ZGlmZiAtLWdpdCBhLy5ienJpZ25vcmUgYi8uYnpyaWdub3JlCmluZGV4IDk1OWE3ZGYuLjg5NzA4NGQgMTAwNjQ0Ci0tLSBhLy5ienJpZ25vcmUKKysrIGIvLmJ6cmlnbm9yZQpAQCAtMzMsNyArMzMsNiBAQAogTW9kdWxlcy9jb25maWcuYwogTW9kdWxlcy9sZF9zb19haXgKIFBhcnNlci9wZ2VuCi1QYXJzZXIvcGdlbi5zdGFtcAogTGliL3Rlc3QvZGF0YS8qCiBMaWIvbGliMnRvMy9HcmFtbWFyKi5waWNrbGUKIExpYi9saWIydG8zL1BhdHRlcm5HcmFtbWFyKi5waWNrbGUKZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGMxYTgwNTUuLjQ5Mjk5ZWUgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMTUsNiArMTUsNyBAQAogRG9jL3Rvb2xzL3B5Z21lbnRzLwogRG9jL3Rvb2xzL3NwaGlueC8KIExpYi9saWIydG8zLyoucGlja2xlCitMaWIvX3N5c2NvbmZpZ2RhdGEucHkKIExpYi9wbGF0LW1hYy9lcnJvcnMucnNyYy5kZi5yc3JjCiBNYWtlZmlsZQogTWFrZWZpbGUucHJlCkBAIC0yNCw2ICsyNSw3IEBACiBNb2R1bGVzL1NldHVwLmxvY2FsCiBNb2R1bGVzL2NvbmZpZy5jCiBNb2R1bGVzL2xkX3NvX2FpeAorTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYgogTW9kdWxlcy9fdGVzdGVtYmVkCiBQQ2J1aWxkLyouYnNjCiBQQ2J1aWxkLyouZGxsCkBAIC0zNyw3ICszOSw2IEBACiBQQ2J1aWxkL2FtZDY0LwogLnB1cmlmeQogUGFyc2VyL3BnZW4KLVBhcnNlci9wZ2VuLnN0YW1wCiBfX3B5Y2FjaGVfXwogYXV0b200dGUuY2FjaGUKIGJ1aWxkLwpkaWZmIC0tZ2l0IGEvLmhnZW9sIGIvLmhnZW9sCmluZGV4IGVkMTMxNzEuLjY0YmI3Y2YgMTAwNjQ0Ci0tLSBhLy5oZ2VvbAorKysgYi8uaGdlb2wKQEAgLTI4LDggKzI4LDExIEBACiAKIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI2LnR4dCA9IEJJTgogTGliL3Rlc3QvY2prZW5jb2RpbmdzLyogPSBCSU4KLUxpYi90ZXN0L3NuZGhkcmRhdGEvc25kaGRyLiogPSBCSU4KIExpYi90ZXN0L2RlY2ltYWx0ZXN0ZGF0YS8qLmRlY1Rlc3QgPSBCSU4KK0xpYi90ZXN0L3NuZGhkcmRhdGEvc25kaGRyLiogPSBCSU4KK0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjYudHh0ID0gQklOCisKK0xpYi92ZW52L3NjcmlwdHMvbnQvKiA9IEJJTgogCiAjIEFsbCBvdGhlciBmaWxlcyAod2hpY2ggcHJlc3VtYWJseSBhcmUgaHVtYW4tZWRpdGFibGUpIGFyZSAibmF0aXZlIi4KICMgVGhpcyBtdXN0IGJlIHRoZSBsYXN0IHJ1bGUhCmRpZmYgLS1naXQgYS8uaGdpZ25vcmUgYi8uaGdpZ25vcmUKaW5kZXggMjRkZjNiOS4uOTY3Njk5YyAxMDA2NDQKLS0tIGEvLmhnaWdub3JlCisrKyBiLy5oZ2lnbm9yZQpAQCAtNSw3ICs1LDggQEAKIE1ha2VmaWxlLnByZSQKIFRBR1MkCiBhdXRvbTR0ZS5jYWNoZSQKLWJ1aWxkLworXmJ1aWxkLworXkRvYy9idWlsZC8KIGJ1aWxkbm8kCiBjb25maWcuY2FjaGUKIGNvbmZpZy5sb2cKQEAgLTMxLDcgKzMyLDYgQEAKIE1vZHVsZXMvY29uZmlnLmMKIE1vZHVsZXMvbGRfc29fYWl4JAogUGFyc2VyL3BnZW4kCi1QYXJzZXIvcGdlbi5zdGFtcCQKIF5jb3JlCiBecHl0aG9uLWdkYi5weQogXnB5dGhvbi5leGUtZ2RiLnB5CkBAIC01NCw2ICs1NCwxOCBAQAogUEMvcHl0aG9ubnRfcmMqLmgKIFBDLyoub2JqCiBQQy8qLmV4ZQorUEMvKi8qLmV4ZQorUEMvKi8qLmV4cAorUEMvKi8qLmxpYgorUEMvKi8qLmJzYworUEMvKi8qLmRsbAorUEMvKi8qLnBkYgorUEMvKi8qLnVzZXIKK1BDLyovKi5uY2IKK1BDLyovKi5zdW8KK1BDLyovV2luMzItdGVtcC0qCitQQy8qL3g2NC10ZW1wLSoKK1BDLyovYW1kNjQKIFBDYnVpbGQvKi5leGUKIFBDYnVpbGQvKi5kbGwKIFBDYnVpbGQvKi5wZGIKQEAgLTYyLDggKzc0LDE1IEBACiBQQ2J1aWxkLyoubwogUENidWlsZC8qLm5jYgogUENidWlsZC8qLmJzYworUENidWlsZC8qLnVzZXIKK1BDYnVpbGQvKi5zdW8KK1BDYnVpbGQvKi4qc2RmCiBQQ2J1aWxkL1dpbjMyLXRlbXAtKgorUENidWlsZC94NjQtdGVtcC0qCitQQ2J1aWxkL2FtZDY0CitCdWlsZExvZy5odG0KIF9fcHljYWNoZV9fCitNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliCiBNb2R1bGVzL190ZXN0ZW1iZWQKIC5jb3ZlcmFnZQogY292ZXJhZ2UvCmRpZmYgLS1naXQgYS8uaGd0YWdzIGIvLmhndGFncwppbmRleCBmMDYxYjkwLi5lZmE0ZDJlIDEwMDY0NAotLS0gYS8uaGd0YWdzCisrKyBiLy5oZ3RhZ3MKQEAgLTk5LDMgKzk5LDEzIEBACiA3MDg1NDAzZGFmNDM5YWRiM2Y5ZTcwZWYxM2Y2YmVkYjFjNDQ3Mzc2IHYzLjIuM3JjMQogNDI4ZjA1Y2I3Mjc3ZTFkNDJiYjlkZDhkMWFmNmI2MjcwZWJjNjExMiB2My4yLjNyYzIKIDNkMDY4NmQ5MGY1NWE3OGY5NmQ5NDAzZGEyYzUyZGMyNDExNDE5ZDAgdjMuMi4zCitmMWE5YTY1MDU3MzE3MTRmMGUxNTc0NTNmZjg1MGUzYjcxNjE1YzQ1IHYzLjMuMGExCisyZjY5ZGI1MmQ2ZGUzMDZjZGFlZjBhMGNjMDBjYzgyM2ZiMzUwYjAxIHYzLjMuMGEyCiswYjUzYjcwYTQwYTAwMDEzNTA1ZWIzNWUzNjYwMDU3YjYyYmU3N2JlIHYzLjMuMGEzCis3YzUxMzg4YTNhYTdjZTc2YTg1NDFiYmJkZmMwNWQyZDI1OWExNjJjIHYzLjMuMGE0CitlMTVjNTU0Y2Q0M2ViMjNiYzBhNTI4YTRlODc0MWRhOWJiZWM5NjA3IHYzLjMuMGIxCis0OTcyYThmMWIyYWEzZDdjZGQ2NGRjOTZhYTdmYTExMmZlMWVhMzQzIHYzLjMuMGIyCis4YmI1YzdiYzQ2YmE0MzgwNDQ4MGYzZTMyOGUxZmE5NTY2NzJjODg1IHYzLjMuMHJjMQorODhhMDc5MmU4YmEzZTQ5MTZiMjRjN2U3YTUyMmMyNzdkMzI2ZDY2ZSB2My4zLjByYzIKK2MxOTFkMjFjZWZhZmIzODMyYzQ1NTcwZTg0ODU0ZTMwOWFhNjJlYWEgdjMuMy4wcmMzCitiZDhhZmI5MGViZjI4YmE0ZWRjOTAxZDRhMjM1Zjc1ZTdiYmM3OWZkIHYzLjMuMApkaWZmIC0tZ2l0IGEvLmhndG91Y2ggYi8uaGd0b3VjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGVmNzBlCi0tLSAvZGV2L251bGwKKysrIGIvLmhndG91Y2gKQEAgLTAsMCArMSwxMiBAQAorIyAtKi0gTWFrZWZpbGUgLSotCisjIERlZmluZSBkZXBlbmRlbmNpZXMgb2YgZ2VuZXJhdGVkIGZpbGVzIHRoYXQgYXJlIGNoZWNrZWQgaW50byBoZy4KKyMgVGhlIHN5bnRheCBvZiB0aGlzIGZpbGUgdXNlcyBtYWtlIHJ1bGUgZGVwZW5kZW5jaWVzLCB3aXRob3V0IGFjdGlvbnMKKworUHl0aG9uL2ltcG9ydGxpYi5oOiBMaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jCisKK0luY2x1ZGUvYXN0Lmg6IFBhcnNlci9QeXRob24uYXNkbCBQYXJzZXIvYXNkbC5weSBQYXJzZXIvYXNkbF9jLnB5CitQeXRob24vUHl0aG9uLWFzdC5jOiBJbmNsdWRlL2FzdC5oCisKK1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oOiBQeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkgTGliL29wY29kZS5weQorCitPYmplY3RzL3R5cGVzbG90cy5pbmM6IEluY2x1ZGUvdHlwZXNsb3RzLmggT2JqZWN0cy90eXBlc2xvdHMucHkKZGlmZiAtLWdpdCBhL0RvYy9NYWtlZmlsZSBiL0RvYy9NYWtlZmlsZQppbmRleCAxMzQxMWYyLi5hNzc0YWFkIDEwMDY0NAotLS0gYS9Eb2MvTWFrZWZpbGUKKysrIGIvRG9jL01ha2VmaWxlCkBAIC01Myw3ICs1Myw3IEBACiAJZmkKIAlAaWYgWyAhIC1kIHRvb2xzL3B5Z21lbnRzIF07IHRoZW4gXAogCSAgZWNobyAiQ2hlY2tpbmcgb3V0IFB5Z21lbnRzLi4uIjsgXAotCSAgc3ZuIGNoZWNrb3V0ICQoU1ZOUk9PVCkvZXh0ZXJuYWwvUHlnbWVudHMtMS4zLjEvcHlnbWVudHMgdG9vbHMvcHlnbWVudHM7IFwKKwkgIHN2biBjaGVja291dCAkKFNWTlJPT1QpL2V4dGVybmFsL1B5Z21lbnRzLTEuNWRldi0yMDEyMDkzMC9weWdtZW50cyB0b29scy9weWdtZW50czsgXAogCWZpCiAKIHVwZGF0ZTogY2xlYW4gY2hlY2tvdXQKQEAgLTE4Nyw2ICsxODcsMTAgQEAKIAltYWtlIHVwZGF0ZQogCW1ha2UgZGlzdCBTUEhJTlhPUFRTPSctQSBkYWlseT0xIC1BIHZlcnNpb25zd2l0Y2hlcj0xJwogCisjIGZvciBxdWljayByZWJ1aWxkcyAoSFRNTCBvbmx5KQorYXV0b2J1aWxkLWh0bWw6CisJbWFrZSBodG1sIFNQSElOWE9QVFM9Jy1BIGRhaWx5PTEgLUEgdmVyc2lvbnN3aXRjaGVyPTEnCisKICMgZm9yIHN0YWJsZSByZWxlYXNlczogb25seSBidWlsZCBpZiBub3QgaW4gcHJlLXJlbGVhc2Ugc3RhZ2UgKGFscGhhLCBiZXRhLCByYykKIGF1dG9idWlsZC1zdGFibGU6CiAJQGNhc2UgJChESVNUVkVSU0lPTikgaW4gKlthYmNdKikgXApAQCAtMTk0LDMgKzE5OCw0IEBACiAJCWV4aXQgMTs7IFwKIAllc2FjCiAJQG1ha2UgYXV0b2J1aWxkLWRldgorCmRpZmYgLS1naXQgYS9Eb2MvUkVBRE1FLnR4dCBiL0RvYy9SRUFETUUudHh0CmluZGV4IGYyOTY0MjMuLmM2M2ZjNjAgMTAwNjQ0Ci0tLSBhL0RvYy9SRUFETUUudHh0CisrKyBiL0RvYy9SRUFETUUudHh0CkBAIC0xMzUsNyArMTM1LDcgQEAKIGFzIGxvbmcgYXMgeW91IGRvbid0IGNoYW5nZSBvciByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2U6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUNvcHlyaWdodCAoYykgMjAwMC0yMDEyIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorQ29weXJpZ2h0IChjKSAyMDAwLTIwMTMgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uCiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiBDb3B5cmlnaHQgKGMpIDIwMDAgQmVPcGVuLmNvbS4KZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9hcGlhYml2ZXJzaW9uLnJzdCBiL0RvYy9jLWFwaS9hcGlhYml2ZXJzaW9uLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmQ1MmRmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2MtYXBpL2FwaWFiaXZlcnNpb24ucnN0CkBAIC0wLDAgKzEsMzkgQEAKKy4uIGhpZ2hsaWdodGxhbmc6OiBjCisKKy4uIF9hcGlhYml2ZXJzaW9uOgorCisqKioqKioqKioqKioqKioqKioqKioqKgorQVBJIGFuZCBBQkkgVmVyc2lvbmluZworKioqKioqKioqKioqKioqKioqKioqKioKKworYGBQWV9WRVJTSU9OX0hFWGBgIGlzIHRoZSBQeXRob24gdmVyc2lvbiBudW1iZXIgZW5jb2RlZCBpbiBhIHNpbmdsZSBpbnRlZ2VyLgorCitGb3IgZXhhbXBsZSBpZiB0aGUgYGBQWV9WRVJTSU9OX0hFWGBgIGlzIHNldCB0byBgYDB4MDMwNDAxYTJgYCwgdGhlIHVuZGVybHlpbmcKK3ZlcnNpb24gaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGJ5IHRyZWF0aW5nIGl0IGFzIGEgMzIgYml0IG51bWJlciBpbgordGhlIGZvbGxvd2luZyBtYW5uZXI6CisKKyAgICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBCeXRlcyB8IEJpdHMgKGJpZyBlbmRpYW4gb3JkZXIpIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArPT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAgIHwgYGAxYGAgfCAgICAgICBgYDEtOGBgICAgICAgICAgICB8ICBgYFBZX01BSk9SX1ZFUlNJT05gYCAodGhlIGBgM2BgIGluICAgICAgICAgICAgfAorICAgfCAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGBgMy40LjFhMmBgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAyYGAgfCAgICAgICBgYDktMTZgYCAgICAgICAgICB8ICBgYFBZX01JTk9SX1ZFUlNJT05gYCAodGhlIGBgNGBgIGluICAgICAgICAgICAgfAorICAgfCAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGBgMy40LjFhMmBgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAzYGAgfCAgICAgICBgYDE3LTI0YGAgICAgICAgICB8ICBgYFBZX01JQ1JPX1ZFUlNJT05gYCAodGhlIGBgMWBgIGluICAgICAgICAgICAgfAorICAgfCAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGBgMy40LjFhMmBgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGA0YGAgfCAgICAgICBgYDI1LTI4YGAgICAgICAgICB8ICBgYFBZX1JFTEVBU0VfTEVWRUxgYCAoYGAweEFgYCBmb3IgYWxwaGEsICAgICAgfAorICAgfCAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGBgMHhCYGAgZm9yIGJldGEsIGBgMHhDYGAgZm9yIHJlbGVhc2UgICAgICAgICB8CisgICB8ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgY2FuZGlkYXRlIGFuZCBgYDB4RmBgIGZvciBmaW5hbCksIGluIHRoaXMgICAgIHwKKyAgIHwgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBjYXNlIGl0IGlzIGFscGhhLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8ICAgICAgIHwgICAgICAgYGAyOS0zMmBgICAgICAgICAgfCAgYGBQWV9SRUxFQVNFX1NFUklBTGBgICh0aGUgYGAyYGAgaW4gICAgICAgICAgIHwKKyAgIHwgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBgYDMuNC4xYTJgYCwgemVybyBmb3IgZmluYWwgcmVsZWFzZXMpICAgICAgICAgfAorICAgKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKK1RodXMgYGAzLjQuMWEyYGAgaXMgaGV4dmVyc2lvbiBgYDB4MDMwNDAxYTJgYC4KKworQWxsIHRoZSBnaXZlbiBtYWNyb3MgYXJlIGRlZmluZWQgaW4gOnNvdXJjZTpgSW5jbHVkZS9wYXRjaGxldmVsLmhgLgorCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvYXJnLnJzdCBiL0RvYy9jLWFwaS9hcmcucnN0CmluZGV4IGQ0ZGRhN2MuLmIyOGFhNWYgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9hcmcucnN0CisrKyBiL0RvYy9jLWFwaS9hcmcucnN0CkBAIC0xNDYsNyArMTQ2LDcgQEAKICAgIExpa2UgYGB1I2BgLCBidXQgdGhlIFB5dGhvbiBvYmplY3QgbWF5IGFsc28gYmUgYGBOb25lYGAsIGluIHdoaWNoIGNhc2UgdGhlCiAgICA6Yzp0eXBlOmBQeV9VTklDT0RFYCBwb2ludGVyIGlzIHNldCB0byAqTlVMTCouCiAKLWBgVWBgICg6Y2xhc3M6YHN0cmApIFtQeVVuaWNvZGVPYmplY3QgXCpdCitgYFVgYCAoOmNsYXNzOmBzdHJgKSBbUHlPYmplY3QgXCpdCiAgICBSZXF1aXJlcyB0aGF0IHRoZSBQeXRob24gb2JqZWN0IGlzIGEgVW5pY29kZSBvYmplY3QsIHdpdGhvdXQgYXR0ZW1wdGluZwogICAgYW55IGNvbnZlcnNpb24uICBSYWlzZXMgOmV4YzpgVHlwZUVycm9yYCBpZiB0aGUgb2JqZWN0IGlzIG5vdCBhIFVuaWNvZGUKICAgIG9iamVjdC4gIFRoZSBDIHZhcmlhYmxlIG1heSBhbHNvIGJlIGRlY2xhcmVkIGFzIDpjOnR5cGU6YFB5T2JqZWN0XCpgLgpAQCAtMjYwLDkgKzI2MCwxMiBAQAogYGBuYGAgKDpjbGFzczpgaW50YCkgW1B5X3NzaXplX3RdCiAgICBDb252ZXJ0IGEgUHl0aG9uIGludGVnZXIgdG8gYSBDIDpjOnR5cGU6YFB5X3NzaXplX3RgLgogCi1gYGNgYCAoOmNsYXNzOmBieXRlc2Agb2YgbGVuZ3RoIDEpIFtjaGFyXQotICAgQ29udmVydCBhIFB5dGhvbiBieXRlLCByZXByZXNlbnRlZCBhcyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBvZiBsZW5ndGggMSwKLSAgIHRvIGEgQyA6Yzp0eXBlOmBjaGFyYC4KK2BgY2BgICg6Y2xhc3M6YGJ5dGVzYCBvciA6Y2xhc3M6YGJ5dGVhcnJheWAgb2YgbGVuZ3RoIDEpIFtjaGFyXQorICAgQ29udmVydCBhIFB5dGhvbiBieXRlLCByZXByZXNlbnRlZCBhcyBhIDpjbGFzczpgYnl0ZXNgIG9yCisgICA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0IG9mIGxlbmd0aCAxLCB0byBhIEMgOmM6dHlwZTpgY2hhcmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBbGxvdyA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0cy4KIAogYGBDYGAgKDpjbGFzczpgc3RyYCBvZiBsZW5ndGggMSkgW2ludF0KICAgIENvbnZlcnQgYSBQeXRob24gY2hhcmFjdGVyLCByZXByZXNlbnRlZCBhcyBhIDpjbGFzczpgc3RyYCBvYmplY3Qgb2YKQEAgLTMxNSw2ICszMTgsMTUgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICAgICBgYFB5X0NMRUFOVVBfU1VQUE9SVEVEYGAgd2FzIGFkZGVkLgogCitgYHBgYCAoOmNsYXNzOmBib29sYCkgW2ludF0KKyAgIFRlc3RzIHRoZSB2YWx1ZSBwYXNzZWQgaW4gZm9yIHRydXRoIChhIGJvb2xlYW4gKipwKipccmVkaWNhdGUpIGFuZCBjb252ZXJ0cworICAgdGhlIHJlc3VsdCB0byBpdHMgZXF1aXZhbGVudCBDIHRydWUvZmFsc2UgaW50ZWdlciB2YWx1ZS4KKyAgIFNldHMgdGhlIGludCB0byAxIGlmIHRoZSBleHByZXNzaW9uIHdhcyB0cnVlIGFuZCAwIGlmIGl0IHdhcyBmYWxzZS4KKyAgIFRoaXMgYWNjZXB0cyBhbnkgdmFsaWQgUHl0aG9uIHZhbHVlLiAgU2VlIDpyZWY6YHRydXRoYCBmb3IgbW9yZQorICAgaW5mb3JtYXRpb24gYWJvdXQgaG93IFB5dGhvbiB0ZXN0cyB2YWx1ZXMgZm9yIHRydXRoLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogYGAoaXRlbXMpYGAgKDpjbGFzczpgdHVwbGVgKSBbKm1hdGNoaW5nLWl0ZW1zKl0KICAgIFRoZSBvYmplY3QgbXVzdCBiZSBhIFB5dGhvbiBzZXF1ZW5jZSB3aG9zZSBsZW5ndGggaXMgdGhlIG51bWJlciBvZiBmb3JtYXQgdW5pdHMKICAgIGluICppdGVtcyouICBUaGUgQyBhcmd1bWVudHMgbXVzdCBjb3JyZXNwb25kIHRvIHRoZSBpbmRpdmlkdWFsIGZvcm1hdCB1bml0cyBpbgpAQCAtMzM2LDYgKzM0OCwxNSBAQAogICAgOmM6ZnVuYzpgUHlBcmdfUGFyc2VUdXBsZWAgZG9lcyBub3QgdG91Y2ggdGhlIGNvbnRlbnRzIG9mIHRoZSBjb3JyZXNwb25kaW5nIEMKICAgIHZhcmlhYmxlKHMpLgogCitgYCRgYAorICAgOmM6ZnVuYzpgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzYCBvbmx5OgorICAgSW5kaWNhdGVzIHRoYXQgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgaW4gdGhlIFB5dGhvbiBhcmd1bWVudCBsaXN0IGFyZQorICAga2V5d29yZC1vbmx5LiAgQ3VycmVudGx5LCBhbGwga2V5d29yZC1vbmx5IGFyZ3VtZW50cyBtdXN0IGFsc28gYmUgb3B0aW9uYWwKKyAgIGFyZ3VtZW50cywgc28gYGB8YGAgbXVzdCBhbHdheXMgYmUgc3BlY2lmaWVkIGJlZm9yZSBgYCRgYCBpbiB0aGUgZm9ybWF0CisgICBzdHJpbmcuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiBgYDpgYAogICAgVGhlIGxpc3Qgb2YgZm9ybWF0IHVuaXRzIGVuZHMgaGVyZTsgdGhlIHN0cmluZyBhZnRlciB0aGUgY29sb24gaXMgdXNlZCBhcyB0aGUKICAgIGZ1bmN0aW9uIG5hbWUgaW4gZXJyb3IgbWVzc2FnZXMgKHRoZSAiYXNzb2NpYXRlZCB2YWx1ZSIgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0CmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvYnVmZmVyLnJzdCBiL0RvYy9jLWFwaS9idWZmZXIucnN0CmluZGV4IDc0MGI1NzUuLjBiNTIxZGYgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9idWZmZXIucnN0CisrKyBiL0RvYy9jLWFwaS9idWZmZXIucnN0CkBAIC0xMiw2ICsxMiw3IEBACiAKIC4uIHNlY3Rpb25hdXRob3I6OiBHcmVnIFN0ZWluIDxnc3RlaW5AbHlyYS5vcmc+CiAuLiBzZWN0aW9uYXV0aG9yOjogQmVuamFtaW4gUGV0ZXJzb24KKy4uIHNlY3Rpb25hdXRob3I6OiBTdGVmYW4gS3JhaAogCiAKIENlcnRhaW4gb2JqZWN0cyBhdmFpbGFibGUgaW4gUHl0aG9uIHdyYXAgYWNjZXNzIHRvIGFuIHVuZGVybHlpbmcgbWVtb3J5CkBAIC0yMiw3ICsyMyw3IEBACiAKIFdoaWxlIGVhY2ggb2YgdGhlc2UgdHlwZXMgaGF2ZSB0aGVpciBvd24gc2VtYW50aWNzLCB0aGV5IHNoYXJlIHRoZSBjb21tb24KIGNoYXJhY3RlcmlzdGljIG9mIGJlaW5nIGJhY2tlZCBieSBhIHBvc3NpYmx5IGxhcmdlIG1lbW9yeSBidWZmZXIuICBJdCBpcwotdGhlbiBkZXNpcmVhYmxlLCBpbiBzb21lIHNpdHVhdGlvbnMsIHRvIGFjY2VzcyB0aGF0IGJ1ZmZlciBkaXJlY3RseSBhbmQKK3RoZW4gZGVzaXJhYmxlLCBpbiBzb21lIHNpdHVhdGlvbnMsIHRvIGFjY2VzcyB0aGF0IGJ1ZmZlciBkaXJlY3RseSBhbmQKIHdpdGhvdXQgaW50ZXJtZWRpYXRlIGNvcHlpbmcuCiAKIFB5dGhvbiBwcm92aWRlcyBzdWNoIGEgZmFjaWxpdHkgYXQgdGhlIEMgbGV2ZWwgaW4gdGhlIGZvcm0gb2YgdGhlIDpyZWY6YGJ1ZmZlcgpAQCAtNjIsOCArNjMsMTAgQEAKIHJlc291cmNlIGxlYWtzLgogCiAKLVRoZSBidWZmZXIgc3RydWN0dXJlCi09PT09PT09PT09PT09PT09PT09PQorLi4gX2J1ZmZlci1zdHJ1Y3R1cmU6CisKK0J1ZmZlciBzdHJ1Y3R1cmUKKz09PT09PT09PT09PT09PT0KIAogQnVmZmVyIHN0cnVjdHVyZXMgKG9yIHNpbXBseSAiYnVmZmVycyIpIGFyZSB1c2VmdWwgYXMgYSB3YXkgdG8gZXhwb3NlIHRoZQogYmluYXJ5IGRhdGEgZnJvbSBhbm90aGVyIG9iamVjdCB0byB0aGUgUHl0aG9uIHByb2dyYW1tZXIuICBUaGV5IGNhbiBhbHNvIGJlCkBAIC04MCw5NiArODMsMzM5IEBACiBhcm91bmQgYSBidWZmZXIgaXMgbmVlZGVkLCBhIDpyZWY6YG1lbW9yeXZpZXcgPG1lbW9yeXZpZXctb2JqZWN0cz5gIG9iamVjdAogY2FuIGJlIGNyZWF0ZWQuCiAKK0ZvciBzaG9ydCBpbnN0cnVjdGlvbnMgaG93IHRvIHdyaXRlIGFuIGV4cG9ydGluZyBvYmplY3QsIHNlZQorOnJlZjpgQnVmZmVyIE9iamVjdCBTdHJ1Y3R1cmVzIDxidWZmZXItc3RydWN0cz5gLiBGb3Igb2J0YWluaW5nCithIGJ1ZmZlciwgc2VlIDpjOmZ1bmM6YFB5T2JqZWN0X0dldEJ1ZmZlcmAuCiAKIC4uIGM6dHlwZTo6IFB5X2J1ZmZlcgogCi0gICAuLiBjOm1lbWJlcjo6IHZvaWQgKmJ1ZgorICAgLi4gYzptZW1iZXI6OiB2b2lkIFwqb2JqCiAKLSAgICAgIEEgcG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIG1lbW9yeSBmb3IgdGhlIG9iamVjdC4KKyAgICAgIEEgbmV3IHJlZmVyZW5jZSB0byB0aGUgZXhwb3J0aW5nIG9iamVjdC4gVGhlIHJlZmVyZW5jZSBpcyBvd25lZCBieQorICAgICAgdGhlIGNvbnN1bWVyIGFuZCBhdXRvbWF0aWNhbGx5IGRlY3JlbWVudGVkIGFuZCBzZXQgdG8gKk5VTEwqIGJ5CisgICAgICA6YzpmdW5jOmBQeUJ1ZmZlcl9SZWxlYXNlYC4gVGhlIGZpZWxkIGlzIHRoZSBlcXVpdmFsZW50IG9mIHRoZSByZXR1cm4KKyAgICAgIHZhbHVlIG9mIGFueSBzdGFuZGFyZCBDLUFQSSBmdW5jdGlvbi4KKworICAgICAgQXMgYSBzcGVjaWFsIGNhc2UsIGZvciAqdGVtcG9yYXJ5KiBidWZmZXJzIHRoYXQgYXJlIHdyYXBwZWQgYnkKKyAgICAgIDpjOmZ1bmM6YFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyYCBvciA6YzpmdW5jOmBQeUJ1ZmZlcl9GaWxsSW5mb2AKKyAgICAgIHRoaXMgZmllbGQgaXMgKk5VTEwqLiBJbiBnZW5lcmFsLCBleHBvcnRpbmcgb2JqZWN0cyBNVVNUIE5PVAorICAgICAgdXNlIHRoaXMgc2NoZW1lLgorCisgICAuLiBjOm1lbWJlcjo6IHZvaWQgXCpidWYKKworICAgICAgQSBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgbG9naWNhbCBzdHJ1Y3R1cmUgZGVzY3JpYmVkIGJ5IHRoZSBidWZmZXIKKyAgICAgIGZpZWxkcy4gVGhpcyBjYW4gYmUgYW55IGxvY2F0aW9uIHdpdGhpbiB0aGUgdW5kZXJseWluZyBwaHlzaWNhbCBtZW1vcnkKKyAgICAgIGJsb2NrIG9mIHRoZSBleHBvcnRlci4gRm9yIGV4YW1wbGUsIHdpdGggbmVnYXRpdmUgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnN0cmlkZXNgCisgICAgICB0aGUgdmFsdWUgbWF5IHBvaW50IHRvIHRoZSBlbmQgb2YgdGhlIG1lbW9yeSBibG9jay4KKworICAgICAgRm9yIGNvbnRpZ3VvdXMgYXJyYXlzLCB0aGUgdmFsdWUgcG9pbnRzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG1lbW9yeQorICAgICAgYmxvY2suCiAKICAgIC4uIGM6bWVtYmVyOjogUHlfc3NpemVfdCBsZW4KLSAgICAgIDpub2luZGV4OgogCi0gICAgICBUaGUgdG90YWwgbGVuZ3RoIG9mIHRoZSBtZW1vcnkgaW4gYnl0ZXMuCisgICAgICBgYHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemVgYC4gRm9yIGNvbnRpZ3VvdXMgYXJyYXlzLCB0aGlzIGlzIHRoZSBsZW5ndGgKKyAgICAgIG9mIHRoZSB1bmRlcmx5aW5nIG1lbW9yeSBibG9jay4gRm9yIG5vbi1jb250aWd1b3VzIGFycmF5cywgaXQgaXMgdGhlIGxlbmd0aAorICAgICAgdGhhdCB0aGUgbG9naWNhbCBzdHJ1Y3R1cmUgd291bGQgaGF2ZSBpZiBpdCB3ZXJlIGNvcGllZCB0byBhIGNvbnRpZ3VvdXMKKyAgICAgIHJlcHJlc2VudGF0aW9uLgorCisgICAgICBBY2Nlc3NpbmcgYGAoKGNoYXIgKilidWYpWzBdIHVwIHRvICgoY2hhciAqKWJ1ZilbbGVuLTFdYGAgaXMgb25seSB2YWxpZAorICAgICAgaWYgdGhlIGJ1ZmZlciBoYXMgYmVlbiBvYnRhaW5lZCBieSBhIHJlcXVlc3QgdGhhdCBndWFyYW50ZWVzIGNvbnRpZ3VpdHkuIEluCisgICAgICBtb3N0IGNhc2VzIHN1Y2ggYSByZXF1ZXN0IHdpbGwgYmUgOmM6bWFjcm86YFB5QlVGX1NJTVBMRWAgb3IgOmM6bWFjcm86YFB5QlVGX1dSSVRBQkxFYC4KIAogICAgLi4gYzptZW1iZXI6OiBpbnQgcmVhZG9ubHkKIAotICAgICAgQW4gaW5kaWNhdG9yIG9mIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyByZWFkIG9ubHkuCi0KLSAgIC4uIGM6bWVtYmVyOjogY29uc3QgY2hhciAqZm9ybWF0Ci0gICAgICA6bm9pbmRleDoKLQotICAgICAgQSAqTlVMTCogdGVybWluYXRlZCBzdHJpbmcgaW4gOm1vZDpgc3RydWN0YCBtb2R1bGUgc3R5bGUgc3ludGF4IGdpdmluZwotICAgICAgdGhlIGNvbnRlbnRzIG9mIHRoZSBlbGVtZW50cyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgYnVmZmVyLiAgSWYgdGhpcyBpcwotICAgICAgKk5VTEwqLCBgYCJCImBgICh1bnNpZ25lZCBieXRlcykgaXMgYXNzdW1lZC4KLQotICAgLi4gYzptZW1iZXI6OiBpbnQgbmRpbQotCi0gICAgICBUaGUgbnVtYmVyIG9mIGRpbWVuc2lvbnMgdGhlIG1lbW9yeSByZXByZXNlbnRzIGFzIGEgbXVsdGktZGltZW5zaW9uYWwKLSAgICAgIGFycmF5LiAgSWYgaXQgaXMgMCwgOmM6ZGF0YTpgc3RyaWRlc2AgYW5kIDpjOmRhdGE6YHN1Ym9mZnNldHNgIG11c3QgYmUKLSAgICAgICpOVUxMKi4KLQotICAgLi4gYzptZW1iZXI6OiBQeV9zc2l6ZV90ICpzaGFwZQotCi0gICAgICBBbiBhcnJheSBvZiA6Yzp0eXBlOmBQeV9zc2l6ZV90YFxzIHRoZSBsZW5ndGggb2YgOmM6ZGF0YTpgbmRpbWAgZ2l2aW5nIHRoZQotICAgICAgc2hhcGUgb2YgdGhlIG1lbW9yeSBhcyBhIG11bHRpLWRpbWVuc2lvbmFsIGFycmF5LiAgTm90ZSB0aGF0Ci0gICAgICBgYCgoKnNoYXBlKVswXSAqIC4uLiAqICgqc2hhcGUpW25kaW1zLTFdKSppdGVtc2l6ZWBgIHNob3VsZCBiZSBlcXVhbCB0bwotICAgICAgOmM6ZGF0YTpgbGVuYC4KLQotICAgLi4gYzptZW1iZXI6OiBQeV9zc2l6ZV90ICpzdHJpZGVzCi0KLSAgICAgIEFuIGFycmF5IG9mIDpjOnR5cGU6YFB5X3NzaXplX3RgXHMgdGhlIGxlbmd0aCBvZiA6YzpkYXRhOmBuZGltYCBnaXZpbmcgdGhlCi0gICAgICBudW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCB0byBnZXQgdG8gYSBuZXcgZWxlbWVudCBpbiBlYWNoIGRpbWVuc2lvbi4KLQotICAgLi4gYzptZW1iZXI6OiBQeV9zc2l6ZV90ICpzdWJvZmZzZXRzCi0KLSAgICAgIEFuIGFycmF5IG9mIDpjOnR5cGU6YFB5X3NzaXplX3RgXHMgdGhlIGxlbmd0aCBvZiA6YzpkYXRhOmBuZGltYC4gIElmIHRoZXNlCi0gICAgICBzdWJvZmZzZXQgbnVtYmVycyBhcmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAsIHRoZW4gdGhlIHZhbHVlIHN0b3JlZAotICAgICAgYWxvbmcgdGhlIGluZGljYXRlZCBkaW1lbnNpb24gaXMgYSBwb2ludGVyIGFuZCB0aGUgc3Vib2Zmc2V0IHZhbHVlCi0gICAgICBkaWN0YXRlcyBob3cgbWFueSBieXRlcyB0byBhZGQgdG8gdGhlIHBvaW50ZXIgYWZ0ZXIgZGUtcmVmZXJlbmNpbmcuIEEKLSAgICAgIHN1Ym9mZnNldCB2YWx1ZSB0aGF0IGl0IG5lZ2F0aXZlIGluZGljYXRlcyB0aGF0IG5vIGRlLXJlZmVyZW5jaW5nIHNob3VsZAotICAgICAgb2NjdXIgKHN0cmlkaW5nIGluIGEgY29udGlndW91cyBtZW1vcnkgYmxvY2spLgotCi0gICAgICBIZXJlIGlzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZWxlbWVudCBpbiBhbiBOLUQgYXJyYXkKLSAgICAgIHBvaW50ZWQgdG8gYnkgYW4gTi1kaW1lbnNpb25hbCBpbmRleCB3aGVuIHRoZXJlIGFyZSBib3RoIG5vbi1OVUxMIHN0cmlkZXMKLSAgICAgIGFuZCBzdWJvZmZzZXRzOjoKLQotICAgICAgICAgIHZvaWQgKmdldF9pdGVtX3BvaW50ZXIoaW50IG5kaW0sIHZvaWQgKmJ1ZiwgUHlfc3NpemVfdCAqc3RyaWRlcywKLSAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3Vib2Zmc2V0cywgUHlfc3NpemVfdCAqaW5kaWNlcykgewotICAgICAgICAgICAgICBjaGFyICpwb2ludGVyID0gKGNoYXIqKWJ1ZjsKLSAgICAgICAgICAgICAgaW50IGk7Ci0gICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZGltOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgIHBvaW50ZXIgKz0gc3RyaWRlc1tpXSAqIGluZGljZXNbaV07Ci0gICAgICAgICAgICAgICAgICBpZiAoc3Vib2Zmc2V0c1tpXSA+PTAgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgcG9pbnRlciA9ICooKGNoYXIqKilwb2ludGVyKSArIHN1Ym9mZnNldHNbaV07Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgcmV0dXJuICh2b2lkKilwb2ludGVyOwotICAgICAgICAgICB9Ci0KKyAgICAgIEFuIGluZGljYXRvciBvZiB3aGV0aGVyIHRoZSBidWZmZXIgaXMgcmVhZC1vbmx5LiBUaGlzIGZpZWxkIGlzIGNvbnRyb2xsZWQKKyAgICAgIGJ5IHRoZSA6YzptYWNybzpgUHlCVUZfV1JJVEFCTEVgIGZsYWcuCiAKICAgIC4uIGM6bWVtYmVyOjogUHlfc3NpemVfdCBpdGVtc2l6ZQogCi0gICAgICBUaGlzIGlzIGEgc3RvcmFnZSBmb3IgdGhlIGl0ZW1zaXplIChpbiBieXRlcykgb2YgZWFjaCBlbGVtZW50IG9mIHRoZQotICAgICAgc2hhcmVkIG1lbW9yeS4gSXQgaXMgdGVjaG5pY2FsbHkgdW4tbmVjZXNzYXJ5IGFzIGl0IGNhbiBiZSBvYnRhaW5lZAotICAgICAgdXNpbmcgOmM6ZnVuYzpgUHlCdWZmZXJfU2l6ZUZyb21Gb3JtYXRgLCBob3dldmVyIGFuIGV4cG9ydGVyIG1heSBrbm93Ci0gICAgICB0aGlzIGluZm9ybWF0aW9uIHdpdGhvdXQgcGFyc2luZyB0aGUgZm9ybWF0IHN0cmluZyBhbmQgaXQgaXMgbmVjZXNzYXJ5Ci0gICAgICB0byBrbm93IHRoZSBpdGVtc2l6ZSBmb3IgcHJvcGVyIGludGVycHJldGF0aW9uIG9mIHN0cmlkaW5nLiBUaGVyZWZvcmUsCi0gICAgICBzdG9yaW5nIGl0IGlzIG1vcmUgY29udmVuaWVudCBhbmQgZmFzdGVyLgorICAgICAgSXRlbSBzaXplIGluIGJ5dGVzIG9mIGEgc2luZ2xlIGVsZW1lbnQuIFNhbWUgYXMgdGhlIHZhbHVlIG9mIDpmdW5jOmBzdHJ1Y3QuY2FsY3NpemVgCisgICAgICBjYWxsZWQgb24gbm9uLU5VTEwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmZvcm1hdGAgdmFsdWVzLgogCi0gICAuLiBjOm1lbWJlcjo6IHZvaWQgKmludGVybmFsCisgICAgICBJbXBvcnRhbnQgZXhjZXB0aW9uOiBJZiBhIGNvbnN1bWVyIHJlcXVlc3RzIGEgYnVmZmVyIHdpdGhvdXQgdGhlCisgICAgICA6YzptYWNybzpgUHlCVUZfRk9STUFUYCBmbGFnLCA6YzptZW1iZXI6YH5QeV9CdWZmZXIuZm9ybWF0YCB3aWxsCisgICAgICBiZSBzZXQgdG8gICpOVUxMKiwgIGJ1dCA6YzptZW1iZXI6YH5QeV9idWZmZXIuaXRlbXNpemVgIHN0aWxsIGhhcworICAgICAgdGhlIHZhbHVlIGZvciB0aGUgb3JpZ2luYWwgZm9ybWF0LgorCisgICAgICBJZiA6YzptZW1iZXI6YH5QeV9CdWZmZXIuc2hhcGVgIGlzIHByZXNlbnQsIHRoZSBlcXVhbGl0eQorICAgICAgYGBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplID09IGxlbmBgIHN0aWxsIGhvbGRzIGFuZCB0aGUgY29uc3VtZXIKKyAgICAgIGNhbiB1c2UgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLml0ZW1zaXplYCB0byBuYXZpZ2F0ZSB0aGUgYnVmZmVyLgorCisgICAgICBJZiA6YzptZW1iZXI6YH5QeV9CdWZmZXIuc2hhcGVgIGlzICpOVUxMKiBhcyBhIHJlc3VsdCBvZiBhIDpjOm1hY3JvOmBQeUJVRl9TSU1QTEVgCisgICAgICBvciBhIDpjOm1hY3JvOmBQeUJVRl9XUklUQUJMRWAgcmVxdWVzdCwgdGhlIGNvbnN1bWVyIG11c3QgZGlzcmVnYXJkCisgICAgICA6YzptZW1iZXI6YH5QeV9idWZmZXIuaXRlbXNpemVgIGFuZCBhc3N1bWUgYGBpdGVtc2l6ZSA9PSAxYGAuCisKKyAgIC4uIGM6bWVtYmVyOjogY29uc3QgY2hhciBcKmZvcm1hdAorCisgICAgICBBICpOVUwqIHRlcm1pbmF0ZWQgc3RyaW5nIGluIDptb2Q6YHN0cnVjdGAgbW9kdWxlIHN0eWxlIHN5bnRheCBkZXNjcmliaW5nCisgICAgICB0aGUgY29udGVudHMgb2YgYSBzaW5nbGUgaXRlbS4gSWYgdGhpcyBpcyAqTlVMTCosIGBgIkIiYGAgKHVuc2lnbmVkIGJ5dGVzKQorICAgICAgaXMgYXNzdW1lZC4KKworICAgICAgVGhpcyBmaWVsZCBpcyBjb250cm9sbGVkIGJ5IHRoZSA6YzptYWNybzpgUHlCVUZfRk9STUFUYCBmbGFnLgorCisgICAuLiBjOm1lbWJlcjo6IGludCBuZGltCisKKyAgICAgIFRoZSBudW1iZXIgb2YgZGltZW5zaW9ucyB0aGUgbWVtb3J5IHJlcHJlc2VudHMgYXMgYW4gbi1kaW1lbnNpb25hbCBhcnJheS4KKyAgICAgIElmIGl0IGlzIDAsIDpjOm1lbWJlcjpgflB5X0J1ZmZlci5idWZgIHBvaW50cyB0byBhIHNpbmdsZSBpdGVtIHJlcHJlc2VudGluZworICAgICAgYSBzY2FsYXIuIEluIHRoaXMgY2FzZSwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnNoYXBlYCwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnN0cmlkZXNgCisgICAgICBhbmQgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnN1Ym9mZnNldHNgIE1VU1QgYmUgKk5VTEwqLgorCisgICAgICBUaGUgbWFjcm8gOmM6bWFjcm86YFB5QlVGX01BWF9ORElNYCBsaW1pdHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGRpbWVuc2lvbnMKKyAgICAgIHRvIDY0LiBFeHBvcnRlcnMgTVVTVCByZXNwZWN0IHRoaXMgbGltaXQsIGNvbnN1bWVycyBvZiBtdWx0aS1kaW1lbnNpb25hbAorICAgICAgYnVmZmVycyBTSE9VTEQgYmUgYWJsZSB0byBoYW5kbGUgdXAgdG8gOmM6bWFjcm86YFB5QlVGX01BWF9ORElNYCBkaW1lbnNpb25zLgorCisgICAuLiBjOm1lbWJlcjo6IFB5X3NzaXplX3QgXCpzaGFwZQorCisgICAgICBBbiBhcnJheSBvZiA6Yzp0eXBlOmBQeV9zc2l6ZV90YCBvZiBsZW5ndGggOmM6bWVtYmVyOmB+UHlfYnVmZmVyLm5kaW1gCisgICAgICBpbmRpY2F0aW5nIHRoZSBzaGFwZSBvZiB0aGUgbWVtb3J5IGFzIGFuIG4tZGltZW5zaW9uYWwgYXJyYXkuIE5vdGUgdGhhdAorICAgICAgYGBzaGFwZVswXSAqIC4uLiAqIHNoYXBlW25kaW0tMV0gKiBpdGVtc2l6ZWBgIE1VU1QgYmUgZXF1YWwgdG8KKyAgICAgIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5sZW5gLgorCisgICAgICBTaGFwZSB2YWx1ZXMgYXJlIHJlc3RyaWN0ZWQgdG8gYGBzaGFwZVtuXSA+PSAwYGAuIFRoZSBjYXNlCisgICAgICBgYHNoYXBlW25dID09IDBgYCByZXF1aXJlcyBzcGVjaWFsIGF0dGVudGlvbi4gU2VlIGBjb21wbGV4IGFycmF5c2BfCisgICAgICBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4KKworICAgICAgVGhlIHNoYXBlIGFycmF5IGlzIHJlYWQtb25seSBmb3IgdGhlIGNvbnN1bWVyLgorCisgICAuLiBjOm1lbWJlcjo6IFB5X3NzaXplX3QgXCpzdHJpZGVzCisKKyAgICAgIEFuIGFycmF5IG9mIDpjOnR5cGU6YFB5X3NzaXplX3RgIG9mIGxlbmd0aCA6YzptZW1iZXI6YH5QeV9idWZmZXIubmRpbWAKKyAgICAgIGdpdmluZyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgdG8gZ2V0IHRvIGEgbmV3IGVsZW1lbnQgaW4gZWFjaAorICAgICAgZGltZW5zaW9uLgorCisgICAgICBTdHJpZGUgdmFsdWVzIGNhbiBiZSBhbnkgaW50ZWdlci4gRm9yIHJlZ3VsYXIgYXJyYXlzLCBzdHJpZGVzIGFyZQorICAgICAgdXN1YWxseSBwb3NpdGl2ZSwgYnV0IGEgY29uc3VtZXIgTVVTVCBiZSBhYmxlIHRvIGhhbmRsZSB0aGUgY2FzZQorICAgICAgYGBzdHJpZGVzW25dIDw9IDBgYC4gU2VlIGBjb21wbGV4IGFycmF5c2BfIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgorCisgICAgICBUaGUgc3RyaWRlcyBhcnJheSBpcyByZWFkLW9ubHkgZm9yIHRoZSBjb25zdW1lci4KKworICAgLi4gYzptZW1iZXI6OiBQeV9zc2l6ZV90IFwqc3Vib2Zmc2V0cworCisgICAgICBBbiBhcnJheSBvZiA6Yzp0eXBlOmBQeV9zc2l6ZV90YCBvZiBsZW5ndGggOmM6bWVtYmVyOmB+UHlfYnVmZmVyLm5kaW1gLgorICAgICAgSWYgYGBzdWJvZmZzZXRzW25dID49IDBgYCwgdGhlIHZhbHVlcyBzdG9yZWQgYWxvbmcgdGhlIG50aCBkaW1lbnNpb24gYXJlCisgICAgICBwb2ludGVycyBhbmQgdGhlIHN1Ym9mZnNldCB2YWx1ZSBkaWN0YXRlcyBob3cgbWFueSBieXRlcyB0byBhZGQgdG8gZWFjaAorICAgICAgcG9pbnRlciBhZnRlciBkZS1yZWZlcmVuY2luZy4gQSBzdWJvZmZzZXQgdmFsdWUgdGhhdCBpcyBuZWdhdGl2ZQorICAgICAgaW5kaWNhdGVzIHRoYXQgbm8gZGUtcmVmZXJlbmNpbmcgc2hvdWxkIG9jY3VyIChzdHJpZGluZyBpbiBhIGNvbnRpZ3VvdXMKKyAgICAgIG1lbW9yeSBibG9jaykuCisKKyAgICAgIFRoaXMgdHlwZSBvZiBhcnJheSByZXByZXNlbnRhdGlvbiBpcyB1c2VkIGJ5IHRoZSBQeXRob24gSW1hZ2luZyBMaWJyYXJ5CisgICAgICAoUElMKS4gU2VlIGBjb21wbGV4IGFycmF5c2BfIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIGhvdyB0byBhY2Nlc3MgZWxlbWVudHMKKyAgICAgIG9mIHN1Y2ggYW4gYXJyYXkuCisKKyAgICAgIFRoZSBzdWJvZmZzZXRzIGFycmF5IGlzIHJlYWQtb25seSBmb3IgdGhlIGNvbnN1bWVyLgorCisgICAuLiBjOm1lbWJlcjo6IHZvaWQgXCppbnRlcm5hbAogCiAgICAgICBUaGlzIGlzIGZvciB1c2UgaW50ZXJuYWxseSBieSB0aGUgZXhwb3J0aW5nIG9iamVjdC4gRm9yIGV4YW1wbGUsIHRoaXMKICAgICAgIG1pZ2h0IGJlIHJlLWNhc3QgYXMgYW4gaW50ZWdlciBieSB0aGUgZXhwb3J0ZXIgYW5kIHVzZWQgdG8gc3RvcmUgZmxhZ3MKICAgICAgIGFib3V0IHdoZXRoZXIgb3Igbm90IHRoZSBzaGFwZSwgc3RyaWRlcywgYW5kIHN1Ym9mZnNldHMgYXJyYXlzIG11c3QgYmUKLSAgICAgIGZyZWVkIHdoZW4gdGhlIGJ1ZmZlciBpcyByZWxlYXNlZC4gVGhlIGNvbnN1bWVyIHNob3VsZCBuZXZlciBhbHRlciB0aGlzCisgICAgICBmcmVlZCB3aGVuIHRoZSBidWZmZXIgaXMgcmVsZWFzZWQuIFRoZSBjb25zdW1lciBNVVNUIE5PVCBhbHRlciB0aGlzCiAgICAgICB2YWx1ZS4KIAorLi4gX2J1ZmZlci1yZXF1ZXN0LXR5cGVzOgorCitCdWZmZXIgcmVxdWVzdCB0eXBlcworPT09PT09PT09PT09PT09PT09PT0KKworQnVmZmVycyBhcmUgdXN1YWxseSBvYnRhaW5lZCBieSBzZW5kaW5nIGEgYnVmZmVyIHJlcXVlc3QgdG8gYW4gZXhwb3J0aW5nCitvYmplY3QgdmlhIDpjOmZ1bmM6YFB5T2JqZWN0X0dldEJ1ZmZlcmAuIFNpbmNlIHRoZSBjb21wbGV4aXR5IG9mIHRoZSBsb2dpY2FsCitzdHJ1Y3R1cmUgb2YgdGhlIG1lbW9yeSBjYW4gdmFyeSBkcmFzdGljYWxseSwgdGhlIGNvbnN1bWVyIHVzZXMgdGhlICpmbGFncyoKK2FyZ3VtZW50IHRvIHNwZWNpZnkgdGhlIGV4YWN0IGJ1ZmZlciB0eXBlIGl0IGNhbiBoYW5kbGUuCisKK0FsbCA6YzpkYXRhOmBQeV9idWZmZXJgIGZpZWxkcyBhcmUgdW5hbWJpZ3VvdXNseSBkZWZpbmVkIGJ5IHRoZSByZXF1ZXN0Cit0eXBlLgorCityZXF1ZXN0LWluZGVwZW5kZW50IGZpZWxkcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK1RoZSBmb2xsb3dpbmcgZmllbGRzIGFyZSBub3QgaW5mbHVlbmNlZCBieSAqZmxhZ3MqIGFuZCBtdXN0IGFsd2F5cyBiZSBmaWxsZWQgaW4KK3dpdGggdGhlIGNvcnJlY3QgdmFsdWVzOiA6YzptZW1iZXI6YH5QeV9idWZmZXIub2JqYCwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmJ1ZmAsCis6YzptZW1iZXI6YH5QeV9idWZmZXIubGVuYCwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLml0ZW1zaXplYCwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLm5kaW1gLgorCisKK3JlYWRvbmx5LCBmb3JtYXQKK35+fn5+fn5+fn5+fn5+fn4KKworICAgLi4gYzptYWNybzo6IFB5QlVGX1dSSVRBQkxFCisKKyAgICAgIENvbnRyb2xzIHRoZSA6YzptZW1iZXI6YH5QeV9idWZmZXIucmVhZG9ubHlgIGZpZWxkLiBJZiBzZXQsIHRoZSBleHBvcnRlcgorICAgICAgTVVTVCBwcm92aWRlIGEgd3JpdGFibGUgYnVmZmVyIG9yIGVsc2UgcmVwb3J0IGZhaWx1cmUuIE90aGVyd2lzZSwgdGhlCisgICAgICBleHBvcnRlciBNQVkgcHJvdmlkZSBlaXRoZXIgYSByZWFkLW9ubHkgb3Igd3JpdGFibGUgYnVmZmVyLCBidXQgdGhlIGNob2ljZQorICAgICAgTVVTVCBiZSBjb25zaXN0ZW50IGZvciBhbGwgY29uc3VtZXJzLgorCisgICAuLiBjOm1hY3JvOjogUHlCVUZfRk9STUFUCisKKyAgICAgIENvbnRyb2xzIHRoZSA6YzptZW1iZXI6YH5QeV9idWZmZXIuZm9ybWF0YCBmaWVsZC4gSWYgc2V0LCB0aGlzIGZpZWxkIE1VU1QKKyAgICAgIGJlIGZpbGxlZCBpbiBjb3JyZWN0bHkuIE90aGVyd2lzZSwgdGhpcyBmaWVsZCBNVVNUIGJlICpOVUxMKi4KKworCis6YzptYWNybzpgUHlCVUZfV1JJVEFCTEVgIGNhbiBiZSBcfCdkIHRvIGFueSBvZiB0aGUgZmxhZ3MgaW4gdGhlIG5leHQgc2VjdGlvbi4KK1NpbmNlIDpjOm1hY3JvOmBQeUJVRl9TSU1QTEVgIGlzIGRlZmluZWQgYXMgMCwgOmM6bWFjcm86YFB5QlVGX1dSSVRBQkxFYAorY2FuIGJlIHVzZWQgYXMgYSBzdGFuZC1hbG9uZSBmbGFnIHRvIHJlcXVlc3QgYSBzaW1wbGUgd3JpdGFibGUgYnVmZmVyLgorCis6YzptYWNybzpgUHlCVUZfRk9STUFUYCBjYW4gYmUgXHwnZCB0byBhbnkgb2YgdGhlIGZsYWdzIGV4Y2VwdCA6YzptYWNybzpgUHlCVUZfU0lNUExFYC4KK1RoZSBsYXR0ZXIgYWxyZWFkeSBpbXBsaWVzIGZvcm1hdCBgYEJgYCAodW5zaWduZWQgYnl0ZXMpLgorCisKK3NoYXBlLCBzdHJpZGVzLCBzdWJvZmZzZXRzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitUaGUgZmxhZ3MgdGhhdCBjb250cm9sIHRoZSBsb2dpY2FsIHN0cnVjdHVyZSBvZiB0aGUgbWVtb3J5IGFyZSBsaXN0ZWQKK2luIGRlY3JlYXNpbmcgb3JkZXIgb2YgY29tcGxleGl0eS4gTm90ZSB0aGF0IGVhY2ggZmxhZyBjb250YWlucyBhbGwgYml0cworb2YgdGhlIGZsYWdzIGJlbG93IGl0LgorCisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCit8ICBSZXF1ZXN0ICAgICAgICAgICAgICAgICAgICB8IHNoYXBlIHwgc3RyaWRlcyB8IHN1Ym9mZnNldHMgfAorKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT0rPT09PT09PT09Kz09PT09PT09PT09PSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX0lORElSRUNUIHwgIHllcyAgfCAgIHllcyAgIHwgaWYgbmVlZGVkICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfU1RSSURFUyAgfCAgeWVzICB8ICAgeWVzICAgfCAgICBOVUxMICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9ORCAgICAgICB8ICB5ZXMgIHwgICBOVUxMICB8ICAgIE5VTEwgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX1NJTVBMRSAgIHwgIE5VTEwgfCAgIE5VTEwgIHwgICAgTlVMTCAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKworCisKK2NvbnRpZ3VpdHkgcmVxdWVzdHMKK35+fn5+fn5+fn5+fn5+fn5+fn4KKworQyBvciBGb3J0cmFuIGNvbnRpZ3VpdHkgY2FuIGJlIGV4cGxpY2l0bHkgcmVxdWVzdGVkLCB3aXRoIGFuZCB3aXRob3V0IHN0cmlkZQoraW5mb3JtYXRpb24uIFdpdGhvdXQgc3RyaWRlIGluZm9ybWF0aW9uLCB0aGUgYnVmZmVyIG11c3QgYmUgQy1jb250aWd1b3VzLgorCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKworfCAgUmVxdWVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzaGFwZSB8IHN0cmlkZXMgfCBzdWJvZmZzZXRzIHwgY29udGlnIHwKKys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09Kz09PT09PT09PSs9PT09PT09PT09PT0rPT09PT09PT0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9DX0NPTlRJR1VPVVMgICB8ICB5ZXMgIHwgICB5ZXMgICB8ICAgIE5VTEwgICAgfCAgIEMgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX0ZfQ09OVElHVU9VUyAgIHwgIHllcyAgfCAgIHllcyAgIHwgICAgTlVMTCAgICB8ICAgRiAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfQU5ZX0NPTlRJR1VPVVMgfCAgeWVzICB8ICAgeWVzICAgfCAgICBOVUxMICAgIHwgQyBvciBGIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9ORCAgICAgICAgICAgICB8ICB5ZXMgIHwgICBOVUxMICB8ICAgIE5VTEwgICAgfCAgIEMgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSsKKworCitjb21wb3VuZCByZXF1ZXN0cworfn5+fn5+fn5+fn5+fn5+fn4KKworQWxsIHBvc3NpYmxlIHJlcXVlc3RzIGFyZSBmdWxseSBkZWZpbmVkIGJ5IHNvbWUgY29tYmluYXRpb24gb2YgdGhlIGZsYWdzIGluCit0aGUgcHJldmlvdXMgc2VjdGlvbi4gRm9yIGNvbnZlbmllbmNlLCB0aGUgYnVmZmVyIHByb3RvY29sIHByb3ZpZGVzIGZyZXF1ZW50bHkKK3VzZWQgY29tYmluYXRpb25zIGFzIHNpbmdsZSBmbGFncy4KKworSW4gdGhlIGZvbGxvd2luZyB0YWJsZSAqVSogc3RhbmRzIGZvciB1bmRlZmluZWQgY29udGlndWl0eS4gVGhlIGNvbnN1bWVyIHdvdWxkCitoYXZlIHRvIGNhbGwgOmM6ZnVuYzpgUHlCdWZmZXJfSXNDb250aWd1b3VzYCB0byBkZXRlcm1pbmUgY29udGlndWl0eS4KKworCisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKworfCAgUmVxdWVzdCAgICAgICAgICAgICAgICAgICAgICB8IHNoYXBlIHwgc3RyaWRlcyB8IHN1Ym9mZnNldHMgfCBjb250aWcgfCByZWFkb25seSB8IGZvcm1hdCB8CisrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09Kz09PT09PT09PSs9PT09PT09PT09PT0rPT09PT09PT0rPT09PT09PT09PSs9PT09PT09PSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX0ZVTEwgICAgICAgfCAgeWVzICB8ICAgeWVzICAgfCBpZiBuZWVkZWQgIHwgICBVICAgIHwgICAgIDAgICAgfCAgeWVzICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9GVUxMX1JPICAgIHwgIHllcyAgfCAgIHllcyAgIHwgaWYgbmVlZGVkICB8ICAgVSAgICB8ICAxIG9yIDAgIHwgIHllcyAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfUkVDT1JEUyAgICB8ICB5ZXMgIHwgICB5ZXMgICB8ICAgIE5VTEwgICAgfCAgIFUgICAgfCAgICAgMCAgICB8ICB5ZXMgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX1JFQ09SRFNfUk8gfCAgeWVzICB8ICAgeWVzICAgfCAgICBOVUxMICAgIHwgICBVICAgIHwgIDEgb3IgMCAgfCAgeWVzICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9TVFJJREVEICAgIHwgIHllcyAgfCAgIHllcyAgIHwgICAgTlVMTCAgICB8ICAgVSAgICB8ICAgICAwICAgIHwgIE5VTEwgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfU1RSSURFRF9STyB8ICB5ZXMgIHwgICB5ZXMgICB8ICAgIE5VTEwgICAgfCAgIFUgICAgfCAgMSBvciAwICB8ICBOVUxMICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX0NPTlRJRyAgICAgfCAgeWVzICB8ICAgTlVMTCAgfCAgICBOVUxMICAgIHwgICBDICAgIHwgICAgIDAgICAgfCAgTlVMTCAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9DT05USUdfUk8gIHwgIHllcyAgfCAgIE5VTEwgIHwgICAgTlVMTCAgICB8ICAgQyAgICB8ICAxIG9yIDAgIHwgIE5VTEwgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKworCisKK0NvbXBsZXggYXJyYXlzCis9PT09PT09PT09PT09PQorCitOdW1QeS1zdHlsZTogc2hhcGUgYW5kIHN0cmlkZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitUaGUgbG9naWNhbCBzdHJ1Y3R1cmUgb2YgTnVtUHktc3R5bGUgYXJyYXlzIGlzIGRlZmluZWQgYnkgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLml0ZW1zaXplYCwKKzpjOm1lbWJlcjpgflB5X2J1ZmZlci5uZGltYCwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnNoYXBlYCBhbmQgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnN0cmlkZXNgLgorCitJZiBgYG5kaW0gPT0gMGBgLCB0aGUgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmJ1ZmAgaXMKK2ludGVycHJldGVkIGFzIGEgc2NhbGFyIG9mIHNpemUgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLml0ZW1zaXplYC4gSW4gdGhhdCBjYXNlLAorYm90aCA6YzptZW1iZXI6YH5QeV9idWZmZXIuc2hhcGVgIGFuZCA6YzptZW1iZXI6YH5QeV9idWZmZXIuc3RyaWRlc2AgYXJlICpOVUxMKi4KKworSWYgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnN0cmlkZXNgIGlzICpOVUxMKiwgdGhlIGFycmF5IGlzIGludGVycHJldGVkIGFzCithIHN0YW5kYXJkIG4tZGltZW5zaW9uYWwgQy1hcnJheS4gT3RoZXJ3aXNlLCB0aGUgY29uc3VtZXIgbXVzdCBhY2Nlc3MgYW4KK24tZGltZW5zaW9uYWwgYXJyYXkgYXMgZm9sbG93czoKKworICAgYGBwdHIgPSAoY2hhciAqKWJ1ZiArIGluZGljZXNbMF0gKiBzdHJpZGVzWzBdICsgLi4uICsgaW5kaWNlc1tuLTFdICogc3RyaWRlc1tuLTFdYGAKKyAgIGBgaXRlbSA9ICooKHR5cGVvZihpdGVtKSAqKXB0cik7YGAKKworCitBcyBub3RlZCBhYm92ZSwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmJ1ZmAgY2FuIHBvaW50IHRvIGFueSBsb2NhdGlvbiB3aXRoaW4KK3RoZSBhY3R1YWwgbWVtb3J5IGJsb2NrLiBBbiBleHBvcnRlciBjYW4gY2hlY2sgdGhlIHZhbGlkaXR5IG9mIGEgYnVmZmVyIHdpdGgKK3RoaXMgZnVuY3Rpb246CisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgZGVmIHZlcmlmeV9zdHJ1Y3R1cmUobWVtbGVuLCBpdGVtc2l6ZSwgbmRpbSwgc2hhcGUsIHN0cmlkZXMsIG9mZnNldCk6CisgICAgICAgIiIiVmVyaWZ5IHRoYXQgdGhlIHBhcmFtZXRlcnMgcmVwcmVzZW50IGEgdmFsaWQgYXJyYXkgd2l0aGluCisgICAgICAgICAgdGhlIGJvdW5kcyBvZiB0aGUgYWxsb2NhdGVkIG1lbW9yeToKKyAgICAgICAgICAgICAgY2hhciAqbWVtOiBzdGFydCBvZiB0aGUgcGh5c2ljYWwgbWVtb3J5IGJsb2NrCisgICAgICAgICAgICAgIG1lbWxlbjogbGVuZ3RoIG9mIHRoZSBwaHlzaWNhbCBtZW1vcnkgYmxvY2sKKyAgICAgICAgICAgICAgb2Zmc2V0OiAoY2hhciAqKWJ1ZiAtIG1lbQorICAgICAgICIiIgorICAgICAgIGlmIG9mZnNldCAlIGl0ZW1zaXplOgorICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICBpZiBvZmZzZXQgPCAwIG9yIG9mZnNldCtpdGVtc2l6ZSA+IG1lbWxlbjoKKyAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgaWYgYW55KHYgJSBpdGVtc2l6ZSBmb3IgdiBpbiBzdHJpZGVzKToKKyAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICBpZiBuZGltIDw9IDA6CisgICAgICAgICAgIHJldHVybiBuZGltID09IDAgYW5kIG5vdCBzaGFwZSBhbmQgbm90IHN0cmlkZXMKKyAgICAgICBpZiAwIGluIHNoYXBlOgorICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgaW1pbiA9IHN1bShzdHJpZGVzW2pdKihzaGFwZVtqXS0xKSBmb3IgaiBpbiByYW5nZShuZGltKQorICAgICAgICAgICAgICAgICAgaWYgc3RyaWRlc1tqXSA8PSAwKQorICAgICAgIGltYXggPSBzdW0oc3RyaWRlc1tqXSooc2hhcGVbal0tMSkgZm9yIGogaW4gcmFuZ2UobmRpbSkKKyAgICAgICAgICAgICAgICAgIGlmIHN0cmlkZXNbal0gPiAwKQorCisgICAgICAgcmV0dXJuIDAgPD0gb2Zmc2V0K2ltaW4gYW5kIG9mZnNldCtpbWF4K2l0ZW1zaXplIDw9IG1lbWxlbgorCisKK1BJTC1zdHlsZTogc2hhcGUsIHN0cmlkZXMgYW5kIHN1Ym9mZnNldHMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworSW4gYWRkaXRpb24gdG8gdGhlIHJlZ3VsYXIgaXRlbXMsIFBJTC1zdHlsZSBhcnJheXMgY2FuIGNvbnRhaW4gcG9pbnRlcnMKK3RoYXQgbXVzdCBiZSBmb2xsb3dlZCBpbiBvcmRlciB0byBnZXQgdG8gdGhlIG5leHQgZWxlbWVudCBpbiBhIGRpbWVuc2lvbi4KK0ZvciBleGFtcGxlLCB0aGUgcmVndWxhciB0aHJlZS1kaW1lbnNpb25hbCBDLWFycmF5IGBgY2hhciB2WzJdWzJdWzNdYGAgY2FuCithbHNvIGJlIHZpZXdlZCBhcyBhbiBhcnJheSBvZiAyIHBvaW50ZXJzIHRvIDIgdHdvLWRpbWVuc2lvbmFsIGFycmF5czoKK2BgY2hhciAoKnZbMl0pWzJdWzNdYGAuIEluIHN1Ym9mZnNldHMgcmVwcmVzZW50YXRpb24sIHRob3NlIHR3byBwb2ludGVycworY2FuIGJlIGVtYmVkZGVkIGF0IHRoZSBzdGFydCBvZiA6YzptZW1iZXI6YH5QeV9idWZmZXIuYnVmYCwgcG9pbnRpbmcKK3RvIHR3byBgYGNoYXIgeFsyXVszXWBgIGFycmF5cyB0aGF0IGNhbiBiZSBsb2NhdGVkIGFueXdoZXJlIGluIG1lbW9yeS4KKworCitIZXJlIGlzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZWxlbWVudCBpbiBhbiBOLUQgYXJyYXkKK3BvaW50ZWQgdG8gYnkgYW4gTi1kaW1lbnNpb25hbCBpbmRleCB3aGVuIHRoZXJlIGFyZSBib3RoIG5vbi1OVUxMIHN0cmlkZXMKK2FuZCBzdWJvZmZzZXRzOjoKKworICAgdm9pZCAqZ2V0X2l0ZW1fcG9pbnRlcihpbnQgbmRpbSwgdm9pZCAqYnVmLCBQeV9zc2l6ZV90ICpzdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdWJvZmZzZXRzLCBQeV9zc2l6ZV90ICppbmRpY2VzKSB7CisgICAgICAgY2hhciAqcG9pbnRlciA9IChjaGFyKilidWY7CisgICAgICAgaW50IGk7CisgICAgICAgZm9yIChpID0gMDsgaSA8IG5kaW07IGkrKykgeworICAgICAgICAgICBwb2ludGVyICs9IHN0cmlkZXNbaV0gKiBpbmRpY2VzW2ldOworICAgICAgICAgICBpZiAoc3Vib2Zmc2V0c1tpXSA+PTAgKSB7CisgICAgICAgICAgICAgICBwb2ludGVyID0gKigoY2hhcioqKXBvaW50ZXIpICsgc3Vib2Zmc2V0c1tpXTsKKyAgICAgICAgICAgfQorICAgICAgIH0KKyAgICAgICByZXR1cm4gKHZvaWQqKXBvaW50ZXI7CisgICB9CisKIAogQnVmZmVyLXJlbGF0ZWQgZnVuY3Rpb25zCiA9PT09PT09PT09PT09PT09PT09PT09PT0KIAotCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5T2JqZWN0X0NoZWNrQnVmZmVyKFB5T2JqZWN0ICpvYmopCiAKICAgIFJldHVybiAxIGlmICpvYmoqIHN1cHBvcnRzIHRoZSBidWZmZXIgaW50ZXJmYWNlIG90aGVyd2lzZSAwLiAgV2hlbiAxIGlzCkBAIC0xNzcsMTUyICs0MjMsNzEgQEAKICAgIHN1Y2NlZWQuCiAKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeU9iamVjdF9HZXRCdWZmZXIoUHlPYmplY3QgKm9iaiwgUHlfYnVmZmVyICp2aWV3LCBpbnQgZmxhZ3MpCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5T2JqZWN0X0dldEJ1ZmZlcihQeU9iamVjdCAqZXhwb3J0ZXIsIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKQogCi0gICAgICBFeHBvcnQgYSB2aWV3IG92ZXIgc29tZSBpbnRlcm5hbCBkYXRhIGZyb20gdGhlIHRhcmdldCBvYmplY3QgKm9iaiouCi0gICAgICAqb2JqKiBtdXN0IG5vdCBiZSBOVUxMLCBhbmQgKnZpZXcqIG11c3QgcG9pbnQgdG8gYW4gZXhpc3RpbmcKLSAgICAgIDpjOnR5cGU6YFB5X2J1ZmZlcmAgc3RydWN0dXJlIGFsbG9jYXRlZCBieSB0aGUgY2FsbGVyIChtb3N0IHVzZXMgb2YKLSAgICAgIHRoaXMgZnVuY3Rpb24gd2lsbCBzaW1wbHkgZGVjbGFyZSBhIGxvY2FsIHZhcmlhYmxlIG9mIHR5cGUKLSAgICAgIDpjOnR5cGU6YFB5X2J1ZmZlcmApLiAgVGhlICpmbGFncyogYXJndW1lbnQgaXMgYSBiaXQgZmllbGQgaW5kaWNhdGluZwotICAgICAgd2hhdCBraW5kIG9mIGJ1ZmZlciBpcyByZXF1ZXN0ZWQuICBUaGUgYnVmZmVyIGludGVyZmFjZSBhbGxvd3MKLSAgICAgIGZvciBjb21wbGljYXRlZCBtZW1vcnkgbGF5b3V0IHBvc3NpYmlsaXRpZXM7IGhvd2V2ZXIsIHNvbWUgY2FsbGVycwotICAgICAgd29uJ3Qgd2FudCB0byBoYW5kbGUgYWxsIHRoZSBjb21wbGV4aXR5IGFuZCBpbnN0ZWFkIHJlcXVlc3QgYSBzaW1wbGUKLSAgICAgIHZpZXcgb2YgdGhlIHRhcmdldCBvYmplY3QgKHVzaW5nIDpjOm1hY3JvOmBQeUJVRl9TSU1QTEVgIGZvciBhIHJlYWQtb25seQotICAgICAgdmlldyBhbmQgOmM6bWFjcm86YFB5QlVGX1dSSVRBQkxFYCBmb3IgYSByZWFkLXdyaXRlIHZpZXcpLgorICAgU2VuZCBhIHJlcXVlc3QgdG8gKmV4cG9ydGVyKiB0byBmaWxsIGluICp2aWV3KiBhcyBzcGVjaWZpZWQgYnkgICpmbGFncyouCisgICBJZiB0aGUgZXhwb3J0ZXIgY2Fubm90IHByb3ZpZGUgYSBidWZmZXIgb2YgdGhlIGV4YWN0IHR5cGUsIGl0IE1VU1QgcmFpc2UKKyAgIDpjOmRhdGE6YFB5RXhjX0J1ZmZlckVycm9yYCwgc2V0IDpjOm1lbWJlcjpgdmlldy0+b2JqYCB0byAqTlVMTCogYW5kCisgICByZXR1cm4gLTEuCiAKLSAgICAgIFNvbWUgZXhwb3J0ZXJzIG1heSBub3QgYmUgYWJsZSB0byBzaGFyZSBtZW1vcnkgaW4gZXZlcnkgcG9zc2libGUgd2F5IGFuZAotICAgICAgbWF5IG5lZWQgdG8gcmFpc2UgZXJyb3JzIHRvIHNpZ25hbCB0byBzb21lIGNvbnN1bWVycyB0aGF0IHNvbWV0aGluZyBpcwotICAgICAganVzdCBub3QgcG9zc2libGUuIFRoZXNlIGVycm9ycyBzaG91bGQgYmUgYSA6ZXhjOmBCdWZmZXJFcnJvcmAgdW5sZXNzCi0gICAgICB0aGVyZSBpcyBhbm90aGVyIGVycm9yIHRoYXQgaXMgYWN0dWFsbHkgY2F1c2luZyB0aGUgcHJvYmxlbS4gVGhlCi0gICAgICBleHBvcnRlciBjYW4gdXNlIGZsYWdzIGluZm9ybWF0aW9uIHRvIHNpbXBsaWZ5IGhvdyBtdWNoIG9mIHRoZQotICAgICAgOmM6ZGF0YTpgUHlfYnVmZmVyYCBzdHJ1Y3R1cmUgaXMgZmlsbGVkIGluIHdpdGggbm9uLWRlZmF1bHQgdmFsdWVzIGFuZC9vcgotICAgICAgcmFpc2UgYW4gZXJyb3IgaWYgdGhlIG9iamVjdCBjYW4ndCBzdXBwb3J0IGEgc2ltcGxlciB2aWV3IG9mIGl0cyBtZW1vcnkuCisgICBPbiBzdWNjZXNzLCBmaWxsIGluICp2aWV3Kiwgc2V0IDpjOm1lbWJlcjpgdmlldy0+b2JqYCB0byBhIG5ldyByZWZlcmVuY2UKKyAgIHRvICpleHBvcnRlciogYW5kIHJldHVybiAwLiBJbiB0aGUgY2FzZSBvZiBjaGFpbmVkIGJ1ZmZlciBwcm92aWRlcnMKKyAgIHRoYXQgcmVkaXJlY3QgcmVxdWVzdHMgdG8gYSBzaW5nbGUgb2JqZWN0LCA6YzptZW1iZXI6YHZpZXctPm9iamAgTUFZCisgICByZWZlciB0byB0aGlzIG9iamVjdCBpbnN0ZWFkIG9mICpleHBvcnRlciogKFNlZSA6cmVmOmBCdWZmZXIgT2JqZWN0IFN0cnVjdHVyZXMgPGJ1ZmZlci1zdHJ1Y3RzPmApLgogCi0gICAgICBPbiBzdWNjZXNzLCAwIGlzIHJldHVybmVkIGFuZCB0aGUgKnZpZXcqIHN0cnVjdHVyZSBpcyBmaWxsZWQgd2l0aCB1c2VmdWwKLSAgICAgIHZhbHVlcy4gIE9uIGVycm9yLCAtMSBpcyByZXR1cm5lZCBhbmQgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZDsgdGhlICp2aWV3KgotICAgICAgaXMgbGVmdCBpbiBhbiB1bmRlZmluZWQgc3RhdGUuCi0KLSAgICAgIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBwb3NzaWJsZSB2YWx1ZXMgdG8gdGhlICpmbGFncyogYXJndW1lbnRzLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfU0lNUExFCi0KLSAgICAgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgZmxhZy4gIFRoZSByZXR1cm5lZCBidWZmZXIgZXhwb3NlcyBhIHJlYWQtb25seQotICAgICAgICAgbWVtb3J5IGFyZWEuICBUaGUgZm9ybWF0IG9mIGRhdGEgaXMgYXNzdW1lZCB0byBiZSByYXcgdW5zaWduZWQgYnl0ZXMsCi0gICAgICAgICB3aXRob3V0IGFueSBwYXJ0aWN1bGFyIHN0cnVjdHVyZS4gIFRoaXMgaXMgYSAic3RhbmQtYWxvbmUiIGZsYWcKLSAgICAgICAgIGNvbnN0YW50LiAgSXQgbmV2ZXIgbmVlZHMgdG8gYmUgJ3wnZCB0byB0aGUgb3RoZXJzLiAgVGhlIGV4cG9ydGVyIHdpbGwKLSAgICAgICAgIHJhaXNlIGFuIGVycm9yIGlmIGl0IGNhbm5vdCBwcm92aWRlIHN1Y2ggYSBjb250aWd1b3VzIGJ1ZmZlciBvZiBieXRlcy4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX1dSSVRBQkxFCi0KLSAgICAgICAgIExpa2UgOmM6bWFjcm86YFB5QlVGX1NJTVBMRWAsIGJ1dCB0aGUgcmV0dXJuZWQgYnVmZmVyIGlzIHdyaXRhYmxlLiAgSWYKLSAgICAgICAgIHRoZSBleHBvcnRlciBkb2Vzbid0IHN1cHBvcnQgd3JpdGFibGUgYnVmZmVycywgYW4gZXJyb3IgaXMgcmFpc2VkLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfU1RSSURFUwotCi0gICAgICAgICBUaGlzIGltcGxpZXMgOmM6bWFjcm86YFB5QlVGX05EYC4gIFRoZSByZXR1cm5lZCBidWZmZXIgbXVzdCBwcm92aWRlCi0gICAgICAgICBzdHJpZGVzIGluZm9ybWF0aW9uIChpLmUuIHRoZSBzdHJpZGVzIGNhbm5vdCBiZSBOVUxMKS4gIFRoaXMgd291bGQgYmUKLSAgICAgICAgIHVzZWQgd2hlbiB0aGUgY29uc3VtZXIgY2FuIGhhbmRsZSBzdHJpZGVkLCBkaXNjb250aWd1b3VzIGFycmF5cy4KLSAgICAgICAgIEhhbmRsaW5nIHN0cmlkZXMgYXV0b21hdGljYWxseSBhc3N1bWVzIHlvdSBjYW4gaGFuZGxlIHNoYXBlLiAgVGhlCi0gICAgICAgICBleHBvcnRlciBjYW4gcmFpc2UgYW4gZXJyb3IgaWYgYSBzdHJpZGVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkYXRhIGlzCi0gICAgICAgICBub3QgcG9zc2libGUgKGkuZS4gd2l0aG91dCB0aGUgc3Vib2Zmc2V0cykuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9ORAotCi0gICAgICAgICBUaGUgcmV0dXJuZWQgYnVmZmVyIG11c3QgcHJvdmlkZSBzaGFwZSBpbmZvcm1hdGlvbi4gIFRoZSBtZW1vcnkgd2lsbCBiZQotICAgICAgICAgYXNzdW1lZCBDLXN0eWxlIGNvbnRpZ3VvdXMgKGxhc3QgZGltZW5zaW9uIHZhcmllcyB0aGUgZmFzdGVzdCkuICBUaGUKLSAgICAgICAgIGV4cG9ydGVyIG1heSByYWlzZSBhbiBlcnJvciBpZiBpdCBjYW5ub3QgcHJvdmlkZSB0aGlzIGtpbmQgb2YKLSAgICAgICAgIGNvbnRpZ3VvdXMgYnVmZmVyLiAgSWYgdGhpcyBpcyBub3QgZ2l2ZW4gdGhlbiBzaGFwZSB3aWxsIGJlICpOVUxMKi4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX0NfQ09OVElHVU9VUwotICAgICAgICAgICAgICAgICAgUHlCVUZfRl9DT05USUdVT1VTCi0gICAgICAgICAgICAgICAgICBQeUJVRl9BTllfQ09OVElHVU9VUwotCi0gICAgICAgICBUaGVzZSBmbGFncyBpbmRpY2F0ZSB0aGF0IHRoZSBjb250aWd1aXR5IHJldHVybmVkIGJ1ZmZlciBtdXN0IGJlCi0gICAgICAgICByZXNwZWN0aXZlbHksIEMtY29udGlndW91cyAobGFzdCBkaW1lbnNpb24gdmFyaWVzIHRoZSBmYXN0ZXN0KSwgRm9ydHJhbgotICAgICAgICAgY29udGlndW91cyAoZmlyc3QgZGltZW5zaW9uIHZhcmllcyB0aGUgZmFzdGVzdCkgb3IgZWl0aGVyIG9uZS4gIEFsbCBvZgotICAgICAgICAgdGhlc2UgZmxhZ3MgaW1wbHkgOmM6bWFjcm86YFB5QlVGX1NUUklERVNgIGFuZCBndWFyYW50ZWUgdGhhdCB0aGUKLSAgICAgICAgIHN0cmlkZXMgYnVmZmVyIGluZm8gc3RydWN0dXJlIHdpbGwgYmUgZmlsbGVkIGluIGNvcnJlY3RseS4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX0lORElSRUNUCi0KLSAgICAgICAgIFRoaXMgZmxhZyBpbmRpY2F0ZXMgdGhlIHJldHVybmVkIGJ1ZmZlciBtdXN0IGhhdmUgc3Vib2Zmc2V0cwotICAgICAgICAgaW5mb3JtYXRpb24gKHdoaWNoIGNhbiBiZSBOVUxMIGlmIG5vIHN1Ym9mZnNldHMgYXJlIG5lZWRlZCkuICBUaGlzIGNhbgotICAgICAgICAgYmUgdXNlZCB3aGVuIHRoZSBjb25zdW1lciBjYW4gaGFuZGxlIGluZGlyZWN0IGFycmF5IHJlZmVyZW5jaW5nIGltcGxpZWQKLSAgICAgICAgIGJ5IHRoZXNlIHN1Ym9mZnNldHMuIFRoaXMgaW1wbGllcyA6YzptYWNybzpgUHlCVUZfU1RSSURFU2AuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9GT1JNQVQKLQotICAgICAgICAgVGhlIHJldHVybmVkIGJ1ZmZlciBtdXN0IGhhdmUgdHJ1ZSBmb3JtYXQgaW5mb3JtYXRpb24gaWYgdGhpcyBmbGFnIGlzCi0gICAgICAgICBwcm92aWRlZC4gIFRoaXMgd291bGQgYmUgdXNlZCB3aGVuIHRoZSBjb25zdW1lciBpcyBnb2luZyB0byBiZSBjaGVja2luZwotICAgICAgICAgZm9yIHdoYXQgJ2tpbmQnIG9mIGRhdGEgaXMgYWN0dWFsbHkgc3RvcmVkLiAgQW4gZXhwb3J0ZXIgc2hvdWxkIGFsd2F5cwotICAgICAgICAgYmUgYWJsZSB0byBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24gaWYgcmVxdWVzdGVkLiAgSWYgZm9ybWF0IGlzIG5vdAotICAgICAgICAgZXhwbGljaXRseSByZXF1ZXN0ZWQgdGhlbiB0aGUgZm9ybWF0IG11c3QgYmUgcmV0dXJuZWQgYXMgKk5VTEwqICh3aGljaAotICAgICAgICAgbWVhbnMgYGAnQidgYCwgb3IgdW5zaWduZWQgYnl0ZXMpLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfU1RSSURFRAotCi0gICAgICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGAoUHlCVUZfU1RSSURFUyB8IFB5QlVGX1dSSVRBQkxFKWBgLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfU1RSSURFRF9STwotCi0gICAgICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGAoUHlCVUZfU1RSSURFUylgYC4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX1JFQ09SRFMKLQotICAgICAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgKFB5QlVGX1NUUklERVMgfCBQeUJVRl9GT1JNQVQgfAotICAgICAgICAgUHlCVUZfV1JJVEFCTEUpYGAuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9SRUNPUkRTX1JPCi0KLSAgICAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYChQeUJVRl9TVFJJREVTIHwgUHlCVUZfRk9STUFUKWBgLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfRlVMTAotCi0gICAgICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGAoUHlCVUZfSU5ESVJFQ1QgfCBQeUJVRl9GT1JNQVQgfAotICAgICAgICAgUHlCVUZfV1JJVEFCTEUpYGAuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9GVUxMX1JPCi0KLSAgICAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYChQeUJVRl9JTkRJUkVDVCB8IFB5QlVGX0ZPUk1BVClgYC4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX0NPTlRJRwotCi0gICAgICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGAoUHlCVUZfTkQgfCBQeUJVRl9XUklUQUJMRSlgYC4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX0NPTlRJR19STwotCi0gICAgICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGAoUHlCVUZfTkQpYGAuCisgICBTdWNjZXNzZnVsIGNhbGxzIHRvIDpjOmZ1bmM6YFB5T2JqZWN0X0dldEJ1ZmZlcmAgbXVzdCBiZSBwYWlyZWQgd2l0aCBjYWxscworICAgdG8gOmM6ZnVuYzpgUHlCdWZmZXJfUmVsZWFzZWAsIHNpbWlsYXIgdG8gOmM6ZnVuYzpgbWFsbG9jYCBhbmQgOmM6ZnVuYzpgZnJlZWAuCisgICBUaHVzLCBhZnRlciB0aGUgY29uc3VtZXIgaXMgZG9uZSB3aXRoIHRoZSBidWZmZXIsIDpjOmZ1bmM6YFB5QnVmZmVyX1JlbGVhc2VgCisgICBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UuCiAKIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlCdWZmZXJfUmVsZWFzZShQeV9idWZmZXIgKnZpZXcpCiAKLSAgIFJlbGVhc2UgdGhlIGJ1ZmZlciAqdmlldyouICBUaGlzIHNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgYnVmZmVyIGlzIG5vCi0gICBsb25nZXIgYmVpbmcgdXNlZCBhcyBpdCBtYXkgZnJlZSBtZW1vcnkgZnJvbSBpdC4KKyAgIFJlbGVhc2UgdGhlIGJ1ZmZlciAqdmlldyogYW5kIGRlY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IGZvcgorICAgOmM6bWVtYmVyOmB2aWV3LT5vYmpgLiBUaGlzIGZ1bmN0aW9uIE1VU1QgYmUgY2FsbGVkIHdoZW4gdGhlIGJ1ZmZlcgorICAgaXMgbm8gbG9uZ2VyIGJlaW5nIHVzZWQsIG90aGVyd2lzZSByZWZlcmVuY2UgbGVha3MgbWF5IG9jY3VyLgorCisgICBJdCBpcyBhbiBlcnJvciB0byBjYWxsIHRoaXMgZnVuY3Rpb24gb24gYSBidWZmZXIgdGhhdCB3YXMgbm90IG9idGFpbmVkIHZpYQorICAgOmM6ZnVuYzpgUHlPYmplY3RfR2V0QnVmZmVyYC4KIAogCiAuLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeUJ1ZmZlcl9TaXplRnJvbUZvcm1hdChjb25zdCBjaGFyICopCiAKLSAgIFJldHVybiB0aGUgaW1wbGllZCA6YzpkYXRhOmB+UHlfYnVmZmVyLml0ZW1zaXplYCBmcm9tIHRoZSBzdHJ1Y3Qtc3R5cGUKLSAgIDpjOmRhdGE6YH5QeV9idWZmZXIuZm9ybWF0YC4KKyAgIFJldHVybiB0aGUgaW1wbGllZCA6YzpkYXRhOmB+UHlfYnVmZmVyLml0ZW1zaXplYCBmcm9tIDpjOmRhdGE6YH5QeV9idWZmZXIuZm9ybWF0YC4KKyAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IHlldCBpbXBsZW1lbnRlZC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5QnVmZmVyX0lzQ29udGlndW91cyhQeV9idWZmZXIgKnZpZXcsIGNoYXIgZm9ydHJhbikKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlCdWZmZXJfSXNDb250aWd1b3VzKFB5X2J1ZmZlciAqdmlldywgY2hhciBvcmRlcikKIAotICAgUmV0dXJuIDEgaWYgdGhlIG1lbW9yeSBkZWZpbmVkIGJ5IHRoZSAqdmlldyogaXMgQy1zdHlsZSAoKmZvcnRyYW4qIGlzCi0gICBgYCdDJ2BgKSBvciBGb3J0cmFuLXN0eWxlICgqZm9ydHJhbiogaXMgYGAnRidgYCkgY29udGlndW91cyBvciBlaXRoZXIgb25lCi0gICAoKmZvcnRyYW4qIGlzIGBgJ0EnYGApLiAgUmV0dXJuIDAgb3RoZXJ3aXNlLgorICAgUmV0dXJuIDEgaWYgdGhlIG1lbW9yeSBkZWZpbmVkIGJ5IHRoZSAqdmlldyogaXMgQy1zdHlsZSAoKm9yZGVyKiBpcworICAgYGAnQydgYCkgb3IgRm9ydHJhbi1zdHlsZSAoKm9yZGVyKiBpcyBgYCdGJ2BgKSBjb250aWd1b3VzIG9yIGVpdGhlciBvbmUKKyAgICgqb3JkZXIqIGlzIGBgJ0EnYGApLiAgUmV0dXJuIDAgb3RoZXJ3aXNlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5QnVmZmVyX0ZpbGxDb250aWd1b3VzU3RyaWRlcyhpbnQgbmRpbSwgUHlfc3NpemVfdCAqc2hhcGUsIFB5X3NzaXplX3QgKnN0cmlkZXMsIFB5X3NzaXplX3QgaXRlbXNpemUsIGNoYXIgZm9ydHJhbikKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5QnVmZmVyX0ZpbGxDb250aWd1b3VzU3RyaWRlcyhpbnQgbmRpbSwgUHlfc3NpemVfdCAqc2hhcGUsIFB5X3NzaXplX3QgKnN0cmlkZXMsIFB5X3NzaXplX3QgaXRlbXNpemUsIGNoYXIgb3JkZXIpCiAKICAgIEZpbGwgdGhlICpzdHJpZGVzKiBhcnJheSB3aXRoIGJ5dGUtc3RyaWRlcyBvZiBhIGNvbnRpZ3VvdXMgKEMtc3R5bGUgaWYKLSAgICpmb3J0cmFuKiBpcyBgYCdDJ2BgIG9yIEZvcnRyYW4tc3R5bGUgaWYgKmZvcnRyYW4qIGlzIGBgJ0YnYGApIGFycmF5IG9mIHRoZQorICAgKm9yZGVyKiBpcyBgYCdDJ2BgIG9yIEZvcnRyYW4tc3R5bGUgaWYgKm9yZGVyKiBpcyBgYCdGJ2BgKSBhcnJheSBvZiB0aGUKICAgIGdpdmVuIHNoYXBlIHdpdGggdGhlIGdpdmVuIG51bWJlciBvZiBieXRlcyBwZXIgZWxlbWVudC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5QnVmZmVyX0ZpbGxJbmZvKFB5X2J1ZmZlciAqdmlldywgUHlPYmplY3QgKm9iaiwgdm9pZCAqYnVmLCBQeV9zc2l6ZV90IGxlbiwgaW50IHJlYWRvbmx5LCBpbnQgaW5mb2ZsYWdzKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeUJ1ZmZlcl9GaWxsSW5mbyhQeV9idWZmZXIgKnZpZXcsIFB5T2JqZWN0ICpleHBvcnRlciwgdm9pZCAqYnVmLCBQeV9zc2l6ZV90IGxlbiwgaW50IHJlYWRvbmx5LCBpbnQgZmxhZ3MpCiAKLSAgIEZpbGwgaW4gYSBidWZmZXItaW5mbyBzdHJ1Y3R1cmUsICp2aWV3KiwgY29ycmVjdGx5IGZvciBhbiBleHBvcnRlciB0aGF0IGNhbgotICAgb25seSBzaGFyZSBhIGNvbnRpZ3VvdXMgY2h1bmsgb2YgbWVtb3J5IG9mICJ1bnNpZ25lZCBieXRlcyIgb2YgdGhlIGdpdmVuCi0gICBsZW5ndGguICBSZXR1cm4gMCBvbiBzdWNjZXNzIGFuZCAtMSAod2l0aCByYWlzaW5nIGFuIGVycm9yKSBvbiBlcnJvci4KKyAgIEhhbmRsZSBidWZmZXIgcmVxdWVzdHMgZm9yIGFuIGV4cG9ydGVyIHRoYXQgd2FudHMgdG8gZXhwb3NlICpidWYqIG9mIHNpemUgKmxlbioKKyAgIHdpdGggd3JpdGFiaWxpdHkgc2V0IGFjY29yZGluZyB0byAqcmVhZG9ubHkqLiAqYnVmKiBpcyBpbnRlcnByZXRlZCBhcyBhIHNlcXVlbmNlCisgICBvZiB1bnNpZ25lZCBieXRlcy4KKworICAgVGhlICpmbGFncyogYXJndW1lbnQgaW5kaWNhdGVzIHRoZSByZXF1ZXN0IHR5cGUuIFRoaXMgZnVuY3Rpb24gYWx3YXlzIGZpbGxzIGluCisgICAqdmlldyogYXMgc3BlY2lmaWVkIGJ5IGZsYWdzLCB1bmxlc3MgKmJ1ZiogaGFzIGJlZW4gZGVzaWduYXRlZCBhcyByZWFkLW9ubHkKKyAgIGFuZCA6YzptYWNybzpgUHlCVUZfV1JJVEFCTEVgIGlzIHNldCBpbiAqZmxhZ3MqLgorCisgICBPbiBzdWNjZXNzLCBzZXQgOmM6bWVtYmVyOmB2aWV3LT5vYmpgIHRvIGEgbmV3IHJlZmVyZW5jZSB0byAqZXhwb3J0ZXIqIGFuZAorICAgcmV0dXJuIDAuIE90aGVyd2lzZSwgcmFpc2UgOmM6ZGF0YTpgUHlFeGNfQnVmZmVyRXJyb3JgLCBzZXQKKyAgIDpjOm1lbWJlcjpgdmlldy0+b2JqYCB0byAqTlVMTCogYW5kIHJldHVybiAtMTsKKworICAgSWYgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGFzIHBhcnQgb2YgYSA6cmVmOmBnZXRidWZmZXJwcm9jIDxidWZmZXItc3RydWN0cz5gLAorICAgKmV4cG9ydGVyKiBNVVNUIGJlIHNldCB0byB0aGUgZXhwb3J0aW5nIG9iamVjdC4gT3RoZXJ3aXNlLCAqZXhwb3J0ZXIqIE1VU1QKKyAgIGJlIE5VTEwuCisKKwogCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvY29kZS5yc3QgYi9Eb2MvYy1hcGkvY29kZS5yc3QKaW5kZXggNjkzMmJiMS4uNTdlODA3MiAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2NvZGUucnN0CisrKyBiL0RvYy9jLWFwaS9jb2RlLnJzdApAQCAtMzEsMTEgKzMxLDExIEBACiAKICAgIFJldHVybiB0cnVlIGlmICpjbyogaXMgYSA6Y2xhc3M6YGNvZGVgIG9iamVjdAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5Q29kZV9HZXROdW1GcmVlKFB5T2JqZWN0ICpjbykKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlDb2RlX0dldE51bUZyZWUoUHlDb2RlT2JqZWN0ICpjbykKIAogICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgZnJlZSB2YXJpYWJsZXMgaW4gKmNvKi4KIAotLi4gYzpmdW5jdGlvbjo6IFB5Q29kZU9iamVjdCAqUHlDb2RlX05ldyhpbnQgYXJnY291bnQsIGludCBrd29ubHlhcmdjb3VudCwgaW50IG5sb2NhbHMsIGludCBzdGFja3NpemUsIGludCBmbGFncywgUHlPYmplY3QgKmNvZGUsIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICpuYW1lcywgUHlPYmplY3QgKnZhcm5hbWVzLCBQeU9iamVjdCAqZnJlZXZhcnMsIFB5T2JqZWN0ICpjZWxsdmFycywgUHlPYmplY3QgKmZpbGVuYW1lLCBQeU9iamVjdCAqbmFtZSwgaW50IGZpcnN0bGluZW5vLCBQeU9iamVjdCAqbG5vdGFiKQorLi4gYzpmdW5jdGlvbjo6IFB5Q29kZU9iamVjdCogUHlDb2RlX05ldyhpbnQgYXJnY291bnQsIGludCBrd29ubHlhcmdjb3VudCwgaW50IG5sb2NhbHMsIGludCBzdGFja3NpemUsIGludCBmbGFncywgUHlPYmplY3QgKmNvZGUsIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICpuYW1lcywgUHlPYmplY3QgKnZhcm5hbWVzLCBQeU9iamVjdCAqZnJlZXZhcnMsIFB5T2JqZWN0ICpjZWxsdmFycywgUHlPYmplY3QgKmZpbGVuYW1lLCBQeU9iamVjdCAqbmFtZSwgaW50IGZpcnN0bGluZW5vLCBQeU9iamVjdCAqbG5vdGFiKQogCiAgICBSZXR1cm4gYSBuZXcgY29kZSBvYmplY3QuICBJZiB5b3UgbmVlZCBhIGR1bW15IGNvZGUgb2JqZWN0IHRvCiAgICBjcmVhdGUgYSBmcmFtZSwgdXNlIDpjOmZ1bmM6YFB5Q29kZV9OZXdFbXB0eWAgaW5zdGVhZC4gIENhbGxpbmcKQEAgLTQzLDcgKzQzLDcgQEAKICAgIHZlcnNpb24gc2luY2UgdGhlIGRlZmluaXRpb24gb2YgdGhlIGJ5dGVjb2RlIGNoYW5nZXMgb2Z0ZW4uCiAKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeUNvZGVfTmV3RW1wdHkoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmZ1bmNuYW1lLCBpbnQgZmlyc3RsaW5lbm8pCisuLiBjOmZ1bmN0aW9uOjogUHlDb2RlT2JqZWN0KiBQeUNvZGVfTmV3RW1wdHkoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmZ1bmNuYW1lLCBpbnQgZmlyc3RsaW5lbm8pCiAKICAgIFJldHVybiBhIG5ldyBlbXB0eSBjb2RlIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgZmlsZW5hbWUsCiAgICBmdW5jdGlvbiBuYW1lLCBhbmQgZmlyc3QgbGluZSBudW1iZXIuICBJdCBpcyBpbGxlZ2FsIHRvCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvY29udmVyc2lvbi5yc3QgYi9Eb2MvYy1hcGkvY29udmVyc2lvbi5yc3QKaW5kZXggZGZjMGEzYS4uOTU3OGY5OCAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2NvbnZlcnNpb24ucnN0CisrKyBiL0RvYy9jLWFwaS9jb252ZXJzaW9uLnJzdApAQCAtMTE5LDEzICsxMTksMTMgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCiAKLS4uIGM6ZnVuY3Rpb246OiBjaGFyKiBQeU9TX3N0cmljbXAoY2hhciAqczEsIGNoYXIgKnMyKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeU9TX3N0cmljbXAoY2hhciAqczEsIGNoYXIgKnMyKQogCiAgICBDYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gb2Ygc3RyaW5ncy4gVGhlIGZ1bmN0aW9uIHdvcmtzIGFsbW9zdAogICAgaWRlbnRpY2FsbHkgdG8gOmM6ZnVuYzpgc3RyY21wYCBleGNlcHQgdGhhdCBpdCBpZ25vcmVzIHRoZSBjYXNlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBjaGFyKiBQeU9TX3N0cm5pY21wKGNoYXIgKnMxLCBjaGFyICpzMiwgUHlfc3NpemVfdCAgc2l6ZSkKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlPU19zdHJuaWNtcChjaGFyICpzMSwgY2hhciAqczIsIFB5X3NzaXplX3QgIHNpemUpCiAKICAgIENhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBvZiBzdHJpbmdzLiBUaGUgZnVuY3Rpb24gd29ya3MgYWxtb3N0CiAgICBpZGVudGljYWxseSB0byA6YzpmdW5jOmBzdHJuY21wYCBleGNlcHQgdGhhdCBpdCBpZ25vcmVzIHRoZSBjYXNlLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2RhdGV0aW1lLnJzdCBiL0RvYy9jLWFwaS9kYXRldGltZS5yc3QKaW5kZXggZmNkMTM5NS4uMzk1NDJiZCAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2RhdGV0aW1lLnJzdAorKysgYi9Eb2MvYy1hcGkvZGF0ZXRpbWUucnN0CkBAIC0xNzAsNiArMTcwLDMxIEBACiAgICBSZXR1cm4gdGhlIG1pY3Jvc2Vjb25kLCBhcyBhbiBpbnQgZnJvbSAwIHRocm91Z2ggOTk5OTk5LgogCiAKK01hY3JvcyB0byBleHRyYWN0IGZpZWxkcyBmcm9tIHRpbWUgZGVsdGEgb2JqZWN0cy4gIFRoZSBhcmd1bWVudCBtdXN0IGJlIGFuCitpbnN0YW5jZSBvZiA6YzpkYXRhOmBQeURhdGVUaW1lX0RlbHRhYCwgaW5jbHVkaW5nIHN1YmNsYXNzZXMuIFRoZSBhcmd1bWVudCBtdXN0Citub3QgYmUgKk5VTEwqLCBhbmQgdGhlIHR5cGUgaXMgbm90IGNoZWNrZWQ6CisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlEYXRlVGltZV9ERUxUQV9HRVRfREFZUyhQeURhdGVUaW1lX0RlbHRhICpvKQorCisgICBSZXR1cm4gdGhlIG51bWJlciBvZiBkYXlzLCBhcyBhbiBpbnQgZnJvbSAtOTk5OTk5OTk5IHRvIDk5OTk5OTk5OS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IGludCBQeURhdGVUaW1lX0RFTFRBX0dFVF9TRUNPTkRTKFB5RGF0ZVRpbWVfRGVsdGEgKm8pCisKKyAgIFJldHVybiB0aGUgbnVtYmVyIG9mIHNlY29uZHMsIGFzIGFuIGludCBmcm9tIDAgdGhyb3VnaCA4NjM5OS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IGludCBQeURhdGVUaW1lX0RFTFRBX0dFVF9NSUNST1NFQ09ORChQeURhdGVUaW1lX0RlbHRhICpvKQorCisgICBSZXR1cm4gdGhlIG51bWJlciBvZiBtaWNyb3NlY29uZHMsIGFzIGFuIGludCBmcm9tIDAgdGhyb3VnaCA5OTk5OTkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIE1hY3JvcyBmb3IgdGhlIGNvbnZlbmllbmNlIG9mIG1vZHVsZXMgaW1wbGVtZW50aW5nIHRoZSBEQiBBUEk6CiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlEYXRlVGltZV9Gcm9tVGltZXN0YW1wKFB5T2JqZWN0ICphcmdzKQpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2RpY3QucnN0IGIvRG9jL2MtYXBpL2RpY3QucnN0CmluZGV4IDZkZjg0ZTAuLjZiYWNjMzIgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9kaWN0LnJzdAorKysgYi9Eb2MvYy1hcGkvZGljdC5yc3QKQEAgLTM2LDExICszNiwxMSBAQAogICAgUmV0dXJuIGEgbmV3IGVtcHR5IGRpY3Rpb25hcnksIG9yICpOVUxMKiBvbiBmYWlsdXJlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlEaWN0UHJveHlfTmV3KFB5T2JqZWN0ICpkaWN0KQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeURpY3RQcm94eV9OZXcoUHlPYmplY3QgKm1hcHBpbmcpCiAKLSAgIFJldHVybiBhIHByb3h5IG9iamVjdCBmb3IgYSBtYXBwaW5nIHdoaWNoIGVuZm9yY2VzIHJlYWQtb25seSBiZWhhdmlvci4KLSAgIFRoaXMgaXMgbm9ybWFsbHkgdXNlZCB0byBjcmVhdGUgYSBwcm94eSB0byBwcmV2ZW50IG1vZGlmaWNhdGlvbiBvZiB0aGUKLSAgIGRpY3Rpb25hcnkgZm9yIG5vbi1keW5hbWljIGNsYXNzIHR5cGVzLgorICAgUmV0dXJuIGEgOmNsYXNzOmB0eXBlcy5NYXBwaW5nUHJveHlUeXBlYCBvYmplY3QgZm9yIGEgbWFwcGluZyB3aGljaAorICAgZW5mb3JjZXMgcmVhZC1vbmx5IGJlaGF2aW9yLiAgVGhpcyBpcyBub3JtYWxseSB1c2VkIHRvIGNyZWF0ZSBhIHZpZXcgdG8KKyAgIHByZXZlbnQgbW9kaWZpY2F0aW9uIG9mIHRoZSBkaWN0aW9uYXJ5IGZvciBub24tZHluYW1pYyBjbGFzcyB0eXBlcy4KIAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeURpY3RfQ2xlYXIoUHlPYmplY3QgKnApCkBAIC0yMDksMyArMjA5LDEwIEBACiAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2VxMjoKICAgICAgICAgICAgICAgaWYgb3ZlcnJpZGUgb3Iga2V5IG5vdCBpbiBhOgogICAgICAgICAgICAgICAgICAgYVtrZXldID0gdmFsdWUKKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5RGljdF9DbGVhckZyZWVMaXN0KCkKKworICAgQ2xlYXIgdGhlIGZyZWUgbGlzdC4gUmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgZnJlZWQgaXRlbXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0IGIvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0CmluZGV4IDZmMTNjODAuLjlhNjZiN2YgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QKQEAgLTEyOSw2ICsxMjksNDEgQEAKICAgICAgIGV4Y2VwdGlvbiBzdGF0ZS4KIAogCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9HZXRFeGNJbmZvKFB5T2JqZWN0ICoqcHR5cGUsIFB5T2JqZWN0ICoqcHZhbHVlLCBQeU9iamVjdCAqKnB0cmFjZWJhY2spCisKKyAgIFJldHJpZXZlIHRoZSBleGNlcHRpb24gaW5mbywgYXMga25vd24gZnJvbSBgYHN5cy5leGNfaW5mbygpYGAuICBUaGlzIHJlZmVycworICAgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzIGFscmVhZHkgY2F1Z2h0LCBub3QgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzCisgICBmcmVzaGx5IHJhaXNlZC4gIFJldHVybnMgbmV3IHJlZmVyZW5jZXMgZm9yIHRoZSB0aHJlZSBvYmplY3RzLCBhbnkgb2Ygd2hpY2gKKyAgIG1heSBiZSAqTlVMTCouICBEb2VzIG5vdCBtb2RpZnkgdGhlIGV4Y2VwdGlvbiBpbmZvIHN0YXRlLgorCisgICAuLiBub3RlOjoKKworICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3Qgbm9ybWFsbHkgdXNlZCBieSBjb2RlIHRoYXQgd2FudHMgdG8gaGFuZGxlIGV4Y2VwdGlvbnMuCisgICAgICBSYXRoZXIsIGl0IGNhbiBiZSB1c2VkIHdoZW4gY29kZSBuZWVkcyB0byBzYXZlIGFuZCByZXN0b3JlIHRoZSBleGNlcHRpb24KKyAgICAgIHN0YXRlIHRlbXBvcmFyaWx5LiAgVXNlIDpjOmZ1bmM6YFB5RXJyX1NldEV4Y0luZm9gIHRvIHJlc3RvcmUgb3IgY2xlYXIgdGhlCisgICAgICBleGNlcHRpb24gc3RhdGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX1NldEV4Y0luZm8oUHlPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgUHlPYmplY3QgKnRyYWNlYmFjaykKKworICAgU2V0IHRoZSBleGNlcHRpb24gaW5mbywgYXMga25vd24gZnJvbSBgYHN5cy5leGNfaW5mbygpYGAuICBUaGlzIHJlZmVycworICAgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzIGFscmVhZHkgY2F1Z2h0LCBub3QgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzCisgICBmcmVzaGx5IHJhaXNlZC4gIFRoaXMgZnVuY3Rpb24gc3RlYWxzIHRoZSByZWZlcmVuY2VzIG9mIHRoZSBhcmd1bWVudHMuCisgICBUbyBjbGVhciB0aGUgZXhjZXB0aW9uIHN0YXRlLCBwYXNzICpOVUxMKiBmb3IgYWxsIHRocmVlIGFyZ3VtZW50cy4KKyAgIEZvciBnZW5lcmFsIHJ1bGVzIGFib3V0IHRoZSB0aHJlZSBhcmd1bWVudHMsIHNlZSA6YzpmdW5jOmBQeUVycl9SZXN0b3JlYC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IG5vcm1hbGx5IHVzZWQgYnkgY29kZSB0aGF0IHdhbnRzIHRvIGhhbmRsZSBleGNlcHRpb25zLgorICAgICAgUmF0aGVyLCBpdCBjYW4gYmUgdXNlZCB3aGVuIGNvZGUgbmVlZHMgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgZXhjZXB0aW9uCisgICAgICBzdGF0ZSB0ZW1wb3JhcmlseS4gIFVzZSA6YzpmdW5jOmBQeUVycl9HZXRFeGNJbmZvYCB0byByZWFkIHRoZSBleGNlcHRpb24KKyAgICAgIHN0YXRlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9TZXRTdHJpbmcoUHlPYmplY3QgKnR5cGUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiAKICAgIFRoaXMgaXMgdGhlIG1vc3QgY29tbW9uIHdheSB0byBzZXQgdGhlIGVycm9yIGluZGljYXRvci4gIFRoZSBmaXJzdCBhcmd1bWVudApAQCAtMjMwLDYgKzI2NSwxNiBAQAogICAgcGFyYW1ldGVyIHNwZWNpZnlpbmcgdGhlIGV4Y2VwdGlvbiB0eXBlIHRvIGJlIHJhaXNlZC4gQXZhaWxhYmlsaXR5OiBXaW5kb3dzLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlFcnJfU2V0SW1wb3J0RXJyb3IoUHlPYmplY3QgKm1zZywgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRoKQorCisgICBUaGlzIGlzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gcmFpc2UgOmV4YzpgSW1wb3J0RXJyb3JgLiAqbXNnKiB3aWxsIGJlCisgICBzZXQgYXMgdGhlIGV4Y2VwdGlvbidzIG1lc3NhZ2Ugc3RyaW5nLiAqbmFtZSogYW5kICpwYXRoKiwgYm90aCBvZiB3aGljaCBjYW4KKyAgIGJlIGBgTlVMTGBgLCB3aWxsIGJlIHNldCBhcyB0aGUgOmV4YzpgSW1wb3J0RXJyb3JgJ3MgcmVzcGVjdGl2ZSBgYG5hbWVgYAorICAgYW5kIGBgcGF0aGBgIGF0dHJpYnV0ZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX1N5bnRheExvY2F0aW9uRXgoY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQogCiAgICBTZXQgZmlsZSwgbGluZSwgYW5kIG9mZnNldCBpbmZvcm1hdGlvbiBmb3IgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLiAgSWYgdGhlCkBAIC0yMzgsNyArMjgzLDcgQEAKICAgIGlzIGEgOmV4YzpgU3ludGF4RXJyb3JgLiAqZmlsZW5hbWUqIGlzIGRlY29kZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZwogICAgKDpmdW5jOmBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nYCkuCiAKLS4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfU3ludGF4TG9jYXRpb24oY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pCkBAIC0zMTEsNiArMzU2LDcgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKwogLi4gYzpmdW5jdGlvbjo6IGludCBQeUVycl9DaGVja1NpZ25hbHMoKQogCiAgICAuLiBpbmRleDo6CkBAIC00MjEsMTcgKzQ2NywxOCBAQAogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RXhjZXB0aW9uX0dldENhdXNlKFB5T2JqZWN0ICpleCkKIAotICAgUmV0dXJuIHRoZSBjYXVzZSAoYW5vdGhlciBleGNlcHRpb24gaW5zdGFuY2Ugc2V0IGJ5IGBgcmFpc2UgLi4uIGZyb20gLi4uYGApCi0gICBhc3NvY2lhdGVkIHdpdGggdGhlIGV4Y2VwdGlvbiBhcyBhIG5ldyByZWZlcmVuY2UsIGFzIGFjY2Vzc2libGUgZnJvbSBQeXRob24KLSAgIHRocm91Z2ggOmF0dHI6YF9fY2F1c2VfX2AuICBJZiB0aGVyZSBpcyBubyBjYXVzZSBhc3NvY2lhdGVkLCB0aGlzIHJldHVybnMKLSAgICpOVUxMKi4KKyAgIFJldHVybiB0aGUgY2F1c2UgKGVpdGhlciBhbiBleGNlcHRpb24gaW5zdGFuY2UsIG9yIDpjb25zdDpgTm9uZWAsCisgICBzZXQgYnkgYGByYWlzZSAuLi4gZnJvbSAuLi5gYCkgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGNlcHRpb24gYXMgYSBuZXcKKyAgIHJlZmVyZW5jZSwgYXMgYWNjZXNzaWJsZSBmcm9tIFB5dGhvbiB0aHJvdWdoIDphdHRyOmBfX2NhdXNlX19gLgogCiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXhjZXB0aW9uX1NldENhdXNlKFB5T2JqZWN0ICpleCwgUHlPYmplY3QgKmN0eCkKIAogICAgU2V0IHRoZSBjYXVzZSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4Y2VwdGlvbiB0byAqY3R4Ki4gIFVzZSAqTlVMTCogdG8gY2xlYXIKLSAgIGl0LiAgVGhlcmUgaXMgbm8gdHlwZSBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCAqY3R4KiBpcyBhbiBleGNlcHRpb24gaW5zdGFuY2UuCi0gICBUaGlzIHN0ZWFscyBhIHJlZmVyZW5jZSB0byAqY3R4Ki4KKyAgIGl0LiAgVGhlcmUgaXMgbm8gdHlwZSBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCAqY3R4KiBpcyBlaXRoZXIgYW4gZXhjZXB0aW9uCisgICBpbnN0YW5jZSBvciA6Y29uc3Q6YE5vbmVgLiAgVGhpcyBzdGVhbHMgYSByZWZlcmVuY2UgdG8gKmN0eCouCisKKyAgIDphdHRyOmBfX3N1cHByZXNzX2NvbnRleHRfX2AgaXMgaW1wbGljaXRseSBzZXQgdG8gYGBUcnVlYGAgYnkgdGhpcyBmdW5jdGlvbi4KIAogCiAuLiBfdW5pY29kZWV4Y2VwdGlvbnM6CkBAIC01MjUsNyArNTcyLDcgQEAKIAogICAgTWFya3MgYSBwb2ludCB3aGVyZSBhIHJlY3Vyc2l2ZSBDLWxldmVsIGNhbGwgaXMgYWJvdXQgdG8gYmUgcGVyZm9ybWVkLgogCi0gICBJZiA6Y29uc3Q6YFVTRV9TVEFDS0NIRUNLYCBpcyBkZWZpbmVkLCB0aGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgdGhlIE9TCisgICBJZiA6Y29uc3Q6YFVTRV9TVEFDS0NIRUNLYCBpcyBkZWZpbmVkLCB0aGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgT1MKICAgIHN0YWNrIG92ZXJmbG93ZWQgdXNpbmcgOmM6ZnVuYzpgUHlPU19DaGVja1N0YWNrYC4gIEluIHRoaXMgaXMgdGhlIGNhc2UsIGl0CiAgICBzZXRzIGEgOmV4YzpgTWVtb3J5RXJyb3JgIGFuZCByZXR1cm5zIGEgbm9uemVybyB2YWx1ZS4KIApAQCAtNTgyLDY1ICs2MjksMTE2IEBACiA6Yzp0eXBlOmBQeU9iamVjdFwqYDsgdGhleSBhcmUgYWxsIGNsYXNzIG9iamVjdHMuICBGb3IgY29tcGxldGVuZXNzLCBoZXJlIGFyZSBhbGwKIHRoZSB2YXJpYWJsZXM6CiAKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgQyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQeXRob24gTmFtZSAgICAgICAgICAgICAgICB8IE5vdGVzICAgIHwKLSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PSsKLXwgOmM6ZGF0YTpgUHlFeGNfQmFzZUV4Y2VwdGlvbmAgICAgICAgfCA6ZXhjOmBCYXNlRXhjZXB0aW9uYCAgICAgICB8IFwoMSkgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfRXhjZXB0aW9uYCAgICAgICAgICAgfCA6ZXhjOmBFeGNlcHRpb25gICAgICAgICAgICB8IFwoMSkgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfQXJpdGhtZXRpY0Vycm9yYCAgICAgfCA6ZXhjOmBBcml0aG1ldGljRXJyb3JgICAgICB8IFwoMSkgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfTG9va3VwRXJyb3JgICAgICAgICAgfCA6ZXhjOmBMb29rdXBFcnJvcmAgICAgICAgICB8IFwoMSkgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfQXNzZXJ0aW9uRXJyb3JgICAgICAgfCA6ZXhjOmBBc3NlcnRpb25FcnJvcmAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfQXR0cmlidXRlRXJyb3JgICAgICAgfCA6ZXhjOmBBdHRyaWJ1dGVFcnJvcmAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfRU9GRXJyb3JgICAgICAgICAgICAgfCA6ZXhjOmBFT0ZFcnJvcmAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfRW52aXJvbm1lbnRFcnJvcmAgICAgfCA6ZXhjOmBFbnZpcm9ubWVudEVycm9yYCAgICB8IFwoMSkgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yYCAgfCA6ZXhjOmBGbG9hdGluZ1BvaW50RXJyb3JgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfSU9FcnJvcmAgICAgICAgICAgICAgfCA6ZXhjOmBJT0Vycm9yYCAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfSW1wb3J0RXJyb3JgICAgICAgICAgfCA6ZXhjOmBJbXBvcnRFcnJvcmAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfSW5kZXhFcnJvcmAgICAgICAgICAgfCA6ZXhjOmBJbmRleEVycm9yYCAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfS2V5RXJyb3JgICAgICAgICAgICAgfCA6ZXhjOmBLZXlFcnJvcmAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHRgICAgfCA6ZXhjOmBLZXlib2FyZEludGVycnVwdGAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfTWVtb3J5RXJyb3JgICAgICAgICAgfCA6ZXhjOmBNZW1vcnlFcnJvcmAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfTmFtZUVycm9yYCAgICAgICAgICAgfCA6ZXhjOmBOYW1lRXJyb3JgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcmAgfCA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfT1NFcnJvcmAgICAgICAgICAgICAgfCA6ZXhjOmBPU0Vycm9yYCAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfT3ZlcmZsb3dFcnJvcmAgICAgICAgfCA6ZXhjOmBPdmVyZmxvd0Vycm9yYCAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfUmVmZXJlbmNlRXJyb3JgICAgICAgfCA6ZXhjOmBSZWZlcmVuY2VFcnJvcmAgICAgICB8IFwoMikgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfUnVudGltZUVycm9yYCAgICAgICAgfCA6ZXhjOmBSdW50aW1lRXJyb3JgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfU3ludGF4RXJyb3JgICAgICAgICAgfCA6ZXhjOmBTeW50YXhFcnJvcmAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfU3lzdGVtRXJyb3JgICAgICAgICAgfCA6ZXhjOmBTeXN0ZW1FcnJvcmAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfU3lzdGVtRXhpdGAgICAgICAgICAgfCA6ZXhjOmBTeXN0ZW1FeGl0YCAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfVHlwZUVycm9yYCAgICAgICAgICAgfCA6ZXhjOmBUeXBlRXJyb3JgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfVmFsdWVFcnJvcmAgICAgICAgICAgfCA6ZXhjOmBWYWx1ZUVycm9yYCAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfV2luZG93c0Vycm9yYCAgICAgICAgfCA6ZXhjOmBXaW5kb3dzRXJyb3JgICAgICAgICB8IFwoMykgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3JgICAgfCA6ZXhjOmBaZXJvRGl2aXNpb25FcnJvcmAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgQyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHl0aG9uIE5hbWUgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgIHwKKys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PSsKK3wgOmM6ZGF0YTpgUHlFeGNfQmFzZUV4Y2VwdGlvbmAgICAgICAgICAgIHwgOmV4YzpgQmFzZUV4Y2VwdGlvbmAgICAgICAgICAgICB8IFwoMSkgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfRXhjZXB0aW9uYCAgICAgICAgICAgICAgIHwgOmV4YzpgRXhjZXB0aW9uYCAgICAgICAgICAgICAgICB8IFwoMSkgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfQXJpdGhtZXRpY0Vycm9yYCAgICAgICAgIHwgOmV4YzpgQXJpdGhtZXRpY0Vycm9yYCAgICAgICAgICB8IFwoMSkgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfTG9va3VwRXJyb3JgICAgICAgICAgICAgIHwgOmV4YzpgTG9va3VwRXJyb3JgICAgICAgICAgICAgICB8IFwoMSkgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfQXNzZXJ0aW9uRXJyb3JgICAgICAgICAgIHwgOmV4YzpgQXNzZXJ0aW9uRXJyb3JgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfQXR0cmlidXRlRXJyb3JgICAgICAgICAgIHwgOmV4YzpgQXR0cmlidXRlRXJyb3JgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfQmxvY2tpbmdJT0Vycm9yYCAgICAgICAgIHwgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYCAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfQnJva2VuUGlwZUVycm9yYCAgICAgICAgIHwgOmV4YzpgQnJva2VuUGlwZUVycm9yYCAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfQ2hpbGRQcm9jZXNzRXJyb3JgICAgICAgIHwgOmV4YzpgQ2hpbGRQcm9jZXNzRXJyb3JgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfQ29ubmVjdGlvbkVycm9yYCAgICAgICAgIHwgOmV4YzpgQ29ubmVjdGlvbkVycm9yYCAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfQ29ubmVjdGlvbkFib3J0ZWRFcnJvcmAgIHwgOmV4YzpgQ29ubmVjdGlvbkFib3J0ZWRFcnJvcmAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfQ29ubmVjdGlvblJlZnVzZWRFcnJvcmAgIHwgOmV4YzpgQ29ubmVjdGlvblJlZnVzZWRFcnJvcmAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfQ29ubmVjdGlvblJlc2V0RXJyb3JgICAgIHwgOmV4YzpgQ29ubmVjdGlvblJlc2V0RXJyb3JgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfRmlsZUV4aXN0c0Vycm9yYCAgICAgICAgIHwgOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfRmlsZU5vdEZvdW5kRXJyb3JgICAgICAgIHwgOmV4YzpgRmlsZU5vdEZvdW5kRXJyb3JgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfRU9GRXJyb3JgICAgICAgICAgICAgICAgIHwgOmV4YzpgRU9GRXJyb3JgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yYCAgICAgIHwgOmV4YzpgRmxvYXRpbmdQb2ludEVycm9yYCAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfSW1wb3J0RXJyb3JgICAgICAgICAgICAgIHwgOmV4YzpgSW1wb3J0RXJyb3JgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfSW5kZXhFcnJvcmAgICAgICAgICAgICAgIHwgOmV4YzpgSW5kZXhFcnJvcmAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfSW50ZXJydXB0ZWRFcnJvcmAgICAgICAgIHwgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfSXNBRGlyZWN0b3J5RXJyb3JgICAgICAgIHwgOmV4YzpgSXNBRGlyZWN0b3J5RXJyb3JgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfS2V5RXJyb3JgICAgICAgICAgICAgICAgIHwgOmV4YzpgS2V5RXJyb3JgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHRgICAgICAgIHwgOmV4YzpgS2V5Ym9hcmRJbnRlcnJ1cHRgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfTWVtb3J5RXJyb3JgICAgICAgICAgICAgIHwgOmV4YzpgTWVtb3J5RXJyb3JgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfTmFtZUVycm9yYCAgICAgICAgICAgICAgIHwgOmV4YzpgTmFtZUVycm9yYCAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfTm90QURpcmVjdG9yeUVycm9yYCAgICAgIHwgOmV4YzpgTm90QURpcmVjdG9yeUVycm9yYCAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcmAgICAgIHwgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfT1NFcnJvcmAgICAgICAgICAgICAgICAgIHwgOmV4YzpgT1NFcnJvcmAgICAgICAgICAgICAgICAgICB8IFwoMSkgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfT3ZlcmZsb3dFcnJvcmAgICAgICAgICAgIHwgOmV4YzpgT3ZlcmZsb3dFcnJvcmAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfUGVybWlzc2lvbkVycm9yYCAgICAgICAgIHwgOmV4YzpgUGVybWlzc2lvbkVycm9yYCAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfUHJvY2Vzc0xvb2t1cEVycm9yYCAgICAgIHwgOmV4YzpgUHJvY2Vzc0xvb2t1cEVycm9yYCAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfUmVmZXJlbmNlRXJyb3JgICAgICAgICAgIHwgOmV4YzpgUmVmZXJlbmNlRXJyb3JgICAgICAgICAgICB8IFwoMikgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfUnVudGltZUVycm9yYCAgICAgICAgICAgIHwgOmV4YzpgUnVudGltZUVycm9yYCAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfU3ludGF4RXJyb3JgICAgICAgICAgICAgIHwgOmV4YzpgU3ludGF4RXJyb3JgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfU3lzdGVtRXJyb3JgICAgICAgICAgICAgIHwgOmV4YzpgU3lzdGVtRXJyb3JgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfVGltZW91dEVycm9yYCAgICAgICAgICAgIHwgOmV4YzpgVGltZW91dEVycm9yYCAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfU3lzdGVtRXhpdGAgICAgICAgICAgICAgIHwgOmV4YzpgU3lzdGVtRXhpdGAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfVHlwZUVycm9yYCAgICAgICAgICAgICAgIHwgOmV4YzpgVHlwZUVycm9yYCAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfVmFsdWVFcnJvcmAgICAgICAgICAgICAgIHwgOmV4YzpgVmFsdWVFcnJvcmAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3JgICAgICAgIHwgOmV4YzpgWmVyb0RpdmlzaW9uRXJyb3JgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICA6YzpkYXRhOmBQeUV4Y19CbG9ja2luZ0lPRXJyb3JgLCA6YzpkYXRhOmBQeUV4Y19Ccm9rZW5QaXBlRXJyb3JgLAorICAgOmM6ZGF0YTpgUHlFeGNfQ2hpbGRQcm9jZXNzRXJyb3JgLCA6YzpkYXRhOmBQeUV4Y19Db25uZWN0aW9uRXJyb3JgLAorICAgOmM6ZGF0YTpgUHlFeGNfQ29ubmVjdGlvbkFib3J0ZWRFcnJvcmAsIDpjOmRhdGE6YFB5RXhjX0Nvbm5lY3Rpb25SZWZ1c2VkRXJyb3JgLAorICAgOmM6ZGF0YTpgUHlFeGNfQ29ubmVjdGlvblJlc2V0RXJyb3JgLCA6YzpkYXRhOmBQeUV4Y19GaWxlRXhpc3RzRXJyb3JgLAorICAgOmM6ZGF0YTpgUHlFeGNfRmlsZU5vdEZvdW5kRXJyb3JgLCA6YzpkYXRhOmBQeUV4Y19JbnRlcnJ1cHRlZEVycm9yYCwKKyAgIDpjOmRhdGE6YFB5RXhjX0lzQURpcmVjdG9yeUVycm9yYCwgOmM6ZGF0YTpgUHlFeGNfTm90QURpcmVjdG9yeUVycm9yYCwKKyAgIDpjOmRhdGE6YFB5RXhjX1Blcm1pc3Npb25FcnJvcmAsIDpjOmRhdGE6YFB5RXhjX1Byb2Nlc3NMb29rdXBFcnJvcmAKKyAgIGFuZCA6YzpkYXRhOmBQeUV4Y19UaW1lb3V0RXJyb3JgIHdlcmUgaW50cm9kdWNlZCBmb2xsb3dpbmcgOnBlcDpgMzE1MWAuCisKKworVGhlc2UgYXJlIGNvbXBhdGliaWxpdHkgYWxpYXNlcyB0byA6YzpkYXRhOmBQeUV4Y19PU0Vycm9yYDoKKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgQyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICB8CisrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09KworfCA6YzpkYXRhOmBQeUV4Y19FbnZpcm9ubWVudEVycm9yYCAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0lPRXJyb3JgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfV2luZG93c0Vycm9yYCAgICAgICAgfCBcKDMpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgVGhlc2UgYWxpYXNlcyB1c2VkIHRvIGJlIHNlcGFyYXRlIGV4Y2VwdGlvbiB0eXBlcy4KKwogCiAuLiBpbmRleDo6CiAgICBzaW5nbGU6IFB5RXhjX0Jhc2VFeGNlcHRpb24KQEAgLTY0OSwyOCArNzQ3LDQyIEBACiAgICBzaW5nbGU6IFB5RXhjX0xvb2t1cEVycm9yCiAgICBzaW5nbGU6IFB5RXhjX0Fzc2VydGlvbkVycm9yCiAgICBzaW5nbGU6IFB5RXhjX0F0dHJpYnV0ZUVycm9yCisgICBzaW5nbGU6IFB5RXhjX0Jsb2NraW5nSU9FcnJvcgorICAgc2luZ2xlOiBQeUV4Y19Ccm9rZW5QaXBlRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfQ29ubmVjdGlvbkVycm9yCisgICBzaW5nbGU6IFB5RXhjX0Nvbm5lY3Rpb25BYm9ydGVkRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfQ29ubmVjdGlvblJlZnVzZWRFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19Db25uZWN0aW9uUmVzZXRFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19FT0ZFcnJvcgotICAgc2luZ2xlOiBQeUV4Y19FbnZpcm9ubWVudEVycm9yCisgICBzaW5nbGU6IFB5RXhjX0ZpbGVFeGlzdHNFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19GaWxlTm90Rm91bmRFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19GbG9hdGluZ1BvaW50RXJyb3IKLSAgIHNpbmdsZTogUHlFeGNfSU9FcnJvcgogICAgc2luZ2xlOiBQeUV4Y19JbXBvcnRFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19JbmRleEVycm9yCisgICBzaW5nbGU6IFB5RXhjX0ludGVycnVwdGVkRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfSXNBRGlyZWN0b3J5RXJyb3IKICAgIHNpbmdsZTogUHlFeGNfS2V5RXJyb3IKICAgIHNpbmdsZTogUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQKICAgIHNpbmdsZTogUHlFeGNfTWVtb3J5RXJyb3IKICAgIHNpbmdsZTogUHlFeGNfTmFtZUVycm9yCisgICBzaW5nbGU6IFB5RXhjX05vdEFEaXJlY3RvcnlFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yCiAgICBzaW5nbGU6IFB5RXhjX09TRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfT3ZlcmZsb3dFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19QZXJtaXNzaW9uRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfUHJvY2Vzc0xvb2t1cEVycm9yCiAgICBzaW5nbGU6IFB5RXhjX1JlZmVyZW5jZUVycm9yCiAgICBzaW5nbGU6IFB5RXhjX1J1bnRpbWVFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19TeW50YXhFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19TeXN0ZW1FcnJvcgogICAgc2luZ2xlOiBQeUV4Y19TeXN0ZW1FeGl0CisgICBzaW5nbGU6IFB5RXhjX1RpbWVvdXRFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19UeXBlRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfVmFsdWVFcnJvcgotICAgc2luZ2xlOiBQeUV4Y19XaW5kb3dzRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfRW52aXJvbm1lbnRFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19JT0Vycm9yCisgICBzaW5nbGU6IFB5RXhjX1dpbmRvd3NFcnJvcgogCiBOb3RlczoKIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2Z1bmN0aW9uLnJzdCBiL0RvYy9jLWFwaS9mdW5jdGlvbi5yc3QKaW5kZXggMzE4MDVmZC4uYWQ5ODMyMiAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2Z1bmN0aW9uLnJzdAorKysgYi9Eb2MvYy1hcGkvZnVuY3Rpb24ucnN0CkBAIC0zOCw2ICszOCwxNiBAQAogICAgb2JqZWN0LCB0aGUgYXJndW1lbnQgZGVmYXVsdHMgYW5kIGNsb3N1cmUgYXJlIHNldCB0byAqTlVMTCouCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZShQeU9iamVjdCAqY29kZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpxdWFsbmFtZSkKKworICAgQXMgOmM6ZnVuYzpgUHlGdW5jdGlvbl9OZXdgLCBidXQgYWxzbyBhbGxvd3MgdG8gc2V0IHRoZSBmdW5jdGlvbiBvYmplY3QncworICAgYGBfX3F1YWxuYW1lX19gYCBhdHRyaWJ1dGUuICAqcXVhbG5hbWUqIHNob3VsZCBiZSBhIHVuaWNvZGUgb2JqZWN0IG9yIE5VTEw7CisgICBpZiBOVUxMLCB0aGUgYGBfX3F1YWxuYW1lX19gYCBhdHRyaWJ1dGUgaXMgc2V0IHRvIHRoZSBzYW1lIHZhbHVlIGFzIGl0cworICAgYGBfX25hbWVfX2BgIGF0dHJpYnV0ZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUZ1bmN0aW9uX0dldENvZGUoUHlPYmplY3QgKm9wKQogCiAgICBSZXR1cm4gdGhlIGNvZGUgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgZnVuY3Rpb24gb2JqZWN0ICpvcCouCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvaW1wb3J0LnJzdCBiL0RvYy9jLWFwaS9pbXBvcnQucnN0CmluZGV4IGNmNDgzNjMuLjI3MDE1MmUgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9pbXBvcnQucnN0CisrKyBiL0RvYy9jLWFwaS9pbXBvcnQucnN0CkBAIC0zMCwxMyArMzAsMTMgQEAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKGNvbnN0IGNoYXIgKm5hbWUpCiAKLSAgIFRoaXMgdmVyc2lvbiBvZiA6YzpmdW5jOmBQeUltcG9ydF9JbXBvcnRNb2R1bGVgIGRvZXMgbm90IGJsb2NrLiBJdCdzIGludGVuZGVkCi0gICB0byBiZSB1c2VkIGluIEMgZnVuY3Rpb25zIHRoYXQgaW1wb3J0IG90aGVyIG1vZHVsZXMgdG8gZXhlY3V0ZSBhIGZ1bmN0aW9uLgotICAgVGhlIGltcG9ydCBtYXkgYmxvY2sgaWYgYW5vdGhlciB0aHJlYWQgaG9sZHMgdGhlIGltcG9ydCBsb2NrLiBUaGUgZnVuY3Rpb24KLSAgIDpjOmZ1bmM6YFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2tgIG5ldmVyIGJsb2Nrcy4gSXQgZmlyc3QgdHJpZXMgdG8gZmV0Y2gKLSAgIHRoZSBtb2R1bGUgZnJvbSBzeXMubW9kdWxlcyBhbmQgZmFsbHMgYmFjayB0byA6YzpmdW5jOmBQeUltcG9ydF9JbXBvcnRNb2R1bGVgCi0gICB1bmxlc3MgdGhlIGxvY2sgaXMgaGVsZCwgaW4gd2hpY2ggY2FzZSB0aGUgZnVuY3Rpb24gd2lsbCByYWlzZSBhbgotICAgOmV4YzpgSW1wb3J0RXJyb3JgLgorICAgVGhpcyBmdW5jdGlvbiBpcyBhIGRlcHJlY2F0ZWQgYWxpYXMgb2YgOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0TW9kdWxlYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gdXNlZCB0byBmYWlsIGltbWVkaWF0ZWx5IHdoZW4gdGhlIGltcG9ydCBsb2NrIHdhcyBoZWxkCisgICAgICBieSBhbm90aGVyIHRocmVhZC4gIEluIFB5dGhvbiAzLjMgdGhvdWdoLCB0aGUgbG9ja2luZyBzY2hlbWUgc3dpdGNoZWQKKyAgICAgIHRvIHBlci1tb2R1bGUgbG9ja3MgZm9yIG1vc3QgcHVycG9zZXMsIHNvIHRoaXMgZnVuY3Rpb24ncyBzcGVjaWFsCisgICAgICBiZWhhdmlvdXIgaXNuJ3QgbmVlZGVkIGFueW1vcmUuCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9JbXBvcnRNb2R1bGVFeChjaGFyICpuYW1lLCBQeU9iamVjdCAqZ2xvYmFscywgUHlPYmplY3QgKmxvY2FscywgUHlPYmplY3QgKmZyb21saXN0KQpAQCAtNDQsOCArNDQsNyBAQAogICAgLi4gaW5kZXg6OiBidWlsdGluOiBfX2ltcG9ydF9fCiAKICAgIEltcG9ydCBhIG1vZHVsZS4gIFRoaXMgaXMgYmVzdCBkZXNjcmliZWQgYnkgcmVmZXJyaW5nIHRvIHRoZSBidWlsdC1pbiBQeXRob24KLSAgIGZ1bmN0aW9uIDpmdW5jOmBfX2ltcG9ydF9fYCwgYXMgdGhlIHN0YW5kYXJkIDpmdW5jOmBfX2ltcG9ydF9fYCBmdW5jdGlvbiBjYWxscwotICAgdGhpcyBmdW5jdGlvbiBkaXJlY3RseS4KKyAgIGZ1bmN0aW9uIDpmdW5jOmBfX2ltcG9ydF9fYC4KIAogICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIG5ldyByZWZlcmVuY2UgdG8gdGhlIGltcG9ydGVkIG1vZHVsZSBvciB0b3AtbGV2ZWwKICAgIHBhY2thZ2UsIG9yICpOVUxMKiB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQgb24gZmFpbHVyZS4gIExpa2UgZm9yCkBAIC01Nyw3ICs1Niw3IEBACiAgICA6YzpmdW5jOmBQeUltcG9ydF9JbXBvcnRNb2R1bGVgLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwoY2hhciAqbmFtZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpsb2NhbHMsIFB5T2JqZWN0ICpmcm9tbGlzdCwgaW50IGxldmVsKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpsb2NhbHMsIFB5T2JqZWN0ICpmcm9tbGlzdCwgaW50IGxldmVsKQogCiAgICBJbXBvcnQgYSBtb2R1bGUuICBUaGlzIGlzIGJlc3QgZGVzY3JpYmVkIGJ5IHJlZmVycmluZyB0byB0aGUgYnVpbHQtaW4gUHl0aG9uCiAgICBmdW5jdGlvbiA6ZnVuYzpgX19pbXBvcnRfX2AsIGFzIHRoZSBzdGFuZGFyZCA6ZnVuYzpgX19pbXBvcnRfX2AgZnVuY3Rpb24gY2FsbHMKQEAgLTY4LDYgKzY3LDE2IEBACiAgICB0aGUgcmV0dXJuIHZhbHVlIHdoZW4gYSBzdWJtb2R1bGUgb2YgYSBwYWNrYWdlIHdhcyByZXF1ZXN0ZWQgaXMgbm9ybWFsbHkgdGhlCiAgICB0b3AtbGV2ZWwgcGFja2FnZSwgdW5sZXNzIGEgbm9uLWVtcHR5ICpmcm9tbGlzdCogd2FzIGdpdmVuLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLCBQeU9iamVjdCAqZnJvbWxpc3QsIGludCBsZXZlbCkKKworICAgU2ltaWxhciB0byA6YzpmdW5jOmBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdGAsIGJ1dCB0aGUgbmFtZSBpcyBhbgorICAgVVRGLTggZW5jb2RlZCBzdHJpbmcgaW5zdGVhZCBvZiBhIFVuaWNvZGUgb2JqZWN0LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgTmVnYXRpdmUgdmFsdWVzIGZvciAqbGV2ZWwqIGFyZSBubyBsb25nZXIgYWNjZXB0ZWQuCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlJbXBvcnRfSW1wb3J0KFB5T2JqZWN0ICpuYW1lKQogCkBAIC04Niw3ICs5NSw3IEBACiAgICBhbiBleGNlcHRpb24gc2V0IG9uIGZhaWx1cmUgKHRoZSBtb2R1bGUgc3RpbGwgZXhpc3RzIGluIHRoaXMgY2FzZSkuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9BZGRNb2R1bGUoY29uc3QgY2hhciAqbmFtZSkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KFB5T2JqZWN0ICpuYW1lKQogCiAgICBSZXR1cm4gdGhlIG1vZHVsZSBvYmplY3QgY29ycmVzcG9uZGluZyB0byBhIG1vZHVsZSBuYW1lLiAgVGhlICpuYW1lKiBhcmd1bWVudAogICAgbWF5IGJlIG9mIHRoZSBmb3JtIGBgcGFja2FnZS5tb2R1bGVgYC4gRmlyc3QgY2hlY2sgdGhlIG1vZHVsZXMgZGljdGlvbmFyeSBpZgpAQCAtMTAwLDYgKzEwOSwxNCBAQAogICAgICAgb3Igb25lIG9mIGl0cyB2YXJpYW50cyB0byBpbXBvcnQgYSBtb2R1bGUuICBQYWNrYWdlIHN0cnVjdHVyZXMgaW1wbGllZCBieSBhCiAgICAgICBkb3R0ZWQgbmFtZSBmb3IgKm5hbWUqIGFyZSBub3QgY3JlYXRlZCBpZiBub3QgYWxyZWFkeSBwcmVzZW50LgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0FkZE1vZHVsZShjb25zdCBjaGFyICpuYW1lKQorCisgICBTaW1pbGFyIHRvIDpjOmZ1bmM6YFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdGAsIGJ1dCB0aGUgbmFtZSBpcyBhIFVURi04CisgICBlbmNvZGVkIHN0cmluZyBpbnN0ZWFkIG9mIGEgVW5pY29kZSBvYmplY3QuCisKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZShjaGFyICpuYW1lLCBQeU9iamVjdCAqY28pCiAKQEAgLTEzNiwyNSArMTUzLDQzIEBACiAgICBTZWUgYWxzbyA6YzpmdW5jOmBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXNgLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpjbywgY2hhciAqcGF0aG5hbWUsIGNoYXIgKmNwYXRobmFtZSkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3QoUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpjbywgUHlPYmplY3QgKnBhdGhuYW1lLCBQeU9iamVjdCAqY3BhdGhuYW1lKQogCiAgICBMaWtlIDpjOmZ1bmM6YFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXhgLCBidXQgdGhlIDphdHRyOmBfX2NhY2hlZF9fYAogICAgYXR0cmlidXRlIG9mIHRoZSBtb2R1bGUgb2JqZWN0IGlzIHNldCB0byAqY3BhdGhuYW1lKiBpZiBpdCBpcwogICAgbm9uLWBgTlVMTGBgLiAgT2YgdGhlIHRocmVlIGZ1bmN0aW9ucywgdGhpcyBpcyB0aGUgcHJlZmVycmVkIG9uZSB0byB1c2UuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpjbywgY2hhciAqcGF0aG5hbWUsIGNoYXIgKmNwYXRobmFtZSkKKworICAgTGlrZSA6YzpmdW5jOmBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdGAsIGJ1dCAqbmFtZSosICpwYXRobmFtZSogYW5kCisgICAqY3BhdGhuYW1lKiBhcmUgVVRGLTggZW5jb2RlZCBzdHJpbmdzLiBBdHRlbXB0cyBhcmUgYWxzbyBtYWRlIHRvIGZpZ3VyZSBvdXQKKyAgIHdoYXQgdGhlIHZhbHVlIGZvciAqcGF0aG5hbWUqIHNob3VsZCBiZSBmcm9tICpjcGF0aG5hbWUqIGlmIHRoZSBmb3JtZXIgaXMKKyAgIHNldCB0byBgYE5VTExgYC4KKwogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVXNlcyA6ZnVuYzpgaW1wLnNvdXJjZV9mcm9tX2NhY2hlKClgIGluIGNhbGN1bGF0aW5nIHRoZSBzb3VyY2UgcGF0aCBpZgorICAgICAgb25seSB0aGUgYnl0ZWNvZGUgcGF0aCBpcyBwcm92aWRlZC4KKwogCiAuLiBjOmZ1bmN0aW9uOjogbG9uZyBQeUltcG9ydF9HZXRNYWdpY051bWJlcigpCiAKICAgIFJldHVybiB0aGUgbWFnaWMgbnVtYmVyIGZvciBQeXRob24gYnl0ZWNvZGUgZmlsZXMgKGEuay5hLiA6ZmlsZTpgLnB5Y2AgYW5kCiAgICA6ZmlsZTpgLnB5b2AgZmlsZXMpLiAgVGhlIG1hZ2ljIG51bWJlciBzaG91bGQgYmUgcHJlc2VudCBpbiB0aGUgZmlyc3QgZm91ciBieXRlcwotICAgb2YgdGhlIGJ5dGVjb2RlIGZpbGUsIGluIGxpdHRsZS1lbmRpYW4gYnl0ZSBvcmRlci4KKyAgIG9mIHRoZSBieXRlY29kZSBmaWxlLCBpbiBsaXR0bGUtZW5kaWFuIGJ5dGUgb3JkZXIuIFJldHVybnMgLTEgb24gZXJyb3IuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZXR1cm4gdmFsdWUgb2YgLTEgdXBvbiBmYWlsdXJlLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBjb25zdCBjaGFyICogUHlJbXBvcnRfR2V0TWFnaWNUYWcoKQogCiAgICBSZXR1cm4gdGhlIG1hZ2ljIHRhZyBzdHJpbmcgZm9yIDpwZXA6YDMxNDdgIGZvcm1hdCBQeXRob24gYnl0ZWNvZGUgZmlsZQotICAgbmFtZXMuCisgICBuYW1lcy4gIEtlZXAgaW4gbWluZCB0aGF0IHRoZSB2YWx1ZSBhdCBgYHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgYCBpcworICAgYXV0aG9yaXRhdGl2ZSBhbmQgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGlzIGZ1bmN0aW9uLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIApAQCAtMjAwLDcgKzIzNSw3IEBACiAgICBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuCiAKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUoY2hhciAqbmFtZSkKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlT2JqZWN0KFB5T2JqZWN0ICpuYW1lKQogCiAgICBMb2FkIGEgZnJvemVuIG1vZHVsZSBuYW1lZCAqbmFtZSouICBSZXR1cm4gYGAxYGAgZm9yIHN1Y2Nlc3MsIGBgMGBgIGlmIHRoZQogICAgbW9kdWxlIGlzIG5vdCBmb3VuZCwgYW5kIGBgLTFgYCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQgaWYgdGhlIGluaXRpYWxpemF0aW9uCkBAIC0yMDgsNiArMjQzLDE0IEBACiAgICA6YzpmdW5jOmBQeUltcG9ydF9JbXBvcnRNb2R1bGVgLiAgKE5vdGUgdGhlIG1pc25vbWVyIC0tLSB0aGlzIGZ1bmN0aW9uIHdvdWxkCiAgICByZWxvYWQgdGhlIG1vZHVsZSBpZiBpdCB3YXMgYWxyZWFkeSBpbXBvcnRlZC4pCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlKGNoYXIgKm5hbWUpCisKKyAgIFNpbWlsYXIgdG8gOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlT2JqZWN0YCwgYnV0IHRoZSBuYW1lIGlzIGEKKyAgIFVURi04IGVuY29kZWQgc3RyaW5nIGluc3RlYWQgb2YgYSBVbmljb2RlIG9iamVjdC4KKwogCiAuLiBjOnR5cGU6OiBzdHJ1Y3QgX2Zyb3plbgogCkBAIC0yNDcsMTMgKzI5MCwxMyBAQAogCiAgICBTdHJ1Y3R1cmUgZGVzY3JpYmluZyBhIHNpbmdsZSBlbnRyeSBpbiB0aGUgbGlzdCBvZiBidWlsdC1pbiBtb2R1bGVzLiAgRWFjaCBvZgogICAgdGhlc2Ugc3RydWN0dXJlcyBnaXZlcyB0aGUgbmFtZSBhbmQgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gZm9yIGEgbW9kdWxlIGJ1aWx0Ci0gICBpbnRvIHRoZSBpbnRlcnByZXRlci4gIFByb2dyYW1zIHdoaWNoIGVtYmVkIFB5dGhvbiBtYXkgdXNlIGFuIGFycmF5IG9mIHRoZXNlCi0gICBzdHJ1Y3R1cmVzIGluIGNvbmp1bmN0aW9uIHdpdGggOmM6ZnVuYzpgUHlJbXBvcnRfRXh0ZW5kSW5pdHRhYmAgdG8gcHJvdmlkZQotICAgYWRkaXRpb25hbCBidWlsdC1pbiBtb2R1bGVzLiAgVGhlIHN0cnVjdHVyZSBpcyBkZWZpbmVkIGluCi0gICA6ZmlsZTpgSW5jbHVkZS9pbXBvcnQuaGAgYXM6OgorICAgaW50byB0aGUgaW50ZXJwcmV0ZXIuICBUaGUgbmFtZSBpcyBhbiBBU0NJSSBlbmNvZGVkIHN0cmluZy4gIFByb2dyYW1zIHdoaWNoCisgICBlbWJlZCBQeXRob24gbWF5IHVzZSBhbiBhcnJheSBvZiB0aGVzZSBzdHJ1Y3R1cmVzIGluIGNvbmp1bmN0aW9uIHdpdGgKKyAgIDpjOmZ1bmM6YFB5SW1wb3J0X0V4dGVuZEluaXR0YWJgIHRvIHByb3ZpZGUgYWRkaXRpb25hbCBidWlsdC1pbiBtb2R1bGVzLgorICAgVGhlIHN0cnVjdHVyZSBpcyBkZWZpbmVkIGluIDpmaWxlOmBJbmNsdWRlL2ltcG9ydC5oYCBhczo6CiAKICAgICAgIHN0cnVjdCBfaW5pdHRhYiB7Ci0gICAgICAgICAgY2hhciAqbmFtZTsKKyAgICAgICAgICBjaGFyICpuYW1lOyAgICAgICAgICAgICAgICAgLyogQVNDSUkgZW5jb2RlZCBzdHJpbmcgKi8KICAgICAgICAgICBQeU9iamVjdCogKCppbml0ZnVuYykodm9pZCk7CiAgICAgICB9OwogCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvaW5kZXgucnN0IGIvRG9jL2MtYXBpL2luZGV4LnJzdAppbmRleCAyY2U3Yjk4Li41OTExMzZlIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvaW5kZXgucnN0CisrKyBiL0RvYy9jLWFwaS9pbmRleC5yc3QKQEAgLTIyLDMgKzIyLDUgQEAKICAgIGluaXQucnN0CiAgICBtZW1vcnkucnN0CiAgICBvYmppbXBsLnJzdAorICAgc3RhYmxlLnJzdAorICAgYXBpYWJpdmVyc2lvbi5yc3QKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbml0LnJzdCBiL0RvYy9jLWFwaS9pbml0LnJzdAppbmRleCA3NTA3ZTNiLi45NWZmNGVlIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvaW5pdC5yc3QKKysrIGIvRG9jL2MtYXBpL2luaXQucnN0CkBAIC02NDYsNyArNjQ2LDcgQEAKICAgIDpjOmZ1bmM6YFB5R0lMU3RhdGVfUmVsZWFzZWAgb24gdGhlIHNhbWUgdGhyZWFkLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeVRocmVhZFN0YXRlIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkKKy4uIGM6ZnVuY3Rpb246OiBQeVRocmVhZFN0YXRlKiBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpCiAKICAgIEdldCB0aGUgY3VycmVudCB0aHJlYWQgc3RhdGUgZm9yIHRoaXMgdGhyZWFkLiAgTWF5IHJldHVybiBgYE5VTExgYCBpZiBubwogICAgR0lMU3RhdGUgQVBJIGhhcyBiZWVuIHVzZWQgb24gdGhlIGN1cnJlbnQgdGhyZWFkLiAgTm90ZSB0aGF0IHRoZSBtYWluIHRocmVhZApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2xpc3QucnN0IGIvRG9jL2MtYXBpL2xpc3QucnN0CmluZGV4IGZlYjkwMTUuLjViMjYzYTcgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9saXN0LnJzdAorKysgYi9Eb2MvYy1hcGkvbGlzdC5yc3QKQEAgLTE0MiwzICsxNDIsMTAgQEAKIAogICAgUmV0dXJuIGEgbmV3IHR1cGxlIG9iamVjdCBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiAqbGlzdCo7IGVxdWl2YWxlbnQgdG8KICAgIGBgdHVwbGUobGlzdClgYC4KKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5TGlzdF9DbGVhckZyZWVMaXN0KCkKKworICAgQ2xlYXIgdGhlIGZyZWUgbGlzdC4gUmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgZnJlZWQgaXRlbXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2xvbmcucnN0IGIvRG9jL2MtYXBpL2xvbmcucnN0CmluZGV4IDcyYmUwMTcuLmQ1NDMwZmQgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9sb25nLnJzdAorKysgYi9Eb2MvYy1hcGkvbG9uZy5yc3QKQEAgLTEwMCw2ICsxMDAsMjAgQEAKICAgIHN0cmluZyBpcyBmaXJzdCBlbmNvZGVkIHRvIGEgYnl0ZSBzdHJpbmcgdXNpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZURlY2ltYWxgCiAgICBhbmQgdGhlbiBjb252ZXJ0ZWQgdXNpbmcgOmM6ZnVuYzpgUHlMb25nX0Zyb21TdHJpbmdgLgogCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlMb25nX0Zyb21Vbmljb2RlT2JqZWN0YC4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TG9uZ19Gcm9tVW5pY29kZU9iamVjdChQeU9iamVjdCAqdSwgaW50IGJhc2UpCisKKyAgIENvbnZlcnQgYSBzZXF1ZW5jZSBvZiBVbmljb2RlIGRpZ2l0cyBpbiB0aGUgc3RyaW5nICp1KiB0byBhIFB5dGhvbiBpbnRlZ2VyCisgICB2YWx1ZS4gIFRoZSBVbmljb2RlIHN0cmluZyBpcyBmaXJzdCBlbmNvZGVkIHRvIGEgYnl0ZSBzdHJpbmcgdXNpbmcKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsYCBhbmQgdGhlbiBjb252ZXJ0ZWQgdXNpbmcKKyAgIDpjOmZ1bmM6YFB5TG9uZ19Gcm9tU3RyaW5nYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbVZvaWRQdHIodm9pZCAqcCkKIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL21lbW9yeXZpZXcucnN0IGIvRG9jL2MtYXBpL21lbW9yeXZpZXcucnN0CmluZGV4IDZiNDljZGYuLjVlNTA5NzcgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9tZW1vcnl2aWV3LnJzdAorKysgYi9Eb2MvYy1hcGkvbWVtb3J5dmlldy5yc3QKQEAgLTE3LDE2ICsxNywyMSBAQAogCiAgICBDcmVhdGUgYSBtZW1vcnl2aWV3IG9iamVjdCBmcm9tIGFuIG9iamVjdCB0aGF0IHByb3ZpZGVzIHRoZSBidWZmZXIgaW50ZXJmYWNlLgogICAgSWYgKm9iaiogc3VwcG9ydHMgd3JpdGFibGUgYnVmZmVyIGV4cG9ydHMsIHRoZSBtZW1vcnl2aWV3IG9iamVjdCB3aWxsIGJlCi0gICByZWFkYWJsZSBhbmQgd3JpdGFibGUsIG90aGVyd2lzZSBpdCB3aWxsIGJlIHJlYWQtb25seS4KKyAgIHJlYWQvd3JpdGUsIG90aGVyd2lzZSBpdCBtYXkgYmUgZWl0aGVyIHJlYWQtb25seSBvciByZWFkL3dyaXRlIGF0IHRoZQorICAgZGlzY3JldGlvbiBvZiB0aGUgZXhwb3J0ZXIuCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCAqUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnkoY2hhciAqbWVtLCBQeV9zc2l6ZV90IHNpemUsIGludCBmbGFncykKKworICAgQ3JlYXRlIGEgbWVtb3J5dmlldyBvYmplY3QgdXNpbmcgKm1lbSogYXMgdGhlIHVuZGVybHlpbmcgYnVmZmVyLgorICAgKmZsYWdzKiBjYW4gYmUgb25lIG9mIDpjOm1hY3JvOmBQeUJVRl9SRUFEYCBvciA6YzptYWNybzpgUHlCVUZfV1JJVEVgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0ICpQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcihQeV9idWZmZXIgKnZpZXcpCiAKICAgIENyZWF0ZSBhIG1lbW9yeXZpZXcgb2JqZWN0IHdyYXBwaW5nIHRoZSBnaXZlbiBidWZmZXIgc3RydWN0dXJlICp2aWV3Ki4KLSAgIFRoZSBtZW1vcnl2aWV3IG9iamVjdCB0aGVuIG93bnMgdGhlIGJ1ZmZlciByZXByZXNlbnRlZCBieSAqdmlldyosIHdoaWNoCi0gICBtZWFucyB5b3Ugc2hvdWxkbid0IHRyeSB0byBjYWxsIDpjOmZ1bmM6YFB5QnVmZmVyX1JlbGVhc2VgIHlvdXJzZWxmOiBpdAotICAgd2lsbCBiZSBkb25lIG9uIGRlYWxsb2NhdGlvbiBvZiB0aGUgbWVtb3J5dmlldyBvYmplY3QuCi0KKyAgIEZvciBzaW1wbGUgYnl0ZSBidWZmZXJzLCA6YzpmdW5jOmBQeU1lbW9yeVZpZXdfRnJvbU1lbW9yeWAgaXMgdGhlIHByZWZlcnJlZAorICAgZnVuY3Rpb24uCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCAqUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMoUHlPYmplY3QgKm9iaiwgaW50IGJ1ZmZlcnR5cGUsIGNoYXIgb3JkZXIpCiAKQEAgLTQzLDEwICs0OCwxNiBAQAogICAgY3VycmVudGx5IGFsbG93ZWQgdG8gY3JlYXRlIHN1YmNsYXNzZXMgb2YgOmNsYXNzOmBtZW1vcnl2aWV3YC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlfYnVmZmVyICpQeU1lbW9yeVZpZXdfR0VUX0JVRkZFUihQeU9iamVjdCAqb2JqKQorLi4gYzpmdW5jdGlvbjo6IFB5X2J1ZmZlciAqUHlNZW1vcnlWaWV3X0dFVF9CVUZGRVIoUHlPYmplY3QgKm12aWV3KQogCi0gICBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBidWZmZXIgc3RydWN0dXJlIHdyYXBwZWQgYnkgdGhlIGdpdmVuCi0gICBtZW1vcnl2aWV3IG9iamVjdC4gIFRoZSBvYmplY3QgKiptdXN0KiogYmUgYSBtZW1vcnl2aWV3IGluc3RhbmNlOwotICAgdGhpcyBtYWNybyBkb2Vzbid0IGNoZWNrIGl0cyB0eXBlLCB5b3UgbXVzdCBkbyBpdCB5b3Vyc2VsZiBvciB5b3UKLSAgIHdpbGwgcmlzayBjcmFzaGVzLgorICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgbWVtb3J5dmlldydzIHByaXZhdGUgY29weSBvZiB0aGUgZXhwb3J0ZXIncyBidWZmZXIuCisgICAqbXZpZXcqICoqbXVzdCoqIGJlIGEgbWVtb3J5dmlldyBpbnN0YW5jZTsgdGhpcyBtYWNybyBkb2Vzbid0IGNoZWNrIGl0cyB0eXBlLAorICAgeW91IG11c3QgZG8gaXQgeW91cnNlbGYgb3IgeW91IHdpbGwgcmlzayBjcmFzaGVzLgorCisuLiBjOmZ1bmN0aW9uOjogUHlfYnVmZmVyICpQeU1lbW9yeVZpZXdfR0VUX0JBU0UoUHlPYmplY3QgKm12aWV3KQorCisgICBSZXR1cm4gZWl0aGVyIGEgcG9pbnRlciB0byB0aGUgZXhwb3J0aW5nIG9iamVjdCB0aGF0IHRoZSBtZW1vcnl2aWV3IGlzIGJhc2VkCisgICBvbiBvciAqTlVMTCogaWYgdGhlIG1lbW9yeXZpZXcgaGFzIGJlZW4gY3JlYXRlZCBieSBvbmUgb2YgdGhlIGZ1bmN0aW9ucworICAgOmM6ZnVuYzpgUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnlgIG9yIDpjOmZ1bmM6YFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyYC4KKyAgICptdmlldyogKiptdXN0KiogYmUgYSBtZW1vcnl2aWV3IGluc3RhbmNlLgogCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvbW9kdWxlLnJzdCBiL0RvYy9jLWFwaS9tb2R1bGUucnN0CmluZGV4IGZmZDY4ZTMuLjY1ZmY4ZmEgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9tb2R1bGUucnN0CisrKyBiL0RvYy9jLWFwaS9tb2R1bGUucnN0CkBAIC0yOSw3ICsyOSw3IEBACiAgICA6YzpkYXRhOmBQeU1vZHVsZV9UeXBlYC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TW9kdWxlX05ldyhjb25zdCBjaGFyICpuYW1lKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZV9OZXdPYmplY3QoUHlPYmplY3QgKm5hbWUpCiAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogX19uYW1lX18gKG1vZHVsZSBhdHRyaWJ1dGUpCkBAIC00MCw2ICs0MCwxNCBAQAogICAgT25seSB0aGUgbW9kdWxlJ3MgOmF0dHI6YF9fZG9jX19gIGFuZCA6YXR0cjpgX19uYW1lX19gIGF0dHJpYnV0ZXMgYXJlIGZpbGxlZCBpbjsKICAgIHRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyBhIDphdHRyOmBfX2ZpbGVfX2AgYXR0cmlidXRlLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TW9kdWxlX05ldyhjb25zdCBjaGFyICpuYW1lKQorCisgICBTaW1pbGFyIHRvIDpjOmZ1bmM6YFB5SW1wb3J0X05ld09iamVjdGAsIGJ1dCB0aGUgbmFtZSBpcyBhbiBVVEYtOCBlbmNvZGVkCisgICBzdHJpbmcgaW5zdGVhZCBvZiBhIFVuaWNvZGUgb2JqZWN0LgorCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlNb2R1bGVfR2V0RGljdChQeU9iamVjdCAqbW9kdWxlKQogCkBAIC01Miw3ICs2MCw3IEBACiAgICBtYW5pcHVsYXRlIGEgbW9kdWxlJ3MgOmF0dHI6YF9fZGljdF9fYC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogY2hhciogUHlNb2R1bGVfR2V0TmFtZShQeU9iamVjdCAqbW9kdWxlKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZV9HZXROYW1lT2JqZWN0KFB5T2JqZWN0ICptb2R1bGUpCiAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogX19uYW1lX18gKG1vZHVsZSBhdHRyaWJ1dGUpCkBAIC02MSwxNSArNjksMTMgQEAKICAgIFJldHVybiAqbW9kdWxlKidzIDphdHRyOmBfX25hbWVfX2AgdmFsdWUuICBJZiB0aGUgbW9kdWxlIGRvZXMgbm90IHByb3ZpZGUgb25lLAogICAgb3IgaWYgaXQgaXMgbm90IGEgc3RyaW5nLCA6ZXhjOmBTeXN0ZW1FcnJvcmAgaXMgcmFpc2VkIGFuZCAqTlVMTCogaXMgcmV0dXJuZWQuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCi0uLiBjOmZ1bmN0aW9uOjogY2hhciogUHlNb2R1bGVfR2V0RmlsZW5hbWUoUHlPYmplY3QgKm1vZHVsZSkKIAotICAgU2ltaWxhciB0byA6YzpmdW5jOmBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdGAgYnV0IHJldHVybiB0aGUgZmlsZW5hbWUKLSAgIGVuY29kZWQgdG8gJ3V0Zi04Jy4KKy4uIGM6ZnVuY3Rpb246OiBjaGFyKiBQeU1vZHVsZV9HZXROYW1lKFB5T2JqZWN0ICptb2R1bGUpCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjIKLSAgICAgIDpjOmZ1bmM6YFB5TW9kdWxlX0dldEZpbGVuYW1lYCByYWlzZXMgOmM6dHlwZTpgVW5pY29kZUVuY29kZUVycm9yYCBvbgotICAgICAgdW5lbmNvZGFibGUgZmlsZW5hbWVzLCB1c2UgOmM6ZnVuYzpgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3RgIGluc3RlYWQuCisgICBTaW1pbGFyIHRvIDpjOmZ1bmM6YFB5TW9kdWxlX0dldE5hbWVPYmplY3RgIGJ1dCByZXR1cm4gdGhlIG5hbWUgZW5jb2RlZCB0bworICAgYGAndXRmLTgnYGAuCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdChQeU9iamVjdCAqbW9kdWxlKQpAQCAtODEsMTEgKzg3LDIxIEBACiAgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCAqbW9kdWxlKiB3YXMgbG9hZGVkIHVzaW5nICptb2R1bGUqJ3MKICAgIDphdHRyOmBfX2ZpbGVfX2AgYXR0cmlidXRlLiAgSWYgdGhpcyBpcyBub3QgZGVmaW5lZCwgb3IgaWYgaXQgaXMgbm90IGEKICAgIHVuaWNvZGUgc3RyaW5nLCByYWlzZSA6ZXhjOmBTeXN0ZW1FcnJvcmAgYW5kIHJldHVybiAqTlVMTCo7IG90aGVyd2lzZSByZXR1cm4KLSAgIGEgcmVmZXJlbmNlIHRvIGEgOmM6dHlwZTpgUHlVbmljb2RlT2JqZWN0YC4KKyAgIGEgcmVmZXJlbmNlIHRvIGEgVW5pY29kZSBvYmplY3QuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKKy4uIGM6ZnVuY3Rpb246OiBjaGFyKiBQeU1vZHVsZV9HZXRGaWxlbmFtZShQeU9iamVjdCAqbW9kdWxlKQorCisgICBTaW1pbGFyIHRvIDpjOmZ1bmM6YFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0YCBidXQgcmV0dXJuIHRoZSBmaWxlbmFtZQorICAgZW5jb2RlZCB0byAndXRmLTgnLgorCisgICAuLiBkZXByZWNhdGVkOjogMy4yCisgICAgICA6YzpmdW5jOmBQeU1vZHVsZV9HZXRGaWxlbmFtZWAgcmFpc2VzIDpjOnR5cGU6YFVuaWNvZGVFbmNvZGVFcnJvcmAgb24KKyAgICAgIHVuZW5jb2RhYmxlIGZpbGVuYW1lcywgdXNlIDpjOmZ1bmM6YFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0YCBpbnN0ZWFkLgorCisKIC4uIGM6ZnVuY3Rpb246OiB2b2lkKiBQeU1vZHVsZV9HZXRTdGF0ZShQeU9iamVjdCAqbW9kdWxlKQogCiAgICBSZXR1cm4gdGhlICJzdGF0ZSIgb2YgdGhlIG1vZHVsZSwgdGhhdCBpcywgYSBwb2ludGVyIHRvIHRoZSBibG9jayBvZiBtZW1vcnkKQEAgLTk3LDggKzExMywyOCBAQAogCiAgICBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSA6Yzp0eXBlOmBQeU1vZHVsZURlZmAgc3RydWN0IGZyb20gd2hpY2ggdGhlIG1vZHVsZSB3YXMKICAgIGNyZWF0ZWQsIG9yICpOVUxMKiBpZiB0aGUgbW9kdWxlIHdhc24ndCBjcmVhdGVkIHdpdGgKLSAgIDpjOmZ1bmM6YFB5TW9kdWxlX0NyZWF0ZWAuCisgICA6YzpmdW5jOmBQeU1vZHVsZV9DcmVhdGVgLmkKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVN0YXRlX0ZpbmRNb2R1bGUoUHlNb2R1bGVEZWYgKmRlZikKKworICAgUmV0dXJucyB0aGUgbW9kdWxlIG9iamVjdCB0aGF0IHdhcyBjcmVhdGVkIGZyb20gKmRlZiogZm9yIHRoZSBjdXJyZW50IGludGVycHJldGVyLgorICAgVGhpcyBtZXRob2QgcmVxdWlyZXMgdGhhdCB0aGUgbW9kdWxlIG9iamVjdCBoYXMgYmVlbiBhdHRhY2hlZCB0byB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUgd2l0aAorICAgOmM6ZnVuYzpgUHlTdGF0ZV9BZGRNb2R1bGVgIGJlZm9yZWhhbmQuIEluIGNhc2UgdGhlIGNvcnJlc3BvbmRpbmcgbW9kdWxlIG9iamVjdCBpcyBub3QKKyAgIGZvdW5kIG9yIGhhcyBub3QgYmVlbiBhdHRhY2hlZCB0byB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUgeWV0LCBpdCByZXR1cm5zIE5VTEwuCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlTdGF0ZV9BZGRNb2R1bGUoUHlPYmplY3QgKm1vZHVsZSwgUHlNb2R1bGVEZWYgKmRlZikKKworICAgQXR0YWNoZXMgdGhlIG1vZHVsZSBvYmplY3QgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiB0byB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUuIFRoaXMgYWxsb3dzCisgICB0aGUgbW9kdWxlIG9iamVjdCB0byBiZSBhY2Nlc3NpYmxlIHZpYQorICAgOmM6ZnVuYzpgUHlTdGF0ZV9GaW5kTW9kdWxlYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlTdGF0ZV9SZW1vdmVNb2R1bGUoUHlNb2R1bGVEZWYgKmRlZikKKworICAgUmVtb3ZlcyB0aGUgbW9kdWxlIG9iamVjdCBjcmVhdGVkIGZyb20gKmRlZiogZnJvbSB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiBJbml0aWFsaXppbmcgQyBtb2R1bGVzCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvb2JqZWN0LnJzdCBiL0RvYy9jLWFwaS9vYmplY3QucnN0CmluZGV4IGQwZDQ1YWQuLmE0NzE4M2MgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9vYmplY3QucnN0CisrKyBiL0RvYy9jLWFwaS9vYmplY3QucnN0CkBAIC02LDYgKzYsMTkgQEAKID09PT09PT09PT09PT09PQogCiAKKy4uIGM6dmFyOjogUHlPYmplY3QqIFB5X05vdEltcGxlbWVudGVkCisKKyAgIFRoZSBgYE5vdEltcGxlbWVudGVkYGAgc2luZ2xldG9uLCB1c2VkIHRvIHNpZ25hbCB0aGF0IGFuIG9wZXJhdGlvbiBpcworICAgbm90IGltcGxlbWVudGVkIGZvciB0aGUgZ2l2ZW4gdHlwZSBjb21iaW5hdGlvbi4KKworCisuLiBjOm1hY3JvOjogUHlfUkVUVVJOX05PVElNUExFTUVOVEVECisKKyAgIFByb3Blcmx5IGhhbmRsZSByZXR1cm5pbmcgOmM6ZGF0YTpgUHlfTm90SW1wbGVtZW50ZWRgIGZyb20gd2l0aGluIGEgQworICAgZnVuY3Rpb24gKHRoYXQgaXMsIGluY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIE5vdEltcGxlbWVudGVkIGFuZAorICAgcmV0dXJuIGl0KS4KKworCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5T2JqZWN0X1ByaW50KFB5T2JqZWN0ICpvLCBGSUxFICpmcCwgaW50IGZsYWdzKQogCiAgICBQcmludCBhbiBvYmplY3QgKm8qLCBvbiBmaWxlICpmcCouICBSZXR1cm5zIGBgLTFgYCBvbiBlcnJvci4gIFRoZSBmbGFncyBhcmd1bWVudApAQCAtODgsNiArMTAxLDIyIEBACiAgICBUaGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBQeXRob24gc3RhdGVtZW50IGBgZGVsIG8uYXR0cl9uYW1lYGAuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVR5cGVfR2VuZXJpY0dldERpY3QoUHlPYmplY3QgKm8sIHZvaWQgKmNvbnRleHQpCisKKyAgIEEgZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGdldHRlciBvZiBhIGBgX19kaWN0X19gYCBkZXNjcmlwdG9yLiBJdAorICAgY3JlYXRlcyB0aGUgZGljdGlvbmFyeSBpZiBuZWNlc3NhcnkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlUeXBlX0dlbmVyaWNTZXREaWN0KFB5T2JqZWN0ICpvLCB2b2lkICpjb250ZXh0KQorCisgICBBIGdlbmVyaWMgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBzZXR0ZXIgb2YgYSBgYF9fZGljdF9fYGAgZGVzY3JpcHRvci4gVGhpcworICAgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgYWxsb3cgdGhlIGRpY3Rpb25hcnkgdG8gYmUgZGVsZXRlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU9iamVjdF9SaWNoQ29tcGFyZShQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMiwgaW50IG9waWQpCiAKICAgIENvbXBhcmUgdGhlIHZhbHVlcyBvZiAqbzEqIGFuZCAqbzIqIHVzaW5nIHRoZSBvcGVyYXRpb24gc3BlY2lmaWVkIGJ5ICpvcGlkKiwKQEAgLTEzMSwxMSArMTYwLDExIEBACiAgICBhIHN0cmluZyBzaW1pbGFyIHRvIHRoYXQgcmV0dXJuZWQgYnkgOmM6ZnVuYzpgUHlPYmplY3RfUmVwcmAgaW4gUHl0aG9uIDIuCiAgICBDYWxsZWQgYnkgdGhlIDpmdW5jOmBhc2NpaWAgYnVpbHQtaW4gZnVuY3Rpb24uCiAKKyAgIC4uIGluZGV4Ojogc3RyaW5nOyBQeU9iamVjdF9TdHIgKEMgZnVuY3Rpb24pCisKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU9iamVjdF9TdHIoUHlPYmplY3QgKm8pCiAKLSAgIC4uIGluZGV4OjogYnVpbHRpbjogc3RyCi0KICAgIENvbXB1dGUgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Ygb2JqZWN0ICpvKi4gIFJldHVybnMgdGhlIHN0cmluZwogICAgcmVwcmVzZW50YXRpb24gb24gc3VjY2VzcywgKk5VTEwqIG9uIGZhaWx1cmUuICBUaGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIHRoZQogICAgUHl0aG9uIGV4cHJlc3Npb24gYGBzdHIobylgYC4gIENhbGxlZCBieSB0aGUgOmZ1bmM6YHN0cmAgYnVpbHQtaW4gZnVuY3Rpb24KZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9zZXQucnN0IGIvRG9jL2MtYXBpL3NldC5yc3QKaW5kZXggNjZiNDdjNC4uNWYwZWY5MCAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3NldC5yc3QKKysrIGIvRG9jL2MtYXBpL3NldC5yc3QKQEAgLTE1NywzICsxNTcsMTAgQEAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlTZXRfQ2xlYXIoUHlPYmplY3QgKnNldCkKIAogICAgRW1wdHkgYW4gZXhpc3Rpbmcgc2V0IG9mIGFsbCBlbGVtZW50cy4KKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5U2V0X0NsZWFyRnJlZUxpc3QoKQorCisgICBDbGVhciB0aGUgZnJlZSBsaXN0LiBSZXR1cm4gdGhlIHRvdGFsIG51bWJlciBvZiBmcmVlZCBpdGVtcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvc3RhYmxlLnJzdCBiL0RvYy9jLWFwaS9zdGFibGUucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3YzllZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvYy1hcGkvc3RhYmxlLnJzdApAQCAtMCwwICsxLDQxIEBACisuLiBoaWdobGlnaHRsYW5nOjogYworCisuLiBfc3RhYmxlOgorCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorU3RhYmxlIEFwcGxpY2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1RyYWRpdGlvbmFsbHksIHRoZSBDIEFQSSBvZiBQeXRob24gd2lsbCBjaGFuZ2Ugd2l0aCBldmVyeSByZWxlYXNlLgorTW9zdCBjaGFuZ2VzIHdpbGwgYmUgc291cmNlLWNvbXBhdGlibGUsIHR5cGljYWxseSBieSBvbmx5IGFkZGluZyBBUEksCityYXRoZXIgdGhhbiBjaGFuZ2luZyBleGlzdGluZyBBUEkgb3IgcmVtb3ZpbmcgQVBJIChhbHRob3VnaCBzb21lCitpbnRlcmZhY2VzIGRvIGdldCByZW1vdmVkIGFmdGVyIGJlaW5nIGRlcHJlY2F0ZWQgZmlyc3QpLgorCitVbmZvcnR1bmF0ZWx5LCB0aGUgQVBJIGNvbXBhdGliaWxpdHkgZG9lcyBub3QgZXh0ZW5kIHRvIGJpbmFyeQorY29tcGF0aWJpbGl0eSAodGhlIEFCSSkuIFRoZSByZWFzb24gaXMgcHJpbWFyaWx5IHRoZSBldm9sdXRpb24gb2YKK3N0cnVjdCBkZWZpbml0aW9ucywgd2hlcmUgYWRkaXRpb24gb2YgYSBuZXcgZmllbGQsIG9yIGNoYW5naW5nCit0aGUgdHlwZSBvZiBhIGZpZWxkLCBtaWdodCBub3QgYnJlYWsgdGhlIEFQSSwgYnV0IGNhbiBicmVhayB0aGUgQUJJLgorQXMgYSBjb25zZXF1ZW5jZSwgZXh0ZW5zaW9uIG1vZHVsZXMgbmVlZCB0byBiZSByZWNvbXBpbGVkIGZvcgorZXZlcnkgUHl0aG9uIHJlbGVhc2UgKGFsdGhvdWdoIGFuIGV4Y2VwdGlvbiBpcyBwb3NzaWJsZSBvbiBVbml4Cit3aGVuIG5vbmUgb2YgdGhlIGFmZmVjdGVkIGludGVyZmFjZXMgYXJlIHVzZWQpLiBJbiBhZGRpdGlvbiwgb24KK1dpbmRvd3MsIGV4dGVuc2lvbiBtb2R1bGVzIGxpbmsgd2l0aCBhIHNwZWNpZmljIHB5dGhvblhZLmRsbCBhbmQKK25lZWQgdG8gYmUgcmVjb21waWxlZCB0byBsaW5rIHdpdGggYSBuZXdlciBvbmUuCisKK1NpbmNlIFB5dGhvbiAzLjIsIGEgc3Vic2V0IG9mIHRoZSBBUEkgaGFzIGJlZW4gZGVjbGFyZWQgdG8gZ3VhcmFudGVlCithIHN0YWJsZSBBQkkuIEV4dGVuc2lvbiBtb2R1bGVzIHdpc2hpbmcgdG8gdXNlIHRoaXMgQVBJIG5lZWQgdG8gZGVmaW5lCitgYFB5X0xJTUlURURfQVBJYGAuIEEgbnVtYmVyIG9mIGludGVycHJldGVyIGRldGFpbHMgdGhlbiBiZWNvbWUgaGlkZGVuCitmcm9tIHRoZSBleHRlbnNpb24gbW9kdWxlOyBpbiByZXR1cm4sIGEgbW9kdWxlIGlzIGJ1aWx0IHRoYXQgd29ya3MKK29uIGFueSAzLnggdmVyc2lvbiAoeD49Mikgd2l0aG91dCByZWNvbXBpbGF0aW9uLgorCitJbiBzb21lIGNhc2VzLCB0aGUgc3RhYmxlIEFCSSBuZWVkcyB0byBiZSBleHRlbmRlZCB3aXRoIG5ldyBmdW5jdGlvbnMuCitFeHRlbnNpb24gbW9kdWxlcyB3aXNoaW5nIHRvIHVzZSB0aGVzZSBuZXcgQVBJcyBuZWVkIHRvIHNldAorYGBQeV9MSU1JVEVEX0FQSWBgIHRvIHRoZSBgYFBZX1ZFUlNJT05fSEVYYGAgdmFsdWUgKHNlZQorOnJlZjpgYXBpYWJpdmVyc2lvbmApIG9mIHRoZSBtaW5pbXVtIFB5dGhvbiB2ZXJzaW9uIHRoZXkgd2FudCB0bworc3VwcG9ydCAoZS5nLiBgYDB4MDMwMzAwMDBgYCBmb3IgUHl0aG9uIDMuMykuIFN1Y2ggbW9kdWxlcyB3aWxsIHdvcmsKK29uIGFsbCBzdWJzZXF1ZW50IFB5dGhvbiByZWxlYXNlcywgYnV0IGZhaWwgdG8gbG9hZCAoYmVjYXVzZSBvZgorbWlzc2luZyBzeW1ib2xzKSBvbiB0aGUgb2xkZXIgcmVsZWFzZXMuCisKK0FzIG9mIFB5dGhvbiAzLjIsIHRoZSBzZXQgb2YgZnVuY3Rpb25zIGF2YWlsYWJsZSB0byB0aGUgbGltaXRlZCBBUEkKK2lzIGRvY3VtZW50ZWQgaW4gUEVQIDM4NC4KKworLi4gWFhYIGNvcHkgZXhhY3QgbGlzdCBoZXJlPyBJbnRvIGVhY2ggZnVuY3Rpb25zIGRlZmluaXRpb24/CmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvdHlwZS5yc3QgYi9Eb2MvYy1hcGkvdHlwZS5yc3QKaW5kZXggYjMzODZlYS4uNDRjNzMxYSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3R5cGUucnN0CisrKyBiL0RvYy9jLWFwaS90eXBlLnJzdApAQCAtNTEsMTMgKzUxLDEzIEBACiAgICBtb2RpZmljYXRpb24gb2YgdGhlIGF0dHJpYnV0ZXMgb3IgYmFzZSBjbGFzc2VzIG9mIHRoZSB0eXBlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlUeXBlX0hhc0ZlYXR1cmUoUHlPYmplY3QgKm8sIGludCBmZWF0dXJlKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeVR5cGVfSGFzRmVhdHVyZShQeVR5cGVPYmplY3QgKm8sIGludCBmZWF0dXJlKQogCiAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgdHlwZSBvYmplY3QgKm8qIHNldHMgdGhlIGZlYXR1cmUgKmZlYXR1cmUqLiAgVHlwZSBmZWF0dXJlcwogICAgYXJlIGRlbm90ZWQgYnkgc2luZ2xlIGJpdCBmbGFncy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5VHlwZV9JU19HQyhQeU9iamVjdCAqbykKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlUeXBlX0lTX0dDKFB5VHlwZU9iamVjdCAqbykKIAogICAgUmV0dXJuIHRydWUgaWYgdGhlIHR5cGUgb2JqZWN0IGluY2x1ZGVzIHN1cHBvcnQgZm9yIHRoZSBjeWNsZSBkZXRlY3RvcjsgdGhpcwogICAgdGVzdHMgdGhlIHR5cGUgZmxhZyA6Y29uc3Q6YFB5X1RQRkxBR1NfSEFWRV9HQ2AuCkBAIC03MCwxMyArNzAsMTQgQEAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVR5cGVfR2VuZXJpY0FsbG9jKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlfc3NpemVfdCBuaXRlbXMpCiAKLSAgIFhYWDogRG9jdW1lbnQuCi0KKyAgIEdlbmVyaWMgaGFuZGxlciBmb3IgdGhlIDphdHRyOmB0cF9hbGxvY2Agc2xvdCBvZiBhIHR5cGUgb2JqZWN0LiAgVXNlCisgICBQeXRob24ncyBkZWZhdWx0IG1lbW9yeSBhbGxvY2F0aW9uIG1lY2hhbmlzbSB0byBhbGxvY2F0ZSBhIG5ldyBpbnN0YW5jZSBhbmQKKyAgIGluaXRpYWxpemUgYWxsIGl0cyBjb250ZW50cyB0byAqTlVMTCouCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlUeXBlX0dlbmVyaWNOZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiAKLSAgIFhYWDogRG9jdW1lbnQuCi0KKyAgIEdlbmVyaWMgaGFuZGxlciBmb3IgdGhlIDphdHRyOmB0cF9uZXdgIHNsb3Qgb2YgYSB0eXBlIG9iamVjdC4gIENyZWF0ZSBhCisgICBuZXcgaW5zdGFuY2UgdXNpbmcgdGhlIHR5cGUncyA6YXR0cjpgdHBfYWxsb2NgIHNsb3QuCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlUeXBlX1JlYWR5KFB5VHlwZU9iamVjdCAqdHlwZSkKIApAQCAtODQsMyArODUsMTUgQEAKICAgIHRoZWlyIGluaXRpYWxpemF0aW9uLiAgVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgYWRkaW5nIGluaGVyaXRlZCBzbG90cwogICAgZnJvbSBhIHR5cGUncyBiYXNlIGNsYXNzLiAgUmV0dXJuIGBgMGBgIG9uIHN1Y2Nlc3MsIG9yIHJldHVybiBgYC0xYGAgYW5kIHNldHMgYW4KICAgIGV4Y2VwdGlvbiBvbiBlcnJvci4KKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVR5cGVfRnJvbVNwZWMoUHlUeXBlX1NwZWMgKnNwZWMpCisKKyAgIENyZWF0ZXMgYW5kIHJldHVybnMgYSBoZWFwIHR5cGUgb2JqZWN0IGZyb20gdGhlICpzcGVjKiBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgorCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcyhQeVR5cGVfU3BlYyAqc3BlYywgUHlPYmplY3QgKmJhc2VzKQorCisgICBDcmVhdGVzIGFuZCByZXR1cm5zIGEgaGVhcCB0eXBlIG9iamVjdCBmcm9tIHRoZSAqc3BlYyouIEluIGFkZGl0aW9uIHRvIHRoYXQsCisgICB0aGUgY3JlYXRlZCBoZWFwIHR5cGUgY29udGFpbnMgYWxsIHR5cGVzIGNvbnRhaW5lZCBieSB0aGUgKmJhc2VzKiB0dXBsZSBhcyBiYXNlCisgICB0eXBlcy4gVGhpcyBhbGxvd3MgdGhlIGNhbGxlciB0byByZWZlcmVuY2Ugb3RoZXIgaGVhcCB0eXBlcyBhcyBiYXNlIHR5cGVzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS90eXBlb2JqLnJzdCBiL0RvYy9jLWFwaS90eXBlb2JqLnJzdAppbmRleCA2OGNhOWFkLi5lYTFhMGFkIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvdHlwZW9iai5yc3QKKysrIGIvRG9jL2MtYXBpL3R5cGVvYmoucnN0CkBAIC0xMTk4LDQ2ICsxMTk4LDg4IEBACiAKIC4uIHNlY3Rpb25hdXRob3I6OiBHcmVnIEouIFN0ZWluIDxncmVnQGx5cmEub3JnPgogLi4gc2VjdGlvbmF1dGhvcjo6IEJlbmphbWluIFBldGVyc29uCi0KLQotVGhlIDpyZWY6YGJ1ZmZlciBpbnRlcmZhY2UgPGJ1ZmZlcm9iamVjdHM+YCBleHBvcnRzIGEgbW9kZWwgd2hlcmUgYW4gb2JqZWN0IGNhbiBleHBvc2UgaXRzIGludGVybmFsCi1kYXRhLgotCi1JZiBhbiBvYmplY3QgZG9lcyBub3QgZXhwb3J0IHRoZSBidWZmZXIgaW50ZXJmYWNlLCB0aGVuIGl0cyA6YXR0cjpgdHBfYXNfYnVmZmVyYAotbWVtYmVyIGluIHRoZSA6Yzp0eXBlOmBQeVR5cGVPYmplY3RgIHN0cnVjdHVyZSBzaG91bGQgYmUgKk5VTEwqLiAgT3RoZXJ3aXNlLCB0aGUKLTphdHRyOmB0cF9hc19idWZmZXJgIHdpbGwgcG9pbnQgdG8gYSA6Yzp0eXBlOmBQeUJ1ZmZlclByb2NzYCBzdHJ1Y3R1cmUuCi0KKy4uIHNlY3Rpb25hdXRob3I6OiBTdGVmYW4gS3JhaAogCiAuLiBjOnR5cGU6OiBQeUJ1ZmZlclByb2NzCiAKLSAgIFN0cnVjdHVyZSB1c2VkIHRvIGhvbGQgdGhlIGZ1bmN0aW9uIHBvaW50ZXJzIHdoaWNoIGRlZmluZSBhbiBpbXBsZW1lbnRhdGlvbiBvZgotICAgdGhlIGJ1ZmZlciBwcm90b2NvbC4KKyAgIFRoaXMgc3RydWN0dXJlIGhvbGRzIHBvaW50ZXJzIHRvIHRoZSBmdW5jdGlvbnMgcmVxdWlyZWQgYnkgdGhlCisgICA6cmVmOmBCdWZmZXIgcHJvdG9jb2wgPGJ1ZmZlcm9iamVjdHM+YC4gVGhlIHByb3RvY29sIGRlZmluZXMgaG93CisgICBhbiBleHBvcnRlciBvYmplY3QgY2FuIGV4cG9zZSBpdHMgaW50ZXJuYWwgZGF0YSB0byBjb25zdW1lciBvYmplY3RzLgogCi0gICAuLiBjOm1lbWJlcjo6IGdldGJ1ZmZlcnByb2MgYmZfZ2V0YnVmZmVyCisuLiBjOm1lbWJlcjo6IGdldGJ1ZmZlcnByb2MgUHlCdWZmZXJQcm9jcy5iZl9nZXRidWZmZXIKIAotICAgICAgVGhpcyBzaG91bGQgZmlsbCBhIDpjOnR5cGU6YFB5X2J1ZmZlcmAgd2l0aCB0aGUgbmVjZXNzYXJ5IGRhdGEgZm9yCi0gICAgICBleHBvcnRpbmcgdGhlIHR5cGUuICBUaGUgc2lnbmF0dXJlIG9mIDpkYXRhOmBnZXRidWZmZXJwcm9jYCBpcyBgYGludAotICAgICAgKFB5T2JqZWN0ICpvYmosIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKWBgLiAgKm9iaiogaXMgdGhlIG9iamVjdCB0bwotICAgICAgZXhwb3J0LCAqdmlldyogaXMgdGhlIDpjOnR5cGU6YFB5X2J1ZmZlcmAgc3RydWN0IHRvIGZpbGwsIGFuZCAqZmxhZ3MqIGdpdmVzCi0gICAgICB0aGUgY29uZGl0aW9ucyB0aGUgY2FsbGVyIHdhbnRzIHRoZSBtZW1vcnkgdW5kZXIuICAoU2VlCi0gICAgICA6YzpmdW5jOmBQeU9iamVjdF9HZXRCdWZmZXJgIGZvciBhbGwgZmxhZ3MuKSAgOmM6bWVtYmVyOmBiZl9nZXRidWZmZXJgIGlzCi0gICAgICByZXNwb25zaWJsZSBmb3IgZmlsbGluZyAqdmlldyogd2l0aCB0aGUgYXBwcm9wcmlhdGUgaW5mb3JtYXRpb24uCi0gICAgICAoOmM6ZnVuYzpgUHlCdWZmZXJfRmlsbFZpZXdgIGNhbiBiZSB1c2VkIGluIHNpbXBsZSBjYXNlcy4pICBTZWUKLSAgICAgIDpjOnR5cGU6YFB5X2J1ZmZlcmBccyBkb2NzIGZvciB3aGF0IG5lZWRzIHRvIGJlIGZpbGxlZCBpbi4KKyAgIFRoZSBzaWduYXR1cmUgb2YgdGhpcyBmdW5jdGlvbiBpczo6CisKKyAgICAgICBpbnQgKFB5T2JqZWN0ICpleHBvcnRlciwgUHlfYnVmZmVyICp2aWV3LCBpbnQgZmxhZ3MpOworCisgICBIYW5kbGUgYSByZXF1ZXN0IHRvICpleHBvcnRlciogdG8gZmlsbCBpbiAqdmlldyogYXMgc3BlY2lmaWVkIGJ5ICpmbGFncyouCisgICBFeGNlcHQgZm9yIHBvaW50ICgzKSwgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiBNVVNUIHRha2UgdGhlc2UKKyAgIHN0ZXBzOgorCisgICAoMSkgQ2hlY2sgaWYgdGhlIHJlcXVlc3QgY2FuIGJlIG1ldC4gSWYgbm90LCByYWlzZSA6YzpkYXRhOmBQeUV4Y19CdWZmZXJFcnJvcmAsCisgICAgICAgc2V0IDpjOmRhdGE6YHZpZXctPm9iamAgdG8gKk5VTEwqIGFuZCByZXR1cm4gLTEuCisKKyAgICgyKSBGaWxsIGluIHRoZSByZXF1ZXN0ZWQgZmllbGRzLgorCisgICAoMykgSW5jcmVtZW50IGFuIGludGVybmFsIGNvdW50ZXIgZm9yIHRoZSBudW1iZXIgb2YgZXhwb3J0cy4KKworICAgKDQpIFNldCA6YzpkYXRhOmB2aWV3LT5vYmpgIHRvICpleHBvcnRlciogYW5kIGluY3JlbWVudCA6YzpkYXRhOmB2aWV3LT5vYmpgLgorCisgICAoNSkgUmV0dXJuIDAuCisKKyAgIElmICpleHBvcnRlciogaXMgcGFydCBvZiBhIGNoYWluIG9yIHRyZWUgb2YgYnVmZmVyIHByb3ZpZGVycywgdHdvIG1haW4KKyAgIHNjaGVtZXMgY2FuIGJlIHVzZWQ6CisKKyAgICogUmUtZXhwb3J0OiBFYWNoIG1lbWJlciBvZiB0aGUgdHJlZSBhY3RzIGFzIHRoZSBleHBvcnRpbmcgb2JqZWN0IGFuZAorICAgICBzZXRzIDpjOmRhdGE6YHZpZXctPm9iamAgdG8gYSBuZXcgcmVmZXJlbmNlIHRvIGl0c2VsZi4KKworICAgKiBSZWRpcmVjdDogVGhlIGJ1ZmZlciByZXF1ZXN0IGlzIHJlZGlyZWN0ZWQgdG8gdGhlIHJvb3Qgb2JqZWN0IG9mIHRoZQorICAgICB0cmVlLiBIZXJlLCA6YzpkYXRhOmB2aWV3LT5vYmpgIHdpbGwgYmUgYSBuZXcgcmVmZXJlbmNlIHRvIHRoZSByb290CisgICAgIG9iamVjdC4KKworICAgVGhlIGluZGl2aWR1YWwgZmllbGRzIG9mICp2aWV3KiBhcmUgZGVzY3JpYmVkIGluIHNlY3Rpb24KKyAgIDpyZWY6YEJ1ZmZlciBzdHJ1Y3R1cmUgPGJ1ZmZlci1zdHJ1Y3R1cmU+YCwgdGhlIHJ1bGVzIGhvdyBhbiBleHBvcnRlcgorICAgbXVzdCByZWFjdCB0byBzcGVjaWZpYyByZXF1ZXN0cyBhcmUgaW4gc2VjdGlvbgorICAgOnJlZjpgQnVmZmVyIHJlcXVlc3QgdHlwZXMgPGJ1ZmZlci1yZXF1ZXN0LXR5cGVzPmAuCisKKyAgIEFsbCBtZW1vcnkgcG9pbnRlZCB0byBpbiB0aGUgOmM6dHlwZTpgUHlfYnVmZmVyYCBzdHJ1Y3R1cmUgYmVsb25ncyB0bworICAgdGhlIGV4cG9ydGVyIGFuZCBtdXN0IHJlbWFpbiB2YWxpZCB1bnRpbCB0aGVyZSBhcmUgbm8gY29uc3VtZXJzIGxlZnQuCisgICA6YzptZW1iZXI6YH5QeV9idWZmZXIuZm9ybWF0YCwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnNoYXBlYCwKKyAgIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zdHJpZGVzYCwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnN1Ym9mZnNldHNgCisgICBhbmQgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmludGVybmFsYAorICAgYXJlIHJlYWQtb25seSBmb3IgdGhlIGNvbnN1bWVyLgorCisgICA6YzpmdW5jOmBQeUJ1ZmZlcl9GaWxsSW5mb2AgcHJvdmlkZXMgYW4gZWFzeSB3YXkgb2YgZXhwb3NpbmcgYSBzaW1wbGUKKyAgIGJ5dGVzIGJ1ZmZlciB3aGlsZSBkZWFsaW5nIGNvcnJlY3RseSB3aXRoIGFsbCByZXF1ZXN0IHR5cGVzLgorCisgICA6YzpmdW5jOmBQeU9iamVjdF9HZXRCdWZmZXJgIGlzIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBjb25zdW1lciB0aGF0CisgICB3cmFwcyB0aGlzIGZ1bmN0aW9uLgorCisuLiBjOm1lbWJlcjo6IHJlbGVhc2VidWZmZXJwcm9jIFB5QnVmZmVyUHJvY3MuYmZfcmVsZWFzZWJ1ZmZlcgorCisgICBUaGUgc2lnbmF0dXJlIG9mIHRoaXMgZnVuY3Rpb24gaXM6OgorCisgICAgICAgdm9pZCAoUHlPYmplY3QgKmV4cG9ydGVyLCBQeV9idWZmZXIgKnZpZXcpOworCisgICBIYW5kbGUgYSByZXF1ZXN0IHRvIHJlbGVhc2UgdGhlIHJlc291cmNlcyBvZiB0aGUgYnVmZmVyLiBJZiBubyByZXNvdXJjZXMKKyAgIG5lZWQgdG8gYmUgcmVsZWFzZWQsIDpjOm1lbWJlcjpgUHlCdWZmZXJQcm9jcy5iZl9yZWxlYXNlYnVmZmVyYCBtYXkgYmUKKyAgICpOVUxMKi4gT3RoZXJ3aXNlLCBhIHN0YW5kYXJkIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gd2lsbCB0YWtlCisgICB0aGVzZSBvcHRpb25hbCBzdGVwczoKKworICAgKDEpIERlY3JlbWVudCBhbiBpbnRlcm5hbCBjb3VudGVyIGZvciB0aGUgbnVtYmVyIG9mIGV4cG9ydHMuCisKKyAgICgyKSBJZiB0aGUgY291bnRlciBpcyAwLCBmcmVlIGFsbCBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoICp2aWV3Ki4KKworICAgVGhlIGV4cG9ydGVyIE1VU1QgdXNlIHRoZSA6YzptZW1iZXI6YH5QeV9idWZmZXIuaW50ZXJuYWxgIGZpZWxkIHRvIGtlZXAKKyAgIHRyYWNrIG9mIGJ1ZmZlci1zcGVjaWZpYyByZXNvdXJjZXMuIFRoaXMgZmllbGQgaXMgZ3VhcmFudGVlZCB0byByZW1haW4KKyAgIGNvbnN0YW50LCB3aGlsZSBhIGNvbnN1bWVyIE1BWSBwYXNzIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgYnVmZmVyIGFzIHRoZQorICAgKnZpZXcqIGFyZ3VtZW50LgogCiAKLSAgIC4uIGM6bWVtYmVyOjogcmVsZWFzZWJ1ZmZlcnByb2MgYmZfcmVsZWFzZWJ1ZmZlcgorICAgVGhpcyBmdW5jdGlvbiBNVVNUIE5PVCBkZWNyZW1lbnQgOmM6ZGF0YTpgdmlldy0+b2JqYCwgc2luY2UgdGhhdCBpcworICAgZG9uZSBhdXRvbWF0aWNhbGx5IGluIDpjOmZ1bmM6YFB5QnVmZmVyX1JlbGVhc2VgICh0aGlzIHNjaGVtZSBpcworICAgdXNlZnVsIGZvciBicmVha2luZyByZWZlcmVuY2UgY3ljbGVzKS4KIAotICAgICAgVGhpcyBzaG91bGQgcmVsZWFzZSB0aGUgcmVzb3VyY2VzIG9mIHRoZSBidWZmZXIuICBUaGUgc2lnbmF0dXJlIG9mCi0gICAgICA6YzpkYXRhOmByZWxlYXNlYnVmZmVycHJvY2AgaXMgYGB2b2lkIChQeU9iamVjdCAqb2JqLCBQeV9idWZmZXIgKnZpZXcpYGAuCi0gICAgICBJZiB0aGUgOmM6ZGF0YTpgYmZfcmVsZWFzZWJ1ZmZlcmAgZnVuY3Rpb24gaXMgbm90IHByb3ZpZGVkIChpLmUuIGl0IGlzCi0gICAgICAqTlVMTCopLCB0aGVuIGl0IGRvZXMgbm90IGV2ZXIgbmVlZCB0byBiZSBjYWxsZWQuCiAKLSAgICAgIFRoZSBleHBvcnRlciBvZiB0aGUgYnVmZmVyIGludGVyZmFjZSBtdXN0IG1ha2Ugc3VyZSB0aGF0IGFueSBtZW1vcnkKLSAgICAgIHBvaW50ZWQgdG8gaW4gdGhlIDpjOnR5cGU6YFB5X2J1ZmZlcmAgc3RydWN0dXJlIHJlbWFpbnMgdmFsaWQgdW50aWwKLSAgICAgIHJlbGVhc2VidWZmZXIgaXMgY2FsbGVkLiAgRXhwb3J0ZXJzIHdpbGwgbmVlZCB0byBkZWZpbmUgYQotICAgICAgOmM6ZGF0YTpgYmZfcmVsZWFzZWJ1ZmZlcmAgZnVuY3Rpb24gaWYgdGhleSBjYW4gcmUtYWxsb2NhdGUgdGhlaXIgbWVtb3J5LAotICAgICAgc3RyaWRlcywgc2hhcGUsIHN1Ym9mZnNldHMsIG9yIGZvcm1hdCB2YXJpYWJsZXMgd2hpY2ggdGhleSBtaWdodCBzaGFyZQotICAgICAgdGhyb3VnaCB0aGUgc3RydWN0IGJ1ZmZlcmluZm8uCi0KLSAgICAgIFNlZSA6YzpmdW5jOmBQeUJ1ZmZlcl9SZWxlYXNlYC4KKyAgIDpjOmZ1bmM6YFB5QnVmZmVyX1JlbGVhc2VgIGlzIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBjb25zdW1lciB0aGF0CisgICB3cmFwcyB0aGlzIGZ1bmN0aW9uLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3VuaWNvZGUucnN0IGIvRG9jL2MtYXBpL3VuaWNvZGUucnN0CmluZGV4IGQxYjU3ZDkuLjg5YmQxNDggMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS91bmljb2RlLnJzdAorKysgYi9Eb2MvYy1hcGkvdW5pY29kZS5yc3QKQEAgLTYsMzggKzYsNzIgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIHNlY3Rpb25hdXRob3I6OiBNYXJjLUFuZHLDqSBMZW1idXJnIDxtYWxAbGVtYnVyZy5jb20+CisuLiBzZWN0aW9uYXV0aG9yOjogR2VvcmcgQnJhbmRsIDxnZW9yZ0BweXRob24ub3JnPgogCiBVbmljb2RlIE9iamVjdHMKIF5eXl5eXl5eXl5eXl5eXgogCitTaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgOnBlcDpgMzkzYCBpbiBQeXRob24gMy4zLCBVbmljb2RlIG9iamVjdHMgaW50ZXJuYWxseQordXNlIGEgdmFyaWV0eSBvZiByZXByZXNlbnRhdGlvbnMsIGluIG9yZGVyIHRvIGFsbG93IGhhbmRsaW5nIHRoZSBjb21wbGV0ZSByYW5nZQorb2YgVW5pY29kZSBjaGFyYWN0ZXJzIHdoaWxlIHN0YXlpbmcgbWVtb3J5IGVmZmljaWVudC4gIFRoZXJlIGFyZSBzcGVjaWFsIGNhc2VzCitmb3Igc3RyaW5ncyB3aGVyZSBhbGwgY29kZSBwb2ludHMgYXJlIGJlbG93IDEyOCwgMjU2LCBvciA2NTUzNjsgb3RoZXJ3aXNlLCBjb2RlCitwb2ludHMgbXVzdCBiZSBiZWxvdyAxMTE0MTEyICh3aGljaCBpcyB0aGUgZnVsbCBVbmljb2RlIHJhbmdlKS4KKworOmM6dHlwZTpgUHlfVU5JQ09ERSpgIGFuZCBVVEYtOCByZXByZXNlbnRhdGlvbnMgYXJlIGNyZWF0ZWQgb24gZGVtYW5kIGFuZCBjYWNoZWQKK2luIHRoZSBVbmljb2RlIG9iamVjdC4gIFRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFKmAgcmVwcmVzZW50YXRpb24gaXMgZGVwcmVjYXRlZAorYW5kIGluZWZmaWNpZW50OyBpdCBzaG91bGQgYmUgYXZvaWRlZCBpbiBwZXJmb3JtYW5jZS0gb3IgbWVtb3J5LXNlbnNpdGl2ZQorc2l0dWF0aW9ucy4KKworRHVlIHRvIHRoZSB0cmFuc2l0aW9uIGJldHdlZW4gdGhlIG9sZCBBUElzIGFuZCB0aGUgbmV3IEFQSXMsIHVuaWNvZGUgb2JqZWN0cworY2FuIGludGVybmFsbHkgYmUgaW4gdHdvIHN0YXRlcyBkZXBlbmRpbmcgb24gaG93IHRoZXkgd2VyZSBjcmVhdGVkOgorCisqICJjYW5vbmljYWwiIHVuaWNvZGUgb2JqZWN0cyBhcmUgYWxsIG9iamVjdHMgY3JlYXRlZCBieSBhIG5vbi1kZXByZWNhdGVkCisgIHVuaWNvZGUgQVBJLiAgVGhleSB1c2UgdGhlIG1vc3QgZWZmaWNpZW50IHJlcHJlc2VudGF0aW9uIGFsbG93ZWQgYnkgdGhlCisgIGltcGxlbWVudGF0aW9uLgorCisqICJsZWdhY3kiIHVuaWNvZGUgb2JqZWN0cyBoYXZlIGJlZW4gY3JlYXRlZCB0aHJvdWdoIG9uZSBvZiB0aGUgZGVwcmVjYXRlZAorICBBUElzICh0eXBpY2FsbHkgOmM6ZnVuYzpgUHlVbmljb2RlX0Zyb21Vbmljb2RlYCkgYW5kIG9ubHkgYmVhciB0aGUKKyAgOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHJlcHJlc2VudGF0aW9uOyB5b3Ugd2lsbCBoYXZlIHRvIGNhbGwKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX1JFQURZYCBvbiB0aGVtIGJlZm9yZSBjYWxsaW5nIGFueSBvdGhlciBBUEkuCisKKwogVW5pY29kZSBUeXBlCiAiIiIiIiIiIiIiIiIKIAogVGhlc2UgYXJlIHRoZSBiYXNpYyBVbmljb2RlIG9iamVjdCB0eXBlcyB1c2VkIGZvciB0aGUgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiBpbgogUHl0aG9uOgogCisuLiBjOnR5cGU6OiBQeV9VQ1M0CisgICAgICAgICAgICBQeV9VQ1MyCisgICAgICAgICAgICBQeV9VQ1MxCisKKyAgIFRoZXNlIHR5cGVzIGFyZSB0eXBlZGVmcyBmb3IgdW5zaWduZWQgaW50ZWdlciB0eXBlcyB3aWRlIGVub3VnaCB0byBjb250YWluCisgICBjaGFyYWN0ZXJzIG9mIDMyIGJpdHMsIDE2IGJpdHMgYW5kIDggYml0cywgcmVzcGVjdGl2ZWx5LiAgV2hlbiBkZWFsaW5nIHdpdGgKKyAgIHNpbmdsZSBVbmljb2RlIGNoYXJhY3RlcnMsIHVzZSA6Yzp0eXBlOmBQeV9VQ1M0YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogLi4gYzp0eXBlOjogUHlfVU5JQ09ERQogCi0gICBUaGlzIHR5cGUgcmVwcmVzZW50cyB0aGUgc3RvcmFnZSB0eXBlIHdoaWNoIGlzIHVzZWQgYnkgUHl0aG9uIGludGVybmFsbHkgYXMKLSAgIGJhc2lzIGZvciBob2xkaW5nIFVuaWNvZGUgb3JkaW5hbHMuICBQeXRob24ncyBkZWZhdWx0IGJ1aWxkcyB1c2UgYSAxNi1iaXQgdHlwZQotICAgZm9yIDpjOnR5cGU6YFB5X1VOSUNPREVgIGFuZCBzdG9yZSBVbmljb2RlIHZhbHVlcyBpbnRlcm5hbGx5IGFzIFVDUzIuIEl0IGlzIGFsc28KLSAgIHBvc3NpYmxlIHRvIGJ1aWxkIGEgVUNTNCB2ZXJzaW9uIG9mIFB5dGhvbiAobW9zdCByZWNlbnQgTGludXggZGlzdHJpYnV0aW9ucyBjb21lCi0gICB3aXRoIFVDUzQgYnVpbGRzIG9mIFB5dGhvbikuIFRoZXNlIGJ1aWxkcyB0aGVuIHVzZSBhIDMyLWJpdCB0eXBlIGZvcgotICAgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYW5kIHN0b3JlIFVuaWNvZGUgZGF0YSBpbnRlcm5hbGx5IGFzIFVDUzQuIE9uIHBsYXRmb3JtcwotICAgd2hlcmUgOmM6dHlwZTpgd2NoYXJfdGAgaXMgYXZhaWxhYmxlIGFuZCBjb21wYXRpYmxlIHdpdGggdGhlIGNob3NlbiBQeXRob24KLSAgIFVuaWNvZGUgYnVpbGQgdmFyaWFudCwgOmM6dHlwZTpgUHlfVU5JQ09ERWAgaXMgYSB0eXBlZGVmIGFsaWFzIGZvcgotICAgOmM6dHlwZTpgd2NoYXJfdGAgdG8gZW5oYW5jZSBuYXRpdmUgcGxhdGZvcm0gY29tcGF0aWJpbGl0eS4gT24gYWxsIG90aGVyCi0gICBwbGF0Zm9ybXMsIDpjOnR5cGU6YFB5X1VOSUNPREVgIGlzIGEgdHlwZWRlZiBhbGlhcyBmb3IgZWl0aGVyIDpjOnR5cGU6YHVuc2lnbmVkCi0gICBzaG9ydGAgKFVDUzIpIG9yIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmdgIChVQ1M0KS4KKyAgIFRoaXMgaXMgYSB0eXBlZGVmIG9mIDpjOnR5cGU6YHdjaGFyX3RgLCB3aGljaCBpcyBhIDE2LWJpdCB0eXBlIG9yIDMyLWJpdCB0eXBlCisgICBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgogCi1Ob3RlIHRoYXQgVUNTMiBhbmQgVUNTNCBQeXRob24gYnVpbGRzIGFyZSBub3QgYmluYXJ5IGNvbXBhdGlibGUuIFBsZWFzZSBrZWVwCi10aGlzIGluIG1pbmQgd2hlbiB3cml0aW5nIGV4dGVuc2lvbnMgb3IgaW50ZXJmYWNlcy4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBJbiBwcmV2aW91cyB2ZXJzaW9ucywgdGhpcyB3YXMgYSAxNi1iaXQgdHlwZSBvciBhIDMyLWJpdCB0eXBlIGRlcGVuZGluZyBvbgorICAgICAgd2hldGhlciB5b3Ugc2VsZWN0ZWQgYSAibmFycm93IiBvciAid2lkZSIgVW5pY29kZSB2ZXJzaW9uIG9mIFB5dGhvbiBhdAorICAgICAgYnVpbGQgdGltZS4KIAogCi0uLiBjOnR5cGU6OiBQeVVuaWNvZGVPYmplY3QKKy4uIGM6dHlwZTo6IFB5QVNDSUlPYmplY3QKKyAgICAgICAgICAgIFB5Q29tcGFjdFVuaWNvZGVPYmplY3QKKyAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdAogCi0gICBUaGlzIHN1YnR5cGUgb2YgOmM6dHlwZTpgUHlPYmplY3RgIHJlcHJlc2VudHMgYSBQeXRob24gVW5pY29kZSBvYmplY3QuCisgICBUaGVzZSBzdWJ0eXBlcyBvZiA6Yzp0eXBlOmBQeU9iamVjdGAgcmVwcmVzZW50IGEgUHl0aG9uIFVuaWNvZGUgb2JqZWN0LiAgSW4KKyAgIGFsbW9zdCBhbGwgY2FzZXMsIHRoZXkgc2hvdWxkbid0IGJlIHVzZWQgZGlyZWN0bHksIHNpbmNlIGFsbCBBUEkgZnVuY3Rpb25zCisgICB0aGF0IGRlYWwgd2l0aCBVbmljb2RlIG9iamVjdHMgdGFrZSBhbmQgcmV0dXJuIDpjOnR5cGU6YFB5T2JqZWN0YCBwb2ludGVycy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gYzp2YXI6OiBQeVR5cGVPYmplY3QgUHlVbmljb2RlX1R5cGUKQEAgLTQ1LDEwICs3OSwxMCBAQAogICAgVGhpcyBpbnN0YW5jZSBvZiA6Yzp0eXBlOmBQeVR5cGVPYmplY3RgIHJlcHJlc2VudHMgdGhlIFB5dGhvbiBVbmljb2RlIHR5cGUuICBJdAogICAgaXMgZXhwb3NlZCB0byBQeXRob24gY29kZSBhcyBgYHN0cmBgLgogCisKIFRoZSBmb2xsb3dpbmcgQVBJcyBhcmUgcmVhbGx5IEMgbWFjcm9zIGFuZCBjYW4gYmUgdXNlZCB0byBkbyBmYXN0IGNoZWNrcyBhbmQgdG8KIGFjY2VzcyBpbnRlcm5hbCByZWFkLW9ubHkgZGF0YSBvZiBVbmljb2RlIG9iamVjdHM6CiAKLQogLi4gYzpmdW5jdGlvbjo6IGludCBQeVVuaWNvZGVfQ2hlY2soUHlPYmplY3QgKm8pCiAKICAgIFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgKm8qIGlzIGEgVW5pY29kZSBvYmplY3Qgb3IgYW4gaW5zdGFuY2Ugb2YgYSBVbmljb2RlCkBAIC02MSwyOCArOTUsMTA2IEBACiAgICBzdWJ0eXBlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HRVRfU0laRShQeU9iamVjdCAqbykKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX1JFQURZKFB5T2JqZWN0ICpvKQogCi0gICBSZXR1cm4gdGhlIHNpemUgb2YgdGhlIG9iamVjdC4gICpvKiBoYXMgdG8gYmUgYSA6Yzp0eXBlOmBQeVVuaWNvZGVPYmplY3RgIChub3QKLSAgIGNoZWNrZWQpLgorICAgRW5zdXJlIHRoZSBzdHJpbmcgb2JqZWN0ICpvKiBpcyBpbiB0aGUgImNhbm9uaWNhbCIgcmVwcmVzZW50YXRpb24uICBUaGlzIGlzCisgICByZXF1aXJlZCBiZWZvcmUgdXNpbmcgYW55IG9mIHRoZSBhY2Nlc3MgbWFjcm9zIGRlc2NyaWJlZCBiZWxvdy4KKworICAgLi4gWFhYIGV4cGFuZCBvbiB3aGVuIGl0IGlzIG5vdCByZXF1aXJlZAorCisgICBSZXR1cm5zIDAgb24gc3VjY2VzcyBhbmQgLTEgd2l0aCBhbiBleGNlcHRpb24gc2V0IG9uIGZhaWx1cmUsIHdoaWNoIGluCisgICBwYXJ0aWN1bGFyIGhhcHBlbnMgaWYgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HRVRfREFUQV9TSVpFKFB5T2JqZWN0ICpvKQorLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0dFVF9MRU5HVEgoUHlPYmplY3QgKm8pCiAKLSAgIFJldHVybiB0aGUgc2l6ZSBvZiB0aGUgb2JqZWN0J3MgaW50ZXJuYWwgYnVmZmVyIGluIGJ5dGVzLiAgKm8qIGhhcyB0byBiZSBhCi0gICA6Yzp0eXBlOmBQeVVuaWNvZGVPYmplY3RgIChub3QgY2hlY2tlZCkuCisgICBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgVW5pY29kZSBzdHJpbmcsIGluIGNvZGUgcG9pbnRzLiAgKm8qIGhhcyB0byBiZSBhCisgICBVbmljb2RlIG9iamVjdCBpbiB0aGUgImNhbm9uaWNhbCIgcmVwcmVzZW50YXRpb24gKG5vdCBjaGVja2VkKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUqIFB5VW5pY29kZV9BU19VTklDT0RFKFB5T2JqZWN0ICpvKQorLi4gYzpmdW5jdGlvbjo6IFB5X1VDUzEqIFB5VW5pY29kZV8xQllURV9EQVRBKFB5T2JqZWN0ICpvKQorICAgICAgICAgICAgICAgIFB5X1VDUzIqIFB5VW5pY29kZV8yQllURV9EQVRBKFB5T2JqZWN0ICpvKQorICAgICAgICAgICAgICAgIFB5X1VDUzQqIFB5VW5pY29kZV80QllURV9EQVRBKFB5T2JqZWN0ICpvKQogCi0gICBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBpbnRlcm5hbCA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIG9iamVjdC4gICpvKgotICAgaGFzIHRvIGJlIGEgOmM6dHlwZTpgUHlVbmljb2RlT2JqZWN0YCAobm90IGNoZWNrZWQpLgorICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGNhc3QgdG8gVUNTMSwgVUNTMiBvciBVQ1M0CisgICBpbnRlZ2VyIHR5cGVzIGZvciBkaXJlY3QgY2hhcmFjdGVyIGFjY2Vzcy4gIE5vIGNoZWNrcyBhcmUgcGVyZm9ybWVkIGlmIHRoZQorICAgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGhhcyB0aGUgY29ycmVjdCBjaGFyYWN0ZXIgc2l6ZTsgdXNlCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfS0lORGAgdG8gc2VsZWN0IHRoZSByaWdodCBtYWNyby4gIE1ha2Ugc3VyZQorICAgOmM6ZnVuYzpgUHlVbmljb2RlX1JFQURZYCBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlIGFjY2Vzc2luZyB0aGlzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCi0uLiBjOmZ1bmN0aW9uOjogY29uc3QgY2hhciogUHlVbmljb2RlX0FTX0RBVEEoUHlPYmplY3QgKm8pCisuLiBjOm1hY3JvOjogUHlVbmljb2RlX1dDSEFSX0tJTkQKKyAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfS0lORAorICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9LSU5ECisgICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0tJTkQKIAotICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgaW50ZXJuYWwgYnVmZmVyIG9mIHRoZSBvYmplY3QuICpvKiBoYXMgdG8gYmUgYQotICAgOmM6dHlwZTpgUHlVbmljb2RlT2JqZWN0YCAobm90IGNoZWNrZWQpLgorICAgUmV0dXJuIHZhbHVlcyBvZiB0aGUgOmM6ZnVuYzpgUHlVbmljb2RlX0tJTkRgIG1hY3JvLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9LSU5EKFB5T2JqZWN0ICpvKQorCisgICBSZXR1cm4gb25lIG9mIHRoZSBQeVVuaWNvZGUga2luZCBjb25zdGFudHMgKHNlZSBhYm92ZSkgdGhhdCBpbmRpY2F0ZSBob3cgbWFueQorICAgYnl0ZXMgcGVyIGNoYXJhY3RlciB0aGlzIFVuaWNvZGUgb2JqZWN0IHVzZXMgdG8gc3RvcmUgaXRzIGRhdGEuICAqbyogaGFzIHRvCisgICBiZSBhIFVuaWNvZGUgb2JqZWN0IGluIHRoZSAiY2Fub25pY2FsIiByZXByZXNlbnRhdGlvbiAobm90IGNoZWNrZWQpLgorCisgICAuLiBYWFggZG9jdW1lbnQgIjAiIHJldHVybiB2YWx1ZT8KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IHZvaWQqIFB5VW5pY29kZV9EQVRBKFB5T2JqZWN0ICpvKQorCisgICBSZXR1cm4gYSB2b2lkIHBvaW50ZXIgdG8gdGhlIHJhdyB1bmljb2RlIGJ1ZmZlci4gICpvKiBoYXMgdG8gYmUgYSBVbmljb2RlCisgICBvYmplY3QgaW4gdGhlICJjYW5vbmljYWwiIHJlcHJlc2VudGF0aW9uIChub3QgY2hlY2tlZCkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5VW5pY29kZV9XUklURShpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBpbmRleCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgdmFsdWUpCisKKyAgIFdyaXRlIGludG8gYSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gKmRhdGEqIChhcyBvYnRhaW5lZCB3aXRoCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfREFUQWApLiAgVGhpcyBtYWNybyBkb2VzIG5vdCBkbyBhbnkgc2FuaXR5IGNoZWNrcyBhbmQgaXMKKyAgIGludGVuZGVkIGZvciB1c2FnZSBpbiBsb29wcy4gIFRoZSBjYWxsZXIgc2hvdWxkIGNhY2hlIHRoZSAqa2luZCogdmFsdWUgYW5kCisgICAqZGF0YSogcG9pbnRlciBhcyBvYnRhaW5lZCBmcm9tIG90aGVyIG1hY3JvIGNhbGxzLiAgKmluZGV4KiBpcyB0aGUgaW5kZXggaW4KKyAgIHRoZSBzdHJpbmcgKHN0YXJ0cyBhdCAwKSBhbmQgKnZhbHVlKiBpcyB0aGUgbmV3IGNvZGUgcG9pbnQgdmFsdWUgd2hpY2ggc2hvdWxkCisgICBiZSB3cml0dGVuIHRvIHRoYXQgbG9jYXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9VQ1M0IFB5VW5pY29kZV9SRUFEKGludCBraW5kLCB2b2lkICpkYXRhLCBQeV9zc2l6ZV90IGluZGV4KQorCisgICBSZWFkIGEgY29kZSBwb2ludCBmcm9tIGEgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uICpkYXRhKiAoYXMgb2J0YWluZWQgd2l0aAorICAgOmM6ZnVuYzpgUHlVbmljb2RlX0RBVEFgKS4gIE5vIGNoZWNrcyBvciByZWFkeSBjYWxscyBhcmUgcGVyZm9ybWVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVUNTNCBQeVVuaWNvZGVfUkVBRF9DSEFSKFB5T2JqZWN0ICpvLCBQeV9zc2l6ZV90IGluZGV4KQorCisgICBSZWFkIGEgY2hhcmFjdGVyIGZyb20gYSBVbmljb2RlIG9iamVjdCAqbyosIHdoaWNoIG11c3QgYmUgaW4gdGhlICJjYW5vbmljYWwiCisgICByZXByZXNlbnRhdGlvbi4gIFRoaXMgaXMgbGVzcyBlZmZpY2llbnQgdGhhbiA6YzpmdW5jOmBQeVVuaWNvZGVfUkVBRGAgaWYgeW91CisgICBkbyBtdWx0aXBsZSBjb25zZWN1dGl2ZSByZWFkcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShQeU9iamVjdCAqbykKKworICAgUmV0dXJuIHRoZSBtYXhpbXVtIGNvZGUgcG9pbnQgdGhhdCBpcyBzdWl0YWJsZSBmb3IgY3JlYXRpbmcgYW5vdGhlciBzdHJpbmcKKyAgIGJhc2VkIG9uICpvKiwgd2hpY2ggbXVzdCBiZSBpbiB0aGUgImNhbm9uaWNhbCIgcmVwcmVzZW50YXRpb24uICBUaGlzIGlzCisgICBhbHdheXMgYW4gYXBwcm94aW1hdGlvbiBidXQgbW9yZSBlZmZpY2llbnQgdGhhbiBpdGVyYXRpbmcgb3ZlciB0aGUgc3RyaW5nLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9DbGVhckZyZWVMaXN0KCkKQEAgLTkwLDYgKzIwMiw0NiBAQAogICAgQ2xlYXIgdGhlIGZyZWUgbGlzdC4gUmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgZnJlZWQgaXRlbXMuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0dFVF9TSVpFKFB5T2JqZWN0ICpvKQorCisgICBSZXR1cm4gdGhlIHNpemUgb2YgdGhlIGRlcHJlY2F0ZWQgOmM6dHlwZTpgUHlfVU5JQ09ERWAgcmVwcmVzZW50YXRpb24sIGluCisgICBjb2RlIHVuaXRzICh0aGlzIGluY2x1ZGVzIHN1cnJvZ2F0ZSBwYWlycyBhcyAyIHVuaXRzKS4gICpvKiBoYXMgdG8gYmUgYQorICAgVW5pY29kZSBvYmplY3QgKG5vdCBjaGVja2VkKS4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIFVuaWNvZGUgQVBJLCBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0dFVF9MRU5HVEhgLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HRVRfREFUQV9TSVpFKFB5T2JqZWN0ICpvKQorCisgICBSZXR1cm4gdGhlIHNpemUgb2YgdGhlIGRlcHJlY2F0ZWQgOmM6dHlwZTpgUHlfVU5JQ09ERWAgcmVwcmVzZW50YXRpb24gaW4KKyAgIGJ5dGVzLiAgKm8qIGhhcyB0byBiZSBhIFVuaWNvZGUgb2JqZWN0IChub3QgY2hlY2tlZCkuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSBVbmljb2RlIEFQSSwgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9HRVRfTEVOR1RIYC4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVU5JQ09ERSogUHlVbmljb2RlX0FTX1VOSUNPREUoUHlPYmplY3QgKm8pCisgICAgICAgICAgICAgICAgY29uc3QgY2hhciogUHlVbmljb2RlX0FTX0RBVEEoUHlPYmplY3QgKm8pCisKKyAgIFJldHVybiBhIHBvaW50ZXIgdG8gYSA6Yzp0eXBlOmBQeV9VTklDT0RFYCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LiAgVGhlCisgICBgYEFTX0RBVEFgYCBmb3JtIGNhc3RzIHRoZSBwb2ludGVyIHRvIDpjOnR5cGU6YGNvbnN0IGNoYXIgKmAuICAqbyogaGFzIHRvIGJlCisgICBhIFVuaWNvZGUgb2JqZWN0IChub3QgY2hlY2tlZCkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIG1hY3JvIGlzIG5vdyBpbmVmZmljaWVudCAtLSBiZWNhdXNlIGluIG1hbnkgY2FzZXMgdGhlCisgICAgICA6Yzp0eXBlOmBQeV9VTklDT0RFYCByZXByZXNlbnRhdGlvbiBkb2VzIG5vdCBleGlzdCBhbmQgbmVlZHMgdG8gYmUgY3JlYXRlZAorICAgICAgLS0gYW5kIGNhbiBmYWlsIChyZXR1cm4gKk5VTEwqIHdpdGggYW4gZXhjZXB0aW9uIHNldCkuICBUcnkgdG8gcG9ydCB0aGUKKyAgICAgIGNvZGUgdG8gdXNlIHRoZSBuZXcgOmM6ZnVuYzpgUHlVbmljb2RlX25CWVRFX0RBVEFgIG1hY3JvcyBvciB1c2UKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9XUklURWAgb3IgOmM6ZnVuYzpgUHlVbmljb2RlX1JFQURgLgorCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgVW5pY29kZSBBUEksIHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nIHRoZQorICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX25CWVRFX0RBVEFgIGZhbWlseSBvZiBtYWNyb3MuCisKKwogVW5pY29kZSBDaGFyYWN0ZXIgUHJvcGVydGllcwogIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgogCkBAIC0xNjYsMTYgKzMxOCwyNSBAQAogCiAgICBSZXR1cm4gdGhlIGNoYXJhY3RlciAqY2gqIGNvbnZlcnRlZCB0byBsb3dlciBjYXNlLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIHVzZXMgc2ltcGxlIGNhc2UgbWFwcGluZ3MuCisKIAogLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUgUHlfVU5JQ09ERV9UT1VQUEVSKFB5X1VOSUNPREUgY2gpCiAKICAgIFJldHVybiB0aGUgY2hhcmFjdGVyICpjaCogY29udmVydGVkIHRvIHVwcGVyIGNhc2UuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gdXNlcyBzaW1wbGUgY2FzZSBtYXBwaW5ncy4KKwogCiAuLiBjOmZ1bmN0aW9uOjogUHlfVU5JQ09ERSBQeV9VTklDT0RFX1RPVElUTEUoUHlfVU5JQ09ERSBjaCkKIAogICAgUmV0dXJuIHRoZSBjaGFyYWN0ZXIgKmNoKiBjb252ZXJ0ZWQgdG8gdGl0bGUgY2FzZS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VzIHNpbXBsZSBjYXNlIG1hcHBpbmdzLgorCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlfVU5JQ09ERV9UT0RFQ0lNQUwoUHlfVU5JQ09ERSBjaCkKIApAQCAtMTk1LDMxICszNTYsNjYgQEAKICAgIHBvc3NpYmxlLiAgVGhpcyBtYWNybyBkb2VzIG5vdCByYWlzZSBleGNlcHRpb25zLgogCiAKLVBsYWluIFB5X1VOSUNPREUKLSIiIiIiIiIiIiIiIiIiIiIKK1RoZXNlIEFQSXMgY2FuIGJlIHVzZWQgdG8gd29yayB3aXRoIHN1cnJvZ2F0ZXM6CisKKy4uIGM6bWFjcm86OiBQeV9VTklDT0RFX0lTX1NVUlJPR0FURShjaCkKKworICAgQ2hlY2sgaWYgKmNoKiBpcyBhIHN1cnJvZ2F0ZSAoYGAweEQ4MDAgPD0gY2ggPD0gMHhERkZGYGApLgorCisuLiBjOm1hY3JvOjogUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShjaCkKKworICAgQ2hlY2sgaWYgKmNoKiBpcyBhbiBoaWdoIHN1cnJvZ2F0ZSAoYGAweEQ4MDAgPD0gY2ggPD0gMHhEQkZGYGApLgorCisuLiBjOm1hY3JvOjogUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKGNoKQorCisgICBDaGVjayBpZiAqY2gqIGlzIGEgbG93IHN1cnJvZ2F0ZSAoYGAweERDMDAgPD0gY2ggPD0gMHhERkZGYGApLgorCisuLiBjOm1hY3JvOjogUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMoaGlnaCwgbG93KQorCisgICBKb2luIHR3byBzdXJyb2dhdGUgY2hhcmFjdGVycyBhbmQgcmV0dXJuIGEgc2luZ2xlIFB5X1VDUzQgdmFsdWUuCisgICAqaGlnaCogYW5kICpsb3cqIGFyZSByZXNwZWN0aXZlbHkgdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHN1cnJvZ2F0ZXMgaW4gYQorICAgc3Vycm9nYXRlIHBhaXIuCisKKworQ3JlYXRpbmcgYW5kIGFjY2Vzc2luZyBVbmljb2RlIHN0cmluZ3MKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCiAKIFRvIGNyZWF0ZSBVbmljb2RlIG9iamVjdHMgYW5kIGFjY2VzcyB0aGVpciBiYXNpYyBzZXF1ZW5jZSBwcm9wZXJ0aWVzLCB1c2UgdGhlc2UKIEFQSXM6CiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX05ldyhQeV9zc2l6ZV90IHNpemUsIFB5X1VDUzQgbWF4Y2hhcikKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoY29uc3QgUHlfVU5JQ09ERSAqdSwgUHlfc3NpemVfdCBzaXplKQorICAgQ3JlYXRlIGEgbmV3IFVuaWNvZGUgb2JqZWN0LiAgKm1heGNoYXIqIHNob3VsZCBiZSB0aGUgdHJ1ZSBtYXhpbXVtIGNvZGUgcG9pbnQKKyAgIHRvIGJlIHBsYWNlZCBpbiB0aGUgc3RyaW5nLiAgQXMgYW4gYXBwcm94aW1hdGlvbiwgaXQgY2FuIGJlIHJvdW5kZWQgdXAgdG8gdGhlCisgICBuZWFyZXN0IHZhbHVlIGluIHRoZSBzZXF1ZW5jZSAxMjcsIDI1NSwgNjU1MzUsIDExMTQxMTEuCiAKLSAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGZyb20gdGhlIFB5X1VOSUNPREUgYnVmZmVyICp1KiBvZiB0aGUgZ2l2ZW4gc2l6ZS4gKnUqCi0gICBtYXkgYmUgKk5VTEwqIHdoaWNoIGNhdXNlcyB0aGUgY29udGVudHMgdG8gYmUgdW5kZWZpbmVkLiBJdCBpcyB0aGUgdXNlcidzCi0gICByZXNwb25zaWJpbGl0eSB0byBmaWxsIGluIHRoZSBuZWVkZWQgZGF0YS4gIFRoZSBidWZmZXIgaXMgY29waWVkIGludG8gdGhlIG5ldwotICAgb2JqZWN0LiBJZiB0aGUgYnVmZmVyIGlzIG5vdCAqTlVMTCosIHRoZSByZXR1cm4gdmFsdWUgbWlnaHQgYmUgYSBzaGFyZWQgb2JqZWN0LgotICAgVGhlcmVmb3JlLCBtb2RpZmljYXRpb24gb2YgdGhlIHJlc3VsdGluZyBVbmljb2RlIG9iamVjdCBpcyBvbmx5IGFsbG93ZWQgd2hlbiAqdSoKLSAgIGlzICpOVUxMKi4KKyAgIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIHdheSB0byBhbGxvY2F0ZSBhIG5ldyBVbmljb2RlIG9iamVjdC4gIE9iamVjdHMKKyAgIGNyZWF0ZWQgdXNpbmcgdGhpcyBmdW5jdGlvbiBhcmUgbm90IHJlc2l6YWJsZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKGludCBraW5kLCBjb25zdCB2b2lkICpidWZmZXIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUpCisKKyAgIENyZWF0ZSBhIG5ldyBVbmljb2RlIG9iamVjdCB3aXRoIHRoZSBnaXZlbiAqa2luZCogKHBvc3NpYmxlIHZhbHVlcyBhcmUKKyAgIDpjOm1hY3JvOmBQeVVuaWNvZGVfMUJZVEVfS0lORGAgZXRjLiwgYXMgcmV0dXJuZWQgYnkKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9LSU5EYCkuICBUaGUgKmJ1ZmZlciogbXVzdCBwb2ludCB0byBhbiBhcnJheSBvZiAqc2l6ZSoKKyAgIHVuaXRzIG9mIDEsIDIgb3IgNCBieXRlcyBwZXIgY2hhcmFjdGVyLCBhcyBnaXZlbiBieSB0aGUga2luZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoY29uc3QgY2hhciAqdSwgUHlfc3NpemVfdCBzaXplKQogCi0gICBDcmVhdGUgYSBVbmljb2RlIG9iamVjdCBmcm9tIHRoZSBjaGFyIGJ1ZmZlciAqdSouICBUaGUgYnl0ZXMgd2lsbCBiZSBpbnRlcnByZXRlZAotICAgYXMgYmVpbmcgVVRGLTggZW5jb2RlZC4gICp1KiBtYXkgYWxzbyBiZSAqTlVMTCogd2hpY2gKLSAgIGNhdXNlcyB0aGUgY29udGVudHMgdG8gYmUgdW5kZWZpbmVkLiBJdCBpcyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGZpbGwgaW4KLSAgIHRoZSBuZWVkZWQgZGF0YS4gIFRoZSBidWZmZXIgaXMgY29waWVkIGludG8gdGhlIG5ldyBvYmplY3QuIElmIHRoZSBidWZmZXIgaXMgbm90Ci0gICAqTlVMTCosIHRoZSByZXR1cm4gdmFsdWUgbWlnaHQgYmUgYSBzaGFyZWQgb2JqZWN0LiBUaGVyZWZvcmUsIG1vZGlmaWNhdGlvbiBvZgotICAgdGhlIHJlc3VsdGluZyBVbmljb2RlIG9iamVjdCBpcyBvbmx5IGFsbG93ZWQgd2hlbiAqdSogaXMgKk5VTEwqLgorICAgQ3JlYXRlIGEgVW5pY29kZSBvYmplY3QgZnJvbSB0aGUgY2hhciBidWZmZXIgKnUqLiAgVGhlIGJ5dGVzIHdpbGwgYmUKKyAgIGludGVycHJldGVkIGFzIGJlaW5nIFVURi04IGVuY29kZWQuICBUaGUgYnVmZmVyIGlzIGNvcGllZCBpbnRvIHRoZSBuZXcKKyAgIG9iamVjdC4gSWYgdGhlIGJ1ZmZlciBpcyBub3QgKk5VTEwqLCB0aGUgcmV0dXJuIHZhbHVlIG1pZ2h0IGJlIGEgc2hhcmVkCisgICBvYmplY3QsIGkuZS4gbW9kaWZpY2F0aW9uIG9mIHRoZSBkYXRhIGlzIG5vdCBhbGxvd2VkLgorCisgICBJZiAqdSogaXMgKk5VTEwqLCB0aGlzIGZ1bmN0aW9uIGJlaGF2ZXMgbGlrZSA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbVVuaWNvZGVgCisgICB3aXRoIHRoZSBidWZmZXIgc2V0IHRvICpOVUxMKi4gIFRoaXMgdXNhZ2UgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZgorICAgOmM6ZnVuYzpgUHlVbmljb2RlX05ld2AuCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbVN0cmluZyhjb25zdCBjaGFyICp1KQpAQCAtMjYwLDE4ICs0NTYsMjcgQEAKICAgIHwgOmF0dHI6YCVsZGAgICAgICAgfCBsb25nICAgICAgICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsZCIpYGAuICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmF0dHI6YCVsaWAgICAgICAgfCBsb25nICAgICAgICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsaSIpYGAuICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YCVsdWAgICAgICAgfCB1bnNpZ25lZCBsb25nICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsdSIpYGAuICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YCVsbGRgICAgICAgfCBsb25nIGxvbmcgICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsbGQiKWBgLiAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmF0dHI6YCVsbGlgICAgICAgfCBsb25nIGxvbmcgICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsbGkiKWBgLiAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YCVsbHVgICAgICAgfCB1bnNpZ25lZCBsb25nIGxvbmcgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsbHUiKWBgLiAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YCV6ZGAgICAgICAgfCBQeV9zc2l6ZV90ICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiV6ZCIpYGAuICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmF0dHI6YCV6aWAgICAgICAgfCBQeV9zc2l6ZV90ICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiV6aSIpYGAuICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YCV6dWAgICAgICAgfCBzaXplX3QgICAgICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiV6dSIpYGAuICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKQEAgLTMyMiw0NyArNTI3LDE4IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgU3VwcG9ydCBmb3IgYGAiJWxsZCJgYCBhbmQgYGAiJWxsdSJgYCBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgZm9yIGBgIiVsaSJgYCwgYGAiJWxsaSJgYCBhbmQgYGAiJXppImBgIGFkZGVkLgorCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0Zyb21Gb3JtYXRWKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJncykKIAogICAgSWRlbnRpY2FsIHRvIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tRm9ybWF0YCBleGNlcHQgdGhhdCBpdCB0YWtlcyBleGFjdGx5IHR3bwogICAgYXJndW1lbnRzLgogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsVG9BU0NJSShQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUpCiAKLSAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGJ5IHJlcGxhY2luZyBhbGwgZGVjaW1hbCBkaWdpdHMgaW4KLSAgIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIGJ5IEFTQ0lJIGRpZ2l0cyAwLS05Ci0gICBhY2NvcmRpbmcgdG8gdGhlaXIgZGVjaW1hbCB2YWx1ZS4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uCi0gICBvY2N1cnMuCi0KLQotLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUqIFB5VW5pY29kZV9Bc1VuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIFJldHVybiBhIHJlYWQtb25seSBwb2ludGVyIHRvIHRoZSBVbmljb2RlIG9iamVjdCdzIGludGVybmFsCi0gICA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIsICpOVUxMKiBpZiAqdW5pY29kZSogaXMgbm90IGEgVW5pY29kZSBvYmplY3QuCi0gICBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmBQeV9VTklDT0RFKmAgc3RyaW5nIG1heSBjb250YWluIGVtYmVkZGVkCi0gICBudWxsIGNoYXJhY3RlcnMsIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzdHJpbmcgdG8gYmUgdHJ1bmNhdGVkIHdoZW4gdXNlZCBpbgotICAgbW9zdCBDIGZ1bmN0aW9ucy4KLQotCi0uLiBjOmZ1bmN0aW9uOjogUHlfVU5JQ09ERSogUHlVbmljb2RlX0FzVW5pY29kZUNvcHkoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIENyZWF0ZSBhIGNvcHkgb2YgYSBVbmljb2RlIHN0cmluZyBlbmRpbmcgd2l0aCBhIG51bCBjaGFyYWN0ZXIuIFJldHVybiAqTlVMTCoKLSAgIGFuZCByYWlzZSBhIDpleGM6YE1lbW9yeUVycm9yYCBleGNlcHRpb24gb24gbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZSwKLSAgIG90aGVyd2lzZSByZXR1cm4gYSBuZXcgYWxsb2NhdGVkIGJ1ZmZlciAodXNlIDpjOmZ1bmM6YFB5TWVtX0ZyZWVgIHRvIGZyZWUKLSAgIHRoZSBidWZmZXIpLiBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmBQeV9VTklDT0RFKmAgc3RyaW5nIG1heSBjb250YWluCi0gICBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMsIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzdHJpbmcgdG8gYmUgdHJ1bmNhdGVkIHdoZW4KLSAgIHVzZWQgaW4gbW9zdCBDIGZ1bmN0aW9ucy4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KLQotLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0dldFNpemUoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBVbmljb2RlIG9iamVjdC4KLQotCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdChQeU9iamVjdCAqb2JqLCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QoUHlPYmplY3QgKm9iaiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIENvZXJjZSBhbiBlbmNvZGVkIG9iamVjdCAqb2JqKiB0byBhbiBVbmljb2RlIG9iamVjdCBhbmQgcmV0dXJuIGEgcmVmZXJlbmNlIHdpdGgKICAgIGluY3JlbWVudGVkIHJlZmNvdW50LgpAQCAtMzc5LDE1ICs1NTUsMjI4IEBACiAgICBkZWNyZWYnaW5nIHRoZSByZXR1cm5lZCBvYmplY3RzLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HZXRMZW5ndGgoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBVbmljb2RlIG9iamVjdCwgaW4gY29kZSBwb2ludHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKFB5T2JqZWN0ICp0bywgUHlfc3NpemVfdCB0b19zdGFydCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRvLCBQeV9zc2l6ZV90IGZyb21fc3RhcnQsIFB5X3NzaXplX3QgaG93X21hbnkpCisKKyAgIENvcHkgY2hhcmFjdGVycyBmcm9tIG9uZSBVbmljb2RlIG9iamVjdCBpbnRvIGFub3RoZXIuICBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zCisgICBjaGFyYWN0ZXIgY29udmVyc2lvbiB3aGVuIG5lY2Vzc2FyeSBhbmQgZmFsbHMgYmFjayB0byA6YzpmdW5jOmBtZW1jcHlgIGlmCisgICBwb3NzaWJsZS4gIFJldHVybnMgYGAtMWBgIGFuZCBzZXRzIGFuIGV4Y2VwdGlvbiBvbiBlcnJvciwgb3RoZXJ3aXNlIHJldHVybnMKKyAgIGBgMGBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfRmlsbChQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBzdGFydCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgZmlsbF9jaGFyKQorCisgICBGaWxsIGEgc3RyaW5nIHdpdGggYSBjaGFyYWN0ZXI6IHdyaXRlICpmaWxsX2NoYXIqIGludG8KKyAgIGBgdW5pY29kZVtzdGFydDpzdGFydCtsZW5ndGhdYGAuCisKKyAgIEZhaWwgaWYgKmZpbGxfY2hhciogaXMgYmlnZ2VyIHRoYW4gdGhlIHN0cmluZyBtYXhpbXVtIGNoYXJhY3Rlciwgb3IgaWYgdGhlCisgICBzdHJpbmcgaGFzIG1vcmUgdGhhbiAxIHJlZmVyZW5jZS4KKworICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygd3JpdHRlbiBjaGFyYWN0ZXIsIG9yIHJldHVybiBgYC0xYGAgYW5kIHJhaXNlIGFuCisgICBleGNlcHRpb24gb24gZXJyb3IuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX1dyaXRlQ2hhcihQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBpbmRleCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgY2hhcmFjdGVyKQorCisgICBXcml0ZSBhIGNoYXJhY3RlciB0byBhIHN0cmluZy4gIFRoZSBzdHJpbmcgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCB0aHJvdWdoCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfTmV3YC4gIFNpbmNlIFVuaWNvZGUgc3RyaW5ncyBhcmUgc3VwcG9zZWQgdG8gYmUgaW1tdXRhYmxlLAorICAgdGhlIHN0cmluZyBtdXN0IG5vdCBiZSBzaGFyZWQsIG9yIGhhdmUgYmVlbiBoYXNoZWQgeWV0LgorCisgICBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0aGF0ICp1bmljb2RlKiBpcyBhIFVuaWNvZGUgb2JqZWN0LCB0aGF0IHRoZSBpbmRleCBpcworICAgbm90IG91dCBvZiBib3VuZHMsIGFuZCB0aGF0IHRoZSBvYmplY3QgY2FuIGJlIG1vZGlmaWVkIHNhZmVseSAoaS5lLiB0aGF0IGl0CisgICBpdHMgcmVmZXJlbmNlIGNvdW50IGlzIG9uZSksIGluIGNvbnRyYXN0IHRvIHRoZSBtYWNybyB2ZXJzaW9uCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfV1JJVEVfQ0hBUmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9VQ1M0IFB5VW5pY29kZV9SZWFkQ2hhcihQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBpbmRleCkKKworICAgUmVhZCBhIGNoYXJhY3RlciBmcm9tIGEgc3RyaW5nLiAgVGhpcyBmdW5jdGlvbiBjaGVja3MgdGhhdCAqdW5pY29kZSogaXMgYQorICAgVW5pY29kZSBvYmplY3QgYW5kIHRoZSBpbmRleCBpcyBub3Qgb3V0IG9mIGJvdW5kcywgaW4gY29udHJhc3QgdG8gdGhlIG1hY3JvCisgICB2ZXJzaW9uIDpjOmZ1bmM6YFB5VW5pY29kZV9SRUFEX0NIQVJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9TdWJzdHJpbmcoUHlPYmplY3QgKnN0ciwgUHlfc3NpemVfdCBzdGFydCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kKQorCisgICBSZXR1cm4gYSBzdWJzdHJpbmcgb2YgKnN0ciosIGZyb20gY2hhcmFjdGVyIGluZGV4ICpzdGFydCogKGluY2x1ZGVkKSB0bworICAgY2hhcmFjdGVyIGluZGV4ICplbmQqIChleGNsdWRlZCkuICBOZWdhdGl2ZSBpbmRpY2VzIGFyZSBub3Qgc3VwcG9ydGVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVUNTNCogUHlVbmljb2RlX0FzVUNTNChQeU9iamVjdCAqdSwgUHlfVUNTNCAqYnVmZmVyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGJ1ZmxlbiwgaW50IGNvcHlfbnVsbCkKKworICAgQ29weSB0aGUgc3RyaW5nICp1KiBpbnRvIGEgVUNTNCBidWZmZXIsIGluY2x1ZGluZyBhIG51bGwgY2hhcmFjdGVyLCBpZgorICAgKmNvcHlfbnVsbCogaXMgc2V0LiAgUmV0dXJucyAqTlVMTCogYW5kIHNldHMgYW4gZXhjZXB0aW9uIG9uIGVycm9yIChpbgorICAgcGFydGljdWxhciwgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpZiAqYnVmbGVuKiBpcyBzbWFsbGVyIHRoYW4gdGhlIGxlbmd0aCBvZgorICAgKnUqKS4gICpidWZmZXIqIGlzIHJldHVybmVkIG9uIHN1Y2Nlc3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9VQ1M0KiBQeVVuaWNvZGVfQXNVQ1M0Q29weShQeU9iamVjdCAqdSkKKworICAgQ29weSB0aGUgc3RyaW5nICp1KiBpbnRvIGEgbmV3IFVDUzQgYnVmZmVyIHRoYXQgaXMgYWxsb2NhdGVkIHVzaW5nCisgICA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgLiAgSWYgdGhpcyBmYWlscywgKk5VTEwqIGlzIHJldHVybmVkIHdpdGggYQorICAgOmV4YzpgTWVtb3J5RXJyb3JgIHNldC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworRGVwcmVjYXRlZCBQeV9VTklDT0RFIEFQSXMKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKKy4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKworVGhlc2UgQVBJIGZ1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCB3aXRoIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiA6cGVwOmAzOTNgLgorRXh0ZW5zaW9uIG1vZHVsZXMgY2FuIGNvbnRpbnVlIHVzaW5nIHRoZW0sIGFzIHRoZXkgd2lsbCBub3QgYmUgcmVtb3ZlZCBpbiBQeXRob24KKzMueCwgYnV0IG5lZWQgdG8gYmUgYXdhcmUgdGhhdCB0aGVpciB1c2UgY2FuIG5vdyBjYXVzZSBwZXJmb3JtYW5jZSBhbmQgbWVtb3J5IGhpdHMuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoY29uc3QgUHlfVU5JQ09ERSAqdSwgUHlfc3NpemVfdCBzaXplKQorCisgICBDcmVhdGUgYSBVbmljb2RlIG9iamVjdCBmcm9tIHRoZSBQeV9VTklDT0RFIGJ1ZmZlciAqdSogb2YgdGhlIGdpdmVuIHNpemUuICp1KgorICAgbWF5IGJlICpOVUxMKiB3aGljaCBjYXVzZXMgdGhlIGNvbnRlbnRzIHRvIGJlIHVuZGVmaW5lZC4gSXQgaXMgdGhlIHVzZXIncworICAgcmVzcG9uc2liaWxpdHkgdG8gZmlsbCBpbiB0aGUgbmVlZGVkIGRhdGEuICBUaGUgYnVmZmVyIGlzIGNvcGllZCBpbnRvIHRoZSBuZXcKKyAgIG9iamVjdC4KKworICAgSWYgdGhlIGJ1ZmZlciBpcyBub3QgKk5VTEwqLCB0aGUgcmV0dXJuIHZhbHVlIG1pZ2h0IGJlIGEgc2hhcmVkIG9iamVjdC4KKyAgIFRoZXJlZm9yZSwgbW9kaWZpY2F0aW9uIG9mIHRoZSByZXN1bHRpbmcgVW5pY29kZSBvYmplY3QgaXMgb25seSBhbGxvd2VkIHdoZW4KKyAgICp1KiBpcyAqTlVMTCouCisKKyAgIElmIHRoZSBidWZmZXIgaXMgKk5VTEwqLCA6YzpmdW5jOmBQeVVuaWNvZGVfUkVBRFlgIG11c3QgYmUgY2FsbGVkIG9uY2UgdGhlCisgICBzdHJpbmcgY29udGVudCBoYXMgYmVlbiBmaWxsZWQgYmVmb3JlIHVzaW5nIGFueSBvZiB0aGUgYWNjZXNzIG1hY3JvcyBzdWNoIGFzCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfS0lORGAuCisKKyAgIFBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGFgIG9yCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfTmV3YC4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVU5JQ09ERSogUHlVbmljb2RlX0FzVW5pY29kZShQeU9iamVjdCAqdW5pY29kZSkKKworICAgUmV0dXJuIGEgcmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIFVuaWNvZGUgb2JqZWN0J3MgaW50ZXJuYWwKKyAgIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciwgb3IgKk5VTEwqIG9uIGVycm9yLiBUaGlzIHdpbGwgY3JlYXRlIHRoZQorICAgOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QgaWYgaXQgaXMgbm90IHlldAorICAgYXZhaWxhYmxlLiBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmBQeV9VTklDT0RFYCBzdHJpbmcgbWF5IGNvbnRhaW4KKyAgIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycywgd2hpY2ggd291bGQgY2F1c2UgdGhlIHN0cmluZyB0byBiZSB0cnVuY2F0ZWQgd2hlbgorICAgdXNlZCBpbiBtb3N0IEMgZnVuY3Rpb25zLgorCisgICBQbGVhc2UgbWlncmF0ZSB0byB1c2luZyA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVQ1M0YCwKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9TdWJzdHJpbmdgLCA6YzpmdW5jOmBQeVVuaWNvZGVfUmVhZENoYXJgIG9yIHNpbWlsYXIgbmV3CisgICBBUElzLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKKworICAgQ3JlYXRlIGEgVW5pY29kZSBvYmplY3QgYnkgcmVwbGFjaW5nIGFsbCBkZWNpbWFsIGRpZ2l0cyBpbgorICAgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogYnkgQVNDSUkgZGlnaXRzIDAtLTkKKyAgIGFjY29yZGluZyB0byB0aGVpciBkZWNpbWFsIHZhbHVlLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gb2NjdXJzLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9VTklDT0RFKiBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCAqc2l6ZSkKKworICAgTGlrZSA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVbmljb2RlYCwgYnV0IGFsc28gc2F2ZXMgdGhlIDpjOmZ1bmM6YFB5X1VOSUNPREVgCisgICBhcnJheSBsZW5ndGggaW4gKnNpemUqLiBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmBQeV9VTklDT0RFKmAgc3RyaW5nCisgICBtYXkgY29udGFpbiBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMsIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzdHJpbmcgdG8gYmUKKyAgIHRydW5jYXRlZCB3aGVuIHVzZWQgaW4gbW9zdCBDIGZ1bmN0aW9ucy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUqIFB5VW5pY29kZV9Bc1VuaWNvZGVDb3B5KFB5T2JqZWN0ICp1bmljb2RlKQorCisgICBDcmVhdGUgYSBjb3B5IG9mIGEgVW5pY29kZSBzdHJpbmcgZW5kaW5nIHdpdGggYSBudWwgY2hhcmFjdGVyLiBSZXR1cm4gKk5VTEwqCisgICBhbmQgcmFpc2UgYSA6ZXhjOmBNZW1vcnlFcnJvcmAgZXhjZXB0aW9uIG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUsCisgICBvdGhlcndpc2UgcmV0dXJuIGEgbmV3IGFsbG9jYXRlZCBidWZmZXIgKHVzZSA6YzpmdW5jOmBQeU1lbV9GcmVlYCB0byBmcmVlCisgICB0aGUgYnVmZmVyKS4gTm90ZSB0aGF0IHRoZSByZXN1bHRpbmcgOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHN0cmluZyBtYXkKKyAgIGNvbnRhaW4gZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXJzLCB3aGljaCB3b3VsZCBjYXVzZSB0aGUgc3RyaW5nIHRvIGJlCisgICB0cnVuY2F0ZWQgd2hlbiB1c2VkIGluIG1vc3QgQyBmdW5jdGlvbnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorCisgICBQbGVhc2UgbWlncmF0ZSB0byB1c2luZyA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVQ1M0Q29weWAgb3Igc2ltaWxhciBuZXcgQVBJcy4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfR2V0U2l6ZShQeU9iamVjdCAqdW5pY29kZSkKKworICAgUmV0dXJuIHRoZSBzaXplIG9mIHRoZSBkZXByZWNhdGVkIDpjOnR5cGU6YFB5X1VOSUNPREVgIHJlcHJlc2VudGF0aW9uLCBpbgorICAgY29kZSB1bml0cyAodGhpcyBpbmNsdWRlcyBzdXJyb2dhdGUgcGFpcnMgYXMgMiB1bml0cykuCisKKyAgIFBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9HZXRMZW5ndGhgLgorCisKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0Zyb21PYmplY3QoUHlPYmplY3QgKm9iaikKIAogICAgU2hvcnRjdXQgZm9yIGBgUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KG9iaiwgTlVMTCwgInN0cmljdCIpYGAgd2hpY2ggaXMgdXNlZAogICAgdGhyb3VnaG91dCB0aGUgaW50ZXJwcmV0ZXIgd2hlbmV2ZXIgY29lcmNpb24gdG8gVW5pY29kZSBpcyBuZWVkZWQuCiAKLUlmIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyA6Yzp0eXBlOmB3Y2hhcl90YCBhbmQgcHJvdmlkZXMgYSBoZWFkZXIgZmlsZSB3Y2hhci5oLAotUHl0aG9uIGNhbiBpbnRlcmZhY2UgZGlyZWN0bHkgdG8gdGhpcyB0eXBlIHVzaW5nIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zLgotU3VwcG9ydCBpcyBvcHRpbWl6ZWQgaWYgUHl0aG9uJ3Mgb3duIDpjOnR5cGU6YFB5X1VOSUNPREVgIHR5cGUgaXMgaWRlbnRpY2FsIHRvCi10aGUgc3lzdGVtJ3MgOmM6dHlwZTpgd2NoYXJfdGAuCisKK0xvY2FsZSBFbmNvZGluZworIiIiIiIiIiIiIiIiIiIiCisKK1RoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZyBjYW4gYmUgdXNlZCB0byBkZWNvZGUgdGV4dCBmcm9tIHRoZSBvcGVyYXRpbmcKK3N5c3RlbS4KKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZShjb25zdCBjaGFyICpzdHIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorCisgICBEZWNvZGUgYSBzdHJpbmcgZnJvbSB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuIFRoZSBzdXBwb3J0ZWQKKyAgIGVycm9yIGhhbmRsZXJzIGFyZSBgYCJzdHJpY3QiYGAgYW5kIGBgInN1cnJvZ2F0ZWVzY2FwZSJgYAorICAgKDpwZXA6YDM4M2ApLiBUaGUgZGVjb2RlciB1c2VzIGBgInN0cmljdCJgYCBlcnJvciBoYW5kbGVyIGlmCisgICAqZXJyb3JzKiBpcyBgYE5VTExgYC4gICpzdHIqIG11c3QgZW5kIHdpdGggYSBudWxsIGNoYXJhY3RlciBidXQKKyAgIGNhbm5vdCBjb250YWluIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycy4KKworICAgLi4gc2VlYWxzbzo6CisKKyAgICAgIFVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZWAgdG8gZGVjb2RlIGEgc3RyaW5nIGZyb20KKyAgICAgIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgICh0aGUgbG9jYWxlIGVuY29kaW5nIHJlYWQgYXQKKyAgICAgIFB5dGhvbiBzdGFydHVwKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKGNvbnN0IGNoYXIgKnN0ciwgY29uc3QgY2hhciAqZXJyb3JzKQorCisgICBTaW1pbGFyIHRvIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplYCwgYnV0IGNvbXB1dGUgdGhlIHN0cmluZworICAgbGVuZ3RoIHVzaW5nIDpjOmZ1bmM6YHN0cmxlbmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZUxvY2FsZShQeU9iamVjdCAqdW5pY29kZSwgY29uc3QgY2hhciAqZXJyb3JzKQorCisgICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB0byB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuIFRoZQorICAgc3VwcG9ydGVkIGVycm9yIGhhbmRsZXJzIGFyZSBgYCJzdHJpY3QiYGAgYW5kIGBgInN1cnJvZ2F0ZWVzY2FwZSJgYAorICAgKDpwZXA6YDM4M2ApLiBUaGUgZW5jb2RlciB1c2VzIGBgInN0cmljdCJgYCBlcnJvciBoYW5kbGVyIGlmCisgICAqZXJyb3JzKiBpcyBgYE5VTExgYC4gUmV0dXJuIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0LiAqc3RyKiBjYW5ub3QKKyAgIGNvbnRhaW4gZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXJzLgorCisgICAuLiBzZWVhbHNvOjoKKworICAgICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHRgIHRvIGVuY29kZSBhIHN0cmluZyB0bworICAgICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAorICAgICAgUHl0aG9uIHN0YXJ0dXApLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCiBGaWxlIFN5c3RlbSBFbmNvZGluZwpAQCAtNDI1LDE5ICs4MTQsMjYgQEAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplKQogCiAgICBEZWNvZGUgYSBzdHJpbmcgdXNpbmcgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgYW5kIHRoZQotICAgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIsIG9yIGBgJ3N0cmljdCdgYCBvbiBXaW5kb3dzLgorICAgYGAic3Vycm9nYXRlZXNjYXBlImBgIGVycm9yIGhhbmRsZXIsIG9yIGBgInN0cmljdCJgYCBvbiBXaW5kb3dzLgogCiAgICBJZiA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBub3Qgc2V0LCBmYWxsIGJhY2sgdG8gdGhlCiAgICBsb2NhbGUgZW5jb2RpbmcuCiAKKyAgIC4uIHNlZWFsc286OgorCisgICAgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBpbml0aWFsaXplZCBhdCBzdGFydHVwIGZyb20gdGhlCisgICAgICBsb2NhbGUgZW5jb2RpbmcgYW5kIGNhbm5vdCBiZSBtb2RpZmllZCBsYXRlci4gSWYgeW91IG5lZWQgdG8gZGVjb2RlIGEKKyAgICAgIHN0cmluZyBmcm9tIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZywgdXNlCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZWAuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICBVc2UgYGAnc3RyaWN0J2BgIGVycm9yIGhhbmRsZXIgb24gV2luZG93cy4KKyAgICAgIFVzZSBgYCJzdHJpY3QiYGAgZXJyb3IgaGFuZGxlciBvbiBXaW5kb3dzLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChjb25zdCBjaGFyICpzKQogCiAgICBEZWNvZGUgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIHVzaW5nIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgCi0gICBhbmQgdGhlIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBlcnJvciBoYW5kbGVyLCBvciBgYCdzdHJpY3QnYGAgb24gV2luZG93cy4KKyAgIGFuZCB0aGUgYGAic3Vycm9nYXRlZXNjYXBlImBgIGVycm9yIGhhbmRsZXIsIG9yIGBgInN0cmljdCJgYCBvbiBXaW5kb3dzLgogCiAgICBJZiA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBub3Qgc2V0LCBmYWxsIGJhY2sgdG8gdGhlCiAgICBsb2NhbGUgZW5jb2RpbmcuCkBAIC00NDUsMTkgKzg0MSwyNiBAQAogICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplYCBpZiB5b3Uga25vdyB0aGUgc3RyaW5nIGxlbmd0aC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgIFVzZSBgYCdzdHJpY3QnYGAgZXJyb3IgaGFuZGxlciBvbiBXaW5kb3dzLgorICAgICAgVXNlIGBgInN0cmljdCJgYCBlcnJvciBoYW5kbGVyIG9uIFdpbmRvd3MuCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KFB5T2JqZWN0ICp1bmljb2RlKQogCiAgICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB0byA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCB3aXRoIHRoZQotICAgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIsIG9yIGBgJ3N0cmljdCdgYCBvbiBXaW5kb3dzLCBhbmQgcmV0dXJuCisgICBgYCJzdXJyb2dhdGVlc2NhcGUiYGAgZXJyb3IgaGFuZGxlciwgb3IgYGAic3RyaWN0ImBgIG9uIFdpbmRvd3MsIGFuZCByZXR1cm4KICAgIDpjbGFzczpgYnl0ZXNgLiBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgbWF5IGNvbnRhaW4KICAgIG51bGwgYnl0ZXMuCiAKICAgIElmIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgIGlzIG5vdCBzZXQsIGZhbGwgYmFjayB0byB0aGUKICAgIGxvY2FsZSBlbmNvZGluZy4KIAorICAgLi4gc2VlYWxzbzo6CisKKyAgICAgIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgIGlzIGluaXRpYWxpemVkIGF0IHN0YXJ0dXAgZnJvbSB0aGUKKyAgICAgIGxvY2FsZSBlbmNvZGluZyBhbmQgY2Fubm90IGJlIG1vZGlmaWVkIGxhdGVyLiBJZiB5b3UgbmVlZCB0byBlbmNvZGUgYQorICAgICAgc3RyaW5nIHRvIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZywgdXNlCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlYC4KKwogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIApAQCAtNDc5LDkgKzg4Miw5IEBACiAgICBDb3B5IHRoZSBVbmljb2RlIG9iamVjdCBjb250ZW50cyBpbnRvIHRoZSA6Yzp0eXBlOmB3Y2hhcl90YCBidWZmZXIgKncqLiAgQXQgbW9zdAogICAgKnNpemUqIDpjOnR5cGU6YHdjaGFyX3RgIGNoYXJhY3RlcnMgYXJlIGNvcGllZCAoZXhjbHVkaW5nIGEgcG9zc2libHkgdHJhaWxpbmcKICAgIDAtdGVybWluYXRpb24gY2hhcmFjdGVyKS4gIFJldHVybiB0aGUgbnVtYmVyIG9mIDpjOnR5cGU6YHdjaGFyX3RgIGNoYXJhY3RlcnMKLSAgIGNvcGllZCBvciAtMSBpbiBjYXNlIG9mIGFuIGVycm9yLiAgTm90ZSB0aGF0IHRoZSByZXN1bHRpbmcgOmM6dHlwZTpgd2NoYXJfdGAKKyAgIGNvcGllZCBvciAtMSBpbiBjYXNlIG9mIGFuIGVycm9yLiAgTm90ZSB0aGF0IHRoZSByZXN1bHRpbmcgOmM6dHlwZTpgd2NoYXJfdCpgCiAgICBzdHJpbmcgbWF5IG9yIG1heSBub3QgYmUgMC10ZXJtaW5hdGVkLiAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIKLSAgIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSA6Yzp0eXBlOmB3Y2hhcl90YCBzdHJpbmcgaXMgMC10ZXJtaW5hdGVkIGluIGNhc2UgdGhpcyBpcworICAgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIDpjOnR5cGU6YHdjaGFyX3QqYCBzdHJpbmcgaXMgMC10ZXJtaW5hdGVkIGluIGNhc2UgdGhpcyBpcwogICAgcmVxdWlyZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBBbHNvLCBub3RlIHRoYXQgdGhlIDpjOnR5cGU6YHdjaGFyX3QqYCBzdHJpbmcKICAgIG1pZ2h0IGNvbnRhaW4gbnVsbCBjaGFyYWN0ZXJzLCB3aGljaCB3b3VsZCBjYXVzZSB0aGUgc3RyaW5nIHRvIGJlIHRydW5jYXRlZAogICAgd2hlbiB1c2VkIHdpdGggbW9zdCBDIGZ1bmN0aW9ucy4KQEAgLTQ5NywxMiArOTAwLDMyIEBACiAgICBSZXR1cm5zIGEgYnVmZmVyIGFsbG9jYXRlZCBieSA6YzpmdW5jOmBQeU1lbV9BbGxvY2AgKHVzZQogICAgOmM6ZnVuYzpgUHlNZW1fRnJlZWAgdG8gZnJlZSBpdCkgb24gc3VjY2Vzcy4gT24gZXJyb3IsIHJldHVybnMgKk5VTEwqLAogICAgKlwqc2l6ZSogaXMgdW5kZWZpbmVkIGFuZCByYWlzZXMgYSA6ZXhjOmBNZW1vcnlFcnJvcmAuIE5vdGUgdGhhdCB0aGUKLSAgIHJlc3VsdGluZyA6Yzp0eXBlOmB3Y2hhcl90KmAgc3RyaW5nIG1pZ2h0IGNvbnRhaW4gbnVsbCBjaGFyYWN0ZXJzLCB3aGljaAorICAgcmVzdWx0aW5nIDpjOnR5cGU6YHdjaGFyX3RgIHN0cmluZyBtaWdodCBjb250YWluIG51bGwgY2hhcmFjdGVycywgd2hpY2gKICAgIHdvdWxkIGNhdXNlIHRoZSBzdHJpbmcgdG8gYmUgdHJ1bmNhdGVkIHdoZW4gdXNlZCB3aXRoIG1vc3QgQyBmdW5jdGlvbnMuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKK1VDUzQgU3VwcG9ydAorIiIiIiIiIiIiIiIiCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBYWFggYXJlIHRoZXNlIG1lYW50IHRvIGJlIHB1YmxpYz8KKworLi4gYzpmdW5jdGlvbjo6IHNpemVfdCBQeV9VQ1M0X3N0cmxlbihjb25zdCBQeV9VQ1M0ICp1KQorICAgICAgICAgICAgICAgIFB5X1VDUzQqIFB5X1VDUzRfc3RyY3B5KFB5X1VDUzQgKnMxLCBjb25zdCBQeV9VQ1M0ICpzMikKKyAgICAgICAgICAgICAgICBQeV9VQ1M0KiBQeV9VQ1M0X3N0cm5jcHkoUHlfVUNTNCAqczEsIGNvbnN0IFB5X1VDUzQgKnMyLCBzaXplX3QgbikKKyAgICAgICAgICAgICAgICBQeV9VQ1M0KiBQeV9VQ1M0X3N0cmNhdChQeV9VQ1M0ICpzMSwgY29uc3QgUHlfVUNTNCAqczIpCisgICAgICAgICAgICAgICAgaW50IFB5X1VDUzRfc3RyY21wKGNvbnN0IFB5X1VDUzQgKnMxLCBjb25zdCBQeV9VQ1M0ICpzMikKKyAgICAgICAgICAgICAgICBpbnQgUHlfVUNTNF9zdHJuY21wKGNvbnN0IFB5X1VDUzQgKnMxLCBjb25zdCBQeV9VQ1M0ICpzMiwgc2l6ZV90IG4pCisgICAgICAgICAgICAgICAgUHlfVUNTNCogUHlfVUNTNF9zdHJjaHIoY29uc3QgUHlfVUNTNCAqcywgUHlfVUNTNCBjKQorICAgICAgICAgICAgICAgIFB5X1VDUzQqIFB5X1VDUzRfc3RycmNocihjb25zdCBQeV9VQ1M0ICpzLCBQeV9VQ1M0IGMpCisKKyAgIFRoZXNlIHV0aWxpdHkgZnVuY3Rpb25zIHdvcmsgb24gc3RyaW5ncyBvZiA6Yzp0eXBlOmBQeV9VQ1M0YCBjaGFyYWN0ZXJzIGFuZAorICAgb3RoZXJ3aXNlIGJlaGF2ZSBsaWtlIHRoZSBDIHN0YW5kYXJkIGxpYnJhcnkgZnVuY3Rpb25zIHdpdGggdGhlIHNhbWUgbmFtZS4KKworCiAuLiBfYnVpbHRpbmNvZGVjczoKIAogQnVpbHQtaW4gQ29kZWNzCkBAIC01MzcsNyArOTYwLDggQEAKIFRoZXNlIGFyZSB0aGUgZ2VuZXJpYyBjb2RlYyBBUElzOgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGUoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQogCiAgICBDcmVhdGUgYSBVbmljb2RlIG9iamVjdCBieSBkZWNvZGluZyAqc2l6ZSogYnl0ZXMgb2YgdGhlIGVuY29kZWQgc3RyaW5nICpzKi4KICAgICplbmNvZGluZyogYW5kICplcnJvcnMqIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyB0aGUgcGFyYW1ldGVycyBvZiB0aGUgc2FtZSBuYW1lCkBAIC01NDYsNyArOTcwLDE4IEBACiAgICB0aGUgY29kZWMuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKKworICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcyBvYmplY3QuCisgICAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgdGhlIHBhcmFtZXRlcnMgb2YgdGhlIHNhbWUKKyAgIG5hbWUgaW4gdGhlIFVuaWNvZGUgOm1ldGg6YGVuY29kZWAgbWV0aG9kLiBUaGUgY29kZWMgdG8gYmUgdXNlZCBpcyBsb29rZWQgdXAKKyAgIHVzaW5nIHRoZSBQeXRob24gY29kZWMgcmVnaXN0cnkuIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkKKyAgIHRoZSBjb2RlYy4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGUoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQogCiAgICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciAqcyogb2YgdGhlIGdpdmVuICpzaXplKiBhbmQgcmV0dXJuIGEgUHl0aG9uCiAgICBieXRlcyBvYmplY3QuICAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgdGhlCkBAIC01NTQsMTQgKzk4OSw5IEBACiAgICB0byBiZSB1c2VkIGlzIGxvb2tlZCB1cCB1c2luZyB0aGUgUHl0aG9uIGNvZGVjIHJlZ2lzdHJ5LiAgUmV0dXJuICpOVUxMKiBpZiBhbgogICAgZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCi0KLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKLQotICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcyBvYmplY3QuCi0gICAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgdGhlIHBhcmFtZXRlcnMgb2YgdGhlIHNhbWUKLSAgIG5hbWUgaW4gdGhlIFVuaWNvZGUgOm1ldGg6YGVuY29kZWAgbWV0aG9kLiBUaGUgY29kZWMgdG8gYmUgdXNlZCBpcyBsb29rZWQgdXAKLSAgIHVzaW5nIHRoZSBQeXRob24gY29kZWMgcmVnaXN0cnkuIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkKLSAgIHRoZSBjb2RlYy4KKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEk7IHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nYC4KIAogCiBVVEYtOCBDb2RlY3MKQEAgLTU3Niw3ICsxMDA2LDggQEAKICAgICpzKi4gUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgUHlfc3NpemVfdCAqY29uc3VtZWQpCiAKICAgIElmICpjb25zdW1lZCogaXMgKk5VTEwqLCBiZWhhdmUgbGlrZSA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlVVRGOGAuIElmCiAgICAqY29uc3VtZWQqIGlzIG5vdCAqTlVMTCosIHRyYWlsaW5nIGluY29tcGxldGUgVVRGLTggYnl0ZSBzZXF1ZW5jZXMgd2lsbCBub3QgYmUKQEAgLTU4NCwxMyArMTAxNSw2IEBACiAgICB0aGF0IGhhdmUgYmVlbiBkZWNvZGVkIHdpbGwgYmUgc3RvcmVkIGluICpjb25zdW1lZCouCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlVVRGOChjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKLQotICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgKnMqIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgVVRGLTggYW5kCi0gICByZXR1cm4gYSBQeXRob24gYnl0ZXMgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQotICAgdGhlIGNvZGVjLgotCi0KIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzVVRGOFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKIAogICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdXNpbmcgVVRGLTggYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcwpAQCAtNTk4LDEzICsxMDIyLDQ4IEBACiAgICByYWlzZWQgYnkgdGhlIGNvZGVjLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBjaGFyKiBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCAqc2l6ZSkKKworICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgZGVmYXVsdCBlbmNvZGluZyAoVVRGLTgpIG9mIHRoZSBVbmljb2RlIG9iamVjdCwgYW5kCisgICBzdG9yZSB0aGUgc2l6ZSBvZiB0aGUgZW5jb2RlZCByZXByZXNlbnRhdGlvbiAoaW4gYnl0ZXMpIGluICpzaXplKi4gICpzaXplKgorICAgY2FuIGJlICpOVUxMKiwgaW4gdGhpcyBjYXNlIG5vIHNpemUgd2lsbCBiZSBzdG9yZWQuCisKKyAgIEluIHRoZSBjYXNlIG9mIGFuIGVycm9yLCAqTlVMTCogaXMgcmV0dXJuZWQgd2l0aCBhbiBleGNlcHRpb24gc2V0IGFuZCBubworICAgKnNpemUqIGlzIHN0b3JlZC4KKworICAgVGhpcyBjYWNoZXMgdGhlIFVURi04IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzdHJpbmcgaW4gdGhlIFVuaWNvZGUgb2JqZWN0LCBhbmQKKyAgIHN1YnNlcXVlbnQgY2FsbHMgd2lsbCByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBzYW1lIGJ1ZmZlci4gIFRoZSBjYWxsZXIgaXMgbm90CisgICByZXNwb25zaWJsZSBmb3IgZGVhbGxvY2F0aW5nIHRoZSBidWZmZXIuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBjaGFyKiBQeVVuaWNvZGVfQXNVVEY4KFB5T2JqZWN0ICp1bmljb2RlKQorCisgICBBcyA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZWAsIGJ1dCBkb2VzIG5vdCBzdG9yZSB0aGUgc2l6ZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlVVRGOChjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKKworICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgKnMqIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgVVRGLTggYW5kCisgICByZXR1cm4gYSBQeXRob24gYnl0ZXMgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQorICAgdGhlIGNvZGVjLgorCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVVRGOFN0cmluZ2Agb3IgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVVRGOEFuZFNpemVgLgorCisKIFVURi0zMiBDb2RlY3MKICIiIiIiIiIiIiIiIiIKIAogVGhlc2UgYXJlIHRoZSBVVEYtMzIgY29kZWMgQVBJczoKIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEYzMihjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpieXRlb3JkZXIpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEYzMihjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpieXRlb3JkZXIpCiAKICAgIERlY29kZSAqc2l6ZSogYnl0ZXMgZnJvbSBhIFVURi0zMiBlbmNvZGVkIGJ1ZmZlciBzdHJpbmcgYW5kIHJldHVybiB0aGUKICAgIGNvcnJlc3BvbmRpbmcgVW5pY29kZSBvYmplY3QuICAqZXJyb3JzKiAoaWYgbm9uLSpOVUxMKikgZGVmaW5lcyB0aGUgZXJyb3IKQEAgLTYyNSwxNCArMTA4NCwxMyBAQAogICAgQWZ0ZXIgY29tcGxldGlvbiwgKlwqYnl0ZW9yZGVyKiBpcyBzZXQgdG8gdGhlIGN1cnJlbnQgYnl0ZSBvcmRlciBhdCB0aGUgZW5kCiAgICBvZiBpbnB1dCBkYXRhLgogCi0gICBJbiBhIG5hcnJvdyBidWlsZCBjb2RlcG9pbnRzIG91dHNpZGUgdGhlIEJNUCB3aWxsIGJlIGRlY29kZWQgYXMgc3Vycm9nYXRlIHBhaXJzLgotCiAgICBJZiAqYnl0ZW9yZGVyKiBpcyAqTlVMTCosIHRoZSBjb2RlYyBzdGFydHMgaW4gbmF0aXZlIG9yZGVyIG1vZGUuCiAKICAgIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMsIGludCAqYnl0ZW9yZGVyLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCAqYnl0ZW9yZGVyLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKIAogICAgSWYgKmNvbnN1bWVkKiBpcyAqTlVMTCosIGJlaGF2ZSBsaWtlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVVVEYzMmAuIElmCiAgICAqY29uc3VtZWQqIGlzIG5vdCAqTlVMTCosIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsYCB3aWxsIG5vdCB0cmVhdApAQCAtNjQxLDcgKzEwOTksMTUgQEAKICAgIHRoYXQgaGF2ZSBiZWVuIGRlY29kZWQgd2lsbCBiZSBzdG9yZWQgaW4gKmNvbnN1bWVkKi4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEYzMihjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlcikKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIFJldHVybiBhIFB5dGhvbiBieXRlIHN0cmluZyB1c2luZyB0aGUgVVRGLTMyIGVuY29kaW5nIGluIG5hdGl2ZSBieXRlCisgICBvcmRlci4gVGhlIHN0cmluZyBhbHdheXMgc3RhcnRzIHdpdGggYSBCT00gbWFyay4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLgorICAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlVVRGMzIoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBieXRlb3JkZXIpCiAKICAgIFJldHVybiBhIFB5dGhvbiBieXRlcyBvYmplY3QgaG9sZGluZyB0aGUgVVRGLTMyIGVuY29kZWQgdmFsdWUgb2YgdGhlIFVuaWNvZGUKICAgIGRhdGEgaW4gKnMqLiAgT3V0cHV0IGlzIHdyaXR0ZW4gYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgYnl0ZSBvcmRlcjo6CkBAIC02NTgsMTIgKzExMjQsOSBAQAogCiAgICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAotCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQotCi0gICBSZXR1cm4gYSBQeXRob24gYnl0ZSBzdHJpbmcgdXNpbmcgdGhlIFVURi0zMiBlbmNvZGluZyBpbiBuYXRpdmUgYnl0ZQotICAgb3JkZXIuIFRoZSBzdHJpbmcgYWx3YXlzIHN0YXJ0cyB3aXRoIGEgQk9NIG1hcmsuICBFcnJvciBoYW5kbGluZyBpcyAic3RyaWN0Ii4KLSAgIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nYC4KIAogCiBVVEYtMTYgQ29kZWNzCkBAIC02NzIsNyArMTEzNSw4IEBACiBUaGVzZSBhcmUgdGhlIFVURi0xNiBjb2RlYyBBUElzOgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjE2KGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmJ5dGVvcmRlcikKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjE2KGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmJ5dGVvcmRlcikKIAogICAgRGVjb2RlICpzaXplKiBieXRlcyBmcm9tIGEgVVRGLTE2IGVuY29kZWQgYnVmZmVyIHN0cmluZyBhbmQgcmV0dXJuIHRoZQogICAgY29ycmVzcG9uZGluZyBVbmljb2RlIG9iamVjdC4gICplcnJvcnMqIChpZiBub24tKk5VTEwqKSBkZWZpbmVzIHRoZSBlcnJvcgpAQCAtNjk5LDcgKzExNjMsOCBAQAogICAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpieXRlb3JkZXIsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpieXRlb3JkZXIsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQogCiAgICBJZiAqY29uc3VtZWQqIGlzICpOVUxMKiwgYmVoYXZlIGxpa2UgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZVVURjE2YC4gSWYKICAgICpjb25zdW1lZCogaXMgbm90ICpOVUxMKiwgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWxgIHdpbGwgbm90IHRyZWF0CkBAIC03MDgsNyArMTE3MywxNSBAQAogICAgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgaGF2ZSBiZWVuIGRlY29kZWQgd2lsbCBiZSBzdG9yZWQgaW4gKmNvbnN1bWVkKi4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEYxNihjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlcikKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIFJldHVybiBhIFB5dGhvbiBieXRlIHN0cmluZyB1c2luZyB0aGUgVVRGLTE2IGVuY29kaW5nIGluIG5hdGl2ZSBieXRlCisgICBvcmRlci4gVGhlIHN0cmluZyBhbHdheXMgc3RhcnRzIHdpdGggYSBCT00gbWFyay4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLgorICAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlVVRGMTYoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBieXRlb3JkZXIpCiAKICAgIFJldHVybiBhIFB5dGhvbiBieXRlcyBvYmplY3QgaG9sZGluZyB0aGUgVVRGLTE2IGVuY29kZWQgdmFsdWUgb2YgdGhlIFVuaWNvZGUKICAgIGRhdGEgaW4gKnMqLiAgT3V0cHV0IGlzIHdyaXR0ZW4gYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgYnl0ZSBvcmRlcjo6CkBAIC03MjYsMTIgKzExOTksOSBAQAogCiAgICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAotCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc1VURjE2U3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQotCi0gICBSZXR1cm4gYSBQeXRob24gYnl0ZSBzdHJpbmcgdXNpbmcgdGhlIFVURi0xNiBlbmNvZGluZyBpbiBuYXRpdmUgYnl0ZQotICAgb3JkZXIuIFRoZSBzdHJpbmcgYWx3YXlzIHN0YXJ0cyB3aXRoIGEgQk9NIG1hcmsuICBFcnJvciBoYW5kbGluZyBpcyAic3RyaWN0Ii4KLSAgIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VURjE2U3RyaW5nYC4KIAogCiBVVEYtNyBDb2RlY3MKQEAgLTc0Niw3ICsxMjE2LDggQEAKICAgICpzKi4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycywgUHlfc3NpemVfdCAqY29uc3VtZWQpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQogCiAgICBJZiAqY29uc3VtZWQqIGlzICpOVUxMKiwgYmVoYXZlIGxpa2UgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZVVURjdgLiAgSWYKICAgICpjb25zdW1lZCogaXMgbm90ICpOVUxMKiwgdHJhaWxpbmcgaW5jb21wbGV0ZSBVVEYtNyBiYXNlLTY0IHNlY3Rpb25zIHdpbGwgbm90CkBAIC03NTQsNyArMTIyNSw4IEBACiAgICBieXRlcyB0aGF0IGhhdmUgYmVlbiBkZWNvZGVkIHdpbGwgYmUgc3RvcmVkIGluICpjb25zdW1lZCouCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlVVRGNyhjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIGludCBiYXNlNjRTZXRPLCBpbnQgYmFzZTY0V2hpdGVTcGFjZSwgY29uc3QgY2hhciAqZXJyb3JzKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlVVRGNyhjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiYXNlNjRTZXRPLCBpbnQgYmFzZTY0V2hpdGVTcGFjZSwgY29uc3QgY2hhciAqZXJyb3JzKQogCiAgICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gc2l6ZSB1c2luZyBVVEYtNyBhbmQKICAgIHJldHVybiBhIFB5dGhvbiBieXRlcyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5CkBAIC03NjUsNiArMTIzNywxMSBAQAogICAgbm9uemVybywgd2hpdGVzcGFjZSB3aWxsIGJlIGVuY29kZWQgaW4gYmFzZS02NC4gIEJvdGggYXJlIHNldCB0byB6ZXJvIGZvciB0aGUKICAgIFB5dGhvbiAidXRmLTciIGNvZGVjLgogCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJLgorCisgICAuLiBYWFggcmVwbGFjZSB3aXRoIHdoYXQ/CisKIAogVW5pY29kZS1Fc2NhcGUgQ29kZWNzCiAiIiIiIiIiIiIiIiIiIiIiIiIiIiIKQEAgLTc3MiwxOSArMTI0OSwxMyBAQAogVGhlc2UgYXJlIHRoZSAiVW5pY29kZSBFc2NhcGUiIGNvZGVjIEFQSXM6CiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGJ5IGRlY29kaW5nICpzaXplKiBieXRlcyBvZiB0aGUgVW5pY29kZS1Fc2NhcGUgZW5jb2RlZAogICAgc3RyaW5nICpzKi4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGUoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplKQotCi0gICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIHVzaW5nIFVuaWNvZGUtRXNjYXBlIGFuZAotICAgcmV0dXJuIGEgUHl0aG9uIHN0cmluZyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZQotICAgY29kZWMuCi0KLQogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQogCiAgICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB1c2luZyBVbmljb2RlLUVzY2FwZSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uCkBAIC03OTIsMjUgKzEyNjMsMzAgQEAKICAgIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZShjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUpCisKKyAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgVW5pY29kZS1Fc2NhcGUgYW5kCisgICByZXR1cm4gYSBQeXRob24gc3RyaW5nIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlCisgICBjb2RlYy4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmdgLgorCisKIFJhdy1Vbmljb2RlLUVzY2FwZSBDb2RlY3MKICIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKIAogVGhlc2UgYXJlIHRoZSAiUmF3IFVuaWNvZGUgRXNjYXBlIiBjb2RlYyBBUElzOgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlKGNvbnN0IGNoYXIgKnMsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQogCiAgICBDcmVhdGUgYSBVbmljb2RlIG9iamVjdCBieSBkZWNvZGluZyAqc2l6ZSogYnl0ZXMgb2YgdGhlIFJhdy1Vbmljb2RlLUVzY2FwZQogICAgZW5jb2RlZCBzdHJpbmcgKnMqLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2FwZShjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKLQotICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyBSYXctVW5pY29kZS1Fc2NhcGUKLSAgIGFuZCByZXR1cm4gYSBQeXRob24gc3RyaW5nIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkKLSAgIHRoZSBjb2RlYy4KLQotCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCiAKICAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIFJhdy1Vbmljb2RlLUVzY2FwZSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMKQEAgLTgxOCw2ICsxMjk0LDE4IEBACiAgICB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVSYXdVbmljb2RlRXNjYXBlKGNvbnN0IFB5X1VOSUNPREUgKnMsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQorCisgICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIHVzaW5nIFJhdy1Vbmljb2RlLUVzY2FwZQorICAgYW5kIHJldHVybiBhIFB5dGhvbiBzdHJpbmcgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQorICAgdGhlIGNvZGVjLgorCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZ2AuCisKKwogTGF0aW4tMSBDb2RlY3MKICIiIiIiIiIiIiIiIiIiCiAKQEAgLTgzMSwxOCArMTMxOSwyMiBAQAogICAgKnMqLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIExhdGluLTEgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcworICAgb2JqZWN0LiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMKKyAgIHJhaXNlZCBieSB0aGUgY29kZWMuCisKKwogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQogCiAgICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIHVzaW5nIExhdGluLTEgYW5kCiAgICByZXR1cm4gYSBQeXRob24gYnl0ZXMgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQogICAgdGhlIGNvZGVjLgogCi0KLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQotCi0gICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB1c2luZyBMYXRpbi0xIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBQeXRob24gYnl0ZXMKLSAgIG9iamVjdC4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzCi0gICByYWlzZWQgYnkgdGhlIGNvZGVjLgorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZ2AuCiAKIAogQVNDSUkgQ29kZWNzCkBAIC04NTgsMTggKzEzNTAsMjIgQEAKICAgICpzKi4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIEFTQ0lJIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBQeXRob24gYnl0ZXMKKyAgIG9iamVjdC4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzCisgICByYWlzZWQgYnkgdGhlIGNvZGVjLgorCisKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZUFTQ0lJKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQogCiAgICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIHVzaW5nIEFTQ0lJIGFuZAogICAgcmV0dXJuIGEgUHl0aG9uIGJ5dGVzIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkKICAgIHRoZSBjb2RlYy4KIAotCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQotCi0gICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB1c2luZyBBU0NJSSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uIGJ5dGVzCi0gICBvYmplY3QuICBFcnJvciBoYW5kbGluZyBpcyAic3RyaWN0Ii4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcwotICAgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEk7IHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZ2AuCiAKIAogQ2hhcmFjdGVyIE1hcCBDb2RlY3MKQEAgLTg5OCw3ICsxMzk0LDggQEAKIAogVGhlc2UgYXJlIHRoZSBtYXBwaW5nIGNvZGVjIEFQSXM6CiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZUNoYXJtYXAoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBQeU9iamVjdCAqbWFwcGluZywgY29uc3QgY2hhciAqZXJyb3JzKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGJ5IGRlY29kaW5nICpzaXplKiBieXRlcyBvZiB0aGUgZW5jb2RlZCBzdHJpbmcgKnMqIHVzaW5nCiAgICB0aGUgZ2l2ZW4gKm1hcHBpbmcqIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlCkBAIC05MDgsMTMgKzE0MDUsNiBAQAogICAgdHJlYXRlZCBhcyAidW5kZWZpbmVkIG1hcHBpbmciLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBQeU9iamVjdCAqbWFwcGluZywgY29uc3QgY2hhciAqZXJyb3JzKQotCi0gICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIHVzaW5nIHRoZSBnaXZlbgotICAgKm1hcHBpbmcqIG9iamVjdCBhbmQgcmV0dXJuIGEgUHl0aG9uIHN0cmluZyBvYmplY3QuIFJldHVybiAqTlVMTCogaWYgYW4KLSAgIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KLQotCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUsIFB5T2JqZWN0ICptYXBwaW5nKQogCiAgICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB1c2luZyB0aGUgZ2l2ZW4gKm1hcHBpbmcqIG9iamVjdCBhbmQgcmV0dXJuIHRoZSByZXN1bHQKQEAgLTkyNCw3ICsxNDE0LDggQEAKIFRoZSBmb2xsb3dpbmcgY29kZWMgQVBJIGlzIHNwZWNpYWwgaW4gdGhhdCBtYXBzIFVuaWNvZGUgdG8gVW5pY29kZS4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgUHlPYmplY3QgKnRhYmxlLCBjb25zdCBjaGFyICplcnJvcnMpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRhYmxlLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIFRyYW5zbGF0ZSBhIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIGJ5IGFwcGx5aW5nIGEKICAgIGNoYXJhY3RlciBtYXBwaW5nICp0YWJsZSogdG8gaXQgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIFVuaWNvZGUgb2JqZWN0LiAgUmV0dXJuCkBAIC05MzcsNiArMTQyOCwyMiBAQAogICAgYW5kIHNlcXVlbmNlcyB3b3JrIHdlbGwuICBVbm1hcHBlZCBjaGFyYWN0ZXIgb3JkaW5hbHMgKG9uZXMgd2hpY2ggY2F1c2UgYQogICAgOmV4YzpgTG9va3VwRXJyb3JgKSBhcmUgbGVmdCB1bnRvdWNoZWQgYW5kIGFyZSBjb3BpZWQgYXMtaXMuCiAKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEkuCisKKyAgIC4uIFhYWCByZXBsYWNlIHdpdGggd2hhdD8KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVDaGFybWFwKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKKworICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyB0aGUgZ2l2ZW4KKyAgICptYXBwaW5nKiBvYmplY3QgYW5kIHJldHVybiBhIFB5dGhvbiBzdHJpbmcgb2JqZWN0LiBSZXR1cm4gKk5VTEwqIGlmIGFuCisgICBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEk7IHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nYC4KIAogCiBNQkNTIGNvZGVjcyBmb3IgV2luZG93cwpAQCAtOTUzLDcgKzE0NjAsOCBAQAogICAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlTUJDU1N0YXRlZnVsKGNvbnN0IGNoYXIgKnMsIGludCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMsIGludCAqY29uc3VtZWQpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVNQkNTU3RhdGVmdWwoY29uc3QgY2hhciAqcywgaW50IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpjb25zdW1lZCkKIAogICAgSWYgKmNvbnN1bWVkKiBpcyAqTlVMTCosIGJlaGF2ZSBsaWtlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVNQkNTYC4gSWYKICAgICpjb25zdW1lZCogaXMgbm90ICpOVUxMKiwgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZU1CQ1NTdGF0ZWZ1bGAgd2lsbCBub3QgZGVjb2RlCkBAIC05NjEsMTggKzE0NjksMzEgQEAKICAgIGluICpjb25zdW1lZCouCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNNQkNTU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorCisgICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB1c2luZyBNQkNTIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBQeXRob24gYnl0ZXMKKyAgIG9iamVjdC4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzCisgICByYWlzZWQgYnkgdGhlIGNvZGVjLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKGludCBjb2RlX3BhZ2UsIFB5T2JqZWN0ICp1bmljb2RlLCBjb25zdCBjaGFyICplcnJvcnMpCisKKyAgIEVuY29kZSB0aGUgVW5pY29kZSBvYmplY3QgdXNpbmcgdGhlIHNwZWNpZmllZCBjb2RlIHBhZ2UgYW5kIHJldHVybiBhIFB5dGhvbgorICAgYnl0ZXMgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuIFVzZQorICAgOmM6ZGF0YTpgQ1BfQUNQYCBjb2RlIHBhZ2UgdG8gZ2V0IHRoZSBNQkNTIGVuY29kZXIuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZU1CQ1MoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgTUJDUyBhbmQgcmV0dXJuCiAgICBhIFB5dGhvbiBieXRlcyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZQogICAgY29kZWMuCiAKLQotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNNQkNTU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQotCi0gICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB1c2luZyBNQkNTIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBQeXRob24gYnl0ZXMKLSAgIG9iamVjdC4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzCi0gICByYWlzZWQgYnkgdGhlIGNvZGVjLgorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc01CQ1NTdHJpbmdgIG9yIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZWAuCiAKIAogTWV0aG9kcyAmIFNsb3RzCkBAIC0xMDExLDcgKzE1MzIsOCBAQAogICAgY2hhcmFjdGVycyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgc3RyaW5ncy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9UcmFuc2xhdGUoUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnRhYmxlLCBjb25zdCBjaGFyICplcnJvcnMpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9UcmFuc2xhdGUoUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnRhYmxlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIFRyYW5zbGF0ZSBhIHN0cmluZyBieSBhcHBseWluZyBhIGNoYXJhY3RlciBtYXBwaW5nIHRhYmxlIHRvIGl0IGFuZCByZXR1cm4gdGhlCiAgICByZXN1bHRpbmcgVW5pY29kZSBvYmplY3QuCkBAIC0xMDMzLDE0ICsxNTU1LDE2IEBACiAgICBVbmljb2RlIHN0cmluZy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9UYWlsbWF0Y2goUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnN1YnN0ciwgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9UYWlsbWF0Y2goUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnN1YnN0ciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCiAKICAgIFJldHVybiAxIGlmICpzdWJzdHIqIG1hdGNoZXMgYGBzdHJbc3RhcnQ6ZW5kXWBgIGF0IHRoZSBnaXZlbiB0YWlsIGVuZAogICAgKCpkaXJlY3Rpb24qID09IC0xIG1lYW5zIHRvIGRvIGEgcHJlZml4IG1hdGNoLCAqZGlyZWN0aW9uKiA9PSAxIGEgc3VmZml4IG1hdGNoKSwKICAgIDAgb3RoZXJ3aXNlLiBSZXR1cm4gYGAtMWBgIGlmIGFuIGVycm9yIG9jY3VycmVkLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9GaW5kKFB5T2JqZWN0ICpzdHIsIFB5T2JqZWN0ICpzdWJzdHIsIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kLCBpbnQgZGlyZWN0aW9uKQorLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0ZpbmQoUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnN1YnN0ciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kLCBpbnQgZGlyZWN0aW9uKQogCiAgICBSZXR1cm4gdGhlIGZpcnN0IHBvc2l0aW9uIG9mICpzdWJzdHIqIGluIGBgc3RyW3N0YXJ0OmVuZF1gYCB1c2luZyB0aGUgZ2l2ZW4KICAgICpkaXJlY3Rpb24qICgqZGlyZWN0aW9uKiA9PSAxIG1lYW5zIHRvIGRvIGEgZm9yd2FyZCBzZWFyY2gsICpkaXJlY3Rpb24qID09IC0xIGEKQEAgLTEwNDksMTMgKzE1NzMsMjcgQEAKICAgIG9jY3VycmVkIGFuZCBhbiBleGNlcHRpb24gaGFzIGJlZW4gc2V0LgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9Db3VudChQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKKy4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9GaW5kQ2hhcihQeU9iamVjdCAqc3RyLCBQeV9VQ1M0IGNoLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCisKKyAgIFJldHVybiB0aGUgZmlyc3QgcG9zaXRpb24gb2YgdGhlIGNoYXJhY3RlciAqY2gqIGluIGBgc3RyW3N0YXJ0OmVuZF1gYCB1c2luZworICAgdGhlIGdpdmVuICpkaXJlY3Rpb24qICgqZGlyZWN0aW9uKiA9PSAxIG1lYW5zIHRvIGRvIGEgZm9yd2FyZCBzZWFyY2gsCisgICAqZGlyZWN0aW9uKiA9PSAtMSBhIGJhY2t3YXJkIHNlYXJjaCkuICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBpbmRleCBvZiB0aGUKKyAgIGZpcnN0IG1hdGNoOyBhIHZhbHVlIG9mIGBgLTFgYCBpbmRpY2F0ZXMgdGhhdCBubyBtYXRjaCB3YXMgZm91bmQsIGFuZCBgYC0yYGAKKyAgIGluZGljYXRlcyB0aGF0IGFuIGVycm9yIG9jY3VycmVkIGFuZCBhbiBleGNlcHRpb24gaGFzIGJlZW4gc2V0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfQ291bnQoUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnN1YnN0ciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQogCiAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2YgKnN1YnN0ciogaW4KICAgIGBgc3RyW3N0YXJ0OmVuZF1gYC4gIFJldHVybiBgYC0xYGAgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfUmVwbGFjZShQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyLCBQeU9iamVjdCAqcmVwbHN0ciwgUHlfc3NpemVfdCBtYXhjb3VudCkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1JlcGxhY2UoUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnN1YnN0ciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlcGxzdHIsIFB5X3NzaXplX3QgbWF4Y291bnQpCiAKICAgIFJlcGxhY2UgYXQgbW9zdCAqbWF4Y291bnQqIG9jY3VycmVuY2VzIG9mICpzdWJzdHIqIGluICpzdHIqIHdpdGggKnJlcGxzdHIqIGFuZAogICAgcmV0dXJuIHRoZSByZXN1bHRpbmcgVW5pY29kZSBvYmplY3QuICptYXhjb3VudCogPT0gLTEgbWVhbnMgcmVwbGFjZSBhbGwKQEAgLTEwNzYsNyArMTYxNCw3IEBACiAgICBJU08tODg1OS0xIGlmIGl0IGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIi4KIAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9SaWNoQ29tcGFyZShQeU9iamVjdCAqbGVmdCwgIFB5T2JqZWN0ICpyaWdodCwgIGludCBvcCkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1JpY2hDb21wYXJlKFB5T2JqZWN0ICpsZWZ0LCAgUHlPYmplY3QgKnJpZ2h0LCAgaW50IG9wKQogCiAgICBSaWNoIGNvbXBhcmUgdHdvIHVuaWNvZGUgc3RyaW5ncyBhbmQgcmV0dXJuIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogCkBAIC0xMTAzLDggKzE2NDEsOCBAQAogICAgQ2hlY2sgd2hldGhlciAqZWxlbWVudCogaXMgY29udGFpbmVkIGluICpjb250YWluZXIqIGFuZCByZXR1cm4gdHJ1ZSBvciBmYWxzZQogICAgYWNjb3JkaW5nbHkuCiAKLSAgICplbGVtZW50KiBoYXMgdG8gY29lcmNlIHRvIGEgb25lIGVsZW1lbnQgVW5pY29kZSBzdHJpbmcuIGBgLTFgYCBpcyByZXR1cm5lZCBpZgotICAgdGhlcmUgd2FzIGFuIGVycm9yLgorICAgKmVsZW1lbnQqIGhhcyB0byBjb2VyY2UgdG8gYSBvbmUgZWxlbWVudCBVbmljb2RlIHN0cmluZy4gYGAtMWBgIGlzIHJldHVybmVkCisgICBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAKIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlVbmljb2RlX0ludGVybkluUGxhY2UoUHlPYmplY3QgKipzdHJpbmcpCkBAIC0xMTIzLDcgKzE2NjEsNiBAQAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZyhjb25zdCBjaGFyICp2KQogCiAgICBBIGNvbWJpbmF0aW9uIG9mIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tU3RyaW5nYCBhbmQKLSAgIDpjOmZ1bmM6YFB5VW5pY29kZV9JbnRlcm5JblBsYWNlYCwgcmV0dXJuaW5nIGVpdGhlciBhIG5ldyB1bmljb2RlIHN0cmluZyBvYmplY3QKLSAgIHRoYXQgaGFzIGJlZW4gaW50ZXJuZWQsIG9yIGEgbmV3ICgib3duZWQiKSByZWZlcmVuY2UgdG8gYW4gZWFybGllciBpbnRlcm5lZAotICAgc3RyaW5nIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlLgotCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZWAsIHJldHVybmluZyBlaXRoZXIgYSBuZXcgdW5pY29kZSBzdHJpbmcKKyAgIG9iamVjdCB0aGF0IGhhcyBiZWVuIGludGVybmVkLCBvciBhIG5ldyAoIm93bmVkIikgcmVmZXJlbmNlIHRvIGFuIGVhcmxpZXIKKyAgIGludGVybmVkIHN0cmluZyBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZS4KZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS92ZXJ5aGlnaC5yc3QgYi9Eb2MvYy1hcGkvdmVyeWhpZ2gucnN0CmluZGV4IDQxY2RkNmIuLjQ5OWViM2UgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS92ZXJ5aGlnaC5yc3QKKysrIGIvRG9jL2MtYXBpL3ZlcnloaWdoLnJzdApAQCAtOTUsMTIgKzk1LDYgQEAKICAgIGxlYXZpbmcgKmNsb3NlaXQqIHNldCB0byBgYDBgYCBhbmQgKmZsYWdzKiBzZXQgdG8gKk5VTEwqLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlSdW5fU2ltcGxlRmlsZUZsYWdzKEZJTEUgKmZwLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgUHlDb21waWxlckZsYWdzICpmbGFncykKLQotICAgVGhpcyBpcyBhIHNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIDpjOmZ1bmM6YFB5UnVuX1NpbXBsZUZpbGVFeEZsYWdzYCBiZWxvdywKLSAgIGxlYXZpbmcgKmNsb3NlaXQqIHNldCB0byBgYDBgYC4KLQotCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5UnVuX1NpbXBsZUZpbGVFeChGSUxFICpmcCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBjbG9zZWl0KQogCiAgICBUaGlzIGlzIGEgc2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gOmM6ZnVuYzpgUHlSdW5fU2ltcGxlRmlsZUV4RmxhZ3NgIGJlbG93LApkaWZmIC0tZ2l0IGEvRG9jL2NvbmYucHkgYi9Eb2MvY29uZi5weQppbmRleCA1NTVmMjgxLi42YjA4NWUwIDEwMDY0NAotLS0gYS9Eb2MvY29uZi5weQorKysgYi9Eb2MvY29uZi5weQpAQCAtOTEsNyArOTEsNyBAQAogfQogCiAjIE91dHB1dCBhbiBPcGVuU2VhcmNoIGRlc2NyaXB0aW9uIGZpbGUuCi1odG1sX3VzZV9vcGVuc2VhcmNoID0gJ2h0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy4yJworaHRtbF91c2Vfb3BlbnNlYXJjaCA9ICdodHRwOi8vZG9jcy5weXRob24ub3JnLycgKyB2ZXJzaW9uCiAKICMgQWRkaXRpb25hbCBzdGF0aWMgZmlsZXMuCiBodG1sX3N0YXRpY19wYXRoID0gWyd0b29scy9zcGhpbnhleHQvc3RhdGljJ10KZGlmZiAtLWdpdCBhL0RvYy9jb3B5cmlnaHQucnN0IGIvRG9jL2NvcHlyaWdodC5yc3QKaW5kZXggOWEyNDVjOC4uOTRmNzc3YyAxMDA2NDQKLS0tIGEvRG9jL2NvcHlyaWdodC5yc3QKKysrIGIvRG9jL2NvcHlyaWdodC5yc3QKQEAgLTQsNyArNCw3IEBACiAKIFB5dGhvbiBhbmQgdGhpcyBkb2N1bWVudGF0aW9uIGlzOgogCi1Db3B5cmlnaHQgwqkgMjAwMS0yMDEyIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorQ29weXJpZ2h0IMKpIDIwMDEtMjAxMyBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogQ29weXJpZ2h0IMKpIDIwMDAgQmVPcGVuLmNvbS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIApkaWZmIC0tZ2l0IGEvRG9jL2RhdGEvcmVmY291bnRzLmRhdCBiL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQKaW5kZXggYjVkZGUzMy4uZmFjODlhZiAxMDA2NDQKLS0tIGEvRG9jL2RhdGEvcmVmY291bnRzLmRhdAorKysgYi9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0CkBAIC00NjUsNiArNDY1LDExIEBACiBQeUZ1bmN0aW9uX05ldzpQeU9iamVjdCo6Y29kZTorMToKIFB5RnVuY3Rpb25fTmV3OlB5T2JqZWN0KjpnbG9iYWxzOisxOgogCitQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZTpQeU9iamVjdCo6OisxOgorUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWU6UHlPYmplY3QqOmNvZGU6KzE6CitQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZTpQeU9iamVjdCo6Z2xvYmFsczorMToKK1B5RnVuY3Rpb25fTmV3V2l0aFF1YWxOYW1lOlB5T2JqZWN0KjpxdWFsbmFtZTorMToKKwogUHlGdW5jdGlvbl9TZXRDbG9zdXJlOmludDo6OgogUHlGdW5jdGlvbl9TZXRDbG9zdXJlOlB5T2JqZWN0KjpvcDowOgogUHlGdW5jdGlvbl9TZXRDbG9zdXJlOlB5T2JqZWN0KjpjbG9zdXJlOisxOgpkaWZmIC0tZ2l0IGEvRG9jL2Rpc3R1dGlscy9hcGlyZWYucnN0IGIvRG9jL2Rpc3R1dGlscy9hcGlyZWYucnN0CmluZGV4IGM0MTI3YmQuLjEzODFhZmMgMTAwNjQ0Ci0tLSBhL0RvYy9kaXN0dXRpbHMvYXBpcmVmLnJzdAorKysgYi9Eb2MvZGlzdHV0aWxzL2FwaXJlZi5yc3QKQEAgLTE2Myw3ICsxNjMsNyBAQAogLi4gY2xhc3M6OiBFeHRlbnNpb24KIAogICAgVGhlIEV4dGVuc2lvbiBjbGFzcyBkZXNjcmliZXMgYSBzaW5nbGUgQyBvciBDKytleHRlbnNpb24gbW9kdWxlIGluIGEgc2V0dXAKLSAgIHNjcmlwdC4gSXQgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGtleXdvcmQgYXJndW1lbnRzIGluIGl0cyBjb25zdHJ1Y3RvcgorICAgc2NyaXB0LiBJdCBhY2NlcHRzIHRoZSBmb2xsb3dpbmcga2V5d29yZCBhcmd1bWVudHMgaW4gaXRzIGNvbnN0cnVjdG9yOgogCiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYXJndW1lbnQgbmFtZSAgICAgICAgICB8IHZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICB8IHR5cGUgICAgICAgICAgICAgICAgICAgICAgfApAQCAtOTk5LDcgKzk5OSw3IEBACiAgICB0aGVzZSBmaWxlcyBpcyBhdmFpbGFibGUgaW4gYW5zd2VyIEQyIG9mIHRoZSBgTkZTIEZBUSBwYWdlCiAgICA8aHR0cDovL25mcy5zb3VyY2Vmb3JnZS5uZXQvI3NlY3Rpb25fZD5gXy4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIuNAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMuMQogICAgICAgTkZTIGZpbGVzIGFyZSBpZ25vcmVkLgogCiAuLiBmdW5jdGlvbjo6IHJlbW92ZV90cmVlKGRpcmVjdG9yeVssIHZlcmJvc2U9MCwgZHJ5X3J1bj0wXSkKQEAgLTExNjYsMTIgKzExNjYsMTEgQEAKIAogLi4gZnVuY3Rpb246OiBncm9rX2Vudmlyb25tZW50X2Vycm9yKGV4Y1ssIHByZWZpeD0nZXJyb3I6ICddKQogCi0gICBHZW5lcmF0ZSBhIHVzZWZ1bCBlcnJvciBtZXNzYWdlIGZyb20gYW4gOmV4YzpgRW52aXJvbm1lbnRFcnJvcmAgICg6ZXhjOmBJT0Vycm9yYAotICAgb3IgOmV4YzpgT1NFcnJvcmApIGV4Y2VwdGlvbiBvYmplY3QuICAgSGFuZGxlcyBQeXRob24gMS41LjEgYW5kIGxhdGVyIHN0eWxlcywKLSAgIGFuZCBkb2VzIHdoYXQgaXQgY2FuIHRvIGRlYWwgd2l0aCAgZXhjZXB0aW9uIG9iamVjdHMgdGhhdCBkb24ndCBoYXZlIGEgZmlsZW5hbWUKLSAgICh3aGljaCBoYXBwZW5zIHdoZW4gdGhlIGVycm9yICBpcyBkdWUgdG8gYSB0d28tZmlsZSBvcGVyYXRpb24sIHN1Y2ggYXMKLSAgIDpmdW5jOmByZW5hbWVgIG9yICA6ZnVuYzpgbGlua2ApLiAgUmV0dXJucyB0aGUgZXJyb3IgbWVzc2FnZSBhcyBhIHN0cmluZwotICAgcHJlZml4ZWQgIHdpdGggKnByZWZpeCouCisgICBHZW5lcmF0ZSBhIHVzZWZ1bCBlcnJvciBtZXNzYWdlIGZyb20gYW4gOmV4YzpgT1NFcnJvcmAgZXhjZXB0aW9uIG9iamVjdC4KKyAgIEhhbmRsZXMgUHl0aG9uIDEuNS4xIGFuZCBsYXRlciBzdHlsZXMsIGFuZCBkb2VzIHdoYXQgaXQgY2FuIHRvIGRlYWwgd2l0aAorICAgZXhjZXB0aW9uIG9iamVjdHMgdGhhdCBkb24ndCBoYXZlIGEgZmlsZW5hbWUgKHdoaWNoIGhhcHBlbnMgd2hlbiB0aGUgZXJyb3IKKyAgIGlzIGR1ZSB0byBhIHR3by1maWxlIG9wZXJhdGlvbiwgc3VjaCBhcyA6ZnVuYzpgcmVuYW1lYCBvciA6ZnVuYzpgbGlua2ApLgorICAgUmV0dXJucyB0aGUgZXJyb3IgbWVzc2FnZSBhcyBhIHN0cmluZyBwcmVmaXhlZCB3aXRoICpwcmVmaXgqLgogCiAKIC4uIGZ1bmN0aW9uOjogc3BsaXRfcXVvdGVkKHMpCmRpZmYgLS1naXQgYS9Eb2MvZXh0ZW5kaW5nL2V4dGVuZGluZy5yc3QgYi9Eb2MvZXh0ZW5kaW5nL2V4dGVuZGluZy5yc3QKaW5kZXggN2ZkOWY3Mi4uZWY5NWFjOSAxMDA2NDQKLS0tIGEvRG9jL2V4dGVuZGluZy9leHRlbmRpbmcucnN0CisrKyBiL0RvYy9leHRlbmRpbmcvZXh0ZW5kaW5nLnJzdApAQCAtMzIxLDcgKzMyMSw3IEBACiAKIFRoZSA6Y29uc3Q6YE1FVEhfS0VZV09SRFNgIGJpdCBtYXkgYmUgc2V0IGluIHRoZSB0aGlyZCBmaWVsZCBpZiBrZXl3b3JkCiBhcmd1bWVudHMgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24uICBJbiB0aGlzIGNhc2UsIHRoZSBDIGZ1bmN0aW9uIHNob3VsZAotYWNjZXB0IGEgdGhpcmQgYGBQeU9iamVjdCBcKmBgIHBhcmFtZXRlciB3aGljaCB3aWxsIGJlIGEgZGljdGlvbmFyeSBvZiBrZXl3b3Jkcy4KK2FjY2VwdCBhIHRoaXJkIGBgUHlPYmplY3QgKmBgIHBhcmFtZXRlciB3aGljaCB3aWxsIGJlIGEgZGljdGlvbmFyeSBvZiBrZXl3b3Jkcy4KIFVzZSA6YzpmdW5jOmBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNgIHRvIHBhcnNlIHRoZSBhcmd1bWVudHMgdG8gc3VjaCBhCiBmdW5jdGlvbi4KIApAQCAtMzg0LDkgKzM4NCw2IEBACiAgICAgICAgICAgaW1wb3J0cyBpdC4gKi8KICAgICAgICBQeUltcG9ydF9JbXBvcnRNb2R1bGUoInNwYW0iKTsKIAotQW4gZXhhbXBsZSBtYXkgYmUgZm91bmQgaW4gdGhlIGZpbGUgOmZpbGU6YERlbW8vZW1iZWQvZGVtby5jYCBpbiB0aGUgUHl0aG9uCi1zb3VyY2UgZGlzdHJpYnV0aW9uLgotCiAuLiBub3RlOjoKIAogICAgUmVtb3ZpbmcgZW50cmllcyBmcm9tIGBgc3lzLm1vZHVsZXNgYCBvciBpbXBvcnRpbmcgY29tcGlsZWQgbW9kdWxlcyBpbnRvCmRpZmYgLS1naXQgYS9Eb2MvZXh0ZW5kaW5nL25ld3R5cGVzLnJzdCBiL0RvYy9leHRlbmRpbmcvbmV3dHlwZXMucnN0CmluZGV4IDMwMDE0MTUuLjA4YTcwYTIgMTAwNjQ0Ci0tLSBhL0RvYy9leHRlbmRpbmcvbmV3dHlwZXMucnN0CisrKyBiL0RvYy9leHRlbmRpbmcvbmV3dHlwZXMucnN0CkBAIC0yNiwxMSArMjYsMTIgQEAKID09PT09PT09PT0KIAogVGhlIFB5dGhvbiBydW50aW1lIHNlZXMgYWxsIFB5dGhvbiBvYmplY3RzIGFzIHZhcmlhYmxlcyBvZiB0eXBlCi06Yzp0eXBlOmBQeU9iamVjdFwqYC4gIEEgOmM6dHlwZTpgUHlPYmplY3RgIGlzIG5vdCBhIHZlcnkgbWFnbmlmaWNlbnQgb2JqZWN0IC0gaXQKLWp1c3QgY29udGFpbnMgdGhlIHJlZmNvdW50IGFuZCBhIHBvaW50ZXIgdG8gdGhlIG9iamVjdCdzICJ0eXBlIG9iamVjdCIuICBUaGlzIGlzCi13aGVyZSB0aGUgYWN0aW9uIGlzOyB0aGUgdHlwZSBvYmplY3QgZGV0ZXJtaW5lcyB3aGljaCAoQykgZnVuY3Rpb25zIGdldCBjYWxsZWQKLXdoZW4sIGZvciBpbnN0YW5jZSwgYW4gYXR0cmlidXRlIGdldHMgbG9va2VkIHVwIG9uIGFuIG9iamVjdCBvciBpdCBpcyBtdWx0aXBsaWVkCi1ieSBhbm90aGVyIG9iamVjdC4gIFRoZXNlIEMgZnVuY3Rpb25zIGFyZSBjYWxsZWQgInR5cGUgbWV0aG9kcyIuCis6Yzp0eXBlOmBQeU9iamVjdFwqYCwgd2hpY2ggc2VydmVzIGFzIGEgImJhc2UgdHlwZSIgZm9yIGFsbCBQeXRob24gb2JqZWN0cy4KKzpjOnR5cGU6YFB5T2JqZWN0YCBpdHNlbGYgb25seSBjb250YWlucyB0aGUgcmVmY291bnQgYW5kIGEgcG9pbnRlciB0byB0aGUKK29iamVjdCdzICJ0eXBlIG9iamVjdCIuICBUaGlzIGlzIHdoZXJlIHRoZSBhY3Rpb24gaXM7IHRoZSB0eXBlIG9iamVjdCBkZXRlcm1pbmVzCit3aGljaCAoQykgZnVuY3Rpb25zIGdldCBjYWxsZWQgd2hlbiwgZm9yIGluc3RhbmNlLCBhbiBhdHRyaWJ1dGUgZ2V0cyBsb29rZWQKK3VwIG9uIGFuIG9iamVjdCBvciBpdCBpcyBtdWx0aXBsaWVkIGJ5IGFub3RoZXIgb2JqZWN0LiAgVGhlc2UgQyBmdW5jdGlvbnMKK2FyZSBjYWxsZWQgInR5cGUgbWV0aG9kcyIuCiAKIFNvLCBpZiB5b3Ugd2FudCB0byBkZWZpbmUgYSBuZXcgb2JqZWN0IHR5cGUsIHlvdSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyB0eXBlCiBvYmplY3QuCkBAIC01MCwxNSArNTEsMTUgQEAKICAgICAgICBQeU9iamVjdF9IRUFECiAgICB9IG5vZGR5X05vZGR5T2JqZWN0OwogCi1UaGlzIGlzIHdoYXQgYSBOb2RkeSBvYmplY3Qgd2lsbCBjb250YWluLS0taW4gdGhpcyBjYXNlLCBub3RoaW5nIG1vcmUgdGhhbiBldmVyeQotUHl0aG9uIG9iamVjdCBjb250YWlucywgbmFtZWx5IGEgcmVmY291bnQgYW5kIGEgcG9pbnRlciB0byBhIHR5cGUgb2JqZWN0LiAgVGhlc2UKLWFyZSB0aGUgZmllbGRzIHRoZSBgYFB5T2JqZWN0X0hFQURgYCBtYWNybyBicmluZ3MgaW4uICBUaGUgcmVhc29uIGZvciB0aGUgbWFjcm8KLWlzIHRvIHN0YW5kYXJkaXplIHRoZSBsYXlvdXQgYW5kIHRvIGVuYWJsZSBzcGVjaWFsIGRlYnVnZ2luZyBmaWVsZHMgaW4gZGVidWcKLWJ1aWxkcy4gIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBzZW1pY29sb24gYWZ0ZXIgdGhlIGBgUHlPYmplY3RfSEVBRGBgIG1hY3JvOyBvbmUKLWlzIGluY2x1ZGVkIGluIHRoZSBtYWNybyBkZWZpbml0aW9uLiAgQmUgd2FyeSBvZiBhZGRpbmcgb25lIGJ5IGFjY2lkZW50OyBpdCdzCi1lYXN5IHRvIGRvIGZyb20gaGFiaXQsIGFuZCB5b3VyIGNvbXBpbGVyIG1pZ2h0IG5vdCBjb21wbGFpbiwgYnV0IHNvbWVvbmUgZWxzZSdzCi1wcm9iYWJseSB3aWxsISAgKE9uIFdpbmRvd3MsIE1TVkMgaXMga25vd24gdG8gY2FsbCB0aGlzIGFuIGVycm9yIGFuZCByZWZ1c2UgdG8KLWNvbXBpbGUgdGhlIGNvZGUuKQorVGhpcyBpcyB3aGF0IGEgTm9kZHkgb2JqZWN0IHdpbGwgY29udGFpbi0tLWluIHRoaXMgY2FzZSwgbm90aGluZyBtb3JlIHRoYW4gd2hhdAorZXZlcnkgUHl0aG9uIG9iamVjdCBjb250YWlucy0tLWEgcmVmY291bnQgYW5kIGEgcG9pbnRlciB0byBhIHR5cGUgb2JqZWN0LgorVGhlc2UgYXJlIHRoZSBmaWVsZHMgdGhlIGBgUHlPYmplY3RfSEVBRGBgIG1hY3JvIGJyaW5ncyBpbi4gIFRoZSByZWFzb24gZm9yIHRoZQorbWFjcm8gaXMgdG8gc3RhbmRhcmRpemUgdGhlIGxheW91dCBhbmQgdG8gZW5hYmxlIHNwZWNpYWwgZGVidWdnaW5nIGZpZWxkcyBpbgorZGVidWcgYnVpbGRzLiAgTm90ZSB0aGF0IHRoZXJlIGlzIG5vIHNlbWljb2xvbiBhZnRlciB0aGUgYGBQeU9iamVjdF9IRUFEYGAKK21hY3JvOyBvbmUgaXMgaW5jbHVkZWQgaW4gdGhlIG1hY3JvIGRlZmluaXRpb24uICBCZSB3YXJ5IG9mIGFkZGluZyBvbmUgYnkKK2FjY2lkZW50OyBpdCdzIGVhc3kgdG8gZG8gZnJvbSBoYWJpdCwgYW5kIHlvdXIgY29tcGlsZXIgbWlnaHQgbm90IGNvbXBsYWluLAorYnV0IHNvbWVvbmUgZWxzZSdzIHByb2JhYmx5IHdpbGwhICAoT24gV2luZG93cywgTVNWQyBpcyBrbm93biB0byBjYWxsIHRoaXMgYW4KK2Vycm9yIGFuZCByZWZ1c2UgdG8gY29tcGlsZSB0aGUgY29kZS4pCiAKIEZvciBjb250cmFzdCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGNvcnJlc3BvbmRpbmcgZGVmaW5pdGlvbiBmb3Igc3RhbmRhcmQKIFB5dGhvbiBmbG9hdHM6OgpAQCAtMjI0LDcgKzIyNSw3IEBACiBBZGRpbmcgZGF0YSBhbmQgbWV0aG9kcyB0byB0aGUgQmFzaWMgZXhhbXBsZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotTGV0J3MgZXhwZW5kIHRoZSBiYXNpYyBleGFtcGxlIHRvIGFkZCBzb21lIGRhdGEgYW5kIG1ldGhvZHMuICBMZXQncyBhbHNvIG1ha2UKK0xldCdzIGV4dGVuZCB0aGUgYmFzaWMgZXhhbXBsZSB0byBhZGQgc29tZSBkYXRhIGFuZCBtZXRob2RzLiAgTGV0J3MgYWxzbyBtYWtlCiB0aGUgdHlwZSB1c2FibGUgYXMgYSBiYXNlIGNsYXNzLiBXZSdsbCBjcmVhdGUgYSBuZXcgbW9kdWxlLCA6bW9kOmBub2RkeTJgIHRoYXQKIGFkZHMgdGhlc2UgY2FwYWJpbGl0aWVzOgogCkBAIC0yODgsMTggKzI4OSwxNiBAQAogICAgICAgIHNlbGYgPSAoTm9kZHkgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CiAgICAgICAgICAgIHNlbGYtPmZpcnN0ID0gUHlTdHJpbmdfRnJvbVN0cmluZygiIik7Ci0gICAgICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKQotICAgICAgICAgICAgIHsKKyAgICAgICAgICAgaWYgKHNlbGYtPmZpcnN0ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgIH0KKyAgICAgICAgICAgfQogCiAgICAgICAgICAgIHNlbGYtPmxhc3QgPSBQeVN0cmluZ19Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkKLSAgICAgICAgICAgICB7CisgICAgICAgICAgIGlmIChzZWxmLT5sYXN0ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgIH0KKyAgICAgICAgICAgfQogCiAgICAgICAgICAgIHNlbGYtPm51bWJlciA9IDA7CiAgICAgICAgfQpAQCAtMzI3LDggKzMyNiw4IEBACiBjcmVhdGVkLiBOZXcgbWV0aG9kcyBhbHdheXMgYWNjZXB0IHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzLCBidXQgdGhleQogb2Z0ZW4gaWdub3JlIHRoZSBhcmd1bWVudHMsIGxlYXZpbmcgdGhlIGFyZ3VtZW50IGhhbmRsaW5nIHRvIGluaXRpYWxpemVyCiBtZXRob2RzLiBOb3RlIHRoYXQgaWYgdGhlIHR5cGUgc3VwcG9ydHMgc3ViY2xhc3NpbmcsIHRoZSB0eXBlIHBhc3NlZCBtYXkgbm90IGJlCi10aGUgdHlwZSBiZWluZyBkZWZpbmVkLiAgVGhlIG5ldyBtZXRob2QgY2FsbHMgdGhlIHRwX2FsbG9jIHNsb3QgdG8gYWxsb2NhdGUKLW1lbW9yeS4gV2UgZG9uJ3QgZmlsbCB0aGUgOmF0dHI6YHRwX2FsbG9jYCBzbG90IG91cnNlbHZlcy4gUmF0aGVyCit0aGUgdHlwZSBiZWluZyBkZWZpbmVkLiAgVGhlIG5ldyBtZXRob2QgY2FsbHMgdGhlIDphdHRyOmB0cF9hbGxvY2Agc2xvdCB0bworYWxsb2NhdGUgbWVtb3J5LiBXZSBkb24ndCBmaWxsIHRoZSA6YXR0cjpgdHBfYWxsb2NgIHNsb3Qgb3Vyc2VsdmVzLiBSYXRoZXIKIDpjOmZ1bmM6YFB5VHlwZV9SZWFkeWAgZmlsbHMgaXQgZm9yIHVzIGJ5IGluaGVyaXRpbmcgaXQgZnJvbSBvdXIgYmFzZSBjbGFzcywKIHdoaWNoIGlzIDpjbGFzczpgb2JqZWN0YCBieSBkZWZhdWx0LiAgTW9zdCB0eXBlcyB1c2UgdGhlIGRlZmF1bHQgYWxsb2NhdGlvbi4KIApAQCAtNDQ1LDE1ICs0NDQsNiBAQAogICAgc3RhdGljIFB5T2JqZWN0ICoKICAgIE5vZGR5X25hbWUoTm9kZHkqIHNlbGYpCiAgICB7Ci0gICAgICAgc3RhdGljIFB5T2JqZWN0ICpmb3JtYXQgPSBOVUxMOwotICAgICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OwotCi0gICAgICAgaWYgKGZvcm1hdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgIGZvcm1hdCA9IFB5U3RyaW5nX0Zyb21TdHJpbmcoIiVzICVzIik7Ci0gICAgICAgICAgIGlmIChmb3JtYXQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgIH0KLQogICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKSB7CiAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgImZpcnN0Iik7CiAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDY0LDIwICs0NTQsMTMgQEAKICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgfQogCi0gICAgICAgYXJncyA9IFB5X0J1aWxkVmFsdWUoIk9PIiwgc2VsZi0+Zmlyc3QsIHNlbGYtPmxhc3QpOwotICAgICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgcmVzdWx0ID0gUHlTdHJpbmdfRm9ybWF0KGZvcm1hdCwgYXJncyk7Ci0gICAgICAgUHlfREVDUkVGKGFyZ3MpOwotCi0gICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVTICVTIiwgc2VsZi0+Zmlyc3QsIHNlbGYtPmxhc3QpOwogICAgfQogCiBUaGUgbWV0aG9kIGlzIGltcGxlbWVudGVkIGFzIGEgQyBmdW5jdGlvbiB0aGF0IHRha2VzIGEgOmNsYXNzOmBOb2RkeWAgKG9yCiA6Y2xhc3M6YE5vZGR5YCBzdWJjbGFzcykgaW5zdGFuY2UgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LiAgTWV0aG9kcyBhbHdheXMgdGFrZSBhbgogaW5zdGFuY2UgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LiBNZXRob2RzIG9mdGVuIHRha2UgcG9zaXRpb25hbCBhbmQga2V5d29yZAotYXJndW1lbnRzIGFzIHdlbGwsIGJ1dCBpbiB0aGlzIGNhc2VkIHdlIGRvbid0IHRha2UgYW55IGFuZCBkb24ndCBuZWVkIHRvIGFjY2VwdAorYXJndW1lbnRzIGFzIHdlbGwsIGJ1dCBpbiB0aGlzIGNhc2Ugd2UgZG9uJ3QgdGFrZSBhbnkgYW5kIGRvbid0IG5lZWQgdG8gYWNjZXB0CiBhIHBvc2l0aW9uYWwgYXJndW1lbnQgdHVwbGUgb3Iga2V5d29yZCBhcmd1bWVudCBkaWN0aW9uYXJ5LiBUaGlzIG1ldGhvZCBpcwogZXF1aXZhbGVudCB0byB0aGUgUHl0aG9uIG1ldGhvZDo6CiAKQEAgLTk5OSwxMyArOTgyLDEzIEBACiAgICB9CiAKIAorLi4gaW5kZXg6OgorICAgc2luZ2xlOiBzdHJpbmc7IG9iamVjdCByZXByZXNlbnRhdGlvbgorICAgYnVpbHRpbjogcmVwcgorCiBPYmplY3QgUHJlc2VudGF0aW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tCiAKLS4uIGluZGV4OjoKLSAgIGJ1aWx0aW46IHJlcHIKLSAgIGJ1aWx0aW46IHN0cgotCiBJbiBQeXRob24sIHRoZXJlIGFyZSB0d28gd2F5cyB0byBnZW5lcmF0ZSBhIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0OgogdGhlIDpmdW5jOmByZXByYCBmdW5jdGlvbiwgYW5kIHRoZSA6ZnVuYzpgc3RyYCBmdW5jdGlvbi4gIChUaGUgOmZ1bmM6YHByaW50YAogZnVuY3Rpb24ganVzdCBjYWxscyA6ZnVuYzpgc3RyYC4pICBUaGVzZSBoYW5kbGVycyBhcmUgYm90aCBvcHRpb25hbC4KQEAgLTExMjQsOSArMTEwNyw2IEBACiBhdCB0aGUgZW5kOyBpdCBpcyBhIHNlbnRpbmVsIHRoYXQgbWFya3MgdGhlIGVuZCBvZiB0aGUgYXJyYXkuICBUaGUKIDphdHRyOmBtbF9uYW1lYCBmaWVsZCBvZiB0aGUgc2VudGluZWwgbXVzdCBiZSAqTlVMTCouCiAKLVhYWCBOZWVkIHRvIHJlZmVyIHRvIHNvbWUgdW5pZmllZCBkaXNjdXNzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgZmllbGRzLCBzaGFyZWQKLXdpdGggdGhlIG5leHQgc2VjdGlvbi4KLQogVGhlIHNlY29uZCB0YWJsZSBpcyB1c2VkIHRvIGRlZmluZSBhdHRyaWJ1dGVzIHdoaWNoIG1hcCBkaXJlY3RseSB0byBkYXRhIHN0b3JlZAogaW4gdGhlIGluc3RhbmNlLiAgQSB2YXJpZXR5IG9mIHByaW1pdGl2ZSBDIHR5cGVzIGFyZSBzdXBwb3J0ZWQsIGFuZCBhY2Nlc3MgbWF5CiBiZSByZWFkLW9ubHkgb3IgcmVhZC13cml0ZS4gIFRoZSBzdHJ1Y3R1cmVzIGluIHRoZSB0YWJsZSBhcmUgZGVmaW5lZCBhczo6CkBAIC0xMTQ2LDggKzExMjYsNiBAQAogY29udmVydCBQeXRob24gdmFsdWVzIHRvIGFuZCBmcm9tIEMgdmFsdWVzLiAgVGhlIDphdHRyOmBmbGFnc2AgZmllbGQgaXMgdXNlZCB0bwogc3RvcmUgZmxhZ3Mgd2hpY2ggY29udHJvbCBob3cgdGhlIGF0dHJpYnV0ZSBjYW4gYmUgYWNjZXNzZWQuCiAKLVhYWCBOZWVkIHRvIG1vdmUgc29tZSBvZiB0aGlzIHRvIGEgc2hhcmVkIHNlY3Rpb24hCi0KIFRoZSBmb2xsb3dpbmcgZmxhZyBjb25zdGFudHMgYXJlIGRlZmluZWQgaW4gOmZpbGU6YHN0cnVjdG1lbWJlci5oYDsgdGhleSBtYXkgYmUKIGNvbWJpbmVkIHVzaW5nIGJpdHdpc2UtT1IuCiAKQEAgLTEzNzIsNyArMTM1MCw3IEBACiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KIAotWFhYIHNvbWUgZmllbGRzIG5lZWQgdG8gYmUgYWRkZWQgaGVyZS4uLiA6OgorOjoKIAogICAgLyogSXRlcmF0b3JzICovCiAgICBnZXRpdGVyZnVuYyB0cF9pdGVyOwpkaWZmIC0tZ2l0IGEvRG9jL2ZhcS9kZXNpZ24ucnN0IGIvRG9jL2ZhcS9kZXNpZ24ucnN0CmluZGV4IGMzMDYxYWUuLjA0YzhjMWYgMTAwNjQ0Ci0tLSBhL0RvYy9mYXEvZGVzaWduLnJzdAorKysgYi9Eb2MvZmFxL2Rlc2lnbi5yc3QKQEAgLTUxMiwxNCArNTEyLDE2IEBACiAKIERpY3Rpb25hcmllcyB3b3JrIGJ5IGNvbXB1dGluZyBhIGhhc2ggY29kZSBmb3IgZWFjaCBrZXkgc3RvcmVkIGluIHRoZSBkaWN0aW9uYXJ5CiB1c2luZyB0aGUgOmZ1bmM6YGhhc2hgIGJ1aWx0LWluIGZ1bmN0aW9uLiAgVGhlIGhhc2ggY29kZSB2YXJpZXMgd2lkZWx5IGRlcGVuZGluZwotb24gdGhlIGtleTsgZm9yIGV4YW1wbGUsICJQeXRob24iIGhhc2hlcyB0byAtNTM5Mjk0Mjk2IHdoaWxlICJweXRob24iLCBhIHN0cmluZwotdGhhdCBkaWZmZXJzIGJ5IGEgc2luZ2xlIGJpdCwgaGFzaGVzIHRvIDExNDIzMzE5NzYuICBUaGUgaGFzaCBjb2RlIGlzIHRoZW4gdXNlZAotdG8gY2FsY3VsYXRlIGEgbG9jYXRpb24gaW4gYW4gaW50ZXJuYWwgYXJyYXkgd2hlcmUgdGhlIHZhbHVlIHdpbGwgYmUgc3RvcmVkLgotQXNzdW1pbmcgdGhhdCB5b3UncmUgc3RvcmluZyBrZXlzIHRoYXQgYWxsIGhhdmUgZGlmZmVyZW50IGhhc2ggdmFsdWVzLCB0aGlzCi1tZWFucyB0aGF0IGRpY3Rpb25hcmllcyB0YWtlIGNvbnN0YW50IHRpbWUgLS0gTygxKSwgaW4gY29tcHV0ZXIgc2NpZW5jZSBub3RhdGlvbgotLS0gdG8gcmV0cmlldmUgYSBrZXkuICBJdCBhbHNvIG1lYW5zIHRoYXQgbm8gc29ydGVkIG9yZGVyIG9mIHRoZSBrZXlzIGlzCi1tYWludGFpbmVkLCBhbmQgdHJhdmVyc2luZyB0aGUgYXJyYXkgYXMgdGhlIGBgLmtleXMoKWBgIGFuZCBgYC5pdGVtcygpYGAgZG8gd2lsbAotb3V0cHV0IHRoZSBkaWN0aW9uYXJ5J3MgY29udGVudCBpbiBzb21lIGFyYml0cmFyeSBqdW1ibGVkIG9yZGVyLgorb24gdGhlIGtleSBhbmQgYSBwZXItcHJvY2VzcyBzZWVkOyBmb3IgZXhhbXBsZSwgIlB5dGhvbiIgY291bGQgaGFzaCB0bworLTUzOTI5NDI5NiB3aGlsZSAicHl0aG9uIiwgYSBzdHJpbmcgdGhhdCBkaWZmZXJzIGJ5IGEgc2luZ2xlIGJpdCwgY291bGQgaGFzaAordG8gMTE0MjMzMTk3Ni4gIFRoZSBoYXNoIGNvZGUgaXMgdGhlbiB1c2VkIHRvIGNhbGN1bGF0ZSBhIGxvY2F0aW9uIGluIGFuCitpbnRlcm5hbCBhcnJheSB3aGVyZSB0aGUgdmFsdWUgd2lsbCBiZSBzdG9yZWQuICBBc3N1bWluZyB0aGF0IHlvdSdyZSBzdG9yaW5nCitrZXlzIHRoYXQgYWxsIGhhdmUgZGlmZmVyZW50IGhhc2ggdmFsdWVzLCB0aGlzIG1lYW5zIHRoYXQgZGljdGlvbmFyaWVzIHRha2UKK2NvbnN0YW50IHRpbWUgLS0gTygxKSwgaW4gY29tcHV0ZXIgc2NpZW5jZSBub3RhdGlvbiAtLSB0byByZXRyaWV2ZSBhIGtleS4gIEl0CithbHNvIG1lYW5zIHRoYXQgbm8gc29ydGVkIG9yZGVyIG9mIHRoZSBrZXlzIGlzIG1haW50YWluZWQsIGFuZCB0cmF2ZXJzaW5nIHRoZQorYXJyYXkgYXMgdGhlIGBgLmtleXMoKWBgIGFuZCBgYC5pdGVtcygpYGAgZG8gd2lsbCBvdXRwdXQgdGhlIGRpY3Rpb25hcnkncworY29udGVudCBpbiBzb21lIGFyYml0cmFyeSBqdW1ibGVkIG9yZGVyIHRoYXQgY2FuIGNoYW5nZSB3aXRoIGV2ZXJ5IGludm9jYXRpb24gb2YKK2EgcHJvZ3JhbS4KIAogCiBXaHkgbXVzdCBkaWN0aW9uYXJ5IGtleXMgYmUgaW1tdXRhYmxlPwpAQCAtNjMxLDcgKzYzMyw3IEBACiBQeXRob24gMi42IGFkZHMgYW4gOm1vZDpgYWJjYCBtb2R1bGUgdGhhdCBsZXRzIHlvdSBkZWZpbmUgQWJzdHJhY3QgQmFzZSBDbGFzc2VzCiAoQUJDcykuICBZb3UgY2FuIHRoZW4gdXNlIDpmdW5jOmBpc2luc3RhbmNlYCBhbmQgOmZ1bmM6YGlzc3ViY2xhc3NgIHRvIGNoZWNrCiB3aGV0aGVyIGFuIGluc3RhbmNlIG9yIGEgY2xhc3MgaW1wbGVtZW50cyBhIHBhcnRpY3VsYXIgQUJDLiAgVGhlCi06bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlIGRlZmluZXMgYSBzZXQgb2YgdXNlZnVsIEFCQ3Mgc3VjaCBhcworOm1vZDpgY29sbGVjdGlvbnMuYWJjYCBtb2R1bGUgZGVmaW5lcyBhIHNldCBvZiB1c2VmdWwgQUJDcyBzdWNoIGFzCiA6Y2xhc3M6YEl0ZXJhYmxlYCwgOmNsYXNzOmBDb250YWluZXJgLCBhbmQgOmNsYXNzOmBNdXRhYmxlTWFwcGluZ2AuCiAKIEZvciBQeXRob24sIG1hbnkgb2YgdGhlIGFkdmFudGFnZXMgb2YgaW50ZXJmYWNlIHNwZWNpZmljYXRpb25zIGNhbiBiZSBvYnRhaW5lZApkaWZmIC0tZ2l0IGEvRG9jL2ZhcS9leHRlbmRpbmcucnN0IGIvRG9jL2ZhcS9leHRlbmRpbmcucnN0CmluZGV4IDdjNjg0YTAuLmZhMjQ1YzcgMTAwNjQ0Ci0tLSBhL0RvYy9mYXEvZXh0ZW5kaW5nLnJzdAorKysgYi9Eb2MvZmFxL2V4dGVuZGluZy5yc3QKQEAgLTQ0NSwzNCArNDQ1LDMgQEAKIFRoZSBCb29zdCBQeXRob24gTGlicmFyeSAoQlBMLCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3B5dGhvbi9kb2MvaW5kZXguaHRtbCkKIHByb3ZpZGVzIGEgd2F5IG9mIGRvaW5nIHRoaXMgZnJvbSBDKysgKGkuZS4geW91IGNhbiBpbmhlcml0IGZyb20gYW4gZXh0ZW5zaW9uCiBjbGFzcyB3cml0dGVuIGluIEMrKyB1c2luZyB0aGUgQlBMKS4KLQotCi1XaGVuIGltcG9ydGluZyBtb2R1bGUgWCwgd2h5IGRvIEkgZ2V0ICJ1bmRlZmluZWQgc3ltYm9sOiBQeVVuaWNvZGVVQ1MyKiI/Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVlvdSBhcmUgdXNpbmcgYSB2ZXJzaW9uIG9mIFB5dGhvbiB0aGF0IHVzZXMgYSA0LWJ5dGUgcmVwcmVzZW50YXRpb24gZm9yIFVuaWNvZGUKLWNoYXJhY3RlcnMsIGJ1dCBzb21lIEMgZXh0ZW5zaW9uIG1vZHVsZSB5b3UgYXJlIGltcG9ydGluZyB3YXMgY29tcGlsZWQgdXNpbmcgYQotUHl0aG9uIHRoYXQgdXNlcyBhIDItYnl0ZSByZXByZXNlbnRhdGlvbiBmb3IgVW5pY29kZSBjaGFyYWN0ZXJzICh0aGUgZGVmYXVsdCkuCi0KLUlmIGluc3RlYWQgdGhlIG5hbWUgb2YgdGhlIHVuZGVmaW5lZCBzeW1ib2wgc3RhcnRzIHdpdGggYGBQeVVuaWNvZGVVQ1M0YGAsIHRoZQotcHJvYmxlbSBpcyB0aGUgcmV2ZXJzZTogUHl0aG9uIHdhcyBidWlsdCB1c2luZyAyLWJ5dGUgVW5pY29kZSBjaGFyYWN0ZXJzLCBhbmQKLXRoZSBleHRlbnNpb24gbW9kdWxlIHdhcyBjb21waWxlZCB1c2luZyBhIFB5dGhvbiB3aXRoIDQtYnl0ZSBVbmljb2RlIGNoYXJhY3RlcnMuCi0KLVRoaXMgY2FuIGVhc2lseSBvY2N1ciB3aGVuIHVzaW5nIHByZS1idWlsdCBleHRlbnNpb24gcGFja2FnZXMuICBSZWRIYXQgTGludXgKLTcueCwgaW4gcGFydGljdWxhciwgcHJvdmlkZWQgYSAicHl0aG9uMiIgYmluYXJ5IHRoYXQgaXMgY29tcGlsZWQgd2l0aCA0LWJ5dGUKLVVuaWNvZGUuICBUaGlzIG9ubHkgY2F1c2VzIHRoZSBsaW5rIGZhaWx1cmUgaWYgdGhlIGV4dGVuc2lvbiB1c2VzIGFueSBvZiB0aGUKLWBgUHlVbmljb2RlXyooKWBgIGZ1bmN0aW9ucy4gIEl0IGlzIGFsc28gYSBwcm9ibGVtIGlmIGFuIGV4dGVuc2lvbiB1c2VzIGFueSBvZgotdGhlIFVuaWNvZGUtcmVsYXRlZCBmb3JtYXQgc3BlY2lmaWVycyBmb3IgOmM6ZnVuYzpgUHlfQnVpbGRWYWx1ZWAgKG9yIHNpbWlsYXIpIG9yCi1wYXJhbWV0ZXIgc3BlY2lmaWNhdGlvbnMgZm9yIDpjOmZ1bmM6YFB5QXJnX1BhcnNlVHVwbGVgLgotCi1Zb3UgY2FuIGNoZWNrIHRoZSBzaXplIG9mIHRoZSBVbmljb2RlIGNoYXJhY3RlciBhIFB5dGhvbiBpbnRlcnByZXRlciBpcyB1c2luZyBieQotY2hlY2tpbmcgdGhlIHZhbHVlIG9mIHN5cy5tYXh1bmljb2RlOgotCi0gICA+Pj4gaW1wb3J0IHN5cwotICAgPj4+IGlmIHN5cy5tYXh1bmljb2RlID4gNjU1MzU6Ci0gICAuLi4gICAgIHByaW50KCdVQ1M0IGJ1aWxkJykKLSAgIC4uLiBlbHNlOgotICAgLi4uICAgICBwcmludCgnVUNTMiBidWlsZCcpCi0KLVRoZSBvbmx5IHdheSB0byBzb2x2ZSB0aGlzIHByb2JsZW0gaXMgdG8gdXNlIGV4dGVuc2lvbiBtb2R1bGVzIGNvbXBpbGVkIHdpdGggYQotUHl0aG9uIGJpbmFyeSBidWlsdCB1c2luZyB0aGUgc2FtZSBzaXplIGZvciBVbmljb2RlIGNoYXJhY3RlcnMuCmRpZmYgLS1naXQgYS9Eb2MvZmFxL2xpYnJhcnkucnN0IGIvRG9jL2ZhcS9saWJyYXJ5LnJzdAppbmRleCA3Mzg1YzU5Li5jYWIyZDdiIDEwMDY0NAotLS0gYS9Eb2MvZmFxL2xpYnJhcnkucnN0CisrKyBiL0RvYy9mYXEvbGlicmFyeS5yc3QKQEAgLTM1MSw3ICszNTEsNyBAQAogICAgV29ya2VyIDxUaHJlYWQod29ya2VyIDEsIHN0YXJ0ZWQgMTMwMjgzODMyNzk3NDU2KT4gcnVubmluZyB3aXRoIGFyZ3VtZW50IDUKICAgIC4uLgogCi1Db25zdWx0IHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHM7IHRoZSA6Y2xhc3M6YH5xdWV1ZS5RdWV1ZWBgCitDb25zdWx0IHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHM7IHRoZSA6Y2xhc3M6YH5xdWV1ZS5RdWV1ZWAKIGNsYXNzIHByb3ZpZGVzIGEgZmVhdHVyZWZ1bCBpbnRlcmZhY2UuCiAKIApkaWZmIC0tZ2l0IGEvRG9jL2dsb3NzYXJ5LnJzdCBiL0RvYy9nbG9zc2FyeS5yc3QKaW5kZXggMTEwMGIxZi4uNWMwYTUyNSAxMDA2NDQKLS0tIGEvRG9jL2dsb3NzYXJ5LnJzdAorKysgYi9Eb2MvZ2xvc3NhcnkucnN0CkBAIC0zNCw3ICszNCw3IEBACiAgICAgICBzdWJjbGFzc2VzLCB3aGljaCBhcmUgY2xhc3NlcyB0aGF0IGRvbid0IGluaGVyaXQgZnJvbSBhIGNsYXNzIGJ1dCBhcmUKICAgICAgIHN0aWxsIHJlY29nbml6ZWQgYnkgOmZ1bmM6YGlzaW5zdGFuY2VgIGFuZCA6ZnVuYzpgaXNzdWJjbGFzc2A7IHNlZSB0aGUKICAgICAgIDptb2Q6YGFiY2AgbW9kdWxlIGRvY3VtZW50YXRpb24uICBQeXRob24gY29tZXMgd2l0aCBtYW55IGJ1aWx0LWluIEFCQ3MgZm9yCi0gICAgICBkYXRhIHN0cnVjdHVyZXMgKGluIHRoZSA6bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlKSwgbnVtYmVycyAoaW4gdGhlCisgICAgICBkYXRhIHN0cnVjdHVyZXMgKGluIHRoZSA6bW9kOmBjb2xsZWN0aW9ucy5hYmNgIG1vZHVsZSksIG51bWJlcnMgKGluIHRoZQogICAgICAgOm1vZDpgbnVtYmVyc2AgbW9kdWxlKSwgc3RyZWFtcyAoaW4gdGhlIDptb2Q6YGlvYCBtb2R1bGUpLCBpbXBvcnQgZmluZGVycwogICAgICAgYW5kIGxvYWRlcnMgKGluIHRoZSA6bW9kOmBpbXBvcnRsaWIuYWJjYCBtb2R1bGUpLiAgWW91IGNhbiBjcmVhdGUgeW91ciBvd24KICAgICAgIEFCQ3Mgd2l0aCB0aGUgOm1vZDpgYWJjYCBtb2R1bGUuCkBAIC0yMjcsOSArMjI3LDkgQEAKIAogICAgZmluZGVyCiAgICAgICBBbiBvYmplY3QgdGhhdCB0cmllcyB0byBmaW5kIHRoZSA6dGVybTpgbG9hZGVyYCBmb3IgYSBtb2R1bGUuIEl0IG11c3QKLSAgICAgIGltcGxlbWVudCBhIG1ldGhvZCBuYW1lZCA6bWV0aDpgZmluZF9tb2R1bGVgLiBTZWUgOnBlcDpgMzAyYCBmb3IKLSAgICAgIGRldGFpbHMgYW5kIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaW5kZXJgIGZvciBhbgotICAgICAgOnRlcm06YGFic3RyYWN0IGJhc2UgY2xhc3NgLgorICAgICAgaW1wbGVtZW50IGVpdGhlciBhIG1ldGhvZCBuYW1lZCA6bWV0aDpgZmluZF9sb2FkZXJgIG9yIGEgbWV0aG9kIG5hbWVkCisgICAgICA6bWV0aDpgZmluZF9tb2R1bGVgLiBTZWUgOnBlcDpgMzAyYCBhbmQgOnBlcDpgNDIwYCBmb3IgZGV0YWlscyBhbmQKKyAgICAgIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaW5kZXJgIGZvciBhbiA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AuCiAKICAgIGZsb29yIGRpdmlzaW9uCiAgICAgICBNYXRoZW1hdGljYWwgZGl2aXNpb24gdGhhdCByb3VuZHMgZG93biB0byBuZWFyZXN0IGludGVnZXIuICBUaGUgZmxvb3IKQEAgLTMzNSw2ICszMzUsMTcgQEAKICAgICAgIHJvbGUgaW4gcGxhY2VzIHdoZXJlIGEgY29uc3RhbnQgaGFzaCB2YWx1ZSBpcyBuZWVkZWQsIGZvciBleGFtcGxlIGFzIGEga2V5CiAgICAgICBpbiBhIGRpY3Rpb25hcnkuCiAKKyAgIGltcG9ydCBwYXRoCisgICAgICBBIGxpc3Qgb2YgbG9jYXRpb25zIChvciA6dGVybTpgcGF0aCBlbnRyaWVzIDxwYXRoIGVudHJ5PmApIHRoYXQgYXJlCisgICAgICBzZWFyY2hlZCBieSB0aGUgOnRlcm06YHBhdGggYmFzZWQgZmluZGVyYCBmb3IgbW9kdWxlcyB0byBpbXBvcnQuIER1cmluZworICAgICAgaW1wb3J0LCB0aGlzIGxpc3Qgb2YgbG9jYXRpb25zIHVzdWFsbHkgY29tZXMgZnJvbSA6ZGF0YTpgc3lzLnBhdGhgLCBidXQKKyAgICAgIGZvciBzdWJwYWNrYWdlcyBpdCBtYXkgYWxzbyBjb21lIGZyb20gdGhlIHBhcmVudCBwYWNrYWdlJ3MgYGBfX3BhdGhfX2BgCisgICAgICBhdHRyaWJ1dGUuCisKKyAgIGltcG9ydGluZworICAgICAgVGhlIHByb2Nlc3MgYnkgd2hpY2ggUHl0aG9uIGNvZGUgaW4gb25lIG1vZHVsZSBpcyBtYWRlIGF2YWlsYWJsZSB0bworICAgICAgUHl0aG9uIGNvZGUgaW4gYW5vdGhlciBtb2R1bGUuCisKICAgIGltcG9ydGVyCiAgICAgICBBbiBvYmplY3QgdGhhdCBib3RoIGZpbmRzIGFuZCBsb2FkcyBhIG1vZHVsZTsgYm90aCBhCiAgICAgICA6dGVybTpgZmluZGVyYCBhbmQgOnRlcm06YGxvYWRlcmAgb2JqZWN0LgpAQCAtNDUxLDEyICs0NjIsMTcgQEAKIAogICAgbWFwcGluZwogICAgICAgQSBjb250YWluZXIgb2JqZWN0IHRoYXQgc3VwcG9ydHMgYXJiaXRyYXJ5IGtleSBsb29rdXBzIGFuZCBpbXBsZW1lbnRzIHRoZQotICAgICAgbWV0aG9kcyBzcGVjaWZpZWQgaW4gdGhlIDpjbGFzczpgfmNvbGxlY3Rpb25zLk1hcHBpbmdgIG9yCi0gICAgICA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5NdXRhYmxlTWFwcGluZ2AKKyAgICAgIG1ldGhvZHMgc3BlY2lmaWVkIGluIHRoZSA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuTWFwcGluZ2Agb3IKKyAgICAgIDpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlTWFwcGluZ2AKICAgICAgIDpyZWY6YGFic3RyYWN0IGJhc2UgY2xhc3NlcyA8Y29sbGVjdGlvbnMtYWJzdHJhY3QtYmFzZS1jbGFzc2VzPmAuICBFeGFtcGxlcwogICAgICAgaW5jbHVkZSA6Y2xhc3M6YGRpY3RgLCA6Y2xhc3M6YGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0YCwKICAgICAgIDpjbGFzczpgY29sbGVjdGlvbnMuT3JkZXJlZERpY3RgIGFuZCA6Y2xhc3M6YGNvbGxlY3Rpb25zLkNvdW50ZXJgLgogCisgICBtZXRhIHBhdGggZmluZGVyCisgICAgICBBIGZpbmRlciByZXR1cm5lZCBieSBhIHNlYXJjaCBvZiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAuICBNZXRhIHBhdGgKKyAgICAgIGZpbmRlcnMgYXJlIHJlbGF0ZWQgdG8sIGJ1dCBkaWZmZXJlbnQgZnJvbSA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJzCisgICAgICA8cGF0aCBlbnRyeSBmaW5kZXI+YC4KKwogICAgbWV0YWNsYXNzCiAgICAgICBUaGUgY2xhc3Mgb2YgYSBjbGFzcy4gIENsYXNzIGRlZmluaXRpb25zIGNyZWF0ZSBhIGNsYXNzIG5hbWUsIGEgY2xhc3MKICAgICAgIGRpY3Rpb25hcnksIGFuZCBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzLiAgVGhlIG1ldGFjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IKQEAgLTQ4MSw2ICs0OTcsMTEgQEAKICAgICAgIGZvciBhIG1lbWJlciBkdXJpbmcgbG9va3VwLiBTZWUgYFRoZSBQeXRob24gMi4zIE1ldGhvZCBSZXNvbHV0aW9uIE9yZGVyCiAgICAgICA8aHR0cDovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLzIuMy9tcm8vPmBfLgogCisgICBtb2R1bGUKKyAgICAgIEFuIG9iamVjdCB0aGF0IHNlcnZlcyBhcyBhbiBvcmdhbml6YXRpb25hbCB1bml0IG9mIFB5dGhvbiBjb2RlLiAgTW9kdWxlcworICAgICAgaGF2ZSBhIG5hbWVzcGFjZSBjb250YWluaW5nIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gIE1vZHVsZXMgYXJlIGxvYWRlZAorICAgICAgaW50byBQeXRob24gYnkgdGhlIHByb2Nlc3Mgb2YgOnRlcm06YGltcG9ydGluZ2AuCisKICAgIE1STwogICAgICAgU2VlIDp0ZXJtOmBtZXRob2QgcmVzb2x1dGlvbiBvcmRlcmAuCiAKQEAgLTUxMyw2ICs1MzQsMTIgQEAKICAgICAgIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgYnkgdGhlIDptb2Q6YHJhbmRvbWAgYW5kIDptb2Q6YGl0ZXJ0b29sc2AKICAgICAgIG1vZHVsZXMsIHJlc3BlY3RpdmVseS4KIAorICAgbmFtZXNwYWNlIHBhY2thZ2UKKyAgICAgIEEgOnBlcDpgNDIwYCA6dGVybTpgcGFja2FnZWAgd2hpY2ggc2VydmVzIG9ubHkgYXMgYSBjb250YWluZXIgZm9yCisgICAgICBzdWJwYWNrYWdlcy4gIE5hbWVzcGFjZSBwYWNrYWdlcyBtYXkgaGF2ZSBubyBwaHlzaWNhbCByZXByZXNlbnRhdGlvbiwKKyAgICAgIGFuZCBzcGVjaWZpY2FsbHkgYXJlIG5vdCBsaWtlIGEgOnRlcm06YHJlZ3VsYXIgcGFja2FnZWAgYmVjYXVzZSB0aGV5CisgICAgICBoYXZlIG5vIGBgX19pbml0X18ucHlgYCBmaWxlLgorCiAgICBuZXN0ZWQgc2NvcGUKICAgICAgIFRoZSBhYmlsaXR5IHRvIHJlZmVyIHRvIGEgdmFyaWFibGUgaW4gYW4gZW5jbG9zaW5nIGRlZmluaXRpb24uICBGb3IKICAgICAgIGluc3RhbmNlLCBhIGZ1bmN0aW9uIGRlZmluZWQgaW5zaWRlIGFub3RoZXIgZnVuY3Rpb24gY2FuIHJlZmVyIHRvCkBAIC01MzMsNiArNTYwLDExIEBACiAgICAgICAobWV0aG9kcykuICBBbHNvIHRoZSB1bHRpbWF0ZSBiYXNlIGNsYXNzIG9mIGFueSA6dGVybTpgbmV3LXN0eWxlCiAgICAgICBjbGFzc2AuCiAKKyAgIHBhY2thZ2UKKyAgICAgIEEgUHl0aG9uIG1vZHVsZSB3aGljaCBjYW4gY29udGFpbiBzdWJtb2R1bGVzIG9yIHJlY3Vyc2l2ZWx5LAorICAgICAgc3VicGFja2FnZXMuICBUZWNobmljYWxseSwgYSBwYWNrYWdlIGlzIGEgUHl0aG9uIG1vZHVsZSB3aXRoIGFuCisgICAgICBgYF9fcGF0aF9fYGAgYXR0cmlidXRlLgorCiAgICBwYXJhbWV0ZXIKICAgICAgIEEgbmFtZWQgZW50aXR5IGluIGEgOnRlcm06YGZ1bmN0aW9uYCAob3IgbWV0aG9kKSBkZWZpbml0aW9uIHRoYXQKICAgICAgIHNwZWNpZmllcyBhbiA6dGVybTpgYXJndW1lbnRgIChvciBpbiBzb21lIGNhc2VzLCBhcmd1bWVudHMpIHRoYXQgdGhlCkBAIC01ODAsMTIgKzYxMiw0OCBAQAogICAgICAgPGZhcS1hcmd1bWVudC12cy1wYXJhbWV0ZXI+YCwgdGhlIDpjbGFzczpgaW5zcGVjdC5QYXJhbWV0ZXJgIGNsYXNzLCB0aGUKICAgICAgIDpyZWY6YGZ1bmN0aW9uYCBzZWN0aW9uLCBhbmQgOnBlcDpgMzYyYC4KIAorICAgcGF0aCBlbnRyeQorICAgICAgQSBzaW5nbGUgbG9jYXRpb24gb24gdGhlIDp0ZXJtOmBpbXBvcnQgcGF0aGAgd2hpY2ggdGhlIDp0ZXJtOmBwYXRoCisgICAgICBiYXNlZCBmaW5kZXJgIGNvbnN1bHRzIHRvIGZpbmQgbW9kdWxlcyBmb3IgaW1wb3J0aW5nLgorCisgICBwYXRoIGVudHJ5IGZpbmRlcgorICAgICAgQSA6dGVybTpgZmluZGVyYCByZXR1cm5lZCBieSBhIGNhbGxhYmxlIG9uIDpkYXRhOmBzeXMucGF0aF9ob29rc2AKKyAgICAgIChpLmUuIGEgOnRlcm06YHBhdGggZW50cnkgaG9va2ApIHdoaWNoIGtub3dzIGhvdyB0byBsb2NhdGUgbW9kdWxlcyBnaXZlbgorICAgICAgYSA6dGVybTpgcGF0aCBlbnRyeWAuCisKKyAgIHBhdGggZW50cnkgaG9vaworICAgICAgQSBjYWxsYWJsZSBvbiB0aGUgOmRhdGE6YHN5cy5wYXRoX2hvb2tgIGxpc3Qgd2hpY2ggcmV0dXJucyBhIDp0ZXJtOmBwYXRoCisgICAgICBlbnRyeSBmaW5kZXJgIGlmIGl0IGtub3dzIGhvdyB0byBmaW5kIG1vZHVsZXMgb24gYSBzcGVjaWZpYyA6dGVybTpgcGF0aAorICAgICAgZW50cnlgLgorCisgICBwYXRoIGJhc2VkIGZpbmRlcgorICAgICAgT25lIG9mIHRoZSBkZWZhdWx0IDp0ZXJtOmBtZXRhIHBhdGggZmluZGVycyA8bWV0YSBwYXRoIGZpbmRlcj5gIHdoaWNoCisgICAgICBzZWFyY2hlcyBhbiA6dGVybTpgaW1wb3J0IHBhdGhgIGZvciBtb2R1bGVzLgorCisgICBwb3J0aW9uCisgICAgICBBIHNldCBvZiBmaWxlcyBpbiBhIHNpbmdsZSBkaXJlY3RvcnkgKHBvc3NpYmx5IHN0b3JlZCBpbiBhIHppcCBmaWxlKQorICAgICAgdGhhdCBjb250cmlidXRlIHRvIGEgbmFtZXNwYWNlIHBhY2thZ2UsIGFzIGRlZmluZWQgaW4gOnBlcDpgNDIwYC4KKwogICAgcG9zaXRpb25hbCBhcmd1bWVudAogICAgICAgU2VlIDp0ZXJtOmBhcmd1bWVudGAuCiAKKyAgIHByb3Zpc2lvbmFsIHBhY2thZ2UKKyAgICAgIEEgcHJvdmlzaW9uYWwgcGFja2FnZSBpcyBvbmUgd2hpY2ggaGFzIGJlZW4gZGVsaWJlcmF0ZWx5IGV4Y2x1ZGVkIGZyb20KKyAgICAgIHRoZSBzdGFuZGFyZCBsaWJyYXJ5J3MgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgZ3VhcmFudGVlcy4gIFdoaWxlIG1ham9yCisgICAgICBjaGFuZ2VzIHRvIHN1Y2ggcGFja2FnZXMgYXJlIG5vdCBleHBlY3RlZCwgYXMgbG9uZyBhcyB0aGV5IGFyZSBtYXJrZWQKKyAgICAgIHByb3Zpc2lvbmFsLCBiYWNrd2FyZHMgaW5jb21wYXRpYmxlIGNoYW5nZXMgKHVwIHRvIGFuZCBpbmNsdWRpbmcgcmVtb3ZhbAorICAgICAgb2YgdGhlIHBhY2thZ2UpIG1heSBvY2N1ciBpZiBkZWVtZWQgbmVjZXNzYXJ5IGJ5IGNvcmUgZGV2ZWxvcGVycy4gIFN1Y2gKKyAgICAgIGNoYW5nZXMgd2lsbCBub3QgYmUgbWFkZSBncmF0dWl0b3VzbHkgLS0gdGhleSB3aWxsIG9jY3VyIG9ubHkgaWYgc2VyaW91cworICAgICAgZmxhd3MgYXJlIHVuY292ZXJlZCB0aGF0IHdlcmUgbWlzc2VkIHByaW9yIHRvIHRoZSBpbmNsdXNpb24gb2YgdGhlCisgICAgICBwYWNrYWdlLgorCisgICAgICBUaGlzIHByb2Nlc3MgYWxsb3dzIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IHRvIGNvbnRpbnVlIHRvIGV2b2x2ZSBvdmVyCisgICAgICB0aW1lLCB3aXRob3V0IGxvY2tpbmcgaW4gcHJvYmxlbWF0aWMgZGVzaWduIGVycm9ycyBmb3IgZXh0ZW5kZWQgcGVyaW9kcworICAgICAgb2YgdGltZS4gIFNlZSA6cGVwOmA0MTFgIGZvciBtb3JlIGRldGFpbHMuCisKICAgIFB5dGhvbiAzMDAwCi0gICAgICBOaWNrbmFtZSBmb3IgdGhlIFB5dGhvbiAzLnggcmVsZWFzZSBsaW5lIChjb2luZWQgbG9uZyBhZ28gd2hlbiB0aGUgcmVsZWFzZQotICAgICAgb2YgdmVyc2lvbiAzIHdhcyBzb21ldGhpbmcgaW4gdGhlIGRpc3RhbnQgZnV0dXJlLikgIFRoaXMgaXMgYWxzbworICAgICAgTmlja25hbWUgZm9yIHRoZSBQeXRob24gMy54IHJlbGVhc2UgbGluZSAoY29pbmVkIGxvbmcgYWdvIHdoZW4gdGhlCisgICAgICByZWxlYXNlIG9mIHZlcnNpb24gMyB3YXMgc29tZXRoaW5nIGluIHRoZSBkaXN0YW50IGZ1dHVyZS4pICBUaGlzIGlzIGFsc28KICAgICAgIGFiYnJldmlhdGVkICJQeTNrIi4KIAogICAgUHl0aG9uaWMKQEAgLTYwNCw2ICs2NzIsMzIgQEAKICAgICAgICAgIGZvciBwaWVjZSBpbiBmb29kOgogICAgICAgICAgICAgIHByaW50KHBpZWNlKQogCisgICBxdWFsaWZpZWQgbmFtZQorICAgICAgQSBkb3R0ZWQgbmFtZSBzaG93aW5nIHRoZSAicGF0aCIgZnJvbSBhIG1vZHVsZSdzIGdsb2JhbCBzY29wZSB0byBhCisgICAgICBjbGFzcywgZnVuY3Rpb24gb3IgbWV0aG9kIGRlZmluZWQgaW4gdGhhdCBtb2R1bGUsIGFzIGRlZmluZWQgaW4KKyAgICAgIDpwZXA6YDMxNTVgLiAgRm9yIHRvcC1sZXZlbCBmdW5jdGlvbnMgYW5kIGNsYXNzZXMsIHRoZSBxdWFsaWZpZWQgbmFtZQorICAgICAgaXMgdGhlIHNhbWUgYXMgdGhlIG9iamVjdCdzIG5hbWU6OgorCisgICAgICAgICA+Pj4gY2xhc3MgQzoKKyAgICAgICAgIC4uLiAgICAgY2xhc3MgRDoKKyAgICAgICAgIC4uLiAgICAgICAgIGRlZiBtZXRoKHNlbGYpOgorICAgICAgICAgLi4uICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIC4uLgorICAgICAgICAgPj4+IEMuX19xdWFsbmFtZV9fCisgICAgICAgICAnQycKKyAgICAgICAgID4+PiBDLkQuX19xdWFsbmFtZV9fCisgICAgICAgICAnQy5EJworICAgICAgICAgPj4+IEMuRC5tZXRoLl9fcXVhbG5hbWVfXworICAgICAgICAgJ0MuRC5tZXRoJworCisgICAgICBXaGVuIHVzZWQgdG8gcmVmZXIgdG8gbW9kdWxlcywgdGhlICpmdWxseSBxdWFsaWZpZWQgbmFtZSogbWVhbnMgdGhlCisgICAgICBlbnRpcmUgZG90dGVkIHBhdGggdG8gdGhlIG1vZHVsZSwgaW5jbHVkaW5nIGFueSBwYXJlbnQgcGFja2FnZXMsCisgICAgICBlLmcuIGBgZW1haWwubWltZS50ZXh0YGA6OgorCisgICAgICAgICA+Pj4gaW1wb3J0IGVtYWlsLm1pbWUudGV4dAorICAgICAgICAgPj4+IGVtYWlsLm1pbWUudGV4dC5fX25hbWVfXworICAgICAgICAgJ2VtYWlsLm1pbWUudGV4dCcKKwogICAgcmVmZXJlbmNlIGNvdW50CiAgICAgICBUaGUgbnVtYmVyIG9mIHJlZmVyZW5jZXMgdG8gYW4gb2JqZWN0LiAgV2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuCiAgICAgICBvYmplY3QgZHJvcHMgdG8gemVybywgaXQgaXMgZGVhbGxvY2F0ZWQuICBSZWZlcmVuY2UgY291bnRpbmcgaXMKQEAgLTYxMiw2ICs3MDYsMTAgQEAKICAgICAgIDpmdW5jOmB+c3lzLmdldHJlZmNvdW50YCBmdW5jdGlvbiB0aGF0IHByb2dyYW1tZXJzIGNhbiBjYWxsIHRvIHJldHVybiB0aGUKICAgICAgIHJlZmVyZW5jZSBjb3VudCBmb3IgYSBwYXJ0aWN1bGFyIG9iamVjdC4KIAorICAgcmVndWxhciBwYWNrYWdlCisgICAgICBBIHRyYWRpdGlvbmFsIDp0ZXJtOmBwYWNrYWdlYCwgc3VjaCBhcyBhIGRpcmVjdG9yeSBjb250YWluaW5nIGFuCisgICAgICBgYF9faW5pdF9fLnB5YGAgZmlsZS4KKwogICAgX19zbG90c19fCiAgICAgICBBIGRlY2xhcmF0aW9uIGluc2lkZSBhIGNsYXNzIHRoYXQgc2F2ZXMgbWVtb3J5IGJ5IHByZS1kZWNsYXJpbmcgc3BhY2UgZm9yCiAgICAgICBpbnN0YW5jZSBhdHRyaWJ1dGVzIGFuZCBlbGltaW5hdGluZyBpbnN0YW5jZSBkaWN0aW9uYXJpZXMuICBUaG91Z2gKQEAgLTY0Niw2ICs3NDQsMTQgQEAKICAgICAgIGFuIDp0ZXJtOmBleHByZXNzaW9uYCBvciBhIG9uZSBvZiBzZXZlcmFsIGNvbnN0cnVjdHMgd2l0aCBhIGtleXdvcmQsIHN1Y2gKICAgICAgIGFzIDprZXl3b3JkOmBpZmAsIDprZXl3b3JkOmB3aGlsZWAgb3IgOmtleXdvcmQ6YGZvcmAuCiAKKyAgIHN0cnVjdCBzZXF1ZW5jZQorICAgICAgQSB0dXBsZSB3aXRoIG5hbWVkIGVsZW1lbnRzLiBTdHJ1Y3Qgc2VxdWVuY2VzIGV4cG9zZSBhbiBpbnRlcmZhY2Ugc2ltaWxhcgorICAgICAgdG8gOnRlcm06YG5hbWVkIHR1cGxlYCBpbiB0aGF0IGVsZW1lbnRzIGNhbiBlaXRoZXIgYmUgYWNjZXNzZWQgZWl0aGVyIGJ5CisgICAgICBpbmRleCBvciBhcyBhbiBhdHRyaWJ1dGUuIEhvd2V2ZXIsIHRoZXkgZG8gbm90IGhhdmUgYW55IG9mIHRoZSBuYW1lZCB0dXBsZQorICAgICAgbWV0aG9kcyBsaWtlIDptZXRoOmB+Y29sbGVjdGlvbnMuc29tZW5hbWVkdHVwbGUuX21ha2VgIG9yCisgICAgICA6bWV0aDpgfmNvbGxlY3Rpb25zLnNvbWVuYW1lZHR1cGxlLl9hc2RpY3RgLiBFeGFtcGxlcyBvZiBzdHJ1Y3Qgc2VxdWVuY2VzCisgICAgICBpbmNsdWRlIDpkYXRhOmBzeXMuZmxvYXRfaW5mb2AgYW5kIHRoZSByZXR1cm4gdmFsdWUgb2YgOmZ1bmM6YG9zLnN0YXRgLgorCiAgICB0cmlwbGUtcXVvdGVkIHN0cmluZwogICAgICAgQSBzdHJpbmcgd2hpY2ggaXMgYm91bmQgYnkgdGhyZWUgaW5zdGFuY2VzIG9mIGVpdGhlciBhIHF1b3RhdGlvbiBtYXJrCiAgICAgICAoIikgb3IgYW4gYXBvc3Ryb3BoZSAoJykuICBXaGlsZSB0aGV5IGRvbid0IHByb3ZpZGUgYW55IGZ1bmN0aW9uYWxpdHkKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9jcG9ydGluZy5yc3QgYi9Eb2MvaG93dG8vY3BvcnRpbmcucnN0CmluZGV4IDlkOGExYjAuLjFhZDc3ZDYgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9jcG9ydGluZy5yc3QKKysrIGIvRG9jL2hvd3RvL2Nwb3J0aW5nLnJzdApAQCAtMTAwLDI1ICsxMDAsNiBAQAogdXNlZCBpbiBQeXRob24gMiB3YXMgcmVtb3ZlZC4gIEluIHRoZSBDLUFQSSwgYGBQeUludF8qYGAgZnVuY3Rpb25zCiBhcmUgcmVwbGFjZWQgYnkgdGhlaXIgYGBQeUxvbmdfKmBgIGVxdWl2YWxlbnRzLgogCi1UaGUgYmVzdCBjb3Vyc2Ugb2YgYWN0aW9uIGhlcmUgaXMgdXNpbmcgdGhlIGBgUHlJbnRfKmBgIGZ1bmN0aW9ucyBhbGlhc2VkIHRvCi1gYFB5TG9uZ18qYGAgZm91bmQgaW4gOmZpbGU6YGludG9iamVjdC5oYC4gIFRoZSBhYnN0cmFjdCBgYFB5TnVtYmVyXypgYCBBUElzCi1jYW4gYWxzbyBiZSB1c2VkIGluIHNvbWUgY2FzZXMuIDo6Ci0KLSAgICNpbmNsdWRlICJQeXRob24uaCIKLSAgICNpbmNsdWRlICJpbnRvYmplY3QuaCIKLQotICAgc3RhdGljIFB5T2JqZWN0ICoKLSAgIGFkZF9pbnRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykgewotICAgICAgIGludCBvbmUsIHR3bzsKLSAgICAgICBQeU9iamVjdCAqcmVzdWx0OwotCi0gICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTphZGRfaW50cyIsICZvbmUsICZ0d28pKQotICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAgIHJldHVybiBQeUludF9Gcm9tTG9uZyhvbmUgKyB0d28pOwotICAgfQotCi0KIAogTW9kdWxlIGluaXRpYWxpemF0aW9uIGFuZCBzdGF0ZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2Rlc2NyaXB0b3IucnN0IGIvRG9jL2hvd3RvL2Rlc2NyaXB0b3IucnN0CmluZGV4IGY4NzYzZDguLmNjMWI3OGQgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9kZXNjcmlwdG9yLnJzdAorKysgYi9Eb2MvaG93dG8vZGVzY3JpcHRvci5yc3QKQEAgLTM2LDkgKzM2LDcgQEAKIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mIHRoZSBkZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uCiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kIGludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4KIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZSBwcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzCi13ZXJlIGRlZmluZWQuICBOb3RlIHRoYXQgZGVzY3JpcHRvcnMgYXJlIG9ubHkgaW52b2tlZCBmb3IgbmV3IHN0eWxlIG9iamVjdHMgb3IKLWNsYXNzZXMgKGEgY2xhc3MgaXMgbmV3IHN0eWxlIGlmIGl0IGluaGVyaXRzIGZyb20gOmNsYXNzOmBvYmplY3RgIG9yCi06Y2xhc3M6YHR5cGVgKS4KK3dlcmUgZGVmaW5lZC4KIAogRGVzY3JpcHRvcnMgYXJlIGEgcG93ZXJmdWwsIGdlbmVyYWwgcHVycG9zZSBwcm90b2NvbC4gIFRoZXkgYXJlIHRoZSBtZWNoYW5pc20KIGJlaGluZCBwcm9wZXJ0aWVzLCBtZXRob2RzLCBzdGF0aWMgbWV0aG9kcywgY2xhc3MgbWV0aG9kcywgYW5kIDpmdW5jOmBzdXBlcigpYC4KQEAgLTg5LDggKzg3LDYgQEAKIGlzIGludm9rZWQgYWNjb3JkaW5nIHRvIHRoZSBwcmVjZWRlbmNlIHJ1bGVzIGxpc3RlZCBiZWxvdy4KIAogVGhlIGRldGFpbHMgb2YgaW52b2NhdGlvbiBkZXBlbmQgb24gd2hldGhlciBgYG9iamBgIGlzIGFuIG9iamVjdCBvciBhIGNsYXNzLgotRWl0aGVyIHdheSwgZGVzY3JpcHRvcnMgb25seSB3b3JrIGZvciBuZXcgc3R5bGUgb2JqZWN0cyBhbmQgY2xhc3Nlcy4gIEEgY2xhc3MgaXMKLW5ldyBzdHlsZSBpZiBpdCBpcyBhIHN1YmNsYXNzIG9mIDpjbGFzczpgb2JqZWN0YC4KIAogRm9yIG9iamVjdHMsIHRoZSBtYWNoaW5lcnkgaXMgaW4gOm1ldGg6YG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fYCB3aGljaAogdHJhbnNmb3JtcyBgYGIueGBgIGludG8gYGB0eXBlKGIpLl9fZGljdF9fWyd4J10uX19nZXRfXyhiLCB0eXBlKGIpKWBgLiAgVGhlCkBAIC0xMTUsNyArMTExLDYgQEAKIAogKiBkZXNjcmlwdG9ycyBhcmUgaW52b2tlZCBieSB0aGUgOm1ldGg6YF9fZ2V0YXR0cmlidXRlX19gIG1ldGhvZAogKiBvdmVycmlkaW5nIDptZXRoOmBfX2dldGF0dHJpYnV0ZV9fYCBwcmV2ZW50cyBhdXRvbWF0aWMgZGVzY3JpcHRvciBjYWxscwotKiA6bWV0aDpgX19nZXRhdHRyaWJ1dGVfX2AgaXMgb25seSBhdmFpbGFibGUgd2l0aCBuZXcgc3R5bGUgY2xhc3NlcyBhbmQgb2JqZWN0cwogKiA6bWV0aDpgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX19gIGFuZCA6bWV0aDpgdHlwZS5fX2dldGF0dHJpYnV0ZV9fYCBtYWtlCiAgIGRpZmZlcmVudCBjYWxscyB0byA6bWV0aDpgX19nZXRfX2AuCiAqIGRhdGEgZGVzY3JpcHRvcnMgYWx3YXlzIG92ZXJyaWRlIGluc3RhbmNlIGRpY3Rpb25hcmllcy4KQEAgLTEyOCwxMCArMTIzLDcgQEAKIGBgbWBgIGlzIHJldHVybmVkIHVuY2hhbmdlZC4gIElmIG5vdCBpbiB0aGUgZGljdGlvbmFyeSwgYGBtYGAgcmV2ZXJ0cyB0byBhCiBzZWFyY2ggdXNpbmcgOm1ldGg6YG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fYC4KIAotTm90ZSwgaW4gUHl0aG9uIDIuMiwgYGBzdXBlcihCLCBvYmopLm0oKWBgIHdvdWxkIG9ubHkgaW52b2tlIDptZXRoOmBfX2dldF9fYCBpZgotYGBtYGAgd2FzIGEgZGF0YSBkZXNjcmlwdG9yLiAgSW4gUHl0aG9uIDIuMywgbm9uLWRhdGEgZGVzY3JpcHRvcnMgYWxzbyBnZXQKLWludm9rZWQgdW5sZXNzIGFuIG9sZC1zdHlsZSBjbGFzcyBpcyBpbnZvbHZlZC4gIFRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFyZQotaW4gOmM6ZnVuYzpgc3VwZXJfZ2V0YXR0cm8oKWAgaW4KK1RoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFyZSBpbiA6YzpmdW5jOmBzdXBlcl9nZXRhdHRybygpYCBpbgogYE9iamVjdHMvdHlwZW9iamVjdC5jIDxodHRwOi8vc3ZuLnB5dGhvbi5vcmcvdmlldy9weXRob24vdHJ1bmsvT2JqZWN0cy90eXBlb2JqZWN0LmM/dmlldz1tYXJrdXA+YF8KIGFuZCBhIHB1cmUgUHl0aG9uIGVxdWl2YWxlbnQgY2FuIGJlIGZvdW5kIGluIGBHdWlkbydzIFR1dG9yaWFsYF8uCiAKQEAgLTIxOCw2ICsyMTAsOCBAQAogICAgICAgICAgICAgc2VsZi5mZ2V0ID0gZmdldAogICAgICAgICAgICAgc2VsZi5mc2V0ID0gZnNldAogICAgICAgICAgICAgc2VsZi5mZGVsID0gZmRlbAorICAgICAgICAgICAgaWYgZG9jIGlzIE5vbmUgYW5kIGZnZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZG9jID0gZmdldC5fX2RvY19fCiAgICAgICAgICAgICBzZWxmLl9fZG9jX18gPSBkb2MKIAogICAgICAgICBkZWYgX19nZXRfXyhzZWxmLCBvYmosIG9ianR5cGU9Tm9uZSk6CkBAIC0yMzcsNiArMjMxLDE1IEBACiAgICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoImNhbid0IGRlbGV0ZSBhdHRyaWJ1dGUiKQogICAgICAgICAgICAgc2VsZi5mZGVsKG9iaikKIAorICAgICAgICBkZWYgZ2V0dGVyKHNlbGYsIGZnZXQpOgorICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikoZmdldCwgc2VsZi5mc2V0LCBzZWxmLmZkZWwsIHNlbGYuX19kb2NfXykKKworICAgICAgICBkZWYgc2V0dGVyKHNlbGYsIGZzZXQpOgorICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikoc2VsZi5mZ2V0LCBmc2V0LCBzZWxmLmZkZWwsIHNlbGYuX19kb2NfXykKKworICAgICAgICBkZWYgZGVsZXRlcihzZWxmLCBmZGVsKToKKyAgICAgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKHNlbGYuZmdldCwgc2VsZi5mc2V0LCBmZGVsLCBzZWxmLl9fZG9jX18pCisKIFRoZSA6ZnVuYzpgcHJvcGVydHlgIGJ1aWx0aW4gaGVscHMgd2hlbmV2ZXIgYSB1c2VyIGludGVyZmFjZSBoYXMgZ3JhbnRlZAogYXR0cmlidXRlIGFjY2VzcyBhbmQgdGhlbiBzdWJzZXF1ZW50IGNoYW5nZXMgcmVxdWlyZSB0aGUgaW50ZXJ2ZW50aW9uIG9mIGEKIG1ldGhvZC4KQEAgLTM5OCw3ICs0MDEsNyBAQAogOmZ1bmM6YGRpY3QuZnJvbWtleXNgIGNyZWF0ZXMgYSBuZXcgZGljdGlvbmFyeSBmcm9tIGEgbGlzdCBvZiBrZXlzLiAgVGhlIHB1cmUKIFB5dGhvbiBlcXVpdmFsZW50IGlzOjoKIAotICAgIGNsYXNzIERpY3Q6CisgICAgY2xhc3MgRGljdChvYmplY3QpOgogICAgICAgICAuIC4gLgogICAgICAgICBkZWYgZnJvbWtleXMoa2xhc3MsIGl0ZXJhYmxlLCB2YWx1ZT1Ob25lKToKICAgICAgICAgICAgICJFbXVsYXRlIGRpY3RfZnJvbWtleXMoKSBpbiBPYmplY3RzL2RpY3RvYmplY3QuYyIKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9mdW5jdGlvbmFsLnJzdCBiL0RvYy9ob3d0by9mdW5jdGlvbmFsLnJzdAppbmRleCBlYmJiMjI5Li5kMjQxZjFhIDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vZnVuY3Rpb25hbC5yc3QKKysrIGIvRG9jL2hvd3RvL2Z1bmN0aW9uYWwucnN0CkBAIC0yOTIsMTMgKzI5MiwxNCBAQAogQXBwbHlpbmcgOmZ1bmM6YGl0ZXJgIHRvIGEgZGljdGlvbmFyeSBhbHdheXMgbG9vcHMgb3ZlciB0aGUga2V5cywgYnV0CiBkaWN0aW9uYXJpZXMgaGF2ZSBtZXRob2RzIHRoYXQgcmV0dXJuIG90aGVyIGl0ZXJhdG9ycy4gIElmIHlvdSB3YW50IHRvIGl0ZXJhdGUKIG92ZXIgdmFsdWVzIG9yIGtleS92YWx1ZSBwYWlycywgeW91IGNhbiBleHBsaWNpdGx5IGNhbGwgdGhlCi06bWV0aDpgfmRpY3QudmFsdWVzYCBvciA6bWV0aDpgfmRpY3QuaXRlbXNgIG1ldGhvZHMgdG8gZ2V0IGFuIGFwcHJvcHJpYXRlIGl0ZXJhdG9yLgorOm1ldGg6YH5kaWN0LnZhbHVlc2Agb3IgOm1ldGg6YH5kaWN0Lml0ZW1zYCBtZXRob2RzIHRvIGdldCBhbiBhcHByb3ByaWF0ZQoraXRlcmF0b3IuCiAKIFRoZSA6ZnVuYzpgZGljdGAgY29uc3RydWN0b3IgY2FuIGFjY2VwdCBhbiBpdGVyYXRvciB0aGF0IHJldHVybnMgYSBmaW5pdGUgc3RyZWFtCiBvZiBgYChrZXksIHZhbHVlKWBgIHR1cGxlczoKIAogICAgID4+PiBMID0gWygnSXRhbHknLCAnUm9tZScpLCAoJ0ZyYW5jZScsICdQYXJpcycpLCAoJ1VTJywgJ1dhc2hpbmd0b24gREMnKV0KLSAgICA+Pj4gZGljdChpdGVyKEwpKQorICAgID4+PiBkaWN0KGl0ZXIoTCkpICAjZG9jdGVzdDogK1NLSVAKICAgICB7J0l0YWx5JzogJ1JvbWUnLCAnVVMnOiAnV2FzaGluZ3RvbiBEQycsICdGcmFuY2UnOiAnUGFyaXMnfQogCiBGaWxlcyBhbHNvIHN1cHBvcnQgaXRlcmF0aW9uIGJ5IGNhbGxpbmcgdGhlIDptZXRoOmB+aW8uVGV4dElPQmFzZS5yZWFkbGluZWAKQEAgLTQ3OCwxMyArNDc5LDEwIEBACiBZb3UgY291bGQgZXF1YWxseSB3cml0ZSBgYGZvciBpIGluIGdlbmVyYXRlX2ludHMoNSlgYCwgb3IgYGBhLGIsYyA9CiBnZW5lcmF0ZV9pbnRzKDMpYGAuCiAKLUluc2lkZSBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlIGBgcmV0dXJuYGAgc3RhdGVtZW50IGNhbiBvbmx5IGJlIHVzZWQgd2l0aG91dCBhCi12YWx1ZSwgYW5kIHNpZ25hbHMgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2lvbiBvZiB2YWx1ZXM7IGFmdGVyIGV4ZWN1dGluZyBhCi1gYHJldHVybmBgIHRoZSBnZW5lcmF0b3IgY2Fubm90IHJldHVybiBhbnkgZnVydGhlciB2YWx1ZXMuICBgYHJldHVybmBgIHdpdGggYQotdmFsdWUsIHN1Y2ggYXMgYGByZXR1cm4gNWBgLCBpcyBhIHN5bnRheCBlcnJvciBpbnNpZGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24uICBUaGUKLWVuZCBvZiB0aGUgZ2VuZXJhdG9yJ3MgcmVzdWx0cyBjYW4gYWxzbyBiZSBpbmRpY2F0ZWQgYnkgcmFpc2luZwotOmV4YzpgU3RvcEl0ZXJhdGlvbmAgbWFudWFsbHksIG9yIGJ5IGp1c3QgbGV0dGluZyB0aGUgZmxvdyBvZiBleGVjdXRpb24gZmFsbCBvZmYKLXRoZSBib3R0b20gb2YgdGhlIGZ1bmN0aW9uLgorSW5zaWRlIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBgYHJldHVybiB2YWx1ZWBgIGlzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvCitgYHJhaXNlIFN0b3BJdGVyYXRpb24odmFsdWUpYGAuICBJZiBubyB2YWx1ZSBpcyByZXR1cm5lZCBvciB0aGUgYm90dG9tIG9mIHRoZQorZnVuY3Rpb24gaXMgcmVhY2hlZCwgdGhlIHByb2Nlc3Npb24gb2YgdmFsdWVzIGVuZHMgYW5kIHRoZSBnZW5lcmF0b3IgY2Fubm90CityZXR1cm4gYW55IGZ1cnRoZXIgdmFsdWVzLgogCiBZb3UgY291bGQgYWNoaWV2ZSB0aGUgZWZmZWN0IG9mIGdlbmVyYXRvcnMgbWFudWFsbHkgYnkgd3JpdGluZyB5b3VyIG93biBjbGFzcwogYW5kIHN0b3JpbmcgYWxsIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlIGdlbmVyYXRvciBhcyBpbnN0YW5jZSB2YXJpYWJsZXMuICBGb3IKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9pbmRleC5yc3QgYi9Eb2MvaG93dG8vaW5kZXgucnN0CmluZGV4IGExMWQzZGEuLmY0NGU4YzAgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9pbmRleC5yc3QKKysrIGIvRG9jL2hvd3RvL2luZGV4LnJzdApAQCAtMjgsNCArMjgsNSBAQAogICAgdXJsbGliMi5yc3QKICAgIHdlYnNlcnZlcnMucnN0CiAgICBhcmdwYXJzZS5yc3QKKyAgIGlwYWRkcmVzcy5yc3QKIApkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2lwYWRkcmVzcy5yc3QgYi9Eb2MvaG93dG8vaXBhZGRyZXNzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTBmZjNlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2hvd3RvL2lwYWRkcmVzcy5yc3QKQEAgLTAsMCArMSwzNDEgQEAKKy4uIF9pcGFkZHJlc3MtaG93dG86CisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorQW4gaW50cm9kdWN0aW9uIHRvIHRoZSBpcGFkZHJlc3MgbW9kdWxlCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworOmF1dGhvcjogUGV0ZXIgTW9vZHkKKzphdXRob3I6IE5pY2sgQ29naGxhbgorCisuLiB0b3BpYzo6IE92ZXJ2aWV3CisKKyAgIFRoaXMgZG9jdW1lbnQgYWltcyB0byBwcm92aWRlIGEgZ2VudGxlIGludHJvZHVjdGlvbiB0byB0aGUKKyAgIDptb2Q6YGlwYWRkcmVzc2AgbW9kdWxlLiBJdCBpcyBhaW1lZCBwcmltYXJpbHkgYXQgdXNlcnMgdGhhdCBhcmVuJ3QKKyAgIGFscmVhZHkgZmFtaWxpYXIgd2l0aCBJUCBuZXR3b3JraW5nIHRlcm1pbm9sb2d5LCBidXQgbWF5IGFsc28gYmUgdXNlZnVsCisgICB0byBuZXR3b3JrIGVuZ2luZWVycyB3YW50aW5nIGFuIG92ZXJ2aWV3IG9mIGhvdyA6bW9kOmBpcGFkZHJlc3NgCisgICByZXByZXNlbnRzIElQIG5ldHdvcmsgYWRkcmVzc2luZyBjb25jZXB0cy4KKworCitDcmVhdGluZyBBZGRyZXNzL05ldHdvcmsvSW50ZXJmYWNlIG9iamVjdHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitTaW5jZSA6bW9kOmBpcGFkZHJlc3NgIGlzIGEgbW9kdWxlIGZvciBpbnNwZWN0aW5nIGFuZCBtYW5pcHVsYXRpbmcgSVAgYWRkcmVzc2VzLAordGhlIGZpcnN0IHRoaW5nIHlvdSdsbCB3YW50IHRvIGRvIGlzIGNyZWF0ZSBzb21lIG9iamVjdHMuICBZb3UgY2FuIHVzZQorOm1vZDpgaXBhZGRyZXNzYCB0byBjcmVhdGUgb2JqZWN0cyBmcm9tIHN0cmluZ3MgYW5kIGludGVnZXJzLgorCisKK0EgTm90ZSBvbiBJUCBWZXJzaW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZvciByZWFkZXJzIHRoYXQgYXJlbid0IHBhcnRpY3VsYXJseSBmYW1pbGlhciB3aXRoIElQIGFkZHJlc3NpbmcsIGl0J3MKK2ltcG9ydGFudCB0byBrbm93IHRoYXQgdGhlIEludGVybmV0IFByb3RvY29sIGlzIGN1cnJlbnRseSBpbiB0aGUgcHJvY2Vzcworb2YgbW92aW5nIGZyb20gdmVyc2lvbiA0IG9mIHRoZSBwcm90b2NvbCB0byB2ZXJzaW9uIDYuIFRoaXMgdHJhbnNpdGlvbiBpcworb2NjdXJyaW5nIGxhcmdlbHkgYmVjYXVzZSB2ZXJzaW9uIDQgb2YgdGhlIHByb3RvY29sIGRvZXNuJ3QgcHJvdmlkZSBlbm91Z2gKK2FkZHJlc3NlcyB0byBoYW5kbGUgdGhlIG5lZWRzIG9mIHRoZSB3aG9sZSB3b3JsZCwgZXNwZWNpYWxseSBnaXZlbiB0aGUKK2luY3JlYXNpbmcgbnVtYmVyIG9mIGRldmljZXMgd2l0aCBkaXJlY3QgY29ubmVjdGlvbnMgdG8gdGhlIGludGVybmV0LgorCitFeHBsYWluaW5nIHRoZSBkZXRhaWxzIG9mIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB0d28gdmVyc2lvbnMgb2YgdGhlCitwcm90b2NvbCBpcyBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMgaW50cm9kdWN0aW9uLCBidXQgcmVhZGVycyBuZWVkIHRvIGF0CitsZWFzdCBiZSBhd2FyZSB0aGF0IHRoZXNlIHR3byB2ZXJzaW9ucyBleGlzdCwgYW5kIGl0IHdpbGwgc29tZXRpbWVzIGJlCituZWNlc3NhcnkgdG8gZm9yY2UgdGhlIHVzZSBvZiBvbmUgdmVyc2lvbiBvciB0aGUgb3RoZXIuCisKKworSVAgSG9zdCBBZGRyZXNzZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK0FkZHJlc3Nlcywgb2Z0ZW4gcmVmZXJyZWQgdG8gYXMgImhvc3QgYWRkcmVzc2VzIiBhcmUgdGhlIG1vc3QgYmFzaWMgdW5pdAord2hlbiB3b3JraW5nIHdpdGggSVAgYWRkcmVzc2luZy4gVGhlIHNpbXBsZXN0IHdheSB0byBjcmVhdGUgYWRkcmVzc2VzIGlzCit0byB1c2UgdGhlIDpmdW5jOmBpcGFkZHJlc3MuaXBfYWRkcmVzc2AgZmFjdG9yeSBmdW5jdGlvbiwgd2hpY2ggYXV0b21hdGljYWxseQorZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGNyZWF0ZSBhbiBJUHY0IG9yIElQdjYgYWRkcmVzcyBiYXNlZCBvbiB0aGUgcGFzc2VkIGluCit2YWx1ZToKKworLi4gdGVzdHNldHVwOjoKKyAgID4+PiBpbXBvcnQgaXBhZGRyZXNzCisKKzo6CisKKyAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTkyLjAuMi4xJykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjEnKQorICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOkRCODo6MScpCisgICBJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEnKQorCitBZGRyZXNzZXMgY2FuIGFsc28gYmUgY3JlYXRlZCBkaXJlY3RseSBmcm9tIGludGVnZXJzLiBWYWx1ZXMgdGhhdCB3aWxsCitmaXQgd2l0aGluIDMyIGJpdHMgYXJlIGFzc3VtZWQgdG8gYmUgSVB2NCBhZGRyZXNzZXM6OgorCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoMzIyMTIyNTk4NSkKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjEnKQorICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKDQyNTQwNzY2NDExMjgyNTkyODU2OTAzOTg0OTUxNjUzODI2NTYxKQorICAgSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxJykKKworVG8gZm9yY2UgdGhlIHVzZSBvZiBJUHY0IG9yIElQdjYgYWRkcmVzc2VzLCB0aGUgcmVsZXZhbnQgY2xhc3NlcyBjYW4gYmUKK2ludm9rZWQgZGlyZWN0bHkuIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB0byBmb3JjZSBjcmVhdGlvbiBvZiBJUHY2CithZGRyZXNzZXMgZm9yIHNtYWxsIGludGVnZXJzOjoKKworICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKDEpCisgICBJUHY0QWRkcmVzcygnMC4wLjAuMScpCisgICA+Pj4gaXBhZGRyZXNzLklQdjRBZGRyZXNzKDEpCisgICBJUHY0QWRkcmVzcygnMC4wLjAuMScpCisgICA+Pj4gaXBhZGRyZXNzLklQdjZBZGRyZXNzKDEpCisgICBJUHY2QWRkcmVzcygnOjoxJykKKworCitEZWZpbmluZyBOZXR3b3JrcworLS0tLS0tLS0tLS0tLS0tLS0KKworSG9zdCBhZGRyZXNzZXMgYXJlIHVzdWFsbHkgZ3JvdXBlZCB0b2dldGhlciBpbnRvIElQIG5ldHdvcmtzLCBzbworOm1vZDpgaXBhZGRyZXNzYCBwcm92aWRlcyBhIHdheSB0byBjcmVhdGUsIGluc3BlY3QgYW5kIG1hbmlwdWxhdGUgbmV0d29yaworZGVmaW5pdGlvbnMuIElQIG5ldHdvcmsgb2JqZWN0cyBhcmUgY29uc3RydWN0ZWQgZnJvbSBzdHJpbmdzIHRoYXQgZGVmaW5lIHRoZQorcmFuZ2Ugb2YgaG9zdCBhZGRyZXNzZXMgdGhhdCBhcmUgcGFydCBvZiB0aGF0IG5ldHdvcmsuIFRoZSBzaW1wbGVzdCBmb3JtCitmb3IgdGhhdCBpbmZvcm1hdGlvbiBpcyBhICJuZXR3b3JrIGFkZHJlc3MvbmV0d29yayBwcmVmaXgiIHBhaXIsIHdoZXJlIHRoZQorcHJlZml4IGRlZmluZXMgdGhlIG51bWJlciBvZiBsZWFkaW5nIGJpdHMgdGhhdCBhcmUgY29tcGFyZWQgdG8gZGV0ZXJtaW5lCit3aGV0aGVyIG9yIG5vdCBhbiBhZGRyZXNzIGlzIHBhcnQgb2YgdGhlIG5ldHdvcmsgYW5kIHRoZSBuZXR3b3JrIGFkZHJlc3MKK2RlZmluZXMgdGhlIGV4cGVjdGVkIHZhbHVlIG9mIHRob3NlIGJpdHMuCisKK0FzIGZvciBhZGRyZXNzZXMsIGEgZmFjdG9yeSBmdW5jdGlvbiBpcyBwcm92aWRlZCB0aGF0IGRldGVybWluZXMgdGhlIGNvcnJlY3QKK0lQIHZlcnNpb24gYXV0b21hdGljYWxseTo6CisKKyAgID4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0JykKKyAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MC85NicpCisgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCisKK05ldHdvcmsgb2JqZWN0cyBjYW5ub3QgaGF2ZSBhbnkgaG9zdCBiaXRzIHNldC4gIFRoZSBwcmFjdGljYWwgZWZmZWN0IG9mIHRoaXMKK2lzIHRoYXQgYGAxOTIuMC4yLjEvMjRgYCBkb2VzIG5vdCBkZXNjcmliZSBhIG5ldHdvcmsuICBTdWNoIGRlZmluaXRpb25zIGFyZQorcmVmZXJyZWQgdG8gYXMgaW50ZXJmYWNlIG9iamVjdHMgc2luY2UgdGhlIGlwLW9uLWEtbmV0d29yayBub3RhdGlvbiBpcworY29tbW9ubHkgdXNlZCB0byBkZXNjcmliZSBuZXR3b3JrIGludGVyZmFjZXMgb2YgYSBjb21wdXRlciBvbiBhIGdpdmVuIG5ldHdvcmsKK2FuZCBhcmUgZGVzY3JpYmVkIGZ1cnRoZXIgaW4gdGhlIG5leHQgc2VjdGlvbi4KKworQnkgZGVmYXVsdCwgYXR0ZW1wdGluZyB0byBjcmVhdGUgYSBuZXR3b3JrIG9iamVjdCB3aXRoIGhvc3QgYml0cyBzZXQgd2lsbAorcmVzdWx0IGluIDpleGM6YFZhbHVlRXJyb3JgIGJlaW5nIHJhaXNlZC4gVG8gcmVxdWVzdCB0aGF0IHRoZQorYWRkaXRpb25hbCBiaXRzIGluc3RlYWQgYmUgY29lcmNlZCB0byB6ZXJvLCB0aGUgZmxhZyBgYHN0cmljdD1GYWxzZWBgIGNhbgorYmUgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3Rvcjo6CisKKyAgID4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTkyLjAuMi4xLzI0JykKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgVmFsdWVFcnJvcjogMTkyLjAuMi4xLzI0IGhhcyBob3N0IGJpdHMgc2V0CisgICA+Pj4gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE5Mi4wLjIuMS8yNCcsIHN0cmljdD1GYWxzZSkKKyAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorCitXaGlsZSB0aGUgc3RyaW5nIGZvcm0gb2ZmZXJzIHNpZ25pZmljYW50bHkgbW9yZSBmbGV4aWJpbGl0eSwgbmV0d29ya3MgY2FuCithbHNvIGJlIGRlZmluZWQgd2l0aCBpbnRlZ2VycywganVzdCBsaWtlIGhvc3QgYWRkcmVzc2VzLiBJbiB0aGlzIGNhc2UsIHRoZQorbmV0d29yayBpcyBjb25zaWRlcmVkIHRvIGNvbnRhaW4gb25seSB0aGUgc2luZ2xlIGFkZHJlc3MgaWRlbnRpZmllZCBieSB0aGUKK2ludGVnZXIsIHNvIHRoZSBuZXR3b3JrIHByZWZpeCBpbmNsdWRlcyB0aGUgZW50aXJlIG5ldHdvcmsgYWRkcmVzczo6CisKKyAgID4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygzMjIxMjI1OTg0KQorICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8zMicpCisgICA+Pj4gaXBhZGRyZXNzLmlwX25ldHdvcmsoNDI1NDA3NjY0MTEyODI1OTI4NTY5MDM5ODQ5NTE2NTM4MjY1NjApCisgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi8xMjgnKQorCitBcyB3aXRoIGFkZHJlc3NlcywgY3JlYXRpb24gb2YgYSBwYXJ0aWN1bGFyIGtpbmQgb2YgbmV0d29yayBjYW4gYmUgZm9yY2VkCitieSBjYWxsaW5nIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBkaXJlY3RseSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBmYWN0b3J5CitmdW5jdGlvbi4KKworCitIb3N0IEludGVyZmFjZXMKKy0tLS0tLS0tLS0tLS0tLQorCitBcyBtZW50aW9uZWQganVzdCBhYm92ZSwgaWYgeW91IG5lZWQgdG8gZGVzY3JpYmUgYW4gYWRkcmVzcyBvbiBhIHBhcnRpY3VsYXIKK25ldHdvcmssIG5laXRoZXIgdGhlIGFkZHJlc3Mgbm9yIHRoZSBuZXR3b3JrIGNsYXNzZXMgYXJlIHN1ZmZpY2llbnQuCitOb3RhdGlvbiBsaWtlIGBgMTkyLjAuMi4xLzI0YGAgaXMgY29tbW9ubHkgdXNlZCBieSBuZXR3b3JrIGVuZ2luZWVycyBhbmQgdGhlCitwZW9wbGUgd2hvIHdyaXRlIHRvb2xzIGZvciBmaXJld2FsbHMgYW5kIHJvdXRlcnMgYXMgc2hvcnRoYW5kIGZvciAidGhlIGhvc3QKK2BgMTkyLjAuMi4xYGAgb24gdGhlIG5ldHdvcmsgYGAxOTIuMC4yLjAvMjRgYCIsIEFjY29yZGluZ2x5LCA6bW9kOmBpcGFkZHJlc3NgCitwcm92aWRlcyBhIHNldCBvZiBoeWJyaWQgY2xhc3NlcyB0aGF0IGFzc29jaWF0ZSBhbiBhZGRyZXNzIHdpdGggYSBwYXJ0aWN1bGFyCituZXR3b3JrLiBUaGUgaW50ZXJmYWNlIGZvciBjcmVhdGlvbiBpcyBpZGVudGljYWwgdG8gdGhhdCBmb3IgZGVmaW5pbmcgbmV0d29yaworb2JqZWN0cywgZXhjZXB0IHRoYXQgdGhlIGFkZHJlc3MgcG9ydGlvbiBpc24ndCBjb25zdHJhaW5lZCB0byBiZWluZyBhIG5ldHdvcmsKK2FkZHJlc3MuCisKKyAgID4+PiBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcxOTIuMC4yLjEvMjQnKQorICAgSVB2NEludGVyZmFjZSgnMTkyLjAuMi4xLzI0JykKKyAgID4+PiBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcyMDAxOmRiODo6MS85NicpCisgICBJUHY2SW50ZXJmYWNlKCcyMDAxOmRiODo6MS85NicpCisKK0ludGVnZXIgaW5wdXRzIGFyZSBhY2NlcHRlZCAoYXMgd2l0aCBuZXR3b3JrcyksIGFuZCB1c2Ugb2YgYSBwYXJ0aWN1bGFyIElQCit2ZXJzaW9uIGNhbiBiZSBmb3JjZWQgYnkgY2FsbGluZyB0aGUgcmVsZXZhbnQgY29uc3RydWN0b3IgZGlyZWN0bHkuCisKKworSW5zcGVjdGluZyBBZGRyZXNzL05ldHdvcmsvSW50ZXJmYWNlIE9iamVjdHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1lvdSd2ZSBnb25lIHRvIHRoZSB0cm91YmxlIG9mIGNyZWF0aW5nIGFuIElQdig0fDYpKEFkZHJlc3N8TmV0d29ya3xJbnRlcmZhY2UpCitvYmplY3QsIHNvIHlvdSBwcm9iYWJseSB3YW50IHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCBpdC4gIDptb2Q6YGlwYWRkcmVzc2AKK3RyaWVzIHRvIG1ha2UgZG9pbmcgdGhpcyBlYXN5IGFuZCBpbnR1aXRpdmUuCisKK0V4dHJhY3RpbmcgdGhlIElQIHZlcnNpb246OgorCisgICA+Pj4gYWRkcjQgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTkyLjAuMi4xJykKKyAgID4+PiBhZGRyNiA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOmRiODo6MScpCisgICA+Pj4gYWRkcjYudmVyc2lvbgorICAgNgorICAgPj4+IGFkZHI0LnZlcnNpb24KKyAgIDQKKworT2J0YWluaW5nIHRoZSBuZXR3b3JrIGZyb20gYW4gaW50ZXJmYWNlOjoKKworICAgPj4+IGhvc3Q0ID0gaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMTkyLjAuMi4xLzI0JykKKyAgID4+PiBob3N0NC5uZXR3b3JrCisgICBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JykKKyAgID4+PiBob3N0NiA9IGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzIwMDE6ZGI4OjoxLzk2JykKKyAgID4+PiBob3N0Ni5uZXR3b3JrCisgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCisKK0ZpbmRpbmcgb3V0IGhvdyBtYW55IGluZGl2aWR1YWwgYWRkcmVzc2VzIGFyZSBpbiBhIG5ldHdvcms6OgorCisgICA+Pj4gbmV0NCA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgPj4+IG5ldDQubnVtX2FkZHJlc3NlcworICAgMjU2CisgICA+Pj4gbmV0NiA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MC85NicpCisgICA+Pj4gbmV0Ni5udW1fYWRkcmVzc2VzCisgICA0Mjk0OTY3Mjk2CisKK0l0ZXJhdGluZyB0aHJvdWdoIHRoZSAidXNhYmxlIiBhZGRyZXNzZXMgb24gYSBuZXR3b3JrOjoKKworICAgPj4+IG5ldDQgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0JykKKyAgID4+PiBmb3IgeCBpbiBuZXQ0Lmhvc3RzKCk6CisgICAuLi4gICAgIHByaW50KHgpICAjIGRvY3Rlc3Q6ICtFTExJUFNJUworICAgMTkyLjAuMi4xCisgICAxOTIuMC4yLjIKKyAgIDE5Mi4wLjIuMworICAgMTkyLjAuMi40CisgICAuLi4KKyAgIDE5Mi4wLjIuMjUyCisgICAxOTIuMC4yLjI1MworICAgMTkyLjAuMi4yNTQKKworCitPYnRhaW5pbmcgdGhlIG5ldG1hc2sgKGkuZS4gc2V0IGJpdHMgY29ycmVzcG9uZGluZyB0byB0aGUgbmV0d29yayBwcmVmaXgpIG9yCit0aGUgaG9zdG1hc2sgKGFueSBiaXRzIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBuZXRtYXNrKToKKworICAgPj4+IG5ldDQgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0JykKKyAgID4+PiBuZXQ0Lm5ldG1hc2sKKyAgIElQdjRBZGRyZXNzKCcyNTUuMjU1LjI1NS4wJykKKyAgID4+PiBuZXQ0Lmhvc3RtYXNrCisgICBJUHY0QWRkcmVzcygnMC4wLjAuMjU1JykKKyAgID4+PiBuZXQ2ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjowLzk2JykKKyAgID4+PiBuZXQ2Lm5ldG1hc2sKKyAgIElQdjZBZGRyZXNzKCdmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjo6JykKKyAgID4+PiBuZXQ2Lmhvc3RtYXNrCisgICBJUHY2QWRkcmVzcygnOjpmZmZmOmZmZmYnKQorCisKK0V4cGxvZGluZyBvciBjb21wcmVzc2luZyB0aGUgYWRkcmVzczo6CisKKyAgID4+PiBhZGRyNi5leHBsb2RlZAorICAgJzIwMDE6MGRiODowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMScKKyAgID4+PiBhZGRyNi5jb21wcmVzc2VkCisgICAnMjAwMTpkYjg6OjEnCisgICA+Pj4gbmV0Ni5leHBsb2RlZAorICAgJzIwMDE6MGRiODowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMC85NicKKyAgID4+PiBuZXQ2LmNvbXByZXNzZWQKKyAgICcyMDAxOmRiODo6Lzk2JworCitXaGlsZSBJUHY0IGRvZXNuJ3Qgc3VwcG9ydCBleHBsb3Npb24gb3IgY29tcHJlc3Npb24sIHRoZSBhc3NvY2lhdGVkIG9iamVjdHMKK3N0aWxsIHByb3ZpZGUgdGhlIHJlbGV2YW50IHByb3BlcnRpZXMgc28gdGhhdCB2ZXJzaW9uIG5ldXRyYWwgY29kZSBjYW4KK2Vhc2lseSBlbnN1cmUgdGhlIG1vc3QgY29uY2lzZSBvciBtb3N0IHZlcmJvc2UgZm9ybSBpcyB1c2VkIGZvciBJUHY2CithZGRyZXNzZXMgd2hpbGUgc3RpbGwgY29ycmVjdGx5IGhhbmRsaW5nIElQdjQgYWRkcmVzc2VzLgorCisKK05ldHdvcmtzIGFzIGxpc3RzIG9mIEFkZHJlc3NlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0l0J3Mgc29tZXRpbWVzIHVzZWZ1bCB0byB0cmVhdCBuZXR3b3JrcyBhcyBsaXN0cy4gIFRoaXMgbWVhbnMgaXQgaXMgcG9zc2libGUKK3RvIGluZGV4IHRoZW0gbGlrZSB0aGlzOjoKKworICAgPj4+IG5ldDRbMV0KKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjEnKQorICAgPj4+IG5ldDRbLTFdCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4yNTUnKQorICAgPj4+IG5ldDZbMV0KKyAgIElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MScpCisgICA+Pj4gbmV0NlstMV0KKyAgIElQdjZBZGRyZXNzKCcyMDAxOmRiODo6ZmZmZjpmZmZmJykKKworCitJdCBhbHNvIG1lYW5zIHRoYXQgbmV0d29yayBvYmplY3RzIGxlbmQgdGhlbXNlbHZlcyB0byB1c2luZyB0aGUgbGlzdAorbWVtYmVyc2hpcCB0ZXN0IHN5bnRheCBsaWtlIHRoaXM6OgorCisgICBpZiBhZGRyZXNzIGluIG5ldHdvcms6CisgICAgICAgIyBkbyBzb21ldGhpbmcKKworQ29udGFpbm1lbnQgdGVzdGluZyBpcyBkb25lIGVmZmljaWVudGx5IGJhc2VkIG9uIHRoZSBuZXR3b3JrIHByZWZpeDo6CisKKyAgID4+PiBhZGRyNCA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMC4yLjEnKQorICAgPj4+IGFkZHI0IGluIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgVHJ1ZQorICAgPj4+IGFkZHI0IGluIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMC4zLjAvMjQnKQorICAgRmFsc2UKKworCitDb21wYXJpc29ucworPT09PT09PT09PT0KKworOm1vZDpgaXBhZGRyZXNzYCBwcm92aWRlcyBzb21lIHNpbXBsZSwgaG9wZWZ1bGx5IGludHVpdGl2ZSB3YXlzIHRvIGNvbXBhcmUKK29iamVjdHMsIHdoZXJlIGl0IG1ha2VzIHNlbnNlOjoKKworICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMC4yLjEnKSA8IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMC4yLjInKQorICAgVHJ1ZQorCitBIDpleGM6YFR5cGVFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiB5b3UgdHJ5IHRvIGNvbXBhcmUgb2JqZWN0cyBvZgorZGlmZmVyZW50IHZlcnNpb25zIG9yIGRpZmZlcmVudCB0eXBlcy4KKworCitVc2luZyBJUCBBZGRyZXNzZXMgd2l0aCBvdGhlciBtb2R1bGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK090aGVyIG1vZHVsZXMgdGhhdCB1c2UgSVAgYWRkcmVzc2VzIChzdWNoIGFzIDptb2Q6YHNvY2tldGApIHVzdWFsbHkgd29uJ3QKK2FjY2VwdCBvYmplY3RzIGZyb20gdGhpcyBtb2R1bGUgZGlyZWN0bHkuIEluc3RlYWQsIHRoZXkgbXVzdCBiZSBjb2VyY2VkIHRvCithbiBpbnRlZ2VyIG9yIHN0cmluZyB0aGF0IHRoZSBvdGhlciBtb2R1bGUgd2lsbCBhY2NlcHQ6OgorCisgICA+Pj4gYWRkcjQgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTkyLjAuMi4xJykKKyAgID4+PiBzdHIoYWRkcjQpCisgICAnMTkyLjAuMi4xJworICAgPj4+IGludChhZGRyNCkKKyAgIDMyMjEyMjU5ODUKKworCitHZXR0aW5nIG1vcmUgZGV0YWlsIHdoZW4gaW5zdGFuY2UgY3JlYXRpb24gZmFpbHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitXaGVuIGNyZWF0aW5nIGFkZHJlc3MvbmV0d29yay9pbnRlcmZhY2Ugb2JqZWN0cyB1c2luZyB0aGUgdmVyc2lvbi1hZ25vc3RpYworZmFjdG9yeSBmdW5jdGlvbnMsIGFueSBlcnJvcnMgd2lsbCBiZSByZXBvcnRlZCBhcyA6ZXhjOmBWYWx1ZUVycm9yYCB3aXRoCithIGdlbmVyaWMgZXJyb3IgbWVzc2FnZSB0aGF0IHNpbXBseSBzYXlzIHRoZSBwYXNzZWQgaW4gdmFsdWUgd2FzIG5vdAorcmVjb2duaXplZCBhcyBhbiBvYmplY3Qgb2YgdGhhdCB0eXBlLiBUaGUgbGFjayBvZiBhIHNwZWNpZmljIGVycm9yIGlzCitiZWNhdXNlIGl0J3MgbmVjZXNzYXJ5IHRvIGtub3cgd2hldGhlciB0aGUgdmFsdWUgaXMgKnN1cHBvc2VkKiB0byBiZSBJUHY0CitvciBJUHY2IGluIG9yZGVyIHRvIHByb3ZpZGUgbW9yZSBkZXRhaWwgb24gd2h5IGl0IGhhcyBiZWVuIHJlamVjdGVkLgorCitUbyBzdXBwb3J0IHVzZSBjYXNlcyB3aGVyZSBpdCBpcyB1c2VmdWwgdG8gaGF2ZSBhY2Nlc3MgdG8gdGhpcyBhZGRpdGlvbmFsCitkZXRhaWwsIHRoZSBpbmRpdmlkdWFsIGNsYXNzIGNvbnN0cnVjdG9ycyBhY3R1YWxseSByYWlzZSB0aGUKKzpleGM6YFZhbHVlRXJyb3JgIHN1YmNsYXNzZXMgOmV4YzpgaXBhZGRyZXNzLkFkZHJlc3NWYWx1ZUVycm9yYCBhbmQKKzpleGM6YGlwYWRkcmVzcy5OZXRtYXNrVmFsdWVFcnJvcmAgdG8gaW5kaWNhdGUgZXhhY3RseSB3aGljaCBwYXJ0IG9mCit0aGUgZGVmaW5pdGlvbiBmYWlsZWQgdG8gcGFyc2UgY29ycmVjdGx5LgorCitUaGUgZXJyb3IgbWVzc2FnZXMgYXJlIHNpZ25pZmljYW50bHkgbW9yZSBkZXRhaWxlZCB3aGVuIHVzaW5nIHRoZQorY2xhc3MgY29uc3RydWN0b3JzIGRpcmVjdGx5LiBGb3IgZXhhbXBsZTo6CisKKyAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygiMTkyLjE2OC4wLjI1NiIpCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgVmFsdWVFcnJvcjogJzE5Mi4xNjguMC4yNTYnIGRvZXMgbm90IGFwcGVhciB0byBiZSBhbiBJUHY0IG9yIElQdjYgYWRkcmVzcworICAgPj4+IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygiMTkyLjE2OC4wLjI1NiIpCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgaXBhZGRyZXNzLkFkZHJlc3NWYWx1ZUVycm9yOiBPY3RldCAyNTYgKD4gMjU1KSBub3QgcGVybWl0dGVkIGluICcxOTIuMTY4LjAuMjU2JworCisgICA+Pj4gaXBhZGRyZXNzLmlwX25ldHdvcmsoIjE5Mi4xNjguMC4xLzY0IikKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICBWYWx1ZUVycm9yOiAnMTkyLjE2OC4wLjEvNjQnIGRvZXMgbm90IGFwcGVhciB0byBiZSBhbiBJUHY0IG9yIElQdjYgbmV0d29yaworICAgPj4+IGlwYWRkcmVzcy5JUHY0TmV0d29yaygiMTkyLjE2OC4wLjEvNjQiKQorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgIGlwYWRkcmVzcy5OZXRtYXNrVmFsdWVFcnJvcjogJzY0JyBpcyBub3QgYSB2YWxpZCBuZXRtYXNrCisKK0hvd2V2ZXIsIGJvdGggb2YgdGhlIG1vZHVsZSBzcGVjaWZpYyBleGNlcHRpb25zIGhhdmUgOmV4YzpgVmFsdWVFcnJvcmAgYXMgdGhlaXIKK3BhcmVudCBjbGFzcywgc28gaWYgeW91J3JlIG5vdCBjb25jZXJuZWQgd2l0aCB0aGUgcGFydGljdWxhciB0eXBlIG9mIGVycm9yLAoreW91IGNhbiBzdGlsbCB3cml0ZSBjb2RlIGxpa2UgdGhlIGZvbGxvd2luZzo6CisKKyAgIHRyeToKKyAgICAgICBuZXR3b3JrID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKGFkZHJlc3MpCisgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICBwcmludCgnYWRkcmVzcy9uZXRtYXNrIGlzIGludmFsaWQgZm9yIElQdjQ6JywgYWRkcmVzcykKKwpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2xvZ2dpbmctY29va2Jvb2sucnN0IGIvRG9jL2hvd3RvL2xvZ2dpbmctY29va2Jvb2sucnN0CmluZGV4IGMzNjE5MzguLmIwNTdmMTkgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9sb2dnaW5nLWNvb2tib29rLnJzdAorKysgYi9Eb2MvaG93dG8vbG9nZ2luZy1jb29rYm9vay5yc3QKQEAgLTEzMTYsNiArMTMxNiwzMyBAQAogc2VjdGlvbiA8aHR0cHM6Ly9kb2NzLmRqYW5nb3Byb2plY3QuY29tL2VuLzEuMy90b3BpY3MvbG9nZ2luZy8jY29uZmlndXJpbmctbG9nZ2luZz5gXwogb2YgdGhlIERqYW5nbyBkb2N1bWVudGF0aW9uLgogCisuLiBfY29va2Jvb2stcm90YXRvci1uYW1lcjoKKworVXNpbmcgYSByb3RhdG9yIGFuZCBuYW1lciB0byBjdXN0b21pc2UgbG9nIHJvdGF0aW9uIHByb2Nlc3NpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FuIGV4YW1wbGUgb2YgaG93IHlvdSBjYW4gZGVmaW5lIGEgbmFtZXIgYW5kIHJvdGF0b3IgaXMgZ2l2ZW4gaW4gdGhlIGZvbGxvd2luZworc25pcHBldCwgd2hpY2ggc2hvd3MgemxpYi1iYXNlZCBjb21wcmVzc2lvbiBvZiB0aGUgbG9nIGZpbGU6OgorCisgICAgZGVmIG5hbWVyKG5hbWUpOgorICAgICAgICByZXR1cm4gbmFtZSArICIuZ3oiCisKKyAgICBkZWYgcm90YXRvcihzb3VyY2UsIGRlc3QpOgorICAgICAgICB3aXRoIG9wZW4oc291cmNlLCAicmIiKSBhcyBzZjoKKyAgICAgICAgICAgIGRhdGEgPSBzZi5yZWFkKCkKKyAgICAgICAgICAgIGNvbXByZXNzZWQgPSB6bGliLmNvbXByZXNzKGRhdGEsIDkpCisgICAgICAgICAgICB3aXRoIG9wZW4oZGVzdCwgIndiIikgYXMgZGY6CisgICAgICAgICAgICAgICAgZGYud3JpdGUoY29tcHJlc3NlZCkKKyAgICAgICAgb3MucmVtb3ZlKHNvdXJjZSkKKworICAgIHJoID0gbG9nZ2luZy5oYW5kbGVycy5Sb3RhdGluZ0ZpbGVIYW5kbGVyKC4uLikKKyAgICByaC5yb3RhdG9yID0gcm90YXRvcgorICAgIHJoLm5hbWVyID0gbmFtZXIKKworVGhlc2UgYXJlIG5vdCAidHJ1ZSIgLmd6IGZpbGVzLCBhcyB0aGV5IGFyZSBiYXJlIGNvbXByZXNzZWQgZGF0YSwgd2l0aCBubworImNvbnRhaW5lciIgc3VjaCBhcyB5b3XigJlkIGZpbmQgaW4gYW4gYWN0dWFsIGd6aXAgZmlsZS4gVGhpcyBzbmlwcGV0IGlzIGp1c3QKK2ZvciBpbGx1c3RyYXRpb24gcHVycG9zZXMuCisKIEEgbW9yZSBlbGFib3JhdGUgbXVsdGlwcm9jZXNzaW5nIGV4YW1wbGUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMTU3Miw3ICsxNTk5LDcgQEAKIAogICAgICAgJ0FTQ0lJIHNlY3Rpb25cdWZlZmZVbmljb2RlIHNlY3Rpb24nCiAKLSAgIFRoZSBVbmljb2RlIGNvZGUgcG9pbnQgYGAnXGZlZmZgYGAsIHdoZW4gZW5jb2RlZCB1c2luZyBVVEYtOCwgd2lsbCBiZQorICAgVGhlIFVuaWNvZGUgY29kZSBwb2ludCBgYCdcZmVmZidgYCwgd2hlbiBlbmNvZGVkIHVzaW5nIFVURi04LCB3aWxsIGJlCiAgICBlbmNvZGVkIGFzIGEgVVRGLTggQk9NIC0tIHRoZSBieXRlLXN0cmluZyBgYGInXHhlZlx4YmJceGJmJ2BgLgogCiAjLiBSZXBsYWNlIHRoZSBBU0NJSSBzZWN0aW9uIHdpdGggd2hhdGV2ZXIgcGxhY2Vob2xkZXJzIHlvdSBsaWtlLCBidXQgbWFrZSBzdXJlCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vcHlwb3J0aW5nLnJzdCBiL0RvYy9ob3d0by9weXBvcnRpbmcucnN0CmluZGV4IGEyZTQxNzMuLjkwMTUzNzIgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9weXBvcnRpbmcucnN0CisrKyBiL0RvYy9ob3d0by9weXBvcnRpbmcucnN0CkBAIC0yMSwyMSArMjEsMjEgQEAKIENob29zaW5nIGEgU3RyYXRlZ3kKID09PT09PT09PT09PT09PT09PT0KIAotV2hlbiBhIHByb2plY3QgbWFrZXMgdGhlIGRlY2lzaW9uIHRoYXQgaXQncyB0aW1lIHRvIHN1cHBvcnQgYm90aCBQeXRob24gMiAmIDMsCitXaGVuIGEgcHJvamVjdCBjaG9vc2VzIHRvIHN1cHBvcnQgYm90aCBQeXRob24gMiAmIDMsCiBhIGRlY2lzaW9uIG5lZWRzIHRvIGJlIG1hZGUgYXMgdG8gaG93IHRvIGdvIGFib3V0IGFjY29tcGxpc2hpbmcgdGhhdCBnb2FsLgogVGhlIGNob3NlbiBzdHJhdGVneSB3aWxsIGRlcGVuZCBvbiBob3cgbGFyZ2UgdGhlIHByb2plY3QncyBleGlzdGluZwotY29kZWJhc2UgaXMgYW5kIGhvdyBtdWNoIGRpdmVyZ2VuY2UgeW91IHdhbnQgZnJvbSB5b3VyIFB5dGhvbiAyIGNvZGViYXNlIGZyb20KLXlvdXIgUHl0aG9uIDMgb25lIChlLmcuLCBzdGFydGluZyBhIG5ldyB2ZXJzaW9uIHdpdGggUHl0aG9uIDMpLgotCi1JZiB5b3VyIHByb2plY3QgaXMgYnJhbmQtbmV3IG9yIGRvZXMgbm90IGhhdmUgYSBsYXJnZSBjb2RlYmFzZSwgdGhlbiB5b3UgbWF5Ci13YW50IHRvIGNvbnNpZGVyIHdyaXRpbmcvcG9ydGluZyA6cmVmOmBhbGwgb2YgeW91ciBjb2RlIGZvciBQeXRob24gMwotYW5kIHVzZSAzdG8yIDx1c2VfM3RvMj5gIHRvIHBvcnQgeW91ciBjb2RlIGZvciBQeXRob24gMi4KK2NvZGViYXNlIGlzIGFuZCBob3cgbXVjaCBkaXZlcmdlbmNlIHlvdSB3YW50IGZyb20geW91ciBjdXJyZW50IFB5dGhvbiAyIGNvZGViYXNlCisoZS5nLiwgY2hhbmdpbmcgeW91ciBjb2RlIHRvIHdvcmsgc2ltdWx0YW5lb3VzbHkgd2l0aCBQeXRob24gMiBhbmQgMykuCiAKIElmIHlvdSB3b3VsZCBwcmVmZXIgdG8gbWFpbnRhaW4gYSBjb2RlYmFzZSB3aGljaCBpcyBzZW1hbnRpY2FsbHkgKiphbmQqKgogc3ludGFjdGljYWxseSBjb21wYXRpYmxlIHdpdGggUHl0aG9uIDIgJiAzIHNpbXVsdGFuZW91c2x5LCB5b3UgY2FuIHdyaXRlCiA6cmVmOmB1c2Vfc2FtZV9zb3VyY2VgLiBXaGlsZSB0aGlzIHRlbmRzIHRvIGxlYWQgdG8gc29tZXdoYXQgbm9uLWlkaW9tYXRpYwogY29kZSwgaXQgZG9lcyBtZWFuIHlvdSBrZWVwIGEgcmFwaWQgZGV2ZWxvcG1lbnQgcHJvY2VzcyBmb3IgeW91LCB0aGUgZGV2ZWxvcGVyLgogCitJZiB5b3VyIHByb2plY3QgaXMgYnJhbmQtbmV3IG9yIGRvZXMgbm90IGhhdmUgYSBsYXJnZSBjb2RlYmFzZSwgdGhlbiB5b3UgbWF5Cit3YW50IHRvIGNvbnNpZGVyIHdyaXRpbmcvcG9ydGluZyA6cmVmOmBhbGwgb2YgeW91ciBjb2RlIGZvciBQeXRob24gMworYW5kIHVzZSAzdG8yIDx1c2VfM3RvMj5gIHRvIHBvcnQgeW91ciBjb2RlIGZvciBQeXRob24gMi4KKwogRmluYWxseSwgeW91IGRvIGhhdmUgdGhlIG9wdGlvbiBvZiA6cmVmOmB1c2luZyAydG8zIDx1c2VfMnRvMz5gIHRvIHRyYW5zbGF0ZQogUHl0aG9uIDIgY29kZSBpbnRvIFB5dGhvbiAzIGNvZGUgKHdpdGggc29tZSBtYW51YWwgaGVscCkuIFRoaXMgY2FuIHRha2UgdGhlCiBmb3JtIG9mIGJyYW5jaGluZyB5b3VyIGNvZGUgYW5kIHVzaW5nIDJ0bzMgdG8gc3RhcnQgYSBQeXRob24gMyBicmFuY2guIFlvdSBjYW4KQEAgLTU1LDEwICs1NSwxMCBAQAogY29uc2lkZXIuCiAKIE9uZSBpcyBtYWtlIHN1cmUgeW91IGhhdmUgYSByb2J1c3QgdGVzdCBzdWl0ZS4gWW91IG5lZWQgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcKLWNvbnRpbnVlcyB0byB3b3JrLCBqdXN0IGxpa2Ugd2hlbiB5b3Ugc3VwcG9ydCBhIG5ldyBtaW5vciB2ZXJzaW9uIG9mIFB5dGhvbi4KLVRoaXMgbWVhbnMgbWFraW5nIHN1cmUgeW91ciB0ZXN0IHN1aXRlIGlzIHRob3JvdWdoIGFuZCBpcyBwb3J0ZWQgcHJvcGVybHkKLWJldHdlZW4gUHl0aG9uIDIgJiAzLiBZb3Ugd2lsbCBhbHNvIG1vc3QgbGlrZWx5IHdhbnQgdG8gdXNlIHNvbWV0aGluZyBsaWtlIHRveF8KLXRvIGF1dG9tYXRlIHRlc3RpbmcgYmV0d2VlbiBib3RoIGEgUHl0aG9uIDIgYW5kIFB5dGhvbiAzIFZNLgorY29udGludWVzIHRvIHdvcmssIGp1c3QgbGlrZSB3aGVuIHlvdSBzdXBwb3J0IGEgbmV3IG1pbm9yL2ZlYXR1cmUgcmVsZWFzZSBvZgorUHl0aG9uLiBUaGlzIG1lYW5zIG1ha2luZyBzdXJlIHlvdXIgdGVzdCBzdWl0ZSBpcyB0aG9yb3VnaCBhbmQgaXMgcG9ydGVkCitwcm9wZXJseSBiZXR3ZWVuIFB5dGhvbiAyICYgMy4gWW91IHdpbGwgYWxzbyBtb3N0IGxpa2VseSB3YW50IHRvIHVzZSBzb21ldGhpbmcKK2xpa2UgdG94XyB0byBhdXRvbWF0ZSB0ZXN0aW5nIGJldHdlZW4gYm90aCBhIFB5dGhvbiAyIGFuZCBQeXRob24gMyBpbnRlcnByZXRlci4KIAogVHdvLCBvbmNlIHlvdXIgcHJvamVjdCBoYXMgUHl0aG9uIDMgc3VwcG9ydCwgbWFrZSBzdXJlIHRvIGFkZCB0aGUgcHJvcGVyCiBjbGFzc2lmaWVyIG9uIHRoZSBDaGVlc2VzaG9wXyAoUHlQSV8pLiBUbyBoYXZlIHlvdXIgcHJvamVjdCBsaXN0ZWQgYXMgUHl0aG9uIDMKQEAgLTk4LDcgKzk4LDggQEAKIAogRm91ciwgcmVhZCBhbGwgdGhlIGFwcHJvYWNoZXMuIEp1c3QgYmVjYXVzZSBzb21lIGJpdCBvZiBhZHZpY2UgYXBwbGllcyB0byBvbmUKIGFwcHJvYWNoIG1vcmUgdGhhbiBhbm90aGVyIGRvZXNuJ3QgbWVhbiB0aGF0IHNvbWUgYWR2aWNlIGRvZXNuJ3QgYXBwbHkgdG8gb3RoZXIKLXN0cmF0ZWdpZXMuCitzdHJhdGVnaWVzLiBUaGlzIGlzIGVzcGVjaWFsbHkgdHJ1ZSBvZiB3aGV0aGVyIHlvdSBkZWNpZGUgdG8gdXNlIDJ0bzMgb3IgYmUKK3NvdXJjZS1jb21wYXRpYmxlOyB0aXBzIGZvciBvbmUgYXBwcm9hY2ggYWxtb3N0IGFsd2F5cyBhcHBseSB0byB0aGUgb3RoZXIuCiAKIEZpdmUsIGRyb3Agc3VwcG9ydCBmb3Igb2xkZXIgUHl0aG9uIHZlcnNpb25zIGlmIHBvc3NpYmxlLiBgUHl0aG9uIDIuNWBfCiBpbnRyb2R1Y2VkIGEgbG90IG9mIHVzZWZ1bCBzeW50YXggYW5kIGxpYnJhcmllcyB3aGljaCBoYXZlIGJlY29tZSBpZGlvbWF0aWMKQEAgLTEwOCw2ICsxMDksMTQgQEAKIG9mIFB5dGhvbiB3aGljaCB5b3UgYmVsaWV2ZSBjYW4gYmUgeW91ciBtaW5pbXVtIHN1cHBvcnQgdmVyc2lvbgogYW5kIHdvcmsgZnJvbSB0aGVyZS4KIAorU2l4LCB0YXJnZXQgdGhlIG5ld2VzdCB2ZXJzaW9uIG9mIFB5dGhvbiAzIHRoYXQgeW91IGNhbi4gQmV5b25kIGp1c3QgdGhlIHVzdWFsCitidWdmaXhlcywgY29tcGF0aWJpbGl0eSBoYXMgY29udGludWVkIHRvIGltcHJvdmUgYmV0d2VlbiBQeXRob24gMiBhbmQgMyBhcyB0aW1lCitoYXMgcGFzc2VkLiBUaGlzIGlzIGVzcGVjaWFsbHkgdHJ1ZSBmb3IgUHl0aG9uIDMuMyB3aGVyZSB0aGUgYGB1YGAgcHJlZml4IGZvcgorc3RyaW5ncyBpcyBhbGxvd2VkLCBtYWtpbmcgc291cmNlLWNvbXBhdGlibGUgUHl0aG9uIGNvZGUgZWFzaWVyLgorCitTZXZlbiwgbWFrZSBzdXJlIHRvIGxvb2sgYXQgdGhlIGBPdGhlciBSZXNvdXJjZXNgXyBmb3IgdGlwcyBmcm9tIG90aGVyIHBlb3BsZQord2hpY2ggbWF5IGhlbHAgeW91IG91dC4KKwogCiAuLiBfdG94OiBodHRwOi8vY29kZXNwZWFrLm5ldC90b3gvCiAuLiBfQ2hlZXNlc2hvcDoKQEAgLTE2OSw4ICsxNzgsOCBAQAogcHJlZmVyIHRoaXMgYXBwcm9hY2ggY29tcGFyZWQgdG8gdXNpbmcgOnJlZjpgdXNlX3NhbWVfc291cmNlYCBvciBzaW1wbHkga2VlcGluZwogYSBzZXBhcmF0ZSBQeXRob24gMyBjb2RlYmFzZS4KIAotQmVsb3cgYXJlIHRoZSB0eXBpY2FsIHN0ZXBzIHRha2VuIGJ5IGEgcHJvamVjdCB3aGljaCB1c2VzIGEgMnRvMy1iYXNlZCBhcHByb2FjaAotdG8gc3VwcG9ydGluZyBQeXRob24gMiAmIDMuCitCZWxvdyBhcmUgdGhlIHR5cGljYWwgc3RlcHMgdGFrZW4gYnkgYSBwcm9qZWN0IHdoaWNoIHRyaWVzIHRvIHN1cHBvcnQKK1B5dGhvbiAyICYgMyB3aGlsZSBrZWVwaW5nIHRoZSBjb2RlIGRpcmVjdGx5IGV4ZWN1dGFibGUgYnkgUHl0aG9uIDIuCiAKIAogU3VwcG9ydCBQeXRob24gMi43CkBAIC0yMTUsNyArMjI0LDkgQEAKIHlvdSB1c2UgdGhpcyBmdXR1cmUgc3RhdGVtZW50IG9yIG5vdCwgeW91ICoqbXVzdCoqIG1ha2Ugc3VyZSB5b3Uga25vdyBleGFjdGx5CiB3aGljaCBQeXRob24gMiBzdHJpbmdzIHlvdSB3YW50IHRvIGJlIGJ5dGVzLCBhbmQgd2hpY2ggYXJlIHRvIGJlIHN0cmluZ3MuIFRoaXMKIG1lYW5zIHlvdSBzaG91bGQsICoqYXQgbWluaW11bSoqIG1hcmsgYWxsIHN0cmluZ3MgdGhhdCBhcmUgbWVhbnQgdG8gYmUgdGV4dAotc3RyaW5ncyB3aXRoIGEgYGB1YGAgcHJlZml4IGlmIHlvdSBkbyBub3QgdXNlIHRoaXMgZnV0dXJlIHN0YXRlbWVudC4KK3N0cmluZ3Mgd2l0aCBhIGBgdWBgIHByZWZpeCBpZiB5b3UgZG8gbm90IHVzZSB0aGlzIGZ1dHVyZSBzdGF0ZW1lbnQuIFB5dGhvbiAzLjMKK2FsbG93cyBzdHJpbmdzIHRvIGNvbnRpbnVlIHRvIGhhdmUgdGhlIGBgdWBgIHByZWZpeCAoaXQncyBhIG5vLW9wIGluIHRoYXQgY2FzZSkKK3RvIG1ha2UgaXQgZWFzaWVyIGZvciBjb2RlIHRvIGJlIHNvdXJjZS1jb21wYXRpYmxlIGJldHdlZW4gUHl0aG9uIDIgJiAzLgogCiAKIEJ5dGVzIGxpdGVyYWxzCkBAIC0yMjYsNiArMjM3LDE1IEBACiB3aGF0IGlzIGFuZCBpcyBub3QgYSBQeXRob24gMyBzdHJpbmcuIFdoZW4geW91IHJ1biAydG8zIG9uIGNvZGUsIGFsbCBQeXRob24gMgogc3RyaW5ncyBiZWNvbWUgUHl0aG9uIDMgc3RyaW5ncyAqKnVubGVzcyoqIHRoZXkgYXJlIHByZWZpeGVkIHdpdGggYGBiYGAuCiAKK1RoaXMgcG9pbnQgY2Fubm90IGJlIHN0cmVzc2VkIGVub3VnaDogbWFrZSBzdXJlIHlvdSBrbm93IHdoYXQgYWxsIG9mIHlvdXIgc3RyaW5nCitsaXRlcmFscyBpbiBQeXRob24gMiBhcmUgbWVhbnQgdG8gYmVjb21lIGluIFB5dGhvbiAzLiBBbnkgc3RyaW5nIGxpdGVyYWwgdGhhdAorc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYnl0ZXMgc2hvdWxkIGhhdmUgdGhlIGBgYmBgIHByZWZpeC4gQW55IHN0cmluZyBsaXRlcmFsCit0aGF0IHNob3VsZCBiZSBVbmljb2RlL3RleHQgaW4gUHl0aG9uIDIgc2hvdWxkIGVpdGhlciBoYXZlIHRoZSBgYHVgYCBsaXRlcmFsCisoc3VwcG9ydGVkLCBidXQgaWdub3JlZCwgaW4gUHl0aG9uIDMuMyBhbmQgbGF0ZXIpIG9yIHlvdSBzaG91bGQgaGF2ZQorYGBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHNgYCBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlLiBCdXQgdGhlIGtleQorcG9pbnQgaXMgeW91IHNob3VsZCBrbm93IGhvdyBQeXRob24gMyB3aWxsIHRyZWF0IGV2ZXJ5b25lIG9uZSBvZiB5b3VyIHN0cmluZworbGl0ZXJhbHMgYW5kIHlvdSBzaG91bGQgbWFyayB0aGVtIGFzIGFwcHJvcHJpYXRlLgorCiBUaGVyZSBhcmUgc29tZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGJ5dGUgbGl0ZXJhbHMgaW4gUHl0aG9uIDIgYW5kIHRob3NlIGluCiBQeXRob24gMyB0aGFua3MgdG8gdGhlIGJ5dGVzIHR5cGUganVzdCBiZWluZyBhbiBhbGlhcyB0byBgYHN0cmBgIGluIFB5dGhvbiAyLgogUHJvYmFibHkgdGhlIGJpZ2dlc3QgImdvdGNoYSIgaXMgdGhhdCBpbmRleGluZyByZXN1bHRzIGluIGRpZmZlcmVudCB2YWx1ZXMuIEluCkBAIC0yNjQsNiArMjg0LDE2IEBACiB0aGFuIFB5dGhvbiAyLjUsIHVzZSB0aGUgX19mdXR1cmVfXyBzdGF0ZW1lbnQuCiAKIAorTWFyayBhbGwgVW5pY29kZSBzdHJpbmdzIHdpdGggYSBgYHVgYCBwcmVmaXgKKycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJworCitXaGlsZSBQeXRob24gMi42IGhhcyBhIGBgX19mdXR1cmVfX2BgIHN0YXRlbWVudCB0byBhdXRvbWF0aWNhbGx5IGNhdXNlIFB5dGhvbiAyCit0byB0cmVhdCBhbGwgc3RyaW5nIGxpdGVyYWxzIGFzIFVuaWNvZGUsIFB5dGhvbiAyLjUgZG9lcyBub3QgaGF2ZSB0aGF0IHNob3J0Y3V0LgorVGhpcyBtZWFucyB5b3Ugc2hvdWxkIGdvIHRocm91Z2ggYW5kIG1hcmsgYWxsIHN0cmluZyBsaXRlcmFscyB3aXRoIGEgYGB1YGAKK3ByZWZpeCB0byB0dXJuIHRoZW0gZXhwbGljaXRseSBpbnRvIFVuaWNvZGUgc3RyaW5ncyB3aGVyZSBhcHByb3ByaWF0ZS4gVGhhdAorbGVhdmVzIGFsbCB1bm1hcmtlZCBzdHJpbmcgbGl0ZXJhbHMgdG8gYmUgY29uc2lkZXJlZCBieXRlIGxpdGVyYWxzIGluIFB5dGhvbiAzLgorCisKIAogSGFuZGxlIENvbW1vbiAiR290Y2hhcyIKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC03MDgsNiArNzM4LDcgQEAKICogaHR0cDovL2x1Y3Vtci5wb2Nvby5vcmcvMjAxMS8xLzIyL2ZvcndhcmRzLWNvbXBhdGlibGUtcHl0aG9uLwogKiBodHRwOi8vbHVjdW1yLnBvY29vLm9yZy8yMDEwLzIvMTEvcG9ydGluZy10by1weXRob24tMy1hLWd1aWRlLwogKiBodHRwOi8vd2lraS5weXRob24ub3JnL21vaW4vUG9ydGluZ1B5dGhvblRvUHkzaworKiBodHRwczovL3dpa2kudWJ1bnR1LmNvbS9QeXRob24vMwogCiBJZiB5b3UgZmVlbCB0aGVyZSBpcyBzb21ldGhpbmcgbWlzc2luZyBmcm9tIHRoaXMgZG9jdW1lbnQgdGhhdCBzaG91bGQgYmUgYWRkZWQsCiBwbGVhc2UgZW1haWwgdGhlIHB5dGhvbi1wb3J0aW5nXyBtYWlsaW5nIGxpc3QuCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vc29ja2V0cy5yc3QgYi9Eb2MvaG93dG8vc29ja2V0cy5yc3QKaW5kZXggMjc5YmIzZS4uY2E2NTI4YiAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL3NvY2tldHMucnN0CisrKyBiL0RvYy9ob3d0by9zb2NrZXRzLnJzdApAQCAtMjUsOCArMjUsOCBAQAogd29ya2luZy4gSXQgZG9lc24ndCBjb3ZlciB0aGUgZmluZSBwb2ludHMgKGFuZCB0aGVyZSBhcmUgYSBsb3Qgb2YgdGhlbSksIGJ1dCBJCiBob3BlIGl0IHdpbGwgZ2l2ZSB5b3UgZW5vdWdoIGJhY2tncm91bmQgdG8gYmVnaW4gdXNpbmcgdGhlbSBkZWNlbnRseS4KIAotSSdtIG9ubHkgZ29pbmcgdG8gdGFsayBhYm91dCBJTkVUIHNvY2tldHMsIGJ1dCB0aGV5IGFjY291bnQgZm9yIGF0IGxlYXN0IDk5JSBvZgotdGhlIHNvY2tldHMgaW4gdXNlLiBBbmQgSSdsbCBvbmx5IHRhbGsgYWJvdXQgU1RSRUFNIHNvY2tldHMgLSB1bmxlc3MgeW91IHJlYWxseQorSSdtIG9ubHkgZ29pbmcgdG8gdGFsayBhYm91dCBJTkVUIChpLmUuIElQdjQpIHNvY2tldHMsIGJ1dCB0aGV5IGFjY291bnQgZm9yIGF0IGxlYXN0IDk5JSBvZgordGhlIHNvY2tldHMgaW4gdXNlLiBBbmQgSSdsbCBvbmx5IHRhbGsgYWJvdXQgU1RSRUFNIChpLmUuIFRDUCkgc29ja2V0cyAtIHVubGVzcyB5b3UgcmVhbGx5CiBrbm93IHdoYXQgeW91J3JlIGRvaW5nIChpbiB3aGljaCBjYXNlIHRoaXMgSE9XVE8gaXNuJ3QgZm9yIHlvdSEpLCB5b3UnbGwgZ2V0CiBiZXR0ZXIgYmVoYXZpb3IgYW5kIHBlcmZvcm1hbmNlIGZyb20gYSBTVFJFQU0gc29ja2V0IHRoYW4gYW55dGhpbmcgZWxzZS4gSSB3aWxsCiB0cnkgdG8gY2xlYXIgdXAgdGhlIG15c3Rlcnkgb2Ygd2hhdCBhIHNvY2tldCBpcywgYXMgd2VsbCBhcyBzb21lIGhpbnRzIG9uIGhvdyB0bwpAQCAtMjA4LDEwICsyMDgsMTAgQEAKICAgICAgICAgICAgICAgIHRvdGFsc2VudCA9IHRvdGFsc2VudCArIHNlbnQKIAogICAgICAgIGRlZiBteXJlY2VpdmUoc2VsZik6Ci0gICAgICAgICAgIG1zZyA9ICcnCisgICAgICAgICAgIG1zZyA9IGInJwogICAgICAgICAgICB3aGlsZSBsZW4obXNnKSA8IE1TR0xFTjoKICAgICAgICAgICAgICAgIGNodW5rID0gc2VsZi5zb2NrLnJlY3YoTVNHTEVOLWxlbihtc2cpKQotICAgICAgICAgICAgICAgaWYgY2h1bmsgPT0gJyc6CisgICAgICAgICAgICAgICBpZiBjaHVuayA9PSBiJyc6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJzb2NrZXQgY29ubmVjdGlvbiBicm9rZW4iKQogICAgICAgICAgICAgICAgbXNnID0gbXNnICsgY2h1bmsKICAgICAgICAgICAgcmV0dXJuIG1zZwpAQCAtMzcxLDEyICszNzEsNiBAQAogcG90ZW50aWFsX3dyaXRlcnMgbGlzdC4gSWYgaXQgc2hvd3MgdXAgaW4gdGhlIHdyaXRhYmxlIGxpc3QsIHlvdSBoYXZlIGEgZGVjZW50CiBjaGFuY2UgdGhhdCBpdCBoYXMgY29ubmVjdGVkLgogCi1PbmUgdmVyeSBuYXN0eSBwcm9ibGVtIHdpdGggYGBzZWxlY3RgYDogaWYgc29tZXdoZXJlIGluIHRob3NlIGlucHV0IGxpc3RzIG9mCi1zb2NrZXRzIGlzIG9uZSB3aGljaCBoYXMgZGllZCBhIG5hc3R5IGRlYXRoLCB0aGUgYGBzZWxlY3RgYCB3aWxsIGZhaWwuIFlvdSB0aGVuCi1uZWVkIHRvIGxvb3AgdGhyb3VnaCBldmVyeSBzaW5nbGUgZGFtbiBzb2NrZXQgaW4gYWxsIHRob3NlIGxpc3RzIGFuZCBkbyBhCi1gYHNlbGVjdChbc29ja10sW10sW10sMClgYCB1bnRpbCB5b3UgZmluZCB0aGUgYmFkIG9uZS4gVGhhdCB0aW1lb3V0IG9mIDAgbWVhbnMKLWl0IHdvbid0IHRha2UgbG9uZywgYnV0IGl0J3MgdWdseS4KLQogQWN0dWFsbHksIGBgc2VsZWN0YGAgY2FuIGJlIGhhbmR5IGV2ZW4gd2l0aCBibG9ja2luZyBzb2NrZXRzLiBJdCdzIG9uZSB3YXkgb2YKIGRldGVybWluaW5nIHdoZXRoZXIgeW91IHdpbGwgYmxvY2sgLSB0aGUgc29ja2V0IHJldHVybnMgYXMgcmVhZGFibGUgd2hlbiB0aGVyZSdzCiBzb21ldGhpbmcgaW4gdGhlIGJ1ZmZlcnMuICBIb3dldmVyLCB0aGlzIHN0aWxsIGRvZXNuJ3QgaGVscCB3aXRoIHRoZSBwcm9ibGVtIG9mCkBAIC0zODYsMjYgKzM4MCw2IEBACiBmaWxlcy4gRG9uJ3QgdHJ5IHRoaXMgb24gV2luZG93cy4gT24gV2luZG93cywgYGBzZWxlY3RgYCB3b3JrcyB3aXRoIHNvY2tldHMKIG9ubHkuIEFsc28gbm90ZSB0aGF0IGluIEMsIG1hbnkgb2YgdGhlIG1vcmUgYWR2YW5jZWQgc29ja2V0IG9wdGlvbnMgYXJlIGRvbmUKIGRpZmZlcmVudGx5IG9uIFdpbmRvd3MuIEluIGZhY3QsIG9uIFdpbmRvd3MgSSB1c3VhbGx5IHVzZSB0aHJlYWRzICh3aGljaCB3b3JrCi12ZXJ5LCB2ZXJ5IHdlbGwpIHdpdGggbXkgc29ja2V0cy4gRmFjZSBpdCwgaWYgeW91IHdhbnQgYW55IGtpbmQgb2YgcGVyZm9ybWFuY2UsCi15b3VyIGNvZGUgd2lsbCBsb29rIHZlcnkgZGlmZmVyZW50IG9uIFdpbmRvd3MgdGhhbiBvbiBVbml4LgordmVyeSwgdmVyeSB3ZWxsKSB3aXRoIG15IHNvY2tldHMuCiAKIAotUGVyZm9ybWFuY2UKLS0tLS0tLS0tLS0tCi0KLVRoZXJlJ3Mgbm8gcXVlc3Rpb24gdGhhdCB0aGUgZmFzdGVzdCBzb2NrZXRzIGNvZGUgdXNlcyBub24tYmxvY2tpbmcgc29ja2V0cyBhbmQKLXNlbGVjdCB0byBtdWx0aXBsZXggdGhlbS4gWW91IGNhbiBwdXQgdG9nZXRoZXIgc29tZXRoaW5nIHRoYXQgd2lsbCBzYXR1cmF0ZSBhCi1MQU4gY29ubmVjdGlvbiB3aXRob3V0IHB1dHRpbmcgYW55IHN0cmFpbiBvbiB0aGUgQ1BVLgotCi1UaGUgdHJvdWJsZSBpcyB0aGF0IGFuIGFwcCB3cml0dGVuIHRoaXMgd2F5IGNhbid0IGRvIG11Y2ggb2YgYW55dGhpbmcgZWxzZSAtCi1pdCBuZWVkcyB0byBiZSByZWFkeSB0byBzaHVmZmxlIGJ5dGVzIGFyb3VuZCBhdCBhbGwgdGltZXMuIEFzc3VtaW5nIHRoYXQgeW91cgotYXBwIGlzIGFjdHVhbGx5IHN1cHBvc2VkIHRvIGRvIHNvbWV0aGluZyBtb3JlIHRoYW4gdGhhdCwgdGhyZWFkaW5nIGlzIHRoZQotb3B0aW1hbCBzb2x1dGlvbiwgKGFuZCB1c2luZyBub24tYmxvY2tpbmcgc29ja2V0cyB3aWxsIGJlIGZhc3RlciB0aGFuIHVzaW5nCi1ibG9ja2luZyBzb2NrZXRzKS4KLQotRmluYWxseSwgcmVtZW1iZXIgdGhhdCBldmVuIHRob3VnaCBibG9ja2luZyBzb2NrZXRzIGFyZSBzb21ld2hhdCBzbG93ZXIgdGhhbgotbm9uLWJsb2NraW5nLCBpbiBtYW55IGNhc2VzIHRoZXkgYXJlIHRoZSAicmlnaHQiIHNvbHV0aW9uLiBBZnRlciBhbGwsIGlmIHlvdXIKLWFwcCBpcyBkcml2ZW4gYnkgdGhlIGRhdGEgaXQgcmVjZWl2ZXMgb3ZlciBhIHNvY2tldCwgdGhlcmUncyBub3QgbXVjaCBzZW5zZSBpbgotY29tcGxpY2F0aW5nIHRoZSBsb2dpYyBqdXN0IHNvIHlvdXIgYXBwIGNhbiB3YWl0IG9uIGBgc2VsZWN0YGAgaW5zdGVhZCBvZgotYGByZWN2YGAuCi0KZGlmZiAtLWdpdCBhL0RvYy9ob3d0by91bmljb2RlLnJzdCBiL0RvYy9ob3d0by91bmljb2RlLnJzdAppbmRleCBiMzA5ZjYwLi4zZGFmYzhjIDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vdW5pY29kZS5yc3QKKysrIGIvRG9jL2hvd3RvL3VuaWNvZGUucnN0CkBAIC00MjIsNyArNDIyLDcgQEAKIC0tLS0tLS0tLS0KIAogVGhlIDpjbGFzczpgc3RyYCB0eXBlIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIGxpYnJhcnkgcmVmZXJlbmNlIGF0Ci06cmVmOmB0eXBlc3NlcWAuCis6cmVmOmB0ZXh0c2VxYC4KIAogVGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSA6bW9kOmB1bmljb2RlZGF0YWAgbW9kdWxlLgogCkBAIC00NTYsMTEgKzQ1NiwxMSBAQAogCiBPbmUgcHJvYmxlbSBpcyB0aGUgbXVsdGktYnl0ZSBuYXR1cmUgb2YgZW5jb2RpbmdzOyBvbmUgVW5pY29kZSBjaGFyYWN0ZXIgY2FuIGJlCiByZXByZXNlbnRlZCBieSBzZXZlcmFsIGJ5dGVzLiAgSWYgeW91IHdhbnQgdG8gcmVhZCB0aGUgZmlsZSBpbiBhcmJpdHJhcnktc2l6ZWQKLWNodW5rcyAoc2F5LCAxayBvciA0ayksIHlvdSBuZWVkIHRvIHdyaXRlIGVycm9yLWhhbmRsaW5nIGNvZGUgdG8gY2F0Y2ggdGhlIGNhc2UKK2NodW5rcyAoc2F5LCAxMDI0IG9yIDQwOTYgYnl0ZXMpLCB5b3UgbmVlZCB0byB3cml0ZSBlcnJvci1oYW5kbGluZyBjb2RlIHRvIGNhdGNoIHRoZSBjYXNlCiB3aGVyZSBvbmx5IHBhcnQgb2YgdGhlIGJ5dGVzIGVuY29kaW5nIGEgc2luZ2xlIFVuaWNvZGUgY2hhcmFjdGVyIGFyZSByZWFkIGF0IHRoZQogZW5kIG9mIGEgY2h1bmsuICBPbmUgc29sdXRpb24gd291bGQgYmUgdG8gcmVhZCB0aGUgZW50aXJlIGZpbGUgaW50byBtZW1vcnkgYW5kCiB0aGVuIHBlcmZvcm0gdGhlIGRlY29kaW5nLCBidXQgdGhhdCBwcmV2ZW50cyB5b3UgZnJvbSB3b3JraW5nIHdpdGggZmlsZXMgdGhhdAotYXJlIGV4dHJlbWVseSBsYXJnZTsgaWYgeW91IG5lZWQgdG8gcmVhZCBhIDJHQiBmaWxlLCB5b3UgbmVlZCAyR0Igb2YgUkFNLgorYXJlIGV4dHJlbWVseSBsYXJnZTsgaWYgeW91IG5lZWQgdG8gcmVhZCBhIDIgR2lCIGZpbGUsIHlvdSBuZWVkIDIgR2lCIG9mIFJBTS4KIChNb3JlLCByZWFsbHksIHNpbmNlIGZvciBhdCBsZWFzdCBhIG1vbWVudCB5b3UnZCBuZWVkIHRvIGhhdmUgYm90aCB0aGUgZW5jb2RlZAogc3RyaW5nIGFuZCBpdHMgVW5pY29kZSB2ZXJzaW9uIGluIG1lbW9yeS4pCiAKQEAgLTYxOCw3ICs2MTgsNiBAQAogICAgYW5kIHRoYXQgdGhlIEhPV1RPIG9ubHkgY292ZXJzIDIueC4KIAogLi4gY29tbWVudCBEZXNjcmliZSBQeXRob24gMy54IHN1cHBvcnQgKG5ldyBzZWN0aW9uPyBuZXcgZG9jdW1lbnQ/KQotLi4gY29tbWVudCBBZGRpdGlvbmFsIHRvcGljOiBidWlsZGluZyBQeXRob24gdy8gVUNTMiBvciBVQ1M0IHN1cHBvcnQKIC4uIGNvbW1lbnQgRGVzY3JpYmUgdXNlIG9mIGNvZGVjcy5TdHJlYW1SZWNvZGVyIGFuZCBTdHJlYW1SZWFkZXJXcml0ZXIKIAogLi4gY29tbWVudApAQCAtNjQ4LDUgKzY0NywzIEBACiAgICAgICAgLSBbIF0gV3JpdGluZyBVbmljb2RlIHByb2dyYW1zCiAgICAgICAgICAgIC0gWyBdIERvIGV2ZXJ5dGhpbmcgaW4gVW5pY29kZQogICAgICAgICAgICAtIFsgXSBEZWNsYXJpbmcgc291cmNlIGNvZGUgZW5jb2RpbmdzIChQRVAgMjYzKQotICAgICAgIC0gWyBdIE90aGVyIGlzc3VlcwotICAgICAgICAgICAtIFsgXSBCdWlsZGluZyBQeXRob24gKFVDUzIsIFVDUzQpCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vdXJsbGliMi5yc3QgYi9Eb2MvaG93dG8vdXJsbGliMi5yc3QKaW5kZXggODdmNDJiYS4uOTU1ZTQ1NSAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL3VybGxpYjIucnN0CisrKyBiL0RvYy9ob3d0by91cmxsaWIyLnJzdApAQCAtNTYsNiArNTYsMTMgQEAKICAgICByZXNwb25zZSA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oJ2h0dHA6Ly9weXRob24ub3JnLycpCiAgICAgaHRtbCA9IHJlc3BvbnNlLnJlYWQoKQogCitJZiB5b3Ugd2lzaCB0byByZXRyaWV2ZSBhIHJlc291cmNlIHZpYSBVUkwgYW5kIHN0b3JlIGl0IGluIGEgdGVtcG9yYXJ5IGxvY2F0aW9uLAoreW91IGNhbiBkbyBzbyB2aWEgdGhlIDpmdW5jOmB1cmxyZXRyaWV2ZWAgZnVuY3Rpb246OgorCisgICAgaW1wb3J0IHVybGxpYi5yZXF1ZXN0CisgICAgbG9jYWxfZmlsZW5hbWUsIGhlYWRlcnMgPSB1cmxsaWIucmVxdWVzdC51cmxyZXRyaWV2ZSgnaHR0cDovL3B5dGhvbi5vcmcvJykKKyAgICBodG1sID0gb3Blbihsb2NhbF9maWxlbmFtZSkKKwogTWFueSB1c2VzIG9mIHVybGxpYiB3aWxsIGJlIHRoYXQgc2ltcGxlIChub3RlIHRoYXQgaW5zdGVhZCBvZiBhbiAnaHR0cDonIFVSTCB3ZQogY291bGQgaGF2ZSB1c2VkIGFuIFVSTCBzdGFydGluZyB3aXRoICdmdHA6JywgJ2ZpbGU6JywgZXRjLikuICBIb3dldmVyLCBpdCdzIHRoZQogcHVycG9zZSBvZiB0aGlzIHR1dG9yaWFsIHRvIGV4cGxhaW4gdGhlIG1vcmUgY29tcGxpY2F0ZWQgY2FzZXMsIGNvbmNlbnRyYXRpbmcgb24KZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9tcF9iZW5jaG1hcmtzLnB5IGIvRG9jL2luY2x1ZGVzL21wX2JlbmNobWFya3MucHkKaW5kZXggYWNkZjY0Mi4uMzc2M2VhOSAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL21wX2JlbmNobWFya3MucHkKKysrIGIvRG9jL2luY2x1ZGVzL21wX2JlbmNobWFya3MucHkKQEAgLTYsMTYgKzYsMTIgQEAKICMKIAogaW1wb3J0IHRpbWUKLWltcG9ydCBzeXMKIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCBxdWV1ZQogaW1wb3J0IGdjCiAKLWlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgIF90aW1lciA9IHRpbWUuY2xvY2sKLWVsc2U6Ci0gICAgX3RpbWVyID0gdGltZS50aW1lCitfdGltZXIgPSB0aW1lLnBlcmZfY291bnRlcgogCiBkZWx0YSA9IDEKIApkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL25vZGR5Mi5jIGIvRG9jL2luY2x1ZGVzL25vZGR5Mi5jCmluZGV4IDliOGVhZmIuLjk2NDE1NTggMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9ub2RkeTIuYworKysgYi9Eb2MvaW5jbHVkZXMvbm9kZHkyLmMKQEAgLTI0LDE4ICsyNCwxNiBAQAogICAgIHNlbGYgPSAoTm9kZHkgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CiAgICAgICAgIHNlbGYtPmZpcnN0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOwotICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICB9Ci0gICAgICAgIAorICAgICAgICB9CisKICAgICAgICAgc2VsZi0+bGFzdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5sYXN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgIH0KKyAgICAgICAgfQogCiAgICAgICAgIHNlbGYtPm51bWJlciA9IDA7CiAgICAgfQpAQCAtNTAsMTAgKzQ4LDEwIEBACiAKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpcnN0IiwgImxhc3QiLCAibnVtYmVyIiwgTlVMTH07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPT2kiLCBrd2xpc3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3QsICZsYXN0LCAKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPT2kiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJzdCwgJmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWxmLT5udW1iZXIpKQotICAgICAgICByZXR1cm4gLTE7IAorICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoZmlyc3QpIHsKICAgICAgICAgdG1wID0gc2VsZi0+Zmlyc3Q7CkBAIC04NiwxNSArODQsNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIE5vZGR5X25hbWUoTm9kZHkqIHNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpmb3JtYXQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OwotCi0gICAgaWYgKGZvcm1hdCA9PSBOVUxMKSB7Ci0gICAgICAgIGZvcm1hdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIlcyAlcyIpOwotICAgICAgICBpZiAoZm9ybWF0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJmaXJzdCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEwNSwxNCArOTQsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBhcmdzID0gUHlfQnVpbGRWYWx1ZSgiT08iLCBzZWxmLT5maXJzdCwgc2VsZi0+bGFzdCk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRm9ybWF0KGZvcm1hdCwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlUyAlUyIsIHNlbGYtPmZpcnN0LCBzZWxmLT5sYXN0KTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIE5vZGR5X21ldGhvZHNbXSA9IHsKQEAgLTE0NSwxMiArMTI3LDEyIEBACiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAvKiB0cF9mbGFncyAqLwogICAgICJOb2RkeSBvYmplY3RzIiwgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBOb2RkeV9tZXRob2RzLCAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgTm9kZHlfbWVtYmVycywgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwpAQCAtMTczLDcgKzE1NSw3IEBACiB9OwogCiBQeU1PRElOSVRfRlVOQwotUHlJbml0X25vZGR5Mih2b2lkKSAKK1B5SW5pdF9ub2RkeTIodm9pZCkKIHsKICAgICBQeU9iamVjdCogbTsKIApkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL25vZGR5My5jIGIvRG9jL2luY2x1ZGVzL25vZGR5My5jCmluZGV4IDg5ZjNhNzcuLjhhNWE3NTMgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9ub2RkeTMuYworKysgYi9Eb2MvaW5jbHVkZXMvbm9kZHkzLmMKQEAgLTI0LDE4ICsyNCwxNiBAQAogICAgIHNlbGYgPSAoTm9kZHkgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CiAgICAgICAgIHNlbGYtPmZpcnN0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOwotICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICB9Ci0gICAgICAgIAorICAgICAgICB9CisKICAgICAgICAgc2VsZi0+bGFzdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5sYXN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgIH0KKyAgICAgICAgfQogCiAgICAgICAgIHNlbGYtPm51bWJlciA9IDA7CiAgICAgfQpAQCAtNTAsMTAgKzQ4LDEwIEBACiAKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpcnN0IiwgImxhc3QiLCAibnVtYmVyIiwgTlVMTH07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxTU2kiLCBrd2xpc3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3QsICZsYXN0LCAKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxTU2kiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJzdCwgJmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWxmLT5udW1iZXIpKQotICAgICAgICByZXR1cm4gLTE7IAorICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoZmlyc3QpIHsKICAgICAgICAgdG1wID0gc2VsZi0+Zmlyc3Q7CkBAIC04OCwyMiArODYsMjIgQEAKIHN0YXRpYyBpbnQKIE5vZGR5X3NldGZpcnN0KE5vZGR5ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUpCiB7Ci0gIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkNhbm5vdCBkZWxldGUgdGhlIGZpcnN0IGF0dHJpYnV0ZSIpOwotICAgIHJldHVybiAtMTsKLSAgfQotICAKLSAgaWYgKCEgUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAiVGhlIGZpcnN0IGF0dHJpYnV0ZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIik7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gICAgICAKLSAgUHlfREVDUkVGKHNlbGYtPmZpcnN0KTsKLSAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgc2VsZi0+Zmlyc3QgPSB2YWx1ZTsgICAgCisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkNhbm5vdCBkZWxldGUgdGhlIGZpcnN0IGF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCi0gIHJldHVybiAwOworICAgIGlmICghIFB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZmlyc3QgYXR0cmlidXRlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5X0RFQ1JFRihzZWxmLT5maXJzdCk7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBzZWxmLT5maXJzdCA9IHZhbHVlOworCisgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMTYsMzAgKzExNCwzMCBAQAogc3RhdGljIGludAogTm9kZHlfc2V0bGFzdChOb2RkeSAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlKQogewotICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJDYW5ub3QgZGVsZXRlIHRoZSBsYXN0IGF0dHJpYnV0ZSIpOwotICAgIHJldHVybiAtMTsKLSAgfQotICAKLSAgaWYgKCEgUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAiVGhlIGxhc3QgYXR0cmlidXRlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmciKTsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgICAgIAotICBQeV9ERUNSRUYoc2VsZi0+bGFzdCk7Ci0gIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gIHNlbGYtPmxhc3QgPSB2YWx1ZTsgICAgCisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkNhbm5vdCBkZWxldGUgdGhlIGxhc3QgYXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKLSAgcmV0dXJuIDA7CisgICAgaWYgKCEgUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBsYXN0IGF0dHJpYnV0ZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYoc2VsZi0+bGFzdCk7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBzZWxmLT5sYXN0ID0gdmFsdWU7CisKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIFB5R2V0U2V0RGVmIE5vZGR5X2dldHNldGVyc1tdID0gewotICAgIHsiZmlyc3QiLCAKKyAgICB7ImZpcnN0IiwKICAgICAgKGdldHRlcilOb2RkeV9nZXRmaXJzdCwgKHNldHRlcilOb2RkeV9zZXRmaXJzdCwKICAgICAgImZpcnN0IG5hbWUiLAogICAgICBOVUxMfSwKLSAgICB7Imxhc3QiLCAKKyAgICB7Imxhc3QiLAogICAgICAoZ2V0dGVyKU5vZGR5X2dldGxhc3QsIChzZXR0ZXIpTm9kZHlfc2V0bGFzdCwKICAgICAgImxhc3QgbmFtZSIsCiAgICAgIE5VTEx9LApAQCAtMTQ5LDIzICsxNDcsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIE5vZGR5X25hbWUoTm9kZHkqIHNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpmb3JtYXQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OwotCi0gICAgaWYgKGZvcm1hdCA9PSBOVUxMKSB7Ci0gICAgICAgIGZvcm1hdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIlcyAlcyIpOwotICAgICAgICBpZiAoZm9ybWF0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBhcmdzID0gUHlfQnVpbGRWYWx1ZSgiT08iLCBzZWxmLT5maXJzdCwgc2VsZi0+bGFzdCk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRm9ybWF0KGZvcm1hdCwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlUyAlUyIsIHNlbGYtPmZpcnN0LCBzZWxmLT5sYXN0KTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIE5vZGR5X21ldGhvZHNbXSA9IHsKQEAgLTE5OCwxMiArMTgwLDEyIEBACiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAvKiB0cF9mbGFncyAqLwogICAgICJOb2RkeSBvYmplY3RzIiwgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBOb2RkeV9tZXRob2RzLCAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgTm9kZHlfbWVtYmVycywgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIE5vZGR5X2dldHNldGVycywgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwpAQCAtMjI2LDcgKzIwOCw3IEBACiB9OwogCiBQeU1PRElOSVRfRlVOQwotUHlJbml0X25vZGR5Myh2b2lkKSAKK1B5SW5pdF9ub2RkeTModm9pZCkKIHsKICAgICBQeU9iamVjdCogbTsKIApkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL25vZGR5NC5jIGIvRG9jL2luY2x1ZGVzL25vZGR5NC5jCmluZGV4IDZhOTZmYWMuLmViOTYyMmEgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9ub2RkeTQuYworKysgYi9Eb2MvaW5jbHVkZXMvbm9kZHk0LmMKQEAgLTI3LDcgKzI3LDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCAKK3N0YXRpYyBpbnQKIE5vZGR5X2NsZWFyKE5vZGR5ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICp0bXA7CkBAIC01OCwxOCArNTgsMTYgQEAKICAgICBzZWxmID0gKE5vZGR5ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CiAgICAgaWYgKHNlbGYgIT0gTlVMTCkgewogICAgICAgICBzZWxmLT5maXJzdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgaWYgKHNlbGYtPmZpcnN0ID09IE5VTEwpCi0gICAgICAgICAgeworICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgfQotICAgICAgICAKKyAgICAgICAgfQorCiAgICAgICAgIHNlbGYtPmxhc3QgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiIik7Ci0gICAgICAgIGlmIChzZWxmLT5sYXN0ID09IE5VTEwpCi0gICAgICAgICAgeworICAgICAgICBpZiAoc2VsZi0+bGFzdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgICBzZWxmLT5udW1iZXIgPSAwOwogICAgIH0KQEAgLTg0LDEwICs4MiwxMCBAQAogCiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJmaXJzdCIsICJsYXN0IiwgIm51bWJlciIsIE5VTEx9OwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T09pIiwga3dsaXN0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpcnN0LCAmbGFzdCwgCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T09pIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3QsICZsYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2VsZi0+bnVtYmVyKSkKLSAgICAgICAgcmV0dXJuIC0xOyAKKyAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKGZpcnN0KSB7CiAgICAgICAgIHRtcCA9IHNlbGYtPmZpcnN0OwpAQCAtMTIwLDE1ICsxMTgsNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIE5vZGR5X25hbWUoTm9kZHkqIHNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpmb3JtYXQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OwotCi0gICAgaWYgKGZvcm1hdCA9PSBOVUxMKSB7Ci0gICAgICAgIGZvcm1hdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIlcyAlcyIpOwotICAgICAgICBpZiAoZm9ybWF0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJmaXJzdCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzOSwxNCArMTI4LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgYXJncyA9IFB5X0J1aWxkVmFsdWUoIk9PIiwgc2VsZi0+Zmlyc3QsIHNlbGYtPmxhc3QpOwotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zvcm1hdChmb3JtYXQsIGFyZ3MpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVMgJVMiLCBzZWxmLT5maXJzdCwgc2VsZi0+bGFzdCk7CiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBOb2RkeV9tZXRob2RzW10gPSB7CkBAIC0xODIsMTAgKzE2NCwxMCBAQAogICAgICJOb2RkeSBvYmplY3RzIiwgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpTm9kZHlfdHJhdmVyc2UsICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAoaW5xdWlyeSlOb2RkeV9jbGVhciwgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLAkJICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgTm9kZHlfbWV0aG9kcywgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIE5vZGR5X21lbWJlcnMsICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KQEAgLTIwOCw3ICsxOTAsNyBAQAogfTsKIAogUHlNT0RJTklUX0ZVTkMKLVB5SW5pdF9ub2RkeTQodm9pZCkgCitQeUluaXRfbm9kZHk0KHZvaWQpCiB7CiAgICAgUHlPYmplY3QqIG07CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5LzJ0bzMucnN0IGIvRG9jL2xpYnJhcnkvMnRvMy5yc3QKaW5kZXggZDA3YWFhMS4uOTdlNjkyZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvMnRvMy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvMnRvMy5yc3QKQEAgLTI2NCw4ICsyNjQsNyBAQAogCiAuLiAydG8zZml4ZXI6OiBsb25nCiAKLSAgIFN0cmlwcyB0aGUgYGBMYGAgcHJlZml4IG9uIGxvbmcgbGl0ZXJhbHMgYW5kIHJlbmFtZXMgOmNsYXNzOmBsb25nYCB0bwotICAgOmNsYXNzOmBpbnRgLgorICAgUmVuYW1lcyA6Y2xhc3M6YGxvbmdgIHRvIDpjbGFzczpgaW50YC4KIAogLi4gMnRvM2ZpeGVyOjogbWFwCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L190aHJlYWQucnN0IGIvRG9jL2xpYnJhcnkvX3RocmVhZC5yc3QKaW5kZXggMzY5ZTljZC4uZmFlMjc4MSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvX3RocmVhZC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvX3RocmVhZC5yc3QKQEAgLTM1LDYgKzM1LDkgQEAKIAogICAgUmFpc2VkIG9uIHRocmVhZC1zcGVjaWZpYyBlcnJvcnMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGlzIG5vdyBhIHN5bm9ueW0gb2YgdGhlIGJ1aWx0LWluIDpleGM6YFJ1bnRpbWVFcnJvcmAuCisKIAogLi4gZGF0YTo6IExvY2tUeXBlCiAKQEAgLTkwLDE1ICs5MywxNSBAQAogICAgUmV0dXJuIHRoZSB0aHJlYWQgc3RhY2sgc2l6ZSB1c2VkIHdoZW4gY3JlYXRpbmcgbmV3IHRocmVhZHMuICBUaGUgb3B0aW9uYWwKICAgICpzaXplKiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIHN0YWNrIHNpemUgdG8gYmUgdXNlZCBmb3Igc3Vic2VxdWVudGx5IGNyZWF0ZWQKICAgIHRocmVhZHMsIGFuZCBtdXN0IGJlIDAgKHVzZSBwbGF0Zm9ybSBvciBjb25maWd1cmVkIGRlZmF1bHQpIG9yIGEgcG9zaXRpdmUKLSAgIGludGVnZXIgdmFsdWUgb2YgYXQgbGVhc3QgMzIsNzY4ICgzMmtCKS4gSWYgY2hhbmdpbmcgdGhlIHRocmVhZCBzdGFjayBzaXplIGlzCi0gICB1bnN1cHBvcnRlZCwgYSA6ZXhjOmBUaHJlYWRFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIHNwZWNpZmllZCBzdGFjayBzaXplIGlzCi0gICBpbnZhbGlkLCBhIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBhbmQgdGhlIHN0YWNrIHNpemUgaXMgdW5tb2RpZmllZC4gIDMya0IKKyAgIGludGVnZXIgdmFsdWUgb2YgYXQgbGVhc3QgMzIsNzY4ICgzMiBLaUIpLiBJZiBjaGFuZ2luZyB0aGUgdGhyZWFkIHN0YWNrIHNpemUgaXMKKyAgIHVuc3VwcG9ydGVkLCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIHNwZWNpZmllZCBzdGFjayBzaXplIGlzCisgICBpbnZhbGlkLCBhIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBhbmQgdGhlIHN0YWNrIHNpemUgaXMgdW5tb2RpZmllZC4gIDMyIEtpQgogICAgaXMgY3VycmVudGx5IHRoZSBtaW5pbXVtIHN1cHBvcnRlZCBzdGFjayBzaXplIHZhbHVlIHRvIGd1YXJhbnRlZSBzdWZmaWNpZW50CiAgICBzdGFjayBzcGFjZSBmb3IgdGhlIGludGVycHJldGVyIGl0c2VsZi4gIE5vdGUgdGhhdCBzb21lIHBsYXRmb3JtcyBtYXkgaGF2ZQogICAgcGFydGljdWxhciByZXN0cmljdGlvbnMgb24gdmFsdWVzIGZvciB0aGUgc3RhY2sgc2l6ZSwgc3VjaCBhcyByZXF1aXJpbmcgYQotICAgbWluaW11bSBzdGFjayBzaXplID4gMzJrQiBvciByZXF1aXJpbmcgYWxsb2NhdGlvbiBpbiBtdWx0aXBsZXMgb2YgdGhlIHN5c3RlbQorICAgbWluaW11bSBzdGFjayBzaXplID4gMzIgS2lCIG9yIHJlcXVpcmluZyBhbGxvY2F0aW9uIGluIG11bHRpcGxlcyBvZiB0aGUgc3lzdGVtCiAgICBtZW1vcnkgcGFnZSBzaXplIC0gcGxhdGZvcm0gZG9jdW1lbnRhdGlvbiBzaG91bGQgYmUgcmVmZXJyZWQgdG8gZm9yIG1vcmUKLSAgIGluZm9ybWF0aW9uICg0a0IgcGFnZXMgYXJlIGNvbW1vbjsgdXNpbmcgbXVsdGlwbGVzIG9mIDQwOTYgZm9yIHRoZSBzdGFjayBzaXplIGlzCisgICBpbmZvcm1hdGlvbiAoNCBLaUIgcGFnZXMgYXJlIGNvbW1vbjsgdXNpbmcgbXVsdGlwbGVzIG9mIDQwOTYgZm9yIHRoZSBzdGFjayBzaXplIGlzCiAgICB0aGUgc3VnZ2VzdGVkIGFwcHJvYWNoIGluIHRoZSBhYnNlbmNlIG9mIG1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24pLgogICAgQXZhaWxhYmlsaXR5OiBXaW5kb3dzLCBzeXN0ZW1zIHdpdGggUE9TSVggdGhyZWFkcy4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYWJjLnJzdCBiL0RvYy9saWJyYXJ5L2FiYy5yc3QKaW5kZXggZGNlYzE5YS4uNmYyMzU5NiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYWJjLnJzdAorKysgYi9Eb2MvbGlicmFyeS9hYmMucnN0CkBAIC0xOCw3ICsxOCw3IEBACiAKIFRoZSA6bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlIGhhcyBzb21lIGNvbmNyZXRlIGNsYXNzZXMgdGhhdCBkZXJpdmUgZnJvbQogQUJDczsgdGhlc2UgY2FuLCBvZiBjb3Vyc2UsIGJlIGZ1cnRoZXIgZGVyaXZlZC4gSW4gYWRkaXRpb24gdGhlCi06bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlIGhhcyBzb21lIEFCQ3MgdGhhdCBjYW4gYmUgdXNlZCB0byB0ZXN0IHdoZXRoZXIKKzptb2Q6YGNvbGxlY3Rpb25zLmFiY2Agc3VibW9kdWxlIGhhcyBzb21lIEFCQ3MgdGhhdCBjYW4gYmUgdXNlZCB0byB0ZXN0IHdoZXRoZXIKIGEgY2xhc3Mgb3IgaW5zdGFuY2UgcHJvdmlkZXMgYSBwYXJ0aWN1bGFyIGludGVyZmFjZSwgZm9yIGV4YW1wbGUsIGlzIGl0CiBoYXNoYWJsZSBvciBhIG1hcHBpbmcuCiAKQEAgLTU1LDYgKzU1LDkgQEAKICAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3ModHVwbGUsIE15QUJDKQogICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSgoKSwgTXlBQkMpCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBSZXR1cm5zIHRoZSByZWdpc3RlcmVkIHN1YmNsYXNzLCB0byBhbGxvdyB1c2FnZSBhcyBhIGNsYXNzIGRlY29yYXRvci4KKwogICAgWW91IGNhbiBhbHNvIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIGFuIGFic3RyYWN0IGJhc2UgY2xhc3M6CiAKICAgIC4uIG1ldGhvZDo6IF9fc3ViY2xhc3Nob29rX18oc3ViY2xhc3MpCkBAIC0xMjQsMTkgKzEyNywxOCBAQAogICAgYXZhaWxhYmxlIGFzIGEgbWV0aG9kIG9mIGBgRm9vYGAsIHNvIGl0IGlzIHByb3ZpZGVkIHNlcGFyYXRlbHkuCiAKIAotSXQgYWxzbyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGRlY29yYXRvcnM6CitUaGUgOm1vZDpgYWJjYCBtb2R1bGUgYWxzbyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGRlY29yYXRvcnM6CiAKIC4uIGRlY29yYXRvcjo6IGFic3RyYWN0bWV0aG9kCiAKICAgIEEgZGVjb3JhdG9yIGluZGljYXRpbmcgYWJzdHJhY3QgbWV0aG9kcy4KIAotICAgVXNpbmcgdGhpcyBkZWNvcmF0b3IgcmVxdWlyZXMgdGhhdCB0aGUgY2xhc3MncyBtZXRhY2xhc3MgaXMgOmNsYXNzOmBBQkNNZXRhYCBvcgotICAgaXMgZGVyaXZlZCBmcm9tIGl0LgotICAgQSBjbGFzcyB0aGF0IGhhcyBhIG1ldGFjbGFzcyBkZXJpdmVkIGZyb20gOmNsYXNzOmBBQkNNZXRhYAotICAgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB1bmxlc3MgYWxsIG9mIGl0cyBhYnN0cmFjdCBtZXRob2RzIGFuZAotICAgcHJvcGVydGllcyBhcmUgb3ZlcnJpZGRlbi4KLSAgIFRoZSBhYnN0cmFjdCBtZXRob2RzIGNhbiBiZSBjYWxsZWQgdXNpbmcgYW55IG9mIHRoZSBub3JtYWwgJ3N1cGVyJyBjYWxsCi0gICBtZWNoYW5pc21zLgorICAgVXNpbmcgdGhpcyBkZWNvcmF0b3IgcmVxdWlyZXMgdGhhdCB0aGUgY2xhc3MncyBtZXRhY2xhc3MgaXMgOmNsYXNzOmBBQkNNZXRhYAorICAgb3IgaXMgZGVyaXZlZCBmcm9tIGl0LiAgQSBjbGFzcyB0aGF0IGhhcyBhIG1ldGFjbGFzcyBkZXJpdmVkIGZyb20KKyAgIDpjbGFzczpgQUJDTWV0YWAgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB1bmxlc3MgYWxsIG9mIGl0cyBhYnN0cmFjdCBtZXRob2RzCisgICBhbmQgcHJvcGVydGllcyBhcmUgb3ZlcnJpZGRlbi4gIFRoZSBhYnN0cmFjdCBtZXRob2RzIGNhbiBiZSBjYWxsZWQgdXNpbmcgYW55CisgICBvZiB0aGUgbm9ybWFsICdzdXBlcicgY2FsbCBtZWNoYW5pc21zLiAgOmZ1bmM6YGFic3RyYWN0bWV0aG9kYCBtYXkgYmUgdXNlZAorICAgdG8gZGVjbGFyZSBhYnN0cmFjdCBtZXRob2RzIGZvciBwcm9wZXJ0aWVzIGFuZCBkZXNjcmlwdG9ycy4KIAogICAgRHluYW1pY2FsbHkgYWRkaW5nIGFic3RyYWN0IG1ldGhvZHMgdG8gYSBjbGFzcywgb3IgYXR0ZW1wdGluZyB0byBtb2RpZnkgdGhlCiAgICBhYnN0cmFjdGlvbiBzdGF0dXMgb2YgYSBtZXRob2Qgb3IgY2xhc3Mgb25jZSBpdCBpcyBjcmVhdGVkLCBhcmUgbm90CkBAIC0xNDQsMTIgKzE0Niw1MiBAQAogICAgcmVndWxhciBpbmhlcml0YW5jZTsgInZpcnR1YWwgc3ViY2xhc3NlcyIgcmVnaXN0ZXJlZCB3aXRoIHRoZSBBQkMncwogICAgOm1ldGg6YHJlZ2lzdGVyYCBtZXRob2QgYXJlIG5vdCBhZmZlY3RlZC4KIAotICAgVXNhZ2U6OgorICAgV2hlbiA6ZnVuYzpgYWJzdHJhY3RtZXRob2RgIGlzIGFwcGxpZWQgaW4gY29tYmluYXRpb24gd2l0aCBvdGhlciBtZXRob2QKKyAgIGRlc2NyaXB0b3JzLCBpdCBzaG91bGQgYmUgYXBwbGllZCBhcyB0aGUgaW5uZXJtb3N0IGRlY29yYXRvciwgYXMgc2hvd24gaW4KKyAgIHRoZSBmb2xsb3dpbmcgdXNhZ2UgZXhhbXBsZXM6OgogCiAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1BQkNNZXRhKToKICAgICAgICAgICBAYWJzdHJhY3RtZXRob2QKICAgICAgICAgICBkZWYgbXlfYWJzdHJhY3RfbWV0aG9kKHNlbGYsIC4uLik6CiAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgIEBhYnN0cmFjdG1ldGhvZAorICAgICAgICAgIGRlZiBteV9hYnN0cmFjdF9jbGFzc21ldGhvZChjbHMsIC4uLik6CisgICAgICAgICAgICAgIC4uLgorICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICBAYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICBkZWYgbXlfYWJzdHJhY3Rfc3RhdGljbWV0aG9kKC4uLik6CisgICAgICAgICAgICAgIC4uLgorCisgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCisgICAgICAgICAgZGVmIG15X2Fic3RyYWN0X3Byb3BlcnR5KHNlbGYpOgorICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICBAbXlfYWJzdHJhY3RfcHJvcGVydHkuc2V0dGVyCisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCisgICAgICAgICAgZGVmIG15X2Fic3RyYWN0X3Byb3BlcnR5KHNlbGYsIHZhbCk6CisgICAgICAgICAgICAgIC4uLgorCisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCisgICAgICAgICAgZGVmIF9nZXRfeChzZWxmKToKKyAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCisgICAgICAgICAgZGVmIF9zZXRfeChzZWxmLCB2YWwpOgorICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICB4ID0gcHJvcGVydHkoX2dldF94LCBfc2V0X3gpCisKKyAgIEluIG9yZGVyIHRvIGNvcnJlY3RseSBpbnRlcm9wZXJhdGUgd2l0aCB0aGUgYWJzdHJhY3QgYmFzZSBjbGFzcyBtYWNoaW5lcnksCisgICB0aGUgZGVzY3JpcHRvciBtdXN0IGlkZW50aWZ5IGl0c2VsZiBhcyBhYnN0cmFjdCB1c2luZworICAgOmF0dHI6YF9faXNhYnN0cmFjdG1ldGhvZF9fYC4gSW4gZ2VuZXJhbCwgdGhpcyBhdHRyaWJ1dGUgc2hvdWxkIGJlIGBgVHJ1ZWBgCisgICBpZiBhbnkgb2YgdGhlIG1ldGhvZHMgdXNlZCB0byBjb21wb3NlIHRoZSBkZXNjcmlwdG9yIGFyZSBhYnN0cmFjdC4gRm9yCisgICBleGFtcGxlLCBQeXRob24ncyBidWlsdC1pbiBwcm9wZXJ0eSBkb2VzIHRoZSBlcXVpdmFsZW50IG9mOjoKKworICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAuLi4KKyAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICBkZWYgX19pc2Fic3RyYWN0bWV0aG9kX18oc2VsZik6CisgICAgICAgICAgICAgIHJldHVybiBhbnkoZ2V0YXR0cihmLCAnX19pc2Fic3RyYWN0bWV0aG9kX18nLCBGYWxzZSkgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgZiBpbiAoc2VsZi5fZmdldCwgc2VsZi5fZnNldCwgc2VsZi5fZmRlbCkpCiAKICAgIC4uIG5vdGU6OgogCkBAIC0xNjYsMTQgKzIwOCwyMCBAQAogICAgQSBzdWJjbGFzcyBvZiB0aGUgYnVpbHQtaW4gOmZ1bmM6YGNsYXNzbWV0aG9kYCwgaW5kaWNhdGluZyBhbiBhYnN0cmFjdAogICAgY2xhc3NtZXRob2QuIE90aGVyd2lzZSBpdCBpcyBzaW1pbGFyIHRvIDpmdW5jOmBhYnN0cmFjdG1ldGhvZGAuCiAKLSAgIFVzYWdlOjoKKyAgIFRoaXMgc3BlY2lhbCBjYXNlIGlzIGRlcHJlY2F0ZWQsIGFzIHRoZSA6ZnVuYzpgY2xhc3NtZXRob2RgIGRlY29yYXRvcgorICAgaXMgbm93IGNvcnJlY3RseSBpZGVudGlmaWVkIGFzIGFic3RyYWN0IHdoZW4gYXBwbGllZCB0byBhbiBhYnN0cmFjdAorICAgbWV0aG9kOjoKIAogICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9QUJDTWV0YSk6Ci0gICAgICAgICAgQGFic3RyYWN0Y2xhc3NtZXRob2QKKyAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICBAYWJzdHJhY3RtZXRob2QKICAgICAgICAgICBkZWYgbXlfYWJzdHJhY3RfY2xhc3NtZXRob2QoY2xzLCAuLi4pOgogICAgICAgICAgICAgICAuLi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICAgSXQgaXMgbm93IHBvc3NpYmxlIHRvIHVzZSA6Y2xhc3M6YGNsYXNzbWV0aG9kYCB3aXRoCisgICAgICAgOmZ1bmM6YGFic3RyYWN0bWV0aG9kYCwgbWFraW5nIHRoaXMgZGVjb3JhdG9yIHJlZHVuZGFudC4KIAogCiAuLiBkZWNvcmF0b3I6OiBhYnN0cmFjdHN0YXRpY21ldGhvZApAQCAtMTgxLDQxICsyMjksNzAgQEAKICAgIEEgc3ViY2xhc3Mgb2YgdGhlIGJ1aWx0LWluIDpmdW5jOmBzdGF0aWNtZXRob2RgLCBpbmRpY2F0aW5nIGFuIGFic3RyYWN0CiAgICBzdGF0aWNtZXRob2QuIE90aGVyd2lzZSBpdCBpcyBzaW1pbGFyIHRvIDpmdW5jOmBhYnN0cmFjdG1ldGhvZGAuCiAKLSAgIFVzYWdlOjoKKyAgIFRoaXMgc3BlY2lhbCBjYXNlIGlzIGRlcHJlY2F0ZWQsIGFzIHRoZSA6ZnVuYzpgc3RhdGljbWV0aG9kYCBkZWNvcmF0b3IKKyAgIGlzIG5vdyBjb3JyZWN0bHkgaWRlbnRpZmllZCBhcyBhYnN0cmFjdCB3aGVuIGFwcGxpZWQgdG8gYW4gYWJzdHJhY3QKKyAgIG1ldGhvZDo6CiAKICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPUFCQ01ldGEpOgotICAgICAgICAgIEBhYnN0cmFjdHN0YXRpY21ldGhvZAorICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICBAYWJzdHJhY3RtZXRob2QKICAgICAgICAgICBkZWYgbXlfYWJzdHJhY3Rfc3RhdGljbWV0aG9kKC4uLik6CiAgICAgICAgICAgICAgIC4uLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgICBJdCBpcyBub3cgcG9zc2libGUgdG8gdXNlIDpjbGFzczpgc3RhdGljbWV0aG9kYCB3aXRoCisgICAgICAgOmZ1bmM6YGFic3RyYWN0bWV0aG9kYCwgbWFraW5nIHRoaXMgZGVjb3JhdG9yIHJlZHVuZGFudC4KIAogCi0uLiBmdW5jdGlvbjo6IGFic3RyYWN0cHJvcGVydHkoZmdldD1Ob25lLCBmc2V0PU5vbmUsIGZkZWw9Tm9uZSwgZG9jPU5vbmUpCisuLiBkZWNvcmF0b3I6OiBhYnN0cmFjdHByb3BlcnR5KGZnZXQ9Tm9uZSwgZnNldD1Ob25lLCBmZGVsPU5vbmUsIGRvYz1Ob25lKQogCi0gICBBIHN1YmNsYXNzIG9mIHRoZSBidWlsdC1pbiA6ZnVuYzpgcHJvcGVydHlgLCBpbmRpY2F0aW5nIGFuIGFic3RyYWN0IHByb3BlcnR5LgorICAgQSBzdWJjbGFzcyBvZiB0aGUgYnVpbHQtaW4gOmZ1bmM6YHByb3BlcnR5YCwgaW5kaWNhdGluZyBhbiBhYnN0cmFjdAorICAgcHJvcGVydHkuCiAKLSAgIFVzaW5nIHRoaXMgZnVuY3Rpb24gcmVxdWlyZXMgdGhhdCB0aGUgY2xhc3MncyBtZXRhY2xhc3MgaXMgOmNsYXNzOmBBQkNNZXRhYCBvcgotICAgaXMgZGVyaXZlZCBmcm9tIGl0LgotICAgQSBjbGFzcyB0aGF0IGhhcyBhIG1ldGFjbGFzcyBkZXJpdmVkIGZyb20gOmNsYXNzOmBBQkNNZXRhYCBjYW5ub3QgYmUKLSAgIGluc3RhbnRpYXRlZCB1bmxlc3MgYWxsIG9mIGl0cyBhYnN0cmFjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIGFyZSBvdmVycmlkZGVuLgotICAgVGhlIGFic3RyYWN0IHByb3BlcnRpZXMgY2FuIGJlIGNhbGxlZCB1c2luZyBhbnkgb2YgdGhlIG5vcm1hbAotICAgJ3N1cGVyJyBjYWxsIG1lY2hhbmlzbXMuCisgICBVc2luZyB0aGlzIGZ1bmN0aW9uIHJlcXVpcmVzIHRoYXQgdGhlIGNsYXNzJ3MgbWV0YWNsYXNzIGlzIDpjbGFzczpgQUJDTWV0YWAKKyAgIG9yIGlzIGRlcml2ZWQgZnJvbSBpdC4gQSBjbGFzcyB0aGF0IGhhcyBhIG1ldGFjbGFzcyBkZXJpdmVkIGZyb20KKyAgIDpjbGFzczpgQUJDTWV0YWAgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB1bmxlc3MgYWxsIG9mIGl0cyBhYnN0cmFjdCBtZXRob2RzCisgICBhbmQgcHJvcGVydGllcyBhcmUgb3ZlcnJpZGRlbi4gVGhlIGFic3RyYWN0IHByb3BlcnRpZXMgY2FuIGJlIGNhbGxlZCB1c2luZworICAgYW55IG9mIHRoZSBub3JtYWwgJ3N1cGVyJyBjYWxsIG1lY2hhbmlzbXMuCiAKLSAgIFVzYWdlOjoKKyAgIFRoaXMgc3BlY2lhbCBjYXNlIGlzIGRlcHJlY2F0ZWQsIGFzIHRoZSA6ZnVuYzpgcHJvcGVydHlgIGRlY29yYXRvcgorICAgaXMgbm93IGNvcnJlY3RseSBpZGVudGlmaWVkIGFzIGFic3RyYWN0IHdoZW4gYXBwbGllZCB0byBhbiBhYnN0cmFjdAorICAgbWV0aG9kOjoKIAogICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9QUJDTWV0YSk6Ci0gICAgICAgICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICBAYWJzdHJhY3RtZXRob2QKICAgICAgICAgICBkZWYgbXlfYWJzdHJhY3RfcHJvcGVydHkoc2VsZik6CiAgICAgICAgICAgICAgIC4uLgogCi0gICBUaGlzIGRlZmluZXMgYSByZWFkLW9ubHkgcHJvcGVydHk7IHlvdSBjYW4gYWxzbyBkZWZpbmUgYSByZWFkLXdyaXRlIGFic3RyYWN0Ci0gICBwcm9wZXJ0eSB1c2luZyB0aGUgJ2xvbmcnIGZvcm0gb2YgcHJvcGVydHkgZGVjbGFyYXRpb246OgorICAgVGhlIGFib3ZlIGV4YW1wbGUgZGVmaW5lcyBhIHJlYWQtb25seSBwcm9wZXJ0eTsgeW91IGNhbiBhbHNvIGRlZmluZSBhCisgICByZWFkLXdyaXRlIGFic3RyYWN0IHByb3BlcnR5IGJ5IGFwcHJvcHJpYXRlbHkgbWFya2luZyBvbmUgb3IgbW9yZSBvZiB0aGUKKyAgIHVuZGVybHlpbmcgbWV0aG9kcyBhcyBhYnN0cmFjdDo6CiAKICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPUFCQ01ldGEpOgotICAgICAgICAgIGRlZiBnZXR4KHNlbGYpOiAuLi4KLSAgICAgICAgICBkZWYgc2V0eChzZWxmLCB2YWx1ZSk6IC4uLgotICAgICAgICAgIHggPSBhYnN0cmFjdHByb3BlcnR5KGdldHgsIHNldHgpCisgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgZGVmIHgoc2VsZik6CisgICAgICAgICAgICAgIC4uLgorCisgICAgICAgICAgQHguc2V0dGVyCisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCisgICAgICAgICAgZGVmIHgoc2VsZiwgdmFsKToKKyAgICAgICAgICAgICAgLi4uCisKKyAgIElmIG9ubHkgc29tZSBjb21wb25lbnRzIGFyZSBhYnN0cmFjdCwgb25seSB0aG9zZSBjb21wb25lbnRzIG5lZWQgdG8gYmUKKyAgIHVwZGF0ZWQgdG8gY3JlYXRlIGEgY29uY3JldGUgcHJvcGVydHkgaW4gYSBzdWJjbGFzczo6CisKKyAgICAgIGNsYXNzIEQoQyk6CisgICAgICAgICAgQEMueC5zZXR0ZXIKKyAgICAgICAgICBkZWYgeChzZWxmLCB2YWwpOgorICAgICAgICAgICAgICAuLi4KKworCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICAgSXQgaXMgbm93IHBvc3NpYmxlIHRvIHVzZSA6Y2xhc3M6YHByb3BlcnR5YCwgOm1ldGg6YHByb3BlcnR5LmdldHRlcmAsCisgICAgICAgOm1ldGg6YHByb3BlcnR5LnNldHRlcmAgYW5kIDptZXRoOmBwcm9wZXJ0eS5kZWxldGVyYCB3aXRoCisgICAgICAgOmZ1bmM6YGFic3RyYWN0bWV0aG9kYCwgbWFraW5nIHRoaXMgZGVjb3JhdG9yIHJlZHVuZGFudC4KIAogCiAuLiBydWJyaWM6OiBGb290bm90ZXMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FyY2hpdmluZy5yc3QgYi9Eb2MvbGlicmFyeS9hcmNoaXZpbmcucnN0CmluZGV4IDc1ZDEzN2MuLmM5Mjg0OTQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FyY2hpdmluZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXJjaGl2aW5nLnJzdApAQCAtNSw4ICs1LDkgQEAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCiBUaGUgbW9kdWxlcyBkZXNjcmliZWQgaW4gdGhpcyBjaGFwdGVyIHN1cHBvcnQgZGF0YSBjb21wcmVzc2lvbiB3aXRoIHRoZSB6bGliLAotZ3ppcCwgYW5kIGJ6aXAyIGFsZ29yaXRobXMsIGFuZCAgdGhlIGNyZWF0aW9uIG9mIFpJUC0gYW5kIHRhci1mb3JtYXQgYXJjaGl2ZXMuCi1TZWUgYWxzbyA6cmVmOmBhcmNoaXZpbmctb3BlcmF0aW9uc2AgcHJvdmlkZWQgYnkgdGhlIDptb2Q6YHNodXRpbGAgbW9kdWxlLgorZ3ppcCwgYnppcDIgYW5kIGx6bWEgYWxnb3JpdGhtcywgYW5kIHRoZSBjcmVhdGlvbiBvZiBaSVAtIGFuZCB0YXItZm9ybWF0CithcmNoaXZlcy4gIFNlZSBhbHNvIDpyZWY6YGFyY2hpdmluZy1vcGVyYXRpb25zYCBwcm92aWRlZCBieSB0aGUgOm1vZDpgc2h1dGlsYAorbW9kdWxlLgogCiAKIC4uIHRvY3RyZWU6OgpAQCAtMTQsNSArMTUsNiBAQAogICAgemxpYi5yc3QKICAgIGd6aXAucnN0CiAgICBiejIucnN0CisgICBsem1hLnJzdAogICAgemlwZmlsZS5yc3QKICAgIHRhcmZpbGUucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hcmdwYXJzZS5yc3QgYi9Eb2MvbGlicmFyeS9hcmdwYXJzZS5yc3QKaW5kZXggMWI4MGQyYS4uYWIwOTVlNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXJncGFyc2UucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FyZ3BhcnNlLnJzdApAQCAtMzcxLDE2ICszNzEsMTYgQEAKIF5eXl5eXl5eXl5eXl5eXgogCiA6Y2xhc3M6YEFyZ3VtZW50UGFyc2VyYCBvYmplY3RzIGFsbG93IHRoZSBoZWxwIGZvcm1hdHRpbmcgdG8gYmUgY3VzdG9taXplZCBieQotc3BlY2lmeWluZyBhbiBhbHRlcm5hdGUgZm9ybWF0dGluZyBjbGFzcy4gIEN1cnJlbnRseSwgdGhlcmUgYXJlIHRocmVlIHN1Y2gKK3NwZWNpZnlpbmcgYW4gYWx0ZXJuYXRlIGZvcm1hdHRpbmcgY2xhc3MuICBDdXJyZW50bHksIHRoZXJlIGFyZSBmb3VyIHN1Y2gKIGNsYXNzZXM6CiAKIC4uIGNsYXNzOjogUmF3RGVzY3JpcHRpb25IZWxwRm9ybWF0dGVyCiAgICAgICAgICAgIFJhd1RleHRIZWxwRm9ybWF0dGVyCiAgICAgICAgICAgIEFyZ3VtZW50RGVmYXVsdHNIZWxwRm9ybWF0dGVyCisgICAgICAgICAgIE1ldGF2YXJUeXBlSGVscEZvcm1hdHRlcgogCi1UaGUgZmlyc3QgdHdvIGFsbG93IG1vcmUgY29udHJvbCBvdmVyIGhvdyB0ZXh0dWFsIGRlc2NyaXB0aW9ucyBhcmUgZGlzcGxheWVkLAotd2hpbGUgdGhlIGxhc3QgYXV0b21hdGljYWxseSBhZGRzIGluZm9ybWF0aW9uIGFib3V0IGFyZ3VtZW50IGRlZmF1bHQgdmFsdWVzLgotCis6Y2xhc3M6YFJhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlcmAgYW5kIDpjbGFzczpgUmF3VGV4dEhlbHBGb3JtYXR0ZXJgIGdpdmUKK21vcmUgY29udHJvbCBvdmVyIGhvdyB0ZXh0dWFsIGRlc2NyaXB0aW9ucyBhcmUgZGlzcGxheWVkLgogQnkgZGVmYXVsdCwgOmNsYXNzOmBBcmd1bWVudFBhcnNlcmAgb2JqZWN0cyBsaW5lLXdyYXAgdGhlIGRlc2NyaXB0aW9uXyBhbmQKIGVwaWxvZ18gdGV4dHMgaW4gY29tbWFuZC1saW5lIGhlbHAgbWVzc2FnZXM6OgogCkBAIC00MzMsOCArNDMzLDggQEAKIDpjbGFzczpgUmF3VGV4dEhlbHBGb3JtYXR0ZXJgIG1haW50YWlucyB3aGl0ZXNwYWNlIGZvciBhbGwgc29ydHMgb2YgaGVscCB0ZXh0LAogaW5jbHVkaW5nIGFyZ3VtZW50IGRlc2NyaXB0aW9ucy4KIAotVGhlIG90aGVyIGZvcm1hdHRlciBjbGFzcyBhdmFpbGFibGUsIDpjbGFzczpgQXJndW1lbnREZWZhdWx0c0hlbHBGb3JtYXR0ZXJgLAotd2lsbCBhZGQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgZWFjaCBvZiB0aGUgYXJndW1lbnRzOjoKKzpjbGFzczpgQXJndW1lbnREZWZhdWx0c0hlbHBGb3JtYXR0ZXJgIGF1dG9tYXRpY2FsbHkgYWRkcyBpbmZvcm1hdGlvbiBhYm91dAorZGVmYXVsdCB2YWx1ZXMgdG8gZWFjaCBvZiB0aGUgYXJndW1lbnQgaGVscCBtZXNzYWdlczo6CiAKICAgID4+PiBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigKICAgIC4uLiAgICAgcHJvZz0nUFJPRycsCkBAIC00NTEsNiArNDUxLDI1IEBACiAgICAgLWgsIC0taGVscCAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAogICAgIC0tZm9vIEZPTyAgIEZPTyEgKGRlZmF1bHQ6IDQyKQogCis6Y2xhc3M6YE1ldGF2YXJUeXBlSGVscEZvcm1hdHRlcmAgdXNlcyB0aGUgbmFtZSBvZiB0aGUgdHlwZV8gYXJndW1lbnQgZm9yIGVhY2gKK2FyZ3VtZW50IGFzIHRoZSBkaXNwbGF5IG5hbWUgZm9yIGl0cyB2YWx1ZXMgKHJhdGhlciB0aGFuIHVzaW5nIHRoZSBkZXN0XworYXMgdGhlIHJlZ3VsYXIgZm9ybWF0dGVyIGRvZXMpOjoKKworICAgPj4+IHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAorICAgLi4uICAgICBwcm9nPSdQUk9HJywKKyAgIC4uLiAgICAgZm9ybWF0dGVyX2NsYXNzPWFyZ3BhcnNlLk1ldGF2YXJUeXBlSGVscEZvcm1hdHRlcikKKyAgID4+PiBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWZvbycsIHR5cGU9aW50KQorICAgPj4+IHBhcnNlci5hZGRfYXJndW1lbnQoJ2JhcicsIHR5cGU9ZmxvYXQpCisgICA+Pj4gcGFyc2VyLnByaW50X2hlbHAoKQorICAgdXNhZ2U6IFBST0cgWy1oXSBbLS1mb28gaW50XSBmbG9hdAorCisgICBwb3NpdGlvbmFsIGFyZ3VtZW50czoKKyAgICAgZmxvYXQKKworICAgb3B0aW9uYWwgYXJndW1lbnRzOgorICAgICAtaCwgLS1oZWxwICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0CisgICAgIC0tZm9vIGludAorCiAKIGNvbmZsaWN0X2hhbmRsZXIKIF5eXl5eXl5eXl5eXl5eXl4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FycmF5LnJzdCBiL0RvYy9saWJyYXJ5L2FycmF5LnJzdAppbmRleCBkNTYzY2NlLi44ZjY5NDNhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hcnJheS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXJyYXkucnN0CkBAIC0xNCwzNiArMTQsNTQgQEAKIDpkZm46YHR5cGUgY29kZWAsIHdoaWNoIGlzIGEgc2luZ2xlIGNoYXJhY3Rlci4gIFRoZSBmb2xsb3dpbmcgdHlwZSBjb2RlcyBhcmUKIGRlZmluZWQ6CiAKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IFR5cGUgY29kZSB8IEMgVHlwZSAgICAgICAgIHwgUHl0aG9uIFR5cGUgICAgICAgfCBNaW5pbXVtIHNpemUgaW4gYnl0ZXMgfAotKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PSsKLXwgYGAnYidgYCAgIHwgc2lnbmVkIGNoYXIgICAgfCBpbnQgICAgICAgICAgICAgICB8IDEgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdCJ2BgICAgfCB1bnNpZ25lZCBjaGFyICB8IGludCAgICAgICAgICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ3UnYGAgICB8IFB5X1VOSUNPREUgICAgIHwgVW5pY29kZSBjaGFyYWN0ZXIgfCAyIChzZWUgbm90ZSkgICAgICAgICAgfAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGAnaCdgYCAgIHwgc2lnbmVkIHNob3J0ICAgfCBpbnQgICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdIJ2BgICAgfCB1bnNpZ25lZCBzaG9ydCB8IGludCAgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ2knYGAgICB8IHNpZ25lZCBpbnQgICAgIHwgaW50ICAgICAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGAnSSdgYCAgIHwgdW5zaWduZWQgaW50ICAgfCBpbnQgICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdsJ2BgICAgfCBzaWduZWQgbG9uZyAgICB8IGludCAgICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ0wnYGAgICB8IHVuc2lnbmVkIGxvbmcgIHwgaW50ICAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGAnZidgYCAgIHwgZmxvYXQgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdkJ2BgICAgfCBkb3VibGUgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBUeXBlIGNvZGUgfCBDIFR5cGUgICAgICAgICAgICAgfCBQeXRob24gVHlwZSAgICAgICB8IE1pbmltdW0gc2l6ZSBpbiBieXRlcyB8IE5vdGVzIHwKKys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT0rCit8IGBgJ2InYGAgICB8IHNpZ25lZCBjaGFyICAgICAgICB8IGludCAgICAgICAgICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnQidgYCAgIHwgdW5zaWduZWQgY2hhciAgICAgIHwgaW50ICAgICAgICAgICAgICAgfCAxICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCd1J2BgICAgfCBQeV9VTklDT0RFICAgICAgICAgfCBVbmljb2RlIGNoYXJhY3RlciB8IDIgICAgICAgICAgICAgICAgICAgICB8IFwoMSkgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2gnYGAgICB8IHNpZ25lZCBzaG9ydCAgICAgICB8IGludCAgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnSCdgYCAgIHwgdW5zaWduZWQgc2hvcnQgICAgIHwgaW50ICAgICAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdpJ2BgICAgfCBzaWduZWQgaW50ICAgICAgICAgfCBpbnQgICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ0knYGAgICB8IHVuc2lnbmVkIGludCAgICAgICB8IGludCAgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnbCdgYCAgIHwgc2lnbmVkIGxvbmcgICAgICAgIHwgaW50ICAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdMJ2BgICAgfCB1bnNpZ25lZCBsb25nICAgICAgfCBpbnQgICAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3EnYGAgICB8IHNpZ25lZCBsb25nIGxvbmcgICB8IGludCAgICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgICAgIHwgXCgyKSAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnUSdgYCAgIHwgdW5zaWduZWQgbG9uZyBsb25nIHwgaW50ICAgICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICAgICAgICAgfCBcKDIpICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdmJ2BgICAgfCBmbG9hdCAgICAgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2QnYGAgICB8IGRvdWJsZSAgICAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKIAotLi4gbm90ZTo6CitOb3RlczoKIAotICAgVGhlIGBgJ3UnYGAgdHlwZWNvZGUgY29ycmVzcG9uZHMgdG8gUHl0aG9uJ3MgdW5pY29kZSBjaGFyYWN0ZXIuICBPbiBuYXJyb3cKLSAgIFVuaWNvZGUgYnVpbGRzIHRoaXMgaXMgMi1ieXRlcywgb24gd2lkZSBidWlsZHMgdGhpcyBpcyA0LWJ5dGVzLgorKDEpCisgICBUaGUgYGAndSdgYCB0eXBlIGNvZGUgY29ycmVzcG9uZHMgdG8gUHl0aG9uJ3Mgb2Jzb2xldGUgdW5pY29kZSBjaGFyYWN0ZXIKKyAgICg6Yzp0eXBlOmBQeV9VTklDT0RFYCB3aGljaCBpcyA6Yzp0eXBlOmB3Y2hhcl90YCkuIERlcGVuZGluZyBvbiB0aGUKKyAgIHBsYXRmb3JtLCBpdCBjYW4gYmUgMTYgYml0cyBvciAzMiBiaXRzLgorCisgICBgYCd1J2BgIHdpbGwgYmUgcmVtb3ZlZCB0b2dldGhlciB3aXRoIHRoZSByZXN0IG9mIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYAorICAgQVBJLgorCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisKKygyKQorICAgVGhlIGBgJ3EnYGAgYW5kIGBgJ1EnYGAgdHlwZSBjb2RlcyBhcmUgYXZhaWxhYmxlIG9ubHkgaWYKKyAgIHRoZSBwbGF0Zm9ybSBDIGNvbXBpbGVyIHVzZWQgdG8gYnVpbGQgUHl0aG9uIHN1cHBvcnRzIEMgOmM6dHlwZTpgbG9uZyBsb25nYCwKKyAgIG9yLCBvbiBXaW5kb3dzLCA6Yzp0eXBlOmBfX2ludDY0YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIFRoZSBhY3R1YWwgcmVwcmVzZW50YXRpb24gb2YgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlIG1hY2hpbmUgYXJjaGl0ZWN0dXJlCiAoc3RyaWN0bHkgc3BlYWtpbmcsIGJ5IHRoZSBDIGltcGxlbWVudGF0aW9uKS4gIFRoZSBhY3R1YWwgc2l6ZSBjYW4gYmUgYWNjZXNzZWQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzdC5yc3QgYi9Eb2MvbGlicmFyeS9hc3QucnN0CmluZGV4IGUyYzBiNmQuLjE2ZGUzY2EgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN0LnJzdApAQCAtOTYsOSArOTYsNiBAQAogQWJzdHJhY3QgR3JhbW1hcgogLS0tLS0tLS0tLS0tLS0tLQogCi1UaGUgbW9kdWxlIGRlZmluZXMgYSBzdHJpbmcgY29uc3RhbnQgYGBfX3ZlcnNpb25fX2BgIHdoaWNoIGlzIHRoZSBkZWNpbWFsCi1TdWJ2ZXJzaW9uIHJldmlzaW9uIG51bWJlciBvZiB0aGUgZmlsZSBzaG93biBiZWxvdy4KLQogVGhlIGFic3RyYWN0IGdyYW1tYXIgaXMgY3VycmVudGx5IGRlZmluZWQgYXMgZm9sbG93czoKIAogLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi8uLi9QYXJzZXIvUHl0aG9uLmFzZGwKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdAppbmRleCA3NWIzY2RhLi41NWM2MWQ3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0CkBAIC0xOTcsNiArMTk3LDkgQEAKIG1hcnNoYWxsZWQsIGFmdGVyIHNldHRpbmcgdGhlIGNoYW5uZWwgdGVybWluYXRvciB0byBgYE5vbmVgYCB0byBlbnN1cmUgdGhhdAogYW55IGV4dHJhbmVvdXMgZGF0YSBzZW50IGJ5IHRoZSB3ZWIgY2xpZW50IGFyZSBpZ25vcmVkLiA6OgogCisKKyAgIGltcG9ydCBhc3luY2hhdAorCiAgICBjbGFzcyBodHRwX3JlcXVlc3RfaGFuZGxlcihhc3luY2hhdC5hc3luY19jaGF0KToKIAogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrLCBhZGRyLCBzZXNzaW9ucywgbG9nKToKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jb3JlLnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jb3JlLnJzdAppbmRleCA2MTliN2JiLi43Y2FjY2ExIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY29yZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNvcmUucnN0CkBAIC0xODQsMTIgKzE4NCwxNSBAQAogICAgTW9zdCBvZiB0aGVzZSBhcmUgbmVhcmx5IGlkZW50aWNhbCB0byB0aGVpciBzb2NrZXQgcGFydG5lcnMuCiAKIAotICAgLi4gbWV0aG9kOjogY3JlYXRlX3NvY2tldChmYW1pbHksIHR5cGUpCisgICAuLiBtZXRob2Q6OiBjcmVhdGVfc29ja2V0KGZhbWlseT1zb2NrZXQuQUZfSU5FVCwgdHlwZT1zb2NrZXQuU09DS19TVFJFQU0pCiAKICAgICAgIFRoaXMgaXMgaWRlbnRpY2FsIHRvIHRoZSBjcmVhdGlvbiBvZiBhIG5vcm1hbCBzb2NrZXQsIGFuZCB3aWxsIHVzZSB0aGUKICAgICAgIHNhbWUgb3B0aW9ucyBmb3IgY3JlYXRpb24uICBSZWZlciB0byB0aGUgOm1vZDpgc29ja2V0YCBkb2N1bWVudGF0aW9uIGZvcgogICAgICAgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgc29ja2V0cy4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgICpmYW1pbHkqIGFuZCAqdHlwZSogYXJndW1lbnRzIGNhbiBiZSBvbWl0dGVkLgorCiAKICAgIC4uIG1ldGhvZDo6IGNvbm5lY3QoYWRkcmVzcykKIApAQCAtMjc0LDEzICsyNzcsMTMgQEAKIEhlcmUgaXMgYSB2ZXJ5IGJhc2ljIEhUVFAgY2xpZW50IHRoYXQgdXNlcyB0aGUgOmNsYXNzOmBkaXNwYXRjaGVyYCBjbGFzcyB0bwogaW1wbGVtZW50IGl0cyBzb2NrZXQgaGFuZGxpbmc6OgogCi0gICBpbXBvcnQgYXN5bmNvcmUsIHNvY2tldAorICAgaW1wb3J0IGFzeW5jb3JlCiAKICAgIGNsYXNzIEhUVFBDbGllbnQoYXN5bmNvcmUuZGlzcGF0Y2hlcik6CiAKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcGF0aCk6CiAgICAgICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXIuX19pbml0X18oc2VsZikKLSAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldCgpCiAgICAgICAgICAgIHNlbGYuY29ubmVjdCggKGhvc3QsIDgwKSApCiAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gYnl0ZXMoJ0dFVCAlcyBIVFRQLzEuMFxyXG5Ib3N0OiAlc1xyXG5cclxuJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhdGgsIGhvc3QpLCAnYXNjaWknKQpAQCAtMzE0LDcgKzMxNyw2IEBACiBjb25uZWN0aW9ucyBhbmQgZGlzcGF0Y2hlcyB0aGUgaW5jb21pbmcgY29ubmVjdGlvbnMgdG8gYSBoYW5kbGVyOjoKIAogICAgIGltcG9ydCBhc3luY29yZQotICAgIGltcG9ydCBzb2NrZXQKIAogICAgIGNsYXNzIEVjaG9IYW5kbGVyKGFzeW5jb3JlLmRpc3BhdGNoZXJfd2l0aF9zZW5kKToKIApAQCAtMzI3LDcgKzMyOSw3IEBACiAKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQpOgogICAgICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmKQotICAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoKQogICAgICAgICAgICAgc2VsZi5zZXRfcmV1c2VfYWRkcigpCiAgICAgICAgICAgICBzZWxmLmJpbmQoKGhvc3QsIHBvcnQpKQogICAgICAgICAgICAgc2VsZi5saXN0ZW4oNSkKQEAgLTMzOCw0ICszNDAsMyBAQAogCiAgICAgc2VydmVyID0gRWNob1NlcnZlcignbG9jYWxob3N0JywgODA4MCkKICAgICBhc3luY29yZS5sb29wKCkKLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYXRleGl0LnJzdCBiL0RvYy9saWJyYXJ5L2F0ZXhpdC5yc3QKaW5kZXggMDFjZjM3OS4uZGJkZDgxZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXRleGl0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9hdGV4aXQucnN0CkBAIC05LDEzICs5LDE0IEBACiAKIFRoZSA6bW9kOmBhdGV4aXRgIG1vZHVsZSBkZWZpbmVzIGZ1bmN0aW9ucyB0byByZWdpc3RlciBhbmQgdW5yZWdpc3RlciBjbGVhbnVwCiBmdW5jdGlvbnMuICBGdW5jdGlvbnMgdGh1cyByZWdpc3RlcmVkIGFyZSBhdXRvbWF0aWNhbGx5IGV4ZWN1dGVkIHVwb24gbm9ybWFsCi1pbnRlcnByZXRlciB0ZXJtaW5hdGlvbi4gIFRoZSBvcmRlciBpbiB3aGljaCB0aGUgZnVuY3Rpb25zIGFyZSBjYWxsZWQgaXMgbm90Ci1kZWZpbmVkOyBpZiB5b3UgaGF2ZSBjbGVhbnVwIG9wZXJhdGlvbnMgdGhhdCBkZXBlbmQgb24gZWFjaCBvdGhlciwgeW91IHNob3VsZAotd3JhcCB0aGVtIGluIGEgZnVuY3Rpb24gYW5kIHJlZ2lzdGVyIHRoYXQgb25lLiAgVGhpcyBrZWVwcyA6bW9kOmBhdGV4aXRgIHNpbXBsZS4KK2ludGVycHJldGVyIHRlcm1pbmF0aW9uLiAgOm1vZDpgYXRleGl0YCBydW5zIHRoZXNlIGZ1bmN0aW9ucyBpbiB0aGUgKnJldmVyc2UqCitvcmRlciBpbiB3aGljaCB0aGV5IHdlcmUgcmVnaXN0ZXJlZDsgaWYgeW91IHJlZ2lzdGVyIGBgQWBgLCBgYEJgYCwgYW5kIGBgQ2BgLAorYXQgaW50ZXJwcmV0ZXIgdGVybWluYXRpb24gdGltZSB0aGV5IHdpbGwgYmUgcnVuIGluIHRoZSBvcmRlciBgYENgYCwgYGBCYGAsCitgYEFgYC4KIAotTm90ZTogdGhlIGZ1bmN0aW9ucyByZWdpc3RlcmVkIHZpYSB0aGlzIG1vZHVsZSBhcmUgbm90IGNhbGxlZCB3aGVuIHRoZSBwcm9ncmFtCi1pcyBraWxsZWQgYnkgYSBzaWduYWwgbm90IGhhbmRsZWQgYnkgUHl0aG9uLCB3aGVuIGEgUHl0aG9uIGZhdGFsIGludGVybmFsIGVycm9yCi1pcyBkZXRlY3RlZCwgb3Igd2hlbiA6ZnVuYzpgb3MuX2V4aXRgIGlzIGNhbGxlZC4KKyoqTm90ZToqKiBUaGUgZnVuY3Rpb25zIHJlZ2lzdGVyZWQgdmlhIHRoaXMgbW9kdWxlIGFyZSBub3QgY2FsbGVkIHdoZW4gdGhlCitwcm9ncmFtIGlzIGtpbGxlZCBieSBhIHNpZ25hbCBub3QgaGFuZGxlZCBieSBQeXRob24sIHdoZW4gYSBQeXRob24gZmF0YWwKK2ludGVybmFsIGVycm9yIGlzIGRldGVjdGVkLCBvciB3aGVuIDpmdW5jOmBvcy5fZXhpdGAgaXMgY2FsbGVkLgogCiAKIC4uIGZ1bmN0aW9uOjogcmVnaXN0ZXIoZnVuYywgKmFyZ3MsICoqa2FyZ3MpCkBAIC02Nyw4ICs2OCw5IEBACiBtYWtpbmcgYW4gZXhwbGljaXQgY2FsbCBpbnRvIHRoaXMgbW9kdWxlIGF0IHRlcm1pbmF0aW9uLiA6OgogCiAgICB0cnk6Ci0gICAgICAgX2NvdW50ID0gaW50KG9wZW4oImNvdW50ZXIiKS5yZWFkKCkpCi0gICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICB3aXRoIG9wZW4oImNvdW50ZXJmaWxlIikgYXMgaW5maWxlOgorICAgICAgICAgICBfY291bnQgPSBpbnQoaW5maWxlLnJlYWQoKSkKKyAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKICAgICAgICBfY291bnQgPSAwCiAKICAgIGRlZiBpbmNyY291bnRlcihuKToKQEAgLTc2LDcgKzc4LDggQEAKICAgICAgICBfY291bnQgPSBfY291bnQgKyBuCiAKICAgIGRlZiBzYXZlY291bnRlcigpOgotICAgICAgIG9wZW4oImNvdW50ZXIiLCAidyIpLndyaXRlKCIlZCIgJSBfY291bnQpCisgICAgICAgd2l0aCBvcGVuKCJjb3VudGVyZmlsZSIsICJ3IikgYXMgb3V0ZmlsZToKKyAgICAgICAgICAgb3V0ZmlsZS53cml0ZSgiJWQiICUgX2NvdW50KQogCiAgICBpbXBvcnQgYXRleGl0CiAgICBhdGV4aXQucmVnaXN0ZXIoc2F2ZWNvdW50ZXIpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9iYXNlNjQucnN0IGIvRG9jL2xpYnJhcnkvYmFzZTY0LnJzdAppbmRleCBjMDhkZjE1Li5hZGUwZjA3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9iYXNlNjQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Jhc2U2NC5yc3QKQEAgLTE4LDkgKzE4LDE0IEBACiAKIFRoZXJlIGFyZSB0d28gaW50ZXJmYWNlcyBwcm92aWRlZCBieSB0aGlzIG1vZHVsZS4gIFRoZSBtb2Rlcm4gaW50ZXJmYWNlCiBzdXBwb3J0cyBlbmNvZGluZyBhbmQgZGVjb2RpbmcgQVNDSUkgYnl0ZSBzdHJpbmcgb2JqZWN0cyB1c2luZyBhbGwgdGhyZWUKLWFscGhhYmV0cy4gIFRoZSBsZWdhY3kgaW50ZXJmYWNlIHByb3ZpZGVzIGZvciBlbmNvZGluZyBhbmQgZGVjb2RpbmcgdG8gYW5kIGZyb20KLWZpbGUtbGlrZSBvYmplY3RzIGFzIHdlbGwgYXMgYnl0ZSBzdHJpbmdzLCBidXQgb25seSB1c2luZyB0aGUgQmFzZTY0IHN0YW5kYXJkCi1hbHBoYWJldC4KK2FscGhhYmV0cy4gQWRkaXRpb25hbGx5LCB0aGUgZGVjb2RpbmcgZnVuY3Rpb25zIG9mIHRoZSBtb2Rlcm4gaW50ZXJmYWNlIGFsc28KK2FjY2VwdCBVbmljb2RlIHN0cmluZ3MgY29udGFpbmluZyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMuIFRoZSBsZWdhY3kgaW50ZXJmYWNlCitwcm92aWRlcyBmb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHRvIGFuZCBmcm9tIGZpbGUtbGlrZSBvYmplY3RzIGFzIHdlbGwgYXMKK2J5dGUgc3RyaW5ncywgYnV0IG9ubHkgdXNpbmcgdGhlIEJhc2U2NCBzdGFuZGFyZCBhbHBoYWJldC4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIEFTQ0lJLW9ubHkgVW5pY29kZSBzdHJpbmdzIGFyZSBub3cgYWNjZXB0ZWQgYnkgdGhlIGRlY29kaW5nIGZ1bmN0aW9ucyBvZgorICAgdGhlIG1vZGVybiBpbnRlcmZhY2UuCiAKIFRoZSBtb2Rlcm4gaW50ZXJmYWNlIHByb3ZpZGVzOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9iaW5hcnkucnN0IGIvRG9jL2xpYnJhcnkvYmluYXJ5LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWZiZGMxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvYmluYXJ5LnJzdApAQCAtMCwwICsxLDIzIEBACisuLiBfYmluYXJ5c2VydmljZXM6CisKKyoqKioqKioqKioqKioqKioqKioqCitCaW5hcnkgRGF0YSBTZXJ2aWNlcworKioqKioqKioqKioqKioqKioqKioKKworVGhlIG1vZHVsZXMgZGVzY3JpYmVkIGluIHRoaXMgY2hhcHRlciBwcm92aWRlIHNvbWUgYmFzaWMgc2VydmljZXMgb3BlcmF0aW9ucworZm9yIG1hbmlwdWxhdGlvbiBvZiBiaW5hcnkgZGF0YS4gT3RoZXIgb3BlcmF0aW9ucyBvbiBiaW5hcnkgZGF0YSwgc3BlY2lmaWNhbGx5CitpbiByZWxhdGlvbiB0byBmaWxlIGZvcm1hdHMgYW5kIG5ldHdvcmsgcHJvdG9jb2xzLCBhcmUgZGVzY3JpYmVkIGluIHRoZQorcmVsZXZhbnQgc2VjdGlvbnMuCisKK1NvbWUgbGlicmFyaWVzIGRlc2NyaWJlZCB1bmRlciA6cmVmOmB0ZXh0c2VydmljZXNgIGFsc28gd29yayB3aXRoIGVpdGhlcgorQVNDSUktY29tcGF0aWJsZSBiaW5hcnkgZm9ybWF0cyAoZm9yIGV4YW1wbGUsIDptb2Q6YHJlYCkgb3IgYWxsIGJpbmFyeSBkYXRhCisoZm9yIGV4YW1wbGUsIDptb2Q6YGRpZmZsaWJgKS4KKworSW4gYWRkaXRpb24sIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uJ3MgYnVpbHQtaW4gYmluYXJ5IGRhdGEgdHlwZXMgaW4KKzpyZWY6YGJpbmFyeXNlcWAuCisKKy4uIHRvY3RyZWU6OgorCisgICBzdHJ1Y3QucnN0CisgICBjb2RlY3MucnN0CisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdCBiL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdAppbmRleCAyYWEzNzAyLi5iYWY0MzBkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYmluYXNjaWkucnN0CkBAIC0yMCw4ICsyMCwxMyBAQAogCiAuLiBub3RlOjoKIAotICAgRW5jb2RpbmcgYW5kIGRlY29kaW5nIGZ1bmN0aW9ucyBkbyBub3QgYWNjZXB0IFVuaWNvZGUgc3RyaW5ncy4gIE9ubHkgYnl0ZXN0cmluZwotICAgYW5kIGJ5dGVhcnJheSBvYmplY3RzIGNhbiBiZSBwcm9jZXNzZWQuCisgICBgYGEyYl8qYGAgZnVuY3Rpb25zIGFjY2VwdCBVbmljb2RlIHN0cmluZ3MgY29udGFpbmluZyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMuCisgICBPdGhlciBmdW5jdGlvbnMgb25seSBhY2NlcHQgYnl0ZXMgYW5kIGJ5dGVzLWNvbXBhdGlibGUgb2JqZWN0cyAoc3VjaCBhcworICAgYnl0ZWFycmF5IG9iamVjdHMgYW5kIG90aGVyIG9iamVjdHMgaW1wbGVtZW50aW5nIHRoZSBidWZmZXIgQVBJKS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFTQ0lJLW9ubHkgdW5pY29kZSBzdHJpbmdzIGFyZSBub3cgYWNjZXB0ZWQgYnkgdGhlIGBgYTJiXypgYCBmdW5jdGlvbnMuCisKIAogVGhlIDptb2Q6YGJpbmFzY2lpYCBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYnoyLnJzdCBiL0RvYy9saWJyYXJ5L2J6Mi5yc3QKaW5kZXggOTMxNDRiNi4uZDA2YTM5YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYnoyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9iejIucnN0CkBAIC0xLDIwMSArMSwyMDIgQEAKLTptb2Q6YGJ6MmAgLS0tIENvbXByZXNzaW9uIGNvbXBhdGlibGUgd2l0aCA6cHJvZ3JhbTpgYnppcDJgCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOm1vZDpgYnoyYCAtLS0gU3VwcG9ydCBmb3IgOnByb2dyYW06YGJ6aXAyYCBjb21wcmVzc2lvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAuLiBtb2R1bGU6OiBiejIKLSAgIDpzeW5vcHNpczogSW50ZXJmYWNlIHRvIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIHJvdXRpbmVzCi0gICAgICAgICAgICAgIGNvbXBhdGlibGUgd2l0aCBiemlwMi4KKyAgIDpzeW5vcHNpczogSW50ZXJmYWNlcyBmb3IgYnppcDIgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24uCiAuLiBtb2R1bGVhdXRob3I6OiBHdXN0YXZvIE5pZW1leWVyIDxuaWVtZXllckBjb25lY3RpdmEuY29tPgorLi4gbW9kdWxlYXV0aG9yOjogTmFkZWVtIFZhd2RhIDxuYWRlZW0udmF3ZGFAZ21haWwuY29tPgogLi4gc2VjdGlvbmF1dGhvcjo6IEd1c3Rhdm8gTmllbWV5ZXIgPG5pZW1leWVyQGNvbmVjdGl2YS5jb20+CisuLiBzZWN0aW9uYXV0aG9yOjogTmFkZWVtIFZhd2RhIDxuYWRlZW0udmF3ZGFAZ21haWwuY29tPgogCiAKLVRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgY29tcHJlaGVuc2l2ZSBpbnRlcmZhY2UgZm9yIHRoZSBiejIgY29tcHJlc3Npb24gbGlicmFyeS4KLUl0IGltcGxlbWVudHMgYSBjb21wbGV0ZSBmaWxlIGludGVyZmFjZSwgb25lLXNob3QgKGRlKWNvbXByZXNzaW9uIGZ1bmN0aW9ucywgYW5kCi10eXBlcyBmb3Igc2VxdWVudGlhbCAoZGUpY29tcHJlc3Npb24uCitUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGNvbXByZWhlbnNpdmUgaW50ZXJmYWNlIGZvciBjb21wcmVzc2luZyBhbmQKK2RlY29tcHJlc3NpbmcgZGF0YSB1c2luZyB0aGUgYnppcDIgY29tcHJlc3Npb24gYWxnb3JpdGhtLgogCi1IZXJlIGlzIGEgc3VtbWFyeSBvZiB0aGUgZmVhdHVyZXMgb2ZmZXJlZCBieSB0aGUgYnoyIG1vZHVsZToKK1RoZSA6bW9kOmBiejJgIG1vZHVsZSBjb250YWluczoKIAotKiA6Y2xhc3M6YEJaMkZpbGVgIGNsYXNzIGltcGxlbWVudHMgYSBjb21wbGV0ZSBmaWxlIGludGVyZmFjZSwgaW5jbHVkaW5nCi0gIDptZXRoOmB+QloyRmlsZS5yZWFkbGluZWAsIDptZXRoOmB+QloyRmlsZS5yZWFkbGluZXNgLAotICA6bWV0aDpgfkJaMkZpbGUud3JpdGVsaW5lc2AsIDptZXRoOmB+QloyRmlsZS5zZWVrYCwgZXRjOworKiBUaGUgOmZ1bmM6YC5vcGVuYCBmdW5jdGlvbiBhbmQgOmNsYXNzOmBCWjJGaWxlYCBjbGFzcyBmb3IgcmVhZGluZyBhbmQKKyAgd3JpdGluZyBjb21wcmVzc2VkIGZpbGVzLgorKiBUaGUgOmNsYXNzOmBCWjJDb21wcmVzc29yYCBhbmQgOmNsYXNzOmBCWjJEZWNvbXByZXNzb3JgIGNsYXNzZXMgZm9yCisgIGluY3JlbWVudGFsIChkZSljb21wcmVzc2lvbi4KKyogVGhlIDpmdW5jOmBjb21wcmVzc2AgYW5kIDpmdW5jOmBkZWNvbXByZXNzYCBmdW5jdGlvbnMgZm9yIG9uZS1zaG90CisgIChkZSljb21wcmVzc2lvbi4KIAotKiA6Y2xhc3M6YEJaMkZpbGVgIGNsYXNzIGltcGxlbWVudHMgZW11bGF0ZWQgOm1ldGg6YH5CWjJGaWxlLnNlZWtgIHN1cHBvcnQ7Ci0KLSogOmNsYXNzOmBCWjJGaWxlYCBjbGFzcyBpbXBsZW1lbnRzIHVuaXZlcnNhbCBuZXdsaW5lIHN1cHBvcnQ7Ci0KLSogOmNsYXNzOmBCWjJGaWxlYCBjbGFzcyBvZmZlcnMgYW4gb3B0aW1pemVkIGxpbmUgaXRlcmF0aW9uIHVzaW5nIGEgcmVhZGFoZWFkCi0gIGFsZ29yaXRobTsKLQotKiBTZXF1ZW50aWFsIChkZSljb21wcmVzc2lvbiBzdXBwb3J0ZWQgYnkgOmNsYXNzOmBCWjJDb21wcmVzc29yYCBhbmQKLSAgOmNsYXNzOmBCWjJEZWNvbXByZXNzb3JgIGNsYXNzZXM7Ci0KLSogT25lLXNob3QgKGRlKWNvbXByZXNzaW9uIHN1cHBvcnRlZCBieSA6ZnVuYzpgY29tcHJlc3NgIGFuZCA6ZnVuYzpgZGVjb21wcmVzc2AKLSAgZnVuY3Rpb25zOwotCi0qIFRocmVhZCBzYWZldHkgdXNlcyBpbmRpdmlkdWFsIGxvY2tpbmcgbWVjaGFuaXNtLgorQWxsIG9mIHRoZSBjbGFzc2VzIGluIHRoaXMgbW9kdWxlIG1heSBzYWZlbHkgYmUgYWNjZXNzZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgogCiAKIChEZSljb21wcmVzc2lvbiBvZiBmaWxlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhhbmRsaW5nIG9mIGNvbXByZXNzZWQgZmlsZXMgaXMgb2ZmZXJlZCBieSB0aGUgOmNsYXNzOmBCWjJGaWxlYCBjbGFzcy4KKy4uIGZ1bmN0aW9uOjogb3BlbihmaWxlbmFtZSwgbW9kZT0ncicsIGNvbXByZXNzbGV2ZWw9OSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSkKKworICAgT3BlbiBhIGJ6aXAyLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgb3IgdGV4dCBtb2RlLCByZXR1cm5pbmcgYSA6dGVybTpgZmlsZQorICAgb2JqZWN0YC4KKworICAgQXMgd2l0aCB0aGUgY29uc3RydWN0b3IgZm9yIDpjbGFzczpgQloyRmlsZWAsIHRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50IGNhbiBiZQorICAgYW4gYWN0dWFsIGZpbGVuYW1lIChhIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLCBvciBhbiBleGlzdGluZworICAgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorCisgICBUaGUgKm1vZGUqIGFyZ3VtZW50IGNhbiBiZSBhbnkgb2YgYGAncidgYCwgYGAncmInYGAsIGBgJ3cnYGAsIGBgJ3diJ2BgLAorICAgYGAnYSdgYCwgb3IgYGAnYWInYGAgZm9yIGJpbmFyeSBtb2RlLCBvciBgYCdydCdgYCwgYGAnd3QnYGAsIG9yIGBgJ2F0J2BgIGZvcgorICAgdGV4dCBtb2RlLiBUaGUgZGVmYXVsdCBpcyBgYCdyYidgYC4KKworICAgVGhlICpjb21wcmVzc2xldmVsKiBhcmd1bWVudCBpcyBhbiBpbnRlZ2VyIGZyb20gMSB0byA5LCBhcyBmb3IgdGhlCisgICA6Y2xhc3M6YEJaMkZpbGVgIGNvbnN0cnVjdG9yLgorCisgICBGb3IgYmluYXJ5IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byB0aGUgOmNsYXNzOmBCWjJGaWxlYAorICAgY29uc3RydWN0b3I6IGBgQloyRmlsZShmaWxlbmFtZSwgbW9kZSwgY29tcHJlc3NsZXZlbD1jb21wcmVzc2xldmVsKWBgLiBJbgorICAgdGhpcyBjYXNlLCB0aGUgKmVuY29kaW5nKiwgKmVycm9ycyogYW5kICpuZXdsaW5lKiBhcmd1bWVudHMgbXVzdCBub3QgYmUKKyAgIHByb3ZpZGVkLgorCisgICBGb3IgdGV4dCBtb2RlLCBhIDpjbGFzczpgQloyRmlsZWAgb2JqZWN0IGlzIGNyZWF0ZWQsIGFuZCB3cmFwcGVkIGluIGFuCisgICA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBlbmNvZGluZywgZXJyb3IKKyAgIGhhbmRsaW5nIGJlaGF2aW9yLCBhbmQgbGluZSBlbmRpbmcocykuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIGluZGV4OjoKLSAgIHNpbmdsZTogdW5pdmVyc2FsIG5ld2xpbmVzOyBiejIuQloyRmlsZSBjbGFzcworLi4gY2xhc3M6OiBCWjJGaWxlKGZpbGVuYW1lLCBtb2RlPSdyJywgYnVmZmVyaW5nPU5vbmUsIGNvbXByZXNzbGV2ZWw9OSkKIAotLi4gY2xhc3M6OiBCWjJGaWxlKGZpbGVuYW1lLCBtb2RlPSdyJywgYnVmZmVyaW5nPTAsIGNvbXByZXNzbGV2ZWw9OSkKKyAgIE9wZW4gYSBiemlwMi1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG1vZGUuCiAKLSAgIE9wZW4gYSBiejIgZmlsZS4gTW9kZSBjYW4gYmUgZWl0aGVyIGBgJ3InYGAgb3IgYGAndydgYCwgZm9yIHJlYWRpbmcgKGRlZmF1bHQpCi0gICBvciB3cml0aW5nLiBXaGVuIG9wZW5lZCBmb3Igd3JpdGluZywgdGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QKLSAgIGV4aXN0LCBhbmQgdHJ1bmNhdGVkIG90aGVyd2lzZS4gSWYgKmJ1ZmZlcmluZyogaXMgZ2l2ZW4sIGBgMGBgIG1lYW5zCi0gICB1bmJ1ZmZlcmVkLCBhbmQgbGFyZ2VyIG51bWJlcnMgc3BlY2lmeSB0aGUgYnVmZmVyIHNpemU7IHRoZSBkZWZhdWx0IGlzCi0gICBgYDBgYC4gSWYgKmNvbXByZXNzbGV2ZWwqIGlzIGdpdmVuLCBpdCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gYGAxYGAgYW5kCi0gICBgYDlgYDsgdGhlIGRlZmF1bHQgaXMgYGA5YGAuIEFkZCBhIGBgJ1UnYGAgdG8gbW9kZSB0byBvcGVuIHRoZSBmaWxlIGZvciBpbnB1dAotICAgaW4gOnRlcm06YHVuaXZlcnNhbCBuZXdsaW5lc2AgbW9kZS4gIEFueSBsaW5lIGVuZGluZyBpbiB0aGUgaW5wdXQgZmlsZSB3aWxsIGJlCi0gICBzZWVuIGFzIGEgYGAnXG4nYGAgaW4gUHl0aG9uLiAgQWxzbywgYSBmaWxlIHNvIG9wZW5lZCBnYWlucyB0aGUgYXR0cmlidXRlCi0gICA6YXR0cjpgbmV3bGluZXNgOyB0aGUgdmFsdWUgZm9yIHRoaXMgYXR0cmlidXRlIGlzIG9uZSBvZiBgYE5vbmVgYCAobm8gbmV3bGluZQotICAgcmVhZCB5ZXQpLCBgYCdccidgYCwgYGAnXG4nYGAsIGBgJ1xyXG4nYGAgb3IgYSB0dXBsZSBjb250YWluaW5nIGFsbCB0aGUKLSAgIG5ld2xpbmUgdHlwZXMgc2Vlbi4gVW5pdmVyc2FsIG5ld2xpbmVzIGFyZSBhdmFpbGFibGUgb25seSB3aGVuCi0gICByZWFkaW5nLiBJbnN0YW5jZXMgc3VwcG9ydCBpdGVyYXRpb24gaW4gdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCA6Y2xhc3M6YGZpbGVgCi0gICBpbnN0YW5jZXMuCisgICBJZiAqZmlsZW5hbWUqIGlzIGEgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCwgb3BlbiB0aGUgbmFtZWQgZmlsZQorICAgZGlyZWN0bHkuIE90aGVyd2lzZSwgKmZpbGVuYW1lKiBzaG91bGQgYmUgYSA6dGVybTpgZmlsZSBvYmplY3RgLCB3aGljaCB3aWxsCisgICBiZSB1c2VkIHRvIHJlYWQgb3Igd3JpdGUgdGhlIGNvbXByZXNzZWQgZGF0YS4KIAotICAgOmNsYXNzOmBCWjJGaWxlYCBzdXBwb3J0cyB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4KKyAgIFRoZSAqbW9kZSogYXJndW1lbnQgY2FuIGJlIGVpdGhlciBgYCdyJ2BgIGZvciByZWFkaW5nIChkZWZhdWx0KSwgYGAndydgYCBmb3IKKyAgIG92ZXJ3cml0aW5nLCBvciBgYCdhJ2BgIGZvciBhcHBlbmRpbmcuIFRoZXNlIGNhbiBlcXVpdmFsZW50bHkgYmUgZ2l2ZW4gYXMKKyAgIGBgJ3JiJ2BgLCBgYCd3YidgYCwgYW5kIGBgJ2FiJ2BgIHJlc3BlY3RpdmVseS4KKworICAgSWYgKmZpbGVuYW1lKiBpcyBhIGZpbGUgb2JqZWN0IChyYXRoZXIgdGhhbiBhbiBhY3R1YWwgZmlsZSBuYW1lKSwgYSBtb2RlIG9mCisgICBgYCd3J2BgIGRvZXMgbm90IHRydW5jYXRlIHRoZSBmaWxlLCBhbmQgaXMgaW5zdGVhZCBlcXVpdmFsZW50IHRvIGBgJ2EnYGAuCisKKyAgIFRoZSAqYnVmZmVyaW5nKiBhcmd1bWVudCBpcyBpZ25vcmVkLiBJdHMgdXNlIGlzIGRlcHJlY2F0ZWQuCisKKyAgIElmICptb2RlKiBpcyBgYCd3J2BgIG9yIGBgJ2EnYGAsICpjb21wcmVzc2xldmVsKiBjYW4gYmUgYSBudW1iZXIgYmV0d2VlbgorICAgYGAxYGAgYW5kIGBgOWBgIHNwZWNpZnlpbmcgdGhlIGxldmVsIG9mIGNvbXByZXNzaW9uOiBgYDFgYCBwcm9kdWNlcyB0aGUKKyAgIGxlYXN0IGNvbXByZXNzaW9uLCBhbmQgYGA5YGAgKGRlZmF1bHQpIHByb2R1Y2VzIHRoZSBtb3N0IGNvbXByZXNzaW9uLgorCisgICBJZiAqbW9kZSogaXMgYGAncidgYCwgdGhlIGlucHV0IGZpbGUgbWF5IGJlIHRoZSBjb25jYXRlbmF0aW9uIG9mIG11bHRpcGxlCisgICBjb21wcmVzc2VkIHN0cmVhbXMuCisKKyAgIDpjbGFzczpgQloyRmlsZWAgcHJvdmlkZXMgYWxsIG9mIHRoZSBtZW1iZXJzIHNwZWNpZmllZCBieSB0aGUKKyAgIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgLCBleGNlcHQgZm9yIDptZXRoOmBkZXRhY2hgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgLgorICAgSXRlcmF0aW9uIGFuZCB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBhcmUgc3VwcG9ydGVkLgorCisgICA6Y2xhc3M6YEJaMkZpbGVgIGFsc28gcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBtZXRob2Q6CisKKyAgIC4uIG1ldGhvZDo6IHBlZWsoW25dKQorCisgICAgICBSZXR1cm4gYnVmZmVyZWQgZGF0YSB3aXRob3V0IGFkdmFuY2luZyB0aGUgZmlsZSBwb3NpdGlvbi4gQXQgbGVhc3Qgb25lCisgICAgICBieXRlIG9mIGRhdGEgd2lsbCBiZSByZXR1cm5lZCAodW5sZXNzIGF0IEVPRikuIFRoZSBleGFjdCBudW1iZXIgb2YgYnl0ZXMKKyAgICAgIHJldHVybmVkIGlzIHVuc3BlY2lmaWVkLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIFN1cHBvcnQgZm9yIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSA6bWV0aDpgZmlsZW5vYCwgOm1ldGg6YHJlYWRhYmxlYCwgOm1ldGg6YHNlZWthYmxlYCwgOm1ldGg6YHdyaXRhYmxlYCwKKyAgICAgIDptZXRoOmByZWFkMWAgYW5kIDptZXRoOmByZWFkaW50b2AgbWV0aG9kcyB3ZXJlIGFkZGVkLgogCi0gICAuLiBub3RlOjoKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBTdXBwb3J0IHdhcyBhZGRlZCBmb3IgKmZpbGVuYW1lKiBiZWluZyBhIDp0ZXJtOmBmaWxlIG9iamVjdGAgaW5zdGVhZCBvZiBhbgorICAgICAgYWN0dWFsIGZpbGVuYW1lLgogCi0gICAgICBUaGlzIGNsYXNzIGRvZXMgbm90IHN1cHBvcnQgaW5wdXQgZmlsZXMgY29udGFpbmluZyBtdWx0aXBsZSBzdHJlYW1zIChzdWNoCi0gICAgICBhcyB0aG9zZSBwcm9kdWNlZCBieSB0aGUgOnByb2dyYW06YHBiemlwMmAgdG9vbCkuIFdoZW4gcmVhZGluZyBzdWNoIGFuCi0gICAgICBpbnB1dCBmaWxlLCBvbmx5IHRoZSBmaXJzdCBzdHJlYW0gd2lsbCBiZSBhY2Nlc3NpYmxlLiBJZiB5b3UgcmVxdWlyZQotICAgICAgc3VwcG9ydCBmb3IgbXVsdGktc3RyZWFtIGZpbGVzLCBjb25zaWRlciB1c2luZyB0aGUgdGhpcmQtcGFydHkKLSAgICAgIDptb2Q6YGJ6MmZpbGVgIG1vZHVsZSAoYXZhaWxhYmxlIGZyb20KLSAgICAgIGBQeVBJIDxodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvYnoyZmlsZT5gXykuIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEKLSAgICAgIGJhY2twb3J0IG9mIFB5dGhvbiAzLjMncyA6Y2xhc3M6YEJaMkZpbGVgIGNsYXNzLCB3aGljaCBkb2VzIHN1cHBvcnQKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgYGAnYSdgYCAoYXBwZW5kKSBtb2RlIHdhcyBhZGRlZCwgYWxvbmcgd2l0aCBzdXBwb3J0IGZvciByZWFkaW5nCiAgICAgICBtdWx0aS1zdHJlYW0gZmlsZXMuCiAKIAotICAgLi4gbWV0aG9kOjogY2xvc2UoKQotCi0gICAgICBDbG9zZSB0aGUgZmlsZS4gU2V0cyBkYXRhIGF0dHJpYnV0ZSA6YXR0cjpgY2xvc2VkYCB0byB0cnVlLiBBIGNsb3NlZCBmaWxlCi0gICAgICBjYW5ub3QgYmUgdXNlZCBmb3IgZnVydGhlciBJL08gb3BlcmF0aW9ucy4gOm1ldGg6YGNsb3NlYCBtYXkgYmUgY2FsbGVkCi0gICAgICBtb3JlIHRoYW4gb25jZSB3aXRob3V0IGVycm9yLgotCi0KLSAgIC4uIG1ldGhvZDo6IHJlYWQoW3NpemVdKQotCi0gICAgICBSZWFkIGF0IG1vc3QgKnNpemUqIHVuY29tcHJlc3NlZCBieXRlcywgcmV0dXJuZWQgYXMgYSBieXRlIHN0cmluZy4gSWYgdGhlCi0gICAgICAqc2l6ZSogYXJndW1lbnQgaXMgbmVnYXRpdmUgb3Igb21pdHRlZCwgcmVhZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4KLQotCi0gICAuLiBtZXRob2Q6OiByZWFkbGluZShbc2l6ZV0pCi0KLSAgICAgIFJldHVybiB0aGUgbmV4dCBsaW5lIGZyb20gdGhlIGZpbGUsIGFzIGEgYnl0ZSBzdHJpbmcsIHJldGFpbmluZyBuZXdsaW5lLgotICAgICAgQSBub24tbmVnYXRpdmUgKnNpemUqIGFyZ3VtZW50IGxpbWl0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8KLSAgICAgIHJldHVybiAoYW4gaW5jb21wbGV0ZSBsaW5lIG1heSBiZSByZXR1cm5lZCB0aGVuKS4gUmV0dXJuIGFuIGVtcHR5IGJ5dGUKLSAgICAgIHN0cmluZyBhdCBFT0YuCi0KLQotICAgLi4gbWV0aG9kOjogcmVhZGxpbmVzKFtzaXplXSkKLQotICAgICAgUmV0dXJuIGEgbGlzdCBvZiBsaW5lcyByZWFkLiBUaGUgb3B0aW9uYWwgKnNpemUqIGFyZ3VtZW50LCBpZiBnaXZlbiwgaXMgYW4KLSAgICAgIGFwcHJveGltYXRlIGJvdW5kIG9uIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGxpbmVzIHJldHVybmVkLgotCi0KLSAgIC4uIG1ldGhvZDo6IHNlZWsob2Zmc2V0Wywgd2hlbmNlXSkKLQotICAgICAgTW92ZSB0byBuZXcgZmlsZSBwb3NpdGlvbi4gQXJndW1lbnQgKm9mZnNldCogaXMgYSBieXRlIGNvdW50LiBPcHRpb25hbAotICAgICAgYXJndW1lbnQgKndoZW5jZSogZGVmYXVsdHMgdG8gYGBvcy5TRUVLX1NFVGBgIG9yIGBgMGBgIChvZmZzZXQgZnJvbSBzdGFydAotICAgICAgb2YgZmlsZTsgb2Zmc2V0IHNob3VsZCBiZSBgYD49IDBgYCk7IG90aGVyIHZhbHVlcyBhcmUgYGBvcy5TRUVLX0NVUmBgIG9yCi0gICAgICBgYDFgYCAobW92ZSByZWxhdGl2ZSB0byBjdXJyZW50IHBvc2l0aW9uOyBvZmZzZXQgY2FuIGJlIHBvc2l0aXZlIG9yCi0gICAgICBuZWdhdGl2ZSksIGFuZCBgYG9zLlNFRUtfRU5EYGAgb3IgYGAyYGAgKG1vdmUgcmVsYXRpdmUgdG8gZW5kIG9mIGZpbGU7Ci0gICAgICBvZmZzZXQgaXMgdXN1YWxseSBuZWdhdGl2ZSwgYWx0aG91Z2ggbWFueSBwbGF0Zm9ybXMgYWxsb3cgc2Vla2luZyBiZXlvbmQKLSAgICAgIHRoZSBlbmQgb2YgYSBmaWxlKS4KLQotICAgICAgTm90ZSB0aGF0IHNlZWtpbmcgb2YgYnoyIGZpbGVzIGlzIGVtdWxhdGVkLCBhbmQgZGVwZW5kaW5nIG9uIHRoZQotICAgICAgcGFyYW1ldGVycyB0aGUgb3BlcmF0aW9uIG1heSBiZSBleHRyZW1lbHkgc2xvdy4KLQotCi0gICAuLiBtZXRob2Q6OiB0ZWxsKCkKLQotICAgICAgUmV0dXJuIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24sIGFuIGludGVnZXIuCi0KLQotICAgLi4gbWV0aG9kOjogd3JpdGUoZGF0YSkKLQotICAgICAgV3JpdGUgdGhlIGJ5dGUgc3RyaW5nICpkYXRhKiB0byBmaWxlLiBOb3RlIHRoYXQgZHVlIHRvIGJ1ZmZlcmluZywKLSAgICAgIDptZXRoOmBjbG9zZWAgbWF5IGJlIG5lZWRlZCBiZWZvcmUgdGhlIGZpbGUgb24gZGlzayByZWZsZWN0cyB0aGUgZGF0YQotICAgICAgd3JpdHRlbi4KLQotCi0gICAuLiBtZXRob2Q6OiB3cml0ZWxpbmVzKHNlcXVlbmNlX29mX2J5dGVfc3RyaW5ncykKLQotICAgICAgV3JpdGUgdGhlIHNlcXVlbmNlIG9mIGJ5dGUgc3RyaW5ncyB0byB0aGUgZmlsZS4gTm90ZSB0aGF0IG5ld2xpbmVzIGFyZSBub3QKLSAgICAgIGFkZGVkLiBUaGUgc2VxdWVuY2UgY2FuIGJlIGFueSBpdGVyYWJsZSBvYmplY3QgcHJvZHVjaW5nIGJ5dGUgc3RyaW5ncy4KLSAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIHdyaXRlKCkgZm9yIGVhY2ggYnl0ZSBzdHJpbmcuCi0KLQotU2VxdWVudGlhbCAoZGUpY29tcHJlc3Npb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVNlcXVlbnRpYWwgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gaXMgZG9uZSB1c2luZyB0aGUgY2xhc3NlcwotOmNsYXNzOmBCWjJDb21wcmVzc29yYCBhbmQgOmNsYXNzOmBCWjJEZWNvbXByZXNzb3JgLgotCitJbmNyZW1lbnRhbCAoZGUpY29tcHJlc3Npb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBjbGFzczo6IEJaMkNvbXByZXNzb3IoY29tcHJlc3NsZXZlbD05KQogCiAgICBDcmVhdGUgYSBuZXcgY29tcHJlc3NvciBvYmplY3QuIFRoaXMgb2JqZWN0IG1heSBiZSB1c2VkIHRvIGNvbXByZXNzIGRhdGEKLSAgIHNlcXVlbnRpYWxseS4gSWYgeW91IHdhbnQgdG8gY29tcHJlc3MgZGF0YSBpbiBvbmUgc2hvdCwgdXNlIHRoZQotICAgOmZ1bmM6YGNvbXByZXNzYCBmdW5jdGlvbiBpbnN0ZWFkLiBUaGUgKmNvbXByZXNzbGV2ZWwqIHBhcmFtZXRlciwgaWYgZ2l2ZW4sCi0gICBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gYGAxYGAgYW5kIGBgOWBgOyB0aGUgZGVmYXVsdCBpcyBgYDlgYC4KKyAgIGluY3JlbWVudGFsbHkuIEZvciBvbmUtc2hvdCBjb21wcmVzc2lvbiwgdXNlIHRoZSA6ZnVuYzpgY29tcHJlc3NgIGZ1bmN0aW9uCisgICBpbnN0ZWFkLgorCisgICAqY29tcHJlc3NsZXZlbCosIGlmIGdpdmVuLCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gYGAxYGAgYW5kIGBgOWBgLiBUaGUKKyAgIGRlZmF1bHQgaXMgYGA5YGAuCiAKICAgIC4uIG1ldGhvZDo6IGNvbXByZXNzKGRhdGEpCiAKLSAgICAgIFByb3ZpZGUgbW9yZSBkYXRhIHRvIHRoZSBjb21wcmVzc29yIG9iamVjdC4gSXQgd2lsbCByZXR1cm4gY2h1bmtzIG9mCi0gICAgICBjb21wcmVzc2VkIGRhdGEgd2hlbmV2ZXIgcG9zc2libGUuIFdoZW4geW91J3ZlIGZpbmlzaGVkIHByb3ZpZGluZyBkYXRhIHRvCi0gICAgICBjb21wcmVzcywgY2FsbCB0aGUgOm1ldGg6YGZsdXNoYCBtZXRob2QgdG8gZmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLAotICAgICAgYW5kIHJldHVybiB3aGF0IGlzIGxlZnQgaW4gaW50ZXJuYWwgYnVmZmVycy4KKyAgICAgIFByb3ZpZGUgZGF0YSB0byB0aGUgY29tcHJlc3NvciBvYmplY3QuIFJldHVybnMgYSBjaHVuayBvZiBjb21wcmVzc2VkIGRhdGEKKyAgICAgIGlmIHBvc3NpYmxlLCBvciBhbiBlbXB0eSBieXRlIHN0cmluZyBvdGhlcndpc2UuCisKKyAgICAgIFdoZW4geW91IGhhdmUgZmluaXNoZWQgcHJvdmlkaW5nIGRhdGEgdG8gdGhlIGNvbXByZXNzb3IsIGNhbGwgdGhlCisgICAgICA6bWV0aDpgZmx1c2hgIG1ldGhvZCB0byBmaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MuCiAKIAogICAgLi4gbWV0aG9kOjogZmx1c2goKQogCi0gICAgICBGaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MgYW5kIHJldHVybiB3aGF0IGlzIGxlZnQgaW4gaW50ZXJuYWwKLSAgICAgIGJ1ZmZlcnMuIFlvdSBtdXN0IG5vdCB1c2UgdGhlIGNvbXByZXNzb3Igb2JqZWN0IGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QuCisgICAgICBGaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MuIFJldHVybnMgdGhlIGNvbXByZXNzZWQgZGF0YSBsZWZ0IGluCisgICAgICBpbnRlcm5hbCBidWZmZXJzLgorCisgICAgICBUaGUgY29tcHJlc3NvciBvYmplY3QgbWF5IG5vdCBiZSB1c2VkIGFmdGVyIHRoaXMgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZC4KIAogCiAuLiBjbGFzczo6IEJaMkRlY29tcHJlc3NvcigpCiAKICAgIENyZWF0ZSBhIG5ldyBkZWNvbXByZXNzb3Igb2JqZWN0LiBUaGlzIG9iamVjdCBtYXkgYmUgdXNlZCB0byBkZWNvbXByZXNzIGRhdGEKLSAgIHNlcXVlbnRpYWxseS4gSWYgeW91IHdhbnQgdG8gZGVjb21wcmVzcyBkYXRhIGluIG9uZSBzaG90LCB1c2UgdGhlCi0gICA6ZnVuYzpgZGVjb21wcmVzc2AgZnVuY3Rpb24gaW5zdGVhZC4KKyAgIGluY3JlbWVudGFsbHkuIEZvciBvbmUtc2hvdCBjb21wcmVzc2lvbiwgdXNlIHRoZSA6ZnVuYzpgZGVjb21wcmVzc2AgZnVuY3Rpb24KKyAgIGluc3RlYWQuCisKKyAgIC4uIG5vdGU6OgorICAgICAgVGhpcyBjbGFzcyBkb2VzIG5vdCB0cmFuc3BhcmVudGx5IGhhbmRsZSBpbnB1dHMgY29udGFpbmluZyBtdWx0aXBsZQorICAgICAgY29tcHJlc3NlZCBzdHJlYW1zLCB1bmxpa2UgOmZ1bmM6YGRlY29tcHJlc3NgIGFuZCA6Y2xhc3M6YEJaMkZpbGVgLiBJZgorICAgICAgeW91IG5lZWQgdG8gZGVjb21wcmVzcyBhIG11bHRpLXN0cmVhbSBpbnB1dCB3aXRoIDpjbGFzczpgQloyRGVjb21wcmVzc29yYCwKKyAgICAgIHlvdSBtdXN0IHVzZSBhIG5ldyBkZWNvbXByZXNzb3IgZm9yIGVhY2ggc3RyZWFtLgogCiAgICAuLiBtZXRob2Q6OiBkZWNvbXByZXNzKGRhdGEpCiAKLSAgICAgIFByb3ZpZGUgbW9yZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LiBJdCB3aWxsIHJldHVybiBjaHVua3Mgb2YKLSAgICAgIGRlY29tcHJlc3NlZCBkYXRhIHdoZW5ldmVyIHBvc3NpYmxlLiBJZiB5b3UgdHJ5IHRvIGRlY29tcHJlc3MgZGF0YSBhZnRlcgotICAgICAgdGhlIGVuZCBvZiBzdHJlYW0gaXMgZm91bmQsIDpleGM6YEVPRkVycm9yYCB3aWxsIGJlIHJhaXNlZC4gSWYgYW55IGRhdGEKLSAgICAgIHdhcyBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHN0cmVhbSwgaXQnbGwgYmUgaWdub3JlZCBhbmQgc2F2ZWQgaW4KLSAgICAgIDphdHRyOmB1bnVzZWRfZGF0YWAgYXR0cmlidXRlLgorICAgICAgUHJvdmlkZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LiBSZXR1cm5zIGEgY2h1bmsgb2YgZGVjb21wcmVzc2VkCisgICAgICBkYXRhIGlmIHBvc3NpYmxlLCBvciBhbiBlbXB0eSBieXRlIHN0cmluZyBvdGhlcndpc2UuCisKKyAgICAgIEF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3RyZWFtIGlzCisgICAgICByZWFjaGVkIHJhaXNlcyBhbiA6ZXhjOmBFT0ZFcnJvcmAuIElmIGFueSBkYXRhIGlzIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YKKyAgICAgIHRoZSBzdHJlYW0sIGl0IGlzIGlnbm9yZWQgYW5kIHNhdmVkIGluIHRoZSA6YXR0cjpgdW51c2VkX2RhdGFgIGF0dHJpYnV0ZS4KKworCisgICAuLiBhdHRyaWJ1dGU6OiBlb2YKKworICAgICAgVHJ1ZSBpZiB0aGUgZW5kLW9mLXN0cmVhbSBtYXJrZXIgaGFzIGJlZW4gcmVhY2hlZC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworICAgLi4gYXR0cmlidXRlOjogdW51c2VkX2RhdGEKKworICAgICAgRGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBjb21wcmVzc2VkIHN0cmVhbS4KKworICAgICAgSWYgdGhpcyBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSBoYXMgYmVlbgorICAgICAgcmVhY2hlZCwgaXRzIHZhbHVlIHdpbGwgYmUgYGBiJydgYC4KIAogCiBPbmUtc2hvdCAoZGUpY29tcHJlc3Npb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1PbmUtc2hvdCBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiBpcyBwcm92aWRlZCB0aHJvdWdoIHRoZSA6ZnVuYzpgY29tcHJlc3NgCi1hbmQgOmZ1bmM6YGRlY29tcHJlc3NgIGZ1bmN0aW9ucy4KLQotCiAuLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGEsIGNvbXByZXNzbGV2ZWw9OSkKIAotICAgQ29tcHJlc3MgKmRhdGEqIGluIG9uZSBzaG90LiBJZiB5b3Ugd2FudCB0byBjb21wcmVzcyBkYXRhIHNlcXVlbnRpYWxseSwgdXNlCi0gICBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YEJaMkNvbXByZXNzb3JgIGluc3RlYWQuIFRoZSAqY29tcHJlc3NsZXZlbCogcGFyYW1ldGVyLAotICAgaWYgZ2l2ZW4sIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBgYDFgYCBhbmQgYGA5YGA7IHRoZSBkZWZhdWx0IGlzIGBgOWBgLgorICAgQ29tcHJlc3MgKmRhdGEqLgorCisgICAqY29tcHJlc3NsZXZlbCosIGlmIGdpdmVuLCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gYGAxYGAgYW5kIGBgOWBgLiBUaGUKKyAgIGRlZmF1bHQgaXMgYGA5YGAuCisKKyAgIEZvciBpbmNyZW1lbnRhbCBjb21wcmVzc2lvbiwgdXNlIGEgOmNsYXNzOmBCWjJDb21wcmVzc29yYCBpbnN0ZWFkLgogCiAKIC4uIGZ1bmN0aW9uOjogZGVjb21wcmVzcyhkYXRhKQogCi0gICBEZWNvbXByZXNzICpkYXRhKiBpbiBvbmUgc2hvdC4gSWYgeW91IHdhbnQgdG8gZGVjb21wcmVzcyBkYXRhIHNlcXVlbnRpYWxseSwKLSAgIHVzZSBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YEJaMkRlY29tcHJlc3NvcmAgaW5zdGVhZC4KKyAgIERlY29tcHJlc3MgKmRhdGEqLgorCisgICBJZiAqZGF0YSogaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgbXVsdGlwbGUgY29tcHJlc3NlZCBzdHJlYW1zLCBkZWNvbXByZXNzCisgICBhbGwgb2YgdGhlIHN0cmVhbXMuCisKKyAgIEZvciBpbmNyZW1lbnRhbCBkZWNvbXByZXNzaW9uLCB1c2UgYSA6Y2xhc3M6YEJaMkRlY29tcHJlc3NvcmAgaW5zdGVhZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgZm9yIG11bHRpLXN0cmVhbSBpbnB1dHMgd2FzIGFkZGVkLgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jaHVuay5yc3QgYi9Eb2MvbGlicmFyeS9jaHVuay5yc3QKaW5kZXggZDM1NThhNC4uYzFiYTQ5NyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY2h1bmsucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NodW5rLnJzdApAQCAtODQsOCArODQsOSBAQAogICAgICAgQ2xvc2UgYW5kIHNraXAgdG8gdGhlIGVuZCBvZiB0aGUgY2h1bmsuICBUaGlzIGRvZXMgbm90IGNsb3NlIHRoZQogICAgICAgdW5kZXJseWluZyBmaWxlLgogCi0gICBUaGUgcmVtYWluaW5nIG1ldGhvZHMgd2lsbCByYWlzZSA6ZXhjOmBJT0Vycm9yYCBpZiBjYWxsZWQgYWZ0ZXIgdGhlCi0gICA6bWV0aDpgY2xvc2VgIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQuCisgICBUaGUgcmVtYWluaW5nIG1ldGhvZHMgd2lsbCByYWlzZSA6ZXhjOmBPU0Vycm9yYCBpZiBjYWxsZWQgYWZ0ZXIgdGhlCisgICA6bWV0aDpgY2xvc2VgIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQuICBCZWZvcmUgUHl0aG9uIDMuMywgdGhleSB1c2VkIHRvCisgICByYWlzZSA6ZXhjOmBJT0Vycm9yYCwgbm93IGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKICAgIC4uIG1ldGhvZDo6IGlzYXR0eSgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jbWQucnN0IGIvRG9jL2xpYnJhcnkvY21kLnJzdAppbmRleCA5NDNjMDRhLi45NzIyOTI4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jbWQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NtZC5yc3QKQEAgLTI4NSw4ICsyODUsOCBAQAogICAgICAgICBkZWYgZG9fcGxheWJhY2soc2VsZiwgYXJnKToKICAgICAgICAgICAgICdQbGF5YmFjayBjb21tYW5kcyBmcm9tIGEgZmlsZTogIFBMQVlCQUNLIHJvc2UuY21kJwogICAgICAgICAgICAgc2VsZi5jbG9zZSgpCi0gICAgICAgICAgICBjbWRzID0gb3BlbihhcmcpLnJlYWQoKS5zcGxpdGxpbmVzKCkKLSAgICAgICAgICAgIHNlbGYuY21kcXVldWUuZXh0ZW5kKGNtZHMpCisgICAgICAgICAgICB3aXRoIG9wZW4oYXJnKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuY21kcXVldWUuZXh0ZW5kKGYucmVhZCgpLnNwbGl0bGluZXMoKSkKICAgICAgICAgZGVmIHByZWNtZChzZWxmLCBsaW5lKToKICAgICAgICAgICAgIGxpbmUgPSBsaW5lLmxvd2VyKCkKICAgICAgICAgICAgIGlmIHNlbGYuZmlsZSBhbmQgJ3BsYXliYWNrJyBub3QgaW4gbGluZToKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QgYi9Eb2MvbGlicmFyeS9jb2RlY3MucnN0CmluZGV4IDc2MmJiOTguLjI4ZWE4OWQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29kZWNzLnJzdApAQCAtMTU1LDEzICsxNTUsMTYgQEAKICAgIHdoZW4gKm5hbWUqIGlzIHNwZWNpZmllZCBhcyB0aGUgZXJyb3JzIHBhcmFtZXRlci4KIAogICAgRm9yIGVuY29kaW5nICplcnJvcl9oYW5kbGVyKiB3aWxsIGJlIGNhbGxlZCB3aXRoIGEgOmV4YzpgVW5pY29kZUVuY29kZUVycm9yYAotICAgaW5zdGFuY2UsIHdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBsb2NhdGlvbiBvZiB0aGUgZXJyb3IuIFRoZSBlcnJvcgotICAgaGFuZGxlciBtdXN0IGVpdGhlciByYWlzZSB0aGlzIG9yIGEgZGlmZmVyZW50IGV4Y2VwdGlvbiBvciByZXR1cm4gYSB0dXBsZSB3aXRoIGEKLSAgIHJlcGxhY2VtZW50IGZvciB0aGUgdW5lbmNvZGFibGUgcGFydCBvZiB0aGUgaW5wdXQgYW5kIGEgcG9zaXRpb24gd2hlcmUgZW5jb2RpbmcKLSAgIHNob3VsZCBjb250aW51ZS4gVGhlIGVuY29kZXIgd2lsbCBlbmNvZGUgdGhlIHJlcGxhY2VtZW50IGFuZCBjb250aW51ZSBlbmNvZGluZwotICAgdGhlIG9yaWdpbmFsIGlucHV0IGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uIE5lZ2F0aXZlIHBvc2l0aW9uIHZhbHVlcyB3aWxsIGJlCi0gICB0cmVhdGVkIGFzIGJlaW5nIHJlbGF0aXZlIHRvIHRoZSBlbmQgb2YgdGhlIGlucHV0IHN0cmluZy4gSWYgdGhlIHJlc3VsdGluZwotICAgcG9zaXRpb24gaXMgb3V0IG9mIGJvdW5kIGFuIDpleGM6YEluZGV4RXJyb3JgIHdpbGwgYmUgcmFpc2VkLgorICAgaW5zdGFuY2UsIHdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBsb2NhdGlvbiBvZiB0aGUgZXJyb3IuIFRoZQorICAgZXJyb3IgaGFuZGxlciBtdXN0IGVpdGhlciByYWlzZSB0aGlzIG9yIGEgZGlmZmVyZW50IGV4Y2VwdGlvbiBvciByZXR1cm4gYQorICAgdHVwbGUgd2l0aCBhIHJlcGxhY2VtZW50IGZvciB0aGUgdW5lbmNvZGFibGUgcGFydCBvZiB0aGUgaW5wdXQgYW5kIGEgcG9zaXRpb24KKyAgIHdoZXJlIGVuY29kaW5nIHNob3VsZCBjb250aW51ZS4gVGhlIHJlcGxhY2VtZW50IG1heSBiZSBlaXRoZXIgOmNsYXNzOmBzdHJgIG9yCisgICA6Y2xhc3M6YGJ5dGVzYC4gIElmIHRoZSByZXBsYWNlbWVudCBpcyBieXRlcywgdGhlIGVuY29kZXIgd2lsbCBzaW1wbHkgY29weQorICAgdGhlbSBpbnRvIHRoZSBvdXRwdXQgYnVmZmVyLiBJZiB0aGUgcmVwbGFjZW1lbnQgaXMgYSBzdHJpbmcsIHRoZSBlbmNvZGVyIHdpbGwKKyAgIGVuY29kZSB0aGUgcmVwbGFjZW1lbnQuICBFbmNvZGluZyBjb250aW51ZXMgb24gb3JpZ2luYWwgaW5wdXQgYXQgdGhlCisgICBzcGVjaWZpZWQgcG9zaXRpb24uIE5lZ2F0aXZlIHBvc2l0aW9uIHZhbHVlcyB3aWxsIGJlIHRyZWF0ZWQgYXMgYmVpbmcKKyAgIHJlbGF0aXZlIHRvIHRoZSBlbmQgb2YgdGhlIGlucHV0IHN0cmluZy4gSWYgdGhlIHJlc3VsdGluZyBwb3NpdGlvbiBpcyBvdXQgb2YKKyAgIGJvdW5kIGFuIDpleGM6YEluZGV4RXJyb3JgIHdpbGwgYmUgcmFpc2VkLgogCiAgICBEZWNvZGluZyBhbmQgdHJhbnNsYXRpbmcgd29ya3Mgc2ltaWxhciwgZXhjZXB0IDpleGM6YFVuaWNvZGVEZWNvZGVFcnJvcmAgb3IKICAgIDpleGM6YFVuaWNvZGVUcmFuc2xhdGVFcnJvcmAgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGhhbmRsZXIgYW5kIHRoYXQgdGhlCkBAIC00NTgsNyArNDYxLDggQEAKIAogICAgLi4gbWV0aG9kOjogcmVzZXQoKQogCi0gICAgICBSZXNldCB0aGUgZW5jb2RlciB0byB0aGUgaW5pdGlhbCBzdGF0ZS4KKyAgICAgIFJlc2V0IHRoZSBlbmNvZGVyIHRvIHRoZSBpbml0aWFsIHN0YXRlLiBUaGUgb3V0cHV0IGlzIGRpc2NhcmRlZDogY2FsbAorICAgICAgYGAuZW5jb2RlKCcnLCBmaW5hbD1UcnVlKWBgIHRvIHJlc2V0IHRoZSBlbmNvZGVyIGFuZCB0byBnZXQgdGhlIG91dHB1dC4KIAogCiAuLiBtZXRob2Q6OiBJbmNyZW1lbnRhbEVuY29kZXIuZ2V0c3RhdGUoKQpAQCAtNzg2LDExICs3OTAsOSBAQAogRW5jb2RpbmdzIGFuZCBVbmljb2RlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotU3RyaW5ncyBhcmUgc3RvcmVkIGludGVybmFsbHkgYXMgc2VxdWVuY2VzIG9mIGNvZGVwb2ludHMgKHRvIGJlIHByZWNpc2UKLWFzIDpjOnR5cGU6YFB5X1VOSUNPREVgIGFycmF5cykuIERlcGVuZGluZyBvbiB0aGUgd2F5IFB5dGhvbiBpcyBjb21waWxlZCAoZWl0aGVyCi12aWEgYGAtLXdpdGhvdXQtd2lkZS11bmljb2RlYGAgb3IgYGAtLXdpdGgtd2lkZS11bmljb2RlYGAsIHdpdGggdGhlCi1mb3JtZXIgYmVpbmcgdGhlIGRlZmF1bHQpIDpjOnR5cGU6YFB5X1VOSUNPREVgIGlzIGVpdGhlciBhIDE2LWJpdCBvciAzMi1iaXQgZGF0YQotdHlwZS4gT25jZSBhIHN0cmluZyBvYmplY3QgaXMgdXNlZCBvdXRzaWRlIG9mIENQVSBhbmQgbWVtb3J5LCBDUFUgZW5kaWFubmVzcworU3RyaW5ncyBhcmUgc3RvcmVkIGludGVybmFsbHkgYXMgc2VxdWVuY2VzIG9mIGNvZGVwb2ludHMgaW4gcmFuZ2UgYGAwIC0gMTBGRkZGYGAKKyhzZWUgOnBlcDpgMzkzYCBmb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSBpbXBsZW1lbnRhdGlvbikuCitPbmNlIGEgc3RyaW5nIG9iamVjdCBpcyB1c2VkIG91dHNpZGUgb2YgQ1BVIGFuZCBtZW1vcnksIENQVSBlbmRpYW5uZXNzCiBhbmQgaG93IHRoZXNlIGFycmF5cyBhcmUgc3RvcmVkIGFzIGJ5dGVzIGJlY29tZSBhbiBpc3N1ZS4gIFRyYW5zZm9ybWluZyBhCiBzdHJpbmcgb2JqZWN0IGludG8gYSBzZXF1ZW5jZSBvZiBieXRlcyBpcyBjYWxsZWQgZW5jb2RpbmcgYW5kIHJlY3JlYXRpbmcgdGhlCiBzdHJpbmcgb2JqZWN0IGZyb20gdGhlIHNlcXVlbmNlIG9mIGJ5dGVzIGlzIGtub3duIGFzIGRlY29kaW5nLiAgVGhlcmUgYXJlIG1hbnkKQEAgLTkwMSw2ICs5MDMsMTUgQEAKIGNhc2Ugb3IgdXNlIGEgaHlwaGVuIGluc3RlYWQgb2YgYW4gdW5kZXJzY29yZSBhcmUgYWxzbyB2YWxpZCBhbGlhc2VzOyB0aGVyZWZvcmUsCiBlLmcuIGBgJ3V0Zi04J2BgIGlzIGEgdmFsaWQgYWxpYXMgZm9yIHRoZSBgYCd1dGZfOCdgYCBjb2RlYy4KIAorLi4gaW1wbC1kZXRhaWw6OgorCisgICBTb21lIGNvbW1vbiBlbmNvZGluZ3MgY2FuIGJ5cGFzcyB0aGUgY29kZWNzIGxvb2t1cCBtYWNoaW5lcnkgdG8KKyAgIGltcHJvdmUgcGVyZm9ybWFuY2UuICBUaGVzZSBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcyBhcmUgb25seQorICAgcmVjb2duaXplZCBieSBDUHl0aG9uIGZvciBhIGxpbWl0ZWQgc2V0IG9mIGFsaWFzZXM6IHV0Zi04LCB1dGY4LAorICAgbGF0aW4tMSwgbGF0aW4xLCBpc28tODg1OS0xLCBtYmNzIChXaW5kb3dzIG9ubHkpLCBhc2NpaSwgdXRmLTE2LAorICAgYW5kIHV0Zi0zMi4gIFVzaW5nIGFsdGVybmF0aXZlIHNwZWxsaW5ncyBmb3IgdGhlc2UgZW5jb2RpbmdzIG1heQorICAgcmVzdWx0IGluIHNsb3dlciBleGVjdXRpb24uCisKIE1hbnkgb2YgdGhlIGNoYXJhY3RlciBzZXRzIHN1cHBvcnQgdGhlIHNhbWUgbGFuZ3VhZ2VzLiBUaGV5IHZhcnkgaW4gaW5kaXZpZHVhbAogY2hhcmFjdGVycyAoZS5nLiB3aGV0aGVyIHRoZSBFVVJPIFNJR04gaXMgc3VwcG9ydGVkIG9yIG5vdCksIGFuZCBpbiB0aGUKIGFzc2lnbm1lbnQgb2YgY2hhcmFjdGVycyB0byBjb2RlIHBvc2l0aW9ucy4gRm9yIHRoZSBFdXJvcGVhbiBsYW5ndWFnZXMgaW4KQEAgLTEwMDMsNiArMTAxNCwxMSBAQAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBjcDEyNTggICAgICAgICAgfCB3aW5kb3dzLTEyNTggICAgICAgICAgICAgICAgICAgfCBWaWV0bmFtZXNlICAgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBjcDY1MDAxICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBXaW5kb3dzIG9ubHk6IFdpbmRvd3MgVVRGLTggICAgfAorfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoYGBDUF9VVEY4YGApICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBldWNfanAgICAgICAgICAgfCBldWNqcCwgdWppcywgdS1qaXMgICAgICAgICAgICAgfCBKYXBhbmVzZSAgICAgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBldWNfamlzXzIwMDQgICAgfCBqaXN4MDIxMywgZXVjamlzMjAwNCAgICAgICAgICAgfCBKYXBhbmVzZSAgICAgICAgICAgICAgICAgICAgICAgfApAQCAtMTE2MCw2ICsxMTc2LDggQEAKIHwgdW5pY29kZV9pbnRlcm5hbCAgIHwgICAgICAgICB8IFJldHVybiB0aGUgaW50ZXJuYWwgICAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgcmVwcmVzZW50YXRpb24gb2YgdGhlICAgICB8CiB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBvcGVyYW5kICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgLi4gZGVwcmVjYXRlZDo6IDMuMyAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogVGhlIGZvbGxvd2luZyBjb2RlY3MgcHJvdmlkZSBieXRlcy10by1ieXRlcyBtYXBwaW5ncy4KQEAgLTEyNzIsMTIgKzEyOTAsMTMgQEAKIC4uIG1vZHVsZTo6IGVuY29kaW5ncy5tYmNzCiAgICA6c3lub3BzaXM6IFdpbmRvd3MgQU5TSSBjb2RlcGFnZQogCi1FbmNvZGUgb3BlcmFuZCBhY2NvcmRpbmcgdG8gdGhlIEFOU0kgY29kZXBhZ2UgKENQX0FDUCkuIFRoaXMgY29kZWMgb25seQotc3VwcG9ydHMgYGAnc3RyaWN0J2BgIGFuZCBgYCdyZXBsYWNlJ2BgIGVycm9yIGhhbmRsZXJzIHRvIGVuY29kZSwgYW5kCi1gYCdzdHJpY3QnYGAgYW5kIGBgJ2lnbm9yZSdgYCBlcnJvciBoYW5kbGVycyB0byBkZWNvZGUuCitFbmNvZGUgb3BlcmFuZCBhY2NvcmRpbmcgdG8gdGhlIEFOU0kgY29kZXBhZ2UgKENQX0FDUCkuCiAKIEF2YWlsYWJpbGl0eTogV2luZG93cyBvbmx5LgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgU3VwcG9ydCBhbnkgZXJyb3IgaGFuZGxlci4KKwogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgIEJlZm9yZSAzLjIsIHRoZSAqZXJyb3JzKiBhcmd1bWVudCB3YXMgaWdub3JlZDsgYGAncmVwbGFjZSdgYCB3YXMgYWx3YXlzIHVzZWQKICAgIHRvIGVuY29kZSwgYW5kIGBgJ2lnbm9yZSdgYCB0byBkZWNvZGUuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0IGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NThlYjk4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdApAQCAtMCwwICsxLDE4MiBAQAorOm1vZDpgY29sbGVjdGlvbnMuYWJjYCAtLS0gQWJzdHJhY3QgQmFzZSBDbGFzc2VzIGZvciBDb250YWluZXJzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogY29sbGVjdGlvbnMuYWJjCisgICA6c3lub3BzaXM6IEFic3RyYWN0IGJhc2UgY2xhc3NlcyBmb3IgY29udGFpbmVycworLi4gbW9kdWxlYXV0aG9yOjogUmF5bW9uZCBIZXR0aW5nZXIgPHB5dGhvbiBhdCByY24uY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IFJheW1vbmQgSGV0dGluZ2VyIDxweXRob24gYXQgcmNuLmNvbT4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICBGb3JtZXJseSwgdGhpcyBtb2R1bGUgd2FzIHBhcnQgb2YgdGhlIDptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUuCisKKy4uIHRlc3RzZXR1cDo6ICoKKworICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgKgorICAgaW1wb3J0IGl0ZXJ0b29scworICAgX19uYW1lX18gPSAnPGRvY3Rlc3Q+JworCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9jb2xsZWN0aW9ucy9hYmMucHlgCisKKy0tLS0tLS0tLS0tLS0tCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIDp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgPGFic3RyYWN0IGJhc2UgY2xhc3M+YCB0aGF0CitjYW4gYmUgdXNlZCB0byB0ZXN0IHdoZXRoZXIgYSBjbGFzcyBwcm92aWRlcyBhIHBhcnRpY3VsYXIgaW50ZXJmYWNlOyBmb3IKK2V4YW1wbGUsIHdoZXRoZXIgaXQgaXMgaGFzaGFibGUgb3Igd2hldGhlciBpdCBpcyBhIG1hcHBpbmcuCisKKworLi4gX2NvbGxlY3Rpb25zLWFic3RyYWN0LWJhc2UtY2xhc3NlczoKKworQ29sbGVjdGlvbnMgQWJzdHJhY3QgQmFzZSBDbGFzc2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGNvbGxlY3Rpb25zIG1vZHVsZSBvZmZlcnMgdGhlIGZvbGxvd2luZyA6dGVybTpgQUJDcyA8YWJzdHJhY3QgYmFzZSBjbGFzcz5gOgorCis9PT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0FCQyAgICAgICAgICAgICAgICAgICAgICAgIEluaGVyaXRzIGZyb20gICAgICAgICAgQWJzdHJhY3QgTWV0aG9kcyAgICAgICAgTWl4aW4gTWV0aG9kcworPT09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis6Y2xhc3M6YENvbnRhaW5lcmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jb250YWluc19fYGAKKzpjbGFzczpgSGFzaGFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2hhc2hfX2BgCis6Y2xhc3M6YEl0ZXJhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYAorOmNsYXNzOmBJdGVyYXRvcmAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAgICAgICBgYF9fbmV4dF9fYGAgICAgICAgICAgICBgYF9faXRlcl9fYGAKKzpjbGFzczpgU2l6ZWRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAKKzpjbGFzczpgQ2FsbGFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NhbGxfX2BgCisKKzpjbGFzczpgU2VxdWVuY2VgICAgICAgICAgIDpjbGFzczpgU2l6ZWRgLCAgICAgICAgYGBfX2dldGl0ZW1fX2BgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBfX2l0ZXJfX2BgLCBgYF9fcmV2ZXJzZWRfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGluZGV4YGAsIGFuZCBgYGNvdW50YGAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29udGFpbmVyYAorCis6Y2xhc3M6YE11dGFibGVTZXF1ZW5jZWAgICA6Y2xhc3M6YFNlcXVlbmNlYCAgICAgIGBgX19zZXRpdGVtX19gYCwgICAgICAgIEluaGVyaXRlZCA6Y2xhc3M6YFNlcXVlbmNlYCBtZXRob2RzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fZGVsaXRlbV9fYGAsICAgICAgICBgYGFwcGVuZGBgLCBgYHJldmVyc2VgYCwgYGBleHRlbmRgYCwgYGBwb3BgYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBpbnNlcnRgYCAgICAgICAgICAgICAgYGByZW1vdmVgYCwgYGBjbGVhcmBgLCBhbmQgYGBfX2lhZGRfX2BgCisKKzpjbGFzczpgU2V0YCAgICAgICAgICAgICAgIDpjbGFzczpgU2l6ZWRgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlX19gYCwgYGBfX2x0X19gYCwgYGBfX2VxX19gYCwgYGBfX25lX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2d0X19gYCwgYGBfX2dlX19gYCwgYGBfX2FuZF9fYGAsIGBgX19vcl9fYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19zdWJfX2BgLCBgYF9feG9yX19gYCwgYW5kIGBgaXNkaXNqb2ludGBgCisKKzpjbGFzczpgTXV0YWJsZVNldGAgICAgICAgIDpjbGFzczpgU2V0YCAgICAgICAgICAgYGBhZGRgYCwgICAgICAgICAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgU2V0YCBtZXRob2RzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGRpc2NhcmRgYCAgICAgICAgICAgICBgYGNsZWFyYGAsIGBgcG9wYGAsIGBgcmVtb3ZlYGAsIGBgX19pb3JfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faWFuZF9fYGAsIGBgX19peG9yX19gYCwgYW5kIGBgX19pc3ViX19gYAorCis6Y2xhc3M6YE1hcHBpbmdgICAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19nZXRpdGVtX19gYCAgICAgICAgIGBgX19jb250YWluc19fYGAsIGBga2V5c2BgLCBgYGl0ZW1zYGAsIGBgdmFsdWVzYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgZ2V0YGAsIGBgX19lcV9fYGAsIGFuZCBgYF9fbmVfX2BgCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAKKworOmNsYXNzOmBNdXRhYmxlTWFwcGluZ2AgICAgOmNsYXNzOmBNYXBwaW5nYCAgICAgICBgYF9fc2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBNYXBwaW5nYCBtZXRob2RzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fZGVsaXRlbV9fYGAgICAgICAgICBgYHBvcGBgLCBgYHBvcGl0ZW1gYCwgYGBjbGVhcmBgLCBgYHVwZGF0ZWBgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYGBzZXRkZWZhdWx0YGAKKworCis6Y2xhc3M6YE1hcHBpbmdWaWV3YCAgICAgICA6Y2xhc3M6YFNpemVkYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZW5fX2BgCis6Y2xhc3M6YEl0ZW1zVmlld2AgICAgICAgICA6Y2xhc3M6YE1hcHBpbmdWaWV3YCwgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jb250YWluc19fYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YFNldGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYAorOmNsYXNzOmBLZXlzVmlld2AgICAgICAgICAgOmNsYXNzOmBNYXBwaW5nVmlld2AsICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKKzpjbGFzczpgVmFsdWVzVmlld2AgICAgICAgIDpjbGFzczpgTWFwcGluZ1ZpZXdgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBfX2l0ZXJfX2BgCis9PT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCisuLiBjbGFzczo6IENvbnRhaW5lcgorICAgICAgICAgICBIYXNoYWJsZQorICAgICAgICAgICBTaXplZAorICAgICAgICAgICBDYWxsYWJsZQorCisgICBBQkNzIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSByZXNwZWN0aXZlbHkgdGhlIG1ldGhvZHMgOm1ldGg6YF9fY29udGFpbnNfX2AsCisgICA6bWV0aDpgX19oYXNoX19gLCA6bWV0aDpgX19sZW5fX2AsIGFuZCA6bWV0aDpgX19jYWxsX19gLgorCisuLiBjbGFzczo6IEl0ZXJhYmxlCisKKyAgIEFCQyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgdGhlIDptZXRoOmBfX2l0ZXJfX2AgbWV0aG9kLgorICAgU2VlIGFsc28gdGhlIGRlZmluaXRpb24gb2YgOnRlcm06YGl0ZXJhYmxlYC4KKworLi4gY2xhc3M6OiBJdGVyYXRvcgorCisgICBBQkMgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIHRoZSA6bWV0aDpgX19pdGVyX19gIGFuZCA6bWV0aDpgX19uZXh0X19gIG1ldGhvZHMuCisgICBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZiA6dGVybTpgaXRlcmF0b3JgLgorCisuLiBjbGFzczo6IFNlcXVlbmNlCisgICAgICAgICAgIE11dGFibGVTZXF1ZW5jZQorCisgICBBQkNzIGZvciByZWFkLW9ubHkgYW5kIG11dGFibGUgOnRlcm06YHNlcXVlbmNlcyA8c2VxdWVuY2U+YC4KKworLi4gY2xhc3M6OiBTZXQKKyAgICAgICAgICAgTXV0YWJsZVNldAorCisgICBBQkNzIGZvciByZWFkLW9ubHkgYW5kIG11dGFibGUgc2V0cy4KKworLi4gY2xhc3M6OiBNYXBwaW5nCisgICAgICAgICAgIE11dGFibGVNYXBwaW5nCisKKyAgIEFCQ3MgZm9yIHJlYWQtb25seSBhbmQgbXV0YWJsZSA6dGVybTpgbWFwcGluZ3MgPG1hcHBpbmc+YC4KKworLi4gY2xhc3M6OiBNYXBwaW5nVmlldworICAgICAgICAgICBJdGVtc1ZpZXcKKyAgICAgICAgICAgS2V5c1ZpZXcKKyAgICAgICAgICAgVmFsdWVzVmlldworCisgICBBQkNzIGZvciBtYXBwaW5nLCBpdGVtcywga2V5cywgYW5kIHZhbHVlcyA6dGVybTpgdmlld3MgPHZpZXc+YC4KKworCitUaGVzZSBBQkNzIGFsbG93IHVzIHRvIGFzayBjbGFzc2VzIG9yIGluc3RhbmNlcyBpZiB0aGV5IHByb3ZpZGUKK3BhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eSwgZm9yIGV4YW1wbGU6OgorCisgICAgc2l6ZSA9IE5vbmUKKyAgICBpZiBpc2luc3RhbmNlKG15dmFyLCBjb2xsZWN0aW9ucy5TaXplZCk6CisgICAgICAgIHNpemUgPSBsZW4obXl2YXIpCisKK1NldmVyYWwgb2YgdGhlIEFCQ3MgYXJlIGFsc28gdXNlZnVsIGFzIG1peGlucyB0aGF0IG1ha2UgaXQgZWFzaWVyIHRvIGRldmVsb3AKK2NsYXNzZXMgc3VwcG9ydGluZyBjb250YWluZXIgQVBJcy4gIEZvciBleGFtcGxlLCB0byB3cml0ZSBhIGNsYXNzIHN1cHBvcnRpbmcKK3RoZSBmdWxsIDpjbGFzczpgU2V0YCBBUEksIGl0IG9ubHkgbmVjZXNzYXJ5IHRvIHN1cHBseSB0aGUgdGhyZWUgdW5kZXJseWluZworYWJzdHJhY3QgbWV0aG9kczogOm1ldGg6YF9fY29udGFpbnNfX2AsIDptZXRoOmBfX2l0ZXJfX2AsIGFuZCA6bWV0aDpgX19sZW5fX2AuCitUaGUgQUJDIHN1cHBsaWVzIHRoZSByZW1haW5pbmcgbWV0aG9kcyBzdWNoIGFzIDptZXRoOmBfX2FuZF9fYCBhbmQKKzptZXRoOmBpc2Rpc2pvaW50YCA6OgorCisgICAgY2xhc3MgTGlzdEJhc2VkU2V0KGNvbGxlY3Rpb25zLlNldCk6CisgICAgICAgICAnJycgQWx0ZXJuYXRlIHNldCBpbXBsZW1lbnRhdGlvbiBmYXZvcmluZyBzcGFjZSBvdmVyIHNwZWVkCisgICAgICAgICAgICAgYW5kIG5vdCByZXF1aXJpbmcgdGhlIHNldCBlbGVtZW50cyB0byBiZSBoYXNoYWJsZS4gJycnCisgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlcmFibGUpOgorICAgICAgICAgICAgIHNlbGYuZWxlbWVudHMgPSBsc3QgPSBbXQorICAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBpdGVyYWJsZToKKyAgICAgICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIGxzdDoKKyAgICAgICAgICAgICAgICAgICAgIGxzdC5hcHBlbmQodmFsdWUpCisgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5lbGVtZW50cykKKyAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgIHJldHVybiB2YWx1ZSBpbiBzZWxmLmVsZW1lbnRzCisgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICByZXR1cm4gbGVuKHNlbGYuZWxlbWVudHMpCisKKyAgICBzMSA9IExpc3RCYXNlZFNldCgnYWJjZGVmJykKKyAgICBzMiA9IExpc3RCYXNlZFNldCgnZGVmZ2hpJykKKyAgICBvdmVybGFwID0gczEgJiBzMiAgICAgICAgICAgICMgVGhlIF9fYW5kX18oKSBtZXRob2QgaXMgc3VwcG9ydGVkIGF1dG9tYXRpY2FsbHkKKworTm90ZXMgb24gdXNpbmcgOmNsYXNzOmBTZXRgIGFuZCA6Y2xhc3M6YE11dGFibGVTZXRgIGFzIGEgbWl4aW46CisKKygxKQorICAgU2luY2Ugc29tZSBzZXQgb3BlcmF0aW9ucyBjcmVhdGUgbmV3IHNldHMsIHRoZSBkZWZhdWx0IG1peGluIG1ldGhvZHMgbmVlZAorICAgYSB3YXkgdG8gY3JlYXRlIG5ldyBpbnN0YW5jZXMgZnJvbSBhbiBpdGVyYWJsZS4gVGhlIGNsYXNzIGNvbnN0cnVjdG9yIGlzCisgICBhc3N1bWVkIHRvIGhhdmUgYSBzaWduYXR1cmUgaW4gdGhlIGZvcm0gYGBDbGFzc05hbWUoaXRlcmFibGUpYGAuCisgICBUaGF0IGFzc3VtcHRpb24gaXMgZmFjdG9yZWQtb3V0IHRvIGFuIGludGVybmFsIGNsYXNzbWV0aG9kIGNhbGxlZAorICAgOm1ldGg6YF9mcm9tX2l0ZXJhYmxlYCB3aGljaCBjYWxscyBgYGNscyhpdGVyYWJsZSlgYCB0byBwcm9kdWNlIGEgbmV3IHNldC4KKyAgIElmIHRoZSA6Y2xhc3M6YFNldGAgbWl4aW4gaXMgYmVpbmcgdXNlZCBpbiBhIGNsYXNzIHdpdGggYSBkaWZmZXJlbnQKKyAgIGNvbnN0cnVjdG9yIHNpZ25hdHVyZSwgeW91IHdpbGwgbmVlZCB0byBvdmVycmlkZSA6bWV0aDpgX2Zyb21faXRlcmFibGVgCisgICB3aXRoIGEgY2xhc3NtZXRob2QgdGhhdCBjYW4gY29uc3RydWN0IG5ldyBpbnN0YW5jZXMgZnJvbQorICAgYW4gaXRlcmFibGUgYXJndW1lbnQuCisKKygyKQorICAgVG8gb3ZlcnJpZGUgdGhlIGNvbXBhcmlzb25zIChwcmVzdW1hYmx5IGZvciBzcGVlZCwgYXMgdGhlCisgICBzZW1hbnRpY3MgYXJlIGZpeGVkKSwgcmVkZWZpbmUgOm1ldGg6YF9fbGVfX2AgYW5kCisgICB0aGVuIHRoZSBvdGhlciBvcGVyYXRpb25zIHdpbGwgYXV0b21hdGljYWxseSBmb2xsb3cgc3VpdC4KKworKDMpCisgICBUaGUgOmNsYXNzOmBTZXRgIG1peGluIHByb3ZpZGVzIGEgOm1ldGg6YF9oYXNoYCBtZXRob2QgdG8gY29tcHV0ZSBhIGhhc2ggdmFsdWUKKyAgIGZvciB0aGUgc2V0OyBob3dldmVyLCA6bWV0aDpgX19oYXNoX19gIGlzIG5vdCBkZWZpbmVkIGJlY2F1c2Ugbm90IGFsbCBzZXRzCisgICBhcmUgaGFzaGFibGUgb3IgaW1tdXRhYmxlLiAgVG8gYWRkIHNldCBoYXNoYWJpbHR5IHVzaW5nIG1peGlucywKKyAgIGluaGVyaXQgZnJvbSBib3RoIDptZXRoOmBTZXRgIGFuZCA6bWV0aDpgSGFzaGFibGVgLCB0aGVuIGRlZmluZQorICAgYGBfX2hhc2hfXyA9IFNldC5faGFzaGBgLgorCisuLiBzZWVhbHNvOjoKKworICAgKiBgT3JkZXJlZFNldCByZWNpcGUgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NjY5NC8+YF8gZm9yIGFuCisgICAgIGV4YW1wbGUgYnVpbHQgb24gOmNsYXNzOmBNdXRhYmxlU2V0YC4KKworICAgKiBGb3IgbW9yZSBhYm91dCBBQkNzLCBzZWUgdGhlIDptb2Q6YGFiY2AgbW9kdWxlIGFuZCA6cGVwOmAzMTE5YC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdCBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdAppbmRleCA3YTI4MDJkLi5hNjVmZTViIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0CkBAIC0yLDE3ICsyLDE3IEBACiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLi4gbW9kdWxlOjogY29sbGVjdGlvbnMKLSAgIDpzeW5vcHNpczogQ29udGFpbmVyIGRhdGF0eXBlcworICAgIDpzeW5vcHNpczogQ29udGFpbmVyIGRhdGF0eXBlcwogLi4gbW9kdWxlYXV0aG9yOjogUmF5bW9uZCBIZXR0aW5nZXIgPHB5dGhvbkByY24uY29tPgogLi4gc2VjdGlvbmF1dGhvcjo6IFJheW1vbmQgSGV0dGluZ2VyIDxweXRob25AcmNuLmNvbT4KIAogLi4gdGVzdHNldHVwOjogKgogCi0gICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCAqCi0gICBpbXBvcnQgaXRlcnRvb2xzCi0gICBfX25hbWVfXyA9ICc8ZG9jdGVzdD4nCisgICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgKgorICAgIGltcG9ydCBpdGVydG9vbHMKKyAgICBfX25hbWVfXyA9ICc8ZG9jdGVzdD4nCiAKLSoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2NvbGxlY3Rpb25zLnB5YCBhbmQgOnNvdXJjZTpgTGliL19hYmNvbGwucHlgCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weWAKIAogLS0tLS0tLS0tLS0tLS0KIApAQCAtMjMsNiArMjMsNyBAQAogPT09PT09PT09PT09PT09PT09PT09ICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDpmdW5jOmBuYW1lZHR1cGxlYCAgICAgIGZhY3RvcnkgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIHR1cGxlIHN1YmNsYXNzZXMgd2l0aCBuYW1lZCBmaWVsZHMKIDpjbGFzczpgZGVxdWVgICAgICAgICAgIGxpc3QtbGlrZSBjb250YWluZXIgd2l0aCBmYXN0IGFwcGVuZHMgYW5kIHBvcHMgb24gZWl0aGVyIGVuZAorOmNsYXNzOmBDaGFpbk1hcGAgICAgICAgZGljdC1saWtlIGNsYXNzIGZvciBjcmVhdGluZyBhIHNpbmdsZSB2aWV3IG9mIG11bHRpcGxlIG1hcHBpbmdzCiA6Y2xhc3M6YENvdW50ZXJgICAgICAgICBkaWN0IHN1YmNsYXNzIGZvciBjb3VudGluZyBoYXNoYWJsZSBvYmplY3RzCiA6Y2xhc3M6YE9yZGVyZWREaWN0YCAgICBkaWN0IHN1YmNsYXNzIHRoYXQgcmVtZW1iZXJzIHRoZSBvcmRlciBlbnRyaWVzIHdlcmUgYWRkZWQKIDpjbGFzczpgZGVmYXVsdGRpY3RgICAgIGRpY3Qgc3ViY2xhc3MgdGhhdCBjYWxscyBhIGZhY3RvcnkgZnVuY3Rpb24gdG8gc3VwcGx5IG1pc3NpbmcgdmFsdWVzCkBAIC0zMSwxMCArMzIsMTY3IEBACiA6Y2xhc3M6YFVzZXJTdHJpbmdgICAgICB3cmFwcGVyIGFyb3VuZCBzdHJpbmcgb2JqZWN0cyBmb3IgZWFzaWVyIHN0cmluZyBzdWJjbGFzc2luZwogPT09PT09PT09PT09PT09PT09PT09ICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotSW4gYWRkaXRpb24gdG8gdGhlIGNvbmNyZXRlIGNvbnRhaW5lciBjbGFzc2VzLCB0aGUgY29sbGVjdGlvbnMgbW9kdWxlIHByb3ZpZGVzCi06cmVmOmBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgPGNvbGxlY3Rpb25zLWFic3RyYWN0LWJhc2UtY2xhc3Nlcz5gIHRoYXQgY2FuIGJlCi11c2VkIHRvIHRlc3Qgd2hldGhlciBhIGNsYXNzIHByb3ZpZGVzIGEgcGFydGljdWxhciBpbnRlcmZhY2UsIGZvciBleGFtcGxlLAotd2hldGhlciBpdCBpcyBoYXNoYWJsZSBvciBhIG1hcHBpbmcuCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgIE1vdmVkIDpyZWY6YGNvbGxlY3Rpb25zLWFic3RyYWN0LWJhc2UtY2xhc3Nlc2AgdG8gdGhlIDptb2Q6YGNvbGxlY3Rpb25zLmFiY2AgbW9kdWxlLgorICAgIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgdGhleSBjb250aW51ZSB0byBiZSB2aXNpYmxlIGluIHRoaXMgbW9kdWxlCisgICAgYXMgd2VsbC4KKworCis6Y2xhc3M6YENoYWluTWFwYCBvYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCitBIDpjbGFzczpgQ2hhaW5NYXBgIGNsYXNzIGlzIHByb3ZpZGVkIGZvciBxdWlja2x5IGxpbmtpbmcgYSBudW1iZXIgb2YgbWFwcGluZ3MKK3NvIHRoZXkgY2FuIGJlIHRyZWF0ZWQgYXMgYSBzaW5nbGUgdW5pdC4gIEl0IGlzIG9mdGVuIG11Y2ggZmFzdGVyIHRoYW4gY3JlYXRpbmcKK2EgbmV3IGRpY3Rpb25hcnkgYW5kIHJ1bm5pbmcgbXVsdGlwbGUgOm1ldGg6YH5kaWN0LnVwZGF0ZWAgY2FsbHMuCisKK1RoZSBjbGFzcyBjYW4gYmUgdXNlZCB0byBzaW11bGF0ZSBuZXN0ZWQgc2NvcGVzIGFuZCBpcyB1c2VmdWwgaW4gdGVtcGxhdGluZy4KKworLi4gY2xhc3M6OiBDaGFpbk1hcCgqbWFwcykKKworICAgIEEgOmNsYXNzOmBDaGFpbk1hcGAgZ3JvdXBzIG11bHRpcGxlIGRpY3RzIG9yIG90aGVyIG1hcHBpbmdzIHRvZ2V0aGVyIHRvCisgICAgY3JlYXRlIGEgc2luZ2xlLCB1cGRhdGVhYmxlIHZpZXcuICBJZiBubyAqbWFwcyogYXJlIHNwZWNpZmllZCwgYSBzaW5nbGUgZW1wdHkKKyAgICBkaWN0aW9uYXJ5IGlzIHByb3ZpZGVkIHNvIHRoYXQgYSBuZXcgY2hhaW4gYWx3YXlzIGhhcyBhdCBsZWFzdCBvbmUgbWFwcGluZy4KKworICAgIFRoZSB1bmRlcmx5aW5nIG1hcHBpbmdzIGFyZSBzdG9yZWQgaW4gYSBsaXN0LiAgVGhhdCBsaXN0IGlzIHB1YmxpYyBhbmQgY2FuCisgICAgYWNjZXNzZWQgb3IgdXBkYXRlZCB1c2luZyB0aGUgKm1hcHMqIGF0dHJpYnV0ZS4gIFRoZXJlIGlzIG5vIG90aGVyIHN0YXRlLgorCisgICAgTG9va3VwcyBzZWFyY2ggdGhlIHVuZGVybHlpbmcgbWFwcGluZ3Mgc3VjY2Vzc2l2ZWx5IHVudGlsIGEga2V5IGlzIGZvdW5kLiAgSW4KKyAgICBjb250cmFzdCwgd3JpdGVzLCB1cGRhdGVzLCBhbmQgZGVsZXRpb25zIG9ubHkgb3BlcmF0ZSBvbiB0aGUgZmlyc3QgbWFwcGluZy4KKworICAgIEEgOmNsYXNzOmBDaGFpbk1hcGAgaW5jb3Jwb3JhdGVzIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmdzIGJ5IHJlZmVyZW5jZS4gIFNvLCBpZgorICAgIG9uZSBvZiB0aGUgdW5kZXJseWluZyBtYXBwaW5ncyBnZXRzIHVwZGF0ZWQsIHRob3NlIGNoYW5nZXMgd2lsbCBiZSByZWZsZWN0ZWQKKyAgICBpbiA6Y2xhc3M6YENoYWluTWFwYC4KKworICAgIEFsbCBvZiB0aGUgdXN1YWwgZGljdGlvbmFyeSBtZXRob2RzIGFyZSBzdXBwb3J0ZWQuICBJbiBhZGRpdGlvbiwgdGhlcmUgaXMgYQorICAgICptYXBzKiBhdHRyaWJ1dGUsIGEgbWV0aG9kIGZvciBjcmVhdGluZyBuZXcgc3ViY29udGV4dHMsIGFuZCBhIHByb3BlcnR5IGZvcgorICAgIGFjY2Vzc2luZyBhbGwgYnV0IHRoZSBmaXJzdCBtYXBwaW5nOgorCisgICAgLi4gYXR0cmlidXRlOjogbWFwcworCisgICAgICAgIEEgdXNlciB1cGRhdGVhYmxlIGxpc3Qgb2YgbWFwcGluZ3MuICBUaGUgbGlzdCBpcyBvcmRlcmVkIGZyb20KKyAgICAgICAgZmlyc3Qtc2VhcmNoZWQgdG8gbGFzdC1zZWFyY2hlZC4gIEl0IGlzIHRoZSBvbmx5IHN0b3JlZCBzdGF0ZSBhbmQgY2FuCisgICAgICAgIGJlIG1vZGlmaWVkIHRvIGNoYW5nZSB3aGljaCBtYXBwaW5ncyBhcmUgc2VhcmNoZWQuICBUaGUgbGlzdCBzaG91bGQKKyAgICAgICAgYWx3YXlzIGNvbnRhaW4gYXQgbGVhc3Qgb25lIG1hcHBpbmcuCisKKyAgICAuLiBtZXRob2Q6OiBuZXdfY2hpbGQoKQorCisgICAgICAgIFJldHVybnMgYSBuZXcgOmNsYXNzOmBDaGFpbk1hcGAgY29udGFpbmluZyBhIG5ldyA6Y2xhc3M6YGRpY3RgIGZvbGxvd2VkIGJ5CisgICAgICAgIGFsbCBvZiB0aGUgbWFwcyBpbiB0aGUgY3VycmVudCBpbnN0YW5jZS4gIEEgY2FsbCB0byBgYGQubmV3X2NoaWxkKClgYCBpcworICAgICAgICBlcXVpdmFsZW50IHRvOiBgYENoYWluTWFwKHt9LCAqZC5tYXBzKWBgLiAgVGhpcyBtZXRob2QgaXMgdXNlZCBmb3IKKyAgICAgICAgY3JlYXRpbmcgc3ViY29udGV4dHMgdGhhdCBjYW4gYmUgdXBkYXRlZCB3aXRob3V0IGFsdGVyaW5nIHZhbHVlcyBpbiBhbnkKKyAgICAgICAgb2YgdGhlIHBhcmVudCBtYXBwaW5ncy4KKworICAgIC4uIGF0dHJpYnV0ZTo6IHBhcmVudHMKKworICAgICAgICBQcm9wZXJ0eSByZXR1cm5pbmcgYSBuZXcgOmNsYXNzOmBDaGFpbk1hcGAgY29udGFpbmluZyBhbGwgb2YgdGhlIG1hcHMgaW4KKyAgICAgICAgdGhlIGN1cnJlbnQgaW5zdGFuY2UgZXhjZXB0IHRoZSBmaXJzdCBvbmUuICBUaGlzIGlzIHVzZWZ1bCBmb3Igc2tpcHBpbmcKKyAgICAgICAgdGhlIGZpcnN0IG1hcCBpbiB0aGUgc2VhcmNoLiAgVXNlIGNhc2VzIGFyZSBzaW1pbGFyIHRvIHRob3NlIGZvciB0aGUKKyAgICAgICAgOmtleXdvcmQ6YG5vbmxvY2FsYCBrZXl3b3JkIHVzZWQgaW4gOnRlcm06YG5lc3RlZCBzY29wZXMgPG5lc3RlZAorICAgICAgICBzY29wZT5gLiAgVGhlIHVzZSBjYXNlcyBhbHNvIHBhcmFsbGVsIHRob3NlIGZvciB0aGUgYnVpbHQtaW4KKyAgICAgICAgOmZ1bmM6YHN1cGVyYCBmdW5jdGlvbi4gIEEgcmVmZXJlbmNlIHRvIGBgZC5wYXJlbnRzYGAgaXMgZXF1aXZhbGVudCB0bzoKKyAgICAgICAgYGBDaGFpbk1hcCgqZC5tYXBzWzE6XSlgYC4KKworCisuLiBzZWVhbHNvOjoKKworICAgICogVGhlIGBNdWx0aUNvbnRleHQgY2xhc3MKKyAgICAgIDxodHRwczovL2dpdGh1Yi5jb20vZW50aG91Z2h0L2NvZGV0b29scy9ibG9iLzQuMC4wL2NvZGV0b29scy9jb250ZXh0cy9tdWx0aV9jb250ZXh0LnB5PmBfCisgICAgICBpbiB0aGUgRW50aG91Z2h0IGBDb2RlVG9vbHMgcGFja2FnZQorICAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9lbnRob3VnaHQvY29kZXRvb2xzPmBfIGhhcyBvcHRpb25zIHRvIHN1cHBvcnQKKyAgICAgIHdyaXRpbmcgdG8gYW55IG1hcHBpbmcgaW4gdGhlIGNoYWluLgorCisgICAgKiBEamFuZ28ncyBgQ29udGV4dCBjbGFzcworICAgICAgPGh0dHA6Ly9jb2RlLmRqYW5nb3Byb2plY3QuY29tL2Jyb3dzZXIvZGphbmdvL3RydW5rL2RqYW5nby90ZW1wbGF0ZS9jb250ZXh0LnB5PmBfCisgICAgICBmb3IgdGVtcGxhdGluZyBpcyBhIHJlYWQtb25seSBjaGFpbiBvZiBtYXBwaW5ncy4gIEl0IGFsc28gZmVhdHVyZXMKKyAgICAgIHB1c2hpbmcgYW5kIHBvcHBpbmcgb2YgY29udGV4dHMgc2ltaWxhciB0byB0aGUKKyAgICAgIDptZXRoOmB+Y29sbGVjdGlvbnMuQ2hhaW5NYXAubmV3X2NoaWxkYCBtZXRob2QgYW5kIHRoZQorICAgICAgOm1ldGg6YH5jb2xsZWN0aW9ucy5DaGFpbk1hcC5wYXJlbnRzYCBwcm9wZXJ0eS4KKworICAgICogVGhlIGBOZXN0ZWQgQ29udGV4dHMgcmVjaXBlCisgICAgICA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTc3NDM0Lz5gXyBoYXMgb3B0aW9ucyB0byBjb250cm9sCisgICAgICB3aGV0aGVyIHdyaXRlcyBhbmQgb3RoZXIgbXV0YXRpb25zIGFwcGx5IG9ubHkgdG8gdGhlIGZpcnN0IG1hcHBpbmcgb3IgdG8KKyAgICAgIGFueSBtYXBwaW5nIGluIHRoZSBjaGFpbi4KKworICAgICogQSBgZ3JlYXRseSBzaW1wbGlmaWVkIHJlYWQtb25seSB2ZXJzaW9uIG9mIENoYWlubWFwCisgICAgICA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvMzA1MjY4Lz5gXy4KKworCis6Y2xhc3M6YENoYWluTWFwYCBFeGFtcGxlcyBhbmQgUmVjaXBlcworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVGhpcyBzZWN0aW9uIHNob3dzIHZhcmlvdXMgYXBwcm9hY2hlcyB0byB3b3JraW5nIHdpdGggY2hhaW5lZCBtYXBzLgorCisKK0V4YW1wbGUgb2Ygc2ltdWxhdGluZyBQeXRob24ncyBpbnRlcm5hbCBsb29rdXAgY2hhaW46OgorCisgICAgICAgIGltcG9ydCBidWlsdGlucworICAgICAgICBweWxvb2t1cCA9IENoYWluTWFwKGxvY2FscygpLCBnbG9iYWxzKCksIHZhcnMoYnVpbHRpbnMpKQorCitFeGFtcGxlIG9mIGxldHRpbmcgdXNlciBzcGVjaWZpZWQgY29tbWFuZC1saW5lIGFyZ3VtZW50cyB0YWtlIHByZWNlZGVuY2Ugb3ZlcgorZW52aXJvbm1lbnQgdmFyaWFibGVzIHdoaWNoIGluIHR1cm4gdGFrZSBwcmVjZWRlbmNlIG92ZXIgZGVmYXVsdCB2YWx1ZXM6OgorCisgICAgICAgIGltcG9ydCBvcywgYXJncGFyc2UKKworICAgICAgICBkZWZhdWx0cyA9IHsnY29sb3InOiAncmVkJywgJ3VzZXInOiAnZ3Vlc3QnfQorCisgICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXUnLCAnLS11c2VyJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWMnLCAnLS1jb2xvcicpCisgICAgICAgIG5hbWVzcGFjZSA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICAgICAgY29tbWFuZF9saW5lX2FyZ3MgPSB7azp2IGZvciBrLCB2IGluIHZhcnMobmFtZXNwYWNlKS5pdGVtcygpIGlmIHZ9CisKKyAgICAgICAgY29tYmluZWQgPSBDaGFpbk1hcChjb21tYW5kX2xpbmVfYXJncywgb3MuZW52aXJvbiwgZGVmYXVsdHMpCisgICAgICAgIHByaW50KGNvbWJpbmVkWydjb2xvciddKQorICAgICAgICBwcmludChjb21iaW5lZFsndXNlciddKQorCitFeGFtcGxlIHBhdHRlcm5zIGZvciB1c2luZyB0aGUgOmNsYXNzOmBDaGFpbk1hcGAgY2xhc3MgdG8gc2ltdWxhdGUgbmVzdGVkCitjb250ZXh0czo6CisKKyAgICAgICAgYyA9IENoYWluTWFwKCkgICAgICAgICMgQ3JlYXRlIHJvb3QgY29udGV4dAorICAgICAgICBkID0gYy5uZXdfY2hpbGQoKSAgICAgIyBDcmVhdGUgbmVzdGVkIGNoaWxkIGNvbnRleHQKKyAgICAgICAgZSA9IGMubmV3X2NoaWxkKCkgICAgICMgQ2hpbGQgb2YgYywgaW5kZXBlbmRlbnQgZnJvbSBkCisgICAgICAgIGUubWFwc1swXSAgICAgICAgICAgICAjIEN1cnJlbnQgY29udGV4dCBkaWN0aW9uYXJ5IC0tIGxpa2UgUHl0aG9uJ3MgbG9jYWxzKCkKKyAgICAgICAgZS5tYXBzWy0xXSAgICAgICAgICAgICMgUm9vdCBjb250ZXh0IC0tIGxpa2UgUHl0aG9uJ3MgZ2xvYmFscygpCisgICAgICAgIGUucGFyZW50cyAgICAgICAgICAgICAjIEVuY2xvc2luZyBjb250ZXh0IGNoYWluIC0tIGxpa2UgUHl0aG9uJ3Mgbm9ubG9jYWxzCisKKyAgICAgICAgZFsneCddICAgICAgICAgICAgICAgICMgR2V0IGZpcnN0IGtleSBpbiB0aGUgY2hhaW4gb2YgY29udGV4dHMKKyAgICAgICAgZFsneCddID0gMSAgICAgICAgICAgICMgU2V0IHZhbHVlIGluIGN1cnJlbnQgY29udGV4dAorICAgICAgICBkZWwgZFsneCddICAgICAgICAgICAgIyBEZWxldGUgZnJvbSBjdXJyZW50IGNvbnRleHQKKyAgICAgICAgbGlzdChkKSAgICAgICAgICAgICAgICMgQWxsIG5lc3RlZCB2YWx1ZXMKKyAgICAgICAgayBpbiBkICAgICAgICAgICAgICAgICMgQ2hlY2sgYWxsIG5lc3RlZCB2YWx1ZXMKKyAgICAgICAgbGVuKGQpICAgICAgICAgICAgICAgICMgTnVtYmVyIG9mIG5lc3RlZCB2YWx1ZXMKKyAgICAgICAgZC5pdGVtcygpICAgICAgICAgICAgICMgQWxsIG5lc3RlZCBpdGVtcworICAgICAgICBkaWN0KGQpICAgICAgICAgICAgICAgIyBGbGF0dGVuIGludG8gYSByZWd1bGFyIGRpY3Rpb25hcnkKKworVGhlIDpjbGFzczpgQ2hhaW5NYXBgIGNsYXNzIG9ubHkgbWFrZXMgdXBkYXRlcyAod3JpdGVzIGFuZCBkZWxldGlvbnMpIHRvIHRoZQorZmlyc3QgbWFwcGluZyBpbiB0aGUgY2hhaW4gd2hpbGUgbG9va3VwcyB3aWxsIHNlYXJjaCB0aGUgZnVsbCBjaGFpbi4gIEhvd2V2ZXIsCitpZiBkZWVwIHdyaXRlcyBhbmQgZGVsZXRpb25zIGFyZSBkZXNpcmVkLCBpdCBpcyBlYXN5IHRvIG1ha2UgYSBzdWJjbGFzcyB0aGF0Cit1cGRhdGVzIGtleXMgZm91bmQgZGVlcGVyIGluIHRoZSBjaGFpbjo6CisKKyAgICBjbGFzcyBEZWVwQ2hhaW5NYXAoQ2hhaW5NYXApOgorICAgICAgICAnVmFyaWFudCBvZiBDaGFpbk1hcCB0aGF0IGFsbG93cyBkaXJlY3QgdXBkYXRlcyB0byBpbm5lciBzY29wZXMnCisKKyAgICAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgorICAgICAgICAgICAgZm9yIG1hcHBpbmcgaW4gc2VsZi5tYXBzOgorICAgICAgICAgICAgICAgIGlmIGtleSBpbiBtYXBwaW5nOgorICAgICAgICAgICAgICAgICAgICBtYXBwaW5nW2tleV0gPSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHNlbGYubWFwc1swXVtrZXldID0gdmFsdWUKKworICAgICAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgICAgIGZvciBtYXBwaW5nIGluIHNlbGYubWFwczoKKyAgICAgICAgICAgICAgICBpZiBrZXkgaW4gbWFwcGluZzoKKyAgICAgICAgICAgICAgICAgICAgZGVsIG1hcHBpbmdba2V5XQorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKGtleSkKKworICAgID4+PiBkID0gRGVlcENoYWluTWFwKHsnemVicmEnOiAnYmxhY2snfSwgeydlbGVwaGFudCcgOiAnYmx1ZSd9LCB7J2xpb24nIDogJ3llbGxvdyd9KQorICAgID4+PiBkWydsaW9uJ10gPSAnb3JhbmdlJyAgICAgICAgICMgdXBkYXRlIGFuIGV4aXN0aW5nIGtleSB0d28gbGV2ZWxzIGRvd24KKyAgICA+Pj4gZFsnc25ha2UnXSA9ICdyZWQnICAgICAgICAgICAjIG5ldyBrZXlzIGdldCBhZGRlZCB0byB0aGUgdG9wbW9zdCBkaWN0CisgICAgPj4+IGRlbCBkWydlbGVwaGFudCddICAgICAgICAgICAgIyByZW1vdmUgYW4gZXhpc3Rpbmcga2V5IG9uZSBsZXZlbCBkb3duCisgICAgRGVlcENoYWluTWFwKHsnemVicmEnOiAnYmxhY2snLCAnc25ha2UnOiAncmVkJ30sIHt9LCB7J2xpb24nOiAnb3JhbmdlJ30pCiAKIAogOmNsYXNzOmBDb3VudGVyYCBvYmplY3RzCkBAIC01Miw3MSArMjEwLDcxIEBACiAKICAgICA+Pj4gIyBGaW5kIHRoZSB0ZW4gbW9zdCBjb21tb24gd29yZHMgaW4gSGFtbGV0CiAgICAgPj4+IGltcG9ydCByZQotICAgID4+PiB3b3JkcyA9IHJlLmZpbmRhbGwoJ1x3KycsIG9wZW4oJ2hhbWxldC50eHQnKS5yZWFkKCkubG93ZXIoKSkKKyAgICA+Pj4gd29yZHMgPSByZS5maW5kYWxsKHInXHcrJywgb3BlbignaGFtbGV0LnR4dCcpLnJlYWQoKS5sb3dlcigpKQogICAgID4+PiBDb3VudGVyKHdvcmRzKS5tb3N0X2NvbW1vbigxMCkKICAgICBbKCd0aGUnLCAxMTQzKSwgKCdhbmQnLCA5NjYpLCAoJ3RvJywgNzYyKSwgKCdvZicsIDY2OSksICgnaScsIDYzMSksCiAgICAgICgneW91JywgNTU0KSwgICgnYScsIDU0NiksICgnbXknLCA1MTQpLCAoJ2hhbWxldCcsIDQ3MSksICgnaW4nLCA0NTEpXQogCiAuLiBjbGFzczo6IENvdW50ZXIoW2l0ZXJhYmxlLW9yLW1hcHBpbmddKQogCi0gICBBIDpjbGFzczpgQ291bnRlcmAgaXMgYSA6Y2xhc3M6YGRpY3RgIHN1YmNsYXNzIGZvciBjb3VudGluZyBoYXNoYWJsZSBvYmplY3RzLgotICAgSXQgaXMgYW4gdW5vcmRlcmVkIGNvbGxlY3Rpb24gd2hlcmUgZWxlbWVudHMgYXJlIHN0b3JlZCBhcyBkaWN0aW9uYXJ5IGtleXMKLSAgIGFuZCB0aGVpciBjb3VudHMgYXJlIHN0b3JlZCBhcyBkaWN0aW9uYXJ5IHZhbHVlcy4gIENvdW50cyBhcmUgYWxsb3dlZCB0byBiZQotICAgYW55IGludGVnZXIgdmFsdWUgaW5jbHVkaW5nIHplcm8gb3IgbmVnYXRpdmUgY291bnRzLiAgVGhlIDpjbGFzczpgQ291bnRlcmAKLSAgIGNsYXNzIGlzIHNpbWlsYXIgdG8gYmFncyBvciBtdWx0aXNldHMgaW4gb3RoZXIgbGFuZ3VhZ2VzLgorICAgIEEgOmNsYXNzOmBDb3VudGVyYCBpcyBhIDpjbGFzczpgZGljdGAgc3ViY2xhc3MgZm9yIGNvdW50aW5nIGhhc2hhYmxlIG9iamVjdHMuCisgICAgSXQgaXMgYW4gdW5vcmRlcmVkIGNvbGxlY3Rpb24gd2hlcmUgZWxlbWVudHMgYXJlIHN0b3JlZCBhcyBkaWN0aW9uYXJ5IGtleXMKKyAgICBhbmQgdGhlaXIgY291bnRzIGFyZSBzdG9yZWQgYXMgZGljdGlvbmFyeSB2YWx1ZXMuICBDb3VudHMgYXJlIGFsbG93ZWQgdG8gYmUKKyAgICBhbnkgaW50ZWdlciB2YWx1ZSBpbmNsdWRpbmcgemVybyBvciBuZWdhdGl2ZSBjb3VudHMuICBUaGUgOmNsYXNzOmBDb3VudGVyYAorICAgIGNsYXNzIGlzIHNpbWlsYXIgdG8gYmFncyBvciBtdWx0aXNldHMgaW4gb3RoZXIgbGFuZ3VhZ2VzLgogCi0gICBFbGVtZW50cyBhcmUgY291bnRlZCBmcm9tIGFuICppdGVyYWJsZSogb3IgaW5pdGlhbGl6ZWQgZnJvbSBhbm90aGVyCi0gICAqbWFwcGluZyogKG9yIGNvdW50ZXIpOgorICAgIEVsZW1lbnRzIGFyZSBjb3VudGVkIGZyb20gYW4gKml0ZXJhYmxlKiBvciBpbml0aWFsaXplZCBmcm9tIGFub3RoZXIKKyAgICAqbWFwcGluZyogKG9yIGNvdW50ZXIpOgogCiAgICAgICAgID4+PiBjID0gQ291bnRlcigpICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhIG5ldywgZW1wdHkgY291bnRlcgogICAgICAgICA+Pj4gYyA9IENvdW50ZXIoJ2dhbGxhaGFkJykgICAgICAgICAgICAgICAgICMgYSBuZXcgY291bnRlciBmcm9tIGFuIGl0ZXJhYmxlCiAgICAgICAgID4+PiBjID0gQ291bnRlcih7J3JlZCc6IDQsICdibHVlJzogMn0pICAgICAgIyBhIG5ldyBjb3VudGVyIGZyb20gYSBtYXBwaW5nCiAgICAgICAgID4+PiBjID0gQ291bnRlcihjYXRzPTQsIGRvZ3M9OCkgICAgICAgICAgICAgIyBhIG5ldyBjb3VudGVyIGZyb20ga2V5d29yZCBhcmdzCiAKLSAgIENvdW50ZXIgb2JqZWN0cyBoYXZlIGEgZGljdGlvbmFyeSBpbnRlcmZhY2UgZXhjZXB0IHRoYXQgdGhleSByZXR1cm4gYSB6ZXJvCi0gICBjb3VudCBmb3IgbWlzc2luZyBpdGVtcyBpbnN0ZWFkIG9mIHJhaXNpbmcgYSA6ZXhjOmBLZXlFcnJvcmA6CisgICAgQ291bnRlciBvYmplY3RzIGhhdmUgYSBkaWN0aW9uYXJ5IGludGVyZmFjZSBleGNlcHQgdGhhdCB0aGV5IHJldHVybiBhIHplcm8KKyAgICBjb3VudCBmb3IgbWlzc2luZyBpdGVtcyBpbnN0ZWFkIG9mIHJhaXNpbmcgYSA6ZXhjOmBLZXlFcnJvcmA6CiAKICAgICAgICAgPj4+IGMgPSBDb3VudGVyKFsnZWdncycsICdoYW0nXSkKICAgICAgICAgPj4+IGNbJ2JhY29uJ10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNvdW50IG9mIGEgbWlzc2luZyBlbGVtZW50IGlzIHplcm8KICAgICAgICAgMAogCi0gICBTZXR0aW5nIGEgY291bnQgdG8gemVybyBkb2VzIG5vdCByZW1vdmUgYW4gZWxlbWVudCBmcm9tIGEgY291bnRlci4KLSAgIFVzZSBgYGRlbGBgIHRvIHJlbW92ZSBpdCBlbnRpcmVseToKKyAgICBTZXR0aW5nIGEgY291bnQgdG8gemVybyBkb2VzIG5vdCByZW1vdmUgYW4gZWxlbWVudCBmcm9tIGEgY291bnRlci4KKyAgICBVc2UgYGBkZWxgYCB0byByZW1vdmUgaXQgZW50aXJlbHk6CiAKICAgICAgICAgPj4+IGNbJ3NhdXNhZ2UnXSA9IDAgICAgICAgICAgICAgICAgICAgICAgICAjIGNvdW50ZXIgZW50cnkgd2l0aCBhIHplcm8gY291bnQKICAgICAgICAgPj4+IGRlbCBjWydzYXVzYWdlJ10gICAgICAgICAgICAgICAgICAgICAgICAjIGRlbCBhY3R1YWxseSByZW1vdmVzIHRoZSBlbnRyeQogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAogCi0gICBDb3VudGVyIG9iamVjdHMgc3VwcG9ydCB0aHJlZSBtZXRob2RzIGJleW9uZCB0aG9zZSBhdmFpbGFibGUgZm9yIGFsbAotICAgZGljdGlvbmFyaWVzOgorICAgIENvdW50ZXIgb2JqZWN0cyBzdXBwb3J0IHRocmVlIG1ldGhvZHMgYmV5b25kIHRob3NlIGF2YWlsYWJsZSBmb3IgYWxsCisgICAgZGljdGlvbmFyaWVzOgogCi0gICAuLiBtZXRob2Q6OiBlbGVtZW50cygpCisgICAgLi4gbWV0aG9kOjogZWxlbWVudHMoKQogCi0gICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBlbGVtZW50cyByZXBlYXRpbmcgZWFjaCBhcyBtYW55IHRpbWVzIGFzIGl0cwotICAgICAgY291bnQuICBFbGVtZW50cyBhcmUgcmV0dXJuZWQgaW4gYXJiaXRyYXJ5IG9yZGVyLiAgSWYgYW4gZWxlbWVudCdzIGNvdW50Ci0gICAgICBpcyBsZXNzIHRoYW4gb25lLCA6bWV0aDpgZWxlbWVudHNgIHdpbGwgaWdub3JlIGl0LgorICAgICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBlbGVtZW50cyByZXBlYXRpbmcgZWFjaCBhcyBtYW55IHRpbWVzIGFzIGl0cworICAgICAgICBjb3VudC4gIEVsZW1lbnRzIGFyZSByZXR1cm5lZCBpbiBhcmJpdHJhcnkgb3JkZXIuICBJZiBhbiBlbGVtZW50J3MgY291bnQKKyAgICAgICAgaXMgbGVzcyB0aGFuIG9uZSwgOm1ldGg6YGVsZW1lbnRzYCB3aWxsIGlnbm9yZSBpdC4KIAogICAgICAgICAgICAgPj4+IGMgPSBDb3VudGVyKGE9NCwgYj0yLCBjPTAsIGQ9LTIpCiAgICAgICAgICAgICA+Pj4gbGlzdChjLmVsZW1lbnRzKCkpCiAgICAgICAgICAgICBbJ2EnLCAnYScsICdhJywgJ2EnLCAnYicsICdiJ10KIAotICAgLi4gbWV0aG9kOjogbW9zdF9jb21tb24oW25dKQorICAgIC4uIG1ldGhvZDo6IG1vc3RfY29tbW9uKFtuXSkKIAotICAgICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgKm4qIG1vc3QgY29tbW9uIGVsZW1lbnRzIGFuZCB0aGVpciBjb3VudHMgZnJvbSB0aGUKLSAgICAgIG1vc3QgY29tbW9uIHRvIHRoZSBsZWFzdC4gIElmICpuKiBpcyBub3Qgc3BlY2lmaWVkLCA6ZnVuYzpgbW9zdF9jb21tb25gCi0gICAgICByZXR1cm5zICphbGwqIGVsZW1lbnRzIGluIHRoZSBjb3VudGVyLiAgRWxlbWVudHMgd2l0aCBlcXVhbCBjb3VudHMgYXJlCi0gICAgICBvcmRlcmVkIGFyYml0cmFyaWx5OgorICAgICAgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSAqbiogbW9zdCBjb21tb24gZWxlbWVudHMgYW5kIHRoZWlyIGNvdW50cyBmcm9tIHRoZQorICAgICAgICBtb3N0IGNvbW1vbiB0byB0aGUgbGVhc3QuICBJZiAqbiogaXMgbm90IHNwZWNpZmllZCwgOmZ1bmM6YG1vc3RfY29tbW9uYAorICAgICAgICByZXR1cm5zICphbGwqIGVsZW1lbnRzIGluIHRoZSBjb3VudGVyLiAgRWxlbWVudHMgd2l0aCBlcXVhbCBjb3VudHMgYXJlCisgICAgICAgIG9yZGVyZWQgYXJiaXRyYXJpbHk6CiAKICAgICAgICAgICAgID4+PiBDb3VudGVyKCdhYnJhY2FkYWJyYScpLm1vc3RfY29tbW9uKDMpCiAgICAgICAgICAgICBbKCdhJywgNSksICgncicsIDIpLCAoJ2InLCAyKV0KIAotICAgLi4gbWV0aG9kOjogc3VidHJhY3QoW2l0ZXJhYmxlLW9yLW1hcHBpbmddKQorICAgIC4uIG1ldGhvZDo6IHN1YnRyYWN0KFtpdGVyYWJsZS1vci1tYXBwaW5nXSkKIAotICAgICAgRWxlbWVudHMgYXJlIHN1YnRyYWN0ZWQgZnJvbSBhbiAqaXRlcmFibGUqIG9yIGZyb20gYW5vdGhlciAqbWFwcGluZyoKLSAgICAgIChvciBjb3VudGVyKS4gIExpa2UgOm1ldGg6YGRpY3QudXBkYXRlYCBidXQgc3VidHJhY3RzIGNvdW50cyBpbnN0ZWFkCi0gICAgICBvZiByZXBsYWNpbmcgdGhlbS4gIEJvdGggaW5wdXRzIGFuZCBvdXRwdXRzIG1heSBiZSB6ZXJvIG9yIG5lZ2F0aXZlLgorICAgICAgICBFbGVtZW50cyBhcmUgc3VidHJhY3RlZCBmcm9tIGFuICppdGVyYWJsZSogb3IgZnJvbSBhbm90aGVyICptYXBwaW5nKgorICAgICAgICAob3IgY291bnRlcikuICBMaWtlIDptZXRoOmBkaWN0LnVwZGF0ZWAgYnV0IHN1YnRyYWN0cyBjb3VudHMgaW5zdGVhZAorICAgICAgICBvZiByZXBsYWNpbmcgdGhlbS4gIEJvdGggaW5wdXRzIGFuZCBvdXRwdXRzIG1heSBiZSB6ZXJvIG9yIG5lZ2F0aXZlLgogCiAgICAgICAgICAgICA+Pj4gYyA9IENvdW50ZXIoYT00LCBiPTIsIGM9MCwgZD0tMikKICAgICAgICAgICAgID4+PiBkID0gQ291bnRlcihhPTEsIGI9MiwgYz0zLCBkPTQpCkBAIC0xMjQsMjEgKzI4MiwyMSBAQAogICAgICAgICAgICAgPj4+IGMKICAgICAgICAgICAgIENvdW50ZXIoeydhJzogMywgJ2InOiAwLCAnYyc6IC0zLCAnZCc6IC02fSkKIAotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCi0gICBUaGUgdXN1YWwgZGljdGlvbmFyeSBtZXRob2RzIGFyZSBhdmFpbGFibGUgZm9yIDpjbGFzczpgQ291bnRlcmAgb2JqZWN0cwotICAgZXhjZXB0IGZvciB0d28gd2hpY2ggd29yayBkaWZmZXJlbnRseSBmb3IgY291bnRlcnMuCisgICAgVGhlIHVzdWFsIGRpY3Rpb25hcnkgbWV0aG9kcyBhcmUgYXZhaWxhYmxlIGZvciA6Y2xhc3M6YENvdW50ZXJgIG9iamVjdHMKKyAgICBleGNlcHQgZm9yIHR3byB3aGljaCB3b3JrIGRpZmZlcmVudGx5IGZvciBjb3VudGVycy4KIAotICAgLi4gbWV0aG9kOjogZnJvbWtleXMoaXRlcmFibGUpCisgICAgLi4gbWV0aG9kOjogZnJvbWtleXMoaXRlcmFibGUpCiAKLSAgICAgIFRoaXMgY2xhc3MgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgOmNsYXNzOmBDb3VudGVyYCBvYmplY3RzLgorICAgICAgICBUaGlzIGNsYXNzIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIDpjbGFzczpgQ291bnRlcmAgb2JqZWN0cy4KIAotICAgLi4gbWV0aG9kOjogdXBkYXRlKFtpdGVyYWJsZS1vci1tYXBwaW5nXSkKKyAgICAuLiBtZXRob2Q6OiB1cGRhdGUoW2l0ZXJhYmxlLW9yLW1hcHBpbmddKQogCi0gICAgICBFbGVtZW50cyBhcmUgY291bnRlZCBmcm9tIGFuICppdGVyYWJsZSogb3IgYWRkZWQtaW4gZnJvbSBhbm90aGVyCi0gICAgICAqbWFwcGluZyogKG9yIGNvdW50ZXIpLiAgTGlrZSA6bWV0aDpgZGljdC51cGRhdGVgIGJ1dCBhZGRzIGNvdW50cwotICAgICAgaW5zdGVhZCBvZiByZXBsYWNpbmcgdGhlbS4gIEFsc28sIHRoZSAqaXRlcmFibGUqIGlzIGV4cGVjdGVkIHRvIGJlIGEKLSAgICAgIHNlcXVlbmNlIG9mIGVsZW1lbnRzLCBub3QgYSBzZXF1ZW5jZSBvZiBgYChrZXksIHZhbHVlKWBgIHBhaXJzLgorICAgICAgICBFbGVtZW50cyBhcmUgY291bnRlZCBmcm9tIGFuICppdGVyYWJsZSogb3IgYWRkZWQtaW4gZnJvbSBhbm90aGVyCisgICAgICAgICptYXBwaW5nKiAob3IgY291bnRlcikuICBMaWtlIDptZXRoOmBkaWN0LnVwZGF0ZWAgYnV0IGFkZHMgY291bnRzCisgICAgICAgIGluc3RlYWQgb2YgcmVwbGFjaW5nIHRoZW0uICBBbHNvLCB0aGUgKml0ZXJhYmxlKiBpcyBleHBlY3RlZCB0byBiZSBhCisgICAgICAgIHNlcXVlbmNlIG9mIGVsZW1lbnRzLCBub3QgYSBzZXF1ZW5jZSBvZiBgYChrZXksIHZhbHVlKWBgIHBhaXJzLgogCiBDb21tb24gcGF0dGVybnMgZm9yIHdvcmtpbmcgd2l0aCA6Y2xhc3M6YENvdW50ZXJgIG9iamVjdHM6OgogCkBAIC0xNTAsNyArMzA4LDcgQEAKICAgICBjLml0ZW1zKCkgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCB0byBhIGxpc3Qgb2YgKGVsZW0sIGNudCkgcGFpcnMKICAgICBDb3VudGVyKGRpY3QobGlzdF9vZl9wYWlycykpICAgICMgY29udmVydCBmcm9tIGEgbGlzdCBvZiAoZWxlbSwgY250KSBwYWlycwogICAgIGMubW9zdF9jb21tb24oKVs6LW46LTFdICAgICAgICAgIyBuIGxlYXN0IGNvbW1vbiBlbGVtZW50cwotICAgIGMgKz0gQ291bnRlcigpICAgICAgICAgICAgICAgICAgIyByZW1vdmUgemVybyBhbmQgbmVnYXRpdmUgY291bnRzCisgICAgK2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlbW92ZSB6ZXJvIGFuZCBuZWdhdGl2ZSBjb3VudHMKIAogU2V2ZXJhbCBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBhcmUgcHJvdmlkZWQgZm9yIGNvbWJpbmluZyA6Y2xhc3M6YENvdW50ZXJgCiBvYmplY3RzIHRvIHByb2R1Y2UgbXVsdGlzZXRzIChjb3VudGVycyB0aGF0IGhhdmUgY291bnRzIGdyZWF0ZXIgdGhhbiB6ZXJvKS4KQEAgLTE3MCwzMiArMzI4LDQ0IEBACiAgICAgPj4+IGMgfCBkICAgICAgICAgICAgICAgICAgICAgICAjIHVuaW9uOiAgbWF4KGNbeF0sIGRbeF0pCiAgICAgQ291bnRlcih7J2EnOiAzLCAnYic6IDJ9KQogCitVbmFyeSBhZGRpdGlvbiBhbmQgc3Vic3RyYWN0aW9uIGFyZSBzaG9ydGN1dHMgZm9yIGFkZGluZyBhbiBlbXB0eSBjb3VudGVyCitvciBzdWJ0cmFjdGluZyBmcm9tIGFuIGVtcHR5IGNvdW50ZXIuCisKKyAgICA+Pj4gYyA9IENvdW50ZXIoYT0yLCBiPS00KQorICAgID4+PiArYworICAgIENvdW50ZXIoeydhJzogMn0pCisgICAgPj4+IC1jCisgICAgQ291bnRlcih7J2InOiA0fSkKKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgQWRkZWQgc3VwcG9ydCBmb3IgdW5hcnkgcGx1cywgdW5hcnkgbWludXMsIGFuZCBpbi1wbGFjZSBtdWx0aXNldCBvcGVyYXRpb25zLgorCiAuLiBub3RlOjoKIAotICAgQ291bnRlcnMgd2VyZSBwcmltYXJpbHkgZGVzaWduZWQgdG8gd29yayB3aXRoIHBvc2l0aXZlIGludGVnZXJzIHRvIHJlcHJlc2VudAotICAgcnVubmluZyBjb3VudHM7IGhvd2V2ZXIsIGNhcmUgd2FzIHRha2VuIHRvIG5vdCB1bm5lY2Vzc2FyaWx5IHByZWNsdWRlIHVzZQotICAgY2FzZXMgbmVlZGluZyBvdGhlciB0eXBlcyBvciBuZWdhdGl2ZSB2YWx1ZXMuICBUbyBoZWxwIHdpdGggdGhvc2UgdXNlIGNhc2VzLAotICAgdGhpcyBzZWN0aW9uIGRvY3VtZW50cyB0aGUgbWluaW11bSByYW5nZSBhbmQgdHlwZSByZXN0cmljdGlvbnMuCisgICAgQ291bnRlcnMgd2VyZSBwcmltYXJpbHkgZGVzaWduZWQgdG8gd29yayB3aXRoIHBvc2l0aXZlIGludGVnZXJzIHRvIHJlcHJlc2VudAorICAgIHJ1bm5pbmcgY291bnRzOyBob3dldmVyLCBjYXJlIHdhcyB0YWtlbiB0byBub3QgdW5uZWNlc3NhcmlseSBwcmVjbHVkZSB1c2UKKyAgICBjYXNlcyBuZWVkaW5nIG90aGVyIHR5cGVzIG9yIG5lZ2F0aXZlIHZhbHVlcy4gIFRvIGhlbHAgd2l0aCB0aG9zZSB1c2UgY2FzZXMsCisgICAgdGhpcyBzZWN0aW9uIGRvY3VtZW50cyB0aGUgbWluaW11bSByYW5nZSBhbmQgdHlwZSByZXN0cmljdGlvbnMuCiAKLSAgICogVGhlIDpjbGFzczpgQ291bnRlcmAgY2xhc3MgaXRzZWxmIGlzIGEgZGljdGlvbmFyeSBzdWJjbGFzcyB3aXRoIG5vCi0gICAgIHJlc3RyaWN0aW9ucyBvbiBpdHMga2V5cyBhbmQgdmFsdWVzLiAgVGhlIHZhbHVlcyBhcmUgaW50ZW5kZWQgdG8gYmUgbnVtYmVycwotICAgICByZXByZXNlbnRpbmcgY291bnRzLCBidXQgeW91ICpjb3VsZCogc3RvcmUgYW55dGhpbmcgaW4gdGhlIHZhbHVlIGZpZWxkLgorICAgICogVGhlIDpjbGFzczpgQ291bnRlcmAgY2xhc3MgaXRzZWxmIGlzIGEgZGljdGlvbmFyeSBzdWJjbGFzcyB3aXRoIG5vCisgICAgICByZXN0cmljdGlvbnMgb24gaXRzIGtleXMgYW5kIHZhbHVlcy4gIFRoZSB2YWx1ZXMgYXJlIGludGVuZGVkIHRvIGJlIG51bWJlcnMKKyAgICAgIHJlcHJlc2VudGluZyBjb3VudHMsIGJ1dCB5b3UgKmNvdWxkKiBzdG9yZSBhbnl0aGluZyBpbiB0aGUgdmFsdWUgZmllbGQuCiAKLSAgICogVGhlIDptZXRoOmBtb3N0X2NvbW1vbmAgbWV0aG9kIHJlcXVpcmVzIG9ubHkgdGhhdCB0aGUgdmFsdWVzIGJlIG9yZGVyYWJsZS4KKyAgICAqIFRoZSA6bWV0aDpgbW9zdF9jb21tb25gIG1ldGhvZCByZXF1aXJlcyBvbmx5IHRoYXQgdGhlIHZhbHVlcyBiZSBvcmRlcmFibGUuCiAKLSAgICogRm9yIGluLXBsYWNlIG9wZXJhdGlvbnMgc3VjaCBhcyBgYGNba2V5XSArPSAxYGAsIHRoZSB2YWx1ZSB0eXBlIG5lZWQgb25seQotICAgICBzdXBwb3J0IGFkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbi4gIFNvIGZyYWN0aW9ucywgZmxvYXRzLCBhbmQgZGVjaW1hbHMgd291bGQKLSAgICAgd29yayBhbmQgbmVnYXRpdmUgdmFsdWVzIGFyZSBzdXBwb3J0ZWQuICBUaGUgc2FtZSBpcyBhbHNvIHRydWUgZm9yCi0gICAgIDptZXRoOmB1cGRhdGVgIGFuZCA6bWV0aDpgc3VidHJhY3RgIHdoaWNoIGFsbG93IG5lZ2F0aXZlIGFuZCB6ZXJvIHZhbHVlcwotICAgICBmb3IgYm90aCBpbnB1dHMgYW5kIG91dHB1dHMuCisgICAgKiBGb3IgaW4tcGxhY2Ugb3BlcmF0aW9ucyBzdWNoIGFzIGBgY1trZXldICs9IDFgYCwgdGhlIHZhbHVlIHR5cGUgbmVlZCBvbmx5CisgICAgICBzdXBwb3J0IGFkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbi4gIFNvIGZyYWN0aW9ucywgZmxvYXRzLCBhbmQgZGVjaW1hbHMgd291bGQKKyAgICAgIHdvcmsgYW5kIG5lZ2F0aXZlIHZhbHVlcyBhcmUgc3VwcG9ydGVkLiAgVGhlIHNhbWUgaXMgYWxzbyB0cnVlIGZvcgorICAgICAgOm1ldGg6YHVwZGF0ZWAgYW5kIDptZXRoOmBzdWJ0cmFjdGAgd2hpY2ggYWxsb3cgbmVnYXRpdmUgYW5kIHplcm8gdmFsdWVzCisgICAgICBmb3IgYm90aCBpbnB1dHMgYW5kIG91dHB1dHMuCiAKLSAgICogVGhlIG11bHRpc2V0IG1ldGhvZHMgYXJlIGRlc2lnbmVkIG9ubHkgZm9yIHVzZSBjYXNlcyB3aXRoIHBvc2l0aXZlIHZhbHVlcy4KLSAgICAgVGhlIGlucHV0cyBtYXkgYmUgbmVnYXRpdmUgb3IgemVybywgYnV0IG9ubHkgb3V0cHV0cyB3aXRoIHBvc2l0aXZlIHZhbHVlcwotICAgICBhcmUgY3JlYXRlZC4gIFRoZXJlIGFyZSBubyB0eXBlIHJlc3RyaWN0aW9ucywgYnV0IHRoZSB2YWx1ZSB0eXBlIG5lZWRzIHRvCi0gICAgIHN1cHBvcnQgYWRkaXRpb24sIHN1YnRyYWN0aW9uLCBhbmQgY29tcGFyaXNvbi4KKyAgICAqIFRoZSBtdWx0aXNldCBtZXRob2RzIGFyZSBkZXNpZ25lZCBvbmx5IGZvciB1c2UgY2FzZXMgd2l0aCBwb3NpdGl2ZSB2YWx1ZXMuCisgICAgICBUaGUgaW5wdXRzIG1heSBiZSBuZWdhdGl2ZSBvciB6ZXJvLCBidXQgb25seSBvdXRwdXRzIHdpdGggcG9zaXRpdmUgdmFsdWVzCisgICAgICBhcmUgY3JlYXRlZC4gIFRoZXJlIGFyZSBubyB0eXBlIHJlc3RyaWN0aW9ucywgYnV0IHRoZSB2YWx1ZSB0eXBlIG5lZWRzIHRvCisgICAgICBzdXBwb3J0IGFkZGl0aW9uLCBzdWJ0cmFjdGlvbiwgYW5kIGNvbXBhcmlzb24uCiAKLSAgICogVGhlIDptZXRoOmBlbGVtZW50c2AgbWV0aG9kIHJlcXVpcmVzIGludGVnZXIgY291bnRzLiAgSXQgaWdub3JlcyB6ZXJvIGFuZAotICAgICBuZWdhdGl2ZSBjb3VudHMuCisgICAgKiBUaGUgOm1ldGg6YGVsZW1lbnRzYCBtZXRob2QgcmVxdWlyZXMgaW50ZWdlciBjb3VudHMuICBJdCBpZ25vcmVzIHplcm8gYW5kCisgICAgICBuZWdhdGl2ZSBjb3VudHMuCiAKIC4uIHNlZWFsc286OgogCkBAIC0yMTgsNyArMzg4LDcgQEAKICAgICAqIFRvIGVudW1lcmF0ZSBhbGwgZGlzdGluY3QgbXVsdGlzZXRzIG9mIGEgZ2l2ZW4gc2l6ZSBvdmVyIGEgZ2l2ZW4gc2V0IG9mCiAgICAgICBlbGVtZW50cywgc2VlIDpmdW5jOmBpdGVydG9vbHMuY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnRgLgogCi0gICAgICAgICAgbWFwKENvdW50ZXIsIGNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50KCdBQkMnLCAyKSkgLS0+IEFBIEFCIEFDIEJCIEJDIENDCisgICAgICAgICAgICBtYXAoQ291bnRlciwgY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQoJ0FCQycsIDIpKSAtLT4gQUEgQUIgQUMgQkIgQkMgQ0MKIAogCiA6Y2xhc3M6YGRlcXVlYCBvYmplY3RzCkBAIC0yMjYsMTA1ICszOTYsMTA1IEBACiAKIC4uIGNsYXNzOjogZGVxdWUoW2l0ZXJhYmxlLCBbbWF4bGVuXV0pCiAKLSAgIFJldHVybnMgYSBuZXcgZGVxdWUgb2JqZWN0IGluaXRpYWxpemVkIGxlZnQtdG8tcmlnaHQgKHVzaW5nIDptZXRoOmBhcHBlbmRgKSB3aXRoCi0gICBkYXRhIGZyb20gKml0ZXJhYmxlKi4gIElmICppdGVyYWJsZSogaXMgbm90IHNwZWNpZmllZCwgdGhlIG5ldyBkZXF1ZSBpcyBlbXB0eS4KKyAgICBSZXR1cm5zIGEgbmV3IGRlcXVlIG9iamVjdCBpbml0aWFsaXplZCBsZWZ0LXRvLXJpZ2h0ICh1c2luZyA6bWV0aDpgYXBwZW5kYCkgd2l0aAorICAgIGRhdGEgZnJvbSAqaXRlcmFibGUqLiAgSWYgKml0ZXJhYmxlKiBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgbmV3IGRlcXVlIGlzIGVtcHR5LgogCi0gICBEZXF1ZXMgYXJlIGEgZ2VuZXJhbGl6YXRpb24gb2Ygc3RhY2tzIGFuZCBxdWV1ZXMgKHRoZSBuYW1lIGlzIHByb25vdW5jZWQgImRlY2siCi0gICBhbmQgaXMgc2hvcnQgZm9yICJkb3VibGUtZW5kZWQgcXVldWUiKS4gIERlcXVlcyBzdXBwb3J0IHRocmVhZC1zYWZlLCBtZW1vcnkKLSAgIGVmZmljaWVudCBhcHBlbmRzIGFuZCBwb3BzIGZyb20gZWl0aGVyIHNpZGUgb2YgdGhlIGRlcXVlIHdpdGggYXBwcm94aW1hdGVseSB0aGUKLSAgIHNhbWUgTygxKSBwZXJmb3JtYW5jZSBpbiBlaXRoZXIgZGlyZWN0aW9uLgorICAgIERlcXVlcyBhcmUgYSBnZW5lcmFsaXphdGlvbiBvZiBzdGFja3MgYW5kIHF1ZXVlcyAodGhlIG5hbWUgaXMgcHJvbm91bmNlZCAiZGVjayIKKyAgICBhbmQgaXMgc2hvcnQgZm9yICJkb3VibGUtZW5kZWQgcXVldWUiKS4gIERlcXVlcyBzdXBwb3J0IHRocmVhZC1zYWZlLCBtZW1vcnkKKyAgICBlZmZpY2llbnQgYXBwZW5kcyBhbmQgcG9wcyBmcm9tIGVpdGhlciBzaWRlIG9mIHRoZSBkZXF1ZSB3aXRoIGFwcHJveGltYXRlbHkgdGhlCisgICAgc2FtZSBPKDEpIHBlcmZvcm1hbmNlIGluIGVpdGhlciBkaXJlY3Rpb24uCiAKLSAgIFRob3VnaCA6Y2xhc3M6YGxpc3RgIG9iamVjdHMgc3VwcG9ydCBzaW1pbGFyIG9wZXJhdGlvbnMsIHRoZXkgYXJlIG9wdGltaXplZCBmb3IKLSAgIGZhc3QgZml4ZWQtbGVuZ3RoIG9wZXJhdGlvbnMgYW5kIGluY3VyIE8obikgbWVtb3J5IG1vdmVtZW50IGNvc3RzIGZvcgotICAgYGBwb3AoMClgYCBhbmQgYGBpbnNlcnQoMCwgdilgYCBvcGVyYXRpb25zIHdoaWNoIGNoYW5nZSBib3RoIHRoZSBzaXplIGFuZAotICAgcG9zaXRpb24gb2YgdGhlIHVuZGVybHlpbmcgZGF0YSByZXByZXNlbnRhdGlvbi4KKyAgICBUaG91Z2ggOmNsYXNzOmBsaXN0YCBvYmplY3RzIHN1cHBvcnQgc2ltaWxhciBvcGVyYXRpb25zLCB0aGV5IGFyZSBvcHRpbWl6ZWQgZm9yCisgICAgZmFzdCBmaXhlZC1sZW5ndGggb3BlcmF0aW9ucyBhbmQgaW5jdXIgTyhuKSBtZW1vcnkgbW92ZW1lbnQgY29zdHMgZm9yCisgICAgYGBwb3AoMClgYCBhbmQgYGBpbnNlcnQoMCwgdilgYCBvcGVyYXRpb25zIHdoaWNoIGNoYW5nZSBib3RoIHRoZSBzaXplIGFuZAorICAgIHBvc2l0aW9uIG9mIHRoZSB1bmRlcmx5aW5nIGRhdGEgcmVwcmVzZW50YXRpb24uCiAKIAotICAgSWYgKm1heGxlbiogaXMgbm90IHNwZWNpZmllZCBvciBpcyAqTm9uZSosIGRlcXVlcyBtYXkgZ3JvdyB0byBhbgotICAgYXJiaXRyYXJ5IGxlbmd0aC4gIE90aGVyd2lzZSwgdGhlIGRlcXVlIGlzIGJvdW5kZWQgdG8gdGhlIHNwZWNpZmllZCBtYXhpbXVtCi0gICBsZW5ndGguICBPbmNlIGEgYm91bmRlZCBsZW5ndGggZGVxdWUgaXMgZnVsbCwgd2hlbiBuZXcgaXRlbXMgYXJlIGFkZGVkLCBhCi0gICBjb3JyZXNwb25kaW5nIG51bWJlciBvZiBpdGVtcyBhcmUgZGlzY2FyZGVkIGZyb20gdGhlIG9wcG9zaXRlIGVuZC4gIEJvdW5kZWQKLSAgIGxlbmd0aCBkZXF1ZXMgcHJvdmlkZSBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gdGhlIGBgdGFpbGBgIGZpbHRlciBpbgotICAgVW5peC4gVGhleSBhcmUgYWxzbyB1c2VmdWwgZm9yIHRyYWNraW5nIHRyYW5zYWN0aW9ucyBhbmQgb3RoZXIgcG9vbHMgb2YgZGF0YQotICAgd2hlcmUgb25seSB0aGUgbW9zdCByZWNlbnQgYWN0aXZpdHkgaXMgb2YgaW50ZXJlc3QuCisgICAgSWYgKm1heGxlbiogaXMgbm90IHNwZWNpZmllZCBvciBpcyAqTm9uZSosIGRlcXVlcyBtYXkgZ3JvdyB0byBhbgorICAgIGFyYml0cmFyeSBsZW5ndGguICBPdGhlcndpc2UsIHRoZSBkZXF1ZSBpcyBib3VuZGVkIHRvIHRoZSBzcGVjaWZpZWQgbWF4aW11bQorICAgIGxlbmd0aC4gIE9uY2UgYSBib3VuZGVkIGxlbmd0aCBkZXF1ZSBpcyBmdWxsLCB3aGVuIG5ldyBpdGVtcyBhcmUgYWRkZWQsIGEKKyAgICBjb3JyZXNwb25kaW5nIG51bWJlciBvZiBpdGVtcyBhcmUgZGlzY2FyZGVkIGZyb20gdGhlIG9wcG9zaXRlIGVuZC4gIEJvdW5kZWQKKyAgICBsZW5ndGggZGVxdWVzIHByb3ZpZGUgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHRoZSBgYHRhaWxgYCBmaWx0ZXIgaW4KKyAgICBVbml4LiBUaGV5IGFyZSBhbHNvIHVzZWZ1bCBmb3IgdHJhY2tpbmcgdHJhbnNhY3Rpb25zIGFuZCBvdGhlciBwb29scyBvZiBkYXRhCisgICAgd2hlcmUgb25seSB0aGUgbW9zdCByZWNlbnQgYWN0aXZpdHkgaXMgb2YgaW50ZXJlc3QuCiAKIAotICAgRGVxdWUgb2JqZWN0cyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKKyAgICBEZXF1ZSBvYmplY3RzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBtZXRob2RzOgogCi0gICAuLiBtZXRob2Q6OiBhcHBlbmQoeCkKKyAgICAuLiBtZXRob2Q6OiBhcHBlbmQoeCkKIAotICAgICAgQWRkICp4KiB0byB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZGVxdWUuCisgICAgICAgIEFkZCAqeCogdG8gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGRlcXVlLgogCiAKLSAgIC4uIG1ldGhvZDo6IGFwcGVuZGxlZnQoeCkKKyAgICAuLiBtZXRob2Q6OiBhcHBlbmRsZWZ0KHgpCiAKLSAgICAgIEFkZCAqeCogdG8gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGVxdWUuCisgICAgICAgIEFkZCAqeCogdG8gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGVxdWUuCiAKIAotICAgLi4gbWV0aG9kOjogY2xlYXIoKQorICAgIC4uIG1ldGhvZDo6IGNsZWFyKCkKIAotICAgICAgUmVtb3ZlIGFsbCBlbGVtZW50cyBmcm9tIHRoZSBkZXF1ZSBsZWF2aW5nIGl0IHdpdGggbGVuZ3RoIDAuCisgICAgICAgIFJlbW92ZSBhbGwgZWxlbWVudHMgZnJvbSB0aGUgZGVxdWUgbGVhdmluZyBpdCB3aXRoIGxlbmd0aCAwLgogCiAKLSAgIC4uIG1ldGhvZDo6IGNvdW50KHgpCisgICAgLi4gbWV0aG9kOjogY291bnQoeCkKIAotICAgICAgQ291bnQgdGhlIG51bWJlciBvZiBkZXF1ZSBlbGVtZW50cyBlcXVhbCB0byAqeCouCisgICAgICAgIENvdW50IHRoZSBudW1iZXIgb2YgZGVxdWUgZWxlbWVudHMgZXF1YWwgdG8gKngqLgogCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAotICAgLi4gbWV0aG9kOjogZXh0ZW5kKGl0ZXJhYmxlKQorICAgIC4uIG1ldGhvZDo6IGV4dGVuZChpdGVyYWJsZSkKIAotICAgICAgRXh0ZW5kIHRoZSByaWdodCBzaWRlIG9mIHRoZSBkZXF1ZSBieSBhcHBlbmRpbmcgZWxlbWVudHMgZnJvbSB0aGUgaXRlcmFibGUKLSAgICAgIGFyZ3VtZW50LgorICAgICAgICBFeHRlbmQgdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGRlcXVlIGJ5IGFwcGVuZGluZyBlbGVtZW50cyBmcm9tIHRoZSBpdGVyYWJsZQorICAgICAgICBhcmd1bWVudC4KIAogCi0gICAuLiBtZXRob2Q6OiBleHRlbmRsZWZ0KGl0ZXJhYmxlKQorICAgIC4uIG1ldGhvZDo6IGV4dGVuZGxlZnQoaXRlcmFibGUpCiAKLSAgICAgIEV4dGVuZCB0aGUgbGVmdCBzaWRlIG9mIHRoZSBkZXF1ZSBieSBhcHBlbmRpbmcgZWxlbWVudHMgZnJvbSAqaXRlcmFibGUqLgotICAgICAgTm90ZSwgdGhlIHNlcmllcyBvZiBsZWZ0IGFwcGVuZHMgcmVzdWx0cyBpbiByZXZlcnNpbmcgdGhlIG9yZGVyIG9mCi0gICAgICBlbGVtZW50cyBpbiB0aGUgaXRlcmFibGUgYXJndW1lbnQuCisgICAgICAgIEV4dGVuZCB0aGUgbGVmdCBzaWRlIG9mIHRoZSBkZXF1ZSBieSBhcHBlbmRpbmcgZWxlbWVudHMgZnJvbSAqaXRlcmFibGUqLgorICAgICAgICBOb3RlLCB0aGUgc2VyaWVzIG9mIGxlZnQgYXBwZW5kcyByZXN1bHRzIGluIHJldmVyc2luZyB0aGUgb3JkZXIgb2YKKyAgICAgICAgZWxlbWVudHMgaW4gdGhlIGl0ZXJhYmxlIGFyZ3VtZW50LgogCiAKLSAgIC4uIG1ldGhvZDo6IHBvcCgpCisgICAgLi4gbWV0aG9kOjogcG9wKCkKIAotICAgICAgUmVtb3ZlIGFuZCByZXR1cm4gYW4gZWxlbWVudCBmcm9tIHRoZSByaWdodCBzaWRlIG9mIHRoZSBkZXF1ZS4gSWYgbm8KLSAgICAgIGVsZW1lbnRzIGFyZSBwcmVzZW50LCByYWlzZXMgYW4gOmV4YzpgSW5kZXhFcnJvcmAuCisgICAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGVsZW1lbnQgZnJvbSB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZGVxdWUuIElmIG5vCisgICAgICAgIGVsZW1lbnRzIGFyZSBwcmVzZW50LCByYWlzZXMgYW4gOmV4YzpgSW5kZXhFcnJvcmAuCiAKIAotICAgLi4gbWV0aG9kOjogcG9wbGVmdCgpCisgICAgLi4gbWV0aG9kOjogcG9wbGVmdCgpCiAKLSAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGVsZW1lbnQgZnJvbSB0aGUgbGVmdCBzaWRlIG9mIHRoZSBkZXF1ZS4gSWYgbm8KLSAgICAgIGVsZW1lbnRzIGFyZSBwcmVzZW50LCByYWlzZXMgYW4gOmV4YzpgSW5kZXhFcnJvcmAuCisgICAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGVsZW1lbnQgZnJvbSB0aGUgbGVmdCBzaWRlIG9mIHRoZSBkZXF1ZS4gSWYgbm8KKyAgICAgICAgZWxlbWVudHMgYXJlIHByZXNlbnQsIHJhaXNlcyBhbiA6ZXhjOmBJbmRleEVycm9yYC4KIAogCi0gICAuLiBtZXRob2Q6OiByZW1vdmUodmFsdWUpCisgICAgLi4gbWV0aG9kOjogcmVtb3ZlKHZhbHVlKQogCi0gICAgICBSZW1vdmVkIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICp2YWx1ZSouICBJZiBub3QgZm91bmQsIHJhaXNlcyBhCi0gICAgICA6ZXhjOmBWYWx1ZUVycm9yYC4KKyAgICAgICAgUmVtb3ZlZCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqdmFsdWUqLiAgSWYgbm90IGZvdW5kLCByYWlzZXMgYQorICAgICAgICA6ZXhjOmBWYWx1ZUVycm9yYC4KIAogCi0gICAuLiBtZXRob2Q6OiByZXZlcnNlKCkKKyAgICAuLiBtZXRob2Q6OiByZXZlcnNlKCkKIAotICAgICAgUmV2ZXJzZSB0aGUgZWxlbWVudHMgb2YgdGhlIGRlcXVlIGluLXBsYWNlIGFuZCB0aGVuIHJldHVybiBgYE5vbmVgYC4KKyAgICAgICAgUmV2ZXJzZSB0aGUgZWxlbWVudHMgb2YgdGhlIGRlcXVlIGluLXBsYWNlIGFuZCB0aGVuIHJldHVybiBgYE5vbmVgYC4KIAotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKLSAgIC4uIG1ldGhvZDo6IHJvdGF0ZShuKQorICAgIC4uIG1ldGhvZDo6IHJvdGF0ZShuKQogCi0gICAgICBSb3RhdGUgdGhlIGRlcXVlICpuKiBzdGVwcyB0byB0aGUgcmlnaHQuICBJZiAqbiogaXMgbmVnYXRpdmUsIHJvdGF0ZSB0bwotICAgICAgdGhlIGxlZnQuICBSb3RhdGluZyBvbmUgc3RlcCB0byB0aGUgcmlnaHQgaXMgZXF1aXZhbGVudCB0bzoKLSAgICAgIGBgZC5hcHBlbmRsZWZ0KGQucG9wKCkpYGAuCisgICAgICAgIFJvdGF0ZSB0aGUgZGVxdWUgKm4qIHN0ZXBzIHRvIHRoZSByaWdodC4gIElmICpuKiBpcyBuZWdhdGl2ZSwgcm90YXRlIHRvCisgICAgICAgIHRoZSBsZWZ0LiAgUm90YXRpbmcgb25lIHN0ZXAgdG8gdGhlIHJpZ2h0IGlzIGVxdWl2YWxlbnQgdG86CisgICAgICAgIGBgZC5hcHBlbmRsZWZ0KGQucG9wKCkpYGAuCiAKIAotICAgRGVxdWUgb2JqZWN0cyBhbHNvIHByb3ZpZGUgb25lIHJlYWQtb25seSBhdHRyaWJ1dGU6CisgICAgRGVxdWUgb2JqZWN0cyBhbHNvIHByb3ZpZGUgb25lIHJlYWQtb25seSBhdHRyaWJ1dGU6CiAKLSAgIC4uIGF0dHJpYnV0ZTo6IG1heGxlbgorICAgIC4uIGF0dHJpYnV0ZTo6IG1heGxlbgogCi0gICAgICBNYXhpbXVtIHNpemUgb2YgYSBkZXF1ZSBvciAqTm9uZSogaWYgdW5ib3VuZGVkLgorICAgICAgICBNYXhpbXVtIHNpemUgb2YgYSBkZXF1ZSBvciAqTm9uZSogaWYgdW5ib3VuZGVkLgogCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKIAogSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlLCBkZXF1ZXMgc3VwcG9ydCBpdGVyYXRpb24sIHBpY2tsaW5nLCBgYGxlbihkKWBgLApAQCAtMzM3LDU2ICs1MDcsNTYgQEAKIAogLi4gZG9jdGVzdDo6CiAKLSAgID4+PiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQotICAgPj4+IGQgPSBkZXF1ZSgnZ2hpJykgICAgICAgICAgICAgICAgICMgbWFrZSBhIG5ldyBkZXF1ZSB3aXRoIHRocmVlIGl0ZW1zCi0gICA+Pj4gZm9yIGVsZW0gaW4gZDogICAgICAgICAgICAgICAgICAgIyBpdGVyYXRlIG92ZXIgdGhlIGRlcXVlJ3MgZWxlbWVudHMKLSAgIC4uLiAgICAgcHJpbnQoZWxlbS51cHBlcigpKQotICAgRwotICAgSAotICAgSQorICAgID4+PiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQorICAgID4+PiBkID0gZGVxdWUoJ2doaScpICAgICAgICAgICAgICAgICAjIG1ha2UgYSBuZXcgZGVxdWUgd2l0aCB0aHJlZSBpdGVtcworICAgID4+PiBmb3IgZWxlbSBpbiBkOiAgICAgICAgICAgICAgICAgICAjIGl0ZXJhdGUgb3ZlciB0aGUgZGVxdWUncyBlbGVtZW50cworICAgIC4uLiAgICAgcHJpbnQoZWxlbS51cHBlcigpKQorICAgIEcKKyAgICBICisgICAgSQogCi0gICA+Pj4gZC5hcHBlbmQoJ2onKSAgICAgICAgICAgICAgICAgICAgIyBhZGQgYSBuZXcgZW50cnkgdG8gdGhlIHJpZ2h0IHNpZGUKLSAgID4+PiBkLmFwcGVuZGxlZnQoJ2YnKSAgICAgICAgICAgICAgICAjIGFkZCBhIG5ldyBlbnRyeSB0byB0aGUgbGVmdCBzaWRlCi0gICA+Pj4gZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG93IHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGVxdWUKLSAgIGRlcXVlKFsnZicsICdnJywgJ2gnLCAnaScsICdqJ10pCisgICAgPj4+IGQuYXBwZW5kKCdqJykgICAgICAgICAgICAgICAgICAgICMgYWRkIGEgbmV3IGVudHJ5IHRvIHRoZSByaWdodCBzaWRlCisgICAgPj4+IGQuYXBwZW5kbGVmdCgnZicpICAgICAgICAgICAgICAgICMgYWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBsZWZ0IHNpZGUKKyAgICA+Pj4gZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG93IHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGVxdWUKKyAgICBkZXF1ZShbJ2YnLCAnZycsICdoJywgJ2knLCAnaiddKQogCi0gICA+Pj4gZC5wb3AoKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXR1cm4gYW5kIHJlbW92ZSB0aGUgcmlnaHRtb3N0IGl0ZW0KLSAgICdqJwotICAgPj4+IGQucG9wbGVmdCgpICAgICAgICAgICAgICAgICAgICAgICMgcmV0dXJuIGFuZCByZW1vdmUgdGhlIGxlZnRtb3N0IGl0ZW0KLSAgICdmJwotICAgPj4+IGxpc3QoZCkgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGlzdCB0aGUgY29udGVudHMgb2YgdGhlIGRlcXVlCi0gICBbJ2cnLCAnaCcsICdpJ10KLSAgID4+PiBkWzBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBlZWsgYXQgbGVmdG1vc3QgaXRlbQotICAgJ2cnCi0gICA+Pj4gZFstMV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwZWVrIGF0IHJpZ2h0bW9zdCBpdGVtCi0gICAnaScKKyAgICA+Pj4gZC5wb3AoKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXR1cm4gYW5kIHJlbW92ZSB0aGUgcmlnaHRtb3N0IGl0ZW0KKyAgICAnaicKKyAgICA+Pj4gZC5wb3BsZWZ0KCkgICAgICAgICAgICAgICAgICAgICAgIyByZXR1cm4gYW5kIHJlbW92ZSB0aGUgbGVmdG1vc3QgaXRlbQorICAgICdmJworICAgID4+PiBsaXN0KGQpICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxpc3QgdGhlIGNvbnRlbnRzIG9mIHRoZSBkZXF1ZQorICAgIFsnZycsICdoJywgJ2knXQorICAgID4+PiBkWzBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBlZWsgYXQgbGVmdG1vc3QgaXRlbQorICAgICdnJworICAgID4+PiBkWy0xXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBlZWsgYXQgcmlnaHRtb3N0IGl0ZW0KKyAgICAnaScKIAotICAgPj4+IGxpc3QocmV2ZXJzZWQoZCkpICAgICAgICAgICAgICAgICMgbGlzdCB0aGUgY29udGVudHMgb2YgYSBkZXF1ZSBpbiByZXZlcnNlCi0gICBbJ2knLCAnaCcsICdnJ10KLSAgID4+PiAnaCcgaW4gZCAgICAgICAgICAgICAgICAgICAgICAgICAjIHNlYXJjaCB0aGUgZGVxdWUKLSAgIFRydWUKLSAgID4+PiBkLmV4dGVuZCgnamtsJykgICAgICAgICAgICAgICAgICAjIGFkZCBtdWx0aXBsZSBlbGVtZW50cyBhdCBvbmNlCi0gICA+Pj4gZAotICAgZGVxdWUoWydnJywgJ2gnLCAnaScsICdqJywgJ2snLCAnbCddKQotICAgPj4+IGQucm90YXRlKDEpICAgICAgICAgICAgICAgICAgICAgICMgcmlnaHQgcm90YXRpb24KLSAgID4+PiBkCi0gICBkZXF1ZShbJ2wnLCAnZycsICdoJywgJ2knLCAnaicsICdrJ10pCi0gICA+Pj4gZC5yb3RhdGUoLTEpICAgICAgICAgICAgICAgICAgICAgIyBsZWZ0IHJvdGF0aW9uCi0gICA+Pj4gZAotICAgZGVxdWUoWydnJywgJ2gnLCAnaScsICdqJywgJ2snLCAnbCddKQorICAgID4+PiBsaXN0KHJldmVyc2VkKGQpKSAgICAgICAgICAgICAgICAjIGxpc3QgdGhlIGNvbnRlbnRzIG9mIGEgZGVxdWUgaW4gcmV2ZXJzZQorICAgIFsnaScsICdoJywgJ2cnXQorICAgID4+PiAnaCcgaW4gZCAgICAgICAgICAgICAgICAgICAgICAgICAjIHNlYXJjaCB0aGUgZGVxdWUKKyAgICBUcnVlCisgICAgPj4+IGQuZXh0ZW5kKCdqa2wnKSAgICAgICAgICAgICAgICAgICMgYWRkIG11bHRpcGxlIGVsZW1lbnRzIGF0IG9uY2UKKyAgICA+Pj4gZAorICAgIGRlcXVlKFsnZycsICdoJywgJ2knLCAnaicsICdrJywgJ2wnXSkKKyAgICA+Pj4gZC5yb3RhdGUoMSkgICAgICAgICAgICAgICAgICAgICAgIyByaWdodCByb3RhdGlvbgorICAgID4+PiBkCisgICAgZGVxdWUoWydsJywgJ2cnLCAnaCcsICdpJywgJ2onLCAnayddKQorICAgID4+PiBkLnJvdGF0ZSgtMSkgICAgICAgICAgICAgICAgICAgICAjIGxlZnQgcm90YXRpb24KKyAgICA+Pj4gZAorICAgIGRlcXVlKFsnZycsICdoJywgJ2knLCAnaicsICdrJywgJ2wnXSkKIAotICAgPj4+IGRlcXVlKHJldmVyc2VkKGQpKSAgICAgICAgICAgICAgICMgbWFrZSBhIG5ldyBkZXF1ZSBpbiByZXZlcnNlIG9yZGVyCi0gICBkZXF1ZShbJ2wnLCAnaycsICdqJywgJ2knLCAnaCcsICdnJ10pCi0gICA+Pj4gZC5jbGVhcigpICAgICAgICAgICAgICAgICAgICAgICAgIyBlbXB0eSB0aGUgZGVxdWUKLSAgID4+PiBkLnBvcCgpICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNhbm5vdCBwb3AgZnJvbSBhbiBlbXB0eSBkZXF1ZQotICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICBGaWxlICI8cHlzaGVsbCM2PiIsIGxpbmUgMSwgaW4gLXRvcGxldmVsLQotICAgICAgIGQucG9wKCkKLSAgIEluZGV4RXJyb3I6IHBvcCBmcm9tIGFuIGVtcHR5IGRlcXVlCisgICAgPj4+IGRlcXVlKHJldmVyc2VkKGQpKSAgICAgICAgICAgICAgICMgbWFrZSBhIG5ldyBkZXF1ZSBpbiByZXZlcnNlIG9yZGVyCisgICAgZGVxdWUoWydsJywgJ2snLCAnaicsICdpJywgJ2gnLCAnZyddKQorICAgID4+PiBkLmNsZWFyKCkgICAgICAgICAgICAgICAgICAgICAgICAjIGVtcHR5IHRoZSBkZXF1ZQorICAgID4+PiBkLnBvcCgpICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNhbm5vdCBwb3AgZnJvbSBhbiBlbXB0eSBkZXF1ZQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgRmlsZSAiPHB5c2hlbGwjNj4iLCBsaW5lIDEsIGluIC10b3BsZXZlbC0KKyAgICAgICAgICAgIGQucG9wKCkKKyAgICBJbmRleEVycm9yOiBwb3AgZnJvbSBhbiBlbXB0eSBkZXF1ZQogCi0gICA+Pj4gZC5leHRlbmRsZWZ0KCdhYmMnKSAgICAgICAgICAgICAgIyBleHRlbmRsZWZ0KCkgcmV2ZXJzZXMgdGhlIGlucHV0IG9yZGVyCi0gICA+Pj4gZAotICAgZGVxdWUoWydjJywgJ2InLCAnYSddKQorICAgID4+PiBkLmV4dGVuZGxlZnQoJ2FiYycpICAgICAgICAgICAgICAjIGV4dGVuZGxlZnQoKSByZXZlcnNlcyB0aGUgaW5wdXQgb3JkZXIKKyAgICA+Pj4gZAorICAgIGRlcXVlKFsnYycsICdiJywgJ2EnXSkKIAogCiA6Y2xhc3M6YGRlcXVlYCBSZWNpcGVzCkBAIC0zOTcsOSArNTY3LDEwIEBACiBCb3VuZGVkIGxlbmd0aCBkZXF1ZXMgcHJvdmlkZSBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gdGhlIGBgdGFpbGBgIGZpbHRlcgogaW4gVW5peDo6CiAKLSAgIGRlZiB0YWlsKGZpbGVuYW1lLCBuPTEwKToKLSAgICAgICAnUmV0dXJuIHRoZSBsYXN0IG4gbGluZXMgb2YgYSBmaWxlJwotICAgICAgIHJldHVybiBkZXF1ZShvcGVuKGZpbGVuYW1lKSwgbikKKyAgICBkZWYgdGFpbChmaWxlbmFtZSwgbj0xMCk6CisgICAgICAgICdSZXR1cm4gdGhlIGxhc3QgbiBsaW5lcyBvZiBhIGZpbGUnCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBkZXF1ZShmLCBuKQogCiBBbm90aGVyIGFwcHJvYWNoIHRvIHVzaW5nIGRlcXVlcyBpcyB0byBtYWludGFpbiBhIHNlcXVlbmNlIG9mIHJlY2VudGx5CiBhZGRlZCBlbGVtZW50cyBieSBhcHBlbmRpbmcgdG8gdGhlIHJpZ2h0IGFuZCBwb3BwaW5nIHRvIHRoZSBsZWZ0OjoKQEAgLTQyMCwxMCArNTkxLDEwIEBACiBkZWxldGlvbi4gIEZvciBleGFtcGxlLCBhIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIGBgZGVsIGRbbl1gYCByZWxpZXMgb24KIHRoZSA6bWV0aDpgcm90YXRlYCBtZXRob2QgdG8gcG9zaXRpb24gZWxlbWVudHMgdG8gYmUgcG9wcGVkOjoKIAotICAgZGVmIGRlbGV0ZV9udGgoZCwgbik6Ci0gICAgICAgZC5yb3RhdGUoLW4pCi0gICAgICAgZC5wb3BsZWZ0KCkKLSAgICAgICBkLnJvdGF0ZShuKQorICAgIGRlZiBkZWxldGVfbnRoKGQsIG4pOgorICAgICAgICBkLnJvdGF0ZSgtbikKKyAgICAgICAgZC5wb3BsZWZ0KCkKKyAgICAgICAgZC5yb3RhdGUobikKIAogVG8gaW1wbGVtZW50IDpjbGFzczpgZGVxdWVgIHNsaWNpbmcsIHVzZSBhIHNpbWlsYXIgYXBwcm9hY2ggYXBwbHlpbmcKIDptZXRoOmByb3RhdGVgIHRvIGJyaW5nIGEgdGFyZ2V0IGVsZW1lbnQgdG8gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGVxdWUuIFJlbW92ZQpAQCAtNDM5LDUwICs2MTAsNTAgQEAKIAogLi4gY2xhc3M6OiBkZWZhdWx0ZGljdChbZGVmYXVsdF9mYWN0b3J5WywgLi4uXV0pCiAKLSAgIFJldHVybnMgYSBuZXcgZGljdGlvbmFyeS1saWtlIG9iamVjdC4gIDpjbGFzczpgZGVmYXVsdGRpY3RgIGlzIGEgc3ViY2xhc3Mgb2YgdGhlCi0gICBidWlsdC1pbiA6Y2xhc3M6YGRpY3RgIGNsYXNzLiAgSXQgb3ZlcnJpZGVzIG9uZSBtZXRob2QgYW5kIGFkZHMgb25lIHdyaXRhYmxlCi0gICBpbnN0YW5jZSB2YXJpYWJsZS4gIFRoZSByZW1haW5pbmcgZnVuY3Rpb25hbGl0eSBpcyB0aGUgc2FtZSBhcyBmb3IgdGhlCi0gICA6Y2xhc3M6YGRpY3RgIGNsYXNzIGFuZCBpcyBub3QgZG9jdW1lbnRlZCBoZXJlLgorICAgIFJldHVybnMgYSBuZXcgZGljdGlvbmFyeS1saWtlIG9iamVjdC4gIDpjbGFzczpgZGVmYXVsdGRpY3RgIGlzIGEgc3ViY2xhc3Mgb2YgdGhlCisgICAgYnVpbHQtaW4gOmNsYXNzOmBkaWN0YCBjbGFzcy4gIEl0IG92ZXJyaWRlcyBvbmUgbWV0aG9kIGFuZCBhZGRzIG9uZSB3cml0YWJsZQorICAgIGluc3RhbmNlIHZhcmlhYmxlLiAgVGhlIHJlbWFpbmluZyBmdW5jdGlvbmFsaXR5IGlzIHRoZSBzYW1lIGFzIGZvciB0aGUKKyAgICA6Y2xhc3M6YGRpY3RgIGNsYXNzIGFuZCBpcyBub3QgZG9jdW1lbnRlZCBoZXJlLgogCi0gICBUaGUgZmlyc3QgYXJndW1lbnQgcHJvdmlkZXMgdGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YAotICAgYXR0cmlidXRlOyBpdCBkZWZhdWx0cyB0byBgYE5vbmVgYC4gQWxsIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRyZWF0ZWQgdGhlIHNhbWUKLSAgIGFzIGlmIHRoZXkgd2VyZSBwYXNzZWQgdG8gdGhlIDpjbGFzczpgZGljdGAgY29uc3RydWN0b3IsIGluY2x1ZGluZyBrZXl3b3JkCi0gICBhcmd1bWVudHMuCisgICAgVGhlIGZpcnN0IGFyZ3VtZW50IHByb3ZpZGVzIHRoZSBpbml0aWFsIHZhbHVlIGZvciB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAKKyAgICBhdHRyaWJ1dGU7IGl0IGRlZmF1bHRzIHRvIGBgTm9uZWBgLiBBbGwgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdHJlYXRlZCB0aGUgc2FtZQorICAgIGFzIGlmIHRoZXkgd2VyZSBwYXNzZWQgdG8gdGhlIDpjbGFzczpgZGljdGAgY29uc3RydWN0b3IsIGluY2x1ZGluZyBrZXl3b3JkCisgICAgYXJndW1lbnRzLgogCiAKLSAgIDpjbGFzczpgZGVmYXVsdGRpY3RgIG9iamVjdHMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGhvZCBpbiBhZGRpdGlvbiB0byB0aGUKLSAgIHN0YW5kYXJkIDpjbGFzczpgZGljdGAgb3BlcmF0aW9uczoKKyAgICA6Y2xhc3M6YGRlZmF1bHRkaWN0YCBvYmplY3RzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBtZXRob2QgaW4gYWRkaXRpb24gdG8gdGhlCisgICAgc3RhbmRhcmQgOmNsYXNzOmBkaWN0YCBvcGVyYXRpb25zOgogCi0gICAuLiBtZXRob2Q6OiBfX21pc3NpbmdfXyhrZXkpCisgICAgLi4gbWV0aG9kOjogX19taXNzaW5nX18oa2V5KQogCi0gICAgICBJZiB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAgYXR0cmlidXRlIGlzIGBgTm9uZWBgLCB0aGlzIHJhaXNlcyBhCi0gICAgICA6ZXhjOmBLZXlFcnJvcmAgZXhjZXB0aW9uIHdpdGggdGhlICprZXkqIGFzIGFyZ3VtZW50LgorICAgICAgICBJZiB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAgYXR0cmlidXRlIGlzIGBgTm9uZWBgLCB0aGlzIHJhaXNlcyBhCisgICAgICAgIDpleGM6YEtleUVycm9yYCBleGNlcHRpb24gd2l0aCB0aGUgKmtleSogYXMgYXJndW1lbnQuCiAKLSAgICAgIElmIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIGlzIG5vdCBgYE5vbmVgYCwgaXQgaXMgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzCi0gICAgICB0byBwcm92aWRlIGEgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGdpdmVuICprZXkqLCB0aGlzIHZhbHVlIGlzIGluc2VydGVkIGluCi0gICAgICB0aGUgZGljdGlvbmFyeSBmb3IgdGhlICprZXkqLCBhbmQgcmV0dXJuZWQuCisgICAgICAgIElmIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIGlzIG5vdCBgYE5vbmVgYCwgaXQgaXMgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzCisgICAgICAgIHRvIHByb3ZpZGUgYSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgZ2l2ZW4gKmtleSosIHRoaXMgdmFsdWUgaXMgaW5zZXJ0ZWQgaW4KKyAgICAgICAgdGhlIGRpY3Rpb25hcnkgZm9yIHRoZSAqa2V5KiwgYW5kIHJldHVybmVkLgogCi0gICAgICBJZiBjYWxsaW5nIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIHJhaXNlcyBhbiBleGNlcHRpb24gdGhpcyBleGNlcHRpb24gaXMKLSAgICAgIHByb3BhZ2F0ZWQgdW5jaGFuZ2VkLgorICAgICAgICBJZiBjYWxsaW5nIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIHJhaXNlcyBhbiBleGNlcHRpb24gdGhpcyBleGNlcHRpb24gaXMKKyAgICAgICAgcHJvcGFnYXRlZCB1bmNoYW5nZWQuCiAKLSAgICAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgOm1ldGg6YF9fZ2V0aXRlbV9fYCBtZXRob2Qgb2YgdGhlCi0gICAgICA6Y2xhc3M6YGRpY3RgIGNsYXNzIHdoZW4gdGhlIHJlcXVlc3RlZCBrZXkgaXMgbm90IGZvdW5kOyB3aGF0ZXZlciBpdAotICAgICAgcmV0dXJucyBvciByYWlzZXMgaXMgdGhlbiByZXR1cm5lZCBvciByYWlzZWQgYnkgOm1ldGg6YF9fZ2V0aXRlbV9fYC4KKyAgICAgICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSA6bWV0aDpgX19nZXRpdGVtX19gIG1ldGhvZCBvZiB0aGUKKyAgICAgICAgOmNsYXNzOmBkaWN0YCBjbGFzcyB3aGVuIHRoZSByZXF1ZXN0ZWQga2V5IGlzIG5vdCBmb3VuZDsgd2hhdGV2ZXIgaXQKKyAgICAgICAgcmV0dXJucyBvciByYWlzZXMgaXMgdGhlbiByZXR1cm5lZCBvciByYWlzZWQgYnkgOm1ldGg6YF9fZ2V0aXRlbV9fYC4KIAotICAgICAgTm90ZSB0aGF0IDptZXRoOmBfX21pc3NpbmdfX2AgaXMgKm5vdCogY2FsbGVkIGZvciBhbnkgb3BlcmF0aW9ucyBiZXNpZGVzCi0gICAgICA6bWV0aDpgX19nZXRpdGVtX19gLiBUaGlzIG1lYW5zIHRoYXQgOm1ldGg6YGdldGAgd2lsbCwgbGlrZSBub3JtYWwKLSAgICAgIGRpY3Rpb25hcmllcywgcmV0dXJuIGBgTm9uZWBgIGFzIGEgZGVmYXVsdCByYXRoZXIgdGhhbiB1c2luZwotICAgICAgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAuCisgICAgICAgIE5vdGUgdGhhdCA6bWV0aDpgX19taXNzaW5nX19gIGlzICpub3QqIGNhbGxlZCBmb3IgYW55IG9wZXJhdGlvbnMgYmVzaWRlcworICAgICAgICA6bWV0aDpgX19nZXRpdGVtX19gLiBUaGlzIG1lYW5zIHRoYXQgOm1ldGg6YGdldGAgd2lsbCwgbGlrZSBub3JtYWwKKyAgICAgICAgZGljdGlvbmFyaWVzLCByZXR1cm4gYGBOb25lYGAgYXMgYSBkZWZhdWx0IHJhdGhlciB0aGFuIHVzaW5nCisgICAgICAgIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgLgogCiAKLSAgIDpjbGFzczpgZGVmYXVsdGRpY3RgIG9iamVjdHMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIGluc3RhbmNlIHZhcmlhYmxlOgorICAgIDpjbGFzczpgZGVmYXVsdGRpY3RgIG9iamVjdHMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIGluc3RhbmNlIHZhcmlhYmxlOgogCiAKLSAgIC4uIGF0dHJpYnV0ZTo6IGRlZmF1bHRfZmFjdG9yeQorICAgIC4uIGF0dHJpYnV0ZTo6IGRlZmF1bHRfZmFjdG9yeQogCi0gICAgICBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIGJ5IHRoZSA6bWV0aDpgX19taXNzaW5nX19gIG1ldGhvZDsgaXQgaXMKLSAgICAgIGluaXRpYWxpemVkIGZyb20gdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBjb25zdHJ1Y3RvciwgaWYgcHJlc2VudCwgb3IgdG8KLSAgICAgIGBgTm9uZWBgLCBpZiBhYnNlbnQuCisgICAgICAgIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgYnkgdGhlIDptZXRoOmBfX21pc3NpbmdfX2AgbWV0aG9kOyBpdCBpcworICAgICAgICBpbml0aWFsaXplZCBmcm9tIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgY29uc3RydWN0b3IsIGlmIHByZXNlbnQsIG9yIHRvCisgICAgICAgIGBgTm9uZWBgLCBpZiBhYnNlbnQuCiAKIAogOmNsYXNzOmBkZWZhdWx0ZGljdGAgRXhhbXBsZXMKQEAgLTQ5MSwxMyArNjYyLDEzIEBACiBVc2luZyA6Y2xhc3M6YGxpc3RgIGFzIHRoZSA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YCwgaXQgaXMgZWFzeSB0byBncm91cCBhCiBzZXF1ZW5jZSBvZiBrZXktdmFsdWUgcGFpcnMgaW50byBhIGRpY3Rpb25hcnkgb2YgbGlzdHM6CiAKLSAgID4+PiBzID0gWygneWVsbG93JywgMSksICgnYmx1ZScsIDIpLCAoJ3llbGxvdycsIDMpLCAoJ2JsdWUnLCA0KSwgKCdyZWQnLCAxKV0KLSAgID4+PiBkID0gZGVmYXVsdGRpY3QobGlzdCkKLSAgID4+PiBmb3IgaywgdiBpbiBzOgotICAgLi4uICAgICBkW2tdLmFwcGVuZCh2KQotICAgLi4uCi0gICA+Pj4gbGlzdChkLml0ZW1zKCkpCi0gICBbKCdibHVlJywgWzIsIDRdKSwgKCdyZWQnLCBbMV0pLCAoJ3llbGxvdycsIFsxLCAzXSldCisgICAgPj4+IHMgPSBbKCd5ZWxsb3cnLCAxKSwgKCdibHVlJywgMiksICgneWVsbG93JywgMyksICgnYmx1ZScsIDQpLCAoJ3JlZCcsIDEpXQorICAgID4+PiBkID0gZGVmYXVsdGRpY3QobGlzdCkKKyAgICA+Pj4gZm9yIGssIHYgaW4gczoKKyAgICAuLi4gICAgIGRba10uYXBwZW5kKHYpCisgICAgLi4uCisgICAgPj4+IGxpc3QoZC5pdGVtcygpKQorICAgIFsoJ2JsdWUnLCBbMiwgNF0pLCAoJ3JlZCcsIFsxXSksICgneWVsbG93JywgWzEsIDNdKV0KIAogV2hlbiBlYWNoIGtleSBpcyBlbmNvdW50ZXJlZCBmb3IgdGhlIGZpcnN0IHRpbWUsIGl0IGlzIG5vdCBhbHJlYWR5IGluIHRoZQogbWFwcGluZzsgc28gYW4gZW50cnkgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHVzaW5nIHRoZSA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YApAQCAtNTA3LDI0ICs2NzgsMjQgQEAKIDptZXRoOmBsaXN0LmFwcGVuZGAgb3BlcmF0aW9uIGFkZHMgYW5vdGhlciB2YWx1ZSB0byB0aGUgbGlzdC4gVGhpcyB0ZWNobmlxdWUgaXMKIHNpbXBsZXIgYW5kIGZhc3RlciB0aGFuIGFuIGVxdWl2YWxlbnQgdGVjaG5pcXVlIHVzaW5nIDptZXRoOmBkaWN0LnNldGRlZmF1bHRgOgogCi0gICA+Pj4gZCA9IHt9Ci0gICA+Pj4gZm9yIGssIHYgaW4gczoKLSAgIC4uLiAgICAgZC5zZXRkZWZhdWx0KGssIFtdKS5hcHBlbmQodikKLSAgIC4uLgotICAgPj4+IGxpc3QoZC5pdGVtcygpKQotICAgWygnYmx1ZScsIFsyLCA0XSksICgncmVkJywgWzFdKSwgKCd5ZWxsb3cnLCBbMSwgM10pXQorICAgID4+PiBkID0ge30KKyAgICA+Pj4gZm9yIGssIHYgaW4gczoKKyAgICAuLi4gICAgIGQuc2V0ZGVmYXVsdChrLCBbXSkuYXBwZW5kKHYpCisgICAgLi4uCisgICAgPj4+IGxpc3QoZC5pdGVtcygpKQorICAgIFsoJ2JsdWUnLCBbMiwgNF0pLCAoJ3JlZCcsIFsxXSksICgneWVsbG93JywgWzEsIDNdKV0KIAogU2V0dGluZyB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAgdG8gOmNsYXNzOmBpbnRgIG1ha2VzIHRoZQogOmNsYXNzOmBkZWZhdWx0ZGljdGAgdXNlZnVsIGZvciBjb3VudGluZyAobGlrZSBhIGJhZyBvciBtdWx0aXNldCBpbiBvdGhlcgogbGFuZ3VhZ2VzKToKIAotICAgPj4+IHMgPSAnbWlzc2lzc2lwcGknCi0gICA+Pj4gZCA9IGRlZmF1bHRkaWN0KGludCkKLSAgID4+PiBmb3IgayBpbiBzOgotICAgLi4uICAgICBkW2tdICs9IDEKLSAgIC4uLgotICAgPj4+IGxpc3QoZC5pdGVtcygpKQotICAgWygnaScsIDQpLCAoJ3AnLCAyKSwgKCdzJywgNCksICgnbScsIDEpXQorICAgID4+PiBzID0gJ21pc3Npc3NpcHBpJworICAgID4+PiBkID0gZGVmYXVsdGRpY3QoaW50KQorICAgID4+PiBmb3IgayBpbiBzOgorICAgIC4uLiAgICAgZFtrXSArPSAxCisgICAgLi4uCisgICAgPj4+IGxpc3QoZC5pdGVtcygpKQorICAgIFsoJ2knLCA0KSwgKCdwJywgMiksICgncycsIDQpLCAoJ20nLCAxKV0KIAogV2hlbiBhIGxldHRlciBpcyBmaXJzdCBlbmNvdW50ZXJlZCwgaXQgaXMgbWlzc2luZyBmcm9tIHRoZSBtYXBwaW5nLCBzbyB0aGUKIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIGZ1bmN0aW9uIGNhbGxzIDpmdW5jOmBpbnRgIHRvIHN1cHBseSBhIGRlZmF1bHQgY291bnQgb2YKQEAgLTUzNSwyMyArNzA2LDIzIEBACiBpcyB0byB1c2UgYSBsYW1iZGEgZnVuY3Rpb24gd2hpY2ggY2FuIHN1cHBseSBhbnkgY29uc3RhbnQgdmFsdWUgKG5vdCBqdXN0CiB6ZXJvKToKIAotICAgPj4+IGRlZiBjb25zdGFudF9mYWN0b3J5KHZhbHVlKToKLSAgIC4uLiAgICAgcmV0dXJuIGxhbWJkYTogdmFsdWUKLSAgID4+PiBkID0gZGVmYXVsdGRpY3QoY29uc3RhbnRfZmFjdG9yeSgnPG1pc3Npbmc+JykpCi0gICA+Pj4gZC51cGRhdGUobmFtZT0nSm9obicsIGFjdGlvbj0ncmFuJykKLSAgID4+PiAnJShuYW1lKXMgJShhY3Rpb24pcyB0byAlKG9iamVjdClzJyAlIGQKLSAgICdKb2huIHJhbiB0byA8bWlzc2luZz4nCisgICAgPj4+IGRlZiBjb25zdGFudF9mYWN0b3J5KHZhbHVlKToKKyAgICAuLi4gICAgIHJldHVybiBsYW1iZGE6IHZhbHVlCisgICAgPj4+IGQgPSBkZWZhdWx0ZGljdChjb25zdGFudF9mYWN0b3J5KCc8bWlzc2luZz4nKSkKKyAgICA+Pj4gZC51cGRhdGUobmFtZT0nSm9obicsIGFjdGlvbj0ncmFuJykKKyAgICA+Pj4gJyUobmFtZSlzICUoYWN0aW9uKXMgdG8gJShvYmplY3QpcycgJSBkCisgICAgJ0pvaG4gcmFuIHRvIDxtaXNzaW5nPicKIAogU2V0dGluZyB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAgdG8gOmNsYXNzOmBzZXRgIG1ha2VzIHRoZQogOmNsYXNzOmBkZWZhdWx0ZGljdGAgdXNlZnVsIGZvciBidWlsZGluZyBhIGRpY3Rpb25hcnkgb2Ygc2V0czoKIAotICAgPj4+IHMgPSBbKCdyZWQnLCAxKSwgKCdibHVlJywgMiksICgncmVkJywgMyksICgnYmx1ZScsIDQpLCAoJ3JlZCcsIDEpLCAoJ2JsdWUnLCA0KV0KLSAgID4+PiBkID0gZGVmYXVsdGRpY3Qoc2V0KQotICAgPj4+IGZvciBrLCB2IGluIHM6Ci0gICAuLi4gICAgIGRba10uYWRkKHYpCi0gICAuLi4KLSAgID4+PiBsaXN0KGQuaXRlbXMoKSkKLSAgIFsoJ2JsdWUnLCBzZXQoWzIsIDRdKSksICgncmVkJywgc2V0KFsxLCAzXSkpXQorICAgID4+PiBzID0gWygncmVkJywgMSksICgnYmx1ZScsIDIpLCAoJ3JlZCcsIDMpLCAoJ2JsdWUnLCA0KSwgKCdyZWQnLCAxKSwgKCdibHVlJywgNCldCisgICAgPj4+IGQgPSBkZWZhdWx0ZGljdChzZXQpCisgICAgPj4+IGZvciBrLCB2IGluIHM6CisgICAgLi4uICAgICBkW2tdLmFkZCh2KQorICAgIC4uLgorICAgID4+PiBsaXN0KGQuaXRlbXMoKSkKKyAgICBbKCdibHVlJywgezIsIDR9KSwgKCdyZWQnLCB7MSwgM30pXQogCiAKIDpmdW5jOmBuYW1lZHR1cGxlYCBGYWN0b3J5IEZ1bmN0aW9uIGZvciBUdXBsZXMgd2l0aCBOYW1lZCBGaWVsZHMKQEAgLTU2MywxNjggKzczNCwxMzEgQEAKIAogLi4gZnVuY3Rpb246OiBuYW1lZHR1cGxlKHR5cGVuYW1lLCBmaWVsZF9uYW1lcywgdmVyYm9zZT1GYWxzZSwgcmVuYW1lPUZhbHNlKQogCi0gICBSZXR1cm5zIGEgbmV3IHR1cGxlIHN1YmNsYXNzIG5hbWVkICp0eXBlbmFtZSouICBUaGUgbmV3IHN1YmNsYXNzIGlzIHVzZWQgdG8KLSAgIGNyZWF0ZSB0dXBsZS1saWtlIG9iamVjdHMgdGhhdCBoYXZlIGZpZWxkcyBhY2Nlc3NpYmxlIGJ5IGF0dHJpYnV0ZSBsb29rdXAgYXMKLSAgIHdlbGwgYXMgYmVpbmcgaW5kZXhhYmxlIGFuZCBpdGVyYWJsZS4gIEluc3RhbmNlcyBvZiB0aGUgc3ViY2xhc3MgYWxzbyBoYXZlIGEKLSAgIGhlbHBmdWwgZG9jc3RyaW5nICh3aXRoIHR5cGVuYW1lIGFuZCBmaWVsZF9uYW1lcykgYW5kIGEgaGVscGZ1bCA6bWV0aDpgX19yZXByX19gCi0gICBtZXRob2Qgd2hpY2ggbGlzdHMgdGhlIHR1cGxlIGNvbnRlbnRzIGluIGEgYGBuYW1lPXZhbHVlYGAgZm9ybWF0LgorICAgIFJldHVybnMgYSBuZXcgdHVwbGUgc3ViY2xhc3MgbmFtZWQgKnR5cGVuYW1lKi4gIFRoZSBuZXcgc3ViY2xhc3MgaXMgdXNlZCB0bworICAgIGNyZWF0ZSB0dXBsZS1saWtlIG9iamVjdHMgdGhhdCBoYXZlIGZpZWxkcyBhY2Nlc3NpYmxlIGJ5IGF0dHJpYnV0ZSBsb29rdXAgYXMKKyAgICB3ZWxsIGFzIGJlaW5nIGluZGV4YWJsZSBhbmQgaXRlcmFibGUuICBJbnN0YW5jZXMgb2YgdGhlIHN1YmNsYXNzIGFsc28gaGF2ZSBhCisgICAgaGVscGZ1bCBkb2NzdHJpbmcgKHdpdGggdHlwZW5hbWUgYW5kIGZpZWxkX25hbWVzKSBhbmQgYSBoZWxwZnVsIDptZXRoOmBfX3JlcHJfX2AKKyAgICBtZXRob2Qgd2hpY2ggbGlzdHMgdGhlIHR1cGxlIGNvbnRlbnRzIGluIGEgYGBuYW1lPXZhbHVlYGAgZm9ybWF0LgogCi0gICBUaGUgKmZpZWxkX25hbWVzKiBhcmUgYSBzaW5nbGUgc3RyaW5nIHdpdGggZWFjaCBmaWVsZG5hbWUgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UKLSAgIGFuZC9vciBjb21tYXMsIGZvciBleGFtcGxlIGBgJ3ggeSdgYCBvciBgYCd4LCB5J2BgLiAgQWx0ZXJuYXRpdmVseSwgKmZpZWxkX25hbWVzKgotICAgY2FuIGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBzdWNoIGFzIGBgWyd4JywgJ3knXWBgLgorICAgIFRoZSAqZmllbGRfbmFtZXMqIGFyZSBhIHNpbmdsZSBzdHJpbmcgd2l0aCBlYWNoIGZpZWxkbmFtZSBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZQorICAgIGFuZC9vciBjb21tYXMsIGZvciBleGFtcGxlIGBgJ3ggeSdgYCBvciBgYCd4LCB5J2BgLiAgQWx0ZXJuYXRpdmVseSwgKmZpZWxkX25hbWVzKgorICAgIGNhbiBiZSBhIHNlcXVlbmNlIG9mIHN0cmluZ3Mgc3VjaCBhcyBgYFsneCcsICd5J11gYC4KIAotICAgQW55IHZhbGlkIFB5dGhvbiBpZGVudGlmaWVyIG1heSBiZSB1c2VkIGZvciBhIGZpZWxkbmFtZSBleGNlcHQgZm9yIG5hbWVzCi0gICBzdGFydGluZyB3aXRoIGFuIHVuZGVyc2NvcmUuICBWYWxpZCBpZGVudGlmaWVycyBjb25zaXN0IG9mIGxldHRlcnMsIGRpZ2l0cywKLSAgIGFuZCB1bmRlcnNjb3JlcyBidXQgZG8gbm90IHN0YXJ0IHdpdGggYSBkaWdpdCBvciB1bmRlcnNjb3JlIGFuZCBjYW5ub3QgYmUKLSAgIGEgOm1vZDpga2V5d29yZGAgc3VjaCBhcyAqY2xhc3MqLCAqZm9yKiwgKnJldHVybiosICpnbG9iYWwqLCAqcGFzcyosCi0gICBvciAqcmFpc2UqLgorICAgIEFueSB2YWxpZCBQeXRob24gaWRlbnRpZmllciBtYXkgYmUgdXNlZCBmb3IgYSBmaWVsZG5hbWUgZXhjZXB0IGZvciBuYW1lcworICAgIHN0YXJ0aW5nIHdpdGggYW4gdW5kZXJzY29yZS4gIFZhbGlkIGlkZW50aWZpZXJzIGNvbnNpc3Qgb2YgbGV0dGVycywgZGlnaXRzLAorICAgIGFuZCB1bmRlcnNjb3JlcyBidXQgZG8gbm90IHN0YXJ0IHdpdGggYSBkaWdpdCBvciB1bmRlcnNjb3JlIGFuZCBjYW5ub3QgYmUKKyAgICBhIDptb2Q6YGtleXdvcmRgIHN1Y2ggYXMgKmNsYXNzKiwgKmZvciosICpyZXR1cm4qLCAqZ2xvYmFsKiwgKnBhc3MqLAorICAgIG9yICpyYWlzZSouCiAKLSAgIElmICpyZW5hbWUqIGlzIHRydWUsIGludmFsaWQgZmllbGRuYW1lcyBhcmUgYXV0b21hdGljYWxseSByZXBsYWNlZAotICAgd2l0aCBwb3NpdGlvbmFsIG5hbWVzLiAgRm9yIGV4YW1wbGUsIGBgWydhYmMnLCAnZGVmJywgJ2doaScsICdhYmMnXWBgIGlzCi0gICBjb252ZXJ0ZWQgdG8gYGBbJ2FiYycsICdfMScsICdnaGknLCAnXzMnXWBgLCBlbGltaW5hdGluZyB0aGUga2V5d29yZAotICAgYGBkZWZgYCBhbmQgdGhlIGR1cGxpY2F0ZSBmaWVsZG5hbWUgYGBhYmNgYC4KKyAgICBJZiAqcmVuYW1lKiBpcyB0cnVlLCBpbnZhbGlkIGZpZWxkbmFtZXMgYXJlIGF1dG9tYXRpY2FsbHkgcmVwbGFjZWQKKyAgICB3aXRoIHBvc2l0aW9uYWwgbmFtZXMuICBGb3IgZXhhbXBsZSwgYGBbJ2FiYycsICdkZWYnLCAnZ2hpJywgJ2FiYyddYGAgaXMKKyAgICBjb252ZXJ0ZWQgdG8gYGBbJ2FiYycsICdfMScsICdnaGknLCAnXzMnXWBgLCBlbGltaW5hdGluZyB0aGUga2V5d29yZAorICAgIGBgZGVmYGAgYW5kIHRoZSBkdXBsaWNhdGUgZmllbGRuYW1lIGBgYWJjYGAuCiAKLSAgIElmICp2ZXJib3NlKiBpcyB0cnVlLCB0aGUgY2xhc3MgZGVmaW5pdGlvbiBpcyBwcmludGVkIGp1c3QgYmVmb3JlIGJlaW5nIGJ1aWx0LgorICAgIElmICp2ZXJib3NlKiBpcyB0cnVlLCB0aGUgY2xhc3MgZGVmaW5pdGlvbiBpcyBwcmludGVkIGFmdGVyIGl0IGlzCisgICAgYnVpbHQuICBUaGlzIG9wdGlvbiBpcyBvdXRkYXRlZDsgaW5zdGVhZCwgaXQgaXMgc2ltcGxlciB0byBwcmludCB0aGUKKyAgICA6YXR0cjpgX3NvdXJjZWAgYXR0cmlidXRlLgogCi0gICBOYW1lZCB0dXBsZSBpbnN0YW5jZXMgZG8gbm90IGhhdmUgcGVyLWluc3RhbmNlIGRpY3Rpb25hcmllcywgc28gdGhleSBhcmUKLSAgIGxpZ2h0d2VpZ2h0IGFuZCByZXF1aXJlIG5vIG1vcmUgbWVtb3J5IHRoYW4gcmVndWxhciB0dXBsZXMuCisgICAgTmFtZWQgdHVwbGUgaW5zdGFuY2VzIGRvIG5vdCBoYXZlIHBlci1pbnN0YW5jZSBkaWN0aW9uYXJpZXMsIHNvIHRoZXkgYXJlCisgICAgbGlnaHR3ZWlnaHQgYW5kIHJlcXVpcmUgbm8gbW9yZSBtZW1vcnkgdGhhbiByZWd1bGFyIHR1cGxlcy4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKLSAgICAgIEFkZGVkIHN1cHBvcnQgZm9yICpyZW5hbWUqLgorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yICpyZW5hbWUqLgogCiAKIC4uIGRvY3Rlc3Q6OgotICAgOm9wdGlvbnM6ICtOT1JNQUxJWkVfV0hJVEVTUEFDRQorICAgIDpvcHRpb25zOiArTk9STUFMSVpFX1dISVRFU1BBQ0UKIAotICAgPj4+ICMgQmFzaWMgZXhhbXBsZQotICAgPj4+IFBvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCBbJ3gnLCAneSddKQotICAgPj4+IHAgPSBQb2ludCh4PTEwLCB5PTExKQotCi0gICA+Pj4gIyBFeGFtcGxlIHVzaW5nIHRoZSB2ZXJib3NlIG9wdGlvbiB0byBwcmludCB0aGUgY2xhc3MgZGVmaW5pdGlvbgotICAgPj4+IFBvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JywgdmVyYm9zZT1UcnVlKQotICAgY2xhc3MgUG9pbnQodHVwbGUpOgotICAgICAgICAgICAnUG9pbnQoeCwgeSknCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICBfX3Nsb3RzX18gPSAoKQotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgX2ZpZWxkcyA9ICgneCcsICd5JykKLSAgIDxCTEFOS0xJTkU+Ci0gICAgICAgICAgIGRlZiBfX25ld19fKF9jbHMsIHgsIHkpOgotICAgICAgICAgICAgICAgJ0NyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBQb2ludCh4LCB5KScKLSAgICAgICAgICAgICAgIHJldHVybiBfdHVwbGUuX19uZXdfXyhfY2xzLCAoeCwgeSkpCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICBAY2xhc3NtZXRob2QKLSAgICAgICAgICAgZGVmIF9tYWtlKGNscywgaXRlcmFibGUsIG5ldz10dXBsZS5fX25ld19fLCBsZW49bGVuKToKLSAgICAgICAgICAgICAgICdNYWtlIGEgbmV3IFBvaW50IG9iamVjdCBmcm9tIGEgc2VxdWVuY2Ugb3IgaXRlcmFibGUnCi0gICAgICAgICAgICAgICByZXN1bHQgPSBuZXcoY2xzLCBpdGVyYWJsZSkKLSAgICAgICAgICAgICAgIGlmIGxlbihyZXN1bHQpICE9IDI6Ci0gICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdFeHBlY3RlZCAyIGFyZ3VtZW50cywgZ290ICVkJyAlIGxlbihyZXN1bHQpKQotICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICAgICAgICAgJ1JldHVybiBhIG5pY2VseSBmb3JtYXR0ZWQgcmVwcmVzZW50YXRpb24gc3RyaW5nJwotICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fICsgJyh4PSVyLCB5PSVyKScgJSBzZWxmCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICBkZWYgX2FzZGljdChzZWxmKToKLSAgICAgICAgICAgICAgICdSZXR1cm4gYSBuZXcgT3JkZXJlZERpY3Qgd2hpY2ggbWFwcyBmaWVsZCBuYW1lcyB0byB0aGVpciB2YWx1ZXMnCi0gICAgICAgICAgICAgICByZXR1cm4gT3JkZXJlZERpY3QoemlwKHNlbGYuX2ZpZWxkcywgc2VsZikpCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICBfX2RpY3RfXyA9IHByb3BlcnR5KF9hc2RpY3QpCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICBkZWYgX3JlcGxhY2UoX3NlbGYsICoqa3dkcyk6Ci0gICAgICAgICAgICAgICAnUmV0dXJuIGEgbmV3IFBvaW50IG9iamVjdCByZXBsYWNpbmcgc3BlY2lmaWVkIGZpZWxkcyB3aXRoIG5ldyB2YWx1ZXMnCi0gICAgICAgICAgICAgICByZXN1bHQgPSBfc2VsZi5fbWFrZShtYXAoa3dkcy5wb3AsICgneCcsICd5JyksIF9zZWxmKSkKLSAgICAgICAgICAgICAgIGlmIGt3ZHM6Ci0gICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignR290IHVuZXhwZWN0ZWQgZmllbGQgbmFtZXM6ICVyJyAlIGxpc3Qoa3dkcy5rZXlzKCkpKQotICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgZGVmIF9fZ2V0bmV3YXJnc19fKHNlbGYpOgotICAgICAgICAgICAgICAgJ1JldHVybiBzZWxmIGFzIGEgcGxhaW4gdHVwbGUuICAgVXNlZCBieSBjb3B5IGFuZCBwaWNrbGUuJwotICAgICAgICAgICAgICAgcmV0dXJuIHR1cGxlKHNlbGYpCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICB4ID0gX3Byb3BlcnR5KF9pdGVtZ2V0dGVyKDApLCBkb2M9J0FsaWFzIGZvciBmaWVsZCBudW1iZXIgMCcpCi0gICAgICAgICAgIHkgPSBfcHJvcGVydHkoX2l0ZW1nZXR0ZXIoMSksIGRvYz0nQWxpYXMgZm9yIGZpZWxkIG51bWJlciAxJykKLQotICAgPj4+IHAgPSBQb2ludCgxMSwgeT0yMikgICAgICMgaW5zdGFudGlhdGUgd2l0aCBwb3NpdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzCi0gICA+Pj4gcFswXSArIHBbMV0gICAgICAgICAgICAgIyBpbmRleGFibGUgbGlrZSB0aGUgcGxhaW4gdHVwbGUgKDExLCAyMikKLSAgIDMzCi0gICA+Pj4geCwgeSA9IHAgICAgICAgICAgICAgICAgIyB1bnBhY2sgbGlrZSBhIHJlZ3VsYXIgdHVwbGUKLSAgID4+PiB4LCB5Ci0gICAoMTEsIDIyKQotICAgPj4+IHAueCArIHAueSAgICAgICAgICAgICAgICMgZmllbGRzIGFsc28gYWNjZXNzaWJsZSBieSBuYW1lCi0gICAzMwotICAgPj4+IHAgICAgICAgICAgICAgICAgICAgICAgICMgcmVhZGFibGUgX19yZXByX18gd2l0aCBhIG5hbWU9dmFsdWUgc3R5bGUKLSAgIFBvaW50KHg9MTEsIHk9MjIpCisgICAgPj4+ICMgQmFzaWMgZXhhbXBsZQorICAgID4+PiBQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgWyd4JywgJ3knXSkKKyAgICA+Pj4gcCA9IFBvaW50KDExLCB5PTIyKSAgICAgIyBpbnN0YW50aWF0ZSB3aXRoIHBvc2l0aW9uYWwgb3Iga2V5d29yZCBhcmd1bWVudHMKKyAgICA+Pj4gcFswXSArIHBbMV0gICAgICAgICAgICAgIyBpbmRleGFibGUgbGlrZSB0aGUgcGxhaW4gdHVwbGUgKDExLCAyMikKKyAgICAzMworICAgID4+PiB4LCB5ID0gcCAgICAgICAgICAgICAgICAjIHVucGFjayBsaWtlIGEgcmVndWxhciB0dXBsZQorICAgID4+PiB4LCB5CisgICAgKDExLCAyMikKKyAgICA+Pj4gcC54ICsgcC55ICAgICAgICAgICAgICAgIyBmaWVsZHMgYWxzbyBhY2Nlc3NpYmxlIGJ5IG5hbWUKKyAgICAzMworICAgID4+PiBwICAgICAgICAgICAgICAgICAgICAgICAjIHJlYWRhYmxlIF9fcmVwcl9fIHdpdGggYSBuYW1lPXZhbHVlIHN0eWxlCisgICAgUG9pbnQoeD0xMSwgeT0yMikKIAogTmFtZWQgdHVwbGVzIGFyZSBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IgYXNzaWduaW5nIGZpZWxkIG5hbWVzIHRvIHJlc3VsdCB0dXBsZXMgcmV0dXJuZWQKIGJ5IHRoZSA6bW9kOmBjc3ZgIG9yIDptb2Q6YHNxbGl0ZTNgIG1vZHVsZXM6OgogCi0gICBFbXBsb3llZVJlY29yZCA9IG5hbWVkdHVwbGUoJ0VtcGxveWVlUmVjb3JkJywgJ25hbWUsIGFnZSwgdGl0bGUsIGRlcGFydG1lbnQsIHBheWdyYWRlJykKKyAgICBFbXBsb3llZVJlY29yZCA9IG5hbWVkdHVwbGUoJ0VtcGxveWVlUmVjb3JkJywgJ25hbWUsIGFnZSwgdGl0bGUsIGRlcGFydG1lbnQsIHBheWdyYWRlJykKIAotICAgaW1wb3J0IGNzdgotICAgZm9yIGVtcCBpbiBtYXAoRW1wbG95ZWVSZWNvcmQuX21ha2UsIGNzdi5yZWFkZXIob3BlbigiZW1wbG95ZWVzLmNzdiIsICJyYiIpKSk6Ci0gICAgICAgcHJpbnQoZW1wLm5hbWUsIGVtcC50aXRsZSkKKyAgICBpbXBvcnQgY3N2CisgICAgZm9yIGVtcCBpbiBtYXAoRW1wbG95ZWVSZWNvcmQuX21ha2UsIGNzdi5yZWFkZXIob3BlbigiZW1wbG95ZWVzLmNzdiIsICJyYiIpKSk6CisgICAgICAgIHByaW50KGVtcC5uYW1lLCBlbXAudGl0bGUpCiAKLSAgIGltcG9ydCBzcWxpdGUzCi0gICBjb25uID0gc3FsaXRlMy5jb25uZWN0KCcvY29tcGFueWRhdGEnKQotICAgY3Vyc29yID0gY29ubi5jdXJzb3IoKQotICAgY3Vyc29yLmV4ZWN1dGUoJ1NFTEVDVCBuYW1lLCBhZ2UsIHRpdGxlLCBkZXBhcnRtZW50LCBwYXlncmFkZSBGUk9NIGVtcGxveWVlcycpCi0gICBmb3IgZW1wIGluIG1hcChFbXBsb3llZVJlY29yZC5fbWFrZSwgY3Vyc29yLmZldGNoYWxsKCkpOgotICAgICAgIHByaW50KGVtcC5uYW1lLCBlbXAudGl0bGUpCisgICAgaW1wb3J0IHNxbGl0ZTMKKyAgICBjb25uID0gc3FsaXRlMy5jb25uZWN0KCcvY29tcGFueWRhdGEnKQorICAgIGN1cnNvciA9IGNvbm4uY3Vyc29yKCkKKyAgICBjdXJzb3IuZXhlY3V0ZSgnU0VMRUNUIG5hbWUsIGFnZSwgdGl0bGUsIGRlcGFydG1lbnQsIHBheWdyYWRlIEZST00gZW1wbG95ZWVzJykKKyAgICBmb3IgZW1wIGluIG1hcChFbXBsb3llZVJlY29yZC5fbWFrZSwgY3Vyc29yLmZldGNoYWxsKCkpOgorICAgICAgICBwcmludChlbXAubmFtZSwgZW1wLnRpdGxlKQogCiBJbiBhZGRpdGlvbiB0byB0aGUgbWV0aG9kcyBpbmhlcml0ZWQgZnJvbSB0dXBsZXMsIG5hbWVkIHR1cGxlcyBzdXBwb3J0Ci10aHJlZSBhZGRpdGlvbmFsIG1ldGhvZHMgYW5kIG9uZSBhdHRyaWJ1dGUuICBUbyBwcmV2ZW50IGNvbmZsaWN0cyB3aXRoCit0aHJlZSBhZGRpdGlvbmFsIG1ldGhvZHMgYW5kIHR3byBhdHRyaWJ1dGVzLiAgVG8gcHJldmVudCBjb25mbGljdHMgd2l0aAogZmllbGQgbmFtZXMsIHRoZSBtZXRob2QgYW5kIGF0dHJpYnV0ZSBuYW1lcyBzdGFydCB3aXRoIGFuIHVuZGVyc2NvcmUuCiAKIC4uIGNsYXNzbWV0aG9kOjogc29tZW5hbWVkdHVwbGUuX21ha2UoaXRlcmFibGUpCiAKLSAgIENsYXNzIG1ldGhvZCB0aGF0IG1ha2VzIGEgbmV3IGluc3RhbmNlIGZyb20gYW4gZXhpc3Rpbmcgc2VxdWVuY2Ugb3IgaXRlcmFibGUuCisgICAgQ2xhc3MgbWV0aG9kIHRoYXQgbWFrZXMgYSBuZXcgaW5zdGFuY2UgZnJvbSBhbiBleGlzdGluZyBzZXF1ZW5jZSBvciBpdGVyYWJsZS4KIAotLi4gZG9jdGVzdDo6CisgICAgLi4gZG9jdGVzdDo6CiAKLSAgICAgID4+PiB0ID0gWzExLCAyMl0KLSAgICAgID4+PiBQb2ludC5fbWFrZSh0KQotICAgICAgUG9pbnQoeD0xMSwgeT0yMikKKyAgICAgICAgPj4+IHQgPSBbMTEsIDIyXQorICAgICAgICA+Pj4gUG9pbnQuX21ha2UodCkKKyAgICAgICAgUG9pbnQoeD0xMSwgeT0yMikKIAogLi4gbWV0aG9kOjogc29tZW5hbWVkdHVwbGUuX2FzZGljdCgpCiAKLSAgIFJldHVybiBhIG5ldyA6Y2xhc3M6YE9yZGVyZWREaWN0YCB3aGljaCBtYXBzIGZpZWxkIG5hbWVzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcKLSAgIHZhbHVlczo6CisgICAgUmV0dXJuIGEgbmV3IDpjbGFzczpgT3JkZXJlZERpY3RgIHdoaWNoIG1hcHMgZmllbGQgbmFtZXMgdG8gdGhlaXIgY29ycmVzcG9uZGluZworICAgIHZhbHVlcy4gIE5vdGUsIHRoaXMgbWV0aG9kIGlzIG5vIGxvbmdlciBuZWVkZWQgbm93IHRoYXQgdGhlIHNhbWUgZWZmZWN0IGNhbgorICAgIGJlIGFjaGlldmVkIGJ5IHVzaW5nIHRoZSBidWlsdC1pbiA6ZnVuYzpgdmFyc2AgZnVuY3Rpb246OgogCi0gICAgICA+Pj4gcC5fYXNkaWN0KCkKLSAgICAgIE9yZGVyZWREaWN0KFsoJ3gnLCAxMSksICgneScsIDIyKV0pCisgICAgICAgID4+PiB2YXJzKHApCisgICAgICAgIE9yZGVyZWREaWN0KFsoJ3gnLCAxMSksICgneScsIDIyKV0pCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCi0gICAgICBSZXR1cm5zIGFuIDpjbGFzczpgT3JkZXJlZERpY3RgIGluc3RlYWQgb2YgYSByZWd1bGFyIDpjbGFzczpgZGljdGAuCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKKyAgICAgICAgUmV0dXJucyBhbiA6Y2xhc3M6YE9yZGVyZWREaWN0YCBpbnN0ZWFkIG9mIGEgcmVndWxhciA6Y2xhc3M6YGRpY3RgLgogCiAuLiBtZXRob2Q6OiBzb21lbmFtZWR0dXBsZS5fcmVwbGFjZShrd2FyZ3MpCiAKLSAgIFJldHVybiBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgbmFtZWQgdHVwbGUgcmVwbGFjaW5nIHNwZWNpZmllZCBmaWVsZHMgd2l0aCBuZXcKLSAgIHZhbHVlczoKKyAgICBSZXR1cm4gYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIG5hbWVkIHR1cGxlIHJlcGxhY2luZyBzcGVjaWZpZWQgZmllbGRzIHdpdGggbmV3CisgICAgdmFsdWVzOjoKIAotOjoKKyAgICAgICAgPj4+IHAgPSBQb2ludCh4PTExLCB5PTIyKQorICAgICAgICA+Pj4gcC5fcmVwbGFjZSh4PTMzKQorICAgICAgICBQb2ludCh4PTMzLCB5PTIyKQogCi0gICAgICA+Pj4gcCA9IFBvaW50KHg9MTEsIHk9MjIpCi0gICAgICA+Pj4gcC5fcmVwbGFjZSh4PTMzKQotICAgICAgUG9pbnQoeD0zMywgeT0yMikKKyAgICAgICAgPj4+IGZvciBwYXJ0bnVtLCByZWNvcmQgaW4gaW52ZW50b3J5Lml0ZW1zKCk6CisgICAgICAgIC4uLiAgICAgaW52ZW50b3J5W3BhcnRudW1dID0gcmVjb3JkLl9yZXBsYWNlKHByaWNlPW5ld3ByaWNlc1twYXJ0bnVtXSwgdGltZXN0YW1wPXRpbWUubm93KCkpCiAKLSAgICAgID4+PiBmb3IgcGFydG51bSwgcmVjb3JkIGluIGludmVudG9yeS5pdGVtcygpOgotICAgICAgLi4uICAgICBpbnZlbnRvcnlbcGFydG51bV0gPSByZWNvcmQuX3JlcGxhY2UocHJpY2U9bmV3cHJpY2VzW3BhcnRudW1dLCB0aW1lc3RhbXA9dGltZS5ub3coKSkKKy4uIGF0dHJpYnV0ZTo6IHNvbWVuYW1lZHR1cGxlLl9zb3VyY2UKKworICAgIEEgc3RyaW5nIHdpdGggdGhlIHB1cmUgUHl0aG9uIHNvdXJjZSBjb2RlIHVzZWQgdG8gY3JlYXRlIHRoZSBuYW1lZAorICAgIHR1cGxlIGNsYXNzLiAgVGhlIHNvdXJjZSBtYWtlcyB0aGUgbmFtZWQgdHVwbGUgc2VsZi1kb2N1bWVudGluZy4KKyAgICBJdCBjYW4gYmUgcHJpbnRlZCwgZXhlY3V0ZWQgdXNpbmcgOmZ1bmM6YGV4ZWNgLCBvciBzYXZlZCB0byBhIGZpbGUKKyAgICBhbmQgaW1wb3J0ZWQuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogLi4gYXR0cmlidXRlOjogc29tZW5hbWVkdHVwbGUuX2ZpZWxkcwogCi0gICBUdXBsZSBvZiBzdHJpbmdzIGxpc3RpbmcgdGhlIGZpZWxkIG5hbWVzLiAgVXNlZnVsIGZvciBpbnRyb3NwZWN0aW9uCi0gICBhbmQgZm9yIGNyZWF0aW5nIG5ldyBuYW1lZCB0dXBsZSB0eXBlcyBmcm9tIGV4aXN0aW5nIG5hbWVkIHR1cGxlcy4KKyAgICBUdXBsZSBvZiBzdHJpbmdzIGxpc3RpbmcgdGhlIGZpZWxkIG5hbWVzLiAgVXNlZnVsIGZvciBpbnRyb3NwZWN0aW9uCisgICAgYW5kIGZvciBjcmVhdGluZyBuZXcgbmFtZWQgdHVwbGUgdHlwZXMgZnJvbSBleGlzdGluZyBuYW1lZCB0dXBsZXMuCiAKLS4uIGRvY3Rlc3Q6OgorICAgIC4uIGRvY3Rlc3Q6OgogCi0gICAgICA+Pj4gcC5fZmllbGRzICAgICAgICAgICAgIyB2aWV3IHRoZSBmaWVsZCBuYW1lcwotICAgICAgKCd4JywgJ3knKQorICAgICAgICA+Pj4gcC5fZmllbGRzICAgICAgICAgICAgIyB2aWV3IHRoZSBmaWVsZCBuYW1lcworICAgICAgICAoJ3gnLCAneScpCiAKLSAgICAgID4+PiBDb2xvciA9IG5hbWVkdHVwbGUoJ0NvbG9yJywgJ3JlZCBncmVlbiBibHVlJykKLSAgICAgID4+PiBQaXhlbCA9IG5hbWVkdHVwbGUoJ1BpeGVsJywgUG9pbnQuX2ZpZWxkcyArIENvbG9yLl9maWVsZHMpCi0gICAgICA+Pj4gUGl4ZWwoMTEsIDIyLCAxMjgsIDI1NSwgMCkKLSAgICAgIFBpeGVsKHg9MTEsIHk9MjIsIHJlZD0xMjgsIGdyZWVuPTI1NSwgYmx1ZT0wKQorICAgICAgICA+Pj4gQ29sb3IgPSBuYW1lZHR1cGxlKCdDb2xvcicsICdyZWQgZ3JlZW4gYmx1ZScpCisgICAgICAgID4+PiBQaXhlbCA9IG5hbWVkdHVwbGUoJ1BpeGVsJywgUG9pbnQuX2ZpZWxkcyArIENvbG9yLl9maWVsZHMpCisgICAgICAgID4+PiBQaXhlbCgxMSwgMjIsIDEyOCwgMjU1LCAwKQorICAgICAgICBQaXhlbCh4PTExLCB5PTIyLCByZWQ9MTI4LCBncmVlbj0yNTUsIGJsdWU9MCkKIAogVG8gcmV0cmlldmUgYSBmaWVsZCB3aG9zZSBuYW1lIGlzIHN0b3JlZCBpbiBhIHN0cmluZywgdXNlIHRoZSA6ZnVuYzpgZ2V0YXR0cmAKIGZ1bmN0aW9uOgpAQCAtNzM1LDMxICs4NjksMzAgQEAKIFRvIGNvbnZlcnQgYSBkaWN0aW9uYXJ5IHRvIGEgbmFtZWQgdHVwbGUsIHVzZSB0aGUgZG91YmxlLXN0YXItb3BlcmF0b3IKIChhcyBkZXNjcmliZWQgaW4gOnJlZjpgdHV0LXVucGFja2luZy1hcmd1bWVudHNgKToKIAotICAgPj4+IGQgPSB7J3gnOiAxMSwgJ3knOiAyMn0KLSAgID4+PiBQb2ludCgqKmQpCi0gICBQb2ludCh4PTExLCB5PTIyKQorICAgID4+PiBkID0geyd4JzogMTEsICd5JzogMjJ9CisgICAgPj4+IFBvaW50KCoqZCkKKyAgICBQb2ludCh4PTExLCB5PTIyKQogCiBTaW5jZSBhIG5hbWVkIHR1cGxlIGlzIGEgcmVndWxhciBQeXRob24gY2xhc3MsIGl0IGlzIGVhc3kgdG8gYWRkIG9yIGNoYW5nZQogZnVuY3Rpb25hbGl0eSB3aXRoIGEgc3ViY2xhc3MuICBIZXJlIGlzIGhvdyB0byBhZGQgYSBjYWxjdWxhdGVkIGZpZWxkIGFuZAogYSBmaXhlZC13aWR0aCBwcmludCBmb3JtYXQ6CiAKICAgICA+Pj4gY2xhc3MgUG9pbnQobmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykpOgotICAgICAgICAgICAgX19zbG90c19fID0gKCkKLSAgICAgICAgICAgIEBwcm9wZXJ0eQotICAgICAgICAgICAgZGVmIGh5cG90KHNlbGYpOgotICAgICAgICAgICAgICAgIHJldHVybiAoc2VsZi54ICoqIDIgKyBzZWxmLnkgKiogMikgKiogMC41Ci0gICAgICAgICAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgICAgICAgICByZXR1cm4gJ1BvaW50OiB4PSU2LjNmICB5PSU2LjNmICBoeXBvdD0lNi4zZicgJSAoc2VsZi54LCBzZWxmLnksIHNlbGYuaHlwb3QpCisgICAgICAgIF9fc2xvdHNfXyA9ICgpCisgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICBkZWYgaHlwb3Qoc2VsZik6CisgICAgICAgICAgICByZXR1cm4gKHNlbGYueCAqKiAyICsgc2VsZi55ICoqIDIpICoqIDAuNQorICAgICAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiAnUG9pbnQ6IHg9JTYuM2YgIHk9JTYuM2YgIGh5cG90PSU2LjNmJyAlIChzZWxmLngsIHNlbGYueSwgc2VsZi5oeXBvdCkKIAogICAgID4+PiBmb3IgcCBpbiBQb2ludCgzLCA0KSwgUG9pbnQoMTQsIDUvNyk6Ci0gICAgICAgICAgICBwcmludChwKQorICAgICAgICBwcmludChwKQogICAgIFBvaW50OiB4PSAzLjAwMCAgeT0gNC4wMDAgIGh5cG90PSA1LjAwMAogICAgIFBvaW50OiB4PTE0LjAwMCAgeT0gMC43MTQgIGh5cG90PTE0LjAxOAogCiBUaGUgc3ViY2xhc3Mgc2hvd24gYWJvdmUgc2V0cyBgYF9fc2xvdHNfX2BgIHRvIGFuIGVtcHR5IHR1cGxlLiAgVGhpcyBoZWxwcwoga2VlcCBtZW1vcnkgcmVxdWlyZW1lbnRzIGxvdyBieSBwcmV2ZW50aW5nIHRoZSBjcmVhdGlvbiBvZiBpbnN0YW5jZSBkaWN0aW9uYXJpZXMuCiAKLQogU3ViY2xhc3NpbmcgaXMgbm90IHVzZWZ1bCBmb3IgYWRkaW5nIG5ldywgc3RvcmVkIGZpZWxkcy4gIEluc3RlYWQsIHNpbXBseQogY3JlYXRlIGEgbmV3IG5hbWVkIHR1cGxlIHR5cGUgZnJvbSB0aGUgOmF0dHI6YF9maWVsZHNgIGF0dHJpYnV0ZToKIApAQCAtNzcxLDYgKzkwNCw3IEBACiAgICAgPj4+IEFjY291bnQgPSBuYW1lZHR1cGxlKCdBY2NvdW50JywgJ293bmVyIGJhbGFuY2UgdHJhbnNhY3Rpb25fY291bnQnKQogICAgID4+PiBkZWZhdWx0X2FjY291bnQgPSBBY2NvdW50KCc8b3duZXIgbmFtZT4nLCAwLjAsIDApCiAgICAgPj4+IGpvaG5zX2FjY291bnQgPSBkZWZhdWx0X2FjY291bnQuX3JlcGxhY2Uob3duZXI9J0pvaG4nKQorICAgID4+PiBqYW5lc19hY2NvdW50ID0gZGVmYXVsdF9hY2NvdW50Ll9yZXBsYWNlKG93bmVyPSdKYW5lJykKIAogRW51bWVyYXRlZCBjb25zdGFudHMgY2FuIGJlIGltcGxlbWVudGVkIHdpdGggbmFtZWQgdHVwbGVzLCBidXQgaXQgaXMgc2ltcGxlcgogYW5kIG1vcmUgZWZmaWNpZW50IHRvIHVzZSBhIHNpbXBsZSBjbGFzcyBkZWNsYXJhdGlvbjoKQEAgLTc3OSwxOSArOTEzLDE5IEBACiAgICAgPj4+IFN0YXR1cy5vcGVuLCBTdGF0dXMucGVuZGluZywgU3RhdHVzLmNsb3NlZAogICAgICgwLCAxLCAyKQogICAgID4+PiBjbGFzcyBTdGF0dXM6Ci0gICAgICAgICAgICBvcGVuLCBwZW5kaW5nLCBjbG9zZWQgPSByYW5nZSgzKQorICAgICAgICBvcGVuLCBwZW5kaW5nLCBjbG9zZWQgPSByYW5nZSgzKQogCiAuLiBzZWVhbHNvOjoKIAotICAgKiBgTmFtZWQgdHVwbGUgcmVjaXBlIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81MDAyNjEvPmBfCi0gICAgIGFkYXB0ZWQgZm9yIFB5dGhvbiAyLjQuCisgICAgKiBgTmFtZWQgdHVwbGUgcmVjaXBlIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81MDAyNjEvPmBfCisgICAgICBhZGFwdGVkIGZvciBQeXRob24gMi40LgogCi0gICAqIGBSZWNpcGUgZm9yIG5hbWVkIHR1cGxlIGFic3RyYWN0IGJhc2UgY2xhc3Mgd2l0aCBhIG1ldGFjbGFzcyBtaXgtaW4KLSAgICAgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NzYyOS1uYW1lZHR1cGxlYWJjLWFic3RyYWN0LWJhc2UtY2xhc3MtbWl4LWluLWZvci1uYW1lZC8+YF8KLSAgICAgYnkgSmFuIEthbGlzemV3c2tpLiAgQmVzaWRlcyBwcm92aWRpbmcgYW4gOnRlcm06YGFic3RyYWN0IGJhc2UgY2xhc3NgIGZvcgotICAgICBuYW1lZCB0dXBsZXMsIGl0IGFsc28gc3VwcG9ydHMgYW4gYWx0ZXJuYXRlIDp0ZXJtOmBtZXRhY2xhc3NgLWJhc2VkCi0gICAgIGNvbnN0cnVjdG9yIHRoYXQgaXMgY29udmVuaWVudCBmb3IgdXNlIGNhc2VzIHdoZXJlIG5hbWVkIHR1cGxlcyBhcmUgYmVpbmcKLSAgICAgc3ViY2xhc3NlZC4KKyAgICAqIGBSZWNpcGUgZm9yIG5hbWVkIHR1cGxlIGFic3RyYWN0IGJhc2UgY2xhc3Mgd2l0aCBhIG1ldGFjbGFzcyBtaXgtaW4KKyAgICAgIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81Nzc2MjktbmFtZWR0dXBsZWFiYy1hYnN0cmFjdC1iYXNlLWNsYXNzLW1peC1pbi1mb3ItbmFtZWQvPmBfCisgICAgICBieSBKYW4gS2FsaXN6ZXdza2kuICBCZXNpZGVzIHByb3ZpZGluZyBhbiA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AgZm9yCisgICAgICBuYW1lZCB0dXBsZXMsIGl0IGFsc28gc3VwcG9ydHMgYW4gYWx0ZXJuYXRlIDp0ZXJtOmBtZXRhY2xhc3NgLWJhc2VkCisgICAgICBjb25zdHJ1Y3RvciB0aGF0IGlzIGNvbnZlbmllbnQgZm9yIHVzZSBjYXNlcyB3aGVyZSBuYW1lZCB0dXBsZXMgYXJlIGJlaW5nCisgICAgICBzdWJjbGFzc2VkLgogCiAKIDpjbGFzczpgT3JkZXJlZERpY3RgIG9iamVjdHMKQEAgLTgwMywzNiArOTM3LDM2IEBACiAKIC4uIGNsYXNzOjogT3JkZXJlZERpY3QoW2l0ZW1zXSkKIAotICAgUmV0dXJuIGFuIGluc3RhbmNlIG9mIGEgZGljdCBzdWJjbGFzcywgc3VwcG9ydGluZyB0aGUgdXN1YWwgOmNsYXNzOmBkaWN0YAotICAgbWV0aG9kcy4gIEFuICpPcmRlcmVkRGljdCogaXMgYSBkaWN0IHRoYXQgcmVtZW1iZXJzIHRoZSBvcmRlciB0aGF0IGtleXMKLSAgIHdlcmUgZmlyc3QgaW5zZXJ0ZWQuIElmIGEgbmV3IGVudHJ5IG92ZXJ3cml0ZXMgYW4gZXhpc3RpbmcgZW50cnksIHRoZQotICAgb3JpZ2luYWwgaW5zZXJ0aW9uIHBvc2l0aW9uIGlzIGxlZnQgdW5jaGFuZ2VkLiAgRGVsZXRpbmcgYW4gZW50cnkgYW5kCi0gICByZWluc2VydGluZyBpdCB3aWxsIG1vdmUgaXQgdG8gdGhlIGVuZC4KKyAgICBSZXR1cm4gYW4gaW5zdGFuY2Ugb2YgYSBkaWN0IHN1YmNsYXNzLCBzdXBwb3J0aW5nIHRoZSB1c3VhbCA6Y2xhc3M6YGRpY3RgCisgICAgbWV0aG9kcy4gIEFuICpPcmRlcmVkRGljdCogaXMgYSBkaWN0IHRoYXQgcmVtZW1iZXJzIHRoZSBvcmRlciB0aGF0IGtleXMKKyAgICB3ZXJlIGZpcnN0IGluc2VydGVkLiBJZiBhIG5ldyBlbnRyeSBvdmVyd3JpdGVzIGFuIGV4aXN0aW5nIGVudHJ5LCB0aGUKKyAgICBvcmlnaW5hbCBpbnNlcnRpb24gcG9zaXRpb24gaXMgbGVmdCB1bmNoYW5nZWQuICBEZWxldGluZyBhbiBlbnRyeSBhbmQKKyAgICByZWluc2VydGluZyBpdCB3aWxsIG1vdmUgaXQgdG8gdGhlIGVuZC4KIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKLSAgIC4uIG1ldGhvZDo6IHBvcGl0ZW0obGFzdD1UcnVlKQorICAgIC4uIG1ldGhvZDo6IHBvcGl0ZW0obGFzdD1UcnVlKQogCi0gICAgICBUaGUgOm1ldGg6YHBvcGl0ZW1gIG1ldGhvZCBmb3Igb3JkZXJlZCBkaWN0aW9uYXJpZXMgcmV0dXJucyBhbmQgcmVtb3ZlcyBhCi0gICAgICAoa2V5LCB2YWx1ZSkgcGFpci4gIFRoZSBwYWlycyBhcmUgcmV0dXJuZWQgaW4gTElGTyBvcmRlciBpZiAqbGFzdCogaXMgdHJ1ZQotICAgICAgb3IgRklGTyBvcmRlciBpZiBmYWxzZS4KKyAgICAgICAgVGhlIDptZXRoOmBwb3BpdGVtYCBtZXRob2QgZm9yIG9yZGVyZWQgZGljdGlvbmFyaWVzIHJldHVybnMgYW5kIHJlbW92ZXMgYQorICAgICAgICAoa2V5LCB2YWx1ZSkgcGFpci4gIFRoZSBwYWlycyBhcmUgcmV0dXJuZWQgaW4gTElGTyBvcmRlciBpZiAqbGFzdCogaXMgdHJ1ZQorICAgICAgICBvciBGSUZPIG9yZGVyIGlmIGZhbHNlLgogCi0gICAuLiBtZXRob2Q6OiBtb3ZlX3RvX2VuZChrZXksIGxhc3Q9VHJ1ZSkKKyAgICAuLiBtZXRob2Q6OiBtb3ZlX3RvX2VuZChrZXksIGxhc3Q9VHJ1ZSkKIAotICAgICAgTW92ZSBhbiBleGlzdGluZyAqa2V5KiB0byBlaXRoZXIgZW5kIG9mIGFuIG9yZGVyZWQgZGljdGlvbmFyeS4gIFRoZSBpdGVtCi0gICAgICBpcyBtb3ZlZCB0byB0aGUgcmlnaHQgZW5kIGlmICpsYXN0KiBpcyB0cnVlICh0aGUgZGVmYXVsdCkgb3IgdG8gdGhlCi0gICAgICBiZWdpbm5pbmcgaWYgKmxhc3QqIGlzIGZhbHNlLiAgUmFpc2VzIDpleGM6YEtleUVycm9yYCBpZiB0aGUgKmtleSogZG9lcwotICAgICAgbm90IGV4aXN0OjoKKyAgICAgICAgTW92ZSBhbiBleGlzdGluZyAqa2V5KiB0byBlaXRoZXIgZW5kIG9mIGFuIG9yZGVyZWQgZGljdGlvbmFyeS4gIFRoZSBpdGVtCisgICAgICAgIGlzIG1vdmVkIHRvIHRoZSByaWdodCBlbmQgaWYgKmxhc3QqIGlzIHRydWUgKHRoZSBkZWZhdWx0KSBvciB0byB0aGUKKyAgICAgICAgYmVnaW5uaW5nIGlmICpsYXN0KiBpcyBmYWxzZS4gIFJhaXNlcyA6ZXhjOmBLZXlFcnJvcmAgaWYgdGhlICprZXkqIGRvZXMKKyAgICAgICAgbm90IGV4aXN0OjoKIAotICAgICAgICAgID4+PiBkID0gT3JkZXJlZERpY3QuZnJvbWtleXMoJ2FiY2RlJykKLSAgICAgICAgICA+Pj4gZC5tb3ZlX3RvX2VuZCgnYicpCi0gICAgICAgICAgPj4+ICcnLmpvaW4oZC5rZXlzKCkpCi0gICAgICAgICAgJ2FjZGViJwotICAgICAgICAgID4+PiBkLm1vdmVfdG9fZW5kKCdiJywgbGFzdD1GYWxzZSkKLSAgICAgICAgICA+Pj4gJycuam9pbihkLmtleXMoKSkKLSAgICAgICAgICAnYmFjZGUnCisgICAgICAgICAgICA+Pj4gZCA9IE9yZGVyZWREaWN0LmZyb21rZXlzKCdhYmNkZScpCisgICAgICAgICAgICA+Pj4gZC5tb3ZlX3RvX2VuZCgnYicpCisgICAgICAgICAgICA+Pj4gJycuam9pbihkLmtleXMoKSkKKyAgICAgICAgICAgICdhY2RlYicKKyAgICAgICAgICAgID4+PiBkLm1vdmVfdG9fZW5kKCdiJywgbGFzdD1GYWxzZSkKKyAgICAgICAgICAgID4+PiAnJy5qb2luKGQua2V5cygpKQorICAgICAgICAgICAgJ2JhY2RlJwogCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIEluIGFkZGl0aW9uIHRvIHRoZSB1c3VhbCBtYXBwaW5nIG1ldGhvZHMsIG9yZGVyZWQgZGljdGlvbmFyaWVzIGFsc28gc3VwcG9ydAogcmV2ZXJzZSBpdGVyYXRpb24gdXNpbmcgOmZ1bmM6YHJldmVyc2VkYC4KQEAgLTg1MCw4ICs5ODQsOCBAQAogCiAuLiBzZWVhbHNvOjoKIAotICAgYEVxdWl2YWxlbnQgT3JkZXJlZERpY3QgcmVjaXBlIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81NzY2OTMvPmBfCi0gICB0aGF0IHJ1bnMgb24gUHl0aG9uIDIuNCBvciBsYXRlci4KKyAgICBgRXF1aXZhbGVudCBPcmRlcmVkRGljdCByZWNpcGUgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NjY5My8+YF8KKyAgICB0aGF0IHJ1bnMgb24gUHl0aG9uIDIuNCBvciBsYXRlci4KIAogOmNsYXNzOmBPcmRlcmVkRGljdGAgRXhhbXBsZXMgYW5kIFJlY2lwZXMKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCkBAIC04OTQsNyArMTAyOCw3IEBACiBBbiBvcmRlcmVkIGRpY3Rpb25hcnkgY2FuIGJlIGNvbWJpbmVkIHdpdGggdGhlIDpjbGFzczpgQ291bnRlcmAgY2xhc3MKIHNvIHRoYXQgdGhlIGNvdW50ZXIgcmVtZW1iZXJzIHRoZSBvcmRlciBlbGVtZW50cyBhcmUgZmlyc3QgZW5jb3VudGVyZWQ6OgogCi0gICBjbGFzcyBPcmRlcmVkQ291bnRlcihDb3VudGVyLCBPcmRlcmVkRGljdCk6CisgICAgY2xhc3MgT3JkZXJlZENvdW50ZXIoQ291bnRlciwgT3JkZXJlZERpY3QpOgogICAgICAgICAnQ291bnRlciB0aGF0IHJlbWVtYmVycyB0aGUgb3JkZXIgZWxlbWVudHMgYXJlIGZpcnN0IGVuY291bnRlcmVkJwogCiAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKQEAgLTkxNSwxOSArMTA0OSwxOSBAQAogCiAuLiBjbGFzczo6IFVzZXJEaWN0KFtpbml0aWFsZGF0YV0pCiAKLSAgIENsYXNzIHRoYXQgc2ltdWxhdGVzIGEgZGljdGlvbmFyeS4gIFRoZSBpbnN0YW5jZSdzIGNvbnRlbnRzIGFyZSBrZXB0IGluIGEKLSAgIHJlZ3VsYXIgZGljdGlvbmFyeSwgd2hpY2ggaXMgYWNjZXNzaWJsZSB2aWEgdGhlIDphdHRyOmBkYXRhYCBhdHRyaWJ1dGUgb2YKLSAgIDpjbGFzczpgVXNlckRpY3RgIGluc3RhbmNlcy4gIElmICppbml0aWFsZGF0YSogaXMgcHJvdmlkZWQsIDphdHRyOmBkYXRhYCBpcwotICAgaW5pdGlhbGl6ZWQgd2l0aCBpdHMgY29udGVudHM7IG5vdGUgdGhhdCBhIHJlZmVyZW5jZSB0byAqaW5pdGlhbGRhdGEqIHdpbGwgbm90Ci0gICBiZSBrZXB0LCBhbGxvd2luZyBpdCBiZSB1c2VkIGZvciBvdGhlciBwdXJwb3Nlcy4KKyAgICBDbGFzcyB0aGF0IHNpbXVsYXRlcyBhIGRpY3Rpb25hcnkuICBUaGUgaW5zdGFuY2UncyBjb250ZW50cyBhcmUga2VwdCBpbiBhCisgICAgcmVndWxhciBkaWN0aW9uYXJ5LCB3aGljaCBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUgOmF0dHI6YGRhdGFgIGF0dHJpYnV0ZSBvZgorICAgIDpjbGFzczpgVXNlckRpY3RgIGluc3RhbmNlcy4gIElmICppbml0aWFsZGF0YSogaXMgcHJvdmlkZWQsIDphdHRyOmBkYXRhYCBpcworICAgIGluaXRpYWxpemVkIHdpdGggaXRzIGNvbnRlbnRzOyBub3RlIHRoYXQgYSByZWZlcmVuY2UgdG8gKmluaXRpYWxkYXRhKiB3aWxsIG5vdAorICAgIGJlIGtlcHQsIGFsbG93aW5nIGl0IGJlIHVzZWQgZm9yIG90aGVyIHB1cnBvc2VzLgogCi0gICBJbiBhZGRpdGlvbiB0byBzdXBwb3J0aW5nIHRoZSBtZXRob2RzIGFuZCBvcGVyYXRpb25zIG9mIG1hcHBpbmdzLAotICAgOmNsYXNzOmBVc2VyRGljdGAgaW5zdGFuY2VzIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGU6CisgICAgSW4gYWRkaXRpb24gdG8gc3VwcG9ydGluZyB0aGUgbWV0aG9kcyBhbmQgb3BlcmF0aW9ucyBvZiBtYXBwaW5ncywKKyAgICA6Y2xhc3M6YFVzZXJEaWN0YCBpbnN0YW5jZXMgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZToKIAotICAgLi4gYXR0cmlidXRlOjogZGF0YQorICAgIC4uIGF0dHJpYnV0ZTo6IGRhdGEKIAotICAgICAgQSByZWFsIGRpY3Rpb25hcnkgdXNlZCB0byBzdG9yZSB0aGUgY29udGVudHMgb2YgdGhlIDpjbGFzczpgVXNlckRpY3RgCi0gICAgICBjbGFzcy4KKyAgICAgICAgQSByZWFsIGRpY3Rpb25hcnkgdXNlZCB0byBzdG9yZSB0aGUgY29udGVudHMgb2YgdGhlIDpjbGFzczpgVXNlckRpY3RgCisgICAgICAgIGNsYXNzLgogCiAKIApAQCAtOTQ1LDE5ICsxMDc5LDE5IEBACiAKIC4uIGNsYXNzOjogVXNlckxpc3QoW2xpc3RdKQogCi0gICBDbGFzcyB0aGF0IHNpbXVsYXRlcyBhIGxpc3QuICBUaGUgaW5zdGFuY2UncyBjb250ZW50cyBhcmUga2VwdCBpbiBhIHJlZ3VsYXIKLSAgIGxpc3QsIHdoaWNoIGlzIGFjY2Vzc2libGUgdmlhIHRoZSA6YXR0cjpgZGF0YWAgYXR0cmlidXRlIG9mIDpjbGFzczpgVXNlckxpc3RgCi0gICBpbnN0YW5jZXMuICBUaGUgaW5zdGFuY2UncyBjb250ZW50cyBhcmUgaW5pdGlhbGx5IHNldCB0byBhIGNvcHkgb2YgKmxpc3QqLAotICAgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgbGlzdCBgYFtdYGAuICAqbGlzdCogY2FuIGJlIGFueSBpdGVyYWJsZSwgZm9yCi0gICBleGFtcGxlIGEgcmVhbCBQeXRob24gbGlzdCBvciBhIDpjbGFzczpgVXNlckxpc3RgIG9iamVjdC4KKyAgICBDbGFzcyB0aGF0IHNpbXVsYXRlcyBhIGxpc3QuICBUaGUgaW5zdGFuY2UncyBjb250ZW50cyBhcmUga2VwdCBpbiBhIHJlZ3VsYXIKKyAgICBsaXN0LCB3aGljaCBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUgOmF0dHI6YGRhdGFgIGF0dHJpYnV0ZSBvZiA6Y2xhc3M6YFVzZXJMaXN0YAorICAgIGluc3RhbmNlcy4gIFRoZSBpbnN0YW5jZSdzIGNvbnRlbnRzIGFyZSBpbml0aWFsbHkgc2V0IHRvIGEgY29weSBvZiAqbGlzdCosCisgICAgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgbGlzdCBgYFtdYGAuICAqbGlzdCogY2FuIGJlIGFueSBpdGVyYWJsZSwgZm9yCisgICAgZXhhbXBsZSBhIHJlYWwgUHl0aG9uIGxpc3Qgb3IgYSA6Y2xhc3M6YFVzZXJMaXN0YCBvYmplY3QuCiAKLSAgIEluIGFkZGl0aW9uIHRvIHN1cHBvcnRpbmcgdGhlIG1ldGhvZHMgYW5kIG9wZXJhdGlvbnMgb2YgbXV0YWJsZSBzZXF1ZW5jZXMsCi0gICA6Y2xhc3M6YFVzZXJMaXN0YCBpbnN0YW5jZXMgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZToKKyAgICBJbiBhZGRpdGlvbiB0byBzdXBwb3J0aW5nIHRoZSBtZXRob2RzIGFuZCBvcGVyYXRpb25zIG9mIG11dGFibGUgc2VxdWVuY2VzLAorICAgIDpjbGFzczpgVXNlckxpc3RgIGluc3RhbmNlcyBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlOgogCi0gICAuLiBhdHRyaWJ1dGU6OiBkYXRhCisgICAgLi4gYXR0cmlidXRlOjogZGF0YQogCi0gICAgICBBIHJlYWwgOmNsYXNzOmBsaXN0YCBvYmplY3QgdXNlZCB0byBzdG9yZSB0aGUgY29udGVudHMgb2YgdGhlCi0gICAgICA6Y2xhc3M6YFVzZXJMaXN0YCBjbGFzcy4KKyAgICAgICAgQSByZWFsIDpjbGFzczpgbGlzdGAgb2JqZWN0IHVzZWQgdG8gc3RvcmUgdGhlIGNvbnRlbnRzIG9mIHRoZQorICAgICAgICA6Y2xhc3M6YFVzZXJMaXN0YCBjbGFzcy4KIAogKipTdWJjbGFzc2luZyByZXF1aXJlbWVudHM6KiogU3ViY2xhc3NlcyBvZiA6Y2xhc3M6YFVzZXJMaXN0YCBhcmUgZXhwZWN0IHRvCiBvZmZlciBhIGNvbnN0cnVjdG9yIHdoaWNoIGNhbiBiZSBjYWxsZWQgd2l0aCBlaXRoZXIgbm8gYXJndW1lbnRzIG9yIG9uZQpAQCAtOTgyLDE2OCArMTExNiwxMCBAQAogCiAuLiBjbGFzczo6IFVzZXJTdHJpbmcoW3NlcXVlbmNlXSkKIAotICAgQ2xhc3MgdGhhdCBzaW11bGF0ZXMgYSBzdHJpbmcgb3IgYSBVbmljb2RlIHN0cmluZyBvYmplY3QuICBUaGUgaW5zdGFuY2UncwotICAgY29udGVudCBpcyBrZXB0IGluIGEgcmVndWxhciBzdHJpbmcgb2JqZWN0LCB3aGljaCBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUKLSAgIDphdHRyOmBkYXRhYCBhdHRyaWJ1dGUgb2YgOmNsYXNzOmBVc2VyU3RyaW5nYCBpbnN0YW5jZXMuICBUaGUgaW5zdGFuY2UncwotICAgY29udGVudHMgYXJlIGluaXRpYWxseSBzZXQgdG8gYSBjb3B5IG9mICpzZXF1ZW5jZSouICBUaGUgKnNlcXVlbmNlKiBjYW4KLSAgIGJlIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgYnl0ZXNgLCA6Y2xhc3M6YHN0cmAsIDpjbGFzczpgVXNlclN0cmluZ2AgKG9yIGEKLSAgIHN1YmNsYXNzKSBvciBhbiBhcmJpdHJhcnkgc2VxdWVuY2Ugd2hpY2ggY2FuIGJlIGNvbnZlcnRlZCBpbnRvIGEgc3RyaW5nIHVzaW5nCi0gICB0aGUgYnVpbHQtaW4gOmZ1bmM6YHN0cmAgZnVuY3Rpb24uCi0KLQotLi4gX2NvbGxlY3Rpb25zLWFic3RyYWN0LWJhc2UtY2xhc3NlczoKLQotQUJDcyAtIGFic3RyYWN0IGJhc2UgY2xhc3NlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UaGUgY29sbGVjdGlvbnMgbW9kdWxlIG9mZmVycyB0aGUgZm9sbG93aW5nIDp0ZXJtOmBBQkNzIDxhYnN0cmFjdCBiYXNlIGNsYXNzPmA6Ci0KLT09PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotQUJDICAgICAgICAgICAgICAgICAgICAgICAgSW5oZXJpdHMgZnJvbSAgICAgICAgICBBYnN0cmFjdCBNZXRob2RzICAgICAgICBNaXhpbiBNZXRob2RzCi09PT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLTpjbGFzczpgQ29udGFpbmVyYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYAotOmNsYXNzOmBIYXNoYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faGFzaF9fYGAKLTpjbGFzczpgSXRlcmFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCi06Y2xhc3M6YEl0ZXJhdG9yYCAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCAgICAgIGBgX19uZXh0X19gYCAgICAgICAgICAgIGBgX19pdGVyX19gYAotOmNsYXNzOmBTaXplZGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fbGVuX19gYAotOmNsYXNzOmBDYWxsYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY2FsbF9fYGAKLQotOmNsYXNzOmBTZXF1ZW5jZWAgICAgICAgICAgOmNsYXNzOmBTaXplZGAsICAgICAgICBgYF9fZ2V0aXRlbV9fYGAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYF9faXRlcl9fYGAsIGBgX19yZXZlcnNlZF9fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgaW5kZXhgYCwgYW5kIGBgY291bnRgYAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgCi0KLTpjbGFzczpgTXV0YWJsZVNlcXVlbmNlYCAgIDpjbGFzczpgU2VxdWVuY2VgICAgICAgYGBfX3NldGl0ZW1fX2BgLCAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgU2VxdWVuY2VgIG1ldGhvZHMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19kZWxpdGVtX19gYCwgICAgICAgIGBgYXBwZW5kYGAsIGBgcmV2ZXJzZWBgLCBgYGV4dGVuZGBgLCBgYHBvcGBgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGluc2VydGBgICAgICAgICAgICAgICBgYHJlbW92ZWBgLCBhbmQgYGBfX2lhZGRfX2BgCi0KLTpjbGFzczpgU2V0YCAgICAgICAgICAgICAgIDpjbGFzczpgU2l6ZWRgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlX19gYCwgYGBfX2x0X19gYCwgYGBfX2VxX19gYCwgYGBfX25lX19gYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2d0X19gYCwgYGBfX2dlX19gYCwgYGBfX2FuZF9fYGAsIGBgX19vcl9fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19zdWJfX2BgLCBgYF9feG9yX19gYCwgYW5kIGBgaXNkaXNqb2ludGBgCi0KLTpjbGFzczpgTXV0YWJsZVNldGAgICAgICAgIDpjbGFzczpgU2V0YCAgICAgICAgICAgYGBhZGRgYCwgICAgICAgICAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgU2V0YCBtZXRob2RzIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGRpc2NhcmRgYCAgICAgICAgICAgICBgYGNsZWFyYGAsIGBgcG9wYGAsIGBgcmVtb3ZlYGAsIGBgX19pb3JfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faWFuZF9fYGAsIGBgX19peG9yX19gYCwgYW5kIGBgX19pc3ViX19gYAotCi06Y2xhc3M6YE1hcHBpbmdgICAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19nZXRpdGVtX19gYCAgICAgICAgIGBgX19jb250YWluc19fYGAsIGBga2V5c2BgLCBgYGl0ZW1zYGAsIGBgdmFsdWVzYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgZ2V0YGAsIGBgX19lcV9fYGAsIGFuZCBgYF9fbmVfX2BgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAKLQotOmNsYXNzOmBNdXRhYmxlTWFwcGluZ2AgICAgOmNsYXNzOmBNYXBwaW5nYCAgICAgICBgYF9fc2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBNYXBwaW5nYCBtZXRob2RzIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fZGVsaXRlbV9fYGAgICAgICAgICBgYHBvcGBgLCBgYHBvcGl0ZW1gYCwgYGBjbGVhcmBgLCBgYHVwZGF0ZWBgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYGBzZXRkZWZhdWx0YGAKLQotCi06Y2xhc3M6YE1hcHBpbmdWaWV3YCAgICAgICA6Y2xhc3M6YFNpemVkYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZW5fX2BgCi06Y2xhc3M6YEl0ZW1zVmlld2AgICAgICAgICA6Y2xhc3M6YE1hcHBpbmdWaWV3YCwgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jb250YWluc19fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YFNldGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYAotOmNsYXNzOmBLZXlzVmlld2AgICAgICAgICAgOmNsYXNzOmBNYXBwaW5nVmlld2AsICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKLTpjbGFzczpgVmFsdWVzVmlld2AgICAgICAgIDpjbGFzczpgTWFwcGluZ1ZpZXdgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBfX2l0ZXJfX2BgCi09PT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotCi0uLiBjbGFzczo6IENvbnRhaW5lcgotICAgICAgICAgICBIYXNoYWJsZQotICAgICAgICAgICBTaXplZAotICAgICAgICAgICBDYWxsYWJsZQotCi0gICBBQkNzIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSByZXNwZWN0aXZlbHkgdGhlIG1ldGhvZHMgOm1ldGg6YF9fY29udGFpbnNfX2AsCi0gICA6bWV0aDpgX19oYXNoX19gLCA6bWV0aDpgX19sZW5fX2AsIGFuZCA6bWV0aDpgX19jYWxsX19gLgotCi0uLiBjbGFzczo6IEl0ZXJhYmxlCi0KLSAgIEFCQyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgdGhlIDptZXRoOmBfX2l0ZXJfX2AgbWV0aG9kLgotICAgU2VlIGFsc28gdGhlIGRlZmluaXRpb24gb2YgOnRlcm06YGl0ZXJhYmxlYC4KLQotLi4gY2xhc3M6OiBJdGVyYXRvcgotCi0gICBBQkMgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIHRoZSA6bWV0aDpgX19pdGVyX19gIGFuZCA6bWV0aDpgX19uZXh0X19gIG1ldGhvZHMuCi0gICBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZiA6dGVybTpgaXRlcmF0b3JgLgotCi0uLiBjbGFzczo6IFNlcXVlbmNlCi0gICAgICAgICAgIE11dGFibGVTZXF1ZW5jZQotCi0gICBBQkNzIGZvciByZWFkLW9ubHkgYW5kIG11dGFibGUgOnRlcm06YHNlcXVlbmNlcyA8c2VxdWVuY2U+YC4KLQotLi4gY2xhc3M6OiBTZXQKLSAgICAgICAgICAgTXV0YWJsZVNldAotCi0gICBBQkNzIGZvciByZWFkLW9ubHkgYW5kIG11dGFibGUgc2V0cy4KLQotLi4gY2xhc3M6OiBNYXBwaW5nCi0gICAgICAgICAgIE11dGFibGVNYXBwaW5nCi0KLSAgIEFCQ3MgZm9yIHJlYWQtb25seSBhbmQgbXV0YWJsZSA6dGVybTpgbWFwcGluZ3MgPG1hcHBpbmc+YC4KLQotLi4gY2xhc3M6OiBNYXBwaW5nVmlldwotICAgICAgICAgICBJdGVtc1ZpZXcKLSAgICAgICAgICAgS2V5c1ZpZXcKLSAgICAgICAgICAgVmFsdWVzVmlldwotCi0gICBBQkNzIGZvciBtYXBwaW5nLCBpdGVtcywga2V5cywgYW5kIHZhbHVlcyA6dGVybTpgdmlld3MgPHZpZXc+YC4KLQotCi1UaGVzZSBBQkNzIGFsbG93IHVzIHRvIGFzayBjbGFzc2VzIG9yIGluc3RhbmNlcyBpZiB0aGV5IHByb3ZpZGUKLXBhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eSwgZm9yIGV4YW1wbGU6OgotCi0gICAgc2l6ZSA9IE5vbmUKLSAgICBpZiBpc2luc3RhbmNlKG15dmFyLCBjb2xsZWN0aW9ucy5TaXplZCk6Ci0gICAgICAgIHNpemUgPSBsZW4obXl2YXIpCi0KLVNldmVyYWwgb2YgdGhlIEFCQ3MgYXJlIGFsc28gdXNlZnVsIGFzIG1peGlucyB0aGF0IG1ha2UgaXQgZWFzaWVyIHRvIGRldmVsb3AKLWNsYXNzZXMgc3VwcG9ydGluZyBjb250YWluZXIgQVBJcy4gIEZvciBleGFtcGxlLCB0byB3cml0ZSBhIGNsYXNzIHN1cHBvcnRpbmcKLXRoZSBmdWxsIDpjbGFzczpgU2V0YCBBUEksIGl0IG9ubHkgbmVjZXNzYXJ5IHRvIHN1cHBseSB0aGUgdGhyZWUgdW5kZXJseWluZwotYWJzdHJhY3QgbWV0aG9kczogOm1ldGg6YF9fY29udGFpbnNfX2AsIDptZXRoOmBfX2l0ZXJfX2AsIGFuZCA6bWV0aDpgX19sZW5fX2AuCi1UaGUgQUJDIHN1cHBsaWVzIHRoZSByZW1haW5pbmcgbWV0aG9kcyBzdWNoIGFzIDptZXRoOmBfX2FuZF9fYCBhbmQKLTptZXRoOmBpc2Rpc2pvaW50YCA6OgotCi0gICAgY2xhc3MgTGlzdEJhc2VkU2V0KGNvbGxlY3Rpb25zLlNldCk6Ci0gICAgICAgICAnJycgQWx0ZXJuYXRlIHNldCBpbXBsZW1lbnRhdGlvbiBmYXZvcmluZyBzcGFjZSBvdmVyIHNwZWVkCi0gICAgICAgICAgICAgYW5kIG5vdCByZXF1aXJpbmcgdGhlIHNldCBlbGVtZW50cyB0byBiZSBoYXNoYWJsZS4gJycnCi0gICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlcmFibGUpOgotICAgICAgICAgICAgIHNlbGYuZWxlbWVudHMgPSBsc3QgPSBbXQotICAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBpdGVyYWJsZToKLSAgICAgICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIGxzdDoKLSAgICAgICAgICAgICAgICAgICAgIGxzdC5hcHBlbmQodmFsdWUpCi0gICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5lbGVtZW50cykKLSAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgotICAgICAgICAgICAgIHJldHVybiB2YWx1ZSBpbiBzZWxmLmVsZW1lbnRzCi0gICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKLSAgICAgICAgICAgICByZXR1cm4gbGVuKHNlbGYuZWxlbWVudHMpCi0KLSAgICBzMSA9IExpc3RCYXNlZFNldCgnYWJjZGVmJykKLSAgICBzMiA9IExpc3RCYXNlZFNldCgnZGVmZ2hpJykKLSAgICBvdmVybGFwID0gczEgJiBzMiAgICAgICAgICAgICMgVGhlIF9fYW5kX18oKSBtZXRob2QgaXMgc3VwcG9ydGVkIGF1dG9tYXRpY2FsbHkKLQotTm90ZXMgb24gdXNpbmcgOmNsYXNzOmBTZXRgIGFuZCA6Y2xhc3M6YE11dGFibGVTZXRgIGFzIGEgbWl4aW46Ci0KLSgxKQotICAgU2luY2Ugc29tZSBzZXQgb3BlcmF0aW9ucyBjcmVhdGUgbmV3IHNldHMsIHRoZSBkZWZhdWx0IG1peGluIG1ldGhvZHMgbmVlZAotICAgYSB3YXkgdG8gY3JlYXRlIG5ldyBpbnN0YW5jZXMgZnJvbSBhbiBpdGVyYWJsZS4gVGhlIGNsYXNzIGNvbnN0cnVjdG9yIGlzCi0gICBhc3N1bWVkIHRvIGhhdmUgYSBzaWduYXR1cmUgaW4gdGhlIGZvcm0gYGBDbGFzc05hbWUoaXRlcmFibGUpYGAuCi0gICBUaGF0IGFzc3VtcHRpb24gaXMgZmFjdG9yZWQtb3V0IHRvIGFuIGludGVybmFsIGNsYXNzbWV0aG9kIGNhbGxlZAotICAgOm1ldGg6YF9mcm9tX2l0ZXJhYmxlYCB3aGljaCBjYWxscyBgYGNscyhpdGVyYWJsZSlgYCB0byBwcm9kdWNlIGEgbmV3IHNldC4KLSAgIElmIHRoZSA6Y2xhc3M6YFNldGAgbWl4aW4gaXMgYmVpbmcgdXNlZCBpbiBhIGNsYXNzIHdpdGggYSBkaWZmZXJlbnQKLSAgIGNvbnN0cnVjdG9yIHNpZ25hdHVyZSwgeW91IHdpbGwgbmVlZCB0byBvdmVycmlkZSA6bWV0aDpgX2Zyb21faXRlcmFibGVgCi0gICB3aXRoIGEgY2xhc3NtZXRob2QgdGhhdCBjYW4gY29uc3RydWN0IG5ldyBpbnN0YW5jZXMgZnJvbQotICAgYW4gaXRlcmFibGUgYXJndW1lbnQuCi0KLSgyKQotICAgVG8gb3ZlcnJpZGUgdGhlIGNvbXBhcmlzb25zIChwcmVzdW1hYmx5IGZvciBzcGVlZCwgYXMgdGhlCi0gICBzZW1hbnRpY3MgYXJlIGZpeGVkKSwgcmVkZWZpbmUgOm1ldGg6YF9fbGVfX2AgYW5kCi0gICB0aGVuIHRoZSBvdGhlciBvcGVyYXRpb25zIHdpbGwgYXV0b21hdGljYWxseSBmb2xsb3cgc3VpdC4KLQotKDMpCi0gICBUaGUgOmNsYXNzOmBTZXRgIG1peGluIHByb3ZpZGVzIGEgOm1ldGg6YF9oYXNoYCBtZXRob2QgdG8gY29tcHV0ZSBhIGhhc2ggdmFsdWUKLSAgIGZvciB0aGUgc2V0OyBob3dldmVyLCA6bWV0aDpgX19oYXNoX19gIGlzIG5vdCBkZWZpbmVkIGJlY2F1c2Ugbm90IGFsbCBzZXRzCi0gICBhcmUgaGFzaGFibGUgb3IgaW1tdXRhYmxlLiAgVG8gYWRkIHNldCBoYXNoYWJpbHR5IHVzaW5nIG1peGlucywKLSAgIGluaGVyaXQgZnJvbSBib3RoIDptZXRoOmBTZXRgIGFuZCA6bWV0aDpgSGFzaGFibGVgLCB0aGVuIGRlZmluZQotICAgYGBfX2hhc2hfXyA9IFNldC5faGFzaGBgLgotCi0uLiBzZWVhbHNvOjoKLQotICAgKiBgT3JkZXJlZFNldCByZWNpcGUgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NjY5NC8+YF8gZm9yIGFuCi0gICAgIGV4YW1wbGUgYnVpbHQgb24gOmNsYXNzOmBNdXRhYmxlU2V0YC4KLQotICAgKiBGb3IgbW9yZSBhYm91dCBBQkNzLCBzZWUgdGhlIDptb2Q6YGFiY2AgbW9kdWxlIGFuZCA6cGVwOmAzMTE5YC4KKyAgICBDbGFzcyB0aGF0IHNpbXVsYXRlcyBhIHN0cmluZyBvciBhIFVuaWNvZGUgc3RyaW5nIG9iamVjdC4gIFRoZSBpbnN0YW5jZSdzCisgICAgY29udGVudCBpcyBrZXB0IGluIGEgcmVndWxhciBzdHJpbmcgb2JqZWN0LCB3aGljaCBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUKKyAgICA6YXR0cjpgZGF0YWAgYXR0cmlidXRlIG9mIDpjbGFzczpgVXNlclN0cmluZ2AgaW5zdGFuY2VzLiAgVGhlIGluc3RhbmNlJ3MKKyAgICBjb250ZW50cyBhcmUgaW5pdGlhbGx5IHNldCB0byBhIGNvcHkgb2YgKnNlcXVlbmNlKi4gIFRoZSAqc2VxdWVuY2UqIGNhbgorICAgIGJlIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgYnl0ZXNgLCA6Y2xhc3M6YHN0cmAsIDpjbGFzczpgVXNlclN0cmluZ2AgKG9yIGEKKyAgICBzdWJjbGFzcykgb3IgYW4gYXJiaXRyYXJ5IHNlcXVlbmNlIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgaW50byBhIHN0cmluZyB1c2luZworICAgIHRoZSBidWlsdC1pbiA6ZnVuYzpgc3RyYCBmdW5jdGlvbi4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbmN1cnJlbmN5LnJzdCBiL0RvYy9saWJyYXJ5L2NvbmN1cnJlbmN5LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDJkYWUyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvY29uY3VycmVuY3kucnN0CkBAIC0wLDAgKzEsMzIgQEAKKy4uIF9jb25jdXJyZW5jeToKKworKioqKioqKioqKioqKioqKioqKioKK0NvbmN1cnJlbnQgRXhlY3V0aW9uCisqKioqKioqKioqKioqKioqKioqKgorCitUaGUgbW9kdWxlcyBkZXNjcmliZWQgaW4gdGhpcyBjaGFwdGVyIHByb3ZpZGUgc3VwcG9ydCBmb3IgY29uY3VycmVudAorZXhlY3V0aW9uIG9mIGNvZGUuIFRoZSBhcHByb3ByaWF0ZSBjaG9pY2Ugb2YgdG9vbCB3aWxsIGRlcGVuZCBvbiB0aGUKK3Rhc2sgdG8gYmUgZXhlY3V0ZWQgKENQVSBib3VuZCB2cyBJTyBib3VuZCkgYW5kIHByZWZlcnJlZCBzdHlsZSBvZgorZGV2ZWxvcG1lbnQgKGV2ZW50IGRyaXZlbiBjb29wZXJhdGl2ZSBtdWx0aXRhc2tpbmcgdnMgcHJlZW1wdGl2ZQorbXVsdGl0YXNraW5nKSBIZXJlJ3MgYW4gb3ZlcnZpZXc6CisKKworLi4gdG9jdHJlZTo6CisKKyAgIHRocmVhZGluZy5yc3QKKyAgIG11bHRpcHJvY2Vzc2luZy5yc3QKKyAgIGNvbmN1cnJlbnQucnN0CisgICBjb25jdXJyZW50LmZ1dHVyZXMucnN0CisgICBzdWJwcm9jZXNzLnJzdAorICAgc2NoZWQucnN0CisgICBxdWV1ZS5yc3QKKyAgIHNlbGVjdC5yc3QKKworCitUaGUgZm9sbG93aW5nIGFyZSBzdXBwb3J0IG1vZHVsZXMgZm9yIHNvbWUgb2YgdGhlIGFib3ZlIHNlcnZpY2VzOgorCisuLiB0b2N0cmVlOjoKKworICAgZHVtbXlfdGhyZWFkaW5nLnJzdAorICAgX3RocmVhZC5yc3QKKyAgIF9kdW1teV90aHJlYWQucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0IGIvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdAppbmRleCBlZWUyMjg1Li43ZWQ5OWQ1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QKQEAgLTEzNiwyMCArMTM2LDIzIEBACiAgICAgICAgICAgICdodHRwOi8vd3d3LmJiYy5jby51ay8nLAogICAgICAgICAgICAnaHR0cDovL3NvbWUtbWFkZS11cC1kb21haW4uY29tLyddCiAKKyAgICMgUmV0cmlldmUgYSBzaW5nbGUgcGFnZSBhbmQgcmVwb3J0IHRoZSB1cmwgYW5kIGNvbnRlbnRzCiAgICBkZWYgbG9hZF91cmwodXJsLCB0aW1lb3V0KToKLSAgICAgICByZXR1cm4gdXJsbGliLnJlcXVlc3QudXJsb3Blbih1cmwsIHRpbWVvdXQ9dGltZW91dCkucmVhZCgpCisgICAgICAgY29ubiA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4odXJsLCB0aW1lb3V0PXRpbWVvdXQpCisgICAgICAgcmV0dXJuIGNvbm4ucmVhZGFsbCgpCiAKKyAgICMgV2UgY2FuIHVzZSBhIHdpdGggc3RhdGVtZW50IHRvIGVuc3VyZSB0aHJlYWRzIGFyZSBjbGVhbmVkIHVwIHByb21wdGx5CiAgICB3aXRoIGNvbmN1cnJlbnQuZnV0dXJlcy5UaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9NSkgYXMgZXhlY3V0b3I6Ci0gICAgICAgZnV0dXJlX3RvX3VybCA9IGRpY3QoKGV4ZWN1dG9yLnN1Ym1pdChsb2FkX3VybCwgdXJsLCA2MCksIHVybCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdXJsIGluIFVSTFMpCi0KKyAgICAgICAjIFN0YXJ0IHRoZSBsb2FkIG9wZXJhdGlvbnMgYW5kIG1hcmsgZWFjaCBmdXR1cmUgd2l0aCBpdHMgVVJMCisgICAgICAgZnV0dXJlX3RvX3VybCA9IHtleGVjdXRvci5zdWJtaXQobG9hZF91cmwsIHVybCwgNjApOnVybCBmb3IgdXJsIGluIFVSTFN9CiAgICAgICAgZm9yIGZ1dHVyZSBpbiBjb25jdXJyZW50LmZ1dHVyZXMuYXNfY29tcGxldGVkKGZ1dHVyZV90b191cmwpOgogICAgICAgICAgICB1cmwgPSBmdXR1cmVfdG9fdXJsW2Z1dHVyZV0KLSAgICAgICAgICAgaWYgZnV0dXJlLmV4Y2VwdGlvbigpIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgcHJpbnQoJyVyIGdlbmVyYXRlZCBhbiBleGNlcHRpb246ICVzJyAlICh1cmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1dHVyZS5leGNlcHRpb24oKSkpCisgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgIGRhdGEgPSBmdXR1cmUucmVzdWx0KCkKKyAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICAgICBwcmludCgnJXIgZ2VuZXJhdGVkIGFuIGV4Y2VwdGlvbjogJXMnICUgKHVybCwgZXhjKSkKICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgIHByaW50KCclciBwYWdlIGlzICVkIGJ5dGVzJyAlICh1cmwsIGxlbihmdXR1cmUucmVzdWx0KCkpKSkKKyAgICAgICAgICAgICAgIHByaW50KCclciBwYWdlIGlzICVkIGJ5dGVzJyAlICh1cmwsIGxlbihkYXRhKSkpCiAKIAogUHJvY2Vzc1Bvb2xFeGVjdXRvcgpAQCAtMTcwLDYgKzE3MywxMiBAQAogICAgb2YgYXQgbW9zdCAqbWF4X3dvcmtlcnMqIHByb2Nlc3Nlcy4gIElmICptYXhfd29ya2VycyogaXMgYGBOb25lYGAgb3Igbm90CiAgICBnaXZlbiwgaXQgd2lsbCBkZWZhdWx0IHRvIHRoZSBudW1iZXIgb2YgcHJvY2Vzc29ycyBvbiB0aGUgbWFjaGluZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFdoZW4gb25lIG9mIHRoZSB3b3JrZXIgcHJvY2Vzc2VzIHRlcm1pbmF0ZXMgYWJydXB0bHksIGEKKyAgICAgIDpleGM6YEJyb2tlblByb2Nlc3NQb29sYCBlcnJvciBpcyBub3cgcmFpc2VkLiAgUHJldmlvdXNseSwgYmVoYXZpb3VyCisgICAgICB3YXMgdW5kZWZpbmVkIGJ1dCBvcGVyYXRpb25zIG9uIHRoZSBleGVjdXRvciBvciBpdHMgZnV0dXJlcyB3b3VsZCBvZnRlbgorICAgICAgZnJlZXplIG9yIGRlYWRsb2NrLgorCiAKIC4uIF9wcm9jZXNzcG9vbGV4ZWN1dG9yLWV4YW1wbGU6CiAKQEAgLTM3MSwzICszODAsMTYgQEAKICAgIDpwZXA6YDMxNDhgIC0tIGZ1dHVyZXMgLSBleGVjdXRlIGNvbXB1dGF0aW9ucyBhc3luY2hyb25vdXNseQogICAgICAgVGhlIHByb3Bvc2FsIHdoaWNoIGRlc2NyaWJlZCB0aGlzIGZlYXR1cmUgZm9yIGluY2x1c2lvbiBpbiB0aGUgUHl0aG9uCiAgICAgICBzdGFuZGFyZCBsaWJyYXJ5LgorCisKK0V4Y2VwdGlvbiBjbGFzc2VzCistLS0tLS0tLS0tLS0tLS0tLQorCisuLiBleGNlcHRpb246OiBCcm9rZW5Qcm9jZXNzUG9vbAorCisgICBEZXJpdmVkIGZyb20gOmV4YzpgUnVudGltZUVycm9yYCwgdGhpcyBleGNlcHRpb24gY2xhc3MgaXMgcmFpc2VkIHdoZW4KKyAgIG9uZSBvZiB0aGUgd29ya2VycyBvZiBhIDpjbGFzczpgUHJvY2Vzc1Bvb2xFeGVjdXRvcmAgaGFzIHRlcm1pbmF0ZWQKKyAgIGluIGEgbm9uLWNsZWFuIGZhc2hpb24gKGZvciBleGFtcGxlLCBpZiBpdCB3YXMga2lsbGVkIGZyb20gdGhlIG91dHNpZGUpLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29uY3VycmVudC5yc3QgYi9Eb2MvbGlicmFyeS9jb25jdXJyZW50LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWJhNTM2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvY29uY3VycmVudC5yc3QKQEAgLTAsMCArMSw2IEBACitUaGUgOm1vZDpgY29uY3VycmVudGAgcGFja2FnZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQ3VycmVudGx5LCB0aGVyZSBpcyBvbmx5IG9uZSBtb2R1bGUgaW4gdGhpcyBwYWNrYWdlOgorCisqIDptb2Q6YGNvbmN1cnJlbnQuZnV0dXJlc2AgLS0gTGF1bmNoaW5nIHBhcmFsbGVsIHRhc2tzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdCBiL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CmluZGV4IGU4ZGMxN2YuLjE1NGUzOTUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CkBAIC0xMiw4ICsxMiwxMSBAQAogc3RhdGVtZW50LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgYWxzbyA6cmVmOmB0eXBlY29udGV4dG1hbmFnZXJgIGFuZAogOnJlZjpgY29udGV4dC1tYW5hZ2Vyc2AuCiAKLUZ1bmN0aW9ucyBwcm92aWRlZDoKIAorVXRpbGl0aWVzCistLS0tLS0tLS0KKworRnVuY3Rpb25zIGFuZCBjbGFzc2VzIHByb3ZpZGVkOgogCiAuLiBkZWNvcmF0b3I6OiBjb250ZXh0bWFuYWdlcgogCkBAIC0xNjgsNiArMTcxLDM0OCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorLi4gY2xhc3M6OiBFeGl0U3RhY2soKQorCisgICBBIGNvbnRleHQgbWFuYWdlciB0aGF0IGlzIGRlc2lnbmVkIHRvIG1ha2UgaXQgZWFzeSB0byBwcm9ncmFtbWF0aWNhbGx5CisgICBjb21iaW5lIG90aGVyIGNvbnRleHQgbWFuYWdlcnMgYW5kIGNsZWFudXAgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IHRob3NlCisgICB0aGF0IGFyZSBvcHRpb25hbCBvciBvdGhlcndpc2UgZHJpdmVuIGJ5IGlucHV0IGRhdGEuCisKKyAgIEZvciBleGFtcGxlLCBhIHNldCBvZiBmaWxlcyBtYXkgZWFzaWx5IGJlIGhhbmRsZWQgaW4gYSBzaW5nbGUgd2l0aAorICAgc3RhdGVtZW50IGFzIGZvbGxvd3M6OgorCisgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgIGZpbGVzID0gW3N0YWNrLmVudGVyX2NvbnRleHQob3BlbihmbmFtZSkpIGZvciBmbmFtZSBpbiBmaWxlbmFtZXNdCisgICAgICAgICAgIyBBbGwgb3BlbmVkIGZpbGVzIHdpbGwgYXV0b21hdGljYWxseSBiZSBjbG9zZWQgYXQgdGhlIGVuZCBvZgorICAgICAgICAgICMgdGhlIHdpdGggc3RhdGVtZW50LCBldmVuIGlmIGF0dGVtcHRzIHRvIG9wZW4gZmlsZXMgbGF0ZXIKKyAgICAgICAgICAjIGluIHRoZSBsaXN0IHJhaXNlIGFuIGV4Y2VwdGlvbgorCisgICBFYWNoIGluc3RhbmNlIG1haW50YWlucyBhIHN0YWNrIG9mIHJlZ2lzdGVyZWQgY2FsbGJhY2tzIHRoYXQgYXJlIGNhbGxlZCBpbgorICAgcmV2ZXJzZSBvcmRlciB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjbG9zZWQgKGVpdGhlciBleHBsaWNpdGx5IG9yIGltcGxpY2l0bHkKKyAgIGF0IHRoZSBlbmQgb2YgYSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50KS4gTm90ZSB0aGF0IGNhbGxiYWNrcyBhcmUgKm5vdCoKKyAgIGludm9rZWQgaW1wbGljaXRseSB3aGVuIHRoZSBjb250ZXh0IHN0YWNrIGluc3RhbmNlIGlzIGdhcmJhZ2UgY29sbGVjdGVkLgorCisgICBUaGlzIHN0YWNrIG1vZGVsIGlzIHVzZWQgc28gdGhhdCBjb250ZXh0IG1hbmFnZXJzIHRoYXQgYWNxdWlyZSB0aGVpcgorICAgcmVzb3VyY2VzIGluIHRoZWlyIGBgX19pbml0X19gYCBtZXRob2QgKHN1Y2ggYXMgZmlsZSBvYmplY3RzKSBjYW4gYmUKKyAgIGhhbmRsZWQgY29ycmVjdGx5LgorCisgICBTaW5jZSByZWdpc3RlcmVkIGNhbGxiYWNrcyBhcmUgaW52b2tlZCBpbiB0aGUgcmV2ZXJzZSBvcmRlciBvZgorICAgcmVnaXN0cmF0aW9uLCB0aGlzIGVuZHMgdXAgYmVoYXZpbmcgYXMgaWYgbXVsdGlwbGUgbmVzdGVkIDprZXl3b3JkOmB3aXRoYAorICAgc3RhdGVtZW50cyBoYWQgYmVlbiB1c2VkIHdpdGggdGhlIHJlZ2lzdGVyZWQgc2V0IG9mIGNhbGxiYWNrcy4gVGhpcyBldmVuCisgICBleHRlbmRzIHRvIGV4Y2VwdGlvbiBoYW5kbGluZyAtIGlmIGFuIGlubmVyIGNhbGxiYWNrIHN1cHByZXNzZXMgb3IgcmVwbGFjZXMKKyAgIGFuIGV4Y2VwdGlvbiwgdGhlbiBvdXRlciBjYWxsYmFja3Mgd2lsbCBiZSBwYXNzZWQgYXJndW1lbnRzIGJhc2VkIG9uIHRoYXQKKyAgIHVwZGF0ZWQgc3RhdGUuCisKKyAgIFRoaXMgaXMgYSByZWxhdGl2ZWx5IGxvdyBsZXZlbCBBUEkgdGhhdCB0YWtlcyBjYXJlIG9mIHRoZSBkZXRhaWxzIG9mCisgICBjb3JyZWN0bHkgdW53aW5kaW5nIHRoZSBzdGFjayBvZiBleGl0IGNhbGxiYWNrcy4gSXQgcHJvdmlkZXMgYSBzdWl0YWJsZQorICAgZm91bmRhdGlvbiBmb3IgaGlnaGVyIGxldmVsIGNvbnRleHQgbWFuYWdlcnMgdGhhdCBtYW5pcHVsYXRlIHRoZSBleGl0CisgICBzdGFjayBpbiBhcHBsaWNhdGlvbiBzcGVjaWZpYyB3YXlzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbWV0aG9kOjogZW50ZXJfY29udGV4dChjbSkKKworICAgICAgRW50ZXJzIGEgbmV3IGNvbnRleHQgbWFuYWdlciBhbmQgYWRkcyBpdHMgOm1ldGg6YF9fZXhpdF9fYCBtZXRob2QgdG8KKyAgICAgIHRoZSBjYWxsYmFjayBzdGFjay4gVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgcmVzdWx0IG9mIHRoZSBjb250ZXh0CisgICAgICBtYW5hZ2VyJ3Mgb3duIDptZXRoOmBfX2VudGVyX19gIG1ldGhvZC4KKworICAgICAgVGhlc2UgY29udGV4dCBtYW5hZ2VycyBtYXkgc3VwcHJlc3MgZXhjZXB0aW9ucyBqdXN0IGFzIHRoZXkgbm9ybWFsbHkKKyAgICAgIHdvdWxkIGlmIHVzZWQgZGlyZWN0bHkgYXMgcGFydCBvZiBhIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuCisKKyAgIC4uIG1ldGhvZDo6IHB1c2goZXhpdCkKKworICAgICAgQWRkcyBhIGNvbnRleHQgbWFuYWdlcidzIDptZXRoOmBfX2V4aXRfX2AgbWV0aG9kIHRvIHRoZSBjYWxsYmFjayBzdGFjay4KKworICAgICAgQXMgYGBfX2VudGVyX19gYCBpcyAqbm90KiBpbnZva2VkLCB0aGlzIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjb3ZlcgorICAgICAgcGFydCBvZiBhbiA6bWV0aDpgX19lbnRlcl9fYCBpbXBsZW1lbnRhdGlvbiB3aXRoIGEgY29udGV4dCBtYW5hZ2VyJ3Mgb3duCisgICAgICA6bWV0aDpgX19leGl0X19gIG1ldGhvZC4KKworICAgICAgSWYgcGFzc2VkIGFuIG9iamVjdCB0aGF0IGlzIG5vdCBhIGNvbnRleHQgbWFuYWdlciwgdGhpcyBtZXRob2QgYXNzdW1lcworICAgICAgaXQgaXMgYSBjYWxsYmFjayB3aXRoIHRoZSBzYW1lIHNpZ25hdHVyZSBhcyBhIGNvbnRleHQgbWFuYWdlcidzCisgICAgICA6bWV0aDpgX19leGl0X19gIG1ldGhvZCBhbmQgYWRkcyBpdCBkaXJlY3RseSB0byB0aGUgY2FsbGJhY2sgc3RhY2suCisKKyAgICAgIEJ5IHJldHVybmluZyB0cnVlIHZhbHVlcywgdGhlc2UgY2FsbGJhY2tzIGNhbiBzdXBwcmVzcyBleGNlcHRpb25zIHRoZQorICAgICAgc2FtZSB3YXkgY29udGV4dCBtYW5hZ2VyIDptZXRoOmBfX2V4aXRfX2AgbWV0aG9kcyBjYW4uCisKKyAgICAgIFRoZSBwYXNzZWQgaW4gb2JqZWN0IGlzIHJldHVybmVkIGZyb20gdGhlIGZ1bmN0aW9uLCBhbGxvd2luZyB0aGlzCisgICAgICBtZXRob2QgdG8gYmUgdXNlZCBhcyBhIGZ1bmN0aW9uIGRlY29yYXRvci4KKworICAgLi4gbWV0aG9kOjogY2FsbGJhY2soY2FsbGJhY2ssICphcmdzLCAqKmt3ZHMpCisKKyAgICAgIEFjY2VwdHMgYW4gYXJiaXRyYXJ5IGNhbGxiYWNrIGZ1bmN0aW9uIGFuZCBhcmd1bWVudHMgYW5kIGFkZHMgaXQgdG8KKyAgICAgIHRoZSBjYWxsYmFjayBzdGFjay4KKworICAgICAgVW5saWtlIHRoZSBvdGhlciBtZXRob2RzLCBjYWxsYmFja3MgYWRkZWQgdGhpcyB3YXkgY2Fubm90IHN1cHByZXNzCisgICAgICBleGNlcHRpb25zIChhcyB0aGV5IGFyZSBuZXZlciBwYXNzZWQgdGhlIGV4Y2VwdGlvbiBkZXRhaWxzKS4KKworICAgICAgVGhlIHBhc3NlZCBpbiBjYWxsYmFjayBpcyByZXR1cm5lZCBmcm9tIHRoZSBmdW5jdGlvbiwgYWxsb3dpbmcgdGhpcworICAgICAgbWV0aG9kIHRvIGJlIHVzZWQgYXMgYSBmdW5jdGlvbiBkZWNvcmF0b3IuCisKKyAgIC4uIG1ldGhvZDo6IHBvcF9hbGwoKQorCisgICAgICBUcmFuc2ZlcnMgdGhlIGNhbGxiYWNrIHN0YWNrIHRvIGEgZnJlc2ggOmNsYXNzOmBFeGl0U3RhY2tgIGluc3RhbmNlCisgICAgICBhbmQgcmV0dXJucyBpdC4gTm8gY2FsbGJhY2tzIGFyZSBpbnZva2VkIGJ5IHRoaXMgb3BlcmF0aW9uIC0gaW5zdGVhZCwKKyAgICAgIHRoZXkgd2lsbCBub3cgYmUgaW52b2tlZCB3aGVuIHRoZSBuZXcgc3RhY2sgaXMgY2xvc2VkIChlaXRoZXIKKyAgICAgIGV4cGxpY2l0bHkgb3IgaW1wbGljaXRseSBhdCB0aGUgZW5kIG9mIGEgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCkuCisKKyAgICAgIEZvciBleGFtcGxlLCBhIGdyb3VwIG9mIGZpbGVzIGNhbiBiZSBvcGVuZWQgYXMgYW4gImFsbCBvciBub3RoaW5nIgorICAgICAgb3BlcmF0aW9uIGFzIGZvbGxvd3M6OgorCisgICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgIGZpbGVzID0gW3N0YWNrLmVudGVyX2NvbnRleHQob3BlbihmbmFtZSkpIGZvciBmbmFtZSBpbiBmaWxlbmFtZXNdCisgICAgICAgICAgICAgY2xvc2VfZmlsZXMgPSBzdGFjay5wb3BfYWxsKCkuY2xvc2UKKyAgICAgICAgICAgICAjIElmIG9wZW5pbmcgYW55IGZpbGUgZmFpbHMsIGFsbCBwcmV2aW91c2x5IG9wZW5lZCBmaWxlcyB3aWxsIGJlCisgICAgICAgICAgICAgIyBjbG9zZWQgYXV0b21hdGljYWxseS4gSWYgYWxsIGZpbGVzIGFyZSBvcGVuZWQgc3VjY2Vzc2Z1bGx5LAorICAgICAgICAgICAgICMgdGhleSB3aWxsIHJlbWFpbiBvcGVuIGV2ZW4gYWZ0ZXIgdGhlIHdpdGggc3RhdGVtZW50IGVuZHMuCisgICAgICAgICAgICAgIyBjbG9zZV9maWxlcygpIGNhbiB0aGVuIGJlIGludm9rZWQgZXhwbGljaXRseSB0byBjbG9zZSB0aGVtIGFsbAorCisgICAuLiBtZXRob2Q6OiBjbG9zZSgpCisKKyAgICAgIEltbWVkaWF0ZWx5IHVud2luZHMgdGhlIGNhbGxiYWNrIHN0YWNrLCBpbnZva2luZyBjYWxsYmFja3MgaW4gdGhlCisgICAgICByZXZlcnNlIG9yZGVyIG9mIHJlZ2lzdHJhdGlvbi4gRm9yIGFueSBjb250ZXh0IG1hbmFnZXJzIGFuZCBleGl0CisgICAgICBjYWxsYmFja3MgcmVnaXN0ZXJlZCwgdGhlIGFyZ3VtZW50cyBwYXNzZWQgaW4gd2lsbCBpbmRpY2F0ZSB0aGF0IG5vCisgICAgICBleGNlcHRpb24gb2NjdXJyZWQuCisKKworRXhhbXBsZXMgYW5kIFJlY2lwZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgc2VjdGlvbiBkZXNjcmliZXMgc29tZSBleGFtcGxlcyBhbmQgcmVjaXBlcyBmb3IgbWFraW5nIGVmZmVjdGl2ZSB1c2Ugb2YKK3RoZSB0b29scyBwcm92aWRlZCBieSA6bW9kOmBjb250ZXh0bGliYC4KKworCitTdXBwb3J0aW5nIGEgdmFyaWFibGUgbnVtYmVyIG9mIGNvbnRleHQgbWFuYWdlcnMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUaGUgcHJpbWFyeSB1c2UgY2FzZSBmb3IgOmNsYXNzOmBFeGl0U3RhY2tgIGlzIHRoZSBvbmUgZ2l2ZW4gaW4gdGhlIGNsYXNzCitkb2N1bWVudGF0aW9uOiBzdXBwb3J0aW5nIGEgdmFyaWFibGUgbnVtYmVyIG9mIGNvbnRleHQgbWFuYWdlcnMgYW5kIG90aGVyCitjbGVhbnVwIG9wZXJhdGlvbnMgaW4gYSBzaW5nbGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4gVGhlIHZhcmlhYmlsaXR5CittYXkgY29tZSBmcm9tIHRoZSBudW1iZXIgb2YgY29udGV4dCBtYW5hZ2VycyBuZWVkZWQgYmVpbmcgZHJpdmVuIGJ5IHVzZXIKK2lucHV0IChzdWNoIGFzIG9wZW5pbmcgYSB1c2VyIHNwZWNpZmllZCBjb2xsZWN0aW9uIG9mIGZpbGVzKSwgb3IgZnJvbQorc29tZSBvZiB0aGUgY29udGV4dCBtYW5hZ2VycyBiZWluZyBvcHRpb25hbDo6CisKKyAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICBmb3IgcmVzb3VyY2UgaW4gcmVzb3VyY2VzOgorICAgICAgICAgICAgc3RhY2suZW50ZXJfY29udGV4dChyZXNvdXJjZSkKKyAgICAgICAgaWYgbmVlZF9zcGVjaWFsIHJlc291cmNlOgorICAgICAgICAgICAgc3BlY2lhbCA9IGFjcXVpcmVfc3BlY2lhbF9yZXNvdXJjZSgpCisgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhyZWxlYXNlX3NwZWNpYWxfcmVzb3VyY2UsIHNwZWNpYWwpCisgICAgICAgICMgUGVyZm9ybSBvcGVyYXRpb25zIHRoYXQgdXNlIHRoZSBhY3F1aXJlZCByZXNvdXJjZXMKKworQXMgc2hvd24sIDpjbGFzczpgRXhpdFN0YWNrYCBhbHNvIG1ha2VzIGl0IHF1aXRlIGVhc3kgdG8gdXNlIDprZXl3b3JkOmB3aXRoYAorc3RhdGVtZW50cyB0byBtYW5hZ2UgYXJiaXRyYXJ5IHJlc291cmNlcyB0aGF0IGRvbid0IG5hdGl2ZWx5IHN1cHBvcnQgdGhlCitjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wuCisKKworU2ltcGxpZnlpbmcgc3VwcG9ydCBmb3Igc2luZ2xlIG9wdGlvbmFsIGNvbnRleHQgbWFuYWdlcnMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0luIHRoZSBzcGVjaWZpYyBjYXNlIG9mIGEgc2luZ2xlIG9wdGlvbmFsIGNvbnRleHQgbWFuYWdlciwgOmNsYXNzOmBFeGl0U3RhY2tgCitpbnN0YW5jZXMgY2FuIGJlIHVzZWQgYXMgYSAiZG8gbm90aGluZyIgY29udGV4dCBtYW5hZ2VyLCBhbGxvd2luZyBhIGNvbnRleHQKK21hbmFnZXIgdG8gZWFzaWx5IGJlIG9taXR0ZWQgd2l0aG91dCBhZmZlY3RpbmcgdGhlIG92ZXJhbGwgc3RydWN0dXJlIG9mCit0aGUgc291cmNlIGNvZGU6OgorCisgICBkZWYgZGVidWdfdHJhY2UoZGV0YWlscyk6CisgICAgICAgaWYgX19kZWJ1Z19fOgorICAgICAgICAgICByZXR1cm4gVHJhY2VDb250ZXh0KGRldGFpbHMpCisgICAgICAgIyBEb24ndCBkbyBhbnl0aGluZyBzcGVjaWFsIHdpdGggdGhlIGNvbnRleHQgaW4gcmVsZWFzZSBtb2RlCisgICAgICAgcmV0dXJuIEV4aXRTdGFjaygpCisKKyAgIHdpdGggZGVidWdfdHJhY2UoKToKKyAgICAgICAjIFN1aXRlIGlzIHRyYWNlZCBpbiBkZWJ1ZyBtb2RlLCBidXQgcnVucyBub3JtYWxseSBvdGhlcndpc2UKKworCitDYXRjaGluZyBleGNlcHRpb25zIGZyb20gYGBfX2VudGVyX19gYCBtZXRob2RzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0l0IGlzIG9jY2FzaW9uYWxseSBkZXNpcmFibGUgdG8gY2F0Y2ggZXhjZXB0aW9ucyBmcm9tIGFuIGBgX19lbnRlcl9fYGAKK21ldGhvZCBpbXBsZW1lbnRhdGlvbiwgKndpdGhvdXQqIGluYWR2ZXJ0ZW50bHkgY2F0Y2hpbmcgZXhjZXB0aW9ucyBmcm9tCit0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBib2R5IG9yIHRoZSBjb250ZXh0IG1hbmFnZXIncyBgYF9fZXhpdF9fYGAKK21ldGhvZC4gQnkgdXNpbmcgOmNsYXNzOmBFeGl0U3RhY2tgIHRoZSBzdGVwcyBpbiB0aGUgY29udGV4dCBtYW5hZ2VtZW50Citwcm90b2NvbCBjYW4gYmUgc2VwYXJhdGVkIHNsaWdodGx5IGluIG9yZGVyIHRvIGFsbG93IHRoaXM6OgorCisgICBzdGFjayA9IEV4aXRTdGFjaygpCisgICB0cnk6CisgICAgICAgeCA9IHN0YWNrLmVudGVyX2NvbnRleHQoY20pCisgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICMgaGFuZGxlIF9fZW50ZXJfXyBleGNlcHRpb24KKyAgIGVsc2U6CisgICAgICAgd2l0aCBzdGFjazoKKyAgICAgICAgICAgIyBIYW5kbGUgbm9ybWFsIGNhc2UKKworQWN0dWFsbHkgbmVlZGluZyB0byBkbyB0aGlzIGlzIGxpa2VseSB0byBpbmRpY2F0ZSB0aGF0IHRoZSB1bmRlcmx5aW5nIEFQSQorc2hvdWxkIGJlIHByb3ZpZGluZyBhIGRpcmVjdCByZXNvdXJjZSBtYW5hZ2VtZW50IGludGVyZmFjZSBmb3IgdXNlIHdpdGgKKzprZXl3b3JkOmB0cnlgLzprZXl3b3JkOmBleGNlcHRgLzprZXl3b3JkOmBmaW5hbGx5YCBzdGF0ZW1lbnRzLCBidXQgbm90CithbGwgQVBJcyBhcmUgd2VsbCBkZXNpZ25lZCBpbiB0aGF0IHJlZ2FyZC4gV2hlbiBhIGNvbnRleHQgbWFuYWdlciBpcyB0aGUKK29ubHkgcmVzb3VyY2UgbWFuYWdlbWVudCBBUEkgcHJvdmlkZWQsIHRoZW4gOmNsYXNzOmBFeGl0U3RhY2tgIGNhbiBtYWtlIGl0CitlYXNpZXIgdG8gaGFuZGxlIHZhcmlvdXMgc2l0dWF0aW9ucyB0aGF0IGNhbid0IGJlIGhhbmRsZWQgZGlyZWN0bHkgaW4gYQorOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4KKworCitDbGVhbmluZyB1cCBpbiBhbiBgYF9fZW50ZXJfX2BgIGltcGxlbWVudGF0aW9uCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0FzIG5vdGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIDptZXRoOmBFeGl0U3RhY2sucHVzaGAsIHRoaXMKK21ldGhvZCBjYW4gYmUgdXNlZnVsIGluIGNsZWFuaW5nIHVwIGFuIGFscmVhZHkgYWxsb2NhdGVkIHJlc291cmNlIGlmIGxhdGVyCitzdGVwcyBpbiB0aGUgOm1ldGg6YF9fZW50ZXJfX2AgaW1wbGVtZW50YXRpb24gZmFpbC4KKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgZG9pbmcgdGhpcyBmb3IgYSBjb250ZXh0IG1hbmFnZXIgdGhhdCBhY2NlcHRzIHJlc291cmNlCithY3F1aXNpdGlvbiBhbmQgcmVsZWFzZSBmdW5jdGlvbnMsIGFsb25nIHdpdGggYW4gb3B0aW9uYWwgdmFsaWRhdGlvbiBmdW5jdGlvbiwKK2FuZCBtYXBzIHRoZW0gdG8gdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbDo6CisKKyAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIsIEV4aXRTdGFjaworCisgICBjbGFzcyBSZXNvdXJjZU1hbmFnZXI6CisKKyAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYWNxdWlyZV9yZXNvdXJjZSwgcmVsZWFzZV9yZXNvdXJjZSwgY2hlY2tfcmVzb3VyY2Vfb2s9Tm9uZSk6CisgICAgICAgICAgIHNlbGYuYWNxdWlyZV9yZXNvdXJjZSA9IGFjcXVpcmVfcmVzb3VyY2UKKyAgICAgICAgICAgc2VsZi5yZWxlYXNlX3Jlc291cmNlID0gcmVsZWFzZV9yZXNvdXJjZQorICAgICAgICAgICBpZiBjaGVja19yZXNvdXJjZV9vayBpcyBOb25lOgorICAgICAgICAgICAgICAgZGVmIGNoZWNrX3Jlc291cmNlX29rKHJlc291cmNlKToKKyAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICBzZWxmLmNoZWNrX3Jlc291cmNlX29rID0gY2hlY2tfcmVzb3VyY2Vfb2sKKworICAgICAgIEBjb250ZXh0bWFuYWdlcgorICAgICAgIGRlZiBfY2xlYW51cF9vbl9lcnJvcihzZWxmKToKKyAgICAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgICAgIHN0YWNrLnB1c2goc2VsZikKKyAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICAgICAjIFRoZSB2YWxpZGF0aW9uIGNoZWNrIHBhc3NlZCBhbmQgZGlkbid0IHJhaXNlIGFuIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgIyBBY2NvcmRpbmdseSwgd2Ugd2FudCB0byBrZWVwIHRoZSByZXNvdXJjZSwgYW5kIHBhc3MgaXQKKyAgICAgICAgICAgICAgICMgYmFjayB0byBvdXIgY2FsbGVyCisgICAgICAgICAgICAgICBzdGFjay5wb3BfYWxsKCkKKworICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgIHJlc291cmNlID0gc2VsZi5hY3F1aXJlX3Jlc291cmNlKCkKKyAgICAgICAgICAgd2l0aCBzZWxmLl9jbGVhbnVwX29uX2Vycm9yKCk6CisgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5jaGVja19yZXNvdXJjZV9vayhyZXNvdXJjZSk6CisgICAgICAgICAgICAgICAgICAgbXNnID0gIkZhaWxlZCB2YWxpZGF0aW9uIGZvciB7IXJ9IgorICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihtc2cuZm9ybWF0KHJlc291cmNlKSkKKyAgICAgICAgICAgcmV0dXJuIHJlc291cmNlCisKKyAgICAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgIyBXZSBkb24ndCBuZWVkIHRvIGR1cGxpY2F0ZSBhbnkgb2Ygb3VyIHJlc291cmNlIHJlbGVhc2UgbG9naWMKKyAgICAgICAgICAgc2VsZi5yZWxlYXNlX3Jlc291cmNlKCkKKworCitSZXBsYWNpbmcgYW55IHVzZSBvZiBgYHRyeS1maW5hbGx5YGAgYW5kIGZsYWcgdmFyaWFibGVzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0EgcGF0dGVybiB5b3Ugd2lsbCBzb21ldGltZXMgc2VlIGlzIGEgYGB0cnktZmluYWxseWBgIHN0YXRlbWVudCB3aXRoIGEgZmxhZwordmFyaWFibGUgdG8gaW5kaWNhdGUgd2hldGhlciBvciBub3QgdGhlIGJvZHkgb2YgdGhlIGBgZmluYWxseWBgIGNsYXVzZSBzaG91bGQKK2JlIGV4ZWN1dGVkLiBJbiBpdHMgc2ltcGxlc3QgZm9ybSAodGhhdCBjYW4ndCBhbHJlYWR5IGJlIGhhbmRsZWQganVzdCBieQordXNpbmcgYW4gYGBleGNlcHRgYCBjbGF1c2UgaW5zdGVhZCksIGl0IGxvb2tzIHNvbWV0aGluZyBsaWtlIHRoaXM6OgorCisgICBjbGVhbnVwX25lZWRlZCA9IFRydWUKKyAgIHRyeToKKyAgICAgICByZXN1bHQgPSBwZXJmb3JtX29wZXJhdGlvbigpCisgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICBjbGVhbnVwX25lZWRlZCA9IEZhbHNlCisgICBmaW5hbGx5OgorICAgICAgIGlmIGNsZWFudXBfbmVlZGVkOgorICAgICAgICAgICBjbGVhbnVwX3Jlc291cmNlcygpCisKK0FzIHdpdGggYW55IGBgdHJ5YGAgc3RhdGVtZW50IGJhc2VkIGNvZGUsIHRoaXMgY2FuIGNhdXNlIHByb2JsZW1zIGZvcgorZGV2ZWxvcG1lbnQgYW5kIHJldmlldywgYmVjYXVzZSB0aGUgc2V0dXAgY29kZSBhbmQgdGhlIGNsZWFudXAgY29kZSBjYW4gZW5kCit1cCBiZWluZyBzZXBhcmF0ZWQgYnkgYXJiaXRyYXJpbHkgbG9uZyBzZWN0aW9ucyBvZiBjb2RlLgorCis6Y2xhc3M6YEV4aXRTdGFja2AgbWFrZXMgaXQgcG9zc2libGUgdG8gaW5zdGVhZCByZWdpc3RlciBhIGNhbGxiYWNrIGZvcgorZXhlY3V0aW9uIGF0IHRoZSBlbmQgb2YgYSBgYHdpdGhgYCBzdGF0ZW1lbnQsIGFuZCB0aGVuIGxhdGVyIGRlY2lkZSB0byBza2lwCitleGVjdXRpbmcgdGhhdCBjYWxsYmFjazo6CisKKyAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgRXhpdFN0YWNrCisKKyAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgc3RhY2suY2FsbGJhY2soY2xlYW51cF9yZXNvdXJjZXMpCisgICAgICAgcmVzdWx0ID0gcGVyZm9ybV9vcGVyYXRpb24oKQorICAgICAgIGlmIHJlc3VsdDoKKyAgICAgICAgICAgc3RhY2sucG9wX2FsbCgpCisKK1RoaXMgYWxsb3dzIHRoZSBpbnRlbmRlZCBjbGVhbnVwIHVwIGJlaGF2aW91ciB0byBiZSBtYWRlIGV4cGxpY2l0IHVwIGZyb250LAorcmF0aGVyIHRoYW4gcmVxdWlyaW5nIGEgc2VwYXJhdGUgZmxhZyB2YXJpYWJsZS4KKworSWYgYSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uIHVzZXMgdGhpcyBwYXR0ZXJuIGEgbG90LCBpdCBjYW4gYmUgc2ltcGxpZmllZAorZXZlbiBmdXJ0aGVyIGJ5IG1lYW5zIG9mIGEgc21hbGwgaGVscGVyIGNsYXNzOjoKKworICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBFeGl0U3RhY2sKKworICAgY2xhc3MgQ2FsbGJhY2soRXhpdFN0YWNrKToKKyAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY2FsbGJhY2ssICphcmdzLCAqKmt3ZHMpOgorICAgICAgICAgICBzdXBlcihDYWxsYmFjaywgc2VsZikuX19pbml0X18oKQorICAgICAgICAgICBzZWxmLmNhbGxiYWNrKGNhbGxiYWNrLCAqYXJncywgKiprd2RzKQorCisgICAgICAgZGVmIGNhbmNlbChzZWxmKToKKyAgICAgICAgICAgc2VsZi5wb3BfYWxsKCkKKworICAgd2l0aCBDYWxsYmFjayhjbGVhbnVwX3Jlc291cmNlcykgYXMgY2I6CisgICAgICAgcmVzdWx0ID0gcGVyZm9ybV9vcGVyYXRpb24oKQorICAgICAgIGlmIHJlc3VsdDoKKyAgICAgICAgICAgY2IuY2FuY2VsKCkKKworSWYgdGhlIHJlc291cmNlIGNsZWFudXAgaXNuJ3QgYWxyZWFkeSBuZWF0bHkgYnVuZGxlZCBpbnRvIGEgc3RhbmRhbG9uZQorZnVuY3Rpb24sIHRoZW4gaXQgaXMgc3RpbGwgcG9zc2libGUgdG8gdXNlIHRoZSBkZWNvcmF0b3IgZm9ybSBvZgorOm1ldGg6YEV4aXRTdGFjay5jYWxsYmFja2AgdG8gZGVjbGFyZSB0aGUgcmVzb3VyY2UgY2xlYW51cCBpbgorYWR2YW5jZTo6CisKKyAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgRXhpdFN0YWNrCisKKyAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgQHN0YWNrLmNhbGxiYWNrCisgICAgICAgZGVmIGNsZWFudXBfcmVzb3VyY2VzKCk6CisgICAgICAgICAgIC4uLgorICAgICAgIHJlc3VsdCA9IHBlcmZvcm1fb3BlcmF0aW9uKCkKKyAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgIHN0YWNrLnBvcF9hbGwoKQorCitEdWUgdG8gdGhlIHdheSB0aGUgZGVjb3JhdG9yIHByb3RvY29sIHdvcmtzLCBhIGNhbGxiYWNrIGZ1bmN0aW9uCitkZWNsYXJlZCB0aGlzIHdheSBjYW5ub3QgdGFrZSBhbnkgcGFyYW1ldGVycy4gSW5zdGVhZCwgYW55IHJlc291cmNlcyB0bworYmUgcmVsZWFzZWQgbXVzdCBiZSBhY2Nlc3NlZCBhcyBjbG9zdXJlIHZhcmlhYmxlcworCisKK1VzaW5nIGEgY29udGV4dCBtYW5hZ2VyIGFzIGEgZnVuY3Rpb24gZGVjb3JhdG9yCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCis6Y2xhc3M6YENvbnRleHREZWNvcmF0b3JgIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHVzZSBhIGNvbnRleHQgbWFuYWdlciBpbgorYm90aCBhbiBvcmRpbmFyeSBgYHdpdGhgYCBzdGF0ZW1lbnQgYW5kIGFsc28gYXMgYSBmdW5jdGlvbiBkZWNvcmF0b3IuCisKK0ZvciBleGFtcGxlLCBpdCBpcyBzb21ldGltZXMgdXNlZnVsIHRvIHdyYXAgZnVuY3Rpb25zIG9yIGdyb3VwcyBvZiBzdGF0ZW1lbnRzCit3aXRoIGEgbG9nZ2VyIHRoYXQgY2FuIHRyYWNrIHRoZSB0aW1lIG9mIGVudHJ5IGFuZCB0aW1lIG9mIGV4aXQuICBSYXRoZXIgdGhhbgord3JpdGluZyBib3RoIGEgZnVuY3Rpb24gZGVjb3JhdG9yIGFuZCBhIGNvbnRleHQgbWFuYWdlciBmb3IgdGhlIHRhc2ssCitpbmhlcml0aW5nIGZyb20gOmNsYXNzOmBDb250ZXh0RGVjb3JhdG9yYCBwcm92aWRlcyBib3RoIGNhcGFiaWxpdGllcyBpbiBhCitzaW5nbGUgZGVmaW5pdGlvbjo6CisKKyAgICBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IENvbnRleHREZWNvcmF0b3IKKyAgICBpbXBvcnQgbG9nZ2luZworCisgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLklORk8pCisKKyAgICBjbGFzcyB0cmFja19lbnRyeV9hbmRfZXhpdChDb250ZXh0RGVjb3JhdG9yKToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgorICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICBsb2dnaW5nLmluZm8oJ0VudGVyaW5nOiB7fScuZm9ybWF0KG5hbWUpKQorCisgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjLCBleGNfdGIpOgorICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCdFeGl0aW5nOiB7fScuZm9ybWF0KG5hbWUpKQorCitJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBjYW4gYmUgdXNlZCBhcyBib3RoIGEgY29udGV4dCBtYW5hZ2VyOjoKKworICAgIHdpdGggdHJhY2tfZW50cnlfYW5kX2V4aXQoJ3dpZGdldCBsb2FkZXInKToKKyAgICAgICAgcHJpbnQoJ1NvbWUgdGltZSBjb25zdW1pbmcgYWN0aXZpdHkgZ29lcyBoZXJlJykKKyAgICAgICAgbG9hZF93aWRnZXQoKQorCitBbmQgYWxzbyBhcyBhIGZ1bmN0aW9uIGRlY29yYXRvcjo6CisKKyAgICBAdHJhY2tfZW50cnlfYW5kX2V4aXQoJ3dpZGdldCBsb2FkZXInKQorICAgIGRlZiBhY3Rpdml0eSgpOgorICAgICAgICBwcmludCgnU29tZSB0aW1lIGNvbnN1bWluZyBhY3Rpdml0eSBnb2VzIGhlcmUnKQorICAgICAgICBsb2FkX3dpZGdldCgpCisKK05vdGUgdGhhdCB0aGVyZSBpcyBvbmUgYWRkaXRpb25hbCBsaW1pdGF0aW9uIHdoZW4gdXNpbmcgY29udGV4dCBtYW5hZ2VycworYXMgZnVuY3Rpb24gZGVjb3JhdG9yczogdGhlcmUncyBubyB3YXkgdG8gYWNjZXNzIHRoZSByZXR1cm4gdmFsdWUgb2YKKzptZXRoOmBfX2VudGVyX19gLiBJZiB0aGF0IHZhbHVlIGlzIG5lZWRlZCwgdGhlbiBpdCBpcyBzdGlsbCBuZWNlc3NhcnkgdG8gdXNlCithbiBleHBsaWNpdCBgYHdpdGhgYCBzdGF0ZW1lbnQuCisKIC4uIHNlZWFsc286OgogCiAgICA6cGVwOmAwMzQzYCAtIFRoZSAid2l0aCIgc3RhdGVtZW50CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb3B5cmVnLnJzdCBiL0RvYy9saWJyYXJ5L2NvcHlyZWcucnN0CmluZGV4IGYzNzIxZDEuLjUwZDU4NzkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvcHlyZWcucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvcHlyZWcucnN0CkBAIC0zMyw5ICszMywxMSBAQAogICAgcmV0dXJuZWQgYnkgKmZ1bmN0aW9uKiBhdCBwaWNrbGluZyB0aW1lLiAgOmV4YzpgVHlwZUVycm9yYCB3aWxsIGJlIHJhaXNlZCBpZgogICAgKm9iamVjdCogaXMgYSBjbGFzcyBvciAqY29uc3RydWN0b3IqIGlzIG5vdCBjYWxsYWJsZS4KIAotICAgU2VlIHRoZSA6bW9kOmBwaWNrbGVgIG1vZHVsZSBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoZSBpbnRlcmZhY2UgZXhwZWN0ZWQgb2YKLSAgICpmdW5jdGlvbiogYW5kICpjb25zdHJ1Y3RvciouCi0KKyAgIFNlZSB0aGUgOm1vZDpgcGlja2xlYCBtb2R1bGUgZm9yIG1vcmUgZGV0YWlscyBvbiB0aGUgaW50ZXJmYWNlCisgICBleHBlY3RlZCBvZiAqZnVuY3Rpb24qIGFuZCAqY29uc3RydWN0b3IqLiAgTm90ZSB0aGF0IHRoZQorICAgOmF0dHI6YH5waWNrbGUuUGlja2xlci5kaXNwYXRjaF90YWJsZWAgYXR0cmlidXRlIG9mIGEgcGlja2xlcgorICAgb2JqZWN0IG9yIHN1YmNsYXNzIG9mIDpjbGFzczpgcGlja2xlLlBpY2tsZXJgIGNhbiBhbHNvIGJlIHVzZWQgZm9yCisgICBkZWNsYXJpbmcgcmVkdWN0aW9uIGZ1bmN0aW9ucy4KIAogRXhhbXBsZQogLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3J5cHQucnN0IGIvRG9jL2xpYnJhcnkvY3J5cHQucnN0CmluZGV4IDBiZTU3MWUuLmI0YzkwY2QgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NyeXB0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9jcnlwdC5yc3QKQEAgLTE1LDkgKzE1LDkgQEAKIAogVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBhbiBpbnRlcmZhY2UgdG8gdGhlIDptYW5wYWdlOmBjcnlwdCgzKWAgcm91dGluZSwgd2hpY2ggaXMKIGEgb25lLXdheSBoYXNoIGZ1bmN0aW9uIGJhc2VkIHVwb24gYSBtb2RpZmllZCBERVMgYWxnb3JpdGhtOyBzZWUgdGhlIFVuaXggbWFuCi1wYWdlIGZvciBmdXJ0aGVyIGRldGFpbHMuICBQb3NzaWJsZSB1c2VzIGluY2x1ZGUgYWxsb3dpbmcgUHl0aG9uIHNjcmlwdHMgdG8KLWFjY2VwdCB0eXBlZCBwYXNzd29yZHMgZnJvbSB0aGUgdXNlciwgb3IgYXR0ZW1wdGluZyB0byBjcmFjayBVbml4IHBhc3N3b3JkcyB3aXRoCi1hIGRpY3Rpb25hcnkuCitwYWdlIGZvciBmdXJ0aGVyIGRldGFpbHMuICBQb3NzaWJsZSB1c2VzIGluY2x1ZGUgc3RvcmluZyBoYXNoZWQgcGFzc3dvcmRzCitzbyB5b3UgY2FuIGNoZWNrIHBhc3N3b3JkcyB3aXRob3V0IHN0b3JpbmcgdGhlIGFjdHVhbCBwYXNzd29yZCwgb3IgYXR0ZW1wdGluZwordG8gY3JhY2sgVW5peCBwYXNzd29yZHMgd2l0aCBhIGRpY3Rpb25hcnkuCiAKIC4uIGluZGV4Ojogc2luZ2xlOiBjcnlwdCgzKQogCkBAIC0yNiwxNSArMjYsNzQgQEAKIGV4dGVuc2lvbnMgYXZhaWxhYmxlIG9uIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHdpbGwgYWxzbyAgYmUgYXZhaWxhYmxlIG9uCiB0aGlzIG1vZHVsZS4KIAorSGFzaGluZyBNZXRob2RzCistLS0tLS0tLS0tLS0tLS0KIAotLi4gZnVuY3Rpb246OiBjcnlwdCh3b3JkLCBzYWx0KQorLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKK1RoZSA6bW9kOmBjcnlwdGAgbW9kdWxlIGRlZmluZXMgdGhlIGxpc3Qgb2YgaGFzaGluZyBtZXRob2RzIChub3QgYWxsIG1ldGhvZHMKK2FyZSBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcyk6CisKKy4uIGRhdGE6OiBNRVRIT0RfU0hBNTEyCisKKyAgIEEgTW9kdWxhciBDcnlwdCBGb3JtYXQgbWV0aG9kIHdpdGggMTYgY2hhcmFjdGVyIHNhbHQgYW5kIDg2IGNoYXJhY3RlcgorICAgaGFzaC4gIFRoaXMgaXMgdGhlIHN0cm9uZ2VzdCBtZXRob2QuCisKKy4uIGRhdGE6OiBNRVRIT0RfU0hBMjU2CisKKyAgIEFub3RoZXIgTW9kdWxhciBDcnlwdCBGb3JtYXQgbWV0aG9kIHdpdGggMTYgY2hhcmFjdGVyIHNhbHQgYW5kIDQzCisgICBjaGFyYWN0ZXIgaGFzaC4KKworLi4gZGF0YTo6IE1FVEhPRF9NRDUKKworICAgQW5vdGhlciBNb2R1bGFyIENyeXB0IEZvcm1hdCBtZXRob2Qgd2l0aCA4IGNoYXJhY3RlciBzYWx0IGFuZCAyMgorICAgY2hhcmFjdGVyIGhhc2guCisKKy4uIGRhdGE6OiBNRVRIT0RfQ1JZUFQKKworICAgVGhlIHRyYWRpdGlvbmFsIG1ldGhvZCB3aXRoIGEgMiBjaGFyYWN0ZXIgc2FsdCBhbmQgMTMgY2hhcmFjdGVycyBvZgorICAgaGFzaC4gIFRoaXMgaXMgdGhlIHdlYWtlc3QgbWV0aG9kLgorCisKK01vZHVsZSBBdHRyaWJ1dGVzCistLS0tLS0tLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gYXR0cmlidXRlOjogbWV0aG9kcworCisgICBBIGxpc3Qgb2YgYXZhaWxhYmxlIHBhc3N3b3JkIGhhc2hpbmcgYWxnb3JpdGhtcywgYXMKKyAgIGBgY3J5cHQuTUVUSE9EXypgYCBvYmplY3RzLiAgVGhpcyBsaXN0IGlzIHNvcnRlZCBmcm9tIHN0cm9uZ2VzdCB0bworICAgd2Vha2VzdCwgYW5kIGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBhdCBsZWFzdCBgYGNyeXB0Lk1FVEhPRF9DUllQVGBgLgorCisKK01vZHVsZSBGdW5jdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDptb2Q6YGNyeXB0YCBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKKworLi4gZnVuY3Rpb246OiBjcnlwdCh3b3JkLCBzYWx0PU5vbmUpCiAKICAgICp3b3JkKiB3aWxsIHVzdWFsbHkgYmUgYSB1c2VyJ3MgcGFzc3dvcmQgYXMgdHlwZWQgYXQgYSBwcm9tcHQgb3IgIGluIGEgZ3JhcGhpY2FsCi0gICBpbnRlcmZhY2UuICAqc2FsdCogaXMgdXN1YWxseSBhIHJhbmRvbSB0d28tY2hhcmFjdGVyIHN0cmluZyB3aGljaCB3aWxsIGJlIHVzZWQKLSAgIHRvIHBlcnR1cmIgdGhlIERFUyBhbGdvcml0aG0gaW4gb25lIG9mIDQwOTYgd2F5cy4gIFRoZSBjaGFyYWN0ZXJzIGluICpzYWx0KiBtdXN0Ci0gICBiZSBpbiB0aGUgc2V0IGBgWy4vYS16QS1aMC05XWBgLiAgUmV0dXJucyB0aGUgaGFzaGVkIHBhc3N3b3JkIGFzIGEgc3RyaW5nLCB3aGljaAotICAgd2lsbCBiZSBjb21wb3NlZCBvZiBjaGFyYWN0ZXJzIGZyb20gdGhlIHNhbWUgYWxwaGFiZXQgYXMgdGhlIHNhbHQgKHRoZSBmaXJzdCB0d28KLSAgIGNoYXJhY3RlcnMgcmVwcmVzZW50IHRoZSBzYWx0IGl0c2VsZikuCisgICBpbnRlcmZhY2UuICBUaGUgb3B0aW9uYWwgKnNhbHQqIGlzIGVpdGhlciBhIHN0cmluZyBhcyByZXR1cm5lZCBmcm9tCisgICA6ZnVuYzpgbWtzYWx0YCwgb25lIG9mIHRoZSBgYGNyeXB0Lk1FVEhPRF8qYGAgdmFsdWVzICh0aG91Z2ggbm90IGFsbAorICAgbWF5IGJlIGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zKSwgb3IgYSBmdWxsIGVuY3J5cHRlZCBwYXNzd29yZAorICAgaW5jbHVkaW5nIHNhbHQsIGFzIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24uICBJZiAqc2FsdCogaXMgbm90CisgICBwcm92aWRlZCwgdGhlIHN0cm9uZ2VzdCBtZXRob2Qgd2lsbCBiZSB1c2VkIChhcyByZXR1cm5lZCBieQorICAgOmZ1bmM6YG1ldGhvZHNgLgorCisgICBDaGVja2luZyBhIHBhc3N3b3JkIGlzIHVzdWFsbHkgZG9uZSBieSBwYXNzaW5nIHRoZSBwbGFpbi10ZXh0IHBhc3N3b3JkCisgICBhcyAqd29yZCogYW5kIHRoZSBmdWxsIHJlc3VsdHMgb2YgYSBwcmV2aW91cyA6ZnVuYzpgY3J5cHRgIGNhbGwsCisgICB3aGljaCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHJlc3VsdHMgb2YgdGhpcyBjYWxsLgorCisgICAqc2FsdCogKGVpdGhlciBhIHJhbmRvbSAyIG9yIDE2IGNoYXJhY3RlciBzdHJpbmcsIHBvc3NpYmx5IHByZWZpeGVkIHdpdGgKKyAgIGBgJGRpZ2l0JGBgIHRvIGluZGljYXRlIHRoZSBtZXRob2QpIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBwZXJ0dXJiIHRoZQorICAgZW5jcnlwdGlvbiBhbGdvcml0aG0uICBUaGUgY2hhcmFjdGVycyBpbiAqc2FsdCogbXVzdCBiZSBpbiB0aGUgc2V0CisgICBgYFsuL2EtekEtWjAtOV1gYCwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIE1vZHVsYXIgQ3J5cHQgRm9ybWF0IHdoaWNoCisgICBwcmVmaXhlcyBhIGBgJGRpZ2l0JGBgLgorCisgICBSZXR1cm5zIHRoZSBoYXNoZWQgcGFzc3dvcmQgYXMgYSBzdHJpbmcsIHdoaWNoIHdpbGwgYmUgY29tcG9zZWQgb2YKKyAgIGNoYXJhY3RlcnMgZnJvbSB0aGUgc2FtZSBhbHBoYWJldCBhcyB0aGUgc2FsdC4KIAogICAgLi4gaW5kZXg6OiBzaW5nbGU6IGNyeXB0KDMpCiAKQEAgLTQyLDE4ICsxMDEsNTIgQEAKICAgIGRpZmZlcmVudCBzaXplcyBpbiB0aGUgKnNhbHQqLCBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgIHRoZSBmdWxsIGNyeXB0ZWQKICAgIHBhc3N3b3JkIGFzIHNhbHQgd2hlbiBjaGVja2luZyBmb3IgYSBwYXNzd29yZC4KIAotQSBzaW1wbGUgZXhhbXBsZSBpbGx1c3RyYXRpbmcgdHlwaWNhbCB1c2U6OgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFjY2VwdCBgYGNyeXB0Lk1FVEhPRF8qYGAgdmFsdWVzIGluIGFkZGl0aW9uIHRvIHN0cmluZ3MgZm9yICpzYWx0Ki4KIAotICAgaW1wb3J0IGNyeXB0LCBnZXRwYXNzLCBwd2QKKworLi4gZnVuY3Rpb246OiBta3NhbHQobWV0aG9kPU5vbmUpCisKKyAgIFJldHVybiBhIHJhbmRvbWx5IGdlbmVyYXRlZCBzYWx0IG9mIHRoZSBzcGVjaWZpZWQgbWV0aG9kLiAgSWYgbm8KKyAgICptZXRob2QqIGlzIGdpdmVuLCB0aGUgc3Ryb25nZXN0IG1ldGhvZCBhdmFpbGFibGUgYXMgcmV0dXJuZWQgYnkKKyAgIDpmdW5jOmBtZXRob2RzYCBpcyB1c2VkLgorCisgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgc3RyaW5nIGVpdGhlciBvZiAyIGNoYXJhY3RlcnMgaW4gbGVuZ3RoIGZvcgorICAgYGBjcnlwdC5NRVRIT0RfQ1JZUFRgYCwgb3IgMTkgY2hhcmFjdGVycyBzdGFydGluZyB3aXRoIGBgJGRpZ2l0JGBgIGFuZAorICAgMTYgcmFuZG9tIGNoYXJhY3RlcnMgZnJvbSB0aGUgc2V0IGBgWy4vYS16QS1aMC05XWBgLCBzdWl0YWJsZSBmb3IKKyAgIHBhc3NpbmcgYXMgdGhlICpzYWx0KiBhcmd1bWVudCB0byA6ZnVuYzpgY3J5cHRgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworRXhhbXBsZXMKKy0tLS0tLS0tCisKK0Egc2ltcGxlIGV4YW1wbGUgaWxsdXN0cmF0aW5nIHR5cGljYWwgdXNlIChhIGNvbnN0YW50LXRpbWUgY29tcGFyaXNvbgorb3BlcmF0aW9uIGlzIG5lZWRlZCB0byBsaW1pdCBleHBvc3VyZSB0byB0aW1pbmcgYXR0YWNrcy4KKzpmdW5jOmBobWFjLmNvbXBhcmVfZGlnZXN0YCBpcyBzdWl0YWJsZSBmb3IgdGhpcyBwdXJwb3NlKTo6CisKKyAgIGltcG9ydCBwd2QKKyAgIGltcG9ydCBjcnlwdAorICAgaW1wb3J0IGdldHBhc3MKKyAgIGZyb20gaG1hYyBpbXBvcnQgY29tcGFyZV9kaWdlc3QgYXMgY29tcGFyZV9oYXNoCiAKICAgIGRlZiBsb2dpbigpOgotICAgICAgIHVzZXJuYW1lID0gaW5wdXQoJ1B5dGhvbiBsb2dpbjonKQorICAgICAgIHVzZXJuYW1lID0gaW5wdXQoJ1B5dGhvbiBsb2dpbjogJykKICAgICAgICBjcnlwdGVkcGFzc3dkID0gcHdkLmdldHB3bmFtKHVzZXJuYW1lKVsxXQogICAgICAgIGlmIGNyeXB0ZWRwYXNzd2Q6CiAgICAgICAgICAgIGlmIGNyeXB0ZWRwYXNzd2QgPT0gJ3gnIG9yIGNyeXB0ZWRwYXNzd2QgPT0gJyonOgotICAgICAgICAgICAgICAgcmFpc2UgIlNvcnJ5LCBjdXJyZW50bHkgbm8gc3VwcG9ydCBmb3Igc2hhZG93IHBhc3N3b3JkcyIKKyAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ25vIHN1cHBvcnQgZm9yIHNoYWRvdyBwYXNzd29yZHMnKQogICAgICAgICAgICBjbGVhcnRleHQgPSBnZXRwYXNzLmdldHBhc3MoKQotICAgICAgICAgICByZXR1cm4gY3J5cHQuY3J5cHQoY2xlYXJ0ZXh0LCBjcnlwdGVkcGFzc3dkKSA9PSBjcnlwdGVkcGFzc3dkCisgICAgICAgICAgIHJldHVybiBjb21wYXJlX2hhc2goY3J5cHQuY3J5cHQoY2xlYXJ0ZXh0LCBjcnlwdGVkcGFzc3dkKSwgY3J5cHRlZHBhc3N3ZCkKICAgICAgICBlbHNlOgotICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICByZXR1cm4gVHJ1ZQogCitUbyBnZW5lcmF0ZSBhIGhhc2ggb2YgYSBwYXNzd29yZCB1c2luZyB0aGUgc3Ryb25nZXN0IGF2YWlsYWJsZSBtZXRob2QgYW5kCitjaGVjayBpdCBhZ2FpbnN0IHRoZSBvcmlnaW5hbDo6CisKKyAgIGltcG9ydCBjcnlwdAorICAgZnJvbSBobWFjIGltcG9ydCBjb21wYXJlX2RpZ2VzdCBhcyBjb21wYXJlX2hhc2gKKworICAgaGFzaGVkID0gY3J5cHQuY3J5cHQocGxhaW50ZXh0KQorICAgaWYgbm90IGNvbXBhcmVfaGFzaChoYXNoZWQsIGNyeXB0LmNyeXB0KHBsYWludGV4dCwgaGFzaGVkKSk6CisgICAgICByYWlzZSBWYWx1ZUVycm9yKCJoYXNoZWQgdmVyc2lvbiBkb2Vzbid0IHZhbGlkYXRlIGFnYWluc3Qgb3JpZ2luYWwiKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3J5cHRvLnJzdCBiL0RvYy9saWJyYXJ5L2NyeXB0by5yc3QKaW5kZXggYTIzMzU2MS4uNDY5ZWRlNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3J5cHRvLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jcnlwdG8ucnN0CkBAIC04LDYgKzgsNyBAQAogCiBUaGUgbW9kdWxlcyBkZXNjcmliZWQgaW4gdGhpcyBjaGFwdGVyIGltcGxlbWVudCB2YXJpb3VzIGFsZ29yaXRobXMgb2YgYQogY3J5cHRvZ3JhcGhpYyBuYXR1cmUuICBUaGV5IGFyZSBhdmFpbGFibGUgYXQgdGhlIGRpc2NyZXRpb24gb2YgdGhlIGluc3RhbGxhdGlvbi4KK09uIFVuaXggc3lzdGVtcywgdGhlIDptb2Q6YGNyeXB0YCBtb2R1bGUgbWF5IGFsc28gYmUgYXZhaWxhYmxlLgogSGVyZSdzIGFuIG92ZXJ2aWV3OgogCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Nzdi5yc3QgYi9Eb2MvbGlicmFyeS9jc3YucnN0CmluZGV4IDkwMjYxZTIuLmEyMGM0YmUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Nzdi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY3N2LnJzdApAQCAtMTEsMTUgKzExLDE1IEBACiAgICBwYWlyOiBkYXRhOyB0YWJ1bGFyCiAKIFRoZSBzby1jYWxsZWQgQ1NWIChDb21tYSBTZXBhcmF0ZWQgVmFsdWVzKSBmb3JtYXQgaXMgdGhlIG1vc3QgY29tbW9uIGltcG9ydCBhbmQKLWV4cG9ydCBmb3JtYXQgZm9yIHNwcmVhZHNoZWV0cyBhbmQgZGF0YWJhc2VzLiAgVGhlcmUgaXMgbm8gIkNTViBzdGFuZGFyZCIsIHNvCi10aGUgZm9ybWF0IGlzIG9wZXJhdGlvbmFsbHkgZGVmaW5lZCBieSB0aGUgbWFueSBhcHBsaWNhdGlvbnMgd2hpY2ggcmVhZCBhbmQKLXdyaXRlIGl0LiAgVGhlIGxhY2sgb2YgYSBzdGFuZGFyZCBtZWFucyB0aGF0IHN1YnRsZSBkaWZmZXJlbmNlcyBvZnRlbiBleGlzdCBpbgotdGhlIGRhdGEgcHJvZHVjZWQgYW5kIGNvbnN1bWVkIGJ5IGRpZmZlcmVudCBhcHBsaWNhdGlvbnMuICBUaGVzZSBkaWZmZXJlbmNlcyBjYW4KLW1ha2UgaXQgYW5ub3lpbmcgdG8gcHJvY2VzcyBDU1YgZmlsZXMgZnJvbSBtdWx0aXBsZSBzb3VyY2VzLiAgU3RpbGwsIHdoaWxlIHRoZQotZGVsaW1pdGVycyBhbmQgcXVvdGluZyBjaGFyYWN0ZXJzIHZhcnksIHRoZSBvdmVyYWxsIGZvcm1hdCBpcyBzaW1pbGFyIGVub3VnaAotdGhhdCBpdCBpcyBwb3NzaWJsZSB0byB3cml0ZSBhIHNpbmdsZSBtb2R1bGUgd2hpY2ggY2FuIGVmZmljaWVudGx5IG1hbmlwdWxhdGUKLXN1Y2ggZGF0YSwgaGlkaW5nIHRoZSBkZXRhaWxzIG9mIHJlYWRpbmcgYW5kIHdyaXRpbmcgdGhlIGRhdGEgZnJvbSB0aGUKLXByb2dyYW1tZXIuCitleHBvcnQgZm9ybWF0IGZvciBzcHJlYWRzaGVldHMgYW5kIGRhdGFiYXNlcy4gIENTViBmb3JtYXQgd2FzIHVzZWQgZm9yIG1hbnkKK3llYXJzIHByaW9yIHRvIGF0dGVtcHRzIHRvIGRlc2NyaWJlIHRoZSBmb3JtYXQgaW4gYSBzdGFuZGFyZGl6ZWQgd2F5IGluCis6cmZjOmA0MTgwYC4gIFRoZSBsYWNrIG9mIGEgd2VsbC1kZWZpbmVkIHN0YW5kYXJkIG1lYW5zIHRoYXQgc3VidGxlIGRpZmZlcmVuY2VzCitvZnRlbiBleGlzdCBpbiB0aGUgZGF0YSBwcm9kdWNlZCBhbmQgY29uc3VtZWQgYnkgZGlmZmVyZW50IGFwcGxpY2F0aW9ucy4gIFRoZXNlCitkaWZmZXJlbmNlcyBjYW4gbWFrZSBpdCBhbm5veWluZyB0byBwcm9jZXNzIENTViBmaWxlcyBmcm9tIG11bHRpcGxlIHNvdXJjZXMuCitTdGlsbCwgd2hpbGUgdGhlIGRlbGltaXRlcnMgYW5kIHF1b3RpbmcgY2hhcmFjdGVycyB2YXJ5LCB0aGUgb3ZlcmFsbCBmb3JtYXQgaXMKK3NpbWlsYXIgZW5vdWdoIHRoYXQgaXQgaXMgcG9zc2libGUgdG8gd3JpdGUgYSBzaW5nbGUgbW9kdWxlIHdoaWNoIGNhbgorZWZmaWNpZW50bHkgbWFuaXB1bGF0ZSBzdWNoIGRhdGEsIGhpZGluZyB0aGUgZGV0YWlscyBvZiByZWFkaW5nIGFuZCB3cml0aW5nIHRoZQorZGF0YSBmcm9tIHRoZSBwcm9ncmFtbWVyLgogCiBUaGUgOm1vZDpgY3N2YCBtb2R1bGUgaW1wbGVtZW50cyBjbGFzc2VzIHRvIHJlYWQgYW5kIHdyaXRlIHRhYnVsYXIgZGF0YSBpbiBDU1YKIGZvcm1hdC4gIEl0IGFsbG93cyBwcm9ncmFtbWVycyB0byBzYXksICJ3cml0ZSB0aGlzIGRhdGEgaW4gdGhlIGZvcm1hdCBwcmVmZXJyZWQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2N0eXBlcy5yc3QgYi9Eb2MvbGlicmFyeS9jdHlwZXMucnN0CmluZGV4IDZmMDkzZmUuLjVmNWE1MTIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2N0eXBlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdApAQCAtMzksOSArMzksMTQgQEAKIGNvbnZlbnRpb24sIHdoaWxlICp3aW5kbGwqIGxpYnJhcmllcyBjYWxsIGZ1bmN0aW9ucyB1c2luZyB0aGUgYGBzdGRjYWxsYGAKIGNhbGxpbmcgY29udmVudGlvbi4gKm9sZWRsbCogYWxzbyB1c2VzIHRoZSBgYHN0ZGNhbGxgYCBjYWxsaW5nIGNvbnZlbnRpb24sIGFuZAogYXNzdW1lcyB0aGUgZnVuY3Rpb25zIHJldHVybiBhIFdpbmRvd3MgOmM6dHlwZTpgSFJFU1VMVGAgZXJyb3IgY29kZS4gVGhlIGVycm9yCi1jb2RlIGlzIHVzZWQgdG8gYXV0b21hdGljYWxseSByYWlzZSBhIDpjbGFzczpgV2luZG93c0Vycm9yYCBleGNlcHRpb24gd2hlbiB0aGUKK2NvZGUgaXMgdXNlZCB0byBhdXRvbWF0aWNhbGx5IHJhaXNlIGEgOmNsYXNzOmBPU0Vycm9yYCBleGNlcHRpb24gd2hlbiB0aGUKIGZ1bmN0aW9uIGNhbGwgZmFpbHMuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBXaW5kb3dzIGVycm9ycyB1c2VkIHRvIHJhaXNlIDpleGM6YFdpbmRvd3NFcnJvcmAsIHdoaWNoIGlzIG5vdyBhbiBhbGlhcworICAgb2YgOmV4YzpgT1NFcnJvcmAuCisKKwogSGVyZSBhcmUgc29tZSBleGFtcGxlcyBmb3IgV2luZG93cy4gTm90ZSB0aGF0IGBgbXN2Y3J0YGAgaXMgdGhlIE1TIHN0YW5kYXJkIEMKIGxpYnJhcnkgY29udGFpbmluZyBtb3N0IHN0YW5kYXJkIEMgZnVuY3Rpb25zLCBhbmQgdXNlcyB0aGUgY2RlY2wgY2FsbGluZwogY29udmVudGlvbjo6CkBAIC0xODksNyArMTk0LDcgQEAKICAgID4+PiB3aW5kbGwua2VybmVsMzIuR2V0TW9kdWxlSGFuZGxlQSgzMikgIyBkb2N0ZXN0OiArV0lORE9XUwogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/Ci0gICBXaW5kb3dzRXJyb3I6IGV4Y2VwdGlvbjogYWNjZXNzIHZpb2xhdGlvbiByZWFkaW5nIDB4MDAwMDAwMjAKKyAgIE9TRXJyb3I6IGV4Y2VwdGlvbjogYWNjZXNzIHZpb2xhdGlvbiByZWFkaW5nIDB4MDAwMDAwMjAKICAgID4+PgogCiBUaGVyZSBhcmUsIGhvd2V2ZXIsIGVub3VnaCB3YXlzIHRvIGNyYXNoIFB5dGhvbiB3aXRoIDptb2Q6YGN0eXBlc2AsIHNvIHlvdQpAQCAtNDk2LDcgKzUwMSw3IEBACiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID8KICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMywgaW4gVmFsaWRIYW5kbGUKLSAgIFdpbmRvd3NFcnJvcjogW0Vycm5vIDEyNl0gVGhlIHNwZWNpZmllZCBtb2R1bGUgY291bGQgbm90IGJlIGZvdW5kLgorICAgT1NFcnJvcjogW0Vycm5vIDEyNl0gVGhlIHNwZWNpZmllZCBtb2R1bGUgY291bGQgbm90IGJlIGZvdW5kLgogICAgPj4+CiAKIGBgV2luRXJyb3JgYCBpcyBhIGZ1bmN0aW9uIHdoaWNoIHdpbGwgY2FsbCBXaW5kb3dzIGBgRm9ybWF0TWVzc2FnZSgpYGAgYXBpIHRvCkBAIC05MzgsMjEgKzk0MywyMSBAQAogOm1vZDpgY3R5cGVzYCBhbGxvd3MgdG8gY3JlYXRlIEMgY2FsbGFibGUgZnVuY3Rpb24gcG9pbnRlcnMgZnJvbSBQeXRob24gY2FsbGFibGVzLgogVGhlc2UgYXJlIHNvbWV0aW1lcyBjYWxsZWQgKmNhbGxiYWNrIGZ1bmN0aW9ucyouCiAKLUZpcnN0LCB5b3UgbXVzdCBjcmVhdGUgYSBjbGFzcyBmb3IgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLCB0aGUgY2xhc3Mga25vd3MgdGhlCitGaXJzdCwgeW91IG11c3QgY3JlYXRlIGEgY2xhc3MgZm9yIHRoZSBjYWxsYmFjayBmdW5jdGlvbi4gVGhlIGNsYXNzIGtub3dzIHRoZQogY2FsbGluZyBjb252ZW50aW9uLCB0aGUgcmV0dXJuIHR5cGUsIGFuZCB0aGUgbnVtYmVyIGFuZCB0eXBlcyBvZiBhcmd1bWVudHMgdGhpcwogZnVuY3Rpb24gd2lsbCByZWNlaXZlLgogCi1UaGUgQ0ZVTkNUWVBFIGZhY3RvcnkgZnVuY3Rpb24gY3JlYXRlcyB0eXBlcyBmb3IgY2FsbGJhY2sgZnVuY3Rpb25zIHVzaW5nIHRoZQotbm9ybWFsIGNkZWNsIGNhbGxpbmcgY29udmVudGlvbiwgYW5kLCBvbiBXaW5kb3dzLCB0aGUgV0lORlVOQ1RZUEUgZmFjdG9yeQotZnVuY3Rpb24gY3JlYXRlcyB0eXBlcyBmb3IgY2FsbGJhY2sgZnVuY3Rpb25zIHVzaW5nIHRoZSBzdGRjYWxsIGNhbGxpbmcKLWNvbnZlbnRpb24uCitUaGUgOmZ1bmM6YENGVU5DVFlQRWAgZmFjdG9yeSBmdW5jdGlvbiBjcmVhdGVzIHR5cGVzIGZvciBjYWxsYmFjayBmdW5jdGlvbnMKK3VzaW5nIHRoZSBgYGNkZWNsYGAgY2FsbGluZyBjb252ZW50aW9uLiBPbiBXaW5kb3dzLCB0aGUgOmZ1bmM6YFdJTkZVTkNUWVBFYAorZmFjdG9yeSBmdW5jdGlvbiBjcmVhdGVzIHR5cGVzIGZvciBjYWxsYmFjayBmdW5jdGlvbnMgdXNpbmcgdGhlIGBgc3RkY2FsbGBgCitjYWxsaW5nIGNvbnZlbnRpb24uCiAKIEJvdGggb2YgdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnMgYXJlIGNhbGxlZCB3aXRoIHRoZSByZXN1bHQgdHlwZSBhcyBmaXJzdAogYXJndW1lbnQsIGFuZCB0aGUgY2FsbGJhY2sgZnVuY3Rpb25zIGV4cGVjdGVkIGFyZ3VtZW50IHR5cGVzIGFzIHRoZSByZW1haW5pbmcKIGFyZ3VtZW50cy4KIAogSSB3aWxsIHByZXNlbnQgYW4gZXhhbXBsZSBoZXJlIHdoaWNoIHVzZXMgdGhlIHN0YW5kYXJkIEMgbGlicmFyeSdzCi06YzpmdW5jOmBxc29ydGAgZnVuY3Rpb24sIHRoaXMgaXMgdXNlZCB0byBzb3J0IGl0ZW1zIHdpdGggdGhlIGhlbHAgb2YgYSBjYWxsYmFjaworOmM6ZnVuYzpgcXNvcnRgIGZ1bmN0aW9uLCB0aGF0IGlzIHVzZWQgdG8gc29ydCBpdGVtcyB3aXRoIHRoZSBoZWxwIG9mIGEgY2FsbGJhY2sKIGZ1bmN0aW9uLiAgOmM6ZnVuYzpgcXNvcnRgIHdpbGwgYmUgdXNlZCB0byBzb3J0IGFuIGFycmF5IG9mIGludGVnZXJzOjoKIAogICAgPj4+IEludEFycmF5NSA9IGNfaW50ICogNQpAQCAtOTY1LDcgKzk3MCw3IEBACiBpdGVtcyBpbiB0aGUgZGF0YSBhcnJheSwgdGhlIHNpemUgb2Ygb25lIGl0ZW0sIGFuZCBhIHBvaW50ZXIgdG8gdGhlIGNvbXBhcmlzb24KIGZ1bmN0aW9uLCB0aGUgY2FsbGJhY2suIFRoZSBjYWxsYmFjayB3aWxsIHRoZW4gYmUgY2FsbGVkIHdpdGggdHdvIHBvaW50ZXJzIHRvCiBpdGVtcywgYW5kIGl0IG11c3QgcmV0dXJuIGEgbmVnYXRpdmUgaW50ZWdlciBpZiB0aGUgZmlyc3QgaXRlbSBpcyBzbWFsbGVyIHRoYW4KLXRoZSBzZWNvbmQsIGEgemVybyBpZiB0aGV5IGFyZSBlcXVhbCwgYW5kIGEgcG9zaXRpdmUgaW50ZWdlciBlbHNlLgordGhlIHNlY29uZCwgYSB6ZXJvIGlmIHRoZXkgYXJlIGVxdWFsLCBhbmQgYSBwb3NpdGl2ZSBpbnRlZ2VyIG90aGVyd2lzZS4KIAogU28gb3VyIGNhbGxiYWNrIGZ1bmN0aW9uIHJlY2VpdmVzIHBvaW50ZXJzIHRvIGludGVnZXJzLCBhbmQgbXVzdCByZXR1cm4gYW4KIGludGVnZXIuIEZpcnN0IHdlIGNyZWF0ZSB0aGUgYGB0eXBlYGAgZm9yIHRoZSBjYWxsYmFjayBmdW5jdGlvbjo6CkBAIC05NzMsMzYgKzk3OCw4IEBACiAgICA+Pj4gQ01QRlVOQyA9IENGVU5DVFlQRShjX2ludCwgUE9JTlRFUihjX2ludCksIFBPSU5URVIoY19pbnQpKQogICAgPj4+CiAKLUZvciB0aGUgZmlyc3QgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLCB3ZSBzaW1wbHkgcHJpbnQgdGhlCi1hcmd1bWVudHMgd2UgZ2V0LCBhbmQgcmV0dXJuIDAgKGluY3JlbWVudGFsIGRldmVsb3BtZW50IDstKTo6Ci0KLSAgID4+PiBkZWYgcHlfY21wX2Z1bmMoYSwgYik6Ci0gICAuLi4gICAgIHByaW50KCJweV9jbXBfZnVuYyIsIGEsIGIpCi0gICAuLi4gICAgIHJldHVybiAwCi0gICAuLi4KLSAgID4+PgotCi1DcmVhdGUgdGhlIEMgY2FsbGFibGUgY2FsbGJhY2s6OgotCi0gICA+Pj4gY21wX2Z1bmMgPSBDTVBGVU5DKHB5X2NtcF9mdW5jKQotICAgPj4+Ci0KLUFuZCB3ZSdyZSByZWFkeSB0byBnbzo6Ci0KLSAgID4+PiBxc29ydChpYSwgbGVuKGlhKSwgc2l6ZW9mKGNfaW50KSwgY21wX2Z1bmMpICMgZG9jdGVzdDogK1dJTkRPV1MKLSAgIHB5X2NtcF9mdW5jIDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPiA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4KLSAgIHB5X2NtcF9mdW5jIDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPiA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4KLSAgIHB5X2NtcF9mdW5jIDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPiA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4KLSAgIHB5X2NtcF9mdW5jIDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPiA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4KLSAgIHB5X2NtcF9mdW5jIDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPiA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4KLSAgIHB5X2NtcF9mdW5jIDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPiA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4KLSAgIHB5X2NtcF9mdW5jIDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPiA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4KLSAgIHB5X2NtcF9mdW5jIDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPiA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4KLSAgIHB5X2NtcF9mdW5jIDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPiA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4KLSAgIHB5X2NtcF9mdW5jIDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPiA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4KLSAgID4+PgotCi1XZSBrbm93IGhvdyB0byBhY2Nlc3MgdGhlIGNvbnRlbnRzIG9mIGEgcG9pbnRlciwgc28gbGV0cyByZWRlZmluZSBvdXIgY2FsbGJhY2s6OgorVG8gZ2V0IHN0YXJ0ZWQsIGhlcmUgaXMgYSBzaW1wbGUgY2FsbGJhY2sgdGhhdCBzaG93cyB0aGUgdmFsdWVzIGl0IGdldHMKK3Bhc3NlZDo6CiAKICAgID4+PiBkZWYgcHlfY21wX2Z1bmMoYSwgYik6CiAgICAuLi4gICAgIHByaW50KCJweV9jbXBfZnVuYyIsIGFbMF0sIGJbMF0pCkBAIC0xMDExLDIzICs5ODgsNyBAQAogICAgPj4+IGNtcF9mdW5jID0gQ01QRlVOQyhweV9jbXBfZnVuYykKICAgID4+PgogCi1IZXJlIGlzIHdoYXQgd2UgZ2V0IG9uIFdpbmRvd3M6OgotCi0gICA+Pj4gcXNvcnQoaWEsIGxlbihpYSksIHNpemVvZihjX2ludCksIGNtcF9mdW5jKSAjIGRvY3Rlc3Q6ICtXSU5ET1dTCi0gICBweV9jbXBfZnVuYyA3IDEKLSAgIHB5X2NtcF9mdW5jIDMzIDEKLSAgIHB5X2NtcF9mdW5jIDk5IDEKLSAgIHB5X2NtcF9mdW5jIDUgMQotICAgcHlfY21wX2Z1bmMgNyA1Ci0gICBweV9jbXBfZnVuYyAzMyA1Ci0gICBweV9jbXBfZnVuYyA5OSA1Ci0gICBweV9jbXBfZnVuYyA3IDk5Ci0gICBweV9jbXBfZnVuYyAzMyA5OQotICAgcHlfY21wX2Z1bmMgNyAzMwotICAgPj4+Ci0KLUl0IGlzIGZ1bm55IHRvIHNlZSB0aGF0IG9uIGxpbnV4IHRoZSBzb3J0IGZ1bmN0aW9uIHNlZW1zIHRvIHdvcmsgbXVjaCBtb3JlCi1lZmZpY2llbnRseSwgaXQgaXMgZG9pbmcgbGVzcyBjb21wYXJpc29uczo6CitUaGUgcmVzdWx0OjoKIAogICAgPj4+IHFzb3J0KGlhLCBsZW4oaWEpLCBzaXplb2YoY19pbnQpLCBjbXBfZnVuYykgIyBkb2N0ZXN0OiArTElOVVgKICAgIHB5X2NtcF9mdW5jIDUgMQpAQCAtMTAzNywzMiArOTk4LDEzIEBACiAgICBweV9jbXBfZnVuYyAxIDcKICAgID4+PgogCi1BaCwgd2UncmUgbmVhcmx5IGRvbmUhIFRoZSBsYXN0IHN0ZXAgaXMgdG8gYWN0dWFsbHkgY29tcGFyZSB0aGUgdHdvIGl0ZW1zIGFuZAotcmV0dXJuIGEgdXNlZnVsIHJlc3VsdDo6CitOb3cgd2UgY2FuIGFjdHVhbGx5IGNvbXBhcmUgdGhlIHR3byBpdGVtcyBhbmQgcmV0dXJuIGEgdXNlZnVsIHJlc3VsdDo6CiAKICAgID4+PiBkZWYgcHlfY21wX2Z1bmMoYSwgYik6CiAgICAuLi4gICAgIHByaW50KCJweV9jbXBfZnVuYyIsIGFbMF0sIGJbMF0pCiAgICAuLi4gICAgIHJldHVybiBhWzBdIC0gYlswXQogICAgLi4uCiAgICA+Pj4KLQotRmluYWwgcnVuIG9uIFdpbmRvd3M6OgotCi0gICA+Pj4gcXNvcnQoaWEsIGxlbihpYSksIHNpemVvZihjX2ludCksIENNUEZVTkMocHlfY21wX2Z1bmMpKSAjIGRvY3Rlc3Q6ICtXSU5ET1dTCi0gICBweV9jbXBfZnVuYyAzMyA3Ci0gICBweV9jbXBfZnVuYyA5OSAzMwotICAgcHlfY21wX2Z1bmMgNSA5OQotICAgcHlfY21wX2Z1bmMgMSA5OQotICAgcHlfY21wX2Z1bmMgMzMgNwotICAgcHlfY21wX2Z1bmMgMSAzMwotICAgcHlfY21wX2Z1bmMgNSAzMwotICAgcHlfY21wX2Z1bmMgNSA3Ci0gICBweV9jbXBfZnVuYyAxIDcKLSAgIHB5X2NtcF9mdW5jIDUgMQotICAgPj4+Ci0KLWFuZCBvbiBMaW51eDo6Ci0KICAgID4+PiBxc29ydChpYSwgbGVuKGlhKSwgc2l6ZW9mKGNfaW50KSwgQ01QRlVOQyhweV9jbXBfZnVuYykpICMgZG9jdGVzdDogK0xJTlVYCiAgICBweV9jbXBfZnVuYyA1IDEKICAgIHB5X2NtcF9mdW5jIDMzIDk5CkBAIC0xMDcxLDkgKzEwMTMsNiBAQAogICAgcHlfY21wX2Z1bmMgNSA3CiAgICA+Pj4KIAotSXQgaXMgcXVpdGUgaW50ZXJlc3RpbmcgdG8gc2VlIHRoYXQgdGhlIFdpbmRvd3MgOmZ1bmM6YHFzb3J0YCBmdW5jdGlvbiBuZWVkcwotbW9yZSBjb21wYXJpc29ucyB0aGFuIHRoZSBsaW51eCB2ZXJzaW9uIQotCiBBcyB3ZSBjYW4gZWFzaWx5IGNoZWNrLCBvdXIgYXJyYXkgaXMgc29ydGVkIG5vdzo6CiAKICAgID4+PiBmb3IgaSBpbiBpYTogcHJpbnQoaSwgZW5kPSIgIikKQEAgLTEwODMsOSArMTAyMiw5IEBACiAKICoqSW1wb3J0YW50IG5vdGUgZm9yIGNhbGxiYWNrIGZ1bmN0aW9uczoqKgogCi1NYWtlIHN1cmUgeW91IGtlZXAgcmVmZXJlbmNlcyB0byBDRlVOQ1RZUEUgb2JqZWN0cyBhcyBsb25nIGFzIHRoZXkgYXJlIHVzZWQgZnJvbQotQyBjb2RlLiA6bW9kOmBjdHlwZXNgIGRvZXNuJ3QsIGFuZCBpZiB5b3UgZG9uJ3QsIHRoZXkgbWF5IGJlIGdhcmJhZ2UgY29sbGVjdGVkLAotY3Jhc2hpbmcgeW91ciBwcm9ncmFtIHdoZW4gYSBjYWxsYmFjayBpcyBtYWRlLgorTWFrZSBzdXJlIHlvdSBrZWVwIHJlZmVyZW5jZXMgdG8gOmZ1bmM6YENGVU5DVFlQRWAgb2JqZWN0cyBhcyBsb25nIGFzIHRoZXkgYXJlCit1c2VkIGZyb20gQyBjb2RlLiA6bW9kOmBjdHlwZXNgIGRvZXNuJ3QsIGFuZCBpZiB5b3UgZG9uJ3QsIHRoZXkgbWF5IGJlIGdhcmJhZ2UKK2NvbGxlY3RlZCwgY3Jhc2hpbmcgeW91ciBwcm9ncmFtIHdoZW4gYSBjYWxsYmFjayBpcyBtYWRlLgogCiAKIC4uIF9jdHlwZXMtYWNjZXNzaW5nLXZhbHVlcy1leHBvcnRlZC1mcm9tLWRsbHM6CkBAIC0xMzYyLDcgKzEzMDEsMTAgQEAKICAgIGFzc3VtZWQgdG8gcmV0dXJuIHRoZSB3aW5kb3dzIHNwZWNpZmljIDpjbGFzczpgSFJFU1VMVGAgY29kZS4gIDpjbGFzczpgSFJFU1VMVGAKICAgIHZhbHVlcyBjb250YWluIGluZm9ybWF0aW9uIHNwZWNpZnlpbmcgd2hldGhlciB0aGUgZnVuY3Rpb24gY2FsbCBmYWlsZWQgb3IKICAgIHN1Y2NlZWRlZCwgdG9nZXRoZXIgd2l0aCBhZGRpdGlvbmFsIGVycm9yIGNvZGUuICBJZiB0aGUgcmV0dXJuIHZhbHVlIHNpZ25hbHMgYQotICAgZmFpbHVyZSwgYW4gOmNsYXNzOmBXaW5kb3dzRXJyb3JgIGlzIGF1dG9tYXRpY2FsbHkgcmFpc2VkLgorICAgZmFpbHVyZSwgYW4gOmNsYXNzOmBPU0Vycm9yYCBpcyBhdXRvbWF0aWNhbGx5IHJhaXNlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YFdpbmRvd3NFcnJvcmAgdXNlZCB0byBiZSByYWlzZWQuCiAKIAogLi4gY2xhc3M6OiBXaW5ETEwobmFtZSwgbW9kZT1ERUZBVUxUX01PREUsIGhhbmRsZT1Ob25lLCB1c2VfZXJybm89RmFsc2UsIHVzZV9sYXN0X2Vycm9yPUZhbHNlKQpAQCAtMTk3OSwxMSArMTkyMSwxNCBAQAogLi4gZnVuY3Rpb246OiBXaW5FcnJvcihjb2RlPU5vbmUsIGRlc2NyPU5vbmUpCiAKICAgIFdpbmRvd3Mgb25seTogdGhpcyBmdW5jdGlvbiBpcyBwcm9iYWJseSB0aGUgd29yc3QtbmFtZWQgdGhpbmcgaW4gY3R5cGVzLiBJdAotICAgY3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBXaW5kb3dzRXJyb3IuICBJZiAqY29kZSogaXMgbm90IHNwZWNpZmllZCwKKyAgIGNyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgT1NFcnJvci4gIElmICpjb2RlKiBpcyBub3Qgc3BlY2lmaWVkLAogICAgYGBHZXRMYXN0RXJyb3JgYCBpcyBjYWxsZWQgdG8gZGV0ZXJtaW5lIHRoZSBlcnJvciBjb2RlLiBJZiAqZGVzY3IqIGlzIG5vdAogICAgc3BlY2lmaWVkLCA6ZnVuYzpgRm9ybWF0RXJyb3JgIGlzIGNhbGxlZCB0byBnZXQgYSB0ZXh0dWFsIGRlc2NyaXB0aW9uIG9mIHRoZQogICAgZXJyb3IuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBbiBpbnN0YW5jZSBvZiA6ZXhjOmBXaW5kb3dzRXJyb3JgIHVzZWQgdG8gYmUgY3JlYXRlZC4KKwogCiAuLiBmdW5jdGlvbjo6IHdzdHJpbmdfYXQoYWRkcmVzcywgc2l6ZT0tMSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3Vyc2VzLnJzdCBiL0RvYy9saWJyYXJ5L2N1cnNlcy5yc3QKaW5kZXggZDJjMjMxNi4uY2QxOTE1ZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3Vyc2VzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jdXJzZXMucnN0CkBAIC01OTksNiArNTk5LDE3IEBACiAgICAgICBPbmx5IG9uZSAqY2gqIGNhbiBiZSBwdXNoZWQgYmVmb3JlIDptZXRoOmBnZXRjaGAgaXMgY2FsbGVkLgogCiAKKy4uIGZ1bmN0aW9uOjogdW5nZXRfd2NoKGNoKQorCisgICBQdXNoICpjaCogc28gdGhlIG5leHQgOm1ldGg6YGdldF93Y2hgIHdpbGwgcmV0dXJuIGl0LgorCisgICAuLiBub3RlOjoKKworICAgICAgT25seSBvbmUgKmNoKiBjYW4gYmUgcHVzaGVkIGJlZm9yZSA6bWV0aDpgZ2V0X3djaGAgaXMgY2FsbGVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBmdW5jdGlvbjo6IHVuZ2V0bW91c2UoaWQsIHgsIHksIHosIGJzdGF0ZSkKIAogICAgUHVzaCBhIDpjb25zdDpgS0VZX01PVVNFYCBldmVudCBvbnRvIHRoZSBpbnB1dCBxdWV1ZSwgYXNzb2NpYXRpbmcgdGhlIGdpdmVuCkBAIC02NDMsNyArNjU0LDcgQEAKIC0tLS0tLS0tLS0tLS0tCiAKIFdpbmRvdyBvYmplY3RzLCBhcyByZXR1cm5lZCBieSA6ZnVuYzpgaW5pdHNjcmAgYW5kIDpmdW5jOmBuZXd3aW5gIGFib3ZlLCBoYXZlCi10aGUgZm9sbG93aW5nIG1ldGhvZHM6Cit0aGUgZm9sbG93aW5nIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXM6CiAKIAogLi4gbWV0aG9kOjogd2luZG93LmFkZGNoKGNoWywgYXR0cl0pCkBAIC04MzEsNiArODQyLDE2IEBACiAgICBldmVudC4KIAogCisuLiBhdHRyaWJ1dGU6OiB3aW5kb3cuZW5jb2RpbmcKKworICAgRW5jb2RpbmcgdXNlZCB0byBlbmNvZGUgbWV0aG9kIGFyZ3VtZW50cyAoVW5pY29kZSBzdHJpbmdzIGFuZCBjaGFyYWN0ZXJzKS4KKyAgIFRoZSBlbmNvZGluZyBhdHRyaWJ1dGUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCB3aW5kb3cgd2hlbiBhIHN1YndpbmRvdworICAgaXMgY3JlYXRlZCwgZm9yIGV4YW1wbGUgd2l0aCA6bWV0aDpgd2luZG93LnN1YndpbmAuIEJ5IGRlZmF1bHQsIHRoZSBsb2NhbGUKKyAgIGVuY29kaW5nIGlzIHVzZWQgKHNlZSA6ZnVuYzpgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nYCkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIG1ldGhvZDo6IHdpbmRvdy5lcmFzZSgpCiAKICAgIENsZWFyIHRoZSB3aW5kb3cuCkBAIC04NTQsMTEgKzg3NSwyMCBAQAogICAgdW50aWwgYSBrZXkgaXMgcHJlc3NlZC4KIAogCisuLiBtZXRob2Q6OiB3aW5kb3cuZ2V0X3djaChbeSwgeF0pCisKKyAgIEdldCBhIHdpZGUgY2hhcmFjdGVyLiBSZXR1cm4gYSBjaGFyYWN0ZXIgZm9yIG1vc3Qga2V5cywgb3IgYW4gaW50ZWdlciBmb3IKKyAgIGZ1bmN0aW9uIGtleXMsIGtleXBhZCBrZXlzLCBhbmQgb3RoZXIgc3BlY2lhbCBrZXlzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBtZXRob2Q6OiB3aW5kb3cuZ2V0a2V5KFt5LCB4XSkKIAogICAgR2V0IGEgY2hhcmFjdGVyLCByZXR1cm5pbmcgYSBzdHJpbmcgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyLCBhcyA6bWV0aDpgZ2V0Y2hgCi0gICBkb2VzLiBGdW5jdGlvbiBrZXlzLCBrZXlwYWQga2V5cyBhbmQgc28gb24gcmV0dXJuIGEgbXVsdGlieXRlIHN0cmluZyBjb250YWluaW5nCi0gICB0aGUga2V5IG5hbWUuICBJbiBuby1kZWxheSBtb2RlLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGlmIHRoZXJlIGlzIG5vIGlucHV0LgorICAgZG9lcy4gRnVuY3Rpb24ga2V5cywga2V5cGFkIGtleXMgYW5kIG90aGVyIHNwZWNpYWwga2V5cyByZXR1cm4gYSBtdWx0aWJ5dGUKKyAgIHN0cmluZyBjb250YWluaW5nIHRoZSBrZXkgbmFtZS4gIEluIG5vLWRlbGF5IG1vZGUsIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYKKyAgIHRoZXJlIGlzIG5vIGlucHV0LgogCiAKIC4uIG1ldGhvZDo6IHdpbmRvdy5nZXRtYXh5eCgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kYXRhdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvZGF0YXR5cGVzLnJzdAppbmRleCA2YjRhNzFhLi5kMDM4MmUwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kYXRhdHlwZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RhdGF0eXBlcy5yc3QKQEAgLTIxLDExICsyMSwxMCBAQAogICAgZGF0ZXRpbWUucnN0CiAgICBjYWxlbmRhci5yc3QKICAgIGNvbGxlY3Rpb25zLnJzdAorICAgY29sbGVjdGlvbnMuYWJjLnJzdAogICAgaGVhcHEucnN0CiAgICBiaXNlY3QucnN0CiAgICBhcnJheS5yc3QKLSAgIHNjaGVkLnJzdAotICAgcXVldWUucnN0CiAgICB3ZWFrcmVmLnJzdAogICAgdHlwZXMucnN0CiAgICBjb3B5LnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0IGIvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0CmluZGV4IDhiZGQ5NjEuLmMxYTI0MTAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QKQEAgLTQwNCwxMiArNDA0LDE5IEBACiAuLiBjbGFzc21ldGhvZDo6IGRhdGUuZnJvbXRpbWVzdGFtcCh0aW1lc3RhbXApCiAKICAgIFJldHVybiB0aGUgbG9jYWwgZGF0ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBQT1NJWCB0aW1lc3RhbXAsIHN1Y2ggYXMgaXMgcmV0dXJuZWQKLSAgIGJ5IDpmdW5jOmB0aW1lLnRpbWVgLiAgVGhpcyBtYXkgcmFpc2UgOmV4YzpgVmFsdWVFcnJvcmAsIGlmIHRoZSB0aW1lc3RhbXAgaXMgb3V0Ci0gICBvZiB0aGUgcmFuZ2Ugb2YgdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0gQyA6YzpmdW5jOmBsb2NhbHRpbWVgIGZ1bmN0aW9uLgorICAgYnkgOmZ1bmM6YHRpbWUudGltZWAuICBUaGlzIG1heSByYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCwgaWYgdGhlIHRpbWVzdGFtcCBpcyBvdXQKKyAgIG9mIHRoZSByYW5nZSBvZiB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBDIDpjOmZ1bmM6YGxvY2FsdGltZWAgZnVuY3Rpb24sCisgICBhbmQgOmV4YzpgT1NFcnJvcmAgb24gOmM6ZnVuYzpgbG9jYWx0aW1lYCBmYWlsdXJlLgogICAgSXQncyBjb21tb24gZm9yIHRoaXMgdG8gYmUgcmVzdHJpY3RlZCB0byB5ZWFycyBmcm9tIDE5NzAgdGhyb3VnaCAyMDM4LiAgTm90ZQogICAgdGhhdCBvbiBub24tUE9TSVggc3lzdGVtcyB0aGF0IGluY2x1ZGUgbGVhcCBzZWNvbmRzIGluIHRoZWlyIG5vdGlvbiBvZiBhCiAgICB0aW1lc3RhbXAsIGxlYXAgc2Vjb25kcyBhcmUgaWdub3JlZCBieSA6bWV0aDpgZnJvbXRpbWVzdGFtcGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBpbnN0ZWFkIG9mIDpleGM6YFZhbHVlRXJyb3JgIGlmIHRoZSB0aW1lc3RhbXAKKyAgICAgIGlzIG91dCBvZiB0aGUgcmFuZ2Ugb2YgdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0gQworICAgICAgOmM6ZnVuYzpgbG9jYWx0aW1lYCBmdW5jdGlvbi4gUmFpc2UgOmV4YzpgT1NFcnJvcmAgaW5zdGVhZCBvZgorICAgICAgOmV4YzpgVmFsdWVFcnJvcmAgb24gOmM6ZnVuYzpgbG9jYWx0aW1lYCBmYWlsdXJlLgorCiAKIC4uIGNsYXNzbWV0aG9kOjogZGF0ZS5mcm9tb3JkaW5hbChvcmRpbmFsKQogCkBAIC03MTMsMjMgKzcyMCw0NCBAQAogICAgZXF1aXZhbGVudCB0bwogICAgYGB0ei5mcm9tdXRjKGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAodGltZXN0YW1wKS5yZXBsYWNlKHR6aW5mbz10eikpYGAuCiAKLSAgIDptZXRoOmBmcm9tdGltZXN0YW1wYCBtYXkgcmFpc2UgOmV4YzpgVmFsdWVFcnJvcmAsIGlmIHRoZSB0aW1lc3RhbXAgaXMgb3V0IG9mCisgICA6bWV0aDpgZnJvbXRpbWVzdGFtcGAgbWF5IHJhaXNlIDpleGM6YE92ZXJmbG93RXJyb3JgLCBpZiB0aGUgdGltZXN0YW1wIGlzIG91dCBvZgogICAgdGhlIHJhbmdlIG9mIHZhbHVlcyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtIEMgOmM6ZnVuYzpgbG9jYWx0aW1lYCBvcgotICAgOmM6ZnVuYzpgZ210aW1lYCBmdW5jdGlvbnMuICBJdCdzIGNvbW1vbiBmb3IgdGhpcyB0byBiZSByZXN0cmljdGVkIHRvIHllYXJzIGluCisgICA6YzpmdW5jOmBnbXRpbWVgIGZ1bmN0aW9ucywgYW5kIDpleGM6YE9TRXJyb3JgIG9uIDpjOmZ1bmM6YGxvY2FsdGltZWAgb3IKKyAgIDpjOmZ1bmM6YGdtdGltZWAgZmFpbHVyZS4KKyAgIEl0J3MgY29tbW9uIGZvciB0aGlzIHRvIGJlIHJlc3RyaWN0ZWQgdG8geWVhcnMgaW4KICAgIDE5NzAgdGhyb3VnaCAyMDM4LiBOb3RlIHRoYXQgb24gbm9uLVBPU0lYIHN5c3RlbXMgdGhhdCBpbmNsdWRlIGxlYXAgc2Vjb25kcyBpbgogICAgdGhlaXIgbm90aW9uIG9mIGEgdGltZXN0YW1wLCBsZWFwIHNlY29uZHMgYXJlIGlnbm9yZWQgYnkgOm1ldGg6YGZyb210aW1lc3RhbXBgLAogICAgYW5kIHRoZW4gaXQncyBwb3NzaWJsZSB0byBoYXZlIHR3byB0aW1lc3RhbXBzIGRpZmZlcmluZyBieSBhIHNlY29uZCB0aGF0IHlpZWxkCiAgICBpZGVudGljYWwgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdHMuIFNlZSBhbHNvIDptZXRoOmB1dGNmcm9tdGltZXN0YW1wYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJhaXNlIDpleGM6YE92ZXJmbG93RXJyb3JgIGluc3RlYWQgb2YgOmV4YzpgVmFsdWVFcnJvcmAgaWYgdGhlIHRpbWVzdGFtcAorICAgICAgaXMgb3V0IG9mIHRoZSByYW5nZSBvZiB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBDCisgICAgICA6YzpmdW5jOmBsb2NhbHRpbWVgIG9yIDpjOmZ1bmM6YGdtdGltZWAgZnVuY3Rpb25zLiBSYWlzZSA6ZXhjOmBPU0Vycm9yYAorICAgICAgaW5zdGVhZCBvZiA6ZXhjOmBWYWx1ZUVycm9yYCBvbiA6YzpmdW5jOmBsb2NhbHRpbWVgIG9yIDpjOmZ1bmM6YGdtdGltZWAKKyAgICAgIGZhaWx1cmUuCisKIAogLi4gY2xhc3NtZXRob2Q6OiBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHRpbWVzdGFtcCkKIAogICAgUmV0dXJuIHRoZSBVVEMgOmNsYXNzOmAuZGF0ZXRpbWVgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIFBPU0lYIHRpbWVzdGFtcCwgd2l0aAotICAgOmF0dHI6YHR6aW5mb2AgYGBOb25lYGAuIFRoaXMgbWF5IHJhaXNlIDpleGM6YFZhbHVlRXJyb3JgLCBpZiB0aGUgdGltZXN0YW1wIGlzCi0gICBvdXQgb2YgdGhlIHJhbmdlIG9mIHZhbHVlcyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtIEMgOmM6ZnVuYzpgZ210aW1lYCBmdW5jdGlvbi4KKyAgIDphdHRyOmB0emluZm9gIGBgTm9uZWBgLiBUaGlzIG1heSByYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCwgaWYgdGhlIHRpbWVzdGFtcCBpcworICAgb3V0IG9mIHRoZSByYW5nZSBvZiB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBDIDpjOmZ1bmM6YGdtdGltZWAgZnVuY3Rpb24sCisgICBhbmQgOmV4YzpgT1NFcnJvcmAgb24gOmM6ZnVuYzpgZ210aW1lYCBmYWlsdXJlLgogICAgSXQncyBjb21tb24gZm9yIHRoaXMgdG8gYmUgcmVzdHJpY3RlZCB0byB5ZWFycyBpbiAxOTcwIHRocm91Z2ggMjAzOC4gU2VlIGFsc28KICAgIDptZXRoOmBmcm9tdGltZXN0YW1wYC4KIAorICAgT24gdGhlIFBPU0lYIGNvbXBsaWFudCBwbGF0Zm9ybXMsIGBgdXRjZnJvbXRpbWVzdGFtcCh0aW1lc3RhbXApYGAKKyAgIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGZvbGxvd2luZyBleHByZXNzaW9uOjoKKworICAgICBkYXRldGltZSgxOTcwLCAxLCAxKSArIHRpbWVkZWx0YShzZWNvbmRzPXRpbWVzdGFtcCkKKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJhaXNlIDpleGM6YE92ZXJmbG93RXJyb3JgIGluc3RlYWQgb2YgOmV4YzpgVmFsdWVFcnJvcmAgaWYgdGhlIHRpbWVzdGFtcAorICAgICAgaXMgb3V0IG9mIHRoZSByYW5nZSBvZiB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBDCisgICAgICA6YzpmdW5jOmBnbXRpbWVgIGZ1bmN0aW9uLiBSYWlzZSA6ZXhjOmBPU0Vycm9yYCBpbnN0ZWFkIG9mCisgICAgICA6ZXhjOmBWYWx1ZUVycm9yYCBvbiA6YzpmdW5jOmBnbXRpbWVgIGZhaWx1cmUuCisKIAogLi4gY2xhc3NtZXRob2Q6OiBkYXRldGltZS5mcm9tb3JkaW5hbChvcmRpbmFsKQogCkBAIC04NzMsMTMgKzkwMSwyMCBAQAogICAgKmRhdGV0aW1lMSogaXMgY29uc2lkZXJlZCBsZXNzIHRoYW4gKmRhdGV0aW1lMiogd2hlbiAqZGF0ZXRpbWUxKiBwcmVjZWRlcwogICAgKmRhdGV0aW1lMiogaW4gdGltZS4KIAotICAgSWYgb25lIGNvbXBhcmFuZCBpcyBuYWl2ZSBhbmQgdGhlIG90aGVyIGlzIGF3YXJlLCA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KKyAgIElmIG9uZSBjb21wYXJhbmQgaXMgbmFpdmUgYW5kIHRoZSBvdGhlciBpcyBhd2FyZSwgOmV4YzpgVHlwZUVycm9yYAorICAgaXMgcmFpc2VkIGlmIGFuIG9yZGVyIGNvbXBhcmlzb24gaXMgYXR0ZW1wdGVkLiAgRm9yIGVxdWFsaXR5CisgICBjb21wYXJpc29ucywgbmFpdmUgaW5zdGFuY2VzIGFyZSBuZXZlciBlcXVhbCB0byBhd2FyZSBpbnN0YW5jZXMuCisKICAgIElmIGJvdGggY29tcGFyYW5kcyBhcmUgYXdhcmUsIGFuZCBoYXZlIHRoZSBzYW1lIDphdHRyOmB0emluZm9gIGF0dHJpYnV0ZSwgdGhlCiAgICBjb21tb24gOmF0dHI6YHR6aW5mb2AgYXR0cmlidXRlIGlzIGlnbm9yZWQgYW5kIHRoZSBiYXNlIGRhdGV0aW1lcyBhcmUKICAgIGNvbXBhcmVkLiAgSWYgYm90aCBjb21wYXJhbmRzIGFyZSBhd2FyZSBhbmQgaGF2ZSBkaWZmZXJlbnQgOmF0dHI6YHR6aW5mb2AKICAgIGF0dHJpYnV0ZXMsIHRoZSBjb21wYXJhbmRzIGFyZSBmaXJzdCBhZGp1c3RlZCBieSBzdWJ0cmFjdGluZyB0aGVpciBVVEMKICAgIG9mZnNldHMgKG9idGFpbmVkIGZyb20gYGBzZWxmLnV0Y29mZnNldCgpYGApLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgRXF1YWxpdHkgY29tcGFyaXNvbnMgYmV0d2VlbiBuYWl2ZSBhbmQgYXdhcmUgOmNsYXNzOmBkYXRldGltZWAKKyAgICAgIGluc3RhbmNlcyBkb24ndCByYWlzZSA6ZXhjOmBUeXBlRXJyb3JgLgorCiAgICAuLiBub3RlOjoKIAogICAgICAgSW4gb3JkZXIgdG8gc3RvcCBjb21wYXJpc29uIGZyb20gZmFsbGluZyBiYWNrIHRvIHRoZSBkZWZhdWx0IHNjaGVtZSBvZiBjb21wYXJpbmcKQEAgLTkyMiwxNyArOTU3LDIyIEBACiAgICBkYXRldGltZSB3aXRoIG5vIGNvbnZlcnNpb24gb2YgZGF0ZSBhbmQgdGltZSBkYXRhLgogCiAKLS4uIG1ldGhvZDo6IGRhdGV0aW1lLmFzdGltZXpvbmUodHopCisuLiBtZXRob2Q6OiBkYXRldGltZS5hc3RpbWV6b25lKHR6PU5vbmUpCiAKLSAgIFJldHVybiBhIDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3Qgd2l0aCBuZXcgOmF0dHI6YHR6aW5mb2AgYXR0cmlidXRlICp0eiosCisgICBSZXR1cm4gYSA6Y2xhc3M6YGRhdGV0aW1lYCBvYmplY3Qgd2l0aCBuZXcgOmF0dHI6YHR6aW5mb2AgYXR0cmlidXRlICp0eiosCiAgICBhZGp1c3RpbmcgdGhlIGRhdGUgYW5kIHRpbWUgZGF0YSBzbyB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lIFVUQyB0aW1lIGFzCiAgICAqc2VsZiosIGJ1dCBpbiAqdHoqJ3MgbG9jYWwgdGltZS4KIAotICAgKnR6KiBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOmNsYXNzOmB0emluZm9gIHN1YmNsYXNzLCBhbmQgaXRzCisgICBJZiBwcm92aWRlZCwgKnR6KiBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOmNsYXNzOmB0emluZm9gIHN1YmNsYXNzLCBhbmQgaXRzCiAgICA6bWV0aDpgdXRjb2Zmc2V0YCBhbmQgOm1ldGg6YGRzdGAgbWV0aG9kcyBtdXN0IG5vdCByZXR1cm4gYGBOb25lYGAuICAqc2VsZiogbXVzdAogICAgYmUgYXdhcmUgKGBgc2VsZi50emluZm9gYCBtdXN0IG5vdCBiZSBgYE5vbmVgYCwgYW5kIGBgc2VsZi51dGNvZmZzZXQoKWBgIG11c3QKICAgIG5vdCByZXR1cm4gYGBOb25lYGApLgogCisgICBJZiBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMgKG9yIHdpdGggYGB0ej1Ob25lYGApIHRoZSBzeXN0ZW0gbG9jYWwKKyAgIHRpbWV6b25lIGlzIGFzc3VtZWQuICBUaGUgYGB0emluZm9gYCBhdHRyaWJ1dGUgb2YgdGhlIGNvbnZlcnRlZAorICAgZGF0ZXRpbWUgaW5zdGFuY2Ugd2lsbCBiZSBzZXQgdG8gYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmB0aW1lem9uZWAKKyAgIHdpdGggdGhlIHpvbmUgbmFtZSBhbmQgb2Zmc2V0IG9idGFpbmVkIGZyb20gdGhlIE9TLgorCiAgICBJZiBgYHNlbGYudHppbmZvYGAgaXMgKnR6KiwgYGBzZWxmLmFzdGltZXpvbmUodHopYGAgaXMgZXF1YWwgdG8gKnNlbGYqOiAgbm8KICAgIGFkanVzdG1lbnQgb2YgZGF0ZSBvciB0aW1lIGRhdGEgaXMgcGVyZm9ybWVkLiBFbHNlIHRoZSByZXN1bHQgaXMgbG9jYWwKICAgIHRpbWUgaW4gdGltZSB6b25lICp0eiosIHJlcHJlc2VudGluZyB0aGUgc2FtZSBVVEMgdGltZSBhcyAqc2VsZio6ICBhZnRlcgpAQCAtOTU5LDYgKzk5OSw5IEBACiAgICAgICAgICAgIyBDb252ZXJ0IGZyb20gVVRDIHRvIHR6J3MgbG9jYWwgdGltZS4KICAgICAgICAgICByZXR1cm4gdHouZnJvbXV0Yyh1dGMpCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdHoqIG5vdyBjYW4gYmUgb21pdHRlZC4KKwogCiAuLiBtZXRob2Q6OiBkYXRldGltZS51dGNvZmZzZXQoKQogCkBAIC0xMDE1LDYgKzEwNTgsMzkgQEAKICAgIFJldHVybiB0aGUgcHJvbGVwdGljIEdyZWdvcmlhbiBvcmRpbmFsIG9mIHRoZSBkYXRlLiAgVGhlIHNhbWUgYXMKICAgIGBgc2VsZi5kYXRlKCkudG9vcmRpbmFsKClgYC4KIAorLi4gbWV0aG9kOjogZGF0ZXRpbWUudGltZXN0YW1wKCkKKworICAgUmV0dXJuIFBPU0lYIHRpbWVzdGFtcCBjb3JyZXNwb25kaW5nIHRvIHRoZSA6Y2xhc3M6YGRhdGV0aW1lYAorICAgaW5zdGFuY2UuICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgOmNsYXNzOmBmbG9hdGAgc2ltaWxhciB0byB0aGF0CisgICByZXR1cm5lZCBieSA6ZnVuYzpgdGltZS50aW1lYC4KKworICAgTmFpdmUgOmNsYXNzOmBkYXRldGltZWAgaW5zdGFuY2VzIGFyZSBhc3N1bWVkIHRvIHJlcHJlc2VudCBsb2NhbAorICAgdGltZSBhbmQgdGhpcyBtZXRob2QgcmVsaWVzIG9uIHRoZSBwbGF0Zm9ybSBDIDpjOmZ1bmM6YG1rdGltZWAKKyAgIGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIGNvbnZlcnNpb24uICBTaW5jZSA6Y2xhc3M6YGRhdGV0aW1lYAorICAgc3VwcG9ydHMgd2lkZXIgcmFuZ2Ugb2YgdmFsdWVzIHRoYW4gOmM6ZnVuYzpgbWt0aW1lYCBvbiBtYW55CisgICBwbGF0Zm9ybXMsIHRoaXMgbWV0aG9kIG1heSByYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBmb3IgdGltZXMgZmFyCisgICBpbiB0aGUgcGFzdCBvciBmYXIgaW4gdGhlIGZ1dHVyZS4KKworICAgRm9yIGF3YXJlIDpjbGFzczpgZGF0ZXRpbWVgIGluc3RhbmNlcywgdGhlIHJldHVybiB2YWx1ZSBpcyBjb21wdXRlZAorICAgYXM6OgorCisgICAgICAoZHQgLSBkYXRldGltZSgxOTcwLCAxLCAxLCB0emluZm89dGltZXpvbmUudXRjKSkudG90YWxfc2Vjb25kcygpCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBub3RlOjoKKworICAgICAgVGhlcmUgaXMgbm8gbWV0aG9kIHRvIG9idGFpbiB0aGUgUE9TSVggdGltZXN0YW1wIGRpcmVjdGx5IGZyb20gYQorICAgICAgbmFpdmUgOmNsYXNzOmBkYXRldGltZWAgaW5zdGFuY2UgcmVwcmVzZW50aW5nIFVUQyB0aW1lLiAgSWYgeW91cgorICAgICAgYXBwbGljYXRpb24gdXNlcyB0aGlzIGNvbnZlbnRpb24gYW5kIHlvdXIgc3lzdGVtIHRpbWV6b25lIGlzIG5vdAorICAgICAgc2V0IHRvIFVUQywgeW91IGNhbiBvYnRhaW4gdGhlIFBPU0lYIHRpbWVzdGFtcCBieSBzdXBwbHlpbmcKKyAgICAgIGBgdHppbmZvPXRpbWV6b25lLnV0Y2BgOjoKKworICAgICAgICAgdGltZXN0YW1wID0gZHQucmVwbGFjZSh0emluZm89dGltZXpvbmUudXRjKS50aW1lc3RhbXAoKQorCisgICAgICBvciBieSBjYWxjdWxhdGluZyB0aGUgdGltZXN0YW1wIGRpcmVjdGx5OjoKKworICAgICAgICAgdGltZXN0YW1wID0gKGR0IC0gZGF0ZXRpbWUoMTk3MCwgMSwgMSkpIC8gdGltZWRlbHRhKHNlY29uZHM9MSkKIAogLi4gbWV0aG9kOjogZGF0ZXRpbWUud2Vla2RheSgpCiAKQEAgLTEyNTQsNyArMTMzMCwxMCBAQAogCiAqIGNvbXBhcmlzb24gb2YgOmNsYXNzOmAudGltZWAgdG8gOmNsYXNzOmAudGltZWAsIHdoZXJlICphKiBpcyBjb25zaWRlcmVkIGxlc3MKICAgdGhhbiAqYiogd2hlbiAqYSogcHJlY2VkZXMgKmIqIGluIHRpbWUuICBJZiBvbmUgY29tcGFyYW5kIGlzIG5haXZlIGFuZCB0aGUgb3RoZXIKLSAgaXMgYXdhcmUsIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLiAgSWYgYm90aCBjb21wYXJhbmRzIGFyZSBhd2FyZSwgYW5kIGhhdmUKKyAgaXMgYXdhcmUsIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkIGlmIGFuIG9yZGVyIGNvbXBhcmlzb24gaXMgYXR0ZW1wdGVkLiBGb3IgZXF1YWxpdHkKKyAgY29tcGFyaXNvbnMsIG5haXZlIGluc3RhbmNlcyBhcmUgbmV2ZXIgZXF1YWwgdG8gYXdhcmUgaW5zdGFuY2VzLgorCisgIElmIGJvdGggY29tcGFyYW5kcyBhcmUgYXdhcmUsIGFuZCBoYXZlCiAgIHRoZSBzYW1lIDphdHRyOmB0emluZm9gIGF0dHJpYnV0ZSwgdGhlIGNvbW1vbiA6YXR0cjpgdHppbmZvYCBhdHRyaWJ1dGUgaXMKICAgaWdub3JlZCBhbmQgdGhlIGJhc2UgdGltZXMgYXJlIGNvbXBhcmVkLiAgSWYgYm90aCBjb21wYXJhbmRzIGFyZSBhd2FyZSBhbmQKICAgaGF2ZSBkaWZmZXJlbnQgOmF0dHI6YHR6aW5mb2AgYXR0cmlidXRlcywgdGhlIGNvbXBhcmFuZHMgYXJlIGZpcnN0IGFkanVzdGVkIGJ5CkBAIC0xMjY0LDYgKzEzNDMsMTAgQEAKICAgZGlmZmVyZW50IHR5cGUsIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkIHVubGVzcyB0aGUgY29tcGFyaXNvbiBpcyBgYD09YGAgb3IKICAgYGAhPWBgLiAgVGhlIGxhdHRlciBjYXNlcyByZXR1cm4gOmNvbnN0OmBGYWxzZWAgb3IgOmNvbnN0OmBUcnVlYCwgcmVzcGVjdGl2ZWx5LgogCisgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgIEVxdWFsaXR5IGNvbXBhcmlzb25zIGJldHdlZW4gbmFpdmUgYW5kIGF3YXJlIDpjbGFzczpgdGltZWAgaW5zdGFuY2VzCisgICAgIGRvbid0IHJhaXNlIDpleGM6YFR5cGVFcnJvcmAuCisKICogaGFzaCwgdXNlIGFzIGRpY3Qga2V5CiAKICogZWZmaWNpZW50IHBpY2tsaW5nCkBAIC0xNTg3LDExICsxNjcwLDEyIEBACiA6Y2xhc3M6YHRpbWV6b25lYCBPYmplY3RzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1BIDpjbGFzczpgdGltZXpvbmVgIG9iamVjdCByZXByZXNlbnRzIGEgdGltZXpvbmUgdGhhdCBpcyBkZWZpbmVkIGJ5IGEKLWZpeGVkIG9mZnNldCBmcm9tIFVUQy4gIE5vdGUgdGhhdCBvYmplY3RzIG9mIHRoaXMgY2xhc3MgY2Fubm90IGJlIHVzZWQKLXRvIHJlcHJlc2VudCB0aW1lem9uZSBpbmZvcm1hdGlvbiBpbiB0aGUgbG9jYXRpb25zIHdoZXJlIGRpZmZlcmVudAotb2Zmc2V0cyBhcmUgdXNlZCBpbiBkaWZmZXJlbnQgZGF5cyBvZiB0aGUgeWVhciBvciB3aGVyZSBoaXN0b3JpY2FsCi1jaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHRvIGNpdmlsIHRpbWUuCitUaGUgOmNsYXNzOmB0aW1lem9uZWAgY2xhc3MgaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YHR6aW5mb2AsIGVhY2gKK2luc3RhbmNlIG9mIHdoaWNoIHJlcHJlc2VudHMgYSB0aW1lem9uZSBkZWZpbmVkIGJ5IGEgZml4ZWQgb2Zmc2V0IGZyb20KK1VUQy4gIE5vdGUgdGhhdCBvYmplY3RzIG9mIHRoaXMgY2xhc3MgY2Fubm90IGJlIHVzZWQgdG8gcmVwcmVzZW50Cit0aW1lem9uZSBpbmZvcm1hdGlvbiBpbiB0aGUgbG9jYXRpb25zIHdoZXJlIGRpZmZlcmVudCBvZmZzZXRzIGFyZSB1c2VkCitpbiBkaWZmZXJlbnQgZGF5cyBvZiB0aGUgeWVhciBvciB3aGVyZSBoaXN0b3JpY2FsIGNoYW5nZXMgaGF2ZSBiZWVuCittYWRlIHRvIGNpdmlsIHRpbWUuCiAKIAogLi4gY2xhc3M6OiB0aW1lem9uZShvZmZzZXRbLCBuYW1lXSkKQEAgLTE3NjAsOCArMTg0NCw3IEBACiB8ICAgICAgICAgICB8IGRlY2ltYWwgbnVtYmVyIFswMCw5OV0uICAgICAgICB8ICAgICAgIHwKICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwogfCBgYCVZYGAgICAgfCBZZWFyIHdpdGggY2VudHVyeSBhcyBhIGRlY2ltYWwgfCBcKDUpICB8Ci18ICAgICAgICAgICB8IG51bWJlciBbMDAwMSw5OTk5XSAoc3RycHRpbWUpLCB8ICAgICAgIHwKLXwgICAgICAgICAgIHwgWzEwMDAsOTk5OV0gKHN0cmZ0aW1lKS4gICAgICAgIHwgICAgICAgfAorfCAgICAgICAgICAgfCBudW1iZXIgWzAwMDEsOTk5OV0uICAgICAgICAgICAgfCAgICAgICB8CiArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKIHwgYGAlemBgICAgIHwgVVRDIG9mZnNldCBpbiB0aGUgZm9ybSArSEhNTSAgIHwgXCg2KSAgfAogfCAgICAgICAgICAgfCBvciAtSEhNTSAoZW1wdHkgc3RyaW5nIGlmIHRoZSAgfCAgICAgICB8CkBAIC0xNzk1LDEwICsxODc4LDcgQEAKICAgIGNhbGN1bGF0aW9ucyB3aGVuIHRoZSBkYXkgb2YgdGhlIHdlZWsgYW5kIHRoZSB5ZWFyIGFyZSBzcGVjaWZpZWQuCiAKICg1KQotICAgRm9yIHRlY2huaWNhbCByZWFzb25zLCA6bWV0aDpgc3RyZnRpbWVgIG1ldGhvZCBkb2VzIG5vdCBzdXBwb3J0Ci0gICBkYXRlcyBiZWZvcmUgeWVhciAxMDAwOiBgYHQuc3RyZnRpbWUoZm9ybWF0KWBgIHdpbGwgcmFpc2UgYQotICAgOmV4YzpgVmFsdWVFcnJvcmAgd2hlbiBgYHQueWVhciA8IDEwMDBgYCBldmVuIGlmIGBgZm9ybWF0YGAgZG9lcwotICAgbm90IGNvbnRhaW4gYGAlWWBgIGRpcmVjdGl2ZS4gIFRoZSA6bWV0aDpgc3RycHRpbWVgIG1ldGhvZCBjYW4KKyAgIFRoZSA6bWV0aDpgc3RycHRpbWVgIG1ldGhvZCBjYW4KICAgIHBhcnNlIHllYXJzIGluIHRoZSBmdWxsIFsxLCA5OTk5XSByYW5nZSwgYnV0IHllYXJzIDwgMTAwMCBtdXN0IGJlCiAgICB6ZXJvLWZpbGxlZCB0byA0LWRpZ2l0IHdpZHRoLgogCkBAIC0xODA2LDYgKzE4ODYsMTAgQEAKICAgICAgIEluIHByZXZpb3VzIHZlcnNpb25zLCA6bWV0aDpgc3RyZnRpbWVgIG1ldGhvZCB3YXMgcmVzdHJpY3RlZCB0bwogICAgICAgeWVhcnMgPj0gMTkwMC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEluIHZlcnNpb24gMy4yLCA6bWV0aDpgc3RyZnRpbWVgIG1ldGhvZCB3YXMgcmVzdHJpY3RlZCB0bworICAgICAgeWVhcnMgPj0gMTAwMC4KKwogKDYpCiAgICBGb3IgZXhhbXBsZSwgaWYgOm1ldGg6YHV0Y29mZnNldGAgcmV0dXJucyBgYHRpbWVkZWx0YShob3Vycz0tMywgbWludXRlcz0tMzApYGAsCiAgICBgYCV6YGAgaXMgcmVwbGFjZWQgd2l0aCB0aGUgc3RyaW5nIGBgJy0wMzMwJ2BgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGVidWcucnN0IGIvRG9jL2xpYnJhcnkvZGVidWcucnN0CmluZGV4IGIyZWU0ZmEuLmM2OWZiMWMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RlYnVnLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kZWJ1Zy5yc3QKQEAgLTEwLDcgKzEwLDggQEAKIC4uIHRvY3RyZWU6OgogCiAgICBiZGIucnN0CisgICBmYXVsdGhhbmRsZXIucnN0CiAgICBwZGIucnN0CiAgICBwcm9maWxlLnJzdAogICAgdGltZWl0LnJzdAotICAgdHJhY2UucnN0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorICAgdHJhY2UucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdCBiL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CmluZGV4IGQ5ODllM2YuLjkwM2FmNmMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CkBAIC05LDYgKzksNyBAQAogLi4gbW9kdWxlYXV0aG9yOjogUmF5bW9uZCBIZXR0aW5nZXIgPHB5dGhvbiBhdCByY24uY29tPgogLi4gbW9kdWxlYXV0aG9yOjogQWFoeiA8YWFoeiBhdCBwb2JveC5jb20+CiAuLiBtb2R1bGVhdXRob3I6OiBUaW0gUGV0ZXJzIDx0aW0ub25lIGF0IGNvbWNhc3QubmV0PgorLi4gbW9kdWxlYXV0aG9yOjogU3RlZmFuIEtyYWggPHNrcmFoIGF0IGJ5dGVyZWVmLm9yZz4KIC4uIHNlY3Rpb25hdXRob3I6OiBSYXltb25kIEQuIEhldHRpbmdlciA8cHl0aG9uIGF0IHJjbi5jb20+CiAKIC4uIGltcG9ydCBtb2R1bGVzIGZvciB0ZXN0aW5nIGlubGluZSBkb2N0ZXN0cyB3aXRoIHRoZSBTcGhpbnggZG9jdGVzdCBidWlsZGVyCkBAIC0yMCw4ICsyMSw5IEBACiAgICAjIG1ha2Ugc3VyZSBlYWNoIGdyb3VwIGdldHMgYSBmcmVzaCBjb250ZXh0CiAgICBzZXRjb250ZXh0KENvbnRleHQoKSkKIAotVGhlIDptb2Q6YGRlY2ltYWxgIG1vZHVsZSBwcm92aWRlcyBzdXBwb3J0IGZvciBkZWNpbWFsIGZsb2F0aW5nIHBvaW50Ci1hcml0aG1ldGljLiAgSXQgb2ZmZXJzIHNldmVyYWwgYWR2YW50YWdlcyBvdmVyIHRoZSA6Y2xhc3M6YGZsb2F0YCBkYXRhdHlwZToKK1RoZSA6bW9kOmBkZWNpbWFsYCBtb2R1bGUgcHJvdmlkZXMgc3VwcG9ydCBmb3IgZmFzdCBjb3JyZWN0bHktcm91bmRlZAorZGVjaW1hbCBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljLiBJdCBvZmZlcnMgc2V2ZXJhbCBhZHZhbnRhZ2VzIG92ZXIgdGhlCis6Y2xhc3M6YGZsb2F0YCBkYXRhdHlwZToKIAogKiBEZWNpbWFsICJpcyBiYXNlZCBvbiBhIGZsb2F0aW5nLXBvaW50IG1vZGVsIHdoaWNoIHdhcyBkZXNpZ25lZCB3aXRoIHBlb3BsZQogICBpbiBtaW5kLCBhbmQgbmVjZXNzYXJpbHkgaGFzIGEgcGFyYW1vdW50IGd1aWRpbmcgcHJpbmNpcGxlIC0tIGNvbXB1dGVycyBtdXN0CkBAIC05Miw3ICs5NCw3IEBACiBjb25zaWRlcmVkIGFzIGluZm9ybWF0aW9uYWwsIG9yIHRyZWF0ZWQgYXMgZXhjZXB0aW9ucy4gVGhlIHNpZ25hbHMgaW4gdGhlCiBkZWNpbWFsIG1vZHVsZSBhcmU6IDpjb25zdDpgQ2xhbXBlZGAsIDpjb25zdDpgSW52YWxpZE9wZXJhdGlvbmAsCiA6Y29uc3Q6YERpdmlzaW9uQnlaZXJvYCwgOmNvbnN0OmBJbmV4YWN0YCwgOmNvbnN0OmBSb3VuZGVkYCwgOmNvbnN0OmBTdWJub3JtYWxgLAotOmNvbnN0OmBPdmVyZmxvd2AsIGFuZCA6Y29uc3Q6YFVuZGVyZmxvd2AuCis6Y29uc3Q6YE92ZXJmbG93YCwgOmNvbnN0OmBVbmRlcmZsb3dgIGFuZCA6Y29uc3Q6YEZsb2F0T3BlcmF0aW9uYC4KIAogRm9yIGVhY2ggc2lnbmFsIHRoZXJlIGlzIGEgZmxhZyBhbmQgYSB0cmFwIGVuYWJsZXIuICBXaGVuIGEgc2lnbmFsIGlzCiBlbmNvdW50ZXJlZCwgaXRzIGZsYWcgaXMgc2V0IHRvIG9uZSwgdGhlbiwgaWYgdGhlIHRyYXAgZW5hYmxlciBpcwpAQCAtMTIyLDcgKzEyNCw3IEBACiAKICAgID4+PiBmcm9tIGRlY2ltYWwgaW1wb3J0ICoKICAgID4+PiBnZXRjb250ZXh0KCkKLSAgIENvbnRleHQocHJlYz0yOCwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCBFbWluPS05OTk5OTk5OTksIEVtYXg9OTk5OTk5OTk5LAorICAgQ29udGV4dChwcmVjPTI4LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sIEVtaW49LTk5OTk5OSwgRW1heD05OTk5OTksCiAgICAgICAgICAgIGNhcGl0YWxzPTEsIGNsYW1wPTAsIGZsYWdzPVtdLCB0cmFwcz1bT3ZlcmZsb3csIERpdmlzaW9uQnlaZXJvLAogICAgICAgICAgICBJbnZhbGlkT3BlcmF0aW9uXSkKIApAQCAtMTMyLDcgKzEzNCw3IEBACiBDb25zdHJ1Y3Rpb24gZnJvbSBhbiBpbnRlZ2VyIG9yIGEgZmxvYXQgcGVyZm9ybXMgYW4gZXhhY3QgY29udmVyc2lvbiBvZiB0aGUKIHZhbHVlIG9mIHRoYXQgaW50ZWdlciBvciBmbG9hdC4gIERlY2ltYWwgbnVtYmVycyBpbmNsdWRlIHNwZWNpYWwgdmFsdWVzIHN1Y2ggYXMKIDpjb25zdDpgTmFOYCB3aGljaCBzdGFuZHMgZm9yICJOb3QgYSBudW1iZXIiLCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUKLTpjb25zdDpgSW5maW5pdHlgLCBhbmQgOmNvbnN0OmAtMGAuCis6Y29uc3Q6YEluZmluaXR5YCwgYW5kIDpjb25zdDpgLTBgOjoKIAogICAgPj4+IGdldGNvbnRleHQoKS5wcmVjID0gMjgKICAgID4+PiBEZWNpbWFsKDEwKQpAQCAtMTUyLDYgKzE1NCwyNSBAQAogICAgPj4+IERlY2ltYWwoJy1JbmZpbml0eScpCiAgICBEZWNpbWFsKCctSW5maW5pdHknKQogCitJZiB0aGUgOmV4YzpgRmxvYXRPcGVyYXRpb25gIHNpZ25hbCBpcyB0cmFwcGVkLCBhY2NpZGVudGFsIG1peGluZyBvZgorZGVjaW1hbHMgYW5kIGZsb2F0cyBpbiBjb25zdHJ1Y3RvcnMgb3Igb3JkZXJpbmcgY29tcGFyaXNvbnMgcmFpc2VzCithbiBleGNlcHRpb246OgorCisgICA+Pj4gYyA9IGdldGNvbnRleHQoKQorICAgPj4+IGMudHJhcHNbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorICAgPj4+IERlY2ltYWwoMy4xNCkKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICBkZWNpbWFsLkZsb2F0T3BlcmF0aW9uOiBbPGNsYXNzICdkZWNpbWFsLkZsb2F0T3BlcmF0aW9uJz5dCisgICA+Pj4gRGVjaW1hbCgnMy41JykgPCAzLjcKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgIGRlY2ltYWwuRmxvYXRPcGVyYXRpb246IFs8Y2xhc3MgJ2RlY2ltYWwuRmxvYXRPcGVyYXRpb24nPl0KKyAgID4+PiBEZWNpbWFsKCczLjUnKSA9PSAzLjUKKyAgIFRydWUKKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIFRoZSBzaWduaWZpY2FuY2Ugb2YgYSBuZXcgRGVjaW1hbCBpcyBkZXRlcm1pbmVkIHNvbGVseSBieSB0aGUgbnVtYmVyIG9mIGRpZ2l0cwogaW5wdXQuICBDb250ZXh0IHByZWNpc2lvbiBhbmQgcm91bmRpbmcgb25seSBjb21lIGludG8gcGxheSBkdXJpbmcgYXJpdGhtZXRpYwogb3BlcmF0aW9ucy4KQEAgLTE2OSw2ICsxOTAsMTYgQEAKICAgID4+PiBEZWNpbWFsKCczLjE0MTU5MjY1MzUnKSArIERlY2ltYWwoJzIuNzE4MjgxODI4NScpCiAgICBEZWNpbWFsKCc1Ljg1OTg4JykKIAorSWYgdGhlIGludGVybmFsIGxpbWl0cyBvZiB0aGUgQyB2ZXJzaW9uIGFyZSBleGNlZWRlZCwgY29uc3RydWN0aW5nCithIGRlY2ltYWwgcmFpc2VzIDpjbGFzczpgSW52YWxpZE9wZXJhdGlvbmA6OgorCisgICA+Pj4gRGVjaW1hbCgiMWU5OTk5OTk5OTk5OTk5OTk5OTk5IikKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgIGRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbjogWzxjbGFzcyAnZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uJz5dCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisKIERlY2ltYWxzIGludGVyYWN0IHdlbGwgd2l0aCBtdWNoIG9mIHRoZSByZXN0IG9mIFB5dGhvbi4gIEhlcmUgaXMgYSBzbWFsbCBkZWNpbWFsCiBmbG9hdGluZyBwb2ludCBmbHlpbmcgY2lyY3VzOgogCkBAIC0yNDQsNyArMjc1LDcgQEAKICAgIERlY2ltYWwoJzAuMTQyODU3MTQyODU3MTQyODU3MTQyODU3MTQyODU3MTQyODU3MTQyODU3MTQyODU3MTQyODU3MTQyODU3JykKIAogICAgPj4+IEV4dGVuZGVkQ29udGV4dAotICAgQ29udGV4dChwcmVjPTksIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwgRW1pbj0tOTk5OTk5OTk5LCBFbWF4PTk5OTk5OTk5OSwKKyAgIENvbnRleHQocHJlYz05LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sIEVtaW49LTk5OTk5OSwgRW1heD05OTk5OTksCiAgICAgICAgICAgIGNhcGl0YWxzPTEsIGNsYW1wPTAsIGZsYWdzPVtdLCB0cmFwcz1bXSkKICAgID4+PiBzZXRjb250ZXh0KEV4dGVuZGVkQ29udGV4dCkKICAgID4+PiBEZWNpbWFsKDEpIC8gRGVjaW1hbCg3KQpAQCAtMjY5LDcgKzMwMCw3IEBACiAgICA+Pj4gRGVjaW1hbCgzNTUpIC8gRGVjaW1hbCgxMTMpCiAgICBEZWNpbWFsKCczLjE0MTU5MjkyJykKICAgID4+PiBnZXRjb250ZXh0KCkKLSAgIENvbnRleHQocHJlYz05LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sIEVtaW49LTk5OTk5OTk5OSwgRW1heD05OTk5OTk5OTksCisgICBDb250ZXh0KHByZWM9OSwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCBFbWluPS05OTk5OTksIEVtYXg9OTk5OTk5LAogICAgICAgICAgICBjYXBpdGFscz0xLCBjbGFtcD0wLCBmbGFncz1bSW5leGFjdCwgUm91bmRlZF0sIHRyYXBzPVtdKQogCiBUaGUgKmZsYWdzKiBlbnRyeSBzaG93cyB0aGF0IHRoZSByYXRpb25hbCBhcHByb3hpbWF0aW9uIHRvIDpjb25zdDpgUGlgIHdhcwpAQCAtMzU4LDYgKzM4OSwxMCBAQAogICAgICAgVGhlIGFyZ3VtZW50IHRvIHRoZSBjb25zdHJ1Y3RvciBpcyBub3cgcGVybWl0dGVkIHRvIGJlIGEgOmNsYXNzOmBmbG9hdGAKICAgICAgIGluc3RhbmNlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmNsYXNzOmBmbG9hdGAgYXJndW1lbnRzIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgOmV4YzpgRmxvYXRPcGVyYXRpb25gCisgICAgICB0cmFwIGlzIHNldC4gQnkgZGVmYXVsdCB0aGUgdHJhcCBpcyBvZmYuCisKICAgIERlY2ltYWwgZmxvYXRpbmcgcG9pbnQgb2JqZWN0cyBzaGFyZSBtYW55IHByb3BlcnRpZXMgd2l0aCB0aGUgb3RoZXIgYnVpbHQtaW4KICAgIG51bWVyaWMgdHlwZXMgc3VjaCBhcyA6Y2xhc3M6YGZsb2F0YCBhbmQgOmNsYXNzOmBpbnRgLiAgQWxsIG9mIHRoZSB1c3VhbCBtYXRoCiAgICBvcGVyYXRpb25zIGFuZCBzcGVjaWFsIG1ldGhvZHMgYXBwbHkuICBMaWtld2lzZSwgZGVjaW1hbCBvYmplY3RzIGNhbiBiZQpAQCAtNDI0LDcgKzQ1OSw3IEBACiAgICAgICBhIDpjbGFzczpgRGVjaW1hbGAgaW5zdGFuY2UgaXMgYWx3YXlzIGNhbm9uaWNhbCwgc28gdGhpcyBvcGVyYXRpb24gcmV0dXJucwogICAgICAgaXRzIGFyZ3VtZW50IHVuY2hhbmdlZC4KIAotICAgLi4gbWV0aG9kOjogY29tcGFyZShvdGhlclssIGNvbnRleHRdKQorICAgLi4gbWV0aG9kOjogY29tcGFyZShvdGhlciwgY29udGV4dD1Ob25lKQogCiAgICAgICBDb21wYXJlIHRoZSB2YWx1ZXMgb2YgdHdvIERlY2ltYWwgaW5zdGFuY2VzLiAgOm1ldGg6YGNvbXBhcmVgIHJldHVybnMgYQogICAgICAgRGVjaW1hbCBpbnN0YW5jZSwgYW5kIGlmIGVpdGhlciBvcGVyYW5kIGlzIGEgTmFOIHRoZW4gdGhlIHJlc3VsdCBpcyBhCkBAIC00MzUsMTMgKzQ3MCwxMyBAQAogICAgICAgICAgYSA9PSBiICAgICAgICAgICA9PT4gRGVjaW1hbCgnMCcpCiAgICAgICAgICBhID4gYiAgICAgICAgICAgID09PiBEZWNpbWFsKCcxJykKIAotICAgLi4gbWV0aG9kOjogY29tcGFyZV9zaWduYWwob3RoZXJbLCBjb250ZXh0XSkKKyAgIC4uIG1ldGhvZDo6IGNvbXBhcmVfc2lnbmFsKG90aGVyLCBjb250ZXh0PU5vbmUpCiAKICAgICAgIFRoaXMgb3BlcmF0aW9uIGlzIGlkZW50aWNhbCB0byB0aGUgOm1ldGg6YGNvbXBhcmVgIG1ldGhvZCwgZXhjZXB0IHRoYXQgYWxsCiAgICAgICBOYU5zIHNpZ25hbC4gIFRoYXQgaXMsIGlmIG5laXRoZXIgb3BlcmFuZCBpcyBhIHNpZ25hbGluZyBOYU4gdGhlbiBhbnkKICAgICAgIHF1aWV0IE5hTiBvcGVyYW5kIGlzIHRyZWF0ZWQgYXMgdGhvdWdoIGl0IHdlcmUgYSBzaWduYWxpbmcgTmFOLgogCi0gICAuLiBtZXRob2Q6OiBjb21wYXJlX3RvdGFsKG90aGVyKQorICAgLi4gbWV0aG9kOjogY29tcGFyZV90b3RhbChvdGhlciwgY29udGV4dD1Ob25lKQogCiAgICAgICBDb21wYXJlIHR3byBvcGVyYW5kcyB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbiByYXRoZXIgdGhhbiB0aGVpcgogICAgICAgbnVtZXJpY2FsIHZhbHVlLiAgU2ltaWxhciB0byB0aGUgOm1ldGg6YGNvbXBhcmVgIG1ldGhvZCwgYnV0IHRoZSByZXN1bHQKQEAgLTQ1OSwxMyArNDk0LDIxIEBACiAgICAgICBoaWdoZXIgaW4gdGhlIHRvdGFsIG9yZGVyIHRoYW4gdGhlIHNlY29uZCBvcGVyYW5kLiAgU2VlIHRoZSBzcGVjaWZpY2F0aW9uCiAgICAgICBmb3IgZGV0YWlscyBvZiB0aGUgdG90YWwgb3JkZXIuCiAKLSAgIC4uIG1ldGhvZDo6IGNvbXBhcmVfdG90YWxfbWFnKG90aGVyKQorICAgICAgVGhpcyBvcGVyYXRpb24gaXMgdW5hZmZlY3RlZCBieSBjb250ZXh0IGFuZCBpcyBxdWlldDogbm8gZmxhZ3MgYXJlIGNoYW5nZWQKKyAgICAgIGFuZCBubyByb3VuZGluZyBpcyBwZXJmb3JtZWQuICBBcyBhbiBleGNlcHRpb24sIHRoZSBDIHZlcnNpb24gbWF5IHJhaXNlCisgICAgICBJbnZhbGlkT3BlcmF0aW9uIGlmIHRoZSBzZWNvbmQgb3BlcmFuZCBjYW5ub3QgYmUgY29udmVydGVkIGV4YWN0bHkuCisKKyAgIC4uIG1ldGhvZDo6IGNvbXBhcmVfdG90YWxfbWFnKG90aGVyLCBjb250ZXh0PU5vbmUpCiAKICAgICAgIENvbXBhcmUgdHdvIG9wZXJhbmRzIHVzaW5nIHRoZWlyIGFic3RyYWN0IHJlcHJlc2VudGF0aW9uIHJhdGhlciB0aGFuIHRoZWlyCiAgICAgICB2YWx1ZSBhcyBpbiA6bWV0aDpgY29tcGFyZV90b3RhbGAsIGJ1dCBpZ25vcmluZyB0aGUgc2lnbiBvZiBlYWNoIG9wZXJhbmQuCiAgICAgICBgYHguY29tcGFyZV90b3RhbF9tYWcoeSlgYCBpcyBlcXVpdmFsZW50IHRvCiAgICAgICBgYHguY29weV9hYnMoKS5jb21wYXJlX3RvdGFsKHkuY29weV9hYnMoKSlgYC4KIAorICAgICAgVGhpcyBvcGVyYXRpb24gaXMgdW5hZmZlY3RlZCBieSBjb250ZXh0IGFuZCBpcyBxdWlldDogbm8gZmxhZ3MgYXJlIGNoYW5nZWQKKyAgICAgIGFuZCBubyByb3VuZGluZyBpcyBwZXJmb3JtZWQuICBBcyBhbiBleGNlcHRpb24sIHRoZSBDIHZlcnNpb24gbWF5IHJhaXNlCisgICAgICBJbnZhbGlkT3BlcmF0aW9uIGlmIHRoZSBzZWNvbmQgb3BlcmFuZCBjYW5ub3QgYmUgY29udmVydGVkIGV4YWN0bHkuCisKICAgIC4uIG1ldGhvZDo6IGNvbmp1Z2F0ZSgpCiAKICAgICAgIEp1c3QgcmV0dXJucyBzZWxmLCB0aGlzIG1ldGhvZCBpcyBvbmx5IHRvIGNvbXBseSB3aXRoIHRoZSBEZWNpbWFsCkBAIC00ODIsNyArNTI1LDcgQEAKICAgICAgIFJldHVybiB0aGUgbmVnYXRpb24gb2YgdGhlIGFyZ3VtZW50LiAgVGhpcyBvcGVyYXRpb24gaXMgdW5hZmZlY3RlZCBieSB0aGUKICAgICAgIGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZCBhbmQgbm8gcm91bmRpbmcgaXMgcGVyZm9ybWVkLgogCi0gICAuLiBtZXRob2Q6OiBjb3B5X3NpZ24ob3RoZXIpCisgICAuLiBtZXRob2Q6OiBjb3B5X3NpZ24ob3RoZXIsIGNvbnRleHQ9Tm9uZSkKIAogICAgICAgUmV0dXJuIGEgY29weSBvZiB0aGUgZmlyc3Qgb3BlcmFuZCB3aXRoIHRoZSBzaWduIHNldCB0byBiZSB0aGUgc2FtZSBhcyB0aGUKICAgICAgIHNpZ24gb2YgdGhlIHNlY29uZCBvcGVyYW5kLiAgRm9yIGV4YW1wbGU6CkBAIC00OTAsMTAgKzUzMywxMSBAQAogICAgICAgICAgPj4+IERlY2ltYWwoJzIuMycpLmNvcHlfc2lnbihEZWNpbWFsKCctMS41JykpCiAgICAgICAgICBEZWNpbWFsKCctMi4zJykKIAotICAgICAgVGhpcyBvcGVyYXRpb24gaXMgdW5hZmZlY3RlZCBieSB0aGUgY29udGV4dCBhbmQgaXMgcXVpZXQ6IG5vIGZsYWdzIGFyZQotICAgICAgY2hhbmdlZCBhbmQgbm8gcm91bmRpbmcgaXMgcGVyZm9ybWVkLgorICAgICAgVGhpcyBvcGVyYXRpb24gaXMgdW5hZmZlY3RlZCBieSBjb250ZXh0IGFuZCBpcyBxdWlldDogbm8gZmxhZ3MgYXJlIGNoYW5nZWQKKyAgICAgIGFuZCBubyByb3VuZGluZyBpcyBwZXJmb3JtZWQuICBBcyBhbiBleGNlcHRpb24sIHRoZSBDIHZlcnNpb24gbWF5IHJhaXNlCisgICAgICBJbnZhbGlkT3BlcmF0aW9uIGlmIHRoZSBzZWNvbmQgb3BlcmFuZCBjYW5ub3QgYmUgY29udmVydGVkIGV4YWN0bHkuCiAKLSAgIC4uIG1ldGhvZDo6IGV4cChbY29udGV4dF0pCisgICAuLiBtZXRob2Q6OiBleHAoY29udGV4dD1Ob25lKQogCiAgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAobmF0dXJhbCkgZXhwb25lbnRpYWwgZnVuY3Rpb24gYGBlKip4YGAgYXQgdGhlCiAgICAgICBnaXZlbiBudW1iZXIuICBUaGUgcmVzdWx0IGlzIGNvcnJlY3RseSByb3VuZGVkIHVzaW5nIHRoZQpAQCAtNTMwLDcgKzU3NCw3IEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCi0gICAuLiBtZXRob2Q6OiBmbWEob3RoZXIsIHRoaXJkWywgY29udGV4dF0pCisgICAuLiBtZXRob2Q6OiBmbWEob3RoZXIsIHRoaXJkLCBjb250ZXh0PU5vbmUpCiAKICAgICAgIEZ1c2VkIG11bHRpcGx5LWFkZC4gIFJldHVybiBzZWxmKm90aGVyK3RoaXJkIHdpdGggbm8gcm91bmRpbmcgb2YgdGhlCiAgICAgICBpbnRlcm1lZGlhdGUgcHJvZHVjdCBzZWxmKm90aGVyLgpAQCAtNTU5LDcgKzYwMyw3IEBACiAgICAgICBSZXR1cm4gOmNvbnN0OmBUcnVlYCBpZiB0aGUgYXJndW1lbnQgaXMgYSAocXVpZXQgb3Igc2lnbmFsaW5nKSBOYU4gYW5kCiAgICAgICA6Y29uc3Q6YEZhbHNlYCBvdGhlcndpc2UuCiAKLSAgIC4uIG1ldGhvZDo6IGlzX25vcm1hbCgpCisgICAuLiBtZXRob2Q6OiBpc19ub3JtYWwoY29udGV4dD1Ob25lKQogCiAgICAgICBSZXR1cm4gOmNvbnN0OmBUcnVlYCBpZiB0aGUgYXJndW1lbnQgaXMgYSAqbm9ybWFsKiBmaW5pdGUgbnVtYmVyLiAgUmV0dXJuCiAgICAgICA6Y29uc3Q6YEZhbHNlYCBpZiB0aGUgYXJndW1lbnQgaXMgemVybywgc3Vibm9ybWFsLCBpbmZpbml0ZSBvciBhIE5hTi4KQEAgLTU3OSw3ICs2MjMsNyBAQAogICAgICAgUmV0dXJuIDpjb25zdDpgVHJ1ZWAgaWYgdGhlIGFyZ3VtZW50IGlzIGEgc2lnbmFsaW5nIE5hTiBhbmQgOmNvbnN0OmBGYWxzZWAKICAgICAgIG90aGVyd2lzZS4KIAotICAgLi4gbWV0aG9kOjogaXNfc3Vibm9ybWFsKCkKKyAgIC4uIG1ldGhvZDo6IGlzX3N1Ym5vcm1hbChjb250ZXh0PU5vbmUpCiAKICAgICAgIFJldHVybiA6Y29uc3Q6YFRydWVgIGlmIHRoZSBhcmd1bWVudCBpcyBzdWJub3JtYWwsIGFuZCA6Y29uc3Q6YEZhbHNlYAogICAgICAgb3RoZXJ3aXNlLgpAQCAtNTg5LDE3ICs2MzMsMTcgQEAKICAgICAgIFJldHVybiA6Y29uc3Q6YFRydWVgIGlmIHRoZSBhcmd1bWVudCBpcyBhIChwb3NpdGl2ZSBvciBuZWdhdGl2ZSkgemVybyBhbmQKICAgICAgIDpjb25zdDpgRmFsc2VgIG90aGVyd2lzZS4KIAotICAgLi4gbWV0aG9kOjogbG4oW2NvbnRleHRdKQorICAgLi4gbWV0aG9kOjogbG4oY29udGV4dD1Ob25lKQogCiAgICAgICBSZXR1cm4gdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLiAgVGhlIHJlc3VsdCBpcwogICAgICAgY29ycmVjdGx5IHJvdW5kZWQgdXNpbmcgdGhlIDpjb25zdDpgUk9VTkRfSEFMRl9FVkVOYCByb3VuZGluZyBtb2RlLgogCi0gICAuLiBtZXRob2Q6OiBsb2cxMChbY29udGV4dF0pCisgICAuLiBtZXRob2Q6OiBsb2cxMChjb250ZXh0PU5vbmUpCiAKICAgICAgIFJldHVybiB0aGUgYmFzZSB0ZW4gbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLiAgVGhlIHJlc3VsdCBpcyBjb3JyZWN0bHkKICAgICAgIHJvdW5kZWQgdXNpbmcgdGhlIDpjb25zdDpgUk9VTkRfSEFMRl9FVkVOYCByb3VuZGluZyBtb2RlLgogCi0gICAuLiBtZXRob2Q6OiBsb2diKFtjb250ZXh0XSkKKyAgIC4uIG1ldGhvZDo6IGxvZ2IoY29udGV4dD1Ob25lKQogCiAgICAgICBGb3IgYSBub256ZXJvIG51bWJlciwgcmV0dXJuIHRoZSBhZGp1c3RlZCBleHBvbmVudCBvZiBpdHMgb3BlcmFuZCBhcyBhCiAgICAgICA6Y2xhc3M6YERlY2ltYWxgIGluc3RhbmNlLiAgSWYgdGhlIG9wZXJhbmQgaXMgYSB6ZXJvIHRoZW4KQEAgLTYwNyw3MyArNjUxLDczIEBACiAgICAgICBpcyByYWlzZWQuICBJZiB0aGUgb3BlcmFuZCBpcyBhbiBpbmZpbml0eSB0aGVuIGBgRGVjaW1hbCgnSW5maW5pdHknKWBgIGlzCiAgICAgICByZXR1cm5lZC4KIAotICAgLi4gbWV0aG9kOjogbG9naWNhbF9hbmQob3RoZXJbLCBjb250ZXh0XSkKKyAgIC4uIG1ldGhvZDo6IGxvZ2ljYWxfYW5kKG90aGVyLCBjb250ZXh0PU5vbmUpCiAKICAgICAgIDptZXRoOmBsb2dpY2FsX2FuZGAgaXMgYSBsb2dpY2FsIG9wZXJhdGlvbiB3aGljaCB0YWtlcyB0d28gKmxvZ2ljYWwKICAgICAgIG9wZXJhbmRzKiAoc2VlIDpyZWY6YGxvZ2ljYWxfb3BlcmFuZHNfbGFiZWxgKS4gIFRoZSByZXN1bHQgaXMgdGhlCiAgICAgICBkaWdpdC13aXNlIGBgYW5kYGAgb2YgdGhlIHR3byBvcGVyYW5kcy4KIAotICAgLi4gbWV0aG9kOjogbG9naWNhbF9pbnZlcnQoW2NvbnRleHRdKQorICAgLi4gbWV0aG9kOjogbG9naWNhbF9pbnZlcnQoY29udGV4dD1Ob25lKQogCiAgICAgICA6bWV0aDpgbG9naWNhbF9pbnZlcnRgIGlzIGEgbG9naWNhbCBvcGVyYXRpb24uICBUaGUKICAgICAgIHJlc3VsdCBpcyB0aGUgZGlnaXQtd2lzZSBpbnZlcnNpb24gb2YgdGhlIG9wZXJhbmQuCiAKLSAgIC4uIG1ldGhvZDo6IGxvZ2ljYWxfb3Iob3RoZXJbLCBjb250ZXh0XSkKKyAgIC4uIG1ldGhvZDo6IGxvZ2ljYWxfb3Iob3RoZXIsIGNvbnRleHQ9Tm9uZSkKIAogICAgICAgOm1ldGg6YGxvZ2ljYWxfb3JgIGlzIGEgbG9naWNhbCBvcGVyYXRpb24gd2hpY2ggdGFrZXMgdHdvICpsb2dpY2FsCiAgICAgICBvcGVyYW5kcyogKHNlZSA6cmVmOmBsb2dpY2FsX29wZXJhbmRzX2xhYmVsYCkuICBUaGUgcmVzdWx0IGlzIHRoZQogICAgICAgZGlnaXQtd2lzZSBgYG9yYGAgb2YgdGhlIHR3byBvcGVyYW5kcy4KIAotICAgLi4gbWV0aG9kOjogbG9naWNhbF94b3Iob3RoZXJbLCBjb250ZXh0XSkKKyAgIC4uIG1ldGhvZDo6IGxvZ2ljYWxfeG9yKG90aGVyLCBjb250ZXh0PU5vbmUpCiAKICAgICAgIDptZXRoOmBsb2dpY2FsX3hvcmAgaXMgYSBsb2dpY2FsIG9wZXJhdGlvbiB3aGljaCB0YWtlcyB0d28gKmxvZ2ljYWwKICAgICAgIG9wZXJhbmRzKiAoc2VlIDpyZWY6YGxvZ2ljYWxfb3BlcmFuZHNfbGFiZWxgKS4gIFRoZSByZXN1bHQgaXMgdGhlCiAgICAgICBkaWdpdC13aXNlIGV4Y2x1c2l2ZSBvciBvZiB0aGUgdHdvIG9wZXJhbmRzLgogCi0gICAuLiBtZXRob2Q6OiBtYXgob3RoZXJbLCBjb250ZXh0XSkKKyAgIC4uIG1ldGhvZDo6IG1heChvdGhlciwgY29udGV4dD1Ob25lKQogCiAgICAgICBMaWtlIGBgbWF4KHNlbGYsIG90aGVyKWBgIGV4Y2VwdCB0aGF0IHRoZSBjb250ZXh0IHJvdW5kaW5nIHJ1bGUgaXMgYXBwbGllZAogICAgICAgYmVmb3JlIHJldHVybmluZyBhbmQgdGhhdCA6Y29uc3Q6YE5hTmAgdmFsdWVzIGFyZSBlaXRoZXIgc2lnbmFsZWQgb3IKICAgICAgIGlnbm9yZWQgKGRlcGVuZGluZyBvbiB0aGUgY29udGV4dCBhbmQgd2hldGhlciB0aGV5IGFyZSBzaWduYWxpbmcgb3IKICAgICAgIHF1aWV0KS4KIAotICAgLi4gbWV0aG9kOjogbWF4X21hZyhvdGhlclssIGNvbnRleHRdKQorICAgLi4gbWV0aG9kOjogbWF4X21hZyhvdGhlciwgY29udGV4dD1Ob25lKQogCiAgICAgICBTaW1pbGFyIHRvIHRoZSA6bWV0aDpgLm1heGAgbWV0aG9kLCBidXQgdGhlIGNvbXBhcmlzb24gaXMgZG9uZSB1c2luZyB0aGUKICAgICAgIGFic29sdXRlIHZhbHVlcyBvZiB0aGUgb3BlcmFuZHMuCiAKLSAgIC4uIG1ldGhvZDo6IG1pbihvdGhlclssIGNvbnRleHRdKQorICAgLi4gbWV0aG9kOjogbWluKG90aGVyLCBjb250ZXh0PU5vbmUpCiAKICAgICAgIExpa2UgYGBtaW4oc2VsZiwgb3RoZXIpYGAgZXhjZXB0IHRoYXQgdGhlIGNvbnRleHQgcm91bmRpbmcgcnVsZSBpcyBhcHBsaWVkCiAgICAgICBiZWZvcmUgcmV0dXJuaW5nIGFuZCB0aGF0IDpjb25zdDpgTmFOYCB2YWx1ZXMgYXJlIGVpdGhlciBzaWduYWxlZCBvcgogICAgICAgaWdub3JlZCAoZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0IGFuZCB3aGV0aGVyIHRoZXkgYXJlIHNpZ25hbGluZyBvcgogICAgICAgcXVpZXQpLgogCi0gICAuLiBtZXRob2Q6OiBtaW5fbWFnKG90aGVyWywgY29udGV4dF0pCisgICAuLiBtZXRob2Q6OiBtaW5fbWFnKG90aGVyLCBjb250ZXh0PU5vbmUpCiAKICAgICAgIFNpbWlsYXIgdG8gdGhlIDptZXRoOmAubWluYCBtZXRob2QsIGJ1dCB0aGUgY29tcGFyaXNvbiBpcyBkb25lIHVzaW5nIHRoZQogICAgICAgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZSBvcGVyYW5kcy4KIAotICAgLi4gbWV0aG9kOjogbmV4dF9taW51cyhbY29udGV4dF0pCisgICAuLiBtZXRob2Q6OiBuZXh0X21pbnVzKGNvbnRleHQ9Tm9uZSkKIAogICAgICAgUmV0dXJuIHRoZSBsYXJnZXN0IG51bWJlciByZXByZXNlbnRhYmxlIGluIHRoZSBnaXZlbiBjb250ZXh0IChvciBpbiB0aGUKICAgICAgIGN1cnJlbnQgdGhyZWFkJ3MgY29udGV4dCBpZiBubyBjb250ZXh0IGlzIGdpdmVuKSB0aGF0IGlzIHNtYWxsZXIgdGhhbiB0aGUKICAgICAgIGdpdmVuIG9wZXJhbmQuCiAKLSAgIC4uIG1ldGhvZDo6IG5leHRfcGx1cyhbY29udGV4dF0pCisgICAuLiBtZXRob2Q6OiBuZXh0X3BsdXMoY29udGV4dD1Ob25lKQogCiAgICAgICBSZXR1cm4gdGhlIHNtYWxsZXN0IG51bWJlciByZXByZXNlbnRhYmxlIGluIHRoZSBnaXZlbiBjb250ZXh0IChvciBpbiB0aGUKICAgICAgIGN1cnJlbnQgdGhyZWFkJ3MgY29udGV4dCBpZiBubyBjb250ZXh0IGlzIGdpdmVuKSB0aGF0IGlzIGxhcmdlciB0aGFuIHRoZQogICAgICAgZ2l2ZW4gb3BlcmFuZC4KIAotICAgLi4gbWV0aG9kOjogbmV4dF90b3dhcmQob3RoZXJbLCBjb250ZXh0XSkKKyAgIC4uIG1ldGhvZDo6IG5leHRfdG93YXJkKG90aGVyLCBjb250ZXh0PU5vbmUpCiAKICAgICAgIElmIHRoZSB0d28gb3BlcmFuZHMgYXJlIHVuZXF1YWwsIHJldHVybiB0aGUgbnVtYmVyIGNsb3Nlc3QgdG8gdGhlIGZpcnN0CiAgICAgICBvcGVyYW5kIGluIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHNlY29uZCBvcGVyYW5kLiAgSWYgYm90aCBvcGVyYW5kcyBhcmUKICAgICAgIG51bWVyaWNhbGx5IGVxdWFsLCByZXR1cm4gYSBjb3B5IG9mIHRoZSBmaXJzdCBvcGVyYW5kIHdpdGggdGhlIHNpZ24gc2V0IHRvCiAgICAgICBiZSB0aGUgc2FtZSBhcyB0aGUgc2lnbiBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuCiAKLSAgIC4uIG1ldGhvZDo6IG5vcm1hbGl6ZShbY29udGV4dF0pCisgICAuLiBtZXRob2Q6OiBub3JtYWxpemUoY29udGV4dD1Ob25lKQogCiAgICAgICBOb3JtYWxpemUgdGhlIG51bWJlciBieSBzdHJpcHBpbmcgdGhlIHJpZ2h0bW9zdCB0cmFpbGluZyB6ZXJvcyBhbmQKICAgICAgIGNvbnZlcnRpbmcgYW55IHJlc3VsdCBlcXVhbCB0byA6Y29uc3Q6YERlY2ltYWwoJzAnKWAgdG8KQEAgLTY4Miw3ICs3MjYsNyBAQAogICAgICAgYGBEZWNpbWFsKCcwLjMyMTAwMGUrMicpYGAgYm90aCBub3JtYWxpemUgdG8gdGhlIGVxdWl2YWxlbnQgdmFsdWUKICAgICAgIGBgRGVjaW1hbCgnMzIuMScpYGAuCiAKLSAgIC4uIG1ldGhvZDo6IG51bWJlcl9jbGFzcyhbY29udGV4dF0pCisgICAuLiBtZXRob2Q6OiBudW1iZXJfY2xhc3MoY29udGV4dD1Ob25lKQogCiAgICAgICBSZXR1cm4gYSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgKmNsYXNzKiBvZiB0aGUgb3BlcmFuZC4gIFRoZSByZXR1cm5lZCB2YWx1ZQogICAgICAgaXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgdGVuIHN0cmluZ3MuCkBAIC02OTgsNyArNzQyLDcgQEAKICAgICAgICogYGAiTmFOImBgLCBpbmRpY2F0aW5nIHRoYXQgdGhlIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gKE5vdCBhIE51bWJlcikuCiAgICAgICAqIGBgInNOYU4iYGAsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBhIHNpZ25hbGluZyBOYU4uCiAKLSAgIC4uIG1ldGhvZDo6IHF1YW50aXplKGV4cFssIHJvdW5kaW5nWywgY29udGV4dFssIHdhdGNoZXhwXV1dKQorICAgLi4gbWV0aG9kOjogcXVhbnRpemUoZXhwLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUsIHdhdGNoZXhwPVRydWUpCiAKICAgICAgIFJldHVybiBhIHZhbHVlIGVxdWFsIHRvIHRoZSBmaXJzdCBvcGVyYW5kIGFmdGVyIHJvdW5kaW5nIGFuZCBoYXZpbmcgdGhlCiAgICAgICBleHBvbmVudCBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuCkBAIC03MjUsMTMgKzc2OSwxOCBAQAogICAgICAgcmVzdWx0aW5nIGV4cG9uZW50IGlzIGdyZWF0ZXIgdGhhbiA6YXR0cjpgRW1heGAgb3IgbGVzcyB0aGFuCiAgICAgICA6YXR0cjpgRXRpbnlgLgogCisgICAgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICAgICAqd2F0Y2hleHAqIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBmcm9tIHRoZSBwdXJlIFB5dGhvbiB2ZXJzaW9uCisgICAgICAgICBhbmQgaXMgbm90IHByZXNlbnQgaW4gdGhlIEMgdmVyc2lvbi4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24KKyAgICAgICAgIDMuNCwgd2hlcmUgaXQgZGVmYXVsdHMgdG8gYGBUcnVlYGAuCisKICAgIC4uIG1ldGhvZDo6IHJhZGl4KCkKIAogICAgICAgUmV0dXJuIGBgRGVjaW1hbCgxMClgYCwgdGhlIHJhZGl4IChiYXNlKSBpbiB3aGljaCB0aGUgOmNsYXNzOmBEZWNpbWFsYAogICAgICAgY2xhc3MgZG9lcyBhbGwgaXRzIGFyaXRobWV0aWMuICBJbmNsdWRlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZQogICAgICAgc3BlY2lmaWNhdGlvbi4KIAotICAgLi4gbWV0aG9kOjogcmVtYWluZGVyX25lYXIob3RoZXJbLCBjb250ZXh0XSkKKyAgIC4uIG1ldGhvZDo6IHJlbWFpbmRlcl9uZWFyKG90aGVyLCBjb250ZXh0PU5vbmUpCiAKICAgICAgIFJldHVybiB0aGUgcmVtYWluZGVyIGZyb20gZGl2aWRpbmcgKnNlbGYqIGJ5ICpvdGhlciouICBUaGlzIGRpZmZlcnMgZnJvbQogICAgICAgYGBzZWxmICUgb3RoZXJgYCBpbiB0aGF0IHRoZSBzaWduIG9mIHRoZSByZW1haW5kZXIgaXMgY2hvc2VuIHNvIGFzIHRvCkBAIC03NDksNyArNzk4LDcgQEAKICAgICAgID4+PiBEZWNpbWFsKDM1KS5yZW1haW5kZXJfbmVhcihEZWNpbWFsKDEwKSkKICAgICAgIERlY2ltYWwoJy01JykKIAotICAgLi4gbWV0aG9kOjogcm90YXRlKG90aGVyWywgY29udGV4dF0pCisgICAuLiBtZXRob2Q6OiByb3RhdGUob3RoZXIsIGNvbnRleHQ9Tm9uZSkKIAogICAgICAgUmV0dXJuIHRoZSByZXN1bHQgb2Ygcm90YXRpbmcgdGhlIGRpZ2l0cyBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBieSBhbiBhbW91bnQKICAgICAgIHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIG9wZXJhbmQuICBUaGUgc2Vjb25kIG9wZXJhbmQgbXVzdCBiZSBhbiBpbnRlZ2VyIGluCkBAIC03NjAsMTggKzgwOSwyMiBAQAogICAgICAgbGVuZ3RoIHByZWNpc2lvbiBpZiBuZWNlc3NhcnkuICBUaGUgc2lnbiBhbmQgZXhwb25lbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQKICAgICAgIGFyZSB1bmNoYW5nZWQuCiAKLSAgIC4uIG1ldGhvZDo6IHNhbWVfcXVhbnR1bShvdGhlclssIGNvbnRleHRdKQorICAgLi4gbWV0aG9kOjogc2FtZV9xdWFudHVtKG90aGVyLCBjb250ZXh0PU5vbmUpCiAKICAgICAgIFRlc3Qgd2hldGhlciBzZWxmIGFuZCBvdGhlciBoYXZlIHRoZSBzYW1lIGV4cG9uZW50IG9yIHdoZXRoZXIgYm90aCBhcmUKICAgICAgIDpjb25zdDpgTmFOYC4KIAotICAgLi4gbWV0aG9kOjogc2NhbGViKG90aGVyWywgY29udGV4dF0pCisgICAgICBUaGlzIG9wZXJhdGlvbiBpcyB1bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZAorICAgICAgYW5kIG5vIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4gIEFzIGFuIGV4Y2VwdGlvbiwgdGhlIEMgdmVyc2lvbiBtYXkgcmFpc2UKKyAgICAgIEludmFsaWRPcGVyYXRpb24gaWYgdGhlIHNlY29uZCBvcGVyYW5kIGNhbm5vdCBiZSBjb252ZXJ0ZWQgZXhhY3RseS4KKworICAgLi4gbWV0aG9kOjogc2NhbGViKG90aGVyLCBjb250ZXh0PU5vbmUpCiAKICAgICAgIFJldHVybiB0aGUgZmlyc3Qgb3BlcmFuZCB3aXRoIGV4cG9uZW50IGFkanVzdGVkIGJ5IHRoZSBzZWNvbmQuCiAgICAgICBFcXVpdmFsZW50bHksIHJldHVybiB0aGUgZmlyc3Qgb3BlcmFuZCBtdWx0aXBsaWVkIGJ5IGBgMTAqKm90aGVyYGAuICBUaGUKICAgICAgIHNlY29uZCBvcGVyYW5kIG11c3QgYmUgYW4gaW50ZWdlci4KIAotICAgLi4gbWV0aG9kOjogc2hpZnQob3RoZXJbLCBjb250ZXh0XSkKKyAgIC4uIG1ldGhvZDo6IHNoaWZ0KG90aGVyLCBjb250ZXh0PU5vbmUpCiAKICAgICAgIFJldHVybiB0aGUgcmVzdWx0IG9mIHNoaWZ0aW5nIHRoZSBkaWdpdHMgb2YgdGhlIGZpcnN0IG9wZXJhbmQgYnkgYW4gYW1vdW50CiAgICAgICBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBvcGVyYW5kLiAgVGhlIHNlY29uZCBvcGVyYW5kIG11c3QgYmUgYW4gaW50ZWdlciBpbgpAQCAtNzgxLDEyICs4MzQsMTIgQEAKICAgICAgIHJpZ2h0LiAgRGlnaXRzIHNoaWZ0ZWQgaW50byB0aGUgY29lZmZpY2llbnQgYXJlIHplcm9zLiAgVGhlIHNpZ24gYW5kCiAgICAgICBleHBvbmVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBhcmUgdW5jaGFuZ2VkLgogCi0gICAuLiBtZXRob2Q6OiBzcXJ0KFtjb250ZXh0XSkKKyAgIC4uIG1ldGhvZDo6IHNxcnQoY29udGV4dD1Ob25lKQogCiAgICAgICBSZXR1cm4gdGhlIHNxdWFyZSByb290IG9mIHRoZSBhcmd1bWVudCB0byBmdWxsIHByZWNpc2lvbi4KIAogCi0gICAuLiBtZXRob2Q6OiB0b19lbmdfc3RyaW5nKFtjb250ZXh0XSkKKyAgIC4uIG1ldGhvZDo6IHRvX2VuZ19zdHJpbmcoY29udGV4dD1Ob25lKQogCiAgICAgICBDb252ZXJ0IHRvIGFuIGVuZ2luZWVyaW5nLXR5cGUgc3RyaW5nLgogCkBAIC03OTQsMTIgKzg0NywxMiBAQAogICAgICAgYXJlIHVwIHRvIDMgZGlnaXRzIGxlZnQgb2YgdGhlIGRlY2ltYWwgcGxhY2UuICBGb3IgZXhhbXBsZSwgY29udmVydHMKICAgICAgIGBgRGVjaW1hbCgnMTIzRSsxJylgYCB0byBgYERlY2ltYWwoJzEuMjNFKzMnKWBgCiAKLSAgIC4uIG1ldGhvZDo6IHRvX2ludGVncmFsKFtyb3VuZGluZ1ssIGNvbnRleHRdXSkKKyAgIC4uIG1ldGhvZDo6IHRvX2ludGVncmFsKHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkKIAogICAgICAgSWRlbnRpY2FsIHRvIHRoZSA6bWV0aDpgdG9faW50ZWdyYWxfdmFsdWVgIG1ldGhvZC4gIFRoZSBgYHRvX2ludGVncmFsYGAKICAgICAgIG5hbWUgaGFzIGJlZW4ga2VwdCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHZlcnNpb25zLgogCi0gICAuLiBtZXRob2Q6OiB0b19pbnRlZ3JhbF9leGFjdChbcm91bmRpbmdbLCBjb250ZXh0XV0pCisgICAuLiBtZXRob2Q6OiB0b19pbnRlZ3JhbF9leGFjdChyb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpCiAKICAgICAgIFJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIsIHNpZ25hbGluZyA6Y29uc3Q6YEluZXhhY3RgIG9yCiAgICAgICA6Y29uc3Q6YFJvdW5kZWRgIGFzIGFwcHJvcHJpYXRlIGlmIHJvdW5kaW5nIG9jY3Vycy4gIFRoZSByb3VuZGluZyBtb2RlIGlzCkBAIC04MDcsNyArODYwLDcgQEAKICAgICAgIGBgY29udGV4dGBgLiAgSWYgbmVpdGhlciBwYXJhbWV0ZXIgaXMgZ2l2ZW4gdGhlbiB0aGUgcm91bmRpbmcgbW9kZSBvZiB0aGUKICAgICAgIGN1cnJlbnQgY29udGV4dCBpcyB1c2VkLgogCi0gICAuLiBtZXRob2Q6OiB0b19pbnRlZ3JhbF92YWx1ZShbcm91bmRpbmdbLCBjb250ZXh0XV0pCisgICAuLiBtZXRob2Q6OiB0b19pbnRlZ3JhbF92YWx1ZShyb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpCiAKICAgICAgIFJvdW5kIHRvIHRoZSBuZWFyZXN0IGludGVnZXIgd2l0aG91dCBzaWduYWxpbmcgOmNvbnN0OmBJbmV4YWN0YCBvcgogICAgICAgOmNvbnN0OmBSb3VuZGVkYC4gIElmIGdpdmVuLCBhcHBsaWVzICpyb3VuZGluZyo7IG90aGVyd2lzZSwgdXNlcyB0aGUKQEAgLTg1MywxMCArOTA2LDEwIEBACiBZb3UgY2FuIGFsc28gdXNlIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IGFuZCB0aGUgOmZ1bmM6YGxvY2FsY29udGV4dGAKIGZ1bmN0aW9uIHRvIHRlbXBvcmFyaWx5IGNoYW5nZSB0aGUgYWN0aXZlIGNvbnRleHQuCiAKLS4uIGZ1bmN0aW9uOjogbG9jYWxjb250ZXh0KFtjXSkKKy4uIGZ1bmN0aW9uOjogbG9jYWxjb250ZXh0KGN0eD1Ob25lKQogCiAgICBSZXR1cm4gYSBjb250ZXh0IG1hbmFnZXIgdGhhdCB3aWxsIHNldCB0aGUgY3VycmVudCBjb250ZXh0IGZvciB0aGUgYWN0aXZlIHRocmVhZAotICAgdG8gYSBjb3B5IG9mICpjKiBvbiBlbnRyeSB0byB0aGUgd2l0aC1zdGF0ZW1lbnQgYW5kIHJlc3RvcmUgdGhlIHByZXZpb3VzIGNvbnRleHQKKyAgIHRvIGEgY29weSBvZiAqY3R4KiBvbiBlbnRyeSB0byB0aGUgd2l0aC1zdGF0ZW1lbnQgYW5kIHJlc3RvcmUgdGhlIHByZXZpb3VzIGNvbnRleHQKICAgIHdoZW4gZXhpdGluZyB0aGUgd2l0aC1zdGF0ZW1lbnQuIElmIG5vIGNvbnRleHQgaXMgc3BlY2lmaWVkLCBhIGNvcHkgb2YgdGhlCiAgICBjdXJyZW50IGNvbnRleHQgaXMgdXNlZC4KIApAQCAtOTEyLDM5ICs5NjUsMzMgQEAKICAgIEluIHNpbmdsZSB0aHJlYWRlZCBlbnZpcm9ubWVudHMsIGl0IGlzIHByZWZlcmFibGUgdG8gbm90IHVzZSB0aGlzIGNvbnRleHQgYXQKICAgIGFsbC4gIEluc3RlYWQsIHNpbXBseSBjcmVhdGUgY29udGV4dHMgZXhwbGljaXRseSBhcyBkZXNjcmliZWQgYmVsb3cuCiAKLSAgIFRoZSBkZWZhdWx0IHZhbHVlcyBhcmUgcHJlY2lzaW9uPTI4LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sIGFuZCBlbmFibGVkIHRyYXBzCi0gICBmb3IgT3ZlcmZsb3csIEludmFsaWRPcGVyYXRpb24sIGFuZCBEaXZpc2lvbkJ5WmVyby4KKyAgIFRoZSBkZWZhdWx0IHZhbHVlcyBhcmUgOmF0dHI6YHByZWNgXCA9XCA6Y29uc3Q6YDI4YCwKKyAgIDphdHRyOmByb3VuZGluZ2BcID1cIDpjb25zdDpgUk9VTkRfSEFMRl9FVkVOYCwKKyAgIGFuZCBlbmFibGVkIHRyYXBzIGZvciA6Y2xhc3M6YE92ZXJmbG93YCwgOmNsYXNzOmBJbnZhbGlkT3BlcmF0aW9uYCwgYW5kCisgICA6Y2xhc3M6YERpdmlzaW9uQnlaZXJvYC4KIAogSW4gYWRkaXRpb24gdG8gdGhlIHRocmVlIHN1cHBsaWVkIGNvbnRleHRzLCBuZXcgY29udGV4dHMgY2FuIGJlIGNyZWF0ZWQgd2l0aCB0aGUKIDpjbGFzczpgQ29udGV4dGAgY29uc3RydWN0b3IuCiAKIAotLi4gY2xhc3M6OiBDb250ZXh0KHByZWM9Tm9uZSwgcm91bmRpbmc9Tm9uZSwgdHJhcHM9Tm9uZSwgZmxhZ3M9Tm9uZSwgRW1pbj1Ob25lLCBFbWF4PU5vbmUsIGNhcGl0YWxzPU5vbmUsIGNsYW1wPU5vbmUpCisuLiBjbGFzczo6IENvbnRleHQocHJlYz1Ob25lLCByb3VuZGluZz1Ob25lLCBFbWluPU5vbmUsIEVtYXg9Tm9uZSwgY2FwaXRhbHM9Tm9uZSwgY2xhbXA9Tm9uZSwgZmxhZ3M9Tm9uZSwgdHJhcHM9Tm9uZSkKIAogICAgQ3JlYXRlcyBhIG5ldyBjb250ZXh0LiAgSWYgYSBmaWVsZCBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzIDpjb25zdDpgTm9uZWAsIHRoZQogICAgZGVmYXVsdCB2YWx1ZXMgYXJlIGNvcGllZCBmcm9tIHRoZSA6Y29uc3Q6YERlZmF1bHRDb250ZXh0YC4gIElmIHRoZSAqZmxhZ3MqCiAgICBmaWVsZCBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzIDpjb25zdDpgTm9uZWAsIGFsbCBmbGFncyBhcmUgY2xlYXJlZC4KIAotICAgVGhlICpwcmVjKiBmaWVsZCBpcyBhIHBvc2l0aXZlIGludGVnZXIgdGhhdCBzZXRzIHRoZSBwcmVjaXNpb24gZm9yIGFyaXRobWV0aWMKLSAgIG9wZXJhdGlvbnMgaW4gdGhlIGNvbnRleHQuCisgICAqcHJlYyogaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgWzpjb25zdDpgMWAsIDpjb25zdDpgTUFYX1BSRUNgXSB0aGF0IHNldHMKKyAgIHRoZSBwcmVjaXNpb24gZm9yIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBpbiB0aGUgY29udGV4dC4KIAotICAgVGhlICpyb3VuZGluZyogb3B0aW9uIGlzIG9uZSBvZjoKLQotICAgKiA6Y29uc3Q6YFJPVU5EX0NFSUxJTkdgICh0b3dhcmRzIDpjb25zdDpgSW5maW5pdHlgKSwKLSAgICogOmNvbnN0OmBST1VORF9ET1dOYCAodG93YXJkcyB6ZXJvKSwKLSAgICogOmNvbnN0OmBST1VORF9GTE9PUmAgKHRvd2FyZHMgOmNvbnN0OmAtSW5maW5pdHlgKSwKLSAgICogOmNvbnN0OmBST1VORF9IQUxGX0RPV05gICh0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0b3dhcmRzIHplcm8pLAotICAgKiA6Y29uc3Q6YFJPVU5EX0hBTEZfRVZFTmAgKHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIHRvIG5lYXJlc3QgZXZlbiBpbnRlZ2VyKSwKLSAgICogOmNvbnN0OmBST1VORF9IQUxGX1VQYCAodG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgYXdheSBmcm9tIHplcm8pLCBvcgotICAgKiA6Y29uc3Q6YFJPVU5EX1VQYCAoYXdheSBmcm9tIHplcm8pLgotICAgKiA6Y29uc3Q6YFJPVU5EXzA1VVBgIChhd2F5IGZyb20gemVybyBpZiBsYXN0IGRpZ2l0IGFmdGVyIHJvdW5kaW5nIHRvd2FyZHMgemVybwotICAgICB3b3VsZCBoYXZlIGJlZW4gMCBvciA1OyBvdGhlcndpc2UgdG93YXJkcyB6ZXJvKQorICAgVGhlICpyb3VuZGluZyogb3B0aW9uIGlzIG9uZSBvZiB0aGUgY29uc3RhbnRzIGxpc3RlZCBpbiB0aGUgc2VjdGlvbgorICAgYFJvdW5kaW5nIE1vZGVzYF8uCiAKICAgIFRoZSAqdHJhcHMqIGFuZCAqZmxhZ3MqIGZpZWxkcyBsaXN0IGFueSBzaWduYWxzIHRvIGJlIHNldC4gR2VuZXJhbGx5LCBuZXcKICAgIGNvbnRleHRzIHNob3VsZCBvbmx5IHNldCB0cmFwcyBhbmQgbGVhdmUgdGhlIGZsYWdzIGNsZWFyLgogCiAgICBUaGUgKkVtaW4qIGFuZCAqRW1heCogZmllbGRzIGFyZSBpbnRlZ2VycyBzcGVjaWZ5aW5nIHRoZSBvdXRlciBsaW1pdHMgYWxsb3dhYmxlCi0gICBmb3IgZXhwb25lbnRzLgorICAgZm9yIGV4cG9uZW50cy4gKkVtaW4qIG11c3QgYmUgaW4gdGhlIHJhbmdlIFs6Y29uc3Q6YE1JTl9FTUlOYCwgOmNvbnN0OmAwYF0sCisgICAqRW1heCogaW4gdGhlIHJhbmdlIFs6Y29uc3Q6YDBgLCA6Y29uc3Q6YE1BWF9FTUFYYF0uCiAKICAgIFRoZSAqY2FwaXRhbHMqIGZpZWxkIGlzIGVpdGhlciA6Y29uc3Q6YDBgIG9yIDpjb25zdDpgMWAgKHRoZSBkZWZhdWx0KS4gSWYgc2V0IHRvCiAgICA6Y29uc3Q6YDFgLCBleHBvbmVudHMgYXJlIHByaW50ZWQgd2l0aCBhIGNhcGl0YWwgOmNvbnN0OmBFYDsgb3RoZXJ3aXNlLCBhCkBAIC05ODMsNiArMTAzMCwxMiBAQAogCiAgICAgICBSZXNldHMgYWxsIG9mIHRoZSBmbGFncyB0byA6Y29uc3Q6YDBgLgogCisgICAuLiBtZXRob2Q6OiBjbGVhcl90cmFwcygpCisKKyAgICAgIFJlc2V0cyBhbGwgb2YgdGhlIHRyYXBzIHRvIDpjb25zdDpgMGAuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAgICAuLiBtZXRob2Q6OiBjb3B5KCkKIAogICAgICAgUmV0dXJuIGEgZHVwbGljYXRlIG9mIHRoZSBjb250ZXh0LgpAQCAtMTI3NSwxNSArMTMyOCwyMCBAQAogICAgICAgaWRlbnRpdHkgb3BlcmF0aW9uLgogCiAKLSAgIC4uIG1ldGhvZDo6IHBvd2VyKHgsIHlbLCBtb2R1bG9dKQorICAgLi4gbWV0aG9kOjogcG93ZXIoeCwgeSwgbW9kdWxvPU5vbmUpCiAKICAgICAgIFJldHVybiBgYHhgYCB0byB0aGUgcG93ZXIgb2YgYGB5YGAsIHJlZHVjZWQgbW9kdWxvIGBgbW9kdWxvYGAgaWYgZ2l2ZW4uCiAKICAgICAgIFdpdGggdHdvIGFyZ3VtZW50cywgY29tcHV0ZSBgYHgqKnlgYC4gIElmIGBgeGBgIGlzIG5lZ2F0aXZlIHRoZW4gYGB5YGAKICAgICAgIG11c3QgYmUgaW50ZWdyYWwuICBUaGUgcmVzdWx0IHdpbGwgYmUgaW5leGFjdCB1bmxlc3MgYGB5YGAgaXMgaW50ZWdyYWwgYW5kCiAgICAgICB0aGUgcmVzdWx0IGlzIGZpbml0ZSBhbmQgY2FuIGJlIGV4cHJlc3NlZCBleGFjdGx5IGluICdwcmVjaXNpb24nIGRpZ2l0cy4KLSAgICAgIFRoZSByZXN1bHQgc2hvdWxkIGFsd2F5cyBiZSBjb3JyZWN0bHkgcm91bmRlZCwgdXNpbmcgdGhlIHJvdW5kaW5nIG1vZGUgb2YKLSAgICAgIHRoZSBjdXJyZW50IHRocmVhZCdzIGNvbnRleHQuCisgICAgICBUaGUgcm91bmRpbmcgbW9kZSBvZiB0aGUgY29udGV4dCBpcyB1c2VkLiBSZXN1bHRzIGFyZSBhbHdheXMgY29ycmVjdGx5LXJvdW5kZWQKKyAgICAgIGluIHRoZSBQeXRob24gdmVyc2lvbi4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIFRoZSBDIG1vZHVsZSBjb21wdXRlcyA6bWV0aDpgcG93ZXJgIGluIHRlcm1zIG9mIHRoZSBjb3JyZWN0bHktcm91bmRlZAorICAgICAgICAgOm1ldGg6YGV4cGAgYW5kIDptZXRoOmBsbmAgZnVuY3Rpb25zLiBUaGUgcmVzdWx0IGlzIHdlbGwtZGVmaW5lZCBidXQKKyAgICAgICAgIG9ubHkgImFsbW9zdCBhbHdheXMgY29ycmVjdGx5LXJvdW5kZWQiLgogCiAgICAgICBXaXRoIHRocmVlIGFyZ3VtZW50cywgY29tcHV0ZSBgYCh4Kip5KSAlIG1vZHVsb2BgLiAgRm9yIHRoZSB0aHJlZSBhcmd1bWVudAogICAgICAgZm9ybSwgdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMgb24gdGhlIGFyZ3VtZW50cyBob2xkOgpAQCAtMTM3MSw2ICsxNDI5LDY5IEBACiAKIC4uICUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJQogCisuLiBfZGVjaW1hbC1yb3VuZGluZy1tb2RlczoKKworQ29uc3RhbnRzCistLS0tLS0tLS0KKworVGhlIGNvbnN0YW50cyBpbiB0aGlzIHNlY3Rpb24gYXJlIG9ubHkgcmVsZXZhbnQgZm9yIHRoZSBDIG1vZHVsZS4gVGhleQorYXJlIGFsc28gaW5jbHVkZWQgaW4gdGhlIHB1cmUgUHl0aG9uIHZlcnNpb24gZm9yIGNvbXBhdGliaWxpdHkuCisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAzMi1iaXQgICAgICAgIHwgICAgICAgICAgICA2NC1iaXQgICAgICAgICAgICAgfAorKz09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKK3wgLi4gZGF0YTo6IE1BWF9QUkVDICB8IDpjb25zdDpgNDI1MDAwMDAwYCAgfCA6Y29uc3Q6YDk5OTk5OTk5OTk5OTk5OTk5OWAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAuLiBkYXRhOjogTUFYX0VNQVggIHwgOmNvbnN0OmA0MjUwMDAwMDBgICB8IDpjb25zdDpgOTk5OTk5OTk5OTk5OTk5OTk5YCAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IC4uIGRhdGE6OiBNSU5fRU1JTiAgfCA6Y29uc3Q6YC00MjUwMDAwMDBgIHwgOmNvbnN0OmAtOTk5OTk5OTk5OTk5OTk5OTk5YCAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgLi4gZGF0YTo6IE1JTl9FVElOWSB8IDpjb25zdDpgLTg0OTk5OTk5OWAgfCA6Y29uc3Q6YC0xOTk5OTk5OTk5OTk5OTk5OTk3YCB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisKKy4uIGRhdGE6OiBIQVZFX1RIUkVBRFMKKworICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgVHJ1ZS4gSWYgUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkcywgdGhlCisgICBDIHZlcnNpb24gYXV0b21hdGljYWxseSBkaXNhYmxlcyB0aGUgZXhwZW5zaXZlIHRocmVhZCBsb2NhbCBjb250ZXh0CisgICBtYWNoaW5lcnkuIEluIHRoaXMgY2FzZSwgdGhlIHZhbHVlIGlzIEZhbHNlLgorCitSb3VuZGluZyBtb2RlcworLS0tLS0tLS0tLS0tLS0KKworLi4gZGF0YTo6IFJPVU5EX0NFSUxJTkcKKworICAgUm91bmQgdG93YXJkcyA6Y29uc3Q6YEluZmluaXR5YC4KKworLi4gZGF0YTo6IFJPVU5EX0RPV04KKworICAgUm91bmQgdG93YXJkcyB6ZXJvLgorCisuLiBkYXRhOjogUk9VTkRfRkxPT1IKKworICAgUm91bmQgdG93YXJkcyA6Y29uc3Q6YC1JbmZpbml0eWAuCisKKy4uIGRhdGE6OiBST1VORF9IQUxGX0RPV04KKworICAgUm91bmQgdG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgdG93YXJkcyB6ZXJvLgorCisuLiBkYXRhOjogUk9VTkRfSEFMRl9FVkVOCisKKyAgIFJvdW5kIHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIHRvIG5lYXJlc3QgZXZlbiBpbnRlZ2VyLgorCisuLiBkYXRhOjogUk9VTkRfSEFMRl9VUAorCisgICBSb3VuZCB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyBhd2F5IGZyb20gemVyby4KKworLi4gZGF0YTo6IFJPVU5EX1VQCisKKyAgIFJvdW5kIGF3YXkgZnJvbSB6ZXJvLgorCisuLiBkYXRhOjogUk9VTkRfMDVVUAorCisgICBSb3VuZCBhd2F5IGZyb20gemVybyBpZiBsYXN0IGRpZ2l0IGFmdGVyIHJvdW5kaW5nIHRvd2FyZHMgemVybyB3b3VsZCBoYXZlCisgICBiZWVuIDAgb3IgNTsgb3RoZXJ3aXNlIHJvdW5kIHRvd2FyZHMgemVyby4KKwogCiAuLiBfZGVjaW1hbC1zaWduYWxzOgogCkBAIC0xNDM1LDcgKzE1NTYsNiBAQAogICAgICAgSW5maW5pdHkgLyBJbmZpbml0eQogICAgICAgeCAlIDAKICAgICAgIEluZmluaXR5ICUgeAotICAgICAgeC5fcmVzY2FsZSggbm9uLWludGVnZXIgKQogICAgICAgc3FydCgteCkgYW5kIHggPiAwCiAgICAgICAwICoqIDAKICAgICAgIHggKiogKG5vbi1pbnRlZ2VyKQpAQCAtMTQ3OCw2ICsxNTk4LDIzIEBACiAgICBPY2N1cnMgd2hlbiBhIHN1Ym5vcm1hbCByZXN1bHQgaXMgcHVzaGVkIHRvIHplcm8gYnkgcm91bmRpbmcuIDpjbGFzczpgSW5leGFjdGAKICAgIGFuZCA6Y2xhc3M6YFN1Ym5vcm1hbGAgYXJlIGFsc28gc2lnbmFsZWQuCiAKKworLi4gY2xhc3M6OiBGbG9hdE9wZXJhdGlvbgorCisgICAgRW5hYmxlIHN0cmljdGVyIHNlbWFudGljcyBmb3IgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMuCisKKyAgICBJZiB0aGUgc2lnbmFsIGlzIG5vdCB0cmFwcGVkIChkZWZhdWx0KSwgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMgaXMKKyAgICBwZXJtaXR0ZWQgaW4gdGhlIDpjbGFzczpgfmRlY2ltYWwuRGVjaW1hbGAgY29uc3RydWN0b3IsCisgICAgOm1ldGg6YH5kZWNpbWFsLkNvbnRleHQuY3JlYXRlX2RlY2ltYWxgIGFuZCBhbGwgY29tcGFyaXNvbiBvcGVyYXRvcnMuCisgICAgQm90aCBjb252ZXJzaW9uIGFuZCBjb21wYXJpc29ucyBhcmUgZXhhY3QuIEFueSBvY2N1cnJlbmNlIG9mIGEgbWl4ZWQKKyAgICBvcGVyYXRpb24gaXMgc2lsZW50bHkgcmVjb3JkZWQgYnkgc2V0dGluZyA6ZXhjOmBGbG9hdE9wZXJhdGlvbmAgaW4gdGhlCisgICAgY29udGV4dCBmbGFncy4gRXhwbGljaXQgY29udmVyc2lvbnMgd2l0aCA6bWV0aDpgfmRlY2ltYWwuRGVjaW1hbC5mcm9tX2Zsb2F0YAorICAgIG9yIDptZXRoOmB+ZGVjaW1hbC5Db250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXRgIGRvIG5vdCBzZXQgdGhlIGZsYWcuCisKKyAgICBPdGhlcndpc2UgKHRoZSBzaWduYWwgaXMgdHJhcHBlZCksIG9ubHkgZXF1YWxpdHkgY29tcGFyaXNvbnMgYW5kIGV4cGxpY2l0CisgICAgY29udmVyc2lvbnMgYXJlIHNpbGVudC4gQWxsIG90aGVyIG1peGVkIG9wZXJhdGlvbnMgcmFpc2UgOmV4YzpgRmxvYXRPcGVyYXRpb25gLgorCisKIFRoZSBmb2xsb3dpbmcgdGFibGUgc3VtbWFyaXplcyB0aGUgaGllcmFyY2h5IG9mIHNpZ25hbHM6OgogCiAgICBleGNlcHRpb25zLkFyaXRobWV0aWNFcnJvcihleGNlcHRpb25zLkV4Y2VwdGlvbikKQEAgLTE0OTAsMTAgKzE2MjcsMTIgQEAKICAgICAgICAgICAgSW52YWxpZE9wZXJhdGlvbgogICAgICAgICAgICBSb3VuZGVkCiAgICAgICAgICAgIFN1Ym5vcm1hbAorICAgICAgICAgICBGbG9hdE9wZXJhdGlvbihEZWNpbWFsRXhjZXB0aW9uLCBleGNlcHRpb25zLlR5cGVFcnJvcikKIAogLi4gJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlCiAKIAorCiAuLiBfZGVjaW1hbC1ub3RlczoKIAogRmxvYXRpbmcgUG9pbnQgTm90ZXMKQEAgLTE2MDMsNyArMTc0Miw3IEBACiB0aGUgZm9sbG93aW5nIGNhbGN1bGF0aW9uIHJldHVybnMgYSB2YWx1ZSBlcXVhbCB0byB6ZXJvOgogCiAgICA+Pj4gMSAvIERlY2ltYWwoJ0luZmluaXR5JykKLSAgIERlY2ltYWwoJzBFLTEwMDAwMDAwMjYnKQorICAgRGVjaW1hbCgnMEUtMTAwMDAyNicpCiAKIC4uICUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJQogCkBAIC0xNjE1LDcgKzE3NTQsNyBAQAogCiBUaGUgOmZ1bmM6YGdldGNvbnRleHRgIGZ1bmN0aW9uIGFjY2Vzc2VzIGEgZGlmZmVyZW50IDpjbGFzczpgQ29udGV4dGAgb2JqZWN0IGZvcgogZWFjaCB0aHJlYWQuICBIYXZpbmcgc2VwYXJhdGUgdGhyZWFkIGNvbnRleHRzIG1lYW5zIHRoYXQgdGhyZWFkcyBtYXkgbWFrZQotY2hhbmdlcyAoc3VjaCBhcyBgYGdldGNvbnRleHQucHJlYz0xMGBgKSB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggb3RoZXIgdGhyZWFkcy4KK2NoYW5nZXMgKHN1Y2ggYXMgYGBnZXRjb250ZXh0KCkucHJlYz0xMGBgKSB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggb3RoZXIgdGhyZWFkcy4KIAogTGlrZXdpc2UsIHRoZSA6ZnVuYzpgc2V0Y29udGV4dGAgZnVuY3Rpb24gYXV0b21hdGljYWxseSBhc3NpZ25zIGl0cyB0YXJnZXQgdG8KIHRoZSBjdXJyZW50IHRocmVhZC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RlcGdyYXBoLW91dHB1dC5wbmcgYi9Eb2MvbGlicmFyeS9kZXBncmFwaC1vdXRwdXQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2MGJiMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9kZXBncmFwaC1vdXRwdXQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RldmVsb3BtZW50LnJzdCBiL0RvYy9saWJyYXJ5L2RldmVsb3BtZW50LnJzdAppbmRleCBjODIyZTA4Li4yMzY4NzY5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kZXZlbG9wbWVudC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGV2ZWxvcG1lbnQucnN0CkBAIC0xOSw1ICsxOSw4IEBACiAgICBweWRvYy5yc3QKICAgIGRvY3Rlc3QucnN0CiAgICB1bml0dGVzdC5yc3QKKyAgIHVuaXR0ZXN0Lm1vY2sucnN0CisgICB1bml0dGVzdC5tb2NrLWV4YW1wbGVzLnJzdAogICAgMnRvMy5yc3QKICAgIHRlc3QucnN0CisgICB2ZW52LnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGlmZmxpYi5yc3QgYi9Eb2MvbGlicmFyeS9kaWZmbGliLnJzdAppbmRleCBiZGMzN2IzLi44MzZlMjQwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kaWZmbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kaWZmbGliLnJzdApAQCAtNzUyLDggKzc1Miw4IEBACiAgICAgICAgIyB3ZSdyZSBwYXNzaW5nIHRoZXNlIGFzIGFyZ3VtZW50cyB0byB0aGUgZGlmZiBmdW5jdGlvbgogICAgICAgIGZyb21kYXRlID0gdGltZS5jdGltZShvcy5zdGF0KGZyb21maWxlKS5zdF9tdGltZSkKICAgICAgICB0b2RhdGUgPSB0aW1lLmN0aW1lKG9zLnN0YXQodG9maWxlKS5zdF9tdGltZSkKLSAgICAgICBmcm9tbGluZXMgPSBvcGVuKGZyb21maWxlLCAnVScpLnJlYWRsaW5lcygpCi0gICAgICAgdG9saW5lcyA9IG9wZW4odG9maWxlLCAnVScpLnJlYWRsaW5lcygpCisgICAgICAgd2l0aCBvcGVuKGZyb21saW5lcykgYXMgZnJvbWYsIG9wZW4odG9maWxlKSBhcyB0b2Y6CisgICAgICAgICAgIGZyb21saW5lcywgdG9saW5lcyA9IGxpc3QoZnJvbWYpLCBsaXN0KHRvZikKIAogICAgICAgIGlmIG9wdGlvbnMudToKICAgICAgICAgICAgZGlmZiA9IGRpZmZsaWIudW5pZmllZF9kaWZmKGZyb21saW5lcywgdG9saW5lcywgZnJvbWZpbGUsIHRvZmlsZSwKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Rpcy5yc3QgYi9Eb2MvbGlicmFyeS9kaXMucnN0CmluZGV4IDEwOGNkYTcuLjQzMzlmNTUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Rpcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGlzLnJzdApAQCAtMTcxLDExICsxNzEsNiBAQAogCiAqKkdlbmVyYWwgaW5zdHJ1Y3Rpb25zKioKIAotLi4gb3Bjb2RlOjogU1RPUF9DT0RFCi0KLSAgIEluZGljYXRlcyBlbmQtb2YtY29kZSB0byB0aGUgY29tcGlsZXIsIG5vdCB1c2VkIGJ5IHRoZSBpbnRlcnByZXRlci4KLQotCiAuLiBvcGNvZGU6OiBOT1AKIAogICAgRG8gbm90aGluZyBjb2RlLiAgVXNlZCBhcyBhIHBsYWNlaG9sZGVyIGJ5IHRoZSBieXRlY29kZSBvcHRpbWl6ZXIuCkBAIC00MzYsNiArNDMxLDEzIEBACiAgICBQb3BzIGBgVE9TYGAgYW5kIHlpZWxkcyBpdCBmcm9tIGEgOnRlcm06YGdlbmVyYXRvcmAuCiAKIAorLi4gb3Bjb2RlOjogWUlFTERfRlJPTQorCisgICBQb3BzIGBgVE9TYGAgYW5kIGRlbGVnYXRlcyB0byBpdCBhcyBhIHN1Yml0ZXJhdG9yIGZyb20gYSA6dGVybTpgZ2VuZXJhdG9yYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gb3Bjb2RlOjogSU1QT1JUX1NUQVIKIAogICAgTG9hZHMgYWxsIHN5bWJvbHMgbm90IHN0YXJ0aW5nIHdpdGggYGAnXydgYCBkaXJlY3RseSBmcm9tIHRoZSBtb2R1bGUgVE9TIHRvIHRoZQpAQCAtNzUyLDE3ICs3NTQsMTkgQEAKIAogLi4gb3Bjb2RlOjogTUFLRV9GVU5DVElPTiAoYXJnYykKIAotICAgUHVzaGVzIGEgbmV3IGZ1bmN0aW9uIG9iamVjdCBvbiB0aGUgc3RhY2suICBUT1MgaXMgdGhlIGNvZGUgYXNzb2NpYXRlZCB3aXRoIHRoZQotICAgZnVuY3Rpb24uICBUaGUgZnVuY3Rpb24gb2JqZWN0IGlzIGRlZmluZWQgdG8gaGF2ZSAqYXJnYyogZGVmYXVsdCBwYXJhbWV0ZXJzLAotICAgd2hpY2ggYXJlIGZvdW5kIGJlbG93IFRPUy4KKyAgIFB1c2hlcyBhIG5ldyBmdW5jdGlvbiBvYmplY3Qgb24gdGhlIHN0YWNrLiAgVE9TIGlzIHRoZQorICAgOnRlcm06YHF1YWxpZmllZCBuYW1lYCBvZiB0aGUgZnVuY3Rpb247IFRPUzEgaXMgdGhlIGNvZGUgYXNzb2NpYXRlZCB3aXRoCisgICB0aGUgZnVuY3Rpb24uICBUaGUgZnVuY3Rpb24gb2JqZWN0IGlzIGRlZmluZWQgdG8gaGF2ZSAqYXJnYyogZGVmYXVsdCBwYXJhbWV0ZXJzLAorICAgd2hpY2ggYXJlIGZvdW5kIGJlbG93IFRPUzEuCiAKIAogLi4gb3Bjb2RlOjogTUFLRV9DTE9TVVJFIChhcmdjKQogCiAgICBDcmVhdGVzIGEgbmV3IGZ1bmN0aW9uIG9iamVjdCwgc2V0cyBpdHMgKl9fY2xvc3VyZV9fKiBzbG90LCBhbmQgcHVzaGVzIGl0IG9uCi0gICB0aGUgc3RhY2suICBUT1MgaXMgdGhlIGNvZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBmdW5jdGlvbiwgVE9TMSB0aGUgdHVwbGUKLSAgIGNvbnRhaW5pbmcgY2VsbHMgZm9yIHRoZSBjbG9zdXJlJ3MgZnJlZSB2YXJpYWJsZXMuICBUaGUgZnVuY3Rpb24gYWxzbyBoYXMKLSAgICphcmdjKiBkZWZhdWx0IHBhcmFtZXRlcnMsIHdoaWNoIGFyZSBmb3VuZCBiZWxvdyB0aGUgY2VsbHMuCisgICB0aGUgc3RhY2suICBUT1MgaXMgdGhlIDp0ZXJtOmBxdWFsaWZpZWQgbmFtZWAgb2YgdGhlIGZ1bmN0aW9uLCBUT1MxIGlzIHRoZQorICAgY29kZSBhc3NvY2lhdGVkIHdpdGggdGhlIGZ1bmN0aW9uLCBhbmQgVE9TMiBpcyB0aGUgdHVwbGUgY29udGFpbmluZyBjZWxscyBmb3IKKyAgIHRoZSBjbG9zdXJlJ3MgZnJlZSB2YXJpYWJsZXMuICBUaGUgZnVuY3Rpb24gYWxzbyBoYXMgKmFyZ2MqIGRlZmF1bHQgcGFyYW1ldGVycywKKyAgIHdoaWNoIGFyZSBmb3VuZCBiZWxvdyB0aGUgY2VsbHMuCiAKIAogLi4gb3Bjb2RlOjogQlVJTERfU0xJQ0UgKGFyZ2MpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kaXN0dXRpbHMucnN0IGIvRG9jL2xpYnJhcnkvZGlzdHV0aWxzLnJzdAppbmRleCAyMzhiNzlkLi4xMWEyOTQ5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kaXN0dXRpbHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Rpc3R1dGlscy5yc3QKQEAgLTEyLDE4ICsxMiwxNCBAQAogMTAwJS1wdXJlIFB5dGhvbiwgb3IgbWF5IGJlIGV4dGVuc2lvbiBtb2R1bGVzIHdyaXR0ZW4gaW4gQywgb3IgbWF5IGJlCiBjb2xsZWN0aW9ucyBvZiBQeXRob24gcGFja2FnZXMgd2hpY2ggaW5jbHVkZSBtb2R1bGVzIGNvZGVkIGluIGJvdGggUHl0aG9uIGFuZCBDLgogCi1UaGlzIHBhY2thZ2UgaXMgZGlzY3Vzc2VkIGluIHR3byBzZXBhcmF0ZSBjaGFwdGVyczoKIAorVXNlciBkb2N1bWVudGF0aW9uIGFuZCBBUEkgcmVmZXJlbmNlIGFyZSBwcm92aWRlZCBpbiBhbm90aGVyIGRvY3VtZW50OgogCiAuLiBzZWVhbHNvOjoKIAogICAgOnJlZjpgZGlzdHV0aWxzLWluZGV4YAogICAgICAgVGhlIG1hbnVhbCBmb3IgZGV2ZWxvcGVycyBhbmQgcGFja2FnZXJzIG9mIFB5dGhvbiBtb2R1bGVzLiAgVGhpcyBkZXNjcmliZXMKICAgICAgIGhvdyB0byBwcmVwYXJlIDptb2Q6YGRpc3R1dGlsc2BcIC1iYXNlZCBwYWNrYWdlcyBzbyB0aGF0IHRoZXkgbWF5IGJlCi0gICAgICBlYXNpbHkgaW5zdGFsbGVkIGludG8gYW4gZXhpc3RpbmcgUHl0aG9uIGluc3RhbGxhdGlvbi4KLQotICAgOnJlZjpgaW5zdGFsbC1pbmRleGAKLSAgICAgIEFuICJhZG1pbmlzdHJhdG9ycyIgbWFudWFsIHdoaWNoIGluY2x1ZGVzIGluZm9ybWF0aW9uIG9uIGluc3RhbGxpbmcKLSAgICAgIG1vZHVsZXMgaW50byBhbiBleGlzdGluZyBQeXRob24gaW5zdGFsbGF0aW9uLiAgWW91IGRvIG5vdCBuZWVkIHRvIGJlIGEKLSAgICAgIFB5dGhvbiBwcm9ncmFtbWVyIHRvIHJlYWQgdGhpcyBtYW51YWwuCi0KKyAgICAgIGVhc2lseSBpbnN0YWxsZWQgaW50byBhbiBleGlzdGluZyBQeXRob24gaW5zdGFsbGF0aW9uLiAgSWYgYWxzbyBjb250YWlucworICAgICAgaW5zdHJ1Y3Rpb25zIGZvciBlbmQtdXNlcnMgd2FudGluZyB0byBpbnN0YWxsIGEgZGlzdHV0aWxzLWJhc2VkIHBhY2thZ2UsCisgICAgICA6cmVmOmBpbnN0YWxsLWluZGV4YC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RvY3Rlc3QucnN0IGIvRG9jL2xpYnJhcnkvZG9jdGVzdC5yc3QKaW5kZXggZWM4ZWRiZS4uMjIyYzcxOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZG9jdGVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZG9jdGVzdC5yc3QKQEAgLTMyMCw3ICszMjAsOCBAQAogICBUYWJzIGluIG91dHB1dCBnZW5lcmF0ZWQgYnkgdGhlIHRlc3RlZCBjb2RlIGFyZSBub3QgbW9kaWZpZWQuICBCZWNhdXNlIGFueQogICBoYXJkIHRhYnMgaW4gdGhlIHNhbXBsZSBvdXRwdXQgKmFyZSogZXhwYW5kZWQsIHRoaXMgbWVhbnMgdGhhdCBpZiB0aGUgY29kZQogICBvdXRwdXQgaW5jbHVkZXMgaGFyZCB0YWJzLCB0aGUgb25seSB3YXkgdGhlIGRvY3Rlc3QgY2FuIHBhc3MgaXMgaWYgdGhlCi0gIDpjb25zdDpgTk9STUFMSVpFX1dISVRFU1BBQ0VgIG9wdGlvbiBvciBkaXJlY3RpdmUgaXMgaW4gZWZmZWN0LgorICA6Y29uc3Q6YE5PUk1BTElaRV9XSElURVNQQUNFYCBvcHRpb24gb3IgOnJlZjpgZGlyZWN0aXZlIDxkb2N0ZXN0LWRpcmVjdGl2ZXM+YAorICBpcyBpbiBlZmZlY3QuCiAgIEFsdGVybmF0aXZlbHksIHRoZSB0ZXN0IGNhbiBiZSByZXdyaXR0ZW4gdG8gY2FwdHVyZSB0aGUgb3V0cHV0IGFuZCBjb21wYXJlIGl0CiAgIHRvIGFuIGV4cGVjdGVkIHZhbHVlIGFzIHBhcnQgb2YgdGhlIHRlc3QuICBUaGlzIGhhbmRsaW5nIG9mIHRhYnMgaW4gdGhlCiAgIHNvdXJjZSB3YXMgYXJyaXZlZCBhdCB0aHJvdWdoIHRyaWFsIGFuZCBlcnJvciwgYW5kIGhhcyBwcm92ZW4gdG8gYmUgdGhlIGxlYXN0CkBAIC00ODUsMTUgKzQ4NiwxNiBAQAogICAgICBTeW50YXhFcnJvcjogaW52YWxpZCBzeW50YXgKIAogCisuLiBfb3B0aW9uLWZsYWdzLWFuZC1kaXJlY3RpdmVzOgogLi4gX2RvY3Rlc3Qtb3B0aW9uczoKIAotT3B0aW9uIEZsYWdzIGFuZCBEaXJlY3RpdmVzCi1eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KK09wdGlvbiBGbGFncworXl5eXl5eXl5eXl5eCiAKIEEgbnVtYmVyIG9mIG9wdGlvbiBmbGFncyBjb250cm9sIHZhcmlvdXMgYXNwZWN0cyBvZiBkb2N0ZXN0J3MgYmVoYXZpb3IuCiBTeW1ib2xpYyBuYW1lcyBmb3IgdGhlIGZsYWdzIGFyZSBzdXBwbGllZCBhcyBtb2R1bGUgY29uc3RhbnRzLCB3aGljaCBjYW4gYmUKIG9yJ2VkIHRvZ2V0aGVyIGFuZCBwYXNzZWQgdG8gdmFyaW91cyBmdW5jdGlvbnMuICBUaGUgbmFtZXMgY2FuIGFsc28gYmUgdXNlZCBpbgotZG9jdGVzdCBkaXJlY3RpdmVzIChzZWUgYmVsb3cpLgorOnJlZjpgZG9jdGVzdCBkaXJlY3RpdmVzIDxkb2N0ZXN0LWRpcmVjdGl2ZXM+YC4KIAogVGhlIGZpcnN0IGdyb3VwIG9mIG9wdGlvbnMgZGVmaW5lIHRlc3Qgc2VtYW50aWNzLCBjb250cm9sbGluZyBhc3BlY3RzIG9mIGhvdwogZG9jdGVzdCBkZWNpZGVzIHdoZXRoZXIgYWN0dWFsIG91dHB1dCBtYXRjaGVzIGFuIGV4YW1wbGUncyBleHBlY3RlZCBvdXRwdXQ6CkBAIC01NDcsMTQgKzU0OSwxNCBAQAogICAgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQuCiAKICAgIEl0IHdpbGwgYWxzbyBpZ25vcmUgdGhlIG1vZHVsZSBuYW1lIHVzZWQgaW4gUHl0aG9uIDMgZG9jdGVzdCByZXBvcnRzLiBIZW5jZQotICAgYm90aCB0aGVzZSB2YXJpYXRpb25zIHdpbGwgd29yayByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHRlc3QgaXMgcnVuIHVuZGVyCi0gICBQeXRob24gMi43IG9yIFB5dGhvbiAzLjIgKG9yIGxhdGVyIHZlcnNpb25zKToKKyAgIGJvdGggb2YgdGhlc2UgdmFyaWF0aW9ucyB3aWxsIHdvcmsgd2l0aCB0aGUgZmxhZyBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YKKyAgIHdoZXRoZXIgdGhlIHRlc3QgaXMgcnVuIHVuZGVyIFB5dGhvbiAyLjcgb3IgUHl0aG9uIDMuMiAob3IgbGF0ZXIgdmVyc2lvbnMpOjoKIAotICAgICAgPj4+IHJhaXNlIEN1c3RvbUVycm9yKCdtZXNzYWdlJykgI2RvY3Rlc3Q6ICtJR05PUkVfRVhDRVBUSU9OX0RFVEFJTAorICAgICAgPj4+IHJhaXNlIEN1c3RvbUVycm9yKCdtZXNzYWdlJykKICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIEN1c3RvbUVycm9yOiBtZXNzYWdlCiAKLSAgICAgID4+PiByYWlzZSBDdXN0b21FcnJvcignbWVzc2FnZScpICNkb2N0ZXN0OiArSUdOT1JFX0VYQ0VQVElPTl9ERVRBSUwKKyAgICAgID4+PiByYWlzZSBDdXN0b21FcnJvcignbWVzc2FnZScpCiAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICBteV9tb2R1bGUuQ3VzdG9tRXJyb3I6IG1lc3NhZ2UKIApAQCAtNTY0LDE1ICs1NjYsMTYgQEAKICAgIGV4Y2VwdGlvbiBuYW1lLiBVc2luZyA6Y29uc3Q6YElHTk9SRV9FWENFUFRJT05fREVUQUlMYCBhbmQgdGhlIGRldGFpbHMKICAgIGZyb20gUHl0aG9uIDIuMyBpcyBhbHNvIHRoZSBvbmx5IGNsZWFyIHdheSB0byB3cml0ZSBhIGRvY3Rlc3QgdGhhdCBkb2Vzbid0CiAgICBjYXJlIGFib3V0IHRoZSBleGNlcHRpb24gZGV0YWlsIHlldCBjb250aW51ZXMgdG8gcGFzcyB1bmRlciBQeXRob24gMi4zIG9yCi0gICBlYXJsaWVyICh0aG9zZSByZWxlYXNlcyBkbyBub3Qgc3VwcG9ydCBkb2N0ZXN0IGRpcmVjdGl2ZXMgYW5kIGlnbm9yZSB0aGVtCi0gICBhcyBpcnJlbGV2YW50IGNvbW1lbnRzKS4gRm9yIGV4YW1wbGUsIDo6CisgICBlYXJsaWVyICh0aG9zZSByZWxlYXNlcyBkbyBub3Qgc3VwcG9ydCA6cmVmOmBkb2N0ZXN0IGRpcmVjdGl2ZXMKKyAgIDxkb2N0ZXN0LWRpcmVjdGl2ZXM+YCBhbmQgaWdub3JlIHRoZW0gYXMgaXJyZWxldmFudCBjb21tZW50cykuIEZvciBleGFtcGxlOjoKIAotICAgICAgPj4+ICgxLCAyKVszXSA9ICdtb28nICNkb2N0ZXN0OiArSUdOT1JFX0VYQ0VQVElPTl9ERVRBSUwKKyAgICAgID4+PiAoMSwgMilbM10gPSAnbW9vJwogICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/CiAgICAgICBUeXBlRXJyb3I6IG9iamVjdCBkb2Vzbid0IHN1cHBvcnQgaXRlbSBhc3NpZ25tZW50CiAKLSAgIHBhc3NlcyB1bmRlciBQeXRob24gMi4zIGFuZCBsYXRlciBQeXRob24gdmVyc2lvbnMsIGV2ZW4gdGhvdWdoIHRoZSBkZXRhaWwKKyAgIHBhc3NlcyB1bmRlciBQeXRob24gMi4zIGFuZCBsYXRlciBQeXRob24gdmVyc2lvbnMgd2l0aCB0aGUgZmxhZyBzcGVjaWZpZWQsCisgICBldmVuIHRob3VnaCB0aGUgZGV0YWlsCiAgICBjaGFuZ2VkIGluIFB5dGhvbiAyLjQgdG8gc2F5ICJkb2VzIG5vdCIgaW5zdGVhZCBvZiAiZG9lc24ndCIuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCkBAIC02MzQsOSArNjM3LDMwIEBACiAKICAgIEEgYml0bWFzayBvcidpbmcgdG9nZXRoZXIgYWxsIHRoZSByZXBvcnRpbmcgZmxhZ3MgYWJvdmUuCiAKLSJEb2N0ZXN0IGRpcmVjdGl2ZXMiIG1heSBiZSB1c2VkIHRvIG1vZGlmeSB0aGUgb3B0aW9uIGZsYWdzIGZvciBpbmRpdmlkdWFsCi1leGFtcGxlcy4gIERvY3Rlc3QgZGlyZWN0aXZlcyBhcmUgZXhwcmVzc2VkIGFzIGEgc3BlY2lhbCBQeXRob24gY29tbWVudAotZm9sbG93aW5nIGFuIGV4YW1wbGUncyBzb3VyY2UgY29kZToKKworVGhlcmUgaXMgYWxzbyBhIHdheSB0byByZWdpc3RlciBuZXcgb3B0aW9uIGZsYWcgbmFtZXMsIHRob3VnaCB0aGlzIGlzbid0Cit1c2VmdWwgdW5sZXNzIHlvdSBpbnRlbmQgdG8gZXh0ZW5kIDptb2Q6YGRvY3Rlc3RgIGludGVybmFscyB2aWEgc3ViY2xhc3Npbmc6CisKKworLi4gZnVuY3Rpb246OiByZWdpc3Rlcl9vcHRpb25mbGFnKG5hbWUpCisKKyAgIENyZWF0ZSBhIG5ldyBvcHRpb24gZmxhZyB3aXRoIGEgZ2l2ZW4gbmFtZSwgYW5kIHJldHVybiB0aGUgbmV3IGZsYWcncyBpbnRlZ2VyCisgICB2YWx1ZS4gIDpmdW5jOmByZWdpc3Rlcl9vcHRpb25mbGFnYCBjYW4gYmUgdXNlZCB3aGVuIHN1YmNsYXNzaW5nCisgICA6Y2xhc3M6YE91dHB1dENoZWNrZXJgIG9yIDpjbGFzczpgRG9jVGVzdFJ1bm5lcmAgdG8gY3JlYXRlIG5ldyBvcHRpb25zIHRoYXQgYXJlCisgICBzdXBwb3J0ZWQgYnkgeW91ciBzdWJjbGFzc2VzLiAgOmZ1bmM6YHJlZ2lzdGVyX29wdGlvbmZsYWdgIHNob3VsZCBhbHdheXMgYmUKKyAgIGNhbGxlZCB1c2luZyB0aGUgZm9sbG93aW5nIGlkaW9tOjoKKworICAgICAgTVlfRkxBRyA9IHJlZ2lzdGVyX29wdGlvbmZsYWcoJ01ZX0ZMQUcnKQorCisKKy4uIF9kb2N0ZXN0LWRpcmVjdGl2ZXM6CisKK0RpcmVjdGl2ZXMKK15eXl5eXl5eXl4KKworRG9jdGVzdCBkaXJlY3RpdmVzIG1heSBiZSB1c2VkIHRvIG1vZGlmeSB0aGUgOnJlZjpgb3B0aW9uIGZsYWdzCis8ZG9jdGVzdC1vcHRpb25zPmAgZm9yIGFuIGluZGl2aWR1YWwgZXhhbXBsZS4gIERvY3Rlc3QgZGlyZWN0aXZlcyBhcmUKK3NwZWNpYWwgUHl0aG9uIGNvbW1lbnRzIGZvbGxvd2luZyBhbiBleGFtcGxlJ3Mgc291cmNlIGNvZGU6CiAKIC4uIHByb2R1Y3Rpb25saXN0OjogZG9jdGVzdAogICAgZGlyZWN0aXZlOiAiIyIgImRvY3Rlc3Q6IiBgZGlyZWN0aXZlX29wdGlvbnNgCkBAIC02OTMsMjAgKzcxNyw2IEBACiBmdW5jdGlvbnMgdGhhdCBydW4gZG9jdGVzdHMsIGVzdGFibGlzaGluZyBkaWZmZXJlbnQgZGVmYXVsdHMuICBJbiBzdWNoIGNhc2VzLAogZGlzYWJsaW5nIGFuIG9wdGlvbiB2aWEgYGAtYGAgaW4gYSBkaXJlY3RpdmUgY2FuIGJlIHVzZWZ1bC4KIAotVGhlcmUncyBhbHNvIGEgd2F5IHRvIHJlZ2lzdGVyIG5ldyBvcHRpb24gZmxhZyBuYW1lcywgYWx0aG91Z2ggdGhpcyBpc24ndCB1c2VmdWwKLXVubGVzcyB5b3UgaW50ZW5kIHRvIGV4dGVuZCA6bW9kOmBkb2N0ZXN0YCBpbnRlcm5hbHMgdmlhIHN1YmNsYXNzaW5nOgotCi0KLS4uIGZ1bmN0aW9uOjogcmVnaXN0ZXJfb3B0aW9uZmxhZyhuYW1lKQotCi0gICBDcmVhdGUgYSBuZXcgb3B0aW9uIGZsYWcgd2l0aCBhIGdpdmVuIG5hbWUsIGFuZCByZXR1cm4gdGhlIG5ldyBmbGFnJ3MgaW50ZWdlcgotICAgdmFsdWUuICA6ZnVuYzpgcmVnaXN0ZXJfb3B0aW9uZmxhZ2AgY2FuIGJlIHVzZWQgd2hlbiBzdWJjbGFzc2luZwotICAgOmNsYXNzOmBPdXRwdXRDaGVja2VyYCBvciA6Y2xhc3M6YERvY1Rlc3RSdW5uZXJgIHRvIGNyZWF0ZSBuZXcgb3B0aW9ucyB0aGF0IGFyZQotICAgc3VwcG9ydGVkIGJ5IHlvdXIgc3ViY2xhc3Nlcy4gIDpmdW5jOmByZWdpc3Rlcl9vcHRpb25mbGFnYCBzaG91bGQgYWx3YXlzIGJlCi0gICBjYWxsZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBpZGlvbTo6Ci0KLSAgICAgIE1ZX0ZMQUcgPSByZWdpc3Rlcl9vcHRpb25mbGFnKCdNWV9GTEFHJykKLQogCiAuLiBfZG9jdGVzdC13YXJuaW5nczoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuZXJyb3JzLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QKaW5kZXggZDhmMzMwZi4uOWYwYTllMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwuZXJyb3JzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5lcnJvcnMucnN0CkBAIC03MywxNyArNzMsMzggQEAKICogOmNsYXNzOmBTdGFydEJvdW5kYXJ5Tm90Rm91bmREZWZlY3RgIC0tIFRoZSBzdGFydCBib3VuZGFyeSBjbGFpbWVkIGluIHRoZQogICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgd2FzIG5ldmVyIGZvdW5kLgogCisqIDpjbGFzczpgQ2xvc2VCb3VuZGFyeU5vdEZvdW5kRGVmZWN0YCAtLSBBIHN0YXJ0IGJvdW5kYXJ5IHdhcyBmb3VuZCwgYnV0CisgIG5vIGNvcnJlc3BvbmRpbmcgY2xvc2UgYm91bmRhcnkgd2FzIGV2ZXIgZm91bmQuCisKKyAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKICogOmNsYXNzOmBGaXJzdEhlYWRlckxpbmVJc0NvbnRpbnVhdGlvbkRlZmVjdGAgLS0gVGhlIG1lc3NhZ2UgaGFkIGEgY29udGludWF0aW9uCiAgIGxpbmUgYXMgaXRzIGZpcnN0IGhlYWRlciBsaW5lLgogCiAqIDpjbGFzczpgTWlzcGxhY2VkRW52ZWxvcGVIZWFkZXJEZWZlY3RgIC0gQSAiVW5peCBGcm9tIiBoZWFkZXIgd2FzIGZvdW5kIGluIHRoZQogICBtaWRkbGUgb2YgYSBoZWFkZXIgYmxvY2suCiAKKyogOmNsYXNzOmBNaXNzaW5nSGVhZGVyQm9keVNlcGFyYXRvckRlZmVjdGAgLSBBIGxpbmUgd2FzIGZvdW5kIHdoaWxlIHBhcnNpbmcKKyAgaGVhZGVycyB0aGF0IGhhZCBubyBsZWFkaW5nIHdoaXRlIHNwYWNlIGJ1dCBjb250YWluZWQgbm8gJzonLiAgUGFyc2luZworICBjb250aW51ZXMgYXNzdW1pbmcgdGhhdCB0aGUgbGluZSByZXByZXNlbnRzIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBib2R5LgorCisgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAqIDpjbGFzczpgTWFsZm9ybWVkSGVhZGVyRGVmZWN0YCAtLSBBIGhlYWRlciB3YXMgZm91bmQgdGhhdCB3YXMgbWlzc2luZyBhIGNvbG9uLAogICBvciB3YXMgb3RoZXJ3aXNlIG1hbGZvcm1lZC4KIAorICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgIFRoaXMgZGVmZWN0IGhhcyBub3QgYmVlbiB1c2VkIGZvciBzZXZlcmFsIFB5dGhvbiB2ZXJzaW9ucy4KKwogKiA6Y2xhc3M6YE11bHRpcGFydEludmFyaWFudFZpb2xhdGlvbkRlZmVjdGAgLS0gQSBtZXNzYWdlIGNsYWltZWQgdG8gYmUgYQogICA6bWltZXR5cGU6YG11bHRpcGFydGAsIGJ1dCBubyBzdWJwYXJ0cyB3ZXJlIGZvdW5kLiAgTm90ZSB0aGF0IHdoZW4gYSBtZXNzYWdlIGhhcwogICB0aGlzIGRlZmVjdCwgaXRzIDptZXRoOmBpc19tdWx0aXBhcnRgIG1ldGhvZCBtYXkgcmV0dXJuIGZhbHNlIGV2ZW4gdGhvdWdoIGl0cwogICBjb250ZW50IHR5cGUgY2xhaW1zIHRvIGJlIDptaW1ldHlwZTpgbXVsdGlwYXJ0YC4KIAorKiA6Y2xhc3M6YEludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0YCAtLSBXaGVuIGRlY29kaW5nIGEgYmxvY2sgb2YgYmFzZTY0CisgIGVub2NkZWQgYnl0ZXMsIHRoZSBwYWRkaW5nIHdhcyBub3QgY29ycmVjdC4gIEVub3VnaCBwYWRkaW5nIGlzIGFkZGVkIHRvCisgIHBlcmZvcm0gdGhlIGRlY29kZSwgYnV0IHRoZSByZXN1bHRpbmcgZGVjb2RlZCBieXRlcyBtYXkgYmUgaW52YWxpZC4KKworKiA6Y2xhc3M6YEludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0YCAtLSBXaGVuIGRlY29kaW5nIGEgYmxvY2sgb2YgYmFzZTY0CisgIGVub2NkZWQgYnl0ZXMsIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgYmFzZTY0IGFscGhlYmV0IHdlcmUgZW5jb3VudGVyZWQuCisgIFRoZSBjaGFyYWN0ZXJzIGFyZSBpZ25vcmVkLCBidXQgdGhlIHJlc3VsdGluZyBkZWNvZGVkIGJ5dGVzIG1heSBiZSBpbnZhbGlkLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuZ2VuZXJhdG9yLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QKaW5kZXggODhjNjJhMi4uYzE3MmFjYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwuZ2VuZXJhdG9yLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5nZW5lcmF0b3IucnN0CkBAIC0zMiw3ICszMiw3IEBACiA6bW9kOmBlbWFpbC5nZW5lcmF0b3JgIG1vZHVsZToKIAogCi0uLiBjbGFzczo6IEdlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCkKKy4uIGNsYXNzOjogR2VuZXJhdG9yKG91dGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTc4LCAqLCBwb2xpY3k9Tm9uZSkKIAogICAgVGhlIGNvbnN0cnVjdG9yIGZvciB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGNsYXNzIHRha2VzIGEgOnRlcm06YGZpbGUtbGlrZSBvYmplY3RgCiAgICBjYWxsZWQgKm91dGZwKiBmb3IgYW4gYXJndW1lbnQuICAqb3V0ZnAqIG11c3Qgc3VwcG9ydCB0aGUgOm1ldGg6YHdyaXRlYCBtZXRob2QKQEAgLTUzLDEwICs1MywxNyBAQAogICAgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgY2xhc3MuICBTZXQgdG8gemVybyB0byBkaXNhYmxlIGhlYWRlciB3cmFwcGluZy4KICAgIFRoZSBkZWZhdWx0IGlzIDc4LCBhcyByZWNvbW1lbmRlZCAoYnV0IG5vdCByZXF1aXJlZCkgYnkgOnJmYzpgMjgyMmAuCiAKKyAgIFRoZSAqcG9saWN5KiBrZXl3b3JkIHNwZWNpZmllcyBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9iamVjdCB0aGF0IGNvbnRyb2xzIGEKKyAgIG51bWJlciBvZiBhc3BlY3RzIG9mIHRoZSBnZW5lcmF0b3IncyBvcGVyYXRpb24uICBJZiBubyAqcG9saWN5KiBpcyBzcGVjaWZpZWQsCisgICB0aGVuIHRoZSAqcG9saWN5KiBhdHRhY2hlZCB0byB0aGUgbWVzc2FnZSBvYmplY3QgcGFzc2VkIHRvIDphdHRyOmBmbGF0dGVuYAorICAgaXMgdXNlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCisKICAgIFRoZSBvdGhlciBwdWJsaWMgOmNsYXNzOmBHZW5lcmF0b3JgIG1ldGhvZHMgYXJlOgogCiAKLSAgIC4uIG1ldGhvZDo6IGZsYXR0ZW4obXNnLCB1bml4ZnJvbT1GYWxzZSwgbGluZXNlcD0nXFxuJykKKyAgIC4uIG1ldGhvZDo6IGZsYXR0ZW4obXNnLCB1bml4ZnJvbT1GYWxzZSwgbGluZXNlcD1Ob25lKQogCiAgICAgICBQcmludCB0aGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIHJvb3RlZCBhdAogICAgICAgKm1zZyogdG8gdGhlIG91dHB1dCBmaWxlIHNwZWNpZmllZCB3aGVuIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgaW5zdGFuY2UKQEAgLTcyLDE5ICs3OSwyMCBAQAogICAgICAgTm90ZSB0aGF0IGZvciBzdWJwYXJ0cywgbm8gZW52ZWxvcGUgaGVhZGVyIGlzIGV2ZXIgcHJpbnRlZC4KIAogICAgICAgT3B0aW9uYWwgKmxpbmVzZXAqIHNwZWNpZmllcyB0aGUgbGluZSBzZXBhcmF0b3IgY2hhcmFjdGVyIHVzZWQgdG8KLSAgICAgIHRlcm1pbmF0ZSBsaW5lcyBpbiB0aGUgb3V0cHV0LiAgSXQgZGVmYXVsdHMgdG8gYGBcbmBgIGJlY2F1c2UgdGhhdCBpcwotICAgICAgdGhlIG1vc3QgdXNlZnVsIHZhbHVlIGZvciBQeXRob24gYXBwbGljYXRpb24gY29kZSAob3RoZXIgbGlicmFyeSBwYWNrYWdlcwotICAgICAgZXhwZWN0IGBgXG5gYCBzZXBhcmF0ZWQgbGluZXMpLiAgYGBsaW5lc2VwPVxyXG5gYCBjYW4gYmUgdXNlZCB0bwotICAgICAgZ2VuZXJhdGUgb3V0cHV0IHdpdGggUkZDLWNvbXBsaWFudCBsaW5lIHNlcGFyYXRvcnMuCisgICAgICB0ZXJtaW5hdGUgbGluZXMgaW4gdGhlIG91dHB1dC4gIElmIHNwZWNpZmllZCBpdCBvdmVycmlkZXMgdGhlIHZhbHVlCisgICAgICBzcGVjaWZpZWQgYnkgdGhlICptc2cqXCdzIG9yIGBgR2VuZXJhdG9yYGBcJ3MgYGBwb2xpY3lgYC4KIAotICAgICAgTWVzc2FnZXMgcGFyc2VkIHdpdGggYSBCeXRlcyBwYXJzZXIgdGhhdCBoYXZlIGEKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBvZiA4Yml0IHdpbGwgYmUgY29udmVydGVkIHRvIGEKLSAgICAgIHVzZSBhIDdiaXQgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZy4gIE5vbi1BU0NJSSBieXRlcyBpbiB0aGUgaGVhZGVycwotICAgICAgd2lsbCBiZSA6cmZjOmAyMDQ3YCBlbmNvZGVkIHdpdGggYSBjaGFyc2V0IG9mIGB1bmtub3duLThiaXRgLgorICAgICAgQmVjYXVzZSBzdHJpbmdzIGNhbm5vdCByZXByZXNlbnQgbm9uLUFTQ0lJIGJ5dGVzLCBpZiB0aGUgcG9saWN5IHRoYXQKKyAgICAgIGFwcGxpZXMgd2hlbiBgYGZsYXR0ZW5gYCBpcyBydW4gaGFzIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAKKyAgICAgIHNldCB0byBgYDhiaXRgYCwgYGBHZW5lcmF0b3JgYCB3aWxsIG9wZXJhdGUgYXMgaWYgaXQgd2VyZSBzZXQgdG8KKyAgICAgIGBgN2JpdGBgLiAgVGhpcyBtZWFucyB0aGF0IG1lc3NhZ2VzIHBhcnNlZCB3aXRoIGEgQnl0ZXMgcGFyc2VyIHRoYXQgaGF2ZQorICAgICAgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgYGA4Yml0YGAgd2lsbCBiZSBjb252ZXJ0ZWQKKyAgICAgIHRvIGEgdXNlIGEgYGA3Yml0YGAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZy4gIE5vbi1BU0NJSSBieXRlcyBpbiB0aGUKKyAgICAgIGhlYWRlcnMgd2lsbCBiZSA6cmZjOmAyMDQ3YCBlbmNvZGVkIHdpdGggYSBjaGFyc2V0IG9mIGBgdW5rbm93bi04Yml0YGAuCiAKICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciByZS1lbmNvZGluZyA4Yml0IG1lc3NhZ2UgYm9kaWVzLCBhbmQgdGhlICpsaW5lc2VwKgotICAgICAgICAgYXJndW1lbnQuCisgICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciByZS1lbmNvZGluZyBgYDhiaXRgYCBtZXNzYWdlIGJvZGllcywgYW5kIHRoZQorICAgICAgICAgKmxpbmVzZXAqIGFyZ3VtZW50LgogCiAgICAuLiBtZXRob2Q6OiBjbG9uZShmcCkKIApAQCAtMTAzLDcgKzExMSw4IEBACiBmb3JtYXR0ZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgbWVzc2FnZSBvYmplY3QuICBGb3IgbW9yZSBkZXRhaWwsIHNlZQogOm1vZDpgZW1haWwubWVzc2FnZWAuCiAKLS4uIGNsYXNzOjogQnl0ZXNHZW5lcmF0b3Iob3V0ZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NzgpCisuLiBjbGFzczo6IEJ5dGVzR2VuZXJhdG9yKG91dGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTc4LCAqLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kuZGVmYXVsdCkKIAogICAgVGhlIGNvbnN0cnVjdG9yIGZvciB0aGUgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgY2xhc3MgdGFrZXMgYSBiaW5hcnkKICAgIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YCBjYWxsZWQgKm91dGZwKiBmb3IgYW4gYXJndW1lbnQuICAqb3V0ZnAqIG11c3QKQEAgLTEyNSwxOSArMTM0LDMxIEBACiAgICB3cmFwcGluZy4gIFRoZSBkZWZhdWx0IGlzIDc4LCBhcyByZWNvbW1lbmRlZCAoYnV0IG5vdCByZXF1aXJlZCkgYnkKICAgIDpyZmM6YDI4MjJgLgogCisgICBUaGUgKnBvbGljeSoga2V5d29yZCBzcGVjaWZpZXMgYSA6bW9kOmB+ZW1haWwucG9saWN5YCBvYmplY3QgdGhhdCBjb250cm9scyBhCisgICBudW1iZXIgb2YgYXNwZWN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3Mgb3BlcmF0aW9uLiAgVGhlIGRlZmF1bHQgcG9saWN5CisgICBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCisKICAgIFRoZSBvdGhlciBwdWJsaWMgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgbWV0aG9kcyBhcmU6CiAKIAotICAgLi4gbWV0aG9kOjogZmxhdHRlbihtc2csIHVuaXhmcm9tPUZhbHNlLCBsaW5lc2VwPSdcbicpCisgICAuLiBtZXRob2Q6OiBmbGF0dGVuKG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9Tm9uZSkKIAogICAgICAgUHJpbnQgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSByb290ZWQKICAgICAgIGF0ICptc2cqIHRvIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAKICAgICAgIGluc3RhbmNlIHdhcyBjcmVhdGVkLiAgU3VicGFydHMgYXJlIHZpc2l0ZWQgZGVwdGgtZmlyc3QgYW5kIHRoZSByZXN1bHRpbmcKLSAgICAgIHRleHQgd2lsbCBiZSBwcm9wZXJseSBNSU1FIGVuY29kZWQuICBJZiB0aGUgaW5wdXQgdGhhdCBjcmVhdGVkIHRoZSAqbXNnKgotICAgICAgY29udGFpbmVkIGJ5dGVzIHdpdGggdGhlIGhpZ2ggYml0IHNldCBhbmQgdGhvc2UgYnl0ZXMgaGF2ZSBub3QgYmVlbgotICAgICAgbW9kaWZpZWQsIHRoZXkgd2lsbCBiZSBjb3BpZWQgZmFpdGhmdWxseSB0byB0aGUgb3V0cHV0LCBldmVuIGlmIGRvaW5nIHNvCi0gICAgICBpcyBub3Qgc3RyaWN0bHkgUkZDIGNvbXBsaWFudC4gIChUbyBwcm9kdWNlIHN0cmljdGx5IFJGQyBjb21wbGlhbnQKLSAgICAgIG91dHB1dCwgdXNlIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgY2xhc3MuKQorICAgICAgdGV4dCB3aWxsIGJlIHByb3Blcmx5IE1JTUUgZW5jb2RlZC4gIElmIHRoZSA6bW9kOmB+ZW1haWwucG9saWN5YCBvcHRpb24KKyAgICAgIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAgaXMgYGA4Yml0YGAgKHRoZSBkZWZhdWx0KSwKKyAgICAgIHRoZW4gYW55IGJ5dGVzIHdpdGggdGhlIGhpZ2ggYml0IHNldCBpbiB0aGUgb3JpZ2luYWwgcGFyc2VkIG1lc3NhZ2UgdGhhdAorICAgICAgaGF2ZSBub3QgYmVlbiBtb2RpZmllZCB3aWxsIGJlIGNvcGllZCBmYWl0aGZ1bGx5IHRvIHRoZSBvdXRwdXQuICBJZgorICAgICAgYGBjdGVfdHlwZWBgIGlzIGBgN2JpdGBgLCB0aGUgYnl0ZXMgd2lsbCBiZSBjb252ZXJ0ZWQgYXMgbmVlZGVkCisgICAgICB1c2luZyBhbiBBU0NJSS1jb21wYXRpYmxlIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcuICBJbiBwYXJ0aWN1bGFyLAorICAgICAgUkZDLWludmFsaWQgbm9uLUFTQ0lJIGJ5dGVzIGluIGhlYWRlcnMgd2lsbCBiZSBlbmNvZGVkIHVzaW5nIHRoZSBNSU1FCisgICAgICBgYHVua25vd24tOGJpdGBgIGNoYXJhY3RlciBzZXQsIHRodXMgcmVuZGVyaW5nIHRoZW0gUkZDLWNvbXBsaWFudC4KKworICAgICAgLi4gWFhYOiBUaGVyZSBzaG91bGQgYmUgYSBjb21wbGVtZW50YXJ5IG9wdGlvbiB0aGF0IGp1c3QgZG9lcyB0aGUgUkZDCisgICAgICAgICBjb21wbGlhbmNlIHRyYW5zZm9ybWF0aW9uIGJ1dCBsZWF2ZXMgQ1RFIDhiaXQgcGFydHMgYWxvbmUuCiAKICAgICAgIE1lc3NhZ2VzIHBhcnNlZCB3aXRoIGEgQnl0ZXMgcGFyc2VyIHRoYXQgaGF2ZSBhCiAgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgOGJpdCB3aWxsIGJlIHJlY29uc3RydWN0ZWQKQEAgLTE1MiwxMCArMTczLDggQEAKICAgICAgIE5vdGUgdGhhdCBmb3Igc3VicGFydHMsIG5vIGVudmVsb3BlIGhlYWRlciBpcyBldmVyIHByaW50ZWQuCiAKICAgICAgIE9wdGlvbmFsICpsaW5lc2VwKiBzcGVjaWZpZXMgdGhlIGxpbmUgc2VwYXJhdG9yIGNoYXJhY3RlciB1c2VkIHRvCi0gICAgICB0ZXJtaW5hdGUgbGluZXMgaW4gdGhlIG91dHB1dC4gIEl0IGRlZmF1bHRzIHRvIGBgXG5gYCBiZWNhdXNlIHRoYXQgaXMKLSAgICAgIHRoZSBtb3N0IHVzZWZ1bCB2YWx1ZSBmb3IgUHl0aG9uIGFwcGxpY2F0aW9uIGNvZGUgKG90aGVyIGxpYnJhcnkgcGFja2FnZXMKLSAgICAgIGV4cGVjdCBgYFxuYGAgc2VwYXJhdGVkIGxpbmVzKS4gIGBgbGluZXNlcD1cclxuYGAgY2FuIGJlIHVzZWQgdG8KLSAgICAgIGdlbmVyYXRlIG91dHB1dCB3aXRoIFJGQy1jb21wbGlhbnQgbGluZSBzZXBhcmF0b3JzLgorICAgICAgdGVybWluYXRlIGxpbmVzIGluIHRoZSBvdXRwdXQuICBJZiBzcGVjaWZpZWQgaXQgb3ZlcnJpZGVzIHRoZSB2YWx1ZQorICAgICAgc3BlY2lmaWVkIGJ5IHRoZSBgYEdlbmVyYXRvcmBgXCAncyBgYHBvbGljeWBgLgogCiAgICAuLiBtZXRob2Q6OiBjbG9uZShmcCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVyLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlci5yc3QKaW5kZXggN2QyZGMyZS4uMzQ2ZDIzZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXIucnN0CkBAIC0zMSw4ICszMSw4IEBACiAgICA+Pj4gbXNnID0gTWVzc2FnZSgpCiAgICA+Pj4gaCA9IEhlYWRlcigncFx4ZjZzdGFsJywgJ2lzby04ODU5LTEnKQogICAgPj4+IG1zZ1snU3ViamVjdCddID0gaAotICAgPj4+IHByaW50KG1zZy5hc19zdHJpbmcoKSkKLSAgIFN1YmplY3Q6ID0/aXNvLTg4NTktMT9xP3A9RjZzdGFsPz0KKyAgID4+PiBtc2cuYXNfc3RyaW5nKCkKKyAgICdTdWJqZWN0OiA9P2lzby04ODU5LTE/cT9wPUY2c3RhbD89XG5cbicKIAogCiAKQEAgLTE3Niw3ICsxNzYsNyBAQAogCiAgICAgICA+Pj4gZnJvbSBlbWFpbC5oZWFkZXIgaW1wb3J0IGRlY29kZV9oZWFkZXIKICAgICAgID4+PiBkZWNvZGVfaGVhZGVyKCc9P2lzby04ODU5LTE/cT9wPUY2c3RhbD89JykKLSAgICAgIFsoJ3BceGY2c3RhbCcsICdpc28tODg1OS0xJyldCisgICAgICBbKGIncFx4ZjZzdGFsJywgJ2lzby04ODU5LTEnKV0KIAogCiAuLiBmdW5jdGlvbjo6IG1ha2VfaGVhZGVyKGRlY29kZWRfc2VxLCBtYXhsaW5lbGVuPU5vbmUsIGhlYWRlcl9uYW1lPU5vbmUsIGNvbnRpbnVhdGlvbl93cz0nICcpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg4NDE1OQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlcnJlZ2lzdHJ5LnJzdApAQCAtMCwwICsxLDQ1MiBAQAorOm1vZDpgZW1haWwuaGVhZGVycmVnaXN0cnlgOiBDdXN0b20gSGVhZGVyIE9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIG1vZHVsZTo6IGVtYWlsLmhlYWRlcnJlZ2lzdHJ5CisgICA6c3lub3BzaXM6IEF1dG9tYXRpYyBQYXJzaW5nIG9mIGhlYWRlcnMgYmFzZWQgb24gdGhlIGZpZWxkIG5hbWUKKworLi4gbW9kdWxlYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CisuLiBzZWN0aW9uYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CisKKworLi4gbm90ZTo6CisKKyAgIFRoZSBoZWFkZXJyZWdpc3RyeSBtb2R1bGUgaGFzIGJlZW4gaW5jbHVkZWQgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgb24gYQorICAgOnRlcm06YHByb3Zpc2lvbmFsIGJhc2lzIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuIEJhY2t3YXJkcyBpbmNvbXBhdGlibGUKKyAgIGNoYW5nZXMgKHVwIHRvIGFuZCBpbmNsdWRpbmcgcmVtb3ZhbCBvZiB0aGUgbW9kdWxlKSBtYXkgb2NjdXIgaWYgZGVlbWVkCisgICBuZWNlc3NhcnkgYnkgdGhlIGNvcmUgZGV2ZWxvcGVycy4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICBhcyBhIDp0ZXJtOmBwcm92aXNpb25hbCBtb2R1bGUgPHByb3Zpc2lvbmFsIHBhY2thZ2U+YC4KKworSGVhZGVycyBhcmUgcmVwcmVzZW50ZWQgYnkgY3VzdG9taXplZCBzdWJjbGFzc2VzIG9mIDpjbGFzczpgc3RyYC4gIFRoZQorcGFydGljdWxhciBjbGFzcyB1c2VkIHRvIHJlcHJlc2VudCBhIGdpdmVuIGhlYWRlciBpcyBkZXRlcm1pbmVkIGJ5IHRoZQorOmF0dHI6YH5lbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kuaGVhZGVyX2ZhY3RvcnlgIG9mIHRoZSA6bW9kOmB+ZW1haWwucG9saWN5YCBpbgorZWZmZWN0IHdoZW4gdGhlIGhlYWRlcnMgYXJlIGNyZWF0ZWQuICBUaGlzIHNlY3Rpb24gZG9jdW1lbnRzIHRoZSBwYXJ0aWN1bGFyCitgYGhlYWRlcl9mYWN0b3J5YGAgaW1wbGVtZW50ZWQgYnkgdGhlIGVtYWlsIHBhY2thZ2UgZm9yIGhhbmRsaW5nIDpSRkM6YDUzMjJgCitjb21wbGlhbnQgZW1haWwgbWVzc2FnZXMsIHdoaWNoIG5vdCBvbmx5IHByb3ZpZGVzIGN1c3RvbWl6ZWQgaGVhZGVyIG9iamVjdHMgZm9yCit2YXJpb3VzIGhlYWRlciB0eXBlcywgYnV0IGFsc28gcHJvdmlkZXMgYW4gZXh0ZW5zaW9uIG1lY2hhbmlzbSBmb3IgYXBwbGljYXRpb25zCit0byBhZGQgdGhlaXIgb3duIGN1c3RvbSBoZWFkZXIgdHlwZXMuCisKK1doZW4gdXNpbmcgYW55IG9mIHRoZSBwb2xpY3kgb2JqZWN0cyBkZXJpdmVkIGZyb20KKzpkYXRhOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5YCwgYWxsIGhlYWRlcnMgYXJlIHByb2R1Y2VkIGJ5Cis6Y2xhc3M6YC5IZWFkZXJSZWdpc3RyeWAgYW5kIGhhdmUgOmNsYXNzOmAuQmFzZUhlYWRlcmAgYXMgdGhlaXIgbGFzdCBiYXNlCitjbGFzcy4gIEVhY2ggaGVhZGVyIGNsYXNzIGhhcyBhbiBhZGRpdGlvbmFsIGJhc2UgY2xhc3MgdGhhdCBpcyBkZXRlcm1pbmVkIGJ5Cit0aGUgdHlwZSBvZiB0aGUgaGVhZGVyLiAgRm9yIGV4YW1wbGUsIG1hbnkgaGVhZGVycyBoYXZlIHRoZSBjbGFzcworOmNsYXNzOmAuVW5zdHJ1Y3R1cmVkSGVhZGVyYCBhcyB0aGVpciBvdGhlciBiYXNlIGNsYXNzLiAgVGhlIHNwZWNpYWxpemVkIHNlY29uZAorY2xhc3MgZm9yIGEgaGVhZGVyIGlzIGRldGVybWluZWQgYnkgdGhlIG5hbWUgb2YgdGhlIGhlYWRlciwgdXNpbmcgYSBsb29rdXAKK3RhYmxlIHN0b3JlZCBpbiB0aGUgOmNsYXNzOmAuSGVhZGVyUmVnaXN0cnlgLiAgQWxsIG9mIHRoaXMgaXMgbWFuYWdlZAordHJhbnNwYXJlbnRseSBmb3IgdGhlIHR5cGljYWwgYXBwbGljYXRpb24gcHJvZ3JhbSwgYnV0IGludGVyZmFjZXMgYXJlIHByb3ZpZGVkCitmb3IgbW9kaWZ5aW5nIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciB1c2UgYnkgbW9yZSBjb21wbGV4IGFwcGxpY2F0aW9ucy4KKworVGhlIHNlY3Rpb25zIGJlbG93IGZpcnN0IGRvY3VtZW50IHRoZSBoZWFkZXIgYmFzZSBjbGFzc2VzIGFuZCB0aGVpciBhdHRyaWJ1dGVzLAorZm9sbG93ZWQgYnkgdGhlIEFQSSBmb3IgbW9kaWZ5aW5nIHRoZSBiZWhhdmlvciBvZiA6Y2xhc3M6YC5IZWFkZXJSZWdpc3RyeWAsIGFuZAorZmluYWxseSB0aGUgc3VwcG9ydCBjbGFzc2VzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBkYXRhIHBhcnNlZCBmcm9tIHN0cnVjdHVyZWQKK2hlYWRlcnMuCisKKworLi4gY2xhc3M6OiBCYXNlSGVhZGVyKG5hbWUsIHZhbHVlKQorCisgICAqbmFtZSogYW5kICp2YWx1ZSogYXJlIHBhc3NlZCB0byBgYEJhc2VIZWFkZXJgYCBmcm9tIHRoZQorICAgOmF0dHI6YH5lbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kuaGVhZGVyX2ZhY3RvcnlgIGNhbGwuICBUaGUgc3RyaW5nIHZhbHVlIG9mCisgICBhbnkgaGVhZGVyIG9iamVjdCBpcyB0aGUgKnZhbHVlKiBmdWxseSBkZWNvZGVkIHRvIHVuaWNvZGUuCisKKyAgIFRoaXMgYmFzZSBjbGFzcyBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgcmVhZC1vbmx5IHByb3BlcnRpZXM6CisKKworICAgLi4gYXR0cmlidXRlOjogbmFtZQorCisgICAgICBUaGUgbmFtZSBvZiB0aGUgaGVhZGVyICh0aGUgcG9ydGlvbiBvZiB0aGUgZmllbGQgYmVmb3JlIHRoZSAnOicpLiAgVGhpcworICAgICAgaXMgZXhhY3RseSB0aGUgdmFsdWUgcGFzc2VkIGluIHRoZSA6YXR0cjpgfkVtYWlsUG9saWN5LmhlYWRlcl9mYWN0b3J5YAorICAgICAgY2FsbCBmb3IgKm5hbWUqOyB0aGF0IGlzLCBjYXNlIGlzIHByZXNlcnZlZC4KKworCisgICAuLiBhdHRyaWJ1dGU6OiBkZWZlY3RzCisKKyAgICAgIEEgdHVwbGUgb2YgOmV4YzpgfmVtYWlsLmVycm9ycy5IZWFkZXJEZWZlY3RgIGluc3RhbmNlcyByZXBvcnRpbmcgYW55CisgICAgICBSRkMgY29tcGxpYW5jZSBwcm9ibGVtcyBmb3VuZCBkdXJpbmcgcGFyc2luZy4gIFRoZSBlbWFpbCBwYWNrYWdlIHRyaWVzIHRvCisgICAgICBiZSBjb21wbGV0ZSBhYm91dCBkZXRlY3RpbmcgY29tcGxpYW5jZSBpc3N1ZXMuICBTZWUgdGhlIDptb2Q6YGVycm9yc2AKKyAgICAgIG1vZHVsZSBmb3IgYSBkaXNjdXNzaW9uIG9mIHRoZSB0eXBlcyBvZiBkZWZlY3RzIHRoYXQgbWF5IGJlIHJlcG9ydGVkLgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG1heF9jb3VudAorCisgICAgICBUaGUgbWF4aW11bSBudW1iZXIgb2YgaGVhZGVycyBvZiB0aGlzIHR5cGUgdGhhdCBjYW4gaGF2ZSB0aGUgc2FtZQorICAgICAgYGBuYW1lYGAuICBBIHZhbHVlIG9mIGBgTm9uZWBgIG1lYW5zIHVubGltaXRlZC4gIFRoZSBgYEJhc2VIZWFkZXJgYCB2YWx1ZQorICAgICAgZm9yIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgOyBpdCBpcyBleHBlY3RlZCB0aGF0IHNwZWNpYWxpemVkIGhlYWRlcgorICAgICAgY2xhc3NlcyB3aWxsIG92ZXJyaWRlIHRoaXMgdmFsdWUgYXMgbmVlZGVkLgorCisgICBgYEJhc2VIZWFkZXJgYCBhbHNvIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgbWV0aG9kLCB3aGljaCBpcyBjYWxsZWQgYnkgdGhlCisgICBlbWFpbCBsaWJyYXJ5IGNvZGUgYW5kIHNob3VsZCBub3QgaW4gZ2VuZXJhbCBiZSBjYWxsZWQgYnkgYXBwbGljYXRpb24KKyAgIHByb2dyYW1zOgorCisgICAuLiBtZXRob2Q6OiBmb2xkKCosIHBvbGljeSkKKworICAgICAgUmV0dXJuIGEgc3RyaW5nIGNvbnRhaW5pbmcgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmxpbmVzZXBgCisgICAgICBjaGFyYWN0ZXJzIGFzIHJlcXVpcmVkIHRvIGNvcnJlY3RseSBmb2xkIHRoZSBoZWFkZXIgYWNjb3JkaW5nCisgICAgICB0byAqcG9saWN5Ki4gIEEgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmN0ZV90eXBlYCBvZgorICAgICAgYGA4Yml0YGAgd2lsbCBiZSB0cmVhdGVkIGFzIGlmIGl0IHdlcmUgYGA3Yml0YGAsIHNpbmNlIHN0cmluZ3MKKyAgICAgIG1heSBub3QgY29udGFpbiBiaW5hcnkgZGF0YS4KKworCisgICBgYEJhc2VIZWFkZXJgYCBieSBpdHNlbGYgY2Fubm90IGJlIHVzZWQgdG8gY3JlYXRlIGEgaGVhZGVyIG9iamVjdC4gIEl0CisgICBkZWZpbmVzIGEgcHJvdG9jb2wgdGhhdCBlYWNoIHNwZWNpYWxpemVkIGhlYWRlciBjb29wZXJhdGVzIHdpdGggaW4gb3JkZXIgdG8KKyAgIHByb2R1Y2UgdGhlIGhlYWRlciBvYmplY3QuICBTcGVjaWZpY2FsbHksIGBgQmFzZUhlYWRlcmBgIHJlcXVpcmVzIHRoYXQKKyAgIHRoZSBzcGVjaWFsaXplZCBjbGFzcyBwcm92aWRlIGEgOmZ1bmM6YGNsYXNzbWV0aG9kYCBuYW1lZCBgYHBhcnNlYGAuICBUaGlzCisgICBtZXRob2QgaXMgY2FsbGVkIGFzIGZvbGxvd3M6OgorCisgICAgICAgcGFyc2Uoc3RyaW5nLCBrd2RzKQorCisgICBgYGt3ZHNgYCBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBvbmUgcHJlLWluaXRpYWxpemVkIGtleSwgYGBkZWZlY3RzYGAuCisgICBgYGRlZmVjdHNgYCBpcyBhbiBlbXB0eSBsaXN0LiAgVGhlIHBhcnNlIG1ldGhvZCBzaG91bGQgYXBwZW5kIGFueSBkZXRlY3RlZAorICAgZGVmZWN0cyB0byB0aGlzIGxpc3QuICBPbiByZXR1cm4sIHRoZSBgYGt3ZHNgYCBkaWN0aW9uYXJ5ICptdXN0KiBjb250YWluCisgICB2YWx1ZXMgZm9yIGF0IGxlYXN0IHRoZSBrZXlzIGBgZGVjb2RlZGBgIGFuZCBgYGRlZmVjdHNgYC4gIGBgZGVjb2RlZGBgCisgICBzaG91bGQgYmUgdGhlIHN0cmluZyB2YWx1ZSBmb3IgdGhlIGhlYWRlciAodGhhdCBpcywgdGhlIGhlYWRlciB2YWx1ZSBmdWxseQorICAgZGVjb2RlZCB0byB1bmljb2RlKS4gIFRoZSBwYXJzZSBtZXRob2Qgc2hvdWxkIGFzc3VtZSB0aGF0ICpzdHJpbmcqIG1heQorICAgY29udGFpbiB0cmFuc3BvcnQgZW5jb2RlZCBwYXJ0cywgYnV0IHNob3VsZCBjb3JyZWN0bHkgaGFuZGxlIGFsbCB2YWxpZAorICAgdW5pY29kZSBjaGFyYWN0ZXJzIGFzIHdlbGwgc28gdGhhdCBpdCBjYW4gcGFyc2UgdW4tZW5jb2RlZCBoZWFkZXIgdmFsdWVzLgorCisgICBgYEJhc2VIZWFkZXJgYCdzIGBgX19uZXdfX2BgIHRoZW4gY3JlYXRlcyB0aGUgaGVhZGVyIGluc3RhbmNlLCBhbmQgY2FsbHMgaXRzCisgICBgYGluaXRgYCBtZXRob2QuICBUaGUgc3BlY2lhbGl6ZWQgY2xhc3Mgb25seSBuZWVkcyB0byBwcm92aWRlIGFuIGBgaW5pdGBgCisgICBtZXRob2QgaWYgaXQgd2lzaGVzIHRvIHNldCBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMgYmV5b25kIHRob3NlIHByb3ZpZGVkIGJ5CisgICBgYEJhc2VIZWFkZXJgYCBpdHNlbGYuICBTdWNoIGFuIGBgaW5pdGBgIG1ldGhvZCBzaG91bGQgbG9vayBsaWtlIHRoaXM6OgorCisgICAgICAgZGVmIGluaXQoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICAgICBzZWxmLl9teWF0dHIgPSBrdy5wb3AoJ215YXR0cicpCisgICAgICAgICAgIHN1cGVyKCkuaW5pdCgqYXJncywgKiprdykKKworICAgVGhhdCBpcywgYW55dGhpbmcgZXh0cmEgdGhhdCB0aGUgc3BlY2lhbGl6ZWQgY2xhc3MgcHV0cyBpbiB0byB0aGUgYGBrd2RzYGAKKyAgIGRpY3Rpb25hcnkgc2hvdWxkIGJlIHJlbW92ZWQgYW5kIGhhbmRsZWQsIGFuZCB0aGUgcmVtYWluaW5nIGNvbnRlbnRzIG9mCisgICBgYGt3YGAgKGFuZCBgYGFyZ3NgYCkgcGFzc2VkIHRvIHRoZSBgYEJhc2VIZWFkZXJgYCBgYGluaXRgYCBtZXRob2QuCisKKworLi4gY2xhc3M6OiBVbnN0cnVjdHVyZWRIZWFkZXIKKworICAgQW4gInVuc3RydWN0dXJlZCIgaGVhZGVyIGlzIHRoZSBkZWZhdWx0IHR5cGUgb2YgaGVhZGVyIGluIDpyZmM6YDUzMjJgLgorICAgQW55IGhlYWRlciB0aGF0IGRvZXMgbm90IGhhdmUgYSBzcGVjaWZpZWQgc3ludGF4IGlzIHRyZWF0ZWQgYXMKKyAgIHVuc3RydWN0dXJlZC4gIFRoZSBjbGFzc2ljIGV4YW1wbGUgb2YgYW4gdW5zdHJ1Y3R1cmVkIGhlYWRlciBpcyB0aGUKKyAgIDptYWlsaGVhZGVyOmBTdWJqZWN0YCBoZWFkZXIuCisKKyAgIEluIDpyZmM6YDUzMjJgLCBhbiB1bnN0cnVjdHVyZWQgaGVhZGVyIGlzIGEgcnVuIG9mIGFyYml0cmFyeSB0ZXh0IGluIHRoZQorICAgQVNDSUkgY2hhcmFjdGVyIHNldC4gIDpyZmM6YDIwNDdgLCBob3dldmVyLCBoYXMgYW4gOnJmYzpgNTMyMmAgY29tcGF0aWJsZQorICAgbWVjaGFuaXNtIGZvciBlbmNvZGluZyBub24tQVNDSUkgdGV4dCBhcyBBU0NJSSBjaGFyYWN0ZXJzIHdpdGhpbiBhIGhlYWRlcgorICAgdmFsdWUuICBXaGVuIGEgKnZhbHVlKiBjb250YWluaW5nIGVuY29kZWQgd29yZHMgaXMgcGFzc2VkIHRvIHRoZQorICAgY29uc3RydWN0b3IsIHRoZSBgYFVuc3RydWN0dXJlZEhlYWRlcmBgIHBhcnNlciBjb252ZXJ0cyBzdWNoIGVuY29kZWQgd29yZHMKKyAgIGJhY2sgaW4gdG8gdGhlIG9yaWdpbmFsIHVuaWNvZGUsIGZvbGxvd2luZyB0aGUgOnJmYzpgMjA0N2AgcnVsZXMgZm9yCisgICB1bnN0cnVjdHVyZWQgdGV4dC4gIFRoZSBwYXJzZXIgdXNlcyBoZXVyaXN0aWNzIHRvIGF0dGVtcHQgdG8gZGVjb2RlIGNlcnRhaW4KKyAgIG5vbi1jb21wbGlhbnQgZW5jb2RlZCB3b3Jkcy4gIERlZmVjdHMgYXJlIHJlZ2lzdGVyZWQgaW4gc3VjaCBjYXNlcywgYXMgd2VsbAorICAgYXMgZGVmZWN0cyBmb3IgaXNzdWVzIHN1Y2ggYXMgaW52YWxpZCBjaGFyYWN0ZXJzIHdpdGhpbiB0aGUgZW5jb2RlZCB3b3JkcyBvcgorICAgdGhlIG5vbi1lbmNvZGVkIHRleHQuCisKKyAgIFRoaXMgaGVhZGVyIHR5cGUgcHJvdmlkZXMgbm8gYWRkaXRpb25hbCBhdHRyaWJ1dGVzLgorCisKKy4uIGNsYXNzOjogRGF0ZUhlYWRlcgorCisgICA6cmZjOmA1MzIyYCBzcGVjaWZpZXMgYSB2ZXJ5IHNwZWNpZmljIGZvcm1hdCBmb3IgZGF0ZXMgd2l0aGluIGVtYWlsIGhlYWRlcnMuCisgICBUaGUgYGBEYXRlSGVhZGVyYGAgcGFyc2VyIHJlY29nbml6ZXMgdGhhdCBkYXRlIGZvcm1hdCwgYXMgd2VsbCBhcworICAgcmVjb2duaXppbmcgYSBudW1iZXIgb2YgdmFyaWFudCBmb3JtcyB0aGF0IGFyZSBzb21ldGltZXMgZm91bmQgImluIHRoZQorICAgd2lsZCIuCisKKyAgIFRoaXMgaGVhZGVyIHR5cGUgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIGF0dHJpYnV0ZXM6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IGRhdGV0aW1lCisKKyAgICAgIElmIHRoZSBoZWFkZXIgdmFsdWUgY2FuIGJlIHJlY29nbml6ZWQgYXMgYSB2YWxpZCBkYXRlIG9mIG9uZSBmb3JtIG9yCisgICAgICBhbm90aGVyLCB0aGlzIGF0dHJpYnV0ZSB3aWxsIGNvbnRhaW4gYSA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAKKyAgICAgIGluc3RhbmNlIHJlcHJlc2VudGluZyB0aGF0IGRhdGUuICBJZiB0aGUgdGltZXpvbmUgb2YgdGhlIGlucHV0IGRhdGUgaXMKKyAgICAgIHNwZWNpZmllZCBhcyBgYC0wMDAwYGAgKGluZGljYXRpbmcgaXQgaXMgaW4gVVRDIGJ1dCBjb250YWlucyBubworICAgICAgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNvdXJjZSB0aW1lem9uZSksIHRoZW4gOmF0dHI6YC5kYXRldGltZWAgd2lsbCBiZSBhCisgICAgICBuYWl2ZSA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAuICBJZiBhIHNwZWNpZmljIHRpbWV6b25lIG9mZnNldCBpcworICAgICAgZm91bmQgKGluY2x1ZGluZyBgKzAwMDBgKSwgdGhlbiA6YXR0cjpgLmRhdGV0aW1lYCB3aWxsIGNvbnRhaW4gYW4gYXdhcmUKKyAgICAgIGBgZGF0ZXRpbWVgYCB0aGF0IHVzZXMgOmNsYXNzOmBkYXRldGltZS50aW1lem9uZWAgdG8gcmVjb3JkIHRoZSB0aW1lem9uZQorICAgICAgb2Zmc2V0LgorCisgICBUaGUgYGBkZWNvZGVkYGAgdmFsdWUgb2YgdGhlIGhlYWRlciBpcyBkZXRlcm1pbmVkIGJ5IGZvcm1hdHRpbmcgdGhlCisgICBgYGRhdGV0aW1lYGAgYWNjb3JkaW5nIHRvIHRoZSA6cmZjOmA1MzIyYCBydWxlczsgdGhhdCBpcywgaXQgaXMgc2V0IHRvOjoKKworICAgICAgIGVtYWlsLnV0aWxzLmZvcm1hdF9kYXRldGltZShzZWxmLmRhdGV0aW1lKQorCisgICBXaGVuIGNyZWF0aW5nIGEgYGBEYXRlSGVhZGVyYGAsICp2YWx1ZSogbWF5IGJlCisgICA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAgaW5zdGFuY2UuICBUaGlzIG1lYW5zLCBmb3IgZXhhbXBsZSwgdGhhdAorICAgdGhlIGZvbGxvd2luZyBjb2RlIGlzIHZhbGlkIGFuZCBkb2VzIHdoYXQgb25lIHdvdWxkIGV4cGVjdDo6CisKKyAgICAgICBtc2dbJ0RhdGUnXSAgPSBkYXRldGltZSgyMDExLCA3LCAxNSwgMjEpCisKKyAgIEJlY2F1c2UgdGhpcyBpcyBhIG5haXZlIGBgZGF0ZXRpbWVgYCBpdCB3aWxsIGJlIGludGVycHJldGVkIGFzIGEgVVRDCisgICB0aW1lc3RhbXAsIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlIHdpbGwgaGF2ZSBhIHRpbWV6b25lIG9mIGBgLTAwMDBgYC4gIE11Y2gKKyAgIG1vcmUgdXNlZnVsIGlzIHRvIHVzZSB0aGUgOmZ1bmM6YH5lbWFpbC51dGlscy5sb2NhbHRpbWVgIGZ1bmN0aW9uIGZyb20gdGhlCisgICA6bW9kOmB+ZW1haWwudXRpbHNgIG1vZHVsZTo6CisKKyAgICAgICBtc2dbJ0RhdGUnXSA9IHV0aWxzLmxvY2FsdGltZSgpCisKKyAgIFRoaXMgZXhhbXBsZSBzZXRzIHRoZSBkYXRlIGhlYWRlciB0byB0aGUgY3VycmVudCB0aW1lIGFuZCBkYXRlIHVzaW5nCisgICB0aGUgY3VycmVudCB0aW1lem9uZSBvZmZzZXQuCisKKworLi4gY2xhc3M6OiBBZGRyZXNzSGVhZGVyCisKKyAgIEFkZHJlc3MgaGVhZGVycyBhcmUgb25lIG9mIHRoZSBtb3N0IGNvbXBsZXggc3RydWN0dXJlZCBoZWFkZXIgdHlwZXMuCisgICBUaGUgYGBBZGRyZXNzSGVhZGVyYGAgY2xhc3MgcHJvdmlkZXMgYSBnZW5lcmljIGludGVyZmFjZSB0byBhbnkgYWRkcmVzcworICAgaGVhZGVyLgorCisgICBUaGlzIGhlYWRlciB0eXBlIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBhdHRyaWJ1dGVzOgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGdyb3VwcworCisgICAgICBBIHR1cGxlIG9mIDpjbGFzczpgLkdyb3VwYCBvYmplY3RzIGVuY29kaW5nIHRoZQorICAgICAgYWRkcmVzc2VzIGFuZCBncm91cHMgZm91bmQgaW4gdGhlIGhlYWRlciB2YWx1ZS4gIEFkZHJlc3NlcyB0aGF0IGFyZQorICAgICAgbm90IHBhcnQgb2YgYSBncm91cCBhcmUgcmVwcmVzZW50ZWQgaW4gdGhpcyBsaXN0IGFzIHNpbmdsZS1hZGRyZXNzCisgICAgICBgYEdyb3Vwc2BgIHdob3NlIDphdHRyOmB+Lkdyb3VwLmRpc3BsYXlfbmFtZWAgaXMgYGBOb25lYGAuCisKKworICAgLi4gYXR0cmlidXRlOjogYWRkcmVzc2VzCisKKyAgICAgIEEgdHVwbGUgb2YgOmNsYXNzOmAuQWRkcmVzc2Agb2JqZWN0cyBlbmNvZGluZyBhbGwKKyAgICAgIG9mIHRoZSBpbmRpdmlkdWFsIGFkZHJlc3NlcyBmcm9tIHRoZSBoZWFkZXIgdmFsdWUuICBJZiB0aGUgaGVhZGVyIHZhbHVlCisgICAgICBjb250YWlucyBhbnkgZ3JvdXBzLCB0aGUgaW5kaXZpZHVhbCBhZGRyZXNzZXMgZnJvbSB0aGUgZ3JvdXAgYXJlIGluY2x1ZGVkCisgICAgICBpbiB0aGUgbGlzdCBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlIGdyb3VwIG9jY3VycyBpbiB0aGUgdmFsdWUgKHRoYXQgaXMsCisgICAgICB0aGUgbGlzdCBvZiBhZGRyZXNzZXMgaXMgImZsYXR0ZW5lZCIgaW50byBhIG9uZSBkaW1lbnNpb25hbCBsaXN0KS4KKworICAgVGhlIGBgZGVjb2RlZGBgIHZhbHVlIG9mIHRoZSBoZWFkZXIgd2lsbCBoYXZlIGFsbCBlbmNvZGVkIHdvcmRzIGRlY29kZWQgdG8KKyAgIHVuaWNvZGUuICA6Y2xhc3M6YH5lbmNvZGluZ3MuaWRuYWAgZW5jb2RlZCBkb21haW4gbmFtZXMgYXJlIGFsc28gZGVjb2RlZCB0byB1bmljb2RlLiAgVGhlCisgICBgYGRlY29kZWRgYCB2YWx1ZSBpcyBzZXQgYnkgOmF0dHI6YH5zdHIuam9pbmBcIGluZyB0aGUgOmNsYXNzOmBzdHJgIHZhbHVlIG9mCisgICB0aGUgZWxlbWVudHMgb2YgdGhlIGBgZ3JvdXBzYGAgYXR0cmlidXRlIHdpdGggYGAnLCAnYGAuCisKKyAgIEEgbGlzdCBvZiA6Y2xhc3M6YC5BZGRyZXNzYCBhbmQgOmNsYXNzOmAuR3JvdXBgIG9iamVjdHMgaW4gYW55IGNvbWJpbmF0aW9uCisgICBtYXkgYmUgdXNlZCB0byBzZXQgdGhlIHZhbHVlIG9mIGFuIGFkZHJlc3MgaGVhZGVyLiAgYGBHcm91cGBgIG9iamVjdHMgd2hvc2UKKyAgIGBgZGlzcGxheV9uYW1lYGAgaXMgYGBOb25lYGAgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBzaW5nbGUgYWRkcmVzc2VzLCB3aGljaAorICAgYWxsb3dzIGFuIGFkZHJlc3MgbGlzdCB0byBiZSBjb3BpZWQgd2l0aCBncm91cHMgaW50YWN0IGJ5IHVzaW5nIHRoZSBsaXN0CisgICBvYnRhaW5lZCBgYGdyb3Vwc2BgIGF0dHJpYnV0ZSBvZiB0aGUgc291cmNlIGhlYWRlci4KKworCisuLiBjbGFzczo6IFNpbmdsZUFkZHJlc3NIZWFkZXIKKworICAgQSBzdWJjbGFzcyBvZiA6Y2xhc3M6YC5BZGRyZXNzSGVhZGVyYCB0aGF0IGFkZHMgb25lCisgICBhZGRpdGlvbmFsIGF0dHJpYnV0ZToKKworCisgICAuLiBhdHRyaWJ1dGU6OiBhZGRyZXNzCisKKyAgICAgIFRoZSBzaW5nbGUgYWRkcmVzcyBlbmNvZGVkIGJ5IHRoZSBoZWFkZXIgdmFsdWUuICBJZiB0aGUgaGVhZGVyIHZhbHVlCisgICAgICBhY3R1YWxseSBjb250YWlucyBtb3JlIHRoYW4gb25lIGFkZHJlc3MgKHdoaWNoIHdvdWxkIGJlIGEgdmlvbGF0aW9uIG9mCisgICAgICB0aGUgUkZDIHVuZGVyIHRoZSBkZWZhdWx0IDptb2Q6YHBvbGljeWApLCBhY2Nlc3NpbmcgdGhpcyBhdHRyaWJ1dGUgd2lsbAorICAgICAgcmVzdWx0IGluIGEgOmV4YzpgVmFsdWVFcnJvcmAuCisKKworTWFueSBvZiB0aGUgYWJvdmUgY2xhc3NlcyBhbHNvIGhhdmUgYSBgYFVuaXF1ZWBgIHZhcmlhbnQgKGZvciBleGFtcGxlLAorYGBVbmlxdWVVbnN0cnVjdHVyZWRIZWFkZXJgYCkuICBUaGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQgaW4gdGhlIGBgVW5pcXVlYGAKK3ZhcmlhbnQsIDphdHRyOmB+LkJhc2VIZWFkZXIubWF4X2NvdW50YCBpcyBzZXQgdG8gMS4KKworCisuLiBjbGFzczo6IE1JTUVWZXJzaW9uSGVhZGVyCisKKyAgIFRoZXJlIGlzIHJlYWxseSBvbmx5IG9uZSB2YWxpZCB2YWx1ZSBmb3IgdGhlIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gCisgICBoZWFkZXIsIGFuZCB0aGF0IGlzIGBgMS4wYGAuICBGb3IgZnV0dXJlIHByb29maW5nLCB0aGlzIGhlYWRlciBjbGFzcworICAgc3VwcG9ydHMgb3RoZXIgdmFsaWQgdmVyc2lvbiBudW1iZXJzLiAgSWYgYSB2ZXJzaW9uIG51bWJlciBoYXMgYSB2YWxpZCB2YWx1ZQorICAgcGVyIDpyZmM6YDIwNDVgLCB0aGVuIHRoZSBoZWFkZXIgb2JqZWN0IHdpbGwgaGF2ZSBub24tYGBOb25lYGAgdmFsdWVzIGZvcgorICAgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgorCisgICAuLiBhdHRyaWJ1dGU6OiB2ZXJzaW9uCisKKyAgICAgIFRoZSB2ZXJzaW9uIG51bWJlciBhcyBhIHN0cmluZywgd2l0aCBhbnkgd2hpdGVzcGFjZSBhbmQvb3IgY29tbWVudHMKKyAgICAgIHJlbW92ZWQuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG1ham9yCisKKyAgICAgIFRoZSBtYWpvciB2ZXJzaW9uIG51bWJlciBhcyBhbiBpbnRlZ2VyCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG1pbm9yCisKKyAgICAgIFRoZSBtaW5vciB2ZXJzaW9uIG51bWJlciBhcyBhbiBpbnRlZ2VyCisKKworLi4gY2xhc3M6OiBQYXJhbWV0ZXJpemVkTUlNRUhlYWRlcgorCisgICAgTU9NRSBoZWFkZXJzIGFsbCBzdGFydCB3aXRoIHRoZSBwcmVmaXggJ0NvbnRlbnQtJy4gIEVhY2ggc3BlY2lmaWMgaGVhZGVyIGhhcworICAgIGEgY2VydGFpbiB2YWx1ZSwgZGVzY3JpYmVkIHVuZGVyIHRoZSBjbGFzcyBmb3IgdGhhdCBoZWFkZXIuICBTb21lIGNhbgorICAgIGFsc28gdGFrZSBhIGxpc3Qgb2Ygc3VwcGxlbWVudGFsIHBhcmFtZXRlcnMsIHdoaWNoIGhhdmUgYSBjb21tb24gZm9ybWF0LgorICAgIFRoaXMgY2xhc3Mgc2VydmVzIGFzIGEgYmFzZSBmb3IgYWxsIHRoZSBNSU1FIGhlYWRlcnMgdGhhdCB0YWtlIHBhcmFtZXRlcnMuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBwYXJhbXMKKworICAgICAgIEEgZGljdGlvbmFyeSBtYXBwaW5nIHBhcmFtZXRlciBuYW1lcyB0byBwYXJhbWV0ZXIgdmFsdWVzLgorCisKKy4uIGNsYXNzOjogQ29udGVudFR5cGVIZWFkZXIKKworICAgIEEgOmNsYXNzOmBQYXJhbWV0ZXJpemVkTUlNRUhoZWFkZXJgIGNsYXNzIHRoYXQgaGFuZGxlcyB0aGUKKyAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBjb250ZW50X3R5cGUKKworICAgICAgIFRoZSBjb250ZW50IHR5cGUgc3RyaW5nLCBpbiB0aGUgZm9ybSBgYG1haW50eXBlL3N1YnR5cGVgYC4KKworICAgIC4uIGF0dHJpYnV0ZTo6IG1haW50eXBlCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBzdWJ0eXBlCisKKworLi4gY2xhc3M6OiBDb250ZW50RGlzcG9zaXRpb25IZWFkZXIKKworICAgIEEgOmNsYXNzOmBQYXJhbWV0ZXJpemVkTUlNRUhoZWFkZXJgIGNsYXNzIHRoYXQgaGFuZGxlcyB0aGUKKyAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLgorCisgICAgLi4gYXR0cmlidXRlOjogY29udGVudC1kaXNwb3NpdGlvbgorCisgICAgICAgYGBpbmxpbmVgYCBhbmQgYGBhdHRhY2htZW50YGAgYXJlIHRoZSBvbmx5IHZhbGlkIHZhbHVlcyBpbiBjb21tb24gdXNlLgorCisKKy4uIGNsYXNzOjogQ29udGVudFRyYW5zZmVyRW5jb2RpbmcKKworICAgSGFuZGxlcyB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlci4KKworICAgLi4gYXR0cmlidXRlOjogY3RlCisKKyAgICAgIFZhbGlkIHZhbHVlcyBhcmUgYGA3Yml0YGAsIGBgOGJpdGBgLCBgYGJhc2U2NGBgLCBhbmQKKyAgICAgIGBgcXVvdGVkLXByaW50YWJsZWBgLiAgU2VlIDpyZmM6YDIwNDVgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisKKworLi4gY2xhc3M6OiBIZWFkZXJSZWdpc3RyeShiYXNlX2NsYXNzPUJhc2VIZWFkZXIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9jbGFzcz1VbnN0cnVjdHVyZWRIZWFkZXIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2RlZmF1bHRfbWFwPVRydWUpCisKKyAgICBUaGlzIGlzIHRoZSBmYWN0b3J5IHVzZWQgYnkgOmNsYXNzOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5YCBieSBkZWZhdWx0LgorICAgIGBgSGVhZGVyUmVnaXN0cnlgYCBidWlsZHMgdGhlIGNsYXNzIHVzZWQgdG8gY3JlYXRlIGEgaGVhZGVyIGluc3RhbmNlCisgICAgZHluYW1pY2FsbHksIHVzaW5nICpiYXNlX2NsYXNzKiBhbmQgYSBzcGVjaWFsaXplZCBjbGFzcyByZXRyaWV2ZWQgZnJvbSBhCisgICAgcmVnaXN0cnkgdGhhdCBpdCBob2xkcy4gIFdoZW4gYSBnaXZlbiBoZWFkZXIgbmFtZSBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlCisgICAgcmVnaXN0cnksIHRoZSBjbGFzcyBzcGVjaWZpZWQgYnkgKmRlZmF1bHRfY2xhc3MqIGlzIHVzZWQgYXMgdGhlIHNwZWNpYWxpemVkCisgICAgY2xhc3MuICBXaGVuICp1c2VfZGVmYXVsdF9tYXAqIGlzIGBgVHJ1ZWBgICh0aGUgZGVmYXVsdCksIHRoZSBzdGFuZGFyZAorICAgIG1hcHBpbmcgb2YgaGVhZGVyIG5hbWVzIHRvIGNsYXNzZXMgaXMgY29waWVkIGluIHRvIHRoZSByZWdpc3RyeSBkdXJpbmcKKyAgICBpbml0aWFsaXphdGlvbi4gICpiYXNlX2NsYXNzKiBpcyBhbHdheXMgdGhlIGxhc3QgY2xhc3MgaW4gdGhlIGdlbmVyYXRlZAorICAgIGNsYXNzJ3MgYGBfX2Jhc2VzX19gYCBsaXN0LgorCisgICAgVGhlIGRlZmF1bHQgbWFwcGluZ3MgYXJlOgorCisgICAgICA6c3ViamVjdDogICAgICAgICBVbmlxdWVVbnN0cnVjdHVyZWRIZWFkZXIKKyAgICAgIDpkYXRlOiAgICAgICAgICAgIFVuaXF1ZURhdGVIZWFkZXIKKyAgICAgIDpyZXNlbnQtZGF0ZTogICAgIERhdGVIZWFkZXIKKyAgICAgIDpvcmlnLWRhdGU6ICAgICAgIFVuaXF1ZURhdGVIZWFkZXIKKyAgICAgIDpzZW5kZXI6ICAgICAgICAgIFVuaXF1ZVNpbmdsZUFkZHJlc3NIZWFkZXIKKyAgICAgIDpyZXNlbnQtc2VuZGVyOiAgIFNpbmdsZUFkZHJlc3NIZWFkZXIKKyAgICAgIDp0bzogICAgICAgICAgICAgIFVuaXF1ZUFkZHJlc3NIZWFkZXIKKyAgICAgIDpyZXNlbnQtdG86ICAgICAgIEFkZHJlc3NIZWFkZXIKKyAgICAgIDpjYzogICAgICAgICAgICAgIFVuaXF1ZUFkZHJlc3NIZWFkZXIKKyAgICAgIDpyZXNlbnQtY2M6ICAgICAgIEFkZHJlc3NIZWFkZXIKKyAgICAgIDpmcm9tOiAgICAgICAgICAgIFVuaXF1ZUFkZHJlc3NIZWFkZXIKKyAgICAgIDpyZXNlbnQtZnJvbTogICAgIEFkZHJlc3NIZWFkZXIKKyAgICAgIDpyZXBseS10bzogICAgICAgIFVuaXF1ZUFkZHJlc3NIZWFkZXIKKworICAgIGBgSGVhZGVyUmVnaXN0cnlgYCBoYXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorCisKKyAgICAuLiBtZXRob2Q6OiBtYXBfdG9fdHlwZShzZWxmLCBuYW1lLCBjbHMpCisKKyAgICAgICAqbmFtZSogaXMgdGhlIG5hbWUgb2YgdGhlIGhlYWRlciB0byBiZSBtYXBwZWQuICBJdCB3aWxsIGJlIGNvbnZlcnRlZCB0bworICAgICAgIGxvd2VyIGNhc2UgaW4gdGhlIHJlZ2lzdHJ5LiAgKmNscyogaXMgdGhlIHNwZWNpYWxpemVkIGNsYXNzIHRvIGJlIHVzZWQsCisgICAgICAgYWxvbmcgd2l0aCAqYmFzZV9jbGFzcyosIHRvIGNyZWF0ZSB0aGUgY2xhc3MgdXNlZCB0byBpbnN0YW50aWF0ZSBoZWFkZXJzCisgICAgICAgdGhhdCBtYXRjaCAqbmFtZSouCisKKworICAgIC4uIG1ldGhvZDo6IF9fZ2V0aXRlbV9fKG5hbWUpCisKKyAgICAgICBDb25zdHJ1Y3QgYW5kIHJldHVybiBhIGNsYXNzIHRvIGhhbmRsZSBjcmVhdGluZyBhICpuYW1lKiBoZWFkZXIuCisKKworICAgIC4uIG1ldGhvZDo6IF9fY2FsbF9fKG5hbWUsIHZhbHVlKQorCisgICAgICAgUmV0cmlldmVzIHRoZSBzcGVjaWFsaXplZCBoZWFkZXIgYXNzb2NpYXRlZCB3aXRoICpuYW1lKiBmcm9tIHRoZQorICAgICAgIHJlZ2lzdHJ5ICh1c2luZyAqZGVmYXVsdF9jbGFzcyogaWYgKm5hbWUqIGRvZXMgbm90IGFwcGVhciBpbiB0aGUKKyAgICAgICByZWdpc3RyeSkgYW5kIGNvbXBvc2VzIGl0IHdpdGggKmJhc2VfY2xhc3MqIHRvIHByb2R1Y2UgYSBjbGFzcywKKyAgICAgICBjYWxscyB0aGUgY29uc3RydWN0ZWQgY2xhc3MncyBjb25zdHJ1Y3RvciwgcGFzc2luZyBpdCB0aGUgc2FtZQorICAgICAgIGFyZ3VtZW50IGxpc3QsIGFuZCBmaW5hbGx5IHJldHVybnMgdGhlIGNsYXNzIGluc3RhbmNlIGNyZWF0ZWQgdGhlcmVieS4KKworCitUaGUgZm9sbG93aW5nIGNsYXNzZXMgYXJlIHRoZSBjbGFzc2VzIHVzZWQgdG8gcmVwcmVzZW50IGRhdGEgcGFyc2VkIGZyb20KK3N0cnVjdHVyZWQgaGVhZGVycyBhbmQgY2FuLCBpbiBnZW5lcmFsLCBiZSB1c2VkIGJ5IGFuIGFwcGxpY2F0aW9uIHByb2dyYW0gdG8KK2NvbnN0cnVjdCBzdHJ1Y3R1cmVkIHZhbHVlcyB0byBhc3NpZ24gdG8gc3BlY2lmaWMgaGVhZGVycy4KKworCisuLiBjbGFzczo6IEFkZHJlc3MoZGlzcGxheV9uYW1lPScnLCB1c2VybmFtZT0nJywgZG9tYWluPScnLCBhZGRyX3NwZWM9Tm9uZSkKKworICAgVGhlIGNsYXNzIHVzZWQgdG8gcmVwcmVzZW50IGFuIGVtYWlsIGFkZHJlc3MuICBUaGUgZ2VuZXJhbCBmb3JtIG9mIGFuCisgICBhZGRyZXNzIGlzOjoKKworICAgICAgW2Rpc3BsYXlfbmFtZV0gPHVzZXJuYW1lQGRvbWFpbj4KKworICAgb3I6OgorCisgICAgICB1c2VybmFtZUBkb21haW4KKworICAgd2hlcmUgZWFjaCBwYXJ0IG11c3QgY29uZm9ybSB0byBzcGVjaWZpYyBzeW50YXggcnVsZXMgc3BlbGxlZCBvdXQgaW4KKyAgIDpyZmM6YDUzMjJgLgorCisgICBBcyBhIGNvbnZlbmllbmNlICphZGRyX3NwZWMqIGNhbiBiZSBzcGVjaWZpZWQgaW5zdGVhZCBvZiAqdXNlcm5hbWUqIGFuZAorICAgKmRvbWFpbiosIGluIHdoaWNoIGNhc2UgKnVzZXJuYW1lKiBhbmQgKmRvbWFpbiogd2lsbCBiZSBwYXJzZWQgZnJvbSB0aGUKKyAgICphZGRyX3NwZWMqLiAgQW4gKmFkZHJfc3BlYyogbXVzdCBiZSBhIHByb3Blcmx5IFJGQyBxdW90ZWQgc3RyaW5nOyBpZiBpdCBpcworICAgbm90IGBgQWRkcmVzc2BgIHdpbGwgcmFpc2UgYW4gZXJyb3IuICBVbmljb2RlIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQgYW5kCisgICB3aWxsIGJlIHByb3BlcnR5IGVuY29kZWQgd2hlbiBzZXJpYWxpemVkLiAgSG93ZXZlciwgcGVyIHRoZSBSRkNzLCB1bmljb2RlIGlzCisgICAqbm90KiBhbGxvd2VkIGluIHRoZSB1c2VybmFtZSBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBkaXNwbGF5X25hbWUKKworICAgICAgVGhlIGRpc3BsYXkgbmFtZSBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLCBpZiBhbnksIHdpdGggYWxsIHF1b3RpbmcKKyAgICAgIHJlbW92ZWQuICBJZiB0aGUgYWRkcmVzcyBkb2VzIG5vdCBoYXZlIGEgZGlzcGxheSBuYW1lLCB0aGlzIGF0dHJpYnV0ZQorICAgICAgd2lsbCBiZSBhbiBlbXB0eSBzdHJpbmcuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHVzZXJuYW1lCisKKyAgICAgIFRoZSBgYHVzZXJuYW1lYGAgcG9ydGlvbiBvZiB0aGUgYWRkcmVzcywgd2l0aCBhbGwgcXVvdGluZyByZW1vdmVkLgorCisgICAuLiBhdHRyaWJ1dGU6OiBkb21haW4KKworICAgICAgVGhlIGBgZG9tYWluYGAgcG9ydGlvbiBvZiB0aGUgYWRkcmVzcy4KKworICAgLi4gYXR0cmlidXRlOjogYWRkcl9zcGVjCisKKyAgICAgIFRoZSBgYHVzZXJuYW1lQGRvbWFpbmBgIHBvcnRpb24gb2YgdGhlIGFkZHJlc3MsIGNvcnJlY3RseSBxdW90ZWQKKyAgICAgIGZvciB1c2UgYXMgYSBiYXJlIGFkZHJlc3MgKHRoZSBzZWNvbmQgZm9ybSBzaG93biBhYm92ZSkuICBUaGlzCisgICAgICBhdHRyaWJ1dGUgaXMgbm90IG11dGFibGUuCisKKyAgIC4uIG1ldGhvZDo6IF9fc3RyX18oKQorCisgICAgICBUaGUgYGBzdHJgYCB2YWx1ZSBvZiB0aGUgb2JqZWN0IGlzIHRoZSBhZGRyZXNzIHF1b3RlZCBhY2NvcmRpbmcgdG8KKyAgICAgIDpyZmM6YDUzMjJgIHJ1bGVzLCBidXQgd2l0aCBubyBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5nIG9mIGFueSBub24tQVNDSUkKKyAgICAgIGNoYXJhY3RlcnMuCisKKyAgIFRvIHN1cHBvcnQgU01UUCAoOnJmYzpgNTMyMWApLCBgYEFkZHJlc3NgYCBoYW5kbGVzIG9uZSBzcGVjaWFsIGNhc2U6IGlmCisgICBgYHVzZXJuYW1lYGAgYW5kIGBgZG9tYWluYGAgYXJlIGJvdGggdGhlIGVtcHR5IHN0cmluZyAob3IgYGBOb25lYGApLCB0aGVuCisgICB0aGUgc3RyaW5nIHZhbHVlIG9mIHRoZSBgYEFkZHJlc3NgYCBpcyBgYDw+YGAuCisKKworLi4gY2xhc3M6OiBHcm91cChkaXNwbGF5X25hbWU9Tm9uZSwgYWRkcmVzc2VzPU5vbmUpCisKKyAgIFRoZSBjbGFzcyB1c2VkIHRvIHJlcHJlc2VudCBhbiBhZGRyZXNzIGdyb3VwLiAgVGhlIGdlbmVyYWwgZm9ybSBvZiBhbgorICAgYWRkcmVzcyBncm91cCBpczo6CisKKyAgICAgZGlzcGxheV9uYW1lOiBbYWRkcmVzcy1saXN0XTsKKworICAgQXMgYSBjb252ZW5pZW5jZSBmb3IgcHJvY2Vzc2luZyBsaXN0cyBvZiBhZGRyZXNzZXMgdGhhdCBjb25zaXN0IG9mIGEgbWl4dHVyZQorICAgb2YgZ3JvdXBzIGFuZCBzaW5nbGUgYWRkcmVzc2VzLCBhIGBgR3JvdXBgYCBtYXkgYWxzbyBiZSB1c2VkIHRvIHJlcHJlc2VudAorICAgc2luZ2xlIGFkZHJlc3NlcyB0aGF0IGFyZSBub3QgcGFydCBvZiBhIGdyb3VwIGJ5IHNldHRpbmcgKmRpc3BsYXlfbmFtZSogdG8KKyAgIGBgTm9uZWBgIGFuZCBwcm92aWRpbmcgYSBsaXN0IG9mIHRoZSBzaW5nbGUgYWRkcmVzcyBhcyAqYWRkcmVzc2VzKi4KKworICAgLi4gYXR0cmlidXRlOjogZGlzcGxheV9uYW1lCisKKyAgICAgIFRoZSBgYGRpc3BsYXlfbmFtZWBgIG9mIHRoZSBncm91cC4gIElmIGl0IGlzIGBgTm9uZWBgIGFuZCB0aGVyZSBpcworICAgICAgZXhhY3RseSBvbmUgYGBBZGRyZXNzYGAgaW4gYGBhZGRyZXNzZXNgYCwgdGhlbiB0aGUgYGBHcm91cGBgIHJlcHJlc2VudHMgYQorICAgICAgc2luZ2xlIGFkZHJlc3MgdGhhdCBpcyBub3QgaW4gYSBncm91cC4KKworICAgLi4gYXR0cmlidXRlOjogYWRkcmVzc2VzCisKKyAgICAgIEEgcG9zc2libHkgZW1wdHkgdHVwbGUgb2YgOmNsYXNzOmAuQWRkcmVzc2Agb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlCisgICAgICBhZGRyZXNzZXMgaW4gdGhlIGdyb3VwLgorCisgICAuLiBtZXRob2Q6OiBfX3N0cl9fKCkKKworICAgICAgVGhlIGBgc3RyYGAgdmFsdWUgb2YgYSBgYEdyb3VwYGAgaXMgZm9ybWF0dGVkIGFjY29yZGluZyB0byA6cmZjOmA1MzIyYCwKKyAgICAgIGJ1dCB3aXRoIG5vIENvbnRlbnQgVHJhbnNmZXIgRW5jb2Rpbmcgb2YgYW55IG5vbi1BU0NJSSBjaGFyYWN0ZXJzLiAgSWYKKyAgICAgIGBgZGlzcGxheV9uYW1lYGAgaXMgbm9uZSBhbmQgdGhlcmUgaXMgYSBzaW5nbGUgYGBBZGRyZXNzYGAgaW4gdGhlCisgICAgICBgYGFkZHJlc3Nlc2BgIGxpc3QsIHRoZSBgYHN0cmBgIHZhbHVlIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlIGBgc3RyYGAgb2YKKyAgICAgIHRoYXQgc2luZ2xlIGBgQWRkcmVzc2BgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5tZXNzYWdlLnJzdAppbmRleCBmNjg1ZTU0Li41OWFiNDdkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5tZXNzYWdlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5tZXNzYWdlLnJzdApAQCAtMTExLDEwICsxMTEsMTQgQEAKICAgICAgIGhlYWRlci4gV2hlbiBgYFRydWVgYCBhbmQgdGhlIG1lc3NhZ2UgaXMgbm90IGEgbXVsdGlwYXJ0LCB0aGUgcGF5bG9hZCB3aWxsCiAgICAgICBiZSBkZWNvZGVkIGlmIHRoaXMgaGVhZGVyJ3MgdmFsdWUgaXMgYGBxdW90ZWQtcHJpbnRhYmxlYGAgb3IgYGBiYXNlNjRgYC4KICAgICAgIElmIHNvbWUgb3RoZXIgZW5jb2RpbmcgaXMgdXNlZCwgb3IgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgCi0gICAgICBoZWFkZXIgaXMgbWlzc2luZywgb3IgaWYgdGhlIHBheWxvYWQgaGFzIGJvZ3VzIGJhc2U2NCBkYXRhLCB0aGUgcGF5bG9hZCBpcworICAgICAgaGVhZGVyIGlzIG1pc3NpbmcsIHRoZSBwYXlsb2FkIGlzCiAgICAgICByZXR1cm5lZCBhcy1pcyAodW5kZWNvZGVkKS4gIEluIGFsbCBjYXNlcyB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgYmluYXJ5CiAgICAgICBkYXRhLiAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBtdWx0aXBhcnQgYW5kIHRoZSAqZGVjb2RlKiBmbGFnIGlzIGBgVHJ1ZWBgLAotICAgICAgdGhlbiBgYE5vbmVgYCBpcyByZXR1cm5lZC4KKyAgICAgIHRoZW4gYGBOb25lYGAgaXMgcmV0dXJuZWQuICBJZiB0aGUgcGF5bG9hZCBpcyBiYXNlNjQgYW5kIGl0IHdhcyBub3QKKyAgICAgIHBlcmZlY3RseSBmb3JtZWQgKG1pc3NpbmcgcGFkZGluZywgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBiYXNlNjQKKyAgICAgIGFscGhhYmV0KSwgdGhlbiBhbiBhcHByb3ByaWF0ZSBkZWZlY3Qgd2lsbCBiZSBhZGRlZCB0byB0aGUgbWVzc2FnZSdzCisgICAgICBkZWZlY3QgcHJvcGVydHkgKDpjbGFzczpgfmVtYWlsLmVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdGAgb3IKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdGAsIHJlc3BlY3RpdmVseSkuCiAKICAgICAgIFdoZW4gKmRlY29kZSogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCkgdGhlIGJvZHkgaXMgcmV0dXJuZWQgYXMgYSBzdHJpbmcKICAgICAgIHdpdGhvdXQgZGVjb2RpbmcgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYC4gIEhvd2V2ZXIsCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLm1pbWUucnN0CmluZGV4IGFlMzQwZjcuLmRiNTU4NGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLm1pbWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLm1pbWUucnN0CkBAIC0xNzUsNyArMTc1LDcgQEAKIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUudGV4dAogCi0uLiBjbGFzczo6IE1JTUVUZXh0KF90ZXh0LCBfc3VidHlwZT0ncGxhaW4nLCBfY2hhcnNldD0ndXMtYXNjaWknKQorLi4gY2xhc3M6OiBNSU1FVGV4dChfdGV4dCwgX3N1YnR5cGU9J3BsYWluJywgX2NoYXJzZXQ9Tm9uZSkKIAogICAgTW9kdWxlOiA6bW9kOmBlbWFpbC5taW1lLnRleHRgCiAKQEAgLTE4NSw1ICsxODUsNSBAQAogICAgbWlub3IgdHlwZSBhbmQgZGVmYXVsdHMgdG8gOm1pbWV0eXBlOmBwbGFpbmAuICAqX2NoYXJzZXQqIGlzIHRoZSBjaGFyYWN0ZXIKICAgIHNldCBvZiB0aGUgdGV4dCBhbmQgaXMgcGFzc2VkIGFzIGEgcGFyYW1ldGVyIHRvIHRoZQogICAgOmNsYXNzOmB+ZW1haWwubWltZS5ub25tdWx0aXBhcnQuTUlNRU5vbk11bHRpcGFydGAgY29uc3RydWN0b3I7IGl0IGRlZmF1bHRzCi0gICB0byBgYHVzLWFzY2lpYGAuICBObyBndWVzc2luZyBvciBlbmNvZGluZyBpcyBwZXJmb3JtZWQgb24gdGhlIHRleHQgZGF0YS4KLQorICAgdG8gYGB1cy1hc2NpaWBgIGlmIHRoZSBzdHJpbmcgY29udGFpbnMgb25seSBgYGFzY2lpYGAgY29kZXBvaW50cywgYW5kCisgICBgYHV0Zi04YGAgb3RoZXJ3aXNlLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwucGFyc2VyLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLnBhcnNlci5yc3QKaW5kZXggNDlhNTljMC4uNmE0MzU2MSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwucGFyc2VyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5wYXJzZXIucnN0CkBAIC01OCwxMiArNTgsMTggQEAKIEhlcmUgaXMgdGhlIEFQSSBmb3IgdGhlIDpjbGFzczpgRmVlZFBhcnNlcmA6CiAKIAotLi4gY2xhc3M6OiBGZWVkUGFyc2VyKF9mYWN0b3J5PWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSkKKy4uIGNsYXNzOjogRmVlZFBhcnNlcihfZmFjdG9yeT1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIHBvbGljeT1wb2xpY3kuZGVmYXVsdCkKIAogICAgQ3JlYXRlIGEgOmNsYXNzOmBGZWVkUGFyc2VyYCBpbnN0YW5jZS4gIE9wdGlvbmFsICpfZmFjdG9yeSogaXMgYSBuby1hcmd1bWVudAogICAgY2FsbGFibGUgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBhIG5ldyBtZXNzYWdlIG9iamVjdCBpcyBuZWVkZWQuICBJdAogICAgZGVmYXVsdHMgdG8gdGhlIDpjbGFzczpgZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcy4KIAorICAgVGhlICpwb2xpY3kqIGtleXdvcmQgc3BlY2lmaWVzIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAgb2JqZWN0IHRoYXQgY29udHJvbHMgYQorICAgbnVtYmVyIG9mIGFzcGVjdHMgb2YgdGhlIHBhcnNlcidzIG9wZXJhdGlvbi4gIFRoZSBkZWZhdWx0IHBvbGljeSBtYWludGFpbnMKKyAgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorCiAgICAuLiBtZXRob2Q6OiBmZWVkKGRhdGEpCiAKICAgICAgIEZlZWQgdGhlIDpjbGFzczpgRmVlZFBhcnNlcmAgc29tZSBtb3JlIGRhdGEuICAqZGF0YSogc2hvdWxkIGJlIGEgc3RyaW5nCkBAIC05NCwxNSArMTAwLDE4IEBACiBUaGUgOmNsYXNzOmBQYXJzZXJgIGNsYXNzLCBpbXBvcnRlZCBmcm9tIHRoZSA6bW9kOmBlbWFpbC5wYXJzZXJgIG1vZHVsZSwKIHByb3ZpZGVzIGFuIEFQSSB0aGF0IGNhbiBiZSB1c2VkIHRvIHBhcnNlIGEgbWVzc2FnZSB3aGVuIHRoZSBjb21wbGV0ZSBjb250ZW50cwogb2YgdGhlIG1lc3NhZ2UgYXJlIGF2YWlsYWJsZSBpbiBhIHN0cmluZyBvciBmaWxlLiAgVGhlIDptb2Q6YGVtYWlsLnBhcnNlcmAKLW1vZHVsZSBhbHNvIHByb3ZpZGVzIGEgc2Vjb25kIGNsYXNzLCBjYWxsZWQgOmNsYXNzOmBIZWFkZXJQYXJzZXJgIHdoaWNoIGNhbiBiZQotdXNlZCBpZiB5b3UncmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBoZWFkZXJzIG9mIHRoZSBtZXNzYWdlLgotOmNsYXNzOmBIZWFkZXJQYXJzZXJgIGNhbiBiZSBtdWNoIGZhc3RlciBpbiB0aGVzZSBzaXR1YXRpb25zLCBzaW5jZSBpdCBkb2VzIG5vdAotYXR0ZW1wdCB0byBwYXJzZSB0aGUgbWVzc2FnZSBib2R5LCBpbnN0ZWFkIHNldHRpbmcgdGhlIHBheWxvYWQgdG8gdGhlIHJhdyBib2R5Ci1hcyBhIHN0cmluZy4gOmNsYXNzOmBIZWFkZXJQYXJzZXJgIGhhcyB0aGUgc2FtZSBBUEkgYXMgdGhlIDpjbGFzczpgUGFyc2VyYAotY2xhc3MuCittb2R1bGUgYWxzbyBwcm92aWRlcyBoZWFkZXItb25seSBwYXJzZXJzLCBjYWxsZWQgOmNsYXNzOmBIZWFkZXJQYXJzZXJgIGFuZAorOmNsYXNzOmBCeXRlc0hlYWRlclBhcnNlcmAsIHdoaWNoIGNhbiBiZSB1c2VkIGlmIHlvdSdyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlCitoZWFkZXJzIG9mIHRoZSBtZXNzYWdlLiAgOmNsYXNzOmBIZWFkZXJQYXJzZXJgIGFuZCA6Y2xhc3M6YEJ5dGVzSGVhZGVyUGFyc2VyYAorY2FuIGJlIG11Y2ggZmFzdGVyIGluIHRoZXNlIHNpdHVhdGlvbnMsIHNpbmNlIHRoZXkgZG8gbm90IGF0dGVtcHQgdG8gcGFyc2UgdGhlCittZXNzYWdlIGJvZHksIGluc3RlYWQgc2V0dGluZyB0aGUgcGF5bG9hZCB0byB0aGUgcmF3IGJvZHkgYXMgYSBzdHJpbmcuICBUaGV5CitoYXZlIHRoZSBzYW1lIEFQSSBhcyB0aGUgOmNsYXNzOmBQYXJzZXJgIGFuZCA6Y2xhc3M6YEJ5dGVzUGFyc2VyYCBjbGFzc2VzLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgIFRoZSBCeXRlc0hlYWRlclBhcnNlciBjbGFzcy4KIAogCi0uLiBjbGFzczo6IFBhcnNlcihfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCBzdHJpY3Q9Tm9uZSkKKy4uIGNsYXNzOjogUGFyc2VyKF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIHBvbGljeT1wb2xpY3kuZGVmYXVsdCkKIAogICAgVGhlIGNvbnN0cnVjdG9yIGZvciB0aGUgOmNsYXNzOmBQYXJzZXJgIGNsYXNzIHRha2VzIGFuIG9wdGlvbmFsIGFyZ3VtZW50CiAgICAqX2NsYXNzKi4gIFRoaXMgbXVzdCBiZSBhIGNhbGxhYmxlIGZhY3RvcnkgKHN1Y2ggYXMgYSBmdW5jdGlvbiBvciBhIGNsYXNzKSwgYW5kCkBAIC0xMTAsMTMgKzExOSwxMyBAQAogICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCAoc2VlIDptb2Q6YGVtYWlsLm1lc3NhZ2VgKS4gIFRoZSBmYWN0b3J5IHdpbGwKICAgIGJlIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cy4KIAotICAgVGhlIG9wdGlvbmFsICpzdHJpY3QqIGZsYWcgaXMgaWdub3JlZC4KKyAgIFRoZSAqcG9saWN5KiBrZXl3b3JkIHNwZWNpZmllcyBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9iamVjdCB0aGF0IGNvbnRyb2xzIGEKKyAgIG51bWJlciBvZiBhc3BlY3RzIG9mIHRoZSBwYXJzZXIncyBvcGVyYXRpb24uICBUaGUgZGVmYXVsdCBwb2xpY3kgbWFpbnRhaW5zCisgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgogCi0gICAuLiBkZXByZWNhdGVkOjogMi40Ci0gICAgICBCZWNhdXNlIHRoZSA6Y2xhc3M6YFBhcnNlcmAgY2xhc3MgaXMgYSBiYWNrd2FyZCBjb21wYXRpYmxlIEFQSSB3cmFwcGVyCi0gICAgICBhcm91bmQgdGhlIG5ldy1pbi1QeXRob24gMi40IDpjbGFzczpgRmVlZFBhcnNlcmAsICphbGwqIHBhcnNpbmcgaXMKLSAgICAgIGVmZmVjdGl2ZWx5IG5vbi1zdHJpY3QuICBZb3Ugc2hvdWxkIHNpbXBseSBzdG9wIHBhc3NpbmcgYSAqc3RyaWN0KiBmbGFnIHRvCi0gICAgICB0aGUgOmNsYXNzOmBQYXJzZXJgIGNvbnN0cnVjdG9yLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50IHRoYXQgd2FzIGRlcHJlY2F0ZWQgaW4gMi40LiAgQWRkZWQgdGhlCisgICAgICAqcG9saWN5KiBrZXl3b3JkLgogCiAgICBUaGUgb3RoZXIgcHVibGljIDpjbGFzczpgUGFyc2VyYCBtZXRob2RzIGFyZToKIApAQCAtMTQ3LDEyICsxNTYsMTggQEAKICAgICAgIE9wdGlvbmFsICpoZWFkZXJzb25seSogaXMgYXMgd2l0aCB0aGUgOm1ldGg6YHBhcnNlYCBtZXRob2QuCiAKIAotLi4gY2xhc3M6OiBCeXRlc1BhcnNlcihfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCBzdHJpY3Q9Tm9uZSkKKy4uIGNsYXNzOjogQnl0ZXNQYXJzZXIoX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgcG9saWN5PXBvbGljeS5kZWZhdWx0KQogCiAgICBUaGlzIGNsYXNzIGlzIGV4YWN0bHkgcGFyYWxsZWwgdG8gOmNsYXNzOmBQYXJzZXJgLCBidXQgaGFuZGxlcyBieXRlcyBpbnB1dC4KICAgIFRoZSAqX2NsYXNzKiBhbmQgKnN0cmljdCogYXJndW1lbnRzIGFyZSBpbnRlcnByZXRlZCBpbiB0aGUgc2FtZSB3YXkgYXMgZm9yCi0gICB0aGUgOmNsYXNzOmBQYXJzZXJgIGNvbnN0cnVjdG9yLiAgKnN0cmljdCogaXMgc3VwcG9ydGVkIG9ubHkgdG8gbWFrZSBwb3J0aW5nCi0gICBjb2RlIGVhc2llcjsgaXQgaXMgZGVwcmVjYXRlZC4KKyAgIHRoZSA6Y2xhc3M6YFBhcnNlcmAgY29uc3RydWN0b3IuCisKKyAgIFRoZSAqcG9saWN5KiBrZXl3b3JkIHNwZWNpZmllcyBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9iamVjdCB0aGF0CisgICBjb250cm9scyBhIG51bWJlciBvZiBhc3BlY3RzIG9mIHRoZSBwYXJzZXIncyBvcGVyYXRpb24uICBUaGUgZGVmYXVsdAorICAgcG9saWN5IG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KIAogICAgLi4gbWV0aG9kOjogcGFyc2UoZnAsIGhlYWRlcm9ubHk9RmFsc2UpCiAKQEAgLTE5MCwzOSArMjA1LDUzIEBACiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbAogCi0uLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9zdHJpbmcocywgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgc3RyaWN0PU5vbmUpCisuLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9zdHJpbmcocywgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kuZGVmYXVsdCkKIAogICAgUmV0dXJuIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGZyb20gYSBzdHJpbmcuICBUaGlzIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0bwotICAgYGBQYXJzZXIoKS5wYXJzZXN0cihzKWBgLiAgT3B0aW9uYWwgKl9jbGFzcyogYW5kICpzdHJpY3QqIGFyZSBpbnRlcnByZXRlZCBhcworICAgYGBQYXJzZXIoKS5wYXJzZXN0cihzKWBgLiAgKl9jbGFzcyogYW5kICpwb2xpY3kqIGFyZSBpbnRlcnByZXRlZCBhcwogICAgd2l0aCB0aGUgOmNsYXNzOmBQYXJzZXJgIGNsYXNzIGNvbnN0cnVjdG9yLgogCi0uLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9ieXRlcyhzLCBfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCBzdHJpY3Q9Tm9uZSkKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorCisuLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9ieXRlcyhzLCBfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmRlZmF1bHQpCiAKICAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBmcm9tIGEgYnl0ZSBzdHJpbmcuICBUaGlzIGlzIGV4YWN0bHkKICAgIGVxdWl2YWxlbnQgdG8gYGBCeXRlc1BhcnNlcigpLnBhcnNlYnl0ZXMocylgYC4gIE9wdGlvbmFsICpfY2xhc3MqIGFuZAogICAgKnN0cmljdCogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcyBjb25zdHJ1Y3Rvci4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KIAotLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fZmlsZShmcCwgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgc3RyaWN0PU5vbmUpCisuLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9maWxlKGZwLCBfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kuZGVmYXVsdCkKIAogICAgUmV0dXJuIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIHRyZWUgZnJvbSBhbiBvcGVuIDp0ZXJtOmBmaWxlIG9iamVjdGAuCi0gICBUaGlzIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0byBgYFBhcnNlcigpLnBhcnNlKGZwKWBgLiAgT3B0aW9uYWwgKl9jbGFzcyoKLSAgIGFuZCAqc3RyaWN0KiBhcmUgaW50ZXJwcmV0ZWQgYXMgd2l0aCB0aGUgOmNsYXNzOmBQYXJzZXJgIGNsYXNzIGNvbnN0cnVjdG9yLgorICAgVGhpcyBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8gYGBQYXJzZXIoKS5wYXJzZShmcClgYC4gICpfY2xhc3MqCisgICBhbmQgKnBvbGljeSogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcyBjb25zdHJ1Y3Rvci4KIAotLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZnAsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsIHN0cmljdD1Ob25lKQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OgorICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKworLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZnAsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kuZGVmYXVsdCkKIAogICAgUmV0dXJuIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIHRyZWUgZnJvbSBhbiBvcGVuIGJpbmFyeSA6dGVybTpgZmlsZQogICAgb2JqZWN0YC4gIFRoaXMgaXMgZXhhY3RseSBlcXVpdmFsZW50IHRvIGBgQnl0ZXNQYXJzZXIoKS5wYXJzZShmcClgYC4KLSAgIE9wdGlvbmFsICpfY2xhc3MqIGFuZCAqc3RyaWN0KiBhcmUgaW50ZXJwcmV0ZWQgYXMgd2l0aCB0aGUgOmNsYXNzOmBQYXJzZXJgCisgICAqX2NsYXNzKiBhbmQgKnBvbGljeSogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgUGFyc2VyYAogICAgY2xhc3MgY29uc3RydWN0b3IuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCiAKIEhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB5b3UgbWlnaHQgdXNlIHRoaXMgYXQgYW4gaW50ZXJhY3RpdmUgUHl0aG9uIHByb21wdDo6CiAKICAgID4+PiBpbXBvcnQgZW1haWwKLSAgID4+PiBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKG15U3RyaW5nKQorICAgPj4+IG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcobXlTdHJpbmcpICAjIGRvY3Rlc3Q6ICtTS0lQCiAKIAogQWRkaXRpb25hbCBub3RlcwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwucG9saWN5LnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFhYzVjMAotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QKQEAgLTAsMCArMSw0OTcgQEAKKzptb2Q6YGVtYWlsLnBvbGljeWA6IFBvbGljeSBPYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBtb2R1bGU6OiBlbWFpbC5wb2xpY3kKKyAgIDpzeW5vcHNpczogQ29udHJvbGxpbmcgdGhlIHBhcnNpbmcgYW5kIGdlbmVyYXRpbmcgb2YgbWVzc2FnZXMKKworLi4gbW9kdWxlYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CisuLiBzZWN0aW9uYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKK1RoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSdzIHByaW1lIGZvY3VzIGlzIHRoZSBoYW5kbGluZyBvZiBlbWFpbCBtZXNzYWdlcyBhcworZGVzY3JpYmVkIGJ5IHRoZSB2YXJpb3VzIGVtYWlsIGFuZCBNSU1FIFJGQ3MuICBIb3dldmVyLCB0aGUgZ2VuZXJhbCBmb3JtYXQgb2YKK2VtYWlsIG1lc3NhZ2VzIChhIGJsb2NrIG9mIGhlYWRlciBmaWVsZHMgZWFjaCBjb25zaXN0aW5nIG9mIGEgbmFtZSBmb2xsb3dlZCBieQorYSBjb2xvbiBmb2xsb3dlZCBieSBhIHZhbHVlLCB0aGUgd2hvbGUgYmxvY2sgZm9sbG93ZWQgYnkgYSBibGFuayBsaW5lIGFuZCBhbgorYXJiaXRyYXJ5ICdib2R5JyksIGlzIGEgZm9ybWF0IHRoYXQgaGFzIGZvdW5kIHV0aWxpdHkgb3V0c2lkZSBvZiB0aGUgcmVhbG0gb2YKK2VtYWlsLiAgU29tZSBvZiB0aGVzZSB1c2VzIGNvbmZvcm0gZmFpcmx5IGNsb3NlbHkgdG8gdGhlIG1haW4gUkZDcywgc29tZSBkbworbm90LiAgQW5kIGV2ZW4gd2hlbiB3b3JraW5nIHdpdGggZW1haWwsIHRoZXJlIGFyZSB0aW1lcyB3aGVuIGl0IGlzIGRlc2lyYWJsZSB0bworYnJlYWsgc3RyaWN0IGNvbXBsaWFuY2Ugd2l0aCB0aGUgUkZDcy4KKworUG9saWN5IG9iamVjdHMgZ2l2ZSB0aGUgZW1haWwgcGFja2FnZSB0aGUgZmxleGliaWxpdHkgdG8gaGFuZGxlIGFsbCB0aGVzZQorZGlzcGFyYXRlIHVzZSBjYXNlcy4KKworQSA6Y2xhc3M6YFBvbGljeWAgb2JqZWN0IGVuY2Fwc3VsYXRlcyBhIHNldCBvZiBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzIHRoYXQKK2NvbnRyb2wgdGhlIGJlaGF2aW9yIG9mIHZhcmlvdXMgY29tcG9uZW50cyBvZiB0aGUgZW1haWwgcGFja2FnZSBkdXJpbmcgdXNlLgorOmNsYXNzOmBQb2xpY3lgIGluc3RhbmNlcyBjYW4gYmUgcGFzc2VkIHRvIHZhcmlvdXMgY2xhc3NlcyBhbmQgbWV0aG9kcyBpbiB0aGUKK2VtYWlsIHBhY2thZ2UgdG8gYWx0ZXIgdGhlIGRlZmF1bHQgYmVoYXZpb3IuICBUaGUgc2V0dGFibGUgdmFsdWVzIGFuZCB0aGVpcgorZGVmYXVsdHMgYXJlIGRlc2NyaWJlZCBiZWxvdy4KKworVGhlcmUgaXMgYSBkZWZhdWx0IHBvbGljeSB1c2VkIGJ5IGFsbCBjbGFzc2VzIGluIHRoZSBlbWFpbCBwYWNrYWdlLiAgVGhpcworcG9saWN5IGlzIG5hbWVkIDpjbGFzczpgQ29tcGF0MzJgLCB3aXRoIGEgY29ycmVzcG9uZGluZyBwcmUtZGVmaW5lZCBpbnN0YW5jZQorbmFtZWQgOmNvbnN0OmBjb21wYXQzMmAuICBJdCBwcm92aWRlcyBmb3IgY29tcGxldGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSAoaW4KK3NvbWUgY2FzZXMsIGluY2x1ZGluZyBidWcgY29tcGF0aWJpbGl0eSkgd2l0aCB0aGUgcHJlLVB5dGhvbjMuMyB2ZXJzaW9uIG9mIHRoZQorZW1haWwgcGFja2FnZS4KKworVGhlIGZpcnN0IHBhcnQgb2YgdGhpcyBkb2N1bWVudGF0aW9uIGNvdmVycyB0aGUgZmVhdHVyZXMgb2YgOmNsYXNzOmBQb2xpY3lgLCBhbgorOnRlcm06YGFic3RyYWN0IGJhc2UgY2xhc3NgICB0aGF0IGRlZmluZXMgdGhlIGZlYXR1cmVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwKK3BvbGljeSBvYmplY3RzLCBpbmNsdWRpbmcgOmNvbnN0OmBjb21wYXQzMmAuICBUaGlzIGluY2x1ZGVzIGNlcnRhaW4gaG9vaworbWV0aG9kcyB0aGF0IGFyZSBjYWxsZWQgaW50ZXJuYWxseSBieSB0aGUgZW1haWwgcGFja2FnZSwgd2hpY2ggYSBjdXN0b20gcG9saWN5Citjb3VsZCBvdmVycmlkZSB0byBvYnRhaW4gZGlmZmVyZW50IGJlaGF2aW9yLgorCitXaGVuIGEgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3QgaXMgY3JlYXRlZCwgaXQgYWNxdWlyZXMgYSBwb2xpY3kuCitCeSBkZWZhdWx0IHRoaXMgd2lsbCBiZSA6Y29uc3Q6YGNvbXBhdDMyYCwgYnV0IGEgZGlmZmVyZW50IHBvbGljeSBjYW4gYmUKK3NwZWNpZmllZC4gIElmIHRoZSBgYE1lc3NhZ2VgYCBpcyBjcmVhdGVkIGJ5IGEgOm1vZDpgfmVtYWlsLnBhcnNlcmAsIGEgcG9saWN5CitwYXNzZWQgdG8gdGhlIHBhcnNlciB3aWxsIGJlIHRoZSBwb2xpY3kgdXNlZCBieSB0aGUgYGBNZXNzYWdlYGAgaXQgY3JlYXRlcy4gIElmCit0aGUgYGBNZXNzYWdlYGAgaXMgY3JlYXRlZCBieSB0aGUgcHJvZ3JhbSwgdGhlbiB0aGUgcG9saWN5IGNhbiBiZSBzcGVjaWZpZWQKK3doZW4gaXQgaXMgY3JlYXRlZC4gIFdoZW4gYSBgYE1lc3NhZ2VgYCBpcyBwYXNzZWQgdG8gYSA6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYCwKK3RoZSBnZW5lcmF0b3IgdXNlcyB0aGUgcG9saWN5IGZyb20gdGhlIGBgTWVzc2FnZWBgIGJ5IGRlZmF1bHQsIGJ1dCB5b3UgY2FuIGFsc28KK3Bhc3MgYSBzcGVjaWZpYyBwb2xpY3kgdG8gdGhlIGdlbmVyYXRvciB0aGF0IHdpbGwgb3ZlcnJpZGUgdGhlIG9uZSBzdG9yZWQgb24KK3RoZSBgYE1lc3NhZ2VgYCBvYmplY3QuCisKKzpjbGFzczpgUG9saWN5YCBpbnN0YW5jZXMgYXJlIGltbXV0YWJsZSwgYnV0IHRoZXkgY2FuIGJlIGNsb25lZCwgYWNjZXB0aW5nIHRoZQorc2FtZSBrZXl3b3JkIGFyZ3VtZW50cyBhcyB0aGUgY2xhc3MgY29uc3RydWN0b3IgYW5kIHJldHVybmluZyBhIG5ldworOmNsYXNzOmBQb2xpY3lgIGluc3RhbmNlIHRoYXQgaXMgYSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBidXQgd2l0aCB0aGUgc3BlY2lmaWVkCithdHRyaWJ1dGVzIHZhbHVlcyBjaGFuZ2VkLgorCitBcyBhbiBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGUgY291bGQgYmUgdXNlZCB0byByZWFkIGFuIGVtYWlsIG1lc3NhZ2UgZnJvbSBhCitmaWxlIG9uIGRpc2sgYW5kIHBhc3MgaXQgdG8gdGhlIHN5c3RlbSBgYHNlbmRtYWlsYGAgcHJvZ3JhbSBvbiBhIFVuaXggc3lzdGVtOjoKKworICAgPj4+IGZyb20gZW1haWwgaW1wb3J0IG1zZ19mcm9tX2JpbmFyeV9maWxlCisgICA+Pj4gZnJvbSBlbWFpbC5nZW5lcmF0b3IgaW1wb3J0IEJ5dGVzR2VuZXJhdG9yCisgICA+Pj4gZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBQb3BlbiwgUElQRQorICAgPj4+IHdpdGggb3BlbignbXltc2cudHh0JywgJ2InKSBhcyBmOgorICAgLi4uICAgICBtc2cgPSBtc2dfZnJvbV9iaW5hcnlfZmlsZShmKQorICAgPj4+IHAgPSBQb3BlbihbJ3NlbmRtYWlsJywgbXNnWydUbyddWzBdLmFkZHJlc3NdLCBzdGRpbj1QSVBFKQorICAgPj4+IGcgPSBCeXRlc0dlbmVyYXRvcihwLnN0ZGluLCBwb2xpY3k9bXNnLnBvbGljeS5jbG9uZShsaW5lc2VwPSdcclxuJykpCisgICA+Pj4gZy5mbGF0dGVuKG1zZykKKyAgID4+PiBwLnN0ZGluLmNsb3NlKCkKKyAgID4+PiByYyA9IHAud2FpdCgpCisKK0hlcmUgd2UgYXJlIHRlbGxpbmcgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYCB0byB1c2UgdGhlIFJGQworY29ycmVjdCBsaW5lIHNlcGFyYXRvciBjaGFyYWN0ZXJzIHdoZW4gY3JlYXRpbmcgdGhlIGJpbmFyeSBzdHJpbmcgdG8gZmVlZCBpbnRvCitgYHNlbmRtYWlsJ3NgYCBgYHN0ZGluYGAsIHdoZXJlIHRoZSBkZWZhdWx0IHBvbGljeSB3b3VsZCB1c2UgYGBcbmBgIGxpbmUKK3NlcGFyYXRvcnMuCisKK1NvbWUgZW1haWwgcGFja2FnZSBtZXRob2RzIGFjY2VwdCBhICpwb2xpY3kqIGtleXdvcmQgYXJndW1lbnQsIGFsbG93aW5nIHRoZQorcG9saWN5IHRvIGJlIG92ZXJyaWRkZW4gZm9yIHRoYXQgbWV0aG9kLiAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZSB1c2VzCit0aGUgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXNfc3RyaW5nYCBtZXRob2Qgb2YgdGhlICptc2cqIG9iamVjdCBmcm9tCit0aGUgcHJldmlvdXMgZXhhbXBsZSBhbmQgd3JpdGVzIHRoZSBtZXNzYWdlIHRvIGEgZmlsZSB1c2luZyB0aGUgbmF0aXZlIGxpbmUKK3NlcGFyYXRvcnMgZm9yIHRoZSBwbGF0Zm9ybSBvbiB3aGljaCBpdCBpcyBydW5uaW5nOjoKKworICAgPj4+IGltcG9ydCBvcworICAgPj4+IHdpdGggb3BlbignY29udmVydGVkLnR4dCcsICd3YicpIGFzIGY6CisgICAuLi4gICAgIGYud3JpdGUobXNnLmFzX3N0cmluZyhwb2xpY3k9bXNnLnBvbGljeS5jbG9uZShsaW5lc2VwPW9zLmxpbmVzZXApKQorCitQb2xpY3kgb2JqZWN0cyBjYW4gYWxzbyBiZSBjb21iaW5lZCB1c2luZyB0aGUgYWRkaXRpb24gb3BlcmF0b3IsIHByb2R1Y2luZyBhCitwb2xpY3kgb2JqZWN0IHdob3NlIHNldHRpbmdzIGFyZSBhIGNvbWJpbmF0aW9uIG9mIHRoZSBub24tZGVmYXVsdCB2YWx1ZXMgb2YgdGhlCitzdW1tZWQgb2JqZWN0czo6CisKKyAgID4+PiBjb21wYXRfU01UUCA9IGVtYWlsLnBvbGljeS5jbG9uZShsaW5lc2VwPSdcclxuJykKKyAgID4+PiBjb21wYXRfc3RyaWN0ID0gZW1haWwucG9saWN5LmNsb25lKHJhaXNlX29uX2RlZmVjdD1UcnVlKQorICAgPj4+IGNvbXBhdF9zdHJpY3RfU01UUCA9IGNvbXBhdF9TTVRQICsgY29tcGF0X3N0cmljdAorCitUaGlzIG9wZXJhdGlvbiBpcyBub3QgY29tbXV0YXRpdmU7IHRoYXQgaXMsIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgb2JqZWN0cyBhcmUKK2FkZGVkIG1hdHRlcnMuICBUbyBpbGx1c3RyYXRlOjoKKworICAgPj4+IHBvbGljeTEwMCA9IGNvbXBhdDMyLmNsb25lKG1heF9saW5lX2xlbmd0aD0xMDApCisgICA+Pj4gcG9saWN5ODAgPSBjb21wYXQzMi5jbG9uZShtYXhfbGluZV9sZW5ndGg9ODApCisgICA+Pj4gYXBvbGljeSA9IHBvbGljeTEwMCArIFBvbGljeTgwCisgICA+Pj4gYXBvbGljeS5tYXhfbGluZV9sZW5ndGgKKyAgIDgwCisgICA+Pj4gYXBvbGljeSA9IHBvbGljeTgwICsgcG9saWN5MTAwCisgICA+Pj4gYXBvbGljeS5tYXhfbGluZV9sZW5ndGgKKyAgIDEwMAorCisKKy4uIGNsYXNzOjogUG9saWN5KCoqa3cpCisKKyAgIFRoaXMgaXMgdGhlIDp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYCBmb3IgYWxsIHBvbGljeSBjbGFzc2VzLiAgSXQgcHJvdmlkZXMKKyAgIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciBhIGNvdXBsZSBvZiB0cml2aWFsIG1ldGhvZHMsIGFzIHdlbGwgYXMgdGhlCisgICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaW1tdXRhYmlsaXR5IHByb3BlcnR5LCB0aGUgOm1ldGg6YGNsb25lYCBtZXRob2QsIGFuZAorICAgdGhlIGNvbnN0cnVjdG9yIHNlbWFudGljcy4KKworICAgVGhlIGNvbnN0cnVjdG9yIG9mIGEgcG9saWN5IGNsYXNzIGNhbiBiZSBwYXNzZWQgdmFyaW91cyBrZXl3b3JkIGFyZ3VtZW50cy4KKyAgIFRoZSBhcmd1bWVudHMgdGhhdCBtYXkgYmUgc3BlY2lmaWVkIGFyZSBhbnkgbm9uLW1ldGhvZCBwcm9wZXJ0aWVzIG9uIHRoaXMKKyAgIGNsYXNzLCBwbHVzIGFueSBhZGRpdGlvbmFsIG5vbi1tZXRob2QgcHJvcGVydGllcyBvbiB0aGUgY29uY3JldGUgY2xhc3MuICBBCisgICB2YWx1ZSBzcGVjaWZpZWQgaW4gdGhlIGNvbnN0cnVjdG9yIHdpbGwgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZQorICAgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUuCisKKyAgIFRoaXMgY2xhc3MgZGVmaW5lcyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMsIGFuZCB0aHVzIHZhbHVlcyBmb3IgdGhlCisgICBmb2xsb3dpbmcgbWF5IGJlIHBhc3NlZCBpbiB0aGUgY29uc3RydWN0b3Igb2YgYW55IHBvbGljeSBjbGFzczoKKworICAgLi4gYXR0cmlidXRlOjogbWF4X2xpbmVfbGVuZ3RoCisKKyAgICAgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbnkgbGluZSBpbiB0aGUgc2VyaWFsaXplZCBvdXRwdXQsIG5vdCBjb3VudGluZyB0aGUKKyAgICAgIGVuZCBvZiBsaW5lIGNoYXJhY3RlcihzKS4gIERlZmF1bHQgaXMgNzgsIHBlciA6cmZjOmA1MzIyYC4gIEEgdmFsdWUgb2YKKyAgICAgIGBgMGBgIG9yIDpjb25zdDpgTm9uZWAgaW5kaWNhdGVzIHRoYXQgbm8gbGluZSB3cmFwcGluZyBzaG91bGQgYmUKKyAgICAgIGRvbmUgYXQgYWxsLgorCisgICAuLiBhdHRyaWJ1dGU6OiBsaW5lc2VwCisKKyAgICAgIFRoZSBzdHJpbmcgdG8gYmUgdXNlZCB0byB0ZXJtaW5hdGUgbGluZXMgaW4gc2VyaWFsaXplZCBvdXRwdXQuICBUaGUKKyAgICAgIGRlZmF1bHQgaXMgYGBcbmBgIGJlY2F1c2UgdGhhdCdzIHRoZSBpbnRlcm5hbCBlbmQtb2YtbGluZSBkaXNjaXBsaW5lIHVzZWQKKyAgICAgIGJ5IFB5dGhvbiwgdGhvdWdoIGBgXHJcbmBgIGlzIHJlcXVpcmVkIGJ5IHRoZSBSRkNzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBjdGVfdHlwZQorCisgICAgICBDb250cm9scyB0aGUgdHlwZSBvZiBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5ncyB0aGF0IG1heSBiZSBvciBhcmUKKyAgICAgIHJlcXVpcmVkIHRvIGJlIHVzZWQuICBUaGUgcG9zc2libGUgdmFsdWVzIGFyZToKKworICAgICAgPT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICAgYGA3Yml0YGAgIGFsbCBkYXRhIG11c3QgYmUgIjcgYml0IGNsZWFuIiAoQVNDSUktb25seSkuICBUaGlzIG1lYW5zIHRoYXQKKyAgICAgICAgICAgICAgICB3aGVyZSBuZWNlc3NhcnkgZGF0YSB3aWxsIGJlIGVuY29kZWQgdXNpbmcgZWl0aGVyCisgICAgICAgICAgICAgICAgcXVvdGVkLXByaW50YWJsZSBvciBiYXNlNjQgZW5jb2RpbmcuCisKKyAgICAgIGBgOGJpdGBgICBkYXRhIGlzIG5vdCBjb25zdHJhaW5lZCB0byBiZSA3IGJpdCBjbGVhbi4gIERhdGEgaW4gaGVhZGVycyBpcworICAgICAgICAgICAgICAgIHN0aWxsIHJlcXVpcmVkIHRvIGJlIEFTQ0lJLW9ubHkgYW5kIHNvIHdpbGwgYmUgZW5jb2RlZCAoc2VlCisgICAgICAgICAgICAgICAgJ2JpbmFyeV9mb2xkJyBiZWxvdyBmb3IgYW4gZXhjZXB0aW9uKSwgYnV0IGJvZHkgcGFydHMgbWF5IHVzZQorICAgICAgICAgICAgICAgIHRoZSBgYDhiaXRgYCBDVEUuCisgICAgICA9PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgIEEgYGBjdGVfdHlwZWBgIHZhbHVlIG9mIGBgOGJpdGBgIG9ubHkgd29ya3Mgd2l0aCBgYEJ5dGVzR2VuZXJhdG9yYGAsIG5vdAorICAgICAgYGBHZW5lcmF0b3JgYCwgYmVjYXVzZSBzdHJpbmdzIGNhbm5vdCBjb250YWluIGJpbmFyeSBkYXRhLiAgSWYgYQorICAgICAgYGBHZW5lcmF0b3JgYCBpcyBvcGVyYXRpbmcgdW5kZXIgYSBwb2xpY3kgdGhhdCBzcGVjaWZpZXMKKyAgICAgIGBgY3RlX3R5cGU9OGJpdGBgLCBpdCB3aWxsIGFjdCBhcyBpZiBgYGN0ZV90eXBlYGAgaXMgYGA3Yml0YGAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHJhaXNlX29uX2RlZmVjdAorCisgICAgICBJZiA6Y29uc3Q6YFRydWVgLCBhbnkgZGVmZWN0cyBlbmNvdW50ZXJlZCB3aWxsIGJlIHJhaXNlZCBhcyBlcnJvcnMuICBJZgorICAgICAgOmNvbnN0OmBGYWxzZWAgKHRoZSBkZWZhdWx0KSwgZGVmZWN0cyB3aWxsIGJlIHBhc3NlZCB0byB0aGUKKyAgICAgIDptZXRoOmByZWdpc3Rlcl9kZWZlY3RgIG1ldGhvZC4KKworICAgVGhlIGZvbGxvd2luZyA6Y2xhc3M6YFBvbGljeWAgbWV0aG9kIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCBieSBjb2RlIHVzaW5nCisgICB0aGUgZW1haWwgbGlicmFyeSB0byBjcmVhdGUgcG9saWN5IGluc3RhbmNlcyB3aXRoIGN1c3RvbSBzZXR0aW5nczoKKworICAgLi4gbWV0aG9kOjogY2xvbmUoKiprdykKKworICAgICAgUmV0dXJuIGEgbmV3IDpjbGFzczpgUG9saWN5YCBpbnN0YW5jZSB3aG9zZSBhdHRyaWJ1dGVzIGhhdmUgdGhlIHNhbWUKKyAgICAgIHZhbHVlcyBhcyB0aGUgY3VycmVudCBpbnN0YW5jZSwgZXhjZXB0IHdoZXJlIHRob3NlIGF0dHJpYnV0ZXMgYXJlCisgICAgICBnaXZlbiBuZXcgdmFsdWVzIGJ5IHRoZSBrZXl3b3JkIGFyZ3VtZW50cy4KKworICAgVGhlIHJlbWFpbmluZyA6Y2xhc3M6YFBvbGljeWAgbWV0aG9kcyBhcmUgY2FsbGVkIGJ5IHRoZSBlbWFpbCBwYWNrYWdlIGNvZGUsCisgICBhbmQgYXJlIG5vdCBpbnRlbmRlZCB0byBiZSBjYWxsZWQgYnkgYW4gYXBwbGljYXRpb24gdXNpbmcgdGhlIGVtYWlsIHBhY2thZ2UuCisgICBBIGN1c3RvbSBwb2xpY3kgbXVzdCBpbXBsZW1lbnQgYWxsIG9mIHRoZXNlIG1ldGhvZHMuCisKKyAgIC4uIG1ldGhvZDo6IGhhbmRsZV9kZWZlY3Qob2JqLCBkZWZlY3QpCisKKyAgICAgIEhhbmRsZSBhICpkZWZlY3QqIGZvdW5kIG9uICpvYmoqLiAgV2hlbiB0aGUgZW1haWwgcGFja2FnZSBjYWxscyB0aGlzCisgICAgICBtZXRob2QsICpkZWZlY3QqIHdpbGwgYWx3YXlzIGJlIGEgc3ViY2xhc3Mgb2YKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVycm9ycy5EZWZlY3RgLgorCisgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjaGVja3MgdGhlIDphdHRyOmByYWlzZV9vbl9kZWZlY3RgIGZsYWcuICBJZgorICAgICAgaXQgaXMgYGBUcnVlYGAsICpkZWZlY3QqIGlzIHJhaXNlZCBhcyBhbiBleGNlcHRpb24uICBJZiBpdCBpcyBgYEZhbHNlYGAKKyAgICAgICh0aGUgZGVmYXVsdCksICpvYmoqIGFuZCAqZGVmZWN0KiBhcmUgcGFzc2VkIHRvIDptZXRoOmByZWdpc3Rlcl9kZWZlY3RgLgorCisgICAuLiBtZXRob2Q6OiByZWdpc3Rlcl9kZWZlY3Qob2JqLCBkZWZlY3QpCisKKyAgICAgIFJlZ2lzdGVyIGEgKmRlZmVjdCogb24gKm9iaiouICBJbiB0aGUgZW1haWwgcGFja2FnZSwgKmRlZmVjdCogd2lsbCBhbHdheXMKKyAgICAgIGJlIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmB+ZW1haWwuZXJyb3JzLkRlZmVjdGAuCisKKyAgICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzIHRoZSBgYGFwcGVuZGBgIG1ldGhvZCBvZiB0aGUgYGBkZWZlY3RzYGAKKyAgICAgIGF0dHJpYnV0ZSBvZiAqb2JqKi4gIFdoZW4gdGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgOmF0dHI6YGhhbmRsZV9kZWZlY3RgLAorICAgICAgKm9iaiogd2lsbCBub3JtYWxseSBoYXZlIGEgYGBkZWZlY3RzYGAgYXR0cmlidXRlIHRoYXQgaGFzIGFuIGBgYXBwZW5kYGAKKyAgICAgIG1ldGhvZC4gIEN1c3RvbSBvYmplY3QgdHlwZXMgdXNlZCB3aXRoIHRoZSBlbWFpbCBwYWNrYWdlIChmb3IgZXhhbXBsZSwKKyAgICAgIGN1c3RvbSBgYE1lc3NhZ2VgYCBvYmplY3RzKSBzaG91bGQgYWxzbyBwcm92aWRlIHN1Y2ggYW4gYXR0cmlidXRlLAorICAgICAgb3RoZXJ3aXNlIGRlZmVjdHMgaW4gcGFyc2VkIG1lc3NhZ2VzIHdpbGwgcmFpc2UgdW5leHBlY3RlZCBlcnJvcnMuCisKKyAgIC4uIG1ldGhvZDo6IGhlYWRlcl9tYXhfY291bnQobmFtZSkKKworICAgICAgUmV0dXJuIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyIG9mIGhlYWRlcnMgbmFtZWQgKm5hbWUqLgorCisgICAgICBDYWxsZWQgd2hlbiBhIGhlYWRlciBpcyBhZGRlZCB0byBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAKKyAgICAgIG9iamVjdC4gIElmIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBub3QgYGAwYGAgb3IgYGBOb25lYGAsIGFuZCB0aGVyZSBhcmUKKyAgICAgIGFscmVhZHkgYSBudW1iZXIgb2YgaGVhZGVycyB3aXRoIHRoZSBuYW1lICpuYW1lKiBlcXVhbCB0byB0aGUgdmFsdWUKKyAgICAgIHJldHVybmVkLCBhIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KKworICAgICAgQmVjYXVzZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBgYE1lc3NhZ2UuX19zZXRpdGVtX19gYCBpcyB0byBhcHBlbmQgdGhlCisgICAgICB2YWx1ZSB0byB0aGUgbGlzdCBvZiBoZWFkZXJzLCBpdCBpcyBlYXN5IHRvIGNyZWF0ZSBkdXBsaWNhdGUgaGVhZGVycworICAgICAgd2l0aG91dCByZWFsaXppbmcgaXQuICBUaGlzIG1ldGhvZCBhbGxvd3MgY2VydGFpbiBoZWFkZXJzIHRvIGJlIGxpbWl0ZWQKKyAgICAgIGluIHRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIG9mIHRoYXQgaGVhZGVyIHRoYXQgbWF5IGJlIGFkZGVkIHRvIGEKKyAgICAgIGBgTWVzc2FnZWBgIHByb2dyYW1tYXRpY2FsbHkuICAoVGhlIGxpbWl0IGlzIG5vdCBvYnNlcnZlZCBieSB0aGUgcGFyc2VyLAorICAgICAgd2hpY2ggd2lsbCBmYWl0aGZ1bGx5IHByb2R1Y2UgYXMgbWFueSBoZWFkZXJzIGFzIGV4aXN0IGluIHRoZSBtZXNzYWdlCisgICAgICBiZWluZyBwYXJzZWQuKQorCisgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIGBgTm9uZWBgIGZvciBhbGwgaGVhZGVyIG5hbWVzLgorCisgICAuLiBtZXRob2Q6OiBoZWFkZXJfc291cmNlX3BhcnNlKHNvdXJjZWxpbmVzKQorCisgICAgICBUaGUgZW1haWwgcGFja2FnZSBjYWxscyB0aGlzIG1ldGhvZCB3aXRoIGEgbGlzdCBvZiBzdHJpbmdzLCBlYWNoIHN0cmluZworICAgICAgZW5kaW5nIHdpdGggdGhlIGxpbmUgc2VwYXJhdGlvbiBjaGFyYWN0ZXJzIGZvdW5kIGluIHRoZSBzb3VyY2UgYmVpbmcKKyAgICAgIHBhcnNlZC4gIFRoZSBmaXJzdCBsaW5lIGluY2x1ZGVzIHRoZSBmaWVsZCBoZWFkZXIgbmFtZSBhbmQgc2VwYXJhdG9yLgorICAgICAgQWxsIHdoaXRlc3BhY2UgaW4gdGhlIHNvdXJjZSBpcyBwcmVzZXJ2ZWQuICBUaGUgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlCisgICAgICBgYChuYW1lLCB2YWx1ZSlgYCB0dXBsZSB0aGF0IGlzIHRvIGJlIHN0b3JlZCBpbiB0aGUgYGBNZXNzYWdlYGAgdG8KKyAgICAgIHJlcHJlc2VudCB0aGUgcGFyc2VkIGhlYWRlci4KKworICAgICAgSWYgYW4gaW1wbGVtZW50YXRpb24gd2lzaGVzIHRvIHJldGFpbiBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGV4aXN0aW5nCisgICAgICBlbWFpbCBwYWNrYWdlIHBvbGljaWVzLCAqbmFtZSogc2hvdWxkIGJlIHRoZSBjYXNlIHByZXNlcnZlZCBuYW1lIChhbGwKKyAgICAgIGNoYXJhY3RlcnMgdXAgdG8gdGhlICdgYDpgYCcgc2VwYXJhdG9yKSwgd2hpbGUgKnZhbHVlKiBzaG91bGQgYmUgdGhlCisgICAgICB1bmZvbGRlZCB2YWx1ZSAoYWxsIGxpbmUgc2VwYXJhdG9yIGNoYXJhY3RlcnMgcmVtb3ZlZCwgYnV0IHdoaXRlc3BhY2UKKyAgICAgIGtlcHQgaW50YWN0KSwgc3RyaXBwZWQgb2YgbGVhZGluZyB3aGl0ZXNwYWNlLgorCisgICAgICAqc291cmNlbGluZXMqIG1heSBjb250YWluIHN1cnJvZ2F0ZWVzY2FwZWQgYmluYXJ5IGRhdGEuCisKKyAgICAgIFRoZXJlIGlzIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KKworICAgLi4gbWV0aG9kOjogaGVhZGVyX3N0b3JlX3BhcnNlKG5hbWUsIHZhbHVlKQorCisgICAgICBUaGUgZW1haWwgcGFja2FnZSBjYWxscyB0aGlzIG1ldGhvZCB3aXRoIHRoZSBuYW1lIGFuZCB2YWx1ZSBwcm92aWRlZCBieQorICAgICAgdGhlIGFwcGxpY2F0aW9uIHByb2dyYW0gd2hlbiB0aGUgYXBwbGljYXRpb24gcHJvZ3JhbSBpcyBtb2RpZnlpbmcgYQorICAgICAgYGBNZXNzYWdlYGAgcHJvZ3JhbW1hdGljYWxseSAoYXMgb3Bwb3NlZCB0byBhIGBgTWVzc2FnZWBgIGNyZWF0ZWQgYnkgYQorICAgICAgcGFyc2VyKS4gIFRoZSBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgYGAobmFtZSwgdmFsdWUpYGAgdHVwbGUgdGhhdCBpcyB0bworICAgICAgYmUgc3RvcmVkIGluIHRoZSBgYE1lc3NhZ2VgYCB0byByZXByZXNlbnQgdGhlIGhlYWRlci4KKworICAgICAgSWYgYW4gaW1wbGVtZW50YXRpb24gd2lzaGVzIHRvIHJldGFpbiBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGV4aXN0aW5nCisgICAgICBlbWFpbCBwYWNrYWdlIHBvbGljaWVzLCB0aGUgKm5hbWUqIGFuZCAqdmFsdWUqIHNob3VsZCBiZSBzdHJpbmdzIG9yCisgICAgICBzdHJpbmcgc3ViY2xhc3NlcyB0aGF0IGRvIG5vdCBjaGFuZ2UgdGhlIGNvbnRlbnQgb2YgdGhlIHBhc3NlZCBpbgorICAgICAgYXJndW1lbnRzLgorCisgICAgICBUaGVyZSBpcyBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uCisKKyAgIC4uIG1ldGhvZDo6IGhlYWRlcl9mZXRjaF9wYXJzZShuYW1lLCB2YWx1ZSkKKworICAgICAgVGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcyBtZXRob2Qgd2l0aCB0aGUgKm5hbWUqIGFuZCAqdmFsdWUqIGN1cnJlbnRseQorICAgICAgc3RvcmVkIGluIHRoZSBgYE1lc3NhZ2VgYCB3aGVuIHRoYXQgaGVhZGVyIGlzIHJlcXVlc3RlZCBieSB0aGUKKyAgICAgIGFwcGxpY2F0aW9uIHByb2dyYW0sIGFuZCB3aGF0ZXZlciB0aGUgbWV0aG9kIHJldHVybnMgaXMgd2hhdCBpcyBwYXNzZWQKKyAgICAgIGJhY2sgdG8gdGhlIGFwcGxpY2F0aW9uIGFzIHRoZSB2YWx1ZSBvZiB0aGUgaGVhZGVyIGJlaW5nIHJldHJpZXZlZC4KKyAgICAgIE5vdGUgdGhhdCB0aGVyZSBtYXkgYmUgbW9yZSB0aGFuIG9uZSBoZWFkZXIgd2l0aCB0aGUgc2FtZSBuYW1lIHN0b3JlZCBpbgorICAgICAgdGhlIGBgTWVzc2FnZWBgOyB0aGUgbWV0aG9kIGlzIHBhc3NlZCB0aGUgc3BlY2lmaWMgbmFtZSBhbmQgdmFsdWUgb2YgdGhlCisgICAgICBoZWFkZXIgZGVzdGluZWQgdG8gYmUgcmV0dXJuZWQgdG8gdGhlIGFwcGxpY2F0aW9uLgorCisgICAgICAqdmFsdWUqIG1heSBjb250YWluIHN1cnJvZ2F0ZWVzY2FwZWQgYmluYXJ5IGRhdGEuICBUaGVyZSBzaG91bGQgYmUgbm8KKyAgICAgIHN1cnJvZ2F0ZWVzY2FwZWQgYmluYXJ5IGRhdGEgaW4gdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBtZXRob2QuCisKKyAgICAgIFRoZXJlIGlzIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KKworICAgLi4gbWV0aG9kOjogZm9sZChuYW1lLCB2YWx1ZSkKKworICAgICAgVGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcyBtZXRob2Qgd2l0aCB0aGUgKm5hbWUqIGFuZCAqdmFsdWUqIGN1cnJlbnRseQorICAgICAgc3RvcmVkIGluIHRoZSBgYE1lc3NhZ2VgYCBmb3IgYSBnaXZlbiBoZWFkZXIuICBUaGUgbWV0aG9kIHNob3VsZCByZXR1cm4gYQorICAgICAgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGF0IGhlYWRlciAiZm9sZGVkIiBjb3JyZWN0bHkgKGFjY29yZGluZyB0byB0aGUKKyAgICAgIHBvbGljeSBzZXR0aW5ncykgYnkgY29tcG9zaW5nIHRoZSAqbmFtZSogd2l0aCB0aGUgKnZhbHVlKiBhbmQgaW5zZXJ0aW5nCisgICAgICA6YXR0cjpgbGluZXNlcGAgY2hhcmFjdGVycyBhdCB0aGUgYXBwcm9wcmlhdGUgcGxhY2VzLiAgU2VlIDpyZmM6YDUzMjJgCisgICAgICBmb3IgYSBkaXNjdXNzaW9uIG9mIHRoZSBydWxlcyBmb3IgZm9sZGluZyBlbWFpbCBoZWFkZXJzLgorCisgICAgICAqdmFsdWUqIG1heSBjb250YWluIHN1cnJvZ2F0ZWVzY2FwZWQgYmluYXJ5IGRhdGEuICBUaGVyZSBzaG91bGQgYmUgbm8KKyAgICAgIHN1cnJvZ2F0ZWVzY2FwZWQgYmluYXJ5IGRhdGEgaW4gdGhlIHN0cmluZyByZXR1cm5lZCBieSB0aGUgbWV0aG9kLgorCisgICAuLiBtZXRob2Q6OiBmb2xkX2JpbmFyeShuYW1lLCB2YWx1ZSkKKworICAgICAgVGhlIHNhbWUgYXMgOm1ldGg6YGZvbGRgLCBleGNlcHQgdGhhdCB0aGUgcmV0dXJuZWQgdmFsdWUgc2hvdWxkIGJlIGEKKyAgICAgIGJ5dGVzIG9iamVjdCByYXRoZXIgdGhhbiBhIHN0cmluZy4KKworICAgICAgKnZhbHVlKiBtYXkgY29udGFpbiBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhLiAgVGhlc2UgY291bGQgYmUKKyAgICAgIGNvbnZlcnRlZCBiYWNrIGludG8gYmluYXJ5IGRhdGEgaW4gdGhlIHJldHVybmVkIGJ5dGVzIG9iamVjdC4KKworCisuLiBjbGFzczo6IENvbXBhdDMyKCoqa3cpCisKKyAgIFRoaXMgY29uY3JldGUgOmNsYXNzOmBQb2xpY3lgIGlzIHRoZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHBvbGljeS4gIEl0CisgICByZXBsaWNhdGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpbiBQeXRob24gMy4yLiAgVGhlCisgICA6bW9kOmBwb2xpY3lgIG1vZHVsZSBhbHNvIGRlZmluZXMgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcywKKyAgIDpjb25zdDpgY29tcGF0MzJgLCB0aGF0IGlzIHVzZWQgYXMgdGhlIGRlZmF1bHQgcG9saWN5LiAgVGh1cyB0aGUgZGVmYXVsdAorICAgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgaXMgdG8gbWFpbnRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAzLjIuCisKKyAgIFRoZSBjbGFzcyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGNvbmNyZXRlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUKKyAgIGFic3RyYWN0IG1ldGhvZHMgb2YgOmNsYXNzOmBQb2xpY3lgOgorCisgICAuLiBtZXRob2Q6OiBoZWFkZXJfc291cmNlX3BhcnNlKHNvdXJjZWxpbmVzKQorCisgICAgICBUaGUgbmFtZSBpcyBwYXJzZWQgYXMgZXZlcnl0aGluZyB1cCB0byB0aGUgJ2BgOmBgJyBhbmQgcmV0dXJuZWQKKyAgICAgIHVubW9kaWZpZWQuICBUaGUgdmFsdWUgaXMgZGV0ZXJtaW5lZCBieSBzdHJpcHBpbmcgbGVhZGluZyB3aGl0ZXNwYWNlIG9mZgorICAgICAgdGhlIHJlbWFpbmRlciBvZiB0aGUgZmlyc3QgbGluZSwgam9pbmluZyBhbGwgc3Vic2VxdWVudCBsaW5lcyB0b2dldGhlciwKKyAgICAgIGFuZCBzdHJpcHBpbmcgYW55IHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiBvciBsaW5lZmVlZCBjaGFyYWN0ZXJzLgorCisgICAuLiBtZXRob2Q6OiBoZWFkZXJfc3RvcmVfcGFyc2UobmFtZSwgdmFsdWUpCisKKyAgICAgIFRoZSBuYW1lIGFuZCB2YWx1ZSBhcmUgcmV0dXJuZWQgdW5tb2RpZmllZC4KKworICAgLi4gbWV0aG9kOjogaGVhZGVyX2ZldGNoX3BhcnNlKG5hbWUsIHZhbHVlKQorCisgICAgICBJZiB0aGUgdmFsdWUgY29udGFpbnMgYmluYXJ5IGRhdGEsIGl0IGlzIGNvbnZlcnRlZCBpbnRvIGEKKyAgICAgIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIG9iamVjdCB1c2luZyB0aGUgYGB1bmtub3duLThiaXRgYCBjaGFyc2V0LgorICAgICAgT3RoZXJ3aXNlIGl0IGlzIHJldHVybmVkIHVubW9kaWZpZWQuCisKKyAgIC4uIG1ldGhvZDo6IGZvbGQobmFtZSwgdmFsdWUpCisKKyAgICAgIEhlYWRlcnMgYXJlIGZvbGRlZCB1c2luZyB0aGUgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgZm9sZGluZworICAgICAgYWxnb3JpdGhtLCB3aGljaCBwcmVzZXJ2ZXMgZXhpc3RpbmcgbGluZSBicmVha3MgaW4gdGhlIHZhbHVlLCBhbmQgd3JhcHMKKyAgICAgIGVhY2ggcmVzdWx0aW5nIGxpbmUgdG8gdGhlIGBgbWF4X2xpbmVfbGVuZ3RoYGAuICBOb24tQVNDSUkgYmluYXJ5IGRhdGEgYXJlCisgICAgICBDVEUgZW5jb2RlZCB1c2luZyB0aGUgYGB1bmtub3duLThiaXRgYCBjaGFyc2V0LgorCisgICAuLiBtZXRob2Q6OiBmb2xkX2JpbmFyeShuYW1lLCB2YWx1ZSkKKworICAgICAgSGVhZGVycyBhcmUgZm9sZGVkIHVzaW5nIHRoZSA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBmb2xkaW5nCisgICAgICBhbGdvcml0aG0sIHdoaWNoIHByZXNlcnZlcyBleGlzdGluZyBsaW5lIGJyZWFrcyBpbiB0aGUgdmFsdWUsIGFuZCB3cmFwcworICAgICAgZWFjaCByZXN1bHRpbmcgbGluZSB0byB0aGUgYGBtYXhfbGluZV9sZW5ndGhgYC4gIElmIGBgY3RlX3R5cGVgYCBpcworICAgICAgYGA3Yml0YGAsIG5vbi1hc2NpaSBiaW5hcnkgZGF0YSBpcyBDVEUgZW5jb2RlZCB1c2luZyB0aGUgYGB1bmtub3duLThiaXRgYAorICAgICAgY2hhcnNldC4gIE90aGVyd2lzZSB0aGUgb3JpZ2luYWwgc291cmNlIGhlYWRlciBpcyB1c2VkLCB3aXRoIGl0cyBleGlzdGluZworICAgICAgbGluZSBicmVha3MgYW5kIGFueSAoUkZDIGludmFsaWQpIGJpbmFyeSBkYXRhIGl0IG1heSBjb250YWluLgorCisKKy4uIG5vdGU6OgorCisgICBUaGUgZG9jdW1lbnRhdGlvbiBiZWxvdyBkZXNjcmliZXMgbmV3IHBvbGljaWVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZQorICAgc3RhbmRhcmQgbGlicmFyeSBvbiBhIDp0ZXJtOmBwcm92aXNpb25hbCBiYXNpcyA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLgorICAgQmFja3dhcmRzIGluY29tcGF0aWJsZSBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwgb2YgdGhlIGZlYXR1cmUpCisgICBtYXkgb2NjdXIgaWYgZGVlbWVkIG5lY2Vzc2FyeSBieSB0aGUgY29yZSBkZXZlbG9wZXJzLgorCisKKy4uIGNsYXNzOjogRW1haWxQb2xpY3koKiprdykKKworICAgVGhpcyBjb25jcmV0ZSA6Y2xhc3M6YFBvbGljeWAgcHJvdmlkZXMgYmVoYXZpb3IgdGhhdCBpcyBpbnRlbmRlZCB0byBiZSBmdWxseQorICAgY29tcGxpYW50IHdpdGggdGhlIGN1cnJlbnQgZW1haWwgUkZDcy4gIFRoZXNlIGluY2x1ZGUgKGJ1dCBhcmUgbm90IGxpbWl0ZWQKKyAgIHRvKSA6cmZjOmA1MzIyYCwgOnJmYzpgMjA0N2AsIGFuZCB0aGUgY3VycmVudCBNSU1FIFJGQ3MuCisKKyAgIFRoaXMgcG9saWN5IGFkZHMgbmV3IGhlYWRlciBwYXJzaW5nIGFuZCBmb2xkaW5nIGFsZ29yaXRobXMuICBJbnN0ZWFkIG9mCisgICBzaW1wbGUgc3RyaW5ncywgaGVhZGVycyBhcmUgY3VzdG9tIG9iamVjdHMgd2l0aCBjdXN0b20gYXR0cmlidXRlcyBkZXBlbmRpbmcKKyAgIG9uIHRoZSB0eXBlIG9mIHRoZSBmaWVsZC4gIFRoZSBwYXJzaW5nIGFuZCBmb2xkaW5nIGFsZ29yaXRobSBmdWxseSBpbXBsZW1lbnQKKyAgIDpyZmM6YDIwNDdgIGFuZCA6cmZjOmA1MzIyYC4KKworICAgSW4gYWRkaXRpb24gdG8gdGhlIHNldHRhYmxlIGF0dHJpYnV0ZXMgbGlzdGVkIGFib3ZlIHRoYXQgYXBwbHkgdG8gYWxsCisgICBwb2xpY2llcywgdGhpcyBwb2xpY3kgYWRkcyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgYXR0cmlidXRlczoKKworICAgLi4gYXR0cmlidXRlOjogcmVmb2xkX3NvdXJjZQorCisgICAgICBJZiB0aGUgdmFsdWUgZm9yIGEgaGVhZGVyIGluIHRoZSBgYE1lc3NhZ2VgYCBvYmplY3Qgb3JpZ2luYXRlZCBmcm9tIGEKKyAgICAgIDptb2Q6YH5lbWFpbC5wYXJzZXJgIChhcyBvcHBvc2VkIHRvIGJlaW5nIHNldCBieSBhIHByb2dyYW0pLCB0aGlzCisgICAgICBhdHRyaWJ1dGUgaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IGEgZ2VuZXJhdG9yIHNob3VsZCByZWZvbGQgdGhhdCB2YWx1ZQorICAgICAgd2hlbiB0cmFuc2Zvcm1pbmcgdGhlIG1lc3NhZ2UgYmFjayBpbnRvIHN0cmVhbSBmb3JtLiAgVGhlIHBvc3NpYmxlIHZhbHVlcworICAgICAgYXJlOgorCisgICAgICA9PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICBgYG5vbmVgYCAgYWxsIHNvdXJjZSB2YWx1ZXMgdXNlIG9yaWdpbmFsIGZvbGRpbmcKKworICAgICAgYGBsb25nYGAgIHNvdXJjZSB2YWx1ZXMgdGhhdCBoYXZlIGFueSBsaW5lIHRoYXQgaXMgbG9uZ2VyIHRoYW4KKyAgICAgICAgICAgICAgICBgYG1heF9saW5lX2xlbmd0aGBgIHdpbGwgYmUgcmVmb2xkZWQKKworICAgICAgYGBhbGxgYCAgIGFsbCB2YWx1ZXMgYXJlIHJlZm9sZGVkLgorICAgICAgPT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgICBUaGUgZGVmYXVsdCBpcyBgYGxvbmdgYC4KKworICAgLi4gYXR0cmlidXRlOjogaGVhZGVyX2ZhY3RvcnkKKworICAgICAgQSBjYWxsYWJsZSB0aGF0IHRha2VzIHR3byBhcmd1bWVudHMsIGBgbmFtZWBgIGFuZCBgYHZhbHVlYGAsIHdoZXJlCisgICAgICBgYG5hbWVgYCBpcyBhIGhlYWRlciBmaWVsZCBuYW1lIGFuZCBgYHZhbHVlYGAgaXMgYW4gdW5mb2xkZWQgaGVhZGVyIGZpZWxkCisgICAgICB2YWx1ZSwgYW5kIHJldHVybnMgYSBzdHJpbmcgc3ViY2xhc3MgdGhhdCByZXByZXNlbnRzIHRoYXQgaGVhZGVyLiAgQQorICAgICAgZGVmYXVsdCBgYGhlYWRlcl9mYWN0b3J5YGAgKHNlZSA6bW9kOmB+ZW1haWwuaGVhZGVycmVnaXN0cnlgKSBpcyBwcm92aWRlZAorICAgICAgdGhhdCB1bmRlcnN0YW5kcyBzb21lIG9mIHRoZSA6UkZDOmA1MzIyYCBoZWFkZXIgZmllbGQgdHlwZXMuICAoQ3VycmVudGx5CisgICAgICBhZGRyZXNzIGZpZWxkcyBhbmQgZGF0ZSBmaWVsZHMgaGF2ZSBzcGVjaWFsIHRyZWF0bWVudCwgd2hpbGUgYWxsIG90aGVyCisgICAgICBmaWVsZHMgYXJlIHRyZWF0ZWQgYXMgdW5zdHJ1Y3R1cmVkLiAgVGhpcyBsaXN0IHdpbGwgYmUgY29tcGxldGVkIGJlZm9yZQorICAgICAgdGhlIGV4dGVuc2lvbiBpcyBtYXJrZWQgc3RhYmxlLikKKworICAgVGhlIGNsYXNzIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgY29uY3JldGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBhYnN0cmFjdAorICAgbWV0aG9kcyBvZiA6Y2xhc3M6YFBvbGljeWA6CisKKyAgIC4uIG1ldGhvZDo6IGhlYWRlcl9tYXhfY291bnQobmFtZSkKKworICAgICAgUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlCisgICAgICA6YXR0cjpgfmVtYWlsLmhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXIubWF4X2NvdW50YCBhdHRyaWJ1dGUgb2YgdGhlCisgICAgICBzcGVjaWFsaXplZCBjbGFzcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgaGVhZGVyIHdpdGggdGhlIGdpdmVuIG5hbWUuCisKKyAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zb3VyY2VfcGFyc2Uoc291cmNlbGluZXMpCisKKyAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIG1ldGhvZCBpcyB0aGUgc2FtZSBhcyB0aGF0IGZvciB0aGUKKyAgICAgIDpjbGFzczpgQ29tcGF0MzJgIHBvbGljeS4KKworICAgLi4gbWV0aG9kOjogaGVhZGVyX3N0b3JlX3BhcnNlKG5hbWUsIHZhbHVlKQorCisgICAgICBUaGUgbmFtZSBpcyByZXR1cm5lZCB1bmNoYW5nZWQuICBJZiB0aGUgaW5wdXQgdmFsdWUgaGFzIGEgYGBuYW1lYGAKKyAgICAgIGF0dHJpYnV0ZSBhbmQgaXQgbWF0Y2hlcyAqbmFtZSogaWdub3JpbmcgY2FzZSwgdGhlIHZhbHVlIGlzIHJldHVybmVkCisgICAgICB1bmNoYW5nZWQuICBPdGhlcndpc2UgdGhlICpuYW1lKiBhbmQgKnZhbHVlKiBhcmUgcGFzc2VkIHRvCisgICAgICBgYGhlYWRlcl9mYWN0b3J5YGAsIGFuZCB0aGUgcmVzdWx0aW5nIGN1c3RvbSBoZWFkZXIgb2JqZWN0IGlzIHJldHVybmVkIGFzCisgICAgICB0aGUgdmFsdWUuICBJbiB0aGlzIGNhc2UgYSBgYFZhbHVlRXJyb3JgYCBpcyByYWlzZWQgaWYgdGhlIGlucHV0IHZhbHVlCisgICAgICBjb250YWlucyBDUiBvciBMRiBjaGFyYWN0ZXJzLgorCisgICAuLiBtZXRob2Q6OiBoZWFkZXJfZmV0Y2hfcGFyc2UobmFtZSwgdmFsdWUpCisKKyAgICAgIElmIHRoZSB2YWx1ZSBoYXMgYSBgYG5hbWVgYCBhdHRyaWJ1dGUsIGl0IGlzIHJldHVybmVkIHRvIHVubW9kaWZpZWQuCisgICAgICBPdGhlcndpc2UgdGhlICpuYW1lKiwgYW5kIHRoZSAqdmFsdWUqIHdpdGggYW55IENSIG9yIExGIGNoYXJhY3RlcnMKKyAgICAgIHJlbW92ZWQsIGFyZSBwYXNzZWQgdG8gdGhlIGBgaGVhZGVyX2ZhY3RvcnlgYCwgYW5kIHRoZSByZXN1bHRpbmcgY3VzdG9tCisgICAgICBoZWFkZXIgb2JqZWN0IGlzIHJldHVybmVkLiAgQW55IHN1cnJvZ2F0ZWVzY2FwZWQgYnl0ZXMgZ2V0IHR1cm5lZCBpbnRvCisgICAgICB0aGUgdW5pY29kZSB1bmtub3duLWNoYXJhY3RlciBnbHlwaC4KKworICAgLi4gbWV0aG9kOjogZm9sZChuYW1lLCB2YWx1ZSkKKworICAgICAgSGVhZGVyIGZvbGRpbmcgaXMgY29udHJvbGxlZCBieSB0aGUgOmF0dHI6YHJlZm9sZF9zb3VyY2VgIHBvbGljeSBzZXR0aW5nLgorICAgICAgQSB2YWx1ZSBpcyBjb25zaWRlcmVkIHRvIGJlIGEgJ3NvdXJjZSB2YWx1ZScgaWYgYW5kIG9ubHkgaWYgaXQgZG9lcyBub3QKKyAgICAgIGhhdmUgYSBgYG5hbWVgYCBhdHRyaWJ1dGUgKGhhdmluZyBhIGBgbmFtZWBgIGF0dHJpYnV0ZSBtZWFucyBpdCBpcyBhCisgICAgICBoZWFkZXIgb2JqZWN0IG9mIHNvbWUgc29ydCkuICBJZiBhIHNvdXJjZSB2YWx1ZSBuZWVkcyB0byBiZSByZWZvbGRlZAorICAgICAgYWNjb3JkaW5nIHRvIHRoZSBwb2xpY3ksIGl0IGlzIGNvbnZlcnRlZCBpbnRvIGEgY3VzdG9tIGhlYWRlciBvYmplY3QgYnkKKyAgICAgIHBhc3NpbmcgdGhlICpuYW1lKiBhbmQgdGhlICp2YWx1ZSogd2l0aCBhbnkgQ1IgYW5kIExGIGNoYXJhY3RlcnMgcmVtb3ZlZAorICAgICAgdG8gdGhlIGBgaGVhZGVyX2ZhY3RvcnlgYC4gIEZvbGRpbmcgb2YgYSBjdXN0b20gaGVhZGVyIG9iamVjdCBpcyBkb25lIGJ5CisgICAgICBjYWxsaW5nIGl0cyBgYGZvbGRgYCBtZXRob2Qgd2l0aCB0aGUgY3VycmVudCBwb2xpY3kuCisKKyAgICAgIFNvdXJjZSB2YWx1ZXMgYXJlIHNwbGl0IGludG8gbGluZXMgdXNpbmcgOm1ldGg6YH5zdHIuc3BsaXRsaW5lc2AuICBJZgorICAgICAgdGhlIHZhbHVlIGlzIG5vdCB0byBiZSByZWZvbGRlZCwgdGhlIGxpbmVzIGFyZSByZWpvaW5lZCB1c2luZyB0aGUKKyAgICAgIGBgbGluZXNlcGBgIGZyb20gdGhlIHBvbGljeSBhbmQgcmV0dXJuZWQuICBUaGUgZXhjZXB0aW9uIGlzIGxpbmVzCisgICAgICBjb250YWluaW5nIG5vbi1hc2NpaSBiaW5hcnkgZGF0YS4gIEluIHRoYXQgY2FzZSB0aGUgdmFsdWUgaXMgcmVmb2xkZWQKKyAgICAgIHJlZ2FyZGxlc3Mgb2YgdGhlIGBgcmVmb2xkX3NvdXJjZWBgIHNldHRpbmcsIHdoaWNoIGNhdXNlcyB0aGUgYmluYXJ5IGRhdGEKKyAgICAgIHRvIGJlIENURSBlbmNvZGVkIHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgIGNoYXJzZXQuCisKKyAgIC4uIG1ldGhvZDo6IGZvbGRfYmluYXJ5KG5hbWUsIHZhbHVlKQorCisgICAgICBUaGUgc2FtZSBhcyA6bWV0aDpgZm9sZGAgaWYgOmF0dHI6YGN0ZV90eXBlYCBpcyBgYDdiaXRgYCwgZXhjZXB0IHRoYXQKKyAgICAgIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBieXRlcy4KKworICAgICAgSWYgOmF0dHI6YGN0ZV90eXBlYCBpcyBgYDhiaXRgYCwgbm9uLUFTQ0lJIGJpbmFyeSBkYXRhIGlzIGNvbnZlcnRlZCBiYWNrCisgICAgICBpbnRvIGJ5dGVzLiAgSGVhZGVycyB3aXRoIGJpbmFyeSBkYXRhIGFyZSBub3QgcmVmb2xkZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlCisgICAgICBgYHJlZm9sZF9oZWFkZXJgYCBzZXR0aW5nLCBzaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8ga25vdyB3aGV0aGVyIHRoZQorICAgICAgYmluYXJ5IGRhdGEgY29uc2lzdHMgb2Ygc2luZ2xlIGJ5dGUgY2hhcmFjdGVycyBvciBtdWx0aWJ5dGUgY2hhcmFjdGVycy4KKworVGhlIGZvbGxvd2luZyBpbnN0YW5jZXMgb2YgOmNsYXNzOmBFbWFpbFBvbGljeWAgcHJvdmlkZSBkZWZhdWx0cyBzdWl0YWJsZSBmb3IKK3NwZWNpZmljIGFwcGxpY2F0aW9uIGRvbWFpbnMuICBOb3RlIHRoYXQgaW4gdGhlIGZ1dHVyZSB0aGUgYmVoYXZpb3Igb2YgdGhlc2UKK2luc3RhbmNlcyAoaW4gcGFydGljdWxhciB0aGUgYGBIVFRQYGAgaW5zdGFuY2UpIG1heSBiZSBhZGp1c3RlZCB0byBjb25mb3JtIGV2ZW4KK21vcmUgY2xvc2VseSB0byB0aGUgUkZDcyByZWxldmFudCB0byB0aGVpciBkb21haW5zLgorCisuLiBkYXRhOjogZGVmYXVsdAorCisgICBBbiBpbnN0YW5jZSBvZiBgYEVtYWlsUG9saWN5YGAgd2l0aCBhbGwgZGVmYXVsdHMgdW5jaGFuZ2VkLiAgVGhpcyBwb2xpY3kKKyAgIHVzZXMgdGhlIHN0YW5kYXJkIFB5dGhvbiBgYFxuYGAgbGluZSBlbmRpbmdzIHJhdGhlciB0aGFuIHRoZSBSRkMtY29ycmVjdAorICAgYGBcclxuYGAuCisKKy4uIGRhdGE6OiBTTVRQCisKKyAgIFN1aXRhYmxlIGZvciBzZXJpYWxpemluZyBtZXNzYWdlcyBpbiBjb25mb3JtYW5jZSB3aXRoIHRoZSBlbWFpbCBSRkNzLgorICAgTGlrZSBgYGRlZmF1bHRgYCwgYnV0IHdpdGggYGBsaW5lc2VwYGAgc2V0IHRvIGBgXHJcbmBgLCB3aGljaCBpcyBSRkMKKyAgIGNvbXBsaWFudC4KKworLi4gZGF0YTo6IEhUVFAKKworICAgU3VpdGFibGUgZm9yIHNlcmlhbGl6aW5nIGhlYWRlcnMgd2l0aCBmb3IgdXNlIGluIEhUVFAgdHJhZmZpYy4gIExpa2UKKyAgIGBgU01UUGBgIGV4Y2VwdCB0aGF0IGBgbWF4X2xpbmVfbGVuZ3RoYGAgaXMgc2V0IHRvIGBgTm9uZWBgICh1bmxpbWl0ZWQpLgorCisuLiBkYXRhOjogc3RyaWN0CisKKyAgIENvbnZlbmllbmNlIGluc3RhbmNlLiAgVGhlIHNhbWUgYXMgYGBkZWZhdWx0YGAgZXhjZXB0IHRoYXQKKyAgIGBgcmFpc2Vfb25fZGVmZWN0YGAgaXMgc2V0IHRvIGBgVHJ1ZWBgLiAgVGhpcyBhbGxvd3MgYW55IHBvbGljeSB0byBiZSBtYWRlCisgICBzdHJpY3QgYnkgd3JpdGluZzo6CisKKyAgICAgICAgc29tZXBvbGljeSArIHBvbGljeS5zdHJpY3QKKworV2l0aCBhbGwgb2YgdGhlc2UgOmNsYXNzOmBFbWFpbFBvbGljaWVzIDwuRW1haWxQb2xpY3k+YCwgdGhlIGVmZmVjdGl2ZSBBUEkgb2YKK3RoZSBlbWFpbCBwYWNrYWdlIGlzIGNoYW5nZWQgZnJvbSB0aGUgUHl0aG9uIDMuMiBBUEkgaW4gdGhlIGZvbGxvd2luZyB3YXlzOgorCisgICAqIFNldHRpbmcgYSBoZWFkZXIgb24gYSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIHJlc3VsdHMgaW4gdGhhdAorICAgICBoZWFkZXIgYmVpbmcgcGFyc2VkIGFuZCBhIGN1c3RvbSBoZWFkZXIgb2JqZWN0IGNyZWF0ZWQuCisKKyAgICogRmV0Y2hpbmcgYSBoZWFkZXIgdmFsdWUgZnJvbSBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgcmVzdWx0cworICAgICBpbiB0aGF0IGhlYWRlciBiZWluZyBwYXJzZWQgYW5kIGEgY3VzdG9tIGhlYWRlciBvYmplY3QgY3JlYXRlZCBhbmQKKyAgICAgcmV0dXJuZWQuCisKKyAgICogQW55IGN1c3RvbSBoZWFkZXIgb2JqZWN0LCBvciBhbnkgaGVhZGVyIHRoYXQgaXMgcmVmb2xkZWQgZHVlIHRvIHRoZQorICAgICBwb2xpY3kgc2V0dGluZ3MsIGlzIGZvbGRlZCB1c2luZyBhbiBhbGdvcml0aG0gdGhhdCBmdWxseSBpbXBsZW1lbnRzIHRoZQorICAgICBSRkMgZm9sZGluZyBhbGdvcml0aG1zLCBpbmNsdWRpbmcga25vd2luZyB3aGVyZSBlbmNvZGVkIHdvcmRzIGFyZSByZXF1aXJlZAorICAgICBhbmQgYWxsb3dlZC4KKworRnJvbSB0aGUgYXBwbGljYXRpb24gdmlldywgdGhpcyBtZWFucyB0aGF0IGFueSBoZWFkZXIgb2J0YWluZWQgdGhyb3VnaCB0aGUKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaXMgYSBjdXN0b20gaGVhZGVyIG9iamVjdCB3aXRoIGN1c3RvbQorYXR0cmlidXRlcywgd2hvc2Ugc3RyaW5nIHZhbHVlIGlzIHRoZSBmdWxseSBkZWNvZGVkIHVuaWNvZGUgdmFsdWUgb2YgdGhlCitoZWFkZXIuICBMaWtld2lzZSwgYSBoZWFkZXIgbWF5IGJlIGFzc2lnbmVkIGEgbmV3IHZhbHVlLCBvciBhIG5ldyBoZWFkZXIKK2NyZWF0ZWQsIHVzaW5nIGEgdW5pY29kZSBzdHJpbmcsIGFuZCB0aGUgcG9saWN5IHdpbGwgdGFrZSBjYXJlIG9mIGNvbnZlcnRpbmcKK3RoZSB1bmljb2RlIHN0cmluZyBpbnRvIHRoZSBjb3JyZWN0IFJGQyBlbmNvZGVkIGZvcm0uCisKK1RoZSBjdXN0b20gaGVhZGVyIG9iamVjdHMgYW5kIHRoZWlyIGF0dHJpYnV0ZXMgYXJlIGRlc2NyaWJlZCBpbgorOm1vZDpgfmVtYWlsLmhlYWRlcnJlZ2lzdHJ5YC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLnJzdAppbmRleCA0NTMwYjk1Li5lZjUzNTRmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwucnN0CkBAIC01MSw2ICs1MSw4IEBACiAgICBlbWFpbC5tZXNzYWdlLnJzdAogICAgZW1haWwucGFyc2VyLnJzdAogICAgZW1haWwuZ2VuZXJhdG9yLnJzdAorICAgZW1haWwucG9saWN5LnJzdAorICAgZW1haWwuaGVhZGVycmVnaXN0cnkucnN0CiAgICBlbWFpbC5taW1lLnJzdAogICAgZW1haWwuaGVhZGVyLnJzdAogICAgZW1haWwuY2hhcnNldC5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLnV0aWwucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwudXRpbC5yc3QKaW5kZXggMTFiZjNiMi4uYmFkMGIyNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwudXRpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwudXRpbC5yc3QKQEAgLTI5LDEzICsyOSwyMSBAQAogICAgZmFpbHMsIGluIHdoaWNoIGNhc2UgYSAyLXR1cGxlIG9mIGBgKCcnLCAnJylgYCBpcyByZXR1cm5lZC4KIAogCi0uLiBmdW5jdGlvbjo6IGZvcm1hdGFkZHIocGFpcikKKy4uIGZ1bmN0aW9uOjogZm9ybWF0YWRkcihwYWlyLCBjaGFyc2V0PSd1dGYtOCcpCiAKICAgIFRoZSBpbnZlcnNlIG9mIDptZXRoOmBwYXJzZWFkZHJgLCB0aGlzIHRha2VzIGEgMi10dXBsZSBvZiB0aGUgZm9ybSBgYChyZWFsbmFtZSwKICAgIGVtYWlsX2FkZHJlc3MpYGAgYW5kIHJldHVybnMgdGhlIHN0cmluZyB2YWx1ZSBzdWl0YWJsZSBmb3IgYSA6bWFpbGhlYWRlcjpgVG9gIG9yCiAgICA6bWFpbGhlYWRlcjpgQ2NgIGhlYWRlci4gIElmIHRoZSBmaXJzdCBlbGVtZW50IG9mICpwYWlyKiBpcyBmYWxzZSwgdGhlbiB0aGUKICAgIHNlY29uZCBlbGVtZW50IGlzIHJldHVybmVkIHVubW9kaWZpZWQuCiAKKyAgIE9wdGlvbmFsICpjaGFyc2V0KiBpcyB0aGUgY2hhcmFjdGVyIHNldCB0aGF0IHdpbGwgYmUgdXNlZCBpbiB0aGUgOnJmYzpgMjA0N2AKKyAgIGVuY29kaW5nIG9mIHRoZSBgYHJlYWxuYW1lYGAgaWYgdGhlIGBgcmVhbG5hbWVgYCBjb250YWlucyBub24tQVNDSUkKKyAgIGNoYXJhY3RlcnMuICBDYW4gYmUgYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBzdHJgIG9yIGEKKyAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAuICBEZWZhdWx0cyB0byBgYHV0Zi04YGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKmNoYXJzZXQqIG9wdGlvbi4KKwogCiAuLiBmdW5jdGlvbjo6IGdldGFkZHJlc3NlcyhmaWVsZHZhbHVlcykKIApAQCAtNzQsNiArODIsMjAgQEAKICAgIGluZGV4ZXMgNiwgNywgYW5kIDggb2YgdGhlIHJlc3VsdCB0dXBsZSBhcmUgbm90IHVzYWJsZS4KIAogCisuLiBmdW5jdGlvbjo6IHBhcnNlZGF0ZV90b19kYXRldGltZShkYXRlKQorCisgICBUaGUgaW52ZXJzZSBvZiA6ZnVuYzpgZm9ybWF0X2RhdGV0aW1lYC4gIFBlcmZvcm1zIHRoZSBzYW1lIGZ1bmN0aW9uIGFzCisgICA6ZnVuYzpgcGFyc2VkYXRlYCwgYnV0IG9uIHN1Y2Nlc3MgcmV0dXJucyBhIDptb2Q6YH5kYXRldGltZS5kYXRldGltZWAuICBJZgorICAgdGhlIGlucHV0IGRhdGUgaGFzIGEgdGltZXpvbmUgb2YgYGAtMDAwMGBgLCB0aGUgYGBkYXRldGltZWBgIHdpbGwgYmUgYSBuYWl2ZQorICAgYGBkYXRldGltZWBgLCBhbmQgaWYgdGhlIGRhdGUgaXMgY29uZm9ybWluZyB0byB0aGUgUkZDcyBpdCB3aWxsIHJlcHJlc2VudCBhCisgICB0aW1lIGluIFVUQyBidXQgd2l0aCBubyBpbmRpY2F0aW9uIG9mIHRoZSBhY3R1YWwgc291cmNlIHRpbWV6b25lIG9mIHRoZQorICAgbWVzc2FnZSB0aGUgZGF0ZSBjb21lcyBmcm9tLiAgSWYgdGhlIGlucHV0IGRhdGUgaGFzIGFueSBvdGhlciB2YWxpZCB0aW1lem9uZQorICAgb2Zmc2V0LCB0aGUgYGBkYXRldGltZWBgIHdpbGwgYmUgYW4gYXdhcmUgYGBkYXRldGltZWBgIHdpdGggdGhlCisgICBjb3JyZXNwb25kaW5nIGEgOmNsYXNzOmB+ZGF0ZXRpbWUudGltZXpvbmVgIDpjbGFzczpgfmRhdGV0aW1lLnR6aW5mb2AuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogbWt0aW1lX3R6KHR1cGxlKQogCiAgICBUdXJuIGEgMTAtdHVwbGUgYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YHBhcnNlZGF0ZV90emAgaW50byBhIFVUQyB0aW1lc3RhbXAuICBJdApAQCAtMTA1LDYgKzEyNywzNiBAQAogICAgYGBGYWxzZWBgLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLgogCiAKKy4uIGZ1bmN0aW9uOjogZm9ybWF0X2RhdGV0aW1lKGR0LCB1c2VnbXQ9RmFsc2UpCisKKyAgIExpa2UgYGBmb3JtYXRkYXRlYGAsIGJ1dCB0aGUgaW5wdXQgaXMgYSA6bW9kOmBkYXRldGltZWAgaW5zdGFuY2UuICBJZiBpdCBpcworICAgYSBuYWl2ZSBkYXRldGltZSwgaXQgaXMgYXNzdW1lZCB0byBiZSAiVVRDIHdpdGggbm8gaW5mb3JtYXRpb24gYWJvdXQgdGhlCisgICBzb3VyY2UgdGltZXpvbmUiLCBhbmQgdGhlIGNvbnZlbnRpb25hbCBgYC0wMDAwYGAgaXMgdXNlZCBmb3IgdGhlIHRpbWV6b25lLgorICAgSWYgaXQgaXMgYW4gYXdhcmUgYGBkYXRldGltZWBgLCB0aGVuIHRoZSBudW1lcmljIHRpbWV6b25lIG9mZnNldCBpcyB1c2VkLgorICAgSWYgaXQgaXMgYW4gYXdhcmUgdGltZXpvbmUgd2l0aCBvZmZzZXQgemVybywgdGhlbiAqdXNlZ210KiBtYXkgYmUgc2V0IHRvCisgICBgYFRydWVgYCwgaW4gd2hpY2ggY2FzZSB0aGUgc3RyaW5nIGBgR01UYGAgaXMgdXNlZCBpbnN0ZWFkIG9mIHRoZSBudW1lcmljCisgICB0aW1lem9uZSBvZmZzZXQuICBUaGlzIHByb3ZpZGVzIGEgd2F5IHRvIGdlbmVyYXRlIHN0YW5kYXJkcyBjb25mb3JtYW50IEhUVFAKKyAgIGRhdGUgaGVhZGVycy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBsb2NhbHRpbWUoZHQ9Tm9uZSkKKworICAgIFJldHVybiBsb2NhbCB0aW1lIGFzIGFuIGF3YXJlIGRhdGV0aW1lIG9iamVjdC4gIElmIGNhbGxlZCB3aXRob3V0CisgICAgYXJndW1lbnRzLCByZXR1cm4gY3VycmVudCB0aW1lLiAgT3RoZXJ3aXNlICpkdCogYXJndW1lbnQgc2hvdWxkIGJlIGEKKyAgICA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAgaW5zdGFuY2UsIGFuZCBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIGxvY2FsIHRpbWUKKyAgICB6b25lIGFjY29yZGluZyB0byB0aGUgc3lzdGVtIHRpbWUgem9uZSBkYXRhYmFzZS4gIElmICpkdCogaXMgbmFpdmUgKHRoYXQKKyAgICBpcywgYGBkdC50emluZm9gYCBpcyBgYE5vbmVgYCksIGl0IGlzIGFzc3VtZWQgdG8gYmUgaW4gbG9jYWwgdGltZS4gIEluIHRoaXMKKyAgICBjYXNlLCBhIHBvc2l0aXZlIG9yIHplcm8gdmFsdWUgZm9yICppc2RzdCogY2F1c2VzIGBgbG9jYWx0aW1lYGAgdG8gcHJlc3VtZQorICAgIGluaXRpYWxseSB0aGF0IHN1bW1lciB0aW1lIChmb3IgZXhhbXBsZSwgRGF5bGlnaHQgU2F2aW5nIFRpbWUpIGlzIG9yIGlzIG5vdAorICAgIChyZXNwZWN0aXZlbHkpIGluIGVmZmVjdCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLiAgQSBuZWdhdGl2ZSB2YWx1ZSBmb3IKKyAgICAqaXNkc3QqIGNhdXNlcyB0aGUgYGBsb2NhbHRpbWVgYCB0byBhdHRlbXB0IHRvIGRpdmluZSB3aGV0aGVyIHN1bW1lciB0aW1lCisgICAgaXMgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBmdW5jdGlvbjo6IG1ha2VfbXNnaWQoaWRzdHJpbmc9Tm9uZSwgZG9tYWluPU5vbmUpCiAKICAgIFJldHVybnMgYSBzdHJpbmcgc3VpdGFibGUgZm9yIGFuIDpyZmM6YDI4MjJgXCAtY29tcGxpYW50CkBAIC0xMTUsNyArMTY3LDggQEAKICAgIG1heSBiZSB1c2VmdWwgY2VydGFpbiBjYXNlcywgc3VjaCBhcyBhIGNvbnN0cnVjdGluZyBkaXN0cmlidXRlZCBzeXN0ZW0gdGhhdAogICAgdXNlcyBhIGNvbnNpc3RlbnQgZG9tYWluIG5hbWUgYWNyb3NzIG11bHRpcGxlIGhvc3RzLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMiBkb21haW4ga2V5d29yZCBhZGRlZAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgIEFkZGVkIHRoZSAqZG9tYWluKiBrZXl3b3JkLgogCiAKIC4uIGZ1bmN0aW9uOjogZGVjb2RlX3JmYzIyMzEocykKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2V4Y2VwdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QKaW5kZXggN2Q2MjJjMi4uOTU5NTIyMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QKQEAgLTM0LDYgKzM0LDQxIEBACiBkZWZpbmluZyBleGNlcHRpb25zIGlzIGF2YWlsYWJsZSBpbiB0aGUgUHl0aG9uIFR1dG9yaWFsIHVuZGVyCiA6cmVmOmB0dXQtdXNlcmV4Y2VwdGlvbnNgLgogCitXaGVuIHJhaXNpbmcgKG9yIHJlLXJhaXNpbmcpIGFuIGV4Y2VwdGlvbiBpbiBhbiA6a2V5d29yZDpgZXhjZXB0YCBjbGF1c2UKKzphdHRyOmBfX2NvbnRleHRfX2AgaXMgYXV0b21hdGljYWxseSBzZXQgdG8gdGhlIGxhc3QgZXhjZXB0aW9uIGNhdWdodDsgaWYgdGhlCituZXcgZXhjZXB0aW9uIGlzIG5vdCBoYW5kbGVkIHRoZSB0cmFjZWJhY2sgdGhhdCBpcyBldmVudHVhbGx5IGRpc3BsYXllZCB3aWxsCitpbmNsdWRlIHRoZSBvcmlnaW5hdGluZyBleGNlcHRpb24ocykgYW5kIHRoZSBmaW5hbCBleGNlcHRpb24uCisKK1doZW4gcmFpc2luZyBhIG5ldyBleGNlcHRpb24gKHJhdGhlciB0aGFuIHVzaW5nIGEgYmFyZSBgYHJhaXNlYGAgdG8gcmUtcmFpc2UKK3RoZSBleGNlcHRpb24gY3VycmVudGx5IGJlaW5nIGhhbmRsZWQpLCB0aGUgaW1wbGljaXQgZXhjZXB0aW9uIGNvbnRleHQgY2FuIGJlCitzdXBwbGVtZW50ZWQgd2l0aCBhbiBleHBsaWNpdCBjYXVzZSBieSB1c2luZyA6a2V5d29yZDpgZnJvbWAgd2l0aAorOmtleXdvcmQ6YHJhaXNlYDo6CisKKyAgIHJhaXNlIG5ld19leGMgZnJvbSBvcmlnaW5hbF9leGMKKworVGhlIGV4cHJlc3Npb24gZm9sbG93aW5nIDprZXl3b3JkOmBmcm9tYCBtdXN0IGJlIGFuIGV4Y2VwdGlvbiBvciBgYE5vbmVgYC4gSXQKK3dpbGwgYmUgc2V0IGFzIDphdHRyOmBfX2NhdXNlX19gIG9uIHRoZSByYWlzZWQgZXhjZXB0aW9uLiBTZXR0aW5nCis6YXR0cjpgX19jYXVzZV9fYCBhbHNvIGltcGxpY2l0bHkgc2V0cyB0aGUgOmF0dHI6YF9fc3VwcHJlc3NfY29udGV4dF9fYAorYXR0cmlidXRlIHRvIGBgVHJ1ZWBgLCBzbyB0aGF0IHVzaW5nIGBgcmFpc2UgbmV3X2V4YyBmcm9tIE5vbmVgYAorZWZmZWN0aXZlbHkgcmVwbGFjZXMgdGhlIG9sZCBleGNlcHRpb24gd2l0aCB0aGUgbmV3IG9uZSBmb3IgZGlzcGxheQorcHVycG9zZXMgKGUuZy4gY29udmVydGluZyA6ZXhjOmBLZXlFcnJvcmAgdG8gOmV4YzpgQXR0cmlidXRlRXJyb3JgLCB3aGlsZQorbGVhdmluZyB0aGUgb2xkIGV4Y2VwdGlvbiBhdmFpbGFibGUgaW4gOmF0dHI6YF9fY29udGV4dF9fYCBmb3IgaW50cm9zcGVjdGlvbgord2hlbiBkZWJ1Z2dpbmcuCisKK1RoZSBkZWZhdWx0IHRyYWNlYmFjayBkaXNwbGF5IGNvZGUgc2hvd3MgdGhlc2UgY2hhaW5lZCBleGNlcHRpb25zIGluCithZGRpdGlvbiB0byB0aGUgdHJhY2ViYWNrIGZvciB0aGUgZXhjZXB0aW9uIGl0c2VsZi4gQW4gZXhwbGljaXRseSBjaGFpbmVkCitleGNlcHRpb24gaW4gOmF0dHI6YF9fY2F1c2VfX2AgaXMgYWx3YXlzIHNob3duIHdoZW4gcHJlc2VudC4gQW4gaW1wbGljaXRseQorY2hhaW5lZCBleGNlcHRpb24gaW4gOmF0dHI6YF9fY29udGV4dF9fYCBpcyBzaG93biBvbmx5IGlmIDphdHRyOmBfX2NhdXNlX19gCitpcyA6Y29uc3Q6YE5vbmVgIGFuZCA6YXR0cjpgX19zdXBwcmVzc19jb250ZXh0X19gIGlzIGZhbHNlLgorCitJbiBlaXRoZXIgY2FzZSwgdGhlIGV4Y2VwdGlvbiBpdHNlbGYgaXMgYWx3YXlzIHNob3duIGFmdGVyIGFueSBjaGFpbmVkCitleGNlcHRpb25zIHNvIHRoYXQgdGhlIGZpbmFsIGxpbmUgb2YgdGhlIHRyYWNlYmFjayBhbHdheXMgc2hvd3MgdGhlIGxhc3QKK2V4Y2VwdGlvbiB0aGF0IHdhcyByYWlzZWQuCisKKworQmFzZSBjbGFzc2VzCistLS0tLS0tLS0tLS0KKwogVGhlIGZvbGxvd2luZyBleGNlcHRpb25zIGFyZSB1c2VkIG1vc3RseSBhcyBiYXNlIGNsYXNzZXMgZm9yIG90aGVyIGV4Y2VwdGlvbnMuCiAKIC4uIGV4Y2VwdGlvbjo6IEJhc2VFeGNlcHRpb24KQEAgLTkwLDI3ICsxMjUsOCBAQAogICAgY2FuIGJlIHJhaXNlZCBkaXJlY3RseSBieSA6ZnVuYzpgY29kZWNzLmxvb2t1cGAuCiAKIAotLi4gZXhjZXB0aW9uOjogRW52aXJvbm1lbnRFcnJvcgotCi0gICBUaGUgYmFzZSBjbGFzcyBmb3IgZXhjZXB0aW9ucyB0aGF0IGNhbiBvY2N1ciBvdXRzaWRlIHRoZSBQeXRob24gc3lzdGVtOgotICAgOmV4YzpgSU9FcnJvcmAsIDpleGM6YE9TRXJyb3JgLiAgV2hlbiBleGNlcHRpb25zIG9mIHRoaXMgdHlwZSBhcmUgY3JlYXRlZCB3aXRoIGEKLSAgIDItdHVwbGUsIHRoZSBmaXJzdCBpdGVtIGlzIGF2YWlsYWJsZSBvbiB0aGUgaW5zdGFuY2UncyA6YXR0cjpgZXJybm9gIGF0dHJpYnV0ZQotICAgKGl0IGlzIGFzc3VtZWQgdG8gYmUgYW4gZXJyb3IgbnVtYmVyKSwgYW5kIHRoZSBzZWNvbmQgaXRlbSBpcyBhdmFpbGFibGUgb24gdGhlCi0gICA6YXR0cjpgc3RyZXJyb3JgIGF0dHJpYnV0ZSAoaXQgaXMgdXN1YWxseSB0aGUgYXNzb2NpYXRlZCBlcnJvciBtZXNzYWdlKS4gIFRoZQotICAgdHVwbGUgaXRzZWxmIGlzIGFsc28gYXZhaWxhYmxlIG9uIHRoZSA6YXR0cjpgYXJnc2AgYXR0cmlidXRlLgotCi0gICBXaGVuIGFuIDpleGM6YEVudmlyb25tZW50RXJyb3JgIGV4Y2VwdGlvbiBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhIDMtdHVwbGUsIHRoZQotICAgZmlyc3QgdHdvIGl0ZW1zIGFyZSBhdmFpbGFibGUgYXMgYWJvdmUsIHdoaWxlIHRoZSB0aGlyZCBpdGVtIGlzIGF2YWlsYWJsZSBvbiB0aGUKLSAgIDphdHRyOmBmaWxlbmFtZWAgYXR0cmlidXRlLiAgSG93ZXZlciwgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGUKLSAgIDphdHRyOmBhcmdzYCBhdHRyaWJ1dGUgY29udGFpbnMgb25seSBhIDItdHVwbGUgb2YgdGhlIGZpcnN0IHR3byBjb25zdHJ1Y3RvcgotICAgYXJndW1lbnRzLgotCi0gICBUaGUgOmF0dHI6YGZpbGVuYW1lYCBhdHRyaWJ1dGUgaXMgYGBOb25lYGAgd2hlbiB0aGlzIGV4Y2VwdGlvbiBpcyBjcmVhdGVkIHdpdGgKLSAgIG90aGVyIHRoYW4gMyBhcmd1bWVudHMuICBUaGUgOmF0dHI6YGVycm5vYCBhbmQgOmF0dHI6YHN0cmVycm9yYCBhdHRyaWJ1dGVzIGFyZQotICAgYWxzbyBgYE5vbmVgYCB3aGVuIHRoZSBpbnN0YW5jZSB3YXMgY3JlYXRlZCB3aXRoIG90aGVyIHRoYW4gMiBvciAzIGFyZ3VtZW50cy4KLSAgIEluIHRoaXMgbGFzdCBjYXNlLCA6YXR0cjpgYXJnc2AgY29udGFpbnMgdGhlIHZlcmJhdGltIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBhcyBhCi0gICB0dXBsZS4KLQorQ29uY3JldGUgZXhjZXB0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMgYXJlIHRoZSBleGNlcHRpb25zIHRoYXQgYXJlIHVzdWFsbHkgcmFpc2VkLgogCkBAIC0xNTEsMjEgKzE2NywxOSBAQAogICAgaXQgaXMgdGVjaG5pY2FsbHkgbm90IGFuIGVycm9yLgogCiAKLS4uIGV4Y2VwdGlvbjo6IElPRXJyb3IKLQotICAgUmFpc2VkIHdoZW4gYW4gSS9PIG9wZXJhdGlvbiAoc3VjaCBhcyB0aGUgYnVpbHQtaW4gOmZ1bmM6YHByaW50YCBvcgotICAgOmZ1bmM6YG9wZW5gIGZ1bmN0aW9ucyBvciBhIG1ldGhvZCBvZiBhIDp0ZXJtOmBmaWxlIG9iamVjdGApIGZhaWxzIGZvciBhbgotICAgSS9PLXJlbGF0ZWQgcmVhc29uLCBlLmcuLCAiZmlsZSBub3QgZm91bmQiIG9yICJkaXNrIGZ1bGwiLgotCi0gICBUaGlzIGNsYXNzIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBFbnZpcm9ubWVudEVycm9yYC4gIFNlZSB0aGUgZGlzY3Vzc2lvbiBhYm92ZQotICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9uIGluc3RhbmNlIGF0dHJpYnV0ZXMuCi0KLQogLi4gZXhjZXB0aW9uOjogSW1wb3J0RXJyb3IKIAogICAgUmFpc2VkIHdoZW4gYW4gOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IGZhaWxzIHRvIGZpbmQgdGhlIG1vZHVsZSBkZWZpbml0aW9uCiAgICBvciB3aGVuIGEgYGBmcm9tIC4uLiBpbXBvcnRgYCBmYWlscyB0byBmaW5kIGEgbmFtZSB0aGF0IGlzIHRvIGJlIGltcG9ydGVkLgogCisgICBUaGUgOmF0dHI6YG5hbWVgIGFuZCA6YXR0cjpgcGF0aGAgYXR0cmlidXRlcyBjYW4gYmUgc2V0IHVzaW5nIGtleXdvcmQtb25seQorICAgYXJndW1lbnRzIHRvIHRoZSBjb25zdHJ1Y3Rvci4gV2hlbiBzZXQgdGhleSByZXByZXNlbnQgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZQorICAgdGhhdCB3YXMgYXR0ZW1wdGVkIHRvIGJlIGltcG9ydGVkIGFuZCB0aGUgcGF0aCB0byBhbnkgZmlsZSB3aGljaCB0cmlnZ2VyZWQKKyAgIHRoZSBleGNlcHRpb24sIHJlc3BlY3RpdmVseS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSA6YXR0cjpgbmFtZWAgYW5kIDphdHRyOmBwYXRoYCBhdHRyaWJ1dGVzLgorCiAKIC4uIGV4Y2VwdGlvbjo6IEluZGV4RXJyb3IKIApAQCAtMjIxLDE3ICsyMzUsMzAgQEAKIAogICAgLi4gaW5kZXg6OiBtb2R1bGU6IGVycm5vCiAKLSAgIFRoaXMgZXhjZXB0aW9uIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBFbnZpcm9ubWVudEVycm9yYC4gIEl0IGlzIHJhaXNlZCB3aGVuIGEKLSAgIGZ1bmN0aW9uIHJldHVybnMgYSBzeXN0ZW0tcmVsYXRlZCBlcnJvciAobm90IGZvciBpbGxlZ2FsIGFyZ3VtZW50IHR5cGVzIG9yCi0gICBvdGhlciBpbmNpZGVudGFsIGVycm9ycykuICBUaGUgOmF0dHI6YGVycm5vYCBhdHRyaWJ1dGUgaXMgYSBudW1lcmljIGVycm9yCi0gICBjb2RlIGZyb20gOmM6ZGF0YTpgZXJybm9gLCBhbmQgdGhlIDphdHRyOmBzdHJlcnJvcmAgYXR0cmlidXRlIGlzIHRoZQotICAgY29ycmVzcG9uZGluZyBzdHJpbmcsIGFzIHdvdWxkIGJlIHByaW50ZWQgYnkgdGhlIEMgZnVuY3Rpb24gOmM6ZnVuYzpgcGVycm9yYC4KLSAgIFNlZSB0aGUgbW9kdWxlIDptb2Q6YGVycm5vYCwgd2hpY2ggY29udGFpbnMgbmFtZXMgZm9yIHRoZSBlcnJvciBjb2RlcyBkZWZpbmVkCi0gICBieSB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtLgorICAgVGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gYSBzeXN0ZW0gZnVuY3Rpb24gcmV0dXJucyBhIHN5c3RlbS1yZWxhdGVkCisgICBlcnJvciwgaW5jbHVkaW5nIEkvTyBmYWlsdXJlcyBzdWNoIGFzICJmaWxlIG5vdCBmb3VuZCIgb3IgImRpc2sgZnVsbCIKKyAgIChub3QgZm9yIGlsbGVnYWwgYXJndW1lbnQgdHlwZXMgb3Igb3RoZXIgaW5jaWRlbnRhbCBlcnJvcnMpLiAgT2Z0ZW4gYQorICAgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAgd2lsbCBhY3R1YWxseSBiZSByYWlzZWQgYXMgZGVzY3JpYmVkIGluCisgICBgT1MgZXhjZXB0aW9uc2BfIGJlbG93LiAgVGhlIDphdHRyOmBlcnJub2AgYXR0cmlidXRlIGlzIGEgbnVtZXJpYyBlcnJvcgorICAgY29kZSBmcm9tIHRoZSBDIHZhcmlhYmxlIDpjOmRhdGE6YGVycm5vYC4KIAotICAgRm9yIGV4Y2VwdGlvbnMgdGhhdCBpbnZvbHZlIGEgZmlsZSBzeXN0ZW0gcGF0aCAoc3VjaCBhcyA6ZnVuYzpgY2hkaXJgIG9yCi0gICA6ZnVuYzpgdW5saW5rYCksIHRoZSBleGNlcHRpb24gaW5zdGFuY2Ugd2lsbCBjb250YWluIGEgdGhpcmQgYXR0cmlidXRlLAotICAgOmF0dHI6YGZpbGVuYW1lYCwgd2hpY2ggaXMgdGhlIGZpbGUgbmFtZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgorICAgVW5kZXIgV2luZG93cywgdGhlIDphdHRyOmB3aW5lcnJvcmAgYXR0cmlidXRlIGdpdmVzIHlvdSB0aGUgbmF0aXZlCisgICBXaW5kb3dzIGVycm9yIGNvZGUuICBUaGUgOmF0dHI6YGVycm5vYCBhdHRyaWJ1dGUgaXMgdGhlbiBhbiBhcHByb3hpbWF0ZQorICAgdHJhbnNsYXRpb24sIGluIFBPU0lYIHRlcm1zLCBvZiB0aGF0IG5hdGl2ZSBlcnJvciBjb2RlLgorCisgICBVbmRlciBhbGwgcGxhdGZvcm1zLCB0aGUgOmF0dHI6YHN0cmVycm9yYCBhdHRyaWJ1dGUgaXMgdGhlIGNvcnJlc3BvbmRpbmcKKyAgIGVycm9yIG1lc3NhZ2UgYXMgcHJvdmlkZWQgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0gKGFzIGZvcm1hdHRlZCBieSB0aGUgQworICAgZnVuY3Rpb25zIDpjOmZ1bmM6YHBlcnJvcmAgdW5kZXIgUE9TSVgsIGFuZCA6YzpmdW5jOmBGb3JtYXRNZXNzYWdlYAorICAgV2luZG93cykuCisKKyAgIEZvciBleGNlcHRpb25zIHRoYXQgaW52b2x2ZSBhIGZpbGUgc3lzdGVtIHBhdGggKHN1Y2ggYXMgOmZ1bmM6YG9wZW5gIG9yCisgICA6ZnVuYzpgb3MudW5saW5rYCksIHRoZSBleGNlcHRpb24gaW5zdGFuY2Ugd2lsbCBjb250YWluIGFuIGFkZGl0aW9uYWwKKyAgIGF0dHJpYnV0ZSwgOmF0dHI6YGZpbGVuYW1lYCwgd2hpY2ggaXMgdGhlIGZpbGUgbmFtZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmV4YzpgRW52aXJvbm1lbnRFcnJvcmAsIDpleGM6YElPRXJyb3JgLCA6ZXhjOmBXaW5kb3dzRXJyb3JgLAorICAgICAgOmV4YzpgVk1TRXJyb3JgLCA6ZXhjOmBzb2NrZXQuZXJyb3JgLCA6ZXhjOmBzZWxlY3QuZXJyb3JgIGFuZAorICAgICAgOmV4YzpgbW1hcC5lcnJvcmAgaGF2ZSBiZWVuIG1lcmdlZCBpbnRvIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIGV4Y2VwdGlvbjo6IE92ZXJmbG93RXJyb3IKQEAgLTI2Miw4ICsyODksMjAgQEAKIC4uIGV4Y2VwdGlvbjo6IFN0b3BJdGVyYXRpb24KIAogICAgUmFpc2VkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uIDpmdW5jOmBuZXh0YCBhbmQgYW4gOnRlcm06YGl0ZXJhdG9yYFwncwotICAgOm1ldGg6YH5pdGVyYXRvci5fX25leHRfX2AgbWV0aG9kIHRvIHNpZ25hbCB0aGF0IHRoZXJlIGFyZSBubyBmdXJ0aGVyIHZhbHVlcy4KKyAgIDptZXRoOmB+aXRlcmF0b3IuX19uZXh0X19gIG1ldGhvZCB0byBzaWduYWwgdGhhdCB0aGVyZSBhcmUgbm8gZnVydGhlcgorICAgaXRlbXMgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLgogCisgICBUaGUgZXhjZXB0aW9uIG9iamVjdCBoYXMgYSBzaW5nbGUgYXR0cmlidXRlIDphdHRyOmB2YWx1ZWAsIHdoaWNoIGlzCisgICBnaXZlbiBhcyBhbiBhcmd1bWVudCB3aGVuIGNvbnN0cnVjdGluZyB0aGUgZXhjZXB0aW9uLCBhbmQgZGVmYXVsdHMKKyAgIHRvIDpjb25zdDpgTm9uZWAuCisKKyAgIFdoZW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24gcmV0dXJucywgYSBuZXcgOmV4YzpgU3RvcEl0ZXJhdGlvbmAgaW5zdGFuY2UgaXMKKyAgIHJhaXNlZCwgYW5kIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgZnVuY3Rpb24gaXMgdXNlZCBhcyB0aGUKKyAgIDphdHRyOmB2YWx1ZWAgcGFyYW1ldGVyIHRvIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgZXhjZXB0aW9uLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgYGB2YWx1ZWBgIGF0dHJpYnV0ZSBhbmQgdGhlIGFiaWxpdHkgZm9yIGdlbmVyYXRvciBmdW5jdGlvbnMgdG8KKyAgICAgIHVzZSBpdCB0byByZXR1cm4gYSB2YWx1ZS4KIAogLi4gZXhjZXB0aW9uOjogU3ludGF4RXJyb3IKIApAQCAtMzQ2LDYgKzM4NSwzMCBAQAogICAgUmFpc2VkIHdoZW4gYSBVbmljb2RlLXJlbGF0ZWQgZW5jb2Rpbmcgb3IgZGVjb2RpbmcgZXJyb3Igb2NjdXJzLiAgSXQgaXMgYQogICAgc3ViY2xhc3Mgb2YgOmV4YzpgVmFsdWVFcnJvcmAuCiAKKyAgIDpleGM6YFVuaWNvZGVFcnJvcmAgaGFzIGF0dHJpYnV0ZXMgdGhhdCBkZXNjcmliZSB0aGUgZW5jb2Rpbmcgb3IgZGVjb2RpbmcKKyAgIGVycm9yLiAgRm9yIGV4YW1wbGUsIGBgZXJyLm9iamVjdFtlcnIuc3RhcnQ6ZXJyLmVuZF1gYCBnaXZlcyB0aGUgcGFydGljdWxhcgorICAgaW52YWxpZCBpbnB1dCB0aGF0IHRoZSBjb2RlYyBmYWlsZWQgb24uCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGVuY29kaW5nCisKKyAgICAgICBUaGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgdGhhdCByYWlzZWQgdGhlIGVycm9yLgorCisgICAuLiBhdHRyaWJ1dGU6OiByZWFzb24KKworICAgICAgIEEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIHNwZWNpZmljIGNvZGVjIGVycm9yLgorCisgICAuLiBhdHRyaWJ1dGU6OiBvYmplY3QKKworICAgICAgIFRoZSBvYmplY3QgdGhlIGNvZGVjIHdhcyBhdHRlbXB0aW5nIHRvIGVuY29kZSBvciBkZWNvZGUuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHN0YXJ0CisKKyAgICAgICBUaGUgZmlyc3QgaW5kZXggb2YgaW52YWxpZCBkYXRhIGluIDphdHRyOmBvYmplY3RgLgorCisgICAuLiBhdHRyaWJ1dGU6OiBlbmQKKworICAgICAgIFRoZSBpbmRleCBhZnRlciB0aGUgbGFzdCBpbnZhbGlkIGRhdGEgaW4gOmF0dHI6YG9iamVjdGAuCisKIAogLi4gZXhjZXB0aW9uOjogVW5pY29kZUVuY29kZUVycm9yCiAKQEAgLTM3MiwyMSArNDM1LDYgQEAKICAgIG1vcmUgcHJlY2lzZSBleGNlcHRpb24gc3VjaCBhcyA6ZXhjOmBJbmRleEVycm9yYC4KIAogCi0uLiBleGNlcHRpb246OiBWTVNFcnJvcgotCi0gICBPbmx5IGF2YWlsYWJsZSBvbiBWTVMuICBSYWlzZWQgd2hlbiBhIFZNUy1zcGVjaWZpYyBlcnJvciBvY2N1cnMuCi0KLQotLi4gZXhjZXB0aW9uOjogV2luZG93c0Vycm9yCi0KLSAgIFJhaXNlZCB3aGVuIGEgV2luZG93cy1zcGVjaWZpYyBlcnJvciBvY2N1cnMgb3Igd2hlbiB0aGUgZXJyb3IgbnVtYmVyIGRvZXMgbm90Ci0gICBjb3JyZXNwb25kIHRvIGFuIDpjOmRhdGE6YGVycm5vYCB2YWx1ZS4gIFRoZSA6YXR0cjpgd2luZXJyb3JgIGFuZAotICAgOmF0dHI6YHN0cmVycm9yYCB2YWx1ZXMgYXJlIGNyZWF0ZWQgZnJvbSB0aGUgcmV0dXJuIHZhbHVlcyBvZiB0aGUKLSAgIDpjOmZ1bmM6YEdldExhc3RFcnJvcmAgYW5kIDpjOmZ1bmM6YEZvcm1hdE1lc3NhZ2VgIGZ1bmN0aW9ucyBmcm9tIHRoZSBXaW5kb3dzCi0gICBQbGF0Zm9ybSBBUEkuIFRoZSA6YXR0cjpgZXJybm9gIHZhbHVlIG1hcHMgdGhlIDphdHRyOmB3aW5lcnJvcmAgdmFsdWUgdG8KLSAgIGNvcnJlc3BvbmRpbmcgYGBlcnJuby5oYGAgdmFsdWVzLiBUaGlzIGlzIGEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAuCi0KLQogLi4gZXhjZXB0aW9uOjogWmVyb0RpdmlzaW9uRXJyb3IKIAogICAgUmFpc2VkIHdoZW4gdGhlIHNlY29uZCBhcmd1bWVudCBvZiBhIGRpdmlzaW9uIG9yIG1vZHVsbyBvcGVyYXRpb24gaXMgemVyby4gIFRoZQpAQCAtMzk0LDYgKzQ0MiwxMzYgQEAKICAgIG9wZXJhdGlvbi4KIAogCitUaGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMgYXJlIGtlcHQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9uczsKK3N0YXJ0aW5nIGZyb20gUHl0aG9uIDMuMywgdGhleSBhcmUgYWxpYXNlcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKworLi4gZXhjZXB0aW9uOjogRW52aXJvbm1lbnRFcnJvcgorCisuLiBleGNlcHRpb246OiBJT0Vycm9yCisKKy4uIGV4Y2VwdGlvbjo6IFZNU0Vycm9yCisKKyAgIE9ubHkgYXZhaWxhYmxlIG9uIFZNUy4KKworLi4gZXhjZXB0aW9uOjogV2luZG93c0Vycm9yCisKKyAgIE9ubHkgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCisKKworT1MgZXhjZXB0aW9ucworXl5eXl5eXl5eXl5eXgorCitUaGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMgYXJlIHN1YmNsYXNzZXMgb2YgOmV4YzpgT1NFcnJvcmAsIHRoZXkgZ2V0IHJhaXNlZAorZGVwZW5kaW5nIG9uIHRoZSBzeXN0ZW0gZXJyb3IgY29kZS4KKworLi4gZXhjZXB0aW9uOjogQmxvY2tpbmdJT0Vycm9yCisKKyAgIFJhaXNlZCB3aGVuIGFuIG9wZXJhdGlvbiB3b3VsZCBibG9jayBvbiBhbiBvYmplY3QgKGUuZy4gc29ja2V0KSBzZXQKKyAgIGZvciBub24tYmxvY2tpbmcgb3BlcmF0aW9uLgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRUFHQUlOYGAsIGBgRUFMUkVBRFlgYCwKKyAgIGBgRVdPVUxEQkxPQ0tgYCBhbmQgYGBFSU5QUk9HUkVTU2BgLgorCisgICBJbiBhZGRpdGlvbiB0byB0aG9zZSBvZiA6ZXhjOmBPU0Vycm9yYCwgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYCBjYW4gaGF2ZQorICAgb25lIG1vcmUgYXR0cmlidXRlOgorCisgICAuLiBhdHRyaWJ1dGU6OiBjaGFyYWN0ZXJzX3dyaXR0ZW4KKworICAgICAgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB3cml0dGVuIHRvIHRoZSBzdHJlYW0KKyAgICAgIGJlZm9yZSBpdCBibG9ja2VkLiAgVGhpcyBhdHRyaWJ1dGUgaXMgYXZhaWxhYmxlIHdoZW4gdXNpbmcgdGhlCisgICAgICBidWZmZXJlZCBJL08gY2xhc3NlcyBmcm9tIHRoZSA6bW9kOmBpb2AgbW9kdWxlLgorCisuLiBleGNlcHRpb246OiBDaGlsZFByb2Nlc3NFcnJvcgorCisgICBSYWlzZWQgd2hlbiBhbiBvcGVyYXRpb24gb24gYSBjaGlsZCBwcm9jZXNzIGZhaWxlZC4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVDSElMRGBgLgorCisuLiBleGNlcHRpb246OiBDb25uZWN0aW9uRXJyb3IKKworICAgQSBiYXNlIGNsYXNzIGZvciBjb25uZWN0aW9uLXJlbGF0ZWQgaXNzdWVzLgorCisgICBTdWJjbGFzc2VzIGFyZSA6ZXhjOmBCcm9rZW5QaXBlRXJyb3JgLCA6ZXhjOmBDb25uZWN0aW9uQWJvcnRlZEVycm9yYCwKKyAgIDpleGM6YENvbm5lY3Rpb25SZWZ1c2VkRXJyb3JgIGFuZCA6ZXhjOmBDb25uZWN0aW9uUmVzZXRFcnJvcmAuCisKKy4uIGV4Y2VwdGlvbjo6IEJyb2tlblBpcGVFcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YENvbm5lY3Rpb25FcnJvcmAsIHJhaXNlZCB3aGVuIHRyeWluZyB0byB3cml0ZSBvbiBhCisgICBwaXBlIHdoaWxlIHRoZSBvdGhlciBlbmQgaGFzIGJlZW4gY2xvc2VkLCBvciB0cnlpbmcgdG8gd3JpdGUgb24gYSBzb2NrZXQKKyAgIHdoaWNoIGhhcyBiZWVuIHNodXRkb3duIGZvciB3cml0aW5nLgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRVBJUEVgYCBhbmQgYGBFU0hVVERPV05gYC4KKworLi4gZXhjZXB0aW9uOjogQ29ubmVjdGlvbkFib3J0ZWRFcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YENvbm5lY3Rpb25FcnJvcmAsIHJhaXNlZCB3aGVuIGEgY29ubmVjdGlvbiBhdHRlbXB0CisgICBpcyBhYm9ydGVkIGJ5IHRoZSBwZWVyLgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRUNPTk5BQk9SVEVEYGAuCisKKy4uIGV4Y2VwdGlvbjo6IENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IKKworICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBDb25uZWN0aW9uRXJyb3JgLCByYWlzZWQgd2hlbiBhIGNvbm5lY3Rpb24gYXR0ZW1wdAorICAgaXMgcmVmdXNlZCBieSB0aGUgcGVlci4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVDT05OUkVGVVNFRGBgLgorCisuLiBleGNlcHRpb246OiBDb25uZWN0aW9uUmVzZXRFcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YENvbm5lY3Rpb25FcnJvcmAsIHJhaXNlZCB3aGVuIGEgY29ubmVjdGlvbiBpcworICAgcmVzZXQgYnkgdGhlIHBlZXIuCisgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFQ09OTlJFU0VUYGAuCisKKy4uIGV4Y2VwdGlvbjo6IEZpbGVFeGlzdHNFcnJvcgorCisgICBSYWlzZWQgd2hlbiB0cnlpbmcgdG8gY3JlYXRlIGEgZmlsZSBvciBkaXJlY3Rvcnkgd2hpY2ggYWxyZWFkeSBleGlzdHMuCisgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFRVhJU1RgYC4KKworLi4gZXhjZXB0aW9uOjogRmlsZU5vdEZvdW5kRXJyb3IKKworICAgUmFpc2VkIHdoZW4gYSBmaWxlIG9yIGRpcmVjdG9yeSBpcyByZXF1ZXN0ZWQgYnV0IGRvZXNuJ3QgZXhpc3QuCisgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFTk9FTlRgYC4KKworLi4gZXhjZXB0aW9uOjogSW50ZXJydXB0ZWRFcnJvcgorCisgICBSYWlzZWQgd2hlbiBhIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGJ5IGFuIGluY29taW5nIHNpZ25hbC4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVJTlRSYGAuCisKKy4uIGV4Y2VwdGlvbjo6IElzQURpcmVjdG9yeUVycm9yCisKKyAgIFJhaXNlZCB3aGVuIGEgZmlsZSBvcGVyYXRpb24gKHN1Y2ggYXMgOmZ1bmM6YG9zLnJlbW92ZWApIGlzIHJlcXVlc3RlZAorICAgb24gYSBkaXJlY3RvcnkuCisgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFSVNESVJgYC4KKworLi4gZXhjZXB0aW9uOjogTm90QURpcmVjdG9yeUVycm9yCisKKyAgIFJhaXNlZCB3aGVuIGEgZGlyZWN0b3J5IG9wZXJhdGlvbiAoc3VjaCBhcyA6ZnVuYzpgb3MubGlzdGRpcmApIGlzIHJlcXVlc3RlZAorICAgb24gc29tZXRoaW5nIHdoaWNoIGlzIG5vdCBhIGRpcmVjdG9yeS4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVOT1RESVJgYC4KKworLi4gZXhjZXB0aW9uOjogUGVybWlzc2lvbkVycm9yCisKKyAgIFJhaXNlZCB3aGVuIHRyeWluZyB0byBydW4gYW4gb3BlcmF0aW9uIHdpdGhvdXQgdGhlIGFkZXF1YXRlIGFjY2VzcworICAgcmlnaHRzIC0gZm9yIGV4YW1wbGUgZmlsZXN5c3RlbSBwZXJtaXNzaW9ucy4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVBQ0NFU2BgIGFuZCBgYEVQRVJNYGAuCisKKy4uIGV4Y2VwdGlvbjo6IFByb2Nlc3NMb29rdXBFcnJvcgorCisgICBSYWlzZWQgd2hlbiBhIGdpdmVuIHByb2Nlc3MgZG9lc24ndCBleGlzdC4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVTUkNIYGAuCisKKy4uIGV4Y2VwdGlvbjo6IFRpbWVvdXRFcnJvcgorCisgICBSYWlzZWQgd2hlbiBhIHN5c3RlbSBmdW5jdGlvbiB0aW1lZCBvdXQgYXQgdGhlIHN5c3RlbSBsZXZlbC4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVUSU1FRE9VVGBgLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgIEFsbCB0aGUgYWJvdmUgOmV4YzpgT1NFcnJvcmAgc3ViY2xhc3NlcyB3ZXJlIGFkZGVkLgorCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmAzMTUxYCAtIFJld29ya2luZyB0aGUgT1MgYW5kIElPIGV4Y2VwdGlvbiBoaWVyYXJjaHkKKworCitXYXJuaW5ncworLS0tLS0tLS0KKwogVGhlIGZvbGxvd2luZyBleGNlcHRpb25zIGFyZSB1c2VkIGFzIHdhcm5pbmcgY2F0ZWdvcmllczsgc2VlIHRoZSA6bW9kOmB3YXJuaW5nc2AKIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZmF1bHRoYW5kbGVyLnJzdCBiL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MzMzYyMQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKQEAgLTAsMCArMSwxMzYgQEAKKzptb2Q6YGZhdWx0aGFuZGxlcmAgLS0tIER1bXAgdGhlIFB5dGhvbiB0cmFjZWJhY2sKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogZmF1bHRoYW5kbGVyCisgICA6c3lub3BzaXM6IER1bXAgdGhlIFB5dGhvbiB0cmFjZWJhY2suCisKK1RoaXMgbW9kdWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyB0byBkdW1wIFB5dGhvbiB0cmFjZWJhY2tzIGV4cGxpY2l0bHksIG9uIGEgZmF1bHQsCithZnRlciBhIHRpbWVvdXQsIG9yIG9uIGEgdXNlciBzaWduYWwuIENhbGwgOmZ1bmM6YGZhdWx0aGFuZGxlci5lbmFibGVgIHRvCitpbnN0YWxsIGZhdWx0IGhhbmRsZXJzIGZvciB0aGUgOmNvbnN0OmBTSUdTRUdWYCwgOmNvbnN0OmBTSUdGUEVgLAorOmNvbnN0OmBTSUdBQlJUYCwgOmNvbnN0OmBTSUdCVVNgLCBhbmQgOmNvbnN0OmBTSUdJTExgIHNpZ25hbHMuIFlvdSBjYW4gYWxzbworZW5hYmxlIHRoZW0gYXQgc3RhcnR1cCBieSBzZXR0aW5nIHRoZSA6ZW52dmFyOmBQWVRIT05GQVVMVEhBTkRMRVJgIGVudmlyb25tZW50Cit2YXJpYWJsZSBvciBieSB1c2luZyA6b3B0aW9uOmAtWGAgYGBmYXVsdGhhbmRsZXJgYCBjb21tYW5kIGxpbmUgb3B0aW9uLgorCitUaGUgZmF1bHQgaGFuZGxlciBpcyBjb21wYXRpYmxlIHdpdGggc3lzdGVtIGZhdWx0IGhhbmRsZXJzIGxpa2UgQXBwb3J0IG9yIHRoZQorV2luZG93cyBmYXVsdCBoYW5kbGVyLiBUaGUgbW9kdWxlIHVzZXMgYW4gYWx0ZXJuYXRpdmUgc3RhY2sgZm9yIHNpZ25hbCBoYW5kbGVycworaWYgdGhlIDpjOmZ1bmM6YHNpZ2FsdHN0YWNrYCBmdW5jdGlvbiBpcyBhdmFpbGFibGUuIFRoaXMgYWxsb3dzIGl0IHRvIGR1bXAgdGhlCit0cmFjZWJhY2sgZXZlbiBvbiBhIHN0YWNrIG92ZXJmbG93LgorCitUaGUgZmF1bHQgaGFuZGxlciBpcyBjYWxsZWQgb24gY2F0YXN0cm9waGljIGNhc2VzIGFuZCB0aGVyZWZvcmUgY2FuIG9ubHkgdXNlCitzaWduYWwtc2FmZSBmdW5jdGlvbnMgKGUuZy4gaXQgY2Fubm90IGFsbG9jYXRlIG1lbW9yeSBvbiB0aGUgaGVhcCkuIEJlY2F1c2Ugb2YKK3RoaXMgbGltaXRhdGlvbiB0cmFjZWJhY2sgZHVtcGluZyBpcyBtaW5pbWFsIGNvbXBhcmVkIHRvIG5vcm1hbCBQeXRob24KK3RyYWNlYmFja3M6CisKKyogT25seSBBU0NJSSBpcyBzdXBwb3J0ZWQuIFRoZSBgYGJhY2tzbGFzaHJlcGxhY2VgYCBlcnJvciBoYW5kbGVyIGlzIHVzZWQgb24KKyAgZW5jb2RpbmcuCisqIEVhY2ggc3RyaW5nIGlzIGxpbWl0ZWQgdG8gNTAwIGNoYXJhY3RlcnMuCisqIE9ubHkgdGhlIGZpbGVuYW1lLCB0aGUgZnVuY3Rpb24gbmFtZSBhbmQgdGhlIGxpbmUgbnVtYmVyIGFyZQorICBkaXNwbGF5ZWQuIChubyBzb3VyY2UgY29kZSkKKyogSXQgaXMgbGltaXRlZCB0byAxMDAgZnJhbWVzIGFuZCAxMDAgdGhyZWFkcy4KKworQnkgZGVmYXVsdCwgdGhlIFB5dGhvbiB0cmFjZWJhY2sgaXMgd3JpdHRlbiB0byA6ZGF0YTpgc3lzLnN0ZGVycmAuIFRvIHNlZQordHJhY2ViYWNrcywgYXBwbGljYXRpb25zIG11c3QgYmUgcnVuIGluIHRoZSB0ZXJtaW5hbC4gQSBsb2cgZmlsZSBjYW4KK2FsdGVybmF0aXZlbHkgYmUgcGFzc2VkIHRvIDpmdW5jOmBmYXVsdGhhbmRsZXIuZW5hYmxlYC4KKworVGhlIG1vZHVsZSBpcyBpbXBsZW1lbnRlZCBpbiBDLCBzbyB0cmFjZWJhY2tzIGNhbiBiZSBkdW1wZWQgb24gYSBjcmFzaCBvciB3aGVuCitQeXRob24gaXMgZGVhZGxvY2tlZC4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworRHVtcCB0aGUgdHJhY2ViYWNrCistLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBkdW1wX3RyYWNlYmFjayhmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUpCisKKyAgIER1bXAgdGhlIHRyYWNlYmFja3Mgb2YgYWxsIHRocmVhZHMgaW50byAqZmlsZSouIElmICphbGxfdGhyZWFkcyogaXMKKyAgIGBgRmFsc2VgYCwgZHVtcCBvbmx5IHRoZSBjdXJyZW50IHRocmVhZC4KKworCitGYXVsdCBoYW5kbGVyIHN0YXRlCistLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogZW5hYmxlKGZpbGU9c3lzLnN0ZGVyciwgYWxsX3RocmVhZHM9VHJ1ZSkKKworICAgRW5hYmxlIHRoZSBmYXVsdCBoYW5kbGVyOiBpbnN0YWxsIGhhbmRsZXJzIGZvciB0aGUgOmNvbnN0OmBTSUdTRUdWYCwKKyAgIDpjb25zdDpgU0lHRlBFYCwgOmNvbnN0OmBTSUdBQlJUYCwgOmNvbnN0OmBTSUdCVVNgIGFuZCA6Y29uc3Q6YFNJR0lMTGAKKyAgIHNpZ25hbHMgdG8gZHVtcCB0aGUgUHl0aG9uIHRyYWNlYmFjay4gSWYgKmFsbF90aHJlYWRzKiBpcyBgYFRydWVgYCwKKyAgIHByb2R1Y2UgdHJhY2ViYWNrcyBmb3IgZXZlcnkgcnVubmluZyB0aHJlYWQuIE90aGVyd2lzZSwgZHVtcCBvbmx5IHRoZSBjdXJyZW50CisgICB0aHJlYWQuCisKKy4uIGZ1bmN0aW9uOjogZGlzYWJsZSgpCisKKyAgIERpc2FibGUgdGhlIGZhdWx0IGhhbmRsZXI6IHVuaW5zdGFsbCB0aGUgc2lnbmFsIGhhbmRsZXJzIGluc3RhbGxlZCBieQorICAgOmZ1bmM6YGVuYWJsZWAuCisKKy4uIGZ1bmN0aW9uOjogaXNfZW5hYmxlZCgpCisKKyAgIENoZWNrIGlmIHRoZSBmYXVsdCBoYW5kbGVyIGlzIGVuYWJsZWQuCisKKworRHVtcCB0aGUgdHJhY2ViYWNrcyBhZnRlciBhIHRpbWVvdXQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogZHVtcF90cmFjZWJhY2tfbGF0ZXIodGltZW91dCwgcmVwZWF0PUZhbHNlLCBmaWxlPXN5cy5zdGRlcnIsIGV4aXQ9RmFsc2UpCisKKyAgIER1bXAgdGhlIHRyYWNlYmFja3Mgb2YgYWxsIHRocmVhZHMsIGFmdGVyIGEgdGltZW91dCBvZiAqdGltZW91dCogc2Vjb25kcywgb3IKKyAgIGV2ZXJ5ICp0aW1lb3V0KiBzZWNvbmRzIGlmICpyZXBlYXQqIGlzIGBgVHJ1ZWBgLiAgSWYgKmV4aXQqIGlzIGBgVHJ1ZWBgLCBjYWxsCisgICA6YzpmdW5jOmBfZXhpdGAgd2l0aCBzdGF0dXM9MSBhZnRlciBkdW1waW5nIHRoZSB0cmFjZWJhY2tzLiAgKE5vdGUKKyAgIDpjOmZ1bmM6YF9leGl0YCBleGl0cyB0aGUgcHJvY2VzcyBpbW1lZGlhdGVseSwgd2hpY2ggbWVhbnMgaXQgZG9lc24ndCBkbyBhbnkKKyAgIGNsZWFudXAgbGlrZSBmbHVzaGluZyBmaWxlIGJ1ZmZlcnMuKSBJZiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIHR3aWNlLCB0aGUgbmV3CisgICBjYWxsIHJlcGxhY2VzIHByZXZpb3VzIHBhcmFtZXRlcnMgYW5kIHJlc2V0cyB0aGUgdGltZW91dC4gVGhlIHRpbWVyIGhhcyBhCisgICBzdWItc2Vjb25kIHJlc29sdXRpb24uCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSB3YXRjaGRvZyB0aHJlYWQgYW5kIHRoZXJlZm9yZSBpcyBub3QKKyAgIGF2YWlsYWJsZSBpZiBQeXRob24gaXMgY29tcGlsZWQgd2l0aCB0aHJlYWRzIGRpc2FibGVkLgorCisuLiBmdW5jdGlvbjo6IGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpCisKKyAgIENhbmNlbCB0aGUgbGFzdCBjYWxsIHRvIDpmdW5jOmBkdW1wX3RyYWNlYmFja19sYXRlcmAuCisKKworRHVtcCB0aGUgdHJhY2ViYWNrIG9uIGEgdXNlciBzaWduYWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogcmVnaXN0ZXIoc2lnbnVtLCBmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUsIGNoYWluPUZhbHNlKQorCisgICBSZWdpc3RlciBhIHVzZXIgc2lnbmFsOiBpbnN0YWxsIGEgaGFuZGxlciBmb3IgdGhlICpzaWdudW0qIHNpZ25hbCB0byBkdW1wCisgICB0aGUgdHJhY2ViYWNrIG9mIGFsbCB0aHJlYWRzLCBvciBvZiB0aGUgY3VycmVudCB0aHJlYWQgaWYgKmFsbF90aHJlYWRzKiBpcworICAgYGBGYWxzZWBgLCBpbnRvICpmaWxlKi4gQ2FsbCB0aGUgcHJldmlvdXMgaGFuZGxlciBpZiBjaGFpbiBpcyBgYFRydWVgYC4KKworICAgTm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgorCisuLiBmdW5jdGlvbjo6IHVucmVnaXN0ZXIoc2lnbnVtKQorCisgICBVbnJlZ2lzdGVyIGEgdXNlciBzaWduYWw6IHVuaW5zdGFsbCB0aGUgaGFuZGxlciBvZiB0aGUgKnNpZ251bSogc2lnbmFsCisgICBpbnN0YWxsZWQgYnkgOmZ1bmM6YHJlZ2lzdGVyYC4gUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzaWduYWwgd2FzIHJlZ2lzdGVyZWQsCisgICBgYEZhbHNlYGAgb3RoZXJ3aXNlLgorCisgICBOb3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCisKKworRmlsZSBkZXNjcmlwdG9yIGlzc3VlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOmZ1bmM6YGVuYWJsZWAsIDpmdW5jOmBkdW1wX3RyYWNlYmFja19sYXRlcmAgYW5kIDpmdW5jOmByZWdpc3RlcmAga2VlcCB0aGUKK2ZpbGUgZGVzY3JpcHRvciBvZiB0aGVpciAqZmlsZSogYXJndW1lbnQuIElmIHRoZSBmaWxlIGlzIGNsb3NlZCBhbmQgaXRzIGZpbGUKK2Rlc2NyaXB0b3IgaXMgcmV1c2VkIGJ5IGEgbmV3IGZpbGUsIG9yIGlmIDpmdW5jOmBvcy5kdXAyYCBpcyB1c2VkIHRvIHJlcGxhY2UKK3RoZSBmaWxlIGRlc2NyaXB0b3IsIHRoZSB0cmFjZWJhY2sgd2lsbCBiZSB3cml0dGVuIGludG8gYSBkaWZmZXJlbnQgZmlsZS4gQ2FsbAordGhlc2UgZnVuY3Rpb25zIGFnYWluIGVhY2ggdGltZSB0aGF0IHRoZSBmaWxlIGlzIHJlcGxhY2VkLgorCisKK0V4YW1wbGUKKy0tLS0tLS0KKworRXhhbXBsZSBvZiBhIHNlZ21lbnRhdGlvbiBmYXVsdCBvbiBMaW51eDogOjoKKworICAgICQgcHl0aG9uIC1xIC1YIGZhdWx0aGFuZGxlcgorICAgID4+PiBpbXBvcnQgY3R5cGVzCisgICAgPj4+IGN0eXBlcy5zdHJpbmdfYXQoMCkKKyAgICBGYXRhbCBQeXRob24gZXJyb3I6IFNlZ21lbnRhdGlvbiBmYXVsdAorCisgICAgQ3VycmVudCB0aHJlYWQgMHgwMDAwN2ZiODk5ZjM5NzAwOgorICAgICAgRmlsZSAiL2hvbWUvcHl0aG9uL2NweXRob24vTGliL2N0eXBlcy9fX2luaXRfXy5weSIsIGxpbmUgNDg2IGluIHN0cmluZ19hdAorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSBpbiA8bW9kdWxlPgorICAgIFNlZ21lbnRhdGlvbiBmYXVsdAorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mY250bC5yc3QgYi9Eb2MvbGlicmFyeS9mY250bC5yc3QKaW5kZXggNjE5MjQwMC4uOWE5Y2RjMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZmNudGwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZjbnRsLnJzdApAQCAtMTksNiArMTksMTEgQEAKIGBgc3lzLnN0ZGluLmZpbGVubygpYGAsIG9yIGEgOmNsYXNzOmBpby5JT0Jhc2VgIG9iamVjdCwgc3VjaCBhcyBgYHN5cy5zdGRpbmBgCiBpdHNlbGYsIHdoaWNoIHByb3ZpZGVzIGEgOm1ldGg6YGZpbGVub2AgdGhhdCByZXR1cm5zIGEgZ2VudWluZSBmaWxlIGRlc2NyaXB0b3IuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBPcGVyYXRpb25zIGluIHRoaXMgbW9kdWxlIHVzZWQgdG8gcmFpc2UgYSA6ZXhjOmBJT0Vycm9yYCB3aGVyZSB0aGV5IG5vdworICAgcmFpc2UgYSA6ZXhjOmBPU0Vycm9yYC4KKworCiBUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CiAKIApAQCAtNDAsNyArNDUsNyBAQAogICAgbGFyZ2VyIHRoYW4gMTAyNCBieXRlcywgdGhpcyBpcyBtb3N0IGxpa2VseSB0byByZXN1bHQgaW4gYSBzZWdtZW50YXRpb24KICAgIHZpb2xhdGlvbiBvciBhIG1vcmUgc3VidGxlIGRhdGEgY29ycnVwdGlvbi4KIAotICAgSWYgdGhlIDpjOmZ1bmM6YGZjbnRsYCBmYWlscywgYW4gOmV4YzpgSU9FcnJvcmAgaXMgcmFpc2VkLgorICAgSWYgdGhlIDpjOmZ1bmM6YGZjbnRsYCBmYWlscywgYW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkLgogCiAKIC4uIGZ1bmN0aW9uOjogaW9jdGwoZmQsIG9wWywgYXJnWywgbXV0YXRlX2ZsYWddXSkKQEAgLTEwNyw3ICsxMTIsNyBAQAogICAgV2hlbiAqb3BlcmF0aW9uKiBpcyA6Y29uc3Q6YExPQ0tfU0hgIG9yIDpjb25zdDpgTE9DS19FWGAsIGl0IGNhbiBhbHNvIGJlCiAgICBiaXR3aXNlIE9SZWQgd2l0aCA6Y29uc3Q6YExPQ0tfTkJgIHRvIGF2b2lkIGJsb2NraW5nIG9uIGxvY2sgYWNxdWlzaXRpb24uCiAgICBJZiA6Y29uc3Q6YExPQ0tfTkJgIGlzIHVzZWQgYW5kIHRoZSBsb2NrIGNhbm5vdCBiZSBhY3F1aXJlZCwgYW4KLSAgIDpleGM6YElPRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGFuZCB0aGUgZXhjZXB0aW9uIHdpbGwgaGF2ZSBhbiAqZXJybm8qCisgICA6ZXhjOmBPU0Vycm9yYCB3aWxsIGJlIHJhaXNlZCBhbmQgdGhlIGV4Y2VwdGlvbiB3aWxsIGhhdmUgYW4gKmVycm5vKgogICAgYXR0cmlidXRlIHNldCB0byA6Y29uc3Q6YEVBQ0NFU2Agb3IgOmNvbnN0OmBFQUdBSU5gIChkZXBlbmRpbmcgb24gdGhlCiAgICBvcGVyYXRpbmcgc3lzdGVtOyBmb3IgcG9ydGFiaWxpdHksIGNoZWNrIGZvciBib3RoIHZhbHVlcykuICBPbiBhdCBsZWFzdCBzb21lCiAgICBzeXN0ZW1zLCA6Y29uc3Q6YExPQ0tfRVhgIGNhbiBvbmx5IGJlIHVzZWQgaWYgdGhlIGZpbGUgZGVzY3JpcHRvciByZWZlcnMgdG8gYQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZmlsZWNtcC5yc3QgYi9Eb2MvbGlicmFyeS9maWxlY21wLnJzdAppbmRleCA4ZmQyM2RkLi44YTg4ZjhjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9maWxlY21wLnJzdAorKysgYi9Eb2MvbGlicmFyeS9maWxlY21wLnJzdApAQCAtMjEsMTEgKzIxLDggQEAKICAgIENvbXBhcmUgdGhlIGZpbGVzIG5hbWVkICpmMSogYW5kICpmMiosIHJldHVybmluZyBgYFRydWVgYCBpZiB0aGV5IHNlZW0gZXF1YWwsCiAgICBgYEZhbHNlYGAgb3RoZXJ3aXNlLgogCi0gICBVbmxlc3MgKnNoYWxsb3cqIGlzIGdpdmVuIGFuZCBpcyBmYWxzZSwgZmlsZXMgd2l0aCBpZGVudGljYWwgOmZ1bmM6YG9zLnN0YXRgCi0gICBzaWduYXR1cmVzIGFyZSB0YWtlbiB0byBiZSBlcXVhbC4KLQotICAgRmlsZXMgdGhhdCB3ZXJlIGNvbXBhcmVkIHVzaW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBub3QgYmUgY29tcGFyZWQgYWdhaW4gdW5sZXNzCi0gICB0aGVpciA6ZnVuYzpgb3Muc3RhdGAgc2lnbmF0dXJlIGNoYW5nZXMuCisgICBJZiAqc2hhbGxvdyogaXMgdHJ1ZSwgZmlsZXMgd2l0aCBpZGVudGljYWwgOmZ1bmM6YG9zLnN0YXRgIHNpZ25hdHVyZXMgYXJlCisgICB0YWtlbiB0byBiZSBlcXVhbC4gIE90aGVyd2lzZSwgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlcyBhcmUgY29tcGFyZWQuCiAKICAgIE5vdGUgdGhhdCBubyBleHRlcm5hbCBwcm9ncmFtcyBhcmUgY2FsbGVkIGZyb20gdGhpcyBmdW5jdGlvbiwgZ2l2aW5nIGl0CiAgICBwb3J0YWJpbGl0eSBhbmQgZWZmaWNpZW5jeS4KQEAgLTUxLDIzICs0OCwxMSBAQAogICAgb25lIG9mIHRoZSB0aHJlZSByZXR1cm5lZCBsaXN0cy4KIAogCi1FeGFtcGxlOjoKLQotICAgPj4+IGltcG9ydCBmaWxlY21wCi0gICA+Pj4gZmlsZWNtcC5jbXAoJ3VuZG9jLnJzdCcsICd1bmRvYy5yc3QnKSAjIGRvY3Rlc3Q6ICtTS0lQCi0gICBUcnVlCi0gICA+Pj4gZmlsZWNtcC5jbXAoJ3VuZG9jLnJzdCcsICdpbmRleC5yc3QnKSAjIGRvY3Rlc3Q6ICtTS0lQCi0gICBGYWxzZQotCi0KIC4uIF9kaXJjbXAtb2JqZWN0czoKIAogVGhlIDpjbGFzczpgZGlyY21wYCBjbGFzcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi06Y2xhc3M6YGRpcmNtcGAgaW5zdGFuY2VzIGFyZSBidWlsdCB1c2luZyB0aGlzIGNvbnN0cnVjdG9yOgotCi0KIC4uIGNsYXNzOjogZGlyY21wKGEsIGIsIGlnbm9yZT1Ob25lLCBoaWRlPU5vbmUpCiAKICAgIENvbnN0cnVjdCBhIG5ldyBkaXJlY3RvcnkgY29tcGFyaXNvbiBvYmplY3QsIHRvIGNvbXBhcmUgdGhlIGRpcmVjdG9yaWVzICphKiBhbmQKQEAgLTgzLDcgKzY4LDcgQEAKIAogICAgLi4gbWV0aG9kOjogcmVwb3J0KCkKIAotICAgICAgUHJpbnQgKHRvIGBgc3lzLnN0ZG91dGBgKSBhIGNvbXBhcmlzb24gYmV0d2VlbiAqYSogYW5kICpiKi4KKyAgICAgIFByaW50ICh0byA6ZGF0YTpgc3lzLnN0ZG91dGApIGEgY29tcGFyaXNvbiBiZXR3ZWVuICphKiBhbmQgKmIqLgogCiAKICAgIC4uIG1ldGhvZDo6IHJlcG9ydF9wYXJ0aWFsX2Nsb3N1cmUoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZmlsZWlucHV0LnJzdCBiL0RvYy9saWJyYXJ5L2ZpbGVpbnB1dC5yc3QKaW5kZXggYWM0NDMxMS4uZjhlYzQzNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZmlsZWlucHV0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9maWxlaW5wdXQucnN0CkBAIC0yOCw3ICsyOCwxMCBAQAogQWxsIGZpbGVzIGFyZSBvcGVuZWQgaW4gdGV4dCBtb2RlIGJ5IGRlZmF1bHQsIGJ1dCB5b3UgY2FuIG92ZXJyaWRlIHRoaXMgYnkKIHNwZWNpZnlpbmcgdGhlICptb2RlKiBwYXJhbWV0ZXIgaW4gdGhlIGNhbGwgdG8gOmZ1bmM6YC5pbnB1dGAgb3IKIDpjbGFzczpgRmlsZUlucHV0YC4gIElmIGFuIEkvTyBlcnJvciBvY2N1cnMgZHVyaW5nIG9wZW5pbmcgb3IgcmVhZGluZyBhIGZpbGUsCi06ZXhjOmBJT0Vycm9yYCBpcyByYWlzZWQuCis6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICA6ZXhjOmBJT0Vycm9yYCB1c2VkIHRvIGJlIHJhaXNlZDsgaXQgaXMgbm93IGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiBJZiBgYHN5cy5zdGRpbmBgIGlzIHVzZWQgbW9yZSB0aGFuIG9uY2UsIHRoZSBzZWNvbmQgYW5kIGZ1cnRoZXIgdXNlIHdpbGwgcmV0dXJuCiBubyBsaW5lcywgZXhjZXB0IHBlcmhhcHMgZm9yIGludGVyYWN0aXZlIHVzZSwgb3IgaWYgaXQgaGFzIGJlZW4gZXhwbGljaXRseSByZXNldApAQCAtMTY4LDEwICsxNzEsNiBAQAogaXQgaXMgZGVsZXRlZCB3aGVuIHRoZSBvdXRwdXQgZmlsZSBpcyBjbG9zZWQuICBJbi1wbGFjZSBmaWx0ZXJpbmcgaXMgZGlzYWJsZWQKIHdoZW4gc3RhbmRhcmQgaW5wdXQgaXMgcmVhZC4KIAotLi4gbm90ZTo6Ci0KLSAgIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHdvcmsgZm9yIE1TLURPUyA4KzMgZmlsZXN5c3RlbXMuCi0KIAogVGhlIHR3byBmb2xsb3dpbmcgb3BlbmluZyBob29rcyBhcmUgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGU6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Z0cGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9mdHBsaWIucnN0CmluZGV4IDMyNzRmMTkuLmFiZDg0ODAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Z0cGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZnRwbGliLnJzdApAQCAtNDAsNyArNDAsNyBAQAogCiBUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBpdGVtczoKIAotLi4gY2xhc3M6OiBGVFAoaG9zdD0nJywgdXNlcj0nJywgcGFzc3dkPScnLCBhY2N0PScnWywgdGltZW91dF0pCisuLiBjbGFzczo6IEZUUChob3N0PScnLCB1c2VyPScnLCBwYXNzd2Q9JycsIGFjY3Q9JycsIHRpbWVvdXQ9Tm9uZSwgc291cmNlX2FkZHJlc3M9Tm9uZSkKIAogICAgUmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YEZUUGAgY2xhc3MuICBXaGVuICpob3N0KiBpcyBnaXZlbiwgdGhlCiAgICBtZXRob2QgY2FsbCBgYGNvbm5lY3QoaG9zdClgYCBpcyBtYWRlLiAgV2hlbiAqdXNlciogaXMgZ2l2ZW4sIGFkZGl0aW9uYWxseQpAQCAtNDgsNyArNDgsOCBAQAogICAgKmFjY3QqIGRlZmF1bHQgdG8gdGhlIGVtcHR5IHN0cmluZyB3aGVuIG5vdCBnaXZlbikuICBUaGUgb3B0aW9uYWwgKnRpbWVvdXQqCiAgICBwYXJhbWV0ZXIgc3BlY2lmaWVzIGEgdGltZW91dCBpbiBzZWNvbmRzIGZvciBibG9ja2luZyBvcGVyYXRpb25zIGxpa2UgdGhlCiAgICBjb25uZWN0aW9uIGF0dGVtcHQgKGlmIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBnbG9iYWwgZGVmYXVsdCB0aW1lb3V0IHNldHRpbmcKLSAgIHdpbGwgYmUgdXNlZCkuCisgICB3aWxsIGJlIHVzZWQpLiAqc291cmNlX2FkZHJlc3MqIGlzIGEgMi10dXBsZSBgYChob3N0LCBwb3J0KWBgIGZvciB0aGUgc29ja2V0CisgICB0byBiaW5kIHRvIGFzIGl0cyBzb3VyY2UgYWRkcmVzcyBiZWZvcmUgY29ubmVjdGluZy4KIAogICAgOmNsYXNzOmBGVFBgIGNsYXNzIHN1cHBvcnRzIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiBIZXJlIGlzIGEgc2FtcGxlCiAgICBvbiBob3cgdXNpbmcgaXQ6CkBAIC02OCw4ICs2OSwxMSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFN1cHBvcnQgZm9yIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICpzb3VyY2VfYWRkcmVzcyogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAotLi4gY2xhc3M6OiBGVFBfVExTKGhvc3Q9JycsIHVzZXI9JycsIHBhc3N3ZD0nJywgYWNjdD0nJywgW2tleWZpbGVbLCBjZXJ0ZmlsZVssIGNvbnRleHRbLCB0aW1lb3V0XV1dXSkKKworLi4gY2xhc3M6OiBGVFBfVExTKGhvc3Q9JycsIHVzZXI9JycsIHBhc3N3ZD0nJywgYWNjdD0nJywga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLCBjb250ZXh0PU5vbmUsIHRpbWVvdXQ9Tm9uZSwgc291cmNlX2FkZHJlc3M9Tm9uZSkKIAogICAgQSA6Y2xhc3M6YEZUUGAgc3ViY2xhc3Mgd2hpY2ggYWRkcyBUTFMgc3VwcG9ydCB0byBGVFAgYXMgZGVzY3JpYmVkIGluCiAgICA6cmZjOmA0MjE3YC4KQEAgLTgwLDEwICs4NCwxNSBAQAogICAgcHJpdmF0ZSBrZXkgYW5kIGNlcnRpZmljYXRlIGNoYWluIGZpbGUgbmFtZSBmb3IgdGhlIFNTTCBjb25uZWN0aW9uLgogICAgKmNvbnRleHQqIHBhcmFtZXRlciBpcyBhIDpjbGFzczpgc3NsLlNTTENvbnRleHRgIG9iamVjdCB3aGljaCBhbGxvd3MKICAgIGJ1bmRsaW5nIFNTTCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGNlcnRpZmljYXRlcyBhbmQgcHJpdmF0ZSBrZXlzIGludG8gYQotICAgc2luZ2xlIChwb3RlbnRpYWxseSBsb25nLWxpdmVkKSBzdHJ1Y3R1cmUuCisgICBzaW5nbGUgKHBvdGVudGlhbGx5IGxvbmctbGl2ZWQpIHN0cnVjdHVyZS4gKnNvdXJjZV9hZGRyZXNzKiBpcyBhIDItdHVwbGUKKyAgIGBgKGhvc3QsIHBvcnQpYGAgZm9yIHRoZSBzb2NrZXQgdG8gYmluZCB0byBhcyBpdHMgc291cmNlIGFkZHJlc3MgYmVmb3JlCisgICBjb25uZWN0aW5nLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICpzb3VyY2VfYWRkcmVzcyogcGFyYW1ldGVyIHdhcyBhZGRlZC4KKwogICAgSGVyZSdzIGEgc2FtcGxlIHNlc3Npb24gdXNpbmcgdGhlIDpjbGFzczpgRlRQX1RMU2AgY2xhc3M6CiAKICAgID4+PiBmcm9tIGZ0cGxpYiBpbXBvcnQgRlRQX1RMUwpAQCAtMTM1LDggKzE0NCw3IEBACiAgICBUaGUgc2V0IG9mIGFsbCBleGNlcHRpb25zIChhcyBhIHR1cGxlKSB0aGF0IG1ldGhvZHMgb2YgOmNsYXNzOmBGVFBgCiAgICBpbnN0YW5jZXMgbWF5IHJhaXNlIGFzIGEgcmVzdWx0IG9mIHByb2JsZW1zIHdpdGggdGhlIEZUUCBjb25uZWN0aW9uIChhcwogICAgb3Bwb3NlZCB0byBwcm9ncmFtbWluZyBlcnJvcnMgbWFkZSBieSB0aGUgY2FsbGVyKS4gIFRoaXMgc2V0IGluY2x1ZGVzIHRoZQotICAgZm91ciBleGNlcHRpb25zIGxpc3RlZCBhYm92ZSBhcyB3ZWxsIGFzIDpleGM6YHNvY2tldC5lcnJvcmAgYW5kCi0gICA6ZXhjOmBJT0Vycm9yYC4KKyAgIGZvdXIgZXhjZXB0aW9ucyBsaXN0ZWQgYWJvdmUgYXMgd2VsbCBhcyA6ZXhjOmBPU0Vycm9yYC4KIAogCiAuLiBzZWVhbHNvOjoKQEAgLTE3NCw3ICsxODIsNyBAQAogICAgZGVidWdnaW5nIG91dHB1dCwgbG9nZ2luZyBlYWNoIGxpbmUgc2VudCBhbmQgcmVjZWl2ZWQgb24gdGhlIGNvbnRyb2wgY29ubmVjdGlvbi4KIAogCi0uLiBtZXRob2Q6OiBGVFAuY29ubmVjdChob3N0PScnLCBwb3J0PTBbLCB0aW1lb3V0XSkKKy4uIG1ldGhvZDo6IEZUUC5jb25uZWN0KGhvc3Q9JycsIHBvcnQ9MCwgdGltZW91dD1Ob25lLCBzb3VyY2VfYWRkcmVzcz1Ob25lKQogCiAgICBDb25uZWN0IHRvIHRoZSBnaXZlbiBob3N0IGFuZCBwb3J0LiAgVGhlIGRlZmF1bHQgcG9ydCBudW1iZXIgaXMgYGAyMWBgLCBhcwogICAgc3BlY2lmaWVkIGJ5IHRoZSBGVFAgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbi4gIEl0IGlzIHJhcmVseSBuZWVkZWQgdG8gc3BlY2lmeSBhCkBAIC0xODIsMTAgKzE5MCwxNCBAQAogICAgaW5zdGFuY2U7IGl0IHNob3VsZCBub3QgYmUgY2FsbGVkIGF0IGFsbCBpZiBhIGhvc3Qgd2FzIGdpdmVuIHdoZW4gdGhlIGluc3RhbmNlCiAgICB3YXMgY3JlYXRlZC4gIEFsbCBvdGhlciBtZXRob2RzIGNhbiBvbmx5IGJlIHVzZWQgYWZ0ZXIgYSBjb25uZWN0aW9uIGhhcyBiZWVuCiAgICBtYWRlLgotCiAgICBUaGUgb3B0aW9uYWwgKnRpbWVvdXQqIHBhcmFtZXRlciBzcGVjaWZpZXMgYSB0aW1lb3V0IGluIHNlY29uZHMgZm9yIHRoZQogICAgY29ubmVjdGlvbiBhdHRlbXB0LiBJZiBubyAqdGltZW91dCogaXMgcGFzc2VkLCB0aGUgZ2xvYmFsIGRlZmF1bHQgdGltZW91dAogICAgc2V0dGluZyB3aWxsIGJlIHVzZWQuCisgICAqc291cmNlX2FkZHJlc3MqIGlzIGEgMi10dXBsZSBgYChob3N0LCBwb3J0KWBgIGZvciB0aGUgc29ja2V0IHRvIGJpbmQgdG8gYXMKKyAgIGl0cyBzb3VyY2UgYWRkcmVzcyBiZWZvcmUgY29ubmVjdGluZy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICpzb3VyY2VfYWRkcmVzcyogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAogCiAuLiBtZXRob2Q6OiBGVFAuZ2V0d2VsY29tZSgpCkBAIC0yNDEsMTMgKzI1MywxMiBAQAogCiAgICBSZXRyaWV2ZSBhIGZpbGUgb3IgZGlyZWN0b3J5IGxpc3RpbmcgaW4gQVNDSUkgdHJhbnNmZXIgbW9kZS4gICpjbWQqIHNob3VsZCBiZQogICAgYW4gYXBwcm9wcmlhdGUgYGBSRVRSYGAgY29tbWFuZCAoc2VlIDptZXRoOmByZXRyYmluYXJ5YCkgb3IgYSBjb21tYW5kIHN1Y2ggYXMKLSAgIGBgTElTVGBgLCBgYE5MU1RgYCBvciBgYE1MU0RgYCAodXN1YWxseSBqdXN0IHRoZSBzdHJpbmcgYGAnTElTVCdgYCkuCisgICBgYExJU1RgYCBvciBgYE5MU1RgYCAodXN1YWxseSBqdXN0IHRoZSBzdHJpbmcgYGAnTElTVCdgYCkuCiAgICBgYExJU1RgYCByZXRyaWV2ZXMgYSBsaXN0IG9mIGZpbGVzIGFuZCBpbmZvcm1hdGlvbiBhYm91dCB0aG9zZSBmaWxlcy4KLSAgIGBgTkxTVGBgIHJldHJpZXZlcyBhIGxpc3Qgb2YgZmlsZSBuYW1lcy4gIE9uIHNvbWUgc2VydmVycywgYGBNTFNEYGAgcmV0cmlldmVzCi0gICBhIG1hY2hpbmUgcmVhZGFibGUgbGlzdCBvZiBmaWxlcyBhbmQgaW5mb3JtYXRpb24gYWJvdXQgdGhvc2UgZmlsZXMuICBUaGUKLSAgICpjYWxsYmFjayogZnVuY3Rpb24gaXMgY2FsbGVkIGZvciBlYWNoIGxpbmUgd2l0aCBhIHN0cmluZyBhcmd1bWVudCBjb250YWluaW5nCi0gICB0aGUgbGluZSB3aXRoIHRoZSB0cmFpbGluZyBDUkxGIHN0cmlwcGVkLiAgVGhlIGRlZmF1bHQgKmNhbGxiYWNrKiBwcmludHMgdGhlCi0gICBsaW5lIHRvIGBgc3lzLnN0ZG91dGBgLgorICAgYGBOTFNUYGAgcmV0cmlldmVzIGEgbGlzdCBvZiBmaWxlIG5hbWVzLgorICAgVGhlICpjYWxsYmFjayogZnVuY3Rpb24gaXMgY2FsbGVkIGZvciBlYWNoIGxpbmUgd2l0aCBhIHN0cmluZyBhcmd1bWVudAorICAgY29udGFpbmluZyB0aGUgbGluZSB3aXRoIHRoZSB0cmFpbGluZyBDUkxGIHN0cmlwcGVkLiAgVGhlIGRlZmF1bHQgKmNhbGxiYWNrKgorICAgcHJpbnRzIHRoZSBsaW5lIHRvIGBgc3lzLnN0ZG91dGBgLgogCiAKIC4uIG1ldGhvZDo6IEZUUC5zZXRfcGFzdihib29sZWFuKQpAQCAtMzA3LDYgKzMxOCwyMCBAQAogICAgaW4gOm1ldGg6YHRyYW5zZmVyY21kYC4KIAogCisuLiBtZXRob2Q6OiBGVFAubWxzZChwYXRoPSIiLCBmYWN0cz1bXSkKKworICAgTGlzdCBhIGRpcmVjdG9yeSBpbiBhIHN0YW5kYXJkaXplZCBmb3JtYXQgYnkgdXNpbmcgTUxTRCBjb21tYW5kCisgICAoOnJmYzpgMzY1OWApLiAgSWYgKnBhdGgqIGlzIG9taXR0ZWQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzIGFzc3VtZWQuCisgICAqZmFjdHMqIGlzIGEgbGlzdCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgdHlwZSBvZiBpbmZvcm1hdGlvbiBkZXNpcmVkCisgICAoZS5nLiBgYFsidHlwZSIsICJzaXplIiwgInBlcm0iXWBgKS4gIFJldHVybiBhIGdlbmVyYXRvciBvYmplY3QgeWllbGRpbmcgYQorICAgdHVwbGUgb2YgdHdvIGVsZW1lbnRzIGZvciBldmVyeSBmaWxlIGZvdW5kIGluIHBhdGguICBGaXJzdCBlbGVtZW50IGlzIHRoZQorICAgZmlsZSBuYW1lLCB0aGUgc2Vjb25kIG9uZSBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBmYWN0cyBhYm91dCB0aGUgZmlsZQorICAgbmFtZS4gIENvbnRlbnQgb2YgdGhpcyBkaWN0aW9uYXJ5IG1pZ2h0IGJlIGxpbWl0ZWQgYnkgdGhlICpmYWN0cyogYXJndW1lbnQKKyAgIGJ1dCBzZXJ2ZXIgaXMgbm90IGd1YXJhbnRlZWQgdG8gcmV0dXJuIGFsbCByZXF1ZXN0ZWQgZmFjdHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIG1ldGhvZDo6IEZUUC5ubHN0KGFyZ3VtZW50WywgLi4uXSkKIAogICAgUmV0dXJuIGEgbGlzdCBvZiBmaWxlIG5hbWVzIGFzIHJldHVybmVkIGJ5IHRoZSBgYE5MU1RgYCBjb21tYW5kLiAgVGhlCkBAIC0zMTQsNiArMzM5LDggQEAKICAgIGRpcmVjdG9yeSkuICBNdWx0aXBsZSBhcmd1bWVudHMgY2FuIGJlIHVzZWQgdG8gcGFzcyBub24tc3RhbmRhcmQgb3B0aW9ucyB0bwogICAgdGhlIGBgTkxTVGBgIGNvbW1hbmQuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMgdXNlIDptZXRoOmBtbHNkYCBpbnN0ZWFkLgorCiAKIC4uIG1ldGhvZDo6IEZUUC5kaXIoYXJndW1lbnRbLCAuLi5dKQogCkBAIC0zMjQsNiArMzUxLDggQEAKICAgIGFzIGEgKmNhbGxiYWNrKiBmdW5jdGlvbiBhcyBmb3IgOm1ldGg6YHJldHJsaW5lc2A7IHRoZSBkZWZhdWx0IHByaW50cyB0bwogICAgYGBzeXMuc3Rkb3V0YGAuICBUaGlzIG1ldGhvZCByZXR1cm5zIGBgTm9uZWBgLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zIHVzZSA6bWV0aDpgbWxzZGAgaW5zdGVhZC4KKwogCiAuLiBtZXRob2Q6OiBGVFAucmVuYW1lKGZyb21uYW1lLCB0b25hbWUpCiAKQEAgLTM5Niw2ICs0MjUsMTQgQEAKIAogICAgU2V0IHVwIHNlY3VyZSBjb250cm9sIGNvbm5lY3Rpb24gYnkgdXNpbmcgVExTIG9yIFNTTCwgZGVwZW5kaW5nIG9uIHdoYXQgc3BlY2lmaWVkIGluIDptZXRoOmBzc2xfdmVyc2lvbmAgYXR0cmlidXRlLgogCisuLiBtZXRob2Q6OiBGVFBfVExTLmNjYygpCisKKyAgIFJldmVydCBjb250cm9sIGNoYW5uZWwgYmFjayB0byBwbGFpbnRleHQuICBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gdGFrZQorICAgYWR2YW50YWdlIG9mIGZpcmV3YWxscyB0aGF0IGtub3cgaG93IHRvIGhhbmRsZSBOQVQgd2l0aCBub24tc2VjdXJlIEZUUAorICAgd2l0aG91dCBvcGVuaW5nIGZpeGVkIHBvcnRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogLi4gbWV0aG9kOjogRlRQX1RMUy5wcm90X3AoKQogCiAgICBTZXQgdXAgc2VjdXJlIGRhdGEgY29ubmVjdGlvbi4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0CmluZGV4IDk5ZjgzMzUuLmYxZTZkYzIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdApAQCAtMTQsMTIgKzE0LDEyIEBACiA6ZnVuYzpgYWxsYCAgICAgICAgICA6ZnVuYzpgZGlyYCAgICAgICAgOmZ1bmM6YGhleGAgICAgICAgICA6ZnVuYzpgbmV4dGAgICAgICA6ZnVuYzpgc2xpY2VgCiA6ZnVuYzpgYW55YCAgICAgICAgICA6ZnVuYzpgZGl2bW9kYCAgICAgOmZ1bmM6YGlkYCAgICAgICAgICA6ZnVuYzpgb2JqZWN0YCAgICA6ZnVuYzpgc29ydGVkYAogOmZ1bmM6YGFzY2lpYCAgICAgICAgOmZ1bmM6YGVudW1lcmF0ZWAgIDpmdW5jOmBpbnB1dGAgICAgICAgOmZ1bmM6YG9jdGAgICAgICAgOmZ1bmM6YHN0YXRpY21ldGhvZGAKLTpmdW5jOmBiaW5gICAgICAgICAgIDpmdW5jOmBldmFsYCAgICAgICA6ZnVuYzpgaW50YCAgICAgICAgIDpmdW5jOmBvcGVuYCAgICAgIDpmdW5jOmBzdHJgCis6ZnVuYzpgYmluYCAgICAgICAgICA6ZnVuYzpgZXZhbGAgICAgICAgOmZ1bmM6YGludGAgICAgICAgICA6ZnVuYzpgb3BlbmAgICAgICB8ZnVuYy1zdHJ8XwogOmZ1bmM6YGJvb2xgICAgICAgICAgOmZ1bmM6YGV4ZWNgICAgICAgIDpmdW5jOmBpc2luc3RhbmNlYCAgOmZ1bmM6YG9yZGAgICAgICAgOmZ1bmM6YHN1bWAKIDpmdW5jOmBieXRlYXJyYXlgICAgIDpmdW5jOmBmaWx0ZXJgICAgICA6ZnVuYzpgaXNzdWJjbGFzc2AgIDpmdW5jOmBwb3dgICAgICAgIDpmdW5jOmBzdXBlcmAKLTpmdW5jOmBieXRlc2AgICAgICAgIDpmdW5jOmBmbG9hdGAgICAgICA6ZnVuYzpgaXRlcmAgICAgICAgIDpmdW5jOmBwcmludGAgICAgIDpmdW5jOmB0dXBsZWAKKzpmdW5jOmBieXRlc2AgICAgICAgIDpmdW5jOmBmbG9hdGAgICAgICA6ZnVuYzpgaXRlcmAgICAgICAgIDpmdW5jOmBwcmludGAgICAgIHxmdW5jLXR1cGxlfF8KIDpmdW5jOmBjYWxsYWJsZWAgICAgIDpmdW5jOmBmb3JtYXRgICAgICA6ZnVuYzpgbGVuYCAgICAgICAgIDpmdW5jOmBwcm9wZXJ0eWAgIDpmdW5jOmB0eXBlYAotOmZ1bmM6YGNocmAgICAgICAgICAgfGZ1bmMtZnJvemVuc2V0fF8gIDpmdW5jOmBsaXN0YCAgICAgICAgOmZ1bmM6YHJhbmdlYCAgICAgOmZ1bmM6YHZhcnNgCis6ZnVuYzpgY2hyYCAgICAgICAgICB8ZnVuYy1mcm96ZW5zZXR8XyAgfGZ1bmMtbGlzdHxfICAgICAgICB8ZnVuYy1yYW5nZXxfICAgICA6ZnVuYzpgdmFyc2AKIDpmdW5jOmBjbGFzc21ldGhvZGAgIDpmdW5jOmBnZXRhdHRyYCAgICA6ZnVuYzpgbG9jYWxzYCAgICAgIDpmdW5jOmByZXByYCAgICAgIDpmdW5jOmB6aXBgCiA6ZnVuYzpgY29tcGlsZWAgICAgICA6ZnVuYzpgZ2xvYmFsc2AgICAgOmZ1bmM6YG1hcGAgICAgICAgICA6ZnVuYzpgcmV2ZXJzZWRgICA6ZnVuYzpgX19pbXBvcnRfX2AKIDpmdW5jOmBjb21wbGV4YCAgICAgIDpmdW5jOmBoYXNhdHRyYCAgICA6ZnVuYzpgbWF4YCAgICAgICAgIDpmdW5jOmByb3VuZGAKQEAgLTMzLDYgKzMzLDEwIEBACiAuLiB8ZnVuYy1mcm96ZW5zZXR8IHJlcGxhY2U6OiBgYGZyb3plbnNldCgpYGAKIC4uIHxmdW5jLW1lbW9yeXZpZXd8IHJlcGxhY2U6OiBgYG1lbW9yeXZpZXcoKWBgCiAuLiB8ZnVuYy1zZXR8IHJlcGxhY2U6OiBgYHNldCgpYGAKKy4uIHxmdW5jLWxpc3R8IHJlcGxhY2U6OiBgYGxpc3QoKWBgCisuLiB8ZnVuYy1zdHJ8IHJlcGxhY2U6OiBgYHN0cigpYGAKKy4uIHxmdW5jLXR1cGxlfCByZXBsYWNlOjogYGB0dXBsZSgpYGAKKy4uIHxmdW5jLXJhbmdlfCByZXBsYWNlOjogYGByYW5nZSgpYGAKIAogCiAuLiBmdW5jdGlvbjo6IGFicyh4KQpAQCAtOTMsNiArOTcsNyBAQAogICAgLi4gaW5kZXg6OiBwYWlyOiBCb29sZWFuOyB0eXBlCiAKIAorLi4gX2Z1bmMtYnl0ZWFycmF5OgogLi4gZnVuY3Rpb246OiBieXRlYXJyYXkoW3NvdXJjZVssIGVuY29kaW5nWywgZXJyb3JzXV1dKQogCiAgICBSZXR1cm4gYSBuZXcgYXJyYXkgb2YgYnl0ZXMuICBUaGUgOmNsYXNzOmBieXRlYXJyYXlgIHR5cGUgaXMgYSBtdXRhYmxlCkBAIC0xMTgsNyArMTIzLDEwIEBACiAKICAgIFdpdGhvdXQgYW4gYXJndW1lbnQsIGFuIGFycmF5IG9mIHNpemUgMCBpcyBjcmVhdGVkLgogCisgICBTZWUgYWxzbyA6cmVmOmBiaW5hcnlzZXFgIGFuZCA6cmVmOmB0eXBlYnl0ZWFycmF5YC4KIAorCisuLiBfZnVuYy1ieXRlczoKIC4uIGZ1bmN0aW9uOjogYnl0ZXMoW3NvdXJjZVssIGVuY29kaW5nWywgZXJyb3JzXV1dKQogCiAgICBSZXR1cm4gYSBuZXcgImJ5dGVzIiBvYmplY3QsIHdoaWNoIGlzIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSBvZiBpbnRlZ2VycyBpbgpAQCAtMTMwLDYgKzEzOCw4IEBACiAKICAgIEJ5dGVzIG9iamVjdHMgY2FuIGFsc28gYmUgY3JlYXRlZCB3aXRoIGxpdGVyYWxzLCBzZWUgOnJlZjpgc3RyaW5nc2AuCiAKKyAgIFNlZSBhbHNvIDpyZWY6YGJpbmFyeXNlcWAsIDpyZWY6YHR5cGVieXRlc2AsIGFuZCA6cmVmOmBieXRlcy1tZXRob2RzYC4KKwogCiAuLiBmdW5jdGlvbjo6IGNhbGxhYmxlKG9iamVjdCkKIApAQCAtMTUyLDEwICsxNjIsNiBAQAogICAgMSwxMTQsMTExICgweDEwRkZGRiBpbiBiYXNlIDE2KS4gIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGlmICppKiBpcwogICAgb3V0c2lkZSB0aGF0IHJhbmdlLgogCi0gICBOb3RlIHRoYXQgb24gbmFycm93IFVuaWNvZGUgYnVpbGRzLCB0aGUgcmVzdWx0IGlzIGEgc3RyaW5nIG9mCi0gICBsZW5ndGggdHdvIGZvciAqaSogZ3JlYXRlciB0aGFuIDY1LDUzNSAoMHhGRkZGIGluIGhleGFkZWNpbWFsKS4KLQotCiAKIC4uIGZ1bmN0aW9uOjogY2xhc3NtZXRob2QoZnVuY3Rpb24pCiAKQEAgLTMxMiwxNyArMzE4LDE4IEBACiAKICAgICAgID4+PiBpbXBvcnQgc3RydWN0CiAgICAgICA+Pj4gZGlyKCkgICAjIHNob3cgdGhlIG5hbWVzIGluIHRoZSBtb2R1bGUgbmFtZXNwYWNlCi0gICAgICBbJ19fYnVpbHRpbnNfXycsICdfX2RvY19fJywgJ19fbmFtZV9fJywgJ3N0cnVjdCddCi0gICAgICA+Pj4gZGlyKHN0cnVjdCkgICAjIHNob3cgdGhlIG5hbWVzIGluIHRoZSBzdHJ1Y3QgbW9kdWxlCi0gICAgICBbJ1N0cnVjdCcsICdfX2J1aWx0aW5zX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX25hbWVfXycsCi0gICAgICAgJ19fcGFja2FnZV9fJywgJ19jbGVhcmNhY2hlJywgJ2NhbGNzaXplJywgJ2Vycm9yJywgJ3BhY2snLCAncGFja19pbnRvJywKKyAgICAgIFsnX19idWlsdGluc19fJywgJ19fbmFtZV9fJywgJ3N0cnVjdCddCisgICAgICA+Pj4gZGlyKHN0cnVjdCkgICAjIHNob3cgdGhlIG5hbWVzIGluIHRoZSBzdHJ1Y3QgbW9kdWxlICMgZG9jdGVzdDogK1NLSVAKKyAgICAgIFsnU3RydWN0JywgJ19fYWxsX18nLCAnX19idWlsdGluc19fJywgJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsCisgICAgICAgJ19faW5pdGlhbGl6aW5nX18nLCAnX19sb2FkZXJfXycsICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsCisgICAgICAgJ19jbGVhcmNhY2hlJywgJ2NhbGNzaXplJywgJ2Vycm9yJywgJ3BhY2snLCAncGFja19pbnRvJywKICAgICAgICAndW5wYWNrJywgJ3VucGFja19mcm9tJ10KICAgICAgID4+PiBjbGFzcyBTaGFwZToKLSAgICAgICAgICAgICAgZGVmIF9fZGlyX18oc2VsZik6Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gWydhcmVhJywgJ3BlcmltZXRlcicsICdsb2NhdGlvbiddCisgICAgICAuLi4gICAgIGRlZiBfX2Rpcl9fKHNlbGYpOgorICAgICAgLi4uICAgICAgICAgcmV0dXJuIFsnYXJlYScsICdwZXJpbWV0ZXInLCAnbG9jYXRpb24nXQogICAgICAgPj4+IHMgPSBTaGFwZSgpCiAgICAgICA+Pj4gZGlyKHMpCi0gICAgICBbJ2FyZWEnLCAncGVyaW1ldGVyJywgJ2xvY2F0aW9uJ10KKyAgICAgIFsnYXJlYScsICdsb2NhdGlvbicsICdwZXJpbWV0ZXInXQogCiAgICAuLiBub3RlOjoKIApAQCAtNTE1LDEzICs1MjIsMTMgQEAKIAogICAgVGhlIGZsb2F0IHR5cGUgaXMgZGVzY3JpYmVkIGluIDpyZWY6YHR5cGVzbnVtZXJpY2AuCiAKKyAgIC4uIGluZGV4OjoKKyAgICAgIHNpbmdsZTogX19mb3JtYXRfXworICAgICAgc2luZ2xlOiBzdHJpbmc7IGZvcm1hdCgpIChidWlsdC1pbiBmdW5jdGlvbikKKwogCiAuLiBmdW5jdGlvbjo6IGZvcm1hdCh2YWx1ZVssIGZvcm1hdF9zcGVjXSkKIAotICAgLi4gaW5kZXg6OgotICAgICAgcGFpcjogc3RyOyBmb3JtYXQKLSAgICAgIHNpbmdsZTogX19mb3JtYXRfXwotCiAgICBDb252ZXJ0IGEgKnZhbHVlKiB0byBhICJmb3JtYXR0ZWQiIHJlcHJlc2VudGF0aW9uLCBhcyBjb250cm9sbGVkIGJ5CiAgICAqZm9ybWF0X3NwZWMqLiAgVGhlIGludGVycHJldGF0aW9uIG9mICpmb3JtYXRfc3BlYyogd2lsbCBkZXBlbmQgb24gdGhlIHR5cGUKICAgIG9mIHRoZSAqdmFsdWUqIGFyZ3VtZW50LCBob3dldmVyIHRoZXJlIGlzIGEgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXggdGhhdApAQCAtNjIzLDkgKzYzMCw5IEBACiAgICB0byBhIHN0cmluZyAoc3RyaXBwaW5nIGEgdHJhaWxpbmcgbmV3bGluZSksIGFuZCByZXR1cm5zIHRoYXQuICBXaGVuIEVPRiBpcwogICAgcmVhZCwgOmV4YzpgRU9GRXJyb3JgIGlzIHJhaXNlZC4gIEV4YW1wbGU6OgogCi0gICAgICA+Pj4gcyA9IGlucHV0KCctLT4gJykKKyAgICAgID4+PiBzID0gaW5wdXQoJy0tPiAnKSAgIyBkb2N0ZXN0OiArU0tJUAogICAgICAgLS0+IE1vbnR5IFB5dGhvbidzIEZseWluZyBDaXJjdXMKLSAgICAgID4+PiBzCisgICAgICA+Pj4gcyAgIyBkb2N0ZXN0OiArU0tJUAogICAgICAgIk1vbnR5IFB5dGhvbidzIEZseWluZyBDaXJjdXMiCiAKICAgIElmIHRoZSA6bW9kOmByZWFkbGluZWAgbW9kdWxlIHdhcyBsb2FkZWQsIHRoZW4gOmZ1bmM6YGlucHV0YCB3aWxsIHVzZSBpdApAQCAtNjkxLDYgKzY5OCw4IEBACiAgICAqc2VudGluZWwqLCA6ZXhjOmBTdG9wSXRlcmF0aW9uYCB3aWxsIGJlIHJhaXNlZCwgb3RoZXJ3aXNlIHRoZSB2YWx1ZSB3aWxsCiAgICBiZSByZXR1cm5lZC4KIAorICAgU2VlIGFsc28gOnJlZjpgdHlwZWl0ZXJgLgorCiAgICBPbmUgdXNlZnVsIGFwcGxpY2F0aW9uIG9mIHRoZSBzZWNvbmQgZm9ybSBvZiA6ZnVuYzpgaXRlcmAgaXMgdG8gcmVhZCBsaW5lcyBvZgogICAgYSBmaWxlIHVudGlsIGEgY2VydGFpbiBsaW5lIGlzIHJlYWNoZWQuICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgcmVhZHMgYSBmaWxlCiAgICB1bnRpbCB0aGUgOm1ldGg6YHJlYWRsaW5lYCBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmc6OgpAQCAtNzA2LDE2ICs3MTUsMTIgQEAKICAgIHNlcXVlbmNlIChzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIGEgbWFwcGluZyAoZGljdGlvbmFyeSkuCiAKIAorLi4gX2Z1bmMtbGlzdDoKIC4uIGZ1bmN0aW9uOjogbGlzdChbaXRlcmFibGVdKQorICAgOm5vaW5kZXg6CiAKLSAgIFJldHVybiBhIGxpc3Qgd2hvc2UgaXRlbXMgYXJlIHRoZSBzYW1lIGFuZCBpbiB0aGUgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqJ3MKLSAgIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGEgc2VxdWVuY2UsIGEgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMKLSAgIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3Igb2JqZWN0LiAgSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgbGlzdCwgYSBjb3B5IGlzCi0gICBtYWRlIGFuZCByZXR1cm5lZCwgc2ltaWxhciB0byBgYGl0ZXJhYmxlWzpdYGAuICBGb3IgaW5zdGFuY2UsIGBgbGlzdCgnYWJjJylgYAotICAgcmV0dXJucyBgYFsnYScsICdiJywgJ2MnXWBgIGFuZCBgYGxpc3QoICgxLCAyLCAzKSApYGAgcmV0dXJucyBgYFsxLCAyLCAzXWBgLgotICAgSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybnMgYSBuZXcgZW1wdHkgbGlzdCwgYGBbXWBgLgotCi0gICA6Y2xhc3M6YGxpc3RgIGlzIGEgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCBhcyBkb2N1bWVudGVkIGluIDpyZWY6YHR5cGVzc2VxYC4KKyAgIFJhdGhlciB0aGFuIGJlaW5nIGEgZnVuY3Rpb24sIDpjbGFzczpgbGlzdGAgaXMgYWN0dWFsbHkgYSBtdXRhYmxlCisgICBzZXF1ZW5jZSB0eXBlLCBhcyBkb2N1bWVudGVkIGluIDpyZWY6YHR5cGVzc2VxLWxpc3RgIGFuZCA6cmVmOmB0eXBlc3NlcWAuCiAKIAogLi4gZnVuY3Rpb246OiBsb2NhbHMoKQpAQCAtODE0LDEwICs4MTksMTAgQEAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogZmlsZSBvYmplY3Q7IG9wZW4oKSBidWlsdC1pbiBmdW5jdGlvbgogCi0uLiBmdW5jdGlvbjo6IG9wZW4oZmlsZSwgbW9kZT0ncicsIGJ1ZmZlcmluZz0tMSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSwgY2xvc2VmZD1UcnVlKQorLi4gZnVuY3Rpb246OiBvcGVuKGZpbGUsIG1vZGU9J3InLCBidWZmZXJpbmc9LTEsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsIGNsb3NlZmQ9VHJ1ZSwgb3BlbmVyPU5vbmUpCiAKICAgIE9wZW4gKmZpbGUqIGFuZCByZXR1cm4gYSBjb3JyZXNwb25kaW5nIDp0ZXJtOmBmaWxlIG9iamVjdGAuICBJZiB0aGUgZmlsZQotICAgY2Fubm90IGJlIG9wZW5lZCwgYW4gOmV4YzpgSU9FcnJvcmAgaXMgcmFpc2VkLgorICAgY2Fubm90IGJlIG9wZW5lZCwgYW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkLgogCiAgICAqZmlsZSogaXMgZWl0aGVyIGEgc3RyaW5nIG9yIGJ5dGVzIG9iamVjdCBnaXZpbmcgdGhlIHBhdGhuYW1lIChhYnNvbHV0ZSBvcgogICAgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkpIG9mIHRoZSBmaWxlIHRvIGJlIG9wZW5lZCBvcgpAQCAtODI4LDE3ICs4MzMsMjAgQEAKICAgICptb2RlKiBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlIGZpbGUgaXMKICAgIG9wZW5lZC4gIEl0IGRlZmF1bHRzIHRvIGBgJ3InYGAgd2hpY2ggbWVhbnMgb3BlbiBmb3IgcmVhZGluZyBpbiB0ZXh0IG1vZGUuCiAgICBPdGhlciBjb21tb24gdmFsdWVzIGFyZSBgYCd3J2BgIGZvciB3cml0aW5nICh0cnVuY2F0aW5nIHRoZSBmaWxlIGlmIGl0Ci0gICBhbHJlYWR5IGV4aXN0cyksIGFuZCBgYCdhJ2BgIGZvciBhcHBlbmRpbmcgKHdoaWNoIG9uICpzb21lKiBVbml4IHN5c3RlbXMsCi0gICBtZWFucyB0aGF0ICphbGwqIHdyaXRlcyBhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSByZWdhcmRsZXNzIG9mIHRoZQotICAgY3VycmVudCBzZWVrIHBvc2l0aW9uKS4gIEluIHRleHQgbW9kZSwgaWYgKmVuY29kaW5nKiBpcyBub3Qgc3BlY2lmaWVkIHRoZQotICAgZW5jb2RpbmcgdXNlZCBpcyBwbGF0Zm9ybSBkZXBlbmRlbnQuIChGb3IgcmVhZGluZyBhbmQgd3JpdGluZyByYXcgYnl0ZXMgdXNlCi0gICBiaW5hcnkgbW9kZSBhbmQgbGVhdmUgKmVuY29kaW5nKiB1bnNwZWNpZmllZC4pICBUaGUgYXZhaWxhYmxlIG1vZGVzIGFyZToKKyAgIGFscmVhZHkgZXhpc3RzKSwgYGAneCdgYCBmb3IgZXhjbHVzaXZlIGNyZWF0aW9uIGFuZCBgYCdhJ2BgIGZvciBhcHBlbmRpbmcKKyAgICh3aGljaCBvbiAqc29tZSogVW5peCBzeXN0ZW1zLCBtZWFucyB0aGF0ICphbGwqIHdyaXRlcyBhcHBlbmQgdG8gdGhlIGVuZCBvZgorICAgdGhlIGZpbGUgcmVnYXJkbGVzcyBvZiB0aGUgY3VycmVudCBzZWVrIHBvc2l0aW9uKS4gIEluIHRleHQgbW9kZSwgaWYKKyAgICplbmNvZGluZyogaXMgbm90IHNwZWNpZmllZCB0aGUgZW5jb2RpbmcgdXNlZCBpcyBwbGF0Zm9ybSBkZXBlbmRlbnQ6CisgICBgYGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSlgYCBpcyBjYWxsZWQgdG8gZ2V0IHRoZSBjdXJyZW50IGxvY2FsZQorICAgZW5jb2RpbmcuIChGb3IgcmVhZGluZyBhbmQgd3JpdGluZyByYXcgYnl0ZXMgdXNlIGJpbmFyeSBtb2RlIGFuZCBsZWF2ZQorICAgKmVuY29kaW5nKiB1bnNwZWNpZmllZC4pICBUaGUgYXZhaWxhYmxlIG1vZGVzIGFyZToKIAogICAgPT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgQ2hhcmFjdGVyIE1lYW5pbmcKICAgIC0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGBgJ3InYGAgICBvcGVuIGZvciByZWFkaW5nIChkZWZhdWx0KQogICAgYGAndydgYCAgIG9wZW4gZm9yIHdyaXRpbmcsIHRydW5jYXRpbmcgdGhlIGZpbGUgZmlyc3QKKyAgIGBgJ3gnYGAgICBvcGVuIGZvciBleGNsdXNpdmUgY3JlYXRpb24sIGZhaWxpbmcgaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMKICAgIGBgJ2EnYGAgICBvcGVuIGZvciB3cml0aW5nLCBhcHBlbmRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSBpZiBpdCBleGlzdHMKICAgIGBgJ2InYGAgICBiaW5hcnkgbW9kZQogICAgYGAndCdgYCAgIHRleHQgbW9kZSAoZGVmYXVsdCkKQEAgLTkyNCw2ICs5MzIsMjkgQEAKICAgIGNsb3NlZC4gIElmIGEgZmlsZW5hbWUgaXMgZ2l2ZW4gKmNsb3NlZmQqIGhhcyBubyBlZmZlY3QgYW5kIG11c3QgYmUgYGBUcnVlYGAKICAgICh0aGUgZGVmYXVsdCkuCiAKKyAgIEEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieSBwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZSB1bmRlcmx5aW5nCisgICBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5IGNhbGxpbmcgKm9wZW5lciogd2l0aAorICAgKCpmaWxlKiwgKmZsYWdzKikuICpvcGVuZXIqIG11c3QgcmV0dXJuIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIChwYXNzaW5nCisgICA6bW9kOmBvcy5vcGVuYCBhcyAqb3BlbmVyKiByZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBwYXNzaW5nCisgICBgYE5vbmVgYCkuCisKKyAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSB1c2VzIHRoZSA6cmVmOmBkaXJfZmQgPGRpcl9mZD5gIHBhcmFtZXRlciBvZiB0aGUKKyAgIDpmdW5jOmBvcy5vcGVuYCBmdW5jdGlvbiB0byBvcGVuIGEgZmlsZSByZWxhdGl2ZSB0byBhIGdpdmVuIGRpcmVjdG9yeTo6CisKKyAgICAgID4+PiBpbXBvcnQgb3MKKyAgICAgID4+PiBkaXJfZmQgPSBvcy5vcGVuKCdzb21lZGlyJywgb3MuT19SRE9OTFkpCisgICAgICA+Pj4gZGVmIG9wZW5lcihwYXRoLCBmbGFncyk6CisgICAgICAuLi4gICAgIHJldHVybiBvcy5vcGVuKHBhdGgsIGZsYWdzLCBkaXJfZmQ9ZGlyX2ZkKQorICAgICAgLi4uCisgICAgICA+Pj4gd2l0aCBvcGVuKCdzcGFtc3BhbS50eHQnLCAndycsIG9wZW5lcj1vcGVuZXIpIGFzIGY6CisgICAgICAuLi4gICAgIHByaW50KCdUaGlzIHdpbGwgYmUgd3JpdHRlbiB0byBzb21lZGlyL3NwYW1zcGFtLnR4dCcsIGZpbGU9ZikKKyAgICAgIC4uLgorICAgICAgPj4+IG9zLmNsb3NlKGRpcl9mZCkgICMgZG9uJ3QgbGVhayBhIGZpbGUgZGVzY3JpcHRvcgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhlICpvcGVuZXIqIHBhcmFtZXRlciB3YXMgYWRkZWQuCisgICAgICBUaGUgYGAneCdgYCBtb2RlIHdhcyBhZGRlZC4KKwogICAgVGhlIHR5cGUgb2YgOnRlcm06YGZpbGUgb2JqZWN0YCByZXR1cm5lZCBieSB0aGUgOmZ1bmM6YG9wZW5gIGZ1bmN0aW9uCiAgICBkZXBlbmRzIG9uIHRoZSBtb2RlLiAgV2hlbiA6ZnVuYzpgb3BlbmAgaXMgdXNlZCB0byBvcGVuIGEgZmlsZSBpbiBhIHRleHQKICAgIG1vZGUgKGBgJ3cnYGAsIGBgJ3InYGAsIGBgJ3d0J2BgLCBgYCdydCdgYCwgZXRjLiksIGl0IHJldHVybnMgYSBzdWJjbGFzcyBvZgpAQCAtOTQ5LDYgKzk4MCwxMSBAQAogICAgKHdoZXJlIDpmdW5jOmBvcGVuYCBpcyBkZWNsYXJlZCksIDptb2Q6YG9zYCwgOm1vZDpgb3MucGF0aGAsIDptb2Q6YHRlbXBmaWxlYCwKICAgIGFuZCA6bW9kOmBzaHV0aWxgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmV4YzpgSU9FcnJvcmAgdXNlZCB0byBiZSByYWlzZWQsIGl0IGlzIG5vdyBhbiBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKyAgICAgIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgaXMgbm93IHJhaXNlZCBpZiB0aGUgZmlsZSBvcGVuZWQgaW4gZXhjbHVzaXZlCisgICAgICBjcmVhdGlvbiBtb2RlIChgYCd4J2BgKSBhbHJlYWR5IGV4aXN0cy4KKwogCiAuLiBYWFggd29ya3MgZm9yIGJ5dGVzIHRvbywgYnV0IHNob3VsZCBpdD8KIC4uIGZ1bmN0aW9uOjogb3JkKGMpCkBAIC05NTgsOSArOTk0LDYgQEAKICAgIHBvaW50IG9mIHRoYXQgY2hhcmFjdGVyLiAgRm9yIGV4YW1wbGUsIGBgb3JkKCdhJylgYCByZXR1cm5zIHRoZSBpbnRlZ2VyIGBgOTdgYAogICAgYW5kIGBgb3JkKCdcdTIwMjAnKWBgIHJldHVybnMgYGA4MjI0YGAuICBUaGlzIGlzIHRoZSBpbnZlcnNlIG9mIDpmdW5jOmBjaHJgLgogCi0gICBPbiB3aWRlIFVuaWNvZGUgYnVpbGRzLCBpZiB0aGUgYXJndW1lbnQgbGVuZ3RoIGlzIG5vdCBvbmUsIGEKLSAgIDpleGM6YFR5cGVFcnJvcmAgd2lsbCBiZSByYWlzZWQuICBPbiBuYXJyb3cgVW5pY29kZSBidWlsZHMsIHN0cmluZ3MKLSAgIG9mIGxlbmd0aCB0d28gYXJlIGFjY2VwdGVkIHdoZW4gdGhleSBmb3JtIGEgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyLgogCiAuLiBmdW5jdGlvbjo6IHBvdyh4LCB5Wywgel0pCiAKQEAgLTk3OCw3ICsxMDExLDcgQEAKICAgIG11c3QgYmUgb2YgaW50ZWdlciB0eXBlcywgYW5kICp5KiBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4KIAogCi0uLiBmdW5jdGlvbjo6IHByaW50KCpvYmplY3RzLCBzZXA9JyAnLCBlbmQ9J1xcbicsIGZpbGU9c3lzLnN0ZG91dCkKKy4uIGZ1bmN0aW9uOjogcHJpbnQoKm9iamVjdHMsIHNlcD0nICcsIGVuZD0nXFxuJywgZmlsZT1zeXMuc3Rkb3V0LCBmbHVzaD1GYWxzZSkKIAogICAgUHJpbnQgKm9iamVjdHMqIHRvIHRoZSBzdHJlYW0gKmZpbGUqLCBzZXBhcmF0ZWQgYnkgKnNlcCogYW5kIGZvbGxvd2VkIGJ5CiAgICAqZW5kKi4gICpzZXAqLCAqZW5kKiBhbmQgKmZpbGUqLCBpZiBwcmVzZW50LCBtdXN0IGJlIGdpdmVuIGFzIGtleXdvcmQKQEAgLTk5MSw5ICsxMDI0LDEyIEBACiAgICAqZW5kKi4KIAogICAgVGhlICpmaWxlKiBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdCB3aXRoIGEgYGB3cml0ZShzdHJpbmcpYGAgbWV0aG9kOyBpZiBpdAotICAgaXMgbm90IHByZXNlbnQgb3IgYGBOb25lYGAsIDpkYXRhOmBzeXMuc3Rkb3V0YCB3aWxsIGJlIHVzZWQuIE91dHB1dCBidWZmZXJpbmcKLSAgIGlzIGRldGVybWluZWQgYnkgKmZpbGUqLiBVc2UgYGBmaWxlLmZsdXNoKClgYCB0byBlbnN1cmUsIGZvciBpbnN0YW5jZSwKLSAgIGltbWVkaWF0ZSBhcHBlYXJhbmNlIG9uIGEgc2NyZWVuLgorICAgaXMgbm90IHByZXNlbnQgb3IgYGBOb25lYGAsIDpkYXRhOmBzeXMuc3Rkb3V0YCB3aWxsIGJlIHVzZWQuICBXaGV0aGVyIG91dHB1dAorICAgaXMgYnVmZmVyZWQgaXMgdXN1YWxseSBkZXRlcm1pbmVkIGJ5ICpmaWxlKiwgYnV0IGlmIHRoZSAgKmZsdXNoKiBrZXl3b3JkCisgICBhcmd1bWVudCBpcyB0cnVlLCB0aGUgc3RyZWFtIGlzIGZvcmNpYmx5IGZsdXNoZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKmZsdXNoKiBrZXl3b3JkIGFyZ3VtZW50LgogCiAKIC4uIGZ1bmN0aW9uOjogcHJvcGVydHkoZmdldD1Ob25lLCBmc2V0PU5vbmUsIGZkZWw9Tm9uZSwgZG9jPU5vbmUpCkBAIC0xMDY1LDYzICsxMTAxLDEzIEBACiAgICBgYGZkZWxgYCBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMuCiAKIAotLi4gWFhYIGRvZXMgYWNjZXB0IG9iamVjdHMgd2l0aCBfX2luZGV4X18gdG9vCisuLiBfZnVuYy1yYW5nZToKIC4uIGZ1bmN0aW9uOjogcmFuZ2Uoc3RvcCkKICAgICAgICAgICAgICAgcmFuZ2Uoc3RhcnQsIHN0b3BbLCBzdGVwXSkKKyAgIDpub2luZGV4OgogCi0gICBUaGlzIGlzIGEgdmVyc2F0aWxlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBpdGVyYWJsZXMgeWllbGRpbmcgYXJpdGhtZXRpYwotICAgcHJvZ3Jlc3Npb25zLiAgSXQgaXMgbW9zdCBvZnRlbiB1c2VkIGluIDprZXl3b3JkOmBmb3JgIGxvb3BzLiAgVGhlIGFyZ3VtZW50cwotICAgbXVzdCBiZSBpbnRlZ2Vycy4gIElmIHRoZSAqc3RlcCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYGAxYGAuCi0gICBJZiB0aGUgKnN0YXJ0KiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBgYDBgYC4gIFRoZSBmdWxsIGZvcm0KLSAgIHJldHVybnMgYW4gaXRlcmFibGUgb2YgaW50ZWdlcnMgYGBbc3RhcnQsIHN0YXJ0ICsgc3RlcCwgc3RhcnQgKyAyICogc3RlcCwKLSAgIC4uLl1gYC4gIElmICpzdGVwKiBpcyBwb3NpdGl2ZSwgdGhlIGxhc3QgZWxlbWVudCBpcyB0aGUgbGFyZ2VzdCBgYHN0YXJ0ICsgaSAqCi0gICBzdGVwYGAgbGVzcyB0aGFuICpzdG9wKjsgaWYgKnN0ZXAqIGlzIG5lZ2F0aXZlLCB0aGUgbGFzdCBlbGVtZW50IGlzIHRoZQotICAgc21hbGxlc3QgYGBzdGFydCArIGkgKiBzdGVwYGAgZ3JlYXRlciB0aGFuICpzdG9wKi4gICpzdGVwKiBtdXN0IG5vdCBiZSB6ZXJvCi0gICAob3IgZWxzZSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQpLiAgRXhhbXBsZToKLQotICAgICAgPj4+IGxpc3QocmFuZ2UoMTApKQotICAgICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldCi0gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAxMSkpCi0gICAgICBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdCi0gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAzMCwgNSkpCi0gICAgICBbMCwgNSwgMTAsIDE1LCAyMCwgMjVdCi0gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAxMCwgMykpCi0gICAgICBbMCwgMywgNiwgOV0KLSAgICAgID4+PiBsaXN0KHJhbmdlKDAsIC0xMCwgLTEpKQotICAgICAgWzAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTldCi0gICAgICA+Pj4gbGlzdChyYW5nZSgwKSkKLSAgICAgIFtdCi0gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAwKSkKLSAgICAgIFtdCi0KLSAgIFJhbmdlIG9iamVjdHMgaW1wbGVtZW50IHRoZSA6Y2xhc3M6YGNvbGxlY3Rpb25zLlNlcXVlbmNlYCBBQkMsIGFuZCBwcm92aWRlCi0gICBmZWF0dXJlcyBzdWNoIGFzIGNvbnRhaW5tZW50IHRlc3RzLCBlbGVtZW50IGluZGV4IGxvb2t1cCwgc2xpY2luZyBhbmQKLSAgIHN1cHBvcnQgZm9yIG5lZ2F0aXZlIGluZGljZXMgKHNlZSA6cmVmOmB0eXBlc3NlcWApOgotCi0gICAgICA+Pj4gciA9IHJhbmdlKDAsIDIwLCAyKQotICAgICAgPj4+IHIKLSAgICAgIHJhbmdlKDAsIDIwLCAyKQotICAgICAgPj4+IDExIGluIHIKLSAgICAgIEZhbHNlCi0gICAgICA+Pj4gMTAgaW4gcgotICAgICAgVHJ1ZQotICAgICAgPj4+IHIuaW5kZXgoMTApCi0gICAgICA1Ci0gICAgICA+Pj4gcls1XQotICAgICAgMTAKLSAgICAgID4+PiByWzo1XQotICAgICAgcmFuZ2UoMCwgMTAsIDIpCi0gICAgICA+Pj4gclstMV0KLSAgICAgIDE4Ci0KLSAgIFJhbmdlcyBjb250YWluaW5nIGFic29sdXRlIHZhbHVlcyBsYXJnZXIgdGhhbiA6ZGF0YTpgc3lzLm1heHNpemVgIGFyZSBwZXJtaXR0ZWQKLSAgIGJ1dCBzb21lIGZlYXR1cmVzIChzdWNoIGFzIDpmdW5jOmBsZW5gKSB3aWxsIHJhaXNlIDpleGM6YE92ZXJmbG93RXJyb3JgLgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgSW1wbGVtZW50IHRoZSBTZXF1ZW5jZSBBQkMuCi0gICAgICBTdXBwb3J0IHNsaWNpbmcgYW5kIG5lZ2F0aXZlIGluZGljZXMuCi0gICAgICBUZXN0IGludGVnZXJzIGZvciBtZW1iZXJzaGlwIGluIGNvbnN0YW50IHRpbWUgaW5zdGVhZCBvZiBpdGVyYXRpbmcKLSAgICAgIHRocm91Z2ggYWxsIGl0ZW1zLgorICAgUmF0aGVyIHRoYW4gYmVpbmcgYSBmdW5jdGlvbiwgOmNsYXNzOmByYW5nZWAgaXMgYWN0dWFsbHkgYW4gaW1tdXRhYmxlCisgICBzZXF1ZW5jZSB0eXBlLCBhcyBkb2N1bWVudGVkIGluIDpyZWY6YHR5cGVzc2VxLXJhbmdlYCBhbmQgOnJlZjpgdHlwZXNzZXFgLgogCiAKIC4uIGZ1bmN0aW9uOjogcmVwcihvYmplY3QpCkBAIC0xMjUwLDQ3ICsxMjM2LDE1IEBACiAgICAgICBzaW5nbGU6IHN0cmluZzsgc3RyKCkgKGJ1aWx0LWluIGZ1bmN0aW9uKQogCiAKKy4uIF9mdW5jLXN0cjoKIC4uIGZ1bmN0aW9uOjogc3RyKG9iamVjdD0nJykKICAgICAgICAgICAgICAgc3RyKG9iamVjdD1iJycsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0JykKKyAgIDpub2luZGV4OgogCi0gICBSZXR1cm4gYSA6cmVmOmBzdHJpbmcgPHR5cGVzc2VxPmAgdmVyc2lvbiBvZiAqb2JqZWN0Ki4gIElmICpvYmplY3QqIGlzIG5vdAotICAgcHJvdmlkZWQsIHJldHVybnMgdGhlIGVtcHR5IHN0cmluZy4gIE90aGVyd2lzZSwgdGhlIGJlaGF2aW9yIG9mIGBgc3RyKClgYAotICAgZGVwZW5kcyBvbiB3aGV0aGVyICplbmNvZGluZyogb3IgKmVycm9ycyogaXMgZ2l2ZW4sIGFzIGZvbGxvd3MuCisgICBSZXR1cm4gYSA6Y2xhc3M6YHN0cmAgdmVyc2lvbiBvZiAqb2JqZWN0Ki4gIFNlZSA6ZnVuYzpgc3RyYCBmb3IgZGV0YWlscy4KIAotICAgSWYgbmVpdGhlciAqZW5jb2RpbmcqIG5vciAqZXJyb3JzKiBpcyBnaXZlbiwgYGBzdHIob2JqZWN0KWBgIHJldHVybnMKLSAgIDptZXRoOmBvYmplY3QuX19zdHJfXygpIDxvYmplY3QuX19zdHJfXz5gLCB3aGljaCBpcyB0aGUgImluZm9ybWFsIiBvciBuaWNlbHkKLSAgIHByaW50YWJsZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgKm9iamVjdCouICBGb3Igc3RyaW5nIG9iamVjdHMsIHRoaXMgaXMKLSAgIHRoZSBzdHJpbmcgaXRzZWxmLiAgSWYgKm9iamVjdCogZG9lcyBub3QgaGF2ZSBhIDptZXRoOmB+b2JqZWN0Ll9fc3RyX19gCi0gICBtZXRob2QsIHRoZW4gOmZ1bmM6YHN0cmAgZmFsbHMgYmFjayB0byByZXR1cm5pbmcKLSAgIDptZXRoOmByZXByKG9iamVjdCkgPHJlcHI+YC4KLQotICAgLi4gaW5kZXg6OgotICAgICAgc2luZ2xlOiBidWZmZXIgcHJvdG9jb2w7IHN0cigpIChidWlsdC1pbiBmdW5jdGlvbikKLSAgICAgIHNpbmdsZTogYnl0ZXM7IHN0cigpIChidWlsdC1pbiBmdW5jdGlvbikKLQotICAgSWYgYXQgbGVhc3Qgb25lIG9mICplbmNvZGluZyogb3IgKmVycm9ycyogaXMgZ2l2ZW4sICpvYmplY3QqIHNob3VsZCBiZSBhCi0gICA6Y2xhc3M6YGJ5dGVzYCBvciA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0LCBvciBtb3JlIGdlbmVyYWxseSBhbnkgb2JqZWN0Ci0gICB0aGF0IHN1cHBvcnRzIHRoZSA6cmVmOmBidWZmZXIgcHJvdG9jb2wgPGJ1ZmZlcm9iamVjdHM+YC4gIEluIHRoaXMgY2FzZSwgaWYKLSAgICpvYmplY3QqIGlzIGEgOmNsYXNzOmBieXRlc2AgKG9yIDpjbGFzczpgYnl0ZWFycmF5YCkgb2JqZWN0LCB0aGVuCi0gICBgYHN0cihieXRlcywgZW5jb2RpbmcsIGVycm9ycylgYCBpcyBlcXVpdmFsZW50IHRvCi0gICA6bWV0aDpgYnl0ZXMuZGVjb2RlKGVuY29kaW5nLCBlcnJvcnMpIDxieXRlcy5kZWNvZGU+YC4gIE90aGVyd2lzZSwgdGhlIGJ5dGVzCi0gICBvYmplY3QgdW5kZXJseWluZyB0aGUgYnVmZmVyIG9iamVjdCBpcyBvYnRhaW5lZCBiZWZvcmUgY2FsbGluZwotICAgOm1ldGg6YGJ5dGVzLmRlY29kZWAuICBTZWUgdGhlIDpyZWY6YHR5cGVzc2VxYCBzZWN0aW9uLCB0aGUKLSAgIDpyZWY6YHR5cGVtZW1vcnl2aWV3YCBzZWN0aW9uLCBhbmQgOnJlZjpgYnVmZmVyb2JqZWN0c2AgZm9yIGluZm9ybWF0aW9uIG9uCi0gICBidWZmZXIgb2JqZWN0cy4KLQotICAgUGFzc2luZyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCB0byA6ZnVuYzpgc3RyYCB3aXRob3V0IHRoZSAqZW5jb2RpbmcqCi0gICBvciAqZXJyb3JzKiBhcmd1bWVudHMgZmFsbHMgdW5kZXIgdGhlIGZpcnN0IGNhc2Ugb2YgcmV0dXJuaW5nIHRoZSBpbmZvcm1hbAotICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIChzZWUgYWxzbyB0aGUgOm9wdGlvbjpgLWJgIGNvbW1hbmQtbGluZSBvcHRpb24gdG8KLSAgIFB5dGhvbikuICBGb3IgZXhhbXBsZTo6Ci0KLSAgICAgID4+PiBzdHIoYidab290IScpCi0gICAgICAiYidab290ISciCi0KLSAgIGBgc3RyYGAgaXMgYSBidWlsdC1pbiA6dGVybTpgdHlwZWAuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgc3RyaW5nCi0gICB0eXBlIGFuZCBpdHMgbWV0aG9kcywgc2VlIHRoZSA6cmVmOmB0eXBlc3NlcWAgYW5kIDpyZWY6YHN0cmluZy1tZXRob2RzYAotICAgc2VjdGlvbnMuICBUbyBvdXRwdXQgZm9ybWF0dGVkIHN0cmluZ3MsIHNlZSB0aGUgOnJlZjpgc3RyaW5nLWZvcm1hdHRpbmdgCi0gICBzZWN0aW9uLiAgSW4gYWRkaXRpb24sIHNlZSB0aGUgOnJlZjpgc3RyaW5nc2VydmljZXNgIHNlY3Rpb24uCisgICBgYHN0cmBgIGlzIHRoZSBidWlsdC1pbiBzdHJpbmcgOnRlcm06YGNsYXNzYC4gIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uCisgICBhYm91dCBzdHJpbmdzLCBzZWUgOnJlZjpgdGV4dHNlcWAuCiAKIAogLi4gZnVuY3Rpb246OiBzdW0oaXRlcmFibGVbLCBzdGFydF0pCkBAIC0xMzUwLDI2ICsxMzA0LDI0IEBACiAgICBBY2NvcmRpbmdseSwgOmZ1bmM6YHN1cGVyYCBpcyB1bmRlZmluZWQgZm9yIGltcGxpY2l0IGxvb2t1cHMgdXNpbmcgc3RhdGVtZW50cyBvcgogICAgb3BlcmF0b3JzIHN1Y2ggYXMgYGBzdXBlcigpW25hbWVdYGAuCiAKLSAgIEFsc28gbm90ZSB0aGF0IDpmdW5jOmBzdXBlcmAgaXMgbm90IGxpbWl0ZWQgdG8gdXNlIGluc2lkZSBtZXRob2RzLiAgVGhlIHR3bwotICAgYXJndW1lbnQgZm9ybSBzcGVjaWZpZXMgdGhlIGFyZ3VtZW50cyBleGFjdGx5IGFuZCBtYWtlcyB0aGUgYXBwcm9wcmlhdGUKLSAgIHJlZmVyZW5jZXMuICBUaGUgemVybyBhcmd1bWVudCBmb3JtIGF1dG9tYXRpY2FsbHkgc2VhcmNoZXMgdGhlIHN0YWNrIGZyYW1lCi0gICBmb3IgdGhlIGNsYXNzIChgYF9fY2xhc3NfX2BgKSBhbmQgdGhlIGZpcnN0IGFyZ3VtZW50LgorICAgQWxzbyBub3RlIHRoYXQsIGFzaWRlIGZyb20gdGhlIHplcm8gYXJndW1lbnQgZm9ybSwgOmZ1bmM6YHN1cGVyYCBpcyBub3QKKyAgIGxpbWl0ZWQgdG8gdXNlIGluc2lkZSBtZXRob2RzLiAgVGhlIHR3byBhcmd1bWVudCBmb3JtIHNwZWNpZmllcyB0aGUKKyAgIGFyZ3VtZW50cyBleGFjdGx5IGFuZCBtYWtlcyB0aGUgYXBwcm9wcmlhdGUgcmVmZXJlbmNlcy4gIFRoZSB6ZXJvCisgICBhcmd1bWVudCBmb3JtIG9ubHkgd29ya3MgaW5zaWRlIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXMgdGhlIGNvbXBpbGVyIGZpbGxzCisgICBpbiB0aGUgbmVjZXNzYXJ5IGRldGFpbHMgdG8gY29ycmVjdGx5IHJldHJpZXZlIHRoZSBjbGFzcyBiZWluZyBkZWZpbmVkLAorICAgYXMgd2VsbCBhcyBhY2Nlc3NpbmcgdGhlIGN1cnJlbnQgaW5zdGFuY2UgZm9yIG9yZGluYXJ5IG1ldGhvZHMuCiAKICAgIEZvciBwcmFjdGljYWwgc3VnZ2VzdGlvbnMgb24gaG93IHRvIGRlc2lnbiBjb29wZXJhdGl2ZSBjbGFzc2VzIHVzaW5nCiAgICA6ZnVuYzpgc3VwZXJgLCBzZWUgYGd1aWRlIHRvIHVzaW5nIHN1cGVyKCkKICAgIDxodHRwOi8vcmhldHRpbmdlci53b3JkcHJlc3MuY29tLzIwMTEvMDUvMjYvc3VwZXItY29uc2lkZXJlZC1zdXBlci8+YF8uCiAKIAorLi4gX2Z1bmMtdHVwbGU6CiAuLiBmdW5jdGlvbjo6IHR1cGxlKFtpdGVyYWJsZV0pCisgICA6bm9pbmRleDoKIAotICAgUmV0dXJuIGEgdHVwbGUgd2hvc2UgaXRlbXMgYXJlIHRoZSBzYW1lIGFuZCBpbiB0aGUgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqJ3MKLSAgIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgYSBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0cyBpdGVyYXRpb24sIG9yIGFuCi0gICBpdGVyYXRvciBvYmplY3QuIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIHR1cGxlLCBpdCBpcyByZXR1cm5lZCB1bmNoYW5nZWQuCi0gICBGb3IgaW5zdGFuY2UsIGBgdHVwbGUoJ2FiYycpYGAgcmV0dXJucyBgYCgnYScsICdiJywgJ2MnKWBgIGFuZCBgYHR1cGxlKFsxLCAyLAotICAgM10pYGAgcmV0dXJucyBgYCgxLCAyLCAzKWBgLiAgSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybnMgYSBuZXcgZW1wdHkKLSAgIHR1cGxlLCBgYCgpYGAuCi0KLSAgIDpjbGFzczpgdHVwbGVgIGlzIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCBhcyBkb2N1bWVudGVkIGluIDpyZWY6YHR5cGVzc2VxYC4KKyAgIFJhdGhlciB0aGFuIGJlaW5nIGEgZnVuY3Rpb24sIDpjbGFzczpgdHVwbGVgIGlzIGFjdHVhbGx5IGFuIGltbXV0YWJsZQorICAgc2VxdWVuY2UgdHlwZSwgYXMgZG9jdW1lbnRlZCBpbiA6cmVmOmB0eXBlc3NlcS10dXBsZWAgYW5kIDpyZWY6YHR5cGVzc2VxYC4KIAogCiAuLiBmdW5jdGlvbjo6IHR5cGUob2JqZWN0KQpAQCAtMTM5OCw2ICsxMzUwLDggQEAKICAgICAgIC4uLgogICAgICAgPj4+IFggPSB0eXBlKCdYJywgKG9iamVjdCwpLCBkaWN0KGE9MSkpCiAKKyAgIFNlZSBhbHNvIDpyZWY6YGJsdGluLXR5cGUtb2JqZWN0c2AuCisKIAogLi4gZnVuY3Rpb246OiB2YXJzKFtvYmplY3RdKQogCkBAIC0xNDU0LDcgKzE0MDgsNyBAQAogICAgICAgVHJ1ZQogCiAKLS4uIGZ1bmN0aW9uOjogX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzPXt9LCBsb2NhbHM9e30sIGZyb21saXN0PVtdLCBsZXZlbD0tMSkKKy4uIGZ1bmN0aW9uOjogX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lLCBmcm9tbGlzdD0oKSwgbGV2ZWw9MCkKIAogICAgLi4gaW5kZXg6OgogICAgICAgc3RhdGVtZW50OiBpbXBvcnQKQEAgLTE0NjksOCArMTQyMyw5IEBACiAgICByZXBsYWNlZCAoYnkgaW1wb3J0aW5nIHRoZSA6bW9kOmBidWlsdGluc2AgbW9kdWxlIGFuZCBhc3NpZ25pbmcgdG8KICAgIGBgYnVpbHRpbnMuX19pbXBvcnRfX2BgKSBpbiBvcmRlciB0byBjaGFuZ2Ugc2VtYW50aWNzIG9mIHRoZQogICAgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50LCBidXQgbm93YWRheXMgaXQgaXMgdXN1YWxseSBzaW1wbGVyIHRvIHVzZSBpbXBvcnQKLSAgIGhvb2tzIChzZWUgOnBlcDpgMzAyYCkuICBEaXJlY3QgdXNlIG9mIDpmdW5jOmBfX2ltcG9ydF9fYCBpcyByYXJlLCBleGNlcHQgaW4KLSAgIGNhc2VzIHdoZXJlIHlvdSB3YW50IHRvIGltcG9ydCBhIG1vZHVsZSB3aG9zZSBuYW1lIGlzIG9ubHkga25vd24gYXQgcnVudGltZS4KKyAgIGhvb2tzIChzZWUgOnBlcDpgMzAyYCkgdG8gYXR0YWluIHRoZSBzYW1lIGdvYWxzLiAgRGlyZWN0IHVzZSBvZgorICAgOmZ1bmM6YF9faW1wb3J0X19gIGlzIGVudGlyZWx5IGRpc2NvdXJhZ2VkIGluIGZhdm9yIG9mCisgICA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgLgogCiAgICBUaGUgZnVuY3Rpb24gaW1wb3J0cyB0aGUgbW9kdWxlICpuYW1lKiwgcG90ZW50aWFsbHkgdXNpbmcgdGhlIGdpdmVuICpnbG9iYWxzKgogICAgYW5kICpsb2NhbHMqIHRvIGRldGVybWluZSBob3cgdG8gaW50ZXJwcmV0IHRoZSBuYW1lIGluIGEgcGFja2FnZSBjb250ZXh0LgpAQCAtMTQ3OSwxMyArMTQzNCwxMSBAQAogICAgbm90IHVzZSBpdHMgKmxvY2FscyogYXJndW1lbnQgYXQgYWxsLCBhbmQgdXNlcyBpdHMgKmdsb2JhbHMqIG9ubHkgdG8KICAgIGRldGVybWluZSB0aGUgcGFja2FnZSBjb250ZXh0IG9mIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQuCiAKLSAgICpsZXZlbCogc3BlY2lmaWVzIHdoZXRoZXIgdG8gdXNlIGFic29sdXRlIG9yIHJlbGF0aXZlIGltcG9ydHMuIGBgMGBgCi0gICBtZWFucyBvbmx5IHBlcmZvcm0gYWJzb2x1dGUgaW1wb3J0cy4gUG9zaXRpdmUgdmFsdWVzIGZvciAqbGV2ZWwqIGluZGljYXRlIHRoZQotICAgbnVtYmVyIG9mIHBhcmVudCBkaXJlY3RvcmllcyB0byBzZWFyY2ggcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeSBvZiB0aGUKLSAgIG1vZHVsZSBjYWxsaW5nIDpmdW5jOmBfX2ltcG9ydF9fYC4gIE5lZ2F0aXZlIHZhbHVlcyBhdHRlbXB0IGJvdGggYW4gaW1wbGljaXQKLSAgIHJlbGF0aXZlIGltcG9ydCBhbmQgYW4gYWJzb2x1dGUgaW1wb3J0ICh1c2FnZSBvZiBuZWdhdGl2ZSB2YWx1ZXMgZm9yICpsZXZlbCoKLSAgIGFyZSBzdHJvbmdseSBkaXNjb3VyYWdlZCBhcyBmdXR1cmUgdmVyc2lvbnMgb2YgUHl0aG9uIGRvIG5vdCBzdXBwb3J0IHN1Y2gKLSAgIHZhbHVlcykuIEltcG9ydCBzdGF0ZW1lbnRzIG9ubHkgdXNlIHZhbHVlcyBvZiAwIG9yIGdyZWF0ZXIuCisgICAqbGV2ZWwqIHNwZWNpZmllcyB3aGV0aGVyIHRvIHVzZSBhYnNvbHV0ZSBvciByZWxhdGl2ZSBpbXBvcnRzLiBgYDBgYCAodGhlCisgICBkZWZhdWx0KSBtZWFucyBvbmx5IHBlcmZvcm0gYWJzb2x1dGUgaW1wb3J0cy4gIFBvc2l0aXZlIHZhbHVlcyBmb3IKKyAgICpsZXZlbCogaW5kaWNhdGUgdGhlIG51bWJlciBvZiBwYXJlbnQgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIHJlbGF0aXZlIHRvIHRoZQorICAgZGlyZWN0b3J5IG9mIHRoZSBtb2R1bGUgY2FsbGluZyA6ZnVuYzpgX19pbXBvcnRfX2AgKHNlZSA6cGVwOmAzMjhgIGZvciB0aGUKKyAgIGRldGFpbHMpLgogCiAgICBXaGVuIHRoZSAqbmFtZSogdmFyaWFibGUgaXMgb2YgdGhlIGZvcm0gYGBwYWNrYWdlLm1vZHVsZWBgLCBub3JtYWxseSwgdGhlCiAgICB0b3AtbGV2ZWwgcGFja2FnZSAodGhlIG5hbWUgdXAgdGlsbCB0aGUgZmlyc3QgZG90KSBpcyByZXR1cm5lZCwgKm5vdCogdGhlCkBAIC0xNTE4LDYgKzE0NzEsMTAgQEAKICAgIElmIHlvdSBzaW1wbHkgd2FudCB0byBpbXBvcnQgYSBtb2R1bGUgKHBvdGVudGlhbGx5IHdpdGhpbiBhIHBhY2thZ2UpIGJ5IG5hbWUsCiAgICB1c2UgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIE5lZ2F0aXZlIHZhbHVlcyBmb3IgKmxldmVsKiBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZCAod2hpY2ggYWxzbyBjaGFuZ2VzCisgICAgICB0aGUgZGVmYXVsdCB2YWx1ZSB0byAwKS4KKwogCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZnVuY3Rvb2xzLnJzdCBiL0RvYy9saWJyYXJ5L2Z1bmN0b29scy5yc3QKaW5kZXggMDQ3NDNkMy4uZjVjNjYwOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZnVuY3Rvb2xzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mdW5jdG9vbHMucnN0CkBAIC00MCw3ICs0MCw3IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCi0uLiBkZWNvcmF0b3I6OiBscnVfY2FjaGUobWF4c2l6ZT0xMDApCisuLiBkZWNvcmF0b3I6OiBscnVfY2FjaGUobWF4c2l6ZT0xMjgsIHR5cGVkPUZhbHNlKQogCiAgICBEZWNvcmF0b3IgdG8gd3JhcCBhIGZ1bmN0aW9uIHdpdGggYSBtZW1vaXppbmcgY2FsbGFibGUgdGhhdCBzYXZlcyB1cCB0byB0aGUKICAgICptYXhzaXplKiBtb3N0IHJlY2VudCBjYWxscy4gIEl0IGNhbiBzYXZlIHRpbWUgd2hlbiBhbiBleHBlbnNpdmUgb3IgSS9PIGJvdW5kCkBAIC00OSw4ICs0OSwxMyBAQAogICAgU2luY2UgYSBkaWN0aW9uYXJ5IGlzIHVzZWQgdG8gY2FjaGUgcmVzdWx0cywgdGhlIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQKICAgIGFyZ3VtZW50cyB0byB0aGUgZnVuY3Rpb24gbXVzdCBiZSBoYXNoYWJsZS4KIAotICAgSWYgKm1heHNpemUqIGlzIHNldCB0byBOb25lLCB0aGUgTFJVIGZlYXR1cmUgaXMgZGlzYWJsZWQgYW5kIHRoZSBjYWNoZQotICAgY2FuIGdyb3cgd2l0aG91dCBib3VuZC4KKyAgIElmICptYXhzaXplKiBpcyBzZXQgdG8gTm9uZSwgdGhlIExSVSBmZWF0dXJlIGlzIGRpc2FibGVkIGFuZCB0aGUgY2FjaGUgY2FuCisgICBncm93IHdpdGhvdXQgYm91bmQuICBUaGUgTFJVIGZlYXR1cmUgcGVyZm9ybXMgYmVzdCB3aGVuICptYXhzaXplKiBpcyBhCisgICBwb3dlci1vZi10d28uCisKKyAgIElmICp0eXBlZCogaXMgc2V0IHRvIFRydWUsIGZ1bmN0aW9uIGFyZ3VtZW50cyBvZiBkaWZmZXJlbnQgdHlwZXMgd2lsbCBiZQorICAgY2FjaGVkIHNlcGFyYXRlbHkuICBGb3IgZXhhbXBsZSwgYGBmKDMpYGAgYW5kIGBgZigzLjApYGAgd2lsbCBiZSB0cmVhdGVkCisgICBhcyBkaXN0aW5jdCBjYWxscyB3aXRoIGRpc3RpbmN0IHJlc3VsdHMuCiAKICAgIFRvIGhlbHAgbWVhc3VyZSB0aGUgZWZmZWN0aXZlbmVzcyBvZiB0aGUgY2FjaGUgYW5kIHR1bmUgdGhlICptYXhzaXplKgogICAgcGFyYW1ldGVyLCB0aGUgd3JhcHBlZCBmdW5jdGlvbiBpcyBpbnN0cnVtZW50ZWQgd2l0aCBhIDpmdW5jOmBjYWNoZV9pbmZvYApAQCAtNjcsOCArNzIsOCBAQAogCiAgICBBbiBgTFJVIChsZWFzdCByZWNlbnRseSB1c2VkKSBjYWNoZQogICAgPGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2FjaGVfYWxnb3JpdGhtcyNMZWFzdF9SZWNlbnRseV9Vc2VkPmBfIHdvcmtzCi0gICBiZXN0IHdoZW4gbW9yZSByZWNlbnQgY2FsbHMgYXJlIHRoZSBiZXN0IHByZWRpY3RvcnMgb2YgdXBjb21pbmcgY2FsbHMgKGZvcgotICAgZXhhbXBsZSwgdGhlIG1vc3QgcG9wdWxhciBhcnRpY2xlcyBvbiBhIG5ld3Mgc2VydmVyIHRlbmQgdG8gY2hhbmdlIGRhaWx5KS4KKyAgIGJlc3Qgd2hlbiB0aGUgbW9zdCByZWNlbnQgY2FsbHMgYXJlIHRoZSBiZXN0IHByZWRpY3RvcnMgb2YgdXBjb21pbmcgY2FsbHMgKGZvcgorICAgZXhhbXBsZSwgdGhlIG1vc3QgcG9wdWxhciBhcnRpY2xlcyBvbiBhIG5ld3Mgc2VydmVyIHRlbmQgdG8gY2hhbmdlIGVhY2ggZGF5KS4KICAgIFRoZSBjYWNoZSdzIHNpemUgbGltaXQgYXNzdXJlcyB0aGF0IHRoZSBjYWNoZSBkb2VzIG5vdCBncm93IHdpdGhvdXQgYm91bmQgb24KICAgIGxvbmctcnVubmluZyBwcm9jZXNzZXMgc3VjaCBhcyB3ZWIgc2VydmVycy4KIApAQCAtMTExLDYgKzExNiw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICp0eXBlZCogb3B0aW9uLgorCiAuLiBkZWNvcmF0b3I6OiB0b3RhbF9vcmRlcmluZwogCiAgICBHaXZlbiBhIGNsYXNzIGRlZmluaW5nIG9uZSBvciBtb3JlIHJpY2ggY29tcGFyaXNvbiBvcmRlcmluZyBtZXRob2RzLCB0aGlzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9nYy5yc3QgYi9Eb2MvbGlicmFyeS9nYy5yc3QKaW5kZXggMDI4MWJiNy4uNDFiZGExZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZ2MucnN0CisrKyBiL0RvYy9saWJyYXJ5L2djLnJzdApAQCAtMTUzLDggKzE1Myw4IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAogCi1UaGUgZm9sbG93aW5nIHZhcmlhYmxlIGlzIHByb3ZpZGVkIGZvciByZWFkLW9ubHkgYWNjZXNzICh5b3UgY2FuIG11dGF0ZSBpdHMKLXZhbHVlIGJ1dCBzaG91bGQgbm90IHJlYmluZCBpdCk6CitUaGUgZm9sbG93aW5nIHZhcmlhYmxlcyBhcmUgcHJvdmlkZWQgZm9yIHJlYWQtb25seSBhY2Nlc3MgKHlvdSBjYW4gbXV0YXRlIHRoZQordmFsdWVzIGJ1dCBzaG91bGQgbm90IHJlYmluZCB0aGVtKToKIAogLi4gZGF0YTo6IGdhcmJhZ2UKIApAQCAtMTgzLDYgKzE4Myw0MSBAQAogICAgICAgOmNvbnN0OmBERUJVR19VTkNPTExFQ1RBQkxFYCBpcyBzZXQsIGluIGFkZGl0aW9uIGFsbCB1bmNvbGxlY3RhYmxlIG9iamVjdHMKICAgICAgIGFyZSBwcmludGVkLgogCisuLiBkYXRhOjogY2FsbGJhY2tzCisKKyAgIEEgbGlzdCBvZiBjYWxsYmFja3MgdGhhdCB3aWxsIGJlIGludm9rZWQgYnkgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIGJlZm9yZSBhbmQKKyAgIGFmdGVyIGNvbGxlY3Rpb24uICBUaGUgY2FsbGJhY2tzIHdpbGwgYmUgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50cywKKyAgICpwaGFzZSogYW5kICppbmZvKi4KKworICAgKnBoYXNlKiBjYW4gYmUgb25lIG9mIHR3byB2YWx1ZXM6CisKKyAgICAgICJzdGFydCI6IFRoZSBnYXJiYWdlIGNvbGxlY3Rpb24gaXMgYWJvdXQgdG8gc3RhcnQuCisKKyAgICAgICJzdG9wIjogVGhlIGdhcmJhZ2UgY29sbGVjdGlvbiBoYXMgZmluaXNoZWQuCisKKyAgICppbmZvKiBpcyBhIGRpY3QgcHJvdmlkaW5nIG1vcmUgaW5mb3JtYXRpb24gZm9yIHRoZSBjYWxsYmFjay4gIFRoZSBmb2xsb3dpbmcKKyAgIGtleXMgYXJlIGN1cnJlbnRseSBkZWZpbmVkOgorCisgICAgICAiZ2VuZXJhdGlvbiI6IFRoZSBvbGRlc3QgZ2VuZXJhdGlvbiBiZWluZyBjb2xsZWN0ZWQuCisKKyAgICAgICJjb2xsZWN0ZWQiOiBXaGVuICpwaGFzZSogaXMgInN0b3AiLCB0aGUgbnVtYmVyIG9mIG9iamVjdHMKKyAgICAgIHN1Y2Nlc3NmdWxseSBjb2xsZWN0ZWQuCisKKyAgICAgICJ1bmNvbGxlY3RhYmxlIjogV2hlbiAqcGhhc2UqIGlzICJzdG9wIiwgdGhlIG51bWJlciBvZiBvYmplY3RzCisgICAgICB0aGF0IGNvdWxkIG5vdCBiZSBjb2xsZWN0ZWQgYW5kIHdlcmUgcHV0IGluIDpkYXRhOmBnYXJiYWdlYC4KKworICAgQXBwbGljYXRpb25zIGNhbiBhZGQgdGhlaXIgb3duIGNhbGxiYWNrcyB0byB0aGlzIGxpc3QuICBUaGUgcHJpbWFyeQorICAgdXNlIGNhc2VzIGFyZToKKworICAgICAgR2F0aGVyaW5nIHN0YXRpc3RpY3MgYWJvdXQgZ2FyYmFnZSBjb2xsZWN0aW9uLCBzdWNoIGFzIGhvdyBvZnRlbgorICAgICAgdmFyaW91cyBnZW5lcmF0aW9ucyBhcmUgY29sbGVjdGVkLCBhbmQgaG93IGxvbmcgdGhlIGNvbGxlY3Rpb24KKyAgICAgIHRha2VzLgorCisgICAgICBBbGxvd2luZyBhcHBsaWNhdGlvbnMgdG8gaWRlbnRpZnkgYW5kIGNsZWFyIHRoZWlyIG93biB1bmNvbGxlY3RhYmxlCisgICAgICB0eXBlcyB3aGVuIHRoZXkgYXBwZWFyIGluIDpkYXRhOmBnYXJiYWdlYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogVGhlIGZvbGxvd2luZyBjb25zdGFudHMgYXJlIHByb3ZpZGVkIGZvciB1c2Ugd2l0aCA6ZnVuYzpgc2V0X2RlYnVnYDoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZ2V0dGV4dC5yc3QgYi9Eb2MvbGlicmFyeS9nZXR0ZXh0LnJzdAppbmRleCAwZmEwMjJjLi44MjUzMTFiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9nZXR0ZXh0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9nZXR0ZXh0LnJzdApAQCAtMTg1LDEwICsxODUsMTMgQEAKICAgIHRyYW5zbGF0aW9uIG9iamVjdCBmcm9tIHRoZSBjYWNoZTsgdGhlIGFjdHVhbCBpbnN0YW5jZSBkYXRhIGlzIHN0aWxsIHNoYXJlZCB3aXRoCiAgICB0aGUgY2FjaGUuCiAKLSAgIElmIG5vIDpmaWxlOmAubW9gIGZpbGUgaXMgZm91bmQsIHRoaXMgZnVuY3Rpb24gcmFpc2VzIDpleGM6YElPRXJyb3JgIGlmCisgICBJZiBubyA6ZmlsZTpgLm1vYCBmaWxlIGlzIGZvdW5kLCB0aGlzIGZ1bmN0aW9uIHJhaXNlcyA6ZXhjOmBPU0Vycm9yYCBpZgogICAgKmZhbGxiYWNrKiBpcyBmYWxzZSAod2hpY2ggaXMgdGhlIGRlZmF1bHQpLCBhbmQgcmV0dXJucyBhCiAgICA6Y2xhc3M6YE51bGxUcmFuc2xhdGlvbnNgIGluc3RhbmNlIGlmICpmYWxsYmFjayogaXMgdHJ1ZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YElPRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkIGluc3RlYWQgb2YgOmV4YzpgT1NFcnJvcmAuCisKIAogLi4gZnVuY3Rpb246OiBpbnN0YWxsKGRvbWFpbiwgbG9jYWxlZGlyPU5vbmUsIGNvZGVzZXQ9Tm9uZSwgbmFtZXM9Tm9uZSkKIApAQCAtMzQyLDcgKzM0NSw3IEBACiAKIElmIHRoZSA6ZmlsZTpgLm1vYCBmaWxlJ3MgbWFnaWMgbnVtYmVyIGlzIGludmFsaWQsIG9yIGlmIG90aGVyIHByb2JsZW1zIG9jY3VyCiB3aGlsZSByZWFkaW5nIHRoZSBmaWxlLCBpbnN0YW50aWF0aW5nIGEgOmNsYXNzOmBHTlVUcmFuc2xhdGlvbnNgIGNsYXNzIGNhbiByYWlzZQotOmV4YzpgSU9FcnJvcmAuCis6ZXhjOmBPU0Vycm9yYC4KIAogVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSBvdmVycmlkZGVuIGZyb20gdGhlIGJhc2UgY2xhc3MgaW1wbGVtZW50YXRpb246CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2d6aXAucnN0IGIvRG9jL2xpYnJhcnkvZ3ppcC5yc3QKaW5kZXggYWJiZDAxOC4uMmNiZDJkNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZ3ppcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZ3ppcC5yc3QKQEAgLTEzLDkgKzEzLDExIEBACiAKIFRoZSBkYXRhIGNvbXByZXNzaW9uIGlzIHByb3ZpZGVkIGJ5IHRoZSA6bW9kOmB6bGliYCBtb2R1bGUuCiAKLVRoZSA6bW9kOmBnemlwYCBtb2R1bGUgcHJvdmlkZXMgdGhlIDpjbGFzczpgR3ppcEZpbGVgIGNsYXNzLiBUaGUgOmNsYXNzOmBHemlwRmlsZWAKLWNsYXNzIHJlYWRzIGFuZCB3cml0ZXMgOnByb2dyYW06YGd6aXBgXCAtZm9ybWF0IGZpbGVzLCBhdXRvbWF0aWNhbGx5IGNvbXByZXNzaW5nCi1vciBkZWNvbXByZXNzaW5nIHRoZSBkYXRhIHNvIHRoYXQgaXQgbG9va3MgbGlrZSBhbiBvcmRpbmFyeSA6dGVybTpgZmlsZSBvYmplY3RgLgorVGhlIDptb2Q6YGd6aXBgIG1vZHVsZSBwcm92aWRlcyB0aGUgOmNsYXNzOmBHemlwRmlsZWAgY2xhc3MsIGFzIHdlbGwgYXMgdGhlCis6ZnVuYzpgLm9wZW5gLCA6ZnVuYzpgY29tcHJlc3NgIGFuZCA6ZnVuYzpgZGVjb21wcmVzc2AgY29udmVuaWVuY2UgZnVuY3Rpb25zLgorVGhlIDpjbGFzczpgR3ppcEZpbGVgIGNsYXNzIHJlYWRzIGFuZCB3cml0ZXMgOnByb2dyYW06YGd6aXBgXCAtZm9ybWF0IGZpbGVzLAorYXV0b21hdGljYWxseSBjb21wcmVzc2luZyBvciBkZWNvbXByZXNzaW5nIHRoZSBkYXRhIHNvIHRoYXQgaXQgbG9va3MgbGlrZSBhbgorb3JkaW5hcnkgOnRlcm06YGZpbGUgb2JqZWN0YC4KIAogTm90ZSB0aGF0IGFkZGl0aW9uYWwgZmlsZSBmb3JtYXRzIHdoaWNoIGNhbiBiZSBkZWNvbXByZXNzZWQgYnkgdGhlCiA6cHJvZ3JhbTpgZ3ppcGAgYW5kIDpwcm9ncmFtOmBndW56aXBgIHByb2dyYW1zLCBzdWNoICBhcyB0aG9zZSBwcm9kdWNlZCBieQpAQCAtMjQsNiArMjYsMzQgQEAKIFRoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGl0ZW1zOgogCiAKKy4uIGZ1bmN0aW9uOjogb3BlbihmaWxlbmFtZSwgbW9kZT0ncmInLCBjb21wcmVzc2xldmVsPTksIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUpCisKKyAgIE9wZW4gYSBnemlwLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgb3IgdGV4dCBtb2RlLCByZXR1cm5pbmcgYSA6dGVybTpgZmlsZQorICAgb2JqZWN0YC4KKworICAgVGhlICpmaWxlbmFtZSogYXJndW1lbnQgY2FuIGJlIGFuIGFjdHVhbCBmaWxlbmFtZSAoYSA6Y2xhc3M6YHN0cmAgb3IKKyAgIDpjbGFzczpgYnl0ZXNgIG9iamVjdCksIG9yIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KKworICAgVGhlICptb2RlKiBhcmd1bWVudCBjYW4gYmUgYW55IG9mIGBgJ3InYGAsIGBgJ3JiJ2BgLCBgYCdhJ2BgLCBgYCdhYidgYCwKKyAgIGBgJ3cnYGAsIG9yIGBgJ3diJ2BgIGZvciBiaW5hcnkgbW9kZSwgb3IgYGAncnQnYGAsIGBgJ2F0J2BgLCBvciBgYCd3dCdgYCBmb3IKKyAgIHRleHQgbW9kZS4gVGhlIGRlZmF1bHQgaXMgYGAncmInYGAuCisKKyAgIFRoZSAqY29tcHJlc3NsZXZlbCogYXJndW1lbnQgaXMgYW4gaW50ZWdlciBmcm9tIDAgdG8gOSwgYXMgZm9yIHRoZQorICAgOmNsYXNzOmBHemlwRmlsZWAgY29uc3RydWN0b3IuCisKKyAgIEZvciBiaW5hcnkgbW9kZSwgdGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIHRoZSA6Y2xhc3M6YEd6aXBGaWxlYAorICAgY29uc3RydWN0b3I6IGBgR3ppcEZpbGUoZmlsZW5hbWUsIG1vZGUsIGNvbXByZXNzbGV2ZWwpYGAuIEluIHRoaXMgY2FzZSwgdGhlCisgICAqZW5jb2RpbmcqLCAqZXJyb3JzKiBhbmQgKm5ld2xpbmUqIGFyZ3VtZW50cyBtdXN0IG5vdCBiZSBwcm92aWRlZC4KKworICAgRm9yIHRleHQgbW9kZSwgYSA6Y2xhc3M6YEd6aXBGaWxlYCBvYmplY3QgaXMgY3JlYXRlZCwgYW5kIHdyYXBwZWQgaW4gYW4KKyAgIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGVuY29kaW5nLCBlcnJvcgorICAgaGFuZGxpbmcgYmVoYXZpb3IsIGFuZCBsaW5lIGVuZGluZyhzKS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yICpmaWxlbmFtZSogYmVpbmcgYSBmaWxlIG9iamVjdCwgc3VwcG9ydCBmb3IgdGV4dCBtb2RlLAorICAgICAgYW5kIHRoZSAqZW5jb2RpbmcqLCAqZXJyb3JzKiBhbmQgKm5ld2xpbmUqIGFyZ3VtZW50cy4KKworCiAuLiBjbGFzczo6IEd6aXBGaWxlKGZpbGVuYW1lPU5vbmUsIG1vZGU9Tm9uZSwgY29tcHJlc3NsZXZlbD05LCBmaWxlb2JqPU5vbmUsIG10aW1lPU5vbmUpCiAKICAgIENvbnN0cnVjdG9yIGZvciB0aGUgOmNsYXNzOmBHemlwRmlsZWAgY2xhc3MsIHdoaWNoIHNpbXVsYXRlcyBtb3N0IG9mIHRoZQpAQCAtNDYsOSArNzYsOSBAQAogICAgb3IgYGAnd2InYGAsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBmaWxlIHdpbGwgYmUgcmVhZCBvciB3cml0dGVuLiAgVGhlIGRlZmF1bHQKICAgIGlzIHRoZSBtb2RlIG9mICpmaWxlb2JqKiBpZiBkaXNjZXJuaWJsZTsgb3RoZXJ3aXNlLCB0aGUgZGVmYXVsdCBpcyBgYCdyYidgYC4KIAotICAgTm90ZSB0aGF0IHRoZSBmaWxlIGlzIGFsd2F5cyBvcGVuZWQgaW4gYmluYXJ5IG1vZGU7IHRleHQgbW9kZSBpcyBub3QKLSAgIHN1cHBvcnRlZC4gSWYgeW91IG5lZWQgdG8gcmVhZCBhIGNvbXByZXNzZWQgZmlsZSBpbiB0ZXh0IG1vZGUsIHdyYXAgeW91cgotICAgOmNsYXNzOmBHemlwRmlsZWAgd2l0aCBhbiA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgLgorICAgTm90ZSB0aGF0IHRoZSBmaWxlIGlzIGFsd2F5cyBvcGVuZWQgaW4gYmluYXJ5IG1vZGUuIFRvIG9wZW4gYSBjb21wcmVzc2VkIGZpbGUKKyAgIGluIHRleHQgbW9kZSwgdXNlIDpmdW5jOmAub3BlbmAgKG9yIHdyYXAgeW91ciA6Y2xhc3M6YEd6aXBGaWxlYCB3aXRoIGFuCisgICA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgKS4KIAogICAgVGhlICpjb21wcmVzc2xldmVsKiBhcmd1bWVudCBpcyBhbiBpbnRlZ2VyIGZyb20gYGAwYGAgdG8gYGA5YGAgY29udHJvbGxpbmcKICAgIHRoZSBsZXZlbCBvZiBjb21wcmVzc2lvbjsgYGAxYGAgaXMgZmFzdGVzdCBhbmQgcHJvZHVjZXMgdGhlIGxlYXN0CkBAIC03Miw3ICsxMDIsNyBAQAogCiAgICA6Y2xhc3M6YEd6aXBGaWxlYCBzdXBwb3J0cyB0aGUgOmNsYXNzOmBpby5CdWZmZXJlZElPQmFzZWAgaW50ZXJmYWNlLAogICAgaW5jbHVkaW5nIGl0ZXJhdGlvbiBhbmQgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuICBPbmx5IHRoZQotICAgOm1ldGg6YHJlYWQxYCBhbmQgOm1ldGg6YHRydW5jYXRlYCBtZXRob2RzIGFyZW4ndCBpbXBsZW1lbnRlZC4KKyAgIDptZXRoOmB0cnVuY2F0ZWAgbWV0aG9kIGlzbid0IGltcGxlbWVudGVkLgogCiAgICA6Y2xhc3M6YEd6aXBGaWxlYCBhbHNvIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgbWV0aG9kOgogCkBAIC05NCwxMiArMTI0LDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBTdXBwb3J0IGZvciB1bnNlZWthYmxlIGZpbGVzIHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSA6bWV0aDpgaW8uQnVmZmVyZWRJT0Jhc2UucmVhZDFgIG1ldGhvZCBpcyBub3cgaW1wbGVtZW50ZWQuCiAKLS4uIGZ1bmN0aW9uOjogb3BlbihmaWxlbmFtZSwgbW9kZT0ncmInLCBjb21wcmVzc2xldmVsPTkpCi0KLSAgIFRoaXMgaXMgYSBzaG9ydGhhbmQgZm9yIGBgR3ppcEZpbGUoZmlsZW5hbWUsYGAgYGBtb2RlLGBgIGBgY29tcHJlc3NsZXZlbClgYC4KLSAgIFRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50IGlzIHJlcXVpcmVkOyAqbW9kZSogZGVmYXVsdHMgdG8gYGAncmInYGAgYW5kCi0gICAqY29tcHJlc3NsZXZlbCogZGVmYXVsdHMgdG8gYGA5YGAuCiAKIC4uIGZ1bmN0aW9uOjogY29tcHJlc3MoZGF0YSwgY29tcHJlc3NsZXZlbD05KQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9oYXNobGliLnJzdCBiL0RvYy9saWJyYXJ5L2hhc2hsaWIucnN0CmluZGV4IGJjOGFiMmMuLjkyOWQ0MWIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2hhc2hsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2hhc2hsaWIucnN0CkBAIC00MCwxMiArNDAsMTIgQEAKIAogLi4gbm90ZTo6CiAKLSAgIEZvciBiZXR0ZXIgbXVsdGl0aHJlYWRpbmcgcGVyZm9ybWFuY2UsIHRoZSBQeXRob24gR0lMIGlzIHJlbGVhc2VkIGZvcgorICAgRm9yIGJldHRlciBtdWx0aXRocmVhZGluZyBwZXJmb3JtYW5jZSwgdGhlIFB5dGhvbiA6dGVybTpgR0lMYCBpcyByZWxlYXNlZCBmb3IKICAgIHN0cmluZ3Mgb2YgbW9yZSB0aGFuIDIwNDcgYnl0ZXMgYXQgb2JqZWN0IGNyZWF0aW9uIG9yIG9uIHVwZGF0ZS4KIAogLi4gbm90ZTo6CiAKLSAgIEZlZWRpbmcgc3RyaW5nIG9iamVjdHMgaXMgdG8gOm1ldGg6YHVwZGF0ZWAgaXMgbm90IHN1cHBvcnRlZCwgYXMgaGFzaGVzIHdvcmsKKyAgIEZlZWRpbmcgc3RyaW5nIG9iamVjdHMgaW50byA6bWV0aDpgdXBkYXRlYCBpcyBub3Qgc3VwcG9ydGVkLCBhcyBoYXNoZXMgd29yawogICAgb24gYnl0ZXMsIG5vdCBvbiBjaGFyYWN0ZXJzLgogCiAuLiBpbmRleDo6IHNpbmdsZTogT3BlblNTTDsgKHVzZSBpbiBtb2R1bGUgaGFzaGxpYikKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2htYWMucnN0IGIvRG9jL2xpYnJhcnkvaG1hYy5yc3QKaW5kZXggZWZmMjcyNC4uMDcwNmZmNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaG1hYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaG1hYy5yc3QKQEAgLTM4LDYgKzM4LDEzIEBACiAgICBnaXZlbiB0byB0aGUgY29uc3RydWN0b3IuICBJdCBtYXkgY29udGFpbiBub24tQVNDSUkgYnl0ZXMsIGluY2x1ZGluZyBOVUwKICAgIGJ5dGVzLgogCisgICAuLiB3YXJuaW5nOjoKKworICAgICAgV2hlbiBjb21wYXJpbmcgdGhlIG91dHB1dCBvZiA6bWV0aDpgZGlnZXN0YCB0byBhbiBleHRlcm5hbGx5LXN1cHBsaWVkCisgICAgICBkaWdlc3QgZHVyaW5nIGEgdmVyaWZpY2F0aW9uIHJvdXRpbmUsIGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSB0aGUKKyAgICAgIDpmdW5jOmBjb21wYXJlX2RpZ2VzdGAgZnVuY3Rpb24gaW5zdGVhZCBvZiB0aGUgYGA9PWBgIG9wZXJhdG9yCisgICAgICB0byByZWR1Y2UgdGhlIHZ1bG5lcmFiaWxpdHkgdG8gdGltaW5nIGF0dGFja3MuCisKIAogLi4gbWV0aG9kOjogSE1BQy5oZXhkaWdlc3QoKQogCkBAIC00NSw2ICs1MiwxMyBAQAogICAgbGVuZ3RoIGNvbnRhaW5pbmcgb25seSBoZXhhZGVjaW1hbCBkaWdpdHMuICBUaGlzIG1heSBiZSB1c2VkIHRvIGV4Y2hhbmdlIHRoZQogICAgdmFsdWUgc2FmZWx5IGluIGVtYWlsIG9yIG90aGVyIG5vbi1iaW5hcnkgZW52aXJvbm1lbnRzLgogCisgICAuLiB3YXJuaW5nOjoKKworICAgICAgV2hlbiBjb21wYXJpbmcgdGhlIG91dHB1dCBvZiA6bWV0aDpgaGV4ZGlnZXN0YCB0byBhbiBleHRlcm5hbGx5LXN1cHBsaWVkCisgICAgICBkaWdlc3QgZHVyaW5nIGEgdmVyaWZpY2F0aW9uIHJvdXRpbmUsIGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSB0aGUKKyAgICAgIDpmdW5jOmBjb21wYXJlX2RpZ2VzdGAgZnVuY3Rpb24gaW5zdGVhZCBvZiB0aGUgYGA9PWBgIG9wZXJhdG9yCisgICAgICB0byByZWR1Y2UgdGhlIHZ1bG5lcmFiaWxpdHkgdG8gdGltaW5nIGF0dGFja3MuCisKIAogLi4gbWV0aG9kOjogSE1BQy5jb3B5KCkKIApAQCAtNTIsNiArNjYsMjcgQEAKICAgIGNvbXB1dGUgdGhlIGRpZ2VzdHMgb2Ygc3RyaW5ncyB0aGF0IHNoYXJlIGEgY29tbW9uIGluaXRpYWwgc3Vic3RyaW5nLgogCiAKK1RoaXMgbW9kdWxlIGFsc28gcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBoZWxwZXIgZnVuY3Rpb246CisKKy4uIGZ1bmN0aW9uOjogY29tcGFyZV9kaWdlc3QoYSwgYikKKworICAgUmV0dXJuIGBgYSA9PSBiYGAuICBUaGlzIGZ1bmN0aW9uIHVzZXMgYW4gYXBwcm9hY2ggZGVzaWduZWQgdG8gcHJldmVudAorICAgdGltaW5nIGFuYWx5c2lzIGJ5IGF2b2lkaW5nIGNvbnRlbnQtYmFzZWQgc2hvcnQgY2lyY3VpdGluZyBiZWhhdmlvdXIsCisgICBtYWtpbmcgaXQgYXBwcm9wcmlhdGUgZm9yIGNyeXB0b2dyYXBoeS4gICphKiBhbmQgKmIqIG11c3QgYm90aCBiZSBvZiB0aGUKKyAgIHNhbWUgdHlwZTogZWl0aGVyIDpjbGFzczpgc3RyYCAoQVNDSUkgb25seSwgYXMgZS5nLiByZXR1cm5lZCBieQorICAgOm1ldGg6YEhNQUMuaGV4ZGlnZXN0YCksIG9yIGFueSB0eXBlIHRoYXQgc3VwcG9ydHMgdGhlIGJ1ZmZlciBwcm90b2NvbAorICAgKGUuZy4gOmNsYXNzOmBieXRlc2ApLgorCisgICAuLiBub3RlOjoKKworICAgICAgSWYgKmEqIGFuZCAqYiogYXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCBvciBpZiBhbiBlcnJvciBvY2N1cnMsCisgICAgICBhIHRpbWluZyBhdHRhY2sgY291bGQgdGhlb3JldGljYWxseSByZXZlYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlCisgICAgICB0eXBlcyBhbmQgbGVuZ3RocyBvZiAqYSogYW5kICpiKi0tYnV0IG5vdCB0aGVpciB2YWx1ZXMuCisKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gc2VlYWxzbzo6CiAKICAgIE1vZHVsZSA6bW9kOmBoYXNobGliYApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHRtbC5lbnRpdGllcy5yc3QgYi9Eb2MvbGlicmFyeS9odG1sLmVudGl0aWVzLnJzdAppbmRleCBiOGI0YWE4Li42NWNlODE3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odG1sLmVudGl0aWVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odG1sLmVudGl0aWVzLnJzdApAQCAtOSwxMSArOSwxOSBAQAogCiAtLS0tLS0tLS0tLS0tLQogCi1UaGlzIG1vZHVsZSBkZWZpbmVzIHRocmVlIGRpY3Rpb25hcmllcywgYGBuYW1lMmNvZGVwb2ludGBgLCBgYGNvZGVwb2ludDJuYW1lYGAsCi1hbmQgYGBlbnRpdHlkZWZzYGAuIGBgZW50aXR5ZGVmc2BgIGlzIHVzZWQgdG8gcHJvdmlkZSB0aGUgOmF0dHI6YGVudGl0eWRlZnNgCi1hdHRyaWJ1dGUgb2YgdGhlIDpjbGFzczpgaHRtbC5wYXJzZXIuSFRNTFBhcnNlcmAgY2xhc3MuICBUaGUgZGVmaW5pdGlvbiBwcm92aWRlZAotaGVyZSBjb250YWlucyBhbGwgdGhlIGVudGl0aWVzIGRlZmluZWQgYnkgWEhUTUwgMS4wIHRoYXQgY2FuIGJlIGhhbmRsZWQgdXNpbmcKLXNpbXBsZSB0ZXh0dWFsIHN1YnN0aXR1dGlvbiBpbiB0aGUgTGF0aW4tMSBjaGFyYWN0ZXIgc2V0IChJU08tODg1OS0xKS4KK1RoaXMgbW9kdWxlIGRlZmluZXMgZm91ciBkaWN0aW9uYXJpZXMsIDpkYXRhOmBodG1sNWAsCis6ZGF0YTpgbmFtZTJjb2RlcG9pbnRgLCA6ZGF0YTpgY29kZXBvaW50Mm5hbWVgLCBhbmQgOmRhdGE6YGVudGl0eWRlZnNgLgorCisKKy4uIGRhdGE6OiBodG1sNQorCisgICBBIGRpY3Rpb25hcnkgdGhhdCBtYXBzIEhUTUw1IG5hbWVkIGNoYXJhY3RlciByZWZlcmVuY2VzIFsjXV8gdG8gdGhlCisgICBlcXVpdmFsZW50IFVuaWNvZGUgY2hhcmFjdGVyKHMpLCBlLmcuIGBgaHRtbDVbJ2d0OyddID09ICc+J2BgLgorICAgTm90ZSB0aGF0IHRoZSB0cmFpbGluZyBzZW1pY29sb24gaXMgaW5jbHVkZWQgaW4gdGhlIG5hbWUgKGUuZy4gYGAnZ3Q7J2BgKSwKKyAgIGhvd2V2ZXIgc29tZSBvZiB0aGUgbmFtZXMgYXJlIGFjY2VwdGVkIGJ5IHRoZSBzdGFuZGFyZCBldmVuIHdpdGhvdXQgdGhlCisgICBzZW1pY29sb246IGluIHRoaXMgY2FzZSB0aGUgbmFtZSBpcyBwcmVzZW50IHdpdGggYW5kIHdpdGhvdXQgdGhlIGBgJzsnYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIC4uIGRhdGE6OiBlbnRpdHlkZWZzCkBAIC0zMCwzICszOCw4IEBACiAuLiBkYXRhOjogY29kZXBvaW50Mm5hbWUKIAogICAgQSBkaWN0aW9uYXJ5IHRoYXQgbWFwcyBVbmljb2RlIGNvZGVwb2ludHMgdG8gSFRNTCBlbnRpdHkgbmFtZXMuCisKKworLi4gcnVicmljOjogRm9vdG5vdGVzCisKKy4uIFsjXSBTZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvbmFtZWQtY2hhcmFjdGVyLXJlZmVyZW5jZXMuaHRtbApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHRtbC5wYXJzZXIucnN0IGIvRG9jL2xpYnJhcnkvaHRtbC5wYXJzZXIucnN0CmluZGV4IGYzYzM2ZWMuLmU0MTU0ZWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0bWwucGFyc2VyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odG1sLnBhcnNlci5yc3QKQEAgLTE2LDEzICsxNiwxNCBAQAogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGNsYXNzIDpjbGFzczpgSFRNTFBhcnNlcmAgd2hpY2ggc2VydmVzIGFzIHRoZSBiYXNpcyBmb3IKIHBhcnNpbmcgdGV4dCBmaWxlcyBmb3JtYXR0ZWQgaW4gSFRNTCAoSHlwZXJUZXh0IE1hcmstdXAgTGFuZ3VhZ2UpIGFuZCBYSFRNTC4KIAotLi4gY2xhc3M6OiBIVE1MUGFyc2VyKHN0cmljdD1UcnVlKQorLi4gY2xhc3M6OiBIVE1MUGFyc2VyKHN0cmljdD1GYWxzZSkKIAotICAgQ3JlYXRlIGEgcGFyc2VyIGluc3RhbmNlLiAgSWYgKnN0cmljdCogaXMgYGBUcnVlYGAgKHRoZSBkZWZhdWx0KSwgaW52YWxpZAotICAgSFRNTCByZXN1bHRzIGluIDpleGM6YH5odG1sLnBhcnNlci5IVE1MUGFyc2VFcnJvcmAgZXhjZXB0aW9ucyBbI11fLiAgSWYKLSAgICpzdHJpY3QqIGlzIGBgRmFsc2VgYCwgdGhlIHBhcnNlciB1c2VzIGhldXJpc3RpY3MgdG8gbWFrZSBhIGJlc3QgZ3Vlc3MgYXQKLSAgIHRoZSBpbnRlbnRpb24gb2YgYW55IGludmFsaWQgSFRNTCBpdCBlbmNvdW50ZXJzLCBzaW1pbGFyIHRvIHRoZSB3YXkgbW9zdAotICAgYnJvd3NlcnMgZG8uICBVc2luZyBgYHN0cmljdD1GYWxzZWBgIGlzIGFkdmlzZWQuCisgICBDcmVhdGUgYSBwYXJzZXIgaW5zdGFuY2UuICBJZiAqc3RyaWN0KiBpcyBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0KSwgdGhlIHBhcnNlcgorICAgd2lsbCBhY2NlcHQgYW5kIHBhcnNlIGludmFsaWQgbWFya3VwLiAgSWYgKnN0cmljdCogaXMgYGBUcnVlYGAgdGhlIHBhcnNlcgorICAgd2lsbCByYWlzZSBhbiA6ZXhjOmB+aHRtbC5wYXJzZXIuSFRNTFBhcnNlRXJyb3JgIGV4Y2VwdGlvbiBpbnN0ZWFkIFsjXV8gd2hlbgorICAgaXQncyBub3QgYWJsZSB0byBwYXJzZSB0aGUgbWFya3VwLgorICAgVGhlIHVzZSBvZiBgYHN0cmljdD1UcnVlYGAgaXMgZGlzY291cmFnZWQgYW5kIHRoZSAqc3RyaWN0KiBhcmd1bWVudCBpcworICAgZGVwcmVjYXRlZC4KIAogICAgQW4gOmNsYXNzOmAuSFRNTFBhcnNlcmAgaW5zdGFuY2UgaXMgZmVkIEhUTUwgZGF0YSBhbmQgY2FsbHMgaGFuZGxlciBtZXRob2RzCiAgICB3aGVuIHN0YXJ0IHRhZ3MsIGVuZCB0YWdzLCB0ZXh0LCBjb21tZW50cywgYW5kIG90aGVyIG1hcmt1cCBlbGVtZW50cyBhcmUKQEAgLTMyLDcgKzMzLDEyIEBACiAgICBUaGlzIHBhcnNlciBkb2VzIG5vdCBjaGVjayB0aGF0IGVuZCB0YWdzIG1hdGNoIHN0YXJ0IHRhZ3Mgb3IgY2FsbCB0aGUgZW5kLXRhZwogICAgaGFuZGxlciBmb3IgZWxlbWVudHMgd2hpY2ggYXJlIGNsb3NlZCBpbXBsaWNpdGx5IGJ5IGNsb3NpbmcgYW4gb3V0ZXIgZWxlbWVudC4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIgKnN0cmljdCoga2V5d29yZCBhZGRlZAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgICpzdHJpY3QqIGtleXdvcmQgYWRkZWQuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyAzLjUKKyAgICAgIFRoZSAqc3RyaWN0KiBhcmd1bWVudCBhbmQgdGhlIHN0cmljdCBtb2RlIGhhdmUgYmVlbiBkZXByZWNhdGVkLgorICAgICAgVGhlIHBhcnNlciBpcyBub3cgYWJsZSB0byBhY2NlcHQgYW5kIHBhcnNlIGludmFsaWQgbWFya3VwIHRvby4KIAogQW4gZXhjZXB0aW9uIGlzIGRlZmluZWQgYXMgd2VsbDoKIApAQCAtNDYsNiArNTIsMTAgQEAKICAgIGRldGVjdGVkLCBhbmQgOmF0dHI6YG9mZnNldGAgaXMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGludG8gdGhlIGxpbmUgYXQKICAgIHdoaWNoIHRoZSBjb25zdHJ1Y3Qgc3RhcnRzLgogCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgMy41CisgICAgICBUaGlzIGV4Y2VwdGlvbiBoYXMgYmVlbiBkZXByZWNhdGVkIGJlY2F1c2UgaXQncyBuZXZlciByYWlzZWQgYnkgdGhlIHBhcnNlcgorICAgICAgKHdoZW4gdGhlIGRlZmF1bHQgbm9uLXN0cmljdCBtb2RlIGlzIHVzZWQpLgorCiAKIEV4YW1wbGUgSFRNTCBQYXJzZXIgQXBwbGljYXRpb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0bWwucnN0IGIvRG9jL2xpYnJhcnkvaHRtbC5yc3QKaW5kZXggM2FkMWMwYy4uMTEwN2NhOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHRtbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaHRtbC5yc3QKQEAgLTE5LDMgKzE5LDEwIEBACiAgICBhdHRyaWJ1dGUgdmFsdWUgZGVsaW1pdGVkIGJ5IHF1b3RlcywgYXMgaW4gYGA8YSBocmVmPSIuLi4iPmBgLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKworLS0tLS0tLS0tLS0tLS0KKworU3VibW9kdWxlcyBpbiB0aGUgYGBodG1sYGAgcGFja2FnZSBhcmU6CisKKyogOm1vZDpgaHRtbC5wYXJzZXJgIC0tIEhUTUwvWEhUTUwgcGFyc2VyIHdpdGggbGVuaWVudCBwYXJzaW5nIG1vZGUKKyogOm1vZDpgaHRtbC5lbnRpdGllc2AgLS0gSFRNTCBlbnRpdHkgZGVmaW5pdGlvbnMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdCBiL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdAppbmRleCA0MDhhM2U3Li4yZDkzYWE0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0CkBAIC0zNDMsNiArMzQzLDE1IEBACiB8IDpjb25zdDpgVVBHUkFERV9SRVFVSVJFRGAgICAgICAgICAgICAgICAgfCBgYDQyNmBgIHwgSFRUUCBVcGdyYWRlIHRvIFRMUywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA6cmZjOmAyODE3YCwgU2VjdGlvbiA2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IDpjb25zdDpgUFJFQ09ORElUSU9OX1JFUVVJUkVEYCAgICAgICAgICAgfCBgYDQyOGBgIHwgQWRkaXRpb25hbCBIVFRQIFN0YXR1cyBDb2RlcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA6cmZjOmA2NTg1YCwgU2VjdGlvbiAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IDpjb25zdDpgVE9PX01BTllfUkVRVUVTVFNgICAgICAgICAgICAgICAgfCBgYDQyOWBgIHwgQWRkaXRpb25hbCBIVFRQIFN0YXR1cyBDb2RlcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA6cmZjOmA2NTg1YCwgU2VjdGlvbiA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IDpjb25zdDpgUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRWAgfCBgYDQzMWBgIHwgQWRkaXRpb25hbCBIVFRQIFN0YXR1cyBDb2RlcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA6cmZjOmA2NTg1YCwgU2VjdGlvbiA1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IDpjb25zdDpgSU5URVJOQUxfU0VSVkVSX0VSUk9SYCAgICAgICAgICAgfCBgYDUwMGBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC41LjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNS4xPmBfICB8CkBAIC0zNzMsNiArMzgyLDEyIEBACiB8IDpjb25zdDpgTk9UX0VYVEVOREVEYCAgICAgICAgICAgICAgICAgICAgfCBgYDUxMGBgIHwgQW4gSFRUUCBFeHRlbnNpb24gRnJhbWV3b3JrLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA6cmZjOmAyNzc0YCwgU2VjdGlvbiA3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IDpjb25zdDpgTkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRGAgfCBgYDUxMWBgIHwgQWRkaXRpb25hbCBIVFRQIFN0YXR1cyBDb2RlcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA6cmZjOmA2NTg1YCwgU2VjdGlvbiA2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBBZGRlZCBjb2RlcyBgYDQyOGBgLCBgYDQyOWBgLCBgYDQzMWBgIGFuZCBgYDUxMWBgIGZyb20gOnJmYzpgNjU4NWAuCiAKIAogLi4gZGF0YTo6IHJlc3BvbnNlcwpAQCAtNTA2LDYgKzUyMSwxMiBAQAogCiAgICBSZWFkcyBhbmQgcmV0dXJucyB0aGUgcmVzcG9uc2UgYm9keSwgb3IgdXAgdG8gdGhlIG5leHQgKmFtdCogYnl0ZXMuCiAKKy4uIG1ldGhvZDo6IEhUVFBSZXNwb25zZS5yZWFkaW50byhiKQorCisgICBSZWFkcyB1cCB0byB0aGUgbmV4dCBsZW4oYikgYnl0ZXMgb2YgdGhlIHJlc3BvbnNlIGJvZHkgaW50byB0aGUgYnVmZmVyICpiKi4KKyAgIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyByZWFkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogLi4gbWV0aG9kOjogSFRUUFJlc3BvbnNlLmdldGhlYWRlcihuYW1lLCBkZWZhdWx0PU5vbmUpCiAKQEAgLTYxNCw4ICs2MzUsMTAgQEAKIAogQ2xpZW50IHNpZGUgYGBIVFRQIFBVVGBgIHJlcXVlc3RzIGFyZSB2ZXJ5IHNpbWlsYXIgdG8gYGBQT1NUYGAgcmVxdWVzdHMuIFRoZQogZGlmZmVyZW5jZSBsaWVzIG9ubHkgdGhlIHNlcnZlciBzaWRlIHdoZXJlIEhUVFAgc2VydmVyIHdpbGwgYWxsb3cgcmVzb3VyY2VzIHRvCi1iZSBjcmVhdGVkIHZpYSBgYFBVVGBgIHJlcXVlc3QuIEhlcmUgaXMgYW4gZXhhbXBsZSBzZXNzaW9uIHRoYXQgc2hvd3MgaG93IHRvIGRvCi1gYFBVVGBgIHJlcXVlc3QgdXNpbmcgaHR0cC5jbGllbnQ6OgorYmUgY3JlYXRlZCB2aWEgYGBQVVRgYCByZXF1ZXN0LiBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBjdXN0b20gSFRUUCBtZXRob2RzCisrYXJlIGFsc28gaGFuZGxlZCBpbiA6Y2xhc3M6YHVybGxpYi5yZXF1ZXN0LlJlcXVlc3RgIGJ5IHNlbmRpbmcgdGhlIGFwcHJvcHJpYXRlCisrbWV0aG9kIGF0dHJpYnV0ZS5IZXJlIGlzIGFuIGV4YW1wbGUgc2Vzc2lvbiB0aGF0IHNob3dzIGhvdyB0byBkbyBgYFBVVGBgCityZXF1ZXN0IHVzaW5nIGh0dHAuY2xpZW50OjoKIAogICAgID4+PiAjIFRoaXMgY3JlYXRlcyBhbiBIVFRQIG1lc3NhZ2UKICAgICA+Pj4gIyB3aXRoIHRoZSBjb250ZW50IG9mIEJPRFkgYXMgdGhlIGVuY2xvc2VkIHJlcHJlc2VudGF0aW9uCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZWphci5yc3QgYi9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZWphci5yc3QKaW5kZXggY2M4ZjI1MS4uNDBmMjRmMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVqYXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0dHAuY29va2llamFyLnJzdApAQCAtNDAsNyArNDAsMTEgQEAKIC4uIGV4Y2VwdGlvbjo6IExvYWRFcnJvcgogCiAgICBJbnN0YW5jZXMgb2YgOmNsYXNzOmBGaWxlQ29va2llSmFyYCByYWlzZSB0aGlzIGV4Y2VwdGlvbiBvbiBmYWlsdXJlIHRvIGxvYWQKLSAgIGNvb2tpZXMgZnJvbSBhIGZpbGUuICA6ZXhjOmBMb2FkRXJyb3JgIGlzIGEgc3ViY2xhc3Mgb2YgOmV4YzpgSU9FcnJvcmAuCisgICBjb29raWVzIGZyb20gYSBmaWxlLiAgOmV4YzpgTG9hZEVycm9yYCBpcyBhIHN1YmNsYXNzIG9mIDpleGM6YE9TRXJyb3JgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgTG9hZEVycm9yIHdhcyBtYWRlIGEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAgaW5zdGVhZCBvZgorICAgICAgOmV4YzpgSU9FcnJvcmAuCiAKIAogVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSBwcm92aWRlZDoKQEAgLTI1Nyw5ICsyNjEsMTIgQEAKICAgIEFyZ3VtZW50cyBhcmUgYXMgZm9yIDptZXRoOmBzYXZlYC4KIAogICAgVGhlIG5hbWVkIGZpbGUgbXVzdCBiZSBpbiB0aGUgZm9ybWF0IHVuZGVyc3Rvb2QgYnkgdGhlIGNsYXNzLCBvcgotICAgOmV4YzpgTG9hZEVycm9yYCB3aWxsIGJlIHJhaXNlZC4gIEFsc28sIDpleGM6YElPRXJyb3JgIG1heSBiZSByYWlzZWQsIGZvcgorICAgOmV4YzpgTG9hZEVycm9yYCB3aWxsIGJlIHJhaXNlZC4gIEFsc28sIDpleGM6YE9TRXJyb3JgIG1heSBiZSByYWlzZWQsIGZvcgogICAgZXhhbXBsZSBpZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YElPRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkLCBpdCBpcyBub3cgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisKIAogLi4gbWV0aG9kOjogRmlsZUNvb2tpZUphci5yZXZlcnQoZmlsZW5hbWU9Tm9uZSwgaWdub3JlX2Rpc2NhcmQ9RmFsc2UsIGlnbm9yZV9leHBpcmVzPUZhbHNlKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZXMucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVzLnJzdAppbmRleCA1YWUzZmQ0Li42NDZmMmU4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0dHAuY29va2llcy5yc3QKQEAgLTIyLDkgKzIyLDEyIEBACiBDb29raWUgaGFuZGxpbmcuICBBcyBhIHJlc3VsdCwgdGhlIHBhcnNpbmcgcnVsZXMgdXNlZCBhcmUgYSBiaXQgbGVzcyBzdHJpY3QuCiAKIFRoZSBjaGFyYWN0ZXIgc2V0LCA6ZGF0YTpgc3RyaW5nLmFzY2lpX2xldHRlcnNgLCA6ZGF0YTpgc3RyaW5nLmRpZ2l0c2AgYW5kCi1gYCEjJCUmJyorLS5eX2B8fmBgIGRlbm90ZSB0aGUgc2V0IG9mIHZhbGlkIGNoYXJhY3RlcnMgYWxsb3dlZCBieSB0aGlzIG1vZHVsZQorYGAhIyQlJicqKy0uXl9gfH46YGAgZGVub3RlIHRoZSBzZXQgb2YgdmFsaWQgY2hhcmFjdGVycyBhbGxvd2VkIGJ5IHRoaXMgbW9kdWxlCiBpbiBDb29raWUgbmFtZSAoYXMgOmF0dHI6YH5Nb3JzZWwua2V5YCkuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBBbGxvd2VkICc6JyBhcyBhIHZhbGlkIENvb2tpZSBuYW1lIGNoYXJhY3Rlci4KKwogCiAuLiBub3RlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5yc3QgYi9Eb2MvbGlicmFyeS9odHRwLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzg3YTM3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvaHR0cC5yc3QKQEAgLTAsMCArMSwxMSBAQAorOm1vZDpgaHR0cGAgLS0tIEhUVFAgbW9kdWxlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitgYGh0dHBgYCBpcyBhIHBhY2thZ2UgdGhhdCBjb2xsZWN0cyBzZXZlcmFsIG1vZHVsZXMgZm9yIHdvcmtpbmcgd2l0aCB0aGUKK0h5cGVyVGV4dCBUcmFuc2ZlciBQcm90b2NvbDoKKworKiA6bW9kOmBodHRwLmNsaWVudGAgaXMgYSBsb3ctbGV2ZWwgSFRUUCBwcm90b2NvbCBjbGllbnQ7IGZvciBoaWdoLWxldmVsIFVSTAorICBvcGVuaW5nIHVzZSA6bW9kOmB1cmxsaWIucmVxdWVzdGAKKyogOm1vZDpgaHR0cC5zZXJ2ZXJgIGNvbnRhaW5zIGJhc2ljIEhUVFAgc2VydmVyIGNsYXNzZXMgYmFzZWQgb24gOm1vZDpgc29ja2V0c2VydmVyYAorKiA6bW9kOmBodHRwLmNvb2tpZXNgIGhhcyB1dGlsaXRpZXMgZm9yIGltcGxlbWVudGluZyBzdGF0ZSBtYW5hZ2VtZW50IHdpdGggY29va2llcworKiA6bW9kOmBodHRwLmNvb2tpZWphcmAgcHJvdmlkZXMgcGVyc2lzdGVuY2Ugb2YgY29va2llcwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5zZXJ2ZXIucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5zZXJ2ZXIucnN0CmluZGV4IDMwMGUzMzIuLmNiYWQzZWQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0dHAuc2VydmVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwLnNlcnZlci5yc3QKQEAgLTE3OSwxOSArMTc5LDMwIEBACiAKICAgIC4uIG1ldGhvZDo6IHNlbmRfcmVzcG9uc2UoY29kZSwgbWVzc2FnZT1Ob25lKQogCi0gICAgICBTZW5kcyBhIHJlc3BvbnNlIGhlYWRlciBhbmQgbG9ncyB0aGUgYWNjZXB0ZWQgcmVxdWVzdC4gVGhlIEhUVFAgcmVzcG9uc2UKLSAgICAgIGxpbmUgaXMgc2VudCwgZm9sbG93ZWQgYnkgKlNlcnZlciogYW5kICpEYXRlKiBoZWFkZXJzLiBUaGUgdmFsdWVzIGZvcgotICAgICAgdGhlc2UgdHdvIGhlYWRlcnMgYXJlIHBpY2tlZCB1cCBmcm9tIHRoZSA6bWV0aDpgdmVyc2lvbl9zdHJpbmdgIGFuZAotICAgICAgOm1ldGg6YGRhdGVfdGltZV9zdHJpbmdgIG1ldGhvZHMsIHJlc3BlY3RpdmVseS4KKyAgICAgIEFkZHMgYSByZXNwb25zZSBoZWFkZXIgdG8gdGhlIGhlYWRlcnMgYnVmZmVyIGFuZCBsb2dzIHRoZSBhY2NlcHRlZAorICAgICAgcmVxdWVzdC4gVGhlIEhUVFAgcmVzcG9uc2UgbGluZSBpcyB3cml0dGVuIHRvIHRoZSBpbnRlcm5hbCBidWZmZXIsCisgICAgICBmb2xsb3dlZCBieSAqU2VydmVyKiBhbmQgKkRhdGUqIGhlYWRlcnMuIFRoZSB2YWx1ZXMgZm9yIHRoZXNlIHR3byBoZWFkZXJzCisgICAgICBhcmUgcGlja2VkIHVwIGZyb20gdGhlIDptZXRoOmB2ZXJzaW9uX3N0cmluZ2AgYW5kCisgICAgICA6bWV0aDpgZGF0ZV90aW1lX3N0cmluZ2AgbWV0aG9kcywgcmVzcGVjdGl2ZWx5LiBJZiB0aGUgc2VydmVyIGRvZXMgbm90CisgICAgICBpbnRlbmQgdG8gc2VuZCBhbnkgb3RoZXIgaGVhZGVycyB1c2luZyB0aGUgOm1ldGg6YHNlbmRfaGVhZGVyYCBtZXRob2QsCisgICAgICB0aGVuIDptZXRoOmBzZW5kX3Jlc3BvbnNlYCBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSA6bWV0aDpgZW5kX2hlYWRlcnNgCisgICAgICBjYWxsLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgSGVhZGVycyBhcmUgc3RvcmVkIHRvIGFuIGludGVybmFsIGJ1ZmZlciBhbmQgOm1ldGg6YGVuZF9oZWFkZXJzYAorICAgICAgICAgbmVlZHMgdG8gYmUgY2FsbGVkIGV4cGxpY2l0bHkuCisKIAogICAgLi4gbWV0aG9kOjogc2VuZF9oZWFkZXIoa2V5d29yZCwgdmFsdWUpCiAKLSAgICAgIFN0b3JlcyB0aGUgSFRUUCBoZWFkZXIgdG8gYW4gaW50ZXJuYWwgYnVmZmVyIHdoaWNoIHdpbGwgYmUgd3JpdHRlbiB0byB0aGUKLSAgICAgIG91dHB1dCBzdHJlYW0gd2hlbiA6bWV0aDpgZW5kX2hlYWRlcnNgIG1ldGhvZCBpcyBpbnZva2VkLgotICAgICAgKmtleXdvcmQqIHNob3VsZCBzcGVjaWZ5IHRoZSBoZWFkZXIga2V5d29yZCwgd2l0aCAqdmFsdWUqCi0gICAgICBzcGVjaWZ5aW5nIGl0cyB2YWx1ZS4KKyAgICAgIEFkZHMgdGhlIEhUVFAgaGVhZGVyIHRvIGFuIGludGVybmFsIGJ1ZmZlciB3aGljaCB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlCisgICAgICBvdXRwdXQgc3RyZWFtIHdoZW4gZWl0aGVyIDptZXRoOmBlbmRfaGVhZGVyc2Agb3IgOm1ldGg6YGZsdXNoX2hlYWRlcnNgIGlzCisgICAgICBpbnZva2VkLiAqa2V5d29yZCogc2hvdWxkIHNwZWNpZnkgdGhlIGhlYWRlciBrZXl3b3JkLCB3aXRoICp2YWx1ZSoKKyAgICAgIHNwZWNpZnlpbmcgaXRzIHZhbHVlLiBOb3RlIHRoYXQsIGFmdGVyIHRoZSBzZW5kX2hlYWRlciBjYWxscyBhcmUgZG9uZSwKKyAgICAgIDptZXRoOmBlbmRfaGVhZGVyc2AgTVVTVCBCRSBjYWxsZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIG9wZXJhdGlvbi4KIAotICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIgU3RvcmluZyB0aGUgaGVhZGVycyBpbiBhbiBpbnRlcm5hbCBidWZmZXIKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICAgICBIZWFkZXJzIGFyZSBzdG9yZWQgaW4gYW4gaW50ZXJuYWwgYnVmZmVyLgogCiAKICAgIC4uIG1ldGhvZDo6IHNlbmRfcmVzcG9uc2Vfb25seShjb2RlLCBtZXNzYWdlPU5vbmUpCkBAIC0yMDUsMTAgKzIxNiwxOSBAQAogCiAgICAuLiBtZXRob2Q6OiBlbmRfaGVhZGVycygpCiAKLSAgICAgIFdyaXRlIHRoZSBidWZmZXJlZCBIVFRQIGhlYWRlcnMgdG8gdGhlIG91dHB1dCBzdHJlYW0gYW5kIHNlbmQgYSBibGFuawotICAgICAgbGluZSwgaW5kaWNhdGluZyB0aGUgZW5kIG9mIHRoZSBIVFRQIGhlYWRlcnMgaW4gdGhlIHJlc3BvbnNlLgorICAgICAgQWRkcyBhIGJsYW5rIGxpbmUKKyAgICAgIChpbmRpY2F0aW5nIHRoZSBlbmQgb2YgdGhlIEhUVFAgaGVhZGVycyBpbiB0aGUgcmVzcG9uc2UpCisgICAgICB0byB0aGUgaGVhZGVycyBidWZmZXIgYW5kIGNhbGxzIDptZXRoOmBmbHVzaF9oZWFkZXJzKClgLgogCi0gICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMiBXcml0aW5nIHRoZSBidWZmZXJlZCBoZWFkZXJzIHRvIHRoZSBvdXRwdXQgc3RyZWFtLgorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgICAgIFRoZSBidWZmZXJlZCBoZWFkZXJzIGFyZSB3cml0dGVuIHRvIHRoZSBvdXRwdXQgc3RyZWFtLgorCisgICAuLiBtZXRob2Q6OiBmbHVzaF9oZWFkZXJzKCkKKworICAgICAgRmluYWxseSBzZW5kIHRoZSBoZWFkZXJzIHRvIHRoZSBvdXRwdXQgc3RyZWFtIGFuZCBmbHVzaCB0aGUgaW50ZXJuYWwKKyAgICAgIGhlYWRlcnMgYnVmZmVyLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogICAgLi4gbWV0aG9kOjogbG9nX3JlcXVlc3QoY29kZT0nLScsIHNpemU9Jy0nKQogCkBAIC0yNTAsOCArMjcwLDExIEBACiAKICAgIC4uIG1ldGhvZDo6IGFkZHJlc3Nfc3RyaW5nKCkKIAotICAgICAgUmV0dXJucyB0aGUgY2xpZW50IGFkZHJlc3MsIGZvcm1hdHRlZCBmb3IgbG9nZ2luZy4gQSBuYW1lIGxvb2t1cCBpcwotICAgICAgcGVyZm9ybWVkIG9uIHRoZSBjbGllbnQncyBJUCBhZGRyZXNzLgorICAgICAgUmV0dXJucyB0aGUgY2xpZW50IGFkZHJlc3MuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBQcmV2aW91c2x5LCBhIG5hbWUgbG9va3VwIHdhcyBwZXJmb3JtZWQuIFRvIGF2b2lkIG5hbWUgcmVzb2x1dGlvbgorICAgICAgICAgZGVsYXlzLCBpdCBub3cgYWx3YXlzIHJldHVybnMgdGhlIElQIGFkZHJlc3MuCiAKIAogLi4gY2xhc3M6OiBTaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MsIHNlcnZlcikKQEAgLTI5OSw3ICszMjIsNyBAQAogICAgICAgcmVzcG9uc2UgaWYgdGhlIDpmdW5jOmBsaXN0ZGlyYCBmYWlscy4KIAogICAgICAgSWYgdGhlIHJlcXVlc3Qgd2FzIG1hcHBlZCB0byBhIGZpbGUsIGl0IGlzIG9wZW5lZCBhbmQgdGhlIGNvbnRlbnRzIGFyZQotICAgICAgcmV0dXJuZWQuICBBbnkgOmV4YzpgSU9FcnJvcmAgZXhjZXB0aW9uIGluIG9wZW5pbmcgdGhlIHJlcXVlc3RlZCBmaWxlIGlzCisgICAgICByZXR1cm5lZC4gIEFueSA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gaW4gb3BlbmluZyB0aGUgcmVxdWVzdGVkIGZpbGUgaXMKICAgICAgIG1hcHBlZCB0byBhIGBgNDA0YGAsIGBgJ0ZpbGUgbm90IGZvdW5kJ2BgIGVycm9yLiBPdGhlcndpc2UsIHRoZSBjb250ZW50CiAgICAgICB0eXBlIGlzIGd1ZXNzZWQgYnkgY2FsbGluZyB0aGUgOm1ldGg6YGd1ZXNzX3R5cGVgIG1ldGhvZCwgd2hpY2ggaW4gdHVybgogICAgICAgdXNlcyB0aGUgKmV4dGVuc2lvbnNfbWFwKiB2YXJpYWJsZS4KQEAgLTM3OCwzICs0MDEsOSBAQAogCiAgICBOb3RlIHRoYXQgQ0dJIHNjcmlwdHMgd2lsbCBiZSBydW4gd2l0aCBVSUQgb2YgdXNlciBub2JvZHksIGZvciBzZWN1cml0eQogICAgcmVhc29ucy4gIFByb2JsZW1zIHdpdGggdGhlIENHSSBzY3JpcHQgd2lsbCBiZSB0cmFuc2xhdGVkIHRvIGVycm9yIDQwMy4KKworOmNsYXNzOmBDR0lIVFRQUmVxdWVzdEhhbmRsZXJgIGNhbiBiZSBlbmFibGVkIGluIHRoZSBjb21tYW5kIGxpbmUgYnkgcGFzc2luZwordGhlIGBgLS1jZ2lgYCBvcHRpb24uOjoKKworICAgICAgICBweXRob24gLW0gaHR0cC5zZXJ2ZXIgLS1jZ2kgODAwMAorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdCBiL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CmluZGV4IGRhNmNjOGMuLjU5YTYxZGEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CkBAIC02NCwxNCArNjQsMjEgQEAKIFRoZXJlJ3MgYWxzbyBhIHN1YmNsYXNzIGZvciBzZWN1cmUgY29ubmVjdGlvbnM6CiAKIAotLi4gY2xhc3M6OiBJTUFQNF9TU0woaG9zdD0nJywgcG9ydD1JTUFQNF9TU0xfUE9SVCwga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lKQorLi4gY2xhc3M6OiBJTUFQNF9TU0woaG9zdD0nJywgcG9ydD1JTUFQNF9TU0xfUE9SVCwga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLCBzc2xfY29udGV4dD1Ob25lKQogCiAgICBUaGlzIGlzIGEgc3ViY2xhc3MgZGVyaXZlZCBmcm9tIDpjbGFzczpgSU1BUDRgIHRoYXQgY29ubmVjdHMgb3ZlciBhbiBTU0wKICAgIGVuY3J5cHRlZCBzb2NrZXQgKHRvIHVzZSB0aGlzIGNsYXNzIHlvdSBuZWVkIGEgc29ja2V0IG1vZHVsZSB0aGF0IHdhcyBjb21waWxlZAogICAgd2l0aCBTU0wgc3VwcG9ydCkuICBJZiAqaG9zdCogaXMgbm90IHNwZWNpZmllZCwgYGAnJ2BgICh0aGUgbG9jYWwgaG9zdCkgaXMgdXNlZC4KICAgIElmICpwb3J0KiBpcyBvbWl0dGVkLCB0aGUgc3RhbmRhcmQgSU1BUDQtb3Zlci1TU0wgcG9ydCAoOTkzKSBpcyB1c2VkLiAgKmtleWZpbGUqCiAgICBhbmQgKmNlcnRmaWxlKiBhcmUgYWxzbyBvcHRpb25hbCAtIHRoZXkgY2FuIGNvbnRhaW4gYSBQRU0gZm9ybWF0dGVkIHByaXZhdGUga2V5Ci0gICBhbmQgY2VydGlmaWNhdGUgY2hhaW4gZmlsZSBmb3IgdGhlIFNTTCBjb25uZWN0aW9uLgorICAgYW5kIGNlcnRpZmljYXRlIGNoYWluIGZpbGUgZm9yIHRoZSBTU0wgY29ubmVjdGlvbi4gKnNzbF9jb250ZXh0KiBwYXJhbWV0ZXIgaXMgYQorICAgOmNsYXNzOmBzc2wuU1NMQ29udGV4dGAgb2JqZWN0IHdoaWNoIGFsbG93cyBidW5kbGluZyBTU0wgY29uZmlndXJhdGlvbgorICAgb3B0aW9ucywgY2VydGlmaWNhdGVzIGFuZCBwcml2YXRlIGtleXMgaW50byBhIHNpbmdsZSAocG90ZW50aWFsbHkgbG9uZy1saXZlZCkKKyAgIHN0cnVjdHVyZS4gTm90ZSB0aGF0IHRoZSAqa2V5ZmlsZSovKmNlcnRmaWxlKiBwYXJhbWV0ZXJzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCAqc3NsX2NvbnRleHQqLAorICAgYSA6Y2xhc3M6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqa2V5ZmlsZSovKmNlcnRmaWxlKiBpcyBwcm92aWRlZCBhbG9uZyB3aXRoICpzc2xfY29udGV4dCouCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqc3NsX2NvbnRleHQqIHBhcmFtZXRlciBhZGRlZC4KIAogCiBUaGUgc2Vjb25kIHN1YmNsYXNzIGFsbG93cyBmb3IgY29ubmVjdGlvbnMgY3JlYXRlZCBieSBhIGNoaWxkIHByb2Nlc3M6CkBAIC0xMDYsMTMgKzExMywxNSBAQAogCiAuLiBmdW5jdGlvbjo6IFRpbWUySW50ZXJuYWxkYXRlKGRhdGVfdGltZSkKIAotICAgQ29udmVydCAqZGF0ZV90aW1lKiB0byBhbiBJTUFQNCBgYElOVEVSTkFMREFURWBgIHJlcHJlc2VudGF0aW9uLiAgVGhlCi0gICByZXR1cm4gdmFsdWUgaXMgYSBzdHJpbmcgaW4gdGhlIGZvcm06IGBgIkRELU1tbS1ZWVlZIEhIOk1NOlNTCi0gICArSEhNTSJgYCAoaW5jbHVkaW5nIGRvdWJsZS1xdW90ZXMpLiAgVGhlICpkYXRlX3RpbWUqIGFyZ3VtZW50IGNhbiBiZSBhCi0gICBudW1iZXIgKGludCBvciBmbG9hdCkgcmVwcmVzZW50aW5nIHNlY29uZHMgc2luY2UgZXBvY2ggKGFzIHJldHVybmVkCi0gICBieSA6ZnVuYzpgdGltZS50aW1lYCksIGEgOS10dXBsZSByZXByZXNlbnRpbmcgbG9jYWwgdGltZSAoYXMgcmV0dXJuZWQgYnkKLSAgIDpmdW5jOmB0aW1lLmxvY2FsdGltZWApLCBvciBhIGRvdWJsZS1xdW90ZWQgc3RyaW5nLiAgSW4gdGhlIGxhc3QgY2FzZSwgaXQKLSAgIGlzIGFzc3VtZWQgdG8gYWxyZWFkeSBiZSBpbiB0aGUgY29ycmVjdCBmb3JtYXQuCisgICBDb252ZXJ0ICpkYXRlX3RpbWUqIHRvIGFuIElNQVA0IGBgSU5URVJOQUxEQVRFYGAgcmVwcmVzZW50YXRpb24uCisgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgc3RyaW5nIGluIHRoZSBmb3JtOiBgYCJERC1NbW0tWVlZWSBISDpNTTpTUworICAgK0hITU0iYGAgKGluY2x1ZGluZyBkb3VibGUtcXVvdGVzKS4gIFRoZSAqZGF0ZV90aW1lKiBhcmd1bWVudCBjYW4KKyAgIGJlIGEgbnVtYmVyIChpbnQgb3IgZmxvYXQpIHJlcHJlc2VudGluZyBzZWNvbmRzIHNpbmNlIGVwb2NoIChhcworICAgcmV0dXJuZWQgYnkgOmZ1bmM6YHRpbWUudGltZWApLCBhIDktdHVwbGUgcmVwcmVzZW50aW5nIGxvY2FsIHRpbWUKKyAgIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgdGltZS5zdHJ1Y3RfdGltZWAgKGFzIHJldHVybmVkIGJ5CisgICA6ZnVuYzpgdGltZS5sb2NhbHRpbWVgKSwgYW4gYXdhcmUgaW5zdGFuY2Ugb2YKKyAgIDpjbGFzczpgZGF0ZXRpbWUuZGF0ZXRpbWVgLCBvciBhIGRvdWJsZS1xdW90ZWQgc3RyaW5nLiAgSW4gdGhlIGxhc3QKKyAgIGNhc2UsIGl0IGlzIGFzc3VtZWQgdG8gYWxyZWFkeSBiZSBpbiB0aGUgY29ycmVjdCBmb3JtYXQuCiAKIE5vdGUgdGhhdCBJTUFQNCBtZXNzYWdlIG51bWJlcnMgY2hhbmdlIGFzIHRoZSBtYWlsYm94IGNoYW5nZXM7IGluIHBhcnRpY3VsYXIsCiBhZnRlciBhbiBgYEVYUFVOR0VgYCBjb21tYW5kIHBlcmZvcm1zIGRlbGV0aW9ucyB0aGUgcmVtYWluaW5nIG1lc3NhZ2VzIGFyZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1wLnJzdCBiL0RvYy9saWJyYXJ5L2ltcC5yc3QKaW5kZXggMTM0NWIyNS4uNjBkMDEwNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1wLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbXAucnN0CkBAIC0zMCw2ICszMCw5IEBACiAgICA6Y29uc3Q6YFBZX1NPVVJDRWAsIDpjb25zdDpgUFlfQ09NUElMRURgLCBvciA6Y29uc3Q6YENfRVhURU5TSU9OYCwgZGVzY3JpYmVkCiAgICBiZWxvdy4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVXNlIHRoZSBjb25zdGFudHMgZGVmaW5lZCBvbiA6bW9kOmBpbXBvcnRsaWIubWFjaGluZXJ5YCBpbnN0ZWFkLgorCiAKIC4uIGZ1bmN0aW9uOjogZmluZF9tb2R1bGUobmFtZVssIHBhdGhdKQogCkBAIC02OSw2ICs3Miw5IEBACiAgICB0aGVuIHVzZSA6ZnVuYzpgZmluZF9tb2R1bGVgIHdpdGggdGhlICpwYXRoKiBhcmd1bWVudCBzZXQgdG8gYGBQLl9fcGF0aF9fYGAuCiAgICBXaGVuICpQKiBpdHNlbGYgaGFzIGEgZG90dGVkIG5hbWUsIGFwcGx5IHRoaXMgcmVjaXBlIHJlY3Vyc2l2ZWx5LgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBVc2UgOmZ1bmM6YGltcG9ydGxpYi5maW5kX2xvYWRlcmAgaW5zdGVhZC4KKwogCiAuLiBmdW5jdGlvbjo6IGxvYWRfbW9kdWxlKG5hbWUsIGZpbGUsIHBhdGhuYW1lLCBkZXNjcmlwdGlvbikKIApAQCAtOTAsNiArOTYsMTAgQEAKICAgIGl0IHdhcyBub3QgYGBOb25lYGAsIGV2ZW4gd2hlbiBhbiBleGNlcHRpb24gaXMgcmFpc2VkLiAgVGhpcyBpcyBiZXN0IGRvbmUKICAgIHVzaW5nIGEgOmtleXdvcmQ6YHRyeWAgLi4uIDprZXl3b3JkOmBmaW5hbGx5YCBzdGF0ZW1lbnQuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFVubmVlZGVkIGFzIGxvYWRlcnMgc2hvdWxkIGJlIHVzZWQgdG8gbG9hZCBtb2R1bGVzIGFuZAorICAgICAgOmZ1bmM6YGZpbmRfbW9kdWxlYCBpcyBkZXByZWNhdGVkLgorCiAKIC4uIGZ1bmN0aW9uOjogbmV3X21vZHVsZShuYW1lKQogCkBAIC05NywzNyArMTA3LDYgQEAKICAgIGluIGBgc3lzLm1vZHVsZXNgYC4KIAogCi0uLiBmdW5jdGlvbjo6IGxvY2tfaGVsZCgpCi0KLSAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgaW1wb3J0IGxvY2sgaXMgY3VycmVudGx5IGhlbGQsIGVsc2UgYGBGYWxzZWBgLiBPbgotICAgcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgYWx3YXlzIHJldHVybiBgYEZhbHNlYGAuCi0KLSAgIE9uIHBsYXRmb3JtcyB3aXRoIHRocmVhZHMsIGEgdGhyZWFkIGV4ZWN1dGluZyBhbiBpbXBvcnQgaG9sZHMgYW4gaW50ZXJuYWwgbG9jawotICAgdW50aWwgdGhlIGltcG9ydCBpcyBjb21wbGV0ZS4gVGhpcyBsb2NrIGJsb2NrcyBvdGhlciB0aHJlYWRzIGZyb20gZG9pbmcgYW4KLSAgIGltcG9ydCB1bnRpbCB0aGUgb3JpZ2luYWwgaW1wb3J0IGNvbXBsZXRlcywgd2hpY2ggaW4gdHVybiBwcmV2ZW50cyBvdGhlciB0aHJlYWRzCi0gICBmcm9tIHNlZWluZyBpbmNvbXBsZXRlIG1vZHVsZSBvYmplY3RzIGNvbnN0cnVjdGVkIGJ5IHRoZSBvcmlnaW5hbCB0aHJlYWQgd2hpbGUKLSAgIGluIHRoZSBwcm9jZXNzIG9mIGNvbXBsZXRpbmcgaXRzIGltcG9ydCAoYW5kIHRoZSBpbXBvcnRzLCBpZiBhbnksIHRyaWdnZXJlZCBieQotICAgdGhhdCkuCi0KLQotLi4gZnVuY3Rpb246OiBhY3F1aXJlX2xvY2soKQotCi0gICBBY3F1aXJlIHRoZSBpbnRlcnByZXRlcidzIGltcG9ydCBsb2NrIGZvciB0aGUgY3VycmVudCB0aHJlYWQuICBUaGlzIGxvY2sgc2hvdWxkCi0gICBiZSB1c2VkIGJ5IGltcG9ydCBob29rcyB0byBlbnN1cmUgdGhyZWFkLXNhZmV0eSB3aGVuIGltcG9ydGluZyBtb2R1bGVzLgotCi0gICBPbmNlIGEgdGhyZWFkIGhhcyBhY3F1aXJlZCB0aGUgaW1wb3J0IGxvY2ssIHRoZSBzYW1lIHRocmVhZCBtYXkgYWNxdWlyZSBpdAotICAgYWdhaW4gd2l0aG91dCBibG9ja2luZzsgdGhlIHRocmVhZCBtdXN0IHJlbGVhc2UgaXQgb25jZSBmb3IgZWFjaCB0aW1lIGl0IGhhcwotICAgYWNxdWlyZWQgaXQuCi0KLSAgIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgotCi0KLS4uIGZ1bmN0aW9uOjogcmVsZWFzZV9sb2NrKCkKLQotICAgUmVsZWFzZSB0aGUgaW50ZXJwcmV0ZXIncyBpbXBvcnQgbG9jay4gT24gcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgdGhpcwotICAgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgotCi0KIC4uIGZ1bmN0aW9uOjogcmVsb2FkKG1vZHVsZSkKIAogICAgUmVsb2FkIGEgcHJldmlvdXNseSBpbXBvcnRlZCAqbW9kdWxlKi4gIFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgbW9kdWxlIG9iamVjdCwgc28KQEAgLTIwMSwxNCArMTgwLDE5IEBACiAgICBzb3VyY2UgKnBhdGgqLiAgRm9yIGV4YW1wbGUsIGlmICpwYXRoKiBpcyBgYC9mb28vYmFyL2Jhei5weWBgIHRoZSByZXR1cm4KICAgIHZhbHVlIHdvdWxkIGJlIGBgL2Zvby9iYXIvX19weWNhY2hlX18vYmF6LmNweXRob24tMzIucHljYGAgZm9yIFB5dGhvbiAzLjIuCiAgICBUaGUgYGBjcHl0aG9uLTMyYGAgc3RyaW5nIGNvbWVzIGZyb20gdGhlIGN1cnJlbnQgbWFnaWMgdGFnIChzZWUKLSAgIDpmdW5jOmBnZXRfdGFnYCkuICBUaGUgcmV0dXJuZWQgcGF0aCB3aWxsIGVuZCBpbiBgYC5weWNgYCB3aGVuCi0gICBgYF9fZGVidWdfX2BgIGlzIFRydWUgb3IgYGAucHlvYGAgZm9yIGFuIG9wdGltaXplZCBQeXRob24KKyAgIDpmdW5jOmBnZXRfdGFnYDsgaWYgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIG5vdCBkZWZpbmVkIHRoZW4KKyAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHdpbGwgYmUgcmFpc2VkKS4gIFRoZSByZXR1cm5lZCBwYXRoIHdpbGwgZW5kIGluCisgICBgYC5weWNgYCB3aGVuIGBgX19kZWJ1Z19fYGAgaXMgVHJ1ZSBvciBgYC5weW9gYCBmb3IgYW4gb3B0aW1pemVkIFB5dGhvbgogICAgKGkuZS4gYGBfX2RlYnVnX19gYCBpcyBGYWxzZSkuICBCeSBwYXNzaW5nIGluIFRydWUgb3IgRmFsc2UgZm9yCiAgICAqZGVidWdfb3ZlcnJpZGUqIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIHN5c3RlbSdzIHZhbHVlIGZvciBgYF9fZGVidWdfX2BgIGZvcgogICAgZXh0ZW5zaW9uIHNlbGVjdGlvbi4KIAogICAgKnBhdGgqIG5lZWQgbm90IGV4aXN0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgSWYgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIGBgTm9uZWBgLCB0aGVuCisgICAgICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBpcyByYWlzZWQuCisKIAogLi4gZnVuY3Rpb246OiBzb3VyY2VfZnJvbV9jYWNoZShwYXRoKQogCkBAIC0yMTYsNyArMjAwLDEzIEBACiAgICBmaWxlIHBhdGguICBGb3IgZXhhbXBsZSwgaWYgKnBhdGgqIGlzCiAgICBgYC9mb28vYmFyL19fcHljYWNoZV9fL2Jhei5jcHl0aG9uLTMyLnB5Y2BgIHRoZSByZXR1cm5lZCBwYXRoIHdvdWxkIGJlCiAgICBgYC9mb28vYmFyL2Jhei5weWBgLiAgKnBhdGgqIG5lZWQgbm90IGV4aXN0LCBob3dldmVyIGlmIGl0IGRvZXMgbm90IGNvbmZvcm0KLSAgIHRvIDpwZXA6YDMxNDdgIGZvcm1hdCwgYSBgYFZhbHVlRXJyb3JgYCBpcyByYWlzZWQuCisgICB0byA6cGVwOmAzMTQ3YCBmb3JtYXQsIGEgYGBWYWx1ZUVycm9yYGAgaXMgcmFpc2VkLiBJZgorICAgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIG5vdCBkZWZpbmVkLAorICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgaXMgcmFpc2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmFpc2UgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgd2hlbgorICAgICAgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIG5vdCBkZWZpbmVkLgogCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X3RhZygpCkBAIC0yMjQsNiArMjE0LDY0IEBACiAgICBSZXR1cm4gdGhlIDpwZXA6YDMxNDdgIG1hZ2ljIHRhZyBzdHJpbmcgbWF0Y2hpbmcgdGhpcyB2ZXJzaW9uIG9mIFB5dGhvbidzCiAgICBtYWdpYyBudW1iZXIsIGFzIHJldHVybmVkIGJ5IDpmdW5jOmBnZXRfbWFnaWNgLgogCisgICAuLiBub3RlOjoKKyAgICAgIFlvdSBtYXkgdXNlIDphdHRyOmBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBkaXJlY3RseSBzdGFydGluZworICAgICAgaW4gUHl0aG9uIDMuMy4KKworCitUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBoZWxwIGludGVyYWN0IHdpdGggdGhlIGltcG9ydCBzeXN0ZW0ncyBpbnRlcm5hbAorbG9ja2luZyBtZWNoYW5pc20uICBMb2NraW5nIHNlbWFudGljcyBvZiBpbXBvcnRzIGFyZSBhbiBpbXBsZW1lbnRhdGlvbgorZGV0YWlsIHdoaWNoIG1heSB2YXJ5IGZyb20gcmVsZWFzZSB0byByZWxlYXNlLiAgSG93ZXZlciwgUHl0aG9uIGVuc3VyZXMKK3RoYXQgY2lyY3VsYXIgaW1wb3J0cyB3b3JrIHdpdGhvdXQgYW55IGRlYWRsb2Nrcy4KKworCisuLiBmdW5jdGlvbjo6IGxvY2tfaGVsZCgpCisKKyAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgZ2xvYmFsIGltcG9ydCBsb2NrIGlzIGN1cnJlbnRseSBoZWxkLCBlbHNlCisgICBgYEZhbHNlYGAuIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIGFsd2F5cyByZXR1cm4gYGBGYWxzZWBgLgorCisgICBPbiBwbGF0Zm9ybXMgd2l0aCB0aHJlYWRzLCBhIHRocmVhZCBleGVjdXRpbmcgYW4gaW1wb3J0IGZpcnN0IGhvbGRzIGEKKyAgIGdsb2JhbCBpbXBvcnQgbG9jaywgdGhlbiBzZXRzIHVwIGEgcGVyLW1vZHVsZSBsb2NrIGZvciB0aGUgcmVzdCBvZiB0aGUKKyAgIGltcG9ydC4gIFRoaXMgYmxvY2tzIG90aGVyIHRocmVhZHMgZnJvbSBpbXBvcnRpbmcgdGhlIHNhbWUgbW9kdWxlIHVudGlsCisgICB0aGUgb3JpZ2luYWwgaW1wb3J0IGNvbXBsZXRlcywgcHJldmVudGluZyBvdGhlciB0aHJlYWRzIGZyb20gc2VlaW5nCisgICBpbmNvbXBsZXRlIG1vZHVsZSBvYmplY3RzIGNvbnN0cnVjdGVkIGJ5IHRoZSBvcmlnaW5hbCB0aHJlYWQuICBBbgorICAgZXhjZXB0aW9uIGlzIG1hZGUgZm9yIGNpcmN1bGFyIGltcG9ydHMsIHdoaWNoIGJ5IGNvbnN0cnVjdGlvbiBoYXZlIHRvCisgICBleHBvc2UgYW4gaW5jb21wbGV0ZSBtb2R1bGUgb2JqZWN0IGF0IHNvbWUgcG9pbnQuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBUaGUgbG9ja2luZyBzY2hlbWUgaGFzIGNoYW5nZWQgdG8gcGVyLW1vZHVsZSBsb2NrcyBmb3IKKyAgIHRoZSBtb3N0IHBhcnQuICBBIGdsb2JhbCBpbXBvcnQgbG9jayBpcyBrZXB0IGZvciBzb21lIGNyaXRpY2FsIHRhc2tzLAorICAgc3VjaCBhcyBpbml0aWFsaXppbmcgdGhlIHBlci1tb2R1bGUgbG9ja3MuCisKKworLi4gZnVuY3Rpb246OiBhY3F1aXJlX2xvY2soKQorCisgICBBY3F1aXJlIHRoZSBpbnRlcnByZXRlcidzIGdsb2JhbCBpbXBvcnQgbG9jayBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkLgorICAgVGhpcyBsb2NrIHNob3VsZCBiZSB1c2VkIGJ5IGltcG9ydCBob29rcyB0byBlbnN1cmUgdGhyZWFkLXNhZmV0eSB3aGVuCisgICBpbXBvcnRpbmcgbW9kdWxlcy4KKworICAgT25jZSBhIHRocmVhZCBoYXMgYWNxdWlyZWQgdGhlIGltcG9ydCBsb2NrLCB0aGUgc2FtZSB0aHJlYWQgbWF5IGFjcXVpcmUgaXQKKyAgIGFnYWluIHdpdGhvdXQgYmxvY2tpbmc7IHRoZSB0aHJlYWQgbXVzdCByZWxlYXNlIGl0IG9uY2UgZm9yIGVhY2ggdGltZSBpdCBoYXMKKyAgIGFjcXVpcmVkIGl0LgorCisgICBPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFRoZSBsb2NraW5nIHNjaGVtZSBoYXMgY2hhbmdlZCB0byBwZXItbW9kdWxlIGxvY2tzIGZvcgorICAgdGhlIG1vc3QgcGFydC4gIEEgZ2xvYmFsIGltcG9ydCBsb2NrIGlzIGtlcHQgZm9yIHNvbWUgY3JpdGljYWwgdGFza3MsCisgICBzdWNoIGFzIGluaXRpYWxpemluZyB0aGUgcGVyLW1vZHVsZSBsb2Nrcy4KKworCisuLiBmdW5jdGlvbjo6IHJlbGVhc2VfbG9jaygpCisKKyAgIFJlbGVhc2UgdGhlIGludGVycHJldGVyJ3MgZ2xvYmFsIGltcG9ydCBsb2NrLiBPbiBwbGF0Zm9ybXMgd2l0aG91dAorICAgdGhyZWFkcywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBUaGUgbG9ja2luZyBzY2hlbWUgaGFzIGNoYW5nZWQgdG8gcGVyLW1vZHVsZSBsb2NrcyBmb3IKKyAgIHRoZSBtb3N0IHBhcnQuICBBIGdsb2JhbCBpbXBvcnQgbG9jayBpcyBrZXB0IGZvciBzb21lIGNyaXRpY2FsIHRhc2tzLAorICAgc3VjaCBhcyBpbml0aWFsaXppbmcgdGhlIHBlci1tb2R1bGUgbG9ja3MuCisKIAogVGhlIGZvbGxvd2luZyBjb25zdGFudHMgd2l0aCBpbnRlZ2VyIHZhbHVlcywgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZSwgYXJlIHVzZWQKIHRvIGluZGljYXRlIHRoZSBzZWFyY2ggcmVzdWx0IG9mIDpmdW5jOmBmaW5kX21vZHVsZWAuCkBAIC0yMzMsMzEgKzI4MSw0MyBAQAogCiAgICBUaGUgbW9kdWxlIHdhcyBmb3VuZCBhcyBhIHNvdXJjZSBmaWxlLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKIAogLi4gZGF0YTo6IFBZX0NPTVBJTEVECiAKICAgIFRoZSBtb2R1bGUgd2FzIGZvdW5kIGFzIGEgY29tcGlsZWQgY29kZSBvYmplY3QgZmlsZS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCiAKIC4uIGRhdGE6OiBDX0VYVEVOU0lPTgogCiAgICBUaGUgbW9kdWxlIHdhcyBmb3VuZCBhcyBkeW5hbWljYWxseSBsb2FkYWJsZSBzaGFyZWQgbGlicmFyeS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCiAKIC4uIGRhdGE6OiBQS0dfRElSRUNUT1JZCiAKICAgIFRoZSBtb2R1bGUgd2FzIGZvdW5kIGFzIGEgcGFja2FnZSBkaXJlY3RvcnkuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKwogCiAuLiBkYXRhOjogQ19CVUlMVElOCiAKICAgIFRoZSBtb2R1bGUgd2FzIGZvdW5kIGFzIGEgYnVpbHQtaW4gbW9kdWxlLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKIAogLi4gZGF0YTo6IFBZX0ZST1pFTgogCiAgICBUaGUgbW9kdWxlIHdhcyBmb3VuZCBhcyBhIGZyb3plbiBtb2R1bGUuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKwogCiAuLiBjbGFzczo6IE51bGxJbXBvcnRlcihwYXRoX3N0cmluZykKIApAQCAtMjY2LDE2ICszMjYsMTcgQEAKICAgIHdpdGggYW4gZXhpc3RpbmcgZGlyZWN0b3J5IG9yIGVtcHR5IHN0cmluZyByYWlzZXMgOmV4YzpgSW1wb3J0RXJyb3JgLgogICAgT3RoZXJ3aXNlLCBhIDpjbGFzczpgTnVsbEltcG9ydGVyYCBpbnN0YW5jZSBpcyByZXR1cm5lZC4KIAotICAgUHl0aG9uIGFkZHMgaW5zdGFuY2VzIG9mIHRoaXMgdHlwZSB0byBgYHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYGAgZm9yIGFueSBwYXRoCi0gICBlbnRyaWVzIHRoYXQgYXJlIG5vdCBkaXJlY3RvcmllcyBhbmQgYXJlIG5vdCBoYW5kbGVkIGJ5IGFueSBvdGhlciBwYXRoIGhvb2tzIG9uCi0gICBgYHN5cy5wYXRoX2hvb2tzYGAuICBJbnN0YW5jZXMgaGF2ZSBvbmx5IG9uZSBtZXRob2Q6Ci0KKyAgIEluc3RhbmNlcyBoYXZlIG9ubHkgb25lIG1ldGhvZDoKIAogICAgLi4gbWV0aG9kOjogTnVsbEltcG9ydGVyLmZpbmRfbW9kdWxlKGZ1bGxuYW1lIFssIHBhdGhdKQogCiAgICAgICBUaGlzIG1ldGhvZCBhbHdheXMgcmV0dXJucyBgYE5vbmVgYCwgaW5kaWNhdGluZyB0aGF0IHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGNvdWxkCiAgICAgICBub3QgYmUgZm91bmQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBgYE5vbmVgYCBpcyBpbnNlcnRlZCBpbnRvIGBgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgYCBpbnN0ZWFkIG9mIGFuCisgICAgICBpbnN0YW5jZSBvZiA6Y2xhc3M6YE51bGxJbXBvcnRlcmAuCisKIAogLi4gX2V4YW1wbGVzLWltcDoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdCBiL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QKaW5kZXggMTY0OTA2My4uOTEyMDY3MSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0CkBAIC02Myw3ICs2Myw3IEBACiBGdW5jdGlvbnMKIC0tLS0tLS0tLQogCi0uLiBmdW5jdGlvbjo6IF9faW1wb3J0X18obmFtZSwgZ2xvYmFscz17fSwgbG9jYWxzPXt9LCBmcm9tbGlzdD1saXN0KCksIGxldmVsPTApCisuLiBmdW5jdGlvbjo6IF9faW1wb3J0X18obmFtZSwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSwgZnJvbWxpc3Q9KCksIGxldmVsPTApCiAKICAgICBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYnVpbHQtaW4gOmZ1bmM6YF9faW1wb3J0X19gIGZ1bmN0aW9uLgogCkBAIC04Niw2ICs4NiwyOSBAQAogICAgIHRoYXQgd2FzIGltcG9ydGVkIChlLmcuIGBgcGtnLm1vZGBgKSwgd2hpbGUgOmZ1bmM6YF9faW1wb3J0X19gIHJldHVybnMgdGhlCiAgICAgdG9wLWxldmVsIHBhY2thZ2Ugb3IgbW9kdWxlIChlLmcuIGBgcGtnYGApLgogCisuLiBmdW5jdGlvbjo6IGZpbmRfbG9hZGVyKG5hbWUsIHBhdGg9Tm9uZSkKKworICAgRmluZCB0aGUgbG9hZGVyIGZvciBhIG1vZHVsZSwgb3B0aW9uYWxseSB3aXRoaW4gdGhlIHNwZWNpZmllZCAqcGF0aCouIElmIHRoZQorICAgbW9kdWxlIGlzIGluIDphdHRyOmBzeXMubW9kdWxlc2AsIHRoZW4gYGBzeXMubW9kdWxlc1tuYW1lXS5fX2xvYWRlcl9fYGAgaXMKKyAgIHJldHVybmVkICh1bmxlc3MgdGhlIGxvYWRlciB3b3VsZCBiZSBgYE5vbmVgYCwgaW4gd2hpY2ggY2FzZQorICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkKS4gT3RoZXJ3aXNlIGEgc2VhcmNoIHVzaW5nIDphdHRyOmBzeXMubWV0YV9wYXRoYAorICAgaXMgZG9uZS4gYGBOb25lYGAgaXMgcmV0dXJuZWQgaWYgbm8gbG9hZGVyIGlzIGZvdW5kLgorCisgICBBIGRvdHRlZCBuYW1lIGRvZXMgbm90IGhhdmUgaXRzIHBhcmVudCdzIGltcGxpY2l0bHkgaW1wb3J0ZWQgYXMgdGhhdCByZXF1aXJlcworICAgbG9hZGluZyB0aGVtIGFuZCB0aGF0IG1heSBub3QgYmUgZGVzaXJlZC4gVG8gcHJvcGVybHkgaW1wb3J0IGEgc3VibW9kdWxlIHlvdQorICAgd2lsbCBuZWVkIHRvIGltcG9ydCBhbGwgcGFyZW50IHBhY2thZ2VzIG9mIHRoZSBzdWJtb2R1bGUgYW5kIHVzZSB0aGUgY29ycmVjdAorICAgYXJndW1lbnQgdG8gKnBhdGgqLgorCisuLiBmdW5jdGlvbjo6IGludmFsaWRhdGVfY2FjaGVzKCkKKworICAgSW52YWxpZGF0ZSB0aGUgaW50ZXJuYWwgY2FjaGVzIG9mIGZpbmRlcnMgc3RvcmVkIGF0CisgICA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAuIElmIGEgZmluZGVyIGltcGxlbWVudHMgYGBpbnZhbGlkYXRlX2NhY2hlcygpYGAgdGhlbiBpdAorICAgd2lsbCBiZSBjYWxsZWQgdG8gcGVyZm9ybSB0aGUgaW52YWxpZGF0aW9uLiAgVGhpcyBmdW5jdGlvbiBtYXkgYmUgbmVlZGVkIGlmCisgICBzb21lIG1vZHVsZXMgYXJlIGluc3RhbGxlZCB3aGlsZSB5b3VyIHByb2dyYW0gaXMgcnVubmluZyBhbmQgeW91IGV4cGVjdCB0aGUKKyAgIHByb2dyYW0gdG8gbm90aWNlIHRoZSBjaGFuZ2VzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiA6bW9kOmBpbXBvcnRsaWIuYWJjYCAtLSBBYnN0cmFjdCBiYXNlIGNsYXNzZXMgcmVsYXRlZCB0byBpbXBvcnQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtOTcsMTkgKzEyMCw5MCBAQAogdXNlZCBieSA6a2V5d29yZDpgaW1wb3J0YC4gU29tZSBzdWJjbGFzc2VzIG9mIHRoZSBjb3JlIGFic3RyYWN0IGJhc2UgY2xhc3NlcwogYXJlIGFsc28gcHJvdmlkZWQgdG8gaGVscCBpbiBpbXBsZW1lbnRpbmcgdGhlIGNvcmUgQUJDcy4KIAorQUJDIGhpZXJhcmNoeTo6CisKKyAgICBvYmplY3QKKyAgICAgKy0tIEZpbmRlciAoZGVwcmVjYXRlZCkKKyAgICAgfCAgICArLS0gTWV0YVBhdGhGaW5kZXIKKyAgICAgfCAgICArLS0gUGF0aEVudHJ5RmluZGVyCisgICAgICstLSBMb2FkZXIKKyAgICAgICAgICArLS0gUmVzb3VyY2VMb2FkZXIgLS0tLS0tLS0rCisgICAgICAgICAgKy0tIEluc3BlY3RMb2FkZXIgICAgICAgICAgfAorICAgICAgICAgICAgICAgKy0tIEV4ZWN1dGlvbkxvYWRlciAtLSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0gRmlsZUxvYWRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLSBTb3VyY2VMb2FkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLSBQeUxvYWRlciAoZGVwcmVjYXRlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLSBQeVB5Y0xvYWRlciAoZGVwcmVjYXRlZCkKKwogCiAuLiBjbGFzczo6IEZpbmRlcgogCi0gICAgQW4gYWJzdHJhY3QgYmFzZSBjbGFzcyByZXByZXNlbnRpbmcgYSA6dGVybTpgZmluZGVyYC4KLSAgICBTZWUgOnBlcDpgMzAyYCBmb3IgdGhlIGV4YWN0IGRlZmluaXRpb24gZm9yIGEgZmluZGVyLgorICAgQW4gYWJzdHJhY3QgYmFzZSBjbGFzcyByZXByZXNlbnRpbmcgYSA6dGVybTpgZmluZGVyYC4KIAotICAgIC4uIG1ldGhvZDo6IGZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoPU5vbmUpCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBVc2UgOmNsYXNzOmBNZXRhUGF0aEZpbmRlcmAgb3IgOmNsYXNzOmBQYXRoRW50cnlGaW5kZXJgIGluc3RlYWQuCiAKLSAgICAgICAgQW4gYWJzdHJhY3QgbWV0aG9kIGZvciBmaW5kaW5nIGEgOnRlcm06YGxvYWRlcmAgZm9yIHRoZSBzcGVjaWZpZWQKLSAgICAgICAgbW9kdWxlLiBJZiB0aGUgOnRlcm06YGZpbmRlcmAgaXMgZm91bmQgb24gOmRhdGE6YHN5cy5tZXRhX3BhdGhgIGFuZCB0aGUKLSAgICAgICAgbW9kdWxlIHRvIGJlIHNlYXJjaGVkIGZvciBpcyBhIHN1YnBhY2thZ2Ugb3IgbW9kdWxlIHRoZW4gKnBhdGgqIHdpbGwKLSAgICAgICAgYmUgdGhlIHZhbHVlIG9mIDphdHRyOmBfX3BhdGhfX2AgZnJvbSB0aGUgcGFyZW50IHBhY2thZ2UuIElmIGEgbG9hZGVyCi0gICAgICAgIGNhbm5vdCBiZSBmb3VuZCwgYGBOb25lYGAgaXMgcmV0dXJuZWQuCisgICAuLiBtZXRob2Q6OiBmaW5kX21vZHVsZShmdWxsbmFtZSwgcGF0aD1Ob25lKQorCisgICAgICBBbiBhYnN0YWN0IG1ldGhvZCBmb3IgZmluZGluZyBhIDp0ZXJtOmBsb2FkZXJgIGZvciB0aGUgc3BlY2lmaWVkCisgICAgICBtb2R1bGUuICBPcmlnaW5hbGx5IHNwZWNpZmllZCBpbiA6cGVwOmAzMDJgLCB0aGlzIG1ldGhvZCB3YXMgbWVhbnQKKyAgICAgIGZvciB1c2UgaW4gOmRhdGE6YHN5cy5tZXRhX3BhdGhgIGFuZCBpbiB0aGUgcGF0aC1iYXNlZCBpbXBvcnQgc3Vic3lzdGVtLgorCisKKy4uIGNsYXNzOjogTWV0YVBhdGhGaW5kZXIKKworICAgQW4gYWJzdHJhY3QgYmFzZSBjbGFzcyByZXByZXNlbnRpbmcgYSA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcmAuIEZvcgorICAgY29tcGF0aWJpbGl0eSwgdGhpcyBpcyBhIHN1YmNsYXNzIG9mIDpjbGFzczpgRmluZGVyYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIG1ldGhvZDo6IGZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoKQorCisgICAgICBBbiBhYnN0cmFjdCBtZXRob2QgZm9yIGZpbmRpbmcgYSA6dGVybTpgbG9hZGVyYCBmb3IgdGhlIHNwZWNpZmllZAorICAgICAgbW9kdWxlLiAgSWYgdGhpcyBpcyBhIHRvcC1sZXZlbCBpbXBvcnQsICpwYXRoKiB3aWxsIGJlIGBgTm9uZWBgLgorICAgICAgT3RoZXJ3aXNlLCB0aGlzIGlzIGEgc2VhcmNoIGZvciBhIHN1YnBhY2thZ2Ugb3IgbW9kdWxlIGFuZCAqcGF0aCoKKyAgICAgIHdpbGwgYmUgdGhlIHZhbHVlIG9mIDphdHRyOmBfX3BhdGhfX2AgZnJvbSB0aGUgcGFyZW50CisgICAgICBwYWNrYWdlLiBJZiBhIGxvYWRlciBjYW5ub3QgYmUgZm91bmQsIGBgTm9uZWBgIGlzIHJldHVybmVkLgorCisgICAuLiBtZXRob2Q6OiBpbnZhbGlkYXRlX2NhY2hlcygpCisKKyAgICAgIEFuIG9wdGlvbmFsIG1ldGhvZCB3aGljaCwgd2hlbiBjYWxsZWQsIHNob3VsZCBpbnZhbGlkYXRlIGFueSBpbnRlcm5hbAorICAgICAgY2FjaGUgdXNlZCBieSB0aGUgZmluZGVyLiBVc2VkIGJ5IDpmdW5jOmBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXNgCisgICAgICB3aGVuIGludmFsaWRhdGluZyB0aGUgY2FjaGVzIG9mIGFsbCBmaW5kZXJzIG9uIDpkYXRhOmBzeXMubWV0YV9wYXRoYC4KKworCisuLiBjbGFzczo6IFBhdGhFbnRyeUZpbmRlcgorCisgICBBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBhIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAuICBUaG91Z2gKKyAgIGl0IGJlYXJzIHNvbWUgc2ltaWxhcml0aWVzIHRvIDpjbGFzczpgTWV0YVBhdGhGaW5kZXJgLCBgYFBhdGhFbnRyeUZpbmRlcmBgCisgICBpcyBtZWFudCBmb3IgdXNlIG9ubHkgd2l0aGluIHRoZSBwYXRoLWJhc2VkIGltcG9ydCBzdWJzeXN0ZW0gcHJvdmlkZWQKKyAgIGJ5IDpjbGFzczpgUGF0aEZpbmRlcmAuIFRoaXMgQUJDIGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBGaW5kZXJgIGZvcgorICAgY29tcGF0aWJpbGl0eS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIG1ldGhvZDo6IGZpbmRfbG9hZGVyKGZ1bGxuYW1lKToKKworICAgICAgQW4gYWJzdHJhY3QgbWV0aG9kIGZvciBmaW5kaW5nIGEgOnRlcm06YGxvYWRlcmAgZm9yIHRoZSBzcGVjaWZpZWQKKyAgICAgIG1vZHVsZS4gIFJldHVybnMgYSAyLXR1cGxlIG9mIGBgKGxvYWRlciwgcG9ydGlvbilgYCB3aGVyZSBgYHBvcnRpb25gYAorICAgICAgaXMgYSBzZXF1ZW5jZSBvZiBmaWxlIHN5c3RlbSBsb2NhdGlvbnMgY29udHJpYnV0aW5nIHRvIHBhcnQgb2YgYSBuYW1lc3BhY2UKKyAgICAgIHBhY2thZ2UuIFRoZSBsb2FkZXIgbWF5IGJlIGBgTm9uZWBgIHdoaWxlIHNwZWNpZnlpbmcgYGBwb3J0aW9uYGAgdG8KKyAgICAgIHNpZ25pZnkgdGhlIGNvbnRyaWJ1dGlvbiBvZiB0aGUgZmlsZSBzeXN0ZW0gbG9jYXRpb25zIHRvIGEgbmFtZXNwYWNlCisgICAgICBwYWNrYWdlLiBBbiBlbXB0eSBsaXN0IGNhbiBiZSB1c2VkIGZvciBgYHBvcnRpb25gYCB0byBzaWduaWZ5IHRoZSBsb2FkZXIKKyAgICAgIGlzIG5vdCBwYXJ0IG9mIGEgcGFja2FnZS4gSWYgYGBsb2FkZXJgYCBpcyBgYE5vbmVgYCBhbmQgYGBwb3J0aW9uYGAgaXMKKyAgICAgIHRoZSBlbXB0eSBsaXN0IHRoZW4gbm8gbG9hZGVyIG9yIGxvY2F0aW9uIGZvciBhIG5hbWVzcGFjZSBwYWNrYWdlIHdlcmUKKyAgICAgIGZvdW5kIChpLmUuIGZhaWx1cmUgdG8gZmluZCBhbnl0aGluZyBmb3IgdGhlIG1vZHVsZSkuCisKKyAgIC4uIG1ldGhvZDo6IGZpbmRfbW9kdWxlKGZ1bGxuYW1lKToKKworICAgICAgQSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6bWV0aDpgRmluZGVyLmZpbmRfbW9kdWxlYCB3aGljaCBpcworICAgICAgZXF1aXZhbGVudCB0byBgYHNlbGYuZmluZF9sb2FkZXIoZnVsbG5hbWUpWzBdYGAuCisKKyAgIC4uIG1ldGhvZDo6IGludmFsaWRhdGVfY2FjaGVzKCkKKworICAgICAgQW4gb3B0aW9uYWwgbWV0aG9kIHdoaWNoLCB3aGVuIGNhbGxlZCwgc2hvdWxkIGludmFsaWRhdGUgYW55IGludGVybmFsCisgICAgICBjYWNoZSB1c2VkIGJ5IHRoZSBmaW5kZXIuIFVzZWQgYnkgOm1ldGg6YFBhdGhGaW5kZXIuaW52YWxpZGF0ZV9jYWNoZXNgCisgICAgICB3aGVuIGludmFsaWRhdGluZyB0aGUgY2FjaGVzIG9mIGFsbCBjYWNoZWQgZmluZGVycy4KIAogCiAuLiBjbGFzczo6IExvYWRlcgpAQCAtMTU5LDYgKzI1MywxMyBAQAogICAgICAgICAgICAgKFRoaXMgaXMgbm90IHNldCBieSB0aGUgYnVpbHQtaW4gaW1wb3J0IG1hY2hpbmVyeSwKICAgICAgICAgICAgIGJ1dCBpdCBzaG91bGQgYmUgc2V0IHdoZW5ldmVyIGEgOnRlcm06YGxvYWRlcmAgaXMgdXNlZC4pCiAKKyAgICAuLiBtZXRob2Q6OiBtb2R1bGVfcmVwcihtb2R1bGUpCisKKyAgICAgICAgQW4gYWJzdHJhY3QgbWV0aG9kIHdoaWNoIHdoZW4gaW1wbGVtZW50ZWQgY2FsY3VsYXRlcyBhbmQgcmV0dXJucyB0aGUKKyAgICAgICAgZ2l2ZW4gbW9kdWxlJ3MgcmVwciwgYXMgYSBzdHJpbmcuCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOiAzLjMKKwogCiAuLiBjbGFzczo6IFJlc291cmNlTG9hZGVyCiAKQEAgLTIyNCw2ICszMjUsMzggQEAKICAgICAgICAgbW9kdWxlLgogCiAKKy4uIGNsYXNzOjogRmlsZUxvYWRlcihmdWxsbmFtZSwgcGF0aCkKKworICAgQW4gYWJzdHJhY3QgYmFzZSBjbGFzcyB3aGljaCBpbmhlcml0cyBmcm9tIDpjbGFzczpgUmVzb3VyY2VMb2FkZXJgIGFuZAorICAgOmNsYXNzOmBFeGVjdXRpb25Mb2FkZXJgLCBwcm92aWRpbmcgY29uY3JldGUgaW1wbGVtZW50YXRpb25zIG9mCisgICA6bWV0aDpgUmVzb3VyY2VMb2FkZXIuZ2V0X2RhdGFgIGFuZCA6bWV0aDpgRXhlY3V0aW9uTG9hZGVyLmdldF9maWxlbmFtZWAuCisKKyAgIFRoZSAqZnVsbG5hbWUqIGFyZ3VtZW50IGlzIGEgZnVsbHkgcmVzb2x2ZWQgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBsb2FkZXIgaXMKKyAgIHRvIGhhbmRsZS4gVGhlICpwYXRoKiBhcmd1bWVudCBpcyB0aGUgcGF0aCB0byB0aGUgZmlsZSBmb3IgdGhlIG1vZHVsZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5hbWUKKworICAgICAgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbG9hZGVyIGNhbiBoYW5kbGUuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBhdGgKKworICAgICAgUGF0aCB0byB0aGUgZmlsZSBvZiB0aGUgbW9kdWxlLgorCisgICAuLiBtZXRob2Q6OiBsb2FkX21vZHVsZShmdWxsbmFtZSkKKworICAgICAgQ2FsbHMgc3VwZXIncyBgYGxvYWRfbW9kdWxlKClgYC4KKworICAgLi4gbWV0aG9kOjogZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQorCisgICAgICBSZXR1cm5zIDphdHRyOmBwYXRoYC4KKworICAgLi4gbWV0aG9kOjogZ2V0X2RhdGEocGF0aCkKKworICAgICAgUmV0dXJucyB0aGUgb3BlbiwgYmluYXJ5IGZpbGUgZm9yICpwYXRoKi4KKworCiAuLiBjbGFzczo6IFNvdXJjZUxvYWRlcgogCiAgICAgQW4gYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgaW1wbGVtZW50aW5nIHNvdXJjZSAoYW5kIG9wdGlvbmFsbHkgYnl0ZWNvZGUpCkBAIC0yNDMsMTIgKzM3NiwzMSBAQAogICAgIG9wdGltaXphdGlvbiB0byBzcGVlZCB1cCBsb2FkaW5nIGJ5IHJlbW92aW5nIHRoZSBwYXJzaW5nIHN0ZXAgb2YgUHl0aG9uJ3MKICAgICBjb21waWxlciwgYW5kIHNvIG5vIGJ5dGVjb2RlLXNwZWNpZmljIEFQSSBpcyBleHBvc2VkLgogCi0gICAgLi4gbWV0aG9kOjogcGF0aF9tdGltZShzZWxmLCBwYXRoKQorICAgIC4uIG1ldGhvZDo6IHBhdGhfc3RhdHMocGF0aCkKKworICAgICAgICBPcHRpb25hbCBhYnN0cmFjdCBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIDpjbGFzczpgZGljdGAgY29udGFpbmluZworICAgICAgICBtZXRhZGF0YSBhYm91dCB0aGUgc3BlY2lmZWQgcGF0aC4gIFN1cHBvcnRlZCBkaWN0aW9uYXJ5IGtleXMgYXJlOgorCisgICAgICAgIC0gYGAnbXRpbWUnYGAgKG1hbmRhdG9yeSk6IGFuIGludGVnZXIgb3IgZmxvYXRpbmctcG9pbnQgbnVtYmVyCisgICAgICAgICAgcmVwcmVzZW50aW5nIHRoZSBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgc291cmNlIGNvZGU7CisgICAgICAgIC0gYGAnc2l6ZSdgYCAob3B0aW9uYWwpOiB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgc291cmNlIGNvZGUuCisKKyAgICAgICAgQW55IG90aGVyIGtleXMgaW4gdGhlIGRpY3Rpb25hcnkgYXJlIGlnbm9yZWQsIHRvIGFsbG93IGZvciBmdXR1cmUKKyAgICAgICAgZXh0ZW5zaW9ucy4KKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgIC4uIG1ldGhvZDo6IHBhdGhfbXRpbWUocGF0aCkKIAogICAgICAgICBPcHRpb25hbCBhYnN0cmFjdCBtZXRob2Qgd2hpY2ggcmV0dXJucyB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgZm9yIHRoZQogICAgICAgICBzcGVjaWZpZWQgcGF0aC4KIAotICAgIC4uIG1ldGhvZDo6IHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpCisgICAgICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgOm1ldGg6YHBhdGhfc3RhdHNgLiAgWW91IGRvbid0CisgICAgICAgICAgIGhhdmUgdG8gaW1wbGVtZW50IGl0LCBidXQgaXQgaXMgc3RpbGwgYXZhaWxhYmxlIGZvciBjb21wYXRpYmlsaXR5CisgICAgICAgICAgIHB1cnBvc2VzLgorCisgICAgLi4gbWV0aG9kOjogc2V0X2RhdGEocGF0aCwgZGF0YSkKIAogICAgICAgICBPcHRpb25hbCBhYnN0cmFjdCBtZXRob2Qgd2hpY2ggd3JpdGVzIHRoZSBzcGVjaWZpZWQgYnl0ZXMgdG8gYSBmaWxlCiAgICAgICAgIHBhdGguIEFueSBpbnRlcm1lZGlhdGUgZGlyZWN0b3JpZXMgd2hpY2ggZG8gbm90IGV4aXN0IGFyZSB0byBiZSBjcmVhdGVkCkBAIC0yNTcsMjMgKzQwOSwyNSBAQAogICAgICAgICBXaGVuIHdyaXRpbmcgdG8gdGhlIHBhdGggZmFpbHMgYmVjYXVzZSB0aGUgcGF0aCBpcyByZWFkLW9ubHkKICAgICAgICAgKDphdHRyOmBlcnJuby5FQUNDRVNgKSwgZG8gbm90IHByb3BhZ2F0ZSB0aGUgZXhjZXB0aW9uLgogCi0gICAgLi4gbWV0aG9kOjogZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpCisgICAgLi4gbWV0aG9kOjogZ2V0X2NvZGUoZnVsbG5hbWUpCiAKICAgICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YEluc3BlY3RMb2FkZXIuZ2V0X2NvZGVgLgogCi0gICAgLi4gbWV0aG9kOjogbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpCisgICAgLi4gbWV0aG9kOjogbG9hZF9tb2R1bGUoZnVsbG5hbWUpCiAKICAgICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YExvYWRlci5sb2FkX21vZHVsZWAuCiAKLSAgICAuLiBtZXRob2Q6OiBnZXRfc291cmNlKHNlbGYsIGZ1bGxuYW1lKQorICAgIC4uIG1ldGhvZDo6IGdldF9zb3VyY2UoZnVsbG5hbWUpCiAKICAgICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YEluc3BlY3RMb2FkZXIuZ2V0X3NvdXJjZWAuCiAKLSAgICAuLiBtZXRob2Q6OiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKQorICAgIC4uIG1ldGhvZDo6IGlzX3BhY2thZ2UoZnVsbG5hbWUpCiAKICAgICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YEluc3BlY3RMb2FkZXIuaXNfcGFja2FnZWAuIEEgbW9kdWxlCi0gICAgICAgIGlzIGRldGVybWluZWQgdG8gYmUgYSBwYWNrYWdlIGlmIGl0cyBmaWxlIHBhdGggaXMgYSBmaWxlIG5hbWVkCi0gICAgICAgIGBgX19pbml0X19gYCB3aGVuIHRoZSBmaWxlIGV4dGVuc2lvbiBpcyByZW1vdmVkLgorICAgICAgICBpcyBkZXRlcm1pbmVkIHRvIGJlIGEgcGFja2FnZSBpZiBpdHMgZmlsZSBwYXRoIChhcyBwcm92aWRlZCBieQorICAgICAgICA6bWV0aDpgRXhlY3V0aW9uTG9hZGVyLmdldF9maWxlbmFtZWApIGlzIGEgZmlsZSBuYW1lZAorICAgICAgICBgYF9faW5pdF9fYGAgd2hlbiB0aGUgZmlsZSBleHRlbnNpb24gaXMgcmVtb3ZlZCAqKmFuZCoqIHRoZSBtb2R1bGUgbmFtZQorICAgICAgICBpdHNlbGYgZG9lcyBub3QgZW5kIGluIGBgX19pbml0X19gYC4KIAogCiAuLiBjbGFzczo6IFB5TG9hZGVyCkBAIC0zNzQsNiArNTI4LDEwIEBACiAgICAgICAgIDpjbGFzczpgUHlMb2FkZXJgLiBEbyBub3RlIHRoYXQgdGhpcyBzb2x1dGlvbiB3aWxsIG5vdCBzdXBwb3J0CiAgICAgICAgIHNvdXJjZWxlc3MvYnl0ZWNvZGUtb25seSBsb2FkaW5nOyBvbmx5IHNvdXJjZSAqYW5kKiBieXRlY29kZSBsb2FkaW5nLgogCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICBVcGRhdGVkIHRvIHBhcnNlIChidXQgbm90IHVzZSkgdGhlIG5ldyBzb3VyY2Ugc2l6ZSBmaWVsZCBpbiBieXRlY29kZQorICAgICAgIGZpbGVzIHdoZW4gcmVhZGluZyBhbmQgdG8gd3JpdGUgb3V0IHRoZSBmaWVsZCBwcm9wZXJseSB3aGVuIHdyaXRpbmcuCisKICAgICAuLiBtZXRob2Q6OiBzb3VyY2VfbXRpbWUoZnVsbG5hbWUpCiAKICAgICAgICAgQW4gYWJzdHJhY3QgbWV0aG9kIHdoaWNoIHJldHVybnMgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIGZvciB0aGUgc291cmNlCkBAIC00MTcsMTIgKzU3NSw1OSBAQAogVGhpcyBtb2R1bGUgY29udGFpbnMgdGhlIHZhcmlvdXMgb2JqZWN0cyB0aGF0IGhlbHAgOmtleXdvcmQ6YGltcG9ydGAKIGZpbmQgYW5kIGxvYWQgbW9kdWxlcy4KIAorLi4gYXR0cmlidXRlOjogU09VUkNFX1NVRkZJWEVTCisKKyAgIEEgbGlzdCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgcmVjb2duaXplZCBmaWxlIHN1ZmZpeGVzIGZvciBzb3VyY2UKKyAgIG1vZHVsZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBhdHRyaWJ1dGU6OiBERUJVR19CWVRFQ09ERV9TVUZGSVhFUworCisgICBBIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIGZpbGUgc3VmZml4ZXMgZm9yIG5vbi1vcHRpbWl6ZWQgYnl0ZWNvZGUKKyAgIG1vZHVsZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBhdHRyaWJ1dGU6OiBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMKKworICAgQSBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSBmaWxlIHN1ZmZpeGVzIGZvciBvcHRpbWl6ZWQgYnl0ZWNvZGUKKyAgIG1vZHVsZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBhdHRyaWJ1dGU6OiBCWVRFQ09ERV9TVUZGSVhFUworCisgICBBIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIHJlY29nbml6ZWQgZmlsZSBzdWZmaXhlcyBmb3IgYnl0ZWNvZGUKKyAgIG1vZHVsZXMuIFNldCB0byBlaXRoZXIgOmF0dHI6YERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTYCBvcgorICAgOmF0dHI6YE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFU2AgYmFzZWQgb24gd2hldGhlciBgYF9fZGVidWdfX2BgIGlzIHRydWUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBhdHRyaWJ1dGU6OiBFWFRFTlNJT05fU1VGRklYRVMKKworICAgQSBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSByZWNvZ25pemVkIGZpbGUgc3VmZml4ZXMgZm9yCisgICBleHRlbnNpb24gbW9kdWxlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogYWxsX3N1ZmZpeGVzKCkKKworICAgUmV0dXJucyBhIGNvbWJpbmVkIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgYWxsIGZpbGUgc3VmZml4ZXMgZm9yCisgICBtb2R1bGVzIHJlY29nbml6ZWQgYnkgdGhlIHN0YW5kYXJkIGltcG9ydCBtYWNoaW5lcnkuIFRoaXMgaXMgYQorICAgaGVscGVyIGZvciBjb2RlIHdoaWNoIHNpbXBseSBuZWVkcyB0byBrbm93IGlmIGEgZmlsZXN5c3RlbSBwYXRoCisgICBwb3RlbnRpYWxseSByZWZlcnMgdG8gYSBtb2R1bGUgd2l0aG91dCBuZWVkaW5nIGFueSBkZXRhaWxzIG9uIHRoZSBraW5kCisgICBvZiBtb2R1bGUgKGZvciBleGFtcGxlLCA6ZnVuYzpgaW5zcGVjdC5nZXRtb2R1bGVuYW1lYCkKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gY2xhc3M6OiBCdWlsdGluSW1wb3J0ZXIKIAogICAgIEFuIDp0ZXJtOmBpbXBvcnRlcmAgZm9yIGJ1aWx0LWluIG1vZHVsZXMuIEFsbCBrbm93biBidWlsdC1pbiBtb2R1bGVzIGFyZQogICAgIGxpc3RlZCBpbiA6ZGF0YTpgc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzYC4gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZQotICAgIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaW5kZXJgIGFuZCA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlcmAKLSAgICBBQkNzLgorICAgIDpjbGFzczpgaW1wb3J0bGliLmFiYy5NZXRhUGF0aEZpbmRlcmAgYW5kCisgICAgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXJgIEFCQ3MuCiAKICAgICBPbmx5IGNsYXNzIG1ldGhvZHMgYXJlIGRlZmluZWQgYnkgdGhpcyBjbGFzcyB0byBhbGxldmlhdGUgdGhlIG5lZWQgZm9yCiAgICAgaW5zdGFudGlhdGlvbi4KQEAgLTQzMSw0OCArNjM2LDIyMyBAQAogLi4gY2xhc3M6OiBGcm96ZW5JbXBvcnRlcgogCiAgICAgQW4gOnRlcm06YGltcG9ydGVyYCBmb3IgZnJvemVuIG1vZHVsZXMuIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUKLSAgICA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmluZGVyYCBhbmQgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXJgCi0gICAgQUJDcy4KKyAgICA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuTWV0YVBhdGhGaW5kZXJgIGFuZAorICAgIDpjbGFzczpgaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyYCBBQkNzLgogCiAgICAgT25seSBjbGFzcyBtZXRob2RzIGFyZSBkZWZpbmVkIGJ5IHRoaXMgY2xhc3MgdG8gYWxsZXZpYXRlIHRoZSBuZWVkIGZvcgogICAgIGluc3RhbnRpYXRpb24uCiAKIAorLi4gY2xhc3M6OiBXaW5kb3dzUmVnaXN0cnlGaW5kZXIKKworICAgOnRlcm06YEZpbmRlcmAgZm9yIG1vZHVsZXMgZGVjbGFyZWQgaW4gdGhlIFdpbmRvd3MgcmVnaXN0cnkuICBUaGlzIGNsYXNzCisgICBpbXBsZW1lbnRzIHRoZSA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmluZGVyYCBBQkMuCisKKyAgIE9ubHkgY2xhc3MgbWV0aG9kcyBhcmUgZGVmaW5lZCBieSB0aGlzIGNsYXNzIHRvIGFsbGV2aWF0ZSB0aGUgbmVlZCBmb3IKKyAgIGluc3RhbnRpYXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGNsYXNzOjogUGF0aEZpbmRlcgogCi0gICAgOnRlcm06YEZpbmRlcmAgZm9yIDpkYXRhOmBzeXMucGF0aGAuIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUKLSAgICA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmluZGVyYCBBQkMuCisgICBBIDp0ZXJtOmBGaW5kZXJgIGZvciA6ZGF0YTpgc3lzLnBhdGhgIGFuZCBwYWNrYWdlIGBgX19wYXRoX19gYCBhdHRyaWJ1dGVzLgorICAgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuTWV0YVBhdGhGaW5kZXJgIEFCQy4KIAotICAgIFRoaXMgY2xhc3MgZG9lcyBub3QgcGVyZmVjdGx5IG1pcnJvciB0aGUgc2VtYW50aWNzIG9mIDprZXl3b3JkOmBpbXBvcnRgIGluCi0gICAgdGVybXMgb2YgOmRhdGE6YHN5cy5wYXRoYC4gTm8gaW1wbGljaXQgcGF0aCBob29rcyBhcmUgYXNzdW1lZCBmb3IKLSAgICBzaW1wbGlmaWNhdGlvbiBvZiB0aGUgY2xhc3MgYW5kIGl0cyBzZW1hbnRpY3MuCisgICBPbmx5IGNsYXNzIG1ldGhvZHMgYXJlIGRlZmluZWQgYnkgdGhpcyBjbGFzcyB0byBhbGxldmlhdGUgdGhlIG5lZWQgZm9yCisgICBpbnN0YW50aWF0aW9uLgogCi0gICAgT25seSBjbGFzcyBtZXRob2RzIGFyZSBkZWZpbmVkIGJ5IHRoaXMgY2xhc3MgdG8gYWxsZXZpYXRlIHRoZSBuZWVkIGZvcgotICAgIGluc3RhbnRpYXRpb24uCisgICAuLiBjbGFzc21ldGhvZDo6IGZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoPU5vbmUpCiAKLSAgICAuLiBjbGFzc21ldGhvZDo6IGZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoPU5vbmUpCisgICAgIENsYXNzIG1ldGhvZCB0aGF0IGF0dGVtcHRzIHRvIGZpbmQgYSA6dGVybTpgbG9hZGVyYCBmb3IgdGhlIG1vZHVsZQorICAgICBzcGVjaWZpZWQgYnkgKmZ1bGxuYW1lKiBvbiA6ZGF0YTpgc3lzLnBhdGhgIG9yLCBpZiBkZWZpbmVkLCBvbgorICAgICAqcGF0aCouIEZvciBlYWNoIHBhdGggZW50cnkgdGhhdCBpcyBzZWFyY2hlZCwKKyAgICAgOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCBpcyBjaGVja2VkLiBJZiBhIG5vbi1mYWxzZSBvYmplY3QgaXMKKyAgICAgZm91bmQgdGhlbiBpdCBpcyB1c2VkIGFzIHRoZSA6dGVybTpgZmluZGVyYCB0byBsb29rIGZvciB0aGUgbW9kdWxlCisgICAgIGJlaW5nIHNlYXJjaGVkIGZvci4gSWYgbm8gZW50cnkgaXMgZm91bmQgaW4KKyAgICAgOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCwgdGhlbiA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgIGlzCisgICAgIHNlYXJjaGVkIGZvciBhIGZpbmRlciBmb3IgdGhlIHBhdGggZW50cnkgYW5kLCBpZiBmb3VuZCwgaXMgc3RvcmVkIGluCisgICAgIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgYWxvbmcgd2l0aCBiZWluZyBxdWVyaWVkIGFib3V0IHRoZQorICAgICBtb2R1bGUuIElmIG5vIGZpbmRlciBpcyBldmVyIGZvdW5kIHRoZW4gYGBOb25lYGAgaXMgYm90aCBzdG9yZWQgaW4KKyAgICAgdGhlIGNhY2hlIGFuZCByZXR1cm5lZC4KIAotICAgICAgICBDbGFzcyBtZXRob2QgdGhhdCBhdHRlbXB0cyB0byBmaW5kIGEgOnRlcm06YGxvYWRlcmAgZm9yIHRoZSBtb2R1bGUKLSAgICAgICAgc3BlY2lmaWVkIGJ5ICpmdWxsbmFtZSogb24gOmRhdGE6YHN5cy5wYXRoYCBvciwgaWYgZGVmaW5lZCwgb24KLSAgICAgICAgKnBhdGgqLiBGb3IgZWFjaCBwYXRoIGVudHJ5IHRoYXQgaXMgc2VhcmNoZWQsCi0gICAgICAgIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgaXMgY2hlY2tlZC4gSWYgYW4gbm9uLWZhbHNlIG9iamVjdCBpcwotICAgICAgICBmb3VuZCB0aGVuIGl0IGlzIHVzZWQgYXMgdGhlIDp0ZXJtOmBmaW5kZXJgIHRvIGxvb2sgZm9yIHRoZSBtb2R1bGUKLSAgICAgICAgYmVpbmcgc2VhcmNoZWQgZm9yLiBJZiBubyBlbnRyeSBpcyBmb3VuZCBpbgotICAgICAgICA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgLCB0aGVuIDpkYXRhOmBzeXMucGF0aF9ob29rc2AgaXMKLSAgICAgICAgc2VhcmNoZWQgZm9yIGEgZmluZGVyIGZvciB0aGUgcGF0aCBlbnRyeSBhbmQsIGlmIGZvdW5kLCBpcyBzdG9yZWQgaW4KLSAgICAgICAgOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCBhbG9uZyB3aXRoIGJlaW5nIHF1ZXJpZWQgYWJvdXQgdGhlCi0gICAgICAgIG1vZHVsZS4gSWYgbm8gZmluZGVyIGlzIGV2ZXIgZm91bmQgdGhlbiBgYE5vbmVgYCBpcyByZXR1cm5lZC4KKyAgIC4uIGNsYXNzbWV0aG9kOjogaW52YWxpZGF0ZV9jYWNoZXMoKQorCisgICAgIENhbGxzIDptZXRoOmBpbXBvcnRsaWIuYWJjLlBhdGhFbnRyeUZpbmRlci5pbnZhbGlkYXRlX2NhY2hlc2Agb24gYWxsCisgICAgIGZpbmRlcnMgc3RvcmVkIGluIDphdHRyOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAuCisKKworLi4gY2xhc3M6OiBGaWxlRmluZGVyKHBhdGgsIFwqbG9hZGVyX2RldGFpbHMpCisKKyAgIEEgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLlBhdGhFbnRyeUZpbmRlcmAgd2hpY2gKKyAgIGNhY2hlcyByZXN1bHRzIGZyb20gdGhlIGZpbGUgc3lzdGVtLgorCisgICBUaGUgKnBhdGgqIGFyZ3VtZW50IGlzIHRoZSBkaXJlY3RvcnkgZm9yIHdoaWNoIHRoZSBmaW5kZXIgaXMgaW4gY2hhcmdlIG9mCisgICBzZWFyY2hpbmcuCisKKyAgIFRoZSAqbG9hZGVyX2RldGFpbHMqIGFyZ3VtZW50IGlzIGEgdmFyaWFibGUgbnVtYmVyIG9mIDItaXRlbSB0dXBsZXMgZWFjaAorICAgY29udGFpbmluZyBhIGxvYWRlciBhbmQgYSBzZXF1ZW5jZSBvZiBmaWxlIHN1ZmZpeGVzIHRoZSBsb2FkZXIgcmVjb2duaXplcy4KKworICAgVGhlIGZpbmRlciB3aWxsIGNhY2hlIHRoZSBkaXJlY3RvcnkgY29udGVudHMgYXMgbmVjZXNzYXJ5LCBtYWtpbmcgc3RhdCBjYWxscworICAgZm9yIGVhY2ggbW9kdWxlIHNlYXJjaCB0byB2ZXJpZnkgdGhlIGNhY2hlIGlzIG5vdCBvdXRkYXRlZC4gQmVjYXVzZSBjYWNoZQorICAgc3RhbGVuZXNzIHJlbGllcyB1cG9uIHRoZSBncmFudWxhcml0eSBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzIHN0YXRlCisgICBpbmZvcm1hdGlvbiBvZiB0aGUgZmlsZSBzeXN0ZW0sIHRoZXJlIGlzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9mCisgICBzZWFyY2hpbmcgZm9yIGEgbW9kdWxlLCBjcmVhdGluZyBhIG5ldyBmaWxlLCBhbmQgdGhlbiBzZWFyY2hpbmcgZm9yIHRoZQorICAgbW9kdWxlIHRoZSBuZXcgZmlsZSByZXByZXNlbnRzLiBJZiB0aGUgb3BlcmF0aW9ucyBoYXBwZW4gZmFzdCBlbm91Z2ggdG8gZml0CisgICB3aXRoaW4gdGhlIGdyYW51bGFyaXR5IG9mIHN0YXQgY2FsbHMsIHRoZW4gdGhlIG1vZHVsZSBzZWFyY2ggd2lsbCBmYWlsLiBUbworICAgcHJldmVudCB0aGlzIGZyb20gaGFwcGVuaW5nLCB3aGVuIHlvdSBjcmVhdGUgYSBtb2R1bGUgZHluYW1pY2FsbHksIG1ha2Ugc3VyZQorICAgdG8gY2FsbCA6ZnVuYzpgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBhdGgKKworICAgICAgVGhlIHBhdGggdGhlIGZpbmRlciB3aWxsIHNlYXJjaCBpbi4KKworICAgLi4gbWV0aG9kOjogZmluZF9tb2R1bGUoZnVsbG5hbWUpCisKKyAgICAgIEF0dGVtcHQgdG8gZmluZCB0aGUgbG9hZGVyIHRvIGhhbmRsZSAqZnVsbG5hbWUqIHdpdGhpbiA6YXR0cjpgcGF0aGAuCisKKyAgIC4uIG1ldGhvZDo6IGludmFsaWRhdGVfY2FjaGVzKCkKKworICAgICAgQ2xlYXIgb3V0IHRoZSBpbnRlcm5hbCBjYWNoZS4KKworICAgLi4gY2xhc3NtZXRob2Q6OiBwYXRoX2hvb2soXCpsb2FkZXJfZGV0YWlscykKKworICAgICAgQSBjbGFzcyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIGNsb3N1cmUgZm9yIHVzZSBvbiA6YXR0cjpgc3lzLnBhdGhfaG9va3NgLgorICAgICAgQW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBGaWxlRmluZGVyYCBpcyByZXR1cm5lZCBieSB0aGUgY2xvc3VyZSB1c2luZyB0aGUKKyAgICAgIHBhdGggYXJndW1lbnQgZ2l2ZW4gdG8gdGhlIGNsb3N1cmUgZGlyZWN0bHkgYW5kICpsb2FkZXJfZGV0YWlscyoKKyAgICAgIGluZGlyZWN0bHkuCisKKyAgICAgIElmIHRoZSBhcmd1bWVudCB0byB0aGUgY2xvc3VyZSBpcyBub3QgYW4gZXhpc3RpbmcgZGlyZWN0b3J5LAorICAgICAgOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4KKworCisuLiBjbGFzczo6IFNvdXJjZUZpbGVMb2FkZXIoZnVsbG5hbWUsIHBhdGgpCisKKyAgIEEgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlcmAgYnkKKyAgIHN1YmNsYXNzaW5nIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaWxlTG9hZGVyYCBhbmQgcHJvdmlkaW5nIHNvbWUgY29uY3JldGUKKyAgIGltcGxlbWVudGF0aW9ucyBvZiBvdGhlciBtZXRob2RzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogbmFtZQorCisgICAgICBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoYXQgdGhpcyBsb2FkZXIgd2lsbCBoYW5kbGUuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBhdGgKKworICAgICAgVGhlIHBhdGggdG8gdGhlIHNvdXJjZSBmaWxlLgorCisgICAuLiBtZXRob2Q6OiBpc19wYWNrYWdlKGZ1bGxuYW1lKQorCisgICAgICBSZXR1cm4gdHJ1ZSBpZiA6YXR0cjpgcGF0aGAgYXBwZWFycyB0byBiZSBmb3IgYSBwYWNrYWdlLgorCisgICAuLiBtZXRob2Q6OiBwYXRoX3N0YXRzKHBhdGgpCisKKyAgICAgIENvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlci5wYXRoX3N0YXRzYC4KKworICAgLi4gbWV0aG9kOjogc2V0X2RhdGEocGF0aCwgZGF0YSkKKworICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YGltcG9ydGxpYi5hYmMuU291cmNlTG9hZGVyLnNldF9kYXRhYC4KKworCisuLiBjbGFzczo6IFNvdXJjZWxlc3NGaWxlTG9hZGVyKGZ1bGxuYW1lLCBwYXRoKQorCisgICBBIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaWxlTG9hZGVyYCB3aGljaCBjYW4KKyAgIGltcG9ydCBieXRlY29kZSBmaWxlcyAoaS5lLiBubyBzb3VyY2UgY29kZSBmaWxlcyBleGlzdCkuCisKKyAgIFBsZWFzZSBub3RlIHRoYXQgZGlyZWN0IHVzZSBvZiBieXRlY29kZSBmaWxlcyAoYW5kIHRodXMgbm90IHNvdXJjZSBjb2RlCisgICBmaWxlcykgaW5oaWJpdHMgeW91ciBtb2R1bGVzIGZyb20gYmVpbmcgdXNhYmxlIGJ5IGFsbCBQeXRob24KKyAgIGltcGxlbWVudGF0aW9ucyBvciBuZXcgdmVyc2lvbnMgb2YgUHl0aG9uIHdoaWNoIGNoYW5nZSB0aGUgYnl0ZWNvZGUKKyAgIGZvcm1hdC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5hbWUKKworICAgICAgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbG9hZGVyIHdpbGwgaGFuZGxlLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwYXRoCisKKyAgICAgIFRoZSBwYXRoIHRvIHRoZSBieXRlY29kZSBmaWxlLgorCisgICAuLiBtZXRob2Q6OiBpc19wYWNrYWdlKGZ1bGxuYW1lKQorCisgICAgICBEZXRlcm1pbmVzIGlmIHRoZSBtb2R1bGUgaXMgYSBwYWNrYWdlIGJhc2VkIG9uIDphdHRyOmBwYXRoYC4KKworICAgLi4gbWV0aG9kOjogZ2V0X2NvZGUoZnVsbG5hbWUpCisKKyAgICAgIFJldHVybnMgdGhlIGNvZGUgb2JqZWN0IGZvciA6YXR0cjpgbmFtZWAgY3JlYXRlZCBmcm9tIDphdHRyOmBwYXRoYC4KKworICAgLi4gbWV0aG9kOjogZ2V0X3NvdXJjZShmdWxsbmFtZSkKKworICAgICAgUmV0dXJucyBgYE5vbmVgYCBhcyBieXRlY29kZSBmaWxlcyBoYXZlIG5vIHNvdXJjZSB3aGVuIHRoaXMgbG9hZGVyIGlzCisgICAgICB1c2VkLgorCisKKy4uIGNsYXNzOjogRXh0ZW5zaW9uRmlsZUxvYWRlcihmdWxsbmFtZSwgcGF0aCkKKworICAgQSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlcmAgZm9yCisgICBleHRlbnNpb24gbW9kdWxlcy4KKworICAgVGhlICpmdWxsbmFtZSogYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIGxvYWRlciBpcyB0bworICAgc3VwcG9ydC4gVGhlICpwYXRoKiBhcmd1bWVudCBpcyB0aGUgcGF0aCB0byB0aGUgZXh0ZW5zaW9uIG1vZHVsZSdzIGZpbGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBhdHRyaWJ1dGU6OiBuYW1lCisKKyAgICAgIE5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbG9hZGVyIHN1cHBvcnRzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwYXRoCisKKyAgICAgIFBhdGggdG8gdGhlIGV4dGVuc2lvbiBtb2R1bGUuCisKKyAgIC4uIG1ldGhvZDo6IGxvYWRfbW9kdWxlKGZ1bGxuYW1lKQorCisgICAgICBMb2FkcyB0aGUgZXh0ZW5zaW9uIG1vZHVsZSBpZiBhbmQgb25seSBpZiAqZnVsbG5hbWUqIGlzIHRoZSBzYW1lIGFzCisgICAgICA6YXR0cjpgbmFtZWAgb3IgaXMgYGBOb25lYGAuCisKKyAgIC4uIG1ldGhvZDo6IGlzX3BhY2thZ2UoZnVsbG5hbWUpCisKKyAgICAgIFJldHVybnMgYGBUcnVlYGAgaWYgdGhlIGZpbGUgcGF0aCBwb2ludHMgdG8gYSBwYWNrYWdlJ3MgYGBfX2luaXRfX2BgCisgICAgICBtb2R1bGUgYmFzZWQgb24gOmF0dHI6YEVYVEVOU0lPTl9TVUZGSVhFU2AuCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb2RlKGZ1bGxuYW1lKQorCisgICAgICBSZXR1cm5zIGBgTm9uZWBgIGFzIGV4dGVuc2lvbiBtb2R1bGVzIGxhY2sgYSBjb2RlIG9iamVjdC4KKworICAgLi4gbWV0aG9kOjogZ2V0X3NvdXJjZShmdWxsbmFtZSkKKworICAgICAgUmV0dXJucyBgYE5vbmVgYCBhcyBleHRlbnNpb24gbW9kdWxlcyBkbyBub3QgaGF2ZSBzb3VyY2UgY29kZS4KIAogCiA6bW9kOmBpbXBvcnRsaWIudXRpbGAgLS0gVXRpbGl0eSBjb2RlIGZvciBpbXBvcnRlcnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBtb2R1bGU6OiBpbXBvcnRsaWIudXRpbAotICAgIDpzeW5vcHNpczogSW1wb3J0ZXJzIGFuZCBwYXRoIGhvb2tzCisgICAgOnN5bm9wc2lzOiBVdGlsaXR5IGNvZGUgZm9yIGltcG9ydGVycwogCiBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgdmFyaW91cyBvYmplY3RzIHRoYXQgaGVscCBpbiB0aGUgY29uc3RydWN0aW9uIG9mCiBhbiA6dGVybTpgaW1wb3J0ZXJgLgogCisuLiBmdW5jdGlvbjo6IHJlc29sdmVfbmFtZShuYW1lLCBwYWNrYWdlKQorCisgICBSZXNvbHZlIGEgcmVsYXRpdmUgbW9kdWxlIG5hbWUgdG8gYW4gYWJzb2x1dGUgb25lLgorCisgICBJZiAgKipuYW1lKiogaGFzIG5vIGxlYWRpbmcgZG90cywgdGhlbiAqKm5hbWUqKiBpcyBzaW1wbHkgcmV0dXJuZWQuIFRoaXMKKyAgIGFsbG93cyBmb3IgdXNhZ2Ugc3VjaCBhcworICAgYGBpbXBvcnRsaWIudXRpbC5yZXNvbHZlX25hbWUoJ3N5cycsIF9fcGFja2FnZV9fKWBgIHdpdGhvdXQgZG9pbmcgYQorICAgY2hlY2sgdG8gc2VlIGlmIHRoZSAqKnBhY2thZ2UqKiBhcmd1bWVudCBpcyBuZWVkZWQuCisKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqKm5hbWUqKiBpcyBhIHJlbGF0aXZlIG1vZHVsZSBuYW1lIGJ1dAorICAgcGFja2FnZSBpcyBhIGZhbHNlIHZhbHVlIChlLmcuIGBgTm9uZWBgIG9yIHRoZSBlbXB0eSBzdHJpbmcpLgorICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgYWxzbyByYWlzZWQgYSByZWxhdGl2ZSBuYW1lIHdvdWxkIGVzY2FwZSBpdHMgY29udGFpbmluZworICAgcGFja2FnZSAoZS5nLiByZXF1ZXN0aW5nIGBgLi5iYWNvbmBgIGZyb20gd2l0aGluIHRoZSBgYHNwYW1gYCBwYWNrYWdlKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC4uIGRlY29yYXRvcjo6IG1vZHVsZV9mb3JfbG9hZGVyCiAKICAgICBBIDp0ZXJtOmBkZWNvcmF0b3JgIGZvciBhIDp0ZXJtOmBsb2FkZXJgIG1ldGhvZCwKQEAgLTQ4MSwyMiArODYxLDMwIEBACiAgICAgc2lnbmF0dXJlIHRha2luZyB0d28gcG9zaXRpb25hbCBhcmd1bWVudHMKICAgICAoZS5nLiBgYGxvYWRfbW9kdWxlKHNlbGYsIG1vZHVsZSlgYCkgZm9yIHdoaWNoIHRoZSBzZWNvbmQgYXJndW1lbnQKICAgICB3aWxsIGJlIHRoZSBtb2R1bGUgKipvYmplY3QqKiB0byBiZSB1c2VkIGJ5IHRoZSBsb2FkZXIuCi0gICAgTm90ZSB0aGF0IHRoZSBkZWNvcmF0b3IKLSAgICB3aWxsIG5vdCB3b3JrIG9uIHN0YXRpYyBtZXRob2RzIGJlY2F1c2Ugb2YgdGhlIGFzc3VtcHRpb24gb2YgdHdvCi0gICAgYXJndW1lbnRzLgorICAgIE5vdGUgdGhhdCB0aGUgZGVjb3JhdG9yIHdpbGwgbm90IHdvcmsgb24gc3RhdGljIG1ldGhvZHMgYmVjYXVzZSBvZiB0aGUKKyAgICBhc3N1bXB0aW9uIG9mIHR3byBhcmd1bWVudHMuCiAKICAgICBUaGUgZGVjb3JhdGVkIG1ldGhvZCB3aWxsIHRha2UgaW4gdGhlICoqbmFtZSoqIG9mIHRoZSBtb2R1bGUgdG8gYmUgbG9hZGVkCiAgICAgYXMgZXhwZWN0ZWQgZm9yIGEgOnRlcm06YGxvYWRlcmAuIElmIHRoZSBtb2R1bGUgaXMgbm90IGZvdW5kIGluCiAgICAgOmRhdGE6YHN5cy5tb2R1bGVzYCB0aGVuIGEgbmV3IG9uZSBpcyBjb25zdHJ1Y3RlZCB3aXRoIGl0cwotICAgIDphdHRyOmBfX25hbWVfX2AgYXR0cmlidXRlIHNldC4gT3RoZXJ3aXNlIHRoZSBtb2R1bGUgZm91bmQgaW4KLSAgICA6ZGF0YTpgc3lzLm1vZHVsZXNgIHdpbGwgYmUgcGFzc2VkIGludG8gdGhlIG1ldGhvZC4gSWYgYW4KLSAgICBleGNlcHRpb24gaXMgcmFpc2VkIGJ5IHRoZSBkZWNvcmF0ZWQgbWV0aG9kIGFuZCBhIG1vZHVsZSB3YXMgYWRkZWQgdG8KKyAgICA6YXR0cjpgX19uYW1lX19gIGF0dHJpYnV0ZSBzZXQgdG8gKipuYW1lKiosIDphdHRyOmBfX2xvYWRlcl9fYCBzZXQgdG8KKyAgICAqKnNlbGYqKiwgYW5kIDphdHRyOmBfX3BhY2thZ2VfX2Agc2V0IGlmCisgICAgOm1ldGg6YGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlci5pc19wYWNrYWdlYCBpcyBkZWZpbmVkIGZvciAqKnNlbGYqKiBhbmQKKyAgICBkb2VzIG5vdCByYWlzZSA6ZXhjOmBJbXBvcnRFcnJvcmAgZm9yICoqbmFtZSoqLiBJZiBhIG5ldyBtb2R1bGUgaXMgbm90CisgICAgbmVlZGVkIHRoZW4gdGhlIG1vZHVsZSBmb3VuZCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgIHdpbGwgYmUgcGFzc2VkIGludG8gdGhlCisgICAgbWV0aG9kLgorCisgICAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBieSB0aGUgZGVjb3JhdGVkIG1ldGhvZCBhbmQgYSBtb2R1bGUgd2FzIGFkZGVkIHRvCiAgICAgOmRhdGE6YHN5cy5tb2R1bGVzYCBpdCB3aWxsIGJlIHJlbW92ZWQgdG8gcHJldmVudCBhIHBhcnRpYWxseSBpbml0aWFsaXplZAogICAgIG1vZHVsZSBmcm9tIGJlaW5nIGluIGxlZnQgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYC4gSWYgdGhlIG1vZHVsZSB3YXMgYWxyZWFkeQogICAgIGluIDpkYXRhOmBzeXMubW9kdWxlc2AgdGhlbiBpdCBpcyBsZWZ0IGFsb25lLgogCiAgICAgVXNlIG9mIHRoaXMgZGVjb3JhdG9yIGhhbmRsZXMgYWxsIHRoZSBkZXRhaWxzIG9mIHdoaWNoIG1vZHVsZSBvYmplY3QgYQotICAgIGxvYWRlciBzaG91bGQgaW5pdGlhbGl6ZSBhcyBzcGVjaWZpZWQgYnkgOnBlcDpgMzAyYC4KKyAgICBsb2FkZXIgc2hvdWxkIGluaXRpYWxpemUgYXMgc3BlY2lmaWVkIGJ5IDpwZXA6YDMwMmAgYXMgYmVzdCBhcyBwb3NzaWJsZS4KKworICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgOmF0dHI6YF9fbG9hZGVyX19gIGFuZCA6YXR0cjpgX19wYWNrYWdlX19gIGFyZSBhdXRvbWF0aWNhbGx5IHNldAorICAgICAgICh3aGVuIHBvc3NpYmxlKS4KIAogLi4gZGVjb3JhdG9yOjogc2V0X2xvYWRlcgogCkBAIC01MDQsNyArODkyLDEzIEBACiAgICAgdG8gc2V0IHRoZSA6YXR0cjpgX19sb2FkZXJfX2AKICAgICBhdHRyaWJ1dGUgb24gbG9hZGVkIG1vZHVsZXMuIElmIHRoZSBhdHRyaWJ1dGUgaXMgYWxyZWFkeSBzZXQgdGhlIGRlY29yYXRvcgogICAgIGRvZXMgbm90aGluZy4gSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50IHRvIHRoZQotICAgIHdyYXBwZWQgbWV0aG9kIGlzIHdoYXQgOmF0dHI6YF9fbG9hZGVyX19gIHNob3VsZCBiZSBzZXQgdG8uCisgICAgd3JhcHBlZCBtZXRob2QgKGkuZS4gYGBzZWxmYGApIGlzIHdoYXQgOmF0dHI6YF9fbG9hZGVyX19gIHNob3VsZCBiZSBzZXQgdG8uCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IDpmdW5jOmBtb2R1bGVfZm9yX2xvYWRlcmAgYmUgdXNlZCBvdmVyIHRoaXMKKyAgICAgIGRlY29yYXRvciBhcyBpdCBzdWJzdW1lcyB0aGlzIGZ1bmN0aW9uYWxpdHkuCisKIAogLi4gZGVjb3JhdG9yOjogc2V0X3BhY2thZ2UKIApAQCAtNTE1LDggKzkwOSwxMiBAQAogICAgIHNldCBvbiBhbmQgbm90IHRoZSBtb2R1bGUgZm91bmQgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYC4KIAogICAgIFJlbGlhbmNlIG9uIHRoaXMgZGVjb3JhdG9yIGlzIGRpc2NvdXJhZ2VkIHdoZW4gaXQgaXMgcG9zc2libGUgdG8gc2V0Ci0gICAgOmF0dHI6YF9fcGFja2FnZV9fYCBiZWZvcmUgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY29kZSBpcyBwb3NzaWJsZS4gQnkKLSAgICBzZXR0aW5nIGl0IGJlZm9yZSB0aGUgY29kZSBmb3IgdGhlIG1vZHVsZSBpcyBleGVjdXRlZCBpdCBhbGxvd3MgdGhlCi0gICAgYXR0cmlidXRlIHRvIGJlIHVzZWQgYXQgdGhlIGdsb2JhbCBsZXZlbCBvZiB0aGUgbW9kdWxlIGR1cmluZworICAgIDphdHRyOmBfX3BhY2thZ2VfX2AgYmVmb3JlIGltcG9ydGluZy4gQnkKKyAgICBzZXR0aW5nIGl0IGJlZm9yZWhhbmQgdGhlIGNvZGUgZm9yIHRoZSBtb2R1bGUgaXMgZXhlY3V0ZWQgd2l0aCB0aGUKKyAgICBhdHRyaWJ1dGUgc2V0IGFuZCB0aHVzIGNhbiBiZSB1c2VkIGJ5IGdsb2JhbCBsZXZlbCBjb2RlIGR1cmluZwogICAgIGluaXRpYWxpemF0aW9uLgogCisgICAuLiBub3RlOjoKKworICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCA6ZnVuYzpgbW9kdWxlX2Zvcl9sb2FkZXJgIGJlIHVzZWQgb3ZlciB0aGlzCisgICAgICBkZWNvcmF0b3IgYXMgaXQgc3Vic3VtZXMgdGhpcyBmdW5jdGlvbmFsaXR5LgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW5kZXgucnN0IGIvRG9jL2xpYnJhcnkvaW5kZXgucnN0CmluZGV4IGI2YTU1NTkuLjFiMjVjNmUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2luZGV4LnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbmRleC5yc3QKQEAgLTQzLDcgKzQzLDggQEAKICAgIHN0ZHR5cGVzLnJzdAogICAgZXhjZXB0aW9ucy5yc3QKIAotICAgc3RyaW5ncy5yc3QKKyAgIHRleHQucnN0CisgICBiaW5hcnkucnN0CiAgICBkYXRhdHlwZXMucnN0CiAgICBudW1lcmljLnJzdAogICAgZnVuY3Rpb25hbC5yc3QKQEAgLTUzLDcgKzU0LDcgQEAKICAgIGZpbGVmb3JtYXRzLnJzdAogICAgY3J5cHRvLnJzdAogICAgYWxsb3MucnN0Ci0gICBzb21lb3MucnN0CisgICBjb25jdXJyZW5jeS5yc3QKICAgIGlwYy5yc3QKICAgIG5ldGRhdGEucnN0CiAgICBtYXJrdXAucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdCBiL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CmluZGV4IGQxMjdjZTguLjAxYmJjZTggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CkBAIC0xOTAsMTMgKzE5MCwyNiBAQAogICAgY29tcGFyZWQgdG8gdGhlIGNvbnN0YW50cyBkZWZpbmVkIGluIHRoZSA6bW9kOmBpbXBgIG1vZHVsZTsgc2VlIHRoZQogICAgZG9jdW1lbnRhdGlvbiBmb3IgdGhhdCBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gbW9kdWxlIHR5cGVzLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBZb3UgbWF5IGNoZWNrIHRoZSBmaWxlIHBhdGgncyBzdWZmaXggYWdhaW5zdCB0aGUgc3VwcG9ydGVkIHN1ZmZpeGVzCisgICAgICBsaXN0ZWQgaW4gOm1vZDpgaW1wb3J0bGliLm1hY2hpbmVyeWAgdG8gaW5mZXIgdGhlIHNhbWUgaW5mb3JtYXRpb24uCisKIAogLi4gZnVuY3Rpb246OiBnZXRtb2R1bGVuYW1lKHBhdGgpCiAKICAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIG5hbWVkIGJ5IHRoZSBmaWxlICpwYXRoKiwgd2l0aG91dCBpbmNsdWRpbmcgdGhlCi0gICBuYW1lcyBvZiBlbmNsb3NpbmcgcGFja2FnZXMuICBUaGlzIHVzZXMgdGhlIHNhbWUgYWxnb3JpdGhtIGFzIHRoZSBpbnRlcnByZXRlcgotICAgdXNlcyB3aGVuIHNlYXJjaGluZyBmb3IgbW9kdWxlcy4gIElmIHRoZSBuYW1lIGNhbm5vdCBiZSBtYXRjaGVkIGFjY29yZGluZyB0byB0aGUKLSAgIGludGVycHJldGVyJ3MgcnVsZXMsIGBgTm9uZWBgIGlzIHJldHVybmVkLgorICAgbmFtZXMgb2YgZW5jbG9zaW5nIHBhY2thZ2VzLiBUaGUgZmlsZSBleHRlbnNpb24gaXMgY2hlY2tlZCBhZ2FpbnN0IGFsbCBvZgorICAgdGhlIGVudHJpZXMgaW4gOmZ1bmM6YGltcG9ydGxpYi5tYWNoaW5lcnkuYWxsX3N1ZmZpeGVzYC4gSWYgaXQgbWF0Y2hlcywKKyAgIHRoZSBmaW5hbCBwYXRoIGNvbXBvbmVudCBpcyByZXR1cm5lZCB3aXRoIHRoZSBleHRlbnNpb24gcmVtb3ZlZC4KKyAgIE90aGVyd2lzZSwgYGBOb25lYGAgaXMgcmV0dXJuZWQuCisKKyAgIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uICpvbmx5KiByZXR1cm5zIGEgbWVhbmluZ2Z1bCBuYW1lIGZvciBhY3R1YWwKKyAgIFB5dGhvbiBtb2R1bGVzIC0gcGF0aHMgdGhhdCBwb3RlbnRpYWxseSByZWZlciB0byBQeXRob24gcGFja2FnZXMgd2lsbAorICAgc3RpbGwgcmV0dXJuIGBgTm9uZWBgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3cgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYCByYXRoZXIgdGhhbiB0aGUKKyAgICAgIGRlcHJlY2F0ZWQgOmZ1bmM6YGdldG1vZHVsZWluZm9gLgogCiAKIC4uIGZ1bmN0aW9uOjogaXNtb2R1bGUob2JqZWN0KQpAQCAtMzU1LDE3ICszNjgsMjUgQEAKICAgIGFyZ3VtZW50IG1heSBiZSBhIG1vZHVsZSwgY2xhc3MsIG1ldGhvZCwgZnVuY3Rpb24sIHRyYWNlYmFjaywgZnJhbWUsIG9yIGNvZGUKICAgIG9iamVjdC4gIFRoZSBzb3VyY2UgY29kZSBpcyByZXR1cm5lZCBhcyBhIGxpc3Qgb2YgdGhlIGxpbmVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlCiAgICBvYmplY3QgYW5kIHRoZSBsaW5lIG51bWJlciBpbmRpY2F0ZXMgd2hlcmUgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRoZSBmaXJzdAotICAgbGluZSBvZiBjb2RlIHdhcyBmb3VuZC4gIEFuIDpleGM6YElPRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgc291cmNlIGNvZGUgY2Fubm90CisgICBsaW5lIG9mIGNvZGUgd2FzIGZvdW5kLiAgQW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBzb3VyY2UgY29kZSBjYW5ub3QKICAgIGJlIHJldHJpZXZlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCBpbnN0ZWFkIG9mIDpleGM6YElPRXJyb3JgLCBub3cgYW4gYWxpYXMgb2YgdGhlCisgICAgICBmb3JtZXIuCisKIAogLi4gZnVuY3Rpb246OiBnZXRzb3VyY2Uob2JqZWN0KQogCiAgICBSZXR1cm4gdGhlIHRleHQgb2YgdGhlIHNvdXJjZSBjb2RlIGZvciBhbiBvYmplY3QuIFRoZSBhcmd1bWVudCBtYXkgYmUgYSBtb2R1bGUsCiAgICBjbGFzcywgbWV0aG9kLCBmdW5jdGlvbiwgdHJhY2ViYWNrLCBmcmFtZSwgb3IgY29kZSBvYmplY3QuICBUaGUgc291cmNlIGNvZGUgaXMKLSAgIHJldHVybmVkIGFzIGEgc2luZ2xlIHN0cmluZy4gIEFuIDpleGM6YElPRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgc291cmNlIGNvZGUKKyAgIHJldHVybmVkIGFzIGEgc2luZ2xlIHN0cmluZy4gIEFuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgc291cmNlIGNvZGUKICAgIGNhbm5vdCBiZSByZXRyaWV2ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgaW5zdGVhZCBvZiA6ZXhjOmBJT0Vycm9yYCwgbm93IGFuIGFsaWFzIG9mIHRoZQorICAgICAgZm9ybWVyLgorCiAKIC4uIGZ1bmN0aW9uOjogY2xlYW5kb2MoZG9jKQogCkBAIC0zNzQsNiArMzk1LDI2NCBAQAogICAgb253YXJkcyBpcyByZW1vdmVkLiAgQWxzbywgYWxsIHRhYnMgYXJlIGV4cGFuZGVkIHRvIHNwYWNlcy4KIAogCisuLiBfaW5zcGVjdC1zaWduYXR1cmUtb2JqZWN0OgorCitJbnRyb3NwZWN0aW5nIGNhbGxhYmxlcyB3aXRoIHRoZSBTaWduYXR1cmUgb2JqZWN0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCitUaGUgU2lnbmF0dXJlIG9iamVjdCByZXByZXNlbnRzIHRoZSBjYWxsIHNpZ25hdHVyZSBvZiBhIGNhbGxhYmxlIG9iamVjdCBhbmQgaXRzCityZXR1cm4gYW5ub3RhdGlvbi4gIFRvIHJldHJpZXZlIGEgU2lnbmF0dXJlIG9iamVjdCwgdXNlIHRoZSA6ZnVuYzpgc2lnbmF0dXJlYAorZnVuY3Rpb24uCisKKy4uIGZ1bmN0aW9uOjogc2lnbmF0dXJlKGNhbGxhYmxlKQorCisgICBSZXR1cm4gYSA6Y2xhc3M6YFNpZ25hdHVyZWAgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gYGBjYWxsYWJsZWBgOjoKKworICAgICAgPj4+IGZyb20gaW5zcGVjdCBpbXBvcnQgc2lnbmF0dXJlCisgICAgICA+Pj4gZGVmIGZvbyhhLCAqLCBiOmludCwgKiprd2FyZ3MpOgorICAgICAgLi4uICAgICBwYXNzCisKKyAgICAgID4+PiBzaWcgPSBzaWduYXR1cmUoZm9vKQorCisgICAgICA+Pj4gc3RyKHNpZykKKyAgICAgICcoYSwgKiwgYjppbnQsICoqa3dhcmdzKScKKworICAgICAgPj4+IHN0cihzaWcucGFyYW1ldGVyc1snYiddKQorICAgICAgJ2I6aW50JworCisgICAgICA+Pj4gc2lnLnBhcmFtZXRlcnNbJ2InXS5hbm5vdGF0aW9uCisgICAgICA8Y2xhc3MgJ2ludCc+CisKKyAgIEFjY2VwdHMgYSB3aWRlIHJhbmdlIG9mIHB5dGhvbiBjYWxsYWJsZXMsIGZyb20gcGxhaW4gZnVuY3Rpb25zIGFuZCBjbGFzc2VzIHRvCisgICA6ZnVuYzpgZnVuY3Rvb2xzLnBhcnRpYWxgIG9iamVjdHMuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBTb21lIGNhbGxhYmxlcyBtYXkgbm90IGJlIGludHJvc3BlY3RhYmxlIGluIGNlcnRhaW4gaW1wbGVtZW50YXRpb25zIG9mCisgICAgICBQeXRob24uICBGb3IgZXhhbXBsZSwgaW4gQ1B5dGhvbiwgYnVpbHQtaW4gZnVuY3Rpb25zIGRlZmluZWQgaW4gQyBwcm92aWRlCisgICAgICBubyBtZXRhZGF0YSBhYm91dCB0aGVpciBhcmd1bWVudHMuCisKKworLi4gY2xhc3M6OiBTaWduYXR1cmUKKworICAgQSBTaWduYXR1cmUgb2JqZWN0IHJlcHJlc2VudHMgdGhlIGNhbGwgc2lnbmF0dXJlIG9mIGEgZnVuY3Rpb24gYW5kIGl0cyByZXR1cm4KKyAgIGFubm90YXRpb24uICBGb3IgZWFjaCBwYXJhbWV0ZXIgYWNjZXB0ZWQgYnkgdGhlIGZ1bmN0aW9uIGl0IHN0b3JlcyBhCisgICA6Y2xhc3M6YFBhcmFtZXRlcmAgb2JqZWN0IGluIGl0cyA6YXR0cjpgcGFyYW1ldGVyc2AgY29sbGVjdGlvbi4KKworICAgU2lnbmF0dXJlIG9iamVjdHMgYXJlICppbW11dGFibGUqLiAgVXNlIDptZXRoOmBTaWduYXR1cmUucmVwbGFjZWAgdG8gbWFrZSBhCisgICBtb2RpZmllZCBjb3B5LgorCisgICAuLiBhdHRyaWJ1dGU6OiBTaWduYXR1cmUuZW1wdHkKKworICAgICAgQSBzcGVjaWFsIGNsYXNzLWxldmVsIG1hcmtlciB0byBzcGVjaWZ5IGFic2VuY2Ugb2YgYSByZXR1cm4gYW5ub3RhdGlvbi4KKworICAgLi4gYXR0cmlidXRlOjogU2lnbmF0dXJlLnBhcmFtZXRlcnMKKworICAgICAgQW4gb3JkZXJlZCBtYXBwaW5nIG9mIHBhcmFtZXRlcnMnIG5hbWVzIHRvIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICA6Y2xhc3M6YFBhcmFtZXRlcmAgb2JqZWN0cy4KKworICAgLi4gYXR0cmlidXRlOjogU2lnbmF0dXJlLnJldHVybl9hbm5vdGF0aW9uCisKKyAgICAgIFRoZSAicmV0dXJuIiBhbm5vdGF0aW9uIGZvciB0aGUgY2FsbGFibGUuICBJZiB0aGUgY2FsbGFibGUgaGFzIG5vICJyZXR1cm4iCisgICAgICBhbm5vdGF0aW9uLCB0aGlzIGF0dHJpYnV0ZSBpcyBzZXQgdG8gOmF0dHI6YFNpZ25hdHVyZS5lbXB0eWAuCisKKyAgIC4uIG1ldGhvZDo6IFNpZ25hdHVyZS5iaW5kKCphcmdzLCAqKmt3YXJncykKKworICAgICAgQ3JlYXRlIGEgbWFwcGluZyBmcm9tIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzIHRvIHBhcmFtZXRlcnMuCisgICAgICBSZXR1cm5zIDpjbGFzczpgQm91bmRBcmd1bWVudHNgIGlmIGBgKmFyZ3NgYCBhbmQgYGAqKmt3YXJnc2BgIG1hdGNoIHRoZQorICAgICAgc2lnbmF0dXJlLCBvciByYWlzZXMgYSA6ZXhjOmBUeXBlRXJyb3JgLgorCisgICAuLiBtZXRob2Q6OiBTaWduYXR1cmUuYmluZF9wYXJ0aWFsKCphcmdzLCAqKmt3YXJncykKKworICAgICAgV29ya3MgdGhlIHNhbWUgd2F5IGFzIDptZXRoOmBTaWduYXR1cmUuYmluZGAsIGJ1dCBhbGxvd3MgdGhlIG9taXNzaW9uIG9mCisgICAgICBzb21lIHJlcXVpcmVkIGFyZ3VtZW50cyAobWltaWNzIDpmdW5jOmBmdW5jdG9vbHMucGFydGlhbGAgYmVoYXZpb3IuKQorICAgICAgUmV0dXJucyA6Y2xhc3M6YEJvdW5kQXJndW1lbnRzYCwgb3IgcmFpc2VzIGEgOmV4YzpgVHlwZUVycm9yYCBpZiB0aGUKKyAgICAgIHBhc3NlZCBhcmd1bWVudHMgZG8gbm90IG1hdGNoIHRoZSBzaWduYXR1cmUuCisKKyAgIC4uIG1ldGhvZDo6IFNpZ25hdHVyZS5yZXBsYWNlKCpbLCBwYXJhbWV0ZXJzXVssIHJldHVybl9hbm5vdGF0aW9uXSkKKworICAgICAgQ3JlYXRlIGEgbmV3IFNpZ25hdHVyZSBpbnN0YW5jZSBiYXNlZCBvbiB0aGUgaW5zdGFuY2UgcmVwbGFjZSB3YXMgaW52b2tlZAorICAgICAgb24uICBJdCBpcyBwb3NzaWJsZSB0byBwYXNzIGRpZmZlcmVudCBgYHBhcmFtZXRlcnNgYCBhbmQvb3IKKyAgICAgIGBgcmV0dXJuX2Fubm90YXRpb25gYCB0byBvdmVycmlkZSB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0aWVzIG9mIHRoZSBiYXNlCisgICAgICBzaWduYXR1cmUuICBUbyByZW1vdmUgcmV0dXJuX2Fubm90YXRpb24gZnJvbSB0aGUgY29waWVkIFNpZ25hdHVyZSwgcGFzcyBpbgorICAgICAgOmF0dHI6YFNpZ25hdHVyZS5lbXB0eWAuCisKKyAgICAgIDo6CisKKyAgICAgICAgID4+PiBkZWYgdGVzdChhLCBiKToKKyAgICAgICAgIC4uLiAgICAgcGFzcworICAgICAgICAgPj4+IHNpZyA9IHNpZ25hdHVyZSh0ZXN0KQorICAgICAgICAgPj4+IG5ld19zaWcgPSBzaWcucmVwbGFjZShyZXR1cm5fYW5ub3RhdGlvbj0ibmV3IHJldHVybiBhbm5vIikKKyAgICAgICAgID4+PiBzdHIobmV3X3NpZykKKyAgICAgICAgICIoYSwgYikgLT4gJ25ldyByZXR1cm4gYW5ubyciCisKKworLi4gY2xhc3M6OiBQYXJhbWV0ZXIKKworICAgUGFyYW1ldGVyIG9iamVjdHMgYXJlICppbW11dGFibGUqLiAgSW5zdGVhZCBvZiBtb2RpZnlpbmcgYSBQYXJhbWV0ZXIgb2JqZWN0LAorICAgeW91IGNhbiB1c2UgOm1ldGg6YFBhcmFtZXRlci5yZXBsYWNlYCB0byBjcmVhdGUgYSBtb2RpZmllZCBjb3B5LgorCisgICAuLiBhdHRyaWJ1dGU6OiBQYXJhbWV0ZXIuZW1wdHkKKworICAgICAgQSBzcGVjaWFsIGNsYXNzLWxldmVsIG1hcmtlciB0byBzcGVjaWZ5IGFic2VuY2Ugb2YgZGVmYXVsdCB2YWx1ZXMgYW5kCisgICAgICBhbm5vdGF0aW9ucy4KKworICAgLi4gYXR0cmlidXRlOjogUGFyYW1ldGVyLm5hbWUKKworICAgICAgVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhIHN0cmluZy4gIE11c3QgYmUgYSB2YWxpZCBweXRob24gaWRlbnRpZmllcgorICAgICAgbmFtZSAod2l0aCB0aGUgZXhjZXB0aW9uIG9mIGBgUE9TSVRJT05BTF9PTkxZYGAgcGFyYW1ldGVycywgd2hpY2ggY2FuIGhhdmUKKyAgICAgIGl0IHNldCB0byBgYE5vbmVgYCkuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IFBhcmFtZXRlci5kZWZhdWx0CisKKyAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgcGFyYW1ldGVyLiAgSWYgdGhlIHBhcmFtZXRlciBoYXMgbm8gZGVmYXVsdAorICAgICAgdmFsdWUsIHRoaXMgYXR0cmlidXRlIGlzIHNldCB0byA6YXR0cjpgUGFyYW1ldGVyLmVtcHR5YC4KKworICAgLi4gYXR0cmlidXRlOjogUGFyYW1ldGVyLmFubm90YXRpb24KKworICAgICAgVGhlIGFubm90YXRpb24gZm9yIHRoZSBwYXJhbWV0ZXIuICBJZiB0aGUgcGFyYW1ldGVyIGhhcyBubyBhbm5vdGF0aW9uLAorICAgICAgdGhpcyBhdHRyaWJ1dGUgaXMgc2V0IHRvIDphdHRyOmBQYXJhbWV0ZXIuZW1wdHlgLgorCisgICAuLiBhdHRyaWJ1dGU6OiBQYXJhbWV0ZXIua2luZAorCisgICAgICBEZXNjcmliZXMgaG93IGFyZ3VtZW50IHZhbHVlcyBhcmUgYm91bmQgdG8gdGhlIHBhcmFtZXRlci4gIFBvc3NpYmxlIHZhbHVlcworICAgICAgKGFjY2Vzc2libGUgdmlhIDpjbGFzczpgUGFyYW1ldGVyYCwgbGlrZSBgYFBhcmFtZXRlci5LRVlXT1JEX09OTFlgYCk6CisKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgICAgTmFtZSAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAgICAgIHwgKlBPU0lUSU9OQUxfT05MWSogICAgICB8IFZhbHVlIG11c3QgYmUgc3VwcGxpZWQgYXMgYSBwb3NpdGlvbmFsICAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IFB5dGhvbiBoYXMgbm8gZXhwbGljaXQgc3ludGF4IGZvciBkZWZpbmluZyAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzLCBidXQgbWFueSBidWlsdC1pbnwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGFuZCBleHRlbnNpb24gbW9kdWxlIGZ1bmN0aW9ucyAoZXNwZWNpYWxseSAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IHRob3NlIHRoYXQgYWNjZXB0IG9ubHkgb25lIG9yIHR3byBwYXJhbWV0ZXJzKXwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGFjY2VwdCB0aGVtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgKlBPU0lUSU9OQUxfT1JfS0VZV09SRCp8IFZhbHVlIG1heSBiZSBzdXBwbGllZCBhcyBlaXRoZXIgYSBrZXl3b3JkIG9yIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IHBvc2l0aW9uYWwgYXJndW1lbnQgKHRoaXMgaXMgdGhlIHN0YW5kYXJkICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGJpbmRpbmcgYmVoYXZpb3VyIGZvciBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGluIFB5dGhvbi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgKlZBUl9QT1NJVElPTkFMKiAgICAgICB8IEEgdHVwbGUgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgdGhhdCBhcmVuJ3QgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGJvdW5kIHRvIGFueSBvdGhlciBwYXJhbWV0ZXIuIFRoaXMgICAgICAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGNvcnJlc3BvbmRzIHRvIGEgYGAqYXJnc2BgIHBhcmFtZXRlciBpbiBhICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IFB5dGhvbiBmdW5jdGlvbiBkZWZpbml0aW9uLiAgICAgICAgICAgICAgICAgIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgKktFWVdPUkRfT05MWSogICAgICAgICB8IFZhbHVlIG11c3QgYmUgc3VwcGxpZWQgYXMgYSBrZXl3b3JkIGFyZ3VtZW50LnwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IEtleXdvcmQgb25seSBwYXJhbWV0ZXJzIGFyZSB0aG9zZSB3aGljaCAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGFwcGVhciBhZnRlciBhIGBgKmBgIG9yIGBgKmFyZ3NgYCBlbnRyeSBpbiBhIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IFB5dGhvbiBmdW5jdGlvbiBkZWZpbml0aW9uLiAgICAgICAgICAgICAgICAgIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgKlZBUl9LRVlXT1JEKiAgICAgICAgICB8IEEgZGljdCBvZiBrZXl3b3JkIGFyZ3VtZW50cyB0aGF0IGFyZW4ndCBib3VuZHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IHRvIGFueSBvdGhlciBwYXJhbWV0ZXIuIFRoaXMgY29ycmVzcG9uZHMgdG8gYXwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGBgKiprd2FyZ3NgYCBwYXJhbWV0ZXIgaW4gYSBQeXRob24gZnVuY3Rpb24gIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGRlZmluaXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgICAgRXhhbXBsZTogcHJpbnQgYWxsIGtleXdvcmQtb25seSBhcmd1bWVudHMgd2l0aG91dCBkZWZhdWx0IHZhbHVlczo6CisKKyAgICAgICAgID4+PiBkZWYgZm9vKGEsIGIsICosIGMsIGQ9MTApOgorICAgICAgICAgLi4uICAgICBwYXNzCisKKyAgICAgICAgID4+PiBzaWcgPSBzaWduYXR1cmUoZm9vKQorICAgICAgICAgPj4+IGZvciBwYXJhbSBpbiBzaWcucGFyYW1ldGVycy52YWx1ZXMoKToKKyAgICAgICAgIC4uLiAgICAgaWYgKHBhcmFtLmtpbmQgPT0gcGFyYW0uS0VZV09SRF9PTkxZIGFuZAorICAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uZGVmYXVsdCBpcyBwYXJhbS5lbXB0eSk6CisgICAgICAgICAuLi4gICAgICAgICBwcmludCgnUGFyYW1ldGVyOicsIHBhcmFtKQorICAgICAgICAgUGFyYW1ldGVyOiBjCisKKyAgIC4uIG1ldGhvZDo6IFBhcmFtZXRlci5yZXBsYWNlKCpbLCBuYW1lXVssIGtpbmRdWywgZGVmYXVsdF1bLCBhbm5vdGF0aW9uXSkKKworICAgICAgQ3JlYXRlIGEgbmV3IFBhcmFtZXRlciBpbnN0YW5jZSBiYXNlZCBvbiB0aGUgaW5zdGFuY2UgcmVwbGFjZWQgd2FzIGludm9rZWQKKyAgICAgIG9uLiAgVG8gb3ZlcnJpZGUgYSA6Y2xhc3M6YFBhcmFtZXRlcmAgYXR0cmlidXRlLCBwYXNzIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICBhcmd1bWVudC4gIFRvIHJlbW92ZSBhIGRlZmF1bHQgdmFsdWUgb3IvYW5kIGFuIGFubm90YXRpb24gZnJvbSBhCisgICAgICBQYXJhbWV0ZXIsIHBhc3MgOmF0dHI6YFBhcmFtZXRlci5lbXB0eWAuCisKKyAgICAgIDo6CisKKyAgICAgICAgID4+PiBmcm9tIGluc3BlY3QgaW1wb3J0IFBhcmFtZXRlcgorICAgICAgICAgPj4+IHBhcmFtID0gUGFyYW1ldGVyKCdmb28nLCBQYXJhbWV0ZXIuS0VZV09SRF9PTkxZLCBkZWZhdWx0PTQyKQorICAgICAgICAgPj4+IHN0cihwYXJhbSkKKyAgICAgICAgICdmb289NDInCisKKyAgICAgICAgID4+PiBzdHIocGFyYW0ucmVwbGFjZSgpKSAjIFdpbGwgY3JlYXRlIGEgc2hhbGxvdyBjb3B5IG9mICdwYXJhbScKKyAgICAgICAgICdmb289NDInCisKKyAgICAgICAgID4+PiBzdHIocGFyYW0ucmVwbGFjZShkZWZhdWx0PVBhcmFtZXRlci5lbXB0eSwgYW5ub3RhdGlvbj0nc3BhbScpKQorICAgICAgICAgImZvbzonc3BhbSciCisKKworLi4gY2xhc3M6OiBCb3VuZEFyZ3VtZW50cworCisgICBSZXN1bHQgb2YgYSA6bWV0aDpgU2lnbmF0dXJlLmJpbmRgIG9yIDptZXRoOmBTaWduYXR1cmUuYmluZF9wYXJ0aWFsYCBjYWxsLgorICAgSG9sZHMgdGhlIG1hcHBpbmcgb2YgYXJndW1lbnRzIHRvIHRoZSBmdW5jdGlvbidzIHBhcmFtZXRlcnMuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IEJvdW5kQXJndW1lbnRzLmFyZ3VtZW50cworCisgICAgICBBbiBvcmRlcmVkLCBtdXRhYmxlIG1hcHBpbmcgKDpjbGFzczpgY29sbGVjdGlvbnMuT3JkZXJlZERpY3RgKSBvZgorICAgICAgcGFyYW1ldGVycycgbmFtZXMgdG8gYXJndW1lbnRzJyB2YWx1ZXMuICBDb250YWlucyBvbmx5IGV4cGxpY2l0bHkgYm91bmQKKyAgICAgIGFyZ3VtZW50cy4gIENoYW5nZXMgaW4gOmF0dHI6YGFyZ3VtZW50c2Agd2lsbCByZWZsZWN0IGluIDphdHRyOmBhcmdzYCBhbmQKKyAgICAgIDphdHRyOmBrd2FyZ3NgLgorCisgICAgICBTaG91bGQgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIDphdHRyOmBTaWduYXR1cmUucGFyYW1ldGVyc2AgZm9yIGFueQorICAgICAgYXJndW1lbnQgcHJvY2Vzc2luZyBwdXJwb3Nlcy4KKworICAgICAgLi4gbm90ZTo6CisKKyAgICAgICAgIEFyZ3VtZW50cyBmb3Igd2hpY2ggOm1ldGg6YFNpZ25hdHVyZS5iaW5kYCBvcgorICAgICAgICAgOm1ldGg6YFNpZ25hdHVyZS5iaW5kX3BhcnRpYWxgIHJlbGllZCBvbiBhIGRlZmF1bHQgdmFsdWUgYXJlIHNraXBwZWQuCisgICAgICAgICBIb3dldmVyLCBpZiBuZWVkZWQsIGl0IGlzIGVhc3kgdG8gaW5jbHVkZSB0aGVtLgorCisgICAgICA6OgorCisgICAgICAgID4+PiBkZWYgZm9vKGEsIGI9MTApOgorICAgICAgICAuLi4gICAgIHBhc3MKKworICAgICAgICA+Pj4gc2lnID0gc2lnbmF0dXJlKGZvbykKKyAgICAgICAgPj4+IGJhID0gc2lnLmJpbmQoNSkKKworICAgICAgICA+Pj4gYmEuYXJncywgYmEua3dhcmdzCisgICAgICAgICgoNSwpLCB7fSkKKworICAgICAgICA+Pj4gZm9yIHBhcmFtIGluIHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpOgorICAgICAgICAuLi4gICAgIGlmIHBhcmFtLm5hbWUgbm90IGluIGJhLmFyZ3VtZW50czoKKyAgICAgICAgLi4uICAgICAgICAgYmEuYXJndW1lbnRzW3BhcmFtLm5hbWVdID0gcGFyYW0uZGVmYXVsdAorCisgICAgICAgID4+PiBiYS5hcmdzLCBiYS5rd2FyZ3MKKyAgICAgICAgKCg1LCAxMCksIHt9KQorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IEJvdW5kQXJndW1lbnRzLmFyZ3MKKworICAgICAgQSB0dXBsZSBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyB2YWx1ZXMuICBEeW5hbWljYWxseSBjb21wdXRlZCBmcm9tIHRoZQorICAgICAgOmF0dHI6YGFyZ3VtZW50c2AgYXR0cmlidXRlLgorCisgICAuLiBhdHRyaWJ1dGU6OiBCb3VuZEFyZ3VtZW50cy5rd2FyZ3MKKworICAgICAgQSBkaWN0IG9mIGtleXdvcmQgYXJndW1lbnRzIHZhbHVlcy4gIER5bmFtaWNhbGx5IGNvbXB1dGVkIGZyb20gdGhlCisgICAgICA6YXR0cjpgYXJndW1lbnRzYCBhdHRyaWJ1dGUuCisKKyAgIFRoZSA6YXR0cjpgYXJnc2AgYW5kIDphdHRyOmBrd2FyZ3NgIHByb3BlcnRpZXMgY2FuIGJlIHVzZWQgdG8gaW52b2tlCisgICBmdW5jdGlvbnM6OgorCisgICAgICBkZWYgdGVzdChhLCAqLCBiKToKKyAgICAgICAgIC4uLgorCisgICAgICBzaWcgPSBzaWduYXR1cmUodGVzdCkKKyAgICAgIGJhID0gc2lnLmJpbmQoMTAsIGI9MjApCisgICAgICB0ZXN0KCpiYS5hcmdzLCAqKmJhLmt3YXJncykKKworCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzYyYCAtIEZ1bmN0aW9uIFNpZ25hdHVyZSBPYmplY3QuCisgICAgICBUaGUgZGV0YWlsZWQgc3BlY2lmaWNhdGlvbiwgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhbmQgZXhhbXBsZXMuCisKKwogLi4gX2luc3BlY3QtY2xhc3Nlcy1mdW5jdGlvbnM6CiAKIENsYXNzZXMgYW5kIGZ1bmN0aW9ucwpAQCAtMzk2LDkgKzY3NSw5IEBACiAgICA6dGVybTpgbmFtZWQgdHVwbGVgIGBgQXJnU3BlYyhhcmdzLCB2YXJhcmdzLCBrZXl3b3JkcywgZGVmYXVsdHMpYGAgaXMKICAgIHJldHVybmVkLiAqYXJncyogaXMgYSBsaXN0IG9mIHRoZSBhcmd1bWVudCBuYW1lcy4gKnZhcmFyZ3MqIGFuZCAqa2V5d29yZHMqCiAgICBhcmUgdGhlIG5hbWVzIG9mIHRoZSBgYCpgYCBhbmQgYGAqKmBgIGFyZ3VtZW50cyBvciBgYE5vbmVgYC4gKmRlZmF1bHRzKiBpcyBhCi0gICB0dXBsZSBvZiBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcyBvciBOb25lIGlmIHRoZXJlIGFyZSBubyBkZWZhdWx0IGFyZ3VtZW50czsKLSAgIGlmIHRoaXMgdHVwbGUgaGFzICpuKiBlbGVtZW50cywgdGhleSBjb3JyZXNwb25kIHRvIHRoZSBsYXN0ICpuKiBlbGVtZW50cwotICAgbGlzdGVkIGluICphcmdzKi4KKyAgIHR1cGxlIG9mIGRlZmF1bHQgYXJndW1lbnQgdmFsdWVzIG9yIGBgTm9uZWBgIGlmIHRoZXJlIGFyZSBubyBkZWZhdWx0CisgICBhcmd1bWVudHM7IGlmIHRoaXMgdHVwbGUgaGFzICpuKiBlbGVtZW50cywgdGhleSBjb3JyZXNwb25kIHRvIHRoZSBsYXN0CisgICAqbiogZWxlbWVudHMgbGlzdGVkIGluICphcmdzKi4KIAogICAgLi4gZGVwcmVjYXRlZDo6IDMuMAogICAgICAgVXNlIDpmdW5jOmBnZXRmdWxsYXJnc3BlY2AgaW5zdGVhZCwgd2hpY2ggcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQKQEAgLTQxNCwxNCArNjkzLDE5IEBACiAgICBhbm5vdGF0aW9ucylgYAogCiAgICAqYXJncyogaXMgYSBsaXN0IG9mIHRoZSBhcmd1bWVudCBuYW1lcy4gICp2YXJhcmdzKiBhbmQgKnZhcmt3KiBhcmUgdGhlIG5hbWVzCi0gICBvZiB0aGUgYGAqYGAgYW5kIGBgKipgYCBhcmd1bWVudHMgb3IgYGBOb25lYGAuICAqZGVmYXVsdHMqIGlzIGFuIG4tdHVwbGUgb2YKLSAgIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgbGFzdCBuIGFyZ3VtZW50cy4gICprd29ubHlhcmdzKiBpcyBhIGxpc3Qgb2YKKyAgIG9mIHRoZSBgYCpgYCBhbmQgYGAqKmBgIGFyZ3VtZW50cyBvciBgYE5vbmVgYC4gICpkZWZhdWx0cyogaXMgYW4gKm4qLXR1cGxlCisgICBvZiB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgdGhlIGxhc3QgKm4qIGFyZ3VtZW50cywgb3IgYGBOb25lYGAgaWYgdGhlcmUgYXJlIG5vCisgICBkZWZhdWx0IGFyZ3VtZW50cy4gICprd29ubHlhcmdzKiBpcyBhIGxpc3Qgb2YKICAgIGtleXdvcmQtb25seSBhcmd1bWVudCBuYW1lcy4gICprd29ubHlkZWZhdWx0cyogaXMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcgbmFtZXMKICAgIGZyb20ga3dvbmx5YXJncyB0byBkZWZhdWx0cy4gICphbm5vdGF0aW9ucyogaXMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcgYXJndW1lbnQKICAgIG5hbWVzIHRvIGFubm90YXRpb25zLgogCiAgICBUaGUgZmlyc3QgZm91ciBpdGVtcyBpbiB0aGUgdHVwbGUgY29ycmVzcG9uZCB0byA6ZnVuYzpgZ2V0YXJnc3BlY2AuCiAKKyAgIC4uIG5vdGU6OgorICAgICAgQ29uc2lkZXIgdXNpbmcgdGhlIG5ldyA6cmVmOmBTaWduYXR1cmUgT2JqZWN0IDxpbnNwZWN0LXNpZ25hdHVyZS1vYmplY3Q+YAorICAgICAgaW50ZXJmYWNlLCB3aGljaCBwcm92aWRlcyBhIGJldHRlciB3YXkgb2YgaW50cm9zcGVjdGluZyBmdW5jdGlvbnMuCisKIAogLi4gZnVuY3Rpb246OiBnZXRhcmd2YWx1ZXMoZnJhbWUpCiAKQEAgLTQzMiwxMSArNzE2LDIzIEBACiAgICBsb2NhbHMgZGljdGlvbmFyeSBvZiB0aGUgZ2l2ZW4gZnJhbWUuCiAKIAotLi4gZnVuY3Rpb246OiBmb3JtYXRhcmdzcGVjKGFyZ3NbLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsIGZvcm1hdGFyZywgZm9ybWF0dmFyYXJncywgZm9ybWF0dmFya3csIGZvcm1hdHZhbHVlXSkKKy4uIGZ1bmN0aW9uOjogZm9ybWF0YXJnc3BlYyhhcmdzWywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLCBrd29ubHlhcmdzLCBrd29ubHlkZWZhdWx0cywgYW5ub3RhdGlvbnNbLCBmb3JtYXRhcmcsIGZvcm1hdHZhcmFyZ3MsIGZvcm1hdHZhcmt3LCBmb3JtYXR2YWx1ZSwgZm9ybWF0cmV0dXJucywgZm9ybWF0YW5ub3RhdGlvbnNdXSkKIAotICAgRm9ybWF0IGEgcHJldHR5IGFyZ3VtZW50IHNwZWMgZnJvbSB0aGUgZm91ciB2YWx1ZXMgcmV0dXJuZWQgYnkKLSAgIDpmdW5jOmBnZXRhcmdzcGVjYC4gIFRoZSBmb3JtYXRcKiBhcmd1bWVudHMgYXJlIHRoZSBjb3JyZXNwb25kaW5nIG9wdGlvbmFsCi0gICBmb3JtYXR0aW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsZWQgdG8gdHVybiBuYW1lcyBhbmQgdmFsdWVzIGludG8gc3RyaW5ncy4KKyAgIEZvcm1hdCBhIHByZXR0eSBhcmd1bWVudCBzcGVjIGZyb20gdGhlIHZhbHVlcyByZXR1cm5lZCBieQorICAgOmZ1bmM6YGdldGFyZ3NwZWNgIG9yIDpmdW5jOmBnZXRmdWxsYXJnc3BlY2AuCisKKyAgIFRoZSBmaXJzdCBzZXZlbiBhcmd1bWVudHMgYXJlIChgYGFyZ3NgYCwgYGB2YXJhcmdzYGAsIGBgdmFya3dgYCwKKyAgIGBgZGVmYXVsdHNgYCwgYGBrd29ubHlhcmdzYGAsIGBga3dvbmx5ZGVmYXVsdHNgYCwgYGBhbm5vdGF0aW9uc2BgKS4gVGhlCisgICBvdGhlciBmaXZlIGFyZ3VtZW50cyBhcmUgdGhlIGNvcnJlc3BvbmRpbmcgb3B0aW9uYWwgZm9ybWF0dGluZyBmdW5jdGlvbnMKKyAgIHRoYXQgYXJlIGNhbGxlZCB0byB0dXJuIG5hbWVzIGFuZCB2YWx1ZXMgaW50byBzdHJpbmdzLiBUaGUgbGFzdCBhcmd1bWVudAorICAgaXMgYW4gb3B0aW9uYWwgZnVuY3Rpb24gdG8gZm9ybWF0IHRoZSBzZXF1ZW5jZSBvZiBhcmd1bWVudHMuIEZvciBleGFtcGxlOjoKKworICAgID4+PiBmcm9tIGluc3BlY3QgaW1wb3J0IGZvcm1hdGFyZ3NwZWMsIGdldGZ1bGxhcmdzcGVjCisgICAgPj4+IGRlZiBmKGE6IGludCwgYjogZmxvYXQpOgorICAgIC4uLiAgICAgcGFzcworICAgIC4uLgorICAgID4+PiBmb3JtYXRhcmdzcGVjKCpnZXRmdWxsYXJnc3BlYyhmKSkKKyAgICAnKGE6IGludCwgYjogZmxvYXQpJwogCiAKIC4uIGZ1bmN0aW9uOjogZm9ybWF0YXJndmFsdWVzKGFyZ3NbLCB2YXJhcmdzLCB2YXJrdywgbG9jYWxzLCBmb3JtYXRhcmcsIGZvcm1hdHZhcmFyZ3MsIGZvcm1hdHZhcmt3LCBmb3JtYXR2YWx1ZV0pCkBAIC00NjgsMTcgKzc2NCwzNiBAQAogICAgID4+PiBmcm9tIGluc3BlY3QgaW1wb3J0IGdldGNhbGxhcmdzCiAgICAgPj4+IGRlZiBmKGEsIGI9MSwgKnBvcywgKipuYW1lZCk6CiAgICAgLi4uICAgICBwYXNzCi0gICAgPj4+IGdldGNhbGxhcmdzKGYsIDEsIDIsIDMpCi0gICAgeydhJzogMSwgJ25hbWVkJzoge30sICdiJzogMiwgJ3Bvcyc6ICgzLCl9Ci0gICAgPj4+IGdldGNhbGxhcmdzKGYsIGE9MiwgeD00KQotICAgIHsnYSc6IDIsICduYW1lZCc6IHsneCc6IDR9LCAnYic6IDEsICdwb3MnOiAoKX0KKyAgICA+Pj4gZ2V0Y2FsbGFyZ3MoZiwgMSwgMiwgMykgPT0geydhJzogMSwgJ25hbWVkJzoge30sICdiJzogMiwgJ3Bvcyc6ICgzLCl9CisgICAgVHJ1ZQorICAgID4+PiBnZXRjYWxsYXJncyhmLCBhPTIsIHg9NCkgPT0geydhJzogMiwgJ25hbWVkJzogeyd4JzogNH0sICdiJzogMSwgJ3Bvcyc6ICgpfQorICAgIFRydWUKICAgICA+Pj4gZ2V0Y2FsbGFyZ3MoZikKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgLi4uCi0gICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgYXQgbGVhc3QgMSBhcmd1bWVudCAoMCBnaXZlbikKKyAgICBUeXBlRXJyb3I6IGYoKSBtaXNzaW5nIDEgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmd1bWVudDogJ2EnCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiBub3RlOjoKKyAgICAgIENvbnNpZGVyIHVzaW5nIHRoZSBuZXcgOm1ldGg6YFNpZ25hdHVyZS5iaW5kYCBpbnN0ZWFkLgorCisKKy4uIGZ1bmN0aW9uOjogZ2V0Y2xvc3VyZXZhcnMoZnVuYykKKworICAgR2V0IHRoZSBtYXBwaW5nIG9mIGV4dGVybmFsIG5hbWUgcmVmZXJlbmNlcyBpbiBhIFB5dGhvbiBmdW5jdGlvbiBvcgorICAgbWV0aG9kICpmdW5jKiB0byB0aGVpciBjdXJyZW50IHZhbHVlcy4gQQorICAgOnRlcm06YG5hbWVkIHR1cGxlYCBgYENsb3N1cmVWYXJzKG5vbmxvY2FscywgZ2xvYmFscywgYnVpbHRpbnMsIHVuYm91bmQpYGAKKyAgIGlzIHJldHVybmVkLiAqbm9ubG9jYWxzKiBtYXBzIHJlZmVyZW5jZWQgbmFtZXMgdG8gbGV4aWNhbCBjbG9zdXJlCisgICB2YXJpYWJsZXMsICpnbG9iYWxzKiB0byB0aGUgZnVuY3Rpb24ncyBtb2R1bGUgZ2xvYmFscyBhbmQgKmJ1aWx0aW5zKiB0bworICAgdGhlIGJ1aWx0aW5zIHZpc2libGUgZnJvbSB0aGUgZnVuY3Rpb24gYm9keS4gKnVuYm91bmQqIGlzIHRoZSBzZXQgb2YgbmFtZXMKKyAgIHJlZmVyZW5jZWQgaW4gdGhlIGZ1bmN0aW9uIHRoYXQgY291bGQgbm90IGJlIHJlc29sdmVkIGF0IGFsbCBnaXZlbiB0aGUKKyAgIGN1cnJlbnQgbW9kdWxlIGdsb2JhbHMgYW5kIGJ1aWx0aW5zLgorCisgICA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZCBpZiAqZnVuYyogaXMgbm90IGEgUHl0aG9uIGZ1bmN0aW9uIG9yIG1ldGhvZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogLi4gX2luc3BlY3Qtc3RhY2s6CiAKQEAgLTY0MywzICs5NTgsMjcgQEAKICAgICAqIEdFTl9DTE9TRUQ6IEV4ZWN1dGlvbiBoYXMgY29tcGxldGVkLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKworVGhlIGN1cnJlbnQgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGdlbmVyYXRvciBjYW4gYWxzbyBiZSBxdWVyaWVkLiBUaGlzIGlzCittb3N0bHkgdXNlZnVsIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB0byBlbnN1cmUgdGhhdCBpbnRlcm5hbCBzdGF0ZSBpcyBiZWluZwordXBkYXRlZCBhcyBleHBlY3RlZDoKKworLi4gZnVuY3Rpb246OiBnZXRnZW5lcmF0b3Jsb2NhbHMoZ2VuZXJhdG9yKQorCisgICBHZXQgdGhlIG1hcHBpbmcgb2YgbGl2ZSBsb2NhbCB2YXJpYWJsZXMgaW4gKmdlbmVyYXRvciogdG8gdGhlaXIgY3VycmVudAorICAgdmFsdWVzLiAgQSBkaWN0aW9uYXJ5IGlzIHJldHVybmVkIHRoYXQgbWFwcyBmcm9tIHZhcmlhYmxlIG5hbWVzIHRvIHZhbHVlcy4KKyAgIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgY2FsbGluZyA6ZnVuYzpgbG9jYWxzYCBpbiB0aGUgYm9keSBvZiB0aGUKKyAgIGdlbmVyYXRvciwgYW5kIGFsbCB0aGUgc2FtZSBjYXZlYXRzIGFwcGx5LgorCisgICBJZiAqZ2VuZXJhdG9yKiBpcyBhIDp0ZXJtOmBnZW5lcmF0b3JgIHdpdGggbm8gY3VycmVudGx5IGFzc29jaWF0ZWQgZnJhbWUsCisgICB0aGVuIGFuIGVtcHR5IGRpY3Rpb25hcnkgaXMgcmV0dXJuZWQuICA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZCBpZgorICAgKmdlbmVyYXRvciogaXMgbm90IGEgUHl0aG9uIGdlbmVyYXRvciBvYmplY3QuCisKKyAgIC4uIGltcGwtZGV0YWlsOjoKKworICAgICAgVGhpcyBmdW5jdGlvbiByZWxpZXMgb24gdGhlIGdlbmVyYXRvciBleHBvc2luZyBhIFB5dGhvbiBzdGFjayBmcmFtZQorICAgICAgZm9yIGludHJvc3BlY3Rpb24sIHdoaWNoIGlzbid0IGd1YXJhbnRlZWQgdG8gYmUgdGhlIGNhc2UgaW4gYWxsCisgICAgICBpbXBsZW1lbnRhdGlvbnMgb2YgUHl0aG9uLiBJbiBzdWNoIGNhc2VzLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWx3YXlzCisgICAgICByZXR1cm4gYW4gZW1wdHkgZGljdGlvbmFyeS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbnRlcm5ldC5yc3QgYi9Eb2MvbGlicmFyeS9pbnRlcm5ldC5yc3QKaW5kZXggNmZhNzg3My4uYjg5NTBiYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW50ZXJuZXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ludGVybmV0LnJzdApAQCAtMjMsMTAgKzIzLDEyIEBACiAgICBjZ2kucnN0CiAgICBjZ2l0Yi5yc3QKICAgIHdzZ2lyZWYucnN0CisgICB1cmxsaWIucnN0CiAgICB1cmxsaWIucmVxdWVzdC5yc3QKICAgIHVybGxpYi5wYXJzZS5yc3QKICAgIHVybGxpYi5lcnJvci5yc3QKICAgIHVybGxpYi5yb2JvdHBhcnNlci5yc3QKKyAgIGh0dHAucnN0CiAgICBodHRwLmNsaWVudC5yc3QKICAgIGZ0cGxpYi5yc3QKICAgIHBvcGxpYi5yc3QKQEAgLTQwLDUgKzQyLDcgQEAKICAgIGh0dHAuc2VydmVyLnJzdAogICAgaHR0cC5jb29raWVzLnJzdAogICAgaHR0cC5jb29raWVqYXIucnN0CisgICB4bWxycGMucnN0CiAgICB4bWxycGMuY2xpZW50LnJzdAogICAgeG1scnBjLnNlcnZlci5yc3QKKyAgIGlwYWRkcmVzcy5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2lvLnJzdCBiL0RvYy9saWJyYXJ5L2lvLnJzdAppbmRleCAxOTM5MzUyLi5kMzBjNWZkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pby5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW8ucnN0CkBAIC0zNyw2ICszNywxMCBAQAogd2lsbCByYWlzZSBhIGBgVHlwZUVycm9yYGAuICBTbyB3aWxsIGdpdmluZyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCB0byB0aGUKIGBgd3JpdGUoKWBgIG1ldGhvZCBvZiBhIHRleHQgc3RyZWFtLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgT3BlcmF0aW9ucyB0aGF0IHVzZWQgdG8gcmFpc2UgOmV4YzpgSU9FcnJvcmAgbm93IHJhaXNlIDpleGM6YE9TRXJyb3JgLCBzaW5jZQorICAgOmV4YzpgSU9FcnJvcmAgaXMgbm93IGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorCiAKIFRleHQgSS9PCiBeXl5eXl5eXgpAQCAtNTUsNyArNTksNyBAQAogCiAgICBmID0gaW8uU3RyaW5nSU8oInNvbWUgaW5pdGlhbCB0ZXh0IGRhdGEiKQogCi1UaGUgdGV4dCBzdHJlYW0gQVBJIGlzIGRlc2NyaWJlZCBpbiBkZXRhaWwgaW4gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZQorVGhlIHRleHQgc3RyZWFtIEFQSSBpcyBkZXNjcmliZWQgaW4gZGV0YWlsIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mCiA6Y2xhc3M6YFRleHRJT0Jhc2VgLgogCiAKQEAgLTEwNiwyOCArMTEwLDIwIEBACiAgICA6ZnVuYzpgb3Muc3RhdGApIGlmIHBvc3NpYmxlLgogCiAKLS4uIGZ1bmN0aW9uOjogb3BlbihmaWxlLCBtb2RlPSdyJywgYnVmZmVyaW5nPS0xLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUpCisuLiBmdW5jdGlvbjo6IG9wZW4oZmlsZSwgbW9kZT0ncicsIGJ1ZmZlcmluZz0tMSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSwgY2xvc2VmZD1UcnVlLCBvcGVuZXI9Tm9uZSkKIAogICAgVGhpcyBpcyBhbiBhbGlhcyBmb3IgdGhlIGJ1aWx0aW4gOmZ1bmM6YG9wZW5gIGZ1bmN0aW9uLgogCiAKIC4uIGV4Y2VwdGlvbjo6IEJsb2NraW5nSU9FcnJvcgogCi0gICBFcnJvciByYWlzZWQgd2hlbiBibG9ja2luZyB3b3VsZCBvY2N1ciBvbiBhIG5vbi1ibG9ja2luZyBzdHJlYW0uICBJdCBpbmhlcml0cwotICAgOmV4YzpgSU9FcnJvcmAuCi0KLSAgIEluIGFkZGl0aW9uIHRvIHRob3NlIG9mIDpleGM6YElPRXJyb3JgLCA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgIGhhcyBvbmUKLSAgIGF0dHJpYnV0ZToKLQotICAgLi4gYXR0cmlidXRlOjogY2hhcmFjdGVyc193cml0dGVuCi0KLSAgICAgIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgd3JpdHRlbiB0byB0aGUgc3RyZWFtCi0gICAgICBiZWZvcmUgaXQgYmxvY2tlZC4KKyAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IGFsaWFzIGZvciB0aGUgYnVpbHRpbiA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgCisgICBleGNlcHRpb24uCiAKIAogLi4gZXhjZXB0aW9uOjogVW5zdXBwb3J0ZWRPcGVyYXRpb24KIAotICAgQW4gZXhjZXB0aW9uIGluaGVyaXRpbmcgOmV4YzpgSU9FcnJvcmAgYW5kIDpleGM6YFZhbHVlRXJyb3JgIHRoYXQgaXMgcmFpc2VkCisgICBBbiBleGNlcHRpb24gaW5oZXJpdGluZyA6ZXhjOmBPU0Vycm9yYCBhbmQgOmV4YzpgVmFsdWVFcnJvcmAgdGhhdCBpcyByYWlzZWQKICAgIHdoZW4gYW4gdW5zdXBwb3J0ZWQgb3BlcmF0aW9uIGlzIGNhbGxlZCBvbiBhIHN0cmVhbS4KIAogCkBAIC0yMjUsOCArMjIxLDggQEAKICAgIEV2ZW4gdGhvdWdoIDpjbGFzczpgSU9CYXNlYCBkb2VzIG5vdCBkZWNsYXJlIDptZXRoOmByZWFkYCwgOm1ldGg6YHJlYWRpbnRvYCwKICAgIG9yIDptZXRoOmB3cml0ZWAgYmVjYXVzZSB0aGVpciBzaWduYXR1cmVzIHdpbGwgdmFyeSwgaW1wbGVtZW50YXRpb25zIGFuZAogICAgY2xpZW50cyBzaG91bGQgY29uc2lkZXIgdGhvc2UgbWV0aG9kcyBwYXJ0IG9mIHRoZSBpbnRlcmZhY2UuICBBbHNvLAotICAgaW1wbGVtZW50YXRpb25zIG1heSByYWlzZSBhIDpleGM6YElPRXJyb3JgIHdoZW4gb3BlcmF0aW9ucyB0aGV5IGRvIG5vdAotICAgc3VwcG9ydCBhcmUgY2FsbGVkLgorICAgaW1wbGVtZW50YXRpb25zIG1heSByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgIChvciA6ZXhjOmBVbnN1cHBvcnRlZE9wZXJhdGlvbmApCisgICB3aGVuIG9wZXJhdGlvbnMgdGhleSBkbyBub3Qgc3VwcG9ydCBhcmUgY2FsbGVkLgogCiAgICBUaGUgYmFzaWMgdHlwZSB1c2VkIGZvciBiaW5hcnkgZGF0YSByZWFkIGZyb20gb3Igd3JpdHRlbiB0byBhIGZpbGUgaXMKICAgIDpjbGFzczpgYnl0ZXNgLiAgOmNsYXNzOmBieXRlYXJyYXlgXHMgYXJlIGFjY2VwdGVkIHRvbywgYW5kIGluIHNvbWUgY2FzZXMKQEAgLTIzNCwxNSArMjMwLDE1IEBACiAgICA6Y2xhc3M6YHN0cmAgZGF0YS4KIAogICAgTm90ZSB0aGF0IGNhbGxpbmcgYW55IG1ldGhvZCAoZXZlbiBpbnF1aXJpZXMpIG9uIGEgY2xvc2VkIHN0cmVhbSBpcwotICAgdW5kZWZpbmVkLiAgSW1wbGVtZW50YXRpb25zIG1heSByYWlzZSA6ZXhjOmBJT0Vycm9yYCBpbiB0aGlzIGNhc2UuCisgICB1bmRlZmluZWQuICBJbXBsZW1lbnRhdGlvbnMgbWF5IHJhaXNlIDpleGM6YFZhbHVlRXJyb3JgIGluIHRoaXMgY2FzZS4KIAotICAgSU9CYXNlIChhbmQgaXRzIHN1YmNsYXNzZXMpIHN1cHBvcnRzIHRoZSBpdGVyYXRvciBwcm90b2NvbCwgbWVhbmluZyB0aGF0IGFuCi0gICA6Y2xhc3M6YElPQmFzZWAgb2JqZWN0IGNhbiBiZSBpdGVyYXRlZCBvdmVyIHlpZWxkaW5nIHRoZSBsaW5lcyBpbiBhIHN0cmVhbS4KLSAgIExpbmVzIGFyZSBkZWZpbmVkIHNsaWdodGx5IGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBzdHJlYW0gaXMKLSAgIGEgYmluYXJ5IHN0cmVhbSAoeWllbGRpbmcgYnl0ZXMpLCBvciBhIHRleHQgc3RyZWFtICh5aWVsZGluZyBjaGFyYWN0ZXIKLSAgIHN0cmluZ3MpLiAgU2VlIDptZXRoOmB+SU9CYXNlLnJlYWRsaW5lYCBiZWxvdy4KKyAgIDpjbGFzczpgSU9CYXNlYCAoYW5kIGl0cyBzdWJjbGFzc2VzKSBzdXBwb3J0cyB0aGUgaXRlcmF0b3IgcHJvdG9jb2wsIG1lYW5pbmcKKyAgIHRoYXQgYW4gOmNsYXNzOmBJT0Jhc2VgIG9iamVjdCBjYW4gYmUgaXRlcmF0ZWQgb3ZlciB5aWVsZGluZyB0aGUgbGluZXMgaW4gYQorICAgc3RyZWFtLiAgTGluZXMgYXJlIGRlZmluZWQgc2xpZ2h0bHkgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlCisgICBzdHJlYW0gaXMgYSBiaW5hcnkgc3RyZWFtICh5aWVsZGluZyBieXRlcyksIG9yIGEgdGV4dCBzdHJlYW0gKHlpZWxkaW5nCisgICBjaGFyYWN0ZXIgc3RyaW5ncykuICBTZWUgOm1ldGg6YH5JT0Jhc2UucmVhZGxpbmVgIGJlbG93LgogCi0gICBJT0Jhc2UgaXMgYWxzbyBhIGNvbnRleHQgbWFuYWdlciBhbmQgdGhlcmVmb3JlIHN1cHBvcnRzIHRoZQorICAgOmNsYXNzOmBJT0Jhc2VgIGlzIGFsc28gYSBjb250ZXh0IG1hbmFnZXIgYW5kIHRoZXJlZm9yZSBzdXBwb3J0cyB0aGUKICAgIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuICBJbiB0aGlzIGV4YW1wbGUsICpmaWxlKiBpcyBjbG9zZWQgYWZ0ZXIgdGhlCiAgICA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50J3Mgc3VpdGUgaXMgZmluaXNoZWQtLS1ldmVuIGlmIGFuIGV4Y2VwdGlvbiBvY2N1cnM6OgogCkBAIC0yNjIsMTIgKzI1OCwxMiBAQAogCiAgICAuLiBhdHRyaWJ1dGU6OiBjbG9zZWQKIAotICAgICAgVHJ1ZSBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZC4KKyAgICAgIGBgVHJ1ZWBgIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkLgogCiAgICAuLiBtZXRob2Q6OiBmaWxlbm8oKQogCiAgICAgICBSZXR1cm4gdGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIChhbiBpbnRlZ2VyKSBvZiB0aGUgc3RyZWFtIGlmIGl0Ci0gICAgICBleGlzdHMuICBBbiA6ZXhjOmBJT0Vycm9yYCBpcyByYWlzZWQgaWYgdGhlIElPIG9iamVjdCBkb2VzIG5vdCB1c2UgYSBmaWxlCisgICAgICBleGlzdHMuICBBbiA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgaWYgdGhlIElPIG9iamVjdCBkb2VzIG5vdCB1c2UgYSBmaWxlCiAgICAgICBkZXNjcmlwdG9yLgogCiAgICAuLiBtZXRob2Q6OiBmbHVzaCgpCkBAIC0yODMsNyArMjc5LDcgQEAKICAgIC4uIG1ldGhvZDo6IHJlYWRhYmxlKCkKIAogICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzdHJlYW0gY2FuIGJlIHJlYWQgZnJvbS4gIElmIEZhbHNlLCA6bWV0aDpgcmVhZGAKLSAgICAgIHdpbGwgcmFpc2UgOmV4YzpgSU9FcnJvcmAuCisgICAgICB3aWxsIHJhaXNlIDpleGM6YE9TRXJyb3JgLgogCiAgICAuLiBtZXRob2Q6OiByZWFkbGluZShsaW1pdD0tMSkKIApAQCAtMzE4LDEwICszMTQsMTUgQEAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogICAgICAgICAgVGhlIGBgU0VFS18qYGAgY29uc3RhbnRzLgogCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgICAgIFNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgY291bGQgc3VwcG9ydCBhZGRpdGlvbmFsIHZhbHVlcywgbGlrZQorICAgICAgICAgOmRhdGE6YG9zLlNFRUtfSE9MRWAgb3IgOmRhdGE6YG9zLlNFRUtfREFUQWAuIFRoZSB2YWxpZCB2YWx1ZXMKKyAgICAgICAgIGZvciBhIGZpbGUgY291bGQgZGVwZW5kIG9uIGl0IGJlaW5nIG9wZW4gaW4gdGV4dCBvciBiaW5hcnkgbW9kZS4KKwogICAgLi4gbWV0aG9kOjogc2Vla2FibGUoKQogCiAgICAgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIHN0cmVhbSBzdXBwb3J0cyByYW5kb20gYWNjZXNzLiAgSWYgYGBGYWxzZWBgLAotICAgICAgOm1ldGg6YHNlZWtgLCA6bWV0aDpgdGVsbGAgYW5kIDptZXRoOmB0cnVuY2F0ZWAgd2lsbCByYWlzZSA6ZXhjOmBJT0Vycm9yYC4KKyAgICAgIDptZXRoOmBzZWVrYCwgOm1ldGg6YHRlbGxgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgIHdpbGwgcmFpc2UgOmV4YzpgT1NFcnJvcmAuCiAKICAgIC4uIG1ldGhvZDo6IHRlbGwoKQogCkBAIC0zMzksNyArMzQwLDcgQEAKICAgIC4uIG1ldGhvZDo6IHdyaXRhYmxlKCkKIAogICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzdHJlYW0gc3VwcG9ydHMgd3JpdGluZy4gIElmIGBgRmFsc2VgYCwKLSAgICAgIDptZXRoOmB3cml0ZWAgYW5kIDptZXRoOmB0cnVuY2F0ZWAgd2lsbCByYWlzZSA6ZXhjOmBJT0Vycm9yYC4KKyAgICAgIDptZXRoOmB3cml0ZWAgYW5kIDptZXRoOmB0cnVuY2F0ZWAgd2lsbCByYWlzZSA6ZXhjOmBPU0Vycm9yYC4KIAogICAgLi4gbWV0aG9kOjogd3JpdGVsaW5lcyhsaW5lcykKIApAQCAtMzU4LDcgKzM1OSw3IEBACiAgICAodGhpcyBpcyBsZWZ0IHRvIEJ1ZmZlcmVkIEkvTyBhbmQgVGV4dCBJL08sIGRlc2NyaWJlZCBsYXRlciBpbiB0aGlzIHBhZ2UpLgogCiAgICBJbiBhZGRpdGlvbiB0byB0aGUgYXR0cmlidXRlcyBhbmQgbWV0aG9kcyBmcm9tIDpjbGFzczpgSU9CYXNlYCwKLSAgIFJhd0lPQmFzZSBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CisgICA6Y2xhc3M6YFJhd0lPQmFzZWAgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgogCiAgICAuLiBtZXRob2Q6OiByZWFkKG49LTEpCiAKQEAgLTM3OCwxOCArMzc5LDE4IEBACiAKICAgIC4uIG1ldGhvZDo6IHJlYWRpbnRvKGIpCiAKLSAgICAgIFJlYWQgdXAgdG8gbGVuKGIpIGJ5dGVzIGludG8gYnl0ZWFycmF5ICpiKiBhbmQgcmV0dXJuIHRoZSBudW1iZXIKLSAgICAgIG9mIGJ5dGVzIHJlYWQuICBJZiB0aGUgb2JqZWN0IGlzIGluIG5vbi1ibG9ja2luZyBtb2RlIGFuZCBubworICAgICAgUmVhZCB1cCB0byBgYGxlbihiKWBgIGJ5dGVzIGludG8gOmNsYXNzOmBieXRlYXJyYXlgICpiKiBhbmQgcmV0dXJuIHRoZQorICAgICAgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuICBJZiB0aGUgb2JqZWN0IGlzIGluIG5vbi1ibG9ja2luZyBtb2RlIGFuZCBubwogICAgICAgYnl0ZXMgYXJlIGF2YWlsYWJsZSwgYGBOb25lYGAgaXMgcmV0dXJuZWQuCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlKGIpCiAKLSAgICAgIFdyaXRlIHRoZSBnaXZlbiBieXRlcyBvciBieXRlYXJyYXkgb2JqZWN0LCAqYiosIHRvIHRoZSB1bmRlcmx5aW5nIHJhdwotICAgICAgc3RyZWFtIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiAgVGhpcyBjYW4gYmUgbGVzcyB0aGFuCi0gICAgICBgYGxlbihiKWBgLCBkZXBlbmRpbmcgb24gc3BlY2lmaWNzIG9mIHRoZSB1bmRlcmx5aW5nIHJhdyBzdHJlYW0sIGFuZAotICAgICAgZXNwZWNpYWxseSBpZiBpdCBpcyBpbiBub24tYmxvY2tpbmcgbW9kZS4gIGBgTm9uZWBgIGlzIHJldHVybmVkIGlmIHRoZQotICAgICAgcmF3IHN0cmVhbSBpcyBzZXQgbm90IHRvIGJsb2NrIGFuZCBubyBzaW5nbGUgYnl0ZSBjb3VsZCBiZSByZWFkaWx5Ci0gICAgICB3cml0dGVuIHRvIGl0LgorICAgICAgV3JpdGUgdGhlIGdpdmVuIDpjbGFzczpgYnl0ZXNgIG9yIDpjbGFzczpgYnl0ZWFycmF5YCBvYmplY3QsICpiKiwgdG8gdGhlCisgICAgICB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uICBUaGlzIGNhbgorICAgICAgYmUgbGVzcyB0aGFuIGBgbGVuKGIpYGAsIGRlcGVuZGluZyBvbiBzcGVjaWZpY3Mgb2YgdGhlIHVuZGVybHlpbmcgcmF3CisgICAgICBzdHJlYW0sIGFuZCBlc3BlY2lhbGx5IGlmIGl0IGlzIGluIG5vbi1ibG9ja2luZyBtb2RlLiAgYGBOb25lYGAgaXMKKyAgICAgIHJldHVybmVkIGlmIHRoZSByYXcgc3RyZWFtIGlzIHNldCBub3QgdG8gYmxvY2sgYW5kIG5vIHNpbmdsZSBieXRlIGNvdWxkCisgICAgICBiZSByZWFkaWx5IHdyaXR0ZW4gdG8gaXQuCiAKIAogLi4gY2xhc3M6OiBCdWZmZXJlZElPQmFzZQpAQCAtNDM5LDggKzQ0MCw4IEBACiAgICAuLiBtZXRob2Q6OiByZWFkKG49LTEpCiAKICAgICAgIFJlYWQgYW5kIHJldHVybiB1cCB0byAqbiogYnl0ZXMuICBJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCwgYGBOb25lYGAsIG9yCi0gICAgICBuZWdhdGl2ZSwgZGF0YSBpcyByZWFkIGFuZCByZXR1cm5lZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4gIEFuIGVtcHR5IGJ5dGVzCi0gICAgICBvYmplY3QgaXMgcmV0dXJuZWQgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGF0IEVPRi4KKyAgICAgIG5lZ2F0aXZlLCBkYXRhIGlzIHJlYWQgYW5kIHJldHVybmVkIHVudGlsIEVPRiBpcyByZWFjaGVkLiAgQW4gZW1wdHkKKyAgICAgIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBpcyByZXR1cm5lZCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgYXQgRU9GLgogCiAgICAgICBJZiB0aGUgYXJndW1lbnQgaXMgcG9zaXRpdmUsIGFuZCB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtIGlzIG5vdAogICAgICAgaW50ZXJhY3RpdmUsIG11bHRpcGxlIHJhdyByZWFkcyBtYXkgYmUgaXNzdWVkIHRvIHNhdGlzZnkgdGhlIGJ5dGUgY291bnQKQEAgLTQ2MCwyMiArNDYxLDIzIEBACiAKICAgIC4uIG1ldGhvZDo6IHJlYWRpbnRvKGIpCiAKLSAgICAgIFJlYWQgdXAgdG8gbGVuKGIpIGJ5dGVzIGludG8gYnl0ZWFycmF5ICpiKiBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMKLSAgICAgIHJlYWQuCisgICAgICBSZWFkIHVwIHRvIGBgbGVuKGIpYGAgYnl0ZXMgaW50byBieXRlYXJyYXkgKmIqIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZgorICAgICAgYnl0ZXMgcmVhZC4KIAogICAgICAgTGlrZSA6bWV0aDpgcmVhZGAsIG11bHRpcGxlIHJlYWRzIG1heSBiZSBpc3N1ZWQgdG8gdGhlIHVuZGVybHlpbmcgcmF3Ci0gICAgICBzdHJlYW0sIHVubGVzcyB0aGUgbGF0dGVyIGlzICdpbnRlcmFjdGl2ZScuCisgICAgICBzdHJlYW0sIHVubGVzcyB0aGUgbGF0dGVyIGlzIGludGVyYWN0aXZlLgogCiAgICAgICBBIDpleGM6YEJsb2NraW5nSU9FcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gaXMgaW4KICAgICAgIG5vbiBibG9ja2luZy1tb2RlLCBhbmQgaGFzIG5vIGRhdGEgYXZhaWxhYmxlIGF0IHRoZSBtb21lbnQuCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlKGIpCiAKLSAgICAgIFdyaXRlIHRoZSBnaXZlbiBieXRlcyBvciBieXRlYXJyYXkgb2JqZWN0LCAqYiogYW5kIHJldHVybiB0aGUgbnVtYmVyCi0gICAgICBvZiBieXRlcyB3cml0dGVuIChuZXZlciBsZXNzIHRoYW4gYGBsZW4oYilgYCwgc2luY2UgaWYgdGhlIHdyaXRlIGZhaWxzCi0gICAgICBhbiA6ZXhjOmBJT0Vycm9yYCB3aWxsIGJlIHJhaXNlZCkuICBEZXBlbmRpbmcgb24gdGhlIGFjdHVhbAotICAgICAgaW1wbGVtZW50YXRpb24sIHRoZXNlIGJ5dGVzIG1heSBiZSByZWFkaWx5IHdyaXR0ZW4gdG8gdGhlIHVuZGVybHlpbmcKLSAgICAgIHN0cmVhbSwgb3IgaGVsZCBpbiBhIGJ1ZmZlciBmb3IgcGVyZm9ybWFuY2UgYW5kIGxhdGVuY3kgcmVhc29ucy4KKyAgICAgIFdyaXRlIHRoZSBnaXZlbiA6Y2xhc3M6YGJ5dGVzYCBvciA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0LCAqYiogYW5kCisgICAgICByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIChuZXZlciBsZXNzIHRoYW4gYGBsZW4oYilgYCwgc2luY2UgaWYKKyAgICAgIHRoZSB3cml0ZSBmYWlscyBhbiA6ZXhjOmBPU0Vycm9yYCB3aWxsIGJlIHJhaXNlZCkuICBEZXBlbmRpbmcgb24gdGhlCisgICAgICBhY3R1YWwgaW1wbGVtZW50YXRpb24sIHRoZXNlIGJ5dGVzIG1heSBiZSByZWFkaWx5IHdyaXR0ZW4gdG8gdGhlCisgICAgICB1bmRlcmx5aW5nIHN0cmVhbSwgb3IgaGVsZCBpbiBhIGJ1ZmZlciBmb3IgcGVyZm9ybWFuY2UgYW5kIGxhdGVuY3kKKyAgICAgIHJlYXNvbnMuCiAKICAgICAgIFdoZW4gaW4gbm9uLWJsb2NraW5nIG1vZGUsIGEgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYCBpcyByYWlzZWQgaWYgdGhlCiAgICAgICBkYXRhIG5lZWRlZCB0byBiZSB3cml0dGVuIHRvIHRoZSByYXcgc3RyZWFtIGJ1dCBpdCBjb3VsZG4ndCBhY2NlcHQKQEAgLTQ4NSw3ICs0ODcsNyBAQAogUmF3IEZpbGUgSS9PCiBeXl5eXl5eXl5eXl4KIAotLi4gY2xhc3M6OiBGaWxlSU8obmFtZSwgbW9kZT0ncicsIGNsb3NlZmQ9VHJ1ZSkKKy4uIGNsYXNzOjogRmlsZUlPKG5hbWUsIG1vZGU9J3InLCBjbG9zZWZkPVRydWUsIG9wZW5lcj1Ob25lKQogCiAgICA6Y2xhc3M6YEZpbGVJT2AgcmVwcmVzZW50cyBhbiBPUy1sZXZlbCBmaWxlIGNvbnRhaW5pbmcgYnl0ZXMgZGF0YS4KICAgIEl0IGltcGxlbWVudHMgdGhlIDpjbGFzczpgUmF3SU9CYXNlYCBpbnRlcmZhY2UgKGFuZCB0aGVyZWZvcmUgdGhlCkBAIC00OTMsMjIgKzQ5NSwzOCBAQAogCiAgICBUaGUgKm5hbWUqIGNhbiBiZSBvbmUgb2YgdHdvIHRoaW5nczoKIAotICAgKiBhIGNoYXJhY3RlciBzdHJpbmcgb3IgYnl0ZXMgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcGF0aCB0byB0aGUgZmlsZQotICAgICB3aGljaCB3aWxsIGJlIG9wZW5lZDsKKyAgICogYSBjaGFyYWN0ZXIgc3RyaW5nIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gdGhlCisgICAgIGZpbGUgd2hpY2ggd2lsbCBiZSBvcGVuZWQ7CiAgICAqIGFuIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2YgYW4gZXhpc3RpbmcgT1MtbGV2ZWwgZmlsZSBkZXNjcmlwdG9yCiAgICAgIHRvIHdoaWNoIHRoZSByZXN1bHRpbmcgOmNsYXNzOmBGaWxlSU9gIG9iamVjdCB3aWxsIGdpdmUgYWNjZXNzLgogCi0gICBUaGUgKm1vZGUqIGNhbiBiZSBgYCdyJ2BgLCBgYCd3J2BgIG9yIGBgJ2EnYGAgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLCB3cml0aW5nLAotICAgb3IgYXBwZW5kaW5nLiAgVGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QgZXhpc3Qgd2hlbiBvcGVuZWQgZm9yCi0gICB3cml0aW5nIG9yIGFwcGVuZGluZzsgaXQgd2lsbCBiZSB0cnVuY2F0ZWQgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcuICBBZGQgYQorICAgVGhlICptb2RlKiBjYW4gYmUgYGAncidgYCwgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgIGZvciByZWFkaW5nCisgICAoZGVmYXVsdCksIHdyaXRpbmcsIGV4Y2x1c2l2ZSBjcmVhdGlvbiBvciBhcHBlbmRpbmcuIFRoZSBmaWxlIHdpbGwgYmUKKyAgIGNyZWF0ZWQgaWYgaXQgZG9lc24ndCBleGlzdCB3aGVuIG9wZW5lZCBmb3Igd3JpdGluZyBvciBhcHBlbmRpbmc7IGl0IHdpbGwgYmUKKyAgIHRydW5jYXRlZCB3aGVuIG9wZW5lZCBmb3Igd3JpdGluZy4gOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCB3aWxsIGJlIHJhaXNlZCBpZgorICAgaXQgYWxyZWFkeSBleGlzdHMgd2hlbiBvcGVuZWQgZm9yIGNyZWF0aW5nLiBPcGVuaW5nIGEgZmlsZSBmb3IgY3JlYXRpbmcKKyAgIGltcGxpZXMgd3JpdGluZywgc28gdGhpcyBtb2RlIGJlaGF2ZXMgaW4gYSBzaW1pbGFyIHdheSB0byBgYCd3J2BgLiBBZGQgYQogICAgYGAnKydgYCB0byB0aGUgbW9kZSB0byBhbGxvdyBzaW11bHRhbmVvdXMgcmVhZGluZyBhbmQgd3JpdGluZy4KIAogICAgVGhlIDptZXRoOmByZWFkYCAod2hlbiBjYWxsZWQgd2l0aCBhIHBvc2l0aXZlIGFyZ3VtZW50KSwgOm1ldGg6YHJlYWRpbnRvYAogICAgYW5kIDptZXRoOmB3cml0ZWAgbWV0aG9kcyBvbiB0aGlzIGNsYXNzIHdpbGwgb25seSBtYWtlIG9uZSBzeXN0ZW0gY2FsbC4KIAorICAgQSBjdXN0b20gb3BlbmVyIGNhbiBiZSB1c2VkIGJ5IHBhc3NpbmcgYSBjYWxsYWJsZSBhcyAqb3BlbmVyKi4gVGhlIHVuZGVybHlpbmcKKyAgIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGUgb2JqZWN0IGlzIHRoZW4gb2J0YWluZWQgYnkgY2FsbGluZyAqb3BlbmVyKiB3aXRoCisgICAoKm5hbWUqLCAqZmxhZ3MqKS4gKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgKHBhc3NpbmcKKyAgIDptb2Q6YG9zLm9wZW5gIGFzICpvcGVuZXIqIHJlc3VsdHMgaW4gZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHBhc3NpbmcKKyAgIGBgTm9uZWBgKS4KKworICAgU2VlIHRoZSA6ZnVuYzpgb3BlbmAgYnVpbHQtaW4gZnVuY3Rpb24gZm9yIGV4YW1wbGVzIG9uIHVzaW5nIHRoZSAqb3BlbmVyKgorICAgcGFyYW1ldGVyLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhlICpvcGVuZXIqIHBhcmFtZXRlciB3YXMgYWRkZWQuCisgICAgICBUaGUgYGAneCdgYCBtb2RlIHdhcyBhZGRlZC4KKwogICAgSW4gYWRkaXRpb24gdG8gdGhlIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMgZnJvbSA6Y2xhc3M6YElPQmFzZWAgYW5kCiAgICA6Y2xhc3M6YFJhd0lPQmFzZWAsIDpjbGFzczpgRmlsZUlPYCBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGRhdGEKLSAgIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHM6CisgICBhdHRyaWJ1dGVzOgogCiAgICAuLiBhdHRyaWJ1dGU6OiBtb2RlCiAKQEAgLTU1Niw3ICs1NzQsNyBAQAogCiAgICAuLiBtZXRob2Q6OiBnZXR2YWx1ZSgpCiAKLSAgICAgIFJldHVybiBgYGJ5dGVzYGAgY29udGFpbmluZyB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBidWZmZXIuCisgICAgICBSZXR1cm4gOmNsYXNzOmBieXRlc2AgY29udGFpbmluZyB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBidWZmZXIuCiAKICAgIC4uIG1ldGhvZDo6IHJlYWQxKCkKIApAQCAtNjAwLDcgKzYxOCw3IEBACiAKICAgIEEgYnVmZmVyIHByb3ZpZGluZyBoaWdoZXItbGV2ZWwgYWNjZXNzIHRvIGEgd3JpdGVhYmxlLCBzZXF1ZW50aWFsCiAgICA6Y2xhc3M6YFJhd0lPQmFzZWAgb2JqZWN0LiAgSXQgaW5oZXJpdHMgOmNsYXNzOmBCdWZmZXJlZElPQmFzZWAuCi0gICBXaGVuIHdyaXRpbmcgdG8gdGhpcyBvYmplY3QsIGRhdGEgaXMgbm9ybWFsbHkgaGVsZCBpbnRvIGFuIGludGVybmFsCisgICBXaGVuIHdyaXRpbmcgdG8gdGhpcyBvYmplY3QsIGRhdGEgaXMgbm9ybWFsbHkgcGxhY2VkIGludG8gYW4gaW50ZXJuYWwKICAgIGJ1ZmZlci4gIFRoZSBidWZmZXIgd2lsbCBiZSB3cml0dGVuIG91dCB0byB0aGUgdW5kZXJseWluZyA6Y2xhc3M6YFJhd0lPQmFzZWAKICAgIG9iamVjdCB1bmRlciB2YXJpb3VzIGNvbmRpdGlvbnMsIGluY2x1ZGluZzoKIApAQCAtNjEzLDggKzYzMSw2IEBACiAgICAqcmF3KiBzdHJlYW0uICBJZiB0aGUgKmJ1ZmZlcl9zaXplKiBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvCiAgICA6ZGF0YTpgREVGQVVMVF9CVUZGRVJfU0laRWAuCiAKLSAgIEEgdGhpcmQgYXJndW1lbnQsICptYXhfYnVmZmVyX3NpemUqLCBpcyBzdXBwb3J0ZWQsIGJ1dCB1bnVzZWQgYW5kIGRlcHJlY2F0ZWQuCi0KICAgIDpjbGFzczpgQnVmZmVyZWRXcml0ZXJgIHByb3ZpZGVzIG9yIG92ZXJyaWRlcyB0aGVzZSBtZXRob2RzIGluIGFkZGl0aW9uIHRvCiAgICB0aG9zZSBmcm9tIDpjbGFzczpgQnVmZmVyZWRJT0Jhc2VgIGFuZCA6Y2xhc3M6YElPQmFzZWA6CiAKQEAgLTYyNSw5ICs2NDEsMTAgQEAKIAogICAgLi4gbWV0aG9kOjogd3JpdGUoYikKIAotICAgICAgV3JpdGUgdGhlIGJ5dGVzIG9yIGJ5dGVhcnJheSBvYmplY3QsICpiKiBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMKLSAgICAgIHdyaXR0ZW4uICBXaGVuIGluIG5vbi1ibG9ja2luZyBtb2RlLCBhIDpleGM6YEJsb2NraW5nSU9FcnJvcmAgaXMgcmFpc2VkCi0gICAgICBpZiB0aGUgYnVmZmVyIG5lZWRzIHRvIGJlIHdyaXR0ZW4gb3V0IGJ1dCB0aGUgcmF3IHN0cmVhbSBibG9ja3MuCisgICAgICBXcml0ZSB0aGUgOmNsYXNzOmBieXRlc2Agb3IgOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdCwgKmIqIGFuZCByZXR1cm4gdGhlCisgICAgICBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4gIFdoZW4gaW4gbm9uLWJsb2NraW5nIG1vZGUsIGEKKyAgICAgIDpleGM6YEJsb2NraW5nSU9FcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBidWZmZXIgbmVlZHMgdG8gYmUgd3JpdHRlbiBvdXQgYnV0CisgICAgICB0aGUgcmF3IHN0cmVhbSBibG9ja3MuCiAKIAogLi4gY2xhc3M6OiBCdWZmZXJlZFJhbmRvbShyYXcsIGJ1ZmZlcl9zaXplPURFRkFVTFRfQlVGRkVSX1NJWkUpCkBAIC02NDAsOCArNjU3LDYgQEAKICAgIGluIHRoZSBmaXJzdCBhcmd1bWVudC4gIElmIHRoZSAqYnVmZmVyX3NpemUqIGlzIG9taXR0ZWQgaXQgZGVmYXVsdHMgdG8KICAgIDpkYXRhOmBERUZBVUxUX0JVRkZFUl9TSVpFYC4KIAotICAgQSB0aGlyZCBhcmd1bWVudCwgKm1heF9idWZmZXJfc2l6ZSosIGlzIHN1cHBvcnRlZCwgYnV0IHVudXNlZCBhbmQgZGVwcmVjYXRlZC4KLQogICAgOmNsYXNzOmBCdWZmZXJlZFJhbmRvbWAgaXMgY2FwYWJsZSBvZiBhbnl0aGluZyA6Y2xhc3M6YEJ1ZmZlcmVkUmVhZGVyYCBvcgogICAgOmNsYXNzOmBCdWZmZXJlZFdyaXRlcmAgY2FuIGRvLgogCkBAIC02NTYsOSArNjcxLDYgQEAKICAgIHdyaXRlYWJsZSByZXNwZWN0aXZlbHkuICBJZiB0aGUgKmJ1ZmZlcl9zaXplKiBpcyBvbWl0dGVkIGl0IGRlZmF1bHRzIHRvCiAgICA6ZGF0YTpgREVGQVVMVF9CVUZGRVJfU0laRWAuCiAKLSAgIEEgZm91cnRoIGFyZ3VtZW50LCAqbWF4X2J1ZmZlcl9zaXplKiwgaXMgc3VwcG9ydGVkLCBidXQgdW51c2VkIGFuZAotICAgZGVwcmVjYXRlZC4KLQogICAgOmNsYXNzOmBCdWZmZXJlZFJXUGFpcmAgaW1wbGVtZW50cyBhbGwgb2YgOmNsYXNzOmBCdWZmZXJlZElPQmFzZWBcJ3MgbWV0aG9kcwogICAgZXhjZXB0IGZvciA6bWV0aDpgfkJ1ZmZlcmVkSU9CYXNlLmRldGFjaGAsIHdoaWNoIHJhaXNlcwogICAgOmV4YzpgVW5zdXBwb3J0ZWRPcGVyYXRpb25gLgpAQCAtNzAxLDcgKzcxMyw3IEBACiAKICAgICAgIFRoZSB1bmRlcmx5aW5nIGJpbmFyeSBidWZmZXIgKGEgOmNsYXNzOmBCdWZmZXJlZElPQmFzZWAgaW5zdGFuY2UpIHRoYXQKICAgICAgIDpjbGFzczpgVGV4dElPQmFzZWAgZGVhbHMgd2l0aC4gIFRoaXMgaXMgbm90IHBhcnQgb2YgdGhlCi0gICAgICA6Y2xhc3M6YFRleHRJT0Jhc2VgIEFQSSBhbmQgbWF5IG5vdCBleGlzdCBvbiBzb21lIGltcGxlbWVudGF0aW9ucy4KKyAgICAgIDpjbGFzczpgVGV4dElPQmFzZWAgQVBJIGFuZCBtYXkgbm90IGV4aXN0IGluIHNvbWUgaW1wbGVtZW50YXRpb25zLgogCiAgICAuLiBtZXRob2Q6OiBkZXRhY2goKQogCkBAIC03NjEsMTMgKzc3MywxNSBAQAogICAgICAgd3JpdHRlbi4KIAogCi0uLiBjbGFzczo6IFRleHRJT1dyYXBwZXIoYnVmZmVyLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLCBsaW5lX2J1ZmZlcmluZz1GYWxzZSkKKy4uIGNsYXNzOjogVGV4dElPV3JhcHBlcihidWZmZXIsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX2J1ZmZlcmluZz1GYWxzZSwgd3JpdGVfdGhyb3VnaD1GYWxzZSkKIAogICAgQSBidWZmZXJlZCB0ZXh0IHN0cmVhbSBvdmVyIGEgOmNsYXNzOmBCdWZmZXJlZElPQmFzZWAgYmluYXJ5IHN0cmVhbS4KICAgIEl0IGluaGVyaXRzIDpjbGFzczpgVGV4dElPQmFzZWAuCiAKICAgICplbmNvZGluZyogZ2l2ZXMgdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHRoYXQgdGhlIHN0cmVhbSB3aWxsIGJlIGRlY29kZWQgb3IKLSAgIGVuY29kZWQgd2l0aC4gIEl0IGRlZmF1bHRzIHRvIDpmdW5jOmBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmdgLgorICAgZW5jb2RlZCB3aXRoLiAgSXQgZGVmYXVsdHMgdG8KKyAgIDpmdW5jOmBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpIDxsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2Rpbmc+YC4KIAogICAgKmVycm9ycyogaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIGhvdyBlbmNvZGluZyBhbmQgZGVjb2RpbmcKICAgIGVycm9ycyBhcmUgdG8gYmUgaGFuZGxlZC4gIFBhc3MgYGAnc3RyaWN0J2BgIHRvIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAKQEAgLTgwNCw2ICs4MTgsMTkgQEAKICAgIElmICpsaW5lX2J1ZmZlcmluZyogaXMgYGBUcnVlYGAsIDptZXRoOmBmbHVzaGAgaXMgaW1wbGllZCB3aGVuIGEgY2FsbCB0bwogICAgd3JpdGUgY29udGFpbnMgYSBuZXdsaW5lIGNoYXJhY3Rlci4KIAorICAgSWYgKndyaXRlX3Rocm91Z2gqIGlzIGBgVHJ1ZWBgLCBjYWxscyB0byA6bWV0aDpgd3JpdGVgIGFyZSBndWFyYW50ZWVkCisgICBub3QgdG8gYmUgYnVmZmVyZWQ6IGFueSBkYXRhIHdyaXR0ZW4gb24gdGhlIDpjbGFzczpgVGV4dElPV3JhcHBlcmAKKyAgIG9iamVjdCBpcyBpbW1lZGlhdGVseSBoYW5kbGVkIHRvIGl0cyB1bmRlcmx5aW5nIGJpbmFyeSAqYnVmZmVyKi4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSAqd3JpdGVfdGhyb3VnaCogYXJndW1lbnQgaGFzIGJlZW4gYWRkZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgZGVmYXVsdCAqZW5jb2RpbmcqIGlzIG5vdyBgYGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSlgYAorICAgICAgaW5zdGVhZCBvZiBgYGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpYGAuIERvbid0IGNoYW5nZSB0ZW1wb3JhcnkgdGhlCisgICAgICBsb2NhbGUgZW5jb2RpbmcgdXNpbmcgOmZ1bmM6YGxvY2FsZS5zZXRsb2NhbGVgLCB1c2UgdGhlIGN1cnJlbnQgbG9jYWxlCisgICAgICBlbmNvZGluZyBpbnN0ZWFkIG9mIHRoZSB1c2VyIHByZWZlcnJlZCBlbmNvZGluZy4KKwogICAgOmNsYXNzOmBUZXh0SU9XcmFwcGVyYCBwcm92aWRlcyBvbmUgYXR0cmlidXRlIGluIGFkZGl0aW9uIHRvIHRob3NlIG9mCiAgICA6Y2xhc3M6YFRleHRJT0Jhc2VgIGFuZCBpdHMgcGFyZW50czoKIApAQCAtODcwLDggKzg5Nyw4IEBACiBraW5kIG9mIEkvTyB3aGljaCBpcyBwZXJmb3JtZWQuICBGb3IgZXhhbXBsZSwgb24gc29tZSBtb2Rlcm4gT1NlcyBzdWNoIGFzIExpbnV4LAogdW5idWZmZXJlZCBkaXNrIEkvTyBjYW4gYmUgYXMgZmFzdCBhcyBidWZmZXJlZCBJL08uICBUaGUgYm90dG9tIGxpbmUsIGhvd2V2ZXIsCiBpcyB0aGF0IGJ1ZmZlcmVkIEkvTyBvZmZlcnMgcHJlZGljdGFibGUgcGVyZm9ybWFuY2UgcmVnYXJkbGVzcyBvZiB0aGUgcGxhdGZvcm0KLWFuZCB0aGUgYmFja2luZyBkZXZpY2UuICBUaGVyZWZvcmUsIGl0IGlzIG1vc3QgYWx3YXlzIHByZWZlcmFibGUgdG8gdXNlIGJ1ZmZlcmVkCi1JL08gcmF0aGVyIHRoYW4gdW5idWZmZXJlZCBJL08gZm9yIGJpbmFyeSBkYXRhbAorYW5kIHRoZSBiYWNraW5nIGRldmljZS4gIFRoZXJlZm9yZSwgaXQgaXMgYWxtb3N0IGFsd2F5cyBwcmVmZXJhYmxlIHRvIHVzZQorYnVmZmVyZWQgSS9PIHJhdGhlciB0aGFuIHVuYnVmZmVyZWQgSS9PIGZvciBiaW5hcnkgZGF0YS4KIAogVGV4dCBJL08KIF5eXl5eXl5eCkBAIC05MDYsOCArOTMzLDggQEAKIDpjbGFzczpgQnVmZmVyZWRXcml0ZXJgLCA6Y2xhc3M6YEJ1ZmZlcmVkUmFuZG9tYCBhbmQgOmNsYXNzOmBCdWZmZXJlZFJXUGFpcmApCiBhcmUgbm90IHJlZW50cmFudC4gIFdoaWxlIHJlZW50cmFudCBjYWxscyB3aWxsIG5vdCBoYXBwZW4gaW4gbm9ybWFsIHNpdHVhdGlvbnMsCiB0aGV5IGNhbiBhcmlzZSBmcm9tIGRvaW5nIEkvTyBpbiBhIDptb2Q6YHNpZ25hbGAgaGFuZGxlci4gIElmIGEgdGhyZWFkIHRyaWVzIHRvCi1yZW50ZXIgYSBidWZmZXJlZCBvYmplY3Qgd2hpY2ggaXQgaXMgYWxyZWFkeSBhY2Nlc3NpbmcsIGEgOmV4YzpgUnVudGltZUVycm9yYCBpcwotcmFpc2VkLiAgTm90ZSB0aGlzIGRvZXNuJ3QgcHJvaGliaXQgYSBkaWZmZXJlbnQgdGhyZWFkIGZyb20gZW50ZXJpbmcgdGhlCityZS1lbnRlciBhIGJ1ZmZlcmVkIG9iamVjdCB3aGljaCBpdCBpcyBhbHJlYWR5IGFjY2Vzc2luZywgYSA6ZXhjOmBSdW50aW1lRXJyb3JgCitpcyByYWlzZWQuICBOb3RlIHRoaXMgZG9lc24ndCBwcm9oaWJpdCBhIGRpZmZlcmVudCB0aHJlYWQgZnJvbSBlbnRlcmluZyB0aGUKIGJ1ZmZlcmVkIG9iamVjdC4KIAogVGhlIGFib3ZlIGltcGxpY2l0bHkgZXh0ZW5kcyB0byB0ZXh0IGZpbGVzLCBzaW5jZSB0aGUgOmZ1bmM6YG9wZW4oKWAgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2lwYWRkcmVzcy5yc3QgYi9Eb2MvbGlicmFyeS9pcGFkZHJlc3MucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkMjMyMTcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9pcGFkZHJlc3MucnN0CkBAIC0wLDAgKzEsODA0IEBACis6bW9kOmBpcGFkZHJlc3NgIC0tLSBJUHY0L0lQdjYgbWFuaXB1bGF0aW9uIGxpYnJhcnkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBtb2R1bGU6OiBpcGFkZHJlc3MKKyAgIDpzeW5vcHNpczogSVB2NC9JUHY2IG1hbmlwdWxhdGlvbiBsaWJyYXJ5LgorLi4gbW9kdWxlYXV0aG9yOjogUGV0ZXIgTW9vZHkKKworKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvaXBhZGRyZXNzLnB5YAorCistLS0tLS0tLS0tLS0tLQorCisuLiBub3RlOjoKKworICAgVGhlIGBgaXBhZGRyZXNzYGAgbW9kdWxlIGhhcyBiZWVuIGluY2x1ZGVkIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG9uIGEKKyAgIDp0ZXJtOmBwcm92aXNpb25hbCBiYXNpcyA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLiBCYWNrd2FyZHMgaW5jb21wYXRpYmxlCisgICBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwgb2YgdGhlIHBhY2thZ2UpIG1heSBvY2N1ciBpZiBkZWVtZWQKKyAgIG5lY2Vzc2FyeSBieSB0aGUgY29yZSBkZXZlbG9wZXJzLgorCis6bW9kOmBpcGFkZHJlc3NgIHByb3ZpZGVzIHRoZSBjYXBhYmlsaXRpZXMgdG8gY3JlYXRlLCBtYW5pcHVsYXRlIGFuZAorb3BlcmF0ZSBvbiBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcyBhbmQgbmV0d29ya3MuCisKK1RoZSBmdW5jdGlvbnMgYW5kIGNsYXNzZXMgaW4gdGhpcyBtb2R1bGUgbWFrZSBpdCBzdHJhaWdodGZvcndhcmQgdG8gaGFuZGxlCit2YXJpb3VzIHRhc2tzIHJlbGF0ZWQgdG8gSVAgYWRkcmVzc2VzLCBpbmNsdWRpbmcgY2hlY2tpbmcgd2hldGhlciBvciBub3QgdHdvCitob3N0cyBhcmUgb24gdGhlIHNhbWUgc3VibmV0LCBpdGVyYXRpbmcgb3ZlciBhbGwgaG9zdHMgaW4gYSBwYXJ0aWN1bGFyCitzdWJuZXQsIGNoZWNraW5nIHdoZXRoZXIgb3Igbm90IGEgc3RyaW5nIHJlcHJlc2VudHMgYSB2YWxpZCBJUCBhZGRyZXNzIG9yCituZXR3b3JrIGRlZmluaXRpb24sIGFuZCBzbyBvbi4KKworVGhpcyBpcyB0aGUgZnVsbCBtb2R1bGUgQVBJIHJlZmVyZW5jZSAtIGZvciBhbiBvdmVydmlldyBhbmQgaW50cm9kdWN0aW9uLAorc2VlIDpyZWY6YGlwYWRkcmVzcy1ob3d0b2AuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKK0NvbnZlbmllbmNlIGZhY3RvcnkgZnVuY3Rpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgaXBhZGRyZXNzYCBtb2R1bGUgcHJvdmlkZXMgZmFjdG9yeSBmdW5jdGlvbnMgdG8gY29udmVuaWVudGx5IGNyZWF0ZQorSVAgYWRkcmVzc2VzLCBuZXR3b3JrcyBhbmQgaW50ZXJmYWNlczoKKworLi4gZnVuY3Rpb246OiBpcF9hZGRyZXNzKGFkZHJlc3MpCisKKyAgIFJldHVybiBhbiA6Y2xhc3M6YElQdjRBZGRyZXNzYCBvciA6Y2xhc3M6YElQdjZBZGRyZXNzYCBvYmplY3QgZGVwZW5kaW5nIG9uCisgICB0aGUgSVAgYWRkcmVzcyBwYXNzZWQgYXMgYXJndW1lbnQuICBFaXRoZXIgSVB2NCBvciBJUHY2IGFkZHJlc3NlcyBtYXkgYmUKKyAgIHN1cHBsaWVkOyBpbnRlZ2VycyBsZXNzIHRoYW4gMioqMzIgd2lsbCBiZSBjb25zaWRlcmVkIHRvIGJlIElQdjQgYnkgZGVmYXVsdC4KKyAgIEEgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmICphZGRyZXNzKiBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWxpZCBJUHY0CisgICBvciBJUHY2IGFkZHJlc3MuCisKKy4uIHRlc3RzZXR1cDo6CisgICA+Pj4gaW1wb3J0IGlwYWRkcmVzcworICAgPj4+IGZyb20gaXBhZGRyZXNzIGltcG9ydCAoaXBfbmV0d29yaywgSVB2NEFkZHJlc3MsIElQdjRJbnRlcmZhY2UsCisgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICBJUHY0TmV0d29yaykKKworOjoKKworICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMTY4LjAuMScpCisgICBJUHY0QWRkcmVzcygnMTkyLjE2OC4wLjEnKQorICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOmRiODo6JykKKyAgIElQdjZBZGRyZXNzKCcyMDAxOmRiODo6JykKKworCisuLiBmdW5jdGlvbjo6IGlwX25ldHdvcmsoYWRkcmVzcywgc3RyaWN0PVRydWUpCisKKyAgIFJldHVybiBhbiA6Y2xhc3M6YElQdjROZXR3b3JrYCBvciA6Y2xhc3M6YElQdjZOZXR3b3JrYCBvYmplY3QgZGVwZW5kaW5nIG9uCisgICB0aGUgSVAgYWRkcmVzcyBwYXNzZWQgYXMgYXJndW1lbnQuICAqYWRkcmVzcyogaXMgYSBzdHJpbmcgb3IgaW50ZWdlcgorICAgcmVwcmVzZW50aW5nIHRoZSBJUCBuZXR3b3JrLiAgRWl0aGVyIElQdjQgb3IgSVB2NiBuZXR3b3JrcyBtYXkgYmUgc3VwcGxpZWQ7CisgICBpbnRlZ2VycyBsZXNzIHRoYW4gMioqMzIgd2lsbCBiZSBjb25zaWRlcmVkIHRvIGJlIElQdjQgYnkgZGVmYXVsdC4gICpzdHJpY3QqCisgICBpcyBwYXNzZWQgdG8gOmNsYXNzOmBJUHY0TmV0d29ya2Agb3IgOmNsYXNzOmBJUHY2TmV0d29ya2AgY29uc3RydWN0b3IuICBBCisgICA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgKmFkZHJlc3MqIGRvZXMgbm90IHJlcHJlc2VudCBhIHZhbGlkIElQdjQgb3IKKyAgIElQdjYgYWRkcmVzcywgb3IgaWYgdGhlIG5ldHdvcmsgaGFzIGhvc3QgYml0cyBzZXQuCisKKyAgID4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTkyLjE2OC4wLjAvMjgnKQorICAgSVB2NE5ldHdvcmsoJzE5Mi4xNjguMC4wLzI4JykKKworCisuLiBmdW5jdGlvbjo6IGlwX2ludGVyZmFjZShhZGRyZXNzKQorCisgICBSZXR1cm4gYW4gOmNsYXNzOmBJUHY0SW50ZXJmYWNlYCBvciA6Y2xhc3M6YElQdjZJbnRlcmZhY2VgIG9iamVjdCBkZXBlbmRpbmcKKyAgIG9uIHRoZSBJUCBhZGRyZXNzIHBhc3NlZCBhcyBhcmd1bWVudC4gICphZGRyZXNzKiBpcyBhIHN0cmluZyBvciBpbnRlZ2VyCisgICByZXByZXNlbnRpbmcgdGhlIElQIGFkZHJlc3MuICBFaXRoZXIgSVB2NCBvciBJUHY2IGFkZHJlc3NlcyBtYXkgYmUgc3VwcGxpZWQ7CisgICBpbnRlZ2VycyBsZXNzIHRoYW4gMioqMzIgd2lsbCBiZSBjb25zaWRlcmVkIHRvIGJlIElQdjQgYnkgZGVmYXVsdC4gIEEKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqYWRkcmVzcyogZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsaWQgSVB2NCBvcgorICAgSVB2NiBhZGRyZXNzLgorCitPbmUgZG93bnNpZGUgb2YgdGhlc2UgY29udmVuaWVuY2UgZnVuY3Rpb25zIGlzIHRoYXQgdGhlIG5lZWQgdG8gaGFuZGxlIGJvdGgKK0lQdjQgYW5kIElQdjYgZm9ybWF0cyBtZWFucyB0aGF0IGVycm9yIG1lc3NhZ2VzIHByb3ZpZGUgbWluaW1hbAoraW5mb3JtYXRpb24gb24gdGhlIHByZWNpc2UgZXJyb3IsIGFzIHRoZSBmdW5jdGlvbnMgZG9uJ3Qga25vdyB3aGV0aGVyIHRoZQorSVB2NCBvciBJUHY2IGZvcm1hdCB3YXMgaW50ZW5kZWQuIE1vcmUgZGV0YWlsZWQgZXJyb3IgcmVwb3J0aW5nIGNhbiBiZQorb2J0YWluZWQgYnkgY2FsbGluZyB0aGUgYXBwcm9wcmlhdGUgdmVyc2lvbiBzcGVjaWZpYyBjbGFzcyBjb25zdHJ1Y3RvcnMKK2RpcmVjdGx5LgorCisKK0lQIEFkZHJlc3NlcworLS0tLS0tLS0tLS0tCisKK0FkZHJlc3Mgb2JqZWN0cworXl5eXl5eXl5eXl5eXl5eCisKK1RoZSA6Y2xhc3M6YElQdjRBZGRyZXNzYCBhbmQgOmNsYXNzOmBJUHY2QWRkcmVzc2Agb2JqZWN0cyBzaGFyZSBhIGxvdCBvZiBjb21tb24KK2F0dHJpYnV0ZXMuICBTb21lIGF0dHJpYnV0ZXMgdGhhdCBhcmUgb25seSBtZWFuaW5nZnVsIGZvciBJUHY2IGFkZHJlc3NlcyBhcmUKK2Fsc28gaW1wbGVtZW50ZWQgYnkgOmNsYXNzOmBJUHY0QWRkcmVzc2Agb2JqZWN0cywgaW4gb3JkZXIgdG8gbWFrZSBpdCBlYXNpZXIgdG8KK3dyaXRlIGNvZGUgdGhhdCBoYW5kbGVzIGJvdGggSVAgdmVyc2lvbnMgY29ycmVjdGx5LgorCisuLiBjbGFzczo6IElQdjRBZGRyZXNzKGFkZHJlc3MpCisKKyAgIENvbnN0cnVjdCBhbiBJUHY0IGFkZHJlc3MuICBBbiA6ZXhjOmBBZGRyZXNzVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmCisgICAqYWRkcmVzcyogaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzLgorCisgICBUaGUgZm9sbG93aW5nIGNvbnN0aXR1dGVzIGEgdmFsaWQgSVB2NCBhZGRyZXNzOgorCisgICAxLiBBIHN0cmluZyBpbiBkZWNpbWFsLWRvdCBub3RhdGlvbiwgY29uc2lzdGluZyBvZiBmb3VyIGRlY2ltYWwgaW50ZWdlcnMgaW4KKyAgICAgIHRoZSBpbmNsdXNpdmUgcmFuZ2UgMC0yNTUsIHNlcGFyYXRlZCBieSBkb3RzIChlLmcuIGBgMTkyLjE2OC4wLjFgYCkuIEVhY2gKKyAgICAgIGludGVnZXIgcmVwcmVzZW50cyBhbiBvY3RldCAoYnl0ZSkgaW4gdGhlIGFkZHJlc3MuIExlYWRpbmcgemVyb2VzIGFyZQorICAgICAgdG9sZXJhdGVkIG9ubHkgZm9yIHZhbHVlcyBsZXNzIHRoZW4gOCAoYXMgdGhlcmUgaXMgbm8gYW1iaWd1aXR5CisgICAgICBiZXR3ZWVuIHRoZSBkZWNpbWFsIGFuZCBvY3RhbCBpbnRlcnByZXRhdGlvbnMgb2Ygc3VjaCBzdHJpbmdzKS4KKyAgIDIuIEFuIGludGVnZXIgdGhhdCBmaXRzIGludG8gMzIgYml0cy4KKyAgIDMuIEFuIGludGVnZXIgcGFja2VkIGludG8gYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3Qgb2YgbGVuZ3RoIDQgKG1vc3QKKyAgICAgIHNpZ25pZmljYW50IG9jdGV0IGZpcnN0KS4KKworICAgPj4+IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTkyLjE2OC4wLjEnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4xNjguMC4xJykKKyAgID4+PiBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoMzIzMjIzNTUyMSkKKyAgIElQdjRBZGRyZXNzKCcxOTIuMTY4LjAuMScpCisgICA+Pj4gaXBhZGRyZXNzLklQdjRBZGRyZXNzKGInXHhDMFx4QThceDAwXHgwMScpCisgICBJUHY0QWRkcmVzcygnMTkyLjE2OC4wLjEnKQorCisgICAuLiBhdHRyaWJ1dGU6OiB2ZXJzaW9uCisKKyAgICAgIFRoZSBhcHByb3ByaWF0ZSB2ZXJzaW9uIG51bWJlcjogYGA0YGAgZm9yIElQdjQsIGBgNmBgIGZvciBJUHY2LgorCisgICAuLiBhdHRyaWJ1dGU6OiBtYXhfcHJlZml4bGVuCisKKyAgICAgIFRoZSB0b3RhbCBudW1iZXIgb2YgYml0cyBpbiB0aGUgYWRkcmVzcyByZXByZXNlbnRhdGlvbiBmb3IgdGhpcworICAgICAgdmVyc2lvbjogYGAzMmBgIGZvciBJUHY0LCBgYDEyOGBgIGZvciBJUHY2LgorCisgICAgICBUaGUgcHJlZml4IGRlZmluZXMgdGhlIG51bWJlciBvZiBsZWFkaW5nIGJpdHMgaW4gYW4gIGFkZHJlc3MgdGhhdAorICAgICAgYXJlIGNvbXBhcmVkIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBhbiBhZGRyZXNzIGlzIHBhcnQgb2YgYQorICAgICAgbmV0d29yay4KKworICAgLi4gYXR0cmlidXRlOjogY29tcHJlc3NlZAorICAgLi4gYXR0cmlidXRlOjogZXhwbG9kZWQKKworICAgICAgVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBpbiBkb3R0ZWQgZGVjaW1hbCBub3RhdGlvbi4gTGVhZGluZyB6ZXJvZXMKKyAgICAgIGFyZSBuZXZlciBpbmNsdWRlZCBpbiB0aGUgcmVwcmVzZW50YXRpb24uCisKKyAgICAgIEFzIElQdjQgZG9lcyBub3QgZGVmaW5lIGEgc2hvcnRoYW5kIG5vdGF0aW9uIGZvciBhZGRyZXNzZXMgd2l0aCBvY3RldHMKKyAgICAgIHNldCB0byB6ZXJvLCB0aGVzZSB0d28gYXR0cmlidXRlcyBhcmUgYWx3YXlzIHRoZSBzYW1lIGFzIGBgc3RyKGFkZHIpYGAKKyAgICAgIGZvciBJUHY0IGFkZHJlc3Nlcy4gRXhwb3NpbmcgdGhlc2UgYXR0cmlidXRlcyBtYWtlcyBpdCBlYXNpZXIgdG8KKyAgICAgIHdyaXRlIGRpc3BsYXkgY29kZSB0aGF0IGNhbiBoYW5kbGUgYm90aCBJUHY0IGFuZCBJUHY2IGFkZHJlc3Nlcy4KKworICAgLi4gYXR0cmlidXRlOjogcGFja2VkCisKKyAgICAgIFRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBhZGRyZXNzIC0gYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3Qgb2YKKyAgICAgIHRoZSBhcHByb3ByaWF0ZSBsZW5ndGggKG1vc3Qgc2lnbmlmaWNhbnQgb2N0ZXQgZmlyc3QpLiBUaGlzIGlzIDQgYnl0ZXMKKyAgICAgIGZvciBJUHY0IGFuZCAxNiBieXRlcyBmb3IgSVB2Ni4KKworICAgLi4gYXR0cmlidXRlOjogaXNfbXVsdGljYXN0CisKKyAgICAgIGBgVHJ1ZWBgIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBtdWx0aWNhc3QgdXNlLiAgU2VlCisgICAgICA6UkZDOmAzMTcxYCAoZm9yIElQdjQpIG9yIDpSRkM6YDIzNzNgIChmb3IgSVB2NikuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3ByaXZhdGUKKworICAgICAgYGBUcnVlYGAgaWYgdGhlIGFkZHJlc3MgaXMgYWxsb2NhdGVkIGZvciBwcml2YXRlIG5ldHdvcmtzLiAgU2VlCisgICAgICA6UkZDOmAxOTE4YCAoZm9yIElQdjQpIG9yIDpSRkM6YDQxOTNgIChmb3IgSVB2NikuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3Vuc3BlY2lmaWVkCisKKyAgICAgIGBgVHJ1ZWBgIGlmIHRoZSBhZGRyZXNzIGlzIHVuc3BlY2lmaWVkLiAgU2VlIDpSRkM6YDUzNzVgIChmb3IgSVB2NCkKKyAgICAgIG9yIDpSRkM6YDIzNzNgIChmb3IgSVB2NikuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3Jlc2VydmVkCisKKyAgICAgIGBgVHJ1ZWBgIGlmIHRoZSBhZGRyZXNzIGlzIG90aGVyd2lzZSBJRVRGIHJlc2VydmVkLgorCisgICAuLiBhdHRyaWJ1dGU6OiBpc19sb29wYmFjaworCisgICAgICBgYFRydWVgYCBpZiB0aGlzIGlzIGEgbG9vcGJhY2sgYWRkcmVzcy4gIFNlZSA6UkZDOmAzMzMwYCAoZm9yIElQdjQpCisgICAgICBvciA6UkZDOmAyMzczYCAoZm9yIElQdjYpLgorCisgICAuLiBhdHRyaWJ1dGU6OiBpc19saW5rX2xvY2FsCisKKyAgICAgIGBgVHJ1ZWBgIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBsaW5rLWxvY2FsIHVzYWdlLiAgU2VlCisgICAgICA6UkZDOmAzOTI3YC4KKworCisuLiBjbGFzczo6IElQdjZBZGRyZXNzKGFkZHJlc3MpCisKKyAgIENvbnN0cnVjdCBhbiBJUHY2IGFkZHJlc3MuICBBbiA6ZXhjOmBBZGRyZXNzVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmCisgICAqYWRkcmVzcyogaXMgbm90IGEgdmFsaWQgSVB2NiBhZGRyZXNzLgorCisgICBUaGUgZm9sbG93aW5nIGNvbnN0aXR1dGVzIGEgdmFsaWQgSVB2NiBhZGRyZXNzOgorCisgICAxLiBBIHN0cmluZyBjb25zaXN0aW5nIG9mIGVpZ2h0IGdyb3VwcyBvZiBmb3VyIGhleGFkZWNpbWFsIGRpZ2l0cywgZWFjaAorICAgICAgZ3JvdXAgcmVwcmVzZW50aW5nIDE2IGJpdHMuICBUaGUgZ3JvdXBzIGFyZSBzZXBhcmF0ZWQgYnkgY29sb25zLgorICAgICAgVGhpcyBkZXNjcmliZXMgYW4gKmV4cGxvZGVkKiAobG9uZ2hhbmQpIG5vdGF0aW9uLiAgVGhlIHN0cmluZyBjYW4KKyAgICAgIGFsc28gYmUgKmNvbXByZXNzZWQqIChzaG9ydGhhbmQgbm90YXRpb24pIGJ5IHZhcmlvdXMgbWVhbnMuICBTZWUKKyAgICAgIDpSRkM6YDQyOTFgIGZvciBkZXRhaWxzLiAgRm9yIGV4YW1wbGUsCisgICAgICBgYCIwMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MGFiYzowMDA3OjBkZWYiYGAgY2FuIGJlIGNvbXByZXNzZWQgdG8KKyAgICAgIGBgIjo6YWJjOjc6ZGVmImBgLgorICAgMi4gQW4gaW50ZWdlciB0aGF0IGZpdHMgaW50byAxMjggYml0cy4KKyAgIDMuIEFuIGludGVnZXIgcGFja2VkIGludG8gYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3Qgb2YgbGVuZ3RoIDE2LCBiaWctZW5kaWFuLgorCisgICA+Pj4gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOmRiODo6MTAwMCcpCisgICBJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEwMDAnKQorCisgICAuLiBhdHRyaWJ1dGU6OiBjb21wcmVzc2VkCisKKyAgIFRoZSBzaG9ydCBmb3JtIG9mIHRoZSBhZGRyZXNzIHJlcHJlc2VudGF0aW9uLCB3aXRoIGxlYWRpbmcgemVyb2VzIGluCisgICBncm91cHMgb21pdHRlZCBhbmQgdGhlIGxvbmdlc3Qgc2VxdWVuY2Ugb2YgZ3JvdXBzIGNvbnNpc3RpbmcgZW50aXJlbHkgb2YKKyAgIHplcm9lcyBjb2xsYXBzZWQgdG8gYSBzaW5nbGUgZW1wdHkgZ3JvdXAuCisKKyAgIFRoaXMgaXMgYWxzbyB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgYGBzdHIoYWRkcilgYCBmb3IgSVB2NiBhZGRyZXNzZXMuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGV4cGxvZGVkCisKKyAgIFRoZSBsb25nIGZvcm0gb2YgdGhlIGFkZHJlc3MgcmVwcmVzZW50YXRpb24sIHdpdGggYWxsIGxlYWRpbmcgemVyb2VzIGFuZAorICAgZ3JvdXBzIGNvbnNpc3RpbmcgZW50aXJlbHkgb2YgemVyb2VzIGluY2x1ZGVkLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwYWNrZWQKKyAgIC4uIGF0dHJpYnV0ZTo6IHZlcnNpb24KKyAgIC4uIGF0dHJpYnV0ZTo6IG1heF9wcmVmaXhsZW4KKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX211bHRpY2FzdAorICAgLi4gYXR0cmlidXRlOjogaXNfcHJpdmF0ZQorICAgLi4gYXR0cmlidXRlOjogaXNfdW5zcGVjaWZpZWQKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3Jlc2VydmVkCisgICAuLiBhdHRyaWJ1dGU6OiBpc19sb29wYmFjaworICAgLi4gYXR0cmlidXRlOjogaXNfbGlua19sb2NhbAorCisgICAgICBSZWZlciB0byB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgZG9jdW1lbnRhdGlvbiBpbgorICAgICAgOmNsYXNzOmBJUHY0QWRkcmVzc2AKKworICAgLi4gYXR0cmlidXRlOjogaXNfc2l0ZV9sb2NhbAorCisgICAgICBgYFRydWVgYCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3Igc2l0ZS1sb2NhbCB1c2FnZS4gIE5vdGUgdGhhdAorICAgICAgdGhlIHNpdGUtbG9jYWwgYWRkcmVzcyBzcGFjZSBoYXMgYmVlbiBkZXByZWNhdGVkIGJ5IDpSRkM6YDM4NzlgLiBVc2UKKyAgICAgIDphdHRyOmB+SVB2NEFkZHJlc3MuaXNfcHJpdmF0ZWAgdG8gdGVzdCBpZiB0aGlzIGFkZHJlc3MgaXMgaW4gdGhlCisgICAgICBzcGFjZSBvZiB1bmlxdWUgbG9jYWwgYWRkcmVzc2VzIGFzIGRlZmluZWQgYnkgOlJGQzpgNDE5M2AuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlwdjRfbWFwcGVkCisKKyAgICAgIEZvciBhZGRyZXNzZXMgdGhhdCBhcHBlYXIgdG8gYmUgSVB2NCBtYXBwZWQgYWRkcmVzc2VzIChzdGFydGluZyB3aXRoCisgICAgICBgYDo6RkZGRi85NmBgKSwgdGhpcyBwcm9wZXJ0eSB3aWxsIHJlcG9ydCB0aGUgZW1iZWRkZWQgSVB2NCBhZGRyZXNzLgorICAgICAgRm9yIGFueSBvdGhlciBhZGRyZXNzLCB0aGlzIHByb3BlcnR5IHdpbGwgYmUgYGBOb25lYGAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHNpeHRvZm91cgorCisgICAgICBGb3IgYWRkcmVzc2VzIHRoYXQgYXBwZWFyIHRvIGJlIDZ0bzQgYWRkcmVzc2VzICAoc3RhcnRpbmcgd2l0aAorICAgICAgYGAyMDAyOjovMTZgYCkgYXMgZGVmaW5lZCBieSA6UkZDOmAzMDU2YCwgdGhpcyBwcm9wZXJ0eSB3aWxsIHJlcG9ydAorICAgICAgdGhlIGVtYmVkZGVkIElQdjQgYWRkcmVzcy4gIEZvciBhbnkgb3RoZXIgYWRkcmVzcywgdGhpcyBwcm9wZXJ0eSB3aWxsCisgICAgICBiZSBgYE5vbmVgYC4KKworICAgLi4gYXR0cmlidXRlOjogdGVyZWRvCisKKyAgICAgIEZvciBhZGRyZXNzZXMgdGhhdCBhcHBlYXIgdG8gYmUgVGVyZWRvIGFkZHJlc3NlcyAoc3RhcnRpbmcgd2l0aAorICAgICAgYGAyMDAxOjovMzJgYCkgYXMgZGVmaW5lZCBieSA6UkZDOmA0MzgwYCwgdGhpcyBwcm9wZXJ0eSB3aWxsIHJlcG9ydAorICAgICAgdGhlIGVtYmVkZGVkIGBgKHNlcnZlciwgY2xpZW50KWBgIElQIGFkZHJlc3MgcGFpci4gIEZvciBhbnkgb3RoZXIKKyAgICAgIGFkZHJlc3MsIHRoaXMgcHJvcGVydHkgd2lsbCBiZSBgYE5vbmVgYC4KKworCitDb252ZXJzaW9uIHRvIFN0cmluZ3MgYW5kIEludGVnZXJzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RvIGludGVyb3BlcmF0ZSB3aXRoIG5ldHdvcmtpbmcgaW50ZXJmYWNlcyBzdWNoIGFzIHRoZSBzb2NrZXQgbW9kdWxlLAorYWRkcmVzc2VzIG11c3QgYmUgY29udmVydGVkIHRvIHN0cmluZ3Mgb3IgaW50ZWdlcnMuIFRoaXMgaXMgaGFuZGxlZCB1c2luZwordGhlIDpmdW5jOmBzdHJgIGFuZCA6ZnVuYzpgaW50YCBidWlsdGluIGZ1bmN0aW9uczo6CisKKyAgID4+PiBzdHIoaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxOTIuMTY4LjAuMScpKQorICAgJzE5Mi4xNjguMC4xJworICAgPj4+IGludChpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE5Mi4xNjguMC4xJykpCisgICAzMjMyMjM1NTIxCisgICA+Pj4gc3RyKGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjoxJykpCisgICAnOjoxJworICAgPj4+IGludChpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6MScpKQorICAgMQorCisKK09wZXJhdG9ycworXl5eXl5eXl5eCisKK0FkZHJlc3Mgb2JqZWN0cyBzdXBwb3J0IHNvbWUgb3BlcmF0b3JzLiAgVW5sZXNzIHN0YXRlZCBvdGhlcndpc2UsIG9wZXJhdG9ycyBjYW4KK29ubHkgYmUgYXBwbGllZCBiZXR3ZWVuIGNvbXBhdGlibGUgb2JqZWN0cyAoaS5lLiBJUHY0IHdpdGggSVB2NCwgSVB2NiB3aXRoCitJUHY2KS4KKworCitMb2dpY2FsIG9wZXJhdG9ycworIiIiIiIiIiIiIiIiIiIiIiIKKworQWRkcmVzcyBvYmplY3RzIGNhbiBiZSBjb21wYXJlZCB3aXRoIHRoZSB1c3VhbCBzZXQgb2YgbG9naWNhbCBvcGVyYXRvcnMuICBTb21lCitleGFtcGxlczo6CisKKyAgID4+PiBJUHY0QWRkcmVzcygnMTI3LjAuMC4yJykgPiBJUHY0QWRkcmVzcygnMTI3LjAuMC4xJykKKyAgIFRydWUKKyAgID4+PiBJUHY0QWRkcmVzcygnMTI3LjAuMC4yJykgPT0gSVB2NEFkZHJlc3MoJzEyNy4wLjAuMScpCisgICBGYWxzZQorICAgPj4+IElQdjRBZGRyZXNzKCcxMjcuMC4wLjInKSAhPSBJUHY0QWRkcmVzcygnMTI3LjAuMC4xJykKKyAgIFRydWUKKworCitBcml0aG1ldGljIG9wZXJhdG9ycworIiIiIiIiIiIiIiIiIiIiIiIiIiIKKworSW50ZWdlcnMgY2FuIGJlIGFkZGVkIHRvIG9yIHN1YnRyYWN0ZWQgZnJvbSBhZGRyZXNzIG9iamVjdHMuICBTb21lIGV4YW1wbGVzOjoKKworICAgPj4+IElQdjRBZGRyZXNzKCcxMjcuMC4wLjInKSArIDMKKyAgIElQdjRBZGRyZXNzKCcxMjcuMC4wLjUnKQorICAgPj4+IElQdjRBZGRyZXNzKCcxMjcuMC4wLjInKSAtIDMKKyAgIElQdjRBZGRyZXNzKCcxMjYuMjU1LjI1NS4yNTUnKQorICAgPj4+IElQdjRBZGRyZXNzKCcyNTUuMjU1LjI1NS4yNTUnKSArIDEKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgIGlwYWRkcmVzcy5BZGRyZXNzVmFsdWVFcnJvcjogNDI5NDk2NzI5NiAoPj0gMioqMzIpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NCBhZGRyZXNzCisKKworSVAgTmV0d29yayBkZWZpbml0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOmNsYXNzOmBJUHY0TmV0d29ya2AgYW5kIDpjbGFzczpgSVB2Nk5ldHdvcmtgIG9iamVjdHMgcHJvdmlkZSBhIG1lY2hhbmlzbQorZm9yIGRlZmluaW5nIGFuZCBpbnNwZWN0aW5nIElQIG5ldHdvcmsgZGVmaW5pdGlvbnMuICBBIG5ldHdvcmsgZGVmaW5pdGlvbgorY29uc2lzdHMgb2YgYSAqbWFzayogYW5kIGEgKm5ldHdvcmsgYWRkcmVzcyosIGFuZCBhcyBzdWNoIGRlZmluZXMgYSByYW5nZSBvZgorSVAgYWRkcmVzc2VzIHRoYXQgZXF1YWwgdGhlIG5ldHdvcmsgYWRkcmVzcyB3aGVuIG1hc2tlZCAoYmluYXJ5IEFORCkgd2l0aCB0aGUKK21hc2suICBGb3IgZXhhbXBsZSwgYSBuZXR3b3JrIGRlZmluaXRpb24gd2l0aCB0aGUgbWFzayBgYDI1NS4yNTUuMjU1LjBgYCBhbmQKK3RoZSBuZXR3b3JrIGFkZHJlc3MgYGAxOTIuMTY4LjEuMGBgIGNvbnNpc3RzIG9mIElQIGFkZHJlc3NlcyBpbiB0aGUgaW5jbHVzaXZlCityYW5nZSBgYDE5Mi4xNjguMS4wYGAgdG8gYGAxOTIuMTY4LjEuMjU1YGAuCisKKworUHJlZml4LCBuZXQgbWFzayBhbmQgaG9zdCBtYXNrCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVGhlcmUgYXJlIHNldmVyYWwgZXF1aXZhbGVudCB3YXlzIHRvIHNwZWNpZnkgSVAgbmV0d29yayBtYXNrcy4gIEEgKnByZWZpeCoKK2BgLzxuYml0cz5gYCBpcyBhIG5vdGF0aW9uIHRoYXQgZGVub3RlcyBob3cgbWFueSBoaWdoLW9yZGVyIGJpdHMgYXJlIHNldCBpbgordGhlIG5ldHdvcmsgbWFzay4gIEEgKm5ldCBtYXNrKiBpcyBhbiBJUCBhZGRyZXNzIHdpdGggc29tZSBudW1iZXIgb2YKK2hpZ2gtb3JkZXIgYml0cyBzZXQuICBUaHVzIHRoZSBwcmVmaXggYGAvMjRgYCBpcyBlcXVpdmFsZW50IHRvIHRoZSBuZXQgbWFzaworYGAyNTUuMjU1LjI1NS4wYGAgaW4gSVB2NCwgb3IgYGBmZmZmOmZmMDA6OmBgIGluIElQdjYuICBJbiBhZGRpdGlvbiwgYQorKmhvc3QgbWFzayogaXMgdGhlIGxvZ2ljYWwgaW52ZXJzZSBvZiBhICpuZXQgbWFzayosIGFuZCBpcyBzb21ldGltZXMgdXNlZAorKGZvciBleGFtcGxlIGluIENpc2NvIGFjY2VzcyBjb250cm9sIGxpc3RzKSB0byBkZW5vdGUgYSBuZXR3b3JrIG1hc2suICBUaGUKK2hvc3QgbWFzayBlcXVpdmFsZW50IHRvIGBgLzI0YGAgaW4gSVB2NCBpcyBgYDAuMC4wLjI1NWBgLgorCisKK05ldHdvcmsgb2JqZWN0cworXl5eXl5eXl5eXl5eXl5eCisKK0FsbCBhdHRyaWJ1dGVzIGltcGxlbWVudGVkIGJ5IGFkZHJlc3Mgb2JqZWN0cyBhcmUgaW1wbGVtZW50ZWQgYnkgbmV0d29yaworb2JqZWN0cyBhcyB3ZWxsLiAgSW4gYWRkaXRpb24sIG5ldHdvcmsgb2JqZWN0cyBpbXBsZW1lbnQgYWRkaXRpb25hbCBhdHRyaWJ1dGVzLgorQWxsIG9mIHRoZXNlIGFyZSBjb21tb24gYmV0d2VlbiA6Y2xhc3M6YElQdjROZXR3b3JrYCBhbmQgOmNsYXNzOmBJUHY2TmV0d29ya2AsCitzbyB0byBhdm9pZCBkdXBsaWNhdGlvbiB0aGV5IGFyZSBvbmx5IGRvY3VtZW50ZWQgZm9yIDpjbGFzczpgSVB2NE5ldHdvcmtgLgorCisuLiBjbGFzczo6IElQdjROZXR3b3JrKGFkZHJlc3MsIHN0cmljdD1UcnVlKQorCisgICBDb25zdHJ1Y3QgYW4gSVB2NCBuZXR3b3JrIGRlZmluaXRpb24uICAqYWRkcmVzcyogY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCisgICAxLiBBIHN0cmluZyBjb25zaXN0aW5nIG9mIGFuIElQIGFkZHJlc3MgYW5kIGFuIG9wdGlvbmFsIG1hc2ssIHNlcGFyYXRlZCBieQorICAgICAgYSBzbGFzaCAoYGAvYGApLiAgVGhlIElQIGFkZHJlc3MgaXMgdGhlIG5ldHdvcmsgYWRkcmVzcywgYW5kIHRoZSBtYXNrCisgICAgICBjYW4gYmUgZWl0aGVyIGEgc2luZ2xlIG51bWJlciwgd2hpY2ggbWVhbnMgaXQncyBhICpwcmVmaXgqLCBvciBhIHN0cmluZworICAgICAgcmVwcmVzZW50YXRpb24gb2YgYW4gSVB2NCBhZGRyZXNzLiAgSWYgaXQncyB0aGUgbGF0dGVyLCB0aGUgbWFzayBpcworICAgICAgaW50ZXJwcmV0ZWQgYXMgYSAqbmV0IG1hc2sqIGlmIGl0IHN0YXJ0cyB3aXRoIGEgbm9uLXplcm8gZmllbGQsIG9yIGFzCisgICAgICBhICpob3N0IG1hc2sqIGlmIGl0IHN0YXJ0cyB3aXRoIGEgemVybyBmaWVsZC4gIElmIG5vIG1hc2sgaXMgcHJvdmlkZWQsCisgICAgICBpdCdzIGNvbnNpZGVyZWQgdG8gYmUgYGAvMzJgYC4KKworICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgKmFkZHJlc3MqIHNwZWNpZmljYXRpb25zIGFyZSBlcXVpdmFsZW50OgorICAgICAgYGAxOTIuMTY4LjEuMC8yNGBgLCBgYDE5Mi4xNjguMS4wLzI1NS4yNTUuMjU1LjBgYCBhbmQKKyAgICAgIGBgMTkyLjE2OC4xLjAvMC4wLjAuMjU1YGAuCisKKyAgIDIuIEFuIGludGVnZXIgdGhhdCBmaXRzIGludG8gMzIgYml0cy4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBhCisgICAgICBzaW5nbGUtYWRkcmVzcyBuZXR3b3JrLCB3aXRoIHRoZSBuZXR3b3JrIGFkZHJlc3MgYmVpbmcgKmFkZHJlc3MqIGFuZAorICAgICAgdGhlIG1hc2sgYmVpbmcgYGAvMzJgYC4KKworICAgMy4gQW4gaW50ZWdlciBwYWNrZWQgaW50byBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBvZiBsZW5ndGggNCwgYmlnLWVuZGlhbi4KKyAgICAgIFRoZSBpbnRlcnByZXRhdGlvbiBpcyBzaW1pbGFyIHRvIGFuIGludGVnZXIgKmFkZHJlc3MqLgorCisgICBBbiA6ZXhjOmBBZGRyZXNzVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmICphZGRyZXNzKiBpcyBub3QgYSB2YWxpZCBJUHY0CisgICBhZGRyZXNzLiAgQSA6ZXhjOmBOZXRtYXNrVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBtYXNrIGlzIG5vdCB2YWxpZCBmb3IKKyAgIGFuIElQdjQgYWRkcmVzcy4KKworICAgSWYgKnN0cmljdCogaXMgYGBUcnVlYGAgYW5kIGhvc3QgYml0cyBhcmUgc2V0IGluIHRoZSBzdXBwbGllZCBhZGRyZXNzLAorICAgdGhlbiA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuICBPdGhlcndpc2UsIHRoZSBob3N0IGJpdHMgYXJlIG1hc2tlZCBvdXQKKyAgIHRvIGRldGVybWluZSB0aGUgYXBwcm9wcmlhdGUgbmV0d29yayBhZGRyZXNzLgorCisgICBVbmxlc3Mgc3RhdGVkIG90aGVyd2lzZSwgYWxsIG5ldHdvcmsgbWV0aG9kcyBhY2NlcHRpbmcgb3RoZXIgbmV0d29yay9hZGRyZXNzCisgICBvYmplY3RzIHdpbGwgcmFpc2UgOmV4YzpgVHlwZUVycm9yYCBpZiB0aGUgYXJndW1lbnQncyBJUCB2ZXJzaW9uIGlzCisgICBpbmNvbXBhdGlibGUgdG8gYGBzZWxmYGAKKworICAgLi4gYXR0cmlidXRlOjogdmVyc2lvbgorICAgLi4gYXR0cmlidXRlOjogbWF4X3ByZWZpeGxlbgorCisgICAgICBSZWZlciB0byB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgZG9jdW1lbnRhdGlvbiBpbgorICAgICAgOmNsYXNzOmBJUHY0QWRkcmVzc2AKKworICAgLi4gYXR0cmlidXRlOjogaXNfbXVsdGljYXN0CisgICAuLiBhdHRyaWJ1dGU6OiBpc19wcml2YXRlCisgICAuLiBhdHRyaWJ1dGU6OiBpc191bnNwZWNpZmllZAorICAgLi4gYXR0cmlidXRlOjogaXNfcmVzZXJ2ZWQKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX2xvb3BiYWNrCisgICAuLiBhdHRyaWJ1dGU6OiBpc19saW5rX2xvY2FsCisKKyAgICAgIFRoZXNlIGF0dHJpYnV0ZXMgYXJlIHRydWUgZm9yIHRoZSBuZXR3b3JrIGFzIGEgd2hvbGUgaWYgdGhleSBhcmUgdHJ1ZQorICAgICAgZm9yIGJvdGggdGhlIG5ldHdvcmsgYWRkcmVzcyBhbmQgdGhlIGJyb2FkY2FzdCBhZGRyZXNzCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5ldHdvcmtfYWRkcmVzcworCisgICAgICBUaGUgbmV0d29yayBhZGRyZXNzIGZvciB0aGUgbmV0d29yay4gVGhlIG5ldHdvcmsgYWRkcmVzcyBhbmQgdGhlCisgICAgICBwcmVmaXggbGVuZ3RoIHRvZ2V0aGVyIHVuaXF1ZWx5IGRlZmluZSBhIG5ldHdvcmsuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGJyb2FkY2FzdF9hZGRyZXNzCisKKyAgICAgIFRoZSBicm9hZGNhc3QgYWRkcmVzcyBmb3IgdGhlIG5ldHdvcmsuIFBhY2tldHMgc2VudCB0byB0aGUgYnJvYWRjYXN0CisgICAgICBhZGRyZXNzIHNob3VsZCBiZSByZWNlaXZlZCBieSBldmVyeSBob3N0IG9uIHRoZSBuZXR3b3JrLgorCisgICAuLiBhdHRyaWJ1dGU6OiBob3N0IG1hc2sKKworICAgICAgVGhlIGhvc3QgbWFzaywgYXMgYSBzdHJpbmcuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfcHJlZml4bGVuCisgICAuLiBhdHRyaWJ1dGU6OiBjb21wcmVzc2VkCisgICAuLiBhdHRyaWJ1dGU6OiBleHBsb2RlZAorCisgICAgICBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgbmV0d29yaywgd2l0aCB0aGUgbWFzayBpbiBwcmVmaXgKKyAgICAgIG5vdGF0aW9uLgorCisgICAgICBgYHdpdGhfcHJlZml4bGVuYGAgYW5kIGBgY29tcHJlc3NlZGBgIGFyZSBhbHdheXMgdGhlIHNhbWUgYXMKKyAgICAgIGBgc3RyKG5ldHdvcmspYGAuCisgICAgICBgYGV4cGxvZGVkYGAgdXNlcyB0aGUgZXhwbG9kZWQgZm9ybSB0aGUgbmV0d29yayBhZGRyZXNzLgorCisgICAuLiBhdHRyaWJ1dGU6OiB3aXRoX25ldG1hc2sKKworICAgICAgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG5ldHdvcmssIHdpdGggdGhlIG1hc2sgaW4gbmV0IG1hc2sKKyAgICAgIG5vdGF0aW9uLgorCisgICAuLiBhdHRyaWJ1dGU6OiB3aXRoX2hvc3RtYXNrCisKKyAgICAgIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBuZXR3b3JrLCB3aXRoIHRoZSBtYXNrIGluIGhvc3QgbWFzaworICAgICAgbm90YXRpb24uCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG51bV9hZGRyZXNzZXMKKworICAgICAgVGhlIHRvdGFsIG51bWJlciBvZiBhZGRyZXNzZXMgaW4gdGhlIG5ldHdvcmsuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHByZWZpeGxlbgorCisgICAgICBMZW5ndGggb2YgdGhlIG5ldHdvcmsgcHJlZml4LCBpbiBiaXRzLgorCisgICAuLiBtZXRob2Q6OiBob3N0cygpCisKKyAgICAgIFJldHVybnMgYW4gaXRlcmF0b3Igb3ZlciB0aGUgdXNhYmxlIGhvc3RzIGluIHRoZSBuZXR3b3JrLiAgVGhlIHVzYWJsZQorICAgICAgaG9zdHMgYXJlIGFsbCB0aGUgSVAgYWRkcmVzc2VzIHRoYXQgYmVsb25nIHRvIHRoZSBuZXR3b3JrLCBleGNlcHQgdGhlCisgICAgICBuZXR3b3JrIGFkZHJlc3MgaXRzZWxmIGFuZCB0aGUgbmV0d29yayBicm9hZGNhc3QgYWRkcmVzcy4KKworICAgICAgICAgPj4+IGxpc3QoaXBfbmV0d29yaygnMTkyLjAuMi4wLzI5JykuaG9zdHMoKSkgICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKKyAgICAgICAgIFtJUHY0QWRkcmVzcygnMTkyLjAuMi4xJyksIElQdjRBZGRyZXNzKCcxOTIuMC4yLjInKSwKKyAgICAgICAgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4zJyksIElQdjRBZGRyZXNzKCcxOTIuMC4yLjQnKSwKKyAgICAgICAgICBJUHY0QWRkcmVzcygnMTkyLjAuMi41JyksIElQdjRBZGRyZXNzKCcxOTIuMC4yLjYnKV0KKworICAgLi4gbWV0aG9kOjogb3ZlcmxhcHMob3RoZXIpCisKKyAgICAgIGBgVHJ1ZWBgIGlmIHRoaXMgbmV0d29yayBpcyBwYXJ0bHkgb3Igd2hvbGx5IGNvbnRhaW5lZCBpbiAqb3RoZXIqIG9yCisgICAgICAqb3RoZXIqIGlzIHdob2xseSBjb250YWluZWQgaW4gdGhpcyBuZXR3b3JrLgorCisgICAuLiBtZXRob2Q6OiBhZGRyZXNzX2V4Y2x1ZGUobmV0d29yaykKKworICAgICAgQ29tcHV0ZXMgdGhlIG5ldHdvcmsgZGVmaW5pdGlvbnMgcmVzdWx0aW5nIGZyb20gcmVtb3ZpbmcgdGhlIGdpdmVuCisgICAgICAqbmV0d29yayogZnJvbSB0aGlzIG9uZS4gIFJldHVybnMgYW4gaXRlcmF0b3Igb2YgbmV0d29yayBvYmplY3RzLgorICAgICAgUmFpc2VzIDpleGM6YFZhbHVlRXJyb3JgIGlmICpuZXR3b3JrKiBpcyBub3QgY29tcGxldGVseSBjb250YWluZWQgaW4KKyAgICAgIHRoaXMgbmV0d29yay4KKworICAgICAgICAgPj4+IG4xID0gaXBfbmV0d29yaygnMTkyLjAuMi4wLzI4JykKKyAgICAgICAgID4+PiBuMiA9IGlwX25ldHdvcmsoJzE5Mi4wLjIuMS8zMicpCisgICAgICAgICA+Pj4gbGlzdChuMS5hZGRyZXNzX2V4Y2x1ZGUobjIpKSAgI2RvY3Rlc3Q6ICtOT1JNQUxJWkVfV0hJVEVTUEFDRQorICAgICAgICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjgvMjknKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuNC8zMCcpLAorICAgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjIvMzEnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8zMicpXQorCisgICAuLiBtZXRob2Q6OiBzdWJuZXRzKHByZWZpeGxlbl9kaWZmPTEsIG5ld19wcmVmaXg9Tm9uZSkKKworICAgICAgVGhlIHN1Ym5ldHMgdGhhdCBqb2luIHRvIG1ha2UgdGhlIGN1cnJlbnQgbmV0d29yayBkZWZpbml0aW9uLCBkZXBlbmRpbmcKKyAgICAgIG9uIHRoZSBhcmd1bWVudCB2YWx1ZXMuICAqcHJlZml4bGVuX2RpZmYqIGlzIHRoZSBhbW91bnQgb3VyIHByZWZpeAorICAgICAgbGVuZ3RoIHNob3VsZCBiZSBpbmNyZWFzZWQgYnkuICAqbmV3X3ByZWZpeCogaXMgdGhlIGRlc2lyZWQgbmV3CisgICAgICBwcmVmaXggb2YgdGhlIHN1Ym5ldHM7IGl0IG11c3QgYmUgbGFyZ2VyIHRoYW4gb3VyIHByZWZpeC4gIE9uZSBhbmQKKyAgICAgIG9ubHkgb25lIG9mICpwcmVmaXhsZW5fZGlmZiogYW5kICpuZXdfcHJlZml4KiBtdXN0IGJlIHNldC4gIFJldHVybnMgYW4KKyAgICAgIGl0ZXJhdG9yIG9mIG5ldHdvcmsgb2JqZWN0cy4KKworICAgICAgICAgPj4+IGxpc3QoaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0Jykuc3VibmV0cygpKQorICAgICAgICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjUnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI1JyldCisgICAgICAgICA+Pj4gbGlzdChpcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKS5zdWJuZXRzKHByZWZpeGxlbl9kaWZmPTIpKSAgI2RvY3Rlc3Q6ICtOT1JNQUxJWkVfV0hJVEVTUEFDRQorICAgICAgICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjYnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuNjQvMjYnKSwKKyAgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMjYnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTkyLzI2JyldCisgICAgICAgICA+Pj4gbGlzdChpcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKS5zdWJuZXRzKG5ld19wcmVmaXg9MjYpKSAgI2RvY3Rlc3Q6ICtOT1JNQUxJWkVfV0hJVEVTUEFDRQorICAgICAgICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjYnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuNjQvMjYnKSwKKyAgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMjYnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTkyLzI2JyldCisgICAgICAgICA+Pj4gbGlzdChpcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKS5zdWJuZXRzKG5ld19wcmVmaXg9MjMpKQorICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ25ldyBwcmVmaXggbXVzdCBiZSBsb25nZXInKQorICAgICAgICAgVmFsdWVFcnJvcjogbmV3IHByZWZpeCBtdXN0IGJlIGxvbmdlcgorICAgICAgICAgPj4+IGxpc3QoaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0Jykuc3VibmV0cyhuZXdfcHJlZml4PTI1KSkKKyAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI1JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjEyOC8yNScpXQorCisgICAuLiBtZXRob2Q6OiBzdXBlcm5ldChwcmVmaXhsZW5fZGlmZj0xLCBuZXdfcHJlZml4PU5vbmUpCisKKyAgICAgIFRoZSBzdXBlcm5ldCBjb250YWluaW5nIHRoaXMgbmV0d29yayBkZWZpbml0aW9uLCBkZXBlbmRpbmcgb24gdGhlCisgICAgICBhcmd1bWVudCB2YWx1ZXMuICAqcHJlZml4bGVuX2RpZmYqIGlzIHRoZSBhbW91bnQgb3VyIHByZWZpeCBsZW5ndGgKKyAgICAgIHNob3VsZCBiZSBkZWNyZWFzZWQgYnkuICAqbmV3X3ByZWZpeCogaXMgdGhlIGRlc2lyZWQgbmV3IHByZWZpeCBvZgorICAgICAgdGhlIHN1cGVybmV0OyBpdCBtdXN0IGJlIHNtYWxsZXIgdGhhbiBvdXIgcHJlZml4LiAgT25lIGFuZCBvbmx5IG9uZQorICAgICAgb2YgKnByZWZpeGxlbl9kaWZmKiBhbmQgKm5ld19wcmVmaXgqIG11c3QgYmUgc2V0LiAgUmV0dXJucyBhIHNpbmdsZQorICAgICAgbmV0d29yayBvYmplY3QuCisKKyAgICAgICAgID4+PiBpcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKS5zdXBlcm5ldCgpCisgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzIzJykKKyAgICAgICAgID4+PiBpcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKS5zdXBlcm5ldChwcmVmaXhsZW5fZGlmZj0yKQorICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjAuMC8yMicpCisgICAgICAgICA+Pj4gaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0Jykuc3VwZXJuZXQobmV3X3ByZWZpeD0yMCkKKyAgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4wLjAvMjAnKQorCisgICAuLiBtZXRob2Q6OiBjb21wYXJlX25ldHdvcmtzKG90aGVyKQorCisgICAgICBDb21wYXJlIHRoaXMgbmV0d29yayB0byAqb3RoZXIqLiAgSW4gdGhpcyBjb21wYXJpc29uIG9ubHkgdGhlIG5ldHdvcmsKKyAgICAgIGFkZHJlc3NlcyBhcmUgY29uc2lkZXJlZDsgaG9zdCBiaXRzIGFyZW4ndC4gIFJldHVybnMgZWl0aGVyIGBgLTFgYCwKKyAgICAgIGBgMGBgIG9yIGBgMWBgLgorCisgICAgICAgICA+Pj4gaXBfbmV0d29yaygnMTkyLjAuMi4xLzMyJykuY29tcGFyZV9uZXR3b3JrcyhpcF9uZXR3b3JrKCcxOTIuMC4yLjIvMzInKSkKKyAgICAgICAgIC0xCisgICAgICAgICA+Pj4gaXBfbmV0d29yaygnMTkyLjAuMi4xLzMyJykuY29tcGFyZV9uZXR3b3JrcyhpcF9uZXR3b3JrKCcxOTIuMC4yLjAvMzInKSkKKyAgICAgICAgIDEKKyAgICAgICAgID4+PiBpcF9uZXR3b3JrKCcxOTIuMC4yLjEvMzInKS5jb21wYXJlX25ldHdvcmtzKGlwX25ldHdvcmsoJzE5Mi4wLjIuMS8zMicpKQorICAgICAgICAgMAorCisKKy4uIGNsYXNzOjogSVB2Nk5ldHdvcmsoYWRkcmVzcywgc3RyaWN0PVRydWUpCisKKyAgIENvbnN0cnVjdCBhbiBJUHY2IG5ldHdvcmsgZGVmaW5pdGlvbi4gICphZGRyZXNzKiBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisKKyAgIDEuIEEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgYW4gSVAgYWRkcmVzcyBhbmQgYW4gb3B0aW9uYWwgbWFzaywgc2VwYXJhdGVkIGJ5CisgICAgICBhIHNsYXNoIChgYC9gYCkuICBUaGUgSVAgYWRkcmVzcyBpcyB0aGUgbmV0d29yayBhZGRyZXNzLCBhbmQgdGhlIG1hc2sKKyAgICAgIGNhbiBiZSBlaXRoZXIgYSBzaW5nbGUgbnVtYmVyLCB3aGljaCBtZWFucyBpdCdzIGEgKnByZWZpeCosIG9yIGEgc3RyaW5nCisgICAgICByZXByZXNlbnRhdGlvbiBvZiBhbiBJUHY2IGFkZHJlc3MuICBJZiBpdCdzIHRoZSBsYXR0ZXIsIHRoZSBtYXNrIGlzCisgICAgICBpbnRlcnByZXRlZCBhcyBhICpuZXQgbWFzayouICBJZiBubyBtYXNrIGlzIHByb3ZpZGVkLCBpdCdzIGNvbnNpZGVyZWQgdG8KKyAgICAgIGJlIGBgLzEyOGBgLgorCisgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyAqYWRkcmVzcyogc3BlY2lmaWNhdGlvbnMgYXJlIGVxdWl2YWxlbnQ6CisgICAgICBgYDIwMDE6ZGIwMDo6MC8yNGBgIGFuZCBgYDIwMDE6ZGIwMDo6MC9mZmZmOmZmMDA6OmBgLgorCisgICAyLiBBbiBpbnRlZ2VyIHRoYXQgZml0cyBpbnRvIDEyOCBiaXRzLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGEKKyAgICAgIHNpbmdsZS1hZGRyZXNzIG5ldHdvcmssIHdpdGggdGhlIG5ldHdvcmsgYWRkcmVzcyBiZWluZyAqYWRkcmVzcyogYW5kCisgICAgICB0aGUgbWFzayBiZWluZyBgYC8xMjhgYC4KKworICAgMy4gQW4gaW50ZWdlciBwYWNrZWQgaW50byBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBvZiBsZW5ndGggMTYsIGJpdC1lbmRpYW4uCisgICAgICBUaGUgaW50ZXJwcmV0YXRpb24gaXMgc2ltaWxhciB0byBhbiBpbnRlZ2VyICphZGRyZXNzKi4KKworICAgQW4gOmV4YzpgQWRkcmVzc1ZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqYWRkcmVzcyogaXMgbm90IGEgdmFsaWQgSVB2NgorICAgYWRkcmVzcy4gIEEgOmV4YzpgTmV0bWFza1ZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgbWFzayBpcyBub3QgdmFsaWQgZm9yCisgICBhbiBJUHY2IGFkZHJlc3MuCisKKyAgIElmICpzdHJpY3QqIGlzIGBgVHJ1ZWBgIGFuZCBob3N0IGJpdHMgYXJlIHNldCBpbiB0aGUgc3VwcGxpZWQgYWRkcmVzcywKKyAgIHRoZW4gOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgaG9zdCBiaXRzIGFyZSBtYXNrZWQgb3V0CisgICB0byBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIG5ldHdvcmsgYWRkcmVzcy4KKworICAgLi4gYXR0cmlidXRlOjogdmVyc2lvbgorICAgLi4gYXR0cmlidXRlOjogbWF4X3ByZWZpeGxlbgorICAgLi4gYXR0cmlidXRlOjogaXNfbXVsdGljYXN0CisgICAuLiBhdHRyaWJ1dGU6OiBpc19wcml2YXRlCisgICAuLiBhdHRyaWJ1dGU6OiBpc191bnNwZWNpZmllZAorICAgLi4gYXR0cmlidXRlOjogaXNfcmVzZXJ2ZWQKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX2xvb3BiYWNrCisgICAuLiBhdHRyaWJ1dGU6OiBpc19saW5rX2xvY2FsCisgICAuLiBhdHRyaWJ1dGU6OiBuZXR3b3JrX2FkZHJlc3MKKyAgIC4uIGF0dHJpYnV0ZTo6IGJyb2FkY2FzdF9hZGRyZXNzCisgICAuLiBhdHRyaWJ1dGU6OiBob3N0IG1hc2sKKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfcHJlZml4bGVuCisgICAuLiBhdHRyaWJ1dGU6OiBjb21wcmVzc2VkCisgICAuLiBhdHRyaWJ1dGU6OiBleHBsb2RlZAorICAgLi4gYXR0cmlidXRlOjogd2l0aF9uZXRtYXNrCisgICAuLiBhdHRyaWJ1dGU6OiB3aXRoX2hvc3RtYXNrCisgICAuLiBhdHRyaWJ1dGU6OiBudW1fYWRkcmVzc2VzCisgICAuLiBhdHRyaWJ1dGU6OiBwcmVmaXhsZW4KKyAgIC4uIG1ldGhvZDo6IGhvc3RzKCkKKyAgIC4uIG1ldGhvZDo6IG92ZXJsYXBzKG90aGVyKQorICAgLi4gbWV0aG9kOjogYWRkcmVzc19leGNsdWRlKG5ldHdvcmspCisgICAuLiBtZXRob2Q6OiBzdWJuZXRzKHByZWZpeGxlbl9kaWZmPTEsIG5ld19wcmVmaXg9Tm9uZSkKKyAgIC4uIG1ldGhvZDo6IHN1cGVybmV0KHByZWZpeGxlbl9kaWZmPTEsIG5ld19wcmVmaXg9Tm9uZSkKKyAgIC4uIG1ldGhvZDo6IGNvbXBhcmVfbmV0d29ya3Mob3RoZXIpCisKKyAgICAgIFJlZmVyIHRvIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBkb2N1bWVudGF0aW9uIGluCisgICAgICA6Y2xhc3M6YElQdjROZXR3b3JrYAorCisgICAuLiBhdHRyaWJ1dGU6OiBpc19zaXRlX2xvY2FsCisKKyAgICAgIFRoZXNlIGF0dHJpYnV0ZSBpcyB0cnVlIGZvciB0aGUgbmV0d29yayBhcyBhIHdob2xlIGlmIGl0IGlzIHRydWUKKyAgICAgIGZvciBib3RoIHRoZSBuZXR3b3JrIGFkZHJlc3MgYW5kIHRoZSBicm9hZGNhc3QgYWRkcmVzcworCisKK09wZXJhdG9ycworXl5eXl5eXl5eCisKK05ldHdvcmsgb2JqZWN0cyBzdXBwb3J0IHNvbWUgb3BlcmF0b3JzLiAgVW5sZXNzIHN0YXRlZCBvdGhlcndpc2UsIG9wZXJhdG9ycyBjYW4KK29ubHkgYmUgYXBwbGllZCBiZXR3ZWVuIGNvbXBhdGlibGUgb2JqZWN0cyAoaS5lLiBJUHY0IHdpdGggSVB2NCwgSVB2NiB3aXRoCitJUHY2KS4KKworCitMb2dpY2FsIG9wZXJhdG9ycworIiIiIiIiIiIiIiIiIiIiIiIKKworTmV0d29yayBvYmplY3RzIGNhbiBiZSBjb21wYXJlZCB3aXRoIHRoZSB1c3VhbCBzZXQgb2YgbG9naWNhbCBvcGVyYXRvcnMsCitzaW1pbGFybHkgdG8gYWRkcmVzcyBvYmplY3RzLgorCisKK0l0ZXJhdGlvbgorIiIiIiIiIiIiCisKK05ldHdvcmsgb2JqZWN0cyBjYW4gYmUgaXRlcmF0ZWQgdG8gbGlzdCBhbGwgdGhlIGFkZHJlc3NlcyBiZWxvbmdpbmcgdG8gdGhlCituZXR3b3JrLiAgRm9yIGl0ZXJhdGlvbiwgKmFsbCogaG9zdHMgYXJlIHJldHVybmVkLCBpbmNsdWRpbmcgdW51c2FibGUgaG9zdHMKKyhmb3IgdXNhYmxlIGhvc3RzLCB1c2UgdGhlIDptZXRoOmB+SVB2NE5ldHdvcmsuaG9zdHNgIG1ldGhvZCkuICBBbgorZXhhbXBsZTo6CisKKyAgID4+PiBmb3IgYWRkciBpbiBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI4Jyk6CisgICAuLi4gICBhZGRyCisgICAuLi4KKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjAnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4yJykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjMnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNCcpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi41JykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjYnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNycpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi44JykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjknKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTAnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTEnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTInKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTMnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTQnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTUnKQorCisKK05ldHdvcmtzIGFzIGNvbnRhaW5lcnMgb2YgYWRkcmVzc2VzCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCitOZXR3b3JrIG9iamVjdHMgY2FuIGFjdCBhcyBjb250YWluZXJzIG9mIGFkZHJlc3Nlcy4gIFNvbWUgZXhhbXBsZXM6OgorCisgICA+Pj4gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yOCcpWzBdCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4wJykKKyAgID4+PiBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI4JylbMTVdCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xNScpCisgICA+Pj4gSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNicpIGluIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjgnKQorICAgVHJ1ZQorICAgPj4+IElQdjRBZGRyZXNzKCcxOTIuMC4zLjYnKSBpbiBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI4JykKKyAgIEZhbHNlCisKKworSW50ZXJmYWNlIG9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGNsYXNzOjogSVB2NEludGVyZmFjZShhZGRyZXNzKQorCisgICBDb25zdHJ1Y3QgYW4gSVB2NCBpbnRlcmZhY2UuICBUaGUgbWVhbmluZyBvZiAqYWRkcmVzcyogaXMgYXMgaW4gdGhlCisgICBjb25zdHJ1Y3RvciBvZiA6Y2xhc3M6YElQdjROZXR3b3JrYCwgZXhjZXB0IHRoYXQgYXJiaXRyYXJ5IGhvc3QgYWRkcmVzc2VzCisgICBhcmUgYWx3YXlzIGFjY2VwdGVkLgorCisgICA6Y2xhc3M6YElQdjRJbnRlcmZhY2VgIGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBJUHY0QWRkcmVzc2AsIHNvIGl0IGluaGVyaXRzCisgICBhbGwgdGhlIGF0dHJpYnV0ZXMgZnJvbSB0aGF0IGNsYXNzLiAgSW4gYWRkaXRpb24sIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcworICAgYXJlIGF2YWlsYWJsZToKKworICAgLi4gYXR0cmlidXRlOjogaXAKKworICAgICAgVGhlIGFkZHJlc3MgKDpjbGFzczpgSVB2NEFkZHJlc3NgKSB3aXRob3V0IG5ldHdvcmsgaW5mb3JtYXRpb24uCisKKyAgICAgICAgID4+PiBpbnRlcmZhY2UgPSBJUHY0SW50ZXJmYWNlKCcxOTIuMC4yLjUvMjQnKQorICAgICAgICAgPj4+IGludGVyZmFjZS5pcAorICAgICAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNScpCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5ldHdvcmsKKworICAgICAgVGhlIG5ldHdvcmsgKDpjbGFzczpgSVB2NE5ldHdvcmtgKSB0aGlzIGludGVyZmFjZSBiZWxvbmdzIHRvLgorCisgICAgICAgICA+Pj4gaW50ZXJmYWNlID0gSVB2NEludGVyZmFjZSgnMTkyLjAuMi41LzI0JykKKyAgICAgICAgID4+PiBpbnRlcmZhY2UubmV0d29yaworICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfcHJlZml4bGVuCisKKyAgICAgIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnRlcmZhY2Ugd2l0aCB0aGUgbWFzayBpbiBwcmVmaXggbm90YXRpb24uCisKKyAgICAgICAgID4+PiBpbnRlcmZhY2UgPSBJUHY0SW50ZXJmYWNlKCcxOTIuMC4yLjUvMjQnKQorICAgICAgICAgPj4+IGludGVyZmFjZS53aXRoX3ByZWZpeGxlbgorICAgICAgICAgJzE5Mi4wLjIuNS8yNCcKKworICAgLi4gYXR0cmlidXRlOjogd2l0aF9uZXRtYXNrCisKKyAgICAgIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnRlcmZhY2Ugd2l0aCB0aGUgbmV0d29yayBhcyBhIG5ldCBtYXNrLgorCisgICAgICAgICA+Pj4gaW50ZXJmYWNlID0gSVB2NEludGVyZmFjZSgnMTkyLjAuMi41LzI0JykKKyAgICAgICAgID4+PiBpbnRlcmZhY2Uud2l0aF9uZXRtYXNrCisgICAgICAgICAnMTkyLjAuMi41LzI1NS4yNTUuMjU1LjAnCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfaG9zdG1hc2sKKworICAgICAgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGludGVyZmFjZSB3aXRoIHRoZSBuZXR3b3JrIGFzIGEgaG9zdCBtYXNrLgorCisgICAgICAgICA+Pj4gaW50ZXJmYWNlID0gSVB2NEludGVyZmFjZSgnMTkyLjAuMi41LzI0JykKKyAgICAgICAgID4+PiBpbnRlcmZhY2Uud2l0aF9ob3N0bWFzaworICAgICAgICAgJzE5Mi4wLjIuNS8wLjAuMC4yNTUnCisKKworLi4gY2xhc3M6OiBJUHY2SW50ZXJmYWNlKGFkZHJlc3MpCisKKyAgIENvbnN0cnVjdCBhbiBJUHY2IGludGVyZmFjZS4gIFRoZSBtZWFuaW5nIG9mICphZGRyZXNzKiBpcyBhcyBpbiB0aGUKKyAgIGNvbnN0cnVjdG9yIG9mIDpjbGFzczpgSVB2Nk5ldHdvcmtgLCBleGNlcHQgdGhhdCBhcmJpdHJhcnkgaG9zdCBhZGRyZXNzZXMKKyAgIGFyZSBhbHdheXMgYWNjZXB0ZWQuCisKKyAgIDpjbGFzczpgSVB2NkludGVyZmFjZWAgaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YElQdjZBZGRyZXNzYCwgc28gaXQgaW5oZXJpdHMKKyAgIGFsbCB0aGUgYXR0cmlidXRlcyBmcm9tIHRoYXQgY2xhc3MuICBJbiBhZGRpdGlvbiwgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzCisgICBhcmUgYXZhaWxhYmxlOgorCisgICAuLiBhdHRyaWJ1dGU6OiBpcAorICAgLi4gYXR0cmlidXRlOjogbmV0d29yaworICAgLi4gYXR0cmlidXRlOjogd2l0aF9wcmVmaXhsZW4KKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfbmV0bWFzaworICAgLi4gYXR0cmlidXRlOjogd2l0aF9ob3N0bWFzaworCisgICAgICBSZWZlciB0byB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgZG9jdW1lbnRhdGlvbiBpbgorICAgICAgOmNsYXNzOmBJUHY0SW50ZXJmYWNlYC4KKworCitPdGhlciBNb2R1bGUgTGV2ZWwgRnVuY3Rpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBtb2R1bGUgYWxzbyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1vZHVsZSBsZXZlbCBmdW5jdGlvbnM6CisKKy4uIGZ1bmN0aW9uOjogdjRfaW50X3RvX3BhY2tlZChhZGRyZXNzKQorCisgICBSZXByZXNlbnQgYW4gYWRkcmVzcyBhcyA0IHBhY2tlZCBieXRlcyBpbiBuZXR3b3JrIChiaWctZW5kaWFuKSBvcmRlci4KKyAgICphZGRyZXNzKiBpcyBhbiBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIG9mIGFuIElQdjQgSVAgYWRkcmVzcy4gIEEKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgaW50ZWdlciBpcyBuZWdhdGl2ZSBvciB0b28gbGFyZ2UgdG8gYmUgYW4KKyAgIElQdjQgSVAgYWRkcmVzcy4KKworICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKDMyMjEyMjU5ODUpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xJykKKyAgID4+PiBpcGFkZHJlc3MudjRfaW50X3RvX3BhY2tlZCgzMjIxMjI1OTg1KQorICAgYidceGMwXHgwMFx4MDJceDAxJworCisKKy4uIGZ1bmN0aW9uOjogdjZfaW50X3RvX3BhY2tlZChhZGRyZXNzKQorCisgICBSZXByZXNlbnQgYW4gYWRkcmVzcyBhcyAxNiBwYWNrZWQgYnl0ZXMgaW4gbmV0d29yayAoYmlnLWVuZGlhbikgb3JkZXIuCisgICAqYWRkcmVzcyogaXMgYW4gaW50ZWdlciByZXByZXNlbnRhdGlvbiBvZiBhbiBJUHY2IElQIGFkZHJlc3MuICBBCisgICA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgdGhlIGludGVnZXIgaXMgbmVnYXRpdmUgb3IgdG9vIGxhcmdlIHRvIGJlIGFuCisgICBJUHY2IElQIGFkZHJlc3MuCisKKworLi4gZnVuY3Rpb246OiBzdW1tYXJpemVfYWRkcmVzc19yYW5nZShmaXJzdCwgbGFzdCkKKworICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG9mIHRoZSBzdW1tYXJpemVkIG5ldHdvcmsgcmFuZ2UgZ2l2ZW4gdGhlIGZpcnN0IGFuZCBsYXN0CisgICBJUCBhZGRyZXNzZXMuICAqZmlyc3QqIGlzIHRoZSBmaXJzdCA6Y2xhc3M6YElQdjRBZGRyZXNzYCBvcgorICAgOmNsYXNzOmBJUHY2QWRkcmVzc2AgaW4gdGhlIHJhbmdlIGFuZCAqbGFzdCogaXMgdGhlIGxhc3QgOmNsYXNzOmBJUHY0QWRkcmVzc2AKKyAgIG9yIDpjbGFzczpgSVB2NkFkZHJlc3NgIGluIHRoZSByYW5nZS4gIEEgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQgaWYKKyAgICpmaXJzdCogb3IgKmxhc3QqIGFyZSBub3QgSVAgYWRkcmVzc2VzIG9yIGFyZSBub3Qgb2YgdGhlIHNhbWUgdmVyc2lvbi4gIEEKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqbGFzdCogaXMgbm90IGdyZWF0ZXIgdGhhbiAqZmlyc3QqIG9yIGlmCisgICAqZmlyc3QqIGFkZHJlc3MgdmVyc2lvbiBpcyBub3QgNCBvciA2LgorCisgICA+Pj4gW2lwYWRkciBmb3IgaXBhZGRyIGluIGlwYWRkcmVzcy5zdW1tYXJpemVfYWRkcmVzc19yYW5nZSgKKyAgIC4uLiAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMCcpLAorICAgLi4uICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTkyLjAuMi4xMzAnKSldCisgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNScpLCBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMzEnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTMwLzMyJyldCisKKworLi4gZnVuY3Rpb246OiBjb2xsYXBzZV9hZGRyZXNzZXMoYWRkcmVzc2VzKQorCisgICBSZXR1cm4gYW4gaXRlcmF0b3Igb2YgdGhlIGNvbGxhcHNlZCA6Y2xhc3M6YElQdjROZXR3b3JrYCBvcgorICAgOmNsYXNzOmBJUHY2TmV0d29ya2Agb2JqZWN0cy4gICphZGRyZXNzZXMqIGlzIGFuIGl0ZXJhdG9yIG9mCisgICA6Y2xhc3M6YElQdjROZXR3b3JrYCBvciA6Y2xhc3M6YElQdjZOZXR3b3JrYCBvYmplY3RzLiAgQSA6ZXhjOmBUeXBlRXJyb3JgIGlzCisgICByYWlzZWQgaWYgKmFkZHJlc3NlcyogY29udGFpbnMgbWl4ZWQgdmVyc2lvbiBvYmplY3RzLgorCisgICA+Pj4gW2lwYWRkciBmb3IgaXBhZGRyIGluCisgICAuLi4gaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcyhbaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjUnKSwKKyAgIC4uLiBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI1JyldKV0KKyAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JyldCisKKworLi4gZnVuY3Rpb246OiBnZXRfbWl4ZWRfdHlwZV9rZXkob2JqKQorCisgICBSZXR1cm4gYSBrZXkgc3VpdGFibGUgZm9yIHNvcnRpbmcgYmV0d2VlbiBuZXR3b3JrcyBhbmQgYWRkcmVzc2VzLiAgQWRkcmVzcworICAgYW5kIE5ldHdvcmsgb2JqZWN0cyBhcmUgbm90IHNvcnRhYmxlIGJ5IGRlZmF1bHQ7IHRoZXkncmUgZnVuZGFtZW50YWxseQorICAgZGlmZmVyZW50LCBzbyB0aGUgZXhwcmVzc2lvbjo6CisKKyAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMCcpIDw9IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorCisgICBkb2Vzbid0IG1ha2Ugc2Vuc2UuICBUaGVyZSBhcmUgc29tZSB0aW1lcyBob3dldmVyLCB3aGVyZSB5b3UgbWF5IHdpc2ggdG8KKyAgIGhhdmUgOm1vZDpgaXBhZGRyZXNzYCBzb3J0IHRoZXNlIGFueXdheS4gIElmIHlvdSBuZWVkIHRvIGRvIHRoaXMsIHlvdSBjYW4gdXNlCisgICB0aGlzIGZ1bmN0aW9uIGFzIHRoZSBgYGtleWBgIGFyZ3VtZW50IHRvIDpmdW5jOmBzb3J0ZWQoKWAuCisKKyAgICpvYmoqIGlzIGVpdGhlciBhIG5ldHdvcmsgb3IgYWRkcmVzcyBvYmplY3QuCisKKworQ3VzdG9tIEV4Y2VwdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIHN1cHBvcnQgbW9yZSBzcGVjaWZpYyBlcnJvciByZXBvcnRpbmcgZnJvbSBjbGFzcyBjb25zdHJ1Y3RvcnMsIHRoZQorbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgorCisuLiBleGNlcHRpb246OiBBZGRyZXNzVmFsdWVFcnJvcihWYWx1ZUVycm9yKQorCisgICBBbnkgdmFsdWUgZXJyb3IgcmVsYXRlZCB0byB0aGUgYWRkcmVzcy4KKworCisuLiBleGNlcHRpb246OiBOZXRtYXNrVmFsdWVFcnJvcihWYWx1ZUVycm9yKQorCisgICBBbnkgdmFsdWUgZXJyb3IgcmVsYXRlZCB0byB0aGUgbmV0bWFzay4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2lwYy5yc3QgYi9Eb2MvbGlicmFyeS9pcGMucnN0CmluZGV4IGM4NzMwNjUuLjkxZWM2OTMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2lwYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaXBjLnJzdApAQCAtOCw3ICs4LDcgQEAKIHRvIGNvbW11bmljYXRlLgogCiBTb21lIG1vZHVsZXMgb25seSB3b3JrIGZvciB0d28gcHJvY2Vzc2VzIHRoYXQgYXJlIG9uIHRoZSBzYW1lIG1hY2hpbmUsIGUuZy4KLTptb2Q6YHNpZ25hbGAgYW5kIDptb2Q6YHN1YnByb2Nlc3NgLiAgT3RoZXIgbW9kdWxlcyBzdXBwb3J0IG5ldHdvcmtpbmcgcHJvdG9jb2xzCis6bW9kOmBzaWduYWxgIGFuZCA6bW9kOmBtbWFwYC4gIE90aGVyIG1vZHVsZXMgc3VwcG9ydCBuZXR3b3JraW5nIHByb3RvY29scwogdGhhdCB0d28gb3IgbW9yZSBwcm9jZXNzZXMgY2FuIHVzZWQgdG8gY29tbXVuaWNhdGUgYWNyb3NzIG1hY2hpbmVzLgogCiBUaGUgbGlzdCBvZiBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgaXM6CkBAIC0xNiw5ICsxNiw5IEBACiAKIC4uIHRvY3RyZWU6OgogCi0gICBzdWJwcm9jZXNzLnJzdAogICAgc29ja2V0LnJzdAogICAgc3NsLnJzdAotICAgc2lnbmFsLnJzdAogICAgYXN5bmNvcmUucnN0CiAgICBhc3luY2hhdC5yc3QKKyAgIHNpZ25hbC5yc3QKKyAgIG1tYXAucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0IGIvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdAppbmRleCAzMDhmOTI1Li4xZWI1NTRhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QKQEAgLTQ2LDcgKzQ2LDcgQEAKID09PT09PT09PT09PT09PT09PT09ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIEl0ZXJhdG9yICAgICAgICAgICAgICAgIEFyZ3VtZW50cyAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4YW1wbGUKID09PT09PT09PT09PT09PT09PT09ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLTpmdW5jOmBhY2N1bXVsYXRlYCAgICAgIHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDAsIHAwK3AxLCBwMCtwMStwMiwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgYWNjdW11bGF0ZShbMSwyLDMsNCw1XSkgLS0+IDEgMyA2IDEwIDE1YGAKKzpmdW5jOmBhY2N1bXVsYXRlYCAgICAgIHAgWyxmdW5jXSAgICAgICAgICAgICAgICAgICAgICAgcDAsIHAwK3AxLCBwMCtwMStwMiwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgYWNjdW11bGF0ZShbMSwyLDMsNCw1XSkgLS0+IDEgMyA2IDEwIDE1YGAKIDpmdW5jOmBjaGFpbmAgICAgICAgICAgIHAsIHEsIC4uLiAgICAgICAgICAgICAgICAgICAgICAgcDAsIHAxLCAuLi4gcGxhc3QsIHEwLCBxMSwgLi4uICAgICAgICAgICAgICAgICAgICAgIGBgY2hhaW4oJ0FCQycsICdERUYnKSAtLT4gQSBCIEMgRCBFIEZgYAogOmZ1bmM6YGNvbXByZXNzYCAgICAgICAgZGF0YSwgc2VsZWN0b3JzICAgICAgICAgICAgICAgICAoZFswXSBpZiBzWzBdKSwgKGRbMV0gaWYgc1sxXSksIC4uLiAgICAgICAgICAgICAgICAgYGBjb21wcmVzcygnQUJDREVGJywgWzEsMCwxLDAsMSwxXSkgLS0+IEEgQyBFIEZgYAogOmZ1bmM6YGRyb3B3aGlsZWAgICAgICAgcHJlZCwgc2VxICAgICAgICAgICAgICAgICAgICAgICBzZXFbbl0sIHNlcVtuKzFdLCBzdGFydGluZyB3aGVuIHByZWQgZmFpbHMgICAgICAgICAgYGBkcm9wd2hpbGUobGFtYmRhIHg6IHg8NSwgWzEsNCw2LDQsMV0pIC0tPiA2IDQgMWBgCkBAIC04NCwyMyArODQsNjEgQEAKIHN0cmVhbXMgb2YgaW5maW5pdGUgbGVuZ3RoLCBzbyB0aGV5IHNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIGJ5IGZ1bmN0aW9ucyBvcgogbG9vcHMgdGhhdCB0cnVuY2F0ZSB0aGUgc3RyZWFtLgogCi0uLiBmdW5jdGlvbjo6IGFjY3VtdWxhdGUoaXRlcmFibGUpCisuLiBmdW5jdGlvbjo6IGFjY3VtdWxhdGUoaXRlcmFibGVbLCBmdW5jXSkKIAogICAgIE1ha2UgYW4gaXRlcmF0b3IgdGhhdCByZXR1cm5zIGFjY3VtdWxhdGVkIHN1bXMuIEVsZW1lbnRzIG1heSBiZSBhbnkgYWRkYWJsZQotICAgIHR5cGUgaW5jbHVkaW5nIDpjbGFzczpgRGVjaW1hbGAgb3IgOmNsYXNzOmBGcmFjdGlvbmAuICBFcXVpdmFsZW50IHRvOjoKKyAgICB0eXBlIGluY2x1ZGluZyA6Y2xhc3M6YERlY2ltYWxgIG9yIDpjbGFzczpgRnJhY3Rpb25gLiAgSWYgdGhlIG9wdGlvbmFsCisgICAgKmZ1bmMqIGFyZ3VtZW50IGlzIHN1cHBsaWVkLCBpdCBzaG91bGQgYmUgYSBmdW5jdGlvbiBvZiB0d28gYXJndW1lbnRzCisgICAgYW5kIGl0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIGFkZGl0aW9uLgogCi0gICAgICAgIGRlZiBhY2N1bXVsYXRlKGl0ZXJhYmxlKToKKyAgICBFcXVpdmFsZW50IHRvOjoKKworICAgICAgICBkZWYgYWNjdW11bGF0ZShpdGVyYWJsZSwgZnVuYz1vcGVyYXRvci5hZGQpOgogICAgICAgICAgICAgJ1JldHVybiBydW5uaW5nIHRvdGFscycKICAgICAgICAgICAgICMgYWNjdW11bGF0ZShbMSwyLDMsNCw1XSkgLS0+IDEgMyA2IDEwIDE1CisgICAgICAgICAgICAjIGFjY3VtdWxhdGUoWzEsMiwzLDQsNV0sIG9wZXJhdG9yLm11bCkgLS0+IDEgMiA2IDI0IDEyMAogICAgICAgICAgICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQogICAgICAgICAgICAgdG90YWwgPSBuZXh0KGl0KQogICAgICAgICAgICAgeWllbGQgdG90YWwKICAgICAgICAgICAgIGZvciBlbGVtZW50IGluIGl0OgotICAgICAgICAgICAgICAgIHRvdGFsID0gdG90YWwgKyBlbGVtZW50CisgICAgICAgICAgICAgICAgdG90YWwgPSBmdW5jKHRvdGFsLCBlbGVtZW50KQogICAgICAgICAgICAgICAgIHlpZWxkIHRvdGFsCiAKKyAgICBUaGVyZSBhcmUgYSBudW1iZXIgb2YgdXNlcyBmb3IgdGhlICpmdW5jKiBhcmd1bWVudC4gIEl0IGNhbiBiZSBzZXQgdG8KKyAgICA6ZnVuYzpgbWluYCBmb3IgYSBydW5uaW5nIG1pbmltdW0sIDpmdW5jOmBtYXhgIGZvciBhIHJ1bm5pbmcgbWF4aW11bSwgb3IKKyAgICA6ZnVuYzpgb3BlcmF0b3IubXVsYCBmb3IgYSBydW5uaW5nIHByb2R1Y3QuICBBbW9ydGl6YXRpb24gdGFibGVzIGNhbiBiZQorICAgIGJ1aWx0IGJ5IGFjY3VtdWxhdGluZyBpbnRlcmVzdCBhbmQgYXBwbHlpbmcgcGF5bWVudHMuICBGaXJzdC1vcmRlcgorICAgIGByZWN1cnJlbmNlIHJlbGF0aW9ucyA8aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWN1cnJlbmNlX3JlbGF0aW9uPmBfCisgICAgY2FuIGJlIG1vZGVsZWQgYnkgc3VwcGx5aW5nIHRoZSBpbml0aWFsIHZhbHVlIGluIHRoZSBpdGVyYWJsZSBhbmQgdXNpbmcgb25seQorICAgIHRoZSBhY2N1bXVsYXRlZCB0b3RhbCBpbiAqZnVuYyogYXJndW1lbnQ6OgorCisgICAgICA+Pj4gZGF0YSA9IFszLCA0LCA2LCAyLCAxLCA5LCAwLCA3LCA1LCA4XQorICAgICAgPj4+IGxpc3QoYWNjdW11bGF0ZShkYXRhLCBvcGVyYXRvci5tdWwpKSAgICAgIyBydW5uaW5nIHByb2R1Y3QKKyAgICAgIFszLCAxMiwgNzIsIDE0NCwgMTQ0LCAxMjk2LCAwLCAwLCAwLCAwXQorICAgICAgPj4+IGxpc3QoYWNjdW11bGF0ZShkYXRhLCBtYXgpKSAgICAgICAgICAgICAgIyBydW5uaW5nIG1heGltdW0KKyAgICAgIFszLCA0LCA2LCA2LCA2LCA5LCA5LCA5LCA5LCA5XQorCisgICAgICAjIEFtb3J0aXplIGEgNSUgbG9hbiBvZiAxMDAwIHdpdGggNCBhbm51YWwgcGF5bWVudHMgb2YgOTAKKyAgICAgID4+PiBjYXNoZmxvd3MgPSBbMTAwMCwgLTkwLCAtOTAsIC05MCwgLTkwXQorICAgICAgPj4+IGxpc3QoYWNjdW11bGF0ZShjYXNoZmxvd3MsIGxhbWJkYSBiYWwsIHBtdDogYmFsKjEuMDUgKyBwbXQpKQorICAgICAgWzEwMDAsIDk2MC4wLCA5MTguMCwgODczLjkwMDAwMDAwMDAwMDEsIDgyNy41OTUwMDAwMDAwMDAxXQorCisgICAgICAjIENoYW90aWMgcmVjdXJyZW5jZSByZWxhdGlvbiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xvZ2lzdGljX21hcAorICAgICAgPj4+IGxvZ2lzdGljX21hcCA9IGxhbWJkYSB4LCBfOiAgciAqIHggKiAoMSAtIHgpCisgICAgICA+Pj4gciA9IDMuOAorICAgICAgPj4+IHgwID0gMC40CisgICAgICA+Pj4gaW5wdXRzID0gcmVwZWF0KHgwLCAzNikgICAgICMgb25seSB0aGUgaW5pdGlhbCB2YWx1ZSBpcyB1c2VkCisgICAgICA+Pj4gW2Zvcm1hdCh4LCAnLjJmJykgZm9yIHggaW4gYWNjdW11bGF0ZShpbnB1dHMsIGxvZ2lzdGljX21hcCldCisgICAgICBbJzAuNDAnLCAnMC45MScsICcwLjMwJywgJzAuODEnLCAnMC42MCcsICcwLjkyJywgJzAuMjknLCAnMC43OScsICcwLjYzJywKKyAgICAgICAnMC44OCcgLCcwLjM5JywgJzAuOTAnLCAnMC4zMycsICcwLjg0JywgJzAuNTInLCAnMC45NScsICcwLjE4JywgJzAuNTcnLAorICAgICAgICcwLjkzJywgJzAuMjUnLCAnMC43MScsICcwLjc5JywgJzAuNjMnLCAnMC44OCcsICcwLjM5JywgJzAuOTEnLCAnMC4zMicsCisgICAgICAgJzAuODMnLCAnMC41NCcsICcwLjk1JywgJzAuMjAnLCAnMC42MCcsICcwLjkxJywgJzAuMzAnLCAnMC44MCcsICcwLjYwJ10KKwogICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICBBZGRlZCB0aGUgb3B0aW9uYWwgKmZ1bmMqIHBhcmFtZXRlci4KKwogLi4gZnVuY3Rpb246OiBjaGFpbigqaXRlcmFibGVzKQogCiAgICBNYWtlIGFuIGl0ZXJhdG9yIHRoYXQgcmV0dXJucyBlbGVtZW50cyBmcm9tIHRoZSBmaXJzdCBpdGVyYWJsZSB1bnRpbCBpdCBpcwpAQCAtNjY4LDcgKzcwNiw4IEBACiAgICAgICAgcmV0dXJuIHppcChhLCBiKQogCiAgICBkZWYgZ3JvdXBlcihuLCBpdGVyYWJsZSwgZmlsbHZhbHVlPU5vbmUpOgotICAgICAgICJncm91cGVyKDMsICdBQkNERUZHJywgJ3gnKSAtLT4gQUJDIERFRiBHeHgiCisgICAgICAgIkNvbGxlY3QgZGF0YSBpbnRvIGZpeGVkLWxlbmd0aCBjaHVua3Mgb3IgYmxvY2tzIgorICAgICAgICMgZ3JvdXBlcigzLCAnQUJDREVGRycsICd4JykgLS0+IEFCQyBERUYgR3h4IgogICAgICAgIGFyZ3MgPSBbaXRlcihpdGVyYWJsZSldICogbgogICAgICAgIHJldHVybiB6aXBfbG9uZ2VzdCgqYXJncywgZmlsbHZhbHVlPWZpbGx2YWx1ZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbG9jYWxlLnJzdCBiL0RvYy9saWJyYXJ5L2xvY2FsZS5yc3QKaW5kZXggNDVhYmEwYS4uZDQ2ZjFjZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbG9jYWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9sb2NhbGUucnN0CkBAIC00NzUsOCArNDc1LDExIEBACiBsb2NhbGUgc29tZXdoYXQgcGFpbmZ1bCB0byB1c2UgY29ycmVjdGx5LgogCiBJbml0aWFsbHksIHdoZW4gYSBwcm9ncmFtIGlzIHN0YXJ0ZWQsIHRoZSBsb2NhbGUgaXMgdGhlIGBgQ2BgIGxvY2FsZSwgbm8gbWF0dGVyCi13aGF0IHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxvY2FsZSBpcy4gIFRoZSBwcm9ncmFtIG11c3QgZXhwbGljaXRseSBzYXkgdGhhdCBpdAotd2FudHMgdGhlIHVzZXIncyBwcmVmZXJyZWQgbG9jYWxlIHNldHRpbmdzIGJ5IGNhbGxpbmcgYGBzZXRsb2NhbGUoTENfQUxMLCAnJylgYC4KK3doYXQgdGhlIHVzZXIncyBwcmVmZXJyZWQgbG9jYWxlIGlzLiAgVGhlcmUgaXMgb25lIGV4Y2VwdGlvbjogdGhlCis6ZGF0YTpgTENfQ1RZUEVgIGNhdGVnb3J5IGlzIGNoYW5nZWQgYXQgc3RhcnR1cCB0byBzZXQgdGhlIGN1cnJlbnQgbG9jYWxlCitlbmNvZGluZyB0byB0aGUgdXNlcidzIHByZWZlcnJlZCBsb2NhbGUgZW5jb2RpbmcuIFRoZSBwcm9ncmFtIG11c3QgZXhwbGljaXRseQorc2F5IHRoYXQgaXQgd2FudHMgdGhlIHVzZXIncyBwcmVmZXJyZWQgbG9jYWxlIHNldHRpbmdzIGZvciBvdGhlciBjYXRlZ29yaWVzIGJ5CitjYWxsaW5nIGBgc2V0bG9jYWxlKExDX0FMTCwgJycpYGAuCiAKIEl0IGlzIGdlbmVyYWxseSBhIGJhZCBpZGVhIHRvIGNhbGwgOmZ1bmM6YHNldGxvY2FsZWAgaW4gc29tZSBsaWJyYXJ5IHJvdXRpbmUsCiBzaW5jZSBhcyBhIHNpZGUgZWZmZWN0IGl0IGFmZmVjdHMgdGhlIGVudGlyZSBwcm9ncmFtLiAgU2F2aW5nIGFuZCByZXN0b3JpbmcgaXQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0IGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKaW5kZXggYmE3Y2QwMC4uMzBmOWUwMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKQEAgLTE2NCw2ICsxNjQsODcgQEAKICAgICAgIGNoYW5nZWQuICBJZiBpdCBoYXMsIHRoZSBleGlzdGluZyBzdHJlYW0gaXMgZmx1c2hlZCBhbmQgY2xvc2VkIGFuZCB0aGUKICAgICAgIGZpbGUgb3BlbmVkIGFnYWluLCBiZWZvcmUgb3V0cHV0dGluZyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLgogCisuLiBfYmFzZS1yb3RhdGluZy1oYW5kbGVyOgorCitCYXNlUm90YXRpbmdIYW5kbGVyCiteXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RoZSA6Y2xhc3M6YEJhc2VSb3RhdGluZ0hhbmRsZXJgIGNsYXNzLCBsb2NhdGVkIGluIHRoZSA6bW9kOmBsb2dnaW5nLmhhbmRsZXJzYAorbW9kdWxlLCBpcyB0aGUgYmFzZSBjbGFzcyBmb3IgdGhlIHJvdGF0aW5nIGZpbGUgaGFuZGxlcnMsCis6Y2xhc3M6YFJvdGF0aW5nRmlsZUhhbmRsZXJgIGFuZCA6Y2xhc3M6YFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlcmAuIFlvdSBzaG91bGQKK25vdCBuZWVkIHRvIGluc3RhbnRpYXRlIHRoaXMgY2xhc3MsIGJ1dCBpdCBoYXMgYXR0cmlidXRlcyBhbmQgbWV0aG9kcyB5b3UgbWF5CituZWVkIHRvIG92ZXJyaWRlLgorCisuLiBjbGFzczo6IEJhc2VSb3RhdGluZ0hhbmRsZXIoZmlsZW5hbWUsIG1vZGUsIGVuY29kaW5nPU5vbmUsIGRlbGF5PUZhbHNlKQorCisgICBUaGUgcGFyYW1ldGVycyBhcmUgYXMgZm9yIDpjbGFzczpgRmlsZUhhbmRsZXJgLiBUaGUgYXR0cmlidXRlcyBhcmU6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5hbWVyCisKKyAgICAgIElmIHRoaXMgYXR0cmlidXRlIGlzIHNldCB0byBhIGNhbGxhYmxlLCB0aGUgOm1ldGg6YHJvdGF0aW9uX2ZpbGVuYW1lYAorICAgICAgbWV0aG9kIGRlbGVnYXRlcyB0byB0aGlzIGNhbGxhYmxlLiBUaGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhlIGNhbGxhYmxlCisgICAgICBhcmUgdGhvc2UgcGFzc2VkIHRvIDptZXRoOmByb3RhdGlvbl9maWxlbmFtZWAuCisKKyAgICAgIC4uIG5vdGU6OiBUaGUgbmFtZXIgZnVuY3Rpb24gaXMgY2FsbGVkIHF1aXRlIGEgZmV3IHRpbWVzIGR1cmluZyByb2xsb3ZlciwKKyAgICAgICAgIHNvIGl0IHNob3VsZCBiZSBhcyBzaW1wbGUgYW5kIGFzIGZhc3QgYXMgcG9zc2libGUuIEl0IHNob3VsZCBhbHNvCisgICAgICAgICByZXR1cm4gdGhlIHNhbWUgb3V0cHV0IGV2ZXJ5IHRpbWUgZm9yIGEgZ2l2ZW4gaW5wdXQsIG90aGVyd2lzZSB0aGUKKyAgICAgICAgIHJvbGxvdmVyIGJlaGF2aW91ciBtYXkgbm90IHdvcmsgYXMgZXhwZWN0ZWQuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKyAgIC4uIGF0dHJpYnV0ZTo6IEJhc2VSb3RhdGluZ0hhbmRsZXIucm90YXRvcgorCisgICAgICBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBzZXQgdG8gYSBjYWxsYWJsZSwgdGhlIDptZXRoOmByb3RhdGVgIG1ldGhvZAorICAgICAgZGVsZWdhdGVzIHRvIHRoaXMgY2FsbGFibGUuICBUaGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhlIGNhbGxhYmxlIGFyZQorICAgICAgdGhvc2UgcGFzc2VkIHRvIDptZXRoOmByb3RhdGVgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbWV0aG9kOjogQmFzZVJvdGF0aW5nSGFuZGxlci5yb3RhdGlvbl9maWxlbmFtZShkZWZhdWx0X25hbWUpCisKKyAgICAgIE1vZGlmeSB0aGUgZmlsZW5hbWUgb2YgYSBsb2cgZmlsZSB3aGVuIHJvdGF0aW5nLgorCisgICAgICBUaGlzIGlzIHByb3ZpZGVkIHNvIHRoYXQgYSBjdXN0b20gZmlsZW5hbWUgY2FuIGJlIHByb3ZpZGVkLgorCisgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUgJ25hbWVyJyBhdHRyaWJ1dGUgb2YgdGhlIGhhbmRsZXIsCisgICAgICBpZiBpdCdzIGNhbGxhYmxlLCBwYXNzaW5nIHRoZSBkZWZhdWx0IG5hbWUgdG8gaXQuIElmIHRoZSBhdHRyaWJ1dGUgaXNuJ3QKKyAgICAgIGNhbGxhYmxlICh0aGUgZGVmYXVsdCBpcyBgYE5vbmVgYCksIHRoZSBuYW1lIGlzIHJldHVybmVkIHVuY2hhbmdlZC4KKworICAgICAgOnBhcmFtIGRlZmF1bHRfbmFtZTogVGhlIGRlZmF1bHQgbmFtZSBmb3IgdGhlIGxvZyBmaWxlLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisgICAuLiBtZXRob2Q6OiBCYXNlUm90YXRpbmdIYW5kbGVyLnJvdGF0ZShzb3VyY2UsIGRlc3QpCisKKyAgICAgIFdoZW4gcm90YXRpbmcsIHJvdGF0ZSB0aGUgY3VycmVudCBsb2cuCisKKyAgICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzIHRoZSAncm90YXRvcicgYXR0cmlidXRlIG9mIHRoZSBoYW5kbGVyLAorICAgICAgaWYgaXQncyBjYWxsYWJsZSwgcGFzc2luZyB0aGUgc291cmNlIGFuZCBkZXN0IGFyZ3VtZW50cyB0byBpdC4gSWYgdGhlCisgICAgICBhdHRyaWJ1dGUgaXNuJ3QgY2FsbGFibGUgKHRoZSBkZWZhdWx0IGlzIGBgTm9uZWBgKSwgdGhlIHNvdXJjZSBpcyBzaW1wbHkKKyAgICAgIHJlbmFtZWQgdG8gdGhlIGRlc3RpbmF0aW9uLgorCisgICAgICA6cGFyYW0gc291cmNlOiBUaGUgc291cmNlIGZpbGVuYW1lLiBUaGlzIGlzIG5vcm1hbGx5IHRoZSBiYXNlCisgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgZS5nLiAndGVzdC5sb2cnCisgICAgICA6cGFyYW0gZGVzdDogICBUaGUgZGVzdGluYXRpb24gZmlsZW5hbWUuIFRoaXMgaXMgbm9ybWFsbHkKKyAgICAgICAgICAgICAgICAgICAgIHdoYXQgdGhlIHNvdXJjZSBpcyByb3RhdGVkIHRvLCBlLmcuICd0ZXN0LmxvZy4xJy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKK1RoZSByZWFzb24gdGhlIGF0dHJpYnV0ZXMgZXhpc3QgaXMgdG8gc2F2ZSB5b3UgaGF2aW5nIHRvIHN1YmNsYXNzIC0geW91IGNhbiB1c2UKK3RoZSBzYW1lIGNhbGxhYmxlcyBmb3IgaW5zdGFuY2VzIG9mIDpjbGFzczpgUm90YXRpbmdGaWxlSGFuZGxlcmAgYW5kCis6Y2xhc3M6YFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlcmAuIElmIGVpdGhlciB0aGUgbmFtZXIgb3Igcm90YXRvciBjYWxsYWJsZQorcmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhpcyB3aWxsIGJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGFueSBvdGhlcgorZXhjZXB0aW9uIGR1cmluZyBhbiA6bWV0aDpgZW1pdGAgY2FsbCwgaS5lLiB2aWEgdGhlIDptZXRoOmBoYW5kbGVFcnJvcmAgbWV0aG9kCitvZiB0aGUgaGFuZGxlci4KKworSWYgeW91IG5lZWQgdG8gbWFrZSBtb3JlIHNpZ25pZmljYW50IGNoYW5nZXMgdG8gcm90YXRpb24gcHJvY2Vzc2luZywgeW91IGNhbgorb3ZlcnJpZGUgdGhlIG1ldGhvZHMuCisKK0ZvciBhbiBleGFtcGxlLCBzZWUgOnJlZjpgY29va2Jvb2stcm90YXRvci1uYW1lcmAuCisKKwogLi4gX3JvdGF0aW5nLWZpbGUtaGFuZGxlcjoKIAogUm90YXRpbmdGaWxlSGFuZGxlcgpAQCAtNDU2LDYgKzUzNywxNSBAQAogICAgICAgICAgYmVoYXZpb3VyKSBidXQgY2FuIGJlIHNldCB0byBgYEZhbHNlYGAgb24gYSBgYFN5c0xvZ0hhbmRsZXJgYCBpbnN0YW5jZQogICAgICAgICAgaW4gb3JkZXIgZm9yIHRoYXQgaW5zdGFuY2UgdG8gKm5vdCogYXBwZW5kIHRoZSBOVUwgdGVybWluYXRvci4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIChTZWU6IDppc3N1ZTpgMTI0MTlgLikgSW4gZWFybGllciB2ZXJzaW9ucywgdGhlcmUgd2FzIG5vIGZhY2lsaXR5IGZvcgorICAgICAgICAgYW4gImlkZW50IiBvciAidGFnIiBwcmVmaXggdG8gaWRlbnRpZnkgdGhlIHNvdXJjZSBvZiB0aGUgbWVzc2FnZS4gVGhpcworICAgICAgICAgY2FuIG5vdyBiZSBzcGVjaWZpZWQgdXNpbmcgYSBjbGFzcy1sZXZlbCBhdHRyaWJ1dGUsIGRlZmF1bHRpbmcgdG8KKyAgICAgICAgIGBgIiJgYCB0byBwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvdXIsIGJ1dCB3aGljaCBjYW4gYmUgb3ZlcnJpZGRlbiBvbgorICAgICAgICAgYSBgYFN5c0xvZ0hhbmRsZXJgYCBpbnN0YW5jZSBpbiBvcmRlciBmb3IgdGhhdCBpbnN0YW5jZSB0byBwcmVwZW5kCisgICAgICAgICB0aGUgaWRlbnQgdG8gZXZlcnkgbWVzc2FnZSBoYW5kbGVkLiBOb3RlIHRoYXQgdGhlIHByb3ZpZGVkIGlkZW50IG11c3QKKyAgICAgICAgIGJlIHRleHQsIG5vdCBieXRlcywgYW5kIGlzIHByZXBlbmRlZCB0byB0aGUgbWVzc2FnZSBleGFjdGx5IGFzIGlzLgorCiAgICAuLiBtZXRob2Q6OiBlbmNvZGVQcmlvcml0eShmYWNpbGl0eSwgcHJpb3JpdHkpCiAKICAgICAgIEVuY29kZXMgdGhlIGZhY2lsaXR5IGFuZCBwcmlvcml0eSBpbnRvIGFuIGludGVnZXIuIFlvdSBjYW4gcGFzcyBpbiBzdHJpbmdzCkBAIC02MTgsNyArNzA4LDcgQEAKIHN1cHBvcnRzIHNlbmRpbmcgbG9nZ2luZyBtZXNzYWdlcyB0byBhbiBlbWFpbCBhZGRyZXNzIHZpYSBTTVRQLgogCiAKLS4uIGNsYXNzOjogU01UUEhhbmRsZXIobWFpbGhvc3QsIGZyb21hZGRyLCB0b2FkZHJzLCBzdWJqZWN0LCBjcmVkZW50aWFscz1Ob25lLCBzZWN1cmU9Tm9uZSkKKy4uIGNsYXNzOjogU01UUEhhbmRsZXIobWFpbGhvc3QsIGZyb21hZGRyLCB0b2FkZHJzLCBzdWJqZWN0LCBjcmVkZW50aWFscz1Ob25lLCBzZWN1cmU9Tm9uZSwgdGltZW91dD0xLjApCiAKICAgIFJldHVybnMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDpjbGFzczpgU01UUEhhbmRsZXJgIGNsYXNzLiBUaGUgaW5zdGFuY2UgaXMKICAgIGluaXRpYWxpemVkIHdpdGggdGhlIGZyb20gYW5kIHRvIGFkZHJlc3NlcyBhbmQgc3ViamVjdCBsaW5lIG9mIHRoZSBlbWFpbC4gVGhlCkBAIC02MzQsNiArNzI0LDEyIEBACiAgICBhbmQgY2VydGlmaWNhdGUgZmlsZS4gKFRoaXMgdHVwbGUgaXMgcGFzc2VkIHRvIHRoZQogICAgOm1ldGg6YHNtdHBsaWIuU01UUC5zdGFydHRsc2AgbWV0aG9kLikKIAorICAgQSB0aW1lb3V0IGNhbiBiZSBzcGVjaWZpZWQgZm9yIGNvbW11bmljYXRpb24gd2l0aCB0aGUgU01UUCBzZXJ2ZXIgdXNpbmcgdGhlCisgICAqdGltZW91dCogYXJndW1lbnQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICp0aW1lb3V0KiBhcmd1bWVudCB3YXMgYWRkZWQuCisKICAgIC4uIG1ldGhvZDo6IGVtaXQocmVjb3JkKQogCiAgICAgICBGb3JtYXRzIHRoZSByZWNvcmQgYW5kIHNlbmRzIGl0IHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzc2Vlcy4KQEAgLTY5NCw3ICs3OTAsNyBAQAogCiAgICAuLiBtZXRob2Q6OiBjbG9zZSgpCiAKLSAgICAgIENhbGxzIDptZXRoOmBmbHVzaGAsIHNldHMgdGhlIHRhcmdldCB0byA6Y29uc3Q6YE5vbmVgIGFuZCBjbGVhcnMgdGhlCisgICAgICBDYWxscyA6bWV0aDpgZmx1c2hgLCBzZXRzIHRoZSB0YXJnZXQgdG8gYGBOb25lYGAgYW5kIGNsZWFycyB0aGUKICAgICAgIGJ1ZmZlci4KIAogCkBAIC04NjMsNiArOTU5LDE1IEBACiAgICAgICBOb3RlIHRoYXQgaWYgeW91IGRvbid0IGNhbGwgdGhpcyBiZWZvcmUgeW91ciBhcHBsaWNhdGlvbiBleGl0cywgdGhlcmUKICAgICAgIG1heSBiZSBzb21lIHJlY29yZHMgc3RpbGwgbGVmdCBvbiB0aGUgcXVldWUsIHdoaWNoIHdvbid0IGJlIHByb2Nlc3NlZC4KIAorICAgLi4gbWV0aG9kOjogZW5xdWV1ZV9zZW50aW5lbCgpCisKKyAgICAgIFdyaXRlcyBhIHNlbnRpbmVsIHRvIHRoZSBxdWV1ZSB0byB0ZWxsIHRoZSBsaXN0ZW5lciB0byBxdWl0LiBUaGlzCisgICAgICBpbXBsZW1lbnRhdGlvbiB1c2VzIGBgcHV0X25vd2FpdCgpYGAuICBZb3UgbWF5IHdhbnQgdG8gb3ZlcnJpZGUgdGhpcworICAgICAgbWV0aG9kIGlmIHlvdSB3YW50IHRvIHVzZSB0aW1lb3V0cyBvciB3b3JrIHdpdGggY3VzdG9tIHF1ZXVlCisgICAgICBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIHNlZWFsc286OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9sb2dnaW5nLnJzdCBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcucnN0CmluZGV4IGMyYWY4ZTguLjExODYzYTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcucnN0CkBAIC0yMjIsNiArMjIyLDkgQEAKICAgIExvZ3MgYSBtZXNzYWdlIHdpdGggbGV2ZWwgOmNvbnN0OmBXQVJOSU5HYCBvbiB0aGlzIGxvZ2dlci4gVGhlIGFyZ3VtZW50cyBhcmUKICAgIGludGVycHJldGVkIGFzIGZvciA6bWV0aDpgZGVidWdgLgogCisgICAuLiBub3RlOjogVGhlcmUgaXMgYW4gb2Jzb2xldGUgbWV0aG9kIGBgd2FybmBgIHdoaWNoIGlzIGZ1bmN0aW9uYWxseQorICAgICAgaWRlbnRpY2FsIHRvIGBgd2FybmluZ2BgLiBBcyBgYHdhcm5gYCBpcyBkZXByZWNhdGVkLCBwbGVhc2UgZG8gbm90IHVzZQorICAgICAgaXQgLSB1c2UgYGB3YXJuaW5nYGAgaW5zdGVhZC4KIAogLi4gbWV0aG9kOjogTG9nZ2VyLmVycm9yKG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCkBAIC01MDcsNiArNTEwLDE5IEBACiAgICAgICB3YW50IGFsbCBsb2dnaW5nIHRpbWVzIHRvIGJlIHNob3duIGluIEdNVCwgc2V0IHRoZSBgYGNvbnZlcnRlcmBgCiAgICAgICBhdHRyaWJ1dGUgaW4gdGhlIGBgRm9ybWF0dGVyYGAgY2xhc3MuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBQcmV2aW91c2x5LCB0aGUgZGVmYXVsdCBJU08gODYwMSBmb3JtYXQgd2FzIGhhcmQtY29kZWQgYXMgaW4gdGhpcworICAgICAgICAgZXhhbXBsZTogYGAyMDEwLTA5LTA2IDIyOjM4OjE1LDI5MmBgIHdoZXJlIHRoZSBwYXJ0IGJlZm9yZSB0aGUgY29tbWEgaXMKKyAgICAgICAgIGhhbmRsZWQgYnkgYSBzdHJwdGltZSBmb3JtYXQgc3RyaW5nIChgYCclWS0lbS0lZCAlSDolTTolUydgYCksIGFuZCB0aGUKKyAgICAgICAgIHBhcnQgYWZ0ZXIgdGhlIGNvbW1hIGlzIGEgbWlsbGlzZWNvbmQgdmFsdWUuIEJlY2F1c2Ugc3RycHRpbWUgZG9lcyBub3QKKyAgICAgICAgIGhhdmUgYSBmb3JtYXQgcGxhY2Vob2xkZXIgZm9yIG1pbGxpc2Vjb25kcywgdGhlIG1pbGxpc2Vjb25kIHZhbHVlIGlzCisgICAgICAgICBhcHBlbmRlZCB1c2luZyBhbm90aGVyIGZvcm1hdCBzdHJpbmcsIGBgJyVzLCUwM2QnYGAg4oCTIGFuZCBib3RoIG9mIHRoZXNlCisgICAgICAgICBmb3JtYXQgc3RyaW5ncyBoYXZlIGJlZW4gaGFyZGNvZGVkIGludG8gdGhpcyBtZXRob2QuIFdpdGggdGhlIGNoYW5nZSwKKyAgICAgICAgIHRoZXNlIHN0cmluZ3MgYXJlIGRlZmluZWQgYXMgY2xhc3MtbGV2ZWwgYXR0cmlidXRlcyB3aGljaCBjYW4gYmUKKyAgICAgICAgIG92ZXJyaWRkZW4gYXQgdGhlIGluc3RhbmNlIGxldmVsIHdoZW4gZGVzaXJlZC4gVGhlIG5hbWVzIG9mIHRoZQorICAgICAgICAgYXR0cmlidXRlcyBhcmUgYGBkZWZhdWx0X3RpbWVfZm9ybWF0YGAgKGZvciB0aGUgc3RycHRpbWUgZm9ybWF0IHN0cmluZykKKyAgICAgICAgIGFuZCBgYGRlZmF1bHRfbXNlY19mb3JtYXRgYCAoZm9yIGFwcGVuZGluZyB0aGUgbWlsbGlzZWNvbmQgdmFsdWUpLgorCiAgICAuLiBtZXRob2Q6OiBmb3JtYXRFeGNlcHRpb24oZXhjX2luZm8pCiAKICAgICAgIEZvcm1hdHMgdGhlIHNwZWNpZmllZCBleGNlcHRpb24gaW5mb3JtYXRpb24gKGEgc3RhbmRhcmQgZXhjZXB0aW9uIHR1cGxlIGFzCkBAIC05MTgsOCArOTM0LDEyIEBACiAKIC4uIGZ1bmN0aW9uOjogd2FybmluZyhtc2csICphcmdzLCAqKmt3YXJncykKIAotICAgTG9ncyBhIG1lc3NhZ2Ugd2l0aCBsZXZlbCA6Y29uc3Q6YFdBUk5JTkdgIG9uIHRoZSByb290IGxvZ2dlci4gVGhlIGFyZ3VtZW50cyBhcmUKLSAgIGludGVycHJldGVkIGFzIGZvciA6ZnVuYzpgZGVidWdgLgorICAgTG9ncyBhIG1lc3NhZ2Ugd2l0aCBsZXZlbCA6Y29uc3Q6YFdBUk5JTkdgIG9uIHRoZSByb290IGxvZ2dlci4gVGhlIGFyZ3VtZW50cworICAgYXJlIGludGVycHJldGVkIGFzIGZvciA6ZnVuYzpgZGVidWdgLgorCisgICAuLiBub3RlOjogVGhlcmUgaXMgYW4gb2Jzb2xldGUgZnVuY3Rpb24gYGB3YXJuYGAgd2hpY2ggaXMgZnVuY3Rpb25hbGx5CisgICAgICBpZGVudGljYWwgdG8gYGB3YXJuaW5nYGAuIEFzIGBgd2FybmBgIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSBkbyBub3QgdXNlCisgICAgICBpdCAtIHVzZSBgYHdhcm5pbmdgYCBpbnN0ZWFkLgogCiAKIC4uIGZ1bmN0aW9uOjogZXJyb3IobXNnLCAqYXJncywgKiprd2FyZ3MpCkBAIC0xMDQ1LDEyICsxMDY1LDI3IEBACiAgICB8IGBgc3RyZWFtYGAgICB8IFVzZSB0aGUgc3BlY2lmaWVkIHN0cmVhbSB0byBpbml0aWFsaXplIHRoZSAgfAogICAgfCAgICAgICAgICAgICAgfCBTdHJlYW1IYW5kbGVyLiBOb3RlIHRoYXQgdGhpcyBhcmd1bWVudCBpcyAgIHwKICAgIHwgICAgICAgICAgICAgIHwgaW5jb21wYXRpYmxlIHdpdGggJ2ZpbGVuYW1lJyAtIGlmIGJvdGggYXJlICB8Ci0gICB8ICAgICAgICAgICAgICB8IHByZXNlbnQsICdzdHJlYW0nIGlzIGlnbm9yZWQuICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgfCBwcmVzZW50LCBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZC4gICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgaGFuZGxlcnNgYCB8IElmIHNwZWNpZmllZCwgdGhpcyBzaG91bGQgYmUgYW4gaXRlcmFibGUgb2YgfAorICAgfCAgICAgICAgICAgICAgfCBhbHJlYWR5IGNyZWF0ZWQgaGFuZGxlcnMgdG8gYWRkIHRvIHRoZSByb290IHwKKyAgIHwgICAgICAgICAgICAgIHwgbG9nZ2VyLiBBbnkgaGFuZGxlcnMgd2hpY2ggZG9uJ3QgYWxyZWFkeSAgICB8CisgICB8ICAgICAgICAgICAgICB8IGhhdmUgYSBmb3JtYXR0ZXIgc2V0IHdpbGwgYmUgYXNzaWduZWQgdGhlICAgfAorICAgfCAgICAgICAgICAgICAgfCBkZWZhdWx0IGZvcm1hdHRlciBjcmVhdGVkIGluIHRoaXMgZnVuY3Rpb24uIHwKKyAgIHwgICAgICAgICAgICAgIHwgTm90ZSB0aGF0IHRoaXMgYXJndW1lbnQgaXMgaW5jb21wYXRpYmxlICAgICB8CisgICB8ICAgICAgICAgICAgICB8IHdpdGggJ2ZpbGVuYW1lJyBvciAnc3RyZWFtJyAtIGlmIGJvdGggYXJlICAgfAorICAgfCAgICAgICAgICAgICAgfCBwcmVzZW50LCBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZC4gICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBUaGUgYGBzdHlsZWBgIGFyZ3VtZW50IHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSBgYGhhbmRsZXJzYGAgYXJndW1lbnQgd2FzIGFkZGVkLiBBZGRpdGlvbmFsIGNoZWNrcyB3ZXJlIGFkZGVkIHRvCisgICAgICBjYXRjaCBzaXR1YXRpb25zIHdoZXJlIGluY29tcGF0aWJsZSBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCAoZS5nLgorICAgICAgYGBoYW5kbGVyc2BgIHRvZ2V0aGVyIHdpdGggYGBzdHJlYW1gYCBvciBgYGZpbGVuYW1lYGAsIG9yIGBgc3RyZWFtYGAKKyAgICAgIHRvZ2V0aGVyIHdpdGggYGBmaWxlbmFtZWBgKS4KKwogCiAuLiBmdW5jdGlvbjo6IHNodXRkb3duKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbHptYS5yc3QgYi9Eb2MvbGlicmFyeS9sem1hLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmQ1MDM5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvbHptYS5yc3QKQEAgLTAsMCArMSwzODIgQEAKKzptb2Q6YGx6bWFgIC0tLSBDb21wcmVzc2lvbiB1c2luZyB0aGUgTFpNQSBhbGdvcml0aG0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogbHptYQorICAgOnN5bm9wc2lzOiBBIFB5dGhvbiB3cmFwcGVyIGZvciB0aGUgbGlibHptYSBjb21wcmVzc2lvbiBsaWJyYXJ5LgorLi4gbW9kdWxlYXV0aG9yOjogTmFkZWVtIFZhd2RhIDxuYWRlZW0udmF3ZGFAZ21haWwuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IE5hZGVlbSBWYXdkYSA8bmFkZWVtLnZhd2RhQGdtYWlsLmNvbT4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgY2xhc3NlcyBhbmQgY29udmVuaWVuY2UgZnVuY3Rpb25zIGZvciBjb21wcmVzc2luZyBhbmQKK2RlY29tcHJlc3NpbmcgZGF0YSB1c2luZyB0aGUgTFpNQSBjb21wcmVzc2lvbiBhbGdvcml0aG0uIEFsc28gaW5jbHVkZWQgaXMgYSBmaWxlCitpbnRlcmZhY2Ugc3VwcG9ydGluZyB0aGUgYGAueHpgYCBhbmQgbGVnYWN5IGBgLmx6bWFgYCBmaWxlIGZvcm1hdHMgdXNlZCBieSB0aGUKKzpwcm9ncmFtOmB4emAgdXRpbGl0eSwgYXMgd2VsbCBhcyByYXcgY29tcHJlc3NlZCBzdHJlYW1zLgorCitUaGUgaW50ZXJmYWNlIHByb3ZpZGVkIGJ5IHRoaXMgbW9kdWxlIGlzIHZlcnkgc2ltaWxhciB0byB0aGF0IG9mIHRoZSA6bW9kOmBiejJgCittb2R1bGUuIEhvd2V2ZXIsIG5vdGUgdGhhdCA6Y2xhc3M6YExaTUFGaWxlYCBpcyAqbm90KiB0aHJlYWQtc2FmZSwgdW5saWtlCis6Y2xhc3M6YGJ6Mi5CWjJGaWxlYCwgc28gaWYgeW91IG5lZWQgdG8gdXNlIGEgc2luZ2xlIDpjbGFzczpgTFpNQUZpbGVgIGluc3RhbmNlCitmcm9tIG11bHRpcGxlIHRocmVhZHMsIGl0IGlzIG5lY2Vzc2FyeSB0byBwcm90ZWN0IGl0IHdpdGggYSBsb2NrLgorCisKKy4uIGV4Y2VwdGlvbjo6IExaTUFFcnJvcgorCisgICBUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIGNvbXByZXNzaW9uIG9yCisgICBkZWNvbXByZXNzaW9uLCBvciB3aGlsZSBpbml0aWFsaXppbmcgdGhlIGNvbXByZXNzb3IvZGVjb21wcmVzc29yIHN0YXRlLgorCisKK1JlYWRpbmcgYW5kIHdyaXRpbmcgY29tcHJlc3NlZCBmaWxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogb3BlbihmaWxlbmFtZSwgbW9kZT0icmIiLCBcKiwgZm9ybWF0PU5vbmUsIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKQorCisgICBPcGVuIGFuIExaTUEtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUsIHJldHVybmluZyBhIDp0ZXJtOmBmaWxlCisgICBvYmplY3RgLgorCisgICBUaGUgKmZpbGVuYW1lKiBhcmd1bWVudCBjYW4gYmUgZWl0aGVyIGFuIGFjdHVhbCBmaWxlIG5hbWUgKGdpdmVuIGFzIGEKKyAgIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLCBpbiB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzCisgICBvcGVuZWQsIG9yIGl0IGNhbiBiZSBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisKKyAgIFRoZSAqbW9kZSogYXJndW1lbnQgY2FuIGJlIGFueSBvZiBgYCJyImBgLCBgYCJyYiJgYCwgYGAidyJgYCwgYGAid2IiYGAsCisgICBgYCJhImBgIG9yIGBgImFiImBgIGZvciBiaW5hcnkgbW9kZSwgb3IgYGAicnQiYGAsIGBgInd0ImBgLCBvciBgYCJhdCJgYCBmb3IKKyAgIHRleHQgbW9kZS4gVGhlIGRlZmF1bHQgaXMgYGAicmIiYGAuCisKKyAgIFdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHJlYWRpbmcsIHRoZSAqZm9ybWF0KiBhbmQgKmZpbHRlcnMqIGFyZ3VtZW50cyBoYXZlCisgICB0aGUgc2FtZSBtZWFuaW5ncyBhcyBmb3IgOmNsYXNzOmBMWk1BRGVjb21wcmVzc29yYC4gSW4gdGhpcyBjYXNlLCB0aGUgKmNoZWNrKgorICAgYW5kICpwcmVzZXQqIGFyZ3VtZW50cyBzaG91bGQgbm90IGJlIHVzZWQuCisKKyAgIFdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHdyaXRpbmcsIHRoZSAqZm9ybWF0KiwgKmNoZWNrKiwgKnByZXNldCogYW5kCisgICAqZmlsdGVycyogYXJndW1lbnRzIGhhdmUgdGhlIHNhbWUgbWVhbmluZ3MgYXMgZm9yIDpjbGFzczpgTFpNQUNvbXByZXNzb3JgLgorCisgICBGb3IgYmluYXJ5IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byB0aGUgOmNsYXNzOmBMWk1BRmlsZWAKKyAgIGNvbnN0cnVjdG9yOiBgYExaTUFGaWxlKGZpbGVuYW1lLCBtb2RlLCAuLi4pYGAuIEluIHRoaXMgY2FzZSwgdGhlICplbmNvZGluZyosCisgICAqZXJyb3JzKiBhbmQgKm5ld2xpbmUqIGFyZ3VtZW50cyBtdXN0IG5vdCBiZSBwcm92aWRlZC4KKworICAgRm9yIHRleHQgbW9kZSwgYSA6Y2xhc3M6YExaTUFGaWxlYCBvYmplY3QgaXMgY3JlYXRlZCwgYW5kIHdyYXBwZWQgaW4gYW4KKyAgIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGVuY29kaW5nLCBlcnJvcgorICAgaGFuZGxpbmcgYmVoYXZpb3IsIGFuZCBsaW5lIGVuZGluZyhzKS4KKworCisuLiBjbGFzczo6IExaTUFGaWxlKGZpbGVuYW1lPU5vbmUsIG1vZGU9InIiLCBcKiwgZm9ybWF0PU5vbmUsIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKQorCisgICBPcGVuIGFuIExaTUEtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBtb2RlLgorCisgICBBbiA6Y2xhc3M6YExaTUFGaWxlYCBjYW4gd3JhcCBhbiBhbHJlYWR5LW9wZW4gOnRlcm06YGZpbGUgb2JqZWN0YCwgb3Igb3BlcmF0ZQorICAgZGlyZWN0bHkgb24gYSBuYW1lZCBmaWxlLiBUaGUgKmZpbGVuYW1lKiBhcmd1bWVudCBzcGVjaWZpZXMgZWl0aGVyIHRoZSBmaWxlCisgICBvYmplY3QgdG8gd3JhcCwgb3IgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gb3BlbiAoYXMgYSA6Y2xhc3M6YHN0cmAgb3IKKyAgIDpjbGFzczpgYnl0ZXNgIG9iamVjdCkuIFdoZW4gd3JhcHBpbmcgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QsIHRoZSB3cmFwcGVkCisgICBmaWxlIHdpbGwgbm90IGJlIGNsb3NlZCB3aGVuIHRoZSA6Y2xhc3M6YExaTUFGaWxlYCBpcyBjbG9zZWQuCisKKyAgIFRoZSAqbW9kZSogYXJndW1lbnQgY2FuIGJlIGVpdGhlciBgYCJyImBgIGZvciByZWFkaW5nIChkZWZhdWx0KSwgYGAidyJgYCBmb3IKKyAgIG92ZXJ3cml0aW5nLCBvciBgYCJhImBgIGZvciBhcHBlbmRpbmcuIFRoZXNlIGNhbiBlcXVpdmFsZW50bHkgYmUgZ2l2ZW4gYXMKKyAgIGBgInJiImBgLCBgYCJ3YiJgYCwgYW5kIGBgImFiImBgIHJlc3BlY3RpdmVseS4KKworICAgSWYgKmZpbGVuYW1lKiBpcyBhIGZpbGUgb2JqZWN0IChyYXRoZXIgdGhhbiBhbiBhY3R1YWwgZmlsZSBuYW1lKSwgYSBtb2RlIG9mCisgICBgYCJ3ImBgIGRvZXMgbm90IHRydW5jYXRlIHRoZSBmaWxlLCBhbmQgaXMgaW5zdGVhZCBlcXVpdmFsZW50IHRvIGBgImEiYGAuCisKKyAgIFdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHJlYWRpbmcsIHRoZSBpbnB1dCBmaWxlIG1heSBiZSB0aGUgY29uY2F0ZW5hdGlvbiBvZgorICAgbXVsdGlwbGUgc2VwYXJhdGUgY29tcHJlc3NlZCBzdHJlYW1zLiBUaGVzZSBhcmUgdHJhbnNwYXJlbnRseSBkZWNvZGVkIGFzIGEKKyAgIHNpbmdsZSBsb2dpY2FsIHN0cmVhbS4KKworICAgV2hlbiBvcGVuaW5nIGEgZmlsZSBmb3IgcmVhZGluZywgdGhlICpmb3JtYXQqIGFuZCAqZmlsdGVycyogYXJndW1lbnRzIGhhdmUKKyAgIHRoZSBzYW1lIG1lYW5pbmdzIGFzIGZvciA6Y2xhc3M6YExaTUFEZWNvbXByZXNzb3JgLiBJbiB0aGlzIGNhc2UsIHRoZSAqY2hlY2sqCisgICBhbmQgKnByZXNldCogYXJndW1lbnRzIHNob3VsZCBub3QgYmUgdXNlZC4KKworICAgV2hlbiBvcGVuaW5nIGEgZmlsZSBmb3Igd3JpdGluZywgdGhlICpmb3JtYXQqLCAqY2hlY2sqLCAqcHJlc2V0KiBhbmQKKyAgICpmaWx0ZXJzKiBhcmd1bWVudHMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5ncyBhcyBmb3IgOmNsYXNzOmBMWk1BQ29tcHJlc3NvcmAuCisKKyAgIDpjbGFzczpgTFpNQUZpbGVgIHN1cHBvcnRzIGFsbCB0aGUgbWVtYmVycyBzcGVjaWZpZWQgYnkKKyAgIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgLCBleGNlcHQgZm9yIDptZXRoOmBkZXRhY2hgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgLgorICAgSXRlcmF0aW9uIGFuZCB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBhcmUgc3VwcG9ydGVkLgorCisgICBUaGUgZm9sbG93aW5nIG1ldGhvZCBpcyBhbHNvIHByb3ZpZGVkOgorCisgICAuLiBtZXRob2Q6OiBwZWVrKHNpemU9LTEpCisKKyAgICAgIFJldHVybiBidWZmZXJlZCBkYXRhIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBmaWxlIHBvc2l0aW9uLiBBdCBsZWFzdCBvbmUKKyAgICAgIGJ5dGUgb2YgZGF0YSB3aWxsIGJlIHJldHVybmVkLCB1bmxlc3MgRU9GIGhhcyBiZWVuIHJlYWNoZWQuIFRoZSBleGFjdAorICAgICAgbnVtYmVyIG9mIGJ5dGVzIHJldHVybmVkIGlzIHVuc3BlY2lmaWVkICh0aGUgKnNpemUqIGFyZ3VtZW50IGlzIGlnbm9yZWQpLgorCisKK0NvbXByZXNzaW5nIGFuZCBkZWNvbXByZXNzaW5nIGRhdGEgaW4gbWVtb3J5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBjbGFzczo6IExaTUFDb21wcmVzc29yKGZvcm1hdD1GT1JNQVRfWFosIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKQorCisgICBDcmVhdGUgYSBjb21wcmVzc29yIG9iamVjdCwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gY29tcHJlc3MgZGF0YSBpbmNyZW1lbnRhbGx5LgorCisgICBGb3IgYSBtb3JlIGNvbnZlbmllbnQgd2F5IG9mIGNvbXByZXNzaW5nIGEgc2luZ2xlIGNodW5rIG9mIGRhdGEsIHNlZQorICAgOmZ1bmM6YGNvbXByZXNzYC4KKworICAgVGhlICpmb3JtYXQqIGFyZ3VtZW50IHNwZWNpZmllcyB3aGF0IGNvbnRhaW5lciBmb3JtYXQgc2hvdWxkIGJlIHVzZWQuCisgICBQb3NzaWJsZSB2YWx1ZXMgYXJlOgorCisgICAqIDpjb25zdDpgRk9STUFUX1haYDogVGhlIGBgLnh6YGAgY29udGFpbmVyIGZvcm1hdC4KKyAgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgZm9ybWF0LgorCisgICAqIDpjb25zdDpgRk9STUFUX0FMT05FYDogVGhlIGxlZ2FjeSBgYC5sem1hYGAgY29udGFpbmVyIGZvcm1hdC4KKyAgICAgIFRoaXMgZm9ybWF0IGlzIG1vcmUgbGltaXRlZCB0aGFuIGBgLnh6YGAgLS0gaXQgZG9lcyBub3Qgc3VwcG9ydCBpbnRlZ3JpdHkKKyAgICAgIGNoZWNrcyBvciBtdWx0aXBsZSBmaWx0ZXJzLgorCisgICAqIDpjb25zdDpgRk9STUFUX1JBV2A6IEEgcmF3IGRhdGEgc3RyZWFtLCBub3QgdXNpbmcgYW55IGNvbnRhaW5lciBmb3JtYXQuCisgICAgICBUaGlzIGZvcm1hdCBzcGVjaWZpZXIgZG9lcyBub3Qgc3VwcG9ydCBpbnRlZ3JpdHkgY2hlY2tzLCBhbmQgcmVxdWlyZXMgdGhhdAorICAgICAgeW91IGFsd2F5cyBzcGVjaWZ5IGEgY3VzdG9tIGZpbHRlciBjaGFpbiAoZm9yIGJvdGggY29tcHJlc3Npb24gYW5kCisgICAgICBkZWNvbXByZXNzaW9uKS4gQWRkaXRpb25hbGx5LCBkYXRhIGNvbXByZXNzZWQgaW4gdGhpcyBtYW5uZXIgY2Fubm90IGJlCisgICAgICBkZWNvbXByZXNzZWQgdXNpbmcgOmNvbnN0OmBGT1JNQVRfQVVUT2AgKHNlZSA6Y2xhc3M6YExaTUFEZWNvbXByZXNzb3JgKS4KKworICAgVGhlICpjaGVjayogYXJndW1lbnQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIGludGVncml0eSBjaGVjayB0byBpbmNsdWRlIGluIHRoZQorICAgY29tcHJlc3NlZCBkYXRhLiBUaGlzIGNoZWNrIGlzIHVzZWQgd2hlbiBkZWNvbXByZXNzaW5nLCB0byBlbnN1cmUgdGhhdCB0aGUKKyAgIGRhdGEgaGFzIG5vdCBiZWVuIGNvcnJ1cHRlZC4gUG9zc2libGUgdmFsdWVzIGFyZToKKworICAgKiA6Y29uc3Q6YENIRUNLX05PTkVgOiBObyBpbnRlZ3JpdHkgY2hlY2suCisgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgKGFuZCB0aGUgb25seSBhY2NlcHRhYmxlIHZhbHVlKSBmb3IKKyAgICAgOmNvbnN0OmBGT1JNQVRfQUxPTkVgIGFuZCA6Y29uc3Q6YEZPUk1BVF9SQVdgLgorCisgICAqIDpjb25zdDpgQ0hFQ0tfQ1JDMzJgOiAzMi1iaXQgQ3ljbGljIFJlZHVuZGFuY3kgQ2hlY2suCisKKyAgICogOmNvbnN0OmBDSEVDS19DUkM2NGA6IDY0LWJpdCBDeWNsaWMgUmVkdW5kYW5jeSBDaGVjay4KKyAgICAgVGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgOmNvbnN0OmBGT1JNQVRfWFpgLgorCisgICAqIDpjb25zdDpgQ0hFQ0tfU0hBMjU2YDogMjU2LWJpdCBTZWN1cmUgSGFzaCBBbGdvcml0aG0uCisKKyAgIElmIHRoZSBzcGVjaWZpZWQgY2hlY2sgaXMgbm90IHN1cHBvcnRlZCwgYW4gOmNsYXNzOmBMWk1BRXJyb3JgIGlzIHJhaXNlZC4KKworICAgVGhlIGNvbXByZXNzaW9uIHNldHRpbmdzIGNhbiBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgcHJlc2V0IGNvbXByZXNzaW9uCisgICBsZXZlbCAod2l0aCB0aGUgKnByZXNldCogYXJndW1lbnQpLCBvciBpbiBkZXRhaWwgYXMgYSBjdXN0b20gZmlsdGVyIGNoYWluCisgICAod2l0aCB0aGUgKmZpbHRlcnMqIGFyZ3VtZW50KS4KKworICAgVGhlICpwcmVzZXQqIGFyZ3VtZW50IChpZiBwcm92aWRlZCkgc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiBgYDBgYCBhbmQKKyAgIGBgOWBgIChpbmNsdXNpdmUpLCBvcHRpb25hbGx5IE9SLWVkIHdpdGggdGhlIGNvbnN0YW50CisgICA6Y29uc3Q6YFBSRVNFVF9FWFRSRU1FYC4gSWYgbmVpdGhlciAqcHJlc2V0KiBub3IgKmZpbHRlcnMqIGFyZSBnaXZlbiwgdGhlCisgICBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIHVzZSA6Y29uc3Q6YFBSRVNFVF9ERUZBVUxUYCAocHJlc2V0IGxldmVsIGBgNmBgKS4KKyAgIEhpZ2hlciBwcmVzZXRzIHByb2R1Y2Ugc21hbGxlciBvdXRwdXQsIGJ1dCBtYWtlIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzCisgICBzbG93ZXIuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBJbiBhZGRpdGlvbiB0byBiZWluZyBtb3JlIENQVS1pbnRlbnNpdmUsIGNvbXByZXNzaW9uIHdpdGggaGlnaGVyIHByZXNldHMKKyAgICAgIGFsc28gcmVxdWlyZXMgbXVjaCBtb3JlIG1lbW9yeSAoYW5kIHByb2R1Y2VzIG91dHB1dCB0aGF0IG5lZWRzIG1vcmUgbWVtb3J5CisgICAgICB0byBkZWNvbXByZXNzKS4gV2l0aCBwcmVzZXQgYGA5YGAgZm9yIGV4YW1wbGUsIHRoZSBvdmVyaGVhZCBmb3IgYW4KKyAgICAgIDpjbGFzczpgTFpNQUNvbXByZXNzb3JgIG9iamVjdCBjYW4gYmUgYXMgaGlnaCBhcyA4MDAgTWlCLiBGb3IgdGhpcyByZWFzb24sCisgICAgICBpdCBpcyBnZW5lcmFsbHkgYmVzdCB0byBzdGljayB3aXRoIHRoZSBkZWZhdWx0IHByZXNldC4KKworICAgVGhlICpmaWx0ZXJzKiBhcmd1bWVudCAoaWYgcHJvdmlkZWQpIHNob3VsZCBiZSBhIGZpbHRlciBjaGFpbiBzcGVjaWZpZXIuCisgICBTZWUgOnJlZjpgZmlsdGVyLWNoYWluLXNwZWNzYCBmb3IgZGV0YWlscy4KKworICAgLi4gbWV0aG9kOjogY29tcHJlc3MoZGF0YSkKKworICAgICAgQ29tcHJlc3MgKmRhdGEqIChhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCksIHJldHVybmluZyBhIDpjbGFzczpgYnl0ZXNgCisgICAgICBvYmplY3QgY29udGFpbmluZyBjb21wcmVzc2VkIGRhdGEgZm9yIGF0IGxlYXN0IHBhcnQgb2YgdGhlIGlucHV0LiBTb21lIG9mCisgICAgICAqZGF0YSogbWF5IGJlIGJ1ZmZlcmVkIGludGVybmFsbHksIGZvciB1c2UgaW4gbGF0ZXIgY2FsbHMgdG8KKyAgICAgIDptZXRoOmBjb21wcmVzc2AgYW5kIDptZXRoOmBmbHVzaGAuIFRoZSByZXR1cm5lZCBkYXRhIHNob3VsZCBiZQorICAgICAgY29uY2F0ZW5hdGVkIHdpdGggdGhlIG91dHB1dCBvZiBhbnkgcHJldmlvdXMgY2FsbHMgdG8gOm1ldGg6YGNvbXByZXNzYC4KKworICAgLi4gbWV0aG9kOjogZmx1c2goKQorCisgICAgICBGaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MsIHJldHVybmluZyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdAorICAgICAgY29udGFpbmluZyBhbnkgZGF0YSBzdG9yZWQgaW4gdGhlIGNvbXByZXNzb3IncyBpbnRlcm5hbCBidWZmZXJzLgorCisgICAgICBUaGUgY29tcHJlc3NvciBjYW5ub3QgYmUgdXNlZCBhZnRlciB0aGlzIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQuCisKKworLi4gY2xhc3M6OiBMWk1BRGVjb21wcmVzc29yKGZvcm1hdD1GT1JNQVRfQVVUTywgbWVtbGltaXQ9Tm9uZSwgZmlsdGVycz1Ob25lKQorCisgICBDcmVhdGUgYSBkZWNvbXByZXNzb3Igb2JqZWN0LCB3aGljaCBjYW4gYmUgdXNlZCB0byBkZWNvbXByZXNzIGRhdGEKKyAgIGluY3JlbWVudGFsbHkuCisKKyAgIEZvciBhIG1vcmUgY29udmVuaWVudCB3YXkgb2YgZGVjb21wcmVzc2luZyBhbiBlbnRpcmUgY29tcHJlc3NlZCBzdHJlYW0gYXQKKyAgIG9uY2UsIHNlZSA6ZnVuYzpgZGVjb21wcmVzc2AuCisKKyAgIFRoZSAqZm9ybWF0KiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGNvbnRhaW5lciBmb3JtYXQgdGhhdCBzaG91bGQgYmUgdXNlZC4gVGhlCisgICBkZWZhdWx0IGlzIDpjb25zdDpgRk9STUFUX0FVVE9gLCB3aGljaCBjYW4gZGVjb21wcmVzcyBib3RoIGBgLnh6YGAgYW5kCisgICBgYC5sem1hYGAgZmlsZXMuIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgOmNvbnN0OmBGT1JNQVRfWFpgLAorICAgOmNvbnN0OmBGT1JNQVRfQUxPTkVgLCBhbmQgOmNvbnN0OmBGT1JNQVRfUkFXYC4KKworICAgVGhlICptZW1saW1pdCogYXJndW1lbnQgc3BlY2lmaWVzIGEgbGltaXQgKGluIGJ5dGVzKSBvbiB0aGUgYW1vdW50IG9mIG1lbW9yeQorICAgdGhhdCB0aGUgZGVjb21wcmVzc29yIGNhbiB1c2UuIFdoZW4gdGhpcyBhcmd1bWVudCBpcyB1c2VkLCBkZWNvbXByZXNzaW9uIHdpbGwKKyAgIGZhaWwgd2l0aCBhbiA6Y2xhc3M6YExaTUFFcnJvcmAgaWYgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGRlY29tcHJlc3MgdGhlIGlucHV0CisgICB3aXRoaW4gdGhlIGdpdmVuIG1lbW9yeSBsaW1pdC4KKworICAgVGhlICpmaWx0ZXJzKiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGZpbHRlciBjaGFpbiB0aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZQorICAgdGhlIHN0cmVhbSBiZWluZyBkZWNvbXByZXNzZWQuIFRoaXMgYXJndW1lbnQgaXMgcmVxdWlyZWQgaWYgKmZvcm1hdCogaXMKKyAgIDpjb25zdDpgRk9STUFUX1JBV2AsIGJ1dCBzaG91bGQgbm90IGJlIHVzZWQgZm9yIG90aGVyIGZvcm1hdHMuCisgICBTZWUgOnJlZjpgZmlsdGVyLWNoYWluLXNwZWNzYCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBmaWx0ZXIgY2hhaW5zLgorCisgICAuLiBub3RlOjoKKyAgICAgIFRoaXMgY2xhc3MgZG9lcyBub3QgdHJhbnNwYXJlbnRseSBoYW5kbGUgaW5wdXRzIGNvbnRhaW5pbmcgbXVsdGlwbGUKKyAgICAgIGNvbXByZXNzZWQgc3RyZWFtcywgdW5saWtlIDpmdW5jOmBkZWNvbXByZXNzYCBhbmQgOmNsYXNzOmBMWk1BRmlsZWAuIFRvCisgICAgICBkZWNvbXByZXNzIGEgbXVsdGktc3RyZWFtIGlucHV0IHdpdGggOmNsYXNzOmBMWk1BRGVjb21wcmVzc29yYCwgeW91IG11c3QKKyAgICAgIGNyZWF0ZSBhIG5ldyBkZWNvbXByZXNzb3IgZm9yIGVhY2ggc3RyZWFtLgorCisgICAuLiBtZXRob2Q6OiBkZWNvbXByZXNzKGRhdGEpCisKKyAgICAgIERlY29tcHJlc3MgKmRhdGEqIChhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCksIHJldHVybmluZyBhIDpjbGFzczpgYnl0ZXNgCisgICAgICBvYmplY3QgY29udGFpbmluZyB0aGUgZGVjb21wcmVzc2VkIGRhdGEgZm9yIGF0IGxlYXN0IHBhcnQgb2YgdGhlIGlucHV0LgorICAgICAgU29tZSBvZiAqZGF0YSogbWF5IGJlIGJ1ZmZlcmVkIGludGVybmFsbHksIGZvciB1c2UgaW4gbGF0ZXIgY2FsbHMgdG8KKyAgICAgIDptZXRoOmBkZWNvbXByZXNzYC4gVGhlIHJldHVybmVkIGRhdGEgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB3aXRoIHRoZQorICAgICAgb3V0cHV0IG9mIGFueSBwcmV2aW91cyBjYWxscyB0byA6bWV0aDpgZGVjb21wcmVzc2AuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNoZWNrCisKKyAgICAgIFRoZSBJRCBvZiB0aGUgaW50ZWdyaXR5IGNoZWNrIHVzZWQgYnkgdGhlIGlucHV0IHN0cmVhbS4gVGhpcyBtYXkgYmUKKyAgICAgIDpjb25zdDpgQ0hFQ0tfVU5LTk9XTmAgdW50aWwgZW5vdWdoIG9mIHRoZSBpbnB1dCBoYXMgYmVlbiBkZWNvZGVkIHRvCisgICAgICBkZXRlcm1pbmUgd2hhdCBpbnRlZ3JpdHkgY2hlY2sgaXQgdXNlcy4KKworICAgLi4gYXR0cmlidXRlOjogZW9mCisKKyAgICAgIFRydWUgaWYgdGhlIGVuZC1vZi1zdHJlYW0gbWFya2VyIGhhcyBiZWVuIHJlYWNoZWQuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHVudXNlZF9kYXRhCisKKyAgICAgIERhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgY29tcHJlc3NlZCBzdHJlYW0uCisKKyAgICAgIEJlZm9yZSB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gaXMgcmVhY2hlZCwgdGhpcyB3aWxsIGJlIGBgYiIiYGAuCisKKworLi4gZnVuY3Rpb246OiBjb21wcmVzcyhkYXRhLCBmb3JtYXQ9Rk9STUFUX1haLCBjaGVjaz0tMSwgcHJlc2V0PU5vbmUsIGZpbHRlcnM9Tm9uZSkKKworICAgQ29tcHJlc3MgKmRhdGEqIChhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCksIHJldHVybmluZyB0aGUgY29tcHJlc3NlZCBkYXRhIGFzIGEKKyAgIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4KKworICAgU2VlIDpjbGFzczpgTFpNQUNvbXByZXNzb3JgIGFib3ZlIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSAqZm9ybWF0KiwgKmNoZWNrKiwKKyAgICpwcmVzZXQqIGFuZCAqZmlsdGVycyogYXJndW1lbnRzLgorCisKKy4uIGZ1bmN0aW9uOjogZGVjb21wcmVzcyhkYXRhLCBmb3JtYXQ9Rk9STUFUX0FVVE8sIG1lbWxpbWl0PU5vbmUsIGZpbHRlcnM9Tm9uZSkKKworICAgRGVjb21wcmVzcyAqZGF0YSogKGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgcmV0dXJuaW5nIHRoZSB1bmNvbXByZXNzZWQgZGF0YQorICAgYXMgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QuCisKKyAgIElmICpkYXRhKiBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiBtdWx0aXBsZSBkaXN0aW5jdCBjb21wcmVzc2VkIHN0cmVhbXMsCisgICBkZWNvbXByZXNzIGFsbCBvZiB0aGVzZSBzdHJlYW1zLCBhbmQgcmV0dXJuIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSByZXN1bHRzLgorCisgICBTZWUgOmNsYXNzOmBMWk1BRGVjb21wcmVzc29yYCBhYm92ZSBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgKmZvcm1hdCosCisgICAqbWVtbGltaXQqIGFuZCAqZmlsdGVycyogYXJndW1lbnRzLgorCisKK01pc2NlbGxhbmVvdXMKKy0tLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBpc19jaGVja19zdXBwb3J0ZWQoY2hlY2spCisKKyAgIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gaW50ZWdyaXR5IGNoZWNrIGlzIHN1cHBvcnRlZCBvbiB0aGlzIHN5c3RlbS4KKworICAgOmNvbnN0OmBDSEVDS19OT05FYCBhbmQgOmNvbnN0OmBDSEVDS19DUkMzMmAgYXJlIGFsd2F5cyBzdXBwb3J0ZWQuCisgICA6Y29uc3Q6YENIRUNLX0NSQzY0YCBhbmQgOmNvbnN0OmBDSEVDS19TSEEyNTZgIG1heSBiZSB1bmF2YWlsYWJsZSBpZiB5b3UgYXJlCisgICB1c2luZyBhIHZlcnNpb24gb2YgOnByb2dyYW06YGxpYmx6bWFgIHRoYXQgd2FzIGNvbXBpbGVkIHdpdGggYSBsaW1pdGVkCisgICBmZWF0dXJlIHNldC4KKworCisuLiBfZmlsdGVyLWNoYWluLXNwZWNzOgorCitTcGVjaWZ5aW5nIGN1c3RvbSBmaWx0ZXIgY2hhaW5zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgZmlsdGVyIGNoYWluIHNwZWNpZmllciBpcyBhIHNlcXVlbmNlIG9mIGRpY3Rpb25hcmllcywgd2hlcmUgZWFjaCBkaWN0aW9uYXJ5Citjb250YWlucyB0aGUgSUQgYW5kIG9wdGlvbnMgZm9yIGEgc2luZ2xlIGZpbHRlci4gRWFjaCBkaWN0aW9uYXJ5IG11c3QgY29udGFpbgordGhlIGtleSBgYCJpZCJgYCwgYW5kIG1heSBjb250YWluIGFkZGl0aW9uYWwga2V5cyB0byBzcGVjaWZ5IGZpbHRlci1kZXBlbmRlbnQKK29wdGlvbnMuIFZhbGlkIGZpbHRlciBJRHMgYXJlIGFzIGZvbGxvd3M6CisKKyogQ29tcHJlc3Npb24gZmlsdGVyczoKKyAgICogOmNvbnN0OmBGSUxURVJfTFpNQTFgIChmb3IgdXNlIHdpdGggOmNvbnN0OmBGT1JNQVRfQUxPTkVgKQorICAgKiA6Y29uc3Q6YEZJTFRFUl9MWk1BMmAgKGZvciB1c2Ugd2l0aCA6Y29uc3Q6YEZPUk1BVF9YWmAgYW5kIDpjb25zdDpgRk9STUFUX1JBV2ApCisKKyogRGVsdGEgZmlsdGVyOgorICAgKiA6Y29uc3Q6YEZJTFRFUl9ERUxUQWAKKworKiBCcmFuY2gtQ2FsbC1KdW1wIChCQ0opIGZpbHRlcnM6CisgICAqIDpjb25zdDpgRklMVEVSX1g4NmAKKyAgICogOmNvbnN0OmBGSUxURVJfSUE2NGAKKyAgICogOmNvbnN0OmBGSUxURVJfQVJNYAorICAgKiA6Y29uc3Q6YEZJTFRFUl9BUk1USFVNQmAKKyAgICogOmNvbnN0OmBGSUxURVJfUE9XRVJQQ2AKKyAgICogOmNvbnN0OmBGSUxURVJfU1BBUkNgCisKK0EgZmlsdGVyIGNoYWluIGNhbiBjb25zaXN0IG9mIHVwIHRvIDQgZmlsdGVycywgYW5kIGNhbm5vdCBiZSBlbXB0eS4gVGhlIGxhc3QKK2ZpbHRlciBpbiB0aGUgY2hhaW4gbXVzdCBiZSBhIGNvbXByZXNzaW9uIGZpbHRlciwgYW5kIGFueSBvdGhlciBmaWx0ZXJzIG11c3QgYmUKK2RlbHRhIG9yIEJDSiBmaWx0ZXJzLgorCitDb21wcmVzc2lvbiBmaWx0ZXJzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBvcHRpb25zIChzcGVjaWZpZWQgYXMgYWRkaXRpb25hbAorZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeSByZXByZXNlbnRpbmcgdGhlIGZpbHRlcik6CisKKyAgICogYGBwcmVzZXRgYDogQSBjb21wcmVzc2lvbiBwcmVzZXQgdG8gdXNlIGFzIGEgc291cmNlIG9mIGRlZmF1bHQgdmFsdWVzIGZvcgorICAgICBvcHRpb25zIHRoYXQgYXJlIG5vdCBzcGVjaWZpZWQgZXhwbGljaXRseS4KKyAgICogYGBkaWN0X3NpemVgYDogRGljdGlvbmFyeSBzaXplIGluIGJ5dGVzLiBUaGlzIHNob3VsZCBiZSBiZXR3ZWVuIDQgS2lCIGFuZAorICAgICAxLjUgR2lCIChpbmNsdXNpdmUpLgorICAgKiBgYGxjYGA6IE51bWJlciBvZiBsaXRlcmFsIGNvbnRleHQgYml0cy4KKyAgICogYGBscGBgOiBOdW1iZXIgb2YgbGl0ZXJhbCBwb3NpdGlvbiBiaXRzLiBUaGUgc3VtIGBgbGMgKyBscGBgIG11c3QgYmUgYXQKKyAgICAgbW9zdCA0LgorICAgKiBgYHBiYGA6IE51bWJlciBvZiBwb3NpdGlvbiBiaXRzOyBtdXN0IGJlIGF0IG1vc3QgNC4KKyAgICogYGBtb2RlYGA6IDpjb25zdDpgTU9ERV9GQVNUYCBvciA6Y29uc3Q6YE1PREVfTk9STUFMYC4KKyAgICogYGBuaWNlX2xlbmBgOiBXaGF0IHNob3VsZCBiZSBjb25zaWRlcmVkIGEgIm5pY2UgbGVuZ3RoIiBmb3IgYSBtYXRjaC4KKyAgICAgVGhpcyBzaG91bGQgYmUgMjczIG9yIGxlc3MuCisgICAqIGBgbWZgYDogV2hhdCBtYXRjaCBmaW5kZXIgdG8gdXNlIC0tIDpjb25zdDpgTUZfSEMzYCwgOmNvbnN0OmBNRl9IQzRgLAorICAgICA6Y29uc3Q6YE1GX0JUMmAsIDpjb25zdDpgTUZfQlQzYCwgb3IgOmNvbnN0OmBNRl9CVDRgLgorICAgKiBgYGRlcHRoYGA6IE1heGltdW0gc2VhcmNoIGRlcHRoIHVzZWQgYnkgbWF0Y2ggZmluZGVyLiAwIChkZWZhdWx0KSBtZWFucyB0bworICAgICBzZWxlY3QgYXV0b21hdGljYWxseSBiYXNlZCBvbiBvdGhlciBmaWx0ZXIgb3B0aW9ucy4KKworVGhlIGRlbHRhIGZpbHRlciBzdG9yZXMgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYnl0ZXMsIHByb2R1Y2luZyBtb3JlIHJlcGV0aXRpdmUKK2lucHV0IGZvciB0aGUgY29tcHJlc3NvciBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMuIEl0IG9ubHkgc3VwcG9ydHMgYSBzaW5nbGUKK1RoZSBkZWx0YSBmaWx0ZXIgc3VwcG9ydHMgb25seSBvbmUgb3B0aW9uLCBgYGRpc3RgYC4gVGhpcyBpbmRpY2F0ZXMgdGhlIGRpc3RhbmNlCitiZXR3ZWVuIGJ5dGVzIHRvIGJlIHN1YnRyYWN0ZWQuIFRoZSBkZWZhdWx0IGlzIDEsIGkuZS4gdGFrZSB0aGUgZGlmZmVyZW5jZXMKK2JldHdlZW4gYWRqYWNlbnQgYnl0ZXMuCisKK1RoZSBCQ0ogZmlsdGVycyBhcmUgaW50ZW5kZWQgdG8gYmUgYXBwbGllZCB0byBtYWNoaW5lIGNvZGUuIFRoZXkgY29udmVydAorcmVsYXRpdmUgYnJhbmNoZXMsIGNhbGxzIGFuZCBqdW1wcyBpbiB0aGUgY29kZSB0byB1c2UgYWJzb2x1dGUgYWRkcmVzc2luZywgd2l0aAordGhlIGFpbSBvZiBpbmNyZWFzaW5nIHRoZSByZWR1bmRhbmN5IHRoYXQgY2FuIGJlIGV4cGxvaXRlZCBieSB0aGUgY29tcHJlc3Nvci4KK1RoZXNlIGZpbHRlcnMgc3VwcG9ydCBvbmUgb3B0aW9uLCBgYHN0YXJ0X29mZnNldGBgLiBUaGlzIHNwZWNpZmllcyB0aGUgYWRkcmVzcwordGhhdCBzaG91bGQgYmUgbWFwcGVkIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlucHV0IGRhdGEuIFRoZSBkZWZhdWx0IGlzIDAuCisKKworRXhhbXBsZXMKKy0tLS0tLS0tCisKK1JlYWRpbmcgaW4gYSBjb21wcmVzc2VkIGZpbGU6OgorCisgICBpbXBvcnQgbHptYQorICAgd2l0aCBsem1hLm9wZW4oImZpbGUueHoiKSBhcyBmOgorICAgICAgIGZpbGVfY29udGVudCA9IGYucmVhZCgpCisKK0NyZWF0aW5nIGEgY29tcHJlc3NlZCBmaWxlOjoKKworICAgaW1wb3J0IGx6bWEKKyAgIGRhdGEgPSBiIkluc2VydCBEYXRhIEhlcmUiCisgICB3aXRoIGx6bWEub3BlbigiZmlsZS54eiIsICJ3IikgYXMgZjoKKyAgICAgICBmLndyaXRlKGRhdGEpCisKK0NvbXByZXNzaW5nIGRhdGEgaW4gbWVtb3J5OjoKKworICAgaW1wb3J0IGx6bWEKKyAgIGRhdGFfaW4gPSBiIkluc2VydCBEYXRhIEhlcmUiCisgICBkYXRhX291dCA9IGx6bWEuY29tcHJlc3MoZGF0YV9pbikKKworSW5jcmVtZW50YWwgY29tcHJlc3Npb246OgorCisgICBpbXBvcnQgbHptYQorICAgbHpjID0gbHptYS5MWk1BQ29tcHJlc3NvcigpCisgICBvdXQxID0gbHpjLmNvbXByZXNzKGIiU29tZSBkYXRhXG4iKQorICAgb3V0MiA9IGx6Yy5jb21wcmVzcyhiIkFub3RoZXIgcGllY2Ugb2YgZGF0YVxuIikKKyAgIG91dDMgPSBsemMuY29tcHJlc3MoYiJFdmVuIG1vcmUgZGF0YVxuIikKKyAgIG91dDQgPSBsemMuZmx1c2goKQorICAgIyBDb25jYXRlbmF0ZSBhbGwgdGhlIHBhcnRpYWwgcmVzdWx0czoKKyAgIHJlc3VsdCA9IGIiIi5qb2luKFtvdXQxLCBvdXQyLCBvdXQzLCBvdXQ0XSkKKworV3JpdGluZyBjb21wcmVzc2VkIGRhdGEgdG8gYW4gYWxyZWFkeS1vcGVuIGZpbGU6OgorCisgICBpbXBvcnQgbHptYQorICAgd2l0aCBvcGVuKCJmaWxlLnh6IiwgIndiIikgYXMgZjoKKyAgICAgICBmLndyaXRlKGIiVGhpcyBkYXRhIHdpbGwgbm90IGJlIGNvbXByZXNzZWRcbiIpCisgICAgICAgd2l0aCBsem1hLm9wZW4oZiwgInciKSBhcyBsemY6CisgICAgICAgICAgIGx6Zi53cml0ZShiIlRoaXMgKndpbGwqIGJlIGNvbXByZXNzZWRcbiIpCisgICAgICAgZi53cml0ZShiIk5vdCBjb21wcmVzc2VkXG4iKQorCitDcmVhdGluZyBhIGNvbXByZXNzZWQgZmlsZSB1c2luZyBhIGN1c3RvbSBmaWx0ZXIgY2hhaW46OgorCisgICBpbXBvcnQgbHptYQorICAgbXlfZmlsdGVycyA9IFsKKyAgICAgICB7ImlkIjogbHptYS5GSUxURVJfREVMVEEsICJkaXN0IjogNX0sCisgICAgICAgeyJpZCI6IGx6bWEuRklMVEVSX0xaTUEyLCAicHJlc2V0IjogNyB8IGx6bWEuUFJFU0VUX0VYVFJFTUV9LAorICAgXQorICAgd2l0aCBsem1hLm9wZW4oImZpbGUueHoiLCAidyIsIGZpbHRlcnM9bXlfZmlsdGVycykgYXMgZjoKKyAgICAgICBmLndyaXRlKGIiYmxhaCBibGFoIGJsYWgiKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbWFya3VwLnJzdCBiL0RvYy9saWJyYXJ5L21hcmt1cC5yc3QKaW5kZXggMWI0Y2NhNS4uMTU4OGFhOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbWFya3VwLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tYXJrdXAucnN0CkBAIC05LDIwICs5LDEzIEBACiBMYW5ndWFnZSAoU0dNTCkgYW5kIHRoZSBIeXBlcnRleHQgTWFya3VwIExhbmd1YWdlIChIVE1MKSwgYW5kIHNldmVyYWwgaW50ZXJmYWNlcwogZm9yIHdvcmtpbmcgd2l0aCB0aGUgRXh0ZW5zaWJsZSBNYXJrdXAgTGFuZ3VhZ2UgKFhNTCkuCiAKLUl0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgbW9kdWxlcyBpbiB0aGUgOm1vZDpgeG1sYCBwYWNrYWdlIHJlcXVpcmUgdGhhdAotdGhlcmUgYmUgYXQgbGVhc3Qgb25lIFNBWC1jb21wbGlhbnQgWE1MIHBhcnNlciBhdmFpbGFibGUuIFRoZSBFeHBhdCBwYXJzZXIgaXMKLWluY2x1ZGVkIHdpdGggUHl0aG9uLCBzbyB0aGUgOm1vZDpgeG1sLnBhcnNlcnMuZXhwYXRgIG1vZHVsZSB3aWxsIGFsd2F5cyBiZQotYXZhaWxhYmxlLgotCi1UaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDptb2Q6YHhtbC5kb21gIGFuZCA6bW9kOmB4bWwuc2F4YCBwYWNrYWdlcyBhcmUgdGhlCi1kZWZpbml0aW9uIG9mIHRoZSBQeXRob24gYmluZGluZ3MgZm9yIHRoZSBET00gYW5kIFNBWCBpbnRlcmZhY2VzLgotCiAKIC4uIHRvY3RyZWU6OgogCiAgICBodG1sLnJzdAogICAgaHRtbC5wYXJzZXIucnN0CiAgICBodG1sLmVudGl0aWVzLnJzdAorICAgeG1sLnJzdAogICAgeG1sLmV0cmVlLmVsZW1lbnR0cmVlLnJzdAogICAgeG1sLmRvbS5yc3QKICAgIHhtbC5kb20ubWluaWRvbS5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L21hdGgucnN0IGIvRG9jL2xpYnJhcnkvbWF0aC5yc3QKaW5kZXggYjAxNGZjNC4uYjY5ZDZjNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbWF0aC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbWF0aC5yc3QKQEAgLTE4Nyw2ICsxODcsMTkgQEAKICAgIHJlc3VsdCBpcyBjYWxjdWxhdGVkIGluIGEgd2F5IHdoaWNoIGlzIGFjY3VyYXRlIGZvciAqeCogbmVhciB6ZXJvLgogCiAKKy4uIGZ1bmN0aW9uOjogbG9nMih4KQorCisgICBSZXR1cm4gdGhlIGJhc2UtMiBsb2dhcml0aG0gb2YgKngqLiBUaGlzIGlzIHVzdWFsbHkgbW9yZSBhY2N1cmF0ZSB0aGFuCisgICBgYGxvZyh4LCAyKWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gc2VlYWxzbzo6CisKKyAgICAgIDptZXRoOmBpbnQuYml0X2xlbmd0aGAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJpdHMgbmVjZXNzYXJ5IHRvIHJlcHJlc2VudAorICAgICAgYW4gaW50ZWdlciBpbiBiaW5hcnksIGV4Y2x1ZGluZyB0aGUgc2lnbiBhbmQgbGVhZGluZyB6ZXJvcy4KKworCiAuLiBmdW5jdGlvbjo6IGxvZzEwKHgpCiAKICAgIFJldHVybiB0aGUgYmFzZS0xMCBsb2dhcml0aG0gb2YgKngqLiAgVGhpcyBpcyB1c3VhbGx5IG1vcmUgYWNjdXJhdGUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L21tYXAucnN0IGIvRG9jL2xpYnJhcnkvbW1hcC5yc3QKaW5kZXggMTc4ZTM4OC4uMWYzNmNlYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbW1hcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbW1hcC5yc3QKQEAgLTE5NiwxMiArMTk2LDE2IEBACiAgICAgICBtb3ZlIHdpbGwgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgIGV4Y2VwdGlvbi4KIAogCi0gICAuLiBtZXRob2Q6OiByZWFkKG51bSkKKyAgIC4uIG1ldGhvZDo6IHJlYWQoW25dKQogCi0gICAgICBSZXR1cm4gYSA6Y2xhc3M6YGJ5dGVzYCBjb250YWluaW5nIHVwIHRvICpudW0qIGJ5dGVzIHN0YXJ0aW5nIGZyb20gdGhlCi0gICAgICBjdXJyZW50IGZpbGUgcG9zaXRpb247IHRoZSBmaWxlIHBvc2l0aW9uIGlzIHVwZGF0ZWQgdG8gcG9pbnQgYWZ0ZXIgdGhlCi0gICAgICBieXRlcyB0aGF0IHdlcmUgcmV0dXJuZWQuCisgICAgICBSZXR1cm4gYSA6Y2xhc3M6YGJ5dGVzYCBjb250YWluaW5nIHVwIHRvICpuKiBieXRlcyBzdGFydGluZyBmcm9tIHRoZQorICAgICAgY3VycmVudCBmaWxlIHBvc2l0aW9uLiBJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCwgKk5vbmUqIG9yIG5lZ2F0aXZlLAorICAgICAgcmV0dXJuIGFsbCBieXRlcyBmcm9tIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gdG8gdGhlIGVuZCBvZiB0aGUKKyAgICAgIG1hcHBpbmcuIFRoZSBmaWxlIHBvc2l0aW9uIGlzIHVwZGF0ZWQgdG8gcG9pbnQgYWZ0ZXIgdGhlIGJ5dGVzIHRoYXQgd2VyZQorICAgICAgcmV0dXJuZWQuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBBcmd1bWVudCBjYW4gYmUgb21pdHRlZCBvciAqTm9uZSouCiAKICAgIC4uIG1ldGhvZDo6IHJlYWRfYnl0ZSgpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L21zdmNydC5yc3QgYi9Eb2MvbGlicmFyeS9tc3ZjcnQucnN0CmluZGV4IDg4OWEwYzUuLjlkMjM3MjAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L21zdmNydC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbXN2Y3J0LnJzdApAQCAtMjAsNiArMjAsMTEgQEAKIGZvciBpbnRlcm5hdGlvbmFsaXplZCBhcHBsaWNhdGlvbnMuIFRoZSB3aWRlIGNoYXIgQVBJIHNob3VsZCBiZSB1c2VkIHdoZXJlCiBldmVyIHBvc3NpYmxlCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBPcGVyYXRpb25zIGluIHRoaXMgbW9kdWxlIG5vdyByYWlzZSA6ZXhjOmBPU0Vycm9yYCB3aGVyZSA6ZXhjOmBJT0Vycm9yYAorICAgd2FzIHJhaXNlZC4KKworCiAuLiBfbXN2Y3J0LWZpbGVzOgogCiBGaWxlIE9wZXJhdGlvbnMKQEAgLTI5LDcgKzM0LDcgQEAKIC4uIGZ1bmN0aW9uOjogbG9ja2luZyhmZCwgbW9kZSwgbmJ5dGVzKQogCiAgICBMb2NrIHBhcnQgb2YgYSBmaWxlIGJhc2VkIG9uIGZpbGUgZGVzY3JpcHRvciAqZmQqIGZyb20gdGhlIEMgcnVudGltZS4gIFJhaXNlcwotICAgOmV4YzpgSU9FcnJvcmAgb24gZmFpbHVyZS4gIFRoZSBsb2NrZWQgcmVnaW9uIG9mIHRoZSBmaWxlIGV4dGVuZHMgZnJvbSB0aGUKKyAgIDpleGM6YE9TRXJyb3JgIG9uIGZhaWx1cmUuICBUaGUgbG9ja2VkIHJlZ2lvbiBvZiB0aGUgZmlsZSBleHRlbmRzIGZyb20gdGhlCiAgICBjdXJyZW50IGZpbGUgcG9zaXRpb24gZm9yICpuYnl0ZXMqIGJ5dGVzLCBhbmQgbWF5IGNvbnRpbnVlIGJleW9uZCB0aGUgZW5kIG9mIHRoZQogICAgZmlsZS4gICptb2RlKiBtdXN0IGJlIG9uZSBvZiB0aGUgOmNvbnN0OmBMS19cKmAgY29uc3RhbnRzIGxpc3RlZCBiZWxvdy4gTXVsdGlwbGUKICAgIHJlZ2lvbnMgaW4gYSBmaWxlIG1heSBiZSBsb2NrZWQgYXQgdGhlIHNhbWUgdGltZSwgYnV0IG1heSBub3Qgb3ZlcmxhcC4gIEFkamFjZW50CkBAIC00MSwxMyArNDYsMTMgQEAKIAogICAgTG9ja3MgdGhlIHNwZWNpZmllZCBieXRlcy4gSWYgdGhlIGJ5dGVzIGNhbm5vdCBiZSBsb2NrZWQsIHRoZSBwcm9ncmFtCiAgICBpbW1lZGlhdGVseSB0cmllcyBhZ2FpbiBhZnRlciAxIHNlY29uZC4gIElmLCBhZnRlciAxMCBhdHRlbXB0cywgdGhlIGJ5dGVzIGNhbm5vdAotICAgYmUgbG9ja2VkLCA6ZXhjOmBJT0Vycm9yYCBpcyByYWlzZWQuCisgICBiZSBsb2NrZWQsIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZC4KIAogCiAuLiBkYXRhOjogTEtfTkJMQ0sKICAgICAgICAgICBMS19OQlJMQ0sKIAotICAgTG9ja3MgdGhlIHNwZWNpZmllZCBieXRlcy4gSWYgdGhlIGJ5dGVzIGNhbm5vdCBiZSBsb2NrZWQsIDpleGM6YElPRXJyb3JgIGlzCisgICBMb2NrcyB0aGUgc3BlY2lmaWVkIGJ5dGVzLiBJZiB0aGUgYnl0ZXMgY2Fubm90IGJlIGxvY2tlZCwgOmV4YzpgT1NFcnJvcmAgaXMKICAgIHJhaXNlZC4KIAogCkBAIC03Myw3ICs3OCw3IEBACiAKIC4uIGZ1bmN0aW9uOjogZ2V0X29zZmhhbmRsZShmZCkKIAotICAgUmV0dXJuIHRoZSBmaWxlIGhhbmRsZSBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvciAqZmQqLiAgUmFpc2VzIDpleGM6YElPRXJyb3JgIGlmCisgICBSZXR1cm4gdGhlIGZpbGUgaGFuZGxlIGZvciB0aGUgZmlsZSBkZXNjcmlwdG9yICpmZCouICBSYWlzZXMgOmV4YzpgT1NFcnJvcmAgaWYKICAgICpmZCogaXMgbm90IHJlY29nbml6ZWQuCiAKIApAQCAtMTQ0LDQgKzE0OSw0IEBACiAuLiBmdW5jdGlvbjo6IGhlYXBtaW4oKQogCiAgICBGb3JjZSB0aGUgOmM6ZnVuYzpgbWFsbG9jYCBoZWFwIHRvIGNsZWFuIGl0c2VsZiB1cCBhbmQgcmV0dXJuIHVudXNlZCBibG9ja3MgdG8KLSAgIHRoZSBvcGVyYXRpbmcgc3lzdGVtLiAgT24gZmFpbHVyZSwgdGhpcyByYWlzZXMgOmV4YzpgSU9FcnJvcmAuCisgICB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gIE9uIGZhaWx1cmUsIHRoaXMgcmFpc2VzIDpleGM6YE9TRXJyb3JgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdCBiL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QKaW5kZXggM2U0MGZhZi4uMzIzZTJmZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0CkBAIC0yOSw3ICsyOSw3IEBACiAgICAgRnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhpcyBwYWNrYWdlIHJlcXVpcmVzIHRoYXQgdGhlIGBgX19tYWluX19gYCBtb2R1bGUgYmUKICAgICBpbXBvcnRhYmxlIGJ5IHRoZSBjaGlsZHJlbi4gVGhpcyBpcyBjb3ZlcmVkIGluIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1wcm9ncmFtbWluZ2AKICAgICBob3dldmVyIGl0IGlzIHdvcnRoIHBvaW50aW5nIG91dCBoZXJlLiBUaGlzIG1lYW5zIHRoYXQgc29tZSBleGFtcGxlcywgc3VjaAotICAgIGFzIHRoZSA6Y2xhc3M6YG11bHRpcHJvY2Vzc2luZy5Qb29sYCBleGFtcGxlcyB3aWxsIG5vdCB3b3JrIGluIHRoZQorICAgIGFzIHRoZSA6Y2xhc3M6YG11bHRpcHJvY2Vzc2luZy5wb29sLlBvb2xgIGV4YW1wbGVzIHdpbGwgbm90IHdvcmsgaW4gdGhlCiAgICAgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIuIEZvciBleGFtcGxlOjoKIAogICAgICAgICA+Pj4gZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFBvb2wKQEAgLTEyMSw5ICsxMjEsNyBAQAogICAgICAgICAgIHByaW50KHEuZ2V0KCkpICAgICMgcHJpbnRzICJbNDIsIE5vbmUsICdoZWxsbyddIgogICAgICAgICAgIHAuam9pbigpCiAKLSAgIFF1ZXVlcyBhcmUgdGhyZWFkIGFuZCBwcm9jZXNzIHNhZmUsIGJ1dCBub3RlIHRoYXQgdGhleSBtdXN0IG5ldmVyCi0gICBiZSBpbnN0YW50aWF0ZWQgYXMgYSBzaWRlIGVmZmVjdCBvZiBpbXBvcnRpbmcgYSBtb2R1bGU6IHRoaXMgY2FuIGxlYWQKLSAgIHRvIGEgZGVhZGxvY2shICAoc2VlIDpyZWY6YHRocmVhZGVkLWltcG9ydHNgKQorICAgUXVldWVzIGFyZSB0aHJlYWQgYW5kIHByb2Nlc3Mgc2FmZS4KIAogKipQaXBlcyoqCiAKQEAgLTIyOSwxMSArMjI3LDExIEBACiAgICBob2xkcyBQeXRob24gb2JqZWN0cyBhbmQgYWxsb3dzIG90aGVyIHByb2Nlc3NlcyB0byBtYW5pcHVsYXRlIHRoZW0gdXNpbmcKICAgIHByb3hpZXMuCiAKLSAgIEEgbWFuYWdlciByZXR1cm5lZCBieSA6ZnVuYzpgTWFuYWdlcmAgd2lsbCBzdXBwb3J0IHR5cGVzIDpjbGFzczpgbGlzdGAsCi0gICA6Y2xhc3M6YGRpY3RgLCA6Y2xhc3M6YE5hbWVzcGFjZWAsIDpjbGFzczpgTG9ja2AsIDpjbGFzczpgUkxvY2tgLAotICAgOmNsYXNzOmBTZW1hcGhvcmVgLCA6Y2xhc3M6YEJvdW5kZWRTZW1hcGhvcmVgLCA6Y2xhc3M6YENvbmRpdGlvbmAsCi0gICA6Y2xhc3M6YEV2ZW50YCwgOmNsYXNzOmBRdWV1ZWAsIDpjbGFzczpgVmFsdWVgIGFuZCA6Y2xhc3M6YEFycmF5YC4gIEZvcgotICAgZXhhbXBsZSwgOjoKKyAgIEEgbWFuYWdlciByZXR1cm5lZCBieSA6ZnVuYzpgTWFuYWdlcmAgd2lsbCBzdXBwb3J0IHR5cGVzCisgICA6Y2xhc3M6YGxpc3RgLCA6Y2xhc3M6YGRpY3RgLCA6Y2xhc3M6YE5hbWVzcGFjZWAsIDpjbGFzczpgTG9ja2AsCisgICA6Y2xhc3M6YFJMb2NrYCwgOmNsYXNzOmBTZW1hcGhvcmVgLCA6Y2xhc3M6YEJvdW5kZWRTZW1hcGhvcmVgLAorICAgOmNsYXNzOmBDb25kaXRpb25gLCA6Y2xhc3M6YEV2ZW50YCwgOmNsYXNzOmBCYXJyaWVyYCwKKyAgIDpjbGFzczpgUXVldWVgLCA6Y2xhc3M6YFZhbHVlYCBhbmQgOmNsYXNzOmBBcnJheWAuICBGb3IgZXhhbXBsZSwgOjoKIAogICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFByb2Nlc3MsIE1hbmFnZXIKIApAQCAtMjQ0LDE3ICsyNDIsMTYgQEAKICAgICAgICAgICBsLnJldmVyc2UoKQogCiAgICAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgICAgICAgIG1hbmFnZXIgPSBNYW5hZ2VyKCkKKyAgICAgICAgICB3aXRoIE1hbmFnZXIoKSBhcyBtYW5hZ2VyOgorICAgICAgICAgICAgICBkID0gbWFuYWdlci5kaWN0KCkKKyAgICAgICAgICAgICAgbCA9IG1hbmFnZXIubGlzdChyYW5nZSgxMCkpCiAKLSAgICAgICAgICBkID0gbWFuYWdlci5kaWN0KCkKLSAgICAgICAgICBsID0gbWFuYWdlci5saXN0KHJhbmdlKDEwKSkKKyAgICAgICAgICAgICAgcCA9IFByb2Nlc3ModGFyZ2V0PWYsIGFyZ3M9KGQsIGwpKQorICAgICAgICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgICAgICAgcC5qb2luKCkKIAotICAgICAgICAgIHAgPSBQcm9jZXNzKHRhcmdldD1mLCBhcmdzPShkLCBsKSkKLSAgICAgICAgICBwLnN0YXJ0KCkKLSAgICAgICAgICBwLmpvaW4oKQotCi0gICAgICAgICAgcHJpbnQoZCkKLSAgICAgICAgICBwcmludChsKQorICAgICAgICAgICAgICBwcmludChkKQorICAgICAgICAgICAgICBwcmludChsKQogCiAgICB3aWxsIHByaW50IDo6CiAKQEAgLTI4MiwxMCArMjc5LDEwIEBACiAgICAgICAgcmV0dXJuIHgqeAogCiAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgICAgIHBvb2wgPSBQb29sKHByb2Nlc3Nlcz00KSAgICAgICAgICAgICAgICMgc3RhcnQgNCB3b3JrZXIgcHJvY2Vzc2VzCi0gICAgICAgcmVzdWx0ID0gcG9vbC5hcHBseV9hc3luYyhmLCBbMTBdKSAgICAgIyBldmFsdWF0ZSAiZigxMCkiIGFzeW5jaHJvbm91c2x5Ci0gICAgICAgcHJpbnQocmVzdWx0LmdldCh0aW1lb3V0PTEpKSAgICAgICAgICAgIyBwcmludHMgIjEwMCIgdW5sZXNzIHlvdXIgY29tcHV0ZXIgaXMgKnZlcnkqIHNsb3cKLSAgICAgICBwcmludChwb29sLm1hcChmLCByYW5nZSgxMCkpKSAgICAgICAgICAjIHByaW50cyAiWzAsIDEsIDQsLi4uLCA4MV0iCisgICAgICAgd2l0aCBQb29sKHByb2Nlc3Nlcz00KSBhcyBwb29sOiAgICAgICAgIyBzdGFydCA0IHdvcmtlciBwcm9jZXNzZXMKKyAgICAgICAgICAgcmVzdWx0ID0gcG9vbC5hcHBseV9hc3luYyhmLCBbMTBdKSAjIGV2YWx1YXRlICJmKDEwKSIgYXN5bmNocm9ub3VzbHkKKyAgICAgICAgICAgcHJpbnQocmVzdWx0LmdldCh0aW1lb3V0PTEpKSAgICAgICAjIHByaW50cyAiMTAwIiB1bmxlc3MgeW91ciBjb21wdXRlciBpcyAqdmVyeSogc2xvdworICAgICAgICAgICBwcmludChwb29sLm1hcChmLCByYW5nZSgxMCkpKSAgICAgICMgcHJpbnRzICJbMCwgMSwgNCwuLi4sIDgxXSIKIAogCiBSZWZlcmVuY2UKQEAgLTI5OCw3ICsyOTUsOCBAQAogOmNsYXNzOmBQcm9jZXNzYCBhbmQgZXhjZXB0aW9ucwogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCi0uLiBjbGFzczo6IFByb2Nlc3MoZ3JvdXA9Tm9uZSwgdGFyZ2V0PU5vbmUsIG5hbWU9Tm9uZSwgYXJncz0oKSwga3dhcmdzPXt9KQorLi4gY2xhc3M6OiBQcm9jZXNzKGdyb3VwPU5vbmUsIHRhcmdldD1Ob25lLCBuYW1lPU5vbmUsIGFyZ3M9KCksIGt3YXJncz17fSwgXAorICAgICAgICAgICAgICAgICAgICosIGRhZW1vbj1Ob25lKQogCiAgICBQcm9jZXNzIG9iamVjdHMgcmVwcmVzZW50IGFjdGl2aXR5IHRoYXQgaXMgcnVuIGluIGEgc2VwYXJhdGUgcHJvY2Vzcy4gVGhlCiAgICA6Y2xhc3M6YFByb2Nlc3NgIGNsYXNzIGhhcyBlcXVpdmFsZW50cyBvZiBhbGwgdGhlIG1ldGhvZHMgb2YKQEAgLTMwOCwxOCArMzA2LDIyIEBACiAgICBzaG91bGQgYWx3YXlzIGJlIGBgTm9uZWBgOyBpdCBleGlzdHMgc29sZWx5IGZvciBjb21wYXRpYmlsaXR5IHdpdGgKICAgIDpjbGFzczpgdGhyZWFkaW5nLlRocmVhZGAuICAqdGFyZ2V0KiBpcyB0aGUgY2FsbGFibGUgb2JqZWN0IHRvIGJlIGludm9rZWQgYnkKICAgIHRoZSA6bWV0aDpgcnVuKClgIG1ldGhvZC4gIEl0IGRlZmF1bHRzIHRvIGBgTm9uZWBgLCBtZWFuaW5nIG5vdGhpbmcgaXMKLSAgIGNhbGxlZC4gKm5hbWUqIGlzIHRoZSBwcm9jZXNzIG5hbWUuICBCeSBkZWZhdWx0LCBhIHVuaXF1ZSBuYW1lIGlzIGNvbnN0cnVjdGVkCi0gICBvZiB0aGUgZm9ybSAnUHJvY2Vzcy1OXCA6c3ViOmAxYDpOXCA6c3ViOmAyYDouLi46TlwgOnN1Yjpga2AnIHdoZXJlIE5cCi0gICA6c3ViOmAxYCxOXCA6c3ViOmAyYCwuLi4sTlwgOnN1Yjpga2AgaXMgYSBzZXF1ZW5jZSBvZiBpbnRlZ2VycyB3aG9zZSBsZW5ndGgKLSAgIGlzIGRldGVybWluZWQgYnkgdGhlICpnZW5lcmF0aW9uKiBvZiB0aGUgcHJvY2Vzcy4gICphcmdzKiBpcyB0aGUgYXJndW1lbnQKLSAgIHR1cGxlIGZvciB0aGUgdGFyZ2V0IGludm9jYXRpb24uICAqa3dhcmdzKiBpcyBhIGRpY3Rpb25hcnkgb2Yga2V5d29yZAotICAgYXJndW1lbnRzIGZvciB0aGUgdGFyZ2V0IGludm9jYXRpb24uICBCeSBkZWZhdWx0LCBubyBhcmd1bWVudHMgYXJlIHBhc3NlZCB0bwotICAgKnRhcmdldCouCisgICBjYWxsZWQuICpuYW1lKiBpcyB0aGUgcHJvY2VzcyBuYW1lIChzZWUgOmF0dHI6YG5hbWVgIGZvciBtb3JlIGRldGFpbHMpLgorICAgKmFyZ3MqIGlzIHRoZSBhcmd1bWVudCB0dXBsZSBmb3IgdGhlIHRhcmdldCBpbnZvY2F0aW9uLiAgKmt3YXJncyogaXMgYQorICAgZGljdGlvbmFyeSBvZiBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgdGhlIHRhcmdldCBpbnZvY2F0aW9uLiAgSWYgcHJvdmlkZWQsCisgICB0aGUga2V5d29yZC1vbmx5ICpkYWVtb24qIGFyZ3VtZW50IHNldHMgdGhlIHByb2Nlc3MgOmF0dHI6YGRhZW1vbmAgZmxhZworICAgdG8gYGBUcnVlYGAgb3IgYGBGYWxzZWBgLiAgSWYgYGBOb25lYGAgKHRoZSBkZWZhdWx0KSwgdGhpcyBmbGFnIHdpbGwgYmUKKyAgIGluaGVyaXRlZCBmcm9tIHRoZSBjcmVhdGluZyBwcm9jZXNzLgorCisgICBCeSBkZWZhdWx0LCBubyBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byAqdGFyZ2V0Ki4KIAogICAgSWYgYSBzdWJjbGFzcyBvdmVycmlkZXMgdGhlIGNvbnN0cnVjdG9yLCBpdCBtdXN0IG1ha2Ugc3VyZSBpdCBpbnZva2VzIHRoZQogICAgYmFzZSBjbGFzcyBjb25zdHJ1Y3RvciAoOm1ldGg6YFByb2Nlc3MuX19pbml0X19gKSBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZQogICAgdG8gdGhlIHByb2Nlc3MuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKmRhZW1vbiogYXJndW1lbnQuCisKICAgIC4uIG1ldGhvZDo6IHJ1bigpCiAKICAgICAgIE1ldGhvZCByZXByZXNlbnRpbmcgdGhlIHByb2Nlc3MncyBhY3Rpdml0eS4KQEAgLTMzOCwxMCArMzQwLDkgQEAKIAogICAgLi4gbWV0aG9kOjogam9pbihbdGltZW91dF0pCiAKLSAgICAgIEJsb2NrIHRoZSBjYWxsaW5nIHRocmVhZCB1bnRpbCB0aGUgcHJvY2VzcyB3aG9zZSA6bWV0aDpgam9pbmAgbWV0aG9kIGlzCi0gICAgICBjYWxsZWQgdGVybWluYXRlcyBvciB1bnRpbCB0aGUgb3B0aW9uYWwgdGltZW91dCBvY2N1cnMuCi0KLSAgICAgIElmICp0aW1lb3V0KiBpcyBgYE5vbmVgYCB0aGVuIHRoZXJlIGlzIG5vIHRpbWVvdXQuCisgICAgICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKnRpbWVvdXQqIGlzIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIHRoZSBtZXRob2QKKyAgICAgIGJsb2NrcyB1bnRpbCB0aGUgcHJvY2VzcyB3aG9zZSA6bWV0aDpgam9pbmAgbWV0aG9kIGlzIGNhbGxlZCB0ZXJtaW5hdGVzLgorICAgICAgSWYgKnRpbWVvdXQqIGlzIGEgcG9zaXRpdmUgbnVtYmVyLCBpdCBibG9ja3MgYXQgbW9zdCAqdGltZW91dCogc2Vjb25kcy4KIAogICAgICAgQSBwcm9jZXNzIGNhbiBiZSBqb2luZWQgbWFueSB0aW1lcy4KIApAQCAtMzUwLDExICszNTEsMTQgQEAKIAogICAgLi4gYXR0cmlidXRlOjogbmFtZQogCi0gICAgICBUaGUgcHJvY2VzcydzIG5hbWUuCisgICAgICBUaGUgcHJvY2VzcydzIG5hbWUuICBUaGUgbmFtZSBpcyBhIHN0cmluZyB1c2VkIGZvciBpZGVudGlmaWNhdGlvbiBwdXJwb3NlcworICAgICAgb25seS4gIEl0IGhhcyBubyBzZW1hbnRpY3MuICBNdWx0aXBsZSBwcm9jZXNzZXMgbWF5IGJlIGdpdmVuIHRoZSBzYW1lCisgICAgICBuYW1lLgogCi0gICAgICBUaGUgbmFtZSBpcyBhIHN0cmluZyB1c2VkIGZvciBpZGVudGlmaWNhdGlvbiBwdXJwb3NlcyBvbmx5LiAgSXQgaGFzIG5vCi0gICAgICBzZW1hbnRpY3MuICBNdWx0aXBsZSBwcm9jZXNzZXMgbWF5IGJlIGdpdmVuIHRoZSBzYW1lIG5hbWUuICBUaGUgaW5pdGlhbAotICAgICAgbmFtZSBpcyBzZXQgYnkgdGhlIGNvbnN0cnVjdG9yLgorICAgICAgVGhlIGluaXRpYWwgbmFtZSBpcyBzZXQgYnkgdGhlIGNvbnN0cnVjdG9yLiAgSWYgbm8gZXhwbGljaXQgbmFtZSBpcworICAgICAgcHJvdmlkZWQgdG8gdGhlIGNvbnN0cnVjdG9yLCBhIG5hbWUgb2YgdGhlIGZvcm0KKyAgICAgICdQcm9jZXNzLU5cIDpzdWI6YDFgOk5cIDpzdWI6YDJgOi4uLjpOXCA6c3ViOmBrYCcgaXMgY29uc3RydWN0ZWQsIHdoZXJlCisgICAgICBlYWNoIE5cIDpzdWI6YGtgIGlzIHRoZSBOLXRoIGNoaWxkIG9mIGl0cyBwYXJlbnQuCiAKICAgIC4uIG1ldGhvZDo6IGlzX2FsaXZlCiAKQEAgLTQwNiw2ICs0MTAsMjEgQEAKIAogICAgICAgU2VlIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1hdXRoLWtleXNgLgogCisgICAuLiBhdHRyaWJ1dGU6OiBzZW50aW5lbAorCisgICAgICBBIG51bWVyaWMgaGFuZGxlIG9mIGEgc3lzdGVtIG9iamVjdCB3aGljaCB3aWxsIGJlY29tZSAicmVhZHkiIHdoZW4KKyAgICAgIHRoZSBwcm9jZXNzIGVuZHMuCisKKyAgICAgIFlvdSBjYW4gdXNlIHRoaXMgdmFsdWUgaWYgeW91IHdhbnQgdG8gd2FpdCBvbiBzZXZlcmFsIGV2ZW50cyBhdAorICAgICAgb25jZSB1c2luZyA6ZnVuYzpgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24ud2FpdGAuICBPdGhlcndpc2UKKyAgICAgIGNhbGxpbmcgOm1ldGg6YGpvaW4oKWAgaXMgc2ltcGxlci4KKworICAgICAgT24gV2luZG93cywgdGhpcyBpcyBhbiBPUyBoYW5kbGUgdXNhYmxlIHdpdGggdGhlIGBgV2FpdEZvclNpbmdsZU9iamVjdGBgCisgICAgICBhbmQgYGBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzYGAgZmFtaWx5IG9mIEFQSSBjYWxscy4gIE9uIFVuaXgsIHRoaXMgaXMKKyAgICAgIGEgZmlsZSBkZXNjcmlwdG9yIHVzYWJsZSB3aXRoIHByaW1pdGl2ZXMgZnJvbSB0aGUgOm1vZDpgc2VsZWN0YCBtb2R1bGUuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAgICAuLiBtZXRob2Q6OiB0ZXJtaW5hdGUoKQogCiAgICAgICBUZXJtaW5hdGUgdGhlIHByb2Nlc3MuICBPbiBVbml4IHRoaXMgaXMgZG9uZSB1c2luZyB0aGUgYGBTSUdURVJNYGAgc2lnbmFsOwpAQCAtNDQ1LDYgKzQ2NCw5IEBACiAgICAgICAgPj4+IHAuZXhpdGNvZGUgPT0gLXNpZ25hbC5TSUdURVJNCiAgICAgICAgVHJ1ZQogCisuLiBleGNlcHRpb246OiBQcm9jZXNzRXJyb3IKKworICAgVGhlIGJhc2UgY2xhc3Mgb2YgYWxsIDptb2Q6YG11bHRpcHJvY2Vzc2luZ2AgZXhjZXB0aW9ucy4KIAogLi4gZXhjZXB0aW9uOjogQnVmZmVyVG9vU2hvcnQKIApAQCAtNDU0LDYgKzQ3NiwxMyBAQAogICAgSWYgYGBlYGAgaXMgYW4gaW5zdGFuY2Ugb2YgOmV4YzpgQnVmZmVyVG9vU2hvcnRgIHRoZW4gYGBlLmFyZ3NbMF1gYCB3aWxsIGdpdmUKICAgIHRoZSBtZXNzYWdlIGFzIGEgYnl0ZSBzdHJpbmcuCiAKKy4uIGV4Y2VwdGlvbjo6IEF1dGhlbnRpY2F0aW9uRXJyb3IKKworICAgUmFpc2VkIHdoZW4gdGhlcmUgaXMgYW4gYXV0aGVudGljYXRpb24gZXJyb3IuCisKKy4uIGV4Y2VwdGlvbjo6IFRpbWVvdXRFcnJvcgorCisgICBSYWlzZWQgYnkgbWV0aG9kcyB3aXRoIGEgdGltZW91dCB3aGVuIHRoZSB0aW1lb3V0IGV4cGlyZXMuCiAKIFBpcGVzIGFuZCBRdWV1ZXMKIH5+fn5+fn5+fn5+fn5+fn4KQEAgLTQ2NSw3ICs0OTQsNyBAQAogRm9yIHBhc3NpbmcgbWVzc2FnZXMgb25lIGNhbiB1c2UgOmZ1bmM6YFBpcGVgIChmb3IgYSBjb25uZWN0aW9uIGJldHdlZW4gdHdvCiBwcm9jZXNzZXMpIG9yIGEgcXVldWUgKHdoaWNoIGFsbG93cyBtdWx0aXBsZSBwcm9kdWNlcnMgYW5kIGNvbnN1bWVycykuCiAKLVRoZSA6Y2xhc3M6YFF1ZXVlYCwgOmNsYXNzOmBtdWx0aXByb2Nlc3NpbmcucXVldWVzLlNpbXBsZVF1ZXVlYCBhbmQgOmNsYXNzOmBKb2luYWJsZVF1ZXVlYCB0eXBlcyBhcmUgbXVsdGktcHJvZHVjZXIsCitUaGUgOmNsYXNzOmBRdWV1ZWAsIDpjbGFzczpgU2ltcGxlUXVldWVgIGFuZCA6Y2xhc3M6YEpvaW5hYmxlUXVldWVgIHR5cGVzIGFyZSBtdWx0aS1wcm9kdWNlciwKIG11bHRpLWNvbnN1bWVyIEZJRk8gcXVldWVzIG1vZGVsbGVkIG9uIHRoZSA6Y2xhc3M6YHF1ZXVlLlF1ZXVlYCBjbGFzcyBpbiB0aGUKIHN0YW5kYXJkIGxpYnJhcnkuICBUaGV5IGRpZmZlciBpbiB0aGF0IDpjbGFzczpgUXVldWVgIGxhY2tzIHRoZQogOm1ldGg6YH5xdWV1ZS5RdWV1ZS50YXNrX2RvbmVgIGFuZCA6bWV0aDpgfnF1ZXVlLlF1ZXVlLmpvaW5gIG1ldGhvZHMgaW50cm9kdWNlZApAQCAtNjEwLDcgKzYzOSw3IEBACiAgICAgICBleGl0cyAtLSBzZWUgOm1ldGg6YGpvaW5fdGhyZWFkYC4KIAogCi0uLiBjbGFzczo6IG11bHRpcHJvY2Vzc2luZy5xdWV1ZXMuU2ltcGxlUXVldWUoKQorLi4gY2xhc3M6OiBTaW1wbGVRdWV1ZSgpCiAKICAgIEl0IGlzIGEgc2ltcGxpZmllZCA6Y2xhc3M6YFF1ZXVlYCB0eXBlLCB2ZXJ5IGNsb3NlIHRvIGEgbG9ja2VkIDpjbGFzczpgUGlwZWAuCiAKQEAgLTYzNCw4ICs2NjMsOCBAQAogCiAgICAuLiBtZXRob2Q6OiB0YXNrX2RvbmUoKQogCi0gICAgICBJbmRpY2F0ZSB0aGF0IGEgZm9ybWVybHkgZW5xdWV1ZWQgdGFzayBpcyBjb21wbGV0ZS4gVXNlZCBieSBxdWV1ZSBjb25zdW1lcgotICAgICAgdGhyZWFkcy4gIEZvciBlYWNoIDptZXRoOmB+UXVldWUuZ2V0YCB1c2VkIHRvIGZldGNoIGEgdGFzaywgYSBzdWJzZXF1ZW50CisgICAgICBJbmRpY2F0ZSB0aGF0IGEgZm9ybWVybHkgZW5xdWV1ZWQgdGFzayBpcyBjb21wbGV0ZS4gVXNlZCBieSBxdWV1ZQorICAgICAgY29uc3VtZXJzLiAgRm9yIGVhY2ggOm1ldGg6YH5RdWV1ZS5nZXRgIHVzZWQgdG8gZmV0Y2ggYSB0YXNrLCBhIHN1YnNlcXVlbnQKICAgICAgIGNhbGwgdG8gOm1ldGg6YHRhc2tfZG9uZWAgdGVsbHMgdGhlIHF1ZXVlIHRoYXQgdGhlIHByb2Nlc3Npbmcgb24gdGhlIHRhc2sKICAgICAgIGlzIGNvbXBsZXRlLgogCkBAIC02NTIsNyArNjgxLDcgQEAKICAgICAgIEJsb2NrIHVudGlsIGFsbCBpdGVtcyBpbiB0aGUgcXVldWUgaGF2ZSBiZWVuIGdvdHRlbiBhbmQgcHJvY2Vzc2VkLgogCiAgICAgICBUaGUgY291bnQgb2YgdW5maW5pc2hlZCB0YXNrcyBnb2VzIHVwIHdoZW5ldmVyIGFuIGl0ZW0gaXMgYWRkZWQgdG8gdGhlCi0gICAgICBxdWV1ZS4gIFRoZSBjb3VudCBnb2VzIGRvd24gd2hlbmV2ZXIgYSBjb25zdW1lciB0aHJlYWQgY2FsbHMKKyAgICAgIHF1ZXVlLiAgVGhlIGNvdW50IGdvZXMgZG93biB3aGVuZXZlciBhIGNvbnN1bWVyIGNhbGxzCiAgICAgICA6bWV0aDpgdGFza19kb25lYCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBpdGVtIHdhcyByZXRyaWV2ZWQgYW5kIGFsbCB3b3JrIG9uCiAgICAgICBpdCBpcyBjb21wbGV0ZS4gIFdoZW4gdGhlIGNvdW50IG9mIHVuZmluaXNoZWQgdGFza3MgZHJvcHMgdG8gemVybywKICAgICAgIDptZXRoOmB+UXVldWUuam9pbmAgdW5ibG9ja3MuCkBAIC03NjYsNiArNzk1LDkgQEAKICAgICAgICp0aW1lb3V0KiBpcyBhIG51bWJlciB0aGVuIHRoaXMgc3BlY2lmaWVzIHRoZSBtYXhpbXVtIHRpbWUgaW4gc2Vjb25kcyB0bwogICAgICAgYmxvY2suICBJZiAqdGltZW91dCogaXMgYGBOb25lYGAgdGhlbiBhbiBpbmZpbml0ZSB0aW1lb3V0IGlzIHVzZWQuCiAKKyAgICAgIE5vdGUgdGhhdCBtdWx0aXBsZSBjb25uZWN0aW9uIG9iamVjdHMgbWF5IGJlIHBvbGxlZCBhdCBvbmNlIGJ5CisgICAgICB1c2luZyA6ZnVuYzpgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24ud2FpdGAuCisKICAgIC4uIG1ldGhvZDo6IHNlbmRfYnl0ZXMoYnVmZmVyWywgb2Zmc2V0Wywgc2l6ZV1dKQogCiAgICAgICBTZW5kIGJ5dGUgZGF0YSBmcm9tIGFuIG9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgaW50ZXJmYWNlIGFzIGEKQEAgLTc4NCw5ICs4MTYsMTQgQEAKICAgICAgIHRvIHJlY2VpdmUgYW5kIHRoZSBvdGhlciBlbmQgaGFzIGNsb3NlZC4KIAogICAgICAgSWYgKm1heGxlbmd0aCogaXMgc3BlY2lmaWVkIGFuZCB0aGUgbWVzc2FnZSBpcyBsb25nZXIgdGhhbiAqbWF4bGVuZ3RoKgotICAgICAgdGhlbiA6ZXhjOmBJT0Vycm9yYCBpcyByYWlzZWQgYW5kIHRoZSBjb25uZWN0aW9uIHdpbGwgbm8gbG9uZ2VyIGJlCisgICAgICB0aGVuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCBhbmQgdGhlIGNvbm5lY3Rpb24gd2lsbCBubyBsb25nZXIgYmUKICAgICAgIHJlYWRhYmxlLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIHJhaXNlIGEgOmV4YzpgSU9FcnJvcmAsIHdoaWNoIGlzIG5vdyBhbgorICAgICAgICAgYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisKKwogICAgLi4gbWV0aG9kOjogcmVjdl9ieXRlc19pbnRvKGJ1ZmZlclssIG9mZnNldF0pCiAKICAgICAgIFJlYWQgaW50byAqYnVmZmVyKiBhIGNvbXBsZXRlIG1lc3NhZ2Ugb2YgYnl0ZSBkYXRhIHNlbnQgZnJvbSB0aGUgb3RoZXIgZW5kCkBAIC04MDQsNiArODQxLDE0IEBACiAgICAgICByYWlzZWQgYW5kIHRoZSBjb21wbGV0ZSBtZXNzYWdlIGlzIGF2YWlsYWJsZSBhcyBgYGUuYXJnc1swXWBgIHdoZXJlIGBgZWBgCiAgICAgICBpcyB0aGUgZXhjZXB0aW9uIGluc3RhbmNlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQ29ubmVjdGlvbiBvYmplY3RzIHRoZW1zZWx2ZXMgY2FuIG5vdyBiZSB0cmFuc2ZlcnJlZCBiZXR3ZWVuIHByb2Nlc3NlcworICAgICAgdXNpbmcgOm1ldGg6YENvbm5lY3Rpb24uc2VuZGAgYW5kIDptZXRoOmBDb25uZWN0aW9uLnJlY3ZgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIENvbm5lY3Rpb24gb2JqZWN0cyBub3cgc3VwcG9ydCB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIC0tIHNlZQorICAgICAgOnJlZjpgdHlwZWNvbnRleHRtYW5hZ2VyYC4gIDptZXRoOmBfX2VudGVyX19gIHJldHVybnMgdGhlCisgICAgICBjb25uZWN0aW9uIG9iamVjdCwgYW5kIDptZXRoOmBfX2V4aXRfX2AgY2FsbHMgOm1ldGg6YGNsb3NlYC4KIAogRm9yIGV4YW1wbGU6CiAKQEAgLTg1NSw2ICs5MDAsMTIgQEAKIE5vdGUgdGhhdCBvbmUgY2FuIGFsc28gY3JlYXRlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGJ5IHVzaW5nIGEgbWFuYWdlcgogb2JqZWN0IC0tIHNlZSA6cmVmOmBtdWx0aXByb2Nlc3NpbmctbWFuYWdlcnNgLgogCisuLiBjbGFzczo6IEJhcnJpZXIocGFydGllc1ssIGFjdGlvblssIHRpbWVvdXRdXSkKKworICAgQSBiYXJyaWVyIG9iamVjdDogYSBjbG9uZSBvZiA6Y2xhc3M6YHRocmVhZGluZy5CYXJyaWVyYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC4uIGNsYXNzOjogQm91bmRlZFNlbWFwaG9yZShbdmFsdWVdKQogCiAgICBBIGJvdW5kZWQgc2VtYXBob3JlIG9iamVjdDogYSBjbG9uZSBvZiA6Y2xhc3M6YHRocmVhZGluZy5Cb3VuZGVkU2VtYXBob3JlYC4KQEAgLTg2NCwyMCArOTE1LDE3IEBACiAKIC4uIGNsYXNzOjogQ29uZGl0aW9uKFtsb2NrXSkKIAotICAgQSBjb25kaXRpb24gdmFyaWFibGU6IGEgY2xvbmUgb2YgOmNsYXNzOmB0aHJlYWRpbmcuQ29uZGl0aW9uYC4KKyAgIEEgY29uZGl0aW9uIHZhcmlhYmxlOiBhbiBhbGlhcyBmb3IgOmNsYXNzOmB0aHJlYWRpbmcuQ29uZGl0aW9uYC4KIAogICAgSWYgKmxvY2sqIGlzIHNwZWNpZmllZCB0aGVuIGl0IHNob3VsZCBiZSBhIDpjbGFzczpgTG9ja2Agb3IgOmNsYXNzOmBSTG9ja2AKICAgIG9iamVjdCBmcm9tIDptb2Q6YG11bHRpcHJvY2Vzc2luZ2AuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgOm1ldGg6YHdhaXRfZm9yYCBtZXRob2Qgd2FzIGFkZGVkLgorCiAuLiBjbGFzczo6IEV2ZW50KCkKIAogICAgQSBjbG9uZSBvZiA6Y2xhc3M6YHRocmVhZGluZy5FdmVudGAuCi0gICBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBzdGF0ZSBvZiB0aGUgaW50ZXJuYWwgc2VtYXBob3JlIG9uIGV4aXQsIHNvIGl0Ci0gICB3aWxsIGFsd2F5cyByZXR1cm4gYGBUcnVlYGAgZXhjZXB0IGlmIGEgdGltZW91dCBpcyBnaXZlbiBhbmQgdGhlIG9wZXJhdGlvbgotICAgdGltZXMgb3V0LgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQotICAgICAgUHJldmlvdXNseSwgdGhlIG1ldGhvZCBhbHdheXMgcmV0dXJuZWQgYGBOb25lYGAuCiAKIC4uIGNsYXNzOjogTG9jaygpCiAKQEAgLTg5Myw2ICs5NDEsMTIgQEAKIAogLi4gbm90ZTo6CiAKKyAgIFRoZSA6bWV0aDpgYWNxdWlyZWAgYW5kIDptZXRoOmB3YWl0YCBtZXRob2RzIG9mIGVhY2ggb2YgdGhlc2UgdHlwZXMKKyAgIHRyZWF0IG5lZ2F0aXZlIHRpbWVvdXRzIGFzIHplcm8gdGltZW91dHMuICBUaGlzIGRpZmZlcnMgZnJvbQorICAgOm1vZDpgdGhyZWFkaW5nYCB3aGVyZSwgc2luY2UgdmVyc2lvbiAzLjIsIHRoZSBlcXVpdmFsZW50CisgICA6bWV0aDpgYWNxdWlyZWAgbWV0aG9kcyB0cmVhdCBuZWdhdGl2ZSB0aW1lb3V0cyBhcyBpbmZpbml0ZQorICAgdGltZW91dHMuCisKICAgIE9uIE1hYyBPUyBYLCBgYHNlbV90aW1lZHdhaXRgYCBpcyB1bnN1cHBvcnRlZCwgc28gY2FsbGluZyBgYGFjcXVpcmUoKWBgIHdpdGgKICAgIGEgdGltZW91dCB3aWxsIGVtdWxhdGUgdGhhdCBmdW5jdGlvbidzIGJlaGF2aW9yIHVzaW5nIGEgc2xlZXBpbmcgbG9vcC4KIApAQCAtOTE0LDEwICs5NjgsMTEgQEAKIEl0IGlzIHBvc3NpYmxlIHRvIGNyZWF0ZSBzaGFyZWQgb2JqZWN0cyB1c2luZyBzaGFyZWQgbWVtb3J5IHdoaWNoIGNhbiBiZQogaW5oZXJpdGVkIGJ5IGNoaWxkIHByb2Nlc3Nlcy4KIAotLi4gZnVuY3Rpb246OiBWYWx1ZSh0eXBlY29kZV9vcl90eXBlLCAqYXJnc1ssIGxvY2tdKQorLi4gZnVuY3Rpb246OiBWYWx1ZSh0eXBlY29kZV9vcl90eXBlLCAqYXJncywgbG9jaz1UcnVlKQogCiAgICBSZXR1cm4gYSA6bW9kOmBjdHlwZXNgIG9iamVjdCBhbGxvY2F0ZWQgZnJvbSBzaGFyZWQgbWVtb3J5LiAgQnkgZGVmYXVsdCB0aGUKLSAgIHJldHVybiB2YWx1ZSBpcyBhY3R1YWxseSBhIHN5bmNocm9uaXplZCB3cmFwcGVyIGZvciB0aGUgb2JqZWN0LgorICAgcmV0dXJuIHZhbHVlIGlzIGFjdHVhbGx5IGEgc3luY2hyb25pemVkIHdyYXBwZXIgZm9yIHRoZSBvYmplY3QuICBUaGUgb2JqZWN0CisgICBpdHNlbGYgY2FuIGJlIGFjY2Vzc2VkIHZpYSB0aGUgKnZhbHVlKiBhdHRyaWJ1dGUgb2YgYSA6Y2xhc3M6YFZhbHVlYC4KIAogICAgKnR5cGVjb2RlX29yX3R5cGUqIGRldGVybWluZXMgdGhlIHR5cGUgb2YgdGhlIHJldHVybmVkIG9iamVjdDogaXQgaXMgZWl0aGVyIGEKICAgIGN0eXBlcyB0eXBlIG9yIGEgb25lIGNoYXJhY3RlciB0eXBlY29kZSBvZiB0aGUga2luZCB1c2VkIGJ5IHRoZSA6bW9kOmBhcnJheWAKQEAgLTEwMDYsNyArMTA2MSw3IEBACiAgICBhdHRyaWJ1dGVzIHdoaWNoIGFsbG93IG9uZSB0byB1c2UgaXQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIHN0cmluZ3MgLS0gc2VlCiAgICBkb2N1bWVudGF0aW9uIGZvciA6bW9kOmBjdHlwZXNgLgogCi0uLiBmdW5jdGlvbjo6IEFycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIsICphcmdzWywgbG9ja10pCisuLiBmdW5jdGlvbjo6IEFycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIsICosIGxvY2s9VHJ1ZSkKIAogICAgVGhlIHNhbWUgYXMgOmZ1bmM6YFJhd0FycmF5YCBleGNlcHQgdGhhdCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mICpsb2NrKiBhCiAgICBwcm9jZXNzLXNhZmUgc3luY2hyb25pemF0aW9uIHdyYXBwZXIgbWF5IGJlIHJldHVybmVkIGluc3RlYWQgb2YgYSByYXcgY3R5cGVzCkBAIC0xMDIxLDcgKzEwNzYsNyBAQAogCiAgICBOb3RlIHRoYXQgKmxvY2sqIGlzIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50LgogCi0uLiBmdW5jdGlvbjo6IFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzWywgbG9ja10pCisuLiBmdW5jdGlvbjo6IFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzLCBsb2NrPVRydWUpCiAKICAgIFRoZSBzYW1lIGFzIDpmdW5jOmBSYXdWYWx1ZWAgZXhjZXB0IHRoYXQgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiAqbG9jayogYQogICAgcHJvY2Vzcy1zYWZlIHN5bmNocm9uaXphdGlvbiB3cmFwcGVyIG1heSBiZSByZXR1cm5lZCBpbnN0ZWFkIG9mIGEgcmF3IGN0eXBlcwpAQCAtMTEyMyw4ICsxMTc4LDEwIEBACiB+fn5+fn5+fgogCiBNYW5hZ2VycyBwcm92aWRlIGEgd2F5IHRvIGNyZWF0ZSBkYXRhIHdoaWNoIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBkaWZmZXJlbnQKLXByb2Nlc3Nlcy4gQSBtYW5hZ2VyIG9iamVjdCBjb250cm9scyBhIHNlcnZlciBwcm9jZXNzIHdoaWNoIG1hbmFnZXMgKnNoYXJlZAotb2JqZWN0cyouICBPdGhlciBwcm9jZXNzZXMgY2FuIGFjY2VzcyB0aGUgc2hhcmVkIG9iamVjdHMgYnkgdXNpbmcgcHJveGllcy4KK3Byb2Nlc3NlcywgaW5jbHVkaW5nIHNoYXJpbmcgb3ZlciBhIG5ldHdvcmsgYmV0d2VlbiBwcm9jZXNzZXMgcnVubmluZyBvbgorZGlmZmVyZW50IG1hY2hpbmVzLiBBIG1hbmFnZXIgb2JqZWN0IGNvbnRyb2xzIGEgc2VydmVyIHByb2Nlc3Mgd2hpY2ggbWFuYWdlcworKnNoYXJlZCBvYmplY3RzKi4gIE90aGVyIHByb2Nlc3NlcyBjYW4gYWNjZXNzIHRoZSBzaGFyZWQgb2JqZWN0cyBieSB1c2luZworcHJveGllcy4KIAogLi4gZnVuY3Rpb246OiBtdWx0aXByb2Nlc3NpbmcuTWFuYWdlcigpCiAKQEAgLTExOTcsOSArMTI1NCwxMCBAQAogICAgICAgdHlwZSBvZiBzaGFyZWQgb2JqZWN0LiAgVGhpcyBtdXN0IGJlIGEgc3RyaW5nLgogCiAgICAgICAqY2FsbGFibGUqIGlzIGEgY2FsbGFibGUgdXNlZCBmb3IgY3JlYXRpbmcgb2JqZWN0cyBmb3IgdGhpcyB0eXBlCi0gICAgICBpZGVudGlmaWVyLiAgSWYgYSBtYW5hZ2VyIGluc3RhbmNlIHdpbGwgYmUgY3JlYXRlZCB1c2luZyB0aGUKLSAgICAgIDptZXRoOmBmcm9tX2FkZHJlc3NgIGNsYXNzbWV0aG9kIG9yIGlmIHRoZSAqY3JlYXRlX21ldGhvZCogYXJndW1lbnQgaXMKLSAgICAgIGBgRmFsc2VgYCB0aGVuIHRoaXMgY2FuIGJlIGxlZnQgYXMgYGBOb25lYGAuCisgICAgICBpZGVudGlmaWVyLiAgSWYgYSBtYW5hZ2VyIGluc3RhbmNlIHdpbGwgYmUgY29ubmVjdGVkIHRvIHRoZQorICAgICAgc2VydmVyIHVzaW5nIHRoZSA6bWV0aDpgY29ubmVjdGAgbWV0aG9kLCBvciBpZiB0aGUKKyAgICAgICpjcmVhdGVfbWV0aG9kKiBhcmd1bWVudCBpcyBgYEZhbHNlYGAgdGhlbiB0aGlzIGNhbiBiZSBsZWZ0IGFzCisgICAgICBgYE5vbmVgYC4KIAogICAgICAgKnByb3h5dHlwZSogaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YEJhc2VQcm94eWAgd2hpY2ggaXMgdXNlZCB0byBjcmVhdGUKICAgICAgIHByb3hpZXMgZm9yIHNoYXJlZCBvYmplY3RzIHdpdGggdGhpcyAqdHlwZWlkKi4gIElmIGBgTm9uZWBgIHRoZW4gYSBwcm94eQpAQCAtMTIzMSw2ICsxMjg5LDE0IEBACiAKICAgICAgIFRoZSBhZGRyZXNzIHVzZWQgYnkgdGhlIG1hbmFnZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBNYW5hZ2VyIG9iamVjdHMgc3VwcG9ydCB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIC0tIHNlZQorICAgICAgOnJlZjpgdHlwZWNvbnRleHRtYW5hZ2VyYC4gIDptZXRoOmBfX2VudGVyX19gIHN0YXJ0cyB0aGUgc2VydmVyCisgICAgICBwcm9jZXNzIChpZiBpdCBoYXMgbm90IGFscmVhZHkgc3RhcnRlZCkgYW5kIHRoZW4gcmV0dXJucyB0aGUKKyAgICAgIG1hbmFnZXIgb2JqZWN0LiAgOm1ldGg6YF9fZXhpdF9fYCBjYWxscyA6bWV0aDpgc2h1dGRvd25gLgorCisgICAgICBJbiBwcmV2aW91cyB2ZXJzaW9ucyA6bWV0aDpgX19lbnRlcl9fYCBkaWQgbm90IHN0YXJ0IHRoZQorICAgICAgbWFuYWdlcidzIHNlcnZlciBwcm9jZXNzIGlmIGl0IHdhcyBub3QgYWxyZWFkeSBzdGFydGVkLgogCiAuLiBjbGFzczo6IFN5bmNNYW5hZ2VyCiAKQEAgLTEyNDAsNiArMTMwNiwxMyBAQAogCiAgICBJdCBhbHNvIHN1cHBvcnRzIGNyZWF0aW9uIG9mIHNoYXJlZCBsaXN0cyBhbmQgZGljdGlvbmFyaWVzLgogCisgICAuLiBtZXRob2Q6OiBCYXJyaWVyKHBhcnRpZXNbLCBhY3Rpb25bLCB0aW1lb3V0XV0pCisKKyAgICAgIENyZWF0ZSBhIHNoYXJlZCA6Y2xhc3M6YHRocmVhZGluZy5CYXJyaWVyYCBvYmplY3QgYW5kIHJldHVybiBhCisgICAgICBwcm94eSBmb3IgaXQuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAgICAuLiBtZXRob2Q6OiBCb3VuZGVkU2VtYXBob3JlKFt2YWx1ZV0pCiAKICAgICAgIENyZWF0ZSBhIHNoYXJlZCA6Y2xhc3M6YHRocmVhZGluZy5Cb3VuZGVkU2VtYXBob3JlYCBvYmplY3QgYW5kIHJldHVybiBhCkBAIC0xMjUzLDYgKzEzMjYsOSBAQAogICAgICAgSWYgKmxvY2sqIGlzIHN1cHBsaWVkIHRoZW4gaXQgc2hvdWxkIGJlIGEgcHJveHkgZm9yIGEKICAgICAgIDpjbGFzczpgdGhyZWFkaW5nLkxvY2tgIG9yIDpjbGFzczpgdGhyZWFkaW5nLlJMb2NrYCBvYmplY3QuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBUaGUgOm1ldGg6YHdhaXRfZm9yYCBtZXRob2Qgd2FzIGFkZGVkLgorCiAgICAuLiBtZXRob2Q6OiBFdmVudCgpCiAKICAgICAgIENyZWF0ZSBhIHNoYXJlZCA6Y2xhc3M6YHRocmVhZGluZy5FdmVudGAgb2JqZWN0IGFuZCByZXR1cm4gYSBwcm94eSBmb3IgaXQuCkBAIC0xMzU4LDExICsxNDM0LDEwIEBACiAgICBNeU1hbmFnZXIucmVnaXN0ZXIoJ01hdGhzJywgTWF0aHNDbGFzcykKIAogICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAgICBtYW5hZ2VyID0gTXlNYW5hZ2VyKCkKLSAgICAgICBtYW5hZ2VyLnN0YXJ0KCkKLSAgICAgICBtYXRocyA9IG1hbmFnZXIuTWF0aHMoKQotICAgICAgIHByaW50KG1hdGhzLmFkZCg0LCAzKSkgICAgICAgICAjIHByaW50cyA3Ci0gICAgICAgcHJpbnQobWF0aHMubXVsKDcsIDgpKSAgICAgICAgICMgcHJpbnRzIDU2CisgICAgICAgd2l0aCBNeU1hbmFnZXIoKSBhcyBtYW5hZ2VyOgorICAgICAgICAgICBtYXRocyA9IG1hbmFnZXIuTWF0aHMoKQorICAgICAgICAgICBwcmludChtYXRocy5hZGQoNCwgMykpICAgICAgICAgIyBwcmludHMgNworICAgICAgICAgICBwcmludChtYXRocy5tdWwoNywgOCkpICAgICAgICAgIyBwcmludHMgNTYKIAogCiBVc2luZyBhIHJlbW90ZSBtYW5hZ2VyCkBAIC0xNTYyLDcgKzE2MzcsNyBAQAogT25lIGNhbiBjcmVhdGUgYSBwb29sIG9mIHByb2Nlc3NlcyB3aGljaCB3aWxsIGNhcnJ5IG91dCB0YXNrcyBzdWJtaXR0ZWQgdG8gaXQKIHdpdGggdGhlIDpjbGFzczpgUG9vbGAgY2xhc3MuCiAKLS4uIGNsYXNzOjogbXVsdGlwcm9jZXNzaW5nLlBvb2woW3Byb2Nlc3Nlc1ssIGluaXRpYWxpemVyWywgaW5pdGFyZ3NbLCBtYXh0YXNrc3BlcmNoaWxkXV1dXSkKKy4uIGNsYXNzOjogUG9vbChbcHJvY2Vzc2VzWywgaW5pdGlhbGl6ZXJbLCBpbml0YXJnc1ssIG1heHRhc2tzcGVyY2hpbGRdXV1dKQogCiAgICBBIHByb2Nlc3MgcG9vbCBvYmplY3Qgd2hpY2ggY29udHJvbHMgYSBwb29sIG9mIHdvcmtlciBwcm9jZXNzZXMgdG8gd2hpY2ggam9icwogICAgY2FuIGJlIHN1Ym1pdHRlZC4gIEl0IHN1cHBvcnRzIGFzeW5jaHJvbm91cyByZXN1bHRzIHdpdGggdGltZW91dHMgYW5kCkBAIC0xNjU3LDYgKzE3MzIsMjQgQEAKICAgICAgIHJldHVybmVkIGl0ZXJhdG9yIHNob3VsZCBiZSBjb25zaWRlcmVkIGFyYml0cmFyeS4gIChPbmx5IHdoZW4gdGhlcmUgaXMKICAgICAgIG9ubHkgb25lIHdvcmtlciBwcm9jZXNzIGlzIHRoZSBvcmRlciBndWFyYW50ZWVkIHRvIGJlICJjb3JyZWN0Ii4pCiAKKyAgIC4uIG1ldGhvZDo6IHN0YXJtYXAoZnVuYywgaXRlcmFibGVbLCBjaHVua3NpemVdKQorCisgICAgICBMaWtlIDptZXRoOmBtYXBgIGV4Y2VwdCB0aGF0IHRoZSBlbGVtZW50cyBvZiB0aGUgYGl0ZXJhYmxlYCBhcmUgZXhwZWN0ZWQKKyAgICAgIHRvIGJlIGl0ZXJhYmxlcyB0aGF0IGFyZSB1bnBhY2tlZCBhcyBhcmd1bWVudHMuCisKKyAgICAgIEhlbmNlIGFuIGBpdGVyYWJsZWAgb2YgYFsoMSwyKSwgKDMsIDQpXWAgcmVzdWx0cyBpbiBgW2Z1bmMoMSwyKSwKKyAgICAgIGZ1bmMoMyw0KV1gLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbWV0aG9kOjogc3Rhcm1hcF9hc3luYyhmdW5jLCBpdGVyYWJsZVssIGNodW5rc2l6ZVssIGNhbGxiYWNrWywgZXJyb3JfYmFja11dXSkKKworICAgICAgQSBjb21iaW5hdGlvbiBvZiA6bWV0aDpgc3Rhcm1hcGAgYW5kIDptZXRoOmBtYXBfYXN5bmNgIHRoYXQgaXRlcmF0ZXMgb3ZlcgorICAgICAgYGl0ZXJhYmxlYCBvZiBpdGVyYWJsZXMgYW5kIGNhbGxzIGBmdW5jYCB3aXRoIHRoZSBpdGVyYWJsZXMgdW5wYWNrZWQuCisgICAgICBSZXR1cm5zIGEgcmVzdWx0IG9iamVjdC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKICAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKIAogICAgICAgUHJldmVudHMgYW55IG1vcmUgdGFza3MgZnJvbSBiZWluZyBzdWJtaXR0ZWQgdG8gdGhlIHBvb2wuICBPbmNlIGFsbCB0aGUKQEAgLTE2NzMsNiArMTc2NiwxMSBAQAogICAgICAgV2FpdCBmb3IgdGhlIHdvcmtlciBwcm9jZXNzZXMgdG8gZXhpdC4gIE9uZSBtdXN0IGNhbGwgOm1ldGg6YGNsb3NlYCBvcgogICAgICAgOm1ldGg6YHRlcm1pbmF0ZWAgYmVmb3JlIHVzaW5nIDptZXRoOmBqb2luYC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBQb29sIG9iamVjdHMgbm93IHN1cHBvcnQgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCAtLSBzZWUKKyAgICAgIDpyZWY6YHR5cGVjb250ZXh0bWFuYWdlcmAuICA6bWV0aDpgX19lbnRlcl9fYCByZXR1cm5zIHRoZSBwb29sCisgICAgICBvYmplY3QsIGFuZCA6bWV0aDpgX19leGl0X19gIGNhbGxzIDptZXRoOmB0ZXJtaW5hdGVgLgorCiAKIC4uIGNsYXNzOjogQXN5bmNSZXN1bHQKIApAQCAtMTcwNywyMSArMTgwNSwyMCBAQAogICAgICAgIHJldHVybiB4KngKIAogICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAgICBwb29sID0gUG9vbChwcm9jZXNzZXM9NCkgICAgICAgICAgICAgICMgc3RhcnQgNCB3b3JrZXIgcHJvY2Vzc2VzCisgICAgICAgd2l0aCBQb29sKHByb2Nlc3Nlcz00KSBhcyBwb29sOiAgICAgICAgICMgc3RhcnQgNCB3b3JrZXIgcHJvY2Vzc2VzCisgICAgICAgICAgIHJlc3VsdCA9IHBvb2wuYXBwbHlfYXN5bmMoZiwgKDEwLCkpICMgZXZhbHVhdGUgImYoMTApIiBhc3luY2hyb25vdXNseQorICAgICAgICAgICBwcmludChyZXN1bHQuZ2V0KHRpbWVvdXQ9MSkpICAgICAgICAjIHByaW50cyAiMTAwIiB1bmxlc3MgeW91ciBjb21wdXRlciBpcyAqdmVyeSogc2xvdwogCi0gICAgICAgcmVzdWx0ID0gcG9vbC5hcHBseV9hc3luYyhmLCAoMTAsKSkgICAjIGV2YWx1YXRlICJmKDEwKSIgYXN5bmNocm9ub3VzbHkKLSAgICAgICBwcmludChyZXN1bHQuZ2V0KHRpbWVvdXQ9MSkpICAgICAgICAgICMgcHJpbnRzICIxMDAiIHVubGVzcyB5b3VyIGNvbXB1dGVyIGlzICp2ZXJ5KiBzbG93CisgICAgICAgICAgIHByaW50KHBvb2wubWFwKGYsIHJhbmdlKDEwKSkpICAgICAgICMgcHJpbnRzICJbMCwgMSwgNCwuLi4sIDgxXSIKIAotICAgICAgIHByaW50KHBvb2wubWFwKGYsIHJhbmdlKDEwKSkpICAgICAgICAgIyBwcmludHMgIlswLCAxLCA0LC4uLiwgODFdIgorICAgICAgICAgICBpdCA9IHBvb2wuaW1hcChmLCByYW5nZSgxMCkpCisgICAgICAgICAgIHByaW50KG5leHQoaXQpKSAgICAgICAgICAgICAgICAgICAgICMgcHJpbnRzICIwIgorICAgICAgICAgICBwcmludChuZXh0KGl0KSkgICAgICAgICAgICAgICAgICAgICAjIHByaW50cyAiMSIKKyAgICAgICAgICAgcHJpbnQoaXQubmV4dCh0aW1lb3V0PTEpKSAgICAgICAgICAgIyBwcmludHMgIjQiIHVubGVzcyB5b3VyIGNvbXB1dGVyIGlzICp2ZXJ5KiBzbG93CiAKLSAgICAgICBpdCA9IHBvb2wuaW1hcChmLCByYW5nZSgxMCkpCi0gICAgICAgcHJpbnQobmV4dChpdCkpICAgICAgICAgICAgICAgICAgICAgICAjIHByaW50cyAiMCIKLSAgICAgICBwcmludChuZXh0KGl0KSkgICAgICAgICAgICAgICAgICAgICAgICMgcHJpbnRzICIxIgotICAgICAgIHByaW50KGl0Lm5leHQodGltZW91dD0xKSkgICAgICAgICAgICAgIyBwcmludHMgIjQiIHVubGVzcyB5b3VyIGNvbXB1dGVyIGlzICp2ZXJ5KiBzbG93Ci0KLSAgICAgICBpbXBvcnQgdGltZQotICAgICAgIHJlc3VsdCA9IHBvb2wuYXBwbHlfYXN5bmModGltZS5zbGVlcCwgKDEwLCkpCi0gICAgICAgcHJpbnQocmVzdWx0LmdldCh0aW1lb3V0PTEpKSAgICAgICAgICAjIHJhaXNlcyBUaW1lb3V0RXJyb3IKKyAgICAgICAgICAgaW1wb3J0IHRpbWUKKyAgICAgICAgICAgcmVzdWx0ID0gcG9vbC5hcHBseV9hc3luYyh0aW1lLnNsZWVwLCAoMTAsKSkKKyAgICAgICAgICAgcHJpbnQocmVzdWx0LmdldCh0aW1lb3V0PTEpKSAgICAgICAgIyByYWlzZXMgVGltZW91dEVycm9yCiAKIAogLi4gX211bHRpcHJvY2Vzc2luZy1saXN0ZW5lcnMtY2xpZW50czoKQEAgLTE3MzcsOCArMTgzNCw5IEBACiAKIEhvd2V2ZXIsIHRoZSA6bW9kOmBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbmAgbW9kdWxlIGFsbG93cyBzb21lIGV4dHJhCiBmbGV4aWJpbGl0eS4gIEl0IGJhc2ljYWxseSBnaXZlcyBhIGhpZ2ggbGV2ZWwgbWVzc2FnZSBvcmllbnRlZCBBUEkgZm9yIGRlYWxpbmcKLXdpdGggc29ja2V0cyBvciBXaW5kb3dzIG5hbWVkIHBpcGVzLCBhbmQgYWxzbyBoYXMgc3VwcG9ydCBmb3IgKmRpZ2VzdAotYXV0aGVudGljYXRpb24qIHVzaW5nIHRoZSA6bW9kOmBobWFjYCBtb2R1bGUuCit3aXRoIHNvY2tldHMgb3IgV2luZG93cyBuYW1lZCBwaXBlcy4gIEl0IGFsc28gaGFzIHN1cHBvcnQgZm9yICpkaWdlc3QKK2F1dGhlbnRpY2F0aW9uKiB1c2luZyB0aGUgOm1vZDpgaG1hY2AgbW9kdWxlLCBhbmQgZm9yIHBvbGxpbmcKK211bHRpcGxlIGNvbm5lY3Rpb25zIGF0IHRoZSBzYW1lIHRpbWUuCiAKIAogLi4gZnVuY3Rpb246OiBkZWxpdmVyX2NoYWxsZW5nZShjb25uZWN0aW9uLCBhdXRoa2V5KQpAQCAtMTc0OCwxNSArMTg0NiwxNSBAQAogCiAgICBJZiB0aGUgcmVwbHkgbWF0Y2hlcyB0aGUgZGlnZXN0IG9mIHRoZSBtZXNzYWdlIHVzaW5nICphdXRoa2V5KiBhcyB0aGUga2V5CiAgICB0aGVuIGEgd2VsY29tZSBtZXNzYWdlIGlzIHNlbnQgdG8gdGhlIG90aGVyIGVuZCBvZiB0aGUgY29ubmVjdGlvbi4gIE90aGVyd2lzZQotICAgOmV4YzpgQXV0aGVudGljYXRpb25FcnJvcmAgaXMgcmFpc2VkLgorICAgOmV4Yzpgfm11bHRpcHJvY2Vzc2luZy5BdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuCiAKIC4uIGZ1bmN0aW9uOjogYW5zd2VyQ2hhbGxlbmdlKGNvbm5lY3Rpb24sIGF1dGhrZXkpCiAKICAgIFJlY2VpdmUgYSBtZXNzYWdlLCBjYWxjdWxhdGUgdGhlIGRpZ2VzdCBvZiB0aGUgbWVzc2FnZSB1c2luZyAqYXV0aGtleSogYXMgdGhlCiAgICBrZXksIGFuZCB0aGVuIHNlbmQgdGhlIGRpZ2VzdCBiYWNrLgogCi0gICBJZiBhIHdlbGNvbWUgbWVzc2FnZSBpcyBub3QgcmVjZWl2ZWQsIHRoZW4gOmV4YzpgQXV0aGVudGljYXRpb25FcnJvcmAgaXMKLSAgIHJhaXNlZC4KKyAgIElmIGEgd2VsY29tZSBtZXNzYWdlIGlzIG5vdCByZWNlaXZlZCwgdGhlbgorICAgOmV4Yzpgfm11bHRpcHJvY2Vzc2luZy5BdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuCiAKIC4uIGZ1bmN0aW9uOjogQ2xpZW50KGFkZHJlc3NbLCBmYW1pbHlbLCBhdXRoZW50aWNhdGVbLCBhdXRoa2V5XV1dKQogCkBAIC0xNzcwLDcgKzE4NjgsOCBAQAogICAgSWYgKmF1dGhlbnRpY2F0ZSogaXMgYGBUcnVlYGAgb3IgKmF1dGhrZXkqIGlzIGEgYnl0ZSBzdHJpbmcgdGhlbiBkaWdlc3QKICAgIGF1dGhlbnRpY2F0aW9uIGlzIHVzZWQuICBUaGUga2V5IHVzZWQgZm9yIGF1dGhlbnRpY2F0aW9uIHdpbGwgYmUgZWl0aGVyCiAgICAqYXV0aGtleSogb3IgYGBjdXJyZW50X3Byb2Nlc3MoKS5hdXRoa2V5YGAgaWYgKmF1dGhrZXkqIGlzIGBgTm9uZWBgLgotICAgSWYgYXV0aGVudGljYXRpb24gZmFpbHMgdGhlbiA6ZXhjOmBBdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuICBTZWUKKyAgIElmIGF1dGhlbnRpY2F0aW9uIGZhaWxzIHRoZW4KKyAgIDpleGM6YH5tdWx0aXByb2Nlc3NpbmcuQXV0aGVudGljYXRpb25FcnJvcmAgaXMgcmFpc2VkLiAgU2VlCiAgICA6cmVmOmBtdWx0aXByb2Nlc3NpbmctYXV0aC1rZXlzYC4KIAogLi4gY2xhc3M6OiBMaXN0ZW5lcihbYWRkcmVzc1ssIGZhbWlseVssIGJhY2tsb2dbLCBhdXRoZW50aWNhdGVbLCBhdXRoa2V5XV1dXV0pCkBAIC0xODExLDEzICsxOTEwLDE1IEBACiAgICBgYGN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXlgYCBpcyB1c2VkIGFzIHRoZSBhdXRoZW50aWNhdGlvbiBrZXkuICBJZgogICAgKmF1dGhrZXkqIGlzIGBgTm9uZWBgIGFuZCAqYXV0aGVudGljYXRlKiBpcyBgYEZhbHNlYGAgdGhlbiBubwogICAgYXV0aGVudGljYXRpb24gaXMgZG9uZS4gIElmIGF1dGhlbnRpY2F0aW9uIGZhaWxzIHRoZW4KLSAgIDpleGM6YEF1dGhlbnRpY2F0aW9uRXJyb3JgIGlzIHJhaXNlZC4gIFNlZSA6cmVmOmBtdWx0aXByb2Nlc3NpbmctYXV0aC1rZXlzYC4KKyAgIDpleGM6YH5tdWx0aXByb2Nlc3NpbmcuQXV0aGVudGljYXRpb25FcnJvcmAgaXMgcmFpc2VkLgorICAgU2VlIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1hdXRoLWtleXNgLgogCiAgICAuLiBtZXRob2Q6OiBhY2NlcHQoKQogCiAgICAgICBBY2NlcHQgYSBjb25uZWN0aW9uIG9uIHRoZSBib3VuZCBzb2NrZXQgb3IgbmFtZWQgcGlwZSBvZiB0aGUgbGlzdGVuZXIKICAgICAgIG9iamVjdCBhbmQgcmV0dXJuIGEgOmNsYXNzOmBDb25uZWN0aW9uYCBvYmplY3QuICBJZiBhdXRoZW50aWNhdGlvbiBpcwotICAgICAgYXR0ZW1wdGVkIGFuZCBmYWlscywgdGhlbiA6ZXhjOmBBdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuCisgICAgICBhdHRlbXB0ZWQgYW5kIGZhaWxzLCB0aGVuCisgICAgICA6ZXhjOmB+bXVsdGlwcm9jZXNzaW5nLkF1dGhlbnRpY2F0aW9uRXJyb3JgIGlzIHJhaXNlZC4KIAogICAgLi4gbWV0aG9kOjogY2xvc2UoKQogCkBAIC0xODM2LDEyICsxOTM3LDQ0IEBACiAgICAgICBUaGUgYWRkcmVzcyBmcm9tIHdoaWNoIHRoZSBsYXN0IGFjY2VwdGVkIGNvbm5lY3Rpb24gY2FtZS4gIElmIHRoaXMgaXMKICAgICAgIHVuYXZhaWxhYmxlIHRoZW4gaXQgaXMgYGBOb25lYGAuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgTGlzdGVuZXIgb2JqZWN0cyBub3cgc3VwcG9ydCB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIC0tIHNlZQorICAgICAgOnJlZjpgdHlwZWNvbnRleHRtYW5hZ2VyYC4gIDptZXRoOmBfX2VudGVyX19gIHJldHVybnMgdGhlCisgICAgICBsaXN0ZW5lciBvYmplY3QsIGFuZCA6bWV0aDpgX19leGl0X19gIGNhbGxzIDptZXRoOmBjbG9zZWAuCiAKLVRoZSBtb2R1bGUgZGVmaW5lcyB0d28gZXhjZXB0aW9uczoKKy4uIGZ1bmN0aW9uOjogd2FpdChvYmplY3RfbGlzdCwgdGltZW91dD1Ob25lKQogCi0uLiBleGNlcHRpb246OiBBdXRoZW50aWNhdGlvbkVycm9yCisgICBXYWl0IHRpbGwgYW4gb2JqZWN0IGluICpvYmplY3RfbGlzdCogaXMgcmVhZHkuICBSZXR1cm5zIHRoZSBsaXN0IG9mCisgICB0aG9zZSBvYmplY3RzIGluICpvYmplY3RfbGlzdCogd2hpY2ggYXJlIHJlYWR5LiAgSWYgKnRpbWVvdXQqIGlzIGEKKyAgIGZsb2F0IHRoZW4gdGhlIGNhbGwgYmxvY2tzIGZvciBhdCBtb3N0IHRoYXQgbWFueSBzZWNvbmRzLiAgSWYKKyAgICp0aW1lb3V0KiBpcyBgYE5vbmVgYCB0aGVuIGl0IHdpbGwgYmxvY2sgZm9yIGFuIHVubGltaXRlZCBwZXJpb2QuCisgICBBIG5lZ2F0aXZlIHRpbWVvdXQgaXMgZXF1aXZhbGVudCB0byBhIHplcm8gdGltZW91dC4KIAotICAgRXhjZXB0aW9uIHJhaXNlZCB3aGVuIHRoZXJlIGlzIGFuIGF1dGhlbnRpY2F0aW9uIGVycm9yLgorICAgRm9yIGJvdGggVW5peCBhbmQgV2luZG93cywgYW4gb2JqZWN0IGNhbiBhcHBlYXIgaW4gKm9iamVjdF9saXN0KiBpZgorICAgaXQgaXMKKworICAgKiBhIHJlYWRhYmxlIDpjbGFzczpgfm11bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uYCBvYmplY3Q7CisgICAqIGEgY29ubmVjdGVkIGFuZCByZWFkYWJsZSA6Y2xhc3M6YHNvY2tldC5zb2NrZXRgIG9iamVjdDsgb3IKKyAgICogdGhlIDphdHRyOmB+bXVsdGlwcm9jZXNzaW5nLlByb2Nlc3Muc2VudGluZWxgIGF0dHJpYnV0ZSBvZiBhCisgICAgIDpjbGFzczpgfm11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzYCBvYmplY3QuCisKKyAgIEEgY29ubmVjdGlvbiBvciBzb2NrZXQgb2JqZWN0IGlzIHJlYWR5IHdoZW4gdGhlcmUgaXMgZGF0YSBhdmFpbGFibGUKKyAgIHRvIGJlIHJlYWQgZnJvbSBpdCwgb3IgdGhlIG90aGVyIGVuZCBoYXMgYmVlbiBjbG9zZWQuCisKKyAgICoqVW5peCoqOiBgYHdhaXQob2JqZWN0X2xpc3QsIHRpbWVvdXQpYGAgYWxtb3N0IGVxdWl2YWxlbnQKKyAgIGBgc2VsZWN0LnNlbGVjdChvYmplY3RfbGlzdCwgW10sIFtdLCB0aW1lb3V0KWBgLiAgVGhlIGRpZmZlcmVuY2UgaXMKKyAgIHRoYXQsIGlmIDpmdW5jOmBzZWxlY3Quc2VsZWN0YCBpcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCwgaXQgY2FuCisgICByYWlzZSA6ZXhjOmBPU0Vycm9yYCB3aXRoIGFuIGVycm9yIG51bWJlciBvZiBgYEVJTlRSYGAsIHdoZXJlYXMKKyAgIDpmdW5jOmB3YWl0YCB3aWxsIG5vdC4KKworICAgKipXaW5kb3dzKio6IEFuIGl0ZW0gaW4gKm9iamVjdF9saXN0KiBtdXN0IGVpdGhlciBiZSBhbiBpbnRlZ2VyCisgICBoYW5kbGUgd2hpY2ggaXMgd2FpdGFibGUgKGFjY29yZGluZyB0byB0aGUgZGVmaW5pdGlvbiB1c2VkIGJ5IHRoZQorICAgZG9jdW1lbnRhdGlvbiBvZiB0aGUgV2luMzIgZnVuY3Rpb24gYGBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKClgYCkKKyAgIG9yIGl0IGNhbiBiZSBhbiBvYmplY3Qgd2l0aCBhIDptZXRoOmBmaWxlbm9gIG1ldGhvZCB3aGljaCByZXR1cm5zIGEKKyAgIHNvY2tldCBoYW5kbGUgb3IgcGlwZSBoYW5kbGUuICAoTm90ZSB0aGF0IHBpcGUgaGFuZGxlcyBhbmQgc29ja2V0CisgICBoYW5kbGVzIGFyZSAqKm5vdCoqIHdhaXRhYmxlIGhhbmRsZXMuKQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCiAqKkV4YW1wbGVzKioKQEAgLTE4NTQsMTkgKzE5ODcsMTYgQEAKICAgIGZyb20gYXJyYXkgaW1wb3J0IGFycmF5CiAKICAgIGFkZHJlc3MgPSAoJ2xvY2FsaG9zdCcsIDYwMDApICAgICAjIGZhbWlseSBpcyBkZWR1Y2VkIHRvIGJlICdBRl9JTkVUJwotICAgbGlzdGVuZXIgPSBMaXN0ZW5lcihhZGRyZXNzLCBhdXRoa2V5PWInc2VjcmV0IHBhc3N3b3JkJykKIAotICAgY29ubiA9IGxpc3RlbmVyLmFjY2VwdCgpCi0gICBwcmludCgnY29ubmVjdGlvbiBhY2NlcHRlZCBmcm9tJywgbGlzdGVuZXIubGFzdF9hY2NlcHRlZCkKKyAgIHdpdGggTGlzdGVuZXIoYWRkcmVzcywgYXV0aGtleT1iJ3NlY3JldCBwYXNzd29yZCcpIGFzIGxpc3RlbmVyOgorICAgICAgIHdpdGggbGlzdGVuZXIuYWNjZXB0KCkgYXMgY29ubjoKKyAgICAgICAgICAgcHJpbnQoJ2Nvbm5lY3Rpb24gYWNjZXB0ZWQgZnJvbScsIGxpc3RlbmVyLmxhc3RfYWNjZXB0ZWQpCiAKLSAgIGNvbm4uc2VuZChbMi4yNSwgTm9uZSwgJ2p1bmsnLCBmbG9hdF0pCisgICAgICAgICAgIGNvbm4uc2VuZChbMi4yNSwgTm9uZSwgJ2p1bmsnLCBmbG9hdF0pCiAKLSAgIGNvbm4uc2VuZF9ieXRlcyhiJ2hlbGxvJykKKyAgICAgICAgICAgY29ubi5zZW5kX2J5dGVzKGInaGVsbG8nKQogCi0gICBjb25uLnNlbmRfYnl0ZXMoYXJyYXkoJ2knLCBbNDIsIDE3MjldKSkKLQotICAgY29ubi5jbG9zZSgpCi0gICBsaXN0ZW5lci5jbG9zZSgpCisgICAgICAgICAgIGNvbm4uc2VuZF9ieXRlcyhhcnJheSgnaScsIFs0MiwgMTcyOV0pKQogCiBUaGUgZm9sbG93aW5nIGNvZGUgY29ubmVjdHMgdG8gdGhlIHNlcnZlciBhbmQgcmVjZWl2ZXMgc29tZSBkYXRhIGZyb20gdGhlCiBzZXJ2ZXI6OgpAQCAtMTg3NSwxNyArMjAwNSw1MCBAQAogICAgZnJvbSBhcnJheSBpbXBvcnQgYXJyYXkKIAogICAgYWRkcmVzcyA9ICgnbG9jYWxob3N0JywgNjAwMCkKLSAgIGNvbm4gPSBDbGllbnQoYWRkcmVzcywgYXV0aGtleT1iJ3NlY3JldCBwYXNzd29yZCcpCiAKLSAgIHByaW50KGNvbm4ucmVjdigpKSAgICAgICAgICAgICAgICAgICMgPT4gWzIuMjUsIE5vbmUsICdqdW5rJywgZmxvYXRdCisgICB3aXRoIENsaWVudChhZGRyZXNzLCBhdXRoa2V5PWInc2VjcmV0IHBhc3N3b3JkJykgYXMgY29ubjoKKyAgICAgICBwcmludChjb25uLnJlY3YoKSkgICAgICAgICAgICAgICAgICAjID0+IFsyLjI1LCBOb25lLCAnanVuaycsIGZsb2F0XQogCi0gICBwcmludChjb25uLnJlY3ZfYnl0ZXMoKSkgICAgICAgICAgICAjID0+ICdoZWxsbycKKyAgICAgICBwcmludChjb25uLnJlY3ZfYnl0ZXMoKSkgICAgICAgICAgICAjID0+ICdoZWxsbycKIAotICAgYXJyID0gYXJyYXkoJ2knLCBbMCwgMCwgMCwgMCwgMF0pCi0gICBwcmludChjb25uLnJlY3ZfYnl0ZXNfaW50byhhcnIpKSAgICAjID0+IDgKLSAgIHByaW50KGFycikgICAgICAgICAgICAgICAgICAgICAgICAgICMgPT4gYXJyYXkoJ2knLCBbNDIsIDE3MjksIDAsIDAsIDBdKQorICAgICAgIGFyciA9IGFycmF5KCdpJywgWzAsIDAsIDAsIDAsIDBdKQorICAgICAgIHByaW50KGNvbm4ucmVjdl9ieXRlc19pbnRvKGFycikpICAgICMgPT4gOAorICAgICAgIHByaW50KGFycikgICAgICAgICAgICAgICAgICAgICAgICAgICMgPT4gYXJyYXkoJ2knLCBbNDIsIDE3MjksIDAsIDAsIDBdKQogCi0gICBjb25uLmNsb3NlKCkKK1RoZSBmb2xsb3dpbmcgY29kZSB1c2VzIDpmdW5jOmB+bXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24ud2FpdGAgdG8KK3dhaXQgZm9yIG1lc3NhZ2VzIGZyb20gbXVsdGlwbGUgcHJvY2Vzc2VzIGF0IG9uY2U6OgorCisgICBpbXBvcnQgdGltZSwgcmFuZG9tCisgICBmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUHJvY2VzcywgUGlwZSwgY3VycmVudF9wcm9jZXNzCisgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCB3YWl0CisKKyAgIGRlZiBmb28odyk6CisgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICAgICB3LnNlbmQoKGksIGN1cnJlbnRfcHJvY2VzcygpLm5hbWUpKQorICAgICAgIHcuY2xvc2UoKQorCisgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgICAgIHJlYWRlcnMgPSBbXQorCisgICAgICAgZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgICAgICAgIHIsIHcgPSBQaXBlKGR1cGxleD1GYWxzZSkKKyAgICAgICAgICAgcmVhZGVycy5hcHBlbmQocikKKyAgICAgICAgICAgcCA9IFByb2Nlc3ModGFyZ2V0PWZvbywgYXJncz0odywpKQorICAgICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgICAgIyBXZSBjbG9zZSB0aGUgd3JpdGFibGUgZW5kIG9mIHRoZSBwaXBlIG5vdyB0byBiZSBzdXJlIHRoYXQKKyAgICAgICAgICAgIyBwIGlzIHRoZSBvbmx5IHByb2Nlc3Mgd2hpY2ggb3ducyBhIGhhbmRsZSBmb3IgaXQuICBUaGlzCisgICAgICAgICAgICMgZW5zdXJlcyB0aGF0IHdoZW4gcCBjbG9zZXMgaXRzIGhhbmRsZSBmb3IgdGhlIHdyaXRhYmxlIGVuZCwKKyAgICAgICAgICAgIyB3YWl0KCkgd2lsbCBwcm9tcHRseSByZXBvcnQgdGhlIHJlYWRhYmxlIGVuZCBhcyBiZWluZyByZWFkeS4KKyAgICAgICAgICAgdy5jbG9zZSgpCisKKyAgICAgICB3aGlsZSByZWFkZXJzOgorICAgICAgICAgICBmb3IgciBpbiB3YWl0KHJlYWRlcnMpOgorICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgIG1zZyA9IHIucmVjdigpCisgICAgICAgICAgICAgICBleGNlcHQgRU9GRXJyb3I6CisgICAgICAgICAgICAgICAgICAgcmVhZGVycy5yZW1vdmUocikKKyAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgcHJpbnQobXNnKQogCiAKIC4uIF9tdWx0aXByb2Nlc3NpbmctYWRkcmVzcy1mb3JtYXRzOgpAQCAtMjA0Niw3ICsyMjA5LDcgQEAKIAogICAgIEl0IGlzIHByb2JhYmx5IGJlc3QgdG8gc3RpY2sgdG8gdXNpbmcgcXVldWVzIG9yIHBpcGVzIGZvciBjb21tdW5pY2F0aW9uCiAgICAgYmV0d2VlbiBwcm9jZXNzZXMgcmF0aGVyIHRoYW4gdXNpbmcgdGhlIGxvd2VyIGxldmVsIHN5bmNocm9uaXphdGlvbgotICAgIHByaW1pdGl2ZXMgZnJvbSB0aGUgOm1vZDpgdGhyZWFkaW5nYCBtb2R1bGUuCisgICAgcHJpbWl0aXZlcy4KIAogUGlja2xhYmlsaXR5CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L25udHBsaWIucnN0IGIvRG9jL2xpYnJhcnkvbm50cGxpYi5yc3QKaW5kZXggZWY4YjliNS4uMWQxYWE0MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbm50cGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbm50cGxpYi5yc3QKQEAgLTcwLDEwICs3MCwyMyBAQAogICAgY29ubmVjdGluZyB0byBhbiBOTlRQIHNlcnZlciBvbiB0aGUgbG9jYWwgbWFjaGluZSBhbmQgaW50ZW5kIHRvIGNhbGwKICAgIHJlYWRlci1zcGVjaWZpYyBjb21tYW5kcywgc3VjaCBhcyBgYGdyb3VwYGAuICBJZiB5b3UgZ2V0IHVuZXhwZWN0ZWQKICAgIDpleGM6YE5OVFBQZXJtYW5lbnRFcnJvcmBcIHMsIHlvdSBtaWdodCBuZWVkIHRvIHNldCAqcmVhZGVybW9kZSouCisgICA6Y2xhc3M6YE5OVFBgIGNsYXNzIHN1cHBvcnRzIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHRvCisgICB1bmNvbmRpdGlvbmFsbHkgY29uc3VtZSA6ZXhjOmBzb2NrZXQuZXJyb3JgIGV4Y2VwdGlvbnMgYW5kIHRvIGNsb3NlIHRoZSBOTlRQCisgICBjb25uZWN0aW9uIHdoZW4gZG9uZS4gSGVyZSBpcyBhIHNhbXBsZSBvbiBob3cgdXNpbmcgaXQ6CisKKyAgICA+Pj4gZnJvbSBubnRwbGliIGltcG9ydCBOTlRQCisgICAgPj4+IHdpdGggTk5UUCgnbmV3cy5nbWFuZS5vcmcnKSBhcyBuOgorICAgIC4uLiAgICAgbi5ncm91cCgnZ21hbmUuY29tcC5weXRob24uY29tbWl0dGVycycpCisgICAgLi4uCisgICAgKCcyMTEgMTc1NSAxIDE3NTUgZ21hbmUuY29tcC5weXRob24uY29tbWl0dGVycycsIDE3NTUsIDEsIDE3NTUsICdnbWFuZS5jb21wLnB5dGhvbi5jb21taXR0ZXJzJykKKyAgICA+Pj4KKwogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgKnVzZW5ldHJjKiBpcyBub3cgRmFsc2UgYnkgZGVmYXVsdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgZm9yIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHdhcyBhZGRlZC4KIAogLi4gY2xhc3M6OiBOTlRQX1NTTChob3N0LCBwb3J0PTU2MywgdXNlcj1Ob25lLCBwYXNzd29yZD1Ob25lLCBzc2xfY29udGV4dD1Ob25lLCByZWFkZXJtb2RlPU5vbmUsIHVzZW5ldHJjPUZhbHNlLCBbdGltZW91dF0pCiAKQEAgLTUwNCw2ICs1MTcsOSBAQAogICAgYXJ0aWNsZSB3aXRoIG1lc3NhZ2UgSUQgKmlkKi4gIE1vc3Qgb2YgdGhlIHRpbWUsIHRoaXMgZXh0ZW5zaW9uIGlzIG5vdAogICAgZW5hYmxlZCBieSBOTlRQIHNlcnZlciBhZG1pbmlzdHJhdG9ycy4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVGhlIFhQQVRIIGV4dGVuc2lvbiBpcyBub3QgYWN0aXZlbHkgdXNlZC4KKwogCiAuLiBYWFggZGVwcmVjYXRlZDoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbnVtZXJpYy5yc3QgYi9Eb2MvbGlicmFyeS9udW1lcmljLnJzdAppbmRleCBiYTIyY2I2Li4yNzMyYTg0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9udW1lcmljLnJzdAorKysgYi9Eb2MvbGlicmFyeS9udW1lcmljLnJzdApAQCAtOCw5ICs4LDkgQEAKIFRoZSBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgcHJvdmlkZSBudW1lcmljIGFuZCBtYXRoLXJlbGF0ZWQgZnVuY3Rpb25zCiBhbmQgZGF0YSB0eXBlcy4gVGhlIDptb2Q6YG51bWJlcnNgIG1vZHVsZSBkZWZpbmVzIGFuIGFic3RyYWN0IGhpZXJhcmNoeSBvZgogbnVtZXJpYyB0eXBlcy4gVGhlIDptb2Q6YG1hdGhgIGFuZCA6bW9kOmBjbWF0aGAgbW9kdWxlcyBjb250YWluIHZhcmlvdXMKLW1hdGhlbWF0aWNhbCBmdW5jdGlvbnMgZm9yIGZsb2F0aW5nLXBvaW50IGFuZCBjb21wbGV4IG51bWJlcnMuIEZvciB1c2VycyBtb3JlCi1pbnRlcmVzdGVkIGluIGRlY2ltYWwgYWNjdXJhY3kgdGhhbiBpbiBzcGVlZCwgdGhlIDptb2Q6YGRlY2ltYWxgIG1vZHVsZSBzdXBwb3J0cwotZXhhY3QgcmVwcmVzZW50YXRpb25zIG9mIGRlY2ltYWwgbnVtYmVycy4KK21hdGhlbWF0aWNhbCBmdW5jdGlvbnMgZm9yIGZsb2F0aW5nLXBvaW50IGFuZCBjb21wbGV4IG51bWJlcnMuIFRoZSA6bW9kOmBkZWNpbWFsYAorbW9kdWxlIHN1cHBvcnRzIGV4YWN0IHJlcHJlc2VudGF0aW9ucyBvZiBkZWNpbWFsIG51bWJlcnMsIHVzaW5nIGFyYml0cmFyeSBwcmVjaXNpb24KK2FyaXRobWV0aWMuCiAKIFRoZSBmb2xsb3dpbmcgbW9kdWxlcyBhcmUgZG9jdW1lbnRlZCBpbiB0aGlzIGNoYXB0ZXI6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L29zLnBhdGgucnN0IGIvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKaW5kZXggMzVkNWUxNi4uMzZhNjFhNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKQEAgLTc3LDExICs3NywxNiBAQAogCiAuLiBmdW5jdGlvbjo6IGV4aXN0cyhwYXRoKQogCi0gICBSZXR1cm4gYGBUcnVlYGAgaWYgKnBhdGgqIHJlZmVycyB0byBhbiBleGlzdGluZyBwYXRoLiAgUmV0dXJucyBgYEZhbHNlYGAgZm9yCi0gICBicm9rZW4gc3ltYm9saWMgbGlua3MuIE9uIHNvbWUgcGxhdGZvcm1zLCB0aGlzIGZ1bmN0aW9uIG1heSByZXR1cm4gYGBGYWxzZWBgIGlmCi0gICBwZXJtaXNzaW9uIGlzIG5vdCBncmFudGVkIHRvIGV4ZWN1dGUgOmZ1bmM6YG9zLnN0YXRgIG9uIHRoZSByZXF1ZXN0ZWQgZmlsZSwgZXZlbgorICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpwYXRoKiByZWZlcnMgdG8gYW4gZXhpc3RpbmcgcGF0aCBvciBhbiBvcGVuCisgICBmaWxlIGRlc2NyaXB0b3IuICBSZXR1cm5zIGBgRmFsc2VgYCBmb3IgYnJva2VuIHN5bWJvbGljIGxpbmtzLiAgT24KKyAgIHNvbWUgcGxhdGZvcm1zLCB0aGlzIGZ1bmN0aW9uIG1heSByZXR1cm4gYGBGYWxzZWBgIGlmIHBlcm1pc3Npb24gaXMKKyAgIG5vdCBncmFudGVkIHRvIGV4ZWN1dGUgOmZ1bmM6YG9zLnN0YXRgIG9uIHRoZSByZXF1ZXN0ZWQgZmlsZSwgZXZlbgogICAgaWYgdGhlICpwYXRoKiBwaHlzaWNhbGx5IGV4aXN0cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICpwYXRoKiBjYW4gbm93IGJlIGFuIGludGVnZXI6IGBgVHJ1ZWBgIGlzIHJldHVybmVkIGlmIGl0IGlzIGFuCisgICAgICAgb3BlbiBmaWxlIGRlc2NyaXB0b3IsIGBgRmFsc2VgYCBvdGhlcndpc2UuCisKIAogLi4gZnVuY3Rpb246OiBsZXhpc3RzKHBhdGgpCiAKQEAgLTEyNiw3ICsxMzEsNyBAQAogCiAgICBSZXR1cm4gdGhlIHRpbWUgb2YgbGFzdCBhY2Nlc3Mgb2YgKnBhdGgqLiAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIG51bWJlciBnaXZpbmcKICAgIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2ggKHNlZSB0aGUgIDptb2Q6YHRpbWVgIG1vZHVsZSkuICBSYWlzZQotICAgOmV4Yzpgb3MuZXJyb3JgIGlmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0IG9yIGlzIGluYWNjZXNzaWJsZS4KKyAgIDpleGM6YE9TRXJyb3JgIGlmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0IG9yIGlzIGluYWNjZXNzaWJsZS4KIAogICAgSWYgOmZ1bmM6YG9zLnN0YXRfZmxvYXRfdGltZXNgIHJldHVybnMgVHJ1ZSwgdGhlIHJlc3VsdCBpcyBhIGZsb2F0aW5nIHBvaW50CiAgICBudW1iZXIuCkBAIC0xMzYsNyArMTQxLDcgQEAKIAogICAgUmV0dXJuIHRoZSB0aW1lIG9mIGxhc3QgbW9kaWZpY2F0aW9uIG9mICpwYXRoKi4gIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBudW1iZXIKICAgIGdpdmluZyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChzZWUgdGhlICA6bW9kOmB0aW1lYCBtb2R1bGUpLgotICAgUmFpc2UgOmV4Yzpgb3MuZXJyb3JgIGlmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0IG9yIGlzIGluYWNjZXNzaWJsZS4KKyAgIFJhaXNlIDpleGM6YE9TRXJyb3JgIGlmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0IG9yIGlzIGluYWNjZXNzaWJsZS4KIAogICAgSWYgOmZ1bmM6YG9zLnN0YXRfZmxvYXRfdGltZXNgIHJldHVybnMgVHJ1ZSwgdGhlIHJlc3VsdCBpcyBhIGZsb2F0aW5nIHBvaW50CiAgICBudW1iZXIuCkBAIC0xNDcsMTMgKzE1MiwxMyBAQAogICAgUmV0dXJuIHRoZSBzeXN0ZW0ncyBjdGltZSB3aGljaCwgb24gc29tZSBzeXN0ZW1zIChsaWtlIFVuaXgpIGlzIHRoZSB0aW1lIG9mIHRoZQogICAgbGFzdCBjaGFuZ2UsIGFuZCwgb24gb3RoZXJzIChsaWtlIFdpbmRvd3MpLCBpcyB0aGUgY3JlYXRpb24gdGltZSBmb3IgKnBhdGgqLgogICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIG51bWJlciBnaXZpbmcgdGhlIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaCAoc2VlCi0gICB0aGUgIDptb2Q6YHRpbWVgIG1vZHVsZSkuICBSYWlzZSA6ZXhjOmBvcy5lcnJvcmAgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3Qgb3IKKyAgIHRoZSAgOm1vZDpgdGltZWAgbW9kdWxlKS4gIFJhaXNlIDpleGM6YE9TRXJyb3JgIGlmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0IG9yCiAgICBpcyBpbmFjY2Vzc2libGUuCiAKIAogLi4gZnVuY3Rpb246OiBnZXRzaXplKHBhdGgpCiAKLSAgIFJldHVybiB0aGUgc2l6ZSwgaW4gYnl0ZXMsIG9mICpwYXRoKi4gIFJhaXNlIDpleGM6YG9zLmVycm9yYCBpZiB0aGUgZmlsZSBkb2VzCisgICBSZXR1cm4gdGhlIHNpemUsIGluIGJ5dGVzLCBvZiAqcGF0aCouICBSYWlzZSA6ZXhjOmBPU0Vycm9yYCBpZiB0aGUgZmlsZSBkb2VzCiAgICBub3QgZXhpc3Qgb3IgaXMgaW5hY2Nlc3NpYmxlLgogCiAKQEAgLTI2MSw3ICsyNjYsOCBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yIEFkZGVkIFdpbmRvd3Mgc3VwcG9ydC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICBBZGRlZCBXaW5kb3dzIHN1cHBvcnQuCiAKIAogLi4gZnVuY3Rpb246OiBzYW1lc3RhdChzdGF0MSwgc3RhdDIpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9vcy5yc3QgYi9Eb2MvbGlicmFyeS9vcy5yc3QKaW5kZXggYWJhY2QyNC4uZTcwYzg4NiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L29zLnJzdApAQCAtOTYsNiArOTYsMTMgQEAKIHByb2Nlc3MgYW5kIHVzZXIuCiAKIAorLi4gZnVuY3Rpb246OiBjdGVybWlkKCkKKworICAgUmV0dXJuIHRoZSBmaWxlbmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb250cm9sbGluZyB0ZXJtaW5hbCBvZiB0aGUgcHJvY2Vzcy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisKIC4uIGRhdGE6OiBlbnZpcm9uCiAKICAgIEEgOnRlcm06YG1hcHBpbmdgIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHN0cmluZyBlbnZpcm9ubWVudC4gRm9yIGV4YW1wbGUsCkBAIC0xNzcsNiArMTg0LDI4IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCisuLiBmdW5jdGlvbjo6IGdldGVudihrZXksIGRlZmF1bHQ9Tm9uZSkKKworICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgKmtleSogaWYgaXQgZXhpc3RzLCBvcgorICAgKmRlZmF1bHQqIGlmIGl0IGRvZXNuJ3QuICprZXkqLCAqZGVmYXVsdCogYW5kIHRoZSByZXN1bHQgYXJlIHN0ci4KKworICAgT24gVW5peCwga2V5cyBhbmQgdmFsdWVzIGFyZSBkZWNvZGVkIHdpdGggOmZ1bmM6YHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmdgCisgICBhbmQgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIuIFVzZSA6ZnVuYzpgb3MuZ2V0ZW52YmAgaWYgeW91CisgICB3b3VsZCBsaWtlIHRvIHVzZSBhIGRpZmZlcmVudCBlbmNvZGluZy4KKworICAgQXZhaWxhYmlsaXR5OiBtb3N0IGZsYXZvcnMgb2YgVW5peCwgV2luZG93cy4KKworCisuLiBmdW5jdGlvbjo6IGdldGVudmIoa2V5LCBkZWZhdWx0PU5vbmUpCisKKyAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlICprZXkqIGlmIGl0IGV4aXN0cywgb3IKKyAgICpkZWZhdWx0KiBpZiBpdCBkb2Vzbid0LiAqa2V5KiwgKmRlZmF1bHQqIGFuZCB0aGUgcmVzdWx0IGFyZSBieXRlcy4KKworICAgQXZhaWxhYmlsaXR5OiBtb3N0IGZsYXZvcnMgb2YgVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisKKwogLi4gZnVuY3Rpb246OiBnZXRfZXhlY19wYXRoKGVudj1Ob25lKQogCiAgICBSZXR1cm5zIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRoYXQgd2lsbCBiZSBzZWFyY2hlZCBmb3IgYSBuYW1lZApAQCAtMTg4LDEzICsyMTcsNiBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAotLi4gZnVuY3Rpb246OiBjdGVybWlkKCkKLQotICAgUmV0dXJuIHRoZSBmaWxlbmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb250cm9sbGluZyB0ZXJtaW5hbCBvZiB0aGUgcHJvY2Vzcy4KLQotICAgQXZhaWxhYmlsaXR5OiBVbml4LgotCi0KIC4uIGZ1bmN0aW9uOjogZ2V0ZWdpZCgpCiAKICAgIFJldHVybiB0aGUgZWZmZWN0aXZlIGdyb3VwIGlkIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MuICBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZQpAQCAtMjIxLDYgKzI0MywxNyBAQAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKKy4uIGZ1bmN0aW9uOjogZ2V0Z3JvdXBsaXN0KHVzZXIsIGdyb3VwKQorCisgICBSZXR1cm4gbGlzdCBvZiBncm91cCBpZHMgdGhhdCAqdXNlciogYmVsb25ncyB0by4gSWYgKmdyb3VwKiBpcyBub3QgaW4gdGhlCisgICBsaXN0LCBpdCBpcyBpbmNsdWRlZDsgdHlwaWNhbGx5LCAqZ3JvdXAqIGlzIHNwZWNpZmllZCBhcyB0aGUgZ3JvdXAgSUQKKyAgIGZpZWxkIGZyb20gdGhlIHBhc3N3b3JkIHJlY29yZCBmb3IgKnVzZXIqLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogZ2V0Z3JvdXBzKCkKIAogICAgUmV0dXJuIGxpc3Qgb2Ygc3VwcGxlbWVudGFsIGdyb3VwIGlkcyBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgcHJvY2Vzcy4KQEAgLTI0MiwxNyArMjc1LDYgQEAKICAgICAgIG9idGFpbmVkIHdpdGggOmZ1bmM6YHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcmAuCiAKIAotLi4gZnVuY3Rpb246OiBpbml0Z3JvdXBzKHVzZXJuYW1lLCBnaWQpCi0KLSAgIENhbGwgdGhlIHN5c3RlbSBpbml0Z3JvdXBzKCkgdG8gaW5pdGlhbGl6ZSB0aGUgZ3JvdXAgYWNjZXNzIGxpc3Qgd2l0aCBhbGwgb2YKLSAgIHRoZSBncm91cHMgb2Ygd2hpY2ggdGhlIHNwZWNpZmllZCB1c2VybmFtZSBpcyBhIG1lbWJlciwgcGx1cyB0aGUgc3BlY2lmaWVkCi0gICBncm91cCBpZC4KLQotICAgQXZhaWxhYmlsaXR5OiBVbml4LgotCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLQotCiAuLiBmdW5jdGlvbjo6IGdldGxvZ2luKCkKIAogICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSB1c2VyIGxvZ2dlZCBpbiBvbiB0aGUgY29udHJvbGxpbmcgdGVybWluYWwgb2YgdGhlCkBAIC0yOTcsMTEgKzMxOSw0MCBAQAogICAgdGhlIGlkIHJldHVybmVkIGlzIHRoZSBvbmUgb2YgdGhlIGluaXQgcHJvY2VzcyAoMSksIG9uIFdpbmRvd3MgaXQgaXMgc3RpbGwKICAgIHRoZSBzYW1lIGlkLCB3aGljaCBtYXkgYmUgYWxyZWFkeSByZXVzZWQgYnkgYW5vdGhlciBwcm9jZXNzLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MKKyAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIFdpbmRvd3MuCiAKKworLi4gZnVuY3Rpb246OiBnZXRwcmlvcml0eSh3aGljaCwgd2hvKQorCisgICAuLiBpbmRleDo6IHNpbmdsZTogcHJvY2Vzczsgc2NoZWR1bGluZyBwcmlvcml0eQorCisgICBHZXQgcHJvZ3JhbSBzY2hlZHVsaW5nIHByaW9yaXR5LiAgVGhlIHZhbHVlICp3aGljaCogaXMgb25lIG9mCisgICA6Y29uc3Q6YFBSSU9fUFJPQ0VTU2AsIDpjb25zdDpgUFJJT19QR1JQYCwgb3IgOmNvbnN0OmBQUklPX1VTRVJgLCBhbmQgKndobyoKKyAgIGlzIGludGVycHJldGVkIHJlbGF0aXZlIHRvICp3aGljaCogKGEgcHJvY2VzcyBpZGVudGlmaWVyIGZvcgorICAgOmNvbnN0OmBQUklPX1BST0NFU1NgLCBwcm9jZXNzIGdyb3VwIGlkZW50aWZpZXIgZm9yIDpjb25zdDpgUFJJT19QR1JQYCwgYW5kIGEKKyAgIHVzZXIgSUQgZm9yIDpjb25zdDpgUFJJT19VU0VSYCkuICBBIHplcm8gdmFsdWUgZm9yICp3aG8qIGRlbm90ZXMKKyAgIChyZXNwZWN0aXZlbHkpIHRoZSBjYWxsaW5nIHByb2Nlc3MsIHRoZSBwcm9jZXNzIGdyb3VwIG9mIHRoZSBjYWxsaW5nIHByb2Nlc3MsCisgICBvciB0aGUgcmVhbCB1c2VyIElEIG9mIHRoZSBjYWxsaW5nIHByb2Nlc3MuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IFBSSU9fUFJPQ0VTUworICAgICAgICAgIFBSSU9fUEdSUAorICAgICAgICAgIFBSSU9fVVNFUgorCisgICBQYXJhbWV0ZXJzIGZvciB0aGUgOmZ1bmM6YGdldHByaW9yaXR5YCBhbmQgOmZ1bmM6YHNldHByaW9yaXR5YCBmdW5jdGlvbnMuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiBnZXRyZXN1aWQoKQogCiAgICBSZXR1cm4gYSB0dXBsZSAocnVpZCwgZXVpZCwgc3VpZCkgZGVub3RpbmcgdGhlIGN1cnJlbnQgcHJvY2VzcydzCkBAIC0zMzEsMjQgKzM4MiwxMyBAQAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKLS4uIGZ1bmN0aW9uOjogZ2V0ZW52KGtleSwgZGVmYXVsdD1Ob25lKQorLi4gZnVuY3Rpb246OiBpbml0Z3JvdXBzKHVzZXJuYW1lLCBnaWQpCiAKLSAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlICprZXkqIGlmIGl0IGV4aXN0cywgb3IKLSAgICpkZWZhdWx0KiBpZiBpdCBkb2Vzbid0LiAqa2V5KiwgKmRlZmF1bHQqIGFuZCB0aGUgcmVzdWx0IGFyZSBzdHIuCisgICBDYWxsIHRoZSBzeXN0ZW0gaW5pdGdyb3VwcygpIHRvIGluaXRpYWxpemUgdGhlIGdyb3VwIGFjY2VzcyBsaXN0IHdpdGggYWxsIG9mCisgICB0aGUgZ3JvdXBzIG9mIHdoaWNoIHRoZSBzcGVjaWZpZWQgdXNlcm5hbWUgaXMgYSBtZW1iZXIsIHBsdXMgdGhlIHNwZWNpZmllZAorICAgZ3JvdXAgaWQuCiAKLSAgIE9uIFVuaXgsIGtleXMgYW5kIHZhbHVlcyBhcmUgZGVjb2RlZCB3aXRoIDpmdW5jOmBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nYAotICAgYW5kIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBlcnJvciBoYW5kbGVyLiBVc2UgOmZ1bmM6YG9zLmdldGVudmJgIGlmIHlvdQotICAgd291bGQgbGlrZSB0byB1c2UgYSBkaWZmZXJlbnQgZW5jb2RpbmcuCi0KLSAgIEF2YWlsYWJpbGl0eTogbW9zdCBmbGF2b3JzIG9mIFVuaXgsIFdpbmRvd3MuCi0KLQotLi4gZnVuY3Rpb246OiBnZXRlbnZiKGtleSwgZGVmYXVsdD1Ob25lKQotCi0gICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAqa2V5KiBpZiBpdCBleGlzdHMsIG9yCi0gICAqZGVmYXVsdCogaWYgaXQgZG9lc24ndC4gKmtleSosICpkZWZhdWx0KiBhbmQgdGhlIHJlc3VsdCBhcmUgYnl0ZXMuCi0KLSAgIEF2YWlsYWJpbGl0eTogbW9zdCBmbGF2b3JzIG9mIFVuaXguCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCkBAIC00MTAsNyArNDUwLDcgQEAKIAogLi4gZnVuY3Rpb246OiBzZXRwZ3JwKCkKIAotICAgQ2FsbCB0aGUgc3lzdGVtIGNhbGwgOmM6ZnVuYzpgc2V0cGdycGAgb3IgOmM6ZnVuYzpgc2V0cGdycCgwLCAwKWAgZGVwZW5kaW5nIG9uCisgICBDYWxsIHRoZSBzeXN0ZW0gY2FsbCA6YzpmdW5jOmBzZXRwZ3JwYCBvciBgYHNldHBncnAoMCwgMClgYCBkZXBlbmRpbmcgb24KICAgIHdoaWNoIHZlcnNpb24gaXMgaW1wbGVtZW50ZWQgKGlmIGFueSkuICBTZWUgdGhlIFVuaXggbWFudWFsIGZvciB0aGUgc2VtYW50aWNzLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCkBAIC00MjUsNiArNDY1LDI1IEBACiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIAorLi4gZnVuY3Rpb246OiBzZXRwcmlvcml0eSh3aGljaCwgd2hvLCBwcmlvcml0eSkKKworICAgLi4gaW5kZXg6OiBzaW5nbGU6IHByb2Nlc3M7IHNjaGVkdWxpbmcgcHJpb3JpdHkKKworICAgU2V0IHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4gVGhlIHZhbHVlICp3aGljaCogaXMgb25lIG9mCisgICA6Y29uc3Q6YFBSSU9fUFJPQ0VTU2AsIDpjb25zdDpgUFJJT19QR1JQYCwgb3IgOmNvbnN0OmBQUklPX1VTRVJgLCBhbmQgKndobyoKKyAgIGlzIGludGVycHJldGVkIHJlbGF0aXZlIHRvICp3aGljaCogKGEgcHJvY2VzcyBpZGVudGlmaWVyIGZvcgorICAgOmNvbnN0OmBQUklPX1BST0NFU1NgLCBwcm9jZXNzIGdyb3VwIGlkZW50aWZpZXIgZm9yIDpjb25zdDpgUFJJT19QR1JQYCwgYW5kIGEKKyAgIHVzZXIgSUQgZm9yIDpjb25zdDpgUFJJT19VU0VSYCkuIEEgemVybyB2YWx1ZSBmb3IgKndobyogZGVub3RlcworICAgKHJlc3BlY3RpdmVseSkgdGhlIGNhbGxpbmcgcHJvY2VzcywgdGhlIHByb2Nlc3MgZ3JvdXAgb2YgdGhlIGNhbGxpbmcgcHJvY2VzcywKKyAgIG9yIHRoZSByZWFsIHVzZXIgSUQgb2YgdGhlIGNhbGxpbmcgcHJvY2Vzcy4KKyAgICpwcmlvcml0eSogaXMgYSB2YWx1ZSBpbiB0aGUgcmFuZ2UgLTIwIHRvIDE5LiBUaGUgZGVmYXVsdCBwcmlvcml0eSBpcyAwOworICAgbG93ZXIgcHJpb3JpdGllcyBjYXVzZSBtb3JlIGZhdm9yYWJsZSBzY2hlZHVsaW5nLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXgKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiBzZXRyZWdpZChyZ2lkLCBlZ2lkKQogCiAgICBTZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHJlYWwgYW5kIGVmZmVjdGl2ZSBncm91cCBpZHMuCkBAIC01MTEsMTUgKzU3MCwzMSBAQAogICAgICAgc2luZ2xlOiBnZXRob3N0bmFtZSgpIChpbiBtb2R1bGUgc29ja2V0KQogICAgICAgc2luZ2xlOiBnZXRob3N0YnlhZGRyKCkgKGluIG1vZHVsZSBzb2NrZXQpCiAKLSAgIFJldHVybiBhIDUtdHVwbGUgY29udGFpbmluZyBpbmZvcm1hdGlvbiBpZGVudGlmeWluZyB0aGUgY3VycmVudCBvcGVyYXRpbmcKLSAgIHN5c3RlbS4gIFRoZSB0dXBsZSBjb250YWlucyA1IHN0cmluZ3M6IGBgKHN5c25hbWUsIG5vZGVuYW1lLCByZWxlYXNlLCB2ZXJzaW9uLAotICAgbWFjaGluZSlgYC4gIFNvbWUgc3lzdGVtcyB0cnVuY2F0ZSB0aGUgbm9kZW5hbWUgdG8gOCBjaGFyYWN0ZXJzIG9yIHRvIHRoZQorICAgUmV0dXJucyBpbmZvcm1hdGlvbiBpZGVudGlmeWluZyB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLgorICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBvYmplY3Qgd2l0aCBmaXZlIGF0dHJpYnV0ZXM6CisKKyAgICogOmF0dHI6YHN5c25hbWVgIC0gb3BlcmF0aW5nIHN5c3RlbSBuYW1lCisgICAqIDphdHRyOmBub2RlbmFtZWAgLSBuYW1lIG9mIG1hY2hpbmUgb24gbmV0d29yayAoaW1wbGVtZW50YXRpb24tZGVmaW5lZCkKKyAgICogOmF0dHI6YHJlbGVhc2VgIC0gb3BlcmF0aW5nIHN5c3RlbSByZWxlYXNlCisgICAqIDphdHRyOmB2ZXJzaW9uYCAtIG9wZXJhdGluZyBzeXN0ZW0gdmVyc2lvbgorICAgKiA6YXR0cjpgbWFjaGluZWAgLSBoYXJkd2FyZSBpZGVudGlmaWVyCisKKyAgIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgdGhpcyBvYmplY3QgaXMgYWxzbyBpdGVyYWJsZSwgYmVoYXZpbmcKKyAgIGxpa2UgYSBmaXZlLXR1cGxlIGNvbnRhaW5pbmcgOmF0dHI6YHN5c25hbWVgLCA6YXR0cjpgbm9kZW5hbWVgLAorICAgOmF0dHI6YHJlbGVhc2VgLCA6YXR0cjpgdmVyc2lvbmAsIGFuZCA6YXR0cjpgbWFjaGluZWAKKyAgIGluIHRoYXQgb3JkZXIuCisKKyAgIFNvbWUgc3lzdGVtcyB0cnVuY2F0ZSA6YXR0cjpgbm9kZW5hbWVgIHRvIDggY2hhcmFjdGVycyBvciB0byB0aGUKICAgIGxlYWRpbmcgY29tcG9uZW50OyBhIGJldHRlciB3YXkgdG8gZ2V0IHRoZSBob3N0bmFtZSBpcwogICAgOmZ1bmM6YHNvY2tldC5nZXRob3N0bmFtZWAgIG9yIGV2ZW4KICAgIGBgc29ja2V0LmdldGhvc3RieWFkZHIoc29ja2V0LmdldGhvc3RuYW1lKCkpYGAuCiAKICAgIEF2YWlsYWJpbGl0eTogcmVjZW50IGZsYXZvcnMgb2YgVW5peC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJldHVybiB0eXBlIGNoYW5nZWQgZnJvbSBhIHR1cGxlIHRvIGEgdHVwbGUtbGlrZSBvYmplY3QKKyAgICAgIHdpdGggbmFtZWQgYXR0cmlidXRlcy4KKwogCiAuLiBmdW5jdGlvbjo6IHVuc2V0ZW52KGtleSkKIApAQCAtNTQyLDE1ICs2MTcsMTYgQEAKIEZpbGUgT2JqZWN0IENyZWF0aW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1UaGVzZSBmdW5jdGlvbnMgY3JlYXRlIG5ldyA6dGVybTpgZmlsZSBvYmplY3RzIDxmaWxlIG9iamVjdD5gLiAoU2VlIGFsc28gOmZ1bmM6YG9wZW5gLikKK1RoaXMgZnVuY3Rpb24gY3JlYXRlcyBuZXcgOnRlcm06YGZpbGUgb2JqZWN0cyA8ZmlsZSBvYmplY3Q+YC4gIChTZWUgYWxzbworOmZ1bmM6YH5vcy5vcGVuYCBmb3Igb3BlbmluZyBmaWxlIGRlc2NyaXB0b3JzLikKIAogCiAuLiBmdW5jdGlvbjo6IGZkb3BlbihmZCwgKmFyZ3MsICoqa3dhcmdzKQogCi0gICBSZXR1cm4gYW4gb3BlbiBmaWxlIG9iamVjdCBjb25uZWN0ZWQgdG8gdGhlIGZpbGUgZGVzY3JpcHRvciAqZmQqLgotICAgVGhpcyBpcyBhbiBhbGlhcyBvZiA6ZnVuYzpgb3BlbmAgYW5kIGFjY2VwdHMgdGhlIHNhbWUgYXJndW1lbnRzLgotICAgVGhlIG9ubHkgZGlmZmVyZW5jZSBpcyB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBvZiA6ZnVuYzpgZmRvcGVuYAotICAgbXVzdCBhbHdheXMgYmUgYW4gaW50ZWdlci4KKyAgIFJldHVybiBhbiBvcGVuIGZpbGUgb2JqZWN0IGNvbm5lY3RlZCB0byB0aGUgZmlsZSBkZXNjcmlwdG9yICpmZCouICBUaGlzIGlzIGFuCisgICBhbGlhcyBvZiB0aGUgOmZ1bmM6YG9wZW5gIGJ1aWx0LWluIGZ1bmN0aW9uIGFuZCBhY2NlcHRzIHRoZSBzYW1lIGFyZ3VtZW50cy4KKyAgIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQgb2YgOmZ1bmM6YGZkb3BlbmAgbXVzdCBhbHdheXMKKyAgIGJlIGFuIGludGVnZXIuCiAKIAogLi4gX29zLWZkLW9wczoKQEAgLTU3Miw2ICs2NDgsNyBAQAogZGVzY3JpcHRvciBkaXJlY3RseSB3aWxsIGJ5cGFzcyB0aGUgZmlsZSBvYmplY3QgbWV0aG9kcywgaWdub3JpbmcgYXNwZWN0cyBzdWNoCiBhcyBpbnRlcm5hbCBidWZmZXJpbmcgb2YgZGF0YS4KIAorCiAuLiBmdW5jdGlvbjo6IGNsb3NlKGZkKQogCiAgICBDbG9zZSBmaWxlIGRlc2NyaXB0b3IgKmZkKi4KQEAgLTU4OSw3ICs2NjYsNyBAQAogLi4gZnVuY3Rpb246OiBjbG9zZXJhbmdlKGZkX2xvdywgZmRfaGlnaCkKIAogICAgQ2xvc2UgYWxsIGZpbGUgZGVzY3JpcHRvcnMgZnJvbSAqZmRfbG93KiAoaW5jbHVzaXZlKSB0byAqZmRfaGlnaCogKGV4Y2x1c2l2ZSksCi0gICBpZ25vcmluZyBlcnJvcnMuIEVxdWl2YWxlbnQgdG86OgorICAgaWdub3JpbmcgZXJyb3JzLiBFcXVpdmFsZW50IHRvIChidXQgbXVjaCBmYXN0ZXIgdGhhbik6OgogCiAgICAgICBmb3IgZmQgaW4gcmFuZ2UoZmRfbG93LCBmZF9oaWdoKToKICAgICAgICAgICB0cnk6CkBAIC02MjIsOCArNjk5LDkgQEAKIAogLi4gZnVuY3Rpb246OiBmY2htb2QoZmQsIG1vZGUpCiAKLSAgIENoYW5nZSB0aGUgbW9kZSBvZiB0aGUgZmlsZSBnaXZlbiBieSAqZmQqIHRvIHRoZSBudW1lcmljICptb2RlKi4gIFNlZSB0aGUgZG9jcwotICAgZm9yIDpmdW5jOmBjaG1vZGAgZm9yIHBvc3NpYmxlIHZhbHVlcyBvZiAqbW9kZSouCisgICBDaGFuZ2UgdGhlIG1vZGUgb2YgdGhlIGZpbGUgZ2l2ZW4gYnkgKmZkKiB0byB0aGUgbnVtZXJpYyAqbW9kZSouICBTZWUgdGhlCisgICBkb2NzIGZvciA6ZnVuYzpgY2htb2RgIGZvciBwb3NzaWJsZSB2YWx1ZXMgb2YgKm1vZGUqLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcworICAgaXMgZXF1aXZhbGVudCB0byBgYG9zLmNobW9kKGZkLCBtb2RlKWBgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKQEAgLTYzMSw3ICs3MDksOSBAQAogLi4gZnVuY3Rpb246OiBmY2hvd24oZmQsIHVpZCwgZ2lkKQogCiAgICBDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiB0aGUgZmlsZSBnaXZlbiBieSAqZmQqIHRvIHRoZSBudW1lcmljICp1aWQqCi0gICBhbmQgKmdpZCouICBUbyBsZWF2ZSBvbmUgb2YgdGhlIGlkcyB1bmNoYW5nZWQsIHNldCBpdCB0byAtMS4KKyAgIGFuZCAqZ2lkKi4gIFRvIGxlYXZlIG9uZSBvZiB0aGUgaWRzIHVuY2hhbmdlZCwgc2V0IGl0IHRvIC0xLiAgU2VlCisgICA6ZnVuYzpgY2hvd25gLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgb3MuY2hvd24oZmQsIHVpZCwKKyAgIGdpZClgYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCkBAIC02NjIsMjAgKzc0MiwyNCBAQAogICAgaW5jbHVkZWQgaW4gYGBwYXRoY29uZl9uYW1lc2BgLCBhbiA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgd2l0aAogICAgOmNvbnN0OmBlcnJuby5FSU5WQUxgIGZvciB0aGUgZXJyb3IgbnVtYmVyLgogCisgICBBcyBvZiBQeXRob24gMy4zLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBvcy5wYXRoY29uZihmZCwgbmFtZSlgYC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKIC4uIGZ1bmN0aW9uOjogZnN0YXQoZmQpCiAKLSAgIFJldHVybiBzdGF0dXMgZm9yIGZpbGUgZGVzY3JpcHRvciAqZmQqLCBsaWtlIDpmdW5jOmB+b3Muc3RhdGAuCisgICBSZXR1cm4gc3RhdHVzIGZvciBmaWxlIGRlc2NyaXB0b3IgKmZkKiwgbGlrZSA6ZnVuYzpgfm9zLnN0YXRgLiAgQXMgb2YgUHl0aG9uCisgICAzLjMsIHRoaXMgaXMgZXF1aXZhbGVudCB0byBgYG9zLnN0YXQoZmQpYGAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAogCiAuLiBmdW5jdGlvbjo6IGZzdGF0dmZzKGZkKQogCi0gICBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZpbGVzeXN0ZW0gY29udGFpbmluZyB0aGUgZmlsZSBhc3NvY2lhdGVkIHdpdGggZmlsZQotICAgZGVzY3JpcHRvciAqZmQqLCBsaWtlIDpmdW5jOmBzdGF0dmZzYC4KKyAgIFJldHVybiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmlsZXN5c3RlbSBjb250YWluaW5nIHRoZSBmaWxlIGFzc29jaWF0ZWQgd2l0aAorICAgZmlsZSBkZXNjcmlwdG9yICpmZCosIGxpa2UgOmZ1bmM6YHN0YXR2ZnNgLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcworICAgZXF1aXZhbGVudCB0byBgYG9zLnN0YXR2ZnMoZmQpYGAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIApAQCAtNjg5LDEzICs3NzMsMTQgQEAKICAgIGBgZi5mbHVzaCgpYGAsIGFuZCB0aGVuIGRvIGBgb3MuZnN5bmMoZi5maWxlbm8oKSlgYCwgdG8gZW5zdXJlIHRoYXQgYWxsIGludGVybmFsCiAgICBidWZmZXJzIGFzc29jaWF0ZWQgd2l0aCAqZiogYXJlIHdyaXR0ZW4gdG8gZGlzay4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBhbmQgV2luZG93cy4KKyAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAogCiAuLiBmdW5jdGlvbjo6IGZ0cnVuY2F0ZShmZCwgbGVuZ3RoKQogCi0gICBUcnVuY2F0ZSB0aGUgZmlsZSBjb3JyZXNwb25kaW5nIHRvIGZpbGUgZGVzY3JpcHRvciAqZmQqLCBzbyB0aGF0IGl0IGlzIGF0IG1vc3QKLSAgICpsZW5ndGgqIGJ5dGVzIGluIHNpemUuCisgICBUcnVuY2F0ZSB0aGUgZmlsZSBjb3JyZXNwb25kaW5nIHRvIGZpbGUgZGVzY3JpcHRvciAqZmQqLCBzbyB0aGF0IGl0IGlzIGF0CisgICBtb3N0ICpsZW5ndGgqIGJ5dGVzIGluIHNpemUuICBBcyBvZiBQeXRob24gMy4zLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8KKyAgIGBgb3MudHJ1bmNhdGUoZmQsIGxlbmd0aClgYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCkBAIC03MDgsNiArNzkzLDMxIEBACiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIAorLi4gZnVuY3Rpb246OiBsb2NrZihmZCwgY21kLCBsZW4pCisKKyAgIEFwcGx5LCB0ZXN0IG9yIHJlbW92ZSBhIFBPU0lYIGxvY2sgb24gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisgICAqZmQqIGlzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorICAgKmNtZCogc3BlY2lmaWVzIHRoZSBjb21tYW5kIHRvIHVzZSAtIG9uZSBvZiA6ZGF0YTpgRl9MT0NLYCwgOmRhdGE6YEZfVExPQ0tgLAorICAgOmRhdGE6YEZfVUxPQ0tgIG9yIDpkYXRhOmBGX1RFU1RgLgorICAgKmxlbiogc3BlY2lmaWVzIHRoZSBzZWN0aW9uIG9mIHRoZSBmaWxlIHRvIGxvY2suCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IEZfTE9DSworICAgICAgICAgIEZfVExPQ0sKKyAgICAgICAgICBGX1VMT0NLCisgICAgICAgICAgRl9URVNUCisKKyAgIEZsYWdzIHRoYXQgc3BlY2lmeSB3aGF0IGFjdGlvbiA6ZnVuYzpgbG9ja2ZgIHdpbGwgdGFrZS4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBmdW5jdGlvbjo6IGxzZWVrKGZkLCBwb3MsIGhvdykKIAogICAgU2V0IHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIGZpbGUgZGVzY3JpcHRvciAqZmQqIHRvIHBvc2l0aW9uICpwb3MqLCBtb2RpZmllZApAQCAtNzI0LDIxICs4MzQsMjkgQEAKICAgICAgICAgICBTRUVLX0VORAogCiAgICBQYXJhbWV0ZXJzIHRvIHRoZSA6ZnVuYzpgbHNlZWtgIGZ1bmN0aW9uLiBUaGVpciB2YWx1ZXMgYXJlIDAsIDEsIGFuZCAyLAotICAgcmVzcGVjdGl2ZWx5LiBBdmFpbGFiaWxpdHk6IFdpbmRvd3MsIFVuaXguCisgICByZXNwZWN0aXZlbHkuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBTb21lIG9wZXJhdGluZyBzeXN0ZW1zIGNvdWxkIHN1cHBvcnQgYWRkaXRpb25hbCB2YWx1ZXMsIGxpa2UKKyAgICAgIDpkYXRhOmBvcy5TRUVLX0hPTEVgIG9yIDpkYXRhOmBvcy5TRUVLX0RBVEFgLgogCiAKLS4uIGZ1bmN0aW9uOjogb3BlbihmaWxlLCBmbGFnc1ssIG1vZGVdKQorLi4gZnVuY3Rpb246OiBvcGVuKGZpbGUsIGZsYWdzLCBtb2RlPTBvNzc3LCAqLCBkaXJfZmQ9Tm9uZSkKIAogICAgT3BlbiB0aGUgZmlsZSAqZmlsZSogYW5kIHNldCB2YXJpb3VzIGZsYWdzIGFjY29yZGluZyB0byAqZmxhZ3MqIGFuZCBwb3NzaWJseQotICAgaXRzIG1vZGUgYWNjb3JkaW5nIHRvICptb2RlKi4gIFRoZSBkZWZhdWx0ICptb2RlKiBpcyBgYDBvNzc3YGAgKG9jdGFsKSwgYW5kCi0gICB0aGUgY3VycmVudCB1bWFzayB2YWx1ZSBpcyBmaXJzdCBtYXNrZWQgb3V0LiAgUmV0dXJuIHRoZSBmaWxlIGRlc2NyaXB0b3IgZm9yCi0gICB0aGUgbmV3bHkgb3BlbmVkIGZpbGUuCisgICBpdHMgbW9kZSBhY2NvcmRpbmcgdG8gKm1vZGUqLiAgV2hlbiBjb21wdXRpbmcgKm1vZGUqLCB0aGUgY3VycmVudCB1bWFzayB2YWx1ZQorICAgaXMgZmlyc3QgbWFza2VkIG91dC4gIFJldHVybiB0aGUgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgbmV3bHkgb3BlbmVkIGZpbGUuCiAKICAgIEZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmbGFnIGFuZCBtb2RlIHZhbHVlcywgc2VlIHRoZSBDIHJ1bi10aW1lIGRvY3VtZW50YXRpb247CiAgICBmbGFnIGNvbnN0YW50cyAobGlrZSA6Y29uc3Q6YE9fUkRPTkxZYCBhbmQgOmNvbnN0OmBPX1dST05MWWApIGFyZSBkZWZpbmVkIGluCiAgICB0aGlzIG1vZHVsZSB0b28gKHNlZSA6cmVmOmBvcGVuLWNvbnN0YW50c2ApLiAgSW4gcGFydGljdWxhciwgb24gV2luZG93cyBhZGRpbmcKICAgIDpjb25zdDpgT19CSU5BUllgIGlzIG5lZWRlZCB0byBvcGVuIGZpbGVzIGluIGJpbmFyeSBtb2RlLgogCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycworICAgPGRpcl9mZD5gLgorCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKICAgIC4uIG5vdGU6OgpAQCAtNzQ4LDYgKzg2Niw5IEBACiAgICAgICA6bWV0aDpgfmZpbGUucmVhZGAgYW5kIDptZXRoOmB+ZmlsZS53cml0ZWAgbWV0aG9kcyAoYW5kIG1hbnkgbW9yZSkuICBUbwogICAgICAgd3JhcCBhIGZpbGUgZGVzY3JpcHRvciBpbiBhIGZpbGUgb2JqZWN0LCB1c2UgOmZ1bmM6YGZkb3BlbmAuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgorCiAKIC4uIGZ1bmN0aW9uOjogb3BlbnB0eSgpCiAKQEAgLTc2OCw2ICs4ODksNzkgQEAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAogCisuLiBmdW5jdGlvbjo6IHBpcGUyKGZsYWdzKQorCisgICBDcmVhdGUgYSBwaXBlIHdpdGggKmZsYWdzKiBzZXQgYXRvbWljYWxseS4KKyAgICpmbGFncyogY2FuIGJlIGNvbnN0cnVjdGVkIGJ5IE9SaW5nIHRvZ2V0aGVyIG9uZSBvciBtb3JlIG9mIHRoZXNlIHZhbHVlczoKKyAgIDpkYXRhOmBPX05PTkJMT0NLYCwgOmRhdGE6YE9fQ0xPRVhFQ2AuCisgICBSZXR1cm4gYSBwYWlyIG9mIGZpbGUgZGVzY3JpcHRvcnMgYGAociwgdylgYCB1c2FibGUgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcsCisgICByZXNwZWN0aXZlbHkuCisKKyAgIEF2YWlsYWJpbGl0eTogc29tZSBmbGF2b3JzIG9mIFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogcG9zaXhfZmFsbG9jYXRlKGZkLCBvZmZzZXQsIGxlbikKKworICAgRW5zdXJlcyB0aGF0IGVub3VnaCBkaXNrIHNwYWNlIGlzIGFsbG9jYXRlZCBmb3IgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5ICpmZCoKKyAgIHN0YXJ0aW5nIGZyb20gKm9mZnNldCogYW5kIGNvbnRpbnVpbmcgZm9yICpsZW4qIGJ5dGVzLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogcG9zaXhfZmFkdmlzZShmZCwgb2Zmc2V0LCBsZW4sIGFkdmljZSkKKworICAgQW5ub3VuY2VzIGFuIGludGVudGlvbiB0byBhY2Nlc3MgZGF0YSBpbiBhIHNwZWNpZmljIHBhdHRlcm4gdGh1cyBhbGxvd2luZworICAgdGhlIGtlcm5lbCB0byBtYWtlIG9wdGltaXphdGlvbnMuCisgICBUaGUgYWR2aWNlIGFwcGxpZXMgdG8gdGhlIHJlZ2lvbiBvZiB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgKmZkKiBzdGFydGluZyBhdAorICAgKm9mZnNldCogYW5kIGNvbnRpbnVpbmcgZm9yICpsZW4qIGJ5dGVzLgorICAgKmFkdmljZSogaXMgb25lIG9mIDpkYXRhOmBQT1NJWF9GQURWX05PUk1BTGAsIDpkYXRhOmBQT1NJWF9GQURWX1NFUVVFTlRJQUxgLAorICAgOmRhdGE6YFBPU0lYX0ZBRFZfUkFORE9NYCwgOmRhdGE6YFBPU0lYX0ZBRFZfTk9SRVVTRWAsCisgICA6ZGF0YTpgUE9TSVhfRkFEVl9XSUxMTkVFRGAgb3IgOmRhdGE6YFBPU0lYX0ZBRFZfRE9OVE5FRURgLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBQT1NJWF9GQURWX05PUk1BTAorICAgICAgICAgIFBPU0lYX0ZBRFZfU0VRVUVOVElBTAorICAgICAgICAgIFBPU0lYX0ZBRFZfUkFORE9NCisgICAgICAgICAgUE9TSVhfRkFEVl9OT1JFVVNFCisgICAgICAgICAgUE9TSVhfRkFEVl9XSUxMTkVFRAorICAgICAgICAgIFBPU0lYX0ZBRFZfRE9OVE5FRUQKKworICAgRmxhZ3MgdGhhdCBjYW4gYmUgdXNlZCBpbiAqYWR2aWNlKiBpbiA6ZnVuYzpgcG9zaXhfZmFkdmlzZWAgdGhhdCBzcGVjaWZ5CisgICB0aGUgYWNjZXNzIHBhdHRlcm4gdGhhdCBpcyBsaWtlbHkgdG8gYmUgdXNlZC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHByZWFkKGZkLCBidWZmZXJzaXplLCBvZmZzZXQpCisKKyAgIFJlYWQgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciwgKmZkKiwgYXQgYSBwb3NpdGlvbiBvZiAqb2Zmc2V0Ki4gSXQgd2lsbCByZWFkIHVwCisgICB0byAqYnVmZmVyc2l6ZSogbnVtYmVyIG9mIGJ5dGVzLiBUaGUgZmlsZSBvZmZzZXQgcmVtYWlucyB1bmNoYW5nZWQuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBwd3JpdGUoZmQsIHN0cmluZywgb2Zmc2V0KQorCisgICBXcml0ZSAqc3RyaW5nKiB0byBhIGZpbGUgZGVzY3JpcHRvciwgKmZkKiwgZnJvbSAqb2Zmc2V0KiwgbGVhdmluZyB0aGUgZmlsZQorICAgb2Zmc2V0IHVuY2hhbmdlZC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBmdW5jdGlvbjo6IHJlYWQoZmQsIG4pCiAKICAgIFJlYWQgYXQgbW9zdCAqbiogYnl0ZXMgZnJvbSBmaWxlIGRlc2NyaXB0b3IgKmZkKi4gUmV0dXJuIGEgYnl0ZXN0cmluZyBjb250YWluaW5nIHRoZQpAQCAtNzc5LDEwICs5NzMsNjIgQEAKICAgIC4uIG5vdGU6OgogCiAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciBsb3ctbGV2ZWwgSS9PIGFuZCBtdXN0IGJlIGFwcGxpZWQgdG8gYSBmaWxlCi0gICAgICBkZXNjcmlwdG9yIGFzIHJldHVybmVkIGJ5IDpmdW5jOmBvcy5vcGVuYCBvciA6ZnVuYzpgcGlwZWAuICBUbyByZWFkIGEgImZpbGUgb2JqZWN0IgotICAgICAgcmV0dXJuZWQgYnkgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIDpmdW5jOmBvcGVuYCBvciBieSA6ZnVuYzpgcG9wZW5gIG9yCi0gICAgICA6ZnVuYzpgZmRvcGVuYCwgb3IgOmRhdGE6YHN5cy5zdGRpbmAsIHVzZSBpdHMgOm1ldGg6YH5maWxlLnJlYWRgIG9yCi0gICAgICA6bWV0aDpgfmZpbGUucmVhZGxpbmVgIG1ldGhvZHMuCisgICAgICBkZXNjcmlwdG9yIGFzIHJldHVybmVkIGJ5IDpmdW5jOmBvcy5vcGVuYCBvciA6ZnVuYzpgcGlwZWAuICBUbyByZWFkIGEKKyAgICAgICJmaWxlIG9iamVjdCIgcmV0dXJuZWQgYnkgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIDpmdW5jOmBvcGVuYCBvciBieQorICAgICAgOmZ1bmM6YHBvcGVuYCBvciA6ZnVuYzpgZmRvcGVuYCwgb3IgOmRhdGE6YHN5cy5zdGRpbmAsIHVzZSBpdHMKKyAgICAgIDptZXRoOmB+ZmlsZS5yZWFkYCBvciA6bWV0aDpgfmZpbGUucmVhZGxpbmVgIG1ldGhvZHMuCisKKworLi4gZnVuY3Rpb246OiBzZW5kZmlsZShvdXQsIGluLCBvZmZzZXQsIG5ieXRlcykKKyAgICAgICAgICAgICAgc2VuZGZpbGUob3V0LCBpbiwgb2Zmc2V0LCBuYnl0ZXMsIGhlYWRlcnM9Tm9uZSwgdHJhaWxlcnM9Tm9uZSwgZmxhZ3M9MCkKKworICAgQ29weSAqbmJ5dGVzKiBieXRlcyBmcm9tIGZpbGUgZGVzY3JpcHRvciAqaW4qIHRvIGZpbGUgZGVzY3JpcHRvciAqb3V0KgorICAgc3RhcnRpbmcgYXQgKm9mZnNldCouCisgICBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBzZW50LiBXaGVuIEVPRiBpcyByZWFjaGVkIHJldHVybiAwLgorCisgICBUaGUgZmlyc3QgZnVuY3Rpb24gbm90YXRpb24gaXMgc3VwcG9ydGVkIGJ5IGFsbCBwbGF0Zm9ybXMgdGhhdCBkZWZpbmUKKyAgIDpmdW5jOmBzZW5kZmlsZWAuCisKKyAgIE9uIExpbnV4LCBpZiAqb2Zmc2V0KiBpcyBnaXZlbiBhcyBgYE5vbmVgYCwgdGhlIGJ5dGVzIGFyZSByZWFkIGZyb20gdGhlCisgICBjdXJyZW50IHBvc2l0aW9uIG9mICppbiogYW5kIHRoZSBwb3NpdGlvbiBvZiAqaW4qIGlzIHVwZGF0ZWQuCisKKyAgIFRoZSBzZWNvbmQgY2FzZSBtYXkgYmUgdXNlZCBvbiBNYWMgT1MgWCBhbmQgRnJlZUJTRCB3aGVyZSAqaGVhZGVycyogYW5kCisgICAqdHJhaWxlcnMqIGFyZSBhcmJpdHJhcnkgc2VxdWVuY2VzIG9mIGJ1ZmZlcnMgdGhhdCBhcmUgd3JpdHRlbiBiZWZvcmUgYW5kCisgICBhZnRlciB0aGUgZGF0YSBmcm9tICppbiogaXMgd3JpdHRlbi4gSXQgcmV0dXJucyB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgY2FzZS4KKworICAgT24gTWFjIE9TIFggYW5kIEZyZWVCU0QsIGEgdmFsdWUgb2YgMCBmb3IgKm5ieXRlcyogc3BlY2lmaWVzIHRvIHNlbmQgdW50aWwKKyAgIHRoZSBlbmQgb2YgKmluKiBpcyByZWFjaGVkLgorCisgICBPbiBTb2xhcmlzLCAqb3V0KiBtYXkgYmUgdGhlIGZpbGUgZGVzY3JpcHRvciBvZiBhIHJlZ3VsYXIgZmlsZSBvciB0aGUgZmlsZQorICAgZGVzY3JpcHRvciBvZiBhIHNvY2tldC4gT24gYWxsIG90aGVyIHBsYXRmb3JtcywgKm91dCogbXVzdCBiZSB0aGUgZmlsZQorICAgZGVzY3JpcHRvciBvZiBhbiBvcGVuIHNvY2tldC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogU0ZfTk9ESVNLSU8KKyAgICAgICAgICBTRl9NTk9XQUlUCisgICAgICAgICAgU0ZfU1lOQworCisgICBQYXJhbWV0ZXJzIHRvIHRoZSA6ZnVuYzpgc2VuZGZpbGVgIGZ1bmN0aW9uLCBpZiB0aGUgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMKKyAgIHRoZW0uCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiByZWFkdihmZCwgYnVmZmVycykKKworICAgUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yIGludG8gYSBudW1iZXIgb2Ygd3JpdGFibGUgYnVmZmVycy4gKmJ1ZmZlcnMqIGlzCisgICBhbiBhcmJpdHJhcnkgc2VxdWVuY2Ugb2Ygd3JpdGFibGUgYnVmZmVycy4gUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzCisgICByZWFkLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIC4uIGZ1bmN0aW9uOjogdGNnZXRwZ3JwKGZkKQpAQCAtODI2LDYgKzEwNzIsMTcgQEAKICAgICAgIDptZXRoOmB+ZmlsZS53cml0ZWAgbWV0aG9kLgogCiAKKy4uIGZ1bmN0aW9uOjogd3JpdGV2KGZkLCBidWZmZXJzKQorCisgICBXcml0ZSB0aGUgY29udGVudHMgb2YgKmJ1ZmZlcnMqIHRvIGZpbGUgZGVzY3JpcHRvciAqZmQqLCB3aGVyZSAqYnVmZmVycyoKKyAgIGlzIGFuIGFyYml0cmFyeSBzZXF1ZW5jZSBvZiBidWZmZXJzLgorICAgUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gX29wZW4tY29uc3RhbnRzOgogCiBgYG9wZW4oKWBgIGZsYWcgY29uc3RhbnRzCkBAIC04NTcsOSArMTExNCwxMiBAQAogICAgICAgICAgIE9fTk9DVFRZCiAgICAgICAgICAgT19TSExPQ0sKICAgICAgICAgICBPX0VYTE9DSworICAgICAgICAgIE9fQ0xPRVhFQwogCiAgICBUaGVzZSBjb25zdGFudHMgYXJlIG9ubHkgYXZhaWxhYmxlIG9uIFVuaXguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGQgOmRhdGE6YE9fQ0xPRVhFQ2AgY29uc3RhbnQuCiAKIC4uIGRhdGE6OiBPX0JJTkFSWQogICAgICAgICAgIE9fTk9JTkhFUklUCkBAIC04ODIsMTIgKzExNDIsMTA2IEBACiAgICB0aGUgQyBsaWJyYXJ5LgogCiAKKy4uIGRhdGE6OiBSVExEX0xBWlkKKyAgICAgICAgICBSVExEX05PVworICAgICAgICAgIFJUTERfR0xPQkFMCisgICAgICAgICAgUlRMRF9MT0NBTAorICAgICAgICAgIFJUTERfTk9ERUxFVEUKKyAgICAgICAgICBSVExEX05PTE9BRAorICAgICAgICAgIFJUTERfREVFUEJJTkQKKworICAgU2VlIHRoZSBVbml4IG1hbnVhbCBwYWdlIDptYW5wYWdlOmBkbG9wZW4oMylgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBfdGVybWluYWwtc2l6ZToKKworUXVlcnlpbmcgdGhlIHNpemUgb2YgYSB0ZXJtaW5hbAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZnVuY3Rpb246OiBnZXRfdGVybWluYWxfc2l6ZShmZD1TVERPVVRfRklMRU5PKQorCisgICBSZXR1cm4gdGhlIHNpemUgb2YgdGhlIHRlcm1pbmFsIHdpbmRvdyBhcyBgYChjb2x1bW5zLCBsaW5lcylgYCwKKyAgIHR1cGxlIG9mIHR5cGUgOmNsYXNzOmB0ZXJtaW5hbF9zaXplYC4KKworICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50IGBgZmRgYCAoZGVmYXVsdCBgYFNURE9VVF9GSUxFTk9gYCwgb3Igc3RhbmRhcmQKKyAgIG91dHB1dCkgc3BlY2lmaWVzIHdoaWNoIGZpbGUgZGVzY3JpcHRvciBzaG91bGQgYmUgcXVlcmllZC4KKworICAgSWYgdGhlIGZpbGUgZGVzY3JpcHRvciBpcyBub3QgY29ubmVjdGVkIHRvIGEgdGVybWluYWwsIGFuIDpleGM6YE9TRXJyb3JgCisgICBpcyByYWlzZWQuCisKKyAgIDpmdW5jOmBzaHV0aWwuZ2V0X3Rlcm1pbmFsX3NpemVgIGlzIHRoZSBoaWdoLWxldmVsIGZ1bmN0aW9uIHdoaWNoCisgICBzaG91bGQgbm9ybWFsbHkgYmUgdXNlZCwgYGBvcy5nZXRfdGVybWluYWxfc2l6ZWBgIGlzIHRoZSBsb3ctbGV2ZWwKKyAgIGltcGxlbWVudGF0aW9uLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisKKy4uIGNsYXNzOjogdGVybWluYWxfc2l6ZQorCisgICBBIHN1YmNsYXNzIG9mIHR1cGxlLCBob2xkaW5nIGBgKGNvbHVtbnMsIGxpbmVzKWBgIG9mIHRoZSB0ZXJtaW5hbCB3aW5kb3cgc2l6ZS4KKworICAgLi4gYXR0cmlidXRlOjogY29sdW1ucworCisgICAgICBXaWR0aCBvZiB0aGUgdGVybWluYWwgd2luZG93IGluIGNoYXJhY3RlcnMuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGxpbmVzCisKKyAgICAgIEhlaWdodCBvZiB0aGUgdGVybWluYWwgd2luZG93IGluIGNoYXJhY3RlcnMuCisKKwogLi4gX29zLWZpbGUtZGlyOgogCiBGaWxlcyBhbmQgRGlyZWN0b3JpZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiBmdW5jdGlvbjo6IGFjY2VzcyhwYXRoLCBtb2RlKQorT24gc29tZSBVbml4IHBsYXRmb3JtcywgbWFueSBvZiB0aGVzZSBmdW5jdGlvbnMgc3VwcG9ydCBvbmUgb3IgbW9yZSBvZiB0aGVzZQorZmVhdHVyZXM6CisKKy4uIF9wYXRoX2ZkOgorCisqICoqc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvcjoqKgorICBGb3Igc29tZSBmdW5jdGlvbnMsIHRoZSAqcGF0aCogYXJndW1lbnQgY2FuIGJlIG5vdCBvbmx5IGEgc3RyaW5nIGdpdmluZyBhIHBhdGgKKyAgbmFtZSwgYnV0IGFsc28gYSBmaWxlIGRlc2NyaXB0b3IuICBUaGUgZnVuY3Rpb24gd2lsbCB0aGVuIG9wZXJhdGUgb24gdGhlIGZpbGUKKyAgcmVmZXJyZWQgdG8gYnkgdGhlIGRlc2NyaXB0b3IuICAoRm9yIFBPU0lYIHN5c3RlbXMsIFB5dGhvbiB3aWxsIGNhbGwgdGhlCisgIGBgZi4uLmBgIHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9uLikKKworICBZb3UgY2FuIGNoZWNrIHdoZXRoZXIgb3Igbm90ICpwYXRoKiBjYW4gYmUgc3BlY2lmaWVkIGFzIGEgZmlsZSBkZXNjcmlwdG9yIG9uCisgIHlvdXIgcGxhdGZvcm0gdXNpbmcgOmRhdGE6YG9zLnN1cHBvcnRzX2ZkYC4gIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdAorICB3aWxsIHJhaXNlIGEgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCisKKyAgSWYgdGhlIGZ1bmN0aW9uIGFsc28gc3VwcG9ydHMgKmRpcl9mZCogb3IgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnRzLCBpdCBpcworICBhbiBlcnJvciB0byBzcGVjaWZ5IG9uZSBvZiB0aG9zZSB3aGVuIHN1cHBseWluZyAqcGF0aCogYXMgYSBmaWxlIGRlc2NyaXB0b3IuCisKKy4uIF9kaXJfZmQ6CisKKyogKipwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnM6KiogSWYgKmRpcl9mZCogaXMgbm90IGBgTm9uZWBgLCBpdAorICBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3IgcmVmZXJyaW5nIHRvIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHBhdGggdG8gb3BlcmF0ZQorICBvbiBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LiAgSWYgdGhlCisgIHBhdGggaXMgYWJzb2x1dGUsICpkaXJfZmQqIGlzIGlnbm9yZWQuICAoRm9yIFBPU0lYIHN5c3RlbXMsIFB5dGhvbiB3aWxsIGNhbGwKKyAgdGhlIGBgLi4uYXRgYCBvciBgYGYuLi5hdGBgIHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9uLikKKworICBZb3UgY2FuIGNoZWNrIHdoZXRoZXIgb3Igbm90ICpkaXJfZmQqIGlzIHN1cHBvcnRlZCBvbiB5b3VyIHBsYXRmb3JtIHVzaW5nCisgIDpkYXRhOmBvcy5zdXBwb3J0c19kaXJfZmRgLiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYQorICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KKworLi4gX2ZvbGxvd19zeW1saW5rczoKKworKiAqKm5vdCBmb2xsb3dpbmcgc3ltbGlua3M6KiogSWYgKmZvbGxvd19zeW1saW5rcyogaXMKKyAgYGBGYWxzZWBgLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCB0byBvcGVyYXRlIG9uIGlzIGEgc3ltYm9saWMgbGluaywKKyAgdGhlIGZ1bmN0aW9uIHdpbGwgb3BlcmF0ZSBvbiB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZSB0aGUKKyAgbGluayBwb2ludHMgdG8uICAoRm9yIFBPU0lYIHN5c3RlbXMsIFB5dGhvbiB3aWxsIGNhbGwgdGhlIGBgbC4uLmBgIHZlcnNpb24gb2YKKyAgdGhlIGZ1bmN0aW9uLikKKworICBZb3UgY2FuIGNoZWNrIHdoZXRoZXIgb3Igbm90ICpmb2xsb3dfc3ltbGlua3MqIGlzIHN1cHBvcnRlZCBvbiB5b3VyIHBsYXRmb3JtCisgIHVzaW5nIDpkYXRhOmBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3NgLiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0CisgIHdpbGwgcmFpc2UgYSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KKworCisKKy4uIGZ1bmN0aW9uOjogYWNjZXNzKHBhdGgsIG1vZGUsICosIGRpcl9mZD1Ob25lLCBlZmZlY3RpdmVfaWRzPUZhbHNlLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgVXNlIHRoZSByZWFsIHVpZC9naWQgdG8gdGVzdCBmb3IgYWNjZXNzIHRvICpwYXRoKi4gIE5vdGUgdGhhdCBtb3N0IG9wZXJhdGlvbnMKICAgIHdpbGwgdXNlIHRoZSBlZmZlY3RpdmUgdWlkL2dpZCwgdGhlcmVmb3JlIHRoaXMgcm91dGluZSBjYW4gYmUgdXNlZCBpbiBhCkBAIC04OTgsNiArMTI1MiwxNSBAQAogICAgOmNvbnN0OmBGYWxzZWAgaWYgbm90LiBTZWUgdGhlIFVuaXggbWFuIHBhZ2UgOm1hbnBhZ2U6YGFjY2VzcygyKWAgZm9yIG1vcmUKICAgIGluZm9ybWF0aW9uLgogCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IHNwZWNpZnlpbmcgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5CisgICBkZXNjcmlwdG9ycyA8ZGlyX2ZkPmAgYW5kIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgorCisgICBJZiAqZWZmZWN0aXZlX2lkcyogaXMgYGBUcnVlYGAsIDpmdW5jOmBhY2Nlc3NgIHdpbGwgcGVyZm9ybSBpdHMgYWNjZXNzCisgICBjaGVja3MgdXNpbmcgdGhlIGVmZmVjdGl2ZSB1aWQvZ2lkIGluc3RlYWQgb2YgdGhlIHJlYWwgdWlkL2dpZC4KKyAgICplZmZlY3RpdmVfaWRzKiBtYXkgbm90IGJlIHN1cHBvcnRlZCBvbiB5b3VyIHBsYXRmb3JtOyB5b3UgY2FuIGNoZWNrIHdoZXRoZXIKKyAgIG9yIG5vdCBpdCBpcyBhdmFpbGFibGUgdXNpbmcgOmRhdGE6YG9zLnN1cHBvcnRzX2VmZmVjdGl2ZV9pZHNgLiAgSWYgaXQgaXMKKyAgIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCisKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAogICAgLi4gbm90ZTo6CkBAIC05MTcsMTEgKzEyODAsOCBAQAogCiAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgZnAgPSBvcGVuKCJteWZpbGUiKQotICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKLSAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVBQ0NFUzoKLSAgICAgICAgICAgICAgICAgcmV0dXJuICJzb21lIGRlZmF1bHQgZGF0YSIKLSAgICAgICAgICAgICAjIE5vdCBhIHBlcm1pc3Npb24gZXJyb3IuCi0gICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CisgICAgICAgICAgICAgcmV0dXJuICJzb21lIGRlZmF1bHQgZGF0YSIKICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgd2l0aCBmcDoKICAgICAgICAgICAgICAgICAgcmV0dXJuIGZwLnJlYWQoKQpAQCAtOTMyLDI5ICsxMjkyLDE4IEBACiAgICAgICBzdWNjZWVkLCBwYXJ0aWN1bGFybHkgZm9yIG9wZXJhdGlvbnMgb24gbmV0d29yayBmaWxlc3lzdGVtcyB3aGljaCBtYXkgaGF2ZQogICAgICAgcGVybWlzc2lvbnMgc2VtYW50aWNzIGJleW9uZCB0aGUgdXN1YWwgUE9TSVggcGVybWlzc2lvbi1iaXQgbW9kZWwuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKmRpcl9mZCosICplZmZlY3RpdmVfaWRzKiwgYW5kICpmb2xsb3dfc3ltbGlua3MqIHBhcmFtZXRlcnMuCisKIAogLi4gZGF0YTo6IEZfT0sKKyAgICAgICAgICBSX09LCisgICAgICAgICAgV19PSworICAgICAgICAgIFhfT0sKIAotICAgVmFsdWUgdG8gcGFzcyBhcyB0aGUgKm1vZGUqIHBhcmFtZXRlciBvZiA6ZnVuYzpgYWNjZXNzYCB0byB0ZXN0IHRoZSBleGlzdGVuY2Ugb2YKLSAgICpwYXRoKi4KLQotCi0uLiBkYXRhOjogUl9PSwotCi0gICBWYWx1ZSB0byBpbmNsdWRlIGluIHRoZSAqbW9kZSogcGFyYW1ldGVyIG9mIDpmdW5jOmBhY2Nlc3NgIHRvIHRlc3QgdGhlCi0gICByZWFkYWJpbGl0eSBvZiAqcGF0aCouCi0KLQotLi4gZGF0YTo6IFdfT0sKLQotICAgVmFsdWUgdG8gaW5jbHVkZSBpbiB0aGUgKm1vZGUqIHBhcmFtZXRlciBvZiA6ZnVuYzpgYWNjZXNzYCB0byB0ZXN0IHRoZQotICAgd3JpdGFiaWxpdHkgb2YgKnBhdGgqLgotCi0KLS4uIGRhdGE6OiBYX09LCi0KLSAgIFZhbHVlIHRvIGluY2x1ZGUgaW4gdGhlICptb2RlKiBwYXJhbWV0ZXIgb2YgOmZ1bmM6YGFjY2Vzc2AgdG8gZGV0ZXJtaW5lIGlmCi0gICAqcGF0aCogY2FuIGJlIGV4ZWN1dGVkLgorICAgVmFsdWVzIHRvIHBhc3MgYXMgdGhlICptb2RlKiBwYXJhbWV0ZXIgb2YgOmZ1bmM6YGFjY2Vzc2AgdG8gdGVzdCB0aGUKKyAgIGV4aXN0ZW5jZSwgcmVhZGFiaWxpdHksIHdyaXRhYmlsaXR5IGFuZCBleGVjdXRhYmlsaXR5IG9mICpwYXRoKiwKKyAgIHJlc3BlY3RpdmVseS4KIAogCiAuLiBmdW5jdGlvbjo6IGNoZGlyKHBhdGgpCkBAIC05NjMsMzMgKzEzMTIsMTcgQEAKIAogICAgQ2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvICpwYXRoKi4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCi0KLS4uIGZ1bmN0aW9uOjogZmNoZGlyKGZkKQotCi0gICBDaGFuZ2UgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIGRpcmVjdG9yeSByZXByZXNlbnRlZCBieSB0aGUgZmlsZQotICAgZGVzY3JpcHRvciAqZmQqLiAgVGhlIGRlc2NyaXB0b3IgbXVzdCByZWZlciB0byBhbiBvcGVuZWQgZGlyZWN0b3J5LCBub3QgYW4gb3BlbgotICAgZmlsZS4KLQotICAgQXZhaWxhYmlsaXR5OiBVbml4LgotCi0KLS4uIGZ1bmN0aW9uOjogZ2V0Y3dkKCkKLQotICAgUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gLiAgVGhlCisgICBkZXNjcmlwdG9yIG11c3QgcmVmZXIgdG8gYW4gb3BlbmVkIGRpcmVjdG9yeSwgbm90IGFuIG9wZW4gZmlsZS4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCi0KLS4uIGZ1bmN0aW9uOjogZ2V0Y3dkYigpCi0KLSAgIFJldHVybiBhIGJ5dGVzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgotCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgKnBhdGgqIGFzIGEgZmlsZSBkZXNjcmlwdG9yCisgICAgICBvbiBzb21lIHBsYXRmb3Jtcy4KIAogCi0uLiBmdW5jdGlvbjo6IGNoZmxhZ3MocGF0aCwgZmxhZ3MpCisuLiBmdW5jdGlvbjo6IGNoZmxhZ3MocGF0aCwgZmxhZ3MsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBTZXQgdGhlIGZsYWdzIG9mICpwYXRoKiB0byB0aGUgbnVtZXJpYyAqZmxhZ3MqLiAqZmxhZ3MqIG1heSB0YWtlIGEgY29tYmluYXRpb24KICAgIChiaXR3aXNlIE9SKSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlcyAoYXMgZGVmaW5lZCBpbiB0aGUgOm1vZDpgc3RhdGAgbW9kdWxlKToKQEAgLTEwMDcsMTYgKzEzNDAsMTUgQEAKICAgICogOmRhdGE6YHN0YXQuU0ZfTk9VTkxJTktgCiAgICAqIDpkYXRhOmBzdGF0LlNGX1NOQVBTSE9UYAogCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgorCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKLQotLi4gZnVuY3Rpb246OiBjaHJvb3QocGF0aCkKLQotICAgQ2hhbmdlIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgY3VycmVudCBwcm9jZXNzIHRvICpwYXRoKi4gQXZhaWxhYmlsaXR5OgotICAgVW5peC4KKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50LgogCiAKLS4uIGZ1bmN0aW9uOjogY2htb2QocGF0aCwgbW9kZSkKKy4uIGZ1bmN0aW9uOjogY2htb2QocGF0aCwgbW9kZSwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBDaGFuZ2UgdGhlIG1vZGUgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICptb2RlKi4gKm1vZGUqIG1heSB0YWtlIG9uZSBvZiB0aGUKICAgIGZvbGxvd2luZyB2YWx1ZXMgKGFzIGRlZmluZWQgaW4gdGhlIDptb2Q6YHN0YXRgIG1vZHVsZSkgb3IgYml0d2lzZSBPUmVkCkBAIC0xMDQyLDI4ICsxMzc0LDc3IEBACiAgICAqIDpkYXRhOmBzdGF0LlNfSVdPVEhgCiAgICAqIDpkYXRhOmBzdGF0LlNfSVhPVEhgCiAKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gLAorICAgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzIDxkaXJfZmQ+YCBhbmQgOnJlZjpgbm90CisgICBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgorCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKICAgIC4uIG5vdGU6OgogCi0gICAgICBBbHRob3VnaCBXaW5kb3dzIHN1cHBvcnRzIDpmdW5jOmBjaG1vZGAsIHlvdSBjYW4gb25seSAgc2V0IHRoZSBmaWxlJ3MgcmVhZC1vbmx5Ci0gICAgICBmbGFnIHdpdGggaXQgKHZpYSB0aGUgYGBzdGF0LlNfSVdSSVRFYGAgIGFuZCBgYHN0YXQuU19JUkVBRGBgCi0gICAgICBjb25zdGFudHMgb3IgYSBjb3JyZXNwb25kaW5nIGludGVnZXIgdmFsdWUpLiAgQWxsIG90aGVyIGJpdHMgYXJlCi0gICAgICBpZ25vcmVkLgorICAgICAgQWx0aG91Z2ggV2luZG93cyBzdXBwb3J0cyA6ZnVuYzpgY2htb2RgLCB5b3UgY2FuIG9ubHkgc2V0IHRoZSBmaWxlJ3MKKyAgICAgIHJlYWQtb25seSBmbGFnIHdpdGggaXQgKHZpYSB0aGUgYGBzdGF0LlNfSVdSSVRFYGAgYW5kIGBgc3RhdC5TX0lSRUFEYGAKKyAgICAgIGNvbnN0YW50cyBvciBhIGNvcnJlc3BvbmRpbmcgaW50ZWdlciB2YWx1ZSkuICBBbGwgb3RoZXIgYml0cyBhcmUgaWdub3JlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nICpwYXRoKiBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciwKKyAgICAgIGFuZCB0aGUgKmRpcl9mZCogYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cy4KIAogCi0uLiBmdW5jdGlvbjo6IGNob3duKHBhdGgsIHVpZCwgZ2lkKQorLi4gZnVuY3Rpb246OiBjaG93bihwYXRoLCB1aWQsIGdpZCwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCi0gICBDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiAqcGF0aCogdG8gdGhlIG51bWVyaWMgKnVpZCogYW5kICpnaWQqLiBUbyBsZWF2ZQotICAgb25lIG9mIHRoZSBpZHMgdW5jaGFuZ2VkLCBzZXQgaXQgdG8gLTEuCisgICBDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiAqcGF0aCogdG8gdGhlIG51bWVyaWMgKnVpZCogYW5kICpnaWQqLiAgVG8KKyAgIGxlYXZlIG9uZSBvZiB0aGUgaWRzIHVuY2hhbmdlZCwgc2V0IGl0IHRvIC0xLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCwKKyAgIDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycyA8ZGlyX2ZkPmAgYW5kIDpyZWY6YG5vdAorICAgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KKworICAgU2VlIDpmdW5jOmBzaHV0aWwuY2hvd25gIGZvciBhIGhpZ2hlci1sZXZlbCBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgbmFtZXMgaW4KKyAgIGFkZGl0aW9uIHRvIG51bWVyaWMgaWRzLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLAorICAgICAgYW5kIHRoZSAqZGlyX2ZkKiBhbmQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnRzLgorCisKKy4uIGZ1bmN0aW9uOjogY2hyb290KHBhdGgpCisKKyAgIENoYW5nZSB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGN1cnJlbnQgcHJvY2VzcyB0byAqcGF0aCouCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCisuLiBmdW5jdGlvbjo6IGZjaGRpcihmZCkKKworICAgQ2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBkaXJlY3RvcnkgcmVwcmVzZW50ZWQgYnkgdGhlIGZpbGUKKyAgIGRlc2NyaXB0b3IgKmZkKi4gIFRoZSBkZXNjcmlwdG9yIG11c3QgcmVmZXIgdG8gYW4gb3BlbmVkIGRpcmVjdG9yeSwgbm90IGFuCisgICBvcGVuIGZpbGUuICBBcyBvZiBQeXRob24gMy4zLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBvcy5jaGRpcihmZClgYC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisKKy4uIGZ1bmN0aW9uOjogZ2V0Y3dkKCkKKworICAgUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorCisKKy4uIGZ1bmN0aW9uOjogZ2V0Y3dkYigpCisKKyAgIFJldHVybiBhIGJ5dGVzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisKKwogLi4gZnVuY3Rpb246OiBsY2hmbGFncyhwYXRoLCBmbGFncykKIAotICAgU2V0IHRoZSBmbGFncyBvZiAqcGF0aCogdG8gdGhlIG51bWVyaWMgKmZsYWdzKiwgbGlrZSA6ZnVuYzpgY2hmbGFnc2AsIGJ1dCBkbyBub3QKLSAgIGZvbGxvdyBzeW1ib2xpYyBsaW5rcy4KKyAgIFNldCB0aGUgZmxhZ3Mgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICpmbGFncyosIGxpa2UgOmZ1bmM6YGNoZmxhZ3NgLCBidXQgZG8KKyAgIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuICBBcyBvZiBQeXRob24gMy4zLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8KKyAgIGBgb3MuY2hmbGFncyhwYXRoLCBmbGFncywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKWBgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKQEAgLTEwNzEsMTEwICsxNDUyLDEwMSBAQAogLi4gZnVuY3Rpb246OiBsY2htb2QocGF0aCwgbW9kZSkKIAogICAgQ2hhbmdlIHRoZSBtb2RlIG9mICpwYXRoKiB0byB0aGUgbnVtZXJpYyAqbW9kZSouIElmIHBhdGggaXMgYSBzeW1saW5rLCB0aGlzCi0gICBhZmZlY3RzIHRoZSBzeW1saW5rIHJhdGhlciB0aGFuIHRoZSB0YXJnZXQuIFNlZSB0aGUgZG9jcyBmb3IgOmZ1bmM6YGNobW9kYAotICAgZm9yIHBvc3NpYmxlIHZhbHVlcyBvZiAqbW9kZSouCisgICBhZmZlY3RzIHRoZSBzeW1saW5rIHJhdGhlciB0aGFuIHRoZSB0YXJnZXQuICBTZWUgdGhlIGRvY3MgZm9yIDpmdW5jOmBjaG1vZGAKKyAgIGZvciBwb3NzaWJsZSB2YWx1ZXMgb2YgKm1vZGUqLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvCisgICBgYG9zLmNobW9kKHBhdGgsIG1vZGUsIGZvbGxvd19zeW1saW5rcz1GYWxzZSlgYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKIC4uIGZ1bmN0aW9uOjogbGNob3duKHBhdGgsIHVpZCwgZ2lkKQogCi0gICBDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiAqcGF0aCogdG8gdGhlIG51bWVyaWMgKnVpZCogYW5kICpnaWQqLiBUaGlzCi0gICBmdW5jdGlvbiB3aWxsIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuCisgICBDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiAqcGF0aCogdG8gdGhlIG51bWVyaWMgKnVpZCogYW5kICpnaWQqLiAgVGhpcworICAgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50CisgICB0byBgYG9zLmNob3duKHBhdGgsIHVpZCwgZ2lkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpYGAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCi0uLiBmdW5jdGlvbjo6IGxpbmsoc291cmNlLCBsaW5rX25hbWUpCisuLiBmdW5jdGlvbjo6IGxpbmsoc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAotICAgQ3JlYXRlIGEgaGFyZCBsaW5rIHBvaW50aW5nIHRvICpzb3VyY2UqIG5hbWVkICpsaW5rX25hbWUqLgorICAgQ3JlYXRlIGEgaGFyZCBsaW5rIHBvaW50aW5nIHRvICpzcmMqIG5hbWVkICpkc3QqLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IHNwZWNpZnlpbmcgKnNyY19kaXJfZmQqIGFuZC9vciAqZHN0X2Rpcl9mZCogdG8KKyAgIHN1cHBseSA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMgPGRpcl9mZD5gLCBhbmQgOnJlZjpgbm90CisgICBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBXaW5kb3dzIHN1cHBvcnQuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICpzcmNfZGlyX2ZkKiwgKmRzdF9kaXJfZmQqLCBhbmQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnRzLgorCiAKIC4uIGZ1bmN0aW9uOjogbGlzdGRpcihwYXRoPScuJykKIAogICAgUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgZW50cmllcyBpbiB0aGUgZGlyZWN0b3J5IGdpdmVuIGJ5Ci0gICAqcGF0aCogKGRlZmF1bHQ6IGBgJy4nYGApLiAgVGhlIGxpc3QgaXMgaW4gYXJiaXRyYXJ5IG9yZGVyLiAgSXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgc3BlY2lhbAorICAgKnBhdGgqLiAgVGhlIGxpc3QgaXMgaW4gYXJiaXRyYXJ5IG9yZGVyLCBhbmQgZG9lcyBub3QgaW5jbHVkZSB0aGUgc3BlY2lhbAogICAgZW50cmllcyBgYCcuJ2BgIGFuZCBgYCcuLidgYCBldmVuIGlmIHRoZXkgYXJlIHByZXNlbnQgaW4gdGhlIGRpcmVjdG9yeS4KIAotICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIHdpdGggYSBieXRlcyBvciBzdHJpbmcgYXJndW1lbnQsIGFuZCByZXR1cm5zCi0gICBmaWxlbmFtZXMgb2YgdGhlIHNhbWUgZGF0YXR5cGUuCisgICAqcGF0aCogbWF5IGJlIGVpdGhlciBvZiB0eXBlIGBgc3RyYGAgb3Igb2YgdHlwZSBgYGJ5dGVzYGAuICBJZiAqcGF0aCoKKyAgIGlzIG9mIHR5cGUgYGBieXRlc2BgLCB0aGUgZmlsZW5hbWVzIHJldHVybmVkIHdpbGwgYWxzbyBiZSBvZiB0eXBlIGBgYnl0ZXNgYDsKKyAgIGluIGFsbCBvdGhlciBjaXJjdW1zdGFuY2VzLCB0aGV5IHdpbGwgYmUgb2YgdHlwZSBgYHN0cmBgLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvcgorICAgPHBhdGhfZmQ+YDsgdGhlIGZpbGUgZGVzY3JpcHRvciBtdXN0IHJlZmVyIHRvIGEgZGlyZWN0b3J5LgorCisgICAuLiBub3RlOjoKKyAgICAgIFRvIGVuY29kZSBgYHN0cmBgIGZpbGVuYW1lcyB0byBgYGJ5dGVzYGAsIHVzZSA6ZnVuYzpgfm9zLmZzZW5jb2RlYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgVGhlICpwYXRoKiBwYXJhbWV0ZXIgYmVjYW1lIG9wdGlvbmFsLgogCi0uLiBmdW5jdGlvbjo6IGxzdGF0KHBhdGgpCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKi4KKworCisuLiBmdW5jdGlvbjo6IGxzdGF0KHBhdGgsICosIGRpcl9mZD1Ob25lKQogCiAgICBQZXJmb3JtIHRoZSBlcXVpdmFsZW50IG9mIGFuIDpjOmZ1bmM6YGxzdGF0YCBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC4KICAgIFNpbWlsYXIgdG8gOmZ1bmM6YH5vcy5zdGF0YCwgYnV0IGRvZXMgbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy4gIE9uCiAgICBwbGF0Zm9ybXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBzeW1ib2xpYyBsaW5rcywgdGhpcyBpcyBhbiBhbGlhcyBmb3IKLSAgIDpmdW5jOmB+b3Muc3RhdGAuCisgICA6ZnVuYzpgfm9zLnN0YXRgLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgb3Muc3RhdChwYXRoLAorICAgZGlyX2ZkPWRpcl9mZCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKWBgLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIHN1cHBvcnQgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCisgICA8ZGlyX2ZkPmAuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBXaW5kb3dzIDYuMCAoVmlzdGEpIHN5bWJvbGljIGxpbmtzLgogCi0KLS4uIGZ1bmN0aW9uOjogbWtmaWZvKHBhdGhbLCBtb2RlXSkKLQotICAgQ3JlYXRlIGEgRklGTyAoYSBuYW1lZCBwaXBlKSBuYW1lZCAqcGF0aCogd2l0aCBudW1lcmljIG1vZGUgKm1vZGUqLiAgVGhlCi0gICBkZWZhdWx0ICptb2RlKiBpcyBgYDBvNjY2YGAgKG9jdGFsKS4gIFRoZSBjdXJyZW50IHVtYXNrIHZhbHVlIGlzIGZpcnN0IG1hc2tlZAotICAgb3V0IGZyb20gdGhlIG1vZGUuCi0KLSAgIEZJRk9zIGFyZSBwaXBlcyB0aGF0IGNhbiBiZSBhY2Nlc3NlZCBsaWtlIHJlZ3VsYXIgZmlsZXMuICBGSUZPcyBleGlzdCB1bnRpbCB0aGV5Ci0gICBhcmUgZGVsZXRlZCAoZm9yIGV4YW1wbGUgd2l0aCA6ZnVuYzpgb3MudW5saW5rYCkuIEdlbmVyYWxseSwgRklGT3MgYXJlIHVzZWQgYXMKLSAgIHJlbmRlenZvdXMgYmV0d2VlbiAiY2xpZW50IiBhbmQgInNlcnZlciIgdHlwZSBwcm9jZXNzZXM6IHRoZSBzZXJ2ZXIgb3BlbnMgdGhlCi0gICBGSUZPIGZvciByZWFkaW5nLCBhbmQgdGhlIGNsaWVudCBvcGVucyBpdCBmb3Igd3JpdGluZy4gIE5vdGUgdGhhdCA6ZnVuYzpgbWtmaWZvYAotICAgZG9lc24ndCBvcGVuIHRoZSBGSUZPIC0tLSBpdCBqdXN0IGNyZWF0ZXMgdGhlIHJlbmRlenZvdXMgcG9pbnQuCi0KLSAgIEF2YWlsYWJpbGl0eTogVW5peC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKmRpcl9mZCogcGFyYW1ldGVyLgogCiAKLS4uIGZ1bmN0aW9uOjogbWtub2QoZmlsZW5hbWVbLCBtb2RlPTBvNjAwWywgZGV2aWNlPTBdXSkKKy4uIGZ1bmN0aW9uOjogbWtkaXIocGF0aCwgbW9kZT0wbzc3NywgKiwgZGlyX2ZkPU5vbmUpCiAKLSAgIENyZWF0ZSBhIGZpbGVzeXN0ZW0gbm9kZSAoZmlsZSwgZGV2aWNlIHNwZWNpYWwgZmlsZSBvciBuYW1lZCBwaXBlKSBuYW1lZAotICAgKmZpbGVuYW1lKi4gKm1vZGUqIHNwZWNpZmllcyBib3RoIHRoZSBwZXJtaXNzaW9ucyB0byB1c2UgYW5kIHRoZSB0eXBlIG9mIG5vZGUKLSAgIHRvIGJlIGNyZWF0ZWQsIGJlaW5nIGNvbWJpbmVkIChiaXR3aXNlIE9SKSB3aXRoIG9uZSBvZiBgYHN0YXQuU19JRlJFR2BgLAotICAgYGBzdGF0LlNfSUZDSFJgYCwgYGBzdGF0LlNfSUZCTEtgYCwgYW5kIGBgc3RhdC5TX0lGSUZPYGAgKHRob3NlIGNvbnN0YW50cyBhcmUKLSAgIGF2YWlsYWJsZSBpbiA6bW9kOmBzdGF0YCkuICBGb3IgYGBzdGF0LlNfSUZDSFJgYCBhbmQgYGBzdGF0LlNfSUZCTEtgYCwKLSAgICpkZXZpY2UqIGRlZmluZXMgdGhlIG5ld2x5IGNyZWF0ZWQgZGV2aWNlIHNwZWNpYWwgZmlsZSAocHJvYmFibHkgdXNpbmcKLSAgIDpmdW5jOmBvcy5tYWtlZGV2YCksIG90aGVyd2lzZSBpdCBpcyBpZ25vcmVkLgorICAgQ3JlYXRlIGEgZGlyZWN0b3J5IG5hbWVkICpwYXRoKiB3aXRoIG51bWVyaWMgbW9kZSAqbW9kZSouCiAKKyAgIE9uIHNvbWUgc3lzdGVtcywgKm1vZGUqIGlzIGlnbm9yZWQuICBXaGVyZSBpdCBpcyB1c2VkLCB0aGUgY3VycmVudCB1bWFzaworICAgdmFsdWUgaXMgZmlyc3QgbWFza2VkIG91dC4gIElmIHRoZSBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMsIDpleGM6YE9TRXJyb3JgCisgICBpcyByYWlzZWQuCiAKLS4uIGZ1bmN0aW9uOjogbWFqb3IoZGV2aWNlKQotCi0gICBFeHRyYWN0IHRoZSBkZXZpY2UgbWFqb3IgbnVtYmVyIGZyb20gYSByYXcgZGV2aWNlIG51bWJlciAodXN1YWxseSB0aGUKLSAgIDphdHRyOmBzdF9kZXZgIG9yIDphdHRyOmBzdF9yZGV2YCBmaWVsZCBmcm9tIDpjOnR5cGU6YHN0YXRgKS4KLQotCi0uLiBmdW5jdGlvbjo6IG1pbm9yKGRldmljZSkKLQotICAgRXh0cmFjdCB0aGUgZGV2aWNlIG1pbm9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIgKHVzdWFsbHkgdGhlCi0gICA6YXR0cjpgc3RfZGV2YCBvciA6YXR0cjpgc3RfcmRldmAgZmllbGQgZnJvbSA6Yzp0eXBlOmBzdGF0YCkuCi0KLQotLi4gZnVuY3Rpb246OiBtYWtlZGV2KG1ham9yLCBtaW5vcikKLQotICAgQ29tcG9zZSBhIHJhdyBkZXZpY2UgbnVtYmVyIGZyb20gdGhlIG1ham9yIGFuZCBtaW5vciBkZXZpY2UgbnVtYmVycy4KLQotCi0uLiBmdW5jdGlvbjo6IG1rZGlyKHBhdGhbLCBtb2RlXSkKLQotICAgQ3JlYXRlIGEgZGlyZWN0b3J5IG5hbWVkICpwYXRoKiB3aXRoIG51bWVyaWMgbW9kZSAqbW9kZSouIFRoZSBkZWZhdWx0ICptb2RlKgotICAgaXMgYGAwbzc3N2BgIChvY3RhbCkuICBPbiBzb21lIHN5c3RlbXMsICptb2RlKiBpcyBpZ25vcmVkLiAgV2hlcmUgaXQgaXMgdXNlZCwKLSAgIHRoZSBjdXJyZW50IHVtYXNrIHZhbHVlIGlzIGZpcnN0IG1hc2tlZCBvdXQuICBJZiB0aGUgZGlyZWN0b3J5IGFscmVhZHkKLSAgIGV4aXN0cywgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkLgorICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycworICAgPGRpcl9mZD5gLgogCiAgICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZGlyZWN0b3JpZXM7IHNlZSB0aGUKICAgIDptb2Q6YHRlbXBmaWxlYCBtb2R1bGUncyA6ZnVuYzpgdGVtcGZpbGUubWtkdGVtcGAgZnVuY3Rpb24uCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCisKIAogLi4gZnVuY3Rpb246OiBtYWtlZGlycyhwYXRoLCBtb2RlPTBvNzc3LCBleGlzdF9vaz1GYWxzZSkKIApAQCAtMTIwNSw2ICsxNTc3LDYwIEBACiAgICAgICBUaGUgKmV4aXN0X29rKiBwYXJhbWV0ZXIuCiAKIAorLi4gZnVuY3Rpb246OiBta2ZpZm8ocGF0aCwgbW9kZT0wbzY2NiwgKiwgZGlyX2ZkPU5vbmUpCisKKyAgIENyZWF0ZSBhIEZJRk8gKGEgbmFtZWQgcGlwZSkgbmFtZWQgKnBhdGgqIHdpdGggbnVtZXJpYyBtb2RlICptb2RlKi4KKyAgIFRoZSBjdXJyZW50IHVtYXNrIHZhbHVlIGlzIGZpcnN0IG1hc2tlZCBvdXQgZnJvbSB0aGUgbW9kZS4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycworICAgPGRpcl9mZD5gLgorCisgICBGSUZPcyBhcmUgcGlwZXMgdGhhdCBjYW4gYmUgYWNjZXNzZWQgbGlrZSByZWd1bGFyIGZpbGVzLiAgRklGT3MgZXhpc3QgdW50aWwgdGhleQorICAgYXJlIGRlbGV0ZWQgKGZvciBleGFtcGxlIHdpdGggOmZ1bmM6YG9zLnVubGlua2ApLiBHZW5lcmFsbHksIEZJRk9zIGFyZSB1c2VkIGFzCisgICByZW5kZXp2b3VzIGJldHdlZW4gImNsaWVudCIgYW5kICJzZXJ2ZXIiIHR5cGUgcHJvY2Vzc2VzOiB0aGUgc2VydmVyIG9wZW5zIHRoZQorICAgRklGTyBmb3IgcmVhZGluZywgYW5kIHRoZSBjbGllbnQgb3BlbnMgaXQgZm9yIHdyaXRpbmcuICBOb3RlIHRoYXQgOmZ1bmM6YG1rZmlmb2AKKyAgIGRvZXNuJ3Qgb3BlbiB0aGUgRklGTyAtLS0gaXQganVzdCBjcmVhdGVzIHRoZSByZW5kZXp2b3VzIHBvaW50LgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgorCisKKy4uIGZ1bmN0aW9uOjogbWtub2QoZmlsZW5hbWUsIG1vZGU9MG82MDAsIGRldmljZT0wLCAqLCBkaXJfZmQ9Tm9uZSkKKworICAgQ3JlYXRlIGEgZmlsZXN5c3RlbSBub2RlIChmaWxlLCBkZXZpY2Ugc3BlY2lhbCBmaWxlIG9yIG5hbWVkIHBpcGUpIG5hbWVkCisgICAqZmlsZW5hbWUqLiAqbW9kZSogc3BlY2lmaWVzIGJvdGggdGhlIHBlcm1pc3Npb25zIHRvIHVzZSBhbmQgdGhlIHR5cGUgb2Ygbm9kZQorICAgdG8gYmUgY3JlYXRlZCwgYmVpbmcgY29tYmluZWQgKGJpdHdpc2UgT1IpIHdpdGggb25lIG9mIGBgc3RhdC5TX0lGUkVHYGAsCisgICBgYHN0YXQuU19JRkNIUmBgLCBgYHN0YXQuU19JRkJMS2BgLCBhbmQgYGBzdGF0LlNfSUZJRk9gYCAodGhvc2UgY29uc3RhbnRzIGFyZQorICAgYXZhaWxhYmxlIGluIDptb2Q6YHN0YXRgKS4gIEZvciBgYHN0YXQuU19JRkNIUmBgIGFuZCBgYHN0YXQuU19JRkJMS2BgLAorICAgKmRldmljZSogZGVmaW5lcyB0aGUgbmV3bHkgY3JlYXRlZCBkZXZpY2Ugc3BlY2lhbCBmaWxlIChwcm9iYWJseSB1c2luZworICAgOmZ1bmM6YG9zLm1ha2VkZXZgKSwgb3RoZXJ3aXNlIGl0IGlzIGlnbm9yZWQuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIGFsc28gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCisKKworLi4gZnVuY3Rpb246OiBtYWpvcihkZXZpY2UpCisKKyAgIEV4dHJhY3QgdGhlIGRldmljZSBtYWpvciBudW1iZXIgZnJvbSBhIHJhdyBkZXZpY2UgbnVtYmVyICh1c3VhbGx5IHRoZQorICAgOmF0dHI6YHN0X2RldmAgb3IgOmF0dHI6YHN0X3JkZXZgIGZpZWxkIGZyb20gOmM6dHlwZTpgc3RhdGApLgorCisKKy4uIGZ1bmN0aW9uOjogbWlub3IoZGV2aWNlKQorCisgICBFeHRyYWN0IHRoZSBkZXZpY2UgbWlub3IgbnVtYmVyIGZyb20gYSByYXcgZGV2aWNlIG51bWJlciAodXN1YWxseSB0aGUKKyAgIDphdHRyOmBzdF9kZXZgIG9yIDphdHRyOmBzdF9yZGV2YCBmaWVsZCBmcm9tIDpjOnR5cGU6YHN0YXRgKS4KKworCisuLiBmdW5jdGlvbjo6IG1ha2VkZXYobWFqb3IsIG1pbm9yKQorCisgICBDb21wb3NlIGEgcmF3IGRldmljZSBudW1iZXIgZnJvbSB0aGUgbWFqb3IgYW5kIG1pbm9yIGRldmljZSBudW1iZXJzLgorCisKIC4uIGZ1bmN0aW9uOjogcGF0aGNvbmYocGF0aCwgbmFtZSkKIAogICAgUmV0dXJuIHN5c3RlbSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIHJlbGV2YW50IHRvIGEgbmFtZWQgZmlsZS4gKm5hbWUqCkBAIC0xMjIwLDYgKzE2NDYsOSBAQAogICAgaW5jbHVkZWQgaW4gYGBwYXRoY29uZl9uYW1lc2BgLCBhbiA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgd2l0aAogICAgOmNvbnN0OmBlcnJuby5FSU5WQUxgIGZvciB0aGUgZXJyb3IgbnVtYmVyLgogCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IKKyAgIDxwYXRoX2ZkPmAuCisKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCkBAIC0xMjI3LDM4ICsxNjU2LDUzIEBACiAKICAgIERpY3Rpb25hcnkgbWFwcGluZyBuYW1lcyBhY2NlcHRlZCBieSA6ZnVuYzpgcGF0aGNvbmZgIGFuZCA6ZnVuYzpgZnBhdGhjb25mYCB0bwogICAgdGhlIGludGVnZXIgdmFsdWVzIGRlZmluZWQgZm9yIHRob3NlIG5hbWVzIGJ5IHRoZSBob3N0IG9wZXJhdGluZyBzeXN0ZW0uICBUaGlzCi0gICBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHNldCBvZiBuYW1lcyBrbm93biB0byB0aGUgc3lzdGVtLiBBdmFpbGFiaWxpdHk6Ci0gICBVbml4LgorICAgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBzZXQgb2YgbmFtZXMga25vd24gdG8gdGhlIHN5c3RlbS4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKLS4uIGZ1bmN0aW9uOjogcmVhZGxpbmsocGF0aCkKKy4uIGZ1bmN0aW9uOjogcmVhZGxpbmsocGF0aCwgKiwgZGlyX2ZkPU5vbmUpCiAKICAgIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gd2hpY2ggdGhlIHN5bWJvbGljIGxpbmsgcG9pbnRzLiAgVGhlCi0gICByZXN1bHQgbWF5IGJlIGVpdGhlciBhbiBhYnNvbHV0ZSBvciByZWxhdGl2ZSBwYXRobmFtZTsgaWYgaXQgaXMgcmVsYXRpdmUsIGl0IG1heQotICAgYmUgY29udmVydGVkIHRvIGFuIGFic29sdXRlIHBhdGhuYW1lIHVzaW5nIGBgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShwYXRoKSwKLSAgIHJlc3VsdClgYC4KKyAgIHJlc3VsdCBtYXkgYmUgZWl0aGVyIGFuIGFic29sdXRlIG9yIHJlbGF0aXZlIHBhdGhuYW1lOyBpZiBpdCBpcyByZWxhdGl2ZSwgaXQKKyAgIG1heSBiZSBjb252ZXJ0ZWQgdG8gYW4gYWJzb2x1dGUgcGF0aG5hbWUgdXNpbmcKKyAgIGBgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShwYXRoKSwgcmVzdWx0KWBgLgogCiAgICBJZiB0aGUgKnBhdGgqIGlzIGEgc3RyaW5nIG9iamVjdCwgdGhlIHJlc3VsdCB3aWxsIGFsc28gYmUgYSBzdHJpbmcgb2JqZWN0LAogICAgYW5kIHRoZSBjYWxsIG1heSByYWlzZSBhbiBVbmljb2RlRGVjb2RlRXJyb3IuIElmIHRoZSAqcGF0aCogaXMgYSBieXRlcwogICAgb2JqZWN0LCB0aGUgcmVzdWx0IHdpbGwgYmUgYSBieXRlcyBvYmplY3QuCiAKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIGFsc28gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBXaW5kb3dzIDYuMCAoVmlzdGEpIHN5bWJvbGljIGxpbmtzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KIAotLi4gZnVuY3Rpb246OiByZW1vdmUocGF0aCkKKworLi4gZnVuY3Rpb246OiByZW1vdmUocGF0aCwgKiwgZGlyX2ZkPU5vbmUpCiAKICAgIFJlbW92ZSAoZGVsZXRlKSB0aGUgZmlsZSAqcGF0aCouICBJZiAqcGF0aCogaXMgYSBkaXJlY3RvcnksIDpleGM6YE9TRXJyb3JgIGlzCi0gICByYWlzZWQ7IHNlZSA6ZnVuYzpgcm1kaXJgIGJlbG93IHRvIHJlbW92ZSBhIGRpcmVjdG9yeS4gIFRoaXMgaXMgaWRlbnRpY2FsIHRvCi0gICB0aGUgOmZ1bmM6YHVubGlua2AgZnVuY3Rpb24gZG9jdW1lbnRlZCBiZWxvdy4gIE9uIFdpbmRvd3MsIGF0dGVtcHRpbmcgdG8KLSAgIHJlbW92ZSBhIGZpbGUgdGhhdCBpcyBpbiB1c2UgY2F1c2VzIGFuIGV4Y2VwdGlvbiB0byBiZSByYWlzZWQ7IG9uIFVuaXgsIHRoZQotICAgZGlyZWN0b3J5IGVudHJ5IGlzIHJlbW92ZWQgYnV0IHRoZSBzdG9yYWdlIGFsbG9jYXRlZCB0byB0aGUgZmlsZSBpcyBub3QgbWFkZQotICAgYXZhaWxhYmxlIHVudGlsIHRoZSBvcmlnaW5hbCBmaWxlIGlzIG5vIGxvbmdlciBpbiB1c2UuCisgICByYWlzZWQuICBVc2UgOmZ1bmM6YHJtZGlyYCB0byByZW1vdmUgZGlyZWN0b3JpZXMuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCisgICA8ZGlyX2ZkPmAuCisKKyAgIE9uIFdpbmRvd3MsIGF0dGVtcHRpbmcgdG8gcmVtb3ZlIGEgZmlsZSB0aGF0IGlzIGluIHVzZSBjYXVzZXMgYW4gZXhjZXB0aW9uIHRvCisgICBiZSByYWlzZWQ7IG9uIFVuaXgsIHRoZSBkaXJlY3RvcnkgZW50cnkgaXMgcmVtb3ZlZCBidXQgdGhlIHN0b3JhZ2UgYWxsb2NhdGVkCisgICB0byB0aGUgZmlsZSBpcyBub3QgbWFkZSBhdmFpbGFibGUgdW50aWwgdGhlIG9yaWdpbmFsIGZpbGUgaXMgbm8gbG9uZ2VyIGluIHVzZS4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBpZGVudGljYWwgdG8gOmZ1bmM6YHVubGlua2AuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCisKIAogLi4gZnVuY3Rpb246OiByZW1vdmVkaXJzKHBhdGgpCiAKQEAgLTEyNzQsNyArMTcxOCw3IEBACiAgICBzdWNjZXNzZnVsbHkgcmVtb3ZlZC4KIAogCi0uLiBmdW5jdGlvbjo6IHJlbmFtZShzcmMsIGRzdCkKKy4uIGZ1bmN0aW9uOjogcmVuYW1lKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSkKIAogICAgUmVuYW1lIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSAqc3JjKiB0byAqZHN0Ki4gIElmICpkc3QqIGlzIGEgZGlyZWN0b3J5LAogICAgOmV4YzpgT1NFcnJvcmAgd2lsbCBiZSByYWlzZWQuICBPbiBVbml4LCBpZiAqZHN0KiBleGlzdHMgYW5kIGlzIGEgZmlsZSwgaXQgd2lsbApAQCAtMTI4MiwxMSArMTcyNiwxOCBAQAogICAgVW5peCBmbGF2b3JzIGlmICpzcmMqIGFuZCAqZHN0KiBhcmUgb24gZGlmZmVyZW50IGZpbGVzeXN0ZW1zLiAgSWYgc3VjY2Vzc2Z1bCwKICAgIHRoZSByZW5hbWluZyB3aWxsIGJlIGFuIGF0b21pYyBvcGVyYXRpb24gKHRoaXMgaXMgYSBQT1NJWCByZXF1aXJlbWVudCkuICBPbgogICAgV2luZG93cywgaWYgKmRzdCogYWxyZWFkeSBleGlzdHMsIDpleGM6YE9TRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGV2ZW4gaWYgaXQgaXMgYQotICAgZmlsZTsgdGhlcmUgbWF5IGJlIG5vIHdheSB0byBpbXBsZW1lbnQgYW4gYXRvbWljIHJlbmFtZSB3aGVuICpkc3QqIG5hbWVzIGFuCi0gICBleGlzdGluZyBmaWxlLgorICAgZmlsZS4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCBzcGVjaWZ5aW5nICpzcmNfZGlyX2ZkKiBhbmQvb3IgKmRzdF9kaXJfZmQqIHRvCisgICBzdXBwbHkgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzIDxkaXJfZmQ+YC4KKworICAgSWYgeW91IHdhbnQgY3Jvc3MtcGxhdGZvcm0gb3ZlcndyaXRpbmcgb2YgdGhlIGRlc3RpbmF0aW9uLCB1c2UgOmZ1bmM6YHJlcGxhY2VgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpzcmNfZGlyX2ZkKiBhbmQgKmRzdF9kaXJfZmQqIGFyZ3VtZW50cy4KKwogCiAuLiBmdW5jdGlvbjo6IHJlbmFtZXMob2xkLCBuZXcpCiAKQEAgLTEzMDEsMjIgKzE3NTIsNDYgQEAKICAgICAgIHBlcm1pc3Npb25zIG5lZWRlZCB0byByZW1vdmUgdGhlIGxlYWYgZGlyZWN0b3J5IG9yIGZpbGUuCiAKIAotLi4gZnVuY3Rpb246OiBybWRpcihwYXRoKQorLi4gZnVuY3Rpb246OiByZXBsYWNlKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSkKKworICAgUmVuYW1lIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSAqc3JjKiB0byAqZHN0Ki4gIElmICpkc3QqIGlzIGEgZGlyZWN0b3J5LAorICAgOmV4YzpgT1NFcnJvcmAgd2lsbCBiZSByYWlzZWQuICBJZiAqZHN0KiBleGlzdHMgYW5kIGlzIGEgZmlsZSwgaXQgd2lsbAorICAgYmUgcmVwbGFjZWQgc2lsZW50bHkgaWYgdGhlIHVzZXIgaGFzIHBlcm1pc3Npb24uICBUaGUgb3BlcmF0aW9uIG1heSBmYWlsCisgICBpZiAqc3JjKiBhbmQgKmRzdCogYXJlIG9uIGRpZmZlcmVudCBmaWxlc3lzdGVtcy4gIElmIHN1Y2Nlc3NmdWwsCisgICB0aGUgcmVuYW1pbmcgd2lsbCBiZSBhbiBhdG9taWMgb3BlcmF0aW9uICh0aGlzIGlzIGEgUE9TSVggcmVxdWlyZW1lbnQpLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IHNwZWNpZnlpbmcgKnNyY19kaXJfZmQqIGFuZC9vciAqZHN0X2Rpcl9mZCogdG8KKyAgIHN1cHBseSA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMgPGRpcl9mZD5gLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogcm1kaXIocGF0aCwgKiwgZGlyX2ZkPU5vbmUpCiAKICAgIFJlbW92ZSAoZGVsZXRlKSB0aGUgZGlyZWN0b3J5ICpwYXRoKi4gIE9ubHkgd29ya3Mgd2hlbiB0aGUgZGlyZWN0b3J5IGlzCiAgICBlbXB0eSwgb3RoZXJ3aXNlLCA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQuICBJbiBvcmRlciB0byByZW1vdmUgd2hvbGUKICAgIGRpcmVjdG9yeSB0cmVlcywgOmZ1bmM6YHNodXRpbC5ybXRyZWVgIGNhbiBiZSB1c2VkLgogCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycworICAgPGRpcl9mZD5gLgorCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpkaXJfZmQqIHBhcmFtZXRlci4KIAotLi4gZnVuY3Rpb246OiBzdGF0KHBhdGgpCisKKy4uIGZ1bmN0aW9uOjogc3RhdChwYXRoLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIFBlcmZvcm0gdGhlIGVxdWl2YWxlbnQgb2YgYSA6YzpmdW5jOmBzdGF0YCBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC4KLSAgIChUaGlzIGZ1bmN0aW9uIGZvbGxvd3Mgc3ltbGlua3M7IHRvIHN0YXQgYSBzeW1saW5rIHVzZSA6ZnVuYzpgbHN0YXRgLikKKyAgICpwYXRoKiBtYXkgYmUgc3BlY2lmaWVkIGFzIGVpdGhlciBhIHN0cmluZyBvciBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KKyAgIChUaGlzIGZ1bmN0aW9uIG5vcm1hbGx5IGZvbGxvd3Mgc3ltbGlua3M7IHRvIHN0YXQgYSBzeW1saW5rIGFkZCB0aGUgYXJndW1lbnQKKyAgIGBgZm9sbG93X3N5bWxpbmtzPUZhbHNlYGAsIG9yIHVzZSA6ZnVuYzpgbHN0YXRgLikKIAotICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBvYmplY3Qgd2hvc2UgYXR0cmlidXRlcyBjb3JyZXNwb25kIHRvIHRoZSBtZW1iZXJzCi0gICBvZiB0aGUgOmM6dHlwZTpgc3RhdGAgc3RydWN0dXJlLCBuYW1lbHk6CisgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGFuIG9iamVjdCB3aG9zZSBhdHRyaWJ1dGVzIGNvcnJlc3BvbmQgcm91Z2hseQorICAgdG8gdGhlIG1lbWJlcnMgb2YgdGhlIDpjOnR5cGU6YHN0YXRgIHN0cnVjdHVyZSwgbmFtZWx5OgogCiAgICAqIDphdHRyOmBzdF9tb2RlYCAtIHByb3RlY3Rpb24gYml0cywKICAgICogOmF0dHI6YHN0X2lub2AgLSBpbm9kZSBudW1iZXIsCkBAIC0xMzI1LDEwICsxODAwLDE4IEBACiAgICAqIDphdHRyOmBzdF91aWRgIC0gdXNlciBpZCBvZiBvd25lciwKICAgICogOmF0dHI6YHN0X2dpZGAgLSBncm91cCBpZCBvZiBvd25lciwKICAgICogOmF0dHI6YHN0X3NpemVgIC0gc2l6ZSBvZiBmaWxlLCBpbiBieXRlcywKLSAgICogOmF0dHI6YHN0X2F0aW1lYCAtIHRpbWUgb2YgbW9zdCByZWNlbnQgYWNjZXNzLAotICAgKiA6YXR0cjpgc3RfbXRpbWVgIC0gdGltZSBvZiBtb3N0IHJlY2VudCBjb250ZW50IG1vZGlmaWNhdGlvbiwKLSAgICogOmF0dHI6YHN0X2N0aW1lYCAtIHBsYXRmb3JtIGRlcGVuZGVudDsgdGltZSBvZiBtb3N0IHJlY2VudCBtZXRhZGF0YSBjaGFuZ2Ugb24KLSAgICAgVW5peCwgb3IgdGhlIHRpbWUgb2YgY3JlYXRpb24gb24gV2luZG93cykKKyAgICogOmF0dHI6YHN0X2F0aW1lYCAtIHRpbWUgb2YgbW9zdCByZWNlbnQgYWNjZXNzIGV4cHJlc3NlZCBpbiBzZWNvbmRzLAorICAgKiA6YXR0cjpgc3RfbXRpbWVgIC0gdGltZSBvZiBtb3N0IHJlY2VudCBjb250ZW50IG1vZGlmaWNhdGlvbgorICAgICBleHByZXNzZWQgaW4gc2Vjb25kcywKKyAgICogOmF0dHI6YHN0X2N0aW1lYCAtIHBsYXRmb3JtIGRlcGVuZGVudDsgdGltZSBvZiBtb3N0IHJlY2VudCBtZXRhZGF0YQorICAgICBjaGFuZ2Ugb24gVW5peCwgb3IgdGhlIHRpbWUgb2YgY3JlYXRpb24gb24gV2luZG93cywgZXhwcmVzc2VkIGluIHNlY29uZHMKKyAgICogOmF0dHI6YHN0X2F0aW1lX25zYCAtIHRpbWUgb2YgbW9zdCByZWNlbnQgYWNjZXNzCisgICAgIGV4cHJlc3NlZCBpbiBuYW5vc2Vjb25kcyBhcyBhbiBpbnRlZ2VyLAorICAgKiA6YXR0cjpgc3RfbXRpbWVfbnNgIC0gdGltZSBvZiBtb3N0IHJlY2VudCBjb250ZW50IG1vZGlmaWNhdGlvbgorICAgICBleHByZXNzZWQgaW4gbmFub3NlY29uZHMgYXMgYW4gaW50ZWdlciwKKyAgICogOmF0dHI6YHN0X2N0aW1lX25zYCAtIHBsYXRmb3JtIGRlcGVuZGVudDsgdGltZSBvZiBtb3N0IHJlY2VudCBtZXRhZGF0YQorICAgICBjaGFuZ2Ugb24gVW5peCwgb3IgdGhlIHRpbWUgb2YgY3JlYXRpb24gb24gV2luZG93cywKKyAgICAgZXhwcmVzc2VkIGluIG5hbm9zZWNvbmRzIGFzIGFuIGludGVnZXIKIAogICAgT24gc29tZSBVbml4IHN5c3RlbXMgKHN1Y2ggYXMgTGludXgpLCB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgbWF5IGFsc28gYmUKICAgIGF2YWlsYWJsZToKQEAgLTEzNTgsMTMgKzE4NDEsMjUgQEAKICAgICAgIG9yIEZBVDMyIGZpbGUgc3lzdGVtcywgOmF0dHI6YHN0X210aW1lYCBoYXMgMi1zZWNvbmQgcmVzb2x1dGlvbiwgYW5kCiAgICAgICA6YXR0cjpgc3RfYXRpbWVgIGhhcyBvbmx5IDEtZGF5IHJlc29sdXRpb24uICBTZWUgeW91ciBvcGVyYXRpbmcgc3lzdGVtCiAgICAgICBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLgorICAgICAgU2ltaWxhcmx5LCBhbHRob3VnaCA6YXR0cjpgc3RfYXRpbWVfbnNgLCA6YXR0cjpgc3RfbXRpbWVfbnNgLAorICAgICAgYW5kIDphdHRyOmBzdF9jdGltZV9uc2AgYXJlIGFsd2F5cyBleHByZXNzZWQgaW4gbmFub3NlY29uZHMsIG1hbnkKKyAgICAgIHN5c3RlbXMgZG8gbm90IHByb3ZpZGUgbmFub3NlY29uZCBwcmVjaXNpb24uICBPbiBzeXN0ZW1zIHRoYXQgZG8KKyAgICAgIHByb3ZpZGUgbmFub3NlY29uZCBwcmVjaXNpb24sIHRoZSBmbG9hdGluZy1wb2ludCBvYmplY3QgdXNlZCB0bworICAgICAgc3RvcmUgOmF0dHI6YHN0X2F0aW1lYCwgOmF0dHI6YHN0X210aW1lYCwgYW5kIDphdHRyOmBzdF9jdGltZWAKKyAgICAgIGNhbm5vdCBwcmVzZXJ2ZSBhbGwgb2YgaXQsIGFuZCBhcyBzdWNoIHdpbGwgYmUgc2xpZ2h0bHkgaW5leGFjdC4KKyAgICAgIElmIHlvdSBuZWVkIHRoZSBleGFjdCB0aW1lc3RhbXBzIHlvdSBzaG91bGQgYWx3YXlzIHVzZQorICAgICAgOmF0dHI6YHN0X2F0aW1lX25zYCwgOmF0dHI6YHN0X210aW1lX25zYCwgYW5kIDphdHRyOmBzdF9jdGltZV9uc2AuCiAKLSAgIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgcmV0dXJuIHZhbHVlIG9mIDpmdW5jOmB+b3Muc3RhdGAgaXMgYWxzbyBhY2Nlc3NpYmxlCi0gICBhcyBhIHR1cGxlIG9mIGF0IGxlYXN0IDEwIGludGVnZXJzIGdpdmluZyB0aGUgbW9zdCBpbXBvcnRhbnQgKGFuZCBwb3J0YWJsZSkKLSAgIG1lbWJlcnMgb2YgdGhlIDpjOnR5cGU6YHN0YXRgIHN0cnVjdHVyZSwgaW4gdGhlIG9yZGVyIDphdHRyOmBzdF9tb2RlYCwKLSAgIDphdHRyOmBzdF9pbm9gLCA6YXR0cjpgc3RfZGV2YCwgOmF0dHI6YHN0X25saW5rYCwgOmF0dHI6YHN0X3VpZGAsCi0gICA6YXR0cjpgc3RfZ2lkYCwgOmF0dHI6YHN0X3NpemVgLCA6YXR0cjpgc3RfYXRpbWVgLCA6YXR0cjpgc3RfbXRpbWVgLAotICAgOmF0dHI6YHN0X2N0aW1lYC4gTW9yZSBpdGVtcyBtYXkgYmUgYWRkZWQgYXQgdGhlIGVuZCBieSBzb21lIGltcGxlbWVudGF0aW9ucy4KKyAgIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgcmV0dXJuIHZhbHVlIG9mIDpmdW5jOmB+b3Muc3RhdGAgaXMgYWxzbworICAgYWNjZXNzaWJsZSBhcyBhIHR1cGxlIG9mIGF0IGxlYXN0IDEwIGludGVnZXJzIGdpdmluZyB0aGUgbW9zdCBpbXBvcnRhbnQgKGFuZAorICAgcG9ydGFibGUpIG1lbWJlcnMgb2YgdGhlIDpjOnR5cGU6YHN0YXRgIHN0cnVjdHVyZSwgaW4gdGhlIG9yZGVyCisgICA6YXR0cjpgc3RfbW9kZWAsIDphdHRyOmBzdF9pbm9gLCA6YXR0cjpgc3RfZGV2YCwgOmF0dHI6YHN0X25saW5rYCwKKyAgIDphdHRyOmBzdF91aWRgLCA6YXR0cjpgc3RfZ2lkYCwgOmF0dHI6YHN0X3NpemVgLCA6YXR0cjpgc3RfYXRpbWVgLAorICAgOmF0dHI6YHN0X210aW1lYCwgOmF0dHI6YHN0X2N0aW1lYC4gTW9yZSBpdGVtcyBtYXkgYmUgYWRkZWQgYXQgdGhlIGVuZCBieQorICAgc29tZSBpbXBsZW1lbnRhdGlvbnMuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gIGFuZAorICAgOnJlZjpgbm90IGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCiAKICAgIC4uIGluZGV4OjogbW9kdWxlOiBzdGF0CiAKQEAgLTEzODUsNiArMTg4MCwxMiBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICpkaXJfZmQqIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudHMsCisgICAgICBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIGluc3RlYWQgb2YgYSBwYXRoLAorICAgICAgYW5kIHRoZSA6YXR0cjpgc3RfYXRpbWVfbnNgLCA6YXR0cjpgc3RfbXRpbWVfbnNgLAorICAgICAgYW5kIDphdHRyOmBzdF9jdGltZV9uc2AgbWVtYmVycy4KKwogCiAuLiBmdW5jdGlvbjo6IHN0YXRfZmxvYXRfdGltZXMoW25ld3ZhbHVlXSkKIApAQCAtMTQxMCw2ICsxOTExLDggQEAKICAgIGFyZSBwcm9jZXNzZWQsIHRoaXMgYXBwbGljYXRpb24gc2hvdWxkIHR1cm4gdGhlIGZlYXR1cmUgb2ZmIHVudGlsIHRoZSBsaWJyYXJ5CiAgICBoYXMgYmVlbiBjb3JyZWN0ZWQuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKwogCiAuLiBmdW5jdGlvbjo6IHN0YXR2ZnMocGF0aCkKIApAQCAtMTQyNSwzNCArMTkyOCwxMTggQEAKICAgIHJlYWQtb25seSwgYW5kIGlmIDpjb25zdDpgU1RfTk9TVUlEYCBpcyBzZXQsIHRoZSBzZW1hbnRpY3Mgb2YKICAgIHNldHVpZC9zZXRnaWQgYml0cyBhcmUgZGlzYWJsZWQgb3Igbm90IHN1cHBvcnRlZC4KIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBUaGUgOmNvbnN0OmBTVF9SRE9OTFlgIGFuZCA6Y29uc3Q6YFNUX05PU1VJRGAgY29uc3RhbnRzIHdlcmUgYWRkZWQuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCouCiAKLS4uIGZ1bmN0aW9uOjogc3ltbGluayhzb3VyY2UsIGxpbmtfbmFtZSkKLSAgICAgICAgICAgICAgc3ltbGluayhzb3VyY2UsIGxpbmtfbmFtZSwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1GYWxzZSkKKworLi4gZGF0YTo6IHN1cHBvcnRzX2Rpcl9mZAorCisgICBBIDpjbGFzczpgfmNvbGxlY3Rpb25zLlNldGAgb2JqZWN0IGluZGljYXRpbmcgd2hpY2ggZnVuY3Rpb25zIGluIHRoZQorICAgOm1vZDpgb3NgIG1vZHVsZSBwZXJtaXQgdXNlIG9mIHRoZWlyICpkaXJfZmQqIHBhcmFtZXRlci4gIERpZmZlcmVudCBwbGF0Zm9ybXMKKyAgIHByb3ZpZGUgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdHksIGFuZCBhbiBvcHRpb24gdGhhdCBtaWdodCB3b3JrIG9uIG9uZSBtaWdodAorICAgYmUgdW5zdXBwb3J0ZWQgb24gYW5vdGhlci4gIEZvciBjb25zaXN0ZW5jeSdzIHNha2VzLCBmdW5jdGlvbnMgdGhhdCBzdXBwb3J0CisgICAqZGlyX2ZkKiBhbHdheXMgYWxsb3cgc3BlY2lmeWluZyB0aGUgcGFyYW1ldGVyLCBidXQgd2lsbCByYWlzZSBhbiBleGNlcHRpb24KKyAgIGlmIHRoZSBmdW5jdGlvbmFsaXR5IGlzIG5vdCBhY3R1YWxseSBhdmFpbGFibGUuCisKKyAgIFRvIGNoZWNrIHdoZXRoZXIgYSBwYXJ0aWN1bGFyIGZ1bmN0aW9uIHBlcm1pdHMgdXNlIG9mIGl0cyAqZGlyX2ZkKgorICAgcGFyYW1ldGVyLCB1c2UgdGhlIGBgaW5gYCBvcGVyYXRvciBvbiBgYHN1cHBvcnRzX2Rpcl9mZGBgLiAgQXMgYW4gZXhhbXBsZSwKKyAgIHRoaXMgZXhwcmVzc2lvbiBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlICpkaXJfZmQqIHBhcmFtZXRlciBvZiA6ZnVuYzpgb3Muc3RhdGAKKyAgIGlzIGxvY2FsbHkgYXZhaWxhYmxlOjoKKworICAgICAgIG9zLnN0YXQgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkCisKKyAgIEN1cnJlbnRseSAqZGlyX2ZkKiBwYXJhbWV0ZXJzIG9ubHkgd29yayBvbiBVbml4IHBsYXRmb3Jtczsgbm9uZSBvZiB0aGVtIHdvcmsKKyAgIG9uIFdpbmRvd3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBzdXBwb3J0c19lZmZlY3RpdmVfaWRzCisKKyAgIEEgOmNsYXNzOmB+Y29sbGVjdGlvbnMuU2V0YCBvYmplY3QgaW5kaWNhdGluZyB3aGljaCBmdW5jdGlvbnMgaW4gdGhlCisgICA6bW9kOmBvc2AgbW9kdWxlIHBlcm1pdCB1c2Ugb2YgdGhlICplZmZlY3RpdmVfaWRzKiBwYXJhbWV0ZXIgZm9yCisgICA6ZnVuYzpgb3MuYWNjZXNzYC4gIElmIHRoZSBsb2NhbCBwbGF0Zm9ybSBzdXBwb3J0cyBpdCwgdGhlIGNvbGxlY3Rpb24gd2lsbAorICAgY29udGFpbiA6ZnVuYzpgb3MuYWNjZXNzYCwgb3RoZXJ3aXNlIGl0IHdpbGwgYmUgZW1wdHkuCisKKyAgIFRvIGNoZWNrIHdoZXRoZXIgeW91IGNhbiB1c2UgdGhlICplZmZlY3RpdmVfaWRzKiBwYXJhbWV0ZXIgZm9yCisgICA6ZnVuYzpgb3MuYWNjZXNzYCwgdXNlIHRoZSBgYGluYGAgb3BlcmF0b3Igb24gYGBzdXBwb3J0c19kaXJfZmRgYCwgbGlrZSBzbzo6CisKKyAgICAgICBvcy5hY2Nlc3MgaW4gb3Muc3VwcG9ydHNfZWZmZWN0aXZlX2lkcworCisgICBDdXJyZW50bHkgKmVmZmVjdGl2ZV9pZHMqIG9ubHkgd29ya3Mgb24gVW5peCBwbGF0Zm9ybXM7IGl0IGRvZXMgbm90IHdvcmsgb24KKyAgIFdpbmRvd3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBzdXBwb3J0c19mZAorCisgICBBIDpjbGFzczpgfmNvbGxlY3Rpb25zLlNldGAgb2JqZWN0IGluZGljYXRpbmcgd2hpY2ggZnVuY3Rpb25zIGluIHRoZQorICAgOm1vZDpgb3NgIG1vZHVsZSBwZXJtaXQgc3BlY2lmeWluZyB0aGVpciAqcGF0aCogcGFyYW1ldGVyIGFzIGFuIG9wZW4gZmlsZQorICAgZGVzY3JpcHRvci4gIERpZmZlcmVudCBwbGF0Zm9ybXMgcHJvdmlkZSBkaWZmZXJlbnQgZnVuY3Rpb25hbGl0eSwgYW5kIGFuCisgICBvcHRpb24gdGhhdCBtaWdodCB3b3JrIG9uIG9uZSBtaWdodCBiZSB1bnN1cHBvcnRlZCBvbiBhbm90aGVyLiAgRm9yCisgICBjb25zaXN0ZW5jeSdzIHNha2VzLCBmdW5jdGlvbnMgdGhhdCBzdXBwb3J0ICpmZCogYWx3YXlzIGFsbG93IHNwZWNpZnlpbmcKKyAgIHRoZSBwYXJhbWV0ZXIsIGJ1dCB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgZnVuY3Rpb25hbGl0eSBpcyBub3QKKyAgIGFjdHVhbGx5IGF2YWlsYWJsZS4KKworICAgVG8gY2hlY2sgd2hldGhlciBhIHBhcnRpY3VsYXIgZnVuY3Rpb24gcGVybWl0cyBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZQorICAgZGVzY3JpcHRvciBmb3IgaXRzICpwYXRoKiBwYXJhbWV0ZXIsIHVzZSB0aGUgYGBpbmBgIG9wZXJhdG9yIG9uCisgICBgYHN1cHBvcnRzX2ZkYGAuIEFzIGFuIGV4YW1wbGUsIHRoaXMgZXhwcmVzc2lvbiBkZXRlcm1pbmVzIHdoZXRoZXIKKyAgIDpmdW5jOmBvcy5jaGRpcmAgYWNjZXB0cyBvcGVuIGZpbGUgZGVzY3JpcHRvcnMgd2hlbiBjYWxsZWQgb24geW91ciBsb2NhbAorICAgcGxhdGZvcm06OgorCisgICAgICAgb3MuY2hkaXIgaW4gb3Muc3VwcG9ydHNfZmQKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IHN1cHBvcnRzX2ZvbGxvd19zeW1saW5rcworCisgICBBIDpjbGFzczpgfmNvbGxlY3Rpb25zLlNldGAgb2JqZWN0IGluZGljYXRpbmcgd2hpY2ggZnVuY3Rpb25zIGluIHRoZQorICAgOm1vZDpgb3NgIG1vZHVsZSBwZXJtaXQgdXNlIG9mIHRoZWlyICpmb2xsb3dfc3ltbGlua3MqIHBhcmFtZXRlci4gIERpZmZlcmVudAorICAgcGxhdGZvcm1zIHByb3ZpZGUgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdHksIGFuZCBhbiBvcHRpb24gdGhhdCBtaWdodCB3b3JrIG9uCisgICBvbmUgbWlnaHQgYmUgdW5zdXBwb3J0ZWQgb24gYW5vdGhlci4gIEZvciBjb25zaXN0ZW5jeSdzIHNha2VzLCBmdW5jdGlvbnMgdGhhdAorICAgc3VwcG9ydCAqZm9sbG93X3N5bWxpbmtzKiBhbHdheXMgYWxsb3cgc3BlY2lmeWluZyB0aGUgcGFyYW1ldGVyLCBidXQgd2lsbAorICAgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSBmdW5jdGlvbmFsaXR5IGlzIG5vdCBhY3R1YWxseSBhdmFpbGFibGUuCisKKyAgIFRvIGNoZWNrIHdoZXRoZXIgYSBwYXJ0aWN1bGFyIGZ1bmN0aW9uIHBlcm1pdHMgdXNlIG9mIGl0cyAqZm9sbG93X3N5bWxpbmtzKgorICAgcGFyYW1ldGVyLCB1c2UgdGhlIGBgaW5gYCBvcGVyYXRvciBvbiBgYHN1cHBvcnRzX2ZvbGxvd19zeW1saW5rc2BgLiAgQXMgYW4KKyAgIGV4YW1wbGUsIHRoaXMgZXhwcmVzc2lvbiBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlICpmb2xsb3dfc3ltbGlua3MqIHBhcmFtZXRlcgorICAgb2YgOmZ1bmM6YG9zLnN0YXRgIGlzIGxvY2FsbHkgYXZhaWxhYmxlOjoKKworICAgICAgIG9zLnN0YXQgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogc3ltbGluayhzb3VyY2UsIGxpbmtfbmFtZSwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1GYWxzZSwgKiwgZGlyX2ZkPU5vbmUpCiAKICAgIENyZWF0ZSBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdG8gKnNvdXJjZSogbmFtZWQgKmxpbmtfbmFtZSouCiAKLSAgIE9uIFdpbmRvd3MsIHN5bWxpbmsgdmVyc2lvbiB0YWtlcyBhbiBhZGRpdGlvbmFsIG9wdGlvbmFsIHBhcmFtZXRlciwKLSAgICp0YXJnZXRfaXNfZGlyZWN0b3J5Kiwgd2hpY2ggZGVmYXVsdHMgdG8gYGBGYWxzZWBgLgotCi0gICBPbiBXaW5kb3dzLCBhIHN5bWxpbmsgcmVwcmVzZW50cyBhIGZpbGUgb3IgYSBkaXJlY3RvcnksIGFuZCBkb2VzIG5vdCBtb3JwaCB0bwotICAgdGhlIHRhcmdldCBkeW5hbWljYWxseS4gIElmICp0YXJnZXRfaXNfZGlyZWN0b3J5KiBpcyBzZXQgdG8gYGBUcnVlYGAsIHRoZQotICAgc3ltbGluayB3aWxsIGJlIGNyZWF0ZWQgYXMgYSBkaXJlY3Rvcnkgc3ltbGluaywgb3RoZXJ3aXNlIGFzIGEgZmlsZSBzeW1saW5rCi0gICAodGhlIGRlZmF1bHQpLgorICAgT24gV2luZG93cywgYSBzeW1saW5rIHJlcHJlc2VudHMgZWl0aGVyIGEgZmlsZSBvciBhIGRpcmVjdG9yeSwgYW5kIGRvZXMgbm90CisgICBtb3JwaCB0byB0aGUgdGFyZ2V0IGR5bmFtaWNhbGx5LiAgSWYgKnRhcmdldF9pc19kaXJlY3RvcnkqIGlzIHNldCB0byBgYFRydWVgYCwKKyAgIHRoZSBzeW1saW5rIHdpbGwgYmUgY3JlYXRlZCBhcyBhIGRpcmVjdG9yeSBzeW1saW5rLCBvdGhlcndpc2UgYXMgYSBmaWxlIHN5bWxpbmsKKyAgICh0aGUgZGVmYXVsdCkuICBPbiBub24tV2luZG93IHBsYXRmb3JtcywgKnRhcmdldF9pc19kaXJlY3RvcnkqIGlzIGlnbm9yZWQuCiAKICAgIFN5bWJvbGljIGxpbmsgc3VwcG9ydCB3YXMgaW50cm9kdWNlZCBpbiBXaW5kb3dzIDYuMCAoVmlzdGEpLiAgOmZ1bmM6YHN5bWxpbmtgCiAgICB3aWxsIHJhaXNlIGEgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgb24gV2luZG93cyB2ZXJzaW9ucyBlYXJsaWVyIHRoYW4gNi4wLgogCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycworICAgPGRpcl9mZD5gLgorCiAgICAuLiBub3RlOjoKIAotICAgICAgVGhlICpTZUNyZWF0ZVN5bWJvbGljTGlua1ByaXZpbGVnZSogaXMgcmVxdWlyZWQgaW4gb3JkZXIgdG8gc3VjY2Vzc2Z1bGx5Ci0gICAgICBjcmVhdGUgc3ltbGlua3MuIFRoaXMgcHJpdmlsZWdlIGlzIG5vdCB0eXBpY2FsbHkgZ3JhbnRlZCB0byByZWd1bGFyCi0gICAgICB1c2VycyBidXQgaXMgYXZhaWxhYmxlIHRvIGFjY291bnRzIHdoaWNoIGNhbiBlc2NhbGF0ZSBwcml2aWxlZ2VzIHRvIHRoZQotICAgICAgYWRtaW5pc3RyYXRvciBsZXZlbC4gRWl0aGVyIG9idGFpbmluZyB0aGUgcHJpdmlsZWdlIG9yIHJ1bm5pbmcgeW91cgorICAgICAgT24gV2luZG93cywgdGhlICpTZUNyZWF0ZVN5bWJvbGljTGlua1ByaXZpbGVnZSogaXMgcmVxdWlyZWQgaW4gb3JkZXIgdG8KKyAgICAgIHN1Y2Nlc3NmdWxseSBjcmVhdGUgc3ltbGlua3MuIFRoaXMgcHJpdmlsZWdlIGlzIG5vdCB0eXBpY2FsbHkgZ3JhbnRlZCB0bworICAgICAgcmVndWxhciB1c2VycyBidXQgaXMgYXZhaWxhYmxlIHRvIGFjY291bnRzIHdoaWNoIGNhbiBlc2NhbGF0ZSBwcml2aWxlZ2VzCisgICAgICB0byB0aGUgYWRtaW5pc3RyYXRvciBsZXZlbC4gRWl0aGVyIG9idGFpbmluZyB0aGUgcHJpdmlsZWdlIG9yIHJ1bm5pbmcgeW91cgogICAgICAgYXBwbGljYXRpb24gYXMgYW4gYWRtaW5pc3RyYXRvciBhcmUgd2F5cyB0byBzdWNjZXNzZnVsbHkgY3JlYXRlIHN5bWxpbmtzLgogCiAgICAgICA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGFuIHVucHJpdmlsZWdlZApAQCAtMTQ2MywzMSArMjA1MCw4NSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIFdpbmRvd3MgNi4wIChWaXN0YSkgc3ltYm9saWMgbGlua3MuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICpkaXJfZmQqIGFyZ3VtZW50LCBhbmQgbm93IGFsbG93ICp0YXJnZXRfaXNfZGlyZWN0b3J5KgorICAgICAgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLgogCi0uLiBmdW5jdGlvbjo6IHVubGluayhwYXRoKQogCi0gICBSZW1vdmUgKGRlbGV0ZSkgdGhlIGZpbGUgKnBhdGgqLiAgVGhpcyBpcyB0aGUgc2FtZSBmdW5jdGlvbiBhcwotICAgOmZ1bmM6YHJlbW92ZWA7IHRoZSA6ZnVuYzpgdW5saW5rYCBuYW1lIGlzIGl0cyB0cmFkaXRpb25hbCBVbml4Ci0gICBuYW1lLgorLi4gZnVuY3Rpb246OiBzeW5jKCkKKworICAgRm9yY2Ugd3JpdGUgb2YgZXZlcnl0aGluZyB0byBkaXNrLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogdHJ1bmNhdGUocGF0aCwgbGVuZ3RoKQorCisgICBUcnVuY2F0ZSB0aGUgZmlsZSBjb3JyZXNwb25kaW5nIHRvICpwYXRoKiwgc28gdGhhdCBpdCBpcyBhdCBtb3N0CisgICAqbGVuZ3RoKiBieXRlcyBpbiBzaXplLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHVubGluayhwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkKKworICAgUmVtb3ZlIChkZWxldGUpIHRoZSBmaWxlICpwYXRoKi4gIFRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvCisgICA6ZnVuYzpgcmVtb3ZlYDsgdGhlIGBgdW5saW5rYGAgbmFtZSBpcyBpdHMgdHJhZGl0aW9uYWwgVW5peAorICAgbmFtZS4gIFBsZWFzZSBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIDpmdW5jOmByZW1vdmVgIGZvcgorICAgZnVydGhlciBpbmZvcm1hdGlvbi4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKLS4uIGZ1bmN0aW9uOjogdXRpbWUocGF0aCwgdGltZXMpCiAKLSAgIFNldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lcyBvZiB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgKnBhdGgqLiBJZiAqdGltZXMqCi0gICBpcyBgYE5vbmVgYCwgdGhlbiB0aGUgZmlsZSdzIGFjY2VzcyBhbmQgbW9kaWZpZWQgdGltZXMgYXJlIHNldCB0byB0aGUgY3VycmVudAotICAgdGltZS4gKFRoZSBlZmZlY3QgaXMgc2ltaWxhciB0byBydW5uaW5nIHRoZSBVbml4IHByb2dyYW0gOnByb2dyYW06YHRvdWNoYCBvbgotICAgdGhlIHBhdGguKSAgT3RoZXJ3aXNlLCAqdGltZXMqIG11c3QgYmUgYSAyLXR1cGxlIG9mIG51bWJlcnMsIG9mIHRoZSBmb3JtCi0gICBgYChhdGltZSwgbXRpbWUpYGAgd2hpY2ggaXMgdXNlZCB0byBzZXQgdGhlIGFjY2VzcyBhbmQgbW9kaWZpZWQgdGltZXMsCi0gICByZXNwZWN0aXZlbHkuIFdoZXRoZXIgYSBkaXJlY3RvcnkgY2FuIGJlIGdpdmVuIGZvciAqcGF0aCogZGVwZW5kcyBvbiB3aGV0aGVyCi0gICB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpbXBsZW1lbnRzIGRpcmVjdG9yaWVzIGFzIGZpbGVzIChmb3IgZXhhbXBsZSwgV2luZG93cwotICAgZG9lcyBub3QpLiAgTm90ZSB0aGF0IHRoZSBleGFjdCB0aW1lcyB5b3Ugc2V0IGhlcmUgbWF5IG5vdCBiZSByZXR1cm5lZCBieSBhCi0gICBzdWJzZXF1ZW50IDpmdW5jOmB+b3Muc3RhdGAgY2FsbCwgZGVwZW5kaW5nIG9uIHRoZSByZXNvbHV0aW9uIHdpdGggd2hpY2ggeW91cgotICAgb3BlcmF0aW5nIHN5c3RlbSByZWNvcmRzIGFjY2VzcyBhbmQgbW9kaWZpY2F0aW9uIHRpbWVzOyBzZWUgOmZ1bmM6YH5vcy5zdGF0YC4KKy4uIGZ1bmN0aW9uOjogdXRpbWUocGF0aCwgdGltZXM9Tm9uZSwgKiwgbnM9Tm9uZSwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQorCisgICBTZXQgdGhlIGFjY2VzcyBhbmQgbW9kaWZpZWQgdGltZXMgb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5ICpwYXRoKi4KKworICAgOmZ1bmM6YHV0aW1lYCB0YWtlcyB0d28gb3B0aW9uYWwgcGFyYW1ldGVycywgKnRpbWVzKiBhbmQgKm5zKi4KKyAgIFRoZXNlIHNwZWNpZnkgdGhlIHRpbWVzIHNldCBvbiAqcGF0aCogYW5kIGFyZSB1c2VkIGFzIGZvbGxvd3M6CisKKyAgIC0gSWYgKm5zKiBpcyBub3QgYGBOb25lYGAsCisgICAgIGl0IG11c3QgYmUgYSAyLXR1cGxlIG9mIHRoZSBmb3JtIGBgKGF0aW1lX25zLCBtdGltZV9ucylgYAorICAgICB3aGVyZSBlYWNoIG1lbWJlciBpcyBhbiBpbnQgZXhwcmVzc2luZyBuYW5vc2Vjb25kcy4KKyAgIC0gSWYgKnRpbWVzKiBpcyBub3QgYGBOb25lYGAsCisgICAgIGl0IG11c3QgYmUgYSAyLXR1cGxlIG9mIHRoZSBmb3JtIGBgKGF0aW1lLCBtdGltZSlgYAorICAgICB3aGVyZSBlYWNoIG1lbWJlciBpcyBhbiBpbnQgb3IgZmxvYXQgZXhwcmVzc2luZyBzZWNvbmRzLgorICAgLSBJZiAqdGltZXMqIGFuZCAqbnMqIGFyZSBib3RoIGBgTm9uZWBgLAorICAgICB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gc3BlY2lmeWluZyBgYG5zPShhdGltZV9ucywgbXRpbWVfbnMpYGAKKyAgICAgd2hlcmUgYm90aCB0aW1lcyBhcmUgdGhlIGN1cnJlbnQgdGltZS4KKyAgICAgKFRoZSBlZmZlY3QgaXMgc2ltaWxhciB0byBydW5uaW5nIHRoZSBVbml4IHByb2dyYW0KKyAgICAgOnByb2dyYW06YHRvdWNoYCBvbiAqcGF0aCouKQorCisgICBJdCBpcyBhbiBlcnJvciB0byBzcGVjaWZ5IHR1cGxlcyBmb3IgYm90aCAqdGltZXMqIGFuZCAqbnMqLgorCisgICBXaGV0aGVyIGEgZGlyZWN0b3J5IGNhbiBiZSBnaXZlbiBmb3IgKnBhdGgqCisgICBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaW1wbGVtZW50cyBkaXJlY3RvcmllcyBhcyBmaWxlcworICAgKGZvciBleGFtcGxlLCBXaW5kb3dzIGRvZXMgbm90KS4gIE5vdGUgdGhhdCB0aGUgZXhhY3QgdGltZXMgeW91IHNldCBoZXJlIG1heQorICAgbm90IGJlIHJldHVybmVkIGJ5IGEgc3Vic2VxdWVudCA6ZnVuYzpgfm9zLnN0YXRgIGNhbGwsIGRlcGVuZGluZyBvbiB0aGUKKyAgIHJlc29sdXRpb24gd2l0aCB3aGljaCB5b3VyIG9wZXJhdGluZyBzeXN0ZW0gcmVjb3JkcyBhY2Nlc3MgYW5kIG1vZGlmaWNhdGlvbgorICAgdGltZXM7IHNlZSA6ZnVuYzpgfm9zLnN0YXRgLiAgVGhlIGJlc3Qgd2F5IHRvIHByZXNlcnZlIGV4YWN0IHRpbWVzIGlzIHRvCisgICB1c2UgdGhlICpzdF9hdGltZV9ucyogYW5kICpzdF9tdGltZV9ucyogZmllbGRzIGZyb20gdGhlIDpmdW5jOmBvcy5zdGF0YAorICAgcmVzdWx0IG9iamVjdCB3aXRoIHRoZSAqbnMqIHBhcmFtZXRlciB0byBgdXRpbWVgLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCwKKyAgIDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycyA8ZGlyX2ZkPmAgYW5kIDpyZWY6YG5vdAorICAgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKiwKKyAgICAgIGFuZCB0aGUgKmRpcl9mZCosICpmb2xsb3dfc3ltbGlua3MqLCBhbmQgKm5zKiBwYXJhbWV0ZXJzLgorCiAKIC4uIGZ1bmN0aW9uOjogd2Fsayh0b3AsIHRvcGRvd249VHJ1ZSwgb25lcnJvcj1Ob25lLCBmb2xsb3dsaW5rcz1GYWxzZSkKIApAQCAtMTUzNCw5ICsyMTc1LDkgQEAKIAogICAgLi4gbm90ZTo6CiAKLSAgICAgIEJlIGF3YXJlIHRoYXQgc2V0dGluZyAqZm9sbG93bGlua3MqIHRvIGBgVHJ1ZWBgIGNhbiBsZWFkIHRvIGluZmluaXRlIHJlY3Vyc2lvbiBpZiBhCi0gICAgICBsaW5rIHBvaW50cyB0byBhIHBhcmVudCBkaXJlY3Rvcnkgb2YgaXRzZWxmLiA6ZnVuYzpgd2Fsa2AgZG9lcyBub3Qga2VlcCB0cmFjayBvZgotICAgICAgdGhlIGRpcmVjdG9yaWVzIGl0IHZpc2l0ZWQgYWxyZWFkeS4KKyAgICAgIEJlIGF3YXJlIHRoYXQgc2V0dGluZyAqZm9sbG93bGlua3MqIHRvIGBgVHJ1ZWBgIGNhbiBsZWFkIHRvIGluZmluaXRlCisgICAgICByZWN1cnNpb24gaWYgYSBsaW5rIHBvaW50cyB0byBhIHBhcmVudCBkaXJlY3Rvcnkgb2YgaXRzZWxmLiA6ZnVuYzpgd2Fsa2AKKyAgICAgIGRvZXMgbm90IGtlZXAgdHJhY2sgb2YgdGhlIGRpcmVjdG9yaWVzIGl0IHZpc2l0ZWQgYWxyZWFkeS4KIAogICAgLi4gbm90ZTo6CiAKQEAgLTE1NzIsNiArMjIxMywxMzcgQEAKICAgICAgICAgICAgICAgb3Mucm1kaXIob3MucGF0aC5qb2luKHJvb3QsIG5hbWUpKQogCiAKKy4uIGZ1bmN0aW9uOjogZndhbGsodG9wPScuJywgdG9wZG93bj1UcnVlLCBvbmVycm9yPU5vbmUsICosIGZvbGxvd19zeW1saW5rcz1GYWxzZSwgZGlyX2ZkPU5vbmUpCisKKyAgIC4uIGluZGV4OjoKKyAgICAgIHNpbmdsZTogZGlyZWN0b3J5OyB3YWxraW5nCisgICAgICBzaW5nbGU6IGRpcmVjdG9yeTsgdHJhdmVyc2FsCisKKyAgIFRoaXMgYmVoYXZlcyBleGFjdGx5IGxpa2UgOmZ1bmM6YHdhbGtgLCBleGNlcHQgdGhhdCBpdCB5aWVsZHMgYSA0LXR1cGxlCisgICBgYChkaXJwYXRoLCBkaXJuYW1lcywgZmlsZW5hbWVzLCBkaXJmZClgYCwgYW5kIGl0IHN1cHBvcnRzIGBgZGlyX2ZkYGAuCisKKyAgICpkaXJwYXRoKiwgKmRpcm5hbWVzKiBhbmQgKmZpbGVuYW1lcyogYXJlIGlkZW50aWNhbCB0byA6ZnVuYzpgd2Fsa2Agb3V0cHV0LAorICAgYW5kICpkaXJmZCogaXMgYSBmaWxlIGRlc2NyaXB0b3IgcmVmZXJyaW5nIHRvIHRoZSBkaXJlY3RvcnkgKmRpcnBhdGgqLgorCisgICBUaGlzIGZ1bmN0aW9uIGFsd2F5cyBzdXBwb3J0cyA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YCBhbmQgOnJlZjpgbm90IGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuICBOb3RlIGhvd2V2ZXIKKyAgIHRoYXQsIHVubGlrZSBvdGhlciBmdW5jdGlvbnMsIHRoZSA6ZnVuYzpgZndhbGtgIGRlZmF1bHQgdmFsdWUgZm9yCisgICAqZm9sbG93X3N5bWxpbmtzKiBpcyBgYEZhbHNlYGAuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBTaW5jZSA6ZnVuYzpgZndhbGtgIHlpZWxkcyBmaWxlIGRlc2NyaXB0b3JzLCB0aG9zZSBhcmUgb25seSB2YWxpZCB1bnRpbAorICAgICAgdGhlIG5leHQgaXRlcmF0aW9uIHN0ZXAsIHNvIHlvdSBzaG91bGQgZHVwbGljYXRlIHRoZW0gKGUuZy4gd2l0aAorICAgICAgOmZ1bmM6YGR1cGApIGlmIHlvdSB3YW50IHRvIGtlZXAgdGhlbSBsb25nZXIuCisKKyAgIFRoaXMgZXhhbXBsZSBkaXNwbGF5cyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRha2VuIGJ5IG5vbi1kaXJlY3RvcnkgZmlsZXMgaW4gZWFjaAorICAgZGlyZWN0b3J5IHVuZGVyIHRoZSBzdGFydGluZyBkaXJlY3RvcnksIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgbG9vayB1bmRlciBhbnkKKyAgIENWUyBzdWJkaXJlY3Rvcnk6OgorCisgICAgICBpbXBvcnQgb3MKKyAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcywgcm9vdGZkIGluIG9zLmZ3YWxrKCdweXRob24vTGliL2VtYWlsJyk6CisgICAgICAgICAgcHJpbnQocm9vdCwgImNvbnN1bWVzIiwgZW5kPSIiKQorICAgICAgICAgIHByaW50KHN1bShbb3Muc3RhdChuYW1lLCBkaXJfZmQ9cm9vdGZkKS5zdF9zaXplIGZvciBuYW1lIGluIGZpbGVzXSksCisgICAgICAgICAgICAgICAgZW5kPSIiKQorICAgICAgICAgIHByaW50KCJieXRlcyBpbiIsIGxlbihmaWxlcyksICJub24tZGlyZWN0b3J5IGZpbGVzIikKKyAgICAgICAgICBpZiAnQ1ZTJyBpbiBkaXJzOgorICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnQ1ZTJykgICMgZG9uJ3QgdmlzaXQgQ1ZTIGRpcmVjdG9yaWVzCisKKyAgIEluIHRoZSBuZXh0IGV4YW1wbGUsIHdhbGtpbmcgdGhlIHRyZWUgYm90dG9tLXVwIGlzIGVzc2VudGlhbDoKKyAgIDpmdW5jOmBybWRpcmAgZG9lc24ndCBhbGxvdyBkZWxldGluZyBhIGRpcmVjdG9yeSBiZWZvcmUgdGhlIGRpcmVjdG9yeSBpcworICAgZW1wdHk6OgorCisgICAgICAjIERlbGV0ZSBldmVyeXRoaW5nIHJlYWNoYWJsZSBmcm9tIHRoZSBkaXJlY3RvcnkgbmFtZWQgaW4gInRvcCIsCisgICAgICAjIGFzc3VtaW5nIHRoZXJlIGFyZSBubyBzeW1ib2xpYyBsaW5rcy4KKyAgICAgICMgQ0FVVElPTjogIFRoaXMgaXMgZGFuZ2Vyb3VzISAgRm9yIGV4YW1wbGUsIGlmIHRvcCA9PSAnLycsIGl0CisgICAgICAjIGNvdWxkIGRlbGV0ZSBhbGwgeW91ciBkaXNrIGZpbGVzLgorICAgICAgaW1wb3J0IG9zCisgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMsIHJvb3RmZCBpbiBvcy5md2Fsayh0b3AsIHRvcGRvd249RmFsc2UpOgorICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVzOgorICAgICAgICAgICAgICBvcy51bmxpbmsobmFtZSwgZGlyX2ZkPXJvb3RmZCkKKyAgICAgICAgICBmb3IgbmFtZSBpbiBkaXJzOgorICAgICAgICAgICAgICBvcy5ybWRpcihuYW1lLCBkaXJfZmQ9cm9vdGZkKQorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKK0xpbnV4IGV4dGVuZGVkIGF0dHJpYnV0ZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKK1RoZXNlIGZ1bmN0aW9ucyBhcmUgYWxsIGF2YWlsYWJsZSBvbiBMaW51eCBvbmx5LgorCisuLiBmdW5jdGlvbjo6IGdldHhhdHRyKHBhdGgsIGF0dHJpYnV0ZSwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisKKyAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGV4dGVuZGVkIGZpbGVzeXN0ZW0gYXR0cmlidXRlICphdHRyaWJ1dGUqIGZvcgorICAgKnBhdGgqLiAqYXR0cmlidXRlKiBjYW4gYmUgYnl0ZXMgb3Igc3RyLiBJZiBpdCBpcyBzdHIsIGl0IGlzIGVuY29kZWQKKyAgIHdpdGggdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gIGFuZAorICAgOnJlZjpgbm90IGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCisKKworLi4gZnVuY3Rpb246OiBsaXN0eGF0dHIocGF0aD1Ob25lLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKworICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgZXh0ZW5kZWQgZmlsZXN5c3RlbSBhdHRyaWJ1dGVzIG9uICpwYXRoKi4gIFRoZQorICAgYXR0cmlidXRlcyBpbiB0aGUgbGlzdCBhcmUgcmVwcmVzZW50ZWQgYXMgc3RyaW5ncyBkZWNvZGVkIHdpdGggdGhlIGZpbGVzeXN0ZW0KKyAgIGVuY29kaW5nLiAgSWYgKnBhdGgqIGlzIGBgTm9uZWBgLCA6ZnVuYzpgbGlzdHhhdHRyYCB3aWxsIGV4YW1pbmUgdGhlIGN1cnJlbnQKKyAgIGRpcmVjdG9yeS4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCisgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KKworCisuLiBmdW5jdGlvbjo6IHJlbW92ZXhhdHRyKHBhdGgsIGF0dHJpYnV0ZSwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisKKyAgIFJlbW92ZXMgdGhlIGV4dGVuZGVkIGZpbGVzeXN0ZW0gYXR0cmlidXRlICphdHRyaWJ1dGUqIGZyb20gKnBhdGgqLgorICAgKmF0dHJpYnV0ZSogc2hvdWxkIGJlIGJ5dGVzIG9yIHN0ci4gSWYgaXQgaXMgYSBzdHJpbmcsIGl0IGlzIGVuY29kZWQKKyAgIHdpdGggdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gIGFuZAorICAgOnJlZjpgbm90IGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCisKKworLi4gZnVuY3Rpb246OiBzZXR4YXR0cihwYXRoLCBhdHRyaWJ1dGUsIHZhbHVlLCBmbGFncz0wLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKworICAgU2V0IHRoZSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZSAqYXR0cmlidXRlKiBvbiAqcGF0aCogdG8gKnZhbHVlKi4KKyAgICphdHRyaWJ1dGUqIG11c3QgYmUgYSBieXRlcyBvciBzdHIgd2l0aCBubyBlbWJlZGRlZCBOVUxzLiBJZiBpdCBpcyBhIHN0ciwKKyAgIGl0IGlzIGVuY29kZWQgd2l0aCB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZy4gICpmbGFncyogbWF5IGJlCisgICA6ZGF0YTpgWEFUVFJfUkVQTEFDRWAgb3IgOmRhdGE6YFhBVFRSX0NSRUFURWAuIElmIDpkYXRhOmBYQVRUUl9SRVBMQUNFYCBpcworICAgZ2l2ZW4gYW5kIHRoZSBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QsIGBgRUVYSVNUU2BgIHdpbGwgYmUgcmFpc2VkLgorICAgSWYgOmRhdGE6YFhBVFRSX0NSRUFURWAgaXMgZ2l2ZW4gYW5kIHRoZSBhdHRyaWJ1dGUgYWxyZWFkeSBleGlzdHMsIHRoZQorICAgYXR0cmlidXRlIHdpbGwgbm90IGJlIGNyZWF0ZWQgYW5kIGBgRU5PREFUQWBgIHdpbGwgYmUgcmFpc2VkLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCBhbmQKKyAgIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgorCisgICAuLiBub3RlOjoKKworICAgICAgQSBidWcgaW4gTGludXgga2VybmVsIHZlcnNpb25zIGxlc3MgdGhhbiAyLjYuMzkgY2F1c2VkIHRoZSBmbGFncyBhcmd1bWVudAorICAgICAgdG8gYmUgaWdub3JlZCBvbiBzb21lIGZpbGVzeXN0ZW1zLgorCisKKy4uIGRhdGE6OiBYQVRUUl9TSVpFX01BWAorCisgICBUaGUgbWF4aW11bSBzaXplIHRoZSB2YWx1ZSBvZiBhbiBleHRlbmRlZCBhdHRyaWJ1dGUgY2FuIGJlLiBDdXJyZW50bHksIHRoaXMKKyAgIGlzIDY0IEtpQiBvbiBMaW51eC4KKworCisuLiBkYXRhOjogWEFUVFJfQ1JFQVRFCisKKyAgIFRoaXMgaXMgYSBwb3NzaWJsZSB2YWx1ZSBmb3IgdGhlIGZsYWdzIGFyZ3VtZW50IGluIDpmdW5jOmBzZXR4YXR0cmAuIEl0CisgICBpbmRpY2F0ZXMgdGhlIG9wZXJhdGlvbiBtdXN0IGNyZWF0ZSBhbiBhdHRyaWJ1dGUuCisKKworLi4gZGF0YTo6IFhBVFRSX1JFUExBQ0UKKworICAgVGhpcyBpcyBhIHBvc3NpYmxlIHZhbHVlIGZvciB0aGUgZmxhZ3MgYXJndW1lbnQgaW4gOmZ1bmM6YHNldHhhdHRyYC4gSXQKKyAgIGluZGljYXRlcyB0aGUgb3BlcmF0aW9uIG11c3QgcmVwbGFjZSBhbiBleGlzdGluZyBhdHRyaWJ1dGUuCisKKwogLi4gX29zLXByb2Nlc3M6CiAKIFByb2Nlc3MgTWFuYWdlbWVudApAQCAtMTY0NSw4ICsyNDE3LDE2IEBACiAgICA6ZnVuYzpgZXhlY2xwYCwgOmZ1bmM6YGV4ZWN2YCwgYW5kIDpmdW5jOmBleGVjdnBgIGFsbCBjYXVzZSB0aGUgbmV3IHByb2Nlc3MgdG8KICAgIGluaGVyaXQgdGhlIGVudmlyb25tZW50IG9mIHRoZSBjdXJyZW50IHByb2Nlc3MuCiAKKyAgIEZvciA6ZnVuYzpgZXhlY3ZlYCBvbiBzb21lIHBsYXRmb3JtcywgKnBhdGgqIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuCisgICBmaWxlIGRlc2NyaXB0b3IuICBUaGlzIGZ1bmN0aW9uYWxpdHkgbWF5IG5vdCBiZSBzdXBwb3J0ZWQgb24geW91ciBwbGF0Zm9ybTsKKyAgIHlvdSBjYW4gY2hlY2sgd2hldGhlciBvciBub3QgaXQgaXMgYXZhaWxhYmxlIHVzaW5nIDpkYXRhOmBvcy5zdXBwb3J0c19mZGAuCisgICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgorCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqCisgICAgICBmb3IgOmZ1bmM6YGV4ZWN2ZWAuCiAKIC4uIGZ1bmN0aW9uOjogX2V4aXQobikKIApAQCAtMTgzNiw2ICsyNjE2LDggQEAKICAgIHdpbGwgYmUgc2V0IHRvICpzaWcqLiBUaGUgV2luZG93cyB2ZXJzaW9uIG9mIDpmdW5jOmBraWxsYCBhZGRpdGlvbmFsbHkgdGFrZXMKICAgIHByb2Nlc3MgaGFuZGxlcyB0byBiZSBraWxsZWQuCiAKKyAgIFNlZSBhbHNvIDpmdW5jOmBzaWduYWwucHRocmVhZF9raWxsYC4KKwogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAgICAgICBXaW5kb3dzIHN1cHBvcnQuCiAKQEAgLTIwMjYsMTQgKzI4MDgsMzAgQEAKIAogLi4gZnVuY3Rpb246OiB0aW1lcygpCiAKLSAgIFJldHVybiBhIDUtdHVwbGUgb2YgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBpbmRpY2F0aW5nIGFjY3VtdWxhdGVkIChwcm9jZXNzb3IKLSAgIG9yIG90aGVyKSB0aW1lcywgaW4gc2Vjb25kcy4gIFRoZSBpdGVtcyBhcmU6IHVzZXIgdGltZSwgc3lzdGVtIHRpbWUsCi0gICBjaGlsZHJlbidzIHVzZXIgdGltZSwgY2hpbGRyZW4ncyBzeXN0ZW0gdGltZSwgYW5kIGVsYXBzZWQgcmVhbCB0aW1lIHNpbmNlIGEKLSAgIGZpeGVkIHBvaW50IGluIHRoZSBwYXN0LCBpbiB0aGF0IG9yZGVyLiAgU2VlIHRoZSBVbml4IG1hbnVhbCBwYWdlCi0gICA6bWFucGFnZTpgdGltZXMoMilgIG9yIHRoZSBjb3JyZXNwb25kaW5nIFdpbmRvd3MgUGxhdGZvcm0gQVBJIGRvY3VtZW50YXRpb24uCi0gICBPbiBXaW5kb3dzLCBvbmx5IHRoZSBmaXJzdCB0d28gaXRlbXMgYXJlIGZpbGxlZCwgdGhlIG90aGVycyBhcmUgemVyby4KKyAgIFJldHVybnMgdGhlIGN1cnJlbnQgZ2xvYmFsIHByb2Nlc3MgdGltZXMuCisgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGFuIG9iamVjdCB3aXRoIGZpdmUgYXR0cmlidXRlczoKIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzCisgICAqIDphdHRyOmB1c2VyYCAtIHVzZXIgdGltZQorICAgKiA6YXR0cjpgc3lzdGVtYCAtIHN5c3RlbSB0aW1lCisgICAqIDphdHRyOmBjaGlsZHJlbl91c2VyYCAtIHVzZXIgdGltZSBvZiBhbGwgY2hpbGQgcHJvY2Vzc2VzCisgICAqIDphdHRyOmBjaGlsZHJlbl9zeXN0ZW1gIC0gc3lzdGVtIHRpbWUgb2YgYWxsIGNoaWxkIHByb2Nlc3NlcworICAgKiA6YXR0cjpgZWxhcHNlZGAgLSBlbGFwc2VkIHJlYWwgdGltZSBzaW5jZSBhIGZpeGVkIHBvaW50IGluIHRoZSBwYXN0CisKKyAgIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgdGhpcyBvYmplY3QgYWxzbyBiZWhhdmVzIGxpa2UgYSBmaXZlLXR1cGxlCisgICBjb250YWluaW5nIDphdHRyOmB1c2VyYCwgOmF0dHI6YHN5c3RlbWAsIDphdHRyOmBjaGlsZHJlbl91c2VyYCwKKyAgIDphdHRyOmBjaGlsZHJlbl9zeXN0ZW1gLCBhbmQgOmF0dHI6YGVsYXBzZWRgIGluIHRoYXQgb3JkZXIuCisKKyAgIFNlZSB0aGUgVW5peCBtYW51YWwgcGFnZQorICAgOm1hbnBhZ2U6YHRpbWVzKDIpYCBvciB0aGUgY29ycmVzcG9uZGluZyBXaW5kb3dzIFBsYXRmb3JtIEFQSSBkb2N1bWVudGF0aW9uLgorICAgT24gV2luZG93cywgb25seSA6YXR0cjpgdXNlcmAgYW5kIDphdHRyOmBzeXN0ZW1gIGFyZSBrbm93bjsgdGhlIG90aGVyCisgICBhdHRyaWJ1dGVzIGFyZSB6ZXJvLgorICAgT24gT1MvMiwgb25seSA6YXR0cjpgZWxhcHNlZGAgaXMga25vd247IHRoZSBvdGhlciBhdHRyaWJ1dGVzIGFyZSB6ZXJvLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZXR1cm4gdHlwZSBjaGFuZ2VkIGZyb20gYSB0dXBsZSB0byBhIHR1cGxlLWxpa2Ugb2JqZWN0CisgICAgICB3aXRoIG5hbWVkIGF0dHJpYnV0ZXMuCiAKIAogLi4gZnVuY3Rpb246OiB3YWl0KCkKQEAgLTIwNDYsNiArMjg0NCw1OCBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKy4uIGZ1bmN0aW9uOjogd2FpdGlkKGlkdHlwZSwgaWQsIG9wdGlvbnMpCisKKyAgIFdhaXQgZm9yIHRoZSBjb21wbGV0aW9uIG9mIG9uZSBvciBtb3JlIGNoaWxkIHByb2Nlc3Nlcy4KKyAgICppZHR5cGUqIGNhbiBiZSA6ZGF0YTpgUF9QSURgLCA6ZGF0YTpgUF9QR0lEYCBvciA6ZGF0YTpgUF9BTExgLgorICAgKmlkKiBzcGVjaWZpZXMgdGhlIHBpZCB0byB3YWl0IG9uLgorICAgKm9wdGlvbnMqIGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIE9SaW5nIG9mIG9uZSBvciBtb3JlIG9mIDpkYXRhOmBXRVhJVEVEYCwKKyAgIDpkYXRhOmBXU1RPUFBFRGAgb3IgOmRhdGE6YFdDT05USU5VRURgIGFuZCBhZGRpdGlvbmFsbHkgbWF5IGJlIE9SZWQgd2l0aAorICAgOmRhdGE6YFdOT0hBTkdgIG9yIDpkYXRhOmBXTk9XQUlUYC4gVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBvYmplY3QKKyAgIHJlcHJlc2VudGluZyB0aGUgZGF0YSBjb250YWluZWQgaW4gdGhlIDpjOnR5cGU6YHNpZ2luZm9fdGAgc3RydWN0dXJlLCBuYW1lbHk6CisgICA6YXR0cjpgc2lfcGlkYCwgOmF0dHI6YHNpX3VpZGAsIDphdHRyOmBzaV9zaWdub2AsIDphdHRyOmBzaV9zdGF0dXNgLAorICAgOmF0dHI6YHNpX2NvZGVgIG9yIGBgTm9uZWBgIGlmIDpkYXRhOmBXTk9IQU5HYCBpcyBzcGVjaWZpZWQgYW5kIHRoZXJlIGFyZSBubworICAgY2hpbGRyZW4gaW4gYSB3YWl0YWJsZSBzdGF0ZS4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IFBfUElECisgICAgICAgICAgUF9QR0lECisgICAgICAgICAgUF9BTEwKKworICAgVGhlc2UgYXJlIHRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yICppZHR5cGUqIGluIDpmdW5jOmB3YWl0aWRgLiBUaGV5IGFmZmVjdAorICAgaG93ICppZCogaXMgaW50ZXJwcmV0ZWQuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBXRVhJVEVECisgICAgICAgICAgV1NUT1BQRUQKKyAgICAgICAgICBXTk9XQUlUCisKKyAgIEZsYWdzIHRoYXQgY2FuIGJlIHVzZWQgaW4gKm9wdGlvbnMqIGluIDpmdW5jOmB3YWl0aWRgIHRoYXQgc3BlY2lmeSB3aGF0CisgICBjaGlsZCBzaWduYWwgdG8gd2FpdCBmb3IuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IENMRF9FWElURUQKKyAgICAgICAgICBDTERfRFVNUEVECisgICAgICAgICAgQ0xEX1RSQVBQRUQKKyAgICAgICAgICBDTERfQ09OVElOVUVECisKKyAgIFRoZXNlIGFyZSB0aGUgcG9zc2libGUgdmFsdWVzIGZvciA6YXR0cjpgc2lfY29kZWAgaW4gdGhlIHJlc3VsdCByZXR1cm5lZCBieQorICAgOmZ1bmM6YHdhaXRpZGAuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogLi4gZnVuY3Rpb246OiB3YWl0cGlkKHBpZCwgb3B0aW9ucykKIApAQCAtMjExMCw3ICsyOTYwLDcgQEAKICAgIFRoaXMgb3B0aW9uIGNhdXNlcyBjaGlsZCBwcm9jZXNzZXMgdG8gYmUgcmVwb3J0ZWQgaWYgdGhleSBoYXZlIGJlZW4gY29udGludWVkCiAgICBmcm9tIGEgam9iIGNvbnRyb2wgc3RvcCBzaW5jZSB0aGVpciBzdGF0dXMgd2FzIGxhc3QgcmVwb3J0ZWQuCiAKLSAgIEF2YWlsYWJpbGl0eTogU29tZSBVbml4IHN5c3RlbXMuCisgICBBdmFpbGFiaWxpdHk6IHNvbWUgVW5peCBzeXN0ZW1zLgogCiAKIC4uIGRhdGE6OiBXVU5UUkFDRUQKQEAgLTIxODcsNiArMzAzNywxMjkgQEAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCitJbnRlcmZhY2UgdG8gdGhlIHNjaGVkdWxlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlc2UgZnVuY3Rpb25zIGNvbnRyb2wgaG93IGEgcHJvY2VzcyBpcyBhbGxvY2F0ZWQgQ1BVIHRpbWUgYnkgdGhlIG9wZXJhdGluZworc3lzdGVtLiBUaGV5IGFyZSBvbmx5IGF2YWlsYWJsZSBvbiBzb21lIFVuaXggcGxhdGZvcm1zLiBGb3IgbW9yZSBkZXRhaWxlZAoraW5mb3JtYXRpb24sIGNvbnN1bHQgeW91ciBVbml4IG1hbnBhZ2VzLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworVGhlIGZvbGxvd2luZyBzY2hlZHVsaW5nIHBvbGljaWVzIGFyZSBleHBvc2VkIGlmIHRoZXkgYXJlIGEgc3VwcG9ydGVkIGJ5IHRoZQorb3BlcmF0aW5nIHN5c3RlbS4KKworLi4gZGF0YTo6IFNDSEVEX09USEVSCisKKyAgIFRoZSBkZWZhdWx0IHNjaGVkdWxpbmcgcG9saWN5LgorCisuLiBkYXRhOjogU0NIRURfQkFUQ0gKKworICAgU2NoZWR1bGluZyBwb2xpY3kgZm9yIENQVS1pbnRlbnNpdmUgcHJvY2Vzc2VzIHRoYXQgdHJpZXMgdG8gcHJlc2VydmUKKyAgIGludGVyYWN0aXZpdHkgb24gdGhlIHJlc3Qgb2YgdGhlIGNvbXB1dGVyLgorCisuLiBkYXRhOjogU0NIRURfSURMRQorCisgICBTY2hlZHVsaW5nIHBvbGljeSBmb3IgZXh0cmVtZWx5IGxvdyBwcmlvcml0eSBiYWNrZ3JvdW5kIHRhc2tzLgorCisuLiBkYXRhOjogU0NIRURfU1BPUkFESUMKKworICAgU2NoZWR1bGluZyBwb2xpY3kgZm9yIHNwb3JhZGljIHNlcnZlciBwcm9ncmFtcy4KKworLi4gZGF0YTo6IFNDSEVEX0ZJRk8KKworICAgQSBGaXJzdCBJbiBGaXJzdCBPdXQgc2NoZWR1bGluZyBwb2xpY3kuCisKKy4uIGRhdGE6OiBTQ0hFRF9SUgorCisgICBBIHJvdW5kLXJvYmluIHNjaGVkdWxpbmcgcG9saWN5LgorCisuLiBkYXRhOjogU0NIRURfUkVTRVRfT05fRk9SSworCisgICBUaGlzIGZsYWcgY2FuIE9SJ2VkIHdpdGggYW55IG90aGVyIHNjaGVkdWxpbmcgcG9saWN5LiBXaGVuIGEgcHJvY2VzcyB3aXRoCisgICB0aGlzIGZsYWcgc2V0IGZvcmtzLCBpdHMgY2hpbGQncyBzY2hlZHVsaW5nIHBvbGljeSBhbmQgcHJpb3JpdHkgYXJlIHJlc2V0IHRvCisgICB0aGUgZGVmYXVsdC4KKworCisuLiBjbGFzczo6IHNjaGVkX3BhcmFtKHNjaGVkX3ByaW9yaXR5KQorCisgICBUaGlzIGNsYXNzIHJlcHJlc2VudHMgdHVuYWJsZSBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgdXNlZCBpbgorICAgOmZ1bmM6YHNjaGVkX3NldHBhcmFtYCwgOmZ1bmM6YHNjaGVkX3NldHNjaGVkdWxlcmAsIGFuZAorICAgOmZ1bmM6YHNjaGVkX2dldHBhcmFtYC4gSXQgaXMgaW1tdXRhYmxlLgorCisgICBBdCB0aGUgbW9tZW50LCB0aGVyZSBpcyBvbmx5IG9uZSBwb3NzaWJsZSBwYXJhbWV0ZXI6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IHNjaGVkX3ByaW9yaXR5CisKKyAgICAgIFRoZSBzY2hlZHVsaW5nIHByaW9yaXR5IGZvciBhIHNjaGVkdWxpbmcgcG9saWN5LgorCisKKy4uIGZ1bmN0aW9uOjogc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihwb2xpY3kpCisKKyAgIEdldCB0aGUgbWluaW11bSBwcmlvcml0eSB2YWx1ZSBmb3IgKnBvbGljeSouICpwb2xpY3kqIGlzIG9uZSBvZiB0aGUKKyAgIHNjaGVkdWxpbmcgcG9saWN5IGNvbnN0YW50cyBhYm92ZS4KKworCisuLiBmdW5jdGlvbjo6IHNjaGVkX2dldF9wcmlvcml0eV9tYXgocG9saWN5KQorCisgICBHZXQgdGhlIG1heGltdW0gcHJpb3JpdHkgdmFsdWUgZm9yICpwb2xpY3kqLiAqcG9saWN5KiBpcyBvbmUgb2YgdGhlCisgICBzY2hlZHVsaW5nIHBvbGljeSBjb25zdGFudHMgYWJvdmUuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF9zZXRzY2hlZHVsZXIocGlkLCBwb2xpY3ksIHBhcmFtKQorCisgICBTZXQgdGhlIHNjaGVkdWxpbmcgcG9saWN5IGZvciB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKi4gQSAqcGlkKiBvZiAwIG1lYW5zCisgICB0aGUgY2FsbGluZyBwcm9jZXNzLiAqcG9saWN5KiBpcyBvbmUgb2YgdGhlIHNjaGVkdWxpbmcgcG9saWN5IGNvbnN0YW50cworICAgYWJvdmUuICpwYXJhbSogaXMgYSA6Y2xhc3M6YHNjaGVkX3BhcmFtYCBpbnN0YW5jZS4KKworCisuLiBmdW5jdGlvbjo6IHNjaGVkX2dldHNjaGVkdWxlcihwaWQpCisKKyAgIFJldHVybiB0aGUgc2NoZWR1bGluZyBwb2xpY3kgZm9yIHRoZSBwcm9jZXNzIHdpdGggUElEICpwaWQqLiBBICpwaWQqIG9mIDAKKyAgIG1lYW5zIHRoZSBjYWxsaW5nIHByb2Nlc3MuIFRoZSByZXN1bHQgaXMgb25lIG9mIHRoZSBzY2hlZHVsaW5nIHBvbGljeQorICAgY29uc3RhbnRzIGFib3ZlLgorCisKKy4uIGZ1bmN0aW9uOjogc2NoZWRfc2V0cGFyYW0ocGlkLCBwYXJhbSkKKworICAgU2V0IGEgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIGZvciB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKi4gQSAqcGlkKiBvZiAwIG1lYW5zCisgICB0aGUgY2FsbGluZyBwcm9jZXNzLiAqcGFyYW0qIGlzIGEgOmNsYXNzOmBzY2hlZF9wYXJhbWAgaW5zdGFuY2UuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF9nZXRwYXJhbShwaWQpCisKKyAgIFJldHVybiB0aGUgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIGFzIGEgOmNsYXNzOmBzY2hlZF9wYXJhbWAgaW5zdGFuY2UgZm9yIHRoZQorICAgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKi4gQSAqcGlkKiBvZiAwIG1lYW5zIHRoZSBjYWxsaW5nIHByb2Nlc3MuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwocGlkKQorCisgICBSZXR1cm4gdGhlIHJvdW5kLXJvYmluIHF1YW50dW0gaW4gc2Vjb25kcyBmb3IgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCouIEEKKyAgICpwaWQqIG9mIDAgbWVhbnMgdGhlIGNhbGxpbmcgcHJvY2Vzcy4KKworCisuLiBmdW5jdGlvbjo6IHNjaGVkX3lpZWxkKCkKKworICAgVm9sdW50YXJpbHkgcmVsaW5xdWlzaCB0aGUgQ1BVLgorCisKKy4uIGZ1bmN0aW9uOjogc2NoZWRfc2V0YWZmaW5pdHkocGlkLCBtYXNrKQorCisgICBSZXN0cmljdCB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKiAob3IgdGhlIGN1cnJlbnQgcHJvY2VzcyBpZiB6ZXJvKSB0byBhCisgICBzZXQgb2YgQ1BVcy4gICptYXNrKiBpcyBhbiBpdGVyYWJsZSBvZiBpbnRlZ2VycyByZXByZXNlbnRpbmcgdGhlIHNldCBvZgorICAgQ1BVcyB0byB3aGljaCB0aGUgcHJvY2VzcyBzaG91bGQgYmUgcmVzdHJpY3RlZC4KKworCisuLiBmdW5jdGlvbjo6IHNjaGVkX2dldGFmZmluaXR5KHBpZCkKKworICAgUmV0dXJuIHRoZSBzZXQgb2YgQ1BVcyB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKiAob3IgdGhlIGN1cnJlbnQgcHJvY2VzcworICAgaWYgemVybykgaXMgcmVzdHJpY3RlZCB0by4KKworICAgLi4gc2VlYWxzbzo6CisgICAgICA6ZnVuYzpgbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudGAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlCisgICAgICBzeXN0ZW0uCisKKwogLi4gX29zLXBhdGg6CiAKIE1pc2NlbGxhbmVvdXMgU3lzdGVtIEluZm9ybWF0aW9uCkBAIC0yMjExLDcgKzMxODQsNyBAQAogICAgaW5jbHVkZWQgaW4gYGBjb25mc3RyX25hbWVzYGAsIGFuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCB3aXRoCiAgICA6Y29uc3Q6YGVycm5vLkVJTlZBTGAgZm9yIHRoZSBlcnJvciBudW1iZXIuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peAorICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKIC4uIGRhdGE6OiBjb25mc3RyX25hbWVzCkBAIC0yMzMzLDYgKzMzMDYsOSBAQAogCiAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgcmFuZG9tIGJ5dGVzIGZyb20gYW4gT1Mtc3BlY2lmaWMgcmFuZG9tbmVzcyBzb3VyY2UuICBUaGUKICAgIHJldHVybmVkIGRhdGEgc2hvdWxkIGJlIHVucHJlZGljdGFibGUgZW5vdWdoIGZvciBjcnlwdG9ncmFwaGljIGFwcGxpY2F0aW9ucywKLSAgIHRob3VnaCBpdHMgZXhhY3QgcXVhbGl0eSBkZXBlbmRzIG9uIHRoZSBPUyBpbXBsZW1lbnRhdGlvbi4gIE9uIGEgVU5JWC1saWtlCisgICB0aG91Z2ggaXRzIGV4YWN0IHF1YWxpdHkgZGVwZW5kcyBvbiB0aGUgT1MgaW1wbGVtZW50YXRpb24uICBPbiBhIFVuaXgtbGlrZQogICAgc3lzdGVtIHRoaXMgd2lsbCBxdWVyeSAvZGV2L3VyYW5kb20sIGFuZCBvbiBXaW5kb3dzIGl0IHdpbGwgdXNlIENyeXB0R2VuUmFuZG9tLgogICAgSWYgYSByYW5kb21uZXNzIHNvdXJjZSBpcyBub3QgZm91bmQsIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgorCisgICBGb3IgYW4gZWFzeS10by11c2UgaW50ZXJmYWNlIHRvIHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvcgorICAgcHJvdmlkZWQgYnkgeW91ciBwbGF0Zm9ybSwgcGxlYXNlIHNlZSA6Y2xhc3M6YHJhbmRvbS5TeXN0ZW1SYW5kb21gLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvb3NzYXVkaW9kZXYucnN0IGIvRG9jL2xpYnJhcnkvb3NzYXVkaW9kZXYucnN0CmluZGV4IGVkODQ0MTMuLjMwMDI3MDAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L29zc2F1ZGlvZGV2LnJzdAorKysgYi9Eb2MvbGlicmFyeS9vc3NhdWRpb2Rldi5yc3QKQEAgLTM4LDYgKzM4LDEwIEBACiAgICBUaGlzIHByb2JhYmx5IGFsbCB3YXJyYW50cyBhIGZvb3Rub3RlIG9yIHR3bywgYnV0IEkgZG9uJ3QgdW5kZXJzdGFuZAogICAgdGhpbmdzIHdlbGwgZW5vdWdoIHJpZ2h0IG5vdyB0byB3cml0ZSBpdCEgICAtLUdQVwogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgT3BlcmF0aW9ucyBpbiB0aGlzIG1vZHVsZSBub3cgcmFpc2UgOmV4YzpgT1NFcnJvcmAgd2hlcmUgOmV4YzpgSU9FcnJvcmAKKyAgIHdhcyByYWlzZWQuCisKIAogLi4gc2VlYWxzbzo6CiAKQEAgLTU2LDcgKzYwLDcgQEAKICAgIHdoYXQgd2VudCB3cm9uZy4KIAogICAgKElmIDptb2Q6YG9zc2F1ZGlvZGV2YCByZWNlaXZlcyBhbiBlcnJvciBmcm9tIGEgc3lzdGVtIGNhbGwgc3VjaCBhcwotICAgOmM6ZnVuYzpgb3BlbmAsIDpjOmZ1bmM6YHdyaXRlYCwgb3IgOmM6ZnVuYzpgaW9jdGxgLCBpdCByYWlzZXMgOmV4YzpgSU9FcnJvcmAuCisgICA6YzpmdW5jOmBvcGVuYCwgOmM6ZnVuYzpgd3JpdGVgLCBvciA6YzpmdW5jOmBpb2N0bGAsIGl0IHJhaXNlcyA6ZXhjOmBPU0Vycm9yYC4KICAgIEVycm9ycyBkZXRlY3RlZCBkaXJlY3RseSBieSA6bW9kOmBvc3NhdWRpb2RldmAgcmVzdWx0IGluIDpleGM6YE9TU0F1ZGlvRXJyb3JgLikKIAogICAgKEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgdGhlIGV4Y2VwdGlvbiBjbGFzcyBpcyBhbHNvIGF2YWlsYWJsZSBhcwpAQCAtMTY5LDcgKzE3Myw3IEBACiBjb3JyZXNwb25kZW5jZSBpcyBvYnZpb3VzOiBmb3IgZXhhbXBsZSwgOm1ldGg6YHNldGZtdGAgY29ycmVzcG9uZHMgdG8gdGhlCiBgYFNORENUTF9EU1BfU0VURk1UYGAgaW9jdGwsIGFuZCA6bWV0aDpgc3luY2AgdG8gYGBTTkRDVExfRFNQX1NZTkNgYCAodGhpcyBjYW4KIGJlIHVzZWZ1bCB3aGVuIGNvbnN1bHRpbmcgdGhlIE9TUyBkb2N1bWVudGF0aW9uKS4gIElmIHRoZSB1bmRlcmx5aW5nCi06ZnVuYzpgaW9jdGxgIGZhaWxzLCB0aGV5IGFsbCByYWlzZSA6ZXhjOmBJT0Vycm9yYC4KKzpmdW5jOmBpb2N0bGAgZmFpbHMsIHRoZXkgYWxsIHJhaXNlIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIG1ldGhvZDo6IG9zc19hdWRpb19kZXZpY2Uubm9uYmxvY2soKQpAQCAtMzQ1LDcgKzM0OSw3IEBACiAuLiBtZXRob2Q6OiBvc3NfbWl4ZXJfZGV2aWNlLmNsb3NlKCkKIAogICAgVGhpcyBtZXRob2QgY2xvc2VzIHRoZSBvcGVuIG1peGVyIGRldmljZSBmaWxlLiAgQW55IGZ1cnRoZXIgYXR0ZW1wdHMgdG8gdXNlIHRoZQotICAgbWl4ZXIgYWZ0ZXIgdGhpcyBmaWxlIGlzIGNsb3NlZCB3aWxsIHJhaXNlIGFuIDpleGM6YElPRXJyb3JgLgorICAgbWl4ZXIgYWZ0ZXIgdGhpcyBmaWxlIGlzIGNsb3NlZCB3aWxsIHJhaXNlIGFuIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIG1ldGhvZDo6IG9zc19taXhlcl9kZXZpY2UuZmlsZW5vKCkKQEAgLTQwNCw3ICs0MDgsNyBAQAogICAgcmV0dXJuZWQsIGJ1dCBib3RoIHZvbHVtZXMgYXJlIHRoZSBzYW1lLgogCiAgICBSYWlzZXMgOmV4YzpgT1NTQXVkaW9FcnJvcmAgaWYgYW4gaW52YWxpZCBjb250cm9sIHdhcyBpcyBzcGVjaWZpZWQsIG9yCi0gICA6ZXhjOmBJT0Vycm9yYCBpZiBhbiB1bnN1cHBvcnRlZCBjb250cm9sIGlzIHNwZWNpZmllZC4KKyAgIDpleGM6YE9TRXJyb3JgIGlmIGFuIHVuc3VwcG9ydGVkIGNvbnRyb2wgaXMgc3BlY2lmaWVkLgogCiAKIC4uIG1ldGhvZDo6IG9zc19taXhlcl9kZXZpY2Uuc2V0KGNvbnRyb2wsIChsZWZ0LCByaWdodCkpCkBAIC00MjgsNyArNDMyLDcgQEAKIC4uIG1ldGhvZDo6IG9zc19taXhlcl9kZXZpY2Uuc2V0X3JlY3NyYyhiaXRtYXNrKQogCiAgICBDYWxsIHRoaXMgZnVuY3Rpb24gdG8gc3BlY2lmeSBhIHJlY29yZGluZyBzb3VyY2UuICBSZXR1cm5zIGEgYml0bWFzayBpbmRpY2F0aW5nCi0gICB0aGUgbmV3IHJlY29yZGluZyBzb3VyY2UgKG9yIHNvdXJjZXMpIGlmIHN1Y2Nlc3NmdWw7IHJhaXNlcyA6ZXhjOmBJT0Vycm9yYCBpZiBhbgorICAgdGhlIG5ldyByZWNvcmRpbmcgc291cmNlIChvciBzb3VyY2VzKSBpZiBzdWNjZXNzZnVsOyByYWlzZXMgOmV4YzpgT1NFcnJvcmAgaWYgYW4KICAgIGludmFsaWQgc291cmNlIHdhcyBzcGVjaWZpZWQuICBUbyBzZXQgdGhlIGN1cnJlbnQgcmVjb3JkaW5nIHNvdXJjZSB0byB0aGUKICAgIG1pY3JvcGhvbmUgaW5wdXQ6OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wZGIucnN0IGIvRG9jL2xpYnJhcnkvcGRiLnJzdAppbmRleCAxZTlkZTYzLi5mNGUzN2FjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wZGIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BkYi5yc3QKQEAgLTM4LDYgKzM4LDExIEBACiAgICA+IDxzdHJpbmc+KDEpPygpCiAgICAoUGRiKQogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgVGFiLWNvbXBsZXRpb24gdmlhIHRoZSA6bW9kOmByZWFkbGluZWAgbW9kdWxlIGlzIGF2YWlsYWJsZSBmb3IgY29tbWFuZHMgYW5kCisgICBjb21tYW5kIGFyZ3VtZW50cywgZS5nLiB0aGUgY3VycmVudCBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzIGFyZSBvZmZlcmVkIGFzCisgICBhcmd1bWVudHMgb2YgdGhlIGBgcHJpbnRgYCBjb21tYW5kLgorCiA6ZmlsZTpgcGRiLnB5YCBjYW4gYWxzbyBiZSBpbnZva2VkIGFzIGEgc2NyaXB0IHRvIGRlYnVnIG90aGVyIHNjcmlwdHMuICBGb3IKIGV4YW1wbGU6OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9waWNrbGUucnN0IGIvRG9jL2xpYnJhcnkvcGlja2xlLnJzdAppbmRleCBlMjUwZGNmLi4xNjhlZjU2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9waWNrbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QKQEAgLTI4Nyw2ICsyODcsMjkgQEAKIAogICAgICAgU2VlIDpyZWY6YHBpY2tsZS1wZXJzaXN0ZW50YCBmb3IgZGV0YWlscyBhbmQgZXhhbXBsZXMgb2YgdXNlcy4KIAorICAgLi4gYXR0cmlidXRlOjogZGlzcGF0Y2hfdGFibGUKKworICAgICAgQSBwaWNrbGVyIG9iamVjdCdzIGRpc3BhdGNoIHRhYmxlIGlzIGEgcmVnaXN0cnkgb2YgKnJlZHVjdGlvbgorICAgICAgZnVuY3Rpb25zKiBvZiB0aGUga2luZCB3aGljaCBjYW4gYmUgZGVjbGFyZWQgdXNpbmcKKyAgICAgIDpmdW5jOmBjb3B5cmVnLnBpY2tsZWAuICBJdCBpcyBhIG1hcHBpbmcgd2hvc2Uga2V5cyBhcmUgY2xhc3NlcworICAgICAgYW5kIHdob3NlIHZhbHVlcyBhcmUgcmVkdWN0aW9uIGZ1bmN0aW9ucy4gIEEgcmVkdWN0aW9uIGZ1bmN0aW9uCisgICAgICB0YWtlcyBhIHNpbmdsZSBhcmd1bWVudCBvZiB0aGUgYXNzb2NpYXRlZCBjbGFzcyBhbmQgc2hvdWxkCisgICAgICBjb25mb3JtIHRvIHRoZSBzYW1lIGludGVyZmFjZSBhcyBhIDptZXRoOmB+b2JqZWN0Ll9fcmVkdWNlX19gCisgICAgICBtZXRob2QuCisKKyAgICAgIEJ5IGRlZmF1bHQsIGEgcGlja2xlciBvYmplY3Qgd2lsbCBub3QgaGF2ZSBhCisgICAgICA6YXR0cjpgZGlzcGF0Y2hfdGFibGVgIGF0dHJpYnV0ZSwgYW5kIGl0IHdpbGwgaW5zdGVhZCB1c2UgdGhlCisgICAgICBnbG9iYWwgZGlzcGF0Y2ggdGFibGUgbWFuYWdlZCBieSB0aGUgOm1vZDpgY29weXJlZ2AgbW9kdWxlLgorICAgICAgSG93ZXZlciwgdG8gY3VzdG9taXplIHRoZSBwaWNrbGluZyBmb3IgYSBzcGVjaWZpYyBwaWNrbGVyIG9iamVjdAorICAgICAgb25lIGNhbiBzZXQgdGhlIDphdHRyOmBkaXNwYXRjaF90YWJsZWAgYXR0cmlidXRlIHRvIGEgZGljdC1saWtlCisgICAgICBvYmplY3QuICBBbHRlcm5hdGl2ZWx5LCBpZiBhIHN1YmNsYXNzIG9mIDpjbGFzczpgUGlja2xlcmAgaGFzIGEKKyAgICAgIDphdHRyOmBkaXNwYXRjaF90YWJsZWAgYXR0cmlidXRlIHRoZW4gdGhpcyB3aWxsIGJlIHVzZWQgYXMgdGhlCisgICAgICBkZWZhdWx0IGRpc3BhdGNoIHRhYmxlIGZvciBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcy4KKworICAgICAgU2VlIDpyZWY6YHBpY2tsZS1kaXNwYXRjaGAgZm9yIHVzYWdlIGV4YW1wbGVzLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogICAgLi4gYXR0cmlidXRlOjogZmFzdAogCiAgICAgICBEZXByZWNhdGVkLiBFbmFibGUgZmFzdCBtb2RlIGlmIHNldCB0byBhIHRydWUgdmFsdWUuICBUaGUgZmFzdCBtb2RlCkBAIC01NzgsNiArNjAxLDQ0IEBACiAKIC4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZGJwaWNrbGUucHkKIAorLi4gX3BpY2tsZS1kaXNwYXRjaDoKKworRGlzcGF0Y2ggVGFibGVzCiteXl5eXl5eXl5eXl5eXl4KKworSWYgb25lIHdhbnRzIHRvIGN1c3RvbWl6ZSBwaWNrbGluZyBvZiBzb21lIGNsYXNzZXMgd2l0aG91dCBkaXN0dXJiaW5nCithbnkgb3RoZXIgY29kZSB3aGljaCBkZXBlbmRzIG9uIHBpY2tsaW5nLCB0aGVuIG9uZSBjYW4gY3JlYXRlIGEKK3BpY2tsZXIgd2l0aCBhIHByaXZhdGUgZGlzcGF0Y2ggdGFibGUuCisKK1RoZSBnbG9iYWwgZGlzcGF0Y2ggdGFibGUgbWFuYWdlZCBieSB0aGUgOm1vZDpgY29weXJlZ2AgbW9kdWxlIGlzCithdmFpbGFibGUgYXMgOmRhdGE6YGNvcHlyZWcuZGlzcGF0Y2hfdGFibGVgLiAgVGhlcmVmb3JlLCBvbmUgbWF5CitjaG9vc2UgdG8gdXNlIGEgbW9kaWZpZWQgY29weSBvZiA6ZGF0YTpgY29weXJlZy5kaXNwYXRjaF90YWJsZWAgYXMgYQorcHJpdmF0ZSBkaXNwYXRjaCB0YWJsZS4KKworRm9yIGV4YW1wbGUgOjoKKworICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgcCA9IHBpY2tsZS5QaWNrbGVyKGYpCisgICBwLmRpc3BhdGNoX3RhYmxlID0gY29weXJlZy5kaXNwYXRjaF90YWJsZS5jb3B5KCkKKyAgIHAuZGlzcGF0Y2hfdGFibGVbU29tZUNsYXNzXSA9IHJlZHVjZV9Tb21lQ2xhc3MKKworY3JlYXRlcyBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YHBpY2tsZS5QaWNrbGVyYCB3aXRoIGEgcHJpdmF0ZSBkaXNwYXRjaAordGFibGUgd2hpY2ggaGFuZGxlcyB0aGUgYGBTb21lQ2xhc3NgYCBjbGFzcyBzcGVjaWFsbHkuICBBbHRlcm5hdGl2ZWx5LAordGhlIGNvZGUgOjoKKworICAgY2xhc3MgTXlQaWNrbGVyKHBpY2tsZS5QaWNrbGVyKToKKyAgICAgICBkaXNwYXRjaF90YWJsZSA9IGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUuY29weSgpCisgICAgICAgZGlzcGF0Y2hfdGFibGVbU29tZUNsYXNzXSA9IHJlZHVjZV9Tb21lQ2xhc3MKKyAgIGYgPSBpby5CeXRlc0lPKCkKKyAgIHAgPSBNeVBpY2tsZXIoZikKKworZG9lcyB0aGUgc2FtZSwgYnV0IGFsbCBpbnN0YW5jZXMgb2YgYGBNeVBpY2tsZXJgYCB3aWxsIGJ5IGRlZmF1bHQKK3NoYXJlIHRoZSBzYW1lIGRpc3BhdGNoIHRhYmxlLiAgVGhlIGVxdWl2YWxlbnQgY29kZSB1c2luZyB0aGUKKzptb2Q6YGNvcHlyZWdgIG1vZHVsZSBpcyA6OgorCisgICBjb3B5cmVnLnBpY2tsZShTb21lQ2xhc3MsIHJlZHVjZV9Tb21lQ2xhc3MpCisgICBmID0gaW8uQnl0ZXNJTygpCisgICBwID0gcGlja2xlLlBpY2tsZXIoZikKIAogLi4gX3BpY2tsZS1zdGF0ZToKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdAppbmRleCAzMTE4ZmYyLi4yMmQ0NGViIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdApAQCAtNTYsMjEgKzU2LDMyIEBACiAgICBOb3RlIHRoYXQgOmNsYXNzOmBJbXBJbXBvcnRlcmAgZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgYmVpbmcgdXNlZCBieQogICAgcGxhY2VtZW50IG9uIDpkYXRhOmBzeXMubWV0YV9wYXRoYC4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVGhpcyBlbXVsYXRpb24gaXMgbm8gbG9uZ2VyIG5lZWRlZCwgYXMgdGhlIHN0YW5kYXJkIGltcG9ydCBtZWNoYW5pc20KKyAgICAgIGlzIG5vdyBmdWxseSBQRVAgMzAyIGNvbXBsaWFudCBhbmQgYXZhaWxhYmxlIGluIDptb2Q6YGltcG9ydGxpYmAKKwogCiAuLiBjbGFzczo6IEltcExvYWRlcihmdWxsbmFtZSwgZmlsZSwgZmlsZW5hbWUsIGV0YykKIAogICAgOnBlcDpgMzAyYCBMb2FkZXIgdGhhdCB3cmFwcyBQeXRob24ncyAiY2xhc3NpYyIgaW1wb3J0IGFsZ29yaXRobS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVGhpcyBlbXVsYXRpb24gaXMgbm8gbG9uZ2VyIG5lZWRlZCwgYXMgdGhlIHN0YW5kYXJkIGltcG9ydCBtZWNoYW5pc20KKyAgICAgIGlzIG5vdyBmdWxseSBQRVAgMzAyIGNvbXBsaWFudCBhbmQgYXZhaWxhYmxlIGluIDptb2Q6YGltcG9ydGxpYmAKKwogCiAuLiBmdW5jdGlvbjo6IGZpbmRfbG9hZGVyKGZ1bGxuYW1lKQogCi0gICBGaW5kIGEgOnBlcDpgMzAyYCAibG9hZGVyIiBvYmplY3QgZm9yICpmdWxsbmFtZSouCisgICBSZXRyaWV2ZSBhIDpwZXA6YDMwMmAgbW9kdWxlIGxvYWRlciBmb3IgdGhlIGdpdmVuICpmdWxsbmFtZSouCiAKLSAgIElmICpmdWxsbmFtZSogY29udGFpbnMgZG90cywgcGF0aCBtdXN0IGJlIHRoZSBjb250YWluaW5nIHBhY2thZ2UncwotICAgYGBfX3BhdGhfX2BgLiAgUmV0dXJucyBgYE5vbmVgYCBpZiB0aGUgbW9kdWxlIGNhbm5vdCBiZSBmb3VuZCBvciBpbXBvcnRlZC4KLSAgIFRoaXMgZnVuY3Rpb24gdXNlcyA6ZnVuYzpgaXRlcl9pbXBvcnRlcnNgLCBhbmQgaXMgdGh1cyBzdWJqZWN0IHRvIHRoZSBzYW1lCi0gICBsaW1pdGF0aW9ucyByZWdhcmRpbmcgcGxhdGZvcm0tc3BlY2lmaWMgc3BlY2lhbCBpbXBvcnQgbG9jYXRpb25zIHN1Y2ggYXMgdGhlCi0gICBXaW5kb3dzIHJlZ2lzdHJ5LgorICAgVGhpcyBpcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIDpmdW5jOmBpbXBvcnRsaWIuZmluZF9sb2FkZXJgIHRoYXQKKyAgIHNldHMgdGhlICpwYXRoKiBhcmd1bWVudCBjb3JyZWN0bHkgd2hlbiBzZWFyY2hpbmcgZm9yIHN1Ym1vZHVsZXMsIGFuZAorICAgYWxzbyBlbnN1cmVzIHBhcmVudCBwYWNrYWdlcyAoaWYgYW55KSBhcmUgaW1wb3J0ZWQgYmVmb3JlIHNlYXJjaGluZyBmb3IKKyAgIHN1Ym1vZHVsZXMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBVcGRhdGVkIHRvIGJlIGJhc2VkIGRpcmVjdGx5IG9uIDptb2Q6YGltcG9ydGxpYmAgcmF0aGVyIHRoYW4gcmVseWluZworICAgICAgb24gdGhlIHBhY2thZ2UgaW50ZXJuYWwgUEVQIDMwMiBpbXBvcnQgZW11bGF0aW9uLgogCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X2ltcG9ydGVyKHBhdGhfaXRlbSkKQEAgLTgwLDEzICs5MSwxMyBAQAogICAgVGhlIHJldHVybmVkIGltcG9ydGVyIGlzIGNhY2hlZCBpbiA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIGlmIGl0IHdhcwogICAgbmV3bHkgY3JlYXRlZCBieSBhIHBhdGggaG9vay4KIAotICAgSWYgdGhlcmUgaXMgbm8gaW1wb3J0ZXIsIGEgd3JhcHBlciBhcm91bmQgdGhlIGJhc2ljIGltcG9ydCBtYWNoaW5lcnkgaXMKLSAgIHJldHVybmVkLiAgVGhpcyB3cmFwcGVyIGlzIG5ldmVyIGluc2VydGVkIGludG8gdGhlIGltcG9ydGVyIGNhY2hlIChgYE5vbmVgYAotICAgaXMgaW5zZXJ0ZWQgaW5zdGVhZCkuCi0KICAgIFRoZSBjYWNoZSAob3IgcGFydCBvZiBpdCkgY2FuIGJlIGNsZWFyZWQgbWFudWFsbHkgaWYgYSByZXNjYW4gb2YKICAgIDpkYXRhOmBzeXMucGF0aF9ob29rc2AgaXMgbmVjZXNzYXJ5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVXBkYXRlZCB0byBiZSBiYXNlZCBkaXJlY3RseSBvbiA6bW9kOmBpbXBvcnRsaWJgIHJhdGhlciB0aGFuIHJlbHlpbmcKKyAgICAgIG9uIHRoZSBwYWNrYWdlIGludGVybmFsIFBFUCAzMDIgaW1wb3J0IGVtdWxhdGlvbi4KKwogCiAuLiBmdW5jdGlvbjo6IGdldF9sb2FkZXIobW9kdWxlX29yX25hbWUpCiAKQEAgLTEwMiw0NiArMTEzLDUyIEBACiAgICBsaW1pdGF0aW9ucyByZWdhcmRpbmcgcGxhdGZvcm0tc3BlY2lmaWMgc3BlY2lhbCBpbXBvcnQgbG9jYXRpb25zIHN1Y2ggYXMgdGhlCiAgICBXaW5kb3dzIHJlZ2lzdHJ5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVXBkYXRlZCB0byBiZSBiYXNlZCBkaXJlY3RseSBvbiA6bW9kOmBpbXBvcnRsaWJgIHJhdGhlciB0aGFuIHJlbHlpbmcKKyAgICAgIG9uIHRoZSBwYWNrYWdlIGludGVybmFsIFBFUCAzMDIgaW1wb3J0IGVtdWxhdGlvbi4KKwogCiAuLiBmdW5jdGlvbjo6IGl0ZXJfaW1wb3J0ZXJzKGZ1bGxuYW1lPScnKQogCiAgICBZaWVsZCA6cGVwOmAzMDJgIGltcG9ydGVycyBmb3IgdGhlIGdpdmVuIG1vZHVsZSBuYW1lLgogCi0gICBJZiBmdWxsbmFtZSBjb250YWlucyBhICcuJywgdGhlIGltcG9ydGVycyB3aWxsIGJlIGZvciB0aGUgcGFja2FnZSBjb250YWluaW5nCi0gICBmdWxsbmFtZSwgb3RoZXJ3aXNlIHRoZXkgd2lsbCBiZSBpbXBvcnRlcnMgZm9yIDpkYXRhOmBzeXMubWV0YV9wYXRoYCwKLSAgIDpkYXRhOmBzeXMucGF0aGAsIGFuZCBQeXRob24ncyAiY2xhc3NpYyIgaW1wb3J0IG1hY2hpbmVyeSwgaW4gdGhhdCBvcmRlci4gIElmCi0gICB0aGUgbmFtZWQgbW9kdWxlIGlzIGluIGEgcGFja2FnZSwgdGhhdCBwYWNrYWdlIGlzIGltcG9ydGVkIGFzIGEgc2lkZSBlZmZlY3QKLSAgIG9mIGludm9raW5nIHRoaXMgZnVuY3Rpb24uCisgICBJZiBmdWxsbmFtZSBjb250YWlucyBhICcuJywgdGhlIGltcG9ydGVycyB3aWxsIGJlIGZvciB0aGUgcGFja2FnZQorICAgY29udGFpbmluZyBmdWxsbmFtZSwgb3RoZXJ3aXNlIHRoZXkgd2lsbCBiZSBhbGwgcmVnaXN0ZXJlZCB0b3AgbGV2ZWwKKyAgIGltcG9ydGVycyAoaS5lLiB0aG9zZSBvbiBib3RoIHN5cy5tZXRhX3BhdGggYW5kIHN5cy5wYXRoX2hvb2tzKS4KIAotICAgTm9uLTpwZXA6YDMwMmAgbWVjaGFuaXNtcyAoZS5nLiB0aGUgV2luZG93cyByZWdpc3RyeSkgdXNlZCBieSB0aGUgc3RhbmRhcmQKLSAgIGltcG9ydCBtYWNoaW5lcnkgdG8gZmluZCBmaWxlcyBpbiBhbHRlcm5hdGl2ZSBsb2NhdGlvbnMgYXJlIHBhcnRpYWxseQotICAgc3VwcG9ydGVkLCBidXQgYXJlIHNlYXJjaGVkICphZnRlciogOmRhdGE6YHN5cy5wYXRoYC4gIE5vcm1hbGx5LCB0aGVzZQotICAgbG9jYXRpb25zIGFyZSBzZWFyY2hlZCAqYmVmb3JlKiA6ZGF0YTpgc3lzLnBhdGhgLCBwcmV2ZW50aW5nIDpkYXRhOmBzeXMucGF0aGAKLSAgIGVudHJpZXMgZnJvbSBzaGFkb3dpbmcgdGhlbS4KKyAgIElmIHRoZSBuYW1lZCBtb2R1bGUgaXMgaW4gYSBwYWNrYWdlLCB0aGF0IHBhY2thZ2UgaXMgaW1wb3J0ZWQgYXMgYSBzaWRlCisgICBlZmZlY3Qgb2YgaW52b2tpbmcgdGhpcyBmdW5jdGlvbi4KIAotICAgRm9yIHRoaXMgdG8gY2F1c2UgYSB2aXNpYmxlIGRpZmZlcmVuY2UgaW4gYmVoYXZpb3VyLCB0aGVyZSBtdXN0IGJlIGEgbW9kdWxlCi0gICBvciBwYWNrYWdlIG5hbWUgdGhhdCBpcyBhY2Nlc3NpYmxlIHZpYSBib3RoIDpkYXRhOmBzeXMucGF0aGAgYW5kIG9uZSBvZiB0aGUKLSAgIG5vbi06cGVwOmAzMDJgIGZpbGUgc3lzdGVtIG1lY2hhbmlzbXMuICBJbiB0aGlzIGNhc2UsIHRoZSBlbXVsYXRpb24gd2lsbCBmaW5kCi0gICB0aGUgZm9ybWVyIHZlcnNpb24sIHdoaWxlIHRoZSBidWlsdGluIGltcG9ydCBtZWNoYW5pc20gd2lsbCBmaW5kIHRoZSBsYXR0ZXIuCisgICBJZiBubyBtb2R1bGUgbmFtZSBpcyBzcGVjaWZpZWQsIGFsbCB0b3AgbGV2ZWwgaW1wb3J0ZXJzIGFyZSBwcm9kdWNlZC4KIAotICAgSXRlbXMgb2YgdGhlIGZvbGxvd2luZyB0eXBlcyBjYW4gYmUgYWZmZWN0ZWQgYnkgdGhpcyBkaXNjcmVwYW5jeToKLSAgIGBgaW1wLkNfRVhURU5TSU9OYGAsIGBgaW1wLlBZX1NPVVJDRWBgLCBgYGltcC5QWV9DT01QSUxFRGBgLAotICAgYGBpbXAuUEtHX0RJUkVDVE9SWWBgLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFVwZGF0ZWQgdG8gYmUgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYCByYXRoZXIgdGhhbiByZWx5aW5nCisgICAgICBvbiB0aGUgcGFja2FnZSBpbnRlcm5hbCBQRVAgMzAyIGltcG9ydCBlbXVsYXRpb24uCiAKIAogLi4gZnVuY3Rpb246OiBpdGVyX21vZHVsZXMocGF0aD1Ob25lLCBwcmVmaXg9JycpCiAKLSAgIFlpZWxkcyBgYChtb2R1bGVfbG9hZGVyLCBuYW1lLCBpc3BrZylgYCBmb3IgYWxsIHN1Ym1vZHVsZXMgb24gKnBhdGgqLCBvciwgaWYKKyAgIFlpZWxkcyBgYChtb2R1bGVfZmluZGVyLCBuYW1lLCBpc3BrZylgYCBmb3IgYWxsIHN1Ym1vZHVsZXMgb24gKnBhdGgqLCBvciwgaWYKICAgIHBhdGggaXMgYGBOb25lYGAsIGFsbCB0b3AtbGV2ZWwgbW9kdWxlcyBvbiBgYHN5cy5wYXRoYGAuCiAKICAgICpwYXRoKiBzaG91bGQgYmUgZWl0aGVyIGBgTm9uZWBgIG9yIGEgbGlzdCBvZiBwYXRocyB0byBsb29rIGZvciBtb2R1bGVzIGluLgogCiAgICAqcHJlZml4KiBpcyBhIHN0cmluZyB0byBvdXRwdXQgb24gdGhlIGZyb250IG9mIGV2ZXJ5IG1vZHVsZSBuYW1lIG9uIG91dHB1dC4KIAorICAgLi4gbm90ZTo6CisgICAgICBPbmx5IHdvcmtzIGZvciBhIDp0ZXJtOmBmaW5kZXJgIHdoaWNoIGRlZmluZXMgYW4gYGBpdGVyX21vZHVsZXMoKWBgCisgICAgICBtZXRob2QuIFRoaXMgaW50ZXJmYWNlIGlzIG5vbi1zdGFuZGFyZCwgc28gdGhlIG1vZHVsZSBhbHNvIHByb3ZpZGVzCisgICAgICBpbXBsZW1lbnRhdGlvbnMgZm9yIDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyYCBhbmQKKyAgICAgIDpjbGFzczpgemlwaW1wb3J0LnppcGltcG9ydGVyYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFVwZGF0ZWQgdG8gYmUgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYCByYXRoZXIgdGhhbiByZWx5aW5nCisgICAgICBvbiB0aGUgcGFja2FnZSBpbnRlcm5hbCBQRVAgMzAyIGltcG9ydCBlbXVsYXRpb24uCisKIAogLi4gZnVuY3Rpb246OiB3YWxrX3BhY2thZ2VzKHBhdGg9Tm9uZSwgcHJlZml4PScnLCBvbmVycm9yPU5vbmUpCiAKLSAgIFlpZWxkcyBgYChtb2R1bGVfbG9hZGVyLCBuYW1lLCBpc3BrZylgYCBmb3IgYWxsIG1vZHVsZXMgcmVjdXJzaXZlbHkgb24KKyAgIFlpZWxkcyBgYChtb2R1bGVfZmluZGVyLCBuYW1lLCBpc3BrZylgYCBmb3IgYWxsIG1vZHVsZXMgcmVjdXJzaXZlbHkgb24KICAgICpwYXRoKiwgb3IsIGlmIHBhdGggaXMgYGBOb25lYGAsIGFsbCBhY2Nlc3NpYmxlIG1vZHVsZXMuCiAKICAgICpwYXRoKiBzaG91bGQgYmUgZWl0aGVyIGBgTm9uZWBgIG9yIGEgbGlzdCBvZiBwYXRocyB0byBsb29rIGZvciBtb2R1bGVzIGluLgpAQCAtMTY2LDYgKzE4MywxNiBAQAogICAgICAgIyBsaXN0IGFsbCBzdWJtb2R1bGVzIG9mIGN0eXBlcwogICAgICAgd2Fsa19wYWNrYWdlcyhjdHlwZXMuX19wYXRoX18sIGN0eXBlcy5fX25hbWVfXyArICcuJykKIAorICAgLi4gbm90ZTo6CisgICAgICBPbmx5IHdvcmtzIGZvciBhIDp0ZXJtOmBmaW5kZXJgIHdoaWNoIGRlZmluZXMgYW4gYGBpdGVyX21vZHVsZXMoKWBgCisgICAgICBtZXRob2QuIFRoaXMgaW50ZXJmYWNlIGlzIG5vbi1zdGFuZGFyZCwgc28gdGhlIG1vZHVsZSBhbHNvIHByb3ZpZGVzCisgICAgICBpbXBsZW1lbnRhdGlvbnMgZm9yIDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyYCBhbmQKKyAgICAgIDpjbGFzczpgemlwaW1wb3J0LnppcGltcG9ydGVyYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFVwZGF0ZWQgdG8gYmUgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYCByYXRoZXIgdGhhbiByZWx5aW5nCisgICAgICBvbiB0aGUgcGFja2FnZSBpbnRlcm5hbCBQRVAgMzAyIGltcG9ydCBlbXVsYXRpb24uCisKIAogLi4gZnVuY3Rpb246OiBnZXRfZGF0YShwYWNrYWdlLCByZXNvdXJjZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGxhdGZvcm0ucnN0IGIvRG9jL2xpYnJhcnkvcGxhdGZvcm0ucnN0CmluZGV4IDE1N2FjM2EuLmE2YTk4ZjEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BsYXRmb3JtLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wbGF0Zm9ybS5yc3QKQEAgLTMwLDggKzMwLDggQEAKICAgIHJldHVybmVkIGFzIHN0cmluZ3MuCiAKICAgIFZhbHVlcyB0aGF0IGNhbm5vdCBiZSBkZXRlcm1pbmVkIGFyZSByZXR1cm5lZCBhcyBnaXZlbiBieSB0aGUgcGFyYW1ldGVyIHByZXNldHMuCi0gICBJZiBiaXRzIGlzIGdpdmVuIGFzIGBgJydgYCwgdGhlIDpjOmZ1bmM6YHNpemVvZihwb2ludGVyKWAgKG9yCi0gICA6YzpmdW5jOmBzaXplb2YobG9uZylgIG9uIFB5dGhvbiB2ZXJzaW9uIDwgMS41LjIpIGlzIHVzZWQgYXMgaW5kaWNhdG9yIGZvciB0aGUKKyAgIElmIGJpdHMgaXMgZ2l2ZW4gYXMgYGAnJ2BgLCB0aGUgYGBzaXplb2YocG9pbnRlcilgYCAob3IKKyAgIGBgc2l6ZW9mKGxvbmcpYGAgb24gUHl0aG9uIHZlcnNpb24gPCAxLjUuMikgaXMgdXNlZCBhcyBpbmRpY2F0b3IgZm9yIHRoZQogICAgc3VwcG9ydGVkIHBvaW50ZXIgc2l6ZS4KIAogICAgVGhlIGZ1bmN0aW9uIHJlbGllcyBvbiB0aGUgc3lzdGVtJ3MgOmZpbGU6YGZpbGVgIGNvbW1hbmQgdG8gZG8gdGhlIGFjdHVhbCB3b3JrLgpAQCAtMTU4LDE0ICsxNTgsMjAgQEAKIAogLi4gZnVuY3Rpb246OiB1bmFtZSgpCiAKLSAgIEZhaXJseSBwb3J0YWJsZSB1bmFtZSBpbnRlcmZhY2UuIFJldHVybnMgYSB0dXBsZSBvZiBzdHJpbmdzIGBgKHN5c3RlbSwgbm9kZSwKLSAgIHJlbGVhc2UsIHZlcnNpb24sIG1hY2hpbmUsIHByb2Nlc3NvcilgYCBpZGVudGlmeWluZyB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybS4KKyAgIEZhaXJseSBwb3J0YWJsZSB1bmFtZSBpbnRlcmZhY2UuIFJldHVybnMgYSA6ZnVuYzpgfmNvbGxlY3Rpb25zLm5hbWVkdHVwbGVgCisgICBjb250YWluaW5nIHNpeCBhdHRyaWJ1dGVzOiA6YXR0cjpgc3lzdGVtYCwgOmF0dHI6YG5vZGVgLCA6YXR0cjpgcmVsZWFzZWAsCisgICA6YXR0cjpgdmVyc2lvbmAsIDphdHRyOmBtYWNoaW5lYCwgYW5kIDphdHRyOmBwcm9jZXNzb3JgLgogCi0gICBOb3RlIHRoYXQgdW5saWtlIHRoZSA6ZnVuYzpgb3MudW5hbWVgIGZ1bmN0aW9uIHRoaXMgYWxzbyByZXR1cm5zIHBvc3NpYmxlCi0gICBwcm9jZXNzb3IgaW5mb3JtYXRpb24gYXMgYWRkaXRpb25hbCB0dXBsZSBlbnRyeS4KKyAgIE5vdGUgdGhhdCB0aGlzIGFkZHMgYSBzaXh0aCBhdHRyaWJ1dGUgKDphdHRyOmBwcm9jZXNzb3JgKSBub3QgcHJlc2VudAorICAgaW4gdGhlIDpmdW5jOmBvcy51bmFtZWAgcmVzdWx0LiAgQWxzbywgdGhlIGF0dHJpYnV0ZSBuYW1lcyBhcmUgZGlmZmVyZW50CisgICBmb3IgdGhlIGZpcnN0IHR3byBhdHRyaWJ1dGVzOyA6ZnVuYzpgb3MudW5hbWVgIG5hbWVzIHRoZW0KKyAgIDphdHRyOmBzeXNuYW1lYCBhbmQgOmF0dHI6YG5vZGVuYW1lYC4KIAogICAgRW50cmllcyB3aGljaCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBhcmUgc2V0IHRvIGBgJydgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJlc3VsdCBjaGFuZ2VkIGZyb20gYSB0dXBsZSB0byBhIG5hbWVkdHVwbGUuCisKIAogSmF2YSBQbGF0Zm9ybQogLS0tLS0tLS0tLS0tLQpAQCAtMjE0LDYgKzIyMCwxMCBAQAogICAgcHJlZmVycmluZyA6ZnVuYzpgd2luMzJwaXBlLnBvcGVuYC4gIE9uIFdpbmRvd3MgTlQsIDpmdW5jOmB3aW4zMnBpcGUucG9wZW5gCiAgICBzaG91bGQgd29yazsgb24gV2luZG93cyA5eCBpdCBoYW5ncyBkdWUgdG8gYnVncyBpbiB0aGUgTVMgQyBsaWJyYXJ5LgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG9ic29sZXRlLiAgVXNlIHRoZSA6bW9kOmBzdWJwcm9jZXNzYCBtb2R1bGUuICBDaGVjaworICAgICAgZXNwZWNpYWxseSB0aGUgOnJlZjpgc3VicHJvY2Vzcy1yZXBsYWNlbWVudHNgIHNlY3Rpb24uCisKIAogTWFjIE9TIFBsYXRmb3JtCiAtLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3Bvc2l4LnJzdCBiL0RvYy9saWJyYXJ5L3Bvc2l4LnJzdAppbmRleCAwN2RiMmIyLi5iYTFiNGI1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wb3NpeC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcG9zaXgucnN0CkBAIC0zNyw3ICszNyw3IEBACiAuLiBzZWN0aW9uYXV0aG9yOjogU3RldmUgQ2xpZnQgPGNsaWZ0QG1haWwuYW5hY2FwYS5uZXQ+CiAKIFNldmVyYWwgb3BlcmF0aW5nIHN5c3RlbXMgKGluY2x1ZGluZyBBSVgsIEhQLVVYLCBJcml4IGFuZCBTb2xhcmlzKSBwcm92aWRlCi1zdXBwb3J0IGZvciBmaWxlcyB0aGF0IGFyZSBsYXJnZXIgdGhhbiAyIEdCIGZyb20gYSBDIHByb2dyYW1taW5nIG1vZGVsIHdoZXJlCitzdXBwb3J0IGZvciBmaWxlcyB0aGF0IGFyZSBsYXJnZXIgdGhhbiAyIEdpQiBmcm9tIGEgQyBwcm9ncmFtbWluZyBtb2RlbCB3aGVyZQogOmM6dHlwZTpgaW50YCBhbmQgOmM6dHlwZTpgbG9uZ2AgYXJlIDMyLWJpdCB2YWx1ZXMuIFRoaXMgaXMgdHlwaWNhbGx5IGFjY29tcGxpc2hlZAogYnkgZGVmaW5pbmcgdGhlIHJlbGV2YW50IHNpemUgYW5kIG9mZnNldCB0eXBlcyBhcyA2NC1iaXQgdmFsdWVzLiBTdWNoIGZpbGVzIGFyZQogc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIDpkZm46YGxhcmdlIGZpbGVzYC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QgYi9Eb2MvbGlicmFyeS9yYW5kb20ucnN0CmluZGV4IDFjZDRkMjYuLjU1YzlkNzAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdApAQCAtNDMsNiArNDMsMTIgQEAKIHVzZXMgdGhlIHN5c3RlbSBmdW5jdGlvbiA6ZnVuYzpgb3MudXJhbmRvbWAgdG8gZ2VuZXJhdGUgcmFuZG9tIG51bWJlcnMKIGZyb20gc291cmNlcyBwcm92aWRlZCBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbS4KIAorLi4gd2FybmluZzo6CisKKyAgIFRoZSBnZW5lcmF0b3JzIG9mIHRoZSA6bW9kOmByYW5kb21gIG1vZHVsZSBzaG91bGQgbm90IGJlIHVzZWQgZm9yIHNlY3VyaXR5CisgICBwdXJwb3Nlcy4gVXNlIDpmdW5jOmBzc2wuUkFORF9ieXRlc2AgaWYgeW91IHJlcXVpcmUgYSBjcnlwdG9ncmFwaGljYWxseQorICAgc2VjdXJlIHBzZXVkb3JhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLgorCiAKIEJvb2trZWVwaW5nIGZ1bmN0aW9uczoKIApAQCAtMTQ1LDYgKzE1MSw5IEBACiAgICBhcmd1bWVudC4gIFRoaXMgaXMgZXNwZWNpYWxseSBmYXN0IGFuZCBzcGFjZSBlZmZpY2llbnQgZm9yIHNhbXBsaW5nIGZyb20gYSBsYXJnZQogICAgcG9wdWxhdGlvbjogIGBgc2FtcGxlKHJhbmdlKDEwMDAwMDAwKSwgNjApYGAuCiAKKyAgIElmIHRoZSBzYW1wbGUgc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUgcG9wdWxhdGlvbiBzaXplLCBhIDpleGM6YFZhbHVlRXJyb3JgCisgICBpcyByYWlzZWQuCisKIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGdlbmVyYXRlIHNwZWNpZmljIHJlYWwtdmFsdWVkIGRpc3RyaWJ1dGlvbnMuIEZ1bmN0aW9uCiBwYXJhbWV0ZXJzIGFyZSBuYW1lZCBhZnRlciB0aGUgY29ycmVzcG9uZGluZyB2YXJpYWJsZXMgaW4gdGhlIGRpc3RyaWJ1dGlvbidzCiBlcXVhdGlvbiwgYXMgdXNlZCBpbiBjb21tb24gbWF0aGVtYXRpY2FsIHByYWN0aWNlOyBtb3N0IG9mIHRoZXNlIGVxdWF0aW9ucyBjYW4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3JlLnJzdCBiL0RvYy9saWJyYXJ5L3JlLnJzdAppbmRleCAyNmYyYTM4Li5iMGNiODcwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9yZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcmUucnN0CkBAIC00MTQsMTcgKzQxNCwyNCBAQAogYWNjZXB0ZWQgYnkgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXJzZXI6OgogCiAgICBcYSAgICAgIFxiICAgICAgXGYgICAgICBcbgotICAgXHIgICAgICBcdCAgICAgIFx2ICAgICAgXHgKLSAgIFxcCisgICBcciAgICAgIFx0ICAgICAgXHUgICAgICBcVQorICAgXHYgICAgICBceCAgICAgIFxcCiAKIChOb3RlIHRoYXQgYGBcYmBgIGlzIHVzZWQgdG8gcmVwcmVzZW50IHdvcmQgYm91bmRhcmllcywgYW5kIG1lYW5zICJiYWNrc3BhY2UiCiBvbmx5IGluc2lkZSBjaGFyYWN0ZXIgY2xhc3Nlcy4pCiAKK2BgJ1x1J2BgIGFuZCBgYCdcVSdgYCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBvbmx5IHJlY29nbml6ZWQgaW4gVW5pY29kZQorcGF0dGVybnMuICBJbiBieXRlcyBwYXR0ZXJucyB0aGV5IGFyZSBub3QgdHJlYXRlZCBzcGVjaWFsbHkuCisKIE9jdGFsIGVzY2FwZXMgYXJlIGluY2x1ZGVkIGluIGEgbGltaXRlZCBmb3JtLiAgSWYgdGhlIGZpcnN0IGRpZ2l0IGlzIGEgMCwgb3IgaWYKIHRoZXJlIGFyZSB0aHJlZSBvY3RhbCBkaWdpdHMsIGl0IGlzIGNvbnNpZGVyZWQgYW4gb2N0YWwgZXNjYXBlLiBPdGhlcndpc2UsIGl0IGlzCiBhIGdyb3VwIHJlZmVyZW5jZS4gIEFzIGZvciBzdHJpbmcgbGl0ZXJhbHMsIG9jdGFsIGVzY2FwZXMgYXJlIGFsd2F5cyBhdCBtb3N0CiB0aHJlZSBkaWdpdHMgaW4gbGVuZ3RoLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgVGhlIGBgJ1x1J2BgIGFuZCBgYCdcVSdgYCBlc2NhcGUgc2VxdWVuY2VzIGhhdmUgYmVlbiBhZGRlZC4KKworCiAKIC4uIF9jb250ZW50cy1vZi1tb2R1bGUtcmU6CiAKQEAgLTY4NCw5ICs2OTEsMTIgQEAKIAogLi4gZnVuY3Rpb246OiBlc2NhcGUoc3RyaW5nKQogCi0gICBSZXR1cm4gKnN0cmluZyogd2l0aCBhbGwgbm9uLWFscGhhbnVtZXJpY3MgYmFja3NsYXNoZWQ7IHRoaXMgaXMgdXNlZnVsIGlmIHlvdQotICAgd2FudCB0byBtYXRjaCBhbiBhcmJpdHJhcnkgbGl0ZXJhbCBzdHJpbmcgdGhhdCBtYXkgaGF2ZSByZWd1bGFyIGV4cHJlc3Npb24KLSAgIG1ldGFjaGFyYWN0ZXJzIGluIGl0LgorICAgRXNjYXBlIGFsbCB0aGUgY2hhcmFjdGVycyBpbiBwYXR0ZXJuIGV4Y2VwdCBBU0NJSSBsZXR0ZXJzLCBudW1iZXJzIGFuZCBgYCdfJ2BgLgorICAgVGhpcyBpcyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gbWF0Y2ggYW4gYXJiaXRyYXJ5IGxpdGVyYWwgc3RyaW5nIHRoYXQgbWF5CisgICBoYXZlIHJlZ3VsYXIgZXhwcmVzc2lvbiBtZXRhY2hhcmFjdGVycyBpbiBpdC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSBgYCdfJ2BgIGNoYXJhY3RlciBpcyBubyBsb25nZXIgZXNjYXBlZC4KIAogCiAuLiBmdW5jdGlvbjo6IHB1cmdlKCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdCBiL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdAppbmRleCBhYjU1MTk3Li4xMTM0NjE5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0CkBAIC0xOTksNyArMTk5LDcgQEAKICAgIGhpc3RmaWxlID0gb3MucGF0aC5qb2luKG9zLnBhdGguZXhwYW5kdXNlcigifiIpLCAiLnB5aGlzdCIpCiAgICB0cnk6CiAgICAgICAgcmVhZGxpbmUucmVhZF9oaXN0b3J5X2ZpbGUoaGlzdGZpbGUpCi0gICBleGNlcHQgSU9FcnJvcjoKKyAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKICAgICAgICBwYXNzCiAgICBpbXBvcnQgYXRleGl0CiAgICBhdGV4aXQucmVnaXN0ZXIocmVhZGxpbmUud3JpdGVfaGlzdG9yeV9maWxlLCBoaXN0ZmlsZSkKQEAgLTIyNCw3ICsyMjQsNyBAQAogICAgICAgICAgICBpZiBoYXNhdHRyKHJlYWRsaW5lLCAicmVhZF9oaXN0b3J5X2ZpbGUiKToKICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICByZWFkbGluZS5yZWFkX2hpc3RvcnlfZmlsZShoaXN0ZmlsZSkKLSAgICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgogICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgIGF0ZXhpdC5yZWdpc3RlcihzZWxmLnNhdmVfaGlzdG9yeSwgaGlzdGZpbGUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3Jlc291cmNlLnJzdCBiL0RvYy9saWJyYXJ5L3Jlc291cmNlLnJzdAppbmRleCBjMTZiMDEzLi4wM2E3Y2I1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9yZXNvdXJjZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcmVzb3VyY2UucnN0CkBAIC0xNCwxMyArMTQsMTUgQEAKIFN5bWJvbGljIGNvbnN0YW50cyBhcmUgdXNlZCB0byBzcGVjaWZ5IHBhcnRpY3VsYXIgc3lzdGVtIHJlc291cmNlcyBhbmQgdG8KIHJlcXVlc3QgdXNhZ2UgaW5mb3JtYXRpb24gYWJvdXQgZWl0aGVyIHRoZSBjdXJyZW50IHByb2Nlc3Mgb3IgaXRzIGNoaWxkcmVuLgogCi1BIHNpbmdsZSBleGNlcHRpb24gaXMgZGVmaW5lZCBmb3IgZXJyb3JzOgorQW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIG9uIHN5c2NhbGwgZmFpbHVyZS4KIAogCiAuLiBleGNlcHRpb246OiBlcnJvcgogCi0gICBUaGUgZnVuY3Rpb25zIGRlc2NyaWJlZCBiZWxvdyBtYXkgcmFpc2UgdGhpcyBlcnJvciBpZiB0aGUgdW5kZXJseWluZyBzeXN0ZW0gY2FsbAotICAgZmFpbHVyZXMgdW5leHBlY3RlZGx5LgorICAgQSBkZXByZWNhdGVkIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgRm9sbG93aW5nIDpwZXA6YDMxNTFgLCB0aGlzIGNsYXNzIHdhcyBtYWRlIGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKIFJlc291cmNlIExpbWl0cwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2NoZWQucnN0IGIvRG9jL2xpYnJhcnkvc2NoZWQucnN0CmluZGV4IDAwMGRiYTAuLmYxYTM3NmYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NjaGVkLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zY2hlZC5yc3QKQEAgLTE0LDYzICsxNCw0NyBAQAogVGhlIDptb2Q6YHNjaGVkYCBtb2R1bGUgZGVmaW5lcyBhIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgYSBnZW5lcmFsIHB1cnBvc2UgZXZlbnQKIHNjaGVkdWxlcjoKIAotLi4gY2xhc3M6OiBzY2hlZHVsZXIodGltZWZ1bmMsIGRlbGF5ZnVuYykKKy4uIGNsYXNzOjogc2NoZWR1bGVyKHRpbWVmdW5jPXRpbWUubW9ub3RvbmljLCBkZWxheWZ1bmM9dGltZS5zbGVlcCkKIAogICAgVGhlIDpjbGFzczpgc2NoZWR1bGVyYCBjbGFzcyBkZWZpbmVzIGEgZ2VuZXJpYyBpbnRlcmZhY2UgdG8gc2NoZWR1bGluZyBldmVudHMuCiAgICBJdCBuZWVkcyB0d28gZnVuY3Rpb25zIHRvIGFjdHVhbGx5IGRlYWwgd2l0aCB0aGUgIm91dHNpZGUgd29ybGQiIC0tLSAqdGltZWZ1bmMqCiAgICBzaG91bGQgYmUgY2FsbGFibGUgd2l0aG91dCBhcmd1bWVudHMsIGFuZCByZXR1cm4gIGEgbnVtYmVyICh0aGUgInRpbWUiLCBpbiBhbnkKLSAgIHVuaXRzIHdoYXRzb2V2ZXIpLiAgVGhlICpkZWxheWZ1bmMqIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsYWJsZSB3aXRoIG9uZQorICAgdW5pdHMgd2hhdHNvZXZlcikuIElmIHRpbWUubW9ub3RvbmljIGlzIG5vdCBhdmFpbGFibGUsIHRoZSAqdGltZWZ1bmMqIGRlZmF1bHQKKyAgIGlzIHRpbWUudGltZSBpbnN0ZWFkLiBUaGUgKmRlbGF5ZnVuYyogZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxhYmxlIHdpdGggb25lCiAgICBhcmd1bWVudCwgY29tcGF0aWJsZSB3aXRoIHRoZSBvdXRwdXQgb2YgKnRpbWVmdW5jKiwgYW5kIHNob3VsZCBkZWxheSB0aGF0IG1hbnkKICAgIHRpbWUgdW5pdHMuICpkZWxheWZ1bmMqIHdpbGwgYWxzbyBiZSBjYWxsZWQgd2l0aCB0aGUgYXJndW1lbnQgYGAwYGAgYWZ0ZXIgZWFjaAogICAgZXZlbnQgaXMgcnVuIHRvIGFsbG93IG90aGVyIHRocmVhZHMgYW4gb3Bwb3J0dW5pdHkgdG8gcnVuIGluIG11bHRpLXRocmVhZGVkCiAgICBhcHBsaWNhdGlvbnMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZWZ1bmMqIGFuZCAqZGVsYXlmdW5jKiBwYXJhbWV0ZXJzIGFyZSBvcHRpb25hbC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpjbGFzczpgc2NoZWR1bGVyYCBjbGFzcyBjYW4gYmUgc2FmZWx5IHVzZWQgaW4gbXVsdGktdGhyZWFkZWQKKyAgICAgIGVudmlyb25tZW50cy4KKwogRXhhbXBsZTo6CiAKICAgID4+PiBpbXBvcnQgc2NoZWQsIHRpbWUKICAgID4+PiBzID0gc2NoZWQuc2NoZWR1bGVyKHRpbWUudGltZSwgdGltZS5zbGVlcCkKLSAgID4+PiBkZWYgcHJpbnRfdGltZSgpOiBwcmludCgiRnJvbSBwcmludF90aW1lIiwgdGltZS50aW1lKCkpCisgICA+Pj4gZGVmIHByaW50X3RpbWUoYT0nZGVmYXVsdCcpOgorICAgLi4uICAgICBwcmludCgiRnJvbSBwcmludF90aW1lIiwgdGltZS50aW1lKCksIGEpCiAgICAuLi4KICAgID4+PiBkZWYgcHJpbnRfc29tZV90aW1lcygpOgogICAgLi4uICAgICBwcmludCh0aW1lLnRpbWUoKSkKLSAgIC4uLiAgICAgcy5lbnRlcig1LCAxLCBwcmludF90aW1lLCAoKSkKLSAgIC4uLiAgICAgcy5lbnRlcigxMCwgMSwgcHJpbnRfdGltZSwgKCkpCisgICAuLi4gICAgIHMuZW50ZXIoMTAsIDEsIHByaW50X3RpbWUpCisgICAuLi4gICAgIHMuZW50ZXIoNSwgMiwgcHJpbnRfdGltZSwgYXJndW1lbnQ9KCdwb3NpdGlvbmFsJywpKQorICAgLi4uICAgICBzLmVudGVyKDUsIDEsIHByaW50X3RpbWUsIGt3YXJncz17J2EnOiAna2V5d29yZCd9KQogICAgLi4uICAgICBzLnJ1bigpCiAgICAuLi4gICAgIHByaW50KHRpbWUudGltZSgpKQogICAgLi4uCiAgICA+Pj4gcHJpbnRfc29tZV90aW1lcygpCiAgICA5MzAzNDM2OTAuMjU3Ci0gICBGcm9tIHByaW50X3RpbWUgOTMwMzQzNjk1LjI3NAotICAgRnJvbSBwcmludF90aW1lIDkzMDM0MzcwMC4yNzMKKyAgIEZyb20gcHJpbnRfdGltZSA5MzAzNDM2OTUuMjc0IHBvc2l0aW9uYWwKKyAgIEZyb20gcHJpbnRfdGltZSA5MzAzNDM2OTUuMjc1IGtleXdvcmQKKyAgIEZyb20gcHJpbnRfdGltZSA5MzAzNDM3MDAuMjczIGRlZmF1bHQKICAgIDkzMDM0MzcwMC4yNzYKIAotSW4gbXVsdGktdGhyZWFkZWQgZW52aXJvbm1lbnRzLCB0aGUgOmNsYXNzOmBzY2hlZHVsZXJgIGNsYXNzIGhhcyBsaW1pdGF0aW9ucwotd2l0aCByZXNwZWN0IHRvIHRocmVhZC1zYWZldHksIGluYWJpbGl0eSB0byBpbnNlcnQgYSBuZXcgdGFzayBiZWZvcmUKLXRoZSBvbmUgY3VycmVudGx5IHBlbmRpbmcgaW4gYSBydW5uaW5nIHNjaGVkdWxlciwgYW5kIGhvbGRpbmcgdXAgdGhlIG1haW4KLXRocmVhZCB1bnRpbCB0aGUgZXZlbnQgcXVldWUgaXMgZW1wdHkuICBJbnN0ZWFkLCB0aGUgcHJlZmVycmVkIGFwcHJvYWNoCi1pcyB0byB1c2UgdGhlIDpjbGFzczpgdGhyZWFkaW5nLlRpbWVyYCBjbGFzcyBpbnN0ZWFkLgotCi1FeGFtcGxlOjoKLQotICAgID4+PiBpbXBvcnQgdGltZQotICAgID4+PiBmcm9tIHRocmVhZGluZyBpbXBvcnQgVGltZXIKLSAgICA+Pj4gZGVmIHByaW50X3RpbWUoKToKLSAgICAuLi4gICAgIHByaW50KCJGcm9tIHByaW50X3RpbWUiLCB0aW1lLnRpbWUoKSkKLSAgICAuLi4KLSAgICA+Pj4gZGVmIHByaW50X3NvbWVfdGltZXMoKToKLSAgICAuLi4gICAgIHByaW50KHRpbWUudGltZSgpKQotICAgIC4uLiAgICAgVGltZXIoNSwgcHJpbnRfdGltZSwgKCkpLnN0YXJ0KCkKLSAgICAuLi4gICAgIFRpbWVyKDEwLCBwcmludF90aW1lLCAoKSkuc3RhcnQoKQotICAgIC4uLiAgICAgdGltZS5zbGVlcCgxMSkgICMgc2xlZXAgd2hpbGUgdGltZS1kZWxheSBldmVudHMgZXhlY3V0ZQotICAgIC4uLiAgICAgcHJpbnQodGltZS50aW1lKCkpCi0gICAgLi4uCi0gICAgPj4+IHByaW50X3NvbWVfdGltZXMoKQotICAgIDkzMDM0MzY5MC4yNTcKLSAgICBGcm9tIHByaW50X3RpbWUgOTMwMzQzNjk1LjI3NAotICAgIEZyb20gcHJpbnRfdGltZSA5MzAzNDM3MDAuMjczCi0gICAgOTMwMzQzNzAxLjMwMQotCi0KIC4uIF9zY2hlZHVsZXItb2JqZWN0czoKIAogU2NoZWR1bGVyIE9iamVjdHMKQEAgLTc5LDI2ICs2MywzOCBAQAogOmNsYXNzOmBzY2hlZHVsZXJgIGluc3RhbmNlcyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhbmQgYXR0cmlidXRlczoKIAogCi0uLiBtZXRob2Q6OiBzY2hlZHVsZXIuZW50ZXJhYnModGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQpCisuLiBtZXRob2Q6OiBzY2hlZHVsZXIuZW50ZXJhYnModGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQ9KCksIGt3YXJncz17fSkKIAogICAgU2NoZWR1bGUgYSBuZXcgZXZlbnQuIFRoZSAqdGltZSogYXJndW1lbnQgc2hvdWxkIGJlIGEgbnVtZXJpYyB0eXBlIGNvbXBhdGlibGUKICAgIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgKnRpbWVmdW5jKiBmdW5jdGlvbiBwYXNzZWQgIHRvIHRoZSBjb25zdHJ1Y3Rvci4KICAgIEV2ZW50cyBzY2hlZHVsZWQgZm9yIHRoZSBzYW1lICp0aW1lKiB3aWxsIGJlIGV4ZWN1dGVkIGluIHRoZSBvcmRlciBvZiB0aGVpcgogICAgKnByaW9yaXR5Ki4KIAotICAgRXhlY3V0aW5nIHRoZSBldmVudCBtZWFucyBleGVjdXRpbmcgYGBhY3Rpb24oKmFyZ3VtZW50KWBgLiAgKmFyZ3VtZW50KiBtdXN0IGJlIGEKLSAgIHNlcXVlbmNlIGhvbGRpbmcgdGhlIHBhcmFtZXRlcnMgZm9yICphY3Rpb24qLgorICAgRXhlY3V0aW5nIHRoZSBldmVudCBtZWFucyBleGVjdXRpbmcgYGBhY3Rpb24oKmFyZ3VtZW50LCAqKmt3YXJncylgYC4KKyAgICphcmd1bWVudCogaXMgYSBzZXF1ZW5jZSBob2xkaW5nIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBmb3IgKmFjdGlvbiouCisgICAqa3dhcmdzKiBpcyBhIGRpY3Rpb25hcnkgaG9sZGluZyB0aGUga2V5d29yZCBhcmd1bWVudHMgZm9yICphY3Rpb24qLgogCiAgICBSZXR1cm4gdmFsdWUgaXMgYW4gZXZlbnQgd2hpY2ggbWF5IGJlIHVzZWQgZm9yIGxhdGVyIGNhbmNlbGxhdGlvbiBvZiB0aGUgZXZlbnQKICAgIChzZWUgOm1ldGg6YGNhbmNlbGApLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKmFyZ3VtZW50KiBwYXJhbWV0ZXIgaXMgb3B0aW9uYWwuCiAKLS4uIG1ldGhvZDo6IHNjaGVkdWxlci5lbnRlcihkZWxheSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQpCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgICprd2FyZ3MqIHBhcmFtZXRlciB3YXMgYWRkZWQuCisKKworLi4gbWV0aG9kOjogc2NoZWR1bGVyLmVudGVyKGRlbGF5LCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudD0oKSwga3dhcmdzPXt9KQogCiAgICBTY2hlZHVsZSBhbiBldmVudCBmb3IgKmRlbGF5KiBtb3JlIHRpbWUgdW5pdHMuIE90aGVyIHRoYW4gdGhlIHJlbGF0aXZlIHRpbWUsIHRoZQogICAgb3RoZXIgYXJndW1lbnRzLCB0aGUgZWZmZWN0IGFuZCB0aGUgcmV0dXJuIHZhbHVlIGFyZSB0aGUgc2FtZSBhcyB0aG9zZSBmb3IKICAgIDptZXRoOmBlbnRlcmFic2AuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqYXJndW1lbnQqIHBhcmFtZXRlciBpcyBvcHRpb25hbC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICAqa3dhcmdzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCiAuLiBtZXRob2Q6OiBzY2hlZHVsZXIuY2FuY2VsKGV2ZW50KQogCkBAIC0xMTEsMTIgKzEwNywxNiBAQAogICAgUmV0dXJuIHRydWUgaWYgdGhlIGV2ZW50IHF1ZXVlIGlzIGVtcHR5LgogCiAKLS4uIG1ldGhvZDo6IHNjaGVkdWxlci5ydW4oKQorLi4gbWV0aG9kOjogc2NoZWR1bGVyLnJ1bihibG9ja2luZz1UcnVlKQogCi0gICBSdW4gYWxsIHNjaGVkdWxlZCBldmVudHMuIFRoaXMgZnVuY3Rpb24gd2lsbCB3YWl0ICAodXNpbmcgdGhlIDpmdW5jOmBkZWxheWZ1bmNgCisgICBSdW4gYWxsIHNjaGVkdWxlZCBldmVudHMuIFRoaXMgbWV0aG9kIHdpbGwgd2FpdCAgKHVzaW5nIHRoZSA6ZnVuYzpgZGVsYXlmdW5jYAogICAgZnVuY3Rpb24gcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3RvcikgZm9yIHRoZSBuZXh0IGV2ZW50LCB0aGVuIGV4ZWN1dGUgaXQgYW5kIHNvCiAgICBvbiB1bnRpbCB0aGVyZSBhcmUgbm8gbW9yZSBzY2hlZHVsZWQgZXZlbnRzLgogCisgICBJZiAqYmxvY2tpbmcqIGlzIEZhbHNlIGV4ZWN1dGVzIHRoZSBzY2hlZHVsZWQgZXZlbnRzIGR1ZSB0byBleHBpcmUgc29vbmVzdAorICAgKGlmIGFueSkgYW5kIHRoZW4gcmV0dXJuIHRoZSBkZWFkbGluZSBvZiB0aGUgbmV4dCBzY2hlZHVsZWQgY2FsbCBpbiB0aGUKKyAgIHNjaGVkdWxlciAoaWYgYW55KS4KKwogICAgRWl0aGVyICphY3Rpb24qIG9yICpkZWxheWZ1bmMqIGNhbiByYWlzZSBhbiBleGNlcHRpb24uICBJbiBlaXRoZXIgY2FzZSwgdGhlCiAgICBzY2hlZHVsZXIgd2lsbCBtYWludGFpbiBhIGNvbnNpc3RlbnQgc3RhdGUgYW5kIHByb3BhZ2F0ZSB0aGUgZXhjZXB0aW9uLiAgSWYgYW4KICAgIGV4Y2VwdGlvbiBpcyByYWlzZWQgYnkgKmFjdGlvbiosIHRoZSBldmVudCB3aWxsIG5vdCBiZSBhdHRlbXB0ZWQgaW4gZnV0dXJlIGNhbGxzCkBAIC0xMjcsOCArMTI3LDExIEBACiAgICB0aGUgY2FsbGluZyBjb2RlIGlzIHJlc3BvbnNpYmxlIGZvciBjYW5jZWxpbmcgIGV2ZW50cyB3aGljaCBhcmUgbm8gbG9uZ2VyCiAgICBwZXJ0aW5lbnQuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgKmJsb2NraW5nKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorCiAuLiBhdHRyaWJ1dGU6OiBzY2hlZHVsZXIucXVldWUKIAogICAgUmVhZC1vbmx5IGF0dHJpYnV0ZSByZXR1cm5pbmcgYSBsaXN0IG9mIHVwY29taW5nIGV2ZW50cyBpbiB0aGUgb3JkZXIgdGhleQogICAgd2lsbCBiZSBydW4uICBFYWNoIGV2ZW50IGlzIHNob3duIGFzIGEgOnRlcm06YG5hbWVkIHR1cGxlYCB3aXRoIHRoZQotICAgZm9sbG93aW5nIGZpZWxkczogIHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50LgorICAgZm9sbG93aW5nIGZpZWxkczogIHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50LCBrd2FyZ3MuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zZWxlY3QucnN0IGIvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdAppbmRleCBhNDUwZWMyLi40ZTYwZjRhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zZWxlY3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QKQEAgLTYsNyArNiw4IEBACiAKIAogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSA6YzpmdW5jOmBzZWxlY3RgIGFuZCA6YzpmdW5jOmBwb2xsYCBmdW5jdGlvbnMKLWF2YWlsYWJsZSBpbiBtb3N0IG9wZXJhdGluZyBzeXN0ZW1zLCA6YzpmdW5jOmBlcG9sbGAgYXZhaWxhYmxlIG9uIExpbnV4IDIuNSsgYW5kCithdmFpbGFibGUgaW4gbW9zdCBvcGVyYXRpbmcgc3lzdGVtcywgOmM6ZnVuYzpgZGV2cG9sbGAgYXZhaWxhYmxlIG9uCitTb2xhcmlzIGFuZCBkZXJpdmF0aXZlcywgOmM6ZnVuYzpgZXBvbGxgIGF2YWlsYWJsZSBvbiBMaW51eCAyLjUrIGFuZAogOmM6ZnVuYzpga3F1ZXVlYCBhdmFpbGFibGUgb24gbW9zdCBCU0QuCiBOb3RlIHRoYXQgb24gV2luZG93cywgaXQgb25seSB3b3JrcyBmb3Igc29ja2V0czsgb24gb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMsCiBpdCBhbHNvIHdvcmtzIGZvciBvdGhlciBmaWxlIHR5cGVzIChpbiBwYXJ0aWN1bGFyLCBvbiBVbml4LCBpdCB3b3JrcyBvbiBwaXBlcykuCkBAIC0xOCwxNyArMTksMzggQEAKIAogLi4gZXhjZXB0aW9uOjogZXJyb3IKIAotICAgVGhlIGV4Y2VwdGlvbiByYWlzZWQgd2hlbiBhbiBlcnJvciBvY2N1cnMuICBUaGUgYWNjb21wYW55aW5nIHZhbHVlIGlzIGEgcGFpcgotICAgY29udGFpbmluZyB0aGUgbnVtZXJpYyBlcnJvciBjb2RlIGZyb20gOmM6ZGF0YTpgZXJybm9gIGFuZCB0aGUgY29ycmVzcG9uZGluZwotICAgc3RyaW5nLCBhcyB3b3VsZCBiZSBwcmludGVkIGJ5IHRoZSBDIGZ1bmN0aW9uIDpjOmZ1bmM6YHBlcnJvcmAuCisgICBBIGRlcHJlY2F0ZWQgYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBGb2xsb3dpbmcgOnBlcDpgMzE1MWAsIHRoaXMgY2xhc3Mgd2FzIG1hZGUgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIAotLi4gZnVuY3Rpb246OiBlcG9sbChzaXplaGludD0tMSkKKy4uIGZ1bmN0aW9uOjogZGV2cG9sbCgpCiAKLSAgIChPbmx5IHN1cHBvcnRlZCBvbiBMaW51eCAyLjUuNDQgYW5kIG5ld2VyLikgIFJldHVybnMgYW4gZWRnZSBwb2xsaW5nIG9iamVjdCwKLSAgIHdoaWNoIGNhbiBiZSB1c2VkIGFzIEVkZ2Ugb3IgTGV2ZWwgVHJpZ2dlcmVkIGludGVyZmFjZSBmb3IgSS9PIGV2ZW50czsgc2VlCi0gICBzZWN0aW9uIDpyZWY6YGVwb2xsLW9iamVjdHNgIGJlbG93IGZvciB0aGUgbWV0aG9kcyBzdXBwb3J0ZWQgYnkgZXBvbGxpbmcKLSAgIG9iamVjdHMuCisgICAoT25seSBzdXBwb3J0ZWQgb24gU29sYXJpcyBhbmQgZGVyaXZhdGl2ZXMuKSAgUmV0dXJucyBhIGBgL2Rldi9wb2xsYGAKKyAgIHBvbGxpbmcgb2JqZWN0OyBzZWUgc2VjdGlvbiA6cmVmOmBkZXZwb2xsLW9iamVjdHNgIGJlbG93IGZvciB0aGUKKyAgIG1ldGhvZHMgc3VwcG9ydGVkIGJ5IGRldnBvbGwgb2JqZWN0cy4KKworICAgOmM6ZnVuYzpgZGV2cG9sbGAgb2JqZWN0cyBhcmUgbGlua2VkIHRvIHRoZSBudW1iZXIgb2YgZmlsZQorICAgZGVzY3JpcHRvcnMgYWxsb3dlZCBhdCB0aGUgdGltZSBvZiBpbnN0YW50aWF0aW9uLiBJZiB5b3VyIHByb2dyYW0KKyAgIHJlZHVjZXMgdGhpcyB2YWx1ZSwgOmM6ZnVuYzpgZGV2cG9sbGAgd2lsbCBmYWlsLiBJZiB5b3VyIHByb2dyYW0KKyAgIGluY3JlYXNlcyB0aGlzIHZhbHVlLCA6YzpmdW5jOmBkZXZwb2xsYCBtYXkgcmV0dXJuIGFuCisgICBpbmNvbXBsZXRlIGxpc3Qgb2YgYWN0aXZlIGZpbGUgZGVzY3JpcHRvcnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IGVwb2xsKHNpemVoaW50PS0xLCBmbGFncz0wKQorCisgICAoT25seSBzdXBwb3J0ZWQgb24gTGludXggMi41LjQ0IGFuZCBuZXdlci4pIFJldHVybiBhbiBlZGdlIHBvbGxpbmcgb2JqZWN0LAorICAgd2hpY2ggY2FuIGJlIHVzZWQgYXMgRWRnZSBvciBMZXZlbCBUcmlnZ2VyZWQgaW50ZXJmYWNlIGZvciBJL08KKyAgIGV2ZW50cy4gKnNpemVoaW50KiBpcyBkZXByZWNhdGVkIGFuZCBjb21wbGV0ZWx5IGlnbm9yZWQuICpmbGFncyogY2FuIGJlIHNldAorICAgdG8gOmNvbnN0OmBFUE9MTF9DTE9FWEVDYCwgd2hpY2ggY2F1c2VzIHRoZSBlcG9sbCBkZXNjcmlwdG9yIHRvIGJlIGNsb3NlZAorICAgYXV0b21hdGljYWxseSB3aGVuIDpmdW5jOmBvcy5leGVjdmVgIGlzIGNhbGxlZC4gU2VlIHNlY3Rpb24KKyAgIDpyZWY6YGVwb2xsLW9iamVjdHNgIGJlbG93IGZvciB0aGUgbWV0aG9kcyBzdXBwb3J0ZWQgYnkgZXBvbGxpbmcgb2JqZWN0cy4KKworCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICpmbGFncyogcGFyYW1ldGVyLgogCiAKIC4uIGZ1bmN0aW9uOjogcG9sbCgpCkBAIC0xMDYsNiArMTI4LDc0IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCisuLiBfZGV2cG9sbC1vYmplY3RzOgorCitgYC9kZXYvcG9sbGBgIFBvbGxpbmcgT2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICBodHRwOi8vZGV2ZWxvcGVycy5zdW4uY29tL3NvbGFyaXMvYXJ0aWNsZXMvdXNpbmdfZGV2cG9sbC5odG1sCisgICBodHRwOi8vZGV2ZWxvcGVycy5zdW4uY29tL3NvbGFyaXMvYXJ0aWNsZXMvcG9sbGluZ19lZmZpY2llbnQuaHRtbAorCitTb2xhcmlzIGFuZCBkZXJpdmF0aXZlcyBoYXZlIGBgL2Rldi9wb2xsYGAuIFdoaWxlIDpjOmZ1bmM6YHNlbGVjdGAgaXMKK08oaGlnaGVzdCBmaWxlIGRlc2NyaXB0b3IpIGFuZCA6YzpmdW5jOmBwb2xsYCBpcyBPKG51bWJlciBvZiBmaWxlCitkZXNjcmlwdG9ycyksIGBgL2Rldi9wb2xsYGAgaXMgTyhhY3RpdmUgZmlsZSBkZXNjcmlwdG9ycykuCisKK2BgL2Rldi9wb2xsYGAgYmVoYXZpb3VyIGlzIHZlcnkgY2xvc2UgdG8gdGhlIHN0YW5kYXJkIDpjOmZ1bmM6YHBvbGxgCitvYmplY3QuCisKKworLi4gbWV0aG9kOjogZGV2cG9sbC5yZWdpc3RlcihmZFssIGV2ZW50bWFza10pCisKKyAgIFJlZ2lzdGVyIGEgZmlsZSBkZXNjcmlwdG9yIHdpdGggdGhlIHBvbGxpbmcgb2JqZWN0LiAgRnV0dXJlIGNhbGxzIHRvIHRoZQorICAgOm1ldGg6YHBvbGxgIG1ldGhvZCB3aWxsIHRoZW4gY2hlY2sgd2hldGhlciB0aGUgZmlsZSBkZXNjcmlwdG9yIGhhcyBhbnkgcGVuZGluZworICAgSS9PIGV2ZW50cy4gICpmZCogY2FuIGJlIGVpdGhlciBhbiBpbnRlZ2VyLCBvciBhbiBvYmplY3Qgd2l0aCBhIDptZXRoOmBmaWxlbm9gCisgICBtZXRob2QgdGhhdCByZXR1cm5zIGFuIGludGVnZXIuICBGaWxlIG9iamVjdHMgaW1wbGVtZW50IDptZXRoOmBmaWxlbm9gLCBzbyB0aGV5CisgICBjYW4gYWxzbyBiZSB1c2VkIGFzIHRoZSBhcmd1bWVudC4KKworICAgKmV2ZW50bWFzayogaXMgYW4gb3B0aW9uYWwgYml0bWFzayBkZXNjcmliaW5nIHRoZSB0eXBlIG9mIGV2ZW50cyB5b3Ugd2FudCB0bworICAgY2hlY2sgZm9yLiBUaGUgY29uc3RhbnRzIGFyZSB0aGUgc2FtZSB0aGF0IHdpdGggOmM6ZnVuYzpgcG9sbGAKKyAgIG9iamVjdC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYSBjb21iaW5hdGlvbiBvZiB0aGUgY29uc3RhbnRzIDpjb25zdDpgUE9MTElOYCwKKyAgIDpjb25zdDpgUE9MTFBSSWAsIGFuZCA6Y29uc3Q6YFBPTExPVVRgLgorCisgICAuLiB3YXJuaW5nOjoKKworICAgICAgUmVnaXN0ZXJpbmcgYSBmaWxlIGRlc2NyaXB0b3IgdGhhdCdzIGFscmVhZHkgcmVnaXN0ZXJlZCBpcyBub3QgYW4KKyAgICAgIGVycm9yLCBidXQgdGhlIHJlc3VsdCBpcyB1bmRlZmluZWQuIFRoZSBhcHByb3BpYXRlIGFjdGlvbiBpcyB0bworICAgICAgdW5yZWdpc3RlciBvciBtb2RpZnkgaXQgZmlyc3QuIFRoaXMgaXMgYW4gaW1wb3J0YW50IGRpZmZlcmVuY2UKKyAgICAgIGNvbXBhcmVkIHdpdGggOmM6ZnVuYzpgcG9sbGAuCisKKworLi4gbWV0aG9kOjogZGV2cG9sbC5tb2RpZnkoZmRbLCBldmVudG1hc2tdKQorCisgICBUaGlzIG1ldGhvZCBkb2VzIGFuIDptZXRoOmB1bnJlZ2lzdGVyYCBmb2xsb3dlZCBieSBhCisgICA6bWV0aDpgcmVnaXN0ZXJgLiBJdCBpcyAoYSBiaXQpIG1vcmUgZWZmaWNpZW50IHRoYXQgZG9pbmcgdGhlIHNhbWUKKyAgIGV4cGxpY2l0bHkuCisKKworLi4gbWV0aG9kOjogZGV2cG9sbC51bnJlZ2lzdGVyKGZkKQorCisgICBSZW1vdmUgYSBmaWxlIGRlc2NyaXB0b3IgYmVpbmcgdHJhY2tlZCBieSBhIHBvbGxpbmcgb2JqZWN0LiAgSnVzdCBsaWtlIHRoZQorICAgOm1ldGg6YHJlZ2lzdGVyYCBtZXRob2QsICpmZCogY2FuIGJlIGFuIGludGVnZXIgb3IgYW4gb2JqZWN0IHdpdGggYQorICAgOm1ldGg6YGZpbGVub2AgbWV0aG9kIHRoYXQgcmV0dXJucyBhbiBpbnRlZ2VyLgorCisgICBBdHRlbXB0aW5nIHRvIHJlbW92ZSBhIGZpbGUgZGVzY3JpcHRvciB0aGF0IHdhcyBuZXZlciByZWdpc3RlcmVkIGlzCisgICBzYWZlbHkgaWdub3JlZC4KKworCisuLiBtZXRob2Q6OiBkZXZwb2xsLnBvbGwoW3RpbWVvdXRdKQorCisgICBQb2xscyB0aGUgc2V0IG9mIHJlZ2lzdGVyZWQgZmlsZSBkZXNjcmlwdG9ycywgYW5kIHJldHVybnMgYSBwb3NzaWJseS1lbXB0eSBsaXN0CisgICBjb250YWluaW5nIGBgKGZkLCBldmVudClgYCAyLXR1cGxlcyBmb3IgdGhlIGRlc2NyaXB0b3JzIHRoYXQgaGF2ZSBldmVudHMgb3IKKyAgIGVycm9ycyB0byByZXBvcnQuICpmZCogaXMgdGhlIGZpbGUgZGVzY3JpcHRvciwgYW5kICpldmVudCogaXMgYSBiaXRtYXNrIHdpdGgKKyAgIGJpdHMgc2V0IGZvciB0aGUgcmVwb3J0ZWQgZXZlbnRzIGZvciB0aGF0IGRlc2NyaXB0b3IgLS0tIDpjb25zdDpgUE9MTElOYCBmb3IKKyAgIHdhaXRpbmcgaW5wdXQsIDpjb25zdDpgUE9MTE9VVGAgdG8gaW5kaWNhdGUgdGhhdCB0aGUgZGVzY3JpcHRvciBjYW4gYmUgd3JpdHRlbgorICAgdG8sIGFuZCBzbyBmb3J0aC4gQW4gZW1wdHkgbGlzdCBpbmRpY2F0ZXMgdGhhdCB0aGUgY2FsbCB0aW1lZCBvdXQgYW5kIG5vIGZpbGUKKyAgIGRlc2NyaXB0b3JzIGhhZCBhbnkgZXZlbnRzIHRvIHJlcG9ydC4gSWYgKnRpbWVvdXQqIGlzIGdpdmVuLCBpdCBzcGVjaWZpZXMgdGhlCisgICBsZW5ndGggb2YgdGltZSBpbiBtaWxsaXNlY29uZHMgd2hpY2ggdGhlIHN5c3RlbSB3aWxsIHdhaXQgZm9yIGV2ZW50cyBiZWZvcmUKKyAgIHJldHVybmluZy4gSWYgKnRpbWVvdXQqIGlzIG9taXR0ZWQsIC0xLCBvciA6Y29uc3Q6YE5vbmVgLCB0aGUgY2FsbCB3aWxsCisgICBibG9jayB1bnRpbCB0aGVyZSBpcyBhbiBldmVudCBmb3IgdGhpcyBwb2xsIG9iamVjdC4KKworCiAuLiBfZXBvbGwtb2JqZWN0czoKIAogRWRnZSBhbmQgTGV2ZWwgVHJpZ2dlciBQb2xsaW5nIChlcG9sbCkgT2JqZWN0cwpAQCAtMTY1LDExICsyNTUsNiBAQAogCiAgICBSZWdpc3RlciBhIGZkIGRlc2NyaXB0b3Igd2l0aCB0aGUgZXBvbGwgb2JqZWN0LgogCi0gICAuLiBub3RlOjoKLQotICAgICBSZWdpc3RlcmluZyBhIGZpbGUgZGVzY3JpcHRvciB0aGF0J3MgYWxyZWFkeSByZWdpc3RlcmVkIHJhaXNlcyBhbgotICAgICBJT0Vycm9yIC0tIGNvbnRyYXJ5IHRvIDpyZWY6YHBvbGwtb2JqZWN0c2AncyByZWdpc3Rlci4KLQogCiAuLiBtZXRob2Q6OiBlcG9sbC5tb2RpZnkoZmQsIGV2ZW50bWFzaykKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2hsZXgucnN0IGIvRG9jL2xpYnJhcnkvc2hsZXgucnN0CmluZGV4IDAxMTNmYjcuLjk0MWUwOTAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NobGV4LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zaGxleC5yc3QKQEAgLTM0LDYgKzM0LDQwIEBACiAgICAgICBwYXNzaW5nIGBgTm9uZWBgIGZvciAqcyogd2lsbCByZWFkIHRoZSBzdHJpbmcgdG8gc3BsaXQgZnJvbSBzdGFuZGFyZAogICAgICAgaW5wdXQuCiAKKworLi4gZnVuY3Rpb246OiBxdW90ZShzKQorCisgICBSZXR1cm4gYSBzaGVsbC1lc2NhcGVkIHZlcnNpb24gb2YgdGhlIHN0cmluZyAqcyouICBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYQorICAgc3RyaW5nIHRoYXQgY2FuIHNhZmVseSBiZSB1c2VkIGFzIG9uZSB0b2tlbiBpbiBhIHNoZWxsIGNvbW1hbmQgbGluZSwgZm9yCisgICBjYXNlcyB3aGVyZSB5b3UgY2Fubm90IHVzZSBhIGxpc3QuCisKKyAgIFRoaXMgaWRpb20gd291bGQgYmUgdW5zYWZlOjoKKworICAgICAgPj4+IGZpbGVuYW1lID0gJ3NvbWVmaWxlOyBybSAtcmYgficKKyAgICAgID4+PiBjb21tYW5kID0gJ2xzIC1sIHt9Jy5mb3JtYXQoZmlsZW5hbWUpCisgICAgICA+Pj4gcHJpbnQoY29tbWFuZCkgICMgZXhlY3V0ZWQgYnkgYSBzaGVsbDogYm9vbSEKKyAgICAgIGxzIC1sIHNvbWVmaWxlOyBybSAtcmYgfgorCisgICA6ZnVuYzpgcXVvdGVgIGxldHMgeW91IHBsdWcgdGhlIHNlY3VyaXR5IGhvbGU6OgorCisgICAgICA+Pj4gY29tbWFuZCA9ICdscyAtbCB7fScuZm9ybWF0KHF1b3RlKGZpbGVuYW1lKSkKKyAgICAgID4+PiBwcmludChjb21tYW5kKQorICAgICAgbHMgLWwgJ3NvbWVmaWxlOyBybSAtcmYgficKKyAgICAgID4+PiByZW1vdGVfY29tbWFuZCA9ICdzc2ggaG9tZSB7fScuZm9ybWF0KHF1b3RlKGNvbW1hbmQpKQorICAgICAgPj4+IHByaW50KHJlbW90ZV9jb21tYW5kKQorICAgICAgc3NoIGhvbWUgJ2xzIC1sICciJyInc29tZWZpbGU7IHJtIC1yZiB+JyInIicnCisKKyAgIFRoZSBxdW90aW5nIGlzIGNvbXBhdGlibGUgd2l0aCBVTklYIHNoZWxscyBhbmQgd2l0aCA6ZnVuYzpgc3BsaXRgOgorCisgICAgICA+Pj4gcmVtb3RlX2NvbW1hbmQgPSBzcGxpdChyZW1vdGVfY29tbWFuZCkKKyAgICAgID4+PiByZW1vdGVfY29tbWFuZAorICAgICAgWydzc2gnLCAnaG9tZScsICJscyAtbCAnc29tZWZpbGU7IHJtIC1yZiB+JyJdCisgICAgICA+Pj4gY29tbWFuZCA9IHNwbGl0KHJlbW90ZV9jb21tYW5kWy0xXSkKKyAgICAgID4+PiBjb21tYW5kCisgICAgICBbJ2xzJywgJy1sJywgJ3NvbWVmaWxlOyBybSAtcmYgfiddCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiBUaGUgOm1vZDpgc2hsZXhgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgY2xhc3M6CiAKIApAQCAtMjgyLDUgKzMxNiw0IEBACiAKICogRU9GIGlzIHNpZ25hbGVkIHdpdGggYSA6Y29uc3Q6YE5vbmVgIHZhbHVlOwogCi0qIFF1b3RlZCBlbXB0eSBzdHJpbmdzIChgYCcnYGApIGFyZSBhbGxvd2VkOwotCisqIFF1b3RlZCBlbXB0eSBzdHJpbmdzIChgYCcnYGApIGFyZSBhbGxvd2VkLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdCBiL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QKaW5kZXggMThmNjQ4NS4uYTE0NTdkMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zaHV0aWwucnN0CkBAIC00Nyw0NSArNDcsMTI5IEBACiAgICBiZSBjb3BpZWQuCiAKIAotLi4gZnVuY3Rpb246OiBjb3B5ZmlsZShzcmMsIGRzdCkKKy4uIGZ1bmN0aW9uOjogY29weWZpbGUoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBDb3B5IHRoZSBjb250ZW50cyAobm8gbWV0YWRhdGEpIG9mIHRoZSBmaWxlIG5hbWVkICpzcmMqIHRvIGEgZmlsZSBuYW1lZAotICAgKmRzdCouICAqZHN0KiBtdXN0IGJlIHRoZSBjb21wbGV0ZSB0YXJnZXQgZmlsZSBuYW1lOyBsb29rIGF0Ci0gICA6ZnVuYzpgc2h1dGlsLmNvcHlgIGZvciBhIGNvcHkgdGhhdCBhY2NlcHRzIGEgdGFyZ2V0IGRpcmVjdG9yeSBwYXRoLiAgSWYKLSAgICpzcmMqIGFuZCAqZHN0KiBhcmUgdGhlIHNhbWUgZmlsZXMsIDpleGM6YEVycm9yYCBpcyByYWlzZWQuCi0gICBUaGUgZGVzdGluYXRpb24gbG9jYXRpb24gbXVzdCBiZSB3cml0YWJsZTsgb3RoZXJ3aXNlLCAgYW4gOmV4YzpgSU9FcnJvcmAgZXhjZXB0aW9uCi0gICB3aWxsIGJlIHJhaXNlZC4gSWYgKmRzdCogYWxyZWFkeSBleGlzdHMsIGl0IHdpbGwgYmUgcmVwbGFjZWQuICAgU3BlY2lhbCBmaWxlcwotICAgc3VjaCBhcyBjaGFyYWN0ZXIgb3IgYmxvY2sgZGV2aWNlcyBhbmQgcGlwZXMgY2Fubm90IGJlIGNvcGllZCB3aXRoIHRoaXMKLSAgIGZ1bmN0aW9uLiAgKnNyYyogYW5kICpkc3QqIGFyZSBwYXRoIG5hbWVzIGdpdmVuIGFzIHN0cmluZ3MuCisgICAqZHN0KiBhbmQgcmV0dXJuICpkc3QqLiAgKnNyYyogYW5kICpkc3QqIGFyZSBwYXRoIG5hbWVzIGdpdmVuIGFzIHN0cmluZ3MuCisgICAqZHN0KiBtdXN0IGJlIHRoZSBjb21wbGV0ZSB0YXJnZXQgZmlsZSBuYW1lOyBsb29rIGF0IDpmdW5jOmBzaHV0aWwuY29weWAKKyAgIGZvciBhIGNvcHkgdGhhdCBhY2NlcHRzIGEgdGFyZ2V0IGRpcmVjdG9yeSBwYXRoLiAgSWYgKnNyYyogYW5kICpkc3QqCisgICBzcGVjaWZ5IHRoZSBzYW1lIGZpbGUsIDpleGM6YEVycm9yYCBpcyByYWlzZWQuCiAKKyAgIFRoZSBkZXN0aW5hdGlvbiBsb2NhdGlvbiBtdXN0IGJlIHdyaXRhYmxlOyBvdGhlcndpc2UsIGFuIDpleGM6YE9TRXJyb3JgCisgICBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuIElmICpkc3QqIGFscmVhZHkgZXhpc3RzLCBpdCB3aWxsIGJlIHJlcGxhY2VkLgorICAgU3BlY2lhbCBmaWxlcyBzdWNoIGFzIGNoYXJhY3RlciBvciBibG9jayBkZXZpY2VzIGFuZCBwaXBlcyBjYW5ub3QgYmUKKyAgIGNvcGllZCB3aXRoIHRoaXMgZnVuY3Rpb24uCiAKLS4uIGZ1bmN0aW9uOjogY29weW1vZGUoc3JjLCBkc3QpCisgICBJZiAqZm9sbG93X3N5bWxpbmtzKiBpcyBmYWxzZSBhbmQgKnNyYyogaXMgYSBzeW1ib2xpYyBsaW5rLAorICAgYSBuZXcgc3ltYm9saWMgbGluayB3aWxsIGJlIGNyZWF0ZWQgaW5zdGVhZCBvZiBjb3B5aW5nIHRoZQorICAgZmlsZSAqc3JjKiBwb2ludHMgdG8uCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6ZXhjOmBJT0Vycm9yYCB1c2VkIHRvIGJlIHJhaXNlZCBpbnN0ZWFkIG9mIDpleGM6YE9TRXJyb3JgLgorICAgICAgQWRkZWQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnQuCisgICAgICBOb3cgcmV0dXJucyAqZHN0Ki4KKworLi4gZnVuY3Rpb246OiBjb3B5bW9kZShzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIENvcHkgdGhlIHBlcm1pc3Npb24gYml0cyBmcm9tICpzcmMqIHRvICpkc3QqLiAgVGhlIGZpbGUgY29udGVudHMsIG93bmVyLCBhbmQKICAgIGdyb3VwIGFyZSB1bmFmZmVjdGVkLiAgKnNyYyogYW5kICpkc3QqIGFyZSBwYXRoIG5hbWVzIGdpdmVuIGFzIHN0cmluZ3MuCisgICBJZiAqZm9sbG93X3N5bWxpbmtzKiBpcyBmYWxzZSwgYW5kIGJvdGggKnNyYyogYW5kICpkc3QqIGFyZSBzeW1ib2xpYyBsaW5rcywKKyAgIDpmdW5jOmBjb3B5bW9kZWAgd2lsbCBhdHRlbXB0IHRvIG1vZGlmeSB0aGUgbW9kZSBvZiAqZHN0KiBpdHNlbGYgKHJhdGhlcgorICAgdGhhbiB0aGUgZmlsZSBpdCBwb2ludHMgdG8pLiAgVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBhdmFpbGFibGUgb24gZXZlcnkKKyAgIHBsYXRmb3JtOyBwbGVhc2Ugc2VlIDpmdW5jOmBjb3B5c3RhdGAgZm9yIG1vcmUgaW5mb3JtYXRpb24uICBJZgorICAgOmZ1bmM6YGNvcHltb2RlYCBjYW5ub3QgbW9kaWZ5IHN5bWJvbGljIGxpbmtzIG9uIHRoZSBsb2NhbCBwbGF0Zm9ybSwgYW5kIGl0CisgICBpcyBhc2tlZCB0byBkbyBzbywgaXQgd2lsbCBkbyBub3RoaW5nIGFuZCByZXR1cm4uCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudC4KIAotLi4gZnVuY3Rpb246OiBjb3B5c3RhdChzcmMsIGRzdCkKKy4uIGZ1bmN0aW9uOjogY29weXN0YXQoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCi0gICBDb3B5IHRoZSBwZXJtaXNzaW9uIGJpdHMsIGxhc3QgYWNjZXNzIHRpbWUsIGxhc3QgbW9kaWZpY2F0aW9uIHRpbWUsIGFuZCBmbGFncwotICAgZnJvbSAqc3JjKiB0byAqZHN0Ki4gIFRoZSBmaWxlIGNvbnRlbnRzLCBvd25lciwgYW5kIGdyb3VwIGFyZSB1bmFmZmVjdGVkLiAgKnNyYyoKLSAgIGFuZCAqZHN0KiBhcmUgcGF0aCBuYW1lcyBnaXZlbiBhcyBzdHJpbmdzLgorICAgQ29weSB0aGUgcGVybWlzc2lvbiBiaXRzLCBsYXN0IGFjY2VzcyB0aW1lLCBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lLCBhbmQKKyAgIGZsYWdzIGZyb20gKnNyYyogdG8gKmRzdCouICBPbiBMaW51eCwgOmZ1bmM6YGNvcHlzdGF0YCBhbHNvIGNvcGllcyB0aGUKKyAgICJleHRlbmRlZCBhdHRyaWJ1dGVzIiB3aGVyZSBwb3NzaWJsZS4gIFRoZSBmaWxlIGNvbnRlbnRzLCBvd25lciwgYW5kCisgICBncm91cCBhcmUgdW5hZmZlY3RlZC4gICpzcmMqIGFuZCAqZHN0KiBhcmUgcGF0aCBuYW1lcyBnaXZlbiBhcyBzdHJpbmdzLgogCisgICBJZiAqZm9sbG93X3N5bWxpbmtzKiBpcyBmYWxzZSwgYW5kICpzcmMqIGFuZCAqZHN0KiBib3RoCisgICByZWZlciB0byBzeW1ib2xpYyBsaW5rcywgOmZ1bmM6YGNvcHlzdGF0YCB3aWxsIG9wZXJhdGUgb24KKyAgIHRoZSBzeW1ib2xpYyBsaW5rcyB0aGVtc2VsdmVzIHJhdGhlciB0aGFuIHRoZSBmaWxlcyB0aGUKKyAgIHN5bWJvbGljIGxpbmtzIHJlZmVyIHRvLS1yZWFkaW5nIHRoZSBpbmZvcm1hdGlvbiBmcm9tIHRoZQorICAgKnNyYyogc3ltYm9saWMgbGluaywgYW5kIHdyaXRpbmcgdGhlIGluZm9ybWF0aW9uIHRvIHRoZQorICAgKmRzdCogc3ltYm9saWMgbGluay4KIAotLi4gZnVuY3Rpb246OiBjb3B5KHNyYywgZHN0KQorICAgLi4gbm90ZTo6CiAKLSAgIENvcHkgdGhlIGZpbGUgKnNyYyogdG8gdGhlIGZpbGUgb3IgZGlyZWN0b3J5ICpkc3QqLiAgSWYgKmRzdCogaXMgYSBkaXJlY3RvcnksIGEKLSAgIGZpbGUgd2l0aCB0aGUgc2FtZSBiYXNlbmFtZSBhcyAqc3JjKiAgaXMgY3JlYXRlZCAob3Igb3ZlcndyaXR0ZW4pIGluIHRoZQotICAgZGlyZWN0b3J5IHNwZWNpZmllZC4gIFBlcm1pc3Npb24gYml0cyBhcmUgY29waWVkLiAgKnNyYyogYW5kICpkc3QqIGFyZSBwYXRoCi0gICBuYW1lcyBnaXZlbiBhcyBzdHJpbmdzLgorICAgICAgTm90IGFsbCBwbGF0Zm9ybXMgcHJvdmlkZSB0aGUgYWJpbGl0eSB0byBleGFtaW5lIGFuZAorICAgICAgbW9kaWZ5IHN5bWJvbGljIGxpbmtzLiAgUHl0aG9uIGl0c2VsZiBjYW4gdGVsbCB5b3Ugd2hhdAorICAgICAgZnVuY3Rpb25hbGl0eSBpcyBsb2NhbGx5IGF2YWlsYWJsZS4KIAorICAgICAgKiBJZiBgYG9zLmNobW9kIGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rc2BgIGlzCisgICAgICAgIGBgVHJ1ZWBgLCA6ZnVuYzpgY29weXN0YXRgIGNhbiBtb2RpZnkgdGhlIHBlcm1pc3Npb24KKyAgICAgICAgYml0cyBvZiBhIHN5bWJvbGljIGxpbmsuCiAKLS4uIGZ1bmN0aW9uOjogY29weTIoc3JjLCBkc3QpCisgICAgICAqIElmIGBgb3MudXRpbWUgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzYGAgaXMKKyAgICAgICAgYGBUcnVlYGAsIDpmdW5jOmBjb3B5c3RhdGAgY2FuIG1vZGlmeSB0aGUgbGFzdCBhY2Nlc3MKKyAgICAgICAgYW5kIG1vZGlmaWNhdGlvbiB0aW1lcyBvZiBhIHN5bWJvbGljIGxpbmsuCiAKLSAgIFNpbWlsYXIgdG8gOmZ1bmM6YHNodXRpbC5jb3B5YCwgYnV0IG1ldGFkYXRhIGlzIGNvcGllZCBhcyB3ZWxsIC0tIGluIGZhY3QsCi0gICB0aGlzIGlzIGp1c3QgOmZ1bmM6YHNodXRpbC5jb3B5YCBmb2xsb3dlZCBieSA6ZnVuYzpgY29weXN0YXRgLiAgVGhpcyBpcwotICAgc2ltaWxhciB0byB0aGUgVW5peCBjb21tYW5kIDpwcm9ncmFtOmBjcCAtcGAuCisgICAgICAqIElmIGBgb3MuY2hmbGFncyBpbiBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3NgYCBpcworICAgICAgICBgYFRydWVgYCwgOmZ1bmM6YGNvcHlzdGF0YCBjYW4gbW9kaWZ5IHRoZSBmbGFncyBvZgorICAgICAgICBhIHN5bWJvbGljIGxpbmsuICAoYGBvcy5jaGZsYWdzYGAgaXMgbm90IGF2YWlsYWJsZSBvbgorICAgICAgICBhbGwgcGxhdGZvcm1zLikKIAorICAgICAgT24gcGxhdGZvcm1zIHdoZXJlIHNvbWUgb3IgYWxsIG9mIHRoaXMgZnVuY3Rpb25hbGl0eQorICAgICAgaXMgdW5hdmFpbGFibGUsIHdoZW4gYXNrZWQgdG8gbW9kaWZ5IGEgc3ltYm9saWMgbGluaywKKyAgICAgIDpmdW5jOmBjb3B5c3RhdGAgd2lsbCBjb3B5IGV2ZXJ5dGhpbmcgaXQgY2FuLgorICAgICAgOmZ1bmM6YGNvcHlzdGF0YCBuZXZlciByZXR1cm5zIGZhaWx1cmUuCisKKyAgICAgIFBsZWFzZSBzZWUgOmRhdGE6YG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rc2AKKyAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnQgYW5kIHN1cHBvcnQgZm9yIExpbnV4IGV4dGVuZGVkIGF0dHJpYnV0ZXMuCisKKy4uIGZ1bmN0aW9uOjogY29weShzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisKKyAgIENvcGllcyB0aGUgZmlsZSAqc3JjKiB0byB0aGUgZmlsZSBvciBkaXJlY3RvcnkgKmRzdCouICAqc3JjKiBhbmQgKmRzdCoKKyAgIHNob3VsZCBiZSBzdHJpbmdzLiAgSWYgKmRzdCogc3BlY2lmaWVzIGEgZGlyZWN0b3J5LCB0aGUgZmlsZSB3aWxsIGJlCisgICBjb3BpZWQgaW50byAqZHN0KiB1c2luZyB0aGUgYmFzZSBmaWxlbmFtZSBmcm9tICpzcmMqLiAgUmV0dXJucyB0aGUKKyAgIHBhdGggdG8gdGhlIG5ld2x5IGNyZWF0ZWQgZmlsZS4KKworICAgSWYgKmZvbGxvd19zeW1saW5rcyogaXMgZmFsc2UsIGFuZCAqc3JjKiBpcyBhIHN5bWJvbGljIGxpbmssCisgICAqZHN0KiB3aWxsIGJlIGNyZWF0ZWQgYXMgYSBzeW1ib2xpYyBsaW5rLiAgSWYgKmZvbGxvd19zeW1saW5rcyoKKyAgIGlzIHRydWUgYW5kICpzcmMqIGlzIGEgc3ltYm9saWMgbGluaywgKmRzdCogd2lsbCBiZSBhIGNvcHkgb2YKKyAgIHRoZSBmaWxlICpzcmMqIHJlZmVycyB0by4KKworICAgOmZ1bmM6YGNvcHlgIGNvcGllcyB0aGUgZmlsZSBkYXRhIGFuZCB0aGUgZmlsZSdzIHBlcm1pc3Npb24KKyAgIG1vZGUgKHNlZSA6ZnVuYzpgb3MuY2htb2RgKS4gIE90aGVyIG1ldGFkYXRhLCBsaWtlIHRoZQorICAgZmlsZSdzIGNyZWF0aW9uIGFuZCBtb2RpZmljYXRpb24gdGltZXMsIGlzIG5vdCBwcmVzZXJ2ZWQuCisgICBUbyBwcmVzZXJ2ZSBhbGwgZmlsZSBtZXRhZGF0YSBmcm9tIHRoZSBvcmlnaW5hbCwgdXNlCisgICA6ZnVuYzpgfnNodXRpbC5jb3B5MmAgaW5zdGVhZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50LgorICAgICAgTm93IHJldHVybnMgcGF0aCB0byB0aGUgbmV3bHkgY3JlYXRlZCBmaWxlLgorCisuLiBmdW5jdGlvbjo6IGNvcHkyKHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKworICAgSWRlbnRpY2FsIHRvIDpmdW5jOmB+c2h1dGlsLmNvcHlgIGV4Y2VwdCB0aGF0IDpmdW5jOmBjb3B5MmAKKyAgIGFsc28gYXR0ZW1wdHMgdG8gcHJlc2VydmUgYWxsIGZpbGUgbWV0YWRhdGEuCisKKyAgIFdoZW4gKmZvbGxvd19zeW1saW5rcyogaXMgZmFsc2UsIGFuZCAqc3JjKiBpcyBhIHN5bWJvbGljCisgICBsaW5rLCA6ZnVuYzpgY29weTJgIGF0dGVtcHRzIHRvIGNvcHkgYWxsIG1ldGFkYXRhIGZyb20gdGhlCisgICAqc3JjKiBzeW1ib2xpYyBsaW5rIHRvIHRoZSBuZXdseS1jcmVhdGVkICpkc3QqIHN5bWJvbGljIGxpbmsuCisgICBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zLgorICAgT24gcGxhdGZvcm1zIHdoZXJlIHNvbWUgb3IgYWxsIG9mIHRoaXMgZnVuY3Rpb25hbGl0eSBpcworICAgdW5hdmFpbGFibGUsIDpmdW5jOmBjb3B5MmAgd2lsbCBwcmVzZXJ2ZSBhbGwgdGhlIG1ldGFkYXRhCisgICBpdCBjYW47IDpmdW5jOmBjb3B5MmAgbmV2ZXIgcmV0dXJucyBmYWlsdXJlLgorCisgICA6ZnVuYzpgY29weTJgIHVzZXMgOmZ1bmM6YGNvcHlzdGF0YCB0byBjb3B5IHRoZSBmaWxlIG1ldGFkYXRhLgorICAgUGxlYXNlIHNlZSA6ZnVuYzpgY29weXN0YXRgIGZvciBtb3JlIGluZm9ybWF0aW9uCisgICBhYm91dCBwbGF0Zm9ybSBzdXBwb3J0IGZvciBtb2RpZnlpbmcgc3ltYm9saWMgbGluayBtZXRhZGF0YS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50LCB0cnkgdG8gY29weSBleHRlbmRlZAorICAgICAgZmlsZSBzeXN0ZW0gYXR0cmlidXRlcyB0b28gKGN1cnJlbnRseSBMaW51eCBvbmx5KS4KKyAgICAgIE5vdyByZXR1cm5zIHBhdGggdG8gdGhlIG5ld2x5IGNyZWF0ZWQgZmlsZS4KIAogLi4gZnVuY3Rpb246OiBpZ25vcmVfcGF0dGVybnMoXCpwYXR0ZXJucykKIApAQCAtOTYsMTYgKzE4MCwxNyBAQAogCiAuLiBmdW5jdGlvbjo6IGNvcHl0cmVlKHNyYywgZHN0LCBzeW1saW5rcz1GYWxzZSwgaWdub3JlPU5vbmUsIGNvcHlfZnVuY3Rpb249Y29weTIsIGlnbm9yZV9kYW5nbGluZ19zeW1saW5rcz1GYWxzZSkKIAotICAgUmVjdXJzaXZlbHkgY29weSBhbiBlbnRpcmUgZGlyZWN0b3J5IHRyZWUgcm9vdGVkIGF0ICpzcmMqLiAgVGhlIGRlc3RpbmF0aW9uCisgICBSZWN1cnNpdmVseSBjb3B5IGFuIGVudGlyZSBkaXJlY3RvcnkgdHJlZSByb290ZWQgYXQgKnNyYyosIHJldHVybmluZyB0aGUKKyAgIGRlc3RpbmF0aW9uIGRpcmVjdG9yeS4gIFRoZSBkZXN0aW5hdGlvbgogICAgZGlyZWN0b3J5LCBuYW1lZCBieSAqZHN0KiwgbXVzdCBub3QgYWxyZWFkeSBleGlzdDsgaXQgd2lsbCBiZSBjcmVhdGVkIGFzCiAgICB3ZWxsIGFzIG1pc3NpbmcgcGFyZW50IGRpcmVjdG9yaWVzLiAgUGVybWlzc2lvbnMgYW5kIHRpbWVzIG9mIGRpcmVjdG9yaWVzCiAgICBhcmUgY29waWVkIHdpdGggOmZ1bmM6YGNvcHlzdGF0YCwgaW5kaXZpZHVhbCBmaWxlcyBhcmUgY29waWVkIHVzaW5nCiAgICA6ZnVuYzpgc2h1dGlsLmNvcHkyYC4KIAogICAgSWYgKnN5bWxpbmtzKiBpcyB0cnVlLCBzeW1ib2xpYyBsaW5rcyBpbiB0aGUgc291cmNlIHRyZWUgYXJlIHJlcHJlc2VudGVkIGFzCi0gICBzeW1ib2xpYyBsaW5rcyBpbiB0aGUgbmV3IHRyZWUsIGJ1dCB0aGUgbWV0YWRhdGEgb2YgdGhlIG9yaWdpbmFsIGxpbmtzIGlzIE5PVAotICAgY29waWVkOyBpZiBmYWxzZSBvciBvbWl0dGVkLCB0aGUgY29udGVudHMgYW5kIG1ldGFkYXRhIG9mIHRoZSBsaW5rZWQgZmlsZXMKLSAgIGFyZSBjb3BpZWQgdG8gdGhlIG5ldyB0cmVlLgorICAgc3ltYm9saWMgbGlua3MgaW4gdGhlIG5ldyB0cmVlIGFuZCB0aGUgbWV0YWRhdGEgb2YgdGhlIG9yaWdpbmFsIGxpbmtzIHdpbGwKKyAgIGJlIGNvcGllZCBhcyBmYXIgYXMgdGhlIHBsYXRmb3JtIGFsbG93czsgaWYgZmFsc2Ugb3Igb21pdHRlZCwgdGhlIGNvbnRlbnRzCisgICBhbmQgbWV0YWRhdGEgb2YgdGhlIGxpbmtlZCBmaWxlcyBhcmUgY29waWVkIHRvIHRoZSBuZXcgdHJlZS4KIAogICAgV2hlbiAqc3ltbGlua3MqIGlzIGZhbHNlLCBpZiB0aGUgZmlsZSBwb2ludGVkIGJ5IHRoZSBzeW1saW5rIGRvZXNuJ3QKICAgIGV4aXN0LCBhIGV4Y2VwdGlvbiB3aWxsIGJlIGFkZGVkIGluIHRoZSBsaXN0IG9mIGVycm9ycyByYWlzZWQgaW4KQEAgLTEyOSwxMyArMjE0LDE1IEBACiAgICBJZiAqY29weV9mdW5jdGlvbiogaXMgZ2l2ZW4sIGl0IG11c3QgYmUgYSBjYWxsYWJsZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBjb3B5CiAgICBlYWNoIGZpbGUuIEl0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHNvdXJjZSBwYXRoIGFuZCB0aGUgZGVzdGluYXRpb24gcGF0aAogICAgYXMgYXJndW1lbnRzLiBCeSBkZWZhdWx0LCA6ZnVuYzpgc2h1dGlsLmNvcHkyYCBpcyB1c2VkLCBidXQgYW55IGZ1bmN0aW9uCi0gICB0aGF0IHN1cHBvcnRzIHRoZSBzYW1lIHNpZ25hdHVyZSAobGlrZSA6ZnVuYzpgY29weWApIGNhbiBiZSB1c2VkLgorICAgdGhhdCBzdXBwb3J0cyB0aGUgc2FtZSBzaWduYXR1cmUgKGxpa2UgOmZ1bmM6YHNodXRpbC5jb3B5YCkgY2FuIGJlIHVzZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBDb3B5IG1ldGFkYXRhIHdoZW4gKnN5bWxpbmtzKiBpcyBmYWxzZS4KKyAgICAgIE5vdyByZXR1cm5zICpkc3QqLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgdGhlICpjb3B5X2Z1bmN0aW9uKiBhcmd1bWVudCB0byBiZSBhYmxlIHRvIHByb3ZpZGUgYSBjdXN0b20gY29weQogICAgICAgZnVuY3Rpb24uCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCB0aGUgKmlnbm9yZV9kYW5nbGluZ19zeW1saW5rcyogYXJndW1lbnQgdG8gc2lsZW50IGRhbmdsaW5nIHN5bWxpbmtzCiAgICAgICBlcnJvcnMgd2hlbiAqc3ltbGlua3MqIGlzIGZhbHNlLgogCkBAIC0xNTAsMTkgKzIzNyw0MiBAQAogICAgaGFuZGxlZCBieSBjYWxsaW5nIGEgaGFuZGxlciBzcGVjaWZpZWQgYnkgKm9uZXJyb3IqIG9yLCBpZiB0aGF0IGlzIG9taXR0ZWQsCiAgICB0aGV5IHJhaXNlIGFuIGV4Y2VwdGlvbi4KIAorICAgLi4gbm90ZTo6CisKKyAgICAgIE9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgdGhlIG5lY2Vzc2FyeSBmZC1iYXNlZCBmdW5jdGlvbnMgYSBzeW1saW5rCisgICAgICBhdHRhY2sgcmVzaXN0YW50IHZlcnNpb24gb2YgOmZ1bmM6YHJtdHJlZWAgaXMgdXNlZCBieSBkZWZhdWx0LiAgT24gb3RoZXIKKyAgICAgIHBsYXRmb3JtcywgdGhlIDpmdW5jOmBybXRyZWVgIGltcGxlbWVudGF0aW9uIGlzIHN1c2NlcHRpYmxlIHRvIGEgc3ltbGluaworICAgICAgYXR0YWNrOiBnaXZlbiBwcm9wZXIgdGltaW5nIGFuZCBjaXJjdW1zdGFuY2VzLCBhdHRhY2tlcnMgY2FuIG1hbmlwdWxhdGUKKyAgICAgIHN5bWxpbmtzIG9uIHRoZSBmaWxlc3lzdGVtIHRvIGRlbGV0ZSBmaWxlcyB0aGV5IHdvdWxkbid0IGJlIGFibGUgdG8gYWNjZXNzCisgICAgICBvdGhlcndpc2UuICBBcHBsaWNhdGlvbnMgY2FuIHVzZSB0aGUgOmRhdGE6YHJtdHJlZS5hdm9pZHNfc3ltbGlua19hdHRhY2tzYAorICAgICAgZnVuY3Rpb24gYXR0cmlidXRlIHRvIGRldGVybWluZSB3aGljaCBjYXNlIGFwcGxpZXMuCisKICAgIElmICpvbmVycm9yKiBpcyBwcm92aWRlZCwgaXQgbXVzdCBiZSBhIGNhbGxhYmxlIHRoYXQgYWNjZXB0cyB0aHJlZQotICAgcGFyYW1ldGVyczogKmZ1bmN0aW9uKiwgKnBhdGgqLCBhbmQgKmV4Y2luZm8qLiBUaGUgZmlyc3QgcGFyYW1ldGVyLAotICAgKmZ1bmN0aW9uKiwgaXMgdGhlIGZ1bmN0aW9uIHdoaWNoIHJhaXNlZCB0aGUgZXhjZXB0aW9uOyBpdCB3aWxsIGJlCi0gICA6ZnVuYzpgb3MucGF0aC5pc2xpbmtgLCA6ZnVuYzpgb3MubGlzdGRpcmAsIDpmdW5jOmBvcy5yZW1vdmVgIG9yCi0gICA6ZnVuYzpgb3Mucm1kaXJgLiAgVGhlIHNlY29uZCBwYXJhbWV0ZXIsICpwYXRoKiwgd2lsbCBiZSB0aGUgcGF0aCBuYW1lIHBhc3NlZAotICAgdG8gKmZ1bmN0aW9uKi4gIFRoZSB0aGlyZCBwYXJhbWV0ZXIsICpleGNpbmZvKiwgd2lsbCBiZSB0aGUgZXhjZXB0aW9uCi0gICBpbmZvcm1hdGlvbiByZXR1cm4gYnkgOmZ1bmM6YHN5cy5leGNfaW5mb2AuICBFeGNlcHRpb25zIHJhaXNlZCBieSAqb25lcnJvcioKLSAgIHdpbGwgbm90IGJlIGNhdWdodC4KKyAgIHBhcmFtZXRlcnM6ICpmdW5jdGlvbiosICpwYXRoKiwgYW5kICpleGNpbmZvKi4KKworICAgVGhlIGZpcnN0IHBhcmFtZXRlciwgKmZ1bmN0aW9uKiwgaXMgdGhlIGZ1bmN0aW9uIHdoaWNoIHJhaXNlZCB0aGUgZXhjZXB0aW9uOworICAgaXQgZGVwZW5kcyBvbiB0aGUgcGxhdGZvcm0gYW5kIGltcGxlbWVudGF0aW9uLiAgVGhlIHNlY29uZCBwYXJhbWV0ZXIsCisgICAqcGF0aCosIHdpbGwgYmUgdGhlIHBhdGggbmFtZSBwYXNzZWQgdG8gKmZ1bmN0aW9uKi4gIFRoZSB0aGlyZCBwYXJhbWV0ZXIsCisgICAqZXhjaW5mbyosIHdpbGwgYmUgdGhlIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiByZXR1cm5lZCBieQorICAgOmZ1bmM6YHN5cy5leGNfaW5mb2AuICBFeGNlcHRpb25zIHJhaXNlZCBieSAqb25lcnJvciogd2lsbCBub3QgYmUgY2F1Z2h0LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgYSBzeW1saW5rIGF0dGFjayByZXNpc3RhbnQgdmVyc2lvbiB0aGF0IGlzIHVzZWQgYXV0b21hdGljYWxseQorICAgICAgaWYgcGxhdGZvcm0gc3VwcG9ydHMgZmQtYmFzZWQgZnVuY3Rpb25zLgorCisgICAuLiBhdHRyaWJ1dGU6OiBybXRyZWUuYXZvaWRzX3N5bWxpbmtfYXR0YWNrcworCisgICAgICBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY3VycmVudCBwbGF0Zm9ybSBhbmQgaW1wbGVtZW50YXRpb24gcHJvdmlkZXMgYQorICAgICAgc3ltbGluayBhdHRhY2sgcmVzaXN0YW50IHZlcnNpb24gb2YgOmZ1bmM6YHJtdHJlZWAuICBDdXJyZW50bHkgdGhpcyBpcworICAgICAgb25seSB0cnVlIGZvciBwbGF0Zm9ybXMgc3VwcG9ydGluZyBmZC1iYXNlZCBkaXJlY3RvcnkgYWNjZXNzIGZ1bmN0aW9ucy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gZnVuY3Rpb246OiBtb3ZlKHNyYywgZHN0KQogCi0gICBSZWN1cnNpdmVseSBtb3ZlIGEgZmlsZSBvciBkaXJlY3RvcnkgKCpzcmMqKSB0byBhbm90aGVyIGxvY2F0aW9uICgqZHN0KikuCisgICBSZWN1cnNpdmVseSBtb3ZlIGEgZmlsZSBvciBkaXJlY3RvcnkgKCpzcmMqKSB0byBhbm90aGVyIGxvY2F0aW9uICgqZHN0KikKKyAgIGFuZCByZXR1cm4gdGhlIGRlc3RpbmF0aW9uLgogCiAgICBJZiB0aGUgZGVzdGluYXRpb24gaXMgYSBkaXJlY3Rvcnkgb3IgYSBzeW1saW5rIHRvIGEgZGlyZWN0b3J5LCB0aGVuICpzcmMqIGlzCiAgICBtb3ZlZCBpbnNpZGUgdGhhdCBkaXJlY3RvcnkuCkBAIC0xNzMsNyArMjgzLDYxIEBACiAKICAgIElmIHRoZSBkZXN0aW5hdGlvbiBpcyBvbiB0aGUgY3VycmVudCBmaWxlc3lzdGVtLCB0aGVuIDpmdW5jOmBvcy5yZW5hbWVgIGlzCiAgICB1c2VkLiAgT3RoZXJ3aXNlLCAqc3JjKiBpcyBjb3BpZWQgKHVzaW5nIDpmdW5jOmBzaHV0aWwuY29weTJgKSB0byAqZHN0KiBhbmQKLSAgIHRoZW4gcmVtb3ZlZC4KKyAgIHRoZW4gcmVtb3ZlZC4gSW4gY2FzZSBvZiBzeW1saW5rcywgYSBuZXcgc3ltbGluayBwb2ludGluZyB0byB0aGUgdGFyZ2V0IG9mCisgICAqc3JjKiB3aWxsIGJlIGNyZWF0ZWQgaW4gb3IgYXMgKmRzdCogYW5kICpzcmMqIHdpbGwgYmUgcmVtb3ZlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIGV4cGxpY2l0IHN5bWxpbmsgaGFuZGxpbmcgZm9yIGZvcmVpZ24gZmlsZXN5c3RlbXMsIHRodXMgYWRhcHRpbmcKKyAgICAgIGl0IHRvIHRoZSBiZWhhdmlvciBvZiBHTlUncyA6cHJvZ3JhbTpgbXZgLgorICAgICAgTm93IHJldHVybnMgKmRzdCouCisKKy4uIGZ1bmN0aW9uOjogZGlza191c2FnZShwYXRoKQorCisgICBSZXR1cm4gZGlzayB1c2FnZSBzdGF0aXN0aWNzIGFib3V0IHRoZSBnaXZlbiBwYXRoIGFzIGEgOnRlcm06YG5hbWVkIHR1cGxlYAorICAgd2l0aCB0aGUgYXR0cmlidXRlcyAqdG90YWwqLCAqdXNlZCogYW5kICpmcmVlKiwgd2hpY2ggYXJlIHRoZSBhbW91bnQgb2YKKyAgIHRvdGFsLCB1c2VkIGFuZCBmcmVlIHNwYWNlLCBpbiBieXRlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KKworLi4gZnVuY3Rpb246OiBjaG93bihwYXRoLCB1c2VyPU5vbmUsIGdyb3VwPU5vbmUpCisKKyAgIENoYW5nZSBvd25lciAqdXNlciogYW5kL29yICpncm91cCogb2YgdGhlIGdpdmVuICpwYXRoKi4KKworICAgKnVzZXIqIGNhbiBiZSBhIHN5c3RlbSB1c2VyIG5hbWUgb3IgYSB1aWQ7IHRoZSBzYW1lIGFwcGxpZXMgdG8gKmdyb3VwKi4gQXQKKyAgIGxlYXN0IG9uZSBhcmd1bWVudCBpcyByZXF1aXJlZC4KKworICAgU2VlIGFsc28gOmZ1bmM6YG9zLmNob3duYCwgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24uCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiB3aGljaChjbWQsIG1vZGU9b3MuRl9PSyB8IG9zLlhfT0ssIHBhdGg9Tm9uZSkKKworICAgUmV0dXJuIHRoZSBwYXRoIHRvIGFuIGV4ZWN1dGFibGUgd2hpY2ggd291bGQgYmUgcnVuIGlmIHRoZSBnaXZlbiAqY21kKiB3YXMKKyAgIGNhbGxlZC4gIElmIG5vICpjbWQqIHdvdWxkIGJlIGNhbGxlZCwgcmV0dXJuIGBgTm9uZWBgLgorCisgICAqbW9kZSogaXMgYSBwZXJtaXNzaW9uIG1hc2sgcGFzc2VkIGEgdG8gOmZ1bmM6YG9zLmFjY2Vzc2AsIGJ5IGRlZmF1bHQKKyAgIGRldGVybWluaW5nIGlmIHRoZSBmaWxlIGV4aXN0cyBhbmQgZXhlY3V0YWJsZS4KKworICAgV2hlbiBubyAqcGF0aCogaXMgc3BlY2lmaWVkLCB0aGUgcmVzdWx0cyBvZiA6ZnVuYzpgb3MuZW52aXJvbmAgYXJlIHVzZWQsCisgICByZXR1cm5pbmcgZWl0aGVyIHRoZSAiUEFUSCIgdmFsdWUgb3IgYSBmYWxsYmFjayBvZiA6YXR0cjpgb3MuZGVmcGF0aGAuCisKKyAgIE9uIFdpbmRvd3MsIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcyBhbHdheXMgcHJlcGVuZGVkIHRvIHRoZSAqcGF0aCogd2hldGhlcgorICAgb3Igbm90IHlvdSB1c2UgdGhlIGRlZmF1bHQgb3IgcHJvdmlkZSB5b3VyIG93biwgd2hpY2ggaXMgdGhlIGJlaGF2aW9yIHRoZQorICAgY29tbWFuZCBzaGVsbCB1c2VzIHdoZW4gZmluZGluZyBleGVjdXRhYmxlcy4gIEFkZGl0aW9uYWx5LCB3aGVuIGZpbmRpbmcgdGhlCisgICAqY21kKiBpbiB0aGUgKnBhdGgqLCB0aGUgYGBQQVRIRVhUYGAgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgY2hlY2tlZC4gIEZvcgorICAgZXhhbXBsZSwgaWYgeW91IGNhbGwgYGBzaHV0aWwud2hpY2goInB5dGhvbiIpYGAsIDpmdW5jOmB3aGljaGAgd2lsbCBzZWFyY2gKKyAgIGBgUEFUSEVYVGBgIHRvIGtub3cgdGhhdCBpdCBzaG91bGQgbG9vayBmb3IgYGBweXRob24uZXhlYGAgd2l0aGluIHRoZSAqcGF0aCoKKyAgIGRpcmVjdG9yaWVzLiAgRm9yIGV4YW1wbGUsIG9uIFdpbmRvd3M6OgorCisgICAgICA+Pj4gc2h1dGlsLndoaWNoKCJweXRob24iKQorICAgICAgJ0M6XFxQeXRob24zM1xccHl0aG9uLkVYRScKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gZXhjZXB0aW9uOjogRXJyb3IKQEAgLTE4Niw3ICszNTAsNyBAQAogLi4gX3NodXRpbC1jb3B5dHJlZS1leGFtcGxlOgogCiBjb3B5dHJlZSBleGFtcGxlCi06Ojo6Ojo6Ojo6Ojo6Ojo6Cit+fn5+fn5+fn5+fn5+fn5+CiAKIFRoaXMgZXhhbXBsZSBpcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIDpmdW5jOmBjb3B5dHJlZWAgZnVuY3Rpb24sIGRlc2NyaWJlZAogYWJvdmUsIHdpdGggdGhlIGRvY3N0cmluZyBvbWl0dGVkLiAgSXQgZGVtb25zdHJhdGVzIG1hbnkgb2YgdGhlIG90aGVyIGZ1bmN0aW9ucwpAQCAtMjA4LDcgKzM3Miw3IEBACiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGNvcHkyKHNyY25hbWUsIGRzdG5hbWUpCiAgICAgICAgICAgICAgICAjIFhYWCBXaGF0IGFib3V0IGRldmljZXMsIHNvY2tldHMgZXRjLj8KLSAgICAgICAgICAgZXhjZXB0IChJT0Vycm9yLCBvcy5lcnJvcikgYXMgd2h5OgorICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyB3aHk6CiAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKChzcmNuYW1lLCBkc3RuYW1lLCBzdHIod2h5KSkpCiAgICAgICAgICAgICMgY2F0Y2ggdGhlIEVycm9yIGZyb20gdGhlIHJlY3Vyc2l2ZSBjb3B5dHJlZSBzbyB0aGF0IHdlIGNhbgogICAgICAgICAgICAjIGNvbnRpbnVlIHdpdGggb3RoZXIgZmlsZXMKQEAgLTI1MCw2ICs0MTQsOCBAQAogQXJjaGl2aW5nIG9wZXJhdGlvbnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKKy4uIHZlcnNpb25hZGRlZDo6IDMuMgorCiBIaWdoLWxldmVsIHV0aWxpdGllcyB0byBjcmVhdGUgYW5kIHJlYWQgY29tcHJlc3NlZCBhbmQgYXJjaGl2ZWQgZmlsZXMgYXJlIGFsc28KIHByb3ZpZGVkLiAgVGhleSByZWx5IG9uIHRoZSA6bW9kOmB6aXBmaWxlYCBhbmQgOm1vZDpgdGFyZmlsZWAgbW9kdWxlcy4KIApAQCAtMjc3LDggKzQ0Myw2IEBACiAgICAqbG9nZ2VyKiBtdXN0IGJlIGFuIG9iamVjdCBjb21wYXRpYmxlIHdpdGggOnBlcDpgMjgyYCwgdXN1YWxseSBhbiBpbnN0YW5jZSBvZgogICAgOmNsYXNzOmBsb2dnaW5nLkxvZ2dlcmAuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X2FyY2hpdmVfZm9ybWF0cygpCiAKQEAgLTI5NSw4ICs0NTksNiBAQAogICAgWW91IGNhbiByZWdpc3RlciBuZXcgZm9ybWF0cyBvciBwcm92aWRlIHlvdXIgb3duIGFyY2hpdmVyIGZvciBhbnkgZXhpc3RpbmcKICAgIGZvcm1hdHMsIGJ5IHVzaW5nIDpmdW5jOmByZWdpc3Rlcl9hcmNoaXZlX2Zvcm1hdGAuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIGZ1bmN0aW9uOjogcmVnaXN0ZXJfYXJjaGl2ZV9mb3JtYXQobmFtZSwgZnVuY3Rpb24sIFtleHRyYV9hcmdzLCBbZGVzY3JpcHRpb25dXSkKIApAQCAtMzA5LDE1ICs0NzEsMTEgQEAKICAgICpkZXNjcmlwdGlvbiogaXMgdXNlZCBieSA6ZnVuYzpgZ2V0X2FyY2hpdmVfZm9ybWF0c2Agd2hpY2ggcmV0dXJucyB0aGUKICAgIGxpc3Qgb2YgYXJjaGl2ZXJzLiBEZWZhdWx0cyB0byBhbiBlbXB0eSBsaXN0LgogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLQogCiAuLiBmdW5jdGlvbjo6IHVucmVnaXN0ZXJfYXJjaGl2ZV9mb3JtYXQobmFtZSkKIAogICAgUmVtb3ZlIHRoZSBhcmNoaXZlIGZvcm1hdCAqbmFtZSogZnJvbSB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgZm9ybWF0cy4KIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KIAogLi4gZnVuY3Rpb246OiB1bnBhY2tfYXJjaGl2ZShmaWxlbmFtZVssIGV4dHJhY3RfZGlyWywgZm9ybWF0XV0pCiAKQEAgLTMzMiw4ICs0OTAsNiBAQAogICAgYW5kIHNlZSBpZiBhbiB1bnBhY2tlciB3YXMgcmVnaXN0ZXJlZCBmb3IgdGhhdCBleHRlbnNpb24uIEluIGNhc2Ugbm9uZSBpcwogICAgZm91bmQsIGEgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLQogCiAuLiBmdW5jdGlvbjo6IHJlZ2lzdGVyX3VucGFja19mb3JtYXQobmFtZSwgZXh0ZW5zaW9ucywgZnVuY3Rpb25bLCBleHRyYV9hcmdzWywgZGVzY3JpcHRpb25dXSkKIApAQCAtMzUxLDE1ICs1MDcsMTEgQEAKICAgICpkZXNjcmlwdGlvbiogY2FuIGJlIHByb3ZpZGVkIHRvIGRlc2NyaWJlIHRoZSBmb3JtYXQsIGFuZCB3aWxsIGJlIHJldHVybmVkCiAgICBieSB0aGUgOmZ1bmM6YGdldF91bnBhY2tfZm9ybWF0c2AgZnVuY3Rpb24uCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIGZ1bmN0aW9uOjogdW5yZWdpc3Rlcl91bnBhY2tfZm9ybWF0KG5hbWUpCiAKICAgIFVucmVnaXN0ZXIgYW4gdW5wYWNrIGZvcm1hdC4gKm5hbWUqIGlzIHRoZSBuYW1lIG9mIHRoZSBmb3JtYXQuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X3VucGFja19mb3JtYXRzKCkKIApAQCAtMzc3LDEzICs1MjksMTEgQEAKICAgIFlvdSBjYW4gcmVnaXN0ZXIgbmV3IGZvcm1hdHMgb3IgcHJvdmlkZSB5b3VyIG93biB1bnBhY2tlciBmb3IgYW55IGV4aXN0aW5nCiAgICBmb3JtYXRzLCBieSB1c2luZyA6ZnVuYzpgcmVnaXN0ZXJfdW5wYWNrX2Zvcm1hdGAuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIF9zaHV0aWwtYXJjaGl2aW5nLWV4YW1wbGU6CiAKIEFyY2hpdmluZyBleGFtcGxlCi06Ojo6Ojo6Ojo6Ojo6Ojo6Ogorfn5+fn5+fn5+fn5+fn5+fn4KIAogSW4gdGhpcyBleGFtcGxlLCB3ZSBjcmVhdGUgYSBnemlwJ2VkIHRhci1maWxlIGFyY2hpdmUgY29udGFpbmluZyBhbGwgZmlsZXMKIGZvdW5kIGluIHRoZSA6ZmlsZTpgLnNzaGAgZGlyZWN0b3J5IG9mIHRoZSB1c2VyOjoKQEAgLTQwNiwzICs1NTYsMzYgQEAKICAgICAtcnctLS0tLS0tIHRhcmVrL3N0YWZmICAgIDE2NzUgMjAwOC0wNi0wOSAxMzoyNjo1NCAuL2lkX3JzYQogICAgIC1ydy1yLS1yLS0gdGFyZWsvc3RhZmYgICAgIDM5NyAyMDA4LTA2LTA5IDEzOjI2OjU0IC4vaWRfcnNhLnB1YgogICAgIC1ydy1yLS1yLS0gdGFyZWsvc3RhZmYgICAzNzE5MiAyMDEwLTAyLTA2IDE4OjIzOjEwIC4va25vd25faG9zdHMKKworCitRdWVyeWluZyB0aGUgc2l6ZSBvZiB0aGUgb3V0cHV0IHRlcm1pbmFsCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IGdldF90ZXJtaW5hbF9zaXplKGZhbGxiYWNrPShjb2x1bW5zLCBsaW5lcykpCisKKyAgIEdldCB0aGUgc2l6ZSBvZiB0aGUgdGVybWluYWwgd2luZG93LgorCisgICBGb3IgZWFjaCBvZiB0aGUgdHdvIGRpbWVuc2lvbnMsIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYGBDT0xVTU5TYGAKKyAgIGFuZCBgYExJTkVTYGAgcmVzcGVjdGl2ZWx5LCBpcyBjaGVja2VkLiBJZiB0aGUgdmFyaWFibGUgaXMgZGVmaW5lZCBhbmQKKyAgIHRoZSB2YWx1ZSBpcyBhIHBvc2l0aXZlIGludGVnZXIsIGl0IGlzIHVzZWQuCisKKyAgIFdoZW4gYGBDT0xVTU5TYGAgb3IgYGBMSU5FU2BgIGlzIG5vdCBkZWZpbmVkLCB3aGljaCBpcyB0aGUgY29tbW9uIGNhc2UsCisgICB0aGUgdGVybWluYWwgY29ubmVjdGVkIHRvIDpkYXRhOmBzeXMuX19zdGRvdXRfX2AgaXMgcXVlcmllZAorICAgYnkgaW52b2tpbmcgOmZ1bmM6YG9zLmdldF90ZXJtaW5hbF9zaXplYC4KKworICAgSWYgdGhlIHRlcm1pbmFsIHNpemUgY2Fubm90IGJlIHN1Y2Nlc3NmdWxseSBxdWVyaWVkLCBlaXRoZXIgYmVjYXVzZQorICAgdGhlIHN5c3RlbSBkb2Vzbid0IHN1cHBvcnQgcXVlcnlpbmcsIG9yIGJlY2F1c2Ugd2UgYXJlIG5vdAorICAgY29ubmVjdGVkIHRvIGEgdGVybWluYWwsIHRoZSB2YWx1ZSBnaXZlbiBpbiBgYGZhbGxiYWNrYGAgcGFyYW1ldGVyCisgICBpcyB1c2VkLiBgYGZhbGxiYWNrYGAgZGVmYXVsdHMgdG8gYGAoODAsIDI0KWBgIHdoaWNoIGlzIHRoZSBkZWZhdWx0CisgICBzaXplIHVzZWQgYnkgbWFueSB0ZXJtaW5hbCBlbXVsYXRvcnMuCisKKyAgIFRoZSB2YWx1ZSByZXR1cm5lZCBpcyBhIG5hbWVkIHR1cGxlIG9mIHR5cGUgOmNsYXNzOmBvcy50ZXJtaW5hbF9zaXplYC4KKworICAgU2VlIGFsc286IFRoZSBTaW5nbGUgVU5JWCBTcGVjaWZpY2F0aW9uLCBWZXJzaW9uIDIsCisgICBgT3RoZXIgRW52aXJvbm1lbnQgVmFyaWFibGVzYF8uCisKKy4uIF9gT3RoZXIgRW52aXJvbm1lbnQgVmFyaWFibGVzYDoKKyAgIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy83OTA4Nzk5L3hiZC9lbnZ2YXIuaHRtbCN0YWdfMDAyXzAwMworCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaWduYWwucnN0IGIvRG9jL2xpYnJhcnkvc2lnbmFsLnJzdAppbmRleCBkMWNhZTEzLi4yYTQ3MmZlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zaWduYWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NpZ25hbC5yc3QKQEAgLTQ0LDYgKzQ0LDkgQEAKICAgc2lnbmFsIGhhbmRsZXJzIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIGNhbGN1bGF0aW9uIGZpbmlzaGVzLgogCiAKKy4uIF9zaWduYWxzLWFuZC10aHJlYWRzOgorCisKIFNpZ25hbHMgYW5kIHRocmVhZHMKIF5eXl5eXl5eXl5eXl5eXl5eXl4KIApAQCAtMTMxLDYgKzEzNCwyOCBAQAogICAgaW4gdXNlciBhbmQga2VybmVsIHNwYWNlLiBTSUdQUk9GIGlzIGRlbGl2ZXJlZCB1cG9uIGV4cGlyYXRpb24uCiAKIAorLi4gZGF0YTo6IFNJR19CTE9DSworCisgICBBIHBvc3NpYmxlIHZhbHVlIGZvciB0aGUgKmhvdyogcGFyYW1ldGVyIHRvIDpmdW5jOmBwdGhyZWFkX3NpZ21hc2tgCisgICBpbmRpY2F0aW5nIHRoYXQgc2lnbmFscyBhcmUgdG8gYmUgYmxvY2tlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBTSUdfVU5CTE9DSworCisgICBBIHBvc3NpYmxlIHZhbHVlIGZvciB0aGUgKmhvdyogcGFyYW1ldGVyIHRvIDpmdW5jOmBwdGhyZWFkX3NpZ21hc2tgCisgICBpbmRpY2F0aW5nIHRoYXQgc2lnbmFscyBhcmUgdG8gYmUgdW5ibG9ja2VkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IFNJR19TRVRNQVNLCisKKyAgIEEgcG9zc2libGUgdmFsdWUgZm9yIHRoZSAqaG93KiBwYXJhbWV0ZXIgdG8gOmZ1bmM6YHB0aHJlYWRfc2lnbWFza2AKKyAgIGluZGljYXRpbmcgdGhhdCB0aGUgc2lnbmFsIG1hc2sgaXMgdG8gYmUgcmVwbGFjZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIFRoZSA6bW9kOmBzaWduYWxgIG1vZHVsZSBkZWZpbmVzIG9uZSBleGNlcHRpb246CiAKIC4uIGV4Y2VwdGlvbjo6IEl0aW1lckVycm9yCkBAIC0xMzgsNyArMTYzLDExIEBACiAgICBSYWlzZWQgdG8gc2lnbmFsIGFuIGVycm9yIGZyb20gdGhlIHVuZGVybHlpbmcgOmZ1bmM6YHNldGl0aW1lcmAgb3IKICAgIDpmdW5jOmBnZXRpdGltZXJgIGltcGxlbWVudGF0aW9uLiBFeHBlY3QgdGhpcyBlcnJvciBpZiBhbiBpbnZhbGlkCiAgICBpbnRlcnZhbCB0aW1lciBvciBhIG5lZ2F0aXZlIHRpbWUgaXMgcGFzc2VkIHRvIDpmdW5jOmBzZXRpdGltZXJgLgotICAgVGhpcyBlcnJvciBpcyBhIHN1YnR5cGUgb2YgOmV4YzpgSU9FcnJvcmAuCisgICBUaGlzIGVycm9yIGlzIGEgc3VidHlwZSBvZiA6ZXhjOmBPU0Vycm9yYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGlzIGVycm9yIHVzZWQgdG8gYmUgYSBzdWJ0eXBlIG9mIDpleGM6YElPRXJyb3JgLCB3aGljaCBpcyBub3cgYW4KKyAgICAgIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKIFRoZSA6bW9kOmBzaWduYWxgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgpAQCAtMTcyLDYgKzIwMSw2NSBAQAogICAgd2lsbCB0aGVuIGJlIGNhbGxlZC4gIFJldHVybnMgbm90aGluZy4gIE5vdCBvbiBXaW5kb3dzLiAoU2VlIHRoZSBVbml4IG1hbiBwYWdlCiAgICA6bWFucGFnZTpgc2lnbmFsKDIpYC4pCiAKKyAgIFNlZSBhbHNvIDpmdW5jOmBzaWd3YWl0YCwgOmZ1bmM6YHNpZ3dhaXRpbmZvYCwgOmZ1bmM6YHNpZ3RpbWVkd2FpdGAgYW5kCisgICA6ZnVuYzpgc2lncGVuZGluZ2AuCisKKworLi4gZnVuY3Rpb246OiBwdGhyZWFkX2tpbGwodGhyZWFkX2lkLCBzaWdudW0pCisKKyAgIFNlbmQgdGhlIHNpZ25hbCAqc2lnbnVtKiB0byB0aGUgdGhyZWFkICp0aHJlYWRfaWQqLCBhbm90aGVyIHRocmVhZCBpbiB0aGUKKyAgIHNhbWUgcHJvY2VzcyBhcyB0aGUgY2FsbGVyLiAgVGhlIHRhcmdldCB0aHJlYWQgY2FuIGJlIGV4ZWN1dGluZyBhbnkgY29kZQorICAgKFB5dGhvbiBvciBub3QpLiAgSG93ZXZlciwgaWYgdGhlIHRhcmdldCB0aHJlYWQgaXMgZXhlY3V0aW5nIHRoZSBQeXRob24KKyAgIGludGVycHJldGVyLCB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVycyB3aWxsIGJlIDpyZWY6YGV4ZWN1dGVkIGJ5IHRoZSBtYWluCisgICB0aHJlYWQgPHNpZ25hbHMtYW5kLXRocmVhZHM+YC4gIFRoZXJlZm9yZSwgdGhlIG9ubHkgcG9pbnQgb2Ygc2VuZGluZyBhIHNpZ25hbCB0byBhIHBhcnRpY3VsYXIKKyAgIFB5dGhvbiB0aHJlYWQgd291bGQgYmUgdG8gZm9yY2UgYSBydW5uaW5nIHN5c3RlbSBjYWxsIHRvIGZhaWwgd2l0aAorICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCisKKyAgIFVzZSA6ZnVuYzpgdGhyZWFkaW5nLmdldF9pZGVudCgpYCBvciB0aGUgOmF0dHI6YH50aHJlYWRpbmcuVGhyZWFkLmlkZW50YAorICAgYXR0cmlidXRlIG9mIDpjbGFzczpgdGhyZWFkaW5nLlRocmVhZGAgb2JqZWN0cyB0byBnZXQgYSBzdWl0YWJsZSB2YWx1ZQorICAgZm9yICp0aHJlYWRfaWQqLgorCisgICBJZiAqc2lnbnVtKiBpcyAwLCB0aGVuIG5vIHNpZ25hbCBpcyBzZW50LCBidXQgZXJyb3IgY2hlY2tpbmcgaXMgc3RpbGwKKyAgIHBlcmZvcm1lZDsgdGhpcyBjYW4gYmUgdXNlZCB0byBjaGVjayBpZiB0aGUgdGFyZ2V0IHRocmVhZCBpcyBzdGlsbCBydW5uaW5nLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXggKHNlZSB0aGUgbWFuIHBhZ2UgOm1hbnBhZ2U6YHB0aHJlYWRfa2lsbCgzKWAgZm9yIGZ1cnRoZXIKKyAgIGluZm9ybWF0aW9uKS4KKworICAgU2VlIGFsc28gOmZ1bmM6YG9zLmtpbGxgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHB0aHJlYWRfc2lnbWFzayhob3csIG1hc2spCisKKyAgIEZldGNoIGFuZC9vciBjaGFuZ2UgdGhlIHNpZ25hbCBtYXNrIG9mIHRoZSBjYWxsaW5nIHRocmVhZC4gIFRoZSBzaWduYWwgbWFzaworICAgaXMgdGhlIHNldCBvZiBzaWduYWxzIHdob3NlIGRlbGl2ZXJ5IGlzIGN1cnJlbnRseSBibG9ja2VkIGZvciB0aGUgY2FsbGVyLgorICAgUmV0dXJuIHRoZSBvbGQgc2lnbmFsIG1hc2sgYXMgYSBzZXQgb2Ygc2lnbmFscy4KKworICAgVGhlIGJlaGF2aW9yIG9mIHRoZSBjYWxsIGlzIGRlcGVuZGVudCBvbiB0aGUgdmFsdWUgb2YgKmhvdyosIGFzIGZvbGxvd3MuCisKKyAgICogOmRhdGE6YFNJR19CTE9DS2A6IFRoZSBzZXQgb2YgYmxvY2tlZCBzaWduYWxzIGlzIHRoZSB1bmlvbiBvZiB0aGUgY3VycmVudAorICAgICBzZXQgYW5kIHRoZSAqbWFzayogYXJndW1lbnQuCisgICAqIDpkYXRhOmBTSUdfVU5CTE9DS2A6IFRoZSBzaWduYWxzIGluICptYXNrKiBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBjdXJyZW50CisgICAgIHNldCBvZiBibG9ja2VkIHNpZ25hbHMuICBJdCBpcyBwZXJtaXNzaWJsZSB0byBhdHRlbXB0IHRvIHVuYmxvY2sgYQorICAgICBzaWduYWwgd2hpY2ggaXMgbm90IGJsb2NrZWQuCisgICAqIDpkYXRhOmBTSUdfU0VUTUFTS2A6IFRoZSBzZXQgb2YgYmxvY2tlZCBzaWduYWxzIGlzIHNldCB0byB0aGUgKm1hc2sqCisgICAgIGFyZ3VtZW50LgorCisgICAqbWFzayogaXMgYSBzZXQgb2Ygc2lnbmFsIG51bWJlcnMgKGUuZy4gezpjb25zdDpgc2lnbmFsLlNJR0lOVGAsCisgICA6Y29uc3Q6YHNpZ25hbC5TSUdURVJNYH0pLiBVc2UgYGByYW5nZSgxLCBzaWduYWwuTlNJRylgYCBmb3IgYSBmdWxsIG1hc2sKKyAgIGluY2x1ZGluZyBhbGwgc2lnbmFscy4KKworICAgRm9yIGV4YW1wbGUsIGBgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbXSlgYCByZWFkcyB0aGUKKyAgIHNpZ25hbCBtYXNrIG9mIHRoZSBjYWxsaW5nIHRocmVhZC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LiBTZWUgdGhlIG1hbiBwYWdlIDptYW5wYWdlOmBzaWdwcm9jbWFzaygzKWAgYW5kCisgICA6bWFucGFnZTpgcHRocmVhZF9zaWdtYXNrKDMpYCBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4KKworICAgU2VlIGFsc28gOmZ1bmM6YHBhdXNlYCwgOmZ1bmM6YHNpZ3BlbmRpbmdgIGFuZCA6ZnVuYzpgc2lnd2FpdGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIGZ1bmN0aW9uOjogc2V0aXRpbWVyKHdoaWNoLCBzZWNvbmRzWywgaW50ZXJ2YWxdKQogCkBAIC0yMDEsMTMgKzI4OSwxNyBAQAogCiAuLiBmdW5jdGlvbjo6IHNldF93YWtldXBfZmQoZmQpCiAKLSAgIFNldCB0aGUgd2FrZXVwIGZkIHRvICpmZCouICBXaGVuIGEgc2lnbmFsIGlzIHJlY2VpdmVkLCBhIGBgJ1wwJ2BgIGJ5dGUgaXMKLSAgIHdyaXR0ZW4gdG8gdGhlIGZkLiAgVGhpcyBjYW4gYmUgdXNlZCBieSBhIGxpYnJhcnkgdG8gd2FrZXVwIGEgcG9sbCBvciBzZWxlY3QKLSAgIGNhbGwsIGFsbG93aW5nIHRoZSBzaWduYWwgdG8gYmUgZnVsbHkgcHJvY2Vzc2VkLgorICAgU2V0IHRoZSB3YWtldXAgZmlsZSBkZXNjcmlwdG9yIHRvICpmZCouICBXaGVuIGEgc2lnbmFsIGlzIHJlY2VpdmVkLCB0aGUKKyAgIHNpZ25hbCBudW1iZXIgaXMgd3JpdHRlbiBhcyBhIHNpbmdsZSBieXRlIGludG8gdGhlIGZkLiAgVGhpcyBjYW4gYmUgdXNlZCBieQorICAgYSBsaWJyYXJ5IHRvIHdha2V1cCBhIHBvbGwgb3Igc2VsZWN0IGNhbGwsIGFsbG93aW5nIHRoZSBzaWduYWwgdG8gYmUgZnVsbHkKKyAgIHByb2Nlc3NlZC4KIAogICAgVGhlIG9sZCB3YWtldXAgZmQgaXMgcmV0dXJuZWQuICAqZmQqIG11c3QgYmUgbm9uLWJsb2NraW5nLiAgSXQgaXMgdXAgdG8gdGhlCiAgICBsaWJyYXJ5IHRvIHJlbW92ZSBhbnkgYnl0ZXMgYmVmb3JlIGNhbGxpbmcgcG9sbCBvciBzZWxlY3QgYWdhaW4uCiAKKyAgIFVzZSBmb3IgZXhhbXBsZSBgYHN0cnVjdC51bnBhY2soJyV1QicgJSBsZW4oZGF0YSksIGRhdGEpYGAgdG8gZGVjb2RlIHRoZQorICAgc2lnbmFsIG51bWJlcnMgbGlzdC4KKwogICAgV2hlbiB0aHJlYWRzIGFyZSBlbmFibGVkLCB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZDsKICAgIGF0dGVtcHRpbmcgdG8gY2FsbCBpdCBmcm9tIG90aGVyIHRocmVhZHMgd2lsbCBjYXVzZSBhIDpleGM6YFZhbHVlRXJyb3JgCiAgICBleGNlcHRpb24gdG8gYmUgcmFpc2VkLgpAQCAtMjQ3LDYgKzMzOSw3MyBAQAogICAgOmNvbnN0OmBTSUdURVJNYC4gQSA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZCBpbiBhbnkgb3RoZXIgY2FzZS4KIAogCisuLiBmdW5jdGlvbjo6IHNpZ3BlbmRpbmcoKQorCisgICBFeGFtaW5lIHRoZSBzZXQgb2Ygc2lnbmFscyB0aGF0IGFyZSBwZW5kaW5nIGZvciBkZWxpdmVyeSB0byB0aGUgY2FsbGluZworICAgdGhyZWFkIChpLmUuLCB0aGUgc2lnbmFscyB3aGljaCBoYXZlIGJlZW4gcmFpc2VkIHdoaWxlIGJsb2NrZWQpLiAgUmV0dXJuIHRoZQorICAgc2V0IG9mIHRoZSBwZW5kaW5nIHNpZ25hbHMuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCAoc2VlIHRoZSBtYW4gcGFnZSA6bWFucGFnZTpgc2lncGVuZGluZygyKWAgZm9yIGZ1cnRoZXIKKyAgIGluZm9ybWF0aW9uKS4KKworICAgU2VlIGFsc28gOmZ1bmM6YHBhdXNlYCwgOmZ1bmM6YHB0aHJlYWRfc2lnbWFza2AgYW5kIDpmdW5jOmBzaWd3YWl0YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBzaWd3YWl0KHNpZ3NldCkKKworICAgU3VzcGVuZCBleGVjdXRpb24gb2YgdGhlIGNhbGxpbmcgdGhyZWFkIHVudGlsIHRoZSBkZWxpdmVyeSBvZiBvbmUgb2YgdGhlCisgICBzaWduYWxzIHNwZWNpZmllZCBpbiB0aGUgc2lnbmFsIHNldCAqc2lnc2V0Ki4gIFRoZSBmdW5jdGlvbiBhY2NlcHRzIHRoZSBzaWduYWwKKyAgIChyZW1vdmVzIGl0IGZyb20gdGhlIHBlbmRpbmcgbGlzdCBvZiBzaWduYWxzKSwgYW5kIHJldHVybnMgdGhlIHNpZ25hbCBudW1iZXIuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCAoc2VlIHRoZSBtYW4gcGFnZSA6bWFucGFnZTpgc2lnd2FpdCgzKWAgZm9yIGZ1cnRoZXIKKyAgIGluZm9ybWF0aW9uKS4KKworICAgU2VlIGFsc28gOmZ1bmM6YHBhdXNlYCwgOmZ1bmM6YHB0aHJlYWRfc2lnbWFza2AsIDpmdW5jOmBzaWdwZW5kaW5nYCwKKyAgIDpmdW5jOmBzaWd3YWl0aW5mb2AgYW5kIDpmdW5jOmBzaWd0aW1lZHdhaXRgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHNpZ3dhaXRpbmZvKHNpZ3NldCkKKworICAgU3VzcGVuZCBleGVjdXRpb24gb2YgdGhlIGNhbGxpbmcgdGhyZWFkIHVudGlsIHRoZSBkZWxpdmVyeSBvZiBvbmUgb2YgdGhlCisgICBzaWduYWxzIHNwZWNpZmllZCBpbiB0aGUgc2lnbmFsIHNldCAqc2lnc2V0Ki4gIFRoZSBmdW5jdGlvbiBhY2NlcHRzIHRoZQorICAgc2lnbmFsIGFuZCByZW1vdmVzIGl0IGZyb20gdGhlIHBlbmRpbmcgbGlzdCBvZiBzaWduYWxzLiBJZiBvbmUgb2YgdGhlCisgICBzaWduYWxzIGluICpzaWdzZXQqIGlzIGFscmVhZHkgcGVuZGluZyBmb3IgdGhlIGNhbGxpbmcgdGhyZWFkLCB0aGUgZnVuY3Rpb24KKyAgIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5IHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhhdCBzaWduYWwuIFRoZSBzaWduYWwKKyAgIGhhbmRsZXIgaXMgbm90IGNhbGxlZCBmb3IgdGhlIGRlbGl2ZXJlZCBzaWduYWwuIFRoZSBmdW5jdGlvbiByYWlzZXMgYW4KKyAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGlmIGl0IGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIHRoYXQgaXMgbm90IGluCisgICAqc2lnc2V0Ki4KKworICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUKKyAgIDpjOnR5cGU6YHNpZ2luZm9fdGAgc3RydWN0dXJlLCBuYW1lbHk6IDphdHRyOmBzaV9zaWdub2AsIDphdHRyOmBzaV9jb2RlYCwKKyAgIDphdHRyOmBzaV9lcnJub2AsIDphdHRyOmBzaV9waWRgLCA6YXR0cjpgc2lfdWlkYCwgOmF0dHI6YHNpX3N0YXR1c2AsCisgICA6YXR0cjpgc2lfYmFuZGAuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCAoc2VlIHRoZSBtYW4gcGFnZSA6bWFucGFnZTpgc2lnd2FpdGluZm8oMilgIGZvciBmdXJ0aGVyCisgICBpbmZvcm1hdGlvbikuCisKKyAgIFNlZSBhbHNvIDpmdW5jOmBwYXVzZWAsIDpmdW5jOmBzaWd3YWl0YCBhbmQgOmZ1bmM6YHNpZ3RpbWVkd2FpdGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogc2lndGltZWR3YWl0KHNpZ3NldCwgdGltZW91dCkKKworICAgTGlrZSA6ZnVuYzpgc2lnd2FpdGluZm9gLCBidXQgdGFrZXMgYW4gYWRkaXRpb25hbCAqdGltZW91dCogYXJndW1lbnQKKyAgIHNwZWNpZnlpbmcgYSB0aW1lb3V0LiBJZiAqdGltZW91dCogaXMgc3BlY2lmaWVkIGFzIDpjb25zdDpgMGAsIGEgcG9sbCBpcworICAgcGVyZm9ybWVkLiBSZXR1cm5zIDpjb25zdDpgTm9uZWAgaWYgYSB0aW1lb3V0IG9jY3Vycy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4IChzZWUgdGhlIG1hbiBwYWdlIDptYW5wYWdlOmBzaWd0aW1lZHdhaXQoMilgIGZvciBmdXJ0aGVyCisgICBpbmZvcm1hdGlvbikuCisKKyAgIFNlZSBhbHNvIDpmdW5jOmBwYXVzZWAsIDpmdW5jOmBzaWd3YWl0YCBhbmQgOmZ1bmM6YHNpZ3dhaXRpbmZvYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gX3NpZ25hbC1leGFtcGxlOgogCiBFeGFtcGxlCkBAIC0yNjMsNyArNDIyLDcgQEAKIAogICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CiAgICAgICAgcHJpbnQoJ1NpZ25hbCBoYW5kbGVyIGNhbGxlZCB3aXRoIHNpZ25hbCcsIHNpZ251bSkKLSAgICAgICByYWlzZSBJT0Vycm9yKCJDb3VsZG4ndCBvcGVuIGRldmljZSEiKQorICAgICAgIHJhaXNlIE9TRXJyb3IoIkNvdWxkbid0IG9wZW4gZGV2aWNlISIpCiAKICAgICMgU2V0IHRoZSBzaWduYWwgaGFuZGxlciBhbmQgYSA1LXNlY29uZCBhbGFybQogICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgaGFuZGxlcikKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NpdGUucnN0IGIvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKaW5kZXggNTc5NTcxYS4uMzZiODBjMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKQEAgLTE2LDcgKzE2LDE0IEBACiAuLiBpbmRleDo6IHRyaXBsZTogbW9kdWxlOyBzZWFyY2g7IHBhdGgKIAogSW1wb3J0aW5nIHRoaXMgbW9kdWxlIHdpbGwgYXBwZW5kIHNpdGUtc3BlY2lmaWMgcGF0aHMgdG8gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aAotYW5kIGFkZCBhIGZldyBidWlsdGlucy4KK2FuZCBhZGQgYSBmZXcgYnVpbHRpbnMsIHVubGVzcyA6b3B0aW9uOmAtU2Agd2FzIHVzZWQuICBJbiB0aGF0IGNhc2UsIHRoaXMgbW9kdWxlCitjYW4gYmUgc2FmZWx5IGltcG9ydGVkIHdpdGggbm8gYXV0b21hdGljIG1vZGlmaWNhdGlvbnMgdG8gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aAorb3IgYWRkaXRpb25zIHRvIHRoZSBidWlsdGlucy4gIFRvIGV4cGxpY2l0bHkgdHJpZ2dlciB0aGUgdXN1YWwgc2l0ZS1zcGVjaWZpYworYWRkaXRpb25zLCBjYWxsIHRoZSA6ZnVuYzpgc2l0ZS5tYWluYCBmdW5jdGlvbi4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIEltcG9ydGluZyB0aGUgbW9kdWxlIHVzZWQgdG8gdHJpZ2dlciBwYXRocyBtYW5pcHVsYXRpb24gZXZlbiB3aGVuIHVzaW5nCisgICA6b3B0aW9uOmAtU2AuCiAKIC4uIGluZGV4OjoKICAgIHBhaXI6IHNpdGUtcHl0aG9uOyBkaXJlY3RvcnkKQEAgLTMxLDYgKzM4LDE1IEBACiBpZiBpdCByZWZlcnMgdG8gYW4gZXhpc3RpbmcgZGlyZWN0b3J5LCBhbmQgaWYgc28sIGFkZHMgaXQgdG8gYGBzeXMucGF0aGBgIGFuZAogYWxzbyBpbnNwZWN0cyB0aGUgbmV3bHkgYWRkZWQgcGF0aCBmb3IgY29uZmlndXJhdGlvbiBmaWxlcy4KIAorSWYgYSBmaWxlIG5hbWVkICJweXZlbnYuY2ZnIiBleGlzdHMgb25lIGRpcmVjdG9yeSBhYm92ZSBzeXMuZXhlY3V0YWJsZSwKK3N5cy5wcmVmaXggYW5kIHN5cy5leGVjX3ByZWZpeCBhcmUgc2V0IHRvIHRoYXQgZGlyZWN0b3J5IGFuZAoraXQgaXMgYWxzbyBjaGVja2VkIGZvciBzaXRlLXBhY2thZ2VzIGFuZCBzaXRlLXB5dGhvbiAoc3lzLmJhc2VfcHJlZml4IGFuZAorc3lzLmJhc2VfZXhlY19wcmVmaXggd2lsbCBhbHdheXMgYmUgdGhlICJyZWFsIiBwcmVmaXhlcyBvZiB0aGUgUHl0aG9uCitpbnN0YWxsYXRpb24pLiBJZiAicHl2ZW52LmNmZyIgKGEgYm9vdHN0cmFwIGNvbmZpZ3VyYXRpb24gZmlsZSkgY29udGFpbnMKK3RoZSBrZXkgImluY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXMiIHNldCB0byBhbnl0aGluZyBvdGhlciB0aGFuICJmYWxzZSIKKyhjYXNlLWluc2Vuc2l0aXZlKSwgdGhlIHN5c3RlbS1sZXZlbCBwcmVmaXhlcyB3aWxsIHN0aWxsIGFsc28gYmUKK3NlYXJjaGVkIGZvciBzaXRlLXBhY2thZ2VzOyBvdGhlcndpc2UgdGhleSB3b24ndC4KKwogQSBwYXRoIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBhIGZpbGUgd2hvc2UgbmFtZSBoYXMgdGhlIGZvcm0gOmZpbGU6YHtuYW1lfS5wdGhgCiBhbmQgZXhpc3RzIGluIG9uZSBvZiB0aGUgZm91ciBkaXJlY3RvcmllcyBtZW50aW9uZWQgYWJvdmU7IGl0cyBjb250ZW50cyBhcmUKIGFkZGl0aW9uYWwgaXRlbXMgKG9uZSBwZXIgbGluZSkgdG8gYmUgYWRkZWQgdG8gYGBzeXMucGF0aGBgLiAgTm9uLWV4aXN0aW5nIGl0ZW1zCkBAIC0xMjksOCArMTQ1LDE5IEBACiAgICA6ZmlsZTpgfi9MaWJyYXJ5L1B5dGhvbi97WC5ZfWAgZm9yIE1hYyBmcmFtZXdvcmsgYnVpbGRzLCBhbmQKICAgIDpmaWxlOmB7JUFQUERBVEElfVxcUHl0aG9uYCBmb3IgV2luZG93cy4gIFRoaXMgdmFsdWUgaXMgdXNlZCBieSBEaXN0dXRpbHMgdG8KICAgIGNvbXB1dGUgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcmllcyBmb3Igc2NyaXB0cywgZGF0YSBmaWxlcywgUHl0aG9uIG1vZHVsZXMsCi0gICBldGMuIGZvciB0aGUgOnJlZjpgdXNlciBpbnN0YWxsYXRpb24gc2NoZW1lIDxpbnN0LWFsdC1pbnN0YWxsLXVzZXI+YC4gIFNlZQotICAgYWxzbyA6ZW52dmFyOmBQWVRIT05VU0VSQkFTRWAuCisgICBldGMuIGZvciB0aGUgOnJlZjpgdXNlciBpbnN0YWxsYXRpb24gc2NoZW1lIDxpbnN0LWFsdC1pbnN0YWxsLXVzZXI+YC4KKyAgIFNlZSBhbHNvIDplbnZ2YXI6YFBZVEhPTlVTRVJCQVNFYC4KKworCisuLiBmdW5jdGlvbjo6IG1haW4oKQorCisgICBBZGRzIGFsbCB0aGUgc3RhbmRhcmQgc2l0ZS1zcGVjaWZpYyBkaXJlY3RvcmllcyB0byB0aGUgbW9kdWxlIHNlYXJjaAorICAgcGF0aC4gIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGlzIG1vZHVsZSBpcyBpbXBvcnRlZCwKKyAgIHVubGVzcyB0aGUgOnByb2dyYW06YHB5dGhvbmAgaW50ZXJwcmV0ZXIgd2FzIHN0YXJ0ZWQgd2l0aCB0aGUgOm9wdGlvbjpgLVNgCisgICBmbGFnLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIGJlIGNhbGxlZCB1bmNvbmRpdGlvbm5hbGx5LgogCiAKIC4uIGZ1bmN0aW9uOjogYWRkc2l0ZWRpcihzaXRlZGlyLCBrbm93bl9wYXRocz1Ob25lKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc210cGQucnN0IGIvRG9jL2xpYnJhcnkvc210cGQucnN0CmluZGV4IGJmZGM3MjcuLjJjYTcxZmYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NtdHBkLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zbXRwZC5yc3QKQEAgLTIwLDE3ICsyMCwyNCBAQAogQWRkaXRpb25hbGx5IHRoZSBTTVRQQ2hhbm5lbCBtYXkgYmUgZXh0ZW5kZWQgdG8gaW1wbGVtZW50IHZlcnkgc3BlY2lmaWMKIGludGVyYWN0aW9uIGJlaGF2aW91ciB3aXRoIFNNVFAgY2xpZW50cy4KIAorVGhlIGNvZGUgc3VwcG9ydHMgOlJGQzpgNTMyMWAsIHBsdXMgdGhlIDpyZmM6YDE4NzBgIFNJWkUgZXh0ZW5zaW9uLgorCisKIFNNVFBTZXJ2ZXIgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tCiAKIAotLi4gY2xhc3M6OiBTTVRQU2VydmVyKGxvY2FsYWRkciwgcmVtb3RlYWRkcikKKy4uIGNsYXNzOjogU01UUFNlcnZlcihsb2NhbGFkZHIsIHJlbW90ZWFkZHIsIGRhdGFfc2l6ZV9saW1pdD0zMzU1NDQzMikKIAogICAgQ3JlYXRlIGEgbmV3IDpjbGFzczpgU01UUFNlcnZlcmAgb2JqZWN0LCB3aGljaCBiaW5kcyB0byBsb2NhbCBhZGRyZXNzCiAgICAqbG9jYWxhZGRyKi4gIEl0IHdpbGwgdHJlYXQgKnJlbW90ZWFkZHIqIGFzIGFuIHVwc3RyZWFtIFNNVFAgcmVsYXllci4gIEl0CiAgICBpbmhlcml0cyBmcm9tIDpjbGFzczpgYXN5bmNvcmUuZGlzcGF0Y2hlcmAsIGFuZCBzbyB3aWxsIGluc2VydCBpdHNlbGYgaW50bwogICAgOm1vZDpgYXN5bmNvcmVgJ3MgZXZlbnQgbG9vcCBvbiBpbnN0YW50aWF0aW9uLgogCisgICAqZGF0YV9zaXplX2xpbWl0KiBzcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd2lsbCBiZQorICAgYWNjZXB0ZWQgaW4gYSBgYERBVEFgYCBjb21tYW5kLiAgQSB2YWx1ZSBvZiBgYE5vbmVgYCBvciBgYDBgYCBtZWFucyBubworICAgbGltaXQuCisKICAgIC4uIG1ldGhvZDo6IHByb2Nlc3NfbWVzc2FnZShwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSkKIAogICAgICAgUmFpc2UgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgZXhjZXB0aW9uLiBPdmVycmlkZSB0aGlzIGluIHN1YmNsYXNzZXMgdG8KQEAgLTE1NiwxMSArMTYzLDE1IEBACiAgICBDb21tYW5kICBBY3Rpb24gdGFrZW4KICAgID09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIEhFTE8gICAgIEFjY2VwdHMgdGhlIGdyZWV0aW5nIGZyb20gdGhlIGNsaWVudCBhbmQgc3RvcmVzIGl0IGluCi0gICAgICAgICAgICA6YXR0cjpgc2Vlbl9ncmVldGluZ2AuCisgICAgICAgICAgICA6YXR0cjpgc2Vlbl9ncmVldGluZ2AuICBTZXRzIHNlcnZlciB0byBiYXNlIGNvbW1hbmQgbW9kZS4KKyAgIEVITE8gICAgIEFjY2VwdHMgdGhlIGdyZWV0aW5nIGZyb20gdGhlIGNsaWVudCBhbmQgc3RvcmVzIGl0IGluCisgICAgICAgICAgICA6YXR0cjpgc2Vlbl9ncmVldGluZ2AuICBTZXRzIHNlcnZlciB0byBleHRlbmRlZCBjb21tYW5kIG1vZGUuCiAgICBOT09QICAgICBUYWtlcyBubyBhY3Rpb24uCiAgICBRVUlUICAgICBDbG9zZXMgdGhlIGNvbm5lY3Rpb24gY2xlYW5seS4KICAgIE1BSUwgICAgIEFjY2VwdHMgdGhlICJNQUlMIEZST006IiBzeW50YXggYW5kIHN0b3JlcyB0aGUgc3VwcGxpZWQgYWRkcmVzcyBhcwotICAgICAgICAgICAgOmF0dHI6YG1haWxmcm9tYC4KKyAgICAgICAgICAgIDphdHRyOmBtYWlsZnJvbWAuICBJbiBleHRlbmRlZCBjb21tYW5kIG1vZGUsIGFjY2VwdHMgdGhlCisgICAgICAgICAgICA6cmZjOmAxODcwYCBTSVpFIGF0dHJpYnV0ZSBhbmQgcmVzcG9uZHMgYXBwcm9wcmlhdGVseSBiYXNlZCBvbiB0aGUKKyAgICAgICAgICAgIHZhbHVlIG9mICpkYXRhX3NpemVfbGltaXQqLgogICAgUkNQVCAgICAgQWNjZXB0cyB0aGUgIlJDUFQgVE86IiBzeW50YXggYW5kIHN0b3JlcyB0aGUgc3VwcGxpZWQgYWRkcmVzc2VzIGluCiAgICAgICAgICAgICB0aGUgOmF0dHI6YHJjcHR0b3NgIGxpc3QuCiAgICBSU0VUICAgICBSZXNldHMgdGhlIDphdHRyOmBtYWlsZnJvbWAsIDphdHRyOmByY3B0dG9zYCwgYW5kCkBAIC0xNjgsNCArMTc5LDcgQEAKICAgIERBVEEgICAgIFNldHMgdGhlIGludGVybmFsIHN0YXRlIHRvIDphdHRyOmBEQVRBYCBhbmQgc3RvcmVzIHJlbWFpbmluZyBsaW5lcwogICAgICAgICAgICAgZnJvbSB0aGUgY2xpZW50IGluIDphdHRyOmByZWNlaXZlZF9kYXRhYCB1bnRpbCB0aGUgdGVybWluYXRvcgogICAgICAgICAgICAgYGAiXHJcbi5cclxuImBgIGlzIHJlY2VpdmVkLgorICAgSEVMUCAgICAgUmV0dXJucyBtaW5pbWFsIGluZm9ybWF0aW9uIG9uIGNvbW1hbmQgc3ludGF4CisgICBWUkZZICAgICBSZXR1cm5zIGNvZGUgMjUyICh0aGUgc2VydmVyIGRvZXNuJ3Qga25vdyBpZiB0aGUgYWRkcmVzcyBpcyB2YWxpZCkKKyAgIEVYUE4gICAgIFJlcG9ydHMgdGhhdCB0aGUgY29tbWFuZCBpcyBub3QgaW1wbGVtZW50ZWQuCiAgICA9PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdCBiL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CmluZGV4IDRhNTM5ZmMuLjQwYjI1NjEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CkBAIC0yMCw3ICsyMCw3IEBACiBQcm90b2NvbCkgYW5kIDpyZmM6YDE4NjlgIChTTVRQIFNlcnZpY2UgRXh0ZW5zaW9ucykuCiAKIAotLi4gY2xhc3M6OiBTTVRQKGhvc3Q9JycsIHBvcnQ9MCwgbG9jYWxfaG9zdG5hbWU9Tm9uZVssIHRpbWVvdXRdKQorLi4gY2xhc3M6OiBTTVRQKGhvc3Q9JycsIHBvcnQ9MCwgbG9jYWxfaG9zdG5hbWU9Tm9uZVssIHRpbWVvdXRdLCBzb3VyY2VfYWRkcmVzcz1Ob25lKQogCiAgICBBIDpjbGFzczpgU01UUGAgaW5zdGFuY2UgZW5jYXBzdWxhdGVzIGFuIFNNVFAgY29ubmVjdGlvbi4gIEl0IGhhcyBtZXRob2RzCiAgICB0aGF0IHN1cHBvcnQgYSBmdWxsIHJlcGVydG9pcmUgb2YgU01UUCBhbmQgRVNNVFAgb3BlcmF0aW9ucy4gSWYgdGhlIG9wdGlvbmFsCkBAIC0yOSwxNCArMjksMzUgQEAKICAgIHJhaXNlZCBpZiB0aGUgc3BlY2lmaWVkIGhvc3QgZG9lc24ndCByZXNwb25kIGNvcnJlY3RseS4gVGhlIG9wdGlvbmFsCiAgICAqdGltZW91dCogcGFyYW1ldGVyIHNwZWNpZmllcyBhIHRpbWVvdXQgaW4gc2Vjb25kcyBmb3IgYmxvY2tpbmcgb3BlcmF0aW9ucwogICAgbGlrZSB0aGUgY29ubmVjdGlvbiBhdHRlbXB0IChpZiBub3Qgc3BlY2lmaWVkLCB0aGUgZ2xvYmFsIGRlZmF1bHQgdGltZW91dAotICAgc2V0dGluZyB3aWxsIGJlIHVzZWQpLgorICAgc2V0dGluZyB3aWxsIGJlIHVzZWQpLiBUaGUgb3B0aW9uYWwgc291cmNlX2FkZHJlc3MgcGFyYW1ldGVyIGFsbG93cyB0byBiaW5kIHRvIHNvbWUKKyAgIHNwZWNpZmljIHNvdXJjZSBhZGRyZXNzIGluIGEgbWFjaGluZSB3aXRoIG11bHRpcGxlIG5ldHdvcmsgaW50ZXJmYWNlcywKKyAgIGFuZC9vciB0byBzb21lIHNwZWNpZmljIHNvdXJjZSBUQ1AgcG9ydC4gSXQgdGFrZXMgYSAyLXR1cGxlIChob3N0LCBwb3J0KSwKKyAgIGZvciB0aGUgc29ja2V0IHRvIGJpbmQgdG8gYXMgaXRzIHNvdXJjZSBhZGRyZXNzIGJlZm9yZSBjb25uZWN0aW5nLiBJZgorICAgb21pdHRlZCAob3IgaWYgaG9zdCBvciBwb3J0IGFyZSBgYCcnYGAgYW5kL29yIDAgcmVzcGVjdGl2ZWx5KSB0aGUgT1MgZGVmYXVsdAorICAgYmVoYXZpb3Igd2lsbCBiZSB1c2VkLgogCiAgICBGb3Igbm9ybWFsIHVzZSwgeW91IHNob3VsZCBvbmx5IHJlcXVpcmUgdGhlIGluaXRpYWxpemF0aW9uL2Nvbm5lY3QsCiAgICA6bWV0aDpgc2VuZG1haWxgLCBhbmQgOm1ldGg6YH5zbXRwbGliLnF1aXRgIG1ldGhvZHMuCiAgICBBbiBleGFtcGxlIGlzIGluY2x1ZGVkIGJlbG93LgogCisgICBUaGUgOmNsYXNzOmBTTVRQYCBjbGFzcyBzdXBwb3J0cyB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4gIFdoZW4gdXNlZAorICAgbGlrZSB0aGlzLCB0aGUgU01UUCBgYFFVSVRgYCBjb21tYW5kIGlzIGlzc3VlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlCisgICA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IGV4aXRzLiAgRS5nLjo6CiAKLS4uIGNsYXNzOjogU01UUF9TU0woaG9zdD0nJywgcG9ydD0wLCBsb2NhbF9ob3N0bmFtZT1Ob25lLCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmVbLCB0aW1lb3V0XSkKKyAgICA+Pj4gZnJvbSBzbXRwbGliIGltcG9ydCBTTVRQCisgICAgPj4+IHdpdGggU01UUCgiZG9tYWluLm9yZyIpIGFzIHNtdHA6CisgICAgLi4uICAgICBzbXRwLm5vb3AoKQorICAgIC4uLgorICAgICgyNTAsIGInT2snKQorICAgID4+PgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgU3VwcG9ydCBmb3IgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgd2FzIGFkZGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgc291cmNlX2FkZHJlc3MgYXJndW1lbnQgd2FzIGFkZGVkLgorCisuLiBjbGFzczo6IFNNVFBfU1NMKGhvc3Q9JycsIHBvcnQ9MCwgbG9jYWxfaG9zdG5hbWU9Tm9uZSwga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lWywgdGltZW91dF0sIGNvbnRleHQ9Tm9uZSwgc291cmNlX2FkZHJlc3M9Tm9uZSkKIAogICAgQSA6Y2xhc3M6YFNNVFBfU1NMYCBpbnN0YW5jZSBiZWhhdmVzIGV4YWN0bHkgdGhlIHNhbWUgYXMgaW5zdGFuY2VzIG9mCiAgICA6Y2xhc3M6YFNNVFBgLiA6Y2xhc3M6YFNNVFBfU1NMYCBzaG91bGQgYmUgdXNlZCBmb3Igc2l0dWF0aW9ucyB3aGVyZSBTU0wgaXMKQEAgLTQ0LDE4ICs2NSwzMyBAQAogICAgbm90IGFwcHJvcHJpYXRlLiBJZiAqaG9zdCogaXMgbm90IHNwZWNpZmllZCwgdGhlIGxvY2FsIGhvc3QgaXMgdXNlZC4gSWYKICAgICpwb3J0KiBpcyB6ZXJvLCB0aGUgc3RhbmRhcmQgU01UUC1vdmVyLVNTTCBwb3J0ICg0NjUpIGlzIHVzZWQuICprZXlmaWxlKgogICAgYW5kICpjZXJ0ZmlsZSogYXJlIGFsc28gb3B0aW9uYWwsIGFuZCBjYW4gY29udGFpbiBhIFBFTSBmb3JtYXR0ZWQgcHJpdmF0ZSBrZXkKLSAgIGFuZCBjZXJ0aWZpY2F0ZSBjaGFpbiBmaWxlIGZvciB0aGUgU1NMIGNvbm5lY3Rpb24uIFRoZSBvcHRpb25hbCAqdGltZW91dCoKKyAgIGFuZCBjZXJ0aWZpY2F0ZSBjaGFpbiBmaWxlIGZvciB0aGUgU1NMIGNvbm5lY3Rpb24uICpjb250ZXh0KiBhbHNvIG9wdGlvbmFsLCBjYW4gY29udGFpbgorICAgYSBTU0xDb250ZXh0LCBhbmQgaXMgYW4gYWx0ZXJuYXRpdmUgdG8ga2V5ZmlsZSBhbmQgY2VydGZpbGU7IElmIGl0IGlzIHNwZWNpZmllZCBib3RoCisgICBrZXlmaWxlIGFuZCBjZXJ0ZmlsZSBtdXN0IGJlIE5vbmUuICBUaGUgb3B0aW9uYWwgKnRpbWVvdXQqCiAgICBwYXJhbWV0ZXIgc3BlY2lmaWVzIGEgdGltZW91dCBpbiBzZWNvbmRzIGZvciBibG9ja2luZyBvcGVyYXRpb25zIGxpa2UgdGhlCiAgICBjb25uZWN0aW9uIGF0dGVtcHQgKGlmIG5vdCBzcGVjaWZpZWQsIHRoZSBnbG9iYWwgZGVmYXVsdCB0aW1lb3V0IHNldHRpbmcKLSAgIHdpbGwgYmUgdXNlZCkuCisgICB3aWxsIGJlIHVzZWQpLiBUaGUgb3B0aW9uYWwgc291cmNlX2FkZHJlc3MgcGFyYW1ldGVyIGFsbG93cyB0byBiaW5kIHRvIHNvbWUKKyAgIHNwZWNpZmljIHNvdXJjZSBhZGRyZXNzIGluIGEgbWFjaGluZSB3aXRoIG11bHRpcGxlIG5ldHdvcmsgaW50ZXJmYWNlcywKKyAgIGFuZC9vciB0byBzb21lIHNwZWNpZmljIHNvdXJjZSB0Y3AgcG9ydC4gSXQgdGFrZXMgYSAyLXR1cGxlIChob3N0LCBwb3J0KSwKKyAgIGZvciB0aGUgc29ja2V0IHRvIGJpbmQgdG8gYXMgaXRzIHNvdXJjZSBhZGRyZXNzIGJlZm9yZSBjb25uZWN0aW5nLiBJZgorICAgb21pdHRlZCAob3IgaWYgaG9zdCBvciBwb3J0IGFyZSBgYCcnYGAgYW5kL29yIDAgcmVzcGVjdGl2ZWx5KSB0aGUgT1MgZGVmYXVsdAorICAgYmVoYXZpb3Igd2lsbCBiZSB1c2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKmNvbnRleHQqIHdhcyBhZGRlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIHNvdXJjZV9hZGRyZXNzIGFyZ3VtZW50IHdhcyBhZGRlZC4KIAogCi0uLiBjbGFzczo6IExNVFAoaG9zdD0nJywgcG9ydD1MTVRQX1BPUlQsIGxvY2FsX2hvc3RuYW1lPU5vbmUpCisuLiBjbGFzczo6IExNVFAoaG9zdD0nJywgcG9ydD1MTVRQX1BPUlQsIGxvY2FsX2hvc3RuYW1lPU5vbmUsIHNvdXJjZV9hZGRyZXNzPU5vbmUpCiAKICAgIFRoZSBMTVRQIHByb3RvY29sLCB3aGljaCBpcyB2ZXJ5IHNpbWlsYXIgdG8gRVNNVFAsIGlzIGhlYXZpbHkgYmFzZWQgb24gdGhlCi0gICBzdGFuZGFyZCBTTVRQIGNsaWVudC4gSXQncyBjb21tb24gdG8gdXNlIFVuaXggc29ja2V0cyBmb3IgTE1UUCwgc28gb3VyIDptZXRoOmBjb25uZWN0YAotICAgbWV0aG9kIG11c3Qgc3VwcG9ydCB0aGF0IGFzIHdlbGwgYXMgYSByZWd1bGFyIGhvc3Q6cG9ydCBzZXJ2ZXIuIFRvIHNwZWNpZnkgYQotICAgVW5peCBzb2NrZXQsIHlvdSBtdXN0IHVzZSBhbiBhYnNvbHV0ZSBwYXRoIGZvciAqaG9zdCosIHN0YXJ0aW5nIHdpdGggYSAnLycuCisgICBzdGFuZGFyZCBTTVRQIGNsaWVudC4gSXQncyBjb21tb24gdG8gdXNlIFVuaXggc29ja2V0cyBmb3IgTE1UUCwgc28gb3VyCisgICA6bWV0aDpgY29ubmVjdGAgbWV0aG9kIG11c3Qgc3VwcG9ydCB0aGF0IGFzIHdlbGwgYXMgYSByZWd1bGFyIGhvc3Q6cG9ydAorICAgc2VydmVyLiBUaGUgb3B0aW9uYWwgYXJndW1lbnRzIGxvY2FsX2hvc3RuYW1lIGFuZCBzb3VyY2VfYWRkcmVzcyBoYXZlIHRoZQorICAgc2FtZSBtZWFuaW5nIGFzIHRoYXQgb2YgU01UUCBjbGllbnQuIFRvIHNwZWNpZnkgYSBVbml4IHNvY2tldCwgeW91IG11c3QgdXNlCisgICBhbiBhYnNvbHV0ZSBwYXRoIGZvciAqaG9zdCosIHN0YXJ0aW5nIHdpdGggYSAnLycuCiAKICAgIEF1dGhlbnRpY2F0aW9uIGlzIHN1cHBvcnRlZCwgdXNpbmcgdGhlIHJlZ3VsYXIgU01UUCBtZWNoYW5pc20uIFdoZW4gdXNpbmcgYSBVbml4CiAgICBzb2NrZXQsIExNVFAgZ2VuZXJhbGx5IGRvbid0IHN1cHBvcnQgb3IgcmVxdWlyZSBhbnkgYXV0aGVudGljYXRpb24sIGJ1dCB5b3VyCkBAIC0yNDMsNyArMjc5LDcgQEAKICAgICAgIE5vIHN1aXRhYmxlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCB3YXMgZm91bmQuCiAKIAotLi4gbWV0aG9kOjogU01UUC5zdGFydHRscyhrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUpCisuLiBtZXRob2Q6OiBTTVRQLnN0YXJ0dGxzKGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSwgY29udGV4dD1Ob25lKQogCiAgICBQdXQgdGhlIFNNVFAgY29ubmVjdGlvbiBpbiBUTFMgKFRyYW5zcG9ydCBMYXllciBTZWN1cml0eSkgbW9kZS4gIEFsbCBTTVRQCiAgICBjb21tYW5kcyB0aGF0IGZvbGxvdyB3aWxsIGJlIGVuY3J5cHRlZC4gIFlvdSBzaG91bGQgdGhlbiBjYWxsIDptZXRoOmBlaGxvYApAQCAtMjUyLDYgKzI4OCw5IEBACiAgICBJZiAqa2V5ZmlsZSogYW5kICpjZXJ0ZmlsZSogYXJlIHByb3ZpZGVkLCB0aGVzZSBhcmUgcGFzc2VkIHRvIHRoZSA6bW9kOmBzb2NrZXRgCiAgICBtb2R1bGUncyA6ZnVuYzpgc3NsYCBmdW5jdGlvbi4KIAorICAgT3B0aW9uYWwgKmNvbnRleHQqIHBhcmFtZXRlciBpcyBhIDpjbGFzczpgc3NsLlNTTENvbnRleHRgIG9iamVjdDsgVGhpcyBpcyBhbiBhbHRlcm5hdGl2ZSB0bworICAgdXNpbmcgYSBrZXlmaWxlIGFuZCBhIGNlcnRmaWxlIGFuZCBpZiBzcGVjaWZpZWQgYm90aCAqa2V5ZmlsZSogYW5kICpjZXJ0ZmlsZSogc2hvdWxkIGJlIE5vbmUuCisKICAgIElmIHRoZXJlIGhhcyBiZWVuIG5vIHByZXZpb3VzIGBgRUhMT2BgIG9yIGBgSEVMT2BgIGNvbW1hbmQgdGhpcyBzZXNzaW9uLAogICAgdGhpcyBtZXRob2QgdHJpZXMgRVNNVFAgYGBFSExPYGAgZmlyc3QuCiAKQEAgLTI2NCw2ICszMDMsOSBAQAogICAgOmV4YzpgUnVudGltZUVycm9yYAogICAgICBTU0wvVExTIHN1cHBvcnQgaXMgbm90IGF2YWlsYWJsZSB0byB5b3VyIFB5dGhvbiBpbnRlcnByZXRlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICpjb250ZXh0KiB3YXMgYWRkZWQuCisKIAogLi4gbWV0aG9kOjogU01UUC5zZW5kbWFpbChmcm9tX2FkZHIsIHRvX2FkZHJzLCBtc2csIG1haWxfb3B0aW9ucz1bXSwgcmNwdF9vcHRpb25zPVtdKQogCkBAIC0zMjEsNyArMzYzLDggQEAKICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRoZSBjb25uZWN0aW9uIHdpbGwgYmUgb3BlbiBldmVuIGFmdGVyIGFuIGV4Y2VwdGlvbiBpcwogICAgcmFpc2VkLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMiAqbXNnKiBtYXkgYmUgYSBieXRlIHN0cmluZy4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICAqbXNnKiBtYXkgYmUgYSBieXRlIHN0cmluZy4KIAogCiAuLiBtZXRob2Q6OiBTTVRQLnNlbmRfbWVzc2FnZShtc2csIGZyb21fYWRkcj1Ob25lLCB0b19hZGRycz1Ob25lLCBcCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zb2NrZXQucnN0IGIvRG9jL2xpYnJhcnkvc29ja2V0LnJzdAppbmRleCAzNDRhMjlmLi41NzM3YjQwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zb2NrZXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QKQEAgLTQwLDkgKzQwLDIzIEBACiBEZXBlbmRpbmcgb24gdGhlIHN5c3RlbSBhbmQgdGhlIGJ1aWxkIG9wdGlvbnMsIHZhcmlvdXMgc29ja2V0IGZhbWlsaWVzCiBhcmUgc3VwcG9ydGVkIGJ5IHRoaXMgbW9kdWxlLgogCi1Tb2NrZXQgYWRkcmVzc2VzIGFyZSByZXByZXNlbnRlZCBhcyBmb2xsb3dzOgorVGhlIGFkZHJlc3MgZm9ybWF0IHJlcXVpcmVkIGJ5IGEgcGFydGljdWxhciBzb2NrZXQgb2JqZWN0IGlzIGF1dG9tYXRpY2FsbHkKK3NlbGVjdGVkIGJhc2VkIG9uIHRoZSBhZGRyZXNzIGZhbWlseSBzcGVjaWZpZWQgd2hlbiB0aGUgc29ja2V0IG9iamVjdCB3YXMKK2NyZWF0ZWQuICBTb2NrZXQgYWRkcmVzc2VzIGFyZSByZXByZXNlbnRlZCBhcyBmb2xsb3dzOgogCi0tIEEgc2luZ2xlIHN0cmluZyBpcyB1c2VkIGZvciB0aGUgOmNvbnN0OmBBRl9VTklYYCBhZGRyZXNzIGZhbWlseS4KKy0gVGhlIGFkZHJlc3Mgb2YgYW4gOmNvbnN0OmBBRl9VTklYYCBzb2NrZXQgYm91bmQgdG8gYSBmaWxlIHN5c3RlbSBub2RlCisgIGlzIHJlcHJlc2VudGVkIGFzIGEgc3RyaW5nLCB1c2luZyB0aGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgYW5kIHRoZQorICBgYCdzdXJyb2dhdGVlc2NhcGUnYGAgZXJyb3IgaGFuZGxlciAoc2VlIDpwZXA6YDM4M2ApLiAgQW4gYWRkcmVzcyBpbgorICBMaW51eCdzIGFic3RyYWN0IG5hbWVzcGFjZSBpcyByZXR1cm5lZCBhcyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCB3aXRoCisgIGFuIGluaXRpYWwgbnVsbCBieXRlOyBub3RlIHRoYXQgc29ja2V0cyBpbiB0aGlzIG5hbWVzcGFjZSBjYW4KKyAgY29tbXVuaWNhdGUgd2l0aCBub3JtYWwgZmlsZSBzeXN0ZW0gc29ja2V0cywgc28gcHJvZ3JhbXMgaW50ZW5kZWQgdG8KKyAgcnVuIG9uIExpbnV4IG1heSBuZWVkIHRvIGRlYWwgd2l0aCBib3RoIHR5cGVzIG9mIGFkZHJlc3MuICBBIHN0cmluZyBvcgorICA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgY2FuIGJlIHVzZWQgZm9yIGVpdGhlciB0eXBlIG9mIGFkZHJlc3Mgd2hlbgorICBwYXNzaW5nIGl0IGFzIGFuIGFyZ3VtZW50LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUHJldmlvdXNseSwgOmNvbnN0OmBBRl9VTklYYCBzb2NrZXQgcGF0aHMgd2VyZSBhc3N1bWVkIHRvIHVzZSBVVEYtOAorICAgICAgZW5jb2RpbmcuCiAKIC0gQSBwYWlyIGBgKGhvc3QsIHBvcnQpYGAgaXMgdXNlZCBmb3IgdGhlIDpjb25zdDpgQUZfSU5FVGAgYWRkcmVzcyBmYW1pbHksCiAgIHdoZXJlICpob3N0KiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgZWl0aGVyIGEgaG9zdG5hbWUgaW4gSW50ZXJuZXQgZG9tYWluCkBAIC04MCw2ICs5NCwxOSBAQAogICAgIElmICphZGRyX3R5cGUqIGlzIDpjb25zdDpgVElQQ19BRERSX0lEYCwgdGhlbiAqdjEqIGlzIHRoZSBub2RlLCAqdjIqIGlzIHRoZQogICAgIHJlZmVyZW5jZSwgYW5kICp2Myogc2hvdWxkIGJlIHNldCB0byAwLgogCistIEEgdHVwbGUgYGAoaW50ZXJmYWNlLCApYGAgaXMgdXNlZCBmb3IgdGhlIDpjb25zdDpgQUZfQ0FOYCBhZGRyZXNzIGZhbWlseSwKKyAgd2hlcmUgKmludGVyZmFjZSogaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgbmV0d29yayBpbnRlcmZhY2UgbmFtZSBsaWtlCisgIGBgJ2NhbjAnYGAuIFRoZSBuZXR3b3JrIGludGVyZmFjZSBuYW1lIGBgJydgYCBjYW4gYmUgdXNlZCB0byByZWNlaXZlIHBhY2tldHMKKyAgZnJvbSBhbGwgbmV0d29yayBpbnRlcmZhY2VzIG9mIHRoaXMgZmFtaWx5LgorCistIEEgc3RyaW5nIG9yIGEgdHVwbGUgYGAoaWQsIHVuaXQpYGAgaXMgdXNlZCBmb3IgdGhlIDpjb25zdDpgU1lTUFJPVE9fQ09OVFJPTGAKKyAgcHJvdG9jb2wgb2YgdGhlIDpjb25zdDpgUEZfU1lTVEVNYCBmYW1pbHkuIFRoZSBzdHJpbmcgaXMgdGhlIG5hbWUgb2YgYQorICBrZXJuZWwgY29udHJvbCB1c2luZyBhIGR5bmFtaWNhbGx5LWFzc2lnbmVkIElELiBUaGUgdHVwbGUgY2FuIGJlIHVzZWQgaWYgSUQKKyAgYW5kIHVuaXQgbnVtYmVyIG9mIHRoZSBrZXJuZWwgY29udHJvbCBhcmUga25vd24gb3IgaWYgYSByZWdpc3RlcmVkIElEIGlzCisgIHVzZWQuCisKKyAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC0gQ2VydGFpbiBvdGhlciBhZGRyZXNzIGZhbWlsaWVzICg6Y29uc3Q6YEFGX0JMVUVUT09USGAsIDpjb25zdDpgQUZfUEFDS0VUYCkKICAgc3VwcG9ydCBzcGVjaWZpYyByZXByZXNlbnRhdGlvbnMuCiAKQEAgLTk5LDggKzEyNiw5IEBACiBudW1lcmljIGFkZHJlc3MgaW4gKmhvc3QqIHBvcnRpb24uCiAKIEFsbCBlcnJvcnMgcmFpc2UgZXhjZXB0aW9ucy4gIFRoZSBub3JtYWwgZXhjZXB0aW9ucyBmb3IgaW52YWxpZCBhcmd1bWVudCB0eXBlcwotYW5kIG91dC1vZi1tZW1vcnkgY29uZGl0aW9ucyBjYW4gYmUgcmFpc2VkOyBlcnJvcnMgcmVsYXRlZCB0byBzb2NrZXQgb3IgYWRkcmVzcwotc2VtYW50aWNzIHJhaXNlIDpleGM6YHNvY2tldC5lcnJvcmAgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorYW5kIG91dC1vZi1tZW1vcnkgY29uZGl0aW9ucyBjYW4gYmUgcmFpc2VkOyBzdGFydGluZyBmcm9tIFB5dGhvbiAzLjMsIGVycm9ycworcmVsYXRlZCB0byBzb2NrZXQgb3IgYWRkcmVzcyBzZW1hbnRpY3MgcmFpc2UgOmV4YzpgT1NFcnJvcmAgb3Igb25lIG9mIGl0cworc3ViY2xhc3NlcyAodGhleSB1c2VkIHRvIHJhaXNlIDpleGM6YHNvY2tldC5lcnJvcmApLgogCiBOb24tYmxvY2tpbmcgbW9kZSBpcyBzdXBwb3J0ZWQgdGhyb3VnaCA6bWV0aDpgfnNvY2tldC5zZXRibG9ja2luZ2AuICBBCiBnZW5lcmFsaXphdGlvbiBvZiB0aGlzIGJhc2VkIG9uIHRpbWVvdXRzIGlzIHN1cHBvcnRlZCB0aHJvdWdoCkBAIC0xMTUsMjAgKzE0MywxNSBAQAogCiAuLiBleGNlcHRpb246OiBlcnJvcgogCi0gICAuLiBpbmRleDo6IG1vZHVsZTogZXJybm8KKyAgIEEgZGVwcmVjYXRlZCBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAotICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBJT0Vycm9yYCwgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGZvciBzb2NrZXQtcmVsYXRlZAotICAgZXJyb3JzLiAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgaW5zcGVjdCBpdHMgYGBlcnJub2BgIGF0dHJpYnV0ZSB0bwotICAgZGlzY3JpbWluYXRlIGJldHdlZW4gZGlmZmVyZW50IGtpbmRzIG9mIGVycm9ycy4KLQotICAgLi4gc2VlYWxzbzo6Ci0gICAgICBUaGUgOm1vZDpgZXJybm9gIG1vZHVsZSBjb250YWlucyBzeW1ib2xpYyBuYW1lcyBmb3IgdGhlIGVycm9yIGNvZGVzCi0gICAgICBkZWZpbmVkIGJ5IHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0uCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgRm9sbG93aW5nIDpwZXA6YDMxNTFgLCB0aGlzIGNsYXNzIHdhcyBtYWRlIGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIGV4Y2VwdGlvbjo6IGhlcnJvcgogCi0gICBBIHN1YmNsYXNzIG9mIDpleGM6YHNvY2tldC5lcnJvcmAsIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBmb3IKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAsIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBmb3IKICAgIGFkZHJlc3MtcmVsYXRlZCBlcnJvcnMsIGkuZS4gZm9yIGZ1bmN0aW9ucyB0aGF0IHVzZSAqaF9lcnJubyogaW4gdGhlIFBPU0lYCiAgICBDIEFQSSwgaW5jbHVkaW5nIDpmdW5jOmBnZXRob3N0YnluYW1lX2V4YCBhbmQgOmZ1bmM6YGdldGhvc3RieWFkZHJgLgogICAgVGhlIGFjY29tcGFueWluZyB2YWx1ZSBpcyBhIHBhaXIgYGAoaF9lcnJubywgc3RyaW5nKWBgIHJlcHJlc2VudGluZyBhbgpAQCAtMTM2LDEwICsxNTksMTIgQEAKICAgICpzdHJpbmcqIHJlcHJlc2VudHMgdGhlIGRlc2NyaXB0aW9uIG9mICpoX2Vycm5vKiwgYXMgcmV0dXJuZWQgYnkgdGhlCiAgICA6YzpmdW5jOmBoc3RyZXJyb3JgIEMgZnVuY3Rpb24uCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGNsYXNzIHdhcyBtYWRlIGEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIC4uIGV4Y2VwdGlvbjo6IGdhaWVycm9yCiAKLSAgIEEgc3ViY2xhc3Mgb2YgOmV4Yzpgc29ja2V0LmVycm9yYCwgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGZvcgorICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYCwgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGZvcgogICAgYWRkcmVzcy1yZWxhdGVkIGVycm9ycyBieSA6ZnVuYzpgZ2V0YWRkcmluZm9gIGFuZCA6ZnVuYzpgZ2V0bmFtZWluZm9gLgogICAgVGhlIGFjY29tcGFueWluZyB2YWx1ZSBpcyBhIHBhaXIgYGAoZXJyb3IsIHN0cmluZylgYCByZXByZXNlbnRpbmcgYW4gZXJyb3IKICAgIHJldHVybmVkIGJ5IGEgbGlicmFyeSBjYWxsLiAgKnN0cmluZyogcmVwcmVzZW50cyB0aGUgZGVzY3JpcHRpb24gb2YKQEAgLTE0NywxNSArMTcyLDE5IEBACiAgICBudW1lcmljICplcnJvciogdmFsdWUgd2lsbCBtYXRjaCBvbmUgb2YgdGhlIDpjb25zdDpgRUFJX1wqYCBjb25zdGFudHMKICAgIGRlZmluZWQgaW4gdGhpcyBtb2R1bGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGNsYXNzIHdhcyBtYWRlIGEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIC4uIGV4Y2VwdGlvbjo6IHRpbWVvdXQKIAotICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBzb2NrZXQuZXJyb3JgLCB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiBhIHRpbWVvdXQKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAsIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIGEgdGltZW91dAogICAgb2NjdXJzIG9uIGEgc29ja2V0IHdoaWNoIGhhcyBoYWQgdGltZW91dHMgZW5hYmxlZCB2aWEgYSBwcmlvciBjYWxsIHRvCiAgICA6bWV0aDpgfnNvY2tldC5zZXR0aW1lb3V0YCAob3IgaW1wbGljaXRseSB0aHJvdWdoCiAgICA6ZnVuYzpgfnNvY2tldC5zZXRkZWZhdWx0dGltZW91dGApLiAgVGhlIGFjY29tcGFueWluZyB2YWx1ZSBpcyBhIHN0cmluZwogICAgd2hvc2UgdmFsdWUgaXMgY3VycmVudGx5IGFsd2F5cyAidGltZWQgb3V0Ii4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgY2xhc3Mgd2FzIG1hZGUgYSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAogLi4gZGF0YTo6IEFGX1VOSVgKICAgICAgICAgICBBRl9JTkVUCkBAIC0xOTgsNiArMjI3LDcgQEAKICAgICAgICAgICBTT01BWENPTk4KICAgICAgICAgICBNU0dfKgogICAgICAgICAgIFNPTF8qCisgICAgICAgICAgU0NNXyoKICAgICAgICAgICBJUFBST1RPXyoKICAgICAgICAgICBJUFBPUlRfKgogICAgICAgICAgIElOQUREUl8qCkBAIC0yMTUsNiArMjQ1LDMyIEBACiAgICBpbiB0aGUgVW5peCBoZWFkZXIgZmlsZXMgYXJlIGRlZmluZWQ7IGZvciBhIGZldyBzeW1ib2xzLCBkZWZhdWx0IHZhbHVlcyBhcmUKICAgIHByb3ZpZGVkLgogCisuLiBkYXRhOjogQUZfQ0FOCisgICAgICAgICAgUEZfQ0FOCisgICAgICAgICAgU09MX0NBTl8qCisgICAgICAgICAgQ0FOXyoKKworICAgTWFueSBjb25zdGFudHMgb2YgdGhlc2UgZm9ybXMsIGRvY3VtZW50ZWQgaW4gdGhlIExpbnV4IGRvY3VtZW50YXRpb24sIGFyZQorICAgYWxzbyBkZWZpbmVkIGluIHRoZSBzb2NrZXQgbW9kdWxlLgorCisgICBBdmFpbGFiaWxpdHk6IExpbnV4ID49IDIuNi4yNS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IEFGX1JEUworICAgICAgICAgIFBGX1JEUworICAgICAgICAgIFNPTF9SRFMKKyAgICAgICAgICBSRFNfKgorCisgICBNYW55IGNvbnN0YW50cyBvZiB0aGVzZSBmb3JtcywgZG9jdW1lbnRlZCBpbiB0aGUgTGludXggZG9jdW1lbnRhdGlvbiwgYXJlCisgICBhbHNvIGRlZmluZWQgaW4gdGhlIHNvY2tldCBtb2R1bGUuCisKKyAgIEF2YWlsYWJpbGl0eTogTGludXggPj0gMi42LjMwLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBkYXRhOjogU0lPXyoKICAgICAgICAgICBSQ1ZBTExfKgogCkBAIC0zOTMsMTAgKzQ0OSwxNSBAQAogCiAgICBDcmVhdGUgYSBuZXcgc29ja2V0IHVzaW5nIHRoZSBnaXZlbiBhZGRyZXNzIGZhbWlseSwgc29ja2V0IHR5cGUgYW5kIHByb3RvY29sCiAgICBudW1iZXIuICBUaGUgYWRkcmVzcyBmYW1pbHkgc2hvdWxkIGJlIDpjb25zdDpgQUZfSU5FVGAgKHRoZSBkZWZhdWx0KSwKLSAgIDpjb25zdDpgQUZfSU5FVDZgIG9yIDpjb25zdDpgQUZfVU5JWGAuICBUaGUgc29ja2V0IHR5cGUgc2hvdWxkIGJlCi0gICA6Y29uc3Q6YFNPQ0tfU1RSRUFNYCAodGhlIGRlZmF1bHQpLCA6Y29uc3Q6YFNPQ0tfREdSQU1gIG9yIHBlcmhhcHMgb25lIG9mIHRoZQotICAgb3RoZXIgYGBTT0NLX2BgIGNvbnN0YW50cy4gIFRoZSBwcm90b2NvbCBudW1iZXIgaXMgdXN1YWxseSB6ZXJvIGFuZCBtYXkgYmUKLSAgIG9taXR0ZWQgaW4gdGhhdCBjYXNlLgorICAgOmNvbnN0OmBBRl9JTkVUNmAsIDpjb25zdDpgQUZfVU5JWGAsIDpjb25zdDpgQUZfQ0FOYCBvciA6Y29uc3Q6YEFGX1JEU2AuIFRoZQorICAgc29ja2V0IHR5cGUgc2hvdWxkIGJlIDpjb25zdDpgU09DS19TVFJFQU1gICh0aGUgZGVmYXVsdCksCisgICA6Y29uc3Q6YFNPQ0tfREdSQU1gLCA6Y29uc3Q6YFNPQ0tfUkFXYCBvciBwZXJoYXBzIG9uZSBvZiB0aGUgb3RoZXIgYGBTT0NLX2BgCisgICBjb25zdGFudHMuIFRoZSBwcm90b2NvbCBudW1iZXIgaXMgdXN1YWxseSB6ZXJvIGFuZCBtYXkgYmUgb21pdHRlZCBpbiB0aGF0CisgICBjYXNlIG9yIDpjb25zdDpgQ0FOX1JBV2AgaW4gY2FzZSB0aGUgYWRkcmVzcyBmYW1pbHkgaXMgOmNvbnN0OmBBRl9DQU5gLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhlIEFGX0NBTiBmYW1pbHkgd2FzIGFkZGVkLgorICAgICAgVGhlIEFGX1JEUyBmYW1pbHkgd2FzIGFkZGVkLgogCiAKIC4uIGZ1bmN0aW9uOjogc29ja2V0cGFpcihbZmFtaWx5WywgdHlwZVssIHByb3RvXV1dKQpAQCAtNDY0LDcgKzUyNSw3IEBACiAgICBVbml4IG1hbnVhbCBwYWdlIDptYW5wYWdlOmBpbmV0KDMpYCBmb3IgZGV0YWlscy4KIAogICAgSWYgdGhlIElQdjQgYWRkcmVzcyBzdHJpbmcgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gaXMgaW52YWxpZCwKLSAgIDpleGM6YHNvY2tldC5lcnJvcmAgd2lsbCBiZSByYWlzZWQuIE5vdGUgdGhhdCBleGFjdGx5IHdoYXQgaXMgdmFsaWQgZGVwZW5kcyBvbgorICAgOmV4YzpgT1NFcnJvcmAgd2lsbCBiZSByYWlzZWQuIE5vdGUgdGhhdCBleGFjdGx5IHdoYXQgaXMgdmFsaWQgZGVwZW5kcyBvbgogICAgdGhlIHVuZGVybHlpbmcgQyBpbXBsZW1lbnRhdGlvbiBvZiA6YzpmdW5jOmBpbmV0X2F0b25gLgogCiAgICA6ZnVuYzpgaW5ldF9hdG9uYCBkb2VzIG5vdCBzdXBwb3J0IElQdjYsIGFuZCA6ZnVuYzpgaW5ldF9wdG9uYCBzaG91bGQgYmUgdXNlZApAQCAtNDgxLDcgKzU0Miw3IEBACiAgICBhcmd1bWVudC4KIAogICAgSWYgdGhlIGJ5dGUgc2VxdWVuY2UgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gaXMgbm90IGV4YWN0bHkgNCBieXRlcyBpbgotICAgbGVuZ3RoLCA6ZXhjOmBzb2NrZXQuZXJyb3JgIHdpbGwgYmUgcmFpc2VkLiA6ZnVuYzpgaW5ldF9udG9hYCBkb2VzIG5vdAorICAgbGVuZ3RoLCA6ZXhjOmBPU0Vycm9yYCB3aWxsIGJlIHJhaXNlZC4gOmZ1bmM6YGluZXRfbnRvYWAgZG9lcyBub3QKICAgIHN1cHBvcnQgSVB2NiwgYW5kIDpmdW5jOmBpbmV0X250b3BgIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgZm9yIElQdjQvdjYgZHVhbAogICAgc3RhY2sgc3VwcG9ydC4KIApAQCAtNDk1LDcgKzU1Niw3IEBACiAKICAgIFN1cHBvcnRlZCB2YWx1ZXMgZm9yICphZGRyZXNzX2ZhbWlseSogYXJlIGN1cnJlbnRseSA6Y29uc3Q6YEFGX0lORVRgIGFuZAogICAgOmNvbnN0OmBBRl9JTkVUNmAuIElmIHRoZSBJUCBhZGRyZXNzIHN0cmluZyAqaXBfc3RyaW5nKiBpcyBpbnZhbGlkLAotICAgOmV4Yzpgc29ja2V0LmVycm9yYCB3aWxsIGJlIHJhaXNlZC4gTm90ZSB0aGF0IGV4YWN0bHkgd2hhdCBpcyB2YWxpZCBkZXBlbmRzIG9uCisgICA6ZXhjOmBPU0Vycm9yYCB3aWxsIGJlIHJhaXNlZC4gTm90ZSB0aGF0IGV4YWN0bHkgd2hhdCBpcyB2YWxpZCBkZXBlbmRzIG9uCiAgICBib3RoIHRoZSB2YWx1ZSBvZiAqYWRkcmVzc19mYW1pbHkqIGFuZCB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBvZgogICAgOmM6ZnVuYzpgaW5ldF9wdG9uYC4KIApAQCAtNTEzLDExICs1NzQsNTQgQEAKICAgIFN1cHBvcnRlZCB2YWx1ZXMgZm9yICphZGRyZXNzX2ZhbWlseSogYXJlIGN1cnJlbnRseSA6Y29uc3Q6YEFGX0lORVRgIGFuZAogICAgOmNvbnN0OmBBRl9JTkVUNmAuIElmIHRoZSBzdHJpbmcgKnBhY2tlZF9pcCogaXMgbm90IHRoZSBjb3JyZWN0IGxlbmd0aCBmb3IgdGhlCiAgICBzcGVjaWZpZWQgYWRkcmVzcyBmYW1pbHksIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLiAgQQotICAgOmV4Yzpgc29ja2V0LmVycm9yYCBpcyByYWlzZWQgZm9yIGVycm9ycyBmcm9tIHRoZSBjYWxsIHRvIDpmdW5jOmBpbmV0X250b3BgLgorICAgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGZvciBlcnJvcnMgZnJvbSB0aGUgY2FsbCB0byA6ZnVuYzpgaW5ldF9udG9wYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4IChtYXliZSBub3QgYWxsIHBsYXRmb3JtcykuCiAKIAorLi4KKyAgIFhYWDogQXJlIHNlbmRtc2coKSwgcmVjdm1zZygpIGFuZCBDTVNHXyooKSBhdmFpbGFibGUgb24gYW55CisgICBub24tVW5peCBwbGF0Zm9ybXM/ICBUaGUgb2xkIChvYnNvbGV0ZT8pIDQuMkJTRCBmb3JtIG9mIHRoZQorICAgaW50ZXJmYWNlLCBpbiB3aGljaCBzdHJ1Y3QgbXNnaGRyIGhhcyBubyBtc2dfY29udHJvbCBvcgorICAgbXNnX2NvbnRyb2xsZW4gbWVtYmVycywgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuCisKKy4uIGZ1bmN0aW9uOjogQ01TR19MRU4obGVuZ3RoKQorCisgICBSZXR1cm4gdGhlIHRvdGFsIGxlbmd0aCwgd2l0aG91dCB0cmFpbGluZyBwYWRkaW5nLCBvZiBhbiBhbmNpbGxhcnkKKyAgIGRhdGEgaXRlbSB3aXRoIGFzc29jaWF0ZWQgZGF0YSBvZiB0aGUgZ2l2ZW4gKmxlbmd0aCouICBUaGlzIHZhbHVlCisgICBjYW4gb2Z0ZW4gYmUgdXNlZCBhcyB0aGUgYnVmZmVyIHNpemUgZm9yIDptZXRoOmB+c29ja2V0LnJlY3Ztc2dgIHRvCisgICByZWNlaXZlIGEgc2luZ2xlIGl0ZW0gb2YgYW5jaWxsYXJ5IGRhdGEsIGJ1dCA6cmZjOmAzNTQyYCByZXF1aXJlcworICAgcG9ydGFibGUgYXBwbGljYXRpb25zIHRvIHVzZSA6ZnVuYzpgQ01TR19TUEFDRWAgYW5kIHRodXMgaW5jbHVkZQorICAgc3BhY2UgZm9yIHBhZGRpbmcsIGV2ZW4gd2hlbiB0aGUgaXRlbSB3aWxsIGJlIHRoZSBsYXN0IGluIHRoZQorICAgYnVmZmVyLiAgUmFpc2VzIDpleGM6YE92ZXJmbG93RXJyb3JgIGlmICpsZW5ndGgqIGlzIG91dHNpZGUgdGhlCisgICBwZXJtaXNzaWJsZSByYW5nZSBvZiB2YWx1ZXMuCisKKyAgIEF2YWlsYWJpbGl0eTogbW9zdCBVbml4IHBsYXRmb3JtcywgcG9zc2libHkgb3RoZXJzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IENNU0dfU1BBQ0UobGVuZ3RoKQorCisgICBSZXR1cm4gdGhlIGJ1ZmZlciBzaXplIG5lZWRlZCBmb3IgOm1ldGg6YH5zb2NrZXQucmVjdm1zZ2AgdG8KKyAgIHJlY2VpdmUgYW4gYW5jaWxsYXJ5IGRhdGEgaXRlbSB3aXRoIGFzc29jaWF0ZWQgZGF0YSBvZiB0aGUgZ2l2ZW4KKyAgICpsZW5ndGgqLCBhbG9uZyB3aXRoIGFueSB0cmFpbGluZyBwYWRkaW5nLiAgVGhlIGJ1ZmZlciBzcGFjZSBuZWVkZWQKKyAgIHRvIHJlY2VpdmUgbXVsdGlwbGUgaXRlbXMgaXMgdGhlIHN1bSBvZiB0aGUgOmZ1bmM6YENNU0dfU1BBQ0VgCisgICB2YWx1ZXMgZm9yIHRoZWlyIGFzc29jaWF0ZWQgZGF0YSBsZW5ndGhzLiAgUmFpc2VzCisgICA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBpZiAqbGVuZ3RoKiBpcyBvdXRzaWRlIHRoZSBwZXJtaXNzaWJsZSByYW5nZQorICAgb2YgdmFsdWVzLgorCisgICBOb3RlIHRoYXQgc29tZSBzeXN0ZW1zIG1pZ2h0IHN1cHBvcnQgYW5jaWxsYXJ5IGRhdGEgd2l0aG91dAorICAgcHJvdmlkaW5nIHRoaXMgZnVuY3Rpb24uICBBbHNvIG5vdGUgdGhhdCBzZXR0aW5nIHRoZSBidWZmZXIgc2l6ZQorICAgdXNpbmcgdGhlIHJlc3VsdHMgb2YgdGhpcyBmdW5jdGlvbiBtYXkgbm90IHByZWNpc2VseSBsaW1pdCB0aGUKKyAgIGFtb3VudCBvZiBhbmNpbGxhcnkgZGF0YSB0aGF0IGNhbiBiZSByZWNlaXZlZCwgc2luY2UgYWRkaXRpb25hbAorICAgZGF0YSBtYXkgYmUgYWJsZSB0byBmaXQgaW50byB0aGUgcGFkZGluZyBhcmVhLgorCisgICBBdmFpbGFiaWxpdHk6IG1vc3QgVW5peCBwbGF0Zm9ybXMsIHBvc3NpYmx5IG90aGVycy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiBnZXRkZWZhdWx0dGltZW91dCgpCiAKICAgIFJldHVybiB0aGUgZGVmYXVsdCB0aW1lb3V0IGluIHNlY29uZHMgKGZsb2F0KSBmb3IgbmV3IHNvY2tldCBvYmplY3RzLiBBIHZhbHVlCkBAIC01MzMsNiArNjM3LDU5IEBACiAgICBtZWFuaW5ncy4KIAogCisuLiBmdW5jdGlvbjo6IHNldGhvc3RuYW1lKG5hbWUpCisKKyAgIFNldCB0aGUgbWFjaGluZSdzIGhvc3RuYW1lIHRvICpuYW1lKi4gIFRoaXMgd2lsbCByYWlzZSBhCisgICA6ZXhjOmBPU0Vycm9yYCBpZiB5b3UgZG9uJ3QgaGF2ZSBlbm91Z2ggcmlnaHRzLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogaWZfbmFtZWluZGV4KCkKKworICAgUmV0dXJuIGEgbGlzdCBvZiBuZXR3b3JrIGludGVyZmFjZSBpbmZvcm1hdGlvbgorICAgKGluZGV4IGludCwgbmFtZSBzdHJpbmcpIHR1cGxlcy4KKyAgIDpleGM6YE9TRXJyb3JgIGlmIHRoZSBzeXN0ZW0gY2FsbCBmYWlscy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IGlmX25hbWV0b2luZGV4KGlmX25hbWUpCisKKyAgIFJldHVybiBhIG5ldHdvcmsgaW50ZXJmYWNlIGluZGV4IG51bWJlciBjb3JyZXNwb25kaW5nIHRvIGFuCisgICBpbnRlcmZhY2UgbmFtZS4KKyAgIDpleGM6YE9TRXJyb3JgIGlmIG5vIGludGVyZmFjZSB3aXRoIHRoZSBnaXZlbiBuYW1lIGV4aXN0cy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IGlmX2luZGV4dG9uYW1lKGlmX2luZGV4KQorCisgICBSZXR1cm4gYSBuZXR3b3JrIGludGVyZmFjZSBuYW1lIGNvcnJlc3BvbmRpbmcgdG8gYQorICAgaW50ZXJmYWNlIGluZGV4IG51bWJlci4KKyAgIDpleGM6YE9TRXJyb3JgIGlmIG5vIGludGVyZmFjZSB3aXRoIHRoZSBnaXZlbiBpbmRleCBleGlzdHMuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBmcm9tc2hhcmUoZGF0YSkKKworICAgSW5zdGFudGlhdGUgYSBzb2NrZXQgZnJvbSBkYXRhIG9idGFpbmVkIGZyb20gOm1ldGg6YH5zb2NrZXQuc2hhcmVgLgorICAgVGhlIHNvY2tldCBpcyBhc3N1bWVkIHRvIGJlIGluIGJsb2NraW5nIG1vZGUuCisKKyAgIEF2YWlsYWJpbGl0eTogV2luZG93cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZGF0YTo6IFNvY2tldFR5cGUKIAogICAgVGhpcyBpcyBhIFB5dGhvbiB0eXBlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIHNvY2tldCBvYmplY3QgdHlwZS4gSXQgaXMgdGhlCkBAIC03MDYsNiArODYzLDEwOSBAQAogICAgdG8gemVyby4gKFRoZSBmb3JtYXQgb2YgKmFkZHJlc3MqIGRlcGVuZHMgb24gdGhlIGFkZHJlc3MgZmFtaWx5IC0tLSBzZWUgYWJvdmUuKQogCiAKKy4uIG1ldGhvZDo6IHNvY2tldC5yZWN2bXNnKGJ1ZnNpemVbLCBhbmNidWZzaXplWywgZmxhZ3NdXSkKKworICAgUmVjZWl2ZSBub3JtYWwgZGF0YSAodXAgdG8gKmJ1ZnNpemUqIGJ5dGVzKSBhbmQgYW5jaWxsYXJ5IGRhdGEgZnJvbQorICAgdGhlIHNvY2tldC4gIFRoZSAqYW5jYnVmc2l6ZSogYXJndW1lbnQgc2V0cyB0aGUgc2l6ZSBpbiBieXRlcyBvZgorICAgdGhlIGludGVybmFsIGJ1ZmZlciB1c2VkIHRvIHJlY2VpdmUgdGhlIGFuY2lsbGFyeSBkYXRhOyBpdCBkZWZhdWx0cworICAgdG8gMCwgbWVhbmluZyB0aGF0IG5vIGFuY2lsbGFyeSBkYXRhIHdpbGwgYmUgcmVjZWl2ZWQuICBBcHByb3ByaWF0ZQorICAgYnVmZmVyIHNpemVzIGZvciBhbmNpbGxhcnkgZGF0YSBjYW4gYmUgY2FsY3VsYXRlZCB1c2luZworICAgOmZ1bmM6YENNU0dfU1BBQ0VgIG9yIDpmdW5jOmBDTVNHX0xFTmAsIGFuZCBpdGVtcyB3aGljaCBkbyBub3QgZml0CisgICBpbnRvIHRoZSBidWZmZXIgbWlnaHQgYmUgdHJ1bmNhdGVkIG9yIGRpc2NhcmRlZC4gIFRoZSAqZmxhZ3MqCisgICBhcmd1bWVudCBkZWZhdWx0cyB0byAwIGFuZCBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IKKyAgIDptZXRoOmByZWN2YC4KKworICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIDQtdHVwbGU6IGBgKGRhdGEsIGFuY2RhdGEsIG1zZ19mbGFncywKKyAgIGFkZHJlc3MpYGAuICBUaGUgKmRhdGEqIGl0ZW0gaXMgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgaG9sZGluZyB0aGUKKyAgIG5vbi1hbmNpbGxhcnkgZGF0YSByZWNlaXZlZC4gIFRoZSAqYW5jZGF0YSogaXRlbSBpcyBhIGxpc3Qgb2YgemVybworICAgb3IgbW9yZSB0dXBsZXMgYGAoY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEpYGAgcmVwcmVzZW50aW5nCisgICB0aGUgYW5jaWxsYXJ5IGRhdGEgKGNvbnRyb2wgbWVzc2FnZXMpIHJlY2VpdmVkOiAqY21zZ19sZXZlbCogYW5kCisgICAqY21zZ190eXBlKiBhcmUgaW50ZWdlcnMgc3BlY2lmeWluZyB0aGUgcHJvdG9jb2wgbGV2ZWwgYW5kCisgICBwcm90b2NvbC1zcGVjaWZpYyB0eXBlIHJlc3BlY3RpdmVseSwgYW5kICpjbXNnX2RhdGEqIGlzIGEKKyAgIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBob2xkaW5nIHRoZSBhc3NvY2lhdGVkIGRhdGEuICBUaGUgKm1zZ19mbGFncyoKKyAgIGl0ZW0gaXMgdGhlIGJpdHdpc2UgT1Igb2YgdmFyaW91cyBmbGFncyBpbmRpY2F0aW5nIGNvbmRpdGlvbnMgb24KKyAgIHRoZSByZWNlaXZlZCBtZXNzYWdlOyBzZWUgeW91ciBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KKyAgIElmIHRoZSByZWNlaXZpbmcgc29ja2V0IGlzIHVuY29ubmVjdGVkLCAqYWRkcmVzcyogaXMgdGhlIGFkZHJlc3Mgb2YKKyAgIHRoZSBzZW5kaW5nIHNvY2tldCwgaWYgYXZhaWxhYmxlOyBvdGhlcndpc2UsIGl0cyB2YWx1ZSBpcworICAgdW5zcGVjaWZpZWQuCisKKyAgIE9uIHNvbWUgc3lzdGVtcywgOm1ldGg6YHNlbmRtc2dgIGFuZCA6bWV0aDpgcmVjdm1zZ2AgY2FuIGJlIHVzZWQgdG8KKyAgIHBhc3MgZmlsZSBkZXNjcmlwdG9ycyBiZXR3ZWVuIHByb2Nlc3NlcyBvdmVyIGFuIDpjb25zdDpgQUZfVU5JWGAKKyAgIHNvY2tldC4gIFdoZW4gdGhpcyBmYWNpbGl0eSBpcyB1c2VkIChpdCBpcyBvZnRlbiByZXN0cmljdGVkIHRvCisgICA6Y29uc3Q6YFNPQ0tfU1RSRUFNYCBzb2NrZXRzKSwgOm1ldGg6YHJlY3Ztc2dgIHdpbGwgcmV0dXJuLCBpbiBpdHMKKyAgIGFuY2lsbGFyeSBkYXRhLCBpdGVtcyBvZiB0aGUgZm9ybSBgYChzb2NrZXQuU09MX1NPQ0tFVCwKKyAgIHNvY2tldC5TQ01fUklHSFRTLCBmZHMpYGAsIHdoZXJlICpmZHMqIGlzIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0CisgICByZXByZXNlbnRpbmcgdGhlIG5ldyBmaWxlIGRlc2NyaXB0b3JzIGFzIGEgYmluYXJ5IGFycmF5IG9mIHRoZQorICAgbmF0aXZlIEMgOmM6dHlwZTpgaW50YCB0eXBlLiAgSWYgOm1ldGg6YHJlY3Ztc2dgIHJhaXNlcyBhbgorICAgZXhjZXB0aW9uIGFmdGVyIHRoZSBzeXN0ZW0gY2FsbCByZXR1cm5zLCBpdCB3aWxsIGZpcnN0IGF0dGVtcHQgdG8KKyAgIGNsb3NlIGFueSBmaWxlIGRlc2NyaXB0b3JzIHJlY2VpdmVkIHZpYSB0aGlzIG1lY2hhbmlzbS4KKworICAgU29tZSBzeXN0ZW1zIGRvIG5vdCBpbmRpY2F0ZSB0aGUgdHJ1bmNhdGVkIGxlbmd0aCBvZiBhbmNpbGxhcnkgZGF0YQorICAgaXRlbXMgd2hpY2ggaGF2ZSBiZWVuIG9ubHkgcGFydGlhbGx5IHJlY2VpdmVkLiAgSWYgYW4gaXRlbSBhcHBlYXJzCisgICB0byBleHRlbmQgYmV5b25kIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciwgOm1ldGg6YHJlY3Ztc2dgIHdpbGwgaXNzdWUKKyAgIGEgOmV4YzpgUnVudGltZVdhcm5pbmdgLCBhbmQgd2lsbCByZXR1cm4gdGhlIHBhcnQgb2YgaXQgd2hpY2ggaXMKKyAgIGluc2lkZSB0aGUgYnVmZmVyIHByb3ZpZGVkIGl0IGhhcyBub3QgYmVlbiB0cnVuY2F0ZWQgYmVmb3JlIHRoZQorICAgc3RhcnQgb2YgaXRzIGFzc29jaWF0ZWQgZGF0YS4KKworICAgT24gc3lzdGVtcyB3aGljaCBzdXBwb3J0IHRoZSA6Y29uc3Q6YFNDTV9SSUdIVFNgIG1lY2hhbmlzbSwgdGhlCisgICBmb2xsb3dpbmcgZnVuY3Rpb24gd2lsbCByZWNlaXZlIHVwIHRvICptYXhmZHMqIGZpbGUgZGVzY3JpcHRvcnMsCisgICByZXR1cm5pbmcgdGhlIG1lc3NhZ2UgZGF0YSBhbmQgYSBsaXN0IGNvbnRhaW5pbmcgdGhlIGRlc2NyaXB0b3JzCisgICAod2hpbGUgaWdub3JpbmcgdW5leHBlY3RlZCBjb25kaXRpb25zIHN1Y2ggYXMgdW5yZWxhdGVkIGNvbnRyb2wKKyAgIG1lc3NhZ2VzIGJlaW5nIHJlY2VpdmVkKS4gIFNlZSBhbHNvIDptZXRoOmBzZW5kbXNnYC4gOjoKKworICAgICAgaW1wb3J0IHNvY2tldCwgYXJyYXkKKworICAgICAgZGVmIHJlY3ZfZmRzKHNvY2ssIG1zZ2xlbiwgbWF4ZmRzKToKKyAgICAgICAgICBmZHMgPSBhcnJheS5hcnJheSgiaSIpICAgIyBBcnJheSBvZiBpbnRzCisgICAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNvY2sucmVjdm1zZyhtc2dsZW4sIHNvY2tldC5DTVNHX0xFTihtYXhmZHMgKiBmZHMuaXRlbXNpemUpKQorICAgICAgICAgIGZvciBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSBpbiBhbmNkYXRhOgorICAgICAgICAgICAgICBpZiAoY21zZ19sZXZlbCA9PSBzb2NrZXQuU09MX1NPQ0tFVCBhbmQgY21zZ190eXBlID09IHNvY2tldC5TQ01fUklHSFRTKToKKyAgICAgICAgICAgICAgICAgICMgQXBwZW5kIGRhdGEsIGlnbm9yaW5nIGFueSB0cnVuY2F0ZWQgaW50ZWdlcnMgYXQgdGhlIGVuZC4KKyAgICAgICAgICAgICAgICAgIGZkcy5mcm9tc3RyaW5nKGNtc2dfZGF0YVs6bGVuKGNtc2dfZGF0YSkgLSAobGVuKGNtc2dfZGF0YSkgJSBmZHMuaXRlbXNpemUpXSkKKyAgICAgICAgICByZXR1cm4gbXNnLCBsaXN0KGZkcykKKworICAgQXZhaWxhYmlsaXR5OiBtb3N0IFVuaXggcGxhdGZvcm1zLCBwb3NzaWJseSBvdGhlcnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIG1ldGhvZDo6IHNvY2tldC5yZWN2bXNnX2ludG8oYnVmZmVyc1ssIGFuY2J1ZnNpemVbLCBmbGFnc11dKQorCisgICBSZWNlaXZlIG5vcm1hbCBkYXRhIGFuZCBhbmNpbGxhcnkgZGF0YSBmcm9tIHRoZSBzb2NrZXQsIGJlaGF2aW5nIGFzCisgICA6bWV0aDpgcmVjdm1zZ2Agd291bGQsIGJ1dCBzY2F0dGVyIHRoZSBub24tYW5jaWxsYXJ5IGRhdGEgaW50byBhCisgICBzZXJpZXMgb2YgYnVmZmVycyBpbnN0ZWFkIG9mIHJldHVybmluZyBhIG5ldyBieXRlcyBvYmplY3QuICBUaGUKKyAgICpidWZmZXJzKiBhcmd1bWVudCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mIG9iamVjdHMgdGhhdCBleHBvcnQKKyAgIHdyaXRhYmxlIGJ1ZmZlcnMgKGUuZy4gOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdHMpOyB0aGVzZSB3aWxsIGJlCisgICBmaWxsZWQgd2l0aCBzdWNjZXNzaXZlIGNodW5rcyBvZiB0aGUgbm9uLWFuY2lsbGFyeSBkYXRhIHVudGlsIGl0CisgICBoYXMgYWxsIGJlZW4gd3JpdHRlbiBvciB0aGVyZSBhcmUgbm8gbW9yZSBidWZmZXJzLiAgVGhlIG9wZXJhdGluZworICAgc3lzdGVtIG1heSBzZXQgYSBsaW1pdCAoOmZ1bmM6YH5vcy5zeXNjb25mYCB2YWx1ZSBgYFNDX0lPVl9NQVhgYCkKKyAgIG9uIHRoZSBudW1iZXIgb2YgYnVmZmVycyB0aGF0IGNhbiBiZSB1c2VkLiAgVGhlICphbmNidWZzaXplKiBhbmQKKyAgICpmbGFncyogYXJndW1lbnRzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IgOm1ldGg6YHJlY3Ztc2dgLgorCisgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgNC10dXBsZTogYGAobmJ5dGVzLCBhbmNkYXRhLCBtc2dfZmxhZ3MsCisgICBhZGRyZXNzKWBgLCB3aGVyZSAqbmJ5dGVzKiBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIG9mCisgICBub24tYW5jaWxsYXJ5IGRhdGEgd3JpdHRlbiBpbnRvIHRoZSBidWZmZXJzLCBhbmQgKmFuY2RhdGEqLAorICAgKm1zZ19mbGFncyogYW5kICphZGRyZXNzKiBhcmUgdGhlIHNhbWUgYXMgZm9yIDptZXRoOmByZWN2bXNnYC4KKworICAgRXhhbXBsZTo6CisKKyAgICAgID4+PiBpbXBvcnQgc29ja2V0CisgICAgICA+Pj4gczEsIHMyID0gc29ja2V0LnNvY2tldHBhaXIoKQorICAgICAgPj4+IGIxID0gYnl0ZWFycmF5KGInLS0tLScpCisgICAgICA+Pj4gYjIgPSBieXRlYXJyYXkoYicwMTIzNDU2Nzg5JykKKyAgICAgID4+PiBiMyA9IGJ5dGVhcnJheShiJy0tLS0tLS0tLS0tLS0tJykKKyAgICAgID4+PiBzMS5zZW5kKGInTWFyeSBoYWQgYSBsaXR0bGUgbGFtYicpCisgICAgICAyMgorICAgICAgPj4+IHMyLnJlY3Ztc2dfaW50byhbYjEsIG1lbW9yeXZpZXcoYjIpWzI6OV0sIGIzXSkKKyAgICAgICgyMiwgW10sIDAsIE5vbmUpCisgICAgICA+Pj4gW2IxLCBiMiwgYjNdCisgICAgICBbYnl0ZWFycmF5KGInTWFyeScpLCBieXRlYXJyYXkoYicwMSBoYWQgYSA5JyksIGJ5dGVhcnJheShiJ2xpdHRsZSBsYW1iLS0tJyldCisKKyAgIEF2YWlsYWJpbGl0eTogbW9zdCBVbml4IHBsYXRmb3JtcywgcG9zc2libHkgb3RoZXJzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBtZXRob2Q6OiBzb2NrZXQucmVjdmZyb21faW50byhidWZmZXJbLCBuYnl0ZXNbLCBmbGFnc11dKQogCiAgICBSZWNlaXZlIGRhdGEgZnJvbSB0aGUgc29ja2V0LCB3cml0aW5nIGl0IGludG8gKmJ1ZmZlciogaW5zdGVhZCBvZiBjcmVhdGluZyBhCkBAIC03NTUsNiArMTAxNSw0MSBAQAogICAgYWJvdmUuKQogCiAKKy4uIG1ldGhvZDo6IHNvY2tldC5zZW5kbXNnKGJ1ZmZlcnNbLCBhbmNkYXRhWywgZmxhZ3NbLCBhZGRyZXNzXV1dKQorCisgICBTZW5kIG5vcm1hbCBhbmQgYW5jaWxsYXJ5IGRhdGEgdG8gdGhlIHNvY2tldCwgZ2F0aGVyaW5nIHRoZQorICAgbm9uLWFuY2lsbGFyeSBkYXRhIGZyb20gYSBzZXJpZXMgb2YgYnVmZmVycyBhbmQgY29uY2F0ZW5hdGluZyBpdAorICAgaW50byBhIHNpbmdsZSBtZXNzYWdlLiAgVGhlICpidWZmZXJzKiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlCisgICBub24tYW5jaWxsYXJ5IGRhdGEgYXMgYW4gaXRlcmFibGUgb2YgYnVmZmVyLWNvbXBhdGlibGUgb2JqZWN0cworICAgKGUuZy4gOmNsYXNzOmBieXRlc2Agb2JqZWN0cyk7IHRoZSBvcGVyYXRpbmcgc3lzdGVtIG1heSBzZXQgYSBsaW1pdAorICAgKDpmdW5jOmB+b3Muc3lzY29uZmAgdmFsdWUgYGBTQ19JT1ZfTUFYYGApIG9uIHRoZSBudW1iZXIgb2YgYnVmZmVycworICAgdGhhdCBjYW4gYmUgdXNlZC4gIFRoZSAqYW5jZGF0YSogYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBhbmNpbGxhcnkKKyAgIGRhdGEgKGNvbnRyb2wgbWVzc2FnZXMpIGFzIGFuIGl0ZXJhYmxlIG9mIHplcm8gb3IgbW9yZSB0dXBsZXMKKyAgIGBgKGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhKWBgLCB3aGVyZSAqY21zZ19sZXZlbCogYW5kCisgICAqY21zZ190eXBlKiBhcmUgaW50ZWdlcnMgc3BlY2lmeWluZyB0aGUgcHJvdG9jb2wgbGV2ZWwgYW5kCisgICBwcm90b2NvbC1zcGVjaWZpYyB0eXBlIHJlc3BlY3RpdmVseSwgYW5kICpjbXNnX2RhdGEqIGlzIGEKKyAgIGJ1ZmZlci1jb21wYXRpYmxlIG9iamVjdCBob2xkaW5nIHRoZSBhc3NvY2lhdGVkIGRhdGEuICBOb3RlIHRoYXQKKyAgIHNvbWUgc3lzdGVtcyAoaW4gcGFydGljdWxhciwgc3lzdGVtcyB3aXRob3V0IDpmdW5jOmBDTVNHX1NQQUNFYCkKKyAgIG1pZ2h0IHN1cHBvcnQgc2VuZGluZyBvbmx5IG9uZSBjb250cm9sIG1lc3NhZ2UgcGVyIGNhbGwuICBUaGUKKyAgICpmbGFncyogYXJndW1lbnQgZGVmYXVsdHMgdG8gMCBhbmQgaGFzIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yCisgICA6bWV0aDpgc2VuZGAuICBJZiAqYWRkcmVzcyogaXMgc3VwcGxpZWQgYW5kIG5vdCBgYE5vbmVgYCwgaXQgc2V0cyBhCisgICBkZXN0aW5hdGlvbiBhZGRyZXNzIGZvciB0aGUgbWVzc2FnZS4gIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlCisgICBudW1iZXIgb2YgYnl0ZXMgb2Ygbm9uLWFuY2lsbGFyeSBkYXRhIHNlbnQuCisKKyAgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gc2VuZHMgdGhlIGxpc3Qgb2YgZmlsZSBkZXNjcmlwdG9ycyAqZmRzKgorICAgb3ZlciBhbiA6Y29uc3Q6YEFGX1VOSVhgIHNvY2tldCwgb24gc3lzdGVtcyB3aGljaCBzdXBwb3J0IHRoZQorICAgOmNvbnN0OmBTQ01fUklHSFRTYCBtZWNoYW5pc20uICBTZWUgYWxzbyA6bWV0aDpgcmVjdm1zZ2AuIDo6CisKKyAgICAgIGltcG9ydCBzb2NrZXQsIGFycmF5CisKKyAgICAgIGRlZiBzZW5kX2Zkcyhzb2NrLCBtc2csIGZkcyk6CisgICAgICAgICAgcmV0dXJuIHNvY2suc2VuZG1zZyhbbXNnXSwgWyhzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNDTV9SSUdIVFMsIGFycmF5LmFycmF5KCJpIiwgZmRzKSldKQorCisgICBBdmFpbGFiaWxpdHk6IG1vc3QgVW5peCBwbGF0Zm9ybXMsIHBvc3NpYmx5IG90aGVycy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gbWV0aG9kOjogc29ja2V0LnNldGJsb2NraW5nKGZsYWcpCiAKICAgIFNldCBibG9ja2luZyBvciBub24tYmxvY2tpbmcgbW9kZSBvZiB0aGUgc29ja2V0OiBpZiAqZmxhZyogaXMgZmFsc2UsIHRoZQpAQCAtNzk2LDkgKzEwOTEsMjIgQEAKICAgIFNodXQgZG93biBvbmUgb3IgYm90aCBoYWx2ZXMgb2YgdGhlIGNvbm5lY3Rpb24uICBJZiAqaG93KiBpcyA6Y29uc3Q6YFNIVVRfUkRgLAogICAgZnVydGhlciByZWNlaXZlcyBhcmUgZGlzYWxsb3dlZC4gIElmICpob3cqIGlzIDpjb25zdDpgU0hVVF9XUmAsIGZ1cnRoZXIgc2VuZHMKICAgIGFyZSBkaXNhbGxvd2VkLiAgSWYgKmhvdyogaXMgOmNvbnN0OmBTSFVUX1JEV1JgLCBmdXJ0aGVyIHNlbmRzIGFuZCByZWNlaXZlcyBhcmUKLSAgIGRpc2FsbG93ZWQuICBEZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLCBzaHV0dGluZyBkb3duIG9uZSBoYWxmIG9mIHRoZSBjb25uZWN0aW9uCi0gICBjYW4gYWxzbyBjbG9zZSB0aGUgb3Bwb3NpdGUgaGFsZiAoZS5nLiBvbiBNYWMgT1MgWCwgYGBzaHV0ZG93bihTSFVUX1dSKWBgIGRvZXMKLSAgIG5vdCBhbGxvdyBmdXJ0aGVyIHJlYWRzIG9uIHRoZSBvdGhlciBlbmQgb2YgdGhlIGNvbm5lY3Rpb24pLgorICAgZGlzYWxsb3dlZC4KKworCisuLiBtZXRob2Q6OiBzb2NrZXQuc2hhcmUocHJvY2Vzc19pZCkKKworICAgIDpwbGF0Zm9ybTogV2luZG93cworCisgICAgRHVwbGFjZXQgYSBzb2NrZXQgYW5kIHByZXBhcmUgaXQgZm9yIHNoYXJpbmcgd2l0aCBhIHRhcmdldCBwcm9jZXNzLiAgVGhlCisgICAgdGFyZ2V0IHByb2Nlc3MgbXVzdCBiZSBwcm92aWRlZCB3aXRoICpwcm9jZXNzX2lkKi4gIFRoZSByZXN1bHRpbmcgYnl0ZXMgb2JqZWN0CisgICAgY2FuIHRoZW4gYmUgcGFzc2VkIHRvIHRoZSB0YXJnZXQgcHJvY2VzcyB1c2luZyBzb21lIGZvcm0gb2YgaW50ZXJwcm9jZXNzCisgICAgY29tbXVuaWNhdGlvbiBhbmQgdGhlIHNvY2tldCBjYW4gYmUgcmVjcmVhdGVkIHRoZXJlIHVzaW5nIDpmdW5jOmBmcm9tc2hhcmVgLgorICAgIE9uY2UgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLCBpdCBpcyBzYWZlIHRvIGNsb3NlIHRoZSBzb2NrZXQgc2luY2UKKyAgICB0aGUgb3BlcmF0aW5nIHN5c3RlbSBoYXMgYWxyZWFkeSBkdXBsaWNhdGVkIGl0IGZvciB0aGUgdGFyZ2V0IHByb2Nlc3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gbWV0aG9kcyA6bWV0aDpgcmVhZGAgb3IgOm1ldGg6YHdyaXRlYDsgdXNlCiA6bWV0aDpgfnNvY2tldC5yZWN2YCBhbmQgOm1ldGg6YH5zb2NrZXQuc2VuZGAgd2l0aG91dCAqZmxhZ3MqIGFyZ3VtZW50IGluc3RlYWQuCkBAIC05NDMsMTMgKzEyNTEsMTMgQEAKICAgICAgICBhZiwgc29ja3R5cGUsIHByb3RvLCBjYW5vbm5hbWUsIHNhID0gcmVzCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChhZiwgc29ja3R5cGUsIHByb3RvKQotICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgbXNnOgorICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKICAgICAgICAgICAgcyA9IE5vbmUKICAgICAgICAgICAgY29udGludWUKICAgICAgICB0cnk6CiAgICAgICAgICAgIHMuYmluZChzYSkKICAgICAgICAgICAgcy5saXN0ZW4oMSkKLSAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIG1zZzoKKyAgICAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgICAgIHMuY2xvc2UoKQogICAgICAgICAgICBzID0gTm9uZQogICAgICAgICAgICBjb250aW51ZQpAQCAtOTc4LDEyICsxMjg2LDEyIEBACiAgICAgICAgYWYsIHNvY2t0eXBlLCBwcm90bywgY2Fub25uYW1lLCBzYSA9IHJlcwogICAgICAgIHRyeToKICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoYWYsIHNvY2t0eXBlLCBwcm90bykKLSAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIG1zZzoKKyAgICAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgICAgIHMgPSBOb25lCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzLmNvbm5lY3Qoc2EpCi0gICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBtc2c6CisgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgogICAgICAgICAgICBzLmNsb3NlKCkKICAgICAgICAgICAgcyA9IE5vbmUKICAgICAgICAgICAgY29udGludWUKQEAgLTk5Nyw3ICsxMzA1LDcgQEAKICAgIHByaW50KCdSZWNlaXZlZCcsIHJlcHIoZGF0YSkpCiAKIAotVGhlIGxhc3QgZXhhbXBsZSBzaG93cyBob3cgdG8gd3JpdGUgYSB2ZXJ5IHNpbXBsZSBuZXR3b3JrIHNuaWZmZXIgd2l0aCByYXcKK1RoZSBuZXh0IGV4YW1wbGUgc2hvd3MgaG93IHRvIHdyaXRlIGEgdmVyeSBzaW1wbGUgbmV0d29yayBzbmlmZmVyIHdpdGggcmF3CiBzb2NrZXRzIG9uIFdpbmRvd3MuIFRoZSBleGFtcGxlIHJlcXVpcmVzIGFkbWluaXN0cmF0b3IgcHJpdmlsZWdlcyB0byBtb2RpZnkKIHRoZSBpbnRlcmZhY2U6OgogCkBAIC0xMDIyLDExICsxMzMwLDUxIEBACiAgICAjIGRpc2FibGVkIHByb21pc2N1b3VzIG1vZGUKICAgIHMuaW9jdGwoc29ja2V0LlNJT19SQ1ZBTEwsIHNvY2tldC5SQ1ZBTExfT0ZGKQogCitUaGUgbGFzdCBleGFtcGxlIHNob3dzIGhvdyB0byB1c2UgdGhlIHNvY2tldCBpbnRlcmZhY2UgdG8gY29tbXVuaWNhdGUgdG8gYSBDQU4KK25ldHdvcmsuIFRoaXMgZXhhbXBsZSBtaWdodCByZXF1aXJlIHNwZWNpYWwgcHJpdmlsZWRnZTo6CisKKyAgIGltcG9ydCBzb2NrZXQKKyAgIGltcG9ydCBzdHJ1Y3QKKworCisgICAjIENBTiBmcmFtZSBwYWNraW5nL3VucGFja2luZyAoc2VlICdzdHJ1Y3QgY2FuX2ZyYW1lJyBpbiA8bGludXgvY2FuLmg+KQorCisgICBjYW5fZnJhbWVfZm10ID0gIj1JQjN4OHMiCisgICBjYW5fZnJhbWVfc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShjYW5fZnJhbWVfZm10KQorCisgICBkZWYgYnVpbGRfY2FuX2ZyYW1lKGNhbl9pZCwgZGF0YSk6CisgICAgICAgY2FuX2RsYyA9IGxlbihkYXRhKQorICAgICAgIGRhdGEgPSBkYXRhLmxqdXN0KDgsIGInXHgwMCcpCisgICAgICAgcmV0dXJuIHN0cnVjdC5wYWNrKGNhbl9mcmFtZV9mbXQsIGNhbl9pZCwgY2FuX2RsYywgZGF0YSkKKworICAgZGVmIGRpc3NlY3RfY2FuX2ZyYW1lKGZyYW1lKToKKyAgICAgICBjYW5faWQsIGNhbl9kbGMsIGRhdGEgPSBzdHJ1Y3QudW5wYWNrKGNhbl9mcmFtZV9mbXQsIGZyYW1lKQorICAgICAgIHJldHVybiAoY2FuX2lkLCBjYW5fZGxjLCBkYXRhWzpjYW5fZGxjXSkKKworCisgICAjIGNyZWF0ZSBhIHJhdyBzb2NrZXQgYW5kIGJpbmQgaXQgdG8gdGhlICd2Y2FuMCcgaW50ZXJmYWNlCisgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKQorICAgcy5iaW5kKCgndmNhbjAnLCkpCisKKyAgIHdoaWxlIFRydWU6CisgICAgICAgY2YsIGFkZHIgPSBzLnJlY3Zmcm9tKGNhbl9mcmFtZV9zaXplKQorCisgICAgICAgcHJpbnQoJ1JlY2VpdmVkOiBjYW5faWQ9JXgsIGNhbl9kbGM9JXgsIGRhdGE9JXMnICUgZGlzc2VjdF9jYW5fZnJhbWUoY2YpKQorCisgICAgICAgdHJ5OgorICAgICAgICAgICBzLnNlbmQoY2YpCisgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgIHByaW50KCdFcnJvciBzZW5kaW5nIENBTiBmcmFtZScpCisKKyAgICAgICB0cnk6CisgICAgICAgICAgIHMuc2VuZChidWlsZF9jYW5fZnJhbWUoMHgwMSwgYidceDAxXHgwMlx4MDMnKSkKKyAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgcHJpbnQoJ0Vycm9yIHNlbmRpbmcgQ0FOIGZyYW1lJykKIAogUnVubmluZyBhbiBleGFtcGxlIHNldmVyYWwgdGltZXMgd2l0aCB0b28gc21hbGwgZGVsYXkgYmV0d2VlbiBleGVjdXRpb25zLCBjb3VsZAogbGVhZCB0byB0aGlzIGVycm9yOjoKIAotICAgc29ja2V0LmVycm9yOiBbRXJybm8gOThdIEFkZHJlc3MgYWxyZWFkeSBpbiB1c2UKKyAgIE9TRXJyb3I6IFtFcnJubyA5OF0gQWRkcmVzcyBhbHJlYWR5IGluIHVzZQogCiBUaGlzIGlzIGJlY2F1c2UgdGhlIHByZXZpb3VzIGV4ZWN1dGlvbiBoYXMgbGVmdCB0aGUgc29ja2V0IGluIGEgYGBUSU1FX1dBSVRgYAogc3RhdGUsIGFuZCBjYW4ndCBiZSBpbW1lZGlhdGVseSByZXVzZWQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0IGIvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdAppbmRleCA0ZjIyMzQ3Li5lN2Y2NjhjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QKQEAgLTE1MywxMCArMTUzLDI0IEBACiAKIC4uIG1ldGhvZDo6IEJhc2VTZXJ2ZXIuc2VydmVfZm9yZXZlcihwb2xsX2ludGVydmFsPTAuNSkKIAotICAgSGFuZGxlIHJlcXVlc3RzIHVudGlsIGFuIGV4cGxpY2l0IDptZXRoOmBzaHV0ZG93bmAgcmVxdWVzdC4KLSAgIFBvbGwgZm9yIHNodXRkb3duIGV2ZXJ5ICpwb2xsX2ludGVydmFsKiBzZWNvbmRzLiBJZ25vcmVzIDphdHRyOmBzZWxmLnRpbWVvdXRgLgotICAgSWYgeW91IG5lZWQgdG8gZG8gcGVyaW9kaWMgdGFza3MsIGRvIHRoZW0gaW4gYW5vdGhlciB0aHJlYWQuCisgICBIYW5kbGUgcmVxdWVzdHMgdW50aWwgYW4gZXhwbGljaXQgOm1ldGg6YHNodXRkb3duYCByZXF1ZXN0LiAgUG9sbCBmb3IKKyAgIHNodXRkb3duIGV2ZXJ5ICpwb2xsX2ludGVydmFsKiBzZWNvbmRzLiBJZ25vcmVzIDphdHRyOmBzZWxmLnRpbWVvdXRgLiAgSXQKKyAgIGFsc28gY2FsbHMgOm1ldGg6YHNlcnZpY2VfYWN0aW9uc2AsIHdoaWNoIG1heSBiZSB1c2VkIGJ5IGEgc3ViY2xhc3Mgb3IgbWl4aW4KKyAgIHRvIHByb3ZpZGUgYWN0aW9ucyBzcGVjaWZpYyB0byBhIGdpdmVuIHNlcnZpY2UuICBGb3IgZXhhbXBsZSwgdGhlCisgICA6Y2xhc3M6YEZvcmtpbmdNaXhJbmAgY2xhc3MgdXNlcyA6bWV0aDpgc2VydmljZV9hY3Rpb25zYCB0byBjbGVhbiB1cCB6b21iaWUKKyAgIGNoaWxkIHByb2Nlc3Nlcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICBBZGRlZCBgYHNlcnZpY2VfYWN0aW9uc2BgIGNhbGwgdG8gdGhlIGBgc2VydmVfZm9yZXZlcmBgIG1ldGhvZC4KKworCisuLiBtZXRob2Q6OiBCYXNlU2VydmVyLnNlcnZpY2VfYWN0aW9ucygpCisKKyAgIFRoaXMgaXMgY2FsbGVkIGluIHRoZSA6bWV0aDpgc2VydmVfZm9yZXZlcmAgbG9vcC4gVGhpcyBtZXRob2QgaXMgY2FuIGJlCisgICBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMgb3IgbWl4aW4gY2xhc3NlcyB0byBwZXJmb3JtIGFjdGlvbnMgc3BlY2lmaWMgdG8KKyAgIGEgZ2l2ZW4gc2VydmljZSwgc3VjaCBhcyBjbGVhbnVwIGFjdGlvbnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAuLiBtZXRob2Q6OiBCYXNlU2VydmVyLnNodXRkb3duKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc29tZW9zLnJzdCBiL0RvYy9saWJyYXJ5L3NvbWVvcy5yc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyMDA5YmIuLjAwMDAwMDAKLS0tIGEvRG9jL2xpYnJhcnkvc29tZW9zLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLS4uIF9zb21lb3M6Ci0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLU9wdGlvbmFsIE9wZXJhdGluZyBTeXN0ZW0gU2VydmljZXMKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotVGhlIG1vZHVsZXMgZGVzY3JpYmVkIGluIHRoaXMgY2hhcHRlciBwcm92aWRlIGludGVyZmFjZXMgdG8gb3BlcmF0aW5nIHN5c3RlbQotZmVhdHVyZXMgdGhhdCBhcmUgYXZhaWxhYmxlIG9uIHNlbGVjdGVkIG9wZXJhdGluZyBzeXN0ZW1zIG9ubHkuIFRoZSBpbnRlcmZhY2VzCi1hcmUgZ2VuZXJhbGx5IG1vZGVsZWQgYWZ0ZXIgdGhlIFVuaXggb3IgQyBpbnRlcmZhY2VzIGJ1dCB0aGV5IGFyZSBhdmFpbGFibGUgb24KLXNvbWUgb3RoZXIgc3lzdGVtcyBhcyB3ZWxsIChlLmcuIFdpbmRvd3MpLiAgSGVyZSdzIGFuIG92ZXJ2aWV3OgotCi0KLS4uIHRvY3RyZWU6OgotCi0gICBzZWxlY3QucnN0Ci0gICB0aHJlYWRpbmcucnN0Ci0gICBtdWx0aXByb2Nlc3NpbmcucnN0Ci0gICBjb25jdXJyZW50LmZ1dHVyZXMucnN0Ci0gICBtbWFwLnJzdAotICAgcmVhZGxpbmUucnN0Ci0gICBybGNvbXBsZXRlci5yc3QKLSAgIGR1bW15X3RocmVhZGluZy5yc3QKLSAgIF90aHJlYWQucnN0Ci0gICBfZHVtbXlfdGhyZWFkLnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QgYi9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdAppbmRleCBlZWI5NjY2Li4wOGUzYTJlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdApAQCAtMzkxLDYgKzM5MSwyMiBAQAogICAgICAgbWV0aG9kIHdpdGggOmNvbnN0OmBOb25lYCBmb3IgKmhhbmRsZXIqLgogCiAKKyAgIC4uIG1ldGhvZDo6IHNldF90cmFjZV9jYWxsYmFjayh0cmFjZV9jYWxsYmFjaykKKworICAgICAgUmVnaXN0ZXJzICp0cmFjZV9jYWxsYmFjayogdG8gYmUgY2FsbGVkIGZvciBlYWNoIFNRTCBzdGF0ZW1lbnQgdGhhdCBpcworICAgICAgYWN0dWFsbHkgZXhlY3V0ZWQgYnkgdGhlIFNRTGl0ZSBiYWNrZW5kLgorCisgICAgICBUaGUgb25seSBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrIGlzIHRoZSBzdGF0ZW1lbnQgKGFzIHN0cmluZykgdGhhdAorICAgICAgaXMgYmVpbmcgZXhlY3V0ZWQuIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGNhbGxiYWNrIGlzIGlnbm9yZWQuIE5vdGUgdGhhdAorICAgICAgdGhlIGJhY2tlbmQgZG9lcyBub3Qgb25seSBydW4gc3RhdGVtZW50cyBwYXNzZWQgdG8gdGhlIDptZXRoOmBDdXJzb3IuZXhlY3V0ZWAKKyAgICAgIG1ldGhvZHMuICBPdGhlciBzb3VyY2VzIGluY2x1ZGUgdGhlIHRyYW5zYWN0aW9uIG1hbmFnZW1lbnQgb2YgdGhlIFB5dGhvbgorICAgICAgbW9kdWxlIGFuZCB0aGUgZXhlY3V0aW9uIG9mIHRyaWdnZXJzIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgZGF0YWJhc2UuCisKKyAgICAgIFBhc3NpbmcgOmNvbnN0OmBOb25lYCBhcyAqdHJhY2VfY2FsbGJhY2sqIHdpbGwgZGlzYWJsZSB0aGUgdHJhY2UgY2FsbGJhY2suCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKICAgIC4uIG1ldGhvZDo6IGVuYWJsZV9sb2FkX2V4dGVuc2lvbihlbmFibGVkKQogCiAgICAgICBUaGlzIHJvdXRpbmUgYWxsb3dzL2Rpc2FsbG93cyB0aGUgU1FMaXRlIGVuZ2luZSB0byBsb2FkIFNRTGl0ZSBleHRlbnNpb25zCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zc2wucnN0IGIvRG9jL2xpYnJhcnkvc3NsLnJzdAppbmRleCAwZjVjZWEyLi43NzE5NmUxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zc2wucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NzbC5yc3QKQEAgLTUzLDkgKzUzLDY5IEBACiAgICAoY3VycmVudGx5IHByb3ZpZGVkIGJ5IHRoZSBPcGVuU1NMIGxpYnJhcnkpLiAgVGhpcyBzaWduaWZpZXMgc29tZQogICAgcHJvYmxlbSBpbiB0aGUgaGlnaGVyLWxldmVsIGVuY3J5cHRpb24gYW5kIGF1dGhlbnRpY2F0aW9uIGxheWVyIHRoYXQncwogICAgc3VwZXJpbXBvc2VkIG9uIHRoZSB1bmRlcmx5aW5nIG5ldHdvcmsgY29ubmVjdGlvbi4gIFRoaXMgZXJyb3IKLSAgIGlzIGEgc3VidHlwZSBvZiA6ZXhjOmBzb2NrZXQuZXJyb3JgLCB3aGljaCBpbiB0dXJuIGlzIGEgc3VidHlwZSBvZgotICAgOmV4YzpgSU9FcnJvcmAuICBUaGUgZXJyb3IgY29kZSBhbmQgbWVzc2FnZSBvZiA6ZXhjOmBTU0xFcnJvcmAgaW5zdGFuY2VzCi0gICBhcmUgcHJvdmlkZWQgYnkgdGhlIE9wZW5TU0wgbGlicmFyeS4KKyAgIGlzIGEgc3VidHlwZSBvZiA6ZXhjOmBPU0Vycm9yYC4gIFRoZSBlcnJvciBjb2RlIGFuZCBtZXNzYWdlIG9mCisgICA6ZXhjOmBTU0xFcnJvcmAgaW5zdGFuY2VzIGFyZSBwcm92aWRlZCBieSB0aGUgT3BlblNTTCBsaWJyYXJ5LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmV4YzpgU1NMRXJyb3JgIHVzZWQgdG8gYmUgYSBzdWJ0eXBlIG9mIDpleGM6YHNvY2tldC5lcnJvcmAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGxpYnJhcnkKKworICAgICAgQSBzdHJpbmcgbW5lbW9uaWMgZGVzaWduYXRpbmcgdGhlIE9wZW5TU0wgc3VibW9kdWxlIGluIHdoaWNoIHRoZSBlcnJvcgorICAgICAgb2NjdXJyZWQsIHN1Y2ggYXMgYGBTU0xgYCwgYGBQRU1gYCBvciBgYFg1MDlgYC4gIFRoZSByYW5nZSBvZiBwb3NzaWJsZQorICAgICAgdmFsdWVzIGRlcGVuZHMgb24gdGhlIE9wZW5TU0wgdmVyc2lvbi4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHJlYXNvbgorCisgICAgICBBIHN0cmluZyBtbmVtb25pYyBkZXNpZ25hdGluZyB0aGUgcmVhc29uIHRoaXMgZXJyb3Igb2NjdXJyZWQsIGZvcgorICAgICAgZXhhbXBsZSBgYENFUlRJRklDQVRFX1ZFUklGWV9GQUlMRURgYC4gIFRoZSByYW5nZSBvZiBwb3NzaWJsZQorICAgICAgdmFsdWVzIGRlcGVuZHMgb24gdGhlIE9wZW5TU0wgdmVyc2lvbi4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGV4Y2VwdGlvbjo6IFNTTFplcm9SZXR1cm5FcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YFNTTEVycm9yYCByYWlzZWQgd2hlbiB0cnlpbmcgdG8gcmVhZCBvciB3cml0ZSBhbmQKKyAgIHRoZSBTU0wgY29ubmVjdGlvbiBoYXMgYmVlbiBjbG9zZWQgY2xlYW5seS4gIE5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QKKyAgIG1lYW4gdGhhdCB0aGUgdW5kZXJseWluZyB0cmFuc3BvcnQgKHJlYWQgVENQKSBoYXMgYmVlbiBjbG9zZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBleGNlcHRpb246OiBTU0xXYW50UmVhZEVycm9yCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgU1NMRXJyb3JgIHJhaXNlZCBieSBhIDpyZWY6YG5vbi1ibG9ja2luZyBTU0wgc29ja2V0CisgICA8c3NsLW5vbmJsb2NraW5nPmAgd2hlbiB0cnlpbmcgdG8gcmVhZCBvciB3cml0ZSBkYXRhLCBidXQgbW9yZSBkYXRhIG5lZWRzCisgICB0byBiZSByZWNlaXZlZCBvbiB0aGUgdW5kZXJseWluZyBUQ1AgdHJhbnNwb3J0IGJlZm9yZSB0aGUgcmVxdWVzdCBjYW4gYmUKKyAgIGZ1bGZpbGxlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGV4Y2VwdGlvbjo6IFNTTFdhbnRXcml0ZUVycm9yCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgU1NMRXJyb3JgIHJhaXNlZCBieSBhIDpyZWY6YG5vbi1ibG9ja2luZyBTU0wgc29ja2V0CisgICA8c3NsLW5vbmJsb2NraW5nPmAgd2hlbiB0cnlpbmcgdG8gcmVhZCBvciB3cml0ZSBkYXRhLCBidXQgbW9yZSBkYXRhIG5lZWRzCisgICB0byBiZSBzZW50IG9uIHRoZSB1bmRlcmx5aW5nIFRDUCB0cmFuc3BvcnQgYmVmb3JlIHRoZSByZXF1ZXN0IGNhbiBiZQorICAgZnVsZmlsbGVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZXhjZXB0aW9uOjogU1NMU3lzY2FsbEVycm9yCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgU1NMRXJyb3JgIHJhaXNlZCB3aGVuIGEgc3lzdGVtIGVycm9yIHdhcyBlbmNvdW50ZXJlZAorICAgd2hpbGUgdHJ5aW5nIHRvIGZ1bGZpbGwgYW4gb3BlcmF0aW9uIG9uIGEgU1NMIHNvY2tldC4gIFVuZm9ydHVuYXRlbHksCisgICB0aGVyZSBpcyBubyBlYXN5IHdheSB0byBpbnNwZWN0IHRoZSBvcmlnaW5hbCBlcnJubyBudW1iZXIuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBleGNlcHRpb246OiBTU0xFT0ZFcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YFNTTEVycm9yYCByYWlzZWQgd2hlbiB0aGUgU1NMIGNvbm5lY3Rpb24gaGFzIGJlZW4KKyAgIHRlcm1pbmF0ZWQgYWJydXB0bHkuICBHZW5lcmFsbHksIHlvdSBzaG91bGRuJ3QgdHJ5IHRvIHJldXNlIHRoZSB1bmRlcmx5aW5nCisgICB0cmFuc3BvcnQgd2hlbiB0aGlzIGVycm9yIGlzIGVuY291bnRlcmVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogLi4gZXhjZXB0aW9uOjogQ2VydGlmaWNhdGVFcnJvcgogCkBAIC0xNjEsNiArMjIxLDM1IEBACiBSYW5kb20gZ2VuZXJhdGlvbgogXl5eXl5eXl5eXl5eXl5eXl4KIAorLi4gZnVuY3Rpb246OiBSQU5EX2J5dGVzKG51bSkKKworICAgUmV0dXJucyAqbnVtKiBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcgcHNldWRvLXJhbmRvbSBieXRlcy4gUmFpc2VzIGFuCisgICA6Y2xhc3M6YFNTTEVycm9yYCBpZiB0aGUgUFJORyBoYXMgbm90IGJlZW4gc2VlZGVkIHdpdGggZW5vdWdoIGRhdGEgb3IgaWYgdGhlCisgICBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgY3VycmVudCBSQU5EIG1ldGhvZC4gOmZ1bmM6YFJBTkRfc3RhdHVzYAorICAgY2FuIGJlIHVzZWQgdG8gY2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgUFJORyBhbmQgOmZ1bmM6YFJBTkRfYWRkYCBjYW4gYmUgdXNlZAorICAgdG8gc2VlZCB0aGUgUFJORy4KKworICAgUmVhZCB0aGUgV2lraXBlZGlhIGFydGljbGUsIGBDcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgcHNldWRvcmFuZG9tIG51bWJlcgorICAgZ2VuZXJhdG9yIChDU1BSTkcpCisgICA8aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DcnlwdG9ncmFwaGljYWxseV9zZWN1cmVfcHNldWRvcmFuZG9tX251bWJlcl9nZW5lcmF0b3I+YF8sCisgICB0byBnZXQgdGhlIHJlcXVpcmVtZW50cyBvZiBhIGNyeXB0b2dyYXBoaWNhbGx5IGdlbmVyYXRvci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogUkFORF9wc2V1ZG9fYnl0ZXMobnVtKQorCisgICBSZXR1cm5zIChieXRlcywgaXNfY3J5cHRvZ3JhcGhpYyk6IGJ5dGVzIGFyZSAqbnVtKiBwc2V1ZG8tcmFuZG9tIGJ5dGVzLAorICAgaXNfY3J5cHRvZ3JhcGhpYyBpcyBUcnVlIGlmIHRoZSBieXRlcyBnZW5lcmF0ZWQgYXJlIGNyeXB0b2dyYXBoaWNhbGx5CisgICBzdHJvbmcuIFJhaXNlcyBhbiA6Y2xhc3M6YFNTTEVycm9yYCBpZiB0aGUgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlCisgICBjdXJyZW50IFJBTkQgbWV0aG9kLgorCisgICBHZW5lcmF0ZWQgcHNldWRvLXJhbmRvbSBieXRlIHNlcXVlbmNlcyB3aWxsIGJlIHVuaXF1ZSBpZiB0aGV5IGFyZSBvZgorICAgc3VmZmljaWVudCBsZW5ndGgsIGJ1dCBhcmUgbm90IG5lY2Vzc2FyaWx5IHVucHJlZGljdGFibGUuIFRoZXkgY2FuIGJlIHVzZWQKKyAgIGZvciBub24tY3J5cHRvZ3JhcGhpYyBwdXJwb3NlcyBhbmQgZm9yIGNlcnRhaW4gcHVycG9zZXMgaW4gY3J5cHRvZ3JhcGhpYworICAgcHJvdG9jb2xzLCBidXQgdXN1YWxseSBub3QgZm9yIGtleSBnZW5lcmF0aW9uIGV0Yy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC4uIGZ1bmN0aW9uOjogUkFORF9zdGF0dXMoKQogCiAgICBSZXR1cm5zIFRydWUgaWYgdGhlIFNTTCBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgaGFzIGJlZW4gc2VlZGVkIHdpdGgKQEAgLTE3MCw3ICsyNTksNyBAQAogCiAuLiBmdW5jdGlvbjo6IFJBTkRfZWdkKHBhdGgpCiAKLSAgIElmIHlvdSBhcmUgcnVubmluZyBhbiBlbnRyb3B5LWdhdGhlcmluZyBkYWVtb24gKEVHRCkgc29tZXdoZXJlLCBhbmQgYGBwYXRoYGAKKyAgIElmIHlvdSBhcmUgcnVubmluZyBhbiBlbnRyb3B5LWdhdGhlcmluZyBkYWVtb24gKEVHRCkgc29tZXdoZXJlLCBhbmQgKnBhdGgqCiAgICBpcyB0aGUgcGF0aG5hbWUgb2YgYSBzb2NrZXQgY29ubmVjdGlvbiBvcGVuIHRvIGl0LCB0aGlzIHdpbGwgcmVhZCAyNTYgYnl0ZXMKICAgIG9mIHJhbmRvbW5lc3MgZnJvbSB0aGUgc29ja2V0LCBhbmQgYWRkIGl0IHRvIHRoZSBTU0wgcHNldWRvLXJhbmRvbSBudW1iZXIKICAgIGdlbmVyYXRvciB0byBpbmNyZWFzZSB0aGUgc2VjdXJpdHkgb2YgZ2VuZXJhdGVkIHNlY3JldCBrZXlzLiAgVGhpcyBpcwpAQCAtMTgxLDggKzI3MCw4IEBACiAKIC4uIGZ1bmN0aW9uOjogUkFORF9hZGQoYnl0ZXMsIGVudHJvcHkpCiAKLSAgIE1peGVzIHRoZSBnaXZlbiBgYGJ5dGVzYGAgaW50byB0aGUgU1NMIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvci4gIFRoZQotICAgcGFyYW1ldGVyIGBgZW50cm9weWBgIChhIGZsb2F0KSBpcyBhIGxvd2VyIGJvdW5kIG9uIHRoZSBlbnRyb3B5IGNvbnRhaW5lZCBpbgorICAgTWl4ZXMgdGhlIGdpdmVuICpieXRlcyogaW50byB0aGUgU1NMIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvci4gIFRoZQorICAgcGFyYW1ldGVyICplbnRyb3B5KiAoYSBmbG9hdCkgaXMgYSBsb3dlciBib3VuZCBvbiB0aGUgZW50cm9weSBjb250YWluZWQgaW4KICAgIHN0cmluZyAoc28geW91IGNhbiBhbHdheXMgdXNlIDpjb25zdDpgMC4wYCkuICBTZWUgOnJmYzpgMTc1MGAgZm9yIG1vcmUKICAgIGluZm9ybWF0aW9uIG9uIHNvdXJjZXMgb2YgZW50cm9weS4KIApAQCAtMjM4LDYgKzMyNyw5IEBACiAgICB3aWxsIGF0dGVtcHQgdG8gdmFsaWRhdGUgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZSBhZ2FpbnN0IHRoYXQgc2V0IG9mIHJvb3QKICAgIGNlcnRpZmljYXRlcywgYW5kIHdpbGwgZmFpbCBpZiB0aGUgdmFsaWRhdGlvbiBhdHRlbXB0IGZhaWxzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3cgSVB2Ni1jb21wYXRpYmxlLgorCiAuLiBmdW5jdGlvbjo6IERFUl9jZXJ0X3RvX1BFTV9jZXJ0KERFUl9jZXJ0X2J5dGVzKQogCiAgICBHaXZlbiBhIGNlcnRpZmljYXRlIGFzIGEgREVSLWVuY29kZWQgYmxvYiBvZiBieXRlcywgcmV0dXJucyBhIFBFTS1lbmNvZGVkCkBAIC0zNDUsNiArNDM3LDQ2IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisuLiBkYXRhOjogT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFCisKKyAgIFVzZSB0aGUgc2VydmVyJ3MgY2lwaGVyIG9yZGVyaW5nIHByZWZlcmVuY2UsIHJhdGhlciB0aGFuIHRoZSBjbGllbnQncy4KKyAgIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gY2xpZW50IHNvY2tldHMgYW5kIFNTTHYyIHNlcnZlciBzb2NrZXRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IE9QX1NJTkdMRV9ESF9VU0UKKworICAgUHJldmVudHMgcmUtdXNlIG9mIHRoZSBzYW1lIERIIGtleSBmb3IgZGlzdGluY3QgU1NMIHNlc3Npb25zLiAgVGhpcworICAgaW1wcm92ZXMgZm9yd2FyZCBzZWNyZWN5IGJ1dCByZXF1aXJlcyBtb3JlIGNvbXB1dGF0aW9uYWwgcmVzb3VyY2VzLgorICAgVGhpcyBvcHRpb24gb25seSBhcHBsaWVzIHRvIHNlcnZlciBzb2NrZXRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IE9QX1NJTkdMRV9FQ0RIX1VTRQorCisgICBQcmV2ZW50cyByZS11c2Ugb2YgdGhlIHNhbWUgRUNESCBrZXkgZm9yIGRpc3RpbmN0IFNTTCBzZXNzaW9ucy4gIFRoaXMKKyAgIGltcHJvdmVzIGZvcndhcmQgc2VjcmVjeSBidXQgcmVxdWlyZXMgbW9yZSBjb21wdXRhdGlvbmFsIHJlc291cmNlcy4KKyAgIFRoaXMgb3B0aW9uIG9ubHkgYXBwbGllcyB0byBzZXJ2ZXIgc29ja2V0cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBPUF9OT19DT01QUkVTU0lPTgorCisgICBEaXNhYmxlIGNvbXByZXNzaW9uIG9uIHRoZSBTU0wgY2hhbm5lbC4gIFRoaXMgaXMgdXNlZnVsIGlmIHRoZSBhcHBsaWNhdGlvbgorICAgcHJvdG9jb2wgc3VwcG9ydHMgaXRzIG93biBjb21wcmVzc2lvbiBzY2hlbWUuCisKKyAgIFRoaXMgb3B0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIHdpdGggT3BlblNTTCAxLjAuMCBhbmQgbGF0ZXIuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBkYXRhOjogSEFTX0VDREgKKworICAgV2hldGhlciB0aGUgT3BlblNTTCBsaWJyYXJ5IGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciBFbGxpcHRpYyBDdXJ2ZS1iYXNlZAorICAgRGlmZmllLUhlbGxtYW4ga2V5IGV4Y2hhbmdlLiAgVGhpcyBzaG91bGQgYmUgdHJ1ZSB1bmxlc3MgdGhlIGZlYXR1cmUgd2FzCisgICBleHBsaWNpdGx5IGRpc2FibGVkIGJ5IHRoZSBkaXN0cmlidXRvci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC4uIGRhdGE6OiBIQVNfU05JCiAKICAgIFdoZXRoZXIgdGhlIE9wZW5TU0wgbGlicmFyeSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgdGhlICpTZXJ2ZXIgTmFtZQpAQCAtMzU0LDYgKzQ4NiwyMyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorLi4gZGF0YTo6IEhBU19OUE4KKworICAgV2hldGhlciB0aGUgT3BlblNTTCBsaWJyYXJ5IGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciAqTmV4dCBQcm90b2NvbAorICAgTmVnb3RpYXRpb24qIGFzIGRlc2NyaWJlZCBpbiB0aGUgYE5QTiBkcmFmdCBzcGVjaWZpY2F0aW9uCisgICA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtYWdsLXRscy1uZXh0cHJvdG9uZWc+YF8uIFdoZW4gdHJ1ZSwKKyAgIHlvdSBjYW4gdXNlIHRoZSA6bWV0aDpgU1NMQ29udGV4dC5zZXRfbnBuX3Byb3RvY29sc2AgbWV0aG9kIHRvIGFkdmVydGlzZQorICAgd2hpY2ggcHJvdG9jb2xzIHlvdSB3YW50IHRvIHN1cHBvcnQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBkYXRhOjogQ0hBTk5FTF9CSU5ESU5HX1RZUEVTCisKKyAgIExpc3Qgb2Ygc3VwcG9ydGVkIFRMUyBjaGFubmVsIGJpbmRpbmcgdHlwZXMuICBTdHJpbmdzIGluIHRoaXMgbGlzdAorICAgY2FuIGJlIHVzZWQgYXMgYXJndW1lbnRzIHRvIDptZXRoOmBTU0xTb2NrZXQuZ2V0X2NoYW5uZWxfYmluZGluZ2AuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAuLiBkYXRhOjogT1BFTlNTTF9WRVJTSU9OCiAKICAgIFRoZSB2ZXJzaW9uIHN0cmluZyBvZiB0aGUgT3BlblNTTCBsaWJyYXJ5IGxvYWRlZCBieSB0aGUgaW50ZXJwcmV0ZXI6OgpAQCAtNDc5LDYgKzYyOCwzNyBAQAogICAgdmVyc2lvbiBvZiB0aGUgU1NMIHByb3RvY29sIHRoYXQgZGVmaW5lcyBpdHMgdXNlLCBhbmQgdGhlIG51bWJlciBvZiBzZWNyZXQKICAgIGJpdHMgYmVpbmcgdXNlZC4gIElmIG5vIGNvbm5lY3Rpb24gaGFzIGJlZW4gZXN0YWJsaXNoZWQsIHJldHVybnMgYGBOb25lYGAuCiAKKy4uIG1ldGhvZDo6IFNTTFNvY2tldC5jb21wcmVzc2lvbigpCisKKyAgIFJldHVybiB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtIGJlaW5nIHVzZWQgYXMgYSBzdHJpbmcsIG9yIGBgTm9uZWBgCisgICBpZiB0aGUgY29ubmVjdGlvbiBpc24ndCBjb21wcmVzc2VkLgorCisgICBJZiB0aGUgaGlnaGVyLWxldmVsIHByb3RvY29sIHN1cHBvcnRzIGl0cyBvd24gY29tcHJlc3Npb24gbWVjaGFuaXNtLAorICAgeW91IGNhbiB1c2UgOmRhdGE6YE9QX05PX0NPTVBSRVNTSU9OYCB0byBkaXNhYmxlIFNTTC1sZXZlbCBjb21wcmVzc2lvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIG1ldGhvZDo6IFNTTFNvY2tldC5nZXRfY2hhbm5lbF9iaW5kaW5nKGNiX3R5cGU9InRscy11bmlxdWUiKQorCisgICBHZXQgY2hhbm5lbCBiaW5kaW5nIGRhdGEgZm9yIGN1cnJlbnQgY29ubmVjdGlvbiwgYXMgYSBieXRlcyBvYmplY3QuICBSZXR1cm5zCisgICBgYE5vbmVgYCBpZiBub3QgY29ubmVjdGVkIG9yIHRoZSBoYW5kc2hha2UgaGFzIG5vdCBiZWVuIGNvbXBsZXRlZC4KKworICAgVGhlICpjYl90eXBlKiBwYXJhbWV0ZXIgYWxsb3cgc2VsZWN0aW9uIG9mIHRoZSBkZXNpcmVkIGNoYW5uZWwgYmluZGluZworICAgdHlwZS4gVmFsaWQgY2hhbm5lbCBiaW5kaW5nIHR5cGVzIGFyZSBsaXN0ZWQgaW4gdGhlCisgICA6ZGF0YTpgQ0hBTk5FTF9CSU5ESU5HX1RZUEVTYCBsaXN0LiAgQ3VycmVudGx5IG9ubHkgdGhlICd0bHMtdW5pcXVlJyBjaGFubmVsCisgICBiaW5kaW5nLCBkZWZpbmVkIGJ5IDpyZmM6YDU5MjlgLCBpcyBzdXBwb3J0ZWQuICA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlCisgICByYWlzZWQgaWYgYW4gdW5zdXBwb3J0ZWQgY2hhbm5lbCBiaW5kaW5nIHR5cGUgaXMgcmVxdWVzdGVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gbWV0aG9kOjogU1NMU29ja2V0LnNlbGVjdGVkX25wbl9wcm90b2NvbCgpCisKKyAgIFJldHVybnMgdGhlIHByb3RvY29sIHRoYXQgd2FzIHNlbGVjdGVkIGR1cmluZyB0aGUgVExTL1NTTCBoYW5kc2hha2UuIElmCisgICA6bWV0aDpgU1NMQ29udGV4dC5zZXRfbnBuX3Byb3RvY29sc2Agd2FzIG5vdCBjYWxsZWQsIG9yIGlmIHRoZSBvdGhlciBwYXJ0eQorICAgZG9lcyBub3Qgc3VwcG9ydCBOUE4sIG9yIGlmIHRoZSBoYW5kc2hha2UgaGFzIG5vdCB5ZXQgaGFwcGVuZWQsIHRoaXMgd2lsbAorICAgcmV0dXJuIGBgTm9uZWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogLi4gbWV0aG9kOjogU1NMU29ja2V0LnVud3JhcCgpCiAKQEAgLTQ4OCw3ICs2NjgsNiBAQAogICAgcmV0dXJuZWQgc29ja2V0IHNob3VsZCBhbHdheXMgYmUgdXNlZCBmb3IgZnVydGhlciBjb21tdW5pY2F0aW9uIHdpdGggdGhlCiAgICBvdGhlciBzaWRlIG9mIHRoZSBjb25uZWN0aW9uLCByYXRoZXIgdGhhbiB0aGUgb3JpZ2luYWwgc29ja2V0LgogCi0KIC4uIGF0dHJpYnV0ZTo6IFNTTFNvY2tldC5jb250ZXh0CiAKICAgIFRoZSA6Y2xhc3M6YFNTTENvbnRleHRgIG9iamVjdCB0aGlzIFNTTCBzb2NrZXQgaXMgdGllZCB0by4gIElmIHRoZSBTU0wKQEAgLTUxOCw3ICs2OTcsNyBAQAogCiA6Y2xhc3M6YFNTTENvbnRleHRgIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXM6CiAKLS4uIG1ldGhvZDo6IFNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluKGNlcnRmaWxlLCBrZXlmaWxlPU5vbmUpCisuLiBtZXRob2Q6OiBTU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0ZmlsZSwga2V5ZmlsZT1Ob25lLCBwYXNzd29yZD1Ob25lKQogCiAgICBMb2FkIGEgcHJpdmF0ZSBrZXkgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGNlcnRpZmljYXRlLiAgVGhlICpjZXJ0ZmlsZSoKICAgIHN0cmluZyBtdXN0IGJlIHRoZSBwYXRoIHRvIGEgc2luZ2xlIGZpbGUgaW4gUEVNIGZvcm1hdCBjb250YWluaW5nIHRoZQpAQCAtNTI5LDkgKzcwOCwyNSBAQAogICAgOnJlZjpgc3NsLWNlcnRpZmljYXRlc2AgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRoZSBjZXJ0aWZpY2F0ZQogICAgaXMgc3RvcmVkIGluIHRoZSAqY2VydGZpbGUqLgogCisgICBUaGUgKnBhc3N3b3JkKiBhcmd1bWVudCBtYXkgYmUgYSBmdW5jdGlvbiB0byBjYWxsIHRvIGdldCB0aGUgcGFzc3dvcmQgZm9yCisgICBkZWNyeXB0aW5nIHRoZSBwcml2YXRlIGtleS4gIEl0IHdpbGwgb25seSBiZSBjYWxsZWQgaWYgdGhlIHByaXZhdGUga2V5IGlzCisgICBlbmNyeXB0ZWQgYW5kIGEgcGFzc3dvcmQgaXMgbmVjZXNzYXJ5LiAgSXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMsCisgICBhbmQgaXQgc2hvdWxkIHJldHVybiBhIHN0cmluZywgYnl0ZXMsIG9yIGJ5dGVhcnJheS4gIElmIHRoZSByZXR1cm4gdmFsdWUgaXMKKyAgIGEgc3RyaW5nIGl0IHdpbGwgYmUgZW5jb2RlZCBhcyBVVEYtOCBiZWZvcmUgdXNpbmcgaXQgdG8gZGVjcnlwdCB0aGUga2V5LgorICAgQWx0ZXJuYXRpdmVseSBhIHN0cmluZywgYnl0ZXMsIG9yIGJ5dGVhcnJheSB2YWx1ZSBtYXkgYmUgc3VwcGxpZWQgZGlyZWN0bHkKKyAgIGFzIHRoZSAqcGFzc3dvcmQqIGFyZ3VtZW50LiAgSXQgd2lsbCBiZSBpZ25vcmVkIGlmIHRoZSBwcml2YXRlIGtleSBpcyBub3QKKyAgIGVuY3J5cHRlZCBhbmQgbm8gcGFzc3dvcmQgaXMgbmVlZGVkLgorCisgICBJZiB0aGUgKnBhc3N3b3JkKiBhcmd1bWVudCBpcyBub3Qgc3BlY2lmaWVkIGFuZCBhIHBhc3N3b3JkIGlzIHJlcXVpcmVkLAorICAgT3BlblNTTCdzIGJ1aWx0LWluIHBhc3N3b3JkIHByb21wdGluZyBtZWNoYW5pc20gd2lsbCBiZSB1c2VkIHRvCisgICBpbnRlcmFjdGl2ZWx5IHByb21wdCB0aGUgdXNlciBmb3IgYSBwYXNzd29yZC4KKwogICAgQW4gOmNsYXNzOmBTU0xFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBwcml2YXRlIGtleSBkb2Vzbid0CiAgICBtYXRjaCB3aXRoIHRoZSBjZXJ0aWZpY2F0ZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIE5ldyBvcHRpb25hbCBhcmd1bWVudCAqcGFzc3dvcmQqLgorCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9Tm9uZSwgY2FwYXRoPU5vbmUpCiAKICAgIExvYWQgYSBzZXQgb2YgImNlcnRpZmljYXRpb24gYXV0aG9yaXR5IiAoQ0EpIGNlcnRpZmljYXRlcyB1c2VkIHRvIHZhbGlkYXRlCkBAIC01NzAsNiArNzY1LDUzIEBACiAgICAgICB3aGVuIGNvbm5lY3RlZCwgdGhlIDptZXRoOmBTU0xTb2NrZXQuY2lwaGVyYCBtZXRob2Qgb2YgU1NMIHNvY2tldHMgd2lsbAogICAgICAgZ2l2ZSB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGNpcGhlci4KIAorLi4gbWV0aG9kOjogU1NMQ29udGV4dC5zZXRfbnBuX3Byb3RvY29scyhwcm90b2NvbHMpCisKKyAgIFNwZWNpZnkgd2hpY2ggcHJvdG9jb2xzIHRoZSBzb2NrZXQgc2hvdWxkIGF2ZXJ0aXNlIGR1cmluZyB0aGUgU1NML1RMUworICAgaGFuZHNoYWtlLiBJdCBzaG91bGQgYmUgYSBsaXN0IG9mIHN0cmluZ3MsIGxpa2UgYGBbJ2h0dHAvMS4xJywgJ3NwZHkvMiddYGAsCisgICBvcmRlcmVkIGJ5IHByZWZlcmVuY2UuIFRoZSBzZWxlY3Rpb24gb2YgYSBwcm90b2NvbCB3aWxsIGhhcHBlbiBkdXJpbmcgdGhlCisgICBoYW5kc2hha2UsIGFuZCB3aWxsIHBsYXkgb3V0IGFjY29yZGluZyB0byB0aGUgYE5QTiBkcmFmdCBzcGVjaWZpY2F0aW9uCisgICA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtYWdsLXRscy1uZXh0cHJvdG9uZWc+YF8uIEFmdGVyIGEKKyAgIHN1Y2Nlc3NmdWwgaGFuZHNoYWtlLCB0aGUgOm1ldGg6YFNTTFNvY2tldC5zZWxlY3RlZF9ucG5fcHJvdG9jb2xgIG1ldGhvZCB3aWxsCisgICByZXR1cm4gdGhlIGFncmVlZC11cG9uIHByb3RvY29sLgorCisgICBUaGlzIG1ldGhvZCB3aWxsIHJhaXNlIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIGlmIDpkYXRhOmBIQVNfTlBOYCBpcworICAgRmFsc2UuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBtZXRob2Q6OiBTU0xDb250ZXh0LmxvYWRfZGhfcGFyYW1zKGRoZmlsZSkKKworICAgTG9hZCB0aGUga2V5IGdlbmVyYXRpb24gcGFyYW1ldGVycyBmb3IgRGlmZmllLUhlbG1hbiAoREgpIGtleSBleGNoYW5nZS4KKyAgIFVzaW5nIERIIGtleSBleGNoYW5nZSBpbXByb3ZlcyBmb3J3YXJkIHNlY3JlY3kgYXQgdGhlIGV4cGVuc2Ugb2YKKyAgIGNvbXB1dGF0aW9uYWwgcmVzb3VyY2VzIChib3RoIG9uIHRoZSBzZXJ2ZXIgYW5kIG9uIHRoZSBjbGllbnQpLgorICAgVGhlICpkaGZpbGUqIHBhcmFtZXRlciBzaG91bGQgYmUgdGhlIHBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgREgKKyAgIHBhcmFtZXRlcnMgaW4gUEVNIGZvcm1hdC4KKworICAgVGhpcyBzZXR0aW5nIGRvZXNuJ3QgYXBwbHkgdG8gY2xpZW50IHNvY2tldHMuICBZb3UgY2FuIGFsc28gdXNlIHRoZQorICAgOmRhdGE6YE9QX1NJTkdMRV9ESF9VU0VgIG9wdGlvbiB0byBmdXJ0aGVyIGltcHJvdmUgc2VjdXJpdHkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBtZXRob2Q6OiBTU0xDb250ZXh0LnNldF9lY2RoX2N1cnZlKGN1cnZlX25hbWUpCisKKyAgIFNldCB0aGUgY3VydmUgbmFtZSBmb3IgRWxsaXB0aWMgQ3VydmUtYmFzZWQgRGlmZmllLUhlbGxtYW4gKEVDREgpIGtleQorICAgZXhjaGFuZ2UuICBFQ0RIIGlzIHNpZ25pZmljYW50bHkgZmFzdGVyIHRoYW4gcmVndWxhciBESCB3aGlsZSBhcmd1YWJseQorICAgYXMgc2VjdXJlLiAgVGhlICpjdXJ2ZV9uYW1lKiBwYXJhbWV0ZXIgc2hvdWxkIGJlIGEgc3RyaW5nIGRlc2NyaWJpbmcKKyAgIGEgd2VsbC1rbm93biBlbGxpcHRpYyBjdXJ2ZSwgZm9yIGV4YW1wbGUgYGBwcmltZTI1NnYxYGAgZm9yIGEgd2lkZWx5CisgICBzdXBwb3J0ZWQgY3VydmUuCisKKyAgIFRoaXMgc2V0dGluZyBkb2Vzbid0IGFwcGx5IHRvIGNsaWVudCBzb2NrZXRzLiAgWW91IGNhbiBhbHNvIHVzZSB0aGUKKyAgIDpkYXRhOmBPUF9TSU5HTEVfRUNESF9VU0VgIG9wdGlvbiB0byBmdXJ0aGVyIGltcHJvdmUgc2VjdXJpdHkuCisKKyAgIFRoaXMgbWV0aG9kIGlzIG5vdCBhdmFpbGFibGUgaWYgOmRhdGE6YEhBU19FQ0RIYCBpcyBGYWxzZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIHNlZWFsc286OgorICAgICAgYFNTTC9UTFMgJiBQZXJmZWN0IEZvcndhcmQgU2VjcmVjeSA8aHR0cDovL3ZpbmNlbnQuYmVybmF0LmltL2VuL2Jsb2cvMjAxMS1zc2wtcGVyZmVjdC1mb3J3YXJkLXNlY3JlY3kuaHRtbD5gXworICAgICAgICAgVmluY2VudCBCZXJuYXQuCisKIC4uIG1ldGhvZDo6IFNTTENvbnRleHQud3JhcF9zb2NrZXQoc29jaywgc2VydmVyX3NpZGU9RmFsc2UsIFwKICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PVRydWUsIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsIFwKICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lKQpAQCAtOTg0LDEzICsxMjI2LDEwIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNvY2suZG9faGFuZHNoYWtlKCkKICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgaWYgZXJyLmFyZ3NbMF0gPT0gc3NsLlNTTF9FUlJPUl9XQU5UX1JFQUQ6Ci0gICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbc29ja10sIFtdLCBbXSkKLSAgICAgICAgICAgIGVsaWYgZXJyLmFyZ3NbMF0gPT0gc3NsLlNTTF9FUlJPUl9XQU5UX1dSSVRFOgotICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzb2NrXSwgW10pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFJlYWRFcnJvcjoKKyAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NvY2tdLCBbXSwgW10pCisgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFdyaXRlRXJyb3I6CisgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc29ja10sIFtdKQogCiAKIC4uIF9zc2wtc2VjdXJpdHk6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdGF0LnJzdCBiL0RvYy9saWJyYXJ5L3N0YXQucnN0CmluZGV4IDdkZTk4YjYuLjAyNTEzZGYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0YXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N0YXQucnN0CkBAIC0xMDQsNiArMTA0LDE2IEBACiAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICAgIHdhbGt0cmVlKHN5cy5hcmd2WzFdLCB2aXNpdGZpbGUpCiAKK0FuIGFkZGl0aW9uYWwgdXRpbGl0eSBmdW5jdGlvbiBpcyBwcm92aWRlZCB0byBjb3ZlcnQgYSBmaWxlJ3MgbW9kZSBpbiBhIGh1bWFuCityZWFkYWJsZSBzdHJpbmc6CisKKy4uIGZ1bmN0aW9uOjogZmlsZW1vZGUobW9kZSkKKworICAgQ29udmVydCBhIGZpbGUncyBtb2RlIHRvIGEgc3RyaW5nIG9mIHRoZSBmb3JtICctcnd4cnd4cnd4Jy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogQWxsIHRoZSB2YXJpYWJsZXMgYmVsb3cgYXJlIHNpbXBseSBzeW1ib2xpYyBpbmRleGVzIGludG8gdGhlIDEwLXR1cGxlIHJldHVybmVkCiBieSA6ZnVuYzpgb3Muc3RhdGAsIDpmdW5jOmBvcy5mc3RhdGAgb3IgOmZ1bmM6YG9zLmxzdGF0YC4KIApAQCAtMTcyLDEwICsxODIsNiBAQAogCiBVc2Ugb2YgdGhlIGZ1bmN0aW9ucyBhYm92ZSBpcyBtb3JlIHBvcnRhYmxlIHRoYW4gdXNlIG9mIHRoZSBmaXJzdCBzZXQgb2YgZmxhZ3M6CiAKLS4uIGRhdGE6OiBTX0lGTVQKLQotICAgQml0IG1hc2sgZm9yIHRoZSBmaWxlIHR5cGUgYml0IGZpZWxkcy4KLQogLi4gZGF0YTo6IFNfSUZTT0NLCiAKICAgIFNvY2tldC4KQEAgLTM0NCw0ICszNTAsMyBAQAogICAgVGhlIGZpbGUgaXMgYSBzbmFwc2hvdCBmaWxlLgogCiBTZWUgdGhlIFwqQlNEIG9yIE1hYyBPUyBzeXN0ZW1zIG1hbiBwYWdlIDptYW5wYWdlOmBjaGZsYWdzKDIpYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0CmluZGV4IDRiMjI0YjMuLjdlNWYwNGYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QKQEAgLTE1LDYgKzE1LDEwIEBACiBUaGUgcHJpbmNpcGFsIGJ1aWx0LWluIHR5cGVzIGFyZSBudW1lcmljcywgc2VxdWVuY2VzLCBtYXBwaW5ncywgY2xhc3NlcywKIGluc3RhbmNlcyBhbmQgZXhjZXB0aW9ucy4KIAorU29tZSBjb2xsZWN0aW9uIGNsYXNzZXMgYXJlIG11dGFibGUuICBUaGUgbWV0aG9kcyB0aGF0IGFkZCwgc3VidHJhY3QsIG9yCityZWFycmFuZ2UgdGhlaXIgbWVtYmVycyBpbiBwbGFjZSwgYW5kIGRvbid0IHJldHVybiBhIHNwZWNpZmljIGl0ZW0sIG5ldmVyIHJldHVybgordGhlIGNvbGxlY3Rpb24gaW5zdGFuY2UgaXRzZWxmIGJ1dCBgYE5vbmVgYC4KKwogU29tZSBvcGVyYXRpb25zIGFyZSBzdXBwb3J0ZWQgYnkgc2V2ZXJhbCBvYmplY3QgdHlwZXM7IGluIHBhcnRpY3VsYXIsCiBwcmFjdGljYWxseSBhbGwgb2JqZWN0cyBjYW4gYmUgY29tcGFyZWQsIHRlc3RlZCBmb3IgdHJ1dGggdmFsdWUsIGFuZCBjb252ZXJ0ZWQKIHRvIGEgc3RyaW5nICh3aXRoIHRoZSA6ZnVuYzpgcmVwcmAgZnVuY3Rpb24gb3IgdGhlIHNsaWdodGx5IGRpZmZlcmVudApAQCAtNjQxLDM0ICs2NDUsMzQgQEAKIAogSGVyZSBhcmUgdGhlIHJ1bGVzIGluIGRldGFpbDoKIAotIC0gSWYgYGB4ID0gbSAvIG5gYCBpcyBhIG5vbm5lZ2F0aXZlIHJhdGlvbmFsIG51bWJlciBhbmQgYGBuYGAgaXMgbm90IGRpdmlzaWJsZQotICAgYnkgYGBQYGAsIGRlZmluZSBgYGhhc2goeClgYCBhcyBgYG0gKiBpbnZtb2QobiwgUCkgJSBQYGAsIHdoZXJlIGBgaW52bW9kKG4sCi0gICBQKWBgIGdpdmVzIHRoZSBpbnZlcnNlIG9mIGBgbmBgIG1vZHVsbyBgYFBgYC4KKy0gSWYgYGB4ID0gbSAvIG5gYCBpcyBhIG5vbm5lZ2F0aXZlIHJhdGlvbmFsIG51bWJlciBhbmQgYGBuYGAgaXMgbm90IGRpdmlzaWJsZQorICBieSBgYFBgYCwgZGVmaW5lIGBgaGFzaCh4KWBgIGFzIGBgbSAqIGludm1vZChuLCBQKSAlIFBgYCwgd2hlcmUgYGBpbnZtb2QobiwKKyAgUClgYCBnaXZlcyB0aGUgaW52ZXJzZSBvZiBgYG5gYCBtb2R1bG8gYGBQYGAuCiAKLSAtIElmIGBgeCA9IG0gLyBuYGAgaXMgYSBub25uZWdhdGl2ZSByYXRpb25hbCBudW1iZXIgYW5kIGBgbmBgIGlzCi0gICBkaXZpc2libGUgYnkgYGBQYGAgKGJ1dCBgYG1gYCBpcyBub3QpIHRoZW4gYGBuYGAgaGFzIG5vIGludmVyc2UKLSAgIG1vZHVsbyBgYFBgYCBhbmQgdGhlIHJ1bGUgYWJvdmUgZG9lc24ndCBhcHBseTsgaW4gdGhpcyBjYXNlIGRlZmluZQotICAgYGBoYXNoKHgpYGAgdG8gYmUgdGhlIGNvbnN0YW50IHZhbHVlIGBgc3lzLmhhc2hfaW5mby5pbmZgYC4KKy0gSWYgYGB4ID0gbSAvIG5gYCBpcyBhIG5vbm5lZ2F0aXZlIHJhdGlvbmFsIG51bWJlciBhbmQgYGBuYGAgaXMKKyAgZGl2aXNpYmxlIGJ5IGBgUGBgIChidXQgYGBtYGAgaXMgbm90KSB0aGVuIGBgbmBgIGhhcyBubyBpbnZlcnNlCisgIG1vZHVsbyBgYFBgYCBhbmQgdGhlIHJ1bGUgYWJvdmUgZG9lc24ndCBhcHBseTsgaW4gdGhpcyBjYXNlIGRlZmluZQorICBgYGhhc2goeClgYCB0byBiZSB0aGUgY29uc3RhbnQgdmFsdWUgYGBzeXMuaGFzaF9pbmZvLmluZmBgLgogCi0gLSBJZiBgYHggPSBtIC8gbmBgIGlzIGEgbmVnYXRpdmUgcmF0aW9uYWwgbnVtYmVyIGRlZmluZSBgYGhhc2goeClgYAotICAgYXMgYGAtaGFzaCgteClgYC4gIElmIHRoZSByZXN1bHRpbmcgaGFzaCBpcyBgYC0xYGAsIHJlcGxhY2UgaXQgd2l0aAotICAgYGAtMmBgLgorLSBJZiBgYHggPSBtIC8gbmBgIGlzIGEgbmVnYXRpdmUgcmF0aW9uYWwgbnVtYmVyIGRlZmluZSBgYGhhc2goeClgYAorICBhcyBgYC1oYXNoKC14KWBgLiAgSWYgdGhlIHJlc3VsdGluZyBoYXNoIGlzIGBgLTFgYCwgcmVwbGFjZSBpdCB3aXRoCisgIGBgLTJgYC4KIAotIC0gVGhlIHBhcnRpY3VsYXIgdmFsdWVzIGBgc3lzLmhhc2hfaW5mby5pbmZgYCwgYGAtc3lzLmhhc2hfaW5mby5pbmZgYAotICAgYW5kIGBgc3lzLmhhc2hfaW5mby5uYW5gYCBhcmUgdXNlZCBhcyBoYXNoIHZhbHVlcyBmb3IgcG9zaXRpdmUKLSAgIGluZmluaXR5LCBuZWdhdGl2ZSBpbmZpbml0eSwgb3IgbmFucyAocmVzcGVjdGl2ZWx5KS4gIChBbGwgaGFzaGFibGUKLSAgIG5hbnMgaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlLikKKy0gVGhlIHBhcnRpY3VsYXIgdmFsdWVzIGBgc3lzLmhhc2hfaW5mby5pbmZgYCwgYGAtc3lzLmhhc2hfaW5mby5pbmZgYAorICBhbmQgYGBzeXMuaGFzaF9pbmZvLm5hbmBgIGFyZSB1c2VkIGFzIGhhc2ggdmFsdWVzIGZvciBwb3NpdGl2ZQorICBpbmZpbml0eSwgbmVnYXRpdmUgaW5maW5pdHksIG9yIG5hbnMgKHJlc3BlY3RpdmVseSkuICAoQWxsIGhhc2hhYmxlCisgIG5hbnMgaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlLikKIAotIC0gRm9yIGEgOmNsYXNzOmBjb21wbGV4YCBudW1iZXIgYGB6YGAsIHRoZSBoYXNoIHZhbHVlcyBvZiB0aGUgcmVhbAotICAgYW5kIGltYWdpbmFyeSBwYXJ0cyBhcmUgY29tYmluZWQgYnkgY29tcHV0aW5nIGBgaGFzaCh6LnJlYWwpICsKLSAgIHN5cy5oYXNoX2luZm8uaW1hZyAqIGhhc2goei5pbWFnKWBgLCByZWR1Y2VkIG1vZHVsbwotICAgYGAyKipzeXMuaGFzaF9pbmZvLndpZHRoYGAgc28gdGhhdCBpdCBsaWVzIGluCi0gICBgYHJhbmdlKC0yKiooc3lzLmhhc2hfaW5mby53aWR0aCAtIDEpLCAyKiooc3lzLmhhc2hfaW5mby53aWR0aCAtCi0gICAxKSlgYC4gIEFnYWluLCBpZiB0aGUgcmVzdWx0IGlzIGBgLTFgYCwgaXQncyByZXBsYWNlZCB3aXRoIGBgLTJgYC4KKy0gRm9yIGEgOmNsYXNzOmBjb21wbGV4YCBudW1iZXIgYGB6YGAsIHRoZSBoYXNoIHZhbHVlcyBvZiB0aGUgcmVhbAorICBhbmQgaW1hZ2luYXJ5IHBhcnRzIGFyZSBjb21iaW5lZCBieSBjb21wdXRpbmcgYGBoYXNoKHoucmVhbCkgKworICBzeXMuaGFzaF9pbmZvLmltYWcgKiBoYXNoKHouaW1hZylgYCwgcmVkdWNlZCBtb2R1bG8KKyAgYGAyKipzeXMuaGFzaF9pbmZvLndpZHRoYGAgc28gdGhhdCBpdCBsaWVzIGluCisgIGBgcmFuZ2UoLTIqKihzeXMuaGFzaF9pbmZvLndpZHRoIC0gMSksIDIqKihzeXMuaGFzaF9pbmZvLndpZHRoIC0KKyAgMSkpYGAuICBBZ2FpbiwgaWYgdGhlIHJlc3VsdCBpcyBgYC0xYGAsIGl0J3MgcmVwbGFjZWQgd2l0aCBgYC0yYGAuCiAKIAogVG8gY2xhcmlmeSB0aGUgYWJvdmUgcnVsZXMsIGhlcmUncyBzb21lIGV4YW1wbGUgUHl0aG9uIGNvZGUsCi1lcXVpdmFsZW50IHRvIHRoZSBidWlsdGluIGhhc2gsIGZvciBjb21wdXRpbmcgdGhlIGhhc2ggb2YgYSByYXRpb25hbAorZXF1aXZhbGVudCB0byB0aGUgYnVpbHQtaW4gaGFzaCwgZm9yIGNvbXB1dGluZyB0aGUgaGFzaCBvZiBhIHJhdGlvbmFsCiBudW1iZXIsIDpjbGFzczpgZmxvYXRgLCBvciA6Y2xhc3M6YGNvbXBsZXhgOjoKIAogCkBAIC03OTQsMTE4ICs3OTgsMzcgQEAKIHRoZSB5aWVsZCBleHByZXNzaW9uIDx5aWVsZGV4cHI+YC4KIAogCi0uLiBpbmRleDo6Ci0gICBzaW5nbGU6IHN0cmluZzsgc2VxdWVuY2UgdHlwZXMKLQogLi4gX3R5cGVzc2VxOgogCi1TZXF1ZW5jZSBUeXBlcyAtLS0gOmNsYXNzOmBzdHJgLCA6Y2xhc3M6YGJ5dGVzYCwgOmNsYXNzOmBieXRlYXJyYXlgLCA6Y2xhc3M6YGxpc3RgLCA6Y2xhc3M6YHR1cGxlYCwgOmNsYXNzOmByYW5nZWAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorU2VxdWVuY2UgVHlwZXMgLS0tIDpjbGFzczpgbGlzdGAsIDpjbGFzczpgdHVwbGVgLCA6Y2xhc3M6YHJhbmdlYAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1UaGVyZSBhcmUgc2l4IHNlcXVlbmNlIHR5cGVzOiBzdHJpbmdzLCBieXRlIHNlcXVlbmNlcyAoOmNsYXNzOmBieXRlc2Agb2JqZWN0cyksCi1ieXRlIGFycmF5cyAoOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdHMpLCBsaXN0cywgdHVwbGVzLCBhbmQgcmFuZ2Ugb2JqZWN0cy4gIEZvcgotb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0IGluIDpjbGFzczpgZGljdGAgYW5kIDpjbGFzczpgc2V0YCBjbGFzc2VzLCBhbmQKLXRoZSA6bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlLgorVGhlcmUgYXJlIHRocmVlIGJhc2ljIHNlcXVlbmNlIHR5cGVzOiBsaXN0cywgdHVwbGVzLCBhbmQgcmFuZ2Ugb2JqZWN0cy4KK0FkZGl0aW9uYWwgc2VxdWVuY2UgdHlwZXMgdGFpbG9yZWQgZm9yIHByb2Nlc3Npbmcgb2YKKzpyZWY6YGJpbmFyeSBkYXRhIDxiaW5hcnlzZXE+YCBhbmQgOnJlZjpgdGV4dCBzdHJpbmdzIDx0ZXh0c2VxPmAgYXJlCitkZXNjcmliZWQgaW4gZGVkaWNhdGVkIHNlY3Rpb25zLgogCi0uLiBpbmRleDo6Ci0gICBvYmplY3Q6IHNlcXVlbmNlCi0gICBvYmplY3Q6IGJ5dGVzCi0gICBvYmplY3Q6IGJ5dGVhcnJheQotICAgb2JqZWN0OiB0dXBsZQotICAgb2JqZWN0OiBsaXN0Ci0gICBvYmplY3Q6IHJhbmdlCi0gICBvYmplY3Q6IHN0cmluZwotICAgc2luZ2xlOiBzdHJpbmcKLSAgIHNpbmdsZTogc3RyKCkgKGJ1aWx0LWluIGZ1bmN0aW9uKTsgKHNlZSBhbHNvIHN0cmluZykKIAotVGV4dHVhbCBkYXRhIGluIFB5dGhvbiBpcyBoYW5kbGVkIHdpdGggOmNsYXNzOmBzdHJgIG9iamVjdHMsIG9yIDpkZm46YHN0cmluZ3NgLgotU3RyaW5ncyBhcmUgaW1tdXRhYmxlIDpyZWY6YHNlcXVlbmNlcyA8dHlwZXNzZXE+YCBvZiBVbmljb2RlIGNvZGUgcG9pbnRzLgotU3RyaW5nIGxpdGVyYWxzIGFyZSB3cml0dGVuIGluIHNpbmdsZSBvcgotZG91YmxlIHF1b3RlczogYGAneHl6enknYGAsIGBgImZyb2JvenoiYGAuICBTZWUgOnJlZjpgc3RyaW5nc2AgZm9yIG1vcmUgYWJvdXQKLXN0cmluZyBsaXRlcmFscy4gIEluIGFkZGl0aW9uIHRvIHRoZSBmdW5jdGlvbmFsaXR5IGRlc2NyaWJlZCBoZXJlLCB0aGVyZSBhcmUKLWFsc28gc3RyaW5nLXNwZWNpZmljIG1ldGhvZHMgZGVzY3JpYmVkIGluIHRoZSA6cmVmOmBzdHJpbmctbWV0aG9kc2Agc2VjdGlvbi4KKy4uIF90eXBlc3NlcS1jb21tb246CiAKLUJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cyBjb250YWluIHNpbmdsZSBieXRlcyAtLSB0aGUgZm9ybWVyIGlzIGltbXV0YWJsZQotd2hpbGUgdGhlIGxhdHRlciBpcyBhIG11dGFibGUgc2VxdWVuY2UuCi1CeXRlcyBvYmplY3RzIGNhbiBiZSBjb25zdHJ1Y3RlZCBieSB1c2luZyB0aGUKLWNvbnN0cnVjdG9yLCA6ZnVuYzpgYnl0ZXNgLCBhbmQgZnJvbSBsaXRlcmFsczsgdXNlIGEgYGBiYGAgcHJlZml4IHdpdGggbm9ybWFsCi1zdHJpbmcgc3ludGF4OiBgYGIneHl6enknYGAuICBUbyBjb25zdHJ1Y3QgYnl0ZSBhcnJheXMsIHVzZSB0aGUKLTpmdW5jOmBieXRlYXJyYXlgIGZ1bmN0aW9uLgorQ29tbW9uIFNlcXVlbmNlIE9wZXJhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdoaWxlIHN0cmluZyBvYmplY3RzIGFyZSBzZXF1ZW5jZXMgb2YgY2hhcmFjdGVycyAocmVwcmVzZW50ZWQgYnkgc3RyaW5ncyBvZgotbGVuZ3RoIDEpLCBieXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgYXJlIHNlcXVlbmNlcyBvZiAqaW50ZWdlcnMqIChiZXR3ZWVuIDAKLWFuZCAyNTUpLCByZXByZXNlbnRpbmcgdGhlIEFTQ0lJIHZhbHVlIG9mIHNpbmdsZSBieXRlcy4gIFRoYXQgbWVhbnMgdGhhdCBmb3IKLWEgYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCAqYiosIGBgYlswXWBgIHdpbGwgYmUgYW4gaW50ZWdlciwgd2hpbGUKLWBgYlswOjFdYGAgd2lsbCBiZSBhIGJ5dGVzIG9yIGJ5dGVhcnJheSBvYmplY3Qgb2YgbGVuZ3RoIDEuICBUaGUKLXJlcHJlc2VudGF0aW9uIG9mIGJ5dGVzIG9iamVjdHMgdXNlcyB0aGUgbGl0ZXJhbCBmb3JtYXQgKGBgYicuLi4nYGApIHNpbmNlIGl0Ci1pcyBnZW5lcmFsbHkgbW9yZSB1c2VmdWwgdGhhbiBlLmcuIGBgYnl0ZXMoWzUwLCAxOSwgMTAwXSlgYC4gIFlvdSBjYW4gYWx3YXlzCi1jb252ZXJ0IGEgYnl0ZXMgb2JqZWN0IGludG8gYSBsaXN0IG9mIGludGVnZXJzIHVzaW5nIGBgbGlzdChiKWBgLgorLi4gaW5kZXg6OiBvYmplY3Q6IHNlcXVlbmNlCiAKLUFsc28sIHdoaWxlIGluIHByZXZpb3VzIFB5dGhvbiB2ZXJzaW9ucywgYnl0ZSBzdHJpbmdzIGFuZCBVbmljb2RlIHN0cmluZ3MKLWNvdWxkIGJlIGV4Y2hhbmdlZCBmb3IgZWFjaCBvdGhlciByYXRoZXIgZnJlZWx5IChiYXJyaW5nIGVuY29kaW5nIGlzc3VlcyksCi1zdHJpbmdzIGFuZCBieXRlcyBhcmUgbm93IGNvbXBsZXRlbHkgc2VwYXJhdGUgY29uY2VwdHMuICBUaGVyZSdzIG5vIGltcGxpY2l0Ci1lbi0vZGVjb2RpbmcgaWYgeW91IHBhc3MgYW4gb2JqZWN0IG9mIHRoZSB3cm9uZyB0eXBlLiAgQSBzdHJpbmcgYWx3YXlzCi1jb21wYXJlcyB1bmVxdWFsIHRvIGEgYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdC4KLQotTGlzdHMgYXJlIGNvbnN0cnVjdGVkIHdpdGggc3F1YXJlIGJyYWNrZXRzLCBzZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiBgYFthLAotYiwgY11gYC4gIFR1cGxlcyBhcmUgY29uc3RydWN0ZWQgYnkgdGhlIGNvbW1hIG9wZXJhdG9yIChub3Qgd2l0aGluIHNxdWFyZQotYnJhY2tldHMpLCB3aXRoIG9yIHdpdGhvdXQgZW5jbG9zaW5nIHBhcmVudGhlc2VzLCBidXQgYW4gZW1wdHkgdHVwbGUgbXVzdCBoYXZlCi10aGUgZW5jbG9zaW5nIHBhcmVudGhlc2VzLCBzdWNoIGFzIGBgYSwgYiwgY2BgIG9yIGBgKClgYC4gIEEgc2luZ2xlIGl0ZW0gdHVwbGUKLW11c3QgaGF2ZSBhIHRyYWlsaW5nIGNvbW1hLCBzdWNoIGFzIGBgKGQsKWBgLgotCi1PYmplY3RzIG9mIHR5cGUgcmFuZ2UgYXJlIGNyZWF0ZWQgdXNpbmcgdGhlIDpmdW5jOmByYW5nZWAgZnVuY3Rpb24uICBUaGV5IGRvbid0Ci1zdXBwb3J0IGNvbmNhdGVuYXRpb24gb3IgcmVwZXRpdGlvbiwgYW5kIHVzaW5nIDpmdW5jOmBtaW5gIG9yIDpmdW5jOmBtYXhgIG9uCi10aGVtIGlzIGluZWZmaWNpZW50LgotCi1Nb3N0IHNlcXVlbmNlIHR5cGVzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBvcGVyYXRpb25zLiAgVGhlIGBgaW5gYCBhbmQgYGBub3QgaW5gYAotb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXRpZXMgYXMgdGhlIGNvbXBhcmlzb24gb3BlcmF0aW9ucy4gIFRoZSBgYCtgYCBhbmQKLWBgKmBgIG9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSBhcyB0aGUgY29ycmVzcG9uZGluZyBudW1lcmljIG9wZXJhdGlvbnMuCi1bM11fIEFkZGl0aW9uYWwgbWV0aG9kcyBhcmUgcHJvdmlkZWQgZm9yIDpyZWY6YHR5cGVzc2VxLW11dGFibGVgLgorVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgc3VwcG9ydGVkIGJ5IG1vc3Qgc2VxdWVuY2UgdHlwZXMsCitib3RoIG11dGFibGUgYW5kIGltbXV0YWJsZS4gVGhlIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlYCBBQkMgaXMKK3Byb3ZpZGVkIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0aW9ucyBvbgorY3VzdG9tIHNlcXVlbmNlIHR5cGVzLgogCiBUaGlzIHRhYmxlIGxpc3RzIHRoZSBzZXF1ZW5jZSBvcGVyYXRpb25zIHNvcnRlZCBpbiBhc2NlbmRpbmcgcHJpb3JpdHkKIChvcGVyYXRpb25zIGluIHRoZSBzYW1lIGJveCBoYXZlIHRoZSBzYW1lIHByaW9yaXR5KS4gIEluIHRoZSB0YWJsZSwgKnMqIGFuZCAqdCoKLWFyZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZTsgKm4qLCAqaSosICpqKiBhbmQgKmsqIGFyZSBpbnRlZ2Vycy4KK2FyZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSwgKm4qLCAqaSosICpqKiBhbmQgKmsqIGFyZSBpbnRlZ2VycyBhbmQgKngqIGlzCithbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgbWVldHMgYW55IHR5cGUgYW5kIHZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKi4KIAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBPcGVyYXRpb24gICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgfAotKz09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09KwotfCBgYHggaW4gc2BgICAgICAgIHwgYGBUcnVlYGAgaWYgYW4gaXRlbSBvZiAqcyogaXMgIHwgXCgxKSAgICAgfAotfCAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlIGBgRmFsc2VgYCAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYHggbm90IGluIHNgYCAgIHwgYGBGYWxzZWBgIGlmIGFuIGl0ZW0gb2YgKnMqIGlzIHwgXCgxKSAgICAgfAotfCAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlIGBgVHJ1ZWBgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYHMgKyB0YGAgICAgICAgIHwgdGhlIGNvbmNhdGVuYXRpb24gb2YgKnMqIGFuZCAgIHwgXCg2KSAgICAgfAotfCAgICAgICAgICAgICAgICAgIHwgKnQqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYHMgKiBuLCBuICogc2BgIHwgKm4qIHNoYWxsb3cgY29waWVzIG9mICpzKiAgICAgIHwgXCgyKSAgICAgfAotfCAgICAgICAgICAgICAgICAgIHwgY29uY2F0ZW5hdGVkICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYHNbaV1gYCAgICAgICAgIHwgKmkqXCB0aCBpdGVtIG9mICpzKiwgb3JpZ2luIDAgIHwgXCgzKSAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYHNbaTpqXWBgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgIHwgKDMpKDQpICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYHNbaTpqOmtdYGAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgIHwgKDMpKDUpICAgfAotfCAgICAgICAgICAgICAgICAgIHwgd2l0aCBzdGVwICprKiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYGxlbihzKWBgICAgICAgIHwgbGVuZ3RoIG9mICpzKiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYG1pbihzKWBgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYG1heChzKWBgICAgICAgIHwgbGFyZ2VzdCBpdGVtIG9mICpzKiAgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYHMuaW5kZXgoaSlgYCAgIHwgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VyZW5jZSAgIHwgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgIHwgb2YgKmkqIGluICpzKiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotfCBgYHMuY291bnQoaSlgYCAgIHwgdG90YWwgbnVtYmVyIG9mIG9jY3VyZW5jZXMgb2YgIHwgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgIHwgKmkqIGluICpzKiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKwotCi1TZXF1ZW5jZSB0eXBlcyBhbHNvIHN1cHBvcnQgY29tcGFyaXNvbnMuICBJbiBwYXJ0aWN1bGFyLCB0dXBsZXMgYW5kIGxpc3RzIGFyZQotY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgY29tcGFyaW5nIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMuICBUaGlzIG1lYW5zIHRoYXQKLXRvIGNvbXBhcmUgZXF1YWwsIGV2ZXJ5IGVsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUgdHdvIHNlcXVlbmNlcyBtdXN0IGJlCi1vZiB0aGUgc2FtZSB0eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4gIChGb3IgZnVsbCBkZXRhaWxzIHNlZQotOnJlZjpgY29tcGFyaXNvbnNgIGluIHRoZSBsYW5ndWFnZSByZWZlcmVuY2UuKQorVGhlIGBgaW5gYCBhbmQgYGBub3QgaW5gYCBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdGllcyBhcyB0aGUKK2NvbXBhcmlzb24gb3BlcmF0aW9ucy4gVGhlIGBgK2BgIChjb25jYXRlbmF0aW9uKSBhbmQgYGAqYGAgKHJlcGV0aXRpb24pCitvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkgYXMgdGhlIGNvcnJlc3BvbmRpbmcgbnVtZXJpYyBvcGVyYXRpb25zLgogCiAuLiBpbmRleDo6CiAgICB0cmlwbGU6IG9wZXJhdGlvbnMgb247IHNlcXVlbmNlOyB0eXBlcwpAQCAtOTE4LDE4ICs4NDEsNjcgQEAKICAgIHBhaXI6IHNsaWNlOyBvcGVyYXRpb24KICAgIG9wZXJhdG9yOiBpbgogICAgb3BlcmF0b3I6IG5vdCBpbgorICAgc2luZ2xlOiBjb3VudCgpIChzZXF1ZW5jZSBtZXRob2QpCisgICBzaW5nbGU6IGluZGV4KCkgKHNlcXVlbmNlIG1ldGhvZCkKKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IE9wZXJhdGlvbiAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgIHwKKys9PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09KworfCBgYHggaW4gc2BgICAgICAgICAgICAgICAgfCBgYFRydWVgYCBpZiBhbiBpdGVtIG9mICpzKiBpcyAgfCBcKDEpICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSBgYEZhbHNlYGAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYHggbm90IGluIHNgYCAgICAgICAgICAgfCBgYEZhbHNlYGAgaWYgYW4gaXRlbSBvZiAqcyogaXMgfCBcKDEpICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSBgYFRydWVgYCAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYHMgKyB0YGAgICAgICAgICAgICAgICAgfCB0aGUgY29uY2F0ZW5hdGlvbiBvZiAqcyogYW5kICAgfCAoNikoNykgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp0KiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYHMgKiBuYGAgb3IgICAgICAgICAgICAgfCAqbiogc2hhbGxvdyBjb3BpZXMgb2YgKnMqICAgICAgfCAoMikoNykgICB8Cit8IGBgbiAqIHNgYCAgICAgICAgICAgICAgICB8IGNvbmNhdGVuYXRlZCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYHNbaV1gYCAgICAgICAgICAgICAgICAgfCAqaSpcIHRoIGl0ZW0gb2YgKnMqLCBvcmlnaW4gMCAgfCBcKDMpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBzW2k6al1gYCAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgIHwgKDMpKDQpICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IGBgc1tpOmo6a11gYCAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICB8ICgzKSg1KSAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2l0aCBzdGVwICprKiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IGBgbGVuKHMpYGAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiAqcyogICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYG1pbihzKWBgICAgICAgICAgICAgICAgfCBzbWFsbGVzdCBpdGVtIG9mICpzKiAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBtYXgocylgYCAgICAgICAgICAgICAgIHwgbGFyZ2VzdCBpdGVtIG9mICpzKiAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IGBgcy5pbmRleCh4WywgaVssIGpdXSlgYCB8IGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cmVuY2UgICB8IFwoOCkgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2YgKngqIGluICpzKiAoYXQgb3IgYWZ0ZXIgICAgIHwgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCAqaSogYW5kIGJlZm9yZSBpbmRleCAqaiopfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBzLmNvdW50KHgpYGAgICAgICAgICAgIHwgdG90YWwgbnVtYmVyIG9mIG9jY3VyZW5jZXMgb2YgIHwgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogaW4gKnMqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKKworU2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGUgYWxzbyBzdXBwb3J0IGNvbXBhcmlzb25zLiAgSW4gcGFydGljdWxhciwgdHVwbGVzCithbmQgbGlzdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IGJ5IGNvbXBhcmluZyBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLgorVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGV2ZXJ5IGVsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUKK3R3byBzZXF1ZW5jZXMgbXVzdCBiZSBvZiB0aGUgc2FtZSB0eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4gIChGb3IgZnVsbAorZGV0YWlscyBzZWUgOnJlZjpgY29tcGFyaXNvbnNgIGluIHRoZSBsYW5ndWFnZSByZWZlcmVuY2UuKQogCiBOb3RlczoKIAogKDEpCi0gICBXaGVuICpzKiBpcyBhIHN0cmluZyBvYmplY3QsIHRoZSBgYGluYGAgYW5kIGBgbm90IGluYGAgb3BlcmF0aW9ucyBhY3QgbGlrZSBhCi0gICBzdWJzdHJpbmcgdGVzdC4KKyAgIFdoaWxlIHRoZSBgYGluYGAgYW5kIGBgbm90IGluYGAgb3BlcmF0aW9ucyBhcmUgdXNlZCBvbmx5IGZvciBzaW1wbGUKKyAgIGNvbnRhaW5tZW50IHRlc3RpbmcgaW4gdGhlIGdlbmVyYWwgY2FzZSwgc29tZSBzcGVjaWFsaXNlZCBzZXF1ZW5jZXMKKyAgIChzdWNoIGFzIDpjbGFzczpgc3RyYCwgOmNsYXNzOmBieXRlc2AgYW5kIDpjbGFzczpgYnl0ZWFycmF5YCkgYWxzbyB1c2UKKyAgIHRoZW0gZm9yIHN1YnNlcXVlbmNlIHRlc3Rpbmc6OgorCisgICAgICA+Pj4gImdnIiBpbiAiZWdncyIKKyAgICAgIFRydWUKIAogKDIpCiAgICBWYWx1ZXMgb2YgKm4qIGxlc3MgdGhhbiBgYDBgYCBhcmUgdHJlYXRlZCBhcyBgYDBgYCAod2hpY2ggeWllbGRzIGFuIGVtcHR5CiAgICBzZXF1ZW5jZSBvZiB0aGUgc2FtZSB0eXBlIGFzICpzKikuICBOb3RlIGFsc28gdGhhdCB0aGUgY29waWVzIGFyZSBzaGFsbG93OwogICAgbmVzdGVkIHN0cnVjdHVyZXMgYXJlIG5vdCBjb3BpZWQuICBUaGlzIG9mdGVuIGhhdW50cyBuZXcgUHl0aG9uIHByb2dyYW1tZXJzOwotICAgY29uc2lkZXI6CisgICBjb25zaWRlcjo6CiAKICAgICAgID4+PiBsaXN0cyA9IFtbXV0gKiAzCiAgICAgICA+Pj4gbGlzdHMKQEAgLTk0MSw3ICs5MTMsNyBAQAogICAgV2hhdCBoYXMgaGFwcGVuZWQgaXMgdGhhdCBgYFtbXV1gYCBpcyBhIG9uZS1lbGVtZW50IGxpc3QgY29udGFpbmluZyBhbiBlbXB0eQogICAgbGlzdCwgc28gYWxsIHRocmVlIGVsZW1lbnRzIG9mIGBgW1tdXSAqIDNgYCBhcmUgKHBvaW50ZXJzIHRvKSB0aGlzIHNpbmdsZSBlbXB0eQogICAgbGlzdC4gIE1vZGlmeWluZyBhbnkgb2YgdGhlIGVsZW1lbnRzIG9mIGBgbGlzdHNgYCBtb2RpZmllcyB0aGlzIHNpbmdsZSBsaXN0LgotICAgWW91IGNhbiBjcmVhdGUgYSBsaXN0IG9mIGRpZmZlcmVudCBsaXN0cyB0aGlzIHdheToKKyAgIFlvdSBjYW4gY3JlYXRlIGEgbGlzdCBvZiBkaWZmZXJlbnQgbGlzdHMgdGhpcyB3YXk6OgogCiAgICAgICA+Pj4gbGlzdHMgPSBbW10gZm9yIGkgaW4gcmFuZ2UoMyldCiAgICAgICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpCkBAIC05NzIsMzMgKzk0NCw1MjYgQEAKICAgIElmICprKiBpcyBgYE5vbmVgYCwgaXQgaXMgdHJlYXRlZCBsaWtlIGBgMWBgLgogCiAoNikKLSAgIENvbmNhdGVuYXRpbmcgaW1tdXRhYmxlIHN0cmluZ3MgYWx3YXlzIHJlc3VsdHMgaW4gYSBuZXcgb2JqZWN0LiAgVGhpcyBtZWFucwotICAgdGhhdCBidWlsZGluZyB1cCBhIHN0cmluZyBieSByZXBlYXRlZCBjb25jYXRlbmF0aW9uIHdpbGwgaGF2ZSBhIHF1YWRyYXRpYwotICAgcnVudGltZSBjb3N0IGluIHRoZSB0b3RhbCBzdHJpbmcgbGVuZ3RoLiAgVG8gZ2V0IGEgbGluZWFyIHJ1bnRpbWUgY29zdCwKLSAgIHlvdSBtdXN0IHN3aXRjaCB0byBvbmUgb2YgdGhlIGFsdGVybmF0aXZlcyBiZWxvdzoKKyAgIENvbmNhdGVuYXRpbmcgaW1tdXRhYmxlIHNlcXVlbmNlcyBhbHdheXMgcmVzdWx0cyBpbiBhIG5ldyBvYmplY3QuICBUaGlzCisgICBtZWFucyB0aGF0IGJ1aWxkaW5nIHVwIGEgc2VxdWVuY2UgYnkgcmVwZWF0ZWQgY29uY2F0ZW5hdGlvbiB3aWxsIGhhdmUgYQorICAgcXVhZHJhdGljIHJ1bnRpbWUgY29zdCBpbiB0aGUgdG90YWwgc2VxdWVuY2UgbGVuZ3RoLiAgVG8gZ2V0IGEgbGluZWFyCisgICBydW50aW1lIGNvc3QsIHlvdSBtdXN0IHN3aXRjaCB0byBvbmUgb2YgdGhlIGFsdGVybmF0aXZlcyBiZWxvdzoKIAogICAgKiBpZiBjb25jYXRlbmF0aW5nIDpjbGFzczpgc3RyYCBvYmplY3RzLCB5b3UgY2FuIGJ1aWxkIGEgbGlzdCBhbmQgdXNlCi0gICAgIDptZXRoOmBzdHIuam9pbmAgYXQgdGhlIGVuZDsKKyAgICAgOm1ldGg6YHN0ci5qb2luYCBhdCB0aGUgZW5kIG9yIGVsc2Ugd3JpdGUgdG8gYSA6Y2xhc3M6YGlvLlN0cmluZ0lPYAorICAgICBpbnN0YW5jZSBhbmQgcmV0cmlldmUgaXRzIHZhbHVlIHdoZW4gY29tcGxldGUKIAogICAgKiBpZiBjb25jYXRlbmF0aW5nIDpjbGFzczpgYnl0ZXNgIG9iamVjdHMsIHlvdSBjYW4gc2ltaWxhcmx5IHVzZQotICAgICA6bWV0aDpgYnl0ZXMuam9pbmAsIG9yIHlvdSBjYW4gZG8gaW4tcGxhY2UgY29uY2F0ZW5hdGlvbiB3aXRoIGEKLSAgICAgOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdC4gIDpjbGFzczpgYnl0ZWFycmF5YCBvYmplY3RzIGFyZSBtdXRhYmxlIGFuZAotICAgICBoYXZlIGFuIGVmZmljaWVudCBvdmVyYWxsb2NhdGlvbiBtZWNoYW5pc20uCisgICAgIDptZXRoOmBieXRlcy5qb2luYCBvciA6Y2xhc3M6YGlvLkJ5dGVzSU9gLCBvciB5b3UgY2FuIGRvIGluLXBsYWNlCisgICAgIGNvbmNhdGVuYXRpb24gd2l0aCBhIDpjbGFzczpgYnl0ZWFycmF5YCBvYmplY3QuICA6Y2xhc3M6YGJ5dGVhcnJheWAKKyAgICAgb2JqZWN0cyBhcmUgbXV0YWJsZSBhbmQgaGF2ZSBhbiBlZmZpY2llbnQgb3ZlcmFsbG9jYXRpb24gbWVjaGFuaXNtCiAKKyAgICogaWYgY29uY2F0ZW5hdGluZyA6Y2xhc3M6YHR1cGxlYCBvYmplY3RzLCBleHRlbmQgYSA6Y2xhc3M6YGxpc3RgIGluc3RlYWQKKworICAgKiBmb3Igb3RoZXIgdHlwZXMsIGludmVzdGlnYXRlIHRoZSByZWxldmFudCBjbGFzcyBkb2N1bWVudGF0aW9uCisKKworKDcpCisgIFNvbWUgc2VxdWVuY2UgdHlwZXMgKHN1Y2ggYXMgOmNsYXNzOmByYW5nZWApIG9ubHkgc3VwcG9ydCBpdGVtIHNlcXVlbmNlcworICB0aGF0IGZvbGxvdyBzcGVjaWZpYyBwYXR0ZXJucywgYW5kIGhlbmNlIGRvbid0IHN1cHBvcnQgc2VxdWVuY2UKKyAgY29uY2F0ZW5hdGlvbiBvciByZXBldGl0aW9uLgorCisoOCkKKyAgIGBgaW5kZXhgYCByYWlzZXMgOmV4YzpgVmFsdWVFcnJvcmAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi4KKyAgIFdoZW4gc3VwcG9ydGVkLCB0aGUgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gdGhlIGluZGV4IG1ldGhvZCBhbGxvdworICAgZWZmaWNpZW50IHNlYXJjaGluZyBvZiBzdWJzZWN0aW9ucyBvZiB0aGUgc2VxdWVuY2UuIFBhc3NpbmcgdGhlIGV4dHJhCisgICBhcmd1bWVudHMgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHVzaW5nIGBgc1tpOmpdLmluZGV4KHgpYGAsIG9ubHkKKyAgIHdpdGhvdXQgY29weWluZyBhbnkgZGF0YSBhbmQgd2l0aCB0aGUgcmV0dXJuZWQgaW5kZXggYmVpbmcgcmVsYXRpdmUgdG8KKyAgIHRoZSBzdGFydCBvZiB0aGUgc2VxdWVuY2UgcmF0aGVyIHRoYW4gdGhlIHN0YXJ0IG9mIHRoZSBzbGljZS4KKworCisuLiBfdHlwZXNzZXEtaW1tdXRhYmxlOgorCitJbW11dGFibGUgU2VxdWVuY2UgVHlwZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICB0cmlwbGU6IGltbXV0YWJsZTsgc2VxdWVuY2U7IHR5cGVzCisgICBvYmplY3Q6IHR1cGxlCisgICBidWlsdGluOiBoYXNoCisKK1RoZSBvbmx5IG9wZXJhdGlvbiB0aGF0IGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBnZW5lcmFsbHkgaW1wbGVtZW50IHRoYXQgaXMKK25vdCBhbHNvIGltcGxlbWVudGVkIGJ5IG11dGFibGUgc2VxdWVuY2UgdHlwZXMgaXMgc3VwcG9ydCBmb3IgdGhlIDpmdW5jOmBoYXNoYAorYnVpbHQtaW4uCisKK1RoaXMgc3VwcG9ydCBhbGxvd3MgaW1tdXRhYmxlIHNlcXVlbmNlcywgc3VjaCBhcyA6Y2xhc3M6YHR1cGxlYCBpbnN0YW5jZXMsIHRvCitiZSB1c2VkIGFzIDpjbGFzczpgZGljdGAga2V5cyBhbmQgc3RvcmVkIGluIDpjbGFzczpgc2V0YCBhbmQgOmNsYXNzOmBmcm96ZW5zZXRgCitpbnN0YW5jZXMuCisKK0F0dGVtcHRpbmcgdG8gaGFzaCBhbiBpbW11dGFibGUgc2VxdWVuY2UgdGhhdCBjb250YWlucyB1bmhhc2hhYmxlIHZhbHVlcyB3aWxsCityZXN1bHQgaW4gOmV4YzpgVHlwZUVycm9yYC4KKworCisuLiBfdHlwZXNzZXEtbXV0YWJsZToKKworTXV0YWJsZSBTZXF1ZW5jZSBUeXBlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICB0cmlwbGU6IG11dGFibGU7IHNlcXVlbmNlOyB0eXBlcworICAgb2JqZWN0OiBsaXN0CisgICBvYmplY3Q6IGJ5dGVhcnJheQorCitUaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uIG11dGFibGUgc2VxdWVuY2UgdHlwZXMuCitUaGUgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlYCBBQkMgaXMgcHJvdmlkZWQgdG8gbWFrZSBpdAorZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0aW9ucyBvbiBjdXN0b20gc2VxdWVuY2UgdHlwZXMuCisKK0luIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsICp0KiBpcyBhbnkKK2l0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZQorYW5kIHZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsIDpjbGFzczpgYnl0ZWFycmF5YCBvbmx5CithY2NlcHRzIGludGVnZXJzIHRoYXQgbWVldCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24gYGAwIDw9IHggPD0gMjU1YGApLgorCisKKy4uIGluZGV4OjoKKyAgIHRyaXBsZTogb3BlcmF0aW9ucyBvbjsgc2VxdWVuY2U7IHR5cGVzCisgICB0cmlwbGU6IG9wZXJhdGlvbnMgb247IGxpc3Q7IHR5cGUKKyAgIHBhaXI6IHN1YnNjcmlwdDsgYXNzaWdubWVudAorICAgcGFpcjogc2xpY2U7IGFzc2lnbm1lbnQKKyAgIHN0YXRlbWVudDogZGVsCisgICBzaW5nbGU6IGFwcGVuZCgpIChzZXF1ZW5jZSBtZXRob2QpCisgICBzaW5nbGU6IGNsZWFyKCkgKHNlcXVlbmNlIG1ldGhvZCkKKyAgIHNpbmdsZTogY29weSgpIChzZXF1ZW5jZSBtZXRob2QpCisgICBzaW5nbGU6IGV4dGVuZCgpIChzZXF1ZW5jZSBtZXRob2QpCisgICBzaW5nbGU6IGluc2VydCgpIChzZXF1ZW5jZSBtZXRob2QpCisgICBzaW5nbGU6IHBvcCgpIChzZXF1ZW5jZSBtZXRob2QpCisgICBzaW5nbGU6IHJlbW92ZSgpIChzZXF1ZW5jZSBtZXRob2QpCisgICBzaW5nbGU6IHJldmVyc2UoKSAoc2VxdWVuY2UgbWV0aG9kKQorCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgfAorKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT0rCit8IGBgc1tpXSA9IHhgYCAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgYnkgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgc1tpOmpdID0gdGBgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlzIHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiB8ICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhlIGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBkZWwgc1tpOmpdYGAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2k6al0gPSBbXWBgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgc1tpOmo6a10gPSB0YGAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgYGBzW2k6ajprXWBgICAgfCBcKDEpICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZSByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgZGVsIHNbaTpqOmtdYGAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyBvZiAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmo6a11gYCBmcm9tIHRoZSBsaXN0ICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgcy5hcHBlbmQoeClgYCAgICAgICAgICAgICAgfCBhcHBlbmRzICp4KiB0byB0aGUgZW5kIG9mIHRoZSAgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlcXVlbmNlIChzYW1lIGFzICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2xlbihzKTpsZW4ocyldID0gW3hdYGApICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBzLmNsZWFyKClgYCAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zIGZyb20gYGBzYGAgICB8IFwoNSkgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBkZWwgc1s6XWBgKSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBzLmNvcHkoKWBgICAgICAgICAgICAgICAgICB8IGNyZWF0ZXMgYSBzaGFsbG93IGNvcHkgb2YgYGBzYGB8IFwoNSkgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBzWzpdYGApICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBzLmV4dGVuZCh0KWBgICAgICAgICAgICAgICB8IGV4dGVuZHMgKnMqIHdpdGggdGhlICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY29udGVudHMgb2YgKnQqIChzYW1lIGFzICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbbGVuKHMpOmxlbihzKV0gPSB0YGApICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHMuaW5zZXJ0KGksIHgpYGAgICAgICAgICAgIHwgaW5zZXJ0cyAqeCogaW50byAqcyogYXQgdGhlICAgIHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCBnaXZlbiBieSAqaSogICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzIGBgc1tpOmldID0gW3hdYGApICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgcy5wb3AoW2ldKWBgICAgICAgICAgICAgICAgfCByZXRyaWV2ZXMgdGhlIGl0ZW0gYXQgKmkqIGFuZCAgfCBcKDIpICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsc28gcmVtb3ZlcyBpdCBmcm9tICpzKiAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgcy5yZW1vdmUoeClgYCAgICAgICAgICAgICAgfCByZW1vdmUgdGhlIGZpcnN0IGl0ZW0gZnJvbSAqcyogfCBcKDMpICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoZXJlIGBgc1tpXSA9PSB4YGAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgcy5yZXZlcnNlKClgYCAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgKnMqIGluICAgfCBcKDQpICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKworTm90ZXM6CisKKygxKQorICAgKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy4KKworKDIpCisgICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvIGBgLTFgYCwgc28gdGhhdCBieSBkZWZhdWx0IHRoZSBsYXN0CisgICBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLgorCisoMykKKyAgIGBgcmVtb3ZlYGAgcmFpc2VzIDpleGM6YFZhbHVlRXJyb3JgIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouCisKKyg0KQorICAgVGhlIDptZXRoOmByZXZlcnNlYCBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvciBlY29ub215IG9mCisgICBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzIHRoYXQgaXQgb3BlcmF0ZXMgYnkKKyAgIHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHJldmVyc2VkIHNlcXVlbmNlLgorCisoNSkKKyAgIDptZXRoOmBjbGVhcmAgYW5kIDptZXRoOmAhY29weWAgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZQorICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb24ndCBzdXBwb3J0IHNsaWNpbmcgb3BlcmF0aW9ucworICAgKHN1Y2ggYXMgOmNsYXNzOmBkaWN0YCBhbmQgOmNsYXNzOmBzZXRgKQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIDptZXRoOmBjbGVhcmAgYW5kIDptZXRoOmAhY29weWAgbWV0aG9kcy4KKworCisuLiBfdHlwZXNzZXEtbGlzdDoKKworTGlzdHMKKy0tLS0tCisKKy4uIGluZGV4Ojogb2JqZWN0OiBsaXN0CisKK0xpc3RzIGFyZSBtdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgb2YKK2hvbW9nZW5lb3VzIGl0ZW1zICh3aGVyZSB0aGUgcHJlY2lzZSBkZWdyZWUgb2Ygc2ltaWxhcml0eSB3aWxsIHZhcnkgYnkKK2FwcGxpY2F0aW9uKS4KKworLi4gY2xhc3M6OiBsaXN0KFtpdGVyYWJsZV0pCisKKyAgIExpc3RzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBzZXZlcmFsIHdheXM6CisKKyAgICogVXNpbmcgYSBwYWlyIG9mIHNxdWFyZSBicmFja2V0cyB0byBkZW5vdGUgdGhlIGVtcHR5IGxpc3Q6IGBgW11gYAorICAgKiBVc2luZyBzcXVhcmUgYnJhY2tldHMsIHNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6IGBgW2FdYGAsIGBgW2EsIGIsIGNdYGAKKyAgICogVXNpbmcgYSBsaXN0IGNvbXByZWhlbnNpb246IGBgW3ggZm9yIHggaW4gaXRlcmFibGVdYGAKKyAgICogVXNpbmcgdGhlIHR5cGUgY29uc3RydWN0b3I6IGBgbGlzdCgpYGAgb3IgYGBsaXN0KGl0ZXJhYmxlKWBgCisKKyAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSBsaXN0IHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgaW4gdGhlIHNhbWUKKyAgIG9yZGVyIGFzICppdGVyYWJsZSoncyBpdGVtcy4gICppdGVyYWJsZSogbWF5IGJlIGVpdGhlciBhIHNlcXVlbmNlLCBhCisgICBjb250YWluZXIgdGhhdCBzdXBwb3J0cyBpdGVyYXRpb24sIG9yIGFuIGl0ZXJhdG9yIG9iamVjdC4gIElmICppdGVyYWJsZSoKKyAgIGlzIGFscmVhZHkgYSBsaXN0LCBhIGNvcHkgaXMgbWFkZSBhbmQgcmV0dXJuZWQsIHNpbWlsYXIgdG8gYGBpdGVyYWJsZVs6XWBgLgorICAgRm9yIGV4YW1wbGUsIGBgbGlzdCgnYWJjJylgYCByZXR1cm5zIGBgWydhJywgJ2InLCAnYyddYGAgYW5kCisgICBgYGxpc3QoICgxLCAyLCAzKSApYGAgcmV0dXJucyBgYFsxLCAyLCAzXWBgLgorICAgSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3IGVtcHR5IGxpc3QsIGBgW11gYC4KKworCisgICBNYW55IG90aGVyIG9wZXJhdGlvbnMgYWxzbyBwcm9kdWNlIGxpc3RzLCBpbmNsdWRpbmcgdGhlIDpmdW5jOmBzb3J0ZWRgCisgICBidWlsdC1pbi4KKworICAgTGlzdHMgaW1wbGVtZW50IGFsbCBvZiB0aGUgOnJlZjpgY29tbW9uIDx0eXBlc3NlcS1jb21tb24+YCBhbmQKKyAgIDpyZWY6YG11dGFibGUgPHR5cGVzc2VxLW11dGFibGU+YCBzZXF1ZW5jZSBvcGVyYXRpb25zLiBMaXN0cyBhbHNvIHByb3ZpZGUgdGhlCisgICBmb2xsb3dpbmcgYWRkaXRpb25hbCBtZXRob2Q6CisKKyAgIC4uIG1ldGhvZDo6IGxpc3Quc29ydCgqLCBrZXk9Tm9uZSwgcmV2ZXJzZT1Ob25lKQorCisgICAgICBUaGlzIG1ldGhvZCBzb3J0cyB0aGUgbGlzdCBpbiBwbGFjZSwgdXNpbmcgb25seSBgYDxgYCBjb21wYXJpc29ucworICAgICAgYmV0d2VlbiBpdGVtcy4gRXhjZXB0aW9ucyBhcmUgbm90IHN1cHByZXNzZWQgLSBpZiBhbnkgY29tcGFyaXNvbiBvcGVyYXRpb25zCisgICAgICBmYWlsLCB0aGUgZW50aXJlIHNvcnQgb3BlcmF0aW9uIHdpbGwgZmFpbCAoYW5kIHRoZSBsaXN0IHdpbGwgbGlrZWx5IGJlIGxlZnQKKyAgICAgIGluIGEgcGFydGlhbGx5IG1vZGlmaWVkIHN0YXRlKS4KKworICAgICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0byBleHRyYWN0IGEKKyAgICAgIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQgKGZvciBleGFtcGxlLCBgYGtleT1zdHIubG93ZXJgYCkuCisgICAgICBUaGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBpdGVtIGluIHRoZSBsaXN0IGlzIGNhbGN1bGF0ZWQgb25jZSBhbmQKKyAgICAgIHRoZW4gdXNlZCBmb3IgdGhlIGVudGlyZSBzb3J0aW5nIHByb2Nlc3MuIFRoZSBkZWZhdWx0IHZhbHVlIG9mIGBgTm9uZWBgCisgICAgICBtZWFucyB0aGF0IGxpc3QgaXRlbXMgYXJlIHNvcnRlZCBkaXJlY3RseSB3aXRob3V0IGNhbGN1bGF0aW5nIGEgc2VwYXJhdGUKKyAgICAgIGtleSB2YWx1ZS4KKworICAgICAgVGhlIDpmdW5jOmBmdW5jdG9vbHMuY21wX3RvX2tleWAgdXRpbGl0eSBpcyBhdmFpbGFibGUgdG8gY29udmVydCBhIDIueAorICAgICAgc3R5bGUgKmNtcCogZnVuY3Rpb24gdG8gYSAqa2V5KiBmdW5jdGlvbi4KKworICAgICAgKnJldmVyc2UqIGlzIGEgYm9vbGVhbiB2YWx1ZS4gIElmIHNldCB0byBgYFRydWVgYCwgdGhlbiB0aGUgbGlzdCBlbGVtZW50cworICAgICAgYXJlIHNvcnRlZCBhcyBpZiBlYWNoIGNvbXBhcmlzb24gd2VyZSByZXZlcnNlZC4KKworICAgICAgVGhpcyBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvciBlY29ub215IG9mIHNwYWNlIHdoZW4KKyAgICAgIHNvcnRpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2VycyB0aGF0IGl0IG9wZXJhdGVzIGJ5IHNpZGUKKyAgICAgIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSBzb3J0ZWQgc2VxdWVuY2UgKHVzZSA6ZnVuYzpgc29ydGVkYCB0bworICAgICAgZXhwbGljaXRseSByZXF1ZXN0IGEgbmV3IHNvcnRlZCBsaXN0IGluc3RhbmNlKS4KKworICAgICAgVGhlIDptZXRoOmBzb3J0YCBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBIHNvcnQgaXMgc3RhYmxlIGlmIGl0CisgICAgICBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIGVsZW1lbnRzIHRoYXQgY29tcGFyZSBlcXVhbAorICAgICAgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3Igc29ydGluZyBpbiBtdWx0aXBsZSBwYXNzZXMgKGZvciBleGFtcGxlLCBzb3J0IGJ5CisgICAgICBkZXBhcnRtZW50LCB0aGVuIGJ5IHNhbGFyeSBncmFkZSkuCisKKyAgICAgIC4uIGltcGwtZGV0YWlsOjoKKworICAgICAgICAgV2hpbGUgYSBsaXN0IGlzIGJlaW5nIHNvcnRlZCwgdGhlIGVmZmVjdCBvZiBhdHRlbXB0aW5nIHRvIG11dGF0ZSwgb3IgZXZlbgorICAgICAgICAgaW5zcGVjdCwgdGhlIGxpc3QgaXMgdW5kZWZpbmVkLiAgVGhlIEMgaW1wbGVtZW50YXRpb24gb2YgUHl0aG9uIG1ha2VzIHRoZQorICAgICAgICAgbGlzdCBhcHBlYXIgZW1wdHkgZm9yIHRoZSBkdXJhdGlvbiwgYW5kIHJhaXNlcyA6ZXhjOmBWYWx1ZUVycm9yYCBpZiBpdCBjYW4KKyAgICAgICAgIGRldGVjdCB0aGF0IHRoZSBsaXN0IGhhcyBiZWVuIG11dGF0ZWQgZHVyaW5nIGEgc29ydC4KKworCisuLiBfdHlwZXNzZXEtdHVwbGU6CisKK1R1cGxlcworLS0tLS0tCisKKy4uIGluZGV4Ojogb2JqZWN0OiB0dXBsZQorCitUdXBsZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHR5cGljYWxseSB1c2VkIHRvIHN0b3JlIGNvbGxlY3Rpb25zIG9mCitoZXRlcm9nZW5lb3VzIGRhdGEgKHN1Y2ggYXMgdGhlIDItdHVwbGVzIHByb2R1Y2VkIGJ5IHRoZSA6ZnVuYzpgZW51bWVyYXRlYAorYnVpbHQtaW4pLiBUdXBsZXMgYXJlIGFsc28gdXNlZCBmb3IgY2FzZXMgd2hlcmUgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIG9mCitob21vZ2VuZW91cyBkYXRhIGlzIG5lZWRlZCAoc3VjaCBhcyBhbGxvd2luZyBzdG9yYWdlIGluIGEgOmNsYXNzOmBzZXRgIG9yCis6Y2xhc3M6YGRpY3RgIGluc3RhbmNlKS4KKworLi4gY2xhc3M6OiB0dXBsZShbaXRlcmFibGVdKQorCisgICBUdXBsZXMgbWF5IGJlIGNvbnN0cnVjdGVkIGluIGEgbnVtYmVyIG9mIHdheXM6CisKKyAgICogVXNpbmcgYSBwYWlyIG9mIHBhcmVudGhlc2VzIHRvIGRlbm90ZSB0aGUgZW1wdHkgdHVwbGU6IGBgKClgYAorICAgKiBVc2luZyBhIHRyYWlsaW5nIGNvbW1hIGZvciBhIHNpbmdsZXRvbiB0dXBsZTogYGBhLGBgIG9yIGBgKGEsKWBgCisgICAqIFNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6IGBgYSwgYiwgY2BgIG9yIGBgKGEsIGIsIGMpYGAKKyAgICogVXNpbmcgdGhlIDpmdW5jOmB0dXBsZWAgYnVpbHQtaW46IGBgdHVwbGUoKWBgIG9yIGBgdHVwbGUoaXRlcmFibGUpYGAKKworICAgVGhlIGNvbnN0cnVjdG9yIGJ1aWxkcyBhIHR1cGxlIHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgaW4gdGhlIHNhbWUKKyAgIG9yZGVyIGFzICppdGVyYWJsZSoncyBpdGVtcy4gICppdGVyYWJsZSogbWF5IGJlIGVpdGhlciBhIHNlcXVlbmNlLCBhCisgICBjb250YWluZXIgdGhhdCBzdXBwb3J0cyBpdGVyYXRpb24sIG9yIGFuIGl0ZXJhdG9yIG9iamVjdC4gIElmICppdGVyYWJsZSoKKyAgIGlzIGFscmVhZHkgYSB0dXBsZSwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLiBGb3IgZXhhbXBsZSwKKyAgIGBgdHVwbGUoJ2FiYycpYGAgcmV0dXJucyBgYCgnYScsICdiJywgJ2MnKWBgIGFuZAorICAgYGB0dXBsZSggWzEsIDIsIDNdIClgYCByZXR1cm5zIGBgKDEsIDIsIDMpYGAuCisgICBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgdGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBuZXcgZW1wdHkgdHVwbGUsIGBgKClgYC4KKworICAgTm90ZSB0aGF0IGl0IGlzIGFjdHVhbGx5IHRoZSBjb21tYSB3aGljaCBtYWtlcyBhIHR1cGxlLCBub3QgdGhlIHBhcmVudGhlc2VzLgorICAgVGhlIHBhcmVudGhlc2VzIGFyZSBvcHRpb25hbCwgZXhjZXB0IGluIHRoZSBlbXB0eSB0dXBsZSBjYXNlLCBvcgorICAgd2hlbiB0aGV5IGFyZSBuZWVkZWQgdG8gYXZvaWQgc3ludGFjdGljIGFtYmlndWl0eS4gRm9yIGV4YW1wbGUsCisgICBgYGYoYSwgYiwgYylgYCBpcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCB0aHJlZSBhcmd1bWVudHMsIHdoaWxlCisgICBgYGYoKGEsIGIsIGMpKWBgIGlzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgMy10dXBsZSBhcyB0aGUgc29sZSBhcmd1bWVudC4KKworICAgVHVwbGVzIGltcGxlbWVudCBhbGwgb2YgdGhlIDpyZWY6YGNvbW1vbiA8dHlwZXNzZXEtY29tbW9uPmAgc2VxdWVuY2UKKyAgIG9wZXJhdGlvbnMuCisKK0ZvciBoZXRlcm9nZW5lb3VzIGNvbGxlY3Rpb25zIG9mIGRhdGEgd2hlcmUgYWNjZXNzIGJ5IG5hbWUgaXMgY2xlYXJlciB0aGFuCithY2Nlc3MgYnkgaW5kZXgsIDpmdW5jOmBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlYCBtYXkgYmUgYSBtb3JlIGFwcHJvcHJpYXRlCitjaG9pY2UgdGhhbiBhIHNpbXBsZSB0dXBsZSBvYmplY3QuCisKKworLi4gX3R5cGVzc2VxLXJhbmdlOgorCitSYW5nZXMKKy0tLS0tLQorCisuLiBpbmRleDo6IG9iamVjdDogcmFuZ2UKKworVGhlIDpjbGFzczpgcmFuZ2VgIHR5cGUgcmVwcmVzZW50cyBhbiBpbW11dGFibGUgc2VxdWVuY2Ugb2YgbnVtYmVycyBhbmQgaXMKK2NvbW1vbmx5IHVzZWQgZm9yIGxvb3BpbmcgYSBzcGVjaWZpYyBudW1iZXIgb2YgdGltZXMgaW4gOmtleXdvcmQ6YGZvcmAKK2xvb3BzLgorCisuLiBjbGFzczo6IHJhbmdlKHN0b3ApCisgICAgICAgICAgIHJhbmdlKHN0YXJ0LCBzdG9wWywgc3RlcF0pCisKKyAgIFRoZSBhcmd1bWVudHMgdG8gdGhlIHJhbmdlIGNvbnN0cnVjdG9yIG11c3QgYmUgaW50ZWdlcnMgKGVpdGhlciBidWlsdC1pbgorICAgOmNsYXNzOmBpbnRgIG9yIGFueSBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHRoZSBgYF9faW5kZXhfX2BgIHNwZWNpYWwKKyAgIG1ldGhvZCkuICBJZiB0aGUgKnN0ZXAqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGBgMWBgLgorICAgSWYgdGhlICpzdGFydCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYGAwYGAuCisgICBJZiAqc3RlcCogaXMgemVybywgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgorCisgICBGb3IgYSBwb3NpdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiBhIHJhbmdlIGBgcmBgIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZQorICAgZm9ybXVsYSBgYHJbaV0gPSBzdGFydCArIHN0ZXAqaWBgIHdoZXJlIGBgaSA+PSAwYGAgYW5kCisgICBgYHJbaV0gPCBzdG9wYGAuCisKKyAgIEZvciBhIG5lZ2F0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIHRoZSByYW5nZSBhcmUgc3RpbGwgZGV0ZXJtaW5lZCBieQorICAgdGhlIGZvcm11bGEgYGByW2ldID0gc3RhcnQgKyBzdGVwKmlgYCwgYnV0IHRoZSBjb25zdHJhaW50cyBhcmUgYGBpID49IDBgYAorICAgYW5kIGBgcltpXSA+IHN0b3BgYC4KKworICAgQSByYW5nZSBvYmplY3Qgd2lsbCBiZSBlbXB0eSBpZiBgYHJbMF1gYCBkb2VzIG5vdCBtZWV0IHRoZSB2YWx1ZQorICAgY29uc3RyYWludC4gUmFuZ2VzIGRvIHN1cHBvcnQgbmVnYXRpdmUgaW5kaWNlcywgYnV0IHRoZXNlIGFyZSBpbnRlcnByZXRlZAorICAgYXMgaW5kZXhpbmcgZnJvbSB0aGUgZW5kIG9mIHRoZSBzZXF1ZW5jZSBkZXRlcm1pbmVkIGJ5IHRoZSBwb3NpdGl2ZQorICAgaW5kaWNlcy4KKworICAgUmFuZ2VzIGNvbnRhaW5pbmcgYWJzb2x1dGUgdmFsdWVzIGxhcmdlciB0aGFuIDpkYXRhOmBzeXMubWF4c2l6ZWAgYXJlCisgICBwZXJtaXR0ZWQgYnV0IHNvbWUgZmVhdHVyZXMgKHN1Y2ggYXMgOmZ1bmM6YGxlbmApIG1heSByYWlzZQorICAgOmV4YzpgT3ZlcmZsb3dFcnJvcmAuCisKKyAgIFJhbmdlIGV4YW1wbGVzOjoKKworICAgICAgPj4+IGxpc3QocmFuZ2UoMTApKQorICAgICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldCisgICAgICA+Pj4gbGlzdChyYW5nZSgxLCAxMSkpCisgICAgICBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdCisgICAgICA+Pj4gbGlzdChyYW5nZSgwLCAzMCwgNSkpCisgICAgICBbMCwgNSwgMTAsIDE1LCAyMCwgMjVdCisgICAgICA+Pj4gbGlzdChyYW5nZSgwLCAxMCwgMykpCisgICAgICBbMCwgMywgNiwgOV0KKyAgICAgID4+PiBsaXN0KHJhbmdlKDAsIC0xMCwgLTEpKQorICAgICAgWzAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTldCisgICAgICA+Pj4gbGlzdChyYW5nZSgwKSkKKyAgICAgIFtdCisgICAgICA+Pj4gbGlzdChyYW5nZSgxLCAwKSkKKyAgICAgIFtdCisKKyAgIFJhbmdlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSA6cmVmOmBjb21tb24gPHR5cGVzc2VxLWNvbW1vbj5gIHNlcXVlbmNlIG9wZXJhdGlvbnMKKyAgIGV4Y2VwdCBjb25jYXRlbmF0aW9uIGFuZCByZXBldGl0aW9uIChkdWUgdG8gdGhlIGZhY3QgdGhhdCByYW5nZSBvYmplY3RzIGNhbgorICAgb25seSByZXByZXNlbnQgc2VxdWVuY2VzIHRoYXQgZm9sbG93IGEgc3RyaWN0IHBhdHRlcm4gYW5kIHJlcGV0aXRpb24gYW5kCisgICBjb25jYXRlbmF0aW9uIHdpbGwgdXN1YWxseSB2aW9sYXRlIHRoYXQgcGF0dGVybikuCisKKyAgIC4uIGRhdGE6IHN0YXJ0CisKKyAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgKnN0YXJ0KiBwYXJhbWV0ZXIgKG9yIGBgMGBgIGlmIHRoZSBwYXJhbWV0ZXIgd2FzCisgICAgICBub3Qgc3VwcGxpZWQpCisKKyAgIC4uIGRhdGE6IHN0b3AKKworICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RvcCogcGFyYW1ldGVyCisKKyAgIC4uIGRhdGE6IHN0ZXAKKworICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RlcCogcGFyYW1ldGVyIChvciBgYDFgYCBpZiB0aGUgcGFyYW1ldGVyIHdhcworICAgICAgbm90IHN1cHBsaWVkKQorCitUaGUgYWR2YW50YWdlIG9mIHRoZSA6Y2xhc3M6YHJhbmdlYCB0eXBlIG92ZXIgYSByZWd1bGFyIDpjbGFzczpgbGlzdGAgb3IKKzpjbGFzczpgdHVwbGVgIGlzIHRoYXQgYSA6Y2xhc3M6YHJhbmdlYCBvYmplY3Qgd2lsbCBhbHdheXMgdGFrZSB0aGUgc2FtZQorKHNtYWxsKSBhbW91bnQgb2YgbWVtb3J5LCBubyBtYXR0ZXIgdGhlIHNpemUgb2YgdGhlIHJhbmdlIGl0IHJlcHJlc2VudHMgKGFzIGl0Citvbmx5IHN0b3JlcyB0aGUgYGBzdGFydGBgLCBgYHN0b3BgYCBhbmQgYGBzdGVwYGAgdmFsdWVzLCBjYWxjdWxhdGluZyBpbmRpdmlkdWFsCitpdGVtcyBhbmQgc3VicmFuZ2VzIGFzIG5lZWRlZCkuCisKK1JhbmdlIG9iamVjdHMgaW1wbGVtZW50IHRoZSA6Y2xhc3M6YGNvbGxlY3Rpb25zLlNlcXVlbmNlYCBBQkMsIGFuZCBwcm92aWRlCitmZWF0dXJlcyBzdWNoIGFzIGNvbnRhaW5tZW50IHRlc3RzLCBlbGVtZW50IGluZGV4IGxvb2t1cCwgc2xpY2luZyBhbmQKK3N1cHBvcnQgZm9yIG5lZ2F0aXZlIGluZGljZXMgKHNlZSA6cmVmOmB0eXBlc3NlcWApOgorCisgICA+Pj4gciA9IHJhbmdlKDAsIDIwLCAyKQorICAgPj4+IHIKKyAgIHJhbmdlKDAsIDIwLCAyKQorICAgPj4+IDExIGluIHIKKyAgIEZhbHNlCisgICA+Pj4gMTAgaW4gcgorICAgVHJ1ZQorICAgPj4+IHIuaW5kZXgoMTApCisgICA1CisgICA+Pj4gcls1XQorICAgMTAKKyAgID4+PiByWzo1XQorICAgcmFuZ2UoMCwgMTAsIDIpCisgICA+Pj4gclstMV0KKyAgIDE4CisKK1Rlc3RpbmcgcmFuZ2Ugb2JqZWN0cyBmb3IgZXF1YWxpdHkgd2l0aCBgYD09YGAgYW5kIGBgIT1gYCBjb21wYXJlcwordGhlbSBhcyBzZXF1ZW5jZXMuICBUaGF0IGlzLCB0d28gcmFuZ2Ugb2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlcXVhbCBpZgordGhleSByZXByZXNlbnQgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgdmFsdWVzLiAgKE5vdGUgdGhhdCB0d28gcmFuZ2UKK29iamVjdHMgdGhhdCBjb21wYXJlIGVxdWFsIG1pZ2h0IGhhdmUgZGlmZmVyZW50IDphdHRyOmBzdGFydGAsCis6YXR0cjpgc3RvcGAgYW5kIDphdHRyOmBzdGVwYCBhdHRyaWJ1dGVzLCBmb3IgZXhhbXBsZSBgYHJhbmdlKDApID09CityYW5nZSgyLCAxLCAzKWBgIG9yIGBgcmFuZ2UoMCwgMywgMikgPT0gcmFuZ2UoMCwgNCwgMilgYC4pCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICBJbXBsZW1lbnQgdGhlIFNlcXVlbmNlIEFCQy4KKyAgIFN1cHBvcnQgc2xpY2luZyBhbmQgbmVnYXRpdmUgaW5kaWNlcy4KKyAgIFRlc3QgOmNsYXNzOmBpbnRgIG9iamVjdHMgZm9yIG1lbWJlcnNoaXAgaW4gY29uc3RhbnQgdGltZSBpbnN0ZWFkIG9mCisgICBpdGVyYXRpbmcgdGhyb3VnaCBhbGwgaXRlbXMuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBEZWZpbmUgJz09JyBhbmQgJyE9JyB0byBjb21wYXJlIHJhbmdlIG9iamVjdHMgYmFzZWQgb24gdGhlCisgICBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhleSBkZWZpbmUgKGluc3RlYWQgb2YgY29tcGFyaW5nIGJhc2VkIG9uCisgICBvYmplY3QgaWRlbnRpdHkpLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgIFRoZSA6YXR0cjpgc3RhcnRgLCA6YXR0cjpgc3RvcGAgYW5kIDphdHRyOmBzdGVwYCBhdHRyaWJ1dGVzLgorCisKKy4uIGluZGV4OjoKKyAgIHNpbmdsZTogc3RyaW5nOyB0ZXh0IHNlcXVlbmNlIHR5cGUKKyAgIHNpbmdsZTogc3RyIChidWlsdC1pbiBjbGFzcyk7IChzZWUgYWxzbyBzdHJpbmcpCisgICBvYmplY3Q6IHN0cmluZworCisuLiBfdGV4dHNlcToKKworVGV4dCBTZXF1ZW5jZSBUeXBlIC0tLSA6Y2xhc3M6YHN0cmAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RleHR1YWwgZGF0YSBpbiBQeXRob24gaXMgaGFuZGxlZCB3aXRoIDpjbGFzczpgc3RyYCBvYmplY3RzLCBvciA6ZGZuOmBzdHJpbmdzYC4KK1N0cmluZ3MgYXJlIGltbXV0YWJsZQorOnJlZjpgc2VxdWVuY2VzIDx0eXBlc3NlcT5gIG9mIFVuaWNvZGUgY29kZSBwb2ludHMuICBTdHJpbmcgbGl0ZXJhbHMgYXJlCit3cml0dGVuIGluIGEgdmFyaWV0eSBvZiB3YXlzOgorCisqIFNpbmdsZSBxdW90ZXM6IGBgJ2FsbG93cyBlbWJlZGRlZCAiZG91YmxlIiBxdW90ZXMnYGAKKyogRG91YmxlIHF1b3RlczogYGAiYWxsb3dzIGVtYmVkZGVkICdzaW5nbGUnIHF1b3RlcyJgYC4KKyogVHJpcGxlIHF1b3RlZDogYGAnJydUaHJlZSBzaW5nbGUgcXVvdGVzJycnYGAsIGBgIiIiVGhyZWUgZG91YmxlIHF1b3RlcyIiImBgCisKK1RyaXBsZSBxdW90ZWQgc3RyaW5ncyBtYXkgc3BhbiBtdWx0aXBsZSBsaW5lcyAtIGFsbCBhc3NvY2lhdGVkIHdoaXRlc3BhY2Ugd2lsbAorYmUgaW5jbHVkZWQgaW4gdGhlIHN0cmluZyBsaXRlcmFsLgorCitTdHJpbmcgbGl0ZXJhbHMgdGhhdCBhcmUgcGFydCBvZiBhIHNpbmdsZSBleHByZXNzaW9uIGFuZCBoYXZlIG9ubHkgd2hpdGVzcGFjZQorYmV0d2VlbiB0aGVtIHdpbGwgYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYSBzaW5nbGUgc3RyaW5nIGxpdGVyYWwuIFRoYXQKK2lzLCBgYCgic3BhbSAiICJlZ2dzIikgPT0gInNwYW0gZWdncyJgYC4KKworU2VlIDpyZWY6YHN0cmluZ3NgIGZvciBtb3JlIGFib3V0IHRoZSB2YXJpb3VzIGZvcm1zIG9mIHN0cmluZyBsaXRlcmFsLAoraW5jbHVkaW5nIHN1cHBvcnRlZCBlc2NhcGUgc2VxdWVuY2VzLCBhbmQgdGhlIGBgcmBgICgicmF3IikgcHJlZml4IHRoYXQKK2Rpc2FibGVzIG1vc3QgZXNjYXBlIHNlcXVlbmNlIHByb2Nlc3NpbmcuCisKK1N0cmluZ3MgbWF5IGFsc28gYmUgY3JlYXRlZCBmcm9tIG90aGVyIG9iamVjdHMgdXNpbmcgdGhlIDpjbGFzczpgc3RyYAorY29uc3RydWN0b3IuCisKK1NpbmNlIHRoZXJlIGlzIG5vIHNlcGFyYXRlICJjaGFyYWN0ZXIiIHR5cGUsIGluZGV4aW5nIGEgc3RyaW5nIHByb2R1Y2VzCitzdHJpbmdzIG9mIGxlbmd0aCAxLiBUaGF0IGlzLCBmb3IgYSBub24tZW1wdHkgc3RyaW5nICpzKiwgYGBzWzBdID09IHNbMDoxXWBgLgorCisuLiBpbmRleDo6CisgICBvYmplY3Q6IGlvLlN0cmluZ0lPCisKK1RoZXJlIGlzIGFsc28gbm8gbXV0YWJsZSBzdHJpbmcgdHlwZSwgYnV0IDptZXRoOmBzdHIuam9pbmAgb3IKKzpjbGFzczpgaW8uU3RyaW5nSU9gIGNhbiBiZSB1c2VkIHRvIGVmZmljaWVudGx5IGNvbnN0cnVjdCBzdHJpbmdzIGZyb20KK211bHRpcGxlIGZyYWdtZW50cy4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBQeXRob24gMiBzZXJpZXMsIHRoZSBgYHVgYCBwcmVmaXggaXMKKyAgIG9uY2UgYWdhaW4gcGVybWl0dGVkIG9uIHN0cmluZyBsaXRlcmFscy4gSXQgaGFzIG5vIGVmZmVjdCBvbiB0aGUgbWVhbmluZworICAgb2Ygc3RyaW5nIGxpdGVyYWxzIGFuZCBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCB0aGUgYGByYGAgcHJlZml4LgorCisKKy4uIGluZGV4OjoKKyAgIHNpbmdsZTogc3RyaW5nOyBzdHIgKGJ1aWx0LWluIGNsYXNzKQorCisuLiBjbGFzczo6IHN0cihvYmplY3Q9JycpCisgICAgICAgICAgIHN0cihvYmplY3Q9YicnLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpCisKKyAgIFJldHVybiBhIDpyZWY6YHN0cmluZyA8dGV4dHNlcT5gIHZlcnNpb24gb2YgKm9iamVjdCouICBJZiAqb2JqZWN0KiBpcyBub3QKKyAgIHByb3ZpZGVkLCByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcuICBPdGhlcndpc2UsIHRoZSBiZWhhdmlvciBvZiBgYHN0cigpYGAKKyAgIGRlcGVuZHMgb24gd2hldGhlciAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGlzIGdpdmVuLCBhcyBmb2xsb3dzLgorCisgICBJZiBuZWl0aGVyICplbmNvZGluZyogbm9yICplcnJvcnMqIGlzIGdpdmVuLCBgYHN0cihvYmplY3QpYGAgcmV0dXJucworICAgOm1ldGg6YG9iamVjdC5fX3N0cl9fKCkgPG9iamVjdC5fX3N0cl9fPmAsIHdoaWNoIGlzIHRoZSAiaW5mb3JtYWwiIG9yIG5pY2VseQorICAgcHJpbnRhYmxlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiAqb2JqZWN0Ki4gIEZvciBzdHJpbmcgb2JqZWN0cywgdGhpcyBpcworICAgdGhlIHN0cmluZyBpdHNlbGYuICBJZiAqb2JqZWN0KiBkb2VzIG5vdCBoYXZlIGEgOm1ldGg6YH5vYmplY3QuX19zdHJfX2AKKyAgIG1ldGhvZCwgdGhlbiA6ZnVuYzpgc3RyYCBmYWxscyBiYWNrIHRvIHJldHVybmluZworICAgOm1ldGg6YHJlcHIob2JqZWN0KSA8cmVwcj5gLgorCisgICAuLiBpbmRleDo6CisgICAgICBzaW5nbGU6IGJ1ZmZlciBwcm90b2NvbDsgc3RyIChidWlsdC1pbiBjbGFzcykKKyAgICAgIHNpbmdsZTogYnl0ZXM7IHN0ciAoYnVpbHQtaW4gY2xhc3MpCisKKyAgIElmIGF0IGxlYXN0IG9uZSBvZiAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGlzIGdpdmVuLCAqb2JqZWN0KiBzaG91bGQgYmUgYQorICAgOmNsYXNzOmBieXRlc2Agb3IgOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdCwgb3IgbW9yZSBnZW5lcmFsbHkgYW55IG9iamVjdAorICAgdGhhdCBzdXBwb3J0cyB0aGUgOnJlZjpgYnVmZmVyIHByb3RvY29sIDxidWZmZXJvYmplY3RzPmAuICBJbiB0aGlzIGNhc2UsIGlmCisgICAqb2JqZWN0KiBpcyBhIDpjbGFzczpgYnl0ZXNgIChvciA6Y2xhc3M6YGJ5dGVhcnJheWApIG9iamVjdCwgdGhlbgorICAgYGBzdHIoYnl0ZXMsIGVuY29kaW5nLCBlcnJvcnMpYGAgaXMgZXF1aXZhbGVudCB0bworICAgOm1ldGg6YGJ5dGVzLmRlY29kZShlbmNvZGluZywgZXJyb3JzKSA8Ynl0ZXMuZGVjb2RlPmAuICBPdGhlcndpc2UsIHRoZSBieXRlcworICAgb2JqZWN0IHVuZGVybHlpbmcgdGhlIGJ1ZmZlciBvYmplY3QgaXMgb2J0YWluZWQgYmVmb3JlIGNhbGxpbmcKKyAgIDptZXRoOmBieXRlcy5kZWNvZGVgLiAgU2VlIDpyZWY6YGJpbmFyeXNlcWAgYW5kCisgICA6cmVmOmBidWZmZXJvYmplY3RzYCBmb3IgaW5mb3JtYXRpb24gb24gYnVmZmVyIG9iamVjdHMuCisKKyAgIFBhc3NpbmcgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgdG8gOmZ1bmM6YHN0cmAgd2l0aG91dCB0aGUgKmVuY29kaW5nKgorICAgb3IgKmVycm9ycyogYXJndW1lbnRzIGZhbGxzIHVuZGVyIHRoZSBmaXJzdCBjYXNlIG9mIHJldHVybmluZyB0aGUgaW5mb3JtYWwKKyAgIHN0cmluZyByZXByZXNlbnRhdGlvbiAoc2VlIGFsc28gdGhlIDpvcHRpb246YC1iYCBjb21tYW5kLWxpbmUgb3B0aW9uIHRvCisgICBQeXRob24pLiAgRm9yIGV4YW1wbGU6OgorCisgICAgICA+Pj4gc3RyKGInWm9vdCEnKQorICAgICAgImInWm9vdCEnIgorCisgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgYGBzdHJgYCBjbGFzcyBhbmQgaXRzIG1ldGhvZHMsIHNlZQorICAgOnJlZjpgdGV4dHNlcWAgYW5kIHRoZSA6cmVmOmBzdHJpbmctbWV0aG9kc2Agc2VjdGlvbiBiZWxvdy4gIFRvIG91dHB1dAorICAgZm9ybWF0dGVkIHN0cmluZ3MsIHNlZSB0aGUgOnJlZjpgc3RyaW5nLWZvcm1hdHRpbmdgIHNlY3Rpb24uICBJbiBhZGRpdGlvbiwKKyAgIHNlZSB0aGUgOnJlZjpgc3RyaW5nc2VydmljZXNgIHNlY3Rpb24uCisKKworLi4gaW5kZXg6OgorICAgcGFpcjogc3RyaW5nOyBtZXRob2RzCiAKIC4uIF9zdHJpbmctbWV0aG9kczoKIAogU3RyaW5nIE1ldGhvZHMKIC0tLS0tLS0tLS0tLS0tCiAKLS4uIGluZGV4OjogcGFpcjogc3RyaW5nOyBtZXRob2RzCisuLiBpbmRleDo6CisgICBtb2R1bGU6IHJlCiAKLVN0cmluZyBvYmplY3RzIHN1cHBvcnQgdGhlIG1ldGhvZHMgbGlzdGVkIGJlbG93LgorU3RyaW5ncyBpbXBsZW1lbnQgYWxsIG9mIHRoZSA6cmVmOmBjb21tb24gPHR5cGVzc2VxLWNvbW1vbj5gIHNlcXVlbmNlCitvcGVyYXRpb25zLCBhbG9uZyB3aXRoIHRoZSBhZGRpdGlvbmFsIG1ldGhvZHMgZGVzY3JpYmVkIGJlbG93LgogCi1JbiBhZGRpdGlvbiwgUHl0aG9uJ3Mgc3RyaW5ncyBzdXBwb3J0IHRoZSBzZXF1ZW5jZSB0eXBlIG1ldGhvZHMgZGVzY3JpYmVkIGluIHRoZQotOnJlZjpgdHlwZXNzZXFgIHNlY3Rpb24uIFRvIG91dHB1dCBmb3JtYXR0ZWQgc3RyaW5ncywgc2VlIHRoZQotOnJlZjpgc3RyaW5nLWZvcm1hdHRpbmdgIHNlY3Rpb24uIEFsc28sIHNlZSB0aGUgOm1vZDpgcmVgIG1vZHVsZSBmb3Igc3RyaW5nCi1mdW5jdGlvbnMgYmFzZWQgb24gcmVndWxhciBleHByZXNzaW9ucy4KK1N0cmluZ3MgYWxzbyBzdXBwb3J0IHR3byBzdHlsZXMgb2Ygc3RyaW5nIGZvcm1hdHRpbmcsIG9uZSBwcm92aWRpbmcgYSBsYXJnZQorZGVncmVlIG9mIGZsZXhpYmlsaXR5IGFuZCBjdXN0b21pemF0aW9uIChzZWUgOm1ldGg6YHN0ci5mb3JtYXRgLAorOnJlZjpgZm9ybWF0c3RyaW5nc2AgYW5kIDpyZWY6YHN0cmluZy1mb3JtYXR0aW5nYCkgYW5kIHRoZSBvdGhlciBiYXNlZCBvbiBDCitgYHByaW50ZmBgIHN0eWxlIGZvcm1hdHRpbmcgdGhhdCBoYW5kbGVzIGEgbmFycm93ZXIgcmFuZ2Ugb2YgdHlwZXMgYW5kIGlzCitzbGlnaHRseSBoYXJkZXIgdG8gdXNlIGNvcnJlY3RseSwgYnV0IGlzIG9mdGVuIGZhc3RlciBmb3IgdGhlIGNhc2VzIGl0IGNhbgoraGFuZGxlICg6cmVmOmBvbGQtc3RyaW5nLWZvcm1hdHRpbmdgKS4KKworVGhlIDpyZWY6YHRleHRzZXJ2aWNlc2Agc2VjdGlvbiBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBjb3ZlcnMgYSBudW1iZXIgb2YKK290aGVyIG1vZHVsZXMgdGhhdCBwcm92aWRlIHZhcmlvdXMgdGV4dCByZWxhdGVkIHV0aWxpdGllcyAoaW5jbHVkaW5nIHJlZ3VsYXIKK2V4cHJlc3Npb24gc3VwcG9ydCBpbiB0aGUgOm1vZDpgcmVgIG1vZHVsZSkuCiAKIC4uIG1ldGhvZDo6IHN0ci5jYXBpdGFsaXplKCkKIApAQCAtMTAwNiw2ICsxNDcxLDIzIEBACiAgICByZXN0IGxvd2VyY2FzZWQuCiAKIAorLi4gbWV0aG9kOjogc3RyLmNhc2Vmb2xkKCkKKworICAgUmV0dXJuIGEgY2FzZWZvbGRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuIENhc2Vmb2xkZWQgc3RyaW5ncyBtYXkgYmUgdXNlZCBmb3IKKyAgIGNhc2VsZXNzIG1hdGNoaW5nLgorCisgICBDYXNlZm9sZGluZyBpcyBzaW1pbGFyIHRvIGxvd2VyY2FzaW5nIGJ1dCBtb3JlIGFnZ3Jlc3NpdmUgYmVjYXVzZSBpdCBpcworICAgaW50ZW5kZWQgdG8gcmVtb3ZlIGFsbCBjYXNlIGRpc3RpbmN0aW9ucyBpbiBhIHN0cmluZy4gRm9yIGV4YW1wbGUsIHRoZSBHZXJtYW4KKyAgIGxvd2VyY2FzZSBsZXR0ZXIgYGAnw58nYGAgaXMgZXF1aXZhbGVudCB0byBgYCJzcyJgYC4gU2luY2UgaXQgaXMgYWxyZWFkeQorICAgbG93ZXJjYXNlLCA6bWV0aDpgbG93ZXJgIHdvdWxkIGRvIG5vdGhpbmcgdG8gYGAnw58nYGA7IDptZXRoOmBjYXNlZm9sZGAKKyAgIGNvbnZlcnRzIGl0IHRvIGBgInNzImBgLgorCisgICBUaGUgY2FzZWZvbGRpbmcgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlIFVuaWNvZGUKKyAgIFN0YW5kYXJkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBtZXRob2Q6OiBzdHIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKQogCiAgICBSZXR1cm4gY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUKQEAgLTEyMTMsNiArMTY5NSw5IEBACiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXyBjb252ZXJ0ZWQgdG8KICAgIGxvd2VyY2FzZS4KIAorICAgVGhlIGxvd2VyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlIFVuaWNvZGUKKyAgIFN0YW5kYXJkLgorCiAKIC4uIG1ldGhvZDo6IHN0ci5sc3RyaXAoW2NoYXJzXSkKIApAQCAtMTI4NSw3ICsxNzcwLDcgQEAKICAgIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieSB0aGUgc3RyaW5nIGl0c2VsZi4KIAogCi0uLiBtZXRob2Q6OiBzdHIucnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKQorLi4gbWV0aG9kOjogc3RyLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpCiAKICAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZSBkZWxpbWl0ZXIgc3RyaW5nLgogICAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0cyBhcmUgZG9uZSwgdGhlICpyaWdodG1vc3QqCkBAIC0xMzA3LDcgKzE3OTIsNyBAQAogICAgICAgJ21pc3Npc3MnCiAKIAotLi4gbWV0aG9kOjogc3RyLnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKQorLi4gbWV0aG9kOjogc3RyLnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSkKIAogICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlIGRlbGltaXRlcgogICAgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0cyBhcmUgZG9uZSAodGh1cywKQEAgLTEzNzYsNyArMTg2MSw4IEBACiAuLiBtZXRob2Q6OiBzdHIuc3dhcGNhc2UoKQogCiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlIGFuZAotICAgdmljZSB2ZXJzYS4KKyAgIHZpY2UgdmVyc2EuIE5vdGUgdGhhdCBpdCBpcyBub3QgbmVjZXNzYXJpbHkgdHJ1ZSB0aGF0CisgICBgYHMuc3dhcGNhc2UoKS5zd2FwY2FzZSgpID09IHNgYC4KIAogCiAuLiBtZXRob2Q6OiBzdHIudGl0bGUoKQpAQCAtMTQyNyw3ICsxOTEzLDExIEBACiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXyBjb252ZXJ0ZWQgdG8KICAgIHVwcGVyY2FzZS4gIE5vdGUgdGhhdCBgYHN0ci51cHBlcigpLmlzdXBwZXIoKWBgIG1pZ2h0IGJlIGBgRmFsc2VgYCBpZiBgYHNgYAogICAgY29udGFpbnMgdW5jYXNlZCBjaGFyYWN0ZXJzIG9yIGlmIHRoZSBVbmljb2RlIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcKLSAgIGNoYXJhY3RlcihzKSBpcyBub3QgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuCisgICBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgKExldHRlciwgdXBwZXJjYXNlKSwgYnV0IGUuZy4gIkx0IiAoTGV0dGVyLAorICAgdGl0bGVjYXNlKS4KKworICAgVGhlIHVwcGVyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlIFVuaWNvZGUKKyAgIFN0YW5kYXJkLgogCiAKIC4uIG1ldGhvZDo6IHN0ci56ZmlsbCh3aWR0aCkKQEAgLTE0NDAsOCArMTkzMCw4IEBACiAKIC4uIF9vbGQtc3RyaW5nLWZvcm1hdHRpbmc6CiAKLU9sZCBTdHJpbmcgRm9ybWF0dGluZyBPcGVyYXRpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorYGBwcmludGZgYC1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBpbmRleDo6CiAgICBzaW5nbGU6IGZvcm1hdHRpbmcsIHN0cmluZyAoJSkKQEAgLTE0NTMsMjMgKzE5NDMsMTkgQEAKICAgIHNpbmdsZTogJSBmb3JtYXR0aW5nCiAgICBzaW5nbGU6ICUgaW50ZXJwb2xhdGlvbgogCi0uLiBYWFggaXMgdGhlIG5vdGUgZW5vdWdoPwotCiAuLiBub3RlOjoKIAotICAgVGhlIGZvcm1hdHRpbmcgb3BlcmF0aW9ucyBkZXNjcmliZWQgaGVyZSBhcmUgbW9kZWxsZWQgb24gQydzIHByaW50ZigpCi0gICBzeW50YXguICBUaGV5IG9ubHkgc3VwcG9ydCBmb3JtYXR0aW5nIG9mIGNlcnRhaW4gYnVpbHRpbiB0eXBlcy4gIFRoZQotICAgdXNlIG9mIGEgYmluYXJ5IG9wZXJhdG9yIG1lYW5zIHRoYXQgY2FyZSBtYXkgYmUgbmVlZGVkIGluIG9yZGVyIHRvCi0gICBmb3JtYXQgdHVwbGVzIGFuZCBkaWN0aW9uYXJpZXMgY29ycmVjdGx5LiAgQXMgdGhlIG5ldwotICAgOnJlZjpgc3RyaW5nLWZvcm1hdHRpbmdgIHN5bnRheCBpcyBtb3JlIGZsZXhpYmxlIGFuZCBoYW5kbGVzIHR1cGxlcyBhbmQKLSAgIGRpY3Rpb25hcmllcyBuYXR1cmFsbHksIGl0IGlzIHJlY29tbWVuZGVkIGZvciBuZXcgY29kZS4gIEhvd2V2ZXIsIHRoZXJlCi0gICBhcmUgbm8gY3VycmVudCBwbGFucyB0byBkZXByZWNhdGUgcHJpbnRmLXN0eWxlIGZvcm1hdHRpbmcuCisgICBUaGUgZm9ybWF0dGluZyBvcGVyYXRpb25zIGRlc2NyaWJlZCBoZXJlIGV4aGliaXQgYSB2YXJpZXR5IG9mIHF1aXJrcyB0aGF0CisgICBsZWFkIHRvIGEgbnVtYmVyIG9mIGNvbW1vbiBlcnJvcnMgKHN1Y2ggYXMgZmFpbGluZyB0byBkaXNwbGF5IHR1cGxlcyBhbmQKKyAgIGRpY3Rpb25hcmllcyBjb3JyZWN0bHkpLiAgVXNpbmcgdGhlIG5ld2VyIDptZXRoOmBzdHIuZm9ybWF0YCBpbnRlcmZhY2UKKyAgIGhlbHBzIGF2b2lkIHRoZXNlIGVycm9ycywgYW5kIGFsc28gcHJvdmlkZXMgYSBnZW5lcmFsbHkgbW9yZSBwb3dlcmZ1bCwKKyAgIGZsZXhpYmxlIGFuZCBleHRlbnNpYmxlIGFwcHJvYWNoIHRvIGZvcm1hdHRpbmcgdGV4dC4KIAogU3RyaW5nIG9iamVjdHMgaGF2ZSBvbmUgdW5pcXVlIGJ1aWx0LWluIG9wZXJhdGlvbjogdGhlIGBgJWBgIG9wZXJhdG9yIChtb2R1bG8pLgogVGhpcyBpcyBhbHNvIGtub3duIGFzIHRoZSBzdHJpbmcgKmZvcm1hdHRpbmcqIG9yICppbnRlcnBvbGF0aW9uKiBvcGVyYXRvci4KIEdpdmVuIGBgZm9ybWF0ICUgdmFsdWVzYGAgKHdoZXJlICpmb3JtYXQqIGlzIGEgc3RyaW5nKSwgYGAlYGAgY29udmVyc2lvbgogc3BlY2lmaWNhdGlvbnMgaW4gKmZvcm1hdCogYXJlIHJlcGxhY2VkIHdpdGggemVybyBvciBtb3JlIGVsZW1lbnRzIG9mICp2YWx1ZXMqLgotVGhlIGVmZmVjdCBpcyBzaW1pbGFyIHRvIHRoZSB1c2luZyA6YzpmdW5jOmBzcHJpbnRmYCBpbiB0aGUgQyBsYW5ndWFnZS4KK1RoZSBlZmZlY3QgaXMgc2ltaWxhciB0byB1c2luZyB0aGUgOmM6ZnVuYzpgc3ByaW50ZmAgaW4gdGhlIEMgbGFuZ3VhZ2UuCiAKIElmICpmb3JtYXQqIHJlcXVpcmVzIGEgc2luZ2xlIGFyZ3VtZW50LCAqdmFsdWVzKiBtYXkgYmUgYSBzaW5nbGUgbm9uLXR1cGxlCiBvYmplY3QuIFs1XV8gIE90aGVyd2lzZSwgKnZhbHVlcyogbXVzdCBiZSBhIHR1cGxlIHdpdGggZXhhY3RseSB0aGUgbnVtYmVyIG9mCkBAIC0xNjI3LDIxMSArMjExMywxODEgQEAKICAgIGBgJWZgYCBjb252ZXJzaW9ucyBmb3IgbnVtYmVycyB3aG9zZSBhYnNvbHV0ZSB2YWx1ZSBpcyBvdmVyIDFlNTAgYXJlIG5vCiAgICBsb25nZXIgcmVwbGFjZWQgYnkgYGAlZ2BgIGNvbnZlcnNpb25zLgogCi0uLiBpbmRleDo6Ci0gICBtb2R1bGU6IHN0cmluZwotICAgbW9kdWxlOiByZQotCi1BZGRpdGlvbmFsIHN0cmluZyBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIGluIHN0YW5kYXJkIG1vZHVsZXMgOm1vZDpgc3RyaW5nYCBhbmQKLTptb2Q6YHJlYC4KLQotCi0uLiBfdHlwZXNzZXEtcmFuZ2U6Ci0KLVJhbmdlIFR5cGUKLS0tLS0tLS0tLS0KLQotLi4gaW5kZXg6OiBvYmplY3Q6IHJhbmdlCi0KLVRoZSA6Y2xhc3M6YHJhbmdlYCB0eXBlIGlzIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB3aGljaCBpcyBjb21tb25seSB1c2VkIGZvcgotbG9vcGluZy4gIFRoZSBhZHZhbnRhZ2Ugb2YgdGhlIDpjbGFzczpgcmFuZ2VgIHR5cGUgaXMgdGhhdCBhbiA6Y2xhc3M6YHJhbmdlYAotb2JqZWN0IHdpbGwgYWx3YXlzIHRha2UgdGhlIHNhbWUgYW1vdW50IG9mIG1lbW9yeSwgbm8gbWF0dGVyIHRoZSBzaXplIG9mIHRoZQotcmFuZ2UgaXQgcmVwcmVzZW50cy4KLQotUmFuZ2Ugb2JqZWN0cyBoYXZlIHJlbGF0aXZlbHkgbGl0dGxlIGJlaGF2aW9yOiB0aGV5IHN1cHBvcnQgaW5kZXhpbmcsIGNvbnRhaW5zLAotaXRlcmF0aW9uLCB0aGUgOmZ1bmM6YGxlbmAgZnVuY3Rpb24sIGFuZCB0aGUgZm9sbG93aW5nIG1ldGhvZHM6Ci0KLS4uIG1ldGhvZDo6IHJhbmdlLmNvdW50KHgpCi0KLSAgIFJldHVybiB0aGUgbnVtYmVyIG9mICppKidzIGZvciB3aGljaCBgYHNbaV0gPT0geGBgLgotCi0gICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KLS4uIG1ldGhvZDo6IHJhbmdlLmluZGV4KHgpCi0KLSAgIFJldHVybiB0aGUgc21hbGxlc3QgKmkqIHN1Y2ggdGhhdCBgYHNbaV0gPT0geGBgLiAgUmFpc2VzCi0gICA6ZXhjOmBWYWx1ZUVycm9yYCB3aGVuICp4KiBpcyBub3QgaW4gdGhlIHJhbmdlLgotCi0gICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KLS4uIF90eXBlc3NlcS1tdXRhYmxlOgotCi1NdXRhYmxlIFNlcXVlbmNlIFR5cGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIGluZGV4OjoKLSAgIHRyaXBsZTogbXV0YWJsZTsgc2VxdWVuY2U7IHR5cGVzCi0gICBvYmplY3Q6IGxpc3QKKyAgIHNpbmdsZTogYnVmZmVyIHByb3RvY29sOyBiaW5hcnkgc2VxdWVuY2UgdHlwZXMKKworLi4gX2JpbmFyeXNlcToKKworQmluYXJ5IFNlcXVlbmNlIFR5cGVzIC0tLSA6Y2xhc3M6YGJ5dGVzYCwgOmNsYXNzOmBieXRlYXJyYXlgLCA6Y2xhc3M6YG1lbW9yeXZpZXdgCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gaW5kZXg6OgorICAgb2JqZWN0OiBieXRlcwogICAgb2JqZWN0OiBieXRlYXJyYXkKKyAgIG9iamVjdDogbWVtb3J5dmlldworICAgbW9kdWxlOiBhcnJheQogCi1MaXN0IGFuZCBieXRlYXJyYXkgb2JqZWN0cyBzdXBwb3J0IGFkZGl0aW9uYWwgb3BlcmF0aW9ucyB0aGF0IGFsbG93IGluLXBsYWNlCi1tb2RpZmljYXRpb24gb2YgdGhlIG9iamVjdC4gIE90aGVyIG11dGFibGUgc2VxdWVuY2UgdHlwZXMgKHdoZW4gYWRkZWQgdG8gdGhlCi1sYW5ndWFnZSkgc2hvdWxkIGFsc28gc3VwcG9ydCB0aGVzZSBvcGVyYXRpb25zLiAgU3RyaW5ncyBhbmQgdHVwbGVzIGFyZQotaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzOiBzdWNoIG9iamVjdHMgY2Fubm90IGJlIG1vZGlmaWVkIG9uY2UgY3JlYXRlZC4gVGhlCi1mb2xsb3dpbmcgb3BlcmF0aW9ucyBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzICh3aGVyZSAqeCogaXMgYW4KLWFyYml0cmFyeSBvYmplY3QpLgorVGhlIGNvcmUgYnVpbHQtaW4gdHlwZXMgZm9yIG1hbmlwdWxhdGluZyBiaW5hcnkgZGF0YSBhcmUgOmNsYXNzOmBieXRlc2AgYW5kCis6Y2xhc3M6YGJ5dGVhcnJheWAuIFRoZXkgYXJlIHN1cHBvcnRlZCBieSA6Y2xhc3M6YG1lbW9yeXZpZXdgIHdoaWNoIHVzZXMKK3RoZSA6cmVmOmBidWZmZXIgcHJvdG9jb2wgPGJ1ZmZlcm9iamVjdHM+YCB0byBhY2Nlc3MgdGhlIG1lbW9yeSBvZiBvdGhlcgorYmluYXJ5IG9iamVjdHMgd2l0aG91dCBuZWVkaW5nIHRvIG1ha2UgYSBjb3B5LgogCi1Ob3RlIHRoYXQgd2hpbGUgbGlzdHMgYWxsb3cgdGhlaXIgaXRlbXMgdG8gYmUgb2YgYW55IHR5cGUsIGJ5dGVhcnJheSBvYmplY3QKLSJpdGVtcyIgYXJlIGFsbCBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgMjU2LgorVGhlIDptb2Q6YGFycmF5YCBtb2R1bGUgc3VwcG9ydHMgZWZmaWNpZW50IHN0b3JhZ2Ugb2YgYmFzaWMgZGF0YSB0eXBlcyBsaWtlCiszMi1iaXQgaW50ZWdlcnMgYW5kIElFRUU3NTQgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyB2YWx1ZXMuCiAKLS4uIGluZGV4OjoKLSAgIHRyaXBsZTogb3BlcmF0aW9ucyBvbjsgc2VxdWVuY2U7IHR5cGVzCi0gICB0cmlwbGU6IG9wZXJhdGlvbnMgb247IGxpc3Q7IHR5cGUKLSAgIHBhaXI6IHN1YnNjcmlwdDsgYXNzaWdubWVudAotICAgcGFpcjogc2xpY2U7IGFzc2lnbm1lbnQKLSAgIHN0YXRlbWVudDogZGVsCi0gICBzaW5nbGU6IGFwcGVuZCgpIChzZXF1ZW5jZSBtZXRob2QpCi0gICBzaW5nbGU6IGV4dGVuZCgpIChzZXF1ZW5jZSBtZXRob2QpCi0gICBzaW5nbGU6IGNvdW50KCkgKHNlcXVlbmNlIG1ldGhvZCkKLSAgIHNpbmdsZTogaW5kZXgoKSAoc2VxdWVuY2UgbWV0aG9kKQotICAgc2luZ2xlOiBpbnNlcnQoKSAoc2VxdWVuY2UgbWV0aG9kKQotICAgc2luZ2xlOiBwb3AoKSAoc2VxdWVuY2UgbWV0aG9kKQotICAgc2luZ2xlOiByZW1vdmUoKSAoc2VxdWVuY2UgbWV0aG9kKQotICAgc2luZ2xlOiByZXZlcnNlKCkgKHNlcXVlbmNlIG1ldGhvZCkKLSAgIHNpbmdsZTogc29ydCgpIChzZXF1ZW5jZSBtZXRob2QpCisuLiBfdHlwZWJ5dGVzOgogCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgfAotKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT0rCi18IGBgc1tpXSA9IHhgYCAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgYnkgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgc1tpOmpdID0gdGBgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlzIHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiB8ICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhlIGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBkZWwgc1tpOmpdYGAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2k6al0gPSBbXWBgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgc1tpOmo6a10gPSB0YGAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgYGBzW2k6ajprXWBgICAgfCBcKDEpICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZSByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgZGVsIHNbaTpqOmtdYGAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyBvZiAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmo6a11gYCBmcm9tIHRoZSBsaXN0ICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5hcHBlbmQoeClgYCAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tsZW4ocyk6bGVuKHMpXSA9ICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFt4XWBgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5leHRlbmQoeClgYCAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tsZW4ocyk6bGVuKHMpXSA9ICAgfCBcKDIpICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHhgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5jb3VudCh4KWBgICAgICAgICAgICAgICAgfCByZXR1cm4gbnVtYmVyIG9mICppKidzIGZvciAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoaWNoIGBgc1tpXSA9PSB4YGAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5pbmRleCh4WywgaVssIGpdXSlgYCAgICAgfCByZXR1cm4gc21hbGxlc3QgKmsqIHN1Y2ggdGhhdCAgfCBcKDMpICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1trXSA9PSB4YGAgYW5kIGBgaSA8PSBrIDwgICB8ICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgamBgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBzLmluc2VydChpLCB4KWBgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2k6aV0gPSBbeF1gYCAgICAgICB8IFwoNCkgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5wb3AoW2ldKWBgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgeCA9IHNbaV07IGRlbCBzW2ldOyAgfCBcKDUpICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJldHVybiB4YGAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5yZW1vdmUoeClgYCAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgZGVsIHNbcy5pbmRleCh4KV1gYCAgfCBcKDMpICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMucmV2ZXJzZSgpYGAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiBpbiAgIHwgXCg2KSAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMuc29ydChba2V5WywgcmV2ZXJzZV1dKWBgIHwgc29ydCB0aGUgaXRlbXMgb2YgKnMqIGluIHBsYWNlIHwgKDYpLCAoNyksICg4KSAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK0J5dGVzCistLS0tLQorCisuLiBpbmRleDo6IG9iamVjdDogYnl0ZXMKKworQnl0ZXMgb2JqZWN0cyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlcyBvZiBzaW5nbGUgYnl0ZXMuIFNpbmNlIG1hbnkgbWFqb3IKK2JpbmFyeSBwcm90b2NvbHMgYXJlIGJhc2VkIG9uIHRoZSBBU0NJSSB0ZXh0IGVuY29kaW5nLCBieXRlcyBvYmplY3RzIG9mZmVyCitzZXZlcmFsIG1ldGhvZHMgdGhhdCBhcmUgb25seSB2YWxpZCB3aGVuIHdvcmtpbmcgd2l0aCBBU0NJSSBjb21wYXRpYmxlCitkYXRhIGFuZCBhcmUgY2xvc2VseSByZWxhdGVkIHRvIHN0cmluZyBvYmplY3RzIGluIGEgdmFyaWV0eSBvZiBvdGhlciB3YXlzLgorCitGaXJzdGx5LCB0aGUgc3ludGF4IGZvciBieXRlcyBsaXRlcmFscyBpcyBsYXJnZWx5IHRoZSBzYW1lIGFzIHRoYXQgZm9yIHN0cmluZworbGl0ZXJhbHMsIGV4Y2VwdCB0aGF0IGEgYGBiYGAgcHJlZml4IGlzIGFkZGVkOgorCisqIFNpbmdsZSBxdW90ZXM6IGBgYidzdGlsbCBhbGxvd3MgZW1iZWRkZWQgImRvdWJsZSIgcXVvdGVzJ2BgCisqIERvdWJsZSBxdW90ZXM6IGBgYiJzdGlsbCBhbGxvd3MgZW1iZWRkZWQgJ3NpbmdsZScgcXVvdGVzImBgLgorKiBUcmlwbGUgcXVvdGVkOiBgYGInJyczIHNpbmdsZSBxdW90ZXMnJydgYCwgYGBiIiIiMyBkb3VibGUgcXVvdGVzIiIiYGAKKworT25seSBBU0NJSSBjaGFyYWN0ZXJzIGFyZSBwZXJtaXR0ZWQgaW4gYnl0ZXMgbGl0ZXJhbHMgKHJlZ2FyZGxlc3Mgb2YgdGhlCitkZWNsYXJlZCBzb3VyY2UgY29kZSBlbmNvZGluZykuIEFueSBiaW5hcnkgdmFsdWVzIG92ZXIgMTI3IG11c3QgYmUgZW50ZXJlZAoraW50byBieXRlcyBsaXRlcmFscyB1c2luZyB0aGUgYXBwcm9wcmlhdGUgZXNjYXBlIHNlcXVlbmNlLgorCitBcyB3aXRoIHN0cmluZyBsaXRlcmFscywgYnl0ZXMgbGl0ZXJhbHMgbWF5IGFsc28gdXNlIGEgYGByYGAgcHJlZml4IHRvIGRpc2FibGUKK3Byb2Nlc3Npbmcgb2YgZXNjYXBlIHNlcXVlbmNlcy4gU2VlIDpyZWY6YHN0cmluZ3NgIGZvciBtb3JlIGFib3V0IHRoZSB2YXJpb3VzCitmb3JtcyBvZiBieXRlcyBsaXRlcmFsLCBpbmNsdWRpbmcgc3VwcG9ydGVkIGVzY2FwZSBzZXF1ZW5jZXMuCisKK1doaWxlIGJ5dGVzIGxpdGVyYWxzIGFuZCByZXByZXNlbnRhdGlvbnMgYXJlIGJhc2VkIG9uIEFTQ0lJIHRleHQsIGJ5dGVzCitvYmplY3RzIGFjdHVhbGx5IGJlaGF2ZSBsaWtlIGltbXV0YWJsZSBzZXF1ZW5jZXMgb2YgaW50ZWdlcnMsIHdpdGggZWFjaAordmFsdWUgaW4gdGhlIHNlcXVlbmNlIHJlc3RyaWN0ZWQgc3VjaCB0aGF0IGBgMCA8PSB4IDwgMjU2YGAgKGF0dGVtcHRzIHRvCit2aW9sYXRlIHRoaXMgcmVzdHJpY3Rpb24gd2lsbCB0cmlnZ2VyIDpleGM6YFZhbHVlRXJyb3JgLiBUaGlzIGlzIGRvbmUKK2RlbGliZXJhdGVseSB0byBlbXBoYXNpc2UgdGhhdCB3aGlsZSBtYW55IGJpbmFyeSBmb3JtYXRzIGluY2x1ZGUgQVNDSUkgYmFzZWQKK2VsZW1lbnRzIGFuZCBjYW4gYmUgdXNlZnVsbHkgbWFuaXB1bGF0ZWQgd2l0aCBzb21lIHRleHQtb3JpZW50ZWQgYWxnb3JpdGhtcywKK3RoaXMgaXMgbm90IGdlbmVyYWxseSB0aGUgY2FzZSBmb3IgYXJiaXRyYXJ5IGJpbmFyeSBkYXRhIChibGluZGx5IGFwcGx5aW5nCit0ZXh0IHByb2Nlc3NpbmcgYWxnb3JpdGhtcyB0byBiaW5hcnkgZGF0YSBmb3JtYXRzIHRoYXQgYXJlIG5vdCBBU0NJSQorY29tcGF0aWJsZSB3aWxsIHVzdWFsbHkgbGVhZCB0byBkYXRhIGNvcnJ1cHRpb24pLgorCitJbiBhZGRpdGlvbiB0byB0aGUgbGl0ZXJhbCBmb3JtcywgYnl0ZXMgb2JqZWN0cyBjYW4gYmUgY3JlYXRlZCBpbiBhIG51bWJlciBvZgorb3RoZXIgd2F5czoKKworKiBBIHplcm8tZmlsbGVkIGJ5dGVzIG9iamVjdCBvZiBhIHNwZWNpZmllZCBsZW5ndGg6IGBgYnl0ZXMoMTApYGAKKyogRnJvbSBhbiBpdGVyYWJsZSBvZiBpbnRlZ2VyczogYGBieXRlcyhyYW5nZSgyMCkpYGAKKyogQ29weWluZyBleGlzdGluZyBiaW5hcnkgZGF0YSB2aWEgdGhlIGJ1ZmZlciBwcm90b2NvbDogIGBgYnl0ZXMob2JqKWBgCisKK0Fsc28gc2VlIHRoZSA6cmVmOmBieXRlcyA8ZnVuYy1ieXRlcz5gIGJ1aWx0LWluLgorCitTaW5jZSBieXRlcyBvYmplY3RzIGFyZSBzZXF1ZW5jZXMgb2YgaW50ZWdlcnMsIGZvciBhIGJ5dGVzIG9iamVjdCAqYiosCitgYGJbMF1gYCB3aWxsIGJlIGFuIGludGVnZXIsIHdoaWxlIGBgYlswOjFdYGAgd2lsbCBiZSBhIGJ5dGVzIG9iamVjdCBvZgorbGVuZ3RoIDEuICAoVGhpcyBjb250cmFzdHMgd2l0aCB0ZXh0IHN0cmluZ3MsIHdoZXJlIGJvdGggaW5kZXhpbmcgYW5kCitzbGljaW5nIHdpbGwgcHJvZHVjZSBhIHN0cmluZyBvZiBsZW5ndGggMSkKKworVGhlIHJlcHJlc2VudGF0aW9uIG9mIGJ5dGVzIG9iamVjdHMgdXNlcyB0aGUgbGl0ZXJhbCBmb3JtYXQgKGBgYicuLi4nYGApCitzaW5jZSBpdCBpcyBvZnRlbiBtb3JlIHVzZWZ1bCB0aGFuIGUuZy4gYGBieXRlcyhbNDYsIDQ2LCA0Nl0pYGAuICBZb3UgY2FuCithbHdheXMgY29udmVydCBhIGJ5dGVzIG9iamVjdCBpbnRvIGEgbGlzdCBvZiBpbnRlZ2VycyB1c2luZyBgYGxpc3QoYilgYC4KIAogCi1Ob3RlczoKLQotKDEpCi0gICAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLgotCi0oMikKLSAgICp4KiBjYW4gYmUgYW55IGl0ZXJhYmxlIG9iamVjdC4KLQotKDMpCi0gICBSYWlzZXMgOmV4YzpgVmFsdWVFcnJvcmAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi4gV2hlbiBhIG5lZ2F0aXZlIGluZGV4IGlzCi0gICBwYXNzZWQgYXMgdGhlIHNlY29uZCBvciB0aGlyZCBwYXJhbWV0ZXIgdG8gdGhlIDptZXRoOmBpbmRleGAgbWV0aG9kLCB0aGUgc2VxdWVuY2UKLSAgIGxlbmd0aCBpcyBhZGRlZCwgYXMgZm9yIHNsaWNlIGluZGljZXMuICBJZiBpdCBpcyBzdGlsbCBuZWdhdGl2ZSwgaXQgaXMgdHJ1bmNhdGVkCi0gICB0byB6ZXJvLCBhcyBmb3Igc2xpY2UgaW5kaWNlcy4KLQotKDQpCi0gICBXaGVuIGEgbmVnYXRpdmUgaW5kZXggaXMgcGFzc2VkIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8gdGhlIDptZXRoOmBpbnNlcnRgCi0gICBtZXRob2QsIHRoZSBzZXF1ZW5jZSBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZSBpbmRpY2VzLiAgSWYgaXQgaXMgc3RpbGwKLSAgIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgZm9yIHNsaWNlIGluZGljZXMuCi0KLSg1KQotICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byBgYC0xYGAsIHNvIHRoYXQgYnkgZGVmYXVsdCB0aGUgbGFzdAotICAgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC4KLQotKDYpCi0gICBUaGUgOm1ldGg6YHNvcnRgIGFuZCA6bWV0aDpgcmV2ZXJzZWAgbWV0aG9kcyBtb2RpZnkgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvcgotICAgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHNvcnRpbmcgb3IgcmV2ZXJzaW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgeW91Ci0gICB0aGF0IHRoZXkgb3BlcmF0ZSBieSBzaWRlIGVmZmVjdCwgdGhleSBkb24ndCByZXR1cm4gdGhlIHNvcnRlZCBvciByZXZlcnNlZAotICAgc2VxdWVuY2UuCi0KLSg3KQotICAgVGhlIDptZXRoOmBzb3J0YCBtZXRob2QgdGFrZXMgb3B0aW9uYWwgYXJndW1lbnRzIGZvciBjb250cm9sbGluZyB0aGUKLSAgIGNvbXBhcmlzb25zLiAgRWFjaCBtdXN0IGJlIHNwZWNpZmllZCBhcyBhIGtleXdvcmQgYXJndW1lbnQuCi0KLSAgICprZXkqIHNwZWNpZmllcyBhIGZ1bmN0aW9uIG9mIG9uZSBhcmd1bWVudCB0aGF0IGlzIHVzZWQgdG8gZXh0cmFjdCBhIGNvbXBhcmlzb24KLSAgIGtleSBmcm9tIGVhY2ggbGlzdCBlbGVtZW50OiBgYGtleT1zdHIubG93ZXJgYC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgTm9uZWBgLgotICAgVXNlIDpmdW5jOmBmdW5jdG9vbHMuY21wX3RvX2tleWAgdG8gY29udmVydCBhbgotICAgb2xkLXN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uCisuLiBub3RlOjoKKyAgIEZvciBQeXRob24gMi54IHVzZXJzOiBJbiB0aGUgUHl0aG9uIDIueCBzZXJpZXMsIGEgdmFyaWV0eSBvZiBpbXBsaWNpdAorICAgY29udmVyc2lvbnMgYmV0d2VlbiA4LWJpdCBzdHJpbmdzICh0aGUgY2xvc2VzdCB0aGluZyAyLnggb2ZmZXJzIHRvIGEKKyAgIGJ1aWx0LWluIGJpbmFyeSBkYXRhIHR5cGUpIGFuZCBVbmljb2RlIHN0cmluZ3Mgd2VyZSBwZXJtaXR0ZWQuIFRoaXMgd2FzIGEKKyAgIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdvcmthcm91bmQgdG8gYWNjb3VudCBmb3IgdGhlIGZhY3QgdGhhdCBQeXRob24KKyAgIG9yaWdpbmFsbHkgb25seSBzdXBwb3J0ZWQgOC1iaXQgdGV4dCwgYW5kIFVuaWNvZGUgdGV4dCB3YXMgYSBsYXRlcgorICAgYWRkaXRpb24uIEluIFB5dGhvbiAzLngsIHRob3NlIGltcGxpY2l0IGNvbnZlcnNpb25zIGFyZSBnb25lIC0gY29udmVyc2lvbnMKKyAgIGJldHdlZW4gOC1iaXQgYmluYXJ5IGRhdGEgYW5kIFVuaWNvZGUgdGV4dCBtdXN0IGJlIGV4cGxpY2l0LCBhbmQgYnl0ZXMgYW5kCisgICBzdHJpbmcgb2JqZWN0cyB3aWxsIGFsd2F5cyBjb21wYXJlIHVuZXF1YWwuCiAKIAotICAgKnJldmVyc2UqIGlzIGEgYm9vbGVhbiB2YWx1ZS4gIElmIHNldCB0byBgYFRydWVgYCwgdGhlbiB0aGUgbGlzdCBlbGVtZW50cyBhcmUKLSAgIHNvcnRlZCBhcyBpZiBlYWNoIGNvbXBhcmlzb24gd2VyZSByZXZlcnNlZC4KKy4uIF90eXBlYnl0ZWFycmF5OgogCi0gICBUaGUgOm1ldGg6YHNvcnRgIG1ldGhvZCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4gIEEKLSAgIHNvcnQgaXMgc3RhYmxlIGlmIGl0IGd1YXJhbnRlZXMgbm90IHRvIGNoYW5nZSB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgZWxlbWVudHMKLSAgIHRoYXQgY29tcGFyZSBlcXVhbCAtLS0gdGhpcyBpcyBoZWxwZnVsIGZvciBzb3J0aW5nIGluIG11bHRpcGxlIHBhc3NlcyAoZm9yCi0gICBleGFtcGxlLCBzb3J0IGJ5IGRlcGFydG1lbnQsIHRoZW4gYnkgc2FsYXJ5IGdyYWRlKS4KK0J5dGVhcnJheSBPYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLQogCi0gICAuLiBpbXBsLWRldGFpbDo6CisuLiBpbmRleDo6IG9iamVjdDogYnl0ZWFycmF5CiAKLSAgICAgIFdoaWxlIGEgbGlzdCBpcyBiZWluZyBzb3J0ZWQsIHRoZSBlZmZlY3Qgb2YgYXR0ZW1wdGluZyB0byBtdXRhdGUsIG9yIGV2ZW4KLSAgICAgIGluc3BlY3QsIHRoZSBsaXN0IGlzIHVuZGVmaW5lZC4gIFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBtYWtlcyB0aGUKLSAgICAgIGxpc3QgYXBwZWFyIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCByYWlzZXMgOmV4YzpgVmFsdWVFcnJvcmAgaWYgaXQgY2FuCi0gICAgICBkZXRlY3QgdGhhdCB0aGUgbGlzdCBoYXMgYmVlbiBtdXRhdGVkIGR1cmluZyBhIHNvcnQuCis6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0cyBhcmUgYSBtdXRhYmxlIGNvdW50ZXJwYXJ0IHRvIDpjbGFzczpgYnl0ZXNgCitvYmplY3RzLiBUaGVyZSBpcyBubyBkZWRpY2F0ZWQgbGl0ZXJhbCBzeW50YXggZm9yIGJ5dGVhcnJheSBvYmplY3RzLCBpbnN0ZWFkCit0aGV5IGFyZSBhbHdheXMgY3JlYXRlZCBieSBjYWxsaW5nIHRoZSBjb25zdHJ1Y3RvcjoKIAotKDgpCi0gICA6bWV0aDpgc29ydGAgaXMgbm90IHN1cHBvcnRlZCBieSA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0cy4KKyogQ3JlYXRpbmcgYW4gZW1wdHkgaW5zdGFuY2U6IGBgYnl0ZWFycmF5KClgYAorKiBDcmVhdGluZyBhIHplcm8tZmlsbGVkIGluc3RhbmNlIHdpdGggYSBnaXZlbiBsZW5ndGg6IGBgYnl0ZWFycmF5KDEwKWBgCisqIEZyb20gYW4gaXRlcmFibGUgb2YgaW50ZWdlcnM6IGBgYnl0ZWFycmF5KHJhbmdlKDIwKSlgYAorKiBDb3B5aW5nIGV4aXN0aW5nIGJpbmFyeSBkYXRhIHZpYSB0aGUgYnVmZmVyIHByb3RvY29sOiAgYGBieXRlYXJyYXkoYidIaSEnKWBgCisKK0FzIGJ5dGVhcnJheSBvYmplY3RzIGFyZSBtdXRhYmxlLCB0aGV5IHN1cHBvcnQgdGhlCis6cmVmOmBtdXRhYmxlIDx0eXBlc3NlcS1tdXRhYmxlPmAgc2VxdWVuY2Ugb3BlcmF0aW9ucyBpbiBhZGRpdGlvbiB0byB0aGUKK2NvbW1vbiBieXRlcyBhbmQgYnl0ZWFycmF5IG9wZXJhdGlvbnMgZGVzY3JpYmVkIGluIDpyZWY6YGJ5dGVzLW1ldGhvZHNgLgorCitBbHNvIHNlZSB0aGUgOnJlZjpgYnl0ZWFycmF5IDxmdW5jLWJ5dGVhcnJheT5gIGJ1aWx0LWluLgogCiAKIC4uIF9ieXRlcy1tZXRob2RzOgogCi1CeXRlcyBhbmQgQnl0ZSBBcnJheSBNZXRob2RzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitCeXRlcyBhbmQgQnl0ZWFycmF5IE9wZXJhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBpbmRleDo6IHBhaXI6IGJ5dGVzOyBtZXRob2RzCiAgICAgICAgICAgIHBhaXI6IGJ5dGVhcnJheTsgbWV0aG9kcwogCi1CeXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMsIGJlaW5nICJzdHJpbmdzIG9mIGJ5dGVzIiwgaGF2ZSBhbGwgbWV0aG9kcyBmb3VuZCBvbgotc3RyaW5ncywgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIDpmdW5jOmBlbmNvZGVgLCA6ZnVuYzpgZm9ybWF0YCBhbmQKLTpmdW5jOmBpc2lkZW50aWZpZXJgLCB3aGljaCBkbyBub3QgbWFrZSBzZW5zZSB3aXRoIHRoZXNlIHR5cGVzLiAgRm9yIGNvbnZlcnRpbmcKLXRoZSBvYmplY3RzIHRvIHN0cmluZ3MsIHRoZXkgaGF2ZSBhIDpmdW5jOmBkZWNvZGVgIG1ldGhvZC4KK0JvdGggYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIHN1cHBvcnQgdGhlIDpyZWY6YGNvbW1vbiA8dHlwZXNzZXEtY29tbW9uPmAKK3NlcXVlbmNlIG9wZXJhdGlvbnMuIFRoZXkgaW50ZXJvcGVyYXRlIG5vdCBqdXN0IHdpdGggb3BlcmFuZHMgb2YgdGhlIHNhbWUKK3R5cGUsIGJ1dCB3aXRoIGFueSBvYmplY3QgdGhhdCBzdXBwb3J0cyB0aGUKKzpyZWY6YGJ1ZmZlciBwcm90b2NvbCA8YnVmZmVyb2JqZWN0cz5gLiBEdWUgdG8gdGhpcyBmbGV4aWJpbGl0eSwgdGhleSBjYW4gYmUKK2ZyZWVseSBtaXhlZCBpbiBvcGVyYXRpb25zIHdpdGhvdXQgY2F1c2luZyBlcnJvcnMuIEhvd2V2ZXIsIHRoZSByZXR1cm4gdHlwZQorb2YgdGhlIHJlc3VsdCBtYXkgZGVwZW5kIG9uIHRoZSBvcmRlciBvZiBvcGVyYW5kcy4KIAotV2hlcmV2ZXIgb25lIG9mIHRoZXNlIG1ldGhvZHMgbmVlZHMgdG8gaW50ZXJwcmV0IHRoZSBieXRlcyBhcyBjaGFyYWN0ZXJzCi0oZS5nLiB0aGUgOmZ1bmM6YGlzLi4uYCBtZXRob2RzKSwgdGhlIEFTQ0lJIGNoYXJhY3RlciBzZXQgaXMgYXNzdW1lZC4KK0R1ZSB0byB0aGUgY29tbW9uIHVzZSBvZiBBU0NJSSB0ZXh0IGFzIHRoZSBiYXNpcyBmb3IgYmluYXJ5IHByb3RvY29scywgYnl0ZXMKK2FuZCBieXRlYXJyYXkgb2JqZWN0cyBwcm92aWRlIGFsbW9zdCBhbGwgbWV0aG9kcyBmb3VuZCBvbiB0ZXh0IHN0cmluZ3MsIHdpdGgKK3RoZSBleGNlcHRpb25zIG9mOgorCisqIDptZXRoOmBzdHIuZW5jb2RlYCAod2hpY2ggY29udmVydHMgdGV4dCBzdHJpbmdzIHRvIGJ5dGVzIG9iamVjdHMpCisqIDptZXRoOmBzdHIuZm9ybWF0YCBhbmQgOm1ldGg6YHN0ci5mb3JtYXRfbWFwYCAod2hpY2ggYXJlIHVzZWQgdG8gZm9ybWF0CisgIHRleHQgZm9yIGRpc3BsYXkgdG8gdXNlcnMpCisqIDptZXRoOmBzdHIuaXNpZGVudGlmaWVyYCwgOm1ldGg6YHN0ci5pc251bWVyaWNgLCA6bWV0aDpgc3RyLmlzZGVjaW1hbGAsCisgIDptZXRoOmBzdHIuaXNwcmludGFibGVgICh3aGljaCBhcmUgdXNlZCB0byBjaGVjayB2YXJpb3VzIHByb3BlcnRpZXMgb2YKKyAgdGV4dCBzdHJpbmdzIHdoaWNoIGFyZSBub3QgdHlwaWNhbGx5IGFwcGxpY2FibGUgdG8gYmluYXJ5IHByb3RvY29scykuCisKK0FsbCBvdGhlciBzdHJpbmcgbWV0aG9kcyBhcmUgc3VwcG9ydGVkLCBhbHRob3VnaCBzb21ldGltZXMgd2l0aCBzbGlnaHQKK2RpZmZlcmVuY2VzIGluIGZ1bmN0aW9uYWxpdHkgYW5kIHNlbWFudGljcyAoYXMgZGVzY3JpYmVkIGJlbG93KS4KIAogLi4gbm90ZTo6CiAKICAgIFRoZSBtZXRob2RzIG9uIGJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cyBkb24ndCBhY2NlcHQgc3RyaW5ncyBhcyB0aGVpcgogICAgYXJndW1lbnRzLCBqdXN0IGFzIHRoZSBtZXRob2RzIG9uIHN0cmluZ3MgZG9uJ3QgYWNjZXB0IGJ5dGVzIGFzIHRoZWlyCi0gICBhcmd1bWVudHMuICBGb3IgZXhhbXBsZSwgeW91IGhhdmUgdG8gd3JpdGUgOjoKKyAgIGFyZ3VtZW50cy4gIEZvciBleGFtcGxlLCB5b3UgaGF2ZSB0byB3cml0ZTo6CiAKICAgICAgIGEgPSAiYWJjIgogICAgICAgYiA9IGEucmVwbGFjZSgiYSIsICJmIikKIAotICAgYW5kIDo6CisgICBhbmQ6OgogCiAgICAgICBhID0gYiJhYmMiCiAgICAgICBiID0gYS5yZXBsYWNlKGIiYSIsIGIiZiIpCiAKK1doZW5ldmVyIGEgYnl0ZXMgb3IgYnl0ZWFycmF5IG1ldGhvZCBuZWVkcyB0byBpbnRlcnByZXQgdGhlIGJ5dGVzIGFzCitjaGFyYWN0ZXJzIChlLmcuIHRoZSA6bWV0aDpgaXMuLi5gIG1ldGhvZHMsIDptZXRoOmBzcGxpdGAsIDptZXRoOmBzdHJpcGApLAordGhlIEFTQ0lJIGNoYXJhY3RlciBzZXQgaXMgYXNzdW1lZCAodGV4dCBzdHJpbmdzIHVzZSBVbmljb2RlIHNlbWFudGljcykuCisKKy4uIG5vdGU6OgorICAgVXNpbmcgdGhlc2UgQVNDSUkgYmFzZWQgbWV0aG9kcyB0byBtYW5pcHVsYXRlIGJpbmFyeSBkYXRhIHRoYXQgaXMgbm90CisgICBzdG9yZWQgaW4gYW4gQVNDSUkgYmFzZWQgZm9ybWF0IG1heSBsZWFkIHRvIGRhdGEgY29ycnVwdGlvbi4KKworVGhlIHNlYXJjaCBvcGVyYXRpb25zICg6a2V5d29yZDpgaW5gLCA6bWV0aDpgY291bnRgLCA6bWV0aDpgZmluZGAsCis6bWV0aDpgaW5kZXhgLCA6bWV0aDpgcmZpbmRgIGFuZCA6bWV0aDpgcmluZGV4YCkgYWxsIGFjY2VwdCBib3RoIGludGVnZXJzCitpbiB0aGUgcmFuZ2UgMCB0byAyNTUgKGluY2x1c2l2ZSkgYXMgd2VsbCBhcyBieXRlcyBhbmQgYnl0ZSBhcnJheSBzZXF1ZW5jZXMuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBBbGwgb2YgdGhlIHNlYXJjaCBtZXRob2RzIGFsc28gYWNjZXB0IGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIDAgdG8gMjU1CisgICAoaW5jbHVzaXZlKSBhcyB0aGVpciBmaXJzdCBhcmd1bWVudC4KKworCitFYWNoIGJ5dGVzIGFuZCBieXRlYXJyYXkgaW5zdGFuY2UgcHJvdmlkZXMgYSA6bWV0aDpgZGVjb2RlYCBjb252ZW5pZW5jZQorbWV0aG9kIHRoYXQgaXMgdGhlIGludmVyc2Ugb2YgOm1ldGg6YHN0ci5lbmNvZGVgOgogCiAuLiBtZXRob2Q6OiBieXRlcy5kZWNvZGUoZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSJzdHJpY3QiKQogICAgICAgICAgICAgYnl0ZWFycmF5LmRlY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpCkBAIC0xODQ3LDggKzIzMDMsMTAgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBrZXl3b3JkIGFyZ3VtZW50cy4KIAotCi1UaGUgYnl0ZXMgYW5kIGJ5dGVhcnJheSB0eXBlcyBoYXZlIGFuIGFkZGl0aW9uYWwgY2xhc3MgbWV0aG9kOgorU2luY2UgMiBoZXhhZGVjaW1hbCBkaWdpdHMgY29ycmVzcG9uZCBwcmVjaXNlbHkgdG8gYSBzaW5nbGUgYnl0ZSwgaGV4YWRlY2ltYWwKK251bWJlcnMgYXJlIGEgY29tbW9ubHkgdXNlZCBmb3JtYXQgZm9yIGRlc2NyaWJpbmcgYmluYXJ5IGRhdGEuIEFjY29yZGluZ2x5LAordGhlIGJ5dGVzIGFuZCBieXRlYXJyYXkgdHlwZXMgaGF2ZSBhbiBhZGRpdGlvbmFsIGNsYXNzIG1ldGhvZCB0byByZWFkIGRhdGEgaW4KK3RoYXQgZm9ybWF0OgogCiAuLiBjbGFzc21ldGhvZDo6IGJ5dGVzLmZyb21oZXgoc3RyaW5nKQogICAgICAgICAgICAgICAgICBieXRlYXJyYXkuZnJvbWhleChzdHJpbmcpCkBAIC0xODU3LDggKzIzMTUsOCBAQAogICAgZGVjb2RpbmcgdGhlIGdpdmVuIHN0cmluZyBvYmplY3QuICBUaGUgc3RyaW5nIG11c3QgY29udGFpbiB0d28gaGV4YWRlY2ltYWwKICAgIGRpZ2l0cyBwZXIgYnl0ZSwgc3BhY2VzIGFyZSBpZ25vcmVkLgogCi0gICA+Pj4gYnl0ZXMuZnJvbWhleCgnZjAgZjFmMiAgJykKLSAgIGInXHhmMFx4ZjFceGYyJworICAgPj4+IGJ5dGVzLmZyb21oZXgoJzJFZjAgRjFmMiAgJykKKyAgIGInLlx4ZjBceGYxXHhmMicKIAogCiBUaGUgbWFrZXRyYW5zIGFuZCB0cmFuc2xhdGUgbWV0aG9kcyBkaWZmZXIgaW4gc2VtYW50aWNzIGZyb20gdGhlIHZlcnNpb25zCkBAIC0xODkyLDYgKzIzNTAsNDI4IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAogCisuLiBfdHlwZW1lbW9yeXZpZXc6CisKK01lbW9yeSBWaWV3cworLS0tLS0tLS0tLS0tCisKKzpjbGFzczpgbWVtb3J5dmlld2Agb2JqZWN0cyBhbGxvdyBQeXRob24gY29kZSB0byBhY2Nlc3MgdGhlIGludGVybmFsIGRhdGEKK29mIGFuIG9iamVjdCB0aGF0IHN1cHBvcnRzIHRoZSA6cmVmOmBidWZmZXIgcHJvdG9jb2wgPGJ1ZmZlcm9iamVjdHM+YCB3aXRob3V0Citjb3B5aW5nLgorCisuLiBjbGFzczo6IG1lbW9yeXZpZXcob2JqKQorCisgICBDcmVhdGUgYSA6Y2xhc3M6YG1lbW9yeXZpZXdgIHRoYXQgcmVmZXJlbmNlcyAqb2JqKi4gICpvYmoqIG11c3Qgc3VwcG9ydCB0aGUKKyAgIGJ1ZmZlciBwcm90b2NvbC4gIEJ1aWx0LWluIG9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBidWZmZXIgcHJvdG9jb2wgaW5jbHVkZQorICAgOmNsYXNzOmBieXRlc2AgYW5kIDpjbGFzczpgYnl0ZWFycmF5YC4KKworICAgQSA6Y2xhc3M6YG1lbW9yeXZpZXdgIGhhcyB0aGUgbm90aW9uIG9mIGFuICplbGVtZW50Kiwgd2hpY2ggaXMgdGhlCisgICBhdG9taWMgbWVtb3J5IHVuaXQgaGFuZGxlZCBieSB0aGUgb3JpZ2luYXRpbmcgb2JqZWN0ICpvYmoqLiAgRm9yIG1hbnkKKyAgIHNpbXBsZSB0eXBlcyBzdWNoIGFzIDpjbGFzczpgYnl0ZXNgIGFuZCA6Y2xhc3M6YGJ5dGVhcnJheWAsIGFuIGVsZW1lbnQKKyAgIGlzIGEgc2luZ2xlIGJ5dGUsIGJ1dCBvdGhlciB0eXBlcyBzdWNoIGFzIDpjbGFzczpgYXJyYXkuYXJyYXlgIG1heSBoYXZlCisgICBiaWdnZXIgZWxlbWVudHMuCisKKyAgIGBgbGVuKHZpZXcpYGAgaXMgZXF1YWwgdG8gdGhlIGxlbmd0aCBvZiA6Y2xhc3M6YH5tZW1vcnl2aWV3LnRvbGlzdGAuCisgICBJZiBgYHZpZXcubmRpbSA9IDBgYCwgdGhlIGxlbmd0aCBpcyAxLiBJZiBgYHZpZXcubmRpbSA9IDFgYCwgdGhlIGxlbmd0aAorICAgaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdmlldy4gRm9yIGhpZ2hlciBkaW1lbnNpb25zLAorICAgdGhlIGxlbmd0aCBpcyBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBuZXN0ZWQgbGlzdCByZXByZXNlbnRhdGlvbiBvZgorICAgdGhlIHZpZXcuIFRoZSA6Y2xhc3M6YH5tZW1vcnl2aWV3Lml0ZW1zaXplYCBhdHRyaWJ1dGUgd2lsbCBnaXZlIHlvdSB0aGUKKyAgIG51bWJlciBvZiBieXRlcyBpbiBhIHNpbmdsZSBlbGVtZW50LgorCisgICBBIDpjbGFzczpgbWVtb3J5dmlld2Agc3VwcG9ydHMgc2xpY2luZyB0byBleHBvc2UgaXRzIGRhdGEuIElmCisgICA6Y2xhc3M6YH5tZW1vcnl2aWV3LmZvcm1hdGAgaXMgb25lIG9mIHRoZSBuYXRpdmUgZm9ybWF0IHNwZWNpZmllcnMKKyAgIGZyb20gdGhlIDptb2Q6YHN0cnVjdGAgbW9kdWxlLCBpbmRleGluZyB3aWxsIHJldHVybiBhIHNpbmdsZSBlbGVtZW50CisgICB3aXRoIHRoZSBjb3JyZWN0IHR5cGUuIEZ1bGwgc2xpY2luZyB3aWxsIHJlc3VsdCBpbiBhIHN1YnZpZXc6OgorCisgICAgPj4+IHYgPSBtZW1vcnl2aWV3KGInYWJjZWZnJykKKyAgICA+Pj4gdlsxXQorICAgIDk4CisgICAgPj4+IHZbLTFdCisgICAgMTAzCisgICAgPj4+IHZbMTo0XQorICAgIDxtZW1vcnkgYXQgMHg3ZjNkZGM5ZjQzNTA+CisgICAgPj4+IGJ5dGVzKHZbMTo0XSkKKyAgICBiJ2JjZScKKworICAgT3RoZXIgbmF0aXZlIGZvcm1hdHM6OgorCisgICAgICA+Pj4gaW1wb3J0IGFycmF5CisgICAgICA+Pj4gYSA9IGFycmF5LmFycmF5KCdsJywgWy0xMTExMTExMSwgMjIyMjIyMjIsIC0zMzMzMzMzMywgNDQ0NDQ0NDRdKQorICAgICAgPj4+IGFbMF0KKyAgICAgIC0xMTExMTExMQorICAgICAgPj4+IGFbLTFdCisgICAgICA0NDQ0NDQ0NAorICAgICAgPj4+IGFbMjozXS50b2xpc3QoKQorICAgICAgWy0zMzMzMzMzM10KKyAgICAgID4+PiBhWzo6Ml0udG9saXN0KCkKKyAgICAgIFstMTExMTExMTEsIC0zMzMzMzMzM10KKyAgICAgID4+PiBhWzo6LTFdLnRvbGlzdCgpCisgICAgICBbNDQ0NDQ0NDQsIC0zMzMzMzMzMywgMjIyMjIyMjIsIC0xMTExMTExMV0KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIElmIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBpcyB3cml0YWJsZSwgdGhlIG1lbW9yeXZpZXcgc3VwcG9ydHMgc2xpY2UKKyAgIGFzc2lnbm1lbnQuIFJlc2l6aW5nIGlzIG5vdCBhbGxvd2VkOjoKKworICAgICAgPj4+IGRhdGEgPSBieXRlYXJyYXkoYidhYmNlZmcnKQorICAgICAgPj4+IHYgPSBtZW1vcnl2aWV3KGRhdGEpCisgICAgICA+Pj4gdi5yZWFkb25seQorICAgICAgRmFsc2UKKyAgICAgID4+PiB2WzBdID0gb3JkKGIneicpCisgICAgICA+Pj4gZGF0YQorICAgICAgYnl0ZWFycmF5KGInemJjZWZnJykKKyAgICAgID4+PiB2WzE6NF0gPSBiJzEyMycKKyAgICAgID4+PiBkYXRhCisgICAgICBieXRlYXJyYXkoYid6MTIzZmcnKQorICAgICAgPj4+IHZbMjozXSA9IGInc3BhbScKKyAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgICAgIFZhbHVlRXJyb3I6IG1lbW9yeXZpZXcgYXNzaWdubWVudDogbHZhbHVlIGFuZCBydmFsdWUgaGF2ZSBkaWZmZXJlbnQgc3RydWN0dXJlcworICAgICAgPj4+IHZbMjo2XSA9IGInc3BhbScKKyAgICAgID4+PiBkYXRhCisgICAgICBieXRlYXJyYXkoYid6MXNwYW0nKQorCisgICBPbmUtZGltZW5zaW9uYWwgbWVtb3J5dmlld3Mgb2YgaGFzaGFibGUgKHJlYWQtb25seSkgdHlwZXMgd2l0aCBmb3JtYXRzCisgICAnQicsICdiJyBvciAnYycgYXJlIGFsc28gaGFzaGFibGUuIFRoZSBoYXNoIGlzIGRlZmluZWQgYXMKKyAgIGBgaGFzaChtKSA9PSBoYXNoKG0udG9ieXRlcygpKWBgOjoKKworICAgICAgPj4+IHYgPSBtZW1vcnl2aWV3KGInYWJjZWZnJykKKyAgICAgID4+PiBoYXNoKHYpID09IGhhc2goYidhYmNlZmcnKQorICAgICAgVHJ1ZQorICAgICAgPj4+IGhhc2godlsyOjRdKSA9PSBoYXNoKGInY2UnKQorICAgICAgVHJ1ZQorICAgICAgPj4+IGhhc2godls6Oi0yXSkgPT0gaGFzaChiJ2FiY2VmZydbOjotMl0pCisgICAgICBUcnVlCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBPbmUtZGltZW5zaW9uYWwgbWVtb3J5dmlld3Mgd2l0aCBmb3JtYXRzICdCJywgJ2InIG9yICdjJyBhcmUgbm93IGhhc2hhYmxlLgorCisgICA6Y2xhc3M6YG1lbW9yeXZpZXdgIGhhcyBzZXZlcmFsIG1ldGhvZHM6CisKKyAgIC4uIG1ldGhvZDo6IF9fZXFfXyhleHBvcnRlcikKKworICAgICAgQSBtZW1vcnl2aWV3IGFuZCBhIDpwZXA6YDMxMThgIGV4cG9ydGVyIGFyZSBlcXVhbCBpZiB0aGVpciBzaGFwZXMgYXJlCisgICAgICBlcXVpdmFsZW50IGFuZCBpZiBhbGwgY29ycmVzcG9uZGluZyB2YWx1ZXMgYXJlIGVxdWFsIHdoZW4gdGhlIG9wZXJhbmRzJworICAgICAgcmVzcGVjdGl2ZSBmb3JtYXQgY29kZXMgYXJlIGludGVycHJldGVkIHVzaW5nIDptb2Q6YHN0cnVjdGAgc3ludGF4LgorCisgICAgICBGb3IgdGhlIHN1YnNldCBvZiA6bW9kOmBzdHJ1Y3RgIGZvcm1hdCBzdHJpbmdzIGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkKKyAgICAgIDptZXRoOmB0b2xpc3RgLCBgYHZgYCBhbmQgYGB3YGAgYXJlIGVxdWFsIGlmIGBgdi50b2xpc3QoKSA9PSB3LnRvbGlzdCgpYGA6OgorCisgICAgICAgICA+Pj4gaW1wb3J0IGFycmF5CisgICAgICAgICA+Pj4gYSA9IGFycmF5LmFycmF5KCdJJywgWzEsIDIsIDMsIDQsIDVdKQorICAgICAgICAgPj4+IGIgPSBhcnJheS5hcnJheSgnZCcsIFsxLjAsIDIuMCwgMy4wLCA0LjAsIDUuMF0pCisgICAgICAgICA+Pj4gYyA9IGFycmF5LmFycmF5KCdiJywgWzUsIDMsIDFdKQorICAgICAgICAgPj4+IHggPSBtZW1vcnl2aWV3KGEpCisgICAgICAgICA+Pj4geSA9IG1lbW9yeXZpZXcoYikKKyAgICAgICAgID4+PiB4ID09IGEgPT0geSA9PSBiCisgICAgICAgICBUcnVlCisgICAgICAgICA+Pj4geC50b2xpc3QoKSA9PSBhLnRvbGlzdCgpID09IHkudG9saXN0KCkgPT0gYi50b2xpc3QoKQorICAgICAgICAgVHJ1ZQorICAgICAgICAgPj4+IHogPSB5Wzo6LTJdCisgICAgICAgICA+Pj4geiA9PSBjCisgICAgICAgICBUcnVlCisgICAgICAgICA+Pj4gei50b2xpc3QoKSA9PSBjLnRvbGlzdCgpCisgICAgICAgICBUcnVlCisKKyAgICAgIElmIGVpdGhlciBmb3JtYXQgc3RyaW5nIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIDptb2Q6YHN0cnVjdGAgbW9kdWxlLAorICAgICAgdGhlbiB0aGUgb2JqZWN0cyB3aWxsIGFsd2F5cyBjb21wYXJlIGFzIHVuZXF1YWwgKGV2ZW4gaWYgdGhlIGZvcm1hdAorICAgICAgc3RyaW5ncyBhbmQgYnVmZmVyIGNvbnRlbnRzIGFyZSBpZGVudGljYWwpOjoKKworICAgICAgICAgPj4+IGZyb20gY3R5cGVzIGltcG9ydCBCaWdFbmRpYW5TdHJ1Y3R1cmUsIGNfbG9uZworICAgICAgICAgPj4+IGNsYXNzIEJFUG9pbnQoQmlnRW5kaWFuU3RydWN0dXJlKToKKyAgICAgICAgIC4uLiAgICAgX2ZpZWxkc18gPSBbKCJ4IiwgY19sb25nKSwgKCJ5IiwgY19sb25nKV0KKyAgICAgICAgIC4uLgorICAgICAgICAgPj4+IHBvaW50ID0gQkVQb2ludCgxMDAsIDIwMCkKKyAgICAgICAgID4+PiBhID0gbWVtb3J5dmlldyhwb2ludCkKKyAgICAgICAgID4+PiBiID0gbWVtb3J5dmlldyhwb2ludCkKKyAgICAgICAgID4+PiBhID09IHBvaW50CisgICAgICAgICBGYWxzZQorICAgICAgICAgPj4+IGEgPT0gYgorICAgICAgICAgRmFsc2UKKworICAgICAgTm90ZSB0aGF0LCBhcyB3aXRoIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIGBgdiBpcyB3YGAgZG9lcyAqbm90KiBpbXBseQorICAgICAgYGB2ID09IHdgYCBmb3IgbWVtb3J5dmlldyBvYmplY3RzLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgUHJldmlvdXMgdmVyc2lvbnMgY29tcGFyZWQgdGhlIHJhdyBtZW1vcnkgZGlzcmVnYXJkaW5nIHRoZSBpdGVtIGZvcm1hdAorICAgICAgICAgYW5kIHRoZSBsb2dpY2FsIGFycmF5IHN0cnVjdHVyZS4KKworICAgLi4gbWV0aG9kOjogdG9ieXRlcygpCisKKyAgICAgIFJldHVybiB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyIGFzIGEgYnl0ZXN0cmluZy4gIFRoaXMgaXMgZXF1aXZhbGVudCB0bworICAgICAgY2FsbGluZyB0aGUgOmNsYXNzOmBieXRlc2AgY29uc3RydWN0b3Igb24gdGhlIG1lbW9yeXZpZXcuIDo6CisKKyAgICAgICAgID4+PiBtID0gbWVtb3J5dmlldyhiImFiYyIpCisgICAgICAgICA+Pj4gbS50b2J5dGVzKCkKKyAgICAgICAgIGInYWJjJworICAgICAgICAgPj4+IGJ5dGVzKG0pCisgICAgICAgICBiJ2FiYycKKworICAgICAgRm9yIG5vbi1jb250aWd1b3VzIGFycmF5cyB0aGUgcmVzdWx0IGlzIGVxdWFsIHRvIHRoZSBmbGF0dGVuZWQgbGlzdAorICAgICAgcmVwcmVzZW50YXRpb24gd2l0aCBhbGwgZWxlbWVudHMgY29udmVydGVkIHRvIGJ5dGVzLiA6bWV0aDpgdG9ieXRlc2AKKyAgICAgIHN1cHBvcnRzIGFsbCBmb3JtYXQgc3RyaW5ncywgaW5jbHVkaW5nIHRob3NlIHRoYXQgYXJlIG5vdCBpbgorICAgICAgOm1vZDpgc3RydWN0YCBtb2R1bGUgc3ludGF4LgorCisgICAuLiBtZXRob2Q6OiB0b2xpc3QoKQorCisgICAgICBSZXR1cm4gdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciBhcyBhIGxpc3Qgb2YgZWxlbWVudHMuIDo6CisKKyAgICAgICAgID4+PiBtZW1vcnl2aWV3KGInYWJjJykudG9saXN0KCkKKyAgICAgICAgIFs5NywgOTgsIDk5XQorICAgICAgICAgPj4+IGltcG9ydCBhcnJheQorICAgICAgICAgPj4+IGEgPSBhcnJheS5hcnJheSgnZCcsIFsxLjEsIDIuMiwgMy4zXSkKKyAgICAgICAgID4+PiBtID0gbWVtb3J5dmlldyhhKQorICAgICAgICAgPj4+IG0udG9saXN0KCkKKyAgICAgICAgIFsxLjEsIDIuMiwgMy4zXQorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgOm1ldGg6YHRvbGlzdGAgbm93IHN1cHBvcnRzIGFsbCBzaW5nbGUgY2hhcmFjdGVyIG5hdGl2ZSBmb3JtYXRzIGluCisgICAgICAgICA6bW9kOmBzdHJ1Y3RgIG1vZHVsZSBzeW50YXggYXMgd2VsbCBhcyBtdWx0aS1kaW1lbnNpb25hbAorICAgICAgICAgcmVwcmVzZW50YXRpb25zLgorCisgICAuLiBtZXRob2Q6OiByZWxlYXNlKCkKKworICAgICAgUmVsZWFzZSB0aGUgdW5kZXJseWluZyBidWZmZXIgZXhwb3NlZCBieSB0aGUgbWVtb3J5dmlldyBvYmplY3QuICBNYW55CisgICAgICBvYmplY3RzIHRha2Ugc3BlY2lhbCBhY3Rpb25zIHdoZW4gYSB2aWV3IGlzIGhlbGQgb24gdGhlbSAoZm9yIGV4YW1wbGUsCisgICAgICBhIDpjbGFzczpgYnl0ZWFycmF5YCB3b3VsZCB0ZW1wb3JhcmlseSBmb3JiaWQgcmVzaXppbmcpOyB0aGVyZWZvcmUsCisgICAgICBjYWxsaW5nIHJlbGVhc2UoKSBpcyBoYW5keSB0byByZW1vdmUgdGhlc2UgcmVzdHJpY3Rpb25zIChhbmQgZnJlZSBhbnkKKyAgICAgIGRhbmdsaW5nIHJlc291cmNlcykgYXMgc29vbiBhcyBwb3NzaWJsZS4KKworICAgICAgQWZ0ZXIgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLCBhbnkgZnVydGhlciBvcGVyYXRpb24gb24gdGhlIHZpZXcKKyAgICAgIHJhaXNlcyBhIDpjbGFzczpgVmFsdWVFcnJvcmAgKGV4Y2VwdCA6bWV0aDpgcmVsZWFzZSgpYCBpdHNlbGYgd2hpY2ggY2FuCisgICAgICBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMpOjoKKworICAgICAgICAgPj4+IG0gPSBtZW1vcnl2aWV3KGInYWJjJykKKyAgICAgICAgID4+PiBtLnJlbGVhc2UoKQorICAgICAgICAgPj4+IG1bMF0KKyAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgICAgICAgIFZhbHVlRXJyb3I6IG9wZXJhdGlvbiBmb3JiaWRkZW4gb24gcmVsZWFzZWQgbWVtb3J5dmlldyBvYmplY3QKKworICAgICAgVGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbCBjYW4gYmUgdXNlZCBmb3IgYSBzaW1pbGFyIGVmZmVjdCwKKyAgICAgIHVzaW5nIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQ6OgorCisgICAgICAgICA+Pj4gd2l0aCBtZW1vcnl2aWV3KGInYWJjJykgYXMgbToKKyAgICAgICAgIC4uLiAgICAgbVswXQorICAgICAgICAgLi4uCisgICAgICAgICA5NworICAgICAgICAgPj4+IG1bMF0KKyAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgICAgICAgIFZhbHVlRXJyb3I6IG9wZXJhdGlvbiBmb3JiaWRkZW4gb24gcmVsZWFzZWQgbWVtb3J5dmlldyBvYmplY3QKKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisKKyAgIC4uIG1ldGhvZDo6IGNhc3QoZm9ybWF0Wywgc2hhcGVdKQorCisgICAgICBDYXN0IGEgbWVtb3J5dmlldyB0byBhIG5ldyBmb3JtYXQgb3Igc2hhcGUuICpzaGFwZSogZGVmYXVsdHMgdG8KKyAgICAgIGBgW2J5dGVfbGVuZ3RoLy9uZXdfaXRlbXNpemVdYGAsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIHJlc3VsdCB2aWV3CisgICAgICB3aWxsIGJlIG9uZS1kaW1lbnNpb25hbC4gVGhlIHJldHVybiB2YWx1ZSBpcyBhIG5ldyBtZW1vcnl2aWV3LCBidXQKKyAgICAgIHRoZSBidWZmZXIgaXRzZWxmIGlzIG5vdCBjb3BpZWQuIFN1cHBvcnRlZCBjYXN0cyBhcmUgMUQgLT4gQy1jb250aWd1b3VzCisgICAgICBhbmQgQy1jb250aWd1b3VzIC0+IDFELgorCisgICAgICBCb3RoIGZvcm1hdHMgYXJlIHJlc3RyaWN0ZWQgdG8gc2luZ2xlIGVsZW1lbnQgbmF0aXZlIGZvcm1hdHMgaW4KKyAgICAgIDptb2Q6YHN0cnVjdGAgc3ludGF4LiBPbmUgb2YgdGhlIGZvcm1hdHMgbXVzdCBiZSBhIGJ5dGUgZm9ybWF0CisgICAgICAoJ0InLCAnYicgb3IgJ2MnKS4gVGhlIGJ5dGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQgbXVzdCBiZSB0aGUgc2FtZQorICAgICAgYXMgdGhlIG9yaWdpbmFsIGxlbmd0aC4KKworICAgICAgQ2FzdCAxRC9sb25nIHRvIDFEL3Vuc2lnbmVkIGJ5dGVzOjoKKworICAgICAgICAgPj4+IGltcG9ydCBhcnJheQorICAgICAgICAgPj4+IGEgPSBhcnJheS5hcnJheSgnbCcsIFsxLDIsM10pCisgICAgICAgICA+Pj4geCA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgID4+PiB4LmZvcm1hdAorICAgICAgICAgJ2wnCisgICAgICAgICA+Pj4geC5pdGVtc2l6ZQorICAgICAgICAgOAorICAgICAgICAgPj4+IGxlbih4KQorICAgICAgICAgMworICAgICAgICAgPj4+IHgubmJ5dGVzCisgICAgICAgICAyNAorICAgICAgICAgPj4+IHkgPSB4LmNhc3QoJ0InKQorICAgICAgICAgPj4+IHkuZm9ybWF0CisgICAgICAgICAnQicKKyAgICAgICAgID4+PiB5Lml0ZW1zaXplCisgICAgICAgICAxCisgICAgICAgICA+Pj4gbGVuKHkpCisgICAgICAgICAyNAorICAgICAgICAgPj4+IHkubmJ5dGVzCisgICAgICAgICAyNAorCisgICAgICBDYXN0IDFEL3Vuc2lnbmVkIGJ5dGVzIHRvIDFEL2NoYXI6OgorCisgICAgICAgICA+Pj4gYiA9IGJ5dGVhcnJheShiJ3p5eicpCisgICAgICAgICA+Pj4geCA9IG1lbW9yeXZpZXcoYikKKyAgICAgICAgID4+PiB4WzBdID0gYidhJworICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgICAgICAgVmFsdWVFcnJvcjogbWVtb3J5dmlldzogaW52YWxpZCB2YWx1ZSBmb3IgZm9ybWF0ICJCIgorICAgICAgICAgPj4+IHkgPSB4LmNhc3QoJ2MnKQorICAgICAgICAgPj4+IHlbMF0gPSBiJ2EnCisgICAgICAgICA+Pj4gYgorICAgICAgICAgYnl0ZWFycmF5KGInYXl6JykKKworICAgICAgQ2FzdCAxRC9ieXRlcyB0byAzRC9pbnRzIHRvIDFEL3NpZ25lZCBjaGFyOjoKKworICAgICAgICAgPj4+IGltcG9ydCBzdHJ1Y3QKKyAgICAgICAgID4+PiBidWYgPSBzdHJ1Y3QucGFjaygiaSIqMTIsICpsaXN0KHJhbmdlKDEyKSkpCisgICAgICAgICA+Pj4geCA9IG1lbW9yeXZpZXcoYnVmKQorICAgICAgICAgPj4+IHkgPSB4LmNhc3QoJ2knLCBzaGFwZT1bMiwyLDNdKQorICAgICAgICAgPj4+IHkudG9saXN0KCkKKyAgICAgICAgIFtbWzAsIDEsIDJdLCBbMywgNCwgNV1dLCBbWzYsIDcsIDhdLCBbOSwgMTAsIDExXV1dCisgICAgICAgICA+Pj4geS5mb3JtYXQKKyAgICAgICAgICdpJworICAgICAgICAgPj4+IHkuaXRlbXNpemUKKyAgICAgICAgIDQKKyAgICAgICAgID4+PiBsZW4oeSkKKyAgICAgICAgIDIKKyAgICAgICAgID4+PiB5Lm5ieXRlcworICAgICAgICAgNDgKKyAgICAgICAgID4+PiB6ID0geS5jYXN0KCdiJykKKyAgICAgICAgID4+PiB6LmZvcm1hdAorICAgICAgICAgJ2InCisgICAgICAgICA+Pj4gei5pdGVtc2l6ZQorICAgICAgICAgMQorICAgICAgICAgPj4+IGxlbih6KQorICAgICAgICAgNDgKKyAgICAgICAgID4+PiB6Lm5ieXRlcworICAgICAgICAgNDgKKworICAgICAgQ2FzdCAxRC91bnNpZ25lZCBjaGFyIHRvIDJEL3Vuc2lnbmVkIGxvbmc6OgorCisgICAgICAgICA+Pj4gYnVmID0gc3RydWN0LnBhY2soIkwiKjYsICpsaXN0KHJhbmdlKDYpKSkKKyAgICAgICAgID4+PiB4ID0gbWVtb3J5dmlldyhidWYpCisgICAgICAgICA+Pj4geSA9IHguY2FzdCgnTCcsIHNoYXBlPVsyLDNdKQorICAgICAgICAgPj4+IGxlbih5KQorICAgICAgICAgMgorICAgICAgICAgPj4+IHkubmJ5dGVzCisgICAgICAgICA0OAorICAgICAgICAgPj4+IHkudG9saXN0KCkKKyAgICAgICAgIFtbMCwgMSwgMl0sIFszLCA0LCA1XV0KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIFRoZXJlIGFyZSBhbHNvIHNldmVyYWwgcmVhZG9ubHkgYXR0cmlidXRlcyBhdmFpbGFibGU6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IG9iagorCisgICAgICBUaGUgdW5kZXJseWluZyBvYmplY3Qgb2YgdGhlIG1lbW9yeXZpZXc6OgorCisgICAgICAgICA+Pj4gYiAgPSBieXRlYXJyYXkoYid4eXonKQorICAgICAgICAgPj4+IG0gPSBtZW1vcnl2aWV3KGIpCisgICAgICAgICA+Pj4gbS5vYmogaXMgYgorICAgICAgICAgVHJ1ZQorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogbmJ5dGVzCisKKyAgICAgIGBgbmJ5dGVzID09IHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUgPT0gbGVuKG0udG9ieXRlcygpKWBgLiBUaGlzIGlzCisgICAgICB0aGUgYW1vdW50IG9mIHNwYWNlIGluIGJ5dGVzIHRoYXQgdGhlIGFycmF5IHdvdWxkIHVzZSBpbiBhIGNvbnRpZ3VvdXMKKyAgICAgIHJlcHJlc2VudGF0aW9uLiBJdCBpcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwgdG8gbGVuKG0pOjoKKworICAgICAgICAgPj4+IGltcG9ydCBhcnJheQorICAgICAgICAgPj4+IGEgPSBhcnJheS5hcnJheSgnaScsIFsxLDIsMyw0LDVdKQorICAgICAgICAgPj4+IG0gPSBtZW1vcnl2aWV3KGEpCisgICAgICAgICA+Pj4gbGVuKG0pCisgICAgICAgICA1CisgICAgICAgICA+Pj4gbS5uYnl0ZXMKKyAgICAgICAgIDIwCisgICAgICAgICA+Pj4geSA9IG1bOjoyXQorICAgICAgICAgPj4+IGxlbih5KQorICAgICAgICAgMworICAgICAgICAgPj4+IHkubmJ5dGVzCisgICAgICAgICAxMgorICAgICAgICAgPj4+IGxlbih5LnRvYnl0ZXMoKSkKKyAgICAgICAgIDEyCisKKyAgICAgIE11bHRpLWRpbWVuc2lvbmFsIGFycmF5czo6CisKKyAgICAgICAgID4+PiBpbXBvcnQgc3RydWN0CisgICAgICAgICA+Pj4gYnVmID0gc3RydWN0LnBhY2soImQiKjEyLCAqWzEuNSp4IGZvciB4IGluIHJhbmdlKDEyKV0pCisgICAgICAgICA+Pj4geCA9IG1lbW9yeXZpZXcoYnVmKQorICAgICAgICAgPj4+IHkgPSB4LmNhc3QoJ2QnLCBzaGFwZT1bMyw0XSkKKyAgICAgICAgID4+PiB5LnRvbGlzdCgpCisgICAgICAgICBbWzAuMCwgMS41LCAzLjAsIDQuNV0sIFs2LjAsIDcuNSwgOS4wLCAxMC41XSwgWzEyLjAsIDEzLjUsIDE1LjAsIDE2LjVdXQorICAgICAgICAgPj4+IGxlbih5KQorICAgICAgICAgMworICAgICAgICAgPj4+IHkubmJ5dGVzCisgICAgICAgICA5NgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogcmVhZG9ubHkKKworICAgICAgQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIHJlYWQgb25seS4KKworICAgLi4gYXR0cmlidXRlOjogZm9ybWF0CisKKyAgICAgIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZvcm1hdCAoaW4gOm1vZDpgc3RydWN0YCBtb2R1bGUgc3R5bGUpIGZvciBlYWNoCisgICAgICBlbGVtZW50IGluIHRoZSB2aWV3LiBBIG1lbW9yeXZpZXcgY2FuIGJlIGNyZWF0ZWQgZnJvbSBleHBvcnRlcnMgd2l0aAorICAgICAgYXJiaXRyYXJ5IGZvcm1hdCBzdHJpbmdzLCBidXQgc29tZSBtZXRob2RzIChlLmcuIDptZXRoOmB0b2xpc3RgKSBhcmUKKyAgICAgIHJlc3RyaWN0ZWQgdG8gbmF0aXZlIHNpbmdsZSBlbGVtZW50IGZvcm1hdHMuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBmb3JtYXQgYGAnQidgYCBpcyBub3cgaGFuZGxlZCBhY2NvcmRpbmcgdG8gdGhlIHN0cnVjdCBtb2R1bGUgc3ludGF4LgorICAgICAgICAgVGhpcyBtZWFucyB0aGF0IGBgbWVtb3J5dmlldyhiJ2FiYycpWzBdID09IGInYWJjJ1swXSA9PSA5N2BgLgorCisgICAuLiBhdHRyaWJ1dGU6OiBpdGVtc2l6ZQorCisgICAgICBUaGUgc2l6ZSBpbiBieXRlcyBvZiBlYWNoIGVsZW1lbnQgb2YgdGhlIG1lbW9yeXZpZXc6OgorCisgICAgICAgICA+Pj4gaW1wb3J0IGFycmF5LCBzdHJ1Y3QKKyAgICAgICAgID4+PiBtID0gbWVtb3J5dmlldyhhcnJheS5hcnJheSgnSCcsIFszMjAwMCwgMzIwMDEsIDMyMDAyXSkpCisgICAgICAgICA+Pj4gbS5pdGVtc2l6ZQorICAgICAgICAgMgorICAgICAgICAgPj4+IG1bMF0KKyAgICAgICAgIDMyMDAwCisgICAgICAgICA+Pj4gc3RydWN0LmNhbGNzaXplKCdIJykgPT0gbS5pdGVtc2l6ZQorICAgICAgICAgVHJ1ZQorCisgICAuLiBhdHRyaWJ1dGU6OiBuZGltCisKKyAgICAgIEFuIGludGVnZXIgaW5kaWNhdGluZyBob3cgbWFueSBkaW1lbnNpb25zIG9mIGEgbXVsdGktZGltZW5zaW9uYWwgYXJyYXkgdGhlCisgICAgICBtZW1vcnkgcmVwcmVzZW50cy4KKworICAgLi4gYXR0cmlidXRlOjogc2hhcGUKKworICAgICAgQSB0dXBsZSBvZiBpbnRlZ2VycyB0aGUgbGVuZ3RoIG9mIDphdHRyOmBuZGltYCBnaXZpbmcgdGhlIHNoYXBlIG9mIHRoZQorICAgICAgbWVtb3J5IGFzIGFuIE4tZGltZW5zaW9uYWwgYXJyYXkuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBBbiBlbXB0eSB0dXBsZSBpbnN0ZWFkIG9mIE5vbmUgd2hlbiBuZGltID0gMC4KKworICAgLi4gYXR0cmlidXRlOjogc3RyaWRlcworCisgICAgICBBIHR1cGxlIG9mIGludGVnZXJzIHRoZSBsZW5ndGggb2YgOmF0dHI6YG5kaW1gIGdpdmluZyB0aGUgc2l6ZSBpbiBieXRlcyB0bworICAgICAgYWNjZXNzIGVhY2ggZWxlbWVudCBmb3IgZWFjaCBkaW1lbnNpb24gb2YgdGhlIGFycmF5LgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgQW4gZW1wdHkgdHVwbGUgaW5zdGVhZCBvZiBOb25lIHdoZW4gbmRpbSA9IDAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHN1Ym9mZnNldHMKKworICAgICAgVXNlZCBpbnRlcm5hbGx5IGZvciBQSUwtc3R5bGUgYXJyYXlzLiBUaGUgdmFsdWUgaXMgaW5mb3JtYXRpb25hbCBvbmx5LgorCisgICAuLiBhdHRyaWJ1dGU6OiBjX2NvbnRpZ3VvdXMKKworICAgICAgQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIEMtY29udGlndW91cy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGZfY29udGlndW91cworCisgICAgICBBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgRm9ydHJhbiBjb250aWd1b3VzLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogY29udGlndW91cworCisgICAgICBBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgY29udGlndW91cy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gX3R5cGVzLXNldDoKIAogU2V0IFR5cGVzIC0tLSA6Y2xhc3M6YHNldGAsIDpjbGFzczpgZnJvemVuc2V0YApAQCAtMTkwMyw3ICsyNzgzLDcgQEAKIENvbW1vbiB1c2VzIGluY2x1ZGUgbWVtYmVyc2hpcCB0ZXN0aW5nLCByZW1vdmluZyBkdXBsaWNhdGVzIGZyb20gYSBzZXF1ZW5jZSwgYW5kCiBjb21wdXRpbmcgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgc3VjaCBhcyBpbnRlcnNlY3Rpb24sIHVuaW9uLCBkaWZmZXJlbmNlLCBhbmQKIHN5bW1ldHJpYyBkaWZmZXJlbmNlLgotKEZvciBvdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHQgaW4gOmNsYXNzOmBkaWN0YCwgOmNsYXNzOmBsaXN0YCwKKyhGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0LWluIDpjbGFzczpgZGljdGAsIDpjbGFzczpgbGlzdGAsCiBhbmQgOmNsYXNzOmB0dXBsZWAgY2xhc3NlcywgYW5kIHRoZSA6bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlLikKIAogTGlrZSBvdGhlciBjb2xsZWN0aW9ucywgc2V0cyBzdXBwb3J0IGBgeCBpbiBzZXRgYCwgYGBsZW4oc2V0KWBgLCBhbmQgYGBmb3IgeCBpbgpAQCAtMjEwMyw3ICsyOTgzLDcgQEAKIAogQSA6dGVybTpgbWFwcGluZ2Agb2JqZWN0IG1hcHMgOnRlcm06YGhhc2hhYmxlYCB2YWx1ZXMgdG8gYXJiaXRyYXJ5IG9iamVjdHMuCiBNYXBwaW5ncyBhcmUgbXV0YWJsZSBvYmplY3RzLiAgVGhlcmUgaXMgY3VycmVudGx5IG9ubHkgb25lIHN0YW5kYXJkIG1hcHBpbmcKLXR5cGUsIHRoZSA6ZGZuOmBkaWN0aW9uYXJ5YC4gIChGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0IGluCit0eXBlLCB0aGUgOmRmbjpgZGljdGlvbmFyeWAuICAoRm9yIG90aGVyIGNvbnRhaW5lcnMgc2VlIHRoZSBidWlsdC1pbgogOmNsYXNzOmBsaXN0YCwgOmNsYXNzOmBzZXRgLCBhbmQgOmNsYXNzOmB0dXBsZWAgY2xhc3NlcywgYW5kIHRoZQogOm1vZDpgY29sbGVjdGlvbnNgIG1vZHVsZS4pCiAKQEAgLTIyMzUsMTMgKzMxMTUsMTMgQEAKIAogICAgLi4gbWV0aG9kOjogaXRlbXMoKQogCi0gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeSdzIGl0ZW1zIChgYChrZXksIHZhbHVlKWBgIHBhaXJzKS4gIFNlZQotICAgICAgYmVsb3cgZm9yIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLgorICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnkncyBpdGVtcyAoYGAoa2V5LCB2YWx1ZSlgYCBwYWlycykuCisgICAgICBTZWUgdGhlIDpyZWY6YGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzIDxkaWN0LXZpZXdzPmAuCiAKICAgIC4uIG1ldGhvZDo6IGtleXMoKQogCi0gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeSdzIGtleXMuICBTZWUgYmVsb3cgZm9yIGRvY3VtZW50YXRpb24gb2YKLSAgICAgIHZpZXcgb2JqZWN0cy4KKyAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5J3Mga2V5cy4gIFNlZSB0aGUgOnJlZjpgZG9jdW1lbnRhdGlvbgorICAgICAgb2YgdmlldyBvYmplY3RzIDxkaWN0LXZpZXdzPmAuCiAKICAgIC4uIG1ldGhvZDo6IHBvcChrZXlbLCBkZWZhdWx0XSkKIApAQCAtMjI3NSw4ICszMTU1LDEyIEBACiAKICAgIC4uIG1ldGhvZDo6IHZhbHVlcygpCiAKLSAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5J3MgdmFsdWVzLiAgU2VlIGJlbG93IGZvciBkb2N1bWVudGF0aW9uIG9mCi0gICAgICB2aWV3IG9iamVjdHMuCisgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeSdzIHZhbHVlcy4gIFNlZSB0aGUKKyAgICAgIDpyZWY6YGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzIDxkaWN0LXZpZXdzPmAuCisKKy4uIHNlZWFsc286OgorICAgOmNsYXNzOmB0eXBlcy5NYXBwaW5nUHJveHlUeXBlYCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSByZWFkLW9ubHkgdmlldworICAgb2YgYSA6Y2xhc3M6YGRpY3RgLgogCiAKIC4uIF9kaWN0LXZpZXdzOgpAQCAtMjMyMiw3ICszMjA2LDcgQEAKIHZhbHVlcyBhcmUgaGFzaGFibGUsIHNvIHRoYXQgYGAoa2V5LCB2YWx1ZSlgYCBwYWlycyBhcmUgdW5pcXVlIGFuZCBoYXNoYWJsZSwKIHRoZW4gdGhlIGl0ZW1zIHZpZXcgaXMgYWxzbyBzZXQtbGlrZS4gIChWYWx1ZXMgdmlld3MgYXJlIG5vdCB0cmVhdGVkIGFzIHNldC1saWtlCiBzaW5jZSB0aGUgZW50cmllcyBhcmUgZ2VuZXJhbGx5IG5vdCB1bmlxdWUuKSAgRm9yIHNldC1saWtlIHZpZXdzLCBhbGwgb2YgdGhlCi1vcGVyYXRpb25zIGRlZmluZWQgZm9yIHRoZSBhYnN0cmFjdCBiYXNlIGNsYXNzIDpjbGFzczpgY29sbGVjdGlvbnMuU2V0YCBhcmUKK29wZXJhdGlvbnMgZGVmaW5lZCBmb3IgdGhlIGFic3RyYWN0IGJhc2UgY2xhc3MgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuU2V0YCBhcmUKIGF2YWlsYWJsZSAoZm9yIGV4YW1wbGUsIGBgPT1gYCwgYGA8YGAsIG9yIGBgXmBgKS4KIAogQW4gZXhhbXBsZSBvZiBkaWN0aW9uYXJ5IHZpZXcgdXNhZ2U6OgpAQCAtMjM1NywxNTkgKzMyNDEsNiBAQAogICAgeydqdWljZScsICdzYXVzYWdlJywgJ2JhY29uJywgJ3NwYW0nfQogCiAKLS4uIF90eXBlbWVtb3J5dmlldzoKLQotbWVtb3J5dmlldyB0eXBlCi09PT09PT09PT09PT09PT0KLQotOmNsYXNzOmBtZW1vcnl2aWV3YCBvYmplY3RzIGFsbG93IFB5dGhvbiBjb2RlIHRvIGFjY2VzcyB0aGUgaW50ZXJuYWwgZGF0YQotb2YgYW4gb2JqZWN0IHRoYXQgc3VwcG9ydHMgdGhlIDpyZWY6YGJ1ZmZlciBwcm90b2NvbCA8YnVmZmVyb2JqZWN0cz5gIHdpdGhvdXQKLWNvcHlpbmcuICBNZW1vcnkgaXMgZ2VuZXJhbGx5IGludGVycHJldGVkIGFzIHNpbXBsZSBieXRlcy4KLQotLi4gY2xhc3M6OiBtZW1vcnl2aWV3KG9iaikKLQotICAgQ3JlYXRlIGEgOmNsYXNzOmBtZW1vcnl2aWV3YCB0aGF0IHJlZmVyZW5jZXMgKm9iaiouICAqb2JqKiBtdXN0IHN1cHBvcnQgdGhlCi0gICBidWZmZXIgcHJvdG9jb2wuICBCdWlsdC1pbiBvYmplY3RzIHRoYXQgc3VwcG9ydCB0aGUgYnVmZmVyIHByb3RvY29sIGluY2x1ZGUKLSAgIDpjbGFzczpgYnl0ZXNgIGFuZCA6Y2xhc3M6YGJ5dGVhcnJheWAuCi0KLSAgIEEgOmNsYXNzOmBtZW1vcnl2aWV3YCBoYXMgdGhlIG5vdGlvbiBvZiBhbiAqZWxlbWVudCosIHdoaWNoIGlzIHRoZQotICAgYXRvbWljIG1lbW9yeSB1bml0IGhhbmRsZWQgYnkgdGhlIG9yaWdpbmF0aW5nIG9iamVjdCAqb2JqKi4gIEZvciBtYW55Ci0gICBzaW1wbGUgdHlwZXMgc3VjaCBhcyA6Y2xhc3M6YGJ5dGVzYCBhbmQgOmNsYXNzOmBieXRlYXJyYXlgLCBhbiBlbGVtZW50Ci0gICBpcyBhIHNpbmdsZSBieXRlLCBidXQgb3RoZXIgdHlwZXMgc3VjaCBhcyA6Y2xhc3M6YGFycmF5LmFycmF5YCBtYXkgaGF2ZQotICAgYmlnZ2VyIGVsZW1lbnRzLgotCi0gICBgYGxlbih2aWV3KWBgIHJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgbWVtb3J5dmlldywKLSAgICp2aWV3Ki4gIFRoZSA6Y2xhc3M6YH5tZW1vcnl2aWV3Lml0ZW1zaXplYCBhdHRyaWJ1dGUgd2lsbCBnaXZlIHlvdSB0aGUKLSAgIG51bWJlciBvZiBieXRlcyBpbiBhIHNpbmdsZSBlbGVtZW50LgotCi0gICBBIDpjbGFzczpgbWVtb3J5dmlld2Agc3VwcG9ydHMgc2xpY2luZyB0byBleHBvc2UgaXRzIGRhdGEuICBUYWtpbmcgYSBzaW5nbGUKLSAgIGluZGV4IHdpbGwgcmV0dXJuIGEgc2luZ2xlIGVsZW1lbnQgYXMgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QuICBGdWxsCi0gICBzbGljaW5nIHdpbGwgcmVzdWx0IGluIGEgc3Vidmlldzo6Ci0KLSAgICAgID4+PiB2ID0gbWVtb3J5dmlldyhiJ2FiY2VmZycpCi0gICAgICA+Pj4gdlsxXQotICAgICAgYidiJwotICAgICAgPj4+IHZbLTFdCi0gICAgICBiJ2cnCi0gICAgICA+Pj4gdlsxOjRdCi0gICAgICA8bWVtb3J5IGF0IDB4NzdhYjI4PgotICAgICAgPj4+IGJ5dGVzKHZbMTo0XSkKLSAgICAgIGInYmNlJwotCi0gICBJZiB0aGUgb2JqZWN0IHRoZSBtZW1vcnl2aWV3IGlzIG92ZXIgc3VwcG9ydHMgY2hhbmdpbmcgaXRzIGRhdGEsIHRoZQotICAgbWVtb3J5dmlldyBzdXBwb3J0cyBzbGljZSBhc3NpZ25tZW50OjoKLQotICAgICAgPj4+IGRhdGEgPSBieXRlYXJyYXkoYidhYmNlZmcnKQotICAgICAgPj4+IHYgPSBtZW1vcnl2aWV3KGRhdGEpCi0gICAgICA+Pj4gdi5yZWFkb25seQotICAgICAgRmFsc2UKLSAgICAgID4+PiB2WzBdID0gYid6JwotICAgICAgPj4+IGRhdGEKLSAgICAgIGJ5dGVhcnJheShiJ3piY2VmZycpCi0gICAgICA+Pj4gdlsxOjRdID0gYicxMjMnCi0gICAgICA+Pj4gZGF0YQotICAgICAgYnl0ZWFycmF5KGInejEyM2ZnJykKLSAgICAgID4+PiB2WzJdID0gYidzcGFtJwotICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgotICAgICAgVmFsdWVFcnJvcjogY2Fubm90IG1vZGlmeSBzaXplIG9mIG1lbW9yeXZpZXcgb2JqZWN0Ci0KLSAgIE5vdGljZSBob3cgdGhlIHNpemUgb2YgdGhlIG1lbW9yeXZpZXcgb2JqZWN0IGNhbm5vdCBiZSBjaGFuZ2VkLgotCi0gICA6Y2xhc3M6YG1lbW9yeXZpZXdgIGhhcyBzZXZlcmFsIG1ldGhvZHM6Ci0KLSAgIC4uIG1ldGhvZDo6IHRvYnl0ZXMoKQotCi0gICAgICBSZXR1cm4gdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciBhcyBhIGJ5dGVzdHJpbmcuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KLSAgICAgIGNhbGxpbmcgdGhlIDpjbGFzczpgYnl0ZXNgIGNvbnN0cnVjdG9yIG9uIHRoZSBtZW1vcnl2aWV3LiA6OgotCi0gICAgICAgICA+Pj4gbSA9IG1lbW9yeXZpZXcoYiJhYmMiKQotICAgICAgICAgPj4+IG0udG9ieXRlcygpCi0gICAgICAgICBiJ2FiYycKLSAgICAgICAgID4+PiBieXRlcyhtKQotICAgICAgICAgYidhYmMnCi0KLSAgIC4uIG1ldGhvZDo6IHRvbGlzdCgpCi0KLSAgICAgIFJldHVybiB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyIGFzIGEgbGlzdCBvZiBpbnRlZ2Vycy4gOjoKLQotICAgICAgICAgPj4+IG1lbW9yeXZpZXcoYidhYmMnKS50b2xpc3QoKQotICAgICAgICAgWzk3LCA5OCwgOTldCi0KLSAgIC4uIG1ldGhvZDo6IHJlbGVhc2UoKQotCi0gICAgICBSZWxlYXNlIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciBleHBvc2VkIGJ5IHRoZSBtZW1vcnl2aWV3IG9iamVjdC4gIE1hbnkKLSAgICAgIG9iamVjdHMgdGFrZSBzcGVjaWFsIGFjdGlvbnMgd2hlbiBhIHZpZXcgaXMgaGVsZCBvbiB0aGVtIChmb3IgZXhhbXBsZSwKLSAgICAgIGEgOmNsYXNzOmBieXRlYXJyYXlgIHdvdWxkIHRlbXBvcmFyaWx5IGZvcmJpZCByZXNpemluZyk7IHRoZXJlZm9yZSwKLSAgICAgIGNhbGxpbmcgcmVsZWFzZSgpIGlzIGhhbmR5IHRvIHJlbW92ZSB0aGVzZSByZXN0cmljdGlvbnMgKGFuZCBmcmVlIGFueQotICAgICAgZGFuZ2xpbmcgcmVzb3VyY2VzKSBhcyBzb29uIGFzIHBvc3NpYmxlLgotCi0gICAgICBBZnRlciB0aGlzIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQsIGFueSBmdXJ0aGVyIG9wZXJhdGlvbiBvbiB0aGUgdmlldwotICAgICAgcmFpc2VzIGEgOmNsYXNzOmBWYWx1ZUVycm9yYCAoZXhjZXB0IDptZXRoOmByZWxlYXNlKClgIGl0c2VsZiB3aGljaCBjYW4KLSAgICAgIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyk6OgotCi0gICAgICAgICA+Pj4gbSA9IG1lbW9yeXZpZXcoYidhYmMnKQotICAgICAgICAgPj4+IG0ucmVsZWFzZSgpCi0gICAgICAgICA+Pj4gbVswXQotICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgotICAgICAgICAgVmFsdWVFcnJvcjogb3BlcmF0aW9uIGZvcmJpZGRlbiBvbiByZWxlYXNlZCBtZW1vcnl2aWV3IG9iamVjdAotCi0gICAgICBUaGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sIGNhbiBiZSB1c2VkIGZvciBhIHNpbWlsYXIgZWZmZWN0LAotICAgICAgdXNpbmcgdGhlIGBgd2l0aGBgIHN0YXRlbWVudDo6Ci0KLSAgICAgICAgID4+PiB3aXRoIG1lbW9yeXZpZXcoYidhYmMnKSBhcyBtOgotICAgICAgICAgLi4uICAgICBtWzBdCi0gICAgICAgICAuLi4KLSAgICAgICAgIGInYScKLSAgICAgICAgID4+PiBtWzBdCi0gICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+Ci0gICAgICAgICBWYWx1ZUVycm9yOiBvcGVyYXRpb24gZm9yYmlkZGVuIG9uIHJlbGVhc2VkIG1lbW9yeXZpZXcgb2JqZWN0Ci0KLSAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCi0gICBUaGVyZSBhcmUgYWxzbyBzZXZlcmFsIHJlYWRvbmx5IGF0dHJpYnV0ZXMgYXZhaWxhYmxlOgotCi0gICAuLiBhdHRyaWJ1dGU6OiBmb3JtYXQKLQotICAgICAgQSBzdHJpbmcgY29udGFpbmluZyB0aGUgZm9ybWF0IChpbiA6bW9kOmBzdHJ1Y3RgIG1vZHVsZSBzdHlsZSkgZm9yIGVhY2gKLSAgICAgIGVsZW1lbnQgaW4gdGhlIHZpZXcuICBUaGlzIGRlZmF1bHRzIHRvIGBgJ0InYGAsIGEgc2ltcGxlIGJ5dGVzdHJpbmcuCi0KLSAgIC4uIGF0dHJpYnV0ZTo6IGl0ZW1zaXplCi0KLSAgICAgIFRoZSBzaXplIGluIGJ5dGVzIG9mIGVhY2ggZWxlbWVudCBvZiB0aGUgbWVtb3J5dmlldzo6Ci0KLSAgICAgICAgID4+PiBtID0gbWVtb3J5dmlldyhhcnJheS5hcnJheSgnSCcsIFsxLDIsM10pKQotICAgICAgICAgPj4+IG0uaXRlbXNpemUKLSAgICAgICAgIDIKLSAgICAgICAgID4+PiBtWzBdCi0gICAgICAgICBiJ1x4MDFceDAwJwotICAgICAgICAgPj4+IGxlbihtWzBdKSA9PSBtLml0ZW1zaXplCi0gICAgICAgICBUcnVlCi0KLSAgIC4uIGF0dHJpYnV0ZTo6IHNoYXBlCi0KLSAgICAgIEEgdHVwbGUgb2YgaW50ZWdlcnMgdGhlIGxlbmd0aCBvZiA6YXR0cjpgbmRpbWAgZ2l2aW5nIHRoZSBzaGFwZSBvZiB0aGUKLSAgICAgIG1lbW9yeSBhcyBhIE4tZGltZW5zaW9uYWwgYXJyYXkuCi0KLSAgIC4uIGF0dHJpYnV0ZTo6IG5kaW0KLQotICAgICAgQW4gaW50ZWdlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpbWVuc2lvbnMgb2YgYSBtdWx0aS1kaW1lbnNpb25hbCBhcnJheSB0aGUKLSAgICAgIG1lbW9yeSByZXByZXNlbnRzLgotCi0gICAuLiBhdHRyaWJ1dGU6OiBzdHJpZGVzCi0KLSAgICAgIEEgdHVwbGUgb2YgaW50ZWdlcnMgdGhlIGxlbmd0aCBvZiA6YXR0cjpgbmRpbWAgZ2l2aW5nIHRoZSBzaXplIGluIGJ5dGVzIHRvCi0gICAgICBhY2Nlc3MgZWFjaCBlbGVtZW50IGZvciBlYWNoIGRpbWVuc2lvbiBvZiB0aGUgYXJyYXkuCi0KLSAgIC4uIGF0dHJpYnV0ZTo6IHJlYWRvbmx5Ci0KLSAgICAgIEEgYm9vbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG1lbW9yeSBpcyByZWFkIG9ubHkuCi0KLSAgIC4uIG1lbW9yeXZpZXcuc3Vib2Zmc2V0cyBpc24ndCBkb2N1bWVudGVkIGJlY2F1c2UgaXQgb25seSBzZWVtcyB1c2VmdWwgZm9yIEMKLQotCiAuLiBfdHlwZWNvbnRleHRtYW5hZ2VyOgogCiBDb250ZXh0IE1hbmFnZXIgVHlwZXMKQEAgLTI3MzcsNyArMzQ2OCw3IEBACiAKIFRoaXMgb2JqZWN0IGlzIHJldHVybmVkIGJ5IGZ1bmN0aW9ucyB0aGF0IGRvbid0IGV4cGxpY2l0bHkgcmV0dXJuIGEgdmFsdWUuICBJdAogc3VwcG9ydHMgbm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgbnVsbCBvYmplY3QsIG5hbWVkCi1gYE5vbmVgYCAoYSBidWlsdC1pbiBuYW1lKS4KK2BgTm9uZWBgIChhIGJ1aWx0LWluIG5hbWUpLiAgYGB0eXBlKE5vbmUpKClgYCBwcm9kdWNlcyB0aGUgc2FtZSBzaW5nbGV0b24uCiAKIEl0IGlzIHdyaXR0ZW4gYXMgYGBOb25lYGAuCiAKQEAgLTI3NDksNyArMzQ4MCw4IEBACiAKIFRoaXMgb2JqZWN0IGlzIGNvbW1vbmx5IHVzZWQgYnkgc2xpY2luZyAoc2VlIDpyZWY6YHNsaWNpbmdzYCkuICBJdCBzdXBwb3J0cyBubwogc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgZWxsaXBzaXMgb2JqZWN0LCBuYW1lZAotOmNvbnN0OmBFbGxpcHNpc2AgKGEgYnVpbHQtaW4gbmFtZSkuCis6Y29uc3Q6YEVsbGlwc2lzYCAoYSBidWlsdC1pbiBuYW1lKS4gIGBgdHlwZShFbGxpcHNpcykoKWBgIHByb2R1Y2VzIHRoZQorOmNvbnN0OmBFbGxpcHNpc2Agc2luZ2xldG9uLgogCiBJdCBpcyB3cml0dGVuIGFzIGBgRWxsaXBzaXNgYCBvciBgYC4uLmBgLgogCkBAIC0yNzYxLDcgKzM0OTMsOCBAQAogCiBUaGlzIG9iamVjdCBpcyByZXR1cm5lZCBmcm9tIGNvbXBhcmlzb25zIGFuZCBiaW5hcnkgb3BlcmF0aW9ucyB3aGVuIHRoZXkgYXJlCiBhc2tlZCB0byBvcGVyYXRlIG9uIHR5cGVzIHRoZXkgZG9uJ3Qgc3VwcG9ydC4gU2VlIDpyZWY6YGNvbXBhcmlzb25zYCBmb3IgbW9yZQotaW5mb3JtYXRpb24uCitpbmZvcm1hdGlvbi4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIGBgTm90SW1wbGVtZW50ZWRgYCBvYmplY3QuCitgYHR5cGUoTm90SW1wbGVtZW50ZWQpKClgYCBwcm9kdWNlcyB0aGUgc2luZ2xldG9uIGluc3RhbmNlLgogCiBJdCBpcyB3cml0dGVuIGFzIGBgTm90SW1wbGVtZW50ZWRgYC4KIApAQCAtMjgyNyw2ICszNTYwLDEzIEBACiAgICBUaGUgbmFtZSBvZiB0aGUgY2xhc3Mgb3IgdHlwZS4KIAogCisuLiBhdHRyaWJ1dGU6OiBjbGFzcy5fX3F1YWxuYW1lX18KKworICAgVGhlIDp0ZXJtOmBxdWFsaWZpZWQgbmFtZWAgb2YgdGhlIGNsYXNzIG9yIHR5cGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGF0dHJpYnV0ZTo6IGNsYXNzLl9fbXJvX18KIAogICAgVGhpcyBhdHRyaWJ1dGUgaXMgYSB0dXBsZSBvZiBjbGFzc2VzIHRoYXQgYXJlIGNvbnNpZGVyZWQgd2hlbiBsb29raW5nIGZvcgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdCBiL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QKaW5kZXggODFhMDFmZC4uMGQ1MDc2MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdHJpbmcucnN0CkBAIC0xMCw3ICsxMCw3IEBACiAKIC4uIHNlZWFsc286OgogCi0gICA6cmVmOmB0eXBlc3NlcWAKKyAgIDpyZWY6YHRleHRzZXFgCiAKICAgIDpyZWY6YHN0cmluZy1tZXRob2RzYAogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdHJpbmdzLnJzdCBiL0RvYy9saWJyYXJ5L3N0cmluZ3MucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGYxNjU4Li4wMDAwMDAwCi0tLSBhL0RvYy9saWJyYXJ5L3N0cmluZ3MucnN0CisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotLi4gX3N0cmluZ3NlcnZpY2VzOgotCi0qKioqKioqKioqKioqKioKLVN0cmluZyBTZXJ2aWNlcwotKioqKioqKioqKioqKioqCi0KLVRoZSBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgcHJvdmlkZSBhIHdpZGUgcmFuZ2Ugb2Ygc3RyaW5nCi1tYW5pcHVsYXRpb24gb3BlcmF0aW9ucy4KLQotSW4gYWRkaXRpb24sIFB5dGhvbidzIGJ1aWx0LWluIHN0cmluZyBjbGFzc2VzIHN1cHBvcnQgdGhlIHNlcXVlbmNlIHR5cGUgbWV0aG9kcwotZGVzY3JpYmVkIGluIHRoZSA6cmVmOmB0eXBlc3NlcWAgc2VjdGlvbiwgYW5kIGFsc28gdGhlIHN0cmluZy1zcGVjaWZpYyBtZXRob2RzCi1kZXNjcmliZWQgaW4gdGhlIDpyZWY6YHN0cmluZy1tZXRob2RzYCBzZWN0aW9uLiAgVG8gb3V0cHV0IGZvcm1hdHRlZCBzdHJpbmdzLAotc2VlIHRoZSA6cmVmOmBzdHJpbmctZm9ybWF0dGluZ2Agc2VjdGlvbi4gQWxzbywgc2VlIHRoZSA6bW9kOmByZWAgbW9kdWxlIGZvcgotc3RyaW5nIGZ1bmN0aW9ucyBiYXNlZCBvbiByZWd1bGFyIGV4cHJlc3Npb25zLgotCi0KLS4uIHRvY3RyZWU6OgotCi0gICBzdHJpbmcucnN0Ci0gICByZS5yc3QKLSAgIHN0cnVjdC5yc3QKLSAgIGRpZmZsaWIucnN0Ci0gICB0ZXh0d3JhcC5yc3QKLSAgIGNvZGVjcy5yc3QKLSAgIHVuaWNvZGVkYXRhLnJzdAotICAgc3RyaW5ncHJlcC5yc3QKLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RydWN0LnJzdCBiL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QKaW5kZXggMTI4MjBlMC4uOTk0NTA2YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RydWN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdHJ1Y3QucnN0CkBAIC0xODcsMTcgKzE4NywyNCBAQAogfCBgYFFgYCAgfCA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nICAgfCBpbnRlZ2VyICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICB8IFwoMiksIFwoMykgfAogfCAgICAgICAgfCBsb25nYCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwotfCBgYGZgYCAgfCA6Yzp0eXBlOmBmbG9hdGAgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICB8IFwoNCkgICAgICAgfAorfCBgYG5gYCAgfCA6Yzp0eXBlOmBzc2l6ZV90YCAgICAgICAgfCBpbnRlZ2VyICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IFwoNCkgICAgICAgfAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwotfCBgYGRgYCAgfCA6Yzp0eXBlOmBkb3VibGVgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICB8IFwoNCkgICAgICAgfAorfCBgYE5gYCAgfCA6Yzp0eXBlOmBzaXplX3RgICAgICAgICAgfCBpbnRlZ2VyICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IFwoNCkgICAgICAgfAorKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKworfCBgYGZgYCAgfCA6Yzp0eXBlOmBmbG9hdGAgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICB8IFwoNSkgICAgICAgfAorKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKworfCBgYGRgYCAgfCA6Yzp0eXBlOmBkb3VibGVgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICB8IFwoNSkgICAgICAgfAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwogfCBgYHNgYCAgfCA6Yzp0eXBlOmBjaGFyW11gICAgICAgICAgfCBieXRlcyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwogfCBgYHBgYCAgfCA6Yzp0eXBlOmBjaGFyW11gICAgICAgICAgfCBieXRlcyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwotfCBgYFBgYCAgfCA6Yzp0eXBlOmB2b2lkIFwqYCAgICAgICAgfCBpbnRlZ2VyICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IFwoNSkgICAgICAgfAorfCBgYFBgYCAgfCA6Yzp0eXBlOmB2b2lkIFwqYCAgICAgICAgfCBpbnRlZ2VyICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IFwoNikgICAgICAgfAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgJ24nYGAgYW5kIGBgJ04nYGAgZm9ybWF0cy4KKwogTm90ZXM6CiAKICgxKQpAQCAtMjE5LDExICsyMjYsMTcgQEAKICAgICAgIFVzZSBvZiB0aGUgOm1ldGg6YF9faW5kZXhfX2AgbWV0aG9kIGZvciBub24taW50ZWdlcnMgaXMgbmV3IGluIDMuMi4KIAogKDQpCisgICBUaGUgYGAnbidgYCBhbmQgYGAnTidgYCBjb252ZXJzaW9uIGNvZGVzIGFyZSBvbmx5IGF2YWlsYWJsZSBmb3IgdGhlIG5hdGl2ZQorICAgc2l6ZSAoc2VsZWN0ZWQgYXMgdGhlIGRlZmF1bHQgb3Igd2l0aCB0aGUgYGAnQCdgYCBieXRlIG9yZGVyIGNoYXJhY3RlcikuCisgICBGb3IgdGhlIHN0YW5kYXJkIHNpemUsIHlvdSBjYW4gdXNlIHdoaWNoZXZlciBvZiB0aGUgb3RoZXIgaW50ZWdlciBmb3JtYXRzCisgICBmaXRzIHlvdXIgYXBwbGljYXRpb24uCisKKyg1KQogICAgRm9yIHRoZSBgYCdmJ2BgIGFuZCBgYCdkJ2BgIGNvbnZlcnNpb24gY29kZXMsIHRoZSBwYWNrZWQgcmVwcmVzZW50YXRpb24gdXNlcwogICAgdGhlIElFRUUgNzU0IGJpbmFyeTMyIChmb3IgYGAnZidgYCkgb3IgYmluYXJ5NjQgKGZvciBgYCdkJ2BgKSBmb3JtYXQsCiAgICByZWdhcmRsZXNzIG9mIHRoZSBmbG9hdGluZy1wb2ludCBmb3JtYXQgdXNlZCBieSB0aGUgcGxhdGZvcm0uCiAKLSg1KQorKDYpCiAgICBUaGUgYGAnUCdgYCBmb3JtYXQgY2hhcmFjdGVyIGlzIG9ubHkgYXZhaWxhYmxlIGZvciB0aGUgbmF0aXZlIGJ5dGUgb3JkZXJpbmcKICAgIChzZWxlY3RlZCBhcyB0aGUgZGVmYXVsdCBvciB3aXRoIHRoZSBgYCdAJ2BgIGJ5dGUgb3JkZXIgY2hhcmFjdGVyKS4gVGhlIGJ5dGUKICAgIG9yZGVyIGNoYXJhY3RlciBgYCc9J2BgIGNob29zZXMgdG8gdXNlIGxpdHRsZS0gb3IgYmlnLWVuZGlhbiBvcmRlcmluZyBiYXNlZApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAppbmRleCBiNGFkYzAyLi5iMDljNjQyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdApAQCAtMzAsMTYgKzMwLDIxIEBACiB1c2UgY2FzZXMsIHRoZSB1bmRlcmx5aW5nIDpjbGFzczpgUG9wZW5gIGludGVyZmFjZSBjYW4gYmUgdXNlZCBkaXJlY3RseS4KIAogCi0uLiBmdW5jdGlvbjo6IGNhbGwoYXJncywgKiwgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSkKKy4uIGZ1bmN0aW9uOjogY2FsbChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlLCB0aW1lb3V0PU5vbmUpCiAKICAgIFJ1biB0aGUgY29tbWFuZCBkZXNjcmliZWQgYnkgKmFyZ3MqLiAgV2FpdCBmb3IgY29tbWFuZCB0byBjb21wbGV0ZSwgdGhlbgogICAgcmV0dXJuIHRoZSA6YXR0cjpgcmV0dXJuY29kZWAgYXR0cmlidXRlLgogCiAgICBUaGUgYXJndW1lbnRzIHNob3duIGFib3ZlIGFyZSBtZXJlbHkgdGhlIG1vc3QgY29tbW9uIG9uZXMsIGRlc2NyaWJlZCBiZWxvdwotICAgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AgKGhlbmNlIHRoZSBzbGlnaHRseSBvZGQgbm90YXRpb24gaW4KLSAgIHRoZSBhYmJyZXZpYXRlZCBzaWduYXR1cmUpLiBUaGUgZnVsbCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgdGhlIHNhbWUgYXMKLSAgIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yIC0gdGhpcyBmdW5jdGlvbnMgcGFzc2VzIGFsbAotICAgc3VwcGxpZWQgYXJndW1lbnRzIGRpcmVjdGx5IHRocm91Z2ggdG8gdGhhdCBpbnRlcmZhY2UuCisgICBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCAoaGVuY2UgdGhlIHVzZSBvZiBrZXl3b3JkLW9ubHkgbm90YXRpb24KKyAgIGluIHRoZSBhYmJyZXZpYXRlZCBzaWduYXR1cmUpLiBUaGUgZnVsbCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgbGFyZ2VseSB0aGUKKyAgIHNhbWUgYXMgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IgLSB0aGlzIGZ1bmN0aW9uIHBhc3NlcyBhbGwKKyAgIHN1cHBsaWVkIGFyZ3VtZW50cyBvdGhlciB0aGFuICp0aW1lb3V0KiBkaXJlY3RseSB0aHJvdWdoIHRvIHRoYXQgaW50ZXJmYWNlLgorCisgICBUaGUgKnRpbWVvdXQqIGFyZ3VtZW50IGlzIHBhc3NlZCB0byA6bWV0aDpgUG9wZW4ud2FpdGAuIElmIHRoZSB0aW1lb3V0CisgICBleHBpcmVzLCB0aGUgY2hpbGQgcHJvY2VzcyB3aWxsIGJlIGtpbGxlZCBhbmQgdGhlbiB3YWl0ZWQgZm9yIGFnYWluLiAgVGhlCisgICA6ZXhjOmBUaW1lb3V0RXhwaXJlZGAgZXhjZXB0aW9uIHdpbGwgYmUgcmUtcmFpc2VkIGFmdGVyIHRoZSBjaGlsZCBwcm9jZXNzCisgICBoYXMgdGVybWluYXRlZC4KIAogICAgRXhhbXBsZXM6OgogCkBAIC02Miw4ICs2NywxMSBAQAogICAgICAgcHJvY2VzcyBtYXkgYmxvY2sgaWYgaXQgZ2VuZXJhdGVzIGVub3VnaCBvdXRwdXQgdG8gYSBwaXBlIHRvIGZpbGwgdXAKICAgICAgIHRoZSBPUyBwaXBlIGJ1ZmZlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICp0aW1lb3V0KiB3YXMgYWRkZWQuCiAKLS4uIGZ1bmN0aW9uOjogY2hlY2tfY2FsbChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlKQorCisuLiBmdW5jdGlvbjo6IGNoZWNrX2NhbGwoYXJncywgKiwgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdGltZW91dD1Ob25lKQogCiAgICBSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cy4gIFdhaXQgZm9yIGNvbW1hbmQgdG8gY29tcGxldGUuIElmIHRoZSByZXR1cm4KICAgIGNvZGUgd2FzIHplcm8gdGhlbiByZXR1cm4sIG90aGVyd2lzZSByYWlzZSA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgLiBUaGUKQEAgLTcxLDEwICs3OSwxNSBAQAogICAgOmF0dHI6YHJldHVybmNvZGVgIGF0dHJpYnV0ZS4KIAogICAgVGhlIGFyZ3VtZW50cyBzaG93biBhYm92ZSBhcmUgbWVyZWx5IHRoZSBtb3N0IGNvbW1vbiBvbmVzLCBkZXNjcmliZWQgYmVsb3cKLSAgIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgIChoZW5jZSB0aGUgc2xpZ2h0bHkgb2RkIG5vdGF0aW9uIGluCi0gICB0aGUgYWJicmV2aWF0ZWQgc2lnbmF0dXJlKS4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIHRoZSBzYW1lIGFzCi0gICB0aGF0IG9mIHRoZSA6Y2xhc3M6YFBvcGVuYCBjb25zdHJ1Y3RvciAtIHRoaXMgZnVuY3Rpb25zIHBhc3NlcyBhbGwKLSAgIHN1cHBsaWVkIGFyZ3VtZW50cyBkaXJlY3RseSB0aHJvdWdoIHRvIHRoYXQgaW50ZXJmYWNlLgorICAgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AgKGhlbmNlIHRoZSB1c2Ugb2Yga2V5d29yZC1vbmx5IG5vdGF0aW9uCisgICBpbiB0aGUgYWJicmV2aWF0ZWQgc2lnbmF0dXJlKS4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGxhcmdlbHkgdGhlCisgICBzYW1lIGFzIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yIC0gdGhpcyBmdW5jdGlvbiBwYXNzZXMgYWxsCisgICBzdXBwbGllZCBhcmd1bWVudHMgb3RoZXIgdGhhbiAqdGltZW91dCogZGlyZWN0bHkgdGhyb3VnaCB0byB0aGF0IGludGVyZmFjZS4KKworICAgVGhlICp0aW1lb3V0KiBhcmd1bWVudCBpcyBwYXNzZWQgdG8gOm1ldGg6YFBvcGVuLndhaXRgLiBJZiB0aGUgdGltZW91dAorICAgZXhwaXJlcywgdGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBiZSBraWxsZWQgYW5kIHRoZW4gd2FpdGVkIGZvciBhZ2Fpbi4gIFRoZQorICAgOmV4YzpgVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbiB3aWxsIGJlIHJlLXJhaXNlZCBhZnRlciB0aGUgY2hpbGQgcHJvY2VzcworICAgaGFzIHRlcm1pbmF0ZWQuCiAKICAgIEV4YW1wbGVzOjoKIApAQCAtODYsOCArOTksNiBAQAogICAgICAgICAgLi4uCiAgICAgICBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjogQ29tbWFuZCAnZXhpdCAxJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAxCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDIuNQotCiAgICAuLiB3YXJuaW5nOjoKIAogICAgICAgSW52b2tpbmcgdGhlIHN5c3RlbSBzaGVsbCB3aXRoIGBgc2hlbGw9VHJ1ZWBgIGNhbiBiZSBhIHNlY3VyaXR5IGhhemFyZApAQCAtMTAxLDggKzExMiwxMSBAQAogICAgICAgcHJvY2VzcyBtYXkgYmxvY2sgaWYgaXQgZ2VuZXJhdGVzIGVub3VnaCBvdXRwdXQgdG8gYSBwaXBlIHRvIGZpbGwgdXAKICAgICAgIHRoZSBPUyBwaXBlIGJ1ZmZlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICp0aW1lb3V0KiB3YXMgYWRkZWQuCiAKLS4uIGZ1bmN0aW9uOjogY2hlY2tfb3V0cHV0KGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlKQorCisuLiBmdW5jdGlvbjo6IGNoZWNrX291dHB1dChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdGltZW91dD1Ob25lKQogCiAgICBSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cyBhbmQgcmV0dXJuIGl0cyBvdXRwdXQgYXMgYSBieXRlIHN0cmluZy4KIApAQCAtMTEyLDExICsxMjYsMTcgQEAKICAgIGF0dHJpYnV0ZS4KIAogICAgVGhlIGFyZ3VtZW50cyBzaG93biBhYm92ZSBhcmUgbWVyZWx5IHRoZSBtb3N0IGNvbW1vbiBvbmVzLCBkZXNjcmliZWQgYmVsb3cKLSAgIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgIChoZW5jZSB0aGUgc2xpZ2h0bHkgb2RkIG5vdGF0aW9uIGluCi0gICB0aGUgYWJicmV2aWF0ZWQgc2lnbmF0dXJlKS4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGxhcmdlbHkgdGhlCi0gICBzYW1lIGFzIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yLCBleGNlcHQgdGhhdCAqc3Rkb3V0KiBpcwotICAgbm90IHBlcm1pdHRlZCBhcyBpdCBpcyB1c2VkIGludGVybmFsbHkuIEFsbCBvdGhlciBzdXBwbGllZCBhcmd1bWVudHMgYXJlCi0gICBwYXNzZWQgZGlyZWN0bHkgdGhyb3VnaCB0byB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IuCisgICBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCAoaGVuY2UgdGhlIHVzZSBvZiBrZXl3b3JkLW9ubHkgbm90YXRpb24KKyAgIGluIHRoZSBhYmJyZXZpYXRlZCBzaWduYXR1cmUpLiBUaGUgZnVsbCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgbGFyZ2VseSB0aGUKKyAgIHNhbWUgYXMgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IgLSB0aGlzIGZ1bmN0aW9ucyBwYXNzZXMgYWxsCisgICBzdXBwbGllZCBhcmd1bWVudHMgb3RoZXIgdGhhbiAqdGltZW91dCogZGlyZWN0bHkgdGhyb3VnaCB0byB0aGF0IGludGVyZmFjZS4KKyAgIEluIGFkZGl0aW9uLCAqc3Rkb3V0KiBpcyBub3QgcGVybWl0dGVkIGFzIGFuIGFyZ3VtZW50LCBhcyBpdCBpcyB1c2VkCisgICBpbnRlcm5hbGx5IHRvIGNvbGxlY3QgdGhlIG91dHB1dCBmcm9tIHRoZSBzdWJwcm9jZXNzLgorCisgICBUaGUgKnRpbWVvdXQqIGFyZ3VtZW50IGlzIHBhc3NlZCB0byA6bWV0aDpgUG9wZW4ud2FpdGAuIElmIHRoZSB0aW1lb3V0CisgICBleHBpcmVzLCB0aGUgY2hpbGQgcHJvY2VzcyB3aWxsIGJlIGtpbGxlZCBhbmQgdGhlbiB3YWl0ZWQgZm9yIGFnYWluLiAgVGhlCisgICA6ZXhjOmBUaW1lb3V0RXhwaXJlZGAgZXhjZXB0aW9uIHdpbGwgYmUgcmUtcmFpc2VkIGFmdGVyIHRoZSBjaGlsZCBwcm9jZXNzCisgICBoYXMgdGVybWluYXRlZC4KIAogICAgRXhhbXBsZXM6OgogCkBAIC0xNDcsNyArMTY3LDcgQEAKICAgICAgIC4uLiAgICAgc2hlbGw9VHJ1ZSkKICAgICAgICdsczogbm9uX2V4aXN0ZW50X2ZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcbicKIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMi43CisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAogICAgLi4gd2FybmluZzo6CiAKQEAgLTE2MSw2ICsxODEsMTggQEAKICAgICAgIHJlYWQgaW4gdGhlIGN1cnJlbnQgcHJvY2VzcywgdGhlIGNoaWxkIHByb2Nlc3MgbWF5IGJsb2NrIGlmIGl0CiAgICAgICBnZW5lcmF0ZXMgZW5vdWdoIG91dHB1dCB0byB0aGUgcGlwZSB0byBmaWxsIHVwIHRoZSBPUyBwaXBlIGJ1ZmZlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICp0aW1lb3V0KiB3YXMgYWRkZWQuCisKKworLi4gZGF0YTo6IERFVk5VTEwKKworICAgU3BlY2lhbCB2YWx1ZSB0aGF0IGNhbiBiZSB1c2VkIGFzIHRoZSAqc3RkaW4qLCAqc3Rkb3V0KiBvciAqc3RkZXJyKiBhcmd1bWVudAorICAgdG8gOmNsYXNzOmBQb3BlbmAgYW5kIGluZGljYXRlcyB0aGF0IHRoZSBzcGVjaWFsIGZpbGUgOmRhdGE6YG9zLmRldm51bGxgCisgICB3aWxsIGJlIHVzZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIGRhdGE6OiBQSVBFCiAKQEAgLTE3NiwxMCArMjA4LDM4IEBACiAgICBvdXRwdXQuCiAKIAorLi4gZXhjZXB0aW9uOjogU3VicHJvY2Vzc0Vycm9yCisKKyAgICBCYXNlIGNsYXNzIGZvciBhbGwgb3RoZXIgZXhjZXB0aW9ucyBmcm9tIHRoaXMgbW9kdWxlLgorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZXhjZXB0aW9uOjogVGltZW91dEV4cGlyZWQKKworICAgIFN1YmNsYXNzIG9mIDpleGM6YFN1YnByb2Nlc3NFcnJvcmAsIHJhaXNlZCB3aGVuIGEgdGltZW91dCBleHBpcmVzCisgICAgd2hpbGUgd2FpdGluZyBmb3IgYSBjaGlsZCBwcm9jZXNzLgorCisgICAgLi4gYXR0cmlidXRlOjogY21kCisKKyAgICAgICAgQ29tbWFuZCB0aGF0IHdhcyB1c2VkIHRvIHNwYXduIHRoZSBjaGlsZCBwcm9jZXNzLgorCisgICAgLi4gYXR0cmlidXRlOjogdGltZW91dAorCisgICAgICAgIFRpbWVvdXQgaW4gc2Vjb25kcy4KKworICAgIC4uIGF0dHJpYnV0ZTo6IG91dHB1dAorCisgICAgICAgIE91dHB1dCBvZiB0aGUgY2hpbGQgcHJvY2VzcyBpZiB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgYnkKKyAgICAgICAgOmZ1bmM6YGNoZWNrX291dHB1dGAuICBPdGhlcndpc2UsIGBgTm9uZWBgLgorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZXhjZXB0aW9uOjogQ2FsbGVkUHJvY2Vzc0Vycm9yCiAKLSAgICBFeGNlcHRpb24gcmFpc2VkIHdoZW4gYSBwcm9jZXNzIHJ1biBieSA6ZnVuYzpgY2hlY2tfY2FsbGAgb3IKLSAgICA6ZnVuYzpgY2hlY2tfb3V0cHV0YCByZXR1cm5zIGEgbm9uLXplcm8gZXhpdCBzdGF0dXMuCisgICAgU3ViY2xhc3Mgb2YgOmV4YzpgU3VicHJvY2Vzc0Vycm9yYCwgcmFpc2VkIHdoZW4gYSBwcm9jZXNzIHJ1biBieQorICAgIDpmdW5jOmBjaGVja19jYWxsYCBvciA6ZnVuYzpgY2hlY2tfb3V0cHV0YCByZXR1cm5zIGEgbm9uLXplcm8gZXhpdCBzdGF0dXMuCiAKICAgICAuLiBhdHRyaWJ1dGU6OiByZXR1cm5jb2RlCiAKQEAgLTIxNiwyNSArMjc2LDI3IEBACiAKICAgICpzdGRpbiosICpzdGRvdXQqIGFuZCAqc3RkZXJyKiBzcGVjaWZ5IHRoZSBleGVjdXRlZCBwcm9ncmFtJ3Mgc3RhbmRhcmQgaW5wdXQsCiAgICBzdGFuZGFyZCBvdXRwdXQgYW5kIHN0YW5kYXJkIGVycm9yIGZpbGUgaGFuZGxlcywgcmVzcGVjdGl2ZWx5LiAgVmFsaWQgdmFsdWVzCi0gICBhcmUgOmRhdGE6YFBJUEVgLCBhbiBleGlzdGluZyBmaWxlIGRlc2NyaXB0b3IgKGEgcG9zaXRpdmUgaW50ZWdlciksIGFuCi0gICBleGlzdGluZyBmaWxlIG9iamVjdCwgYW5kIGBgTm9uZWBgLiAgOmRhdGE6YFBJUEVgIGluZGljYXRlcyB0aGF0IGEgbmV3IHBpcGUKLSAgIHRvIHRoZSBjaGlsZCBzaG91bGQgYmUgY3JlYXRlZC4gIFdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3Mgb2YgYGBOb25lYGAsIG5vCi0gICByZWRpcmVjdGlvbiB3aWxsIG9jY3VyOyB0aGUgY2hpbGQncyBmaWxlIGhhbmRsZXMgd2lsbCBiZSBpbmhlcml0ZWQgZnJvbSB0aGUKLSAgIHBhcmVudC4gIEFkZGl0aW9uYWxseSwgKnN0ZGVyciogY2FuIGJlIDpkYXRhOmBTVERPVVRgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdAotICAgdGhlIHN0ZGVyciBkYXRhIGZyb20gdGhlIGNoaWxkIHByb2Nlc3Mgc2hvdWxkIGJlIGNhcHR1cmVkIGludG8gdGhlIHNhbWUgZmlsZQotICAgaGFuZGxlIGFzIGZvciBzdGRvdXQuCisgICBhcmUgOmRhdGE6YFBJUEVgLCA6ZGF0YTpgREVWTlVMTGAsIGFuIGV4aXN0aW5nIGZpbGUgZGVzY3JpcHRvciAoYSBwb3NpdGl2ZQorICAgaW50ZWdlciksIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0LCBhbmQgYGBOb25lYGAuICA6ZGF0YTpgUElQRWAgaW5kaWNhdGVzCisgICB0aGF0IGEgbmV3IHBpcGUgdG8gdGhlIGNoaWxkIHNob3VsZCBiZSBjcmVhdGVkLiAgOmRhdGE6YERFVk5VTExgIGluZGljYXRlcworICAgdGhhdCB0aGUgc3BlY2lhbCBmaWxlIDpkYXRhOmBvcy5kZXZudWxsYCB3aWxsIGJlIHVzZWQuICBXaXRoIHRoZSBkZWZhdWx0CisgICBzZXR0aW5ncyBvZiBgYE5vbmVgYCwgbm8gcmVkaXJlY3Rpb24gd2lsbCBvY2N1cjsgdGhlIGNoaWxkJ3MgZmlsZSBoYW5kbGVzCisgICB3aWxsIGJlIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQuICBBZGRpdGlvbmFsbHksICpzdGRlcnIqIGNhbiBiZQorICAgOmRhdGE6YFNURE9VVGAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBzdGRlcnIgZGF0YSBmcm9tIHRoZSBjaGlsZAorICAgcHJvY2VzcyBzaG91bGQgYmUgY2FwdHVyZWQgaW50byB0aGUgc2FtZSBmaWxlIGhhbmRsZSBhcyBmb3IgKnN0ZG91dCouCiAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogdW5pdmVyc2FsIG5ld2xpbmVzOyBzdWJwcm9jZXNzIG1vZHVsZQogCi0gICBJZiAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBgYFRydWVgYCwgdGhlIGZpbGUgb2JqZWN0cyAqc3RkaW4qLCAqc3Rkb3V0KgotICAgYW5kICpzdGRlcnIqIHdpbGwgYmUgb3BlbmVkIGFzIHRleHQgc3RyZWFtcyBpbiA6dGVybTpgdW5pdmVyc2FsIG5ld2xpbmVzYAotICAgbW9kZSB1c2luZyB0aGUgZW5jb2RpbmcgcmV0dXJuZWQgYnkgOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZ2AuCi0gICBGb3IgKnN0ZGluKiwgbGluZSBlbmRpbmcgY2hhcmFjdGVycyBgYCdcbidgYCBpbiB0aGUgaW5wdXQgd2lsbCBiZSBjb252ZXJ0ZWQKLSAgIHRvIHRoZSBkZWZhdWx0IGxpbmUgc2VwYXJhdG9yIDpkYXRhOmBvcy5saW5lc2VwYC4gIEZvciAqc3Rkb3V0KiBhbmQKLSAgICpzdGRlcnIqLCBhbGwgbGluZSBlbmRpbmdzIGluIHRoZSBvdXRwdXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYGAnXG4nYGAuCi0gICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAKLSAgIGNsYXNzIHdoZW4gdGhlICpuZXdsaW5lKiBhcmd1bWVudCB0byBpdHMgY29uc3RydWN0b3IgaXMgYGBOb25lYGAuCisgICBJZiAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBgYFRydWVgYCwgdGhlIGZpbGUgb2JqZWN0cyAqc3RkaW4qLCAqc3Rkb3V0KiBhbmQKKyAgICpzdGRlcnIqIHdpbGwgYmUgb3BlbmVkIGFzIHRleHQgc3RyZWFtcyBpbiA6dGVybTpgdW5pdmVyc2FsIG5ld2xpbmVzYCBtb2RlCisgICB1c2luZyB0aGUgZW5jb2RpbmcgcmV0dXJuZWQgYnkgOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkKKyAgIDxsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2Rpbmc+YC4gIEZvciAqc3RkaW4qLCBsaW5lIGVuZGluZyBjaGFyYWN0ZXJzCisgICBgYCdcbidgYCBpbiB0aGUgaW5wdXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gdGhlIGRlZmF1bHQgbGluZSBzZXBhcmF0b3IKKyAgIDpkYXRhOmBvcy5saW5lc2VwYC4gIEZvciAqc3Rkb3V0KiBhbmQgKnN0ZGVyciosIGFsbCBsaW5lIGVuZGluZ3MgaW4gdGhlCisgICBvdXRwdXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYGAnXG4nYGAuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCisgICBkb2N1bWVudGF0aW9uIG9mIHRoZSA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGNsYXNzIHdoZW4gdGhlICpuZXdsaW5lKgorICAgYXJndW1lbnQgdG8gaXRzIGNvbnN0cnVjdG9yIGlzIGBgTm9uZWBgLgogCiAgICAuLiBub3RlOjoKIApAQCAtMjU0LDYgKzMxNiwxMiBAQAogICAgOm1vZDpgZm5tYXRjaGAsIDpmdW5jOmBvcy53YWxrYCwgOmZ1bmM6YG9zLnBhdGguZXhwYW5kdmFyc2AsCiAgICA6ZnVuYzpgb3MucGF0aC5leHBhbmR1c2VyYCwgYW5kIDptb2Q6YHNodXRpbGApLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgV2hlbiAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBgYFRydWVgYCwgdGhlIGNsYXNzIHVzZXMgdGhlIGVuY29kaW5nCisgICAgICA6ZnVuYzpgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSA8bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nPmAKKyAgICAgIGluc3RlYWQgb2YgYGBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoKWBgLiAgU2VlIHRoZQorICAgICAgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBjbGFzcyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGNoYW5nZS4KKwogICAgLi4gd2FybmluZzo6CiAKICAgICAgIEV4ZWN1dGluZyBzaGVsbCBjb21tYW5kcyB0aGF0IGluY29ycG9yYXRlIHVuc2FuaXRpemVkIGlucHV0IGZyb20gYW4KQEAgLTI3Myw2ICszNDEsMTAgQEAKICAgICAgIGZyb20gdGhpcyB2dWxuZXJhYmlsaXR5OyBzZWUgdGhlIE5vdGUgaW4gdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yCiAgICAgICBkb2N1bWVudGF0aW9uIGZvciBoZWxwZnVsIGhpbnRzIGluIGdldHRpbmcgYGBzaGVsbD1GYWxzZWBgIHRvIHdvcmsuCiAKKyAgICAgIFdoZW4gdXNpbmcgYGBzaGVsbD1UcnVlYGAsIDpmdW5jOmBzaGxleC5xdW90ZWAgY2FuIGJlIHVzZWQgdG8gcHJvcGVybHkKKyAgICAgIGVzY2FwZSB3aGl0ZXNwYWNlIGFuZCBzaGVsbCBtZXRhY2hhcmFjdGVycyBpbiBzdHJpbmdzIHRoYXQgYXJlIGdvaW5nIHRvCisgICAgICBiZSB1c2VkIHRvIGNvbnN0cnVjdCBzaGVsbCBjb21tYW5kcy4KKwogVGhlc2Ugb3B0aW9ucywgYWxvbmcgd2l0aCBhbGwgb2YgdGhlIG90aGVyIG9wdGlvbnMsIGFyZSBkZXNjcmliZWQgaW4gbW9yZQogZGV0YWlsIGluIHRoZSA6Y2xhc3M6YFBvcGVuYCBjb25zdHJ1Y3RvciBkb2N1bWVudGF0aW9uLgogCkBAIC0zODIsMTMgKzQ1NCwxNCBAQAogCiAgICAqc3RkaW4qLCAqc3Rkb3V0KiBhbmQgKnN0ZGVyciogc3BlY2lmeSB0aGUgZXhlY3V0ZWQgcHJvZ3JhbSdzIHN0YW5kYXJkIGlucHV0LAogICAgc3RhbmRhcmQgb3V0cHV0IGFuZCBzdGFuZGFyZCBlcnJvciBmaWxlIGhhbmRsZXMsIHJlc3BlY3RpdmVseS4gIFZhbGlkIHZhbHVlcwotICAgYXJlIDpkYXRhOmBQSVBFYCwgYW4gZXhpc3RpbmcgZmlsZSBkZXNjcmlwdG9yIChhIHBvc2l0aXZlIGludGVnZXIpLCBhbgotICAgZXhpc3RpbmcgOnRlcm06YGZpbGUgb2JqZWN0YCwgYW5kIGBgTm9uZWBgLiAgOmRhdGE6YFBJUEVgIGluZGljYXRlcyB0aGF0IGEKLSAgIG5ldyBwaXBlIHRvIHRoZSBjaGlsZCBzaG91bGQgYmUgY3JlYXRlZC4gIFdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3Mgb2YKLSAgIGBgTm9uZWBgLCBubyByZWRpcmVjdGlvbiB3aWxsIG9jY3VyOyB0aGUgY2hpbGQncyBmaWxlIGhhbmRsZXMgd2lsbCBiZQotICAgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudC4gIEFkZGl0aW9uYWxseSwgKnN0ZGVyciogY2FuIGJlIDpkYXRhOmBTVERPVVRgLAotICAgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIHN0ZGVyciBkYXRhIGZyb20gdGhlIGFwcGxpY2F0aW9ucyBzaG91bGQgYmUKLSAgIGNhcHR1cmVkIGludG8gdGhlIHNhbWUgZmlsZSBoYW5kbGUgYXMgZm9yIHN0ZG91dC4KKyAgIGFyZSA6ZGF0YTpgUElQRWAsIDpkYXRhOmBERVZOVUxMYCwgYW4gZXhpc3RpbmcgZmlsZSBkZXNjcmlwdG9yIChhIHBvc2l0aXZlCisgICBpbnRlZ2VyKSwgYW4gZXhpc3RpbmcgOnRlcm06YGZpbGUgb2JqZWN0YCwgYW5kIGBgTm9uZWBgLiAgOmRhdGE6YFBJUEVgCisgICBpbmRpY2F0ZXMgdGhhdCBhIG5ldyBwaXBlIHRvIHRoZSBjaGlsZCBzaG91bGQgYmUgY3JlYXRlZC4gIDpkYXRhOmBERVZOVUxMYAorICAgaW5kaWNhdGVzIHRoYXQgdGhlIHNwZWNpYWwgZmlsZSA6ZGF0YTpgb3MuZGV2bnVsbGAgd2lsbCBiZSB1c2VkLiBXaXRoIHRoZQorICAgZGVmYXVsdCBzZXR0aW5ncyBvZiBgYE5vbmVgYCwgbm8gcmVkaXJlY3Rpb24gd2lsbCBvY2N1cjsgdGhlIGNoaWxkJ3MgZmlsZQorICAgaGFuZGxlcyB3aWxsIGJlIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQuICBBZGRpdGlvbmFsbHksICpzdGRlcnIqIGNhbiBiZQorICAgOmRhdGE6YFNURE9VVGAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBzdGRlcnIgZGF0YSBmcm9tIHRoZSBhcHBsaWNhdGlvbnMKKyAgIHNob3VsZCBiZSBjYXB0dXJlZCBpbnRvIHRoZSBzYW1lIGZpbGUgaGFuZGxlIGFzIGZvciBzdGRvdXQuCiAKICAgIElmICpwcmVleGVjX2ZuKiBpcyBzZXQgdG8gYSBjYWxsYWJsZSBvYmplY3QsIHRoaXMgb2JqZWN0IHdpbGwgYmUgY2FsbGVkIGluIHRoZQogICAgY2hpbGQgcHJvY2VzcyBqdXN0IGJlZm9yZSB0aGUgY2hpbGQgaXMgZXhlY3V0ZWQuCkBAIC00OTgsNiArNTcxLDE1IEBACiA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgIGlmIHRoZSBjYWxsZWQgcHJvY2VzcyByZXR1cm5zIGEgbm9uLXplcm8gcmV0dXJuCiBjb2RlLgogCitBbGwgb2YgdGhlIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcyB0aGF0IGFjY2VwdCBhICp0aW1lb3V0KiBwYXJhbWV0ZXIsIHN1Y2ggYXMKKzpmdW5jOmBjYWxsYCBhbmQgOm1ldGg6YFBvcGVuLmNvbW11bmljYXRlYCB3aWxsIHJhaXNlIDpleGM6YFRpbWVvdXRFeHBpcmVkYCBpZgordGhlIHRpbWVvdXQgZXhwaXJlcyBiZWZvcmUgdGhlIHByb2Nlc3MgZXhpdHMuCisKK0V4Y2VwdGlvbnMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZSBhbGwgaW5oZXJpdCBmcm9tIDpleGM6YFN1YnByb2Nlc3NFcnJvcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlIDpleGM6YFN1YnByb2Nlc3NFcnJvcmAgYmFzZSBjbGFzcyB3YXMgYWRkZWQuCisKIAogU2VjdXJpdHkKIF5eXl5eXl5eCkBAIC01MjEsMTEgKzYwMywxNSBAQAogICAgYXR0cmlidXRlLgogCiAKLS4uIG1ldGhvZDo6IFBvcGVuLndhaXQoKQorLi4gbWV0aG9kOjogUG9wZW4ud2FpdCh0aW1lb3V0PU5vbmUpCiAKICAgIFdhaXQgZm9yIGNoaWxkIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgU2V0IGFuZCByZXR1cm4gOmF0dHI6YHJldHVybmNvZGVgCiAgICBhdHRyaWJ1dGUuCiAKKyAgIElmIHRoZSBwcm9jZXNzIGRvZXMgbm90IHRlcm1pbmF0ZSBhZnRlciAqdGltZW91dCogc2Vjb25kcywgcmFpc2UgYQorICAgOmV4YzpgVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbi4gIEl0IGlzIHNhZmUgdG8gY2F0Y2ggdGhpcyBleGNlcHRpb24gYW5kCisgICByZXRyeSB0aGUgd2FpdC4KKwogICAgLi4gd2FybmluZzo6CiAKICAgICAgIFRoaXMgd2lsbCBkZWFkbG9jayB3aGVuIHVzaW5nIGBgc3Rkb3V0PVBJUEVgYCBhbmQvb3IKQEAgLTUzMyw4ICs2MTksMTEgQEAKICAgICAgIGEgcGlwZSBzdWNoIHRoYXQgaXQgYmxvY2tzIHdhaXRpbmcgZm9yIHRoZSBPUyBwaXBlIGJ1ZmZlciB0bwogICAgICAgYWNjZXB0IG1vcmUgZGF0YS4gIFVzZSA6bWV0aDpgY29tbXVuaWNhdGVgIHRvIGF2b2lkIHRoYXQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgogCi0uLiBtZXRob2Q6OiBQb3Blbi5jb21tdW5pY2F0ZShpbnB1dD1Ob25lKQorCisuLiBtZXRob2Q6OiBQb3Blbi5jb21tdW5pY2F0ZShpbnB1dD1Ob25lLCB0aW1lb3V0PU5vbmUpCiAKICAgIEludGVyYWN0IHdpdGggcHJvY2VzczogU2VuZCBkYXRhIHRvIHN0ZGluLiAgUmVhZCBkYXRhIGZyb20gc3Rkb3V0IGFuZCBzdGRlcnIsCiAgICB1bnRpbCBlbmQtb2YtZmlsZSBpcyByZWFjaGVkLiAgV2FpdCBmb3IgcHJvY2VzcyB0byB0ZXJtaW5hdGUuICBUaGUgb3B0aW9uYWwKQEAgLTU0OSwxMSArNjM4LDI5IEBACiAgICBgYE5vbmVgYCBpbiB0aGUgcmVzdWx0IHR1cGxlLCB5b3UgbmVlZCB0byBnaXZlIGBgc3Rkb3V0PVBJUEVgYCBhbmQvb3IKICAgIGBgc3RkZXJyPVBJUEVgYCB0b28uCiAKKyAgIElmIHRoZSBwcm9jZXNzIGRvZXMgbm90IHRlcm1pbmF0ZSBhZnRlciAqdGltZW91dCogc2Vjb25kcywgYQorICAgOmV4YzpgVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC4gIENhdGNoaW5nIHRoaXMgZXhjZXB0aW9uIGFuZAorICAgcmV0cnlpbmcgY29tbXVuaWNhdGlvbiB3aWxsIG5vdCBsb3NlIGFueSBvdXRwdXQuCisKKyAgIFRoZSBjaGlsZCBwcm9jZXNzIGlzIG5vdCBraWxsZWQgaWYgdGhlIHRpbWVvdXQgZXhwaXJlcywgc28gaW4gb3JkZXIgdG8KKyAgIGNsZWFudXAgcHJvcGVybHkgYSB3ZWxsLWJlaGF2ZWQgYXBwbGljYXRpb24gc2hvdWxkIGtpbGwgdGhlIGNoaWxkIHByb2Nlc3MgYW5kCisgICBmaW5pc2ggY29tbXVuaWNhdGlvbjo6CisKKyAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKC4uLikKKyAgICAgIHRyeToKKyAgICAgICAgICBvdXRzLCBlcnJzID0gcHJvYy5jb21tdW5pY2F0ZSh0aW1lb3V0PTE1KQorICAgICAgZXhjZXB0IFRpbWVvdXRFeHBpcmVkOgorICAgICAgICAgIHByb2Mua2lsbCgpCisgICAgICAgICAgb3V0cywgZXJycyA9IHByb2MuY29tbXVuaWNhdGUoKQorCiAgICAuLiBub3RlOjoKIAogICAgICAgVGhlIGRhdGEgcmVhZCBpcyBidWZmZXJlZCBpbiBtZW1vcnksIHNvIGRvIG5vdCB1c2UgdGhpcyBtZXRob2QgaWYgdGhlIGRhdGEKICAgICAgIHNpemUgaXMgbGFyZ2Ugb3IgdW5saW1pdGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KKwogCiAuLiBtZXRob2Q6OiBQb3Blbi5zZW5kX3NpZ25hbChzaWduYWwpCiAKQEAgLTk5NSwzICsxMTAyLDkgQEAKICAgIGJhY2tzbGFzaC4gIElmIHRoZSBudW1iZXIgb2YgYmFja3NsYXNoZXMgaXMgb2RkLCB0aGUgbGFzdAogICAgYmFja3NsYXNoIGVzY2FwZXMgdGhlIG5leHQgZG91YmxlIHF1b3RhdGlvbiBtYXJrIGFzCiAgICBkZXNjcmliZWQgaW4gcnVsZSAzLgorCisKKy4uIHNlZWFsc286OgorCisgICA6bW9kOmBzaGxleGAKKyAgICAgIE1vZHVsZSB3aGljaCBwcm92aWRlcyBmdW5jdGlvbiB0byBwYXJzZSBhbmQgZXNjYXBlIGNvbW1hbmQgbGluZXMuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zeXMucnN0IGIvRG9jL2xpYnJhcnkvc3lzLnJzdAppbmRleCBhM2MxNGU2Li43NzQ1NTU5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zeXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N5cy5yc3QKQEAgLTI5LDYgKzI5LDMzIEBACiAgICBjb21tYW5kIGxpbmUsIHNlZSB0aGUgOm1vZDpgZmlsZWlucHV0YCBtb2R1bGUuCiAKIAorLi4gZGF0YTo6IGJhc2VfZXhlY19wcmVmaXgKKworICAgU2V0IGR1cmluZyBQeXRob24gc3RhcnR1cCwgYmVmb3JlIGBgc2l0ZS5weWBgIGlzIHJ1biwgdG8gdGhlIHNhbWUgdmFsdWUgYXMKKyAgIDpkYXRhOmBleGVjX3ByZWZpeGAuIElmIG5vdCBydW5uaW5nIGluIGEKKyAgIDpyZWY6YHZpcnR1YWwgZW52aXJvbm1lbnQgPHZlbnYtZGVmPmAsIHRoZSB2YWx1ZXMgd2lsbCBzdGF5IHRoZSBzYW1lOyBpZgorICAgYGBzaXRlLnB5YGAgZmluZHMgdGhhdCBhIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgaW4gdXNlLCB0aGUgdmFsdWVzIG9mCisgICA6ZGF0YTpgcHJlZml4YCBhbmQgOmRhdGE6YGV4ZWNfcHJlZml4YCB3aWxsIGJlIGNoYW5nZWQgdG8gcG9pbnQgdG8gdGhlCisgICB2aXJ0dWFsIGVudmlyb25tZW50LCB3aGVyZWFzIDpkYXRhOmBiYXNlX3ByZWZpeGAgYW5kCisgICA6ZGF0YTpgYmFzZV9leGVjX3ByZWZpeGAgd2lsbCByZW1haW4gcG9pbnRpbmcgdG8gdGhlIGJhc2UgUHl0aG9uCisgICBpbnN0YWxsYXRpb24gKHRoZSBvbmUgd2hpY2ggdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgd2FzIGNyZWF0ZWQgZnJvbSkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBiYXNlX3ByZWZpeAorCisgICBTZXQgZHVyaW5nIFB5dGhvbiBzdGFydHVwLCBiZWZvcmUgYGBzaXRlLnB5YGAgaXMgcnVuLCB0byB0aGUgc2FtZSB2YWx1ZSBhcworICAgOmRhdGE6YHByZWZpeGAuIElmIG5vdCBydW5uaW5nIGluIGEgOnJlZjpgdmlydHVhbCBlbnZpcm9ubWVudCA8dmVudi1kZWY+YCwgdGhlIHZhbHVlcworICAgd2lsbCBzdGF5IHRoZSBzYW1lOyBpZiBgYHNpdGUucHlgYCBmaW5kcyB0aGF0IGEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBpbgorICAgdXNlLCB0aGUgdmFsdWVzIG9mIDpkYXRhOmBwcmVmaXhgIGFuZCA6ZGF0YTpgZXhlY19wcmVmaXhgIHdpbGwgYmUgY2hhbmdlZCB0bworICAgcG9pbnQgdG8gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQsIHdoZXJlYXMgOmRhdGE6YGJhc2VfcHJlZml4YCBhbmQKKyAgIDpkYXRhOmBiYXNlX2V4ZWNfcHJlZml4YCB3aWxsIHJlbWFpbiBwb2ludGluZyB0byB0aGUgYmFzZSBQeXRob24KKyAgIGluc3RhbGxhdGlvbiAodGhlIG9uZSB3aGljaCB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCB3YXMgY3JlYXRlZCBmcm9tKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZGF0YTo6IGJ5dGVvcmRlcgogCiAgICBBbiBpbmRpY2F0b3Igb2YgdGhlIG5hdGl2ZSBieXRlIG9yZGVyLiAgVGhpcyB3aWxsIGhhdmUgdGhlIHZhbHVlIGBgJ2JpZydgYCBvbgpAQCAtODAsNiArMTA3LDIyIEBACiAgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIGZvciBpbnRlcm5hbCBhbmQgc3BlY2lhbGl6ZWQgcHVycG9zZXMgb25seS4KIAogCisuLiBmdW5jdGlvbjo6IF9kZWJ1Z21hbGxvY3N0YXRzKCkKKworICAgUHJpbnQgbG93LWxldmVsIGluZm9ybWF0aW9uIHRvIHN0ZGVyciBhYm91dCB0aGUgc3RhdGUgb2YgQ1B5dGhvbidzIG1lbW9yeQorICAgYWxsb2NhdG9yLgorCisgICBJZiBQeXRob24gaXMgY29uZmlndXJlZCAtLXdpdGgtcHlkZWJ1ZywgaXQgYWxzbyBwZXJmb3JtcyBzb21lIGV4cGVuc2l2ZQorICAgaW50ZXJuYWwgY29uc2lzdGVuY3kgY2hlY2tzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gaW1wbC1kZXRhaWw6OgorCisgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHNwZWNpZmljIHRvIENQeXRob24uICBUaGUgZXhhY3Qgb3V0cHV0IGZvcm1hdCBpcyBub3QKKyAgICAgIGRlZmluZWQgaGVyZSwgYW5kIG1heSBjaGFuZ2UuCisKKwogLi4gZGF0YTo6IGRsbGhhbmRsZQogCiAgICBJbnRlZ2VyIHNwZWNpZnlpbmcgdGhlIGhhbmRsZSBvZiB0aGUgUHl0aG9uIERMTC4gQXZhaWxhYmlsaXR5OiBXaW5kb3dzLgpAQCAtMTcyLDIxICsyMTUsNiBAQAogICAgYSB0cmFjZWJhY2sgb2JqZWN0IChzZWUgdGhlIFJlZmVyZW5jZSBNYW51YWwpIHdoaWNoIGVuY2Fwc3VsYXRlcyB0aGUgY2FsbAogICAgc3RhY2sgYXQgdGhlIHBvaW50IHdoZXJlIHRoZSBleGNlcHRpb24gb3JpZ2luYWxseSBvY2N1cnJlZC4KIAotICAgLi4gd2FybmluZzo6Ci0KLSAgICAgIEFzc2lnbmluZyB0aGUgKnRyYWNlYmFjayogcmV0dXJuIHZhbHVlIHRvIGEgbG9jYWwgdmFyaWFibGUgaW4gYSBmdW5jdGlvbgotICAgICAgdGhhdCBpcyBoYW5kbGluZyBhbiBleGNlcHRpb24gd2lsbCBjYXVzZSBhIGNpcmN1bGFyIHJlZmVyZW5jZS4gIFNpbmNlIG1vc3QKLSAgICAgIGZ1bmN0aW9ucyBkb24ndCBuZWVkIGFjY2VzcyB0byB0aGUgdHJhY2ViYWNrLCB0aGUgYmVzdCBzb2x1dGlvbiBpcyB0byB1c2UKLSAgICAgIHNvbWV0aGluZyBsaWtlIGBgZXhjdHlwZSwgdmFsdWUgPSBzeXMuZXhjX2luZm8oKVs6Ml1gYCB0byBleHRyYWN0IG9ubHkgdGhlCi0gICAgICBleGNlcHRpb24gdHlwZSBhbmQgdmFsdWUuICBJZiB5b3UgZG8gbmVlZCB0aGUgdHJhY2ViYWNrLCBtYWtlIHN1cmUgdG8KLSAgICAgIGRlbGV0ZSBpdCBhZnRlciB1c2UgKGJlc3QgZG9uZSB3aXRoIGEgOmtleXdvcmQ6YHRyeWAKLSAgICAgIC4uLiA6a2V5d29yZDpgZmluYWxseWAgc3RhdGVtZW50KSBvciB0byBjYWxsIDpmdW5jOmBleGNfaW5mb2AgaW4gYQotICAgICAgZnVuY3Rpb24gdGhhdCBkb2VzIG5vdCBpdHNlbGYgaGFuZGxlIGFuIGV4Y2VwdGlvbi4KLQotICAgICAgU3VjaCBjeWNsZXMgYXJlIG5vcm1hbGx5IGF1dG9tYXRpY2FsbHkgcmVjbGFpbWVkIHdoZW4gZ2FyYmFnZSBjb2xsZWN0aW9uCi0gICAgICBpcyBlbmFibGVkIGFuZCB0aGV5IGJlY29tZSB1bnJlYWNoYWJsZSwgYnV0IGl0IHJlbWFpbnMgbW9yZSBlZmZpY2llbnQgdG8KLSAgICAgIGF2b2lkIGNyZWF0aW5nIGN5Y2xlcy4KLQogCiAuLiBkYXRhOjogZXhlY19wcmVmaXgKIApAQCAtMTk5LDYgKzIyNywxMSBAQAogICAgaW5zdGFsbGVkIGluIDpmaWxlOmB7ZXhlY19wcmVmaXh9L2xpYi9weXRob257WC5ZfS9saWItZHlubG9hZGAsIHdoZXJlICpYLlkqCiAgICBpcyB0aGUgdmVyc2lvbiBudW1iZXIgb2YgUHl0aG9uLCBmb3IgZXhhbXBsZSBgYDMuMmBgLgogCisgICAuLiBub3RlOjogSWYgYSA6cmVmOmB2aXJ0dWFsIGVudmlyb25tZW50IDx2ZW52LWRlZj5gIGlzIGluIGVmZmVjdCwgdGhpcworICAgICAgdmFsdWUgd2lsbCBiZSBjaGFuZ2VkIGluIGBgc2l0ZS5weWBgIHRvIHBvaW50IHRvIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LgorICAgICAgVGhlIHZhbHVlIGZvciB0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiB3aWxsIHN0aWxsIGJlIGF2YWlsYWJsZSwgdmlhCisgICAgICA6ZGF0YTpgYmFzZV9leGVjX3ByZWZpeGAuCisKIAogLi4gZGF0YTo6IGV4ZWN1dGFibGUKIApAQCAtMjM1LDE0ICsyNjgsMTMgQEAKIAogLi4gZGF0YTo6IGZsYWdzCiAKLSAgIFRoZSBzdHJ1Y3Qgc2VxdWVuY2UgKmZsYWdzKiBleHBvc2VzIHRoZSBzdGF0dXMgb2YgY29tbWFuZCBsaW5lIGZsYWdzLiBUaGUKLSAgIGF0dHJpYnV0ZXMgYXJlIHJlYWQgb25seS4KKyAgIFRoZSA6dGVybTpgc3RydWN0IHNlcXVlbmNlYCAqZmxhZ3MqIGV4cG9zZXMgdGhlIHN0YXR1cyBvZiBjb21tYW5kIGxpbmUKKyAgIGZsYWdzLiBUaGUgYXR0cmlidXRlcyBhcmUgcmVhZCBvbmx5LgogCiAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgYXR0cmlidXRlICAgICAgICAgICAgICAgICAgICAgZmxhZwogICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIDpjb25zdDpgZGVidWdgICAgICAgICAgICAgICAgIDpvcHRpb246YC1kYAotICAgOmNvbnN0OmBkaXZpc2lvbl93YXJuaW5nYCAgICAgOm9wdGlvbjpgLVFgCiAgICA6Y29uc3Q6YGluc3BlY3RgICAgICAgICAgICAgICA6b3B0aW9uOmAtaWAKICAgIDpjb25zdDpgaW50ZXJhY3RpdmVgICAgICAgICAgIDpvcHRpb246YC1pYAogICAgOmNvbnN0OmBvcHRpbWl6ZWAgICAgICAgICAgICAgOm9wdGlvbjpgLU9gIG9yIDpvcHRpb246YC1PT2AKQEAgLTI2MiwxNSArMjk0LDE4IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIuMwogICAgICAgVGhlIGBgaGFzaF9yYW5kb21pemF0aW9uYGAgYXR0cmlidXRlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmVtb3ZlZCBvYnNvbGV0ZSBgYGRpdmlzaW9uX3dhcm5pbmdgYCBhdHRyaWJ1dGUuCisKIAogLi4gZGF0YTo6IGZsb2F0X2luZm8KIAotICAgQSBzdHJ1Y3RzZXEgaG9sZGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmxvYXQgdHlwZS4gSXQgY29udGFpbnMgbG93IGxldmVsCi0gICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJlY2lzaW9uIGFuZCBpbnRlcm5hbCByZXByZXNlbnRhdGlvbi4gIFRoZSB2YWx1ZXMKLSAgIGNvcnJlc3BvbmQgdG8gdGhlIHZhcmlvdXMgZmxvYXRpbmctcG9pbnQgY29uc3RhbnRzIGRlZmluZWQgaW4gdGhlIHN0YW5kYXJkCi0gICBoZWFkZXIgZmlsZSA6ZmlsZTpgZmxvYXQuaGAgZm9yIHRoZSAnQycgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2U7IHNlZSBzZWN0aW9uCi0gICA1LjIuNC4yLjIgb2YgdGhlIDE5OTkgSVNPL0lFQyBDIHN0YW5kYXJkIFtDOTldXywgJ0NoYXJhY3RlcmlzdGljcyBvZgotICAgZmxvYXRpbmcgdHlwZXMnLCBmb3IgZGV0YWlscy4KKyAgIEEgOnRlcm06YHN0cnVjdCBzZXF1ZW5jZWAgaG9sZGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmxvYXQgdHlwZS4gSXQKKyAgIGNvbnRhaW5zIGxvdyBsZXZlbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJlY2lzaW9uIGFuZCBpbnRlcm5hbAorICAgcmVwcmVzZW50YXRpb24uICBUaGUgdmFsdWVzIGNvcnJlc3BvbmQgdG8gdGhlIHZhcmlvdXMgZmxvYXRpbmctcG9pbnQKKyAgIGNvbnN0YW50cyBkZWZpbmVkIGluIHRoZSBzdGFuZGFyZCBoZWFkZXIgZmlsZSA6ZmlsZTpgZmxvYXQuaGAgZm9yIHRoZSAnQycKKyAgIHByb2dyYW1taW5nIGxhbmd1YWdlOyBzZWUgc2VjdGlvbiA1LjIuNC4yLjIgb2YgdGhlIDE5OTkgSVNPL0lFQyBDIHN0YW5kYXJkCisgICBbQzk5XV8sICdDaGFyYWN0ZXJpc3RpY3Mgb2YgZmxvYXRpbmcgdHlwZXMnLCBmb3IgZGV0YWlscy4KIAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBhdHRyaWJ1dGUgICAgICAgICAgIHwgZmxvYXQuaCBtYWNybyAgfCBleHBsYW5hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfApAQCAtNDA5LDYgKzQ0NCw5IEBACiAgICBkb2VzIG5vdCBoYXZlIHRvIGhvbGQgdHJ1ZSBmb3IgdGhpcmQtcGFydHkgZXh0ZW5zaW9ucyBhcyBpdCBpcyBpbXBsZW1lbnRhdGlvbgogICAgc3BlY2lmaWMuCiAKKyAgIE9ubHkgdGhlIG1lbW9yeSBjb25zdW1wdGlvbiBkaXJlY3RseSBhdHRyaWJ1dGVkIHRvIHRoZSBvYmplY3QgaXMKKyAgIGFjY291bnRlZCBmb3IsIG5vdCB0aGUgbWVtb3J5IGNvbnN1bXB0aW9uIG9mIG9iamVjdHMgaXQgcmVmZXJzIHRvLgorCiAgICBJZiBnaXZlbiwgKmRlZmF1bHQqIHdpbGwgYmUgcmV0dXJuZWQgaWYgdGhlIG9iamVjdCBkb2VzIG5vdCBwcm92aWRlIG1lYW5zIHRvCiAgICByZXRyaWV2ZSB0aGUgc2l6ZS4gIE90aGVyd2lzZSBhIDpleGM6YFR5cGVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCiAKQEAgLTUyMCw4ICs1NTgsOSBAQAogCiAuLiBkYXRhOjogaGFzaF9pbmZvCiAKLSAgIEEgc3RydWN0c2VxIGdpdmluZyBwYXJhbWV0ZXJzIG9mIHRoZSBudW1lcmljIGhhc2ggaW1wbGVtZW50YXRpb24uICBGb3IKLSAgIG1vcmUgZGV0YWlscyBhYm91dCBoYXNoaW5nIG9mIG51bWVyaWMgdHlwZXMsIHNlZSA6cmVmOmBudW1lcmljLWhhc2hgLgorICAgQSA6dGVybTpgc3RydWN0IHNlcXVlbmNlYCBnaXZpbmcgcGFyYW1ldGVycyBvZiB0aGUgbnVtZXJpYyBoYXNoCisgICBpbXBsZW1lbnRhdGlvbi4gIEZvciBtb3JlIGRldGFpbHMgYWJvdXQgaGFzaGluZyBvZiBudW1lcmljIHR5cGVzLCBzZWUKKyAgIDpyZWY6YG51bWVyaWMtaGFzaGAuCiAKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGF0dHJpYnV0ZSAgICAgICAgICAgfCBleHBsYW5hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfApAQCAtNTU2LDM3ICs1OTUsNTYgQEAKIAogICAgVGhpcyBpcyBjYWxsZWQgYGBoZXh2ZXJzaW9uYGAgc2luY2UgaXQgb25seSByZWFsbHkgbG9va3MgbWVhbmluZ2Z1bCB3aGVuIHZpZXdlZAogICAgYXMgdGhlIHJlc3VsdCBvZiBwYXNzaW5nIGl0IHRvIHRoZSBidWlsdC1pbiA6ZnVuYzpgaGV4YCBmdW5jdGlvbi4gIFRoZQotICAgc3RydWN0IHNlcXVlbmNlICA6ZGF0YTpgc3lzLnZlcnNpb25faW5mb2AgbWF5IGJlIHVzZWQgZm9yIGEgbW9yZSBodW1hbi1mcmllbmRseQotICAgZW5jb2Rpbmcgb2YgdGhlIHNhbWUgaW5mb3JtYXRpb24uCisgICA6dGVybTpgc3RydWN0IHNlcXVlbmNlYCAgOmRhdGE6YHN5cy52ZXJzaW9uX2luZm9gIG1heSBiZSB1c2VkIGZvciBhIG1vcmUKKyAgIGh1bWFuLWZyaWVuZGx5IGVuY29kaW5nIG9mIHRoZSBzYW1lIGluZm9ybWF0aW9uLgogCi0gICBUaGUgYGBoZXh2ZXJzaW9uYGAgaXMgYSAzMi1iaXQgbnVtYmVyIHdpdGggdGhlIGZvbGxvd2luZyBsYXlvdXQ6CisgICBNb3JlIGRldGFpbHMgb2YgYGBoZXh2ZXJzaW9uYGAgY2FuIGJlIGZvdW5kIGF0IDpyZWY6YGFwaWFiaXZlcnNpb25gCiAKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgQml0cyAoYmlnIGVuZGlhbiBvcmRlcikgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICs9PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKLSAgIHwgOmNvbnN0OmAxLThgICAgICAgICAgICAgfCAgYGBQWV9NQUpPUl9WRVJTSU9OYGAgICh0aGUgYGAyYGAgaW4gICAgICAgICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgYGAyLjEuMGEzYGApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmA5LTE2YCAgICAgICAgICAgfCAgYGBQWV9NSU5PUl9WRVJTSU9OYGAgICh0aGUgYGAxYGAgaW4gICAgICAgICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgYGAyLjEuMGEzYGApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmAxNy0yNGAgICAgICAgICAgfCAgYGBQWV9NSUNST19WRVJTSU9OYGAgICh0aGUgYGAwYGAgaW4gICAgICAgICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgYGAyLjEuMGEzYGApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmAyNS0yOGAgICAgICAgICAgfCAgYGBQWV9SRUxFQVNFX0xFVkVMYGAgIChgYDB4QWBgIGZvciBhbHBoYSwgICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgYGAweEJgYCBmb3IgYmV0YSwgYGAweENgYCBmb3IgcmVsZWFzZSAgICAgICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgY2FuZGlkYXRlIGFuZCBgYDB4RmBgIGZvciBmaW5hbCkgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmAyOS0zMmAgICAgICAgICAgfCAgYGBQWV9SRUxFQVNFX1NFUklBTGBgICAodGhlIGBgM2BgIGluICAgICAgICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgYGAyLjEuMGEzYGAsIHplcm8gZm9yIGZpbmFsIHJlbGVhc2VzKSAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAotICAgVGh1cyBgYDIuMS4wYTNgYCBpcyBoZXh2ZXJzaW9uIGBgMHgwMjAxMDBhM2BgLgorLi4gZGF0YTo6IGltcGxlbWVudGF0aW9uCisKKyAgIEFuIG9iamVjdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUKKyAgIGN1cnJlbnRseSBydW5uaW5nIFB5dGhvbiBpbnRlcnByZXRlci4gIFRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBhcmUKKyAgIHJlcXVpcmVkIHRvIGV4aXN0IGluIGFsbCBQeXRob24gaW1wbGVtZW50YXRpb25zLgorCisgICAqbmFtZSogaXMgdGhlIGltcGxlbWVudGF0aW9uJ3MgaWRlbnRpZmllciwgZS5nLiBgYCdjcHl0aG9uJ2BgLiAgVGhlIGFjdHVhbAorICAgc3RyaW5nIGlzIGRlZmluZWQgYnkgdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiwgYnV0IGl0IGlzIGd1YXJhbnRlZWQgdG8gYmUKKyAgIGxvd2VyIGNhc2UuCisKKyAgICp2ZXJzaW9uKiBpcyBhIG5hbWVkIHR1cGxlLCBpbiB0aGUgc2FtZSBmb3JtYXQgYXMKKyAgIDpkYXRhOmBzeXMudmVyc2lvbl9pbmZvYC4gIEl0IHJlcHJlc2VudHMgdGhlIHZlcnNpb24gb2YgdGhlIFB5dGhvbgorICAgKmltcGxlbWVudGF0aW9uKi4gIFRoaXMgaGFzIGEgZGlzdGluY3QgbWVhbmluZyBmcm9tIHRoZSBzcGVjaWZpYworICAgdmVyc2lvbiBvZiB0aGUgUHl0aG9uICpsYW5ndWFnZSogdG8gd2hpY2ggdGhlIGN1cnJlbnRseSBydW5uaW5nCisgICBpbnRlcnByZXRlciBjb25mb3Jtcywgd2hpY2ggYGBzeXMudmVyc2lvbl9pbmZvYGAgcmVwcmVzZW50cy4gIEZvcgorICAgZXhhbXBsZSwgZm9yIFB5UHkgMS44IGBgc3lzLmltcGxlbWVudGF0aW9uLnZlcnNpb25gYCBtaWdodCBiZQorICAgYGBzeXMudmVyc2lvbl9pbmZvKDEsIDgsIDAsICdmaW5hbCcsIDApYGAsIHdoZXJlYXMgYGBzeXMudmVyc2lvbl9pbmZvYGAKKyAgIHdvdWxkIGJlIGBgc3lzLnZlcnNpb25faW5mbygyLCA3LCAyLCAnZmluYWwnLCAwKWBgLiAgRm9yIENQeXRob24gdGhleQorICAgYXJlIHRoZSBzYW1lIHZhbHVlLCBzaW5jZSBpdCBpcyB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uLgorCisgICAqaGV4dmVyc2lvbiogaXMgdGhlIGltcGxlbWVudGF0aW9uIHZlcnNpb24gaW4gaGV4YWRlY2ltYWwgZm9ybWF0LCBsaWtlCisgICA6ZGF0YTpgc3lzLmhleHZlcnNpb25gLgorCisgICAqY2FjaGVfdGFnKiBpcyB0aGUgdGFnIHVzZWQgYnkgdGhlIGltcG9ydCBtYWNoaW5lcnkgaW4gdGhlIGZpbGVuYW1lcyBvZgorICAgY2FjaGVkIG1vZHVsZXMuICBCeSBjb252ZW50aW9uLCBpdCB3b3VsZCBiZSBhIGNvbXBvc2l0ZSBvZiB0aGUKKyAgIGltcGxlbWVudGF0aW9uJ3MgbmFtZSBhbmQgdmVyc2lvbiwgbGlrZSBgYCdjcHl0aG9uLTMzJ2BgLiAgSG93ZXZlciwgYQorICAgUHl0aG9uIGltcGxlbWVudGF0aW9uIG1heSB1c2Ugc29tZSBvdGhlciB2YWx1ZSBpZiBhcHByb3ByaWF0ZS4gIElmCisgICBgYGNhY2hlX3RhZ2BgIGlzIHNldCB0byBgYE5vbmVgYCwgaXQgaW5kaWNhdGVzIHRoYXQgbW9kdWxlIGNhY2hpbmcgc2hvdWxkCisgICBiZSBkaXNhYmxlZC4KKworICAgOmRhdGE6YHN5cy5pbXBsZW1lbnRhdGlvbmAgbWF5IGNvbnRhaW4gYWRkaXRpb25hbCBhdHRyaWJ1dGVzIHNwZWNpZmljIHRvCisgICB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uLiAgVGhlc2Ugbm9uLXN0YW5kYXJkIGF0dHJpYnV0ZXMgbXVzdCBzdGFydCB3aXRoCisgICBhbiB1bmRlcnNjb3JlLCBhbmQgYXJlIG5vdCBkZXNjcmliZWQgaGVyZS4gIFJlZ2FyZGxlc3Mgb2YgaXRzIGNvbnRlbnRzLAorICAgOmRhdGE6YHN5cy5pbXBsZW1lbnRhdGlvbmAgd2lsbCBub3QgY2hhbmdlIGR1cmluZyBhIHJ1biBvZiB0aGUgaW50ZXJwcmV0ZXIsCisgICBub3IgYmV0d2VlbiBpbXBsZW1lbnRhdGlvbiB2ZXJzaW9ucy4gIChJdCBtYXkgY2hhbmdlIGJldHdlZW4gUHl0aG9uCisgICBsYW5ndWFnZSB2ZXJzaW9ucywgaG93ZXZlci4pICBTZWUgYFBFUCA0MjFgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiAuLiBkYXRhOjogaW50X2luZm8KIAotICAgQSBzdHJ1Y3Qgc2VxdWVuY2UgdGhhdCBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCBQeXRob24ncwotICAgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgaW50ZWdlcnMuICBUaGUgYXR0cmlidXRlcyBhcmUgcmVhZCBvbmx5LgorICAgQSA6dGVybTpgc3RydWN0IHNlcXVlbmNlYCB0aGF0IGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IFB5dGhvbidzIGludGVybmFsCisgICByZXByZXNlbnRhdGlvbiBvZiBpbnRlZ2Vycy4gIFRoZSBhdHRyaWJ1dGVzIGFyZSByZWFkIG9ubHkuCiAKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IEF0dHJpYnV0ZSAgICAgICAgICAgICAgIHwgRXhwbGFuYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfApAQCAtNjQxLDkgKzY5OSwxMyBAQAogCiAuLiBkYXRhOjogbWF4dW5pY29kZQogCi0gICBBbiBpbnRlZ2VyIGdpdmluZyB0aGUgbGFyZ2VzdCBzdXBwb3J0ZWQgY29kZSBwb2ludCBmb3IgYSBVbmljb2RlIGNoYXJhY3Rlci4gIFRoZQotICAgdmFsdWUgb2YgdGhpcyBkZXBlbmRzIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0IHNwZWNpZmllcyB3aGV0aGVyIFVuaWNvZGUKLSAgIGNoYXJhY3RlcnMgYXJlIHN0b3JlZCBhcyBVQ1MtMiBvciBVQ1MtNC4KKyAgIEFuIGludGVnZXIgZ2l2aW5nIHRoZSB2YWx1ZSBvZiB0aGUgbGFyZ2VzdCBVbmljb2RlIGNvZGUgcG9pbnQsCisgICBpLmUuIGBgMTExNDExMWBgIChgYDB4MTBGRkZGYGAgaW4gaGV4YWRlY2ltYWwpLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQmVmb3JlIDpwZXA6YDM5M2AsIGBgc3lzLm1heHVuaWNvZGVgYCB1c2VkIHRvIGJlIGVpdGhlciBgYDB4RkZGRmBgCisgICAgICBvciBgYDB4MTBGRkZGYGAsIGRlcGVuZGluZyBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCBzcGVjaWZpZWQKKyAgICAgIHdoZXRoZXIgVW5pY29kZSBjaGFyYWN0ZXJzIHdlcmUgc3RvcmVkIGFzIFVDUy0yIG9yIFVDUy00LgogCiAKIC4uIGRhdGE6OiBtZXRhX3BhdGgKQEAgLTY4NCw3ICs3NDYsOSBAQAogICAgY3VycmVudCBkaXJlY3RvcnkgZmlyc3QuICBOb3RpY2UgdGhhdCB0aGUgc2NyaXB0IGRpcmVjdG9yeSBpcyBpbnNlcnRlZCAqYmVmb3JlKgogICAgdGhlIGVudHJpZXMgaW5zZXJ0ZWQgYXMgYSByZXN1bHQgb2YgOmVudnZhcjpgUFlUSE9OUEFUSGAuCiAKLSAgIEEgcHJvZ3JhbSBpcyBmcmVlIHRvIG1vZGlmeSB0aGlzIGxpc3QgZm9yIGl0cyBvd24gcHVycG9zZXMuCisgICBBIHByb2dyYW0gaXMgZnJlZSB0byBtb2RpZnkgdGhpcyBsaXN0IGZvciBpdHMgb3duIHB1cnBvc2VzLiAgT25seSBzdHJpbmdzCisgICBhbmQgYnl0ZXMgc2hvdWxkIGJlIGFkZGVkIHRvIDpkYXRhOmBzeXMucGF0aGA7IGFsbCBvdGhlciBkYXRhIHR5cGVzIGFyZQorICAgaWdub3JlZCBkdXJpbmcgaW1wb3J0LgogCiAKICAgIC4uIHNlZWFsc286OgpAQCAtNzA2LDQ4ICs3NzAsNTAgQEAKICAgICBBIGRpY3Rpb25hcnkgYWN0aW5nIGFzIGEgY2FjaGUgZm9yIDp0ZXJtOmBmaW5kZXJgIG9iamVjdHMuIFRoZSBrZXlzIGFyZQogICAgIHBhdGhzIHRoYXQgaGF2ZSBiZWVuIHBhc3NlZCB0byA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgIGFuZCB0aGUgdmFsdWVzIGFyZQogICAgIHRoZSBmaW5kZXJzIHRoYXQgYXJlIGZvdW5kLiBJZiBhIHBhdGggaXMgYSB2YWxpZCBmaWxlIHN5c3RlbSBwYXRoIGJ1dCBubwotICAgIGV4cGxpY2l0IGZpbmRlciBpcyBmb3VuZCBvbiA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgIHRoZW4gYGBOb25lYGAgaXMKLSAgICBzdG9yZWQgdG8gcmVwcmVzZW50IHRoZSBpbXBsaWNpdCBkZWZhdWx0IGZpbmRlciBzaG91bGQgYmUgdXNlZC4gSWYgdGhlIHBhdGgKLSAgICBpcyBub3QgYW4gZXhpc3RpbmcgcGF0aCB0aGVuIDpjbGFzczpgaW1wLk51bGxJbXBvcnRlcmAgaXMgc2V0LgorICAgIGZpbmRlciBpcyBmb3VuZCBvbiA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgIHRoZW4gYGBOb25lYGAgaXMKKyAgICBzdG9yZWQuCiAKICAgICBPcmlnaW5hbGx5IHNwZWNpZmllZCBpbiA6cGVwOmAzMDJgLgogCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICBgYE5vbmVgYCBpcyBzdG9yZWQgaW5zdGVhZCBvZiA6Y2xhc3M6YGltcC5OdWxsSW1wb3J0ZXJgIHdoZW4gbm8gZmluZGVyCisgICAgICAgaXMgZm91bmQuCisKIAogLi4gZGF0YTo6IHBsYXRmb3JtCiAKICAgIFRoaXMgc3RyaW5nIGNvbnRhaW5zIGEgcGxhdGZvcm0gaWRlbnRpZmllciB0aGF0IGNhbiBiZSB1c2VkIHRvIGFwcGVuZAogICAgcGxhdGZvcm0tc3BlY2lmaWMgY29tcG9uZW50cyB0byA6ZGF0YTpgc3lzLnBhdGhgLCBmb3IgaW5zdGFuY2UuCiAKLSAgIEZvciBtb3N0IFVuaXggc3lzdGVtcywgdGhpcyBpcyB0aGUgbG93ZXJjYXNlZCBPUyBuYW1lIGFzIHJldHVybmVkIGJ5IGBgdW5hbWUKLSAgIC1zYGAgd2l0aCB0aGUgZmlyc3QgcGFydCBvZiB0aGUgdmVyc2lvbiBhcyByZXR1cm5lZCBieSBgYHVuYW1lIC1yYGAgYXBwZW5kZWQsCi0gICBlLmcuIGBgJ3N1bm9zNSdgYCwgKmF0IHRoZSB0aW1lIHdoZW4gUHl0aG9uIHdhcyBidWlsdCouICBVbmxlc3MgeW91IHdhbnQgdG8KLSAgIHRlc3QgZm9yIGEgc3BlY2lmaWMgc3lzdGVtIHZlcnNpb24sIGl0IGlzIHRoZXJlZm9yZSByZWNvbW1lbmRlZCB0byB1c2UgdGhlCi0gICBmb2xsb3dpbmcgaWRpb206OgorICAgRm9yIFVuaXggc3lzdGVtcywgZXhjZXB0IG9uIExpbnV4LCB0aGlzIGlzIHRoZSBsb3dlcmNhc2VkIE9TIG5hbWUgYXMKKyAgIHJldHVybmVkIGJ5IGBgdW5hbWUgLXNgYCB3aXRoIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSB2ZXJzaW9uIGFzIHJldHVybmVkIGJ5CisgICBgYHVuYW1lIC1yYGAgYXBwZW5kZWQsIGUuZy4gYGAnc3Vub3M1J2BgIG9yIGBgJ2ZyZWVic2Q4J2BgLCAqYXQgdGhlIHRpbWUKKyAgIHdoZW4gUHl0aG9uIHdhcyBidWlsdCouICBVbmxlc3MgeW91IHdhbnQgdG8gdGVzdCBmb3IgYSBzcGVjaWZpYyBzeXN0ZW0KKyAgIHZlcnNpb24sIGl0IGlzIHRoZXJlZm9yZSByZWNvbW1lbmRlZCB0byB1c2UgdGhlIGZvbGxvd2luZyBpZGlvbTo6CiAKICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdmcmVlYnNkJyk6CiAgICAgICAgICAgIyBGcmVlQlNELXNwZWNpZmljIGNvZGUgaGVyZS4uLgogICAgICAgZWxpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKToKICAgICAgICAgICAjIExpbnV4LXNwZWNpZmljIGNvZGUgaGVyZS4uLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMi4yCi0gICAgICBTaW5jZSBsb3RzIG9mIGNvZGUgY2hlY2sgZm9yIGBgc3lzLnBsYXRmb3JtID09ICdsaW51eDInYGAsIGFuZCB0aGVyZSBpcwotICAgICAgbm8gZXNzZW50aWFsIGNoYW5nZSBiZXR3ZWVuIExpbnV4IDIueCBhbmQgMy54LCBgYHN5cy5wbGF0Zm9ybWBgIGlzIGFsd2F5cwotICAgICAgc2V0IHRvIGBgJ2xpbnV4MidgYCwgZXZlbiBvbiBMaW51eCAzLnguICBJbiBQeXRob24gMy4zIGFuZCBsYXRlciwgdGhlCi0gICAgICB2YWx1ZSB3aWxsIGFsd2F5cyBiZSBzZXQgdG8gYGAnbGludXgnYGAsIHNvIGl0IGlzIHJlY29tbWVuZGVkIHRvIGFsd2F5cwotICAgICAgdXNlIHRoZSBgYHN0YXJ0c3dpdGhgYCBpZGlvbSBwcmVzZW50ZWQgYWJvdmUuCi0KICAgIEZvciBvdGhlciBzeXN0ZW1zLCB0aGUgdmFsdWVzIGFyZToKIAotICAgPT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgIFN5c3RlbSAgICAgICAgICAgICAgICAgYGBwbGF0Zm9ybWBgIHZhbHVlCi0gICA9PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgTGludXggKDIueCAqYW5kKiAzLngpICBgYCdsaW51eDInYGAKLSAgIFdpbmRvd3MgICAgICAgICAgICAgICAgYGAnd2luMzInYGAKLSAgIFdpbmRvd3MvQ3lnd2luICAgICAgICAgYGAnY3lnd2luJ2BgCi0gICBNYWMgT1MgWCAgICAgICAgICAgICAgIGBgJ2RhcndpbidgYAotICAgT1MvMiAgICAgICAgICAgICAgICAgICBgYCdvczInYGAKLSAgIE9TLzIgRU1YICAgICAgICAgICAgICAgYGAnb3MyZW14J2BgCi0gICA9PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgIFN5c3RlbSAgICAgICAgICAgYGBwbGF0Zm9ybWBgIHZhbHVlCisgICA9PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgTGludXggICAgICAgICAgICBgYCdsaW51eCdgYAorICAgV2luZG93cyAgICAgICAgICBgYCd3aW4zMidgYAorICAgV2luZG93cy9DeWd3aW4gICBgYCdjeWd3aW4nYGAKKyAgIE1hYyBPUyBYICAgICAgICAgYGAnZGFyd2luJ2BgCisgICBPUy8yICAgICAgICAgICAgIGBgJ29zMidgYAorICAgT1MvMiBFTVggICAgICAgICBgYCdvczJlbXgnYGAKKyAgID09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBPbiBMaW51eCwgOmF0dHI6YHN5cy5wbGF0Zm9ybWAgZG9lc24ndCBjb250YWluIHRoZSBtYWpvciB2ZXJzaW9uIGFueW1vcmUuCisgICAgICBJdCBpcyBhbHdheXMgYGAnbGludXgnYGAsIGluc3RlYWQgb2YgYGAnbGludXgyJ2BgIG9yIGBgJ2xpbnV4MydgYC4gIFNpbmNlCisgICAgICBvbGRlciBQeXRob24gdmVyc2lvbnMgaW5jbHVkZSB0aGUgdmVyc2lvbiBudW1iZXIsIGl0IGlzIHJlY29tbWVuZGVkIHRvCisgICAgICBhbHdheXMgdXNlIHRoZSBgYHN0YXJ0c3dpdGhgYCBpZGlvbSBwcmVzZW50ZWQgYWJvdmUuCiAKICAgIC4uIHNlZWFsc286OgogCkBAIC03NjQsMTEgKzgzMCwxNiBAQAogICAgaW5kZXBlbmRlbnQgUHl0aG9uIGZpbGVzIGFyZSBpbnN0YWxsZWQ7IGJ5IGRlZmF1bHQsIHRoaXMgaXMgdGhlIHN0cmluZwogICAgYGAnL3Vzci9sb2NhbCdgYC4gIFRoaXMgY2FuIGJlIHNldCBhdCBidWlsZCB0aW1lIHdpdGggdGhlIGBgLS1wcmVmaXhgYAogICAgYXJndW1lbnQgdG8gdGhlIDpwcm9ncmFtOmBjb25maWd1cmVgIHNjcmlwdC4gIFRoZSBtYWluIGNvbGxlY3Rpb24gb2YgUHl0aG9uCi0gICBsaWJyYXJ5IG1vZHVsZXMgaXMgaW5zdGFsbGVkIGluIHRoZSBkaXJlY3RvcnkgOmZpbGU6YHtwcmVmaXh9L2xpYi9weXRob257WC5ZfWBgCisgICBsaWJyYXJ5IG1vZHVsZXMgaXMgaW5zdGFsbGVkIGluIHRoZSBkaXJlY3RvcnkgOmZpbGU6YHtwcmVmaXh9L2xpYi9weXRob257WC5ZfWAKICAgIHdoaWxlIHRoZSBwbGF0Zm9ybSBpbmRlcGVuZGVudCBoZWFkZXIgZmlsZXMgKGFsbCBleGNlcHQgOmZpbGU6YHB5Y29uZmlnLmhgKSBhcmUKICAgIHN0b3JlZCBpbiA6ZmlsZTpge3ByZWZpeH0vaW5jbHVkZS9weXRob257WC5ZfWAsIHdoZXJlICpYLlkqIGlzIHRoZSB2ZXJzaW9uCiAgICBudW1iZXIgb2YgUHl0aG9uLCBmb3IgZXhhbXBsZSBgYDMuMmBgLgogCisgICAuLiBub3RlOjogSWYgYSA6cmVmOmB2aXJ0dWFsIGVudmlyb25tZW50IDx2ZW52LWRlZj5gIGlzIGluIGVmZmVjdCwgdGhpcworICAgICAgdmFsdWUgd2lsbCBiZSBjaGFuZ2VkIGluIGBgc2l0ZS5weWBgIHRvIHBvaW50IHRvIHRoZSB2aXJ0dWFsCisgICAgICBlbnZpcm9ubWVudC4gVGhlIHZhbHVlIGZvciB0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiB3aWxsIHN0aWxsIGJlCisgICAgICBhdmFpbGFibGUsIHZpYSA6ZGF0YTpgYmFzZV9wcmVmaXhgLgorCiAKIC4uIGRhdGE6OiBwczEKICAgICAgICAgICBwczIKQEAgLTgwNiwxMSArODc3LDExIEBACiAgICB0aGUgaW50ZXJwcmV0ZXIgbG9hZHMgZXh0ZW5zaW9uIG1vZHVsZXMuICBBbW9uZyBvdGhlciB0aGluZ3MsIHRoaXMgd2lsbCBlbmFibGUgYQogICAgbGF6eSByZXNvbHZpbmcgb2Ygc3ltYm9scyB3aGVuIGltcG9ydGluZyBhIG1vZHVsZSwgaWYgY2FsbGVkIGFzCiAgICBgYHN5cy5zZXRkbG9wZW5mbGFncygwKWBgLiAgVG8gc2hhcmUgc3ltYm9scyBhY3Jvc3MgZXh0ZW5zaW9uIG1vZHVsZXMsIGNhbGwgYXMKLSAgIGBgc3lzLnNldGRsb3BlbmZsYWdzKGN0eXBlcy5SVExEX0dMT0JBTClgYC4gIFN5bWJvbGljIG5hbWVzIGZvciB0aGUKLSAgIGZsYWcgbW9kdWxlcyBjYW4gYmUgZWl0aGVyIGZvdW5kIGluIHRoZSA6bW9kOmBjdHlwZXNgIG1vZHVsZSwgb3IgaW4gdGhlIDptb2Q6YERMRkNOYAotICAgbW9kdWxlLiBJZiA6bW9kOmBETEZDTmAgaXMgbm90IGF2YWlsYWJsZSwgaXQgY2FuIGJlIGdlbmVyYXRlZCBmcm9tCi0gICA6ZmlsZTpgL3Vzci9pbmNsdWRlL2RsZmNuLmhgIHVzaW5nIHRoZSA6cHJvZ3JhbTpgaDJweWAgc2NyaXB0LiBBdmFpbGFiaWxpdHk6Ci0gICBVbml4LgorICAgYGBzeXMuc2V0ZGxvcGVuZmxhZ3Mob3MuUlRMRF9HTE9CQUwpYGAuICBTeW1ib2xpYyBuYW1lcyBmb3IgdGhlIGZsYWcgbW9kdWxlcworICAgY2FuIGJlIGZvdW5kIGluIHRoZSA6bW9kOmBvc2AgbW9kdWxlIChgYFJUTERfeHh4YGAgY29uc3RhbnRzLCBlLmcuCisgICA6ZGF0YTpgb3MuUlRMRF9MQVpZYCkuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogLi4gZnVuY3Rpb246OiBzZXRwcm9maWxlKHByb2ZpbGVmdW5jKQogCkBAIC0xMDAzLDIyICsxMDc0LDMzIEBACiAgICAgICAgdG8gYSBjb25zb2xlIGFuZCBQeXRob24gYXBwcyBzdGFydGVkIHdpdGggOnByb2dyYW06YHB5dGhvbndgLgogCiAKLS4uIGRhdGE6OiBzdWJ2ZXJzaW9uCisuLiBkYXRhOjogdGhyZWFkX2luZm8KIAotICAgQSB0cmlwbGUgKHJlcG8sIGJyYW5jaCwgdmVyc2lvbikgcmVwcmVzZW50aW5nIHRoZSBTdWJ2ZXJzaW9uIGluZm9ybWF0aW9uIG9mIHRoZQotICAgUHl0aG9uIGludGVycHJldGVyLiAqcmVwbyogaXMgdGhlIG5hbWUgb2YgdGhlIHJlcG9zaXRvcnksIGBgJ0NQeXRob24nYGAuCi0gICAqYnJhbmNoKiBpcyBhIHN0cmluZyBvZiBvbmUgb2YgdGhlIGZvcm1zIGBgJ3RydW5rJ2BgLCBgYCdicmFuY2hlcy9uYW1lJ2BgIG9yCi0gICBgYCd0YWdzL25hbWUnYGAuICp2ZXJzaW9uKiBpcyB0aGUgb3V0cHV0IG9mIGBgc3ZudmVyc2lvbmBgLCBpZiB0aGUgaW50ZXJwcmV0ZXIKLSAgIHdhcyBidWlsdCBmcm9tIGEgU3VidmVyc2lvbiBjaGVja291dDsgaXQgY29udGFpbnMgdGhlIHJldmlzaW9uIG51bWJlciAocmFuZ2UpCi0gICBhbmQgcG9zc2libHkgYSB0cmFpbGluZyAnTScgaWYgdGhlcmUgd2VyZSBsb2NhbCBtb2RpZmljYXRpb25zLiBJZiB0aGUgdHJlZSB3YXMKLSAgIGV4cG9ydGVkIChvciBzdm52ZXJzaW9uIHdhcyBub3QgYXZhaWxhYmxlKSwgaXQgaXMgdGhlIHJldmlzaW9uIG9mCi0gICBgYEluY2x1ZGUvcGF0Y2hsZXZlbC5oYGAgaWYgdGhlIGJyYW5jaCBpcyBhIHRhZy4gT3RoZXJ3aXNlLCBpdCBpcyBgYE5vbmVgYC4KKyAgIEEgOnRlcm06YHN0cnVjdCBzZXF1ZW5jZWAgaG9sZGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdGhyZWFkCisgICBpbXBsZW1lbnRhdGlvbi4KIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuMi4xCi0gICAgICBQeXRob24gaXMgbm93IGBkZXZlbG9wZWQgPGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2Z3VpZGUvPmBfIHVzaW5nCi0gICAgICBNZXJjdXJpYWwuICBJbiByZWNlbnQgUHl0aG9uIDMuMiBidWdmaXggcmVsZWFzZXMsIDpkYXRhOmBzdWJ2ZXJzaW9uYAotICAgICAgdGhlcmVmb3JlIGNvbnRhaW5zIHBsYWNlaG9sZGVyIGluZm9ybWF0aW9uLiAgSXQgaXMgcmVtb3ZlZCBpbiBQeXRob24KLSAgICAgIDMuMy4KKyAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBBdHRyaWJ1dGUgICAgICAgIHwgRXhwbGFuYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArPT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAgIHwgOmNvbnN0OmBuYW1lYCAgICB8IE5hbWUgb2YgdGhlIHRocmVhZCBpbXBsZW1lbnRhdGlvbjogICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCAgKiBgYCdudCdgYDogV2luZG93cyB0aHJlYWRzICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAqIGBgJ29zMidgYDogT1MvMiB0aHJlYWRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgICogYGAncHRocmVhZCdgYDogUE9TSVggdGhyZWFkcyAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCAgKiBgYCdzb2xhcmlzJ2BgOiBTb2xhcmlzIHRocmVhZHMgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YGxvY2tgICAgIHwgTmFtZSBvZiB0aGUgbG9jayBpbXBsZW1lbnRhdGlvbjogICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAqIGBgJ3NlbWFwaG9yZSdgYDogYSBsb2NrIHVzZXMgYSBzZW1hcGhvcmUgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgICogYGAnbXV0ZXgrY29uZCdgYDogYSBsb2NrIHVzZXMgYSBtdXRleCAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCAgICBhbmQgYSBjb25kaXRpb24gdmFyaWFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAqIGBgTm9uZWBgIGlmIHRoaXMgaW5mb3JtYXRpb24gaXMgdW5rbm93biAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgdmVyc2lvbmAgfCBOYW1lIGFuZCB2ZXJzaW9uIG9mIHRoZSB0aHJlYWQgbGlicmFyeS4gSXQgaXMgYSBzdHJpbmcsIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8IG9yIGBgTm9uZWBgIGlmIHRoZXNlIGluZm9ybWF0aW9ucyBhcmUgdW5rbm93bi4gICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIC4uIGRhdGE6OiB0cmFjZWJhY2tsaW1pdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3lzbG9nLnJzdCBiL0RvYy9saWJyYXJ5L3N5c2xvZy5yc3QKaW5kZXggOTc0ZWNmOS4uNmU5MGRjMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3lzbG9nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zeXNsb2cucnN0CkBAIC03OSwxMiArNzksMTQgQEAKIEZhY2lsaXRpZXM6CiAgICA6Y29uc3Q6YExPR19LRVJOYCwgOmNvbnN0OmBMT0dfVVNFUmAsIDpjb25zdDpgTE9HX01BSUxgLCA6Y29uc3Q6YExPR19EQUVNT05gLAogICAgOmNvbnN0OmBMT0dfQVVUSGAsIDpjb25zdDpgTE9HX0xQUmAsIDpjb25zdDpgTE9HX05FV1NgLCA6Y29uc3Q6YExPR19VVUNQYCwKLSAgIDpjb25zdDpgTE9HX0NST05gLCA6Y29uc3Q6YExPR19TWVNMT0dgIGFuZCA6Y29uc3Q6YExPR19MT0NBTDBgIHRvCi0gICA6Y29uc3Q6YExPR19MT0NBTDdgLgorICAgOmNvbnN0OmBMT0dfQ1JPTmAsIDpjb25zdDpgTE9HX1NZU0xPR2AsIDpjb25zdDpgTE9HX0xPQ0FMMGAgdG8KKyAgIDpjb25zdDpgTE9HX0xPQ0FMN2AsIGFuZCwgaWYgZGVmaW5lZCBpbiBgYDxzeXNsb2cuaD5gYCwKKyAgIDpjb25zdDpgTE9HX0FVVEhQUklWYC4KIAogTG9nIG9wdGlvbnM6Ci0gICA6Y29uc3Q6YExPR19QSURgLCA6Y29uc3Q6YExPR19DT05TYCwgOmNvbnN0OmBMT0dfTkRFTEFZYCwgOmNvbnN0OmBMT0dfTk9XQUlUYAotICAgYW5kIDpjb25zdDpgTE9HX1BFUlJPUmAgaWYgZGVmaW5lZCBpbiBgYDxzeXNsb2cuaD5gYC4KKyAgIDpjb25zdDpgTE9HX1BJRGAsIDpjb25zdDpgTE9HX0NPTlNgLCA6Y29uc3Q6YExPR19OREVMQVlgLCBhbmQsIGlmIGRlZmluZWQKKyAgIGluIGBgPHN5c2xvZy5oPmBgLCA6Y29uc3Q6YExPR19PREVMQVlgLCA6Y29uc3Q6YExPR19OT1dBSVRgLCBhbmQKKyAgIDpjb25zdDpgTE9HX1BFUlJPUmAuCiAKIAogRXhhbXBsZXMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RhcmZpbGUucnN0IGIvRG9jL2xpYnJhcnkvdGFyZmlsZS5yc3QKaW5kZXggNDZlNDkwMC4uYjhiNjViOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGFyZmlsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGFyZmlsZS5yc3QKQEAgLTEzLDEzICsxMywxMyBAQAogLS0tLS0tLS0tLS0tLS0KIAogVGhlIDptb2Q6YHRhcmZpbGVgIG1vZHVsZSBtYWtlcyBpdCBwb3NzaWJsZSB0byByZWFkIGFuZCB3cml0ZSB0YXIKLWFyY2hpdmVzLCBpbmNsdWRpbmcgdGhvc2UgdXNpbmcgZ3ppcCBvciBiejIgY29tcHJlc3Npb24uCithcmNoaXZlcywgaW5jbHVkaW5nIHRob3NlIHVzaW5nIGd6aXAsIGJ6MiBhbmQgbHptYSBjb21wcmVzc2lvbi4KIFVzZSB0aGUgOm1vZDpgemlwZmlsZWAgbW9kdWxlIHRvIHJlYWQgb3Igd3JpdGUgOmZpbGU6YC56aXBgIGZpbGVzLCBvciB0aGUKIGhpZ2hlci1sZXZlbCBmdW5jdGlvbnMgaW4gOnJlZjpgc2h1dGlsIDxhcmNoaXZpbmctb3BlcmF0aW9ucz5gLgogCiBTb21lIGZhY3RzIGFuZCBmaWd1cmVzOgogCi0qIHJlYWRzIGFuZCB3cml0ZXMgOm1vZDpgZ3ppcGAgYW5kIDptb2Q6YGJ6MmAgY29tcHJlc3NlZCBhcmNoaXZlcy4KKyogcmVhZHMgYW5kIHdyaXRlcyA6bW9kOmBnemlwYCwgOm1vZDpgYnoyYCBhbmQgOm1vZDpgbHptYWAgY29tcHJlc3NlZCBhcmNoaXZlcy4KIAogKiByZWFkL3dyaXRlIHN1cHBvcnQgZm9yIHRoZSBQT1NJWC4xLTE5ODggKHVzdGFyKSBmb3JtYXQuCiAKQEAgLTMzLDYgKzMzLDkgQEAKICAgY2hhcmFjdGVyIGRldmljZXMgYW5kIGJsb2NrIGRldmljZXMgYW5kIGlzIGFibGUgdG8gYWNxdWlyZSBhbmQgcmVzdG9yZSBmaWxlCiAgIGluZm9ybWF0aW9uIGxpa2UgdGltZXN0YW1wLCBhY2Nlc3MgcGVybWlzc2lvbnMgYW5kIG93bmVyLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgQWRkZWQgc3VwcG9ydCBmb3IgOm1vZDpgbHptYWAgY29tcHJlc3Npb24uCisKIAogLi4gZnVuY3Rpb246OiBvcGVuKG5hbWU9Tm9uZSwgbW9kZT0ncicsIGZpbGVvYmo9Tm9uZSwgYnVmc2l6ZT0xMDI0MCwgXCpcKmt3YXJncykKIApAQCAtNTYsNiArNTksOCBAQAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGBgJ3I6YnoyJ2BgICAgICAgfCBPcGVuIGZvciByZWFkaW5nIHdpdGggYnppcDIgY29tcHJlc3Npb24uICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCdyOnh6J2BgICAgICAgIHwgT3BlbiBmb3IgcmVhZGluZyB3aXRoIGx6bWEgY29tcHJlc3Npb24uICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGAnYScgb3IgJ2E6J2BgICB8IE9wZW4gZm9yIGFwcGVuZGluZyB3aXRoIG5vIGNvbXByZXNzaW9uLiBUaGUgfAogICAgfCAgICAgICAgICAgICAgICAgIHwgZmlsZSBpcyBjcmVhdGVkIGlmIGl0IGRvZXMgbm90IGV4aXN0LiAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKQEAgLTY1LDExICs3MCwxMyBAQAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGBgJ3c6YnoyJ2BgICAgICAgfCBPcGVuIGZvciBiemlwMiBjb21wcmVzc2VkIHdyaXRpbmcuICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCd3Onh6J2BgICAgICAgIHwgT3BlbiBmb3IgbHptYSBjb21wcmVzc2VkIHdyaXRpbmcuICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAotICAgTm90ZSB0aGF0IGBgJ2E6Z3onYGAgb3IgYGAnYTpiejInYGAgaXMgbm90IHBvc3NpYmxlLiBJZiAqbW9kZSogaXMgbm90IHN1aXRhYmxlCi0gICB0byBvcGVuIGEgY2VydGFpbiAoY29tcHJlc3NlZCkgZmlsZSBmb3IgcmVhZGluZywgOmV4YzpgUmVhZEVycm9yYCBpcyByYWlzZWQuIFVzZQotICAgKm1vZGUqIGBgJ3InYGAgdG8gYXZvaWQgdGhpcy4gIElmIGEgY29tcHJlc3Npb24gbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQsCi0gICA6ZXhjOmBDb21wcmVzc2lvbkVycm9yYCBpcyByYWlzZWQuCisgICBOb3RlIHRoYXQgYGAnYTpneidgYCwgYGAnYTpiejInYGAgb3IgYGAnYTp4eidgYCBpcyBub3QgcG9zc2libGUuIElmICptb2RlKgorICAgaXMgbm90IHN1aXRhYmxlIHRvIG9wZW4gYSBjZXJ0YWluIChjb21wcmVzc2VkKSBmaWxlIGZvciByZWFkaW5nLAorICAgOmV4YzpgUmVhZEVycm9yYCBpcyByYWlzZWQuIFVzZSAqbW9kZSogYGAncidgYCB0byBhdm9pZCB0aGlzLiAgSWYgYQorICAgY29tcHJlc3Npb24gbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQsIDpleGM6YENvbXByZXNzaW9uRXJyb3JgIGlzIHJhaXNlZC4KIAogICAgSWYgKmZpbGVvYmoqIGlzIHNwZWNpZmllZCwgaXQgaXMgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSB0byBhIDp0ZXJtOmBmaWxlIG9iamVjdGAKICAgIG9wZW5lZCBpbiBiaW5hcnkgbW9kZSBmb3IgKm5hbWUqLiBJdCBpcyBzdXBwb3NlZCB0byBiZSBhdCBwb3NpdGlvbiAwLgpAQCAtMTAwLDYgKzEwNyw5IEBACiAgICB8IGBgJ3J8YnoyJ2BgIHwgT3BlbiBhIGJ6aXAyIGNvbXByZXNzZWQgKnN0cmVhbSogZm9yICAgICAgIHwKICAgIHwgICAgICAgICAgICAgfCByZWFkaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ3J8eHonYGAgIHwgT3BlbiBhIGx6bWEgY29tcHJlc3NlZCAqc3RyZWFtKiBmb3IgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgfCByZWFkaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGBgJ3d8J2BgICAgIHwgT3BlbiBhbiB1bmNvbXByZXNzZWQgKnN0cmVhbSogZm9yIHdyaXRpbmcuIHwKICAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBgYCd3fGd6J2BgICB8IE9wZW4gYSBnemlwIGNvbXByZXNzZWQgKnN0cmVhbSogZm9yICAgICAgICB8CkBAIC0xMDgsNiArMTE4LDkgQEAKICAgIHwgYGAnd3xiejInYGAgfCBPcGVuIGEgYnppcDIgY29tcHJlc3NlZCAqc3RyZWFtKiBmb3IgICAgICAgfAogICAgfCAgICAgICAgICAgICB8IHdyaXRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAnd3x4eidgYCAgfCBPcGVuIGFuIGx6bWEgY29tcHJlc3NlZCAqc3RyZWFtKiBmb3IgICAgICAgfAorICAgfCAgICAgICAgICAgICB8IHdyaXRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogCiAuLiBjbGFzczo6IFRhckZpbGUKQEAgLTI2Myw5ICsyNzYsOSBAQAogCiAgICBJZiAqZXJyb3JsZXZlbCogaXMgYGAwYGAsIGFsbCBlcnJvcnMgYXJlIGlnbm9yZWQgd2hlbiB1c2luZyA6bWV0aDpgVGFyRmlsZS5leHRyYWN0YC4KICAgIE5ldmVydGhlbGVzcywgdGhleSBhcHBlYXIgYXMgZXJyb3IgbWVzc2FnZXMgaW4gdGhlIGRlYnVnIG91dHB1dCwgd2hlbiBkZWJ1Z2dpbmcKLSAgIGlzIGVuYWJsZWQuICBJZiBgYDFgYCwgYWxsICpmYXRhbCogZXJyb3JzIGFyZSByYWlzZWQgYXMgOmV4YzpgT1NFcnJvcmAgb3IKLSAgIDpleGM6YElPRXJyb3JgIGV4Y2VwdGlvbnMuIElmIGBgMmBgLCBhbGwgKm5vbi1mYXRhbCogZXJyb3JzIGFyZSByYWlzZWQgYXMKLSAgIDpleGM6YFRhckVycm9yYCBleGNlcHRpb25zIGFzIHdlbGwuCisgICBpcyBlbmFibGVkLiAgSWYgYGAxYGAsIGFsbCAqZmF0YWwqIGVycm9ycyBhcmUgcmFpc2VkIGFzIDpleGM6YE9TRXJyb3JgCisgICBleGNlcHRpb25zLiBJZiBgYDJgYCwgYWxsICpub24tZmF0YWwqIGVycm9ycyBhcmUgcmFpc2VkIGFzIDpleGM6YFRhckVycm9yYAorICAgZXhjZXB0aW9ucyBhcyB3ZWxsLgogCiAgICBUaGUgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogYXJndW1lbnRzIGRlZmluZSB0aGUgY2hhcmFjdGVyIGVuY29kaW5nIHRvIGJlCiAgICB1c2VkIGZvciByZWFkaW5nIG9yIHdyaXRpbmcgdGhlIGFyY2hpdmUgYW5kIGhvdyBjb252ZXJzaW9uIGVycm9ycyBhcmUgZ29pbmcKQEAgLTM2MywxNSArMzc2LDEyIEBACiAuLiBtZXRob2Q6OiBUYXJGaWxlLmV4dHJhY3RmaWxlKG1lbWJlcikKIAogICAgRXh0cmFjdCBhIG1lbWJlciBmcm9tIHRoZSBhcmNoaXZlIGFzIGEgZmlsZSBvYmplY3QuICptZW1iZXIqIG1heSBiZSBhIGZpbGVuYW1lCi0gICBvciBhIDpjbGFzczpgVGFySW5mb2Agb2JqZWN0LiBJZiAqbWVtYmVyKiBpcyBhIHJlZ3VsYXIgZmlsZSwgYSA6dGVybTpgZmlsZS1saWtlCi0gICBvYmplY3RgIGlzIHJldHVybmVkLiBJZiAqbWVtYmVyKiBpcyBhIGxpbmssIGEgZmlsZS1saWtlIG9iamVjdCBpcyBjb25zdHJ1Y3RlZCBmcm9tCi0gICB0aGUgbGluaydzIHRhcmdldC4gSWYgKm1lbWJlciogaXMgbm9uZSBvZiB0aGUgYWJvdmUsIDpjb25zdDpgTm9uZWAgaXMgcmV0dXJuZWQuCisgICBvciBhIDpjbGFzczpgVGFySW5mb2Agb2JqZWN0LiBJZiAqbWVtYmVyKiBpcyBhIHJlZ3VsYXIgZmlsZSBvciBhIGxpbmssIGFuCisgICA6Y2xhc3M6YGlvLkJ1ZmZlcmVkUmVhZGVyYCBvYmplY3QgaXMgcmV0dXJuZWQuIE90aGVyd2lzZSwgOmNvbnN0OmBOb25lYCBpcworICAgcmV0dXJuZWQuCiAKLSAgIC4uIG5vdGU6OgotCi0gICAgICBUaGUgZmlsZS1saWtlIG9iamVjdCBpcyByZWFkLW9ubHkuICBJdCBwcm92aWRlcyB0aGUgbWV0aG9kcwotICAgICAgOm1ldGg6YHJlYWRgLCA6bWV0aDpgcmVhZGxpbmVgLCA6bWV0aDpgcmVhZGxpbmVzYCwgOm1ldGg6YHNlZWtgLCA6bWV0aDpgdGVsbGAsCi0gICAgICBhbmQgOm1ldGg6YGNsb3NlYCwgYW5kIGFsc28gc3VwcG9ydHMgaXRlcmF0aW9uIG92ZXIgaXRzIGxpbmVzLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJldHVybiBhbiA6Y2xhc3M6YGlvLkJ1ZmZlcmVkUmVhZGVyYCBvYmplY3QuCiAKIAogLi4gbWV0aG9kOjogVGFyRmlsZS5hZGQobmFtZSwgYXJjbmFtZT1Ob25lLCByZWN1cnNpdmU9VHJ1ZSwgZXhjbHVkZT1Ob25lLCAqLCBmaWx0ZXI9Tm9uZSkKQEAgLTY1OSwxMSArNjY5LDExIEBACiAKICogVGhlIFBPU0lYLjEtMTk4OCB1c3RhciBmb3JtYXQgKDpjb25zdDpgVVNUQVJfRk9STUFUYCkuIEl0IHN1cHBvcnRzIGZpbGVuYW1lcwogICB1cCB0byBhIGxlbmd0aCBvZiBhdCBiZXN0IDI1NiBjaGFyYWN0ZXJzIGFuZCBsaW5rbmFtZXMgdXAgdG8gMTAwIGNoYXJhY3RlcnMuIFRoZQotICBtYXhpbXVtIGZpbGUgc2l6ZSBpcyA4IGdpZ2FieXRlcy4gVGhpcyBpcyBhbiBvbGQgYW5kIGxpbWl0ZWQgYnV0IHdpZGVseQorICBtYXhpbXVtIGZpbGUgc2l6ZSBpcyA4IEdpQi4gVGhpcyBpcyBhbiBvbGQgYW5kIGxpbWl0ZWQgYnV0IHdpZGVseQogICBzdXBwb3J0ZWQgZm9ybWF0LgogCiAqIFRoZSBHTlUgdGFyIGZvcm1hdCAoOmNvbnN0OmBHTlVfRk9STUFUYCkuIEl0IHN1cHBvcnRzIGxvbmcgZmlsZW5hbWVzIGFuZAotICBsaW5rbmFtZXMsIGZpbGVzIGJpZ2dlciB0aGFuIDggZ2lnYWJ5dGVzIGFuZCBzcGFyc2UgZmlsZXMuIEl0IGlzIHRoZSBkZSBmYWN0bworICBsaW5rbmFtZXMsIGZpbGVzIGJpZ2dlciB0aGFuIDggR2lCIGFuZCBzcGFyc2UgZmlsZXMuIEl0IGlzIHRoZSBkZSBmYWN0bwogICBzdGFuZGFyZCBvbiBHTlUvTGludXggc3lzdGVtcy4gOm1vZDpgdGFyZmlsZWAgZnVsbHkgc3VwcG9ydHMgdGhlIEdOVSB0YXIKICAgZXh0ZW5zaW9ucyBmb3IgbG9uZyBuYW1lcywgc3BhcnNlIGZpbGUgc3VwcG9ydCBpcyByZWFkLW9ubHkuCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RlbG5ldGxpYi5yc3QgYi9Eb2MvbGlicmFyeS90ZWxuZXRsaWIucnN0CmluZGV4IDY0NjYzNGQuLjliYzc5YzUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RlbG5ldGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGVsbmV0bGliLnJzdApAQCAtMTYyLDkgKzE2MiwxMyBAQAogLi4gbWV0aG9kOjogVGVsbmV0LndyaXRlKGJ1ZmZlcikKIAogICAgV3JpdGUgYSBieXRlIHN0cmluZyB0byB0aGUgc29ja2V0LCBkb3VibGluZyBhbnkgSUFDIGNoYXJhY3RlcnMuIFRoaXMgY2FuCi0gICBibG9jayBpZiB0aGUgY29ubmVjdGlvbiBpcyBibG9ja2VkLiAgTWF5IHJhaXNlIDpleGM6YHNvY2tldC5lcnJvcmAgaWYgdGhlCisgICBibG9jayBpZiB0aGUgY29ubmVjdGlvbiBpcyBibG9ja2VkLiAgTWF5IHJhaXNlIDpleGM6YE9TRXJyb3JgIGlmIHRoZQogICAgY29ubmVjdGlvbiBpcyBjbG9zZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIG1ldGhvZCB1c2VkIHRvIHJhaXNlIDpleGM6YHNvY2tldC5lcnJvcmAsIHdoaWNoIGlzIG5vdyBhbiBhbGlhcworICAgICAgb2YgOmV4YzpgT1NFcnJvcmAuCisKIAogLi4gbWV0aG9kOjogVGVsbmV0LmludGVyYWN0KCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGVtcGZpbGUucnN0IGIvRG9jL2xpYnJhcnkvdGVtcGZpbGUucnN0CmluZGV4IGJjMWYyM2EuLjJlYTYzMjMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RlbXBmaWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS90ZW1wZmlsZS5yc3QKQEAgLTI1LDcgKzI1LDcgQEAKIAogQWxzbywgYWxsIHRoZSB1c2VyLWNhbGxhYmxlIGZ1bmN0aW9ucyBub3cgdGFrZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB3aGljaAogYWxsb3cgZGlyZWN0IGNvbnRyb2wgb3ZlciB0aGUgbG9jYXRpb24gYW5kIG5hbWUgb2YgdGVtcG9yYXJ5IGZpbGVzLiAgSXQgaXMKLW5vIGxvbmdlciBuZWNlc3NhcnkgdG8gdXNlIHRoZSBnbG9iYWwgKnRlbXBkaXIqIGFuZCAqdGVtcGxhdGUqIHZhcmlhYmxlcy4KK25vIGxvbmdlciBuZWNlc3NhcnkgdG8gdXNlIHRoZSBnbG9iYWwgKnRlbXBkaXIqIHZhcmlhYmxlLgogVG8gbWFpbnRhaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIGFyZ3VtZW50IG9yZGVyIGlzIHNvbWV3aGF0IG9kZDsgaXQKIGlzIHJlY29tbWVuZGVkIHRvIHVzZSBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgY2xhcml0eS4KIApAQCAtNzYsOCArNzYsNyBAQAogICAgZGF0YSBpcyBzcG9vbGVkIGluIG1lbW9yeSB1bnRpbCB0aGUgZmlsZSBzaXplIGV4Y2VlZHMgKm1heF9zaXplKiwgb3IKICAgIHVudGlsIHRoZSBmaWxlJ3MgOmZ1bmM6YGZpbGVub2AgbWV0aG9kIGlzIGNhbGxlZCwgYXQgd2hpY2ggcG9pbnQgdGhlCiAgICBjb250ZW50cyBhcmUgd3JpdHRlbiB0byBkaXNrIGFuZCBvcGVyYXRpb24gcHJvY2VlZHMgYXMgd2l0aAotICAgOmZ1bmM6YFRlbXBvcmFyeUZpbGVgLiAgQWxzbywgaXQncyBgYHRydW5jYXRlYGAgbWV0aG9kIGRvZXMgbm90Ci0gICBhY2NlcHQgYSBgYHNpemVgYCBhcmd1bWVudC4KKyAgIDpmdW5jOmBUZW1wb3JhcnlGaWxlYC4KIAogICAgVGhlIHJlc3VsdGluZyBmaWxlIGhhcyBvbmUgYWRkaXRpb25hbCBtZXRob2QsIDpmdW5jOmByb2xsb3ZlcmAsIHdoaWNoCiAgICBjYXVzZXMgdGhlIGZpbGUgdG8gcm9sbCBvdmVyIHRvIGFuIG9uLWRpc2sgZmlsZSByZWdhcmRsZXNzIG9mIGl0cyBzaXplLgpAQCAtODksNiArODgsOSBAQAogICAgZmlsZS1saWtlIG9iamVjdCBjYW4gYmUgdXNlZCBpbiBhIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQsIGp1c3QgbGlrZQogICAgYSBub3JtYWwgZmlsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIHRoZSB0cnVuY2F0ZSBtZXRob2Qgbm93IGFjY2VwdHMgYSBgYHNpemVgYCBhcmd1bWVudC4KKwogCiAuLiBmdW5jdGlvbjo6IFRlbXBvcmFyeURpcmVjdG9yeShzdWZmaXg9JycsIHByZWZpeD0ndG1wJywgZGlyPU5vbmUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3Rlc3QucnN0IGIvRG9jL2xpYnJhcnkvdGVzdC5yc3QKaW5kZXggMjRlMDZkNS4uNzAyZWY4YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGVzdC5yc3QKQEAgLTgwLDE3ICs4MCwxMiBAQAogCiAgICAuLi4gbW9yZSB0ZXN0IGNsYXNzZXMgLi4uCiAKLSAgIGRlZiB0ZXN0X21haW4oKToKLSAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChNeVRlc3RDYXNlMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE15VGVzdENhc2UyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uIGxpc3Qgb3RoZXIgdGVzdHMgLi4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLQogICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAgICB0ZXN0X21haW4oKQorICAgICAgIHVuaXR0ZXN0Lm1haW4oKQogCi1UaGlzIGJvaWxlcnBsYXRlIGNvZGUgYWxsb3dzIHRoZSB0ZXN0aW5nIHN1aXRlIHRvIGJlIHJ1biBieSA6bW9kOmB0ZXN0LnJlZ3J0ZXN0YAotYXMgd2VsbCBhcyBvbiBpdHMgb3duIGFzIGEgc2NyaXB0LgorVGhpcyBjb2RlIHBhdHRlcm4gYWxsb3dzIHRoZSB0ZXN0aW5nIHN1aXRlIHRvIGJlIHJ1biBieSA6bW9kOmB0ZXN0LnJlZ3J0ZXN0YCwKK29uIGl0cyBvd24gYXMgYSBzY3JpcHQgdGhhdCBzdXBwb3J0cyB0aGUgOm1vZDpgdW5pdHRlc3RgIENMSSwgb3IgdmlhIHRoZQorYHB5dGhvbiAtbSB1bml0dGVzdGAgQ0xJLgogCiBUaGUgZ29hbCBmb3IgcmVncmVzc2lvbiB0ZXN0aW5nIGlzIHRvIHRyeSB0byBicmVhayBjb2RlLiBUaGlzIGxlYWRzIHRvIGEgZmV3CiBndWlkZWxpbmVzIHRvIGJlIGZvbGxvd2VkOgpAQCAtMTI5LDIyICsxMjQsMjcgQEAKICAgYXMgd2hhdCB0eXBlIG9mIGlucHV0IGlzIHVzZWQuIE1pbmltaXplIGNvZGUgZHVwbGljYXRpb24gYnkgc3ViY2xhc3NpbmcgYQogICBiYXNpYyB0ZXN0IGNsYXNzIHdpdGggYSBjbGFzcyB0aGF0IHNwZWNpZmllcyB0aGUgaW5wdXQ6OgogCi0gICAgIGNsYXNzIFRlc3RGdW5jQWNjZXB0c1NlcXVlbmNlcyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIGNsYXNzIFRlc3RGdW5jQWNjZXB0c1NlcXVlbmNlc01peGluOgogCiAgICAgICAgICBmdW5jID0gbXlTdXBlcldoYW1teUZ1bmN0aW9uCiAKICAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoc2VsZik6CiAgICAgICAgICAgICAgc2VsZi5mdW5jKHNlbGYuYXJnKQogCi0gICAgIGNsYXNzIEFjY2VwdExpc3RzKFRlc3RGdW5jQWNjZXB0c1NlcXVlbmNlcyk6CisgICAgIGNsYXNzIEFjY2VwdExpc3RzKFRlc3RGdW5jQWNjZXB0c1NlcXVlbmNlc01peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICBhcmcgPSBbMSwgMiwgM10KIAotICAgICBjbGFzcyBBY2NlcHRTdHJpbmdzKFRlc3RGdW5jQWNjZXB0c1NlcXVlbmNlcyk6CisgICAgIGNsYXNzIEFjY2VwdFN0cmluZ3MoVGVzdEZ1bmNBY2NlcHRzU2VxdWVuY2VzTWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIGFyZyA9ICdhYmMnCiAKLSAgICAgY2xhc3MgQWNjZXB0VHVwbGVzKFRlc3RGdW5jQWNjZXB0c1NlcXVlbmNlcyk6CisgICAgIGNsYXNzIEFjY2VwdFR1cGxlcyhUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXNNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgYXJnID0gKDEsIDIsIDMpCiAKKyAgV2hlbiB1c2luZyB0aGlzIHBhdHRlcm4sIHJlbWVtYmVyIHRoYXQgYWxsIGNsYXNzZXMgdGhhdCBpbmhlcml0IGZyb20KKyAgYHVuaXR0ZXN0LlRlc3RDYXNlYCBhcmUgcnVuIGFzIHRlc3RzLiAgVGhlIGBNaXhpbmAgY2xhc3MgaW4gdGhlIGV4YW1wbGUgYWJvdmUKKyAgZG9lcyBub3QgaGF2ZSBhbnkgZGF0YSBhbmQgc28gY2FuJ3QgYmUgcnVuIGJ5IGl0c2VsZiwgdGh1cyBpdCBkb2VzIG5vdAorICBpbmhlcml0IGZyb20gYHVuaXR0ZXN0LlRlc3RDYXNlYC4KKwogCiAuLiBzZWVhbHNvOjoKIApAQCAtMTYwLDE0ICsxNjAsMTUgQEAKIFRoZSA6bW9kOmB0ZXN0YCBwYWNrYWdlIGNhbiBiZSBydW4gYXMgYSBzY3JpcHQgdG8gZHJpdmUgUHl0aG9uJ3MgcmVncmVzc2lvbgogdGVzdCBzdWl0ZSwgdGhhbmtzIHRvIHRoZSA6b3B0aW9uOmAtbWAgb3B0aW9uOiA6cHJvZ3JhbTpgcHl0aG9uIC1tIHRlc3RgLiBVbmRlcgogdGhlIGhvb2QsIGl0IHVzZXMgOm1vZDpgdGVzdC5yZWdydGVzdGA7IHRoZSBjYWxsIDpwcm9ncmFtOmBweXRob24gLW0KLXRlc3QucmVncnRlc3RgIHVzZWQgaW4gcHJldmlvdXMgUHl0aG9uIHZlcnNpb25zIHN0aWxsIHdvcmtzKS4KLVJ1bm5pbmcgdGhlIHNjcmlwdCBieSBpdHNlbGYgYXV0b21hdGljYWxseSBzdGFydHMgcnVubmluZyBhbGwgcmVncmVzc2lvbgotdGVzdHMgaW4gdGhlIDptb2Q6YHRlc3RgIHBhY2thZ2UuIEl0IGRvZXMgdGhpcyBieSBmaW5kaW5nIGFsbCBtb2R1bGVzIGluIHRoZQotcGFja2FnZSB3aG9zZSBuYW1lIHN0YXJ0cyB3aXRoIGBgdGVzdF9gYCwgaW1wb3J0aW5nIHRoZW0sIGFuZCBleGVjdXRpbmcgdGhlCi1mdW5jdGlvbiA6ZnVuYzpgdGVzdF9tYWluYCBpZiBwcmVzZW50LiBUaGUgbmFtZXMgb2YgdGVzdHMgdG8gZXhlY3V0ZSBtYXkgYWxzbwotYmUgcGFzc2VkIHRvIHRoZSBzY3JpcHQuIFNwZWNpZnlpbmcgYSBzaW5nbGUgcmVncmVzc2lvbiB0ZXN0ICg6cHJvZ3JhbTpgcHl0aG9uCi0tbSB0ZXN0IHRlc3Rfc3BhbWApIHdpbGwgbWluaW1pemUgb3V0cHV0IGFuZCBvbmx5IHByaW50Ci13aGV0aGVyIHRoZSB0ZXN0IHBhc3NlZCBvciBmYWlsZWQgYW5kIHRodXMgbWluaW1pemUgb3V0cHV0LgordGVzdC5yZWdydGVzdGAgdXNlZCBpbiBwcmV2aW91cyBQeXRob24gdmVyc2lvbnMgc3RpbGwgd29ya3MpLiAgUnVubmluZyB0aGUKK3NjcmlwdCBieSBpdHNlbGYgYXV0b21hdGljYWxseSBzdGFydHMgcnVubmluZyBhbGwgcmVncmVzc2lvbiB0ZXN0cyBpbiB0aGUKKzptb2Q6YHRlc3RgIHBhY2thZ2UuIEl0IGRvZXMgdGhpcyBieSBmaW5kaW5nIGFsbCBtb2R1bGVzIGluIHRoZSBwYWNrYWdlIHdob3NlCituYW1lIHN0YXJ0cyB3aXRoIGBgdGVzdF9gYCwgaW1wb3J0aW5nIHRoZW0sIGFuZCBleGVjdXRpbmcgdGhlIGZ1bmN0aW9uCis6ZnVuYzpgdGVzdF9tYWluYCBpZiBwcmVzZW50IG9yIGxvYWRpbmcgdGhlIHRlc3RzIHZpYQordW5pdHRlc3QuVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlIGlmIGBgdGVzdF9tYWluYGAgZG9lcyBub3QgZXhpc3QuICBUaGUKK25hbWVzIG9mIHRlc3RzIHRvIGV4ZWN1dGUgbWF5IGFsc28gYmUgcGFzc2VkIHRvIHRoZSBzY3JpcHQuIFNwZWNpZnlpbmcgYSBzaW5nbGUKK3JlZ3Jlc3Npb24gdGVzdCAoOnByb2dyYW06YHB5dGhvbiAtbSB0ZXN0IHRlc3Rfc3BhbWApIHdpbGwgbWluaW1pemUgb3V0cHV0IGFuZAorb25seSBwcmludCB3aGV0aGVyIHRoZSB0ZXN0IHBhc3NlZCBvciBmYWlsZWQuCiAKIFJ1bm5pbmcgOm1vZDpgdGVzdGAgZGlyZWN0bHkgYWxsb3dzIHdoYXQgcmVzb3VyY2VzIGFyZSBhdmFpbGFibGUgZm9yCiB0ZXN0cyB0byB1c2UgdG8gYmUgc2V0LiBZb3UgZG8gdGhpcyBieSB1c2luZyB0aGUgYGAtdWBgIGNvbW1hbmQtbGluZQpAQCAtMjIzLDE0ICsyMjQsMTQgQEAKIAogLi4gZGF0YTo6IHZlcmJvc2UKIAotICAgOmNvbnN0OmBUcnVlYCB3aGVuIHZlcmJvc2Ugb3V0cHV0IGlzIGVuYWJsZWQuIFNob3VsZCBiZSBjaGVja2VkIHdoZW4gbW9yZQorICAgYGBUcnVlYGAgd2hlbiB2ZXJib3NlIG91dHB1dCBpcyBlbmFibGVkLiBTaG91bGQgYmUgY2hlY2tlZCB3aGVuIG1vcmUKICAgIGRldGFpbGVkIGluZm9ybWF0aW9uIGlzIGRlc2lyZWQgYWJvdXQgYSBydW5uaW5nIHRlc3QuICp2ZXJib3NlKiBpcyBzZXQgYnkKICAgIDptb2Q6YHRlc3QucmVncnRlc3RgLgogCiAKIC4uIGRhdGE6OiBpc19qeXRob24KIAotICAgOmNvbnN0OmBUcnVlYCBpZiB0aGUgcnVubmluZyBpbnRlcnByZXRlciBpcyBKeXRob24uCisgICBgYFRydWVgYCBpZiB0aGUgcnVubmluZyBpbnRlcnByZXRlciBpcyBKeXRob24uCiAKIAogLi4gZGF0YTo6IFRFU1RGTgpAQCAtMjQ5LDcgKzI1MCw3IEBACiAKIC4uIGZ1bmN0aW9uOjogaXNfcmVzb3VyY2VfZW5hYmxlZChyZXNvdXJjZSkKIAotICAgUmV0dXJuIDpjb25zdDpgVHJ1ZWAgaWYgKnJlc291cmNlKiBpcyBlbmFibGVkIGFuZCBhdmFpbGFibGUuIFRoZSBsaXN0IG9mCisgICBSZXR1cm4gYGBUcnVlYGAgaWYgKnJlc291cmNlKiBpcyBlbmFibGVkIGFuZCBhdmFpbGFibGUuIFRoZSBsaXN0IG9mCiAgICBhdmFpbGFibGUgcmVzb3VyY2VzIGlzIG9ubHkgc2V0IHdoZW4gOm1vZDpgdGVzdC5yZWdydGVzdGAgaXMgZXhlY3V0aW5nIHRoZQogICAgdGVzdHMuCiAKQEAgLTI1OCw3ICsyNTksNyBAQAogCiAgICBSYWlzZSA6ZXhjOmBSZXNvdXJjZURlbmllZGAgaWYgKnJlc291cmNlKiBpcyBub3QgYXZhaWxhYmxlLiAqbXNnKiBpcyB0aGUKICAgIGFyZ3VtZW50IHRvIDpleGM6YFJlc291cmNlRGVuaWVkYCBpZiBpdCBpcyByYWlzZWQuIEFsd2F5cyByZXR1cm5zCi0gICA6Y29uc3Q6YFRydWVgIGlmIGNhbGxlZCBieSBhIGZ1bmN0aW9uIHdob3NlIGBgX19uYW1lX19gYCBpcyBgYCdfX21haW5fXydgYC4KKyAgIGBgVHJ1ZWBgIGlmIGNhbGxlZCBieSBhIGZ1bmN0aW9uIHdob3NlIGBgX19uYW1lX19gYCBpcyBgYCdfX21haW5fXydgYC4KICAgIFVzZWQgd2hlbiB0ZXN0cyBhcmUgZXhlY3V0ZWQgYnkgOm1vZDpgdGVzdC5yZWdydGVzdGAuCiAKIApAQCAtMjg2LDYgKzI4NywxNSBAQAogICAgVGhpcyB3aWxsIHJ1biBhbGwgdGVzdHMgZGVmaW5lZCBpbiB0aGUgbmFtZWQgbW9kdWxlLgogCiAKKy4uIGZ1bmN0aW9uOjogcnVuX2RvY3Rlc3QobW9kdWxlLCB2ZXJib3NpdHk9Tm9uZSkKKworICAgUnVuIDpmdW5jOmBkb2N0ZXN0LnRlc3Rtb2RgIG9uIHRoZSBnaXZlbiAqbW9kdWxlKi4gIFJldHVybgorICAgYGAoZmFpbHVyZV9jb3VudCwgdGVzdF9jb3VudClgYC4KKworICAgSWYgKnZlcmJvc2l0eSogaXMgYGBOb25lYGAsIDpmdW5jOmBkb2N0ZXN0LnRlc3Rtb2RgIGlzIHJ1biB3aXRoIHZlcmJvc2l0eQorICAgc2V0IHRvIDpkYXRhOmB2ZXJib3NlYC4gIE90aGVyd2lzZSwgaXQgaXMgcnVuIHdpdGggdmVyYm9zaXR5IHNldCB0bworICAgYGBOb25lYGAuCisKIC4uIGZ1bmN0aW9uOjogY2hlY2tfd2FybmluZ3MoXCpmaWx0ZXJzLCBxdWlldD1UcnVlKQogCiAgICBBIGNvbnZlbmllbmNlIHdyYXBwZXIgZm9yIDpmdW5jOmB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpYCB0aGF0IG1ha2VzIGl0CkBAIC0yOTYsMTIgKzMwNiwxMiBAQAogCiAgICBgYGNoZWNrX3dhcm5pbmdzYGAgYWNjZXB0cyAyLXR1cGxlcyBvZiB0aGUgZm9ybSBgYCgibWVzc2FnZSByZWdleHAiLAogICAgV2FybmluZ0NhdGVnb3J5KWBgIGFzIHBvc2l0aW9uYWwgYXJndW1lbnRzLiBJZiBvbmUgb3IgbW9yZSAqZmlsdGVycyogYXJlCi0gICBwcm92aWRlZCwgb3IgaWYgdGhlIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnQgKnF1aWV0KiBpcyA6Y29uc3Q6YEZhbHNlYCwKKyAgIHByb3ZpZGVkLCBvciBpZiB0aGUgb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudCAqcXVpZXQqIGlzIGBgRmFsc2VgYCwKICAgIGl0IGNoZWNrcyB0byBtYWtlIHN1cmUgdGhlIHdhcm5pbmdzIGFyZSBhcyBleHBlY3RlZDogIGVhY2ggc3BlY2lmaWVkIGZpbHRlcgogICAgbXVzdCBtYXRjaCBhdCBsZWFzdCBvbmUgb2YgdGhlIHdhcm5pbmdzIHJhaXNlZCBieSB0aGUgZW5jbG9zZWQgY29kZSBvciB0aGUKICAgIHRlc3QgZmFpbHMsIGFuZCBpZiBhbnkgd2FybmluZ3MgYXJlIHJhaXNlZCB0aGF0IGRvIG5vdCBtYXRjaCBhbnkgb2YgdGhlCiAgICBzcGVjaWZpZWQgZmlsdGVycyB0aGUgdGVzdCBmYWlscy4gIFRvIGRpc2FibGUgdGhlIGZpcnN0IG9mIHRoZXNlIGNoZWNrcywKLSAgIHNldCAqcXVpZXQqIHRvIDpjb25zdDpgVHJ1ZWAuCisgICBzZXQgKnF1aWV0KiB0byBgYFRydWVgYC4KIAogICAgSWYgbm8gYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQsIGl0IGRlZmF1bHRzIHRvOjoKIApAQCAtMzE2LDcgKzMyNiw3IEBACiAgICByZXByZXNlbnRpbmcgdGhlIG1vc3QgcmVjZW50IHdhcm5pbmcgY2FuIGFsc28gYmUgYWNjZXNzZWQgZGlyZWN0bHkgdGhyb3VnaAogICAgdGhlIHJlY29yZGVyIG9iamVjdCAoc2VlIGV4YW1wbGUgYmVsb3cpLiAgSWYgbm8gd2FybmluZyBoYXMgYmVlbiByYWlzZWQsCiAgICB0aGVuIGFueSBvZiB0aGUgYXR0cmlidXRlcyB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBleHBlY3RlZCBvbiBhbiBvYmplY3QKLSAgIHJlcHJlc2VudGluZyBhIHdhcm5pbmcgd2lsbCByZXR1cm4gOmNvbnN0OmBOb25lYC4KKyAgIHJlcHJlc2VudGluZyBhIHdhcm5pbmcgd2lsbCByZXR1cm4gYGBOb25lYGAuCiAKICAgIFRoZSByZWNvcmRlciBvYmplY3QgYWxzbyBoYXMgYSA6bWV0aDpgcmVzZXRgIG1ldGhvZCwgd2hpY2ggY2xlYXJzIHRoZQogICAgd2FybmluZ3MgbGlzdC4KQEAgLTM1NCw5ICszNjQsOSBAQAogCiAuLiBmdW5jdGlvbjo6IGNhcHR1cmVkX3N0ZG91dCgpCiAKLSAgIFRoaXMgaXMgYSBjb250ZXh0IG1hbmFnZXIgdGhhdCBydW5zIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IGJvZHkgdXNpbmcKLSAgIGEgOmNsYXNzOmBTdHJpbmdJTy5TdHJpbmdJT2Agb2JqZWN0IGFzIHN5cy5zdGRvdXQuICBUaGF0IG9iamVjdCBjYW4gYmUKLSAgIHJldHJpZXZlZCB1c2luZyB0aGUgYGBhc2BgIGNsYXVzZSBvZiB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4KKyAgIEEgY29udGV4dCBtYW5hZ2VyIHRoYXQgcnVucyB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBib2R5IHVzaW5nIGEKKyAgIDpjbGFzczpgaW8uU3RyaW5nSU9gIG9iamVjdCBhcyBzeXMuc3Rkb3V0LiAgVGhhdCBvYmplY3QgY2FuIGJlIHJldHJpZXZlZAorICAgdXNpbmcgdGhlIGBgYXNgYCBjbGF1c2Ugb2YgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuCiAKICAgIEV4YW1wbGUgdXNlOjoKIApAQCAtMzY1LDYgKzM3NSwzNiBAQAogICAgICAgYXNzZXJ0IHMuZ2V0dmFsdWUoKSA9PSAiaGVsbG9cbiIKIAogCisuLiBmdW5jdGlvbjo6IHRlbXBfY3dkKG5hbWU9J3RlbXBjd2QnLCBxdWlldD1GYWxzZSwgcGF0aD1Ob25lKQorCisgICBBIGNvbnRleHQgbWFuYWdlciB0aGF0IHRlbXBvcmFyaWx5IGNoYW5nZXMgdGhlIGN1cnJlbnQgd29ya2luZworICAgZGlyZWN0b3J5IChDV0QpLgorCisgICBBbiBleGlzdGluZyBwYXRoIG1heSBiZSBwcm92aWRlZCBhcyAqcGF0aCosIGluIHdoaWNoIGNhc2UgdGhpcyBmdW5jdGlvbgorICAgbWFrZXMgbm8gY2hhbmdlcyB0byB0aGUgZmlsZSBzeXN0ZW0uCisKKyAgIE90aGVyd2lzZSwgdGhlIG5ldyBDV0QgaXMgY3JlYXRlZCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgYW5kIGl0J3MgbmFtZWQKKyAgICpuYW1lKi4gIElmICpxdWlldCogaXMgYGBGYWxzZWBgIGFuZCBpdCdzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgb3IKKyAgIGNoYW5nZSB0aGUgQ1dELCBhbiBlcnJvciBpcyByYWlzZWQuICBJZiBpdCdzIGBgVHJ1ZWBgLCBvbmx5IGEgd2FybmluZworICAgaXMgcmFpc2VkIGFuZCB0aGUgb3JpZ2luYWwgQ1dEIGlzIHVzZWQuCisKKworLi4gZnVuY3Rpb246OiB0ZW1wX3VtYXNrKHVtYXNrKQorCisgICBBIGNvbnRleHQgbWFuYWdlciB0aGF0IHRlbXBvcmFyaWx5IHNldHMgdGhlIHByb2Nlc3MgdW1hc2suCisKKworLi4gZnVuY3Rpb246OiBjYW5fc3ltbGluaygpCisKKyAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgT1Mgc3VwcG9ydHMgc3ltYm9saWMgbGlua3MsIGBgRmFsc2VgYAorICAgb3RoZXJ3aXNlLgorCisKKy4uIGRlY29yYXRvcjo6IHNraXBfdW5sZXNzX3N5bWxpbmsoKQorCisgICBBIGRlY29yYXRvciBmb3IgcnVubmluZyB0ZXN0cyB0aGF0IHJlcXVpcmUgc3VwcG9ydCBmb3Igc3ltYm9saWMgbGlua3MuCisKKwogLi4gZnVuY3Rpb246OiBzdXBwcmVzc19jcmFzaF9wb3B1cCgpCiAKICAgIEEgY29udGV4dCBtYW5hZ2VyIHRoYXQgZGlzYWJsZXMgV2luZG93cyBFcnJvciBSZXBvcnRpbmcgZGlhbG9ncyB1c2luZwpAQCAtMzcyLDYgKzQxMiwyNyBAQAogICAgT24gb3RoZXIgcGxhdGZvcm1zIGl0J3MgYSBuby1vcC4KIAogCisuLiBkZWNvcmF0b3I6OiBhbnRpY2lwYXRlX2ZhaWx1cmUoY29uZGl0aW9uKQorCisgICBBIGRlY29yYXRvciB0byBjb25kaXRpb25hbGx5IG1hcmsgdGVzdHMgd2l0aAorICAgOmZ1bmM6YHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZWAuIEFueSB1c2Ugb2YgdGhpcyBkZWNvcmF0b3Igc2hvdWxkCisgICBoYXZlIGFuIGFzc29jaWF0ZWQgY29tbWVudCBpZGVudGlmeWluZyB0aGUgcmVsZXZhbnQgdHJhY2tlciBpc3N1ZS4KKworCisuLiBkZWNvcmF0b3I6OiBydW5fd2l0aF9sb2NhbGUoY2F0c3RyLCAqbG9jYWxlcykKKworICAgQSBkZWNvcmF0b3IgZm9yIHJ1bm5pbmcgYSBmdW5jdGlvbiBpbiBhIGRpZmZlcmVudCBsb2NhbGUsIGNvcnJlY3RseQorICAgcmVzZXR0aW5nIGl0IGFmdGVyIGl0IGhhcyBmaW5pc2hlZC4gICpjYXRzdHIqIGlzIHRoZSBsb2NhbGUgY2F0ZWdvcnkgYXMKKyAgIGEgc3RyaW5nIChmb3IgZXhhbXBsZSBgYCJMQ19BTEwiYGApLiAgVGhlICpsb2NhbGVzKiBwYXNzZWQgd2lsbCBiZSB0cmllZAorICAgc2VxdWVudGlhbGx5LCBhbmQgdGhlIGZpcnN0IHZhbGlkIGxvY2FsZSB3aWxsIGJlIHVzZWQuCisKKworLi4gZnVuY3Rpb246OiBtYWtlX2JhZF9mZCgpCisKKyAgIENyZWF0ZSBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvciBieSBvcGVuaW5nIGFuZCBjbG9zaW5nIGEgdGVtcG9yYXJ5IGZpbGUsCisgICBhbmQgcmV0dXJuaW5nIGl0cyBkZXNjcmlwb3IuCisKKwogLi4gZnVuY3Rpb246OiBpbXBvcnRfbW9kdWxlKG5hbWUsIGRlcHJlY2F0ZWQ9RmFsc2UpCiAKICAgIFRoaXMgZnVuY3Rpb24gaW1wb3J0cyBhbmQgcmV0dXJucyB0aGUgbmFtZWQgbW9kdWxlLiBVbmxpa2UgYSBub3JtYWwKQEAgLTM3OSw3ICs0NDAsNyBAQAogICAgY2Fubm90IGJlIGltcG9ydGVkLgogCiAgICBNb2R1bGUgYW5kIHBhY2thZ2UgZGVwcmVjYXRpb24gbWVzc2FnZXMgYXJlIHN1cHByZXNzZWQgZHVyaW5nIHRoaXMgaW1wb3J0Ci0gICBpZiAqZGVwcmVjYXRlZCogaXMgOmNvbnN0OmBUcnVlYC4KKyAgIGlmICpkZXByZWNhdGVkKiBpcyBgYFRydWVgYC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKQEAgLTQwMyw5ICs0NjQsOSBAQAogICAgYGBzeXMubW9kdWxlc2BgIHdoZW4gdGhlIGZyZXNoIGltcG9ydCBpcyBjb21wbGV0ZS4KIAogICAgTW9kdWxlIGFuZCBwYWNrYWdlIGRlcHJlY2F0aW9uIG1lc3NhZ2VzIGFyZSBzdXBwcmVzc2VkIGR1cmluZyB0aGlzIGltcG9ydAotICAgaWYgKmRlcHJlY2F0ZWQqIGlzIDpjb25zdDpgVHJ1ZWAuCisgICBpZiAqZGVwcmVjYXRlZCogaXMgYGBUcnVlYGAuCiAKLSAgIFRoaXMgZnVuY3Rpb24gd2lsbCByYWlzZSA6ZXhjOmB1bml0dGVzdC5Ta2lwVGVzdGAgaXMgdGhlIG5hbWVkIG1vZHVsZQorICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJhaXNlIDpleGM6YHVuaXR0ZXN0LlNraXBUZXN0YCBpZiB0aGUgbmFtZWQgbW9kdWxlCiAgICBjYW5ub3QgYmUgaW1wb3J0ZWQuCiAKICAgIEV4YW1wbGUgdXNlOjoKQEAgLTQyMCw2ICs0ODEsNDggQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCiAKKy4uIGZ1bmN0aW9uOjogYmluZF9wb3J0KHNvY2ssIGhvc3Q9SE9TVCkKKworICAgQmluZCB0aGUgc29ja2V0IHRvIGEgZnJlZSBwb3J0IGFuZCByZXR1cm4gdGhlIHBvcnQgbnVtYmVyLiAgUmVsaWVzIG9uCisgICBlcGhlbWVyYWwgcG9ydHMgaW4gb3JkZXIgdG8gZW5zdXJlIHdlIGFyZSB1c2luZyBhbiB1bmJvdW5kIHBvcnQuICBUaGlzIGlzCisgICBpbXBvcnRhbnQgYXMgbWFueSB0ZXN0cyBtYXkgYmUgcnVubmluZyBzaW11bHRhbmVvdXNseSwgZXNwZWNpYWxseSBpbiBhCisgICBidWlsZGJvdCBlbnZpcm9ubWVudC4gIFRoaXMgbWV0aG9kIHJhaXNlcyBhbiBleGNlcHRpb24gaWYgdGhlCisgICBgYHNvY2suZmFtaWx5YGAgaXMgOmNvbnN0OmB+c29ja2V0LkFGX0lORVRgIGFuZCBgYHNvY2sudHlwZWBgIGlzCisgICA6Y29uc3Q6YH5zb2NrZXQuU09DS19TVFJFQU1gLCBhbmQgdGhlIHNvY2tldCBoYXMKKyAgIDpjb25zdDpgfnNvY2tldC5TT19SRVVTRUFERFJgIG9yIDpjb25zdDpgfnNvY2tldC5TT19SRVVTRVBPUlRgIHNldCBvbiBpdC4KKyAgIFRlc3RzIHNob3VsZCBuZXZlciBzZXQgdGhlc2Ugc29ja2V0IG9wdGlvbnMgZm9yIFRDUC9JUCBzb2NrZXRzLgorICAgVGhlIG9ubHkgY2FzZSBmb3Igc2V0dGluZyB0aGVzZSBvcHRpb25zIGlzIHRlc3RpbmcgbXVsdGljYXN0aW5nIHZpYQorICAgbXVsdGlwbGUgVURQIHNvY2tldHMuCisKKyAgIEFkZGl0aW9uYWxseSwgaWYgdGhlIDpjb25zdDpgfnNvY2tldC5TT19FWENMVVNJVkVBRERSVVNFYCBzb2NrZXQgb3B0aW9uIGlzCisgICBhdmFpbGFibGUgKGkuZS4gb24gV2luZG93cyksIGl0IHdpbGwgYmUgc2V0IG9uIHRoZSBzb2NrZXQuICBUaGlzIHdpbGwKKyAgIHByZXZlbnQgYW55b25lIGVsc2UgZnJvbSBiaW5kaW5nIHRvIG91ciBob3N0L3BvcnQgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUKKyAgIHRlc3QuCisKKworLi4gZnVuY3Rpb246OiBmaW5kX3VudXNlZF9wb3J0KGZhbWlseT1zb2NrZXQuQUZfSU5FVCwgc29ja3R5cGU9c29ja2V0LlNPQ0tfU1RSRUFNKQorCisgICBSZXR1cm5zIGFuIHVudXNlZCBwb3J0IHRoYXQgc2hvdWxkIGJlIHN1aXRhYmxlIGZvciBiaW5kaW5nLiAgVGhpcyBpcworICAgYWNoaWV2ZWQgYnkgY3JlYXRpbmcgYSB0ZW1wb3Jhcnkgc29ja2V0IHdpdGggdGhlIHNhbWUgZmFtaWx5IGFuZCB0eXBlIGFzCisgICB0aGUgYGBzb2NrYGAgcGFyYW1ldGVyIChkZWZhdWx0IGlzIDpjb25zdDpgfnNvY2tldC5BRl9JTkVUYCwKKyAgIDpjb25zdDpgfnNvY2tldC5TT0NLX1NUUkVBTWApLAorICAgYW5kIGJpbmRpbmcgaXQgdG8gdGhlIHNwZWNpZmllZCBob3N0IGFkZHJlc3MgKGRlZmF1bHRzIHRvIGBgMC4wLjAuMGBgKQorICAgd2l0aCB0aGUgcG9ydCBzZXQgdG8gMCwgZWxpY2l0aW5nIGFuIHVudXNlZCBlcGhlbWVyYWwgcG9ydCBmcm9tIHRoZSBPUy4KKyAgIFRoZSB0ZW1wb3Jhcnkgc29ja2V0IGlzIHRoZW4gY2xvc2VkIGFuZCBkZWxldGVkLCBhbmQgdGhlIGVwaGVtZXJhbCBwb3J0IGlzCisgICByZXR1cm5lZC4KKworICAgRWl0aGVyIHRoaXMgbWV0aG9kIG9yIDpmdW5jOmBiaW5kX3BvcnRgIHNob3VsZCBiZSB1c2VkIGZvciBhbnkgdGVzdHMKKyAgIHdoZXJlIGEgc2VydmVyIHNvY2tldCBuZWVkcyB0byBiZSBib3VuZCB0byBhIHBhcnRpY3VsYXIgcG9ydCBmb3IgdGhlCisgICBkdXJhdGlvbiBvZiB0aGUgdGVzdC4KKyAgIFdoaWNoIG9uZSB0byB1c2UgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBjYWxsaW5nIGNvZGUgaXMgY3JlYXRpbmcgYSBweXRob24KKyAgIHNvY2tldCwgb3IgaWYgYW4gdW51c2VkIHBvcnQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgaW4gYSBjb25zdHJ1Y3RvcgorICAgb3IgcGFzc2VkIHRvIGFuIGV4dGVybmFsIHByb2dyYW0gKGkuZS4gdGhlIGBgLWFjY2VwdGBgIGFyZ3VtZW50IHRvCisgICBvcGVuc3NsJ3Mgc19zZXJ2ZXIgbW9kZSkuICBBbHdheXMgcHJlZmVyIDpmdW5jOmBiaW5kX3BvcnRgIG92ZXIKKyAgIDpmdW5jOmBmaW5kX3VudXNlZF9wb3J0YCB3aGVyZSBwb3NzaWJsZS4gIFVzaW5nIGEgaGFyZCBjb2RlZCBwb3J0IGlzCisgICBkaXNjb3VyYWdlZCBzaW5jZSBpdCBjYW4gbWFrZXMgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSB0ZXN0IGltcG9zc2libGUgdG8KKyAgIHJ1biBzaW11bHRhbmVvdXNseSwgd2hpY2ggaXMgYSBwcm9ibGVtIGZvciBidWlsZGJvdHMuCisKKwogVGhlIDptb2Q6YHRlc3Quc3VwcG9ydGAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBjbGFzc2VzOgogCiAuLiBjbGFzczo6IFRyYW5zaWVudFJlc291cmNlKGV4YywgKiprd2FyZ3MpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZXh0LnJzdCBiL0RvYy9saWJyYXJ5L3RleHQucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3YjY3ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS90ZXh0LnJzdApAQCAtMCwwICsxLDI2IEBACisuLiBfc3RyaW5nc2VydmljZXM6CisuLiBfdGV4dHNlcnZpY2VzOgorCisqKioqKioqKioqKioqKioqKioqKioqKioKK1RleHQgUHJvY2Vzc2luZyBTZXJ2aWNlcworKioqKioqKioqKioqKioqKioqKioqKioqCisKK1RoZSBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgcHJvdmlkZSBhIHdpZGUgcmFuZ2Ugb2Ygc3RyaW5nCittYW5pcHVsYXRpb24gb3BlcmF0aW9ucyBhbmQgb3RoZXIgdGV4dCBwcm9jZXNzaW5nIHNlcnZpY2VzLgorCitUaGUgOm1vZDpgY29kZWNzYCBtb2R1bGUgZGVzY3JpYmVkIHVuZGVyIDpyZWY6YGJpbmFyeXNlcnZpY2VzYCBpcyBhbHNvCitoaWdobHkgcmVsZXZhbnQgdG8gdGV4dCBwcm9jZXNzaW5nLiBJbiBhZGRpdGlvbiwgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvcgorUHl0aG9uJ3MgYnVpbHQtaW4gc3RyaW5nIHR5cGUgaW4gOnJlZjpgdGV4dHNlcWAuCisKKworLi4gdG9jdHJlZTo6CisKKyAgIHN0cmluZy5yc3QKKyAgIHJlLnJzdAorICAgZGlmZmxpYi5yc3QKKyAgIHRleHR3cmFwLnJzdAorICAgdW5pY29kZWRhdGEucnN0CisgICBzdHJpbmdwcmVwLnJzdAorICAgcmVhZGxpbmUucnN0CisgICBybGNvbXBsZXRlci5yc3QKKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGV4dHdyYXAucnN0IGIvRG9jL2xpYnJhcnkvdGV4dHdyYXAucnN0CmluZGV4IDNjMWVjZjYuLmM2MjUyNTQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RleHR3cmFwLnJzdAorKysgYi9Eb2MvbGlicmFyeS90ZXh0d3JhcC5yc3QKQEAgLTEyLDcgKzEyLDcgQEAKIAogVGhlIDptb2Q6YHRleHR3cmFwYCBtb2R1bGUgcHJvdmlkZXMgdHdvIGNvbnZlbmllbmNlIGZ1bmN0aW9ucywgOmZ1bmM6YHdyYXBgIGFuZAogOmZ1bmM6YGZpbGxgLCBhcyB3ZWxsIGFzIDpjbGFzczpgVGV4dFdyYXBwZXJgLCB0aGUgY2xhc3MgdGhhdCBkb2VzIGFsbCB0aGUgd29yaywKLWFuZCBhIHV0aWxpdHkgZnVuY3Rpb24gIDpmdW5jOmBkZWRlbnRgLiAgSWYgeW91J3JlIGp1c3Qgd3JhcHBpbmcgb3IgZmlsbGluZyBvbmUKK2FuZCB0d28gdXRpbGl0eSBmdW5jdGlvbnMsIDpmdW5jOmBkZWRlbnRgIGFuZCA6ZnVuYzpgaW5kZW50YC4gIElmIHlvdSdyZSBqdXN0IHdyYXBwaW5nIG9yIGZpbGxpbmcgb25lCiBvciB0d28gIHRleHQgc3RyaW5ncywgdGhlIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgZ29vZCBlbm91Z2g7CiBvdGhlcndpc2UsICB5b3Ugc2hvdWxkIHVzZSBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YFRleHRXcmFwcGVyYCBmb3IgZWZmaWNpZW5jeS4KIApAQCAtNDgsOSArNDgsMTAgQEAKIGh5cGhlbmF0ZWQgd29yZHM7IG9ubHkgdGhlbiB3aWxsIGxvbmcgd29yZHMgYmUgYnJva2VuIGlmIG5lY2Vzc2FyeSwgdW5sZXNzCiA6YXR0cjpgVGV4dFdyYXBwZXIuYnJlYWtfbG9uZ193b3Jkc2AgaXMgc2V0IHRvIGZhbHNlLgogCi1BbiBhZGRpdGlvbmFsIHV0aWxpdHkgZnVuY3Rpb24sIDpmdW5jOmBkZWRlbnRgLCBpcyBwcm92aWRlZCB0byByZW1vdmUKLWluZGVudGF0aW9uIGZyb20gc3RyaW5ncyB0aGF0IGhhdmUgdW53YW50ZWQgd2hpdGVzcGFjZSB0byB0aGUgbGVmdCBvZiB0aGUgdGV4dC4KLQorVHdvIGFkZGl0aW9uYWwgdXRpbGl0eSBmdW5jdGlvbiwgOmZ1bmM6YGRlZGVudGAgYW5kIDpmdW5jOmBpbmRlbnRgLCBhcmUKK3Byb3ZpZGVkIHRvIHJlbW92ZSBpbmRlbnRhdGlvbiBmcm9tIHN0cmluZ3MgdGhhdCBoYXZlIHVud2FudGVkIHdoaXRlc3BhY2UKK3RvIHRoZSBsZWZ0IG9mIHRoZSB0ZXh0IGFuZCB0byBhZGQgYW4gYXJiaXRyYXJ5IHByZWZpeCB0byBzZWxlY3RlZCBsaW5lcworaW4gYSBibG9jayBvZiB0ZXh0LgogCiAuLiBmdW5jdGlvbjo6IGRlZGVudCh0ZXh0KQogCkBAIC03NSw2ICs3NiwzMiBAQAogICAgICAgICAgIHByaW50KHJlcHIoZGVkZW50KHMpKSkgICMgcHJpbnRzICdoZWxsb1xuICB3b3JsZFxuJwogCiAKKy4uIGZ1bmN0aW9uOjogaW5kZW50KHRleHQsIHByZWZpeCwgcHJlZGljYXRlPU5vbmUpCisKKyAgIEFkZCAqcHJlZml4KiB0byB0aGUgYmVnaW5uaW5nIG9mIHNlbGVjdGVkIGxpbmVzIGluICp0ZXh0Ki4KKworICAgTGluZXMgYXJlIHNlcGFyYXRlZCBieSBjYWxsaW5nIGBgdGV4dC5zcGxpdGxpbmVzKFRydWUpYGAuCisKKyAgIEJ5IGRlZmF1bHQsICpwcmVmaXgqIGlzIGFkZGVkIHRvIGFsbCBsaW5lcyB0aGF0IGRvIG5vdCBjb25zaXN0CisgICBzb2xlbHkgb2Ygd2hpdGVzcGFjZSAoaW5jbHVkaW5nIGFueSBsaW5lIGVuZGluZ3MpLgorCisgICBGb3IgZXhhbXBsZTo6CisKKyAgICAgID4+PiBzID0gJ2hlbGxvXG5cbiBcbndvcmxkJworICAgICAgPj4+IGluZGVudChzLCAnICAnKQorICAgICAgJyAgaGVsbG9cblxuIFxuICB3b3JsZCcKKworICAgVGhlIG9wdGlvbmFsICpwcmVkaWNhdGUqIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgd2hpY2ggbGluZXMKKyAgIGFyZSBpbmRlbnRlZC4gRm9yIGV4YW1wbGUsIGl0IGlzIGVhc3kgdG8gYWRkICpwcmVmaXgqIHRvIGV2ZW4gZW1wdHkKKyAgIGFuZCB3aGl0ZXNwYWNlLW9ubHkgbGluZXM6OgorCisgICAgICA+Pj4gcHJpbnQoaW5kZW50KHMsICcrICcsIGxhbWJkYSBsaW5lOiBUcnVlKSkKKyAgICAgICsgaGVsbG8KKyAgICAgICsKKyAgICAgICsKKyAgICAgICsgd29ybGQKKworCiAuLiBjbGFzczo6IFRleHRXcmFwcGVyKCoqa3dhcmdzKQogCiAgICBUaGUgOmNsYXNzOmBUZXh0V3JhcHBlcmAgY29uc3RydWN0b3IgYWNjZXB0cyBhIG51bWJlciBvZiBvcHRpb25hbCBrZXl3b3JkCkBAIC0xMTAsNiArMTM3LDE1IEBACiAgICAgICBleHBhbmRlZCB0byBzcGFjZXMgdXNpbmcgdGhlIDptZXRoOmBleHBhbmR0YWJzYCBtZXRob2Qgb2YgKnRleHQqLgogCiAKKyAgIC4uIGF0dHJpYnV0ZTo6IHRhYnNpemUKKworICAgICAgKGRlZmF1bHQ6IGBgOGBgKSBJZiA6YXR0cjpgZXhwYW5kX3RhYnNgIGlzIHRydWUsIHRoZW4gYWxsIHRhYiBjaGFyYWN0ZXJzCisgICAgICBpbiAqdGV4dCogd2lsbCBiZSBleHBhbmRlZCB0byB6ZXJvIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlCisgICAgICBjdXJyZW50IGNvbHVtbiBhbmQgdGhlIGdpdmVuIHRhYiBzaXplLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAgICAuLiBhdHRyaWJ1dGU6OiByZXBsYWNlX3doaXRlc3BhY2UKIAogICAgICAgKGRlZmF1bHQ6IGBgVHJ1ZWBgKSBJZiB0cnVlLCBhZnRlciB0YWIgZXhwYW5zaW9uIGJ1dCBiZWZvcmUgd3JhcHBpbmcsCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90aHJlYWRpbmcucnN0IGIvRG9jL2xpYnJhcnkvdGhyZWFkaW5nLnJzdAppbmRleCBlMzBmMGUzLi5mNjk3Y2JiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90aHJlYWRpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RocmVhZGluZy5yc3QKQEAgLTIwLDE5ICsyMCw4IEBACiAgICBtZXRob2RzIGFuZCBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGUgaW4gdGhlIFB5dGhvbiAyLnggc2VyaWVzIGFyZSBzdGlsbAogICAgc3VwcG9ydGVkIGJ5IHRoaXMgbW9kdWxlLgogCi0uLiBpbXBsLWRldGFpbDo6CiAKLSAgIEluIENQeXRob24sIGR1ZSB0byB0aGUgOnRlcm06YEdsb2JhbCBJbnRlcnByZXRlciBMb2NrYCwgb25seSBvbmUgdGhyZWFkCi0gICBjYW4gZXhlY3V0ZSBQeXRob24gY29kZSBhdCBvbmNlIChldmVuIHRob3VnaCBjZXJ0YWluIHBlcmZvcm1hbmNlLW9yaWVudGVkCi0gICBsaWJyYXJpZXMgbWlnaHQgb3ZlcmNvbWUgdGhpcyBsaW1pdGF0aW9uKS4KLSAgIElmIHlvdSB3YW50IHlvdXIgYXBwbGljYXRpb24gdG8gbWFrZSBiZXR0ZXIgdXNlIG9mIHRoZSBjb21wdXRhdGlvbmFsCi0gICByZXNvdXJjZXMgb2YgbXVsdGktY29yZSBtYWNoaW5lcywgeW91IGFyZSBhZHZpc2VkIHRvIHVzZQotICAgOm1vZDpgbXVsdGlwcm9jZXNzaW5nYCBvciA6Y2xhc3M6YGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yYC4KLSAgIEhvd2V2ZXIsIHRocmVhZGluZyBpcyBzdGlsbCBhbiBhcHByb3ByaWF0ZSBtb2RlbCBpZiB5b3Ugd2FudCB0byBydW4KLSAgIG11bHRpcGxlIEkvTy1ib3VuZCB0YXNrcyBzaW11bHRhbmVvdXNseS4KLQotCi1UaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFuZCBvYmplY3RzOgorVGhpcyBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKIAogCiAuLiBmdW5jdGlvbjo6IGFjdGl2ZV9jb3VudCgpCkBAIC00MSwxNiArMzAsNiBAQAogICAgY291bnQgaXMgZXF1YWwgdG8gdGhlIGxlbmd0aCBvZiB0aGUgbGlzdCByZXR1cm5lZCBieSA6ZnVuYzpgLmVudW1lcmF0ZWAuCiAKIAotLi4gZnVuY3Rpb246OiBDb25kaXRpb24oKQotICAgOm5vaW5kZXg6Ci0KLSAgIEEgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBuZXcgY29uZGl0aW9uIHZhcmlhYmxlIG9iamVjdC4gQSBjb25kaXRpb24KLSAgIHZhcmlhYmxlIGFsbG93cyBvbmUgb3IgbW9yZSB0aHJlYWRzIHRvIHdhaXQgdW50aWwgdGhleSBhcmUgbm90aWZpZWQgYnkgYW5vdGhlcgotICAgdGhyZWFkLgotCi0gICBTZWUgOnJlZjpgY29uZGl0aW9uLW9iamVjdHNgLgotCi0KIC4uIGZ1bmN0aW9uOjogY3VycmVudF90aHJlYWQoKQogCiAgICBSZXR1cm4gdGhlIGN1cnJlbnQgOmNsYXNzOmBUaHJlYWRgIG9iamVjdCwgY29ycmVzcG9uZGluZyB0byB0aGUgY2FsbGVyJ3MgdGhyZWFkCkBAIC01OSw2ICszOCwxNyBAQAogICAgcmV0dXJuZWQuCiAKIAorLi4gZnVuY3Rpb246OiBnZXRfaWRlbnQoKQorCisgICBSZXR1cm4gdGhlICd0aHJlYWQgaWRlbnRpZmllcicgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLiAgVGhpcyBpcyBhIG5vbnplcm8KKyAgIGludGVnZXIuICBJdHMgdmFsdWUgaGFzIG5vIGRpcmVjdCBtZWFuaW5nOyBpdCBpcyBpbnRlbmRlZCBhcyBhIG1hZ2ljIGNvb2tpZQorICAgdG8gYmUgdXNlZCBlLmcuIHRvIGluZGV4IGEgZGljdGlvbmFyeSBvZiB0aHJlYWQtc3BlY2lmaWMgZGF0YS4gIFRocmVhZAorICAgaWRlbnRpZmllcnMgbWF5IGJlIHJlY3ljbGVkIHdoZW4gYSB0aHJlYWQgZXhpdHMgYW5kIGFub3RoZXIgdGhyZWFkIGlzCisgICBjcmVhdGVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBmdW5jdGlvbjo6IGVudW1lcmF0ZSgpCiAKICAgIFJldHVybiBhIGxpc3Qgb2YgYWxsIDpjbGFzczpgVGhyZWFkYCBvYmplY3RzIGN1cnJlbnRseSBhbGl2ZS4gIFRoZSBsaXN0CkBAIC02Nyw4OSArNTcsNiBAQAogICAgYW5kIHRocmVhZHMgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiBzdGFydGVkLgogCiAKLS4uIGZ1bmN0aW9uOjogRXZlbnQoKQotICAgOm5vaW5kZXg6Ci0KLSAgIEEgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBuZXcgZXZlbnQgb2JqZWN0LiAgQW4gZXZlbnQgbWFuYWdlcyBhIGZsYWcKLSAgIHRoYXQgY2FuIGJlIHNldCB0byB0cnVlIHdpdGggdGhlIDptZXRoOmB+RXZlbnQuc2V0YCBtZXRob2QgYW5kIHJlc2V0IHRvIGZhbHNlCi0gICB3aXRoIHRoZSA6bWV0aDpgY2xlYXJgIG1ldGhvZC4gIFRoZSA6bWV0aDpgd2FpdGAgbWV0aG9kIGJsb2NrcyB1bnRpbCB0aGUgZmxhZwotICAgaXMgdHJ1ZS4KLQotICAgU2VlIDpyZWY6YGV2ZW50LW9iamVjdHNgLgotCi0KLS4uIGNsYXNzOjogbG9jYWwKLQotICAgQSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgdGhyZWFkLWxvY2FsIGRhdGEuICBUaHJlYWQtbG9jYWwgZGF0YSBhcmUgZGF0YSB3aG9zZQotICAgdmFsdWVzIGFyZSB0aHJlYWQgc3BlY2lmaWMuICBUbyBtYW5hZ2UgdGhyZWFkLWxvY2FsIGRhdGEsIGp1c3QgY3JlYXRlIGFuCi0gICBpbnN0YW5jZSBvZiA6Y2xhc3M6YGxvY2FsYCAob3IgYSBzdWJjbGFzcykgYW5kIHN0b3JlIGF0dHJpYnV0ZXMgb24gaXQ6OgotCi0gICAgICBteWRhdGEgPSB0aHJlYWRpbmcubG9jYWwoKQotICAgICAgbXlkYXRhLnggPSAxCi0KLSAgIFRoZSBpbnN0YW5jZSdzIHZhbHVlcyB3aWxsIGJlIGRpZmZlcmVudCBmb3Igc2VwYXJhdGUgdGhyZWFkcy4KLQotICAgRm9yIG1vcmUgZGV0YWlscyBhbmQgZXh0ZW5zaXZlIGV4YW1wbGVzLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIG9mIHRoZQotICAgOm1vZDpgX3RocmVhZGluZ19sb2NhbGAgbW9kdWxlLgotCi0KLS4uIGZ1bmN0aW9uOjogTG9jaygpCi0KLSAgIEEgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBuZXcgcHJpbWl0aXZlIGxvY2sgb2JqZWN0LiAgT25jZSBhIHRocmVhZCBoYXMKLSAgIGFjcXVpcmVkIGl0LCBzdWJzZXF1ZW50IGF0dGVtcHRzIHRvIGFjcXVpcmUgaXQgYmxvY2ssIHVudGlsIGl0IGlzIHJlbGVhc2VkOyBhbnkKLSAgIHRocmVhZCBtYXkgcmVsZWFzZSBpdC4KLQotICAgU2VlIDpyZWY6YGxvY2stb2JqZWN0c2AuCi0KLQotLi4gZnVuY3Rpb246OiBSTG9jaygpCi0KLSAgIEEgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBuZXcgcmVlbnRyYW50IGxvY2sgb2JqZWN0LiBBIHJlZW50cmFudCBsb2NrCi0gICBtdXN0IGJlIHJlbGVhc2VkIGJ5IHRoZSB0aHJlYWQgdGhhdCBhY3F1aXJlZCBpdC4gT25jZSBhIHRocmVhZCBoYXMgYWNxdWlyZWQgYQotICAgcmVlbnRyYW50IGxvY2ssIHRoZSBzYW1lIHRocmVhZCBtYXkgYWNxdWlyZSBpdCBhZ2FpbiB3aXRob3V0IGJsb2NraW5nOyB0aGUKLSAgIHRocmVhZCBtdXN0IHJlbGVhc2UgaXQgb25jZSBmb3IgZWFjaCB0aW1lIGl0IGhhcyBhY3F1aXJlZCBpdC4KLQotICAgU2VlIDpyZWY6YHJsb2NrLW9iamVjdHNgLgotCi0KLS4uIGZ1bmN0aW9uOjogU2VtYXBob3JlKHZhbHVlPTEpCi0gICA6bm9pbmRleDoKLQotICAgQSBmYWN0b3J5IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG5ldyBzZW1hcGhvcmUgb2JqZWN0LiAgQSBzZW1hcGhvcmUgbWFuYWdlcyBhCi0gICBjb3VudGVyIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIDptZXRoOmByZWxlYXNlYCBjYWxscyBtaW51cyB0aGUgbnVtYmVyIG9mCi0gICA6bWV0aDpgYWNxdWlyZWAgY2FsbHMsIHBsdXMgYW4gaW5pdGlhbCB2YWx1ZS4gVGhlIDptZXRoOmBhY3F1aXJlYCBtZXRob2QgYmxvY2tzCi0gICBpZiBuZWNlc3NhcnkgdW50aWwgaXQgY2FuIHJldHVybiB3aXRob3V0IG1ha2luZyB0aGUgY291bnRlciBuZWdhdGl2ZS4gIElmIG5vdAotICAgZ2l2ZW4sICp2YWx1ZSogZGVmYXVsdHMgdG8gMS4KLQotICAgU2VlIDpyZWY6YHNlbWFwaG9yZS1vYmplY3RzYC4KLQotCi0uLiBmdW5jdGlvbjo6IEJvdW5kZWRTZW1hcGhvcmUodmFsdWU9MSkKLQotICAgQSBmYWN0b3J5IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG5ldyBib3VuZGVkIHNlbWFwaG9yZSBvYmplY3QuICBBIGJvdW5kZWQKLSAgIHNlbWFwaG9yZSBjaGVja3MgdG8gbWFrZSBzdXJlIGl0cyBjdXJyZW50IHZhbHVlIGRvZXNuJ3QgZXhjZWVkIGl0cyBpbml0aWFsCi0gICB2YWx1ZS4gIElmIGl0IGRvZXMsIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4gSW4gbW9zdCBzaXR1YXRpb25zIHNlbWFwaG9yZXMKLSAgIGFyZSB1c2VkIHRvIGd1YXJkIHJlc291cmNlcyB3aXRoIGxpbWl0ZWQgY2FwYWNpdHkuICBJZiB0aGUgc2VtYXBob3JlIGlzIHJlbGVhc2VkCi0gICB0b28gbWFueSB0aW1lcyBpdCdzIGEgc2lnbiBvZiBhIGJ1Zy4gIElmIG5vdCBnaXZlbiwgKnZhbHVlKiBkZWZhdWx0cyB0byAxLgotCi0KLS4uIGNsYXNzOjogVGhyZWFkCi0gICA6bm9pbmRleDoKLQotICAgQSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgYSB0aHJlYWQgb2YgY29udHJvbC4gIFRoaXMgY2xhc3MgY2FuIGJlIHNhZmVseQotICAgc3ViY2xhc3NlZCBpbiBhIGxpbWl0ZWQgZmFzaGlvbi4KLQotICAgU2VlIDpyZWY6YHRocmVhZC1vYmplY3RzYC4KLQotCi0uLiBjbGFzczo6IFRpbWVyCi0gICA6bm9pbmRleDoKLQotICAgQSB0aHJlYWQgdGhhdCBleGVjdXRlcyBhIGZ1bmN0aW9uIGFmdGVyIGEgc3BlY2lmaWVkIGludGVydmFsIGhhcyBwYXNzZWQuCi0KLSAgIFNlZSA6cmVmOmB0aW1lci1vYmplY3RzYC4KLQotCiAuLiBmdW5jdGlvbjo6IHNldHRyYWNlKGZ1bmMpCiAKICAgIC4uIGluZGV4Ojogc2luZ2xlOiB0cmFjZSBmdW5jdGlvbgpAQCAtMTczLDE1ICs4MCwxNSBAQAogICAgUmV0dXJuIHRoZSB0aHJlYWQgc3RhY2sgc2l6ZSB1c2VkIHdoZW4gY3JlYXRpbmcgbmV3IHRocmVhZHMuICBUaGUgb3B0aW9uYWwKICAgICpzaXplKiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIHN0YWNrIHNpemUgdG8gYmUgdXNlZCBmb3Igc3Vic2VxdWVudGx5IGNyZWF0ZWQKICAgIHRocmVhZHMsIGFuZCBtdXN0IGJlIDAgKHVzZSBwbGF0Zm9ybSBvciBjb25maWd1cmVkIGRlZmF1bHQpIG9yIGEgcG9zaXRpdmUKLSAgIGludGVnZXIgdmFsdWUgb2YgYXQgbGVhc3QgMzIsNzY4ICgzMmtCKS4gSWYgY2hhbmdpbmcgdGhlIHRocmVhZCBzdGFjayBzaXplIGlzCi0gICB1bnN1cHBvcnRlZCwgYSA6ZXhjOmBUaHJlYWRFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIHNwZWNpZmllZCBzdGFjayBzaXplIGlzCi0gICBpbnZhbGlkLCBhIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBhbmQgdGhlIHN0YWNrIHNpemUgaXMgdW5tb2RpZmllZC4gIDMya0IKKyAgIGludGVnZXIgdmFsdWUgb2YgYXQgbGVhc3QgMzIsNzY4ICgzMiBLaUIpLiBJZiBjaGFuZ2luZyB0aGUgdGhyZWFkIHN0YWNrIHNpemUgaXMKKyAgIHVuc3VwcG9ydGVkLCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIHNwZWNpZmllZCBzdGFjayBzaXplIGlzCisgICBpbnZhbGlkLCBhIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBhbmQgdGhlIHN0YWNrIHNpemUgaXMgdW5tb2RpZmllZC4gIDMyIEtpQgogICAgaXMgY3VycmVudGx5IHRoZSBtaW5pbXVtIHN1cHBvcnRlZCBzdGFjayBzaXplIHZhbHVlIHRvIGd1YXJhbnRlZSBzdWZmaWNpZW50CiAgICBzdGFjayBzcGFjZSBmb3IgdGhlIGludGVycHJldGVyIGl0c2VsZi4gIE5vdGUgdGhhdCBzb21lIHBsYXRmb3JtcyBtYXkgaGF2ZQogICAgcGFydGljdWxhciByZXN0cmljdGlvbnMgb24gdmFsdWVzIGZvciB0aGUgc3RhY2sgc2l6ZSwgc3VjaCBhcyByZXF1aXJpbmcgYQotICAgbWluaW11bSBzdGFjayBzaXplID4gMzJrQiBvciByZXF1aXJpbmcgYWxsb2NhdGlvbiBpbiBtdWx0aXBsZXMgb2YgdGhlIHN5c3RlbQorICAgbWluaW11bSBzdGFjayBzaXplID4gMzIgS2lCIG9yIHJlcXVpcmluZyBhbGxvY2F0aW9uIGluIG11bHRpcGxlcyBvZiB0aGUgc3lzdGVtCiAgICBtZW1vcnkgcGFnZSBzaXplIC0gcGxhdGZvcm0gZG9jdW1lbnRhdGlvbiBzaG91bGQgYmUgcmVmZXJyZWQgdG8gZm9yIG1vcmUKLSAgIGluZm9ybWF0aW9uICg0a0IgcGFnZXMgYXJlIGNvbW1vbjsgdXNpbmcgbXVsdGlwbGVzIG9mIDQwOTYgZm9yIHRoZSBzdGFjayBzaXplIGlzCisgICBpbmZvcm1hdGlvbiAoNCBLaUIgcGFnZXMgYXJlIGNvbW1vbjsgdXNpbmcgbXVsdGlwbGVzIG9mIDQwOTYgZm9yIHRoZSBzdGFjayBzaXplIGlzCiAgICB0aGUgc3VnZ2VzdGVkIGFwcHJvYWNoIGluIHRoZSBhYnNlbmNlIG9mIG1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24pLgogICAgQXZhaWxhYmlsaXR5OiBXaW5kb3dzLCBzeXN0ZW1zIHdpdGggUE9TSVggdGhyZWFkcy4KIApAQCAtMTk4LDcgKzEwNSw4IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCi1EZXRhaWxlZCBpbnRlcmZhY2VzIGZvciB0aGUgb2JqZWN0cyBhcmUgZG9jdW1lbnRlZCBiZWxvdy4KK1RoaXMgbW9kdWxlIGRlZmluZXMgYSBudW1iZXIgb2YgY2xhc3Nlcywgd2hpY2ggYXJlIGRldGFpbGVkIGluIHRoZSBzZWN0aW9ucworYmVsb3cuCiAKIFRoZSBkZXNpZ24gb2YgdGhpcyBtb2R1bGUgaXMgbG9vc2VseSBiYXNlZCBvbiBKYXZhJ3MgdGhyZWFkaW5nIG1vZGVsLiBIb3dldmVyLAogd2hlcmUgSmF2YSBtYWtlcyBsb2NrcyBhbmQgY29uZGl0aW9uIHZhcmlhYmxlcyBiYXNpYyBiZWhhdmlvciBvZiBldmVyeSBvYmplY3QsCkBAIC0yMTEsMTcgKzExOSwzOCBAQAogQWxsIG9mIHRoZSBtZXRob2RzIGRlc2NyaWJlZCBiZWxvdyBhcmUgZXhlY3V0ZWQgYXRvbWljYWxseS4KIAogCitUaHJlYWQtTG9jYWwgRGF0YQorLS0tLS0tLS0tLS0tLS0tLS0KKworVGhyZWFkLWxvY2FsIGRhdGEgaXMgZGF0YSB3aG9zZSB2YWx1ZXMgYXJlIHRocmVhZCBzcGVjaWZpYy4gIFRvIG1hbmFnZQordGhyZWFkLWxvY2FsIGRhdGEsIGp1c3QgY3JlYXRlIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgbG9jYWxgIChvciBhCitzdWJjbGFzcykgYW5kIHN0b3JlIGF0dHJpYnV0ZXMgb24gaXQ6OgorCisgIG15ZGF0YSA9IHRocmVhZGluZy5sb2NhbCgpCisgIG15ZGF0YS54ID0gMQorCitUaGUgaW5zdGFuY2UncyB2YWx1ZXMgd2lsbCBiZSBkaWZmZXJlbnQgZm9yIHNlcGFyYXRlIHRocmVhZHMuCisKKworLi4gY2xhc3M6OiBsb2NhbCgpCisKKyAgIEEgY2xhc3MgdGhhdCByZXByZXNlbnRzIHRocmVhZC1sb2NhbCBkYXRhLgorCisgICBGb3IgbW9yZSBkZXRhaWxzIGFuZCBleHRlbnNpdmUgZXhhbXBsZXMsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBzdHJpbmcgb2YgdGhlCisgICA6bW9kOmBfdGhyZWFkaW5nX2xvY2FsYCBtb2R1bGUuCisKKwogLi4gX3RocmVhZC1vYmplY3RzOgogCiBUaHJlYWQgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0KIAotVGhpcyBjbGFzcyByZXByZXNlbnRzIGFuIGFjdGl2aXR5IHRoYXQgaXMgcnVuIGluIGEgc2VwYXJhdGUgdGhyZWFkIG9mIGNvbnRyb2wuCi1UaGVyZSBhcmUgdHdvIHdheXMgdG8gc3BlY2lmeSB0aGUgYWN0aXZpdHk6IGJ5IHBhc3NpbmcgYSBjYWxsYWJsZSBvYmplY3QgdG8gdGhlCi1jb25zdHJ1Y3Rvciwgb3IgYnkgb3ZlcnJpZGluZyB0aGUgOm1ldGg6YH5UaHJlYWQucnVuYCBtZXRob2QgaW4gYSBzdWJjbGFzcy4KLU5vIG90aGVyIG1ldGhvZHMgKGV4Y2VwdCBmb3IgdGhlIGNvbnN0cnVjdG9yKSBzaG91bGQgYmUgb3ZlcnJpZGRlbiBpbiBhCi1zdWJjbGFzcy4gIEluIG90aGVyIHdvcmRzLCAgKm9ubHkqICBvdmVycmlkZSB0aGUgOm1ldGg6YH5UaHJlYWQuX19pbml0X19gCi1hbmQgOm1ldGg6YH5UaHJlYWQucnVuYCBtZXRob2RzIG9mIHRoaXMgY2xhc3MuCitUaGUgOmNsYXNzOmBUaHJlYWRgIGNsYXNzIHJlcHJlc2VudHMgYW4gYWN0aXZpdHkgdGhhdCBpcyBydW4gaW4gYSBzZXBhcmF0ZQordGhyZWFkIG9mIGNvbnRyb2wuICBUaGVyZSBhcmUgdHdvIHdheXMgdG8gc3BlY2lmeSB0aGUgYWN0aXZpdHk6IGJ5IHBhc3NpbmcgYQorY2FsbGFibGUgb2JqZWN0IHRvIHRoZSBjb25zdHJ1Y3Rvciwgb3IgYnkgb3ZlcnJpZGluZyB0aGUgOm1ldGg6YH5UaHJlYWQucnVuYAorbWV0aG9kIGluIGEgc3ViY2xhc3MuICBObyBvdGhlciBtZXRob2RzIChleGNlcHQgZm9yIHRoZSBjb25zdHJ1Y3Rvcikgc2hvdWxkIGJlCitvdmVycmlkZGVuIGluIGEgc3ViY2xhc3MuICBJbiBvdGhlciB3b3JkcywgKm9ubHkqICBvdmVycmlkZSB0aGUKKzptZXRoOmB+VGhyZWFkLl9faW5pdF9fYCBhbmQgOm1ldGg6YH5UaHJlYWQucnVuYCBtZXRob2RzIG9mIHRoaXMgY2xhc3MuCiAKIE9uY2UgYSB0aHJlYWQgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0cyBhY3Rpdml0eSBtdXN0IGJlIHN0YXJ0ZWQgYnkgY2FsbGluZyB0aGUKIHRocmVhZCdzIDptZXRoOmB+VGhyZWFkLnN0YXJ0YCBtZXRob2QuICBUaGlzIGludm9rZXMgdGhlIDptZXRoOmB+VGhyZWFkLnJ1bmAKQEAgLTIzOSwxMCArMTY4LDExIEBACiBBIHRocmVhZCBoYXMgYSBuYW1lLiAgVGhlIG5hbWUgY2FuIGJlIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IsIGFuZCByZWFkIG9yCiBjaGFuZ2VkIHRocm91Z2ggdGhlIDphdHRyOmB+VGhyZWFkLm5hbWVgIGF0dHJpYnV0ZS4KIAotQSB0aHJlYWQgY2FuIGJlIGZsYWdnZWQgYXMgYSAiZGFlbW9uIHRocmVhZCIuICBUaGUgc2lnbmlmaWNhbmNlIG9mIHRoaXMgZmxhZwotaXMgdGhhdCB0aGUgZW50aXJlIFB5dGhvbiBwcm9ncmFtIGV4aXRzIHdoZW4gb25seSBkYWVtb24gdGhyZWFkcyBhcmUgbGVmdC4KLVRoZSBpbml0aWFsIHZhbHVlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBjcmVhdGluZyB0aHJlYWQuICBUaGUgZmxhZyBjYW4gYmUKLXNldCB0aHJvdWdoIHRoZSA6YXR0cjpgflRocmVhZC5kYWVtb25gIHByb3BlcnR5LgorQSB0aHJlYWQgY2FuIGJlIGZsYWdnZWQgYXMgYSAiZGFlbW9uIHRocmVhZCIuICBUaGUgc2lnbmlmaWNhbmNlIG9mIHRoaXMgZmxhZyBpcwordGhhdCB0aGUgZW50aXJlIFB5dGhvbiBwcm9ncmFtIGV4aXRzIHdoZW4gb25seSBkYWVtb24gdGhyZWFkcyBhcmUgbGVmdC4gIFRoZQoraW5pdGlhbCB2YWx1ZSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgY3JlYXRpbmcgdGhyZWFkLiAgVGhlIGZsYWcgY2FuIGJlIHNldAordGhyb3VnaCB0aGUgOmF0dHI6YH5UaHJlYWQuZGFlbW9uYCBwcm9wZXJ0eSBvciB0aGUgKmRhZW1vbiogY29uc3RydWN0b3IKK2FyZ3VtZW50LgogCiAuLiBub3RlOjoKICAgIERhZW1vbiB0aHJlYWRzIGFyZSBhYnJ1cHRseSBzdG9wcGVkIGF0IHNodXRkb3duLiAgVGhlaXIgcmVzb3VyY2VzIChzdWNoCkBAIC0yNjEsNyArMTkxLDggQEAKIHNpbmNlIGl0IGlzIGltcG9zc2libGUgdG8gZGV0ZWN0IHRoZSB0ZXJtaW5hdGlvbiBvZiBhbGllbiB0aHJlYWRzLgogCiAKLS4uIGNsYXNzOjogVGhyZWFkKGdyb3VwPU5vbmUsIHRhcmdldD1Ob25lLCBuYW1lPU5vbmUsIGFyZ3M9KCksIGt3YXJncz17fSkKKy4uIGNsYXNzOjogVGhyZWFkKGdyb3VwPU5vbmUsIHRhcmdldD1Ob25lLCBuYW1lPU5vbmUsIGFyZ3M9KCksIGt3YXJncz17fSwgKiwgXAorICAgICAgICAgICAgICAgICAgZGFlbW9uPU5vbmUpCiAKICAgIFRoaXMgY29uc3RydWN0b3Igc2hvdWxkIGFsd2F5cyBiZSBjYWxsZWQgd2l0aCBrZXl3b3JkIGFyZ3VtZW50cy4gIEFyZ3VtZW50cwogICAgYXJlOgpAQCAtMjgwLDEwICsyMTEsMTcgQEAKICAgICprd2FyZ3MqIGlzIGEgZGljdGlvbmFyeSBvZiBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgdGhlIHRhcmdldCBpbnZvY2F0aW9uLgogICAgRGVmYXVsdHMgdG8gYGB7fWBgLgogCisgICBJZiBub3QgYGBOb25lYGAsICpkYWVtb24qIGV4cGxpY2l0bHkgc2V0cyB3aGV0aGVyIHRoZSB0aHJlYWQgaXMgZGFlbW9uaWMuCisgICBJZiBgYE5vbmVgYCAodGhlIGRlZmF1bHQpLCB0aGUgZGFlbW9uaWMgcHJvcGVydHkgaXMgaW5oZXJpdGVkIGZyb20gdGhlCisgICBjdXJyZW50IHRocmVhZC4KKwogICAgSWYgdGhlIHN1YmNsYXNzIG92ZXJyaWRlcyB0aGUgY29uc3RydWN0b3IsIGl0IG11c3QgbWFrZSBzdXJlIHRvIGludm9rZSB0aGUKICAgIGJhc2UgY2xhc3MgY29uc3RydWN0b3IgKGBgVGhyZWFkLl9faW5pdF9fKClgYCkgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UgdG8KICAgIHRoZSB0aHJlYWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKmRhZW1vbiogYXJndW1lbnQuCisKICAgIC4uIG1ldGhvZDo6IHN0YXJ0KCkKIAogICAgICAgU3RhcnQgdGhlIHRocmVhZCdzIGFjdGl2aXR5LgpAQCAtMzc0LDYgKzMxMiwxOCBAQAogICAgICAgcHJvcGVydHkgaW5zdGVhZC4KIAogCisuLiBpbXBsLWRldGFpbDo6CisKKyAgIEluIENQeXRob24sIGR1ZSB0byB0aGUgOnRlcm06YEdsb2JhbCBJbnRlcnByZXRlciBMb2NrYCwgb25seSBvbmUgdGhyZWFkCisgICBjYW4gZXhlY3V0ZSBQeXRob24gY29kZSBhdCBvbmNlIChldmVuIHRob3VnaCBjZXJ0YWluIHBlcmZvcm1hbmNlLW9yaWVudGVkCisgICBsaWJyYXJpZXMgbWlnaHQgb3ZlcmNvbWUgdGhpcyBsaW1pdGF0aW9uKS4KKyAgIElmIHlvdSB3YW50IHlvdXIgYXBwbGljYXRpb24gdG8gbWFrZSBiZXR0ZXIgdXNlIG9mIHRoZSBjb21wdXRhdGlvbmFsCisgICByZXNvdXJjZXMgb2YgbXVsdGktY29yZSBtYWNoaW5lcywgeW91IGFyZSBhZHZpc2VkIHRvIHVzZQorICAgOm1vZDpgbXVsdGlwcm9jZXNzaW5nYCBvciA6Y2xhc3M6YGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yYC4KKyAgIEhvd2V2ZXIsIHRocmVhZGluZyBpcyBzdGlsbCBhbiBhcHByb3ByaWF0ZSBtb2RlbCBpZiB5b3Ugd2FudCB0byBydW4KKyAgIG11bHRpcGxlIEkvTy1ib3VuZCB0YXNrcyBzaW11bHRhbmVvdXNseS4KKworCiAuLiBfbG9jay1vYmplY3RzOgogCiBMb2NrIE9iamVjdHMKQEAgLTQwNSw0NSArMzU1LDU1IEBACiBBbGwgbWV0aG9kcyBhcmUgZXhlY3V0ZWQgYXRvbWljYWxseS4KIAogCi0uLiBtZXRob2Q6OiBMb2NrLmFjcXVpcmUoYmxvY2tpbmc9VHJ1ZSwgdGltZW91dD0tMSkKKy4uIGNsYXNzOjogTG9jaygpCiAKLSAgIEFjcXVpcmUgYSBsb2NrLCBibG9ja2luZyBvciBub24tYmxvY2tpbmcuCisgICBUaGUgY2xhc3MgaW1wbGVtZW50aW5nIHByaW1pdGl2ZSBsb2NrIG9iamVjdHMuICBPbmNlIGEgdGhyZWFkIGhhcyBhY3F1aXJlZCBhCisgICBsb2NrLCBzdWJzZXF1ZW50IGF0dGVtcHRzIHRvIGFjcXVpcmUgaXQgYmxvY2ssIHVudGlsIGl0IGlzIHJlbGVhc2VkOyBhbnkKKyAgIHRocmVhZCBtYXkgcmVsZWFzZSBpdC4KIAotICAgV2hlbiBpbnZva2VkIHdpdGggdGhlICpibG9ja2luZyogYXJndW1lbnQgc2V0IHRvIGBgVHJ1ZWBgICh0aGUgZGVmYXVsdCksCi0gICBibG9jayB1bnRpbCB0aGUgbG9jayBpcyB1bmxvY2tlZCwgdGhlbiBzZXQgaXQgdG8gbG9ja2VkIGFuZCByZXR1cm4gYGBUcnVlYGAuCi0KLSAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSAqYmxvY2tpbmcqIGFyZ3VtZW50IHNldCB0byBgYEZhbHNlYGAsIGRvIG5vdCBibG9jay4KLSAgIElmIGEgY2FsbCB3aXRoICpibG9ja2luZyogc2V0IHRvIGBgVHJ1ZWBgIHdvdWxkIGJsb2NrLCByZXR1cm4gYGBGYWxzZWBgCi0gICBpbW1lZGlhdGVseTsgb3RoZXJ3aXNlLCBzZXQgdGhlIGxvY2sgdG8gbG9ja2VkIGFuZCByZXR1cm4gYGBUcnVlYGAuCi0KLSAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSBmbG9hdGluZy1wb2ludCAqdGltZW91dCogYXJndW1lbnQgc2V0IHRvIGEgcG9zaXRpdmUKLSAgIHZhbHVlLCBibG9jayBmb3IgYXQgbW9zdCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgc3BlY2lmaWVkIGJ5ICp0aW1lb3V0KgotICAgYW5kIGFzIGxvbmcgYXMgdGhlIGxvY2sgY2Fubm90IGJlIGFjcXVpcmVkLiAgQSBuZWdhdGl2ZSAqdGltZW91dCogYXJndW1lbnQKLSAgIHNwZWNpZmllcyBhbiB1bmJvdW5kZWQgd2FpdC4gIEl0IGlzIGZvcmJpZGRlbiB0byBzcGVjaWZ5IGEgKnRpbWVvdXQqCi0gICB3aGVuICpibG9ja2luZyogaXMgZmFsc2UuCi0KLSAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYGBUcnVlYGAgaWYgdGhlIGxvY2sgaXMgYWNxdWlyZWQgc3VjY2Vzc2Z1bGx5LAotICAgYGBGYWxzZWBgIGlmIG5vdCAoZm9yIGV4YW1wbGUgaWYgdGhlICp0aW1lb3V0KiBleHBpcmVkKS4KLQotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgIFRoZSAqdGltZW91dCogcGFyYW1ldGVyIGlzIG5ldy4KLQotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgIExvY2sgYWNxdWlyZXMgY2FuIG5vdyBiZSBpbnRlcnJ1cHRlZCBieSBzaWduYWxzIG9uIFBPU0lYLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIENoYW5nZWQgZnJvbSBhIGZhY3RvcnkgZnVuY3Rpb24gdG8gYSBjbGFzcy4KIAogCi0uLiBtZXRob2Q6OiBMb2NrLnJlbGVhc2UoKQorICAgLi4gbWV0aG9kOjogYWNxdWlyZShibG9ja2luZz1UcnVlLCB0aW1lb3V0PS0xKQogCi0gICBSZWxlYXNlIGEgbG9jay4gIFRoaXMgY2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQsIG5vdCBvbmx5IHRoZSB0aHJlYWQKLSAgIHdoaWNoIGhhcyBhY3F1aXJlZCB0aGUgbG9jay4KKyAgICAgIEFjcXVpcmUgYSBsb2NrLCBibG9ja2luZyBvciBub24tYmxvY2tpbmcuCiAKLSAgIFdoZW4gdGhlIGxvY2sgaXMgbG9ja2VkLCByZXNldCBpdCB0byB1bmxvY2tlZCwgYW5kIHJldHVybi4gIElmIGFueSBvdGhlciB0aHJlYWRzCi0gICBhcmUgYmxvY2tlZCB3YWl0aW5nIGZvciB0aGUgbG9jayB0byBiZWNvbWUgdW5sb2NrZWQsIGFsbG93IGV4YWN0bHkgb25lIG9mIHRoZW0KLSAgIHRvIHByb2NlZWQuCisgICAgICBXaGVuIGludm9rZWQgd2l0aCB0aGUgKmJsb2NraW5nKiBhcmd1bWVudCBzZXQgdG8gYGBUcnVlYGAgKHRoZSBkZWZhdWx0KSwKKyAgICAgIGJsb2NrIHVudGlsIHRoZSBsb2NrIGlzIHVubG9ja2VkLCB0aGVuIHNldCBpdCB0byBsb2NrZWQgYW5kIHJldHVybiBgYFRydWVgYC4KIAotICAgV2hlbiBpbnZva2VkIG9uIGFuIHVubG9ja2VkIGxvY2ssIGEgOmV4YzpgVGhyZWFkRXJyb3JgIGlzIHJhaXNlZC4KKyAgICAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSAqYmxvY2tpbmcqIGFyZ3VtZW50IHNldCB0byBgYEZhbHNlYGAsIGRvIG5vdCBibG9jay4KKyAgICAgIElmIGEgY2FsbCB3aXRoICpibG9ja2luZyogc2V0IHRvIGBgVHJ1ZWBgIHdvdWxkIGJsb2NrLCByZXR1cm4gYGBGYWxzZWBgCisgICAgICBpbW1lZGlhdGVseTsgb3RoZXJ3aXNlLCBzZXQgdGhlIGxvY2sgdG8gbG9ja2VkIGFuZCByZXR1cm4gYGBUcnVlYGAuCiAKLSAgIFRoZXJlIGlzIG5vIHJldHVybiB2YWx1ZS4KKyAgICAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSBmbG9hdGluZy1wb2ludCAqdGltZW91dCogYXJndW1lbnQgc2V0IHRvIGEgcG9zaXRpdmUKKyAgICAgIHZhbHVlLCBibG9jayBmb3IgYXQgbW9zdCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgc3BlY2lmaWVkIGJ5ICp0aW1lb3V0KgorICAgICAgYW5kIGFzIGxvbmcgYXMgdGhlIGxvY2sgY2Fubm90IGJlIGFjcXVpcmVkLiAgQSBuZWdhdGl2ZSAqdGltZW91dCogYXJndW1lbnQKKyAgICAgIHNwZWNpZmllcyBhbiB1bmJvdW5kZWQgd2FpdC4gIEl0IGlzIGZvcmJpZGRlbiB0byBzcGVjaWZ5IGEgKnRpbWVvdXQqCisgICAgICB3aGVuICpibG9ja2luZyogaXMgZmFsc2UuCisKKyAgICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYGBUcnVlYGAgaWYgdGhlIGxvY2sgaXMgYWNxdWlyZWQgc3VjY2Vzc2Z1bGx5LAorICAgICAgYGBGYWxzZWBgIGlmIG5vdCAoZm9yIGV4YW1wbGUgaWYgdGhlICp0aW1lb3V0KiBleHBpcmVkKS4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgICAgIFRoZSAqdGltZW91dCogcGFyYW1ldGVyIGlzIG5ldy4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgICAgIExvY2sgYWNxdWlyZXMgY2FuIG5vdyBiZSBpbnRlcnJ1cHRlZCBieSBzaWduYWxzIG9uIFBPU0lYLgorCisKKyAgIC4uIG1ldGhvZDo6IHJlbGVhc2UoKQorCisgICAgICBSZWxlYXNlIGEgbG9jay4gIFRoaXMgY2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQsIG5vdCBvbmx5IHRoZSB0aHJlYWQKKyAgICAgIHdoaWNoIGhhcyBhY3F1aXJlZCB0aGUgbG9jay4KKworICAgICAgV2hlbiB0aGUgbG9jayBpcyBsb2NrZWQsIHJlc2V0IGl0IHRvIHVubG9ja2VkLCBhbmQgcmV0dXJuLiAgSWYgYW55IG90aGVyIHRocmVhZHMKKyAgICAgIGFyZSBibG9ja2VkIHdhaXRpbmcgZm9yIHRoZSBsb2NrIHRvIGJlY29tZSB1bmxvY2tlZCwgYWxsb3cgZXhhY3RseSBvbmUgb2YgdGhlbQorICAgICAgdG8gcHJvY2VlZC4KKworICAgICAgV2hlbiBpbnZva2VkIG9uIGFuIHVubG9ja2VkIGxvY2ssIGEgOmV4YzpgUnVudGltZUVycm9yYCBpcyByYWlzZWQuCisKKyAgICAgIFRoZXJlIGlzIG5vIHJldHVybiB2YWx1ZS4KIAogCiAuLiBfcmxvY2stb2JqZWN0czoKQEAgLTQ2Nyw0NyArNDI3LDU5IEBACiBSZWVudHJhbnQgbG9ja3MgYWxzbyBzdXBwb3J0IHRoZSA6cmVmOmBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgPHdpdGgtbG9ja3M+YC4KIAogCi0uLiBtZXRob2Q6OiBSTG9jay5hY3F1aXJlKGJsb2NraW5nPVRydWUsIHRpbWVvdXQ9LTEpCisuLiBjbGFzczo6IFJMb2NrKCkKIAotICAgQWNxdWlyZSBhIGxvY2ssIGJsb2NraW5nIG9yIG5vbi1ibG9ja2luZy4KKyAgIFRoaXMgY2xhc3MgaW1wbGVtZW50cyByZWVudHJhbnQgbG9jayBvYmplY3RzLiAgQSByZWVudHJhbnQgbG9jayBtdXN0IGJlCisgICByZWxlYXNlZCBieSB0aGUgdGhyZWFkIHRoYXQgYWNxdWlyZWQgaXQuICBPbmNlIGEgdGhyZWFkIGhhcyBhY3F1aXJlZCBhCisgICByZWVudHJhbnQgbG9jaywgdGhlIHNhbWUgdGhyZWFkIG1heSBhY3F1aXJlIGl0IGFnYWluIHdpdGhvdXQgYmxvY2tpbmc7IHRoZQorICAgdGhyZWFkIG11c3QgcmVsZWFzZSBpdCBvbmNlIGZvciBlYWNoIHRpbWUgaXQgaGFzIGFjcXVpcmVkIGl0LgogCi0gICBXaGVuIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHM6IGlmIHRoaXMgdGhyZWFkIGFscmVhZHkgb3ducyB0aGUgbG9jaywgaW5jcmVtZW50Ci0gICB0aGUgcmVjdXJzaW9uIGxldmVsIGJ5IG9uZSwgYW5kIHJldHVybiBpbW1lZGlhdGVseS4gIE90aGVyd2lzZSwgaWYgYW5vdGhlcgotICAgdGhyZWFkIG93bnMgdGhlIGxvY2ssIGJsb2NrIHVudGlsIHRoZSBsb2NrIGlzIHVubG9ja2VkLiAgT25jZSB0aGUgbG9jayBpcwotICAgdW5sb2NrZWQgKG5vdCBvd25lZCBieSBhbnkgdGhyZWFkKSwgdGhlbiBncmFiIG93bmVyc2hpcCwgc2V0IHRoZSByZWN1cnNpb24gbGV2ZWwKLSAgIHRvIG9uZSwgYW5kIHJldHVybi4gIElmIG1vcmUgdGhhbiBvbmUgdGhyZWFkIGlzIGJsb2NrZWQgd2FpdGluZyB1bnRpbCB0aGUgbG9jawotICAgaXMgdW5sb2NrZWQsIG9ubHkgb25lIGF0IGEgdGltZSB3aWxsIGJlIGFibGUgdG8gZ3JhYiBvd25lcnNoaXAgb2YgdGhlIGxvY2suCi0gICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWUgaW4gdGhpcyBjYXNlLgotCi0gICBXaGVuIGludm9rZWQgd2l0aCB0aGUgKmJsb2NraW5nKiBhcmd1bWVudCBzZXQgdG8gdHJ1ZSwgZG8gdGhlIHNhbWUgdGhpbmcgYXMgd2hlbgotICAgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLCBhbmQgcmV0dXJuIHRydWUuCi0KLSAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSAqYmxvY2tpbmcqIGFyZ3VtZW50IHNldCB0byBmYWxzZSwgZG8gbm90IGJsb2NrLiAgSWYgYSBjYWxsCi0gICB3aXRob3V0IGFuIGFyZ3VtZW50IHdvdWxkIGJsb2NrLCByZXR1cm4gZmFsc2UgaW1tZWRpYXRlbHk7IG90aGVyd2lzZSwgZG8gdGhlCi0gICBzYW1lIHRoaW5nIGFzIHdoZW4gY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLCBhbmQgcmV0dXJuIHRydWUuCi0KLSAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSBmbG9hdGluZy1wb2ludCAqdGltZW91dCogYXJndW1lbnQgc2V0IHRvIGEgcG9zaXRpdmUKLSAgIHZhbHVlLCBibG9jayBmb3IgYXQgbW9zdCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgc3BlY2lmaWVkIGJ5ICp0aW1lb3V0KgotICAgYW5kIGFzIGxvbmcgYXMgdGhlIGxvY2sgY2Fubm90IGJlIGFjcXVpcmVkLiAgUmV0dXJuIHRydWUgaWYgdGhlIGxvY2sgaGFzCi0gICBiZWVuIGFjcXVpcmVkLCBmYWxzZSBpZiB0aGUgdGltZW91dCBoYXMgZWxhcHNlZC4KLQotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgIFRoZSAqdGltZW91dCogcGFyYW1ldGVyIGlzIG5ldy4KKyAgIE5vdGUgdGhhdCBgYFJMb2NrYGAgaXMgYWN0dWFsbHkgYSBmYWN0b3J5IGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gaW5zdGFuY2UKKyAgIG9mIHRoZSBtb3N0IGVmZmljaWVudCB2ZXJzaW9uIG9mIHRoZSBjb25jcmV0ZSBSTG9jayBjbGFzcyB0aGF0IGlzIHN1cHBvcnRlZAorICAgYnkgdGhlIHBsYXRmb3JtLgogCiAKLS4uIG1ldGhvZDo6IFJMb2NrLnJlbGVhc2UoKQorICAgLi4gbWV0aG9kOjogYWNxdWlyZShibG9ja2luZz1UcnVlLCB0aW1lb3V0PS0xKQogCi0gICBSZWxlYXNlIGEgbG9jaywgZGVjcmVtZW50aW5nIHRoZSByZWN1cnNpb24gbGV2ZWwuICBJZiBhZnRlciB0aGUgZGVjcmVtZW50IGl0IGlzCi0gICB6ZXJvLCByZXNldCB0aGUgbG9jayB0byB1bmxvY2tlZCAobm90IG93bmVkIGJ5IGFueSB0aHJlYWQpLCBhbmQgaWYgYW55IG90aGVyCi0gICB0aHJlYWRzIGFyZSBibG9ja2VkIHdhaXRpbmcgZm9yIHRoZSBsb2NrIHRvIGJlY29tZSB1bmxvY2tlZCwgYWxsb3cgZXhhY3RseSBvbmUKLSAgIG9mIHRoZW0gdG8gcHJvY2VlZC4gIElmIGFmdGVyIHRoZSBkZWNyZW1lbnQgdGhlIHJlY3Vyc2lvbiBsZXZlbCBpcyBzdGlsbAotICAgbm9uemVybywgdGhlIGxvY2sgcmVtYWlucyBsb2NrZWQgYW5kIG93bmVkIGJ5IHRoZSBjYWxsaW5nIHRocmVhZC4KKyAgICAgIEFjcXVpcmUgYSBsb2NrLCBibG9ja2luZyBvciBub24tYmxvY2tpbmcuCiAKLSAgIE9ubHkgY2FsbCB0aGlzIG1ldGhvZCB3aGVuIHRoZSBjYWxsaW5nIHRocmVhZCBvd25zIHRoZSBsb2NrLiBBCi0gICA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgbG9jayBpcwotICAgdW5sb2NrZWQuCisgICAgICBXaGVuIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHM6IGlmIHRoaXMgdGhyZWFkIGFscmVhZHkgb3ducyB0aGUgbG9jaywgaW5jcmVtZW50CisgICAgICB0aGUgcmVjdXJzaW9uIGxldmVsIGJ5IG9uZSwgYW5kIHJldHVybiBpbW1lZGlhdGVseS4gIE90aGVyd2lzZSwgaWYgYW5vdGhlcgorICAgICAgdGhyZWFkIG93bnMgdGhlIGxvY2ssIGJsb2NrIHVudGlsIHRoZSBsb2NrIGlzIHVubG9ja2VkLiAgT25jZSB0aGUgbG9jayBpcworICAgICAgdW5sb2NrZWQgKG5vdCBvd25lZCBieSBhbnkgdGhyZWFkKSwgdGhlbiBncmFiIG93bmVyc2hpcCwgc2V0IHRoZSByZWN1cnNpb24gbGV2ZWwKKyAgICAgIHRvIG9uZSwgYW5kIHJldHVybi4gIElmIG1vcmUgdGhhbiBvbmUgdGhyZWFkIGlzIGJsb2NrZWQgd2FpdGluZyB1bnRpbCB0aGUgbG9jaworICAgICAgaXMgdW5sb2NrZWQsIG9ubHkgb25lIGF0IGEgdGltZSB3aWxsIGJlIGFibGUgdG8gZ3JhYiBvd25lcnNoaXAgb2YgdGhlIGxvY2suCisgICAgICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWUgaW4gdGhpcyBjYXNlLgogCi0gICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWUuCisgICAgICBXaGVuIGludm9rZWQgd2l0aCB0aGUgKmJsb2NraW5nKiBhcmd1bWVudCBzZXQgdG8gdHJ1ZSwgZG8gdGhlIHNhbWUgdGhpbmcgYXMgd2hlbgorICAgICAgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLCBhbmQgcmV0dXJuIHRydWUuCisKKyAgICAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSAqYmxvY2tpbmcqIGFyZ3VtZW50IHNldCB0byBmYWxzZSwgZG8gbm90IGJsb2NrLiAgSWYgYSBjYWxsCisgICAgICB3aXRob3V0IGFuIGFyZ3VtZW50IHdvdWxkIGJsb2NrLCByZXR1cm4gZmFsc2UgaW1tZWRpYXRlbHk7IG90aGVyd2lzZSwgZG8gdGhlCisgICAgICBzYW1lIHRoaW5nIGFzIHdoZW4gY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLCBhbmQgcmV0dXJuIHRydWUuCisKKyAgICAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSBmbG9hdGluZy1wb2ludCAqdGltZW91dCogYXJndW1lbnQgc2V0IHRvIGEgcG9zaXRpdmUKKyAgICAgIHZhbHVlLCBibG9jayBmb3IgYXQgbW9zdCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgc3BlY2lmaWVkIGJ5ICp0aW1lb3V0KgorICAgICAgYW5kIGFzIGxvbmcgYXMgdGhlIGxvY2sgY2Fubm90IGJlIGFjcXVpcmVkLiAgUmV0dXJuIHRydWUgaWYgdGhlIGxvY2sgaGFzCisgICAgICBiZWVuIGFjcXVpcmVkLCBmYWxzZSBpZiB0aGUgdGltZW91dCBoYXMgZWxhcHNlZC4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgICAgIFRoZSAqdGltZW91dCogcGFyYW1ldGVyIGlzIG5ldy4KKworCisgICAuLiBtZXRob2Q6OiByZWxlYXNlKCkKKworICAgICAgUmVsZWFzZSBhIGxvY2ssIGRlY3JlbWVudGluZyB0aGUgcmVjdXJzaW9uIGxldmVsLiAgSWYgYWZ0ZXIgdGhlIGRlY3JlbWVudCBpdCBpcworICAgICAgemVybywgcmVzZXQgdGhlIGxvY2sgdG8gdW5sb2NrZWQgKG5vdCBvd25lZCBieSBhbnkgdGhyZWFkKSwgYW5kIGlmIGFueSBvdGhlcgorICAgICAgdGhyZWFkcyBhcmUgYmxvY2tlZCB3YWl0aW5nIGZvciB0aGUgbG9jayB0byBiZWNvbWUgdW5sb2NrZWQsIGFsbG93IGV4YWN0bHkgb25lCisgICAgICBvZiB0aGVtIHRvIHByb2NlZWQuICBJZiBhZnRlciB0aGUgZGVjcmVtZW50IHRoZSByZWN1cnNpb24gbGV2ZWwgaXMgc3RpbGwKKyAgICAgIG5vbnplcm8sIHRoZSBsb2NrIHJlbWFpbnMgbG9ja2VkIGFuZCBvd25lZCBieSB0aGUgY2FsbGluZyB0aHJlYWQuCisKKyAgICAgIE9ubHkgY2FsbCB0aGlzIG1ldGhvZCB3aGVuIHRoZSBjYWxsaW5nIHRocmVhZCBvd25zIHRoZSBsb2NrLiBBCisgICAgICA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgbG9jayBpcworICAgICAgdW5sb2NrZWQuCisKKyAgICAgIFRoZXJlIGlzIG5vIHJldHVybiB2YWx1ZS4KIAogCiAuLiBfY29uZGl0aW9uLW9iamVjdHM6CkBAIC01NDIsMTAgKzUxNCw2IEBACiB0aGUgdGhyZWFkIHRoYXQgY2FsbGVkIDptZXRoOmB+Q29uZGl0aW9uLm5vdGlmeWAgb3IgOm1ldGg6YH5Db25kaXRpb24ubm90aWZ5X2FsbGAKIGZpbmFsbHkgcmVsaW5xdWlzaGVzIG93bmVyc2hpcCBvZiB0aGUgbG9jay4KIAotCi1Vc2FnZQotXl5eXl4KLQogVGhlIHR5cGljYWwgcHJvZ3JhbW1pbmcgc3R5bGUgdXNpbmcgY29uZGl0aW9uIHZhcmlhYmxlcyB1c2VzIHRoZSBsb2NrIHRvCiBzeW5jaHJvbml6ZSBhY2Nlc3MgdG8gc29tZSBzaGFyZWQgc3RhdGU7IHRocmVhZHMgdGhhdCBhcmUgaW50ZXJlc3RlZCBpbiBhCiBwYXJ0aWN1bGFyIGNoYW5nZSBvZiBzdGF0ZSBjYWxsIDptZXRoOmB+Q29uZGl0aW9uLndhaXRgIHJlcGVhdGVkbHkgdW50aWwgdGhleQpAQCAtNTg0LDE1ICs1NTIsMTggQEAKIGl0ZW0gdG8gdGhlIGJ1ZmZlciBvbmx5IG5lZWRzIHRvIHdha2UgdXAgb25lIGNvbnN1bWVyIHRocmVhZC4KIAogCi1JbnRlcmZhY2UKLV5eXl5eXl5eXgotCiAuLiBjbGFzczo6IENvbmRpdGlvbihsb2NrPU5vbmUpCiAKKyAgIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBjb25kaXRpb24gdmFyaWFibGUgb2JqZWN0cy4gIEEgY29uZGl0aW9uIHZhcmlhYmxlCisgICBhbGxvd3Mgb25lIG9yIG1vcmUgdGhyZWFkcyB0byB3YWl0IHVudGlsIHRoZXkgYXJlIG5vdGlmaWVkIGJ5IGFub3RoZXIgdGhyZWFkLgorCiAgICBJZiB0aGUgKmxvY2sqIGFyZ3VtZW50IGlzIGdpdmVuIGFuZCBub3QgYGBOb25lYGAsIGl0IG11c3QgYmUgYSA6Y2xhc3M6YExvY2tgCiAgICBvciA6Y2xhc3M6YFJMb2NrYCBvYmplY3QsIGFuZCBpdCBpcyB1c2VkIGFzIHRoZSB1bmRlcmx5aW5nIGxvY2suICBPdGhlcndpc2UsCiAgICBhIG5ldyA6Y2xhc3M6YFJMb2NrYCBvYmplY3QgaXMgY3JlYXRlZCBhbmQgdXNlZCBhcyB0aGUgdW5kZXJseWluZyBsb2NrLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgY2hhbmdlZCBmcm9tIGEgZmFjdG9yeSBmdW5jdGlvbiB0byBhIGNsYXNzLgorCiAgICAuLiBtZXRob2Q6OiBhY3F1aXJlKCphcmdzKQogCiAgICAgICBBY3F1aXJlIHRoZSB1bmRlcmx5aW5nIGxvY2suIFRoaXMgbWV0aG9kIGNhbGxzIHRoZSBjb3JyZXNwb25kaW5nIG1ldGhvZCBvbgpAQCAtNzAyLDEwICs2NzMsMTkgQEAKIAogLi4gY2xhc3M6OiBTZW1hcGhvcmUodmFsdWU9MSkKIAorICAgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHNlbWFwaG9yZSBvYmplY3RzLiAgQSBzZW1hcGhvcmUgbWFuYWdlcyBhIGNvdW50ZXIKKyAgIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIDptZXRoOmByZWxlYXNlYCBjYWxscyBtaW51cyB0aGUgbnVtYmVyIG9mCisgICA6bWV0aDpgYWNxdWlyZWAgY2FsbHMsIHBsdXMgYW4gaW5pdGlhbCB2YWx1ZS4gIFRoZSA6bWV0aDpgYWNxdWlyZWAgbWV0aG9kCisgICBibG9ja3MgaWYgbmVjZXNzYXJ5IHVudGlsIGl0IGNhbiByZXR1cm4gd2l0aG91dCBtYWtpbmcgdGhlIGNvdW50ZXIgbmVnYXRpdmUuCisgICBJZiBub3QgZ2l2ZW4sICp2YWx1ZSogZGVmYXVsdHMgdG8gMS4KKwogICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50IGdpdmVzIHRoZSBpbml0aWFsICp2YWx1ZSogZm9yIHRoZSBpbnRlcm5hbCBjb3VudGVyOyBpdAogICAgZGVmYXVsdHMgdG8gYGAxYGAuIElmIHRoZSAqdmFsdWUqIGdpdmVuIGlzIGxlc3MgdGhhbiAwLCA6ZXhjOmBWYWx1ZUVycm9yYCBpcwogICAgcmFpc2VkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgY2hhbmdlZCBmcm9tIGEgZmFjdG9yeSBmdW5jdGlvbiB0byBhIGNsYXNzLgorCiAgICAuLiBtZXRob2Q6OiBhY3F1aXJlKGJsb2NraW5nPVRydWUsIHRpbWVvdXQ9Tm9uZSkKIAogICAgICAgQWNxdWlyZSBhIHNlbWFwaG9yZS4KQEAgLTczOCw2ICs3MTgsMTggQEAKICAgICAgIHRoYW4gemVybyBhZ2Fpbiwgd2FrZSB1cCB0aGF0IHRocmVhZC4KIAogCisuLiBjbGFzczo6IEJvdW5kZWRTZW1hcGhvcmUodmFsdWU9MSkKKworICAgQ2xhc3MgaW1wbGVtZW50aW5nIGJvdW5kZWQgc2VtYXBob3JlIG9iamVjdHMuICBBIGJvdW5kZWQgc2VtYXBob3JlIGNoZWNrcyB0bworICAgbWFrZSBzdXJlIGl0cyBjdXJyZW50IHZhbHVlIGRvZXNuJ3QgZXhjZWVkIGl0cyBpbml0aWFsIHZhbHVlLiAgSWYgaXQgZG9lcywKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4gSW4gbW9zdCBzaXR1YXRpb25zIHNlbWFwaG9yZXMgYXJlIHVzZWQgdG8gZ3VhcmQKKyAgIHJlc291cmNlcyB3aXRoIGxpbWl0ZWQgY2FwYWNpdHkuICBJZiB0aGUgc2VtYXBob3JlIGlzIHJlbGVhc2VkIHRvbyBtYW55IHRpbWVzCisgICBpdCdzIGEgc2lnbiBvZiBhIGJ1Zy4gIElmIG5vdCBnaXZlbiwgKnZhbHVlKiBkZWZhdWx0cyB0byAxLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgY2hhbmdlZCBmcm9tIGEgZmFjdG9yeSBmdW5jdGlvbiB0byBhIGNsYXNzLgorCisKIC4uIF9zZW1hcGhvcmUtZXhhbXBsZXM6CiAKIDpjbGFzczpgU2VtYXBob3JlYCBFeGFtcGxlCkBAIC03NDksNyArNzQxLDcgQEAKIG1haW4gdGhyZWFkIHdvdWxkIGluaXRpYWxpemUgdGhlIHNlbWFwaG9yZTo6CiAKICAgIG1heGNvbm5lY3Rpb25zID0gNQotICAgLi4uCisgICAjIC4uLgogICAgcG9vbF9zZW1hID0gQm91bmRlZFNlbWFwaG9yZSh2YWx1ZT1tYXhjb25uZWN0aW9ucykKIAogT25jZSBzcGF3bmVkLCB3b3JrZXIgdGhyZWFkcyBjYWxsIHRoZSBzZW1hcGhvcmUncyBhY3F1aXJlIGFuZCByZWxlYXNlIG1ldGhvZHMKQEAgLTc1OCw3ICs3NTAsNyBAQAogICAgd2l0aCBwb29sX3NlbWE6CiAgICAgICAgY29ubiA9IGNvbm5lY3RkYigpCiAgICAgICAgdHJ5OgotICAgICAgICAgICAuLi4gdXNlIGNvbm5lY3Rpb24gLi4uCisgICAgICAgICAgICMgLi4uIHVzZSBjb25uZWN0aW9uIC4uLgogICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogCkBAIC03ODEsNyArNzczLDEzIEBACiAKIC4uIGNsYXNzOjogRXZlbnQoKQogCi0gICBUaGUgaW50ZXJuYWwgZmxhZyBpcyBpbml0aWFsbHkgZmFsc2UuCisgICBDbGFzcyBpbXBsZW1lbnRpbmcgZXZlbnQgb2JqZWN0cy4gIEFuIGV2ZW50IG1hbmFnZXMgYSBmbGFnIHRoYXQgY2FuIGJlIHNldCB0bworICAgdHJ1ZSB3aXRoIHRoZSA6bWV0aDpgfkV2ZW50LnNldGAgbWV0aG9kIGFuZCByZXNldCB0byBmYWxzZSB3aXRoIHRoZQorICAgOm1ldGg6YGNsZWFyYCBtZXRob2QuICBUaGUgOm1ldGg6YHdhaXRgIG1ldGhvZCBibG9ja3MgdW50aWwgdGhlIGZsYWcgaXMgdHJ1ZS4KKyAgIFRoZSBmbGFnIGlzIGluaXRpYWxseSBmYWxzZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIGNoYW5nZWQgZnJvbSBhIGZhY3RvcnkgZnVuY3Rpb24gdG8gYSBjbGFzcy4KIAogICAgLi4gbWV0aG9kOjogaXNfc2V0KCkKIApAQCAtODQ2LDYgKzg0NCw5IEBACiAgICBDcmVhdGUgYSB0aW1lciB0aGF0IHdpbGwgcnVuICpmdW5jdGlvbiogd2l0aCBhcmd1bWVudHMgKmFyZ3MqIGFuZCAga2V5d29yZAogICAgYXJndW1lbnRzICprd2FyZ3MqLCBhZnRlciAqaW50ZXJ2YWwqIHNlY29uZHMgaGF2ZSBwYXNzZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBjaGFuZ2VkIGZyb20gYSBmYWN0b3J5IGZ1bmN0aW9uIHRvIGEgY2xhc3MuCisKICAgIC4uIG1ldGhvZDo6IGNhbmNlbCgpCiAKICAgICAgIFN0b3AgdGhlIHRpbWVyLCBhbmQgY2FuY2VsIHRoZSBleGVjdXRpb24gb2YgdGhlIHRpbWVyJ3MgYWN0aW9uLiAgVGhpcyB3aWxsCkBAIC05NzksMjcgKzk4MCwzIEBACiBDdXJyZW50bHksIDpjbGFzczpgTG9ja2AsIDpjbGFzczpgUkxvY2tgLCA6Y2xhc3M6YENvbmRpdGlvbmAsCiA6Y2xhc3M6YFNlbWFwaG9yZWAsIGFuZCA6Y2xhc3M6YEJvdW5kZWRTZW1hcGhvcmVgIG9iamVjdHMgbWF5IGJlIHVzZWQgYXMKIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgY29udGV4dCBtYW5hZ2Vycy4KLQotCi0uLiBfdGhyZWFkZWQtaW1wb3J0czoKLQotSW1wb3J0aW5nIGluIHRocmVhZGVkIGNvZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVdoaWxlIHRoZSBpbXBvcnQgbWFjaGluZXJ5IGlzIHRocmVhZC1zYWZlLCB0aGVyZSBhcmUgdHdvIGtleSByZXN0cmljdGlvbnMgb24KLXRocmVhZGVkIGltcG9ydHMgZHVlIHRvIGluaGVyZW50IGxpbWl0YXRpb25zIGluIHRoZSB3YXkgdGhhdCB0aHJlYWQtc2FmZXR5IGlzCi1wcm92aWRlZDoKLQotKiBGaXJzdGx5LCBvdGhlciB0aGFuIGluIHRoZSBtYWluIG1vZHVsZSwgYW4gaW1wb3J0IHNob3VsZCBub3QgaGF2ZSB0aGUKLSAgc2lkZSBlZmZlY3Qgb2Ygc3Bhd25pbmcgYSBuZXcgdGhyZWFkIGFuZCB0aGVuIHdhaXRpbmcgZm9yIHRoYXQgdGhyZWFkIGluCi0gIGFueSB3YXkuIEZhaWxpbmcgdG8gYWJpZGUgYnkgdGhpcyByZXN0cmljdGlvbiBjYW4gbGVhZCB0byBhIGRlYWRsb2NrIGlmCi0gIHRoZSBzcGF3bmVkIHRocmVhZCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGF0dGVtcHRzIHRvIGltcG9ydCBhIG1vZHVsZS4KLSogU2Vjb25kbHksIGFsbCBpbXBvcnQgYXR0ZW1wdHMgbXVzdCBiZSBjb21wbGV0ZWQgYmVmb3JlIHRoZSBpbnRlcnByZXRlcgotICBzdGFydHMgc2h1dHRpbmcgaXRzZWxmIGRvd24uIFRoaXMgY2FuIGJlIG1vc3QgZWFzaWx5IGFjaGlldmVkIGJ5IG9ubHkKLSAgcGVyZm9ybWluZyBpbXBvcnRzIGZyb20gbm9uLWRhZW1vbiB0aHJlYWRzIGNyZWF0ZWQgdGhyb3VnaCB0aGUgdGhyZWFkaW5nCi0gIG1vZHVsZS4gRGFlbW9uIHRocmVhZHMgYW5kIHRocmVhZHMgY3JlYXRlZCBkaXJlY3RseSB3aXRoIHRoZSB0aHJlYWQKLSAgbW9kdWxlIHdpbGwgcmVxdWlyZSBzb21lIG90aGVyIGZvcm0gb2Ygc3luY2hyb25pemF0aW9uIHRvIGVuc3VyZSB0aGV5IGRvCi0gIG5vdCBhdHRlbXB0IGltcG9ydHMgYWZ0ZXIgc3lzdGVtIHNodXRkb3duIGhhcyBjb21tZW5jZWQuIEZhaWx1cmUgdG8KLSAgYWJpZGUgYnkgdGhpcyByZXN0cmljdGlvbiB3aWxsIGxlYWQgdG8gaW50ZXJtaXR0ZW50IGV4Y2VwdGlvbnMgYW5kCi0gIGNyYXNoZXMgZHVyaW5nIGludGVycHJldGVyIHNodXRkb3duIChhcyB0aGUgbGF0ZSBpbXBvcnRzIGF0dGVtcHQgdG8KLSAgYWNjZXNzIG1hY2hpbmVyeSB3aGljaCBpcyBubyBsb25nZXIgaW4gYSB2YWxpZCBzdGF0ZSkuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90aW1lLnJzdCBiL0RvYy9saWJyYXJ5L3RpbWUucnN0CmluZGV4IGUwYzcwMDcuLmQ3ZDgyMzAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RpbWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RpbWUucnN0CkBAIC00MSwyNSArNDEsNiBAQAogICBwYXJzZWQsIHRoZXkgYXJlIGNvbnZlcnRlZCBhY2NvcmRpbmcgdG8gdGhlIFBPU0lYIGFuZCBJU08gQyBzdGFuZGFyZHM6IHZhbHVlcwogICA2OS0tOTkgYXJlIG1hcHBlZCB0byAxOTY5LS0xOTk5LCBhbmQgdmFsdWVzIDAtLTY4IGFyZSBtYXBwZWQgdG8gMjAwMC0tMjA2OC4KIAotICBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgeWVhcnMgd2l0aCBsZXNzIHRoYW4gNCBkaWdpdHMgYXJlIHRyZWF0ZWQKLSAgc3BlY2lhbGx5IGJ5IDpmdW5jOmBhc2N0aW1lYCwgOmZ1bmM6YG1rdGltZWAsIGFuZCA6ZnVuYzpgc3RyZnRpbWVgIGZ1bmN0aW9ucwotICB0aGF0IG9wZXJhdGUgb24gYSA5LXR1cGxlIG9yIDpjbGFzczpgc3RydWN0X3RpbWVgIHZhbHVlcy4gSWYgeWVhciAodGhlIGZpcnN0Ci0gIHZhbHVlIGluIHRoZSA5LXR1cGxlKSBpcyBzcGVjaWZpZWQgd2l0aCBsZXNzIHRoYW4gNCBkaWdpdHMsIGl0cyBpbnRlcnByZXRhdGlvbgotICBkZXBlbmRzIG9uIHRoZSB2YWx1ZSBvZiBgYGFjY2VwdDJkeWVhcmBgIHZhcmlhYmxlLgotCi0gIElmIGBgYWNjZXB0MmR5ZWFyYGAgaXMgdHJ1ZSAoZGVmYXVsdCksIGEgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBiZWhhdmlvciBpcwotICBpbnZva2VkIGFzIGZvbGxvd3M6Ci0KLSAgICAtIGZvciAyLWRpZ2l0IHllYXIsIGNlbnR1cnkgaXMgZ3Vlc3NlZCBhY2NvcmRpbmcgdG8gUE9TSVggcnVsZXMgZm9yCi0gICAgICBgYCV5YGAgc3RycHRpbWUgZm9ybWF0LiAgQSBkZXByZWNhdGlvbiB3YXJuaW5nIGlzIGlzc3VlZCB3aGVuIGNlbnR1cnkKLSAgICAgIGluZm9ybWF0aW9uIGlzIGd1ZXNzZWQgaW4gdGhpcyB3YXkuCi0KLSAgICAtIGZvciAzLWRpZ2l0IG9yIG5lZ2F0aXZlIHllYXIsIGEgOmV4YzpgVmFsdWVFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KLQotICBJZiBgYGFjY2VwdDJkeWVhcmBgIGlzIGZhbHNlIChzZXQgYnkgdGhlIHByb2dyYW0gb3IgYXMgYSByZXN1bHQgb2YgYQotICBub24tZW1wdHkgdmFsdWUgYXNzaWduZWQgdG8gYGBQWVRIT05ZMktgYCBlbnZpcm9ubWVudCB2YXJpYWJsZSkgYWxsIHllYXIKLSAgdmFsdWVzIGFyZSBpbnRlcnByZXRlZCBhcyBnaXZlbi4KLQogLi4gaW5kZXg6OgogICAgc2luZ2xlOiBVVEMKICAgIHNpbmdsZTogQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUKQEAgLTk2LDYgKzc3LDExIEBACiAKICAgU2VlIDpjbGFzczpgc3RydWN0X3RpbWVgIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZXNlIG9iamVjdHMuCiAKKyAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgVGhlIDpjbGFzczpgc3RydWN0X3RpbWVgIHR5cGUgd2FzIGV4dGVuZGVkIHRvIHByb3ZpZGUgdGhlIDphdHRyOmB0bV9nbXRvZmZgCisgICAgIGFuZCA6YXR0cjpgdG1fem9uZWAgYXR0cmlidXRlcyB3aGVuIHBsYXRmb3JtIHN1cHBvcnRzIGNvcnJlc3BvbmRpbmcKKyAgICAgYGBzdHJ1Y3QgdG1gYCBtZW1iZXJzLgorCiAqIFVzZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB0byBjb252ZXJ0IGJldHdlZW4gdGltZSByZXByZXNlbnRhdGlvbnM6CiAKICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpAQCAtMTE3LDI0ICsxMDMsNiBAQAogCiBUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYW5kIGRhdGEgaXRlbXM6CiAKLQotLi4gZGF0YTo6IGFjY2VwdDJkeWVhcgotCi0gICBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0d28tZGlnaXQgeWVhciB2YWx1ZXMgd2lsbCBiZQotICAgbWFwcGVkIHRvIDE5NjktLTIwNjggcmFuZ2UgYnkgOmZ1bmM6YGFzY3RpbWVgLCA6ZnVuYzpgbWt0aW1lYCwgYW5kCi0gICA6ZnVuYzpgc3RyZnRpbWVgIGZ1bmN0aW9ucy4gIFRoaXMgaXMgdHJ1ZSBieSBkZWZhdWx0LCBidXQgd2lsbCBiZQotICAgc2V0IHRvIGZhbHNlIGlmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSA6ZW52dmFyOmBQWVRIT05ZMktgIGhhcwotICAgYmVlbiBzZXQgdG8gYSBub24tZW1wdHkgc3RyaW5nLiAgSXQgbWF5IGFsc28gYmUgbW9kaWZpZWQgYXQgcnVuCi0gICB0aW1lLgotCi0gICAuLiBkZXByZWNhdGVkOjogMy4yCi0gICAgICBNYXBwaW5nIG9mIDItZGlnaXQgeWVhciB2YWx1ZXMgYnkgOmZ1bmM6YGFzY3RpbWVgLAotICAgICAgOmZ1bmM6YG1rdGltZWAsIGFuZCA6ZnVuYzpgc3RyZnRpbWVgIGZ1bmN0aW9ucyB0byAxOTY5LS0yMDY4Ci0gICAgICByYW5nZSBpcyBkZXByZWNhdGVkLiAgUHJvZ3JhbXMgdGhhdCBuZWVkIHRvIHByb2Nlc3MgMi1kaWdpdAotICAgICAgeWVhcnMgc2hvdWxkIHVzZSBgYCV5YGAgY29kZSBhdmFpbGFibGUgaW4gOmZ1bmM6YHN0cnB0aW1lYAotICAgICAgZnVuY3Rpb24gb3IgY29udmVydCAyLWRpZ2l0IHllYXIgdmFsdWVzIHRvIDQtZGlnaXQgdGhlbXNlbHZlcy4KLQotCiAuLiBkYXRhOjogYWx0em9uZQogCiAgICBUaGUgb2Zmc2V0IG9mIHRoZSBsb2NhbCBEU1QgdGltZXpvbmUsIGluIHNlY29uZHMgd2VzdCBvZiBVVEMsIGlmIG9uZSBpcyBkZWZpbmVkLgpAQCAtMTUyLDcgKzEyMCw4IEBACiAKICAgIC4uIG5vdGU6OgogCi0gICAgICBVbmxpa2UgdGhlIEMgZnVuY3Rpb24gb2YgdGhlIHNhbWUgbmFtZSwgdGhlcmUgaXMgbm8gdHJhaWxpbmcgbmV3bGluZS4KKyAgICAgIFVubGlrZSB0aGUgQyBmdW5jdGlvbiBvZiB0aGUgc2FtZSBuYW1lLCA6ZnVuYzpgYXNjdGltZWAgZG9lcyBub3QgYWRkIGEKKyAgICAgIHRyYWlsaW5nIG5ld2xpbmUuCiAKIAogLi4gZnVuY3Rpb246OiBjbG9jaygpCkBAIC0xNzIsNiArMTQxLDk3IEBACiAgICA6YzpmdW5jOmBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcmAuIFRoZSByZXNvbHV0aW9uIGlzIHR5cGljYWxseSBiZXR0ZXIgdGhhbiBvbmUKICAgIG1pY3Jvc2Vjb25kLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBUaGUgYmVoYXZpb3VyIG9mIHRoaXMgZnVuY3Rpb24gZGVwZW5kcyBvbiB0aGUgcGxhdGZvcm06IHVzZQorICAgICAgOmZ1bmM6YHBlcmZfY291bnRlcmAgb3IgOmZ1bmM6YHByb2Nlc3NfdGltZWAgaW5zdGVhZCwgZGVwZW5kaW5nIG9uIHlvdXIKKyAgICAgIHJlcXVpcmVtZW50cywgdG8gaGF2ZSBhIHdlbGwgZGVmaW5lZCBiZWhhdmlvdXIuCisKKworLi4gZnVuY3Rpb246OiBjbG9ja19nZXRyZXMoY2xrX2lkKQorCisgICBSZXR1cm4gdGhlIHJlc29sdXRpb24gKHByZWNpc2lvbikgb2YgdGhlIHNwZWNpZmllZCBjbG9jayAqY2xrX2lkKi4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IGNsb2NrX2dldHRpbWUoY2xrX2lkKQorCisgICBSZXR1cm4gdGhlIHRpbWUgb2YgdGhlIHNwZWNpZmllZCBjbG9jayAqY2xrX2lkKi4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IGNsb2NrX3NldHRpbWUoY2xrX2lkLCB0aW1lKQorCisgICBTZXQgdGhlIHRpbWUgb2YgdGhlIHNwZWNpZmllZCBjbG9jayAqY2xrX2lkKi4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogQ0xPQ0tfSElHSFJFUworCisgICBUaGUgU29sYXJpcyBPUyBoYXMgYSBDTE9DS19ISUdIUkVTIHRpbWVyIHRoYXQgYXR0ZW1wdHMgdG8gdXNlIGFuIG9wdGltYWwKKyAgIGhhcmR3YXJlIHNvdXJjZSwgYW5kIG1heSBnaXZlIGNsb3NlIHRvIG5hbm9zZWNvbmQgcmVzb2x1dGlvbi4gIENMT0NLX0hJR0hSRVMKKyAgIGlzIHRoZSBub25hZGp1c3RhYmxlLCBoaWdoLXJlc29sdXRpb24gY2xvY2suCisKKyAgIEF2YWlsYWJpbGl0eTogU29sYXJpcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IENMT0NLX01PTk9UT05JQworCisgICBDbG9jayB0aGF0IGNhbm5vdCBiZSBzZXQgYW5kIHJlcHJlc2VudHMgbW9ub3RvbmljIHRpbWUgc2luY2Ugc29tZSB1bnNwZWNpZmllZAorICAgc3RhcnRpbmcgcG9pbnQuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IENMT0NLX01PTk9UT05JQ19SQVcKKworICAgU2ltaWxhciB0byA6ZGF0YTpgQ0xPQ0tfTU9OT1RPTklDYCwgYnV0IHByb3ZpZGVzIGFjY2VzcyB0byBhIHJhdworICAgaGFyZHdhcmUtYmFzZWQgdGltZSB0aGF0IGlzIG5vdCBzdWJqZWN0IHRvIE5UUCBhZGp1c3RtZW50cy4KKworICAgQXZhaWxhYmlsaXR5OiBMaW51eCAyLjYuMjggb3IgbGF0ZXIuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBDTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQKKworICAgSGlnaC1yZXNvbHV0aW9uIHBlci1wcm9jZXNzIHRpbWVyIGZyb20gdGhlIENQVS4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogQ0xPQ0tfUkVBTFRJTUUKKworICAgU3lzdGVtLXdpZGUgcmVhbC10aW1lIGNsb2NrLiAgU2V0dGluZyB0aGlzIGNsb2NrIHJlcXVpcmVzIGFwcHJvcHJpYXRlCisgICBwcml2aWxlZ2VzLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBDTE9DS19USFJFQURfQ1BVVElNRV9JRAorCisgICBUaHJlYWQtc3BlY2lmaWMgQ1BVLXRpbWUgY2xvY2suCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogLi4gZnVuY3Rpb246OiBjdGltZShbc2Vjc10pCiAKQEAgLTE4Niw2ICsyNDYsMzEgQEAKICAgIE5vbnplcm8gaWYgYSBEU1QgdGltZXpvbmUgaXMgZGVmaW5lZC4KIAogCisuLiBmdW5jdGlvbjo6IGdldF9jbG9ja19pbmZvKG5hbWUpCisKKyAgIEdldCBpbmZvcm1hdGlvbiBvbiB0aGUgc3BlY2lmaWVkIGNsb2NrIGFzIGEgbmFtZXNwYWNlIG9iamVjdC4KKyAgIFN1cHBvcnRlZCBjbG9jayBuYW1lcyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb25zIHRvIHJlYWQgdGhlaXIgdmFsdWUKKyAgIGFyZToKKworICAgKiBgYCdjbG9jaydgYDogOmZ1bmM6YHRpbWUuY2xvY2tgCisgICAqIGBgJ21vbm90b25pYydgYDogOmZ1bmM6YHRpbWUubW9ub3RvbmljYAorICAgKiBgYCdwZXJmX2NvdW50ZXInYGA6IDpmdW5jOmB0aW1lLnBlcmZfY291bnRlcmAKKyAgICogYGAncHJvY2Vzc190aW1lJ2BgOiA6ZnVuYzpgdGltZS5wcm9jZXNzX3RpbWVgCisgICAqIGBgJ3RpbWUnYGA6IDpmdW5jOmB0aW1lLnRpbWVgCisKKyAgIFRoZSByZXN1bHQgaGFzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKworICAgLSAqYWRqdXN0YWJsZSo6IGBgVHJ1ZWBgIGlmIHRoZSBjbG9jayBjYW4gYmUgY2hhbmdlZCBhdXRvbWF0aWNhbGx5IChlLmcuIGJ5CisgICAgIGEgTlRQIGRhZW1vbikgb3IgbWFudWFsbHkgYnkgdGhlIHN5c3RlbSBhZG1pbmlzdHJhdG9yLCBgYEZhbHNlYGAgb3RoZXJ3aXNlCisgICAtICppbXBsZW1lbnRhdGlvbio6IFRoZSBuYW1lIG9mIHRoZSB1bmRlcmx5aW5nIEMgZnVuY3Rpb24gdXNlZCB0byBnZXQKKyAgICAgdGhlIGNsb2NrIHZhbHVlCisgICAtICptb25vdG9uaWMqOiBgYFRydWVgYCBpZiB0aGUgY2xvY2sgY2Fubm90IGdvIGJhY2t3YXJkLAorICAgICBgYEZhbHNlYGAgb3RoZXJ3aXNlCisgICAtICpyZXNvbHV0aW9uKjogVGhlIHJlc29sdXRpb24gb2YgdGhlIGNsb2NrIGluIHNlY29uZHMgKDpjbGFzczpgZmxvYXRgKQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBmdW5jdGlvbjo6IGdtdGltZShbc2Vjc10pCiAKICAgIENvbnZlcnQgYSB0aW1lIGV4cHJlc3NlZCBpbiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaCB0byBhIDpjbGFzczpgc3RydWN0X3RpbWVgIGluCkBAIC0yMTUsNiArMzAwLDQ3IEBACiAgICBUaGUgZWFybGllc3QgZGF0ZSBmb3Igd2hpY2ggaXQgY2FuIGdlbmVyYXRlIGEgdGltZSBpcyBwbGF0Zm9ybS1kZXBlbmRlbnQuCiAKIAorLi4gZnVuY3Rpb246OiBtb25vdG9uaWMoKQorCisgICBSZXR1cm4gdGhlIHZhbHVlIChpbiBmcmFjdGlvbmFsIHNlY29uZHMpIG9mIGEgbW9ub3RvbmljIGNsb2NrLCBpLmUuIGEgY2xvY2sKKyAgIHRoYXQgY2Fubm90IGdvIGJhY2t3YXJkcy4gIFRoZSBjbG9jayBpcyBub3QgYWZmZWN0ZWQgYnkgc3lzdGVtIGNsb2NrIHVwZGF0ZXMuCisgICBUaGUgcmVmZXJlbmNlIHBvaW50IG9mIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyB1bmRlZmluZWQsIHNvIHRoYXQgb25seSB0aGUKKyAgIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgcmVzdWx0cyBvZiBjb25zZWN1dGl2ZSBjYWxscyBpcyB2YWxpZC4KKworICAgT24gV2luZG93cyB2ZXJzaW9ucyBvbGRlciB0aGFuIFZpc3RhLCA6ZnVuYzpgbW9ub3RvbmljYCBkZXRlY3RzCisgICA6YzpmdW5jOmBHZXRUaWNrQ291bnRgIGludGVnZXIgb3ZlcmZsb3cgKDMyIGJpdHMsIHJvbGwtb3ZlciBhZnRlciA0OS43IGRheXMpLgorICAgSXQgaW5jcmVhc2VzIGFuIGludGVybmFsIGVwb2NoIChyZWZlcmVuY2UgdGltZSkgYnkgMlwgOnN1cDpgMzJgIGVhY2ggdGltZQorICAgdGhhdCBhbiBvdmVyZmxvdyBpcyBkZXRlY3RlZC4gIFRoZSBlcG9jaCBpcyBzdG9yZWQgaW4gdGhlIHByb2Nlc3MtbG9jYWwgc3RhdGUKKyAgIGFuZCBzbyB0aGUgdmFsdWUgb2YgOmZ1bmM6YG1vbm90b25pY2AgbWF5IGJlIGRpZmZlcmVudCBpbiB0d28gUHl0aG9uCisgICBwcm9jZXNzZXMgcnVubmluZyBmb3IgbW9yZSB0aGFuIDQ5IGRheXMuIE9uIG1vcmUgcmVjZW50IHZlcnNpb25zIG9mIFdpbmRvd3MKKyAgIGFuZCBvbiBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcywgOmZ1bmM6YG1vbm90b25pY2AgaXMgc3lzdGVtLXdpZGUuCisKKyAgIEF2YWlsYWJpbGl0eTogV2luZG93cywgTWFjIE9TIFgsIExpbnV4LCBGcmVlQlNELCBPcGVuQlNELCBTb2xhcmlzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHBlcmZfY291bnRlcigpCisKKyAgIFJldHVybiB0aGUgdmFsdWUgKGluIGZyYWN0aW9uYWwgc2Vjb25kcykgb2YgYSBwZXJmb3JtYW5jZSBjb3VudGVyLCBpLmUuIGEKKyAgIGNsb2NrIHdpdGggdGhlIGhpZ2hlc3QgYXZhaWxhYmxlIHJlc29sdXRpb24gdG8gbWVhc3VyZSBhIHNob3J0IGR1cmF0aW9uLiAgSXQKKyAgIGRvZXMgaW5jbHVkZSB0aW1lIGVsYXBzZWQgZHVyaW5nIHNsZWVwIGFuZCBpcyBzeXN0ZW0td2lkZS4gIFRoZSByZWZlcmVuY2UKKyAgIHBvaW50IG9mIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyB1bmRlZmluZWQsIHNvIHRoYXQgb25seSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuCisgICB0aGUgcmVzdWx0cyBvZiBjb25zZWN1dGl2ZSBjYWxscyBpcyB2YWxpZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBwcm9jZXNzX3RpbWUoKQorCisgICBSZXR1cm4gdGhlIHZhbHVlIChpbiBmcmFjdGlvbmFsIHNlY29uZHMpIG9mIHRoZSBzdW0gb2YgdGhlIHN5c3RlbSBhbmQgdXNlcgorICAgQ1BVIHRpbWUgb2YgdGhlIGN1cnJlbnQgcHJvY2Vzcy4gIEl0IGRvZXMgbm90IGluY2x1ZGUgdGltZSBlbGFwc2VkIGR1cmluZworICAgc2xlZXAuICBJdCBpcyBwcm9jZXNzLXdpZGUgYnkgZGVmaW5pdGlvbi4gIFRoZSByZWZlcmVuY2UgcG9pbnQgb2YgdGhlCisgICByZXR1cm5lZCB2YWx1ZSBpcyB1bmRlZmluZWQsIHNvIHRoYXQgb25seSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSByZXN1bHRzCisgICBvZiBjb25zZWN1dGl2ZSBjYWxscyBpcyB2YWxpZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC4uIGZ1bmN0aW9uOjogc2xlZXAoc2VjcykKIAogICAgU3VzcGVuZCBleGVjdXRpb24gZm9yIHRoZSBnaXZlbiBudW1iZXIgb2Ygc2Vjb25kcy4gIFRoZSBhcmd1bWVudCBtYXkgYmUgYQpAQCAtMzA4LDkgKzQzNCwxNSBAQAogICAgfCBgYCV5YGAgICAgfCBZZWFyIHdpdGhvdXQgY2VudHVyeSBhcyBhIGRlY2ltYWwgbnVtYmVyICAgICAgIHwgICAgICAgfAogICAgfCAgICAgICAgICAgfCBbMDAsOTldLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAogICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotICAgfCBgYCVZYGAgICAgfCBZZWFyIHdpdGggY2VudHVyeSBhcyBhIGRlY2ltYWwgbnVtYmVyLiAgICAgICAgIHwgXCg0KSAgfAorICAgfCBgYCVZYGAgICAgfCBZZWFyIHdpdGggY2VudHVyeSBhcyBhIGRlY2ltYWwgbnVtYmVyLiAgICAgICAgIHwgICAgICAgfAogICAgfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAogICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworICAgfCBgYCV6YGAgICAgfCBUaW1lIHpvbmUgb2Zmc2V0IGluZGljYXRpbmcgYSBwb3NpdGl2ZSBvciAgICAgIHwgICAgICAgfAorICAgfCAgICAgICAgICAgfCBuZWdhdGl2ZSB0aW1lIGRpZmZlcmVuY2UgZnJvbSBVVEMvR01UIG9mIHRoZSAgIHwgICAgICAgfAorICAgfCAgICAgICAgICAgfCBmb3JtICtISE1NIG9yIC1ISE1NLCB3aGVyZSBIIHJlcHJlc2VudHMgZGVjaW1hbHwgICAgICAgfAorICAgfCAgICAgICAgICAgfCBob3VyIGRpZ2l0cyBhbmQgTSByZXByZXNlbnRzIGRlY2ltYWwgbWludXRlICAgIHwgICAgICAgfAorICAgfCAgICAgICAgICAgfCBkaWdpdHMgWy0yMzo1OSwgKzIzOjU5XS4gICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwogICAgfCBgYCVaYGAgICAgfCBUaW1lIHpvbmUgbmFtZSAobm8gY2hhcmFjdGVycyBpZiBubyB0aW1lIHpvbmUgIHwgICAgICAgfAogICAgfCAgICAgICAgICAgfCBleGlzdHMpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAogICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwpAQCAtMzMyLDEyICs0NjQsNiBAQAogICAgICAgV2hlbiB1c2VkIHdpdGggdGhlIDpmdW5jOmBzdHJwdGltZWAgZnVuY3Rpb24sIGBgJVVgYCBhbmQgYGAlV2BgIGFyZSBvbmx5IHVzZWQgaW4KICAgICAgIGNhbGN1bGF0aW9ucyB3aGVuIHRoZSBkYXkgb2YgdGhlIHdlZWsgYW5kIHRoZSB5ZWFyIGFyZSBzcGVjaWZpZWQuCiAKLSAgICg0KQotICAgICAgUHJvZHVjZXMgZGlmZmVyZW50IHJlc3VsdHMgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZgotICAgICAgYGB0aW1lLmFjY2VwdDJkeWVhcmBgIHZhcmlhYmxlLiAgU2VlIDpyZWY6YFllYXIgMjAwMCAoWTJLKQotICAgICAgaXNzdWVzIDx0aW1lLXkya2lzc3Vlcz5gIGZvciBkZXRhaWxzLgotCi0KICAgIEhlcmUgaXMgYW4gZXhhbXBsZSwgYSBmb3JtYXQgZm9yIGRhdGVzIGNvbXBhdGlibGUgd2l0aCB0aGF0IHNwZWNpZmllZCAgaW4gdGhlCiAgICA6cmZjOmAyODIyYCBJbnRlcm5ldCBlbWFpbCBzdGFuZGFyZC4gIFsjXV8gOjoKIApAQCAtNDE2LDEwICs1NDIsMTMgQEAKICAgICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCA4ICAgICB8IDphdHRyOmB0bV9pc2RzdGAgIHwgMCwgMSBvciAtMTsgc2VlIGJlbG93ICAgICAgICAgICB8CiAgICArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgTi9BICAgfCA6YXR0cjpgdG1fem9uZWAgICB8IGFiYnJldmlhdGlvbiBvZiB0aW1lem9uZSBuYW1lICAgfAorICAgKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IE4vQSAgIHwgOmF0dHI6YHRtX2dtdG9mZmAgfCBvZmZzZXQgZWFzdCBvZiBVVEMgaW4gc2Vjb25kcyAgIHwKKyAgICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiAgICBOb3RlIHRoYXQgdW5saWtlIHRoZSBDIHN0cnVjdHVyZSwgdGhlIG1vbnRoIHZhbHVlIGlzIGEgcmFuZ2Ugb2YgWzEsIDEyXSwgbm90Ci0gICBbMCwgMTFdLiAgQSB5ZWFyIHZhbHVlIHdpbGwgYmUgaGFuZGxlZCBhcyBkZXNjcmliZWQgdW5kZXIgOnJlZjpgWWVhciAyMDAwCi0gICAoWTJLKSBpc3N1ZXMgPHRpbWUteTJraXNzdWVzPmAgYWJvdmUuICBBIGBgLTFgYCBhcmd1bWVudCBhcyB0aGUgZGF5bGlnaHQKKyAgIFswLCAxMV0uICBBIGBgLTFgYCBhcmd1bWVudCBhcyB0aGUgZGF5bGlnaHQKICAgIHNhdmluZ3MgZmxhZywgcGFzc2VkIHRvIDpmdW5jOmBta3RpbWVgIHdpbGwgdXN1YWxseSByZXN1bHQgaW4gdGhlIGNvcnJlY3QKICAgIGRheWxpZ2h0IHNhdmluZ3Mgc3RhdGUgdG8gYmUgZmlsbGVkIGluLgogCkBAIC00MjcsNiArNTU2LDkgQEAKICAgIDpjbGFzczpgc3RydWN0X3RpbWVgLCBvciBoYXZpbmcgZWxlbWVudHMgb2YgdGhlIHdyb25nIHR5cGUsIGEKICAgIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLgogCisgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgIDphdHRyOmB0bV9nbXRvZmZgIGFuZCA6YXR0cjpgdG1fem9uZWAgYXR0cmlidXRlcyBhcmUgYXZhaWxhYmxlIG9uIHBsYXRmb3JtcworICAgICB3aXRoIEMgbGlicmFyeSBzdXBwb3J0aW5nIHRoZSBjb3JyZXNwb25kaW5nIGZpZWxkcyBpbiBgYHN0cnVjdCB0bWBgLgogCiAuLiBmdW5jdGlvbjo6IHRpbWUoKQogCkBAIC00MzcsNyArNTY5LDYgQEAKICAgIGxvd2VyIHZhbHVlIHRoYW4gYSBwcmV2aW91cyBjYWxsIGlmIHRoZSBzeXN0ZW0gY2xvY2sgaGFzIGJlZW4gc2V0IGJhY2sgYmV0d2VlbgogICAgdGhlIHR3byBjYWxscy4KIAotCiAuLiBkYXRhOjogdGltZXpvbmUKIAogICAgVGhlIG9mZnNldCBvZiB0aGUgbG9jYWwgKG5vbi1EU1QpIHRpbWV6b25lLCBpbiBzZWNvbmRzIHdlc3Qgb2YgVVRDIChuZWdhdGl2ZSBpbgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGltZWl0LnJzdCBiL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QKaW5kZXggYTNlYzY2Zi4uYTQ4NzkxNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGltZWl0LnJzdAorKysgYi9Eb2MvbGlicmFyeS90aW1laXQucnN0CkBAIC03MywxMyArNzMsMTAgQEAKIAogLi4gZnVuY3Rpb246OiBkZWZhdWx0X3RpbWVyKCkKIAotICAgRGVmaW5lIGEgZGVmYXVsdCB0aW1lciwgaW4gYSBwbGF0Zm9ybS1zcGVjaWZpYyBtYW5uZXIuIE9uIFdpbmRvd3MsCi0gICA6ZnVuYzpgdGltZS5jbG9ja2AgaGFzIG1pY3Jvc2Vjb25kIGdyYW51bGFyaXR5LCBidXQgOmZ1bmM6YHRpbWUudGltZWAncwotICAgZ3JhbnVsYXJpdHkgaXMgMS82MHRoIG9mIGEgc2Vjb25kLiAgT24gVW5peCwgOmZ1bmM6YHRpbWUuY2xvY2tgIGhhcyAxLzEwMHRoIG9mCi0gICBhIHNlY29uZCBncmFudWxhcml0eSwgYW5kIDpmdW5jOmB0aW1lLnRpbWVgIGlzIG11Y2ggbW9yZSBwcmVjaXNlLiAgT24gZWl0aGVyCi0gICBwbGF0Zm9ybSwgOmZ1bmM6YGRlZmF1bHRfdGltZXJgIG1lYXN1cmVzIHdhbGwgY2xvY2sgdGltZSwgbm90IHRoZSBDUFUKLSAgIHRpbWUuICBUaGlzIG1lYW5zIHRoYXQgb3RoZXIgcHJvY2Vzc2VzIHJ1bm5pbmcgb24gdGhlIHNhbWUgY29tcHV0ZXIgbWF5Ci0gICBpbnRlcmZlcmUgd2l0aCB0aGUgdGltaW5nLgorICAgVGhlIGRlZmF1bHQgdGltZXIsIHdoaWNoIGlzIGFsd2F5cyA6ZnVuYzpgdGltZS5wZXJmX2NvdW50ZXJgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmZ1bmM6YHRpbWUucGVyZl9jb3VudGVyYCBpcyBub3cgdGhlIGRlZmF1bHQgdGltZXIuCiAKIAogLi4gY2xhc3M6OiBUaW1lcihzdG10PSdwYXNzJywgc2V0dXA9J3Bhc3MnLCB0aW1lcj08dGltZXIgZnVuY3Rpb24+KQpAQCAtMTg3LDEzICsxODQsMjAgQEAKIAogICAgc3RhdGVtZW50IHRvIGJlIGV4ZWN1dGVkIG9uY2UgaW5pdGlhbGx5IChkZWZhdWx0IGBgcGFzc2BgKQogCisuLiBjbWRvcHRpb246OiAtcCwgLS1wcm9jZXNzCisKKyAgIG1lYXN1cmUgcHJvY2VzcyB0aW1lLCBub3Qgd2FsbGNsb2NrIHRpbWUsIHVzaW5nIDpmdW5jOmB0aW1lLnByb2Nlc3NfdGltZWAKKyAgIGluc3RlYWQgb2YgOmZ1bmM6YHRpbWUucGVyZl9jb3VudGVyYCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC4uIGNtZG9wdGlvbjo6IC10LCAtLXRpbWUKIAotICAgdXNlIDpmdW5jOmB0aW1lLnRpbWVgIChkZWZhdWx0IG9uIGFsbCBwbGF0Zm9ybXMgYnV0IFdpbmRvd3MpCisgICB1c2UgOmZ1bmM6YHRpbWUudGltZWAgKGRlcHJlY2F0ZWQpCiAKIC4uIGNtZG9wdGlvbjo6IC1jLCAtLWNsb2NrCiAKLSAgIHVzZSA6ZnVuYzpgdGltZS5jbG9ja2AgKGRlZmF1bHQgb24gV2luZG93cykKKyAgIHVzZSA6ZnVuYzpgdGltZS5jbG9ja2AgKGRlcHJlY2F0ZWQpCiAKIC4uIGNtZG9wdGlvbjo6IC12LCAtLXZlcmJvc2UKIApAQCAtMjExLDEyICsyMTUsMTEgQEAKIElmIDpvcHRpb246YC1uYCBpcyBub3QgZ2l2ZW4sIGEgc3VpdGFibGUgbnVtYmVyIG9mIGxvb3BzIGlzIGNhbGN1bGF0ZWQgYnkgdHJ5aW5nCiBzdWNjZXNzaXZlIHBvd2VycyBvZiAxMCB1bnRpbCB0aGUgdG90YWwgdGltZSBpcyBhdCBsZWFzdCAwLjIgc2Vjb25kcy4KIAotOmZ1bmM6YGRlZmF1bHRfdGltZXJgIG1lYXN1cmF0aW9ucyBjYW4gYmUgYWZmZWN0ZWQgYnkgb3RoZXIgcHJvZ3JhbXMgcnVubmluZyBvbgotdGhlIHNhbWUgbWFjaGluZSwgc28KLXRoZSBiZXN0IHRoaW5nIHRvIGRvIHdoZW4gYWNjdXJhdGUgdGltaW5nIGlzIG5lY2Vzc2FyeSBpcyB0byByZXBlYXQKLXRoZSB0aW1pbmcgYSBmZXcgdGltZXMgYW5kIHVzZSB0aGUgYmVzdCB0aW1lLiAgVGhlIDpvcHRpb246YC1yYCBvcHRpb24gaXMgZ29vZAotZm9yIHRoaXM7IHRoZSBkZWZhdWx0IG9mIDMgcmVwZXRpdGlvbnMgaXMgcHJvYmFibHkgZW5vdWdoIGluIG1vc3QgY2FzZXMuICBPbgotVW5peCwgeW91IGNhbiB1c2UgOmZ1bmM6YHRpbWUuY2xvY2tgIHRvIG1lYXN1cmUgQ1BVIHRpbWUuCis6ZnVuYzpgZGVmYXVsdF90aW1lcmAgbWVhc3VyZW1lbnRzIGNhbiBiZSBhZmZlY3RlZCBieSBvdGhlciBwcm9ncmFtcyBydW5uaW5nIG9uCit0aGUgc2FtZSBtYWNoaW5lLCBzbyB0aGUgYmVzdCB0aGluZyB0byBkbyB3aGVuIGFjY3VyYXRlIHRpbWluZyBpcyBuZWNlc3NhcnkgaXMKK3RvIHJlcGVhdCB0aGUgdGltaW5nIGEgZmV3IHRpbWVzIGFuZCB1c2UgdGhlIGJlc3QgdGltZS4gIFRoZSA6b3B0aW9uOmAtcmAKK29wdGlvbiBpcyBnb29kIGZvciB0aGlzOyB0aGUgZGVmYXVsdCBvZiAzIHJlcGV0aXRpb25zIGlzIHByb2JhYmx5IGVub3VnaCBpbgorbW9zdCBjYXNlcy4gIFlvdSBjYW4gdXNlIDpmdW5jOmB0aW1lLnByb2Nlc3NfdGltZWAgdG8gbWVhc3VyZSBDUFUgdGltZS4KIAogLi4gbm90ZTo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RraW50ZXIucnN0IGIvRG9jL2xpYnJhcnkvdGtpbnRlci5yc3QKaW5kZXggZjZlMDk1YS4uODNhNTM3NSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGtpbnRlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGtpbnRlci5yc3QKQEAgLTE5NCwzNSArMTk0LDMwIEBACiAKIDo6CiAKLSAgIGZyb20gdGtpbnRlciBpbXBvcnQgKgorICAgIGltcG9ydCB0a2ludGVyIGFzIHRrCiAKLSAgIGNsYXNzIEFwcGxpY2F0aW9uKEZyYW1lKToKLSAgICAgICBkZWYgc2F5X2hpKHNlbGYpOgotICAgICAgICAgICBwcmludCgiaGkgdGhlcmUsIGV2ZXJ5b25lISIpCisgICAgY2xhc3MgQXBwbGljYXRpb24odGsuRnJhbWUpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyPU5vbmUpOgorICAgICAgICAgICAgdGsuRnJhbWUuX19pbml0X18oc2VsZiwgbWFzdGVyKQorICAgICAgICAgICAgc2VsZi5wYWNrKCkKKyAgICAgICAgICAgIHNlbGYuY3JlYXRlV2lkZ2V0cygpCiAKLSAgICAgICBkZWYgY3JlYXRlV2lkZ2V0cyhzZWxmKToKLSAgICAgICAgICAgc2VsZi5RVUlUID0gQnV0dG9uKHNlbGYpCi0gICAgICAgICAgIHNlbGYuUVVJVFsidGV4dCJdID0gIlFVSVQiCi0gICAgICAgICAgIHNlbGYuUVVJVFsiZmciXSA9ICJyZWQiCi0gICAgICAgICAgIHNlbGYuUVVJVFsiY29tbWFuZCJdID0gc2VsZi5xdWl0CisgICAgICAgIGRlZiBjcmVhdGVXaWRnZXRzKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5oaV90aGVyZSA9IHRrLkJ1dHRvbihzZWxmKQorICAgICAgICAgICAgc2VsZi5oaV90aGVyZVsidGV4dCJdID0gIkhlbGxvIFdvcmxkXG4oY2xpY2sgbWUpIgorICAgICAgICAgICAgc2VsZi5oaV90aGVyZVsiY29tbWFuZCJdID0gc2VsZi5zYXlfaGkKKyAgICAgICAgICAgIHNlbGYuaGlfdGhlcmUucGFjayhzaWRlPSJ0b3AiKQogCi0gICAgICAgICAgIHNlbGYuUVVJVC5wYWNrKHsic2lkZSI6ICJsZWZ0In0pCisgICAgICAgICAgICBzZWxmLlFVSVQgPSB0ay5CdXR0b24oc2VsZiwgdGV4dD0iUVVJVCIsIGZnPSJyZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1yb290LmRlc3Ryb3kpCisgICAgICAgICAgICBzZWxmLlFVSVQucGFjayhzaWRlPSJib3R0b20iKQogCi0gICAgICAgICAgIHNlbGYuaGlfdGhlcmUgPSBCdXR0b24oc2VsZikKLSAgICAgICAgICAgc2VsZi5oaV90aGVyZVsidGV4dCJdID0gIkhlbGxvIiwKLSAgICAgICAgICAgc2VsZi5oaV90aGVyZVsiY29tbWFuZCJdID0gc2VsZi5zYXlfaGkKKyAgICAgICAgZGVmIHNheV9oaShzZWxmKToKKyAgICAgICAgICAgIHByaW50KCJoaSB0aGVyZSwgZXZlcnlvbmUhIikKIAotICAgICAgICAgICBzZWxmLmhpX3RoZXJlLnBhY2soeyJzaWRlIjogImxlZnQifSkKLQotICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSk6Ci0gICAgICAgICAgIEZyYW1lLl9faW5pdF9fKHNlbGYsIG1hc3RlcikKLSAgICAgICAgICAgc2VsZi5wYWNrKCkKLSAgICAgICAgICAgc2VsZi5jcmVhdGVXaWRnZXRzKCkKLQotICAgcm9vdCA9IFRrKCkKLSAgIGFwcCA9IEFwcGxpY2F0aW9uKG1hc3Rlcj1yb290KQotICAgYXBwLm1haW5sb29wKCkKLSAgIHJvb3QuZGVzdHJveSgpCisgICAgcm9vdCA9IHRrLlRrKCkKKyAgICBhcHAgPSBBcHBsaWNhdGlvbihtYXN0ZXI9cm9vdCkKKyAgICBhcHAubWFpbmxvb3AoKQogCiAKIEEgKFZlcnkpIFF1aWNrIExvb2sgYXQgVGNsL1RrCkBAIC03NTUsMjIgKzc1MCwzMiBAQAogICAgZGlzcGxheWVkLiAgWW91IGNhbiB1c2UgdGhlc2UgOm1vZDpgdGtpbnRlcmAgZnVuY3Rpb25zIHRvIGFjY2VzcyB0aGVzZSBzcGVjaWFsCiAgICBwb2ludHMgaW4gdGV4dCB3aWRnZXRzOgogCi0gICBBdEVuZCgpCisuLiBmdW5jdGlvbjo6IEF0RW5kKCkKICAgICAgIHJlZmVycyB0byB0aGUgbGFzdCBwb3NpdGlvbiBpbiB0aGUgdGV4dAogCi0gICBBdEluc2VydCgpCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogQXRJbnNlcnQoKQogICAgICAgcmVmZXJzIHRvIHRoZSBwb2ludCB3aGVyZSB0aGUgdGV4dCBjdXJzb3IgaXMKIAotICAgQXRTZWxGaXJzdCgpCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogQXRTZWxGaXJzdCgpCiAgICAgICBpbmRpY2F0ZXMgdGhlIGJlZ2lubmluZyBwb2ludCBvZiB0aGUgc2VsZWN0ZWQgdGV4dAogCi0gICBBdFNlbExhc3QoKQorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IEF0U2VsTGFzdCgpCiAgICAgICBkZW5vdGVzIHRoZSBsYXN0IHBvaW50IG9mIHRoZSBzZWxlY3RlZCB0ZXh0IGFuZCBmaW5hbGx5CiAKLSAgIEF0KHhbLCB5XSkKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKworLi4gZnVuY3Rpb246OiBBdCh4WywgeV0pCiAgICAgICByZWZlcnMgdG8gdGhlIGNoYXJhY3RlciBhdCBwaXhlbCBsb2NhdGlvbiAqeCosICp5KiAod2l0aCAqeSogbm90IHVzZWQgaW4gdGhlCiAgICAgICBjYXNlIG9mIGEgdGV4dCBlbnRyeSB3aWRnZXQsIHdoaWNoIGNvbnRhaW5zIGEgc2luZ2xlIGxpbmUgb2YgdGV4dCkuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKwogVGV4dCB3aWRnZXQgaW5kZXhlcwogICAgVGhlIGluZGV4IG5vdGF0aW9uIGZvciBUZXh0IHdpZGdldHMgaXMgdmVyeSByaWNoIGFuZCBpcyBiZXN0IGRlc2NyaWJlZCBpbiB0aGUgVGsKICAgIG1hbiBwYWdlcy4KQEAgLTgxOCw0ICs4MjMsMyBAQAogcmVmZXJlbmNlIHRvIHRoZSBpbWFnZS4gV2hlbiB0aGUgbGFzdCBQeXRob24gcmVmZXJlbmNlIHRvIHRoZSBpbWFnZSBvYmplY3QgaXMKIGRlbGV0ZWQsIHRoZSBpbWFnZSBkYXRhIGlzIGRlbGV0ZWQgYXMgd2VsbCwgYW5kIFRrIHdpbGwgZGlzcGxheSBhbiBlbXB0eSBib3gKIHdoZXJldmVyIHRoZSBpbWFnZSB3YXMgdXNlZC4KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdG9rZW5pemUucnN0IGIvRG9jL2xpYnJhcnkvdG9rZW5pemUucnN0CmluZGV4IDcwOTE5Y2EuLjM3ZDlmNDEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Rva2VuaXplLnJzdAorKysgYi9Eb2MvbGlicmFyeS90b2tlbml6ZS5yc3QKQEAgLTE3LDkgKzE3LDExIEBACiAKIFRvIHNpbXBsaWZ5IHRva2VuIHN0cmVhbSBoYW5kbGluZywgYWxsIDpyZWY6YG9wZXJhdG9yc2AgYW5kIDpyZWY6YGRlbGltaXRlcnNgCiB0b2tlbnMgYXJlIHJldHVybmVkIHVzaW5nIHRoZSBnZW5lcmljIDpkYXRhOmB0b2tlbi5PUGAgdG9rZW4gdHlwZS4gIFRoZSBleGFjdAotdHlwZSBjYW4gYmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGUgdG9rZW4gYGBzdHJpbmdgYCBmaWVsZCBvbiB0aGUKLTp0ZXJtOmBuYW1lZCB0dXBsZWAgcmV0dXJuZWQgZnJvbSA6ZnVuYzpgdG9rZW5pemUudG9rZW5pemVgIGZvciB0aGUgY2hhcmFjdGVyCi1zZXF1ZW5jZSB0aGF0IGlkZW50aWZpZXMgYSBzcGVjaWZpYyBvcGVyYXRvciB0b2tlbi4KK3R5cGUgY2FuIGJlIGRldGVybWluZWQgYnkgY2hlY2tpbmcgdGhlIGBgZXhhY3RfdHlwZWBgIHByb3BlcnR5IG9uIHRoZQorOnRlcm06YG5hbWVkIHR1cGxlYCByZXR1cm5lZCBmcm9tIDpmdW5jOmB0b2tlbml6ZS50b2tlbml6ZWAuCisKK1Rva2VuaXppbmcgSW5wdXQKKy0tLS0tLS0tLS0tLS0tLS0KIAogVGhlIHByaW1hcnkgZW50cnkgcG9pbnQgaXMgYSA6dGVybTpgZ2VuZXJhdG9yYDoKIApAQCAtMzksOSArNDEsMTcgQEAKICAgIHJldHVybmVkIGFzIGEgOnRlcm06YG5hbWVkIHR1cGxlYCB3aXRoIHRoZSBmaWVsZCBuYW1lczoKICAgIGBgdHlwZSBzdHJpbmcgc3RhcnQgZW5kIGxpbmVgYC4KIAorICAgVGhlIHJldHVybmVkIDp0ZXJtOmBuYW1lZCB0dXBsZWAgaGFzIGEgYWRkaXRpb25hbCBwcm9wZXJ0eSBuYW1lZAorICAgYGBleGFjdF90eXBlYGAgdGhhdCBjb250YWlucyB0aGUgZXhhY3Qgb3BlcmF0b3IgdHlwZSBmb3IKKyAgIDpkYXRhOmB0b2tlbi5PUGAgdG9rZW5zLiAgRm9yIGFsbCBvdGhlciB0b2tlbiB0eXBlcyBgYGV4YWN0X3R5cGVgYAorICAgZXF1YWxzIHRoZSBuYW1lZCB0dXBsZSBgYHR5cGVgYCBmaWVsZC4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIG5hbWVkIHR1cGxlcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGBgZXhhY3RfdHlwZWBgLgorCiAgICA6ZnVuYzpgdG9rZW5pemVgIGRldGVybWluZXMgdGhlIHNvdXJjZSBlbmNvZGluZyBvZiB0aGUgZmlsZSBieSBsb29raW5nIGZvciBhCiAgICBVVEYtOCBCT00gb3IgZW5jb2RpbmcgY29va2llLCBhY2NvcmRpbmcgdG8gOnBlcDpgMjYzYC4KIApAQCAtMTIyLDYgKzEzMiwzOCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorLi4gX3Rva2VuaXplLWNsaToKKworQ29tbWFuZC1MaW5lIFVzYWdlCistLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKK1RoZSA6bW9kOmB0b2tlbml6ZWAgbW9kdWxlIGNhbiBiZSBleGVjdXRlZCBhcyBhIHNjcmlwdCBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCitJdCBpcyBhcyBzaW1wbGUgYXM6CisKKy4uIGNvZGUtYmxvY2s6OiBzaAorCisgICBweXRob24gLW0gdG9rZW5pemUgWy1lXSBbZmlsZW5hbWUucHldCisKK1RoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgYWNjZXB0ZWQ6CisKKy4uIHByb2dyYW06OiB0b2tlbml6ZQorCisuLiBjbWRvcHRpb246OiAtaCwgLS1oZWxwCisKKyAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKworLi4gY21kb3B0aW9uOjogLWUsIC0tZXhhY3QKKworICAgZGlzcGxheSB0b2tlbiBuYW1lcyB1c2luZyB0aGUgZXhhY3QgdHlwZQorCitJZiA6ZmlsZTpgZmlsZW5hbWUucHlgIGlzIHNwZWNpZmllZCBpdHMgY29udGVudHMgYXJlIHRva2VuaXplZCB0byBzdGRvdXQuCitPdGhlcndpc2UsIHRva2VuaXphdGlvbiBpcyBwZXJmb3JtZWQgb24gc3RkaW4uCisKK0V4YW1wbGVzCistLS0tLS0tLS0tLS0tLS0tLS0KKwogRXhhbXBsZSBvZiBhIHNjcmlwdCByZXdyaXRlciB0aGF0IHRyYW5zZm9ybXMgZmxvYXQgbGl0ZXJhbHMgaW50byBEZWNpbWFsCiBvYmplY3RzOjoKIApAQCAtMTY0LDMgKzIwNiw2MyBAQAogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoKHRva251bSwgdG9rdmFsKSkKICAgICAgICAgcmV0dXJuIHVudG9rZW5pemUocmVzdWx0KS5kZWNvZGUoJ3V0Zi04JykKIAorRXhhbXBsZSBvZiB0b2tlbml6aW5nIGZyb20gdGhlIGNvbW1hbmQgbGluZS4gIFRoZSBzY3JpcHQ6OgorCisgICAgZGVmIHNheV9oZWxsbygpOgorICAgICAgICBwcmludCgiSGVsbG8sIFdvcmxkISIpCisKKyAgICBzYXlfaGVsbG8oKQorCit3aWxsIGJlIHRva2VuaXplZCB0byB0aGUgZm9sbG93aW5nIG91dHB1dCB3aGVyZSB0aGUgZmlyc3QgY29sdW1uIGlzIHRoZSByYW5nZQorb2YgdGhlIGxpbmUvY29sdW1uIGNvb3JkaW5hdGVzIHdoZXJlIHRoZSB0b2tlbiBpcyBmb3VuZCwgdGhlIHNlY29uZCBjb2x1bW4gaXMKK3RoZSBuYW1lIG9mIHRoZSB0b2tlbiwgYW5kIHRoZSBmaW5hbCBjb2x1bW4gaXMgdGhlIHZhbHVlIG9mIHRoZSB0b2tlbiAoaWYgYW55KQorCisuLiBjb2RlLWJsb2NrOjogc2gKKworICAgICQgcHl0aG9uIC1tIHRva2VuaXplIGhlbGxvLnB5CisgICAgMCwwLTAsMDogICAgICAgICAgICBFTkNPRElORyAgICAgICAndXRmLTgnCisgICAgMSwwLTEsMzogICAgICAgICAgICBOQU1FICAgICAgICAgICAnZGVmJworICAgIDEsNC0xLDEzOiAgICAgICAgICAgTkFNRSAgICAgICAgICAgJ3NheV9oZWxsbycKKyAgICAxLDEzLTEsMTQ6ICAgICAgICAgIE9QICAgICAgICAgICAgICcoJworICAgIDEsMTQtMSwxNTogICAgICAgICAgT1AgICAgICAgICAgICAgJyknCisgICAgMSwxNS0xLDE2OiAgICAgICAgICBPUCAgICAgICAgICAgICAnOicKKyAgICAxLDE2LTEsMTc6ICAgICAgICAgIE5FV0xJTkUgICAgICAgICdcbicKKyAgICAyLDAtMiw0OiAgICAgICAgICAgIElOREVOVCAgICAgICAgICcgICAgJworICAgIDIsNC0yLDk6ICAgICAgICAgICAgTkFNRSAgICAgICAgICAgJ3ByaW50JworICAgIDIsOS0yLDEwOiAgICAgICAgICAgT1AgICAgICAgICAgICAgJygnCisgICAgMiwxMC0yLDI1OiAgICAgICAgICBTVFJJTkcgICAgICAgICAnIkhlbGxvLCBXb3JsZCEiJworICAgIDIsMjUtMiwyNjogICAgICAgICAgT1AgICAgICAgICAgICAgJyknCisgICAgMiwyNi0yLDI3OiAgICAgICAgICBORVdMSU5FICAgICAgICAnXG4nCisgICAgMywwLTMsMTogICAgICAgICAgICBOTCAgICAgICAgICAgICAnXG4nCisgICAgNCwwLTQsMDogICAgICAgICAgICBERURFTlQgICAgICAgICAnJworICAgIDQsMC00LDk6ICAgICAgICAgICAgTkFNRSAgICAgICAgICAgJ3NheV9oZWxsbycKKyAgICA0LDktNCwxMDogICAgICAgICAgIE9QICAgICAgICAgICAgICcoJworICAgIDQsMTAtNCwxMTogICAgICAgICAgT1AgICAgICAgICAgICAgJyknCisgICAgNCwxMS00LDEyOiAgICAgICAgICBORVdMSU5FICAgICAgICAnXG4nCisgICAgNSwwLTUsMDogICAgICAgICAgICBFTkRNQVJLRVIgICAgICAnJworCitUaGUgZXhhY3QgdG9rZW4gdHlwZSBuYW1lcyBjYW4gYmUgZGlzcGxheWVkIHVzaW5nIHRoZSBgYC1lYGAgb3B0aW9uOgorCisuLiBjb2RlLWJsb2NrOjogc2gKKworICAgICQgcHl0aG9uIC1tIHRva2VuaXplIC1lIGhlbGxvLnB5CisgICAgMCwwLTAsMDogICAgICAgICAgICBFTkNPRElORyAgICAgICAndXRmLTgnCisgICAgMSwwLTEsMzogICAgICAgICAgICBOQU1FICAgICAgICAgICAnZGVmJworICAgIDEsNC0xLDEzOiAgICAgICAgICAgTkFNRSAgICAgICAgICAgJ3NheV9oZWxsbycKKyAgICAxLDEzLTEsMTQ6ICAgICAgICAgIExQQVIgICAgICAgICAgICcoJworICAgIDEsMTQtMSwxNTogICAgICAgICAgUlBBUiAgICAgICAgICAgJyknCisgICAgMSwxNS0xLDE2OiAgICAgICAgICBDT0xPTiAgICAgICAgICAnOicKKyAgICAxLDE2LTEsMTc6ICAgICAgICAgIE5FV0xJTkUgICAgICAgICdcbicKKyAgICAyLDAtMiw0OiAgICAgICAgICAgIElOREVOVCAgICAgICAgICcgICAgJworICAgIDIsNC0yLDk6ICAgICAgICAgICAgTkFNRSAgICAgICAgICAgJ3ByaW50JworICAgIDIsOS0yLDEwOiAgICAgICAgICAgTFBBUiAgICAgICAgICAgJygnCisgICAgMiwxMC0yLDI1OiAgICAgICAgICBTVFJJTkcgICAgICAgICAnIkhlbGxvLCBXb3JsZCEiJworICAgIDIsMjUtMiwyNjogICAgICAgICAgUlBBUiAgICAgICAgICAgJyknCisgICAgMiwyNi0yLDI3OiAgICAgICAgICBORVdMSU5FICAgICAgICAnXG4nCisgICAgMywwLTMsMTogICAgICAgICAgICBOTCAgICAgICAgICAgICAnXG4nCisgICAgNCwwLTQsMDogICAgICAgICAgICBERURFTlQgICAgICAgICAnJworICAgIDQsMC00LDk6ICAgICAgICAgICAgTkFNRSAgICAgICAgICAgJ3NheV9oZWxsbycKKyAgICA0LDktNCwxMDogICAgICAgICAgIExQQVIgICAgICAgICAgICcoJworICAgIDQsMTAtNCwxMTogICAgICAgICAgUlBBUiAgICAgICAgICAgJyknCisgICAgNCwxMS00LDEyOiAgICAgICAgICBORVdMSU5FICAgICAgICAnXG4nCisgICAgNSwwLTUsMDogICAgICAgICAgICBFTkRNQVJLRVIgICAgICAnJwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvdHlwZXMucnN0CmluZGV4IGQ0YTc2YjYuLjY5NTQ4MGYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3R5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS90eXBlcy5yc3QKQEAgLTEsNSArMSw1IEBACi06bW9kOmB0eXBlc2AgLS0tIE5hbWVzIGZvciBidWlsdC1pbiB0eXBlcwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzptb2Q6YHR5cGVzYCAtLS0gRHluYW1pYyB0eXBlIGNyZWF0aW9uIGFuZCBuYW1lcyBmb3IgYnVpbHQtaW4gdHlwZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLi4gbW9kdWxlOjogdHlwZXMKICAgIDpzeW5vcHNpczogTmFtZXMgZm9yIGJ1aWx0LWluIHR5cGVzLgpAQCAtOCwyMCArOCw3NyBAQAogCiAtLS0tLS0tLS0tLS0tLQogCi1UaGlzIG1vZHVsZSBkZWZpbmVzIG5hbWVzIGZvciBzb21lIG9iamVjdCB0eXBlcyB0aGF0IGFyZSB1c2VkIGJ5IHRoZSBzdGFuZGFyZAorVGhpcyBtb2R1bGUgZGVmaW5lcyB1dGlsaXR5IGZ1bmN0aW9uIHRvIGFzc2lzdCBpbiBkeW5hbWljIGNyZWF0aW9uIG9mCituZXcgdHlwZXMuCisKK0l0IGFsc28gZGVmaW5lcyBuYW1lcyBmb3Igc29tZSBvYmplY3QgdHlwZXMgdGhhdCBhcmUgdXNlZCBieSB0aGUgc3RhbmRhcmQKIFB5dGhvbiBpbnRlcnByZXRlciwgYnV0IG5vdCBleHBvc2VkIGFzIGJ1aWx0aW5zIGxpa2UgOmNsYXNzOmBpbnRgIG9yCi06Y2xhc3M6YHN0cmAgYXJlLiAgQWxzbywgaXQgZG9lcyBub3QgaW5jbHVkZSBzb21lIG9mIHRoZSB0eXBlcyB0aGF0IGFyaXNlCi10cmFuc3BhcmVudGx5IGR1cmluZyBwcm9jZXNzaW5nIHN1Y2ggYXMgdGhlIGBgbGlzdGl0ZXJhdG9yYGAgdHlwZS4KKzpjbGFzczpgc3RyYCBhcmUuCiAKLVR5cGljYWwgdXNlIGlzIGZvciA6ZnVuYzpgaXNpbnN0YW5jZWAgb3IgOmZ1bmM6YGlzc3ViY2xhc3NgIGNoZWNrcy4KIAotVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgbmFtZXM6CitEeW5hbWljIFR5cGUgQ3JlYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBmdW5jdGlvbjo6IG5ld19jbGFzcyhuYW1lLCBiYXNlcz0oKSwga3dkcz1Ob25lLCBleGVjX2JvZHk9Tm9uZSkKKworICAgQ3JlYXRlcyBhIGNsYXNzIG9iamVjdCBkeW5hbWljYWxseSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzLgorCisgICBUaGUgZmlyc3QgdGhyZWUgYXJndW1lbnRzIGFyZSB0aGUgY29tcG9uZW50cyB0aGF0IG1ha2UgdXAgYSBjbGFzcworICAgZGVmaW5pdGlvbiBoZWFkZXI6IHRoZSBjbGFzcyBuYW1lLCB0aGUgYmFzZSBjbGFzc2VzIChpbiBvcmRlciksIHRoZQorICAga2V5d29yZCBhcmd1bWVudHMgKHN1Y2ggYXMgYGBtZXRhY2xhc3NgYCkuCisKKyAgIFRoZSAqZXhlY19ib2R5KiBhcmd1bWVudCBpcyBhIGNhbGxiYWNrIHRoYXQgaXMgdXNlZCB0byBwb3B1bGF0ZSB0aGUKKyAgIGZyZXNobHkgY3JlYXRlZCBjbGFzcyBuYW1lc3BhY2UuIEl0IHNob3VsZCBhY2NlcHQgdGhlIGNsYXNzIG5hbWVzcGFjZQorICAgYXMgaXRzIHNvbGUgYXJndW1lbnQgYW5kIHVwZGF0ZSB0aGUgbmFtZXNwYWNlIGRpcmVjdGx5IHdpdGggdGhlIGNsYXNzCisgICBjb250ZW50cy4gSWYgbm8gY2FsbGJhY2sgaXMgcHJvdmlkZWQsIGl0IGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgcGFzc2luZworICAgaW4gYGBsYW1iZGEgbnM6IG5zYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IHByZXBhcmVfY2xhc3MobmFtZSwgYmFzZXM9KCksIGt3ZHM9Tm9uZSkKKworICAgQ2FsY3VsYXRlcyB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGFuZCBjcmVhdGVzIHRoZSBjbGFzcyBuYW1lc3BhY2UuCisKKyAgIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBjb21wb25lbnRzIHRoYXQgbWFrZSB1cCBhIGNsYXNzIGRlZmluaXRpb24gaGVhZGVyOgorICAgdGhlIGNsYXNzIG5hbWUsIHRoZSBiYXNlIGNsYXNzZXMgKGluIG9yZGVyKSBhbmQgdGhlIGtleXdvcmQgYXJndW1lbnRzCisgICAoc3VjaCBhcyBgYG1ldGFjbGFzc2BgKS4KKworICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIDMtdHVwbGU6IGBgbWV0YWNsYXNzLCBuYW1lc3BhY2UsIGt3ZHNgYAorCisgICAqbWV0YWNsYXNzKiBpcyB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzLCAqbmFtZXNwYWNlKiBpcyB0aGUKKyAgIHByZXBhcmVkIGNsYXNzIG5hbWVzcGFjZSBhbmQgKmt3ZHMqIGlzIGFuIHVwZGF0ZWQgY29weSBvZiB0aGUgcGFzc2VkCisgICBpbiAqa3dkcyogYXJndW1lbnQgd2l0aCBhbnkgYGAnbWV0YWNsYXNzJ2BgIGVudHJ5IHJlbW92ZWQuIElmIG5vICprd2RzKgorICAgYXJndW1lbnQgaXMgcGFzc2VkIGluLCB0aGlzIHdpbGwgYmUgYW4gZW1wdHkgZGljdC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIHNlZWFsc286OgorCisgICA6cmVmOmBtZXRhY2xhc3Nlc2AKKyAgICAgIEZ1bGwgZGV0YWlscyBvZiB0aGUgY2xhc3MgY3JlYXRpb24gcHJvY2VzcyBzdXBwb3J0ZWQgYnkgdGhlc2UgZnVuY3Rpb25zCisKKyAgIDpwZXA6YDMxMTVgIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMwMDAKKyAgICAgIEludHJvZHVjZWQgdGhlIGBgX19wcmVwYXJlX19gYCBuYW1lc3BhY2UgaG9vaworCisKK1N0YW5kYXJkIEludGVycHJldGVyIFR5cGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIG1vZHVsZSBwcm92aWRlcyBuYW1lcyBmb3IgbWFueSBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgcmVxdWlyZWQgdG8KK2ltcGxlbWVudCBhIFB5dGhvbiBpbnRlcnByZXRlci4gSXQgZGVsaWJlcmF0ZWx5IGF2b2lkcyBpbmNsdWRpbmcgc29tZSBvZgordGhlIHR5cGVzIHRoYXQgYXJpc2Ugb25seSBpbmNpZGVudGFsbHkgZHVyaW5nIHByb2Nlc3Npbmcgc3VjaCBhcyB0aGUKK2BgbGlzdGl0ZXJhdG9yYGAgdHlwZS4KKworVHlwaWNhbCB1c2Ugb2YgdGhlc2UgbmFtZXMgaXMgZm9yIDpmdW5jOmBpc2luc3RhbmNlYCBvcgorOmZ1bmM6YGlzc3ViY2xhc3NgIGNoZWNrcy4KKworU3RhbmRhcmQgbmFtZXMgYXJlIGRlZmluZWQgZm9yIHRoZSBmb2xsb3dpbmcgdHlwZXM6CiAKIC4uIGRhdGE6OiBGdW5jdGlvblR5cGUKICAgICAgICAgICBMYW1iZGFUeXBlCiAKLSAgIFRoZSB0eXBlIG9mIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgYW5kIGZ1bmN0aW9ucyBjcmVhdGVkIGJ5IDprZXl3b3JkOmBsYW1iZGFgCi0gICBleHByZXNzaW9ucy4KKyAgIFRoZSB0eXBlIG9mIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgYW5kIGZ1bmN0aW9ucyBjcmVhdGVkIGJ5CisgICA6a2V5d29yZDpgbGFtYmRhYCAgZXhwcmVzc2lvbnMuCiAKIAogLi4gZGF0YTo6IEdlbmVyYXRvclR5cGUKQEAgLTg1LDMgKzE0Miw3OSBAQAogCiAgICAgICBJbiBvdGhlciBpbXBsZW1lbnRhdGlvbnMgb2YgUHl0aG9uLCB0aGlzIHR5cGUgbWF5IGJlIGlkZW50aWNhbCB0bwogICAgICAgYGBHZXRTZXREZXNjcmlwdG9yVHlwZWBgLgorCisuLiBjbGFzczo6IE1hcHBpbmdQcm94eVR5cGUobWFwcGluZykKKworICAgUmVhZC1vbmx5IHByb3h5IG9mIGEgbWFwcGluZy4gSXQgcHJvdmlkZXMgYSBkeW5hbWljIHZpZXcgb24gdGhlIG1hcHBpbmcncworICAgZW50cmllcywgd2hpY2ggbWVhbnMgdGhhdCB3aGVuIHRoZSBtYXBwaW5nIGNoYW5nZXMsIHRoZSB2aWV3IHJlZmxlY3RzIHRoZXNlCisgICBjaGFuZ2VzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gZGVzY3JpYmU6OiBrZXkgaW4gcHJveHkKKworICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcgaGFzIGEga2V5ICprZXkqLCBlbHNlCisgICAgICBgYEZhbHNlYGAuCisKKyAgIC4uIGRlc2NyaWJlOjogcHJveHlba2V5XQorCisgICAgICBSZXR1cm4gdGhlIGl0ZW0gb2YgdGhlIHVuZGVybHlpbmcgbWFwcGluZyB3aXRoIGtleSAqa2V5Ki4gIFJhaXNlcyBhCisgICAgICA6ZXhjOmBLZXlFcnJvcmAgaWYgKmtleSogaXMgbm90IGluIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcuCisKKyAgIC4uIGRlc2NyaWJlOjogaXRlcihwcm94eSkKKworICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMgb2YgdGhlIHVuZGVybHlpbmcgbWFwcGluZy4gIFRoaXMgaXMgYQorICAgICAgc2hvcnRjdXQgZm9yIGBgaXRlcihwcm94eS5rZXlzKCkpYGAuCisKKyAgIC4uIGRlc2NyaWJlOjogbGVuKHByb3h5KQorCisgICAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgdW5kZXJseWluZyBtYXBwaW5nLgorCisgICAuLiBtZXRob2Q6OiBjb3B5KCkKKworICAgICAgUmV0dXJuIGEgc2hhbGxvdyBjb3B5IG9mIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcuCisKKyAgIC4uIG1ldGhvZDo6IGdldChrZXlbLCBkZWZhdWx0XSkKKworICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBmb3IgKmtleSogaWYgKmtleSogaXMgaW4gdGhlIHVuZGVybHlpbmcgbWFwcGluZywgZWxzZQorICAgICAgKmRlZmF1bHQqLiAgSWYgKmRlZmF1bHQqIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8gYGBOb25lYGAsIHNvIHRoYXQKKyAgICAgIHRoaXMgbWV0aG9kIG5ldmVyIHJhaXNlcyBhIDpleGM6YEtleUVycm9yYC4KKworICAgLi4gbWV0aG9kOjogaXRlbXMoKQorCisgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgdW5kZXJseWluZyBtYXBwaW5nJ3MgaXRlbXMgKGBgKGtleSwgdmFsdWUpYGAKKyAgICAgIHBhaXJzKS4KKworICAgLi4gbWV0aG9kOjoga2V5cygpCisKKyAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcncyBrZXlzLgorCisgICAuLiBtZXRob2Q6OiB2YWx1ZXMoKQorCisgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgdW5kZXJseWluZyBtYXBwaW5nJ3MgdmFsdWVzLgorCisKKy4uIGNsYXNzOjogU2ltcGxlTmFtZXNwYWNlCisKKyAgIEEgc2ltcGxlIDpjbGFzczpgb2JqZWN0YCBzdWJjbGFzcyB0aGF0IHByb3ZpZGVzIGF0dHJpYnV0ZSBhY2Nlc3MgdG8gaXRzCisgICBuYW1lc3BhY2UsIGFzIHdlbGwgYXMgYSBtZWFuaW5nZnVsIHJlcHIuCisKKyAgIFVubGlrZSA6Y2xhc3M6YG9iamVjdGAsIHdpdGggYGBTaW1wbGVOYW1lc3BhY2VgYCB5b3UgY2FuIGFkZCBhbmQgcmVtb3ZlCisgICBhdHRyaWJ1dGVzLiAgSWYgYSBgYFNpbXBsZU5hbWVzcGFjZWBgIG9iamVjdCBpcyBpbml0aWFsaXplZCB3aXRoIGtleXdvcmQKKyAgIGFyZ3VtZW50cywgdGhvc2UgYXJlIGRpcmVjdGx5IGFkZGVkIHRvIHRoZSB1bmRlcmx5aW5nIG5hbWVzcGFjZS4KKworICAgVGhlIHR5cGUgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHRoZSBmb2xsb3dpbmcgY29kZTo6CisKKyAgICAgICBjbGFzcyBTaW1wbGVOYW1lc3BhY2U6CisgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShrd2FyZ3MpCisgICAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgICAgICAgIGtleXMgPSBzb3J0ZWQoc2VsZi5fX2RpY3RfXykKKyAgICAgICAgICAgICAgIGl0ZW1zID0gKCJ7fT17IXJ9Ii5mb3JtYXQoaywgc2VsZi5fX2RpY3RfX1trXSkgZm9yIGsgaW4ga2V5cykKKyAgICAgICAgICAgICAgIHJldHVybiAie30oe30pIi5mb3JtYXQodHlwZShzZWxmKS5fX25hbWVfXywgIiwgIi5qb2luKGl0ZW1zKSkKKworICAgYGBTaW1wbGVOYW1lc3BhY2VgYCBtYXkgYmUgdXNlZnVsIGFzIGEgcmVwbGFjZW1lbnQgZm9yIGBgY2xhc3MgTlM6IHBhc3NgYC4KKyAgIEhvd2V2ZXIsIGZvciBhIHN0cnVjdHVyZWQgcmVjb3JkIHR5cGUgdXNlIDpmdW5jOmB+Y29sbGVjdGlvbnMubmFtZWR0dXBsZWAKKyAgIGluc3RlYWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0IGIvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CmluZGV4IDMzYjVjZTAuLmFkNzBkZDkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdAorKysgYi9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKQEAgLTE1LDggKzE1LDggQEAKIAogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSAoVUNEKSB3aGljaAogZGVmaW5lcyBjaGFyYWN0ZXIgcHJvcGVydGllcyBmb3IgYWxsIFVuaWNvZGUgY2hhcmFjdGVycy4gVGhlIGRhdGEgY29udGFpbmVkIGluCi10aGlzIGRhdGFiYXNlIGlzIGNvbXBpbGVkIGZyb20gdGhlIGBVQ0QgdmVyc2lvbiA2LjAuMAotPGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzYuMC4wL3VjZD5gXy4KK3RoaXMgZGF0YWJhc2UgaXMgY29tcGlsZWQgZnJvbSB0aGUgYFVDRCB2ZXJzaW9uIDYuMS4wCis8aHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4xLjAvdWNkPmBfLgogCiBUaGUgbW9kdWxlIHVzZXMgdGhlIHNhbWUgbmFtZXMgYW5kIHN5bWJvbHMgYXMgZGVmaW5lZCBieSBVbmljb2RlCiBTdGFuZGFyZCBBbm5leCAjNDQsIGAiVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UiCkBAIC0yOSw2ICsyOSw5IEBACiAgICBMb29rIHVwIGNoYXJhY3RlciBieSBuYW1lLiAgSWYgYSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBpcyBmb3VuZCwgcmV0dXJuCiAgICB0aGUgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIuICBJZiBub3QgZm91bmQsIDpleGM6YEtleUVycm9yYCBpcyByYWlzZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBTdXBwb3J0IGZvciBuYW1lIGFsaWFzZXMgWyNdXyBhbmQgbmFtZWQgc2VxdWVuY2VzIFsjXV8gaGFzIGJlZW4gYWRkZWQuCisKIAogLi4gZnVuY3Rpb246OiBuYW1lKGNoclssIGRlZmF1bHRdKQogCkBAIC0xNjAsMyArMTYzLDkgQEAKICAgID4+PiB1bmljb2RlZGF0YS5iaWRpcmVjdGlvbmFsKCdcdTA2NjAnKSAjICdBJ3JhYmljLCAnTid1bWJlcgogICAgJ0FOJwogCisKKy4uIHJ1YnJpYzo6IEZvb3Rub3RlcworCisuLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4xLjAvdWNkL05hbWVBbGlhc2VzLnR4dAorCisuLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4xLjAvdWNkL05hbWVkU2VxdWVuY2VzLnR4dApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay1leGFtcGxlcy5yc3QgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLWV4YW1wbGVzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDEzNmViCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay1leGFtcGxlcy5yc3QKQEAgLTAsMCArMSwxMjQ2IEBACis6bW9kOmB1bml0dGVzdC5tb2NrYCAtLS0gZ2V0dGluZyBzdGFydGVkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZWF1dGhvcjo6IE1pY2hhZWwgRm9vcmQgPG1pY2hhZWxAcHl0aG9uLm9yZz4KKy4uIGN1cnJlbnRtb2R1bGU6OiB1bml0dGVzdC5tb2NrCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIF9nZXR0aW5nLXN0YXJ0ZWQ6CisKK1VzaW5nIE1vY2sKKy0tLS0tLS0tLS0KKworTW9jayBQYXRjaGluZyBNZXRob2RzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworQ29tbW9uIHVzZXMgZm9yIDpjbGFzczpgTW9ja2Agb2JqZWN0cyBpbmNsdWRlOgorCisqIFBhdGNoaW5nIG1ldGhvZHMKKyogUmVjb3JkaW5nIG1ldGhvZCBjYWxscyBvbiBvYmplY3RzCisKK1lvdSBtaWdodCB3YW50IHRvIHJlcGxhY2UgYSBtZXRob2Qgb24gYW4gb2JqZWN0IHRvIGNoZWNrIHRoYXQKK2l0IGlzIGNhbGxlZCB3aXRoIHRoZSBjb3JyZWN0IGFyZ3VtZW50cyBieSBhbm90aGVyIHBhcnQgb2YgdGhlIHN5c3RlbToKKworICAgID4+PiByZWFsID0gU29tZUNsYXNzKCkKKyAgICA+Pj4gcmVhbC5tZXRob2QgPSBNYWdpY01vY2sobmFtZT0nbWV0aG9kJykKKyAgICA+Pj4gcmVhbC5tZXRob2QoMywgNCwgNSwga2V5PSd2YWx1ZScpCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtZXRob2QoKScgaWQ9Jy4uLic+CisKK09uY2Ugb3VyIG1vY2sgaGFzIGJlZW4gdXNlZCAoYHJlYWwubWV0aG9kYCBpbiB0aGlzIGV4YW1wbGUpIGl0IGhhcyBtZXRob2RzCithbmQgYXR0cmlidXRlcyB0aGF0IGFsbG93IHlvdSB0byBtYWtlIGFzc2VydGlvbnMgYWJvdXQgaG93IGl0IGhhcyBiZWVuIHVzZWQuCisKKy4uIG5vdGU6OgorCisgICAgSW4gbW9zdCBvZiB0aGVzZSBleGFtcGxlcyB0aGUgOmNsYXNzOmBNb2NrYCBhbmQgOmNsYXNzOmBNYWdpY01vY2tgIGNsYXNzZXMKKyAgICBhcmUgaW50ZXJjaGFuZ2VhYmxlLiBBcyB0aGUgYE1hZ2ljTW9ja2AgaXMgdGhlIG1vcmUgY2FwYWJsZSBjbGFzcyBpdCBtYWtlcworICAgIGEgc2Vuc2libGUgb25lIHRvIHVzZSBieSBkZWZhdWx0LgorCitPbmNlIHRoZSBtb2NrIGhhcyBiZWVuIGNhbGxlZCBpdHMgOmF0dHI6YH5Nb2NrLmNhbGxlZGAgYXR0cmlidXRlIGlzIHNldCB0bworYFRydWVgLiBNb3JlIGltcG9ydGFudGx5IHdlIGNhbiB1c2UgdGhlIDptZXRoOmB+TW9jay5hc3NlcnRfY2FsbGVkX3dpdGhgIG9yCis6bWV0aDpgfk1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGhgIG1ldGhvZCB0byBjaGVjayB0aGF0IGl0IHdhcyBjYWxsZWQgd2l0aAordGhlIGNvcnJlY3QgYXJndW1lbnRzLgorCitUaGlzIGV4YW1wbGUgdGVzdHMgdGhhdCBjYWxsaW5nIGBQcm9kdWN0aW9uQ2xhc3MoKS5tZXRob2RgIHJlc3VsdHMgaW4gYSBjYWxsIHRvCit0aGUgYHNvbWV0aGluZ2AgbWV0aG9kOgorCisgICAgPj4+IGNsYXNzIFByb2R1Y3Rpb25DbGFzczoKKyAgICAuLi4gICAgIGRlZiBtZXRob2Qoc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5zb21ldGhpbmcoMSwgMiwgMykKKyAgICAuLi4gICAgIGRlZiBzb21ldGhpbmcoc2VsZiwgYSwgYiwgYyk6CisgICAgLi4uICAgICAgICAgcGFzcworICAgIC4uLgorICAgID4+PiByZWFsID0gUHJvZHVjdGlvbkNsYXNzKCkKKyAgICA+Pj4gcmVhbC5zb21ldGhpbmcgPSBNYWdpY01vY2soKQorICAgID4+PiByZWFsLm1ldGhvZCgpCisgICAgPj4+IHJlYWwuc29tZXRoaW5nLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEsIDIsIDMpCisKKworCitNb2NrIGZvciBNZXRob2QgQ2FsbHMgb24gYW4gT2JqZWN0Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0luIHRoZSBsYXN0IGV4YW1wbGUgd2UgcGF0Y2hlZCBhIG1ldGhvZCBkaXJlY3RseSBvbiBhbiBvYmplY3QgdG8gY2hlY2sgdGhhdCBpdAord2FzIGNhbGxlZCBjb3JyZWN0bHkuIEFub3RoZXIgY29tbW9uIHVzZSBjYXNlIGlzIHRvIHBhc3MgYW4gb2JqZWN0IGludG8gYQorbWV0aG9kIChvciBzb21lIHBhcnQgb2YgdGhlIHN5c3RlbSB1bmRlciB0ZXN0KSBhbmQgdGhlbiBjaGVjayB0aGF0IGl0IGlzIHVzZWQKK2luIHRoZSBjb3JyZWN0IHdheS4KKworVGhlIHNpbXBsZSBgUHJvZHVjdGlvbkNsYXNzYCBiZWxvdyBoYXMgYSBgY2xvc2VyYCBtZXRob2QuIElmIGl0IGlzIGNhbGxlZCB3aXRoCithbiBvYmplY3QgdGhlbiBpdCBjYWxscyBgY2xvc2VgIG9uIGl0LgorCisgICAgPj4+IGNsYXNzIFByb2R1Y3Rpb25DbGFzczoKKyAgICAuLi4gICAgIGRlZiBjbG9zZXIoc2VsZiwgc29tZXRoaW5nKToKKyAgICAuLi4gICAgICAgICBzb21ldGhpbmcuY2xvc2UoKQorICAgIC4uLgorCitTbyB0byB0ZXN0IGl0IHdlIG5lZWQgdG8gcGFzcyBpbiBhbiBvYmplY3Qgd2l0aCBhIGBjbG9zZWAgbWV0aG9kIGFuZCBjaGVjawordGhhdCBpdCB3YXMgY2FsbGVkIGNvcnJlY3RseS4KKworICAgID4+PiByZWFsID0gUHJvZHVjdGlvbkNsYXNzKCkKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiByZWFsLmNsb3Nlcihtb2NrKQorICAgID4+PiBtb2NrLmNsb3NlLmFzc2VydF9jYWxsZWRfd2l0aCgpCisKK1dlIGRvbid0IGhhdmUgdG8gZG8gYW55IHdvcmsgdG8gcHJvdmlkZSB0aGUgJ2Nsb3NlJyBtZXRob2Qgb24gb3VyIG1vY2suCitBY2Nlc3NpbmcgY2xvc2UgY3JlYXRlcyBpdC4gU28sIGlmICdjbG9zZScgaGFzbid0IGFscmVhZHkgYmVlbiBjYWxsZWQgdGhlbgorYWNjZXNzaW5nIGl0IGluIHRoZSB0ZXN0IHdpbGwgY3JlYXRlIGl0LCBidXQgOm1ldGg6YH5Nb2NrLmFzc2VydF9jYWxsZWRfd2l0aGAKK3dpbGwgcmFpc2UgYSBmYWlsdXJlIGV4Y2VwdGlvbi4KKworCitNb2NraW5nIENsYXNzZXMKK35+fn5+fn5+fn5+fn5+fgorCitBIGNvbW1vbiB1c2UgY2FzZSBpcyB0byBtb2NrIG91dCBjbGFzc2VzIGluc3RhbnRpYXRlZCBieSB5b3VyIGNvZGUgdW5kZXIgdGVzdC4KK1doZW4geW91IHBhdGNoIGEgY2xhc3MsIHRoZW4gdGhhdCBjbGFzcyBpcyByZXBsYWNlZCB3aXRoIGEgbW9jay4gSW5zdGFuY2VzCithcmUgY3JlYXRlZCBieSAqY2FsbGluZyB0aGUgY2xhc3MqLiBUaGlzIG1lYW5zIHlvdSBhY2Nlc3MgdGhlICJtb2NrIGluc3RhbmNlIgorYnkgbG9va2luZyBhdCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBtb2NrZWQgY2xhc3MuCisKK0luIHRoZSBleGFtcGxlIGJlbG93IHdlIGhhdmUgYSBmdW5jdGlvbiBgc29tZV9mdW5jdGlvbmAgdGhhdCBpbnN0YW50aWF0ZXMgYEZvb2AKK2FuZCBjYWxscyBhIG1ldGhvZCBvbiBpdC4gVGhlIGNhbGwgdG8gYHBhdGNoYCByZXBsYWNlcyB0aGUgY2xhc3MgYEZvb2Agd2l0aCBhCittb2NrLiBUaGUgYEZvb2AgaW5zdGFuY2UgaXMgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBtb2NrLCBzbyBpdCBpcyBjb25maWd1cmVkCitieSBtb2RpZnlpbmcgdGhlIG1vY2sgOmF0dHI6YH5Nb2NrLnJldHVybl92YWx1ZWAuCisKKyAgICA+Pj4gZGVmIHNvbWVfZnVuY3Rpb24oKToKKyAgICAuLi4gICAgIGluc3RhbmNlID0gbW9kdWxlLkZvbygpCisgICAgLi4uICAgICByZXR1cm4gaW5zdGFuY2UubWV0aG9kKCkKKyAgICAuLi4KKyAgICA+Pj4gd2l0aCBwYXRjaCgnbW9kdWxlLkZvbycpIGFzIG1vY2s6CisgICAgLi4uICAgICBpbnN0YW5jZSA9IG1vY2sucmV0dXJuX3ZhbHVlCisgICAgLi4uICAgICBpbnN0YW5jZS5tZXRob2QucmV0dXJuX3ZhbHVlID0gJ3RoZSByZXN1bHQnCisgICAgLi4uICAgICByZXN1bHQgPSBzb21lX2Z1bmN0aW9uKCkKKyAgICAuLi4gICAgIGFzc2VydCByZXN1bHQgPT0gJ3RoZSByZXN1bHQnCisKKworTmFtaW5nIHlvdXIgbW9ja3MKK35+fn5+fn5+fn5+fn5+fn5+CisKK0l0IGNhbiBiZSB1c2VmdWwgdG8gZ2l2ZSB5b3VyIG1vY2tzIGEgbmFtZS4gVGhlIG5hbWUgaXMgc2hvd24gaW4gdGhlIHJlcHIgb2YKK3RoZSBtb2NrIGFuZCBjYW4gYmUgaGVscGZ1bCB3aGVuIHRoZSBtb2NrIGFwcGVhcnMgaW4gdGVzdCBmYWlsdXJlIG1lc3NhZ2VzLiBUaGUKK25hbWUgaXMgYWxzbyBwcm9wYWdhdGVkIHRvIGF0dHJpYnV0ZXMgb3IgbWV0aG9kcyBvZiB0aGUgbW9jazoKKworICAgID4+PiBtb2NrID0gTWFnaWNNb2NrKG5hbWU9J2ZvbycpCisgICAgPj4+IG1vY2sKKyAgICA8TWFnaWNNb2NrIG5hbWU9J2ZvbycgaWQ9Jy4uLic+CisgICAgPj4+IG1vY2subWV0aG9kCisgICAgPE1hZ2ljTW9jayBuYW1lPSdmb28ubWV0aG9kJyBpZD0nLi4uJz4KKworCitUcmFja2luZyBhbGwgQ2FsbHMKK35+fn5+fn5+fn5+fn5+fn5+fgorCitPZnRlbiB5b3Ugd2FudCB0byB0cmFjayBtb3JlIHRoYW4gYSBzaW5nbGUgY2FsbCB0byBhIG1ldGhvZC4gVGhlCis6YXR0cjpgfk1vY2subW9ja19jYWxsc2AgYXR0cmlidXRlIHJlY29yZHMgYWxsIGNhbGxzCit0byBjaGlsZCBhdHRyaWJ1dGVzIG9mIHRoZSBtb2NrIC0gYW5kIGFsc28gdG8gdGhlaXIgY2hpbGRyZW4uCisKKyAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2subWV0aG9kKCknIGlkPScuLi4nPgorICAgID4+PiBtb2NrLmF0dHJpYnV0ZS5tZXRob2QoMTAsIHg9NTMpCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLmF0dHJpYnV0ZS5tZXRob2QoKScgaWQ9Jy4uLic+CisgICAgPj4+IG1vY2subW9ja19jYWxscworICAgIFtjYWxsLm1ldGhvZCgpLCBjYWxsLmF0dHJpYnV0ZS5tZXRob2QoMTAsIHg9NTMpXQorCitJZiB5b3UgbWFrZSBhbiBhc3NlcnRpb24gYWJvdXQgYG1vY2tfY2FsbHNgIGFuZCBhbnkgdW5leHBlY3RlZCBtZXRob2RzCitoYXZlIGJlZW4gY2FsbGVkLCB0aGVuIHRoZSBhc3NlcnRpb24gd2lsbCBmYWlsLiBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIGFzIHdlbGwKK2FzIGFzc2VydGluZyB0aGF0IHRoZSBjYWxscyB5b3UgZXhwZWN0ZWQgaGF2ZSBiZWVuIG1hZGUsIHlvdSBhcmUgYWxzbyBjaGVja2luZwordGhhdCB0aGV5IHdlcmUgbWFkZSBpbiB0aGUgcmlnaHQgb3JkZXIgYW5kIHdpdGggbm8gYWRkaXRpb25hbCBjYWxsczoKKworWW91IHVzZSB0aGUgOmRhdGE6YGNhbGxgIG9iamVjdCB0byBjb25zdHJ1Y3QgbGlzdHMgZm9yIGNvbXBhcmluZyB3aXRoCitgbW9ja19jYWxsc2A6CisKKyAgICA+Pj4gZXhwZWN0ZWQgPSBbY2FsbC5tZXRob2QoKSwgY2FsbC5hdHRyaWJ1dGUubWV0aG9kKDEwLCB4PTUzKV0KKyAgICA+Pj4gbW9jay5tb2NrX2NhbGxzID09IGV4cGVjdGVkCisgICAgVHJ1ZQorCisKK1NldHRpbmcgUmV0dXJuIFZhbHVlcyBhbmQgQXR0cmlidXRlcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1NldHRpbmcgdGhlIHJldHVybiB2YWx1ZXMgb24gYSBtb2NrIG9iamVjdCBpcyB0cml2aWFsbHkgZWFzeToKKworICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgPj4+IG1vY2sucmV0dXJuX3ZhbHVlID0gMworICAgID4+PiBtb2NrKCkKKyAgICAzCisKK09mIGNvdXJzZSB5b3UgY2FuIGRvIHRoZSBzYW1lIGZvciBtZXRob2RzIG9uIHRoZSBtb2NrOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gbW9jay5tZXRob2QucmV0dXJuX3ZhbHVlID0gMworICAgID4+PiBtb2NrLm1ldGhvZCgpCisgICAgMworCitUaGUgcmV0dXJuIHZhbHVlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgY29uc3RydWN0b3I6CisKKyAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPTMpCisgICAgPj4+IG1vY2soKQorICAgIDMKKworSWYgeW91IG5lZWQgYW4gYXR0cmlidXRlIHNldHRpbmcgb24geW91ciBtb2NrLCBqdXN0IGRvIGl0OgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gbW9jay54ID0gMworICAgID4+PiBtb2NrLngKKyAgICAzCisKK1NvbWV0aW1lcyB5b3Ugd2FudCB0byBtb2NrIHVwIGEgbW9yZSBjb21wbGV4IHNpdHVhdGlvbiwgbGlrZSBmb3IgZXhhbXBsZQorYG1vY2suY29ubmVjdGlvbi5jdXJzb3IoKS5leGVjdXRlKCJTRUxFQ1QgMSIpYC4gSWYgd2Ugd2FudGVkIHRoaXMgY2FsbCB0bworcmV0dXJuIGEgbGlzdCwgdGhlbiB3ZSBoYXZlIHRvIGNvbmZpZ3VyZSB0aGUgcmVzdWx0IG9mIHRoZSBuZXN0ZWQgY2FsbC4KKworV2UgY2FuIHVzZSA6ZGF0YTpgY2FsbGAgdG8gY29uc3RydWN0IHRoZSBzZXQgb2YgY2FsbHMgaW4gYSAiY2hhaW5lZCBjYWxsIiBsaWtlCit0aGlzIGZvciBlYXN5IGFzc2VydGlvbiBhZnRlcndhcmRzOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gY3Vyc29yID0gbW9jay5jb25uZWN0aW9uLmN1cnNvci5yZXR1cm5fdmFsdWUKKyAgICA+Pj4gY3Vyc29yLmV4ZWN1dGUucmV0dXJuX3ZhbHVlID0gWydmb28nXQorICAgID4+PiBtb2NrLmNvbm5lY3Rpb24uY3Vyc29yKCkuZXhlY3V0ZSgiU0VMRUNUIDEiKQorICAgIFsnZm9vJ10KKyAgICA+Pj4gZXhwZWN0ZWQgPSBjYWxsLmNvbm5lY3Rpb24uY3Vyc29yKCkuZXhlY3V0ZSgiU0VMRUNUIDEiKS5jYWxsX2xpc3QoKQorICAgID4+PiBtb2NrLm1vY2tfY2FsbHMKKyAgICBbY2FsbC5jb25uZWN0aW9uLmN1cnNvcigpLCBjYWxsLmNvbm5lY3Rpb24uY3Vyc29yKCkuZXhlY3V0ZSgnU0VMRUNUIDEnKV0KKyAgICA+Pj4gbW9jay5tb2NrX2NhbGxzID09IGV4cGVjdGVkCisgICAgVHJ1ZQorCitJdCBpcyB0aGUgY2FsbCB0byBgLmNhbGxfbGlzdCgpYCB0aGF0IHR1cm5zIG91ciBjYWxsIG9iamVjdCBpbnRvIGEgbGlzdCBvZgorY2FsbHMgcmVwcmVzZW50aW5nIHRoZSBjaGFpbmVkIGNhbGxzLgorCisKK1JhaXNpbmcgZXhjZXB0aW9ucyB3aXRoIG1vY2tzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitBIHVzZWZ1bCBhdHRyaWJ1dGUgaXMgOmF0dHI6YH5Nb2NrLnNpZGVfZWZmZWN0YC4gSWYgeW91IHNldCB0aGlzIHRvIGFuCitleGNlcHRpb24gY2xhc3Mgb3IgaW5zdGFuY2UgdGhlbiB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gdGhlIG1vY2sKK2lzIGNhbGxlZC4KKworICAgID4+PiBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1FeGNlcHRpb24oJ0Jvb20hJykpCisgICAgPj4+IG1vY2soKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIEV4Y2VwdGlvbjogQm9vbSEKKworCitTaWRlIGVmZmVjdCBmdW5jdGlvbnMgYW5kIGl0ZXJhYmxlcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworYHNpZGVfZWZmZWN0YCBjYW4gYWxzbyBiZSBzZXQgdG8gYSBmdW5jdGlvbiBvciBhbiBpdGVyYWJsZS4gVGhlIHVzZSBjYXNlIGZvcgorYHNpZGVfZWZmZWN0YCBhcyBhbiBpdGVyYWJsZSBpcyB3aGVyZSB5b3VyIG1vY2sgaXMgZ29pbmcgdG8gYmUgY2FsbGVkIHNldmVyYWwKK3RpbWVzLCBhbmQgeW91IHdhbnQgZWFjaCBjYWxsIHRvIHJldHVybiBhIGRpZmZlcmVudCB2YWx1ZS4gV2hlbiB5b3Ugc2V0Citgc2lkZV9lZmZlY3RgIHRvIGFuIGl0ZXJhYmxlIGV2ZXJ5IGNhbGwgdG8gdGhlIG1vY2sgcmV0dXJucyB0aGUgbmV4dCB2YWx1ZQorZnJvbSB0aGUgaXRlcmFibGU6CisKKyAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jayhzaWRlX2VmZmVjdD1bNCwgNSwgNl0pCisgICAgPj4+IG1vY2soKQorICAgIDQKKyAgICA+Pj4gbW9jaygpCisgICAgNQorICAgID4+PiBtb2NrKCkKKyAgICA2CisKKworRm9yIG1vcmUgYWR2YW5jZWQgdXNlIGNhc2VzLCBsaWtlIGR5bmFtaWNhbGx5IHZhcnlpbmcgdGhlIHJldHVybiB2YWx1ZXMKK2RlcGVuZGluZyBvbiB3aGF0IHRoZSBtb2NrIGlzIGNhbGxlZCB3aXRoLCBgc2lkZV9lZmZlY3RgIGNhbiBiZSBhIGZ1bmN0aW9uLgorVGhlIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHNhbWUgYXJndW1lbnRzIGFzIHRoZSBtb2NrLiBXaGF0ZXZlciB0aGUKK2Z1bmN0aW9uIHJldHVybnMgaXMgd2hhdCB0aGUgY2FsbCByZXR1cm5zOgorCisgICAgPj4+IHZhbHMgPSB7KDEsIDIpOiAxLCAoMiwgMyk6IDJ9CisgICAgPj4+IGRlZiBzaWRlX2VmZmVjdCgqYXJncyk6CisgICAgLi4uICAgICByZXR1cm4gdmFsc1thcmdzXQorICAgIC4uLgorICAgID4+PiBtb2NrID0gTWFnaWNNb2NrKHNpZGVfZWZmZWN0PXNpZGVfZWZmZWN0KQorICAgID4+PiBtb2NrKDEsIDIpCisgICAgMQorICAgID4+PiBtb2NrKDIsIDMpCisgICAgMgorCisKK0NyZWF0aW5nIGEgTW9jayBmcm9tIGFuIEV4aXN0aW5nIE9iamVjdAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK09uZSBwcm9ibGVtIHdpdGggb3ZlciB1c2Ugb2YgbW9ja2luZyBpcyB0aGF0IGl0IGNvdXBsZXMgeW91ciB0ZXN0cyB0byB0aGUKK2ltcGxlbWVudGF0aW9uIG9mIHlvdXIgbW9ja3MgcmF0aGVyIHRoYW4geW91ciByZWFsIGNvZGUuIFN1cHBvc2UgeW91IGhhdmUgYQorY2xhc3MgdGhhdCBpbXBsZW1lbnRzIGBzb21lX21ldGhvZGAuIEluIGEgdGVzdCBmb3IgYW5vdGhlciBjbGFzcywgeW91Citwcm92aWRlIGEgbW9jayBvZiB0aGlzIG9iamVjdCB0aGF0ICphbHNvKiBwcm92aWRlcyBgc29tZV9tZXRob2RgLiBJZiBsYXRlcgoreW91IHJlZmFjdG9yIHRoZSBmaXJzdCBjbGFzcywgc28gdGhhdCBpdCBubyBsb25nZXIgaGFzIGBzb21lX21ldGhvZGAgLSB0aGVuCit5b3VyIHRlc3RzIHdpbGwgY29udGludWUgdG8gcGFzcyBldmVuIHRob3VnaCB5b3VyIGNvZGUgaXMgbm93IGJyb2tlbiEKKworYE1vY2tgIGFsbG93cyB5b3UgdG8gcHJvdmlkZSBhbiBvYmplY3QgYXMgYSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgbW9jaywKK3VzaW5nIHRoZSBgc3BlY2Aga2V5d29yZCBhcmd1bWVudC4gQWNjZXNzaW5nIG1ldGhvZHMgLyBhdHRyaWJ1dGVzIG9uIHRoZQorbW9jayB0aGF0IGRvbid0IGV4aXN0IG9uIHlvdXIgc3BlY2lmaWNhdGlvbiBvYmplY3Qgd2lsbCBpbW1lZGlhdGVseSByYWlzZSBhbgorYXR0cmlidXRlIGVycm9yLiBJZiB5b3UgY2hhbmdlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB5b3VyIHNwZWNpZmljYXRpb24sIHRoZW4KK3Rlc3RzIHRoYXQgdXNlIHRoYXQgY2xhc3Mgd2lsbCBzdGFydCBmYWlsaW5nIGltbWVkaWF0ZWx5IHdpdGhvdXQgeW91IGhhdmluZyB0bworaW5zdGFudGlhdGUgdGhlIGNsYXNzIGluIHRob3NlIHRlc3RzLgorCisgICAgPj4+IG1vY2sgPSBNb2NrKHNwZWM9U29tZUNsYXNzKQorICAgID4+PiBtb2NrLm9sZF9tZXRob2QoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAuLi4KKyAgICBBdHRyaWJ1dGVFcnJvcjogb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ29sZF9tZXRob2QnCisKK0lmIHlvdSB3YW50IGEgc3Ryb25nZXIgZm9ybSBvZiBzcGVjaWZpY2F0aW9uIHRoYXQgcHJldmVudHMgdGhlIHNldHRpbmcKK29mIGFyYml0cmFyeSBhdHRyaWJ1dGVzIGFzIHdlbGwgYXMgdGhlIGdldHRpbmcgb2YgdGhlbSB0aGVuIHlvdSBjYW4gdXNlCitgc3BlY19zZXRgIGluc3RlYWQgb2YgYHNwZWNgLgorCisKKworUGF0Y2ggRGVjb3JhdG9ycworLS0tLS0tLS0tLS0tLS0tLQorCisuLiBub3RlOjoKKworICAgV2l0aCBgcGF0Y2hgIGl0IG1hdHRlcnMgdGhhdCB5b3UgcGF0Y2ggb2JqZWN0cyBpbiB0aGUgbmFtZXNwYWNlIHdoZXJlIHRoZXkKKyAgIGFyZSBsb29rZWQgdXAuIFRoaXMgaXMgbm9ybWFsbHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgZm9yIGEgcXVpY2sgZ3VpZGUKKyAgIHJlYWQgOnJlZjpgd2hlcmUgdG8gcGF0Y2ggPHdoZXJlLXRvLXBhdGNoPmAuCisKKworQSBjb21tb24gbmVlZCBpbiB0ZXN0cyBpcyB0byBwYXRjaCBhIGNsYXNzIGF0dHJpYnV0ZSBvciBhIG1vZHVsZSBhdHRyaWJ1dGUsCitmb3IgZXhhbXBsZSBwYXRjaGluZyBhIGJ1aWx0aW4gb3IgcGF0Y2hpbmcgYSBjbGFzcyBpbiBhIG1vZHVsZSB0byB0ZXN0IHRoYXQgaXQKK2lzIGluc3RhbnRpYXRlZC4gTW9kdWxlcyBhbmQgY2xhc3NlcyBhcmUgZWZmZWN0aXZlbHkgZ2xvYmFsLCBzbyBwYXRjaGluZyBvbgordGhlbSBoYXMgdG8gYmUgdW5kb25lIGFmdGVyIHRoZSB0ZXN0IG9yIHRoZSBwYXRjaCB3aWxsIHBlcnNpc3QgaW50byBvdGhlcgordGVzdHMgYW5kIGNhdXNlIGhhcmQgdG8gZGlhZ25vc2UgcHJvYmxlbXMuCisKK21vY2sgcHJvdmlkZXMgdGhyZWUgY29udmVuaWVudCBkZWNvcmF0b3JzIGZvciB0aGlzOiBgcGF0Y2hgLCBgcGF0Y2gub2JqZWN0YCBhbmQKK2BwYXRjaC5kaWN0YC4gYHBhdGNoYCB0YWtlcyBhIHNpbmdsZSBzdHJpbmcsIG9mIHRoZSBmb3JtCitgcGFja2FnZS5tb2R1bGUuQ2xhc3MuYXR0cmlidXRlYCB0byBzcGVjaWZ5IHRoZSBhdHRyaWJ1dGUgeW91IGFyZSBwYXRjaGluZy4gSXQKK2Fsc28gb3B0aW9uYWxseSB0YWtlcyBhIHZhbHVlIHRoYXQgeW91IHdhbnQgdGhlIGF0dHJpYnV0ZSAob3IgY2xhc3Mgb3IKK3doYXRldmVyKSB0byBiZSByZXBsYWNlZCB3aXRoLiAncGF0Y2gub2JqZWN0JyB0YWtlcyBhbiBvYmplY3QgYW5kIHRoZSBuYW1lIG9mCit0aGUgYXR0cmlidXRlIHlvdSB3b3VsZCBsaWtlIHBhdGNoZWQsIHBsdXMgb3B0aW9uYWxseSB0aGUgdmFsdWUgdG8gcGF0Y2ggaXQKK3dpdGguCisKK2BwYXRjaC5vYmplY3RgOgorCisgICAgPj4+IG9yaWdpbmFsID0gU29tZUNsYXNzLmF0dHJpYnV0ZQorICAgID4+PiBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ2F0dHJpYnV0ZScsIHNlbnRpbmVsLmF0dHJpYnV0ZSkKKyAgICAuLi4gZGVmIHRlc3QoKToKKyAgICAuLi4gICAgIGFzc2VydCBTb21lQ2xhc3MuYXR0cmlidXRlID09IHNlbnRpbmVsLmF0dHJpYnV0ZQorICAgIC4uLgorICAgID4+PiB0ZXN0KCkKKyAgICA+Pj4gYXNzZXJ0IFNvbWVDbGFzcy5hdHRyaWJ1dGUgPT0gb3JpZ2luYWwKKworICAgID4+PiBAcGF0Y2goJ3BhY2thZ2UubW9kdWxlLmF0dHJpYnV0ZScsIHNlbnRpbmVsLmF0dHJpYnV0ZSkKKyAgICAuLi4gZGVmIHRlc3QoKToKKyAgICAuLi4gICAgIGZyb20gcGFja2FnZS5tb2R1bGUgaW1wb3J0IGF0dHJpYnV0ZQorICAgIC4uLiAgICAgYXNzZXJ0IGF0dHJpYnV0ZSBpcyBzZW50aW5lbC5hdHRyaWJ1dGUKKyAgICAuLi4KKyAgICA+Pj4gdGVzdCgpCisKK0lmIHlvdSBhcmUgcGF0Y2hpbmcgYSBtb2R1bGUgKGluY2x1ZGluZyBgX19idWlsdGluX19gKSB0aGVuIHVzZSBgcGF0Y2hgCitpbnN0ZWFkIG9mIGBwYXRjaC5vYmplY3RgOgorCisgICAgPj4+IG1vY2sgPSBNYWdpY01vY2socmV0dXJuX3ZhbHVlID0gc2VudGluZWwuZmlsZV9oYW5kbGUpCisgICAgPj4+IHdpdGggcGF0Y2goJ19fYnVpbHRpbl9fLm9wZW4nLCBtb2NrKToKKyAgICAuLi4gICAgIGhhbmRsZSA9IG9wZW4oJ2ZpbGVuYW1lJywgJ3InKQorICAgIC4uLgorICAgID4+PiBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgnZmlsZW5hbWUnLCAncicpCisgICAgPj4+IGFzc2VydCBoYW5kbGUgPT0gc2VudGluZWwuZmlsZV9oYW5kbGUsICJpbmNvcnJlY3QgZmlsZSBoYW5kbGUgcmV0dXJuZWQiCisKK1RoZSBtb2R1bGUgbmFtZSBjYW4gYmUgJ2RvdHRlZCcsIGluIHRoZSBmb3JtIGBwYWNrYWdlLm1vZHVsZWAgaWYgbmVlZGVkOgorCisgICAgPj4+IEBwYXRjaCgncGFja2FnZS5tb2R1bGUuQ2xhc3NOYW1lLmF0dHJpYnV0ZScsIHNlbnRpbmVsLmF0dHJpYnV0ZSkKKyAgICAuLi4gZGVmIHRlc3QoKToKKyAgICAuLi4gICAgIGZyb20gcGFja2FnZS5tb2R1bGUgaW1wb3J0IENsYXNzTmFtZQorICAgIC4uLiAgICAgYXNzZXJ0IENsYXNzTmFtZS5hdHRyaWJ1dGUgPT0gc2VudGluZWwuYXR0cmlidXRlCisgICAgLi4uCisgICAgPj4+IHRlc3QoKQorCitBIG5pY2UgcGF0dGVybiBpcyB0byBhY3R1YWxseSBkZWNvcmF0ZSB0ZXN0IG1ldGhvZHMgdGhlbXNlbHZlczoKKworICAgID4+PiBjbGFzcyBNeVRlc3QodW5pdHRlc3QyLlRlc3RDYXNlKToKKyAgICAuLi4gICAgIEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnYXR0cmlidXRlJywgc2VudGluZWwuYXR0cmlidXRlKQorICAgIC4uLiAgICAgZGVmIHRlc3Rfc29tZXRoaW5nKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZUNsYXNzLmF0dHJpYnV0ZSwgc2VudGluZWwuYXR0cmlidXRlKQorICAgIC4uLgorICAgID4+PiBvcmlnaW5hbCA9IFNvbWVDbGFzcy5hdHRyaWJ1dGUKKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X3NvbWV0aGluZycpLnRlc3Rfc29tZXRoaW5nKCkKKyAgICA+Pj4gYXNzZXJ0IFNvbWVDbGFzcy5hdHRyaWJ1dGUgPT0gb3JpZ2luYWwKKworSWYgeW91IHdhbnQgdG8gcGF0Y2ggd2l0aCBhIE1vY2ssIHlvdSBjYW4gdXNlIGBwYXRjaGAgd2l0aCBvbmx5IG9uZSBhcmd1bWVudAorKG9yIGBwYXRjaC5vYmplY3RgIHdpdGggdHdvIGFyZ3VtZW50cykuIFRoZSBtb2NrIHdpbGwgYmUgY3JlYXRlZCBmb3IgeW91IGFuZAorcGFzc2VkIGludG8gdGhlIHRlc3QgZnVuY3Rpb24gLyBtZXRob2Q6CisKKyAgICA+Pj4gY2xhc3MgTXlUZXN0KHVuaXR0ZXN0Mi5UZXN0Q2FzZSk6CisgICAgLi4uICAgICBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ3N0YXRpY19tZXRob2QnKQorICAgIC4uLiAgICAgZGVmIHRlc3Rfc29tZXRoaW5nKHNlbGYsIG1vY2tfbWV0aG9kKToKKyAgICAuLi4gICAgICAgICBTb21lQ2xhc3Muc3RhdGljX21ldGhvZCgpCisgICAgLi4uICAgICAgICAgbW9ja19tZXRob2QuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAuLi4KKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X3NvbWV0aGluZycpLnRlc3Rfc29tZXRoaW5nKCkKKworWW91IGNhbiBzdGFjayB1cCBtdWx0aXBsZSBwYXRjaCBkZWNvcmF0b3JzIHVzaW5nIHRoaXMgcGF0dGVybjoKKworICAgID4+PiBjbGFzcyBNeVRlc3QodW5pdHRlc3QyLlRlc3RDYXNlKToKKyAgICAuLi4gICAgIEBwYXRjaCgncGFja2FnZS5tb2R1bGUuQ2xhc3NOYW1lMScpCisgICAgLi4uICAgICBAcGF0Y2goJ3BhY2thZ2UubW9kdWxlLkNsYXNzTmFtZTInKQorICAgIC4uLiAgICAgZGVmIHRlc3Rfc29tZXRoaW5nKHNlbGYsIE1vY2tDbGFzczIsIE1vY2tDbGFzczEpOgorICAgIC4uLiAgICAgICAgIHNlbGYuYXNzZXJ0SXMocGFja2FnZS5tb2R1bGUuQ2xhc3NOYW1lMSwgTW9ja0NsYXNzMSkKKyAgICAuLi4gICAgICAgICBzZWxmLmFzc2VydElzKHBhY2thZ2UubW9kdWxlLkNsYXNzTmFtZTIsIE1vY2tDbGFzczIpCisgICAgLi4uCisgICAgPj4+IE15VGVzdCgndGVzdF9zb21ldGhpbmcnKS50ZXN0X3NvbWV0aGluZygpCisKK1doZW4geW91IG5lc3QgcGF0Y2ggZGVjb3JhdG9ycyB0aGUgbW9ja3MgYXJlIHBhc3NlZCBpbiB0byB0aGUgZGVjb3JhdGVkCitmdW5jdGlvbiBpbiB0aGUgc2FtZSBvcmRlciB0aGV5IGFwcGxpZWQgKHRoZSBub3JtYWwgKnB5dGhvbiogb3JkZXIgdGhhdAorZGVjb3JhdG9ycyBhcmUgYXBwbGllZCkuIFRoaXMgbWVhbnMgZnJvbSB0aGUgYm90dG9tIHVwLCBzbyBpbiB0aGUgZXhhbXBsZQorYWJvdmUgdGhlIG1vY2sgZm9yIGB0ZXN0X21vZHVsZS5DbGFzc05hbWUyYCBpcyBwYXNzZWQgaW4gZmlyc3QuCisKK1RoZXJlIGlzIGFsc28gOmZ1bmM6YHBhdGNoLmRpY3RgIGZvciBzZXR0aW5nIHZhbHVlcyBpbiBhIGRpY3Rpb25hcnkganVzdAorZHVyaW5nIGEgc2NvcGUgYW5kIHJlc3RvcmluZyB0aGUgZGljdGlvbmFyeSB0byBpdHMgb3JpZ2luYWwgc3RhdGUgd2hlbiB0aGUgdGVzdAorZW5kczoKKworICAgPj4+IGZvbyA9IHsna2V5JzogJ3ZhbHVlJ30KKyAgID4+PiBvcmlnaW5hbCA9IGZvby5jb3B5KCkKKyAgID4+PiB3aXRoIHBhdGNoLmRpY3QoZm9vLCB7J25ld2tleSc6ICduZXd2YWx1ZSd9LCBjbGVhcj1UcnVlKToKKyAgIC4uLiAgICAgYXNzZXJ0IGZvbyA9PSB7J25ld2tleSc6ICduZXd2YWx1ZSd9CisgICAuLi4KKyAgID4+PiBhc3NlcnQgZm9vID09IG9yaWdpbmFsCisKK2BwYXRjaGAsIGBwYXRjaC5vYmplY3RgIGFuZCBgcGF0Y2guZGljdGAgY2FuIGFsbCBiZSB1c2VkIGFzIGNvbnRleHQgbWFuYWdlcnMuCisKK1doZXJlIHlvdSB1c2UgYHBhdGNoYCB0byBjcmVhdGUgYSBtb2NrIGZvciB5b3UsIHlvdSBjYW4gZ2V0IGEgcmVmZXJlbmNlIHRvIHRoZQorbW9jayB1c2luZyB0aGUgImFzIiBmb3JtIG9mIHRoZSB3aXRoIHN0YXRlbWVudDoKKworICAgID4+PiBjbGFzcyBQcm9kdWN0aW9uQ2xhc3M6CisgICAgLi4uICAgICBkZWYgbWV0aG9kKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHBhc3MKKyAgICAuLi4KKyAgICA+Pj4gd2l0aCBwYXRjaC5vYmplY3QoUHJvZHVjdGlvbkNsYXNzLCAnbWV0aG9kJykgYXMgbW9ja19tZXRob2Q6CisgICAgLi4uICAgICBtb2NrX21ldGhvZC5yZXR1cm5fdmFsdWUgPSBOb25lCisgICAgLi4uICAgICByZWFsID0gUHJvZHVjdGlvbkNsYXNzKCkKKyAgICAuLi4gICAgIHJlYWwubWV0aG9kKDEsIDIsIDMpCisgICAgLi4uCisgICAgPj4+IG1vY2tfbWV0aG9kLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCAzKQorCisKK0FzIGFuIGFsdGVybmF0aXZlIGBwYXRjaGAsIGBwYXRjaC5vYmplY3RgIGFuZCBgcGF0Y2guZGljdGAgY2FuIGJlIHVzZWQgYXMKK2NsYXNzIGRlY29yYXRvcnMuIFdoZW4gdXNlZCBpbiB0aGlzIHdheSBpdCBpcyB0aGUgc2FtZSBhcyBhcHBseWluZyB0aGUKK2RlY29yYXRvciBpbmR2aWR1YWxseSB0byBldmVyeSBtZXRob2Qgd2hvc2UgbmFtZSBzdGFydHMgd2l0aCAidGVzdCIuCisKKworLi4gX2Z1cnRoZXItZXhhbXBsZXM6CisKK0Z1cnRoZXIgRXhhbXBsZXMKKy0tLS0tLS0tLS0tLS0tLS0KKworCitIZXJlIGFyZSBzb21lIG1vcmUgZXhhbXBsZXMgZm9yIHNvbWUgc2xpZ2h0bHkgbW9yZSBhZHZhbmNlZCBzY2VuYXJpb3MuCisKKworTW9ja2luZyBjaGFpbmVkIGNhbGxzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworTW9ja2luZyBjaGFpbmVkIGNhbGxzIGlzIGFjdHVhbGx5IHN0cmFpZ2h0Zm9yd2FyZCB3aXRoIG1vY2sgb25jZSB5b3UKK3VuZGVyc3RhbmQgdGhlIDphdHRyOmB+TW9jay5yZXR1cm5fdmFsdWVgIGF0dHJpYnV0ZS4gV2hlbiBhIG1vY2sgaXMgY2FsbGVkIGZvcgordGhlIGZpcnN0IHRpbWUsIG9yIHlvdSBmZXRjaCBpdHMgYHJldHVybl92YWx1ZWAgYmVmb3JlIGl0IGhhcyBiZWVuIGNhbGxlZCwgYQorbmV3IGBNb2NrYCBpcyBjcmVhdGVkLgorCitUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiBzZWUgaG93IHRoZSBvYmplY3QgcmV0dXJuZWQgZnJvbSBhIGNhbGwgdG8gYSBtb2NrZWQKK29iamVjdCBoYXMgYmVlbiB1c2VkIGJ5IGludGVycm9nYXRpbmcgdGhlIGByZXR1cm5fdmFsdWVgIG1vY2s6CisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiBtb2NrKCkuZm9vKGE9MiwgYj0zKQorICAgIDxNb2NrIG5hbWU9J21vY2soKS5mb28oKScgaWQ9Jy4uLic+CisgICAgPj4+IG1vY2sucmV0dXJuX3ZhbHVlLmZvby5hc3NlcnRfY2FsbGVkX3dpdGgoYT0yLCBiPTMpCisKK0Zyb20gaGVyZSBpdCBpcyBhIHNpbXBsZSBzdGVwIHRvIGNvbmZpZ3VyZSBhbmQgdGhlbiBtYWtlIGFzc2VydGlvbnMgYWJvdXQKK2NoYWluZWQgY2FsbHMuIE9mIGNvdXJzZSBhbm90aGVyIGFsdGVybmF0aXZlIGlzIHdyaXRpbmcgeW91ciBjb2RlIGluIGEgbW9yZQordGVzdGFibGUgd2F5IGluIHRoZSBmaXJzdCBwbGFjZS4uLgorCitTbywgc3VwcG9zZSB3ZSBoYXZlIHNvbWUgY29kZSB0aGF0IGxvb2tzIGEgbGl0dGxlIGJpdCBsaWtlIHRoaXM6CisKKyAgICA+Pj4gY2xhc3MgU29tZXRoaW5nOgorICAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHNlbGYuYmFja2VuZCA9IEJhY2tlbmRQcm92aWRlcigpCisgICAgLi4uICAgICBkZWYgbWV0aG9kKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5iYWNrZW5kLmdldF9lbmRwb2ludCgnZm9vYmFyJykuY3JlYXRlX2NhbGwoJ3NwYW0nLCAnZWdncycpLnN0YXJ0X2NhbGwoKQorICAgIC4uLiAgICAgICAgICMgbW9yZSBjb2RlCisKK0Fzc3VtaW5nIHRoYXQgYEJhY2tlbmRQcm92aWRlcmAgaXMgYWxyZWFkeSB3ZWxsIHRlc3RlZCwgaG93IGRvIHdlIHRlc3QKK2BtZXRob2QoKWA/IFNwZWNpZmljYWxseSwgd2Ugd2FudCB0byB0ZXN0IHRoYXQgdGhlIGNvZGUgc2VjdGlvbiBgIyBtb3JlCitjb2RlYCB1c2VzIHRoZSByZXNwb25zZSBvYmplY3QgaW4gdGhlIGNvcnJlY3Qgd2F5LgorCitBcyB0aGlzIGNoYWluIG9mIGNhbGxzIGlzIG1hZGUgZnJvbSBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgd2UgY2FuIG1vbmtleSBwYXRjaAordGhlIGBiYWNrZW5kYCBhdHRyaWJ1dGUgb24gYSBgU29tZXRoaW5nYCBpbnN0YW5jZS4gSW4gdGhpcyBwYXJ0aWN1bGFyIGNhc2UKK3dlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIHJldHVybiB2YWx1ZSBmcm9tIHRoZSBmaW5hbCBjYWxsIHRvCitgc3RhcnRfY2FsbGAgc28gd2UgZG9uJ3QgaGF2ZSBtdWNoIGNvbmZpZ3VyYXRpb24gdG8gZG8uIExldCdzIGFzc3VtZSB0aGUKK29iamVjdCBpdCByZXR1cm5zIGlzICdmaWxlLWxpa2UnLCBzbyB3ZSdsbCBlbnN1cmUgdGhhdCBvdXIgcmVzcG9uc2Ugb2JqZWN0Cit1c2VzIHRoZSBidWlsdGluIGBmaWxlYCBhcyBpdHMgYHNwZWNgLgorCitUbyBkbyB0aGlzIHdlIGNyZWF0ZSBhIG1vY2sgaW5zdGFuY2UgYXMgb3VyIG1vY2sgYmFja2VuZCBhbmQgY3JlYXRlIGEgbW9jaworcmVzcG9uc2Ugb2JqZWN0IGZvciBpdC4gVG8gc2V0IHRoZSByZXNwb25zZSBhcyB0aGUgcmV0dXJuIHZhbHVlIGZvciB0aGF0IGZpbmFsCitgc3RhcnRfY2FsbGAgd2UgY291bGQgZG8gdGhpczoKKworICAgIGBtb2NrX2JhY2tlbmQuZ2V0X2VuZHBvaW50LnJldHVybl92YWx1ZS5jcmVhdGVfY2FsbC5yZXR1cm5fdmFsdWUuc3RhcnRfY2FsbC5yZXR1cm5fdmFsdWUgPSBtb2NrX3Jlc3BvbnNlYC4KKworV2UgY2FuIGRvIHRoYXQgaW4gYSBzbGlnaHRseSBuaWNlciB3YXkgdXNpbmcgdGhlIDptZXRoOmB+TW9jay5jb25maWd1cmVfbW9ja2AKK21ldGhvZCB0byBkaXJlY3RseSBzZXQgdGhlIHJldHVybiB2YWx1ZSBmb3IgdXM6CisKKyAgICA+Pj4gc29tZXRoaW5nID0gU29tZXRoaW5nKCkKKyAgICA+Pj4gbW9ja19yZXNwb25zZSA9IE1vY2soc3BlYz1maWxlKQorICAgID4+PiBtb2NrX2JhY2tlbmQgPSBNb2NrKCkKKyAgICA+Pj4gY29uZmlnID0geydnZXRfZW5kcG9pbnQucmV0dXJuX3ZhbHVlLmNyZWF0ZV9jYWxsLnJldHVybl92YWx1ZS5zdGFydF9jYWxsLnJldHVybl92YWx1ZSc6IG1vY2tfcmVzcG9uc2V9CisgICAgPj4+IG1vY2tfYmFja2VuZC5jb25maWd1cmVfbW9jaygqKmNvbmZpZykKKworV2l0aCB0aGVzZSB3ZSBtb25rZXkgcGF0Y2ggdGhlICJtb2NrIGJhY2tlbmQiIGluIHBsYWNlIGFuZCBjYW4gbWFrZSB0aGUgcmVhbAorY2FsbDoKKworICAgID4+PiBzb21ldGhpbmcuYmFja2VuZCA9IG1vY2tfYmFja2VuZAorICAgID4+PiBzb21ldGhpbmcubWV0aG9kKCkKKworVXNpbmcgOmF0dHI6YH5Nb2NrLm1vY2tfY2FsbHNgIHdlIGNhbiBjaGVjayB0aGUgY2hhaW5lZCBjYWxsIHdpdGggYSBzaW5nbGUKK2Fzc2VydC4gQSBjaGFpbmVkIGNhbGwgaXMgc2V2ZXJhbCBjYWxscyBpbiBvbmUgbGluZSBvZiBjb2RlLCBzbyB0aGVyZSB3aWxsIGJlCitzZXZlcmFsIGVudHJpZXMgaW4gYG1vY2tfY2FsbHNgLiBXZSBjYW4gdXNlIDptZXRoOmBjYWxsLmNhbGxfbGlzdGAgdG8gY3JlYXRlCit0aGlzIGxpc3Qgb2YgY2FsbHMgZm9yIHVzOgorCisgICAgPj4+IGNoYWluZWQgPSBjYWxsLmdldF9lbmRwb2ludCgnZm9vYmFyJykuY3JlYXRlX2NhbGwoJ3NwYW0nLCAnZWdncycpLnN0YXJ0X2NhbGwoKQorICAgID4+PiBjYWxsX2xpc3QgPSBjaGFpbmVkLmNhbGxfbGlzdCgpCisgICAgPj4+IGFzc2VydCBtb2NrX2JhY2tlbmQubW9ja19jYWxscyA9PSBjYWxsX2xpc3QKKworCitQYXJ0aWFsIG1vY2tpbmcKK35+fn5+fn5+fn5+fn5+fgorCitJbiBzb21lIHRlc3RzIEkgd2FudGVkIHRvIG1vY2sgb3V0IGEgY2FsbCB0byBgZGF0ZXRpbWUuZGF0ZS50b2RheSgpCis8aHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L2RhdGV0aW1lLmh0bWwjZGF0ZXRpbWUuZGF0ZS50b2RheT5gXyB0byByZXR1cm4KK2Ega25vd24gZGF0ZSwgYnV0IEkgZGlkbid0IHdhbnQgdG8gcHJldmVudCB0aGUgY29kZSB1bmRlciB0ZXN0IGZyb20KK2NyZWF0aW5nIG5ldyBkYXRlIG9iamVjdHMuIFVuZm9ydHVuYXRlbHkgYGRhdGV0aW1lLmRhdGVgIGlzIHdyaXR0ZW4gaW4gQywgYW5kCitzbyBJIGNvdWxkbid0IGp1c3QgbW9ua2V5LXBhdGNoIG91dCB0aGUgc3RhdGljIGBkYXRlLnRvZGF5YCBtZXRob2QuCisKK0kgZm91bmQgYSBzaW1wbGUgd2F5IG9mIGRvaW5nIHRoaXMgdGhhdCBpbnZvbHZlZCBlZmZlY3RpdmVseSB3cmFwcGluZyB0aGUgZGF0ZQorY2xhc3Mgd2l0aCBhIG1vY2ssIGJ1dCBwYXNzaW5nIHRocm91Z2ggY2FsbHMgdG8gdGhlIGNvbnN0cnVjdG9yIHRvIHRoZSByZWFsCitjbGFzcyAoYW5kIHJldHVybmluZyByZWFsIGluc3RhbmNlcykuCisKK1RoZSA6ZnVuYzpgcGF0Y2ggZGVjb3JhdG9yIDxwYXRjaD5gIGlzIHVzZWQgaGVyZSB0bworbW9jayBvdXQgdGhlIGBkYXRlYCBjbGFzcyBpbiB0aGUgbW9kdWxlIHVuZGVyIHRlc3QuIFRoZSA6YXR0cjpgc2lkZV9lZmZlY3RgCithdHRyaWJ1dGUgb24gdGhlIG1vY2sgZGF0ZSBjbGFzcyBpcyB0aGVuIHNldCB0byBhIGxhbWJkYSBmdW5jdGlvbiB0aGF0IHJldHVybnMKK2EgcmVhbCBkYXRlLiBXaGVuIHRoZSBtb2NrIGRhdGUgY2xhc3MgaXMgY2FsbGVkIGEgcmVhbCBkYXRlIHdpbGwgYmUKK2NvbnN0cnVjdGVkIGFuZCByZXR1cm5lZCBieSBgc2lkZV9lZmZlY3RgLgorCisgICAgPj4+IGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGUKKyAgICA+Pj4gd2l0aCBwYXRjaCgnbXltb2R1bGUuZGF0ZScpIGFzIG1vY2tfZGF0ZToKKyAgICAuLi4gICAgIG1vY2tfZGF0ZS50b2RheS5yZXR1cm5fdmFsdWUgPSBkYXRlKDIwMTAsIDEwLCA4KQorICAgIC4uLiAgICAgbW9ja19kYXRlLnNpZGVfZWZmZWN0ID0gbGFtYmRhICphcmdzLCAqKmt3OiBkYXRlKCphcmdzLCAqKmt3KQorICAgIC4uLgorICAgIC4uLiAgICAgYXNzZXJ0IG15bW9kdWxlLmRhdGUudG9kYXkoKSA9PSBkYXRlKDIwMTAsIDEwLCA4KQorICAgIC4uLiAgICAgYXNzZXJ0IG15bW9kdWxlLmRhdGUoMjAwOSwgNiwgOCkgPT0gZGF0ZSgyMDA5LCA2LCA4KQorICAgIC4uLgorCitOb3RlIHRoYXQgd2UgZG9uJ3QgcGF0Y2ggYGRhdGV0aW1lLmRhdGVgIGdsb2JhbGx5LCB3ZSBwYXRjaCBgZGF0ZWAgaW4gdGhlCittb2R1bGUgdGhhdCAqdXNlcyogaXQuIFNlZSA6cmVmOmB3aGVyZSB0byBwYXRjaCA8d2hlcmUtdG8tcGF0Y2g+YC4KKworV2hlbiBgZGF0ZS50b2RheSgpYCBpcyBjYWxsZWQgYSBrbm93biBkYXRlIGlzIHJldHVybmVkLCBidXQgY2FsbHMgdG8gdGhlCitgZGF0ZSguLi4pYCBjb25zdHJ1Y3RvciBzdGlsbCByZXR1cm4gbm9ybWFsIGRhdGVzLiBXaXRob3V0IHRoaXMgeW91IGNhbiBmaW5kCit5b3Vyc2VsZiBoYXZpbmcgdG8gY2FsY3VsYXRlIGFuIGV4cGVjdGVkIHJlc3VsdCB1c2luZyBleGFjdGx5IHRoZSBzYW1lCithbGdvcml0aG0gYXMgdGhlIGNvZGUgdW5kZXIgdGVzdCwgd2hpY2ggaXMgYSBjbGFzc2ljIHRlc3RpbmcgYW50aS1wYXR0ZXJuLgorCitDYWxscyB0byB0aGUgZGF0ZSBjb25zdHJ1Y3RvciBhcmUgcmVjb3JkZWQgaW4gdGhlIGBtb2NrX2RhdGVgIGF0dHJpYnV0ZXMKKyhgY2FsbF9jb3VudGAgYW5kIGZyaWVuZHMpIHdoaWNoIG1heSBhbHNvIGJlIHVzZWZ1bCBmb3IgeW91ciB0ZXN0cy4KKworQW4gYWx0ZXJuYXRpdmUgd2F5IG9mIGRlYWxpbmcgd2l0aCBtb2NraW5nIGRhdGVzLCBvciBvdGhlciBidWlsdGluIGNsYXNzZXMsCitpcyBkaXNjdXNzZWQgaW4gYHRoaXMgYmxvZyBlbnRyeQorPGh0dHA6Ly93aWxsaWFtam9obmJlcnQuY29tLzIwMTEvMDcvaG93LXRvLXVuaXQtdGVzdGluZy1pbi1kamFuZ28td2l0aC1tb2NraW5nLWFuZC1wYXRjaGluZy8+YF8uCisKKworTW9ja2luZyBhIEdlbmVyYXRvciBNZXRob2QKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0EgUHl0aG9uIGdlbmVyYXRvciBpcyBhIGZ1bmN0aW9uIG9yIG1ldGhvZCB0aGF0IHVzZXMgdGhlIGB5aWVsZCBzdGF0ZW1lbnQKKzxodHRwOi8vZG9jcy5weXRob24ub3JnL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMuaHRtbCN0aGUteWllbGQtc3RhdGVtZW50PmBfIHRvCityZXR1cm4gYSBzZXJpZXMgb2YgdmFsdWVzIHdoZW4gaXRlcmF0ZWQgb3ZlciBbI11fLgorCitBIGdlbmVyYXRvciBtZXRob2QgLyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gcmV0dXJuIHRoZSBnZW5lcmF0b3Igb2JqZWN0LiBJdCBpcwordGhlIGdlbmVyYXRvciBvYmplY3QgdGhhdCBpcyB0aGVuIGl0ZXJhdGVkIG92ZXIuIFRoZSBwcm90b2NvbCBtZXRob2QgZm9yCitpdGVyYXRpb24gaXMgYF9faXRlcl9fCis8aHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L3N0ZHR5cGVzLmh0bWwjY29udGFpbmVyLl9faXRlcl9fPmBfLCBzbyB3ZSBjYW4KK21vY2sgdGhpcyB1c2luZyBhIGBNYWdpY01vY2tgLgorCitIZXJlJ3MgYW4gZXhhbXBsZSBjbGFzcyB3aXRoIGFuICJpdGVyIiBtZXRob2QgaW1wbGVtZW50ZWQgYXMgYSBnZW5lcmF0b3I6CisKKyAgICA+Pj4gY2xhc3MgRm9vOgorICAgIC4uLiAgICAgZGVmIGl0ZXIoc2VsZik6CisgICAgLi4uICAgICAgICAgZm9yIGkgaW4gWzEsIDIsIDNdOgorICAgIC4uLiAgICAgICAgICAgICB5aWVsZCBpCisgICAgLi4uCisgICAgPj4+IGZvbyA9IEZvbygpCisgICAgPj4+IGxpc3QoZm9vLml0ZXIoKSkKKyAgICBbMSwgMiwgM10KKworCitIb3cgd291bGQgd2UgbW9jayB0aGlzIGNsYXNzLCBhbmQgaW4gcGFydGljdWxhciBpdHMgIml0ZXIiIG1ldGhvZD8KKworVG8gY29uZmlndXJlIHRoZSB2YWx1ZXMgcmV0dXJuZWQgZnJvbSB0aGUgaXRlcmF0aW9uIChpbXBsaWNpdCBpbiB0aGUgY2FsbCB0bworYGxpc3RgKSwgd2UgbmVlZCB0byBjb25maWd1cmUgdGhlIG9iamVjdCByZXR1cm5lZCBieSB0aGUgY2FsbCB0byBgZm9vLml0ZXIoKWAuCisKKyAgICA+Pj4gbW9ja19mb28gPSBNYWdpY01vY2soKQorICAgID4+PiBtb2NrX2Zvby5pdGVyLnJldHVybl92YWx1ZSA9IGl0ZXIoWzEsIDIsIDNdKQorICAgID4+PiBsaXN0KG1vY2tfZm9vLml0ZXIoKSkKKyAgICBbMSwgMiwgM10KKworLi4gWyNdIFRoZXJlIGFyZSBhbHNvIGdlbmVyYXRvciBleHByZXNzaW9ucyBhbmQgbW9yZSBgYWR2YW5jZWQgdXNlcworICAgIDxodHRwOi8vd3d3LmRhYmVhei5jb20vY29yb3V0aW5lcy9pbmRleC5odG1sPmBfIG9mIGdlbmVyYXRvcnMsIGJ1dCB3ZSBhcmVuJ3QKKyAgICBjb25jZXJuZWQgYWJvdXQgdGhlbSBoZXJlLiBBIHZlcnkgZ29vZCBpbnRyb2R1Y3Rpb24gdG8gZ2VuZXJhdG9ycyBhbmQgaG93CisgICAgcG93ZXJmdWwgdGhleSBhcmUgaXM6IGBHZW5lcmF0b3IgVHJpY2tzIGZvciBTeXN0ZW1zIFByb2dyYW1tZXJzCisgICAgPGh0dHA6Ly93d3cuZGFiZWF6LmNvbS9nZW5lcmF0b3JzLz5gXy4KKworCitBcHBseWluZyB0aGUgc2FtZSBwYXRjaCB0byBldmVyeSB0ZXN0IG1ldGhvZAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworSWYgeW91IHdhbnQgc2V2ZXJhbCBwYXRjaGVzIGluIHBsYWNlIGZvciBtdWx0aXBsZSB0ZXN0IG1ldGhvZHMgdGhlIG9idmlvdXMgd2F5CitpcyB0byBhcHBseSB0aGUgcGF0Y2ggZGVjb3JhdG9ycyB0byBldmVyeSBtZXRob2QuIFRoaXMgY2FuIGZlZWwgbGlrZSB1bm5lY2Vzc2FyeQorcmVwZXRpdGlvbi4gRm9yIFB5dGhvbiAyLjYgb3IgbW9yZSByZWNlbnQgeW91IGNhbiB1c2UgYHBhdGNoYCAoaW4gYWxsIGl0cwordmFyaW91cyBmb3JtcykgYXMgYSBjbGFzcyBkZWNvcmF0b3IuIFRoaXMgYXBwbGllcyB0aGUgcGF0Y2hlcyB0byBhbGwgdGVzdAorbWV0aG9kcyBvbiB0aGUgY2xhc3MuIEEgdGVzdCBtZXRob2QgaXMgaWRlbnRpZmllZCBieSBtZXRob2RzIHdob3NlIG5hbWVzIHN0YXJ0Cit3aXRoIGB0ZXN0YDoKKworICAgID4+PiBAcGF0Y2goJ215bW9kdWxlLlNvbWVDbGFzcycpCisgICAgLi4uIGNsYXNzIE15VGVzdChUZXN0Q2FzZSk6CisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVzdF9vbmUoc2VsZiwgTW9ja1NvbWVDbGFzcyk6CisgICAgLi4uICAgICAgICAgc2VsZi5hc3NlcnRJcyhteW1vZHVsZS5Tb21lQ2xhc3MsIE1vY2tTb21lQ2xhc3MpCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVzdF90d28oc2VsZiwgTW9ja1NvbWVDbGFzcyk6CisgICAgLi4uICAgICAgICAgc2VsZi5hc3NlcnRJcyhteW1vZHVsZS5Tb21lQ2xhc3MsIE1vY2tTb21lQ2xhc3MpCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgbm90X2FfdGVzdChzZWxmKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gJ3NvbWV0aGluZycKKyAgICAuLi4KKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X29uZScpLnRlc3Rfb25lKCkKKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X3R3bycpLnRlc3RfdHdvKCkKKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X3R3bycpLm5vdF9hX3Rlc3QoKQorICAgICdzb21ldGhpbmcnCisKK0FuIGFsdGVybmF0aXZlIHdheSBvZiBtYW5hZ2luZyBwYXRjaGVzIGlzIHRvIHVzZSB0aGUgOnJlZjpgc3RhcnQtYW5kLXN0b3BgLgorVGhlc2UgYWxsb3cgeW91IHRvIG1vdmUgdGhlIHBhdGNoaW5nIGludG8geW91ciBgc2V0VXBgIGFuZCBgdGVhckRvd25gIG1ldGhvZHMuCisKKyAgICA+Pj4gY2xhc3MgTXlUZXN0KFRlc3RDYXNlKToKKyAgICAuLi4gICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLnBhdGNoZXIgPSBwYXRjaCgnbXltb2R1bGUuZm9vJykKKyAgICAuLi4gICAgICAgICBzZWxmLm1vY2tfZm9vID0gc2VsZi5wYXRjaGVyLnN0YXJ0KCkKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiB0ZXN0X2ZvbyhzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLmFzc2VydElzKG15bW9kdWxlLmZvbywgc2VsZi5tb2NrX2ZvbykKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLnBhdGNoZXIuc3RvcCgpCisgICAgLi4uCisgICAgPj4+IE15VGVzdCgndGVzdF9mb28nKS5ydW4oKQorCitJZiB5b3UgdXNlIHRoaXMgdGVjaG5pcXVlIHlvdSBtdXN0IGVuc3VyZSB0aGF0IHRoZSBwYXRjaGluZyBpcyAidW5kb25lIiBieQorY2FsbGluZyBgc3RvcGAuIFRoaXMgY2FuIGJlIGZpZGRsaWVyIHRoYW4geW91IG1pZ2h0IHRoaW5rLCBiZWNhdXNlIGlmIGFuCitleGNlcHRpb24gaXMgcmFpc2VkIGluIHRoZSBzZXRVcCB0aGVuIHRlYXJEb3duIGlzIG5vdCBjYWxsZWQuCis6bWV0aDpgdW5pdHRlc3QuVGVzdENhc2UuYWRkQ2xlYW51cGAgbWFrZXMgdGhpcyBlYXNpZXI6CisKKyAgICA+Pj4gY2xhc3MgTXlUZXN0KFRlc3RDYXNlKToKKyAgICAuLi4gICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAuLi4gICAgICAgICBwYXRjaGVyID0gcGF0Y2goJ215bW9kdWxlLmZvbycpCisgICAgLi4uICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHBhdGNoZXIuc3RvcCkKKyAgICAuLi4gICAgICAgICBzZWxmLm1vY2tfZm9vID0gcGF0Y2hlci5zdGFydCgpCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVzdF9mb28oc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5hc3NlcnRJcyhteW1vZHVsZS5mb28sIHNlbGYubW9ja19mb28pCisgICAgLi4uCisgICAgPj4+IE15VGVzdCgndGVzdF9mb28nKS5ydW4oKQorCisKK01vY2tpbmcgVW5ib3VuZCBNZXRob2RzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitXaGlsc3Qgd3JpdGluZyB0ZXN0cyB0b2RheSBJIG5lZWRlZCB0byBwYXRjaCBhbiAqdW5ib3VuZCBtZXRob2QqIChwYXRjaGluZyB0aGUKK21ldGhvZCBvbiB0aGUgY2xhc3MgcmF0aGVyIHRoYW4gb24gdGhlIGluc3RhbmNlKS4gSSBuZWVkZWQgc2VsZiB0byBiZSBwYXNzZWQKK2luIGFzIHRoZSBmaXJzdCBhcmd1bWVudCBiZWNhdXNlIEkgd2FudCB0byBtYWtlIGFzc2VydHMgYWJvdXQgd2hpY2ggb2JqZWN0cword2VyZSBjYWxsaW5nIHRoaXMgcGFydGljdWxhciBtZXRob2QuIFRoZSBpc3N1ZSBpcyB0aGF0IHlvdSBjYW4ndCBwYXRjaCB3aXRoIGEKK21vY2sgZm9yIHRoaXMsIGJlY2F1c2UgaWYgeW91IHJlcGxhY2UgYW4gdW5ib3VuZCBtZXRob2Qgd2l0aCBhIG1vY2sgaXQgZG9lc24ndAorYmVjb21lIGEgYm91bmQgbWV0aG9kIHdoZW4gZmV0Y2hlZCBmcm9tIHRoZSBpbnN0YW5jZSwgYW5kIHNvIGl0IGRvZXNuJ3QgZ2V0CitzZWxmIHBhc3NlZCBpbi4gVGhlIHdvcmthcm91bmQgaXMgdG8gcGF0Y2ggdGhlIHVuYm91bmQgbWV0aG9kIHdpdGggYSByZWFsCitmdW5jdGlvbiBpbnN0ZWFkLiBUaGUgOmZ1bmM6YHBhdGNoYCBkZWNvcmF0b3IgbWFrZXMgaXQgc28gc2ltcGxlIHRvCitwYXRjaCBvdXQgbWV0aG9kcyB3aXRoIGEgbW9jayB0aGF0IGhhdmluZyB0byBjcmVhdGUgYSByZWFsIGZ1bmN0aW9uIGJlY29tZXMgYQorbnVpc2FuY2UuCisKK0lmIHlvdSBwYXNzIGBhdXRvc3BlYz1UcnVlYCB0byBwYXRjaCB0aGVuIGl0IGRvZXMgdGhlIHBhdGNoaW5nIHdpdGggYQorKnJlYWwqIGZ1bmN0aW9uIG9iamVjdC4gVGhpcyBmdW5jdGlvbiBvYmplY3QgaGFzIHRoZSBzYW1lIHNpZ25hdHVyZSBhcyB0aGUgb25lCitpdCBpcyByZXBsYWNpbmcsIGJ1dCBkZWxlZ2F0ZXMgdG8gYSBtb2NrIHVuZGVyIHRoZSBob29kLiBZb3Ugc3RpbGwgZ2V0IHlvdXIKK21vY2sgYXV0by1jcmVhdGVkIGluIGV4YWN0bHkgdGhlIHNhbWUgd2F5IGFzIGJlZm9yZS4gV2hhdCBpdCBtZWFucyB0aG91Z2gsIGlzCit0aGF0IGlmIHlvdSB1c2UgaXQgdG8gcGF0Y2ggb3V0IGFuIHVuYm91bmQgbWV0aG9kIG9uIGEgY2xhc3MgdGhlIG1vY2tlZAorZnVuY3Rpb24gd2lsbCBiZSB0dXJuZWQgaW50byBhIGJvdW5kIG1ldGhvZCBpZiBpdCBpcyBmZXRjaGVkIGZyb20gYW4gaW5zdGFuY2UuCitJdCB3aWxsIGhhdmUgYHNlbGZgIHBhc3NlZCBpbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJCit3YW50ZWQ6CisKKyAgICA+Pj4gY2xhc3MgRm9vOgorICAgIC4uLiAgIGRlZiBmb28oc2VsZik6CisgICAgLi4uICAgICBwYXNzCisgICAgLi4uCisgICAgPj4+IHdpdGggcGF0Y2gub2JqZWN0KEZvbywgJ2ZvbycsIGF1dG9zcGVjPVRydWUpIGFzIG1vY2tfZm9vOgorICAgIC4uLiAgIG1vY2tfZm9vLnJldHVybl92YWx1ZSA9ICdmb28nCisgICAgLi4uICAgZm9vID0gRm9vKCkKKyAgICAuLi4gICBmb28uZm9vKCkKKyAgICAuLi4KKyAgICAnZm9vJworICAgID4+PiBtb2NrX2Zvby5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChmb28pCisKK0lmIHdlIGRvbid0IHVzZSBgYXV0b3NwZWM9VHJ1ZWAgdGhlbiB0aGUgdW5ib3VuZCBtZXRob2QgaXMgcGF0Y2hlZCBvdXQKK3dpdGggYSBNb2NrIGluc3RhbmNlIGluc3RlYWQsIGFuZCBpc24ndCBjYWxsZWQgd2l0aCBgc2VsZmAuCisKKworQ2hlY2tpbmcgbXVsdGlwbGUgY2FsbHMgd2l0aCBtb2NrCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworbW9jayBoYXMgYSBuaWNlIEFQSSBmb3IgbWFraW5nIGFzc2VydGlvbnMgYWJvdXQgaG93IHlvdXIgbW9jayBvYmplY3RzIGFyZSB1c2VkLgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gbW9jay5mb29fYmFyLnJldHVybl92YWx1ZSA9IE5vbmUKKyAgICA+Pj4gbW9jay5mb29fYmFyKCdiYXonLCBzcGFtPSdlZ2dzJykKKyAgICA+Pj4gbW9jay5mb29fYmFyLmFzc2VydF9jYWxsZWRfd2l0aCgnYmF6Jywgc3BhbT0nZWdncycpCisKK0lmIHlvdXIgbW9jayBpcyBvbmx5IGJlaW5nIGNhbGxlZCBvbmNlIHlvdSBjYW4gdXNlIHRoZQorOm1ldGg6YGFzc2VydF9jYWxsZWRfb25jZV93aXRoYCBtZXRob2QgdGhhdCBhbHNvIGFzc2VydHMgdGhhdCB0aGUKKzphdHRyOmBjYWxsX2NvdW50YCBpcyBvbmUuCisKKyAgICA+Pj4gbW9jay5mb29fYmFyLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdiYXonLCBzcGFtPSdlZ2dzJykKKyAgICA+Pj4gbW9jay5mb29fYmFyKCkKKyAgICA+Pj4gbW9jay5mb29fYmFyLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdiYXonLCBzcGFtPSdlZ2dzJykKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIEFzc2VydGlvbkVycm9yOiBFeHBlY3RlZCB0byBiZSBjYWxsZWQgb25jZS4gQ2FsbGVkIDIgdGltZXMuCisKK0JvdGggYGFzc2VydF9jYWxsZWRfd2l0aGAgYW5kIGBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aGAgbWFrZSBhc3NlcnRpb25zIGFib3V0Cit0aGUgKm1vc3QgcmVjZW50KiBjYWxsLiBJZiB5b3VyIG1vY2sgaXMgZ29pbmcgdG8gYmUgY2FsbGVkIHNldmVyYWwgdGltZXMsIGFuZAoreW91IHdhbnQgdG8gbWFrZSBhc3NlcnRpb25zIGFib3V0ICphbGwqIHRob3NlIGNhbGxzIHlvdSBjYW4gdXNlCis6YXR0cjpgfk1vY2suY2FsbF9hcmdzX2xpc3RgOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBtb2NrKDEsIDIsIDMpCisgICAgPj4+IG1vY2soNCwgNSwgNikKKyAgICA+Pj4gbW9jaygpCisgICAgPj4+IG1vY2suY2FsbF9hcmdzX2xpc3QKKyAgICBbY2FsbCgxLCAyLCAzKSwgY2FsbCg0LCA1LCA2KSwgY2FsbCgpXQorCitUaGUgOmRhdGE6YGNhbGxgIGhlbHBlciBtYWtlcyBpdCBlYXN5IHRvIG1ha2UgYXNzZXJ0aW9ucyBhYm91dCB0aGVzZSBjYWxscy4gWW91CitjYW4gYnVpbGQgdXAgYSBsaXN0IG9mIGV4cGVjdGVkIGNhbGxzIGFuZCBjb21wYXJlIGl0IHRvIGBjYWxsX2FyZ3NfbGlzdGAuIFRoaXMKK2xvb2tzIHJlbWFya2FibHkgc2ltaWxhciB0byB0aGUgcmVwciBvZiB0aGUgYGNhbGxfYXJnc19saXN0YDoKKworICAgID4+PiBleHBlY3RlZCA9IFtjYWxsKDEsIDIsIDMpLCBjYWxsKDQsIDUsIDYpLCBjYWxsKCldCisgICAgPj4+IG1vY2suY2FsbF9hcmdzX2xpc3QgPT0gZXhwZWN0ZWQKKyAgICBUcnVlCisKKworQ29waW5nIHdpdGggbXV0YWJsZSBhcmd1bWVudHMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0Fub3RoZXIgc2l0dWF0aW9uIGlzIHJhcmUsIGJ1dCBjYW4gYml0ZSB5b3UsIGlzIHdoZW4geW91ciBtb2NrIGlzIGNhbGxlZCB3aXRoCittdXRhYmxlIGFyZ3VtZW50cy4gYGNhbGxfYXJnc2AgYW5kIGBjYWxsX2FyZ3NfbGlzdGAgc3RvcmUgKnJlZmVyZW5jZXMqIHRvIHRoZQorYXJndW1lbnRzLiBJZiB0aGUgYXJndW1lbnRzIGFyZSBtdXRhdGVkIGJ5IHRoZSBjb2RlIHVuZGVyIHRlc3QgdGhlbiB5b3UgY2FuIG5vCitsb25nZXIgbWFrZSBhc3NlcnRpb25zIGFib3V0IHdoYXQgdGhlIHZhbHVlcyB3ZXJlIHdoZW4gdGhlIG1vY2sgd2FzIGNhbGxlZC4KKworSGVyZSdzIHNvbWUgZXhhbXBsZSBjb2RlIHRoYXQgc2hvd3MgdGhlIHByb2JsZW0uIEltYWdpbmUgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMKK2RlZmluZWQgaW4gJ215bW9kdWxlJzo6CisKKyAgICBkZWYgZnJvYih2YWwpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgZ3JvYih2YWwpOgorICAgICAgICAiRmlyc3QgZnJvYiBhbmQgdGhlbiBjbGVhciB2YWwiCisgICAgICAgIGZyb2IodmFsKQorICAgICAgICB2YWwuY2xlYXIoKQorCitXaGVuIHdlIHRyeSB0byB0ZXN0IHRoYXQgYGdyb2JgIGNhbGxzIGBmcm9iYCB3aXRoIHRoZSBjb3JyZWN0IGFyZ3VtZW50IGxvb2sKK3doYXQgaGFwcGVuczoKKworICAgID4+PiB3aXRoIHBhdGNoKCdteW1vZHVsZS5mcm9iJykgYXMgbW9ja19mcm9iOgorICAgIC4uLiAgICAgdmFsID0gc2V0KFs2XSkKKyAgICAuLi4gICAgIG15bW9kdWxlLmdyb2IodmFsKQorICAgIC4uLgorICAgID4+PiB2YWwKKyAgICBzZXQoW10pCisgICAgPj4+IG1vY2tfZnJvYi5hc3NlcnRfY2FsbGVkX3dpdGgoc2V0KFs2XSkpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAuLi4KKyAgICBBc3NlcnRpb25FcnJvcjogRXhwZWN0ZWQ6ICgoc2V0KFs2XSksKSwge30pCisgICAgQ2FsbGVkIHdpdGg6ICgoc2V0KFtdKSwpLCB7fSkKKworT25lIHBvc3NpYmlsaXR5IHdvdWxkIGJlIGZvciBtb2NrIHRvIGNvcHkgdGhlIGFyZ3VtZW50cyB5b3UgcGFzcyBpbi4gVGhpcworY291bGQgdGhlbiBjYXVzZSBwcm9ibGVtcyBpZiB5b3UgZG8gYXNzZXJ0aW9ucyB0aGF0IHJlbHkgb24gb2JqZWN0IGlkZW50aXR5Citmb3IgZXF1YWxpdHkuCisKK0hlcmUncyBvbmUgc29sdXRpb24gdGhhdCB1c2VzIHRoZSA6YXR0cjpgc2lkZV9lZmZlY3RgCitmdW5jdGlvbmFsaXR5LiBJZiB5b3UgcHJvdmlkZSBhIGBzaWRlX2VmZmVjdGAgZnVuY3Rpb24gZm9yIGEgbW9jayB0aGVuCitgc2lkZV9lZmZlY3RgIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHNhbWUgYXJncyBhcyB0aGUgbW9jay4gVGhpcyBnaXZlcyB1cyBhbgorb3Bwb3J0dW5pdHkgdG8gY29weSB0aGUgYXJndW1lbnRzIGFuZCBzdG9yZSB0aGVtIGZvciBsYXRlciBhc3NlcnRpb25zLiBJbiB0aGlzCitleGFtcGxlIEknbSB1c2luZyAqYW5vdGhlciogbW9jayB0byBzdG9yZSB0aGUgYXJndW1lbnRzIHNvIHRoYXQgSSBjYW4gdXNlIHRoZQorbW9jayBtZXRob2RzIGZvciBkb2luZyB0aGUgYXNzZXJ0aW9uLiBBZ2FpbiBhIGhlbHBlciBmdW5jdGlvbiBzZXRzIHRoaXMgdXAgZm9yCittZS4KKworICAgID4+PiBmcm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5CisgICAgPj4+IGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTW9jaywgcGF0Y2gsIERFRkFVTFQKKyAgICA+Pj4gZGVmIGNvcHlfY2FsbF9hcmdzKG1vY2spOgorICAgIC4uLiAgICAgbmV3X21vY2sgPSBNb2NrKCkKKyAgICAuLi4gICAgIGRlZiBzaWRlX2VmZmVjdCgqYXJncywgKiprd2FyZ3MpOgorICAgIC4uLiAgICAgICAgIGFyZ3MgPSBkZWVwY29weShhcmdzKQorICAgIC4uLiAgICAgICAgIGt3YXJncyA9IGRlZXBjb3B5KGt3YXJncykKKyAgICAuLi4gICAgICAgICBuZXdfbW9jaygqYXJncywgKiprd2FyZ3MpCisgICAgLi4uICAgICAgICAgcmV0dXJuIERFRkFVTFQKKyAgICAuLi4gICAgIG1vY2suc2lkZV9lZmZlY3QgPSBzaWRlX2VmZmVjdAorICAgIC4uLiAgICAgcmV0dXJuIG5ld19tb2NrCisgICAgLi4uCisgICAgPj4+IHdpdGggcGF0Y2goJ215bW9kdWxlLmZyb2InKSBhcyBtb2NrX2Zyb2I6CisgICAgLi4uICAgICBuZXdfbW9jayA9IGNvcHlfY2FsbF9hcmdzKG1vY2tfZnJvYikKKyAgICAuLi4gICAgIHZhbCA9IHNldChbNl0pCisgICAgLi4uICAgICBteW1vZHVsZS5ncm9iKHZhbCkKKyAgICAuLi4KKyAgICA+Pj4gbmV3X21vY2suYXNzZXJ0X2NhbGxlZF93aXRoKHNldChbNl0pKQorICAgID4+PiBuZXdfbW9jay5jYWxsX2FyZ3MKKyAgICBjYWxsKHNldChbNl0pKQorCitgY29weV9jYWxsX2FyZ3NgIGlzIGNhbGxlZCB3aXRoIHRoZSBtb2NrIHRoYXQgd2lsbCBiZSBjYWxsZWQuIEl0IHJldHVybnMgYSBuZXcKK21vY2sgdGhhdCB3ZSBkbyB0aGUgYXNzZXJ0aW9uIG9uLiBUaGUgYHNpZGVfZWZmZWN0YCBmdW5jdGlvbiBtYWtlcyBhIGNvcHkgb2YKK3RoZSBhcmdzIGFuZCBjYWxscyBvdXIgYG5ld19tb2NrYCB3aXRoIHRoZSBjb3B5LgorCisuLiBub3RlOjoKKworICAgIElmIHlvdXIgbW9jayBpcyBvbmx5IGdvaW5nIHRvIGJlIHVzZWQgb25jZSB0aGVyZSBpcyBhbiBlYXNpZXIgd2F5IG9mCisgICAgY2hlY2tpbmcgYXJndW1lbnRzIGF0IHRoZSBwb2ludCB0aGV5IGFyZSBjYWxsZWQuIFlvdSBjYW4gc2ltcGx5IGRvIHRoZQorICAgIGNoZWNraW5nIGluc2lkZSBhIGBzaWRlX2VmZmVjdGAgZnVuY3Rpb24uCisKKyAgICAgICAgPj4+IGRlZiBzaWRlX2VmZmVjdChhcmcpOgorICAgICAgICAuLi4gICAgIGFzc2VydCBhcmcgPT0gc2V0KFs2XSkKKyAgICAgICAgLi4uCisgICAgICAgID4+PiBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1zaWRlX2VmZmVjdCkKKyAgICAgICAgPj4+IG1vY2soc2V0KFs2XSkpCisgICAgICAgID4+PiBtb2NrKHNldCgpKQorICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgICAuLi4KKyAgICAgICAgQXNzZXJ0aW9uRXJyb3IKKworQW4gYWx0ZXJuYXRpdmUgYXBwcm9hY2ggaXMgdG8gY3JlYXRlIGEgc3ViY2xhc3Mgb2YgYE1vY2tgIG9yIGBNYWdpY01vY2tgIHRoYXQKK2NvcGllcyAodXNpbmcgOmZ1bmM6YGNvcHkuZGVlcGNvcHlgKSB0aGUgYXJndW1lbnRzLgorSGVyZSdzIGFuIGV4YW1wbGUgaW1wbGVtZW50YXRpb246CisKKyAgICA+Pj4gZnJvbSBjb3B5IGltcG9ydCBkZWVwY29weQorICAgID4+PiBjbGFzcyBDb3B5aW5nTW9jayhNYWdpY01vY2spOgorICAgIC4uLiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgLi4uICAgICAgICAgYXJncyA9IGRlZXBjb3B5KGFyZ3MpCisgICAgLi4uICAgICAgICAga3dhcmdzID0gZGVlcGNvcHkoa3dhcmdzKQorICAgIC4uLiAgICAgICAgIHJldHVybiBzdXBlcihDb3B5aW5nTW9jaywgc2VsZikuX19jYWxsX18oKmFyZ3MsICoqa3dhcmdzKQorICAgIC4uLgorICAgID4+PiBjID0gQ29weWluZ01vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgPj4+IGFyZyA9IHNldCgpCisgICAgPj4+IGMoYXJnKQorICAgID4+PiBhcmcuYWRkKDEpCisgICAgPj4+IGMuYXNzZXJ0X2NhbGxlZF93aXRoKHNldCgpKQorICAgID4+PiBjLmFzc2VydF9jYWxsZWRfd2l0aChhcmcpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAuLi4KKyAgICBBc3NlcnRpb25FcnJvcjogRXhwZWN0ZWQgY2FsbDogbW9jayhzZXQoWzFdKSkKKyAgICBBY3R1YWwgY2FsbDogbW9jayhzZXQoW10pKQorICAgID4+PiBjLmZvbworICAgIDxDb3B5aW5nTW9jayBuYW1lPSdtb2NrLmZvbycgaWQ9Jy4uLic+CisKK1doZW4geW91IHN1YmNsYXNzIGBNb2NrYCBvciBgTWFnaWNNb2NrYCBhbGwgZHluYW1pY2FsbHkgY3JlYXRlZCBhdHRyaWJ1dGVzLAorYW5kIHRoZSBgcmV0dXJuX3ZhbHVlYCB3aWxsIHVzZSB5b3VyIHN1YmNsYXNzIGF1dG9tYXRpY2FsbHkuIFRoYXQgbWVhbnMgYWxsCitjaGlsZHJlbiBvZiBhIGBDb3B5aW5nTW9ja2Agd2lsbCBhbHNvIGhhdmUgdGhlIHR5cGUgYENvcHlpbmdNb2NrYC4KKworCitOZXN0aW5nIFBhdGNoZXMKK35+fn5+fn5+fn5+fn5+fgorCitVc2luZyBwYXRjaCBhcyBhIGNvbnRleHQgbWFuYWdlciBpcyBuaWNlLCBidXQgaWYgeW91IGRvIG11bHRpcGxlIHBhdGNoZXMgeW91CitjYW4gZW5kIHVwIHdpdGggbmVzdGVkIHdpdGggc3RhdGVtZW50cyBpbmRlbnRpbmcgZnVydGhlciBhbmQgZnVydGhlciB0byB0aGUKK3JpZ2h0OgorCisgICAgPj4+IGNsYXNzIE15VGVzdChUZXN0Q2FzZSk6CisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVzdF9mb28oc2VsZik6CisgICAgLi4uICAgICAgICAgd2l0aCBwYXRjaCgnbXltb2R1bGUuRm9vJykgYXMgbW9ja19mb286CisgICAgLi4uICAgICAgICAgICAgIHdpdGggcGF0Y2goJ215bW9kdWxlLkJhcicpIGFzIG1vY2tfYmFyOgorICAgIC4uLiAgICAgICAgICAgICAgICAgd2l0aCBwYXRjaCgnbXltb2R1bGUuU3BhbScpIGFzIG1vY2tfc3BhbToKKyAgICAuLi4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbXltb2R1bGUuRm9vIGlzIG1vY2tfZm9vCisgICAgLi4uICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IG15bW9kdWxlLkJhciBpcyBtb2NrX2JhcgorICAgIC4uLiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBteW1vZHVsZS5TcGFtIGlzIG1vY2tfc3BhbQorICAgIC4uLgorICAgID4+PiBvcmlnaW5hbCA9IG15bW9kdWxlLkZvbworICAgID4+PiBNeVRlc3QoJ3Rlc3RfZm9vJykudGVzdF9mb28oKQorICAgID4+PiBhc3NlcnQgbXltb2R1bGUuRm9vIGlzIG9yaWdpbmFsCisKK1dpdGggdW5pdHRlc3QgYGNsZWFudXBgIGZ1bmN0aW9ucyBhbmQgdGhlIDpyZWY6YHN0YXJ0LWFuZC1zdG9wYCB3ZSBjYW4KK2FjaGlldmUgdGhlIHNhbWUgZWZmZWN0IHdpdGhvdXQgdGhlIG5lc3RlZCBpbmRlbnRhdGlvbi4gQSBzaW1wbGUgaGVscGVyCittZXRob2QsIGBjcmVhdGVfcGF0Y2hgLCBwdXRzIHRoZSBwYXRjaCBpbiBwbGFjZSBhbmQgcmV0dXJucyB0aGUgY3JlYXRlZCBtb2NrCitmb3IgdXM6CisKKyAgICA+Pj4gY2xhc3MgTXlUZXN0KFRlc3RDYXNlKToKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgbmFtZSk6CisgICAgLi4uICAgICAgICAgcGF0Y2hlciA9IHBhdGNoKG5hbWUpCisgICAgLi4uICAgICAgICAgdGhpbmcgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAuLi4gICAgICAgICBzZWxmLmFkZENsZWFudXAocGF0Y2hlci5zdG9wKQorICAgIC4uLiAgICAgICAgIHJldHVybiB0aGluZworICAgIC4uLgorICAgIC4uLiAgICAgZGVmIHRlc3RfZm9vKHNlbGYpOgorICAgIC4uLiAgICAgICAgIG1vY2tfZm9vID0gc2VsZi5jcmVhdGVfcGF0Y2goJ215bW9kdWxlLkZvbycpCisgICAgLi4uICAgICAgICAgbW9ja19iYXIgPSBzZWxmLmNyZWF0ZV9wYXRjaCgnbXltb2R1bGUuQmFyJykKKyAgICAuLi4gICAgICAgICBtb2NrX3NwYW0gPSBzZWxmLmNyZWF0ZV9wYXRjaCgnbXltb2R1bGUuU3BhbScpCisgICAgLi4uCisgICAgLi4uICAgICAgICAgYXNzZXJ0IG15bW9kdWxlLkZvbyBpcyBtb2NrX2ZvbworICAgIC4uLiAgICAgICAgIGFzc2VydCBteW1vZHVsZS5CYXIgaXMgbW9ja19iYXIKKyAgICAuLi4gICAgICAgICBhc3NlcnQgbXltb2R1bGUuU3BhbSBpcyBtb2NrX3NwYW0KKyAgICAuLi4KKyAgICA+Pj4gb3JpZ2luYWwgPSBteW1vZHVsZS5Gb28KKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X2ZvbycpLnJ1bigpCisgICAgPj4+IGFzc2VydCBteW1vZHVsZS5Gb28gaXMgb3JpZ2luYWwKKworCitNb2NraW5nIGEgZGljdGlvbmFyeSB3aXRoIE1hZ2ljTW9jaworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworWW91IG1heSB3YW50IHRvIG1vY2sgYSBkaWN0aW9uYXJ5LCBvciBvdGhlciBjb250YWluZXIgb2JqZWN0LCByZWNvcmRpbmcgYWxsCithY2Nlc3MgdG8gaXQgd2hpbHN0IGhhdmluZyBpdCBzdGlsbCBiZWhhdmUgbGlrZSBhIGRpY3Rpb25hcnkuCisKK1dlIGNhbiBkbyB0aGlzIHdpdGggOmNsYXNzOmBNYWdpY01vY2tgLCB3aGljaCB3aWxsIGJlaGF2ZSBsaWtlIGEgZGljdGlvbmFyeSwKK2FuZCB1c2luZyA6ZGF0YTpgfk1vY2suc2lkZV9lZmZlY3RgIHRvIGRlbGVnYXRlIGRpY3Rpb25hcnkgYWNjZXNzIHRvIGEgcmVhbAordW5kZXJseWluZyBkaWN0aW9uYXJ5IHRoYXQgaXMgdW5kZXIgb3VyIGNvbnRyb2wuCisKK1doZW4gdGhlIGBfX2dldGl0ZW1fX2AgYW5kIGBfX3NldGl0ZW1fX2AgbWV0aG9kcyBvZiBvdXIgYE1hZ2ljTW9ja2AgYXJlIGNhbGxlZAorKG5vcm1hbCBkaWN0aW9uYXJ5IGFjY2VzcykgdGhlbiBgc2lkZV9lZmZlY3RgIGlzIGNhbGxlZCB3aXRoIHRoZSBrZXkgKGFuZCBpbgordGhlIGNhc2Ugb2YgYF9fc2V0aXRlbV9fYCB0aGUgdmFsdWUgdG9vKS4gV2UgY2FuIGFsc28gY29udHJvbCB3aGF0IGlzIHJldHVybmVkLgorCitBZnRlciB0aGUgYE1hZ2ljTW9ja2AgaGFzIGJlZW4gdXNlZCB3ZSBjYW4gdXNlIGF0dHJpYnV0ZXMgbGlrZQorOmRhdGE6YH5Nb2NrLmNhbGxfYXJnc19saXN0YCB0byBhc3NlcnQgYWJvdXQgaG93IHRoZSBkaWN0aW9uYXJ5IHdhcyB1c2VkOgorCisgICAgPj4+IG15X2RpY3QgPSB7J2EnOiAxLCAnYic6IDIsICdjJzogM30KKyAgICA+Pj4gZGVmIGdldGl0ZW0obmFtZSk6CisgICAgLi4uICAgICAgcmV0dXJuIG15X2RpY3RbbmFtZV0KKyAgICAuLi4KKyAgICA+Pj4gZGVmIHNldGl0ZW0obmFtZSwgdmFsKToKKyAgICAuLi4gICAgIG15X2RpY3RbbmFtZV0gPSB2YWwKKyAgICAuLi4KKyAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG1vY2suX19nZXRpdGVtX18uc2lkZV9lZmZlY3QgPSBnZXRpdGVtCisgICAgPj4+IG1vY2suX19zZXRpdGVtX18uc2lkZV9lZmZlY3QgPSBzZXRpdGVtCisKKy4uIG5vdGU6OgorCisgICAgQW4gYWx0ZXJuYXRpdmUgdG8gdXNpbmcgYE1hZ2ljTW9ja2AgaXMgdG8gdXNlIGBNb2NrYCBhbmQgKm9ubHkqIHByb3ZpZGUKKyAgICB0aGUgbWFnaWMgbWV0aG9kcyB5b3Ugc3BlY2lmaWNhbGx5IHdhbnQ6CisKKyAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgPj4+IG1vY2suX19zZXRpdGVtX18gPSBNb2NrKHNpZGVfZWZmZWN0PWdldGl0ZW0pCisgICAgICAgID4+PiBtb2NrLl9fZ2V0aXRlbV9fID0gTW9jayhzaWRlX2VmZmVjdD1zZXRpdGVtKQorCisgICAgQSAqdGhpcmQqIG9wdGlvbiBpcyB0byB1c2UgYE1hZ2ljTW9ja2AgYnV0IHBhc3NpbmcgaW4gYGRpY3RgIGFzIHRoZSBgc3BlY2AKKyAgICAob3IgYHNwZWNfc2V0YCkgYXJndW1lbnQgc28gdGhhdCB0aGUgYE1hZ2ljTW9ja2AgY3JlYXRlZCBvbmx5IGhhcworICAgIGRpY3Rpb25hcnkgbWFnaWMgbWV0aG9kcyBhdmFpbGFibGU6CisKKyAgICAgICAgPj4+IG1vY2sgPSBNYWdpY01vY2soc3BlY19zZXQ9ZGljdCkKKyAgICAgICAgPj4+IG1vY2suX19nZXRpdGVtX18uc2lkZV9lZmZlY3QgPSBnZXRpdGVtCisgICAgICAgID4+PiBtb2NrLl9fc2V0aXRlbV9fLnNpZGVfZWZmZWN0ID0gc2V0aXRlbQorCitXaXRoIHRoZXNlIHNpZGUgZWZmZWN0IGZ1bmN0aW9ucyBpbiBwbGFjZSwgdGhlIGBtb2NrYCB3aWxsIGJlaGF2ZSBsaWtlIGEgbm9ybWFsCitkaWN0aW9uYXJ5IGJ1dCByZWNvcmRpbmcgdGhlIGFjY2Vzcy4gSXQgZXZlbiByYWlzZXMgYSBgS2V5RXJyb3JgIGlmIHlvdSB0cnkKK3RvIGFjY2VzcyBhIGtleSB0aGF0IGRvZXNuJ3QgZXhpc3QuCisKKyAgICA+Pj4gbW9ja1snYSddCisgICAgMQorICAgID4+PiBtb2NrWydjJ10KKyAgICAzCisgICAgPj4+IG1vY2tbJ2QnXQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgLi4uCisgICAgS2V5RXJyb3I6ICdkJworICAgID4+PiBtb2NrWydiJ10gPSAnZmlzaCcKKyAgICA+Pj4gbW9ja1snZCddID0gJ2VnZ3MnCisgICAgPj4+IG1vY2tbJ2InXQorICAgICdmaXNoJworICAgID4+PiBtb2NrWydkJ10KKyAgICAnZWdncycKKworQWZ0ZXIgaXQgaGFzIGJlZW4gdXNlZCB5b3UgY2FuIG1ha2UgYXNzZXJ0aW9ucyBhYm91dCB0aGUgYWNjZXNzIHVzaW5nIHRoZSBub3JtYWwKK21vY2sgbWV0aG9kcyBhbmQgYXR0cmlidXRlczoKKworICAgID4+PiBtb2NrLl9fZ2V0aXRlbV9fLmNhbGxfYXJnc19saXN0CisgICAgW2NhbGwoJ2EnKSwgY2FsbCgnYycpLCBjYWxsKCdkJyksIGNhbGwoJ2InKSwgY2FsbCgnZCcpXQorICAgID4+PiBtb2NrLl9fc2V0aXRlbV9fLmNhbGxfYXJnc19saXN0CisgICAgW2NhbGwoJ2InLCAnZmlzaCcpLCBjYWxsKCdkJywgJ2VnZ3MnKV0KKyAgICA+Pj4gbXlfZGljdAorICAgIHsnYSc6IDEsICdjJzogMywgJ2InOiAnZmlzaCcsICdkJzogJ2VnZ3MnfQorCisKK01vY2sgc3ViY2xhc3NlcyBhbmQgdGhlaXIgYXR0cmlidXRlcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1RoZXJlIGFyZSB2YXJpb3VzIHJlYXNvbnMgd2h5IHlvdSBtaWdodCB3YW50IHRvIHN1YmNsYXNzIGBNb2NrYC4gT25lIHJlYXNvbgorbWlnaHQgYmUgdG8gYWRkIGhlbHBlciBtZXRob2RzLiBIZXJlJ3MgYSBzaWxseSBleGFtcGxlOgorCisgICAgPj4+IGNsYXNzIE15TW9jayhNYWdpY01vY2spOgorICAgIC4uLiAgICAgZGVmIGhhc19iZWVuX2NhbGxlZChzZWxmKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gc2VsZi5jYWxsZWQKKyAgICAuLi4KKyAgICA+Pj4gbXltb2NrID0gTXlNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBteW1vY2sKKyAgICA8TXlNb2NrIGlkPScuLi4nPgorICAgID4+PiBteW1vY2suaGFzX2JlZW5fY2FsbGVkKCkKKyAgICBGYWxzZQorICAgID4+PiBteW1vY2soKQorICAgID4+PiBteW1vY2suaGFzX2JlZW5fY2FsbGVkKCkKKyAgICBUcnVlCisKK1RoZSBzdGFuZGFyZCBiZWhhdmlvdXIgZm9yIGBNb2NrYCBpbnN0YW5jZXMgaXMgdGhhdCBhdHRyaWJ1dGVzIGFuZCB0aGUgcmV0dXJuCit2YWx1ZSBtb2NrcyBhcmUgb2YgdGhlIHNhbWUgdHlwZSBhcyB0aGUgbW9jayB0aGV5IGFyZSBhY2Nlc3NlZCBvbi4gVGhpcyBlbnN1cmVzCit0aGF0IGBNb2NrYCBhdHRyaWJ1dGVzIGFyZSBgTW9ja3NgIGFuZCBgTWFnaWNNb2NrYCBhdHRyaWJ1dGVzIGFyZSBgTWFnaWNNb2Nrc2AKK1sjXV8uIFNvIGlmIHlvdSdyZSBzdWJjbGFzc2luZyB0byBhZGQgaGVscGVyIG1ldGhvZHMgdGhlbiB0aGV5J2xsIGFsc28gYmUKK2F2YWlsYWJsZSBvbiB0aGUgYXR0cmlidXRlcyBhbmQgcmV0dXJuIHZhbHVlIG1vY2sgb2YgaW5zdGFuY2VzIG9mIHlvdXIKK3N1YmNsYXNzLgorCisgICAgPj4+IG15bW9jay5mb28KKyAgICA8TXlNb2NrIG5hbWU9J21vY2suZm9vJyBpZD0nLi4uJz4KKyAgICA+Pj4gbXltb2NrLmZvby5oYXNfYmVlbl9jYWxsZWQoKQorICAgIEZhbHNlCisgICAgPj4+IG15bW9jay5mb28oKQorICAgIDxNeU1vY2sgbmFtZT0nbW9jay5mb28oKScgaWQ9Jy4uLic+CisgICAgPj4+IG15bW9jay5mb28uaGFzX2JlZW5fY2FsbGVkKCkKKyAgICBUcnVlCisKK1NvbWV0aW1lcyB0aGlzIGlzIGluY29udmVuaWVudC4gRm9yIGV4YW1wbGUsIGBvbmUgdXNlcgorPGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvbW9jay9pc3N1ZXMvZGV0YWlsP2lkPTEwNT5gXyBpcyBzdWJjbGFzc2luZyBtb2NrIHRvCitjcmVhdGVkIGEgYFR3aXN0ZWQgYWRhcHRvcgorPGh0dHA6Ly90d2lzdGVkbWF0cml4LmNvbS9kb2N1bWVudHMvMTEuMC4wL2FwaS90d2lzdGVkLnB5dGhvbi5jb21wb25lbnRzLmh0bWw+YF8uCitIYXZpbmcgdGhpcyBhcHBsaWVkIHRvIGF0dHJpYnV0ZXMgdG9vIGFjdHVhbGx5IGNhdXNlcyBlcnJvcnMuCisKK2BNb2NrYCAoaW4gYWxsIGl0cyBmbGF2b3VycykgdXNlcyBhIG1ldGhvZCBjYWxsZWQgYF9nZXRfY2hpbGRfbW9ja2AgdG8gY3JlYXRlCit0aGVzZSAic3ViLW1vY2tzIiBmb3IgYXR0cmlidXRlcyBhbmQgcmV0dXJuIHZhbHVlcy4gWW91IGNhbiBwcmV2ZW50IHlvdXIKK3N1YmNsYXNzIGJlaW5nIHVzZWQgZm9yIGF0dHJpYnV0ZXMgYnkgb3ZlcnJpZGluZyB0aGlzIG1ldGhvZC4gVGhlIHNpZ25hdHVyZSBpcwordGhhdCBpdCB0YWtlcyBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMgKGAqKmt3YXJnc2ApIHdoaWNoIGFyZSB0aGVuIHBhc3NlZAorb250byB0aGUgbW9jayBjb25zdHJ1Y3RvcjoKKworICAgID4+PiBjbGFzcyBTdWJjbGFzcyhNYWdpY01vY2spOgorICAgIC4uLiAgICAgZGVmIF9nZXRfY2hpbGRfbW9jayhzZWxmLCAqKmt3YXJncyk6CisgICAgLi4uICAgICAgICAgcmV0dXJuIE1hZ2ljTW9jaygqKmt3YXJncykKKyAgICAuLi4KKyAgICA+Pj4gbXltb2NrID0gU3ViY2xhc3MoKQorICAgID4+PiBteW1vY2suZm9vCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLmZvbycgaWQ9Jy4uLic+CisgICAgPj4+IGFzc2VydCBpc2luc3RhbmNlKG15bW9jaywgU3ViY2xhc3MpCisgICAgPj4+IGFzc2VydCBub3QgaXNpbnN0YW5jZShteW1vY2suZm9vLCBTdWJjbGFzcykKKyAgICA+Pj4gYXNzZXJ0IG5vdCBpc2luc3RhbmNlKG15bW9jaygpLCBTdWJjbGFzcykKKworLi4gWyNdIEFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGUgYXJlIHRoZSBub24tY2FsbGFibGUgbW9ja3MuIEF0dHJpYnV0ZXMgdXNlIHRoZQorICAgIGNhbGxhYmxlIHZhcmlhbnQgYmVjYXVzZSBvdGhlcndpc2Ugbm9uLWNhbGxhYmxlIG1vY2tzIGNvdWxkbid0IGhhdmUgY2FsbGFibGUKKyAgICBtZXRob2RzLgorCisKK01vY2tpbmcgaW1wb3J0cyB3aXRoIHBhdGNoLmRpY3QKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworT25lIHNpdHVhdGlvbiB3aGVyZSBtb2NraW5nIGNhbiBiZSBoYXJkIGlzIHdoZXJlIHlvdSBoYXZlIGEgbG9jYWwgaW1wb3J0IGluc2lkZQorYSBmdW5jdGlvbi4gVGhlc2UgYXJlIGhhcmRlciB0byBtb2NrIGJlY2F1c2UgdGhleSBhcmVuJ3QgdXNpbmcgYW4gb2JqZWN0IGZyb20KK3RoZSBtb2R1bGUgbmFtZXNwYWNlIHRoYXQgd2UgY2FuIHBhdGNoIG91dC4KKworR2VuZXJhbGx5IGxvY2FsIGltcG9ydHMgYXJlIHRvIGJlIGF2b2lkZWQuIFRoZXkgYXJlIHNvbWV0aW1lcyBkb25lIHRvIHByZXZlbnQKK2NpcmN1bGFyIGRlcGVuZGVuY2llcywgZm9yIHdoaWNoIHRoZXJlIGlzICp1c3VhbGx5KiBhIG11Y2ggYmV0dGVyIHdheSB0byBzb2x2ZQordGhlIHByb2JsZW0gKHJlZmFjdG9yIHRoZSBjb2RlKSBvciB0byBwcmV2ZW50ICJ1cCBmcm9udCBjb3N0cyIgYnkgZGVsYXlpbmcgdGhlCitpbXBvcnQuIFRoaXMgY2FuIGFsc28gYmUgc29sdmVkIGluIGJldHRlciB3YXlzIHRoYW4gYW4gdW5jb25kaXRpb25hbCBsb2NhbAoraW1wb3J0IChzdG9yZSB0aGUgbW9kdWxlIGFzIGEgY2xhc3Mgb3IgbW9kdWxlIGF0dHJpYnV0ZSBhbmQgb25seSBkbyB0aGUgaW1wb3J0CitvbiBmaXJzdCB1c2UpLgorCitUaGF0IGFzaWRlIHRoZXJlIGlzIGEgd2F5IHRvIHVzZSBgbW9ja2AgdG8gYWZmZWN0IHRoZSByZXN1bHRzIG9mIGFuIGltcG9ydC4KK0ltcG9ydGluZyBmZXRjaGVzIGFuICpvYmplY3QqIGZyb20gdGhlIGBzeXMubW9kdWxlc2AgZGljdGlvbmFyeS4gTm90ZSB0aGF0IGl0CitmZXRjaGVzIGFuICpvYmplY3QqLCB3aGljaCBuZWVkIG5vdCBiZSBhIG1vZHVsZS4gSW1wb3J0aW5nIGEgbW9kdWxlIGZvciB0aGUKK2ZpcnN0IHRpbWUgcmVzdWx0cyBpbiBhIG1vZHVsZSBvYmplY3QgYmVpbmcgcHV0IGluIGBzeXMubW9kdWxlc2AsIHNvIHVzdWFsbHkKK3doZW4geW91IGltcG9ydCBzb21ldGhpbmcgeW91IGdldCBhIG1vZHVsZSBiYWNrLiBUaGlzIG5lZWQgbm90IGJlIHRoZSBjYXNlCitob3dldmVyLgorCitUaGlzIG1lYW5zIHlvdSBjYW4gdXNlIDpmdW5jOmBwYXRjaC5kaWN0YCB0byAqdGVtcG9yYXJpbHkqIHB1dCBhIG1vY2sgaW4gcGxhY2UKK2luIGBzeXMubW9kdWxlc2AuIEFueSBpbXBvcnRzIHdoaWxzdCB0aGlzIHBhdGNoIGlzIGFjdGl2ZSB3aWxsIGZldGNoIHRoZSBtb2NrLgorV2hlbiB0aGUgcGF0Y2ggaXMgY29tcGxldGUgKHRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24gZXhpdHMsIHRoZSB3aXRoIHN0YXRlbWVudAorYm9keSBpcyBjb21wbGV0ZSBvciBgcGF0Y2hlci5zdG9wKClgIGlzIGNhbGxlZCkgdGhlbiB3aGF0ZXZlciB3YXMgdGhlcmUKK3ByZXZpb3VzbHkgd2lsbCBiZSByZXN0b3JlZCBzYWZlbHkuCisKK0hlcmUncyBhbiBleGFtcGxlIHRoYXQgbW9ja3Mgb3V0IHRoZSAnZm9vYmxlJyBtb2R1bGUuCisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiB3aXRoIHBhdGNoLmRpY3QoJ3N5cy5tb2R1bGVzJywgeydmb29ibGUnOiBtb2NrfSk6CisgICAgLi4uICAgIGltcG9ydCBmb29ibGUKKyAgICAuLi4gICAgZm9vYmxlLmJsb2IoKQorICAgIC4uLgorICAgIDxNb2NrIG5hbWU9J21vY2suYmxvYigpJyBpZD0nLi4uJz4KKyAgICA+Pj4gYXNzZXJ0ICdmb29ibGUnIG5vdCBpbiBzeXMubW9kdWxlcworICAgID4+PiBtb2NrLmJsb2IuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCitBcyB5b3UgY2FuIHNlZSB0aGUgYGltcG9ydCBmb29ibGVgIHN1Y2NlZWRzLCBidXQgb24gZXhpdCB0aGVyZSBpcyBubyAnZm9vYmxlJworbGVmdCBpbiBgc3lzLm1vZHVsZXNgLgorCitUaGlzIGFsc28gd29ya3MgZm9yIHRoZSBgZnJvbSBtb2R1bGUgaW1wb3J0IG5hbWVgIGZvcm06CisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiB3aXRoIHBhdGNoLmRpY3QoJ3N5cy5tb2R1bGVzJywgeydmb29ibGUnOiBtb2NrfSk6CisgICAgLi4uICAgIGZyb20gZm9vYmxlIGltcG9ydCBibG9iCisgICAgLi4uICAgIGJsb2IuYmxpcCgpCisgICAgLi4uCisgICAgPE1vY2sgbmFtZT0nbW9jay5ibG9iLmJsaXAoKScgaWQ9Jy4uLic+CisgICAgPj4+IG1vY2suYmxvYi5ibGlwLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworV2l0aCBzbGlnaHRseSBtb3JlIHdvcmsgeW91IGNhbiBhbHNvIG1vY2sgcGFja2FnZSBpbXBvcnRzOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gbW9kdWxlcyA9IHsncGFja2FnZSc6IG1vY2ssICdwYWNrYWdlLm1vZHVsZSc6IG1vY2subW9kdWxlfQorICAgID4+PiB3aXRoIHBhdGNoLmRpY3QoJ3N5cy5tb2R1bGVzJywgbW9kdWxlcyk6CisgICAgLi4uICAgIGZyb20gcGFja2FnZS5tb2R1bGUgaW1wb3J0IGZvb2JsZQorICAgIC4uLiAgICBmb29ibGUoKQorICAgIC4uLgorICAgIDxNb2NrIG5hbWU9J21vY2subW9kdWxlLmZvb2JsZSgpJyBpZD0nLi4uJz4KKyAgICA+Pj4gbW9jay5tb2R1bGUuZm9vYmxlLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworCitUcmFja2luZyBvcmRlciBvZiBjYWxscyBhbmQgbGVzcyB2ZXJib3NlIGNhbGwgYXNzZXJ0aW9ucworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworVGhlIDpjbGFzczpgTW9ja2AgY2xhc3MgYWxsb3dzIHlvdSB0byB0cmFjayB0aGUgKm9yZGVyKiBvZiBtZXRob2QgY2FsbHMgb24KK3lvdXIgbW9jayBvYmplY3RzIHRocm91Z2ggdGhlIDphdHRyOmB+TW9jay5tZXRob2RfY2FsbHNgIGF0dHJpYnV0ZS4gVGhpcworZG9lc24ndCBhbGxvdyB5b3UgdG8gdHJhY2sgdGhlIG9yZGVyIG9mIGNhbGxzIGJldHdlZW4gc2VwYXJhdGUgbW9jayBvYmplY3RzLAoraG93ZXZlciB3ZSBjYW4gdXNlIDphdHRyOmB+TW9jay5tb2NrX2NhbGxzYCB0byBhY2hpZXZlIHRoZSBzYW1lIGVmZmVjdC4KKworQmVjYXVzZSBtb2NrcyB0cmFjayBjYWxscyB0byBjaGlsZCBtb2NrcyBpbiBgbW9ja19jYWxsc2AsIGFuZCBhY2Nlc3NpbmcgYW4KK2FyYml0cmFyeSBhdHRyaWJ1dGUgb2YgYSBtb2NrIGNyZWF0ZXMgYSBjaGlsZCBtb2NrLCB3ZSBjYW4gY3JlYXRlIG91ciBzZXBhcmF0ZQorbW9ja3MgZnJvbSBhIHBhcmVudCBvbmUuIENhbGxzIHRvIHRob3NlIGNoaWxkIG1vY2sgd2lsbCB0aGVuIGFsbCBiZSByZWNvcmRlZCwKK2luIG9yZGVyLCBpbiB0aGUgYG1vY2tfY2FsbHNgIG9mIHRoZSBwYXJlbnQ6CisKKyAgICA+Pj4gbWFuYWdlciA9IE1vY2soKQorICAgID4+PiBtb2NrX2ZvbyA9IG1hbmFnZXIuZm9vCisgICAgPj4+IG1vY2tfYmFyID0gbWFuYWdlci5iYXIKKworICAgID4+PiBtb2NrX2Zvby5zb21ldGhpbmcoKQorICAgIDxNb2NrIG5hbWU9J21vY2suZm9vLnNvbWV0aGluZygpJyBpZD0nLi4uJz4KKyAgICA+Pj4gbW9ja19iYXIub3RoZXIudGhpbmcoKQorICAgIDxNb2NrIG5hbWU9J21vY2suYmFyLm90aGVyLnRoaW5nKCknIGlkPScuLi4nPgorCisgICAgPj4+IG1hbmFnZXIubW9ja19jYWxscworICAgIFtjYWxsLmZvby5zb21ldGhpbmcoKSwgY2FsbC5iYXIub3RoZXIudGhpbmcoKV0KKworV2UgY2FuIHRoZW4gYXNzZXJ0IGFib3V0IHRoZSBjYWxscywgaW5jbHVkaW5nIHRoZSBvcmRlciwgYnkgY29tcGFyaW5nIHdpdGgKK3RoZSBgbW9ja19jYWxsc2AgYXR0cmlidXRlIG9uIHRoZSBtYW5hZ2VyIG1vY2s6CisKKyAgICA+Pj4gZXhwZWN0ZWRfY2FsbHMgPSBbY2FsbC5mb28uc29tZXRoaW5nKCksIGNhbGwuYmFyLm90aGVyLnRoaW5nKCldCisgICAgPj4+IG1hbmFnZXIubW9ja19jYWxscyA9PSBleHBlY3RlZF9jYWxscworICAgIFRydWUKKworSWYgYHBhdGNoYCBpcyBjcmVhdGluZywgYW5kIHB1dHRpbmcgaW4gcGxhY2UsIHlvdXIgbW9ja3MgdGhlbiB5b3UgY2FuIGF0dGFjaAordGhlbSB0byBhIG1hbmFnZXIgbW9jayB1c2luZyB0aGUgOm1ldGg6YH5Nb2NrLmF0dGFjaF9tb2NrYCBtZXRob2QuIEFmdGVyCithdHRhY2hpbmcgY2FsbHMgd2lsbCBiZSByZWNvcmRlZCBpbiBgbW9ja19jYWxsc2Agb2YgdGhlIG1hbmFnZXIuCisKKyAgICA+Pj4gbWFuYWdlciA9IE1hZ2ljTW9jaygpCisgICAgPj4+IHdpdGggcGF0Y2goJ215bW9kdWxlLkNsYXNzMScpIGFzIE1vY2tDbGFzczE6CisgICAgLi4uICAgICB3aXRoIHBhdGNoKCdteW1vZHVsZS5DbGFzczInKSBhcyBNb2NrQ2xhc3MyOgorICAgIC4uLiAgICAgICAgIG1hbmFnZXIuYXR0YWNoX21vY2soTW9ja0NsYXNzMSwgJ01vY2tDbGFzczEnKQorICAgIC4uLiAgICAgICAgIG1hbmFnZXIuYXR0YWNoX21vY2soTW9ja0NsYXNzMiwgJ01vY2tDbGFzczInKQorICAgIC4uLiAgICAgICAgIE1vY2tDbGFzczEoKS5mb28oKQorICAgIC4uLiAgICAgICAgIE1vY2tDbGFzczIoKS5iYXIoKQorICAgIC4uLgorICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5Nb2NrQ2xhc3MxKCkuZm9vKCknIGlkPScuLi4nPgorICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5Nb2NrQ2xhc3MyKCkuYmFyKCknIGlkPScuLi4nPgorICAgID4+PiBtYW5hZ2VyLm1vY2tfY2FsbHMKKyAgICBbY2FsbC5Nb2NrQ2xhc3MxKCksCisgICAgIGNhbGwuTW9ja0NsYXNzMSgpLmZvbygpLAorICAgICBjYWxsLk1vY2tDbGFzczIoKSwKKyAgICAgY2FsbC5Nb2NrQ2xhc3MyKCkuYmFyKCldCisKK0lmIG1hbnkgY2FsbHMgaGF2ZSBiZWVuIG1hZGUsIGJ1dCB5b3UncmUgb25seSBpbnRlcmVzdGVkIGluIGEgcGFydGljdWxhcgorc2VxdWVuY2Ugb2YgdGhlbSB0aGVuIGFuIGFsdGVybmF0aXZlIGlzIHRvIHVzZSB0aGUKKzptZXRoOmB+TW9jay5hc3NlcnRfaGFzX2NhbGxzYCBtZXRob2QuIFRoaXMgdGFrZXMgYSBsaXN0IG9mIGNhbGxzIChjb25zdHJ1Y3RlZAord2l0aCB0aGUgOmRhdGE6YGNhbGxgIG9iamVjdCkuIElmIHRoYXQgc2VxdWVuY2Ugb2YgY2FsbHMgYXJlIGluCis6YXR0cjpgfk1vY2subW9ja19jYWxsc2AgdGhlbiB0aGUgYXNzZXJ0IHN1Y2NlZWRzLgorCisgICAgPj4+IG0gPSBNYWdpY01vY2soKQorICAgID4+PiBtKCkuZm9vKCkuYmFyKCkuYmF6KCkKKyAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2soKS5mb28oKS5iYXIoKS5iYXooKScgaWQ9Jy4uLic+CisgICAgPj4+IG0ub25lKCkudHdvKCkudGhyZWUoKQorICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5vbmUoKS50d28oKS50aHJlZSgpJyBpZD0nLi4uJz4KKyAgICA+Pj4gY2FsbHMgPSBjYWxsLm9uZSgpLnR3bygpLnRocmVlKCkuY2FsbF9saXN0KCkKKyAgICA+Pj4gbS5hc3NlcnRfaGFzX2NhbGxzKGNhbGxzKQorCitFdmVuIHRob3VnaCB0aGUgY2hhaW5lZCBjYWxsIGBtLm9uZSgpLnR3bygpLnRocmVlKClgIGFyZW4ndCB0aGUgb25seSBjYWxscyB0aGF0CitoYXZlIGJlZW4gbWFkZSB0byB0aGUgbW9jaywgdGhlIGFzc2VydCBzdGlsbCBzdWNjZWVkcy4KKworU29tZXRpbWVzIGEgbW9jayBtYXkgaGF2ZSBzZXZlcmFsIGNhbGxzIG1hZGUgdG8gaXQsIGFuZCB5b3UgYXJlIG9ubHkgaW50ZXJlc3RlZAoraW4gYXNzZXJ0aW5nIGFib3V0ICpzb21lKiBvZiB0aG9zZSBjYWxscy4gWW91IG1heSBub3QgZXZlbiBjYXJlIGFib3V0IHRoZQorb3JkZXIuIEluIHRoaXMgY2FzZSB5b3UgY2FuIHBhc3MgYGFueV9vcmRlcj1UcnVlYCB0byBgYXNzZXJ0X2hhc19jYWxsc2A6CisKKyAgICA+Pj4gbSA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG0oMSksIG0udHdvKDIsIDMpLCBtLnNldmVuKDcpLCBtLmZpZnR5KCc1MCcpCisgICAgKC4uLikKKyAgICA+Pj4gY2FsbHMgPSBbY2FsbC5maWZ0eSgnNTAnKSwgY2FsbCgxKSwgY2FsbC5zZXZlbig3KV0KKyAgICA+Pj4gbS5hc3NlcnRfaGFzX2NhbGxzKGNhbGxzLCBhbnlfb3JkZXI9VHJ1ZSkKKworCitNb3JlIGNvbXBsZXggYXJndW1lbnQgbWF0Y2hpbmcKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitVc2luZyB0aGUgc2FtZSBiYXNpYyBjb25jZXB0IGFzIDpkYXRhOmBBTllgIHdlIGNhbiBpbXBsZW1lbnQgbWF0Y2hlcnMgdG8gZG8gbW9yZQorY29tcGxleCBhc3NlcnRpb25zIG9uIG9iamVjdHMgdXNlZCBhcyBhcmd1bWVudHMgdG8gbW9ja3MuCisKK1N1cHBvc2Ugd2UgZXhwZWN0IHNvbWUgb2JqZWN0IHRvIGJlIHBhc3NlZCB0byBhIG1vY2sgdGhhdCBieSBkZWZhdWx0Citjb21wYXJlcyBlcXVhbCBiYXNlZCBvbiBvYmplY3QgaWRlbnRpdHkgKHdoaWNoIGlzIHRoZSBQeXRob24gZGVmYXVsdCBmb3IgdXNlcgorZGVmaW5lZCBjbGFzc2VzKS4gVG8gdXNlIDptZXRoOmB+TW9jay5hc3NlcnRfY2FsbGVkX3dpdGhgIHdlIHdvdWxkIG5lZWQgdG8gcGFzcworaW4gdGhlIGV4YWN0IHNhbWUgb2JqZWN0LiBJZiB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHNvbWUgb2YgdGhlIGF0dHJpYnV0ZXMKK29mIHRoaXMgb2JqZWN0IHRoZW4gd2UgY2FuIGNyZWF0ZSBhIG1hdGNoZXIgdGhhdCB3aWxsIGNoZWNrIHRoZXNlIGF0dHJpYnV0ZXMKK2ZvciB1cy4KKworWW91IGNhbiBzZWUgaW4gdGhpcyBleGFtcGxlIGhvdyBhICdzdGFuZGFyZCcgY2FsbCB0byBgYXNzZXJ0X2NhbGxlZF93aXRoYCBpc24ndAorc3VmZmljaWVudDoKKworICAgID4+PiBjbGFzcyBGb286CisgICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZiwgYSwgYik6CisgICAgLi4uICAgICAgICAgc2VsZi5hLCBzZWxmLmIgPSBhLCBiCisgICAgLi4uCisgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBtb2NrKEZvbygxLCAyKSkKKyAgICA+Pj4gbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoRm9vKDEsIDIpKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgLi4uCisgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkOiBjYWxsKDxfX21haW5fXy5Gb28gb2JqZWN0IGF0IDB4Li4uPikKKyAgICBBY3R1YWwgY2FsbDogY2FsbCg8X19tYWluX18uRm9vIG9iamVjdCBhdCAweC4uLj4pCisKK0EgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3Igb3VyIGBGb29gIGNsYXNzIG1pZ2h0IGxvb2sgc29tZXRoaW5nIGxpa2UgdGhpczoKKworICAgID4+PiBkZWYgY29tcGFyZShzZWxmLCBvdGhlcik6CisgICAgLi4uICAgICBpZiBub3QgdHlwZShzZWxmKSA9PSB0eXBlKG90aGVyKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAuLi4gICAgIGlmIHNlbGYuYSAhPSBvdGhlci5hOgorICAgIC4uLiAgICAgICAgIHJldHVybiBGYWxzZQorICAgIC4uLiAgICAgaWYgc2VsZi5iICE9IG90aGVyLmI6CisgICAgLi4uICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgLi4uICAgICByZXR1cm4gVHJ1ZQorICAgIC4uLgorCitBbmQgYSBtYXRjaGVyIG9iamVjdCB0aGF0IGNhbiB1c2UgY29tcGFyaXNvbiBmdW5jdGlvbnMgbGlrZSB0aGlzIGZvciBpdHMKK2VxdWFsaXR5IG9wZXJhdGlvbiB3b3VsZCBsb29rIHNvbWV0aGluZyBsaWtlIHRoaXM6CisKKyAgICA+Pj4gY2xhc3MgTWF0Y2hlcjoKKyAgICAuLi4gICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb21wYXJlLCBzb21lX29iaik6CisgICAgLi4uICAgICAgICAgc2VsZi5jb21wYXJlID0gY29tcGFyZQorICAgIC4uLiAgICAgICAgIHNlbGYuc29tZV9vYmogPSBzb21lX29iagorICAgIC4uLiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgLi4uICAgICAgICAgcmV0dXJuIHNlbGYuY29tcGFyZShzZWxmLnNvbWVfb2JqLCBvdGhlcikKKyAgICAuLi4KKworUHV0dGluZyBhbGwgdGhpcyB0b2dldGhlcjoKKworICAgID4+PiBtYXRjaF9mb28gPSBNYXRjaGVyKGNvbXBhcmUsIEZvbygxLCAyKSkKKyAgICA+Pj4gbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgobWF0Y2hfZm9vKQorCitUaGUgYE1hdGNoZXJgIGlzIGluc3RhbnRpYXRlZCB3aXRoIG91ciBjb21wYXJlIGZ1bmN0aW9uIGFuZCB0aGUgYEZvb2Agb2JqZWN0Cit3ZSB3YW50IHRvIGNvbXBhcmUgYWdhaW5zdC4gSW4gYGFzc2VydF9jYWxsZWRfd2l0aGAgdGhlIGBNYXRjaGVyYCBlcXVhbGl0eQorbWV0aG9kIHdpbGwgYmUgY2FsbGVkLCB3aGljaCBjb21wYXJlcyB0aGUgb2JqZWN0IHRoZSBtb2NrIHdhcyBjYWxsZWQgd2l0aAorYWdhaW5zdCB0aGUgb25lIHdlIGNyZWF0ZWQgb3VyIG1hdGNoZXIgd2l0aC4gSWYgdGhleSBtYXRjaCB0aGVuCitgYXNzZXJ0X2NhbGxlZF93aXRoYCBwYXNzZXMsIGFuZCBpZiB0aGV5IGRvbid0IGFuIGBBc3NlcnRpb25FcnJvcmAgaXMgcmFpc2VkOgorCisgICAgPj4+IG1hdGNoX3dyb25nID0gTWF0Y2hlcihjb21wYXJlLCBGb28oMywgNCkpCisgICAgPj4+IG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKG1hdGNoX3dyb25nKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgLi4uCisgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkOiAoKDxNYXRjaGVyIG9iamVjdCBhdCAweC4uLj4sKSwge30pCisgICAgQ2FsbGVkIHdpdGg6ICgoPEZvbyBvYmplY3QgYXQgMHguLi4+LCksIHt9KQorCitXaXRoIGEgYml0IG9mIHR3ZWFraW5nIHlvdSBjb3VsZCBoYXZlIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9uIHJhaXNlIHRoZQorYEFzc2VydGlvbkVycm9yYCBkaXJlY3RseSBhbmQgcHJvdmlkZSBhIG1vcmUgdXNlZnVsIGZhaWx1cmUgbWVzc2FnZS4KKworQXMgb2YgdmVyc2lvbiAxLjUsIHRoZSBQeXRob24gdGVzdGluZyBsaWJyYXJ5IGBQeUhhbWNyZXN0Cis8aHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL1B5SGFtY3Jlc3Q+YF8gcHJvdmlkZXMgc2ltaWxhciBmdW5jdGlvbmFsaXR5LAordGhhdCBtYXkgYmUgdXNlZnVsIGhlcmUsIGluIHRoZSBmb3JtIG9mIGl0cyBlcXVhbGl0eSBtYXRjaGVyCisoYGhhbWNyZXN0LmxpYnJhcnkuaW50ZWdyYXRpb24ubWF0Y2hfZXF1YWxpdHkKKzxodHRwOi8vcGFja2FnZXMucHl0aG9uLm9yZy9QeUhhbWNyZXN0L2ludGVncmF0aW9uLmh0bWwjaGFtY3Jlc3QubGlicmFyeS5pbnRlZ3JhdGlvbi5tYXRjaF9lcXVhbGl0eT5gXykuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdCBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMzE2ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdApAQCAtMCwwICsxLDIyMjUgQEAKKworOm1vZDpgdW5pdHRlc3QubW9ja2AgLS0tIG1vY2sgb2JqZWN0IGxpYnJhcnkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IHVuaXR0ZXN0Lm1vY2sKKyAgIDpzeW5vcHNpczogTW9jayBvYmplY3QgbGlicmFyeS4KKy4uIG1vZHVsZWF1dGhvcjo6IE1pY2hhZWwgRm9vcmQgPG1pY2hhZWxAcHl0aG9uLm9yZz4KKy4uIGN1cnJlbnRtb2R1bGU6OiB1bml0dGVzdC5tb2NrCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCis6bW9kOmB1bml0dGVzdC5tb2NrYCBpcyBhIGxpYnJhcnkgZm9yIHRlc3RpbmcgaW4gUHl0aG9uLiBJdCBhbGxvd3MgeW91IHRvCityZXBsYWNlIHBhcnRzIG9mIHlvdXIgc3lzdGVtIHVuZGVyIHRlc3Qgd2l0aCBtb2NrIG9iamVjdHMgYW5kIG1ha2UgYXNzZXJ0aW9ucworYWJvdXQgaG93IHRoZXkgaGF2ZSBiZWVuIHVzZWQuCisKK2B1bml0dGVzdC5tb2NrYCBwcm92aWRlcyBhIGNvcmUgOmNsYXNzOmBNb2NrYCBjbGFzcyByZW1vdmluZyB0aGUgbmVlZCB0bworY3JlYXRlIGEgaG9zdCBvZiBzdHVicyB0aHJvdWdob3V0IHlvdXIgdGVzdCBzdWl0ZS4gQWZ0ZXIgcGVyZm9ybWluZyBhbgorYWN0aW9uLCB5b3UgY2FuIG1ha2UgYXNzZXJ0aW9ucyBhYm91dCB3aGljaCBtZXRob2RzIC8gYXR0cmlidXRlcyB3ZXJlIHVzZWQKK2FuZCBhcmd1bWVudHMgdGhleSB3ZXJlIGNhbGxlZCB3aXRoLiBZb3UgY2FuIGFsc28gc3BlY2lmeSByZXR1cm4gdmFsdWVzIGFuZAorc2V0IG5lZWRlZCBhdHRyaWJ1dGVzIGluIHRoZSBub3JtYWwgd2F5LgorCitBZGRpdGlvbmFsbHksIG1vY2sgcHJvdmlkZXMgYSA6ZnVuYzpgcGF0Y2hgIGRlY29yYXRvciB0aGF0IGhhbmRsZXMgcGF0Y2hpbmcKK21vZHVsZSBhbmQgY2xhc3MgbGV2ZWwgYXR0cmlidXRlcyB3aXRoaW4gdGhlIHNjb3BlIG9mIGEgdGVzdCwgYWxvbmcgd2l0aAorOmNvbnN0OmBzZW50aW5lbGAgZm9yIGNyZWF0aW5nIHVuaXF1ZSBvYmplY3RzLiBTZWUgdGhlIGBxdWljayBndWlkZWBfIGZvcgorc29tZSBleGFtcGxlcyBvZiBob3cgdG8gdXNlIDpjbGFzczpgTW9ja2AsIDpjbGFzczpgTWFnaWNNb2NrYCBhbmQKKzpmdW5jOmBwYXRjaGAuCisKK01vY2sgaXMgdmVyeSBlYXN5IHRvIHVzZSBhbmQgaXMgZGVzaWduZWQgZm9yIHVzZSB3aXRoIDptb2Q6YHVuaXR0ZXN0YC4gTW9jaworaXMgYmFzZWQgb24gdGhlICdhY3Rpb24gLT4gYXNzZXJ0aW9uJyBwYXR0ZXJuIGluc3RlYWQgb2YgYCdyZWNvcmQgLT4gcmVwbGF5J2AKK3VzZWQgYnkgbWFueSBtb2NraW5nIGZyYW1ld29ya3MuCisKK1RoZXJlIGlzIGEgYmFja3BvcnQgb2YgYHVuaXR0ZXN0Lm1vY2tgIGZvciBlYXJsaWVyIHZlcnNpb25zIG9mIFB5dGhvbiwKK2F2YWlsYWJsZSBhcyBgbW9jayBvbiBQeVBJIDxodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvbW9jaz5gXy4KKworKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvdW5pdHRlc3QvbW9jay5weWAKKworCitRdWljayBHdWlkZQorLS0tLS0tLS0tLS0KKworOmNsYXNzOmBNb2NrYCBhbmQgOmNsYXNzOmBNYWdpY01vY2tgIG9iamVjdHMgY3JlYXRlIGFsbCBhdHRyaWJ1dGVzIGFuZAorbWV0aG9kcyBhcyB5b3UgYWNjZXNzIHRoZW0gYW5kIHN0b3JlIGRldGFpbHMgb2YgaG93IHRoZXkgaGF2ZSBiZWVuIHVzZWQuIFlvdQorY2FuIGNvbmZpZ3VyZSB0aGVtLCB0byBzcGVjaWZ5IHJldHVybiB2YWx1ZXMgb3IgbGltaXQgd2hhdCBhdHRyaWJ1dGVzIGFyZQorYXZhaWxhYmxlLCBhbmQgdGhlbiBtYWtlIGFzc2VydGlvbnMgYWJvdXQgaG93IHRoZXkgaGF2ZSBiZWVuIHVzZWQ6CisKKyAgICA+Pj4gZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBNYWdpY01vY2sKKyAgICA+Pj4gdGhpbmcgPSBQcm9kdWN0aW9uQ2xhc3MoKQorICAgID4+PiB0aGluZy5tZXRob2QgPSBNYWdpY01vY2socmV0dXJuX3ZhbHVlPTMpCisgICAgPj4+IHRoaW5nLm1ldGhvZCgzLCA0LCA1LCBrZXk9J3ZhbHVlJykKKyAgICAzCisgICAgPj4+IHRoaW5nLm1ldGhvZC5hc3NlcnRfY2FsbGVkX3dpdGgoMywgNCwgNSwga2V5PSd2YWx1ZScpCisKKzphdHRyOmBzaWRlX2VmZmVjdGAgYWxsb3dzIHlvdSB0byBwZXJmb3JtIHNpZGUgZWZmZWN0cywgaW5jbHVkaW5nIHJhaXNpbmcgYW4KK2V4Y2VwdGlvbiB3aGVuIGEgbW9jayBpcyBjYWxsZWQ6CisKKyAgID4+PiBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1LZXlFcnJvcignZm9vJykpCisgICA+Pj4gbW9jaygpCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICBLZXlFcnJvcjogJ2ZvbycKKworICAgPj4+IHZhbHVlcyA9IHsnYSc6IDEsICdiJzogMiwgJ2MnOiAzfQorICAgPj4+IGRlZiBzaWRlX2VmZmVjdChhcmcpOgorICAgLi4uICAgICByZXR1cm4gdmFsdWVzW2FyZ10KKyAgIC4uLgorICAgPj4+IG1vY2suc2lkZV9lZmZlY3QgPSBzaWRlX2VmZmVjdAorICAgPj4+IG1vY2soJ2EnKSwgbW9jaygnYicpLCBtb2NrKCdjJykKKyAgICgxLCAyLCAzKQorICAgPj4+IG1vY2suc2lkZV9lZmZlY3QgPSBbNSwgNCwgMywgMiwgMV0KKyAgID4+PiBtb2NrKCksIG1vY2soKSwgbW9jaygpCisgICAoNSwgNCwgMykKKworTW9jayBoYXMgbWFueSBvdGhlciB3YXlzIHlvdSBjYW4gY29uZmlndXJlIGl0IGFuZCBjb250cm9sIGl0cyBiZWhhdmlvdXIuIEZvcgorZXhhbXBsZSB0aGUgYHNwZWNgIGFyZ3VtZW50IGNvbmZpZ3VyZXMgdGhlIG1vY2sgdG8gdGFrZSBpdHMgc3BlY2lmaWNhdGlvbgorZnJvbSBhbm90aGVyIG9iamVjdC4gQXR0ZW1wdGluZyB0byBhY2Nlc3MgYXR0cmlidXRlcyBvciBtZXRob2RzIG9uIHRoZSBtb2NrCit0aGF0IGRvbid0IGV4aXN0IG9uIHRoZSBzcGVjIHdpbGwgZmFpbCB3aXRoIGFuIGBBdHRyaWJ1dGVFcnJvcmAuCisKK1RoZSA6ZnVuYzpgcGF0Y2hgIGRlY29yYXRvciAvIGNvbnRleHQgbWFuYWdlciBtYWtlcyBpdCBlYXN5IHRvIG1vY2sgY2xhc3NlcyBvcgorb2JqZWN0cyBpbiBhIG1vZHVsZSB1bmRlciB0ZXN0LiBUaGUgb2JqZWN0IHlvdSBzcGVjaWZ5IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBhCittb2NrIChvciBvdGhlciBvYmplY3QpIGR1cmluZyB0aGUgdGVzdCBhbmQgcmVzdG9yZWQgd2hlbiB0aGUgdGVzdCBlbmRzOgorCisgICAgPj4+IGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gKKyAgICA+Pj4gQHBhdGNoKCdtb2R1bGUuQ2xhc3NOYW1lMicpCisgICAgLi4uIEBwYXRjaCgnbW9kdWxlLkNsYXNzTmFtZTEnKQorICAgIC4uLiBkZWYgdGVzdChNb2NrQ2xhc3MxLCBNb2NrQ2xhc3MyKToKKyAgICAuLi4gICAgIG1vZHVsZS5DbGFzc05hbWUxKCkKKyAgICAuLi4gICAgIG1vZHVsZS5DbGFzc05hbWUyKCkKKyAgICAuLi4gICAgIGFzc2VydCBNb2NrQ2xhc3MxIGlzIG1vZHVsZS5DbGFzc05hbWUxCisgICAgLi4uICAgICBhc3NlcnQgTW9ja0NsYXNzMiBpcyBtb2R1bGUuQ2xhc3NOYW1lMgorICAgIC4uLiAgICAgYXNzZXJ0IE1vY2tDbGFzczEuY2FsbGVkCisgICAgLi4uICAgICBhc3NlcnQgTW9ja0NsYXNzMi5jYWxsZWQKKyAgICAuLi4KKyAgICA+Pj4gdGVzdCgpCisKKy4uIG5vdGU6OgorCisgICBXaGVuIHlvdSBuZXN0IHBhdGNoIGRlY29yYXRvcnMgdGhlIG1vY2tzIGFyZSBwYXNzZWQgaW4gdG8gdGhlIGRlY29yYXRlZAorICAgZnVuY3Rpb24gaW4gdGhlIHNhbWUgb3JkZXIgdGhleSBhcHBsaWVkICh0aGUgbm9ybWFsICpweXRob24qIG9yZGVyIHRoYXQKKyAgIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQpLiBUaGlzIG1lYW5zIGZyb20gdGhlIGJvdHRvbSB1cCwgc28gaW4gdGhlIGV4YW1wbGUKKyAgIGFib3ZlIHRoZSBtb2NrIGZvciBgbW9kdWxlLkNsYXNzTmFtZTFgIGlzIHBhc3NlZCBpbiBmaXJzdC4KKworICAgV2l0aCBgcGF0Y2hgIGl0IG1hdHRlcnMgdGhhdCB5b3UgcGF0Y2ggb2JqZWN0cyBpbiB0aGUgbmFtZXNwYWNlIHdoZXJlIHRoZXkKKyAgIGFyZSBsb29rZWQgdXAuIFRoaXMgaXMgbm9ybWFsbHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgZm9yIGEgcXVpY2sgZ3VpZGUKKyAgIHJlYWQgOnJlZjpgd2hlcmUgdG8gcGF0Y2ggPHdoZXJlLXRvLXBhdGNoPmAuCisKK0FzIHdlbGwgYXMgYSBkZWNvcmF0b3IgYHBhdGNoYCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciBpbiBhIHdpdGgKK3N0YXRlbWVudDoKKworICAgID4+PiB3aXRoIHBhdGNoLm9iamVjdChQcm9kdWN0aW9uQ2xhc3MsICdtZXRob2QnLCByZXR1cm5fdmFsdWU9Tm9uZSkgYXMgbW9ja19tZXRob2Q6CisgICAgLi4uICAgICB0aGluZyA9IFByb2R1Y3Rpb25DbGFzcygpCisgICAgLi4uICAgICB0aGluZy5tZXRob2QoMSwgMiwgMykKKyAgICAuLi4KKyAgICA+Pj4gbW9ja19tZXRob2QuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSwgMiwgMykKKworCitUaGVyZSBpcyBhbHNvIDpmdW5jOmBwYXRjaC5kaWN0YCBmb3Igc2V0dGluZyB2YWx1ZXMgaW4gYSBkaWN0aW9uYXJ5IGp1c3QKK2R1cmluZyBhIHNjb3BlIGFuZCByZXN0b3JpbmcgdGhlIGRpY3Rpb25hcnkgdG8gaXRzIG9yaWdpbmFsIHN0YXRlIHdoZW4gdGhlIHRlc3QKK2VuZHM6CisKKyAgID4+PiBmb28gPSB7J2tleSc6ICd2YWx1ZSd9CisgICA+Pj4gb3JpZ2luYWwgPSBmb28uY29weSgpCisgICA+Pj4gd2l0aCBwYXRjaC5kaWN0KGZvbywgeyduZXdrZXknOiAnbmV3dmFsdWUnfSwgY2xlYXI9VHJ1ZSk6CisgICAuLi4gICAgIGFzc2VydCBmb28gPT0geyduZXdrZXknOiAnbmV3dmFsdWUnfQorICAgLi4uCisgICA+Pj4gYXNzZXJ0IGZvbyA9PSBvcmlnaW5hbAorCitNb2NrIHN1cHBvcnRzIHRoZSBtb2NraW5nIG9mIFB5dGhvbiA6cmVmOmBtYWdpYyBtZXRob2RzIDxtYWdpYy1tZXRob2RzPmAuIFRoZQorZWFzaWVzdCB3YXkgb2YgdXNpbmcgbWFnaWMgbWV0aG9kcyBpcyB3aXRoIHRoZSA6Y2xhc3M6YE1hZ2ljTW9ja2AgY2xhc3MuIEl0CithbGxvd3MgeW91IHRvIGRvIHRoaW5ncyBsaWtlOgorCisgICAgPj4+IG1vY2sgPSBNYWdpY01vY2soKQorICAgID4+PiBtb2NrLl9fc3RyX18ucmV0dXJuX3ZhbHVlID0gJ2Zvb2JhcmJheicKKyAgICA+Pj4gc3RyKG1vY2spCisgICAgJ2Zvb2JhcmJheicKKyAgICA+Pj4gbW9jay5fX3N0cl9fLmFzc2VydF9jYWxsZWRfd2l0aCgpCisKK01vY2sgYWxsb3dzIHlvdSB0byBhc3NpZ24gZnVuY3Rpb25zIChvciBvdGhlciBNb2NrIGluc3RhbmNlcykgdG8gbWFnaWMgbWV0aG9kcworYW5kIHRoZXkgd2lsbCBiZSBjYWxsZWQgYXBwcm9wcmlhdGVseS4gVGhlIGBNYWdpY01vY2tgIGNsYXNzIGlzIGp1c3QgYSBNb2NrCit2YXJpYW50IHRoYXQgaGFzIGFsbCBvZiB0aGUgbWFnaWMgbWV0aG9kcyBwcmUtY3JlYXRlZCBmb3IgeW91ICh3ZWxsLCBhbGwgdGhlCit1c2VmdWwgb25lcyBhbnl3YXkpLgorCitUaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgb2YgdXNpbmcgbWFnaWMgbWV0aG9kcyB3aXRoIHRoZSBvcmRpbmFyeSBNb2NrCitjbGFzczoKKworICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgPj4+IG1vY2suX19zdHJfXyA9IE1vY2socmV0dXJuX3ZhbHVlPSd3aGVlZWVlZScpCisgICAgPj4+IHN0cihtb2NrKQorICAgICd3aGVlZWVlZScKKworRm9yIGVuc3VyaW5nIHRoYXQgdGhlIG1vY2sgb2JqZWN0cyBpbiB5b3VyIHRlc3RzIGhhdmUgdGhlIHNhbWUgYXBpIGFzIHRoZQorb2JqZWN0cyB0aGV5IGFyZSByZXBsYWNpbmcsIHlvdSBjYW4gdXNlIDpyZWY6YGF1dG8tc3BlY2NpbmcgPGF1dG8tc3BlY2Npbmc+YC4KK0F1dG8tc3BlY2NpbmcgY2FuIGJlIGRvbmUgdGhyb3VnaCB0aGUgYGF1dG9zcGVjYCBhcmd1bWVudCB0byBwYXRjaCwgb3IgdGhlCis6ZnVuYzpgY3JlYXRlX2F1dG9zcGVjYCBmdW5jdGlvbi4gQXV0by1zcGVjY2luZyBjcmVhdGVzIG1vY2sgb2JqZWN0cyB0aGF0CitoYXZlIHRoZSBzYW1lIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMgYXMgdGhlIG9iamVjdHMgdGhleSBhcmUgcmVwbGFjaW5nLCBhbmQKK2FueSBmdW5jdGlvbnMgYW5kIG1ldGhvZHMgKGluY2x1ZGluZyBjb25zdHJ1Y3RvcnMpIGhhdmUgdGhlIHNhbWUgY2FsbAorc2lnbmF0dXJlIGFzIHRoZSByZWFsIG9iamVjdC4KKworVGhpcyBlbnN1cmVzIHRoYXQgeW91ciBtb2NrcyB3aWxsIGZhaWwgaW4gdGhlIHNhbWUgd2F5IGFzIHlvdXIgcHJvZHVjdGlvbgorY29kZSBpZiB0aGV5IGFyZSB1c2VkIGluY29ycmVjdGx5OgorCisgICA+Pj4gZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBjcmVhdGVfYXV0b3NwZWMKKyAgID4+PiBkZWYgZnVuY3Rpb24oYSwgYiwgYyk6CisgICAuLi4gICAgIHBhc3MKKyAgIC4uLgorICAgPj4+IG1vY2tfZnVuY3Rpb24gPSBjcmVhdGVfYXV0b3NwZWMoZnVuY3Rpb24sIHJldHVybl92YWx1ZT0nZmlzaHknKQorICAgPj4+IG1vY2tfZnVuY3Rpb24oMSwgMiwgMykKKyAgICdmaXNoeScKKyAgID4+PiBtb2NrX2Z1bmN0aW9uLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEsIDIsIDMpCisgICA+Pj4gbW9ja19mdW5jdGlvbignd3JvbmcgYXJndW1lbnRzJykKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAuLi4KKyAgIFR5cGVFcnJvcjogPGxhbWJkYT4oKSB0YWtlcyBleGFjdGx5IDMgYXJndW1lbnRzICgxIGdpdmVuKQorCitgY3JlYXRlX2F1dG9zcGVjYCBjYW4gYWxzbyBiZSB1c2VkIG9uIGNsYXNzZXMsIHdoZXJlIGl0IGNvcGllcyB0aGUgc2lnbmF0dXJlIG9mCit0aGUgYF9faW5pdF9fYCBtZXRob2QsIGFuZCBvbiBjYWxsYWJsZSBvYmplY3RzIHdoZXJlIGl0IGNvcGllcyB0aGUgc2lnbmF0dXJlIG9mCit0aGUgYF9fY2FsbF9fYCBtZXRob2QuCisKKworCitUaGUgTW9jayBDbGFzcworLS0tLS0tLS0tLS0tLS0KKworCitgTW9ja2AgaXMgYSBmbGV4aWJsZSBtb2NrIG9iamVjdCBpbnRlbmRlZCB0byByZXBsYWNlIHRoZSB1c2Ugb2Ygc3R1YnMgYW5kCit0ZXN0IGRvdWJsZXMgdGhyb3VnaG91dCB5b3VyIGNvZGUuIE1vY2tzIGFyZSBjYWxsYWJsZSBhbmQgY3JlYXRlIGF0dHJpYnV0ZXMgYXMKK25ldyBtb2NrcyB3aGVuIHlvdSBhY2Nlc3MgdGhlbSBbI11fLiBBY2Nlc3NpbmcgdGhlIHNhbWUgYXR0cmlidXRlIHdpbGwgYWx3YXlzCityZXR1cm4gdGhlIHNhbWUgbW9jay4gTW9ja3MgcmVjb3JkIGhvdyB5b3UgdXNlIHRoZW0sIGFsbG93aW5nIHlvdSB0byBtYWtlCithc3NlcnRpb25zIGFib3V0IHdoYXQgeW91ciBjb2RlIGhhcyBkb25lIHRvIHRoZW0uCisKKzpjbGFzczpgTWFnaWNNb2NrYCBpcyBhIHN1YmNsYXNzIG9mIGBNb2NrYCB3aXRoIGFsbCB0aGUgbWFnaWMgbWV0aG9kcworcHJlLWNyZWF0ZWQgYW5kIHJlYWR5IHRvIHVzZS4gVGhlcmUgYXJlIGFsc28gbm9uLWNhbGxhYmxlIHZhcmlhbnRzLCB1c2VmdWwKK3doZW4geW91IGFyZSBtb2NraW5nIG91dCBvYmplY3RzIHRoYXQgYXJlbid0IGNhbGxhYmxlOgorOmNsYXNzOmBOb25DYWxsYWJsZU1vY2tgIGFuZCA6Y2xhc3M6YE5vbkNhbGxhYmxlTWFnaWNNb2NrYAorCitUaGUgOmZ1bmM6YHBhdGNoYCBkZWNvcmF0b3JzIG1ha2VzIGl0IGVhc3kgdG8gdGVtcG9yYXJpbHkgcmVwbGFjZSBjbGFzc2VzCitpbiBhIHBhcnRpY3VsYXIgbW9kdWxlIHdpdGggYSBgTW9ja2Agb2JqZWN0LiBCeSBkZWZhdWx0IGBwYXRjaGAgd2lsbCBjcmVhdGUKK2EgYE1hZ2ljTW9ja2AgZm9yIHlvdS4gWW91IGNhbiBzcGVjaWZ5IGFuIGFsdGVybmF0aXZlIGNsYXNzIG9mIGBNb2NrYCB1c2luZwordGhlIGBuZXdfY2FsbGFibGVgIGFyZ3VtZW50IHRvIGBwYXRjaGAuCisKKworLi4gY2xhc3M6OiBNb2NrKHNwZWM9Tm9uZSwgc2lkZV9lZmZlY3Q9Tm9uZSwgcmV0dXJuX3ZhbHVlPURFRkFVTFQsIHdyYXBzPU5vbmUsIG5hbWU9Tm9uZSwgc3BlY19zZXQ9Tm9uZSwgKiprd2FyZ3MpCisKKyAgICBDcmVhdGUgYSBuZXcgYE1vY2tgIG9iamVjdC4gYE1vY2tgIHRha2VzIHNldmVyYWwgb3B0aW9uYWwgYXJndW1lbnRzCisgICAgdGhhdCBzcGVjaWZ5IHRoZSBiZWhhdmlvdXIgb2YgdGhlIE1vY2sgb2JqZWN0OgorCisgICAgKiBgc3BlY2A6IFRoaXMgY2FuIGJlIGVpdGhlciBhIGxpc3Qgb2Ygc3RyaW5ncyBvciBhbiBleGlzdGluZyBvYmplY3QgKGEKKyAgICAgIGNsYXNzIG9yIGluc3RhbmNlKSB0aGF0IGFjdHMgYXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBtb2NrIG9iamVjdC4gSWYKKyAgICAgIHlvdSBwYXNzIGluIGFuIG9iamVjdCB0aGVuIGEgbGlzdCBvZiBzdHJpbmdzIGlzIGZvcm1lZCBieSBjYWxsaW5nIGRpciBvbgorICAgICAgdGhlIG9iamVjdCAoZXhjbHVkaW5nIHVuc3VwcG9ydGVkIG1hZ2ljIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMpLgorICAgICAgQWNjZXNzaW5nIGFueSBhdHRyaWJ1dGUgbm90IGluIHRoaXMgbGlzdCB3aWxsIHJhaXNlIGFuIGBBdHRyaWJ1dGVFcnJvcmAuCisKKyAgICAgIElmIGBzcGVjYCBpcyBhbiBvYmplY3QgKHJhdGhlciB0aGFuIGEgbGlzdCBvZiBzdHJpbmdzKSB0aGVuCisgICAgICA6YXR0cjpgX19jbGFzc19fYCByZXR1cm5zIHRoZSBjbGFzcyBvZiB0aGUgc3BlYyBvYmplY3QuIFRoaXMgYWxsb3dzIG1vY2tzCisgICAgICB0byBwYXNzIGBpc2luc3RhbmNlYCB0ZXN0cy4KKworICAgICogYHNwZWNfc2V0YDogQSBzdHJpY3RlciB2YXJpYW50IG9mIGBzcGVjYC4gSWYgdXNlZCwgYXR0ZW1wdGluZyB0byAqc2V0KgorICAgICAgb3IgZ2V0IGFuIGF0dHJpYnV0ZSBvbiB0aGUgbW9jayB0aGF0IGlzbid0IG9uIHRoZSBvYmplY3QgcGFzc2VkIGFzCisgICAgICBgc3BlY19zZXRgIHdpbGwgcmFpc2UgYW4gYEF0dHJpYnV0ZUVycm9yYC4KKworICAgICogYHNpZGVfZWZmZWN0YDogQSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIE1vY2sgaXMgY2FsbGVkLiBTZWUKKyAgICAgIHRoZSA6YXR0cjpgfk1vY2suc2lkZV9lZmZlY3RgIGF0dHJpYnV0ZS4gVXNlZnVsIGZvciByYWlzaW5nIGV4Y2VwdGlvbnMgb3IKKyAgICAgIGR5bmFtaWNhbGx5IGNoYW5naW5nIHJldHVybiB2YWx1ZXMuIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aGUgc2FtZQorICAgICAgYXJndW1lbnRzIGFzIHRoZSBtb2NrLCBhbmQgdW5sZXNzIGl0IHJldHVybnMgOmRhdGE6YERFRkFVTFRgLCB0aGUgcmV0dXJuCisgICAgICB2YWx1ZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZS4KKworICAgICAgQWx0ZXJuYXRpdmVseSBgc2lkZV9lZmZlY3RgIGNhbiBiZSBhbiBleGNlcHRpb24gY2xhc3Mgb3IgaW5zdGFuY2UuIEluCisgICAgICB0aGlzIGNhc2UgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIHRoZSBtb2NrIGlzIGNhbGxlZC4KKworICAgICAgSWYgYHNpZGVfZWZmZWN0YCBpcyBhbiBpdGVyYWJsZSB0aGVuIGVhY2ggY2FsbCB0byB0aGUgbW9jayB3aWxsIHJldHVybgorICAgICAgdGhlIG5leHQgdmFsdWUgZnJvbSB0aGUgaXRlcmFibGUuCisKKyAgICAgIEEgYHNpZGVfZWZmZWN0YCBjYW4gYmUgY2xlYXJlZCBieSBzZXR0aW5nIGl0IHRvIGBOb25lYC4KKworICAgICogYHJldHVybl92YWx1ZWA6IFRoZSB2YWx1ZSByZXR1cm5lZCB3aGVuIHRoZSBtb2NrIGlzIGNhbGxlZC4gQnkgZGVmYXVsdAorICAgICAgdGhpcyBpcyBhIG5ldyBNb2NrIChjcmVhdGVkIG9uIGZpcnN0IGFjY2VzcykuIFNlZSB0aGUKKyAgICAgIDphdHRyOmByZXR1cm5fdmFsdWVgIGF0dHJpYnV0ZS4KKworICAgICogYHdyYXBzYDogSXRlbSBmb3IgdGhlIG1vY2sgb2JqZWN0IHRvIHdyYXAuIElmIGB3cmFwc2AgaXMgbm90IE5vbmUgdGhlbgorICAgICAgY2FsbGluZyB0aGUgTW9jayB3aWxsIHBhc3MgdGhlIGNhbGwgdGhyb3VnaCB0byB0aGUgd3JhcHBlZCBvYmplY3QKKyAgICAgIChyZXR1cm5pbmcgdGhlIHJlYWwgcmVzdWx0KS4gQXR0cmlidXRlIGFjY2VzcyBvbiB0aGUgbW9jayB3aWxsIHJldHVybiBhCisgICAgICBNb2NrIG9iamVjdCB0aGF0IHdyYXBzIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBvZiB0aGUgd3JhcHBlZAorICAgICAgb2JqZWN0IChzbyBhdHRlbXB0aW5nIHRvIGFjY2VzcyBhbiBhdHRyaWJ1dGUgdGhhdCBkb2Vzbid0IGV4aXN0IHdpbGwKKyAgICAgIHJhaXNlIGFuIGBBdHRyaWJ1dGVFcnJvcmApLgorCisgICAgICBJZiB0aGUgbW9jayBoYXMgYW4gZXhwbGljaXQgYHJldHVybl92YWx1ZWAgc2V0IHRoZW4gY2FsbHMgYXJlIG5vdCBwYXNzZWQKKyAgICAgIHRvIHRoZSB3cmFwcGVkIG9iamVjdCBhbmQgdGhlIGByZXR1cm5fdmFsdWVgIGlzIHJldHVybmVkIGluc3RlYWQuCisKKyAgICAqIGBuYW1lYDogSWYgdGhlIG1vY2sgaGFzIGEgbmFtZSB0aGVuIGl0IHdpbGwgYmUgdXNlZCBpbiB0aGUgcmVwciBvZiB0aGUKKyAgICAgIG1vY2suIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgZGVidWdnaW5nLiBUaGUgbmFtZSBpcyBwcm9wYWdhdGVkIHRvIGNoaWxkCisgICAgICBtb2Nrcy4KKworICAgIE1vY2tzIGNhbiBhbHNvIGJlIGNhbGxlZCB3aXRoIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cy4gVGhlc2Ugd2lsbCBiZQorICAgIHVzZWQgdG8gc2V0IGF0dHJpYnV0ZXMgb24gdGhlIG1vY2sgYWZ0ZXIgaXQgaXMgY3JlYXRlZC4gU2VlIHRoZQorICAgIDptZXRoOmBjb25maWd1cmVfbW9ja2AgbWV0aG9kIGZvciBkZXRhaWxzLgorCisKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfY2FsbGVkX3dpdGgoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIGEgY29udmVuaWVudCB3YXkgb2YgYXNzZXJ0aW5nIHRoYXQgY2FsbHMgYXJlIG1hZGUgaW4gYQorICAgICAgICBwYXJ0aWN1bGFyIHdheToKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLm1ldGhvZCgxLCAyLCAzLCB0ZXN0PSd3b3cnKQorICAgICAgICAgICAgPE1vY2sgbmFtZT0nbW9jay5tZXRob2QoKScgaWQ9Jy4uLic+CisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QuYXNzZXJ0X2NhbGxlZF93aXRoKDEsIDIsIDMsIHRlc3Q9J3dvdycpCisKKworICAgIC4uIG1ldGhvZDo6IGFzc2VydF9jYWxsZWRfb25jZV93aXRoKCphcmdzLCAqKmt3YXJncykKKworICAgICAgIEFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBjYWxsZWQgZXhhY3RseSBvbmNlIGFuZCB3aXRoIHRoZSBzcGVjaWZpZWQKKyAgICAgICBhcmd1bWVudHMuCisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICAgICAgICAgID4+PiBtb2NrKCdmb28nLCBiYXI9J2JheicpCisgICAgICAgICAgICA+Pj4gbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnZm9vJywgYmFyPSdiYXonKQorICAgICAgICAgICAgPj4+IG1vY2soJ2ZvbycsIGJhcj0nYmF6JykKKyAgICAgICAgICAgID4+PiBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdmb28nLCBiYXI9J2JheicpCisgICAgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkICdtb2NrJyB0byBiZSBjYWxsZWQgb25jZS4gQ2FsbGVkIDIgdGltZXMuCisKKworICAgIC4uIG1ldGhvZDo6IGFzc2VydF9hbnlfY2FsbCgqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgYXNzZXJ0IHRoZSBtb2NrIGhhcyBiZWVuIGNhbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLgorCisgICAgICAgIFRoZSBhc3NlcnQgcGFzc2VzIGlmIHRoZSBtb2NrIGhhcyAqZXZlciogYmVlbiBjYWxsZWQsIHVubGlrZQorICAgICAgICA6bWV0aDpgYXNzZXJ0X2NhbGxlZF93aXRoYCBhbmQgOm1ldGg6YGFzc2VydF9jYWxsZWRfb25jZV93aXRoYCB0aGF0CisgICAgICAgIG9ubHkgcGFzcyBpZiB0aGUgY2FsbCBpcyB0aGUgbW9zdCByZWNlbnQgb25lLgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgICAgICAgICA+Pj4gbW9jaygxLCAyLCBhcmc9J3RoaW5nJykKKyAgICAgICAgICAgID4+PiBtb2NrKCdzb21lJywgJ3RoaW5nJywgJ2Vsc2UnKQorICAgICAgICAgICAgPj4+IG1vY2suYXNzZXJ0X2FueV9jYWxsKDEsIDIsIGFyZz0ndGhpbmcnKQorCisKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfaGFzX2NhbGxzKGNhbGxzLCBhbnlfb3JkZXI9RmFsc2UpCisKKyAgICAgICAgYXNzZXJ0IHRoZSBtb2NrIGhhcyBiZWVuIGNhbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgY2FsbHMuCisgICAgICAgIFRoZSBgbW9ja19jYWxsc2AgbGlzdCBpcyBjaGVja2VkIGZvciB0aGUgY2FsbHMuCisKKyAgICAgICAgSWYgYGFueV9vcmRlcmAgaXMgRmFsc2UgKHRoZSBkZWZhdWx0KSB0aGVuIHRoZSBjYWxscyBtdXN0IGJlCisgICAgICAgIHNlcXVlbnRpYWwuIFRoZXJlIGNhbiBiZSBleHRyYSBjYWxscyBiZWZvcmUgb3IgYWZ0ZXIgdGhlCisgICAgICAgIHNwZWNpZmllZCBjYWxscy4KKworICAgICAgICBJZiBgYW55X29yZGVyYCBpcyBUcnVlIHRoZW4gdGhlIGNhbGxzIGNhbiBiZSBpbiBhbnkgb3JkZXIsIGJ1dAorICAgICAgICB0aGV5IG11c3QgYWxsIGFwcGVhciBpbiA6YXR0cjpgbW9ja19jYWxsc2AuCisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICAgICAgICAgID4+PiBtb2NrKDEpCisgICAgICAgICAgICA+Pj4gbW9jaygyKQorICAgICAgICAgICAgPj4+IG1vY2soMykKKyAgICAgICAgICAgID4+PiBtb2NrKDQpCisgICAgICAgICAgICA+Pj4gY2FsbHMgPSBbY2FsbCgyKSwgY2FsbCgzKV0KKyAgICAgICAgICAgID4+PiBtb2NrLmFzc2VydF9oYXNfY2FsbHMoY2FsbHMpCisgICAgICAgICAgICA+Pj4gY2FsbHMgPSBbY2FsbCg0KSwgY2FsbCgyKSwgY2FsbCgzKV0KKyAgICAgICAgICAgID4+PiBtb2NrLmFzc2VydF9oYXNfY2FsbHMoY2FsbHMsIGFueV9vcmRlcj1UcnVlKQorCisKKyAgICAuLiBtZXRob2Q6OiByZXNldF9tb2NrKCkKKworICAgICAgICBUaGUgcmVzZXRfbW9jayBtZXRob2QgcmVzZXRzIGFsbCB0aGUgY2FsbCBhdHRyaWJ1dGVzIG9uIGEgbW9jayBvYmplY3Q6CisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICAgICAgICAgID4+PiBtb2NrKCdoZWxsbycpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsZWQKKyAgICAgICAgICAgIFRydWUKKyAgICAgICAgICAgID4+PiBtb2NrLnJlc2V0X21vY2soKQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbGVkCisgICAgICAgICAgICBGYWxzZQorCisgICAgICAgIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVyZSB5b3Ugd2FudCB0byBtYWtlIGEgc2VyaWVzIG9mIGFzc2VydGlvbnMgdGhhdAorICAgICAgICByZXVzZSB0aGUgc2FtZSBvYmplY3QuIE5vdGUgdGhhdCBgcmVzZXRfbW9ja2AgKmRvZXNuJ3QqIGNsZWFyIHRoZQorICAgICAgICByZXR1cm4gdmFsdWUsIDphdHRyOmBzaWRlX2VmZmVjdGAgb3IgYW55IGNoaWxkIGF0dHJpYnV0ZXMgeW91IGhhdmUKKyAgICAgICAgc2V0IHVzaW5nIG5vcm1hbCBhc3NpZ25tZW50LiBDaGlsZCBtb2NrcyBhbmQgdGhlIHJldHVybiB2YWx1ZSBtb2NrCisgICAgICAgIChpZiBhbnkpIGFyZSByZXNldCBhcyB3ZWxsLgorCisKKyAgICAuLiBtZXRob2Q6OiBtb2NrX2FkZF9zcGVjKHNwZWMsIHNwZWNfc2V0PUZhbHNlKQorCisgICAgICAgIEFkZCBhIHNwZWMgdG8gYSBtb2NrLiBgc3BlY2AgY2FuIGVpdGhlciBiZSBhbiBvYmplY3Qgb3IgYQorICAgICAgICBsaXN0IG9mIHN0cmluZ3MuIE9ubHkgYXR0cmlidXRlcyBvbiB0aGUgYHNwZWNgIGNhbiBiZSBmZXRjaGVkIGFzCisgICAgICAgIGF0dHJpYnV0ZXMgZnJvbSB0aGUgbW9jay4KKworICAgICAgICBJZiBgc3BlY19zZXRgIGlzIGBUcnVlYCB0aGVuIG9ubHkgYXR0cmlidXRlcyBvbiB0aGUgc3BlYyBjYW4gYmUgc2V0LgorCisKKyAgICAuLiBtZXRob2Q6OiBhdHRhY2hfbW9jayhtb2NrLCBhdHRyaWJ1dGUpCisKKyAgICAgICAgQXR0YWNoIGEgbW9jayBhcyBhbiBhdHRyaWJ1dGUgb2YgdGhpcyBvbmUsIHJlcGxhY2luZyBpdHMgbmFtZSBhbmQKKyAgICAgICAgcGFyZW50LiBDYWxscyB0byB0aGUgYXR0YWNoZWQgbW9jayB3aWxsIGJlIHJlY29yZGVkIGluIHRoZQorICAgICAgICA6YXR0cjpgbWV0aG9kX2NhbGxzYCBhbmQgOmF0dHI6YG1vY2tfY2FsbHNgIGF0dHJpYnV0ZXMgb2YgdGhpcyBvbmUuCisKKworICAgIC4uIG1ldGhvZDo6IGNvbmZpZ3VyZV9tb2NrKCoqa3dhcmdzKQorCisgICAgICAgIFNldCBhdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIHRocm91Z2gga2V5d29yZCBhcmd1bWVudHMuCisKKyAgICAgICAgQXR0cmlidXRlcyBwbHVzIHJldHVybiB2YWx1ZXMgYW5kIHNpZGUgZWZmZWN0cyBjYW4gYmUgc2V0IG9uIGNoaWxkCisgICAgICAgIG1vY2tzIHVzaW5nIHN0YW5kYXJkIGRvdCBub3RhdGlvbiBhbmQgdW5wYWNraW5nIGEgZGljdGlvbmFyeSBpbiB0aGUKKyAgICAgICAgbWV0aG9kIGNhbGw6CisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgICAgICAgICA+Pj4gYXR0cnMgPSB7J21ldGhvZC5yZXR1cm5fdmFsdWUnOiAzLCAnb3RoZXIuc2lkZV9lZmZlY3QnOiBLZXlFcnJvcn0KKyAgICAgICAgICAgID4+PiBtb2NrLmNvbmZpZ3VyZV9tb2NrKCoqYXR0cnMpCisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QoKQorICAgICAgICAgICAgMworICAgICAgICAgICAgPj4+IG1vY2sub3RoZXIoKQorICAgICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIEtleUVycm9yCisKKyAgICAgICAgVGhlIHNhbWUgdGhpbmcgY2FuIGJlIGFjaGlldmVkIGluIHRoZSBjb25zdHJ1Y3RvciBjYWxsIHRvIG1vY2tzOgorCisgICAgICAgICAgICA+Pj4gYXR0cnMgPSB7J21ldGhvZC5yZXR1cm5fdmFsdWUnOiAzLCAnb3RoZXIuc2lkZV9lZmZlY3QnOiBLZXlFcnJvcn0KKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhzb21lX2F0dHJpYnV0ZT0nZWdncycsICoqYXR0cnMpCisgICAgICAgICAgICA+Pj4gbW9jay5zb21lX2F0dHJpYnV0ZQorICAgICAgICAgICAgJ2VnZ3MnCisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QoKQorICAgICAgICAgICAgMworICAgICAgICAgICAgPj4+IG1vY2sub3RoZXIoKQorICAgICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIEtleUVycm9yCisKKyAgICAgICAgYGNvbmZpZ3VyZV9tb2NrYCBleGlzdHMgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZG8gY29uZmlndXJhdGlvbgorICAgICAgICBhZnRlciB0aGUgbW9jayBoYXMgYmVlbiBjcmVhdGVkLgorCisKKyAgICAuLiBtZXRob2Q6OiBfX2Rpcl9fKCkKKworICAgICAgICBgTW9ja2Agb2JqZWN0cyBsaW1pdCB0aGUgcmVzdWx0cyBvZiBgZGlyKHNvbWVfbW9jaylgIHRvIHVzZWZ1bCByZXN1bHRzLgorICAgICAgICBGb3IgbW9ja3Mgd2l0aCBhIGBzcGVjYCB0aGlzIGluY2x1ZGVzIGFsbCB0aGUgcGVybWl0dGVkIGF0dHJpYnV0ZXMKKyAgICAgICAgZm9yIHRoZSBtb2NrLgorCisgICAgICAgIFNlZSA6ZGF0YTpgRklMVEVSX0RJUmAgZm9yIHdoYXQgdGhpcyBmaWx0ZXJpbmcgZG9lcywgYW5kIGhvdyB0bworICAgICAgICBzd2l0Y2ggaXQgb2ZmLgorCisKKyAgICAuLiBtZXRob2Q6OiBfZ2V0X2NoaWxkX21vY2soKiprdykKKworICAgICAgICBDcmVhdGUgdGhlIGNoaWxkIG1vY2tzIGZvciBhdHRyaWJ1dGVzIGFuZCByZXR1cm4gdmFsdWUuCisgICAgICAgIEJ5IGRlZmF1bHQgY2hpbGQgbW9ja3Mgd2lsbCBiZSB0aGUgc2FtZSB0eXBlIGFzIHRoZSBwYXJlbnQuCisgICAgICAgIFN1YmNsYXNzZXMgb2YgTW9jayBtYXkgd2FudCB0byBvdmVycmlkZSB0aGlzIHRvIGN1c3RvbWl6ZSB0aGUgd2F5CisgICAgICAgIGNoaWxkIG1vY2tzIGFyZSBtYWRlLgorCisgICAgICAgIEZvciBub24tY2FsbGFibGUgbW9ja3MgdGhlIGNhbGxhYmxlIHZhcmlhbnQgd2lsbCBiZSB1c2VkIChyYXRoZXIgdGhhbgorICAgICAgICBhbnkgY3VzdG9tIHN1YmNsYXNzKS4KKworCisgICAgLi4gYXR0cmlidXRlOjogY2FsbGVkCisKKyAgICAgICAgQSBib29sZWFuIHJlcHJlc2VudGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgbW9jayBvYmplY3QgaGFzIGJlZW4gY2FsbGVkOgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsZWQKKyAgICAgICAgICAgIEZhbHNlCisgICAgICAgICAgICA+Pj4gbW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsZWQKKyAgICAgICAgICAgIFRydWUKKworICAgIC4uIGF0dHJpYnV0ZTo6IGNhbGxfY291bnQKKworICAgICAgICBBbiBpbnRlZ2VyIHRlbGxpbmcgeW91IGhvdyBtYW55IHRpbWVzIHRoZSBtb2NrIG9iamVjdCBoYXMgYmVlbiBjYWxsZWQ6CisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICAgICAgICAgID4+PiBtb2NrLmNhbGxfY291bnQKKyAgICAgICAgICAgIDAKKyAgICAgICAgICAgID4+PiBtb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLmNhbGxfY291bnQKKyAgICAgICAgICAgIDIKKworCisgICAgLi4gYXR0cmlidXRlOjogcmV0dXJuX3ZhbHVlCisKKyAgICAgICAgU2V0IHRoaXMgdG8gY29uZmlndXJlIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBjYWxsaW5nIHRoZSBtb2NrOgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2sucmV0dXJuX3ZhbHVlID0gJ2Zpc2gnCisgICAgICAgICAgICA+Pj4gbW9jaygpCisgICAgICAgICAgICAnZmlzaCcKKworICAgICAgICBUaGUgZGVmYXVsdCByZXR1cm4gdmFsdWUgaXMgYSBtb2NrIG9iamVjdCBhbmQgeW91IGNhbiBjb25maWd1cmUgaXQgaW4KKyAgICAgICAgdGhlIG5vcm1hbCB3YXk6CisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jay5yZXR1cm5fdmFsdWUuYXR0cmlidXRlID0gc2VudGluZWwuQXR0cmlidXRlCisgICAgICAgICAgICA+Pj4gbW9jay5yZXR1cm5fdmFsdWUoKQorICAgICAgICAgICAgPE1vY2sgbmFtZT0nbW9jaygpKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IG1vY2sucmV0dXJuX3ZhbHVlLmFzc2VydF9jYWxsZWRfd2l0aCgpCisKKyAgICAgICAgYHJldHVybl92YWx1ZWAgY2FuIGFsc28gYmUgc2V0IGluIHRoZSBjb25zdHJ1Y3RvcjoKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT0zKQorICAgICAgICAgICAgPj4+IG1vY2sucmV0dXJuX3ZhbHVlCisgICAgICAgICAgICAzCisgICAgICAgICAgICA+Pj4gbW9jaygpCisgICAgICAgICAgICAzCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IHNpZGVfZWZmZWN0CisKKyAgICAgICAgVGhpcyBjYW4gZWl0aGVyIGJlIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIG1vY2sgaXMgY2FsbGVkLAorICAgICAgICBvciBhbiBleGNlcHRpb24gKGNsYXNzIG9yIGluc3RhbmNlKSB0byBiZSByYWlzZWQuCisKKyAgICAgICAgSWYgeW91IHBhc3MgaW4gYSBmdW5jdGlvbiBpdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHNhbWUgYXJndW1lbnRzIGFzIHRoZQorICAgICAgICBtb2NrIGFuZCB1bmxlc3MgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIDpkYXRhOmBERUZBVUxUYCBzaW5nbGV0b24gdGhlCisgICAgICAgIGNhbGwgdG8gdGhlIG1vY2sgd2lsbCB0aGVuIHJldHVybiB3aGF0ZXZlciB0aGUgZnVuY3Rpb24gcmV0dXJucy4gSWYgdGhlCisgICAgICAgIGZ1bmN0aW9uIHJldHVybnMgOmRhdGE6YERFRkFVTFRgIHRoZW4gdGhlIG1vY2sgd2lsbCByZXR1cm4gaXRzIG5vcm1hbAorICAgICAgICB2YWx1ZSAoZnJvbSB0aGUgOmF0dHI6YHJldHVybl92YWx1ZWAuCisKKyAgICAgICAgQW4gZXhhbXBsZSBvZiBhIG1vY2sgdGhhdCByYWlzZXMgYW4gZXhjZXB0aW9uICh0byB0ZXN0IGV4Y2VwdGlvbgorICAgICAgICBoYW5kbGluZyBvZiBhbiBBUEkpOgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2suc2lkZV9lZmZlY3QgPSBFeGNlcHRpb24oJ0Jvb20hJykKKyAgICAgICAgICAgID4+PiBtb2NrKCkKKyAgICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICBFeGNlcHRpb246IEJvb20hCisKKyAgICAgICAgVXNpbmcgYHNpZGVfZWZmZWN0YCB0byByZXR1cm4gYSBzZXF1ZW5jZSBvZiB2YWx1ZXM6CisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jay5zaWRlX2VmZmVjdCA9IFszLCAyLCAxXQorICAgICAgICAgICAgPj4+IG1vY2soKSwgbW9jaygpLCBtb2NrKCkKKyAgICAgICAgICAgICgzLCAyLCAxKQorCisgICAgICAgIFRoZSBgc2lkZV9lZmZlY3RgIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZSBzYW1lIGFyZ3VtZW50cyBhcyB0aGUKKyAgICAgICAgbW9jayAoc28gaXQgaXMgd2lzZSBmb3IgaXQgdG8gdGFrZSBhcmJpdHJhcnkgYXJncyBhbmQga2V5d29yZAorICAgICAgICBhcmd1bWVudHMpIGFuZCB3aGF0ZXZlciBpdCByZXR1cm5zIGlzIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZSBmb3IKKyAgICAgICAgdGhlIGNhbGwuIFRoZSBleGNlcHRpb24gaXMgaWYgYHNpZGVfZWZmZWN0YCByZXR1cm5zIDpkYXRhOmBERUZBVUxUYCwKKyAgICAgICAgaW4gd2hpY2ggY2FzZSB0aGUgbm9ybWFsIDphdHRyOmByZXR1cm5fdmFsdWVgIGlzIHVzZWQuCisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9MykKKyAgICAgICAgICAgID4+PiBkZWYgc2lkZV9lZmZlY3QoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIC4uLiAgICAgcmV0dXJuIERFRkFVTFQKKyAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgPj4+IG1vY2suc2lkZV9lZmZlY3QgPSBzaWRlX2VmZmVjdAorICAgICAgICAgICAgPj4+IG1vY2soKQorICAgICAgICAgICAgMworCisgICAgICAgIGBzaWRlX2VmZmVjdGAgY2FuIGJlIHNldCBpbiB0aGUgY29uc3RydWN0b3IuIEhlcmUncyBhbiBleGFtcGxlIHRoYXQKKyAgICAgICAgYWRkcyBvbmUgdG8gdGhlIHZhbHVlIHRoZSBtb2NrIGlzIGNhbGxlZCB3aXRoIGFuZCByZXR1cm5zIGl0OgorCisgICAgICAgICAgICA+Pj4gc2lkZV9lZmZlY3QgPSBsYW1iZGEgdmFsdWU6IHZhbHVlICsgMQorICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PXNpZGVfZWZmZWN0KQorICAgICAgICAgICAgPj4+IG1vY2soMykKKyAgICAgICAgICAgIDQKKyAgICAgICAgICAgID4+PiBtb2NrKC04KQorICAgICAgICAgICAgLTcKKworICAgICAgICBTZXR0aW5nIGBzaWRlX2VmZmVjdGAgdG8gYE5vbmVgIGNsZWFycyBpdDoKKworICAgICAgICAgICAgPj4+IG0gPSBNb2NrKHNpZGVfZWZmZWN0PUtleUVycm9yLCByZXR1cm5fdmFsdWU9MykKKyAgICAgICAgICAgID4+PiBtKCkKKyAgICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIEtleUVycm9yCisgICAgICAgICAgICA+Pj4gbS5zaWRlX2VmZmVjdCA9IE5vbmUKKyAgICAgICAgICAgID4+PiBtKCkKKyAgICAgICAgICAgIDMKKworCisgICAgLi4gYXR0cmlidXRlOjogY2FsbF9hcmdzCisKKyAgICAgICAgVGhpcyBpcyBlaXRoZXIgYE5vbmVgIChpZiB0aGUgbW9jayBoYXNuJ3QgYmVlbiBjYWxsZWQpLCBvciB0aGUKKyAgICAgICAgYXJndW1lbnRzIHRoYXQgdGhlIG1vY2sgd2FzIGxhc3QgY2FsbGVkIHdpdGguIFRoaXMgd2lsbCBiZSBpbiB0aGUKKyAgICAgICAgZm9ybSBvZiBhIHR1cGxlOiB0aGUgZmlyc3QgbWVtYmVyIGlzIGFueSBvcmRlcmVkIGFyZ3VtZW50cyB0aGUgbW9jaworICAgICAgICB3YXMgY2FsbGVkIHdpdGggKG9yIGFuIGVtcHR5IHR1cGxlKSBhbmQgdGhlIHNlY29uZCBtZW1iZXIgaXMgYW55CisgICAgICAgIGtleXdvcmQgYXJndW1lbnRzIChvciBhbiBlbXB0eSBkaWN0aW9uYXJ5KS4KKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgICAgICAgICAgPj4+IHByaW50IG1vY2suY2FsbF9hcmdzCisgICAgICAgICAgICBOb25lCisgICAgICAgICAgICA+Pj4gbW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsX2FyZ3MKKyAgICAgICAgICAgIGNhbGwoKQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbF9hcmdzID09ICgpCisgICAgICAgICAgICBUcnVlCisgICAgICAgICAgICA+Pj4gbW9jaygzLCA0KQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbF9hcmdzCisgICAgICAgICAgICBjYWxsKDMsIDQpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsX2FyZ3MgPT0gKCgzLCA0KSwpCisgICAgICAgICAgICBUcnVlCisgICAgICAgICAgICA+Pj4gbW9jaygzLCA0LCA1LCBrZXk9J2Zpc2gnLCBuZXh0PSd3MDB0IScpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsX2FyZ3MKKyAgICAgICAgICAgIGNhbGwoMywgNCwgNSwga2V5PSdmaXNoJywgbmV4dD0ndzAwdCEnKQorCisgICAgICAgIGBjYWxsX2FyZ3NgLCBhbG9uZyB3aXRoIG1lbWJlcnMgb2YgdGhlIGxpc3RzIDphdHRyOmBjYWxsX2FyZ3NfbGlzdGAsCisgICAgICAgIDphdHRyOmBtZXRob2RfY2FsbHNgIGFuZCA6YXR0cjpgbW9ja19jYWxsc2AgYXJlIDpkYXRhOmBjYWxsYCBvYmplY3RzLgorICAgICAgICBUaGVzZSBhcmUgdHVwbGVzLCBzbyB0aGV5IGNhbiBiZSB1bnBhY2tlZCB0byBnZXQgYXQgdGhlIGluZGl2aWR1YWwKKyAgICAgICAgYXJndW1lbnRzIGFuZCBtYWtlIG1vcmUgY29tcGxleCBhc3NlcnRpb25zLiBTZWUKKyAgICAgICAgOnJlZjpgY2FsbHMgYXMgdHVwbGVzIDxjYWxscy1hcy10dXBsZXM+YC4KKworCisgICAgLi4gYXR0cmlidXRlOjogY2FsbF9hcmdzX2xpc3QKKworICAgICAgICBUaGlzIGlzIGEgbGlzdCBvZiBhbGwgdGhlIGNhbGxzIG1hZGUgdG8gdGhlIG1vY2sgb2JqZWN0IGluIHNlcXVlbmNlCisgICAgICAgIChzbyB0aGUgbGVuZ3RoIG9mIHRoZSBsaXN0IGlzIHRoZSBudW1iZXIgb2YgdGltZXMgaXQgaGFzIGJlZW4KKyAgICAgICAgY2FsbGVkKS4gQmVmb3JlIGFueSBjYWxscyBoYXZlIGJlZW4gbWFkZSBpdCBpcyBhbiBlbXB0eSBsaXN0LiBUaGUKKyAgICAgICAgOmRhdGE6YGNhbGxgIG9iamVjdCBjYW4gYmUgdXNlZCBmb3IgY29udmVuaWVudGx5IGNvbnN0cnVjdGluZyBsaXN0cyBvZgorICAgICAgICBjYWxscyB0byBjb21wYXJlIHdpdGggYGNhbGxfYXJnc19saXN0YC4KKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgICAgICAgICAgPj4+IG1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2soMywgNCkKKyAgICAgICAgICAgID4+PiBtb2NrKGtleT0nZmlzaCcsIG5leHQ9J3cwMHQhJykKKyAgICAgICAgICAgID4+PiBtb2NrLmNhbGxfYXJnc19saXN0CisgICAgICAgICAgICBbY2FsbCgpLCBjYWxsKDMsIDQpLCBjYWxsKGtleT0nZmlzaCcsIG5leHQ9J3cwMHQhJyldCisgICAgICAgICAgICA+Pj4gZXhwZWN0ZWQgPSBbKCksICgoMywgNCksKSwgKHsna2V5JzogJ2Zpc2gnLCAnbmV4dCc6ICd3MDB0ISd9LCldCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsX2FyZ3NfbGlzdCA9PSBleHBlY3RlZAorICAgICAgICAgICAgVHJ1ZQorCisgICAgICAgIE1lbWJlcnMgb2YgYGNhbGxfYXJnc19saXN0YCBhcmUgOmRhdGE6YGNhbGxgIG9iamVjdHMuIFRoZXNlIGNhbiBiZQorICAgICAgICB1bnBhY2tlZCBhcyB0dXBsZXMgdG8gZ2V0IGF0IHRoZSBpbmRpdmlkdWFsIGFyZ3VtZW50cy4gU2VlCisgICAgICAgIDpyZWY6YGNhbGxzIGFzIHR1cGxlcyA8Y2FsbHMtYXMtdHVwbGVzPmAuCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IG1ldGhvZF9jYWxscworCisgICAgICAgIEFzIHdlbGwgYXMgdHJhY2tpbmcgY2FsbHMgdG8gdGhlbXNlbHZlcywgbW9ja3MgYWxzbyB0cmFjayBjYWxscyB0bworICAgICAgICBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzLCBhbmQgKnRoZWlyKiBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICAgICAgICAgIDxNb2NrIG5hbWU9J21vY2subWV0aG9kKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IG1vY2sucHJvcGVydHkubWV0aG9kLmF0dHJpYnV0ZSgpCisgICAgICAgICAgICA8TW9jayBuYW1lPSdtb2NrLnByb3BlcnR5Lm1ldGhvZC5hdHRyaWJ1dGUoKScgaWQ9Jy4uLic+CisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2RfY2FsbHMKKyAgICAgICAgICAgIFtjYWxsLm1ldGhvZCgpLCBjYWxsLnByb3BlcnR5Lm1ldGhvZC5hdHRyaWJ1dGUoKV0KKworICAgICAgICBNZW1iZXJzIG9mIGBtZXRob2RfY2FsbHNgIGFyZSA6ZGF0YTpgY2FsbGAgb2JqZWN0cy4gVGhlc2UgY2FuIGJlCisgICAgICAgIHVucGFja2VkIGFzIHR1cGxlcyB0byBnZXQgYXQgdGhlIGluZGl2aWR1YWwgYXJndW1lbnRzLiBTZWUKKyAgICAgICAgOnJlZjpgY2FsbHMgYXMgdHVwbGVzIDxjYWxscy1hcy10dXBsZXM+YC4KKworCisgICAgLi4gYXR0cmlidXRlOjogbW9ja19jYWxscworCisgICAgICAgIGBtb2NrX2NhbGxzYCByZWNvcmRzICphbGwqIGNhbGxzIHRvIHRoZSBtb2NrIG9iamVjdCwgaXRzIG1ldGhvZHMsIG1hZ2ljCisgICAgICAgIG1ldGhvZHMgKmFuZCogcmV0dXJuIHZhbHVlIG1vY2tzLgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgICAgICA+Pj4gcmVzdWx0ID0gbW9jaygxLCAyLCAzKQorICAgICAgICAgICAgPj4+IG1vY2suZmlyc3QoYT0zKQorICAgICAgICAgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLmZpcnN0KCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IG1vY2suc2Vjb25kKCkKKyAgICAgICAgICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5zZWNvbmQoKScgaWQ9Jy4uLic+CisgICAgICAgICAgICA+Pj4gaW50KG1vY2spCisgICAgICAgICAgICAxCisgICAgICAgICAgICA+Pj4gcmVzdWx0KDEpCisgICAgICAgICAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2soKSgpJyBpZD0nLi4uJz4KKyAgICAgICAgICAgID4+PiBleHBlY3RlZCA9IFtjYWxsKDEsIDIsIDMpLCBjYWxsLmZpcnN0KGE9MyksIGNhbGwuc2Vjb25kKCksCisgICAgICAgICAgICAuLi4gY2FsbC5fX2ludF9fKCksIGNhbGwoKSgxKV0KKyAgICAgICAgICAgID4+PiBtb2NrLm1vY2tfY2FsbHMgPT0gZXhwZWN0ZWQKKyAgICAgICAgICAgIFRydWUKKworICAgICAgICBNZW1iZXJzIG9mIGBtb2NrX2NhbGxzYCBhcmUgOmRhdGE6YGNhbGxgIG9iamVjdHMuIFRoZXNlIGNhbiBiZQorICAgICAgICB1bnBhY2tlZCBhcyB0dXBsZXMgdG8gZ2V0IGF0IHRoZSBpbmRpdmlkdWFsIGFyZ3VtZW50cy4gU2VlCisgICAgICAgIDpyZWY6YGNhbGxzIGFzIHR1cGxlcyA8Y2FsbHMtYXMtdHVwbGVzPmAuCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IF9fY2xhc3NfXworCisgICAgICAgIE5vcm1hbGx5IHRoZSBgX19jbGFzc19fYCBhdHRyaWJ1dGUgb2YgYW4gb2JqZWN0IHdpbGwgcmV0dXJuIGl0cyB0eXBlLgorICAgICAgICBGb3IgYSBtb2NrIG9iamVjdCB3aXRoIGEgYHNwZWNgIGBfX2NsYXNzX19gIHJldHVybnMgdGhlIHNwZWMgY2xhc3MKKyAgICAgICAgaW5zdGVhZC4gVGhpcyBhbGxvd3MgbW9jayBvYmplY3RzIHRvIHBhc3MgYGlzaW5zdGFuY2VgIHRlc3RzIGZvciB0aGUKKyAgICAgICAgb2JqZWN0IHRoZXkgYXJlIHJlcGxhY2luZyAvIG1hc3F1ZXJhZGluZyBhczoKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKHNwZWM9MykKKyAgICAgICAgICAgID4+PiBpc2luc3RhbmNlKG1vY2ssIGludCkKKyAgICAgICAgICAgIFRydWUKKworICAgICAgICBgX19jbGFzc19fYCBpcyBhc3NpZ25hYmxlIHRvLCB0aGlzIGFsbG93cyBhIG1vY2sgdG8gcGFzcyBhbgorICAgICAgICBgaXNpbnN0YW5jZWAgY2hlY2sgd2l0aG91dCBmb3JjaW5nIHlvdSB0byB1c2UgYSBzcGVjOgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2suX19jbGFzc19fID0gZGljdAorICAgICAgICAgICAgPj4+IGlzaW5zdGFuY2UobW9jaywgZGljdCkKKyAgICAgICAgICAgIFRydWUKKworLi4gY2xhc3M6OiBOb25DYWxsYWJsZU1vY2soc3BlYz1Ob25lLCB3cmFwcz1Ob25lLCBuYW1lPU5vbmUsIHNwZWNfc2V0PU5vbmUsICoqa3dhcmdzKQorCisgICAgQSBub24tY2FsbGFibGUgdmVyc2lvbiBvZiBgTW9ja2AuIFRoZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIGhhdmUgdGhlIHNhbWUKKyAgICBtZWFuaW5nIG9mIGBNb2NrYCwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIGByZXR1cm5fdmFsdWVgIGFuZCBgc2lkZV9lZmZlY3RgCisgICAgd2hpY2ggaGF2ZSBubyBtZWFuaW5nIG9uIGEgbm9uLWNhbGxhYmxlIG1vY2suCisKK01vY2sgb2JqZWN0cyB0aGF0IHVzZSBhIGNsYXNzIG9yIGFuIGluc3RhbmNlIGFzIGEgYHNwZWNgIG9yIGBzcGVjX3NldGAgYXJlIGFibGUKK3RvIHBhc3MgYGlzaW5zdGFuY2VgIHRlc3RzOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKHNwZWM9U29tZUNsYXNzKQorICAgID4+PiBpc2luc3RhbmNlKG1vY2ssIFNvbWVDbGFzcykKKyAgICBUcnVlCisgICAgPj4+IG1vY2sgPSBNb2NrKHNwZWNfc2V0PVNvbWVDbGFzcygpKQorICAgID4+PiBpc2luc3RhbmNlKG1vY2ssIFNvbWVDbGFzcykKKyAgICBUcnVlCisKK1RoZSBgTW9ja2AgY2xhc3NlcyBoYXZlIHN1cHBvcnQgZm9yIG1vY2tpbmcgbWFnaWMgbWV0aG9kcy4gU2VlIDpyZWY6YG1hZ2ljCittZXRob2RzIDxtYWdpYy1tZXRob2RzPmAgZm9yIHRoZSBmdWxsIGRldGFpbHMuCisKK1RoZSBtb2NrIGNsYXNzZXMgYW5kIHRoZSA6ZnVuYzpgcGF0Y2hgIGRlY29yYXRvcnMgYWxsIHRha2UgYXJiaXRyYXJ5IGtleXdvcmQKK2FyZ3VtZW50cyBmb3IgY29uZmlndXJhdGlvbi4gRm9yIHRoZSBgcGF0Y2hgIGRlY29yYXRvcnMgdGhlIGtleXdvcmRzIGFyZQorcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgbW9jayBiZWluZyBjcmVhdGVkLiBUaGUga2V5d29yZCBhcmd1bWVudHMKK2FyZSBmb3IgY29uZmlndXJpbmcgYXR0cmlidXRlcyBvZiB0aGUgbW9jazoKKworICAgICAgICA+Pj4gbSA9IE1hZ2ljTW9jayhhdHRyaWJ1dGU9Mywgb3RoZXI9J2Zpc2gnKQorICAgICAgICA+Pj4gbS5hdHRyaWJ1dGUKKyAgICAgICAgMworICAgICAgICA+Pj4gbS5vdGhlcgorICAgICAgICAnZmlzaCcKKworVGhlIHJldHVybiB2YWx1ZSBhbmQgc2lkZSBlZmZlY3Qgb2YgY2hpbGQgbW9ja3MgY2FuIGJlIHNldCBpbiB0aGUgc2FtZSB3YXksCit1c2luZyBkb3R0ZWQgbm90YXRpb24uIEFzIHlvdSBjYW4ndCB1c2UgZG90dGVkIG5hbWVzIGRpcmVjdGx5IGluIGEgY2FsbCB5b3UKK2hhdmUgdG8gY3JlYXRlIGEgZGljdGlvbmFyeSBhbmQgdW5wYWNrIGl0IHVzaW5nIGAqKmA6CisKKyAgICA+Pj4gYXR0cnMgPSB7J21ldGhvZC5yZXR1cm5fdmFsdWUnOiAzLCAnb3RoZXIuc2lkZV9lZmZlY3QnOiBLZXlFcnJvcn0KKyAgICA+Pj4gbW9jayA9IE1vY2soc29tZV9hdHRyaWJ1dGU9J2VnZ3MnLCAqKmF0dHJzKQorICAgID4+PiBtb2NrLnNvbWVfYXR0cmlidXRlCisgICAgJ2VnZ3MnCisgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICAzCisgICAgPj4+IG1vY2sub3RoZXIoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIEtleUVycm9yCisKKworLi4gY2xhc3M6OiBQcm9wZXJ0eU1vY2soKmFyZ3MsICoqa3dhcmdzKQorCisgICBBIG1vY2sgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBhIHByb3BlcnR5LCBvciBvdGhlciBkZXNjcmlwdG9yLCBvbiBhIGNsYXNzLgorICAgYFByb3BlcnR5TW9ja2AgcHJvdmlkZXMgYF9fZ2V0X19gIGFuZCBgX19zZXRfX2AgbWV0aG9kcyBzbyB5b3UgY2FuIHNwZWNpZnkKKyAgIGEgcmV0dXJuIHZhbHVlIHdoZW4gaXQgaXMgZmV0Y2hlZC4KKworICAgRmV0Y2hpbmcgYSBgUHJvcGVydHlNb2NrYCBpbnN0YW5jZSBmcm9tIGFuIG9iamVjdCBjYWxscyB0aGUgbW9jaywgd2l0aAorICAgbm8gYXJncy4gU2V0dGluZyBpdCBjYWxscyB0aGUgbW9jayB3aXRoIHRoZSB2YWx1ZSBiZWluZyBzZXQuCisKKyAgICAgICAgPj4+IGNsYXNzIEZvbzoKKyAgICAgICAgLi4uICAgICBAcHJvcGVydHkKKyAgICAgICAgLi4uICAgICBkZWYgZm9vKHNlbGYpOgorICAgICAgICAuLi4gICAgICAgICByZXR1cm4gJ3NvbWV0aGluZycKKyAgICAgICAgLi4uICAgICBAZm9vLnNldHRlcgorICAgICAgICAuLi4gICAgIGRlZiBmb28oc2VsZiwgdmFsdWUpOgorICAgICAgICAuLi4gICAgICAgICBwYXNzCisgICAgICAgIC4uLgorICAgICAgICA+Pj4gd2l0aCBwYXRjaCgnX19tYWluX18uRm9vLmZvbycsIG5ld19jYWxsYWJsZT1Qcm9wZXJ0eU1vY2spIGFzIG1vY2tfZm9vOgorICAgICAgICAuLi4gICAgIG1vY2tfZm9vLnJldHVybl92YWx1ZSA9ICdtb2NraXR5LW1vY2snCisgICAgICAgIC4uLiAgICAgdGhpc19mb28gPSBGb28oKQorICAgICAgICAuLi4gICAgIHByaW50IHRoaXNfZm9vLmZvbworICAgICAgICAuLi4gICAgIHRoaXNfZm9vLmZvbyA9IDYKKyAgICAgICAgLi4uCisgICAgICAgIG1vY2tpdHktbW9jaworICAgICAgICA+Pj4gbW9ja19mb28ubW9ja19jYWxscworICAgICAgICBbY2FsbCgpLCBjYWxsKDYpXQorCitCZWNhdXNlIG9mIHRoZSB3YXkgbW9jayBhdHRyaWJ1dGVzIGFyZSBzdG9yZWQgeW91IGNhbid0IGRpcmVjdGx5IGF0dGFjaCBhCitgUHJvcGVydHlNb2NrYCB0byBhIG1vY2sgb2JqZWN0LiBJbnN0ZWFkIHlvdSBjYW4gYXR0YWNoIGl0IHRvIHRoZSBtb2NrIHR5cGUKK29iamVjdDo6CisKKyAgICA+Pj4gbSA9IE1hZ2ljTW9jaygpCisgICAgPj4+IHAgPSBQcm9wZXJ0eU1vY2socmV0dXJuX3ZhbHVlPTMpCisgICAgPj4+IHR5cGUobSkuZm9vID0gcAorICAgID4+PiBtLmZvbworICAgIDMKKyAgICA+Pj4gcC5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKworQ2FsbGluZworfn5+fn5+fgorCitNb2NrIG9iamVjdHMgYXJlIGNhbGxhYmxlLiBUaGUgY2FsbCB3aWxsIHJldHVybiB0aGUgdmFsdWUgc2V0IGFzIHRoZQorOmF0dHI6YH5Nb2NrLnJldHVybl92YWx1ZWAgYXR0cmlidXRlLiBUaGUgZGVmYXVsdCByZXR1cm4gdmFsdWUgaXMgYSBuZXcgTW9jaworb2JqZWN0OyBpdCBpcyBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lIHRoZSByZXR1cm4gdmFsdWUgaXMgYWNjZXNzZWQgKGVpdGhlcgorZXhwbGljaXRseSBvciBieSBjYWxsaW5nIHRoZSBNb2NrKSAtIGJ1dCBpdCBpcyBzdG9yZWQgYW5kIHRoZSBzYW1lIG9uZQorcmV0dXJuZWQgZWFjaCB0aW1lLgorCitDYWxscyBtYWRlIHRvIHRoZSBvYmplY3Qgd2lsbCBiZSByZWNvcmRlZCBpbiB0aGUgYXR0cmlidXRlcworbGlrZSA6YXR0cjpgfk1vY2suY2FsbF9hcmdzYCBhbmQgOmF0dHI6YH5Nb2NrLmNhbGxfYXJnc19saXN0YC4KKworSWYgOmF0dHI6YH5Nb2NrLnNpZGVfZWZmZWN0YCBpcyBzZXQgdGhlbiBpdCB3aWxsIGJlIGNhbGxlZCBhZnRlciB0aGUgY2FsbCBoYXMKK2JlZW4gcmVjb3JkZWQsIHNvIGlmIGBzaWRlX2VmZmVjdGAgcmFpc2VzIGFuIGV4Y2VwdGlvbiB0aGUgY2FsbCBpcyBzdGlsbAorcmVjb3JkZWQuCisKK1RoZSBzaW1wbGVzdCB3YXkgdG8gbWFrZSBhIG1vY2sgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gY2FsbGVkIGlzIHRvIG1ha2UKKzphdHRyOmB+TW9jay5zaWRlX2VmZmVjdGAgYW4gZXhjZXB0aW9uIGNsYXNzIG9yIGluc3RhbmNlOgorCisgICAgICAgID4+PiBtID0gTWFnaWNNb2NrKHNpZGVfZWZmZWN0PUluZGV4RXJyb3IpCisgICAgICAgID4+PiBtKDEsIDIsIDMpCisgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAuLi4KKyAgICAgICAgSW5kZXhFcnJvcgorICAgICAgICA+Pj4gbS5tb2NrX2NhbGxzCisgICAgICAgIFtjYWxsKDEsIDIsIDMpXQorICAgICAgICA+Pj4gbS5zaWRlX2VmZmVjdCA9IEtleUVycm9yKCdCYW5nIScpCisgICAgICAgID4+PiBtKCd0d28nLCAndGhyZWUnLCAnZm91cicpCisgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAuLi4KKyAgICAgICAgS2V5RXJyb3I6ICdCYW5nIScKKyAgICAgICAgPj4+IG0ubW9ja19jYWxscworICAgICAgICBbY2FsbCgxLCAyLCAzKSwgY2FsbCgndHdvJywgJ3RocmVlJywgJ2ZvdXInKV0KKworSWYgYHNpZGVfZWZmZWN0YCBpcyBhIGZ1bmN0aW9uIHRoZW4gd2hhdGV2ZXIgdGhhdCBmdW5jdGlvbiByZXR1cm5zIGlzIHdoYXQKK2NhbGxzIHRvIHRoZSBtb2NrIHJldHVybi4gVGhlIGBzaWRlX2VmZmVjdGAgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdGhlCitzYW1lIGFyZ3VtZW50cyBhcyB0aGUgbW9jay4gVGhpcyBhbGxvd3MgeW91IHRvIHZhcnkgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUKK2NhbGwgZHluYW1pY2FsbHksIGJhc2VkIG9uIHRoZSBpbnB1dDoKKworICAgICAgICA+Pj4gZGVmIHNpZGVfZWZmZWN0KHZhbHVlKToKKyAgICAgICAgLi4uICAgICByZXR1cm4gdmFsdWUgKyAxCisgICAgICAgIC4uLgorICAgICAgICA+Pj4gbSA9IE1hZ2ljTW9jayhzaWRlX2VmZmVjdD1zaWRlX2VmZmVjdCkKKyAgICAgICAgPj4+IG0oMSkKKyAgICAgICAgMgorICAgICAgICA+Pj4gbSgyKQorICAgICAgICAzCisgICAgICAgID4+PiBtLm1vY2tfY2FsbHMKKyAgICAgICAgW2NhbGwoMSksIGNhbGwoMildCisKK0lmIHlvdSB3YW50IHRoZSBtb2NrIHRvIHN0aWxsIHJldHVybiB0aGUgZGVmYXVsdCByZXR1cm4gdmFsdWUgKGEgbmV3IG1vY2spLCBvcgorYW55IHNldCByZXR1cm4gdmFsdWUsIHRoZW4gdGhlcmUgYXJlIHR3byB3YXlzIG9mIGRvaW5nIHRoaXMuIEVpdGhlciByZXR1cm4KK2Btb2NrLnJldHVybl92YWx1ZWAgZnJvbSBpbnNpZGUgYHNpZGVfZWZmZWN0YCwgb3IgcmV0dXJuIDpkYXRhOmBERUZBVUxUYDoKKworICAgICAgICA+Pj4gbSA9IE1hZ2ljTW9jaygpCisgICAgICAgID4+PiBkZWYgc2lkZV9lZmZlY3QoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgLi4uICAgICByZXR1cm4gbS5yZXR1cm5fdmFsdWUKKyAgICAgICAgLi4uCisgICAgICAgID4+PiBtLnNpZGVfZWZmZWN0ID0gc2lkZV9lZmZlY3QKKyAgICAgICAgPj4+IG0ucmV0dXJuX3ZhbHVlID0gMworICAgICAgICA+Pj4gbSgpCisgICAgICAgIDMKKyAgICAgICAgPj4+IGRlZiBzaWRlX2VmZmVjdCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAuLi4gICAgIHJldHVybiBERUZBVUxUCisgICAgICAgIC4uLgorICAgICAgICA+Pj4gbS5zaWRlX2VmZmVjdCA9IHNpZGVfZWZmZWN0CisgICAgICAgID4+PiBtKCkKKyAgICAgICAgMworCitUbyByZW1vdmUgYSBgc2lkZV9lZmZlY3RgLCBhbmQgcmV0dXJuIHRvIHRoZSBkZWZhdWx0IGJlaGF2aW91ciwgc2V0IHRoZQorYHNpZGVfZWZmZWN0YCB0byBgTm9uZWA6CisKKyAgICAgICAgPj4+IG0gPSBNYWdpY01vY2socmV0dXJuX3ZhbHVlPTYpCisgICAgICAgID4+PiBkZWYgc2lkZV9lZmZlY3QoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgLi4uICAgICByZXR1cm4gMworICAgICAgICAuLi4KKyAgICAgICAgPj4+IG0uc2lkZV9lZmZlY3QgPSBzaWRlX2VmZmVjdAorICAgICAgICA+Pj4gbSgpCisgICAgICAgIDMKKyAgICAgICAgPj4+IG0uc2lkZV9lZmZlY3QgPSBOb25lCisgICAgICAgID4+PiBtKCkKKyAgICAgICAgNgorCitUaGUgYHNpZGVfZWZmZWN0YCBjYW4gYWxzbyBiZSBhbnkgaXRlcmFibGUgb2JqZWN0LiBSZXBlYXRlZCBjYWxscyB0byB0aGUgbW9jaword2lsbCByZXR1cm4gdmFsdWVzIGZyb20gdGhlIGl0ZXJhYmxlICh1bnRpbCB0aGUgaXRlcmFibGUgaXMgZXhoYXVzdGVkIGFuZAorYSBgU3RvcEl0ZXJhdGlvbmAgaXMgcmFpc2VkKToKKworICAgICAgICA+Pj4gbSA9IE1hZ2ljTW9jayhzaWRlX2VmZmVjdD1bMSwgMiwgM10pCisgICAgICAgID4+PiBtKCkKKyAgICAgICAgMQorICAgICAgICA+Pj4gbSgpCisgICAgICAgIDIKKyAgICAgICAgPj4+IG0oKQorICAgICAgICAzCisgICAgICAgID4+PiBtKCkKKyAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgIC4uLgorICAgICAgICBTdG9wSXRlcmF0aW9uCisKK0lmIGFueSBtZW1iZXJzIG9mIHRoZSBpdGVyYWJsZSBhcmUgZXhjZXB0aW9ucyB0aGV5IHdpbGwgYmUgcmFpc2VkIGluc3RlYWQgb2YKK3JldHVybmVkOjoKKworICAgICAgICA+Pj4gaXRlcmFibGUgPSAoMzMsIFZhbHVlRXJyb3IsIDY2KQorICAgICAgICA+Pj4gbSA9IE1hZ2ljTW9jayhzaWRlX2VmZmVjdD1pdGVyYWJsZSkKKyAgICAgICAgPj4+IG0oKQorICAgICAgICAzMworICAgICAgICA+Pj4gbSgpCisgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgIC4uLgorICAgICAgICBWYWx1ZUVycm9yCisgICAgICAgID4+PiBtKCkKKyAgICAgICAgNjYKKworCisuLiBfZGVsZXRpbmctYXR0cmlidXRlczoKKworRGVsZXRpbmcgQXR0cmlidXRlcworfn5+fn5+fn5+fn5+fn5+fn5+fgorCitNb2NrIG9iamVjdHMgY3JlYXRlIGF0dHJpYnV0ZXMgb24gZGVtYW5kLiBUaGlzIGFsbG93cyB0aGVtIHRvIHByZXRlbmQgdG8gYmUKK29iamVjdHMgb2YgYW55IHR5cGUuCisKK1lvdSBtYXkgd2FudCBhIG1vY2sgb2JqZWN0IHRvIHJldHVybiBgRmFsc2VgIHRvIGEgYGhhc2F0dHJgIGNhbGwsIG9yIHJhaXNlIGFuCitgQXR0cmlidXRlRXJyb3JgIHdoZW4gYW4gYXR0cmlidXRlIGlzIGZldGNoZWQuIFlvdSBjYW4gZG8gdGhpcyBieSBwcm92aWRpbmcKK2FuIG9iamVjdCBhcyBhIGBzcGVjYCBmb3IgYSBtb2NrLCBidXQgdGhhdCBpc24ndCBhbHdheXMgY29udmVuaWVudC4KKworWW91ICJibG9jayIgYXR0cmlidXRlcyBieSBkZWxldGluZyB0aGVtLiBPbmNlIGRlbGV0ZWQsIGFjY2Vzc2luZyBhbiBhdHRyaWJ1dGUKK3dpbGwgcmFpc2UgYW4gYEF0dHJpYnV0ZUVycm9yYC4KKworICAgID4+PiBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gaGFzYXR0cihtb2NrLCAnbScpCisgICAgVHJ1ZQorICAgID4+PiBkZWwgbW9jay5tCisgICAgPj4+IGhhc2F0dHIobW9jaywgJ20nKQorICAgIEZhbHNlCisgICAgPj4+IGRlbCBtb2NrLmYKKyAgICA+Pj4gbW9jay5mCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAuLi4KKyAgICBBdHRyaWJ1dGVFcnJvcjogZgorCisKK0F0dGFjaGluZyBNb2NrcyBhcyBBdHRyaWJ1dGVzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitXaGVuIHlvdSBhdHRhY2ggYSBtb2NrIGFzIGFuIGF0dHJpYnV0ZSBvZiBhbm90aGVyIG1vY2sgKG9yIGFzIHRoZSByZXR1cm4KK3ZhbHVlKSBpdCBiZWNvbWVzIGEgImNoaWxkIiBvZiB0aGF0IG1vY2suIENhbGxzIHRvIHRoZSBjaGlsZCBhcmUgcmVjb3JkZWQgaW4KK3RoZSA6YXR0cjpgfk1vY2subWV0aG9kX2NhbGxzYCBhbmQgOmF0dHI6YH5Nb2NrLm1vY2tfY2FsbHNgIGF0dHJpYnV0ZXMgb2YgdGhlCitwYXJlbnQuIFRoaXMgaXMgdXNlZnVsIGZvciBjb25maWd1cmluZyBjaGlsZCBtb2NrcyBhbmQgdGhlbiBhdHRhY2hpbmcgdGhlbSB0bwordGhlIHBhcmVudCwgb3IgZm9yIGF0dGFjaGluZyBtb2NrcyB0byBhIHBhcmVudCB0aGF0IHJlY29yZHMgYWxsIGNhbGxzIHRvIHRoZQorY2hpbGRyZW4gYW5kIGFsbG93cyB5b3UgdG8gbWFrZSBhc3NlcnRpb25zIGFib3V0IHRoZSBvcmRlciBvZiBjYWxscyBiZXR3ZWVuCittb2NrczoKKworICAgID4+PiBwYXJlbnQgPSBNYWdpY01vY2soKQorICAgID4+PiBjaGlsZDEgPSBNYWdpY01vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgPj4+IGNoaWxkMiA9IE1hZ2ljTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICA+Pj4gcGFyZW50LmNoaWxkMSA9IGNoaWxkMQorICAgID4+PiBwYXJlbnQuY2hpbGQyID0gY2hpbGQyCisgICAgPj4+IGNoaWxkMSgxKQorICAgID4+PiBjaGlsZDIoMikKKyAgICA+Pj4gcGFyZW50Lm1vY2tfY2FsbHMKKyAgICBbY2FsbC5jaGlsZDEoMSksIGNhbGwuY2hpbGQyKDIpXQorCitUaGUgZXhjZXB0aW9uIHRvIHRoaXMgaXMgaWYgdGhlIG1vY2sgaGFzIGEgbmFtZS4gVGhpcyBhbGxvd3MgeW91IHRvIHByZXZlbnQKK3RoZSAicGFyZW50aW5nIiBpZiBmb3Igc29tZSByZWFzb24geW91IGRvbid0IHdhbnQgaXQgdG8gaGFwcGVuLgorCisgICAgPj4+IG1vY2sgPSBNYWdpY01vY2soKQorICAgID4+PiBub3RfYV9jaGlsZCA9IE1hZ2ljTW9jayhuYW1lPSdub3QtYS1jaGlsZCcpCisgICAgPj4+IG1vY2suYXR0cmlidXRlID0gbm90X2FfY2hpbGQKKyAgICA+Pj4gbW9jay5hdHRyaWJ1dGUoKQorICAgIDxNYWdpY01vY2sgbmFtZT0nbm90LWEtY2hpbGQoKScgaWQ9Jy4uLic+CisgICAgPj4+IG1vY2subW9ja19jYWxscworICAgIFtdCisKK01vY2tzIGNyZWF0ZWQgZm9yIHlvdSBieSA6ZnVuYzpgcGF0Y2hgIGFyZSBhdXRvbWF0aWNhbGx5IGdpdmVuIG5hbWVzLiBUbworYXR0YWNoIG1vY2tzIHRoYXQgaGF2ZSBuYW1lcyB0byBhIHBhcmVudCB5b3UgdXNlIHRoZSA6bWV0aDpgfk1vY2suYXR0YWNoX21vY2tgCittZXRob2Q6CisKKyAgICA+Pj4gdGhpbmcxID0gb2JqZWN0KCkKKyAgICA+Pj4gdGhpbmcyID0gb2JqZWN0KCkKKyAgICA+Pj4gcGFyZW50ID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gd2l0aCBwYXRjaCgnX19tYWluX18udGhpbmcxJywgcmV0dXJuX3ZhbHVlPU5vbmUpIGFzIGNoaWxkMToKKyAgICAuLi4gICAgIHdpdGggcGF0Y2goJ19fbWFpbl9fLnRoaW5nMicsIHJldHVybl92YWx1ZT1Ob25lKSBhcyBjaGlsZDI6CisgICAgLi4uICAgICAgICAgcGFyZW50LmF0dGFjaF9tb2NrKGNoaWxkMSwgJ2NoaWxkMScpCisgICAgLi4uICAgICAgICAgcGFyZW50LmF0dGFjaF9tb2NrKGNoaWxkMiwgJ2NoaWxkMicpCisgICAgLi4uICAgICAgICAgY2hpbGQxKCdvbmUnKQorICAgIC4uLiAgICAgICAgIGNoaWxkMigndHdvJykKKyAgICAuLi4KKyAgICA+Pj4gcGFyZW50Lm1vY2tfY2FsbHMKKyAgICBbY2FsbC5jaGlsZDEoJ29uZScpLCBjYWxsLmNoaWxkMigndHdvJyldCisKKworLi4gWyNdIFRoZSBvbmx5IGV4Y2VwdGlvbnMgYXJlIG1hZ2ljIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXMgKHRob3NlIHRoYXQgaGF2ZQorICAgICAgIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGRvdWJsZSB1bmRlcnNjb3JlcykuIE1vY2sgZG9lc24ndCBjcmVhdGUgdGhlc2UgYnV0CisgICAgICAgaW5zdGVhZCBvZiByYWlzZXMgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgLiBUaGlzIGlzIGJlY2F1c2UgdGhlIGludGVycHJldGVyCisgICAgICAgd2lsbCBvZnRlbiBpbXBsaWNpdGx5IHJlcXVlc3QgdGhlc2UgbWV0aG9kcywgYW5kIGdldHMgKnZlcnkqIGNvbmZ1c2VkIHRvCisgICAgICAgZ2V0IGEgbmV3IE1vY2sgb2JqZWN0IHdoZW4gaXQgZXhwZWN0cyBhIG1hZ2ljIG1ldGhvZC4gSWYgeW91IG5lZWQgbWFnaWMKKyAgICAgICBtZXRob2Qgc3VwcG9ydCBzZWUgOnJlZjpgbWFnaWMgbWV0aG9kcyA8bWFnaWMtbWV0aG9kcz5gLgorCisKK1RoZSBwYXRjaGVycworLS0tLS0tLS0tLS0tCisKK1RoZSBwYXRjaCBkZWNvcmF0b3JzIGFyZSB1c2VkIGZvciBwYXRjaGluZyBvYmplY3RzIG9ubHkgd2l0aGluIHRoZSBzY29wZSBvZgordGhlIGZ1bmN0aW9uIHRoZXkgZGVjb3JhdGUuIFRoZXkgYXV0b21hdGljYWxseSBoYW5kbGUgdGhlIHVucGF0Y2hpbmcgZm9yIHlvdSwKK2V2ZW4gaWYgZXhjZXB0aW9ucyBhcmUgcmFpc2VkLiBBbGwgb2YgdGhlc2UgZnVuY3Rpb25zIGNhbiBhbHNvIGJlIHVzZWQgaW4gd2l0aAorc3RhdGVtZW50cyBvciBhcyBjbGFzcyBkZWNvcmF0b3JzLgorCisKK3BhdGNoCit+fn5+fgorCisuLiBub3RlOjoKKworICAgIGBwYXRjaGAgaXMgc3RyYWlnaHRmb3J3YXJkIHRvIHVzZS4gVGhlIGtleSBpcyB0byBkbyB0aGUgcGF0Y2hpbmcgaW4gdGhlCisgICAgcmlnaHQgbmFtZXNwYWNlLiBTZWUgdGhlIHNlY3Rpb24gYHdoZXJlIHRvIHBhdGNoYF8uCisKKy4uIGZ1bmN0aW9uOjogcGF0Y2godGFyZ2V0LCBuZXc9REVGQVVMVCwgc3BlYz1Ob25lLCBjcmVhdGU9RmFsc2UsIHNwZWNfc2V0PU5vbmUsIGF1dG9zcGVjPU5vbmUsIG5ld19jYWxsYWJsZT1Ob25lLCAqKmt3YXJncykKKworICAgIGBwYXRjaGAgYWN0cyBhcyBhIGZ1bmN0aW9uIGRlY29yYXRvciwgY2xhc3MgZGVjb3JhdG9yIG9yIGEgY29udGV4dAorICAgIG1hbmFnZXIuIEluc2lkZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb24gb3Igd2l0aCBzdGF0ZW1lbnQsIHRoZSBgdGFyZ2V0YAorICAgIGlzIHBhdGNoZWQgd2l0aCBhIGBuZXdgIG9iamVjdC4gV2hlbiB0aGUgZnVuY3Rpb24vd2l0aCBzdGF0ZW1lbnQgZXhpdHMKKyAgICB0aGUgcGF0Y2ggaXMgdW5kb25lLgorCisgICAgSWYgYG5ld2AgaXMgb21pdHRlZCwgdGhlbiB0aGUgdGFyZ2V0IGlzIHJlcGxhY2VkIHdpdGggYQorICAgIDpjbGFzczpgTWFnaWNNb2NrYC4gSWYgYHBhdGNoYCBpcyB1c2VkIGFzIGEgZGVjb3JhdG9yIGFuZCBgbmV3YCBpcworICAgIG9taXR0ZWQsIHRoZSBjcmVhdGVkIG1vY2sgaXMgcGFzc2VkIGluIGFzIGFuIGV4dHJhIGFyZ3VtZW50IHRvIHRoZQorICAgIGRlY29yYXRlZCBmdW5jdGlvbi4gSWYgYHBhdGNoYCBpcyB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyIHRoZSBjcmVhdGVkCisgICAgbW9jayBpcyByZXR1cm5lZCBieSB0aGUgY29udGV4dCBtYW5hZ2VyLgorCisgICAgYHRhcmdldGAgc2hvdWxkIGJlIGEgc3RyaW5nIGluIHRoZSBmb3JtIGAncGFja2FnZS5tb2R1bGUuQ2xhc3NOYW1lJ2AuIFRoZQorICAgIGB0YXJnZXRgIGlzIGltcG9ydGVkIGFuZCB0aGUgc3BlY2lmaWVkIG9iamVjdCByZXBsYWNlZCB3aXRoIHRoZSBgbmV3YAorICAgIG9iamVjdCwgc28gdGhlIGB0YXJnZXRgIG11c3QgYmUgaW1wb3J0YWJsZSBmcm9tIHRoZSBlbnZpcm9ubWVudCB5b3UgYXJlCisgICAgY2FsbGluZyBgcGF0Y2hgIGZyb20uIFRoZSB0YXJnZXQgaXMgaW1wb3J0ZWQgd2hlbiB0aGUgZGVjb3JhdGVkIGZ1bmN0aW9uCisgICAgaXMgZXhlY3V0ZWQsIG5vdCBhdCBkZWNvcmF0aW9uIHRpbWUuCisKKyAgICBUaGUgYHNwZWNgIGFuZCBgc3BlY19zZXRgIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIGBNYWdpY01vY2tgCisgICAgaWYgcGF0Y2ggaXMgY3JlYXRpbmcgb25lIGZvciB5b3UuCisKKyAgICBJbiBhZGRpdGlvbiB5b3UgY2FuIHBhc3MgYHNwZWM9VHJ1ZWAgb3IgYHNwZWNfc2V0PVRydWVgLCB3aGljaCBjYXVzZXMKKyAgICBwYXRjaCB0byBwYXNzIGluIHRoZSBvYmplY3QgYmVpbmcgbW9ja2VkIGFzIHRoZSBzcGVjL3NwZWNfc2V0IG9iamVjdC4KKworICAgIGBuZXdfY2FsbGFibGVgIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBhIGRpZmZlcmVudCBjbGFzcywgb3IgY2FsbGFibGUgb2JqZWN0LAorICAgIHRoYXQgd2lsbCBiZSBjYWxsZWQgdG8gY3JlYXRlIHRoZSBgbmV3YCBvYmplY3QuIEJ5IGRlZmF1bHQgYE1hZ2ljTW9ja2AgaXMKKyAgICB1c2VkLgorCisgICAgQSBtb3JlIHBvd2VyZnVsIGZvcm0gb2YgYHNwZWNgIGlzIGBhdXRvc3BlY2AuIElmIHlvdSBzZXQgYGF1dG9zcGVjPVRydWVgCisgICAgdGhlbiB0aGUgbW9jayB3aXRoIGJlIGNyZWF0ZWQgd2l0aCBhIHNwZWMgZnJvbSB0aGUgb2JqZWN0IGJlaW5nIHJlcGxhY2VkLgorICAgIEFsbCBhdHRyaWJ1dGVzIG9mIHRoZSBtb2NrIHdpbGwgYWxzbyBoYXZlIHRoZSBzcGVjIG9mIHRoZSBjb3JyZXNwb25kaW5nCisgICAgYXR0cmlidXRlIG9mIHRoZSBvYmplY3QgYmVpbmcgcmVwbGFjZWQuIE1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBiZWluZyBtb2NrZWQKKyAgICB3aWxsIGhhdmUgdGhlaXIgYXJndW1lbnRzIGNoZWNrZWQgYW5kIHdpbGwgcmFpc2UgYSBgVHlwZUVycm9yYCBpZiB0aGV5IGFyZQorICAgIGNhbGxlZCB3aXRoIHRoZSB3cm9uZyBzaWduYXR1cmUuIEZvciBtb2NrcworICAgIHJlcGxhY2luZyBhIGNsYXNzLCB0aGVpciByZXR1cm4gdmFsdWUgKHRoZSAnaW5zdGFuY2UnKSB3aWxsIGhhdmUgdGhlIHNhbWUKKyAgICBzcGVjIGFzIHRoZSBjbGFzcy4gU2VlIHRoZSA6ZnVuYzpgY3JlYXRlX2F1dG9zcGVjYCBmdW5jdGlvbiBhbmQKKyAgICA6cmVmOmBhdXRvLXNwZWNjaW5nYC4KKworICAgIEluc3RlYWQgb2YgYGF1dG9zcGVjPVRydWVgIHlvdSBjYW4gcGFzcyBgYXV0b3NwZWM9c29tZV9vYmplY3RgIHRvIHVzZSBhbgorICAgIGFyYml0cmFyeSBvYmplY3QgYXMgdGhlIHNwZWMgaW5zdGVhZCBvZiB0aGUgb25lIGJlaW5nIHJlcGxhY2VkLgorCisgICAgQnkgZGVmYXVsdCBgcGF0Y2hgIHdpbGwgZmFpbCB0byByZXBsYWNlIGF0dHJpYnV0ZXMgdGhhdCBkb24ndCBleGlzdC4gSWYKKyAgICB5b3UgcGFzcyBpbiBgY3JlYXRlPVRydWVgLCBhbmQgdGhlIGF0dHJpYnV0ZSBkb2Vzbid0IGV4aXN0LCBwYXRjaCB3aWxsCisgICAgY3JlYXRlIHRoZSBhdHRyaWJ1dGUgZm9yIHlvdSB3aGVuIHRoZSBwYXRjaGVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgYW5kCisgICAgZGVsZXRlIGl0IGFnYWluIGFmdGVyd2FyZHMuIFRoaXMgaXMgdXNlZnVsIGZvciB3cml0aW5nIHRlc3RzIGFnYWluc3QKKyAgICBhdHRyaWJ1dGVzIHRoYXQgeW91ciBwcm9kdWN0aW9uIGNvZGUgY3JlYXRlcyBhdCBydW50aW1lLiBJdCBpcyBvZmYgYnkKKyAgICBkZWZhdWx0IGJlY2F1c2UgaXQgY2FuIGJlIGRhbmdlcm91cy4gV2l0aCBpdCBzd2l0Y2hlZCBvbiB5b3UgY2FuIHdyaXRlCisgICAgcGFzc2luZyB0ZXN0cyBhZ2FpbnN0IEFQSXMgdGhhdCBkb24ndCBhY3R1YWxseSBleGlzdCEKKworICAgIFBhdGNoIGNhbiBiZSB1c2VkIGFzIGEgYFRlc3RDYXNlYCBjbGFzcyBkZWNvcmF0b3IuIEl0IHdvcmtzIGJ5CisgICAgZGVjb3JhdGluZyBlYWNoIHRlc3QgbWV0aG9kIGluIHRoZSBjbGFzcy4gVGhpcyByZWR1Y2VzIHRoZSBib2lsZXJwbGF0ZQorICAgIGNvZGUgd2hlbiB5b3VyIHRlc3QgbWV0aG9kcyBzaGFyZSBhIGNvbW1vbiBwYXRjaGluZ3Mgc2V0LiBgcGF0Y2hgIGZpbmRzCisgICAgdGVzdHMgYnkgbG9va2luZyBmb3IgbWV0aG9kIG5hbWVzIHRoYXQgc3RhcnQgd2l0aCBgcGF0Y2guVEVTVF9QUkVGSVhgLgorICAgIEJ5IGRlZmF1bHQgdGhpcyBpcyBgdGVzdGAsIHdoaWNoIG1hdGNoZXMgdGhlIHdheSBgdW5pdHRlc3RgIGZpbmRzIHRlc3RzLgorICAgIFlvdSBjYW4gc3BlY2lmeSBhbiBhbHRlcm5hdGl2ZSBwcmVmaXggYnkgc2V0dGluZyBgcGF0Y2guVEVTVF9QUkVGSVhgLgorCisgICAgUGF0Y2ggY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIsIHdpdGggdGhlIHdpdGggc3RhdGVtZW50LiBIZXJlIHRoZQorICAgIHBhdGNoaW5nIGFwcGxpZXMgdG8gdGhlIGluZGVudGVkIGJsb2NrIGFmdGVyIHRoZSB3aXRoIHN0YXRlbWVudC4gSWYgeW91CisgICAgdXNlICJhcyIgdGhlbiB0aGUgcGF0Y2hlZCBvYmplY3Qgd2lsbCBiZSBib3VuZCB0byB0aGUgbmFtZSBhZnRlciB0aGUKKyAgICAiYXMiOyB2ZXJ5IHVzZWZ1bCBpZiBgcGF0Y2hgIGlzIGNyZWF0aW5nIGEgbW9jayBvYmplY3QgZm9yIHlvdS4KKworICAgIGBwYXRjaGAgdGFrZXMgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzLiBUaGVzZSB3aWxsIGJlIHBhc3NlZCB0bworICAgIHRoZSBgTW9ja2AgKG9yIGBuZXdfY2FsbGFibGVgKSBvbiBjb25zdHJ1Y3Rpb24uCisKKyAgICBgcGF0Y2guZGljdCguLi4pYCwgYHBhdGNoLm11bHRpcGxlKC4uLilgIGFuZCBgcGF0Y2gub2JqZWN0KC4uLilgIGFyZQorICAgIGF2YWlsYWJsZSBmb3IgYWx0ZXJuYXRlIHVzZS1jYXNlcy4KKworYHBhdGNoYCBhcyBmdW5jdGlvbiBkZWNvcmF0b3IsIGNyZWF0aW5nIHRoZSBtb2NrIGZvciB5b3UgYW5kIHBhc3NpbmcgaXQgaW50bwordGhlIGRlY29yYXRlZCBmdW5jdGlvbjoKKworICAgID4+PiBAcGF0Y2goJ19fbWFpbl9fLlNvbWVDbGFzcycpCisgICAgLi4uIGRlZiBmdW5jdGlvbihub3JtYWxfYXJndW1lbnQsIG1vY2tfY2xhc3MpOgorICAgIC4uLiAgICAgcHJpbnQobW9ja19jbGFzcyBpcyBTb21lQ2xhc3MpCisgICAgLi4uCisgICAgPj4+IGZ1bmN0aW9uKE5vbmUpCisgICAgVHJ1ZQorCitQYXRjaGluZyBhIGNsYXNzIHJlcGxhY2VzIHRoZSBjbGFzcyB3aXRoIGEgYE1hZ2ljTW9ja2AgKmluc3RhbmNlKi4gSWYgdGhlCitjbGFzcyBpcyBpbnN0YW50aWF0ZWQgaW4gdGhlIGNvZGUgdW5kZXIgdGVzdCB0aGVuIGl0IHdpbGwgYmUgdGhlCis6YXR0cjpgfk1vY2sucmV0dXJuX3ZhbHVlYCBvZiB0aGUgbW9jayB0aGF0IHdpbGwgYmUgdXNlZC4KKworSWYgdGhlIGNsYXNzIGlzIGluc3RhbnRpYXRlZCBtdWx0aXBsZSB0aW1lcyB5b3UgY291bGQgdXNlCis6YXR0cjpgfk1vY2suc2lkZV9lZmZlY3RgIHRvIHJldHVybiBhIG5ldyBtb2NrIGVhY2ggdGltZS4gQWx0ZXJuYXRpdmVseSB5b3UKK2NhbiBzZXQgdGhlIGByZXR1cm5fdmFsdWVgIHRvIGJlIGFueXRoaW5nIHlvdSB3YW50LgorCitUbyBjb25maWd1cmUgcmV0dXJuIHZhbHVlcyBvbiBtZXRob2RzIG9mICppbnN0YW5jZXMqIG9uIHRoZSBwYXRjaGVkIGNsYXNzCit5b3UgbXVzdCBkbyB0aGlzIG9uIHRoZSBgcmV0dXJuX3ZhbHVlYC4gRm9yIGV4YW1wbGU6CisKKyAgICA+Pj4gY2xhc3MgQ2xhc3M6CisgICAgLi4uICAgICBkZWYgbWV0aG9kKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHBhc3MKKyAgICAuLi4KKyAgICA+Pj4gd2l0aCBwYXRjaCgnX19tYWluX18uQ2xhc3MnKSBhcyBNb2NrQ2xhc3M6CisgICAgLi4uICAgICBpbnN0YW5jZSA9IE1vY2tDbGFzcy5yZXR1cm5fdmFsdWUKKyAgICAuLi4gICAgIGluc3RhbmNlLm1ldGhvZC5yZXR1cm5fdmFsdWUgPSAnZm9vJworICAgIC4uLiAgICAgYXNzZXJ0IENsYXNzKCkgaXMgaW5zdGFuY2UKKyAgICAuLi4gICAgIGFzc2VydCBDbGFzcygpLm1ldGhvZCgpID09ICdmb28nCisgICAgLi4uCisKK0lmIHlvdSB1c2UgYHNwZWNgIG9yIGBzcGVjX3NldGAgYW5kIGBwYXRjaGAgaXMgcmVwbGFjaW5nIGEgKmNsYXNzKiwgdGhlbiB0aGUKK3JldHVybiB2YWx1ZSBvZiB0aGUgY3JlYXRlZCBtb2NrIHdpbGwgaGF2ZSB0aGUgc2FtZSBzcGVjLgorCisgICAgPj4+IE9yaWdpbmFsID0gQ2xhc3MKKyAgICA+Pj4gcGF0Y2hlciA9IHBhdGNoKCdfX21haW5fXy5DbGFzcycsIHNwZWM9VHJ1ZSkKKyAgICA+Pj4gTW9ja0NsYXNzID0gcGF0Y2hlci5zdGFydCgpCisgICAgPj4+IGluc3RhbmNlID0gTW9ja0NsYXNzKCkKKyAgICA+Pj4gYXNzZXJ0IGlzaW5zdGFuY2UoaW5zdGFuY2UsIE9yaWdpbmFsKQorICAgID4+PiBwYXRjaGVyLnN0b3AoKQorCitUaGUgYG5ld19jYWxsYWJsZWAgYXJndW1lbnQgaXMgdXNlZnVsIHdoZXJlIHlvdSB3YW50IHRvIHVzZSBhbiBhbHRlcm5hdGl2ZQorY2xhc3MgdG8gdGhlIGRlZmF1bHQgOmNsYXNzOmBNYWdpY01vY2tgIGZvciB0aGUgY3JlYXRlZCBtb2NrLiBGb3IgZXhhbXBsZSwgaWYKK3lvdSB3YW50ZWQgYSA6Y2xhc3M6YE5vbkNhbGxhYmxlTW9ja2AgdG8gYmUgdXNlZDoKKworICAgID4+PiB0aGluZyA9IG9iamVjdCgpCisgICAgPj4+IHdpdGggcGF0Y2goJ19fbWFpbl9fLnRoaW5nJywgbmV3X2NhbGxhYmxlPU5vbkNhbGxhYmxlTW9jaykgYXMgbW9ja190aGluZzoKKyAgICAuLi4gICAgIGFzc2VydCB0aGluZyBpcyBtb2NrX3RoaW5nCisgICAgLi4uICAgICB0aGluZygpCisgICAgLi4uCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiAnTm9uQ2FsbGFibGVNb2NrJyBvYmplY3QgaXMgbm90IGNhbGxhYmxlCisKK0Fub3RoZXIgdXNlIGNhc2UgbWlnaHQgYmUgdG8gcmVwbGFjZSBhbiBvYmplY3Qgd2l0aCBhIGBTdHJpbmdJT2AgaW5zdGFuY2U6CisKKyAgICA+Pj4gZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KKyAgICA+Pj4gZGVmIGZvbygpOgorICAgIC4uLiAgICAgcHJpbnQgJ1NvbWV0aGluZycKKyAgICAuLi4KKyAgICA+Pj4gQHBhdGNoKCdzeXMuc3Rkb3V0JywgbmV3X2NhbGxhYmxlPVN0cmluZ0lPKQorICAgIC4uLiBkZWYgdGVzdChtb2NrX3N0ZG91dCk6CisgICAgLi4uICAgICBmb28oKQorICAgIC4uLiAgICAgYXNzZXJ0IG1vY2tfc3Rkb3V0LmdldHZhbHVlKCkgPT0gJ1NvbWV0aGluZ1xuJworICAgIC4uLgorICAgID4+PiB0ZXN0KCkKKworV2hlbiBgcGF0Y2hgIGlzIGNyZWF0aW5nIGEgbW9jayBmb3IgeW91LCBpdCBpcyBjb21tb24gdGhhdCB0aGUgZmlyc3QgdGhpbmcKK3lvdSBuZWVkIHRvIGRvIGlzIHRvIGNvbmZpZ3VyZSB0aGUgbW9jay4gU29tZSBvZiB0aGF0IGNvbmZpZ3VyYXRpb24gY2FuIGJlIGRvbmUKK2luIHRoZSBjYWxsIHRvIHBhdGNoLiBBbnkgYXJiaXRyYXJ5IGtleXdvcmRzIHlvdSBwYXNzIGludG8gdGhlIGNhbGwgd2lsbCBiZQordXNlZCB0byBzZXQgYXR0cmlidXRlcyBvbiB0aGUgY3JlYXRlZCBtb2NrOgorCisgICAgPj4+IHBhdGNoZXIgPSBwYXRjaCgnX19tYWluX18udGhpbmcnLCBmaXJzdD0nb25lJywgc2Vjb25kPSd0d28nKQorICAgID4+PiBtb2NrX3RoaW5nID0gcGF0Y2hlci5zdGFydCgpCisgICAgPj4+IG1vY2tfdGhpbmcuZmlyc3QKKyAgICAnb25lJworICAgID4+PiBtb2NrX3RoaW5nLnNlY29uZAorICAgICd0d28nCisKK0FzIHdlbGwgYXMgYXR0cmlidXRlcyBvbiB0aGUgY3JlYXRlZCBtb2NrIGF0dHJpYnV0ZXMsIGxpa2UgdGhlCis6YXR0cjpgfk1vY2sucmV0dXJuX3ZhbHVlYCBhbmQgOmF0dHI6YH5Nb2NrLnNpZGVfZWZmZWN0YCwgb2YgY2hpbGQgbW9ja3MgY2FuCithbHNvIGJlIGNvbmZpZ3VyZWQuIFRoZXNlIGFyZW4ndCBzeW50YWN0aWNhbGx5IHZhbGlkIHRvIHBhc3MgaW4gZGlyZWN0bHkgYXMKK2tleXdvcmQgYXJndW1lbnRzLCBidXQgYSBkaWN0aW9uYXJ5IHdpdGggdGhlc2UgYXMga2V5cyBjYW4gc3RpbGwgYmUgZXhwYW5kZWQKK2ludG8gYSBgcGF0Y2hgIGNhbGwgdXNpbmcgYCoqYDoKKworICAgID4+PiBjb25maWcgPSB7J21ldGhvZC5yZXR1cm5fdmFsdWUnOiAzLCAnb3RoZXIuc2lkZV9lZmZlY3QnOiBLZXlFcnJvcn0KKyAgICA+Pj4gcGF0Y2hlciA9IHBhdGNoKCdfX21haW5fXy50aGluZycsICoqY29uZmlnKQorICAgID4+PiBtb2NrX3RoaW5nID0gcGF0Y2hlci5zdGFydCgpCisgICAgPj4+IG1vY2tfdGhpbmcubWV0aG9kKCkKKyAgICAzCisgICAgPj4+IG1vY2tfdGhpbmcub3RoZXIoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIEtleUVycm9yCisKKworcGF0Y2gub2JqZWN0Cit+fn5+fn5+fn5+fn4KKworLi4gZnVuY3Rpb246OiBwYXRjaC5vYmplY3QodGFyZ2V0LCBhdHRyaWJ1dGUsIG5ldz1ERUZBVUxULCBzcGVjPU5vbmUsIGNyZWF0ZT1GYWxzZSwgc3BlY19zZXQ9Tm9uZSwgYXV0b3NwZWM9Tm9uZSwgbmV3X2NhbGxhYmxlPU5vbmUsICoqa3dhcmdzKQorCisgICAgcGF0Y2ggdGhlIG5hbWVkIG1lbWJlciAoYGF0dHJpYnV0ZWApIG9uIGFuIG9iamVjdCAoYHRhcmdldGApIHdpdGggYSBtb2NrCisgICAgb2JqZWN0LgorCisgICAgYHBhdGNoLm9iamVjdGAgY2FuIGJlIHVzZWQgYXMgYSBkZWNvcmF0b3IsIGNsYXNzIGRlY29yYXRvciBvciBhIGNvbnRleHQKKyAgICBtYW5hZ2VyLiBBcmd1bWVudHMgYG5ld2AsIGBzcGVjYCwgYGNyZWF0ZWAsIGBzcGVjX3NldGAsIGBhdXRvc3BlY2AgYW5kCisgICAgYG5ld19jYWxsYWJsZWAgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvciBgcGF0Y2hgLiBMaWtlIGBwYXRjaGAsCisgICAgYHBhdGNoLm9iamVjdGAgdGFrZXMgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzIGZvciBjb25maWd1cmluZyB0aGUgbW9jaworICAgIG9iamVjdCBpdCBjcmVhdGVzLgorCisgICAgV2hlbiB1c2VkIGFzIGEgY2xhc3MgZGVjb3JhdG9yIGBwYXRjaC5vYmplY3RgIGhvbm91cnMgYHBhdGNoLlRFU1RfUFJFRklYYAorICAgIGZvciBjaG9vc2luZyB3aGljaCBtZXRob2RzIHRvIHdyYXAuCisKK1lvdSBjYW4gZWl0aGVyIGNhbGwgYHBhdGNoLm9iamVjdGAgd2l0aCB0aHJlZSBhcmd1bWVudHMgb3IgdHdvIGFyZ3VtZW50cy4gVGhlCit0aHJlZSBhcmd1bWVudCBmb3JtIHRha2VzIHRoZSBvYmplY3QgdG8gYmUgcGF0Y2hlZCwgdGhlIGF0dHJpYnV0ZSBuYW1lIGFuZCB0aGUKK29iamVjdCB0byByZXBsYWNlIHRoZSBhdHRyaWJ1dGUgd2l0aC4KKworV2hlbiBjYWxsaW5nIHdpdGggdGhlIHR3byBhcmd1bWVudCBmb3JtIHlvdSBvbWl0IHRoZSByZXBsYWNlbWVudCBvYmplY3QsIGFuZCBhCittb2NrIGlzIGNyZWF0ZWQgZm9yIHlvdSBhbmQgcGFzc2VkIGluIGFzIGFuIGV4dHJhIGFyZ3VtZW50IHRvIHRoZSBkZWNvcmF0ZWQKK2Z1bmN0aW9uOgorCisgICAgPj4+IEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnY2xhc3NfbWV0aG9kJykKKyAgICAuLi4gZGVmIHRlc3QobW9ja19tZXRob2QpOgorICAgIC4uLiAgICAgU29tZUNsYXNzLmNsYXNzX21ldGhvZCgzKQorICAgIC4uLiAgICAgbW9ja19tZXRob2QuYXNzZXJ0X2NhbGxlZF93aXRoKDMpCisgICAgLi4uCisgICAgPj4+IHRlc3QoKQorCitgc3BlY2AsIGBjcmVhdGVgIGFuZCB0aGUgb3RoZXIgYXJndW1lbnRzIHRvIGBwYXRjaC5vYmplY3RgIGhhdmUgdGhlIHNhbWUKK21lYW5pbmcgYXMgdGhleSBkbyBmb3IgYHBhdGNoYC4KKworCitwYXRjaC5kaWN0Cit+fn5+fn5+fn5+CisKKy4uIGZ1bmN0aW9uOjogcGF0Y2guZGljdChpbl9kaWN0LCB2YWx1ZXM9KCksIGNsZWFyPUZhbHNlLCAqKmt3YXJncykKKworICAgIFBhdGNoIGEgZGljdGlvbmFyeSwgb3IgZGljdGlvbmFyeSBsaWtlIG9iamVjdCwgYW5kIHJlc3RvcmUgdGhlIGRpY3Rpb25hcnkKKyAgICB0byBpdHMgb3JpZ2luYWwgc3RhdGUgYWZ0ZXIgdGhlIHRlc3QuCisKKyAgICBgaW5fZGljdGAgY2FuIGJlIGEgZGljdGlvbmFyeSBvciBhIG1hcHBpbmcgbGlrZSBjb250YWluZXIuIElmIGl0IGlzIGEKKyAgICBtYXBwaW5nIHRoZW4gaXQgbXVzdCBhdCBsZWFzdCBzdXBwb3J0IGdldHRpbmcsIHNldHRpbmcgYW5kIGRlbGV0aW5nIGl0ZW1zCisgICAgcGx1cyBpdGVyYXRpbmcgb3ZlciBrZXlzLgorCisgICAgYGluX2RpY3RgIGNhbiBhbHNvIGJlIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIG5hbWUgb2YgdGhlIGRpY3Rpb25hcnksIHdoaWNoCisgICAgd2lsbCB0aGVuIGJlIGZldGNoZWQgYnkgaW1wb3J0aW5nIGl0LgorCisgICAgYHZhbHVlc2AgY2FuIGJlIGEgZGljdGlvbmFyeSBvZiB2YWx1ZXMgdG8gc2V0IGluIHRoZSBkaWN0aW9uYXJ5LiBgdmFsdWVzYAorICAgIGNhbiBhbHNvIGJlIGFuIGl0ZXJhYmxlIG9mIGAoa2V5LCB2YWx1ZSlgIHBhaXJzLgorCisgICAgSWYgYGNsZWFyYCBpcyBUcnVlIHRoZW4gdGhlIGRpY3Rpb25hcnkgd2lsbCBiZSBjbGVhcmVkIGJlZm9yZSB0aGUgbmV3CisgICAgdmFsdWVzIGFyZSBzZXQuCisKKyAgICBgcGF0Y2guZGljdGAgY2FuIGFsc28gYmUgY2FsbGVkIHdpdGggYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzIHRvIHNldAorICAgIHZhbHVlcyBpbiB0aGUgZGljdGlvbmFyeS4KKworICAgIGBwYXRjaC5kaWN0YCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciwgZGVjb3JhdG9yIG9yIGNsYXNzCisgICAgZGVjb3JhdG9yLiBXaGVuIHVzZWQgYXMgYSBjbGFzcyBkZWNvcmF0b3IgYHBhdGNoLmRpY3RgIGhvbm91cnMKKyAgICBgcGF0Y2guVEVTVF9QUkVGSVhgIGZvciBjaG9vc2luZyB3aGljaCBtZXRob2RzIHRvIHdyYXAuCisKK2BwYXRjaC5kaWN0YCBjYW4gYmUgdXNlZCB0byBhZGQgbWVtYmVycyB0byBhIGRpY3Rpb25hcnksIG9yIHNpbXBseSBsZXQgYSB0ZXN0CitjaGFuZ2UgYSBkaWN0aW9uYXJ5LCBhbmQgZW5zdXJlIHRoZSBkaWN0aW9uYXJ5IGlzIHJlc3RvcmVkIHdoZW4gdGhlIHRlc3QKK2VuZHMuCisKKyAgICA+Pj4gZm9vID0ge30KKyAgICA+Pj4gd2l0aCBwYXRjaC5kaWN0KGZvbywgeyduZXdrZXknOiAnbmV3dmFsdWUnfSk6CisgICAgLi4uICAgICBhc3NlcnQgZm9vID09IHsnbmV3a2V5JzogJ25ld3ZhbHVlJ30KKyAgICAuLi4KKyAgICA+Pj4gYXNzZXJ0IGZvbyA9PSB7fQorCisgICAgPj4+IGltcG9ydCBvcworICAgID4+PiB3aXRoIHBhdGNoLmRpY3QoJ29zLmVudmlyb24nLCB7J25ld2tleSc6ICduZXd2YWx1ZSd9KToKKyAgICAuLi4gICAgIHByaW50IG9zLmVudmlyb25bJ25ld2tleSddCisgICAgLi4uCisgICAgbmV3dmFsdWUKKyAgICA+Pj4gYXNzZXJ0ICduZXdrZXknIG5vdCBpbiBvcy5lbnZpcm9uCisKK0tleXdvcmRzIGNhbiBiZSB1c2VkIGluIHRoZSBgcGF0Y2guZGljdGAgY2FsbCB0byBzZXQgdmFsdWVzIGluIHRoZSBkaWN0aW9uYXJ5OgorCisgICAgPj4+IG15bW9kdWxlID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gbXltb2R1bGUuZnVuY3Rpb24ucmV0dXJuX3ZhbHVlID0gJ2Zpc2gnCisgICAgPj4+IHdpdGggcGF0Y2guZGljdCgnc3lzLm1vZHVsZXMnLCBteW1vZHVsZT1teW1vZHVsZSk6CisgICAgLi4uICAgICBpbXBvcnQgbXltb2R1bGUKKyAgICAuLi4gICAgIG15bW9kdWxlLmZ1bmN0aW9uKCdzb21lJywgJ2FyZ3MnKQorICAgIC4uLgorICAgICdmaXNoJworCitgcGF0Y2guZGljdGAgY2FuIGJlIHVzZWQgd2l0aCBkaWN0aW9uYXJ5IGxpa2Ugb2JqZWN0cyB0aGF0IGFyZW4ndCBhY3R1YWxseQorZGljdGlvbmFyaWVzLiBBdCB0aGUgdmVyeSBtaW5pbXVtIHRoZXkgbXVzdCBzdXBwb3J0IGl0ZW0gZ2V0dGluZywgc2V0dGluZywKK2RlbGV0aW5nIGFuZCBlaXRoZXIgaXRlcmF0aW9uIG9yIG1lbWJlcnNoaXAgdGVzdC4gVGhpcyBjb3JyZXNwb25kcyB0byB0aGUKK21hZ2ljIG1ldGhvZHMgYF9fZ2V0aXRlbV9fYCwgYF9fc2V0aXRlbV9fYCwgYF9fZGVsaXRlbV9fYCBhbmQgZWl0aGVyCitgX19pdGVyX19gIG9yIGBfX2NvbnRhaW5zX19gLgorCisgICAgPj4+IGNsYXNzIENvbnRhaW5lcjoKKyAgICAuLi4gICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLnZhbHVlcyA9IHt9CisgICAgLi4uICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgbmFtZSk6CisgICAgLi4uICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWVzW25hbWVdCisgICAgLi4uICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgIC4uLiAgICAgICAgIHNlbGYudmFsdWVzW25hbWVdID0gdmFsdWUKKyAgICAuLi4gICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBuYW1lKToKKyAgICAuLi4gICAgICAgICBkZWwgc2VsZi52YWx1ZXNbbmFtZV0KKyAgICAuLi4gICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gaXRlcihzZWxmLnZhbHVlcykKKyAgICAuLi4KKyAgICA+Pj4gdGhpbmcgPSBDb250YWluZXIoKQorICAgID4+PiB0aGluZ1snb25lJ10gPSAxCisgICAgPj4+IHdpdGggcGF0Y2guZGljdCh0aGluZywgb25lPTIsIHR3bz0zKToKKyAgICAuLi4gICAgIGFzc2VydCB0aGluZ1snb25lJ10gPT0gMgorICAgIC4uLiAgICAgYXNzZXJ0IHRoaW5nWyd0d28nXSA9PSAzCisgICAgLi4uCisgICAgPj4+IGFzc2VydCB0aGluZ1snb25lJ10gPT0gMQorICAgID4+PiBhc3NlcnQgbGlzdCh0aGluZykgPT0gWydvbmUnXQorCisKK3BhdGNoLm11bHRpcGxlCit+fn5+fn5+fn5+fn5+fgorCisuLiBmdW5jdGlvbjo6IHBhdGNoLm11bHRpcGxlKHRhcmdldCwgc3BlYz1Ob25lLCBjcmVhdGU9RmFsc2UsIHNwZWNfc2V0PU5vbmUsIGF1dG9zcGVjPU5vbmUsIG5ld19jYWxsYWJsZT1Ob25lLCAqKmt3YXJncykKKworICAgIFBlcmZvcm0gbXVsdGlwbGUgcGF0Y2hlcyBpbiBhIHNpbmdsZSBjYWxsLiBJdCB0YWtlcyB0aGUgb2JqZWN0IHRvIGJlCisgICAgcGF0Y2hlZCAoZWl0aGVyIGFzIGFuIG9iamVjdCBvciBhIHN0cmluZyB0byBmZXRjaCB0aGUgb2JqZWN0IGJ5IGltcG9ydGluZykKKyAgICBhbmQga2V5d29yZCBhcmd1bWVudHMgZm9yIHRoZSBwYXRjaGVzOjoKKworICAgICAgICB3aXRoIHBhdGNoLm11bHRpcGxlKHNldHRpbmdzLCBGSVJTVF9QQVRDSD0nb25lJywgU0VDT05EX1BBVENIPSd0d28nKToKKyAgICAgICAgICAgIC4uLgorCisgICAgVXNlIDpkYXRhOmBERUZBVUxUYCBhcyB0aGUgdmFsdWUgaWYgeW91IHdhbnQgYHBhdGNoLm11bHRpcGxlYCB0byBjcmVhdGUKKyAgICBtb2NrcyBmb3IgeW91LiBJbiB0aGlzIGNhc2UgdGhlIGNyZWF0ZWQgbW9ja3MgYXJlIHBhc3NlZCBpbnRvIGEgZGVjb3JhdGVkCisgICAgZnVuY3Rpb24gYnkga2V5d29yZCwgYW5kIGEgZGljdGlvbmFyeSBpcyByZXR1cm5lZCB3aGVuIGBwYXRjaC5tdWx0aXBsZWAgaXMKKyAgICB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgorCisgICAgYHBhdGNoLm11bHRpcGxlYCBjYW4gYmUgdXNlZCBhcyBhIGRlY29yYXRvciwgY2xhc3MgZGVjb3JhdG9yIG9yIGEgY29udGV4dAorICAgIG1hbmFnZXIuIFRoZSBhcmd1bWVudHMgYHNwZWNgLCBgc3BlY19zZXRgLCBgY3JlYXRlYCwgYGF1dG9zcGVjYCBhbmQKKyAgICBgbmV3X2NhbGxhYmxlYCBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yIGBwYXRjaGAuIFRoZXNlIGFyZ3VtZW50cyB3aWxsCisgICAgYmUgYXBwbGllZCB0byAqYWxsKiBwYXRjaGVzIGRvbmUgYnkgYHBhdGNoLm11bHRpcGxlYC4KKworICAgIFdoZW4gdXNlZCBhcyBhIGNsYXNzIGRlY29yYXRvciBgcGF0Y2gubXVsdGlwbGVgIGhvbm91cnMgYHBhdGNoLlRFU1RfUFJFRklYYAorICAgIGZvciBjaG9vc2luZyB3aGljaCBtZXRob2RzIHRvIHdyYXAuCisKK0lmIHlvdSB3YW50IGBwYXRjaC5tdWx0aXBsZWAgdG8gY3JlYXRlIG1vY2tzIGZvciB5b3UsIHRoZW4geW91IGNhbiB1c2UKKzpkYXRhOmBERUZBVUxUYCBhcyB0aGUgdmFsdWUuIElmIHlvdSB1c2UgYHBhdGNoLm11bHRpcGxlYCBhcyBhIGRlY29yYXRvcgordGhlbiB0aGUgY3JlYXRlZCBtb2NrcyBhcmUgcGFzc2VkIGludG8gdGhlIGRlY29yYXRlZCBmdW5jdGlvbiBieSBrZXl3b3JkLgorCisgICAgPj4+IHRoaW5nID0gb2JqZWN0KCkKKyAgICA+Pj4gb3RoZXIgPSBvYmplY3QoKQorCisgICAgPj4+IEBwYXRjaC5tdWx0aXBsZSgnX19tYWluX18nLCB0aGluZz1ERUZBVUxULCBvdGhlcj1ERUZBVUxUKQorICAgIC4uLiBkZWYgdGVzdF9mdW5jdGlvbih0aGluZywgb3RoZXIpOgorICAgIC4uLiAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodGhpbmcsIE1hZ2ljTW9jaykKKyAgICAuLi4gICAgIGFzc2VydCBpc2luc3RhbmNlKG90aGVyLCBNYWdpY01vY2spCisgICAgLi4uCisgICAgPj4+IHRlc3RfZnVuY3Rpb24oKQorCitgcGF0Y2gubXVsdGlwbGVgIGNhbiBiZSBuZXN0ZWQgd2l0aCBvdGhlciBgcGF0Y2hgIGRlY29yYXRvcnMsIGJ1dCBwdXQgYXJndW1lbnRzCitwYXNzZWQgYnkga2V5d29yZCAqYWZ0ZXIqIGFueSBvZiB0aGUgc3RhbmRhcmQgYXJndW1lbnRzIGNyZWF0ZWQgYnkgYHBhdGNoYDoKKworICAgID4+PiBAcGF0Y2goJ3N5cy5leGl0JykKKyAgICAuLi4gQHBhdGNoLm11bHRpcGxlKCdfX21haW5fXycsIHRoaW5nPURFRkFVTFQsIG90aGVyPURFRkFVTFQpCisgICAgLi4uIGRlZiB0ZXN0X2Z1bmN0aW9uKG1vY2tfZXhpdCwgb3RoZXIsIHRoaW5nKToKKyAgICAuLi4gICAgIGFzc2VydCAnb3RoZXInIGluIHJlcHIob3RoZXIpCisgICAgLi4uICAgICBhc3NlcnQgJ3RoaW5nJyBpbiByZXByKHRoaW5nKQorICAgIC4uLiAgICAgYXNzZXJ0ICdleGl0JyBpbiByZXByKG1vY2tfZXhpdCkKKyAgICAuLi4KKyAgICA+Pj4gdGVzdF9mdW5jdGlvbigpCisKK0lmIGBwYXRjaC5tdWx0aXBsZWAgaXMgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciwgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZQorY29udGV4dCBtYW5nZXIgaXMgYSBkaWN0aW9uYXJ5IHdoZXJlIGNyZWF0ZWQgbW9ja3MgYXJlIGtleWVkIGJ5IG5hbWU6CisKKyAgICA+Pj4gd2l0aCBwYXRjaC5tdWx0aXBsZSgnX19tYWluX18nLCB0aGluZz1ERUZBVUxULCBvdGhlcj1ERUZBVUxUKSBhcyB2YWx1ZXM6CisgICAgLi4uICAgICBhc3NlcnQgJ290aGVyJyBpbiByZXByKHZhbHVlc1snb3RoZXInXSkKKyAgICAuLi4gICAgIGFzc2VydCAndGhpbmcnIGluIHJlcHIodmFsdWVzWyd0aGluZyddKQorICAgIC4uLiAgICAgYXNzZXJ0IHZhbHVlc1sndGhpbmcnXSBpcyB0aGluZworICAgIC4uLiAgICAgYXNzZXJ0IHZhbHVlc1snb3RoZXInXSBpcyBvdGhlcgorICAgIC4uLgorCisKKy4uIF9zdGFydC1hbmQtc3RvcDoKKworcGF0Y2ggbWV0aG9kczogc3RhcnQgYW5kIHN0b3AKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0FsbCB0aGUgcGF0Y2hlcnMgaGF2ZSBgc3RhcnRgIGFuZCBgc3RvcGAgbWV0aG9kcy4gVGhlc2UgbWFrZSBpdCBzaW1wbGVyIHRvIGRvCitwYXRjaGluZyBpbiBgc2V0VXBgIG1ldGhvZHMgb3Igd2hlcmUgeW91IHdhbnQgdG8gZG8gbXVsdGlwbGUgcGF0Y2hlcyB3aXRob3V0CituZXN0aW5nIGRlY29yYXRvcnMgb3Igd2l0aCBzdGF0ZW1lbnRzLgorCitUbyB1c2UgdGhlbSBjYWxsIGBwYXRjaGAsIGBwYXRjaC5vYmplY3RgIG9yIGBwYXRjaC5kaWN0YCBhcyBub3JtYWwgYW5kIGtlZXAgYQorcmVmZXJlbmNlIHRvIHRoZSByZXR1cm5lZCBgcGF0Y2hlcmAgb2JqZWN0LiBZb3UgY2FuIHRoZW4gY2FsbCBgc3RhcnRgIHRvIHB1dAordGhlIHBhdGNoIGluIHBsYWNlIGFuZCBgc3RvcGAgdG8gdW5kbyBpdC4KKworSWYgeW91IGFyZSB1c2luZyBgcGF0Y2hgIHRvIGNyZWF0ZSBhIG1vY2sgZm9yIHlvdSB0aGVuIGl0IHdpbGwgYmUgcmV0dXJuZWQgYnkKK3RoZSBjYWxsIHRvIGBwYXRjaGVyLnN0YXJ0YC4KKworICAgID4+PiBwYXRjaGVyID0gcGF0Y2goJ3BhY2thZ2UubW9kdWxlLkNsYXNzTmFtZScpCisgICAgPj4+IGZyb20gcGFja2FnZSBpbXBvcnQgbW9kdWxlCisgICAgPj4+IG9yaWdpbmFsID0gbW9kdWxlLkNsYXNzTmFtZQorICAgID4+PiBuZXdfbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorICAgID4+PiBhc3NlcnQgbW9kdWxlLkNsYXNzTmFtZSBpcyBub3Qgb3JpZ2luYWwKKyAgICA+Pj4gYXNzZXJ0IG1vZHVsZS5DbGFzc05hbWUgaXMgbmV3X21vY2sKKyAgICA+Pj4gcGF0Y2hlci5zdG9wKCkKKyAgICA+Pj4gYXNzZXJ0IG1vZHVsZS5DbGFzc05hbWUgaXMgb3JpZ2luYWwKKyAgICA+Pj4gYXNzZXJ0IG1vZHVsZS5DbGFzc05hbWUgaXMgbm90IG5ld19tb2NrCisKKworQSB0eXBpY2FsIHVzZSBjYXNlIGZvciB0aGlzIG1pZ2h0IGJlIGZvciBkb2luZyBtdWx0aXBsZSBwYXRjaGVzIGluIHRoZSBgc2V0VXBgCittZXRob2Qgb2YgYSBgVGVzdENhc2VgOgorCisgICAgPj4+IGNsYXNzIE15VGVzdChUZXN0Q2FzZSk6CisgICAgLi4uICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5wYXRjaGVyMSA9IHBhdGNoKCdwYWNrYWdlLm1vZHVsZS5DbGFzczEnKQorICAgIC4uLiAgICAgICAgIHNlbGYucGF0Y2hlcjIgPSBwYXRjaCgncGFja2FnZS5tb2R1bGUuQ2xhc3MyJykKKyAgICAuLi4gICAgICAgICBzZWxmLk1vY2tDbGFzczEgPSBzZWxmLnBhdGNoZXIxLnN0YXJ0KCkKKyAgICAuLi4gICAgICAgICBzZWxmLk1vY2tDbGFzczIgPSBzZWxmLnBhdGNoZXIyLnN0YXJ0KCkKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLnBhdGNoZXIxLnN0b3AoKQorICAgIC4uLiAgICAgICAgIHNlbGYucGF0Y2hlcjIuc3RvcCgpCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVzdF9zb21ldGhpbmcoc2VsZik6CisgICAgLi4uICAgICAgICAgYXNzZXJ0IHBhY2thZ2UubW9kdWxlLkNsYXNzMSBpcyBzZWxmLk1vY2tDbGFzczEKKyAgICAuLi4gICAgICAgICBhc3NlcnQgcGFja2FnZS5tb2R1bGUuQ2xhc3MyIGlzIHNlbGYuTW9ja0NsYXNzMgorICAgIC4uLgorICAgID4+PiBNeVRlc3QoJ3Rlc3Rfc29tZXRoaW5nJykucnVuKCkKKworLi4gY2F1dGlvbjo6CisKKyAgICBJZiB5b3UgdXNlIHRoaXMgdGVjaG5pcXVlIHlvdSBtdXN0IGVuc3VyZSB0aGF0IHRoZSBwYXRjaGluZyBpcyAidW5kb25lIiBieQorICAgIGNhbGxpbmcgYHN0b3BgLiBUaGlzIGNhbiBiZSBmaWRkbGllciB0aGFuIHlvdSBtaWdodCB0aGluaywgYmVjYXVzZSBpZiBhbgorICAgIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW4gdGhlIGBgc2V0VXBgYCB0aGVuIGBgdGVhckRvd25gYCBpcyBub3QgY2FsbGVkLgorICAgIDptZXRoOmB1bml0dGVzdC5UZXN0Q2FzZS5hZGRDbGVhbnVwYCBtYWtlcyB0aGlzIGVhc2llcjoKKworICAgICAgICA+Pj4gY2xhc3MgTXlUZXN0KFRlc3RDYXNlKToKKyAgICAgICAgLi4uICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIC4uLiAgICAgICAgIHBhdGNoZXIgPSBwYXRjaCgncGFja2FnZS5tb2R1bGUuQ2xhc3MnKQorICAgICAgICAuLi4gICAgICAgICBzZWxmLk1vY2tDbGFzcyA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICAuLi4gICAgICAgICBzZWxmLmFkZENsZWFudXAocGF0Y2hlci5zdG9wKQorICAgICAgICAuLi4KKyAgICAgICAgLi4uICAgICBkZWYgdGVzdF9zb21ldGhpbmcoc2VsZik6CisgICAgICAgIC4uLiAgICAgICAgIGFzc2VydCBwYWNrYWdlLm1vZHVsZS5DbGFzcyBpcyBzZWxmLk1vY2tDbGFzcworICAgICAgICAuLi4KKworICAgIEFzIGFuIGFkZGVkIGJvbnVzIHlvdSBubyBsb25nZXIgbmVlZCB0byBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBgcGF0Y2hlcmAKKyAgICBvYmplY3QuCisKK0l0IGlzIGFsc28gcG9zc2libGUgdG8gc3RvcCBhbGwgcGF0Y2hlcyB3aGljaCBoYXZlIGJlZW4gc3RhcnRlZCBieSB1c2luZworYHBhdGNoLnN0b3BhbGxgLgorCisuLiBmdW5jdGlvbjo6IHBhdGNoLnN0b3BhbGwKKworICAgIFN0b3AgYWxsIGFjdGl2ZSBwYXRjaGVzLiBPbmx5IHN0b3BzIHBhdGNoZXMgc3RhcnRlZCB3aXRoIGBzdGFydGAuCisKKworVEVTVF9QUkVGSVgKK35+fn5+fn5+fn5+CisKK0FsbCBvZiB0aGUgcGF0Y2hlcnMgY2FuIGJlIHVzZWQgYXMgY2xhc3MgZGVjb3JhdG9ycy4gV2hlbiB1c2VkIGluIHRoaXMgd2F5Cit0aGV5IHdyYXAgZXZlcnkgdGVzdCBtZXRob2Qgb24gdGhlIGNsYXNzLiBUaGUgcGF0Y2hlcnMgcmVjb2duaXNlIG1ldGhvZHMgdGhhdAorc3RhcnQgd2l0aCBgdGVzdGAgYXMgYmVpbmcgdGVzdCBtZXRob2RzLiBUaGlzIGlzIHRoZSBzYW1lIHdheSB0aGF0IHRoZQorOmNsYXNzOmB1bml0dGVzdC5UZXN0TG9hZGVyYCBmaW5kcyB0ZXN0IG1ldGhvZHMgYnkgZGVmYXVsdC4KKworSXQgaXMgcG9zc2libGUgdGhhdCB5b3Ugd2FudCB0byB1c2UgYSBkaWZmZXJlbnQgcHJlZml4IGZvciB5b3VyIHRlc3RzLiBZb3UgY2FuCitpbmZvcm0gdGhlIHBhdGNoZXJzIG9mIHRoZSBkaWZmZXJlbnQgcHJlZml4IGJ5IHNldHRpbmcgYHBhdGNoLlRFU1RfUFJFRklYYDoKKworICAgID4+PiBwYXRjaC5URVNUX1BSRUZJWCA9ICdmb28nCisgICAgPj4+IHZhbHVlID0gMworICAgID4+PgorICAgID4+PiBAcGF0Y2goJ19fbWFpbl9fLnZhbHVlJywgJ25vdCB0aHJlZScpCisgICAgLi4uIGNsYXNzIFRoaW5nOgorICAgIC4uLiAgICAgZGVmIGZvb19vbmUoc2VsZik6CisgICAgLi4uICAgICAgICAgcHJpbnQgdmFsdWUKKyAgICAuLi4gICAgIGRlZiBmb29fdHdvKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHByaW50IHZhbHVlCisgICAgLi4uCisgICAgPj4+CisgICAgPj4+IFRoaW5nKCkuZm9vX29uZSgpCisgICAgbm90IHRocmVlCisgICAgPj4+IFRoaW5nKCkuZm9vX3R3bygpCisgICAgbm90IHRocmVlCisgICAgPj4+IHZhbHVlCisgICAgMworCisKK05lc3RpbmcgUGF0Y2ggRGVjb3JhdG9ycworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0lmIHlvdSB3YW50IHRvIHBlcmZvcm0gbXVsdGlwbGUgcGF0Y2hlcyB0aGVuIHlvdSBjYW4gc2ltcGx5IHN0YWNrIHVwIHRoZQorZGVjb3JhdG9ycy4KKworWW91IGNhbiBzdGFjayB1cCBtdWx0aXBsZSBwYXRjaCBkZWNvcmF0b3JzIHVzaW5nIHRoaXMgcGF0dGVybjoKKworICAgID4+PiBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ2NsYXNzX21ldGhvZCcpCisgICAgLi4uIEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnc3RhdGljX21ldGhvZCcpCisgICAgLi4uIGRlZiB0ZXN0KG1vY2sxLCBtb2NrMik6CisgICAgLi4uICAgICBhc3NlcnQgU29tZUNsYXNzLnN0YXRpY19tZXRob2QgaXMgbW9jazEKKyAgICAuLi4gICAgIGFzc2VydCBTb21lQ2xhc3MuY2xhc3NfbWV0aG9kIGlzIG1vY2syCisgICAgLi4uICAgICBTb21lQ2xhc3Muc3RhdGljX21ldGhvZCgnZm9vJykKKyAgICAuLi4gICAgIFNvbWVDbGFzcy5jbGFzc19tZXRob2QoJ2JhcicpCisgICAgLi4uICAgICByZXR1cm4gbW9jazEsIG1vY2syCisgICAgLi4uCisgICAgPj4+IG1vY2sxLCBtb2NrMiA9IHRlc3QoKQorICAgID4+PiBtb2NrMS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnZm9vJykKKyAgICA+Pj4gbW9jazIuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2JhcicpCisKKworTm90ZSB0aGF0IHRoZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkIGZyb20gdGhlIGJvdHRvbSB1cHdhcmRzLiBUaGlzIGlzIHRoZQorc3RhbmRhcmQgd2F5IHRoYXQgUHl0aG9uIGFwcGxpZXMgZGVjb3JhdG9ycy4gVGhlIG9yZGVyIG9mIHRoZSBjcmVhdGVkIG1vY2tzCitwYXNzZWQgaW50byB5b3VyIHRlc3QgZnVuY3Rpb24gbWF0Y2hlcyB0aGlzIG9yZGVyLgorCisKKy4uIF93aGVyZS10by1wYXRjaDoKKworV2hlcmUgdG8gcGF0Y2gKK35+fn5+fn5+fn5+fn5+CisKK2BwYXRjaGAgd29ya3MgYnkgKHRlbXBvcmFyaWx5KSBjaGFuZ2luZyB0aGUgb2JqZWN0IHRoYXQgYSAqbmFtZSogcG9pbnRzIHRvIHdpdGgKK2Fub3RoZXIgb25lLiBUaGVyZSBjYW4gYmUgbWFueSBuYW1lcyBwb2ludGluZyB0byBhbnkgaW5kaXZpZHVhbCBvYmplY3QsIHNvCitmb3IgcGF0Y2hpbmcgdG8gd29yayB5b3UgbXVzdCBlbnN1cmUgdGhhdCB5b3UgcGF0Y2ggdGhlIG5hbWUgdXNlZCBieSB0aGUgc3lzdGVtCit1bmRlciB0ZXN0LgorCitUaGUgYmFzaWMgcHJpbmNpcGxlIGlzIHRoYXQgeW91IHBhdGNoIHdoZXJlIGFuIG9iamVjdCBpcyAqbG9va2VkIHVwKiwgd2hpY2gKK2lzIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBwbGFjZSBhcyB3aGVyZSBpdCBpcyBkZWZpbmVkLiBBIGNvdXBsZSBvZgorZXhhbXBsZXMgd2lsbCBoZWxwIHRvIGNsYXJpZnkgdGhpcy4KKworSW1hZ2luZSB3ZSBoYXZlIGEgcHJvamVjdCB0aGF0IHdlIHdhbnQgdG8gdGVzdCB3aXRoIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOjoKKworICAgIGEucHkKKyAgICAgICAgLT4gRGVmaW5lcyBTb21lQ2xhc3MKKworICAgIGIucHkKKyAgICAgICAgLT4gZnJvbSBhIGltcG9ydCBTb21lQ2xhc3MKKyAgICAgICAgLT4gc29tZV9mdW5jdGlvbiBpbnN0YW50aWF0ZXMgU29tZUNsYXNzCisKK05vdyB3ZSB3YW50IHRvIHRlc3QgYHNvbWVfZnVuY3Rpb25gIGJ1dCB3ZSB3YW50IHRvIG1vY2sgb3V0IGBTb21lQ2xhc3NgIHVzaW5nCitgcGF0Y2hgLiBUaGUgcHJvYmxlbSBpcyB0aGF0IHdoZW4gd2UgaW1wb3J0IG1vZHVsZSBiLCB3aGljaCB3ZSB3aWxsIGhhdmUgdG8KK2RvIHRoZW4gaXQgaW1wb3J0cyBgU29tZUNsYXNzYCBmcm9tIG1vZHVsZSBhLiBJZiB3ZSB1c2UgYHBhdGNoYCB0byBtb2NrIG91dAorYGEuU29tZUNsYXNzYCB0aGVuIGl0IHdpbGwgaGF2ZSBubyBlZmZlY3Qgb24gb3VyIHRlc3Q7IG1vZHVsZSBiIGFscmVhZHkgaGFzIGEKK3JlZmVyZW5jZSB0byB0aGUgKnJlYWwqIGBTb21lQ2xhc3NgIGFuZCBpdCBsb29rcyBsaWtlIG91ciBwYXRjaGluZyBoYWQgbm8KK2VmZmVjdC4KKworVGhlIGtleSBpcyB0byBwYXRjaCBvdXQgYFNvbWVDbGFzc2Agd2hlcmUgaXQgaXMgdXNlZCAob3Igd2hlcmUgaXQgaXMgbG9va2VkIHVwCispLiBJbiB0aGlzIGNhc2UgYHNvbWVfZnVuY3Rpb25gIHdpbGwgYWN0dWFsbHkgbG9vayB1cCBgU29tZUNsYXNzYCBpbiBtb2R1bGUgYiwKK3doZXJlIHdlIGhhdmUgaW1wb3J0ZWQgaXQuIFRoZSBwYXRjaGluZyBzaG91bGQgbG9vayBsaWtlOjoKKworICAgIEBwYXRjaCgnYi5Tb21lQ2xhc3MnKQorCitIb3dldmVyLCBjb25zaWRlciB0aGUgYWx0ZXJuYXRpdmUgc2NlbmFyaW8gd2hlcmUgaW5zdGVhZCBvZiBgZnJvbSBhIGltcG9ydAorU29tZUNsYXNzYCBtb2R1bGUgYiBkb2VzIGBpbXBvcnQgYWAgYW5kIGBzb21lX2Z1bmN0aW9uYCB1c2VzIGBhLlNvbWVDbGFzc2AuIEJvdGgKK29mIHRoZXNlIGltcG9ydCBmb3JtcyBhcmUgY29tbW9uLiBJbiB0aGlzIGNhc2UgdGhlIGNsYXNzIHdlIHdhbnQgdG8gcGF0Y2ggaXMKK2JlaW5nIGxvb2tlZCB1cCBvbiB0aGUgYSBtb2R1bGUgYW5kIHNvIHdlIGhhdmUgdG8gcGF0Y2ggYGEuU29tZUNsYXNzYCBpbnN0ZWFkOjoKKworICAgIEBwYXRjaCgnYS5Tb21lQ2xhc3MnKQorCisKK1BhdGNoaW5nIERlc2NyaXB0b3JzIGFuZCBQcm94eSBPYmplY3RzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitCb3RoIHBhdGNoXyBhbmQgcGF0Y2gub2JqZWN0XyBjb3JyZWN0bHkgcGF0Y2ggYW5kIHJlc3RvcmUgZGVzY3JpcHRvcnM6IGNsYXNzCittZXRob2RzLCBzdGF0aWMgbWV0aG9kcyBhbmQgcHJvcGVydGllcy4gWW91IHNob3VsZCBwYXRjaCB0aGVzZSBvbiB0aGUgKmNsYXNzKgorcmF0aGVyIHRoYW4gYW4gaW5zdGFuY2UuIFRoZXkgYWxzbyB3b3JrIHdpdGggKnNvbWUqIG9iamVjdHMKK3RoYXQgcHJveHkgYXR0cmlidXRlIGFjY2VzcywgbGlrZSB0aGUgYGRqYW5nbyBzZXR0dGluZ3Mgb2JqZWN0Cis8aHR0cDovL3d3dy52b2lkc3BhY2Uub3JnLnVrL3B5dGhvbi93ZWJsb2cvYXJjaF9kN18yMDEwXzEyXzA0LnNodG1sI2UxMTk4PmBfLgorCisKK01hZ2ljTW9jayBhbmQgbWFnaWMgbWV0aG9kIHN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gX21hZ2ljLW1ldGhvZHM6CisKK01vY2tpbmcgTWFnaWMgTWV0aG9kcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKzpjbGFzczpgTW9ja2Agc3VwcG9ydHMgbW9ja2luZyB0aGUgUHl0aG9uIHByb3RvY29sIG1ldGhvZHMsIGFsc28ga25vd24gYXMKKyJtYWdpYyBtZXRob2RzIi4gVGhpcyBhbGxvd3MgbW9jayBvYmplY3RzIHRvIHJlcGxhY2UgY29udGFpbmVycyBvciBvdGhlcgorb2JqZWN0cyB0aGF0IGltcGxlbWVudCBQeXRob24gcHJvdG9jb2xzLgorCitCZWNhdXNlIG1hZ2ljIG1ldGhvZHMgYXJlIGxvb2tlZCB1cCBkaWZmZXJlbnRseSBmcm9tIG5vcm1hbCBtZXRob2RzIFsjXV8sIHRoaXMKK3N1cHBvcnQgaGFzIGJlZW4gc3BlY2lhbGx5IGltcGxlbWVudGVkLiBUaGlzIG1lYW5zIHRoYXQgb25seSBzcGVjaWZpYyBtYWdpYworbWV0aG9kcyBhcmUgc3VwcG9ydGVkLiBUaGUgc3VwcG9ydGVkIGxpc3QgaW5jbHVkZXMgKmFsbW9zdCogYWxsIG9mIHRoZW0uIElmCit0aGVyZSBhcmUgYW55IG1pc3NpbmcgdGhhdCB5b3UgbmVlZCBwbGVhc2UgbGV0IHVzIGtub3cuCisKK1lvdSBtb2NrIG1hZ2ljIG1ldGhvZHMgYnkgc2V0dGluZyB0aGUgbWV0aG9kIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiB0byBhIGZ1bmN0aW9uCitvciBhIG1vY2sgaW5zdGFuY2UuIElmIHlvdSBhcmUgdXNpbmcgYSBmdW5jdGlvbiB0aGVuIGl0ICptdXN0KiB0YWtlIGBgc2VsZmBgIGFzCit0aGUgZmlyc3QgYXJndW1lbnQgWyNdXy4KKworICAgPj4+IGRlZiBfX3N0cl9fKHNlbGYpOgorICAgLi4uICAgICByZXR1cm4gJ2Zvb2JsZScKKyAgIC4uLgorICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgID4+PiBtb2NrLl9fc3RyX18gPSBfX3N0cl9fCisgICA+Pj4gc3RyKG1vY2spCisgICAnZm9vYmxlJworCisgICA+Pj4gbW9jayA9IE1vY2soKQorICAgPj4+IG1vY2suX19zdHJfXyA9IE1vY2soKQorICAgPj4+IG1vY2suX19zdHJfXy5yZXR1cm5fdmFsdWUgPSAnZm9vYmxlJworICAgPj4+IHN0cihtb2NrKQorICAgJ2Zvb2JsZScKKworICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgID4+PiBtb2NrLl9faXRlcl9fID0gTW9jayhyZXR1cm5fdmFsdWU9aXRlcihbXSkpCisgICA+Pj4gbGlzdChtb2NrKQorICAgW10KKworT25lIHVzZSBjYXNlIGZvciB0aGlzIGlzIGZvciBtb2NraW5nIG9iamVjdHMgdXNlZCBhcyBjb250ZXh0IG1hbmFnZXJzIGluIGEKK2B3aXRoYCBzdGF0ZW1lbnQ6CisKKyAgID4+PiBtb2NrID0gTW9jaygpCisgICA+Pj4gbW9jay5fX2VudGVyX18gPSBNb2NrKHJldHVybl92YWx1ZT0nZm9vJykKKyAgID4+PiBtb2NrLl9fZXhpdF9fID0gTW9jayhyZXR1cm5fdmFsdWU9RmFsc2UpCisgICA+Pj4gd2l0aCBtb2NrIGFzIG06CisgICAuLi4gICAgIGFzc2VydCBtID09ICdmb28nCisgICAuLi4KKyAgID4+PiBtb2NrLl9fZW50ZXJfXy5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgPj4+IG1vY2suX19leGl0X18uYXNzZXJ0X2NhbGxlZF93aXRoKE5vbmUsIE5vbmUsIE5vbmUpCisKK0NhbGxzIHRvIG1hZ2ljIG1ldGhvZHMgZG8gbm90IGFwcGVhciBpbiA6YXR0cjpgfk1vY2subWV0aG9kX2NhbGxzYCwgYnV0IHRoZXkKK2FyZSByZWNvcmRlZCBpbiA6YXR0cjpgfk1vY2subW9ja19jYWxsc2AuCisKKy4uIG5vdGU6OgorCisgICBJZiB5b3UgdXNlIHRoZSBgc3BlY2Aga2V5d29yZCBhcmd1bWVudCB0byBjcmVhdGUgYSBtb2NrIHRoZW4gYXR0ZW1wdGluZyB0bworICAgc2V0IGEgbWFnaWMgbWV0aG9kIHRoYXQgaXNuJ3QgaW4gdGhlIHNwZWMgd2lsbCByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgLgorCitUaGUgZnVsbCBsaXN0IG9mIHN1cHBvcnRlZCBtYWdpYyBtZXRob2RzIGlzOgorCisqIGBgX19oYXNoX19gYCwgYGBfX3NpemVvZl9fYGAsIGBgX19yZXByX19gYCBhbmQgYGBfX3N0cl9fYGAKKyogYGBfX2Rpcl9fYGAsIGBgX19mb3JtYXRfX2BgIGFuZCBgYF9fc3ViY2xhc3Nlc19fYGAKKyogYGBfX2Zsb29yX19gYCwgYGBfX3RydW5jX19gYCBhbmQgYGBfX2NlaWxfX2BgCisqIENvbXBhcmlzb25zOiBgYF9fY21wX19gYCwgYGBfX2x0X19gYCwgYGBfX2d0X19gYCwgYGBfX2xlX19gYCwgYGBfX2dlX19gYCwKKyAgYGBfX2VxX19gYCBhbmQgYGBfX25lX19gYAorKiBDb250YWluZXIgbWV0aG9kczogYGBfX2dldGl0ZW1fX2BgLCBgYF9fc2V0aXRlbV9fYGAsIGBgX19kZWxpdGVtX19gYCwKKyAgYGBfX2NvbnRhaW5zX19gYCwgYGBfX2xlbl9fYGAsIGBgX19pdGVyX19gYCwgYGBfX2dldHNsaWNlX19gYCwKKyAgYGBfX3NldHNsaWNlX19gYCwgYGBfX3JldmVyc2VkX19gYCBhbmQgYGBfX21pc3NpbmdfX2BgCisqIENvbnRleHQgbWFuYWdlcjogYGBfX2VudGVyX19gYCBhbmQgYGBfX2V4aXRfX2BgCisqIFVuYXJ5IG51bWVyaWMgbWV0aG9kczogYGBfX25lZ19fYGAsIGBgX19wb3NfX2BgIGFuZCBgYF9faW52ZXJ0X19gYAorKiBUaGUgbnVtZXJpYyBtZXRob2RzIChpbmNsdWRpbmcgcmlnaHQgaGFuZCBhbmQgaW4tcGxhY2UgdmFyaWFudHMpOgorICBgYF9fYWRkX19gYCwgYGBfX3N1Yl9fYGAsIGBgX19tdWxfX2BgLCBgYF9fZGl2X19gYCwKKyAgYGBfX2Zsb29yZGl2X19gYCwgYGBfX21vZF9fYGAsIGBgX19kaXZtb2RfX2BgLCBgYF9fbHNoaWZ0X19gYCwKKyAgYGBfX3JzaGlmdF9fYGAsIGBgX19hbmRfX2BgLCBgYF9feG9yX19gYCwgYGBfX29yX19gYCwgYW5kIGBgX19wb3dfX2BgCisqIE51bWVyaWMgY29udmVyc2lvbiBtZXRob2RzOiBgYF9fY29tcGxleF9fYGAsIGBgX19pbnRfX2BgLCBgYF9fZmxvYXRfX2BgLAorICBgYF9faW5kZXhfX2BgIGFuZCBgYF9fY29lcmNlX19gYAorKiBEZXNjcmlwdG9yIG1ldGhvZHM6IGBgX19nZXRfX2BgLCBgYF9fc2V0X19gYCBhbmQgYGBfX2RlbGV0ZV9fYGAKKyogUGlja2xpbmc6IGBgX19yZWR1Y2VfX2BgLCBgYF9fcmVkdWNlX2V4X19gYCwgYGBfX2dldGluaXRhcmdzX19gYCwKKyAgYGBfX2dldG5ld2FyZ3NfX2BgLCBgYF9fZ2V0c3RhdGVfX2BgIGFuZCBgYF9fc2V0c3RhdGVfX2BgCisKKworVGhlIGZvbGxvd2luZyBtZXRob2RzIGV4aXN0IGJ1dCBhcmUgKm5vdCogc3VwcG9ydGVkIGFzIHRoZXkgYXJlIGVpdGhlciBpbiB1c2UKK2J5IG1vY2ssIGNhbid0IGJlIHNldCBkeW5hbWljYWxseSwgb3IgY2FuIGNhdXNlIHByb2JsZW1zOgorCisqIGBgX19nZXRhdHRyX19gYCwgYGBfX3NldGF0dHJfX2BgLCBgYF9faW5pdF9fYGAgYW5kIGBgX19uZXdfX2BgCisqIGBgX19wcmVwYXJlX19gYCwgYGBfX2luc3RhbmNlY2hlY2tfX2BgLCBgYF9fc3ViY2xhc3NjaGVja19fYGAsIGBgX19kZWxfX2BgCisKKworCitNYWdpYyBNb2NrCit+fn5+fn5+fn5+CisKK1RoZXJlIGFyZSB0d28gYE1hZ2ljTW9ja2AgdmFyaWFudHM6IGBNYWdpY01vY2tgIGFuZCBgTm9uQ2FsbGFibGVNYWdpY01vY2tgLgorCisKKy4uIGNsYXNzOjogTWFnaWNNb2NrKCphcmdzLCAqKmt3KQorCisgICBgYE1hZ2ljTW9ja2BgIGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBNb2NrYCB3aXRoIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zCisgICBvZiBtb3N0IG9mIHRoZSBtYWdpYyBtZXRob2RzLiBZb3UgY2FuIHVzZSBgYE1hZ2ljTW9ja2BgIHdpdGhvdXQgaGF2aW5nIHRvCisgICBjb25maWd1cmUgdGhlIG1hZ2ljIG1ldGhvZHMgeW91cnNlbGYuCisKKyAgIFRoZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IgOmNsYXNzOmBNb2NrYC4KKworICAgSWYgeW91IHVzZSB0aGUgYHNwZWNgIG9yIGBzcGVjX3NldGAgYXJndW1lbnRzIHRoZW4gKm9ubHkqIG1hZ2ljIG1ldGhvZHMKKyAgIHRoYXQgZXhpc3QgaW4gdGhlIHNwZWMgd2lsbCBiZSBjcmVhdGVkLgorCisKKy4uIGNsYXNzOjogTm9uQ2FsbGFibGVNYWdpY01vY2soKmFyZ3MsICoqa3cpCisKKyAgICBBIG5vbi1jYWxsYWJsZSB2ZXJzaW9uIG9mIGBNYWdpY01vY2tgLgorCisgICAgVGhlIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvcgorICAgIDpjbGFzczpgTWFnaWNNb2NrYCwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIGByZXR1cm5fdmFsdWVgIGFuZAorICAgIGBzaWRlX2VmZmVjdGAgd2hpY2ggaGF2ZSBubyBtZWFuaW5nIG9uIGEgbm9uLWNhbGxhYmxlIG1vY2suCisKK1RoZSBtYWdpYyBtZXRob2RzIGFyZSBzZXR1cCB3aXRoIGBNYWdpY01vY2tgIG9iamVjdHMsIHNvIHlvdSBjYW4gY29uZmlndXJlIHRoZW0KK2FuZCB1c2UgdGhlbSBpbiB0aGUgdXN1YWwgd2F5OgorCisgICA+Pj4gbW9jayA9IE1hZ2ljTW9jaygpCisgICA+Pj4gbW9ja1szXSA9ICdmaXNoJworICAgPj4+IG1vY2suX19zZXRpdGVtX18uYXNzZXJ0X2NhbGxlZF93aXRoKDMsICdmaXNoJykKKyAgID4+PiBtb2NrLl9fZ2V0aXRlbV9fLnJldHVybl92YWx1ZSA9ICdyZXN1bHQnCisgICA+Pj4gbW9ja1syXQorICAgJ3Jlc3VsdCcKKworQnkgZGVmYXVsdCBtYW55IG9mIHRoZSBwcm90b2NvbCBtZXRob2RzIGFyZSByZXF1aXJlZCB0byByZXR1cm4gb2JqZWN0cyBvZiBhCitzcGVjaWZpYyB0eXBlLiBUaGVzZSBtZXRob2RzIGFyZSBwcmVjb25maWd1cmVkIHdpdGggYSBkZWZhdWx0IHJldHVybiB2YWx1ZSwgc28KK3RoYXQgdGhleSBjYW4gYmUgdXNlZCB3aXRob3V0IHlvdSBoYXZpbmcgdG8gZG8gYW55dGhpbmcgaWYgeW91IGFyZW4ndCBpbnRlcmVzdGVkCitpbiB0aGUgcmV0dXJuIHZhbHVlLiBZb3UgY2FuIHN0aWxsICpzZXQqIHRoZSByZXR1cm4gdmFsdWUgbWFudWFsbHkgaWYgeW91IHdhbnQKK3RvIGNoYW5nZSB0aGUgZGVmYXVsdC4KKworTWV0aG9kcyBhbmQgdGhlaXIgZGVmYXVsdHM6CisKKyogYGBfX2x0X19gYDogTm90SW1wbGVtZW50ZWQKKyogYGBfX2d0X19gYDogTm90SW1wbGVtZW50ZWQKKyogYGBfX2xlX19gYDogTm90SW1wbGVtZW50ZWQKKyogYGBfX2dlX19gYDogTm90SW1wbGVtZW50ZWQKKyogYGBfX2ludF9fYGAgOiAxCisqIGBgX19jb250YWluc19fYGAgOiBGYWxzZQorKiBgYF9fbGVuX19gYCA6IDEKKyogYGBfX2l0ZXJfX2BgIDogaXRlcihbXSkKKyogYGBfX2V4aXRfX2BgIDogRmFsc2UKKyogYGBfX2NvbXBsZXhfX2BgIDogMWoKKyogYGBfX2Zsb2F0X19gYCA6IDEuMAorKiBgYF9fYm9vbF9fYGAgOiBUcnVlCisqIGBgX19pbmRleF9fYGAgOiAxCisqIGBgX19oYXNoX19gYCA6IGRlZmF1bHQgaGFzaCBmb3IgdGhlIG1vY2sKKyogYGBfX3N0cl9fYGAgOiBkZWZhdWx0IHN0ciBmb3IgdGhlIG1vY2sKKyogYGBfX3NpemVvZl9fYGA6IGRlZmF1bHQgc2l6ZW9mIGZvciB0aGUgbW9jaworCitGb3IgZXhhbXBsZToKKworICAgPj4+IG1vY2sgPSBNYWdpY01vY2soKQorICAgPj4+IGludChtb2NrKQorICAgMQorICAgPj4+IGxlbihtb2NrKQorICAgMAorICAgPj4+IGxpc3QobW9jaykKKyAgIFtdCisgICA+Pj4gb2JqZWN0KCkgaW4gbW9jaworICAgRmFsc2UKKworVGhlIHR3byBlcXVhbGl0eSBtZXRob2QsIGBfX2VxX19gIGFuZCBgX19uZV9fYCwgYXJlIHNwZWNpYWwuCitUaGV5IGRvIHRoZSBkZWZhdWx0IGVxdWFsaXR5IGNvbXBhcmlzb24gb24gaWRlbnRpdHksIHVzaW5nIGEgc2lkZQorZWZmZWN0LCB1bmxlc3MgeW91IGNoYW5nZSB0aGVpciByZXR1cm4gdmFsdWUgdG8gcmV0dXJuIHNvbWV0aGluZyBlbHNlOgorCisgICA+Pj4gTWFnaWNNb2NrKCkgPT0gMworICAgRmFsc2UKKyAgID4+PiBNYWdpY01vY2soKSAhPSAzCisgICBUcnVlCisgICA+Pj4gbW9jayA9IE1hZ2ljTW9jaygpCisgICA+Pj4gbW9jay5fX2VxX18ucmV0dXJuX3ZhbHVlID0gVHJ1ZQorICAgPj4+IG1vY2sgPT0gMworICAgVHJ1ZQorCitUaGUgcmV0dXJuIHZhbHVlIG9mIGBNYWdpY01vY2suX19pdGVyX19gIGNhbiBiZSBhbnkgaXRlcmFibGUgb2JqZWN0IGFuZCBpc24ndAorcmVxdWlyZWQgdG8gYmUgYW4gaXRlcmF0b3I6CisKKyAgID4+PiBtb2NrID0gTWFnaWNNb2NrKCkKKyAgID4+PiBtb2NrLl9faXRlcl9fLnJldHVybl92YWx1ZSA9IFsnYScsICdiJywgJ2MnXQorICAgPj4+IGxpc3QobW9jaykKKyAgIFsnYScsICdiJywgJ2MnXQorICAgPj4+IGxpc3QobW9jaykKKyAgIFsnYScsICdiJywgJ2MnXQorCitJZiB0aGUgcmV0dXJuIHZhbHVlICppcyogYW4gaXRlcmF0b3IsIHRoZW4gaXRlcmF0aW5nIG92ZXIgaXQgb25jZSB3aWxsIGNvbnN1bWUKK2l0IGFuZCBzdWJzZXF1ZW50IGl0ZXJhdGlvbnMgd2lsbCByZXN1bHQgaW4gYW4gZW1wdHkgbGlzdDoKKworICAgPj4+IG1vY2suX19pdGVyX18ucmV0dXJuX3ZhbHVlID0gaXRlcihbJ2EnLCAnYicsICdjJ10pCisgICA+Pj4gbGlzdChtb2NrKQorICAgWydhJywgJ2InLCAnYyddCisgICA+Pj4gbGlzdChtb2NrKQorICAgW10KKworYGBNYWdpY01vY2tgYCBoYXMgYWxsIG9mIHRoZSBzdXBwb3J0ZWQgbWFnaWMgbWV0aG9kcyBjb25maWd1cmVkIGV4Y2VwdCBmb3Igc29tZQorb2YgdGhlIG9ic2N1cmUgYW5kIG9ic29sZXRlIG9uZXMuIFlvdSBjYW4gc3RpbGwgc2V0IHRoZXNlIHVwIGlmIHlvdSB3YW50LgorCitNYWdpYyBtZXRob2RzIHRoYXQgYXJlIHN1cHBvcnRlZCBidXQgbm90IHNldHVwIGJ5IGRlZmF1bHQgaW4gYGBNYWdpY01vY2tgYCBhcmU6CisKKyogYGBfX3N1YmNsYXNzZXNfX2BgCisqIGBgX19kaXJfX2BgCisqIGBgX19mb3JtYXRfX2BgCisqIGBgX19nZXRfX2BgLCBgYF9fc2V0X19gYCBhbmQgYGBfX2RlbGV0ZV9fYGAKKyogYGBfX3JldmVyc2VkX19gYCBhbmQgYGBfX21pc3NpbmdfX2BgCisqIGBgX19yZWR1Y2VfX2BgLCBgYF9fcmVkdWNlX2V4X19gYCwgYGBfX2dldGluaXRhcmdzX19gYCwgYGBfX2dldG5ld2FyZ3NfX2BgLAorICBgYF9fZ2V0c3RhdGVfX2BgIGFuZCBgYF9fc2V0c3RhdGVfX2BgCisqIGBgX19nZXRmb3JtYXRfX2BgIGFuZCBgYF9fc2V0Zm9ybWF0X19gYAorCisKKworLi4gWyNdIE1hZ2ljIG1ldGhvZHMgKnNob3VsZCogYmUgbG9va2VkIHVwIG9uIHRoZSBjbGFzcyByYXRoZXIgdGhhbiB0aGUKKyAgIGluc3RhbmNlLiBEaWZmZXJlbnQgdmVyc2lvbnMgb2YgUHl0aG9uIGFyZSBpbmNvbnNpc3RlbnQgYWJvdXQgYXBwbHlpbmcgdGhpcworICAgcnVsZS4gVGhlIHN1cHBvcnRlZCBwcm90b2NvbCBtZXRob2RzIHNob3VsZCB3b3JrIHdpdGggYWxsIHN1cHBvcnRlZCB2ZXJzaW9ucworICAgb2YgUHl0aG9uLgorLi4gWyNdIFRoZSBmdW5jdGlvbiBpcyBiYXNpY2FsbHkgaG9va2VkIHVwIHRvIHRoZSBjbGFzcywgYnV0IGVhY2ggYGBNb2NrYGAKKyAgIGluc3RhbmNlIGlzIGtlcHQgaXNvbGF0ZWQgZnJvbSB0aGUgb3RoZXJzLgorCisKK0hlbHBlcnMKKy0tLS0tLS0KKworc2VudGluZWwKK35+fn5+fn5+CisKKy4uIGRhdGE6OiBzZW50aW5lbAorCisgICAgVGhlIGBgc2VudGluZWxgYCBvYmplY3QgcHJvdmlkZXMgYSBjb252ZW5pZW50IHdheSBvZiBwcm92aWRpbmcgdW5pcXVlCisgICAgb2JqZWN0cyBmb3IgeW91ciB0ZXN0cy4KKworICAgIEF0dHJpYnV0ZXMgYXJlIGNyZWF0ZWQgb24gZGVtYW5kIHdoZW4geW91IGFjY2VzcyB0aGVtIGJ5IG5hbWUuIEFjY2Vzc2luZworICAgIHRoZSBzYW1lIGF0dHJpYnV0ZSB3aWxsIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgb2JqZWN0LiBUaGUgb2JqZWN0cworICAgIHJldHVybmVkIGhhdmUgYSBzZW5zaWJsZSByZXByIHNvIHRoYXQgdGVzdCBmYWlsdXJlIG1lc3NhZ2VzIGFyZSByZWFkYWJsZS4KKworU29tZXRpbWVzIHdoZW4gdGVzdGluZyB5b3UgbmVlZCB0byB0ZXN0IHRoYXQgYSBzcGVjaWZpYyBvYmplY3QgaXMgcGFzc2VkIGFzIGFuCithcmd1bWVudCB0byBhbm90aGVyIG1ldGhvZCwgb3IgcmV0dXJuZWQuIEl0IGNhbiBiZSBjb21tb24gdG8gY3JlYXRlIG5hbWVkCitzZW50aW5lbCBvYmplY3RzIHRvIHRlc3QgdGhpcy4gYHNlbnRpbmVsYCBwcm92aWRlcyBhIGNvbnZlbmllbnQgd2F5IG9mCitjcmVhdGluZyBhbmQgdGVzdGluZyB0aGUgaWRlbnRpdHkgb2Ygb2JqZWN0cyBsaWtlIHRoaXMuCisKK0luIHRoaXMgZXhhbXBsZSB3ZSBtb25rZXkgcGF0Y2ggYG1ldGhvZGAgdG8gcmV0dXJuIGBzZW50aW5lbC5zb21lX29iamVjdGA6CisKKyAgICA+Pj4gcmVhbCA9IFByb2R1Y3Rpb25DbGFzcygpCisgICAgPj4+IHJlYWwubWV0aG9kID0gTW9jayhuYW1lPSJtZXRob2QiKQorICAgID4+PiByZWFsLm1ldGhvZC5yZXR1cm5fdmFsdWUgPSBzZW50aW5lbC5zb21lX29iamVjdAorICAgID4+PiByZXN1bHQgPSByZWFsLm1ldGhvZCgpCisgICAgPj4+IGFzc2VydCByZXN1bHQgaXMgc2VudGluZWwuc29tZV9vYmplY3QKKyAgICA+Pj4gc2VudGluZWwuc29tZV9vYmplY3QKKyAgICBzZW50aW5lbC5zb21lX29iamVjdAorCisKK0RFRkFVTFQKK35+fn5+fn4KKworCisuLiBkYXRhOjogREVGQVVMVAorCisgICAgVGhlIGBERUZBVUxUYCBvYmplY3QgaXMgYSBwcmUtY3JlYXRlZCBzZW50aW5lbCAoYWN0dWFsbHkKKyAgICBgc2VudGluZWwuREVGQVVMVGApLiBJdCBjYW4gYmUgdXNlZCBieSA6YXR0cjpgfk1vY2suc2lkZV9lZmZlY3RgCisgICAgZnVuY3Rpb25zIHRvIGluZGljYXRlIHRoYXQgdGhlIG5vcm1hbCByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHVzZWQuCisKKworY2FsbAorfn5+fgorCisuLiBmdW5jdGlvbjo6IGNhbGwoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgYGNhbGxgIGlzIGEgaGVscGVyIG9iamVjdCBmb3IgbWFraW5nIHNpbXBsZXIgYXNzZXJ0aW9ucywgZm9yIGNvbXBhcmluZyB3aXRoCisgICAgOmF0dHI6YH5Nb2NrLmNhbGxfYXJnc2AsIDphdHRyOmB+TW9jay5jYWxsX2FyZ3NfbGlzdGAsCisgICAgOmF0dHI6YH5Nb2NrLm1vY2tfY2FsbHNgIGFuZCA6YXR0cjpgfk1vY2subWV0aG9kX2NhbGxzYC4gYGNhbGxgIGNhbiBhbHNvIGJlCisgICAgdXNlZCB3aXRoIDptZXRoOmB+TW9jay5hc3NlcnRfaGFzX2NhbGxzYC4KKworICAgICAgICA+Pj4gbSA9IE1hZ2ljTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICAgICAgPj4+IG0oMSwgMiwgYT0nZm9vJywgYj0nYmFyJykKKyAgICAgICAgPj4+IG0oKQorICAgICAgICA+Pj4gbS5jYWxsX2FyZ3NfbGlzdCA9PSBbY2FsbCgxLCAyLCBhPSdmb28nLCBiPSdiYXInKSwgY2FsbCgpXQorICAgICAgICBUcnVlCisKKy4uIG1ldGhvZDo6IGNhbGwuY2FsbF9saXN0KCkKKworICAgIEZvciBhIGNhbGwgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyBtdWx0aXBsZSBjYWxscywgYGNhbGxfbGlzdGAKKyAgICByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhlIGludGVybWVkaWF0ZSBjYWxscyBhcyB3ZWxsIGFzIHRoZQorICAgIGZpbmFsIGNhbGwuCisKK2BjYWxsX2xpc3RgIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIG1ha2luZyBhc3NlcnRpb25zIG9uICJjaGFpbmVkIGNhbGxzIi4gQQorY2hhaW5lZCBjYWxsIGlzIG11bHRpcGxlIGNhbGxzIG9uIGEgc2luZ2xlIGxpbmUgb2YgY29kZS4gVGhpcyByZXN1bHRzIGluCittdWx0aXBsZSBlbnRyaWVzIGluIDphdHRyOmB+TW9jay5tb2NrX2NhbGxzYCBvbiBhIG1vY2suIE1hbnVhbGx5IGNvbnN0cnVjdGluZwordGhlIHNlcXVlbmNlIG9mIGNhbGxzIGNhbiBiZSB0ZWRpb3VzLgorCis6bWV0aDpgfmNhbGwuY2FsbF9saXN0YCBjYW4gY29uc3RydWN0IHRoZSBzZXF1ZW5jZSBvZiBjYWxscyBmcm9tIHRoZSBzYW1lCitjaGFpbmVkIGNhbGw6CisKKyAgICA+Pj4gbSA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG0oMSkubWV0aG9kKGFyZz0nZm9vJykub3RoZXIoJ2JhcicpKDIuMCkKKyAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2soKS5tZXRob2QoKS5vdGhlcigpKCknIGlkPScuLi4nPgorICAgID4+PiBrYWxsID0gY2FsbCgxKS5tZXRob2QoYXJnPSdmb28nKS5vdGhlcignYmFyJykoMi4wKQorICAgID4+PiBrYWxsLmNhbGxfbGlzdCgpCisgICAgW2NhbGwoMSksCisgICAgIGNhbGwoKS5tZXRob2QoYXJnPSdmb28nKSwKKyAgICAgY2FsbCgpLm1ldGhvZCgpLm90aGVyKCdiYXInKSwKKyAgICAgY2FsbCgpLm1ldGhvZCgpLm90aGVyKCkoMi4wKV0KKyAgICA+Pj4gbS5tb2NrX2NhbGxzID09IGthbGwuY2FsbF9saXN0KCkKKyAgICBUcnVlCisKKy4uIF9jYWxscy1hcy10dXBsZXM6CisKK0EgYGNhbGxgIG9iamVjdCBpcyBlaXRoZXIgYSB0dXBsZSBvZiAocG9zaXRpb25hbCBhcmdzLCBrZXl3b3JkIGFyZ3MpIG9yCisobmFtZSwgcG9zaXRpb25hbCBhcmdzLCBrZXl3b3JkIGFyZ3MpIGRlcGVuZGluZyBvbiBob3cgaXQgd2FzIGNvbnN0cnVjdGVkLiBXaGVuCit5b3UgY29uc3RydWN0IHRoZW0geW91cnNlbGYgdGhpcyBpc24ndCBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcsIGJ1dCB0aGUgYGNhbGxgCitvYmplY3RzIHRoYXQgYXJlIGluIHRoZSA6YXR0cjpgTW9jay5jYWxsX2FyZ3NgLCA6YXR0cjpgTW9jay5jYWxsX2FyZ3NfbGlzdGAgYW5kCis6YXR0cjpgTW9jay5tb2NrX2NhbGxzYCBhdHRyaWJ1dGVzIGNhbiBiZSBpbnRyb3NwZWN0ZWQgdG8gZ2V0IGF0IHRoZSBpbmRpdmlkdWFsCithcmd1bWVudHMgdGhleSBjb250YWluLgorCitUaGUgYGNhbGxgIG9iamVjdHMgaW4gOmF0dHI6YE1vY2suY2FsbF9hcmdzYCBhbmQgOmF0dHI6YE1vY2suY2FsbF9hcmdzX2xpc3RgCithcmUgdHdvLXR1cGxlcyBvZiAocG9zaXRpb25hbCBhcmdzLCBrZXl3b3JkIGFyZ3MpIHdoZXJlYXMgdGhlIGBjYWxsYCBvYmplY3RzCitpbiA6YXR0cjpgTW9jay5tb2NrX2NhbGxzYCwgYWxvbmcgd2l0aCBvbmVzIHlvdSBjb25zdHJ1Y3QgeW91cnNlbGYsIGFyZQordGhyZWUtdHVwbGVzIG9mIChuYW1lLCBwb3NpdGlvbmFsIGFyZ3MsIGtleXdvcmQgYXJncykuCisKK1lvdSBjYW4gdXNlIHRoZWlyICJ0dXBsZW5lc3MiIHRvIHB1bGwgb3V0IHRoZSBpbmRpdmlkdWFsIGFyZ3VtZW50cyBmb3IgbW9yZQorY29tcGxleCBpbnRyb3NwZWN0aW9uIGFuZCBhc3NlcnRpb25zLiBUaGUgcG9zaXRpb25hbCBhcmd1bWVudHMgYXJlIGEgdHVwbGUKKyhhbiBlbXB0eSB0dXBsZSBpZiB0aGVyZSBhcmUgbm8gcG9zaXRpb25hbCBhcmd1bWVudHMpIGFuZCB0aGUga2V5d29yZAorYXJndW1lbnRzIGFyZSBhIGRpY3Rpb25hcnk6CisKKyAgICA+Pj4gbSA9IE1hZ2ljTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICA+Pj4gbSgxLCAyLCAzLCBhcmc9J29uZScsIGFyZzI9J3R3bycpCisgICAgPj4+IGthbGwgPSBtLmNhbGxfYXJncworICAgID4+PiBhcmdzLCBrd2FyZ3MgPSBrYWxsCisgICAgPj4+IGFyZ3MKKyAgICAoMSwgMiwgMykKKyAgICA+Pj4ga3dhcmdzCisgICAgeydhcmcyJzogJ3R3bycsICdhcmcnOiAnb25lJ30KKyAgICA+Pj4gYXJncyBpcyBrYWxsWzBdCisgICAgVHJ1ZQorICAgID4+PiBrd2FyZ3MgaXMga2FsbFsxXQorICAgIFRydWUKKworICAgID4+PiBtID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gbS5mb28oNCwgNSwgNiwgYXJnPSd0d28nLCBhcmcyPSd0aHJlZScpCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLmZvbygpJyBpZD0nLi4uJz4KKyAgICA+Pj4ga2FsbCA9IG0ubW9ja19jYWxsc1swXQorICAgID4+PiBuYW1lLCBhcmdzLCBrd2FyZ3MgPSBrYWxsCisgICAgPj4+IG5hbWUKKyAgICAnZm9vJworICAgID4+PiBhcmdzCisgICAgKDQsIDUsIDYpCisgICAgPj4+IGt3YXJncworICAgIHsnYXJnMic6ICd0aHJlZScsICdhcmcnOiAndHdvJ30KKyAgICA+Pj4gbmFtZSBpcyBtLm1vY2tfY2FsbHNbMF1bMF0KKyAgICBUcnVlCisKKworY3JlYXRlX2F1dG9zcGVjCit+fn5+fn5+fn5+fn5+fn4KKworLi4gZnVuY3Rpb246OiBjcmVhdGVfYXV0b3NwZWMoc3BlYywgc3BlY19zZXQ9RmFsc2UsIGluc3RhbmNlPUZhbHNlLCAqKmt3YXJncykKKworICAgIENyZWF0ZSBhIG1vY2sgb2JqZWN0IHVzaW5nIGFub3RoZXIgb2JqZWN0IGFzIGEgc3BlYy4gQXR0cmlidXRlcyBvbiB0aGUKKyAgICBtb2NrIHdpbGwgdXNlIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBvbiB0aGUgYHNwZWNgIG9iamVjdCBhcyB0aGVpcgorICAgIHNwZWMuCisKKyAgICBGdW5jdGlvbnMgb3IgbWV0aG9kcyBiZWluZyBtb2NrZWQgd2lsbCBoYXZlIHRoZWlyIGFyZ3VtZW50cyBjaGVja2VkIHRvCisgICAgZW5zdXJlIHRoYXQgdGhleSBhcmUgY2FsbGVkIHdpdGggdGhlIGNvcnJlY3Qgc2lnbmF0dXJlLgorCisgICAgSWYgYHNwZWNfc2V0YCBpcyBgVHJ1ZWAgdGhlbiBhdHRlbXB0aW5nIHRvIHNldCBhdHRyaWJ1dGVzIHRoYXQgZG9uJ3QgZXhpc3QKKyAgICBvbiB0aGUgc3BlYyBvYmplY3Qgd2lsbCByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgLgorCisgICAgSWYgYSBjbGFzcyBpcyB1c2VkIGFzIGEgc3BlYyB0aGVuIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIG1vY2sgKHRoZQorICAgIGluc3RhbmNlIG9mIHRoZSBjbGFzcykgd2lsbCBoYXZlIHRoZSBzYW1lIHNwZWMuIFlvdSBjYW4gdXNlIGEgY2xhc3MgYXMgdGhlCisgICAgc3BlYyBmb3IgYW4gaW5zdGFuY2Ugb2JqZWN0IGJ5IHBhc3NpbmcgYGluc3RhbmNlPVRydWVgLiBUaGUgcmV0dXJuZWQgbW9jaworICAgIHdpbGwgb25seSBiZSBjYWxsYWJsZSBpZiBpbnN0YW5jZXMgb2YgdGhlIG1vY2sgYXJlIGNhbGxhYmxlLgorCisgICAgYGNyZWF0ZV9hdXRvc3BlY2AgYWxzbyB0YWtlcyBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgcGFzc2VkIHRvCisgICAgdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBjcmVhdGVkIG1vY2suCisKK1NlZSA6cmVmOmBhdXRvLXNwZWNjaW5nYCBmb3IgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSBhdXRvLXNwZWNjaW5nIHdpdGgKK2BjcmVhdGVfYXV0b3NwZWNgIGFuZCB0aGUgYGF1dG9zcGVjYCBhcmd1bWVudCB0byA6ZnVuYzpgcGF0Y2hgLgorCisKK0FOWQorfn5+CisKKy4uIGRhdGE6OiBBTlkKKworU29tZXRpbWVzIHlvdSBtYXkgbmVlZCB0byBtYWtlIGFzc2VydGlvbnMgYWJvdXQgKnNvbWUqIG9mIHRoZSBhcmd1bWVudHMgaW4gYQorY2FsbCB0byBtb2NrLCBidXQgZWl0aGVyIG5vdCBjYXJlIGFib3V0IHNvbWUgb2YgdGhlIGFyZ3VtZW50cyBvciB3YW50IHRvIHB1bGwKK3RoZW0gaW5kaXZpZHVhbGx5IG91dCBvZiA6YXR0cjpgfk1vY2suY2FsbF9hcmdzYCBhbmQgbWFrZSBtb3JlIGNvbXBsZXgKK2Fzc2VydGlvbnMgb24gdGhlbS4KKworVG8gaWdub3JlIGNlcnRhaW4gYXJndW1lbnRzIHlvdSBjYW4gcGFzcyBpbiBvYmplY3RzIHRoYXQgY29tcGFyZSBlcXVhbCB0bworKmV2ZXJ5dGhpbmcqLiBDYWxscyB0byA6bWV0aDpgfk1vY2suYXNzZXJ0X2NhbGxlZF93aXRoYCBhbmQKKzptZXRoOmB+TW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aGAgd2lsbCB0aGVuIHN1Y2NlZWQgbm8gbWF0dGVyIHdoYXQgd2FzCitwYXNzZWQgaW4uCisKKyAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgPj4+IG1vY2soJ2ZvbycsIGJhcj1vYmplY3QoKSkKKyAgICA+Pj4gbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnZm9vJywgYmFyPUFOWSkKKworYEFOWWAgY2FuIGFsc28gYmUgdXNlZCBpbiBjb21wYXJpc29ucyB3aXRoIGNhbGwgbGlzdHMgbGlrZQorOmF0dHI6YH5Nb2NrLm1vY2tfY2FsbHNgOgorCisgICAgPj4+IG0gPSBNYWdpY01vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgPj4+IG0oMSkKKyAgICA+Pj4gbSgxLCAyKQorICAgID4+PiBtKG9iamVjdCgpKQorICAgID4+PiBtLm1vY2tfY2FsbHMgPT0gW2NhbGwoMSksIGNhbGwoMSwgMiksIEFOWV0KKyAgICBUcnVlCisKKworCitGSUxURVJfRElSCit+fn5+fn5+fn5+CisKKy4uIGRhdGE6OiBGSUxURVJfRElSCisKK2BGSUxURVJfRElSYCBpcyBhIG1vZHVsZSBsZXZlbCB2YXJpYWJsZSB0aGF0IGNvbnRyb2xzIHRoZSB3YXkgbW9jayBvYmplY3RzCityZXNwb25kIHRvIGBkaXJgIChvbmx5IGZvciBQeXRob24gMi42IG9yIG1vcmUgcmVjZW50KS4gVGhlIGRlZmF1bHQgaXMgYFRydWVgLAord2hpY2ggdXNlcyB0aGUgZmlsdGVyaW5nIGRlc2NyaWJlZCBiZWxvdywgdG8gb25seSBzaG93IHVzZWZ1bCBtZW1iZXJzLiBJZiB5b3UKK2Rpc2xpa2UgdGhpcyBmaWx0ZXJpbmcsIG9yIG5lZWQgdG8gc3dpdGNoIGl0IG9mZiBmb3IgZGlhZ25vc3RpYyBwdXJwb3NlcywgdGhlbgorc2V0IGBtb2NrLkZJTFRFUl9ESVIgPSBGYWxzZWAuCisKK1dpdGggZmlsdGVyaW5nIG9uLCBgZGlyKHNvbWVfbW9jaylgIHNob3dzIG9ubHkgdXNlZnVsIGF0dHJpYnV0ZXMgYW5kIHdpbGwKK2luY2x1ZGUgYW55IGR5bmFtaWNhbGx5IGNyZWF0ZWQgYXR0cmlidXRlcyB0aGF0IHdvdWxkbid0IG5vcm1hbGx5IGJlIHNob3duLgorSWYgdGhlIG1vY2sgd2FzIGNyZWF0ZWQgd2l0aCBhIGBzcGVjYCAob3IgYGF1dG9zcGVjYCBvZiBjb3Vyc2UpIHRoZW4gYWxsIHRoZQorYXR0cmlidXRlcyBmcm9tIHRoZSBvcmlnaW5hbCBhcmUgc2hvd24sIGV2ZW4gaWYgdGhleSBoYXZlbid0IGJlZW4gYWNjZXNzZWQKK3lldDoKKworICAgID4+PiBkaXIoTW9jaygpKQorICAgIFsnYXNzZXJ0X2FueV9jYWxsJywKKyAgICAgJ2Fzc2VydF9jYWxsZWRfb25jZV93aXRoJywKKyAgICAgJ2Fzc2VydF9jYWxsZWRfd2l0aCcsCisgICAgICdhc3NlcnRfaGFzX2NhbGxzJywKKyAgICAgJ2F0dGFjaF9tb2NrJywKKyAgICAgLi4uCisgICAgPj4+IGZyb20gdXJsbGliIGltcG9ydCByZXF1ZXN0CisgICAgPj4+IGRpcihNb2NrKHNwZWM9cmVxdWVzdCkpCisgICAgWydBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXInLAorICAgICAnQWJzdHJhY3REaWdlc3RBdXRoSGFuZGxlcicsCisgICAgICdBYnN0cmFjdEhUVFBIYW5kbGVyJywKKyAgICAgJ0Jhc2VIYW5kbGVyJywKKyAgICAgLi4uCisKK01hbnkgb2YgdGhlIG5vdC12ZXJ5LXVzZWZ1bCAocHJpdmF0ZSB0byBgTW9ja2AgcmF0aGVyIHRoYW4gdGhlIHRoaW5nIGJlaW5nCittb2NrZWQpIHVuZGVyc2NvcmUgYW5kIGRvdWJsZSB1bmRlcnNjb3JlIHByZWZpeGVkIGF0dHJpYnV0ZXMgaGF2ZSBiZWVuCitmaWx0ZXJlZCBmcm9tIHRoZSByZXN1bHQgb2YgY2FsbGluZyBgZGlyYCBvbiBhIGBNb2NrYC4gSWYgeW91IGRpc2xpa2UgdGhpcworYmVoYXZpb3VyIHlvdSBjYW4gc3dpdGNoIGl0IG9mZiBieSBzZXR0aW5nIHRoZSBtb2R1bGUgbGV2ZWwgc3dpdGNoCitgRklMVEVSX0RJUmA6CisKKyAgICA+Pj4gZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jaworICAgID4+PiBtb2NrLkZJTFRFUl9ESVIgPSBGYWxzZQorICAgID4+PiBkaXIobW9jay5Nb2NrKCkpCisgICAgWydfTm9uQ2FsbGFibGVNb2NrX19nZXRfcmV0dXJuX3ZhbHVlJywKKyAgICAgJ19Ob25DYWxsYWJsZU1vY2tfX2dldF9zaWRlX2VmZmVjdCcsCisgICAgICdfTm9uQ2FsbGFibGVNb2NrX19yZXR1cm5fdmFsdWVfZG9jJywKKyAgICAgJ19Ob25DYWxsYWJsZU1vY2tfX3NldF9yZXR1cm5fdmFsdWUnLAorICAgICAnX05vbkNhbGxhYmxlTW9ja19fc2V0X3NpZGVfZWZmZWN0JywKKyAgICAgJ19fY2FsbF9fJywKKyAgICAgJ19fY2xhc3NfXycsCisgICAgIC4uLgorCitBbHRlcm5hdGl2ZWx5IHlvdSBjYW4ganVzdCB1c2UgYHZhcnMobXlfbW9jaylgIChpbnN0YW5jZSBtZW1iZXJzKSBhbmQKK2BkaXIodHlwZShteV9tb2NrKSlgICh0eXBlIG1lbWJlcnMpIHRvIGJ5cGFzcyB0aGUgZmlsdGVyaW5nIGlycmVzcGVjdGl2ZSBvZgorYG1vY2suRklMVEVSX0RJUmAuCisKKworbW9ja19vcGVuCit+fn5+fn5+fn4KKworLi4gZnVuY3Rpb246OiBtb2NrX29wZW4obW9jaz1Ob25lLCByZWFkX2RhdGE9Tm9uZSkKKworICAgIEEgaGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG1vY2sgdG8gcmVwbGFjZSB0aGUgdXNlIG9mIGBvcGVuYC4gSXQgd29ya3MKKyAgICBmb3IgYG9wZW5gIGNhbGxlZCBkaXJlY3RseSBvciB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgorCisgICAgVGhlIGBtb2NrYCBhcmd1bWVudCBpcyB0aGUgbW9jayBvYmplY3QgdG8gY29uZmlndXJlLiBJZiBgTm9uZWAgKHRoZQorICAgIGRlZmF1bHQpIHRoZW4gYSBgTWFnaWNNb2NrYCB3aWxsIGJlIGNyZWF0ZWQgZm9yIHlvdSwgd2l0aCB0aGUgQVBJIGxpbWl0ZWQKKyAgICB0byBtZXRob2RzIG9yIGF0dHJpYnV0ZXMgYXZhaWxhYmxlIG9uIHN0YW5kYXJkIGZpbGUgaGFuZGxlcy4KKworICAgIGByZWFkX2RhdGFgIGlzIGEgc3RyaW5nIGZvciB0aGUgYHJlYWRgIG1ldGhvZCBvZiB0aGUgZmlsZSBoYW5kbGUgdG8gcmV0dXJuLgorICAgIFRoaXMgaXMgYW4gZW1wdHkgc3RyaW5nIGJ5IGRlZmF1bHQuCisKK1VzaW5nIGBvcGVuYCBhcyBhIGNvbnRleHQgbWFuYWdlciBpcyBhIGdyZWF0IHdheSB0byBlbnN1cmUgeW91ciBmaWxlIGhhbmRsZXMKK2FyZSBjbG9zZWQgcHJvcGVybHkgYW5kIGlzIGJlY29taW5nIGNvbW1vbjo6CisKKyAgICB3aXRoIG9wZW4oJy9zb21lL3BhdGgnLCAndycpIGFzIGY6CisgICAgICAgIGYud3JpdGUoJ3NvbWV0aGluZycpCisKK1RoZSBpc3N1ZSBpcyB0aGF0IGV2ZW4gaWYgeW91IG1vY2sgb3V0IHRoZSBjYWxsIHRvIGBvcGVuYCBpdCBpcyB0aGUKKypyZXR1cm5lZCBvYmplY3QqIHRoYXQgaXMgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciAoYW5kIGhhcyBgX19lbnRlcl9fYCBhbmQKK2BfX2V4aXRfX2AgY2FsbGVkKS4KKworTW9ja2luZyBjb250ZXh0IG1hbmFnZXJzIHdpdGggYSA6Y2xhc3M6YE1hZ2ljTW9ja2AgaXMgY29tbW9uIGVub3VnaCBhbmQgZmlkZGx5Citlbm91Z2ggdGhhdCBhIGhlbHBlciBmdW5jdGlvbiBpcyB1c2VmdWwuCisKKyAgICA+Pj4gbSA9IG1vY2tfb3BlbigpCisgICAgPj4+IHdpdGggcGF0Y2goJ19fbWFpbl9fLm9wZW4nLCBtLCBjcmVhdGU9VHJ1ZSk6CisgICAgLi4uICAgICB3aXRoIG9wZW4oJ2ZvbycsICd3JykgYXMgaDoKKyAgICAuLi4gICAgICAgICBoLndyaXRlKCdzb21lIHN0dWZmJykKKyAgICAuLi4KKyAgICA+Pj4gbS5tb2NrX2NhbGxzCisgICAgW2NhbGwoJ2ZvbycsICd3JyksCisgICAgIGNhbGwoKS5fX2VudGVyX18oKSwKKyAgICAgY2FsbCgpLndyaXRlKCdzb21lIHN0dWZmJyksCisgICAgIGNhbGwoKS5fX2V4aXRfXyhOb25lLCBOb25lLCBOb25lKV0KKyAgICA+Pj4gbS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnZm9vJywgJ3cnKQorICAgID4+PiBoYW5kbGUgPSBtKCkKKyAgICA+Pj4gaGFuZGxlLndyaXRlLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdzb21lIHN0dWZmJykKKworQW5kIGZvciByZWFkaW5nIGZpbGVzOgorCisgICAgPj4+IHdpdGggcGF0Y2goJ19fbWFpbl9fLm9wZW4nLCBtb2NrX29wZW4ocmVhZF9kYXRhPSdiaWJibGUnKSwgY3JlYXRlPVRydWUpIGFzIG06CisgICAgLi4uICAgICB3aXRoIG9wZW4oJ2ZvbycpIGFzIGg6CisgICAgLi4uICAgICAgICAgcmVzdWx0ID0gaC5yZWFkKCkKKyAgICAuLi4KKyAgICA+Pj4gbS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnZm9vJykKKyAgICA+Pj4gYXNzZXJ0IHJlc3VsdCA9PSAnYmliYmxlJworCisKKy4uIF9hdXRvLXNwZWNjaW5nOgorCitBdXRvc3BlY2NpbmcKK35+fn5+fn5+fn5+fgorCitBdXRvc3BlY2NpbmcgaXMgYmFzZWQgb24gdGhlIGV4aXN0aW5nIGBzcGVjYCBmZWF0dXJlIG9mIG1vY2suIEl0IGxpbWl0cyB0aGUKK2FwaSBvZiBtb2NrcyB0byB0aGUgYXBpIG9mIGFuIG9yaWdpbmFsIG9iamVjdCAodGhlIHNwZWMpLCBidXQgaXQgaXMgcmVjdXJzaXZlCisoaW1wbGVtZW50ZWQgbGF6aWx5KSBzbyB0aGF0IGF0dHJpYnV0ZXMgb2YgbW9ja3Mgb25seSBoYXZlIHRoZSBzYW1lIGFwaSBhcwordGhlIGF0dHJpYnV0ZXMgb2YgdGhlIHNwZWMuIEluIGFkZGl0aW9uIG1vY2tlZCBmdW5jdGlvbnMgLyBtZXRob2RzIGhhdmUgdGhlCitzYW1lIGNhbGwgc2lnbmF0dXJlIGFzIHRoZSBvcmlnaW5hbCBzbyB0aGV5IHJhaXNlIGEgYFR5cGVFcnJvcmAgaWYgdGhleSBhcmUKK2NhbGxlZCBpbmNvcnJlY3RseS4KKworQmVmb3JlIEkgZXhwbGFpbiBob3cgYXV0by1zcGVjY2luZyB3b3JrcywgaGVyZSdzIHdoeSBpdCBpcyBuZWVkZWQuCisKK2BNb2NrYCBpcyBhIHZlcnkgcG93ZXJmdWwgYW5kIGZsZXhpYmxlIG9iamVjdCwgYnV0IGl0IHN1ZmZlcnMgZnJvbSB0d28gZmxhd3MKK3doZW4gdXNlZCB0byBtb2NrIG91dCBvYmplY3RzIGZyb20gYSBzeXN0ZW0gdW5kZXIgdGVzdC4gT25lIG9mIHRoZXNlIGZsYXdzIGlzCitzcGVjaWZpYyB0byB0aGUgYE1vY2tgIGFwaSBhbmQgdGhlIG90aGVyIGlzIGEgbW9yZSBnZW5lcmFsIHByb2JsZW0gd2l0aCB1c2luZworbW9jayBvYmplY3RzLgorCitGaXJzdCB0aGUgcHJvYmxlbSBzcGVjaWZpYyB0byBgTW9ja2AuIGBNb2NrYCBoYXMgdHdvIGFzc2VydCBtZXRob2RzIHRoYXQgYXJlCitleHRyZW1lbHkgaGFuZHk6IDptZXRoOmB+TW9jay5hc3NlcnRfY2FsbGVkX3dpdGhgIGFuZAorOm1ldGg6YH5Nb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoYC4KKworICAgID4+PiBtb2NrID0gTW9jayhuYW1lPSdUaGluZycsIHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBtb2NrKDEsIDIsIDMpCisgICAgPj4+IG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSwgMiwgMykKKyAgICA+Pj4gbW9jaygxLCAyLCAzKQorICAgID4+PiBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEsIDIsIDMpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgICBBc3NlcnRpb25FcnJvcjogRXhwZWN0ZWQgJ21vY2snIHRvIGJlIGNhbGxlZCBvbmNlLiBDYWxsZWQgMiB0aW1lcy4KKworQmVjYXVzZSBtb2NrcyBhdXRvLWNyZWF0ZSBhdHRyaWJ1dGVzIG9uIGRlbWFuZCwgYW5kIGFsbG93IHlvdSB0byBjYWxsIHRoZW0KK3dpdGggYXJiaXRyYXJ5IGFyZ3VtZW50cywgaWYgeW91IG1pc3NwZWxsIG9uZSBvZiB0aGVzZSBhc3NlcnQgbWV0aG9kcyB0aGVuCit5b3VyIGFzc2VydGlvbiBpcyBnb25lOgorCisuLiBjb2RlLWJsb2NrOjogcHljb24KKworICAgID4+PiBtb2NrID0gTW9jayhuYW1lPSdUaGluZycsIHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBtb2NrKDEsIDIsIDMpCisgICAgPj4+IG1vY2suYXNzcmV0X2NhbGxlZF9vbmNlX3dpdGgoNCwgNSwgNikKKworWW91ciB0ZXN0cyBjYW4gcGFzcyBzaWxlbnRseSBhbmQgaW5jb3JyZWN0bHkgYmVjYXVzZSBvZiB0aGUgdHlwby4KKworVGhlIHNlY29uZCBpc3N1ZSBpcyBtb3JlIGdlbmVyYWwgdG8gbW9ja2luZy4gSWYgeW91IHJlZmFjdG9yIHNvbWUgb2YgeW91cgorY29kZSwgcmVuYW1lIG1lbWJlcnMgYW5kIHNvIG9uLCBhbnkgdGVzdHMgZm9yIGNvZGUgdGhhdCBpcyBzdGlsbCB1c2luZyB0aGUKKypvbGQgYXBpKiBidXQgdXNlcyBtb2NrcyBpbnN0ZWFkIG9mIHRoZSByZWFsIG9iamVjdHMgd2lsbCBzdGlsbCBwYXNzLiBUaGlzCittZWFucyB5b3VyIHRlc3RzIGNhbiBhbGwgcGFzcyBldmVuIHRob3VnaCB5b3VyIGNvZGUgaXMgYnJva2VuLgorCitOb3RlIHRoYXQgdGhpcyBpcyBhbm90aGVyIHJlYXNvbiB3aHkgeW91IG5lZWQgaW50ZWdyYXRpb24gdGVzdHMgYXMgd2VsbCBhcwordW5pdCB0ZXN0cy4gVGVzdGluZyBldmVyeXRoaW5nIGluIGlzb2xhdGlvbiBpcyBhbGwgZmluZSBhbmQgZGFuZHksIGJ1dCBpZiB5b3UKK2Rvbid0IHRlc3QgaG93IHlvdXIgdW5pdHMgYXJlICJ3aXJlZCB0b2dldGhlciIgdGhlcmUgaXMgc3RpbGwgbG90cyBvZiByb29tCitmb3IgYnVncyB0aGF0IHRlc3RzIG1pZ2h0IGhhdmUgY2F1Z2h0LgorCitgbW9ja2AgYWxyZWFkeSBwcm92aWRlcyBhIGZlYXR1cmUgdG8gaGVscCB3aXRoIHRoaXMsIGNhbGxlZCBzcGVjY2luZy4gSWYgeW91Cit1c2UgYSBjbGFzcyBvciBpbnN0YW5jZSBhcyB0aGUgYHNwZWNgIGZvciBhIG1vY2sgdGhlbiB5b3UgY2FuIG9ubHkgYWNjZXNzCithdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIHRoYXQgZXhpc3Qgb24gdGhlIHJlYWwgY2xhc3M6CisKKyAgICA+Pj4gZnJvbSB1cmxsaWIgaW1wb3J0IHJlcXVlc3QKKyAgICA+Pj4gbW9jayA9IE1vY2soc3BlYz1yZXF1ZXN0LlJlcXVlc3QpCisgICAgPj4+IG1vY2suYXNzcmV0X2NhbGxlZF93aXRoCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgICBBdHRyaWJ1dGVFcnJvcjogTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnYXNzcmV0X2NhbGxlZF93aXRoJworCitUaGUgc3BlYyBvbmx5IGFwcGxpZXMgdG8gdGhlIG1vY2sgaXRzZWxmLCBzbyB3ZSBzdGlsbCBoYXZlIHRoZSBzYW1lIGlzc3VlCit3aXRoIGFueSBtZXRob2RzIG9uIHRoZSBtb2NrOgorCisuLiBjb2RlLWJsb2NrOjogcHljb24KKworICAgID4+PiBtb2NrLmhhc19kYXRhKCkKKyAgICA8bW9jay5Nb2NrIG9iamVjdCBhdCAweC4uLj4KKyAgICA+Pj4gbW9jay5oYXNfZGF0YS5hc3NyZXRfY2FsbGVkX3dpdGgoKQorCitBdXRvLXNwZWNjaW5nIHNvbHZlcyB0aGlzIHByb2JsZW0uIFlvdSBjYW4gZWl0aGVyIHBhc3MgYGF1dG9zcGVjPVRydWVgIHRvCitgcGF0Y2hgIC8gYHBhdGNoLm9iamVjdGAgb3IgdXNlIHRoZSBgY3JlYXRlX2F1dG9zcGVjYCBmdW5jdGlvbiB0byBjcmVhdGUgYQorbW9jayB3aXRoIGEgc3BlYy4gSWYgeW91IHVzZSB0aGUgYGF1dG9zcGVjPVRydWVgIGFyZ3VtZW50IHRvIGBwYXRjaGAgdGhlbiB0aGUKK29iamVjdCB0aGF0IGlzIGJlaW5nIHJlcGxhY2VkIHdpbGwgYmUgdXNlZCBhcyB0aGUgc3BlYyBvYmplY3QuIEJlY2F1c2UgdGhlCitzcGVjY2luZyBpcyBkb25lICJsYXppbHkiICh0aGUgc3BlYyBpcyBjcmVhdGVkIGFzIGF0dHJpYnV0ZXMgb24gdGhlIG1vY2sgYXJlCithY2Nlc3NlZCkgeW91IGNhbiB1c2UgaXQgd2l0aCB2ZXJ5IGNvbXBsZXggb3IgZGVlcGx5IG5lc3RlZCBvYmplY3RzIChsaWtlCittb2R1bGVzIHRoYXQgaW1wb3J0IG1vZHVsZXMgdGhhdCBpbXBvcnQgbW9kdWxlcykgd2l0aG91dCBhIGJpZyBwZXJmb3JtYW5jZQoraGl0LgorCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBpdCBpbiB1c2U6CisKKyAgICA+Pj4gZnJvbSB1cmxsaWIgaW1wb3J0IHJlcXVlc3QKKyAgICA+Pj4gcGF0Y2hlciA9IHBhdGNoKCdfX21haW5fXy5yZXF1ZXN0JywgYXV0b3NwZWM9VHJ1ZSkKKyAgICA+Pj4gbW9ja19yZXF1ZXN0ID0gcGF0Y2hlci5zdGFydCgpCisgICAgPj4+IHJlcXVlc3QgaXMgbW9ja19yZXF1ZXN0CisgICAgVHJ1ZQorICAgID4+PiBtb2NrX3JlcXVlc3QuUmVxdWVzdAorICAgIDxNYWdpY01vY2sgbmFtZT0ncmVxdWVzdC5SZXF1ZXN0JyBzcGVjPSdSZXF1ZXN0JyBpZD0nLi4uJz4KKworWW91IGNhbiBzZWUgdGhhdCBgcmVxdWVzdC5SZXF1ZXN0YCBoYXMgYSBzcGVjLiBgcmVxdWVzdC5SZXF1ZXN0YCB0YWtlcyB0d28KK2FyZ3VtZW50cyBpbiB0aGUgY29uc3RydWN0b3IgKG9uZSBvZiB3aGljaCBpcyBgc2VsZmApLiBIZXJlJ3Mgd2hhdCBoYXBwZW5zIGlmCit3ZSB0cnkgdG8gY2FsbCBpdCBpbmNvcnJlY3RseToKKworICAgID4+PiByZXEgPSByZXF1ZXN0LlJlcXVlc3QoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICAgVHlwZUVycm9yOiA8bGFtYmRhPigpIHRha2VzIGF0IGxlYXN0IDIgYXJndW1lbnRzICgxIGdpdmVuKQorCitUaGUgc3BlYyBhbHNvIGFwcGxpZXMgdG8gaW5zdGFudGlhdGVkIGNsYXNzZXMgKGkuZS4gdGhlIHJldHVybiB2YWx1ZSBvZgorc3BlY2NlZCBtb2Nrcyk6CisKKyAgICA+Pj4gcmVxID0gcmVxdWVzdC5SZXF1ZXN0KCdmb28nKQorICAgID4+PiByZXEKKyAgICA8Tm9uQ2FsbGFibGVNYWdpY01vY2sgbmFtZT0ncmVxdWVzdC5SZXF1ZXN0KCknIHNwZWM9J1JlcXVlc3QnIGlkPScuLi4nPgorCitgUmVxdWVzdGAgb2JqZWN0cyBhcmUgbm90IGNhbGxhYmxlLCBzbyB0aGUgcmV0dXJuIHZhbHVlIG9mIGluc3RhbnRpYXRpbmcgb3VyCittb2NrZWQgb3V0IGByZXF1ZXN0LlJlcXVlc3RgIGlzIGEgbm9uLWNhbGxhYmxlIG1vY2suIFdpdGggdGhlIHNwZWMgaW4gcGxhY2UKK2FueSB0eXBvcyBpbiBvdXIgYXNzZXJ0cyB3aWxsIHJhaXNlIHRoZSBjb3JyZWN0IGVycm9yOgorCisgICAgPj4+IHJlcS5hZGRfaGVhZGVyKCdzcGFtJywgJ2VnZ3MnKQorICAgIDxNYWdpY01vY2sgbmFtZT0ncmVxdWVzdC5SZXF1ZXN0KCkuYWRkX2hlYWRlcigpJyBpZD0nLi4uJz4KKyAgICA+Pj4gcmVxLmFkZF9oZWFkZXIuYXNzcmV0X2NhbGxlZF93aXRoCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgICBBdHRyaWJ1dGVFcnJvcjogTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnYXNzcmV0X2NhbGxlZF93aXRoJworICAgID4+PiByZXEuYWRkX2hlYWRlci5hc3NlcnRfY2FsbGVkX3dpdGgoJ3NwYW0nLCAnZWdncycpCisKK0luIG1hbnkgY2FzZXMgeW91IHdpbGwganVzdCBiZSBhYmxlIHRvIGFkZCBgYXV0b3NwZWM9VHJ1ZWAgdG8geW91ciBleGlzdGluZworYHBhdGNoYCBjYWxscyBhbmQgdGhlbiBiZSBwcm90ZWN0ZWQgYWdhaW5zdCBidWdzIGR1ZSB0byB0eXBvcyBhbmQgYXBpCitjaGFuZ2VzLgorCitBcyB3ZWxsIGFzIHVzaW5nIGBhdXRvc3BlY2AgdGhyb3VnaCBgcGF0Y2hgIHRoZXJlIGlzIGEKKzpmdW5jOmBjcmVhdGVfYXV0b3NwZWNgIGZvciBjcmVhdGluZyBhdXRvc3BlY2NlZCBtb2NrcyBkaXJlY3RseToKKworICAgID4+PiBmcm9tIHVybGxpYiBpbXBvcnQgcmVxdWVzdAorICAgID4+PiBtb2NrX3JlcXVlc3QgPSBjcmVhdGVfYXV0b3NwZWMocmVxdWVzdCkKKyAgICA+Pj4gbW9ja19yZXF1ZXN0LlJlcXVlc3QoJ2ZvbycsICdiYXInKQorICAgIDxOb25DYWxsYWJsZU1hZ2ljTW9jayBuYW1lPSdtb2NrLlJlcXVlc3QoKScgc3BlYz0nUmVxdWVzdCcgaWQ9Jy4uLic+CisKK1RoaXMgaXNuJ3Qgd2l0aG91dCBjYXZlYXRzIGFuZCBsaW1pdGF0aW9ucyBob3dldmVyLCB3aGljaCBpcyB3aHkgaXQgaXMgbm90Cit0aGUgZGVmYXVsdCBiZWhhdmlvdXIuIEluIG9yZGVyIHRvIGtub3cgd2hhdCBhdHRyaWJ1dGVzIGFyZSBhdmFpbGFibGUgb24gdGhlCitzcGVjIG9iamVjdCwgYXV0b3NwZWMgaGFzIHRvIGludHJvc3BlY3QgKGFjY2VzcyBhdHRyaWJ1dGVzKSB0aGUgc3BlYy4gQXMgeW91Cit0cmF2ZXJzZSBhdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIGEgY29ycmVzcG9uZGluZyB0cmF2ZXJzYWwgb2YgdGhlIG9yaWdpbmFsCitvYmplY3QgaXMgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBJZiBhbnkgb2YgeW91ciBzcGVjY2VkIG9iamVjdHMgaGF2ZQorcHJvcGVydGllcyBvciBkZXNjcmlwdG9ycyB0aGF0IGNhbiB0cmlnZ2VyIGNvZGUgZXhlY3V0aW9uIHRoZW4geW91IG1heSBub3QgYmUKK2FibGUgdG8gdXNlIGF1dG9zcGVjLiBPbiB0aGUgb3RoZXIgaGFuZCBpdCBpcyBtdWNoIGJldHRlciB0byBkZXNpZ24geW91cgorb2JqZWN0cyBzbyB0aGF0IGludHJvc3BlY3Rpb24gaXMgc2FmZSBbI11fLgorCitBIG1vcmUgc2VyaW91cyBwcm9ibGVtIGlzIHRoYXQgaXQgaXMgY29tbW9uIGZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzIHRvIGJlCitjcmVhdGVkIGluIHRoZSBgX19pbml0X19gIG1ldGhvZCBhbmQgbm90IHRvIGV4aXN0IG9uIHRoZSBjbGFzcyBhdCBhbGwuCitgYXV0b3NwZWNgIGNhbid0IGtub3cgYWJvdXQgYW55IGR5bmFtaWNhbGx5IGNyZWF0ZWQgYXR0cmlidXRlcyBhbmQgcmVzdHJpY3RzCit0aGUgYXBpIHRvIHZpc2libGUgYXR0cmlidXRlcy4KKworICAgID4+PiBjbGFzcyBTb21ldGhpbmc6CisgICAgLi4uICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgIC4uLiAgICAgc2VsZi5hID0gMzMKKyAgICAuLi4KKyAgICA+Pj4gd2l0aCBwYXRjaCgnX19tYWluX18uU29tZXRoaW5nJywgYXV0b3NwZWM9VHJ1ZSk6CisgICAgLi4uICAgdGhpbmcgPSBTb21ldGhpbmcoKQorICAgIC4uLiAgIHRoaW5nLmEKKyAgICAuLi4KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBBdHRyaWJ1dGVFcnJvcjogTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnYScKKworVGhlcmUgYXJlIGEgZmV3IGRpZmZlcmVudCB3YXlzIG9mIHJlc29sdmluZyB0aGlzIHByb2JsZW0uIFRoZSBlYXNpZXN0LCBidXQKK25vdCBuZWNlc3NhcmlseSB0aGUgbGVhc3QgYW5ub3lpbmcsIHdheSBpcyB0byBzaW1wbHkgc2V0IHRoZSByZXF1aXJlZAorYXR0cmlidXRlcyBvbiB0aGUgbW9jayBhZnRlciBjcmVhdGlvbi4gSnVzdCBiZWNhdXNlIGBhdXRvc3BlY2AgZG9lc24ndCBhbGxvdworeW91IHRvIGZldGNoIGF0dHJpYnV0ZXMgdGhhdCBkb24ndCBleGlzdCBvbiB0aGUgc3BlYyBpdCBkb2Vzbid0IHByZXZlbnQgeW91CitzZXR0aW5nIHRoZW06CisKKyAgICA+Pj4gd2l0aCBwYXRjaCgnX19tYWluX18uU29tZXRoaW5nJywgYXV0b3NwZWM9VHJ1ZSk6CisgICAgLi4uICAgdGhpbmcgPSBTb21ldGhpbmcoKQorICAgIC4uLiAgIHRoaW5nLmEgPSAzMworICAgIC4uLgorCitUaGVyZSBpcyBhIG1vcmUgYWdncmVzc2l2ZSB2ZXJzaW9uIG9mIGJvdGggYHNwZWNgIGFuZCBgYXV0b3NwZWNgIHRoYXQgKmRvZXMqCitwcmV2ZW50IHlvdSBzZXR0aW5nIG5vbi1leGlzdGVudCBhdHRyaWJ1dGVzLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd2FudCB0bworZW5zdXJlIHlvdXIgY29kZSBvbmx5ICpzZXRzKiB2YWxpZCBhdHRyaWJ1dGVzIHRvbywgYnV0IG9idmlvdXNseSBpdCBwcmV2ZW50cwordGhpcyBwYXJ0aWN1bGFyIHNjZW5hcmlvOgorCisgICAgPj4+IHdpdGggcGF0Y2goJ19fbWFpbl9fLlNvbWV0aGluZycsIGF1dG9zcGVjPVRydWUsIHNwZWNfc2V0PVRydWUpOgorICAgIC4uLiAgIHRoaW5nID0gU29tZXRoaW5nKCkKKyAgICAuLi4gICB0aGluZy5hID0gMzMKKyAgICAuLi4KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgIEF0dHJpYnV0ZUVycm9yOiBNb2NrIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdhJworCitQcm9iYWJseSB0aGUgYmVzdCB3YXkgb2Ygc29sdmluZyB0aGUgcHJvYmxlbSBpcyB0byBhZGQgY2xhc3MgYXR0cmlidXRlcyBhcworZGVmYXVsdCB2YWx1ZXMgZm9yIGluc3RhbmNlIG1lbWJlcnMgaW5pdGlhbGlzZWQgaW4gYF9faW5pdF9fYC4gTm90ZSB0aGF0IGlmCit5b3UgYXJlIG9ubHkgc2V0dGluZyBkZWZhdWx0IGF0dHJpYnV0ZXMgaW4gYF9faW5pdF9fYCB0aGVuIHByb3ZpZGluZyB0aGVtIHZpYQorY2xhc3MgYXR0cmlidXRlcyAoc2hhcmVkIGJldHdlZW4gaW5zdGFuY2VzIG9mIGNvdXJzZSkgaXMgZmFzdGVyIHRvby4gZS5nLgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBjbGFzcyBTb21ldGhpbmc6CisgICAgICAgIGEgPSAzMworCitUaGlzIGJyaW5ncyB1cCBhbm90aGVyIGlzc3VlLiBJdCBpcyByZWxhdGl2ZWx5IGNvbW1vbiB0byBwcm92aWRlIGEgZGVmYXVsdAordmFsdWUgb2YgYE5vbmVgIGZvciBtZW1iZXJzIHRoYXQgd2lsbCBsYXRlciBiZSBhbiBvYmplY3Qgb2YgYSBkaWZmZXJlbnQgdHlwZS4KK2BOb25lYCB3b3VsZCBiZSB1c2VsZXNzIGFzIGEgc3BlYyBiZWNhdXNlIGl0IHdvdWxkbid0IGxldCB5b3UgYWNjZXNzICphbnkqCithdHRyaWJ1dGVzIG9yIG1ldGhvZHMgb24gaXQuIEFzIGBOb25lYCBpcyAqbmV2ZXIqIGdvaW5nIHRvIGJlIHVzZWZ1bCBhcyBhCitzcGVjLCBhbmQgcHJvYmFibHkgaW5kaWNhdGVzIGEgbWVtYmVyIHRoYXQgd2lsbCBub3JtYWxseSBvZiBzb21lIG90aGVyIHR5cGUsCitgYXV0b3NwZWNgIGRvZXNuJ3QgdXNlIGEgc3BlYyBmb3IgbWVtYmVycyB0aGF0IGFyZSBzZXQgdG8gYE5vbmVgLiBUaGVzZSB3aWxsCitqdXN0IGJlIG9yZGluYXJ5IG1vY2tzICh3ZWxsIC0gYE1hZ2ljTW9ja3NgKToKKworICAgID4+PiBjbGFzcyBTb21ldGhpbmc6CisgICAgLi4uICAgICBtZW1iZXIgPSBOb25lCisgICAgLi4uCisgICAgPj4+IG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoU29tZXRoaW5nKQorICAgID4+PiBtb2NrLm1lbWJlci5mb28uYmFyLmJheigpCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLm1lbWJlci5mb28uYmFyLmJheigpJyBpZD0nLi4uJz4KKworSWYgbW9kaWZ5aW5nIHlvdXIgcHJvZHVjdGlvbiBjbGFzc2VzIHRvIGFkZCBkZWZhdWx0cyBpc24ndCB0byB5b3VyIGxpa2luZwordGhlbiB0aGVyZSBhcmUgbW9yZSBvcHRpb25zLiBPbmUgb2YgdGhlc2UgaXMgc2ltcGx5IHRvIHVzZSBhbiBpbnN0YW5jZSBhcyB0aGUKK3NwZWMgcmF0aGVyIHRoYW4gdGhlIGNsYXNzLiBUaGUgb3RoZXIgaXMgdG8gY3JlYXRlIGEgc3ViY2xhc3Mgb2YgdGhlCitwcm9kdWN0aW9uIGNsYXNzIGFuZCBhZGQgdGhlIGRlZmF1bHRzIHRvIHRoZSBzdWJjbGFzcyB3aXRob3V0IGFmZmVjdGluZyB0aGUKK3Byb2R1Y3Rpb24gY2xhc3MuIEJvdGggb2YgdGhlc2UgcmVxdWlyZSB5b3UgdG8gdXNlIGFuIGFsdGVybmF0aXZlIG9iamVjdCBhcwordGhlIHNwZWMuIFRoYW5rZnVsbHkgYHBhdGNoYCBzdXBwb3J0cyB0aGlzIC0geW91IGNhbiBzaW1wbHkgcGFzcyB0aGUKK2FsdGVybmF0aXZlIG9iamVjdCBhcyB0aGUgYGF1dG9zcGVjYCBhcmd1bWVudDoKKworICAgID4+PiBjbGFzcyBTb21ldGhpbmc6CisgICAgLi4uICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgIC4uLiAgICAgc2VsZi5hID0gMzMKKyAgICAuLi4KKyAgICA+Pj4gY2xhc3MgU29tZXRoaW5nRm9yVGVzdChTb21ldGhpbmcpOgorICAgIC4uLiAgIGEgPSAzMworICAgIC4uLgorICAgID4+PiBwID0gcGF0Y2goJ19fbWFpbl9fLlNvbWV0aGluZycsIGF1dG9zcGVjPVNvbWV0aGluZ0ZvclRlc3QpCisgICAgPj4+IG1vY2sgPSBwLnN0YXJ0KCkKKyAgICA+Pj4gbW9jay5hCisgICAgPE5vbkNhbGxhYmxlTWFnaWNNb2NrIG5hbWU9J1NvbWV0aGluZy5hJyBzcGVjPSdpbnQnIGlkPScuLi4nPgorCisKKy4uIFsjXSBUaGlzIG9ubHkgYXBwbGllcyB0byBjbGFzc2VzIG9yIGFscmVhZHkgaW5zdGFudGlhdGVkIG9iamVjdHMuIENhbGxpbmcKKyAgIGEgbW9ja2VkIGNsYXNzIHRvIGNyZWF0ZSBhIG1vY2sgaW5zdGFuY2UgKmRvZXMgbm90KiBjcmVhdGUgYSByZWFsIGluc3RhbmNlLgorICAgSXQgaXMgb25seSBhdHRyaWJ1dGUgbG9va3VwcyAtIGFsb25nIHdpdGggY2FsbHMgdG8gYGRpcmAgLSB0aGF0IGFyZSBkb25lLgorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QKaW5kZXggNTMwMTNkNy4uYmJhOGRiZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdApAQCAtMTEsMTcgKzExLDE0IEBACiAoSWYgeW91IGFyZSBhbHJlYWR5IGZhbWlsaWFyIHdpdGggdGhlIGJhc2ljIGNvbmNlcHRzIG9mIHRlc3RpbmcsIHlvdSBtaWdodCB3YW50CiB0byBza2lwIHRvIDpyZWY6YHRoZSBsaXN0IG9mIGFzc2VydCBtZXRob2RzIDxhc3NlcnQtbWV0aG9kcz5gLikKIAotVGhlIFB5dGhvbiB1bml0IHRlc3RpbmcgZnJhbWV3b3JrLCBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgIlB5VW5pdCwiIGlzIGEKLVB5dGhvbiBsYW5ndWFnZSB2ZXJzaW9uIG9mIEpVbml0LCBieSBLZW50IEJlY2sgYW5kIEVyaWNoIEdhbW1hLiBKVW5pdCBpcywgaW4KLXR1cm4sIGEgSmF2YSB2ZXJzaW9uIG9mIEtlbnQncyBTbWFsbHRhbGsgdGVzdGluZyBmcmFtZXdvcmsuICBFYWNoIGlzIHRoZSBkZQotZmFjdG8gc3RhbmRhcmQgdW5pdCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgaXRzIHJlc3BlY3RpdmUgbGFuZ3VhZ2UuCitUaGUgOm1vZDpgdW5pdHRlc3RgIHVuaXQgdGVzdGluZyBmcmFtZXdvcmsgd2FzIG9yaWdpbmFsbHkgaW5zcGlyZWQgYnkgSlVuaXQKK2FuZCBoYXMgYSBzaW1pbGFyIGZsYXZvciBhcyBtYWpvciB1bml0IHRlc3RpbmcgZnJhbWV3b3JrcyBpbiBvdGhlcgorbGFuZ3VhZ2VzLiAgSXQgc3VwcG9ydHMgdGVzdCBhdXRvbWF0aW9uLCBzaGFyaW5nIG9mIHNldHVwIGFuZCBzaHV0ZG93biBjb2RlCitmb3IgdGVzdHMsIGFnZ3JlZ2F0aW9uIG9mIHRlc3RzIGludG8gY29sbGVjdGlvbnMsIGFuZCBpbmRlcGVuZGVuY2Ugb2YgdGhlCit0ZXN0cyBmcm9tIHRoZSByZXBvcnRpbmcgZnJhbWV3b3JrLgogCi06bW9kOmB1bml0dGVzdGAgc3VwcG9ydHMgdGVzdCBhdXRvbWF0aW9uLCBzaGFyaW5nIG9mIHNldHVwIGFuZCBzaHV0ZG93biBjb2RlIGZvcgotdGVzdHMsIGFnZ3JlZ2F0aW9uIG9mIHRlc3RzIGludG8gY29sbGVjdGlvbnMsIGFuZCBpbmRlcGVuZGVuY2Ugb2YgdGhlIHRlc3RzIGZyb20KLXRoZSByZXBvcnRpbmcgZnJhbWV3b3JrLiAgVGhlIDptb2Q6YHVuaXR0ZXN0YCBtb2R1bGUgcHJvdmlkZXMgY2xhc3NlcyB0aGF0IG1ha2UKLWl0IGVhc3kgdG8gc3VwcG9ydCB0aGVzZSBxdWFsaXRpZXMgZm9yIGEgc2V0IG9mIHRlc3RzLgotCi1UbyBhY2hpZXZlIHRoaXMsIDptb2Q6YHVuaXR0ZXN0YCBzdXBwb3J0cyBzb21lIGltcG9ydGFudCBjb25jZXB0czoKK1RvIGFjaGlldmUgdGhpcywgOm1vZDpgdW5pdHRlc3RgIHN1cHBvcnRzIHNvbWUgaW1wb3J0YW50IGNvbmNlcHRzIGluIGFuCitvYmplY3Qtb3JpZW50ZWQgd2F5OgogCiB0ZXN0IGZpeHR1cmUKICAgIEEgOmRmbjpgdGVzdCBmaXh0dXJlYCByZXByZXNlbnRzIHRoZSBwcmVwYXJhdGlvbiBuZWVkZWQgdG8gcGVyZm9ybSBvbmUgb3IgbW9yZQpAQCAtMzAsNyArMjcsNyBAQAogICAgcHJvY2Vzcy4KIAogdGVzdCBjYXNlCi0gICBBIDpkZm46YHRlc3QgY2FzZWAgaXMgdGhlIHNtYWxsZXN0IHVuaXQgb2YgdGVzdGluZy4gIEl0IGNoZWNrcyBmb3IgYSBzcGVjaWZpYworICAgQSA6ZGZuOmB0ZXN0IGNhc2VgIGlzIHRoZSBpbmRpdmlkdWFsIHVuaXQgb2YgdGVzdGluZy4gIEl0IGNoZWNrcyBmb3IgYSBzcGVjaWZpYwogICAgcmVzcG9uc2UgdG8gYSBwYXJ0aWN1bGFyIHNldCBvZiBpbnB1dHMuICA6bW9kOmB1bml0dGVzdGAgcHJvdmlkZXMgYSBiYXNlIGNsYXNzLAogICAgOmNsYXNzOmBUZXN0Q2FzZWAsIHdoaWNoIG1heSBiZSB1c2VkIHRvIGNyZWF0ZSBuZXcgdGVzdCBjYXNlcy4KIApAQCAtNDQsNDMgKzQxLDEyIEBACiAgICBhIHRleHR1YWwgaW50ZXJmYWNlLCBvciByZXR1cm4gYSBzcGVjaWFsIHZhbHVlIHRvIGluZGljYXRlIHRoZSByZXN1bHRzIG9mCiAgICBleGVjdXRpbmcgdGhlIHRlc3RzLgogCi1UaGUgdGVzdCBjYXNlIGFuZCB0ZXN0IGZpeHR1cmUgY29uY2VwdHMgYXJlIHN1cHBvcnRlZCB0aHJvdWdoIHRoZQotOmNsYXNzOmBUZXN0Q2FzZWAgYW5kIDpjbGFzczpgRnVuY3Rpb25UZXN0Q2FzZWAgY2xhc3NlczsgdGhlIGZvcm1lciBzaG91bGQgYmUKLXVzZWQgd2hlbiBjcmVhdGluZyBuZXcgdGVzdHMsIGFuZCB0aGUgbGF0dGVyIGNhbiBiZSB1c2VkIHdoZW4gaW50ZWdyYXRpbmcKLWV4aXN0aW5nIHRlc3QgY29kZSB3aXRoIGEgOm1vZDpgdW5pdHRlc3RgXCAtZHJpdmVuIGZyYW1ld29yay4gV2hlbiBidWlsZGluZyB0ZXN0Ci1maXh0dXJlcyB1c2luZyA6Y2xhc3M6YFRlc3RDYXNlYCwgdGhlIDptZXRoOmB+VGVzdENhc2Uuc2V0VXBgIGFuZAotOm1ldGg6YH5UZXN0Q2FzZS50ZWFyRG93bmAgbWV0aG9kcyBjYW4gYmUgb3ZlcnJpZGRlbiB0byBwcm92aWRlIGluaXRpYWxpemF0aW9uCi1hbmQgY2xlYW51cCBmb3IgdGhlIGZpeHR1cmUuICBXaXRoIDpjbGFzczpgRnVuY3Rpb25UZXN0Q2FzZWAsIGV4aXN0aW5nIGZ1bmN0aW9ucwotY2FuIGJlIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IgZm9yIHRoZXNlIHB1cnBvc2VzLiAgV2hlbiB0aGUgdGVzdCBpcyBydW4sIHRoZQotZml4dHVyZSBpbml0aWFsaXphdGlvbiBpcyBydW4gZmlyc3Q7IGlmIGl0IHN1Y2NlZWRzLCB0aGUgY2xlYW51cCBtZXRob2QgaXMgcnVuCi1hZnRlciB0aGUgdGVzdCBoYXMgYmVlbiBleGVjdXRlZCwgcmVnYXJkbGVzcyBvZiB0aGUgb3V0Y29tZSBvZiB0aGUgdGVzdC4gIEVhY2gKLWluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YFRlc3RDYXNlYCB3aWxsIG9ubHkgYmUgdXNlZCB0byBydW4gYSBzaW5nbGUgdGVzdCBtZXRob2QsCi1zbyBhIG5ldyBmaXh0dXJlIGlzIGNyZWF0ZWQgZm9yIGVhY2ggdGVzdC4KLQotVGVzdCBzdWl0ZXMgYXJlIGltcGxlbWVudGVkIGJ5IHRoZSA6Y2xhc3M6YFRlc3RTdWl0ZWAgY2xhc3MuICBUaGlzIGNsYXNzIGFsbG93cwotaW5kaXZpZHVhbCB0ZXN0cyBhbmQgdGVzdCBzdWl0ZXMgdG8gYmUgYWdncmVnYXRlZDsgd2hlbiB0aGUgc3VpdGUgaXMgZXhlY3V0ZWQsCi1hbGwgdGVzdHMgYWRkZWQgZGlyZWN0bHkgdG8gdGhlIHN1aXRlIGFuZCBpbiAiY2hpbGQiIHRlc3Qgc3VpdGVzIGFyZSBydW4uCi0KLUEgdGVzdCBydW5uZXIgaXMgYW4gb2JqZWN0IHRoYXQgcHJvdmlkZXMgYSBzaW5nbGUgbWV0aG9kLAotOm1ldGg6YH5UZXN0UnVubmVyLnJ1bmAsIHdoaWNoIGFjY2VwdHMgYSA6Y2xhc3M6YFRlc3RDYXNlYCBvciA6Y2xhc3M6YFRlc3RTdWl0ZWAKLW9iamVjdCBhcyBhIHBhcmFtZXRlciwgYW5kIHJldHVybnMgYSByZXN1bHQgb2JqZWN0LiAgVGhlIGNsYXNzCi06Y2xhc3M6YFRlc3RSZXN1bHRgIGlzIHByb3ZpZGVkIGZvciB1c2UgYXMgdGhlIHJlc3VsdCBvYmplY3QuIDptb2Q6YHVuaXR0ZXN0YAotcHJvdmlkZXMgdGhlIDpjbGFzczpgVGV4dFRlc3RSdW5uZXJgIGFzIGFuIGV4YW1wbGUgdGVzdCBydW5uZXIgd2hpY2ggcmVwb3J0cwotdGVzdCByZXN1bHRzIG9uIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW0gYnkgZGVmYXVsdC4gIEFsdGVybmF0ZSBydW5uZXJzIGNhbiBiZQotaW1wbGVtZW50ZWQgZm9yIG90aGVyIGVudmlyb25tZW50cyAoc3VjaCBhcyBncmFwaGljYWwgZW52aXJvbm1lbnRzKSB3aXRob3V0IGFueQotbmVlZCB0byBkZXJpdmUgZnJvbSBhIHNwZWNpZmljIGNsYXNzLgotCiAKIC4uIHNlZWFsc286OgogCiAgICBNb2R1bGUgOm1vZDpgZG9jdGVzdGAKICAgICAgIEFub3RoZXIgdGVzdC1zdXBwb3J0IG1vZHVsZSB3aXRoIGEgdmVyeSBkaWZmZXJlbnQgZmxhdm9yLgogCi0gICBgdW5pdHRlc3QyOiBBIGJhY2twb3J0IG9mIG5ldyB1bml0dGVzdCBmZWF0dXJlcyBmb3IgUHl0aG9uIDIuNC0yLjYgPGh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS91bml0dGVzdDI+YF8KLSAgICAgIE1hbnkgbmV3IGZlYXR1cmVzIHdlcmUgYWRkZWQgdG8gdW5pdHRlc3QgaW4gUHl0aG9uIDIuNywgaW5jbHVkaW5nIHRlc3QKLSAgICAgIGRpc2NvdmVyeS4gdW5pdHRlc3QyIGFsbG93cyB5b3UgdG8gdXNlIHRoZXNlIGZlYXR1cmVzIHdpdGggZWFybGllcgotICAgICAgdmVyc2lvbnMgb2YgUHl0aG9uLgotCiAgICBgU2ltcGxlIFNtYWxsdGFsayBUZXN0aW5nOiBXaXRoIFBhdHRlcm5zIDxodHRwOi8vd3d3LlhQcm9ncmFtbWluZy5jb20vdGVzdGZyYW0uaHRtPmBfCiAgICAgICBLZW50IEJlY2sncyBvcmlnaW5hbCBwYXBlciBvbiB0ZXN0aW5nIGZyYW1ld29ya3MgdXNpbmcgdGhlIHBhdHRlcm4gc2hhcmVkCiAgICAgICBieSA6bW9kOmB1bml0dGVzdGAuCkBAIC04OSw3ICs1NSw3IEBACiAgICAgICBUaGlyZC1wYXJ0eSB1bml0dGVzdCBmcmFtZXdvcmtzIHdpdGggYSBsaWdodGVyLXdlaWdodCBzeW50YXggZm9yIHdyaXRpbmcKICAgICAgIHRlc3RzLiAgRm9yIGV4YW1wbGUsIGBgYXNzZXJ0IGZ1bmMoMTApID09IDQyYGAuCiAKLSAgIGBUaGUgUHl0aG9uIFRlc3RpbmcgVG9vbHMgVGF4b25vbXkgPGh0dHA6Ly9weWNoZWVzZWNha2Uub3JnL3dpa2kvUHl0aG9uVGVzdGluZ1Rvb2xzVGF4b25vbXk+YF8KKyAgIGBUaGUgUHl0aG9uIFRlc3RpbmcgVG9vbHMgVGF4b25vbXkgPGh0dHA6Ly93aWtpLnB5dGhvbi5vcmcvbW9pbi9QeXRob25UZXN0aW5nVG9vbHNUYXhvbm9teT5gXwogICAgICAgQW4gZXh0ZW5zaXZlIGxpc3Qgb2YgUHl0aG9uIHRlc3RpbmcgdG9vbHMgaW5jbHVkaW5nIGZ1bmN0aW9uYWwgdGVzdGluZwogICAgICAgZnJhbWV3b3JrcyBhbmQgbW9jayBvYmplY3QgbGlicmFyaWVzLgogCkBAIC0xNzMsMTUgKzEzOSw4IEBACiAKICAgIE9LCiAKLUluc3RlYWQgb2YgOmZ1bmM6YHVuaXR0ZXN0Lm1haW5gLCB0aGVyZSBhcmUgb3RoZXIgd2F5cyB0byBydW4gdGhlIHRlc3RzIHdpdGggYQotZmluZXIgbGV2ZWwgb2YgY29udHJvbCwgbGVzcyB0ZXJzZSBvdXRwdXQsIGFuZCBubyByZXF1aXJlbWVudCB0byBiZSBydW4gZnJvbSB0aGUKLWNvbW1hbmQgbGluZS4gIEZvciBleGFtcGxlLCB0aGUgbGFzdCB0d28gbGluZXMgbWF5IGJlIHJlcGxhY2VkIHdpdGg6OgotCi0gICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKS5sb2FkVGVzdHNGcm9tVGVzdENhc2UoVGVzdFNlcXVlbmNlRnVuY3Rpb25zKQotICAgdW5pdHRlc3QuVGV4dFRlc3RSdW5uZXIodmVyYm9zaXR5PTIpLnJ1bihzdWl0ZSkKLQotUnVubmluZyB0aGUgcmV2aXNlZCBzY3JpcHQgZnJvbSB0aGUgaW50ZXJwcmV0ZXIgb3IgYW5vdGhlciBzY3JpcHQgcHJvZHVjZXMgdGhlCi1mb2xsb3dpbmcgb3V0cHV0OjoKK1Bhc3NpbmcgdGhlIGBgLXZgYCBvcHRpb24gdG8geW91ciB0ZXN0IHNjcmlwdCB3aWxsIGluc3RydWN0IDpmdW5jOmB1bml0dGVzdC5tYWluYAordG8gZW5hYmxlIGEgaGlnaGVyIGxldmVsIG9mIHZlcmJvc2l0eSwgYW5kIHByb2R1Y2UgdGhlIGZvbGxvd2luZyBvdXRwdXQ6OgogCiAgICB0ZXN0X2Nob2ljZSAoX19tYWluX18uVGVzdFNlcXVlbmNlRnVuY3Rpb25zKSAuLi4gb2sKICAgIHRlc3Rfc2FtcGxlIChfX21haW5fXy5UZXN0U2VxdWVuY2VGdW5jdGlvbnMpIC4uLiBvawpAQCAtMzU5LDQ1ICszMTgsMzAgQEAKIFRvIG1ha2UgeW91ciBvd24gdGVzdCBjYXNlcyB5b3UgbXVzdCB3cml0ZSBzdWJjbGFzc2VzIG9mCiA6Y2xhc3M6YFRlc3RDYXNlYCBvciB1c2UgOmNsYXNzOmBGdW5jdGlvblRlc3RDYXNlYC4KIAotQW4gaW5zdGFuY2Ugb2YgYSA6Y2xhc3M6YFRlc3RDYXNlYFwgLWRlcml2ZWQgY2xhc3MgaXMgYW4gb2JqZWN0IHRoYXQgY2FuCi1jb21wbGV0ZWx5IHJ1biBhIHNpbmdsZSB0ZXN0IG1ldGhvZCwgdG9nZXRoZXIgd2l0aCBvcHRpb25hbCBzZXQtdXAgYW5kIHRpZHktdXAKLWNvZGUuCi0KIFRoZSB0ZXN0aW5nIGNvZGUgb2YgYSA6Y2xhc3M6YFRlc3RDYXNlYCBpbnN0YW5jZSBzaG91bGQgYmUgZW50aXJlbHkgc2VsZgogY29udGFpbmVkLCBzdWNoIHRoYXQgaXQgY2FuIGJlIHJ1biBlaXRoZXIgaW4gaXNvbGF0aW9uIG9yIGluIGFyYml0cmFyeQogY29tYmluYXRpb24gd2l0aCBhbnkgbnVtYmVyIG9mIG90aGVyIHRlc3QgY2FzZXMuCiAKLVRoZSBzaW1wbGVzdCA6Y2xhc3M6YFRlc3RDYXNlYCBzdWJjbGFzcyB3aWxsIHNpbXBseSBvdmVycmlkZSB0aGUKLTptZXRoOmB+VGVzdENhc2UucnVuVGVzdGAgbWV0aG9kIGluIG9yZGVyIHRvIHBlcmZvcm0gc3BlY2lmaWMgdGVzdGluZyBjb2RlOjoKK1RoZSBzaW1wbGVzdCA6Y2xhc3M6YFRlc3RDYXNlYCBzdWJjbGFzcyB3aWxsIHNpbXBseSBpbXBsZW1lbnQgYSB0ZXN0IG1ldGhvZAorKGkuZS4gYSBtZXRob2Qgd2hvc2UgbmFtZSBzdGFydHMgd2l0aCBgYHRlc3RgYCkgaW4gb3JkZXIgdG8gcGVyZm9ybSBzcGVjaWZpYwordGVzdGluZyBjb2RlOjoKIAogICAgaW1wb3J0IHVuaXR0ZXN0CiAKICAgIGNsYXNzIERlZmF1bHRXaWRnZXRTaXplVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAgIGRlZiBydW5UZXN0KHNlbGYpOgorICAgICAgIGRlZiB0ZXN0X2RlZmF1bHRfd2lkZ2V0X3NpemUoc2VsZik6CiAgICAgICAgICAgIHdpZGdldCA9IFdpZGdldCgnVGhlIHdpZGdldCcpCi0gICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2lkZ2V0LnNpemUoKSwgKDUwLCA1MCksICdpbmNvcnJlY3QgZGVmYXVsdCBzaXplJykKKyAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3aWRnZXQuc2l6ZSgpLCAoNTAsIDUwKSkKIAogTm90ZSB0aGF0IGluIG9yZGVyIHRvIHRlc3Qgc29tZXRoaW5nLCB3ZSB1c2Ugb25lIG9mIHRoZSA6bWV0aDpgYXNzZXJ0XCpgCiBtZXRob2RzIHByb3ZpZGVkIGJ5IHRoZSA6Y2xhc3M6YFRlc3RDYXNlYCBiYXNlIGNsYXNzLiAgSWYgdGhlIHRlc3QgZmFpbHMsIGFuCiBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQsIGFuZCA6bW9kOmB1bml0dGVzdGAgd2lsbCBpZGVudGlmeSB0aGUgdGVzdCBjYXNlIGFzIGEKLTpkZm46YGZhaWx1cmVgLiAgQW55IG90aGVyIGV4Y2VwdGlvbnMgd2lsbCBiZSB0cmVhdGVkIGFzIDpkZm46YGVycm9yc2AuIFRoaXMKLWhlbHBzIHlvdSBpZGVudGlmeSB3aGVyZSB0aGUgcHJvYmxlbSBpczogOmRmbjpgZmFpbHVyZXNgIGFyZSBjYXVzZWQgYnkgaW5jb3JyZWN0Ci1yZXN1bHRzIC0gYSA1IHdoZXJlIHlvdSBleHBlY3RlZCBhIDYuIDpkZm46YEVycm9yc2AgYXJlIGNhdXNlZCBieSBpbmNvcnJlY3QKLWNvZGUgLSBlLmcuLCBhIDpleGM6YFR5cGVFcnJvcmAgY2F1c2VkIGJ5IGFuIGluY29ycmVjdCBmdW5jdGlvbiBjYWxsLgorOmRmbjpgZmFpbHVyZWAuICBBbnkgb3RoZXIgZXhjZXB0aW9ucyB3aWxsIGJlIHRyZWF0ZWQgYXMgOmRmbjpgZXJyb3JzYC4KIAotVGhlIHdheSB0byBydW4gYSB0ZXN0IGNhc2Ugd2lsbCBiZSBkZXNjcmliZWQgbGF0ZXIuICBGb3Igbm93LCBub3RlIHRoYXQgdG8KLWNvbnN0cnVjdCBhbiBpbnN0YW5jZSBvZiBzdWNoIGEgdGVzdCBjYXNlLCB3ZSBjYWxsIGl0cyBjb25zdHJ1Y3RvciB3aXRob3V0Ci1hcmd1bWVudHM6OgotCi0gICB0ZXN0Q2FzZSA9IERlZmF1bHRXaWRnZXRTaXplVGVzdENhc2UoKQotCi1Ob3csIHN1Y2ggdGVzdCBjYXNlcyBjYW4gYmUgbnVtZXJvdXMsIGFuZCB0aGVpciBzZXQtdXAgY2FuIGJlIHJlcGV0aXRpdmUuICBJbgotdGhlIGFib3ZlIGNhc2UsIGNvbnN0cnVjdGluZyBhIDpjbGFzczpgV2lkZ2V0YCBpbiBlYWNoIG9mIDEwMCBXaWRnZXQgdGVzdCBjYXNlCi1zdWJjbGFzc2VzIHdvdWxkIG1lYW4gdW5zaWdodGx5IGR1cGxpY2F0aW9uLgotCi1MdWNraWx5LCB3ZSBjYW4gZmFjdG9yIG91dCBzdWNoIHNldC11cCBjb2RlIGJ5IGltcGxlbWVudGluZyBhIG1ldGhvZCBjYWxsZWQKLTptZXRoOmB+VGVzdENhc2Uuc2V0VXBgLCB3aGljaCB0aGUgdGVzdGluZyBmcmFtZXdvcmsgd2lsbCBhdXRvbWF0aWNhbGx5IGNhbGwgZm9yCi11cyB3aGVuIHdlIHJ1biB0aGUgdGVzdDo6CitUZXN0cyBjYW4gYmUgbnVtZXJvdXMsIGFuZCB0aGVpciBzZXQtdXAgY2FuIGJlIHJlcGV0aXRpdmUuICBMdWNraWx5LCB3ZQorY2FuIGZhY3RvciBvdXQgc2V0LXVwIGNvZGUgYnkgaW1wbGVtZW50aW5nIGEgbWV0aG9kIGNhbGxlZAorOm1ldGg6YH5UZXN0Q2FzZS5zZXRVcGAsIHdoaWNoIHRoZSB0ZXN0aW5nIGZyYW1ld29yayB3aWxsIGF1dG9tYXRpY2FsbHkKK2NhbGwgZm9yIGV2ZXJ5IHNpbmdsZSB0ZXN0IHdlIHJ1bjo6CiAKICAgIGltcG9ydCB1bml0dGVzdAogCkBAIC00MDUsMjMgKzM0OSwyNiBAQAogICAgICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgICAgc2VsZi53aWRnZXQgPSBXaWRnZXQoJ1RoZSB3aWRnZXQnKQogCi0gICBjbGFzcyBEZWZhdWx0V2lkZ2V0U2l6ZVRlc3RDYXNlKFNpbXBsZVdpZGdldFRlc3RDYXNlKToKLSAgICAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICBkZWYgdGVzdF9kZWZhdWx0X3dpZGdldF9zaXplKHNlbGYpOgogICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYud2lkZ2V0LnNpemUoKSwgKDUwLDUwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5jb3JyZWN0IGRlZmF1bHQgc2l6ZScpCiAKLSAgIGNsYXNzIFdpZGdldFJlc2l6ZVRlc3RDYXNlKFNpbXBsZVdpZGdldFRlc3RDYXNlKToKLSAgICAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICBkZWYgdGVzdF93aWRnZXRfcmVzaXplKHNlbGYpOgogICAgICAgICAgICBzZWxmLndpZGdldC5yZXNpemUoMTAwLDE1MCkKICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLndpZGdldC5zaXplKCksICgxMDAsMTUwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3Jvbmcgc2l6ZSBhZnRlciByZXNpemUnKQogCisuLiBub3RlOjoKKyAgIFRoZSBvcmRlciBpbiB3aGljaCB0aGUgdmFyaW91cyB0ZXN0cyB3aWxsIGJlIHJ1biBpcyBkZXRlcm1pbmVkCisgICBieSBzb3J0aW5nIHRoZSB0ZXN0IG1ldGhvZCBuYW1lcyB3aXRoIHJlc3BlY3QgdG8gdGhlIGJ1aWx0LWluCisgICBvcmRlcmluZyBmb3Igc3RyaW5ncy4KKwogSWYgdGhlIDptZXRoOmB+VGVzdENhc2Uuc2V0VXBgIG1ldGhvZCByYWlzZXMgYW4gZXhjZXB0aW9uIHdoaWxlIHRoZSB0ZXN0IGlzCi1ydW5uaW5nLCB0aGUgZnJhbWV3b3JrIHdpbGwgY29uc2lkZXIgdGhlIHRlc3QgdG8gaGF2ZSBzdWZmZXJlZCBhbiBlcnJvciwgYW5kIHRoZQotOm1ldGg6YH5UZXN0Q2FzZS5ydW5UZXN0YCBtZXRob2Qgd2lsbCBub3QgYmUgZXhlY3V0ZWQuCitydW5uaW5nLCB0aGUgZnJhbWV3b3JrIHdpbGwgY29uc2lkZXIgdGhlIHRlc3QgdG8gaGF2ZSBzdWZmZXJlZCBhbiBlcnJvciwgYW5kCit0aGUgdGVzdCBtZXRob2Qgd2lsbCBub3QgYmUgZXhlY3V0ZWQuCiAKIFNpbWlsYXJseSwgd2UgY2FuIHByb3ZpZGUgYSA6bWV0aDpgflRlc3RDYXNlLnRlYXJEb3duYCBtZXRob2QgdGhhdCB0aWRpZXMgdXAKLWFmdGVyIHRoZSA6bWV0aDpgflRlc3RDYXNlLnJ1blRlc3RgIG1ldGhvZCBoYXMgYmVlbiBydW46OgorYWZ0ZXIgdGhlIHRlc3QgbWV0aG9kIGhhcyBiZWVuIHJ1bjo6CiAKICAgIGltcG9ydCB1bml0dGVzdAogCkBAIC00MzEsNTkgKzM3OCwyMCBAQAogCiAgICAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICAgICBzZWxmLndpZGdldC5kaXNwb3NlKCkKLSAgICAgICAgICAgc2VsZi53aWRnZXQgPSBOb25lCiAKLUlmIDptZXRoOmB+VGVzdENhc2Uuc2V0VXBgIHN1Y2NlZWRlZCwgdGhlIDptZXRoOmB+VGVzdENhc2UudGVhckRvd25gIG1ldGhvZCB3aWxsCi1iZSBydW4gd2hldGhlciA6bWV0aDpgflRlc3RDYXNlLnJ1blRlc3RgIHN1Y2NlZWRlZCBvciBub3QuCitJZiA6bWV0aDpgflRlc3RDYXNlLnNldFVwYCBzdWNjZWVkZWQsIDptZXRoOmB+VGVzdENhc2UudGVhckRvd25gIHdpbGwgYmUKK3J1biB3aGV0aGVyIHRoZSB0ZXN0IG1ldGhvZCBzdWNjZWVkZWQgb3Igbm90LgogCiBTdWNoIGEgd29ya2luZyBlbnZpcm9ubWVudCBmb3IgdGhlIHRlc3RpbmcgY29kZSBpcyBjYWxsZWQgYSA6ZGZuOmBmaXh0dXJlYC4KIAotT2Z0ZW4sIG1hbnkgc21hbGwgdGVzdCBjYXNlcyB3aWxsIHVzZSB0aGUgc2FtZSBmaXh0dXJlLiAgSW4gdGhpcyBjYXNlLCB3ZSB3b3VsZAotZW5kIHVwIHN1YmNsYXNzaW5nIDpjbGFzczpgU2ltcGxlV2lkZ2V0VGVzdENhc2VgIGludG8gbWFueSBzbWFsbCBvbmUtbWV0aG9kCi1jbGFzc2VzIHN1Y2ggYXMgOmNsYXNzOmBEZWZhdWx0V2lkZ2V0U2l6ZVRlc3RDYXNlYC4gIFRoaXMgaXMgdGltZS1jb25zdW1pbmcgYW5kCi1kaXNjb3VyYWdpbmcsIHNvIGluIHRoZSBzYW1lIHZlaW4gYXMgSlVuaXQsIDptb2Q6YHVuaXR0ZXN0YCBwcm92aWRlcyBhIHNpbXBsZXIKLW1lY2hhbmlzbTo6Ci0KLSAgIGltcG9ydCB1bml0dGVzdAotCi0gICBjbGFzcyBXaWRnZXRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICAgICBzZWxmLndpZGdldCA9IFdpZGdldCgnVGhlIHdpZGdldCcpCi0KLSAgICAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgICAgIHNlbGYud2lkZ2V0LmRpc3Bvc2UoKQotICAgICAgICAgICBzZWxmLndpZGdldCA9IE5vbmUKLQotICAgICAgIGRlZiB0ZXN0X2RlZmF1bHRfc2l6ZShzZWxmKToKLSAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLndpZGdldC5zaXplKCksICg1MCw1MCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luY29ycmVjdCBkZWZhdWx0IHNpemUnKQotCi0gICAgICAgZGVmIHRlc3RfcmVzaXplKHNlbGYpOgotICAgICAgICAgICBzZWxmLndpZGdldC5yZXNpemUoMTAwLDE1MCkKLSAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLndpZGdldC5zaXplKCksICgxMDAsMTUwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3Jvbmcgc2l6ZSBhZnRlciByZXNpemUnKQotCi1IZXJlIHdlIGhhdmUgbm90IHByb3ZpZGVkIGEgOm1ldGg6YH5UZXN0Q2FzZS5ydW5UZXN0YCBtZXRob2QsIGJ1dCBoYXZlIGluc3RlYWQKLXByb3ZpZGVkIHR3byBkaWZmZXJlbnQgdGVzdCBtZXRob2RzLiAgQ2xhc3MgaW5zdGFuY2VzIHdpbGwgbm93IGVhY2ggcnVuIG9uZSBvZgotdGhlIDptZXRoOmB0ZXN0X1wqYCBtZXRob2RzLCB3aXRoIGBgc2VsZi53aWRnZXRgYCBjcmVhdGVkIGFuZCBkZXN0cm95ZWQKLXNlcGFyYXRlbHkgZm9yIGVhY2ggaW5zdGFuY2UuICBXaGVuIGNyZWF0aW5nIGFuIGluc3RhbmNlIHdlIG11c3Qgc3BlY2lmeSB0aGUKLXRlc3QgbWV0aG9kIGl0IGlzIHRvIHJ1bi4gIFdlIGRvIHRoaXMgYnkgcGFzc2luZyB0aGUgbWV0aG9kIG5hbWUgaW4gdGhlCi1jb25zdHJ1Y3Rvcjo6Ci0KLSAgIGRlZmF1bHRTaXplVGVzdENhc2UgPSBXaWRnZXRUZXN0Q2FzZSgndGVzdF9kZWZhdWx0X3NpemUnKQotICAgcmVzaXplVGVzdENhc2UgPSBXaWRnZXRUZXN0Q2FzZSgndGVzdF9yZXNpemUnKQotCiBUZXN0IGNhc2UgaW5zdGFuY2VzIGFyZSBncm91cGVkIHRvZ2V0aGVyIGFjY29yZGluZyB0byB0aGUgZmVhdHVyZXMgdGhleSB0ZXN0LgogOm1vZDpgdW5pdHRlc3RgIHByb3ZpZGVzIGEgbWVjaGFuaXNtIGZvciB0aGlzOiB0aGUgOmRmbjpgdGVzdCBzdWl0ZWAsCi1yZXByZXNlbnRlZCBieSA6bW9kOmB1bml0dGVzdGAncyA6Y2xhc3M6YFRlc3RTdWl0ZWAgY2xhc3M6OgorcmVwcmVzZW50ZWQgYnkgOm1vZDpgdW5pdHRlc3RgJ3MgOmNsYXNzOmBUZXN0U3VpdGVgIGNsYXNzLiAgSW4gbW9zdCBjYXNlcywKK2NhbGxpbmcgOmZ1bmM6YHVuaXR0ZXN0Lm1haW5gIHdpbGwgZG8gdGhlIHJpZ2h0IHRoaW5nIGFuZCBjb2xsZWN0IGFsbCB0aGUKK21vZHVsZSdzIHRlc3QgY2FzZXMgZm9yIHlvdSwgYW5kIHRoZW4gZXhlY3V0ZSB0aGVtLgogCi0gICB3aWRnZXRUZXN0U3VpdGUgPSB1bml0dGVzdC5UZXN0U3VpdGUoKQotICAgd2lkZ2V0VGVzdFN1aXRlLmFkZFRlc3QoV2lkZ2V0VGVzdENhc2UoJ3Rlc3RfZGVmYXVsdF9zaXplJykpCi0gICB3aWRnZXRUZXN0U3VpdGUuYWRkVGVzdChXaWRnZXRUZXN0Q2FzZSgndGVzdF9yZXNpemUnKSkKLQotRm9yIHRoZSBlYXNlIG9mIHJ1bm5pbmcgdGVzdHMsIGFzIHdlIHdpbGwgc2VlIGxhdGVyLCBpdCBpcyBhIGdvb2QgaWRlYSB0bwotcHJvdmlkZSBpbiBlYWNoIHRlc3QgbW9kdWxlIGEgY2FsbGFibGUgb2JqZWN0IHRoYXQgcmV0dXJucyBhIHByZS1idWlsdCB0ZXN0Ci1zdWl0ZTo6CitIb3dldmVyLCBzaG91bGQgeW91IHdhbnQgdG8gY3VzdG9taXplIHRoZSBidWlsZGluZyBvZiB5b3VyIHRlc3Qgc3VpdGUsCit5b3UgY2FuIGRvIGl0IHlvdXJzZWxmOjoKIAogICAgZGVmIHN1aXRlKCk6CiAgICAgICAgc3VpdGUgPSB1bml0dGVzdC5UZXN0U3VpdGUoKQpAQCAtNDkxLDM3ICszOTksNiBAQAogICAgICAgIHN1aXRlLmFkZFRlc3QoV2lkZ2V0VGVzdENhc2UoJ3Rlc3RfcmVzaXplJykpCiAgICAgICAgcmV0dXJuIHN1aXRlCiAKLW9yIGV2ZW46OgotCi0gICBkZWYgc3VpdGUoKToKLSAgICAgICB0ZXN0cyA9IFsndGVzdF9kZWZhdWx0X3NpemUnLCAndGVzdF9yZXNpemUnXQotCi0gICAgICAgcmV0dXJuIHVuaXR0ZXN0LlRlc3RTdWl0ZShtYXAoV2lkZ2V0VGVzdENhc2UsIHRlc3RzKSkKLQotU2luY2UgaXQgaXMgYSBjb21tb24gcGF0dGVybiB0byBjcmVhdGUgYSA6Y2xhc3M6YFRlc3RDYXNlYCBzdWJjbGFzcyB3aXRoIG1hbnkKLXNpbWlsYXJseSBuYW1lZCB0ZXN0IGZ1bmN0aW9ucywgOm1vZDpgdW5pdHRlc3RgIHByb3ZpZGVzIGEgOmNsYXNzOmBUZXN0TG9hZGVyYAotY2xhc3MgdGhhdCBjYW4gYmUgdXNlZCB0byBhdXRvbWF0ZSB0aGUgcHJvY2VzcyBvZiBjcmVhdGluZyBhIHRlc3Qgc3VpdGUgYW5kCi1wb3B1bGF0aW5nIGl0IHdpdGggaW5kaXZpZHVhbCB0ZXN0cy4gRm9yIGV4YW1wbGUsIDo6Ci0KLSAgIHN1aXRlID0gdW5pdHRlc3QuVGVzdExvYWRlcigpLmxvYWRUZXN0c0Zyb21UZXN0Q2FzZShXaWRnZXRUZXN0Q2FzZSkKLQotd2lsbCBjcmVhdGUgYSB0ZXN0IHN1aXRlIHRoYXQgd2lsbCBydW4gYGBXaWRnZXRUZXN0Q2FzZS50ZXN0X2RlZmF1bHRfc2l6ZSgpYGAgYW5kCi1gYFdpZGdldFRlc3RDYXNlLnRlc3RfcmVzaXplYGAuIDpjbGFzczpgVGVzdExvYWRlcmAgdXNlcyB0aGUgYGAndGVzdCdgYCBtZXRob2QKLW5hbWUgcHJlZml4IHRvIGlkZW50aWZ5IHRlc3QgbWV0aG9kcyBhdXRvbWF0aWNhbGx5LgotCi1Ob3RlIHRoYXQgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSB2YXJpb3VzIHRlc3QgY2FzZXMgd2lsbCBiZSBydW4gaXMKLWRldGVybWluZWQgYnkgc29ydGluZyB0aGUgdGVzdCBmdW5jdGlvbiBuYW1lcyB3aXRoIHJlc3BlY3QgdG8gdGhlCi1idWlsdC1pbiBvcmRlcmluZyBmb3Igc3RyaW5ncy4KLQotT2Z0ZW4gaXQgaXMgZGVzaXJhYmxlIHRvIGdyb3VwIHN1aXRlcyBvZiB0ZXN0IGNhc2VzIHRvZ2V0aGVyLCBzbyBhcyB0byBydW4gdGVzdHMKLWZvciB0aGUgd2hvbGUgc3lzdGVtIGF0IG9uY2UuICBUaGlzIGlzIGVhc3ksIHNpbmNlIDpjbGFzczpgVGVzdFN1aXRlYCBpbnN0YW5jZXMKLWNhbiBiZSBhZGRlZCB0byBhIDpjbGFzczpgVGVzdFN1aXRlYCBqdXN0IGFzIDpjbGFzczpgVGVzdENhc2VgIGluc3RhbmNlcyBjYW4gYmUKLWFkZGVkIHRvIGEgOmNsYXNzOmBUZXN0U3VpdGVgOjoKLQotICAgc3VpdGUxID0gbW9kdWxlMS5UaGVUZXN0U3VpdGUoKQotICAgc3VpdGUyID0gbW9kdWxlMi5UaGVUZXN0U3VpdGUoKQotICAgYWxsdGVzdHMgPSB1bml0dGVzdC5UZXN0U3VpdGUoW3N1aXRlMSwgc3VpdGUyXSkKLQogWW91IGNhbiBwbGFjZSB0aGUgZGVmaW5pdGlvbnMgb2YgdGVzdCBjYXNlcyBhbmQgdGVzdCBzdWl0ZXMgaW4gdGhlIHNhbWUgbW9kdWxlcwogYXMgdGhlIGNvZGUgdGhleSBhcmUgdG8gdGVzdCAoc3VjaCBhcyA6ZmlsZTpgd2lkZ2V0LnB5YCksIGJ1dCB0aGVyZSBhcmUgc2V2ZXJhbAogYWR2YW50YWdlcyB0byBwbGFjaW5nIHRoZSB0ZXN0IGNvZGUgaW4gYSBzZXBhcmF0ZSBtb2R1bGUsIHN1Y2ggYXMKQEAgLTU2NCwyMyArNDQxLDEzIEBACiAgICAgICAgYXNzZXJ0IHNvbWV0aGluZy5uYW1lIGlzIG5vdCBOb25lCiAgICAgICAgIyAuLi4KIAotb25lIGNhbiBjcmVhdGUgYW4gZXF1aXZhbGVudCB0ZXN0IGNhc2UgaW5zdGFuY2UgYXMgZm9sbG93czo6Ci0KLSAgIHRlc3RjYXNlID0gdW5pdHRlc3QuRnVuY3Rpb25UZXN0Q2FzZSh0ZXN0U29tZXRoaW5nKQotCi1JZiB0aGVyZSBhcmUgYWRkaXRpb25hbCBzZXQtdXAgYW5kIHRlYXItZG93biBtZXRob2RzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCBhcwotcGFydCBvZiB0aGUgdGVzdCBjYXNlJ3Mgb3BlcmF0aW9uLCB0aGV5IGNhbiBhbHNvIGJlIHByb3ZpZGVkIGxpa2Ugc286Ogorb25lIGNhbiBjcmVhdGUgYW4gZXF1aXZhbGVudCB0ZXN0IGNhc2UgaW5zdGFuY2UgYXMgZm9sbG93cywgd2l0aCBvcHRpb25hbAorc2V0LXVwIGFuZCB0ZWFyLWRvd24gbWV0aG9kczo6CiAKICAgIHRlc3RjYXNlID0gdW5pdHRlc3QuRnVuY3Rpb25UZXN0Q2FzZSh0ZXN0U29tZXRoaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFVwPW1ha2VTb21ldGhpbmdEQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWFyRG93bj1kZWxldGVTb21ldGhpbmdEQikKIAotVG8gbWFrZSBtaWdyYXRpbmcgZXhpc3RpbmcgdGVzdCBzdWl0ZXMgZWFzaWVyLCA6bW9kOmB1bml0dGVzdGAgc3VwcG9ydHMgdGVzdHMKLXJhaXNpbmcgOmV4YzpgQXNzZXJ0aW9uRXJyb3JgIHRvIGluZGljYXRlIHRlc3QgZmFpbHVyZS4gSG93ZXZlciwgaXQgaXMKLXJlY29tbWVuZGVkIHRoYXQgeW91IHVzZSB0aGUgZXhwbGljaXQgOm1ldGg6YFRlc3RDYXNlLmZhaWxcKmAgYW5kCi06bWV0aDpgVGVzdENhc2UuYXNzZXJ0XCpgIG1ldGhvZHMgaW5zdGVhZCwgYXMgZnV0dXJlIHZlcnNpb25zIG9mIDptb2Q6YHVuaXR0ZXN0YAotbWF5IHRyZWF0IDpleGM6YEFzc2VydGlvbkVycm9yYCBkaWZmZXJlbnRseS4KLQogLi4gbm90ZTo6CiAKICAgIEV2ZW4gdGhvdWdoIDpjbGFzczpgRnVuY3Rpb25UZXN0Q2FzZWAgY2FuIGJlIHVzZWQgdG8gcXVpY2tseSBjb252ZXJ0IGFuCkBAIC03MDQsMzIgKzU3MSwyNCBAQAogCiAuLiBjbGFzczo6IFRlc3RDYXNlKG1ldGhvZE5hbWU9J3J1blRlc3QnKQogCi0gICBJbnN0YW5jZXMgb2YgdGhlIDpjbGFzczpgVGVzdENhc2VgIGNsYXNzIHJlcHJlc2VudCB0aGUgc21hbGxlc3QgdGVzdGFibGUgdW5pdHMKKyAgIEluc3RhbmNlcyBvZiB0aGUgOmNsYXNzOmBUZXN0Q2FzZWAgY2xhc3MgcmVwcmVzZW50IHRoZSBsb2dpY2FsIHRlc3QgdW5pdHMKICAgIGluIHRoZSA6bW9kOmB1bml0dGVzdGAgdW5pdmVyc2UuICBUaGlzIGNsYXNzIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYXMgYSBiYXNlCiAgICBjbGFzcywgd2l0aCBzcGVjaWZpYyB0ZXN0cyBiZWluZyBpbXBsZW1lbnRlZCBieSBjb25jcmV0ZSBzdWJjbGFzc2VzLiAgVGhpcyBjbGFzcwogICAgaW1wbGVtZW50cyB0aGUgaW50ZXJmYWNlIG5lZWRlZCBieSB0aGUgdGVzdCBydW5uZXIgdG8gYWxsb3cgaXQgdG8gZHJpdmUgdGhlCi0gICB0ZXN0LCBhbmQgbWV0aG9kcyB0aGF0IHRoZSB0ZXN0IGNvZGUgY2FuIHVzZSB0byBjaGVjayBmb3IgYW5kIHJlcG9ydCB2YXJpb3VzCisgICB0ZXN0cywgYW5kIG1ldGhvZHMgdGhhdCB0aGUgdGVzdCBjb2RlIGNhbiB1c2UgdG8gY2hlY2sgZm9yIGFuZCByZXBvcnQgdmFyaW91cwogICAga2luZHMgb2YgZmFpbHVyZS4KIAotICAgRWFjaCBpbnN0YW5jZSBvZiA6Y2xhc3M6YFRlc3RDYXNlYCB3aWxsIHJ1biBhIHNpbmdsZSB0ZXN0IG1ldGhvZDogdGhlIG1ldGhvZAotICAgbmFtZWQgKm1ldGhvZE5hbWUqLiAgSWYgeW91IHJlbWVtYmVyLCB3ZSBoYWQgYW4gZWFybGllciBleGFtcGxlIHRoYXQgd2VudAotICAgc29tZXRoaW5nIGxpa2UgdGhpczo6Ci0KLSAgICAgIGRlZiBzdWl0ZSgpOgotICAgICAgICAgIHN1aXRlID0gdW5pdHRlc3QuVGVzdFN1aXRlKCkKLSAgICAgICAgICBzdWl0ZS5hZGRUZXN0KFdpZGdldFRlc3RDYXNlKCd0ZXN0X2RlZmF1bHRfc2l6ZScpKQotICAgICAgICAgIHN1aXRlLmFkZFRlc3QoV2lkZ2V0VGVzdENhc2UoJ3Rlc3RfcmVzaXplJykpCi0gICAgICAgICAgcmV0dXJuIHN1aXRlCi0KLSAgIEhlcmUsIHdlIGNyZWF0ZSB0d28gaW5zdGFuY2VzIG9mIDpjbGFzczpgV2lkZ2V0VGVzdENhc2VgLCBlYWNoIG9mIHdoaWNoIHJ1bnMgYQotICAgc2luZ2xlIHRlc3QuCisgICBFYWNoIGluc3RhbmNlIG9mIDpjbGFzczpgVGVzdENhc2VgIHdpbGwgcnVuIGEgc2luZ2xlIGJhc2UgbWV0aG9kOiB0aGUgbWV0aG9kCisgICBuYW1lZCAqbWV0aG9kTmFtZSouICBIb3dldmVyLCB0aGUgc3RhbmRhcmQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGRlZmF1bHQKKyAgICptZXRob2ROYW1lKiwgYGBydW5UZXN0KClgYCwgd2lsbCBydW4gZXZlcnkgbWV0aG9kIHN0YXJ0aW5nIHdpdGggYGB0ZXN0YGAKKyAgIGFzIGFuIGluZGl2aWR1YWwgdGVzdCwgYW5kIGNvdW50IHN1Y2Nlc3NlcyBhbmQgZmFpbHVyZXMgYWNjb3JkaW5nbHkuCisgICBUaGVyZWZvcmUsIGluIG1vc3QgdXNlcyBvZiA6Y2xhc3M6YFRlc3RDYXNlYCwgeW91IHdpbGwgbmVpdGhlciBjaGFuZ2UKKyAgIHRoZSAqbWV0aG9kTmFtZSogbm9yIHJlaW1wbGVtZW50IHRoZSBkZWZhdWx0IGBgcnVuVGVzdCgpYGAgbWV0aG9kLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgOmNsYXNzOmBUZXN0Q2FzZWAgY2FuIGJlIGluc3RhbnRpYXRlZCBzdWNjZXNzZnVsbHkgd2l0aG91dCBwcm92aWRpbmcgYSBtZXRob2QKLSAgICAgIG5hbWUuIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIGV4cGVyaW1lbnQgd2l0aCA6Y2xhc3M6YFRlc3RDYXNlYCBmcm9tIHRoZQotICAgICAgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIuCi0KLSAgICptZXRob2ROYW1lKiBkZWZhdWx0cyB0byA6bWV0aDpgcnVuVGVzdGAuCisgICAgICA6Y2xhc3M6YFRlc3RDYXNlYCBjYW4gYmUgaW5zdGFudGlhdGVkIHN1Y2Nlc3NmdWxseSB3aXRob3V0IHByb3ZpZGluZyBhCisgICAgICAqbWV0aG9kTmFtZSouIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIGV4cGVyaW1lbnQgd2l0aCA6Y2xhc3M6YFRlc3RDYXNlYAorICAgICAgZnJvbSB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIuCiAKICAgIDpjbGFzczpgVGVzdENhc2VgIGluc3RhbmNlcyBwcm92aWRlIHRocmVlIGdyb3VwcyBvZiBtZXRob2RzOiBvbmUgZ3JvdXAgdXNlZAogICAgdG8gcnVuIHRoZSB0ZXN0LCBhbm90aGVyIHVzZWQgYnkgdGhlIHRlc3QgaW1wbGVtZW50YXRpb24gdG8gY2hlY2sgY29uZGl0aW9ucwpAQCAtNzM4LDcgKzU5Nyw2IEBACiAKICAgIE1ldGhvZHMgaW4gdGhlIGZpcnN0IGdyb3VwIChydW5uaW5nIHRoZSB0ZXN0KSBhcmU6CiAKLQogICAgLi4gbWV0aG9kOjogc2V0VXAoKQogCiAgICAgICBNZXRob2QgY2FsbGVkIHRvIHByZXBhcmUgdGhlIHRlc3QgZml4dHVyZS4gIFRoaXMgaXMgY2FsbGVkIGltbWVkaWF0ZWx5CkBAIC03OTAsMTQgKzY0OCwxOCBAQAogCiAgICAuLiBtZXRob2Q6OiBydW4ocmVzdWx0PU5vbmUpCiAKLSAgICAgIFJ1biB0aGUgdGVzdCwgY29sbGVjdGluZyB0aGUgcmVzdWx0IGludG8gdGhlIHRlc3QgcmVzdWx0IG9iamVjdCBwYXNzZWQgYXMKLSAgICAgICpyZXN1bHQqLiAgSWYgKnJlc3VsdCogaXMgb21pdHRlZCBvciBgYE5vbmVgYCwgYSB0ZW1wb3JhcnkgcmVzdWx0Ci0gICAgICBvYmplY3QgaXMgY3JlYXRlZCAoYnkgY2FsbGluZyB0aGUgOm1ldGg6YGRlZmF1bHRUZXN0UmVzdWx0YCBtZXRob2QpIGFuZAotICAgICAgdXNlZC4gVGhlIHJlc3VsdCBvYmplY3QgaXMgbm90IHJldHVybmVkIHRvIDptZXRoOmBydW5gJ3MgY2FsbGVyLgorICAgICAgUnVuIHRoZSB0ZXN0LCBjb2xsZWN0aW5nIHRoZSByZXN1bHQgaW50byB0aGUgOmNsYXNzOmBUZXN0UmVzdWx0YCBvYmplY3QKKyAgICAgIHBhc3NlZCBhcyAqcmVzdWx0Ki4gIElmICpyZXN1bHQqIGlzIG9taXR0ZWQgb3IgYGBOb25lYGAsIGEgdGVtcG9yYXJ5CisgICAgICByZXN1bHQgb2JqZWN0IGlzIGNyZWF0ZWQgKGJ5IGNhbGxpbmcgdGhlIDptZXRoOmBkZWZhdWx0VGVzdFJlc3VsdGAKKyAgICAgIG1ldGhvZCkgYW5kIHVzZWQuIFRoZSByZXN1bHQgb2JqZWN0IGlzIHJldHVybmVkIHRvIDptZXRoOmBydW5gJ3MKKyAgICAgIGNhbGxlci4KIAogICAgICAgVGhlIHNhbWUgZWZmZWN0IG1heSBiZSBoYWQgYnkgc2ltcGx5IGNhbGxpbmcgdGhlIDpjbGFzczpgVGVzdENhc2VgCiAgICAgICBpbnN0YW5jZS4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIFByZXZpb3VzIHZlcnNpb25zIG9mIGBgcnVuYGAgZGlkIG5vdCByZXR1cm4gdGhlIHJlc3VsdC4gTmVpdGhlciBkaWQKKyAgICAgICAgIGNhbGxpbmcgYW4gaW5zdGFuY2UuCiAKICAgIC4uIG1ldGhvZDo6IHNraXBUZXN0KHJlYXNvbikKIApAQCAtODU4LDEwICs3MjAsMTEgQEAKICAgIHwgPFRlc3RDYXNlLmFzc2VydE5vdElzSW5zdGFuY2U+YCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKwogCi0gICBBbGwgdGhlIGFzc2VydCBtZXRob2RzIChleGNlcHQgOm1ldGg6YGFzc2VydFJhaXNlc2AsCi0gICA6bWV0aDpgYXNzZXJ0UmFpc2VzUmVnZXhgLCA6bWV0aDpgYXNzZXJ0V2FybnNgLCA6bWV0aDpgYXNzZXJ0V2FybnNSZWdleGApCi0gICBhY2NlcHQgYSAqbXNnKiBhcmd1bWVudCB0aGF0LCBpZiBzcGVjaWZpZWQsIGlzIHVzZWQgYXMgdGhlIGVycm9yIG1lc3NhZ2Ugb24KLSAgIGZhaWx1cmUgKHNlZSBhbHNvIDpkYXRhOmBsb25nTWVzc2FnZWApLgorICAgQWxsIHRoZSBhc3NlcnQgbWV0aG9kcyBhY2NlcHQgYSAqbXNnKiBhcmd1bWVudCB0aGF0LCBpZiBzcGVjaWZpZWQsIGlzIHVzZWQKKyAgIGFzIHRoZSBlcnJvciBtZXNzYWdlIG9uIGZhaWx1cmUgKHNlZSBhbHNvIDpkYXRhOmBsb25nTWVzc2FnZWApLgorICAgTm90ZSB0aGF0IHRoZSAqbXNnKiBrZXl3b3JkIGFyZ3VtZW50IGNhbiBiZSBwYXNzZWQgdG8gOm1ldGg6YGFzc2VydFJhaXNlc2AsCisgICA6bWV0aDpgYXNzZXJ0UmFpc2VzUmVnZXhgLCA6bWV0aDpgYXNzZXJ0V2FybnNgLCA6bWV0aDpgYXNzZXJ0V2FybnNSZWdleGAKKyAgIG9ubHkgd2hlbiB0aGV5IGFyZSB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgogCiAgICAuLiBtZXRob2Q6OiBhc3NlcnRFcXVhbChmaXJzdCwgc2Vjb25kLCBtc2c9Tm9uZSkKIApAQCAtOTU2LDcgKzgxOSw3IEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKIAogICAgLi4gbWV0aG9kOjogYXNzZXJ0UmFpc2VzKGV4Y2VwdGlvbiwgY2FsbGFibGUsICphcmdzLCAqKmt3ZHMpCi0gICAgICAgICAgICAgICBhc3NlcnRSYWlzZXMoZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgYXNzZXJ0UmFpc2VzKGV4Y2VwdGlvbiwgbXNnPU5vbmUpCiAKICAgICAgIFRlc3QgdGhhdCBhbiBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gKmNhbGxhYmxlKiBpcyBjYWxsZWQgd2l0aCBhbnkKICAgICAgIHBvc2l0aW9uYWwgb3Iga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgYWxzbyBwYXNzZWQgdG8KQEAgLTk2NSwxMiArODI4LDE2IEBACiAgICAgICBUbyBjYXRjaCBhbnkgb2YgYSBncm91cCBvZiBleGNlcHRpb25zLCBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGV4Y2VwdGlvbgogICAgICAgY2xhc3NlcyBtYXkgYmUgcGFzc2VkIGFzICpleGNlcHRpb24qLgogCi0gICAgICBJZiBvbmx5IHRoZSAqZXhjZXB0aW9uKiBhcmd1bWVudCBpcyBnaXZlbiwgcmV0dXJucyBhIGNvbnRleHQgbWFuYWdlciBzbwotICAgICAgdGhhdCB0aGUgY29kZSB1bmRlciB0ZXN0IGNhbiBiZSB3cml0dGVuIGlubGluZSByYXRoZXIgdGhhbiBhcyBhIGZ1bmN0aW9uOjoKKyAgICAgIElmIG9ubHkgdGhlICpleGNlcHRpb24qIGFuZCBwb3NzaWJseSB0aGUgKm1zZyogYXJndW1lbnRzIGFyZSBnaXZlbiwKKyAgICAgIHJldHVybiBhIGNvbnRleHQgbWFuYWdlciBzbyB0aGF0IHRoZSBjb2RlIHVuZGVyIHRlc3QgY2FuIGJlIHdyaXR0ZW4KKyAgICAgIGlubGluZSByYXRoZXIgdGhhbiBhcyBhIGZ1bmN0aW9uOjoKIAogICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTb21lRXhjZXB0aW9uKToKICAgICAgICAgICAgICBkb19zb21ldGhpbmcoKQogCisgICAgICBXaGVuIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIsIDptZXRoOmBhc3NlcnRSYWlzZXNgIGFjY2VwdHMgdGhlCisgICAgICBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnQgKm1zZyouCisKICAgICAgIFRoZSBjb250ZXh0IG1hbmFnZXIgd2lsbCBzdG9yZSB0aGUgY2F1Z2h0IGV4Y2VwdGlvbiBvYmplY3QgaW4gaXRzCiAgICAgICA6YXR0cjpgZXhjZXB0aW9uYCBhdHRyaWJ1dGUuICBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgdGhlIGludGVudGlvbgogICAgICAgaXMgdG8gcGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyBvbiB0aGUgZXhjZXB0aW9uIHJhaXNlZDo6CkBAIC05ODcsOSArODU0LDEyIEBACiAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgICAgQWRkZWQgdGhlIDphdHRyOmBleGNlcHRpb25gIGF0dHJpYnV0ZS4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIEFkZGVkIHRoZSAqbXNnKiBrZXl3b3JkIGFyZ3VtZW50IHdoZW4gdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KKwogCiAgICAuLiBtZXRob2Q6OiBhc3NlcnRSYWlzZXNSZWdleChleGNlcHRpb24sIHJlZ2V4LCBjYWxsYWJsZSwgKmFyZ3MsICoqa3dkcykKLSAgICAgICAgICAgICAgIGFzc2VydFJhaXNlc1JlZ2V4KGV4Y2VwdGlvbiwgcmVnZXgpCisgICAgICAgICAgICAgICBhc3NlcnRSYWlzZXNSZWdleChleGNlcHRpb24sIHJlZ2V4LCBtc2c9Tm9uZSkKIAogICAgICAgTGlrZSA6bWV0aDpgYXNzZXJ0UmFpc2VzYCBidXQgYWxzbyB0ZXN0cyB0aGF0ICpyZWdleCogbWF0Y2hlcwogICAgICAgb24gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmFpc2VkIGV4Y2VwdGlvbi4gICpyZWdleCogbWF5IGJlCkBAIC0xMDA2LDEyICs4NzYsMTYgQEAKIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAgICAgICAgICB1bmRlciB0aGUgbmFtZSBgYGFzc2VydFJhaXNlc1JlZ2V4cGBgLgorCiAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgICAgUmVuYW1lZCB0byA6bWV0aDpgYXNzZXJ0UmFpc2VzUmVnZXhgLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgQWRkZWQgdGhlICptc2cqIGtleXdvcmQgYXJndW1lbnQgd2hlbiB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgorCiAKICAgIC4uIG1ldGhvZDo6IGFzc2VydFdhcm5zKHdhcm5pbmcsIGNhbGxhYmxlLCAqYXJncywgKiprd2RzKQotICAgICAgICAgICAgICAgYXNzZXJ0V2FybnMod2FybmluZykKKyAgICAgICAgICAgICAgIGFzc2VydFdhcm5zKHdhcm5pbmcsIG1zZz1Ob25lKQogCiAgICAgICBUZXN0IHRoYXQgYSB3YXJuaW5nIGlzIHRyaWdnZXJlZCB3aGVuICpjYWxsYWJsZSogaXMgY2FsbGVkIHdpdGggYW55CiAgICAgICBwb3NpdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIGFsc28gcGFzc2VkIHRvCkBAIC0xMDIwLDEyICs4OTQsMTYgQEAKICAgICAgIFRvIGNhdGNoIGFueSBvZiBhIGdyb3VwIG9mIHdhcm5pbmdzLCBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIHdhcm5pbmcKICAgICAgIGNsYXNzZXMgbWF5IGJlIHBhc3NlZCBhcyAqd2FybmluZ3MqLgogCi0gICAgICBJZiBvbmx5IHRoZSAqd2FybmluZyogYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybnMgYSBjb250ZXh0IG1hbmFnZXIgc28KLSAgICAgIHRoYXQgdGhlIGNvZGUgdW5kZXIgdGVzdCBjYW4gYmUgd3JpdHRlbiBpbmxpbmUgcmF0aGVyIHRoYW4gYXMgYSBmdW5jdGlvbjo6CisgICAgICBJZiBvbmx5IHRoZSAqd2FybmluZyogYW5kIHBvc3NpYmx5IHRoZSAqbXNnKiBhcmd1bWVudHMgYXJlIGdpdmVuLAorICAgICAgcmV0dXJucyBhIGNvbnRleHQgbWFuYWdlciBzbyB0aGF0IHRoZSBjb2RlIHVuZGVyIHRlc3QgY2FuIGJlIHdyaXR0ZW4KKyAgICAgIGlubGluZSByYXRoZXIgdGhhbiBhcyBhIGZ1bmN0aW9uOjoKIAogICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFNvbWVXYXJuaW5nKToKICAgICAgICAgICAgICBkb19zb21ldGhpbmcoKQogCisgICAgICBXaGVuIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIsIDptZXRoOmBhc3NlcnRSYWlzZXNgIGFjY2VwdHMgdGhlCisgICAgICBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnQgKm1zZyouCisKICAgICAgIFRoZSBjb250ZXh0IG1hbmFnZXIgd2lsbCBzdG9yZSB0aGUgY2F1Z2h0IHdhcm5pbmcgb2JqZWN0IGluIGl0cwogICAgICAgOmF0dHI6YHdhcm5pbmdgIGF0dHJpYnV0ZSwgYW5kIHRoZSBzb3VyY2UgbGluZSB3aGljaCB0cmlnZ2VyZWQgdGhlCiAgICAgICB3YXJuaW5ncyBpbiB0aGUgOmF0dHI6YGZpbGVuYW1lYCBhbmQgOmF0dHI6YGxpbmVub2AgYXR0cmlidXRlcy4KQEAgLTEwNDMsOSArOTIxLDEyIEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgQWRkZWQgdGhlICptc2cqIGtleXdvcmQgYXJndW1lbnQgd2hlbiB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgorCiAKICAgIC4uIG1ldGhvZDo6IGFzc2VydFdhcm5zUmVnZXgod2FybmluZywgcmVnZXgsIGNhbGxhYmxlLCAqYXJncywgKiprd2RzKQotICAgICAgICAgICAgICAgYXNzZXJ0V2FybnNSZWdleCh3YXJuaW5nLCByZWdleCkKKyAgICAgICAgICAgICAgIGFzc2VydFdhcm5zUmVnZXgod2FybmluZywgcmVnZXgsIG1zZz1Ob25lKQogCiAgICAgICBMaWtlIDptZXRoOmBhc3NlcnRXYXJuc2AgYnV0IGFsc28gdGVzdHMgdGhhdCAqcmVnZXgqIG1hdGNoZXMgb24gdGhlCiAgICAgICBtZXNzYWdlIG9mIHRoZSB0cmlnZ2VyZWQgd2FybmluZy4gICpyZWdleCogbWF5IGJlIGEgcmVndWxhciBleHByZXNzaW9uCkBAIC0xMDYzLDYgKzk0NCw4IEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgQWRkZWQgdGhlICptc2cqIGtleXdvcmQgYXJndW1lbnQgd2hlbiB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgogCiAKICAgIFRoZXJlIGFyZSBhbHNvIG90aGVyIG1ldGhvZHMgdXNlZCB0byBwZXJmb3JtIG1vcmUgc3BlY2lmaWMgY2hlY2tzLCBzdWNoIGFzOgpAQCAtMTE1MiwyMSArMTAzNSw2IEBACiAgICAgICAgICA6bWV0aDpgLmFzc2VydE5vdFJlZ2V4YC4KIAogCi0gICAuLiBtZXRob2Q6OiBhc3NlcnREaWN0Q29udGFpbnNTdWJzZXQoc3Vic2V0LCBkaWN0aW9uYXJ5LCBtc2c9Tm9uZSkKLQotICAgICAgVGVzdHMgd2hldGhlciB0aGUga2V5L3ZhbHVlIHBhaXJzIGluICpkaWN0aW9uYXJ5KiBhcmUgYSBzdXBlcnNldCBvZgotICAgICAgdGhvc2UgaW4gKnN1YnNldCouICBJZiBub3QsIGFuIGVycm9yIG1lc3NhZ2UgbGlzdGluZyB0aGUgbWlzc2luZyBrZXlzCi0gICAgICBhbmQgbWlzbWF0Y2hlZCB2YWx1ZXMgaXMgZ2VuZXJhdGVkLgotCi0gICAgICBOb3RlLCB0aGUgYXJndW1lbnRzIGFyZSBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIgb2Ygd2hhdCB0aGUgbWV0aG9kIG5hbWUKLSAgICAgIGRpY3RhdGVzLiAgSW5zdGVhZCwgY29uc2lkZXIgdXNpbmcgdGhlIHNldC1tZXRob2RzIG9uIDpyZWY6YGRpY3Rpb25hcnkKLSAgICAgIHZpZXdzIDxkaWN0LXZpZXdzPmAsIGZvciBleGFtcGxlOiBgYGQua2V5cygpIDw9IGUua2V5cygpYGAgb3IKLSAgICAgIGBgZC5pdGVtcygpIDw9IGQuaXRlbXMoKWBgLgotCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKLSAgICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjIKLQotCiAgICAuLiBtZXRob2Q6OiBhc3NlcnRDb3VudEVxdWFsKGZpcnN0LCBzZWNvbmQsIG1zZz1Ob25lKQogCiAgICAgICBUZXN0IHRoYXQgc2VxdWVuY2UgKmZpcnN0KiBjb250YWlucyB0aGUgc2FtZSBlbGVtZW50cyBhcyAqc2Vjb25kKiwKQEAgLTExODEsMjEgKzEwNDksNiBAQAogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAotICAgLi4gbWV0aG9kOjogYXNzZXJ0U2FtZUVsZW1lbnRzKGZpcnN0LCBzZWNvbmQsIG1zZz1Ob25lKQotCi0gICAgICBUZXN0IHRoYXQgc2VxdWVuY2UgKmZpcnN0KiBjb250YWlucyB0aGUgc2FtZSBlbGVtZW50cyBhcyAqc2Vjb25kKiwKLSAgICAgIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgb3JkZXIuIFdoZW4gdGhleSBkb24ndCwgYW4gZXJyb3IgbWVzc2FnZSBsaXN0aW5nCi0gICAgICB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgc2VxdWVuY2VzIHdpbGwgYmUgZ2VuZXJhdGVkLgotCi0gICAgICBEdXBsaWNhdGUgZWxlbWVudHMgYXJlIGlnbm9yZWQgd2hlbiBjb21wYXJpbmcgKmZpcnN0KiBhbmQgKnNlY29uZCouCi0gICAgICBJdCBpcyB0aGUgZXF1aXZhbGVudCBvZiBgYGFzc2VydEVxdWFsKHNldChmaXJzdCksIHNldChzZWNvbmQpKWBgCi0gICAgICBidXQgaXQgd29ya3Mgd2l0aCBzZXF1ZW5jZXMgb2YgdW5oYXNoYWJsZSBvYmplY3RzIGFzIHdlbGwuIEJlY2F1c2UKLSAgICAgIGR1cGxpY2F0ZXMgYXJlIGlnbm9yZWQsIHRoaXMgbWV0aG9kIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mCi0gICAgICA6bWV0aDpgYXNzZXJ0Q291bnRFcXVhbGAuCi0KLSAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQotICAgICAgLi4gZGVwcmVjYXRlZDo6IDMuMgotCiAKICAgIC4uIF90eXBlLXNwZWNpZmljLW1ldGhvZHM6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5lcnJvci5yc3QgYi9Eb2MvbGlicmFyeS91cmxsaWIuZXJyb3IucnN0CmluZGV4IDljMDQ4NTkuLjljM2ZlOTEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5lcnJvci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLmVycm9yLnJzdApAQCAtOCwyMSArOCwyMyBAQAogCiAKIFRoZSA6bW9kOmB1cmxsaWIuZXJyb3JgIG1vZHVsZSBkZWZpbmVzIHRoZSBleGNlcHRpb24gY2xhc3NlcyBmb3IgZXhjZXB0aW9ucwotcmFpc2VkIGJ5IDptb2Q6YHVybGxpYi5yZXF1ZXN0YC4gIFRoZSBiYXNlIGV4Y2VwdGlvbiBjbGFzcyBpcyA6ZXhjOmBVUkxFcnJvcmAsCi13aGljaCBpbmhlcml0cyBmcm9tIDpleGM6YElPRXJyb3JgLgorcmFpc2VkIGJ5IDptb2Q6YHVybGxpYi5yZXF1ZXN0YC4gIFRoZSBiYXNlIGV4Y2VwdGlvbiBjbGFzcyBpcyA6ZXhjOmBVUkxFcnJvcmAuCiAKIFRoZSBmb2xsb3dpbmcgZXhjZXB0aW9ucyBhcmUgcmFpc2VkIGJ5IDptb2Q6YHVybGxpYi5lcnJvcmAgYXMgYXBwcm9wcmlhdGU6CiAKIC4uIGV4Y2VwdGlvbjo6IFVSTEVycm9yCiAKICAgIFRoZSBoYW5kbGVycyByYWlzZSB0aGlzIGV4Y2VwdGlvbiAob3IgZGVyaXZlZCBleGNlcHRpb25zKSB3aGVuIHRoZXkgcnVuIGludG8KLSAgIGEgcHJvYmxlbS4gIEl0IGlzIGEgc3ViY2xhc3Mgb2YgOmV4YzpgSU9FcnJvcmAuCisgICBhIHByb2JsZW0uICBJdCBpcyBhIHN1YmNsYXNzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAgICAuLiBhdHRyaWJ1dGU6OiByZWFzb24KIAogICAgICAgVGhlIHJlYXNvbiBmb3IgdGhpcyBlcnJvci4gIEl0IGNhbiBiZSBhIG1lc3NhZ2Ugc3RyaW5nIG9yIGFub3RoZXIKLSAgICAgIGV4Y2VwdGlvbiBpbnN0YW5jZSAoOmV4Yzpgc29ja2V0LmVycm9yYCBmb3IgcmVtb3RlIFVSTHMsIDpleGM6YE9TRXJyb3JgCi0gICAgICBmb3IgbG9jYWwgVVJMcykuCisgICAgICBleGNlcHRpb24gaW5zdGFuY2UuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6ZXhjOmBVUkxFcnJvcmAgaGFzIGJlZW4gbWFkZSBhIHN1YmNsYXNzIG9mIDpleGM6YE9TRXJyb3JgIGluc3RlYWQKKyAgICAgIG9mIDpleGM6YElPRXJyb3JgLgogCiAKIC4uIGV4Y2VwdGlvbjo6IEhUVFBFcnJvcgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QKaW5kZXggNjFmYzQ3MS4uMWFkMGVmNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdAorKysgYi9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0CkBAIC04MSw4ICs4MSw3IEBACiAgICB0aGlzIGFyZ3VtZW50IGlzIHRoZSBlbXB0eSBzdHJpbmcuCiAKICAgIElmIHRoZSAqYWxsb3dfZnJhZ21lbnRzKiBhcmd1bWVudCBpcyBmYWxzZSwgZnJhZ21lbnQgaWRlbnRpZmllcnMgYXJlIG5vdAotICAgYWxsb3dlZCwgZXZlbiBpZiB0aGUgVVJMJ3MgYWRkcmVzc2luZyBzY2hlbWUgbm9ybWFsbHkgZG9lcyBzdXBwb3J0IHRoZW0uICBUaGUKLSAgIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgYXJndW1lbnQgaXMgOmNvbnN0OmBUcnVlYC4KKyAgIGFsbG93ZWQuICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyBhcmd1bWVudCBpcyA6Y29uc3Q6YFRydWVgLgogCiAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGFjdHVhbGx5IGFuIGluc3RhbmNlIG9mIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmB0dXBsZWAuICBUaGlzCiAgICBjbGFzcyBoYXMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIHJlYWQtb25seSBjb252ZW5pZW5jZSBhdHRyaWJ1dGVzOgpAQCAtMTE5LDYgKzExOCwxMSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIElQdjYgVVJMIHBhcnNpbmcgY2FwYWJpbGl0aWVzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhlIGZyYWdtZW50IGlzIG5vdyBwYXJzZWQgZm9yIGFsbCBVUkwgc2NoZW1lcyAodW5sZXNzICphbGxvd19mcmFnbWVudCogaXMKKyAgICAgIGZhbHNlKSwgaW4gYWNjb3JkYW5jZSB3aXRoIDpyZmM6YDM5ODZgLiAgUHJldmlvdXNseSwgYSB3aGl0ZWxpc3Qgb2YKKyAgICAgIHNjaGVtZXMgdGhhdCBzdXBwb3J0IGZyYWdtZW50cyBleGlzdGVkLgorCiAKIC4uIGZ1bmN0aW9uOjogcGFyc2VfcXMocXMsIGtlZXBfYmxhbmtfdmFsdWVzPUZhbHNlLCBzdHJpY3RfcGFyc2luZz1GYWxzZSwgZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPSdyZXBsYWNlJykKIApAQCAtMTQxLDggKzE0NSw5IEBACiAgICBwZXJjZW50LWVuY29kZWQgc2VxdWVuY2VzIGludG8gVW5pY29kZSBjaGFyYWN0ZXJzLCBhcyBhY2NlcHRlZCBieSB0aGUKICAgIDptZXRoOmBieXRlcy5kZWNvZGVgIG1ldGhvZC4KIAotICAgVXNlIHRoZSA6ZnVuYzpgdXJsbGliLnBhcnNlLnVybGVuY29kZWAgZnVuY3Rpb24gdG8gY29udmVydCBzdWNoCi0gICBkaWN0aW9uYXJpZXMgaW50byBxdWVyeSBzdHJpbmdzLgorICAgVXNlIHRoZSA6ZnVuYzpgdXJsbGliLnBhcnNlLnVybGVuY29kZWAgZnVuY3Rpb24gKHdpdGggdGhlIGBgZG9zZXFgYAorICAgcGFyYW1ldGVyIHNldCB0byBgYFRydWVgYCkgdG8gY29udmVydCBzdWNoIGRpY3Rpb25hcmllcyBpbnRvIHF1ZXJ5CisgICBzdHJpbmdzLgogCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QgYi9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKaW5kZXggMzMyNDRkYS4uMmNmMTMwNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdApAQCAtMTYsNyArMTYsNyBAQAogVGhlIDptb2Q6YHVybGxpYi5yZXF1ZXN0YCBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKIAogCi0uLiBmdW5jdGlvbjo6IHVybG9wZW4odXJsLCBkYXRhPU5vbmVbLCB0aW1lb3V0XSwgKiwgY2FmaWxlPU5vbmUsIGNhcGF0aD1Ob25lKQorLi4gZnVuY3Rpb246OiB1cmxvcGVuKHVybCwgZGF0YT1Ob25lWywgdGltZW91dF0sICosIGNhZmlsZT1Ob25lLCBjYXBhdGg9Tm9uZSwgY2FkZWZhdWx0PVRydWUpCiAKICAgIE9wZW4gdGhlIFVSTCAqdXJsKiwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBhCiAgICA6Y2xhc3M6YFJlcXVlc3RgIG9iamVjdC4KQEAgLTUzLDkgKzUzLDE1IEBACiAgICBwb2ludCB0byBhIGRpcmVjdG9yeSBvZiBoYXNoZWQgY2VydGlmaWNhdGUgZmlsZXMuICBNb3JlIGluZm9ybWF0aW9uIGNhbgogICAgYmUgZm91bmQgaW4gOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9uc2AuCiAKKyAgIFRoZSAqY2FkZWZhdWx0KiBwYXJhbWV0ZXIgc3BlY2lmaWVzIHdoZXRoZXIgdG8gZmFsbCBiYWNrIHRvIGxvYWRpbmcgYQorICAgZGVmYXVsdCBjZXJ0aWZpY2F0ZSBzdG9yZSBkZWZpbmVkIGJ5IHRoZSB1bmRlcmx5aW5nIE9wZW5TU0wgbGlicmFyeSBpZiB0aGUKKyAgICpjYWZpbGUqIGFuZCAqY2FwYXRoKiBwYXJhbWV0ZXJzIGFyZSBvbWl0dGVkLiAgVGhpcyB3aWxsIG9ubHkgd29yayBvbgorICAgc29tZSBub24tV2luZG93cyBwbGF0Zm9ybXMuCisKICAgIC4uIHdhcm5pbmc6OgotICAgICAgSWYgbmVpdGhlciAqY2FmaWxlKiBub3IgKmNhcGF0aCogaXMgc3BlY2lmaWVkLCBhbiBIVFRQUyByZXF1ZXN0Ci0gICAgICB3aWxsIG5vdCBkbyBhbnkgdmVyaWZpY2F0aW9uIG9mIHRoZSBzZXJ2ZXIncyBjZXJ0aWZpY2F0ZS4KKyAgICAgIElmIG5laXRoZXIgKmNhZmlsZSogbm9yICpjYXBhdGgqIGlzIHNwZWNpZmllZCwgYW5kICpjYWRlZmF1bHQqIGlzIEZhbHNlLAorICAgICAgYW4gSFRUUFMgcmVxdWVzdCB3aWxsIG5vdCBkbyBhbnkgdmVyaWZpY2F0aW9uIG9mIHRoZSBzZXJ2ZXIncworICAgICAgY2VydGlmaWNhdGUuCiAKICAgIEZvciBodHRwIGFuZCBodHRwcyB1cmxzLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYQogICAgOmNsYXNzOmBodHRwLmNsaWVudC5IVFRQUmVzcG9uc2VgIG9iamVjdCB3aGljaCBoYXMgdGhlIGZvbGxvd2luZwpAQCAtMTAwLDYgKzEwNiw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKICAgICAgICpkYXRhKiBjYW4gYmUgYW4gaXRlcmFibGUgb2JqZWN0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKmNhZGVmYXVsdCogd2FzIGFkZGVkLgorCiAuLiBmdW5jdGlvbjo6IGluc3RhbGxfb3BlbmVyKG9wZW5lcikKIAogICAgSW5zdGFsbCBhbiA6Y2xhc3M6YE9wZW5lckRpcmVjdG9yYCBpbnN0YW5jZSBhcyB0aGUgZGVmYXVsdCBnbG9iYWwgb3BlbmVyLgpAQCAtMTUzLDcgKzE2Miw3IEBACiAKIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBhcmUgcHJvdmlkZWQ6CiAKLS4uIGNsYXNzOjogUmVxdWVzdCh1cmwsIGRhdGE9Tm9uZSwgaGVhZGVycz17fSwgb3JpZ2luX3JlcV9ob3N0PU5vbmUsIHVudmVyaWZpYWJsZT1GYWxzZSkKKy4uIGNsYXNzOjogUmVxdWVzdCh1cmwsIGRhdGE9Tm9uZSwgaGVhZGVycz17fSwgb3JpZ2luX3JlcV9ob3N0PU5vbmUsIHVudmVyaWZpYWJsZT1GYWxzZSwgbWV0aG9kPU5vbmUpCiAKICAgIFRoaXMgY2xhc3MgaXMgYW4gYWJzdHJhY3Rpb24gb2YgYSBVUkwgcmVxdWVzdC4KIApAQCAtMjA2LDYgKzIxNSwxMyBAQAogICAgZG9jdW1lbnQsIGFuZCB0aGUgdXNlciBoYWQgbm8gb3B0aW9uIHRvIGFwcHJvdmUgdGhlIGF1dG9tYXRpYwogICAgZmV0Y2hpbmcgb2YgdGhlIGltYWdlLCB0aGlzIHNob3VsZCBiZSB0cnVlLgogCisgICAqbWV0aG9kKiBzaG91bGQgYmUgYSBzdHJpbmcgdGhhdCBpbmRpY2F0ZXMgdGhlIEhUVFAgcmVxdWVzdCBtZXRob2QgdGhhdAorICAgd2lsbCBiZSB1c2VkIChlLmcuIGBgJ0hFQUQnYGApLiAgSXRzIHZhbHVlIGlzIHN0b3JlZCBpbiB0aGUKKyAgIDphdHRyOmB+UmVxdWVzdC5tZXRob2RgIGF0dHJpYnV0ZSBhbmQgaXMgdXNlZCBieSA6bWV0aDpgZ2V0X21ldGhvZCgpYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDphdHRyOmBSZXF1ZXN0Lm1ldGhvZGAgYXJndW1lbnQgaXMgYWRkZWQgdG8gdGhlIFJlcXVlc3QgY2xhc3MuCisKIAogLi4gY2xhc3M6OiBPcGVuZXJEaXJlY3RvcigpCiAKQEAgLTI3MSwxMCArMjg3LDExIEBACiAKIC4uIGNsYXNzOjogSFRUUEJhc2ljQXV0aEhhbmRsZXIocGFzc3dvcmRfbWdyPU5vbmUpCiAKLSAgIEhhbmRsZSBhdXRoZW50aWNhdGlvbiB3aXRoIHRoZSByZW1vdGUgaG9zdC4gKnBhc3N3b3JkX21nciosIGlmIGdpdmVuLCBzaG91bGQgYmUKLSAgIHNvbWV0aGluZyB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCA6Y2xhc3M6YEhUVFBQYXNzd29yZE1ncmA7IHJlZmVyIHRvIHNlY3Rpb24KLSAgIDpyZWY6YGh0dHAtcGFzc3dvcmQtbWdyYCBmb3IgaW5mb3JtYXRpb24gb24gdGhlIGludGVyZmFjZSB0aGF0IG11c3QgYmUKLSAgIHN1cHBvcnRlZC4KKyAgIEhhbmRsZSBhdXRoZW50aWNhdGlvbiB3aXRoIHRoZSByZW1vdGUgaG9zdC4gKnBhc3N3b3JkX21nciosIGlmIGdpdmVuLCBzaG91bGQKKyAgIGJlIHNvbWV0aGluZyB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCA6Y2xhc3M6YEhUVFBQYXNzd29yZE1ncmA7IHJlZmVyIHRvCisgICBzZWN0aW9uIDpyZWY6YGh0dHAtcGFzc3dvcmQtbWdyYCBmb3IgaW5mb3JtYXRpb24gb24gdGhlIGludGVyZmFjZSB0aGF0IG11c3QKKyAgIGJlIHN1cHBvcnRlZC4gSFRUUEJhc2ljQXV0aEhhbmRsZXIgd2lsbCByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgIHdoZW4KKyAgIHByZXNlbnRlZCB3aXRoIGEgd3JvbmcgQXV0aGVudGljYXRpb24gc2NoZW1lLgogCiAKIC4uIGNsYXNzOjogUHJveHlCYXNpY0F1dGhIYW5kbGVyKHBhc3N3b3JkX21ncj1Ob25lKQpAQCAtMjk2LDEwICszMTMsMTkgQEAKIAogLi4gY2xhc3M6OiBIVFRQRGlnZXN0QXV0aEhhbmRsZXIocGFzc3dvcmRfbWdyPU5vbmUpCiAKLSAgIEhhbmRsZSBhdXRoZW50aWNhdGlvbiB3aXRoIHRoZSByZW1vdGUgaG9zdC4gKnBhc3N3b3JkX21nciosIGlmIGdpdmVuLCBzaG91bGQgYmUKLSAgIHNvbWV0aGluZyB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCA6Y2xhc3M6YEhUVFBQYXNzd29yZE1ncmA7IHJlZmVyIHRvIHNlY3Rpb24KLSAgIDpyZWY6YGh0dHAtcGFzc3dvcmQtbWdyYCBmb3IgaW5mb3JtYXRpb24gb24gdGhlIGludGVyZmFjZSB0aGF0IG11c3QgYmUKLSAgIHN1cHBvcnRlZC4KKyAgIEhhbmRsZSBhdXRoZW50aWNhdGlvbiB3aXRoIHRoZSByZW1vdGUgaG9zdC4gKnBhc3N3b3JkX21nciosIGlmIGdpdmVuLCBzaG91bGQKKyAgIGJlIHNvbWV0aGluZyB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCA6Y2xhc3M6YEhUVFBQYXNzd29yZE1ncmA7IHJlZmVyIHRvCisgICBzZWN0aW9uIDpyZWY6YGh0dHAtcGFzc3dvcmQtbWdyYCBmb3IgaW5mb3JtYXRpb24gb24gdGhlIGludGVyZmFjZSB0aGF0IG11c3QKKyAgIGJlIHN1cHBvcnRlZC4gV2hlbiBib3RoIERpZ2VzdCBBdXRoZW50aWNhdGlvbiBIYW5kbGVyIGFuZCBCYXNpYworICAgQXV0aGVudGljYXRpb24gSGFuZGxlciBhcmUgYm90aCBhZGRlZCwgRGlnZXN0IEF1dGhlbnRpY2F0aW9uIGlzIGFsd2F5cyB0cmllZAorICAgZmlyc3QuIElmIHRoZSBEaWdlc3QgQXV0aGVudGljYXRpb24gcmV0dXJucyBhIDQweCByZXNwb25zZSBhZ2FpbiwgaXQgaXMgc2VudAorICAgdG8gQmFzaWMgQXV0aGVudGljYXRpb24gaGFuZGxlciB0byBIYW5kbGUuICBUaGlzIEhhbmRsZXIgbWV0aG9kIHdpbGwgcmFpc2UgYQorICAgOmV4YzpgVmFsdWVFcnJvcmAgd2hlbiBwcmVzZW50ZWQgd2l0aCBhbiBhdXRoZW50aWNhdGlvbiBzY2hlbWUgb3RoZXIgdGhhbgorICAgRGlnZXN0IG9yIEJhc2ljLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmFpc2UgOmV4YzpgVmFsdWVFcnJvcmAgb24gdW5zdXBwb3J0ZWQgQXV0aGVudGljYXRpb24gU2NoZW1lLgorCiAKIAogLi4gY2xhc3M6OiBQcm94eURpZ2VzdEF1dGhIYW5kbGVyKHBhc3N3b3JkX21ncj1Ob25lKQpAQCAtMzkwLDI3ICs0MTYsMjUgQEAKICAgIGJvb2xlYW4sIGluZGljYXRlcyB3aGV0aGVyIHRoZSByZXF1ZXN0IGlzIHVudmVyaWZpYWJsZSBhcyBkZWZpbmVkCiAgICBieSBSRkMgMjk2NS4KIAotLi4gbWV0aG9kOjogUmVxdWVzdC5hZGRfZGF0YShkYXRhKQorLi4gYXR0cmlidXRlOjogUmVxdWVzdC5tZXRob2QKIAotICAgU2V0IHRoZSA6Y2xhc3M6YFJlcXVlc3RgIGRhdGEgdG8gKmRhdGEqLiAgVGhpcyBpcyBpZ25vcmVkIGJ5IGFsbCBoYW5kbGVycyBleGNlcHQKLSAgIEhUVFAgaGFuZGxlcnMgLS0tIGFuZCB0aGVyZSBpdCBzaG91bGQgYmUgYSBieXRlIHN0cmluZywgYW5kIHdpbGwgY2hhbmdlIHRoZQotICAgcmVxdWVzdCB0byBiZSBgYFBPU1RgYCByYXRoZXIgdGhhbiBgYEdFVGBgLgorICAgVGhlIEhUVFAgcmVxdWVzdCBtZXRob2QgdG8gdXNlLiAgVGhpcyB2YWx1ZSBpcyB1c2VkIGJ5CisgICA6bWV0aDpgflJlcXVlc3QuZ2V0X21ldGhvZGAgdG8gb3ZlcnJpZGUgdGhlIGNvbXB1dGVkIEhUVFAgcmVxdWVzdAorICAgbWV0aG9kIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIHJldHVybmVkLiAgVGhpcyBhdHRyaWJ1dGUgaXMgaW5pdGlhbGl6ZWQgd2l0aAorICAgdGhlIHZhbHVlIG9mIHRoZSAqbWV0aG9kKiBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCiAuLiBtZXRob2Q6OiBSZXF1ZXN0LmdldF9tZXRob2QoKQogCi0gICBSZXR1cm4gYSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgSFRUUCByZXF1ZXN0IG1ldGhvZC4gIFRoaXMgaXMgb25seSBtZWFuaW5nZnVsIGZvcgotICAgSFRUUCByZXF1ZXN0cywgYW5kIGN1cnJlbnRseSBhbHdheXMgcmV0dXJucyBgYCdHRVQnYGAgb3IgYGAnUE9TVCdgYC4KKyAgIFJldHVybiBhIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBIVFRQIHJlcXVlc3QgbWV0aG9kLiAgSWYKKyAgIDphdHRyOmBSZXF1ZXN0Lm1ldGhvZGAgaXMgbm90IGBgTm9uZWBgLCByZXR1cm4gaXRzIHZhbHVlLCBvdGhlcndpc2UgcmV0dXJuCisgICBgYCdHRVQnYGAgaWYgOmF0dHI6YFJlcXVlc3QuZGF0YWAgaXMgYGBOb25lYGAsIG9yIGBgJ1BPU1QnYGAgaWYgaXQncyBub3QuCisgICBUaGlzIGlzIG9ubHkgbWVhbmluZ2Z1bCBmb3IgSFRUUCByZXF1ZXN0cy4KIAotCi0uLiBtZXRob2Q6OiBSZXF1ZXN0Lmhhc19kYXRhKCkKLQotICAgUmV0dXJuIHdoZXRoZXIgdGhlIGluc3RhbmNlIGhhcyBhIG5vbi1cIGBgTm9uZWBgIGRhdGEuCi0KLQotLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfZGF0YSgpCi0KLSAgIFJldHVybiB0aGUgaW5zdGFuY2UncyBkYXRhLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIGdldF9tZXRob2Qgbm93IGxvb2tzIGF0IHRoZSB2YWx1ZSBvZiA6YXR0cjpgUmVxdWVzdC5tZXRob2RgLgogCiAKIC4uIG1ldGhvZDo6IFJlcXVlc3QuYWRkX2hlYWRlcihrZXksIHZhbCkKQEAgLTQ0MCwyMCArNDY0LDYwIEBACiAgICBSZXR1cm4gdGhlIFVSTCBnaXZlbiBpbiB0aGUgY29uc3RydWN0b3IuCiAKIAorLi4gbWV0aG9kOjogUmVxdWVzdC5zZXRfcHJveHkoaG9zdCwgdHlwZSkKKworICAgUHJlcGFyZSB0aGUgcmVxdWVzdCBieSBjb25uZWN0aW5nIHRvIGEgcHJveHkgc2VydmVyLiBUaGUgKmhvc3QqIGFuZCAqdHlwZSogd2lsbAorICAgcmVwbGFjZSB0aG9zZSBvZiB0aGUgaW5zdGFuY2UsIGFuZCB0aGUgaW5zdGFuY2UncyBzZWxlY3RvciB3aWxsIGJlIHRoZSBvcmlnaW5hbAorICAgVVJMIGdpdmVuIGluIHRoZSBjb25zdHJ1Y3Rvci4KKworCisuLiBtZXRob2Q6OiBSZXF1ZXN0LmFkZF9kYXRhKGRhdGEpCisKKyAgIFNldCB0aGUgOmNsYXNzOmBSZXF1ZXN0YCBkYXRhIHRvICpkYXRhKi4gIFRoaXMgaXMgaWdub3JlZCBieSBhbGwgaGFuZGxlcnMgZXhjZXB0CisgICBIVFRQIGhhbmRsZXJzIC0tLSBhbmQgdGhlcmUgaXQgc2hvdWxkIGJlIGEgYnl0ZSBzdHJpbmcsIGFuZCB3aWxsIGNoYW5nZSB0aGUKKyAgIHJlcXVlc3QgdG8gYmUgYGBQT1NUYGAgcmF0aGVyIHRoYW4gYGBHRVRgYC4gIERlcHJlY2F0ZWQgaW4gMy4zLCB1c2UKKyAgIDphdHRyOmBSZXF1ZXN0LmRhdGFgLgorCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKKworLi4gbWV0aG9kOjogUmVxdWVzdC5oYXNfZGF0YSgpCisKKyAgIFJldHVybiB3aGV0aGVyIHRoZSBpbnN0YW5jZSBoYXMgYSBub24tXCBgYE5vbmVgYCBkYXRhLiBEZXByZWNhdGVkIGluIDMuMywKKyAgIHVzZSA6YXR0cjpgUmVxdWVzdC5kYXRhYC4KKworICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCisKKy4uIG1ldGhvZDo6IFJlcXVlc3QuZ2V0X2RhdGEoKQorCisgICBSZXR1cm4gdGhlIGluc3RhbmNlJ3MgZGF0YS4gIERlcHJlY2F0ZWQgaW4gMy4zLCB1c2UgOmF0dHI6YFJlcXVlc3QuZGF0YWAuCisKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKworCiAuLiBtZXRob2Q6OiBSZXF1ZXN0LmdldF90eXBlKCkKIAotICAgUmV0dXJuIHRoZSB0eXBlIG9mIHRoZSBVUkwgLS0tIGFsc28ga25vd24gYXMgdGhlIHNjaGVtZS4KKyAgIFJldHVybiB0aGUgdHlwZSBvZiB0aGUgVVJMIC0tLSBhbHNvIGtub3duIGFzIHRoZSBzY2hlbWUuICBEZXByZWNhdGVkIGluIDMuMywKKyAgIHVzZSA6YXR0cjpgUmVxdWVzdC50eXBlYC4KKworICAgLi4gZGVwcmVjYXRlZDo6IDMuMwogCiAKIC4uIG1ldGhvZDo6IFJlcXVlc3QuZ2V0X2hvc3QoKQogCi0gICBSZXR1cm4gdGhlIGhvc3QgdG8gd2hpY2ggYSBjb25uZWN0aW9uIHdpbGwgYmUgbWFkZS4KKyAgIFJldHVybiB0aGUgaG9zdCB0byB3aGljaCBhIGNvbm5lY3Rpb24gd2lsbCBiZSBtYWRlLiBEZXByZWNhdGVkIGluIDMuMywgdXNlCisgICA6YXR0cjpgUmVxdWVzdC5ob3N0YC4KKworICAgLi4gZGVwcmVjYXRlZDo6IDMuMwogCiAKIC4uIG1ldGhvZDo6IFJlcXVlc3QuZ2V0X3NlbGVjdG9yKCkKIAogICAgUmV0dXJuIHRoZSBzZWxlY3RvciAtLS0gdGhlIHBhcnQgb2YgdGhlIFVSTCB0aGF0IGlzIHNlbnQgdG8gdGhlIHNlcnZlci4KKyAgIERlcHJlY2F0ZWQgaW4gMy4zLCB1c2UgOmF0dHI6YFJlcXVlc3Quc2VsZWN0b3JgLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCiAKIC4uIG1ldGhvZDo6IFJlcXVlc3QuZ2V0X2hlYWRlcihoZWFkZXJfbmFtZSwgZGVmYXVsdD1Ob25lKQogCkBAIC00NjgsMjEgKzUzMiwyMiBAQAogCiAuLiBtZXRob2Q6OiBSZXF1ZXN0LnNldF9wcm94eShob3N0LCB0eXBlKQogCi0gICBQcmVwYXJlIHRoZSByZXF1ZXN0IGJ5IGNvbm5lY3RpbmcgdG8gYSBwcm94eSBzZXJ2ZXIuIFRoZSAqaG9zdCogYW5kICp0eXBlKiB3aWxsCi0gICByZXBsYWNlIHRob3NlIG9mIHRoZSBpbnN0YW5jZSwgYW5kIHRoZSBpbnN0YW5jZSdzIHNlbGVjdG9yIHdpbGwgYmUgdGhlIG9yaWdpbmFsCi0gICBVUkwgZ2l2ZW4gaW4gdGhlIGNvbnN0cnVjdG9yLgotCi0KIC4uIG1ldGhvZDo6IFJlcXVlc3QuZ2V0X29yaWdpbl9yZXFfaG9zdCgpCiAKLSAgIFJldHVybiB0aGUgcmVxdWVzdC1ob3N0IG9mIHRoZSBvcmlnaW4gdHJhbnNhY3Rpb24sIGFzIGRlZmluZWQgYnkgOnJmYzpgMjk2NWAuCi0gICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSA6Y2xhc3M6YFJlcXVlc3RgIGNvbnN0cnVjdG9yLgorICAgUmV0dXJuIHRoZSByZXF1ZXN0LWhvc3Qgb2YgdGhlIG9yaWdpbiB0cmFuc2FjdGlvbiwgYXMgZGVmaW5lZCBieQorICAgOnJmYzpgMjk2NWAuICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSA6Y2xhc3M6YFJlcXVlc3RgIGNvbnN0cnVjdG9yLgorICAgRGVwcmVjYXRlZCBpbiAzLjMsIHVzZSA6YXR0cjpgUmVxdWVzdC5vcmlnaW5fcmVxX2hvc3RgLgorCisgICAuLiBkZXByZWNhdGVkOjogMy4zCiAKIAogLi4gbWV0aG9kOjogUmVxdWVzdC5pc191bnZlcmlmaWFibGUoKQogCiAgICBSZXR1cm4gd2hldGhlciB0aGUgcmVxdWVzdCBpcyB1bnZlcmlmaWFibGUsIGFzIGRlZmluZWQgYnkgUkZDIDI5NjUuIFNlZSB0aGUKLSAgIGRvY3VtZW50YXRpb24gZm9yIHRoZSA6Y2xhc3M6YFJlcXVlc3RgIGNvbnN0cnVjdG9yLgorICAgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDpjbGFzczpgUmVxdWVzdGAgY29uc3RydWN0b3IuICBEZXByZWNhdGVkIGluIDMuMywgdXNlCisgICA6YXR0cjpgUmVxdWVzdC51bnZlcmlmaWFibGVgLgorCisgICAuLiBkZXByZWNhdGVkOjogMy4zCiAKIAogLi4gX29wZW5lci1kaXJlY3Rvci1vYmplY3RzOgpAQCAtMTA0NCw2ICsxMTA5LDE1IEBACiAgICBkYXRhID0gc3lzLnN0ZGluLnJlYWQoKQogICAgcHJpbnQoJ0NvbnRlbnQtdHlwZTogdGV4dC1wbGFpblxuXG5Hb3QgRGF0YTogIiVzIicgJSBkYXRhKQogCitIZXJlIGlzIGFuIGV4YW1wbGUgb2YgZG9pbmcgYSBgYFBVVGBgIHJlcXVlc3QgdXNpbmcgOmNsYXNzOmBSZXF1ZXN0YDo6CisKKyAgICBpbXBvcnQgdXJsbGliLnJlcXVlc3QKKyAgICBEQVRBPWInc29tZSBkYXRhJworICAgIHJlcSA9IHVybGxpYi5yZXF1ZXN0LlJlcXVlc3QodXJsPSdodHRwOi8vbG9jYWxob3N0OjgwODAnLCBkYXRhPURBVEEsbWV0aG9kPSdQVVQnKQorICAgIGYgPSB1cmxsaWIucmVxdWVzdC51cmxvcGVuKHJlcSkKKyAgICBwcmludChmLnN0YXR1cykKKyAgICBwcmludChmLnJlYXNvbikKKwogVXNlIG9mIEJhc2ljIEhUVFAgQXV0aGVudGljYXRpb246OgogCiAgICBpbXBvcnQgdXJsbGliLnJlcXVlc3QKQEAgLTExNDYsMTYgKzEyMjAsMTQgQEAKIGBgdXJsbGliYGAgKGFzIG9wcG9zZWQgdG8gYGB1cmxsaWIyYGApLiAgVGhleSBtaWdodCBiZWNvbWUgZGVwcmVjYXRlZCBhdAogc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLgogCi0KIC4uIGZ1bmN0aW9uOjogdXJscmV0cmlldmUodXJsLCBmaWxlbmFtZT1Ob25lLCByZXBvcnRob29rPU5vbmUsIGRhdGE9Tm9uZSkKIAotICAgQ29weSBhIG5ldHdvcmsgb2JqZWN0IGRlbm90ZWQgYnkgYSBVUkwgdG8gYSBsb2NhbCBmaWxlLCBpZiBuZWNlc3NhcnkuIElmIHRoZSBVUkwKLSAgIHBvaW50cyB0byBhIGxvY2FsIGZpbGUsIG9yIGEgdmFsaWQgY2FjaGVkIGNvcHkgb2YgdGhlIG9iamVjdCBleGlzdHMsIHRoZSBvYmplY3QKLSAgIGlzIG5vdCBjb3BpZWQuICBSZXR1cm4gYSB0dXBsZSBgYChmaWxlbmFtZSwgaGVhZGVycylgYCB3aGVyZSAqZmlsZW5hbWUqIGlzIHRoZQorICAgQ29weSBhIG5ldHdvcmsgb2JqZWN0IGRlbm90ZWQgYnkgYSBVUkwgdG8gYSBsb2NhbCBmaWxlLiBJZiB0aGUgVVJMCisgICBwb2ludHMgdG8gYSBsb2NhbCBmaWxlLCB0aGUgb2JqZWN0IHdpbGwgbm90IGJlIGNvcGllZCB1bmxlc3MgZmlsZW5hbWUgaXMgc3VwcGxpZWQuCisgICBSZXR1cm4gYSB0dXBsZSBgYChmaWxlbmFtZSwgaGVhZGVycylgYCB3aGVyZSAqZmlsZW5hbWUqIGlzIHRoZQogICAgbG9jYWwgZmlsZSBuYW1lIHVuZGVyIHdoaWNoIHRoZSBvYmplY3QgY2FuIGJlIGZvdW5kLCBhbmQgKmhlYWRlcnMqIGlzIHdoYXRldmVyCiAgICB0aGUgOm1ldGg6YGluZm9gIG1ldGhvZCBvZiB0aGUgb2JqZWN0IHJldHVybmVkIGJ5IDpmdW5jOmB1cmxvcGVuYCByZXR1cm5lZCAoZm9yCi0gICBhIHJlbW90ZSBvYmplY3QsIHBvc3NpYmx5IGNhY2hlZCkuIEV4Y2VwdGlvbnMgYXJlIHRoZSBzYW1lIGFzIGZvcgotICAgOmZ1bmM6YHVybG9wZW5gLgorICAgYSByZW1vdGUgb2JqZWN0KS4gRXhjZXB0aW9ucyBhcmUgdGhlIHNhbWUgYXMgZm9yIDpmdW5jOmB1cmxvcGVuYC4KIAogICAgVGhlIHNlY29uZCBhcmd1bWVudCwgaWYgcHJlc2VudCwgc3BlY2lmaWVzIHRoZSBmaWxlIGxvY2F0aW9uIHRvIGNvcHkgdG8gKGlmCiAgICBhYnNlbnQsIHRoZSBsb2NhdGlvbiB3aWxsIGJlIGEgdGVtcGZpbGUgd2l0aCBhIGdlbmVyYXRlZCBuYW1lKS4gVGhlIHRoaXJkCkBAIC0xMTY2LDYgKzEyMzgsMTMgQEAKICAgIHRoaXJkIGFyZ3VtZW50IG1heSBiZSBgYC0xYGAgb24gb2xkZXIgRlRQIHNlcnZlcnMgd2hpY2ggZG8gbm90IHJldHVybiBhIGZpbGUKICAgIHNpemUgaW4gcmVzcG9uc2UgdG8gYSByZXRyaWV2YWwgcmVxdWVzdC4KIAorICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGlsbHVzdHJhdGVzIHRoZSBtb3N0IGNvbW1vbiB1c2FnZSBzY2VuYXJpbzo6CisKKyAgICAgID4+PiBpbXBvcnQgdXJsbGliLnJlcXVlc3QKKyAgICAgID4+PiBsb2NhbF9maWxlbmFtZSwgaGVhZGVycyA9IHVybGxpYi5yZXF1ZXN0LnVybHJldHJpZXZlKCdodHRwOi8vcHl0aG9uLm9yZy8nKQorICAgICAgPj4+IGh0bWwgPSBvcGVuKGxvY2FsX2ZpbGVuYW1lKQorICAgICAgPj4+IGh0bWwuY2xvc2UoKQorCiAgICBJZiB0aGUgKnVybCogdXNlcyB0aGUgOmZpbGU6YGh0dHA6YCBzY2hlbWUgaWRlbnRpZmllciwgdGhlIG9wdGlvbmFsICpkYXRhKgogICAgYXJndW1lbnQgbWF5IGJlIGdpdmVuIHRvIHNwZWNpZnkgYSBgYFBPU1RgYCByZXF1ZXN0IChub3JtYWxseSB0aGUgcmVxdWVzdAogICAgdHlwZSBpcyBgYEdFVGBgKS4gIFRoZSAqZGF0YSogYXJndW1lbnQgbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBpbiBzdGFuZGFyZApAQCAtMTE3OCwyMCArMTI1NywyMCBAQAogICAgdGhlICBkb3dubG9hZCBpcyBpbnRlcnJ1cHRlZC4KIAogICAgVGhlICpDb250ZW50LUxlbmd0aCogaXMgdHJlYXRlZCBhcyBhIGxvd2VyIGJvdW5kOiBpZiB0aGVyZSdzIG1vcmUgZGF0YSAgdG8gcmVhZCwKLSAgIDpmdW5jOmB1cmxyZXRyaWV2ZWAgcmVhZHMgbW9yZSBkYXRhLCBidXQgaWYgbGVzcyBkYXRhIGlzIGF2YWlsYWJsZSwgIGl0IHJhaXNlcwotICAgdGhlIGV4Y2VwdGlvbi4KKyAgIHVybHJldHJpZXZlIHJlYWRzIG1vcmUgZGF0YSwgYnV0IGlmIGxlc3MgZGF0YSBpcyBhdmFpbGFibGUsICBpdCByYWlzZXMgdGhlCisgICBleGNlcHRpb24uCiAKICAgIFlvdSBjYW4gc3RpbGwgcmV0cmlldmUgdGhlIGRvd25sb2FkZWQgZGF0YSBpbiB0aGlzIGNhc2UsIGl0IGlzIHN0b3JlZCAgaW4gdGhlCiAgICA6YXR0cjpgY29udGVudGAgYXR0cmlidXRlIG9mIHRoZSBleGNlcHRpb24gaW5zdGFuY2UuCiAKLSAgIElmIG5vICpDb250ZW50LUxlbmd0aCogaGVhZGVyIHdhcyBzdXBwbGllZCwgOmZ1bmM6YHVybHJldHJpZXZlYCBjYW4gbm90IGNoZWNrCi0gICB0aGUgc2l6ZSBvZiB0aGUgZGF0YSBpdCBoYXMgZG93bmxvYWRlZCwgYW5kIGp1c3QgcmV0dXJucyBpdC4gIEluIHRoaXMgY2FzZQotICAgeW91IGp1c3QgaGF2ZSB0byBhc3N1bWUgdGhhdCB0aGUgZG93bmxvYWQgd2FzIHN1Y2Nlc3NmdWwuCisgICBJZiBubyAqQ29udGVudC1MZW5ndGgqIGhlYWRlciB3YXMgc3VwcGxpZWQsIHVybHJldHJpZXZlIGNhbiBub3QgY2hlY2sgdGhlIHNpemUKKyAgIG9mIHRoZSBkYXRhIGl0IGhhcyBkb3dubG9hZGVkLCBhbmQganVzdCByZXR1cm5zIGl0LiAgSW4gdGhpcyBjYXNlIHlvdSBqdXN0IGhhdmUKKyAgIHRvIGFzc3VtZSB0aGF0IHRoZSBkb3dubG9hZCB3YXMgc3VjY2Vzc2Z1bC4KIAogLi4gZnVuY3Rpb246OiB1cmxjbGVhbnVwKCkKIAotICAgQ2xlYXIgdGhlIGNhY2hlIHRoYXQgbWF5IGhhdmUgYmVlbiBidWlsdCB1cCBieSBwcmV2aW91cyBjYWxscyB0bwotICAgOmZ1bmM6YHVybHJldHJpZXZlYC4KKyAgIENsZWFucyB1cCB0ZW1wb3JhcnkgZmlsZXMgdGhhdCBtYXkgaGF2ZSBiZWVuIGxlZnQgYmVoaW5kIGJ5IHByZXZpb3VzCisgICBjYWxscyB0byA6ZnVuYzpgdXJscmV0cmlldmVgLgogCiAuLiBjbGFzczo6IFVSTG9wZW5lcihwcm94aWVzPU5vbmUsICoqeDUwOSkKIApAQCAtMTIxNSw3ICsxMjk0LDcgQEAKICAgICprZXlfZmlsZSogYW5kICpjZXJ0X2ZpbGUqIGFyZSBzdXBwb3J0ZWQgdG8gcHJvdmlkZSBhbiAgU1NMIGtleSBhbmQgY2VydGlmaWNhdGU7CiAgICBib3RoIGFyZSBuZWVkZWQgdG8gc3VwcG9ydCBjbGllbnQgYXV0aGVudGljYXRpb24uCiAKLSAgIDpjbGFzczpgVVJMb3BlbmVyYCBvYmplY3RzIHdpbGwgcmFpc2UgYW4gOmV4YzpgSU9FcnJvcmAgZXhjZXB0aW9uIGlmIHRoZSBzZXJ2ZXIKKyAgIDpjbGFzczpgVVJMb3BlbmVyYCBvYmplY3RzIHdpbGwgcmFpc2UgYW4gOmV4YzpgT1NFcnJvcmAgZXhjZXB0aW9uIGlmIHRoZSBzZXJ2ZXIKICAgIHJldHVybnMgYW4gZXJyb3IgY29kZS4KIAogICAgIC4uIG1ldGhvZDo6IG9wZW4oZnVsbHVybCwgZGF0YT1Ob25lKQpAQCAtMTI0Myw3ICsxMzIyLDggQEAKICAgICAgICAqZmlsZW5hbWUqIGlzIG5vdCBnaXZlbiwgdGhlIGZpbGVuYW1lIGlzIHRoZSBvdXRwdXQgb2YgOmZ1bmM6YHRlbXBmaWxlLm1rdGVtcGAKICAgICAgICB3aXRoIGEgc3VmZml4IHRoYXQgbWF0Y2hlcyB0aGUgc3VmZml4IG9mIHRoZSBsYXN0IHBhdGggY29tcG9uZW50IG9mIHRoZSBpbnB1dAogICAgICAgIFVSTC4gIElmICpyZXBvcnRob29rKiBpcyBnaXZlbiwgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uIGFjY2VwdGluZyB0aHJlZSBudW1lcmljCi0gICAgICAgcGFyYW1ldGVycy4gIEl0IHdpbGwgYmUgY2FsbGVkIGFmdGVyIGVhY2ggY2h1bmsgb2YgZGF0YSBpcyByZWFkIGZyb20gdGhlCisgICAgICAgcGFyYW1ldGVyczogQSBjaHVuayBudW1iZXIsIHRoZSBtYXhpbXVtIHNpemUgY2h1bmtzIGFyZSByZWFkIGluIGFuZCB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgZG93bmxvYWQKKyAgICAgICAoLTEgaWYgdW5rbm93bikuICBJdCB3aWxsIGJlIGNhbGxlZCBvbmNlIGF0IHRoZSBzdGFydCBhbmQgYWZ0ZXIgZWFjaCBjaHVuayBvZiBkYXRhIGlzIHJlYWQgZnJvbSB0aGUKICAgICAgICBuZXR3b3JrLiAgKnJlcG9ydGhvb2sqIGlzIGlnbm9yZWQgZm9yIGxvY2FsIFVSTHMuCiAKICAgICAgICBJZiB0aGUgKnVybCogdXNlcyB0aGUgOmZpbGU6YGh0dHA6YCBzY2hlbWUgaWRlbnRpZmllciwgdGhlIG9wdGlvbmFsICpkYXRhKgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNhNzRiOAotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L3VybGxpYi5yc3QKQEAgLTAsMCArMSw5IEBACis6bW9kOmB1cmxsaWJgIC0tLSBVUkwgaGFuZGxpbmcgbW9kdWxlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworYGB1cmxsaWJgYCBpcyBhIHBhY2thZ2UgdGhhdCBjb2xsZWN0cyBzZXZlcmFsIG1vZHVsZXMgZm9yIHdvcmtpbmcgd2l0aCBVUkxzOgorCisqIDptb2Q6YHVybGxpYi5yZXF1ZXN0YCBmb3Igb3BlbmluZyBhbmQgcmVhZGluZyBVUkxzCisqIDptb2Q6YHVybGxpYi5lcnJvcmAgY29udGFpbmluZyB0aGUgZXhjZXB0aW9ucyByYWlzZWQgYnkgOm1vZDpgdXJsbGliLnJlcXVlc3RgCisqIDptb2Q6YHVybGxpYi5wYXJzZWAgZm9yIHBhcnNpbmcgVVJMcworKiA6bW9kOmB1cmxsaWIucm9ib3RwYXJzZXJgIGZvciBwYXJzaW5nIGBgcm9ib3RzLnR4dGBgIGZpbGVzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS92ZW52LnJzdCBiL0RvYy9saWJyYXJ5L3ZlbnYucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkMDQ4MDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS92ZW52LnJzdApAQCAtMCwwICsxLDM5MyBAQAorOm1vZDpgdmVudmAgLS0tIENyZWF0aW9uIG9mIHZpcnR1YWwgZW52aXJvbm1lbnRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogdmVudgorICAgOnN5bm9wc2lzOiBDcmVhdGlvbiBvZiB2aXJ0dWFsIGVudmlyb25tZW50cy4KKy4uIG1vZHVsZWF1dGhvcjo6IFZpbmF5IFNhamlwIDx2aW5heV9zYWppcEB5YWhvby5jby51az4KKy4uIHNlY3Rpb25hdXRob3I6OiBWaW5heSBTYWppcCA8dmluYXlfc2FqaXBAeWFob28uY28udWs+CisKKworLi4gaW5kZXg6OiBwYWlyOiBFbnZpcm9ubWVudHM7IHZpcnR1YWwKKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL3ZlbnYucHlgCisKKy0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmB2ZW52YCBtb2R1bGUgcHJvdmlkZXMgc3VwcG9ydCBmb3IgY3JlYXRpbmcgbGlnaHR3ZWlnaHQgInZpcnR1YWwKK2Vudmlyb25tZW50cyIgd2l0aCB0aGVpciBvd24gc2l0ZSBkaXJlY3Rvcmllcywgb3B0aW9uYWxseSBpc29sYXRlZCBmcm9tIHN5c3RlbQorc2l0ZSBkaXJlY3Rvcmllcy4gIEVhY2ggdmlydHVhbCBlbnZpcm9ubWVudCBoYXMgaXRzIG93biBQeXRob24gYmluYXJ5IChhbGxvd2luZworY3JlYXRpb24gb2YgZW52aXJvbm1lbnRzIHdpdGggdmFyaW91cyBQeXRob24gdmVyc2lvbnMpIGFuZCBjYW4gaGF2ZSBpdHMgb3duCitpbmRlcGVuZGVudCBzZXQgb2YgaW5zdGFsbGVkIFB5dGhvbiBwYWNrYWdlcyBpbiBpdHMgc2l0ZSBkaXJlY3Rvcmllcy4KKworCitDcmVhdGluZyB2aXJ0dWFsIGVudmlyb25tZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5jbHVkZTo6IC91c2luZy92ZW52LWNyZWF0ZS5pbmMKKworCisuLiBfdmVudi1kZWY6CisKKy4uIG5vdGU6OiBBIHZpcnR1YWwgZW52aXJvbm1lbnQgKGFsc28gY2FsbGVkIGEgYGB2ZW52YGApIGlzIGEgUHl0aG9uCisgICBlbnZpcm9ubWVudCBzdWNoIHRoYXQgdGhlIFB5dGhvbiBpbnRlcnByZXRlciwgbGlicmFyaWVzIGFuZCBzY3JpcHRzCisgICBpbnN0YWxsZWQgaW50byBpdCBhcmUgaXNvbGF0ZWQgZnJvbSB0aG9zZSBpbnN0YWxsZWQgaW4gb3RoZXIgdmlydHVhbAorICAgZW52aXJvbm1lbnRzLCBhbmQgKGJ5IGRlZmF1bHQpIGFueSBsaWJyYXJpZXMgaW5zdGFsbGVkIGluIGEgInN5c3RlbSIgUHl0aG9uLAorICAgaS5lLiBvbmUgd2hpY2ggaXMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgeW91ciBvcGVyYXRpbmcgc3lzdGVtLgorCisgICBBIHZlbnYgaXMgYSBkaXJlY3RvcnkgdHJlZSB3aGljaCBjb250YWlucyBQeXRob24gZXhlY3V0YWJsZSBmaWxlcyBhbmQKKyAgIG90aGVyIGZpbGVzIHdoaWNoIGluZGljYXRlIHRoYXQgaXQgaXMgYSB2ZW52LgorCisgICBDb21tb24gaW5zdGFsbGF0aW9uIHRvb2xzIHN1Y2ggYXMgYGBEaXN0cmlidXRlYGAgYW5kIGBgcGlwYGAgd29yayBhcworICAgZXhwZWN0ZWQgd2l0aCB2ZW52cyAtIGkuZS4gd2hlbiBhIHZlbnYgaXMgYWN0aXZlLCB0aGV5IGluc3RhbGwgUHl0aG9uCisgICBwYWNrYWdlcyBpbnRvIHRoZSB2ZW52IHdpdGhvdXQgbmVlZGluZyB0byBiZSB0b2xkIHRvIGRvIHNvIGV4cGxpY2l0bHkuCisgICBPZiBjb3Vyc2UsIHlvdSBuZWVkIHRvIGluc3RhbGwgdGhlbSBpbnRvIHRoZSB2ZW52IGZpcnN0OiB0aGlzIGNvdWxkIGJlCisgICBkb25lIGJ5IHJ1bm5pbmcgYGBkaXN0cmlidXRlX3NldHVwLnB5YGAgd2l0aCB0aGUgdmVudiBhY3RpdmF0ZWQsCisgICBmb2xsb3dlZCBieSBydW5uaW5nIGBgZWFzeV9pbnN0YWxsIHBpcGBgLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY291bGQgZG93bmxvYWQKKyAgIHRoZSBzb3VyY2UgdGFyYmFsbHMgYW5kIHJ1biBgYHB5dGhvbiBzZXR1cC5weSBpbnN0YWxsYGAgYWZ0ZXIgdW5wYWNraW5nLAorICAgd2l0aCB0aGUgdmVudiBhY3RpdmF0ZWQuCisKKyAgIFdoZW4gYSB2ZW52IGlzIGFjdGl2ZSAoaS5lLiB0aGUgdmVudidzIFB5dGhvbiBpbnRlcnByZXRlciBpcyBydW5uaW5nKSwgdGhlCisgICBhdHRyaWJ1dGVzIDphdHRyOmBzeXMucHJlZml4YCBhbmQgOmF0dHI6YHN5cy5leGVjX3ByZWZpeGAgcG9pbnQgdG8gdGhlIGJhc2UKKyAgIGRpcmVjdG9yeSBvZiB0aGUgdmVudiwgd2hlcmVhcyA6YXR0cjpgc3lzLmJhc2VfcHJlZml4YCBhbmQKKyAgIDphdHRyOmBzeXMuYmFzZV9leGVjX3ByZWZpeGAgcG9pbnQgdG8gdGhlIG5vbi12ZW52IFB5dGhvbiBpbnN0YWxsYXRpb24KKyAgIHdoaWNoIHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgdmVudi4gSWYgYSB2ZW52IGlzIG5vdCBhY3RpdmUsIHRoZW4KKyAgIDphdHRyOmBzeXMucHJlZml4YCBpcyB0aGUgc2FtZSBhcyA6YXR0cjpgc3lzLmJhc2VfcHJlZml4YCBhbmQKKyAgIDphdHRyOmBzeXMuZXhlY19wcmVmaXhgIGlzIHRoZSBzYW1lIGFzIDphdHRyOmBzeXMuYmFzZV9leGVjX3ByZWZpeGAgKHRoZXkKKyAgIGFsbCBwb2ludCB0byBhIG5vbi12ZW52IFB5dGhvbiBpbnN0YWxsYXRpb24pLgorCisKK0FQSQorLS0tCisKKy4uIGhpZ2hsaWdodDo6IHB5dGhvbgorCitUaGUgaGlnaC1sZXZlbCBtZXRob2QgZGVzY3JpYmVkIGFib3ZlIG1ha2VzIHVzZSBvZiBhIHNpbXBsZSBBUEkgd2hpY2ggcHJvdmlkZXMKK21lY2hhbmlzbXMgZm9yIHRoaXJkLXBhcnR5IHZpcnR1YWwgZW52aXJvbm1lbnQgY3JlYXRvcnMgdG8gY3VzdG9taXplIGVudmlyb25tZW50CitjcmVhdGlvbiBhY2NvcmRpbmcgdG8gdGhlaXIgbmVlZHMsIHRoZSA6Y2xhc3M6YEVudkJ1aWxkZXJgIGNsYXNzLgorCisuLiBjbGFzczo6IEVudkJ1aWxkZXIoc3lzdGVtX3NpdGVfcGFja2FnZXM9RmFsc2UsIGNsZWFyPUZhbHNlLCBzeW1saW5rcz1GYWxzZSwgdXBncmFkZT1GYWxzZSkKKworICAgIFRoZSA6Y2xhc3M6YEVudkJ1aWxkZXJgIGNsYXNzIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBrZXl3b3JkIGFyZ3VtZW50cyBvbgorICAgIGluc3RhbnRpYXRpb246CisKKyAgICAqIGBgc3lzdGVtX3NpdGVfcGFja2FnZXNgYCAtLSBhIEJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB0aGF0IHRoZSBzeXN0ZW0gUHl0aG9uCisgICAgICBzaXRlLXBhY2thZ2VzIHNob3VsZCBiZSBhdmFpbGFibGUgdG8gdGhlIGVudmlyb25tZW50IChkZWZhdWx0cyB0byBgYEZhbHNlYGApLgorCisgICAgKiBgYGNsZWFyYGAgLS0gYSBCb29sZWFuIHZhbHVlIHdoaWNoLCBpZiBUcnVlLCB3aWxsIGRlbGV0ZSBhbnkgZXhpc3RpbmcgdGFyZ2V0CisgICAgICBkaXJlY3RvcnkgaW5zdGVhZCBvZiByYWlzaW5nIGFuIGV4Y2VwdGlvbiAoZGVmYXVsdHMgdG8gYGBGYWxzZWBgKS4KKworICAgICogYGBzeW1saW5rc2BgIC0tIGEgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gYXR0ZW1wdCB0byBzeW1saW5rIHRoZQorICAgICAgUHl0aG9uIGJpbmFyeSAoYW5kIGFueSBuZWNlc3NhcnkgRExMcyBvciBvdGhlciBiaW5hcmllcywKKyAgICAgIGUuZy4gYGBweXRob253LmV4ZWBgKSwgcmF0aGVyIHRoYW4gY29weWluZy4gRGVmYXVsdHMgdG8gYGBUcnVlYGAgb24gTGludXggYW5kCisgICAgICBVbml4IHN5c3RlbXMsIGJ1dCBgYEZhbHNlYGAgb24gV2luZG93cy4KKworICAgICogYGB1cGdyYWRlYGAgLS0gYSBCb29sZWFuIHZhbHVlIHdoaWNoLCBpZiBUcnVlLCB3aWxsIHVwZ3JhZGUgYW4gZXhpc3RpbmcKKyAgICAgIGVudmlyb25tZW50IHdpdGggdGhlIHJ1bm5pbmcgUHl0aG9uIC0gZm9yIHVzZSB3aGVuIHRoYXQgUHl0aG9uIGhhcyBiZWVuCisgICAgICB1cGdyYWRlZCBpbi1wbGFjZSAoZGVmYXVsdHMgdG8gYGBGYWxzZWBgKS4KKworCisKKyAgICBDcmVhdG9ycyBvZiB0aGlyZC1wYXJ0eSB2aXJ0dWFsIGVudmlyb25tZW50IHRvb2xzIHdpbGwgYmUgZnJlZSB0byB1c2UgdGhlCisgICAgcHJvdmlkZWQgYGBFbnZCdWlsZGVyYGAgY2xhc3MgYXMgYSBiYXNlIGNsYXNzLgorCisgICAgVGhlIHJldHVybmVkIGVudi1idWlsZGVyIGlzIGFuIG9iamVjdCB3aGljaCBoYXMgYSBtZXRob2QsIGBgY3JlYXRlYGA6CisKKyAgICAuLiBtZXRob2Q6OiBjcmVhdGUoZW52X2RpcikKKworICAgICAgICBUaGlzIG1ldGhvZCB0YWtlcyBhcyByZXF1aXJlZCBhcmd1bWVudCB0aGUgcGF0aCAoYWJzb2x1dGUgb3IgcmVsYXRpdmUgdG8KKyAgICAgICAgdGhlIGN1cnJlbnQgZGlyZWN0b3J5KSBvZiB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB3aGljaCBpcyB0byBjb250YWluIHRoZQorICAgICAgICB2aXJ0dWFsIGVudmlyb25tZW50LiAgVGhlIGBgY3JlYXRlYGAgbWV0aG9kIHdpbGwgZWl0aGVyIGNyZWF0ZSB0aGUKKyAgICAgICAgZW52aXJvbm1lbnQgaW4gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnksIG9yIHJhaXNlIGFuIGFwcHJvcHJpYXRlCisgICAgICAgIGV4Y2VwdGlvbi4KKworICAgICAgICBUaGUgYGBjcmVhdGVgYCBtZXRob2Qgb2YgdGhlIGBgRW52QnVpbGRlcmBgIGNsYXNzIGlsbHVzdHJhdGVzIHRoZSBob29rcworICAgICAgICBhdmFpbGFibGUgZm9yIHN1YmNsYXNzIGN1c3RvbWl6YXRpb246OgorCisgICAgICAgICAgICBkZWYgY3JlYXRlKHNlbGYsIGVudl9kaXIpOgorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgIENyZWF0ZSBhIHZpcnR1YWxpemVkIFB5dGhvbiBlbnZpcm9ubWVudCBpbiBhIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBlbnZfZGlyIGlzIHRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIGNyZWF0ZSBhbiBlbnZpcm9ubWVudCBpbi4KKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBlbnZfZGlyID0gb3MucGF0aC5hYnNwYXRoKGVudl9kaXIpCisgICAgICAgICAgICAgICAgY29udGV4dCA9IHNlbGYuY3JlYXRlX2RpcmVjdG9yaWVzKGVudl9kaXIpCisgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVfY29uZmlndXJhdGlvbihjb250ZXh0KQorICAgICAgICAgICAgICAgIHNlbGYuc2V0dXBfcHl0aG9uKGNvbnRleHQpCisgICAgICAgICAgICAgICAgc2VsZi5zZXR1cF9zY3JpcHRzKGNvbnRleHQpCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X3NldHVwKGNvbnRleHQpCisKKyAgICAgICAgRWFjaCBvZiB0aGUgbWV0aG9kcyA6bWV0aDpgY3JlYXRlX2RpcmVjdG9yaWVzYCwKKyAgICAgICAgOm1ldGg6YGNyZWF0ZV9jb25maWd1cmF0aW9uYCwgOm1ldGg6YHNldHVwX3B5dGhvbmAsCisgICAgICAgIDptZXRoOmBzZXR1cF9zY3JpcHRzYCBhbmQgOm1ldGg6YHBvc3Rfc2V0dXBgIGNhbiBiZSBvdmVycmlkZGVuLgorCisgICAgLi4gbWV0aG9kOjogY3JlYXRlX2RpcmVjdG9yaWVzKGVudl9kaXIpCisKKyAgICAgICAgQ3JlYXRlcyB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IGFuZCBhbGwgbmVjZXNzYXJ5IGRpcmVjdG9yaWVzLCBhbmQKKyAgICAgICAgcmV0dXJucyBhIGNvbnRleHQgb2JqZWN0LiAgVGhpcyBpcyBqdXN0IGEgaG9sZGVyIGZvciBhdHRyaWJ1dGVzIChzdWNoIGFzCisgICAgICAgIHBhdGhzKSwgZm9yIHVzZSBieSB0aGUgb3RoZXIgbWV0aG9kcy4KKworICAgIC4uIG1ldGhvZDo6IGNyZWF0ZV9jb25maWd1cmF0aW9uKGNvbnRleHQpCisKKyAgICAgICAgQ3JlYXRlcyB0aGUgYGBweXZlbnYuY2ZnYGAgY29uZmlndXJhdGlvbiBmaWxlIGluIHRoZSBlbnZpcm9ubWVudC4KKworICAgIC4uIG1ldGhvZDo6IHNldHVwX3B5dGhvbihjb250ZXh0KQorCisgICAgICAgIENyZWF0ZXMgYSBjb3B5IG9mIHRoZSBQeXRob24gZXhlY3V0YWJsZSAoYW5kLCB1bmRlciBXaW5kb3dzLCBETExzKSBpbgorICAgICAgICB0aGUgZW52aXJvbm1lbnQuCisKKyAgICAuLiBtZXRob2Q6OiBzZXR1cF9zY3JpcHRzKGNvbnRleHQpCisKKyAgICAgICAgSW5zdGFsbHMgYWN0aXZhdGlvbiBzY3JpcHRzIGFwcHJvcHJpYXRlIHRvIHRoZSBwbGF0Zm9ybSBpbnRvIHRoZSB2aXJ0dWFsCisgICAgICAgIGVudmlyb25tZW50LgorCisgICAgLi4gbWV0aG9kOjogcG9zdF9zZXR1cChjb250ZXh0KQorCisgICAgICAgIEEgcGxhY2Vob2xkZXIgbWV0aG9kIHdoaWNoIGNhbiBiZSBvdmVycmlkZGVuIGluIHRoaXJkIHBhcnR5CisgICAgICAgIGltcGxlbWVudGF0aW9ucyB0byBwcmUtaW5zdGFsbCBwYWNrYWdlcyBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCBvcgorICAgICAgICBwZXJmb3JtIG90aGVyIHBvc3QtY3JlYXRpb24gc3RlcHMuCisKKyAgICBJbiBhZGRpdGlvbiwgOmNsYXNzOmBFbnZCdWlsZGVyYCBwcm92aWRlcyB0aGlzIHV0aWxpdHkgbWV0aG9kIHRoYXQgY2FuIGJlCisgICAgY2FsbGVkIGZyb20gOm1ldGg6YHNldHVwX3NjcmlwdHNgIG9yIDptZXRoOmBwb3N0X3NldHVwYCBpbiBzdWJjbGFzc2VzIHRvCisgICAgYXNzaXN0IGluIGluc3RhbGxpbmcgY3VzdG9tIHNjcmlwdHMgaW50byB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4KKworICAgIC4uIG1ldGhvZDo6IGluc3RhbGxfc2NyaXB0cyhjb250ZXh0LCBwYXRoKQorCisgICAgICAgICpwYXRoKiBpcyB0aGUgcGF0aCB0byBhIGRpcmVjdG9yeSB0aGF0IHNob3VsZCBjb250YWluIHN1YmRpcmVjdG9yaWVzCisgICAgICAgICJjb21tb24iLCAicG9zaXgiLCAibnQiLCBlYWNoIGNvbnRhaW5pbmcgc2NyaXB0cyBkZXN0aW5lZCBmb3IgdGhlIGJpbgorICAgICAgICBkaXJlY3RvcnkgaW4gdGhlIGVudmlyb25tZW50LiAgVGhlIGNvbnRlbnRzIG9mICJjb21tb24iIGFuZCB0aGUKKyAgICAgICAgZGlyZWN0b3J5IGNvcnJlc3BvbmRpbmcgdG8gOmRhdGE6YG9zLm5hbWVgIGFyZSBjb3BpZWQgYWZ0ZXIgc29tZSB0ZXh0CisgICAgICAgIHJlcGxhY2VtZW50IG9mIHBsYWNlaG9sZGVyczoKKworICAgICAgICAqIGBgX19WRU5WX0RJUl9fYGAgaXMgcmVwbGFjZWQgd2l0aCB0aGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgZW52aXJvbm1lbnQKKyAgICAgICAgICBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBgYF9fVkVOVl9OQU1FX19gYCBpcyByZXBsYWNlZCB3aXRoIHRoZSBlbnZpcm9ubWVudCBuYW1lIChmaW5hbCBwYXRoCisgICAgICAgICAgc2VnbWVudCBvZiBlbnZpcm9ubWVudCBkaXJlY3RvcnkpLgorCisgICAgICAgICogYGBfX1ZFTlZfQklOX05BTUVfX2BgIGlzIHJlcGxhY2VkIHdpdGggdGhlIG5hbWUgb2YgdGhlIGJpbiBkaXJlY3RvcnkKKyAgICAgICAgICAoZWl0aGVyIGBgYmluYGAgb3IgYGBTY3JpcHRzYGApLgorCisgICAgICAgICogYGBfX1ZFTlZfUFlUSE9OX19gYCBpcyByZXBsYWNlZCB3aXRoIHRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZQorICAgICAgICAgIGVudmlyb25tZW50J3MgZXhlY3V0YWJsZS4KKworCitUaGVyZSBpcyBhbHNvIGEgbW9kdWxlLWxldmVsIGNvbnZlbmllbmNlIGZ1bmN0aW9uOgorCisuLiBmdW5jdGlvbjo6IGNyZWF0ZShlbnZfZGlyLCBzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1GYWxzZSwgY2xlYXI9RmFsc2UsIHN5bWxpbmtzPUZhbHNlKQorCisgICAgQ3JlYXRlIGFuIDpjbGFzczpgRW52QnVpbGRlcmAgd2l0aCB0aGUgZ2l2ZW4ga2V5d29yZCBhcmd1bWVudHMsIGFuZCBjYWxsIGl0cworICAgIDptZXRoOmB+RW52QnVpbGRlci5jcmVhdGVgIG1ldGhvZCB3aXRoIHRoZSAqZW52X2RpciogYXJndW1lbnQuCisKK0FuIGV4YW1wbGUgb2YgZXh0ZW5kaW5nIGBgRW52QnVpbGRlcmBgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIHNjcmlwdCBzaG93cyBob3cgdG8gZXh0ZW5kIDpjbGFzczpgRW52QnVpbGRlcmAgYnkgaW1wbGVtZW50aW5nIGEKK3N1YmNsYXNzIHdoaWNoIGluc3RhbGxzIERpc3RyaWJ1dGUgYW5kIHBpcCBpbnRvIGEgY3JlYXRlZCB2ZW52OjoKKworICAgIGltcG9ydCBvcworICAgIGltcG9ydCBvcy5wYXRoCisgICAgZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBQb3BlbiwgUElQRQorICAgIGltcG9ydCBzeXMKKyAgICBmcm9tIHRocmVhZGluZyBpbXBvcnQgVGhyZWFkCisgICAgZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlCisgICAgZnJvbSB1cmxsaWIucmVxdWVzdCBpbXBvcnQgdXJscmV0cmlldmUKKyAgICBpbXBvcnQgdmVudgorCisgICAgY2xhc3MgRGlzdHJpYnV0ZUVudkJ1aWxkZXIodmVudi5FbnZCdWlsZGVyKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgYnVpbGRlciBpbnN0YWxscyBEaXN0cmlidXRlIGFuZCBwaXAgc28gdGhhdCB5b3UgY2FuIHBpcCBvcgorICAgICAgICBlYXN5X2luc3RhbGwgb3RoZXIgcGFja2FnZXMgaW50byB0aGUgY3JlYXRlZCBlbnZpcm9ubWVudC4KKworICAgICAgICA6cGFyYW0gbm9kaXN0OiBJZiBUcnVlLCBEaXN0cmlidXRlIGlzIG5vdCBpbnN0YWxsZWQgaW50byB0aGUgY3JlYXRlZAorICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudC4KKyAgICAgICAgOnBhcmFtIG5vcGlwOiBJZiBUcnVlLCBwaXAgaXMgbm90IGluc3RhbGxlZCBpbnRvIHRoZSBjcmVhdGVkCisgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQuCisgICAgICAgIDpwYXJhbSBwcm9ncmVzczogSWYgRGlzdHJpYnV0ZSBvciBwaXAgYXJlIGluc3RhbGxlZCwgdGhlIHByb2dyZXNzIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxhdGlvbiBjYW4gYmUgbW9uaXRvcmVkIGJ5IHBhc3NpbmcgYSBwcm9ncmVzcworICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxhYmxlLiBJZiBzcGVjaWZpZWQsIGl0IGlzIGNhbGxlZCB3aXRoIHR3bworICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50czogYSBzdHJpbmcgaW5kaWNhdGluZyBzb21lIHByb2dyZXNzLCBhbmQgYQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgaW5kaWNhdGluZyB3aGVyZSB0aGUgc3RyaW5nIGlzIGNvbWluZyBmcm9tLgorICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjb250ZXh0IGFyZ3VtZW50IGNhbiBoYXZlIG9uZSBvZiB0aHJlZSB2YWx1ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgJ21haW4nLCBpbmRpY2F0aW5nIHRoYXQgaXQgaXMgY2FsbGVkIGZyb20gdmlydHVhbGl6ZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgaXRzZWxmLCBhbmQgJ3N0ZG91dCcgYW5kICdzdGRlcnInLCB3aGljaCBhcmUgb2J0YWluZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICBieSByZWFkaW5nIGxpbmVzIGZyb20gdGhlIG91dHB1dCBzdHJlYW1zIG9mIGEgc3VicHJvY2VzcworICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIHVzZWQgdG8gaW5zdGFsbCB0aGUgYXBwLgorCisgICAgICAgICAgICAgICAgICAgICAgICAgSWYgYSBjYWxsYWJsZSBpcyBub3Qgc3BlY2lmaWVkLCBkZWZhdWx0IHByb2dyZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gaXMgb3V0cHV0IHRvIHN5cy5zdGRlcnIuCisgICAgICAgICIiIgorCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgc2VsZi5ub2Rpc3QgPSBrd2FyZ3MucG9wKCdub2Rpc3QnLCBGYWxzZSkKKyAgICAgICAgICAgIHNlbGYubm9waXAgPSBrd2FyZ3MucG9wKCdub3BpcCcsIEZhbHNlKQorICAgICAgICAgICAgc2VsZi5wcm9ncmVzcyA9IGt3YXJncy5wb3AoJ3Byb2dyZXNzJywgTm9uZSkKKyAgICAgICAgICAgIHNlbGYudmVyYm9zZSA9IGt3YXJncy5wb3AoJ3ZlcmJvc2UnLCBGYWxzZSkKKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIGRlZiBwb3N0X3NldHVwKHNlbGYsIGNvbnRleHQpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBTZXQgdXAgYW55IHBhY2thZ2VzIHdoaWNoIG5lZWQgdG8gYmUgcHJlLWluc3RhbGxlZCBpbnRvIHRoZQorICAgICAgICAgICAgZW52aXJvbm1lbnQgYmVpbmcgY3JlYXRlZC4KKworICAgICAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLm5vZGlzdDoKKyAgICAgICAgICAgICAgICBzZWxmLmluc3RhbGxfZGlzdHJpYnV0ZShjb250ZXh0KQorICAgICAgICAgICAgaWYgbm90IHNlbGYubm9waXA6CisgICAgICAgICAgICAgICAgc2VsZi5pbnN0YWxsX3BpcChjb250ZXh0KQorCisgICAgICAgIGRlZiByZWFkZXIoc2VsZiwgc3RyZWFtLCBjb250ZXh0KToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgUmVhZCBsaW5lcyBmcm9tIGEgc3VicHJvY2Vzcycgb3V0cHV0IHN0cmVhbSBhbmQgZWl0aGVyIHBhc3MgdG8gYSBwcm9ncmVzcworICAgICAgICAgICAgY2FsbGFibGUgKGlmIHNwZWNpZmllZCkgb3Igd3JpdGUgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gdG8gc3lzLnN0ZGVyci4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgcHJvZ3Jlc3MgPSBzZWxmLnByb2dyZXNzCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHMgPSBzdHJlYW0ucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGlmIHByb2dyZXNzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBwcm9ncmVzcyhzLCBjb250ZXh0KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnZlcmJvc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCcuJykKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUocy5kZWNvZGUoJ3V0Zi04JykpCisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQorCisgICAgICAgIGRlZiBpbnN0YWxsX3NjcmlwdChzZWxmLCBjb250ZXh0LCBuYW1lLCB1cmwpOgorICAgICAgICAgICAgXywgXywgcGF0aCwgXywgXywgXyA9IHVybHBhcnNlKHVybCkKKyAgICAgICAgICAgIGZuID0gb3MucGF0aC5zcGxpdChwYXRoKVstMV0KKyAgICAgICAgICAgIGJpbnBhdGggPSBjb250ZXh0LmJpbl9wYXRoCisgICAgICAgICAgICBkaXN0cGF0aCA9IG9zLnBhdGguam9pbihiaW5wYXRoLCBmbikKKyAgICAgICAgICAgICMgRG93bmxvYWQgc2NyaXB0IGludG8gdGhlIGVudidzIGJpbmFyaWVzIGZvbGRlcgorICAgICAgICAgICAgdXJscmV0cmlldmUodXJsLCBkaXN0cGF0aCkKKyAgICAgICAgICAgIHByb2dyZXNzID0gc2VsZi5wcm9ncmVzcworICAgICAgICAgICAgaWYgcHJvZ3Jlc3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcHJvZ3Jlc3MoJ0luc3RhbGxpbmcgJXMnICVuYW1lLCAnbWFpbicpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0luc3RhbGxpbmcgJXMgJyAlIG5hbWUpCisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCisgICAgICAgICAgICAjIEluc3RhbGwgaW4gdGhlIGVudgorICAgICAgICAgICAgYXJncyA9IFtjb250ZXh0LmVudl9leGUsIGZuXQorICAgICAgICAgICAgcCA9IFBvcGVuKGFyZ3MsIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSwgY3dkPWJpbnBhdGgpCisgICAgICAgICAgICB0MSA9IFRocmVhZCh0YXJnZXQ9c2VsZi5yZWFkZXIsIGFyZ3M9KHAuc3Rkb3V0LCAnc3Rkb3V0JykpCisgICAgICAgICAgICB0MS5zdGFydCgpCisgICAgICAgICAgICB0MiA9IFRocmVhZCh0YXJnZXQ9c2VsZi5yZWFkZXIsIGFyZ3M9KHAuc3RkZXJyLCAnc3RkZXJyJykpCisgICAgICAgICAgICB0Mi5zdGFydCgpCisgICAgICAgICAgICBwLndhaXQoKQorICAgICAgICAgICAgdDEuam9pbigpCisgICAgICAgICAgICB0Mi5qb2luKCkKKyAgICAgICAgICAgIGlmIHByb2dyZXNzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHByb2dyZXNzKCdkb25lLicsICdtYWluJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnZG9uZS5cbicpCisgICAgICAgICAgICAjIENsZWFuIHVwIC0gbm8gbG9uZ2VyIG5lZWRlZAorICAgICAgICAgICAgb3MudW5saW5rKGRpc3RwYXRoKQorCisgICAgICAgIGRlZiBpbnN0YWxsX2Rpc3RyaWJ1dGUoc2VsZiwgY29udGV4dCk6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIEluc3RhbGwgRGlzdHJpYnV0ZSBpbiB0aGUgZW52aXJvbm1lbnQuCisKKyAgICAgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICB1cmwgPSAnaHR0cDovL3B5dGhvbi1kaXN0cmlidXRlLm9yZy9kaXN0cmlidXRlX3NldHVwLnB5JworICAgICAgICAgICAgc2VsZi5pbnN0YWxsX3NjcmlwdChjb250ZXh0LCAnZGlzdHJpYnV0ZScsIHVybCkKKyAgICAgICAgICAgICMgY2xlYXIgdXAgdGhlIGRpc3RyaWJ1dGUgYXJjaGl2ZSB3aGljaCBnZXRzIGRvd25sb2FkZWQKKyAgICAgICAgICAgIHByZWQgPSBsYW1iZGEgbzogby5zdGFydHN3aXRoKCdkaXN0cmlidXRlLScpIGFuZCBvLmVuZHN3aXRoKCcudGFyLmd6JykKKyAgICAgICAgICAgIGZpbGVzID0gZmlsdGVyKHByZWQsIG9zLmxpc3RkaXIoY29udGV4dC5iaW5fcGF0aCkpCisgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBmID0gb3MucGF0aC5qb2luKGNvbnRleHQuYmluX3BhdGgsIGYpCisgICAgICAgICAgICAgICAgb3MudW5saW5rKGYpCisKKyAgICAgICAgZGVmIGluc3RhbGxfcGlwKHNlbGYsIGNvbnRleHQpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBJbnN0YWxsIHBpcCBpbiB0aGUgZW52aXJvbm1lbnQuCisKKyAgICAgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICB1cmwgPSAnaHR0cHM6Ly9yYXcuZ2l0aHViLmNvbS9weXBhL3BpcC9tYXN0ZXIvY29udHJpYi9nZXQtcGlwLnB5JworICAgICAgICAgICAgc2VsZi5pbnN0YWxsX3NjcmlwdChjb250ZXh0LCAncGlwJywgdXJsKQorCisgICAgZGVmIG1haW4oYXJncz1Ob25lKToKKyAgICAgICAgY29tcGF0aWJsZSA9IFRydWUKKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAgICAgICAgICAgIGNvbXBhdGlibGUgPSBGYWxzZQorICAgICAgICBlbGlmIG5vdCBoYXNhdHRyKHN5cywgJ2Jhc2VfcHJlZml4Jyk6CisgICAgICAgICAgICBjb21wYXRpYmxlID0gRmFsc2UKKyAgICAgICAgaWYgbm90IGNvbXBhdGlibGU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUaGlzIHNjcmlwdCBpcyBvbmx5IGZvciB1c2Ugd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQeXRob24gMy4zIG9yIGxhdGVyJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGltcG9ydCBhcmdwYXJzZQorCisgICAgICAgICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihwcm9nPV9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J0NyZWF0ZXMgdmlydHVhbCBQeXRob24gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vudmlyb25tZW50cyBpbiBvbmUgb3IgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vcmUgdGFyZ2V0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXJlY3Rvcmllcy4nKQorICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnZGlycycsIG1ldGF2YXI9J0VOVl9ESVInLCBuYXJncz0nKycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0EgZGlyZWN0b3J5IHRvIGNyZWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4uJykKKyAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbm8tZGlzdHJpYnV0ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J25vZGlzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRvbid0IGluc3RhbGwgRGlzdHJpYnV0ZSBpbiB0aGUgdmlydHVhbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVudmlyb25tZW50LiIpCisgICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW5vLXBpcCcsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J25vcGlwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRG9uJ3QgaW5zdGFsbCBwaXAgaW4gdGhlIHZpcnR1YWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbnZpcm9ubWVudC4iKQorICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcycsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J3N5c3RlbV9zaXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nR2l2ZSB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCBhY2Nlc3MgdG8gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzdGVtIHNpdGUtcGFja2FnZXMgZGlyLicpCisgICAgICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICAgICAgdXNlX3N5bWxpbmtzID0gRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdXNlX3N5bWxpbmtzID0gVHJ1ZQorICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1zeW1saW5rcycsIGRlZmF1bHQ9dXNlX3N5bWxpbmtzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBkZXN0PSdzeW1saW5rcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1RyeSB0byB1c2Ugc3ltbGlua3MgcmF0aGVyIHRoYW4gY29waWVzLCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3doZW4gc3ltbGlua3MgYXJlIG5vdCB0aGUgZGVmYXVsdCBmb3IgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgcGxhdGZvcm0uJykKKyAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tY2xlYXInLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdjbGVhcicsIGhlbHA9J0RlbGV0ZSB0aGUgY29udGVudHMgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbnZpcm9ubWVudCBkaXJlY3RvcnkgaWYgaXQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FscmVhZHkgZXhpc3RzLCBiZWZvcmUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vudmlyb25tZW50IGNyZWF0aW9uLicpCisgICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXVwZ3JhZGUnLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd1cGdyYWRlJywgaGVscD0nVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdG9yeSB0byB1c2UgdGhpcyB2ZXJzaW9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvZiBQeXRob24sIGFzc3VtaW5nIFB5dGhvbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuJykKKyAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tdmVyYm9zZScsIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3ZlcmJvc2UnLCBoZWxwPSdEaXNwbGF5IHRoZSBvdXRwdXQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zyb20gdGhlIHNjcmlwdHMgd2hpY2ggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luc3RhbGwgRGlzdHJpYnV0ZSBhbmQgcGlwLicpCisgICAgICAgICAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykKKyAgICAgICAgICAgIGlmIG9wdGlvbnMudXBncmFkZSBhbmQgb3B0aW9ucy5jbGVhcjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd5b3UgY2Fubm90IHN1cHBseSAtLXVwZ3JhZGUgYW5kIC0tY2xlYXIgdG9nZXRoZXIuJykKKyAgICAgICAgICAgIGJ1aWxkZXIgPSBEaXN0cmlidXRlRW52QnVpbGRlcihzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1vcHRpb25zLnN5c3RlbV9zaXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyPW9wdGlvbnMuY2xlYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltbGlua3M9b3B0aW9ucy5zeW1saW5rcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGdyYWRlPW9wdGlvbnMudXBncmFkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2Rpc3Q9b3B0aW9ucy5ub2Rpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9waXA9b3B0aW9ucy5ub3BpcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJib3NlPW9wdGlvbnMudmVyYm9zZSkKKyAgICAgICAgICAgIGZvciBkIGluIG9wdGlvbnMuZGlyczoKKyAgICAgICAgICAgICAgICBidWlsZGVyLmNyZWF0ZShkKQorCisgICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICAgICAgcmMgPSAxCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1haW4oKQorICAgICAgICAgICAgcmMgPSAwCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHByaW50KCdFcnJvcjogJXMnICUgZSwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICBzeXMuZXhpdChyYykKKworVGhpcyBzY3JpcHQgaXMgYWxzbyBhdmFpbGFibGUgZm9yIGRvd25sb2FkIGBvbmxpbmUKKzxodHRwczovL2dpc3QuZ2l0aHViLmNvbS80NjczMzk1PmBfLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd2FybmluZ3MucnN0IGIvRG9jL2xpYnJhcnkvd2FybmluZ3MucnN0CmluZGV4IDhhZjE5YTIuLjgzODdmNWEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3dhcm5pbmdzLnJzdAorKysgYi9Eb2MvbGlicmFyeS93YXJuaW5ncy5yc3QKQEAgLTMzOSw4ICszMzksNyBAQAogICAgV3JpdGUgYSB3YXJuaW5nIHRvIGEgZmlsZS4gIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzCiAgICBgYGZvcm1hdHdhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGxpbmUpYGAgYW5kIHdyaXRlcyB0aGUKICAgIHJlc3VsdGluZyBzdHJpbmcgdG8gKmZpbGUqLCB3aGljaCBkZWZhdWx0cyB0byBgYHN5cy5zdGRlcnJgYC4gIFlvdSBtYXkgcmVwbGFjZQotICAgdGhpcyBmdW5jdGlvbiB3aXRoIGFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uIGJ5IGFzc2lnbmluZyB0bwotICAgYGB3YXJuaW5ncy5zaG93d2FybmluZ2BgLgorICAgdGhpcyBmdW5jdGlvbiB3aXRoIGFueSBjYWxsYWJsZSBieSBhc3NpZ25pbmcgdG8gYGB3YXJuaW5ncy5zaG93d2FybmluZ2BgLgogICAgKmxpbmUqIGlzIGEgbGluZSBvZiBzb3VyY2UgY29kZSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgd2FybmluZwogICAgbWVzc2FnZTsgaWYgKmxpbmUqIGlzIG5vdCBzdXBwbGllZCwgOmZ1bmM6YHNob3d3YXJuaW5nYCB3aWxsCiAgICB0cnkgdG8gcmVhZCB0aGUgbGluZSBzcGVjaWZpZWQgYnkgKmZpbGVuYW1lKiBhbmQgKmxpbmVubyouCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS93ZWJicm93c2VyLnJzdCBiL0RvYy9saWJyYXJ5L3dlYmJyb3dzZXIucnN0CmluZGV4IGIyZGNmOGYuLjljMmIzYWIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3dlYmJyb3dzZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3dlYmJyb3dzZXIucnN0CkBAIC05OCw0NyArOTgsNTUgQEAKIG1heSBiZSBwYXNzZWQgdG8gdGhlIDpmdW5jOmBnZXRgIGZ1bmN0aW9uIGFuZCB0aGUgY29ycmVzcG9uZGluZyBpbnN0YW50aWF0aW9ucwogZm9yIHRoZSBjb250cm9sbGVyIGNsYXNzZXMsIGFsbCBkZWZpbmVkIGluIHRoaXMgbW9kdWxlLgogCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgVHlwZSBOYW1lICAgICAgICAgICAgIHwgQ2xhc3MgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgfAotKz09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT0rCi18IGBgJ21vemlsbGEnYGAgICAgICAgICB8IDpjbGFzczpgTW96aWxsYSgnbW96aWxsYScpYCAgICAgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdmaXJlZm94J2BgICAgICAgICAgfCA6Y2xhc3M6YE1vemlsbGEoJ21vemlsbGEnKWAgICAgICAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnbmV0c2NhcGUnYGAgICAgICAgIHwgOmNsYXNzOmBNb3ppbGxhKCduZXRzY2FwZScpYCAgICAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ2dhbGVvbidgYCAgICAgICAgICB8IDpjbGFzczpgR2FsZW9uKCdnYWxlb24nKWAgICAgICAgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdlcGlwaGFueSdgYCAgICAgICAgfCA6Y2xhc3M6YEdhbGVvbignZXBpcGhhbnknKWAgICAgICAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnc2tpcHN0b25lJ2BgICAgICAgIHwgOmNsYXNzOmBCYWNrZ3JvdW5kQnJvd3Nlcignc2tpcHN0b25lJylgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ2tmbWNsaWVudCdgYCAgICAgICB8IDpjbGFzczpgS29ucXVlcm9yKClgICAgICAgICAgICAgICAgICAgICB8IFwoMSkgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdrb25xdWVyb3InYGAgICAgICAgfCA6Y2xhc3M6YEtvbnF1ZXJvcigpYCAgICAgICAgICAgICAgICAgICAgfCBcKDEpICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAna2ZtJ2BgICAgICAgICAgICAgIHwgOmNsYXNzOmBLb25xdWVyb3IoKWAgICAgICAgICAgICAgICAgICAgIHwgXCgxKSAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ21vc2FpYydgYCAgICAgICAgICB8IDpjbGFzczpgQmFja2dyb3VuZEJyb3dzZXIoJ21vc2FpYycpYCAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdvcGVyYSdgYCAgICAgICAgICAgfCA6Y2xhc3M6YE9wZXJhKClgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnZ3JhaWwnYGAgICAgICAgICAgIHwgOmNsYXNzOmBHcmFpbCgpYCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ2xpbmtzJ2BgICAgICAgICAgICB8IDpjbGFzczpgR2VuZXJpY0Jyb3dzZXIoJ2xpbmtzJylgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdlbGlua3MnYGAgICAgICAgICAgfCA6Y2xhc3M6YEVsaW5rcygnZWxpbmtzJylgICAgICAgICAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnbHlueCdgYCAgICAgICAgICAgIHwgOmNsYXNzOmBHZW5lcmljQnJvd3NlcignbHlueCcpYCAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ3czbSdgYCAgICAgICAgICAgICB8IDpjbGFzczpgR2VuZXJpY0Jyb3dzZXIoJ3czbScpYCAgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCd3aW5kb3dzLWRlZmF1bHQnYGAgfCA6Y2xhc3M6YFdpbmRvd3NEZWZhdWx0YCAgICAgICAgICAgICAgICAgfCBcKDIpICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnbWFjb3N4J2BgICAgICAgICAgIHwgOmNsYXNzOmBNYWNPU1goJ2RlZmF1bHQnKWAgICAgICAgICAgICAgIHwgXCgzKSAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ3NhZmFyaSdgYCAgICAgICAgICB8IDpjbGFzczpgTWFjT1NYKCdzYWZhcmknKWAgICAgICAgICAgICAgICB8IFwoMykgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBUeXBlIE5hbWUgICAgICAgICAgICAgIHwgQ2xhc3MgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgfAorKz09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09KworfCBgYCdtb3ppbGxhJ2BgICAgICAgICAgIHwgOmNsYXNzOmBNb3ppbGxhKCdtb3ppbGxhJylgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdmaXJlZm94J2BgICAgICAgICAgIHwgOmNsYXNzOmBNb3ppbGxhKCdtb3ppbGxhJylgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCduZXRzY2FwZSdgYCAgICAgICAgIHwgOmNsYXNzOmBNb3ppbGxhKCduZXRzY2FwZScpYCAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdnYWxlb24nYGAgICAgICAgICAgIHwgOmNsYXNzOmBHYWxlb24oJ2dhbGVvbicpYCAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdlcGlwaGFueSdgYCAgICAgICAgIHwgOmNsYXNzOmBHYWxlb24oJ2VwaXBoYW55JylgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdza2lwc3RvbmUnYGAgICAgICAgIHwgOmNsYXNzOmBCYWNrZ3JvdW5kQnJvd3Nlcignc2tpcHN0b25lJylgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdrZm1jbGllbnQnYGAgICAgICAgIHwgOmNsYXNzOmBLb25xdWVyb3IoKWAgICAgICAgICAgICAgICAgICAgIHwgXCgxKSAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdrb25xdWVyb3InYGAgICAgICAgIHwgOmNsYXNzOmBLb25xdWVyb3IoKWAgICAgICAgICAgICAgICAgICAgIHwgXCgxKSAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdrZm0nYGAgICAgICAgICAgICAgIHwgOmNsYXNzOmBLb25xdWVyb3IoKWAgICAgICAgICAgICAgICAgICAgIHwgXCgxKSAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdtb3NhaWMnYGAgICAgICAgICAgIHwgOmNsYXNzOmBCYWNrZ3JvdW5kQnJvd3NlcignbW9zYWljJylgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdvcGVyYSdgYCAgICAgICAgICAgIHwgOmNsYXNzOmBPcGVyYSgpYCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdncmFpbCdgYCAgICAgICAgICAgIHwgOmNsYXNzOmBHcmFpbCgpYCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdsaW5rcydgYCAgICAgICAgICAgIHwgOmNsYXNzOmBHZW5lcmljQnJvd3NlcignbGlua3MnKWAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdlbGlua3MnYGAgICAgICAgICAgIHwgOmNsYXNzOmBFbGlua3MoJ2VsaW5rcycpYCAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdseW54J2BgICAgICAgICAgICAgIHwgOmNsYXNzOmBHZW5lcmljQnJvd3NlcignbHlueCcpYCAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCd3M20nYGAgICAgICAgICAgICAgIHwgOmNsYXNzOmBHZW5lcmljQnJvd3NlcigndzNtJylgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCd3aW5kb3dzLWRlZmF1bHQnYGAgIHwgOmNsYXNzOmBXaW5kb3dzRGVmYXVsdGAgICAgICAgICAgICAgICAgIHwgXCgyKSAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdtYWNvc3gnYGAgICAgICAgICAgIHwgOmNsYXNzOmBNYWNPU1goJ2RlZmF1bHQnKWAgICAgICAgICAgICAgIHwgXCgzKSAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdzYWZhcmknYGAgICAgICAgICAgIHwgOmNsYXNzOmBNYWNPU1goJ3NhZmFyaScpYCAgICAgICAgICAgICAgIHwgXCgzKSAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdnb29nbGUtY2hyb21lJ2BgICAgIHwgOmNsYXNzOmBDaHJvbWUoJ2dvb2dsZS1jaHJvbWUnKWAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdjaHJvbWUnYGAgICAgICAgICAgIHwgOmNsYXNzOmBDaHJvbWUoJ2Nocm9tZScpYCAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdjaHJvbWl1bSdgYCAgICAgICAgIHwgOmNsYXNzOmBDaHJvbWl1bSgnY2hyb21pdW0nKWAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdjaHJvbWl1bS1icm93c2VyJ2BgIHwgOmNsYXNzOmBDaHJvbWl1bSgnY2hyb21pdW0tYnJvd3NlcicpYCAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwogCiBOb3RlczoKIApAQCAtMTU1LDEyICsxNjMsMTUgQEAKICgzKQogICAgT25seSBvbiBNYWMgT1MgWCBwbGF0Zm9ybS4KIAorLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICBTdXBwb3J0IGZvciBDaHJvbWUvQ2hyb21pdW0gaGFzIGJlZW4gYWRkZWQuCisKIEhlcmUgYXJlIHNvbWUgc2ltcGxlIGV4YW1wbGVzOjoKIAotICAgdXJsID0gJ2h0dHA6Ly93d3cucHl0aG9uLm9yZy8nCisgICB1cmwgPSAnaHR0cDovL2RvY3MucHl0aG9uLm9yZy8nCiAKICAgICMgT3BlbiBVUkwgaW4gYSBuZXcgdGFiLCBpZiBhIGJyb3dzZXIgd2luZG93IGlzIGFscmVhZHkgb3Blbi4KLSAgIHdlYmJyb3dzZXIub3Blbl9uZXdfdGFiKHVybCArICdkb2MvJykKKyAgIHdlYmJyb3dzZXIub3Blbl9uZXdfdGFiKHVybCkKIAogICAgIyBPcGVuIFVSTCBpbiBuZXcgd2luZG93LCByYWlzaW5nIHRoZSB3aW5kb3cgaWYgcG9zc2libGUuCiAgICB3ZWJicm93c2VyLm9wZW5fbmV3KHVybCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dpbnJlZy5yc3QgYi9Eb2MvbGlicmFyeS93aW5yZWcucnN0CmluZGV4IGNkYzA3YjEuLjYwZjNiZDkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3dpbnJlZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd2lucmVnLnJzdApAQCAtMTIsNiArMTIsMTcgQEAKIHRvIGVuc3VyZSB0aGF0IHRoZSBoYW5kbGVzIGFyZSBjbG9zZWQgY29ycmVjdGx5LCBldmVuIGlmIHRoZSBwcm9ncmFtbWVyIG5lZ2xlY3RzCiB0byBleHBsaWNpdGx5IGNsb3NlIHRoZW0uCiAKKy4uIF9leGNlcHRpb24tY2hhbmdlZDoKKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFNldmVyYWwgZnVuY3Rpb25zIGluIHRoaXMgbW9kdWxlIHVzZWQgdG8gcmFpc2UgYQorICAgOmV4YzpgV2luZG93c0Vycm9yYCwgd2hpY2ggaXMgbm93IGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorCisuLiBfZnVuY3Rpb25zOgorCitGdW5jdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCiBUaGlzIG1vZHVsZSBvZmZlcnMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CiAKIApAQCAtMzcsOCArNDgsMTEgQEAKIAogICAgKmtleSogaXMgdGhlIHByZWRlZmluZWQgaGFuZGxlIHRvIGNvbm5lY3QgdG8uCiAKLSAgIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS4gSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhCi0gICA6ZXhjOmBXaW5kb3dzRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisgICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuIElmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4KKyAgIDpleGM6YE9TRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBTZWUgOnJlZjpgYWJvdmUgPGV4Y2VwdGlvbi1jaGFuZ2VkPmAuCiAKIAogLi4gZnVuY3Rpb246OiBDcmVhdGVLZXkoa2V5LCBzdWJfa2V5KQpAQCAtNTYsOCArNzAsMTEgQEAKIAogICAgSWYgdGhlIGtleSBhbHJlYWR5IGV4aXN0cywgdGhpcyBmdW5jdGlvbiBvcGVucyB0aGUgZXhpc3Rpbmcga2V5LgogCi0gICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuIElmIHRoZSBmdW5jdGlvbiBmYWlscywgYQotICAgOmV4YzpgV2luZG93c0Vycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgorICAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaGFuZGxlIG9mIHRoZSBvcGVuZWQga2V5LiBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuCisgICA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgU2VlIDpyZWY6YGFib3ZlIDxleGNlcHRpb24tY2hhbmdlZD5gLgogCiAKIC4uIGZ1bmN0aW9uOjogQ3JlYXRlS2V5RXgoa2V5LCBzdWJfa2V5LCByZXNlcnZlZD0wLCBhY2Nlc3M9S0VZX1dSSVRFKQpAQCAtODEsMTEgKzk4LDE0IEBACiAKICAgIElmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMsIHRoaXMgZnVuY3Rpb24gb3BlbnMgdGhlIGV4aXN0aW5nIGtleS4KIAotICAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaGFuZGxlIG9mIHRoZSBvcGVuZWQga2V5LiBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGEKLSAgIDpleGM6YFdpbmRvd3NFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKyAgIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS4gSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbgorICAgOmV4YzpgT1NFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBTZWUgOnJlZjpgYWJvdmUgPGV4Y2VwdGlvbi1jaGFuZ2VkPmAuCisKIAogLi4gZnVuY3Rpb246OiBEZWxldGVLZXkoa2V5LCBzdWJfa2V5KQogCkBAIC0xMDAsNyArMTIwLDEwIEBACiAgICAqVGhpcyBtZXRob2QgY2FuIG5vdCBkZWxldGUga2V5cyB3aXRoIHN1YmtleXMuKgogCiAgICBJZiB0aGUgbWV0aG9kIHN1Y2NlZWRzLCB0aGUgZW50aXJlIGtleSwgaW5jbHVkaW5nIGFsbCBvZiBpdHMgdmFsdWVzLCBpcyByZW1vdmVkLgotICAgSWYgdGhlIG1ldGhvZCBmYWlscywgYSA6ZXhjOmBXaW5kb3dzRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisgICBJZiB0aGUgbWV0aG9kIGZhaWxzLCBhbiA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgU2VlIDpyZWY6YGFib3ZlIDxleGNlcHRpb24tY2hhbmdlZD5gLgogCiAKIC4uIGZ1bmN0aW9uOjogRGVsZXRlS2V5RXgoa2V5LCBzdWJfa2V5LCBhY2Nlc3M9S0VZX1dPVzY0XzY0S0VZLCByZXNlcnZlZD0wKQpAQCAtMTI5LDEyICsxNTIsMTUgQEAKICAgICpUaGlzIG1ldGhvZCBjYW4gbm90IGRlbGV0ZSBrZXlzIHdpdGggc3Via2V5cy4qCiAKICAgIElmIHRoZSBtZXRob2Qgc3VjY2VlZHMsIHRoZSBlbnRpcmUga2V5LCBpbmNsdWRpbmcgYWxsIG9mIGl0cyB2YWx1ZXMsIGlzCi0gICByZW1vdmVkLiBJZiB0aGUgbWV0aG9kIGZhaWxzLCBhIDpleGM6YFdpbmRvd3NFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKyAgIHJlbW92ZWQuIElmIHRoZSBtZXRob2QgZmFpbHMsIGFuIDpleGM6YE9TRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCiAKICAgIE9uIHVuc3VwcG9ydGVkIFdpbmRvd3MgdmVyc2lvbnMsIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIGlzIHJhaXNlZC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBTZWUgOnJlZjpgYWJvdmUgPGV4Y2VwdGlvbi1jaGFuZ2VkPmAuCisKIAogLi4gZnVuY3Rpb246OiBEZWxldGVWYWx1ZShrZXksIHZhbHVlKQogCkBAIC0xNTYsOSArMTgyLDEyIEBACiAgICAqaW5kZXgqIGlzIGFuIGludGVnZXIgdGhhdCBpZGVudGlmaWVzIHRoZSBpbmRleCBvZiB0aGUga2V5IHRvIHJldHJpZXZlLgogCiAgICBUaGUgZnVuY3Rpb24gcmV0cmlldmVzIHRoZSBuYW1lIG9mIG9uZSBzdWJrZXkgZWFjaCB0aW1lIGl0IGlzIGNhbGxlZC4gIEl0IGlzCi0gICB0eXBpY2FsbHkgY2FsbGVkIHJlcGVhdGVkbHkgdW50aWwgYSA6ZXhjOmBXaW5kb3dzRXJyb3JgIGV4Y2VwdGlvbiBpcworICAgdHlwaWNhbGx5IGNhbGxlZCByZXBlYXRlZGx5IHVudGlsIGFuIDpleGM6YE9TRXJyb3JgIGV4Y2VwdGlvbiBpcwogICAgcmFpc2VkLCBpbmRpY2F0aW5nLCBubyBtb3JlIHZhbHVlcyBhcmUgYXZhaWxhYmxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgU2VlIDpyZWY6YGFib3ZlIDxleGNlcHRpb24tY2hhbmdlZD5gLgorCiAKIC4uIGZ1bmN0aW9uOjogRW51bVZhbHVlKGtleSwgaW5kZXgpCiAKQEAgLTE3MCw3ICsxOTksNyBAQAogICAgKmluZGV4KiBpcyBhbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgaW5kZXggb2YgdGhlIHZhbHVlIHRvIHJldHJpZXZlLgogCiAgICBUaGUgZnVuY3Rpb24gcmV0cmlldmVzIHRoZSBuYW1lIG9mIG9uZSBzdWJrZXkgZWFjaCB0aW1lIGl0IGlzIGNhbGxlZC4gSXQgaXMKLSAgIHR5cGljYWxseSBjYWxsZWQgcmVwZWF0ZWRseSwgdW50aWwgYSA6ZXhjOmBXaW5kb3dzRXJyb3JgIGV4Y2VwdGlvbiBpcworICAgdHlwaWNhbGx5IGNhbGxlZCByZXBlYXRlZGx5LCB1bnRpbCBhbiA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gaXMKICAgIHJhaXNlZCwgaW5kaWNhdGluZyBubyBtb3JlIHZhbHVlcy4KIAogICAgVGhlIHJlc3VsdCBpcyBhIHR1cGxlIG9mIDMgaXRlbXM6CkBAIC0xODksNiArMjE4LDkgQEAKICAgIHwgICAgICAgfCA6bWV0aDpgU2V0VmFsdWVFeGApICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBTZWUgOnJlZjpgYWJvdmUgPGV4Y2VwdGlvbi1jaGFuZ2VkPmAuCisKIAogLi4gZnVuY3Rpb246OiBFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3Moc3RyKQogCkBAIC0yNjEsOSArMjkzLDEzIEBACiAKICAgIFRoZSByZXN1bHQgaXMgYSBuZXcgaGFuZGxlIHRvIHRoZSBzcGVjaWZpZWQga2V5LgogCi0gICBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIDpleGM6YFdpbmRvd3NFcnJvcmAgaXMgcmFpc2VkLgorICAgSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yIEFsbG93IHRoZSB1c2Ugb2YgbmFtZWQgYXJndW1lbnRzLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgIEFsbG93IHRoZSB1c2Ugb2YgbmFtZWQgYXJndW1lbnRzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgU2VlIDpyZWY6YGFib3ZlIDxleGNlcHRpb24tY2hhbmdlZD5gLgogCiAKIC4uIGZ1bmN0aW9uOjogUXVlcnlJbmZvS2V5KGtleSkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dzZ2lyZWYucnN0IGIvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QKaW5kZXggMWZkMzQ1MS4uMWNlZjJlOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QKQEAgLTYwOSw2ICs2MDksOSBAQAogICAgICAgYXMgOmNsYXNzOmBCYXNlQ0dJSGFuZGxlcmAgYW5kIDpjbGFzczpgQ0dJSGFuZGxlcmApIHRoYXQgYXJlIG5vdCBIVFRQIG9yaWdpbgogICAgICAgc2VydmVycy4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIFRoZSB0ZXJtICJQeXRob24iIGlzIHJlcGxhY2VkIHdpdGggaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgdGVybSBsaWtlCisgICAgICAgICAiQ1B5dGhvbiIsICJKeXRob24iIGV0Yy4KIAogICAgLi4gbWV0aG9kOjogQmFzZUhhbmRsZXIuZ2V0X3NjaGVtZSgpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbC5kb20ubWluaWRvbS5yc3QgYi9Eb2MvbGlicmFyeS94bWwuZG9tLm1pbmlkb20ucnN0CmluZGV4IGI1MTJkN2UuLmE3NTMyNWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbC5kb20ubWluaWRvbS5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1sLmRvbS5taW5pZG9tLnJzdApAQCAtMTQxLDEyICsxNDEsNyBAQAogICAgdGhlIERPTSBub2RlLgogCiAgICBXaXRoIGFuIGV4cGxpY2l0ICplbmNvZGluZyogWzFdXyBhcmd1bWVudCwgdGhlIHJlc3VsdCBpcyBhIGJ5dGUKLSAgIHN0cmluZyBpbiB0aGUgc3BlY2lmaWVkIGVuY29kaW5nLiAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UKLSAgIGFsd2F5cyBzcGVjaWZ5IGFuIGVuY29kaW5nOyB5b3UgbWF5IHVzZSBhbnkgZW5jb2RpbmcgeW91IGxpa2UsIGJ1dAotICAgYW4gYXJndW1lbnQgb2YgInV0Zi04IiBpcyB0aGUgbW9zdCBjb21tb24gY2hvaWNlLCBhdm9pZGluZwotICAgOmV4YzpgVW5pY29kZUVycm9yYCBleGNlcHRpb25zIGluIGNhc2Ugb2YgdW5yZXByZXNlbnRhYmxlIHRleHQKLSAgIGRhdGEuCi0KKyAgIHN0cmluZyBpbiB0aGUgc3BlY2lmaWVkIGVuY29kaW5nLgogICAgV2l0aCBubyAqZW5jb2RpbmcqIGFyZ3VtZW50LCB0aGUgcmVzdWx0IGlzIGEgVW5pY29kZSBzdHJpbmcsIGFuZCB0aGUKICAgIFhNTCBkZWNsYXJhdGlvbiBpbiB0aGUgcmVzdWx0aW5nIHN0cmluZyBkb2VzIG5vdCBzcGVjaWZ5IGFuCiAgICBlbmNvZGluZy4gRW5jb2RpbmcgdGhpcyBzdHJpbmcgaW4gYW4gZW5jb2Rpbmcgb3RoZXIgdGhhbiBVVEYtOCBpcwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLnJzdCBiL0RvYy9saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZS5yc3QKaW5kZXggY2YwYzMzZi4uMTQ0ZTM0NCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLnJzdAorKysgYi9Eb2MvbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUucnN0CkBAIC01LDQ5ICs1LDMyMyBAQAogICAgOnN5bm9wc2lzOiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgRWxlbWVudFRyZWUgQVBJLgogLi4gbW9kdWxlYXV0aG9yOjogRnJlZHJpayBMdW5kaCA8ZnJlZHJpa0BweXRob253YXJlLmNvbT4KIAotKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5YAorVGhlIDptb2Q6YHhtbC5ldHJlZS5FbGVtZW50VHJlZWAgbW9kdWxlIGltcGxlbWVudHMgYSBzaW1wbGUgYW5kIGVmZmljaWVudCBBUEkKK2ZvciBwYXJzaW5nIGFuZCBjcmVhdGluZyBYTUwgZGF0YS4KIAotLS0tLS0tLS0tLS0tLS0KKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBUaGlzIG1vZHVsZSB3aWxsIHVzZSBhIGZhc3QgaW1wbGVtZW50YXRpb24gd2hlbmV2ZXIgYXZhaWxhYmxlLgorICAgVGhlIDptb2Q6YHhtbC5ldHJlZS5jRWxlbWVudFRyZWVgIG1vZHVsZSBpcyBkZXByZWNhdGVkLgogCi1UaGUgOmNsYXNzOmBFbGVtZW50YCB0eXBlIGlzIGEgZmxleGlibGUgY29udGFpbmVyIG9iamVjdCwgZGVzaWduZWQgdG8gc3RvcmUKLWhpZXJhcmNoaWNhbCBkYXRhIHN0cnVjdHVyZXMgaW4gbWVtb3J5LiAgVGhlIHR5cGUgY2FuIGJlIGRlc2NyaWJlZCBhcyBhIGNyb3NzCi1iZXR3ZWVuIGEgbGlzdCBhbmQgYSBkaWN0aW9uYXJ5LgorVHV0b3JpYWwKKy0tLS0tLS0tCiAKLUVhY2ggZWxlbWVudCBoYXMgYSBudW1iZXIgb2YgcHJvcGVydGllcyBhc3NvY2lhdGVkIHdpdGggaXQ6CitUaGlzIGlzIGEgc2hvcnQgdHV0b3JpYWwgZm9yIHVzaW5nIDptb2Q6YHhtbC5ldHJlZS5FbGVtZW50VHJlZWAgKGBgRVRgYCBpbgorc2hvcnQpLiAgVGhlIGdvYWwgaXMgdG8gZGVtb25zdHJhdGUgc29tZSBvZiB0aGUgYnVpbGRpbmcgYmxvY2tzIGFuZCBiYXNpYworY29uY2VwdHMgb2YgdGhlIG1vZHVsZS4KIAotKiBhIHRhZyB3aGljaCBpcyBhIHN0cmluZyBpZGVudGlmeWluZyB3aGF0IGtpbmQgb2YgZGF0YSB0aGlzIGVsZW1lbnQgcmVwcmVzZW50cwotICAodGhlIGVsZW1lbnQgdHlwZSwgaW4gb3RoZXIgd29yZHMpLgorWE1MIHRyZWUgYW5kIGVsZW1lbnRzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAotKiBhIG51bWJlciBvZiBhdHRyaWJ1dGVzLCBzdG9yZWQgaW4gYSBQeXRob24gZGljdGlvbmFyeS4KK1hNTCBpcyBhbiBpbmhlcmVudGx5IGhpZXJhcmNoaWNhbCBkYXRhIGZvcm1hdCwgYW5kIHRoZSBtb3N0IG5hdHVyYWwgd2F5IHRvCityZXByZXNlbnQgaXQgaXMgd2l0aCBhIHRyZWUuICBgYEVUYGAgaGFzIHR3byBjbGFzc2VzIGZvciB0aGlzIHB1cnBvc2UgLQorOmNsYXNzOmBFbGVtZW50VHJlZWAgcmVwcmVzZW50cyB0aGUgd2hvbGUgWE1MIGRvY3VtZW50IGFzIGEgdHJlZSwgYW5kCis6Y2xhc3M6YEVsZW1lbnRgIHJlcHJlc2VudHMgYSBzaW5nbGUgbm9kZSBpbiB0aGlzIHRyZWUuICBJbnRlcmFjdGlvbnMgd2l0aAordGhlIHdob2xlIGRvY3VtZW50IChyZWFkaW5nIGFuZCB3cml0aW5nIHRvL2Zyb20gZmlsZXMpIGFyZSB1c3VhbGx5IGRvbmUKK29uIHRoZSA6Y2xhc3M6YEVsZW1lbnRUcmVlYCBsZXZlbC4gIEludGVyYWN0aW9ucyB3aXRoIGEgc2luZ2xlIFhNTCBlbGVtZW50CithbmQgaXRzIHN1Yi1lbGVtZW50cyBhcmUgZG9uZSBvbiB0aGUgOmNsYXNzOmBFbGVtZW50YCBsZXZlbC4KIAotKiBhIHRleHQgc3RyaW5nLgorLi4gX2VsZW1lbnR0cmVlLXBhcnNpbmcteG1sOgogCi0qIGFuIG9wdGlvbmFsIHRhaWwgc3RyaW5nLgorUGFyc2luZyBYTUwKK15eXl5eXl5eXl5eCiAKLSogYSBudW1iZXIgb2YgY2hpbGQgZWxlbWVudHMsIHN0b3JlZCBpbiBhIFB5dGhvbiBzZXF1ZW5jZQorV2UnbGwgYmUgdXNpbmcgdGhlIGZvbGxvd2luZyBYTUwgZG9jdW1lbnQgYXMgdGhlIHNhbXBsZSBkYXRhIGZvciB0aGlzIHNlY3Rpb246CiAKLVRvIGNyZWF0ZSBhbiBlbGVtZW50IGluc3RhbmNlLCB1c2UgdGhlIDpjbGFzczpgRWxlbWVudGAgY29uc3RydWN0b3Igb3IgdGhlCi06ZnVuYzpgU3ViRWxlbWVudGAgZmFjdG9yeSBmdW5jdGlvbi4KKy4uIGNvZGUtYmxvY2s6OiB4bWwKIAotVGhlIDpjbGFzczpgRWxlbWVudFRyZWVgIGNsYXNzIGNhbiBiZSB1c2VkIHRvIHdyYXAgYW4gZWxlbWVudCBzdHJ1Y3R1cmUsIGFuZAotY29udmVydCBpdCBmcm9tIGFuZCB0byBYTUwuCisgICA8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKyAgIDxkYXRhPgorICAgICAgIDxjb3VudHJ5IG5hbWU9IkxpZWNodGVuc3RlaW4iPgorICAgICAgICAgICA8cmFuaz4xPC9yYW5rPgorICAgICAgICAgICA8eWVhcj4yMDA4PC95ZWFyPgorICAgICAgICAgICA8Z2RwcGM+MTQxMTAwPC9nZHBwYz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9IkF1c3RyaWEiIGRpcmVjdGlvbj0iRSIvPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iU3dpdHplcmxhbmQiIGRpcmVjdGlvbj0iVyIvPgorICAgICAgIDwvY291bnRyeT4KKyAgICAgICA8Y291bnRyeSBuYW1lPSJTaW5nYXBvcmUiPgorICAgICAgICAgICA8cmFuaz40PC9yYW5rPgorICAgICAgICAgICA8eWVhcj4yMDExPC95ZWFyPgorICAgICAgICAgICA8Z2RwcGM+NTk5MDA8L2dkcHBjPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iTWFsYXlzaWEiIGRpcmVjdGlvbj0iTiIvPgorICAgICAgIDwvY291bnRyeT4KKyAgICAgICA8Y291bnRyeSBuYW1lPSJQYW5hbWEiPgorICAgICAgICAgICA8cmFuaz42ODwvcmFuaz4KKyAgICAgICAgICAgPHllYXI+MjAxMTwveWVhcj4KKyAgICAgICAgICAgPGdkcHBjPjEzNjAwPC9nZHBwYz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9IkNvc3RhIFJpY2EiIGRpcmVjdGlvbj0iVyIvPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iQ29sb21iaWEiIGRpcmVjdGlvbj0iRSIvPgorICAgICAgIDwvY291bnRyeT4KKyAgIDwvZGF0YT4KIAotQSBDIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgQVBJIGlzIGF2YWlsYWJsZSBhcyA6bW9kOmB4bWwuZXRyZWUuY0VsZW1lbnRUcmVlYC4KK1dlIGNhbiBpbXBvcnQgdGhpcyBkYXRhIGJ5IHJlYWRpbmcgZnJvbSBhIGZpbGU6OgorCisgICBpbXBvcnQgeG1sLmV0cmVlLkVsZW1lbnRUcmVlIGFzIEVUCisgICB0cmVlID0gRVQucGFyc2UoJ2NvdW50cnlfZGF0YS54bWwnKQorICAgcm9vdCA9IHRyZWUuZ2V0cm9vdCgpCisKK09yIGRpcmVjdGx5IGZyb20gYSBzdHJpbmc6OgorCisgICByb290ID0gRVQuZnJvbXN0cmluZyhjb3VudHJ5X2RhdGFfYXNfc3RyaW5nKQorCis6ZnVuYzpgZnJvbXN0cmluZ2AgcGFyc2VzIFhNTCBmcm9tIGEgc3RyaW5nIGRpcmVjdGx5IGludG8gYW4gOmNsYXNzOmBFbGVtZW50YCwKK3doaWNoIGlzIHRoZSByb290IGVsZW1lbnQgb2YgdGhlIHBhcnNlZCB0cmVlLiAgT3RoZXIgcGFyc2luZyBmdW5jdGlvbnMgbWF5CitjcmVhdGUgYW4gOmNsYXNzOmBFbGVtZW50VHJlZWAuICBDaGVjayB0aGUgZG9jdW1lbnRhdGlvbiB0byBiZSBzdXJlLgorCitBcyBhbiA6Y2xhc3M6YEVsZW1lbnRgLCBgYHJvb3RgYCBoYXMgYSB0YWcgYW5kIGEgZGljdGlvbmFyeSBvZiBhdHRyaWJ1dGVzOjoKKworICAgPj4+IHJvb3QudGFnCisgICAnZGF0YScKKyAgID4+PiByb290LmF0dHJpYgorICAge30KKworSXQgYWxzbyBoYXMgY2hpbGRyZW4gbm9kZXMgb3ZlciB3aGljaCB3ZSBjYW4gaXRlcmF0ZTo6CisKKyAgID4+PiBmb3IgY2hpbGQgaW4gcm9vdDoKKyAgIC4uLiAgIHByaW50KGNoaWxkLnRhZywgY2hpbGQuYXR0cmliKQorICAgLi4uCisgICBjb3VudHJ5IHsnbmFtZSc6ICdMaWVjaHRlbnN0ZWluJ30KKyAgIGNvdW50cnkgeyduYW1lJzogJ1NpbmdhcG9yZSd9CisgICBjb3VudHJ5IHsnbmFtZSc6ICdQYW5hbWEnfQorCitDaGlsZHJlbiBhcmUgbmVzdGVkLCBhbmQgd2UgY2FuIGFjY2VzcyBzcGVjaWZpYyBjaGlsZCBub2RlcyBieSBpbmRleDo6CisKKyAgID4+PiByb290WzBdWzFdLnRleHQKKyAgICcyMDA4JworCitGaW5kaW5nIGludGVyZXN0aW5nIGVsZW1lbnRzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKKzpjbGFzczpgRWxlbWVudGAgaGFzIHNvbWUgdXNlZnVsIG1ldGhvZHMgdGhhdCBoZWxwIGl0ZXJhdGUgcmVjdXJzaXZlbHkgb3ZlciBhbGwKK3RoZSBzdWItdHJlZSBiZWxvdyBpdCAoaXRzIGNoaWxkcmVuLCB0aGVpciBjaGlsZHJlbiwgYW5kIHNvIG9uKS4gIEZvciBleGFtcGxlLAorOm1ldGg6YEVsZW1lbnQuaXRlcmA6OgorCisgICA+Pj4gZm9yIG5laWdoYm9yIGluIHJvb3QuaXRlcignbmVpZ2hib3InKToKKyAgIC4uLiAgIHByaW50KG5laWdoYm9yLmF0dHJpYikKKyAgIC4uLgorICAgeyduYW1lJzogJ0F1c3RyaWEnLCAnZGlyZWN0aW9uJzogJ0UnfQorICAgeyduYW1lJzogJ1N3aXR6ZXJsYW5kJywgJ2RpcmVjdGlvbic6ICdXJ30KKyAgIHsnbmFtZSc6ICdNYWxheXNpYScsICdkaXJlY3Rpb24nOiAnTid9CisgICB7J25hbWUnOiAnQ29zdGEgUmljYScsICdkaXJlY3Rpb24nOiAnVyd9CisgICB7J25hbWUnOiAnQ29sb21iaWEnLCAnZGlyZWN0aW9uJzogJ0UnfQorCis6bWV0aDpgRWxlbWVudC5maW5kYWxsYCBmaW5kcyBvbmx5IGVsZW1lbnRzIHdpdGggYSB0YWcgd2hpY2ggYXJlIGRpcmVjdAorY2hpbGRyZW4gb2YgdGhlIGN1cnJlbnQgZWxlbWVudC4gIDptZXRoOmBFbGVtZW50LmZpbmRgIGZpbmRzIHRoZSAqZmlyc3QqIGNoaWxkCit3aXRoIGEgcGFydGljdWxhciB0YWcsIGFuZCA6bWV0aDpgRWxlbWVudC50ZXh0YCBhY2Nlc3NlcyB0aGUgZWxlbWVudCdzIHRleHQKK2NvbnRlbnQuICA6bWV0aDpgRWxlbWVudC5nZXRgIGFjY2Vzc2VzIHRoZSBlbGVtZW50J3MgYXR0cmlidXRlczo6CisKKyAgID4+PiBmb3IgY291bnRyeSBpbiByb290LmZpbmRhbGwoJ2NvdW50cnknKToKKyAgIC4uLiAgIHJhbmsgPSBjb3VudHJ5LmZpbmQoJ3JhbmsnKS50ZXh0CisgICAuLi4gICBuYW1lID0gY291bnRyeS5nZXQoJ25hbWUnKQorICAgLi4uICAgcHJpbnQobmFtZSwgcmFuaykKKyAgIC4uLgorICAgTGllY2h0ZW5zdGVpbiAxCisgICBTaW5nYXBvcmUgNAorICAgUGFuYW1hIDY4CisKK01vcmUgc29waGlzdGljYXRlZCBzcGVjaWZpY2F0aW9uIG9mIHdoaWNoIGVsZW1lbnRzIHRvIGxvb2sgZm9yIGlzIHBvc3NpYmxlIGJ5Cit1c2luZyA6cmVmOmBYUGF0aCA8ZWxlbWVudHRyZWUteHBhdGg+YC4KKworTW9kaWZ5aW5nIGFuIFhNTCBGaWxlCiteXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworOmNsYXNzOmBFbGVtZW50VHJlZWAgcHJvdmlkZXMgYSBzaW1wbGUgd2F5IHRvIGJ1aWxkIFhNTCBkb2N1bWVudHMgYW5kIHdyaXRlIHRoZW0gdG8gZmlsZXMuCitUaGUgOm1ldGg6YEVsZW1lbnRUcmVlLndyaXRlYCBtZXRob2Qgc2VydmVzIHRoaXMgcHVycG9zZS4KKworT25jZSBjcmVhdGVkLCBhbiA6Y2xhc3M6YEVsZW1lbnRgIG9iamVjdCBtYXkgYmUgbWFuaXB1bGF0ZWQgYnkgZGlyZWN0bHkgY2hhbmdpbmcKK2l0cyBmaWVsZHMgKHN1Y2ggYXMgOmF0dHI6YEVsZW1lbnQudGV4dGApLCBhZGRpbmcgYW5kIG1vZGlmeWluZyBhdHRyaWJ1dGVzCisoOm1ldGg6YEVsZW1lbnQuc2V0YCBtZXRob2QpLCBhcyB3ZWxsIGFzIGFkZGluZyBuZXcgY2hpbGRyZW4gKGZvciBleGFtcGxlCit3aXRoIDptZXRoOmBFbGVtZW50LmFwcGVuZGApLgorCitMZXQncyBzYXkgd2Ugd2FudCB0byBhZGQgb25lIHRvIGVhY2ggY291bnRyeSdzIHJhbmssIGFuZCBhZGQgYW4gYGB1cGRhdGVkYGAKK2F0dHJpYnV0ZSB0byB0aGUgcmFuayBlbGVtZW50OjoKKworICAgPj4+IGZvciByYW5rIGluIHJvb3QuaXRlcigncmFuaycpOgorICAgLi4uICAgbmV3X3JhbmsgPSBpbnQocmFuay50ZXh0KSArIDEKKyAgIC4uLiAgIHJhbmsudGV4dCA9IHN0cihuZXdfcmFuaykKKyAgIC4uLiAgIHJhbmsuc2V0KCd1cGRhdGVkJywgJ3llcycpCisgICAuLi4KKyAgID4+PiB0cmVlLndyaXRlKCdvdXRwdXQueG1sJykKKworT3VyIFhNTCBub3cgbG9va3MgbGlrZSB0aGlzOgorCisuLiBjb2RlLWJsb2NrOjogeG1sCisKKyAgIDw/eG1sIHZlcnNpb249IjEuMCI/PgorICAgPGRhdGE+CisgICAgICAgPGNvdW50cnkgbmFtZT0iTGllY2h0ZW5zdGVpbiI+CisgICAgICAgICAgIDxyYW5rIHVwZGF0ZWQ9InllcyI+MjwvcmFuaz4KKyAgICAgICAgICAgPHllYXI+MjAwODwveWVhcj4KKyAgICAgICAgICAgPGdkcHBjPjE0MTEwMDwvZ2RwcGM+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJBdXN0cmlhIiBkaXJlY3Rpb249IkUiLz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9IlN3aXR6ZXJsYW5kIiBkaXJlY3Rpb249IlciLz4KKyAgICAgICA8L2NvdW50cnk+CisgICAgICAgPGNvdW50cnkgbmFtZT0iU2luZ2Fwb3JlIj4KKyAgICAgICAgICAgPHJhbmsgdXBkYXRlZD0ieWVzIj41PC9yYW5rPgorICAgICAgICAgICA8eWVhcj4yMDExPC95ZWFyPgorICAgICAgICAgICA8Z2RwcGM+NTk5MDA8L2dkcHBjPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iTWFsYXlzaWEiIGRpcmVjdGlvbj0iTiIvPgorICAgICAgIDwvY291bnRyeT4KKyAgICAgICA8Y291bnRyeSBuYW1lPSJQYW5hbWEiPgorICAgICAgICAgICA8cmFuayB1cGRhdGVkPSJ5ZXMiPjY5PC9yYW5rPgorICAgICAgICAgICA8eWVhcj4yMDExPC95ZWFyPgorICAgICAgICAgICA8Z2RwcGM+MTM2MDA8L2dkcHBjPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iQ29zdGEgUmljYSIgZGlyZWN0aW9uPSJXIi8+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJDb2xvbWJpYSIgZGlyZWN0aW9uPSJFIi8+CisgICAgICAgPC9jb3VudHJ5PgorICAgPC9kYXRhPgorCitXZSBjYW4gcmVtb3ZlIGVsZW1lbnRzIHVzaW5nIDptZXRoOmBFbGVtZW50LnJlbW92ZWAuICBMZXQncyBzYXkgd2Ugd2FudCB0bworcmVtb3ZlIGFsbCBjb3VudHJpZXMgd2l0aCBhIHJhbmsgaGlnaGVyIHRoYW4gNTA6OgorCisgICA+Pj4gZm9yIGNvdW50cnkgaW4gcm9vdC5maW5kYWxsKCdjb3VudHJ5Jyk6CisgICAuLi4gICByYW5rID0gaW50KGNvdW50cnkuZmluZCgncmFuaycpLnRleHQpCisgICAuLi4gICBpZiByYW5rID4gNTA6CisgICAuLi4gICAgIHJvb3QucmVtb3ZlKGNvdW50cnkpCisgICAuLi4KKyAgID4+PiB0cmVlLndyaXRlKCdvdXRwdXQueG1sJykKKworT3VyIFhNTCBub3cgbG9va3MgbGlrZSB0aGlzOgorCisuLiBjb2RlLWJsb2NrOjogeG1sCisKKyAgIDw/eG1sIHZlcnNpb249IjEuMCI/PgorICAgPGRhdGE+CisgICAgICAgPGNvdW50cnkgbmFtZT0iTGllY2h0ZW5zdGVpbiI+CisgICAgICAgICAgIDxyYW5rIHVwZGF0ZWQ9InllcyI+MjwvcmFuaz4KKyAgICAgICAgICAgPHllYXI+MjAwODwveWVhcj4KKyAgICAgICAgICAgPGdkcHBjPjE0MTEwMDwvZ2RwcGM+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJBdXN0cmlhIiBkaXJlY3Rpb249IkUiLz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9IlN3aXR6ZXJsYW5kIiBkaXJlY3Rpb249IlciLz4KKyAgICAgICA8L2NvdW50cnk+CisgICAgICAgPGNvdW50cnkgbmFtZT0iU2luZ2Fwb3JlIj4KKyAgICAgICAgICAgPHJhbmsgdXBkYXRlZD0ieWVzIj41PC9yYW5rPgorICAgICAgICAgICA8eWVhcj4yMDExPC95ZWFyPgorICAgICAgICAgICA8Z2RwcGM+NTk5MDA8L2dkcHBjPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iTWFsYXlzaWEiIGRpcmVjdGlvbj0iTiIvPgorICAgICAgIDwvY291bnRyeT4KKyAgIDwvZGF0YT4KKworQnVpbGRpbmcgWE1MIGRvY3VtZW50cworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUaGUgOmZ1bmM6YFN1YkVsZW1lbnRgIGZ1bmN0aW9uIGFsc28gcHJvdmlkZXMgYSBjb252ZW5pZW50IHdheSB0byBjcmVhdGUgbmV3CitzdWItZWxlbWVudHMgZm9yIGEgZ2l2ZW4gZWxlbWVudDo6CisKKyAgID4+PiBhID0gRVQuRWxlbWVudCgnYScpCisgICA+Pj4gYiA9IEVULlN1YkVsZW1lbnQoYSwgJ2InKQorICAgPj4+IGMgPSBFVC5TdWJFbGVtZW50KGEsICdjJykKKyAgID4+PiBkID0gRVQuU3ViRWxlbWVudChjLCAnZCcpCisgICA+Pj4gRVQuZHVtcChhKQorICAgPGE+PGIgLz48Yz48ZCAvPjwvYz48L2E+CisKK0FkZGl0aW9uYWwgcmVzb3VyY2VzCiteXl5eXl5eXl5eXl5eXl5eXl5eXgogCiBTZWUgaHR0cDovL2VmZmJvdC5vcmcvem9uZS9lbGVtZW50LWluZGV4Lmh0bSBmb3IgdHV0b3JpYWxzIGFuZCBsaW5rcyB0byBvdGhlcgotZG9jcy4gIEZyZWRyaWsgTHVuZGgncyBwYWdlIGlzIGFsc28gdGhlIGxvY2F0aW9uIG9mIHRoZSBkZXZlbG9wbWVudCB2ZXJzaW9uIG9mCi10aGUgeG1sLmV0cmVlLkVsZW1lbnRUcmVlLgorZG9jcy4KIAotLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgIFRoZSBFbGVtZW50VHJlZSBBUEkgaXMgdXBkYXRlZCB0byAxLjMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlCi0gICBgSW50cm9kdWNpbmcgRWxlbWVudFRyZWUgMS4zCi0gICA8aHR0cDovL2VmZmJvdC5vcmcvem9uZS9lbGVtZW50dHJlZS0xMy1pbnRyby5odG0+YF8uCiAKKy4uIF9lbGVtZW50dHJlZS14cGF0aDoKKworWFBhdGggc3VwcG9ydAorLS0tLS0tLS0tLS0tLQorCitUaGlzIG1vZHVsZSBwcm92aWRlcyBsaW1pdGVkIHN1cHBvcnQgZm9yCitgWFBhdGggZXhwcmVzc2lvbnMgPGh0dHA6Ly93d3cudzMub3JnL1RSL3hwYXRoPmBfIGZvciBsb2NhdGluZyBlbGVtZW50cyBpbiBhCit0cmVlLiAgVGhlIGdvYWwgaXMgdG8gc3VwcG9ydCBhIHNtYWxsIHN1YnNldCBvZiB0aGUgYWJicmV2aWF0ZWQgc3ludGF4OyBhIGZ1bGwKK1hQYXRoIGVuZ2luZSBpcyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGUgbW9kdWxlLgorCitFeGFtcGxlCiteXl5eXl5eCisKK0hlcmUncyBhbiBleGFtcGxlIHRoYXQgZGVtb25zdHJhdGVzIHNvbWUgb2YgdGhlIFhQYXRoIGNhcGFiaWxpdGllcyBvZiB0aGUKK21vZHVsZS4gIFdlJ2xsIGJlIHVzaW5nIHRoZSBgYGNvdW50cnlkYXRhYGAgWE1MIGRvY3VtZW50IGZyb20gdGhlCis6cmVmOmBQYXJzaW5nIFhNTCA8ZWxlbWVudHRyZWUtcGFyc2luZy14bWw+YCBzZWN0aW9uOjoKKworICAgaW1wb3J0IHhtbC5ldHJlZS5FbGVtZW50VHJlZSBhcyBFVAorCisgICByb290ID0gRVQuZnJvbXN0cmluZyhjb3VudHJ5ZGF0YSkKKworICAgIyBUb3AtbGV2ZWwgZWxlbWVudHMKKyAgIHJvb3QuZmluZGFsbCgiLiIpCisKKyAgICMgQWxsICduZWlnaGJvcicgZ3JhbmQtY2hpbGRyZW4gb2YgJ2NvdW50cnknIGNoaWxkcmVuIG9mIHRoZSB0b3AtbGV2ZWwKKyAgICMgZWxlbWVudHMKKyAgIHJvb3QuZmluZGFsbCgiLi9jb3VudHJ5L25laWdoYm9yIikKKworICAgIyBOb2RlcyB3aXRoIG5hbWU9J1NpbmdhcG9yZScgdGhhdCBoYXZlIGEgJ3llYXInIGNoaWxkCisgICByb290LmZpbmRhbGwoIi4vL3llYXIvLi5bQG5hbWU9J1NpbmdhcG9yZSddIikKKworICAgIyAneWVhcicgbm9kZXMgdGhhdCBhcmUgY2hpbGRyZW4gb2Ygbm9kZXMgd2l0aCBuYW1lPSdTaW5nYXBvcmUnCisgICByb290LmZpbmRhbGwoIi4vLypbQG5hbWU9J1NpbmdhcG9yZSddL3llYXIiKQorCisgICAjIEFsbCAnbmVpZ2hib3InIG5vZGVzIHRoYXQgYXJlIHRoZSBzZWNvbmQgY2hpbGQgb2YgdGhlaXIgcGFyZW50CisgICByb290LmZpbmRhbGwoIi4vL25laWdoYm9yWzJdIikKKworU3VwcG9ydGVkIFhQYXRoIHN5bnRheAorXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBTeW50YXggICAgICAgICAgICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKys9PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCit8IGBgdGFnYGAgICAgICAgICAgICAgICB8IFNlbGVjdHMgYWxsIGNoaWxkIGVsZW1lbnRzIHdpdGggdGhlIGdpdmVuIHRhZy4gICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBGb3IgZXhhbXBsZSwgYGBzcGFtYGAgc2VsZWN0cyBhbGwgY2hpbGQgZWxlbWVudHMgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZWQgYGBzcGFtYGAsIGBgc3BhbS9lZ2dgYCBzZWxlY3RzIGFsbCAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IGdyYW5kY2hpbGRyZW4gbmFtZWQgYGBlZ2dgYCBpbiBhbGwgY2hpbGRyZW4gbmFtZWQgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNwYW1gYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgKmBgICAgICAgICAgICAgICAgICB8IFNlbGVjdHMgYWxsIGNoaWxkIGVsZW1lbnRzLiAgRm9yIGV4YW1wbGUsIGBgKi9lZ2dgYCAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBzZWxlY3RzIGFsbCBncmFuZGNoaWxkcmVuIG5hbWVkIGBgZWdnYGAuICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgLmBgICAgICAgICAgICAgICAgICB8IFNlbGVjdHMgdGhlIGN1cnJlbnQgbm9kZS4gIFRoaXMgaXMgbW9zdGx5IHVzZWZ1bCAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXRoLCB0byBpbmRpY2F0ZSB0aGF0IGl0J3MgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgYSByZWxhdGl2ZSBwYXRoLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYC8vYGAgICAgICAgICAgICAgICAgfCBTZWxlY3RzIGFsbCBzdWJlbGVtZW50cywgb24gYWxsIGxldmVscyBiZW5lYXRoIHRoZSAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgY3VycmVudCAgZWxlbWVudC4gIEZvciBleGFtcGxlLCBgYC4vL2VnZ2BgIHNlbGVjdHMgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IGFsbCBgYGVnZ2BgIGVsZW1lbnRzIGluIHRoZSBlbnRpcmUgdHJlZS4gICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGAuLmBgICAgICAgICAgICAgICAgIHwgU2VsZWN0cyB0aGUgcGFyZW50IGVsZW1lbnQuICBSZXR1cm5zIGBgTm9uZWBgIGlmIHRoZSB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IHBhdGggYXR0ZW1wdHMgdG8gcmVhY2ggdGhlIGFuY2VzdG9ycyBvZiB0aGUgc3RhcnQgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBlbGVtZW50ICh0aGUgZWxlbWVudCBgYGZpbmRgYCB3YXMgY2FsbGVkIG9uKS4gICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgW0BhdHRyaWJdYGAgICAgICAgICB8IFNlbGVjdHMgYWxsIGVsZW1lbnRzIHRoYXQgaGF2ZSB0aGUgZ2l2ZW4gYXR0cmlidXRlLiAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBbQGF0dHJpYj0ndmFsdWUnXWBgIHwgU2VsZWN0cyBhbGwgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBnaXZlbiBhdHRyaWJ1dGUgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IGhhcyB0aGUgZ2l2ZW4gdmFsdWUuICBUaGUgdmFsdWUgY2Fubm90IGNvbnRhaW4gICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBxdW90ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgW3RhZ11gYCAgICAgICAgICAgICB8IFNlbGVjdHMgYWxsIGVsZW1lbnRzIHRoYXQgaGF2ZSBhIGNoaWxkIG5hbWVkICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBgYHRhZ2BgLiAgT25seSBpbW1lZGlhdGUgY2hpbGRyZW4gYXJlIHN1cHBvcnRlZC4gICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgW3Bvc2l0aW9uXWBgICAgICAgICB8IFNlbGVjdHMgYWxsIGVsZW1lbnRzIHRoYXQgYXJlIGxvY2F0ZWQgYXQgdGhlIGdpdmVuICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBwb3NpdGlvbi4gIFRoZSBwb3NpdGlvbiBjYW4gYmUgZWl0aGVyIGFuIGludGVnZXIgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgKDEgaXMgdGhlIGZpcnN0IHBvc2l0aW9uKSwgdGhlIGV4cHJlc3Npb24gYGBsYXN0KClgYCB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IChmb3IgdGhlIGxhc3QgcG9zaXRpb24pLCBvciBhIHBvc2l0aW9uIHJlbGF0aXZlIHRvICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgbGFzdCBwb3NpdGlvbiAoZS5nLiBgYGxhc3QoKS0xYGApLiAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKK1ByZWRpY2F0ZXMgKGV4cHJlc3Npb25zIHdpdGhpbiBzcXVhcmUgYnJhY2tldHMpIG11c3QgYmUgcHJlY2VkZWQgYnkgYSB0YWcKK25hbWUsIGFuIGFzdGVyaXNrLCBvciBhbm90aGVyIHByZWRpY2F0ZS4gIGBgcG9zaXRpb25gYCBwcmVkaWNhdGVzIG11c3QgYmUKK3ByZWNlZGVkIGJ5IGEgdGFnIG5hbWUuCisKK1JlZmVyZW5jZQorLS0tLS0tLS0tCiAKIC4uIF9lbGVtZW50dHJlZS1mdW5jdGlvbnM6CiAKIEZ1bmN0aW9ucwotLS0tLS0tLS0tCiteXl5eXl5eXl4KIAogCiAuLiBmdW5jdGlvbjo6IENvbW1lbnQodGV4dD1Ob25lKQpAQCAtMTAxLDkgKzM3NSw4IEBACiAgICBhbmQgYGAiZW5kLW5zImBgICh0aGUgIm5zIiBldmVudHMgYXJlIHVzZWQgdG8gZ2V0IGRldGFpbGVkIG5hbWVzcGFjZQogICAgaW5mb3JtYXRpb24pLiAgSWYgKmV2ZW50cyogaXMgb21pdHRlZCwgb25seSBgYCJlbmQiYGAgZXZlbnRzIGFyZSByZXBvcnRlZC4KICAgICpwYXJzZXIqIGlzIGFuIG9wdGlvbmFsIHBhcnNlciBpbnN0YW5jZS4gIElmIG5vdCBnaXZlbiwgdGhlIHN0YW5kYXJkCi0gICA6Y2xhc3M6YFhNTFBhcnNlcmAgcGFyc2VyIGlzIHVzZWQuICAqcGFyc2VyKiBpcyBub3Qgc3VwcG9ydGVkIGJ5Ci0gICBgYGNFbGVtZW50VHJlZWBgLiAgUmV0dXJucyBhbiA6dGVybTpgaXRlcmF0b3JgIHByb3ZpZGluZyBgYChldmVudCwgZWxlbSlgYAotICAgcGFpcnMuCisgICA6Y2xhc3M6YFhNTFBhcnNlcmAgcGFyc2VyIGlzIHVzZWQuICBSZXR1cm5zIGFuIDp0ZXJtOmBpdGVyYXRvcmAgcHJvdmlkaW5nCisgICBgYChldmVudCwgZWxlbSlgYCBwYWlycy4KIAogICAgLi4gbm90ZTo6CiAKQEAgLTE2MCw5ICs0MzMsOSBAQAogICAgR2VuZXJhdGVzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIFhNTCBlbGVtZW50LCBpbmNsdWRpbmcgYWxsCiAgICBzdWJlbGVtZW50cy4gICplbGVtZW50KiBpcyBhbiA6Y2xhc3M6YEVsZW1lbnRgIGluc3RhbmNlLiAgKmVuY29kaW5nKiBbMV1fIGlzCiAgICB0aGUgb3V0cHV0IGVuY29kaW5nIChkZWZhdWx0IGlzIFVTLUFTQ0lJKS4gIFVzZSBgYGVuY29kaW5nPSJ1bmljb2RlImBgIHRvCi0gICBnZW5lcmF0ZSBhIFVuaWNvZGUgc3RyaW5nLiAgKm1ldGhvZCogaXMgZWl0aGVyIGBgInhtbCJgYCwKLSAgIGBgImh0bWwiYGAgb3IgYGAidGV4dCJgYCAoZGVmYXVsdCBpcyBgYCJ4bWwiYGApLiAgUmV0dXJucyBhbiAob3B0aW9uYWxseSkKLSAgIGVuY29kZWQgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIFhNTCBkYXRhLgorICAgZ2VuZXJhdGUgYSBVbmljb2RlIHN0cmluZyAob3RoZXJ3aXNlLCBhIGJ5dGVzdHJpbmcgaXMgZ2VuZXJhdGVkKS4gICptZXRob2QqCisgICBpcyBlaXRoZXIgYGAieG1sImBgLCBgYCJodG1sImBgIG9yIGBgInRleHQiYGAgKGRlZmF1bHQgaXMgYGAieG1sImBgKS4KKyAgIFJldHVybnMgYW4gKG9wdGlvbmFsbHkpIGVuY29kZWQgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIFhNTCBkYXRhLgogCiAKIC4uIGZ1bmN0aW9uOjogdG9zdHJpbmdsaXN0KGVsZW1lbnQsIGVuY29kaW5nPSJ1cy1hc2NpaSIsIG1ldGhvZD0ieG1sIikKQEAgLTE3MCwxMSArNDQzLDExIEBACiAgICBHZW5lcmF0ZXMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gWE1MIGVsZW1lbnQsIGluY2x1ZGluZyBhbGwKICAgIHN1YmVsZW1lbnRzLiAgKmVsZW1lbnQqIGlzIGFuIDpjbGFzczpgRWxlbWVudGAgaW5zdGFuY2UuICAqZW5jb2RpbmcqIFsxXV8gaXMKICAgIHRoZSBvdXRwdXQgZW5jb2RpbmcgKGRlZmF1bHQgaXMgVVMtQVNDSUkpLiAgVXNlIGBgZW5jb2Rpbmc9InVuaWNvZGUiYGAgdG8KLSAgIGdlbmVyYXRlIGEgVW5pY29kZSBzdHJpbmcuICAqbWV0aG9kKiBpcyBlaXRoZXIgYGAieG1sImBgLAotICAgYGAiaHRtbCJgYCBvciBgYCJ0ZXh0ImBgIChkZWZhdWx0IGlzIGBgInhtbCJgYCkuICBSZXR1cm5zIGEgbGlzdCBvZgotICAgKG9wdGlvbmFsbHkpIGVuY29kZWQgc3RyaW5ncyBjb250YWluaW5nIHRoZSBYTUwgZGF0YS4gIEl0IGRvZXMgbm90IGd1YXJhbnRlZQotICAgYW55IHNwZWNpZmljIHNlcXVlbmNlLCBleGNlcHQgdGhhdCBgYCIiLmpvaW4odG9zdHJpbmdsaXN0KGVsZW1lbnQpKSA9PQotICAgdG9zdHJpbmcoZWxlbWVudClgYC4KKyAgIGdlbmVyYXRlIGEgVW5pY29kZSBzdHJpbmcgKG90aGVyd2lzZSwgYSBieXRlc3RyaW5nIGlzIGdlbmVyYXRlZCkuICAqbWV0aG9kKgorICAgaXMgZWl0aGVyIGBgInhtbCJgYCwgYGAiaHRtbCJgYCBvciBgYCJ0ZXh0ImBgIChkZWZhdWx0IGlzIGBgInhtbCJgYCkuCisgICBSZXR1cm5zIGEgbGlzdCBvZiAob3B0aW9uYWxseSkgZW5jb2RlZCBzdHJpbmdzIGNvbnRhaW5pbmcgdGhlIFhNTCBkYXRhLgorICAgSXQgZG9lcyBub3QgZ3VhcmFudGVlIGFueSBzcGVjaWZpYyBzZXF1ZW5jZSwgZXhjZXB0IHRoYXQKKyAgIGBgIiIuam9pbih0b3N0cmluZ2xpc3QoZWxlbWVudCkpID09IHRvc3RyaW5nKGVsZW1lbnQpYGAuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCkBAIC0xOTksOCArNDcyLDcgQEAKIC4uIF9lbGVtZW50dHJlZS1lbGVtZW50LW9iamVjdHM6CiAKIEVsZW1lbnQgT2JqZWN0cwotLS0tLS0tLS0tLS0tLS0tCi0KK15eXl5eXl5eXl5eXl5eXgogCiAuLiBjbGFzczo6IEVsZW1lbnQodGFnLCBhdHRyaWI9e30sICoqZXh0cmEpCiAKQEAgLTI1MSw3ICs1MjMsNyBAQAogICAgLi4gbWV0aG9kOjogY2xlYXIoKQogCiAgICAgICBSZXNldHMgYW4gZWxlbWVudC4gIFRoaXMgZnVuY3Rpb24gcmVtb3ZlcyBhbGwgc3ViZWxlbWVudHMsIGNsZWFycyBhbGwKLSAgICAgIGF0dHJpYnV0ZXMsIGFuZCBzZXRzIHRoZSB0ZXh0IGFuZCB0YWlsIGF0dHJpYnV0ZXMgdG8gTm9uZS4KKyAgICAgIGF0dHJpYnV0ZXMsIGFuZCBzZXRzIHRoZSB0ZXh0IGFuZCB0YWlsIGF0dHJpYnV0ZXMgdG8gYGBOb25lYGAuCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0KGtleSwgZGVmYXVsdD1Ob25lKQpAQCAtMjgyLDM2ICs1NTQsNDMgQEAKIAogICAgLi4gbWV0aG9kOjogYXBwZW5kKHN1YmVsZW1lbnQpCiAKLSAgICAgIEFkZHMgdGhlIGVsZW1lbnQgKnN1YmVsZW1lbnQqIHRvIHRoZSBlbmQgb2YgdGhpcyBlbGVtZW50cyBpbnRlcm5hbCBsaXN0Ci0gICAgICBvZiBzdWJlbGVtZW50cy4KKyAgICAgIEFkZHMgdGhlIGVsZW1lbnQgKnN1YmVsZW1lbnQqIHRvIHRoZSBlbmQgb2YgdGhpcyBlbGVtZW50J3MgaW50ZXJuYWwgbGlzdAorICAgICAgb2Ygc3ViZWxlbWVudHMuICBSYWlzZXMgOmV4YzpgVHlwZUVycm9yYCBpZiAqc3ViZWxlbWVudCogaXMgbm90IGFuCisgICAgICA6Y2xhc3M6YEVsZW1lbnRgLgogCiAKICAgIC4uIG1ldGhvZDo6IGV4dGVuZChzdWJlbGVtZW50cykKIAogICAgICAgQXBwZW5kcyAqc3ViZWxlbWVudHMqIGZyb20gYSBzZXF1ZW5jZSBvYmplY3Qgd2l0aCB6ZXJvIG9yIG1vcmUgZWxlbWVudHMuCi0gICAgICBSYWlzZXMgOmV4YzpgQXNzZXJ0aW9uRXJyb3JgIGlmIGEgc3ViZWxlbWVudCBpcyBub3QgYSB2YWxpZCBvYmplY3QuCisgICAgICBSYWlzZXMgOmV4YzpgVHlwZUVycm9yYCBpZiBhIHN1YmVsZW1lbnQgaXMgbm90IGFuIDpjbGFzczpgRWxlbWVudGAuCiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKLSAgIC4uIG1ldGhvZDo6IGZpbmQobWF0Y2gpCisgICAuLiBtZXRob2Q6OiBmaW5kKG1hdGNoLCBuYW1lc3BhY2VzPU5vbmUpCiAKICAgICAgIEZpbmRzIHRoZSBmaXJzdCBzdWJlbGVtZW50IG1hdGNoaW5nICptYXRjaCouICAqbWF0Y2gqIG1heSBiZSBhIHRhZyBuYW1lCi0gICAgICBvciBwYXRoLiAgUmV0dXJucyBhbiBlbGVtZW50IGluc3RhbmNlIG9yIGBgTm9uZWBgLgorICAgICAgb3IgYSA6cmVmOmBwYXRoIDxlbGVtZW50dHJlZS14cGF0aD5gLiAgUmV0dXJucyBhbiBlbGVtZW50IGluc3RhbmNlCisgICAgICBvciBgYE5vbmVgYC4gICpuYW1lc3BhY2VzKiBpcyBhbiBvcHRpb25hbCBtYXBwaW5nIGZyb20gbmFtZXNwYWNlIHByZWZpeAorICAgICAgdG8gZnVsbCBuYW1lLgogCiAKLSAgIC4uIG1ldGhvZDo6IGZpbmRhbGwobWF0Y2gpCisgICAuLiBtZXRob2Q6OiBmaW5kYWxsKG1hdGNoLCBuYW1lc3BhY2VzPU5vbmUpCiAKLSAgICAgIEZpbmRzIGFsbCBtYXRjaGluZyBzdWJlbGVtZW50cywgYnkgdGFnIG5hbWUgb3IgcGF0aC4gIFJldHVybnMgYSBsaXN0Ci0gICAgICBjb250YWluaW5nIGFsbCBtYXRjaGluZyBlbGVtZW50cyBpbiBkb2N1bWVudCBvcmRlci4KKyAgICAgIEZpbmRzIGFsbCBtYXRjaGluZyBzdWJlbGVtZW50cywgYnkgdGFnIG5hbWUgb3IKKyAgICAgIDpyZWY6YHBhdGggPGVsZW1lbnR0cmVlLXhwYXRoPmAuICBSZXR1cm5zIGEgbGlzdCBjb250YWluaW5nIGFsbCBtYXRjaGluZworICAgICAgZWxlbWVudHMgaW4gZG9jdW1lbnQgb3JkZXIuICAqbmFtZXNwYWNlcyogaXMgYW4gb3B0aW9uYWwgbWFwcGluZyBmcm9tCisgICAgICBuYW1lc3BhY2UgcHJlZml4IHRvIGZ1bGwgbmFtZS4KIAogCi0gICAuLiBtZXRob2Q6OiBmaW5kdGV4dChtYXRjaCwgZGVmYXVsdD1Ob25lKQorICAgLi4gbWV0aG9kOjogZmluZHRleHQobWF0Y2gsIGRlZmF1bHQ9Tm9uZSwgbmFtZXNwYWNlcz1Ob25lKQogCiAgICAgICBGaW5kcyB0ZXh0IGZvciB0aGUgZmlyc3Qgc3ViZWxlbWVudCBtYXRjaGluZyAqbWF0Y2gqLiAgKm1hdGNoKiBtYXkgYmUKLSAgICAgIGEgdGFnIG5hbWUgb3IgcGF0aC4gIFJldHVybnMgdGhlIHRleHQgY29udGVudCBvZiB0aGUgZmlyc3QgbWF0Y2hpbmcKLSAgICAgIGVsZW1lbnQsIG9yICpkZWZhdWx0KiBpZiBubyBlbGVtZW50IHdhcyBmb3VuZC4gIE5vdGUgdGhhdCBpZiB0aGUgbWF0Y2hpbmcKLSAgICAgIGVsZW1lbnQgaGFzIG5vIHRleHQgY29udGVudCBhbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQuCisgICAgICBhIHRhZyBuYW1lIG9yIGEgOnJlZjpgcGF0aCA8ZWxlbWVudHRyZWUteHBhdGg+YC4gIFJldHVybnMgdGhlIHRleHQgY29udGVudAorICAgICAgb2YgdGhlIGZpcnN0IG1hdGNoaW5nIGVsZW1lbnQsIG9yICpkZWZhdWx0KiBpZiBubyBlbGVtZW50IHdhcyBmb3VuZC4KKyAgICAgIE5vdGUgdGhhdCBpZiB0aGUgbWF0Y2hpbmcgZWxlbWVudCBoYXMgbm8gdGV4dCBjb250ZW50IGFuIGVtcHR5IHN0cmluZworICAgICAgaXMgcmV0dXJuZWQuICpuYW1lc3BhY2VzKiBpcyBhbiBvcHRpb25hbCBtYXBwaW5nIGZyb20gbmFtZXNwYWNlIHByZWZpeAorICAgICAgdG8gZnVsbCBuYW1lLgogCiAKICAgIC4uIG1ldGhvZDo6IGdldGNoaWxkcmVuKCkKQEAgLTMyNiw5ICs2MDUsMTAgQEAKICAgICAgICAgIFVzZSBtZXRob2QgOm1ldGg6YEVsZW1lbnQuaXRlcmAgaW5zdGVhZC4KIAogCi0gICAuLiBtZXRob2Q6OiBpbnNlcnQoaW5kZXgsIGVsZW1lbnQpCisgICAuLiBtZXRob2Q6OiBpbnNlcnQoaW5kZXgsIHN1YmVsZW1lbnQpCiAKLSAgICAgIEluc2VydHMgYSBzdWJlbGVtZW50IGF0IHRoZSBnaXZlbiBwb3NpdGlvbiBpbiB0aGlzIGVsZW1lbnQuCisgICAgICBJbnNlcnRzICpzdWJlbGVtZW50KiBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24gaW4gdGhpcyBlbGVtZW50LiAgUmFpc2VzCisgICAgICA6ZXhjOmBUeXBlRXJyb3JgIGlmICpzdWJlbGVtZW50KiBpcyBub3QgYW4gOmNsYXNzOmBFbGVtZW50YC4KIAogCiAgICAuLiBtZXRob2Q6OiBpdGVyKHRhZz1Ob25lKQpAQCAtMzQyLDEwICs2MjIsMTMgQEAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKLSAgIC4uIG1ldGhvZDo6IGl0ZXJmaW5kKG1hdGNoKQorICAgLi4gbWV0aG9kOjogaXRlcmZpbmQobWF0Y2gsIG5hbWVzcGFjZXM9Tm9uZSkKIAotICAgICAgRmluZHMgYWxsIG1hdGNoaW5nIHN1YmVsZW1lbnRzLCBieSB0YWcgbmFtZSBvciBwYXRoLiAgUmV0dXJucyBhbiBpdGVyYWJsZQotICAgICAgeWllbGRpbmcgYWxsIG1hdGNoaW5nIGVsZW1lbnRzIGluIGRvY3VtZW50IG9yZGVyLgorICAgICAgRmluZHMgYWxsIG1hdGNoaW5nIHN1YmVsZW1lbnRzLCBieSB0YWcgbmFtZSBvcgorICAgICAgOnJlZjpgcGF0aCA8ZWxlbWVudHRyZWUteHBhdGg+YC4gIFJldHVybnMgYW4gaXRlcmFibGUgeWllbGRpbmcgYWxsCisgICAgICBtYXRjaGluZyBlbGVtZW50cyBpbiBkb2N1bWVudCBvcmRlci4gKm5hbWVzcGFjZXMqIGlzIGFuIG9wdGlvbmFsIG1hcHBpbmcKKyAgICAgIGZyb20gbmFtZXNwYWNlIHByZWZpeCB0byBmdWxsIG5hbWUuCisKIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKQEAgLTM5MCw3ICs2NzMsNyBAQAogLi4gX2VsZW1lbnR0cmVlLWVsZW1lbnR0cmVlLW9iamVjdHM6CiAKIEVsZW1lbnRUcmVlIE9iamVjdHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0KK15eXl5eXl5eXl5eXl5eXl5eXl4KIAogCiAuLiBjbGFzczo6IEVsZW1lbnRUcmVlKGVsZW1lbnQ9Tm9uZSwgZmlsZT1Ob25lKQpAQCAtNDEwLDE3ICs2OTMsMTcgQEAKICAgICAgIGNhcmUuICAqZWxlbWVudCogaXMgYW4gZWxlbWVudCBpbnN0YW5jZS4KIAogCi0gICAuLiBtZXRob2Q6OiBmaW5kKG1hdGNoKQorICAgLi4gbWV0aG9kOjogZmluZChtYXRjaCwgbmFtZXNwYWNlcz1Ob25lKQogCiAgICAgICBTYW1lIGFzIDptZXRoOmBFbGVtZW50LmZpbmRgLCBzdGFydGluZyBhdCB0aGUgcm9vdCBvZiB0aGUgdHJlZS4KIAogCi0gICAuLiBtZXRob2Q6OiBmaW5kYWxsKG1hdGNoKQorICAgLi4gbWV0aG9kOjogZmluZGFsbChtYXRjaCwgbmFtZXNwYWNlcz1Ob25lKQogCiAgICAgICBTYW1lIGFzIDptZXRoOmBFbGVtZW50LmZpbmRhbGxgLCBzdGFydGluZyBhdCB0aGUgcm9vdCBvZiB0aGUgdHJlZS4KIAogCi0gICAuLiBtZXRob2Q6OiBmaW5kdGV4dChtYXRjaCwgZGVmYXVsdD1Ob25lKQorICAgLi4gbWV0aG9kOjogZmluZHRleHQobWF0Y2gsIGRlZmF1bHQ9Tm9uZSwgbmFtZXNwYWNlcz1Ob25lKQogCiAgICAgICBTYW1lIGFzIDptZXRoOmBFbGVtZW50LmZpbmR0ZXh0YCwgc3RhcnRpbmcgYXQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuCiAKQEAgLTQ0MywxMSArNzI2LDkgQEAKICAgICAgIHRvIGxvb2sgZm9yIChkZWZhdWx0IGlzIHRvIHJldHVybiBhbGwgZWxlbWVudHMpCiAKIAotICAgLi4gbWV0aG9kOjogaXRlcmZpbmQobWF0Y2gpCisgICAuLiBtZXRob2Q6OiBpdGVyZmluZChtYXRjaCwgbmFtZXNwYWNlcz1Ob25lKQogCi0gICAgICBGaW5kcyBhbGwgbWF0Y2hpbmcgc3ViZWxlbWVudHMsIGJ5IHRhZyBuYW1lIG9yIHBhdGguICBTYW1lIGFzCi0gICAgICBnZXRyb290KCkuaXRlcmZpbmQobWF0Y2gpLiBSZXR1cm5zIGFuIGl0ZXJhYmxlIHlpZWxkaW5nIGFsbCBtYXRjaGluZwotICAgICAgZWxlbWVudHMgaW4gZG9jdW1lbnQgb3JkZXIuCisgICAgICBTYW1lIGFzIDptZXRoOmBFbGVtZW50Lml0ZXJmaW5kYCwgc3RhcnRpbmcgYXQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuCiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCkBAIC00NTYsOCArNzM3LDggQEAKIAogICAgICAgTG9hZHMgYW4gZXh0ZXJuYWwgWE1MIHNlY3Rpb24gaW50byB0aGlzIGVsZW1lbnQgdHJlZS4gICpzb3VyY2UqIGlzIGEgZmlsZQogICAgICAgbmFtZSBvciA6dGVybTpgZmlsZSBvYmplY3RgLiAgKnBhcnNlciogaXMgYW4gb3B0aW9uYWwgcGFyc2VyIGluc3RhbmNlLgotICAgICAgSWYgbm90IGdpdmVuLCB0aGUgc3RhbmRhcmQgWE1MUGFyc2VyIHBhcnNlciBpcyB1c2VkLiAgUmV0dXJucyB0aGUgc2VjdGlvbgotICAgICAgcm9vdCBlbGVtZW50LgorICAgICAgSWYgbm90IGdpdmVuLCB0aGUgc3RhbmRhcmQgOmNsYXNzOmBYTUxQYXJzZXJgIHBhcnNlciBpcyB1c2VkLiAgUmV0dXJucyB0aGUKKyAgICAgIHNlY3Rpb24gcm9vdCBlbGVtZW50LgogCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlKGZpbGUsIGVuY29kaW5nPSJ1cy1hc2NpaSIsIHhtbF9kZWNsYXJhdGlvbj1Ob25lLCBcCkBAIC00NjUsMTMgKzc0NiwyMSBAQAogCiAgICAgICBXcml0ZXMgdGhlIGVsZW1lbnQgdHJlZSB0byBhIGZpbGUsIGFzIFhNTC4gICpmaWxlKiBpcyBhIGZpbGUgbmFtZSwgb3IgYQogICAgICAgOnRlcm06YGZpbGUgb2JqZWN0YCBvcGVuZWQgZm9yIHdyaXRpbmcuICAqZW5jb2RpbmcqIFsxXV8gaXMgdGhlIG91dHB1dAotICAgICAgZW5jb2RpbmcgKGRlZmF1bHQgaXMgVVMtQVNDSUkpLiAgVXNlIGBgZW5jb2Rpbmc9InVuaWNvZGUiYGAgdG8gd3JpdGUgYQotICAgICAgVW5pY29kZSBzdHJpbmcuICAqeG1sX2RlY2xhcmF0aW9uKiBjb250cm9scyBpZiBhbiBYTUwgZGVjbGFyYXRpb24KLSAgICAgIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZmlsZS4gIFVzZSBGYWxzZSBmb3IgbmV2ZXIsIFRydWUgZm9yIGFsd2F5cywgTm9uZQotICAgICAgZm9yIG9ubHkgaWYgbm90IFVTLUFTQ0lJIG9yIFVURi04IG9yIFVuaWNvZGUgKGRlZmF1bHQgaXMgTm9uZSkuCisgICAgICBlbmNvZGluZyAoZGVmYXVsdCBpcyBVUy1BU0NJSSkuCisgICAgICAqeG1sX2RlY2xhcmF0aW9uKiBjb250cm9scyBpZiBhbiBYTUwgZGVjbGFyYXRpb24gc2hvdWxkIGJlIGFkZGVkIHRvIHRoZQorICAgICAgZmlsZS4gIFVzZSBgYEZhbHNlYGAgZm9yIG5ldmVyLCBgYFRydWVgYCBmb3IgYWx3YXlzLCBgYE5vbmVgYAorICAgICAgZm9yIG9ubHkgaWYgbm90IFVTLUFTQ0lJIG9yIFVURi04IG9yIFVuaWNvZGUgKGRlZmF1bHQgaXMgYGBOb25lYGApLgogICAgICAgKmRlZmF1bHRfbmFtZXNwYWNlKiBzZXRzIHRoZSBkZWZhdWx0IFhNTCBuYW1lc3BhY2UgKGZvciAieG1sbnMiKS4KICAgICAgICptZXRob2QqIGlzIGVpdGhlciBgYCJ4bWwiYGAsIGBgImh0bWwiYGAgb3IgYGAidGV4dCJgYCAoZGVmYXVsdCBpcwotICAgICAgYGAieG1sImBgKS4gIFJldHVybnMgYW4gKG9wdGlvbmFsbHkpIGVuY29kZWQgc3RyaW5nLgorICAgICAgYGAieG1sImBgKS4KKworICAgICAgVGhlIG91dHB1dCBpcyBlaXRoZXIgYSBzdHJpbmcgKDpjbGFzczpgc3RyYCkgb3IgYmluYXJ5ICg6Y2xhc3M6YGJ5dGVzYCkuCisgICAgICBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgdGhlICplbmNvZGluZyogYXJndW1lbnQuICBJZiAqZW5jb2RpbmcqIGlzCisgICAgICBgYCJ1bmljb2RlImBgLCB0aGUgb3V0cHV0IGlzIGEgc3RyaW5nOyBvdGhlcndpc2UsIGl0J3MgYmluYXJ5LiAgTm90ZSB0aGF0CisgICAgICB0aGlzIG1heSBjb25mbGljdCB3aXRoIHRoZSB0eXBlIG9mICpmaWxlKiBpZiBpdCdzIGFuIG9wZW4KKyAgICAgIDp0ZXJtOmBmaWxlIG9iamVjdGA7IG1ha2Ugc3VyZSB5b3UgZG8gbm90IHRyeSB0byB3cml0ZSBhIHN0cmluZyB0byBhCisgICAgICBiaW5hcnkgc3RyZWFtIGFuZCB2aWNlIHZlcnNhLgorCiAKIFRoaXMgaXMgdGhlIFhNTCBmaWxlIHRoYXQgaXMgZ29pbmcgdG8gYmUgbWFuaXB1bGF0ZWQ6OgogCkBAIC01MDQsNyArNzkzLDcgQEAKIC4uIF9lbGVtZW50dHJlZS1xbmFtZS1vYmplY3RzOgogCiBRTmFtZSBPYmplY3RzCi0tLS0tLS0tLS0tLS0tCiteXl5eXl5eXl5eXl5eCiAKIAogLi4gY2xhc3M6OiBRTmFtZSh0ZXh0X29yX3VyaSwgdGFnPU5vbmUpCkBAIC01MjAsNyArODA5LDcgQEAKIC4uIF9lbGVtZW50dHJlZS10cmVlYnVpbGRlci1vYmplY3RzOgogCiBUcmVlQnVpbGRlciBPYmplY3RzCi0tLS0tLS0tLS0tLS0tLS0tLS0tCiteXl5eXl5eXl5eXl5eXl5eXl5eCiAKIAogLi4gY2xhc3M6OiBUcmVlQnVpbGRlcihlbGVtZW50X2ZhY3Rvcnk9Tm9uZSkKQEAgLTUyOCw5ICs4MTcsOSBAQAogICAgR2VuZXJpYyBlbGVtZW50IHN0cnVjdHVyZSBidWlsZGVyLiAgVGhpcyBidWlsZGVyIGNvbnZlcnRzIGEgc2VxdWVuY2Ugb2YKICAgIHN0YXJ0LCBkYXRhLCBhbmQgZW5kIG1ldGhvZCBjYWxscyB0byBhIHdlbGwtZm9ybWVkIGVsZW1lbnQgc3RydWN0dXJlLiAgWW91CiAgICBjYW4gdXNlIHRoaXMgY2xhc3MgdG8gYnVpbGQgYW4gZWxlbWVudCBzdHJ1Y3R1cmUgdXNpbmcgYSBjdXN0b20gWE1MIHBhcnNlciwKLSAgIG9yIGEgcGFyc2VyIGZvciBzb21lIG90aGVyIFhNTC1saWtlIGZvcm1hdC4gIFRoZSAqZWxlbWVudF9mYWN0b3J5KiBpcyBjYWxsZWQKLSAgIHRvIGNyZWF0ZSBuZXcgOmNsYXNzOmBFbGVtZW50YCBpbnN0YW5jZXMgd2hlbiBnaXZlbi4KLQorICAgb3IgYSBwYXJzZXIgZm9yIHNvbWUgb3RoZXIgWE1MLWxpa2UgZm9ybWF0LiAgKmVsZW1lbnRfZmFjdG9yeSosIHdoZW4gZ2l2ZW4sCisgICBtdXN0IGJlIGEgY2FsbGFibGUgYWNjZXB0aW5nIHR3byBwb3NpdGlvbmFsIGFyZ3VtZW50czogYSB0YWcgYW5kCisgICBhIGRpY3Qgb2YgYXR0cmlidXRlcy4gIEl0IGlzIGV4cGVjdGVkIHRvIHJldHVybiBhIG5ldyBlbGVtZW50IGluc3RhbmNlLgogCiAgICAuLiBtZXRob2Q6OiBjbG9zZSgpCiAKQEAgLTU3MSw3ICs4NjAsNyBAQAogLi4gX2VsZW1lbnR0cmVlLXhtbHBhcnNlci1vYmplY3RzOgogCiBYTUxQYXJzZXIgT2JqZWN0cwotLS0tLS0tLS0tLS0tLS0tLS0KK15eXl5eXl5eXl5eXl5eXl5eCiAKIAogLi4gY2xhc3M6OiBYTUxQYXJzZXIoaHRtbD0wLCB0YXJnZXQ9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSkKQEAgLTU3OSw5ICs4NjgsOSBAQAogICAgOmNsYXNzOmBFbGVtZW50YCBzdHJ1Y3R1cmUgYnVpbGRlciBmb3IgWE1MIHNvdXJjZSBkYXRhLCBiYXNlZCBvbiB0aGUgZXhwYXQKICAgIHBhcnNlci4gICpodG1sKiBhcmUgcHJlZGVmaW5lZCBIVE1MIGVudGl0aWVzLiAgVGhpcyBmbGFnIGlzIG5vdCBzdXBwb3J0ZWQgYnkKICAgIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLiAgKnRhcmdldCogaXMgdGhlIHRhcmdldCBvYmplY3QuICBJZiBvbWl0dGVkLCB0aGUKLSAgIGJ1aWxkZXIgdXNlcyBhbiBpbnN0YW5jZSBvZiB0aGUgc3RhbmRhcmQgVHJlZUJ1aWxkZXIgY2xhc3MuICAqZW5jb2RpbmcqIFsxXV8KLSAgIGlzIG9wdGlvbmFsLiAgSWYgZ2l2ZW4sIHRoZSB2YWx1ZSBvdmVycmlkZXMgdGhlIGVuY29kaW5nIHNwZWNpZmllZCBpbiB0aGUKLSAgIFhNTCBmaWxlLgorICAgYnVpbGRlciB1c2VzIGFuIGluc3RhbmNlIG9mIHRoZSBzdGFuZGFyZCA6Y2xhc3M6YFRyZWVCdWlsZGVyYCBjbGFzcy4KKyAgICplbmNvZGluZyogWzFdXyBpcyBvcHRpb25hbC4gIElmIGdpdmVuLCB0aGUgdmFsdWUgb3ZlcnJpZGVzIHRoZSBlbmNvZGluZworICAgc3BlY2lmaWVkIGluIHRoZSBYTUwgZmlsZS4KIAogCiAgICAuLiBtZXRob2Q6OiBjbG9zZSgpCkBAIC02MzksNiArOTI4LDI0IEBACiAgICAgPj4+IHBhcnNlci5jbG9zZSgpCiAgICAgNAogCitFeGNlcHRpb25zCiteXl5eXl5eXl5eCisKKy4uIGNsYXNzOjogUGFyc2VFcnJvcgorCisgICBYTUwgcGFyc2UgZXJyb3IsIHJhaXNlZCBieSB0aGUgdmFyaW91cyBwYXJzaW5nIG1ldGhvZHMgaW4gdGhpcyBtb2R1bGUgd2hlbgorICAgcGFyc2luZyBmYWlscy4gIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gaW5zdGFuY2Ugb2YgdGhpcyBleGNlcHRpb24KKyAgIHdpbGwgY29udGFpbiBhIHVzZXItZnJpZW5kbHkgZXJyb3IgbWVzc2FnZS4gIEluIGFkZGl0aW9uLCBpdCB3aWxsIGhhdmUKKyAgIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBhdmFpbGFibGU6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNvZGUKKworICAgICAgQSBudW1lcmljIGVycm9yIGNvZGUgZnJvbSB0aGUgZXhwYXQgcGFyc2VyLiBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YKKyAgICAgIDptb2Q6YHhtbC5wYXJzZXJzLmV4cGF0YCBmb3IgdGhlIGxpc3Qgb2YgZXJyb3IgY29kZXMgYW5kIHRoZWlyIG1lYW5pbmdzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwb3NpdGlvbgorCisgICAgICBBIHR1cGxlIG9mICpsaW5lKiwgKmNvbHVtbiogbnVtYmVycywgc3BlY2lmeWluZyB3aGVyZSB0aGUgZXJyb3Igb2NjdXJyZWQuCiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWwucnN0IGIvRG9jL2xpYnJhcnkveG1sLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWIyZTIzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkveG1sLnJzdApAQCAtMCwwICsxLDI5IEBACisuLiBfeG1sOgorCitYTUwgUHJvY2Vzc2luZyBNb2R1bGVzCis9PT09PT09PT09PT09PT09PT09PT09CisKK1B5dGhvbidzIGludGVyZmFjZXMgZm9yIHByb2Nlc3NpbmcgWE1MIGFyZSBncm91cGVkIGluIHRoZSBgYHhtbGBgIHBhY2thZ2UuCisKK0l0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgbW9kdWxlcyBpbiB0aGUgOm1vZDpgeG1sYCBwYWNrYWdlIHJlcXVpcmUgdGhhdAordGhlcmUgYmUgYXQgbGVhc3Qgb25lIFNBWC1jb21wbGlhbnQgWE1MIHBhcnNlciBhdmFpbGFibGUuIFRoZSBFeHBhdCBwYXJzZXIgaXMKK2luY2x1ZGVkIHdpdGggUHl0aG9uLCBzbyB0aGUgOm1vZDpgeG1sLnBhcnNlcnMuZXhwYXRgIG1vZHVsZSB3aWxsIGFsd2F5cyBiZQorYXZhaWxhYmxlLgorCitUaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDptb2Q6YHhtbC5kb21gIGFuZCA6bW9kOmB4bWwuc2F4YCBwYWNrYWdlcyBhcmUgdGhlCitkZWZpbml0aW9uIG9mIHRoZSBQeXRob24gYmluZGluZ3MgZm9yIHRoZSBET00gYW5kIFNBWCBpbnRlcmZhY2VzLgorCitUaGUgWE1MIGhhbmRsaW5nIHN1Ym1vZHVsZXMgYXJlOgorCisqIDptb2Q6YHhtbC5ldHJlZS5FbGVtZW50VHJlZWA6IHRoZSBFbGVtZW50VHJlZSBBUEksIGEgc2ltcGxlIGFuZCBsaWdodHdlaWdodAorCisuLgorCisqIDptb2Q6YHhtbC5kb21gOiB0aGUgRE9NIEFQSSBkZWZpbml0aW9uCisqIDptb2Q6YHhtbC5kb20ubWluaWRvbWA6IGEgbGlnaHR3ZWlnaHQgRE9NIGltcGxlbWVudGF0aW9uCisqIDptb2Q6YHhtbC5kb20ucHVsbGRvbWA6IHN1cHBvcnQgZm9yIGJ1aWxkaW5nIHBhcnRpYWwgRE9NIHRyZWVzCisKKy4uCisKKyogOm1vZDpgeG1sLnNheGA6IFNBWDIgYmFzZSBjbGFzc2VzIGFuZCBjb252ZW5pZW5jZSBmdW5jdGlvbnMKKyogOm1vZDpgeG1sLnBhcnNlcnMuZXhwYXRgOiB0aGUgRXhwYXQgcGFyc2VyIGJpbmRpbmcKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbC5zYXgudXRpbHMucnN0IGIvRG9jL2xpYnJhcnkveG1sLnNheC51dGlscy5yc3QKaW5kZXggZmYzNmZkOC4uMGE0MDM4YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1sLnNheC51dGlscy5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1sLnNheC51dGlscy5yc3QKQEAgLTYyLDcgKzYyLDcgQEAKICAgIHRhZ3MsIGlmIHNldCB0byAqVHJ1ZSogdGhleSBhcmUgZW1pdHRlZCBhcyBhIHNpbmdsZSBzZWxmLWNsb3NlZCB0YWcuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotICAgICAgc2hvcnRfZW1wdHlfZWxlbWVudHMKKyAgICAgIFRoZSAqc2hvcnRfZW1wdHlfZWxlbWVudHMqIHBhcmFtZXRlci4KIAogCiAuLiBjbGFzczo6IFhNTEZpbHRlckJhc2UoYmFzZSkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0IGIvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QKaW5kZXggZTcyNzcwYS4uMTg3MWM5OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QKQEAgLTgsNyArOCw3IEBACiAKIAogLi4gWFhYIE5vdCBldmVyeXRoaW5nIGlzIGRvY3VtZW50ZWQgeWV0LiAgSXQgbWlnaHQgYmUgZ29vZCB0byBkZXNjcmliZQotICAgTWFyc2hhbGxlciwgVW5tYXJzaGFsbGVyLCBnZXRwYXJzZXIsIGR1bXBzLCBsb2FkcywgYW5kIFRyYW5zcG9ydC4KKyAgIE1hcnNoYWxsZXIsIFVubWFyc2hhbGxlciwgZ2V0cGFyc2VyIGFuZCBUcmFuc3BvcnQuCiAKICoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL3htbHJwYy9jbGllbnQucHlgCiAKQEAgLTIxLDcgKzIxLDEyIEBACiBiZXR3ZWVuIGNvbmZvcm1hYmxlIFB5dGhvbiBvYmplY3RzIGFuZCBYTUwgb24gdGhlIHdpcmUuCiAKIAotLi4gY2xhc3M6OiBTZXJ2ZXJQcm94eSh1cmksIHRyYW5zcG9ydD1Ob25lLCBlbmNvZGluZz1Ob25lLCB2ZXJib3NlPUZhbHNlLCBhbGxvd19ub25lPUZhbHNlLCB1c2VfZGF0ZXRpbWU9RmFsc2UpCisuLiBjbGFzczo6IFNlcnZlclByb3h5KHVyaSwgdHJhbnNwb3J0PU5vbmUsIGVuY29kaW5nPU5vbmUsIHZlcmJvc2U9RmFsc2UsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dfbm9uZT1GYWxzZSwgdXNlX2RhdGV0aW1lPUZhbHNlLCBcCisgICAgICAgICAgICAgICAgICAgICAgIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKQorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhlICp1c2VfYnVpbHRpbl90eXBlcyogZmxhZyB3YXMgYWRkZWQuCiAKICAgIEEgOmNsYXNzOmBTZXJ2ZXJQcm94eWAgaW5zdGFuY2UgaXMgYW4gb2JqZWN0IHRoYXQgbWFuYWdlcyBjb21tdW5pY2F0aW9uIHdpdGggYQogICAgcmVtb3RlIFhNTC1SUEMgc2VydmVyLiAgVGhlIHJlcXVpcmVkIGZpcnN0IGFyZ3VtZW50IGlzIGEgVVJJIChVbmlmb3JtIFJlc291cmNlCkBAIC0zNCw5ICszOSwxMyBAQAogICAgWE1MOyB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgaXMgZm9yIGBgTm9uZWBgIHRvIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYC4gVGhpcyBpcwogICAgYSBjb21tb25seS11c2VkIGV4dGVuc2lvbiB0byB0aGUgWE1MLVJQQyBzcGVjaWZpY2F0aW9uLCBidXQgaXNuJ3Qgc3VwcG9ydGVkIGJ5CiAgICBhbGwgY2xpZW50cyBhbmQgc2VydmVyczsgc2VlIGh0dHA6Ly9vbnRvc3lzLmNvbS94bWwtcnBjL2V4dGVuc2lvbnMucGhwIGZvciBhCi0gICBkZXNjcmlwdGlvbi4gIFRoZSAqdXNlX2RhdGV0aW1lKiBmbGFnIGNhbiBiZSB1c2VkIHRvIGNhdXNlIGRhdGUvdGltZSB2YWx1ZXMgdG8KLSAgIGJlIHByZXNlbnRlZCBhcyA6Y2xhc3M6YGRhdGV0aW1lLmRhdGV0aW1lYCBvYmplY3RzOyB0aGlzIGlzIGZhbHNlIGJ5IGRlZmF1bHQuCi0gICA6Y2xhc3M6YGRhdGV0aW1lLmRhdGV0aW1lYCBvYmplY3RzIG1heSBiZSBwYXNzZWQgdG8gY2FsbHMuCisgICBkZXNjcmlwdGlvbi4gIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIGZsYWcgY2FuIGJlIHVzZWQgdG8gY2F1c2UgZGF0ZS90aW1lIHZhbHVlcworICAgdG8gYmUgcHJlc2VudGVkIGFzIDpjbGFzczpgZGF0ZXRpbWUuZGF0ZXRpbWVgIG9iamVjdHMgYW5kIGJpbmFyeSBkYXRhIHRvIGJlCisgICBwcmVzZW50ZWQgYXMgOmNsYXNzOmBieXRlc2Agb2JqZWN0czsgdGhpcyBmbGFnIGlzIGZhbHNlIGJ5IGRlZmF1bHQuCisgICA6Y2xhc3M6YGRhdGV0aW1lLmRhdGV0aW1lYCBhbmQgOmNsYXNzOmBieXRlc2Agb2JqZWN0cyBtYXkgYmUgcGFzc2VkIHRvIGNhbGxzLgorCisgICBUaGUgb2Jzb2xldGUgKnVzZV9kYXRldGltZSogZmxhZyBpcyBzaW1pbGFyIHRvICp1c2VfYnVpbHRpbl90eXBlcyogYnV0IGl0CisgICBhcHBsaWVzIG9ubHkgdG8gZGF0ZS90aW1lIHZhbHVlcy4KIAogICAgQm90aCB0aGUgSFRUUCBhbmQgSFRUUFMgdHJhbnNwb3J0cyBzdXBwb3J0IHRoZSBVUkwgc3ludGF4IGV4dGVuc2lvbiBmb3IgSFRUUAogICAgQmFzaWMgQXV0aGVudGljYXRpb246IGBgaHR0cDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvcGF0aGBgLiAgVGhlICBgYHVzZXI6cGFzc2BgCkBAIC03OCwxMiArODcsMTIgQEAKICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9ubHkgdGhlaXIgKl9fZGljdF9fKiBhdHRyaWJ1dGUgaXMgICAgICAgICAgfAogICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNtaXR0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBkYXRlc2AgICAgICAgICAgICAgICAgICB8IGluIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChwYXNzIGluIGFuICAgICAgfAotICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5zdGFuY2Ugb2YgdGhlIDpjbGFzczpgRGF0ZVRpbWVgIGNsYXNzKSBvciB8CisgICB8IDpjb25zdDpgZGF0ZXNgICAgICAgICAgICAgICAgICAgfCBJbiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaC4gIFBhc3MgaW4gYW4gICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YERhdGVUaW1lYCBjbGFzcyBvciAgfAogICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYSA6Y2xhc3M6YGRhdGV0aW1lLmRhdGV0aW1lYCBpbnN0YW5jZS4gICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBiaW5hcnkgZGF0YWAgICAgICAgICAgICB8IHBhc3MgaW4gYW4gaW5zdGFuY2Ugb2YgdGhlIDpjbGFzczpgQmluYXJ5YCAgfAotICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd3JhcHBlciBjbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8IDpjb25zdDpgYmluYXJ5IGRhdGFgICAgICAgICAgICAgfCBQYXNzIGluIGFuIGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YEJpbmFyeWAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdyYXBwZXIgY2xhc3Mgb3IgYSA6Y2xhc3M6YGJ5dGVzYCBpbnN0YW5jZS4gfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKICAgIFRoaXMgaXMgdGhlIGZ1bGwgc2V0IG9mIGRhdGEgdHlwZXMgc3VwcG9ydGVkIGJ5IFhNTC1SUEMuICBNZXRob2QgY2FsbHMgbWF5IGFsc28KQEAgLTk4LDggKzEwNyw5IEBACiAgICBlbnN1cmUgdGhhdCB0aGUgc3RyaW5nIGlzIGZyZWUgb2YgY2hhcmFjdGVycyB0aGF0IGFyZW4ndCBhbGxvd2VkIGluIFhNTCwgc3VjaCBhcwogICAgdGhlIGNvbnRyb2wgY2hhcmFjdGVycyB3aXRoIEFTQ0lJIHZhbHVlcyBiZXR3ZWVuIDAgYW5kIDMxIChleGNlcHQsIG9mIGNvdXJzZSwKICAgIHRhYiwgbmV3bGluZSBhbmQgY2FycmlhZ2UgcmV0dXJuKTsgZmFpbGluZyB0byBkbyB0aGlzIHdpbGwgcmVzdWx0IGluIGFuIFhNTC1SUEMKLSAgIHJlcXVlc3QgdGhhdCBpc24ndCB3ZWxsLWZvcm1lZCBYTUwuICBJZiB5b3UgaGF2ZSB0byBwYXNzIGFyYml0cmFyeSBzdHJpbmdzIHZpYQotICAgWE1MLVJQQywgdXNlIHRoZSA6Y2xhc3M6YEJpbmFyeWAgd3JhcHBlciBjbGFzcyBkZXNjcmliZWQgYmVsb3cuCisgICByZXF1ZXN0IHRoYXQgaXNuJ3Qgd2VsbC1mb3JtZWQgWE1MLiAgSWYgeW91IGhhdmUgdG8gcGFzcyBhcmJpdHJhcnkgYnl0ZXMKKyAgIHZpYSBYTUwtUlBDLCB1c2UgdGhlIDpjbGFzczpgYnl0ZXNgIGNsYXNzIG9yIHRoZSBjbGFzczpgQmluYXJ5YCB3cmFwcGVyIGNsYXNzCisgICBkZXNjcmliZWQgYmVsb3cuCiAKICAgIDpjbGFzczpgU2VydmVyYCBpcyByZXRhaW5lZCBhcyBhbiBhbGlhcyBmb3IgOmNsYXNzOmBTZXJ2ZXJQcm94eWAgZm9yIGJhY2t3YXJkcwogICAgY29tcGF0aWJpbGl0eS4gIE5ldyBjb2RlIHNob3VsZCB1c2UgOmNsYXNzOmBTZXJ2ZXJQcm94eWAuCkBAIC0yNDksNyArMjU5LDcgQEAKIEJpbmFyeSBPYmplY3RzCiAtLS0tLS0tLS0tLS0tLQogCi1UaGlzIGNsYXNzIG1heSBiZSBpbml0aWFsaXplZCBmcm9tIHN0cmluZyBkYXRhICh3aGljaCBtYXkgaW5jbHVkZSBOVUxzKS4gVGhlCitUaGlzIGNsYXNzIG1heSBiZSBpbml0aWFsaXplZCBmcm9tIGJ5dGVzIGRhdGEgKHdoaWNoIG1heSBpbmNsdWRlIE5VTHMpLiBUaGUKIHByaW1hcnkgYWNjZXNzIHRvIHRoZSBjb250ZW50IG9mIGEgOmNsYXNzOmBCaW5hcnlgIG9iamVjdCBpcyBwcm92aWRlZCBieSBhbgogYXR0cmlidXRlOgogCkBAIC0yNTcsMTUgKzI2NywxNSBAQAogLi4gYXR0cmlidXRlOjogQmluYXJ5LmRhdGEKIAogICAgVGhlIGJpbmFyeSBkYXRhIGVuY2Fwc3VsYXRlZCBieSB0aGUgOmNsYXNzOmBCaW5hcnlgIGluc3RhbmNlLiAgVGhlIGRhdGEgaXMKLSAgIHByb3ZpZGVkIGFzIGFuIDgtYml0IHN0cmluZy4KKyAgIHByb3ZpZGVkIGFzIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0LgogCiA6Y2xhc3M6YEJpbmFyeWAgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kcywgc3VwcG9ydGVkIG1haW5seSBmb3IKIGludGVybmFsIHVzZSBieSB0aGUgbWFyc2hhbGxpbmcvdW5tYXJzaGFsbGluZyBjb2RlOgogCiAKLS4uIG1ldGhvZDo6IEJpbmFyeS5kZWNvZGUoc3RyaW5nKQorLi4gbWV0aG9kOjogQmluYXJ5LmRlY29kZShieXRlcykKIAotICAgQWNjZXB0IGEgYmFzZTY0IHN0cmluZyBhbmQgZGVjb2RlIGl0IGFzIHRoZSBpbnN0YW5jZSdzIG5ldyBkYXRhLgorICAgQWNjZXB0IGEgYmFzZTY0IDpjbGFzczpgYnl0ZXNgIG9iamVjdCBhbmQgZGVjb2RlIGl0IGFzIHRoZSBpbnN0YW5jZSdzIG5ldyBkYXRhLgogCiAKIC4uIG1ldGhvZDo6IEJpbmFyeS5lbmNvZGUob3V0KQpAQCAtNDcxLDE0ICs0ODEsMjEgQEAKICAgIGl0IHZpYSBhbiBleHRlbnNpb24sICBwcm92aWRlIGEgdHJ1ZSB2YWx1ZSBmb3IgKmFsbG93X25vbmUqLgogCiAKLS4uIGZ1bmN0aW9uOjogbG9hZHMoZGF0YSwgdXNlX2RhdGV0aW1lPUZhbHNlKQorLi4gZnVuY3Rpb246OiBsb2FkcyhkYXRhLCB1c2VfZGF0ZXRpbWU9RmFsc2UsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKQogCiAgICBDb252ZXJ0IGFuIFhNTC1SUEMgcmVxdWVzdCBvciByZXNwb25zZSBpbnRvIFB5dGhvbiBvYmplY3RzLCBhIGBgKHBhcmFtcywKICAgIG1ldGhvZG5hbWUpYGAuICAqcGFyYW1zKiBpcyBhIHR1cGxlIG9mIGFyZ3VtZW50OyAqbWV0aG9kbmFtZSogaXMgYSBzdHJpbmcsIG9yCiAgICBgYE5vbmVgYCBpZiBubyBtZXRob2QgbmFtZSBpcyBwcmVzZW50IGluIHRoZSBwYWNrZXQuIElmIHRoZSBYTUwtUlBDIHBhY2tldAogICAgcmVwcmVzZW50cyBhIGZhdWx0IGNvbmRpdGlvbiwgdGhpcyBmdW5jdGlvbiB3aWxsIHJhaXNlIGEgOmV4YzpgRmF1bHRgIGV4Y2VwdGlvbi4KLSAgIFRoZSAqdXNlX2RhdGV0aW1lKiBmbGFnIGNhbiBiZSB1c2VkIHRvIGNhdXNlIGRhdGUvdGltZSB2YWx1ZXMgdG8gYmUgcHJlc2VudGVkIGFzCi0gICA6Y2xhc3M6YGRhdGV0aW1lLmRhdGV0aW1lYCBvYmplY3RzOyB0aGlzIGlzIGZhbHNlIGJ5IGRlZmF1bHQuCisgICBUaGUgKnVzZV9idWlsdGluX3R5cGVzKiBmbGFnIGNhbiBiZSB1c2VkIHRvIGNhdXNlIGRhdGUvdGltZSB2YWx1ZXMgdG8gYmUKKyAgIHByZXNlbnRlZCBhcyA6Y2xhc3M6YGRhdGV0aW1lLmRhdGV0aW1lYCBvYmplY3RzIGFuZCBiaW5hcnkgZGF0YSB0byBiZQorICAgcHJlc2VudGVkIGFzIDpjbGFzczpgYnl0ZXNgIG9iamVjdHM7IHRoaXMgZmxhZyBpcyBmYWxzZSBieSBkZWZhdWx0LgorCisgICBUaGUgb2Jzb2xldGUgKnVzZV9kYXRldGltZSogZmxhZyBpcyBzaW1pbGFyIHRvICp1c2VfYnVpbHRpbl90eXBlcyogYnV0IGl0CisgICBhcHBsaWVzIG9ubHkgdG8gZGF0ZS90aW1lIHZhbHVlcy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIGZsYWcgd2FzIGFkZGVkLgogCiAKIC4uIF94bWxycGMtY2xpZW50LWV4YW1wbGU6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWxycGMucnN0IGIvRG9jL2xpYnJhcnkveG1scnBjLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTY4MTU3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkveG1scnBjLnJzdApAQCAtMCwwICsxLDEyIEBACis6bW9kOmB4bWxycGNgIC0tLSBYTUxSUEMgc2VydmVyIGFuZCBjbGllbnQgbW9kdWxlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworWE1MLVJQQyBpcyBhIFJlbW90ZSBQcm9jZWR1cmUgQ2FsbCBtZXRob2QgdGhhdCB1c2VzIFhNTCBwYXNzZWQgdmlhIEhUVFAgYXMgYQordHJhbnNwb3J0LiAgV2l0aCBpdCwgYSBjbGllbnQgY2FuIGNhbGwgbWV0aG9kcyB3aXRoIHBhcmFtZXRlcnMgb24gYSByZW1vdGUKK3NlcnZlciAodGhlIHNlcnZlciBpcyBuYW1lZCBieSBhIFVSSSkgYW5kIGdldCBiYWNrIHN0cnVjdHVyZWQgZGF0YS4KKworYGB4bWxycGNgYCBpcyBhIHBhY2thZ2UgdGhhdCBjb2xsZWN0cyBzZXJ2ZXIgYW5kIGNsaWVudCBtb2R1bGVzIGltcGxlbWVudGluZworWE1MLVJQQy4gIFRoZSBtb2R1bGVzIGFyZToKKworKiA6bW9kOmB4bWxycGMuY2xpZW50YAorKiA6bW9kOmB4bWxycGMuc2VydmVyYApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QgYi9Eb2MvbGlicmFyeS94bWxycGMuc2VydmVyLnJzdAppbmRleCA2N2ZlYmE2Li42NDkzZmQ0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS94bWxycGMuc2VydmVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS94bWxycGMuc2VydmVyLnJzdApAQCAtMTYsNyArMTYsOSBAQAogOmNsYXNzOmBDR0lYTUxSUENSZXF1ZXN0SGFuZGxlcmAuCiAKIAotLi4gY2xhc3M6OiBTaW1wbGVYTUxSUENTZXJ2ZXIoYWRkciwgcmVxdWVzdEhhbmRsZXI9U2ltcGxlWE1MUlBDUmVxdWVzdEhhbmRsZXIsIGxvZ1JlcXVlc3RzPVRydWUsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUpCisuLiBjbGFzczo6IFNpbXBsZVhNTFJQQ1NlcnZlcihhZGRyLCByZXF1ZXN0SGFuZGxlcj1TaW1wbGVYTUxSUENSZXF1ZXN0SGFuZGxlcixcCisgICAgICAgICAgICAgICBsb2dSZXF1ZXN0cz1UcnVlLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLFwKKyAgICAgICAgICAgICAgIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKQogCiAgICBDcmVhdGUgYSBuZXcgc2VydmVyIGluc3RhbmNlLiAgVGhpcyBjbGFzcyBwcm92aWRlcyBtZXRob2RzIGZvciByZWdpc3RyYXRpb24gb2YKICAgIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSBjYWxsZWQgYnkgdGhlIFhNTC1SUEMgcHJvdG9jb2wuICBUaGUgKnJlcXVlc3RIYW5kbGVyKgpAQCAtMjUsMTggKzI3LDMxIEBACiAgICBhcmUgcGFzc2VkIHRvIHRoZSA6Y2xhc3M6YHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXJgIGNvbnN0cnVjdG9yLiAgSWYgKmxvZ1JlcXVlc3RzKgogICAgaXMgdHJ1ZSAodGhlIGRlZmF1bHQpLCByZXF1ZXN0cyB3aWxsIGJlIGxvZ2dlZDsgc2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byBmYWxzZQogICAgd2lsbCB0dXJuIG9mZiBsb2dnaW5nLiAgIFRoZSAqYWxsb3dfbm9uZSogYW5kICplbmNvZGluZyogcGFyYW1ldGVycyBhcmUgcGFzc2VkCi0gICBvbiB0byAgOm1vZDpgeG1scnBjLmNsaWVudGAgYW5kIGNvbnRyb2wgdGhlIFhNTC1SUEMgcmVzcG9uc2VzIHRoYXQgd2lsbCBiZSByZXR1cm5lZAorICAgb24gdG8gOm1vZDpgeG1scnBjLmNsaWVudGAgYW5kIGNvbnRyb2wgdGhlIFhNTC1SUEMgcmVzcG9uc2VzIHRoYXQgd2lsbCBiZSByZXR1cm5lZAogICAgZnJvbSB0aGUgc2VydmVyLiBUaGUgKmJpbmRfYW5kX2FjdGl2YXRlKiBwYXJhbWV0ZXIgY29udHJvbHMgd2hldGhlcgogICAgOm1ldGg6YHNlcnZlcl9iaW5kYCBhbmQgOm1ldGg6YHNlcnZlcl9hY3RpdmF0ZWAgYXJlIGNhbGxlZCBpbW1lZGlhdGVseSBieSB0aGUKICAgIGNvbnN0cnVjdG9yOyBpdCBkZWZhdWx0cyB0byB0cnVlLiBTZXR0aW5nIGl0IHRvIGZhbHNlIGFsbG93cyBjb2RlIHRvIG1hbmlwdWxhdGUKICAgIHRoZSAqYWxsb3dfcmV1c2VfYWRkcmVzcyogY2xhc3MgdmFyaWFibGUgYmVmb3JlIHRoZSBhZGRyZXNzIGlzIGJvdW5kLgorICAgVGhlICp1c2VfYnVpbHRpbl90eXBlcyogcGFyYW1ldGVyIGlzIHBhc3NlZCB0byB0aGUKKyAgIDpmdW5jOmB+eG1scnBjLmNsaWVudC5sb2Fkc2AgZnVuY3Rpb24gYW5kIGNvbnRyb2xzIHdoaWNoIHR5cGVzIGFyZSBwcm9jZXNzZWQKKyAgIHdoZW4gZGF0ZS90aW1lcyB2YWx1ZXMgb3IgYmluYXJ5IGRhdGEgYXJlIHJlY2VpdmVkOyBpdCBkZWZhdWx0cyB0byBmYWxzZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIGZsYWcgd2FzIGFkZGVkLgogCiAKLS4uIGNsYXNzOjogQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIoYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSkKKy4uIGNsYXNzOjogQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIoYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSxcCisgICAgICAgICAgICAgICB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSkKIAogICAgQ3JlYXRlIGEgbmV3IGluc3RhbmNlIHRvIGhhbmRsZSBYTUwtUlBDIHJlcXVlc3RzIGluIGEgQ0dJIGVudmlyb25tZW50LiAgVGhlCiAgICAqYWxsb3dfbm9uZSogYW5kICplbmNvZGluZyogcGFyYW1ldGVycyBhcmUgcGFzc2VkIG9uIHRvIDptb2Q6YHhtbHJwYy5jbGllbnRgCiAgICBhbmQgY29udHJvbCB0aGUgWE1MLVJQQyByZXNwb25zZXMgdGhhdCB3aWxsIGJlIHJldHVybmVkIGZyb20gdGhlIHNlcnZlci4KKyAgIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIHBhcmFtZXRlciBpcyBwYXNzZWQgdG8gdGhlCisgICA6ZnVuYzpgfnhtbHJwYy5jbGllbnQubG9hZHNgIGZ1bmN0aW9uIGFuZCBjb250cm9scyB3aGljaCB0eXBlcyBhcmUgcHJvY2Vzc2VkCisgICB3aGVuIGRhdGUvdGltZXMgdmFsdWVzIG9yIGJpbmFyeSBkYXRhIGFyZSByZWNlaXZlZDsgaXQgZGVmYXVsdHMgdG8gZmFsc2UuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgKnVzZV9idWlsdGluX3R5cGVzKiBmbGFnIHdhcyBhZGRlZC4KIAogCiAuLiBjbGFzczo6IFNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyKCkKQEAgLTIzMywxMiArMjQ4LDE3IEBACiA6Y2xhc3M6YERvY0NHSVhNTFJQQ1JlcXVlc3RIYW5kbGVyYC4KIAogCi0uLiBjbGFzczo6IERvY1hNTFJQQ1NlcnZlcihhZGRyLCByZXF1ZXN0SGFuZGxlcj1Eb2NYTUxSUENSZXF1ZXN0SGFuZGxlciwgbG9nUmVxdWVzdHM9VHJ1ZSwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSkKKy4uIGNsYXNzOjogRG9jWE1MUlBDU2VydmVyKGFkZHIsIHJlcXVlc3RIYW5kbGVyPURvY1hNTFJQQ1JlcXVlc3RIYW5kbGVyLFwKKyAgICAgICAgICAgICAgIGxvZ1JlcXVlc3RzPVRydWUsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsXAorICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSwgdXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKIAogICAgQ3JlYXRlIGEgbmV3IHNlcnZlciBpbnN0YW5jZS4gQWxsIHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvcgogICAgOmNsYXNzOmBTaW1wbGVYTUxSUENTZXJ2ZXJgOyAqcmVxdWVzdEhhbmRsZXIqIGRlZmF1bHRzIHRvCiAgICA6Y2xhc3M6YERvY1hNTFJQQ1JlcXVlc3RIYW5kbGVyYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIGZsYWcgd2FzIGFkZGVkLgorCiAKIC4uIGNsYXNzOjogRG9jQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdCBiL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0CmluZGV4IGQ4MmFiMDYuLjc1ZThmZDUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0CkBAIC0xOCw3ICsxOCw3IEBACiAKIFRoaXMgbW9kdWxlIGRvZXMgbm90IGN1cnJlbnRseSBoYW5kbGUgbXVsdGktZGlzayBaSVAgZmlsZXMuCiBJdCBjYW4gaGFuZGxlIFpJUCBmaWxlcyB0aGF0IHVzZSB0aGUgWklQNjQgZXh0ZW5zaW9ucwotKHRoYXQgaXMgWklQIGZpbGVzIHRoYXQgYXJlIG1vcmUgdGhhbiA0IEdCeXRlIGluIHNpemUpLiAgSXQgc3VwcG9ydHMKKyh0aGF0IGlzIFpJUCBmaWxlcyB0aGF0IGFyZSBtb3JlIHRoYW4gNCBHaUIgaW4gc2l6ZSkuICBJdCBzdXBwb3J0cwogZGVjcnlwdGlvbiBvZiBlbmNyeXB0ZWQgZmlsZXMgaW4gWklQIGFyY2hpdmVzLCBidXQgaXQgY3VycmVudGx5IGNhbm5vdAogY3JlYXRlIGFuIGVuY3J5cHRlZCBmaWxlLiAgRGVjcnlwdGlvbiBpcyBleHRyZW1lbHkgc2xvdyBhcyBpdCBpcwogaW1wbGVtZW50ZWQgaW4gbmF0aXZlIFB5dGhvbiByYXRoZXIgdGhhbiBDLgpAQCAtODcsNyArODcsMzAgQEAKIC4uIGRhdGE6OiBaSVBfREVGTEFURUQKIAogICAgVGhlIG51bWVyaWMgY29uc3RhbnQgZm9yIHRoZSB1c3VhbCBaSVAgY29tcHJlc3Npb24gbWV0aG9kLiAgVGhpcyByZXF1aXJlcyB0aGUKLSAgIDptb2Q6YHpsaWJgIG1vZHVsZS4gIE5vIG90aGVyIGNvbXByZXNzaW9uIG1ldGhvZHMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQuCisgICA6bW9kOmB6bGliYCBtb2R1bGUuCisKKworLi4gZGF0YTo6IFpJUF9CWklQMgorCisgICBUaGUgbnVtZXJpYyBjb25zdGFudCBmb3IgdGhlIEJaSVAyIGNvbXByZXNzaW9uIG1ldGhvZC4gIFRoaXMgcmVxdWlyZXMgdGhlCisgICA6bW9kOmBiejJgIG1vZHVsZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBaSVBfTFpNQQorCisgICBUaGUgbnVtZXJpYyBjb25zdGFudCBmb3IgdGhlIExaTUEgY29tcHJlc3Npb24gbWV0aG9kLiAgVGhpcyByZXF1aXJlcyB0aGUKKyAgIDptb2Q6YGx6bWFgIG1vZHVsZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBUaGUgWklQIGZpbGUgZm9ybWF0IHNwZWNpZmljYXRpb24gaGFzIGluY2x1ZGVkIHN1cHBvcnQgZm9yIGJ6aXAyIGNvbXByZXNzaW9uCisgICAgICBzaW5jZSAyMDAxLCBhbmQgZm9yIExaTUEgY29tcHJlc3Npb24gc2luY2UgMjAwNi4gSG93ZXZlciwgc29tZSB0b29scworICAgICAgKGluY2x1ZGluZyBvbGRlciBQeXRob24gcmVsZWFzZXMpIGRvIG5vdCBzdXBwb3J0IHRoZXNlIGNvbXByZXNzaW9uCisgICAgICBtZXRob2RzLCBhbmQgbWF5IGVpdGhlciByZWZ1c2UgdG8gcHJvY2VzcyB0aGUgWklQIGZpbGUgYWx0b2dldGhlciwKKyAgICAgIG9yIGZhaWwgdG8gZXh0cmFjdCBpbmRpdmlkdWFsIGZpbGVzLgogCiAKIC4uIHNlZWFsc286OgpAQCAtMTE4LDEyICsxNDEsMTQgQEAKICAgIGFkZGluZyBhIFpJUCBhcmNoaXZlIHRvIGFub3RoZXIgZmlsZSAoc3VjaCBhcyA6ZmlsZTpgcHl0aG9uLmV4ZWApLiAgSWYKICAgICptb2RlKiBpcyBgYGFgYCBhbmQgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QgYXQgYWxsLCBpdCBpcyBjcmVhdGVkLgogICAgKmNvbXByZXNzaW9uKiBpcyB0aGUgWklQIGNvbXByZXNzaW9uIG1ldGhvZCB0byB1c2Ugd2hlbiB3cml0aW5nIHRoZSBhcmNoaXZlLAotICAgYW5kIHNob3VsZCBiZSA6Y29uc3Q6YFpJUF9TVE9SRURgIG9yIDpjb25zdDpgWklQX0RFRkxBVEVEYDsgdW5yZWNvZ25pemVkCi0gICB2YWx1ZXMgd2lsbCBjYXVzZSA6ZXhjOmBSdW50aW1lRXJyb3JgIHRvIGJlIHJhaXNlZC4gIElmIDpjb25zdDpgWklQX0RFRkxBVEVEYAotICAgaXMgc3BlY2lmaWVkIGJ1dCB0aGUgOm1vZDpgemxpYmAgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUsIDpleGM6YFJ1bnRpbWVFcnJvcmAKKyAgIGFuZCBzaG91bGQgYmUgOmNvbnN0OmBaSVBfU1RPUkVEYCwgOmNvbnN0OmBaSVBfREVGTEFURURgLAorICAgOmNvbnN0OmBaSVBfQlpJUDJgIG9yIDpjb25zdDpgWklQX0xaTUFgOyB1bnJlY29nbml6ZWQKKyAgIHZhbHVlcyB3aWxsIGNhdXNlIDpleGM6YFJ1bnRpbWVFcnJvcmAgdG8gYmUgcmFpc2VkLiAgSWYgOmNvbnN0OmBaSVBfREVGTEFURURgLAorICAgOmNvbnN0OmBaSVBfQlpJUDJgIG9yIDpjb25zdDpgWklQX0xaTUFgIGlzIHNwZWNpZmllZCBidXQgdGhlIGNvcnJlc3BvbmRlZCBtb2R1bGUKKyAgICg6bW9kOmB6bGliYCwgOm1vZDpgYnoyYCBvciA6bW9kOmBsem1hYCkgaXMgbm90IGF2YWlsYWJsZSwgOmV4YzpgUnVudGltZUVycm9yYAogICAgaXMgYWxzbyByYWlzZWQuIFRoZSBkZWZhdWx0IGlzIDpjb25zdDpgWklQX1NUT1JFRGAuICBJZiAqYWxsb3daaXA2NCogaXMKICAgIGBgVHJ1ZWBgIHppcGZpbGUgd2lsbCBjcmVhdGUgWklQIGZpbGVzIHRoYXQgdXNlIHRoZSBaSVA2NCBleHRlbnNpb25zIHdoZW4KLSAgIHRoZSB6aXBmaWxlIGlzIGxhcmdlciB0aGFuIDIgR0IuIElmIGl0IGlzICBmYWxzZSAodGhlIGRlZmF1bHQpIDptb2Q6YHppcGZpbGVgCisgICB0aGUgemlwZmlsZSBpcyBsYXJnZXIgdGhhbiAyIEdpQi4gSWYgaXQgaXMgIGZhbHNlICh0aGUgZGVmYXVsdCkgOm1vZDpgemlwZmlsZWAKICAgIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhlIFpJUCBmaWxlIHdvdWxkIHJlcXVpcmUgWklQNjQgZXh0ZW5zaW9ucy4KICAgIFpJUDY0IGV4dGVuc2lvbnMgYXJlIGRpc2FibGVkIGJ5IGRlZmF1bHQgYmVjYXVzZSB0aGUgZGVmYXVsdCA6cHJvZ3JhbTpgemlwYAogICAgYW5kIDpwcm9ncmFtOmB1bnppcGAgY29tbWFuZHMgb24gVW5peCAodGhlIEluZm9aSVAgdXRpbGl0aWVzKSBkb24ndCBzdXBwb3J0CkBAIC0xNDMsNiArMTY4LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogICAgICAgQWRkZWQgdGhlIGFiaWxpdHkgdG8gdXNlIDpjbGFzczpgWmlwRmlsZWAgYXMgYSBjb250ZXh0IG1hbmFnZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciA6bW9kOmBiemlwMiA8YnoyPmAgYW5kIDptb2Q6YGx6bWFgIGNvbXByZXNzaW9uLgorCiAKIC4uIG1ldGhvZDo6IFppcEZpbGUuY2xvc2UoKQogCkBAIC0yMzksNyArMjY3LDcgQEAKICAgICAgIHRoYXQgaGF2ZSBhYnNvbHV0ZSBmaWxlbmFtZXMgc3RhcnRpbmcgd2l0aCBgYCIvImBgIG9yIGZpbGVuYW1lcyB3aXRoIHR3bwogICAgICAgZG90cyBgYCIuLiJgYC4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIuNAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMuMQogICAgICAgVGhlIHppcGZpbGUgbW9kdWxlIGF0dGVtcHRzIHRvIHByZXZlbnQgdGhhdC4gIFNlZSA6bWV0aDpgZXh0cmFjdGAgbm90ZS4KIAogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS96aXBpbXBvcnQucnN0IGIvRG9jL2xpYnJhcnkvemlwaW1wb3J0LnJzdAppbmRleCA2MGIyYmQxLi5kZmZjOGUzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS96aXBpbXBvcnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3ppcGltcG9ydC5yc3QKQEAgLTg1LDkgKzg1LDEyIEBACiAKICAgIC4uIG1ldGhvZDo6IGdldF9kYXRhKHBhdGhuYW1lKQogCi0gICAgICBSZXR1cm4gdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoICpwYXRobmFtZSouIFJhaXNlIDpleGM6YElPRXJyb3JgIGlmIHRoZQorICAgICAgUmV0dXJuIHRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCAqcGF0aG5hbWUqLiBSYWlzZSA6ZXhjOmBPU0Vycm9yYCBpZiB0aGUKICAgICAgIGZpbGUgd2Fzbid0IGZvdW5kLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgOmV4YzpgSU9FcnJvcmAgdXNlZCB0byBiZSByYWlzZWQgaW5zdGVhZCBvZiA6ZXhjOmBPU0Vycm9yYC4KKwogCiAgICAuLiBtZXRob2Q6OiBnZXRfZmlsZW5hbWUoZnVsbG5hbWUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3psaWIucnN0IGIvRG9jL2xpYnJhcnkvemxpYi5yc3QKaW5kZXggNzU2NDBkNC4uNzMxMDIzZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvemxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvemxpYi5yc3QKQEAgLTUxLDIxICs1MSw0NiBAQAogCiAuLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGFbLCBsZXZlbF0pCiAKLSAgIENvbXByZXNzZXMgdGhlIGJ5dGVzIGluICpkYXRhKiwgcmV0dXJuaW5nIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcKLSAgIGNvbXByZXNzZWQgZGF0YS4gICpsZXZlbCogaXMgYW4gaW50ZWdlciBmcm9tIGBgMGBgIHRvIGBgOWBgIGNvbnRyb2xsaW5nIHRoZQotICAgbGV2ZWwgb2YgY29tcHJlc3Npb247IGBgMWBgIGlzIGZhc3Rlc3QgYW5kIHByb2R1Y2VzIHRoZSBsZWFzdCBjb21wcmVzc2lvbiwKLSAgIGBgOWBgIGlzIHNsb3dlc3QgYW5kIHByb2R1Y2VzIHRoZSBtb3N0LiBgYDBgYCBpcyBubyBjb21wcmVzc2lvbi4gVGhlIGRlZmF1bHQKLSAgIHZhbHVlIGlzIGBgNmBgLiAgUmFpc2VzIHRoZSA6ZXhjOmBlcnJvcmAgZXhjZXB0aW9uIGlmIGFueSBlcnJvciBvY2N1cnMuCisgICBDb21wcmVzc2VzIHRoZSBieXRlcyBpbiAqZGF0YSosIHJldHVybmluZyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIGNvbXByZXNzZWQgZGF0YS4KKyAgICpsZXZlbCogaXMgYW4gaW50ZWdlciBmcm9tIGBgMGBgIHRvIGBgOWBgIGNvbnRyb2xsaW5nIHRoZSBsZXZlbCBvZiBjb21wcmVzc2lvbjsKKyAgIGBgMWBgIGlzIGZhc3Rlc3QgYW5kIHByb2R1Y2VzIHRoZSBsZWFzdCBjb21wcmVzc2lvbiwgYGA5YGAgaXMgc2xvd2VzdCBhbmQKKyAgIHByb2R1Y2VzIHRoZSBtb3N0LiAgYGAwYGAgaXMgbm8gY29tcHJlc3Npb24uICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYDZgYC4KKyAgIFJhaXNlcyB0aGUgOmV4YzpgZXJyb3JgIGV4Y2VwdGlvbiBpZiBhbnkgZXJyb3Igb2NjdXJzLgogCiAKLS4uIGZ1bmN0aW9uOjogY29tcHJlc3NvYmooW2xldmVsXSkKKy4uIGZ1bmN0aW9uOjogY29tcHJlc3NvYmoobGV2ZWw9LTEsIG1ldGhvZD1ERUZMQVRFRCwgd2JpdHM9MTUsIG1lbWxldmVsPTgsIHN0cmF0ZWd5PVpfREVGQVVMVF9TVFJBVEVHWVssIHpkaWN0XSkKIAogICAgUmV0dXJucyBhIGNvbXByZXNzaW9uIG9iamVjdCwgdG8gYmUgdXNlZCBmb3IgY29tcHJlc3NpbmcgZGF0YSBzdHJlYW1zIHRoYXQgd29uJ3QKLSAgIGZpdCBpbnRvIG1lbW9yeSBhdCBvbmNlLiAgKmxldmVsKiBpcyBhbiBpbnRlZ2VyIGZyb20gYGAwYGAgdG8gYGA5YGAgY29udHJvbGxpbmcKLSAgIHRoZSBsZXZlbCBvZiBjb21wcmVzc2lvbjsgYGAxYGAgaXMgZmFzdGVzdCBhbmQgcHJvZHVjZXMgdGhlIGxlYXN0IGNvbXByZXNzaW9uLAotICAgYGA5YGAgaXMgc2xvd2VzdCBhbmQgcHJvZHVjZXMgdGhlIG1vc3QuICBgYDBgYCBpcyBubyBjb21wcmVzc2lvbi4gIFRoZSBkZWZhdWx0CisgICBmaXQgaW50byBtZW1vcnkgYXQgb25jZS4KKworICAgKmxldmVsKiBpcyB0aGUgY29tcHJlc3Npb24gbGV2ZWwgLS0gYW4gaW50ZWdlciBmcm9tIGBgMGBgIHRvIGBgOWBgLiBBIHZhbHVlCisgICBvZiBgYDFgYCBpcyBmYXN0ZXN0IGFuZCBwcm9kdWNlcyB0aGUgbGVhc3QgY29tcHJlc3Npb24sIHdoaWxlIGEgdmFsdWUgb2YKKyAgIGBgOWBgIGlzIHNsb3dlc3QgYW5kIHByb2R1Y2VzIHRoZSBtb3N0LiBgYDBgYCBpcyBubyBjb21wcmVzc2lvbi4gVGhlIGRlZmF1bHQKICAgIHZhbHVlIGlzIGBgNmBgLgogCisgICAqbWV0aG9kKiBpcyB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtLiBDdXJyZW50bHksIHRoZSBvbmx5IHN1cHBvcnRlZCB2YWx1ZSBpcworICAgYGBERUZMQVRFRGBgLgorCisgICAqd2JpdHMqIGlzIHRoZSBiYXNlIHR3byBsb2dhcml0aG0gb2YgdGhlIHNpemUgb2YgdGhlIHdpbmRvdyBidWZmZXIuIFRoaXMKKyAgIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGZyb20gYGA4YGAgdG8gYGAxNWBgLiBIaWdoZXIgdmFsdWVzIGdpdmUgYmV0dGVyCisgICBjb21wcmVzc2lvbiwgYnV0IHVzZSBtb3JlIG1lbW9yeS4KKworICAgKm1lbWxldmVsKiBjb250cm9scyB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2VkIGZvciBpbnRlcm5hbCBjb21wcmVzc2lvbiBzdGF0ZS4KKyAgIFZhbGlkIHZhbHVlcyByYW5nZSBmcm9tIGBgMWBgIHRvIGBgOWBgLiBIaWdoZXIgdmFsdWVzIHVzaW5nIG1vcmUgbWVtb3J5LAorICAgYnV0IGFyZSBmYXN0ZXIgYW5kIHByb2R1Y2Ugc21hbGxlciBvdXRwdXQuCisKKyAgICpzdHJhdGVneSogaXMgdXNlZCB0byB0dW5lIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0uIFBvc3NpYmxlIHZhbHVlcyBhcmUKKyAgIGBgWl9ERUZBVUxUX1NUUkFURUdZYGAsIGBgWl9GSUxURVJFRGBgLCBhbmQgYGBaX0hVRkZNQU5fT05MWWBgLgorCisgICAqemRpY3QqIGlzIGEgcHJlZGVmaW5lZCBjb21wcmVzc2lvbiBkaWN0aW9uYXJ5LiBUaGlzIGlzIGEgc2VxdWVuY2Ugb2YgYnl0ZXMKKyAgIChzdWNoIGFzIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSBjb250YWluaW5nIHN1YnNlcXVlbmNlcyB0aGF0IGFyZSBleHBlY3RlZAorICAgdG8gb2NjdXIgZnJlcXVlbnRseSBpbiB0aGUgZGF0YSB0aGF0IGlzIHRvIGJlIGNvbXByZXNzZWQuIFRob3NlIHN1YnNlcXVlbmNlcworICAgdGhhdCBhcmUgZXhwZWN0ZWQgdG8gYmUgbW9zdCBjb21tb24gc2hvdWxkIGNvbWUgYXQgdGhlIGVuZCBvZiB0aGUgZGljdGlvbmFyeS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqbWV0aG9kKiwgKndiaXRzKiwgKm1lbWxldmVsKiwgKnN0cmF0ZWd5KiBhbmQgKnpkaWN0KgorICAgICAgcGFyYW1ldGVycy4KKwogCiAuLiBmdW5jdGlvbjo6IGNyYzMyKGRhdGFbLCB2YWx1ZV0pCiAKQEAgLTgzLDEyICsxMDgsMTMgQEAKIAogICAgQWx3YXlzIHJldHVybnMgYW4gdW5zaWduZWQgMzItYml0IGludGVnZXIuCiAKLS4uIG5vdGU6OgotICAgVG8gZ2VuZXJhdGUgdGhlIHNhbWUgbnVtZXJpYyB2YWx1ZSBhY3Jvc3MgYWxsIFB5dGhvbiB2ZXJzaW9ucyBhbmQKLSAgIHBsYXRmb3JtcyB1c2UgY3JjMzIoZGF0YSkgJiAweGZmZmZmZmZmLiAgSWYgeW91IGFyZSBvbmx5IHVzaW5nCi0gICB0aGUgY2hlY2tzdW0gaW4gcGFja2VkIGJpbmFyeSBmb3JtYXQgdGhpcyBpcyBub3QgbmVjZXNzYXJ5IGFzIHRoZQotICAgcmV0dXJuIHZhbHVlIGlzIHRoZSBjb3JyZWN0IDMyYml0IGJpbmFyeSByZXByZXNlbnRhdGlvbgotICAgcmVnYXJkbGVzcyBvZiBzaWduLgorICAgLi4gbm90ZTo6CisKKyAgICAgIFRvIGdlbmVyYXRlIHRoZSBzYW1lIG51bWVyaWMgdmFsdWUgYWNyb3NzIGFsbCBQeXRob24gdmVyc2lvbnMgYW5kCisgICAgICBwbGF0Zm9ybXMsIHVzZSBgYGNyYzMyKGRhdGEpICYgMHhmZmZmZmZmZmBgLiAgSWYgeW91IGFyZSBvbmx5IHVzaW5nCisgICAgICB0aGUgY2hlY2tzdW0gaW4gcGFja2VkIGJpbmFyeSBmb3JtYXQgdGhpcyBpcyBub3QgbmVjZXNzYXJ5IGFzIHRoZQorICAgICAgcmV0dXJuIHZhbHVlIGlzIHRoZSBjb3JyZWN0IDMyLWJpdCBiaW5hcnkgcmVwcmVzZW50YXRpb24KKyAgICAgIHJlZ2FyZGxlc3Mgb2Ygc2lnbi4KIAogCiAuLiBmdW5jdGlvbjo6IGRlY29tcHJlc3MoZGF0YVssIHdiaXRzWywgYnVmc2l6ZV1dKQpAQCAtMTE1LDExICsxNDEsMjYgQEAKICAgIHRvIDpjOmZ1bmM6YG1hbGxvY2AuICBUaGUgZGVmYXVsdCBzaXplIGlzIDE2Mzg0LgogCiAKLS4uIGZ1bmN0aW9uOjogZGVjb21wcmVzc29iaihbd2JpdHNdKQorLi4gZnVuY3Rpb246OiBkZWNvbXByZXNzb2JqKHdiaXRzPTE1WywgemRpY3RdKQogCiAgICBSZXR1cm5zIGEgZGVjb21wcmVzc2lvbiBvYmplY3QsIHRvIGJlIHVzZWQgZm9yIGRlY29tcHJlc3NpbmcgZGF0YSBzdHJlYW1zIHRoYXQKLSAgIHdvbid0IGZpdCBpbnRvIG1lbW9yeSBhdCBvbmNlLiAgVGhlICp3Yml0cyogcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBzaXplIG9mIHRoZQotICAgd2luZG93IGJ1ZmZlci4KKyAgIHdvbid0IGZpdCBpbnRvIG1lbW9yeSBhdCBvbmNlLgorCisgICBUaGUgKndiaXRzKiBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIHNpemUgb2YgdGhlIHdpbmRvdyBidWZmZXIuCisKKyAgIFRoZSAqemRpY3QqIHBhcmFtZXRlciBzcGVjaWZpZXMgYSBwcmVkZWZpbmVkIGNvbXByZXNzaW9uIGRpY3Rpb25hcnkuIElmCisgICBwcm92aWRlZCwgdGhpcyBtdXN0IGJlIHRoZSBzYW1lIGRpY3Rpb25hcnkgYXMgd2FzIHVzZWQgYnkgdGhlIGNvbXByZXNzb3IgdGhhdAorICAgcHJvZHVjZWQgdGhlIGRhdGEgdGhhdCBpcyB0byBiZSBkZWNvbXByZXNzZWQuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBJZiAqemRpY3QqIGlzIGEgbXV0YWJsZSBvYmplY3QgKHN1Y2ggYXMgYSA6Y2xhc3M6YGJ5dGVhcnJheWApLCB5b3UgbXVzdCBub3QKKyAgICAgIG1vZGlmeSBpdHMgY29udGVudHMgYmV0d2VlbiB0aGUgY2FsbCB0byA6ZnVuYzpgZGVjb21wcmVzc29iamAgYW5kIHRoZSBmaXJzdAorICAgICAgY2FsbCB0byB0aGUgZGVjb21wcmVzc29yJ3MgYGBkZWNvbXByZXNzKClgYCBtZXRob2QuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKnpkaWN0KiBwYXJhbWV0ZXIuCisKIAogQ29tcHJlc3Npb24gb2JqZWN0cyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKIApAQCAtMTUxLDcgKzE5Miw3IEBACiAgICBjb21wcmVzcyBhIHNldCBvZiBkYXRhIHRoYXQgc2hhcmUgYSBjb21tb24gaW5pdGlhbCBwcmVmaXguCiAKIAotRGVjb21wcmVzc2lvbiBvYmplY3RzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBtZXRob2RzLCBhbmQgdHdvIGF0dHJpYnV0ZXM6CitEZWNvbXByZXNzaW9uIG9iamVjdHMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXM6CiAKIAogLi4gYXR0cmlidXRlOjogRGVjb21wcmVzcy51bnVzZWRfZGF0YQpAQCAtMTYxLDEzICsyMDIsNiBAQAogICAgYXZhaWxhYmxlLiAgSWYgdGhlIHdob2xlIGJ5dGVzdHJpbmcgdHVybmVkIG91dCB0byBjb250YWluIGNvbXByZXNzZWQgZGF0YSwgdGhpcyBpcwogICAgYGBiIiJgYCwgYW4gZW1wdHkgYnl0ZXMgb2JqZWN0LgogCi0gICBUaGUgb25seSB3YXkgdG8gZGV0ZXJtaW5lIHdoZXJlIGEgYnl0ZXN0cmluZyBvZiBjb21wcmVzc2VkIGRhdGEgZW5kcyBpcyBieSBhY3R1YWxseQotICAgZGVjb21wcmVzc2luZyBpdC4gIFRoaXMgbWVhbnMgdGhhdCB3aGVuIGNvbXByZXNzZWQgZGF0YSBpcyBjb250YWluZWQgcGFydCBvZiBhCi0gICBsYXJnZXIgZmlsZSwgeW91IGNhbiBvbmx5IGZpbmQgdGhlIGVuZCBvZiBpdCBieSByZWFkaW5nIGRhdGEgYW5kIGZlZWRpbmcgaXQKLSAgIGZvbGxvd2VkIGJ5IHNvbWUgbm9uLWVtcHR5IGJ5dGVzdHJpbmcgaW50byBhIGRlY29tcHJlc3Npb24gb2JqZWN0J3MKLSAgIDptZXRoOmBkZWNvbXByZXNzYCBtZXRob2QgdW50aWwgdGhlIDphdHRyOmB1bnVzZWRfZGF0YWAgYXR0cmlidXRlIGlzIG5vIGxvbmdlcgotICAgZW1wdHkuCi0KIAogLi4gYXR0cmlidXRlOjogRGVjb21wcmVzcy51bmNvbnN1bWVkX3RhaWwKIApAQCAtMTc4LDYgKzIxMiwxNyBAQAogICAgOm1ldGg6YGRlY29tcHJlc3NgIG1ldGhvZCBjYWxsIGluIG9yZGVyIHRvIGdldCBjb3JyZWN0IG91dHB1dC4KIAogCisuLiBhdHRyaWJ1dGU6OiBEZWNvbXByZXNzLmVvZgorCisgICBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBlbmQgb2YgdGhlIGNvbXByZXNzZWQgZGF0YSBzdHJlYW0gaGFzIGJlZW4KKyAgIHJlYWNoZWQuCisKKyAgIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhIHByb3Blcmx5LWZvcm1lZCBjb21wcmVzc2VkCisgICBzdHJlYW0sIGFuZCBhbiBpbmNvbXBsZXRlIG9yIHRydW5jYXRlZCBvbmUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIG1ldGhvZDo6IERlY29tcHJlc3MuZGVjb21wcmVzcyhkYXRhWywgbWF4X2xlbmd0aF0pCiAKICAgIERlY29tcHJlc3MgKmRhdGEqLCByZXR1cm5pbmcgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgdW5jb21wcmVzc2VkIGRhdGEKQEAgLTIxMiw2ICsyNTcsMjQgQEAKICAgIHNlZWtzIGludG8gdGhlIHN0cmVhbSBhdCBhIGZ1dHVyZSBwb2ludC4KIAogCitJbmZvcm1hdGlvbiBhYm91dCB0aGUgdmVyc2lvbiBvZiB0aGUgemxpYiBsaWJyYXJ5IGluIHVzZSBpcyBhdmFpbGFibGUgdGhyb3VnaAordGhlIGZvbGxvd2luZyBjb25zdGFudHM6CisKKworLi4gZGF0YTo6IFpMSUJfVkVSU0lPTgorCisgICBUaGUgdmVyc2lvbiBzdHJpbmcgb2YgdGhlIHpsaWIgbGlicmFyeSB0aGF0IHdhcyB1c2VkIGZvciBidWlsZGluZyB0aGUgbW9kdWxlLgorICAgVGhpcyBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIHpsaWIgbGlicmFyeSBhY3R1YWxseSB1c2VkIGF0IHJ1bnRpbWUsIHdoaWNoCisgICBpcyBhdmFpbGFibGUgYXMgOmNvbnN0OmBaTElCX1JVTlRJTUVfVkVSU0lPTmAuCisKKworLi4gZGF0YTo6IFpMSUJfUlVOVElNRV9WRVJTSU9OCisKKyAgIFRoZSB2ZXJzaW9uIHN0cmluZyBvZiB0aGUgemxpYiBsaWJyYXJ5IGFjdHVhbGx5IGxvYWRlZCBieSB0aGUgaW50ZXJwcmV0ZXIuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIHNlZWFsc286OgogCiAgICBNb2R1bGUgOm1vZDpgZ3ppcGAKZGlmZiAtLWdpdCBhL0RvYy9saWNlbnNlLnJzdCBiL0RvYy9saWNlbnNlLnJzdAppbmRleCBhNDRmYTA0Li41YjdmY2JkIDEwMDY0NAotLS0gYS9Eb2MvbGljZW5zZS5yc3QKKysrIGIvRG9jL2xpY2Vuc2UucnN0CkBAIC0xMjAsNiArMTIwLDggQEAKICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCiB8IDMuMi4zICAgICAgICAgIHwgMy4yLjIgICAgICAgIHwgMjAxMiAgICAgICB8IFBTRiAgICAgICAgfCB5ZXMgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKK3wgMy4zLjAgICAgICAgICAgfCAzLjIgICAgICAgICAgfCAyMDEyICAgICAgIHwgUFNGICAgICAgICB8IHllcyAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwogCiAuLiBub3RlOjoKIApAQCAtMTQ4LDcgKzE1MCw3IEBACiAgICBhbmFseXplLCB0ZXN0LCBwZXJmb3JtIGFuZC9vciBkaXNwbGF5IHB1YmxpY2x5LCBwcmVwYXJlIGRlcml2YXRpdmUgd29ya3MsCiAgICBkaXN0cmlidXRlLCBhbmQgb3RoZXJ3aXNlIHVzZSBQeXRob24gfHJlbGVhc2V8IGFsb25lIG9yIGluIGFueSBkZXJpdmF0aXZlCiAgICB2ZXJzaW9uLCBwcm92aWRlZCwgaG93ZXZlciwgdGhhdCBQU0YncyBMaWNlbnNlIEFncmVlbWVudCBhbmQgUFNGJ3Mgbm90aWNlIG9mCi0gICBjb3B5cmlnaHQsIGkuZS4sICJDb3B5cmlnaHQgwqkgMjAwMS0yMDEyIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBBbGwgUmlnaHRzCisgICBjb3B5cmlnaHQsIGkuZS4sICJDb3B5cmlnaHQgwqkgMjAwMS0yMDEzIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBBbGwgUmlnaHRzCiAgICBSZXNlcnZlZCIgYXJlIHJldGFpbmVkIGluIFB5dGhvbiB8cmVsZWFzZXwgYWxvbmUgb3IgaW4gYW55IGRlcml2YXRpdmUgdmVyc2lvbgogICAgcHJlcGFyZWQgYnkgTGljZW5zZWUuCiAKZGlmZiAtLWdpdCBhL0RvYy9tYWtlLmJhdCBiL0RvYy9tYWtlLmJhdAppbmRleCA0ZWEyZDUxLi5hMjIyMGMwIDEwMDY0NAotLS0gYS9Eb2MvbWFrZS5iYXQKKysrIGIvRG9jL21ha2UuYmF0CkBAIC0zNyw3ICszNyw3IEBACiBzdm4gY28gJVNWTlJPT1QlL2V4dGVybmFsL1NwaGlueC0xLjAuNy9zcGhpbnggdG9vbHMvc3BoaW54CiBzdm4gY28gJVNWTlJPT1QlL2V4dGVybmFsL2RvY3V0aWxzLTAuNi9kb2N1dGlscyB0b29scy9kb2N1dGlscwogc3ZuIGNvICVTVk5ST09UJS9leHRlcm5hbC9KaW5qYS0yLjMuMS9qaW5qYTIgdG9vbHMvamluamEyCi1zdm4gY28gJVNWTlJPT1QlL2V4dGVybmFsL1B5Z21lbnRzLTEuMy4xL3B5Z21lbnRzIHRvb2xzL3B5Z21lbnRzCitzdm4gY28gJVNWTlJPT1QlL2V4dGVybmFsL1B5Z21lbnRzLTEuNWRldi0yMDEyMDkzMC9weWdtZW50cyB0b29scy9weWdtZW50cwogZ290byBlbmQKIAogOnVwZGF0ZQpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0IGIvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0CmluZGV4IDRiYWQyZDUuLjdjNTEwNjggMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QKQEAgLTM1LDEyICszNSwxOSBAQAogRXZlcnkgb2JqZWN0IGhhcyBhbiBpZGVudGl0eSwgYSB0eXBlIGFuZCBhIHZhbHVlLiAgQW4gb2JqZWN0J3MgKmlkZW50aXR5KiBuZXZlcgogY2hhbmdlcyBvbmNlIGl0IGhhcyBiZWVuIGNyZWF0ZWQ7IHlvdSBtYXkgdGhpbmsgb2YgaXQgYXMgdGhlIG9iamVjdCdzIGFkZHJlc3MgaW4KIG1lbW9yeS4gIFRoZSAnOmtleXdvcmQ6YGlzYCcgb3BlcmF0b3IgY29tcGFyZXMgdGhlIGlkZW50aXR5IG9mIHR3byBvYmplY3RzOyB0aGUKLTpmdW5jOmBpZGAgZnVuY3Rpb24gcmV0dXJucyBhbiBpbnRlZ2VyIHJlcHJlc2VudGluZyBpdHMgaWRlbnRpdHkgKGN1cnJlbnRseQotaW1wbGVtZW50ZWQgYXMgaXRzIGFkZHJlc3MpLiBBbiBvYmplY3QncyA6ZGZuOmB0eXBlYCBpcyBhbHNvIHVuY2hhbmdlYWJsZS4gWyNdXworOmZ1bmM6YGlkYCBmdW5jdGlvbiByZXR1cm5zIGFuIGludGVnZXIgcmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eS4KKworLi4gaW1wbC1kZXRhaWw6OgorCisgICBGb3IgQ1B5dGhvbiwgYGBpZCh4KWBgIGlzIHRoZSBtZW1vcnkgYWRkcmVzcyB3aGVyZSBgYHhgYCBpcyBzdG9yZWQuCisKIEFuIG9iamVjdCdzIHR5cGUgZGV0ZXJtaW5lcyB0aGUgb3BlcmF0aW9ucyB0aGF0IHRoZSBvYmplY3Qgc3VwcG9ydHMgKGUuZy4sICJkb2VzCiBpdCBoYXZlIGEgbGVuZ3RoPyIpIGFuZCBhbHNvIGRlZmluZXMgdGhlIHBvc3NpYmxlIHZhbHVlcyBmb3Igb2JqZWN0cyBvZiB0aGF0CiB0eXBlLiAgVGhlIDpmdW5jOmB0eXBlYCBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdCdzIHR5cGUgKHdoaWNoIGlzIGFuIG9iamVjdAotaXRzZWxmKS4gIFRoZSAqdmFsdWUqIG9mIHNvbWUgb2JqZWN0cyBjYW4gY2hhbmdlLiAgT2JqZWN0cyB3aG9zZSB2YWx1ZSBjYW4KK2l0c2VsZikuICBMaWtlIGl0cyBpZGVudGl0eSwgYW4gb2JqZWN0J3MgOmRmbjpgdHlwZWAgaXMgYWxzbyB1bmNoYW5nZWFibGUuCitbI11fCisKK1RoZSAqdmFsdWUqIG9mIHNvbWUgb2JqZWN0cyBjYW4gY2hhbmdlLiAgT2JqZWN0cyB3aG9zZSB2YWx1ZSBjYW4KIGNoYW5nZSBhcmUgc2FpZCB0byBiZSAqbXV0YWJsZSo7IG9iamVjdHMgd2hvc2UgdmFsdWUgaXMgdW5jaGFuZ2VhYmxlIG9uY2UgdGhleQogYXJlIGNyZWF0ZWQgYXJlIGNhbGxlZCAqaW1tdXRhYmxlKi4gKFRoZSB2YWx1ZSBvZiBhbiBpbW11dGFibGUgY29udGFpbmVyIG9iamVjdAogdGhhdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhIG11dGFibGUgb2JqZWN0IGNhbiBjaGFuZ2Ugd2hlbiB0aGUgbGF0dGVyJ3MgdmFsdWUKQEAgLTI2NywyNSArMjc0LDI3IEBACiAKICAgICAgIFRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXM6CiAKKyAgICAgIC4uIGluZGV4OjoKKyAgICAgICAgIHNpbmdsZTogc3RyaW5nOyBpbW11dGFibGUgc2VxdWVuY2VzCisKICAgICAgIFN0cmluZ3MKICAgICAgICAgIC4uIGluZGV4OjoKICAgICAgICAgICAgIGJ1aWx0aW46IGNocgogICAgICAgICAgICAgYnVpbHRpbjogb3JkCi0gICAgICAgICAgICBidWlsdGluOiBzdHIKICAgICAgICAgICAgIHNpbmdsZTogY2hhcmFjdGVyCiAgICAgICAgICAgICBzaW5nbGU6IGludGVnZXIKICAgICAgICAgICAgIHNpbmdsZTogVW5pY29kZQogCi0gICAgICAgICBUaGUgaXRlbXMgb2YgYSBzdHJpbmcgb2JqZWN0IGFyZSBVbmljb2RlIGNvZGUgdW5pdHMuICBBIFVuaWNvZGUgY29kZQotICAgICAgICAgdW5pdCBpcyByZXByZXNlbnRlZCBieSBhIHN0cmluZyBvYmplY3Qgb2Ygb25lIGl0ZW0gYW5kIGNhbiBob2xkIGVpdGhlcgotICAgICAgICAgYSAxNi1iaXQgb3IgMzItYml0IHZhbHVlIHJlcHJlc2VudGluZyBhIFVuaWNvZGUgb3JkaW5hbCAodGhlIG1heGltdW0KLSAgICAgICAgIHZhbHVlIGZvciB0aGUgb3JkaW5hbCBpcyBnaXZlbiBpbiBgYHN5cy5tYXh1bmljb2RlYGAsIGFuZCBkZXBlbmRzIG9uCi0gICAgICAgICBob3cgUHl0aG9uIGlzIGNvbmZpZ3VyZWQgYXQgY29tcGlsZSB0aW1lKS4gIFN1cnJvZ2F0ZSBwYWlycyBtYXkgYmUKLSAgICAgICAgIHByZXNlbnQgaW4gdGhlIFVuaWNvZGUgb2JqZWN0LCBhbmQgd2lsbCBiZSByZXBvcnRlZCBhcyB0d28gc2VwYXJhdGUKLSAgICAgICAgIGl0ZW1zLiAgVGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyA6ZnVuYzpgY2hyYCBhbmQgOmZ1bmM6YG9yZGAgY29udmVydAotICAgICAgICAgYmV0d2VlbiBjb2RlIHVuaXRzIGFuZCBub25uZWdhdGl2ZSBpbnRlZ2VycyByZXByZXNlbnRpbmcgdGhlIFVuaWNvZGUKLSAgICAgICAgIG9yZGluYWxzIGFzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgU3RhbmRhcmQgMy4wLiBDb252ZXJzaW9uIGZyb20gYW5kIHRvCi0gICAgICAgICBvdGhlciBlbmNvZGluZ3MgYXJlIHBvc3NpYmxlIHRocm91Z2ggdGhlIHN0cmluZyBtZXRob2QgOm1ldGg6YGVuY29kZWAuCisgICAgICAgICBBIHN0cmluZyBpcyBhIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGF0IHJlcHJlc2VudCBVbmljb2RlIGNvZGVwb2ludHMuCisgICAgICAgICBBbGwgdGhlIGNvZGVwb2ludHMgaW4gcmFuZ2UgYGBVKzAwMDAgLSBVKzEwRkZGRmBgIGNhbiBiZSByZXByZXNlbnRlZAorICAgICAgICAgaW4gYSBzdHJpbmcuICBQeXRob24gZG9lc24ndCBoYXZlIGEgOmM6dHlwZTpgY2hyYCB0eXBlLCBhbmQKKyAgICAgICAgIGV2ZXJ5IGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nIGlzIHJlcHJlc2VudGVkIGFzIGEgc3RyaW5nIG9iamVjdAorICAgICAgICAgd2l0aCBsZW5ndGggYGAxYGAuICBUaGUgYnVpbHQtaW4gZnVuY3Rpb24gOmZ1bmM6YG9yZGAgY29udmVydHMgYQorICAgICAgICAgY2hhcmFjdGVyIHRvIGl0cyBjb2RlcG9pbnQgKGFzIGFuIGludGVnZXIpOyA6ZnVuYzpgY2hyYCBjb252ZXJ0cworICAgICAgICAgYW4gaW50ZWdlciBpbiByYW5nZSBgYDAgLSAxMEZGRkZgYCB0byB0aGUgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIuCisgICAgICAgICA6bWV0aDpgc3RyLmVuY29kZWAgY2FuIGJlIHVzZWQgdG8gY29udmVydCBhIDpjbGFzczpgc3RyYCB0bworICAgICAgICAgOmNsYXNzOmBieXRlc2AgdXNpbmcgdGhlIGdpdmVuIGVuY29kaW5nLCBhbmQgOm1ldGg6YGJ5dGVzLmRlY29kZWAgY2FuCisgICAgICAgICBiZSB1c2VkIHRvIGFjaGlldmUgdGhlIG9wcG9zaXRlLgogCiAgICAgICBUdXBsZXMKICAgICAgICAgIC4uIGluZGV4OjoKQEAgLTQ0OCw2ICs0NTcsMTEgQEAKICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rCiAgICAgICB8IDphdHRyOmBfX25hbWVfX2AgICAgICAgIHwgVGhlIGZ1bmN0aW9uJ3MgbmFtZSAgICAgICAgICAgfCBXcml0YWJsZSAgfAogICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSsKKyAgICAgIHwgOmF0dHI6YF9fcXVhbG5hbWVfX2AgICAgfCBUaGUgZnVuY3Rpb24ncyAgICAgICAgICAgICAgICB8IFdyaXRhYmxlICB8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgOnRlcm06YHF1YWxpZmllZCBuYW1lYCAgICAgICAgfCAgICAgICAgICAgfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMgICAgICAgICB8ICAgICAgICAgICB8CisgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKwogICAgICAgfCA6YXR0cjpgX19tb2R1bGVfX2AgICAgICB8IFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlICAgIHwgV3JpdGFibGUgIHwKICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbiB3YXMgZGVmaW5lZCBpbiwgb3IgICB8ICAgICAgICAgICB8CiAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBOb25lYGAgaWYgdW5hdmFpbGFibGUuICAgICAgfCAgICAgICAgICAgfApAQCAtNjM5LDE3ICs2NTMsMjAgQEAKICAgICAgIHN0YXRlbWVudDogaW1wb3J0CiAgICAgICBvYmplY3Q6IG1vZHVsZQogCi0gICBNb2R1bGVzIGFyZSBpbXBvcnRlZCBieSB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IChzZWUgc2VjdGlvbgotICAgOnJlZjpgaW1wb3J0YCkuIEEgbW9kdWxlIG9iamVjdCBoYXMgYQotICAgbmFtZXNwYWNlIGltcGxlbWVudGVkIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QgKHRoaXMgaXMgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZAotICAgYnkgdGhlIF9fZ2xvYmFsc19fIGF0dHJpYnV0ZSBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlKS4gIEF0dHJpYnV0ZQotICAgcmVmZXJlbmNlcyBhcmUgdHJhbnNsYXRlZCB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgYGBtLnhgYCBpcwotICAgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXWBgLiBBIG1vZHVsZSBvYmplY3QgZG9lcyBub3QgY29udGFpbiB0aGUgY29kZQotICAgb2JqZWN0IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlIChzaW5jZSBpdCBpc24ndCBuZWVkZWQgb25jZSB0aGUKLSAgIGluaXRpYWxpemF0aW9uIGlzIGRvbmUpLgorICAgTW9kdWxlcyBhcmUgYSBiYXNpYyBvcmdhbml6YXRpb25hbCB1bml0IG9mIFB5dGhvbiBjb2RlLCBhbmQgYXJlIGNyZWF0ZWQgYnkKKyAgIHRoZSA6cmVmOmBpbXBvcnQgc3lzdGVtIDxpbXBvcnRzeXN0ZW0+YCBhcyBpbnZva2VkIGVpdGhlciBieSB0aGUKKyAgIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCAoc2VlIDprZXl3b3JkOmBpbXBvcnRgKSwgb3IgYnkgY2FsbGluZworICAgZnVuY3Rpb25zIHN1Y2ggYXMgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCBhbmQgYnVpbHQtaW4KKyAgIDpmdW5jOmBfX2ltcG9ydF9fYC4gIEEgbW9kdWxlIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYQorICAgZGljdGlvbmFyeSBvYmplY3QgKHRoaXMgaXMgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZCBieSB0aGUgYGBfX2dsb2JhbHNfX2BgCisgICBhdHRyaWJ1dGUgb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSkuICBBdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUKKyAgIHRyYW5zbGF0ZWQgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sIGBgbS54YGAgaXMgZXF1aXZhbGVudCB0bworICAgYGBtLl9fZGljdF9fWyJ4Il1gYC4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGUgb2JqZWN0IHVzZWQKKyAgIHRvIGluaXRpYWxpemUgdGhlIG1vZHVsZSAoc2luY2UgaXQgaXNuJ3QgbmVlZGVkIG9uY2UgdGhlIGluaXRpYWxpemF0aW9uIGlzCisgICBkb25lKS4KIAotICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIGRpY3Rpb25hcnksIGUuZy4sIGBgbS54ID0KLSAgIDFgYCBpcyBlcXVpdmFsZW50IHRvIGBgbS5fX2RpY3RfX1sieCJdID0gMWBgLgorICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIGRpY3Rpb25hcnksIGUuZy4sCisgICBgYG0ueCA9IDFgYCBpcyBlcXVpdmFsZW50IHRvIGBgbS5fX2RpY3RfX1sieCJdID0gMWBgLgogCiAgICAuLiBpbmRleDo6IHNpbmdsZTogX19kaWN0X18gKG1vZHVsZSBhdHRyaWJ1dGUpCiAKQEAgLTY3MSwxMSArNjg4LDEyIEBACiAKICAgIFByZWRlZmluZWQgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzOiA6YXR0cjpgX19uYW1lX19gIGlzIHRoZSBtb2R1bGUncyBuYW1lOwogICAgOmF0dHI6YF9fZG9jX19gIGlzIHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgYGBOb25lYGAgaWYKLSAgIHVuYXZhaWxhYmxlOyA6YXR0cjpgX19maWxlX19gIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoIHRoZSBtb2R1bGUKLSAgIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZSA6YXR0cjpgX19maWxlX19gIGF0dHJpYnV0ZSBpcyBub3QKLSAgIHByZXNlbnQgZm9yIEMgbW9kdWxlcyB0aGF0IGFyZSBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yCi0gICBleHRlbnNpb24gbW9kdWxlcyBsb2FkZWQgZHluYW1pY2FsbHkgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LCBpdCBpcyB0aGUgcGF0aG5hbWUKLSAgIG9mIHRoZSBzaGFyZWQgbGlicmFyeSBmaWxlLgorICAgdW5hdmFpbGFibGU7IDphdHRyOmBfX2ZpbGVfX2AgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggdGhlCisgICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlIDphdHRyOmBfX2ZpbGVfX2AKKyAgIGF0dHJpYnV0ZSBtYXkgYmUgbWlzc2luZyBmb3IgY2VydGFpbiB0eXBlcyBvZiBtb2R1bGVzLCBzdWNoIGFzIEMgbW9kdWxlcworICAgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvciBleHRlbnNpb24gbW9kdWxlcworICAgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXQgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBzaGFyZWQKKyAgIGxpYnJhcnkgZmlsZS4KIAogQ3VzdG9tIGNsYXNzZXMKICAgIEN1c3RvbSBjbGFzcyB0eXBlcyBhcmUgdHlwaWNhbGx5IGNyZWF0ZWQgYnkgY2xhc3MgZGVmaW5pdGlvbnMgKHNlZSBzZWN0aW9uCkBAIC0xMTUzLDcgKzExNzEsNyBAQAogICAgQ2FsbGVkIGJ5IDpmdW5jOmBzdHIob2JqZWN0KSA8c3RyPmAgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMKICAgIDpmdW5jOmBmb3JtYXRgIGFuZCA6ZnVuYzpgcHJpbnRgIHRvIGNvbXB1dGUgdGhlICJpbmZvcm1hbCIgb3IgbmljZWx5CiAgICBwcmludGFibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhCi0gICA6cmVmOmBzdHJpbmcgPHR5cGVzc2VxPmAgb2JqZWN0LgorICAgOnJlZjpgc3RyaW5nIDx0ZXh0c2VxPmAgb2JqZWN0LgogCiAgICBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gOm1ldGg6YG9iamVjdC5fX3JlcHJfX2AgaW4gdGhhdCB0aGVyZSBpcyBubwogICAgZXhwZWN0YXRpb24gdGhhdCA6bWV0aDpgX19zdHJfX2AgcmV0dXJuIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb246IGEgbW9yZQpAQCAtMTE3MiwxNCArMTE5MCwxNCBAQAogICAgQ2FsbGVkIGJ5IDpmdW5jOmBieXRlc2AgdG8gY29tcHV0ZSBhIGJ5dGUtc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuCiAgICBvYmplY3QuIFRoaXMgc2hvdWxkIHJldHVybiBhIGBgYnl0ZXNgYCBvYmplY3QuCiAKKyAgIC4uIGluZGV4OjoKKyAgICAgIHNpbmdsZTogc3RyaW5nOyBfX2Zvcm1hdF9fKCkgKG9iamVjdCBtZXRob2QpCisgICAgICBwYWlyOiBzdHJpbmc7IGNvbnZlcnNpb24KKyAgICAgIGJ1aWx0aW46IHByaW50CisKIAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpCiAKLSAgIC4uIGluZGV4OjoKLSAgICAgIHBhaXI6IHN0cmluZzsgY29udmVyc2lvbgotICAgICAgYnVpbHRpbjogc3RyCi0gICAgICBidWlsdGluOiBwcmludAotCiAgICBDYWxsZWQgYnkgdGhlIDpmdW5jOmBmb3JtYXRgIGJ1aWx0LWluIGZ1bmN0aW9uIChhbmQgYnkgZXh0ZW5zaW9uLCB0aGUKICAgIDptZXRoOmBzdHIuZm9ybWF0YCBtZXRob2Qgb2YgY2xhc3MgOmNsYXNzOmBzdHJgKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCIKICAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXMKQEAgLTEyNTgsMTAgKzEyNzYsMTAgQEAKICAgIGltbXV0YWJsZSAoaWYgdGhlIG9iamVjdCdzIGhhc2ggdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgd3JvbmcgaGFzaAogICAgYnVja2V0KS4KIAotCiAgICBVc2VyLWRlZmluZWQgY2xhc3NlcyBoYXZlIDptZXRoOmBfX2VxX19gIGFuZCA6bWV0aDpgX19oYXNoX19gIG1ldGhvZHMKICAgIGJ5IGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgd2l0aCB0aGVtc2VsdmVzKQotICAgYW5kIGBgeC5fX2hhc2hfXygpYGAgcmV0dXJucyBgYGlkKHgpYGAuCisgICBhbmQgYGB4Ll9faGFzaF9fKClgYCByZXR1cm5zIGFuIGFwcHJvcHJpYXRlIHZhbHVlIHN1Y2ggdGhhdCBgYHggPT0geWBgCisgICBpbXBsaWVzIGJvdGggdGhhdCBgYHggaXMgeWBgIGFuZCBgYGhhc2goeCkgPT0gaGFzaCh5KWBgLgogCiAgICBBIGNsYXNzIHRoYXQgb3ZlcnJpZGVzIDptZXRoOmBfX2VxX19gIGFuZCBkb2VzIG5vdCBkZWZpbmUgOm1ldGg6YF9faGFzaF9fYAogICAgd2lsbCBoYXZlIGl0cyA6bWV0aDpgX19oYXNoX19gIGltcGxpY2l0bHkgc2V0IHRvIGBgTm9uZWBgLiAgV2hlbiB0aGUKQEAgLTEyODAsNyArMTI5OCwyNyBAQAogICAgYSA6ZXhjOmBUeXBlRXJyb3JgIHdvdWxkIGJlIGluY29ycmVjdGx5IGlkZW50aWZpZWQgYXMgaGFzaGFibGUgYnkKICAgIGFuIGBgaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKWBgIGNhbGwuCiAKLSAgIFNlZSBhbHNvIHRoZSA6b3B0aW9uOmAtUmAgY29tbWFuZC1saW5lIG9wdGlvbi4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIEJ5IGRlZmF1bHQsIHRoZSA6bWV0aDpgX19oYXNoX19gIHZhbHVlcyBvZiBzdHIsIGJ5dGVzIGFuZCBkYXRldGltZQorICAgICAgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlIHJhbmRvbSB2YWx1ZS4gIEFsdGhvdWdoIHRoZXkKKyAgICAgIHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCBQeXRob24gcHJvY2VzcywgdGhleSBhcmUgbm90CisgICAgICBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkIGludm9jYXRpb25zIG9mIFB5dGhvbi4KKworICAgICAgVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhIGRlbmlhbC1vZi1zZXJ2aWNlIGNhdXNlZAorICAgICAgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZSB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEKKyAgICAgIGRpY3QgaW5zZXJ0aW9uLCBPKG5eMikgY29tcGxleGl0eS4gIFNlZQorICAgICAgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvciBkZXRhaWxzLgorCisgICAgICBDaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBpdGVyYXRpb24gb3JkZXIgb2YgZGljdHMsIHNldHMgYW5kCisgICAgICBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSBndWFyYW50ZWVzIGFib3V0IHRoaXMgb3JkZXJpbmcKKyAgICAgIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuIDMyLWJpdCBhbmQgNjQtYml0IGJ1aWxkcykuCisKKyAgICAgIFNlZSBhbHNvIDplbnZ2YXI6YFBZVEhPTkhBU0hTRUVEYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCiAKIAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fYm9vbF9fKHNlbGYpCkBAIC0xMzYxLDcgKzEzOTksOCBAQAogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19kaXJfXyhzZWxmKQogCi0gICBDYWxsZWQgd2hlbiA6ZnVuYzpgZGlyYCBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gIEEgbGlzdCBtdXN0IGJlIHJldHVybmVkLgorICAgQ2FsbGVkIHdoZW4gOmZ1bmM6YGRpcmAgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuIEEgc2VxdWVuY2UgbXVzdCBiZQorICAgcmV0dXJuZWQuIDpmdW5jOmBkaXJgIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhIGxpc3QgYW5kIHNvcnRzIGl0LgogCiAKIC4uIF9kZXNjcmlwdG9yczoKQEAgLTE1MzIsNTMgKzE1NzEsMTE1IEBACiBDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQnkgZGVmYXVsdCwgY2xhc3NlcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgOmZ1bmM6YHR5cGVgLiBBIGNsYXNzIGRlZmluaXRpb24gaXMKLXJlYWQgaW50byBhIHNlcGFyYXRlIG5hbWVzcGFjZSBhbmQgdGhlIHZhbHVlIG9mIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhlCi1yZXN1bHQgb2YgYGB0eXBlKG5hbWUsIGJhc2VzLCBkaWN0KWBgLgorQnkgZGVmYXVsdCwgY2xhc3NlcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgOmZ1bmM6YHR5cGVgLiBUaGUgY2xhc3MgYm9keSBpcworZXhlY3V0ZWQgaW4gYSBuZXcgbmFtZXNwYWNlIGFuZCB0aGUgY2xhc3MgbmFtZSBpcyBib3VuZCBsb2NhbGx5IHRvIHRoZQorcmVzdWx0IG9mIGBgdHlwZShuYW1lLCBiYXNlcywgbmFtZXNwYWNlKWBgLgogCi1XaGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIGlzIHJlYWQsIGlmIGEgY2FsbGFibGUgYGBtZXRhY2xhc3NgYCBrZXl3b3JkIGFyZ3VtZW50Ci1pcyBwYXNzZWQgYWZ0ZXIgdGhlIGJhc2VzIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLCB0aGUgY2FsbGFibGUgZ2l2ZW4gd2lsbCBiZQotY2FsbGVkIGluc3RlYWQgb2YgOmZ1bmM6YHR5cGVgLiAgSWYgb3RoZXIga2V5d29yZCBhcmd1bWVudHMgYXJlIHBhc3NlZCwgdGhleQotd2lsbCBhbHNvIGJlIHBhc3NlZCB0byB0aGUgbWV0YWNsYXNzLiAgVGhpcyBhbGxvd3MgY2xhc3NlcyBvciBmdW5jdGlvbnMgdG8gYmUKLXdyaXR0ZW4gd2hpY2ggbW9uaXRvciBvciBhbHRlciB0aGUgY2xhc3MgY3JlYXRpb24gcHJvY2VzczoKK1RoZSBjbGFzcyBjcmVhdGlvbiBwcm9jZXNzIGNhbiBiZSBjdXN0b21pc2VkIGJ5IHBhc3NpbmcgdGhlIGBgbWV0YWNsYXNzYGAKK2tleXdvcmQgYXJndW1lbnQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gbGluZSwgb3IgYnkgaW5oZXJpdGluZyBmcm9tIGFuCitleGlzdGluZyBjbGFzcyB0aGF0IGluY2x1ZGVkIHN1Y2ggYW4gYXJndW1lbnQuIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwKK2JvdGggYGBNeUNsYXNzYGAgYW5kIGBgTXlTdWJjbGFzc2BgIGFyZSBpbnN0YW5jZXMgb2YgYGBNZXRhYGA6OgogCi0qIE1vZGlmeWluZyB0aGUgY2xhc3MgZGljdGlvbmFyeSBwcmlvciB0byB0aGUgY2xhc3MgYmVpbmcgY3JlYXRlZC4KKyAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgcGFzcwogCi0qIFJldHVybmluZyBhbiBpbnN0YW5jZSBvZiBhbm90aGVyIGNsYXNzIC0tIGVzc2VudGlhbGx5IHBlcmZvcm1pbmcgdGhlIHJvbGUgb2YgYQotICBmYWN0b3J5IGZ1bmN0aW9uLgorICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TWV0YSk6CisgICAgICAgcGFzcwogCi1UaGVzZSBzdGVwcyB3aWxsIGhhdmUgdG8gYmUgcGVyZm9ybWVkIGluIHRoZSBtZXRhY2xhc3MncyA6bWV0aDpgX19uZXdfX2AgbWV0aG9kCi0tLSA6bWV0aDpgdHlwZS5fX25ld19fYCBjYW4gdGhlbiBiZSBjYWxsZWQgZnJvbSB0aGlzIG1ldGhvZCB0byBjcmVhdGUgYSBjbGFzcwotd2l0aCBkaWZmZXJlbnQgcHJvcGVydGllcy4gIFRoaXMgZXhhbXBsZSBhZGRzIGEgbmV3IGVsZW1lbnQgdG8gdGhlIGNsYXNzCi1kaWN0aW9uYXJ5IGJlZm9yZSBjcmVhdGluZyB0aGUgY2xhc3M6OgorICAgY2xhc3MgTXlTdWJjbGFzcyhNeUNsYXNzKToKKyAgICAgICBwYXNzCiAKLSAgY2xhc3MgbWV0YWNscyh0eXBlKToKLSAgICAgIGRlZiBfX25ld19fKG1jcywgbmFtZSwgYmFzZXMsIGRpY3QpOgotICAgICAgICAgIGRpY3RbJ2ZvbyddID0gJ21ldGFjbHMgd2FzIGhlcmUnCi0gICAgICAgICAgcmV0dXJuIHR5cGUuX19uZXdfXyhtY3MsIG5hbWUsIGJhc2VzLCBkaWN0KQorQW55IG90aGVyIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmUKK3Bhc3NlZCB0aHJvdWdoIHRvIGFsbCBtZXRhY2xhc3Mgb3BlcmF0aW9ucyBkZXNjcmliZWQgYmVsb3cuCiAKLVlvdSBjYW4gb2YgY291cnNlIGFsc28gb3ZlcnJpZGUgb3RoZXIgY2xhc3MgbWV0aG9kcyAob3IgYWRkIG5ldyBtZXRob2RzKTsgZm9yCi1leGFtcGxlIGRlZmluaW5nIGEgY3VzdG9tIDptZXRoOmBfX2NhbGxfX2AgbWV0aG9kIGluIHRoZSBtZXRhY2xhc3MgYWxsb3dzIGN1c3RvbQotYmVoYXZpb3Igd2hlbiB0aGUgY2xhc3MgaXMgY2FsbGVkLCBlLmcuIG5vdCBhbHdheXMgY3JlYXRpbmcgYSBuZXcgaW5zdGFuY2UuCitXaGVuIGEgY2xhc3MgZGVmaW5pdGlvbiBpcyBleGVjdXRlZCwgdGhlIGZvbGxvd2luZyBzdGVwcyBvY2N1cjoKIAotSWYgdGhlIG1ldGFjbGFzcyBoYXMgYSA6bWV0aDpgX19wcmVwYXJlX19gIGF0dHJpYnV0ZSAodXN1YWxseSBpbXBsZW1lbnRlZCBhcyBhCi1jbGFzcyBvciBzdGF0aWMgbWV0aG9kKSwgaXQgaXMgY2FsbGVkIGJlZm9yZSB0aGUgY2xhc3MgYm9keSBpcyBldmFsdWF0ZWQgd2l0aAotdGhlIG5hbWUgb2YgdGhlIGNsYXNzIGFuZCBhIHR1cGxlIG9mIGl0cyBiYXNlcyBmb3IgYXJndW1lbnRzLiAgSXQgc2hvdWxkIHJldHVybgotYW4gb2JqZWN0IHRoYXQgc3VwcG9ydHMgdGhlIG1hcHBpbmcgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHN0b3JlIHRoZQotbmFtZXNwYWNlIG9mIHRoZSBjbGFzcy4gIFRoZSBkZWZhdWx0IGlzIGEgcGxhaW4gZGljdGlvbmFyeS4gIFRoaXMgY291bGQgYmUgdXNlZCwKLWZvciBleGFtcGxlLCB0byBrZWVwIHRyYWNrIG9mIHRoZSBvcmRlciB0aGF0IGNsYXNzIGF0dHJpYnV0ZXMgYXJlIGRlY2xhcmVkIGluIGJ5Ci1yZXR1cm5pbmcgYW4gb3JkZXJlZCBkaWN0aW9uYXJ5LgorKiB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGlzIGRldGVybWluZWQKKyogdGhlIGNsYXNzIG5hbWVzcGFjZSBpcyBwcmVwYXJlZAorKiB0aGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZAorKiB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQKIAotVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmb2xsb3dpbmcgcHJlY2VkZW5jZSBydWxlczoKK0RldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAotKiBJZiB0aGUgYGBtZXRhY2xhc3NgYCBrZXl3b3JkIGFyZ3VtZW50IGlzIHBhc3NlZCB3aXRoIHRoZSBiYXNlcywgaXQgaXMgdXNlZC4KK1RoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgZm9yIGEgY2xhc3MgZGVmaW5pdGlvbiBpcyBkZXRlcm1pbmVkIGFzIGZvbGxvd3M6CiAKLSogT3RoZXJ3aXNlLCBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgYmFzZSBjbGFzcywgaXRzIG1ldGFjbGFzcyBpcyB1c2VkLgorKiBpZiBubyBiYXNlcyBhbmQgbm8gZXhwbGljaXQgbWV0YWNsYXNzIGFyZSBnaXZlbiwgdGhlbiA6ZnVuYzpgdHlwZWAgaXMgdXNlZAorKiBpZiBhbiBleHBsaWNpdCBtZXRhY2xhc3MgaXMgZ2l2ZW4gYW5kIGl0IGlzICpub3QqIGFuIGluc3RhbmNlIG9mCisgIDpmdW5jOmB0eXBlYCwgdGhlbiBpdCBpcyB1c2VkIGRpcmVjdGx5IGFzIHRoZSBtZXRhY2xhc3MKKyogaWYgYW4gaW5zdGFuY2Ugb2YgOmZ1bmM6YHR5cGVgIGlzIGdpdmVuIGFzIHRoZSBleHBsaWNpdCBtZXRhY2xhc3MsIG9yCisgIGJhc2VzIGFyZSBkZWZpbmVkLCB0aGVuIHRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIHVzZWQKIAotKiBPdGhlcndpc2UsIHRoZSBkZWZhdWx0IG1ldGFjbGFzcyAoOmNsYXNzOmB0eXBlYCkgaXMgdXNlZC4KK1RoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIHNlbGVjdGVkIGZyb20gdGhlIGV4cGxpY2l0bHkgc3BlY2lmaWVkCittZXRhY2xhc3MgKGlmIGFueSkgYW5kIHRoZSBtZXRhY2xhc3NlcyAoaS5lLiBgYHR5cGUoY2xzKWBgKSBvZiBhbGwgc3BlY2lmaWVkCitiYXNlIGNsYXNzZXMuIFRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIG9uZSB3aGljaCBpcyBhIHN1YnR5cGUgb2YgKmFsbCoKK29mIHRoZXNlIGNhbmRpZGF0ZSBtZXRhY2xhc3Nlcy4gSWYgbm9uZSBvZiB0aGUgY2FuZGlkYXRlIG1ldGFjbGFzc2VzIG1lZXRzCit0aGF0IGNyaXRlcmlvbiwgdGhlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiB3aWxsIGZhaWwgd2l0aCBgYFR5cGVFcnJvcmBgLgorCisKK1ByZXBhcmluZyB0aGUgY2xhc3MgbmFtZXNwYWNlCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitPbmNlIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaGFzIGJlZW4gaWRlbnRpZmllZCwgdGhlbiB0aGUgY2xhc3MgbmFtZXNwYWNlCitpcyBwcmVwYXJlZC4gSWYgdGhlIG1ldGFjbGFzcyBoYXMgYSBgYF9fcHJlcGFyZV9fYGAgYXR0cmlidXRlLCBpdCBpcyBjYWxsZWQKK2FzIGBgbmFtZXNwYWNlID0gbWV0YWNsYXNzLl9fcHJlcGFyZV9fKG5hbWUsIGJhc2VzLCAqKmt3ZHMpYGAgKHdoZXJlIHRoZQorYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cywgaWYgYW55LCBjb21lIGZyb20gdGhlIGNsYXNzIGRlZmluaXRpb24pLgorCitJZiB0aGUgbWV0YWNsYXNzIGhhcyBubyBgYF9fcHJlcGFyZV9fYGAgYXR0cmlidXRlLCB0aGVuIHRoZSBjbGFzcyBuYW1lc3BhY2UKK2lzIGluaXRpYWxpc2VkIGFzIGFuIGVtcHR5IDpmdW5jOmBkaWN0YCBpbnN0YW5jZS4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDMxMTVgIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMwMDAKKyAgICAgIEludHJvZHVjZWQgdGhlIGBgX19wcmVwYXJlX19gYCBuYW1lc3BhY2UgaG9vaworCisKK0V4ZWN1dGluZyB0aGUgY2xhc3MgYm9keQorXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkIChhcHByb3hpbWF0ZWx5KSBhcworYGBleGVjKGJvZHksIGdsb2JhbHMoKSwgbmFtZXNwYWNlKWBgLiBUaGUga2V5IGRpZmZlcmVuY2UgZnJvbSBhIG5vcm1hbAorY2FsbCB0byA6ZnVuYzpgZXhlY2AgaXMgdGhhdCBsZXhpY2FsIHNjb3BpbmcgYWxsb3dzIHRoZSBjbGFzcyBib2R5IChpbmNsdWRpbmcKK2FueSBtZXRob2RzKSB0byByZWZlcmVuY2UgbmFtZXMgZnJvbSB0aGUgY3VycmVudCBhbmQgb3V0ZXIgc2NvcGVzIHdoZW4gdGhlCitjbGFzcyBkZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgYSBmdW5jdGlvbi4KKworSG93ZXZlciwgZXZlbiB3aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgdGhlIGZ1bmN0aW9uLCBtZXRob2RzCitkZWZpbmVkIGluc2lkZSB0aGUgY2xhc3Mgc3RpbGwgY2Fubm90IHNlZSBuYW1lcyBkZWZpbmVkIGF0IHRoZSBjbGFzcyBzY29wZS4KK0NsYXNzIHZhcmlhYmxlcyBtdXN0IGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGZpcnN0IHBhcmFtZXRlciBvZiBpbnN0YW5jZSBvcgorY2xhc3MgbWV0aG9kcywgYW5kIGNhbm5vdCBiZSBhY2Nlc3NlZCBhdCBhbGwgZnJvbSBzdGF0aWMgbWV0aG9kcy4KKworCitDcmVhdGluZyB0aGUgY2xhc3Mgb2JqZWN0CiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK09uY2UgdGhlIGNsYXNzIG5hbWVzcGFjZSBoYXMgYmVlbiBwb3B1bGF0ZWQgYnkgZXhlY3V0aW5nIHRoZSBjbGFzcyBib2R5LAordGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcKK2BgbWV0YWNsYXNzKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsICoqa3dkcylgYCAodGhlIGFkZGl0aW9uYWwga2V5d29yZHMKK3Bhc3NlZCBoZXJlIGFyZSB0aGUgc2FtZSBhcyB0aG9zZSBwYXNzZWQgdG8gYGBfX3ByZXBhcmVfX2BgKS4KKworVGhpcyBjbGFzcyBvYmplY3QgaXMgdGhlIG9uZSB0aGF0IHdpbGwgYmUgcmVmZXJlbmNlZCBieSB0aGUgemVyby1hcmd1bWVudAorZm9ybSBvZiA6ZnVuYzpgc3VwZXJgLiBgYF9fY2xhc3NfX2BgIGlzIGFuIGltcGxpY2l0IGNsb3N1cmUgcmVmZXJlbmNlCitjcmVhdGVkIGJ5IHRoZSBjb21waWxlciBpZiBhbnkgbWV0aG9kcyBpbiBhIGNsYXNzIGJvZHkgcmVmZXIgdG8gZWl0aGVyCitgYF9fY2xhc3NfX2BgIG9yIGBgc3VwZXJgYC4gVGhpcyBhbGxvd3MgdGhlIHplcm8gYXJndW1lbnQgZm9ybSBvZgorOmZ1bmM6YHN1cGVyYCB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIGNsYXNzIGJlaW5nIGRlZmluZWQgYmFzZWQgb24KK2xleGljYWwgc2NvcGluZywgd2hpbGUgdGhlIGNsYXNzIG9yIGluc3RhbmNlIHRoYXQgd2FzIHVzZWQgdG8gbWFrZSB0aGUKK2N1cnJlbnQgY2FsbCBpcyBpZGVudGlmaWVkIGJhc2VkIG9uIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIG1ldGhvZC4KKworQWZ0ZXIgdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkLCBpdCBpcyBwYXNzZWQgdG8gdGhlIGNsYXNzIGRlY29yYXRvcnMKK2luY2x1ZGVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIChpZiBhbnkpIGFuZCB0aGUgcmVzdWx0aW5nIG9iamVjdCBpcyBib3VuZAoraW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyB0aGUgZGVmaW5lZCBjbGFzcy4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDMxMzVgIC0gTmV3IHN1cGVyCisgICAgICBEZXNjcmliZXMgdGhlIGltcGxpY2l0IGBgX19jbGFzc19fYGAgY2xvc3VyZSByZWZlcmVuY2UKKworCitNZXRhY2xhc3MgZXhhbXBsZQorXl5eXl5eXl5eXl5eXl5eXl4KIAogVGhlIHBvdGVudGlhbCB1c2VzIGZvciBtZXRhY2xhc3NlcyBhcmUgYm91bmRsZXNzLiBTb21lIGlkZWFzIHRoYXQgaGF2ZSBiZWVuCi1leHBsb3JlZCBpbmNsdWRpbmcgbG9nZ2luZywgaW50ZXJmYWNlIGNoZWNraW5nLCBhdXRvbWF0aWMgZGVsZWdhdGlvbiwgYXV0b21hdGljCitleHBsb3JlZCBpbmNsdWRlIGxvZ2dpbmcsIGludGVyZmFjZSBjaGVja2luZywgYXV0b21hdGljIGRlbGVnYXRpb24sIGF1dG9tYXRpYwogcHJvcGVydHkgY3JlYXRpb24sIHByb3hpZXMsIGZyYW1ld29ya3MsIGFuZCBhdXRvbWF0aWMgcmVzb3VyY2UKIGxvY2tpbmcvc3luY2hyb25pemF0aW9uLgogCkBAIC0xNTkxLDkgKzE2OTIsOSBAQAogICAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIG5hbWUsIGJhc2VzLCAqKmt3ZHMpOgogICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkKIAotICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgY2xhc3NkaWN0KToKLSAgICAgICAgICAgIHJlc3VsdCA9IHR5cGUuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBkaWN0KGNsYXNzZGljdCkpCi0gICAgICAgICAgICByZXN1bHQubWVtYmVycyA9IHR1cGxlKGNsYXNzZGljdCkKKyAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgKiprd2RzKToKKyAgICAgICAgICAgIHJlc3VsdCA9IHR5cGUuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBkaWN0KG5hbWVzcGFjZSkpCisgICAgICAgICAgICByZXN1bHQubWVtYmVycyA9IHR1cGxlKG5hbWVzcGFjZSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGNsYXNzIEEobWV0YWNsYXNzPU9yZGVyZWRDbGFzcyk6CmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2V4cHJlc3Npb25zLnJzdCBiL0RvYy9yZWZlcmVuY2UvZXhwcmVzc2lvbnMucnN0CmluZGV4IDY4ZGUzYzguLmY4ODcwOWUgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvZXhwcmVzc2lvbnMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvZXhwcmVzc2lvbnMucnN0CkBAIC0zMTgsOSArMzE4LDEwIEBACiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKICAgIHlpZWxkX2F0b206ICIoIiBgeWllbGRfZXhwcmVzc2lvbmAgIikiCi0gICB5aWVsZF9leHByZXNzaW9uOiAieWllbGQiIFtgZXhwcmVzc2lvbl9saXN0YF0KKyAgIHlpZWxkX2V4cHJlc3Npb246ICJ5aWVsZCIgW2BleHByZXNzaW9uX2xpc3RgIHwgImZyb20iIGBleHByZXNzaW9uYF0KIAotVGhlIDprZXl3b3JkOmB5aWVsZGAgZXhwcmVzc2lvbiBpcyBvbmx5IHVzZWQgd2hlbiBkZWZpbmluZyBhIGdlbmVyYXRvciBmdW5jdGlvbiwKK1RoZSA6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb24gaXMgb25seSB1c2VkIHdoZW4gZGVmaW5pbmcgYSA6dGVybTpgZ2VuZXJhdG9yYAorZnVuY3Rpb24sCiBhbmQgY2FuIG9ubHkgYmUgdXNlZCBpbiB0aGUgYm9keSBvZiBhIGZ1bmN0aW9uIGRlZmluaXRpb24uICBVc2luZyBhCiA6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb24gaW4gYSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIHN1ZmZpY2llbnQgdG8gY2F1c2UgdGhhdAogZGVmaW5pdGlvbiB0byBjcmVhdGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIG5vcm1hbCBmdW5jdGlvbi4KQEAgLTMzNiw3ICszMzcsMTAgQEAKIHRoZSBnZW5lcmF0b3IncyBtZXRob2RzLCB0aGUgZnVuY3Rpb24gY2FuIHByb2NlZWQgZXhhY3RseSBhcyBpZiB0aGUKIDprZXl3b3JkOmB5aWVsZGAgZXhwcmVzc2lvbiB3YXMganVzdCBhbm90aGVyIGV4dGVybmFsIGNhbGwuICBUaGUgdmFsdWUgb2YgdGhlCiA6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb24gYWZ0ZXIgcmVzdW1pbmcgZGVwZW5kcyBvbiB0aGUgbWV0aG9kIHdoaWNoIHJlc3VtZWQKLXRoZSBleGVjdXRpb24uCit0aGUgZXhlY3V0aW9uLiBJZiA6bWV0aDpgX19uZXh0X19gIGlzIHVzZWQgKHR5cGljYWxseSB2aWEgZWl0aGVyIGEKKzprZXl3b3JkOmBmb3JgIG9yIHRoZSA6ZnVuYzpgbmV4dGAgYnVpbHRpbikgdGhlbiB0aGUgcmVzdWx0IGlzIDpjb25zdDpgTm9uZWAsCitvdGhlcndpc2UsIGlmIDptZXRoOmBzZW5kYCBpcyB1c2VkLCB0aGVuIHRoZSByZXN1bHQgd2lsbCBiZSB0aGUgdmFsdWUgcGFzc2VkCitpbiB0byB0aGF0IG1ldGhvZC4KIAogLi4gaW5kZXg6OiBzaW5nbGU6IGNvcm91dGluZQogCkBAIC0zNDYsMTIgKzM1MCwzMiBAQAogd2hlcmUgc2hvdWxkIHRoZSBleGVjdXRpb24gY29udGludWUgYWZ0ZXIgaXQgeWllbGRzOyB0aGUgY29udHJvbCBpcyBhbHdheXMKIHRyYW5zZmVycmVkIHRvIHRoZSBnZW5lcmF0b3IncyBjYWxsZXIuCiAKLVRoZSA6a2V5d29yZDpgeWllbGRgIHN0YXRlbWVudCBpcyBhbGxvd2VkIGluIHRoZSA6a2V5d29yZDpgdHJ5YCBjbGF1c2Ugb2YgYQorOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9ucyBhcmUgYWxsb3dlZCBpbiB0aGUgOmtleXdvcmQ6YHRyeWAgY2xhdXNlIG9mIGEKIDprZXl3b3JkOmB0cnlgIC4uLiAgOmtleXdvcmQ6YGZpbmFsbHlgIGNvbnN0cnVjdC4gIElmIHRoZSBnZW5lcmF0b3IgaXMgbm90CiByZXN1bWVkIGJlZm9yZSBpdCBpcyBmaW5hbGl6ZWQgKGJ5IHJlYWNoaW5nIGEgemVybyByZWZlcmVuY2UgY291bnQgb3IgYnkgYmVpbmcKIGdhcmJhZ2UgY29sbGVjdGVkKSwgdGhlIGdlbmVyYXRvci1pdGVyYXRvcidzIDptZXRoOmBjbG9zZWAgbWV0aG9kIHdpbGwgYmUKIGNhbGxlZCwgYWxsb3dpbmcgYW55IHBlbmRpbmcgOmtleXdvcmQ6YGZpbmFsbHlgIGNsYXVzZXMgdG8gZXhlY3V0ZS4KIAorV2hlbiBgYHlpZWxkIGZyb20gPGV4cHI+YGAgaXMgdXNlZCwgaXQgdHJlYXRzIHRoZSBzdXBwbGllZCBleHByZXNzaW9uIGFzCithIHN1Yml0ZXJhdG9yLiBBbGwgdmFsdWVzIHByb2R1Y2VkIGJ5IHRoYXQgc3ViaXRlcmF0b3IgYXJlIHBhc3NlZCBkaXJlY3RseQordG8gdGhlIGNhbGxlciBvZiB0aGUgY3VycmVudCBnZW5lcmF0b3IncyBtZXRob2RzLiBBbnkgdmFsdWVzIHBhc3NlZCBpbiB3aXRoCis6bWV0aDpgc2VuZGAgYW5kIGFueSBleGNlcHRpb25zIHBhc3NlZCBpbiB3aXRoIDptZXRoOmB0aHJvd2AgYXJlIHBhc3NlZCB0bwordGhlIHVuZGVybHlpbmcgaXRlcmF0b3IgaWYgaXQgaGFzIHRoZSBhcHByb3ByaWF0ZSBtZXRob2RzLiBJZiB0aGlzIGlzIG5vdCB0aGUKK2Nhc2UsIHRoZW4gOm1ldGg6YHNlbmRgIHdpbGwgcmFpc2UgOmV4YzpgQXR0cmlidXRlRXJyb3JgIG9yIDpleGM6YFR5cGVFcnJvcmAsCit3aGlsZSA6bWV0aDpgdGhyb3dgIHdpbGwganVzdCByYWlzZSB0aGUgcGFzc2VkIGluIGV4Y2VwdGlvbiBpbW1lZGlhdGVseS4KKworV2hlbiB0aGUgdW5kZXJseWluZyBpdGVyYXRvciBpcyBjb21wbGV0ZSwgdGhlIDphdHRyOmB+U3RvcEl0ZXJhdGlvbi52YWx1ZWAKK2F0dHJpYnV0ZSBvZiB0aGUgcmFpc2VkIDpleGM6YFN0b3BJdGVyYXRpb25gIGluc3RhbmNlIGJlY29tZXMgdGhlIHZhbHVlIG9mCit0aGUgeWllbGQgZXhwcmVzc2lvbi4gSXQgY2FuIGJlIGVpdGhlciBzZXQgZXhwbGljaXRseSB3aGVuIHJhaXNpbmcKKzpleGM6YFN0b3BJdGVyYXRpb25gLCBvciBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIHN1Yi1pdGVyYXRvciBpcyBhIGdlbmVyYXRvcgorKGJ5IHJldHVybmluZyBhIHZhbHVlIGZyb20gdGhlIHN1Yi1nZW5lcmF0b3IpLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgYGB5aWVsZCBmcm9tIDxleHByPmBgIHRvIGRlbGVnYXRlIGNvbnRyb2wgZmxvdyB0byBhIHN1Yml0ZXJhdG9yCisKK1RoZSBwYXJlbnRoZXNlcyBjYW4gYmUgb21pdHRlZCB3aGVuIHRoZSA6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb24gaXMgdGhlCitzb2xlIGV4cHJlc3Npb24gb24gdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiBhbiBhc3NpZ25tZW50IHN0YXRlbWVudC4KKwogLi4gaW5kZXg6OiBvYmplY3Q6IGdlbmVyYXRvcgogCiAKQEAgLTQxNSw2ICs0MzksMTIgQEAKICAgIG90aGVyIGV4Y2VwdGlvbiwgaXQgaXMgcHJvcGFnYXRlZCB0byB0aGUgY2FsbGVyLiAgOm1ldGg6YGNsb3NlYCBkb2VzIG5vdGhpbmcKICAgIGlmIHRoZSBnZW5lcmF0b3IgaGFzIGFscmVhZHkgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24gb3Igbm9ybWFsIGV4aXQuCiAKKworLi4gaW5kZXg6OiBzaW5nbGU6IHlpZWxkOyBleGFtcGxlcworCitFeGFtcGxlcworXl5eXl5eXl4KKwogSGVyZSBpcyBhIHNpbXBsZSBleGFtcGxlIHRoYXQgZGVtb25zdHJhdGVzIHRoZSBiZWhhdmlvciBvZiBnZW5lcmF0b3JzIGFuZAogZ2VuZXJhdG9yIGZ1bmN0aW9uczo6CiAKQEAgLTQ0Miw2ICs0NzIsOSBAQAogICAgPj4+IGdlbmVyYXRvci5jbG9zZSgpCiAgICBEb24ndCBmb3JnZXQgdG8gY2xlYW4gdXAgd2hlbiAnY2xvc2UoKScgaXMgY2FsbGVkLgogCitGb3IgZXhhbXBsZXMgdXNpbmcgYGB5aWVsZCBmcm9tYGAsIHNlZSA6cmVmOmBwZXAtMzgwYCBpbiAiV2hhdCdzIE5ldyBpbgorUHl0aG9uLiIKKwogCiAuLiBzZWVhbHNvOjoKIApAQCAtNDUyLDYgKzQ4NSwxMCBAQAogICAgICAgVGhlIHByb3Bvc2FsIHRvIGVuaGFuY2UgdGhlIEFQSSBhbmQgc3ludGF4IG9mIGdlbmVyYXRvcnMsIG1ha2luZyB0aGVtCiAgICAgICB1c2FibGUgYXMgc2ltcGxlIGNvcm91dGluZXMuCiAKKyAgIDpwZXA6YDAzODBgIC0gU3ludGF4IGZvciBEZWxlZ2F0aW5nIHRvIGEgU3ViZ2VuZXJhdG9yCisgICAgICBUaGUgcHJvcG9zYWwgdG8gaW50cm9kdWNlIHRoZSA6dG9rZW46YHlpZWxkX2Zyb21gIHN5bnRheCwgbWFraW5nIGRlbGVnYXRpb24KKyAgICAgIHRvIHN1Yi1nZW5lcmF0b3JzIGVhc3kuCisKIAogLi4gX3ByaW1hcmllczoKIApkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0IGIvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmMDIzNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QKQEAgLTAsMCArMSw3MDMgQEAKKworLi4gX2ltcG9ydHN5c3RlbToKKworKioqKioqKioqKioqKioqKioKK1RoZSBpbXBvcnQgc3lzdGVtCisqKioqKioqKioqKioqKioqKgorCisuLiBpbmRleDo6IHNpbmdsZTogaW1wb3J0IG1hY2hpbmVyeQorCitQeXRob24gY29kZSBpbiBvbmUgOnRlcm06YG1vZHVsZWAgZ2FpbnMgYWNjZXNzIHRvIHRoZSBjb2RlIGluIGFub3RoZXIgbW9kdWxlCitieSB0aGUgcHJvY2VzcyBvZiA6dGVybTpgaW1wb3J0aW5nYCBpdC4gIFRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgaXMKK3RoZSBtb3N0IGNvbW1vbiB3YXkgb2YgaW52b2tpbmcgdGhlIGltcG9ydCBtYWNoaW5lcnksIGJ1dCBpdCBpcyBub3QgdGhlIG9ubHkKK3dheS4gIEZ1bmN0aW9ucyBzdWNoIGFzIDpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWAgYW5kIGJ1aWx0LWluCis6ZnVuYzpgX19pbXBvcnRfX2AgY2FuIGFsc28gYmUgdXNlZCB0byBpbnZva2UgdGhlIGltcG9ydCBtYWNoaW5lcnkuCisKK1RoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgY29tYmluZXMgdHdvIG9wZXJhdGlvbnM7IGl0IHNlYXJjaGVzIGZvciB0aGUKK25hbWVkIG1vZHVsZSwgdGhlbiBpdCBiaW5kcyB0aGUgcmVzdWx0cyBvZiB0aGF0IHNlYXJjaCB0byBhIG5hbWUgaW4gdGhlIGxvY2FsCitzY29wZS4gIFRoZSBzZWFyY2ggb3BlcmF0aW9uIG9mIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgaXMgZGVmaW5lZCBhcworYSBjYWxsIHRvIHRoZSA6ZnVuYzpgX19pbXBvcnRfX2AgZnVuY3Rpb24sIHdpdGggdGhlIGFwcHJvcHJpYXRlIGFyZ3VtZW50cy4KK1RoZSByZXR1cm4gdmFsdWUgb2YgOmZ1bmM6YF9faW1wb3J0X19gIGlzIHVzZWQgdG8gcGVyZm9ybSB0aGUgbmFtZQorYmluZGluZyBvcGVyYXRpb24gb2YgdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudC4gIFNlZSB0aGUKKzprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBmb3IgdGhlIGV4YWN0IGRldGFpbHMgb2YgdGhhdCBuYW1lIGJpbmRpbmcKK29wZXJhdGlvbi4KKworQSBkaXJlY3QgY2FsbCB0byA6ZnVuYzpgX19pbXBvcnRfX2AgcGVyZm9ybXMgb25seSB0aGUgbW9kdWxlIHNlYXJjaCBhbmQsIGlmCitmb3VuZCwgdGhlIG1vZHVsZSBjcmVhdGlvbiBvcGVyYXRpb24uICBXaGlsZSBjZXJ0YWluIHNpZGUtZWZmZWN0cyBtYXkgb2NjdXIsCitzdWNoIGFzIHRoZSBpbXBvcnRpbmcgb2YgcGFyZW50IHBhY2thZ2VzLCBhbmQgdGhlIHVwZGF0aW5nIG9mIHZhcmlvdXMgY2FjaGVzCisoaW5jbHVkaW5nIDpkYXRhOmBzeXMubW9kdWxlc2ApLCBvbmx5IHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgcGVyZm9ybXMKK2EgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbi4KKworV2hlbiBjYWxsaW5nIDpmdW5jOmBfX2ltcG9ydF9fYCBhcyBwYXJ0IG9mIGFuIGltcG9ydCBzdGF0ZW1lbnQsIHRoZQoraW1wb3J0IHN5c3RlbSBmaXJzdCBjaGVja3MgdGhlIG1vZHVsZSBnbG9iYWwgbmFtZXNwYWNlIGZvciBhIGZ1bmN0aW9uIGJ5Cit0aGF0IG5hbWUuIElmIGl0IGlzIG5vdCBmb3VuZCwgdGhlbiB0aGUgc3RhbmRhcmQgYnVpbHRpbiA6ZnVuYzpgX19pbXBvcnRfX2AKK2lzIGNhbGxlZC4gT3RoZXIgbWVjaGFuaXNtcyBmb3IgaW52b2tpbmcgdGhlIGltcG9ydCBzeXN0ZW0gKHN1Y2ggYXMKKzpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWApIGRvIG5vdCBwZXJmb3JtIHRoaXMgY2hlY2sgYW5kIHdpbGwgYWx3YXlzCit1c2UgdGhlIHN0YW5kYXJkIGltcG9ydCBzeXN0ZW0uCisKK1doZW4gYSBtb2R1bGUgaXMgZmlyc3QgaW1wb3J0ZWQsIFB5dGhvbiBzZWFyY2hlcyBmb3IgdGhlIG1vZHVsZSBhbmQgaWYgZm91bmQsCitpdCBjcmVhdGVzIGEgbW9kdWxlIG9iamVjdCBbI2ZubW9dXywgaW5pdGlhbGl6aW5nIGl0LiAgSWYgdGhlIG5hbWVkIG1vZHVsZQorY2Fubm90IGJlIGZvdW5kLCBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiAgUHl0aG9uIGltcGxlbWVudHMgdmFyaW91cworc3RyYXRlZ2llcyB0byBzZWFyY2ggZm9yIHRoZSBuYW1lZCBtb2R1bGUgd2hlbiB0aGUgaW1wb3J0IG1hY2hpbmVyeSBpcworaW52b2tlZC4gIFRoZXNlIHN0cmF0ZWdpZXMgY2FuIGJlIG1vZGlmaWVkIGFuZCBleHRlbmRlZCBieSB1c2luZyB2YXJpb3VzIGhvb2tzCitkZXNjcmliZWQgaW4gdGhlIHNlY3Rpb25zIGJlbG93LgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgVGhlIGltcG9ydCBzeXN0ZW0gaGFzIGJlZW4gdXBkYXRlZCB0byBmdWxseSBpbXBsZW1lbnQgdGhlIHNlY29uZCBwaGFzZQorICAgb2YgOnBlcDpgMzAyYC4gVGhlcmUgaXMgbm8gbG9uZ2VyIGFueSBpbXBsaWNpdCBpbXBvcnQgbWFjaGluZXJ5IC0gdGhlIGZ1bGwKKyAgIGltcG9ydCBzeXN0ZW0gaXMgZXhwb3NlZCB0aHJvdWdoIDpkYXRhOmBzeXMubWV0YV9wYXRoYC4gSW4gYWRkaXRpb24sCisgICBuYXRpdmUgbmFtZXNwYWNlIHBhY2thZ2Ugc3VwcG9ydCBoYXMgYmVlbiBpbXBsZW1lbnRlZCAoc2VlIDpwZXA6YDQyMGApLgorCisKKzptb2Q6YGltcG9ydGxpYmAKKz09PT09PT09PT09PT09PT0KKworVGhlIDptb2Q6YGltcG9ydGxpYmAgbW9kdWxlIHByb3ZpZGVzIGEgcmljaCBBUEkgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlCitpbXBvcnQgc3lzdGVtLiAgRm9yIGV4YW1wbGUgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCBwcm92aWRlcyBhCityZWNvbW1lbmRlZCwgc2ltcGxlciBBUEkgdGhhbiBidWlsdC1pbiA6ZnVuYzpgX19pbXBvcnRfX2AgZm9yIGludm9raW5nIHRoZQoraW1wb3J0IG1hY2hpbmVyeS4gIFJlZmVyIHRvIHRoZSA6bW9kOmBpbXBvcnRsaWJgIGxpYnJhcnkgZG9jdW1lbnRhdGlvbiBmb3IKK2FkZGl0aW9uYWwgZGV0YWlsLgorCisKKworUGFja2FnZXMKKz09PT09PT09CisKKy4uIGluZGV4OjoKKyAgICBzaW5nbGU6IHBhY2thZ2UKKworUHl0aG9uIGhhcyBvbmx5IG9uZSB0eXBlIG9mIG1vZHVsZSBvYmplY3QsIGFuZCBhbGwgbW9kdWxlcyBhcmUgb2YgdGhpcyB0eXBlLAorcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBtb2R1bGUgaXMgaW1wbGVtZW50ZWQgaW4gUHl0aG9uLCBDLCBvciBzb21ldGhpbmcKK2Vsc2UuICBUbyBoZWxwIG9yZ2FuaXplIG1vZHVsZXMgYW5kIHByb3ZpZGUgYSBuYW1pbmcgaGllcmFyY2h5LCBQeXRob24gaGFzIGEKK2NvbmNlcHQgb2YgOnRlcm06YHBhY2thZ2VzIDxwYWNrYWdlPmAuCisKK1lvdSBjYW4gdGhpbmsgb2YgcGFja2FnZXMgYXMgdGhlIGRpcmVjdG9yaWVzIG9uIGEgZmlsZSBzeXN0ZW0gYW5kIG1vZHVsZXMgYXMKK2ZpbGVzIHdpdGhpbiBkaXJlY3RvcmllcywgYnV0IGRvbid0IHRha2UgdGhpcyBhbmFsb2d5IHRvbyBsaXRlcmFsbHkgc2luY2UKK3BhY2thZ2VzIGFuZCBtb2R1bGVzIG5lZWQgbm90IG9yaWdpbmF0ZSBmcm9tIHRoZSBmaWxlIHN5c3RlbS4gIEZvciB0aGUKK3B1cnBvc2VzIG9mIHRoaXMgZG9jdW1lbnRhdGlvbiwgd2UnbGwgdXNlIHRoaXMgY29udmVuaWVudCBhbmFsb2d5IG9mCitkaXJlY3RvcmllcyBhbmQgZmlsZXMuICBMaWtlIGZpbGUgc3lzdGVtIGRpcmVjdG9yaWVzLCBwYWNrYWdlcyBhcmUgb3JnYW5pemVkCitoaWVyYXJjaGljYWxseSwgYW5kIHBhY2thZ2VzIG1heSB0aGVtc2VsdmVzIGNvbnRhaW4gc3VicGFja2FnZXMsIGFzIHdlbGwgYXMKK3JlZ3VsYXIgbW9kdWxlcy4KKworSXQncyBpbXBvcnRhbnQgdG8ga2VlcCBpbiBtaW5kIHRoYXQgYWxsIHBhY2thZ2VzIGFyZSBtb2R1bGVzLCBidXQgbm90IGFsbAorbW9kdWxlcyBhcmUgcGFja2FnZXMuICBPciBwdXQgYW5vdGhlciB3YXksIHBhY2thZ2VzIGFyZSBqdXN0IGEgc3BlY2lhbCBraW5kIG9mCittb2R1bGUuICBTcGVjaWZpY2FsbHksIGFueSBtb2R1bGUgdGhhdCBjb250YWlucyBhIGBgX19wYXRoX19gYCBhdHRyaWJ1dGUgaXMKK2NvbnNpZGVyZWQgYSBwYWNrYWdlLgorCitBbGwgbW9kdWxlcyBoYXZlIGEgbmFtZS4gIFN1YnBhY2thZ2UgbmFtZXMgYXJlIHNlcGFyYXRlZCBmcm9tIHRoZWlyIHBhcmVudAorcGFja2FnZSBuYW1lIGJ5IGRvdHMsIGFraW4gdG8gUHl0aG9uJ3Mgc3RhbmRhcmQgYXR0cmlidXRlIGFjY2VzcyBzeW50YXguICBUaHVzCit5b3UgbWlnaHQgaGF2ZSBhIG1vZHVsZSBjYWxsZWQgOm1vZDpgc3lzYCBhbmQgYSBwYWNrYWdlIGNhbGxlZCA6bW9kOmBlbWFpbGAsCit3aGljaCBpbiB0dXJuIGhhcyBhIHN1YnBhY2thZ2UgY2FsbGVkIDptb2Q6YGVtYWlsLm1pbWVgIGFuZCBhIG1vZHVsZSB3aXRoaW4KK3RoYXQgc3VicGFja2FnZSBjYWxsZWQgOm1vZDpgZW1haWwubWltZS50ZXh0YC4KKworCitSZWd1bGFyIHBhY2thZ2VzCistLS0tLS0tLS0tLS0tLS0tCisKKy4uIGluZGV4OjoKKyAgICBwYWlyOiBwYWNrYWdlOyByZWd1bGFyCisKK1B5dGhvbiBkZWZpbmVzIHR3byB0eXBlcyBvZiBwYWNrYWdlcywgOnRlcm06YHJlZ3VsYXIgcGFja2FnZXMgPHJlZ3VsYXIKK3BhY2thZ2U+YCBhbmQgOnRlcm06YG5hbWVzcGFjZSBwYWNrYWdlcyA8bmFtZXNwYWNlIHBhY2thZ2U+YC4gIFJlZ3VsYXIKK3BhY2thZ2VzIGFyZSB0cmFkaXRpb25hbCBwYWNrYWdlcyBhcyB0aGV5IGV4aXN0ZWQgaW4gUHl0aG9uIDMuMiBhbmQgZWFybGllci4KK0EgcmVndWxhciBwYWNrYWdlIGlzIHR5cGljYWxseSBpbXBsZW1lbnRlZCBhcyBhIGRpcmVjdG9yeSBjb250YWluaW5nIGFuCitgYF9faW5pdF9fLnB5YGAgZmlsZS4gIFdoZW4gYSByZWd1bGFyIHBhY2thZ2UgaXMgaW1wb3J0ZWQsIHRoaXMKK2BgX19pbml0X18ucHlgYCBmaWxlIGlzIGltcGxpY2l0bHkgZXhlY3V0ZWQsIGFuZCB0aGUgb2JqZWN0cyBpdCBkZWZpbmVzIGFyZQorYm91bmQgdG8gbmFtZXMgaW4gdGhlIHBhY2thZ2UncyBuYW1lc3BhY2UuICBUaGUgYGBfX2luaXRfXy5weWBgIGZpbGUgY2FuCitjb250YWluIHRoZSBzYW1lIFB5dGhvbiBjb2RlIHRoYXQgYW55IG90aGVyIG1vZHVsZSBjYW4gY29udGFpbiwgYW5kIFB5dGhvbgord2lsbCBhZGQgc29tZSBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMgdG8gdGhlIG1vZHVsZSB3aGVuIGl0IGlzIGltcG9ydGVkLgorCitGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBmaWxlIHN5c3RlbSBsYXlvdXQgZGVmaW5lcyBhIHRvcCBsZXZlbCBgYHBhcmVudGBgCitwYWNrYWdlIHdpdGggdGhyZWUgc3VicGFja2FnZXM6OgorCisgICAgcGFyZW50LworICAgICAgICBfX2luaXRfXy5weQorICAgICAgICBvbmUvCisgICAgICAgICAgICBfX2luaXRfXy5weQorICAgICAgICB0d28vCisgICAgICAgICAgICBfX2luaXRfXy5weQorICAgICAgICB0aHJlZS8KKyAgICAgICAgICAgIF9faW5pdF9fLnB5CisKK0ltcG9ydGluZyBgYHBhcmVudC5vbmVgYCB3aWxsIGltcGxpY2l0bHkgZXhlY3V0ZSBgYHBhcmVudC9fX2luaXRfXy5weWBgIGFuZAorYGBwYXJlbnQvb25lL19faW5pdF9fLnB5YGAuICBTdWJzZXF1ZW50IGltcG9ydHMgb2YgYGBwYXJlbnQudHdvYGAgb3IKK2BgcGFyZW50LnRocmVlYGAgd2lsbCBleGVjdXRlIGBgcGFyZW50L3R3by9fX2luaXRfXy5weWBgIGFuZAorYGBwYXJlbnQvdGhyZWUvX19pbml0X18ucHlgYCByZXNwZWN0aXZlbHkuCisKKworTmFtZXNwYWNlIHBhY2thZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgIHBhaXI6OiBwYWNrYWdlOyBuYW1lc3BhY2UKKyAgICBwYWlyOjogcGFja2FnZTsgcG9ydGlvbgorCitBIG5hbWVzcGFjZSBwYWNrYWdlIGlzIGEgY29tcG9zaXRlIG9mIHZhcmlvdXMgOnRlcm06YHBvcnRpb25zIDxwb3J0aW9uPmAsCit3aGVyZSBlYWNoIHBvcnRpb24gY29udHJpYnV0ZXMgYSBzdWJwYWNrYWdlIHRvIHRoZSBwYXJlbnQgcGFja2FnZS4gIFBvcnRpb25zCittYXkgcmVzaWRlIGluIGRpZmZlcmVudCBsb2NhdGlvbnMgb24gdGhlIGZpbGUgc3lzdGVtLiAgUG9ydGlvbnMgbWF5IGFsc28gYmUKK2ZvdW5kIGluIHppcCBmaWxlcywgb24gdGhlIG5ldHdvcmssIG9yIGFueXdoZXJlIGVsc2UgdGhhdCBQeXRob24gc2VhcmNoZXMKK2R1cmluZyBpbXBvcnQuICBOYW1lc3BhY2UgcGFja2FnZXMgbWF5IG9yIG1heSBub3QgY29ycmVzcG9uZCBkaXJlY3RseSB0bworb2JqZWN0cyBvbiB0aGUgZmlsZSBzeXN0ZW07IHRoZXkgbWF5IGJlIHZpcnR1YWwgbW9kdWxlcyB0aGF0IGhhdmUgbm8gY29uY3JldGUKK3JlcHJlc2VudGF0aW9uLgorCitOYW1lc3BhY2UgcGFja2FnZXMgZG8gbm90IHVzZSBhbiBvcmRpbmFyeSBsaXN0IGZvciB0aGVpciBgYF9fcGF0aF9fYGAKK2F0dHJpYnV0ZS4gVGhleSBpbnN0ZWFkIHVzZSBhIGN1c3RvbSBpdGVyYWJsZSB0eXBlIHdoaWNoIHdpbGwgYXV0b21hdGljYWxseQorcGVyZm9ybSBhIG5ldyBzZWFyY2ggZm9yIHBhY2thZ2UgcG9ydGlvbnMgb24gdGhlIG5leHQgaW1wb3J0IGF0dGVtcHQgd2l0aGluCit0aGF0IHBhY2thZ2UgaWYgdGhlIHBhdGggb2YgdGhlaXIgcGFyZW50IHBhY2thZ2UgKG9yIDpkYXRhOmBzeXMucGF0aGAgZm9yIGEKK3RvcCBsZXZlbCBwYWNrYWdlKSBjaGFuZ2VzLgorCitXaXRoIG5hbWVzcGFjZSBwYWNrYWdlcywgdGhlcmUgaXMgbm8gYGBwYXJlbnQvX19pbml0X18ucHlgYCBmaWxlLiAgSW4gZmFjdCwKK3RoZXJlIG1heSBiZSBtdWx0aXBsZSBgYHBhcmVudGBgIGRpcmVjdG9yaWVzIGZvdW5kIGR1cmluZyBpbXBvcnQgc2VhcmNoLCB3aGVyZQorZWFjaCBvbmUgaXMgcHJvdmlkZWQgYnkgYSBkaWZmZXJlbnQgcG9ydGlvbi4gIFRodXMgYGBwYXJlbnQvb25lYGAgbWF5IG5vdCBiZQorcGh5c2ljYWxseSBsb2NhdGVkIG5leHQgdG8gYGBwYXJlbnQvdHdvYGAuICBJbiB0aGlzIGNhc2UsIFB5dGhvbiB3aWxsIGNyZWF0ZSBhCituYW1lc3BhY2UgcGFja2FnZSBmb3IgdGhlIHRvcC1sZXZlbCBgYHBhcmVudGBgIHBhY2thZ2Ugd2hlbmV2ZXIgaXQgb3Igb25lIG9mCitpdHMgc3VicGFja2FnZXMgaXMgaW1wb3J0ZWQuCisKK1NlZSBhbHNvIDpwZXA6YDQyMGAgZm9yIHRoZSBuYW1lc3BhY2UgcGFja2FnZSBzcGVjaWZpY2F0aW9uLgorCisKK1NlYXJjaGluZworPT09PT09PT09CisKK1RvIGJlZ2luIHRoZSBzZWFyY2gsIFB5dGhvbiBuZWVkcyB0aGUgOnRlcm06YGZ1bGx5IHF1YWxpZmllZCA8cXVhbGlmaWVkIG5hbWU+YAorbmFtZSBvZiB0aGUgbW9kdWxlIChvciBwYWNrYWdlLCBidXQgZm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRpc2N1c3Npb24sIHRoZQorZGlmZmVyZW5jZSBpcyBpbW1hdGVyaWFsKSBiZWluZyBpbXBvcnRlZC4gIFRoaXMgbmFtZSBtYXkgY29tZSBmcm9tIHZhcmlvdXMKK2FyZ3VtZW50cyB0byB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50LCBvciBmcm9tIHRoZSBwYXJhbWV0ZXJzIHRvIHRoZQorOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCBvciA6ZnVuYzpgX19pbXBvcnRfX2AgZnVuY3Rpb25zLgorCitUaGlzIG5hbWUgd2lsbCBiZSB1c2VkIGluIHZhcmlvdXMgcGhhc2VzIG9mIHRoZSBpbXBvcnQgc2VhcmNoLCBhbmQgaXQgbWF5IGJlCit0aGUgZG90dGVkIHBhdGggdG8gYSBzdWJtb2R1bGUsIGUuZy4gYGBmb28uYmFyLmJhemBgLiAgSW4gdGhpcyBjYXNlLCBQeXRob24KK2ZpcnN0IHRyaWVzIHRvIGltcG9ydCBgYGZvb2BgLCB0aGVuIGBgZm9vLmJhcmBgLCBhbmQgZmluYWxseSBgYGZvby5iYXIuYmF6YGAuCitJZiBhbnkgb2YgdGhlIGludGVybWVkaWF0ZSBpbXBvcnRzIGZhaWwsIGFuIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuCisKKworVGhlIG1vZHVsZSBjYWNoZQorLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICAgc2luZ2xlOiBzeXMubW9kdWxlcworCitUaGUgZmlyc3QgcGxhY2UgY2hlY2tlZCBkdXJpbmcgaW1wb3J0IHNlYXJjaCBpcyA6ZGF0YTpgc3lzLm1vZHVsZXNgLiAgVGhpcworbWFwcGluZyBzZXJ2ZXMgYXMgYSBjYWNoZSBvZiBhbGwgbW9kdWxlcyB0aGF0IGhhdmUgYmVlbiBwcmV2aW91c2x5IGltcG9ydGVkLAoraW5jbHVkaW5nIHRoZSBpbnRlcm1lZGlhdGUgcGF0aHMuICBTbyBpZiBgYGZvby5iYXIuYmF6YGAgd2FzIHByZXZpb3VzbHkKK2ltcG9ydGVkLCA6ZGF0YTpgc3lzLm1vZHVsZXNgIHdpbGwgY29udGFpbiBlbnRyaWVzIGZvciBgYGZvb2BgLCBgYGZvby5iYXJgYCwKK2FuZCBgYGZvby5iYXIuYmF6YGAuICBFYWNoIGtleSB3aWxsIGhhdmUgYXMgaXRzIHZhbHVlIHRoZSBjb3JyZXNwb25kaW5nIG1vZHVsZQorb2JqZWN0LgorCitEdXJpbmcgaW1wb3J0LCB0aGUgbW9kdWxlIG5hbWUgaXMgbG9va2VkIHVwIGluIDpkYXRhOmBzeXMubW9kdWxlc2AgYW5kIGlmCitwcmVzZW50LCB0aGUgYXNzb2NpYXRlZCB2YWx1ZSBpcyB0aGUgbW9kdWxlIHNhdGlzZnlpbmcgdGhlIGltcG9ydCwgYW5kIHRoZQorcHJvY2VzcyBjb21wbGV0ZXMuICBIb3dldmVyLCBpZiB0aGUgdmFsdWUgaXMgYGBOb25lYGAsIHRoZW4gYW4KKzpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuICBJZiB0aGUgbW9kdWxlIG5hbWUgaXMgbWlzc2luZywgUHl0aG9uIHdpbGwKK2NvbnRpbnVlIHNlYXJjaGluZyBmb3IgdGhlIG1vZHVsZS4KKworOmRhdGE6YHN5cy5tb2R1bGVzYCBpcyB3cml0YWJsZS4gIERlbGV0aW5nIGEga2V5IG1heSBub3QgZGVzdHJveSB0aGUKK2Fzc29jaWF0ZWQgbW9kdWxlIChhcyBvdGhlciBtb2R1bGVzIG1heSBob2xkIHJlZmVyZW5jZXMgdG8gaXQpLAorYnV0IGl0IHdpbGwgaW52YWxpZGF0ZSB0aGUgY2FjaGUgZW50cnkgZm9yIHRoZSBuYW1lZCBtb2R1bGUsIGNhdXNpbmcKK1B5dGhvbiB0byBzZWFyY2ggYW5ldyBmb3IgdGhlIG5hbWVkIG1vZHVsZSB1cG9uIGl0cyBuZXh0CitpbXBvcnQuIFRoZSBrZXkgY2FuIGFsc28gYmUgYXNzaWduZWQgdG8gYGBOb25lYGAsIGZvcmNpbmcgdGhlIG5leHQgaW1wb3J0CitvZiB0aGUgbW9kdWxlIHRvIHJlc3VsdCBpbiBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAuCisKK0Jld2FyZSB0aG91Z2gsIGFzIGlmIHlvdSBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBtb2R1bGUgb2JqZWN0LAoraW52YWxpZGF0ZSBpdHMgY2FjaGUgZW50cnkgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCwgYW5kIHRoZW4gcmUtaW1wb3J0IHRoZQorbmFtZWQgbW9kdWxlLCB0aGUgdHdvIG1vZHVsZSBvYmplY3RzIHdpbGwgKm5vdCogYmUgdGhlIHNhbWUuIEJ5IGNvbnRyYXN0LAorOmZ1bmM6YGltcC5yZWxvYWRgIHdpbGwgcmV1c2UgdGhlICpzYW1lKiBtb2R1bGUgb2JqZWN0LCBhbmQgc2ltcGx5CityZWluaXRpYWxpc2UgdGhlIG1vZHVsZSBjb250ZW50cyBieSByZXJ1bm5pbmcgdGhlIG1vZHVsZSdzIGNvZGUuCisKKworRmluZGVycyBhbmQgbG9hZGVycworLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICAgc2luZ2xlOiBmaW5kZXIKKyAgICBzaW5nbGU6IGxvYWRlcgorCitJZiB0aGUgbmFtZWQgbW9kdWxlIGlzIG5vdCBmb3VuZCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLCB0aGVuIFB5dGhvbidzIGltcG9ydAorcHJvdG9jb2wgaXMgaW52b2tlZCB0byBmaW5kIGFuZCBsb2FkIHRoZSBtb2R1bGUuICBUaGlzIHByb3RvY29sIGNvbnNpc3RzIG9mCit0d28gY29uY2VwdHVhbCBvYmplY3RzLCA6dGVybTpgZmluZGVycyA8ZmluZGVyPmAgYW5kIDp0ZXJtOmBsb2FkZXJzIDxsb2FkZXI+YC4KK0EgZmluZGVyJ3Mgam9iIGlzIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGNhbiBmaW5kIHRoZSBuYW1lZCBtb2R1bGUgdXNpbmcKK3doYXRldmVyIHN0cmF0ZWd5IGl0IGtub3dzIGFib3V0LiBPYmplY3RzIHRoYXQgaW1wbGVtZW50IGJvdGggb2YgdGhlc2UKK2ludGVyZmFjZXMgYXJlIHJlZmVycmVkIHRvIGFzIDp0ZXJtOmBpbXBvcnRlcnMgPGltcG9ydGVyPmAgLSB0aGV5IHJldHVybgordGhlbXNlbHZlcyB3aGVuIHRoZXkgZmluZCB0aGF0IHRoZXkgY2FuIGxvYWQgdGhlIHJlcXVlc3RlZCBtb2R1bGUuCisKK1B5dGhvbiBpbmNsdWRlcyBhIG51bWJlciBvZiBkZWZhdWx0IGZpbmRlcnMgYW5kIGltcG9ydGVycy4gIFRoZSBmaXJzdCBvbmUKK2tub3dzIGhvdyB0byBsb2NhdGUgYnVpbHQtaW4gbW9kdWxlcywgYW5kIHRoZSBzZWNvbmQga25vd3MgaG93IHRvIGxvY2F0ZQorZnJvemVuIG1vZHVsZXMuICBBIHRoaXJkIGRlZmF1bHQgZmluZGVyIHNlYXJjaGVzIGFuIDp0ZXJtOmBpbXBvcnQgcGF0aGAKK2ZvciBtb2R1bGVzLiAgVGhlIDp0ZXJtOmBpbXBvcnQgcGF0aGAgaXMgYSBsaXN0IG9mIGxvY2F0aW9ucyB0aGF0IG1heQorbmFtZSBmaWxlIHN5c3RlbSBwYXRocyBvciB6aXAgZmlsZXMuICBJdCBjYW4gYWxzbyBiZSBleHRlbmRlZCB0byBzZWFyY2gKK2ZvciBhbnkgbG9jYXRhYmxlIHJlc291cmNlLCBzdWNoIGFzIHRob3NlIGlkZW50aWZpZWQgYnkgVVJMcy4KKworVGhlIGltcG9ydCBtYWNoaW5lcnkgaXMgZXh0ZW5zaWJsZSwgc28gbmV3IGZpbmRlcnMgY2FuIGJlIGFkZGVkIHRvIGV4dGVuZCB0aGUKK3JhbmdlIGFuZCBzY29wZSBvZiBtb2R1bGUgc2VhcmNoaW5nLgorCitGaW5kZXJzIGRvIG5vdCBhY3R1YWxseSBsb2FkIG1vZHVsZXMuICBJZiB0aGV5IGNhbiBmaW5kIHRoZSBuYW1lZCBtb2R1bGUsIHRoZXkKK3JldHVybiBhIDp0ZXJtOmBsb2FkZXJgLCB3aGljaCB0aGUgaW1wb3J0IG1hY2hpbmVyeSB0aGVuIGludm9rZXMgdG8gbG9hZCB0aGUKK21vZHVsZSBhbmQgY3JlYXRlIHRoZSBjb3JyZXNwb25kaW5nIG1vZHVsZSBvYmplY3QuCisKK1RoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZGVzY3JpYmUgdGhlIHByb3RvY29sIGZvciBmaW5kZXJzIGFuZCBsb2FkZXJzIGluIG1vcmUKK2RldGFpbCwgaW5jbHVkaW5nIGhvdyB5b3UgY2FuIGNyZWF0ZSBhbmQgcmVnaXN0ZXIgbmV3IG9uZXMgdG8gZXh0ZW5kIHRoZQoraW1wb3J0IG1hY2hpbmVyeS4KKworCitJbXBvcnQgaG9va3MKKy0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICBzaW5nbGU6IGltcG9ydCBob29rcworICAgc2luZ2xlOiBtZXRhIGhvb2tzCisgICBzaW5nbGU6IHBhdGggaG9va3MKKyAgIHBhaXI6IGhvb2tzOyBpbXBvcnQKKyAgIHBhaXI6IGhvb2tzOyBtZXRhCisgICBwYWlyOiBob29rczsgcGF0aAorCitUaGUgaW1wb3J0IG1hY2hpbmVyeSBpcyBkZXNpZ25lZCB0byBiZSBleHRlbnNpYmxlOyB0aGUgcHJpbWFyeSBtZWNoYW5pc20gZm9yCit0aGlzIGFyZSB0aGUgKmltcG9ydCBob29rcyouICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGltcG9ydCBob29rczogKm1ldGEKK2hvb2tzKiBhbmQgKmltcG9ydCBwYXRoIGhvb2tzKi4KKworTWV0YSBob29rcyBhcmUgY2FsbGVkIGF0IHRoZSBzdGFydCBvZiBpbXBvcnQgcHJvY2Vzc2luZywgYmVmb3JlIGFueSBvdGhlcgoraW1wb3J0IHByb2Nlc3NpbmcgaGFzIG9jY3VycmVkLCBvdGhlciB0aGFuIDpkYXRhOmBzeXMubW9kdWxlc2AgY2FjaGUgbG9vayB1cC4KK1RoaXMgYWxsb3dzIG1ldGEgaG9va3MgdG8gb3ZlcnJpZGUgOmRhdGE6YHN5cy5wYXRoYCBwcm9jZXNzaW5nLCBmcm96ZW4KK21vZHVsZXMsIG9yIGV2ZW4gYnVpbHQtaW4gbW9kdWxlcy4gIE1ldGEgaG9va3MgYXJlIHJlZ2lzdGVyZWQgYnkgYWRkaW5nIG5ldworZmluZGVyIG9iamVjdHMgdG8gOmRhdGE6YHN5cy5tZXRhX3BhdGhgLCBhcyBkZXNjcmliZWQgYmVsb3cuCisKK0ltcG9ydCBwYXRoIGhvb2tzIGFyZSBjYWxsZWQgYXMgcGFydCBvZiA6ZGF0YTpgc3lzLnBhdGhgIChvcgorYGBwYWNrYWdlLl9fcGF0aF9fYGApIHByb2Nlc3NpbmcsIGF0IHRoZSBwb2ludCB3aGVyZSB0aGVpciBhc3NvY2lhdGVkIHBhdGgKK2l0ZW0gaXMgZW5jb3VudGVyZWQuICBJbXBvcnQgcGF0aCBob29rcyBhcmUgcmVnaXN0ZXJlZCBieSBhZGRpbmcgbmV3IGNhbGxhYmxlcwordG8gOmRhdGE6YHN5cy5wYXRoX2hvb2tzYCBhcyBkZXNjcmliZWQgYmVsb3cuCisKKworVGhlIG1ldGEgcGF0aAorLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICAgc2luZ2xlOiBzeXMubWV0YV9wYXRoCisgICAgcGFpcjogZmluZGVyOyBmaW5kX21vZHVsZQorICAgIHBhaXI6IGZpbmRlcjsgZmluZF9sb2FkZXIKKworV2hlbiB0aGUgbmFtZWQgbW9kdWxlIGlzIG5vdCBmb3VuZCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLCBQeXRob24gbmV4dAorc2VhcmNoZXMgOmRhdGE6YHN5cy5tZXRhX3BhdGhgLCB3aGljaCBjb250YWlucyBhIGxpc3Qgb2YgbWV0YSBwYXRoIGZpbmRlcgorb2JqZWN0cy4gIFRoZXNlIGZpbmRlcnMgYXJlIHF1ZXJpZWQgaW4gb3JkZXIgdG8gc2VlIGlmIHRoZXkga25vdyBob3cgdG8gaGFuZGxlCit0aGUgbmFtZWQgbW9kdWxlLiAgTWV0YSBwYXRoIGZpbmRlcnMgbXVzdCBpbXBsZW1lbnQgYSBtZXRob2QgY2FsbGVkCis6bWV0aDpgZmluZF9tb2R1bGUoKWAgd2hpY2ggdGFrZXMgdHdvIGFyZ3VtZW50cywgYSBuYW1lIGFuZCBhbiBpbXBvcnQgcGF0aC4KK1RoZSBtZXRhIHBhdGggZmluZGVyIGNhbiB1c2UgYW55IHN0cmF0ZWd5IGl0IHdhbnRzIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGNhbgoraGFuZGxlIHRoZSBuYW1lZCBtb2R1bGUgb3Igbm90LgorCitJZiB0aGUgbWV0YSBwYXRoIGZpbmRlciBrbm93cyBob3cgdG8gaGFuZGxlIHRoZSBuYW1lZCBtb2R1bGUsIGl0IHJldHVybnMgYQorbG9hZGVyIG9iamVjdC4gIElmIGl0IGNhbm5vdCBoYW5kbGUgdGhlIG5hbWVkIG1vZHVsZSwgaXQgcmV0dXJucyBgYE5vbmVgYC4gIElmCis6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgcHJvY2Vzc2luZyByZWFjaGVzIHRoZSBlbmQgb2YgaXRzIGxpc3Qgd2l0aG91dCByZXR1cm5pbmcKK2EgbG9hZGVyLCB0aGVuIGFuIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuICBBbnkgb3RoZXIgZXhjZXB0aW9ucyByYWlzZWQKK2FyZSBzaW1wbHkgcHJvcGFnYXRlZCB1cCwgYWJvcnRpbmcgdGhlIGltcG9ydCBwcm9jZXNzLgorCitUaGUgOm1ldGg6YGZpbmRfbW9kdWxlKClgIG1ldGhvZCBvZiBtZXRhIHBhdGggZmluZGVycyBpcyBjYWxsZWQgd2l0aCB0d28KK2FyZ3VtZW50cy4gIFRoZSBmaXJzdCBpcyB0aGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIG1vZHVsZSBiZWluZworaW1wb3J0ZWQsIGZvciBleGFtcGxlIGBgZm9vLmJhci5iYXpgYC4gIFRoZSBzZWNvbmQgYXJndW1lbnQgaXMgdGhlIHBhdGgKK2VudHJpZXMgdG8gdXNlIGZvciB0aGUgbW9kdWxlIHNlYXJjaC4gIEZvciB0b3AtbGV2ZWwgbW9kdWxlcywgdGhlIHNlY29uZAorYXJndW1lbnQgaXMgYGBOb25lYGAsIGJ1dCBmb3Igc3VibW9kdWxlcyBvciBzdWJwYWNrYWdlcywgdGhlIHNlY29uZAorYXJndW1lbnQgaXMgdGhlIHZhbHVlIG9mIHRoZSBwYXJlbnQgcGFja2FnZSdzIGBgX19wYXRoX19gYCBhdHRyaWJ1dGUuIElmCit0aGUgYXBwcm9wcmlhdGUgYGBfX3BhdGhfX2BgIGF0dHJpYnV0ZSBjYW5ub3QgYmUgYWNjZXNzZWQsIGFuCis6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLgorCitUaGUgbWV0YSBwYXRoIG1heSBiZSB0cmF2ZXJzZWQgbXVsdGlwbGUgdGltZXMgZm9yIGEgc2luZ2xlIGltcG9ydCByZXF1ZXN0LgorRm9yIGV4YW1wbGUsIGFzc3VtaW5nIG5vbmUgb2YgdGhlIG1vZHVsZXMgaW52b2x2ZWQgaGFzIGFscmVhZHkgYmVlbiBjYWNoZWQsCitpbXBvcnRpbmcgYGBmb28uYmFyLmJhemBgIHdpbGwgZmlyc3QgcGVyZm9ybSBhIHRvcCBsZXZlbCBpbXBvcnQsIGNhbGxpbmcKK2BgbXBmLmZpbmRfbW9kdWxlKCJmb28iLCBOb25lKWBgIG9uIGVhY2ggbWV0YSBwYXRoIGZpbmRlciAoYGBtcGZgYCkuIEFmdGVyCitgYGZvb2BgIGhhcyBiZWVuIGltcG9ydGVkLCBgYGZvby5iYXJgYCB3aWxsIGJlIGltcG9ydGVkIGJ5IHRyYXZlcnNpbmcgdGhlCittZXRhIHBhdGggYSBzZWNvbmQgdGltZSwgY2FsbGluZworYGBtcGYuZmluZF9tb2R1bGUoImZvby5iYXIiLCBmb28uX19wYXRoX18pYGAuIE9uY2UgYGBmb28uYmFyYGAgaGFzIGJlZW4KK2ltcG9ydGVkLCB0aGUgZmluYWwgdHJhdmVyc2FsIHdpbGwgY2FsbAorYGBtcGYuZmluZF9tb2R1bGUoImZvby5iYXIuYmF6IiwgZm9vLmJhci5fX3BhdGhfXylgYC4KKworU29tZSBtZXRhIHBhdGggZmluZGVycyBvbmx5IHN1cHBvcnQgdG9wIGxldmVsIGltcG9ydHMuIFRoZXNlIGltcG9ydGVycyB3aWxsCithbHdheXMgcmV0dXJuIGBgTm9uZWBgIHdoZW4gYW55dGhpbmcgb3RoZXIgdGhhbiBgYE5vbmVgYCBpcyBwYXNzZWQgYXMgdGhlCitzZWNvbmQgYXJndW1lbnQuCisKK1B5dGhvbidzIGRlZmF1bHQgOmRhdGE6YHN5cy5tZXRhX3BhdGhgIGhhcyB0aHJlZSBtZXRhIHBhdGggZmluZGVycywgb25lIHRoYXQKK2tub3dzIGhvdyB0byBpbXBvcnQgYnVpbHQtaW4gbW9kdWxlcywgb25lIHRoYXQga25vd3MgaG93IHRvIGltcG9ydCBmcm96ZW4KK21vZHVsZXMsIGFuZCBvbmUgdGhhdCBrbm93cyBob3cgdG8gaW1wb3J0IG1vZHVsZXMgZnJvbSBhbiA6dGVybTpgaW1wb3J0IHBhdGhgCisoaS5lLiB0aGUgOnRlcm06YHBhdGggYmFzZWQgZmluZGVyYCkuCisKKworTG9hZGVycworPT09PT09PQorCitJZiBhbmQgd2hlbiBhIG1vZHVsZSBsb2FkZXIgaXMgZm91bmQgaXRzCis6bWV0aDpgfmltcG9ydGxpYi5hYmMuTG9hZGVyLmxvYWRfbW9kdWxlYCBtZXRob2QgaXMgY2FsbGVkLCB3aXRoIGEgc2luZ2xlCithcmd1bWVudCwgdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQuICBUaGlzIG1ldGhvZAoraGFzIHNldmVyYWwgcmVzcG9uc2liaWxpdGllcywgYW5kIHNob3VsZCByZXR1cm4gdGhlIG1vZHVsZSBvYmplY3QgaXQgaGFzCitsb2FkZWQgWyNmbmxvXV8uICBJZiBpdCBjYW5ub3QgbG9hZCB0aGUgbW9kdWxlLCBpdCBzaG91bGQgcmFpc2UgYW4KKzpleGM6YEltcG9ydEVycm9yYCwgYWx0aG91Z2ggYW55IG90aGVyIGV4Y2VwdGlvbiByYWlzZWQgZHVyaW5nCis6bWV0aDpgbG9hZF9tb2R1bGUoKWAgd2lsbCBiZSBwcm9wYWdhdGVkLgorCitJbiBtYW55IGNhc2VzLCB0aGUgZmluZGVyIGFuZCBsb2FkZXIgY2FuIGJlIHRoZSBzYW1lIG9iamVjdDsgaW4gc3VjaCBjYXNlcyB0aGUKKzptZXRoOmBmaW5kZXIuZmluZF9tb2R1bGUoKWAgd291bGQganVzdCByZXR1cm4gYGBzZWxmYGAuCisKK0xvYWRlcnMgbXVzdCBzYXRpc2Z5IHRoZSBmb2xsb3dpbmcgcmVxdWlyZW1lbnRzOgorCisgKiBJZiB0aGVyZSBpcyBhbiBleGlzdGluZyBtb2R1bGUgb2JqZWN0IHdpdGggdGhlIGdpdmVuIG5hbWUgaW4KKyAgIDpkYXRhOmBzeXMubW9kdWxlc2AsIHRoZSBsb2FkZXIgbXVzdCB1c2UgdGhhdCBleGlzdGluZyBtb2R1bGUuICAoT3RoZXJ3aXNlLAorICAgOmZ1bmM6YGltcC5yZWxvYWRgIHdpbGwgbm90IHdvcmsgY29ycmVjdGx5LikgIElmIHRoZSBuYW1lZCBtb2R1bGUgZG9lcworICAgbm90IGV4aXN0IGluIDpkYXRhOmBzeXMubW9kdWxlc2AsIHRoZSBsb2FkZXIgbXVzdCBjcmVhdGUgYSBuZXcgbW9kdWxlCisgICBvYmplY3QgYW5kIGFkZCBpdCB0byA6ZGF0YTpgc3lzLm1vZHVsZXNgLgorCisgICBOb3RlIHRoYXQgdGhlIG1vZHVsZSAqbXVzdCogZXhpc3QgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCBiZWZvcmUgdGhlIGxvYWRlcgorICAgZXhlY3V0ZXMgdGhlIG1vZHVsZSBjb2RlLiAgVGhpcyBpcyBjcnVjaWFsIGJlY2F1c2UgdGhlIG1vZHVsZSBjb2RlIG1heQorICAgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIGltcG9ydCBpdHNlbGY7IGFkZGluZyBpdCB0byA6ZGF0YTpgc3lzLm1vZHVsZXNgCisgICBiZWZvcmVoYW5kIHByZXZlbnRzIHVuYm91bmRlZCByZWN1cnNpb24gaW4gdGhlIHdvcnN0IGNhc2UgYW5kIG11bHRpcGxlCisgICBsb2FkaW5nIGluIHRoZSBiZXN0LgorCisgICBJZiBsb2FkaW5nIGZhaWxzLCB0aGUgbG9hZGVyIG11c3QgcmVtb3ZlIGFueSBtb2R1bGVzIGl0IGhhcyBpbnNlcnRlZCBpbnRvCisgICA6ZGF0YTpgc3lzLm1vZHVsZXNgLCBidXQgaXQgbXVzdCByZW1vdmUgKipvbmx5KiogdGhlIGZhaWxpbmcgbW9kdWxlLCBhbmQKKyAgIG9ubHkgaWYgdGhlIGxvYWRlciBpdHNlbGYgaGFzIGxvYWRlZCBpdCBleHBsaWNpdGx5LiAgQW55IG1vZHVsZSBhbHJlYWR5IGluCisgICB0aGUgOmRhdGE6YHN5cy5tb2R1bGVzYCBjYWNoZSwgYW5kIGFueSBtb2R1bGUgdGhhdCB3YXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZAorICAgYXMgYSBzaWRlLWVmZmVjdCwgbXVzdCByZW1haW4gaW4gdGhlIGNhY2hlLgorCisgKiBUaGUgbG9hZGVyIG1heSBzZXQgdGhlIGBgX19maWxlX19gYCBhdHRyaWJ1dGUgb2YgdGhlIG1vZHVsZS4gIElmIHNldCwgdGhpcworICAgYXR0cmlidXRlJ3MgdmFsdWUgbXVzdCBiZSBhIHN0cmluZy4gIFRoZSBsb2FkZXIgbWF5IG9wdCB0byBsZWF2ZQorICAgYGBfX2ZpbGVfX2BgIHVuc2V0IGlmIGl0IGhhcyBubyBzZW1hbnRpYyBtZWFuaW5nIChlLmcuIGEgbW9kdWxlIGxvYWRlZCBmcm9tCisgICBhIGRhdGFiYXNlKS4KKworICogVGhlIGxvYWRlciBtYXkgc2V0IHRoZSBgYF9fbmFtZV9fYGAgYXR0cmlidXRlIG9mIHRoZSBtb2R1bGUuICBXaGlsZSBub3QKKyAgIHJlcXVpcmVkLCBzZXR0aW5nIHRoaXMgYXR0cmlidXRlIGlzIGhpZ2hseSByZWNvbW1lbmRlZCBzbyB0aGF0IHRoZQorICAgOm1ldGg6YHJlcHIoKWAgb2YgdGhlIG1vZHVsZSBpcyBtb3JlIGluZm9ybWF0aXZlLgorCisgKiBJZiB0aGUgbW9kdWxlIGlzIGEgcGFja2FnZSAoZWl0aGVyIHJlZ3VsYXIgb3IgbmFtZXNwYWNlKSwgdGhlIGxvYWRlciBtdXN0CisgICBzZXQgdGhlIG1vZHVsZSBvYmplY3QncyBgYF9fcGF0aF9fYGAgYXR0cmlidXRlLiAgVGhlIHZhbHVlIG11c3QgYmUKKyAgIGl0ZXJhYmxlLCBidXQgbWF5IGJlIGVtcHR5IGlmIGBgX19wYXRoX19gYCBoYXMgbm8gZnVydGhlciBzaWduaWZpY2FuY2UKKyAgIHRvIHRoZSBsb2FkZXIuIElmIGBgX19wYXRoX19gYCBpcyBub3QgZW1wdHksIGl0IG11c3QgcHJvZHVjZSBzdHJpbmdzCisgICB3aGVuIGl0ZXJhdGVkIG92ZXIuIE1vcmUgZGV0YWlscyBvbiB0aGUgc2VtYW50aWNzIG9mIGBgX19wYXRoX19gYCBhcmUKKyAgIGdpdmVuIDpyZWY6YGJlbG93IDxwYWNrYWdlLXBhdGgtcnVsZXM+YC4KKworICogVGhlIGBgX19sb2FkZXJfX2BgIGF0dHJpYnV0ZSBtdXN0IGJlIHNldCB0byB0aGUgbG9hZGVyIG9iamVjdCB0aGF0IGxvYWRlZAorICAgdGhlIG1vZHVsZS4gIFRoaXMgaXMgbW9zdGx5IGZvciBpbnRyb3NwZWN0aW9uIGFuZCByZWxvYWRpbmcsIGJ1dCBjYW4gYmUKKyAgIHVzZWQgZm9yIGFkZGl0aW9uYWwgbG9hZGVyLXNwZWNpZmljIGZ1bmN0aW9uYWxpdHksIGZvciBleGFtcGxlIGdldHRpbmcKKyAgIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgbG9hZGVyLgorCisgKiBUaGUgbW9kdWxlJ3MgYGBfX3BhY2thZ2VfX2BgIGF0dHJpYnV0ZSBzaG91bGQgYmUgc2V0LiAgSXRzIHZhbHVlIG11c3QgYmUgYQorICAgc3RyaW5nLCBidXQgaXQgY2FuIGJlIHRoZSBzYW1lIHZhbHVlIGFzIGl0cyBgYF9fbmFtZV9fYGAuICBJZiB0aGUgYXR0cmlidXRlCisgICBpcyBzZXQgdG8gYGBOb25lYGAgb3IgaXMgbWlzc2luZywgdGhlIGltcG9ydCBzeXN0ZW0gd2lsbCBmaWxsIGl0IGluIHdpdGggYQorICAgbW9yZSBhcHByb3ByaWF0ZSB2YWx1ZS4gIFdoZW4gdGhlIG1vZHVsZSBpcyBhIHBhY2thZ2UsIGl0cyBgYF9fcGFja2FnZV9fYGAKKyAgIHZhbHVlIHNob3VsZCBiZSBzZXQgdG8gaXRzIGBgX19uYW1lX19gYC4gIFdoZW4gdGhlIG1vZHVsZSBpcyBub3QgYSBwYWNrYWdlLAorICAgYGBfX3BhY2thZ2VfX2BgIHNob3VsZCBiZSBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZyBmb3IgdG9wLWxldmVsIG1vZHVsZXMsIG9yCisgICBmb3Igc3VibW9kdWxlcywgdG8gdGhlIHBhcmVudCBwYWNrYWdlJ3MgbmFtZS4gIFNlZSA6cGVwOmAzNjZgIGZvciBmdXJ0aGVyCisgICBkZXRhaWxzLgorCisgICBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIGluc3RlYWQgb2YgYGBfX25hbWVfX2BgIHRvIGNhbGN1bGF0ZSBleHBsaWNpdAorICAgcmVsYXRpdmUgaW1wb3J0cyBmb3IgbWFpbiBtb2R1bGVzLCBhcyBkZWZpbmVkIGluIDpwZXA6YDM2NmAuCisKKyAqIElmIHRoZSBtb2R1bGUgaXMgYSBQeXRob24gbW9kdWxlIChhcyBvcHBvc2VkIHRvIGEgYnVpbHQtaW4gbW9kdWxlIG9yIGEKKyAgIGR5bmFtaWNhbGx5IGxvYWRlZCBleHRlbnNpb24pLCB0aGUgbG9hZGVyIHNob3VsZCBleGVjdXRlIHRoZSBtb2R1bGUncyBjb2RlCisgICBpbiB0aGUgbW9kdWxlJ3MgZ2xvYmFsIG5hbWUgc3BhY2UgKGBgbW9kdWxlLl9fZGljdF9fYGApLgorCisKK01vZHVsZSByZXBycworLS0tLS0tLS0tLS0tCisKK0J5IGRlZmF1bHQsIGFsbCBtb2R1bGVzIGhhdmUgYSB1c2FibGUgcmVwciwgaG93ZXZlciBkZXBlbmRpbmcgb24gdGhlCithdHRyaWJ1dGVzIHNldCBhYm92ZSwgYW5kIGhvb2tzIGluIHRoZSBsb2FkZXIsIHlvdSBjYW4gbW9yZSBleHBsaWNpdGx5IGNvbnRyb2wKK3RoZSByZXByIG9mIG1vZHVsZSBvYmplY3RzLgorCitMb2FkZXJzIG1heSBpbXBsZW1lbnQgYSA6bWV0aDpgbW9kdWxlX3JlcHIoKWAgbWV0aG9kIHdoaWNoIHRha2VzIGEgc2luZ2xlCithcmd1bWVudCwgdGhlIG1vZHVsZSBvYmplY3QuICBXaGVuIGBgcmVwcihtb2R1bGUpYGAgaXMgY2FsbGVkIGZvciBhIG1vZHVsZQord2l0aCBhIGxvYWRlciBzdXBwb3J0aW5nIHRoaXMgcHJvdG9jb2wsIHdoYXRldmVyIGlzIHJldHVybmVkIGZyb20KK2BgbW9kdWxlLl9fbG9hZGVyX18ubW9kdWxlX3JlcHIobW9kdWxlKWBgIGlzIHJldHVybmVkIGFzIHRoZSBtb2R1bGUncyByZXByCit3aXRob3V0IGZ1cnRoZXIgcHJvY2Vzc2luZy4gIFRoaXMgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcuCisKK0lmIHRoZSBtb2R1bGUgaGFzIG5vIGBgX19sb2FkZXJfX2BgIGF0dHJpYnV0ZSwgb3IgdGhlIGxvYWRlciBoYXMgbm8KKzptZXRoOmBtb2R1bGVfcmVwcigpYCBtZXRob2QsIHRoZW4gdGhlIG1vZHVsZSBvYmplY3QgaW1wbGVtZW50YXRpb24gaXRzZWxmCit3aWxsIGNyYWZ0IGEgZGVmYXVsdCByZXByIHVzaW5nIHdoYXRldmVyIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZS4gIEl0IHdpbGwKK3RyeSB0byB1c2UgdGhlIGBgbW9kdWxlLl9fbmFtZV9fYGAsIGBgbW9kdWxlLl9fZmlsZV9fYGAsIGFuZAorYGBtb2R1bGUuX19sb2FkZXJfX2BgIGFzIGlucHV0IGludG8gdGhlIHJlcHIsIHdpdGggZGVmYXVsdHMgZm9yIHdoYXRldmVyCitpbmZvcm1hdGlvbiBpcyBtaXNzaW5nLgorCitIZXJlIGFyZSB0aGUgZXhhY3QgcnVsZXMgdXNlZDoKKworICogSWYgdGhlIG1vZHVsZSBoYXMgYSBgYF9fbG9hZGVyX19gYCBhbmQgdGhhdCBsb2FkZXIgaGFzIGEKKyAgIDptZXRoOmBtb2R1bGVfcmVwcigpYCBtZXRob2QsIGNhbGwgaXQgd2l0aCBhIHNpbmdsZSBhcmd1bWVudCwgd2hpY2ggaXMgdGhlCisgICBtb2R1bGUgb2JqZWN0LiAgVGhlIHZhbHVlIHJldHVybmVkIGlzIHVzZWQgYXMgdGhlIG1vZHVsZSdzIHJlcHIuCisKKyAqIElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gOm1ldGg6YG1vZHVsZV9yZXByKClgLCB0aGUgZXhjZXB0aW9uIGlzIGNhdWdodAorICAgYW5kIGRpc2NhcmRlZCwgYW5kIHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgbW9kdWxlJ3MgcmVwciBjb250aW51ZXMgYXMgaWYKKyAgIDptZXRoOmBtb2R1bGVfcmVwcigpYCBkaWQgbm90IGV4aXN0LgorCisgKiBJZiB0aGUgbW9kdWxlIGhhcyBhIGBgX19maWxlX19gYCBhdHRyaWJ1dGUsIHRoaXMgaXMgdXNlZCBhcyBwYXJ0IG9mIHRoZQorICAgbW9kdWxlJ3MgcmVwci4KKworICogSWYgdGhlIG1vZHVsZSBoYXMgbm8gYGBfX2ZpbGVfX2BgIGJ1dCBkb2VzIGhhdmUgYSBgYF9fbG9hZGVyX19gYCwgdGhlbiB0aGUKKyAgIGxvYWRlcidzIHJlcHIgaXMgdXNlZCBhcyBwYXJ0IG9mIHRoZSBtb2R1bGUncyByZXByLgorCisgKiBPdGhlcndpc2UsIGp1c3QgdXNlIHRoZSBtb2R1bGUncyBgYF9fbmFtZV9fYGAgaW4gdGhlIHJlcHIuCisKK1RoaXMgZXhhbXBsZSwgZnJvbSA6cGVwOmA0MjBgIHNob3dzIGhvdyBhIGxvYWRlciBjYW4gY3JhZnQgaXRzIG93biBtb2R1bGUKK3JlcHI6OgorCisgICAgY2xhc3MgTmFtZXNwYWNlTG9hZGVyOgorICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgZGVmIG1vZHVsZV9yZXByKGNscywgbW9kdWxlKToKKyAgICAgICAgICAgIHJldHVybiAiPG1vZHVsZSAne30nIChuYW1lc3BhY2UpPiIuZm9ybWF0KG1vZHVsZS5fX25hbWVfXykKKworCisuLiBfcGFja2FnZS1wYXRoLXJ1bGVzOgorCittb2R1bGUuX19wYXRoX18KKy0tLS0tLS0tLS0tLS0tLQorCitCeSBkZWZpbml0aW9uLCBpZiBhIG1vZHVsZSBoYXMgYW4gYGBfX3BhdGhfX2BgIGF0dHJpYnV0ZSwgaXQgaXMgYSBwYWNrYWdlLAorcmVnYXJkbGVzcyBvZiBpdHMgdmFsdWUuCisKK0EgcGFja2FnZSdzIGBgX19wYXRoX19gYCBhdHRyaWJ1dGUgaXMgdXNlZCBkdXJpbmcgaW1wb3J0cyBvZiBpdHMgc3VicGFja2FnZXMuCitXaXRoaW4gdGhlIGltcG9ydCBtYWNoaW5lcnksIGl0IGZ1bmN0aW9ucyBtdWNoIHRoZSBzYW1lIGFzIDpkYXRhOmBzeXMucGF0aGAsCitpLmUuIHByb3ZpZGluZyBhIGxpc3Qgb2YgbG9jYXRpb25zIHRvIHNlYXJjaCBmb3IgbW9kdWxlcyBkdXJpbmcgaW1wb3J0LgorSG93ZXZlciwgYGBfX3BhdGhfX2BgIGlzIHR5cGljYWxseSBtdWNoIG1vcmUgY29uc3RyYWluZWQgdGhhbgorOmRhdGE6YHN5cy5wYXRoYC4KKworYGBfX3BhdGhfX2BgIG11c3QgYmUgYW4gaXRlcmFibGUgb2Ygc3RyaW5ncywgYnV0IGl0IG1heSBiZSBlbXB0eS4KK1RoZSBzYW1lIHJ1bGVzIHVzZWQgZm9yIDpkYXRhOmBzeXMucGF0aGAgYWxzbyBhcHBseSB0byBhIHBhY2thZ2UncworYGBfX3BhdGhfX2BgLCBhbmQgOmRhdGE6YHN5cy5wYXRoX2hvb2tzYCAoZGVzY3JpYmVkIGJlbG93KSBhcmUKK2NvbnN1bHRlZCB3aGVuIHRyYXZlcnNpbmcgYSBwYWNrYWdlJ3MgYGBfX3BhdGhfX2BgLgorCitBIHBhY2thZ2UncyBgYF9faW5pdF9fLnB5YGAgZmlsZSBtYXkgc2V0IG9yIGFsdGVyIHRoZSBwYWNrYWdlJ3MgYGBfX3BhdGhfX2BgCithdHRyaWJ1dGUsIGFuZCB0aGlzIHdhcyB0eXBpY2FsbHkgdGhlIHdheSBuYW1lc3BhY2UgcGFja2FnZXMgd2VyZSBpbXBsZW1lbnRlZAorcHJpb3IgdG8gOnBlcDpgNDIwYC4gIFdpdGggdGhlIGFkb3B0aW9uIG9mIDpwZXA6YDQyMGAsIG5hbWVzcGFjZSBwYWNrYWdlcyBubworbG9uZ2VyIG5lZWQgdG8gc3VwcGx5IGBgX19pbml0X18ucHlgYCBmaWxlcyBjb250YWluaW5nIG9ubHkgYGBfX3BhdGhfX2BgCittYW5pcHVsYXRpb24gY29kZTsgdGhlIG5hbWVzcGFjZSBsb2FkZXIgYXV0b21hdGljYWxseSBzZXRzIGBgX19wYXRoX19gYAorY29ycmVjdGx5IGZvciB0aGUgbmFtZXNwYWNlIHBhY2thZ2UuCisKKworVGhlIFBhdGggQmFzZWQgRmluZGVyCis9PT09PT09PT09PT09PT09PT09PT0KKworLi4gaW5kZXg6OgorICAgIHNpbmdsZTogcGF0aCBiYXNlZCBmaW5kZXIKKworQXMgbWVudGlvbmVkIHByZXZpb3VzbHksIFB5dGhvbiBjb21lcyB3aXRoIHNldmVyYWwgZGVmYXVsdCBtZXRhIHBhdGggZmluZGVycy4KK09uZSBvZiB0aGVzZSwgY2FsbGVkIHRoZSA6dGVybTpgcGF0aCBiYXNlZCBmaW5kZXJgLCBzZWFyY2hlcyBhbiA6dGVybTpgaW1wb3J0CitwYXRoYCwgd2hpY2ggY29udGFpbnMgYSBsaXN0IG9mIDp0ZXJtOmBwYXRoIGVudHJpZXMgPHBhdGggZW50cnk+YC4gIEVhY2ggcGF0aAorZW50cnkgbmFtZXMgYSBsb2NhdGlvbiB0byBzZWFyY2ggZm9yIG1vZHVsZXMuCisKK1RoZSBwYXRoIGJhc2VkIGZpbmRlciBpdHNlbGYgZG9lc24ndCBrbm93IGhvdyB0byBpbXBvcnQgYW55dGhpbmcuIEluc3RlYWQsIGl0Cit0cmF2ZXJzZXMgdGhlIGluZGl2aWR1YWwgcGF0aCBlbnRyaWVzLCBhc3NvY2lhdGluZyBlYWNoIG9mIHRoZW0gd2l0aCBhCitwYXRoIGVudHJ5IGZpbmRlciB0aGF0IGtub3dzIGhvdyB0byBoYW5kbGUgdGhhdCBwYXJ0aWN1bGFyIGtpbmQgb2YgcGF0aC4KKworVGhlIGRlZmF1bHQgc2V0IG9mIHBhdGggZW50cnkgZmluZGVycyBpbXBsZW1lbnQgYWxsIHRoZSBzZW1hbnRpY3MgZm9yIGZpbmRpbmcKK21vZHVsZXMgb24gdGhlIGZpbGUgc3lzdGVtLCBoYW5kbGluZyBzcGVjaWFsIGZpbGUgdHlwZXMgc3VjaCBhcyBQeXRob24gc291cmNlCitjb2RlIChgYC5weWBgIGZpbGVzKSwgUHl0aG9uIGJ5dGUgY29kZSAoYGAucHljYGAgYW5kIGBgLnB5b2BgIGZpbGVzKSBhbmQKK3NoYXJlZCBsaWJyYXJpZXMgKGUuZy4gYGAuc29gYCBmaWxlcykuIFdoZW4gc3VwcG9ydGVkIGJ5IHRoZSA6bW9kOmB6aXBpbXBvcnRgCittb2R1bGUgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnksIHRoZSBkZWZhdWx0IHBhdGggZW50cnkgZmluZGVycyBhbHNvIGhhbmRsZQorbG9hZGluZyBhbGwgb2YgdGhlc2UgZmlsZSB0eXBlcyAob3RoZXIgdGhhbiBzaGFyZWQgbGlicmFyaWVzKSBmcm9tIHppcGZpbGVzLgorCitQYXRoIGVudHJpZXMgbmVlZCBub3QgYmUgbGltaXRlZCB0byBmaWxlIHN5c3RlbSBsb2NhdGlvbnMuICBUaGV5IGNhbiByZWZlciB0bworVVJMcywgZGF0YWJhc2UgcXVlcmllcywgb3IgYW55IG90aGVyIGxvY2F0aW9uIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBhcyBhCitzdHJpbmcuCisKK1RoZSBwYXRoIGJhc2VkIGZpbmRlciBwcm92aWRlcyBhZGRpdGlvbmFsIGhvb2tzIGFuZCBwcm90b2NvbHMgc28gdGhhdCB5b3UKK2NhbiBleHRlbmQgYW5kIGN1c3RvbWl6ZSB0aGUgdHlwZXMgb2Ygc2VhcmNoYWJsZSBwYXRoIGVudHJpZXMuICBGb3IgZXhhbXBsZSwKK2lmIHlvdSB3YW50ZWQgdG8gc3VwcG9ydCBwYXRoIGVudHJpZXMgYXMgbmV0d29yayBVUkxzLCB5b3UgY291bGQgd3JpdGUgYSBob29rCit0aGF0IGltcGxlbWVudHMgSFRUUCBzZW1hbnRpY3MgdG8gZmluZCBtb2R1bGVzIG9uIHRoZSB3ZWIuICBUaGlzIGhvb2sgKGEKK2NhbGxhYmxlKSB3b3VsZCByZXR1cm4gYSA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJgIHN1cHBvcnRpbmcgdGhlIHByb3RvY29sCitkZXNjcmliZWQgYmVsb3csIHdoaWNoIHdhcyB0aGVuIHVzZWQgdG8gZ2V0IGEgbG9hZGVyIGZvciB0aGUgbW9kdWxlIGZyb20gdGhlCit3ZWIuCisKK0Egd29yZCBvZiB3YXJuaW5nOiB0aGlzIHNlY3Rpb24gYW5kIHRoZSBwcmV2aW91cyBib3RoIHVzZSB0aGUgdGVybSAqZmluZGVyKiwKK2Rpc3Rpbmd1aXNoaW5nIGJldHdlZW4gdGhlbSBieSB1c2luZyB0aGUgdGVybXMgOnRlcm06YG1ldGEgcGF0aCBmaW5kZXJgIGFuZAorOnRlcm06YHBhdGggZW50cnkgZmluZGVyYC4gIFRoZXNlIHR3byB0eXBlcyBvZiBmaW5kZXJzIGFyZSB2ZXJ5IHNpbWlsYXIsCitzdXBwb3J0IHNpbWlsYXIgcHJvdG9jb2xzLCBhbmQgZnVuY3Rpb24gaW4gc2ltaWxhciB3YXlzIGR1cmluZyB0aGUgaW1wb3J0Citwcm9jZXNzLCBidXQgaXQncyBpbXBvcnRhbnQgdG8ga2VlcCBpbiBtaW5kIHRoYXQgdGhleSBhcmUgc3VidGx5IGRpZmZlcmVudC4KK0luIHBhcnRpY3VsYXIsIG1ldGEgcGF0aCBmaW5kZXJzIG9wZXJhdGUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgaW1wb3J0Citwcm9jZXNzLCBhcyBrZXllZCBvZmYgdGhlIDpkYXRhOmBzeXMubWV0YV9wYXRoYCB0cmF2ZXJzYWwuCisKK0J5IGNvbnRyYXN0LCBwYXRoIGVudHJ5IGZpbmRlcnMgYXJlIGluIGEgc2Vuc2UgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsCitvZiB0aGUgcGF0aCBiYXNlZCBmaW5kZXIsIGFuZCBpbiBmYWN0LCBpZiB0aGUgcGF0aCBiYXNlZCBmaW5kZXIgd2VyZSB0byBiZQorcmVtb3ZlZCBmcm9tIDpkYXRhOmBzeXMubWV0YV9wYXRoYCwgbm9uZSBvZiB0aGUgcGF0aCBlbnRyeSBmaW5kZXIgc2VtYW50aWNzCit3b3VsZCBiZSBpbnZva2VkLgorCisKK1BhdGggZW50cnkgZmluZGVycworLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGluZGV4OjoKKyAgICBzaW5nbGU6IHN5cy5wYXRoCisgICAgc2luZ2xlOiBzeXMucGF0aF9ob29rcworICAgIHNpbmdsZTogc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUKKyAgICBzaW5nbGU6IFBZVEhPTlBBVEgKKworVGhlIDp0ZXJtOmBwYXRoIGJhc2VkIGZpbmRlcmAgaXMgcmVzcG9uc2libGUgZm9yIGZpbmRpbmcgYW5kIGxvYWRpbmcgUHl0aG9uCittb2R1bGVzIGFuZCBwYWNrYWdlcyB3aG9zZSBsb2NhdGlvbiBpcyBzcGVjaWZpZWQgd2l0aCBhIHN0cmluZyA6dGVybTpgcGF0aAorZW50cnlgLiAgTW9zdCBwYXRoIGVudHJpZXMgbmFtZSBsb2NhdGlvbnMgaW4gdGhlIGZpbGUgc3lzdGVtLCBidXQgdGhleSBuZWVkCitub3QgYmUgbGltaXRlZCB0byB0aGlzLgorCitBcyBhIG1ldGEgcGF0aCBmaW5kZXIsIHRoZSA6dGVybTpgcGF0aCBiYXNlZCBmaW5kZXJgIGltcGxlbWVudHMgdGhlCis6bWV0aDpgZmluZF9tb2R1bGUoKWAgcHJvdG9jb2wgcHJldmlvdXNseSBkZXNjcmliZWQsIGhvd2V2ZXIgaXQgZXhwb3NlcworYWRkaXRpb25hbCBob29rcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGN1c3RvbWl6ZSBob3cgbW9kdWxlcyBhcmUgZm91bmQgYW5kCitsb2FkZWQgZnJvbSB0aGUgOnRlcm06YGltcG9ydCBwYXRoYC4KKworVGhyZWUgdmFyaWFibGVzIGFyZSB1c2VkIGJ5IHRoZSA6dGVybTpgcGF0aCBiYXNlZCBmaW5kZXJgLCA6ZGF0YTpgc3lzLnBhdGhgLAorOmRhdGE6YHN5cy5wYXRoX2hvb2tzYCBhbmQgOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYC4gIFRoZSBgYF9fcGF0aF9fYGAKK2F0dHJpYnV0ZXMgb24gcGFja2FnZSBvYmplY3RzIGFyZSBhbHNvIHVzZWQuICBUaGVzZSBwcm92aWRlIGFkZGl0aW9uYWwgd2F5cwordGhhdCB0aGUgaW1wb3J0IG1hY2hpbmVyeSBjYW4gYmUgY3VzdG9taXplZC4KKworOmRhdGE6YHN5cy5wYXRoYCBjb250YWlucyBhIGxpc3Qgb2Ygc3RyaW5ncyBwcm92aWRpbmcgc2VhcmNoIGxvY2F0aW9ucyBmb3IKK21vZHVsZXMgYW5kIHBhY2thZ2VzLiAgSXQgaXMgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgOmRhdGE6YFBZVEhPTlBBVEhgCitlbnZpcm9ubWVudCB2YXJpYWJsZSBhbmQgdmFyaW91cyBvdGhlciBpbnN0YWxsYXRpb24tIGFuZAoraW1wbGVtZW50YXRpb24tc3BlY2lmaWMgZGVmYXVsdHMuICBFbnRyaWVzIGluIDpkYXRhOmBzeXMucGF0aGAgY2FuIG5hbWUKK2RpcmVjdG9yaWVzIG9uIHRoZSBmaWxlIHN5c3RlbSwgemlwIGZpbGVzLCBhbmQgcG90ZW50aWFsbHkgb3RoZXIgImxvY2F0aW9ucyIKKyhzZWUgdGhlIDptb2Q6YHNpdGVgIG1vZHVsZSkgdGhhdCBzaG91bGQgYmUgc2VhcmNoZWQgZm9yIG1vZHVsZXMsIHN1Y2ggYXMKK1VSTHMsIG9yIGRhdGFiYXNlIHF1ZXJpZXMuICBPbmx5IHN0cmluZ3MgYW5kIGJ5dGVzIHNob3VsZCBiZSBwcmVzZW50IG9uCis6ZGF0YTpgc3lzLnBhdGhgOyBhbGwgb3RoZXIgZGF0YSB0eXBlcyBhcmUgaWdub3JlZC4gIFRoZSBlbmNvZGluZyBvZiBieXRlcworZW50cmllcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBpbmRpdmlkdWFsIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcnMgPHBhdGggZW50cnkKK2ZpbmRlcj5gLgorCitUaGUgOnRlcm06YHBhdGggYmFzZWQgZmluZGVyYCBpcyBhIDp0ZXJtOmBtZXRhIHBhdGggZmluZGVyYCwgc28gdGhlIGltcG9ydAorbWFjaGluZXJ5IGJlZ2lucyB0aGUgOnRlcm06YGltcG9ydCBwYXRoYCBzZWFyY2ggYnkgY2FsbGluZyB0aGUgcGF0aAorYmFzZWQgZmluZGVyJ3MgOm1ldGg6YGZpbmRfbW9kdWxlKClgIG1ldGhvZCBhcyBkZXNjcmliZWQgcHJldmlvdXNseS4gIFdoZW4KK3RoZSBgYHBhdGhgYCBhcmd1bWVudCB0byA6bWV0aDpgZmluZF9tb2R1bGUoKWAgaXMgZ2l2ZW4sIGl0IHdpbGwgYmUgYQorbGlzdCBvZiBzdHJpbmcgcGF0aHMgdG8gdHJhdmVyc2UgLSB0eXBpY2FsbHkgYSBwYWNrYWdlJ3MgYGBfX3BhdGhfX2BgCithdHRyaWJ1dGUgZm9yIGFuIGltcG9ydCB3aXRoaW4gdGhhdCBwYWNrYWdlLiAgSWYgdGhlIGBgcGF0aGBgIGFyZ3VtZW50CitpcyBgYE5vbmVgYCwgdGhpcyBpbmRpY2F0ZXMgYSB0b3AgbGV2ZWwgaW1wb3J0IGFuZCA6ZGF0YTpgc3lzLnBhdGhgIGlzIHVzZWQuCisKK1RoZSBwYXRoIGJhc2VkIGZpbmRlciBpdGVyYXRlcyBvdmVyIGV2ZXJ5IGVudHJ5IGluIHRoZSBzZWFyY2ggcGF0aCwgYW5kCitmb3IgZWFjaCBvZiB0aGVzZSwgbG9va3MgZm9yIGFuIGFwcHJvcHJpYXRlIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAgZm9yIHRoZQorcGF0aCBlbnRyeS4gIEJlY2F1c2UgdGhpcyBjYW4gYmUgYW4gZXhwZW5zaXZlIG9wZXJhdGlvbiAoZS5nLiB0aGVyZSBtYXkgYmUKK2BzdGF0KClgIGNhbGwgb3ZlcmhlYWRzIGZvciB0aGlzIHNlYXJjaCksIHRoZSBwYXRoIGJhc2VkIGZpbmRlciBtYWludGFpbnMKK2EgY2FjaGUgbWFwcGluZyBwYXRoIGVudHJpZXMgdG8gcGF0aCBlbnRyeSBmaW5kZXJzLiAgVGhpcyBjYWNoZSBpcyBtYWludGFpbmVkCitpbiA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIChkZXNwaXRlIHRoZSBuYW1lLCB0aGlzIGNhY2hlIGFjdHVhbGx5CitzdG9yZXMgZmluZGVyIG9iamVjdHMgcmF0aGVyIHRoYW4gYmVpbmcgbGltaXRlZCB0byA6dGVybTpgaW1wb3J0ZXJgIG9iamVjdHMpLgorSW4gdGhpcyB3YXksIHRoZSBleHBlbnNpdmUgc2VhcmNoIGZvciBhIHBhcnRpY3VsYXIgOnRlcm06YHBhdGggZW50cnlgCitsb2NhdGlvbidzIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAgbmVlZCBvbmx5IGJlIGRvbmUgb25jZS4gIFVzZXIgY29kZSBpcworZnJlZSB0byByZW1vdmUgY2FjaGUgZW50cmllcyBmcm9tIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgZm9yY2luZwordGhlIHBhdGggYmFzZWQgZmluZGVyIHRvIHBlcmZvcm0gdGhlIHBhdGggZW50cnkgc2VhcmNoIGFnYWluIFsjZm5waWNdXy4KKworSWYgdGhlIHBhdGggZW50cnkgaXMgbm90IHByZXNlbnQgaW4gdGhlIGNhY2hlLCB0aGUgcGF0aCBiYXNlZCBmaW5kZXIgaXRlcmF0ZXMKK292ZXIgZXZlcnkgY2FsbGFibGUgaW4gOmRhdGE6YHN5cy5wYXRoX2hvb2tzYC4gIEVhY2ggb2YgdGhlIDp0ZXJtOmBwYXRoIGVudHJ5Citob29rcyA8cGF0aCBlbnRyeSBob29rPmAgaW4gdGhpcyBsaXN0IGlzIGNhbGxlZCB3aXRoIGEgc2luZ2xlIGFyZ3VtZW50LCB0aGUKK3BhdGggZW50cnkgdG8gYmUgc2VhcmNoZWQuICBUaGlzIGNhbGxhYmxlIG1heSBlaXRoZXIgcmV0dXJuIGEgOnRlcm06YHBhdGgKK2VudHJ5IGZpbmRlcmAgdGhhdCBjYW4gaGFuZGxlIHRoZSBwYXRoIGVudHJ5LCBvciBpdCBtYXkgcmFpc2UKKzpleGM6YEltcG9ydEVycm9yYC4gIEFuIDpleGM6YEltcG9ydEVycm9yYCBpcyB1c2VkIGJ5IHRoZSBwYXRoIGJhc2VkIGZpbmRlciB0bworc2lnbmFsIHRoYXQgdGhlIGhvb2sgY2Fubm90IGZpbmQgYSA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJgIGZvciB0aGF0Cis6dGVybTpgcGF0aCBlbnRyeWAuICBUaGUgZXhjZXB0aW9uIGlzIGlnbm9yZWQgYW5kIDp0ZXJtOmBpbXBvcnQgcGF0aGAKK2l0ZXJhdGlvbiBjb250aW51ZXMuICBUaGUgaG9vayBzaG91bGQgZXhwZWN0IGVpdGhlciBhIHN0cmluZyBvciBieXRlcyBvYmplY3Q7Cit0aGUgZW5jb2Rpbmcgb2YgYnl0ZXMgb2JqZWN0cyBpcyB1cCB0byB0aGUgaG9vayAoZS5nLiBpdCBtYXkgYmUgYSBmaWxlIHN5c3RlbQorZW5jb2RpbmcsIFVURi04LCBvciBzb21ldGhpbmcgZWxzZSksIGFuZCBpZiB0aGUgaG9vayBjYW5ub3QgZGVjb2RlIHRoZQorYXJndW1lbnQsIGl0IHNob3VsZCByYWlzZSA6ZXhjOmBJbXBvcnRFcnJvcmAuCisKK0lmIDpkYXRhOmBzeXMucGF0aF9ob29rc2AgaXRlcmF0aW9uIGVuZHMgd2l0aCBubyA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJgCitiZWluZyByZXR1cm5lZCwgdGhlbiB0aGUgcGF0aCBiYXNlZCBmaW5kZXIncyA6bWV0aDpgZmluZF9tb2R1bGUoKWAgbWV0aG9kCit3aWxsIHN0b3JlIGBgTm9uZWBgIGluIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgKHRvIGluZGljYXRlIHRoYXQKK3RoZXJlIGlzIG5vIGZpbmRlciBmb3IgdGhpcyBwYXRoIGVudHJ5KSBhbmQgcmV0dXJuIGBgTm9uZWBgLCBpbmRpY2F0aW5nIHRoYXQKK3RoaXMgOnRlcm06YG1ldGEgcGF0aCBmaW5kZXJgIGNvdWxkIG5vdCBmaW5kIHRoZSBtb2R1bGUuCisKK0lmIGEgOnRlcm06YHBhdGggZW50cnkgZmluZGVyYCAqaXMqIHJldHVybmVkIGJ5IG9uZSBvZiB0aGUgOnRlcm06YHBhdGggZW50cnkKK2hvb2tgIGNhbGxhYmxlcyBvbiA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgLCB0aGVuIHRoZSBmb2xsb3dpbmcgcHJvdG9jb2wgaXMgdXNlZAordG8gYXNrIHRoZSBmaW5kZXIgZm9yIGEgbW9kdWxlIGxvYWRlciwgd2hpY2ggaXMgdGhlbiB1c2VkIHRvIGxvYWQgdGhlIG1vZHVsZS4KKworCitQYXRoIGVudHJ5IGZpbmRlciBwcm90b2NvbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW4gb3JkZXIgdG8gc3VwcG9ydCBpbXBvcnRzIG9mIG1vZHVsZXMgYW5kIGluaXRpYWxpemVkIHBhY2thZ2VzIGFuZCBhbHNvIHRvCitjb250cmlidXRlIHBvcnRpb25zIHRvIG5hbWVzcGFjZSBwYWNrYWdlcywgcGF0aCBlbnRyeSBmaW5kZXJzIG11c3QgaW1wbGVtZW50Cit0aGUgOm1ldGg6YGZpbmRfbG9hZGVyKClgIG1ldGhvZC4KKworOm1ldGg6YGZpbmRfbG9hZGVyKClgIHRha2VzIG9uZSBhcmd1bWVudCwgdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZQorbW9kdWxlIGJlaW5nIGltcG9ydGVkLiAgOm1ldGg6YGZpbmRfbG9hZGVyKClgIHJldHVybnMgYSAyLXR1cGxlIHdoZXJlIHRoZQorZmlyc3QgaXRlbSBpcyB0aGUgbG9hZGVyIGFuZCB0aGUgc2Vjb25kIGl0ZW0gaXMgYSBuYW1lc3BhY2UgOnRlcm06YHBvcnRpb25gLgorV2hlbiB0aGUgZmlyc3QgaXRlbSAoaS5lLiB0aGUgbG9hZGVyKSBpcyBgYE5vbmVgYCwgdGhpcyBtZWFucyB0aGF0IHdoaWxlIHRoZQorcGF0aCBlbnRyeSBmaW5kZXIgZG9lcyBub3QgaGF2ZSBhIGxvYWRlciBmb3IgdGhlIG5hbWVkIG1vZHVsZSwgaXQga25vd3MgdGhhdCB0aGUKK3BhdGggZW50cnkgY29udHJpYnV0ZXMgdG8gYSBuYW1lc3BhY2UgcG9ydGlvbiBmb3IgdGhlIG5hbWVkIG1vZHVsZS4gIFRoaXMgd2lsbAorYWxtb3N0IGFsd2F5cyBiZSB0aGUgY2FzZSB3aGVyZSBQeXRob24gaXMgYXNrZWQgdG8gaW1wb3J0IGEgbmFtZXNwYWNlIHBhY2thZ2UKK3RoYXQgaGFzIG5vIHBoeXNpY2FsIHByZXNlbmNlIG9uIHRoZSBmaWxlIHN5c3RlbS4gIFdoZW4gYSBwYXRoIGVudHJ5IGZpbmRlcgorcmV0dXJucyBgYE5vbmVgYCBmb3IgdGhlIGxvYWRlciwgdGhlIHNlY29uZCBpdGVtIG9mIHRoZSAyLXR1cGxlIHJldHVybiB2YWx1ZQorbXVzdCBiZSBhIHNlcXVlbmNlLCBhbHRob3VnaCBpdCBjYW4gYmUgZW1wdHkuCisKK0lmIDptZXRoOmBmaW5kX2xvYWRlcigpYCByZXR1cm5zIGEgbm9uLWBgTm9uZWBgIGxvYWRlciB2YWx1ZSwgdGhlIHBvcnRpb24gaXMKK2lnbm9yZWQgYW5kIHRoZSBsb2FkZXIgaXMgcmV0dXJuZWQgZnJvbSB0aGUgcGF0aCBiYXNlZCBmaW5kZXIsIHRlcm1pbmF0aW5nCit0aGUgc2VhcmNoIHRocm91Z2ggdGhlIHBhdGggZW50cmllcy4KKworRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBpbXBvcnQKK3Byb3RvY29sLCBtYW55IHBhdGggZW50cnkgZmluZGVycyBhbHNvIHN1cHBvcnQgdGhlIHNhbWUsCit0cmFkaXRpb25hbCA6bWV0aDpgZmluZF9tb2R1bGUoKWAgbWV0aG9kIHRoYXQgbWV0YSBwYXRoIGZpbmRlcnMgc3VwcG9ydC4KK0hvd2V2ZXIgcGF0aCBlbnRyeSBmaW5kZXIgOm1ldGg6YGZpbmRfbW9kdWxlKClgIG1ldGhvZHMgYXJlIG5ldmVyIGNhbGxlZAord2l0aCBhIGBgcGF0aGBgIGFyZ3VtZW50ICh0aGV5IGFyZSBleHBlY3RlZCB0byByZWNvcmQgdGhlIGFwcHJvcHJpYXRlCitwYXRoIGluZm9ybWF0aW9uIGZyb20gdGhlIGluaXRpYWwgY2FsbCB0byB0aGUgcGF0aCBob29rKS4KKworVGhlIDptZXRoOmBmaW5kX21vZHVsZSgpYCBtZXRob2Qgb24gcGF0aCBlbnRyeSBmaW5kZXJzIGlzIGRlcHJlY2F0ZWQsCithcyBpdCBkb2VzIG5vdCBhbGxvdyB0aGUgcGF0aCBlbnRyeSBmaW5kZXIgdG8gY29udHJpYnV0ZSBwb3J0aW9ucyB0bworbmFtZXNwYWNlIHBhY2thZ2VzLiBJbnN0ZWFkIHBhdGggZW50cnkgZmluZGVycyBzaG91bGQgaW1wbGVtZW50IHRoZQorOm1ldGg6YGZpbmRfbG9hZGVyKClgIG1ldGhvZCBhcyBkZXNjcmliZWQgYWJvdmUuIElmIGl0IGV4aXN0cyBvbiB0aGUgcGF0aAorZW50cnkgZmluZGVyLCB0aGUgaW1wb3J0IHN5c3RlbSB3aWxsIGFsd2F5cyBjYWxsIDptZXRoOmBmaW5kX2xvYWRlcigpYAoraW4gcHJlZmVyZW5jZSB0byA6bWV0aDpgZmluZF9tb2R1bGUoKWAuCisKKworUmVwbGFjaW5nIHRoZSBzdGFuZGFyZCBpbXBvcnQgc3lzdGVtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIG1vc3QgcmVsaWFibGUgbWVjaGFuaXNtIGZvciByZXBsYWNpbmcgdGhlIGVudGlyZSBpbXBvcnQgc3lzdGVtIGlzIHRvCitkZWxldGUgdGhlIGRlZmF1bHQgY29udGVudHMgb2YgOmRhdGE6YHN5cy5tZXRhX3BhdGhgLCByZXBsYWNpbmcgdGhlbQorZW50aXJlbHkgd2l0aCBhIGN1c3RvbSBtZXRhIHBhdGggaG9vay4KKworSWYgaXQgaXMgYWNjZXB0YWJsZSB0byBvbmx5IGFsdGVyIHRoZSBiZWhhdmlvdXIgb2YgaW1wb3J0IHN0YXRlbWVudHMKK3dpdGhvdXQgYWZmZWN0aW5nIG90aGVyIEFQSXMgdGhhdCBhY2Nlc3MgdGhlIGltcG9ydCBzeXN0ZW0sIHRoZW4gcmVwbGFjaW5nCit0aGUgYnVpbHRpbiA6ZnVuYzpgX19pbXBvcnRfX2AgZnVuY3Rpb24gbWF5IGJlIHN1ZmZpY2llbnQuIFRoaXMgdGVjaG5pcXVlCittYXkgYWxzbyBiZSBlbXBsb3llZCBhdCB0aGUgbW9kdWxlIGxldmVsIHRvIG9ubHkgYWx0ZXIgdGhlIGJlaGF2aW91ciBvZgoraW1wb3J0IHN0YXRlbWVudHMgd2l0aGluIHRoYXQgbW9kdWxlLgorCitUbyBzZWxlY3RpdmVseSBwcmV2ZW50IGltcG9ydCBvZiBzb21lIG1vZHVsZXMgZnJvbSBhIGhvb2sgZWFybHkgb24gdGhlCittZXRhIHBhdGggKHJhdGhlciB0aGFuIGRpc2FibGluZyB0aGUgc3RhbmRhcmQgaW1wb3J0IHN5c3RlbSBlbnRpcmVseSksCitpdCBpcyBzdWZmaWNpZW50IHRvIHJhaXNlIDpleGM6YEltcG9ydEVycm9yYCBkaXJlY3RseSBmcm9tCis6bWV0aDpgZmluZF9tb2R1bGVgIGluc3RlYWQgb2YgcmV0dXJuaW5nIGBgTm9uZWBgLiBUaGUgbGF0dGVyIGluZGljYXRlcwordGhhdCB0aGUgbWV0YSBwYXRoIHNlYXJjaCBzaG91bGQgY29udGludWUuIHdoaWxlIHJhaXNpbmcgYW4gZXhjZXB0aW9uCit0ZXJtaW5hdGVzIGl0IGltbWVkaWF0ZWx5LgorCisKK09wZW4gaXNzdWVzCis9PT09PT09PT09PQorCitYWFggSXQgd291bGQgYmUgcmVhbGx5IG5pY2UgdG8gaGF2ZSBhIGRpYWdyYW0uCisKK1hYWCAqIChpbXBvcnRfbWFjaGluZXJ5LnJzdCkgaG93IGFib3V0IGEgc2VjdGlvbiBkZXZvdGVkIGp1c3QgdG8gdGhlCithdHRyaWJ1dGVzIG9mIG1vZHVsZXMgYW5kIHBhY2thZ2VzLCBwZXJoYXBzIGV4cGFuZGluZyB1cG9uIG9yIHN1cHBsYW50aW5nIHRoZQorcmVsYXRlZCBlbnRyaWVzIGluIHRoZSBkYXRhIG1vZGVsIHJlZmVyZW5jZSBwYWdlPworCitYWFggcnVucHksIHBrZ3V0aWwsIGV0IGFsIGluIHRoZSBsaWJyYXJ5IG1hbnVhbCBzaG91bGQgYWxsIGdldCAiU2VlIEFsc28iCitsaW5rcyBhdCB0aGUgdG9wIHBvaW50aW5nIHRvIHRoZSBuZXcgaW1wb3J0IHN5c3RlbSBzZWN0aW9uLgorCisKK1JlZmVyZW5jZXMKKz09PT09PT09PT0KKworVGhlIGltcG9ydCBtYWNoaW5lcnkgaGFzIGV2b2x2ZWQgY29uc2lkZXJhYmx5IHNpbmNlIFB5dGhvbidzIGVhcmx5IGRheXMuICBUaGUKK29yaWdpbmFsIGBzcGVjaWZpY2F0aW9uIGZvciBwYWNrYWdlcworPGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb2MvZXNzYXlzL3BhY2thZ2VzLmh0bWw+YF8gaXMgc3RpbGwgYXZhaWxhYmxlIHRvIHJlYWQsCithbHRob3VnaCBzb21lIGRldGFpbHMgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSB3cml0aW5nIG9mIHRoYXQgZG9jdW1lbnQuCisKK1RoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgd2FzIDpwZXA6YDMwMmAsIHdpdGgKK3N1YnNlcXVlbnQgZXh0ZW5zaW9uIGluIDpwZXA6YDQyMGAuCisKKzpwZXA6YDQyMGAgaW50cm9kdWNlZCA6dGVybTpgbmFtZXNwYWNlIHBhY2thZ2VzIDxuYW1lc3BhY2UgcGFja2FnZT5gIGZvcgorUHl0aG9uIDMuMy4gIDpwZXA6YDQyMGAgYWxzbyBpbnRyb2R1Y2VkIHRoZSA6bWV0aDpgZmluZF9sb2FkZXJgIHByb3RvY29sIGFzIGFuCithbHRlcm5hdGl2ZSB0byA6bWV0aDpgZmluZF9tb2R1bGVgLgorCis6cGVwOmAzNjZgIGRlc2NyaWJlcyB0aGUgYWRkaXRpb24gb2YgdGhlIGBgX19wYWNrYWdlX19gYCBhdHRyaWJ1dGUgZm9yCitleHBsaWNpdCByZWxhdGl2ZSBpbXBvcnRzIGluIG1haW4gbW9kdWxlcy4KKworOnBlcDpgMzI4YCBpbnRyb2R1Y2VkIGFic29sdXRlIGFuZCBleHBsaWNpdCByZWxhdGl2ZSBpbXBvcnRzIGFuZCBpbml0aWFsbHkKK3Byb3Bvc2VkIGBgX19uYW1lX19gYCBmb3Igc2VtYW50aWNzIDpwZXA6YDM2NmAgd291bGQgZXZlbnR1YWxseSBzcGVjaWZ5IGZvcgorYGBfX3BhY2thZ2VfX2BgLgorCis6cGVwOmAzMzhgIGRlZmluZXMgZXhlY3V0aW5nIG1vZHVsZXMgYXMgc2NyaXB0cy4KKworCitGb290bm90ZXMKKz09PT09PT09PQorCisuLiBbI2ZubW9dIFNlZSA6Y2xhc3M6YHR5cGVzLk1vZHVsZVR5cGVgLgorCisuLiBbI2ZubG9dIFRoZSBpbXBvcnRsaWIgaW1wbGVtZW50YXRpb24gYXZvaWRzIHVzaW5nIHRoZSByZXR1cm4gdmFsdWUKKyAgIGRpcmVjdGx5LiBJbnN0ZWFkLCBpdCBnZXRzIHRoZSBtb2R1bGUgb2JqZWN0IGJ5IGxvb2tpbmcgdGhlIG1vZHVsZSBuYW1lIHVwCisgICBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLiAgVGhlIGluZGlyZWN0IGVmZmVjdCBvZiB0aGlzIGlzIHRoYXQgYW4gaW1wb3J0ZWQKKyAgIG1vZHVsZSBtYXkgcmVwbGFjZSBpdHNlbGYgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYC4gIFRoaXMgaXMKKyAgIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIGJlaGF2aW9yIHRoYXQgaXMgbm90IGd1YXJhbnRlZWQgdG8gd29yayBpbiBvdGhlcgorICAgUHl0aG9uIGltcGxlbWVudGF0aW9ucy4KKworLi4gWyNmbnBpY10gSW4gbGVnYWN5IGNvZGUsIGl0IGlzIHBvc3NpYmxlIHRvIGZpbmQgaW5zdGFuY2VzIG9mCisgICA6Y2xhc3M6YGltcC5OdWxsSW1wb3J0ZXJgIGluIHRoZSA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgLiAgSXQKKyAgIGlzIHJlY29tbWVuZGVkIHRoYXQgY29kZSBiZSBjaGFuZ2VkIHRvIHVzZSBgYE5vbmVgYCBpbnN0ZWFkLiAgU2VlCisgICA6cmVmOmBwb3J0aW5ncHl0aG9uY29kZWAgZm9yIG1vcmUgZGV0YWlscy4KZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvaW5kZXgucnN0IGIvRG9jL3JlZmVyZW5jZS9pbmRleC5yc3QKaW5kZXggNTEzZTQ0NS4uYTY2NjczYiAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9pbmRleC5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9pbmRleC5yc3QKQEAgLTIxLDYgKzIxLDcgQEAKICAgIGxleGljYWxfYW5hbHlzaXMucnN0CiAgICBkYXRhbW9kZWwucnN0CiAgICBleGVjdXRpb25tb2RlbC5yc3QKKyAgIGltcG9ydC5yc3QKICAgIGV4cHJlc3Npb25zLnJzdAogICAgc2ltcGxlX3N0bXRzLnJzdAogICAgY29tcG91bmRfc3RtdHMucnN0CmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0IGIvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdAppbmRleCA0YjQ5NzM4Li45NGYyMTliIDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QKQEAgLTQwMSw3ICs0MDEsNyBAQAogCiAuLiBwcm9kdWN0aW9ubGlzdDo6CiAgICBzdHJpbmdsaXRlcmFsOiBbYHN0cmluZ3ByZWZpeGBdKGBzaG9ydHN0cmluZ2AgfCBgbG9uZ3N0cmluZ2ApCi0gICBzdHJpbmdwcmVmaXg6ICJyIiB8ICJSIgorICAgc3RyaW5ncHJlZml4OiAiciIgfCAidSIgfCAiUiIgfCAiVSIKICAgIHNob3J0c3RyaW5nOiAiJyIgYHNob3J0c3RyaW5naXRlbWAqICInIiB8ICciJyBgc2hvcnRzdHJpbmdpdGVtYCogJyInCiAgICBsb25nc3RyaW5nOiAiJycnIiBgbG9uZ3N0cmluZ2l0ZW1gKiAiJycnIiB8ICciIiInIGBsb25nc3RyaW5naXRlbWAqICciIiInCiAgICBzaG9ydHN0cmluZ2l0ZW06IGBzaG9ydHN0cmluZ2NoYXJgIHwgYHN0cmluZ2VzY2FwZXNlcWAKQEAgLTQxMiw3ICs0MTIsNyBAQAogCiAuLiBwcm9kdWN0aW9ubGlzdDo6CiAgICBieXRlc2xpdGVyYWw6IGBieXRlc3ByZWZpeGAoYHNob3J0Ynl0ZXNgIHwgYGxvbmdieXRlc2ApCi0gICBieXRlc3ByZWZpeDogImIiIHwgIkIiIHwgImJyIiB8ICJCciIgfCAiYlIiIHwgIkJSIgorICAgYnl0ZXNwcmVmaXg6ICJiIiB8ICJCIiB8ICJiciIgfCAiQnIiIHwgImJSIiB8ICJCUiIgfCAicmIiIHwgInJCIiB8ICJSYiIgfCAiUkIiCiAgICBzaG9ydGJ5dGVzOiAiJyIgYHNob3J0Ynl0ZXNpdGVtYCogIiciIHwgJyInIGBzaG9ydGJ5dGVzaXRlbWAqICciJwogICAgbG9uZ2J5dGVzOiAiJycnIiBgbG9uZ2J5dGVzaXRlbWAqICInJyciIHwgJyIiIicgYGxvbmdieXRlc2l0ZW1gKiAnIiIiJwogICAgc2hvcnRieXRlc2l0ZW06IGBzaG9ydGJ5dGVzY2hhcmAgfCBgYnl0ZXNlc2NhcGVzZXFgCkBAIC00NDEsMTAgKzQ0MSwyNCBAQAogbWF5IG9ubHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJzOyBieXRlcyB3aXRoIGEgbnVtZXJpYyB2YWx1ZSBvZiAxMjggb3IgZ3JlYXRlcgogbXVzdCBiZSBleHByZXNzZWQgd2l0aCBlc2NhcGVzLgogCitBcyBvZiBQeXRob24gMy4zIGl0IGlzIHBvc3NpYmxlIGFnYWluIHRvIHByZWZpeCB1bmljb2RlIHN0cmluZ3Mgd2l0aCBhCitgYHVgYCBwcmVmaXggdG8gc2ltcGxpZnkgbWFpbnRlbmFuY2Ugb2YgZHVhbCAyLnggYW5kIDMueCBjb2RlYmFzZXMuCisKIEJvdGggc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBtYXkgb3B0aW9uYWxseSBiZSBwcmVmaXhlZCB3aXRoIGEgbGV0dGVyIGBgJ3InYGAKIG9yIGBgJ1InYGA7IHN1Y2ggc3RyaW5ncyBhcmUgY2FsbGVkIDpkZm46YHJhdyBzdHJpbmdzYCBhbmQgdHJlYXQgYmFja3NsYXNoZXMgYXMKIGxpdGVyYWwgY2hhcmFjdGVycy4gIEFzIGEgcmVzdWx0LCBpbiBzdHJpbmcgbGl0ZXJhbHMsIGBgJ1xVJ2BgIGFuZCBgYCdcdSdgYAotZXNjYXBlcyBpbiByYXcgc3RyaW5ncyBhcmUgbm90IHRyZWF0ZWQgc3BlY2lhbGx5LgorZXNjYXBlcyBpbiByYXcgc3RyaW5ncyBhcmUgbm90IHRyZWF0ZWQgc3BlY2lhbGx5LiBHaXZlbiB0aGF0IFB5dGhvbiAyLngncyByYXcKK3VuaWNvZGUgbGl0ZXJhbHMgYmVoYXZlIGRpZmZlcmVudGx5IHRoYW4gUHl0aG9uIDMueCdzIHRoZSBgYCd1cidgYCBzeW50YXgKK2lzIG5vdCBzdXBwb3J0ZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlIGBgJ3JiJ2BgIHByZWZpeCBvZiByYXcgYnl0ZXMgbGl0ZXJhbHMgaGFzIGJlZW4gYWRkZWQgYXMgYSBzeW5vbnltCisgICAgICBvZiBgYCdicidgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBTdXBwb3J0IGZvciB0aGUgdW5pY29kZSBsZWdhY3kgbGl0ZXJhbCAoYGB1J3ZhbHVlJ2BgKSB3YXMgcmVpbnRyb2R1Y2VkCisgICAgICB0byBzaW1wbGlmeSB0aGUgbWFpbnRlbmFuY2Ugb2YgZHVhbCBQeXRob24gMi54IGFuZCAzLnggY29kZWJhc2VzLgorICAgICAgU2VlIDpwZXA6YDQxNGAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKIEluIHRyaXBsZS1xdW90ZWQgc3RyaW5ncywgdW5lc2NhcGVkIG5ld2xpbmVzIGFuZCBxdW90ZXMgYXJlIGFsbG93ZWQgKGFuZCBhcmUKIHJldGFpbmVkKSwgZXhjZXB0IHRoYXQgdGhyZWUgdW5lc2NhcGVkIHF1b3RlcyBpbiBhIHJvdyB0ZXJtaW5hdGUgdGhlIHN0cmluZy4gIChBCkBAIC00OTIsMTMgKzUwNiwxMyBAQAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwogfCBFc2NhcGUgU2VxdWVuY2UgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgfAogKz09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09KwotfCBgYFxOe25hbWV9YGAgICAgfCBDaGFyYWN0ZXIgbmFtZWQgKm5hbWUqIGluIHRoZSAgIHwgICAgICAgfAorfCBgYFxOe25hbWV9YGAgICAgfCBDaGFyYWN0ZXIgbmFtZWQgKm5hbWUqIGluIHRoZSAgIHwgXCg0KSAgfAogfCAgICAgICAgICAgICAgICAgfCBVbmljb2RlIGRhdGFiYXNlICAgICAgICAgICAgICAgIHwgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYFx1eHh4eGBgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAxNi1iaXQgaGV4IHZhbHVlIHwgXCg0KSAgfAorfCBgYFx1eHh4eGBgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAxNi1iaXQgaGV4IHZhbHVlIHwgXCg1KSAgfAogfCAgICAgICAgICAgICAgICAgfCAqeHh4eCogICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYFxVeHh4eHh4eHhgYCAgfCBDaGFyYWN0ZXIgd2l0aCAzMi1iaXQgaGV4IHZhbHVlIHwgXCg1KSAgfAorfCBgYFxVeHh4eHh4eHhgYCAgfCBDaGFyYWN0ZXIgd2l0aCAzMi1iaXQgaGV4IHZhbHVlIHwgXCg2KSAgfAogfCAgICAgICAgICAgICAgICAgfCAqeHh4eHh4eHgqICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwogCkBAIC01MTYsMTMgKzUzMCwxNSBAQAogICAgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuCiAKICg0KQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgZm9yIG5hbWUgYWxpYXNlcyBbI11fIGhhcyBiZWVuIGFkZGVkLgorCisoNSkKICAgIEluZGl2aWR1YWwgY29kZSB1bml0cyB3aGljaCBmb3JtIHBhcnRzIG9mIGEgc3Vycm9nYXRlIHBhaXIgY2FuIGJlIGVuY29kZWQgdXNpbmcKICAgIHRoaXMgZXNjYXBlIHNlcXVlbmNlLiAgRXhhY3RseSBmb3VyIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLgogCi0oNSkKLSAgIEFueSBVbmljb2RlIGNoYXJhY3RlciBjYW4gYmUgZW5jb2RlZCB0aGlzIHdheSwgYnV0IGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgQmFzaWMKLSAgIE11bHRpbGluZ3VhbCBQbGFuZSAoQk1QKSB3aWxsIGJlIGVuY29kZWQgdXNpbmcgYSBzdXJyb2dhdGUgcGFpciBpZiBQeXRob24gaXMKLSAgIGNvbXBpbGVkIHRvIHVzZSAxNi1iaXQgY29kZSB1bml0cyAodGhlIGRlZmF1bHQpLiAgRXhhY3RseSBlaWdodCBoZXggZGlnaXRzCisoNikKKyAgIEFueSBVbmljb2RlIGNoYXJhY3RlciBjYW4gYmUgZW5jb2RlZCB0aGlzIHdheS4gIEV4YWN0bHkgZWlnaHQgaGV4IGRpZ2l0cwogICAgYXJlIHJlcXVpcmVkLgogCiAKQEAgLTcwNiwzICs3MjIsOCBAQAogb2NjdXJyZW5jZSBvdXRzaWRlIHN0cmluZyBsaXRlcmFscyBhbmQgY29tbWVudHMgaXMgYW4gdW5jb25kaXRpb25hbCBlcnJvcjo6CiAKICAgICQgICAgICAgPyAgICAgICBgCisKKworLi4gcnVicmljOjogRm9vdG5vdGVzCisKKy4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy82LjEuMC91Y2QvTmFtZUFsaWFzZXMudHh0CmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QgYi9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QKaW5kZXggNzMxODNkNS4uODFkYzc0OCAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdApAQCAtNDI0LDEwICs0MjQsMTAgQEAKIDprZXl3b3JkOmBmaW5hbGx5YCBjbGF1c2UsIHRoYXQgOmtleXdvcmQ6YGZpbmFsbHlgIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUKIHJlYWxseSBsZWF2aW5nIHRoZSBmdW5jdGlvbi4KIAotSW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24sIHRoZSA6a2V5d29yZDpgcmV0dXJuYCBzdGF0ZW1lbnQgaXMgbm90IGFsbG93ZWQgdG8KLWluY2x1ZGUgYW4gOnRva2VuOmBleHByZXNzaW9uX2xpc3RgLiAgSW4gdGhhdCBjb250ZXh0LCBhIGJhcmUgOmtleXdvcmQ6YHJldHVybmAKLWluZGljYXRlcyB0aGF0IHRoZSBnZW5lcmF0b3IgaXMgZG9uZSBhbmQgd2lsbCBjYXVzZSA6ZXhjOmBTdG9wSXRlcmF0aW9uYCB0byBiZQotcmFpc2VkLgorSW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24sIHRoZSA6a2V5d29yZDpgcmV0dXJuYCBzdGF0ZW1lbnQgaW5kaWNhdGVzIHRoYXQgdGhlCitnZW5lcmF0b3IgaXMgZG9uZSBhbmQgd2lsbCBjYXVzZSA6ZXhjOmBTdG9wSXRlcmF0aW9uYCB0byBiZSByYWlzZWQuIFRoZSByZXR1cm5lZAordmFsdWUgKGlmIGFueSkgaXMgdXNlZCBhcyBhbiBhcmd1bWVudCB0byBjb25zdHJ1Y3QgOmV4YzpgU3RvcEl0ZXJhdGlvbmAgYW5kCitiZWNvbWVzIHRoZSA6YXR0cjpgU3RvcEl0ZXJhdGlvbi52YWx1ZWAgYXR0cmlidXRlLgogCiAKIC4uIF95aWVsZDoKQEAgLTQ0OSw2ICs0NDksNyBAQAogYW5kIGlzIG9ubHkgdXNlZCBpbiB0aGUgYm9keSBvZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLiBVc2luZyBhIDprZXl3b3JkOmB5aWVsZGAKIHN0YXRlbWVudCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgc3VmZmljaWVudCB0byBjYXVzZSB0aGF0IGRlZmluaXRpb24gdG8KIGNyZWF0ZSBhIGdlbmVyYXRvciBmdW5jdGlvbiBpbnN0ZWFkIG9mIGEgbm9ybWFsIGZ1bmN0aW9uLgorCiBXaGVuIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCwgaXQgcmV0dXJucyBhbiBpdGVyYXRvciBrbm93biBhcyBhIGdlbmVyYXRvcgogaXRlcmF0b3IsIG9yIG1vcmUgY29tbW9ubHksIGEgZ2VuZXJhdG9yLiAgVGhlIGJvZHkgb2YgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiBpcwogZXhlY3V0ZWQgYnkgY2FsbGluZyB0aGUgOmZ1bmM6YG5leHRgIGZ1bmN0aW9uIG9uIHRoZSBnZW5lcmF0b3IgcmVwZWF0ZWRseSB1bnRpbApAQCAtNDY4LDE0ICs0NjksMjggQEAKIGdhcmJhZ2UgY29sbGVjdGVkKSwgdGhlIGdlbmVyYXRvci1pdGVyYXRvcidzIDptZXRoOmBjbG9zZWAgbWV0aG9kIHdpbGwgYmUKIGNhbGxlZCwgYWxsb3dpbmcgYW55IHBlbmRpbmcgOmtleXdvcmQ6YGZpbmFsbHlgIGNsYXVzZXMgdG8gZXhlY3V0ZS4KIAorV2hlbiBgYHlpZWxkIGZyb20gPGV4cHI+YGAgaXMgdXNlZCwgaXQgdHJlYXRzIHRoZSBzdXBwbGllZCBleHByZXNzaW9uIGFzCithIHN1Yml0ZXJhdG9yLCBwcm9kdWNpbmcgdmFsdWVzIGZyb20gaXQgdW50aWwgdGhlIHVuZGVybHlpbmcgaXRlcmF0b3IgaXMKK2V4aGF1c3RlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIGBgeWllbGQgZnJvbSA8ZXhwcj5gYCB0byBkZWxlZ2F0ZSBjb250cm9sIGZsb3cgdG8gYSBzdWJpdGVyYXRvcgorCitGb3IgZnVsbCBkZXRhaWxzIG9mIDprZXl3b3JkOmB5aWVsZGAgc2VtYW50aWNzLCByZWZlciB0byB0aGUgOnJlZjpgeWllbGRleHByYAorc2VjdGlvbi4KKwogLi4gc2VlYWxzbzo6CiAKICAgIDpwZXA6YDAyNTVgIC0gU2ltcGxlIEdlbmVyYXRvcnMKICAgICAgIFRoZSBwcm9wb3NhbCBmb3IgYWRkaW5nIGdlbmVyYXRvcnMgYW5kIHRoZSA6a2V5d29yZDpgeWllbGRgIHN0YXRlbWVudCB0byBQeXRob24uCiAKICAgIDpwZXA6YDAzNDJgIC0gQ29yb3V0aW5lcyB2aWEgRW5oYW5jZWQgR2VuZXJhdG9ycwotICAgICAgVGhlIHByb3Bvc2FsIHRoYXQsIGFtb25nIG90aGVyIGdlbmVyYXRvciBlbmhhbmNlbWVudHMsIHByb3Bvc2VkIGFsbG93aW5nCi0gICAgICA6a2V5d29yZDpgeWllbGRgIHRvIGFwcGVhciBpbnNpZGUgYSA6a2V5d29yZDpgdHJ5YCAuLi4gOmtleXdvcmQ6YGZpbmFsbHlgIGJsb2NrLgorICAgICAgVGhlIHByb3Bvc2FsIHRvIGVuaGFuY2UgdGhlIEFQSSBhbmQgc3ludGF4IG9mIGdlbmVyYXRvcnMsIG1ha2luZyB0aGVtCisgICAgICB1c2FibGUgYXMgc2ltcGxlIGNvcm91dGluZXMuCisKKyAgIDpwZXA6YDAzODBgIC0gU3ludGF4IGZvciBEZWxlZ2F0aW5nIHRvIGEgU3ViZ2VuZXJhdG9yCisgICAgICBUaGUgcHJvcG9zYWwgdG8gaW50cm9kdWNlIHRoZSA6dG9rZW46YHlpZWxkX2Zyb21gIHN5bnRheCwgbWFraW5nIGRlbGVnYXRpb24KKyAgICAgIHRvIHN1Yi1nZW5lcmF0b3JzIGVhc3kuCiAKIAogLi4gX3JhaXNlOgpAQCAtNjQ1LDE2MSArNjYwLDk4IEBACiAgICByZWxhdGl2ZV9tb2R1bGU6ICIuIiogYG1vZHVsZWAgfCAiLiIrCiAgICBuYW1lOiBgaWRlbnRpZmllcmAKIAotSW1wb3J0IHN0YXRlbWVudHMgYXJlIGV4ZWN1dGVkIGluIHR3byBzdGVwczogKDEpIGZpbmQgYSBtb2R1bGUsIGFuZCBpbml0aWFsaXplCi1pdCBpZiBuZWNlc3Nhcnk7ICgyKSBkZWZpbmUgYSBuYW1lIG9yIG5hbWVzIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgKG9mIHRoZSBzY29wZQotd2hlcmUgdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBvY2N1cnMpLiBUaGUgc3RhdGVtZW50IGNvbWVzIGluIHR3bwotZm9ybXMgZGlmZmVyaW5nIG9uIHdoZXRoZXIgaXQgdXNlcyB0aGUgOmtleXdvcmQ6YGZyb21gIGtleXdvcmQuIFRoZSBmaXJzdCBmb3JtCi0od2l0aG91dCA6a2V5d29yZDpgZnJvbWApIHJlcGVhdHMgdGhlc2Ugc3RlcHMgZm9yIGVhY2ggaWRlbnRpZmllciBpbiB0aGUgbGlzdC4KLVRoZSBmb3JtIHdpdGggOmtleXdvcmQ6YGZyb21gIHBlcmZvcm1zIHN0ZXAgKDEpIG9uY2UsIGFuZCB0aGVuIHBlcmZvcm1zIHN0ZXAKLSgyKSByZXBlYXRlZGx5LiBGb3IgYSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2Ygc3RlcCAoMSksIHNlZSB0aGUKLTptb2Q6YGltcG9ydGxpYmAgbW9kdWxlLgorVGhlIGJhc2ljIGltcG9ydCBzdGF0ZW1lbnQgKG5vIDprZXl3b3JkOmBmcm9tYCBjbGF1c2UpIGlzIGV4ZWN1dGVkIGluIHR3bworc3RlcHM6CiAKLS4uIGluZGV4OjoKLSAgICBzaW5nbGU6IHBhY2thZ2UKKyMuIGZpbmQgYSBtb2R1bGUsIGxvYWRpbmcgYW5kIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3NhcnkKKyMuIGRlZmluZSBhIG5hbWUgb3IgbmFtZXMgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIHNjb3BlIHdoZXJlCisgICB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IG9jY3Vycy4KIAotVG8gdW5kZXJzdGFuZCBob3cgc3RlcCAoMSkgb2NjdXJzLCBvbmUgbXVzdCBmaXJzdCB1bmRlcnN0YW5kIGhvdyBQeXRob24gaGFuZGxlcwotaGllcmFyY2hpY2FsIG5hbWluZyBvZiBtb2R1bGVzLiBUbyBoZWxwIG9yZ2FuaXplIG1vZHVsZXMgYW5kIHByb3ZpZGUgYQotaGllcmFyY2h5IGluIG5hbWluZywgUHl0aG9uIGhhcyBhIGNvbmNlcHQgb2YgcGFja2FnZXMuIEEgcGFja2FnZSBjYW4gY29udGFpbgotb3RoZXIgcGFja2FnZXMgYW5kIG1vZHVsZXMgd2hpbGUgbW9kdWxlcyBjYW5ub3QgY29udGFpbiBvdGhlciBtb2R1bGVzIG9yCi1wYWNrYWdlcy4gRnJvbSBhIGZpbGUgc3lzdGVtIHBlcnNwZWN0aXZlLCBwYWNrYWdlcyBhcmUgZGlyZWN0b3JpZXMgYW5kIG1vZHVsZXMKLWFyZSBmaWxlcy4gVGhlIG9yaWdpbmFsIGBzcGVjaWZpY2F0aW9uIGZvciBwYWNrYWdlcwotPGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb2MvZXNzYXlzL3BhY2thZ2VzLmh0bWw+YF8gaXMgc3RpbGwgYXZhaWxhYmxlIHRvIHJlYWQsCi1hbHRob3VnaCBtaW5vciBkZXRhaWxzIGhhdmUgY2hhbmdlZCBzaW5jZSB0aGUgd3JpdGluZyBvZiB0aGF0IGRvY3VtZW50LgorV2hlbiB0aGUgc3RhdGVtZW50IGNvbnRhaW5zIG11bHRpcGxlIGNsYXVzZXMgKHNlcGFyYXRlZCBieQorY29tbWFzKSB0aGUgdHdvIHN0ZXBzIGFyZSBjYXJyaWVkIG91dCBzZXBhcmF0ZWx5IGZvciBlYWNoIGNsYXVzZSwganVzdAorYXMgdGhvdWdoIHRoZSBjbGF1c2VzIGhhZCBiZWVuIHNlcGFyYXRlZCBvdXQgaW50byBpbmRpdmlkaXVhbCBpbXBvcnQKK3N0YXRlbWVudHMuCiAKLS4uIGluZGV4OjoKLSAgICBzaW5nbGU6IHN5cy5tb2R1bGVzCitUaGUgZGV0YWlscyBvZiB0aGUgZmlyc3Qgc3RlcCwgZmluZGluZyBhbmQgbG9hZGluZyBtb2R1bGVzIGlzIGRlc2NyaWJlZCBpbgorZ3JlYXRlciBkZXRhaWwgaW4gdGhlIHNlY3Rpb24gb24gdGhlIDpyZWY6YGltcG9ydCBzeXN0ZW0gPGltcG9ydHN5c3RlbT5gLAord2hpY2ggYWxzbyBkZXNjcmliZXMgdGhlIHZhcmlvdXMgdHlwZXMgb2YgcGFja2FnZXMgYW5kIG1vZHVsZXMgdGhhdCBjYW4KK2JlIGltcG9ydGVkLCBhcyB3ZWxsIGFzIGFsbCB0aGUgaG9va3MgdGhhdCBjYW4gYmUgdXNlZCB0byBjdXN0b21pemUKK3RoZSBpbXBvcnQgc3lzdGVtLiBOb3RlIHRoYXQgZmFpbHVyZXMgaW4gdGhpcyBzdGVwIG1heSBpbmRpY2F0ZSBlaXRoZXIKK3RoYXQgdGhlIG1vZHVsZSBjb3VsZCBub3QgYmUgbG9jYXRlZCwgKm9yKiB0aGF0IGFuIGVycm9yIG9jY3VycmVkIHdoaWxlCitpbml0aWFsaXppbmcgdGhlIG1vZHVsZSwgd2hpY2ggaW5jbHVkZXMgZXhlY3V0aW9uIG9mIHRoZSBtb2R1bGUncyBjb2RlLgogCi1PbmNlIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgaXMga25vd24gKHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLCB0aGUgdGVybQotIm1vZHVsZSIgd2lsbCByZWZlciB0byBib3RoIHBhY2thZ2VzIGFuZCBtb2R1bGVzKSwgc2VhcmNoaW5nCi1mb3IgdGhlIG1vZHVsZSBvciBwYWNrYWdlIGNhbiBiZWdpbi4gVGhlIGZpcnN0IHBsYWNlIGNoZWNrZWQgaXMKLTpkYXRhOmBzeXMubW9kdWxlc2AsIHRoZSBjYWNoZSBvZiBhbGwgbW9kdWxlcyB0aGF0IGhhdmUgYmVlbiBpbXBvcnRlZAotcHJldmlvdXNseS4gSWYgdGhlIG1vZHVsZSBpcyBmb3VuZCB0aGVyZSB0aGVuIGl0IGlzIHVzZWQgaW4gc3RlcCAoMikgb2YgaW1wb3J0Ci11bmxlc3MgYGBOb25lYGAgaXMgZm91bmQgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCwgaW4gd2hpY2ggY2FzZQotOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4KK0lmIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGlzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHksIGl0IHdpbGwgYmUgbWFkZQorYXZhaWxhYmxlIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgaW4gb25lIG9mIHRocmVlIHdheXM6CiAKLS4uIGluZGV4OjoKLSAgICBzaW5nbGU6IHN5cy5tZXRhX3BhdGgKLSAgICBzaW5nbGU6IGZpbmRlcgotICAgIHBhaXI6IGZpbmRlcjsgZmluZF9tb2R1bGUKLSAgICBzaW5nbGU6IF9fcGF0aF9fCisqIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBmb2xsb3dlZCBieSA6a2V5d29yZDpgYXNgLCB0aGVuIHRoZSBuYW1lCisgIGZvbGxvd2luZyA6a2V5d29yZDpgYXNgIGlzIGJvdW5kIGRpcmVjdGx5IHRvIHRoZSBpbXBvcnRlZCBtb2R1bGUuCisqIElmIG5vIG90aGVyIG5hbWUgaXMgc3BlY2lmaWVkLCBhbmQgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyBhIHRvcAorICBsZXZlbCBtb2R1bGUsIHRoZSBtb2R1bGUncyBuYW1lIGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgYQorICByZWZlcmVuY2UgdG8gdGhlIGltcG9ydGVkIG1vZHVsZQorKiBJZiB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzICpub3QqIGEgdG9wIGxldmVsIG1vZHVsZSwgdGhlbiB0aGUgbmFtZQorICBvZiB0aGUgdG9wIGxldmVsIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgbW9kdWxlIGlzIGJvdW5kIGluIHRoZSBsb2NhbAorICBuYW1lc3BhY2UgYXMgYSByZWZlcmVuY2UgdG8gdGhlIHRvcCBsZXZlbCBwYWNrYWdlLiBUaGUgaW1wb3J0ZWQgbW9kdWxlCisgIG11c3QgYmUgYWNjZXNzZWQgdXNpbmcgaXRzIGZ1bGwgcXVhbGlmaWVkIG5hbWUgcmF0aGVyIHRoYW4gZGlyZWN0bHkKIAotSWYgdGhlIG1vZHVsZSBpcyBub3QgZm91bmQgaW4gdGhlIGNhY2hlLCB0aGVuIDpkYXRhOmBzeXMubWV0YV9wYXRoYCBpcyBzZWFyY2hlZAotKHRoZSBzcGVjaWZpY2F0aW9uIGZvciA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgY2FuIGJlIGZvdW5kIGluIDpwZXA6YDMwMmApLgotVGhlIG9iamVjdCBpcyBhIGxpc3Qgb2YgOnRlcm06YGZpbmRlcmAgb2JqZWN0cyB3aGljaCBhcmUgcXVlcmllZCBpbiBvcmRlciBhcyB0bwotd2hldGhlciB0aGV5IGtub3cgaG93IHRvIGxvYWQgdGhlIG1vZHVsZSBieSBjYWxsaW5nIHRoZWlyIDptZXRoOmBmaW5kX21vZHVsZWAKLW1ldGhvZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUuIElmIHRoZSBtb2R1bGUgaGFwcGVucyB0byBiZSBjb250YWluZWQKLXdpdGhpbiBhIHBhY2thZ2UgKGFzIGRlbm90ZWQgYnkgdGhlIGV4aXN0ZW5jZSBvZiBhIGRvdCBpbiB0aGUgbmFtZSksIHRoZW4gYQotc2Vjb25kIGFyZ3VtZW50IHRvIDptZXRoOmBmaW5kX21vZHVsZWAgaXMgZ2l2ZW4gYXMgdGhlIHZhbHVlIG9mIHRoZQotOmF0dHI6YF9fcGF0aF9fYCBhdHRyaWJ1dGUgZnJvbSB0aGUgcGFyZW50IHBhY2thZ2UgKGV2ZXJ5dGhpbmcgdXAgdG8gdGhlIGxhc3QKLWRvdCBpbiB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkKS4gSWYgYSBmaW5kZXIgY2FuIGZpbmQgdGhlIG1vZHVsZQotaXQgcmV0dXJucyBhIDp0ZXJtOmBsb2FkZXJgIChkaXNjdXNzZWQgbGF0ZXIpIG9yIHJldHVybnMgYGBOb25lYGAuCi0KLS4uIGluZGV4OjoKLSAgICBzaW5nbGU6IHN5cy5wYXRoX2hvb2tzCi0gICAgc2luZ2xlOiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZQotICAgIHNpbmdsZTogc3lzLnBhdGgKLQotSWYgbm9uZSBvZiB0aGUgZmluZGVycyBvbiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgYXJlIGFibGUgdG8gZmluZCB0aGUgbW9kdWxlCi10aGVuIHNvbWUgaW1wbGljaXRseSBkZWZpbmVkIGZpbmRlcnMgYXJlIHF1ZXJpZWQuIEltcGxlbWVudGF0aW9ucyBvZiBQeXRob24KLXZhcnkgaW4gd2hhdCBpbXBsaWNpdCBtZXRhIHBhdGggZmluZGVycyBhcmUgZGVmaW5lZC4gVGhlIG9uZSB0aGV5IGFsbCBkbwotZGVmaW5lLCB0aG91Z2gsIGlzIG9uZSB0aGF0IGhhbmRsZXMgOmRhdGE6YHN5cy5wYXRoX2hvb2tzYCwKLTpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAsIGFuZCA6ZGF0YTpgc3lzLnBhdGhgLgotCi1UaGUgaW1wbGljaXQgZmluZGVyIHNlYXJjaGVzIGZvciB0aGUgcmVxdWVzdGVkIG1vZHVsZSBpbiB0aGUgInBhdGhzIiBzcGVjaWZpZWQKLWluIG9uZSBvZiB0d28gcGxhY2VzICgicGF0aHMiIGRvIG5vdCBoYXZlIHRvIGJlIGZpbGUgc3lzdGVtIHBhdGhzKS4gSWYgdGhlCi1tb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgc3VwcG9zZWQgdG8gYmUgY29udGFpbmVkIHdpdGhpbiBhIHBhY2thZ2UgdGhlbiB0aGUKLXNlY29uZCBhcmd1bWVudCBwYXNzZWQgdG8gOm1ldGg6YGZpbmRfbW9kdWxlYCwgOmF0dHI6YF9fcGF0aF9fYCBvbiB0aGUgcGFyZW50Ci1wYWNrYWdlLCBpcyB1c2VkIGFzIHRoZSBzb3VyY2Ugb2YgcGF0aHMuIElmIHRoZSBtb2R1bGUgaXMgbm90IGNvbnRhaW5lZCBpbiBhCi1wYWNrYWdlIHRoZW4gOmRhdGE6YHN5cy5wYXRoYCBpcyB1c2VkIGFzIHRoZSBzb3VyY2Ugb2YgcGF0aHMuCi0KLU9uY2UgdGhlIHNvdXJjZSBvZiBwYXRocyBpcyBjaG9zZW4gaXQgaXMgaXRlcmF0ZWQgb3ZlciB0byBmaW5kIGEgZmluZGVyIHRoYXQKLWNhbiBoYW5kbGUgdGhhdCBwYXRoLiBUaGUgZGljdCBhdCA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIGNhY2hlcwotZmluZGVycyBmb3IgcGF0aHMgYW5kIGlzIGNoZWNrZWQgZm9yIGEgZmluZGVyLiBJZiB0aGUgcGF0aCBkb2VzIG5vdCBoYXZlIGEKLWZpbmRlciBjYWNoZWQgdGhlbiA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgIGlzIHNlYXJjaGVkIGJ5IGNhbGxpbmcgZWFjaCBvYmplY3QgaW4KLXRoZSBsaXN0IHdpdGggYSBzaW5nbGUgYXJndW1lbnQgb2YgdGhlIHBhdGgsIHJldHVybmluZyBhIGZpbmRlciBvciByYWlzZXMKLTpleGM6YEltcG9ydEVycm9yYC4gSWYgYSBmaW5kZXIgaXMgcmV0dXJuZWQgdGhlbiBpdCBpcyBjYWNoZWQgaW4KLTpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgYW5kIHRoZW4gdXNlZCBmb3IgdGhhdCBwYXRoIGVudHJ5LiBJZiBubyBmaW5kZXIKLWNhbiBiZSBmb3VuZCBidXQgdGhlIHBhdGggZXhpc3RzIHRoZW4gYSB2YWx1ZSBvZiBgYE5vbmVgYCBpcwotc3RvcmVkIGluIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgdG8gc2lnbmlmeSB0aGF0IGFuIGltcGxpY2l0LAotZmlsZS1iYXNlZCBmaW5kZXIgdGhhdCBoYW5kbGVzIG1vZHVsZXMgc3RvcmVkIGFzIGluZGl2aWR1YWwgZmlsZXMgc2hvdWxkIGJlCi11c2VkIGZvciB0aGF0IHBhdGguIElmIHRoZSBwYXRoIGRvZXMgbm90IGV4aXN0IHRoZW4gYSBmaW5kZXIgd2hpY2ggYWx3YXlzCi1yZXR1cm5zIGBgTm9uZWBgIGlzIHBsYWNlZCBpbiB0aGUgY2FjaGUgZm9yIHRoZSBwYXRoLgotCi0uLiBpbmRleDo6Ci0gICAgc2luZ2xlOiBsb2FkZXIKLSAgICBwYWlyOiBsb2FkZXI7IGxvYWRfbW9kdWxlCi0gICAgZXhjZXB0aW9uOiBJbXBvcnRFcnJvcgotCi1JZiBubyBmaW5kZXIgY2FuIGZpbmQgdGhlIG1vZHVsZSB0aGVuIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuIE90aGVyd2lzZQotc29tZSBmaW5kZXIgcmV0dXJuZWQgYSBsb2FkZXIgd2hvc2UgOm1ldGg6YGxvYWRfbW9kdWxlYCBtZXRob2QgaXMgY2FsbGVkIHdpdGgKLXRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdG8gbG9hZCAoc2VlIDpwZXA6YDMwMmAgZm9yIHRoZSBvcmlnaW5hbCBkZWZpbml0aW9uIG9mCi1sb2FkZXJzKS4gQSBsb2FkZXIgaGFzIHNldmVyYWwgcmVzcG9uc2liaWxpdGllcyB0byBwZXJmb3JtIG9uIGEgbW9kdWxlIGl0Ci1sb2Fkcy4gRmlyc3QsIGlmIHRoZSBtb2R1bGUgYWxyZWFkeSBleGlzdHMgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCAoYQotcG9zc2liaWxpdHkgaWYgdGhlIGxvYWRlciBpcyBjYWxsZWQgb3V0c2lkZSBvZiB0aGUgaW1wb3J0IG1hY2hpbmVyeSkgdGhlbiBpdAotaXMgdG8gdXNlIHRoYXQgbW9kdWxlIGZvciBpbml0aWFsaXphdGlvbiBhbmQgbm90IGEgbmV3IG1vZHVsZS4gQnV0IGlmIHRoZQotbW9kdWxlIGRvZXMgbm90IGV4aXN0IGluIDpkYXRhOmBzeXMubW9kdWxlc2AgdGhlbiBpdCBpcyB0byBiZSBhZGRlZCB0byB0aGF0Ci1kaWN0IGJlZm9yZSBpbml0aWFsaXphdGlvbiBiZWdpbnMuIElmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgbG9hZGluZyBvZiB0aGUKLW1vZHVsZSBhbmQgaXQgd2FzIGFkZGVkIHRvIDpkYXRhOmBzeXMubW9kdWxlc2AgaXQgaXMgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZQotZGljdC4gSWYgYW4gZXJyb3Igb2NjdXJzIGJ1dCB0aGUgbW9kdWxlIHdhcyBhbHJlYWR5IGluIDpkYXRhOmBzeXMubW9kdWxlc2AgaXQKLWlzIGxlZnQgaW4gdGhlIGRpY3QuCi0KLS4uIGluZGV4OjoKLSAgICBzaW5nbGU6IF9fbmFtZV9fCi0gICAgc2luZ2xlOiBfX2ZpbGVfXwotICAgIHNpbmdsZTogX19wYXRoX18KLSAgICBzaW5nbGU6IF9fcGFja2FnZV9fCi0gICAgc2luZ2xlOiBfX2xvYWRlcl9fCi0KLVRoZSBsb2FkZXIgbXVzdCBzZXQgc2V2ZXJhbCBhdHRyaWJ1dGVzIG9uIHRoZSBtb2R1bGUuIDpkYXRhOmBfX25hbWVfX2AgaXMgdG8gYmUKLXNldCB0byB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlLiA6ZGF0YTpgX19maWxlX19gIGlzIHRvIGJlIHRoZSAicGF0aCIgdG8gdGhlIGZpbGUKLXVubGVzcyB0aGUgbW9kdWxlIGlzIGJ1aWx0LWluIChhbmQgdGh1cyBsaXN0ZWQgaW4KLTpkYXRhOmBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXNgKSBpbiB3aGljaCBjYXNlIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNldC4KLUlmIHdoYXQgaXMgYmVpbmcgaW1wb3J0ZWQgaXMgYSBwYWNrYWdlIHRoZW4gOmRhdGE6YF9fcGF0aF9fYCBpcyB0byBiZSBzZXQgdG8gYQotbGlzdCBvZiBwYXRocyB0byBiZSBzZWFyY2hlZCB3aGVuIGxvb2tpbmcgZm9yIG1vZHVsZXMgYW5kIHBhY2thZ2VzIGNvbnRhaW5lZAotd2l0aGluIHRoZSBwYWNrYWdlIGJlaW5nIGltcG9ydGVkLiA6ZGF0YTpgX19wYWNrYWdlX19gIGlzIG9wdGlvbmFsIGJ1dCBzaG91bGQKLWJlIHNldCB0byB0aGUgbmFtZSBvZiBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZSBvciBwYWNrYWdlICh0aGUgZW1wdHkKLXN0cmluZyBpcyB1c2VkIGZvciBtb2R1bGUgbm90IGNvbnRhaW5lZCBpbiBhIHBhY2thZ2UpLiA6ZGF0YTpgX19sb2FkZXJfX2AgaXMKLWFsc28gb3B0aW9uYWwgYnV0IHNob3VsZCBiZSBzZXQgdG8gdGhlIGxvYWRlciBvYmplY3QgdGhhdCBpcyBsb2FkaW5nIHRoZQotbW9kdWxlLgotCi0uLiBpbmRleDo6Ci0gICAgZXhjZXB0aW9uOiBJbXBvcnRFcnJvcgotCi1JZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIGxvYWRpbmcgdGhlbiB0aGUgbG9hZGVyIHJhaXNlcyA6ZXhjOmBJbXBvcnRFcnJvcmAgaWYKLXNvbWUgb3RoZXIgZXhjZXB0aW9uIGlzIG5vdCBhbHJlYWR5IGJlaW5nIHByb3BhZ2F0ZWQuIE90aGVyd2lzZSB0aGUgbG9hZGVyCi1yZXR1cm5zIHRoZSBtb2R1bGUgdGhhdCB3YXMgbG9hZGVkIGFuZCBpbml0aWFsaXplZC4KLQotV2hlbiBzdGVwICgxKSBmaW5pc2hlcyB3aXRob3V0IHJhaXNpbmcgYW4gZXhjZXB0aW9uLCBzdGVwICgyKSBjYW4gYmVnaW4uCi0KLVRoZSBmaXJzdCBmb3JtIG9mIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBiaW5kcyB0aGUgbW9kdWxlIG5hbWUgaW4gdGhlIGxvY2FsCi1uYW1lc3BhY2UgdG8gdGhlIG1vZHVsZSBvYmplY3QsIGFuZCB0aGVuIGdvZXMgb24gdG8gaW1wb3J0IHRoZSBuZXh0IGlkZW50aWZpZXIsCi1pZiBhbnkuICBJZiB0aGUgbW9kdWxlIG5hbWUgaXMgZm9sbG93ZWQgYnkgOmtleXdvcmQ6YGFzYCwgdGhlIG5hbWUgZm9sbG93aW5nCi06a2V5d29yZDpgYXNgIGlzIHVzZWQgYXMgdGhlIGxvY2FsIG5hbWUgZm9yIHRoZSBtb2R1bGUuCiAKIC4uIGluZGV4OjoKICAgIHBhaXI6IG5hbWU7IGJpbmRpbmcKKyAgIGtleXdvcmQ6IGZyb20KICAgIGV4Y2VwdGlvbjogSW1wb3J0RXJyb3IKIAotVGhlIDprZXl3b3JkOmBmcm9tYCBmb3JtIGRvZXMgbm90IGJpbmQgdGhlIG1vZHVsZSBuYW1lOiBpdCBnb2VzIHRocm91Z2ggdGhlIGxpc3QKLW9mIGlkZW50aWZpZXJzLCBsb29rcyBlYWNoIG9uZSBvZiB0aGVtIHVwIGluIHRoZSBtb2R1bGUgZm91bmQgaW4gc3RlcCAoMSksIGFuZAotYmluZHMgdGhlIG5hbWUgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSB0byB0aGUgb2JqZWN0IHRodXMgZm91bmQuICBBcyB3aXRoIHRoZQotZmlyc3QgZm9ybSBvZiA6a2V5d29yZDpgaW1wb3J0YCwgYW4gYWx0ZXJuYXRlIGxvY2FsIG5hbWUgY2FuIGJlIHN1cHBsaWVkIGJ5Ci1zcGVjaWZ5aW5nICI6a2V5d29yZDpgYXNgIGxvY2FsbmFtZSIuICBJZiBhIG5hbWUgaXMgbm90IGZvdW5kLAotOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4gIElmIHRoZSBsaXN0IG9mIGlkZW50aWZpZXJzIGlzIHJlcGxhY2VkIGJ5IGEgc3RhcgotKGBgJyonYGApLCBhbGwgcHVibGljIG5hbWVzIGRlZmluZWQgaW4gdGhlIG1vZHVsZSBhcmUgYm91bmQgaW4gdGhlIGxvY2FsCi1uYW1lc3BhY2Ugb2YgdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudC4KK1RoZSA6a2V5d29yZDpgZnJvbWAgZm9ybSB1c2VzIGEgc2xpZ2h0bHkgbW9yZSBjb21wbGV4IHByb2Nlc3M6CisKKyMuIGZpbmQgdGhlIG1vZHVsZSBzcGVjaWZpZWQgaW4gdGhlIDprZXl3b3JkOmBmcm9tYCBjbGF1c2UgbG9hZGluZyBhbmQKKyAgIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3Nhcnk7CisjLiBmb3IgZWFjaCBvZiB0aGUgaWRlbnRpZmllcnMgc3BlY2lmaWVkIGluIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBjbGF1c2VzOgorCisgICAjLiBjaGVjayBpZiB0aGUgaW1wb3J0ZWQgbW9kdWxlIGhhcyBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lCisgICAjLiBpZiBub3QsIGF0dGVtcHQgdG8gaW1wb3J0IGEgc3VibW9kdWxlIHdpdGggdGhhdCBuYW1lIGFuZCB0aGVuCisgICAgICBjaGVjayB0aGUgaW1wb3J0ZWQgbW9kdWxlIGFnYWluIGZvciB0aGF0IGF0dHJpYnV0ZQorICAgIy4gaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQsIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuCisgICAjLiBvdGhlcndpc2UsIGEgcmVmZXJlbmNlIHRvIHRoYXQgdmFsdWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSwKKyAgICAgIHVzaW5nIHRoZSBuYW1lIGluIHRoZSA6a2V5d29yZDpgYXNgIGNsYXVzZSBpZiBpdCBpcyBwcmVzZW50LAorICAgICAgb3RoZXJ3aXNlIHVzaW5nIHRoZSBhdHRyaWJ1dGUgbmFtZQorCitFeGFtcGxlczo6CisKKyAgIGltcG9ydCBmb28gICAgICAgICAgICAgICAgICMgZm9vIGltcG9ydGVkIGFuZCBib3VuZCBsb2NhbGx5CisgICBpbXBvcnQgZm9vLmJhci5iYXogICAgICAgICAjIGZvby5iYXIuYmF6IGltcG9ydGVkLCBmb28gYm91bmQgbG9jYWxseQorICAgaW1wb3J0IGZvby5iYXIuYmF6IGFzIGZiYiAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgZmJiCisgICBmcm9tIGZvby5iYXIgaW1wb3J0IGJheiAgICAjIGZvby5iYXIuYmF6IGltcG9ydGVkIGFuZCBib3VuZCBhcyBiYXoKKyAgIGZyb20gZm9vIGltcG9ydCBhdHRyICAgICAgICMgZm9vIGltcG9ydGVkIGFuZCBmb28uYXR0ciBib3VuZCBhcyBhdHRyCisKK0lmIHRoZSBsaXN0IG9mIGlkZW50aWZpZXJzIGlzIHJlcGxhY2VkIGJ5IGEgc3RhciAoYGAnKidgYCksIGFsbCBwdWJsaWMKK25hbWVzIGRlZmluZWQgaW4gdGhlIG1vZHVsZSBhcmUgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIHNjb3BlCit3aGVyZSB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IG9jY3Vycy4KIAogLi4gaW5kZXg6OiBzaW5nbGU6IF9fYWxsX18gKG9wdGlvbmFsIG1vZHVsZSBhdHRyaWJ1dGUpCiAKIFRoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nIHRoZSBtb2R1bGUncwotbmFtZXNwYWNlIGZvciBhIHZhcmlhYmxlIG5hbWVkIGBgX19hbGxfX2BgOyBpZiBkZWZpbmVkLCBpdCBtdXN0IGJlIGEgc2VxdWVuY2Ugb2YKLXN0cmluZ3Mgd2hpY2ggYXJlIG5hbWVzIGRlZmluZWQgb3IgaW1wb3J0ZWQgYnkgdGhhdCBtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4KLWBgX19hbGxfX2BgIGFyZSBhbGwgY29uc2lkZXJlZCBwdWJsaWMgYW5kIGFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmIGBgX19hbGxfX2BgCi1pcyBub3QgZGVmaW5lZCwgdGhlIHNldCBvZiBwdWJsaWMgbmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGUncwotbmFtZXNwYWNlIHdoaWNoIGRvIG5vdCBiZWdpbiB3aXRoIGFuIHVuZGVyc2NvcmUgY2hhcmFjdGVyIChgYCdfJ2BgKS4KLWBgX19hbGxfX2BgIHNob3VsZCBjb250YWluIHRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWQKLWFjY2lkZW50YWxseSBleHBvcnRpbmcgaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhcyBsaWJyYXJ5Ci1tb2R1bGVzIHdoaWNoIHdlcmUgaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLgorbmFtZXNwYWNlIGZvciBhIHZhcmlhYmxlIG5hbWVkIGBgX19hbGxfX2BgOyBpZiBkZWZpbmVkLCBpdCBtdXN0IGJlIGEgc2VxdWVuY2UKK29mIHN0cmluZ3Mgd2hpY2ggYXJlIG5hbWVzIGRlZmluZWQgb3IgaW1wb3J0ZWQgYnkgdGhhdCBtb2R1bGUuICBUaGUgbmFtZXMKK2dpdmVuIGluIGBgX19hbGxfX2BgIGFyZSBhbGwgY29uc2lkZXJlZCBwdWJsaWMgYW5kIGFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmCitgYF9fYWxsX19gYCBpcyBub3QgZGVmaW5lZCwgdGhlIHNldCBvZiBwdWJsaWMgbmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kCitpbiB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIHdoaWNoIGRvIG5vdCBiZWdpbiB3aXRoIGFuIHVuZGVyc2NvcmUgY2hhcmFjdGVyCisoYGAnXydgYCkuICBgYF9fYWxsX19gYCBzaG91bGQgY29udGFpbiB0aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkCit0byBhdm9pZCBhY2NpZGVudGFsbHkgZXhwb3J0aW5nIGl0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXMKK2xpYnJhcnkgbW9kdWxlcyB3aGljaCB3ZXJlIGltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS4KKworVGhlIDprZXl3b3JkOmBmcm9tYCBmb3JtIHdpdGggYGAqYGAgbWF5IG9ubHkgb2NjdXIgaW4gYSBtb2R1bGUgc2NvcGUuCitBdHRlbXB0aW5nIHRvIHVzZSBpdCBpbiBjbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9ucyB3aWxsIHJhaXNlIGEKKzpleGM6YFN5bnRheEVycm9yYC4KKworLi4gaW5kZXg6OiBzaW5nbGU6IF9fYWxsX18gKG9wdGlvbmFsIG1vZHVsZSBhdHRyaWJ1dGUpCisKK1RoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nIHRoZSBtb2R1bGUncworbmFtZXNwYWNlIGZvciBhIHZhcmlhYmxlIG5hbWVkIGBgX19hbGxfX2BgOyBpZiBkZWZpbmVkLCBpdCBtdXN0IGJlIGEgc2VxdWVuY2UKK29mIHN0cmluZ3Mgd2hpY2ggYXJlIG5hbWVzIGRlZmluZWQgb3IgaW1wb3J0ZWQgYnkgdGhhdCBtb2R1bGUuICBUaGUgbmFtZXMKK2dpdmVuIGluIGBgX19hbGxfX2BgIGFyZSBhbGwgY29uc2lkZXJlZCBwdWJsaWMgYW5kIGFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmCitgYF9fYWxsX19gYCBpcyBub3QgZGVmaW5lZCwgdGhlIHNldCBvZiBwdWJsaWMgbmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kCitpbiB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIHdoaWNoIGRvIG5vdCBiZWdpbiB3aXRoIGFuIHVuZGVyc2NvcmUgY2hhcmFjdGVyCisoYGAnXydgYCkuICBgYF9fYWxsX19gYCBzaG91bGQgY29udGFpbiB0aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkCit0byBhdm9pZCBhY2NpZGVudGFsbHkgZXhwb3J0aW5nIGl0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXMKK2xpYnJhcnkgbW9kdWxlcyB3aGljaCB3ZXJlIGltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS4KIAogVGhlIDprZXl3b3JkOmBmcm9tYCBmb3JtIHdpdGggYGAqYGAgbWF5IG9ubHkgb2NjdXIgaW4gYSBtb2R1bGUgc2NvcGUuICBUaGUgd2lsZAogY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gYGBpbXBvcnQgKmBgIC0tLSBpcyBvbmx5IGFsbG93ZWQgYXQgdGhlIG1vZHVsZSBsZXZlbC4KZGlmZiAtLWdpdCBhL0RvYy90b29scy9zcGhpbnhleHQvaW5kZXhzaWRlYmFyLmh0bWwgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L2luZGV4c2lkZWJhci5odG1sCmluZGV4IDc0OGNiOTEuLmEwZWMzMmYgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy9zcGhpbnhleHQvaW5kZXhzaWRlYmFyLmh0bWwKKysrIGIvRG9jL3Rvb2xzL3NwaGlueGV4dC9pbmRleHNpZGViYXIuaHRtbApAQCAtMyw3ICszLDcgQEAKIAkgICAgPGgzPkRvY3MgZm9yIG90aGVyIHZlcnNpb25zPC9oMz4KIAkgICAgPHVsPgogCSAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vZG9jcy5weXRob24ub3JnLzIuNy8iPlB5dGhvbiAyLjcgKHN0YWJsZSk8L2E+PC9saT4KLQkgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjMvIj5QeXRob24gMy4zIChpbiBkZXZlbG9wbWVudCk8L2E+PC9saT4KKwkgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjQvIj5QeXRob24gMy40IChpbiBkZXZlbG9wbWVudCk8L2E+PC9saT4KICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb2MvdmVyc2lvbnMvIj5PbGQgdmVyc2lvbnM8L2E+PC9saT4KICAgICAgICAgICAgIDwvdWw+CiAKZGlmZiAtLWdpdCBhL0RvYy90b29scy9zcGhpbnhleHQvbGF5b3V0Lmh0bWwgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L2xheW91dC5odG1sCmluZGV4IDRiMTZiM2YuLjE2YTkyMTIgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy9zcGhpbnhleHQvbGF5b3V0Lmh0bWwKKysrIGIvRG9jL3Rvb2xzL3NwaGlueGV4dC9sYXlvdXQuaHRtbApAQCAtMTYsNiArMTYsNjMgQEAKICAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0ie3sgcGF0aHRvKCdfc3RhdGljL3B5LnBuZycsIDEpIH19IiAvPgogICAgIHslIGlmIG5vdCBlbWJlZGRlZCAlfTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Int7IHBhdGh0bygnX3N0YXRpYy9jb3B5YnV0dG9uLmpzJywgMSkgfX0iPjwvc2NyaXB0PnslIGVuZGlmICV9CiAgICAgeyUgaWYgdmVyc2lvbnN3aXRjaGVyIGlzIGRlZmluZWQgYW5kIG5vdCBlbWJlZGRlZCAlfTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Int7IHBhdGh0bygnX3N0YXRpYy92ZXJzaW9uX3N3aXRjaC5qcycsIDEpIH19Ij48L3NjcmlwdD57JSBlbmRpZiAlfQorICAgIHslIGlmIHBhZ2VuYW1lID09ICd3aGF0c25ldy9jaGFuZ2Vsb2cnICV9CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CisgICAgICAgICAgLy8gYWRkIHRoZSBzZWFyY2ggZm9ybSBhbmQgYmluZCB0aGUgZXZlbnRzCisgICAgICAgICAgJCgnaDEnKS5hZnRlcihbCisgICAgICAgICAgICAnPHA+RmlsdGVyIGVudHJpZXMgYnkgY29udGVudDonLAorICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiB2YWx1ZT0iIiBpZD0ic2VhcmNoYm94IiBzdHlsZT0id2lkdGg6IDUwJSI+JywKKyAgICAgICAgICAgICc8aW5wdXQgdHlwZT0ic3VibWl0IiBpZD0ic2VhcmNoYm94LXN1Ym1pdCIgdmFsdWU9IkZpbHRlciI+PC9wPicKKyAgICAgICAgICBdLmpvaW4oJ1xuJykpOworCisgICAgICAgICAgZnVuY3Rpb24gZG9maWx0ZXIoKSB7CisgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICB2YXIgcXVlcnkgPSBuZXcgUmVnRXhwKCQoJyNzZWFyY2hib3gnKS52YWwoKSwgJ2knKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBub3QgYSB2YWxpZCByZWdleCAoeWV0KQorICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIC8vIGZpbmQgaGVhZGVycyBmb3IgdGhlIHZlcnNpb25zIChXaGF0J3MgbmV3IGluIFB5dGhvbiBYLlkuWj8pCisgICAgICAgICAgICAgICQoJyNjaGFuZ2Vsb2cgaDInKS5lYWNoKGZ1bmN0aW9uKGluZGV4MSwgaDIpIHsKKyAgICAgICAgICAgICAgICAgIHZhciBoMl9wYXJlbnQgPSAkKGgyKS5wYXJlbnQoKTsKKyAgICAgICAgICAgICAgICAgIHZhciBzZWN0aW9uc19mb3VuZCA9IDA7CisgICAgICAgICAgICAgICAgICAvLyBmaW5kIGhlYWRlcnMgZm9yIHRoZSBzZWN0aW9ucyAoQ29yZSwgTGlicmFyeSwgZXRjLikKKyAgICAgICAgICAgICAgICAgIGgyX3BhcmVudC5maW5kKCdoMycpLmVhY2goZnVuY3Rpb24oaW5kZXgyLCBoMykgeworICAgICAgICAgICAgICAgICAgICAgIHZhciBoM19wYXJlbnQgPSAkKGgzKS5wYXJlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICB2YXIgZW50cmllc19mb3VuZCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgLy8gZmluZCBhbGwgdGhlIGVudHJpZXMKKyAgICAgICAgICAgICAgICAgICAgICBoM19wYXJlbnQuZmluZCgnbGknKS5lYWNoKGZ1bmN0aW9uKGluZGV4MywgbGkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxpID0gJChsaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZSBxdWVyeSBtYXRjaGVzIHRoZSBlbnRyeQorICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocXVlcnkudGVzdChsaS50ZXh0KCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaS5zaG93KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyaWVzX2ZvdW5kKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaS5oaWRlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGVyZSBhcmUgZW50cmllcywgc2hvdyB0aGUgc2VjdGlvbiwgb3RoZXJ3aXNlIGhpZGUgaXQKKyAgICAgICAgICAgICAgICAgICAgICBpZiAoZW50cmllc19mb3VuZCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaDNfcGFyZW50LnNob3coKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnNfZm91bmQrKzsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGgzX3BhcmVudC5oaWRlKCk7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICBpZiAoc2VjdGlvbnNfZm91bmQgPiAwKQorICAgICAgICAgICAgICAgICAgICAgIGgyX3BhcmVudC5zaG93KCk7CisgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgaDJfcGFyZW50LmhpZGUoKTsKKyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgfQorICAgICAgICAgICQoJyNzZWFyY2hib3gnKS5rZXl1cChkb2ZpbHRlcik7CisgICAgICAgICAgJCgnI3NlYXJjaGJveC1zdWJtaXQnKS5jbGljayhkb2ZpbHRlcik7CisgICAgICB9KTsKKyAgICA8L3NjcmlwdD4KKyAgICB7JSBlbmRpZiAlfQoge3sgc3VwZXIoKSB9fQogeyUgZW5kYmxvY2sgJX0KIHslIGJsb2NrIGZvb3RlciAlfQpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9wYXRjaGxldmVsLnB5IGIvRG9jL3Rvb2xzL3NwaGlueGV4dC9wYXRjaGxldmVsLnB5CmluZGV4IGIwNzBkNjAuLmJjYTJlYjggMTAwNjQ0Ci0tLSBhL0RvYy90b29scy9zcGhpbnhleHQvcGF0Y2hsZXZlbC5weQorKysgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L3BhdGNobGV2ZWwucHkKQEAgLTM0LDggKzM0LDcgQEAKIAogICAgIHJlbGVhc2UgPSB2ZXJzaW9uID0gJyVzLiVzJyAlIChkWydQWV9NQUpPUl9WRVJTSU9OJ10sIGRbJ1BZX01JTk9SX1ZFUlNJT04nXSkKICAgICBtaWNybyA9IGludChkWydQWV9NSUNST19WRVJTSU9OJ10pCi0gICAgaWYgbWljcm8gIT0gMDoKLSAgICAgICAgcmVsZWFzZSArPSAnLicgKyBzdHIobWljcm8pCisgICAgcmVsZWFzZSArPSAnLicgKyBzdHIobWljcm8pCiAKICAgICBsZXZlbCA9IGRbJ1BZX1JFTEVBU0VfTEVWRUwnXQogICAgIHN1ZmZpeGVzID0gewpAQCAtNTEsOCArNTAsNyBAQAogZGVmIGdldF9zeXNfdmVyc2lvbl9pbmZvKCk6CiAgICAgbWFqb3IsIG1pbm9yLCBtaWNybywgbGV2ZWwsIHNlcmlhbCA9IHN5cy52ZXJzaW9uX2luZm8KICAgICByZWxlYXNlID0gdmVyc2lvbiA9ICclcy4lcycgJSAobWFqb3IsIG1pbm9yKQotICAgIGlmIG1pY3JvOgotICAgICAgICByZWxlYXNlICs9ICcuJXMnICUgbWljcm8KKyAgICByZWxlYXNlICs9ICcuJXMnICUgbWljcm8KICAgICBpZiBsZXZlbCAhPSAnZmluYWwnOgogICAgICAgICByZWxlYXNlICs9ICclcyVzJyAlIChsZXZlbFswXSwgc2VyaWFsKQogICAgIHJldHVybiB2ZXJzaW9uLCByZWxlYXNlCmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvc3BoaW54ZXh0L3B5c3BlY2lmaWMucHkgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L3B5c3BlY2lmaWMucHkKaW5kZXggOWIyY2M0Ny4uZThlYjcwMyAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9weXNwZWNpZmljLnB5CisrKyBiL0RvYy90b29scy9zcGhpbnhleHQvcHlzcGVjaWZpYy5weQpAQCAtNSwxMiArNSwxMiBAQAogCiAgICAgU3BoaW54IGV4dGVuc2lvbiB3aXRoIFB5dGhvbiBkb2Mtc3BlY2lmaWMgbWFya3VwLgogCi0gICAgOmNvcHlyaWdodDogMjAwOCwgMjAwOSwgMjAxMCBieSBHZW9yZyBCcmFuZGwuCisgICAgOmNvcHlyaWdodDogMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBieSBHZW9yZyBCcmFuZGwuCiAgICAgOmxpY2Vuc2U6IFB5dGhvbiBsaWNlbnNlLgogIiIiCiAKIElTU1VFX1VSSSA9ICdodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlJXMnCi1TT1VSQ0VfVVJJID0gJ2h0dHA6Ly9oZy5weXRob24ub3JnL2NweXRob24vZmlsZS8zLjIvJXMnCitTT1VSQ0VfVVJJID0gJ2h0dHA6Ly9oZy5weXRob24ub3JnL2NweXRob24vZmlsZS8zLjMvJXMnCiAKIGZyb20gZG9jdXRpbHMgaW1wb3J0IG5vZGVzLCB1dGlscwogZnJvbSBzcGhpbngudXRpbC5ub2RlcyBpbXBvcnQgc3BsaXRfZXhwbGljaXRfdGl0bGUKQEAgLTE3NCw2ICsxNzQsNDcgQEAKICAgICAgICAgcmV0dXJuIHJldAogCiAKKyMgU3VwcG9ydCBmb3IgaW5jbHVkaW5nIE1pc2MvTkVXUworCitpbXBvcnQgcmUKK2ltcG9ydCBjb2RlY3MKKworaXNzdWVfcmUgPSByZS5jb21waWxlKCcoW0lpXSlzc3VlICMoWzAtOV0rKScpCit3aGF0c25ld19yZSA9IHJlLmNvbXBpbGUociIoP2ltKV53aGF0J3MgbmV3IGluICguKj8pXD8/JCIpCisKK2NsYXNzIE1pc2NOZXdzKERpcmVjdGl2ZSk6CisgICAgaGFzX2NvbnRlbnQgPSBGYWxzZQorICAgIHJlcXVpcmVkX2FyZ3VtZW50cyA9IDEKKyAgICBvcHRpb25hbF9hcmd1bWVudHMgPSAwCisgICAgZmluYWxfYXJndW1lbnRfd2hpdGVzcGFjZSA9IEZhbHNlCisgICAgb3B0aW9uX3NwZWMgPSB7fQorCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgZm5hbWUgPSBzZWxmLmFyZ3VtZW50c1swXQorICAgICAgICBzb3VyY2UgPSBzZWxmLnN0YXRlX21hY2hpbmUuaW5wdXRfbGluZXMuc291cmNlKAorICAgICAgICAgICAgc2VsZi5saW5lbm8gLSBzZWxmLnN0YXRlX21hY2hpbmUuaW5wdXRfb2Zmc2V0IC0gMSkKKyAgICAgICAgc291cmNlX2RpciA9IHBhdGguZGlybmFtZShwYXRoLmFic3BhdGgoc291cmNlKSkKKyAgICAgICAgZnBhdGggPSBwYXRoLmpvaW4oc291cmNlX2RpciwgZm5hbWUpCisgICAgICAgIHNlbGYuc3RhdGUuZG9jdW1lbnQuc2V0dGluZ3MucmVjb3JkX2RlcGVuZGVuY2llcy5hZGQoZnBhdGgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZwID0gY29kZWNzLm9wZW4oZnBhdGgsIGVuY29kaW5nPSd1dGYtOCcpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY29udGVudCA9IGZwLnJlYWQoKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICB0ZXh0ID0gJ1RoZSBORVdTIGZpbGUgaXMgbm90IGF2YWlsYWJsZS4nCisgICAgICAgICAgICBub2RlID0gbm9kZXMuc3Ryb25nKHRleHQsIHRleHQpCisgICAgICAgICAgICByZXR1cm4gW25vZGVdCisgICAgICAgIGNvbnRlbnQgPSBpc3N1ZV9yZS5zdWIocidgXDFzc3VlICNcMiA8aHR0cDovL2J1Z3MucHl0aG9uLm9yZy9cMj5gX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQpCisgICAgICAgIGNvbnRlbnQgPSB3aGF0c25ld19yZS5zdWIocidcMScsIGNvbnRlbnQpCisgICAgICAgICMgcmVtb3ZlIGZpcnN0IDMgbGluZXMgYXMgdGhleSBhcmUgdGhlIG1haW4gaGVhZGluZworICAgICAgICBsaW5lcyA9IFsnLi4gZGVmYXVsdC1yb2xlOjogb2JqJywgJyddICsgY29udGVudC5zcGxpdGxpbmVzKClbMzpdCisgICAgICAgIHNlbGYuc3RhdGVfbWFjaGluZS5pbnNlcnRfaW5wdXQobGluZXMsIGZuYW1lKQorICAgICAgICByZXR1cm4gW10KKworCiAjIFN1cHBvcnQgZm9yIGJ1aWxkaW5nICJ0b3BpYyBoZWxwIiBmb3IgcHlkb2MKIAogcHlkb2NfdG9waWNfbGFiZWxzID0gWwpAQCAtMjMwLDExICsyNzEsMTIgQEAKICAgICAgICAgICAgIGRvY3VtZW50LmFwcGVuZChkb2N0cmVlLmlkc1tsYWJlbGlkXSkKICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gU3RyaW5nT3V0cHV0KGVuY29kaW5nPSd1dGYtOCcpCiAgICAgICAgICAgICB3cml0ZXIud3JpdGUoZG9jdW1lbnQsIGRlc3RpbmF0aW9uKQotICAgICAgICAgICAgc2VsZi50b3BpY3NbbGFiZWxdID0gc3RyKHdyaXRlci5vdXRwdXQpCisgICAgICAgICAgICBzZWxmLnRvcGljc1tsYWJlbF0gPSB3cml0ZXIub3V0cHV0LmVuY29kZSgndXRmLTgnKQogCiAgICAgZGVmIGZpbmlzaChzZWxmKToKICAgICAgICAgZiA9IG9wZW4ocGF0aC5qb2luKHNlbGYub3V0ZGlyLCAndG9waWNzLnB5JyksICd3JykKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgZi53cml0ZSgnIyAtKi0gY29kaW5nOiB1dGYtOCAtKi1cbicpCiAgICAgICAgICAgICBmLndyaXRlKCcjIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uICVzXG4nICUgYXNjdGltZSgpKQogICAgICAgICAgICAgZi53cml0ZSgndG9waWNzID0gJyArIHBmb3JtYXQoc2VsZi50b3BpY3MpICsgJ1xuJykKICAgICAgICAgZmluYWxseToKQEAgLTMwNCwzICszNDYsNCBAQAogICAgIGFwcC5hZGRfZGVzY3JpcHRpb25fdW5pdCgnMnRvM2ZpeGVyJywgJzJ0bzNmaXhlcicsICclcyAoMnRvMyBmaXhlciknKQogICAgIGFwcC5hZGRfZGlyZWN0aXZlX3RvX2RvbWFpbigncHknLCAnZGVjb3JhdG9yJywgUHlEZWNvcmF0b3JGdW5jdGlvbikKICAgICBhcHAuYWRkX2RpcmVjdGl2ZV90b19kb21haW4oJ3B5JywgJ2RlY29yYXRvcm1ldGhvZCcsIFB5RGVjb3JhdG9yTWV0aG9kKQorICAgIGFwcC5hZGRfZGlyZWN0aXZlKCdtaXNjbmV3cycsIE1pc2NOZXdzKQpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9zdXNwLWlnbm9yZWQuY3N2IGIvRG9jL3Rvb2xzL3NwaGlueGV4dC9zdXNwLWlnbm9yZWQuY3N2CmluZGV4IDUwNzZhZWQuLjJjMTVhNWMgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy9zcGhpbnhleHQvc3VzcC1pZ25vcmVkLmNzdgorKysgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L3N1c3AtaWdub3JlZC5jc3YKQEAgLTEsMTYgKzEsMjQgQEAKIGMtYXBpL2FyZywsOnJlZiwiUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIk98TzpyZWYiIiwgJm9iamVjdCwgJmNhbGxiYWNrKSIKIGMtYXBpL2xpc3QsLDpoaWdoLGxpc3RbbG93OmhpZ2hdCiBjLWFwaS9saXN0LCw6aGlnaCxsaXN0W2xvdzpoaWdoXSA9IGl0ZW1saXN0CitjLWFwaS9zZXF1ZW5jZSwsOmkyLGRlbCBvW2kxOmkyXQogYy1hcGkvc2VxdWVuY2UsLDppMixvW2kxOmkyXQogYy1hcGkvc2VxdWVuY2UsLDppMixvW2kxOmkyXSA9IHYKLWMtYXBpL3NlcXVlbmNlLCw6aTIsZGVsIG9baTE6aTJdCiBjLWFwaS91bmljb2RlLCw6ZW5kLHN0cltzdGFydDplbmRdCitjLWFwaS91bmljb2RlLCw6c3RhcnQsdW5pY29kZVtzdGFydDpzdGFydCtsZW5ndGhdCitkaXN0dXRpbHMvZXhhbXBsZXMsMjY3LGAsVGhpcyBpcyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGBgZm9vYmFyYGAgcGFja2FnZS4KIGRpc3R1dGlscy9zZXR1cHNjcmlwdCwsOjosCiBleHRlbmRpbmcvZW1iZWRkaW5nLCw6bnVtYXJncywiaWYoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiI6bnVtYXJncyIiKSkiCi1leHRlbmRpbmcvZXh0ZW5kaW5nLCw6c2V0LCJpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIk86c2V0X2NhbGxiYWNrIiIsICZ0ZW1wKSkgeyIKIGV4dGVuZGluZy9leHRlbmRpbmcsLDpteWZ1bmN0aW9uLCJQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiRDpteWZ1bmN0aW9uIiIsICZjKTsiCitleHRlbmRpbmcvZXh0ZW5kaW5nLCw6c2V0LCJpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIk86c2V0X2NhbGxiYWNrIiIsICZ0ZW1wKSkgeyIKIGV4dGVuZGluZy9uZXd0eXBlcywsOmNhbGwsImlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiInNzczpjYWxsIiIsICZhcmcxLCAmYXJnMiwgJmFyZzMpKSB7IgogZXh0ZW5kaW5nL3dpbmRvd3MsLDppbml0c3BhbSwvZXhwb3J0OmluaXRzcGFtCitmYXEvcHJvZ3JhbW1pbmcsLDpjaHIsIj49NC4wKSBvciAxK2YoeGMseWMseCp4LXkqeSt4YywyLjAqeCp5K3ljLGstMSxmKTpmKHhjLHljLHgseSxrLGYpOmNocigiCitmYXEvcHJvZ3JhbW1pbmcsLDo6LGZvciB4IGluIHNlcXVlbmNlWzo6LTFdOgorZmFxL3Byb2dyYW1taW5nLCw6cmVkdWNlLCJwcmludCgobGFtYmRhIFJ1LFJvLEl1LElvLElNLFN4LFN5OnJlZHVjZShsYW1iZGEgeCx5OngreSxtYXAobGFtYmRhIHksIgorZmFxL3Byb2dyYW1taW5nLCw6cmVkdWNlLCJTeD1TeCxTeT1TeTpyZWR1Y2UobGFtYmRhIHgseTp4K3ksbWFwKGxhbWJkYSB4LHhjPVJ1LHljPXljLFJ1PVJ1LFJvPVJvLCIKK2ZhcS93aW5kb3dzLDIyOSw6RU9GLEBzZXRsb2NhbCBlbmFibGVleHRlbnNpb25zICYgcHl0aG9uIC14ICV+ZjAgJSogJiBnb3RvIDpFT0YKK2ZhcS93aW5kb3dzLDM5Myw6UkVHLC5weSA6UkVHX1NaOiBjOlw8cGF0aCB0byBweXRob24+XHB5dGhvbi5leGUgLXUgJXMgJXMKIGhvd3RvL2Nwb3J0aW5nLCw6YWRkLCJpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiJpaTphZGRfaW50cyIiLCAmb25lLCAmdHdvKSkiCiBob3d0by9jcG9ydGluZywsOmVuY29kZSwiaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiTzplbmNvZGVfb2JqZWN0IiIsICZteW9iaikpIgogaG93dG8vY3BvcnRpbmcsLDpzYXksImlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIlU6c2F5X2hlbGxvIiIsICZuYW1lKSkiCkBAIC0yMiwxOSArMzAsOTEgQEAKIGhvd3RvL2N1cnNlcywsOnJlZCwiVGhleSBhcmU6IDA6YmxhY2ssIDE6cmVkLCAyOmdyZWVuLCAzOnllbGxvdywgNDpibHVlLCA1Om1hZ2VudGEsIDY6Y3lhbiwgYW5kIgogaG93dG8vY3Vyc2VzLCw6d2hpdGUsIjc6d2hpdGUuIgogaG93dG8vY3Vyc2VzLCw6eWVsbG93LCJUaGV5IGFyZTogMDpibGFjaywgMTpyZWQsIDI6Z3JlZW4sIDM6eWVsbG93LCA0OmJsdWUsIDU6bWFnZW50YSwgNjpjeWFuLCBhbmQiCitob3d0by9pcGFkZHJlc3MsLDpEQjgsPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOkRCODo6MScpCitob3d0by9pcGFkZHJlc3MsLDo6LD4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjAwMTpEQjg6OjEnKQoraG93dG8vaXBhZGRyZXNzLCw6ZGI4LElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MScpCitob3d0by9pcGFkZHJlc3MsLDo6LElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MScpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxJykKK2hvd3RvL2lwYWRkcmVzcywsOjosSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxJykKK2hvd3RvL2lwYWRkcmVzcywsOjosSVB2NkFkZHJlc3MoJzo6MScpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MC85NicpCitob3d0by9pcGFkZHJlc3MsLDo6LD4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTpkYjg6OjAvOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6ZGI4LElQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOjosSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6ZGI4LElQdjZOZXR3b3JrKCcyMDAxOmRiODo6LzEyOCcpCitob3d0by9pcGFkZHJlc3MsLDo6LElQdjZOZXR3b3JrKCcyMDAxOmRiODo6LzEyOCcpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MS85NicpCitob3d0by9pcGFkZHJlc3MsLDo6LD4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTpkYjg6OjEvOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6ZGI4LElQdjZJbnRlcmZhY2UoJzIwMDE6ZGI4OjoxLzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOjosSVB2NkludGVyZmFjZSgnMjAwMTpkYjg6OjEvOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6ZGI4LD4+PiBhZGRyNiA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOmRiODo6MScpCitob3d0by9pcGFkZHJlc3MsLDo6LD4+PiBhZGRyNiA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOmRiODo6MScpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsPj4+IGhvc3Q2ID0gaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMjAwMTpkYjg6OjEvOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6Oiw+Pj4gaG9zdDYgPSBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcyMDAxOmRiODo6MS85NicpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6OixJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsPj4+IG5ldDYgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTpkYjg6OjAvOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6Oiw+Pj4gbmV0NiA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MC85NicpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsPj4+IG5ldDYgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTpkYjg6OjAvOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6Oiw+Pj4gbmV0NiA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MC85NicpCitob3d0by9pcGFkZHJlc3MsLDpmZmZmLElQdjZBZGRyZXNzKCdmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjo6JykKK2hvd3RvL2lwYWRkcmVzcywsOjosSVB2NkFkZHJlc3MoJ2ZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOjonKQoraG93dG8vaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnOjpmZmZmOmZmZmYnKQoraG93dG8vaXBhZGRyZXNzLCw6ZmZmZixJUHY2QWRkcmVzcygnOjpmZmZmOmZmZmYnKQoraG93dG8vaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnMjAwMTo6MScpCitob3d0by9pcGFkZHJlc3MsLDo6LElQdjZBZGRyZXNzKCcyMDAxOjpmZmZmOmZmZmYnKQoraG93dG8vaXBhZGRyZXNzLCw6ZmZmZixJUHY2QWRkcmVzcygnMjAwMTo6ZmZmZjpmZmZmJykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCwnMjAwMTpkYjg6OicKK2hvd3RvL2lwYWRkcmVzcywsOjosJzIwMDE6ZGI4OjonCitob3d0by9pcGFkZHJlc3MsLDpkYjgsJzIwMDE6ZGI4OjovOTYnCitob3d0by9pcGFkZHJlc3MsLDo6LCcyMDAxOmRiODo6Lzk2JworaG93dG8vbG9nZ2luZywsOkFuZCwiV0FSTklORzpBbmQgdGhpcywgdG9vIgoraG93dG8vbG9nZ2luZywsOkFuZCwiV0FSTklORzpyb290OkFuZCB0aGlzLCB0b28iCitob3d0by9sb2dnaW5nLCw6RG9pbmcsSU5GTzpyb290OkRvaW5nIHNvbWV0aGluZworaG93dG8vbG9nZ2luZywsOkZpbmlzaGVkLElORk86cm9vdDpGaW5pc2hlZAoraG93dG8vbG9nZ2luZywsOmxvZ2dlcixzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCitob3d0by9sb2dnaW5nLCw6TG9vayxXQVJOSU5HOnJvb3Q6TG9vayBiZWZvcmUgeW91IGxlYXAhCitob3d0by9sb2dnaW5nLCw6bWVzc2FnZSxzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCitob3d0by9sb2dnaW5nLCw6cm9vdCxERUJVRzpyb290OlRoaXMgbWVzc2FnZSBzaG91bGQgZ28gdG8gdGhlIGxvZyBmaWxlCitob3d0by9sb2dnaW5nLCw6cm9vdCxJTkZPOnJvb3Q6RG9pbmcgc29tZXRoaW5nCitob3d0by9sb2dnaW5nLCw6cm9vdCxJTkZPOnJvb3Q6RmluaXNoZWQKK2hvd3RvL2xvZ2dpbmcsLDpyb290LElORk86cm9vdDpTbyBzaG91bGQgdGhpcworaG93dG8vbG9nZ2luZywsOnJvb3QsSU5GTzpyb290OlN0YXJ0ZWQKK2hvd3RvL2xvZ2dpbmcsLDpyb290LCJXQVJOSU5HOnJvb3Q6QW5kIHRoaXMsIHRvbyIKK2hvd3RvL2xvZ2dpbmcsLDpyb290LFdBUk5JTkc6cm9vdDpMb29rIGJlZm9yZSB5b3UgbGVhcCEKK2hvd3RvL2xvZ2dpbmcsLDpyb290LFdBUk5JTkc6cm9vdDpXYXRjaCBvdXQhCitob3d0by9sb2dnaW5nLCw6U28sSU5GTzpyb290OlNvIHNob3VsZCB0aGlzCitob3d0by9sb2dnaW5nLCw6U28sSU5GTzpTbyBzaG91bGQgdGhpcworaG93dG8vbG9nZ2luZywsOlN0YXJ0ZWQsSU5GTzpyb290OlN0YXJ0ZWQKK2hvd3RvL2xvZ2dpbmcsLDpUaGlzLERFQlVHOnJvb3Q6VGhpcyBtZXNzYWdlIHNob3VsZCBnbyB0byB0aGUgbG9nIGZpbGUKK2hvd3RvL2xvZ2dpbmcsLDpUaGlzLERFQlVHOlRoaXMgbWVzc2FnZSBzaG91bGQgYXBwZWFyIG9uIHRoZSBjb25zb2xlCitob3d0by9sb2dnaW5nLCw6V2F0Y2gsV0FSTklORzpyb290OldhdGNoIG91dCEKK2hvd3RvL3B5cG9ydGluZyw3NSw6OiwjIG1ha2Ugc3VyZSB0byB1c2UgOjogUHl0aG9uICphbmQqIDo6IFB5dGhvbiA6OiAzIHNvCitob3d0by9weXBvcnRpbmcsNzUsOjosIidQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24nLCIKK2hvd3RvL3B5cG9ydGluZyw3NSw6OiwnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMnCiBob3d0by9yZWdleCwsOjosCiBob3d0by9yZWdleCwsOmZvbywoPzpmb28pCiBob3d0by91cmxsaWIyLCw6ZXhhbXBsZSwiZm9yIGV4YW1wbGUgIiJqb2VAcGFzc3dvcmQ6ZXhhbXBsZS5jb20iIiIKIGhvd3RvL3dlYnNlcnZlcnMsLC4uIGltYWdlOiwuLiBpbWFnZTo6IGh0dHAucG5nCiBsaWJyYXJ5L2F1ZGlvb3AsLDppcG9zLCIjIGZhY3RvciA9IGF1ZGlvb3AuZmluZGZhY3Rvcihpbl90ZXN0W2lwb3MqMjppcG9zKjIrbGVuKG91dF90ZXN0KV0sIgorbGlicmFyeS9iaXNlY3QsMzIsOmhpLGFsbCh2YWwgPj0geCBmb3IgdmFsIGluIGFbaTpoaV0pCitsaWJyYXJ5L2Jpc2VjdCw0Miw6aGksYWxsKHZhbCA+IHggZm9yIHZhbCBpbiBhW2k6aGldKQorbGlicmFyeS9jb25maWdwYXJzZXIsLDpob21lLG15X2RpcjogJHtDb21tb246aG9tZV9kaXJ9L3R3b3NoZWRzCitsaWJyYXJ5L2NvbmZpZ3BhcnNlciwsOm9wdGlvbiwke3NlY3Rpb246b3B0aW9ufQorbGlicmFyeS9jb25maWdwYXJzZXIsLDpwYXRoLHB5dGhvbl9kaXI6ICR7RnJhbWV3b3JrczpwYXRofS9QeXRob24vVmVyc2lvbnMvJHtGcmFtZXdvcmtzOlB5dGhvbn0KK2xpYnJhcnkvY29uZmlncGFyc2VyLCw6UHl0aG9uLHB5dGhvbl9kaXI6ICR7RnJhbWV3b3JrczpwYXRofS9QeXRob24vVmVyc2lvbnMvJHtGcmFtZXdvcmtzOlB5dGhvbn0KK2xpYnJhcnkvY29uZmlncGFyc2VyLCxgLCMgU2V0IHRoZSBvcHRpb25hbCBgcmF3YCBhcmd1bWVudCBvZiBnZXQoKSB0byBUcnVlIGlmIHlvdSB3aXNoIHRvIGRpc2FibGUKK2xpYnJhcnkvY29uZmlncGFyc2VyLCw6c3lzdGVtLHBhdGg6ICR7Q29tbW9uOnN5c3RlbV9kaXJ9L0xpYnJhcnkvRnJhbWV3b3Jrcy8KK2xpYnJhcnkvY29uZmlncGFyc2VyLCxgLCMgVGhlIG9wdGlvbmFsIGBmYWxsYmFja2AgYXJndW1lbnQgY2FuIGJlIHVzZWQgdG8gcHJvdmlkZSBhIGZhbGxiYWNrIHZhbHVlCitsaWJyYXJ5L2NvbmZpZ3BhcnNlciwsYCwjIFRoZSBvcHRpb25hbCBgdmFyc2AgYXJndW1lbnQgaXMgYSBkaWN0IHdpdGggbWVtYmVycyB0aGF0IHdpbGwgdGFrZQogbGlicmFyeS9kYXRldGltZSwsOk1NLAogbGlicmFyeS9kYXRldGltZSwsOlNTLAogbGlicmFyeS9kZWNpbWFsLCw6b3B0aW9uYWwsInRyYWlsbmVnOm9wdGlvbmFsIHRyYWlsaW5nIG1pbnVzIGluZGljYXRvciIKIGxpYnJhcnkvZGlmZmxpYiwsOmFoaSxhW2FsbzphaGldCiBsaWJyYXJ5L2RpZmZsaWIsLDpiaGksYltibG86YmhpXQorbGlicmFyeS9kaWZmbGliLCw6aTEsCiBsaWJyYXJ5L2RpZmZsaWIsLDppMiwKIGxpYnJhcnkvZGlmZmxpYiwsOmoyLAotbGlicmFyeS9kaWZmbGliLCw6aTEsCiBsaWJyYXJ5L2RpcywsOlRPUywKIGxpYnJhcnkvZGlzLCxgLFRPUyA9IGBUT1NgCiBsaWJyYXJ5L2RvY3Rlc3QsLGAsYGBmYWN0b3JpYWxgYCBmcm9tIHRoZSBgYGV4YW1wbGVgYCBtb2R1bGU6CkBAIC00NCw5NiArMTI0LDE4NiBAQAogbGlicmFyeS9mdW5jdGlvbnMsLDpzdG9wLCJhW3N0YXJ0OnN0b3AsIGldIgogbGlicmFyeS9mdW5jdGlvbnMsLDpzdG9wLGFbc3RhcnQ6c3RvcDpzdGVwXQogbGlicmFyeS9ob3RzaG90LCw6bGluZW5vLCJuY2FsbHMgIHRvdHRpbWUgIHBlcmNhbGwgIGN1bXRpbWUgIHBlcmNhbGwgZmlsZW5hbWU6bGluZW5vKGZ1bmN0aW9uKSIKLWxpYnJhcnkvaHR0cGxpYiwsOnBvcnQsaG9zdDpwb3J0Ci1saWJyYXJ5L2ltYXBsaWIsLDpNTSwiIiJERC1NbW0tWVlZWSBISDpNTTpTUyArSEhNTSIiIgotbGlicmFyeS9pbWFwbGliLCw6U1MsIiIiREQtTW1tLVlZWVkgSEg6TU06U1MgK0hITU0iIiIKLWxpYnJhcnkvaXRlcnRvb2xzLCw6c3RvcCxlbGVtZW50cyBmcm9tIHNlcVtzdGFydDpzdG9wOnN0ZXBdCitsaWJyYXJ5L2h0dHAuY2xpZW50LCw6cG9ydCxob3N0OnBvcnQKK2xpYnJhcnkvaHR0cC5jb29raWVzLCxgLCEjJCUmJyorLS5eX2B8fjoKK2xpYnJhcnkvaW1hcGxpYiwsOk1NLCIiIkRELU1tbS1ZWVlZIEhIOk1NOlNTIgorbGlicmFyeS9pbWFwbGliLCw6U1MsIiIiREQtTW1tLVlZWVkgSEg6TU06U1MiCitsaWJyYXJ5L2luc3BlY3QsLDppbnQsIj4+PiBkZWYgZm9vKGEsICosIGI6aW50LCAqKmt3YXJncyk6IgorbGlicmFyeS9pbnNwZWN0LCw6aW50LCInKGEsICosIGI6aW50LCAqKmt3YXJncyknIgorbGlicmFyeS9pbnNwZWN0LCw6aW50LCdiOmludCcKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZGI4LD4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjAwMTpkYjg6OicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOmRiODo6JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZGI4LElQdjZBZGRyZXNzKCcyMDAxOmRiODo6JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnMjAwMTpkYjg6OicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiOCw+Pj4gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOmRiODo6MTAwMCcpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEwMDAnKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxMDAwJykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEwMDAnKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsPj4+IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCcyMDAxOmRiODo6MTAwMC85NicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCcyMDAxOmRiODo6MTAwMC85NicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiOCxJUHY2SW50ZXJmYWNlKCcyMDAxOmRiODo6MTAwMC85NicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosSVB2NkludGVyZmFjZSgnMjAwMTpkYjg6OjEwMDAvOTYnKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsPj4+IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCcyMDAxOmRiODo6MTAwMC85NicpLm5ldHdvcmsKK2xpYnJhcnkvaXBhZGRyZXNzLCw6Oiw+Pj4gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6ZGI4OjoxMDAwLzk2JykubmV0d29yaworbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorbGlicmFyeS9pcGFkZHJlc3MsLDo6LElQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZGI4LD4+PiBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorbGlicmFyeS9pcGFkZHJlc3MsLDo6LD4+PiBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorbGlicmFyeS9pcGFkZHJlc3MsLDo6LElQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZGI4LD4+PiBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKS5uZXRtYXNrCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpLm5ldG1hc2sKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZmZmZixJUHY2QWRkcmVzcygnZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6OicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosSVB2NkFkZHJlc3MoJ2ZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOjonKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsIj4+PiBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjoxMDAwLzk2Jywgc3RyaWN0PUZhbHNlKSIKK2xpYnJhcnkvaXBhZGRyZXNzLCw6OiwiPj4+IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTpkYjg6OjEwMDAvOTYnLCBzdHJpY3Q9RmFsc2UpIgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LCIiIjo6YWJjOjc6ZGVmIiIiCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRlZiwiIiI6OmFiYzo3OmRlZiIiIgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LDo6RkZGRi85NgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LDIwMDI6Oi8xNgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LDIwMDE6Oi8zMgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LD4+PiBzdHIoaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKSkKK2xpYnJhcnkvaXBhZGRyZXNzLCw6OiwnOjoxJworbGlicmFyeS9pcGFkZHJlc3MsLDo6LD4+PiBpbnQoaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKSkKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZmYwMCxmZmZmOmZmMDA6OgorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjAwLDIwMDE6ZGIwMDo6MC8yNAorbGlicmFyeS9pcGFkZHJlc3MsLDo6LDIwMDE6ZGIwMDo6MC8yNAorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjAwLDIwMDE6ZGIwMDo6MC9mZmZmOmZmMDA6OgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LDIwMDE6ZGIwMDo6MC9mZmZmOmZmMDA6OgorbGlicmFyeS9pcGFkZHJlc3MsLDpmZjAwLDIwMDE6ZGIwMDo6MC9mZmZmOmZmMDA6OgogbGlicmFyeS9pdGVydG9vbHMsLDpzdGVwLGVsZW1lbnRzIGZyb20gc2VxW3N0YXJ0OnN0b3A6c3RlcF0KK2xpYnJhcnkvaXRlcnRvb2xzLCw6c3RvcCxlbGVtZW50cyBmcm9tIHNlcVtzdGFydDpzdG9wOnN0ZXBdCiBsaWJyYXJ5L2xpbmVjYWNoZSwsOnN5cywic3lzOng6MzozOnN5czovZGV2Oi9iaW4vc2giCiBsaWJyYXJ5L2xvZ2dpbmcsLDpBbmQsCitsaWJyYXJ5L2xvZ2dpbmcsLDpEb2luZyxJTkZPOnJvb3Q6RG9pbmcgc29tZXRoaW5nCitsaWJyYXJ5L2xvZ2dpbmcsLDpGaW5pc2hlZCxJTkZPOnJvb3Q6RmluaXNoZWQKK2xpYnJhcnkvbG9nZ2luZywsOmxvZ2dlcixzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCitsaWJyYXJ5L2xvZ2dpbmcsLDpMb29rLFdBUk5JTkc6cm9vdDpMb29rIGJlZm9yZSB5b3UgbGVhcCEKK2xpYnJhcnkvbG9nZ2luZywsOm1lc3NhZ2Usc2V2ZXJpdHk6bG9nZ2VyIG5hbWU6bWVzc2FnZQogbGlicmFyeS9sb2dnaW5nLCw6cGFja2FnZTEsCiBsaWJyYXJ5L2xvZ2dpbmcsLDpwYWNrYWdlMiwKLWxpYnJhcnkvbG9nZ2luZywsOnJvb3QsCi1saWJyYXJ5L2xvZ2dpbmcsLDpUaGlzLAogbGlicmFyeS9sb2dnaW5nLCw6cG9ydCxob3N0OnBvcnQKK2xpYnJhcnkvbG9nZ2luZywsOnJvb3QsCitsaWJyYXJ5L2xvZ2dpbmcsLDpTbyxJTkZPOnJvb3Q6U28gc2hvdWxkIHRoaXMKK2xpYnJhcnkvbG9nZ2luZywsOlNvLElORk86U28gc2hvdWxkIHRoaXMKK2xpYnJhcnkvbG9nZ2luZywsOlN0YXJ0ZWQsSU5GTzpyb290OlN0YXJ0ZWQKK2xpYnJhcnkvbG9nZ2luZywsOlRoaXMsCitsaWJyYXJ5L2xvZ2dpbmcsLDpXYXRjaCxXQVJOSU5HOnJvb3Q6V2F0Y2ggb3V0IQorbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLCw6cG9ydCxob3N0OnBvcnQKIGxpYnJhcnkvbW1hcCwsOmkyLG9ialtpMTppMl0KLWxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCw6cXVldWUsIj4+PiBRdWV1ZU1hbmFnZXIucmVnaXN0ZXIoJ2dldF9xdWV1ZScsIGNhbGxhYmxlPWxhbWJkYTpxdWV1ZSkiCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwiPj4+IGwuX2NhbGxtZXRob2QoJ19fZ2V0aXRlbV9fJywgKDIwLCkpICAgICAjIGVxdWl2IHRvIGBsWzIwXWAiCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwiPj4+IGwuX2NhbGxtZXRob2QoJ19fZ2V0c2xpY2VfXycsICgyLCA3KSkgICAjIGVxdWl2IHRvIGBsWzI6N11gIgotbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBgQmFzZU1hbmFnZXJgLgotbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBgUG9vbC5pbWFwKClgICh3aGljaCB3aWxsIHNhdmUgb24gdGhlIGFtb3VudCBvZiBjb2RlIG5lZWRlZCBhbnl3YXkpLgorbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBBZGQgbW9yZSB0YXNrcyB1c2luZyBgcHV0KClgCiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIEEgdGVzdCBmaWxlIGZvciB0aGUgYG11bHRpcHJvY2Vzc2luZ2AgcGFja2FnZQogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBBIHRlc3Qgb2YgYG11bHRpcHJvY2Vzc2luZy5Qb29sYCBjbGFzcwotbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBBZGQgbW9yZSB0YXNrcyB1c2luZyBgcHV0KClgCitsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIGBCYXNlTWFuYWdlcmAuCitsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCxgQ2x1c3RlcmAgaXMgYSBzdWJjbGFzcyBvZiBgU3luY01hbmFnZXJgIHNvIGl0IGFsbG93cyBjcmVhdGlvbiBvZgogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBjcmVhdGUgc2VydmVyIGZvciBhIGBIb3N0TWFuYWdlcmAgb2JqZWN0CiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIERlcGVuZHMgb24gYG11bHRpcHJvY2Vzc2luZ2AgcGFja2FnZSAtLSB0ZXN0ZWQgd2l0aCBgcHJvY2Vzc2luZy0wLjYwYAorbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsYGhvc3RuYW1lYCBnaXZlcyB0aGUgbmFtZSBvZiB0aGUgaG9zdC4gIElmIGhvc3RuYW1lIGlzIG5vdAogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBpbiB0aGUgb3JpZ2luYWwgb3JkZXIgdGhlbiBjb25zaWRlciB1c2luZyBgUG9vbC5tYXAoKWAgb3IKK2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCI+Pj4gbC5fY2FsbG1ldGhvZCgnX19nZXRpdGVtX18nLCAoMjAsKSkgICAgICMgZXF1aXYgdG8gYGxbMjBdYCIKK2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCI+Pj4gbC5fY2FsbG1ldGhvZCgnX19nZXRzbGljZV9fJywgKDIsIDcpKSAgICMgZXF1aXYgdG8gYGxbMjo3XWAiCiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIE5vdCBzdXJlIGlmIHdlIHNob3VsZCBzeW5jaHJvbml6ZSBhY2Nlc3MgdG8gYHNvY2tldC5hY2NlcHQoKWAgbWV0aG9kIGJ5CiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIG9iamVjdC4gIChXZSBpbXBvcnQgYG11bHRpcHJvY2Vzc2luZy5yZWR1Y3Rpb25gIHRvIGVuYWJsZSB0aGlzIHBpY2tsaW5nLikKK2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgYFBvb2wuaW1hcCgpYCAod2hpY2ggd2lsbCBzYXZlIG9uIHRoZSBhbW91bnQgb2YgY29kZSBuZWVkZWQgYW55d2F5KS4KK2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCw6cXVldWUsIj4+PiBRdWV1ZU1hbmFnZXIucmVnaXN0ZXIoJ2dldF9xdWV1ZScsIGNhbGxhYmxlPWxhbWJkYTpxdWV1ZSkiCiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIHJlZ2lzdGVyIHRoZSBGb28gY2xhc3M7IG1ha2UgYGYoKWAgYW5kIGBnKClgIGFjY2Vzc2libGUgdmlhIHByb3h5CiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIHJlZ2lzdGVyIHRoZSBGb28gY2xhc3M7IG1ha2UgYGcoKWAgYW5kIGBfaCgpYCBhY2Nlc3NpYmxlIHZpYSBwcm94eQogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyByZWdpc3RlciB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIGJhejsgdXNlIGBHZW5lcmF0b3JQcm94eWAgdG8gbWFrZSBwcm94aWVzCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCxgQ2x1c3RlcmAgaXMgYSBzdWJjbGFzcyBvZiBgU3luY01hbmFnZXJgIHNvIGl0IGFsbG93cyBjcmVhdGlvbiBvZgotbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsYGhvc3RuYW1lYCBnaXZlcyB0aGUgbmFtZSBvZiB0aGUgaG9zdC4gIElmIGhvc3RuYW1lIGlzIG5vdAogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsYHNsb3RzYCBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIG51bWJlciBvZiBzbG90cyBmb3IgcHJvY2Vzc2VzIG9uCitsaWJyYXJ5L25udHBsaWIsLDpieXRlcyw6Ynl0ZXMKK2xpYnJhcnkvbm50cGxpYiwsOmJ5dGVzLCJbJ3hyZWYnLCAnZnJvbScsICc6bGluZXMnLCAnOmJ5dGVzJywgJ3JlZmVyZW5jZXMnLCAnZGF0ZScsICdtZXNzYWdlLWlkJywgJ3N1YmplY3QnXSIKK2xpYnJhcnkvbm50cGxpYiwsOmxpbmVzLDpsaW5lcworbGlicmFyeS9ubnRwbGliLCw6bGluZXMsIlsneHJlZicsICdmcm9tJywgJzpsaW5lcycsICc6Ynl0ZXMnLCAncmVmZXJlbmNlcycsICdkYXRlJywgJ21lc3NhZ2UtaWQnLCAnc3ViamVjdCddIgogbGlicmFyeS9vcHRwYXJzZSwsOmxlbiwiZGVsIHBhcnNlci5yYXJnc1s6bGVuKHZhbHVlKV0iCiBsaWJyYXJ5L29zLnBhdGgsLDpmb28sYzpmb28KIGxpYnJhcnkvcGFyc2VyLCxgLCIiIk1ha2UgYSBmdW5jdGlvbiB0aGF0IHJhaXNlcyBhbiBhcmd1bWVudCB0byB0aGUgZXhwb25lbnQgYGV4cGAuIiIiCitsaWJyYXJ5L3BkYiwsOmxpbmVubyxmaWxlbmFtZTpsaW5lbm8KK2xpYnJhcnkvcGRiLCw6bGluZW5vLFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV0KK2xpYnJhcnkvcGlja2xlLCw6bWVtb3J5LCJjb25uID0gc3FsaXRlMy5jb25uZWN0KCIiOm1lbW9yeToiIikiCiBsaWJyYXJ5L3Bvc2l4LCxgLCJDRkxBR1M9IiJgZ2V0Y29uZiBMRlNfQ0ZMQUdTYCIiIE9QVD0iIi1nIC1PMiAkQ0ZMQUdTIiIiCi1saWJyYXJ5L3Byb2ZpbGUsLDpsaW5lbm8sbmNhbGxzICB0b3R0aW1lICBwZXJjYWxsICBjdW10aW1lICBwZXJjYWxsIGZpbGVuYW1lOmxpbmVubyhmdW5jdGlvbikKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ2NsYXNzaWZpZXJzJzogWydEZXZlbG9wbWVudCBTdGF0dXMgOjogNCAtIEJldGEnLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ0ludGVuZGVkIEF1ZGllbmNlIDo6IERldmVsb3BlcnMnLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ0xpY2Vuc2UgOjogT1NJIEFwcHJvdmVkIDo6IE1JVCBMaWNlbnNlJywiCitsaWJyYXJ5L3BwcmludCwyMDksOjosIidOYXR1cmFsIExhbmd1YWdlIDo6IEVuZ2xpc2gnLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ09wZXJhdGluZyBTeXN0ZW0gOjogT1MgSW5kZXBlbmRlbnQnLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbicsIgorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDInLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjYnLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjcnLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1RvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IExpYnJhcmllcycsIgorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInVG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzIDo6IFB5dGhvbiBNb2R1bGVzJ10sIgogbGlicmFyeS9wcm9maWxlLCw6bGluZW5vLGZpbGVuYW1lOmxpbmVubyhmdW5jdGlvbikKK2xpYnJhcnkvcHJvZmlsZSwsOmxpbmVubyxuY2FsbHMgIHRvdHRpbWUgIHBlcmNhbGwgIGN1bXRpbWUgIHBlcmNhbGwgZmlsZW5hbWU6bGluZW5vKGZ1bmN0aW9uKQorbGlicmFyeS9wcm9maWxlLCw6bGluZW5vLCIoc29ydCBieSBmaWxlbmFtZTpsaW5lbm8pLCIKIGxpYnJhcnkvcHlleHBhdCwsOmVsZW0xLDxweTplbGVtMSAvPgogbGlicmFyeS9weWV4cGF0LCw6cHksInhtbG5zOnB5ID0gIiJodHRwOi8vd3d3LnB5dGhvbi5vcmcvbnMvIiI+IgogbGlicmFyeS9yZXByLCxgLCJyZXR1cm4gYG9iamAiCiBsaWJyYXJ5L3NtdHBsaWIsLDpwb3J0LCJhcyB3ZWxsIGFzIGEgcmVndWxhciBob3N0OnBvcnQgc2VydmVyLiIKK2xpYnJhcnkvc210cGxpYiwsOnBvcnQsbWV0aG9kIG11c3Qgc3VwcG9ydCB0aGF0IGFzIHdlbGwgYXMgYSByZWd1bGFyIGhvc3Q6cG9ydAorbGlicmFyeS9zb2NrZXQsLDo6LCIoMTAsIDEsIDYsICcnLCAoJzIwMDE6ODg4OjIwMDA6ZDo6YTInLCA4MCwgMCwgMCkpXSIKIGxpYnJhcnkvc29ja2V0LCw6OiwnNWFlZjoyYjo6OCcKLWxpYnJhcnkvc3FsaXRlMywsOm1lbW9yeSwKK2xpYnJhcnkvc29ja2V0LCw6Y2FuLCJyZXR1cm4gKGNhbl9pZCwgY2FuX2RsYywgZGF0YVs6Y2FuX2RsY10pIgorbGlicmFyeS9zb2NrZXQsLDpsZW4sZmRzLmZyb21zdHJpbmcoY21zZ19kYXRhWzpsZW4oY21zZ19kYXRhKSAtIChsZW4oY21zZ19kYXRhKSAlIGZkcy5pdGVtc2l6ZSldKQorbGlicmFyeS9zcWxpdGUzLCw6YWdlLCJjdXIuZXhlY3V0ZSgiInNlbGVjdCAqIGZyb20gcGVvcGxlIHdoZXJlIG5hbWVfbGFzdD06d2hvIGFuZCBhZ2U9OmFnZSIiLCB7IiJ3aG8iIjogd2hvLCAiImFnZSIiOiBhZ2V9KSIKIGxpYnJhcnkvc3FsaXRlMywsOmFnZSwic2VsZWN0IG5hbWVfbGFzdCwgYWdlIGZyb20gcGVvcGxlIHdoZXJlIG5hbWVfbGFzdD06d2hvIGFuZCBhZ2U9OmFnZSIKLWxpYnJhcnkvc3FsaXRlMywsOndobywic2VsZWN0IG5hbWVfbGFzdCwgYWdlIGZyb20gcGVvcGxlIHdoZXJlIG5hbWVfbGFzdD06d2hvIGFuZCBhZ2U9OmFnZSIKLWxpYnJhcnkvc3NsLCw6TXksIk9yZ2FuaXphdGlvbiBOYW1lIChlZywgY29tcGFueSkgW0ludGVybmV0IFdpZGdpdHMgUHR5IEx0ZF06TXkgT3JnYW5pemF0aW9uLCBJbmMuIgorbGlicmFyeS9zcWxpdGUzLCw6bWVtb3J5LAorbGlicmFyeS9zcWxpdGUzLCw6d2hvLCJjdXIuZXhlY3V0ZSgiInNlbGVjdCAqIGZyb20gcGVvcGxlIHdoZXJlIG5hbWVfbGFzdD06d2hvIGFuZCBhZ2U9OmFnZSIiLCB7IiJ3aG8iIjogd2hvLCAiImFnZSIiOiBhZ2V9KSIKIGxpYnJhcnkvc3NsLCw6TXksIk9yZ2FuaXphdGlvbmFsIFVuaXQgTmFtZSAoZWcsIHNlY3Rpb24pIFtdOk15IEdyb3VwIgorbGlicmFyeS9zc2wsLDpNeSwiT3JnYW5pemF0aW9uIE5hbWUgKGVnLCBjb21wYW55KSBbSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkXTpNeSBPcmdhbml6YXRpb24sIEluYy4iCiBsaWJyYXJ5L3NzbCwsOm15c2VydmVyLCJDb21tb24gTmFtZSAoZWcsIFlPVVIgbmFtZSkgW106bXlzZXJ2ZXIubXlncm91cC5teW9yZ2FuaXphdGlvbi5jb20iCiBsaWJyYXJ5L3NzbCwsOk15U3RhdGUsU3RhdGUgb3IgUHJvdmluY2UgTmFtZSAoZnVsbCBuYW1lKSBbU29tZS1TdGF0ZV06TXlTdGF0ZQogbGlicmFyeS9zc2wsLDpvcHMsRW1haWwgQWRkcmVzcyBbXTpvcHNAbXlzZXJ2ZXIubXlncm91cC5teW9yZ2FuaXphdGlvbi5jb20KIGxpYnJhcnkvc3NsLCw6U29tZSwiTG9jYWxpdHkgTmFtZSAoZWcsIGNpdHkpIFtdOlNvbWUgQ2l0eSIKIGxpYnJhcnkvc3NsLCw6VVMsQ291bnRyeSBOYW1lICgyIGxldHRlciBjb2RlKSBbQVVdOlVTCitsaWJyYXJ5L3N0ZHR5cGVzLCw6Oiw+Pj4gYVs6Oi0xXS50b2xpc3QoKQorbGlicmFyeS9zdGR0eXBlcywsOjosPj4+IGFbOjoyXS50b2xpc3QoKQorbGlicmFyeS9zdGR0eXBlcywsOmVuZCxzW3N0YXJ0OmVuZF0KK2xpYnJhcnkvc3RkdHlwZXMsLDo6LD4+PiBoYXNoKHZbOjotMl0pID09IGhhc2goYidhYmNlZmcnWzo6LTJdKQogbGlicmFyeS9zdGR0eXBlcywsOmxlbixzW2xlbihzKTpsZW4ocyldCi1saWJyYXJ5L3N0ZHR5cGVzLCw6bGVuLHNbbGVuKHMpOmxlbihzKV0KK2xpYnJhcnkvc3RkdHlwZXMsLDo6LD4+PiB5ID0gbVs6OjJdCitsaWJyYXJ5L3N0ZHR5cGVzLCw6Oiw+Pj4geiA9IHlbOjotMl0KIGxpYnJhcnkvc3RyaW5nLCw6ZW5kLHNbc3RhcnQ6ZW5kXQotbGlicmFyeS9zdHJpbmcsLDplbmQsc1tzdGFydDplbmRdCi1saWJyYXJ5L3N1YnByb2Nlc3MsLGAsIm91dHB1dD1gbXljbWQgbXlhcmdgIgogbGlicmFyeS9zdWJwcm9jZXNzLCxgLCJvdXRwdXQ9YGRtZXNnIHwgZ3JlcCBoZGFgIgorbGlicmFyeS9zdWJwcm9jZXNzLCxgLCJvdXRwdXQ9YG15Y21kIG15YXJnYCIKK2xpYnJhcnkvdGFyZmlsZSwsOmJ6MiwKIGxpYnJhcnkvdGFyZmlsZSwsOmNvbXByZXNzaW9uLGZpbGVtb2RlWzpjb21wcmVzc2lvbl0KIGxpYnJhcnkvdGFyZmlsZSwsOmd6LAotbGlicmFyeS90YXJmaWxlLCw6YnoyLAorbGlicmFyeS90YXJmaWxlLCw6eHosJ2E6eHonCitsaWJyYXJ5L3RhcmZpbGUsLDp4eiwncjp4eicKK2xpYnJhcnkvdGFyZmlsZSwsOnh6LCd3Onh6JwogbGlicmFyeS90aW1lLCw6bW0sCiBsaWJyYXJ5L3RpbWUsLDpzcywKIGxpYnJhcnkvdHVydGxlLCw6OixFeGFtcGxlOjoKLWxpYnJhcnkvdXJsbGliLCw6cG9ydCw6cG9ydAogbGlicmFyeS91cmxsaWIyLCw6cGFzc3dvcmQsIiIiam9lOnBhc3N3b3JkQHB5dGhvbi5vcmciIiIKK2xpYnJhcnkvdXJsbGliLCw6cG9ydCw6cG9ydAorbGlicmFyeS91cmxsaWIucmVxdWVzdCwsOmNsb3NlLENvbm5lY3Rpb246Y2xvc2UKK2xpYnJhcnkvdXJsbGliLnJlcXVlc3QsLDpsYW5nLCJ4bWxucz0iImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIiB4bWw6bGFuZz0iImVuIiIgbGFuZz0iImVuIiI+XG5cbjxoZWFkPlxuIgorbGlicmFyeS91cmxsaWIucmVxdWVzdCwsOnBhc3N3b3JkLCIiImpvZTpwYXNzd29yZEBweXRob24ub3JnIiIiCiBsaWJyYXJ5L3V1aWQsLDp1dWlkLHVybjp1dWlkOjEyMzQ1Njc4LTEyMzQtNTY3OC0xMjM0LTU2NzgxMjM0NTY3OAotbGlicmFyeS94bWxycGNsaWIsLDpwYXNzLGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKLWxpYnJhcnkveG1scnBjbGliLCw6cGFzcyx1c2VyOnBhc3MKLWxpYnJhcnkveG1scnBjbGliLCw6cG9ydCxodHRwOi8vdXNlcjpwYXNzQGhvc3Q6cG9ydC9wYXRoCitsaWJyYXJ5L3htbHJwYy5jbGllbnQsLDpwYXNzLGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKK2xpYnJhcnkveG1scnBjLmNsaWVudCwsOnBhc3MsdXNlcjpwYXNzCitsaWJyYXJ5L3htbHJwYy5jbGllbnQsLDpwb3J0LGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKK2xpY2Vuc2UsLGAsImBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyIKK2xpY2Vuc2UsLGAsIlRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIgorbGljZW5zZSwsYCwqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRVJJQyBZT1VORyBgYEFTIElTJycgQU5ECitsaWNlbnNlLCxgLFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKK2xpY2Vuc2UsLGAsKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKIGxpY2Vuc2UsLGAsVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUFJPSkVDVCBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKIGxpY2Vuc2UsLDp6b29rbyxtYWlsdG86em9va29Aem9va28uY29tCi1saWNlbnNlLCxgLFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLXJlZmVyZW5jZS9kYXRhbW9kZWwsLDpzdGVwLGFbaTpqOnN0ZXBdCiByZWZlcmVuY2UvZGF0YW1vZGVsLCw6bWF4LAotcmVmZXJlbmNlL2V4cHJlc3Npb25zLCw6aW5kZXgseFtpbmRleDppbmRleF0KK3JlZmVyZW5jZS9kYXRhbW9kZWwsLDpzdGVwLGFbaTpqOnN0ZXBdCiByZWZlcmVuY2UvZXhwcmVzc2lvbnMsLDpkYXR1bSx7a2V5OmRhdHVtLi4ufQogcmVmZXJlbmNlL2V4cHJlc3Npb25zLCxgLGBleHByZXNzaW9ucy4uLmAKK3JlZmVyZW5jZS9leHByZXNzaW9ucywsOmluZGV4LHhbaW5kZXg6aW5kZXhdCiByZWZlcmVuY2UvZ3JhbW1hciwsOm91dHB1dCwjZGlhZ3JhbTpvdXRwdXQKIHJlZmVyZW5jZS9ncmFtbWFyLCw6cnVsZXMsI2RpYWdyYW06cnVsZXMKLXJlZmVyZW5jZS9ncmFtbWFyLCw6dG9rZW4sI2RpYWdyYW06dG9rZW4KIHJlZmVyZW5jZS9ncmFtbWFyLCxgLCdgJyB0ZXN0bGlzdDEgJ2AnCi1yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcywsOmZpbGVlbmNvZGluZywjIHZpbTpmaWxlZW5jb2Rpbmc9PGVuY29kaW5nLW5hbWU+CityZWZlcmVuY2UvZ3JhbW1hciwsOnRva2VuLCNkaWFncmFtOnRva2VuCiByZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcywsYCwiLCAgICAgICA6ICAgICAgIC4gICAgICAgYCAgICAgICA9ICAgICAgIDsiCi10dXRvcmlhbC9kYXRhc3RydWN0dXJlcywsOnZhbHVlLGtleTp2YWx1ZSBwYWlycyB3aXRoaW4gdGhlIGJyYWNlcyBhZGRzIGluaXRpYWwga2V5OnZhbHVlIHBhaXJzCityZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcywsYCwkICAgICAgID8gICAgICAgYAorcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMsLDpmaWxlZW5jb2RpbmcsIyB2aW06ZmlsZWVuY29kaW5nPTxlbmNvZGluZy1uYW1lPgogdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMsLDp2YWx1ZSxJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGRlbGV0ZSBhIGtleTp2YWx1ZQotdHV0b3JpYWwvc3RkbGliMiwsOnN0YXJ0LCJmaWVsZHMgPSBzdHJ1Y3QudW5wYWNrKCc8SUlJSEgnLCBkYXRhW3N0YXJ0OnN0YXJ0KzE2XSkiCi10dXRvcmlhbC9zdGRsaWIyLCw6c3RhcnQsZXh0cmEgPSBkYXRhW3N0YXJ0OnN0YXJ0K2V4dHJhX3NpemVdCi10dXRvcmlhbC9zdGRsaWIyLCw6c3RhcnQsZmlsZW5hbWUgPSBkYXRhW3N0YXJ0OnN0YXJ0K2ZpbGVuYW1lc2l6ZV0KK3R1dG9yaWFsL2RhdGFzdHJ1Y3R1cmVzLCw6dmFsdWUsa2V5OnZhbHVlIHBhaXJzIHdpdGhpbiB0aGUgYnJhY2VzIGFkZHMgaW5pdGlhbCBrZXk6dmFsdWUgcGFpcnMKIHR1dG9yaWFsL3N0ZGxpYjIsLDpjb25maWcsImxvZ2dpbmcud2FybmluZygnV2FybmluZzpjb25maWcgZmlsZSAlcyBub3QgZm91bmQnLCAnc2VydmVyLmNvbmYnKSIKIHR1dG9yaWFsL3N0ZGxpYjIsLDpjb25maWcsV0FSTklORzpyb290Oldhcm5pbmc6Y29uZmlnIGZpbGUgc2VydmVyLmNvbmYgbm90IGZvdW5kCiB0dXRvcmlhbC9zdGRsaWIyLCw6Q3JpdGljYWwsQ1JJVElDQUw6cm9vdDpDcml0aWNhbCBlcnJvciAtLSBzaHV0dGluZyBkb3duCkBAIC0xNDEsMTUgKzMxMSwxNiBAQAogdHV0b3JpYWwvc3RkbGliMiwsOnJvb3QsQ1JJVElDQUw6cm9vdDpDcml0aWNhbCBlcnJvciAtLSBzaHV0dGluZyBkb3duCiB0dXRvcmlhbC9zdGRsaWIyLCw6cm9vdCxFUlJPUjpyb290OkVycm9yIG9jY3VycmVkCiB0dXRvcmlhbC9zdGRsaWIyLCw6cm9vdCxXQVJOSU5HOnJvb3Q6V2FybmluZzpjb25maWcgZmlsZSBzZXJ2ZXIuY29uZiBub3QgZm91bmQKK3R1dG9yaWFsL3N0ZGxpYjIsLDpzdGFydCxleHRyYSA9IGRhdGFbc3RhcnQ6c3RhcnQrZXh0cmFfc2l6ZV0KK3R1dG9yaWFsL3N0ZGxpYjIsLDpzdGFydCwiZmllbGRzID0gc3RydWN0LnVucGFjaygnPElJSUhIJywgZGF0YVtzdGFydDpzdGFydCsxNl0pIgordHV0b3JpYWwvc3RkbGliMiwsOnN0YXJ0LGZpbGVuYW1lID0gZGF0YVtzdGFydDpzdGFydCtmaWxlbmFtZXNpemVdCiB0dXRvcmlhbC9zdGRsaWIyLCw6V2FybmluZyxXQVJOSU5HOnJvb3Q6V2FybmluZzpjb25maWcgZmlsZSBzZXJ2ZXIuY29uZiBub3QgZm91bmQKLXVzaW5nL2NtZGxpbmUsLDpsaW5lLGZpbGU6bGluZTogY2F0ZWdvcnk6IG1lc3NhZ2UKIHVzaW5nL2NtZGxpbmUsLDpjYXRlZ29yeSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQordXNpbmcvY21kbGluZSwsOmVycm9yaGFuZGxlciw6ZXJyb3JoYW5kbGVyCiB1c2luZy9jbWRsaW5lLCw6bGluZSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQordXNpbmcvY21kbGluZSwsOmxpbmUsZmlsZTpsaW5lOiBjYXRlZ29yeTogbWVzc2FnZQogdXNpbmcvY21kbGluZSwsOm1lc3NhZ2UsYWN0aW9uOm1lc3NhZ2U6Y2F0ZWdvcnk6bW9kdWxlOmxpbmUKIHVzaW5nL2NtZGxpbmUsLDptb2R1bGUsYWN0aW9uOm1lc3NhZ2U6Y2F0ZWdvcnk6bW9kdWxlOmxpbmUKLXVzaW5nL2NtZGxpbmUsLDplcnJvcmhhbmRsZXIsOmVycm9yaGFuZGxlcgotdXNpbmcvd2luZG93cywxNjIsYCxgYCB0aGlzIGZpeGVzIHN5bnRheCBoaWdobGlnaHRpbmcgZXJyb3JzIGluIHNvbWUgZWRpdG9ycyBkdWUgdG8gdGhlIFxcXFwgaGFja2VyeQotdXNpbmcvd2luZG93cywxNzAsYCxgYAogd2hhdHNuZXcvMi4wLDQxOCw6bGVuLAogd2hhdHNuZXcvMi4zLCw6OiwKIHdoYXRzbmV3LzIuMywsOmNvbmZpZywKQEAgLTE2MywxMTMgKzMzNCwzOCBAQAogd2hhdHNuZXcvMi41LCw6bWVtb3J5LDptZW1vcnk6CiB3aGF0c25ldy8yLjUsLDpzdGVwLFtzdGFydDpzdG9wOnN0ZXBdCiB3aGF0c25ldy8yLjUsLDpzdG9wLFtzdGFydDpzdG9wOnN0ZXBdCi1kaXN0dXRpbHMvZXhhbXBsZXMsMjY3LGAsVGhpcyBpcyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGBgZm9vYmFyYGAgcGFja2FnZS4KLWZhcS9wcm9ncmFtbWluZywsOnJlZHVjZSwicHJpbnQoKGxhbWJkYSBSdSxSbyxJdSxJbyxJTSxTeCxTeTpyZWR1Y2UobGFtYmRhIHgseTp4K3ksbWFwKGxhbWJkYSB5LCIKLWZhcS9wcm9ncmFtbWluZywsOnJlZHVjZSwiU3g9U3gsU3k9U3k6cmVkdWNlKGxhbWJkYSB4LHk6eCt5LG1hcChsYW1iZGEgeCx4Yz1SdSx5Yz15YyxSdT1SdSxSbz1SbywiCi1mYXEvcHJvZ3JhbW1pbmcsLDpjaHIsIj49NC4wKSBvciAxK2YoeGMseWMseCp4LXkqeSt4YywyLjAqeCp5K3ljLGstMSxmKTpmKHhjLHljLHgseSxrLGYpOmNocigiCi1mYXEvcHJvZ3JhbW1pbmcsLDo6LGZvciB4IGluIHNlcXVlbmNlWzo6LTFdOgotZmFxL3dpbmRvd3MsMjI5LDpFT0YsQHNldGxvY2FsIGVuYWJsZWV4dGVuc2lvbnMgJiBweXRob24gLXggJX5mMCAlKiAmIGdvdG8gOkVPRgotZmFxL3dpbmRvd3MsMzkzLDpSRUcsLnB5IDpSRUdfU1o6IGM6XDxwYXRoIHRvIHB5dGhvbj5ccHl0aG9uLmV4ZSAtdSAlcyAlcwotbGlicmFyeS9iaXNlY3QsMzIsOmhpLGFsbCh2YWwgPj0geCBmb3IgdmFsIGluIGFbaTpoaV0pCi1saWJyYXJ5L2Jpc2VjdCw0Miw6aGksYWxsKHZhbCA+IHggZm9yIHZhbCBpbiBhW2k6aGldKQotbGlicmFyeS9odHRwLmNsaWVudCw1Miw6cG9ydCxob3N0OnBvcnQKLWxpYnJhcnkvbm50cGxpYiwsOmJ5dGVzLDpieXRlcwotbGlicmFyeS9ubnRwbGliLCw6bGluZXMsOmxpbmVzCi1saWJyYXJ5L25udHBsaWIsLDpsaW5lcywiWyd4cmVmJywgJ2Zyb20nLCAnOmxpbmVzJywgJzpieXRlcycsICdyZWZlcmVuY2VzJywgJ2RhdGUnLCAnbWVzc2FnZS1pZCcsICdzdWJqZWN0J10iCi1saWJyYXJ5L25udHBsaWIsLDpieXRlcywiWyd4cmVmJywgJ2Zyb20nLCAnOmxpbmVzJywgJzpieXRlcycsICdyZWZlcmVuY2VzJywgJ2RhdGUnLCAnbWVzc2FnZS1pZCcsICdzdWJqZWN0J10iCi1saWJyYXJ5L3BpY2tsZSwsOm1lbW9yeSwiY29ubiA9IHNxbGl0ZTMuY29ubmVjdCgiIjptZW1vcnk6IiIpIgotbGlicmFyeS9wcm9maWxlLCw6bGluZW5vLCIoc29ydCBieSBmaWxlbmFtZTpsaW5lbm8pLCIKLWxpYnJhcnkvc29ja2V0LCw6OiwiKDEwLCAxLCA2LCAnJywgKCcyMDAxOjg4ODoyMDAwOmQ6OmEyJywgODAsIDAsIDApKV0iCi1saWJyYXJ5L3N0ZHR5cGVzLCw6ZW5kLHNbc3RhcnQ6ZW5kXQotbGlicmFyeS9zdGR0eXBlcywsOmVuZCxzW3N0YXJ0OmVuZF0KLWxpYnJhcnkvdXJsbGliLnJlcXVlc3QsLDpjbG9zZSxDb25uZWN0aW9uOmNsb3NlCi1saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LCw6cGFzc3dvcmQsIiIiam9lOnBhc3N3b3JkQHB5dGhvbi5vcmciIiIKLWxpYnJhcnkvdXJsbGliLnJlcXVlc3QsLDpsYW5nLCJ4bWxucz0iImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIiB4bWw6bGFuZz0iImVuIiIgbGFuZz0iImVuIiI+XG5cbjxoZWFkPlxuIgotbGlicmFyeS94bWxycGMuY2xpZW50LDEwMyw6cGFzcyxodHRwOi8vdXNlcjpwYXNzQGhvc3Q6cG9ydC9wYXRoCi1saWJyYXJ5L3htbHJwYy5jbGllbnQsMTAzLDpwb3J0LGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKLWxpYnJhcnkveG1scnBjLmNsaWVudCwxMDMsOnBhc3MsdXNlcjpwYXNzCi1saWNlbnNlLCxgLCogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi1saWNlbnNlLCxgLCogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBFUklDIFlPVU5HIGBgQVMgSVMnJyBBTkQKLWxpY2Vuc2UsLGAsImBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyIKLWxpY2Vuc2UsLGAsIlRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIgotcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMsNzA0LGAsJCAgICAgICA/ICAgICAgIGAKLXdoYXRzbmV3LzIuNyw3MzUsOlN1bmRheSwnMjAwOTo0OlN1bmRheScKLXdoYXRzbmV3LzIuNyw4NjIsOjosImV4cG9ydCBQWVRIT05XQVJOSU5HUz1hbGwsZXJyb3I6OjpDb29raWU6MCIKLXdoYXRzbmV3LzIuNyw4NjIsOkNvb2tpZSwiZXhwb3J0IFBZVEhPTldBUk5JTkdTPWFsbCxlcnJvcjo6OkNvb2tpZTowIgotd2hhdHNuZXcvMi43LDE2MTksOjosPj4+IHVybHBhcnNlLnVybHBhcnNlKCdodHRwOi8vWzEwODA6Ojg6ODAwOjIwMEM6NDE3QV0vZm9vJykKIHdoYXRzbmV3LzIuNywxNjE5LDo6LCJQYXJzZVJlc3VsdChzY2hlbWU9J2h0dHAnLCBuZXRsb2M9J1sxMDgwOjo4OjgwMDoyMDBDOjQxN0FdJywiCi1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsYCwjIFNldCB0aGUgb3B0aW9uYWwgYHJhd2AgYXJndW1lbnQgb2YgZ2V0KCkgdG8gVHJ1ZSBpZiB5b3Ugd2lzaCB0byBkaXNhYmxlCi1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsYCwjIFRoZSBvcHRpb25hbCBgdmFyc2AgYXJndW1lbnQgaXMgYSBkaWN0IHdpdGggbWVtYmVycyB0aGF0IHdpbGwgdGFrZQotbGlicmFyeS9jb25maWdwYXJzZXIsLGAsIyBUaGUgb3B0aW9uYWwgYGZhbGxiYWNrYCBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byBwcm92aWRlIGEgZmFsbGJhY2sgdmFsdWUKLWxpYnJhcnkvY29uZmlncGFyc2VyLCw6b3B0aW9uLCR7c2VjdGlvbjpvcHRpb259Ci1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsOnN5c3RlbSxwYXRoOiAke0NvbW1vbjpzeXN0ZW1fZGlyfS9MaWJyYXJ5L0ZyYW1ld29ya3MvCi1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsOmhvbWUsbXlfZGlyOiAke0NvbW1vbjpob21lX2Rpcn0vdHdvc2hlZHMKLWxpYnJhcnkvY29uZmlncGFyc2VyLCw6cGF0aCxweXRob25fZGlyOiAke0ZyYW1ld29ya3M6cGF0aH0vUHl0aG9uL1ZlcnNpb25zLyR7RnJhbWV3b3JrczpQeXRob259Ci1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsOlB5dGhvbixweXRob25fZGlyOiAke0ZyYW1ld29ya3M6cGF0aH0vUHl0aG9uL1ZlcnNpb25zLyR7RnJhbWV3b3JrczpQeXRob259Ci1saWJyYXJ5L3BkYiwsOmxpbmVubyxbZmlsZW5hbWU6bGluZW5vIHwgYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dCi1saWJyYXJ5L3BkYiwsOmxpbmVubyxmaWxlbmFtZTpsaW5lbm8KLWxpYnJhcnkvbG9nZ2luZywsOldhdGNoLFdBUk5JTkc6cm9vdDpXYXRjaCBvdXQhCi1saWJyYXJ5L2xvZ2dpbmcsLDpTbyxJTkZPOnJvb3Q6U28gc2hvdWxkIHRoaXMKLWxpYnJhcnkvbG9nZ2luZywsOlN0YXJ0ZWQsSU5GTzpyb290OlN0YXJ0ZWQKLWxpYnJhcnkvbG9nZ2luZywsOkRvaW5nLElORk86cm9vdDpEb2luZyBzb21ldGhpbmcKLWxpYnJhcnkvbG9nZ2luZywsOkZpbmlzaGVkLElORk86cm9vdDpGaW5pc2hlZAotbGlicmFyeS9sb2dnaW5nLCw6TG9vayxXQVJOSU5HOnJvb3Q6TG9vayBiZWZvcmUgeW91IGxlYXAhCi1saWJyYXJ5L2xvZ2dpbmcsLDpTbyxJTkZPOlNvIHNob3VsZCB0aGlzCi1saWJyYXJ5L2xvZ2dpbmcsLDpsb2dnZXIsc2V2ZXJpdHk6bG9nZ2VyIG5hbWU6bWVzc2FnZQotbGlicmFyeS9sb2dnaW5nLCw6bWVzc2FnZSxzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCi13aGF0c25ldy8zLjIsLDpkaXJlY3RvcnksLi4uICAgJHtidWlsZG91dDpkaXJlY3Rvcnl9L2Rvd25sb2Fkcy9kaXN0Ci13aGF0c25ldy8zLjIsLDpsb2NhdGlvbiwuLi4gem9wZTktbG9jYXRpb24gPSAke3pvcGU5OmxvY2F0aW9ufQotd2hhdHNuZXcvMy4yLCw6cHJlZml4LC4uLiB6b3BlLWNvbmYgPSAke2N1c3RvbTpwcmVmaXh9L2V0Yy96b3BlLmNvbmYKLWhvd3RvL2xvZ2dpbmcsLDpyb290LFdBUk5JTkc6cm9vdDpXYXRjaCBvdXQhCi1ob3d0by9sb2dnaW5nLCw6V2F0Y2gsV0FSTklORzpyb290OldhdGNoIG91dCEKLWhvd3RvL2xvZ2dpbmcsLDpyb290LERFQlVHOnJvb3Q6VGhpcyBtZXNzYWdlIHNob3VsZCBnbyB0byB0aGUgbG9nIGZpbGUKLWhvd3RvL2xvZ2dpbmcsLDpUaGlzLERFQlVHOnJvb3Q6VGhpcyBtZXNzYWdlIHNob3VsZCBnbyB0byB0aGUgbG9nIGZpbGUKLWhvd3RvL2xvZ2dpbmcsLDpyb290LElORk86cm9vdDpTbyBzaG91bGQgdGhpcwotaG93dG8vbG9nZ2luZywsOlNvLElORk86cm9vdDpTbyBzaG91bGQgdGhpcwotaG93dG8vbG9nZ2luZywsOnJvb3QsIldBUk5JTkc6cm9vdDpBbmQgdGhpcywgdG9vIgotaG93dG8vbG9nZ2luZywsOkFuZCwiV0FSTklORzpyb290OkFuZCB0aGlzLCB0b28iCi1ob3d0by9sb2dnaW5nLCw6cm9vdCxJTkZPOnJvb3Q6U3RhcnRlZAotaG93dG8vbG9nZ2luZywsOlN0YXJ0ZWQsSU5GTzpyb290OlN0YXJ0ZWQKLWhvd3RvL2xvZ2dpbmcsLDpyb290LElORk86cm9vdDpEb2luZyBzb21ldGhpbmcKLWhvd3RvL2xvZ2dpbmcsLDpEb2luZyxJTkZPOnJvb3Q6RG9pbmcgc29tZXRoaW5nCi1ob3d0by9sb2dnaW5nLCw6cm9vdCxJTkZPOnJvb3Q6RmluaXNoZWQKLWhvd3RvL2xvZ2dpbmcsLDpGaW5pc2hlZCxJTkZPOnJvb3Q6RmluaXNoZWQKLWhvd3RvL2xvZ2dpbmcsLDpyb290LFdBUk5JTkc6cm9vdDpMb29rIGJlZm9yZSB5b3UgbGVhcCEKLWhvd3RvL2xvZ2dpbmcsLDpMb29rLFdBUk5JTkc6cm9vdDpMb29rIGJlZm9yZSB5b3UgbGVhcCEKLWhvd3RvL2xvZ2dpbmcsLDpUaGlzLERFQlVHOlRoaXMgbWVzc2FnZSBzaG91bGQgYXBwZWFyIG9uIHRoZSBjb25zb2xlCi1ob3d0by9sb2dnaW5nLCw6U28sSU5GTzpTbyBzaG91bGQgdGhpcwotaG93dG8vbG9nZ2luZywsOkFuZCwiV0FSTklORzpBbmQgdGhpcywgdG9vIgotaG93dG8vbG9nZ2luZywsOmxvZ2dlcixzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCi1ob3d0by9sb2dnaW5nLCw6bWVzc2FnZSxzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCi1saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMsLDpwb3J0LGhvc3Q6cG9ydAotbGlicmFyeS9pbWFwbGliLDExNiw6TU0sIiIiREQtTW1tLVlZWVkgSEg6TU06U1MiCi1saWJyYXJ5L2ltYXBsaWIsMTE2LDpTUywiIiJERC1NbW0tWVlZWSBISDpNTTpTUyIKLXdoYXRzbmV3LzMuMiwsOjosIiQgZXhwb3J0IFBZVEhPTldBUk5JTkdTPSdpZ25vcmU6OlJ1bnRpbWVXYXJuaW5nOjosb25jZTo6VW5pY29kZVdhcm5pbmc6OiciCi1ob3d0by9weXBvcnRpbmcsNzUsOjosIyBtYWtlIHN1cmUgdG8gdXNlIDo6IFB5dGhvbiAqYW5kKiA6OiBQeXRob24gOjogMyBzbwotaG93dG8vcHlwb3J0aW5nLDc1LDo6LCInUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uJywiCi1ob3d0by9weXBvcnRpbmcsNzUsOjosJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzJwotd2hhdHNuZXcvMy4yLCw6Z3osIj4+PiB3aXRoIHRhcmZpbGUub3BlbihuYW1lPSdteWFyY2hpdmUudGFyLmd6JywgbW9kZT0ndzpneicpIGFzIHRmOiIKLXdoYXRzbmV3LzMuMiwsOmRpcmVjdG9yeSwke2J1aWxkb3V0OmRpcmVjdG9yeX0vZG93bmxvYWRzL2Rpc3QKLXdoYXRzbmV3LzMuMiwsOmxvY2F0aW9uLHpvcGU5LWxvY2F0aW9uID0gJHt6b3BlOTpsb2NhdGlvbn0KLXdoYXRzbmV3LzMuMiwsOnByZWZpeCx6b3BlLWNvbmYgPSAke2N1c3RvbTpwcmVmaXh9L2V0Yy96b3BlLmNvbmYKLXdoYXRzbmV3LzMuMiwsOmJlZWYsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQotd2hhdHNuZXcvMy4yLCw6Y2FmZSw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCi13aGF0c25ldy8zLjIsLDphZmZlLD4+PiB1cmxsaWIucGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXS9mb28vJykKLXdoYXRzbmV3LzMuMiwsOmRlYWYsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQotd2hhdHNuZXcvMy4yLCw6ZmVlZCw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCi13aGF0c25ldy8zLjIsLDpiZWVmLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCi13aGF0c25ldy8zLjIsLDpjYWZlLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCit3aGF0c25ldy8yLjcsMTYxOSw6Oiw+Pj4gdXJscGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bMTA4MDo6ODo4MDA6MjAwQzo0MTdBXS9mb28nKQord2hhdHNuZXcvMi43LDczNSw6U3VuZGF5LCcyMDA5OjQ6U3VuZGF5Jword2hhdHNuZXcvMi43LDg2Miw6Q29va2llLCJleHBvcnQgUFlUSE9OV0FSTklOR1M9YWxsLGVycm9yOjo6Q29va2llOjAiCit3aGF0c25ldy8yLjcsODYyLDo6LCJleHBvcnQgUFlUSE9OV0FSTklOR1M9YWxsLGVycm9yOjo6Q29va2llOjAiCiB3aGF0c25ldy8zLjIsLDphZmZlLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCit3aGF0c25ldy8zLjIsLDphZmZlLD4+PiB1cmxsaWIucGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXS9mb28vJykKK3doYXRzbmV3LzMuMiwsOmJlZWYsIm5ldGxvYz0nW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0nLCIKK3doYXRzbmV3LzMuMiwsOmJlZWYsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQord2hhdHNuZXcvMy4yLCw6Y2FmZSwibmV0bG9jPSdbZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXScsIgord2hhdHNuZXcvMy4yLCw6Y2FmZSw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCiB3aGF0c25ldy8zLjIsLDpkZWFmLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCit3aGF0c25ldy8zLjIsLDpkZWFmLD4+PiB1cmxsaWIucGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXS9mb28vJykKK3doYXRzbmV3LzMuMiwsOmRpcmVjdG9yeSwuLi4gICAke2J1aWxkb3V0OmRpcmVjdG9yeX0vZG93bmxvYWRzL2Rpc3QKK3doYXRzbmV3LzMuMiwsOmRpcmVjdG9yeSwke2J1aWxkb3V0OmRpcmVjdG9yeX0vZG93bmxvYWRzL2Rpc3QKK3doYXRzbmV3LzMuMiwsOjosIiQgZXhwb3J0IFBZVEhPTldBUk5JTkdTPSdpZ25vcmU6OlJ1bnRpbWVXYXJuaW5nOjosb25jZTo6VW5pY29kZVdhcm5pbmc6OiciCiB3aGF0c25ldy8zLjIsLDpmZWVkLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidjbGFzc2lmaWVycyc6IFsnRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDQgLSBCZXRhJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidJbnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBNSVQgTGljZW5zZScsIgotbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInTmF0dXJhbCBMYW5ndWFnZSA6OiBFbmdsaXNoJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidPcGVyYXRpbmcgU3lzdGVtIDo6IE9TIEluZGVwZW5kZW50JywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24nLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi42JywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi43JywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidUb3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9wbWVudCA6OiBMaWJyYXJpZXMnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1RvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IExpYnJhcmllcyA6OiBQeXRob24gTW9kdWxlcyddLCIKK3doYXRzbmV3LzMuMiwsOmZlZWQsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQord2hhdHNuZXcvMy4yLCw6Z3osIj4+PiB3aXRoIHRhcmZpbGUub3BlbihuYW1lPSdteWFyY2hpdmUudGFyLmd6JywgbW9kZT0ndzpneicpIGFzIHRmOiIKK3doYXRzbmV3LzMuMiwsOmxvY2F0aW9uLC4uLiB6b3BlOS1sb2NhdGlvbiA9ICR7em9wZTk6bG9jYXRpb259Cit3aGF0c25ldy8zLjIsLDpsb2NhdGlvbix6b3BlOS1sb2NhdGlvbiA9ICR7em9wZTk6bG9jYXRpb259Cit3aGF0c25ldy8zLjIsLDpwcmVmaXgsLi4uIHpvcGUtY29uZiA9ICR7Y3VzdG9tOnByZWZpeH0vZXRjL3pvcGUuY29uZgord2hhdHNuZXcvMy4yLCw6cHJlZml4LHpvcGUtY29uZiA9ICR7Y3VzdG9tOnByZWZpeH0vZXRjL3pvcGUuY29uZgord2hhdHNuZXcvbmV3cywsOnBsYXRmb3JtLDpwbGF0Zm9ybToKK3doYXRzbmV3L25ld3MsLDpwYXNzd29yZCw6IFVucXVvdGUgYmVmb3JlIGI2NGVuY29kaW5nIHVzZXI6cGFzc3dvcmQgZHVyaW5nIEJhc2ljCit3aGF0c25ldy9uZXdzLCw6Y2xvc2UsQ29ubmVjdGlvbjpjbG9zZSBoZWFkZXIuCit3aGF0c25ldy9uZXdzLCw6UHl0aG9uQ21kLCJXaXRoIFRrIDwgOC41IF90a2ludGVyLmM6UHl0aG9uQ21kKCkgcmFpc2VkIFVuaWNvZGVEZWNvZGVFcnJvciwgY2F1c2VkIgord2hhdHNuZXcvbmV3cywsOmNsb3NlLDogQ29ubmVjdGlvbjpjbG9zZSBoZWFkZXIgaXMgc2VudCBieSByZXF1ZXN0cyB1c2luZyBVUkxPcGVuZXIKK3doYXRzbmV3L25ld3MsLDo6LCI6IEZpeCBGVFAgdGVzdHMgZm9yIElQdjYsIGJpbmQgdG8gIiI6OjEiIiBpbnN0ZWFkIG9mICIibG9jYWxob3N0IiIuIgord2hhdHNuZXcvbmV3cywsOnRlc3QsOiB0ZXN0X3N1YnByb2Nlc3M6dGVzdF9sZWFraW5nX2Zkc19vbl9lcnJvciBubyBsb25nZXIgZ2l2ZXMgYQord2hhdHNuZXcvbmV3cywsOnRlc3QsOiBGaXggdGVzdF9wb3NpeDp0ZXN0X2dldGdyb3VwcyBmYWlsdXJlIHVuZGVyIFNvbGFyaXMuICBQYXRjaAord2hhdHNuZXcvbmV3cywsOk9saW1pdCxEcm9wIC1PUFQ6T2xpbWl0IGNvbXBpbGVyIG9wdGlvbi4KK3doYXRzbmV3L25ld3MsLDpNQVhZRUFSLHRpbWVkZWx0YSBmcm9tIGRhdGUgb3IgZGF0ZXRpbWUgZmFsbHMgb3V0c2lkZSBvZiB0aGUgTUlOWUVBUjpNQVhZRUFSIHJhbmdlLgord2hhdHNuZXcvbmV3cywsOmJ6Mix3aXRoIG1vZGUgJ3InIG9yICdyOmJ6MicgYW5kIGEgZmlsZW9iaiBhcmd1bWVudCB0aGF0IGNvbnRhaW5lZCBubyBkYXRhIG9yCit3aGF0c25ldy9uZXdzLCw6ZGIyLDogQWRkIGNvbmZpZ3VyZSBvcHRpb24gLS13aXRoLWRibWxpYm9yZGVyPWRiMTpkYjI6Li4uIHRvIHNwZWNpZnkKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9jbGFzc2VzLnJzdCBiL0RvYy90dXRvcmlhbC9jbGFzc2VzLnJzdAppbmRleCBjZmYyNzEwLi4zMjgzZTU0IDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvY2xhc3Nlcy5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2NsYXNzZXMucnN0CkBAIC0xODQsNyArMTg0LDYgQEAKIAogLi4gY29kZS1ibG9jazo6IG5vbmUKIAotCiAgICBBZnRlciBsb2NhbCBhc3NpZ25tZW50OiB0ZXN0IHNwYW0KICAgIEFmdGVyIG5vbmxvY2FsIGFzc2lnbm1lbnQ6IG5vbmxvY2FsIHNwYW0KICAgIEFmdGVyIGdsb2JhbCBhc3NpZ25tZW50OiBub25sb2NhbCBzcGFtCkBAIC02OTgsOSArNjk3LDkgQEAKICAgIGNsYXNzIEQoQyk6CiAgICAgICAgcGFzcwogCi0gICBmb3IgYyBpbiBbQiwgQywgRF06CisgICBmb3IgY2xzIGluIFtCLCBDLCBEXToKICAgICAgICB0cnk6Ci0gICAgICAgICAgIHJhaXNlIGMoKQorICAgICAgICAgICByYWlzZSBjbHMoKQogICAgICAgIGV4Y2VwdCBEOgogICAgICAgICAgICBwcmludCgiRCIpCiAgICAgICAgZXhjZXB0IEM6CmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMucnN0IGIvRG9jL3R1dG9yaWFsL2RhdGFzdHJ1Y3R1cmVzLnJzdAppbmRleCAwZWU0ZGNhLi41MzA3N2U0IDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMucnN0CisrKyBiL0RvYy90dXRvcmlhbC9kYXRhc3RydWN0dXJlcy5yc3QKQEAgLTE5LDEzICsxOSwxMyBAQAogLi4gbWV0aG9kOjogbGlzdC5hcHBlbmQoeCkKICAgIDpub2luZGV4OgogCi0gICBBZGQgYW4gaXRlbSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0OyBlcXVpdmFsZW50IHRvIGBgYVtsZW4oYSk6XSA9IFt4XWBgLgorICAgQWRkIGFuIGl0ZW0gdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4gIEVxdWl2YWxlbnQgdG8gYGBhW2xlbihhKTpdID0gW3hdYGAuCiAKIAogLi4gbWV0aG9kOjogbGlzdC5leHRlbmQoTCkKICAgIDpub2luZGV4OgogCi0gICBFeHRlbmQgdGhlIGxpc3QgYnkgYXBwZW5kaW5nIGFsbCB0aGUgaXRlbXMgaW4gdGhlIGdpdmVuIGxpc3Q7IGVxdWl2YWxlbnQgdG8KKyAgIEV4dGVuZCB0aGUgbGlzdCBieSBhcHBlbmRpbmcgYWxsIHRoZSBpdGVtcyBpbiB0aGUgZ2l2ZW4gbGlzdC4gIEVxdWl2YWxlbnQgdG8KICAgIGBgYVtsZW4oYSk6XSA9IExgYC4KIAogCkBAIC00MCw4ICs0MCw4IEBACiAuLiBtZXRob2Q6OiBsaXN0LnJlbW92ZSh4KQogICAgOm5vaW5kZXg6CiAKLSAgIFJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tIHRoZSBsaXN0IHdob3NlIHZhbHVlIGlzICp4Ki4gSXQgaXMgYW4gZXJyb3IgaWYgdGhlcmUKLSAgIGlzIG5vIHN1Y2ggaXRlbS4KKyAgIFJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tIHRoZSBsaXN0IHdob3NlIHZhbHVlIGlzICp4Ki4gIEl0IGlzIGFuIGVycm9yIGlmCisgICB0aGVyZSBpcyBubyBzdWNoIGl0ZW0uCiAKIAogLi4gbWV0aG9kOjogbGlzdC5wb3AoW2ldKQpAQCAtNzAsMTMgKzcwLDE0IEBACiAuLiBtZXRob2Q6OiBsaXN0LnNvcnQoKQogICAgOm5vaW5kZXg6CiAKLSAgIFNvcnQgdGhlIGl0ZW1zIG9mIHRoZSBsaXN0LCBpbiBwbGFjZS4KKyAgIFNvcnQgdGhlIGl0ZW1zIG9mIHRoZSBsaXN0IGluIHBsYWNlLgogCiAKIC4uIG1ldGhvZDo6IGxpc3QucmV2ZXJzZSgpCiAgICA6bm9pbmRleDoKIAotICAgUmV2ZXJzZSB0aGUgZWxlbWVudHMgb2YgdGhlIGxpc3QsIGluIHBsYWNlLgorICAgUmV2ZXJzZSB0aGUgZWxlbWVudHMgb2YgdGhlIGxpc3QgaW4gcGxhY2UuCisKIAogQW4gZXhhbXBsZSB0aGF0IHVzZXMgbW9zdCBvZiB0aGUgbGlzdCBtZXRob2RzOjoKIApAQCAtOTksNiArMTAwLDEwIEBACiAgICA+Pj4gYQogICAgWy0xLCAxLCA2Ni4yNSwgMzMzLCAzMzMsIDEyMzQuNV0KIAorWW91IG1pZ2h0IGhhdmUgbm90aWNlZCB0aGF0IG1ldGhvZHMgbGlrZSBgYGluc2VydGBgLCBgYHJlbW92ZWBgIG9yIGBgc29ydGBgIHRoYXQKK21vZGlmeSB0aGUgbGlzdCBoYXZlIG5vIHJldHVybiB2YWx1ZSBwcmludGVkIC0tIHRoZXkgcmV0dXJuIGBgTm9uZWBgLiBbMV1fICBUaGlzCitpcyBhIGRlc2lnbiBwcmluY2lwbGUgZm9yIGFsbCBtdXRhYmxlIGRhdGEgc3RydWN0dXJlcyBpbiBQeXRob24uCisKIAogLi4gX3R1dC1saXN0cy1hcy1zdGFja3M6CiAKQEAgLTQ4MCw3ICs0ODUsNyBAQAogCiBQZXJmb3JtaW5nIGBgbGlzdChkLmtleXMoKSlgYCBvbiBhIGRpY3Rpb25hcnkgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRoZSBrZXlzCiB1c2VkIGluIHRoZSBkaWN0aW9uYXJ5LCBpbiBhcmJpdHJhcnkgb3JkZXIgKGlmIHlvdSB3YW50IGl0IHNvcnRlZCwganVzdCB1c2UKLWBgc29ydGVkKGQua2V5cygpKWBgIGluc3RlYWQpLiBbMV1fICBUbyBjaGVjayB3aGV0aGVyIGEgc2luZ2xlIGtleSBpcyBpbiB0aGUKK2Bgc29ydGVkKGQua2V5cygpKWBgIGluc3RlYWQpLiBbMl1fICBUbyBjaGVjayB3aGV0aGVyIGEgc2luZ2xlIGtleSBpcyBpbiB0aGUKIGRpY3Rpb25hcnksIHVzZSB0aGUgOmtleXdvcmQ6YGluYCBrZXl3b3JkLgogCiBIZXJlIGlzIGEgc21hbGwgZXhhbXBsZSB1c2luZyBhIGRpY3Rpb25hcnk6OgpAQCAtNjc3LDYgKzY4Miw5IEBACiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCi0uLiBbMV0gQ2FsbGluZyBgYGQua2V5cygpYGAgd2lsbCByZXR1cm4gYSA6ZGZuOmBkaWN0aW9uYXJ5IHZpZXdgIG9iamVjdC4gIEl0CisuLiBbMV0gT3RoZXIgbGFuZ3VhZ2VzIG1heSByZXR1cm4gdGhlIG11dGF0ZWQgb2JqZWN0LCB3aGljaCBhbGxvd3MgbWV0aG9kCisgICAgICAgY2hhaW5pbmcsIHN1Y2ggYXMgYGBkLT5pbnNlcnQoImEiKS0+cmVtb3ZlKCJiIiktPnNvcnQoKTtgYC4KKworLi4gWzJdIENhbGxpbmcgYGBkLmtleXMoKWBgIHdpbGwgcmV0dXJuIGEgOmRmbjpgZGljdGlvbmFyeSB2aWV3YCBvYmplY3QuICBJdAogICAgICAgIHN1cHBvcnRzIG9wZXJhdGlvbnMgbGlrZSBtZW1iZXJzaGlwIHRlc3QgYW5kIGl0ZXJhdGlvbiwgYnV0IGl0cyBjb250ZW50cwogICAgICAgIGFyZSBub3QgaW5kZXBlbmRlbnQgb2YgdGhlIG9yaWdpbmFsIGRpY3Rpb25hcnkgLS0gaXQgaXMgb25seSBhICp2aWV3Ki4KZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QgYi9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0CmluZGV4IGQ2MWRhZmMuLmNkYzJiZjIgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdApAQCAtMTAsMTMgKzEwLDEzIEBACiBJbnZva2luZyB0aGUgSW50ZXJwcmV0ZXIKID09PT09PT09PT09PT09PT09PT09PT09PQogCi1UaGUgUHl0aG9uIGludGVycHJldGVyIGlzIHVzdWFsbHkgaW5zdGFsbGVkIGFzIDpmaWxlOmAvdXNyL2xvY2FsL2Jpbi9weXRob24zLjJgCitUaGUgUHl0aG9uIGludGVycHJldGVyIGlzIHVzdWFsbHkgaW5zdGFsbGVkIGFzIDpmaWxlOmAvdXNyL2xvY2FsL2Jpbi9weXRob24zLjNgCiBvbiB0aG9zZSBtYWNoaW5lcyB3aGVyZSBpdCBpcyBhdmFpbGFibGU7IHB1dHRpbmcgOmZpbGU6YC91c3IvbG9jYWwvYmluYCBpbiB5b3VyCiBVbml4IHNoZWxsJ3Mgc2VhcmNoIHBhdGggbWFrZXMgaXQgcG9zc2libGUgdG8gc3RhcnQgaXQgYnkgdHlwaW5nIHRoZSBjb21tYW5kOgogCiAuLiBjb2RlLWJsb2NrOjogdGV4dAogCi0gICBweXRob24zLjIKKyAgIHB5dGhvbjMuMwogCiB0byB0aGUgc2hlbGwuIFsjXV8gU2luY2UgdGhlIGNob2ljZSBvZiB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBpbnRlcnByZXRlciBsaXZlcwogaXMgYW4gaW5zdGFsbGF0aW9uIG9wdGlvbiwgb3RoZXIgcGxhY2VzIGFyZSBwb3NzaWJsZTsgY2hlY2sgd2l0aCB5b3VyIGxvY2FsCkBAIC0yNCwxMSArMjQsMTEgQEAKIHBvcHVsYXIgYWx0ZXJuYXRpdmUgbG9jYXRpb24uKQogCiBPbiBXaW5kb3dzIG1hY2hpbmVzLCB0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiBpcyB1c3VhbGx5IHBsYWNlZCBpbgotOmZpbGU6YEM6XFxQeXRob24zMmAsIHRob3VnaCB5b3UgY2FuIGNoYW5nZSB0aGlzIHdoZW4geW91J3JlIHJ1bm5pbmcgdGhlCis6ZmlsZTpgQzpcXFB5dGhvbjMzYCwgdGhvdWdoIHlvdSBjYW4gY2hhbmdlIHRoaXMgd2hlbiB5b3UncmUgcnVubmluZyB0aGUKIGluc3RhbGxlci4gIFRvIGFkZCB0aGlzIGRpcmVjdG9yeSB0byB5b3VyIHBhdGgsICB5b3UgY2FuIHR5cGUgdGhlIGZvbGxvd2luZwogY29tbWFuZCBpbnRvIHRoZSBjb21tYW5kIHByb21wdCBpbiBhIERPUyBib3g6OgogCi0gICBzZXQgcGF0aD0lcGF0aCU7QzpccHl0aG9uMzIKKyAgIHNldCBwYXRoPSVwYXRoJTtDOlxweXRob24zMwogCiBUeXBpbmcgYW4gZW5kLW9mLWZpbGUgY2hhcmFjdGVyICg6a2JkOmBDb250cm9sLURgIG9uIFVuaXgsIDprYmQ6YENvbnRyb2wtWmAgb24KIFdpbmRvd3MpIGF0IHRoZSBwcmltYXJ5IHByb21wdCBjYXVzZXMgdGhlIGludGVycHJldGVyIHRvIGV4aXQgd2l0aCBhIHplcm8gZXhpdApAQCAtOTUsOCArOTUsOCBAQAogcHJpbnRzIGEgd2VsY29tZSBtZXNzYWdlIHN0YXRpbmcgaXRzIHZlcnNpb24gbnVtYmVyIGFuZCBhIGNvcHlyaWdodCBub3RpY2UKIGJlZm9yZSBwcmludGluZyB0aGUgZmlyc3QgcHJvbXB0OjoKIAotICAgJCBweXRob24zLjIKLSAgIFB5dGhvbiAzLjIuMyAoZGVmYXVsdCwgTWF5ICAzIDIwMTIsIDE1OjU0OjQyKQorICAgJCBweXRob24zLjMKKyAgIFB5dGhvbiAzLjMgKGRlZmF1bHQsIFNlcCAyNCAyMDEyLCAwOToyNTowNCkKICAgIFtHQ0MgNC42LjNdIG9uIGxpbnV4MgogICAgVHlwZSAiaGVscCIsICJjb3B5cmlnaHQiLCAiY3JlZGl0cyIgb3IgImxpY2Vuc2UiIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgPj4+CkBAIC0xNDksNyArMTQ5LDcgQEAKIE9uIEJTRCdpc2ggVW5peCBzeXN0ZW1zLCBQeXRob24gc2NyaXB0cyBjYW4gYmUgbWFkZSBkaXJlY3RseSBleGVjdXRhYmxlLCBsaWtlCiBzaGVsbCBzY3JpcHRzLCBieSBwdXR0aW5nIHRoZSBsaW5lIDo6CiAKLSAgICMhIC91c3IvYmluL2VudiBweXRob24zLjIKKyAgICMhIC91c3IvYmluL2VudiBweXRob24zLjMKIAogKGFzc3VtaW5nIHRoYXQgdGhlIGludGVycHJldGVyIGlzIG9uIHRoZSB1c2VyJ3MgOmVudnZhcjpgUEFUSGApIGF0IHRoZSBiZWdpbm5pbmcKIG9mIHRoZSBzY3JpcHQgYW5kIGdpdmluZyB0aGUgZmlsZSBhbiBleGVjdXRhYmxlIG1vZGUuICBUaGUgYGAjIWBgIG11c3QgYmUgdGhlCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvaW50cm9kdWN0aW9uLnJzdCBiL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0CmluZGV4IGI2ZDk0YWMuLjRiN2Y2MGQgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0CisrKyBiL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0CkBAIC0zOTAsNyArMzkwLDcgQEAKIAogLi4gc2VlYWxzbzo6CiAKLSAgIDpyZWY6YHR5cGVzc2VxYAorICAgOnJlZjpgdGV4dHNlcWAKICAgICAgIFN0cmluZ3MgYXJlIGV4YW1wbGVzIG9mICpzZXF1ZW5jZSB0eXBlcyosIGFuZCBzdXBwb3J0IHRoZSBjb21tb24KICAgICAgIG9wZXJhdGlvbnMgc3VwcG9ydGVkIGJ5IHN1Y2ggdHlwZXMuCiAKQEAgLTYwMCwxOSArNjAwLDE5IEBACiAgIGd1ZXNzIHdoZW4geW91IGhhdmUgdHlwZWQgdGhlIGxhc3QgbGluZSkuICBOb3RlIHRoYXQgZWFjaCBsaW5lIHdpdGhpbiBhIGJhc2ljCiAgIGJsb2NrIG11c3QgYmUgaW5kZW50ZWQgYnkgdGhlIHNhbWUgYW1vdW50LgogCi0qIFRoZSA6ZnVuYzpgcHJpbnRgIGZ1bmN0aW9uIHdyaXRlcyB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24ocykgaXQgaXMKLSAgZ2l2ZW4uICBJdCBkaWZmZXJzIGZyb20ganVzdCB3cml0aW5nIHRoZSBleHByZXNzaW9uIHlvdSB3YW50IHRvIHdyaXRlIChhcyB3ZSBkaWQKLSAgZWFybGllciBpbiB0aGUgY2FsY3VsYXRvciBleGFtcGxlcykgaW4gdGhlIHdheSBpdCBoYW5kbGVzIG11bHRpcGxlCi0gIGV4cHJlc3Npb25zLCBmbG9hdGluZyBwb2ludCBxdWFudGl0aWVzLAotICBhbmQgc3RyaW5ncy4gIFN0cmluZ3MgYXJlIHByaW50ZWQgd2l0aG91dCBxdW90ZXMsIGFuZCBhIHNwYWNlIGlzIGluc2VydGVkCi0gIGJldHdlZW4gaXRlbXMsIHNvIHlvdSBjYW4gZm9ybWF0IHRoaW5ncyBuaWNlbHksIGxpa2UgdGhpczo6CisqIFRoZSA6ZnVuYzpgcHJpbnRgIGZ1bmN0aW9uIHdyaXRlcyB0aGUgdmFsdWUgb2YgdGhlIGFyZ3VtZW50KHMpIGl0IGlzIGdpdmVuLgorICBJdCBkaWZmZXJzIGZyb20ganVzdCB3cml0aW5nIHRoZSBleHByZXNzaW9uIHlvdSB3YW50IHRvIHdyaXRlIChhcyB3ZSBkaWQKKyAgZWFybGllciBpbiB0aGUgY2FsY3VsYXRvciBleGFtcGxlcykgaW4gdGhlIHdheSBpdCBoYW5kbGVzIG11bHRpcGxlIGFyZ3VtZW50cywKKyAgZmxvYXRpbmcgcG9pbnQgcXVhbnRpdGllcywgYW5kIHN0cmluZ3MuICBTdHJpbmdzIGFyZSBwcmludGVkIHdpdGhvdXQgcXVvdGVzLAorICBhbmQgYSBzcGFjZSBpcyBpbnNlcnRlZCBiZXR3ZWVuIGl0ZW1zLCBzbyB5b3UgY2FuIGZvcm1hdCB0aGluZ3MgbmljZWx5LCBsaWtlCisgIHRoaXM6OgogCiAgICAgID4+PiBpID0gMjU2KjI1NgogICAgICA+Pj4gcHJpbnQoJ1RoZSB2YWx1ZSBvZiBpIGlzJywgaSkKICAgICAgVGhlIHZhbHVlIG9mIGkgaXMgNjU1MzYKIAotICBUaGUga2V5d29yZCAqZW5kKiBjYW4gYmUgdXNlZCB0byBhdm9pZCB0aGUgbmV3bGluZSBhZnRlciB0aGUgb3V0cHV0LCBvciBlbmQKLSAgdGhlIG91dHB1dCB3aXRoIGEgZGlmZmVyZW50IHN0cmluZzo6CisgIFRoZSBrZXl3b3JkIGFyZ3VtZW50ICplbmQqIGNhbiBiZSB1c2VkIHRvIGF2b2lkIHRoZSBuZXdsaW5lIGFmdGVyIHRoZSBvdXRwdXQsCisgIG9yIGVuZCB0aGUgb3V0cHV0IHdpdGggYSBkaWZmZXJlbnQgc3RyaW5nOjoKIAogICAgICA+Pj4gYSwgYiA9IDAsIDEKICAgICAgPj4+IHdoaWxlIGIgPCAxMDAwOgpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL21vZHVsZXMucnN0IGIvRG9jL3R1dG9yaWFsL21vZHVsZXMucnN0CmluZGV4IDg2YzFhMGQuLmM0ZDg2YWMgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9tb2R1bGVzLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvbW9kdWxlcy5yc3QKQEAgLTI4OSwyMSArMjg5LDI0IEBACiAgICA+Pj4gZGlyKGZpYm8pCiAgICBbJ19fbmFtZV9fJywgJ2ZpYicsICdmaWIyJ10KICAgID4+PiBkaXIoc3lzKSAgIyBkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKLSAgIFsnX19kaXNwbGF5aG9va19fJywgJ19fZG9jX18nLCAnX19leGNlcHRob29rX18nLCAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLAotICAgICdfX3N0ZGVycl9fJywgJ19fc3RkaW5fXycsICdfX3N0ZG91dF9fJywgJ19jbGVhcl90eXBlX2NhY2hlJywKLSAgICAnX2N1cnJlbnRfZnJhbWVzJywgJ19nZXRmcmFtZScsICdfbWVyY3VyaWFsJywgJ194b3B0aW9ucycsICdhYmlmbGFncycsCi0gICAgJ2FwaV92ZXJzaW9uJywgJ2FyZ3YnLCAnYnVpbHRpbl9tb2R1bGVfbmFtZXMnLCAnYnl0ZW9yZGVyJywgJ2NhbGxfdHJhY2luZycsCi0gICAgJ2NhbGxzdGF0cycsICdjb3B5cmlnaHQnLCAnZGlzcGxheWhvb2snLCAnZG9udF93cml0ZV9ieXRlY29kZScsICdleGNfaW5mbycsCisgICBbJ19fZGlzcGxheWhvb2tfXycsICdfX2RvY19fJywgJ19fZWdnaW5zZXJ0JywgJ19fZXhjZXB0aG9va19fJywKKyAgICAnX19sb2FkZXJfXycsICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdfX3BsZW4nLCAnX19zdGRlcnJfXycsCisgICAgJ19fc3RkaW5fXycsICdfX3N0ZG91dF9fJywgJ19jbGVhcl90eXBlX2NhY2hlJywgJ19jdXJyZW50X2ZyYW1lcycsCisgICAgJ19kZWJ1Z21hbGxvY3N0YXRzJywgJ19nZXRmcmFtZScsICdfaG9tZScsICdfbWVyY3VyaWFsJywgJ194b3B0aW9ucycsCisgICAgJ2FiaWZsYWdzJywgJ2FwaV92ZXJzaW9uJywgJ2FyZ3YnLCAnYmFzZV9leGVjX3ByZWZpeCcsICdiYXNlX3ByZWZpeCcsCisgICAgJ2J1aWx0aW5fbW9kdWxlX25hbWVzJywgJ2J5dGVvcmRlcicsICdjYWxsX3RyYWNpbmcnLCAnY2FsbHN0YXRzJywKKyAgICAnY29weXJpZ2h0JywgJ2Rpc3BsYXlob29rJywgJ2RvbnRfd3JpdGVfYnl0ZWNvZGUnLCAnZXhjX2luZm8nLAogICAgICdleGNlcHRob29rJywgJ2V4ZWNfcHJlZml4JywgJ2V4ZWN1dGFibGUnLCAnZXhpdCcsICdmbGFncycsICdmbG9hdF9pbmZvJywKICAgICAnZmxvYXRfcmVwcl9zdHlsZScsICdnZXRjaGVja2ludGVydmFsJywgJ2dldGRlZmF1bHRlbmNvZGluZycsCiAgICAgJ2dldGRsb3BlbmZsYWdzJywgJ2dldGZpbGVzeXN0ZW1lbmNvZGluZycsICdnZXRvYmplY3RzJywgJ2dldHByb2ZpbGUnLAogICAgICdnZXRyZWN1cnNpb25saW1pdCcsICdnZXRyZWZjb3VudCcsICdnZXRzaXplb2YnLCAnZ2V0c3dpdGNoaW50ZXJ2YWwnLAotICAgICdnZXR0b3RhbHJlZmNvdW50JywgJ2dldHRyYWNlJywgJ2hhc2hfaW5mbycsICdoZXh2ZXJzaW9uJywgJ2ludF9pbmZvJywKLSAgICAnaW50ZXJuJywgJ21heHNpemUnLCAnbWF4dW5pY29kZScsICdtZXRhX3BhdGgnLCAnbW9kdWxlcycsICdwYXRoJywKLSAgICAncGF0aF9ob29rcycsICdwYXRoX2ltcG9ydGVyX2NhY2hlJywgJ3BsYXRmb3JtJywgJ3ByZWZpeCcsICdwczEnLAotICAgICdzZXRjaGVja2ludGVydmFsJywgJ3NldGRsb3BlbmZsYWdzJywgJ3NldHByb2ZpbGUnLCAnc2V0cmVjdXJzaW9ubGltaXQnLAotICAgICdzZXRzd2l0Y2hpbnRlcnZhbCcsICdzZXR0cmFjZScsICdzdGRlcnInLCAnc3RkaW4nLCAnc3Rkb3V0JywgJ3N1YnZlcnNpb24nLAotICAgICd2ZXJzaW9uJywgJ3ZlcnNpb25faW5mbycsICd3YXJub3B0aW9ucyddCisgICAgJ2dldHRvdGFscmVmY291bnQnLCAnZ2V0dHJhY2UnLCAnaGFzaF9pbmZvJywgJ2hleHZlcnNpb24nLAorICAgICdpbXBsZW1lbnRhdGlvbicsICdpbnRfaW5mbycsICdpbnRlcm4nLCAnbWF4c2l6ZScsICdtYXh1bmljb2RlJywKKyAgICAnbWV0YV9wYXRoJywgJ21vZHVsZXMnLCAncGF0aCcsICdwYXRoX2hvb2tzJywgJ3BhdGhfaW1wb3J0ZXJfY2FjaGUnLAorICAgICdwbGF0Zm9ybScsICdwcmVmaXgnLCAncHMxJywgJ3NldGNoZWNraW50ZXJ2YWwnLCAnc2V0ZGxvcGVuZmxhZ3MnLAorICAgICdzZXRwcm9maWxlJywgJ3NldHJlY3Vyc2lvbmxpbWl0JywgJ3NldHN3aXRjaGludGVydmFsJywgJ3NldHRyYWNlJywKKyAgICAnc3RkZXJyJywgJ3N0ZGluJywgJ3N0ZG91dCcsICd0aHJlYWRfaW5mbycsICd2ZXJzaW9uJywgJ3ZlcnNpb25faW5mbycsCisgICAgJ3dhcm5vcHRpb25zJ10KIAogV2l0aG91dCBhcmd1bWVudHMsIDpmdW5jOmBkaXJgIGxpc3RzIHRoZSBuYW1lcyB5b3UgaGF2ZSBkZWZpbmVkIGN1cnJlbnRseTo6CiAKQEAgLTMyNCwyOSArMzI3LDM0IEBACiAgICA+Pj4gaW1wb3J0IGJ1aWx0aW5zCiAgICA+Pj4gZGlyKGJ1aWx0aW5zKSAgIyBkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKICAgIFsnQXJpdGhtZXRpY0Vycm9yJywgJ0Fzc2VydGlvbkVycm9yJywgJ0F0dHJpYnV0ZUVycm9yJywgJ0Jhc2VFeGNlcHRpb24nLAotICAgICdCdWZmZXJFcnJvcicsICdCeXRlc1dhcm5pbmcnLCAnRGVwcmVjYXRpb25XYXJuaW5nJywgJ0VPRkVycm9yJywKLSAgICAnRWxsaXBzaXMnLCAnRW52aXJvbm1lbnRFcnJvcicsICdFeGNlcHRpb24nLCAnRmFsc2UnLCAnRmxvYXRpbmdQb2ludEVycm9yJywKKyAgICAnQmxvY2tpbmdJT0Vycm9yJywgJ0Jyb2tlblBpcGVFcnJvcicsICdCdWZmZXJFcnJvcicsICdCeXRlc1dhcm5pbmcnLAorICAgICdDaGlsZFByb2Nlc3NFcnJvcicsICdDb25uZWN0aW9uQWJvcnRlZEVycm9yJywgJ0Nvbm5lY3Rpb25FcnJvcicsCisgICAgJ0Nvbm5lY3Rpb25SZWZ1c2VkRXJyb3InLCAnQ29ubmVjdGlvblJlc2V0RXJyb3InLCAnRGVwcmVjYXRpb25XYXJuaW5nJywKKyAgICAnRU9GRXJyb3InLCAnRWxsaXBzaXMnLCAnRW52aXJvbm1lbnRFcnJvcicsICdFeGNlcHRpb24nLCAnRmFsc2UnLAorICAgICdGaWxlRXhpc3RzRXJyb3InLCAnRmlsZU5vdEZvdW5kRXJyb3InLCAnRmxvYXRpbmdQb2ludEVycm9yJywKICAgICAnRnV0dXJlV2FybmluZycsICdHZW5lcmF0b3JFeGl0JywgJ0lPRXJyb3InLCAnSW1wb3J0RXJyb3InLAotICAgICdJbXBvcnRXYXJuaW5nJywgJ0luZGVudGF0aW9uRXJyb3InLCAnSW5kZXhFcnJvcicsICdLZXlFcnJvcicsCi0gICAgJ0tleWJvYXJkSW50ZXJydXB0JywgJ0xvb2t1cEVycm9yJywgJ01lbW9yeUVycm9yJywgJ05hbWVFcnJvcicsICdOb25lJywKLSAgICAnTm90SW1wbGVtZW50ZWQnLCAnTm90SW1wbGVtZW50ZWRFcnJvcicsICdPU0Vycm9yJywgJ092ZXJmbG93RXJyb3InLAotICAgICdQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nJywgJ1JlZmVyZW5jZUVycm9yJywgJ1Jlc291cmNlV2FybmluZycsCi0gICAgJ1J1bnRpbWVFcnJvcicsICdSdW50aW1lV2FybmluZycsICdTdG9wSXRlcmF0aW9uJywgJ1N5bnRheEVycm9yJywKLSAgICAnU3ludGF4V2FybmluZycsICdTeXN0ZW1FcnJvcicsICdTeXN0ZW1FeGl0JywgJ1RhYkVycm9yJywgJ1RydWUnLAotICAgICdUeXBlRXJyb3InLCAnVW5ib3VuZExvY2FsRXJyb3InLCAnVW5pY29kZURlY29kZUVycm9yJywKLSAgICAnVW5pY29kZUVuY29kZUVycm9yJywgJ1VuaWNvZGVFcnJvcicsICdVbmljb2RlVHJhbnNsYXRlRXJyb3InLAotICAgICdVbmljb2RlV2FybmluZycsICdVc2VyV2FybmluZycsICdWYWx1ZUVycm9yJywgJ1dhcm5pbmcnLAotICAgICdaZXJvRGl2aXNpb25FcnJvcicsICdfJywgJ19fYnVpbGRfY2xhc3NfXycsICdfX2RlYnVnX18nLCAnX19kb2NfXycsCi0gICAgJ19faW1wb3J0X18nLCAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnYWJzJywgJ2FsbCcsICdhbnknLCAnYXNjaWknLAotICAgICdiaW4nLCAnYm9vbCcsICdieXRlYXJyYXknLCAnYnl0ZXMnLCAnY2FsbGFibGUnLCAnY2hyJywgJ2NsYXNzbWV0aG9kJywKLSAgICAnY29tcGlsZScsICdjb21wbGV4JywgJ2NvcHlyaWdodCcsICdjcmVkaXRzJywgJ2RlbGF0dHInLCAnZGljdCcsICdkaXInLAotICAgICdkaXZtb2QnLCAnZW51bWVyYXRlJywgJ2V2YWwnLCAnZXhlYycsICdleGl0JywgJ2ZpbHRlcicsICdmbG9hdCcsICdmb3JtYXQnLAotICAgICdmcm96ZW5zZXQnLCAnZ2V0YXR0cicsICdnbG9iYWxzJywgJ2hhc2F0dHInLCAnaGFzaCcsICdoZWxwJywgJ2hleCcsICdpZCcsCi0gICAgJ2lucHV0JywgJ2ludCcsICdpc2luc3RhbmNlJywgJ2lzc3ViY2xhc3MnLCAnaXRlcicsICdsZW4nLCAnbGljZW5zZScsCi0gICAgJ2xpc3QnLCAnbG9jYWxzJywgJ21hcCcsICdtYXgnLCAnbWVtb3J5dmlldycsICdtaW4nLCAnbmV4dCcsICdvYmplY3QnLAotICAgICdvY3QnLCAnb3BlbicsICdvcmQnLCAncG93JywgJ3ByaW50JywgJ3Byb3BlcnR5JywgJ3F1aXQnLCAncmFuZ2UnLCAncmVwcicsCi0gICAgJ3JldmVyc2VkJywgJ3JvdW5kJywgJ3NldCcsICdzZXRhdHRyJywgJ3NsaWNlJywgJ3NvcnRlZCcsICdzdGF0aWNtZXRob2QnLAotICAgICdzdHInLCAnc3VtJywgJ3N1cGVyJywgJ3R1cGxlJywgJ3R5cGUnLCAndmFycycsICd6aXAnXQorICAgICdJbXBvcnRXYXJuaW5nJywgJ0luZGVudGF0aW9uRXJyb3InLCAnSW5kZXhFcnJvcicsICdJbnRlcnJ1cHRlZEVycm9yJywKKyAgICAnSXNBRGlyZWN0b3J5RXJyb3InLCAnS2V5RXJyb3InLCAnS2V5Ym9hcmRJbnRlcnJ1cHQnLCAnTG9va3VwRXJyb3InLAorICAgICdNZW1vcnlFcnJvcicsICdOYW1lRXJyb3InLCAnTm9uZScsICdOb3RBRGlyZWN0b3J5RXJyb3InLCAnTm90SW1wbGVtZW50ZWQnLAorICAgICdOb3RJbXBsZW1lbnRlZEVycm9yJywgJ09TRXJyb3InLCAnT3ZlcmZsb3dFcnJvcicsCisgICAgJ1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcnLCAnUGVybWlzc2lvbkVycm9yJywgJ1Byb2Nlc3NMb29rdXBFcnJvcicsCisgICAgJ1JlZmVyZW5jZUVycm9yJywgJ1Jlc291cmNlV2FybmluZycsICdSdW50aW1lRXJyb3InLCAnUnVudGltZVdhcm5pbmcnLAorICAgICdTdG9wSXRlcmF0aW9uJywgJ1N5bnRheEVycm9yJywgJ1N5bnRheFdhcm5pbmcnLCAnU3lzdGVtRXJyb3InLAorICAgICdTeXN0ZW1FeGl0JywgJ1RhYkVycm9yJywgJ1RpbWVvdXRFcnJvcicsICdUcnVlJywgJ1R5cGVFcnJvcicsCisgICAgJ1VuYm91bmRMb2NhbEVycm9yJywgJ1VuaWNvZGVEZWNvZGVFcnJvcicsICdVbmljb2RlRW5jb2RlRXJyb3InLAorICAgICdVbmljb2RlRXJyb3InLCAnVW5pY29kZVRyYW5zbGF0ZUVycm9yJywgJ1VuaWNvZGVXYXJuaW5nJywgJ1VzZXJXYXJuaW5nJywKKyAgICAnVmFsdWVFcnJvcicsICdXYXJuaW5nJywgJ1plcm9EaXZpc2lvbkVycm9yJywgJ18nLCAnX19idWlsZF9jbGFzc19fJywKKyAgICAnX19kZWJ1Z19fJywgJ19fZG9jX18nLCAnX19pbXBvcnRfXycsICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdhYnMnLAorICAgICdhbGwnLCAnYW55JywgJ2FzY2lpJywgJ2JpbicsICdib29sJywgJ2J5dGVhcnJheScsICdieXRlcycsICdjYWxsYWJsZScsCisgICAgJ2NocicsICdjbGFzc21ldGhvZCcsICdjb21waWxlJywgJ2NvbXBsZXgnLCAnY29weXJpZ2h0JywgJ2NyZWRpdHMnLAorICAgICdkZWxhdHRyJywgJ2RpY3QnLCAnZGlyJywgJ2Rpdm1vZCcsICdlbnVtZXJhdGUnLCAnZXZhbCcsICdleGVjJywgJ2V4aXQnLAorICAgICdmaWx0ZXInLCAnZmxvYXQnLCAnZm9ybWF0JywgJ2Zyb3plbnNldCcsICdnZXRhdHRyJywgJ2dsb2JhbHMnLCAnaGFzYXR0cicsCisgICAgJ2hhc2gnLCAnaGVscCcsICdoZXgnLCAnaWQnLCAnaW5wdXQnLCAnaW50JywgJ2lzaW5zdGFuY2UnLCAnaXNzdWJjbGFzcycsCisgICAgJ2l0ZXInLCAnbGVuJywgJ2xpY2Vuc2UnLCAnbGlzdCcsICdsb2NhbHMnLCAnbWFwJywgJ21heCcsICdtZW1vcnl2aWV3JywKKyAgICAnbWluJywgJ25leHQnLCAnb2JqZWN0JywgJ29jdCcsICdvcGVuJywgJ29yZCcsICdwb3cnLCAncHJpbnQnLCAncHJvcGVydHknLAorICAgICdxdWl0JywgJ3JhbmdlJywgJ3JlcHInLCAncmV2ZXJzZWQnLCAncm91bmQnLCAnc2V0JywgJ3NldGF0dHInLCAnc2xpY2UnLAorICAgICdzb3J0ZWQnLCAnc3RhdGljbWV0aG9kJywgJ3N0cicsICdzdW0nLCAnc3VwZXInLCAndHVwbGUnLCAndHlwZScsICd2YXJzJywKKyAgICAnemlwJ10KIAogLi4gX3R1dC1wYWNrYWdlczoKIApkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QgYi9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdAppbmRleCAxMjhlNmE2Li4xZWJmNzkyIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdApAQCAtMTUsNyArMTUsNyBAQAogCiAgICA+Pj4gaW1wb3J0IG9zCiAgICA+Pj4gb3MuZ2V0Y3dkKCkgICAgICAjIFJldHVybiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQotICAgJ0M6XFxQeXRob24zMScKKyAgICdDOlxcUHl0aG9uMzMnCiAgICA+Pj4gb3MuY2hkaXIoJy9zZXJ2ZXIvYWNjZXNzbG9ncycpICAgIyBDaGFuZ2UgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQogICAgPj4+IG9zLnN5c3RlbSgnbWtkaXIgdG9kYXknKSAgICMgUnVuIHRoZSBjb21tYW5kIG1rZGlyIGluIHRoZSBzeXN0ZW0gc2hlbGwKICAgIDAKQEAgLTIwMyw3ICsyMDMsNyBAQAogPT09PT09PT09PT09PT09PQogCiBDb21tb24gZGF0YSBhcmNoaXZpbmcgYW5kIGNvbXByZXNzaW9uIGZvcm1hdHMgYXJlIGRpcmVjdGx5IHN1cHBvcnRlZCBieSBtb2R1bGVzCi1pbmNsdWRpbmc6IDptb2Q6YHpsaWJgLCA6bW9kOmBnemlwYCwgOm1vZDpgYnoyYCwgOm1vZDpgemlwZmlsZWAgYW5kCitpbmNsdWRpbmc6IDptb2Q6YHpsaWJgLCA6bW9kOmBnemlwYCwgOm1vZDpgYnoyYCwgOm1vZDpgbHptYWAsIDptb2Q6YHppcGZpbGVgIGFuZAogOm1vZDpgdGFyZmlsZWAuIDo6CiAKICAgID4+PiBpbXBvcnQgemxpYgpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0IGIvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0CmluZGV4IDIyNjVjZDAuLjRiNmUwMzYgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QKQEAgLTE0MSw3ICsxNDEsOSBAQAogCiAgICBpbXBvcnQgc3RydWN0CiAKLSAgIGRhdGEgPSBvcGVuKCdteWZpbGUuemlwJywgJ3JiJykucmVhZCgpCisgICB3aXRoIG9wZW4oJ215ZmlsZS56aXAnLCAncmInKSBhcyBmOgorICAgICAgIGRhdGEgPSBmLnJlYWQoKQorCiAgICBzdGFydCA9IDAKICAgIGZvciBpIGluIHJhbmdlKDMpOiAgICAgICAgICAgICAgICAgICAgICAjIHNob3cgdGhlIGZpcnN0IDMgZmlsZSBoZWFkZXJzCiAgICAgICAgc3RhcnQgKz0gMTQKQEAgLTI3Myw3ICsyNzUsNyBAQAogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgogICAgICAgIGRbJ3ByaW1hcnknXSAgICAgICAgICAgICAgICAjIGVudHJ5IHdhcyBhdXRvbWF0aWNhbGx5IHJlbW92ZWQKLSAgICAgRmlsZSAiQzovcHl0aG9uMzEvbGliL3dlYWtyZWYucHkiLCBsaW5lIDQ2LCBpbiBfX2dldGl0ZW1fXworICAgICBGaWxlICJDOi9weXRob24zMy9saWIvd2Vha3JlZi5weSIsIGxpbmUgNDYsIGluIF9fZ2V0aXRlbV9fCiAgICAgICAgbyA9IHNlbGYuZGF0YVtrZXldKCkKICAgIEtleUVycm9yOiAncHJpbWFyeScKIApkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL2NtZGxpbmUucnN0IGIvRG9jL3VzaW5nL2NtZGxpbmUucnN0CmluZGV4IGNkNGQwMmYuLjI3MDM2ODQgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy9jbWRsaW5lLnJzdAorKysgYi9Eb2MvdXNpbmcvY21kbGluZS5yc3QKQEAgLTI0LDcgKzI0LDcgQEAKIAogV2hlbiBpbnZva2luZyBQeXRob24sIHlvdSBtYXkgc3BlY2lmeSBhbnkgb2YgdGhlc2Ugb3B0aW9uczo6CiAKLSAgICBweXRob24gWy1iQmRFaGlPUnFzU3V2Vld4P10gWy1jIGNvbW1hbmQgfCAtbSBtb2R1bGUtbmFtZSB8IHNjcmlwdCB8IC0gXSBbYXJnc10KKyAgICBweXRob24gWy1iQmRFaGlPcXNTdXZWV3g/XSBbLWMgY29tbWFuZCB8IC1tIG1vZHVsZS1uYW1lIHwgc2NyaXB0IHwgLSBdIFthcmdzXQogCiBUaGUgbW9zdCBjb21tb24gdXNlIGNhc2UgaXMsIG9mIGNvdXJzZSwgYSBzaW1wbGUgaW52b2NhdGlvbiBvZiBhIHNjcmlwdDo6CiAKQEAgLTIyOSwyMyArMjI5LDIyIEBACiAKIC4uIGNtZG9wdGlvbjo6IC1SCiAKLSAgIFR1cm4gb24gaGFzaCByYW5kb21pemF0aW9uLCBzbyB0aGF0IHRoZSA6bWV0aDpgX19oYXNoX19gIHZhbHVlcyBvZiBzdHIsIGJ5dGVzCi0gICBhbmQgZGF0ZXRpbWUgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlIHJhbmRvbSB2YWx1ZS4KLSAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvbiBwcm9jZXNzLCB0aGV5IGFyZQotICAgbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2YgUHl0aG9uLgorICAgS2VwdCBmb3IgY29tcGF0aWJpbGl0eS4gIE9uIFB5dGhvbiAzLjMgYW5kIGdyZWF0ZXIsIGhhc2ggcmFuZG9taXphdGlvbiBpcworICAgdHVybmVkIG9uIGJ5IGRlZmF1bHQuCiAKLSAgIFRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYSBkZW5pYWwtb2Ytc2VydmljZSBjYXVzZWQgYnkKLSAgIGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgZXhwbG9pdCB0aGUgd29yc3QgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QKLSAgIGNvbnN0cnVjdGlvbiwgTyhuXjIpIGNvbXBsZXhpdHkuICBTZWUKKyAgIE9uIHByZXZpb3VzIHZlcnNpb25zIG9mIFB5dGhvbiwgdGhpcyBvcHRpb24gdHVybnMgb24gaGFzaCByYW5kb21pemF0aW9uLAorICAgc28gdGhhdCB0aGUgOm1ldGg6YF9faGFzaF9fYCB2YWx1ZXMgb2Ygc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWUKKyAgIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLiAgQWx0aG91Z2ggdGhleSByZW1haW4KKyAgIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvbiBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUKKyAgIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2YgUHl0aG9uLgorCisgICBIYXNoIHJhbmRvbWl6YXRpb24gaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYQorICAgZGVuaWFsLW9mLXNlcnZpY2UgY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgZXhwbG9pdCB0aGUgd29yc3QKKyAgIGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGNvbnN0cnVjdGlvbiwgTyhuXjIpIGNvbXBsZXhpdHkuICBTZWUKICAgIGh0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbCBmb3IgZGV0YWlscy4KIAotICAgQ2hhbmdpbmcgaGFzaCB2YWx1ZXMgYWZmZWN0cyB0aGUgb3JkZXIgaW4gd2hpY2gga2V5cyBhcmUgcmV0cmlldmVkIGZyb20gYQotICAgZGljdC4gIEFsdGhvdWdoIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSBndWFyYW50ZWVzIGFib3V0IHRoaXMgb3JkZXJpbmcgKGFuZCBpdAotICAgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuIDMyLWJpdCBhbmQgNjQtYml0IGJ1aWxkcyksIGVub3VnaCByZWFsLXdvcmxkIGNvZGUKLSAgIGltcGxpY2l0bHkgcmVsaWVzIG9uIHRoaXMgbm9uLWd1YXJhbnRlZWQgYmVoYXZpb3IgdGhhdCB0aGUgcmFuZG9taXphdGlvbiBpcwotICAgZGlzYWJsZWQgYnkgZGVmYXVsdC4KLQotICAgU2VlIGFsc28gOmVudnZhcjpgUFlUSE9OSEFTSFNFRURgLgorICAgOmVudnZhcjpgUFlUSE9OSEFTSFNFRURgIGFsbG93cyB5b3UgdG8gc2V0IGEgZml4ZWQgdmFsdWUgZm9yIHRoZSBoYXNoCisgICBzZWVkIHNlY3JldC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yLjMKIApAQCAtMjYzLDcgKzI2Miw5IEBACiAuLiBjbWRvcHRpb246OiAtUwogCiAgICBEaXNhYmxlIHRoZSBpbXBvcnQgb2YgdGhlIG1vZHVsZSA6bW9kOmBzaXRlYCBhbmQgdGhlIHNpdGUtZGVwZW5kZW50Ci0gICBtYW5pcHVsYXRpb25zIG9mIDpkYXRhOmBzeXMucGF0aGAgdGhhdCBpdCBlbnRhaWxzLgorICAgbWFuaXB1bGF0aW9ucyBvZiA6ZGF0YTpgc3lzLnBhdGhgIHRoYXQgaXQgZW50YWlscy4gIEFsc28gZGlzYWJsZSB0aGVzZQorICAgbWFuaXB1bGF0aW9ucyBpZiA6bW9kOmBzaXRlYCBpcyBleHBsaWNpdGx5IGltcG9ydGVkIGxhdGVyIChjYWxsCisgICA6ZnVuYzpgc2l0ZS5tYWluYCBpZiB5b3Ugd2FudCB0aGVtIHRvIGJlIHRyaWdnZXJlZCkuCiAKIAogLi4gY21kb3B0aW9uOjogLXUKQEAgLTM1Nyw3ICszNTgsOCBAQAogLi4gY21kb3B0aW9uOjogLVgKIAogICAgUmVzZXJ2ZWQgZm9yIHZhcmlvdXMgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgb3B0aW9ucy4gIENQeXRob24gY3VycmVudGx5Ci0gICBkZWZpbmVzIG5vbmUgb2YgdGhlbSwgYnV0IGFsbG93cyB0byBwYXNzIGFyYml0cmFyeSB2YWx1ZXMgYW5kIHJldHJpZXZlCisgICBkZWZpbmVzIGp1c3Qgb25lLCB5b3UgY2FuIHVzZSBgYC1YIGZhdWx0aGFuZGVyYGAgdG8gZW5hYmxlCisgICA6ZGF0YTpgZmF1bHRoYW5kbGVyYC4gSXQgYWxzbyBhbGxvd3MgdG8gcGFzcyBhcmJpdHJhcnkgdmFsdWVzIGFuZCByZXRyaWV2ZQogICAgdGhlbSB0aHJvdWdoIHRoZSA6ZGF0YTpgc3lzLl94b3B0aW9uc2AgZGljdGlvbmFyeS4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKQEAgLTQ3NSw3ICs0NzcsNyBAQAogLi4gZW52dmFyOjogUFlUSE9OQ0FTRU9LCiAKICAgIElmIHRoaXMgaXMgc2V0LCBQeXRob24gaWdub3JlcyBjYXNlIGluIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudHMuICBUaGlzCi0gICBvbmx5IHdvcmtzIG9uIFdpbmRvd3MsIE9TIFgsIGFuZCBPUy8yLgorICAgb25seSB3b3JrcyBvbiBXaW5kb3dzIGFuZCBPUyBYLgogCiAKIC4uIGVudnZhcjo6IFBZVEhPTkRPTlRXUklURUJZVEVDT0RFCkBAIC00ODcsOSArNDg5LDggQEAKIAogLi4gZW52dmFyOjogUFlUSE9OSEFTSFNFRUQKIAotICAgSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gYGByYW5kb21gYCwgdGhlIGVmZmVjdCBpcyB0aGUgc2FtZSBhcyBzcGVjaWZ5aW5nCi0gICB0aGUgOm9wdGlvbjpgLVJgIG9wdGlvbjogYSByYW5kb20gdmFsdWUgaXMgdXNlZCB0byBzZWVkIHRoZSBoYXNoZXMgb2Ygc3RyLAotICAgYnl0ZXMgYW5kIGRhdGV0aW1lIG9iamVjdHMuCisgICBJZiB0aGlzIHZhcmlhYmxlIGlzIG5vdCBzZXQgb3Igc2V0IHRvIGBgcmFuZG9tYGAsIGEgcmFuZG9tIHZhbHVlIGlzIHVzZWQKKyAgIHRvIHNlZWQgdGhlIGhhc2hlcyBvZiBzdHIsIGJ5dGVzIGFuZCBkYXRldGltZSBvYmplY3RzLgogCiAgICBJZiA6ZW52dmFyOmBQWVRIT05IQVNIU0VFRGAgaXMgc2V0IHRvIGFuIGludGVnZXIgdmFsdWUsIGl0IGlzIHVzZWQgYXMgYSBmaXhlZAogICAgc2VlZCBmb3IgZ2VuZXJhdGluZyB0aGUgaGFzaCgpIG9mIHRoZSB0eXBlcyBjb3ZlcmVkIGJ5IHRoZSBoYXNoCkBAIC01MDAsOCArNTAxLDcgQEAKICAgIHZhbHVlcy4KIAogICAgVGhlIGludGVnZXIgbXVzdCBiZSBhIGRlY2ltYWwgbnVtYmVyIGluIHRoZSByYW5nZSBbMCw0Mjk0OTY3Mjk1XS4gIFNwZWNpZnlpbmcKLSAgIHRoZSB2YWx1ZSAwIHdpbGwgbGVhZCB0byB0aGUgc2FtZSBoYXNoIHZhbHVlcyBhcyB3aGVuIGhhc2ggcmFuZG9taXphdGlvbiBpcwotICAgZGlzYWJsZWQuCisgICB0aGUgdmFsdWUgMCB3aWxsIGRpc2FibGUgaGFzaCByYW5kb21pemF0aW9uLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIuMwogCkBAIC01MzEsOCArNTMxLDggQEAKIAogICAgRGVmaW5lcyB0aGUgOmRhdGE6YHVzZXIgYmFzZSBkaXJlY3RvcnkgPHNpdGUuVVNFUl9CQVNFPmAsIHdoaWNoIGlzIHVzZWQgdG8KICAgIGNvbXB1dGUgdGhlIHBhdGggb2YgdGhlIDpkYXRhOmB1c2VyIHNpdGUtcGFja2FnZXMgZGlyZWN0b3J5IDxzaXRlLlVTRVJfU0lURT5gCi0gICBhbmQgOnJlZjpgRGlzdHV0aWxzIGluc3RhbGxhdGlvbiBwYXRocyA8aW5zdC1hbHQtaW5zdGFsbC11c2VyPmAgZm9yIGBgcHl0aG9uCi0gICBzZXR1cC5weSBpbnN0YWxsIC0tdXNlcmBgLgorICAgYW5kIDpyZWY6YERpc3R1dGlscyBpbnN0YWxsYXRpb24gcGF0aHMgPGluc3QtYWx0LWluc3RhbGwtdXNlcj5gIGZvcgorICAgYGBweXRob24gc2V0dXAucHkgaW5zdGFsbCAtLXVzZXJgYC4KIAogICAgLi4gc2VlYWxzbzo6CiAKQEAgLTU1MSw2ICs1NTEsMTQgQEAKICAgIHNlcGFyYXRlZCBzdHJpbmcsIGl0IGlzIGVxdWl2YWxlbnQgdG8gc3BlY2lmeWluZyA6b3B0aW9uOmAtV2AgbXVsdGlwbGUKICAgIHRpbWVzLgogCisuLiBlbnZ2YXI6OiBQWVRIT05GQVVMVEhBTkRMRVIKKworICAgSWYgdGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQsIDpmdW5jOmBmYXVsdGhhbmRsZXIuZW5hYmxlYCBpcyBjYWxsZWQKKyAgIGF0IHN0YXJ0dXA6IGluc3RhbGwgYSBoYW5kbGVyIGZvciA6Y29uc3Q6YFNJR1NFR1ZgLCA6Y29uc3Q6YFNJR0ZQRWAsCisgICA6Y29uc3Q6YFNJR0FCUlRgLCA6Y29uc3Q6YFNJR0JVU2AgYW5kIDpjb25zdDpgU0lHSUxMYCBzaWduYWxzIHRvIGR1bXAgdGhlCisgICBQeXRob24gdHJhY2ViYWNrLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIDpvcHRpb246YC1YYCBgYGZhdWx0aGFuZGxlcmBgCisgICBvcHRpb24uCisKIAogRGVidWctbW9kZSB2YXJpYWJsZXMKIH5+fn5+fn5+fn5+fn5+fn5+fn5+CmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvaW5kZXgucnN0IGIvRG9jL3VzaW5nL2luZGV4LnJzdAppbmRleCAxMjAxMTUzLi41MDJhZmE5IDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvaW5kZXgucnN0CisrKyBiL0RvYy91c2luZy9pbmRleC5yc3QKQEAgLTE3LDQgKzE3LDQgQEAKICAgIHVuaXgucnN0CiAgICB3aW5kb3dzLnJzdAogICAgbWFjLnJzdAotCisgICBzY3JpcHRzLnJzdApkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL3NjcmlwdHMucnN0IGIvRG9jL3VzaW5nL3NjcmlwdHMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjODc0MTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvdXNpbmcvc2NyaXB0cy5yc3QKQEAgLTAsMCArMSwxMiBAQAorLi4gX3Rvb2xzLWFuZC1zY3JpcHRzOgorCitBZGRpdGlvbmFsIFRvb2xzIGFuZCBTY3JpcHRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIF9zY3JpcHRzLXB5dmVudjoKKworcHl2ZW52IC0gQ3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGluY2x1ZGU6OiB2ZW52LWNyZWF0ZS5pbmMKKwpkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYyBiL0RvYy91c2luZy92ZW52LWNyZWF0ZS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZkYmM5YgotLS0gL2Rldi9udWxsCisrKyBiL0RvYy91c2luZy92ZW52LWNyZWF0ZS5pbmMKQEAgLTAsMCArMSw4NSBAQAorQ3JlYXRpb24gb2YgOnJlZjpgdmlydHVhbCBlbnZpcm9ubWVudHMgPHZlbnYtZGVmPmAgaXMgZG9uZSBieSBleGVjdXRpbmcgdGhlCitgYHB5dmVudmBgIHNjcmlwdDo6CisKKyAgICBweXZlbnYgL3BhdGgvdG8vbmV3L3ZpcnR1YWwvZW52aXJvbm1lbnQKKworUnVubmluZyB0aGlzIGNvbW1hbmQgY3JlYXRlcyB0aGUgdGFyZ2V0IGRpcmVjdG9yeSAoY3JlYXRpbmcgYW55IHBhcmVudAorZGlyZWN0b3JpZXMgdGhhdCBkb24ndCBleGlzdCBhbHJlYWR5KSBhbmQgcGxhY2VzIGEgYGBweXZlbnYuY2ZnYGAgZmlsZSBpbiBpdAord2l0aCBhIGBgaG9tZWBgIGtleSBwb2ludGluZyB0byB0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiB0aGUgY29tbWFuZCB3YXMgcnVuCitmcm9tLiAgSXQgYWxzbyBjcmVhdGVzIGEgYGBiaW5gYCAob3IgYGBTY3JpcHRzYGAgb24gV2luZG93cykgc3ViZGlyZWN0b3J5Citjb250YWluaW5nIGEgY29weSBvZiB0aGUgYGBweXRob25gYCBiaW5hcnkgKG9yIGJpbmFyaWVzLCBpbiB0aGUgY2FzZSBvZgorV2luZG93cykuICBJdCBhbHNvIGNyZWF0ZXMgYW4gKGluaXRpYWxseSBlbXB0eSkgYGBsaWIvcHl0aG9uWC5ZL3NpdGUtcGFja2FnZXNgYAorc3ViZGlyZWN0b3J5IChvbiBXaW5kb3dzLCB0aGlzIGlzIGBgTGliXHNpdGUtcGFja2FnZXNgYCkuCisKKy4uIGhpZ2hsaWdodDo6IG5vbmUKKworT24gV2luZG93cywgeW91IG1heSBoYXZlIHRvIGludm9rZSB0aGUgYGBweXZlbnZgYCBzY3JpcHQgYXMgZm9sbG93cywgaWYgeW91Citkb24ndCBoYXZlIHRoZSByZWxldmFudCBQQVRIIGFuZCBQQVRIRVhUIHNldHRpbmdzOjoKKworICAgIGM6XFRlbXA+YzpcUHl0aG9uMzNccHl0aG9uIGM6XFB5dGhvbjMzXFRvb2xzXFNjcmlwdHNccHl2ZW52LnB5IG15ZW52CisKK29yIGVxdWl2YWxlbnRseTo6CisKKyAgICBjOlxUZW1wPmM6XFB5dGhvbjMzXHB5dGhvbiAtbSB2ZW52IG15ZW52CisKK1RoZSBjb21tYW5kLCBpZiBydW4gd2l0aCBgYC1oYGAsIHdpbGwgc2hvdyB0aGUgYXZhaWxhYmxlIG9wdGlvbnM6OgorCisgICAgdXNhZ2U6IHB5dmVudiBbLWhdIFstLXN5c3RlbS1zaXRlLXBhY2thZ2VzXSBbLS1zeW1saW5rc10gWy0tY2xlYXJdCisgICAgICAgICAgICAgICAgICBbLS11cGdyYWRlXSBFTlZfRElSIFtFTlZfRElSIC4uLl0KKworICAgIENyZWF0ZXMgdmlydHVhbCBQeXRob24gZW52aXJvbm1lbnRzIGluIG9uZSBvciBtb3JlIHRhcmdldCBkaXJlY3Rvcmllcy4KKworICAgIHBvc2l0aW9uYWwgYXJndW1lbnRzOgorICAgICAgRU5WX0RJUiAgICAgICAgICAgICBBIGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIGVudmlyb25tZW50IGluLgorCisgICAgb3B0aW9uYWwgYXJndW1lbnRzOgorICAgICAgLWgsIC0taGVscCAgICAgICAgICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0CisgICAgICAtLXN5c3RlbS1zaXRlLXBhY2thZ2VzIEdpdmUgYWNjZXNzIHRvIHRoZSBnbG9iYWwgc2l0ZS1wYWNrYWdlcyBkaXIgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgZW52aXJvbm1lbnQuCisgICAgICAtLXN5bWxpbmtzICAgICAgICAgICAgIFRyeSB0byB1c2Ugc3ltbGlua3MgcmF0aGVyIHRoYW4gY29waWVzLCB3aGVuIHN5bWxpbmtzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBub3QgdGhlIGRlZmF1bHQgZm9yIHRoZSBwbGF0Zm9ybS4KKyAgICAgIC0tY2xlYXIgICAgICAgICAgICAgICAgRGVsZXRlIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgaWYgaXQgYWxyZWFkeSBleGlzdHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIG5vdCBzcGVjaWZpZWQgYW5kIHRoZSBkaXJlY3RvcnkgZXhpc3RzLCBhbiBlcnJvciBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZWQuCisgICAgICAtLXVwZ3JhZGUgICAgICAgICAgICAgIFVwZ3JhZGUgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSB0byB1c2UgdGhpcyB2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIFB5dGhvbiwgYXNzdW1pbmcgUHl0aG9uIGhhcyBiZWVuIHVwZ3JhZGVkIGluLXBsYWNlLgorCitJZiB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cyBhbiBlcnJvciB3aWxsIGJlIHJhaXNlZCwgdW5sZXNzCit0aGUgYGAtLWNsZWFyYGAgb3IgYGAtLXVwZ3JhZGVgYCBvcHRpb24gd2FzIHByb3ZpZGVkLgorCitUaGUgY3JlYXRlZCBgYHB5dmVudi5jZmdgYCBmaWxlIGFsc28gaW5jbHVkZXMgdGhlCitgYGluY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXNgYCBrZXksIHNldCB0byBgYHRydWVgYCBpZiBgYHZlbnZgYCBpcworcnVuIHdpdGggdGhlIGBgLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlc2BgIG9wdGlvbiwgYGBmYWxzZWBgIG90aGVyd2lzZS4KKworTXVsdGlwbGUgcGF0aHMgY2FuIGJlIGdpdmVuIHRvIGBgcHl2ZW52YGAsIGluIHdoaWNoIGNhc2UgYW4gaWRlbnRpY2FsCit2aXJ0dWFsZW52IHdpbGwgYmUgY3JlYXRlZCwgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBvcHRpb25zLCBhdCBlYWNoCitwcm92aWRlZCBwYXRoLgorCitPbmNlIGEgdmVudiBoYXMgYmVlbiBjcmVhdGVkLCBpdCBjYW4gYmUgImFjdGl2YXRlZCIgdXNpbmcgYSBzY3JpcHQgaW4gdGhlCit2ZW52J3MgYmluYXJ5IGRpcmVjdG9yeS4gVGhlIGludm9jYXRpb24gb2YgdGhlIHNjcmlwdCBpcyBwbGF0Zm9ybS1zcGVjaWZpYzogb24KK2EgUG9zaXggcGxhdGZvcm0sIHlvdSB3b3VsZCB0eXBpY2FsbHkgZG86OgorCisgICAgJCBzb3VyY2UgPHZlbnY+L2Jpbi9hY3RpdmF0ZQorCit3aGVyZWFzIG9uIFdpbmRvd3MsIHlvdSBtaWdodCBkbzo6CisKKyAgICBDOlw+IDx2ZW52Pi9TY3JpcHRzL2FjdGl2YXRlCisKK2lmIHlvdSBhcmUgdXNpbmcgdGhlIGBgY21kLmV4ZWBgIHNoZWxsLCBvciBwZXJoYXBzOjoKKworICAgIFBTIEM6XD4gPHZlbnY+L1NjcmlwdHMvQWN0aXZhdGUucHMxCisKK2lmIHlvdSB1c2UgUG93ZXJTaGVsbC4KKworWW91IGRvbid0IHNwZWNpZmljYWxseSAqbmVlZCogdG8gYWN0aXZhdGUgYW4gZW52aXJvbm1lbnQ7IGFjdGl2YXRpb24ganVzdAorcHJlcGVuZHMgdGhlIHZlbnYncyBiaW5hcnkgZGlyZWN0b3J5IHRvIHlvdXIgcGF0aCwgc28gdGhhdCAicHl0aG9uIiBpbnZva2VzIHRoZQordmVudidzIFB5dGhvbiBpbnRlcnByZXRlciBhbmQgeW91IGNhbiBydW4gaW5zdGFsbGVkIHNjcmlwdHMgd2l0aG91dCBoYXZpbmcgdG8KK3VzZSB0aGVpciBmdWxsIHBhdGguIEhvd2V2ZXIsIGFsbCBzY3JpcHRzIGluc3RhbGxlZCBpbiBhIHZlbnYgc2hvdWxkIGJlCitydW5uYWJsZSB3aXRob3V0IGFjdGl2YXRpbmcgaXQsIGFuZCBydW4gd2l0aCB0aGUgdmVudidzIFB5dGhvbiBhdXRvbWF0aWNhbGx5LgorCitZb3UgY2FuIGRlYWN0aXZhdGUgYSB2ZW52IGJ5IHR5cGluZyAiZGVhY3RpdmF0ZSIgaW4geW91ciBzaGVsbC4gVGhlIGV4YWN0CittZWNoYW5pc20gaXMgcGxhdGZvcm0tc3BlY2lmaWM6IGZvciBleGFtcGxlLCB0aGUgQmFzaCBhY3RpdmF0aW9uIHNjcmlwdCBkZWZpbmVzCithICJkZWFjdGl2YXRlIiBmdW5jdGlvbiwgd2hlcmVhcyBvbiBXaW5kb3dzIHRoZXJlIGFyZSBzZXBhcmF0ZSBzY3JpcHRzIGNhbGxlZAorYGBkZWFjdGl2YXRlLmJhdGBgIGFuZCBgYERlYWN0aXZhdGUucHMxYGAgd2hpY2ggYXJlIGluc3RhbGxlZCB3aGVuIHRoZSB2ZW52IGlzCitjcmVhdGVkLgorCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvd2luZG93cy5yc3QgYi9Eb2MvdXNpbmcvd2luZG93cy5yc3QKaW5kZXggYzg1YWZkMi4uYWUyNTIxNSAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL3dpbmRvd3MucnN0CisrKyBiL0RvYy91c2luZy93aW5kb3dzLnJzdApAQCAtMTMyLDIxICsxMzIsMzMgQEAKICAgICAgIFNldHRpbmcgRW52aXJvbm1lbnQgdmFyaWFibGVzLCBMb3VpcyBKLiBGYXJydWdpYQogCiAKKy4uIF93aW5kb3dzLXBhdGgtbW9kOgorCiBGaW5kaW5nIHRoZSBQeXRob24gZXhlY3V0YWJsZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKwogQmVzaWRlcyB1c2luZyB0aGUgYXV0b21hdGljYWxseSBjcmVhdGVkIHN0YXJ0IG1lbnUgZW50cnkgZm9yIHRoZSBQeXRob24KLWludGVycHJldGVyLCB5b3UgbWlnaHQgd2FudCB0byBzdGFydCBQeXRob24gaW4gdGhlIERPUyBwcm9tcHQuICBUbyBtYWtlIHRoaXMKLXdvcmssIHlvdSBuZWVkIHRvIHNldCB5b3VyIDplbnZ2YXI6YCVQQVRIJWAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gaW5jbHVkZSB0aGUKLWRpcmVjdG9yeSBvZiB5b3VyIFB5dGhvbiBkaXN0cmlidXRpb24sIGRlbGltaXRlZCBieSBhIHNlbWljb2xvbiBmcm9tIG90aGVyCi1lbnRyaWVzLiAgQW4gZXhhbXBsZSB2YXJpYWJsZSBjb3VsZCBsb29rIGxpa2UgdGhpcyAoYXNzdW1pbmcgdGhlIGZpcnN0IHR3bwotZW50cmllcyBhcmUgV2luZG93cycgZGVmYXVsdCk6OgoraW50ZXJwcmV0ZXIsIHlvdSBtaWdodCB3YW50IHRvIHN0YXJ0IFB5dGhvbiBpbiB0aGUgY29tbWFuZCBwcm9tcHQuIEFzIG9mCitQeXRob24gMy4zLCB0aGUgaW5zdGFsbGVyIGhhcyBhbiBvcHRpb24gdG8gc2V0IHRoYXQgdXAgZm9yIHlvdS4KIAotICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI7QzpcV0lORE9XUztDOlxQeXRob24yNQorQXQgdGhlICJDdXN0b21pemUgUHl0aG9uIDMuMyIgc2NyZWVuLCBhbiBvcHRpb24gY2FsbGVkCisiQWRkIHB5dGhvbi5leGUgdG8gc2VhcmNoIHBhdGgiIGNhbiBiZSBlbmFibGVkIHRvIGhhdmUgdGhlIGluc3RhbGxlciBwbGFjZQoreW91ciBpbnN0YWxsYXRpb24gaW50byB0aGUgOmVudnZhcjpgJVBBVEglYC4gVGhpcyBhbGxvd3MgeW91IHRvIHR5cGUKKzpjb21tYW5kOmBweXRob25gIHRvIHJ1biB0aGUgaW50ZXJwcmV0ZXIuIFRodXMsIHlvdSBjYW4gYWxzbyBleGVjdXRlIHlvdXIKK3NjcmlwdHMgd2l0aCBjb21tYW5kIGxpbmUgb3B0aW9ucywgc2VlIDpyZWY6YHVzaW5nLW9uLWNtZGxpbmVgIGRvY3VtZW50YXRpb24uCiAKLVR5cGluZyA6Y29tbWFuZDpgcHl0aG9uYCBvbiB5b3VyIGNvbW1hbmQgcHJvbXB0IHdpbGwgbm93IGZpcmUgdXAgdGhlIFB5dGhvbgotaW50ZXJwcmV0ZXIuICBUaHVzLCB5b3UgY2FuIGFsc28gZXhlY3V0ZSB5b3VyIHNjcmlwdHMgd2l0aCBjb21tYW5kIGxpbmUgb3B0aW9ucywKLXNlZSA6cmVmOmB1c2luZy1vbi1jbWRsaW5lYCBkb2N1bWVudGF0aW9uLgorSWYgeW91IGRvbid0IGVuYWJsZSB0aGlzIG9wdGlvbiBhdCBpbnN0YWxsIHRpbWUsIHlvdSBjYW4gYWx3YXlzIHJlLXJ1biB0aGUKK2luc3RhbGxlciB0byBjaG9vc2UgaXQuCisKK1RoZSBhbHRlcm5hdGl2ZSBpcyBtYW51YWxseSBtb2RpZnlpbmcgdGhlIDplbnZ2YXI6YCVQQVRIJWAgdXNpbmcgdGhlCitkaXJlY3Rpb25zIGluIDpyZWY6YHNldHRpbmctZW52dmFyc2AuIFlvdSBuZWVkIHRvIHNldCB5b3VyIDplbnZ2YXI6YCVQQVRIJWAKK2Vudmlyb25tZW50IHZhcmlhYmxlIHRvIGluY2x1ZGUgdGhlIGRpcmVjdG9yeSBvZiB5b3VyIFB5dGhvbiBkaXN0cmlidXRpb24sCitkZWxpbWl0ZWQgYnkgYSBzZW1pY29sb24gZnJvbSBvdGhlciBlbnRyaWVzLiBBbiBleGFtcGxlIHZhcmlhYmxlIGNvdWxkIGxvb2sKK2xpa2UgdGhpcyAoYXNzdW1pbmcgdGhlIGZpcnN0IHR3byBlbnRyaWVzIGFyZSBXaW5kb3dzJyBkZWZhdWx0KTo6CisKKyAgICBDOlxXSU5ET1dTXHN5c3RlbTMyO0M6XFdJTkRPV1M7QzpcUHl0aG9uMzMKIAogCiBGaW5kaW5nIG1vZHVsZXMKQEAgLTIwNSwxMyArMjE3LDE5IEBACiBFeGVjdXRpbmcgc2NyaXB0cwogLS0tLS0tLS0tLS0tLS0tLS0KIAotUHl0aG9uIHNjcmlwdHMgKGZpbGVzIHdpdGggdGhlIGV4dGVuc2lvbiBgYC5weWBgKSB3aWxsIGJlIGV4ZWN1dGVkIGJ5Ci06cHJvZ3JhbTpgcHl0aG9uLmV4ZWAgYnkgZGVmYXVsdC4gIFRoaXMgZXhlY3V0YWJsZSBvcGVucyBhIHRlcm1pbmFsLCB3aGljaCBzdGF5cwotb3BlbiBldmVuIGlmIHRoZSBwcm9ncmFtIHVzZXMgYSBHVUkuICBJZiB5b3UgZG8gbm90IHdhbnQgdGhpcyB0byBoYXBwZW4sIHVzZSB0aGUKLWV4dGVuc2lvbiBgYC5weXdgYCB3aGljaCB3aWxsIGNhdXNlIHRoZSBzY3JpcHQgdG8gYmUgZXhlY3V0ZWQgYnkKLTpwcm9ncmFtOmBweXRob253LmV4ZWAgYnkgZGVmYXVsdCAoYm90aCBleGVjdXRhYmxlcyBhcmUgbG9jYXRlZCBpbiB0aGUgdG9wLWxldmVsCi1vZiB5b3VyIFB5dGhvbiBpbnN0YWxsYXRpb24gZGlyZWN0b3J5KS4gIFRoaXMgc3VwcHJlc3NlcyB0aGUgdGVybWluYWwgd2luZG93IG9uCi1zdGFydHVwLgorQXMgb2YgUHl0aG9uIDMuMywgUHl0aG9uIGluY2x1ZGVzIGEgbGF1bmNoZXIgd2hpY2ggZmFjaWxpdGF0ZXMgcnVubmluZyBQeXRob24KK3NjcmlwdHMuIFNlZSA6cmVmOmBsYXVuY2hlcmAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKK0V4ZWN1dGluZyBzY3JpcHRzIHdpdGhvdXQgdGhlIFB5dGhvbiBsYXVuY2hlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1dpdGhvdXQgdGhlIFB5dGhvbiBsYXVuY2hlciBpbnN0YWxsZWQsIFB5dGhvbiBzY3JpcHRzIChmaWxlcyB3aXRoIHRoZSBleHRlbnNpb24KK2BgLnB5YGApIHdpbGwgYmUgZXhlY3V0ZWQgYnkgOnByb2dyYW06YHB5dGhvbi5leGVgIGJ5IGRlZmF1bHQuICBUaGlzIGV4ZWN1dGFibGUKK29wZW5zIGEgdGVybWluYWwsIHdoaWNoIHN0YXlzIG9wZW4gZXZlbiBpZiB0aGUgcHJvZ3JhbSB1c2VzIGEgR1VJLiAgSWYgeW91IGRvCitub3Qgd2FudCB0aGlzIHRvIGhhcHBlbiwgdXNlIHRoZSBleHRlbnNpb24gYGAucHl3YGAgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc2NyaXB0Cit0byBiZSBleGVjdXRlZCBieSA6cHJvZ3JhbTpgcHl0aG9udy5leGVgIGJ5IGRlZmF1bHQgKGJvdGggZXhlY3V0YWJsZXMgYXJlCitsb2NhdGVkIGluIHRoZSB0b3AtbGV2ZWwgb2YgeW91ciBQeXRob24gaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSkuICBUaGlzCitzdXBwcmVzc2VzIHRoZSB0ZXJtaW5hbCB3aW5kb3cgb24gc3RhcnR1cC4KIAogWW91IGNhbiBhbHNvIG1ha2UgYWxsIGBgLnB5YGAgc2NyaXB0cyBleGVjdXRlIHdpdGggOnByb2dyYW06YHB5dGhvbncuZXhlYCwKIHNldHRpbmcgdGhpcyB0aHJvdWdoIHRoZSB1c3VhbCBmYWNpbGl0aWVzLCBmb3IgZXhhbXBsZSAobWlnaHQgcmVxdWlyZQpAQCAtMjI3LDYgKzI0NSwyNTAgQEAKICAgICAgIGZ0eXBlIFB5dGhvbi5GaWxlPUM6XFBhdGhcdG9ccHl0aG9udy5leGUgIiUxIiAlKgogCiAKKy4uIF9sYXVuY2hlcjoKKworUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKK1RoZSBQeXRob24gbGF1bmNoZXIgZm9yIFdpbmRvd3MgaXMgYSB1dGlsaXR5IHdoaWNoIGFpZHMgaW4gdGhlIGxvY2F0aW9uIGFuZAorZXhlY3V0aW9uIG9mIGRpZmZlcmVudCBQeXRob24gdmVyc2lvbnMuICBJdCBhbGxvd3Mgc2NyaXB0cyAob3IgdGhlCitjb21tYW5kLWxpbmUpIHRvIGluZGljYXRlIGEgcHJlZmVyZW5jZSBmb3IgYSBzcGVjaWZpYyBQeXRob24gdmVyc2lvbiwgYW5kCit3aWxsIGxvY2F0ZSBhbmQgZXhlY3V0ZSB0aGF0IHZlcnNpb24uCisKK0dldHRpbmcgc3RhcnRlZAorLS0tLS0tLS0tLS0tLS0tCisKK0Zyb20gdGhlIGNvbW1hbmQtbGluZQorXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK1lvdSBzaG91bGQgZW5zdXJlIHRoZSBsYXVuY2hlciBpcyBvbiB5b3VyIFBBVEggLSBkZXBlbmRpbmcgb24gaG93IGl0IHdhcworaW5zdGFsbGVkIGl0IG1heSBhbHJlYWR5IGJlIHRoZXJlLCBidXQgY2hlY2sganVzdCBpbiBjYXNlIGl0IGlzIG5vdC4KKworRnJvbSBhIGNvbW1hbmQtcHJvbXB0LCBleGVjdXRlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKworOjoKKworICBweQorCitZb3Ugc2hvdWxkIGZpbmQgdGhhdCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIDIueCB5b3UgaGF2ZSBpbnN0YWxsZWQgaXMKK3N0YXJ0ZWQgLSBpdCBjYW4gYmUgZXhpdGVkIGFzIG5vcm1hbCwgYW5kIGFueSBhZGRpdGlvbmFsIGNvbW1hbmQtbGluZQorYXJndW1lbnRzIHNwZWNpZmllZCB3aWxsIGJlIHNlbnQgZGlyZWN0bHkgdG8gUHl0aG9uLgorCitJZiB5b3UgaGF2ZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob24gMi54IGluc3RhbGxlZCAoZS5nLiwgMi42IGFuZCAyLjcpIHlvdQord2lsbCBoYXZlIG5vdGljZWQgdGhhdCBQeXRob24gMi43IHdhcyBzdGFydGVkIC0gdG8gbGF1bmNoIFB5dGhvbiAyLjYsIHRyeSB0aGUKK2NvbW1hbmQ6CisKKzo6CisKKyAgcHkgLTIuNgorCitJZiB5b3UgaGF2ZSBhIFB5dGhvbiAzLnggaW5zdGFsbGVkLCB0cnkgdGhlIGNvbW1hbmQ6CisKKzo6CisKKyAgcHkgLTMKKworWW91IHNob3VsZCBmaW5kIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24gMy54IHN0YXJ0cy4KKworRnJvbSBhIHNjcmlwdAorXl5eXl5eXl5eXl5eXgorCitMZXQncyBjcmVhdGUgYSB0ZXN0IFB5dGhvbiBzY3JpcHQgLSBjcmVhdGUgYSBmaWxlIGNhbGxlZCBgYGhlbGxvLnB5YGAgd2l0aCB0aGUKK2ZvbGxvd2luZyBjb250ZW50cworCis6OgorCisgICAgIyEgcHl0aG9uCisgICAgaW1wb3J0IHN5cworICAgIHN5cy5zdGRvdXQud3JpdGUoImhlbGxvIGZyb20gUHl0aG9uICVzXG4iICUgKHN5cy52ZXJzaW9uLCkpCisKK0Zyb20gdGhlIGRpcmVjdG9yeSBpbiB3aGljaCBoZWxsby5weSBsaXZlcywgZXhlY3V0ZSB0aGUgY29tbWFuZDoKKworOjoKKworICAgcHkgaGVsbG8ucHkKKworWW91IHNob3VsZCBub3RpY2UgdGhlIHZlcnNpb24gbnVtYmVyIG9mIHlvdXIgbGF0ZXN0IFB5dGhvbiAyLnggaW5zdGFsbGF0aW9uCitpcyBwcmludGVkLiAgTm93IHRyeSBjaGFuZ2luZyB0aGUgZmlyc3QgbGluZSB0byBiZToKKworOjoKKworICAgICMhIHB5dGhvbjMKKworUmUtZXhlY3V0aW5nIHRoZSBjb21tYW5kIHNob3VsZCBub3cgcHJpbnQgdGhlIGxhdGVzdCBQeXRob24gMy54IGluZm9ybWF0aW9uLgorQXMgd2l0aCB0aGUgYWJvdmUgY29tbWFuZC1saW5lIGV4YW1wbGVzLCB5b3UgY2FuIHNwZWNpZnkgYSBtb3JlIGV4cGxpY2l0Cit2ZXJzaW9uIHF1YWxpZmllci4gIEFzc3VtaW5nIHlvdSBoYXZlIFB5dGhvbiAyLjYgaW5zdGFsbGVkLCB0cnkgY2hhbmdpbmcgdGhlCitmaXJzdCBsaW5lIHRvIGBgIyEgcHl0aG9uMi42YGAgYW5kIHlvdSBzaG91bGQgZmluZCB0aGUgMi42IHZlcnNpb24KK2luZm9ybWF0aW9uIHByaW50ZWQuCisKK0Zyb20gZmlsZSBhc3NvY2lhdGlvbnMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVGhlIGxhdW5jaGVyIHNob3VsZCBoYXZlIGJlZW4gYXNzb2NpYXRlZCB3aXRoIFB5dGhvbiBmaWxlcyAoaS5lLiBgYC5weWBgLAorYGAucHl3YGAsIGBgLnB5Y2BgLCBgYC5weW9gYCBmaWxlcykgd2hlbiBpdCB3YXMgaW5zdGFsbGVkLiAgVGhpcyBtZWFucyB0aGF0Cit3aGVuIHlvdSBkb3VibGUtY2xpY2sgb24gb25lIG9mIHRoZXNlIGZpbGVzIGZyb20gV2luZG93cyBleHBsb3JlciB0aGUgbGF1bmNoZXIKK3dpbGwgYmUgdXNlZCwgYW5kIHRoZXJlZm9yZSB5b3UgY2FuIHVzZSB0aGUgc2FtZSBmYWNpbGl0aWVzIGRlc2NyaWJlZCBhYm92ZSB0bworaGF2ZSB0aGUgc2NyaXB0IHNwZWNpZnkgdGhlIHZlcnNpb24gd2hpY2ggc2hvdWxkIGJlIHVzZWQuCisKK1RoZSBrZXkgYmVuZWZpdCBvZiB0aGlzIGlzIHRoYXQgYSBzaW5nbGUgbGF1bmNoZXIgY2FuIHN1cHBvcnQgbXVsdGlwbGUgUHl0aG9uCit2ZXJzaW9ucyBhdCB0aGUgc2FtZSB0aW1lIGRlcGVuZGluZyBvbiB0aGUgY29udGVudHMgb2YgdGhlIGZpcnN0IGxpbmUuCisKK1NoZWJhbmcgTGluZXMKKy0tLS0tLS0tLS0tLS0KKworSWYgdGhlIGZpcnN0IGxpbmUgb2YgYSBzY3JpcHQgZmlsZSBzdGFydHMgd2l0aCBgYCMhYGAsIGl0IGlzIGtub3duIGFzIGEKKyJzaGViYW5nIiBsaW5lLiAgTGludXggYW5kIG90aGVyIFVuaXggbGlrZSBvcGVyYXRpbmcgc3lzdGVtcyBoYXZlIG5hdGl2ZQorc3VwcG9ydCBmb3Igc3VjaCBsaW5lcyBhbmQgYXJlIGNvbW1vbmx5IHVzZWQgb24gc3VjaCBzeXN0ZW1zIHRvIGluZGljYXRlIGhvdworYSBzY3JpcHQgc2hvdWxkIGJlIGV4ZWN1dGVkLiAgVGhpcyBsYXVuY2hlciBhbGxvd3MgdGhlIHNhbWUgZmFjaWxpdGllcyB0byBiZQordXNpbmcgd2l0aCBQeXRob24gc2NyaXB0cyBvbiBXaW5kb3dzIGFuZCB0aGUgZXhhbXBsZXMgYWJvdmUgZGVtb25zdHJhdGUgdGhlaXIKK3VzZS4KKworVG8gYWxsb3cgc2hlYmFuZyBsaW5lcyBpbiBQeXRob24gc2NyaXB0cyB0byBiZSBwb3J0YWJsZSBiZXR3ZWVuIFVuaXggYW5kCitXaW5kb3dzLCB0aGlzIGxhdW5jaGVyIHN1cHBvcnRzIGEgbnVtYmVyIG9mICd2aXJ0dWFsJyBjb21tYW5kcyB0byBzcGVjaWZ5Cit3aGljaCBpbnRlcnByZXRlciB0byB1c2UuICBUaGUgc3VwcG9ydGVkIHZpcnR1YWwgY29tbWFuZHMgYXJlOgorCisqIGBgL3Vzci9iaW4vZW52IHB5dGhvbmBgCisqIGBgL3Vzci9iaW4vcHl0aG9uYGAKKyogYGAvdXNyL2xvY2FsL2Jpbi9weXRob25gYAorKiBgYHB5dGhvbmBgCisKK0ZvciBleGFtcGxlLCBpZiB0aGUgZmlyc3QgbGluZSBvZiB5b3VyIHNjcmlwdCBzdGFydHMgd2l0aAorCis6OgorCisgICMhIC91c3IvYmluL3B5dGhvbgorCitUaGUgZGVmYXVsdCBQeXRob24gd2lsbCBiZSBsb2NhdGVkIGFuZCB1c2VkLiAgQXMgbWFueSBQeXRob24gc2NyaXB0cyB3cml0dGVuCit0byB3b3JrIG9uIFVuaXggd2lsbCBhbHJlYWR5IGhhdmUgdGhpcyBsaW5lLCB5b3Ugc2hvdWxkIGZpbmQgdGhlc2Ugc2NyaXB0cyBjYW4KK2JlIHVzZWQgYnkgdGhlIGxhdW5jaGVyIHdpdGhvdXQgbW9kaWZpY2F0aW9uLiAgSWYgeW91IGFyZSB3cml0aW5nIGEgbmV3IHNjcmlwdAorb24gV2luZG93cyB3aGljaCB5b3UgaG9wZSB3aWxsIGJlIHVzZWZ1bCBvbiBVbml4LCB5b3Ugc2hvdWxkIHVzZSBvbmUgb2YgdGhlCitzaGViYW5nIGxpbmVzIHN0YXJ0aW5nIHdpdGggYGAvdXNyYGAuCisKK0FyZ3VtZW50cyBpbiBzaGViYW5nIGxpbmVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgc2hlYmFuZyBsaW5lcyBjYW4gYWxzbyBzcGVjaWZ5IGFkZGl0aW9uYWwgb3B0aW9ucyB0byBiZSBwYXNzZWQgdG8gdGhlCitQeXRob24gaW50ZXJwcmV0ZXIuICBGb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgYSBzaGViYW5nIGxpbmU6CisKKzo6CisKKyAgIyEgL3Vzci9iaW4vcHl0aG9uIC12CisKK1RoZW4gUHl0aG9uIHdpbGwgYmUgc3RhcnRlZCB3aXRoIHRoZSBgYC12YGAgb3B0aW9uCisKK0N1c3RvbWl6YXRpb24KKy0tLS0tLS0tLS0tLS0KKworQ3VzdG9taXphdGlvbiB2aWEgSU5JIGZpbGVzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworICAgIFR3byAuaW5pIGZpbGVzIHdpbGwgYmUgc2VhcmNoZWQgYnkgdGhlIGxhdW5jaGVyIC0gYGBweS5pbmlgYCBpbiB0aGUKKyAgICBjdXJyZW50IHVzZXIncyAiYXBwbGljYXRpb24gZGF0YSIgZGlyZWN0b3J5IChpLmUuIHRoZSBkaXJlY3RvcnkgcmV0dXJuZWQKKyAgICBieSBjYWxsaW5nIHRoZSBXaW5kb3dzIGZ1bmN0aW9uIFNIR2V0Rm9sZGVyUGF0aCB3aXRoIENTSURMX0xPQ0FMX0FQUERBVEEpCisgICAgYW5kIGBgcHkuaW5pYGAgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBsYXVuY2hlci4gIFRoZSBzYW1lIC5pbmkKKyAgICBmaWxlcyBhcmUgdXNlZCBmb3IgYm90aCB0aGUgJ2NvbnNvbGUnIHZlcnNpb24gb2YgdGhlIGxhdW5jaGVyIChpLmUuCisgICAgcHkuZXhlKSBhbmQgZm9yIHRoZSAnd2luZG93cycgdmVyc2lvbiAoaS5lLiBweXcuZXhlKQorCisgICAgQ3VzdG9taXphdGlvbiBzcGVjaWZpZWQgaW4gdGhlICJhcHBsaWNhdGlvbiBkaXJlY3RvcnkiIHdpbGwgaGF2ZQorICAgIHByZWNlZGVuY2Ugb3ZlciB0aGUgb25lIG5leHQgdG8gdGhlIGV4ZWN1dGFibGUsIHNvIGEgdXNlciwgd2hvIG1heSBub3QKKyAgICBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGUgLmluaSBmaWxlIG5leHQgdG8gdGhlIGxhdW5jaGVyLCBjYW4gb3ZlcnJpZGUKKyAgICBjb21tYW5kcyBpbiB0aGF0IGdsb2JhbCAuaW5pIGZpbGUpCisKK0N1c3RvbWl6aW5nIGRlZmF1bHQgUHl0aG9uIHZlcnNpb25zCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitJbiBzb21lIGNhc2VzLCBhIHZlcnNpb24gcXVhbGlmaWVyIGNhbiBiZSBpbmNsdWRlZCBpbiBhIGNvbW1hbmQgdG8gZGljdGF0ZQord2hpY2ggdmVyc2lvbiBvZiBQeXRob24gd2lsbCBiZSB1c2VkIGJ5IHRoZSBjb21tYW5kLiBBIHZlcnNpb24gcXVhbGlmaWVyCitzdGFydHMgd2l0aCBhIG1ham9yIHZlcnNpb24gbnVtYmVyIGFuZCBjYW4gb3B0aW9uYWxseSBiZSBmb2xsb3dlZCBieSBhIHBlcmlvZAorKCcuJykgYW5kIGEgbWlub3IgdmVyc2lvbiBzcGVjaWZpZXIuIElmIHRoZSBtaW5vciBxdWFsaWZpZXIgaXMgc3BlY2lmaWVkLCBpdAorbWF5IG9wdGlvbmFsbHkgYmUgZm9sbG93ZWQgYnkgIi0zMiIgdG8gaW5kaWNhdGUgdGhlIDMyLWJpdCBpbXBsZW1lbnRhdGlvbiBvZgordGhhdCB2ZXJzaW9uIGJlIHVzZWQuCisKK0ZvciBleGFtcGxlLCBhIHNoZWJhbmcgbGluZSBvZiBgYCMhcHl0aG9uYGAgaGFzIG5vIHZlcnNpb24gcXVhbGlmaWVyLCB3aGlsZQorYGAjIXB5dGhvbjNgYCBoYXMgYSB2ZXJzaW9uIHF1YWxpZmllciB3aGljaCBzcGVjaWZpZXMgb25seSBhIG1ham9yIHZlcnNpb24uCisKK0lmIG5vIHZlcnNpb24gcXVhbGlmaWVycyBhcmUgZm91bmQgaW4gYSBjb21tYW5kLCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKK2BgUFlfUFlUSE9OYGAgY2FuIGJlIHNldCB0byBzcGVjaWZ5IHRoZSBkZWZhdWx0IHZlcnNpb24gcXVhbGlmaWVyIC0gdGhlIGRlZmF1bHQKK3ZhbHVlIGlzICIyIi4gTm90ZSB0aGlzIHZhbHVlIGNvdWxkIHNwZWNpZnkganVzdCBhIG1ham9yIHZlcnNpb24gKGUuZy4gIjIiKSBvcgorYSBtYWpvci5taW5vciBxdWFsaWZpZXIgKGUuZy4gIjIuNiIpLCBvciBldmVuIG1ham9yLm1pbm9yLTMyLgorCitJZiBubyBtaW5vciB2ZXJzaW9uIHF1YWxpZmllcnMgYXJlIGZvdW5kLCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKK2BgUFlfUFlUSE9Oe21ham9yfWBgICh3aGVyZSBgYHttYWpvcn1gYCBpcyB0aGUgY3VycmVudCBtYWpvciB2ZXJzaW9uIHF1YWxpZmllcgorYXMgZGV0ZXJtaW5lZCBhYm92ZSkgY2FuIGJlIHNldCB0byBzcGVjaWZ5IHRoZSBmdWxsIHZlcnNpb24uIElmIG5vIHN1Y2ggb3B0aW9uCitpcyBmb3VuZCwgdGhlIGxhdW5jaGVyIHdpbGwgZW51bWVyYXRlIHRoZSBpbnN0YWxsZWQgUHl0aG9uIHZlcnNpb25zIGFuZCB1c2UKK3RoZSBsYXRlc3QgbWlub3IgcmVsZWFzZSBmb3VuZCBmb3IgdGhlIG1ham9yIHZlcnNpb24sIHdoaWNoIGlzIGxpa2VseSwKK2FsdGhvdWdoIG5vdCBndWFyYW50ZWVkLCB0byBiZSB0aGUgbW9zdCByZWNlbnRseSBpbnN0YWxsZWQgdmVyc2lvbiBpbiB0aGF0CitmYW1pbHkuCisKK09uIDY0LWJpdCBXaW5kb3dzIHdpdGggYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHNhbWUKKyhtYWpvci5taW5vcikgUHl0aG9uIHZlcnNpb24gaW5zdGFsbGVkLCB0aGUgNjQtYml0IHZlcnNpb24gd2lsbCBhbHdheXMgYmUKK3ByZWZlcnJlZC4gVGhpcyB3aWxsIGJlIHRydWUgZm9yIGJvdGggMzItYml0IGFuZCA2NC1iaXQgaW1wbGVtZW50YXRpb25zIG9mIHRoZQorbGF1bmNoZXIgLSBhIDMyLWJpdCBsYXVuY2hlciB3aWxsIHByZWZlciB0byBleGVjdXRlIGEgNjQtYml0IFB5dGhvbiBpbnN0YWxsYXRpb24KK29mIHRoZSBzcGVjaWZpZWQgdmVyc2lvbiBpZiBhdmFpbGFibGUuIFRoaXMgaXMgc28gdGhlIGJlaGF2aW9yIG9mIHRoZSBsYXVuY2hlcgorY2FuIGJlIHByZWRpY3RlZCBrbm93aW5nIG9ubHkgd2hhdCB2ZXJzaW9ucyBhcmUgaW5zdGFsbGVkIG9uIHRoZSBQQyBhbmQKK3dpdGhvdXQgcmVnYXJkIHRvIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IHdlcmUgaW5zdGFsbGVkIChpLmUuLCB3aXRob3V0IGtub3dpbmcKK3doZXRoZXIgYSAzMiBvciA2NC1iaXQgdmVyc2lvbiBvZiBQeXRob24gYW5kIGNvcnJlc3BvbmRpbmcgbGF1bmNoZXIgd2FzCitpbnN0YWxsZWQgbGFzdCkuIEFzIG5vdGVkIGFib3ZlLCBhbiBvcHRpb25hbCAiLTMyIiBzdWZmaXggY2FuIGJlIHVzZWQgb24gYQordmVyc2lvbiBzcGVjaWZpZXIgdG8gY2hhbmdlIHRoaXMgYmVoYXZpb3VyLgorCitFeGFtcGxlczoKKworKiBJZiBubyByZWxldmFudCBvcHRpb25zIGFyZSBzZXQsIHRoZSBjb21tYW5kcyBgYHB5dGhvbmBgIGFuZAorICBgYHB5dGhvbjJgYCB3aWxsIHVzZSB0aGUgbGF0ZXN0IFB5dGhvbiAyLnggdmVyc2lvbiBpbnN0YWxsZWQgYW5kCisgIHRoZSBjb21tYW5kIGBgcHl0aG9uM2BgIHdpbGwgdXNlIHRoZSBsYXRlc3QgUHl0aG9uIDMueCBpbnN0YWxsZWQuCisKKyogVGhlIGNvbW1hbmRzIGBgcHl0aG9uMy4xYGAgYW5kIGBgcHl0aG9uMi43YGAgd2lsbCBub3QgY29uc3VsdCBhbnkKKyAgb3B0aW9ucyBhdCBhbGwgYXMgdGhlIHZlcnNpb25zIGFyZSBmdWxseSBzcGVjaWZpZWQuCisKKyogSWYgYGBQWV9QWVRIT049M2BgLCB0aGUgY29tbWFuZHMgYGBweXRob25gYCBhbmQgYGBweXRob24zYGAgd2lsbCBib3RoIHVzZQorICB0aGUgbGF0ZXN0IGluc3RhbGxlZCBQeXRob24gMyB2ZXJzaW9uLgorCisqIElmIGBgUFlfUFlUSE9OPTMuMS0zMmBgLCB0aGUgY29tbWFuZCBgYHB5dGhvbmBgIHdpbGwgdXNlIHRoZSAzMi1iaXQKKyAgaW1wbGVtZW50YXRpb24gb2YgMy4xIHdoZXJlYXMgdGhlIGNvbW1hbmQgYGBweXRob24zYGAgd2lsbCB1c2UgdGhlIGxhdGVzdAorICBpbnN0YWxsZWQgUHl0aG9uIChQWV9QWVRIT04gd2FzIG5vdCBjb25zaWRlcmVkIGF0IGFsbCBhcyBhIG1ham9yCisgIHZlcnNpb24gd2FzIHNwZWNpZmllZC4pCisKKyogSWYgYGBQWV9QWVRIT049M2BgIGFuZCBgYFBZX1BZVEhPTjM9My4xYGAsIHRoZSBjb21tYW5kcworICBgYHB5dGhvbmBgIGFuZCBgYHB5dGhvbjNgYCB3aWxsIGJvdGggdXNlIHNwZWNpZmljYWxseSAzLjEKKworSW4gYWRkaXRpb24gdG8gZW52aXJvbm1lbnQgdmFyaWFibGVzLCB0aGUgc2FtZSBzZXR0aW5ncyBjYW4gYmUgY29uZmlndXJlZAoraW4gdGhlIC5JTkkgZmlsZSB1c2VkIGJ5IHRoZSBsYXVuY2hlci4gIFRoZSBzZWN0aW9uIGluIHRoZSBJTkkgZmlsZSBpcworY2FsbGVkIGBgW2RlZmF1bHRzXWBgIGFuZCB0aGUga2V5IG5hbWUgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUKK2Vudmlyb25tZW50IHZhcmlhYmxlcyB3aXRob3V0IHRoZSBsZWFkaW5nIGBgUFlfYGAgcHJlZml4IChhbmQgbm90ZSB0aGF0Cit0aGUga2V5IG5hbWVzIGluIHRoZSBJTkkgZmlsZSBhcmUgY2FzZSBpbnNlbnNpdGl2ZS4pICBUaGUgY29udGVudHMgb2YKK2FuIGVudmlyb25tZW50IHZhcmlhYmxlIHdpbGwgb3ZlcnJpZGUgdGhpbmdzIHNwZWNpZmllZCBpbiB0aGUgSU5JIGZpbGUuCisKK0ZvciBleGFtcGxlOgorCisqIFNldHRpbmcgYGBQWV9QWVRIT049My4xYGAgaXMgZXF1aXZhbGVudCB0byB0aGUgSU5JIGZpbGUgY29udGFpbmluZzoKKworOjoKKworICBbZGVmYXVsdHNdCisgIHB5dGhvbj0zLjEKKworKiBTZXR0aW5nIGBgUFlfUFlUSE9OPTNgYCBhbmQgYGBQWV9QWVRIT04zPTMuMWBgIGlzIGVxdWl2YWxlbnQgdG8gdGhlIElOSSBmaWxlCisgIGNvbnRhaW5pbmc6CisKKzo6CisKKyAgW2RlZmF1bHRzXQorICBweXRob249MworICBweXRob24zPTMuMQorCitEaWFnbm9zdGljcworLS0tLS0tLS0tLS0KKworSWYgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgYGBQWUxBVU5DSF9ERUJVR2BgIGlzIHNldCAodG8gYW55IHZhbHVlKSwgdGhlCitsYXVuY2hlciB3aWxsIHByaW50IGRpYWdub3N0aWMgaW5mb3JtYXRpb24gdG8gc3RkZXJyIChpLmUuIHRvIHRoZSBjb25zb2xlKS4KK1doaWxlIHRoaXMgaW5mb3JtYXRpb24gbWFuYWdlcyB0byBiZSBzaW11bHRhbmVvdXNseSB2ZXJib3NlICphbmQqIHRlcnNlLCBpdAorc2hvdWxkIGFsbG93IHlvdSB0byBzZWUgd2hhdCB2ZXJzaW9ucyBvZiBQeXRob24gd2VyZSBsb2NhdGVkLCB3aHkgYQorcGFydGljdWxhciB2ZXJzaW9uIHdhcyBjaG9zZW4gYW5kIHRoZSBleGFjdCBjb21tYW5kLWxpbmUgdXNlZCB0byBleGVjdXRlIHRoZQordGFyZ2V0IFB5dGhvbi4KKworCiBBZGRpdGlvbmFsIG1vZHVsZXMKID09PT09PT09PT09PT09PT09PQogCkBAIC0zNDMsMyArNjA1LDcgQEAKICAgIGBBIFB5dGhvbiBmb3IgV2luZG93cyBUdXRvcmlhbCA8aHR0cDovL3d3dy5pbWxhZHJpcy5jb20vU2NyaXB0cy9QeXRob25Gb3JXaW5kb3dzLmh0bWw+YF8KICAgICAgIGJ5IEFtYW5kYSBCaXJtaW5naGFtLCAyMDA0CiAKKyAgIDpwZXA6YDM5N2AgLSBQeXRob24gbGF1bmNoZXIgZm9yIFdpbmRvd3MKKyAgICAgIFRoZSBwcm9wb3NhbCBmb3IgdGhlIGxhdW5jaGVyIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBQeXRob24gZGlzdHJpYnV0aW9uLgorCisKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8yLjAucnN0IGIvRG9jL3doYXRzbmV3LzIuMC5yc3QKaW5kZXggODUwZTU3ZC4uNjRiOTA4YiAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzIuMC5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzIuMC5yc3QKQEAgLTE2Niw3ICsxNjYsNyBAQAogcmVnaXN0ZXJpbmcgbmV3IGVuY29kaW5ncyB0aGF0IGFyZSB0aGVuIGF2YWlsYWJsZSB0aHJvdWdob3V0IGEgUHl0aG9uIHByb2dyYW0uCiBJZiBhbiBlbmNvZGluZyBpc24ndCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGVuY29kaW5nIGlzIHVzdWFsbHkgNy1iaXQgQVNDSUksCiB0aG91Z2ggaXQgY2FuIGJlIGNoYW5nZWQgZm9yIHlvdXIgUHl0aG9uIGluc3RhbGxhdGlvbiBieSBjYWxsaW5nIHRoZQotOmZ1bmM6YHN5cy5zZXRkZWZhdWx0ZW5jb2RpbmcoZW5jb2RpbmcpYCBmdW5jdGlvbiBpbiBhIGN1c3RvbWlzZWQgdmVyc2lvbiBvZgorYGBzeXMuc2V0ZGVmYXVsdGVuY29kaW5nKGVuY29kaW5nKWBgIGZ1bmN0aW9uIGluIGEgY3VzdG9taXNlZCB2ZXJzaW9uIG9mCiA6ZmlsZTpgc2l0ZS5weWAuCiAKIENvbWJpbmluZyA4LWJpdCBhbmQgVW5pY29kZSBzdHJpbmdzIGFsd2F5cyBjb2VyY2VzIHRvIFVuaWNvZGUsIHVzaW5nIHRoZSBkZWZhdWx0CkBAIC0yMDMsNyArMjAzLDcgQEAKIAogVGhlIDptb2Q6YGNvZGVjc2AgbW9kdWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyB0byBsb29rIHVwIGV4aXN0aW5nIGVuY29kaW5ncyBhbmQKIHJlZ2lzdGVyIG5ldyBvbmVzLiAgVW5sZXNzIHlvdSB3YW50IHRvIGltcGxlbWVudCBhIG5ldyBlbmNvZGluZywgeW91J2xsIG1vc3QKLW9mdGVuIHVzZSB0aGUgOmZ1bmM6YGNvZGVjcy5sb29rdXAoZW5jb2RpbmcpYCBmdW5jdGlvbiwgd2hpY2ggcmV0dXJucyBhCitvZnRlbiB1c2UgdGhlIGBgY29kZWNzLmxvb2t1cChlbmNvZGluZylgYCBmdW5jdGlvbiwgd2hpY2ggcmV0dXJucyBhCiA0LWVsZW1lbnQgdHVwbGU6IGBgKGVuY29kZV9mdW5jLCBkZWNvZGVfZnVuYywgc3RyZWFtX3JlYWRlciwgc3RyZWFtX3dyaXRlcilgYC4KIAogKiAqZW5jb2RlX2Z1bmMqIGlzIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIFVuaWNvZGUgc3RyaW5nLCBhbmQgcmV0dXJucyBhIDItdHVwbGUKQEAgLTYwMCw3ICs2MDAsNyBAQAogQ2hhbmdlcyB0byBCdWlsdC1pbiBGdW5jdGlvbnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUEgbmV3IGJ1aWx0LWluLCA6ZnVuYzpgemlwKHNlcTEsIHNlcTIsIC4uLilgLCBoYXMgYmVlbiBhZGRlZC4gIDpmdW5jOmB6aXBgCitBIG5ldyBidWlsdC1pbiwgYGB6aXAoc2VxMSwgc2VxMiwgLi4uKWBgLCBoYXMgYmVlbiBhZGRlZC4gIDpmdW5jOmB6aXBgCiByZXR1cm5zIGEgbGlzdCBvZiB0dXBsZXMgd2hlcmUgZWFjaCB0dXBsZSBjb250YWlucyB0aGUgaS10aCBlbGVtZW50IGZyb20gZWFjaCBvZgogdGhlIGFyZ3VtZW50IHNlcXVlbmNlcy4gIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gOmZ1bmM6YHppcGAgYW5kIGBgbWFwKE5vbmUsCiBzZXExLCBzZXEyKWBgIGlzIHRoYXQgOmZ1bmM6YG1hcGAgcGFkcyB0aGUgc2VxdWVuY2VzIHdpdGggYGBOb25lYGAgaWYgdGhlCkBAIC02MTksNyArNjE5LDcgQEAKIHdvdWxkIGJlIGBgKDIsIDAsIDEsICdiZXRhJywgMSlgYC4gKmxldmVsKiBpcyBhIHN0cmluZyBzdWNoIGFzIGBgImFscGhhImBgLAogYGAiYmV0YSJgYCwgb3IgYGAiZmluYWwiYGAgZm9yIGEgZmluYWwgcmVsZWFzZS4KIAotRGljdGlvbmFyaWVzIGhhdmUgYW4gb2RkIG5ldyBtZXRob2QsIDptZXRoOmBzZXRkZWZhdWx0KGtleSwgZGVmYXVsdClgLCB3aGljaAorRGljdGlvbmFyaWVzIGhhdmUgYW4gb2RkIG5ldyBtZXRob2QsIGBgc2V0ZGVmYXVsdChrZXksIGRlZmF1bHQpYGAsIHdoaWNoCiBiZWhhdmVzIHNpbWlsYXJseSB0byB0aGUgZXhpc3RpbmcgOm1ldGg6YGdldGAgbWV0aG9kLiAgSG93ZXZlciwgaWYgdGhlIGtleSBpcwogbWlzc2luZywgOm1ldGg6YHNldGRlZmF1bHRgIGJvdGggcmV0dXJucyB0aGUgdmFsdWUgb2YgKmRlZmF1bHQqIGFzIDptZXRoOmBnZXRgCiB3b3VsZCBkbywgYW5kIGFsc28gaW5zZXJ0cyBpdCBpbnRvIHRoZSBkaWN0aW9uYXJ5IGFzIHRoZSB2YWx1ZSBmb3IgKmtleSouICBUaHVzLApAQCAtMTAzOCw3ICsxMDM4LDcgQEAKIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTZWN1cmUgU29ja2V0IExheWVyLCB3aGljaCBlbmNyeXB0cyB0aGUgZGF0YSBiZWluZwogc2VudCBvdmVyIGEgc29ja2V0LiAgV2hlbiBjb21waWxpbmcgUHl0aG9uLCB5b3UgY2FuIGVkaXQgOmZpbGU6YE1vZHVsZXMvU2V0dXBgCiB0byBpbmNsdWRlIFNTTCBzdXBwb3J0LCB3aGljaCBhZGRzIGFuIGFkZGl0aW9uYWwgZnVuY3Rpb24gdG8gdGhlIDptb2Q6YHNvY2tldGAKLW1vZHVsZTogOmZ1bmM6YHNvY2tldC5zc2woc29ja2V0LCBrZXlmaWxlLCBjZXJ0ZmlsZSlgLCB3aGljaCB0YWtlcyBhIHNvY2tldAorbW9kdWxlOiBgYHNvY2tldC5zc2woc29ja2V0LCBrZXlmaWxlLCBjZXJ0ZmlsZSlgYCwgd2hpY2ggdGFrZXMgYSBzb2NrZXQKIG9iamVjdCBhbmQgcmV0dXJucyBhbiBTU0wgc29ja2V0LiAgVGhlIDptb2Q6YGh0dHBsaWJgIGFuZCA6bW9kOmB1cmxsaWJgIG1vZHVsZXMKIHdlcmUgYWxzbyBjaGFuZ2VkIHRvIHN1cHBvcnQgYGBodHRwczovL2BgIFVSTHMsIHRob3VnaCBubyBvbmUgaGFzIGltcGxlbWVudGVkCiBGVFAgb3IgU01UUCBvdmVyIFNTTC4KZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8yLjEucnN0IGIvRG9jL3doYXRzbmV3LzIuMS5yc3QKaW5kZXggMTE3YWYxMC4uYjFhYjQ4ZSAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzIuMS5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzIuMS5yc3QKQEAgLTIwNCw3ICsyMDQsNyBAQAogbGlzdCwgb3IgYW55IG90aGVyIFB5dGhvbiBvYmplY3QuICBBbHRlcm5hdGl2ZWx5IHRoZXkgY2FuIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZgogdGhlIGNvbXBhcmlzb24gaXMgaW1wb3NzaWJsZSwgaW5jb25zaXN0ZW50LCBvciBvdGhlcndpc2UgbWVhbmluZ2xlc3MuCiAKLVRoZSBidWlsdC1pbiA6ZnVuYzpgY21wKEEsQilgIGZ1bmN0aW9uIGNhbiB1c2UgdGhlIHJpY2ggY29tcGFyaXNvbiBtYWNoaW5lcnksCitUaGUgYnVpbHQtaW4gYGBjbXAoQSxCKWBgIGZ1bmN0aW9uIGNhbiB1c2UgdGhlIHJpY2ggY29tcGFyaXNvbiBtYWNoaW5lcnksCiBhbmQgbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwgYXJndW1lbnQgc3BlY2lmeWluZyB3aGljaCBjb21wYXJpc29uIG9wZXJhdGlvbiB0bwogdXNlOyB0aGlzIGlzIGdpdmVuIGFzIG9uZSBvZiB0aGUgc3RyaW5ncyBgYCI8ImBgLCBgYCI8PSJgYCwgYGAiPiJgYCwgYGAiPj0iYGAsCiBgYCI9PSJgYCwgb3IgYGAiIT0iYGAuICBJZiBjYWxsZWQgd2l0aG91dCB0aGUgb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQsCkBAIC0zNTAsNyArMzUwLDcgQEAKIGFuZCBhbm90aGVyIGJlaW5nIGNpcmN1bGFyIHJlZmVyZW5jZXMgaW4gZGF0YSBzdHJ1Y3R1cmVzIHN1Y2ggYXMgdHJlZXMuCiAKIEZvciBleGFtcGxlLCBjb25zaWRlciBhIG1lbW9pemluZyBmdW5jdGlvbiB0aGF0IGNhY2hlcyB0aGUgcmVzdWx0cyBvZiBhbm90aGVyCi1mdW5jdGlvbiA6ZnVuYzpgZih4KWAgYnkgc3RvcmluZyB0aGUgZnVuY3Rpb24ncyBhcmd1bWVudCBhbmQgaXRzIHJlc3VsdCBpbiBhCitmdW5jdGlvbiBgYGYoeClgYCBieSBzdG9yaW5nIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50IGFuZCBpdHMgcmVzdWx0IGluIGEKIGRpY3Rpb25hcnk6OgogCiAgICBfY2FjaGUgPSB7fQpAQCAtNjU2LDcgKzY1Niw3IEBACiAgIHVzZSA6bW9kOmBmdHBsaWJgIHRvIHJldHJpZXZlIGZpbGVzIGFuZCB0aGVuIGRvbid0IHdvcmsgZnJvbSBiZWhpbmQgYSBmaXJld2FsbC4KICAgSXQncyBkZWVtZWQgdW5saWtlbHkgdGhhdCB0aGlzIHdpbGwgY2F1c2UgcHJvYmxlbXMgZm9yIGFueW9uZSwgYmVjYXVzZSBOZXRzY2FwZQogICBkZWZhdWx0cyB0byBwYXNzaXZlIG1vZGUgYW5kIGZldyBwZW9wbGUgY29tcGxhaW4sIGJ1dCBpZiBwYXNzaXZlIG1vZGUgaXMKLSAgdW5zdWl0YWJsZSBmb3IgeW91ciBhcHBsaWNhdGlvbiBvciBuZXR3b3JrIHNldHVwLCBjYWxsIDptZXRoOmBzZXRfcGFzdigwKWAgb24KKyAgdW5zdWl0YWJsZSBmb3IgeW91ciBhcHBsaWNhdGlvbiBvciBuZXR3b3JrIHNldHVwLCBjYWxsIGBgc2V0X3Bhc3YoMClgYCBvbgogICBGVFAgb2JqZWN0cyB0byBkaXNhYmxlIHBhc3NpdmUgbW9kZS4KIAogKiBTdXBwb3J0IGZvciByYXcgc29ja2V0IGFjY2VzcyBoYXMgYmVlbiBhZGRlZCB0byB0aGUgOm1vZDpgc29ja2V0YCBtb2R1bGUsCkBAIC02NjYsNyArNjY2LDcgQEAKICAgZm9yIGRpc3BsYXlpbmcgdGltaW5nIHByb2ZpbGVzIGZvciBQeXRob24gcHJvZ3JhbXMsIGludm9rZWQgd2hlbiB0aGUgbW9kdWxlIGlzCiAgIHJ1biBhcyBhIHNjcmlwdC4gIENvbnRyaWJ1dGVkIGJ5ICBFcmljIFMuIFJheW1vbmQuCiAKLSogQSBuZXcgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50IGZ1bmN0aW9uLCA6ZnVuYzpgc3lzLl9nZXRmcmFtZShbZGVwdGhdKWAsIGhhcworKiBBIG5ldyBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQgZnVuY3Rpb24sIGBgc3lzLl9nZXRmcmFtZShbZGVwdGhdKWBgLCBoYXMKICAgYmVlbiBhZGRlZCB0byByZXR1cm4gYSBnaXZlbiBmcmFtZSBvYmplY3QgZnJvbSB0aGUgY3VycmVudCBjYWxsIHN0YWNrLgogICA6ZnVuYzpgc3lzLl9nZXRmcmFtZWAgcmV0dXJucyB0aGUgZnJhbWUgYXQgdGhlIHRvcCBvZiB0aGUgY2FsbCBzdGFjazsgIGlmIHRoZQogICBvcHRpb25hbCBpbnRlZ2VyIGFyZ3VtZW50ICpkZXB0aCogaXMgc3VwcGxpZWQsIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBmcmFtZQpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzIuMi5yc3QgYi9Eb2Mvd2hhdHNuZXcvMi4yLnJzdAppbmRleCAxZGIxZWU3Li4yZTcwNjlkIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMi4yLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMi4yLnJzdApAQCAtMTczLDEyICsxNzMsMTIgQEAKIAogKiA6YXR0cjpgX19kb2NfX2AgaXMgdGhlIGF0dHJpYnV0ZSdzIGRvY3N0cmluZy4KIAotKiA6bWV0aDpgX19nZXRfXyhvYmplY3QpYCBpcyBhIG1ldGhvZCB0aGF0IHJldHJpZXZlcyB0aGUgYXR0cmlidXRlIHZhbHVlIGZyb20KKyogYGBfX2dldF9fKG9iamVjdClgYCBpcyBhIG1ldGhvZCB0aGF0IHJldHJpZXZlcyB0aGUgYXR0cmlidXRlIHZhbHVlIGZyb20KICAgKm9iamVjdCouCiAKLSogOm1ldGg6YF9fc2V0X18ob2JqZWN0LCB2YWx1ZSlgIHNldHMgdGhlIGF0dHJpYnV0ZSBvbiAqb2JqZWN0KiB0byAqdmFsdWUqLgorKiBgYF9fc2V0X18ob2JqZWN0LCB2YWx1ZSlgYCBzZXRzIHRoZSBhdHRyaWJ1dGUgb24gKm9iamVjdCogdG8gKnZhbHVlKi4KIAotKiA6bWV0aDpgX19kZWxldGVfXyhvYmplY3QsIHZhbHVlKWAgZGVsZXRlcyB0aGUgKnZhbHVlKiAgYXR0cmlidXRlIG9mICpvYmplY3QqLgorKiBgYF9fZGVsZXRlX18ob2JqZWN0LCB2YWx1ZSlgYCBkZWxldGVzIHRoZSAqdmFsdWUqICBhdHRyaWJ1dGUgb2YgKm9iamVjdCouCiAKIEZvciBleGFtcGxlLCB3aGVuIHlvdSB3cml0ZSBgYG9iai54YGAsIHRoZSBzdGVwcyB0aGF0IFB5dGhvbiBhY3R1YWxseSBwZXJmb3JtcwogYXJlOjoKQEAgLTI4OCw3ICsyODgsNyBAQAogd2hpY2ggaXMgdGhlIGJlaGF2aW91ciB3ZSdyZSBhZnRlci4gIFRoaXMgbG9va3VwIHJ1bGUgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZQogZm9sbG93ZWQgYnkgQ29tbW9uIExpc3AuICBBIG5ldyBidWlsdC1pbiBmdW5jdGlvbiwgOmZ1bmM6YHN1cGVyYCwgcHJvdmlkZXMgYSB3YXkKIHRvIGdldCBhdCBhIGNsYXNzJ3Mgc3VwZXJjbGFzc2VzIHdpdGhvdXQgaGF2aW5nIHRvIHJlaW1wbGVtZW50IFB5dGhvbidzCi1hbGdvcml0aG0uIFRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZm9ybSB3aWxsIGJlICA6ZnVuYzpgc3VwZXIoY2xhc3MsIG9iailgLCB3aGljaAorYWxnb3JpdGhtLiBUaGUgbW9zdCBjb21tb25seSB1c2VkIGZvcm0gd2lsbCBiZSAgYGBzdXBlcihjbGFzcywgb2JqKWBgLCB3aGljaAogcmV0dXJucyAgYSBib3VuZCBzdXBlcmNsYXNzIG9iamVjdCAobm90IHRoZSBhY3R1YWwgY2xhc3Mgb2JqZWN0KS4gIFRoaXMgZm9ybQogd2lsbCBiZSB1c2VkIGluIG1ldGhvZHMgdG8gY2FsbCBhIG1ldGhvZCBpbiB0aGUgc3VwZXJjbGFzczsgZm9yIGV4YW1wbGUsCiA6Y2xhc3M6YERgJ3MgOm1ldGg6YHNhdmVgIG1ldGhvZCB3b3VsZCBsb29rIGxpa2UgdGhpczo6CkBAIC0zMDEsNyArMzAxLDcgQEAKICAgICAgICAgICAgLi4uCiAKIDpmdW5jOmBzdXBlcmAgY2FuIGFsc28gcmV0dXJuIHVuYm91bmQgc3VwZXJjbGFzcyBvYmplY3RzIHdoZW4gY2FsbGVkIGFzCi06ZnVuYzpgc3VwZXIoY2xhc3MpYCBvciA6ZnVuYzpgc3VwZXIoY2xhc3MxLCBjbGFzczIpYCwgYnV0IHRoaXMgcHJvYmFibHkgd29uJ3QKK2Bgc3VwZXIoY2xhc3MpYGAgb3IgYGBzdXBlcihjbGFzczEsIGNsYXNzMilgYCwgYnV0IHRoaXMgcHJvYmFibHkgd29uJ3QKIG9mdGVuIGJlIHVzZWZ1bC4KIAogCkBAIC0zMTQsMTMgKzMxNCwxMyBAQAogYGBvYmoucGFyZW50YGAgaW50byBhIG1ldGhvZCBjYWxsIHN1Y2ggYXMgYGBvYmouZ2V0X3BhcmVudGBgLiAgUHl0aG9uIDIuMiBhZGRzCiBzb21lIG5ldyB3YXlzIG9mIGNvbnRyb2xsaW5nIGF0dHJpYnV0ZSBhY2Nlc3MuCiAKLUZpcnN0LCA6bWV0aDpgX19nZXRhdHRyX18oYXR0cl9uYW1lKWAgaXMgc3RpbGwgc3VwcG9ydGVkIGJ5IG5ldy1zdHlsZSBjbGFzc2VzLAorRmlyc3QsIGBgX19nZXRhdHRyX18oYXR0cl9uYW1lKWBgIGlzIHN0aWxsIHN1cHBvcnRlZCBieSBuZXctc3R5bGUgY2xhc3NlcywKIGFuZCBub3RoaW5nIGFib3V0IGl0IGhhcyBjaGFuZ2VkLiAgQXMgYmVmb3JlLCBpdCB3aWxsIGJlIGNhbGxlZCB3aGVuIGFuIGF0dGVtcHQKIGlzIG1hZGUgdG8gYWNjZXNzIGBgb2JqLmZvb2BgIGFuZCBubyBhdHRyaWJ1dGUgbmFtZWQgYGBmb29gYCBpcyBmb3VuZCBpbiB0aGUKIGluc3RhbmNlJ3MgZGljdGlvbmFyeS4KIAogTmV3LXN0eWxlIGNsYXNzZXMgYWxzbyBzdXBwb3J0IGEgbmV3IG1ldGhvZCwKLTptZXRoOmBfX2dldGF0dHJpYnV0ZV9fKGF0dHJfbmFtZSlgLiAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIG1ldGhvZHMgaXMKK2BgX19nZXRhdHRyaWJ1dGVfXyhhdHRyX25hbWUpYGAuICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gbWV0aG9kcyBpcwogdGhhdCA6bWV0aDpgX19nZXRhdHRyaWJ1dGVfX2AgaXMgKmFsd2F5cyogY2FsbGVkIHdoZW5ldmVyIGFueSBhdHRyaWJ1dGUgaXMKIGFjY2Vzc2VkLCB3aGlsZSB0aGUgb2xkIDptZXRoOmBfX2dldGF0dHJfX2AgaXMgb25seSBjYWxsZWQgaWYgYGBmb29gYCBpc24ndAogZm91bmQgaW4gdGhlIGluc3RhbmNlJ3MgZGljdGlvbmFyeS4KQEAgLTQ0MSw4ICs0NDEsOCBAQAogCiBJbiBQeXRob24gMi4yLCBpdGVyYXRpb24gY2FuIGJlIGltcGxlbWVudGVkIHNlcGFyYXRlbHksIGFuZCA6bWV0aDpgX19nZXRpdGVtX19gCiBtZXRob2RzIGNhbiBiZSBsaW1pdGVkIHRvIGNsYXNzZXMgdGhhdCByZWFsbHkgZG8gc3VwcG9ydCByYW5kb20gYWNjZXNzLiAgVGhlCi1iYXNpYyBpZGVhIG9mIGl0ZXJhdG9ycyBpcyAgc2ltcGxlLiAgQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIDpmdW5jOmBpdGVyKG9iailgCi1vciBgYGl0ZXIoQywgc2VudGluZWwpYGAsIGlzIHVzZWQgdG8gZ2V0IGFuIGl0ZXJhdG9yLiA6ZnVuYzpgaXRlcihvYmopYCByZXR1cm5zCitiYXNpYyBpZGVhIG9mIGl0ZXJhdG9ycyBpcyAgc2ltcGxlLiAgQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIGBgaXRlcihvYmopYGAKK29yIGBgaXRlcihDLCBzZW50aW5lbClgYCwgaXMgdXNlZCB0byBnZXQgYW4gaXRlcmF0b3IuIGBgaXRlcihvYmopYGAgcmV0dXJucwogYW4gaXRlcmF0b3IgZm9yIHRoZSBvYmplY3QgKm9iaiosIHdoaWxlIGBgaXRlcihDLCBzZW50aW5lbClgYCByZXR1cm5zIGFuCiBpdGVyYXRvciB0aGF0IHdpbGwgaW52b2tlIHRoZSBjYWxsYWJsZSBvYmplY3QgKkMqIHVudGlsIGl0IHJldHVybnMgKnNlbnRpbmVsKiB0bwogc2lnbmFsIHRoYXQgdGhlIGl0ZXJhdG9yIGlzIGRvbmUuCkBAIC03OTMsNyArNzkzLDcgQEAKIAogQW5vdGhlciBjaGFuZ2UgaXMgc2ltcGxlciB0byBleHBsYWluLiBTaW5jZSB0aGVpciBpbnRyb2R1Y3Rpb24sIFVuaWNvZGUgc3RyaW5ncwogaGF2ZSBzdXBwb3J0ZWQgYW4gOm1ldGg6YGVuY29kZWAgbWV0aG9kIHRvIGNvbnZlcnQgdGhlIHN0cmluZyB0byBhIHNlbGVjdGVkCi1lbmNvZGluZyBzdWNoIGFzIFVURi04IG9yIExhdGluLTEuICBBIHN5bW1ldHJpYyA6bWV0aDpgZGVjb2RlKFsqZW5jb2RpbmcqXSlgCitlbmNvZGluZyBzdWNoIGFzIFVURi04IG9yIExhdGluLTEuICBBIHN5bW1ldHJpYyBgYGRlY29kZShbKmVuY29kaW5nKl0pYGAKIG1ldGhvZCBoYXMgYmVlbiBhZGRlZCB0byA4LWJpdCBzdHJpbmdzICh0aG91Z2ggbm90IHRvIFVuaWNvZGUgc3RyaW5ncykgaW4gMi4yLgogOm1ldGg6YGRlY29kZWAgYXNzdW1lcyB0aGF0IHRoZSBzdHJpbmcgaXMgaW4gdGhlIHNwZWNpZmllZCBlbmNvZGluZyBhbmQgZGVjb2RlcwogaXQsIHJldHVybmluZyB3aGF0ZXZlciBpcyByZXR1cm5lZCBieSB0aGUgY29kZWMuCkBAIC0xMjAzLDcgKzEyMDMsNyBAQAogICB0byBhbiBNQkNTIGVuY29kZWQgc3RyaW5nLCBhcyB1c2VkIGJ5IHRoZSBNaWNyb3NvZnQgZmlsZSBBUElzLiAgQXMgTUJDUyBpcwogICBleHBsaWNpdGx5IHVzZWQgYnkgdGhlIGZpbGUgQVBJcywgUHl0aG9uJ3MgY2hvaWNlIG9mIEFTQ0lJIGFzIHRoZSBkZWZhdWx0CiAgIGVuY29kaW5nIHR1cm5zIG91dCB0byBiZSBhbiBhbm5veWFuY2UuICBPbiBVbml4LCB0aGUgbG9jYWxlJ3MgY2hhcmFjdGVyIHNldCBpcwotICB1c2VkIGlmIDpmdW5jOmBsb2NhbGUubmxfbGFuZ2luZm8oQ09ERVNFVClgIGlzIGF2YWlsYWJsZS4gIChXaW5kb3dzIHN1cHBvcnQgd2FzCisgIHVzZWQgaWYgYGBsb2NhbGUubmxfbGFuZ2luZm8oQ09ERVNFVClgYCBpcyBhdmFpbGFibGUuICAoV2luZG93cyBzdXBwb3J0IHdhcwogICBjb250cmlidXRlZCBieSBNYXJrIEhhbW1vbmQgd2l0aCBhc3Npc3RhbmNlIGZyb20gTWFyYy1BbmRyw6kgTGVtYnVyZy4gVW5peAogICBzdXBwb3J0IHdhcyBhZGRlZCBieSBNYXJ0aW4gdm9uIEzDtndpcy4pCiAKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8yLjMucnN0IGIvRG9jL3doYXRzbmV3LzIuMy5yc3QKaW5kZXggZjRjNzllNC4uZjBlNDhkOSAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzIuMy5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzIuMy5yc3QKQEAgLTUwNCw4ICs1MDQsOCBAQAogICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludGVnZXIgZGl2aXNpb24gb3IgbW9kdWxvIGJ5IHplcm8KIAogU2xpZ2h0bHkgbW9yZSBhZHZhbmNlZCBwcm9ncmFtcyB3aWxsIHVzZSBhIGxvZ2dlciBvdGhlciB0aGFuIHRoZSByb290IGxvZ2dlci4KLVRoZSA6ZnVuYzpgZ2V0TG9nZ2VyKG5hbWUpYCBmdW5jdGlvbiBpcyB1c2VkIHRvIGdldCBhIHBhcnRpY3VsYXIgbG9nLCBjcmVhdGluZwotaXQgaWYgaXQgZG9lc24ndCBleGlzdCB5ZXQuIDpmdW5jOmBnZXRMb2dnZXIoTm9uZSlgIHJldHVybnMgdGhlIHJvb3QgbG9nZ2VyLiA6OgorVGhlIGBgZ2V0TG9nZ2VyKG5hbWUpYGAgZnVuY3Rpb24gaXMgdXNlZCB0byBnZXQgYSBwYXJ0aWN1bGFyIGxvZywgY3JlYXRpbmcKK2l0IGlmIGl0IGRvZXNuJ3QgZXhpc3QgeWV0LiBgYGdldExvZ2dlcihOb25lKWBgIHJldHVybnMgdGhlIHJvb3QgbG9nZ2VyLiA6OgogCiAgICBsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignc2VydmVyJykKICAgICAuLi4KQEAgLTcyNCwxMCArNzI0LDEwIEBACiAgIG9iamVjdHMgdG8gaXQuICBBZGRpdGlvbmFsIGJ1aWx0LWluIGFuZCBmcm96ZW4gbW9kdWxlcyBjYW4gYmUgaW1wb3J0ZWQgYnkgYW4KICAgb2JqZWN0IGFkZGVkIHRvIHRoaXMgbGlzdC4KIAotSW1wb3J0ZXIgb2JqZWN0cyBtdXN0IGhhdmUgYSBzaW5nbGUgbWV0aG9kLCA6bWV0aDpgZmluZF9tb2R1bGUoZnVsbG5hbWUsCi1wYXRoPU5vbmUpYC4gICpmdWxsbmFtZSogd2lsbCBiZSBhIG1vZHVsZSBvciBwYWNrYWdlIG5hbWUsIGUuZy4gYGBzdHJpbmdgYCBvcgorSW1wb3J0ZXIgb2JqZWN0cyBtdXN0IGhhdmUgYSBzaW5nbGUgbWV0aG9kLCBgYGZpbmRfbW9kdWxlKGZ1bGxuYW1lLAorcGF0aD1Ob25lKWBgLiAgKmZ1bGxuYW1lKiB3aWxsIGJlIGEgbW9kdWxlIG9yIHBhY2thZ2UgbmFtZSwgZS5nLiBgYHN0cmluZ2BgIG9yCiBgYGRpc3R1dGlscy5jb3JlYGAuICA6bWV0aDpgZmluZF9tb2R1bGVgIG11c3QgcmV0dXJuIGEgbG9hZGVyIG9iamVjdCB0aGF0IGhhcyBhCi1zaW5nbGUgbWV0aG9kLCA6bWV0aDpgbG9hZF9tb2R1bGUoZnVsbG5hbWUpYCwgdGhhdCBjcmVhdGVzIGFuZCByZXR1cm5zIHRoZQorc2luZ2xlIG1ldGhvZCwgYGBsb2FkX21vZHVsZShmdWxsbmFtZSlgYCwgdGhhdCBjcmVhdGVzIGFuZCByZXR1cm5zIHRoZQogY29ycmVzcG9uZGluZyBtb2R1bGUgb2JqZWN0LgogCiBQc2V1ZG8tY29kZSBmb3IgUHl0aG9uJ3MgbmV3IGltcG9ydCBsb2dpYywgdGhlcmVmb3JlLCBsb29rcyBzb21ldGhpbmcgbGlrZSB0aGlzCkBAIC05MzUsNyArOTM1LDcgQEAKICAgIFswLCAyLCA0XQogCiBUbyBzaW1wbGlmeSBpbXBsZW1lbnRpbmcgc2VxdWVuY2VzIHRoYXQgc3VwcG9ydCBleHRlbmRlZCBzbGljaW5nLCBzbGljZSBvYmplY3RzCi1ub3cgaGF2ZSBhIG1ldGhvZCA6bWV0aDpgaW5kaWNlcyhsZW5ndGgpYCB3aGljaCwgZ2l2ZW4gdGhlIGxlbmd0aCBvZiBhIHNlcXVlbmNlLAorbm93IGhhdmUgYSBtZXRob2QgYGBpbmRpY2VzKGxlbmd0aClgYCB3aGljaCwgZ2l2ZW4gdGhlIGxlbmd0aCBvZiBhIHNlcXVlbmNlLAogcmV0dXJucyBhIGBgKHN0YXJ0LCBzdG9wLCBzdGVwKWBgIHR1cGxlIHRoYXQgY2FuIGJlIHBhc3NlZCBkaXJlY3RseSB0bwogOmZ1bmM6YHJhbmdlYC4gOm1ldGg6YGluZGljZXNgIGhhbmRsZXMgb21pdHRlZCBhbmQgb3V0LW9mLWJvdW5kcyBpbmRpY2VzIGluIGEKIG1hbm5lciBjb25zaXN0ZW50IHdpdGggcmVndWxhciBzbGljZXMgKGFuZCB0aGlzIGlubm9jdW91cyBwaHJhc2UgaGlkZXMgYSB3ZWx0ZXIKQEAgLTk4NCw3ICs5ODQsNyBAQAogKiBCdWlsdC1pbiB0eXBlcyBub3cgc3VwcG9ydCB0aGUgZXh0ZW5kZWQgc2xpY2luZyBzeW50YXgsIGFzIGRlc2NyaWJlZCBpbgogICBzZWN0aW9uIDpyZWY6YHNlY3Rpb24tc2xpY2VzYCBvZiB0aGlzIGRvY3VtZW50LgogCi0qIEEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uLCA6ZnVuYzpgc3VtKGl0ZXJhYmxlLCBzdGFydD0wKWAsICBhZGRzIHVwIHRoZSBudW1lcmljCisqIEEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uLCBgYHN1bShpdGVyYWJsZSwgc3RhcnQ9MClgYCwgIGFkZHMgdXAgdGhlIG51bWVyaWMKICAgaXRlbXMgaW4gdGhlIGl0ZXJhYmxlIG9iamVjdCBhbmQgcmV0dXJucyB0aGVpciBzdW0uICA6ZnVuYzpgc3VtYCBvbmx5IGFjY2VwdHMKICAgbnVtYmVycywgbWVhbmluZyB0aGF0IHlvdSBjYW4ndCB1c2UgaXQgdG8gY29uY2F0ZW5hdGUgYSBidW5jaCBvZiBzdHJpbmdzLgogICAoQ29udHJpYnV0ZWQgYnkgQWxleCBNYXJ0ZWxsaS4pCkBAIC05OTgsNyArOTk4LDcgQEAKICAgaXRzIGluZGV4LCBub3cgdGFrZXMgb3B0aW9uYWwgICpzdGFydCogYW5kICpzdG9wKiBhcmd1bWVudHMgdG8gbGltaXQgdGhlIHNlYXJjaAogICB0byAgb25seSBwYXJ0IG9mIHRoZSBsaXN0LgogCi0qIERpY3Rpb25hcmllcyBoYXZlIGEgbmV3IG1ldGhvZCwgOm1ldGg6YHBvcChrZXlbLCAqZGVmYXVsdCpdKWAsIHRoYXQgcmV0dXJucworKiBEaWN0aW9uYXJpZXMgaGF2ZSBhIG5ldyBtZXRob2QsIGBgcG9wKGtleVssICpkZWZhdWx0Kl0pYGAsIHRoYXQgcmV0dXJucwogICB0aGUgdmFsdWUgY29ycmVzcG9uZGluZyB0byAqa2V5KiBhbmQgcmVtb3ZlcyB0aGF0IGtleS92YWx1ZSBwYWlyIGZyb20gdGhlCiAgIGRpY3Rpb25hcnkuICBJZiB0aGUgcmVxdWVzdGVkIGtleSBpc24ndCBwcmVzZW50IGluIHRoZSBkaWN0aW9uYXJ5LCAqZGVmYXVsdCogaXMKICAgcmV0dXJuZWQgaWYgaXQncyBzcGVjaWZpZWQgYW5kIDpleGM6YEtleUVycm9yYCByYWlzZWQgaWYgaXQgaXNuJ3QuIDo6CkBAIC0xMDIwLDcgKzEwMjAsNyBAQAogICAgICB7fQogICAgICA+Pj4KIAotICBUaGVyZSdzIGFsc28gYSBuZXcgY2xhc3MgbWV0aG9kLCAgOm1ldGg6YGRpY3QuZnJvbWtleXMoaXRlcmFibGUsIHZhbHVlKWAsIHRoYXQKKyAgVGhlcmUncyBhbHNvIGEgbmV3IGNsYXNzIG1ldGhvZCwgIGBgZGljdC5mcm9ta2V5cyhpdGVyYWJsZSwgdmFsdWUpYGAsIHRoYXQKICAgY3JlYXRlcyBhIGRpY3Rpb25hcnkgd2l0aCBrZXlzIHRha2VuIGZyb20gdGhlIHN1cHBsaWVkIGl0ZXJhdG9yICppdGVyYWJsZSogYW5kCiAgIGFsbCB2YWx1ZXMgc2V0IHRvICp2YWx1ZSosIGRlZmF1bHRpbmcgdG8gYGBOb25lYGAuCiAKQEAgLTEwOTMsNyArMTA5Myw3IEBACiAgIDEwMCBieXRlY29kZXMsIHNwZWVkaW5nIHVwIHNpbmdsZS10aHJlYWRlZCBhcHBsaWNhdGlvbnMgYnkgcmVkdWNpbmcgdGhlCiAgIHN3aXRjaGluZyBvdmVyaGVhZC4gIFNvbWUgbXVsdGl0aHJlYWRlZCBhcHBsaWNhdGlvbnMgbWF5IHN1ZmZlciBzbG93ZXIgcmVzcG9uc2UKICAgdGltZSwgYnV0IHRoYXQncyBlYXNpbHkgZml4ZWQgYnkgc2V0dGluZyB0aGUgbGltaXQgYmFjayB0byBhIGxvd2VyIG51bWJlciB1c2luZwotICA6ZnVuYzpgc3lzLnNldGNoZWNraW50ZXJ2YWwoTilgLiBUaGUgbGltaXQgY2FuIGJlIHJldHJpZXZlZCB3aXRoIHRoZSBuZXcKKyAgYGBzeXMuc2V0Y2hlY2tpbnRlcnZhbChOKWBgLiBUaGUgbGltaXQgY2FuIGJlIHJldHJpZXZlZCB3aXRoIHRoZSBuZXcKICAgOmZ1bmM6YHN5cy5nZXRjaGVja2ludGVydmFsYCBmdW5jdGlvbi4KIAogKiBPbmUgbWlub3IgYnV0IGZhci1yZWFjaGluZyBjaGFuZ2UgaXMgdGhhdCB0aGUgbmFtZXMgb2YgZXh0ZW5zaW9uIHR5cGVzIGRlZmluZWQKQEAgLTEyNzIsMTAgKzEyNzIsMTAgQEAKIAogKiBQcmV2aW91c2x5IHRoZSA6bW9kOmBkb2N0ZXN0YCBtb2R1bGUgd291bGQgb25seSBzZWFyY2ggdGhlIGRvY3N0cmluZ3Mgb2YKICAgcHVibGljIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBmb3IgdGVzdCBjYXNlcywgYnV0IGl0IG5vdyBhbHNvIGV4YW1pbmVzIHByaXZhdGUKLSAgb25lcyBhcyB3ZWxsLiAgVGhlIDpmdW5jOmBEb2NUZXN0U3VpdGUoYCBmdW5jdGlvbiBjcmVhdGVzIGEKKyAgb25lcyBhcyB3ZWxsLiAgVGhlIDpmdW5jOmBEb2NUZXN0U3VpdGVgIGZ1bmN0aW9uIGNyZWF0ZXMgYQogICA6Y2xhc3M6YHVuaXR0ZXN0LlRlc3RTdWl0ZWAgb2JqZWN0IGZyb20gYSBzZXQgb2YgOm1vZDpgZG9jdGVzdGAgdGVzdHMuCiAKLSogVGhlIG5ldyA6ZnVuYzpgZ2MuZ2V0X3JlZmVyZW50cyhvYmplY3QpYCBmdW5jdGlvbiByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhlCisqIFRoZSBuZXcgYGBnYy5nZXRfcmVmZXJlbnRzKG9iamVjdClgYCBmdW5jdGlvbiByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhlCiAgIG9iamVjdHMgcmVmZXJlbmNlZCBieSAqb2JqZWN0Ki4KIAogKiBUaGUgOm1vZDpgZ2V0b3B0YCBtb2R1bGUgZ2FpbmVkIGEgbmV3IGZ1bmN0aW9uLCA6ZnVuYzpgZ251X2dldG9wdGAsIHRoYXQKQEAgLTEzNDcsOCArMTM0Nyw4IEBACiAgIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuCiAgIChDb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlci4pCiAKLSogVHdvIG5ldyBmdW5jdGlvbnMgaW4gdGhlIDptb2Q6YG1hdGhgIG1vZHVsZSwgOmZ1bmM6YGRlZ3JlZXMocmFkcylgIGFuZAotICA6ZnVuYzpgcmFkaWFucyhkZWdzKWAsIGNvbnZlcnQgYmV0d2VlbiByYWRpYW5zIGFuZCBkZWdyZWVzLiAgT3RoZXIgZnVuY3Rpb25zIGluCisqIFR3byBuZXcgZnVuY3Rpb25zIGluIHRoZSA6bW9kOmBtYXRoYCBtb2R1bGUsIGBgZGVncmVlcyhyYWRzKWBgIGFuZAorICBgYHJhZGlhbnMoZGVncylgYCwgY29udmVydCBiZXR3ZWVuIHJhZGlhbnMgYW5kIGRlZ3JlZXMuICBPdGhlciBmdW5jdGlvbnMgaW4KICAgdGhlIDptb2Q6YG1hdGhgIG1vZHVsZSBzdWNoIGFzIDpmdW5jOmBtYXRoLnNpbmAgYW5kIDpmdW5jOmBtYXRoLmNvc2AgaGF2ZSBhbHdheXMKICAgcmVxdWlyZWQgaW5wdXQgdmFsdWVzIG1lYXN1cmVkIGluIHJhZGlhbnMuICBBbHNvLCBhbiBvcHRpb25hbCAqYmFzZSogYXJndW1lbnQKICAgd2FzIGFkZGVkIHRvIDpmdW5jOmBtYXRoLmxvZ2AgdG8gbWFrZSBpdCBlYXNpZXIgdG8gY29tcHV0ZSBsb2dhcml0aG1zIGZvciBiYXNlcwpAQCAtMTQwNSw3ICsxNDA1LDcgQEAKICAgYW5kIHRoZXJlZm9yZSBmYXN0ZXIgcGVyZm9ybWFuY2UuICBTZXR0aW5nIHRoZSBwYXJzZXIgb2JqZWN0J3MKICAgOmF0dHI6YGJ1ZmZlcl90ZXh0YCBhdHRyaWJ1dGUgdG8gOmNvbnN0OmBUcnVlYCB3aWxsIGVuYWJsZSBidWZmZXJpbmcuCiAKLSogVGhlIDpmdW5jOmBzYW1wbGUocG9wdWxhdGlvbiwgaylgIGZ1bmN0aW9uIHdhcyBhZGRlZCB0byB0aGUgOm1vZDpgcmFuZG9tYAorKiBUaGUgYGBzYW1wbGUocG9wdWxhdGlvbiwgaylgYCBmdW5jdGlvbiB3YXMgYWRkZWQgdG8gdGhlIDptb2Q6YHJhbmRvbWAKICAgbW9kdWxlLiAgKnBvcHVsYXRpb24qIGlzIGEgc2VxdWVuY2Ugb3IgOmNsYXNzOmB4cmFuZ2VgIG9iamVjdCBjb250YWluaW5nIHRoZQogICBlbGVtZW50cyBvZiBhIHBvcHVsYXRpb24sIGFuZCA6ZnVuYzpgc2FtcGxlYCBjaG9vc2VzICprKiBlbGVtZW50cyBmcm9tIHRoZQogICBwb3B1bGF0aW9uIHdpdGhvdXQgcmVwbGFjaW5nIGNob3NlbiBlbGVtZW50cy4gICprKiBjYW4gYmUgYW55IHZhbHVlIHVwIHRvCkBAIC0xNDUxLDcgKzE0NTEsNyBAQAogICBlbmNyeXB0aW9uIGlzIG5vdCBiZWxpZXZlZCB0byBiZSBzZWN1cmUuICBJZiB5b3UgbmVlZCBlbmNyeXB0aW9uLCB1c2Ugb25lIG9mIHRoZQogICBzZXZlcmFsIEFFUyBQeXRob24gbW9kdWxlcyB0aGF0IGFyZSBhdmFpbGFibGUgc2VwYXJhdGVseS4KIAotKiBUaGUgOm1vZDpgc2h1dGlsYCBtb2R1bGUgZ2FpbmVkIGEgOmZ1bmM6YG1vdmUoc3JjLCBkZXN0KWAgZnVuY3Rpb24gdGhhdAorKiBUaGUgOm1vZDpgc2h1dGlsYCBtb2R1bGUgZ2FpbmVkIGEgYGBtb3ZlKHNyYywgZGVzdClgYCBmdW5jdGlvbiB0aGF0CiAgIHJlY3Vyc2l2ZWx5IG1vdmVzIGEgZmlsZSBvciBkaXJlY3RvcnkgdG8gYSBuZXcgbG9jYXRpb24uCiAKICogU3VwcG9ydCBmb3IgbW9yZSBhZHZhbmNlZCBQT1NJWCBzaWduYWwgaGFuZGxpbmcgd2FzIGFkZGVkIHRvIHRoZSA6bW9kOmBzaWduYWxgCkBAIC0xNDU5LDcgKzE0NTksNyBAQAogICBwbGF0Zm9ybXMuCiAKICogVGhlIDptb2Q6YHNvY2tldGAgbW9kdWxlIG5vdyBzdXBwb3J0cyB0aW1lb3V0cy4gIFlvdSBjYW4gY2FsbCB0aGUKLSAgOm1ldGg6YHNldHRpbWVvdXQodClgIG1ldGhvZCBvbiBhIHNvY2tldCBvYmplY3QgdG8gc2V0IGEgdGltZW91dCBvZiAqdCogc2Vjb25kcy4KKyAgYGBzZXR0aW1lb3V0KHQpYGAgbWV0aG9kIG9uIGEgc29ja2V0IG9iamVjdCB0byBzZXQgYSB0aW1lb3V0IG9mICp0KiBzZWNvbmRzLgogICBTdWJzZXF1ZW50IHNvY2tldCBvcGVyYXRpb25zIHRoYXQgdGFrZSBsb25nZXIgdGhhbiAqdCogc2Vjb25kcyB0byBjb21wbGV0ZSB3aWxsCiAgIGFib3J0IGFuZCByYWlzZSBhIDpleGM6YHNvY2tldC50aW1lb3V0YCBleGNlcHRpb24uCiAKQEAgLTE0ODAsOSArMTQ4MCw5IEBACiAgIDpwcm9ncmFtOmB0YXJgXCAtZm9ybWF0IGFyY2hpdmUgZmlsZXMuIChDb250cmlidXRlZCBieSBMYXJzIEd1c3TDpGJlbC4pCiAKICogVGhlIG5ldyA6bW9kOmB0ZXh0d3JhcGAgbW9kdWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyBmb3Igd3JhcHBpbmcgc3RyaW5ncwotICBjb250YWluaW5nIHBhcmFncmFwaHMgb2YgdGV4dC4gIFRoZSA6ZnVuYzpgd3JhcCh0ZXh0LCB3aWR0aClgIGZ1bmN0aW9uIHRha2VzIGEKKyAgY29udGFpbmluZyBwYXJhZ3JhcGhzIG9mIHRleHQuICBUaGUgYGB3cmFwKHRleHQsIHdpZHRoKWBgIGZ1bmN0aW9uIHRha2VzIGEKICAgc3RyaW5nIGFuZCByZXR1cm5zIGEgbGlzdCBjb250YWluaW5nIHRoZSB0ZXh0IHNwbGl0IGludG8gbGluZXMgb2Ygbm8gbW9yZSB0aGFuCi0gIHRoZSBjaG9zZW4gd2lkdGguICBUaGUgOmZ1bmM6YGZpbGwodGV4dCwgd2lkdGgpYCBmdW5jdGlvbiByZXR1cm5zIGEgc2luZ2xlCisgIHRoZSBjaG9zZW4gd2lkdGguICBUaGUgYGBmaWxsKHRleHQsIHdpZHRoKWBgIGZ1bmN0aW9uIHJldHVybnMgYSBzaW5nbGUKICAgc3RyaW5nLCByZWZvcm1hdHRlZCB0byBmaXQgaW50byBsaW5lcyBubyBsb25nZXIgdGhhbiB0aGUgY2hvc2VuIHdpZHRoLiAoQXMgeW91CiAgIGNhbiBndWVzcywgOmZ1bmM6YGZpbGxgIGlzIGJ1aWx0IG9uIHRvcCBvZiA6ZnVuYzpgd3JhcGAuICBGb3IgZXhhbXBsZTo6CiAKQEAgLTE5MDMsNyArMTkwMyw3IEBACiAgIHNob3J0IGludGAsICBgYElgYCBmb3IgOmM6dHlwZTpgdW5zaWduZWQgaW50YCwgIGFuZCBgYEtgYCBmb3IgOmM6dHlwZTpgdW5zaWduZWQKICAgbG9uZyBsb25nYC4KIAotKiBBIG5ldyBmdW5jdGlvbiwgOmM6ZnVuYzpgUHlPYmplY3RfRGVsSXRlbVN0cmluZyhtYXBwaW5nLCBjaGFyIFwqa2V5KWAgd2FzIGFkZGVkCisqIEEgbmV3IGZ1bmN0aW9uLCBgYFB5T2JqZWN0X0RlbEl0ZW1TdHJpbmcobWFwcGluZywgY2hhciAqa2V5KWBgIHdhcyBhZGRlZAogICBhcyBzaG9ydGhhbmQgZm9yIGBgUHlPYmplY3RfRGVsSXRlbShtYXBwaW5nLCBQeVN0cmluZ19OZXcoa2V5KSlgYC4KIAogKiBGaWxlIG9iamVjdHMgbm93IG1hbmFnZSB0aGVpciBpbnRlcm5hbCBzdHJpbmcgYnVmZmVyIGRpZmZlcmVudGx5LCBpbmNyZWFzaW5nCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMi40LnJzdCBiL0RvYy93aGF0c25ldy8yLjQucnN0CmluZGV4IDlkMzM5YTUuLjVhMjhmODkgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8yLjQucnN0CisrKyBiL0RvYy93aGF0c25ldy8yLjQucnN0CkBAIC0zNyw3ICszNyw3IEBACiAKIFB5dGhvbiAyLjMgaW50cm9kdWNlZCB0aGUgOm1vZDpgc2V0c2AgbW9kdWxlLiAgQyBpbXBsZW1lbnRhdGlvbnMgb2Ygc2V0IGRhdGEKIHR5cGVzIGhhdmUgbm93IGJlZW4gYWRkZWQgdG8gdGhlIFB5dGhvbiBjb3JlIGFzIHR3byBuZXcgYnVpbHQtaW4gdHlwZXMsCi06ZnVuYzpgc2V0KGl0ZXJhYmxlKWAgYW5kIDpmdW5jOmBmcm96ZW5zZXQoaXRlcmFibGUpYC4gIFRoZXkgcHJvdmlkZSBoaWdoIHNwZWVkCitgYHNldChpdGVyYWJsZSlgYCBhbmQgYGBmcm96ZW5zZXQoaXRlcmFibGUpYGAuICBUaGV5IHByb3ZpZGUgaGlnaCBzcGVlZAogb3BlcmF0aW9ucyBmb3IgbWVtYmVyc2hpcCB0ZXN0aW5nLCBmb3IgZWxpbWluYXRpbmcgZHVwbGljYXRlcyBmcm9tIHNlcXVlbmNlcywKIGFuZCBmb3IgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgbGlrZSB1bmlvbnMsIGludGVyc2VjdGlvbnMsIGRpZmZlcmVuY2VzLCBhbmQKIHN5bW1ldHJpYyBkaWZmZXJlbmNlcy4gOjoKQEAgLTM0Niw3ICszNDYsNyBAQAogUEVQIDMyMjogUmV2ZXJzZSBJdGVyYXRpb24KID09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLUEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uLCA6ZnVuYzpgcmV2ZXJzZWQoc2VxKWAsIHRha2VzIGEgc2VxdWVuY2UgYW5kIHJldHVybnMgYW4KK0EgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uLCBgYHJldmVyc2VkKHNlcSlgYCwgdGFrZXMgYSBzZXF1ZW5jZSBhbmQgcmV0dXJucyBhbgogaXRlcmF0b3IgdGhhdCBsb29wcyBvdmVyIHRoZSBlbGVtZW50cyBvZiB0aGUgc2VxdWVuY2UgIGluIHJldmVyc2Ugb3JkZXIuICAgOjoKIAogICAgPj4+IGZvciBpIGluIHJldmVyc2VkKHhyYW5nZSgxLDQpKToKQEAgLTM4NCw3ICszODQsNyBAQAogCiBUaGUgc3RhbmRhcmQgbGlicmFyeSBwcm92aWRlcyBhIG51bWJlciBvZiB3YXlzIHRvIGV4ZWN1dGUgYSBzdWJwcm9jZXNzLCBvZmZlcmluZwogZGlmZmVyZW50IGZlYXR1cmVzIGFuZCBkaWZmZXJlbnQgbGV2ZWxzIG9mIGNvbXBsZXhpdHkuCi06ZnVuYzpgb3Muc3lzdGVtKGNvbW1hbmQpYCBpcyBlYXN5IHRvIHVzZSwgYnV0IHNsb3cgKGl0IHJ1bnMgYSBzaGVsbCBwcm9jZXNzCitgYG9zLnN5c3RlbShjb21tYW5kKWBgIGlzIGVhc3kgdG8gdXNlLCBidXQgc2xvdyAoaXQgcnVucyBhIHNoZWxsIHByb2Nlc3MKIHdoaWNoIGV4ZWN1dGVzIHRoZSBjb21tYW5kKSBhbmQgZGFuZ2Vyb3VzICh5b3UgaGF2ZSB0byBiZSBjYXJlZnVsIGFib3V0IGVzY2FwaW5nCiB0aGUgc2hlbGwncyBtZXRhY2hhcmFjdGVycykuICBUaGUgOm1vZDpgcG9wZW4yYCBtb2R1bGUgb2ZmZXJzIGNsYXNzZXMgdGhhdCBjYW4KIGNhcHR1cmUgc3RhbmRhcmQgb3V0cHV0IGFuZCBzdGFuZGFyZCBlcnJvciBmcm9tIHRoZSBzdWJwcm9jZXNzLCBidXQgdGhlIG5hbWluZwpAQCAtNDMxLDggKzQzMSw4IEBACiAKIE9uY2UgeW91J3ZlIGNyZWF0ZWQgdGhlIDpjbGFzczpgUG9wZW5gIGluc3RhbmNlLCAgeW91IGNhbiBjYWxsIGl0cyA6bWV0aDpgd2FpdGAKIG1ldGhvZCB0byBwYXVzZSB1bnRpbCB0aGUgc3VicHJvY2VzcyBoYXMgZXhpdGVkLCA6bWV0aDpgcG9sbGAgdG8gY2hlY2sgaWYgaXQncwotZXhpdGVkIHdpdGhvdXQgcGF1c2luZywgIG9yIDptZXRoOmBjb21tdW5pY2F0ZShkYXRhKWAgdG8gc2VuZCB0aGUgc3RyaW5nICpkYXRhKgotdG8gdGhlIHN1YnByb2Nlc3MncyBzdGFuZGFyZCBpbnB1dC4gICA6bWV0aDpgY29tbXVuaWNhdGUoZGF0YSlgICB0aGVuIHJlYWRzIGFueQorZXhpdGVkIHdpdGhvdXQgcGF1c2luZywgIG9yIGBgY29tbXVuaWNhdGUoZGF0YSlgYCB0byBzZW5kIHRoZSBzdHJpbmcgKmRhdGEqCit0byB0aGUgc3VicHJvY2VzcydzIHN0YW5kYXJkIGlucHV0LiAgIGBgY29tbXVuaWNhdGUoZGF0YSlgYCAgdGhlbiByZWFkcyBhbnkKIGRhdGEgdGhhdCB0aGUgc3VicHJvY2VzcyBoYXMgc2VudCB0byBpdHMgc3RhbmRhcmQgb3V0cHV0ICBvciBzdGFuZGFyZCBlcnJvciwKIHJldHVybmluZyBhIHR1cGxlIGBgKHN0ZG91dF9kYXRhLCBzdGRlcnJfZGF0YSlgYC4KIApAQCAtNzQ5LDEwICs3NDksMTAgQEAKIFRoZSBzb2x1dGlvbiBkZXNjcmliZWQgaW4gdGhlIFBFUCBpcyB0byBhZGQgdGhyZWUgbmV3IGZ1bmN0aW9ucyB0byB0aGUgUHl0aG9uCiBBUEkgdGhhdCBwZXJmb3JtIEFTQ0lJLW9ubHkgY29udmVyc2lvbnMsIGlnbm9yaW5nIHRoZSBsb2NhbGUgc2V0dGluZzoKIAotKiA6YzpmdW5jOmBQeU9TX2FzY2lpX3N0cnRvZChzdHIsIHB0cilgICBhbmQgOmM6ZnVuYzpgUHlPU19hc2NpaV9hdG9mKHN0ciwgcHRyKWAKKyogYGBQeU9TX2FzY2lpX3N0cnRvZChzdHIsIHB0cilgYCAgYW5kIGBgUHlPU19hc2NpaV9hdG9mKHN0ciwgcHRyKWBgCiAgIGJvdGggY29udmVydCBhIHN0cmluZyB0byBhIEMgOmM6dHlwZTpgZG91YmxlYC4KIAotKiA6YzpmdW5jOmBQeU9TX2FzY2lpX2Zvcm1hdGQoYnVmZmVyLCBidWZfbGVuLCBmb3JtYXQsIGQpYCBjb252ZXJ0cyBhCisqIGBgUHlPU19hc2NpaV9mb3JtYXRkKGJ1ZmZlciwgYnVmX2xlbiwgZm9ybWF0LCBkKWBgIGNvbnZlcnRzIGEKICAgOmM6dHlwZTpgZG91YmxlYCB0byBhbiBBU0NJSSBzdHJpbmcuCiAKIFRoZSBjb2RlIGZvciB0aGVzZSBmdW5jdGlvbnMgY2FtZSBmcm9tIHRoZSBHTGliIGxpYnJhcnkKQEAgLTc3OCw3ICs3NzgsNyBAQAogKiBEZWNvcmF0b3JzIGZvciBmdW5jdGlvbnMgYW5kIG1ldGhvZHMgd2VyZSBhZGRlZCAoOnBlcDpgMzE4YCkuCiAKICogQnVpbHQtaW4gOmZ1bmM6YHNldGAgYW5kIDpmdW5jOmBmcm96ZW5zZXRgIHR5cGVzIHdlcmUgIGFkZGVkICg6cGVwOmAyMThgKS4KLSAgT3RoZXIgbmV3IGJ1aWx0LWlucyBpbmNsdWRlIHRoZSA6ZnVuYzpgcmV2ZXJzZWQoc2VxKWAgZnVuY3Rpb24gKDpwZXA6YDMyMmApLgorICBPdGhlciBuZXcgYnVpbHQtaW5zIGluY2x1ZGUgdGhlIGBgcmV2ZXJzZWQoc2VxKWBgIGZ1bmN0aW9uICg6cGVwOmAzMjJgKS4KIAogKiBHZW5lcmF0b3IgZXhwcmVzc2lvbnMgd2VyZSBhZGRlZCAoOnBlcDpgMjg5YCkuCiAKQEAgLTg1Nyw3ICs4NTcsNyBAQAogCiAgIChBbGwgY2hhbmdlcyB0byA6bWV0aDpgc29ydGAgY29udHJpYnV0ZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIuKQogCi0qIFRoZXJlIGlzIGEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uIDpmdW5jOmBzb3J0ZWQoaXRlcmFibGUpYCB0aGF0IHdvcmtzIGxpa2UgdGhlCisqIFRoZXJlIGlzIGEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uIGBgc29ydGVkKGl0ZXJhYmxlKWBgIHRoYXQgd29ya3MgbGlrZSB0aGUKICAgaW4tcGxhY2UgOm1ldGg6YGxpc3Quc29ydGAgbWV0aG9kIGJ1dCBjYW4gYmUgdXNlZCBpbiBleHByZXNzaW9ucy4gIFRoZQogICBkaWZmZXJlbmNlcyBhcmU6CiAKQEAgLTg5OCw4ICs4OTgsOCBAQAogICBGb3IgZXhhbXBsZSwgIHlvdSBjYW4gbm93IHJ1biB0aGUgUHl0aG9uIHByb2ZpbGVyIHdpdGggYGBweXRob24gLW0gcHJvZmlsZWBgLgogICAoQ29udHJpYnV0ZWQgYnkgTmljayBDb2dobGFuLikKIAotKiBUaGUgOmZ1bmM6YGV2YWwoZXhwciwgZ2xvYmFscywgbG9jYWxzKWAgYW5kIDpmdW5jOmBleGVjZmlsZShmaWxlbmFtZSwgZ2xvYmFscywKLSAgbG9jYWxzKWAgZnVuY3Rpb25zIGFuZCB0aGUgYGBleGVjYGAgc3RhdGVtZW50IG5vdyBhY2NlcHQgYW55IG1hcHBpbmcgdHlwZQorKiBUaGUgYGBldmFsKGV4cHIsIGdsb2JhbHMsIGxvY2FscylgYCBhbmQgYGBleGVjZmlsZShmaWxlbmFtZSwgZ2xvYmFscywKKyAgbG9jYWxzKWBgIGZ1bmN0aW9ucyBhbmQgdGhlIGBgZXhlY2BgIHN0YXRlbWVudCBub3cgYWNjZXB0IGFueSBtYXBwaW5nIHR5cGUKICAgZm9yIHRoZSAqbG9jYWxzKiBwYXJhbWV0ZXIuICBQcmV2aW91c2x5IHRoaXMgaGFkIHRvIGJlIGEgcmVndWxhciBQeXRob24KICAgZGljdGlvbmFyeS4gIChDb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlci4pCiAKQEAgLTEwOTAsNyArMTA5MCw3IEBACiAgIFl2ZXMgRGlvbm5lKSBhbmQgbmV3IDptZXRoOmBkZWxldGVhY2xgIGFuZCA6bWV0aDpgbXlyaWdodHNgIG1ldGhvZHMgKGNvbnRyaWJ1dGVkCiAgIGJ5IEFybmF1ZCBNYXppbikuCiAKLSogVGhlIDptb2Q6YGl0ZXJ0b29sc2AgbW9kdWxlIGdhaW5lZCBhIDpmdW5jOmBncm91cGJ5KGl0ZXJhYmxlWywgKmZ1bmMqXSlgCisqIFRoZSA6bW9kOmBpdGVydG9vbHNgIG1vZHVsZSBnYWluZWQgYSBgYGdyb3VwYnkoaXRlcmFibGVbLCAqZnVuYypdKWBgCiAgIGZ1bmN0aW9uLiAqaXRlcmFibGUqIGlzIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBpdGVyYXRlZCBvdmVyIHRvIHJldHVybiBhIHN0cmVhbQogICBvZiBlbGVtZW50cywgYW5kIHRoZSBvcHRpb25hbCAqZnVuYyogcGFyYW1ldGVyIGlzIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbgogICBlbGVtZW50IGFuZCByZXR1cm5zIGEga2V5IHZhbHVlOyBpZiBvbWl0dGVkLCB0aGUga2V5IGlzIHNpbXBseSB0aGUgZWxlbWVudApAQCAtMTEzOSw3ICsxMTM5LDcgQEAKIAogICAoQ29udHJpYnV0ZWQgYnkgSHllLVNoaWsgQ2hhbmcuKQogCi0qIDptb2Q6YGl0ZXJ0b29sc2AgYWxzbyBnYWluZWQgYSBmdW5jdGlvbiBuYW1lZCA6ZnVuYzpgdGVlKGl0ZXJhdG9yLCBOKWAgdGhhdAorKiA6bW9kOmBpdGVydG9vbHNgIGFsc28gZ2FpbmVkIGEgZnVuY3Rpb24gbmFtZWQgYGB0ZWUoaXRlcmF0b3IsIE4pYGAgdGhhdAogICByZXR1cm5zICpOKiBpbmRlcGVuZGVudCBpdGVyYXRvcnMgdGhhdCByZXBsaWNhdGUgKml0ZXJhdG9yKi4gIElmICpOKiBpcyBvbWl0dGVkLAogICB0aGUgZGVmYXVsdCBpcyAyLiA6OgogCkBAIC0xMTc3LDcgKzExNzcsNyBAQAogICAgICAgICAgbGV2ZWw9MCwgICMgTG9nIGFsbCBtZXNzYWdlcwogICAgICAgICAgZm9ybWF0PSclKGxldmVsbmFtZSk6JShwcm9jZXNzKTolKHRocmVhZCk6JShtZXNzYWdlKScpCiAKLSAgT3RoZXIgYWRkaXRpb25zIHRvIHRoZSA6bW9kOmBsb2dnaW5nYCBwYWNrYWdlIGluY2x1ZGUgYSA6bWV0aDpgbG9nKGxldmVsLCBtc2cpYAorICBPdGhlciBhZGRpdGlvbnMgdG8gdGhlIDptb2Q6YGxvZ2dpbmdgIHBhY2thZ2UgaW5jbHVkZSBhIGBgbG9nKGxldmVsLCBtc2cpYGAKICAgY29udmVuaWVuY2UgbWV0aG9kLCBhcyB3ZWxsIGFzIGEgOmNsYXNzOmBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJgIGNsYXNzIHRoYXQKICAgcm90YXRlcyBpdHMgbG9nIGZpbGVzIGF0IGEgdGltZWQgaW50ZXJ2YWwuICBUaGUgbW9kdWxlIGFscmVhZHkgaGFkCiAgIDpjbGFzczpgUm90YXRpbmdGaWxlSGFuZGxlcmAsIHdoaWNoIHJvdGF0ZWQgbG9ncyBvbmNlIHRoZSBmaWxlIGV4Y2VlZGVkIGEKQEAgLTExOTYsNyArMTE5Niw3IEBACiAgIGdyb3VwIG9yIGZvciBhIHJhbmdlIG9mIGdyb3Vwcy4gKENvbnRyaWJ1dGVkIGJ5IErDvHJnZW4gQS4gRXJoYXJkLikKIAogKiBUd28gbmV3IGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHRvIHRoZSA6bW9kOmBvcGVyYXRvcmAgbW9kdWxlLAotICA6ZnVuYzpgYXR0cmdldHRlcihhdHRyKWAgYW5kIDpmdW5jOmBpdGVtZ2V0dGVyKGluZGV4KWAuIEJvdGggZnVuY3Rpb25zIHJldHVybgorICBgYGF0dHJnZXR0ZXIoYXR0cilgYCBhbmQgYGBpdGVtZ2V0dGVyKGluZGV4KWBgLiBCb3RoIGZ1bmN0aW9ucyByZXR1cm4KICAgY2FsbGFibGVzIHRoYXQgdGFrZSBhIHNpbmdsZSBhcmd1bWVudCBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBvcgogICBpdGVtOyB0aGVzZSBjYWxsYWJsZXMgbWFrZSBleGNlbGxlbnQgZGF0YSBleHRyYWN0b3JzIHdoZW4gdXNlZCB3aXRoIDpmdW5jOmBtYXBgCiAgIG9yIDpmdW5jOmBzb3J0ZWRgLiAgRm9yIGV4YW1wbGU6OgpAQCAtMTIyMywxNCArMTIyMywxNCBAQAogICByZXBsYWNlbWVudCBmb3IgOmZ1bmM6YHJmYzgyMi5mb3JtYXRkYXRlYC4gIFlvdSBtYXkgd2FudCB0byB3cml0ZSBuZXcgZS1tYWlsCiAgIHByb2Nlc3NpbmcgY29kZSB3aXRoIHRoaXMgaW4gbWluZC4gIChDaGFuZ2UgaW1wbGVtZW50ZWQgYnkgQW50aG9ueSBCYXh0ZXIuKQogCi0qIEEgbmV3IDpmdW5jOmB1cmFuZG9tKG4pYCBmdW5jdGlvbiB3YXMgYWRkZWQgdG8gdGhlIDptb2Q6YG9zYCBtb2R1bGUsIHJldHVybmluZworKiBBIG5ldyBgYHVyYW5kb20obilgYCBmdW5jdGlvbiB3YXMgYWRkZWQgdG8gdGhlIDptb2Q6YG9zYCBtb2R1bGUsIHJldHVybmluZwogICBhIHN0cmluZyBjb250YWluaW5nICpuKiBieXRlcyBvZiByYW5kb20gZGF0YS4gIFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgYWNjZXNzIHRvCiAgIHBsYXRmb3JtLXNwZWNpZmljIHNvdXJjZXMgb2YgcmFuZG9tbmVzcyBzdWNoIGFzIDpmaWxlOmAvZGV2L3VyYW5kb21gIG9uIExpbnV4IG9yCiAgIHRoZSBXaW5kb3dzIENyeXB0b0FQSS4gIChDb250cmlidXRlZCBieSBUcmV2b3IgUGVycmluLikKIAotKiBBbm90aGVyIG5ldyBmdW5jdGlvbjogOmZ1bmM6YG9zLnBhdGgubGV4aXN0cyhwYXRoKWAgIHJldHVybnMgdHJ1ZSBpZiB0aGUgZmlsZQorKiBBbm90aGVyIG5ldyBmdW5jdGlvbjogYGBvcy5wYXRoLmxleGlzdHMocGF0aClgYCAgcmV0dXJucyB0cnVlIGlmIHRoZSBmaWxlCiAgIHNwZWNpZmllZCBieSAqcGF0aCogZXhpc3RzLCB3aGV0aGVyIG9yIG5vdCBpdCdzIGEgc3ltYm9saWMgbGluay4gIFRoaXMgZGlmZmVycwotICBmcm9tIHRoZSBleGlzdGluZyA6ZnVuYzpgb3MucGF0aC5leGlzdHMocGF0aClgIGZ1bmN0aW9uLCB3aGljaCByZXR1cm5zIGZhbHNlIGlmCisgIGZyb20gdGhlIGV4aXN0aW5nIGBgb3MucGF0aC5leGlzdHMocGF0aClgYCBmdW5jdGlvbiwgd2hpY2ggcmV0dXJucyBmYWxzZSBpZgogICAqcGF0aCogaXMgYSBzeW1saW5rIHRoYXQgcG9pbnRzIHRvIGEgZGVzdGluYXRpb24gdGhhdCBkb2Vzbid0IGV4aXN0LgogICAoQ29udHJpYnV0ZWQgYnkgQmVuaSBDaGVybmlhdnNreS4pCiAKQEAgLTEyNDMsNyArMTI0Myw3IEBACiAqIFRoZSA6bW9kOmBwcm9maWxlYCBtb2R1bGUgY2FuIG5vdyBwcm9maWxlIEMgZXh0ZW5zaW9uIGZ1bmN0aW9ucy4gKENvbnRyaWJ1dGVkCiAgIGJ5IE5pY2sgQmFzdGluLikKIAotKiBUaGUgOm1vZDpgcmFuZG9tYCBtb2R1bGUgaGFzIGEgbmV3IG1ldGhvZCBjYWxsZWQgOm1ldGg6YGdldHJhbmRiaXRzKE4pYCB0aGF0CisqIFRoZSA6bW9kOmByYW5kb21gIG1vZHVsZSBoYXMgYSBuZXcgbWV0aG9kIGNhbGxlZCBgYGdldHJhbmRiaXRzKE4pYGAgdGhhdAogICByZXR1cm5zIGEgbG9uZyBpbnRlZ2VyICpOKiBiaXRzIGluIGxlbmd0aC4gIFRoZSBleGlzdGluZyA6bWV0aDpgcmFuZHJhbmdlYAogICBtZXRob2Qgbm93IHVzZXMgOm1ldGg6YGdldHJhbmRiaXRzYCB3aGVyZSBhcHByb3ByaWF0ZSwgbWFraW5nIGdlbmVyYXRpb24gb2YKICAgYXJiaXRyYXJpbHkgbGFyZ2UgcmFuZG9tIG51bWJlcnMgbW9yZSBlZmZpY2llbnQuICAoQ29udHJpYnV0ZWQgYnkgUmF5bW9uZApAQCAtMTI3Miw3ICsxMjcyLDcgQEAKICAgdGhpcywgYnV0IDIuNCB3aWxsIHJhaXNlIGEgOmV4YzpgUnVudGltZUVycm9yYCBleGNlcHRpb24uCiAKICogVHdvIG5ldyBmdW5jdGlvbnMgd2VyZSBhZGRlZCB0byB0aGUgOm1vZDpgc29ja2V0YCBtb2R1bGUuIDpmdW5jOmBzb2NrZXRwYWlyYAotICByZXR1cm5zIGEgcGFpciBvZiBjb25uZWN0ZWQgc29ja2V0cyBhbmQgOmZ1bmM6YGdldHNlcnZieXBvcnQocG9ydClgIGxvb2tzIHVwIHRoZQorICByZXR1cm5zIGEgcGFpciBvZiBjb25uZWN0ZWQgc29ja2V0cyBhbmQgYGBnZXRzZXJ2Ynlwb3J0KHBvcnQpYGAgbG9va3MgdXAgdGhlCiAgIHNlcnZpY2UgbmFtZSBmb3IgYSBnaXZlbiBwb3J0IG51bWJlci4gKENvbnRyaWJ1dGVkIGJ5IERhdmUgQ29sZSBhbmQgQmFycnkKICAgV2Fyc2F3LikKIApAQCAtMTQ1NCwxMSArMTQ1NCwxMSBAQAogKiBBbm90aGVyIG5ldyBtYWNybywgOmM6bWFjcm86YFB5X0NMRUFSKG9iailgLCAgZGVjcmVhc2VzIHRoZSByZWZlcmVuY2UgY291bnQgb2YKICAgKm9iaiogYW5kIHNldHMgKm9iaiogdG8gdGhlIG51bGwgcG9pbnRlci4gIChDb250cmlidXRlZCBieSBKaW0gRnVsdG9uLikKIAotKiBBIG5ldyBmdW5jdGlvbiwgOmM6ZnVuYzpgUHlUdXBsZV9QYWNrKE4sIG9iajEsIG9iajIsIC4uLiwgb2JqTilgLCBjb25zdHJ1Y3RzCisqIEEgbmV3IGZ1bmN0aW9uLCBgYFB5VHVwbGVfUGFjayhOLCBvYmoxLCBvYmoyLCAuLi4sIG9iak4pYGAsIGNvbnN0cnVjdHMKICAgdHVwbGVzIGZyb20gYSB2YXJpYWJsZSBsZW5ndGggYXJndW1lbnQgbGlzdCBvZiBQeXRob24gb2JqZWN0cy4gIChDb250cmlidXRlZCBieQogICBSYXltb25kIEhldHRpbmdlci4pCiAKLSogQSBuZXcgZnVuY3Rpb24sIDpjOmZ1bmM6YFB5RGljdF9Db250YWlucyhkLCBrKWAsIGltcGxlbWVudHMgZmFzdCBkaWN0aW9uYXJ5CisqIEEgbmV3IGZ1bmN0aW9uLCBgYFB5RGljdF9Db250YWlucyhkLCBrKWBgLCBpbXBsZW1lbnRzIGZhc3QgZGljdGlvbmFyeQogICBsb29rdXBzIHdpdGhvdXQgbWFza2luZyBleGNlcHRpb25zIHJhaXNlZCBkdXJpbmcgdGhlIGxvb2stdXAgcHJvY2Vzcy4KICAgKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyLikKIApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzIuNS5yc3QgYi9Eb2Mvd2hhdHNuZXcvMi41LnJzdAppbmRleCBlMDU5Y2Q1Li5iOTFlNjQ3IDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMi41LnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMi41LnJzdApAQCAtMTcxLDcgKzE3MSw3IEBACiAgICAgICAgICAgIHBvcHVwX21lbnUuYXBwZW5kKCAoIk9wZW4iLCBvcGVuX2Z1bmMsIDEpICkKIAogQW5vdGhlciBmdW5jdGlvbiBpbiB0aGUgOm1vZDpgZnVuY3Rvb2xzYCBtb2R1bGUgaXMgdGhlCi06ZnVuYzpgdXBkYXRlX3dyYXBwZXIod3JhcHBlciwgd3JhcHBlZClgIGZ1bmN0aW9uIHRoYXQgaGVscHMgeW91IHdyaXRlIHdlbGwtCitgYHVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsIHdyYXBwZWQpYGAgZnVuY3Rpb24gdGhhdCBoZWxwcyB5b3Ugd3JpdGUgd2VsbC0KIGJlaGF2ZWQgZGVjb3JhdG9ycy4gIDpmdW5jOmB1cGRhdGVfd3JhcHBlcmAgY29waWVzIHRoZSBuYW1lLCBtb2R1bGUsIGFuZAogZG9jc3RyaW5nIGF0dHJpYnV0ZSB0byBhIHdyYXBwZXIgZnVuY3Rpb24gc28gdGhhdCB0cmFjZWJhY2tzIGluc2lkZSB0aGUgd3JhcHBlZAogZnVuY3Rpb24gYXJlIGVhc2llciB0byB1bmRlcnN0YW5kLiAgRm9yIGV4YW1wbGUsIHlvdSBtaWdodCB3cml0ZTo6CkBAIC00NTQsNyArNDU0LDcgQEAKIGBgdmFsID0geWllbGQgaWBgIGJ1dCBoYXZlIHRvIHVzZSBwYXJlbnRoZXNlcyB3aGVuIHRoZXJlJ3MgYW4gb3BlcmF0aW9uLCBhcyBpbgogYGB2YWwgPSAoeWllbGQgaSkgKyAxMmBgLikKIAotVmFsdWVzIGFyZSBzZW50IGludG8gYSBnZW5lcmF0b3IgYnkgY2FsbGluZyBpdHMgOm1ldGg6YHNlbmQodmFsdWUpYCBtZXRob2QuICBUaGUKK1ZhbHVlcyBhcmUgc2VudCBpbnRvIGEgZ2VuZXJhdG9yIGJ5IGNhbGxpbmcgaXRzIGBgc2VuZCh2YWx1ZSlgYCBtZXRob2QuICBUaGUKIGdlbmVyYXRvcidzIGNvZGUgaXMgdGhlbiByZXN1bWVkIGFuZCB0aGUgOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9uIHJldHVybnMgdGhlCiBzcGVjaWZpZWQgKnZhbHVlKi4gIElmIHRoZSByZWd1bGFyIDptZXRoOmBuZXh0YCBtZXRob2QgaXMgY2FsbGVkLCB0aGUKIDprZXl3b3JkOmB5aWVsZGAgcmV0dXJucyA6Y29uc3Q6YE5vbmVgLgpAQCAtNDk2LDcgKzQ5Niw3IEBACiAKIEluIGFkZGl0aW9uIHRvIDptZXRoOmBzZW5kYCwgdGhlcmUgYXJlIHR3byBvdGhlciBuZXcgbWV0aG9kcyBvbiBnZW5lcmF0b3JzOgogCi0qIDptZXRoOmB0aHJvdyh0eXBlLCB2YWx1ZT1Ob25lLCB0cmFjZWJhY2s9Tm9uZSlgIGlzIHVzZWQgdG8gcmFpc2UgYW4gZXhjZXB0aW9uCisqIGBgdGhyb3codHlwZSwgdmFsdWU9Tm9uZSwgdHJhY2ViYWNrPU5vbmUpYGAgaXMgdXNlZCB0byByYWlzZSBhbiBleGNlcHRpb24KICAgaW5zaWRlIHRoZSBnZW5lcmF0b3I7IHRoZSBleGNlcHRpb24gaXMgcmFpc2VkIGJ5IHRoZSA6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb24KICAgd2hlcmUgdGhlIGdlbmVyYXRvcidzIGV4ZWN1dGlvbiBpcyBwYXVzZWQuCiAKQEAgLTY2MCw3ICs2NjAsNyBAQAogCiAqIFRoZSBjb2RlIGluICpCTE9DSyogaXMgZXhlY3V0ZWQuCiAKLSogSWYgKkJMT0NLKiByYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgOm1ldGg6YF9fZXhpdF9fKHR5cGUsIHZhbHVlLCB0cmFjZWJhY2spYAorKiBJZiAqQkxPQ0sqIHJhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBgYF9fZXhpdF9fKHR5cGUsIHZhbHVlLCB0cmFjZWJhY2spYGAKICAgaXMgY2FsbGVkIHdpdGggdGhlIGV4Y2VwdGlvbiBkZXRhaWxzLCB0aGUgc2FtZSB2YWx1ZXMgcmV0dXJuZWQgYnkKICAgOmZ1bmM6YHN5cy5leGNfaW5mb2AuICBUaGUgbWV0aG9kJ3MgcmV0dXJuIHZhbHVlIGNvbnRyb2xzIHdoZXRoZXIgdGhlIGV4Y2VwdGlvbgogICBpcyByZS1yYWlzZWQ6IGFueSBmYWxzZSB2YWx1ZSByZS1yYWlzZXMgdGhlIGV4Y2VwdGlvbiwgYW5kIGBgVHJ1ZWBgIHdpbGwgcmVzdWx0CkBAIC03NzMsNyArNzczLDcgQEAKICAgIHdpdGggZGJfdHJhbnNhY3Rpb24oZGIpIGFzIGN1cnNvcjoKICAgICAgICAuLi4KIAotVGhlIDptb2Q6YGNvbnRleHRsaWJgIG1vZHVsZSBhbHNvIGhhcyBhIDpmdW5jOmBuZXN0ZWQobWdyMSwgbWdyMiwgLi4uKWAgZnVuY3Rpb24KK1RoZSA6bW9kOmBjb250ZXh0bGliYCBtb2R1bGUgYWxzbyBoYXMgYSBgYG5lc3RlZChtZ3IxLCBtZ3IyLCAuLi4pYGAgZnVuY3Rpb24KIHRoYXQgY29tYmluZXMgYSBudW1iZXIgb2YgY29udGV4dCBtYW5hZ2VycyBzbyB5b3UgZG9uJ3QgbmVlZCB0byB3cml0ZSBuZXN0ZWQKICc6a2V5d29yZDpgd2l0aGAnIHN0YXRlbWVudHMuICBJbiB0aGlzIGV4YW1wbGUsIHRoZSBzaW5nbGUgJzprZXl3b3JkOmB3aXRoYCcKIHN0YXRlbWVudCBib3RoIHN0YXJ0cyBhIGRhdGFiYXNlIHRyYW5zYWN0aW9uIGFuZCBhY3F1aXJlcyBhIHRocmVhZCBsb2NrOjoKQEAgLTc4Miw3ICs3ODIsNyBAQAogICAgd2l0aCBuZXN0ZWQgKGRiX3RyYW5zYWN0aW9uKGRiKSwgbG9jaykgYXMgKGN1cnNvciwgbG9ja2VkKToKICAgICAgICAuLi4KIAotRmluYWxseSwgdGhlIDpmdW5jOmBjbG9zaW5nKG9iamVjdClgIGZ1bmN0aW9uIHJldHVybnMgKm9iamVjdCogc28gdGhhdCBpdCBjYW4gYmUKK0ZpbmFsbHksIHRoZSBgYGNsb3Npbmcob2JqZWN0KWBgIGZ1bmN0aW9uIHJldHVybnMgKm9iamVjdCogc28gdGhhdCBpdCBjYW4gYmUKIGJvdW5kIHRvIGEgdmFyaWFibGUsIGFuZCBjYWxscyBgYG9iamVjdC5jbG9zZWBgIGF0IHRoZSBlbmQgb2YgdGhlIGJsb2NrLiA6OgogCiAgICBpbXBvcnQgdXJsbGliLCBzeXMKQEAgLTk1NSw3ICs5NTUsNyBAQAogCiBBIGNvcnJlc3BvbmRpbmcgOmF0dHI6YG5iX2luZGV4YCBzbG90IHdhcyBhZGRlZCB0byB0aGUgQy1sZXZlbAogOmM6dHlwZTpgUHlOdW1iZXJNZXRob2RzYCBzdHJ1Y3R1cmUgdG8gbGV0IEMgZXh0ZW5zaW9ucyBpbXBsZW1lbnQgdGhpcyBwcm90b2NvbC4KLTpjOmZ1bmM6YFB5TnVtYmVyX0luZGV4KG9iailgIGNhbiBiZSB1c2VkIGluIGV4dGVuc2lvbiBjb2RlIHRvIGNhbGwgdGhlCitgYFB5TnVtYmVyX0luZGV4KG9iailgYCBjYW4gYmUgdXNlZCBpbiBleHRlbnNpb24gY29kZSB0byBjYWxsIHRoZQogOm1ldGg6YF9faW5kZXhfX2AgZnVuY3Rpb24gYW5kIHJldHJpZXZlIGl0cyByZXN1bHQuCiAKIApAQCAtOTc2LDcgKzk3Niw3IEBACiAKICogVGhlIDpjbGFzczpgZGljdGAgdHlwZSBoYXMgYSBuZXcgaG9vayBmb3IgbGV0dGluZyBzdWJjbGFzc2VzIHByb3ZpZGUgYSBkZWZhdWx0CiAgIHZhbHVlIHdoZW4gYSBrZXkgaXNuJ3QgY29udGFpbmVkIGluIHRoZSBkaWN0aW9uYXJ5LiBXaGVuIGEga2V5IGlzbid0IGZvdW5kLCB0aGUKLSAgZGljdGlvbmFyeSdzIDptZXRoOmBfX21pc3NpbmdfXyhrZXkpYCBtZXRob2Qgd2lsbCBiZSBjYWxsZWQuICBUaGlzIGhvb2sgaXMgdXNlZAorICBkaWN0aW9uYXJ5J3MgYGBfX21pc3NpbmdfXyhrZXkpYGAgbWV0aG9kIHdpbGwgYmUgY2FsbGVkLiAgVGhpcyBob29rIGlzIHVzZWQKICAgdG8gaW1wbGVtZW50IHRoZSBuZXcgOmNsYXNzOmBkZWZhdWx0ZGljdGAgY2xhc3MgaW4gdGhlIDptb2Q6YGNvbGxlY3Rpb25zYAogICBtb2R1bGUuICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgZGVmaW5lcyBhIGRpY3Rpb25hcnkgIHRoYXQgcmV0dXJucyB6ZXJvIGZvciBhbnkKICAgbWlzc2luZyBrZXk6OgpAQCAtOTg5LDE2ICs5ODksMTYgQEAKICAgICAgcHJpbnQgZFsxXSwgZFsyXSAgICMgUHJpbnRzIDEsIDIKICAgICAgcHJpbnQgZFszXSwgZFs0XSAgICMgUHJpbnRzIDAsIDAKIAotKiBCb3RoIDgtYml0IGFuZCBVbmljb2RlIHN0cmluZ3MgaGF2ZSBuZXcgOm1ldGg6YHBhcnRpdGlvbihzZXApYCAgYW5kCi0gIDptZXRoOmBycGFydGl0aW9uKHNlcClgIG1ldGhvZHMgdGhhdCBzaW1wbGlmeSBhIGNvbW1vbiB1c2UgY2FzZS4KKyogQm90aCA4LWJpdCBhbmQgVW5pY29kZSBzdHJpbmdzIGhhdmUgbmV3IGBgcGFydGl0aW9uKHNlcClgYCAgYW5kCisgIGBgcnBhcnRpdGlvbihzZXApYGAgbWV0aG9kcyB0aGF0IHNpbXBsaWZ5IGEgY29tbW9uIHVzZSBjYXNlLgogCi0gIFRoZSA6bWV0aDpgZmluZChTKWAgbWV0aG9kIGlzIG9mdGVuIHVzZWQgdG8gZ2V0IGFuIGluZGV4IHdoaWNoIGlzIHRoZW4gdXNlZCB0bworICBUaGUgYGBmaW5kKFMpYGAgbWV0aG9kIGlzIG9mdGVuIHVzZWQgdG8gZ2V0IGFuIGluZGV4IHdoaWNoIGlzIHRoZW4gdXNlZCB0bwogICBzbGljZSB0aGUgc3RyaW5nIGFuZCBvYnRhaW4gdGhlIHBpZWNlcyB0aGF0IGFyZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBzZXBhcmF0b3IuCi0gIDptZXRoOmBwYXJ0aXRpb24oc2VwKWAgY29uZGVuc2VzIHRoaXMgcGF0dGVybiBpbnRvIGEgc2luZ2xlIG1ldGhvZCBjYWxsIHRoYXQKKyAgYGBwYXJ0aXRpb24oc2VwKWBgIGNvbmRlbnNlcyB0aGlzIHBhdHRlcm4gaW50byBhIHNpbmdsZSBtZXRob2QgY2FsbCB0aGF0CiAgIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN1YnN0cmluZyBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvcgogICBpdHNlbGYsIGFuZCB0aGUgc3Vic3RyaW5nIGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzbid0IGZvdW5kLAogICB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgdHVwbGUgaXMgdGhlIGVudGlyZSBzdHJpbmcgYW5kIHRoZSBvdGhlciB0d28gZWxlbWVudHMKLSAgYXJlIGVtcHR5LiAgOm1ldGg6YHJwYXJ0aXRpb24oc2VwKWAgYWxzbyByZXR1cm5zIGEgMy10dXBsZSBidXQgc3RhcnRzIHNlYXJjaGluZworICBhcmUgZW1wdHkuICBgYHJwYXJ0aXRpb24oc2VwKWBgIGFsc28gcmV0dXJucyBhIDMtdHVwbGUgYnV0IHN0YXJ0cyBzZWFyY2hpbmcKICAgZnJvbSB0aGUgZW5kIG9mIHRoZSBzdHJpbmc7IHRoZSBgYHJgYCBzdGFuZHMgZm9yICdyZXZlcnNlJy4KIAogICBTb21lIGV4YW1wbGVzOjoKQEAgLTExNTcsNyArMTE1Nyw3IEBACiAKICAgLi4gUGF0Y2ggMTMxMzkzOSwgMTM1OTYxOAogCi0qIFRoZSA6ZnVuYzpgbG9uZyhzdHIsIGJhc2UpYCBmdW5jdGlvbiBpcyBub3cgZmFzdGVyIG9uIGxvbmcgZGlnaXQgc3RyaW5ncworKiBUaGUgYGBsb25nKHN0ciwgYmFzZSlgYCBmdW5jdGlvbiBpcyBub3cgZmFzdGVyIG9uIGxvbmcgZGlnaXQgc3RyaW5ncwogICBiZWNhdXNlIGZld2VyIGludGVybWVkaWF0ZSByZXN1bHRzIGFyZSBjYWxjdWxhdGVkLiAgVGhlIHBlYWsgaXMgZm9yIHN0cmluZ3Mgb2YKICAgYXJvdW5kIDgwMC0tMTAwMCBkaWdpdHMgd2hlcmUgIHRoZSBmdW5jdGlvbiBpcyA2IHRpbWVzIGZhc3Rlci4gKENvbnRyaWJ1dGVkIGJ5CiAgIEFsYW4gTWNJbnR5cmUgYW5kIGNvbW1pdHRlZCBhdCB0aGUgTmVlZEZvclNwZWVkIHNwcmludC4pCkBAIC0xMjY4LDcgKzEyNjgsNyBAQAogICAoQ29udHJpYnV0ZWQgYnkgR3VpZG8gdmFuIFJvc3N1bS4pCiAKICogVGhlIDpjbGFzczpgZGVxdWVgIGRvdWJsZS1lbmRlZCBxdWV1ZSB0eXBlIHN1cHBsaWVkIGJ5IHRoZSA6bW9kOmBjb2xsZWN0aW9uc2AKLSAgbW9kdWxlIG5vdyBoYXMgYSA6bWV0aDpgcmVtb3ZlKHZhbHVlKWAgbWV0aG9kIHRoYXQgcmVtb3ZlcyB0aGUgZmlyc3Qgb2NjdXJyZW5jZQorICBtb2R1bGUgbm93IGhhcyBhIGBgcmVtb3ZlKHZhbHVlKWBgIG1ldGhvZCB0aGF0IHJlbW92ZXMgdGhlIGZpcnN0IG9jY3VycmVuY2UKICAgb2YgKnZhbHVlKiBpbiB0aGUgcXVldWUsIHJhaXNpbmcgOmV4YzpgVmFsdWVFcnJvcmAgaWYgdGhlIHZhbHVlIGlzbid0IGZvdW5kLgogICAoQ29udHJpYnV0ZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIuKQogCkBAIC0xMjkxLDcgKzEyOTEsNyBAQAogKiBUaGUgOm1vZDpgY3N2YCBtb2R1bGUsIHdoaWNoIHBhcnNlcyBmaWxlcyBpbiBjb21tYS1zZXBhcmF0ZWQgdmFsdWUgZm9ybWF0LAogICByZWNlaXZlZCBzZXZlcmFsIGVuaGFuY2VtZW50cyBhbmQgYSBudW1iZXIgb2YgYnVnZml4ZXMuICBZb3UgY2FuIG5vdyBzZXQgdGhlCiAgIG1heGltdW0gc2l6ZSBpbiBieXRlcyBvZiBhIGZpZWxkIGJ5IGNhbGxpbmcgdGhlCi0gIDptZXRoOmBjc3YuZmllbGRfc2l6ZV9saW1pdChuZXdfbGltaXQpYCBmdW5jdGlvbjsgb21pdHRpbmcgdGhlICpuZXdfbGltaXQqCisgIGBgY3N2LmZpZWxkX3NpemVfbGltaXQobmV3X2xpbWl0KWBgIGZ1bmN0aW9uOyBvbWl0dGluZyB0aGUgKm5ld19saW1pdCoKICAgYXJndW1lbnQgd2lsbCByZXR1cm4gdGhlIGN1cnJlbnRseS1zZXQgbGltaXQuICBUaGUgOmNsYXNzOmByZWFkZXJgIGNsYXNzIG5vdyBoYXMKICAgYSA6YXR0cjpgbGluZV9udW1gIGF0dHJpYnV0ZSB0aGF0IGNvdW50cyB0aGUgbnVtYmVyIG9mIHBoeXNpY2FsIGxpbmVzIHJlYWQgZnJvbQogICB0aGUgc291cmNlOyByZWNvcmRzIGNhbiBzcGFuIG11bHRpcGxlIHBoeXNpY2FsIGxpbmVzLCBzbyA6YXR0cjpgbGluZV9udW1gIGlzIG5vdApAQCAtMTMwOCw3ICsxMzA4LDcgQEAKICAgKENvbnRyaWJ1dGVkIGJ5IFNraXAgTW9udGFuYXJvIGFuZCBBbmRyZXcgTWNOYW1hcmEuKQogCiAqIFRoZSA6Y2xhc3M6YGRhdGV0aW1lYCBjbGFzcyBpbiB0aGUgOm1vZDpgZGF0ZXRpbWVgICBtb2R1bGUgbm93IGhhcyBhCi0gIDptZXRoOmBzdHJwdGltZShzdHJpbmcsIGZvcm1hdClgICBtZXRob2QgZm9yIHBhcnNpbmcgZGF0ZSBzdHJpbmdzLCBjb250cmlidXRlZAorICBgYHN0cnB0aW1lKHN0cmluZywgZm9ybWF0KWBgICBtZXRob2QgZm9yIHBhcnNpbmcgZGF0ZSBzdHJpbmdzLCBjb250cmlidXRlZAogICBieSBKb3NoIFNwb2VycmkuIEl0IHVzZXMgdGhlIHNhbWUgZm9ybWF0IGNoYXJhY3RlcnMgYXMgOmZ1bmM6YHRpbWUuc3RycHRpbWVgIGFuZAogICA6ZnVuYzpgdGltZS5zdHJmdGltZWA6OgogCkBAIC0xNDAzLDcgKzE0MDMsNyBAQAogKiBUaGUgOm1vZDpgbWFpbGJveGAgbW9kdWxlIHVuZGVyd2VudCBhIG1hc3NpdmUgcmV3cml0ZSB0byBhZGQgdGhlIGNhcGFiaWxpdHkgdG8KICAgbW9kaWZ5IG1haWxib3hlcyBpbiBhZGRpdGlvbiB0byByZWFkaW5nIHRoZW0uICBBIG5ldyBzZXQgb2YgY2xhc3NlcyB0aGF0IGluY2x1ZGUKICAgOmNsYXNzOmBtYm94YCwgOmNsYXNzOmBNSGAsIGFuZCA6Y2xhc3M6YE1haWxkaXJgIGFyZSB1c2VkIHRvIHJlYWQgbWFpbGJveGVzLCBhbmQKLSAgaGF2ZSBhbiA6bWV0aDpgYWRkKG1lc3NhZ2UpYCBtZXRob2QgdG8gYWRkIG1lc3NhZ2VzLCA6bWV0aDpgcmVtb3ZlKGtleSlgIHRvCisgIGhhdmUgYW4gYGBhZGQobWVzc2FnZSlgYCBtZXRob2QgdG8gYWRkIG1lc3NhZ2VzLCBgYHJlbW92ZShrZXkpYGAgdG8KICAgcmVtb3ZlIG1lc3NhZ2VzLCBhbmQgOm1ldGg6YGxvY2tgLzptZXRoOmB1bmxvY2tgIHRvIGxvY2svdW5sb2NrIHRoZSBtYWlsYm94LgogICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgY29udmVydHMgYSBtYWlsZGlyLWZvcm1hdCBtYWlsYm94IGludG8gYW4gbWJveC1mb3JtYXQKICAgb25lOjoKQEAgLTE0NTgsNyArMTQ1OCw3IEBACiAgIDpmdW5jOmB3YWl0NGAgcmV0dXJuIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uICA6ZnVuYzpgd2FpdDNgIGRvZXNuJ3QgdGFrZSBhCiAgIHByb2Nlc3MgSUQgYXMgaW5wdXQsIHNvIGl0IHdhaXRzIGZvciBhbnkgY2hpbGQgcHJvY2VzcyB0byBleGl0IGFuZCByZXR1cm5zIGEKICAgMy10dXBsZSBvZiAqcHJvY2Vzcy1pZCosICpleGl0LXN0YXR1cyosICpyZXNvdXJjZS11c2FnZSogYXMgcmV0dXJuZWQgZnJvbSB0aGUKLSAgOmZ1bmM6YHJlc291cmNlLmdldHJ1c2FnZWAgZnVuY3Rpb24uIDpmdW5jOmB3YWl0NChwaWQpYCBkb2VzIHRha2UgYSBwcm9jZXNzIElELgorICA6ZnVuYzpgcmVzb3VyY2UuZ2V0cnVzYWdlYCBmdW5jdGlvbi4gYGB3YWl0NChwaWQpYGAgZG9lcyB0YWtlIGEgcHJvY2VzcyBJRC4KICAgKENvbnRyaWJ1dGVkIGJ5IENoYWQgSi4gU2Nocm9lZGVyLikKIAogICBPbiBGcmVlQlNELCB0aGUgOmZ1bmM6YG9zLnN0YXRgIGZ1bmN0aW9uIG5vdyByZXR1cm5zICB0aW1lcyB3aXRoIG5hbm9zZWNvbmQKQEAgLTE1MzIsOCArMTUzMiw4IEBACiAgIEluIFB5dGhvbiBjb2RlLCBuZXRsaW5rIGFkZHJlc3NlcyBhcmUgcmVwcmVzZW50ZWQgYXMgYSB0dXBsZSBvZiAyIGludGVnZXJzLAogICBgYChwaWQsIGdyb3VwX21hc2spYGAuCiAKLSAgVHdvIG5ldyBtZXRob2RzIG9uIHNvY2tldCBvYmplY3RzLCA6bWV0aDpgcmVjdl9pbnRvKGJ1ZmZlcilgIGFuZAotICA6bWV0aDpgcmVjdmZyb21faW50byhidWZmZXIpYCwgc3RvcmUgdGhlIHJlY2VpdmVkIGRhdGEgaW4gYW4gb2JqZWN0ICB0aGF0CisgIFR3byBuZXcgbWV0aG9kcyBvbiBzb2NrZXQgb2JqZWN0cywgYGByZWN2X2ludG8oYnVmZmVyKWBgIGFuZAorICBgYHJlY3Zmcm9tX2ludG8oYnVmZmVyKWBgLCBzdG9yZSB0aGUgcmVjZWl2ZWQgZGF0YSBpbiBhbiBvYmplY3QgIHRoYXQKICAgc3VwcG9ydHMgdGhlIGJ1ZmZlciBwcm90b2NvbCBpbnN0ZWFkIG9mIHJldHVybmluZyB0aGUgZGF0YSBhcyBhIHN0cmluZy4gIFRoaXMKICAgbWVhbnMgeW91IGNhbiBwdXQgdGhlIGRhdGEgZGlyZWN0bHkgaW50byBhbiBhcnJheSBvciBhIG1lbW9yeS1tYXBwZWQgZmlsZS4KIApAQCAtMTU1Nyw4ICsxNTU3LDggQEAKICAgICAgeWVhciwgbnVtYmVyLCBuYW1lID0gcy51bnBhY2soZGF0YSkKIAogICBZb3UgY2FuIGFsc28gcGFjayBhbmQgdW5wYWNrIGRhdGEgdG8gYW5kIGZyb20gYnVmZmVyIG9iamVjdHMgZGlyZWN0bHkgdXNpbmcgdGhlCi0gIDptZXRoOmBwYWNrX2ludG8oYnVmZmVyLCBvZmZzZXQsIHYxLCB2MiwgLi4uKWAgYW5kIDptZXRoOmB1bnBhY2tfZnJvbShidWZmZXIsCi0gIG9mZnNldClgIG1ldGhvZHMuICBUaGlzIGxldHMgeW91IHN0b3JlIGRhdGEgZGlyZWN0bHkgaW50byBhbiBhcnJheSBvciBhIG1lbW9yeS0KKyAgYGBwYWNrX2ludG8oYnVmZmVyLCBvZmZzZXQsIHYxLCB2MiwgLi4uKWBgIGFuZCBgYHVucGFja19mcm9tKGJ1ZmZlciwKKyAgb2Zmc2V0KWBgIG1ldGhvZHMuICBUaGlzIGxldHMgeW91IHN0b3JlIGRhdGEgZGlyZWN0bHkgaW50byBhbiBhcnJheSBvciBhIG1lbW9yeS0KICAgbWFwcGVkIGZpbGUuCiAKICAgKDpjbGFzczpgU3RydWN0YCBvYmplY3RzIHdlcmUgaW1wbGVtZW50ZWQgYnkgQm9iIElwcG9saXRvIGF0IHRoZSBOZWVkRm9yU3BlZWQKQEAgLTE1OTIsNyArMTU5Miw3IEBACiAgIC4uIHBhdGNoIDkxODEwMQogCiAqIFRoZSA6bW9kOmB0aHJlYWRpbmdgIG1vZHVsZSBub3cgbGV0cyB5b3Ugc2V0IHRoZSBzdGFjayBzaXplIHVzZWQgd2hlbiBuZXcKLSAgdGhyZWFkcyBhcmUgY3JlYXRlZC4gVGhlIDpmdW5jOmBzdGFja19zaXplKFsqc2l6ZSpdKWAgZnVuY3Rpb24gcmV0dXJucyB0aGUKKyAgdGhyZWFkcyBhcmUgY3JlYXRlZC4gVGhlIGBgc3RhY2tfc2l6ZShbKnNpemUqXSlgYCBmdW5jdGlvbiByZXR1cm5zIHRoZQogICBjdXJyZW50bHkgY29uZmlndXJlZCBzdGFjayBzaXplLCBhbmQgc3VwcGx5aW5nIHRoZSBvcHRpb25hbCAqc2l6ZSogcGFyYW1ldGVyCiAgIHNldHMgYSBuZXcgdmFsdWUuICBOb3QgYWxsIHBsYXRmb3JtcyBzdXBwb3J0IGNoYW5naW5nIHRoZSBzdGFjayBzaXplLCBidXQKICAgV2luZG93cywgUE9TSVggdGhyZWFkaW5nLCBhbmQgT1MvMiBhbGwgZG8uIChDb250cmlidXRlZCBieSBBbmRyZXcgTWFjSW50eXJlLikKQEAgLTE5MTEsNyArMTkxMSw3IEBACiAgICBoID0gaGFzaGxpYi5uZXcoJ21kNScpICAgICAgICAgICMgUHJvdmlkZSBhbGdvcml0aG0gYXMgYSBzdHJpbmcKIAogT25jZSBhIGhhc2ggb2JqZWN0IGhhcyBiZWVuIGNyZWF0ZWQsIGl0cyBtZXRob2RzIGFyZSB0aGUgc2FtZSBhcyBiZWZvcmU6Ci06bWV0aDpgdXBkYXRlKHN0cmluZylgIGhhc2hlcyB0aGUgc3BlY2lmaWVkIHN0cmluZyBpbnRvIHRoZSAgY3VycmVudCBkaWdlc3QKK2BgdXBkYXRlKHN0cmluZylgYCBoYXNoZXMgdGhlIHNwZWNpZmllZCBzdHJpbmcgaW50byB0aGUgIGN1cnJlbnQgZGlnZXN0CiBzdGF0ZSwgOm1ldGg6YGRpZ2VzdGAgYW5kIDptZXRoOmBoZXhkaWdlc3RgIHJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgYmluYXJ5CiBzdHJpbmcgb3IgYSBzdHJpbmcgb2YgaGV4IGRpZ2l0cywgYW5kIDptZXRoOmBjb3B5YCByZXR1cm5zIGEgbmV3IGhhc2hpbmcgb2JqZWN0CiB3aXRoIHRoZSBzYW1lIGRpZ2VzdCBzdGF0ZS4KQEAgLTIxNjgsMjAgKzIxNjgsMjAgQEAKIAogKiBUd28gbmV3IG1hY3JvcyBjYW4gYmUgdXNlZCB0byBpbmRpY2F0ZSBDIGZ1bmN0aW9ucyB0aGF0IGFyZSBsb2NhbCB0byB0aGUKICAgY3VycmVudCBmaWxlIHNvIHRoYXQgYSBmYXN0ZXIgY2FsbGluZyBjb252ZW50aW9uIGNhbiBiZSB1c2VkLgotICA6YzpmdW5jOmBQeV9MT0NBTCh0eXBlKWAgZGVjbGFyZXMgdGhlIGZ1bmN0aW9uIGFzIHJldHVybmluZyBhIHZhbHVlIG9mIHRoZQorICBgYFB5X0xPQ0FMKHR5cGUpYGAgZGVjbGFyZXMgdGhlIGZ1bmN0aW9uIGFzIHJldHVybmluZyBhIHZhbHVlIG9mIHRoZQogICBzcGVjaWZpZWQgKnR5cGUqIGFuZCB1c2VzIGEgZmFzdC1jYWxsaW5nIHF1YWxpZmllci4KLSAgOmM6ZnVuYzpgUHlfTE9DQUxfSU5MSU5FKHR5cGUpYCBkb2VzIHRoZSBzYW1lIHRoaW5nIGFuZCBhbHNvIHJlcXVlc3RzIHRoZQorICBgYFB5X0xPQ0FMX0lOTElORSh0eXBlKWBgIGRvZXMgdGhlIHNhbWUgdGhpbmcgYW5kIGFsc28gcmVxdWVzdHMgdGhlCiAgIGZ1bmN0aW9uIGJlIGlubGluZWQuICBJZiA6YzpmdW5jOmBQWV9MT0NBTF9BR0dSRVNTSVZFYCBpcyBkZWZpbmVkIGJlZm9yZQogICA6ZmlsZTpgcHl0aG9uLmhgIGlzIGluY2x1ZGVkLCBhIHNldCBvZiBtb3JlIGFnZ3Jlc3NpdmUgb3B0aW1pemF0aW9ucyBhcmUgZW5hYmxlZAogICBmb3IgdGhlIG1vZHVsZTsgeW91IHNob3VsZCBiZW5jaG1hcmsgdGhlIHJlc3VsdHMgdG8gZmluZCBvdXQgaWYgdGhlc2UKICAgb3B0aW1pemF0aW9ucyBhY3R1YWxseSBtYWtlIHRoZSBjb2RlIGZhc3Rlci4gIChDb250cmlidXRlZCBieSBGcmVkcmlrIEx1bmRoIGF0CiAgIHRoZSBOZWVkRm9yU3BlZWQgc3ByaW50LikKIAotKiA6YzpmdW5jOmBQeUVycl9OZXdFeGNlcHRpb24obmFtZSwgYmFzZSwgZGljdClgIGNhbiBub3cgYWNjZXB0IGEgdHVwbGUgb2YgYmFzZQorKiBgYFB5RXJyX05ld0V4Y2VwdGlvbihuYW1lLCBiYXNlLCBkaWN0KWBgIGNhbiBub3cgYWNjZXB0IGEgdHVwbGUgb2YgYmFzZQogICBjbGFzc2VzIGFzIGl0cyAqYmFzZSogYXJndW1lbnQuICAoQ29udHJpYnV0ZWQgYnkgR2VvcmcgQnJhbmRsLikKIAogKiBUaGUgOmM6ZnVuYzpgUHlFcnJfV2FybmAgZnVuY3Rpb24gZm9yIGlzc3Vpbmcgd2FybmluZ3MgaXMgbm93IGRlcHJlY2F0ZWQgaW4KLSAgZmF2b3VyIG9mIDpjOmZ1bmM6YFB5RXJyX1dhcm5FeChjYXRlZ29yeSwgbWVzc2FnZSwgc3RhY2tsZXZlbClgIHdoaWNoIGxldHMgeW91CisgIGZhdm91ciBvZiBgYFB5RXJyX1dhcm5FeChjYXRlZ29yeSwgbWVzc2FnZSwgc3RhY2tsZXZlbClgYCB3aGljaCBsZXRzIHlvdQogICBzcGVjaWZ5IHRoZSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIHNlcGFyYXRpbmcgdGhpcyBmdW5jdGlvbiBhbmQgdGhlIGNhbGxlci4gIEEKICAgKnN0YWNrbGV2ZWwqIG9mIDEgaXMgdGhlIGZ1bmN0aW9uIGNhbGxpbmcgOmM6ZnVuYzpgUHlFcnJfV2FybkV4YCwgMiBpcyB0aGUKICAgZnVuY3Rpb24gYWJvdmUgdGhhdCwgYW5kIHNvIGZvcnRoLiAgKEFkZGVkIGJ5IE5lYWwgTm9yd2l0ei4pCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMy4wLnJzdCBiL0RvYy93aGF0c25ldy8zLjAucnN0CmluZGV4IDEzM2VjYWIuLjcxYjg3YjggMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8zLjAucnN0CisrKyBiL0RvYy93aGF0c25ldy8zLjAucnN0CkBAIC04MTAsNyArODEwLDcgQEAKICogVGhlIDpmdW5jOmByb3VuZGAgZnVuY3Rpb24gcm91bmRpbmcgc3RyYXRlZ3kgYW5kIHJldHVybiB0eXBlIGhhdmUKICAgY2hhbmdlZC4gIEV4YWN0IGhhbGZ3YXkgY2FzZXMgYXJlIG5vdyByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IGV2ZW4KICAgcmVzdWx0IGluc3RlYWQgb2YgYXdheSBmcm9tIHplcm8uICAoRm9yIGV4YW1wbGUsIGBgcm91bmQoMi41KWBgIG5vdwotICByZXR1cm5zIGBgMmBgIHJhdGhlciB0aGFuIGBgM2BgLikgIDpmdW5jOmByb3VuZCh4Wywgbl0pYCBub3cKKyAgcmV0dXJucyBgYDJgYCByYXRoZXIgdGhhbiBgYDNgYC4pICBgYHJvdW5kKHhbLCBuXSlgYCBub3cKICAgZGVsZWdhdGVzIHRvIGBgeC5fX3JvdW5kX18oW25dKWBgIGluc3RlYWQgb2YgYWx3YXlzIHJldHVybmluZyBhCiAgIGZsb2F0LiAgSXQgZ2VuZXJhbGx5IHJldHVybnMgYW4gaW50ZWdlciB3aGVuIGNhbGxlZCB3aXRoIGEgc2luZ2xlCiAgIGFyZ3VtZW50IGFuZCBhIHZhbHVlIG9mIHRoZSBzYW1lIHR5cGUgYXMgYGB4YGAgd2hlbiBjYWxsZWQgd2l0aCB0d28KZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8zLjIucnN0IGIvRG9jL3doYXRzbmV3LzMuMi5yc3QKaW5kZXggMDk2NDBmNi4uNmYwZTQwNyAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzMuMi5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzMuMi5yc3QKQEAgLTUwLDcgKzUwLDcgQEAKIAogVGhpcyBhcnRpY2xlIGV4cGxhaW5zIHRoZSBuZXcgZmVhdHVyZXMgaW4gUHl0aG9uIDMuMiBhcyBjb21wYXJlZCB0byAzLjEuICBJdAogZm9jdXNlcyBvbiBhIGZldyBoaWdobGlnaHRzIGFuZCBnaXZlcyBhIGZldyBleGFtcGxlcy4gIEZvciBmdWxsIGRldGFpbHMsIHNlZSB0aGUKLTpzb3VyY2U6YE1pc2MvTkVXUyA8TWlzYy9ORVdTPmAgZmlsZS4KK2BNaXNjL05FV1MgPGh0dHA6Ly9oZy5weXRob24ub3JnL2NweXRob24vZmlsZS8zLjIvTWlzYy9ORVdTPmBfIGZpbGUuCiAKIC4uIHNlZWFsc286OgogCkBAIC0yNjgsNyArMjY4LDcgQEAKICAgICAgIGUuc3VibWl0KHNodXRpbC5jb3B5LCAnc3JjMS50eHQnLCAnZGVzdDEudHh0JykKICAgICAgIGUuc3VibWl0KHNodXRpbC5jb3B5LCAnc3JjMi50eHQnLCAnZGVzdDIudHh0JykKICAgICAgIGUuc3VibWl0KHNodXRpbC5jb3B5LCAnc3JjMy50eHQnLCAnZGVzdDMudHh0JykKLSAgICAgIGUuc3VibWl0KHNodXRpbC5jb3B5LCAnc3JjNC50eHQnLCAnZGVzdDQudHh0JykKKyAgICAgIGUuc3VibWl0KHNodXRpbC5jb3B5LCAnc3JjMy50eHQnLCAnZGVzdDQudHh0JykKIAogLi4gc2VlYWxzbzo6CiAKQEAgLTIzNTIsNyArMjM1Miw3IEBACiAgIChDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdTsgOmlzc3VlOmAzMDAxYC4pCiAKICogVGhlIGZhc3Qtc2VhcmNoIGFsZ29yaXRobSBpbiBzdHJpbmdsaWIgaXMgbm93IHVzZWQgYnkgdGhlIDptZXRoOmBzcGxpdGAsCi0gIDptZXRoOmBzcGxpdGxpbmVzYCBhbmQgOm1ldGg6YHJlcGxhY2VgIG1ldGhvZHMgb24KKyAgOm1ldGg6YHJzcGxpdGAsIDptZXRoOmBzcGxpdGxpbmVzYCBhbmQgOm1ldGg6YHJlcGxhY2VgIG1ldGhvZHMgb24KICAgOmNsYXNzOmBieXRlc2AsIDpjbGFzczpgYnl0ZWFycmF5YCBhbmQgOmNsYXNzOmBzdHJgIG9iamVjdHMuIExpa2V3aXNlLCB0aGUKICAgYWxnb3JpdGhtIGlzIGFsc28gdXNlZCBieSA6bWV0aDpgcmZpbmRgLCA6bWV0aDpgcmluZGV4YCwgOm1ldGg6YHJzcGxpdGAgYW5kCiAgIDptZXRoOmBycGFydGl0aW9uYC4KQEAgLTI0NjksMTQgKzI0NjksMTQgQEAKIAogSW4gYWRkaXRpb24gdG8gdGhlIGV4aXN0aW5nIFN1YnZlcnNpb24gY29kZSByZXBvc2l0b3J5IGF0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZwogdGhlcmUgaXMgbm93IGEgYE1lcmN1cmlhbCA8aHR0cDovL21lcmN1cmlhbC5zZWxlbmljLmNvbS8+YF8gcmVwb3NpdG9yeSBhdAotaHR0cDovL2hnLnB5dGhvbi5vcmcvXC4KK2h0dHA6Ly9oZy5weXRob24ub3JnLyAuCiAKIEFmdGVyIHRoZSAzLjIgcmVsZWFzZSwgdGhlcmUgYXJlIHBsYW5zIHRvIHN3aXRjaCB0byBNZXJjdXJpYWwgYXMgdGhlIHByaW1hcnkKIHJlcG9zaXRvcnkuICBUaGlzIGRpc3RyaWJ1dGVkIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gc2hvdWxkIG1ha2UgaXQgZWFzaWVyIGZvcgogbWVtYmVycyBvZiB0aGUgY29tbXVuaXR5IHRvIGNyZWF0ZSBhbmQgc2hhcmUgZXh0ZXJuYWwgY2hhbmdlc2V0cy4gIFNlZQogOnBlcDpgMzg1YCBmb3IgZGV0YWlscy4KIAotVG8gbGVhcm4gdGhlIG5ldyB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtLCBzZWUgdGhlIGB0dXRvcmlhbCBieSBKb2VsCitUbyBsZWFybiB0byB1c2UgdGhlIG5ldyB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtLCBzZWUgdGhlIGB0dXRvcmlhbCBieSBKb2VsCiBTcG9sc2t5IDxodHRwOi8vaGdpbml0LmNvbT5gXyBvciB0aGUgYEd1aWRlIHRvIE1lcmN1cmlhbCBXb3JrZmxvd3MKIDxodHRwOi8vbWVyY3VyaWFsLnNlbGVuaWMuY29tL2d1aWRlLz5gXy4KIApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzMuMy5yc3QgYi9Eb2Mvd2hhdHNuZXcvMy4zLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWE0OTk1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL3doYXRzbmV3LzMuMy5yc3QKQEAgLTAsMCArMSwyNTEyIEBACisqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgIFdoYXQncyBOZXcgSW4gUHl0aG9uIDMuMworKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisuLiBSdWxlcyBmb3IgbWFpbnRlbmFuY2U6CisKKyAgICogQW55b25lIGNhbiBhZGQgdGV4dCB0byB0aGlzIGRvY3VtZW50LiAgRG8gbm90IHNwZW5kIHZlcnkgbXVjaCB0aW1lCisgICBvbiB0aGUgd29yZGluZyBvZiB5b3VyIGNoYW5nZXMsIGJlY2F1c2UgeW91ciB0ZXh0IHdpbGwgcHJvYmFibHkKKyAgIGdldCByZXdyaXR0ZW4gdG8gc29tZSBkZWdyZWUuCisKKyAgICogVGhlIG1haW50YWluZXIgd2lsbCBnbyB0aHJvdWdoIE1pc2MvTkVXUyBwZXJpb2RpY2FsbHkgYW5kIGFkZAorICAgY2hhbmdlczsgaXQncyB0aGVyZWZvcmUgbW9yZSBpbXBvcnRhbnQgdG8gYWRkIHlvdXIgY2hhbmdlcyB0bworICAgTWlzYy9ORVdTIHRoYW4gdG8gdGhpcyBmaWxlLgorCisgICAqIFRoaXMgaXMgbm90IGEgY29tcGxldGUgbGlzdCBvZiBldmVyeSBzaW5nbGUgY2hhbmdlOyBjb21wbGV0ZW5lc3MKKyAgIGlzIHRoZSBwdXJwb3NlIG9mIE1pc2MvTkVXUy4gIFNvbWUgY2hhbmdlcyBJIGNvbnNpZGVyIHRvbyBzbWFsbAorICAgb3IgZXNvdGVyaWMgdG8gaW5jbHVkZS4gIElmIHN1Y2ggYSBjaGFuZ2UgaXMgYWRkZWQgdG8gdGhlIHRleHQsCisgICBJJ2xsIGp1c3QgcmVtb3ZlIGl0LiAgKFRoaXMgaXMgYW5vdGhlciByZWFzb24geW91IHNob3VsZG4ndCBzcGVuZAorICAgdG9vIG11Y2ggdGltZSBvbiB3cml0aW5nIHlvdXIgYWRkaXRpb24uKQorCisgICAqIElmIHlvdSB3YW50IHRvIGRyYXcgeW91ciBuZXcgdGV4dCB0byB0aGUgYXR0ZW50aW9uIG9mIHRoZQorICAgbWFpbnRhaW5lciwgYWRkICdYWFgnIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhcmFncmFwaCBvcgorICAgc2VjdGlvbi4KKworICAgKiBJdCdzIE9LIHRvIGp1c3QgYWRkIGEgZnJhZ21lbnRhcnkgbm90ZSBhYm91dCBhIGNoYW5nZS4gIEZvcgorICAgZXhhbXBsZTogIlhYWCBEZXNjcmliZSB0aGUgdHJhbnNtb2dyaWZ5KCkgZnVuY3Rpb24gYWRkZWQgdG8gdGhlCisgICBzb2NrZXQgbW9kdWxlLiIgIFRoZSBtYWludGFpbmVyIHdpbGwgcmVzZWFyY2ggdGhlIGNoYW5nZSBhbmQKKyAgIHdyaXRlIHRoZSBuZWNlc3NhcnkgdGV4dC4KKworICAgKiBZb3UgY2FuIGNvbW1lbnQgb3V0IHlvdXIgYWRkaXRpb25zIGlmIHlvdSBsaWtlLCBidXQgaXQncyBub3QKKyAgIG5lY2Vzc2FyeSAoZXNwZWNpYWxseSB3aGVuIGEgZmluYWwgcmVsZWFzZSBpcyBzb21lIG1vbnRocyBhd2F5KS4KKworICAgKiBDcmVkaXQgdGhlIGF1dGhvciBvZiBhIHBhdGNoIG9yIGJ1Z2ZpeC4gICBKdXN0IHRoZSBuYW1lIGlzCisgICBzdWZmaWNpZW50OyB0aGUgZS1tYWlsIGFkZHJlc3MgaXNuJ3QgbmVjZXNzYXJ5LgorCisgICAqIEl0J3MgaGVscGZ1bCB0byBhZGQgdGhlIGJ1Zy9wYXRjaCBudW1iZXIgYXMgYSBjb21tZW50OgorCisgICBYWFggRGVzY3JpYmUgdGhlIHRyYW5zbW9ncmlmeSgpIGZ1bmN0aW9uIGFkZGVkIHRvIHRoZSBzb2NrZXQKKyAgIG1vZHVsZS4KKyAgIChDb250cmlidXRlZCBieSBQLlkuIERldmVsb3BlciBpbiA6aXNzdWU6YDEyMzQ1YC4pCisKKyAgIFRoaXMgc2F2ZXMgdGhlIG1haW50YWluZXIgdGhlIGVmZm9ydCBvZiBnb2luZyB0aHJvdWdoIHRoZSBNZXJjdXJpYWwgbG9nCisgICB3aGVuIHJlc2VhcmNoaW5nIGEgY2hhbmdlLgorCitUaGlzIGFydGljbGUgZXhwbGFpbnMgdGhlIG5ldyBmZWF0dXJlcyBpbiBQeXRob24gMy4zLCBjb21wYXJlZCB0byAzLjIuCitQeXRob24gMy4zIHdhcyByZWxlYXNlZCBvbiBTZXB0ZW1iZXIgMjksIDIwMTIuICBGb3IgZnVsbCBkZXRhaWxzLAorc2VlIHRoZSBgY2hhbmdlbG9nIDxodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMy93aGF0c25ldy9jaGFuZ2Vsb2cuaHRtbD5gXy4KKworLi4gc2VlYWxzbzo6CisKKyAgICA6cGVwOmAzOThgIC0gUHl0aG9uIDMuMyBSZWxlYXNlIFNjaGVkdWxlCisKKworU3VtbWFyeSAtLSBSZWxlYXNlIGhpZ2hsaWdodHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIFRoaXMgc2VjdGlvbiBzaW5nbGVzIG91dCB0aGUgbW9zdCBpbXBvcnRhbnQgY2hhbmdlcyBpbiBQeXRob24gMy4zLgorICAgQnJldml0eSBpcyBrZXkuCisKK05ldyBzeW50YXggZmVhdHVyZXM6CisKKyogTmV3IGBgeWllbGQgZnJvbWBgIGV4cHJlc3Npb24gZm9yIDpyZWY6YGdlbmVyYXRvciBkZWxlZ2F0aW9uIDxwZXAtMzgwPmAuCisqIFRoZSBgYHUndW5pY29kZSdgYCBzeW50YXggaXMgYWNjZXB0ZWQgYWdhaW4gZm9yIDpjbGFzczpgc3RyYCBvYmplY3RzLgorCitOZXcgbGlicmFyeSBtb2R1bGVzOgorCisqIDptb2Q6YGZhdWx0aGFuZGxlcmAgKGhlbHBzIGRlYnVnZ2luZyBsb3ctbGV2ZWwgY3Jhc2hlcykKKyogOm1vZDpgaXBhZGRyZXNzYCAoaGlnaC1sZXZlbCBvYmplY3RzIHJlcHJlc2VudGluZyBJUCBhZGRyZXNzZXMgYW5kIG1hc2tzKQorKiA6bW9kOmBsem1hYCAoY29tcHJlc3MgZGF0YSB1c2luZyB0aGUgWFogLyBMWk1BIGFsZ29yaXRobSkKKyogOm1vZDpgdW5pdHRlc3QubW9ja2AgKHJlcGxhY2UgcGFydHMgb2YgeW91ciBzeXN0ZW0gdW5kZXIgdGVzdCB3aXRoIG1vY2sgb2JqZWN0cykKKyogOm1vZDpgdmVudmAgKFB5dGhvbiA6cmVmOmB2aXJ0dWFsIGVudmlyb25tZW50cyA8cGVwLTQwNT5gLCBhcyBpbiB0aGUKKyAgcG9wdWxhciBgYHZpcnR1YWxlbnZgYCBwYWNrYWdlKQorCitOZXcgYnVpbHQtaW4gZmVhdHVyZXM6CisKKyogUmV3b3JrZWQgOnJlZjpgSS9PIGV4Y2VwdGlvbiBoaWVyYXJjaHkgPHBlcC0zMTUxPmAuCisKK0ltcGxlbWVudGF0aW9uIGltcHJvdmVtZW50czoKKworKiBSZXdyaXR0ZW4gOnJlZjpgaW1wb3J0IG1hY2hpbmVyeSA8aW1wb3J0bGliPmAgYmFzZWQgb24gOm1vZDpgaW1wb3J0bGliYC4KKyogTW9yZSBjb21wYWN0IDpyZWY6YHVuaWNvZGUgc3RyaW5ncyA8cGVwLTM5Mz5gLgorKiBNb3JlIGNvbXBhY3QgOnJlZjpgYXR0cmlidXRlIGRpY3Rpb25hcmllcyA8cGVwLTQxMj5gLgorCitTaWduaWZpY2FudGx5IEltcHJvdmVkIExpYnJhcnkgTW9kdWxlczoKKworKiBDIEFjY2VsZXJhdG9yIGZvciB0aGUgOnJlZjpgZGVjaW1hbCA8bmV3LWRlY2ltYWw+YCBtb2R1bGUuCisqIEJldHRlciB1bmljb2RlIGhhbmRsaW5nIGluIHRoZSA6cmVmOmBlbWFpbCA8bmV3LWVtYWlsPmAgbW9kdWxlCisgICg6dGVybTpgcHJvdmlzaW9uYWwgPHByb3Zpc2lvbmFsIHBhY2thZ2U+YCkuCisKK1NlY3VyaXR5IGltcHJvdmVtZW50czoKKworKiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgc3dpdGNoZWQgb24gYnkgZGVmYXVsdC4KKworUGxlYXNlIHJlYWQgb24gZm9yIGEgY29tcHJlaGVuc2l2ZSBsaXN0IG9mIHVzZXItZmFjaW5nIGNoYW5nZXMuCisKKworLi4gX3BlcC00MDU6CisKK1BFUCA0MDU6IFZpcnR1YWwgRW52aXJvbm1lbnRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitWaXJ0dWFsIGVudmlyb25tZW50cyBoZWxwIGNyZWF0ZSBzZXBhcmF0ZSBQeXRob24gc2V0dXBzIHdoaWxlIHNoYXJpbmcgYQorc3lzdGVtLXdpZGUgYmFzZSBpbnN0YWxsLCBmb3IgZWFzZSBvZiBtYWludGVuYW5jZS4gIFZpcnR1YWwgZW52aXJvbm1lbnRzCitoYXZlIHRoZWlyIG93biBzZXQgb2YgcHJpdmF0ZSBzaXRlIHBhY2thZ2VzIChpLmUuIGxvY2FsbHktaW5zdGFsbGVkCitsaWJyYXJpZXMpLCBhbmQgYXJlIG9wdGlvbmFsbHkgc2VncmVnYXRlZCBmcm9tIHRoZSBzeXN0ZW0td2lkZSBzaXRlCitwYWNrYWdlcy4gIFRoZWlyIGNvbmNlcHQgYW5kIGltcGxlbWVudGF0aW9uIGFyZSBpbnNwaXJlZCBieSB0aGUgcG9wdWxhcgorYGB2aXJ0dWFsZW52YGAgdGhpcmQtcGFydHkgcGFja2FnZSwgYnV0IGJlbmVmaXQgZnJvbSB0aWdodGVyIGludGVncmF0aW9uCit3aXRoIHRoZSBpbnRlcnByZXRlciBjb3JlLgorCitUaGlzIFBFUCBhZGRzIHRoZSA6bW9kOmB2ZW52YCBtb2R1bGUgZm9yIHByb2dyYW1tYXRpYyBhY2Nlc3MsIGFuZCB0aGUKKzpyZWY6YHB5dmVudiA8c2NyaXB0cy1weXZlbnY+YCBzY3JpcHQgZm9yIGNvbW1hbmQtbGluZSBhY2Nlc3MgYW5kCithZG1pbmlzdHJhdGlvbi4gIFRoZSBQeXRob24gaW50ZXJwcmV0ZXIgY2hlY2tzIGZvciBhIGBgcHl2ZW52LmNmZ2BgLAorZmlsZSB3aG9zZSBleGlzdGVuY2Ugc2lnbmFscyB0aGUgYmFzZSBvZiBhIHZpcnR1YWwgZW52aXJvbm1lbnQncyBkaXJlY3RvcnkKK3RyZWUuCisKKy4uIHNlZWFsc286OgorCisgICAgOnBlcDpgNDA1YCAtIFB5dGhvbiBWaXJ0dWFsIEVudmlyb25tZW50cworICAgICAgIFBFUCB3cml0dGVuIGJ5IENhcmwgTWV5ZXI7IGltcGxlbWVudGF0aW9uIGJ5IENhcmwgTWV5ZXIgYW5kIFZpbmF5IFNhamlwCisKKworUEVQIDQyMDogSW1wbGljaXQgTmFtZXNwYWNlIFBhY2thZ2VzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworTmF0aXZlIHN1cHBvcnQgZm9yIHBhY2thZ2UgZGlyZWN0b3JpZXMgdGhhdCBkb24ndCByZXF1aXJlIGBgX19pbml0X18ucHlgYAorbWFya2VyIGZpbGVzIGFuZCBjYW4gYXV0b21hdGljYWxseSBzcGFuIG11bHRpcGxlIHBhdGggc2VnbWVudHMgKGluc3BpcmVkIGJ5Cit2YXJpb3VzIHRoaXJkIHBhcnR5IGFwcHJvYWNoZXMgdG8gbmFtZXNwYWNlIHBhY2thZ2VzLCBhcyBkZXNjcmliZWQgaW4KKzpwZXA6YDQyMGApCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0MjBgIC0gSW1wbGljaXQgTmFtZXNwYWNlIFBhY2thZ2VzCisgICAgICBQRVAgd3JpdHRlbiBieSBFcmljIFYuIFNtaXRoOyBpbXBsZW1lbnRhdGlvbiBieSBFcmljIFYuIFNtaXRoCisgICAgICBhbmQgQmFycnkgV2Fyc2F3CisKKworLi4gX3BlcC0zMTE4LXVwZGF0ZToKKworUEVQIDMxMTg6IE5ldyBtZW1vcnl2aWV3IGltcGxlbWVudGF0aW9uIGFuZCBidWZmZXIgcHJvdG9jb2wgZG9jdW1lbnRhdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgaW1wbGVtZW50YXRpb24gb2YgOnBlcDpgMzExOGAgaGFzIGJlZW4gc2lnbmlmaWNhbnRseSBpbXByb3ZlZC4KKworVGhlIG5ldyBtZW1vcnl2aWV3IGltcGxlbWVudGF0aW9uIGNvbXByZWhlbnNpdmVseSBmaXhlcyBhbGwgb3duZXJzaGlwIGFuZAorbGlmZXRpbWUgaXNzdWVzIG9mIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBmaWVsZHMgaW4gdGhlIFB5X2J1ZmZlciBzdHJ1Y3QKK3RoYXQgbGVkIHRvIG11bHRpcGxlIGNyYXNoIHJlcG9ydHMuIEFkZGl0aW9uYWxseSwgc2V2ZXJhbCBmdW5jdGlvbnMgdGhhdAorY3Jhc2hlZCBvciByZXR1cm5lZCBpbmNvcnJlY3QgcmVzdWx0cyBmb3Igbm9uLWNvbnRpZ3VvdXMgb3IgbXVsdGktZGltZW5zaW9uYWwKK2lucHV0IGhhdmUgYmVlbiBmaXhlZC4KKworVGhlIG1lbW9yeXZpZXcgb2JqZWN0IG5vdyBoYXMgYSBQRVAtMzExOCBjb21wbGlhbnQgZ2V0YnVmZmVycHJvYygpCit0aGF0IGNoZWNrcyB0aGUgY29uc3VtZXIncyByZXF1ZXN0IHR5cGUuIE1hbnkgbmV3IGZlYXR1cmVzIGhhdmUgYmVlbgorYWRkZWQsIG1vc3Qgb2YgdGhlbSB3b3JrIGluIGZ1bGwgZ2VuZXJhbGl0eSBmb3Igbm9uLWNvbnRpZ3VvdXMgYXJyYXlzCithbmQgYXJyYXlzIHdpdGggc3Vib2Zmc2V0cy4KKworVGhlIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gdXBkYXRlZCwgY2xlYXJseSBzcGVsbGluZyBvdXQgcmVzcG9uc2liaWxpdGllcworZm9yIGJvdGggZXhwb3J0ZXJzIGFuZCBjb25zdW1lcnMuIEJ1ZmZlciByZXF1ZXN0IGZsYWdzIGFyZSBncm91cGVkIGludG8KK2Jhc2ljIGFuZCBjb21wb3VuZCBmbGFncy4gVGhlIG1lbW9yeSBsYXlvdXQgb2Ygbm9uLWNvbnRpZ3VvdXMgYW5kCittdWx0aS1kaW1lbnNpb25hbCBOdW1QeS1zdHlsZSBhcnJheXMgaXMgZXhwbGFpbmVkLgorCitGZWF0dXJlcworLS0tLS0tLS0KKworKiBBbGwgbmF0aXZlIHNpbmdsZSBjaGFyYWN0ZXIgZm9ybWF0IHNwZWNpZmllcnMgaW4gc3RydWN0IG1vZHVsZSBzeW50YXgKKyAgKG9wdGlvbmFsbHkgcHJlZml4ZWQgd2l0aCAnQCcpIGFyZSBub3cgc3VwcG9ydGVkLgorCisqIFdpdGggc29tZSByZXN0cmljdGlvbnMsIHRoZSBjYXN0KCkgbWV0aG9kIGFsbG93cyBjaGFuZ2luZyBvZiBmb3JtYXQgYW5kCisgIHNoYXBlIG9mIEMtY29udGlndW91cyBhcnJheXMuCisKKyogTXVsdGktZGltZW5zaW9uYWwgbGlzdCByZXByZXNlbnRhdGlvbnMgYXJlIHN1cHBvcnRlZCBmb3IgYW55IGFycmF5IHR5cGUuCisKKyogTXVsdGktZGltZW5zaW9uYWwgY29tcGFyaXNvbnMgYXJlIHN1cHBvcnRlZCBmb3IgYW55IGFycmF5IHR5cGUuCisKKyogT25lLWRpbWVuc2lvbmFsIG1lbW9yeXZpZXdzIG9mIGhhc2hhYmxlIChyZWFkLW9ubHkpIHR5cGVzIHdpdGggZm9ybWF0cyBCLAorICBiIG9yIGMgYXJlIG5vdyBoYXNoYWJsZS4gKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMTM0MTFgKQorCisqIEFyYml0cmFyeSBzbGljaW5nIG9mIGFueSAxLUQgYXJyYXlzIHR5cGUgaXMgc3VwcG9ydGVkLiBGb3IgZXhhbXBsZSwgaXQKKyAgaXMgbm93IHBvc3NpYmxlIHRvIHJldmVyc2UgYSBtZW1vcnl2aWV3IGluIE8oMSkgYnkgdXNpbmcgYSBuZWdhdGl2ZSBzdGVwLgorCitBUEkgY2hhbmdlcworLS0tLS0tLS0tLS0KKworKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZGltZW5zaW9ucyBpcyBvZmZpY2lhbGx5IGxpbWl0ZWQgdG8gNjQuCisKKyogVGhlIHJlcHJlc2VudGF0aW9uIG9mIGVtcHR5IHNoYXBlLCBzdHJpZGVzIGFuZCBzdWJvZmZzZXRzIGlzIG5vdworICBhbiBlbXB0eSB0dXBsZSBpbnN0ZWFkIG9mIE5vbmUuCisKKyogQWNjZXNzaW5nIGEgbWVtb3J5dmlldyBlbGVtZW50IHdpdGggZm9ybWF0ICdCJyAodW5zaWduZWQgYnl0ZXMpCisgIG5vdyByZXR1cm5zIGFuIGludGVnZXIgKGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgc3RydWN0IG1vZHVsZSBzeW50YXgpLgorICBGb3IgcmV0dXJuaW5nIGEgYnl0ZXMgb2JqZWN0IHRoZSB2aWV3IG11c3QgYmUgY2FzdCB0byAnYycgZmlyc3QuCisKKyogbWVtb3J5dmlldyBjb21wYXJpc29ucyBub3cgdXNlIHRoZSBsb2dpY2FsIHN0cnVjdHVyZSBvZiB0aGUgb3BlcmFuZHMKKyAgYW5kIGNvbXBhcmUgYWxsIGFycmF5IGVsZW1lbnRzIGJ5IHZhbHVlLiBBbGwgZm9ybWF0IHN0cmluZ3MgaW4gc3RydWN0CisgIG1vZHVsZSBzeW50YXggYXJlIHN1cHBvcnRlZC4gVmlld3Mgd2l0aCB1bnJlY29nbmlzZWQgZm9ybWF0IHN0cmluZ3MKKyAgYXJlIHN0aWxsIHBlcm1pdHRlZCwgYnV0IHdpbGwgYWx3YXlzIGNvbXBhcmUgYXMgdW5lcXVhbCwgcmVnYXJkbGVzcworICBvZiB2aWV3IGNvbnRlbnRzLgorCisqIEZvciBmdXJ0aGVyIGNoYW5nZXMgc2VlIGBCdWlsZCBhbmQgQyBBUEkgQ2hhbmdlc2BfIGFuZCBgUG9ydGluZyBDIGNvZGVgXyAuCisKKyhDb250cmlidXRlZCBieSBTdGVmYW4gS3JhaCBpbiA6aXNzdWU6YDEwMTgxYCkKKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDMxMThgIC0gUmV2aXNpbmcgdGhlIEJ1ZmZlciBQcm90b2NvbAorCisKKy4uIF9wZXAtMzkzOgorCitQRVAgMzkzOiBGbGV4aWJsZSBTdHJpbmcgUmVwcmVzZW50YXRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgVW5pY29kZSBzdHJpbmcgdHlwZSBpcyBjaGFuZ2VkIHRvIHN1cHBvcnQgbXVsdGlwbGUgaW50ZXJuYWwKK3JlcHJlc2VudGF0aW9ucywgZGVwZW5kaW5nIG9uIHRoZSBjaGFyYWN0ZXIgd2l0aCB0aGUgbGFyZ2VzdCBVbmljb2RlIG9yZGluYWwKKygxLCAyLCBvciA0IGJ5dGVzKSBpbiB0aGUgcmVwcmVzZW50ZWQgc3RyaW5nLiAgVGhpcyBhbGxvd3MgYSBzcGFjZS1lZmZpY2llbnQKK3JlcHJlc2VudGF0aW9uIGluIGNvbW1vbiBjYXNlcywgYnV0IGdpdmVzIGFjY2VzcyB0byBmdWxsIFVDUy00IG9uIGFsbAorc3lzdGVtcy4gIEZvciBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcgQVBJcywgc2V2ZXJhbCByZXByZXNlbnRhdGlvbnMgbWF5CitleGlzdCBpbiBwYXJhbGxlbDsgb3ZlciB0aW1lLCB0aGlzIGNvbXBhdGliaWxpdHkgc2hvdWxkIGJlIHBoYXNlZCBvdXQuCisKK09uIHRoZSBQeXRob24gc2lkZSwgdGhlcmUgc2hvdWxkIGJlIG5vIGRvd25zaWRlIHRvIHRoaXMgY2hhbmdlLgorCitPbiB0aGUgQyBBUEkgc2lkZSwgUEVQIDM5MyBpcyBmdWxseSBiYWNrd2FyZCBjb21wYXRpYmxlLiAgVGhlIGxlZ2FjeSBBUEkKK3Nob3VsZCByZW1haW4gYXZhaWxhYmxlIGF0IGxlYXN0IGZpdmUgeWVhcnMuICBBcHBsaWNhdGlvbnMgdXNpbmcgdGhlIGxlZ2FjeQorQVBJIHdpbGwgbm90IGZ1bGx5IGJlbmVmaXQgb2YgdGhlIG1lbW9yeSByZWR1Y3Rpb24sIG9yIC0gd29yc2UgLSBtYXkgdXNlCithIGJpdCBtb3JlIG1lbW9yeSwgYmVjYXVzZSBQeXRob24gbWF5IGhhdmUgdG8gbWFpbnRhaW4gdHdvIHZlcnNpb25zIG9mIGVhY2gKK3N0cmluZyAoaW4gdGhlIGxlZ2FjeSBmb3JtYXQgYW5kIGluIHRoZSBuZXcgZWZmaWNpZW50IHN0b3JhZ2UpLgorCitGdW5jdGlvbmFsaXR5CistLS0tLS0tLS0tLS0tCisKK0NoYW5nZXMgaW50cm9kdWNlZCBieSA6cGVwOmAzOTNgIGFyZSB0aGUgZm9sbG93aW5nOgorCisqIFB5dGhvbiBub3cgYWx3YXlzIHN1cHBvcnRzIHRoZSBmdWxsIHJhbmdlIG9mIFVuaWNvZGUgY29kZXBvaW50cywgaW5jbHVkaW5nCisgIG5vbi1CTVAgb25lcyAoaS5lLiBmcm9tIGBgVSswMDAwYGAgdG8gYGBVKzEwRkZGRmBgKS4gIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuCisgIG5hcnJvdyBhbmQgd2lkZSBidWlsZHMgbm8gbG9uZ2VyIGV4aXN0cyBhbmQgUHl0aG9uIG5vdyBiZWhhdmVzIGxpa2UgYSB3aWRlCisgIGJ1aWxkLCBldmVuIHVuZGVyIFdpbmRvd3MuCisKKyogV2l0aCB0aGUgZGVhdGggb2YgbmFycm93IGJ1aWxkcywgdGhlIHByb2JsZW1zIHNwZWNpZmljIHRvIG5hcnJvdyBidWlsZHMgaGF2ZQorICBhbHNvIGJlZW4gZml4ZWQsIGZvciBleGFtcGxlOgorCisgICogOmZ1bmM6YGxlbmAgbm93IGFsd2F5cyByZXR1cm5zIDEgZm9yIG5vbi1CTVAgY2hhcmFjdGVycywKKyAgICBzbyBgYGxlbignXFUwMDEwRkZGRicpID09IDFgYDsKKworICAqIHN1cnJvZ2F0ZSBwYWlycyBhcmUgbm90IHJlY29tYmluZWQgaW4gc3RyaW5nIGxpdGVyYWxzLAorICAgIHNvIGBgJ1x1REJGRlx1REZGRicgIT0gJ1xVMDAxMEZGRkYnYGA7CisKKyAgKiBpbmRleGluZyBvciBzbGljaW5nIG5vbi1CTVAgY2hhcmFjdGVycyByZXR1cm5zIHRoZSBleHBlY3RlZCB2YWx1ZSwKKyAgICBzbyBgYCdcVTAwMTBGRkZGJ1swXWBgIG5vdyByZXR1cm5zIGBgJ1xVMDAxMEZGRkYnYGAgYW5kIG5vdCBgYCdcdURCRkYnYGA7CisKKyAgKiBhbGwgb3RoZXIgZnVuY3Rpb25zIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG5vdyBjb3JyZWN0bHkgaGFuZGxlCisgICAgbm9uLUJNUCBjb2RlcG9pbnRzLgorCisqIFRoZSB2YWx1ZSBvZiA6ZGF0YTpgc3lzLm1heHVuaWNvZGVgIGlzIG5vdyBhbHdheXMgYGAxMTE0MTExYGAgKGBgMHgxMEZGRkZgYAorICBpbiBoZXhhZGVjaW1hbCkuICBUaGUgOmM6ZnVuYzpgUHlVbmljb2RlX0dldE1heGAgZnVuY3Rpb24gc3RpbGwgcmV0dXJucworICBlaXRoZXIgYGAweEZGRkZgYCBvciBgYDB4MTBGRkZGYGAgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIGFuZCBpdCBzaG91bGQKKyAgbm90IGJlIHVzZWQgd2l0aCB0aGUgbmV3IFVuaWNvZGUgQVBJIChzZWUgOmlzc3VlOmAxMzA1NGApLgorCisqIFRoZSA6ZmlsZTpgLi9jb25maWd1cmVgIGZsYWcgYGAtLXdpdGgtd2lkZS11bmljb2RlYGAgaGFzIGJlZW4gcmVtb3ZlZC4KKworUGVyZm9ybWFuY2UgYW5kIHJlc291cmNlIHVzYWdlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHN0b3JhZ2Ugb2YgVW5pY29kZSBzdHJpbmdzIG5vdyBkZXBlbmRzIG9uIHRoZSBoaWdoZXN0IGNvZGVwb2ludCBpbiB0aGUgc3RyaW5nOgorCisqIHB1cmUgQVNDSUkgYW5kIExhdGluMSBzdHJpbmdzIChgYFUrMDAwMC1VKzAwRkZgYCkgdXNlIDEgYnl0ZSBwZXIgY29kZXBvaW50OworCisqIEJNUCBzdHJpbmdzIChgYFUrMDAwMC1VK0ZGRkZgYCkgdXNlIDIgYnl0ZXMgcGVyIGNvZGVwb2ludDsKKworKiBub24tQk1QIHN0cmluZ3MgKGBgVSsxMDAwMC1VKzEwRkZGRmBgKSB1c2UgNCBieXRlcyBwZXIgY29kZXBvaW50LgorCitUaGUgbmV0IGVmZmVjdCBpcyB0aGF0IGZvciBtb3N0IGFwcGxpY2F0aW9ucywgbWVtb3J5IHVzYWdlIG9mIHN0cmluZworc3RvcmFnZSBzaG91bGQgZGVjcmVhc2Ugc2lnbmlmaWNhbnRseSAtIGVzcGVjaWFsbHkgY29tcGFyZWQgdG8gZm9ybWVyCit3aWRlIHVuaWNvZGUgYnVpbGRzIC0gYXMsIGluIG1hbnkgY2FzZXMsIHN0cmluZ3Mgd2lsbCBiZSBwdXJlIEFTQ0lJCitldmVuIGluIGludGVybmF0aW9uYWwgY29udGV4dHMgKGJlY2F1c2UgbWFueSBzdHJpbmdzIHN0b3JlIG5vbi1odW1hbgorbGFuZ3VhZ2UgZGF0YSwgc3VjaCBhcyBYTUwgZnJhZ21lbnRzLCBIVFRQIGhlYWRlcnMsIEpTT04tZW5jb2RlZCBkYXRhLAorZXRjLikuICBXZSBhbHNvIGhvcGUgdGhhdCBpdCB3aWxsLCBmb3IgdGhlIHNhbWUgcmVhc29ucywgaW5jcmVhc2UgQ1BVCitjYWNoZSBlZmZpY2llbmN5IG9uIG5vbi10cml2aWFsIGFwcGxpY2F0aW9ucy4gVGhlIG1lbW9yeSB1c2FnZSBvZgorUHl0aG9uIDMuMyBpcyB0d28gdG8gdGhyZWUgdGltZXMgc21hbGxlciB0aGFuIFB5dGhvbiAzLjIsIGFuZCBhIGxpdHRsZQorYml0IGJldHRlciB0aGFuIFB5dGhvbiAyLjcsIG9uIGEgRGphbmdvIGJlbmNobWFyayAoc2VlIHRoZSBQRVAgZm9yCitkZXRhaWxzKS4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDM5M2AgLSBGbGV4aWJsZSBTdHJpbmcgUmVwcmVzZW50YXRpb24KKyAgICAgIFBFUCB3cml0dGVuIGJ5IE1hcnRpbiB2b24gTMO2d2lzOyBpbXBsZW1lbnRhdGlvbiBieSBUb3JzdGVuIEJlY2tlcgorICAgICAgYW5kIE1hcnRpbiB2b24gTMO2d2lzLgorCisKKy4uIF9wZXAtMzk3OgorCitQRVAgMzk3OiBQeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgUHl0aG9uIDMuMyBXaW5kb3dzIGluc3RhbGxlciBub3cgaW5jbHVkZXMgYSBgYHB5YGAgbGF1bmNoZXIgYXBwbGljYXRpb24KK3RoYXQgY2FuIGJlIHVzZWQgdG8gbGF1bmNoIFB5dGhvbiBhcHBsaWNhdGlvbnMgaW4gYSB2ZXJzaW9uIGluZGVwZW5kZW50CitmYXNoaW9uLgorCitUaGlzIGxhdW5jaGVyIGlzIGludm9rZWQgaW1wbGljaXRseSB3aGVuIGRvdWJsZS1jbGlja2luZyBgYCoucHlgYCBmaWxlcy4KK0lmIG9ubHkgYSBzaW5nbGUgUHl0aG9uIHZlcnNpb24gaXMgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0sIHRoYXQgdmVyc2lvbgord2lsbCBiZSB1c2VkIHRvIHJ1biB0aGUgZmlsZS4gSWYgbXVsdGlwbGUgdmVyc2lvbnMgYXJlIGluc3RhbGxlZCwgdGhlIG1vc3QKK3JlY2VudCB2ZXJzaW9uIGlzIHVzZWQgYnkgZGVmYXVsdCwgYnV0IHRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgaW5jbHVkaW5nCithIFVuaXgtc3R5bGUgInNoZWJhbmcgbGluZSIgaW4gdGhlIFB5dGhvbiBzY3JpcHQuCisKK1RoZSBsYXVuY2hlciBjYW4gYWxzbyBiZSB1c2VkIGV4cGxpY2l0bHkgZnJvbSB0aGUgY29tbWFuZCBsaW5lIGFzIHRoZSBgYHB5YGAKK2FwcGxpY2F0aW9uLiBSdW5uaW5nIGBgcHlgYCBmb2xsb3dzIHRoZSBzYW1lIHZlcnNpb24gc2VsZWN0aW9uIHJ1bGVzIGFzCitpbXBsaWNpdGx5IGxhdW5jaGluZyBzY3JpcHRzLCBidXQgYSBtb3JlIHNwZWNpZmljIHZlcnNpb24gY2FuIGJlIHNlbGVjdGVkCitieSBwYXNzaW5nIGFwcHJvcHJpYXRlIGFyZ3VtZW50cyAoc3VjaCBhcyBgYC0zYGAgdG8gcmVxdWVzdCBQeXRob24gMyB3aGVuCitQeXRob24gMiBpcyBhbHNvIGluc3RhbGxlZCwgb3IgYGAtMi42YGAgdG8gc3BlY2lmY2xseSByZXF1ZXN0IGFuIGVhcmxpZXIKK1B5dGhvbiB2ZXJzaW9uIHdoZW4gYSBtb3JlIHJlY2VudCB2ZXJzaW9uIGlzIGluc3RhbGxlZCkuCisKK0luIGFkZGl0aW9uIHRvIHRoZSBsYXVuY2hlciwgdGhlIFdpbmRvd3MgaW5zdGFsbGVyIG5vdyBpbmNsdWRlcyBhbgorb3B0aW9uIHRvIGFkZCB0aGUgbmV3bHkgaW5zdGFsbGVkIFB5dGhvbiB0byB0aGUgc3lzdGVtIFBBVEggKGNvbnRyaWJ1dGVkCitieSBCcmlhbiBDdXJ0aW4gaW4gOmlzc3VlOmAzNTYxYCkuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmAzOTdgIC0gUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzCisgICAgICBQRVAgd3JpdHRlbiBieSBNYXJrIEhhbW1vbmQgYW5kIE1hcnRpbiB2LiBMw7Z3aXM7IGltcGxlbWVudGF0aW9uIGJ5CisgICAgICBWaW5heSBTYWppcC4KKworICAgTGF1bmNoZXIgZG9jdW1lbnRhdGlvbjogOnJlZjpgbGF1bmNoZXJgCisKKyAgIEluc3RhbGxlciBQQVRIIG1vZGlmaWNhdGlvbjogOnJlZjpgd2luZG93cy1wYXRoLW1vZGAKKworCisuLiBfcGVwLTMxNTE6CisKK1BFUCAzMTUxOiBSZXdvcmtpbmcgdGhlIE9TIGFuZCBJTyBleGNlcHRpb24gaGllcmFyY2h5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgaGllcmFyY2h5IG9mIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IG9wZXJhdGluZyBzeXN0ZW0gZXJyb3JzIGlzIG5vdyBib3RoCitzaW1wbGlmaWVkIGFuZCBmaW5lci1ncmFpbmVkLgorCitZb3UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhbnltb3JlIGFib3V0IGNob29zaW5nIHRoZSBhcHByb3ByaWF0ZSBleGNlcHRpb24KK3R5cGUgYmV0d2VlbiA6ZXhjOmBPU0Vycm9yYCwgOmV4YzpgSU9FcnJvcmAsIDpleGM6YEVudmlyb25tZW50RXJyb3JgLAorOmV4YzpgV2luZG93c0Vycm9yYCwgOmV4YzpgbW1hcC5lcnJvcmAsIDpleGM6YHNvY2tldC5lcnJvcmAgb3IKKzpleGM6YHNlbGVjdC5lcnJvcmAuICBBbGwgdGhlc2UgZXhjZXB0aW9uIHR5cGVzIGFyZSBub3cgb25seSBvbmU6Cis6ZXhjOmBPU0Vycm9yYC4gIFRoZSBvdGhlciBuYW1lcyBhcmUga2VwdCBhcyBhbGlhc2VzIGZvciBjb21wYXRpYmlsaXR5CityZWFzb25zLgorCitBbHNvLCBpdCBpcyBub3cgZWFzaWVyIHRvIGNhdGNoIGEgc3BlY2lmaWMgZXJyb3IgY29uZGl0aW9uLiAgSW5zdGVhZCBvZgoraW5zcGVjdGluZyB0aGUgYGBlcnJub2BgIGF0dHJpYnV0ZSAob3IgYGBhcmdzWzBdYGApIGZvciBhIHBhcnRpY3VsYXIKK2NvbnN0YW50IGZyb20gdGhlIDptb2Q6YGVycm5vYCBtb2R1bGUsIHlvdSBjYW4gY2F0Y2ggdGhlIGFkZXF1YXRlCis6ZXhjOmBPU0Vycm9yYCBzdWJjbGFzcy4gIFRoZSBhdmFpbGFibGUgc3ViY2xhc3NlcyBhcmUgdGhlIGZvbGxvd2luZzoKKworKiA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgCisqIDpleGM6YENoaWxkUHJvY2Vzc0Vycm9yYAorKiA6ZXhjOmBDb25uZWN0aW9uRXJyb3JgCisqIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAKKyogOmV4YzpgRmlsZU5vdEZvdW5kRXJyb3JgCisqIDpleGM6YEludGVycnVwdGVkRXJyb3JgCisqIDpleGM6YElzQURpcmVjdG9yeUVycm9yYAorKiA6ZXhjOmBOb3RBRGlyZWN0b3J5RXJyb3JgCisqIDpleGM6YFBlcm1pc3Npb25FcnJvcmAKKyogOmV4YzpgUHJvY2Vzc0xvb2t1cEVycm9yYAorKiA6ZXhjOmBUaW1lb3V0RXJyb3JgCisKK0FuZCB0aGUgOmV4YzpgQ29ubmVjdGlvbkVycm9yYCBpdHNlbGYgaGFzIGZpbmVyLWdyYWluZWQgc3ViY2xhc3NlczoKKworKiA6ZXhjOmBCcm9rZW5QaXBlRXJyb3JgCisqIDpleGM6YENvbm5lY3Rpb25BYm9ydGVkRXJyb3JgCisqIDpleGM6YENvbm5lY3Rpb25SZWZ1c2VkRXJyb3JgCisqIDpleGM6YENvbm5lY3Rpb25SZXNldEVycm9yYAorCitUaGFua3MgdG8gdGhlIG5ldyBleGNlcHRpb25zLCBjb21tb24gdXNhZ2VzIG9mIHRoZSA6bW9kOmBlcnJub2AgY2FuIG5vdyBiZQorYXZvaWRlZC4gIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGUgd3JpdHRlbiBmb3IgUHl0aG9uIDMuMjo6CisKKyAgICBmcm9tIGVycm5vIGltcG9ydCBFTk9FTlQsIEVBQ0NFUywgRVBFUk0KKworICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKCJkb2N1bWVudC50eHQiKSBhcyBmOgorICAgICAgICAgICAgY29udGVudCA9IGYucmVhZCgpCisgICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOgorICAgICAgICBpZiBlcnIuZXJybm8gPT0gRU5PRU5UOgorICAgICAgICAgICAgcHJpbnQoImRvY3VtZW50LnR4dCBmaWxlIGlzIG1pc3NpbmciKQorICAgICAgICBlbGlmIGVyci5lcnJubyBpbiAoRUFDQ0VTLCBFUEVSTSk6CisgICAgICAgICAgICBwcmludCgiWW91IGFyZSBub3QgYWxsb3dlZCB0byByZWFkIGRvY3VtZW50LnR4dCIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZQorCitjYW4gbm93IGJlIHdyaXR0ZW4gd2l0aG91dCB0aGUgOm1vZDpgZXJybm9gIGltcG9ydCBhbmQgd2l0aG91dCBtYW51YWwKK2luc3BlY3Rpb24gb2YgZXhjZXB0aW9uIGF0dHJpYnV0ZXM6OgorCisgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4oImRvY3VtZW50LnR4dCIpIGFzIGY6CisgICAgICAgICAgICBjb250ZW50ID0gZi5yZWFkKCkKKyAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgIHByaW50KCJkb2N1bWVudC50eHQgZmlsZSBpcyBtaXNzaW5nIikKKyAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgorICAgICAgICBwcmludCgiWW91IGFyZSBub3QgYWxsb3dlZCB0byByZWFkIGRvY3VtZW50LnR4dCIpCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmAzMTUxYCAtIFJld29ya2luZyB0aGUgT1MgYW5kIElPIEV4Y2VwdGlvbiBIaWVyYXJjaHkKKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBBbnRvaW5lIFBpdHJvdQorCisKKy4uIGluZGV4OjoKKyAgIHNpbmdsZTogeWllbGQ7IHlpZWxkIGZyb20gKGluIFdoYXQncyBOZXcpCisKKy4uIF9wZXAtMzgwOgorCitQRVAgMzgwOiBTeW50YXggZm9yIERlbGVnYXRpbmcgdG8gYSBTdWJnZW5lcmF0b3IKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQRVAgMzgwIGFkZHMgdGhlIGBgeWllbGQgZnJvbWBgIGV4cHJlc3Npb24sIGFsbG93aW5nIGEgOnRlcm06YGdlbmVyYXRvcmAgdG8KK2RlbGVnYXRlCitwYXJ0IG9mIGl0cyBvcGVyYXRpb25zIHRvIGFub3RoZXIgZ2VuZXJhdG9yLiBUaGlzIGFsbG93cyBhIHNlY3Rpb24gb2YgY29kZQorY29udGFpbmluZyA6a2V5d29yZDpgeWllbGRgIHRvIGJlIGZhY3RvcmVkIG91dCBhbmQgcGxhY2VkIGluIGFub3RoZXIgZ2VuZXJhdG9yLgorQWRkaXRpb25hbGx5LCB0aGUgc3ViZ2VuZXJhdG9yIGlzIGFsbG93ZWQgdG8gcmV0dXJuIHdpdGggYSB2YWx1ZSwgYW5kIHRoZQordmFsdWUgaXMgbWFkZSBhdmFpbGFibGUgdG8gdGhlIGRlbGVnYXRpbmcgZ2VuZXJhdG9yLgorCitXaGlsZSBkZXNpZ25lZCBwcmltYXJpbHkgZm9yIHVzZSBpbiBkZWxlZ2F0aW5nIHRvIGEgc3ViZ2VuZXJhdG9yLCB0aGUgYGB5aWVsZAorZnJvbWBgIGV4cHJlc3Npb24gYWN0dWFsbHkgYWxsb3dzIGRlbGVnYXRpb24gdG8gYXJiaXRyYXJ5IHN1Yml0ZXJhdG9ycy4KKworRm9yIHNpbXBsZSBpdGVyYXRvcnMsIGBgeWllbGQgZnJvbSBpdGVyYWJsZWBgIGlzIGVzc2VudGlhbGx5IGp1c3QgYSBzaG9ydGVuZWQKK2Zvcm0gb2YgYGBmb3IgaXRlbSBpbiBpdGVyYWJsZTogeWllbGQgaXRlbWBgOjoKKworICAgID4+PiBkZWYgZyh4KToKKyAgICAuLi4gICAgIHlpZWxkIGZyb20gcmFuZ2UoeCwgMCwgLTEpCisgICAgLi4uICAgICB5aWVsZCBmcm9tIHJhbmdlKHgpCisgICAgLi4uCisgICAgPj4+IGxpc3QoZyg1KSkKKyAgICBbNSwgNCwgMywgMiwgMSwgMCwgMSwgMiwgMywgNF0KKworSG93ZXZlciwgdW5saWtlIGFuIG9yZGluYXJ5IGxvb3AsIGBgeWllbGQgZnJvbWBgIGFsbG93cyBzdWJnZW5lcmF0b3JzIHRvCityZWNlaXZlIHNlbnQgYW5kIHRocm93biB2YWx1ZXMgZGlyZWN0bHkgZnJvbSB0aGUgY2FsbGluZyBzY29wZSwgYW5kCityZXR1cm4gYSBmaW5hbCB2YWx1ZSB0byB0aGUgb3V0ZXIgZ2VuZXJhdG9yOjoKKworICAgID4+PiBkZWYgYWNjdW11bGF0ZSgpOgorICAgIC4uLiAgICAgdGFsbHkgPSAwCisgICAgLi4uICAgICB3aGlsZSAxOgorICAgIC4uLiAgICAgICAgIG5leHQgPSB5aWVsZAorICAgIC4uLiAgICAgICAgIGlmIG5leHQgaXMgTm9uZToKKyAgICAuLi4gICAgICAgICAgICAgcmV0dXJuIHRhbGx5CisgICAgLi4uICAgICAgICAgdGFsbHkgKz0gbmV4dAorICAgIC4uLgorICAgID4+PiBkZWYgZ2F0aGVyX3RhbGxpZXModGFsbGllcyk6CisgICAgLi4uICAgICB3aGlsZSAxOgorICAgIC4uLiAgICAgICAgIHRhbGx5ID0geWllbGQgZnJvbSBhY2N1bXVsYXRlKCkKKyAgICAuLi4gICAgICAgICB0YWxsaWVzLmFwcGVuZCh0YWxseSkKKyAgICAuLi4KKyAgICA+Pj4gdGFsbGllcyA9IFtdCisgICAgPj4+IGFjYyA9IGdhdGhlcl90YWxsaWVzKHRhbGxpZXMpCisgICAgPj4+IG5leHQoYWNjKSAjIEVuc3VyZSB0aGUgYWNjdW11bGF0b3IgaXMgcmVhZHkgdG8gYWNjZXB0IHZhbHVlcworICAgID4+PiBmb3IgaSBpbiByYW5nZSg0KToKKyAgICAuLi4gICAgIGFjYy5zZW5kKGkpCisgICAgLi4uCisgICAgPj4+IGFjYy5zZW5kKE5vbmUpICMgRmluaXNoIHRoZSBmaXJzdCB0YWxseQorICAgID4+PiBmb3IgaSBpbiByYW5nZSg1KToKKyAgICAuLi4gICAgIGFjYy5zZW5kKGkpCisgICAgLi4uCisgICAgPj4+IGFjYy5zZW5kKE5vbmUpICMgRmluaXNoIHRoZSBzZWNvbmQgdGFsbHkKKyAgICA+Pj4gdGFsbGllcworICAgIFs2LCAxMF0KKworVGhlIG1haW4gcHJpbmNpcGxlIGRyaXZpbmcgdGhpcyBjaGFuZ2UgaXMgdG8gYWxsb3cgZXZlbiBnZW5lcmF0b3JzIHRoYXQgYXJlCitkZXNpZ25lZCB0byBiZSB1c2VkIHdpdGggdGhlIGBgc2VuZGBgIGFuZCBgYHRocm93YGAgbWV0aG9kcyB0byBiZSBzcGxpdCBpbnRvCittdWx0aXBsZSBzdWJnZW5lcmF0b3JzIGFzIGVhc2lseSBhcyBhIHNpbmdsZSBsYXJnZSBmdW5jdGlvbiBjYW4gYmUgc3BsaXQgaW50bworbXVsdGlwbGUgc3ViZnVuY3Rpb25zLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzgwYCAtIFN5bnRheCBmb3IgRGVsZWdhdGluZyB0byBhIFN1YmdlbmVyYXRvcgorICAgICAgUEVQIHdyaXR0ZW4gYnkgR3JlZyBFd2luZzsgaW1wbGVtZW50YXRpb24gYnkgR3JlZyBFd2luZywgaW50ZWdyYXRlZCBpbnRvCisgICAgICAzLjMgYnkgUmVuYXVkIEJsYW5jaCwgUnlhbiBLZWxseSBhbmQgTmljayBDb2dobGFuOyBkb2N1bWVudGF0aW9uIGJ5CisgICAgICBaYmlnbmlldyBKxJlkcnplamV3c2tpLVN6bWVrIGFuZCBOaWNrIENvZ2hsYW4KKworCitQRVAgNDA5OiBTdXBwcmVzc2luZyBleGNlcHRpb24gY29udGV4dAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUEVQIDQwOSBpbnRyb2R1Y2VzIG5ldyBzeW50YXggdGhhdCBhbGxvd3MgdGhlIGRpc3BsYXkgb2YgdGhlIGNoYWluZWQKK2V4Y2VwdGlvbiBjb250ZXh0IHRvIGJlIGRpc2FibGVkLiBUaGlzIGFsbG93cyBjbGVhbmVyIGVycm9yIG1lc3NhZ2VzIGluCithcHBsaWNhdGlvbnMgdGhhdCBjb252ZXJ0IGJldHdlZW4gZXhjZXB0aW9uIHR5cGVzOjoKKworICAgID4+PiBjbGFzcyBEOgorICAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4dHJhKToKKyAgICAuLi4gICAgICAgICBzZWxmLl9leHRyYV9hdHRyaWJ1dGVzID0gZXh0cmEKKyAgICAuLi4gICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRyKToKKyAgICAuLi4gICAgICAgICB0cnk6CisgICAgLi4uICAgICAgICAgICAgIHJldHVybiBzZWxmLl9leHRyYV9hdHRyaWJ1dGVzW2F0dHJdCisgICAgLi4uICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgIC4uLiAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihhdHRyKSBmcm9tIE5vbmUKKyAgICAuLi4KKyAgICA+Pj4gRCh7fSkueAorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA4LCBpbiBfX2dldGF0dHJfXworICAgIEF0dHJpYnV0ZUVycm9yOiB4CisKK1dpdGhvdXQgdGhlIGBgZnJvbSBOb25lYGAgc3VmZml4IHRvIHN1cHByZXNzIHRoZSBjYXVzZSwgdGhlIG9yaWdpbmFsCitleGNlcHRpb24gd291bGQgYmUgZGlzcGxheWVkIGJ5IGRlZmF1bHQ6OgorCisgICAgPj4+IGNsYXNzIEM6CisgICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZiwgZXh0cmEpOgorICAgIC4uLiAgICAgICAgIHNlbGYuX2V4dHJhX2F0dHJpYnV0ZXMgPSBleHRyYQorICAgIC4uLiAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgorICAgIC4uLiAgICAgICAgIHRyeToKKyAgICAuLi4gICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2V4dHJhX2F0dHJpYnV0ZXNbYXR0cl0KKyAgICAuLi4gICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgLi4uICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKGF0dHIpCisgICAgLi4uCisgICAgPj4+IEMoe30pLngKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA2LCBpbiBfX2dldGF0dHJfXworICAgIEtleUVycm9yOiAneCcKKworICAgIER1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDoKKworICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA4LCBpbiBfX2dldGF0dHJfXworICAgIEF0dHJpYnV0ZUVycm9yOiB4CisKK05vIGRlYnVnZ2luZyBjYXBhYmlsaXR5IGlzIGxvc3QsIGFzIHRoZSBvcmlnaW5hbCBleGNlcHRpb24gY29udGV4dCByZW1haW5zCithdmFpbGFibGUgaWYgbmVlZGVkIChmb3IgZXhhbXBsZSwgaWYgYW4gaW50ZXJ2ZW5pbmcgbGlicmFyeSBoYXMgaW5jb3JyZWN0bHkKK3N1cHByZXNzZWQgdmFsdWFibGUgdW5kZXJseWluZyBkZXRhaWxzKTo6CisKKyAgICA+Pj4gdHJ5OgorICAgIC4uLiAgICAgRCh7fSkueAorICAgIC4uLiBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZXhjOgorICAgIC4uLiAgICAgcHJpbnQocmVwcihleGMuX19jb250ZXh0X18pKQorICAgIC4uLgorICAgIEtleUVycm9yKCd4JywpCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0MDlgIC0gU3VwcHJlc3NpbmcgZXhjZXB0aW9uIGNvbnRleHQKKyAgICAgIFBFUCB3cml0dGVuIGJ5IEV0aGFuIEZ1cm1hbjsgaW1wbGVtZW50ZWQgYnkgRXRoYW4gRnVybWFuIGFuZCBOaWNrCisgICAgICBDb2dobGFuLgorCisKK1BFUCA0MTQ6IEV4cGxpY2l0IFVuaWNvZGUgbGl0ZXJhbHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RvIGVhc2UgdGhlIHRyYW5zaXRpb24gZnJvbSBQeXRob24gMiBmb3IgVW5pY29kZSBhd2FyZSBQeXRob24gYXBwbGljYXRpb25zCit0aGF0IG1ha2UgaGVhdnkgdXNlIG9mIFVuaWNvZGUgbGl0ZXJhbHMsIFB5dGhvbiAzLjMgb25jZSBhZ2FpbiBzdXBwb3J0cyB0aGUKKyJgYHVgYCIgcHJlZml4IGZvciBzdHJpbmcgbGl0ZXJhbHMuIFRoaXMgcHJlZml4IGhhcyBubyBzZW1hbnRpYyBzaWduaWZpY2FuY2UKK2luIFB5dGhvbiAzLCBpdCBpcyBwcm92aWRlZCBzb2xlbHkgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgcHVyZWx5IG1lY2hhbmljYWwKK2NoYW5nZXMgaW4gbWlncmF0aW5nIHRvIFB5dGhvbiAzLCBtYWtpbmcgaXQgZWFzaWVyIGZvciBkZXZlbG9wZXJzIHRvIGZvY3VzIG9uCit0aGUgbW9yZSBzaWduaWZpY2FudCBzZW1hbnRpYyBjaGFuZ2VzIChzdWNoIGFzIHRoZSBzdHJpY3RlciBkZWZhdWx0CitzZXBhcmF0aW9uIG9mIGJpbmFyeSBhbmQgdGV4dCBkYXRhKS4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQxNGAgLSBFeHBsaWNpdCBVbmljb2RlIGxpdGVyYWxzCisgICAgICBQRVAgd3JpdHRlbiBieSBBcm1pbiBSb25hY2hlci4KKworCitQRVAgMzE1NTogUXVhbGlmaWVkIG5hbWUgZm9yIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRnVuY3Rpb25zIGFuZCBjbGFzcyBvYmplY3RzIGhhdmUgYSBuZXcgYGBfX3F1YWxuYW1lX19gYCBhdHRyaWJ1dGUgcmVwcmVzZW50aW5nCit0aGUgInBhdGgiIGZyb20gdGhlIG1vZHVsZSB0b3AtbGV2ZWwgdG8gdGhlaXIgZGVmaW5pdGlvbi4gIEZvciBnbG9iYWwgZnVuY3Rpb25zCithbmQgY2xhc3NlcywgdGhpcyBpcyB0aGUgc2FtZSBhcyBgYF9fbmFtZV9fYGAuICBGb3Igb3RoZXIgZnVuY3Rpb25zIGFuZCBjbGFzc2VzLAoraXQgcHJvdmlkZXMgYmV0dGVyIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHRoZXkgd2VyZSBhY3R1YWxseSBkZWZpbmVkLCBhbmQKK2hvdyB0aGV5IG1pZ2h0IGJlIGFjY2Vzc2libGUgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLgorCitFeGFtcGxlIHdpdGggKG5vbi1ib3VuZCkgbWV0aG9kczo6CisKKyAgID4+PiBjbGFzcyBDOgorICAgLi4uICAgICBkZWYgbWV0aChzZWxmKToKKyAgIC4uLiAgICAgICAgIHBhc3MKKyAgID4+PiBDLm1ldGguX19uYW1lX18KKyAgICdtZXRoJworICAgPj4+IEMubWV0aC5fX3F1YWxuYW1lX18KKyAgICdDLm1ldGgnCisKK0V4YW1wbGUgd2l0aCBuZXN0ZWQgY2xhc3Nlczo6CisKKyAgID4+PiBjbGFzcyBDOgorICAgLi4uICAgICBjbGFzcyBEOgorICAgLi4uICAgICAgICAgZGVmIG1ldGgoc2VsZik6CisgICAuLi4gICAgICAgICAgICAgcGFzcworICAgLi4uCisgICA+Pj4gQy5ELl9fbmFtZV9fCisgICAnRCcKKyAgID4+PiBDLkQuX19xdWFsbmFtZV9fCisgICAnQy5EJworICAgPj4+IEMuRC5tZXRoLl9fbmFtZV9fCisgICAnbWV0aCcKKyAgID4+PiBDLkQubWV0aC5fX3F1YWxuYW1lX18KKyAgICdDLkQubWV0aCcKKworRXhhbXBsZSB3aXRoIG5lc3RlZCBmdW5jdGlvbnM6OgorCisgICA+Pj4gZGVmIG91dGVyKCk6CisgICAuLi4gICAgIGRlZiBpbm5lcigpOgorICAgLi4uICAgICAgICAgcGFzcworICAgLi4uICAgICByZXR1cm4gaW5uZXIKKyAgIC4uLgorICAgPj4+IG91dGVyKCkuX19uYW1lX18KKyAgICdpbm5lcicKKyAgID4+PiBvdXRlcigpLl9fcXVhbG5hbWVfXworICAgJ291dGVyLjxsb2NhbHM+LmlubmVyJworCitUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRob3NlIG9iamVjdHMgaXMgYWxzbyBjaGFuZ2VkIHRvIGluY2x1ZGUgdGhlCituZXcsIG1vcmUgcHJlY2lzZSBpbmZvcm1hdGlvbjo6CisKKyAgID4+PiBzdHIoQy5EKQorICAgIjxjbGFzcyAnX19tYWluX18uQy5EJz4iCisgICA+Pj4gc3RyKEMuRC5tZXRoKQorICAgJzxmdW5jdGlvbiBDLkQubWV0aCBhdCAweDdmNDZiOWZlMzFlMD4nCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmAzMTU1YCAtIFF1YWxpZmllZCBuYW1lIGZvciBjbGFzc2VzIGFuZCBmdW5jdGlvbnMKKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBBbnRvaW5lIFBpdHJvdS4KKworCisuLiBfcGVwLTQxMjoKKworUEVQIDQxMjogS2V5LVNoYXJpbmcgRGljdGlvbmFyeQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitEaWN0aW9uYXJpZXMgdXNlZCBmb3IgdGhlIHN0b3JhZ2Ugb2Ygb2JqZWN0cycgYXR0cmlidXRlcyBhcmUgbm93IGFibGUgdG8KK3NoYXJlIHBhcnQgb2YgdGhlaXIgaW50ZXJuYWwgc3RvcmFnZSBiZXR3ZWVuIGVhY2ggb3RoZXIgKG5hbWVseSwgdGhlIHBhcnQKK3doaWNoIHN0b3JlcyB0aGUga2V5cyBhbmQgdGhlaXIgcmVzcGVjdGl2ZSBoYXNoZXMpLiAgVGhpcyByZWR1Y2VzIHRoZSBtZW1vcnkKK2NvbnN1bXB0aW9uIG9mIHByb2dyYW1zIGNyZWF0aW5nIG1hbnkgaW5zdGFuY2VzIG9mIG5vbi1idWlsdGluIHR5cGVzLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDEyYCAtIEtleS1TaGFyaW5nIERpY3Rpb25hcnkKKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBNYXJrIFNoYW5ub24uCisKKworUEVQIDM2MjogRnVuY3Rpb24gU2lnbmF0dXJlIE9iamVjdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBIG5ldyBmdW5jdGlvbiA6ZnVuYzpgaW5zcGVjdC5zaWduYXR1cmVgIG1ha2VzIGludHJvc3BlY3Rpb24gb2YgcHl0aG9uCitjYWxsYWJsZXMgZWFzeSBhbmQgc3RyYWlnaHRmb3J3YXJkLiAgQSBicm9hZCByYW5nZSBvZiBjYWxsYWJsZXMgaXMgc3VwcG9ydGVkOgorcHl0aG9uIGZ1bmN0aW9ucywgZGVjb3JhdGVkIG9yIG5vdCwgY2xhc3NlcywgYW5kIDpmdW5jOmBmdW5jdG9vbHMucGFydGlhbGAKK29iamVjdHMuICBOZXcgY2xhc3NlcyA6Y2xhc3M6YGluc3BlY3QuU2lnbmF0dXJlYCwgOmNsYXNzOmBpbnNwZWN0LlBhcmFtZXRlcmAKK2FuZCA6Y2xhc3M6YGluc3BlY3QuQm91bmRBcmd1bWVudHNgIGhvbGQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNhbGwgc2lnbmF0dXJlcywKK3N1Y2ggYXMsIGFubm90YXRpb25zLCBkZWZhdWx0IHZhbHVlcywgcGFyYW1ldGVycyBraW5kcywgYW5kIGJvdW5kIGFyZ3VtZW50cywKK3doaWNoIGNvbnNpZGVyYWJseSBzaW1wbGlmaWVzIHdyaXRpbmcgZGVjb3JhdG9ycyBhbmQgYW55IGNvZGUgdGhhdCB2YWxpZGF0ZXMKK29yIGFtZW5kcyBjYWxsaW5nIHNpZ25hdHVyZXMgb3IgYXJndW1lbnRzLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzYyYDogLSAgRnVuY3Rpb24gU2lnbmF0dXJlIE9iamVjdAorICAgICAgUEVQIHdyaXR0ZW4gYnkgQnJldHQgQ2Fubm9uLCBZdXJ5IFNlbGl2YW5vdiwgTGFycnkgSGFzdGluZ3MsIEppd29uIFNlbzsKKyAgICAgIGltcGxlbWVudGVkIGJ5IFl1cnkgU2VsaXZhbm92LgorCisKK1BFUCA0MjE6IEFkZGluZyBzeXMuaW1wbGVtZW50YXRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQSBuZXcgYXR0cmlidXRlIG9uIHRoZSA6bW9kOmBzeXNgIG1vZHVsZSBleHBvc2VzIGRldGFpbHMgc3BlY2lmaWMgdG8gdGhlCitpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgaW50ZXJwcmV0ZXIuICBUaGUgaW5pdGlhbCBzZXQgb2YKK2F0dHJpYnV0ZXMgb24gOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbmAgYXJlIGBgbmFtZWBgLCBgYHZlcnNpb25gYCwKK2BgaGV4dmVyc2lvbmBgLCBhbmQgYGBjYWNoZV90YWdgYC4KKworVGhlIGludGVudGlvbiBvZiBgYHN5cy5pbXBsZW1lbnRhdGlvbmBgIGlzIHRvIGNvbnNvbGlkYXRlIGludG8gb25lIG5hbWVzcGFjZQordGhlIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIGRhdGEgdXNlZCBieSB0aGUgc3RhbmRhcmQgbGlicmFyeS4gIFRoaXMgYWxsb3dzCitkaWZmZXJlbnQgUHl0aG9uIGltcGxlbWVudGF0aW9ucyB0byBzaGFyZSBhIHNpbmdsZSBzdGFuZGFyZCBsaWJyYXJ5IGNvZGUgYmFzZQorbXVjaCBtb3JlIGVhc2lseS4gIEluIGl0cyBpbml0aWFsIHN0YXRlLCBgYHN5cy5pbXBsZW1lbnRhdGlvbmBgIGhvbGRzIG9ubHkgYQorc21hbGwgcG9ydGlvbiBvZiB0aGUgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgZGF0YS4gIE92ZXIgdGltZSB0aGF0IHJhdGlvIHdpbGwKK3NoaWZ0IGluIG9yZGVyIHRvIG1ha2UgdGhlIHN0YW5kYXJkIGxpYnJhcnkgbW9yZSBwb3J0YWJsZS4KKworT25lIGV4YW1wbGUgb2YgaW1wcm92ZWQgc3RhbmRhcmQgbGlicmFyeSBwb3J0YWJpbGl0eSBpcyBgYGNhY2hlX3RhZ2BgLiAgQXMgb2YKK1B5dGhvbiAzLjMsIGBgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZ2BgIGlzIHVzZWQgYnkgOm1vZDpgaW1wb3J0bGliYCB0bworc3VwcG9ydCA6cGVwOmAzMTQ3YCBjb21wbGlhbmNlLiAgQW55IFB5dGhvbiBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMKK2BgaW1wb3J0bGliYGAgZm9yIGl0cyBidWlsdC1pbiBpbXBvcnQgc3lzdGVtIG1heSB1c2UgYGBjYWNoZV90YWdgYCB0byBjb250cm9sCit0aGUgY2FjaGluZyBiZWhhdmlvciBmb3IgbW9kdWxlcy4KKworU2ltcGxlTmFtZXNwYWNlCistLS0tLS0tLS0tLS0tLS0KKworVGhlIGltcGxlbWVudGF0aW9uIG9mIGBgc3lzLmltcGxlbWVudGF0aW9uYGAgYWxzbyBpbnRyb2R1Y2VzIGEgbmV3IHR5cGUgdG8KK1B5dGhvbjogOmNsYXNzOmB0eXBlcy5TaW1wbGVOYW1lc3BhY2VgLiAgSW4gY29udHJhc3QgdG8gYSBtYXBwaW5nLWJhc2VkCituYW1lc3BhY2UsIGxpa2UgOmNsYXNzOmBkaWN0YCwgYGBTaW1wbGVOYW1lc3BhY2VgYCBpcyBhdHRyaWJ1dGUtYmFzZWQsIGxpa2UKKzpjbGFzczpgb2JqZWN0YC4gIEhvd2V2ZXIsIHVubGlrZSBgYG9iamVjdGBgLCBgYFNpbXBsZU5hbWVzcGFjZWBgIGluc3RhbmNlcworYXJlIHdyaXRhYmxlLiAgVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gYWRkLCByZW1vdmUsIGFuZCBtb2RpZnkgdGhlIG5hbWVzcGFjZQordGhyb3VnaCBub3JtYWwgYXR0cmlidXRlIGFjY2Vzcy4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQyMWAgLSBBZGRpbmcgc3lzLmltcGxlbWVudGF0aW9uCisgICAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgRXJpYyBTbm93LgorCisKKy4uIF9pbXBvcnRsaWI6CisKK1VzaW5nIGltcG9ydGxpYiBhcyB0aGUgSW1wbGVtZW50YXRpb24gb2YgSW1wb3J0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOmlzc3VlOmAyMzc3YCAtIFJlcGxhY2UgX19pbXBvcnRfXyB3LyBpbXBvcnRsaWIuX19pbXBvcnRfXworOmlzc3VlOmAxMzk1OWAgLSBSZS1pbXBsZW1lbnQgcGFydHMgb2YgOm1vZDpgaW1wYCBpbiBwdXJlIFB5dGhvbgorOmlzc3VlOmAxNDYwNWAgLSBNYWtlIGltcG9ydCBtYWNoaW5lcnkgZXhwbGljaXQKKzppc3N1ZTpgMTQ2NDZgIC0gUmVxdWlyZSBsb2FkZXJzIHNldCBfX2xvYWRlcl9fIGFuZCBfX3BhY2thZ2VfXworCitUaGUgOmZ1bmM6YF9faW1wb3J0X19gIGZ1bmN0aW9uIGlzIG5vdyBwb3dlcmVkIGJ5IDpmdW5jOmBpbXBvcnRsaWIuX19pbXBvcnRfX2AuCitUaGlzIHdvcmsgbGVhZHMgdG8gdGhlIGNvbXBsZXRpb24gb2YgInBoYXNlIDIiIG9mIDpwZXA6YDMwMmAuIFRoZXJlIGFyZQorbXVsdGlwbGUgYmVuZWZpdHMgdG8gdGhpcyBjaGFuZ2UuIEZpcnN0LCBpdCBoYXMgYWxsb3dlZCBmb3IgbW9yZSBvZiB0aGUKK21hY2hpbmVyeSBwb3dlcmluZyBpbXBvcnQgdG8gYmUgZXhwb3NlZCBpbnN0ZWFkIG9mIGJlaW5nIGltcGxpY2l0IGFuZCBoaWRkZW4KK3dpdGhpbiB0aGUgQyBjb2RlLiBJdCBhbHNvIHByb3ZpZGVzIGEgc2luZ2xlIGltcGxlbWVudGF0aW9uIGZvciBhbGwgUHl0aG9uIFZNcworc3VwcG9ydGluZyBQeXRob24gMy4zIHRvIHVzZSwgaGVscGluZyB0byBlbmQgYW55IFZNLXNwZWNpZmljIGRldmlhdGlvbnMgaW4KK2ltcG9ydCBzZW1hbnRpY3MuIEFuZCBmaW5hbGx5IGl0IGVhc2VzIHRoZSBtYWludGVuYW5jZSBvZiBpbXBvcnQsIGFsbG93aW5nIGZvcgorZnV0dXJlIGdyb3d0aCB0byBvY2N1ci4KKworRm9yIHRoZSBjb21tb24gdXNlciwgdGhlcmUgc2hvdWxkIGJlIG5vIHZpc2libGUgY2hhbmdlIGluIHNlbWFudGljcy4gIEZvcgordGhvc2Ugd2hvc2UgY29kZSBjdXJyZW50bHkgbWFuaXB1bGF0ZXMgaW1wb3J0IG9yIGNhbGxzIGltcG9ydAorcHJvZ3JhbW1hdGljYWxseSwgdGhlIGNvZGUgY2hhbmdlcyB0aGF0IG1pZ2h0IHBvc3NpYmx5IGJlIHJlcXVpcmVkIGFyZSBjb3ZlcmVkCitpbiB0aGUgYFBvcnRpbmcgUHl0aG9uIGNvZGVgXyBzZWN0aW9uIG9mIHRoaXMgZG9jdW1lbnQuCisKK05ldyBBUElzCistLS0tLS0tLQorT25lIG9mIHRoZSBsYXJnZSBiZW5lZml0cyBvZiB0aGlzIHdvcmsgaXMgdGhlIGV4cG9zdXJlIG9mIHdoYXQgZ29lcyBpbnRvCittYWtpbmcgdGhlIGltcG9ydCBzdGF0ZW1lbnQgd29yay4gVGhhdCBtZWFucyB0aGUgdmFyaW91cyBpbXBvcnRlcnMgdGhhdCB3ZXJlCitvbmNlIGltcGxpY2l0IGFyZSBub3cgZnVsbHkgZXhwb3NlZCBhcyBwYXJ0IG9mIHRoZSA6bW9kOmBpbXBvcnRsaWJgIHBhY2thZ2UuCisKK1RoZSBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgZGVmaW5lZCBpbiA6bW9kOmBpbXBvcnRsaWIuYWJjYCBoYXZlIGJlZW4gZXhwYW5kZWQKK3RvIHByb3Blcmx5IGRlbGluZWF0ZSBiZXR3ZWVuIDp0ZXJtOmBtZXRhIHBhdGggZmluZGVycyA8bWV0YSBwYXRoIGZpbmRlcj5gCithbmQgOnRlcm06YHBhdGggZW50cnkgZmluZGVycyA8cGF0aCBlbnRyeSBmaW5kZXI+YCBieSBpbnRyb2R1Y2luZworOmNsYXNzOmBpbXBvcnRsaWIuYWJjLk1ldGFQYXRoRmluZGVyYCBhbmQKKzpjbGFzczpgaW1wb3J0bGliLmFiYy5QYXRoRW50cnlGaW5kZXJgLCByZXNwZWN0aXZlbHkuIFRoZSBvbGQgQUJDIG9mCis6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmluZGVyYCBpcyBub3cgb25seSBwcm92aWRlZCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkKK2FuZCBkb2VzIG5vdCBlbmZvcmNlIGFueSBtZXRob2QgcmVxdWlyZW1lbnRzLgorCitJbiB0ZXJtcyBvZiBmaW5kZXJzLCA6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcmAgZXhwb3NlcyB0aGUKK21lY2hhbmlzbSB1c2VkIHRvIHNlYXJjaCBmb3Igc291cmNlIGFuZCBieXRlY29kZSBmaWxlcyBvZiBhIG1vZHVsZS4gUHJldmlvdXNseQordGhpcyBjbGFzcyB3YXMgYW4gaW1wbGljaXQgbWVtYmVyIG9mIDphdHRyOmBzeXMucGF0aF9ob29rc2AuCisKK0ZvciBsb2FkZXJzLCB0aGUgbmV3IGFic3RyYWN0IGJhc2UgY2xhc3MgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkZpbGVMb2FkZXJgIGhlbHBzCit3cml0ZSBhIGxvYWRlciB0aGF0IHVzZXMgdGhlIGZpbGUgc3lzdGVtIGFzIHRoZSBzdG9yYWdlIG1lY2hhbmlzbSBmb3IgYSBtb2R1bGUncworY29kZS4gVGhlIGxvYWRlciBmb3Igc291cmNlIGZpbGVzCisoOmNsYXNzOmBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXJgKSwgc291cmNlbGVzcyBieXRlY29kZSBmaWxlcworKDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcmApLCBhbmQgZXh0ZW5zaW9uIG1vZHVsZXMKKyg6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcmApIGFyZSBub3cgYXZhaWxhYmxlIGZvcgorZGlyZWN0IHVzZS4KKworOmV4YzpgSW1wb3J0RXJyb3JgIG5vdyBoYXMgYGBuYW1lYGAgYW5kIGBgcGF0aGBgIGF0dHJpYnV0ZXMgd2hpY2ggYXJlIHNldCB3aGVuCit0aGVyZSBpcyByZWxldmFudCBkYXRhIHRvIHByb3ZpZGUuIFRoZSBtZXNzYWdlIGZvciBmYWlsZWQgaW1wb3J0cyB3aWxsIGFsc28KK3Byb3ZpZGUgdGhlIGZ1bGwgbmFtZSBvZiB0aGUgbW9kdWxlIG5vdyBpbnN0ZWFkIG9mIGp1c3QgdGhlIHRhaWwgZW5kIG9mIHRoZQorbW9kdWxlJ3MgbmFtZS4KKworVGhlIDpmdW5jOmBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXNgIGZ1bmN0aW9uIHdpbGwgbm93IGNhbGwgdGhlIG1ldGhvZCB3aXRoCit0aGUgc2FtZSBuYW1lIG9uIGFsbCBmaW5kZXJzIGNhY2hlZCBpbiA6YXR0cjpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIHRvIGhlbHAKK2NsZWFuIHVwIGFueSBzdG9yZWQgc3RhdGUgYXMgbmVjZXNzYXJ5LgorCitWaXNpYmxlIENoYW5nZXMKKy0tLS0tLS0tLS0tLS0tLQorCitGb3IgcG90ZW50aWFsIHJlcXVpcmVkIGNoYW5nZXMgdG8gY29kZSwgc2VlIHRoZSBgUG9ydGluZyBQeXRob24gY29kZWBfCitzZWN0aW9uLgorCitCZXlvbmQgdGhlIGV4cGFuc2Ugb2Ygd2hhdCA6bW9kOmBpbXBvcnRsaWJgIG5vdyBleHBvc2VzLCB0aGVyZSBhcmUgb3RoZXIKK3Zpc2libGUgY2hhbmdlcyB0byBpbXBvcnQuIFRoZSBiaWdnZXN0IGlzIHRoYXQgOmF0dHI6YHN5cy5tZXRhX3BhdGhgIGFuZAorOmF0dHI6YHN5cy5wYXRoX2hvb2tzYCBub3cgc3RvcmUgYWxsIG9mIHRoZSBtZXRhIHBhdGggZmluZGVycyBhbmQgcGF0aCBlbnRyeQoraG9va3MgdXNlZCBieSBpbXBvcnQuICBQcmV2aW91c2x5IHRoZSBmaW5kZXJzIHdlcmUgaW1wbGljaXQgYW5kIGhpZGRlbiB3aXRoaW4KK3RoZSBDIGNvZGUgb2YgaW1wb3J0IGluc3RlYWQgb2YgYmVpbmcgZGlyZWN0bHkgZXhwb3NlZC4gVGhpcyBtZWFucyB0aGF0IG9uZSBjYW4KK25vdyBlYXNpbHkgcmVtb3ZlIG9yIGNoYW5nZSB0aGUgb3JkZXIgb2YgdGhlIHZhcmlvdXMgZmluZGVycyB0byBmaXQgb25lJ3MgbmVlZHMuCisKK0Fub3RoZXIgY2hhbmdlIGlzIHRoYXQgYWxsIG1vZHVsZXMgaGF2ZSBhIGBgX19sb2FkZXJfX2BgIGF0dHJpYnV0ZSwgc3RvcmluZyB0aGUKK2xvYWRlciB1c2VkIHRvIGNyZWF0ZSB0aGUgbW9kdWxlLiA6cGVwOmAzMDJgIGhhcyBiZWVuIHVwZGF0ZWQgdG8gbWFrZSB0aGlzCithdHRyaWJ1dGUgbWFuZGF0b3J5IGZvciBsb2FkZXJzIHRvIGltcGxlbWVudCwgc28gaW4gdGhlIGZ1dHVyZSBvbmNlIDNyZC1wYXJ0eQorbG9hZGVycyBoYXZlIGJlZW4gdXBkYXRlZCBwZW9wbGUgd2lsbCBiZSBhYmxlIHRvIHJlbHkgb24gdGhlIGV4aXN0ZW5jZSBvZiB0aGUKK2F0dHJpYnV0ZS4gVW50aWwgc3VjaCB0aW1lLCB0aG91Z2gsIGltcG9ydCBpcyBzZXR0aW5nIHRoZSBtb2R1bGUgcG9zdC1sb2FkLgorCitMb2FkZXJzIGFyZSBhbHNvIG5vdyBleHBlY3RlZCB0byBzZXQgdGhlIGBgX19wYWNrYWdlX19gYCBhdHRyaWJ1dGUgZnJvbQorOnBlcDpgMzY2YC4gT25jZSBhZ2FpbiwgaW1wb3J0IGl0c2VsZiBpcyBhbHJlYWR5IHNldHRpbmcgdGhpcyBvbiBhbGwgbG9hZGVycworZnJvbSA6bW9kOmBpbXBvcnRsaWJgIGFuZCBpbXBvcnQgaXRzZWxmIGlzIHNldHRpbmcgdGhlIGF0dHJpYnV0ZSBwb3N0LWxvYWQuCisKK2BgTm9uZWBgIGlzIG5vdyBpbnNlcnRlZCBpbnRvIDphdHRyOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgd2hlbiBubyBmaW5kZXIKK2NhbiBiZSBmb3VuZCBvbiA6YXR0cjpgc3lzLnBhdGhfaG9va3NgLiBTaW5jZSA6Y2xhc3M6YGltcC5OdWxsSW1wb3J0ZXJgIGlzIG5vdAorZGlyZWN0bHkgZXhwb3NlZCBvbiA6YXR0cjpgc3lzLnBhdGhfaG9va3NgIGl0IGNvdWxkIG5vIGxvbmdlciBiZSByZWxpZWQgdXBvbiB0bworYWx3YXlzIGJlIGF2YWlsYWJsZSB0byB1c2UgYXMgYSB2YWx1ZSByZXByZXNlbnRpbmcgbm8gZmluZGVyIGZvdW5kLgorCitBbGwgb3RoZXIgY2hhbmdlcyByZWxhdGUgdG8gc2VtYW50aWMgY2hhbmdlcyB3aGljaCBzaG91bGQgYmUgdGFrZW4gaW50bworY29uc2lkZXJhdGlvbiB3aGVuIHVwZGF0aW5nIGNvZGUgZm9yIFB5dGhvbiAzLjMsIGFuZCB0aHVzIHNob3VsZCBiZSByZWFkIGFib3V0CitpbiB0aGUgYFBvcnRpbmcgUHl0aG9uIGNvZGVgXyBzZWN0aW9uIG9mIHRoaXMgZG9jdW1lbnQuCisKKyhJbXBsZW1lbnRhdGlvbiBieSBCcmV0dCBDYW5ub24pCisKKworT3RoZXIgTGFuZ3VhZ2UgQ2hhbmdlcworPT09PT09PT09PT09PT09PT09PT09PQorCitTb21lIHNtYWxsZXIgY2hhbmdlcyBtYWRlIHRvIHRoZSBjb3JlIFB5dGhvbiBsYW5ndWFnZSBhcmU6CisKKyogQWRkZWQgc3VwcG9ydCBmb3IgVW5pY29kZSBuYW1lIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcy4KKyAgQm90aCA6ZnVuYzpgdW5pY29kZWRhdGEubG9va3VwKClgIGFuZCBgYCdcTnsuLi59J2BgIG5vdyByZXNvbHZlIG5hbWUgYWxpYXNlcywKKyAgYW5kIDpmdW5jOmB1bmljb2RlZGF0YS5sb29rdXAoKWAgcmVzb2x2ZXMgbmFtZWQgc2VxdWVuY2VzIHRvby4KKworICAoQ29udHJpYnV0ZWQgYnkgRXppbyBNZWxvdHRpIGluIDppc3N1ZTpgMTI3NTNgKQorCisqIFVuaWNvZGUgZGF0YWJhc2UgdXBkYXRlZCB0byBVQ0QgdmVyc2lvbiA2LjEuMAorCisqIEVxdWFsaXR5IGNvbXBhcmlzb25zIG9uIDpmdW5jOmByYW5nZWAgb2JqZWN0cyBub3cgcmV0dXJuIGEgcmVzdWx0IHJlZmxlY3RpbmcKKyAgdGhlIGVxdWFsaXR5IG9mIHRoZSB1bmRlcmx5aW5nIHNlcXVlbmNlcyBnZW5lcmF0ZWQgYnkgdGhvc2UgcmFuZ2Ugb2JqZWN0cy4KKyAgKDppc3N1ZTpgMTMyMDFgKQorCisqIFRoZSBgYGNvdW50KClgYCwgYGBmaW5kKClgYCwgYGByZmluZCgpYGAsIGBgaW5kZXgoKWBgIGFuZCBgYHJpbmRleCgpYGAKKyAgbWV0aG9kcyBvZiA6Y2xhc3M6YGJ5dGVzYCBhbmQgOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdHMgbm93IGFjY2VwdCBhbgorICBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMjU1IGFzIHRoZWlyIGZpcnN0IGFyZ3VtZW50LgorCisgIChDb250cmlidXRlZCBieSBQZXRyaSBMZWh0aW5lbiBpbiA6aXNzdWU6YDEyMTcwYCkKKworKiBUaGUgYGByanVzdCgpYGAsIGBgbGp1c3QoKWBgLCBhbmQgYGBjZW50ZXIoKWBgIG1ldGhvZHMgb2YgOmNsYXNzOmBieXRlc2AKKyAgYW5kIDpjbGFzczpgYnl0ZWFycmF5YCBub3cgYWNjZXB0IGEgOmNsYXNzOmBieXRlYXJyYXlgIGZvciB0aGUgYGBmaWxsYGAKKyAgYXJndW1lbnQuICAoQ29udHJpYnV0ZWQgYnkgUGV0cmkgTGVodGluZW4gaW4gOmlzc3VlOmAxMjM4MGAuKQorCisqIE5ldyBtZXRob2RzIGhhdmUgYmVlbiBhZGRlZCB0byA6Y2xhc3M6YGxpc3RgIGFuZCA6Y2xhc3M6YGJ5dGVhcnJheWA6CisgIGBgY29weSgpYGAgYW5kIGBgY2xlYXIoKWBgICg6aXNzdWU6YDEwNTE2YCkuICBDb25zZXF1ZW50bHksCisgIDpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2VxdWVuY2VgIG5vdyBhbHNvIGRlZmluZXMgYQorICA6bWV0aDpgfmNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2VxdWVuY2UuY2xlYXJgIG1ldGhvZCAoOmlzc3VlOmAxMTM4OGApLgorCisqIFJhdyBieXRlcyBsaXRlcmFscyBjYW4gbm93IGJlIHdyaXR0ZW4gYGByYiIuLi4iYGAgYXMgd2VsbCBhcyBgYGJyIi4uLiJgYC4KKworICAoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmAxMzc0OGAuKQorCisqIDptZXRoOmBkaWN0LnNldGRlZmF1bHRgIG5vdyBkb2VzIG9ubHkgb25lIGxvb2t1cCBmb3IgdGhlIGdpdmVuIGtleSwgbWFraW5nCisgIGl0IGF0b21pYyB3aGVuIHVzZWQgd2l0aCBidWlsdC1pbiB0eXBlcy4KKworICAoQ29udHJpYnV0ZWQgYnkgRmlsaXAgR3J1c3pjennFhHNraSBpbiA6aXNzdWU6YDEzNTIxYC4pCisKKyogVGhlIGVycm9yIG1lc3NhZ2VzIHByb2R1Y2VkIHdoZW4gYSBmdW5jdGlvbiBjYWxsIGRvZXMgbm90IG1hdGNoIHRoZSBmdW5jdGlvbgorICBzaWduYXR1cmUgaGF2ZSBiZWVuIHNpZ25pZmljYW50bHkgaW1wcm92ZWQuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IEJlbmphbWluIFBldGVyc29uLikKKworCitBIEZpbmVyLUdyYWluZWQgSW1wb3J0IExvY2sKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQcmV2aW91cyB2ZXJzaW9ucyBvZiBDUHl0aG9uIGhhdmUgYWx3YXlzIHJlbGllZCBvbiBhIGdsb2JhbCBpbXBvcnQgbG9jay4KK1RoaXMgbGVkIHRvIHVuZXhwZWN0ZWQgYW5ub3lhbmNlcywgc3VjaCBhcyBkZWFkbG9ja3Mgd2hlbiBpbXBvcnRpbmcgYSBtb2R1bGUKK3dvdWxkIHRyaWdnZXIgY29kZSBleGVjdXRpb24gaW4gYSBkaWZmZXJlbnQgdGhyZWFkIGFzIGEgc2lkZS1lZmZlY3QuCitDbHVtc3kgd29ya2Fyb3VuZHMgd2VyZSBzb21ldGltZXMgZW1wbG95ZWQsIHN1Y2ggYXMgdGhlCis6YzpmdW5jOmBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrYCBDIEFQSSBmdW5jdGlvbi4KKworSW4gUHl0aG9uIDMuMywgaW1wb3J0aW5nIGEgbW9kdWxlIHRha2VzIGEgcGVyLW1vZHVsZSBsb2NrLiAgVGhpcyBjb3JyZWN0bHkKK3NlcmlhbGl6ZXMgaW1wb3J0YXRpb24gb2YgYSBnaXZlbiBtb2R1bGUgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIChwcmV2ZW50aW5nCit0aGUgZXhwb3N1cmUgb2YgaW5jb21wbGV0ZWx5IGluaXRpYWxpemVkIG1vZHVsZXMpLCB3aGlsZSBlbGltaW5hdGluZyB0aGUKK2Fmb3JlbWVudGlvbmVkIGFubm95YW5jZXMuCisKKyhDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDkyNjBgLikKKworCitCdWlsdGluIGZ1bmN0aW9ucyBhbmQgdHlwZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqIDpmdW5jOmBvcGVuYCBnZXRzIGEgbmV3ICpvcGVuZXIqIHBhcmFtZXRlcjogdGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yCisgIGZvciB0aGUgZmlsZSBvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieSBjYWxsaW5nICpvcGVuZXIqIHdpdGggKCpmaWxlKiwKKyAgKmZsYWdzKikuIEl0IGNhbiBiZSB1c2VkIHRvIHVzZSBjdXN0b20gZmxhZ3MgbGlrZSA6ZGF0YTpgb3MuT19DTE9FWEVDYCBmb3IKKyAgZXhhbXBsZS4gVGhlIGBgJ3gnYGAgbW9kZSB3YXMgYWRkZWQ6IG9wZW4gZm9yIGV4Y2x1c2l2ZSBjcmVhdGlvbiwgZmFpbGluZyBpZgorICB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cy4KKyogOmZ1bmM6YHByaW50YDogYWRkZWQgdGhlICpmbHVzaCoga2V5d29yZCBhcmd1bWVudC4gSWYgdGhlICpmbHVzaCoga2V5d29yZAorICBhcmd1bWVudCBpcyB0cnVlLCB0aGUgc3RyZWFtIGlzIGZvcmNpYmx5IGZsdXNoZWQuCisqIDpmdW5jOmBoYXNoYDogaGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgc2VlCisgIDptZXRoOmBvYmplY3QuX19oYXNoX19gIGFuZCA6ZW52dmFyOmBQWVRIT05IQVNIU0VFRGAuCisqIFRoZSA6Y2xhc3M6YHN0cmAgdHlwZSBnZXRzIGEgbmV3IDptZXRoOmB+c3RyLmNhc2Vmb2xkYCBtZXRob2Q6IHJldHVybiBhCisgIGNhc2Vmb2xkZWQgY29weSBvZiB0aGUgc3RyaW5nLCBjYXNlZm9sZGVkIHN0cmluZ3MgbWF5IGJlIHVzZWQgZm9yIGNhc2VsZXNzCisgIG1hdGNoaW5nLiBGb3IgZXhhbXBsZSwgYGAnw58nLmNhc2Vmb2xkKClgYCByZXR1cm5zIGBgJ3NzJ2BgLgorKiBUaGUgc2VxdWVuY2UgZG9jdW1lbnRhdGlvbiBoYXMgYmVlbiBzdWJzdGFudGlhbGx5IHJld3JpdHRlbiB0byBiZXR0ZXIKKyAgZXhwbGFpbiB0aGUgYmluYXJ5L3RleHQgc2VxdWVuY2UgZGlzdGluY3Rpb24gYW5kIHRvIHByb3ZpZGUgc3BlY2lmaWMKKyAgZG9jdW1lbnRhdGlvbiBzZWN0aW9ucyBmb3IgdGhlIGluZGl2aWR1YWwgYnVpbHRpbiBzZXF1ZW5jZSB0eXBlcworICAoOmlzc3VlOmA0OTY2YCkKKworCitOZXcgTW9kdWxlcworPT09PT09PT09PT0KKworZmF1bHRoYW5kbGVyCistLS0tLS0tLS0tLS0KKworVGhpcyBuZXcgZGVidWcgbW9kdWxlIDptb2Q6YGZhdWx0aGFuZGxlcmAgY29udGFpbnMgZnVuY3Rpb25zIHRvIGR1bXAgUHl0aG9uIHRyYWNlYmFja3MgZXhwbGljaXRseSwKK29uIGEgZmF1bHQgKGEgY3Jhc2ggbGlrZSBhIHNlZ21lbnRhdGlvbiBmYXVsdCksIGFmdGVyIGEgdGltZW91dCwgb3Igb24gYSB1c2VyCitzaWduYWwuIENhbGwgOmZ1bmM6YGZhdWx0aGFuZGxlci5lbmFibGVgIHRvIGluc3RhbGwgZmF1bHQgaGFuZGxlcnMgZm9yIHRoZQorOmNvbnN0OmBTSUdTRUdWYCwgOmNvbnN0OmBTSUdGUEVgLCA6Y29uc3Q6YFNJR0FCUlRgLCA6Y29uc3Q6YFNJR0JVU2AsIGFuZAorOmNvbnN0OmBTSUdJTExgIHNpZ25hbHMuIFlvdSBjYW4gYWxzbyBlbmFibGUgdGhlbSBhdCBzdGFydHVwIGJ5IHNldHRpbmcgdGhlCis6ZW52dmFyOmBQWVRIT05GQVVMVEhBTkRMRVJgIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIGJ5IHVzaW5nIDpvcHRpb246YC1YYAorYGBmYXVsdGhhbmRsZXJgYCBjb21tYW5kIGxpbmUgb3B0aW9uLgorCitFeGFtcGxlIG9mIGEgc2VnbWVudGF0aW9uIGZhdWx0IG9uIExpbnV4OiA6OgorCisgICAgJCBweXRob24gLXEgLVggZmF1bHRoYW5kbGVyCisgICAgPj4+IGltcG9ydCBjdHlwZXMKKyAgICA+Pj4gY3R5cGVzLnN0cmluZ19hdCgwKQorICAgIEZhdGFsIFB5dGhvbiBlcnJvcjogU2VnbWVudGF0aW9uIGZhdWx0CisKKyAgICBDdXJyZW50IHRocmVhZCAweDAwMDA3ZmI4OTlmMzk3MDA6CisgICAgICBGaWxlICIvaG9tZS9weXRob24vY3B5dGhvbi9MaWIvY3R5cGVzL19faW5pdF9fLnB5IiwgbGluZSA0ODYgaW4gc3RyaW5nX2F0CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxIGluIDxtb2R1bGU+CisgICAgU2VnbWVudGF0aW9uIGZhdWx0CisKKworaXBhZGRyZXNzCistLS0tLS0tLS0KKworVGhlIG5ldyA6bW9kOmBpcGFkZHJlc3NgIG1vZHVsZSBwcm92aWRlcyB0b29scyBmb3IgY3JlYXRpbmcgYW5kIG1hbmlwdWxhdGluZworb2JqZWN0cyByZXByZXNlbnRpbmcgSVB2NCBhbmQgSVB2NiBhZGRyZXNzZXMsIG5ldHdvcmtzIGFuZCBpbnRlcmZhY2VzIChpLmUuCithbiBJUCBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIElQIHN1Ym5ldCkuCisKKyhDb250cmlidXRlZCBieSBHb29nbGUgYW5kIFBldGVyIE1vb2R5IGluIDpwZXA6YDMxNDRgKQorCitsem1hCistLS0tCisKK1RoZSBuZXdseS1hZGRlZCA6bW9kOmBsem1hYCBtb2R1bGUgcHJvdmlkZXMgZGF0YSBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbgordXNpbmcgdGhlIExaTUEgYWxnb3JpdGhtLCBpbmNsdWRpbmcgc3VwcG9ydCBmb3IgdGhlIGBgLnh6YGAgYW5kIGBgLmx6bWFgYAorZmlsZSBmb3JtYXRzLgorCisoQ29udHJpYnV0ZWQgYnkgTmFkZWVtIFZhd2RhIGFuZCBQZXIgw5h5dmluZCBLYXJsc2VuIGluIDppc3N1ZTpgNjcxNWApCisKKworSW1wcm92ZWQgTW9kdWxlcworPT09PT09PT09PT09PT09PQorCithYmMKKy0tLQorCitJbXByb3ZlZCBzdXBwb3J0IGZvciBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgY29udGFpbmluZyBkZXNjcmlwdG9ycyBjb21wb3NlZCB3aXRoCithYnN0cmFjdCBtZXRob2RzLiBUaGUgcmVjb21tZW5kZWQgYXBwcm9hY2ggdG8gZGVjbGFyaW5nIGFic3RyYWN0IGRlc2NyaXB0b3JzIGlzCitub3cgdG8gcHJvdmlkZSA6YXR0cjpgX19pc2Fic3RyYWN0bWV0aG9kX19gIGFzIGEgZHluYW1pY2FsbHkgdXBkYXRlZAorcHJvcGVydHkuIFRoZSBidWlsdC1pbiBkZXNjcmlwdG9ycyBoYXZlIGJlZW4gdXBkYXRlZCBhY2NvcmRpbmdseS4KKworICAqIDpjbGFzczpgYWJjLmFic3RyYWN0cHJvcGVydHlgIGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHVzZSA6Y2xhc3M6YHByb3BlcnR5YAorICAgIHdpdGggOmZ1bmM6YGFiYy5hYnN0cmFjdG1ldGhvZGAgaW5zdGVhZC4KKyAgKiA6Y2xhc3M6YGFiYy5hYnN0cmFjdGNsYXNzbWV0aG9kYCBoYXMgYmVlbiBkZXByZWNhdGVkLCB1c2UKKyAgICA6Y2xhc3M6YGNsYXNzbWV0aG9kYCB3aXRoIDpmdW5jOmBhYmMuYWJzdHJhY3RtZXRob2RgIGluc3RlYWQuCisgICogOmNsYXNzOmBhYmMuYWJzdHJhY3RzdGF0aWNtZXRob2RgIGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHVzZQorICAgIDpjbGFzczpgc3RhdGljbWV0aG9kYCB3aXRoIDpmdW5jOmBhYmMuYWJzdHJhY3RtZXRob2RgIGluc3RlYWQuCisKKyhDb250cmlidXRlZCBieSBEYXJyZW4gRGFsZSBpbiA6aXNzdWU6YDExNjEwYCkKKworOm1ldGg6YGFiYy5BQkNNZXRhLnJlZ2lzdGVyYCBub3cgcmV0dXJucyB0aGUgcmVnaXN0ZXJlZCBzdWJjbGFzcywgd2hpY2ggbWVhbnMKK2l0IGNhbiBub3cgYmUgdXNlZCBhcyBhIGNsYXNzIGRlY29yYXRvciAoOmlzc3VlOmAxMDg2OGApLgorCisKK2FycmF5CistLS0tLQorCitUaGUgOm1vZDpgYXJyYXlgIG1vZHVsZSBzdXBwb3J0cyB0aGUgOmM6dHlwZTpgbG9uZyBsb25nYCB0eXBlIHVzaW5nIGBgcWBgIGFuZAorYGBRYGAgdHlwZSBjb2Rlcy4KKworKENvbnRyaWJ1dGVkIGJ5IE9yZW4gVGlyb3NoIGFuZCBIaXJva2F6dSBZYW1hbW90byBpbiA6aXNzdWU6YDExNzI3MTFgKQorCisKK2Jhc2U2NAorLS0tLS0tCisKK0FTQ0lJLW9ubHkgVW5pY29kZSBzdHJpbmdzIGFyZSBub3cgYWNjZXB0ZWQgYnkgdGhlIGRlY29kaW5nIGZ1bmN0aW9ucyBvZiB0aGUKKzptb2Q6YGJhc2U2NGAgbW9kZXJuIGludGVyZmFjZS4gRm9yIGV4YW1wbGUsIGBgYmFzZTY0LmI2NGRlY29kZSgnWVdKaicpYGAKK3JldHVybnMgYGBiJ2FiYydgYC4gIChDb250cmlidXRlZCBieSBDYXRhbGluIElhY29iIGluIDppc3N1ZTpgMTM2NDFgLikKKworCitiaW5hc2NpaQorLS0tLS0tLS0KKworSW4gYWRkaXRpb24gdG8gdGhlIGJpbmFyeSBvYmplY3RzIHRoZXkgbm9ybWFsbHkgYWNjZXB0LCB0aGUgYGBhMmJfYGAgZnVuY3Rpb25zCitub3cgYWxsIGFsc28gYWNjZXB0IEFTQ0lJLW9ubHkgc3RyaW5ncyBhcyBpbnB1dC4gIChDb250cmlidXRlZCBieSBBbnRvaW5lCitQaXRyb3UgaW4gOmlzc3VlOmAxMzYzN2AuKQorCisKK2J6MgorLS0tCisKK1RoZSA6bW9kOmBiejJgIG1vZHVsZSBoYXMgYmVlbiByZXdyaXR0ZW4gZnJvbSBzY3JhdGNoLiBJbiB0aGUgcHJvY2Vzcywgc2V2ZXJhbAorbmV3IGZlYXR1cmVzIGhhdmUgYmVlbiBhZGRlZDoKKworKiBOZXcgOmZ1bmM6YGJ6Mi5vcGVuYCBmdW5jdGlvbjogb3BlbiBhIGJ6aXAyLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgb3IKKyAgdGV4dCBtb2RlLgorCisqIDpjbGFzczpgYnoyLkJaMkZpbGVgIGNhbiBub3cgcmVhZCBmcm9tIGFuZCB3cml0ZSB0byBhcmJpdHJhcnkgZmlsZS1saWtlCisgIG9iamVjdHMsIGJ5IG1lYW5zIG9mIGl0cyBjb25zdHJ1Y3RvcidzICpmaWxlb2JqKiBhcmd1bWVudC4KKworICAoQ29udHJpYnV0ZWQgYnkgTmFkZWVtIFZhd2RhIGluIDppc3N1ZTpgNTg2M2ApCisKKyogOmNsYXNzOmBiejIuQloyRmlsZWAgYW5kIDpmdW5jOmBiejIuZGVjb21wcmVzc2AgY2FuIG5vdyBkZWNvbXByZXNzCisgIG11bHRpLXN0cmVhbSBpbnB1dHMgKHN1Y2ggYXMgdGhvc2UgcHJvZHVjZWQgYnkgdGhlIDpwcm9ncmFtOmBwYnppcDJgIHRvb2wpLgorICA6Y2xhc3M6YGJ6Mi5CWjJGaWxlYCBjYW4gbm93IGFsc28gYmUgdXNlZCB0byBjcmVhdGUgdGhpcyB0eXBlIG9mIGZpbGUsIHVzaW5nCisgIHRoZSBgYCdhJ2BgIChhcHBlbmQpIG1vZGUuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IE5pciBBaWRlcyBpbiA6aXNzdWU6YDE2MjVgKQorCisqIDpjbGFzczpgYnoyLkJaMkZpbGVgIG5vdyBpbXBsZW1lbnRzIGFsbCBvZiB0aGUgOmNsYXNzOmBpby5CdWZmZXJlZElPQmFzZWAgQVBJLAorICBleGNlcHQgZm9yIHRoZSA6bWV0aDpgZGV0YWNoYCBhbmQgOm1ldGg6YHRydW5jYXRlYCBtZXRob2RzLgorCisKK2NvZGVjcworLS0tLS0tCisKK1RoZSA6bW9kOmB+ZW5jb2RpbmdzLm1iY3NgIGNvZGVjIGhhcyBiZWVuIHJld3JpdHRlbiB0byBoYW5kbGUgY29ycmVjdGx5CitgYHJlcGxhY2VgYCBhbmQgYGBpZ25vcmVgYCBlcnJvciBoYW5kbGVycyBvbiBhbGwgV2luZG93cyB2ZXJzaW9ucy4gIFRoZQorOm1vZDpgfmVuY29kaW5ncy5tYmNzYCBjb2RlYyBub3cgc3VwcG9ydHMgYWxsIGVycm9yIGhhbmRsZXJzLCBpbnN0ZWFkIG9mIG9ubHkKK2BgcmVwbGFjZWBgIHRvIGVuY29kZSBhbmQgYGBpZ25vcmVgYCB0byBkZWNvZGUuCisKK0EgbmV3IFdpbmRvd3Mtb25seSBjb2RlYyBoYXMgYmVlbiBhZGRlZDogYGBjcDY1MDAxYGAgKDppc3N1ZTpgMTMyMTZgKS4gSXQgaXMgdGhlCitXaW5kb3dzIGNvZGUgcGFnZSA2NTAwMSAoV2luZG93cyBVVEYtOCwgYGBDUF9VVEY4YGApLiAgRm9yIGV4YW1wbGUsIGl0IGlzIHVzZWQKK2J5IGBgc3lzLnN0ZG91dGBgIGlmIHRoZSBjb25zb2xlIG91dHB1dCBjb2RlIHBhZ2UgaXMgc2V0IHRvIGNwNjUwMDEgKGUuZy4sIHVzaW5nCitgYGNoY3AgNjUwMDFgYCBjb21tYW5kKS4KKworTXVsdGlieXRlIENKSyBkZWNvZGVycyBub3cgcmVzeW5jaHJvbml6ZSBmYXN0ZXIuICBUaGV5IG9ubHkgaWdub3JlIHRoZSBmaXJzdAorYnl0ZSBvZiBhbiBpbnZhbGlkIGJ5dGUgc2VxdWVuY2UuIEZvciBleGFtcGxlLCBgYGInXHhmZlxuJy5kZWNvZGUoJ2diMjMxMicsCisncmVwbGFjZScpYGAgbm93IHJldHVybnMgYSBgYFxuYGAgYWZ0ZXIgdGhlIHJlcGxhY2VtZW50IGNoYXJhY3Rlci4KKworKDppc3N1ZTpgMTIwMTZgKQorCitJbmNyZW1lbnRhbCBDSksgY29kZWMgZW5jb2RlcnMgYXJlIG5vIGxvbmdlciByZXNldCBhdCBlYWNoIGNhbGwgdG8gdGhlaXIKK2VuY29kZSgpIG1ldGhvZHMuIEZvciBleGFtcGxlOjoKKworICAgICQgLi9weXRob24gLXEKKyAgICA+Pj4gaW1wb3J0IGNvZGVjcworICAgID4+PiBlbmNvZGVyID0gY29kZWNzLmdldGluY3JlbWVudGFsZW5jb2RlcignaHonKSgnc3RyaWN0JykKKyAgICA+Pj4gYicnLmpvaW4oZW5jb2Rlci5lbmNvZGUoeCkgZm9yIHggaW4gJ1x1NTJmZlx1NjViZFx1NjViY1x1NGViYVx1MzAwMiBCeWUuJykKKyAgICBiJ357TnBKKWw2SEshI359IEJ5ZS4nCisKK1RoaXMgZXhhbXBsZSBnaXZlcyBgYGInfntOcH59fntKKX59fntsNn59fntIS359fnshI359IEJ5ZS4nYGAgd2l0aCBvbGRlciBQeXRob24KK3ZlcnNpb25zLgorCisoOmlzc3VlOmAxMjEwMGApCisKK1RoZSBgYHVuaWNvZGVfaW50ZXJuYWxgYCBjb2RlYyBoYXMgYmVlbiBkZXByZWNhdGVkLgorCisKK2NvbGxlY3Rpb25zCistLS0tLS0tLS0tLQorCitBZGRpdGlvbiBvZiBhIG5ldyA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5DaGFpbk1hcGAgY2xhc3MgdG8gYWxsb3cgdHJlYXRpbmcgYQorbnVtYmVyIG9mIG1hcHBpbmdzIGFzIGEgc2luZ2xlIHVuaXQuICAoV3JpdHRlbiBieSBSYXltb25kIEhldHRpbmdlciBmb3IKKzppc3N1ZTpgMTEwODlgLCBtYWRlIHB1YmxpYyBpbiA6aXNzdWU6YDExMjk3YCkKKworVGhlIGFic3RyYWN0IGJhc2UgY2xhc3NlcyBoYXZlIGJlZW4gbW92ZWQgaW4gYSBuZXcgOm1vZDpgY29sbGVjdGlvbnMuYWJjYAorbW9kdWxlLCB0byBiZXR0ZXIgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRoZSBhYnN0cmFjdCBhbmQgdGhlIGNvbmNyZXRlCitjb2xsZWN0aW9ucyBjbGFzc2VzLiAgQWxpYXNlcyBmb3IgQUJDcyBhcmUgc3RpbGwgcHJlc2VudCBpbiB0aGUKKzptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUgdG8gcHJlc2VydmUgZXhpc3RpbmcgaW1wb3J0cy4gICg6aXNzdWU6YDExMDg1YCkKKworLi4gWFhYIGFkZGl0aW9uIG9mIF9fc2xvdHNfXyB0byBBQkNzIG5vdCByZWNvcmRlZCBoZXJlOiBpbnRlcm5hbCBkZXRhaWwKKworVGhlIDpjbGFzczpgfmNvbGxlY3Rpb25zLkNvdW50ZXJgIGNsYXNzIG5vdyBzdXBwb3J0cyB0aGUgdW5hcnkgYGArYGAgYW5kIGBgLWBgCitvcGVyYXRvcnMsIGFzIHdlbGwgYXMgdGhlIGluLXBsYWNlIG9wZXJhdG9ycyBgYCs9YGAsIGBgLT1gYCwgYGB8PWBgLCBhbmQKK2BgJj1gYC4gIChDb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlciBpbiA6aXNzdWU6YDEzMTIxYC4pCisKKworY29udGV4dGxpYgorLS0tLS0tLS0tLQorCis6Y2xhc3M6YH5jb250ZXh0bGliLkV4aXRTdGFja2Agbm93IHByb3ZpZGVzIGEgc29saWQgZm91bmRhdGlvbiBmb3IKK3Byb2dyYW1tYXRpYyBtYW5pcHVsYXRpb24gb2YgY29udGV4dCBtYW5hZ2VycyBhbmQgc2ltaWxhciBjbGVhbnVwCitmdW5jdGlvbmFsaXR5LiBVbmxpa2UgdGhlIHByZXZpb3VzIGBgY29udGV4dGxpYi5uZXN0ZWRgYCBBUEkgKHdoaWNoIHdhcworZGVwcmVjYXRlZCBhbmQgcmVtb3ZlZCksIHRoZSBuZXcgQVBJIGlzIGRlc2lnbmVkIHRvIHdvcmsgY29ycmVjdGx5CityZWdhcmRsZXNzIG9mIHdoZXRoZXIgY29udGV4dCBtYW5hZ2VycyBhY3F1aXJlIHRoZWlyIHJlc291cmNlcyBpbgordGhlaXIgYGBfX2luaXRfX2BgIG1ldGhvZCAoZm9yIGV4YW1wbGUsIGZpbGUgb2JqZWN0cykgb3IgaW4gdGhlaXIKK2BgX19lbnRlcl9fYGAgbWV0aG9kIChmb3IgZXhhbXBsZSwgc3luY2hyb25pc2F0aW9uIG9iamVjdHMgZnJvbSB0aGUKKzptb2Q6YHRocmVhZGluZ2AgbW9kdWxlKS4KKworKDppc3N1ZTpgMTM1ODVgKQorCisKK2NyeXB0CistLS0tLQorCitBZGRpdGlvbiBvZiBzYWx0IGFuZCBtb2R1bGFyIGNyeXB0IGZvcm1hdCAoaGFzaGluZyBtZXRob2QpIGFuZCB0aGUgOmZ1bmM6YH5jcnlwdC5ta3NhbHRgCitmdW5jdGlvbiB0byB0aGUgOm1vZDpgY3J5cHRgIG1vZHVsZS4KKworKDppc3N1ZTpgMTA5MjRgKQorCitjdXJzZXMKKy0tLS0tLQorCisgKiBJZiB0aGUgOm1vZDpgY3Vyc2VzYCBtb2R1bGUgaXMgbGlua2VkIHRvIHRoZSBuY3Vyc2VzdyBsaWJyYXJ5LCB1c2UgVW5pY29kZQorICAgZnVuY3Rpb25zIHdoZW4gVW5pY29kZSBzdHJpbmdzIG9yIGNoYXJhY3RlcnMgYXJlIHBhc3NlZCAoZS5nLgorICAgOmM6ZnVuYzpgd2FkZHdzdHJgKSwgYW5kIGJ5dGVzIGZ1bmN0aW9ucyBvdGhlcndpc2UgKGUuZy4gOmM6ZnVuYzpgd2FkZHN0cmApLgorICogVXNlIHRoZSBsb2NhbGUgZW5jb2RpbmcgaW5zdGVhZCBvZiBgYHV0Zi04YGAgdG8gZW5jb2RlIFVuaWNvZGUgc3RyaW5ncy4KKyAqIDpjbGFzczpgY3Vyc2VzLndpbmRvd2AgaGFzIGEgbmV3IDphdHRyOmBjdXJzZXMud2luZG93LmVuY29kaW5nYCBhdHRyaWJ1dGUuCisgKiBUaGUgOmNsYXNzOmBjdXJzZXMud2luZG93YCBjbGFzcyBoYXMgYSBuZXcgOm1ldGg6YH5jdXJzZXMud2luZG93LmdldF93Y2hgCisgICBtZXRob2QgdG8gZ2V0IGEgd2lkZSBjaGFyYWN0ZXIKKyAqIFRoZSA6bW9kOmBjdXJzZXNgIG1vZHVsZSBoYXMgYSBuZXcgOm1ldGg6YH5jdXJzZXMudW5nZXRfd2NoYCBmdW5jdGlvbiB0bworICAgcHVzaCBhIHdpZGUgY2hhcmFjdGVyIHNvIHRoZSBuZXh0IDptZXRoOmB+Y3Vyc2VzLndpbmRvdy5nZXRfd2NoYCB3aWxsIHJldHVybgorICAgaXQKKworKENvbnRyaWJ1dGVkIGJ5IEnDsWlnbyBTZXJuYSBpbiA6aXNzdWU6YDY3NTVgKQorCitkYXRldGltZQorLS0tLS0tLS0KKworICogRXF1YWxpdHkgY29tcGFyaXNvbnMgYmV0d2VlbiBuYWl2ZSBhbmQgYXdhcmUgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgCisgICBpbnN0YW5jZXMgbm93IHJldHVybiA6Y29uc3Q6YEZhbHNlYCBpbnN0ZWFkIG9mIHJhaXNpbmcgOmV4YzpgVHlwZUVycm9yYAorICAgKDppc3N1ZTpgMTUwMDZgKS4KKyAqIE5ldyA6bWV0aDpgZGF0ZXRpbWUuZGF0ZXRpbWUudGltZXN0YW1wYCBtZXRob2Q6IFJldHVybiBQT1NJWCB0aW1lc3RhbXAKKyAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIDpjbGFzczpgfmRhdGV0aW1lLmRhdGV0aW1lYCBpbnN0YW5jZS4KKyAqIFRoZSA6bWV0aDpgZGF0ZXRpbWUuZGF0ZXRpbWUuc3RyZnRpbWVgIG1ldGhvZCBzdXBwb3J0cyBmb3JtYXR0aW5nIHllYXJzCisgICBvbGRlciB0aGFuIDEwMDAuCisgKiBUaGUgOm1ldGg6YGRhdGV0aW1lLmRhdGV0aW1lLmFzdGltZXpvbmVgIG1ldGhvZCBjYW4gbm93IGJlCisgICBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMgdG8gY29udmVydCBkYXRldGltZSBpbnN0YW5jZSB0byB0aGUgc3lzdGVtCisgICB0aW1lem9uZS4KKworCisuLiBfbmV3LWRlY2ltYWw6CisKK2RlY2ltYWwKKy0tLS0tLS0KKworOmlzc3VlOmA3NjUyYCAtIGludGVncmF0ZSBmYXN0IG5hdGl2ZSBkZWNpbWFsIGFyaXRobWV0aWMuCisgICBDLW1vZHVsZSBhbmQgbGlibXBkZWMgd3JpdHRlbiBieSBTdGVmYW4gS3JhaC4KKworVGhlIG5ldyBDIHZlcnNpb24gb2YgdGhlIGRlY2ltYWwgbW9kdWxlIGludGVncmF0ZXMgdGhlIGhpZ2ggc3BlZWQgbGlibXBkZWMKK2xpYnJhcnkgZm9yIGFyYml0cmFyeSBwcmVjaXNpb24gY29ycmVjdGx5LXJvdW5kZWQgZGVjaW1hbCBmbG9hdGluZyBwb2ludAorYXJpdGhtZXRpYy4gbGlibXBkZWMgY29uZm9ybXMgdG8gSUJNJ3MgR2VuZXJhbCBEZWNpbWFsIEFyaXRobWV0aWMgU3BlY2lmaWNhdGlvbi4KKworUGVyZm9ybWFuY2UgZ2FpbnMgcmFuZ2UgZnJvbSAxMHggZm9yIGRhdGFiYXNlIGFwcGxpY2F0aW9ucyB0byAxMDB4IGZvcgorbnVtZXJpY2FsbHkgaW50ZW5zaXZlIGFwcGxpY2F0aW9ucy4gVGhlc2UgbnVtYmVycyBhcmUgZXhwZWN0ZWQgZ2FpbnMKK2ZvciBzdGFuZGFyZCBwcmVjaXNpb25zIHVzZWQgaW4gZGVjaW1hbCBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljLiBTaW5jZQordGhlIHByZWNpc2lvbiBpcyB1c2VyIGNvbmZpZ3VyYWJsZSwgdGhlIGV4YWN0IGZpZ3VyZXMgbWF5IHZhcnkuIEZvciBleGFtcGxlLAoraW4gaW50ZWdlciBiaWdudW0gYXJpdGhtZXRpYyB0aGUgZGlmZmVyZW5jZXMgY2FuIGJlIHNpZ25pZmljYW50bHkgaGlnaGVyLgorCitUaGUgZm9sbG93aW5nIHRhYmxlIGlzIG1lYW50IGFzIGFuIGlsbHVzdHJhdGlvbi4gQmVuY2htYXJrcyBhcmUgYXZhaWxhYmxlCithdCBodHRwOi8vd3d3LmJ5dGVyZWVmLm9yZy9tcGRlY2ltYWwvcXVpY2tzdGFydC5odG1sLgorCisgICArLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSsKKyAgIHwgICAgICAgICB8ICBkZWNpbWFsLnB5IHwgICBfZGVjaW1hbCAgIHwgICBzcGVlZHVwICAgfAorICAgKz09PT09PT09PSs9PT09PT09PT09PT09Kz09PT09PT09PT09PT09Kz09PT09PT09PT09PT0rCisgICB8ICAgcGkgICAgfCAgICA0Mi4wMnMgICB8ICAgIDAuMzQ1cyAgICB8ICAgIDEyMHggICAgIHwKKyAgICstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKworICAgfCB0ZWxjbyAgIHwgICAxNzIuMTlzICAgfCAgICA1LjY4cyAgICAgfCAgICAgMzB4ICAgICB8CisgICArLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSsKKyAgIHwgcHN5Y29wZyB8ICAgICAzLjU3cyAgIHwgICAgMC4yOXMgICAgIHwgICAgIDEyeCAgICAgfAorICAgKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCisKK0ZlYXR1cmVzCit+fn5+fn5+fgorCisqIFRoZSA6ZXhjOmB+ZGVjaW1hbC5GbG9hdE9wZXJhdGlvbmAgc2lnbmFsIG9wdGlvbmFsbHkgZW5hYmxlcyBzdHJpY3RlcgorICBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzLgorCisqIElmIFB5dGhvbiBpcyBjb21waWxlZCB3aXRob3V0IHRocmVhZHMsIHRoZSBDIHZlcnNpb24gYXV0b21hdGljYWxseQorICBkaXNhYmxlcyB0aGUgZXhwZW5zaXZlIHRocmVhZCBsb2NhbCBjb250ZXh0IG1hY2hpbmVyeS4gSW4gdGhpcyBjYXNlLAorICB0aGUgdmFyaWFibGUgOmRhdGE6YH5kZWNpbWFsLkhBVkVfVEhSRUFEU2AgaXMgc2V0IHRvIEZhbHNlLgorCitBUEkgY2hhbmdlcworfn5+fn5+fn5+fn4KKworKiBUaGUgQyBtb2R1bGUgaGFzIHRoZSBmb2xsb3dpbmcgY29udGV4dCBsaW1pdHMsIGRlcGVuZGluZyBvbiB0aGUgbWFjaGluZQorICBhcmNoaXRlY3R1cmU6CisKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgMzItYml0ICAgICAgICB8ICAgICAgICAgICAgNjQtYml0ICAgICAgICAgICAgfAorICAgKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAgIHwgOmNvbnN0OmBNQVhfUFJFQ2AgfCA6Y29uc3Q6YDQyNTAwMDAwMGAgIHwgOmNvbnN0OmA5OTk5OTk5OTk5OTk5OTk5OTlgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YE1BWF9FTUFYYCB8IDpjb25zdDpgNDI1MDAwMDAwYCAgfCA6Y29uc3Q6YDk5OTk5OTk5OTk5OTk5OTk5OWAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgTUlOX0VNSU5gIHwgOmNvbnN0OmAtNDI1MDAwMDAwYCB8IDpjb25zdDpgLTk5OTk5OTk5OTk5OTk5OTk5OWAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworKiBJbiB0aGUgY29udGV4dCB0ZW1wbGF0ZXMgKDpjbGFzczpgfmRlY2ltYWwuRGVmYXVsdENvbnRleHRgLAorICA6Y2xhc3M6YH5kZWNpbWFsLkJhc2ljQ29udGV4dGAgYW5kIDpjbGFzczpgfmRlY2ltYWwuRXh0ZW5kZWRDb250ZXh0YCkKKyAgdGhlIG1hZ25pdHVkZSBvZiA6YXR0cjpgfmRlY2ltYWwuQ29udGV4dC5FbWF4YCBhbmQKKyAgOmF0dHI6YH5kZWNpbWFsLkNvbnRleHQuRW1pbmAgaGFzIGNoYW5nZWQgdG8gOmNvbnN0OmA5OTk5OTlgLgorCisqIFRoZSA6Y2xhc3M6YH5kZWNpbWFsLkRlY2ltYWxgIGNvbnN0cnVjdG9yIGluIGRlY2ltYWwucHkgZG9lcyBub3Qgb2JzZXJ2ZQorICB0aGUgY29udGV4dCBsaW1pdHMgYW5kIGNvbnZlcnRzIHZhbHVlcyB3aXRoIGFyYml0cmFyeSBleHBvbmVudHMgb3IgcHJlY2lzaW9uCisgIGV4YWN0bHkuIFNpbmNlIHRoZSBDIHZlcnNpb24gaGFzIGludGVybmFsIGxpbWl0cywgdGhlIGZvbGxvd2luZyBzY2hlbWUgaXMKKyAgdXNlZDogSWYgcG9zc2libGUsIHZhbHVlcyBhcmUgY29udmVydGVkIGV4YWN0bHksIG90aGVyd2lzZQorICA6ZXhjOmB+ZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uYCBpcyByYWlzZWQgYW5kIHRoZSByZXN1bHQgaXMgTmFOLiBJbiB0aGUKKyAgbGF0dGVyIGNhc2UgaXQgaXMgYWx3YXlzIHBvc3NpYmxlIHRvIHVzZSA6bWV0aDpgfmRlY2ltYWwuQ29udGV4dC5jcmVhdGVfZGVjaW1hbGAKKyAgaW4gb3JkZXIgdG8gb2J0YWluIGEgcm91bmRlZCBvciBpbmV4YWN0IHZhbHVlLgorCisKKyogVGhlIHBvd2VyIGZ1bmN0aW9uIGluIGRlY2ltYWwucHkgaXMgYWx3YXlzIGNvcnJlY3RseS1yb3VuZGVkLiBJbiB0aGUKKyAgQyB2ZXJzaW9uLCBpdCBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIHRoZSBjb3JyZWN0bHktcm91bmRlZAorICA6bWV0aDpgfmRlY2ltYWwuRGVjaW1hbC5leHBgIGFuZCA6bWV0aDpgfmRlY2ltYWwuRGVjaW1hbC5sbmAgZnVuY3Rpb25zLAorICBidXQgdGhlIGZpbmFsIHJlc3VsdCBpcyBvbmx5ICJhbG1vc3QgYWx3YXlzIGNvcnJlY3RseSByb3VuZGVkIi4KKworCisqIEluIHRoZSBDIHZlcnNpb24sIHRoZSBjb250ZXh0IGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgc2lnbmFscyBpcyBhCisgIDpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlTWFwcGluZ2AuICBGb3Igc3BlZWQgcmVhc29ucywKKyAgOmF0dHI6YH5kZWNpbWFsLkNvbnRleHQuZmxhZ3NgIGFuZCA6YXR0cjpgfmRlY2ltYWwuQ29udGV4dC50cmFwc2AgYWx3YXlzCisgIHJlZmVyIHRvIHRoZSBzYW1lIDpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlTWFwcGluZ2AgdGhhdCB0aGUgY29udGV4dAorICB3YXMgaW5pdGlhbGl6ZWQgd2l0aC4gSWYgYSBuZXcgc2lnbmFsIGRpY3Rpb25hcnkgaXMgYXNzaWduZWQsCisgIDphdHRyOmB+ZGVjaW1hbC5Db250ZXh0LmZsYWdzYCBhbmQgOmF0dHI6YH5kZWNpbWFsLkNvbnRleHQudHJhcHNgCisgIGFyZSB1cGRhdGVkIHdpdGggdGhlIG5ldyB2YWx1ZXMsIGJ1dCB0aGV5IGRvIG5vdCByZWZlcmVuY2UgdGhlIFJIUworICBkaWN0aW9uYXJ5LgorCisKKyogUGlja2xpbmcgYSA6Y2xhc3M6YH5kZWNpbWFsLkNvbnRleHRgIHByb2R1Y2VzIGEgZGlmZmVyZW50IG91dHB1dCBpbiBvcmRlcgorICB0byBoYXZlIGEgY29tbW9uIGludGVyY2hhbmdlIGZvcm1hdCBmb3IgdGhlIFB5dGhvbiBhbmQgQyB2ZXJzaW9ucy4KKworCisqIFRoZSBvcmRlciBvZiBhcmd1bWVudHMgaW4gdGhlIDpjbGFzczpgfmRlY2ltYWwuQ29udGV4dGAgY29uc3RydWN0b3IgaGFzIGJlZW4KKyAgY2hhbmdlZCB0byBtYXRjaCB0aGUgb3JkZXIgZGlzcGxheWVkIGJ5IDpmdW5jOmByZXByYC4KKworCisqIFRoZSBgYHdhdGNoZXhwYGAgcGFyYW1ldGVyIGluIHRoZSA6bWV0aDpgfmRlY2ltYWwuRGVjaW1hbC5xdWFudGl6ZWAgbWV0aG9kCisgIGlzIGRlcHJlY2F0ZWQuCisKKworLi4gX25ldy1lbWFpbDoKKworZW1haWwKKy0tLS0tCisKK1BvbGljeSBGcmFtZXdvcmsKK35+fn5+fn5+fn5+fn5+fn4KKworVGhlIGVtYWlsIHBhY2thZ2Ugbm93IGhhcyBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGZyYW1ld29yay4gIEEKKzpjbGFzczpgfmVtYWlsLnBvbGljeS5Qb2xpY3lgIGlzIGFuIG9iamVjdCB3aXRoIHNldmVyYWwgbWV0aG9kcyBhbmQgcHJvcGVydGllcwordGhhdCBjb250cm9sIGhvdyB0aGUgZW1haWwgcGFja2FnZSBiZWhhdmVzLiAgVGhlIHByaW1hcnkgcG9saWN5IGZvciBQeXRob24gMy4zCitpcyB0aGUgOmNsYXNzOmB+ZW1haWwucG9saWN5LkNvbXBhdDMyYCBwb2xpY3ksIHdoaWNoIHByb3ZpZGVzIGJhY2t3YXJkCitjb21wYXRpYmlsaXR5IHdpdGggdGhlIGVtYWlsIHBhY2thZ2UgaW4gUHl0aG9uIDMuMi4gIEEgYGBwb2xpY3lgYCBjYW4gYmUKK3NwZWNpZmllZCB3aGVuIGFuIGVtYWlsIG1lc3NhZ2UgaXMgcGFyc2VkIGJ5IGEgOm1vZDpgfmVtYWlsLnBhcnNlcmAsIG9yIHdoZW4gYQorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3QgaXMgY3JlYXRlZCwgb3Igd2hlbiBhbiBlbWFpbCBpcworc2VyaWFsaXplZCB1c2luZyBhIDptb2Q6YH5lbWFpbC5nZW5lcmF0b3JgLiAgVW5sZXNzIG92ZXJyaWRkZW4sIGEgcG9saWN5IHBhc3NlZAordG8gYSBgYHBhcnNlcmBgIGlzIGluaGVyaXRlZCBieSBhbGwgdGhlIGBgTWVzc2FnZWBgIG9iamVjdCBhbmQgc3ViLW9iamVjdHMKK2NyZWF0ZWQgYnkgdGhlIGBgcGFyc2VyYGAuICBCeSBkZWZhdWx0IGEgYGBnZW5lcmF0b3JgYCB3aWxsIHVzZSB0aGUgcG9saWN5IG9mCit0aGUgYGBNZXNzYWdlYGAgb2JqZWN0IGl0IGlzIHNlcmlhbGl6aW5nLiAgVGhlIGRlZmF1bHQgcG9saWN5IGlzCis6ZGF0YTpgfmVtYWlsLnBvbGljeS5jb21wYXQzMmAuCisKK1RoZSBtaW5pbXVtIHNldCBvZiBjb250cm9scyBpbXBsZW1lbnRlZCBieSBhbGwgYGBwb2xpY3lgYCBvYmplY3RzIGFyZToKKworICAgID09PT09PT09PT09PT09PSAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIG1heF9saW5lX2xlbmd0aCAgICAgVGhlIG1heGltdW0gbGVuZ3RoLCBleGNsdWRpbmcgdGhlIGxpbmVzZXAgY2hhcmFjdGVyKHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbCBsaW5lcyBtYXkgaGF2ZSB3aGVuIGEgYGBNZXNzYWdlYGAgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWQuICBEZWZhdWx0cyB0byA3OC4KKworICAgIGxpbmVzZXAgICAgICAgICAgICAgVGhlIGNoYXJhY3RlciB1c2VkIHRvIHNlcGFyYXRlIGluZGl2aWR1YWwgbGluZXMgd2hlbiBhCisgICAgICAgICAgICAgICAgICAgICAgICBgYE1lc3NhZ2VgYCBpcyBzZXJpYWxpemVkLiAgRGVmYXVsdHMgdG8gYGBcbmBgLgorCisgICAgY3RlX3R5cGUgICAgICAgICAgICBgYDdiaXRgYCBvciBgYDhiaXRgYC4gIGBgOGJpdGBgIGFwcGxpZXMgb25seSB0byBhCisgICAgICAgICAgICAgICAgICAgICAgICBgYEJ5dGVzYGAgYGBnZW5lcmF0b3JgYCwgYW5kIG1lYW5zIHRoYXQgbm9uLUFTQ0lJIG1heQorICAgICAgICAgICAgICAgICAgICAgICAgYmUgdXNlZCB3aGVyZSBhbGxvd2VkIGJ5IHRoZSBwcm90b2NvbCAob3Igd2hlcmUgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0cyBpbiB0aGUgb3JpZ2luYWwgaW5wdXQpLgorCisgICAgcmFpc2Vfb25fZGVmZWN0ICAgICBDYXVzZXMgYSBgYHBhcnNlcmBgIHRvIHJhaXNlIGVycm9yIHdoZW4gZGVmZWN0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY291bnRlcmVkIGluc3RlYWQgb2YgYWRkaW5nIHRoZW0gdG8gdGhlIGBgTWVzc2FnZWBgCisgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QncyBgYGRlZmVjdHNgYCBsaXN0LgorICAgID09PT09PT09PT09PT09PSAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBIG5ldyBwb2xpY3kgaW5zdGFuY2UsIHdpdGggbmV3IHNldHRpbmdzLCBpcyBjcmVhdGVkIHVzaW5nIHRoZQorOm1ldGg6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmNsb25lYCBtZXRob2Qgb2YgcG9saWN5IG9iamVjdHMuICBgYGNsb25lYGAgdGFrZXMKK2FueSBvZiB0aGUgYWJvdmUgY29udHJvbHMgYXMga2V5d29yZCBhcmd1bWVudHMuICBBbnkgY29udHJvbCBub3Qgc3BlY2lmaWVkIGluCit0aGUgY2FsbCByZXRhaW5zIGl0cyBkZWZhdWx0IHZhbHVlLiAgVGh1cyB5b3UgY2FuIGNyZWF0ZSBhIHBvbGljeSB0aGF0IHVzZXMKK2BgXHJcbmBgIGxpbmVzZXAgY2hhcmFjdGVycyBsaWtlIHRoaXM6OgorCisgICAgbXlwb2xpY3kgPSBjb21wYXQzMi5jbG9uZShsaW5lc2VwPSdcclxuJykKKworUG9saWNpZXMgY2FuIGJlIHVzZWQgdG8gbWFrZSB0aGUgZ2VuZXJhdGlvbiBvZiBtZXNzYWdlcyBpbiB0aGUgZm9ybWF0IG5lZWRlZCBieQoreW91ciBhcHBsaWNhdGlvbiBzaW1wbGVyLiAgSW5zdGVhZCBvZiBoYXZpbmcgdG8gcmVtZW1iZXIgdG8gc3BlY2lmeQorYGBsaW5lc2VwPSdcclxuJ2BgIGluIGFsbCB0aGUgcGxhY2VzIHlvdSBjYWxsIGEgYGBnZW5lcmF0b3JgYCwgeW91IGNhbiBzcGVjaWZ5CitpdCBvbmNlLCB3aGVuIHlvdSBzZXQgdGhlIHBvbGljeSB1c2VkIGJ5IHRoZSBgYHBhcnNlcmBgIG9yIHRoZSBgYE1lc3NhZ2VgYCwKK3doaWNoZXZlciB5b3VyIHByb2dyYW0gdXNlcyB0byBjcmVhdGUgYGBNZXNzYWdlYGAgb2JqZWN0cy4gIE9uIHRoZSBvdGhlciBoYW5kLAoraWYgeW91IG5lZWQgdG8gZ2VuZXJhdGUgbWVzc2FnZXMgaW4gbXVsdGlwbGUgZm9ybXMsIHlvdSBjYW4gc3RpbGwgc3BlY2lmeSB0aGUKK3BhcmFtZXRlcnMgaW4gdGhlIGFwcHJvcHJpYXRlIGBgZ2VuZXJhdG9yYGAgY2FsbC4gIE9yIHlvdSBjYW4gaGF2ZSBjdXN0b20KK3BvbGljeSBpbnN0YW5jZXMgZm9yIHlvdXIgZGlmZmVyZW50IGNhc2VzLCBhbmQgcGFzcyB0aG9zZSBpbiB3aGVuIHlvdSBjcmVhdGUKK3RoZSBgYGdlbmVyYXRvcmBgLgorCisKK1Byb3Zpc2lvbmFsIFBvbGljeSB3aXRoIE5ldyBIZWFkZXIgQVBJCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitXaGlsZSB0aGUgcG9saWN5IGZyYW1ld29yayBpcyB3b3J0aHdoaWxlIGFsbCBieSBpdHNlbGYsIHRoZSBtYWluIG1vdGl2YXRpb24gZm9yCitpbnRyb2R1Y2luZyBpdCBpcyB0byBhbGxvdyB0aGUgY3JlYXRpb24gb2YgbmV3IHBvbGljaWVzIHRoYXQgaW1wbGVtZW50IG5ldworZmVhdHVyZXMgZm9yIHRoZSBlbWFpbCBwYWNrYWdlIGluIGEgd2F5IHRoYXQgbWFpbnRhaW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKK2ZvciB0aG9zZSB3aG8gZG8gbm90IHVzZSB0aGUgbmV3IHBvbGljaWVzLiAgQmVjYXVzZSB0aGUgbmV3IHBvbGljaWVzIGludHJvZHVjZSBhCituZXcgQVBJLCB3ZSBhcmUgcmVsZWFzaW5nIHRoZW0gaW4gUHl0aG9uIDMuMyBhcyBhIDp0ZXJtOmBwcm92aXNpb25hbCBwb2xpY3kKKzxwcm92aXNpb25hbCBwYWNrYWdlPmAuICBCYWNrd2FyZHMgaW5jb21wYXRpYmxlIGNoYW5nZXMgKHVwIHRvIGFuZCBpbmNsdWRpbmcKK3JlbW92YWwgb2YgdGhlIGNvZGUpIG1heSBvY2N1ciBpZiBkZWVtZWQgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCisKK1RoZSBuZXcgcG9saWNpZXMgYXJlIGluc3RhbmNlcyBvZiA6Y2xhc3M6YH5lbWFpbC5wb2xpY3kuRW1haWxQb2xpY3lgLAorYW5kIGFkZCB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgY29udHJvbHM6CisKKyAgICA9PT09PT09PT09PT09PT0gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICByZWZvbGRfc291cmNlICAgICAgIENvbnRyb2xzIHdoZXRoZXIgb3Igbm90IGhlYWRlcnMgcGFyc2VkIGJ5IGEKKyAgICAgICAgICAgICAgICAgICAgICAgIDptb2Q6YH5lbWFpbC5wYXJzZXJgIGFyZSByZWZvbGRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDptb2Q6YH5lbWFpbC5nZW5lcmF0b3JgLiAgSXQgY2FuIGJlIGBgbm9uZWBgLCBgYGxvbmdgYCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9yIGBgYWxsYGAuICBUaGUgZGVmYXVsdCBpcyBgYGxvbmdgYCwgd2hpY2ggbWVhbnMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlIGhlYWRlcnMgd2l0aCBhIGxpbmUgbG9uZ2VyIHRoYW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGBgbWF4X2xpbmVfbGVuZ3RoYGAgZ2V0IHJlZm9sZGVkLiAgYGBub25lYGAgbWVhbnMgbm8KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgZ2V0IHJlZm9sZGVkLCBhbmQgYGBhbGxgYCBtZWFucyB0aGF0IGFsbCBsaW5lcworICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IHJlZm9sZGVkLgorCisgICAgaGVhZGVyX2ZhY3RvcnkgICAgICBBIGNhbGxhYmxlIHRoYXQgdGFrZSBhIGBgbmFtZWBgIGFuZCBgYHZhbHVlYGAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWNlcyBhIGN1c3RvbSBoZWFkZXIgb2JqZWN0LgorICAgID09PT09PT09PT09PT09PSAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgYGBoZWFkZXJfZmFjdG9yeWBgIGlzIHRoZSBrZXkgdG8gdGhlIG5ldyBmZWF0dXJlcyBwcm92aWRlZCBieSB0aGUgbmV3Citwb2xpY2llcy4gIFdoZW4gb25lIG9mIHRoZSBuZXcgcG9saWNpZXMgaXMgdXNlZCwgYW55IGhlYWRlciByZXRyaWV2ZWQgZnJvbQorYSBgYE1lc3NhZ2VgYCBvYmplY3QgaXMgYW4gb2JqZWN0IHByb2R1Y2VkIGJ5IHRoZSBgYGhlYWRlcl9mYWN0b3J5YGAsIGFuZCBhbnkKK3RpbWUgeW91IHNldCBhIGhlYWRlciBvbiBhIGBgTWVzc2FnZWBgIGl0IGJlY29tZXMgYW4gb2JqZWN0IHByb2R1Y2VkIGJ5CitgYGhlYWRlcl9mYWN0b3J5YGAuICBBbGwgc3VjaCBoZWFkZXIgb2JqZWN0cyBoYXZlIGEgYGBuYW1lYGAgYXR0cmlidXRlIGVxdWFsCit0byB0aGUgaGVhZGVyIG5hbWUuICBBZGRyZXNzIGFuZCBEYXRlIGhlYWRlcnMgaGF2ZSBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMKK3RoYXQgZ2l2ZSB5b3UgYWNjZXNzIHRvIHRoZSBwYXJzZWQgZGF0YSBvZiB0aGUgaGVhZGVyLiAgVGhpcyBtZWFucyB5b3UgY2FuIG5vdworZG8gdGhpbmdzIGxpa2UgdGhpczo6CisKKyAgICA+Pj4gbSA9IE1lc3NhZ2UocG9saWN5PVNNVFApCisgICAgPj4+IG1bJ1RvJ10gPSAnw4lyaWMgPGZvb0BleGFtcGxlLmNvbT4nCisgICAgPj4+IG1bJ3RvJ10KKyAgICAnw4lyaWMgPGZvb0BleGFtcGxlLmNvbT4nCisgICAgPj4+IG1bJ3RvJ10uYWRkcmVzc2VzCisgICAgKEFkZHJlc3MoZGlzcGxheV9uYW1lPSfDiXJpYycsIHVzZXJuYW1lPSdmb28nLCBkb21haW49J2V4YW1wbGUuY29tJyksKQorICAgID4+PiBtWyd0byddLmFkZHJlc3Nlc1swXS51c2VybmFtZQorICAgICdmb28nCisgICAgPj4+IG1bJ3RvJ10uYWRkcmVzc2VzWzBdLmRpc3BsYXlfbmFtZQorICAgICfDiXJpYycKKyAgICA+Pj4gbVsnRGF0ZSddID0gZW1haWwudXRpbHMubG9jYWx0aW1lKCkKKyAgICA+Pj4gbVsnRGF0ZSddLmRhdGV0aW1lCisgICAgZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMiwgNSwgMjUsIDIxLCAzOSwgMjQsIDQ2NTQ4NCwgdHppbmZvPWRhdGV0aW1lLnRpbWV6b25lKGRhdGV0aW1lLnRpbWVkZWx0YSgtMSwgNzIwMDApLCAnRURUJykpCisgICAgPj4+IG1bJ0RhdGUnXQorICAgICdGcmksIDI1IE1heSAyMDEyIDIxOjQ0OjI3IC0wNDAwJworICAgID4+PiBwcmludChtKQorICAgIFRvOiA9P3V0Zi04P3E/PUMzPTg5cmljPz0gPGZvb0BleGFtcGxlLmNvbT4KKyAgICBEYXRlOiBGcmksIDI1IE1heSAyMDEyIDIxOjQ0OjI3IC0wNDAwCisKK1lvdSB3aWxsIG5vdGUgdGhhdCB0aGUgdW5pY29kZSBkaXNwbGF5IG5hbWUgaXMgYXV0b21hdGljYWxseSBlbmNvZGVkIGFzCitgYHV0Zi04YGAgd2hlbiB0aGUgbWVzc2FnZSBpcyBzZXJpYWxpemVkLCBidXQgdGhhdCB3aGVuIHRoZSBoZWFkZXIgaXMgYWNjZXNzZWQKK2RpcmVjdGx5LCB5b3UgZ2V0IHRoZSB1bmljb2RlIHZlcnNpb24uICBUaGlzIGVsaW1pbmF0ZXMgYW55IG5lZWQgdG8gZGVhbCB3aXRoCit0aGUgOm1vZDpgZW1haWwuaGVhZGVyYCA6bWV0aDpgfmVtYWlsLmhlYWRlci5kZWNvZGVfaGVhZGVyYCBvcgorOm1ldGg6YH5lbWFpbC5oZWFkZXIubWFrZV9oZWFkZXJgIGZ1bmN0aW9ucy4KKworWW91IGNhbiBhbHNvIGNyZWF0ZSBhZGRyZXNzZXMgZnJvbSBwYXJ0czo6CisKKyAgICA+Pj4gbVsnY2MnXSA9IFtHcm91cCgncGFscycsIFtBZGRyZXNzKCdCb2InLCAnYm9iJywgJ2V4YW1wbGUuY29tJyksCisgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcygnU2FsbHknLCAnc2FsbHknLCAnZXhhbXBsZS5jb20nKV0pLAorICAgIC4uLiAgICAgICAgICAgIEFkZHJlc3MoJ0JvbnpvJywgYWRkcl9zcGVjPSdib256QGxhdWdoLmNvbScpXQorICAgID4+PiBwcmludChtKQorICAgIFRvOiA9P3V0Zi04P3E/PUMzPTg5cmljPz0gPGZvb0BleGFtcGxlLmNvbT4KKyAgICBEYXRlOiBGcmksIDI1IE1heSAyMDEyIDIxOjQ0OjI3IC0wNDAwCisgICAgY2M6IHBhbHM6IEJvYiA8Ym9iQGV4YW1wbGUuY29tPiwgU2FsbHkgPHNhbGx5QGV4YW1wbGUuY29tPjssIEJvbnpvIDxib256QGxhdWdoLmNvbT4KKworRGVjb2RpbmcgdG8gdW5pY29kZSBpcyBkb25lIGF1dG9tYXRpY2FsbHk6OgorCisgICAgPj4+IG0yID0gbWVzc2FnZV9mcm9tX3N0cmluZyhzdHIobSkpCisgICAgPj4+IG0yWyd0byddCisgICAgJ8OJcmljIDxmb29AZXhhbXBsZS5jb20+JworCitXaGVuIHlvdSBwYXJzZSBhIG1lc3NhZ2UsIHlvdSBjYW4gdXNlIHRoZSBgYGFkZHJlc3Nlc2BgIGFuZCBgYGdyb3Vwc2BgCithdHRyaWJ1dGVzIG9mIHRoZSBoZWFkZXIgb2JqZWN0cyB0byBhY2Nlc3MgdGhlIGdyb3VwcyBhbmQgaW5kaXZpZHVhbAorYWRkcmVzc2VzOjoKKworICAgID4+PiBtMlsnY2MnXS5hZGRyZXNzZXMKKyAgICAoQWRkcmVzcyhkaXNwbGF5X25hbWU9J0JvYicsIHVzZXJuYW1lPSdib2InLCBkb21haW49J2V4YW1wbGUuY29tJyksIEFkZHJlc3MoZGlzcGxheV9uYW1lPSdTYWxseScsIHVzZXJuYW1lPSdzYWxseScsIGRvbWFpbj0nZXhhbXBsZS5jb20nKSwgQWRkcmVzcyhkaXNwbGF5X25hbWU9J0JvbnpvJywgdXNlcm5hbWU9J2JvbnonLCBkb21haW49J2xhdWdoLmNvbScpKQorICAgID4+PiBtMlsnY2MnXS5ncm91cHMKKyAgICAoR3JvdXAoZGlzcGxheV9uYW1lPSdwYWxzJywgYWRkcmVzc2VzPShBZGRyZXNzKGRpc3BsYXlfbmFtZT0nQm9iJywgdXNlcm5hbWU9J2JvYicsIGRvbWFpbj0nZXhhbXBsZS5jb20nKSwgQWRkcmVzcyhkaXNwbGF5X25hbWU9J1NhbGx5JywgdXNlcm5hbWU9J3NhbGx5JywgZG9tYWluPSdleGFtcGxlLmNvbScpKSwgR3JvdXAoZGlzcGxheV9uYW1lPU5vbmUsIGFkZHJlc3Nlcz0oQWRkcmVzcyhkaXNwbGF5X25hbWU9J0JvbnpvJywgdXNlcm5hbWU9J2JvbnonLCBkb21haW49J2xhdWdoLmNvbScpLCkpCisKK0luIHN1bW1hcnksIGlmIHlvdSB1c2Ugb25lIG9mIHRoZSBuZXcgcG9saWNpZXMsIGhlYWRlciBtYW5pcHVsYXRpb24gd29ya3MgdGhlCit3YXkgaXQgb3VnaHQgdG86ICB5b3VyIGFwcGxpY2F0aW9uIHdvcmtzIHdpdGggdW5pY29kZSBzdHJpbmdzLCBhbmQgdGhlIGVtYWlsCitwYWNrYWdlIHRyYW5zcGFyZW50bHkgZW5jb2RlcyBhbmQgZGVjb2RlcyB0aGUgdW5pY29kZSB0byBhbmQgZnJvbSB0aGUgUkZDCitzdGFuZGFyZCBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5ncy4KKworT3RoZXIgQVBJIENoYW5nZXMKK35+fn5+fn5+fn5+fn5+fn5+CisKK05ldyA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuQnl0ZXNIZWFkZXJQYXJzZXJgLCBhZGRlZCB0byB0aGUgOm1vZDpgfmVtYWlsLnBhcnNlcmAKK21vZHVsZSB0byBjb21wbGVtZW50IDpjbGFzczpgfmVtYWlsLnBhcnNlci5IZWFkZXJQYXJzZXJgIGFuZCBjb21wbGV0ZSB0aGUgQnl0ZXMKK0FQSS4KKworTmV3IHV0aWxpdHkgZnVuY3Rpb25zOgorCisgICAqIDpmdW5jOmB+ZW1haWwudXRpbHMuZm9ybWF0X2RhdGV0aW1lYDogZ2l2ZW4gYSA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAsCisgICAgIHByb2R1Y2UgYSBzdHJpbmcgZm9ybWF0dGVkIGZvciB1c2UgaW4gYW4gZW1haWwgaGVhZGVyLgorCisgICAqIDpmdW5jOmB+ZW1haWwudXRpbHMucGFyc2VkYXRlX3RvX2RhdGV0aW1lYDogZ2l2ZW4gYSBkYXRlIHN0cmluZyBmcm9tCisgICAgIGFuIGVtYWlsIGhlYWRlciwgY29udmVydCBpdCBpbnRvIGFuIGF3YXJlIDpjbGFzczpgfmRhdGV0aW1lLmRhdGV0aW1lYCwKKyAgICAgb3IgYSBuYWl2ZSA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAgaWYgdGhlIG9mZnNldCBpcyBgYC0wMDAwYGAuCisKKyAgICogOmZ1bmM6YH5lbWFpbC51dGlscy5sb2NhbHRpbWVgOiBXaXRoIG5vIGFyZ3VtZW50LCByZXR1cm5zIHRoZQorICAgICBjdXJyZW50IGxvY2FsIHRpbWUgYXMgYW4gYXdhcmUgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgIHVzaW5nIHRoZSBsb2NhbAorICAgICA6Y2xhc3M6YH5kYXRldGltZS50aW1lem9uZWAuICBHaXZlbiBhbiBhd2FyZSA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAsCisgICAgIGNvbnZlcnRzIGl0IGludG8gYW4gYXdhcmUgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgIHVzaW5nIHRoZQorICAgICBsb2NhbCA6Y2xhc3M6YH5kYXRldGltZS50aW1lem9uZWAuCisKKworZnRwbGliCistLS0tLS0KKworKiA6Y2xhc3M6YGZ0cGxpYi5GVFBgIG5vdyBhY2NlcHRzIGEgYGBzb3VyY2VfYWRkcmVzc2BgIGtleXdvcmQgYXJndW1lbnQgdG8KKyAgc3BlY2lmeSB0aGUgYGAoaG9zdCwgcG9ydClgYCB0byB1c2UgYXMgdGhlIHNvdXJjZSBhZGRyZXNzIGluIHRoZSBiaW5kIGNhbGwKKyAgd2hlbiBjcmVhdGluZyB0aGUgb3V0Z29pbmcgc29ja2V0LiAgKENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbMOgCisgIGluIDppc3N1ZTpgODU5NGAuKQorCisqIFRoZSA6Y2xhc3M6YH5mdHBsaWIuRlRQX1RMU2AgY2xhc3Mgbm93IHByb3ZpZGVzIGEgbmV3CisgIDpmdW5jOmB+ZnRwbGliLkZUUF9UTFMuY2NjYCBmdW5jdGlvbiB0byByZXZlcnQgY29udHJvbCBjaGFubmVsIGJhY2sgdG8KKyAgcGxhaW50ZXh0LiAgVGhpcyBjYW4gYmUgdXNlZnVsIHRvIHRha2UgYWR2YW50YWdlIG9mIGZpcmV3YWxscyB0aGF0IGtub3cgaG93CisgIHRvIGhhbmRsZSBOQVQgd2l0aCBub24tc2VjdXJlIEZUUCB3aXRob3V0IG9wZW5pbmcgZml4ZWQgcG9ydHMuICAoQ29udHJpYnV0ZWQKKyAgYnkgR2lhbXBhb2xvIFJvZG9sw6AgaW4gOmlzc3VlOmAxMjEzOWApCisKKyogQWRkZWQgOm1ldGg6YGZ0cGxpYi5GVFAubWxzZGAgbWV0aG9kIHdoaWNoIHByb3ZpZGVzIGEgcGFyc2FibGUgZGlyZWN0b3J5CisgIGxpc3RpbmcgZm9ybWF0IGFuZCBkZXByZWNhdGVzIDptZXRoOmBmdHBsaWIuRlRQLm5sc3RgIGFuZAorICA6bWV0aDpgZnRwbGliLkZUUC5kaXJgLiAgKENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbMOgIGluIDppc3N1ZTpgMTEwNzJgKQorCisKK2Z1bmN0b29scworLS0tLS0tLS0tCisKK1RoZSA6ZnVuYzpgZnVuY3Rvb2xzLmxydV9jYWNoZWAgZGVjb3JhdG9yIG5vdyBhY2NlcHRzIGEgYGB0eXBlZGBgIGtleXdvcmQKK2FyZ3VtZW50ICh0aGF0IGRlZmF1bHRzIHRvIGBgRmFsc2VgYCB0byBlbnN1cmUgdGhhdCBpdCBjYWNoZXMgdmFsdWVzIG9mCitkaWZmZXJlbnQgdHlwZXMgdGhhdCBjb21wYXJlIGVxdWFsIGluIHNlcGFyYXRlIGNhY2hlIHNsb3RzLiAgKENvbnRyaWJ1dGVkCitieSBSYXltb25kIEhldHRpbmdlciBpbiA6aXNzdWU6YDEzMjI3YC4pCisKKworZ2MKKy0tCisKK0l0IGlzIG5vdyBwb3NzaWJsZSB0byByZWdpc3RlciBjYWxsYmFja3MgaW52b2tlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IKK2JlZm9yZSBhbmQgYWZ0ZXIgY29sbGVjdGlvbiB1c2luZyB0aGUgbmV3IDpkYXRhOmB+Z2MuY2FsbGJhY2tzYCBsaXN0LgorCisKK2htYWMKKy0tLS0KKworQSBuZXcgOmZ1bmM6YH5obWFjLmNvbXBhcmVfZGlnZXN0YCBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZCB0byBwcmV2ZW50IHNpZGUKK2NoYW5uZWwgYXR0YWNrcyBvbiBkaWdlc3RzIHRocm91Z2ggdGltaW5nIGFuYWx5c2lzLiAgKENvbnRyaWJ1dGVkIGJ5IE5pY2sKK0NvZ2hsYW4gYW5kIENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAxNTA2MWApCisKKworaHR0cAorLS0tLQorCis6Y2xhc3M6YGh0dHAuc2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXJgIG5vdyBidWZmZXJzIHRoZSBoZWFkZXJzIGFuZCB3cml0ZXMKK3RoZW0gYWxsIGF0IG9uY2Ugd2hlbiA6bWV0aDpgfmh0dHAuc2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuZW5kX2hlYWRlcnNgIGlzCitjYWxsZWQuICBBIG5ldyBtZXRob2QgOm1ldGg6YH5odHRwLnNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVyLmZsdXNoX2hlYWRlcnNgCitjYW4gYmUgdXNlZCB0byBkaXJlY3RseSBtYW5hZ2Ugd2hlbiB0aGUgYWNjdW1sYXRlZCBoZWFkZXJzIGFyZSBzZW50LgorKENvbnRyaWJ1dGVkIGJ5IEFuZHJldyBTY2hhYWYgaW4gOmlzc3VlOmAzNzA5YC4pCisKKzpjbGFzczpgaHR0cC5zZXJ2ZXJgIG5vdyBwcm9kdWNlcyB2YWxpZCBgYEhUTUwgNC4wMSBzdHJpY3RgYCBvdXRwdXQuCisoQ29udHJpYnV0ZWQgYnkgRXppbyBNZWxvdHRpIGluIDppc3N1ZTpgMTMyOTVgLikKKworOmNsYXNzOmBodHRwLmNsaWVudC5IVFRQUmVzcG9uc2VgIG5vdyBoYXMgYQorOm1ldGg6YH5odHRwLmNsaWVudC5IVFRQUmVzcG9uc2UucmVhZGludG9gIG1ldGhvZCwgd2hpY2ggbWVhbnMgaXQgY2FuIGJlIHVzZWQKK2FzIGEgOmNsYXNzOmBpby5SYXdJT0Jhc2VgIGNsYXNzLiAgKENvbnRyaWJ1dGVkIGJ5IEpvaG4gS3VobiBpbgorOmlzc3VlOmAxMzQ2NGAuKQorCisKK2h0bWwKKy0tLS0KKworOmNsYXNzOmBodG1sLnBhcnNlci5IVE1MUGFyc2VyYCBpcyBub3cgYWJsZSB0byBwYXJzZSBicm9rZW4gbWFya3VwIHdpdGhvdXQKK3JhaXNpbmcgZXJyb3JzLCB0aGVyZWZvcmUgdGhlICpzdHJpY3QqIGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3RvciBhbmQgdGhlCis6ZXhjOmB+aHRtbC5wYXJzZXIuSFRNTFBhcnNlRXJyb3JgIGV4Y2VwdGlvbiBhcmUgbm93IGRlcHJlY2F0ZWQuCitUaGUgYWJpbGl0eSB0byBwYXJzZSBicm9rZW4gbWFya3VwIGlzIHRoZSByZXN1bHQgb2YgYSBudW1iZXIgb2YgYnVnIGZpeGVzIHRoYXQKK2FyZSBhbHNvIGF2YWlsYWJsZSBvbiB0aGUgbGF0ZXN0IGJ1ZyBmaXggcmVsZWFzZXMgb2YgUHl0aG9uIDIuNy8zLjIuCisoQ29udHJpYnV0ZWQgYnkgRXppbyBNZWxvdHRpIGluIDppc3N1ZTpgMTUxMTRgLCBhbmQgOmlzc3VlOmAxNDUzOGAsCis6aXNzdWU6YDEzOTkzYCwgOmlzc3VlOmAxMzk2MGAsIDppc3N1ZTpgMTMzNThgLCA6aXNzdWU6YDE3NDU3NjFgLAorOmlzc3VlOmA3NTU2NzBgLCA6aXNzdWU6YDEzMzU3YCwgOmlzc3VlOmAxMjYyOWAsIDppc3N1ZTpgMTIwMDMxM2AsCis6aXNzdWU6YDY3MDY2NGAsIDppc3N1ZTpgMTMyNzNgLCA6aXNzdWU6YDEyODg4YCwgOmlzc3VlOmA3MzExYCkKKworQSBuZXcgOmRhdGE6YH5odG1sLmVudGl0aWVzLmh0bWw1YCBkaWN0aW9uYXJ5IHRoYXQgbWFwcyBIVE1MNSBuYW1lZCBjaGFyYWN0ZXIKK3JlZmVyZW5jZXMgdG8gdGhlIGVxdWl2YWxlbnQgVW5pY29kZSBjaGFyYWN0ZXIocykgKGUuZy4gYGBodG1sNVsnZ3Q7J10gPT0KKyc+J2BgKSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgOm1vZDpgaHRtbC5lbnRpdGllc2AgbW9kdWxlLiAgVGhlIGRpY3Rpb25hcnkgaXMKK25vdyBhbHNvIHVzZWQgYnkgOmNsYXNzOmB+aHRtbC5wYXJzZXIuSFRNTFBhcnNlcmAuICAoQ29udHJpYnV0ZWQgYnkgRXppbworTWVsb3R0aSBpbiA6aXNzdWU6YDExMTEzYCBhbmQgOmlzc3VlOmAxNTE1NmApCisKKworaW1hcGxpYgorLS0tLS0tLQorCitUaGUgOmNsYXNzOmB+aW1hcGxpYi5JTUFQNF9TU0xgIGNvbnN0cnVjdG9yIG5vdyBhY2NlcHRzIGFuIFNTTENvbnRleHQKK3BhcmFtZXRlciB0byBjb250cm9sIHBhcmFtZXRlcnMgb2YgdGhlIHNlY3VyZSBjaGFubmVsLgorCisoQ29udHJpYnV0ZWQgYnkgU2lqaW4gSm9zZXBoIGluIDppc3N1ZTpgODgwOGApCisKKworaW5zcGVjdAorLS0tLS0tLQorCitBIG5ldyA6ZnVuYzpgfmluc3BlY3QuZ2V0Y2xvc3VyZXZhcnNgIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkLiBUaGlzIGZ1bmN0aW9uCityZXBvcnRzIHRoZSBjdXJyZW50IGJpbmRpbmcgb2YgYWxsIG5hbWVzIHJlZmVyZW5jZWQgZnJvbSB0aGUgZnVuY3Rpb24gYm9keSBhbmQKK3doZXJlIHRob3NlIG5hbWVzIHdlcmUgcmVzb2x2ZWQsIG1ha2luZyBpdCBlYXNpZXIgdG8gdmVyaWZ5IGNvcnJlY3QgaW50ZXJuYWwKK3N0YXRlIHdoZW4gdGVzdGluZyBjb2RlIHRoYXQgcmVsaWVzIG9uIHN0YXRlZnVsIGNsb3N1cmVzLgorCisoQ29udHJpYnV0ZWQgYnkgTWVhZG9yIEluZ2UgYW5kIE5pY2sgQ29naGxhbiBpbiA6aXNzdWU6YDEzMDYyYCkKKworQSBuZXcgOmZ1bmM6YH5pbnNwZWN0LmdldGdlbmVyYXRvcmxvY2Fsc2AgZnVuY3Rpb24gaGFzIGJlZW4gYWRkZWQuIFRoaXMKK2Z1bmN0aW9uIHJlcG9ydHMgdGhlIGN1cnJlbnQgYmluZGluZyBvZiBsb2NhbCB2YXJpYWJsZXMgaW4gdGhlIGdlbmVyYXRvcidzCitzdGFjayBmcmFtZSwgbWFraW5nIGl0IGVhc2llciB0byB2ZXJpZnkgY29ycmVjdCBpbnRlcm5hbCBzdGF0ZSB3aGVuIHRlc3RpbmcKK2dlbmVyYXRvcnMuCisKKyhDb250cmlidXRlZCBieSBNZWFkb3IgSW5nZSBpbiA6aXNzdWU6YDE1MTUzYCkKKworaW8KKy0tCisKK1RoZSA6ZnVuYzpgfmlvLm9wZW5gIGZ1bmN0aW9uIGhhcyBhIG5ldyBgYCd4J2BgIG1vZGUgdGhhdCBjYW4gYmUgdXNlZCB0bworZXhjbHVzaXZlbHkgY3JlYXRlIGEgbmV3IGZpbGUsIGFuZCByYWlzZSBhIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgaWYgdGhlIGZpbGUKK2FscmVhZHkgZXhpc3RzLiBJdCBpcyBiYXNlZCBvbiB0aGUgQzExICd4JyBtb2RlIHRvIGZvcGVuKCkuCisKKyhDb250cmlidXRlZCBieSBEYXZpZCBUb3duc2hlbmQgaW4gOmlzc3VlOmAxMjc2MGApCisKK1RoZSBjb25zdHJ1Y3RvciBvZiB0aGUgOmNsYXNzOmB+aW8uVGV4dElPV3JhcHBlcmAgY2xhc3MgaGFzIGEgbmV3Cisqd3JpdGVfdGhyb3VnaCogb3B0aW9uYWwgYXJndW1lbnQuIElmICp3cml0ZV90aHJvdWdoKiBpcyBgYFRydWVgYCwgY2FsbHMgdG8KKzptZXRoOmB+aW8uVGV4dElPV3JhcHBlci53cml0ZWAgYXJlIGd1YXJhbnRlZWQgbm90IHRvIGJlIGJ1ZmZlcmVkOiBhbnkgZGF0YQord3JpdHRlbiBvbiB0aGUgOmNsYXNzOmB+aW8uVGV4dElPV3JhcHBlcmAgb2JqZWN0IGlzIGltbWVkaWF0ZWx5IGhhbmRsZWQgdG8gaXRzCit1bmRlcmx5aW5nIGJpbmFyeSBidWZmZXIuCisKKworaXRlcnRvb2xzCistLS0tLS0tLS0KKworOmZ1bmM6YH5pdGVydG9vbHMuYWNjdW11bGF0ZWAgbm93IHRha2VzIGFuIG9wdGlvbmFsIGBgZnVuY2BgIGFyZ3VtZW50IGZvcgorcHJvdmlkaW5nIGEgdXNlci1zdXBwbGllZCBiaW5hcnkgZnVuY3Rpb24uCisKKworbG9nZ2luZworLS0tLS0tLQorCitUaGUgOmZ1bmM6YH5sb2dnaW5nLmJhc2ljQ29uZmlnYCBmdW5jdGlvbiBub3cgc3VwcG9ydHMgYW4gb3B0aW9uYWwgYGBoYW5kbGVyc2BgCithcmd1bWVudCB0YWtpbmcgYW4gaXRlcmFibGUgb2YgaGFuZGxlcnMgdG8gYmUgYWRkZWQgdG8gdGhlIHJvb3QgbG9nZ2VyLgorCitBIGNsYXNzIGxldmVsIGF0dHJpYnV0ZSA6YXR0cjpgfmxvZ2dpbmcuaGFuZGxlcnMuU3lzTG9nSGFuZGxlci5hcHBlbmRfbnVsYCBoYXMKK2JlZW4gYWRkZWQgdG8gOmNsYXNzOmB+bG9nZ2luZy5oYW5kbGVycy5TeXNMb2dIYW5kbGVyYCB0byBhbGxvdyBjb250cm9sIG9mIHRoZQorYXBwZW5kaW5nIG9mIHRoZSBgYE5VTGBgIChgYFwwMDBgYCkgYnl0ZSB0byBzeXNsb2cgcmVjb3Jkcywgc2luY2UgZm9yIHNvbWUKK2RlYW1vbnMgaXQgaXMgcmVxdWlyZWQgd2hpbGUgZm9yIG90aGVycyBpdCBpcyBwYXNzZWQgdGhyb3VnaCB0byB0aGUgbG9nLgorCisKKworbWF0aAorLS0tLQorCitUaGUgOm1vZDpgbWF0aGAgbW9kdWxlIGhhcyBhIG5ldyBmdW5jdGlvbiwgOmZ1bmM6YH5tYXRoLmxvZzJgLCAgd2hpY2ggcmV0dXJucwordGhlIGJhc2UtMiBsb2dhcml0aG0gb2YgKngqLgorCisoV3JpdHRlbiBieSBNYXJrIERpY2tpbnNvbiBpbiA6aXNzdWU6YDExODg4YCkuCisKKworbW1hcAorLS0tLQorCitUaGUgOm1ldGg6YH5tbWFwLm1tYXAucmVhZGAgbWV0aG9kIGlzIG5vdyBtb3JlIGNvbXBhdGlibGUgd2l0aCBvdGhlciBmaWxlLWxpa2UKK29iamVjdHM6IGlmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkIG9yIHNwZWNpZmllZCBhcyBgYE5vbmVgYCwgaXQgcmV0dXJucyB0aGUKK2J5dGVzIGZyb20gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiB0byB0aGUgZW5kIG9mIHRoZSBtYXBwaW5nLiAgKENvbnRyaWJ1dGVkCitieSBQZXRyaSBMZWh0aW5lbiBpbiA6aXNzdWU6YDEyMDIxYC4pCisKKworbXVsdGlwcm9jZXNzaW5nCistLS0tLS0tLS0tLS0tLS0KKworVGhlIG5ldyA6ZnVuYzpgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24ud2FpdGAgZnVuY3Rpb24gYWxsb3dzIHRvIHBvbGwKK211bHRpcGxlIG9iamVjdHMgKHN1Y2ggYXMgY29ubmVjdGlvbnMsIHNvY2tldHMgYW5kIHBpcGVzKSB3aXRoIGEgdGltZW91dC4KKyhDb250cmlidXRlZCBieSBSaWNoYXJkIE91ZGtlcmsgaW4gOmlzc3VlOmAxMjMyOGAuKQorCis6Y2xhc3M6YG11bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uYCBvYmplY3RzIGNhbiBub3cgYmUgdHJhbnNmZXJyZWQgb3ZlcgorbXVsdGlwcm9jZXNzaW5nIGNvbm5lY3Rpb25zLgorKENvbnRyaWJ1dGVkIGJ5IFJpY2hhcmQgT3Vka2VyayBpbiA6aXNzdWU6YDQ4OTJgLikKKworOmNsYXNzOmBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzc2Agbm93IGFjY2VwdHMgYSBgYGRhZW1vbmBgIGtleXdvcmQgYXJndW1lbnQKK3RvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGluaGVyaXRpbmcgdGhlIGBgZGFlbW9uYGAgZmxhZyBmcm9tCit0aGUgcGFyZW50IHByb2Nlc3MgKDppc3N1ZTpgNjA2NGApLgorCitOZXcgYXR0cmlidXRlIGF0dHJpYnV0ZSA6ZGF0YTpgbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3Muc2VudGluZWxgIGFsbG93cyBhCitwcm9ncmFtIHRvIHdhaXQgb24gbXVsdGlwbGUgOmNsYXNzOmB+bXVsdGlwcm9jZXNzaW5nLlByb2Nlc3NgIG9iamVjdHMgYXQgb25lCit0aW1lIHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBPUyBwcmltaXRpdmVzIChmb3IgZXhhbXBsZSwgOm1vZDpgc2VsZWN0YCBvbgorcG9zaXggc3lzdGVtcykuCisKK05ldyBtZXRob2RzIDptZXRoOmBtdWx0aXByb2Nlc3NpbmcucG9vbC5Qb29sLnN0YXJtYXBgIGFuZAorOm1ldGg6YH5tdWx0aXByb2Nlc3NpbmcucG9vbC5Qb29sLnN0YXJtYXBfYXN5bmNgIHByb3ZpZGUKKzpmdW5jOmBpdGVydG9vbHMuc3Rhcm1hcGAgZXF1aXZhbGVudHMgdG8gdGhlIGV4aXN0aW5nCis6bWV0aDpgbXVsdGlwcm9jZXNzaW5nLnBvb2wuUG9vbC5tYXBgIGFuZAorOm1ldGg6YH5tdWx0aXByb2Nlc3NpbmcucG9vbC5Qb29sLm1hcF9hc3luY2AgZnVuY3Rpb25zLiAgKENvbnRyaWJ1dGVkIGJ5IEh5bmVrCitTY2hsYXdhY2sgaW4gOmlzc3VlOmAxMjcwOGAuKQorCisKK25udHBsaWIKKy0tLS0tLS0KKworVGhlIDpjbGFzczpgbm50cGxpYi5OTlRQYCBjbGFzcyBub3cgc3VwcG9ydHMgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCB0bwordW5jb25kaXRpb25hbGx5IGNvbnN1bWUgOmV4Yzpgc29ja2V0LmVycm9yYCBleGNlcHRpb25zIGFuZCB0byBjbG9zZSB0aGUgTk5UUAorY29ubmVjdGlvbiB3aGVuIGRvbmU6OgorCisgID4+PiBmcm9tIG5udHBsaWIgaW1wb3J0IE5OVFAKKyAgPj4+IHdpdGggTk5UUCgnbmV3cy5nbWFuZS5vcmcnKSBhcyBuOgorICAuLi4gICAgIG4uZ3JvdXAoJ2dtYW5lLmNvbXAucHl0aG9uLmNvbW1pdHRlcnMnKQorICAuLi4KKyAgKCcyMTEgMTc1NSAxIDE3NTUgZ21hbmUuY29tcC5weXRob24uY29tbWl0dGVycycsIDE3NTUsIDEsIDE3NTUsICdnbWFuZS5jb21wLnB5dGhvbi5jb21taXR0ZXJzJykKKyAgPj4+CisKKyhDb250cmlidXRlZCBieSBHaWFtcGFvbG8gUm9kb2zDoCBpbiA6aXNzdWU6YDk3OTVgKQorCisKK29zCistLQorCisqIFRoZSA6bW9kOmBvc2AgbW9kdWxlIGhhcyBhIG5ldyA6ZnVuYzpgfm9zLnBpcGUyYCBmdW5jdGlvbiB0aGF0IG1ha2VzIGl0CisgIHBvc3NpYmxlIHRvIGNyZWF0ZSBhIHBpcGUgd2l0aCA6ZGF0YTpgfm9zLk9fQ0xPRVhFQ2Agb3IKKyAgOmRhdGE6YH5vcy5PX05PTkJMT0NLYCBmbGFncyBzZXQgYXRvbWljYWxseS4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB0bworICBhdm9pZCByYWNlIGNvbmRpdGlvbnMgaW4gbXVsdGktdGhyZWFkZWQgcHJvZ3JhbXMuCisKKyogVGhlIDptb2Q6YG9zYCBtb2R1bGUgaGFzIGEgbmV3IDpmdW5jOmB+b3Muc2VuZGZpbGVgIGZ1bmN0aW9uIHdoaWNoIHByb3ZpZGVzCisgIGFuIGVmZmljZW50ICJ6ZXJvLWNvcHkiIHdheSBmb3IgY29weWluZyBkYXRhIGZyb20gb25lIGZpbGUgKG9yIHNvY2tldCkKKyAgZGVzY3JpcHRvciB0byBhbm90aGVyLiBUaGUgcGhyYXNlICJ6ZXJvLWNvcHkiIHJlZmVycyB0byB0aGUgZmFjdCB0aGF0IGFsbCBvZgorICB0aGUgY29weWluZyBvZiBkYXRhIGJldHdlZW4gdGhlIHR3byBkZXNjcmlwdG9ycyBpcyBkb25lIGVudGlyZWx5IGJ5IHRoZQorICBrZXJuZWwsIHdpdGggbm8gY29weWluZyBvZiBkYXRhIGludG8gdXNlcnNwYWNlIGJ1ZmZlcnMuIDpmdW5jOmB+b3Muc2VuZGZpbGVgCisgIGNhbiBiZSB1c2VkIHRvIGVmZmljaWVudGx5IGNvcHkgZGF0YSBmcm9tIGEgZmlsZSBvbiBkaXNrIHRvIGEgbmV0d29yayBzb2NrZXQsCisgIGUuZy4gZm9yIGRvd25sb2FkaW5nIGEgZmlsZS4KKworICAoUGF0Y2ggc3VibWl0dGVkIGJ5IFJvc3MgTGFnZXJ3YWxsIGFuZCBHaWFtcGFvbG8gUm9kb2zDoCBpbiA6aXNzdWU6YDEwODgyYC4pCisKKyogVG8gYXZvaWQgcmFjZSBjb25kaXRpb25zIGxpa2Ugc3ltbGluayBhdHRhY2tzIGFuZCBpc3N1ZXMgd2l0aCB0ZW1wb3JhcnkKKyAgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLCBpdCBpcyBtb3JlIHJlbGlhYmxlIChhbmQgYWxzbyBmYXN0ZXIpIHRvIG1hbmlwdWxhdGUKKyAgZmlsZSBkZXNjcmlwdG9ycyBpbnN0ZWFkIG9mIGZpbGUgbmFtZXMuIFB5dGhvbiAzLjMgZW5oYW5jZXMgZXhpc3RpbmcgZnVuY3Rpb25zCisgIGFuZCBpbnRyb2R1Y2VzIG5ldyBmdW5jdGlvbnMgdG8gd29yayBvbiBmaWxlIGRlc2NyaXB0b3JzICg6aXNzdWU6YDQ3NjFgLAorICA6aXNzdWU6YDEwNzU1YCBhbmQgOmlzc3VlOmAxNDYyNmApLgorCisgIC0gVGhlIDptb2Q6YG9zYCBtb2R1bGUgaGFzIGEgbmV3IDpmdW5jOmB+b3MuZndhbGtgIGZ1bmN0aW9uIHNpbWlsYXIgdG8KKyAgICA6ZnVuYzpgfm9zLndhbGtgIGV4Y2VwdCB0aGF0IGl0IGFsc28geWllbGRzIGZpbGUgZGVzY3JpcHRvcnMgcmVmZXJyaW5nIHRvIHRoZQorICAgIGRpcmVjdG9yaWVzIHZpc2l0ZWQuIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgdG8gYXZvaWQgc3ltbGluayByYWNlcy4KKworICAtIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGdldCBuZXcgb3B0aW9uYWwgKmRpcl9mZCogKDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvCisgICAgZGlyZWN0b3J5IGRlc2NyaXB0b3JzIDxkaXJfZmQ+YCkgYW5kL29yICpmb2xsb3dfc3ltbGlua3MqICg6cmVmOmBub3QKKyAgICBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gKToKKyAgICA6ZnVuYzpgfm9zLmFjY2Vzc2AsIDpmdW5jOmB+b3MuY2hmbGFnc2AsIDpmdW5jOmB+b3MuY2htb2RgLCA6ZnVuYzpgfm9zLmNob3duYCwKKyAgICA6ZnVuYzpgfm9zLmxpbmtgLCA6ZnVuYzpgfm9zLmxzdGF0YCwgOmZ1bmM6YH5vcy5ta2RpcmAsIDpmdW5jOmB+b3MubWtmaWZvYCwKKyAgICA6ZnVuYzpgfm9zLm1rbm9kYCwgOmZ1bmM6YH5vcy5vcGVuYCwgOmZ1bmM6YH5vcy5yZWFkbGlua2AsIDpmdW5jOmB+b3MucmVtb3ZlYCwKKyAgICA6ZnVuYzpgfm9zLnJlbmFtZWAsIDpmdW5jOmB+b3MucmVwbGFjZWAsIDpmdW5jOmB+b3Mucm1kaXJgLCA6ZnVuYzpgfm9zLnN0YXRgLAorICAgIDpmdW5jOmB+b3Muc3ltbGlua2AsIDpmdW5jOmB+b3MudW5saW5rYCwgOmZ1bmM6YH5vcy51dGltZWAuICBQbGF0Zm9ybQorICAgIHN1cHBvcnQgZm9yIHVzaW5nIHRoZXNlIHBhcmFtZXRlcnMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBzZXRzCisgICAgOmRhdGE6YG9zLnN1cHBvcnRzX2Rpcl9mZGAgYW5kIDpkYXRhOmBvcy5zdXBwb3J0c19mb2xsb3dzX3N5bWxpbmtzYC4KKworICAtIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG5vdyBzdXBwb3J0IGEgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGVpciBwYXRoIGFyZ3VtZW50OgorICAgIDpmdW5jOmB+b3MuY2hkaXJgLCA6ZnVuYzpgfm9zLmNobW9kYCwgOmZ1bmM6YH5vcy5jaG93bmAsCisgICAgOmZ1bmM6YH5vcy5leGVjdmVgLCA6ZnVuYzpgfm9zLmxpc3RkaXJgLCA6ZnVuYzpgfm9zLnBhdGhjb25mYCwgOmZ1bmM6YH5vcy5wYXRoLmV4aXN0c2AsCisgICAgOmZ1bmM6YH5vcy5zdGF0YCwgOmZ1bmM6YH5vcy5zdGF0dmZzYCwgOmZ1bmM6YH5vcy51dGltZWAuICBQbGF0Zm9ybSBzdXBwb3J0CisgICAgZm9yIHRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSA6ZGF0YTpgb3Muc3VwcG9ydHNfZmRgIHNldC4KKworKiA6ZnVuYzpgfm9zLmFjY2Vzc2AgYWNjZXB0cyBhbiBgYGVmZmVjdGl2ZV9pZHNgYCBrZXl3b3JkIGFyZ3VtZW50IHRvIHR1cm4gb24KKyAgdXNpbmcgdGhlIGVmZmVjdGl2ZSB1aWQvZ2lkIHJhdGhlciB0aGFuIHRoZSByZWFsIHVpZC9naWQgaW4gdGhlIGFjY2VzcyBjaGVjay4KKyAgUGxhdGZvcm0gc3VwcG9ydCBmb3IgdGhpcyBjYW4gYmUgY2hlY2tlZCB2aWEgdGhlCisgIDpkYXRhOmB+b3Muc3VwcG9ydHNfZWZmZWN0aXZlX2lkc2Agc2V0LgorCisqIFRoZSA6bW9kOmBvc2AgbW9kdWxlIGhhcyB0d28gbmV3IGZ1bmN0aW9uczogOmZ1bmM6YH5vcy5nZXRwcmlvcml0eWAgYW5kCisgIDpmdW5jOmB+b3Muc2V0cHJpb3JpdHlgLiBUaGV5IGNhbiBiZSB1c2VkIHRvIGdldCBvciBzZXQgcHJvY2VzcworICBuaWNlbmVzcy9wcmlvcml0eSBpbiBhIGZhc2hpb24gc2ltaWxhciB0byA6ZnVuYzpgb3MubmljZWAgYnV0IGV4dGVuZGVkIHRvIGFsbAorICBwcm9jZXNzZXMgaW5zdGVhZCBvZiBqdXN0IHRoZSBjdXJyZW50IG9uZS4KKworICAoUGF0Y2ggc3VibWl0dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbMOgIGluIDppc3N1ZTpgMTA3ODRgLikKKworKiBUaGUgbmV3IDpmdW5jOmBvcy5yZXBsYWNlYCBmdW5jdGlvbiBhbGxvd3MgY3Jvc3MtcGxhdGZvcm0gcmVuYW1pbmcgb2YgYQorICBmaWxlIHdpdGggb3ZlcndyaXRpbmcgdGhlIGRlc3RpbmF0aW9uLiAgV2l0aCA6ZnVuYzpgb3MucmVuYW1lYCwgYW4gZXhpc3RpbmcKKyAgZGVzdGluYXRpb24gZmlsZSBpcyBvdmVyd3JpdHRlbiB1bmRlciBQT1NJWCwgYnV0IHJhaXNlcyBhbiBlcnJvciB1bmRlcgorICBXaW5kb3dzLgorICAoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmA4ODI4YC4pCisKKyogVGhlIHN0YXQgZmFtaWx5IG9mIGZ1bmN0aW9ucyAoOmZ1bmM6YH5vcy5zdGF0YCwgOmZ1bmM6YH5vcy5mc3RhdGAsCisgIGFuZCA6ZnVuYzpgfm9zLmxzdGF0YCkgbm93IHN1cHBvcnQgcmVhZGluZyBhIGZpbGUncyB0aW1lc3RhbXBzCisgIHdpdGggbmFub3NlY29uZCBwcmVjaXNpb24uICBTeW1tZXRyaWNhbGx5LCA6ZnVuYzpgfm9zLnV0aW1lYAorICBjYW4gbm93IHdyaXRlIGZpbGUgdGltZXN0YW1wcyB3aXRoIG5hbm9zZWNvbmQgcHJlY2lzaW9uLiAgKENvbnRyaWJ1dGVkIGJ5CisgIExhcnJ5IEhhc3RpbmdzIGluIDppc3N1ZTpgMTQxMjdgLikKKworKiBUaGUgbmV3IDpmdW5jOmBvcy5nZXRfdGVybWluYWxfc2l6ZWAgZnVuY3Rpb24gcXVlcmllcyB0aGUgc2l6ZSBvZiB0aGUKKyAgdGVybWluYWwgYXR0YWNoZWQgdG8gYSBmaWxlIGRlc2NyaXB0b3IuIFNlZSBhbHNvCisgIDpmdW5jOmBzaHV0aWwuZ2V0X3Rlcm1pbmFsX3NpemVgLgorICAoQ29udHJpYnV0ZWQgYnkgWmJpZ25pZXcgSsSZZHJ6ZWpld3NraS1Tem1layBpbiA6aXNzdWU6YDEzNjA5YC4pCisKKy4uIFhYWCBzb3J0IG91dCB0aGlzIG1lc3MgYWZ0ZXIgYmV0YTEKKworKiBOZXcgZnVuY3Rpb25zIHRvIHN1cHBvcnQgTGludXggZXh0ZW5kZWQgYXR0cmlidXRlcyAoOmlzc3VlOmAxMjcyMGApOgorICA6ZnVuYzpgfm9zLmdldHhhdHRyYCwgOmZ1bmM6YH5vcy5saXN0eGF0dHJgLCA6ZnVuYzpgfm9zLnJlbW92ZXhhdHRyYCwKKyAgOmZ1bmM6YH5vcy5zZXR4YXR0cmAuCisKKyogTmV3IGludGVyZmFjZSB0byB0aGUgc2NoZWR1bGVyLiBUaGVzZSBmdW5jdGlvbnMKKyAgY29udHJvbCBob3cgYSBwcm9jZXNzIGlzIGFsbG9jYXRlZCBDUFUgdGltZSBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gTmV3CisgIGZ1bmN0aW9uczoKKyAgOmZ1bmM6YH5vcy5zY2hlZF9nZXRfcHJpb3JpdHlfbWF4YCwgOmZ1bmM6YH5vcy5zY2hlZF9nZXRfcHJpb3JpdHlfbWluYCwKKyAgOmZ1bmM6YH5vcy5zY2hlZF9nZXRhZmZpbml0eWAsIDpmdW5jOmB+b3Muc2NoZWRfZ2V0cGFyYW1gLAorICA6ZnVuYzpgfm9zLnNjaGVkX2dldHNjaGVkdWxlcmAsIDpmdW5jOmB+b3Muc2NoZWRfcnJfZ2V0X2ludGVydmFsYCwKKyAgOmZ1bmM6YH5vcy5zY2hlZF9zZXRhZmZpbml0eWAsIDpmdW5jOmB+b3Muc2NoZWRfc2V0cGFyYW1gLAorICA6ZnVuYzpgfm9zLnNjaGVkX3NldHNjaGVkdWxlcmAsIDpmdW5jOmB+b3Muc2NoZWRfeWllbGRgLAorCisqIE5ldyBmdW5jdGlvbnMgdG8gY29udHJvbCB0aGUgZmlsZSBzeXN0ZW06CisKKyAgKiA6ZnVuYzpgfm9zLnBvc2l4X2ZhZHZpc2VgOiBBbm5vdW5jZXMgYW4gaW50ZW50aW9uIHRvIGFjY2VzcyBkYXRhIGluIGEKKyAgICBzcGVjaWZpYyBwYXR0ZXJuIHRodXMgYWxsb3dpbmcgdGhlIGtlcm5lbCB0byBtYWtlIG9wdGltaXphdGlvbnMuCisgICogOmZ1bmM6YH5vcy5wb3NpeF9mYWxsb2NhdGVgOiBFbnN1cmVzIHRoYXQgZW5vdWdoIGRpc2sgc3BhY2UgaXMgYWxsb2NhdGVkCisgICAgZm9yIGEgZmlsZS4KKyAgKiA6ZnVuYzpgfm9zLnN5bmNgOiBGb3JjZSB3cml0ZSBvZiBldmVyeXRoaW5nIHRvIGRpc2suCisKKyogQWRkaXRpb25hbCBuZXcgIHBvc2l4IGZ1bmN0aW9uczoKKworICAqIDpmdW5jOmB+b3MubG9ja2ZgOiBBcHBseSwgdGVzdCBvciByZW1vdmUgYSBQT1NJWCBsb2NrIG9uIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorICAqIDpmdW5jOmB+b3MucHJlYWRgOiBSZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IgYXQgYW4gb2Zmc2V0LCB0aGUgZmlsZQorICAgIG9mZnNldCByZW1haW5zIHVuY2hhbmdlZC4KKyAgKiA6ZnVuYzpgfm9zLnB3cml0ZWA6IFdyaXRlIHRvIGEgZmlsZSBkZXNjcmlwdG9yIGZyb20gYW4gb2Zmc2V0LCBsZWF2aW5nCisgICAgdGhlIGZpbGUgb2Zmc2V0IHVuY2hhbmdlZC4KKyAgKiA6ZnVuYzpgfm9zLnJlYWR2YDogUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yIGludG8gYSBudW1iZXIgb2Ygd3JpdGFibGUgYnVmZmVycy4KKyAgKiA6ZnVuYzpgfm9zLnRydW5jYXRlYDogVHJ1bmNhdGUgdGhlIGZpbGUgY29ycmVzcG9uZGluZyB0byAqcGF0aCosIHNvIHRoYXQKKyAgICBpdCBpcyBhdCBtb3N0ICpsZW5ndGgqIGJ5dGVzIGluIHNpemUuCisgICogOmZ1bmM6YH5vcy53YWl0aWRgOiBXYWl0IGZvciB0aGUgY29tcGxldGlvbiBvZiBvbmUgb3IgbW9yZSBjaGlsZCBwcm9jZXNzZXMuCisgICogOmZ1bmM6YH5vcy53cml0ZXZgOiBXcml0ZSB0aGUgY29udGVudHMgb2YgKmJ1ZmZlcnMqIHRvIGEgZmlsZSBkZXNjcmlwdG9yLAorICAgIHdoZXJlICpidWZmZXJzKiBpcyBhbiBhcmJpdHJhcnkgc2VxdWVuY2Ugb2YgYnVmZmVycy4KKyAgKiA6ZnVuYzpgfm9zLmdldGdyb3VwbGlzdGAgKDppc3N1ZTpgOTM0NGApOiBSZXR1cm4gbGlzdCBvZiBncm91cCBpZHMgdGhhdAorICAgIHNwZWNpZmllZCB1c2VyIGJlbG9uZ3MgdG8uCisKKyogOmZ1bmM6YH5vcy50aW1lc2AgYW5kIDpmdW5jOmB+b3MudW5hbWVgOiBSZXR1cm4gdHlwZSBjaGFuZ2VkIGZyb20gYSB0dXBsZSB0bworICBhIHR1cGxlLWxpa2Ugb2JqZWN0IHdpdGggbmFtZWQgYXR0cmlidXRlcy4KKworKiBTb21lIHBsYXRmb3JtcyBub3cgc3VwcG9ydCBhZGRpdGlvbmFsIGNvbnN0YW50cyBmb3IgdGhlIDpmdW5jOmB+b3MubHNlZWtgCisgIGZ1bmN0aW9uLCBzdWNoIGFzIGBgb3MuU0VFS19IT0xFYGAgYW5kIGBgb3MuU0VFS19EQVRBYGAuCisKKyogTmV3IGNvbnN0YW50cyA6ZGF0YTpgfm9zLlJUTERfTEFaWWAsIDpkYXRhOmB+b3MuUlRMRF9OT1dgLAorICA6ZGF0YTpgfm9zLlJUTERfR0xPQkFMYCwgOmRhdGE6YH5vcy5SVExEX0xPQ0FMYCwgOmRhdGE6YH5vcy5SVExEX05PREVMRVRFYCwKKyAgOmRhdGE6YH5vcy5SVExEX05PTE9BRGAsIGFuZCA6ZGF0YTpgfm9zLlJUTERfREVFUEJJTkRgIGFyZSBhdmFpbGFibGUgb24KKyAgcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCB0aGVtLiAgIFRoZXNlIGFyZSBmb3IgdXNlIHdpdGggdGhlCisgIDpmdW5jOmBzeXMuc2V0ZGxvcGVuZmxhZ3NgIGZ1bmN0aW9uLCBhbmQgc3VwZXJzZWRlIHRoZSBzaW1pbGFyIGNvbnN0YW50cworICBkZWZpbmVkIGluIDptb2Q6YGN0eXBlc2AgYW5kIDptb2Q6YERMRkNOYC4gIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lcgorICBpbiA6aXNzdWU6YDEzMjI2YC4pCisKKyogOmZ1bmM6YG9zLnN5bWxpbmtgIG5vdyBhY2NlcHRzIChhbmQgaWdub3JlcykgdGhlIGBgdGFyZ2V0X2lzX2RpcmVjdG9yeWBgCisgIGtleXdvcmQgYXJndW1lbnQgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLCB0byBlYXNlIGNyb3NzLXBsYXRmb3JtIHN1cHBvcnQuCisKKworcGRiCistLS0KKworVGFiLWNvbXBsZXRpb24gaXMgbm93IGF2YWlsYWJsZSBub3Qgb25seSBmb3IgY29tbWFuZCBuYW1lcywgYnV0IGFsc28gdGhlaXIKK2FyZ3VtZW50cy4gIEZvciBleGFtcGxlLCBmb3IgdGhlIGBgYnJlYWtgYCBjb21tYW5kLCBmdW5jdGlvbiBhbmQgZmlsZSBuYW1lcworYXJlIGNvbXBsZXRlZC4KKworKENvbnRyaWJ1dGVkIGJ5IEdlb3JnIEJyYW5kbCBpbiA6aXNzdWU6YDE0MjEwYCkKKworCitwaWNrbGUKKy0tLS0tLQorCis6Y2xhc3M6YHBpY2tsZS5QaWNrbGVyYCBvYmplY3RzIG5vdyBoYXZlIGFuIG9wdGlvbmFsCis6YXR0cjpgfnBpY2tsZS5QaWNrbGVyLmRpc3BhdGNoX3RhYmxlYCBhdHRyaWJ1dGUgYWxsb3dpbmcgdG8gc2V0IHBlci1waWNrbGVyCityZWR1Y3Rpb24gZnVuY3Rpb25zLgorCisoQ29udHJpYnV0ZWQgYnkgUmljaGFyZCBPdWRrZXJrIGluIDppc3N1ZTpgMTQxNjZgLikKKworCitweWRvYworLS0tLS0KKworVGhlIFRrIEdVSSBhbmQgdGhlIDpmdW5jOmB+cHlkb2Muc2VydmVgIGZ1bmN0aW9uIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlCis6bW9kOmBweWRvY2AgbW9kdWxlOiBgYHB5ZG9jIC1nYGAgYW5kIDpmdW5jOmB+cHlkb2Muc2VydmVgIGhhdmUgYmVlbiBkZXByZWNhdGVkCitpbiBQeXRob24gMy4yLgorCisKK3JlCistLQorCis6Y2xhc3M6YHN0cmAgcmVndWxhciBleHByZXNzaW9ucyBub3cgc3VwcG9ydCBgYFx1YGAgYW5kIGBgXFVgYCBlc2NhcGVzLgorCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDM2NjVgLikKKworCitzY2hlZAorLS0tLS0KKworKiA6bWV0aDpgfnNjaGVkLnNjaGVkdWxlci5ydW5gIG5vdyBhY2NlcHRzIGEgKmJsb2NraW5nKiBwYXJhbWV0ZXIgd2hpY2ggd2hlbgorICBzZXQgdG8gRmFsc2UgbWFrZXMgdGhlIG1ldGhvZCBleGVjdXRlIHRoZSBzY2hlZHVsZWQgZXZlbnRzIGR1ZSB0byBleHBpcmUKKyAgc29vbmVzdCAoaWYgYW55KSBhbmQgdGhlbiByZXR1cm4gaW1tZWRpYXRlbHkuCisgIFRoaXMgaXMgdXNlZnVsIGluIGNhc2UgeW91IHdhbnQgdG8gdXNlIHRoZSA6Y2xhc3M6YH5zY2hlZC5zY2hlZHVsZXJgIGluCisgIG5vbi1ibG9ja2luZyBhcHBsaWNhdGlvbnMuICAoQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sw6AgaW4gOmlzc3VlOmAxMzQ0OWApCisKKyogOmNsYXNzOmB+c2NoZWQuc2NoZWR1bGVyYCBjbGFzcyBjYW4gbm93IGJlIHNhZmVseSB1c2VkIGluIG11bHRpLXRocmVhZGVkCisgIGVudmlyb25tZW50cy4gIChDb250cmlidXRlZCBieSBKb3NpYWggQ2FybHNvbiBhbmQgR2lhbXBhb2xvIFJvZG9sw6AgaW4KKyAgOmlzc3VlOmA4Njg0YCkKKworKiAqdGltZWZ1bmMqIGFuZCAqZGVsYXlmdW5jdCogcGFyYW1ldGVycyBvZiA6Y2xhc3M6YH5zY2hlZC5zY2hlZHVsZXJgIGNsYXNzCisgIGNvbnN0cnVjdG9yIGFyZSBub3cgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvIDpmdW5jOmB0aW1lLnRpbWVgIGFuZAorICA6ZnVuYzpgdGltZS5zbGVlcGAgcmVzcGVjdGl2ZWx5LiAgKENvbnRyaWJ1dGVkIGJ5IENocmlzIENsYXJrIGluCisgIDppc3N1ZTpgMTMyNDVgKQorCisqIDptZXRoOmB+c2NoZWQuc2NoZWR1bGVyLmVudGVyYCBhbmQgOm1ldGg6YH5zY2hlZC5zY2hlZHVsZXIuZW50ZXJhYnNgCisgICphcmd1bWVudCogcGFyYW1ldGVyIGlzIG5vdyBvcHRpb25hbC4gIChDb250cmlidXRlZCBieSBDaHJpcyBDbGFyayBpbgorICA6aXNzdWU6YDEzMjQ1YCkKKworKiA6bWV0aDpgfnNjaGVkLnNjaGVkdWxlci5lbnRlcmAgYW5kIDptZXRoOmB+c2NoZWQuc2NoZWR1bGVyLmVudGVyYWJzYAorICBub3cgYWNjZXB0IGEgKmt3YXJncyogcGFyYW1ldGVyLiAgKENvbnRyaWJ1dGVkIGJ5IENocmlzIENsYXJrIGluCisgIDppc3N1ZTpgMTMyNDVgKQorCisKK3NlbGVjdAorLS0tLS0tCisKK1NvbGFyaXMgYW5kIGRlcml2YXRpdmVzIHBsYXRmb3JtcyBoYXZlIGEgbmV3IGNsYXNzIDpjbGFzczpgc2VsZWN0LmRldnBvbGxgCitmb3IgaGlnaCBwZXJmb3JtYW5jZSBhc3luY2hyb25vdXMgc29ja2V0cyB2aWEgOmZpbGU6YC9kZXYvcG9sbGAuCisoQ29udHJpYnV0ZWQgYnkgSmVzw7pzIENlYSBBdmnDs24gaW4gOmlzc3VlOmA2Mzk3YC4pCisKKworc2hsZXgKKy0tLS0tCisKK1RoZSBwcmV2aW91c2x5IHVuZG9jdW1lbnRlZCBoZWxwZXIgZnVuY3Rpb24gYGBxdW90ZWBgIGZyb20gdGhlCis6bW9kOmBwaXBlc2AgbW9kdWxlcyBoYXMgYmVlbiBtb3ZlZCB0byB0aGUgOm1vZDpgc2hsZXhgIG1vZHVsZSBhbmQKK2RvY3VtZW50ZWQuICA6ZnVuYzpgfnNobGV4LnF1b3RlYCBwcm9wZXJseSBlc2NhcGVzIGFsbCBjaGFyYWN0ZXJzIGluIGEgc3RyaW5nCit0aGF0IG1pZ2h0IGJlIG90aGVyd2lzZSBnaXZlbiBzcGVjaWFsIG1lYW5pbmcgYnkgdGhlIHNoZWxsLgorCisKK3NodXRpbAorLS0tLS0tCisKKyogTmV3IGZ1bmN0aW9uczoKKworICAqIDpmdW5jOmB+c2h1dGlsLmRpc2tfdXNhZ2VgOiBwcm92aWRlcyB0b3RhbCwgdXNlZCBhbmQgZnJlZSBkaXNrIHNwYWNlCisgICAgc3RhdGlzdGljcy4gKENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbMOgIGluIDppc3N1ZTpgMTI0NDJgKQorICAqIDpmdW5jOmB+c2h1dGlsLmNob3duYDogYWxsb3dzIG9uZSB0byBjaGFuZ2UgdXNlciBhbmQvb3IgZ3JvdXAgb2YgdGhlIGdpdmVuCisgICAgcGF0aCBhbHNvIHNwZWNpZnlpbmcgdGhlIHVzZXIvZ3JvdXAgbmFtZXMgYW5kIG5vdCBvbmx5IHRoZWlyIG51bWVyaWMKKyAgICBpZHMuIChDb250cmlidXRlZCBieSBTYW5kcm8gVG9zaSBpbiA6aXNzdWU6YDEyMTkxYCkKKyAgKiA6ZnVuYzpgc2h1dGlsLmdldF90ZXJtaW5hbF9zaXplYDogcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgdGVybWluYWwgd2luZG93CisgICAgdG8gd2hpY2ggdGhlIGludGVycHJldGVyIGlzIGF0dGFjaGVkLiAgKENvbnRyaWJ1dGVkIGJ5IFpiaWduaWV3CisgICAgSsSZZHJ6ZWpld3NraS1Tem1layBpbiA6aXNzdWU6YDEzNjA5YC4pCisKKyogOmZ1bmM6YH5zaHV0aWwuY29weTJgIGFuZCA6ZnVuYzpgfnNodXRpbC5jb3B5c3RhdGAgbm93IHByZXNlcnZlIGZpbGUKKyAgdGltZXN0YW1wcyB3aXRoIG5hbm9zZWNvbmQgcHJlY2lzaW9uIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgaXQuCisgIFRoZXkgYWxzbyBwcmVzZXJ2ZSBmaWxlICJleHRlbmRlZCBhdHRyaWJ1dGVzIiBvbiBMaW51eC4gIChDb250cmlidXRlZAorICBieSBMYXJyeSBIYXN0aW5ncyBpbiA6aXNzdWU6YDE0MTI3YCBhbmQgIDppc3N1ZTpgMTUyMzhgLikKKworKiBTZXZlcmFsIGZ1bmN0aW9ucyBub3cgdGFrZSBhbiBvcHRpb25hbCBgYHN5bWxpbmtzYGAgYXJndW1lbnQ6IHdoZW4gdGhhdAorICBwYXJhbWV0ZXIgaXMgdHJ1ZSwgc3ltbGlua3MgYXJlbid0IGRlcmVmZXJlbmNlZCBhbmQgdGhlIG9wZXJhdGlvbiBpbnN0ZWFkCisgIGFjdHMgb24gdGhlIHN5bWxpbmsgaXRzZWxmIChvciBjcmVhdGVzIG9uZSwgaWYgcmVsZXZhbnQpLgorICAoQ29udHJpYnV0ZWQgYnkgSHluZWsgU2NobGF3YWNrIGluIDppc3N1ZTpgMTI3MTVgLikKKworKiBXaGVuIGNvcHlpbmcgZmlsZXMgdG8gYSBkaWZmZXJlbnQgZmlsZSBzeXN0ZW0sIDpmdW5jOmB+c2h1dGlsLm1vdmVgIG5vdworICBoYW5kbGVzIHN5bWxpbmtzIHRoZSB3YXkgdGhlIHBvc2l4IGBgbXZgYCBjb21tYW5kIGRvZXMsIHJlY3JlYXRpbmcgdGhlCisgIHN5bWxpbmsgcmF0aGVyIHRoYW4gY29weWluZyB0aGUgdGFyZ2V0IGZpbGUgY29udGVudHMuICAoQ29udHJpYnV0ZWQgYnkKKyAgSm9uYXRoYW4gTmllaG9mIGluIDppc3N1ZTpgOTk5M2AuKSAgOmZ1bmM6YH5zaHV0aWwubW92ZWAgbm93IGFsc28gcmV0dXJucworICB0aGUgYGBkc3RgYCBhcmd1bWVudCBhcyBpdHMgcmVzdWx0LgorCisqIDpmdW5jOmB+c2h1dGlsLnJtdHJlZWAgaXMgbm93IHJlc2lzdGFudCB0byBzeW1saW5rIGF0dGFja3Mgb24gcGxhdGZvcm1zCisgIHdoaWNoIHN1cHBvcnQgdGhlIG5ldyBgYGRpcl9mZGBgIHBhcmFtZXRlciBpbiA6ZnVuYzpgb3Mub3BlbmAgYW5kCisgIDpmdW5jOmBvcy51bmxpbmtgLiAoQ29udHJpYnV0ZWQgYnkgTWFydGluIHZvbiBMw7Z3aXMgYW5kIEh5bmVrIFNjaGxhd2FjaworICBpbiA6aXNzdWU6YDQ0ODlgLikKKworCitzaWduYWwKKy0tLS0tLQorCisqIFRoZSA6bW9kOmBzaWduYWxgIG1vZHVsZSBoYXMgbmV3IGZ1bmN0aW9uczoKKworICAqIDpmdW5jOmB+c2lnbmFsLnB0aHJlYWRfc2lnbWFza2A6IGZldGNoIGFuZC9vciBjaGFuZ2UgdGhlIHNpZ25hbCBtYXNrIG9mIHRoZQorICAgIGNhbGxpbmcgdGhyZWFkIChDb250cmlidXRlZCBieSBKZWFuLVBhdWwgQ2FsZGVyb25lIGluIDppc3N1ZTpgODQwN2ApIDsKKyAgKiA6ZnVuYzpgfnNpZ25hbC5wdGhyZWFkX2tpbGxgOiBzZW5kIGEgc2lnbmFsIHRvIGEgdGhyZWFkIDsKKyAgKiA6ZnVuYzpgfnNpZ25hbC5zaWdwZW5kaW5nYDogZXhhbWluZSBwZW5kaW5nIGZ1bmN0aW9ucyA7CisgICogOmZ1bmM6YH5zaWduYWwuc2lnd2FpdGA6IHdhaXQgYSBzaWduYWwuCisgICogOmZ1bmM6YH5zaWduYWwuc2lnd2FpdGluZm9gOiB3YWl0IGZvciBhIHNpZ25hbCwgcmV0dXJuaW5nIGRldGFpbGVkCisgICAgaW5mb3JtYXRpb24gYWJvdXQgaXQuCisgICogOmZ1bmM6YH5zaWduYWwuc2lndGltZWR3YWl0YDogbGlrZSA6ZnVuYzpgfnNpZ25hbC5zaWd3YWl0aW5mb2AgYnV0IHdpdGggYQorICAgIHRpbWVvdXQuCisKKyogVGhlIHNpZ25hbCBoYW5kbGVyIHdyaXRlcyB0aGUgc2lnbmFsIG51bWJlciBhcyBhIHNpbmdsZSBieXRlIGluc3RlYWQgb2YKKyAgYSBudWwgYnl0ZSBpbnRvIHRoZSB3YWtldXAgZmlsZSBkZXNjcmlwdG9yLiBTbyBpdCBpcyBwb3NzaWJsZSB0byB3YWl0IG1vcmUKKyAgdGhhbiBvbmUgc2lnbmFsIGFuZCBrbm93IHdoaWNoIHNpZ25hbHMgd2VyZSByYWlzZWQuCisKKyogOmZ1bmM6YHNpZ25hbC5zaWduYWxgIGFuZCA6ZnVuYzpgc2lnbmFsLnNpZ2ludGVycnVwdGAgcmFpc2UgYW4gT1NFcnJvciwKKyAgaW5zdGVhZCBvZiBhIFJ1bnRpbWVFcnJvcjogT1NFcnJvciBoYXMgYW4gZXJybm8gYXR0cmlidXRlLgorCisKK3NtdHBkCistLS0tLQorCitUaGUgOm1vZDpgc210cGRgIG1vZHVsZSBub3cgc3VwcG9ydHMgOnJmYzpgNTMyMWAgKGV4dGVuZGVkIFNNVFApIGFuZCA6cmZjOmAxODcwYAorKHNpemUgZXh0ZW5zaW9uKS4gIFBlciB0aGUgc3RhbmRhcmQsIHRoZXNlIGV4dGVuc2lvbnMgYXJlIGVuYWJsZWQgaWYgYW5kIG9ubHkKK2lmIHRoZSBjbGllbnQgaW5pdGlhdGVzIHRoZSBzZXNzaW9uIHdpdGggYW4gYGBFSExPYGAgY29tbWFuZC4KKworKEluaXRpYWwgYGBFTEhPYGAgc3VwcG9ydCBieSBBbGJlcnRvIFRyZXZpbm8uICBTaXplIGV4dGVuc2lvbiBieSBKdWhhbmEKK0phdWhpYWluZW4uICBTdWJzdGFudGlhbCBhZGRpdGlvbmFsIHdvcmsgb24gdGhlIHBhdGNoIGNvbnRyaWJ1dGVkIGJ5IE1pY2hlbGUKK09ycsO5IGFuZCBEYW4gQm9zd2VsbC4gIDppc3N1ZTpgODczOWApCisKKworc210cGxpYgorLS0tLS0tLQorCitUaGUgOmNsYXNzOmB+c210cGxpYi5TTVRQYCwgOmNsYXNzOmB+c210cGxpYi5TTVRQX1NTTGAsIGFuZAorOmNsYXNzOmB+c210cGxpYi5MTVRQYCBjbGFzc2VzIG5vdyBhY2NlcHQgYSBgYHNvdXJjZV9hZGRyZXNzYGAga2V5d29yZCBhcmd1bWVudAordG8gc3BlY2lmeSB0aGUgYGAoaG9zdCwgcG9ydClgYCB0byB1c2UgYXMgdGhlIHNvdXJjZSBhZGRyZXNzIGluIHRoZSBiaW5kIGNhbGwKK3doZW4gY3JlYXRpbmcgdGhlIG91dGdvaW5nIHNvY2tldC4gIChDb250cmlidXRlZCBieSBQYXVsbyBTY2FyZGluZSBpbgorOmlzc3VlOmAxMTI4MWAuKQorCis6Y2xhc3M6YH5zbXRwbGliLlNNVFBgIG5vdyBzdXBwb3J0cyB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sLCBhbGxvd2luZyBhbgorYGBTTVRQYGAgaW5zdGFuY2UgdG8gYmUgdXNlZCBpbiBhIGBgd2l0aGBgIHN0YXRlbWVudC4gIChDb250cmlidXRlZAorYnkgR2lhbXBhb2xvIFJvZG9sw6AgaW4gOmlzc3VlOmAxMTI4OWAuKQorCitUaGUgOmNsYXNzOmB+c210cGxpYi5TTVRQX1NTTGAgY29uc3RydWN0b3IgYW5kIHRoZSA6bWV0aDpgfnNtdHBsaWIuU01UUC5zdGFydHRsc2AKK21ldGhvZCBub3cgYWNjZXB0IGFuIFNTTENvbnRleHQgcGFyYW1ldGVyIHRvIGNvbnRyb2wgcGFyYW1ldGVycyBvZiB0aGUgc2VjdXJlCitjaGFubmVsLiAgKENvbnRyaWJ1dGVkIGJ5IEthc3VuIEhlcmF0aCBpbiA6aXNzdWU6YDg4MDlgKQorCisKK3NvY2tldAorLS0tLS0tCisKKyogVGhlIDpjbGFzczpgfnNvY2tldC5zb2NrZXRgIGNsYXNzIG5vdyBleHBvc2VzIGFkZGl0aW9uYWwgbWV0aG9kcyB0byBwcm9jZXNzCisgIGFuY2lsbGFyeSBkYXRhIHdoZW4gc3VwcG9ydGVkIGJ5IHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtOgorCisgICogOmZ1bmM6YH5zb2NrZXQuc29ja2V0LnNlbmRtc2dgCisgICogOmZ1bmM6YH5zb2NrZXQuc29ja2V0LnJlY3Ztc2dgCisgICogOmZ1bmM6YH5zb2NrZXQuc29ja2V0LnJlY3Ztc2dfaW50b2AKKworICAoQ29udHJpYnV0ZWQgYnkgRGF2aWQgV2F0c29uIGluIDppc3N1ZTpgNjU2MGAsIGJhc2VkIG9uIGFuIGVhcmxpZXIgcGF0Y2ggYnkKKyAgSGVpa28gV3VuZHJhbSkKKworKiBUaGUgOmNsYXNzOmB+c29ja2V0LnNvY2tldGAgY2xhc3Mgbm93IHN1cHBvcnRzIHRoZSBQRl9DQU4gcHJvdG9jb2wgZmFtaWx5CisgIChodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NvY2tldGNhbiksIG9uIExpbnV4CisgIChodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8yNTM0MjUpLgorCisgIChDb250cmlidXRlZCBieSBNYXR0aGlhcyBGdWNocywgdXBkYXRlZCBieSBUaWFnbyBHb27Dp2FsdmVzIGluIDppc3N1ZTpgMTAxNDFgKQorCisqIFRoZSA6Y2xhc3M6YH5zb2NrZXQuc29ja2V0YCBjbGFzcyBub3cgc3VwcG9ydHMgdGhlIFBGX1JEUyBwcm90b2NvbCBmYW1pbHkKKyAgKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVsaWFibGVfRGF0YWdyYW1fU29ja2V0cyBhbmQKKyAgaHR0cDovL29zcy5vcmFjbGUuY29tL3Byb2plY3RzL3Jkcy8pLgorCisqIFRoZSA6Y2xhc3M6YH5zb2NrZXQuc29ja2V0YCBjbGFzcyBub3cgc3VwcG9ydHMgdGhlIGBgUEZfU1lTVEVNYGAgcHJvdG9jb2wKKyAgZmFtaWx5IG9uIE9TIFguICAoQ29udHJpYnV0ZWQgYnkgTWljaGFlbCBHb2RlcmJhdWVyIGluIDppc3N1ZTpgMTM3NzdgLikKKworKiBOZXcgZnVuY3Rpb24gOmZ1bmM6YH5zb2NrZXQuc2V0aG9zdG5hbWVgIGFsbG93cyB0aGUgaG9zdG5hbWUgdG8gYmUgc2V0CisgIG9uIHVuaXggc3lzdGVtcyBpZiB0aGUgY2FsbGluZyBwcm9jZXNzIGhhcyBzdWZmaWNpZW50IHByaXZpbGVnZXMuCisgIChDb250cmlidXRlZCBieSBSb3NzIExhZ2Vyd2FsbCBpbiA6aXNzdWU6YDEwODY2YC4pCisKKworc29ja2V0c2VydmVyCistLS0tLS0tLS0tLS0KKworOmNsYXNzOmB+c29ja2V0c2VydmVyLkJhc2VTZXJ2ZXJgIG5vdyBoYXMgYW4gb3ZlcnJpZGFibGUgbWV0aG9kCis6bWV0aDpgfnNvY2tldHNlcnZlci5CYXNlU2VydmVyLnNlcnZpY2VfYWN0aW9uc2AgdGhhdCBpcyBjYWxsZWQgYnkgdGhlCis6bWV0aDpgfnNvY2tldHNlcnZlci5CYXNlU2VydmVyLnNlcnZlX2ZvcmV2ZXJgIG1ldGhvZCBpbiB0aGUgc2VydmljZSBsb29wLgorOmNsYXNzOmB+c29ja2V0c2VydmVyLkZvcmtpbmdNaXhJbmAgbm93IHVzZXMgdGhpcyB0byBjbGVhbiB1cCB6b21iaWUKK2NoaWxkIHByb2Nlc2VzLiAgKENvbnRyaWJ1dGVkIGJ5IEp1c3RpbiBXYXJrZW50aW4gaW4gOmlzc3VlOmAxMTEwOWAuKQorCisKK3NxbGl0ZTMKKy0tLS0tLS0KKworTmV3IDpjbGFzczpgc3FsaXRlMy5Db25uZWN0aW9uYCBtZXRob2QKKzptZXRoOmB+c3FsaXRlMy5Db25uZWN0aW9uLnNldF90cmFjZV9jYWxsYmFja2AgY2FuIGJlIHVzZWQgdG8gY2FwdHVyZSBhIHRyYWNlIG9mCithbGwgc3FsIGNvbW1hbmRzIHByb2Nlc3NlZCBieSBzcWxpdGUuICAoQ29udHJpYnV0ZWQgYnkgVG9yc3RlbiBMYW5kc2Nob2ZmCitpbiA6aXNzdWU6YDExNjg4YC4pCisKKworc3NsCistLS0KKworKiBUaGUgOm1vZDpgc3NsYCBtb2R1bGUgaGFzIHR3byBuZXcgcmFuZG9tIGdlbmVyYXRpb24gZnVuY3Rpb25zOgorCisgICogOmZ1bmM6YH5zc2wuUkFORF9ieXRlc2A6IGdlbmVyYXRlIGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9uZworICAgIHBzZXVkby1yYW5kb20gYnl0ZXMuCisgICogOmZ1bmM6YH5zc2wuUkFORF9wc2V1ZG9fYnl0ZXNgOiBnZW5lcmF0ZSBwc2V1ZG8tcmFuZG9tIGJ5dGVzLgorCisgIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDEyMDQ5YCkKKworKiBUaGUgOm1vZDpgc3NsYCBtb2R1bGUgbm93IGV4cG9zZXMgYSBmaW5lci1ncmFpbmVkIGV4Y2VwdGlvbiBoaWVyYXJjaHkKKyAgaW4gb3JkZXIgdG8gbWFrZSBpdCBlYXNpZXIgdG8gaW5zcGVjdCB0aGUgdmFyaW91cyBraW5kcyBvZiBlcnJvcnMuCisgIChDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDExMTgzYCkKKworKiA6bWV0aDpgfnNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgbm93IGFjY2VwdHMgYSAqcGFzc3dvcmQqIGFyZ3VtZW50CisgIHRvIGJlIHVzZWQgaWYgdGhlIHByaXZhdGUga2V5IGlzIGVuY3J5cHRlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEFkYW0gU2ltcGtpbnMgaW4gOmlzc3VlOmAxMjgwM2ApCisKKyogRGlmZmllLUhlbGxtYW4ga2V5IGV4Y2hhbmdlLCBib3RoIHJlZ3VsYXIgYW5kIEVsbGlwdGljIEN1cnZlLWJhc2VkLCBpcworICBub3cgc3VwcG9ydGVkIHRocm91Z2ggdGhlIDptZXRoOmB+c3NsLlNTTENvbnRleHQubG9hZF9kaF9wYXJhbXNgIGFuZAorICA6bWV0aDpgfnNzbC5TU0xDb250ZXh0LnNldF9lY2RoX2N1cnZlYCBtZXRob2RzLgorICAoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmAxMzYyNmAgYW5kIDppc3N1ZTpgMTM2MjdgKQorCisqIFNTTCBzb2NrZXRzIGhhdmUgYSBuZXcgOm1ldGg6YH5zc2wuU1NMU29ja2V0LmdldF9jaGFubmVsX2JpbmRpbmdgIG1ldGhvZAorICBhbGxvd2luZyB0aGUgaW1wbGVtZW50YXRpb24gb2YgY2VydGFpbiBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc21zIHN1Y2ggYXMKKyAgU0NSQU0tU0hBLTEtUExVUy4gIChDb250cmlidXRlZCBieSBKYWNlayBLb25pZWN6bnkgaW4gOmlzc3VlOmAxMjU1MWApCisKKyogWW91IGNhbiBxdWVyeSB0aGUgU1NMIGNvbXByZXNzaW9uIGFsZ29yaXRobSB1c2VkIGJ5IGFuIFNTTCBzb2NrZXQsIHRoYW5rcworICB0byBpdHMgbmV3IDptZXRoOmB+c3NsLlNTTFNvY2tldC5jb21wcmVzc2lvbmAgbWV0aG9kLiAgVGhlIG5ldyBhdHRyaWJ1dGUKKyAgOmF0dHI6YH5zc2wuT1BfTk9fQ09NUFJFU1NJT05gIGNhbiBiZSB1c2VkIHRvIGRpc2FibGUgY29tcHJlc3Npb24uCisgIChDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDEzNjM0YCkKKworKiBTdXBwb3J0IGhhcyBiZWVuIGFkZGVkIGZvciB0aGUgTmV4dCBQcm9jb3RvbCBOZWdvdGlhdGlvbiBleHRlbnNpb24gdXNpbmcKKyAgdGhlIDptZXRoOmBzc2wuU1NMQ29udGV4dC5zZXRfbnBuX3Byb3RvY29sc2AgbWV0aG9kLgorICAoQ29udHJpYnV0ZWQgYnkgQ29saW4gTWFyYyBpbiA6aXNzdWU6YDE0MjA0YCkKKworKiBTU0wgZXJyb3JzIGNhbiBub3cgYmUgaW50cm9zcGVjdGVkIG1vcmUgZWFzaWx5IHRoYW5rcyB0bworICA6YXR0cjpgfnNzbC5TU0xFcnJvci5saWJyYXJ5YCBhbmQgOmF0dHI6YH5zc2wuU1NMRXJyb3IucmVhc29uYCBhdHRyaWJ1dGVzLgorICAoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmAxNDgzN2ApCisKKyogVGhlIDpmdW5jOmB+c3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGVgIGZ1bmN0aW9uIG5vdyBzdXBwb3J0cyBJUHY2LgorICAoQ29udHJpYnV0ZWQgYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpIGluIDppc3N1ZTpgMTE4MTFgLikKKworKiBOZXcgYXR0cmlidXRlIDphdHRyOmB+c3NsLk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRWAgYWxsb3dzIHNldHRpbmcKKyAgU1NMdjMgc2VydmVyIHNvY2tldHMgdG8gdXNlIHRoZSBzZXJ2ZXIncyBjaXBoZXIgb3JkZXJpbmcgcHJlZmVyZW5jZSByYXRoZXIKKyAgdGhhbiB0aGUgY2xpZW50J3MgKDppc3N1ZTpgMTM2MzVgKS4KKworCitzdGF0CistLS0tCisKK1RoZSB1bmRvY3VtZW50ZWQgdGFyZmlsZS5maWxlbW9kZSBmdW5jdGlvbiBoYXMgYmVlbiBtb3ZlZCB0bworOmZ1bmM6YHN0YXQuZmlsZW1vZGVgLiBJdCBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IGEgZmlsZSdzIG1vZGUgdG8gYSBzdHJpbmcgb2YKK3RoZSBmb3JtICctcnd4cnd4cnd4Jy4KKworKENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbMOgIGluIDppc3N1ZTpgMTQ4MDdgKQorCisKK3N0cnVjdAorLS0tLS0tCisKK1RoZSA6bW9kOmBzdHJ1Y3RgIG1vZHVsZSBub3cgc3VwcG9ydHMgYGBzc2l6ZV90YGAgYW5kIGBgc2l6ZV90YGAgdmlhIHRoZQorbmV3IGNvZGVzIGBgbmBgIGFuZCBgYE5gYCwgcmVzcGVjdGl2ZWx5LiAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91CitpbiA6aXNzdWU6YDMxNjNgLikKKworCitzdWJwcm9jZXNzCistLS0tLS0tLS0tCisKK0NvbW1hbmQgc3RyaW5ncyBjYW4gbm93IGJlIGJ5dGVzIG9iamVjdHMgb24gcG9zaXggcGxhdGZvcm1zLiAgKENvbnRyaWJ1dGVkIGJ5CitWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDg1MTNgLikKKworQSBuZXcgY29uc3RhbnQgOmRhdGE6YH5zdWJwcm9jZXNzLkRFVk5VTExgIGFsbG93cyBzdXBwcmVzc2luZyBvdXRwdXQgaW4gYQorcGxhdGZvcm0taW5kZXBlbmRlbnQgZmFzaGlvbi4gIChDb250cmlidXRlZCBieSBSb3NzIExhZ2Vyd2FsbCBpbgorOmlzc3VlOmA1ODcwYC4pCisKKworc3lzCistLS0KKworVGhlIDptb2Q6YHN5c2AgbW9kdWxlIGhhcyBhIG5ldyA6ZGF0YTpgfnN5cy50aHJlYWRfaW5mb2AgOnRlcm06YHN0cnVjdAorc2VxdWVuY2VgIGhvbGRpbmcgaW5mb3JtYXRpb25zIGFib3V0IHRoZSB0aHJlYWQgaW1wbGVtZW50YXRpb24KKyg6aXNzdWU6YDExMjIzYCkuCisKKwordGFyZmlsZQorLS0tLS0tLQorCis6bW9kOmB0YXJmaWxlYCBub3cgc3VwcG9ydHMgYGBsem1hYGAgZW5jb2RpbmcgdmlhIHRoZSA6bW9kOmBsem1hYCBtb2R1bGUuCisoQ29udHJpYnV0ZWQgYnkgTGFycyBHdXN0w6RiZWwgaW4gOmlzc3VlOmA1Njg5YC4pCisKKwordGVtcGZpbGUKKy0tLS0tLS0tCisKKzpjbGFzczpgdGVtcGZpbGUuU3Bvb2xlZFRlbXBvcmFyeUZpbGVgXCdzCis6bWV0aDpgfnRlbXBmaWxlLlNwb29sZWRUZW1wb3JhcnlGaWxlLnRydWNhdGVgIG1ldGhvZCBub3cgYWNjZXB0cworYSBgYHNpemVgYCBwYXJhbWV0ZXIuICAoQ29udHJpYnV0ZWQgYnkgUnlhbiBLZWxseSBpbiA6aXNzdWU6YDk5NTdgLikKKworCit0ZXh0d3JhcAorLS0tLS0tLS0KKworVGhlIDptb2Q6YHRleHR3cmFwYCBtb2R1bGUgaGFzIGEgbmV3IDpmdW5jOmB+dGV4dHdyYXAuaW5kZW50YCB0aGF0IG1ha2VzCitpdCBzdHJhaWdodGZvcndhcmQgdG8gYWRkIGEgY29tbW9uIHByZWZpeCB0byBzZWxlY3RlZCBsaW5lcyBpbiBhIGJsb2NrCitvZiB0ZXh0ICAoOmlzc3VlOmAxMzg1N2ApLgorCisKK3RocmVhZGluZworLS0tLS0tLS0tCisKKzpjbGFzczpgdGhyZWFkaW5nLkNvbmRpdGlvbmAsIDpjbGFzczpgdGhyZWFkaW5nLlNlbWFwaG9yZWAsCis6Y2xhc3M6YHRocmVhZGluZy5Cb3VuZGVkU2VtYXBob3JlYCwgOmNsYXNzOmB0aHJlYWRpbmcuRXZlbnRgLCBhbmQKKzpjbGFzczpgdGhyZWFkaW5nLlRpbWVyYCwgYWxsIG9mIHdoaWNoIHVzZWQgdG8gYmUgZmFjdG9yeSBmdW5jdGlvbnMgcmV0dXJuaW5nIGEKK2NsYXNzIGluc3RhbmNlLCBhcmUgbm93IGNsYXNzZXMgYW5kIG1heSBiZSBzdWJjbGFzc2VkLiAoQ29udHJpYnV0ZWQgYnkgw4lyaWMKK0FyYXVqbyBpbiA6aXNzdWU6YDEwOTY4YCkuCisKK1RoZSA6Y2xhc3M6YHRocmVhZGluZy5UaHJlYWRgIGNvbnN0cnVjdG9yIG5vdyBhY2NlcHRzIGEgYGBkYWVtb25gYCBrZXl3b3JkCithcmd1bWVudCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBpbmhlcml0aW5nIHRoZSBgYGRlYW1vbmBgIGZsYWcKK3ZhbHVlIGZyb20gdGhlIHBhcmVudCB0aHJlYWQgKDppc3N1ZTpgNjA2NGApLgorCitUaGUgZm9ybWVybHkgcHJpdmF0ZSBmdW5jdGlvbiBgYF90aHJlYWQuZ2V0X2lkZW50YGAgaXMgbm93IGF2YWlsYWJsZSBhcyB0aGUKK3B1YmxpYyBmdW5jdGlvbiA6ZnVuYzpgdGhyZWFkaW5nLmdldF9pZGVudGAuICBUaGlzIGVsaW1pbmF0ZXMgc2V2ZXJhbCBjYXNlcyBvZgorZGlyZWN0IGFjY2VzcyB0byB0aGUgYGBfdGhyZWFkYGAgbW9kdWxlIGluIHRoZSBzdGRsaWIuICBUaGlyZCBwYXJ0eSBjb2RlIHRoYXQKK3VzZWQgYGBfdGhyZWFkLmdldF9pZGVudGBgIHNob3VsZCBsaWtld2lzZSBiZSBjaGFuZ2VkIHRvIHVzZSB0aGUgbmV3IHB1YmxpYworaW50ZXJmYWNlLgorCisKK3RpbWUKKy0tLS0KKworVGhlIDpwZXA6YDQxOGAgYWRkZWQgbmV3IGZ1bmN0aW9ucyB0byB0aGUgOm1vZDpgdGltZWAgbW9kdWxlOgorCisqIDpmdW5jOmB+dGltZS5nZXRfY2xvY2tfaW5mb2A6IEdldCBpbmZvcm1hdGlvbiBvbiBhIGNsb2NrLgorKiA6ZnVuYzpgfnRpbWUubW9ub3RvbmljYDogTW9ub3RvbmljIGNsb2NrIChjYW5ub3QgZ28gYmFja3dhcmQpLCBub3QgYWZmZWN0ZWQKKyAgYnkgc3lzdGVtIGNsb2NrIHVwZGF0ZXMuCisqIDpmdW5jOmB+dGltZS5wZXJmX2NvdW50ZXJgOiBQZXJmb3JtYW5jZSBjb3VudGVyIHdpdGggdGhlIGhpZ2hlc3QgYXZhaWxhYmxlCisgIHJlc29sdXRpb24gdG8gbWVhc3VyZSBhIHNob3J0IGR1cmF0aW9uLgorKiA6ZnVuYzpgfnRpbWUucHJvY2Vzc190aW1lYDogU3VtIG9mIHRoZSBzeXN0ZW0gYW5kIHVzZXIgQ1BVIHRpbWUgb2YgdGhlCisgIGN1cnJlbnQgcHJvY2Vzcy4KKworT3RoZXIgbmV3IGZ1bmN0aW9uczoKKworKiA6ZnVuYzpgfnRpbWUuY2xvY2tfZ2V0cmVzYCwgOmZ1bmM6YH50aW1lLmNsb2NrX2dldHRpbWVgIGFuZAorICA6ZnVuYzpgfnRpbWUuY2xvY2tfc2V0dGltZWAgZnVuY3Rpb25zIHdpdGggYGBDTE9DS194eHhgYCBjb25zdGFudHMuCisgIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDEwMjc4YCkKKworVG8gaW1wcm92ZSBjcm9zcyBwbGF0Zm9ybSBjb25zaXN0ZW5jeSwgOmZ1bmM6YH50aW1lLnNsZWVwYCBub3cgcmFpc2VzIGEKKzpleGM6YFZhbHVlRXJyb3JgIHdoZW4gcGFzc2VkIGEgbmVnYXRpdmUgc2xlZXAgdmFsdWUuICBQcmV2aW91c2x5IHRoaXMgd2FzIGFuCitlcnJvciBvbiBwb3NpeCwgYnV0IHByb2R1Y2VkIGFuIGluZmluaXRlIHNsZWVwIG9uIFdpbmRvd3MuCisKKwordHlwZXMKKy0tLS0tCisKK0FkZCBhIG5ldyA6Y2xhc3M6YHR5cGVzLk1hcHBpbmdQcm94eVR5cGVgIGNsYXNzOiBSZWFkLW9ubHkgcHJveHkgb2YgYSBtYXBwaW5nLgorKDppc3N1ZTpgMTQzODZgKQorCisKK1RoZSBuZXcgZnVuY3Rpb25zIGB0eXBlcy5uZXdfY2xhc3NgIGFuZCBgdHlwZXMucHJlcGFyZV9jbGFzc2AgcHJvdmlkZSBzdXBwb3J0Citmb3IgUEVQIDMxMTUgY29tcGxpYW50IGR5bmFtaWMgdHlwZSBjcmVhdGlvbi4gKDppc3N1ZTpgMTQ1ODhgKQorCisKK3VuaXR0ZXN0CistLS0tLS0tLQorCis6bWV0aDpgLmFzc2VydFJhaXNlc2AsIDptZXRoOmAuYXNzZXJ0UmFpc2VzUmVnZXhgLCA6bWV0aDpgLmFzc2VydFdhcm5zYCwgYW5kCis6bWV0aDpgLmFzc2VydFdhcm5zUmVnZXhgIG5vdyBhY2NlcHQgYSBrZXl3b3JkIGFyZ3VtZW50ICptc2cqIHdoZW4gdXNlZCBhcworY29udGV4dCBtYW5hZ2Vycy4gIChDb250cmlidXRlZCBieSBFemlvIE1lbG90dGkgYW5kIFdpbnN0b24gRXdlcnQgaW4KKzppc3N1ZTpgMTA3NzVgKQorCis6bWV0aDpgdW5pdHRlc3QuVGVzdENhc2UucnVuYCBub3cgcmV0dXJucyB0aGUgOmNsYXNzOmB+dW5pdHRlc3QuVGVzdFJlc3VsdGAKK29iamVjdC4KKworCit1cmxsaWIKKy0tLS0tLQorCitUaGUgOmNsYXNzOmB+dXJsbGliLnJlcXVlc3QuUmVxdWVzdGAgY2xhc3MsIG5vdyBhY2NlcHRzIGEgKm1ldGhvZCogYXJndW1lbnQKK3VzZWQgYnkgOm1ldGg6YH51cmxsaWIucmVxdWVzdC5SZXF1ZXN0LmdldF9tZXRob2RgIHRvIGRldGVybWluZSB3aGF0IEhUVFAgbWV0aG9kCitzaG91bGQgYmUgdXNlZC4gIEZvciBleGFtcGxlLCB0aGlzIHdpbGwgc2VuZCBhIGBgJ0hFQUQnYGAgcmVxdWVzdDo6CisKKyAgID4+PiB1cmxvcGVuKFJlcXVlc3QoJ2h0dHA6Ly93d3cucHl0aG9uLm9yZycsIG1ldGhvZD0nSEVBRCcpKQorCisoOmlzc3VlOmAxNjczMDA3YCkKKworCit3ZWJicm93c2VyCistLS0tLS0tLS0tCisKK1RoZSA6bW9kOmB3ZWJicm93c2VyYCBtb2R1bGUgc3VwcG9ydHMgbW9yZSAiYnJvd3NlcnMiOiBHb29nbGUgQ2hyb21lIChuYW1lZAorOnByb2dyYW06YGNocm9tZWAsIDpwcm9ncmFtOmBjaHJvbWl1bWAsIDpwcm9ncmFtOmBjaHJvbWUtYnJvd3NlcmAgb3IKKzpwcm9ncmFtOmBjaHJvbWl1bS1icm93c2VyYCBkZXBlbmRpbmcgb24gdGhlIHZlcnNpb24gYW5kIG9wZXJhdGluZyBzeXN0ZW0pLAorYW5kIHRoZSBnZW5lcmljIGxhdW5jaGVycyA6cHJvZ3JhbTpgeGRnLW9wZW5gLCBmcm9tIHRoZSBGcmVlRGVza3RvcC5vcmcKK3Byb2plY3QsIGFuZCA6cHJvZ3JhbTpgZ3Zmcy1vcGVuYCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgVVJJIGhhbmRsZXIgZm9yIEdOT01FCiszLiAgKFRoZSBmb3JtZXIgY29udHJpYnV0ZWQgYnkgQXJuYXVkIENhbG1ldHRlcyBpbiA6aXNzdWU6YDEzNjIwYCwgdGhlIGxhdHRlcgorYnkgTWF0dGhpYXMgS2xvc2UgaW4gOmlzc3VlOmAxNDQ5M2ApCisKKworeG1sLmV0cmVlLkVsZW1lbnRUcmVlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDptb2Q6YHhtbC5ldHJlZS5FbGVtZW50VHJlZWAgbW9kdWxlIG5vdyBpbXBvcnRzIGl0cyBDIGFjY2VsZXJhdG9yIGJ5CitkZWZhdWx0OyB0aGVyZSBpcyBubyBsb25nZXIgYSBuZWVkIHRvIGV4cGxpY2l0bHkgaW1wb3J0Cis6bW9kOmB4bWwuZXRyZWUuY0VsZW1lbnRUcmVlYCAodGhpcyBtb2R1bGUgc3RheXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LAorYnV0IGlzIG5vdyBkZXByZWNhdGVkKS4gIEluIGFkZGl0aW9uLCAgdGhlIGBgaXRlcmBgIGZhbWlseSBvZiBtZXRob2RzIG9mCis6Y2xhc3M6YH54bWwuZXRyZWUuRWxlbWVudFRyZWUuRWxlbWVudGAgaGFzIGJlZW4gb3B0aW1pemVkIChyZXdyaXR0ZW4gaW4gQykuCitUaGUgbW9kdWxlJ3MgZG9jdW1lbnRhdGlvbiBoYXMgYWxzbyBiZWVuIGdyZWF0bHkgaW1wcm92ZWQgd2l0aCBhZGRlZCBleGFtcGxlcworYW5kIGEgbW9yZSBkZXRhaWxlZCByZWZlcmVuY2UuCisKKworemxpYgorLS0tLQorCitOZXcgYXR0cmlidXRlIDphdHRyOmB6bGliLkRlY29tcHJlc3MuZW9mYCBtYWtlcyBpdCBwb3NzaWJsZSB0byBkaXN0aW5ndWlzaAorYmV0d2VlbiBhIHByb3Blcmx5LWZvcm1lZCBjb21wcmVzc2VkIHN0cmVhbSBhbmQgYW4gaW5jb21wbGV0ZSBvciB0cnVuY2F0ZWQgb25lLgorKENvbnRyaWJ1dGVkIGJ5IE5hZGVlbSBWYXdkYSBpbiA6aXNzdWU6YDEyNjQ2YC4pCisKK05ldyBhdHRyaWJ1dGUgOmF0dHI6YHpsaWIuWkxJQl9SVU5USU1FX1ZFUlNJT05gIHJlcG9ydHMgdGhlIHZlcnNpb24gc3RyaW5nIG9mCit0aGUgdW5kZXJseWluZyBgYHpsaWJgYCBsaWJyYXJ5IHRoYXQgaXMgbG9hZGVkIGF0IHJ1bnRpbWUuICAoQ29udHJpYnV0ZWQgYnkKK1RvcnN0ZW4gTGFuZHNjaG9mZiBpbiA6aXNzdWU6YDEyMzA2YC4pCisKKworT3B0aW1pemF0aW9ucworPT09PT09PT09PT09PQorCitNYWpvciBwZXJmb3JtYW5jZSBlbmhhbmNlbWVudHMgaGF2ZSBiZWVuIGFkZGVkOgorCisqIFRoYW5rcyB0byA6cGVwOmAzOTNgLCBzb21lIG9wZXJhdGlvbnMgb24gVW5pY29kZSBzdHJpbmdzIGhhdmUgYmVlbiBvcHRpbWl6ZWQ6CisKKyAgKiB0aGUgbWVtb3J5IGZvb3RwcmludCBpcyBkaXZpZGVkIGJ5IDIgdG8gNCBkZXBlbmRpbmcgb24gdGhlIHRleHQKKyAgKiBlbmNvZGUgYW4gQVNDSUkgc3RyaW5nIHRvIFVURi04IGRvZXNuJ3QgbmVlZCB0byBlbmNvZGUgY2hhcmFjdGVycyBhbnltb3JlLAorICAgIHRoZSBVVEYtOCByZXByZXNlbnRhdGlvbiBpcyBzaGFyZWQgd2l0aCB0aGUgQVNDSUkgcmVwcmVzZW50YXRpb24KKyAgKiB0aGUgVVRGLTggZW5jb2RlciBoYXMgYmVlbiBvcHRpbWl6ZWQKKyAgKiByZXBlYXRpbmcgYSBzaW5nbGUgQVNDSUkgbGV0dGVyIGFuZCBnZXR0aW5nIGEgc3Vic3RyaW5nIG9mIGEgQVNDSUkgc3RyaW5ncworICAgIGlzIDQgdGltZXMgZmFzdGVyCisKKyogVVRGLTggaXMgbm93IDJ4IHRvIDR4IGZhc3Rlci4gIFVURi0xNiBlbmNvZGluZyBpcyBub3cgdXAgdG8gMTB4IGZhc3Rlci4KKworICAoY29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSwgOmlzc3VlOmAxNDYyNGAsIDppc3N1ZTpgMTQ3MzhgIGFuZAorICA6aXNzdWU6YDE1MDI2YC4pCisKKworQnVpbGQgYW5kIEMgQVBJIENoYW5nZXMKKz09PT09PT09PT09PT09PT09PT09PT09CisKK0NoYW5nZXMgdG8gUHl0aG9uJ3MgYnVpbGQgcHJvY2VzcyBhbmQgdG8gdGhlIEMgQVBJIGluY2x1ZGU6CisKKyogTmV3IDpwZXA6YDMxMThgIHJlbGF0ZWQgZnVuY3Rpb246CisKKyAgKiA6YzpmdW5jOmBQeU1lbW9yeVZpZXdfRnJvbU1lbW9yeWAKKworKiA6cGVwOmAzOTNgIGFkZGVkIG5ldyBVbmljb2RlIHR5cGVzLCBtYWNyb3MgYW5kIGZ1bmN0aW9uczoKKworICAqIEhpZ2gtbGV2ZWwgQVBJOgorCisgICAgKiA6YzpmdW5jOmBQeVVuaWNvZGVfQ29weUNoYXJhY3RlcnNgCisgICAgKiA6YzpmdW5jOmBQeVVuaWNvZGVfRmluZENoYXJgCisgICAgKiA6YzpmdW5jOmBQeVVuaWNvZGVfR2V0TGVuZ3RoYCwgOmM6bWFjcm86YFB5VW5pY29kZV9HRVRfTEVOR1RIYAorICAgICogOmM6ZnVuYzpgUHlVbmljb2RlX05ld2AKKyAgICAqIDpjOmZ1bmM6YFB5VW5pY29kZV9TdWJzdHJpbmdgCisgICAgKiA6YzpmdW5jOmBQeVVuaWNvZGVfUmVhZENoYXJgLCA6YzpmdW5jOmBQeVVuaWNvZGVfV3JpdGVDaGFyYAorCisgICogTG93LWxldmVsIEFQSToKKworICAgICogOmM6dHlwZTpgUHlfVUNTMWAsIDpjOnR5cGU6YFB5X1VDUzJgLCA6Yzp0eXBlOmBQeV9VQ1M0YCB0eXBlcworICAgICogOmM6dHlwZTpgUHlBU0NJSU9iamVjdGAgYW5kIDpjOnR5cGU6YFB5Q29tcGFjdFVuaWNvZGVPYmplY3RgIHN0cnVjdHVyZXMKKyAgICAqIDpjOm1hY3JvOmBQeVVuaWNvZGVfUkVBRFlgCisgICAgKiA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhYAorICAgICogOmM6ZnVuYzpgUHlVbmljb2RlX0FzVUNTNGAsIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VDUzRDb3B5YAorICAgICogOmM6bWFjcm86YFB5VW5pY29kZV9EQVRBYCwgOmM6bWFjcm86YFB5VW5pY29kZV8xQllURV9EQVRBYCwKKyAgICAgIDpjOm1hY3JvOmBQeVVuaWNvZGVfMkJZVEVfREFUQWAsIDpjOm1hY3JvOmBQeVVuaWNvZGVfNEJZVEVfREFUQWAKKyAgICAqIDpjOm1hY3JvOmBQeVVuaWNvZGVfS0lORGAgd2l0aCA6Yzp0eXBlOmBQeVVuaWNvZGVfS2luZGAgZW51bToKKyAgICAgIDpjOmRhdGE6YFB5VW5pY29kZV9XQ0hBUl9LSU5EYCwgOmM6ZGF0YTpgUHlVbmljb2RlXzFCWVRFX0tJTkRgLAorICAgICAgOmM6ZGF0YTpgUHlVbmljb2RlXzJCWVRFX0tJTkRgLCA6YzpkYXRhOmBQeVVuaWNvZGVfNEJZVEVfS0lORGAKKyAgICAqIDpjOm1hY3JvOmBQeVVuaWNvZGVfUkVBRGAsIDpjOm1hY3JvOmBQeVVuaWNvZGVfUkVBRF9DSEFSYCwgOmM6bWFjcm86YFB5VW5pY29kZV9XUklURWAKKyAgICAqIDpjOm1hY3JvOmBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUVgCisKKyogOmM6bWFjcm86YFB5QXJnX1BhcnNlVHVwbGVgIG5vdyBhY2NlcHRzIGEgOmNsYXNzOmBieXRlYXJyYXlgIGZvciB0aGUgYGBjYGAKKyAgZm9ybWF0ICg6aXNzdWU6YDEyMzgwYCkuCisKKworCitEZXByZWNhdGVkCis9PT09PT09PT09CisKK1Vuc3VwcG9ydGVkIE9wZXJhdGluZyBTeXN0ZW1zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPUy8yIGFuZCBWTVMgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQgZHVlIHRvIHRoZSBsYWNrIG9mIGEgbWFpbnRhaW5lci4KKworV2luZG93cyAyMDAwIGFuZCBXaW5kb3dzIHBsYXRmb3JtcyB3aGljaCBzZXQgYGBDT01TUEVDYGAgdG8gYGBjb21tYW5kLmNvbWBgCithcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBkdWUgdG8gbWFpbnRlbmFuY2UgYnVyZGVuLgorCitPU0Ygc3VwcG9ydCwgd2hpY2ggd2FzIGRlcHJlY2F0ZWQgaW4gMy4yLCBoYXMgYmVlbiBjb21wbGV0ZWx5IHJlbW92ZWQuCisKKworRGVwcmVjYXRlZCBQeXRob24gbW9kdWxlcywgZnVuY3Rpb25zIGFuZCBtZXRob2RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBQYXNzaW5nIGEgbm9uLWVtcHR5IHN0cmluZyB0byBgYG9iamVjdC5fX2Zvcm1hdF9fKClgYCBpcyBkZXByZWNhdGVkLCBhbmQKKyAgd2lsbCBwcm9kdWNlIGEgOmV4YzpgVHlwZUVycm9yYCBpbiBQeXRob24gMy40ICg6aXNzdWU6YDk4NTZgKS4KKyogVGhlIGBgdW5pY29kZV9pbnRlcm5hbGBgIGNvZGVjIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYmVjYXVzZSBvZiB0aGUKKyAgOnBlcDpgMzkzYCwgdXNlIFVURi04LCBVVEYtMTYgKGBgdXRmLTE2LWxlYGAgb3IgYGB1dGYtMTYtYmVgYCksIG9yIFVURi0zMgorICAoYGB1dGYtMzItbGVgYCBvciBgYHV0Zi0zMi1iZWBgKQorKiA6bWV0aDpgZnRwbGliLkZUUC5ubHN0YCBhbmQgOm1ldGg6YGZ0cGxpYi5GVFAuZGlyYDogdXNlCisgIDptZXRoOmBmdHBsaWIuRlRQLm1sc2RgCisqIDpmdW5jOmBwbGF0Zm9ybS5wb3BlbmA6IHVzZSB0aGUgOm1vZDpgc3VicHJvY2Vzc2AgbW9kdWxlLiBDaGVjayBlc3BlY2lhbGx5CisgIHRoZSA6cmVmOmBzdWJwcm9jZXNzLXJlcGxhY2VtZW50c2Agc2VjdGlvbiAoOmlzc3VlOmAxMTM3N2ApLgorKiA6aXNzdWU6YDEzMzc0YDogVGhlIFdpbmRvd3MgYnl0ZXMgQVBJIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gdGhlIDptb2Q6YG9zYAorICBtb2R1bGUuIFVzZSBVbmljb2RlIGZpbGVuYW1lcywgaW5zdGVhZCBvZiBieXRlcyBmaWxlbmFtZXMsIHRvIG5vdCBkZXBlbmQgb24KKyAgdGhlIEFOU0kgY29kZSBwYWdlIGFueW1vcmUgYW5kIHRvIHN1cHBvcnQgYW55IGZpbGVuYW1lLgorKiA6aXNzdWU6YDEzOTg4YDogVGhlIDptb2Q6YHhtbC5ldHJlZS5jRWxlbWVudFRyZWVgIG1vZHVsZSBpcyBkZXByZWNhdGVkLiAgVGhlCisgIGFjY2VsZXJhdG9yIGlzIHVzZWQgYXV0b21hdGljYWxseSB3aGVuZXZlciBhdmFpbGFibGUuCisqIFRoZSBiZWhhdmlvdXIgb2YgOmZ1bmM6YHRpbWUuY2xvY2tgIGRlcGVuZHMgb24gdGhlIHBsYXRmb3JtOiB1c2UgdGhlIG5ldworICA6ZnVuYzpgdGltZS5wZXJmX2NvdW50ZXJgIG9yIDpmdW5jOmB0aW1lLnByb2Nlc3NfdGltZWAgZnVuY3Rpb24gaW5zdGVhZCwKKyAgZGVwZW5kaW5nIG9uIHlvdXIgcmVxdWlyZW1lbnRzLCB0byBoYXZlIGEgd2VsbCBkZWZpbmVkIGJlaGF2aW91ci4KKyogVGhlIDpmdW5jOmBvcy5zdGF0X2Zsb2F0X3RpbWVzYCBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLgorKiA6bW9kOmBhYmNgIG1vZHVsZToKKworICAqIDpjbGFzczpgYWJjLmFic3RyYWN0cHJvcGVydHlgIGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHVzZSA6Y2xhc3M6YHByb3BlcnR5YAorICAgIHdpdGggOmZ1bmM6YGFiYy5hYnN0cmFjdG1ldGhvZGAgaW5zdGVhZC4KKyAgKiA6Y2xhc3M6YGFiYy5hYnN0cmFjdGNsYXNzbWV0aG9kYCBoYXMgYmVlbiBkZXByZWNhdGVkLCB1c2UKKyAgICA6Y2xhc3M6YGNsYXNzbWV0aG9kYCB3aXRoIDpmdW5jOmBhYmMuYWJzdHJhY3RtZXRob2RgIGluc3RlYWQuCisgICogOmNsYXNzOmBhYmMuYWJzdHJhY3RzdGF0aWNtZXRob2RgIGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHVzZQorICAgIDpjbGFzczpgc3RhdGljbWV0aG9kYCB3aXRoIDpmdW5jOmBhYmMuYWJzdHJhY3RtZXRob2RgIGluc3RlYWQuCisKKyogOm1vZDpgaW1wb3J0bGliYCBwYWNrYWdlOgorCisgICogOm1ldGg6YGltcG9ydGxpYi5hYmMuU291cmNlTG9hZGVyLnBhdGhfbXRpbWVgIGlzIG5vdyBkZXByZWNhdGVkIGluIGZhdm91ciBvZgorICAgIDptZXRoOmBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlci5wYXRoX3N0YXRzYCBhcyBieXRlY29kZSBmaWxlcyBub3cgc3RvcmUKKyAgICBib3RoIHRoZSBtb2RpZmljYXRpb24gdGltZSBhbmQgc2l6ZSBvZiB0aGUgc291cmNlIGZpbGUgdGhlIGJ5dGVjb2RlIGZpbGUgd2FzCisgICAgY29tcGlsZWQgZnJvbS4KKworCisKKworCitEZXByZWNhdGVkIGZ1bmN0aW9ucyBhbmQgdHlwZXMgb2YgdGhlIEMgQVBJCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBoYXMgYmVlbiBkZXByZWNhdGVkIGJ5IDpwZXA6YDM5M2AgYW5kIHdpbGwgYmUKK3JlbW92ZWQgaW4gUHl0aG9uIDQuIEFsbCBmdW5jdGlvbnMgdXNpbmcgdGhpcyB0eXBlIGFyZSBkZXByZWNhdGVkOgorCitVbmljb2RlIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcyB1c2luZyA6Yzp0eXBlOmBQeV9VTklDT0RFYCBhbmQKKzpjOnR5cGU6YFB5X1VOSUNPREUqYCB0eXBlczoKKworKiA6YzptYWNybzpgUHlVbmljb2RlX0Zyb21Vbmljb2RlYDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tV2lkZUNoYXJgIG9yCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGFgCisqIDpjOm1hY3JvOmBQeVVuaWNvZGVfQVNfVU5JQ09ERWAsIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VuaWNvZGVgLAorICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZWA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZ2AKKyogOmM6bWFjcm86YFB5VW5pY29kZV9BU19EQVRBYDogdXNlIDpjOm1hY3JvOmBQeVVuaWNvZGVfREFUQWAgd2l0aAorICA6YzptYWNybzpgUHlVbmljb2RlX1JFQURgIGFuZCA6YzptYWNybzpgUHlVbmljb2RlX1dSSVRFYAorKiA6YzptYWNybzpgUHlVbmljb2RlX0dFVF9TSVpFYCwgOmM6ZnVuYzpgUHlVbmljb2RlX0dldFNpemVgOiB1c2UKKyAgOmM6bWFjcm86YFB5VW5pY29kZV9HRVRfTEVOR1RIYCBvciA6YzpmdW5jOmBQeVVuaWNvZGVfR2V0TGVuZ3RoYAorKiA6YzptYWNybzpgUHlVbmljb2RlX0dFVF9EQVRBX1NJWkVgOiB1c2UKKyAgYGBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpICogUHlVbmljb2RlX0tJTkQoc3RyKWBgIChvbmx5IHdvcmsgb24gcmVhZHkKKyAgc3RyaW5ncykKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0FzVW5pY29kZUNvcHlgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVUNTNENvcHlgIG9yCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nYAorKiA6YzpmdW5jOmBQeVVuaWNvZGVfR2V0TWF4YAorCisKK0Z1bmN0aW9ucyBhbmQgbWFjcm9zIG1hbmlwdWxhdGluZyBQeV9VTklDT0RFKiBzdHJpbmdzOgorCisqIDpjOm1hY3JvOmBQeV9VTklDT0RFX3N0cmxlbmA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfR2V0TGVuZ3RoYCBvcgorICA6YzptYWNybzpgUHlVbmljb2RlX0dFVF9MRU5HVEhgCisqIDpjOm1hY3JvOmBQeV9VTklDT0RFX3N0cmNhdGA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQ29weUNoYXJhY3RlcnNgIG9yCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tRm9ybWF0YAorKiA6YzptYWNybzpgUHlfVU5JQ09ERV9zdHJjcHlgLCA6YzptYWNybzpgUHlfVU5JQ09ERV9zdHJuY3B5YCwKKyAgOmM6bWFjcm86YFB5X1VOSUNPREVfQ09QWWA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQ29weUNoYXJhY3RlcnNgIG9yCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9TdWJzdHJpbmdgCisqIDpjOm1hY3JvOmBQeV9VTklDT0RFX3N0cmNtcGA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQ29tcGFyZWAKKyogOmM6bWFjcm86YFB5X1VOSUNPREVfc3RybmNtcGA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfVGFpbG1hdGNoYAorKiA6YzptYWNybzpgUHlfVU5JQ09ERV9zdHJjaHJgLCA6YzptYWNybzpgUHlfVU5JQ09ERV9zdHJyY2hyYDogdXNlCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9GaW5kQ2hhcmAKKyogOmM6bWFjcm86YFB5X1VOSUNPREVfRklMTGA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfRmlsbGAKKyogOmM6bWFjcm86YFB5X1VOSUNPREVfTUFUQ0hgCisKK0VuY29kZXJzOgorCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdGAKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZVVURjdgCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVVVEY4YDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VURjhgIG9yCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VURjhTdHJpbmdgCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVVVEYzMmAKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZVVURjE2YAorKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZTpgIHVzZQorICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nYAorKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2FwZTpgIHVzZQorICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nYAorKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xYDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZ2AKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUFTQ0lJYDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nYAorKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcGAKKyogOmM6ZnVuYzpgUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXBgCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVNQkNTYDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc01CQ1NTdHJpbmdgIG9yCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZWAgKHdpdGggYGBDUF9BQ1BgYCBjb2RlX3BhZ2UpCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsYCwKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJYAorCisKK0RlcHJlY2F0ZWQgZmVhdHVyZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDptb2Q6YGFycmF5YCBtb2R1bGUncyBgYCd1J2BgIGZvcm1hdCBjb2RlIGlzIG5vdyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlCityZW1vdmVkIGluIFB5dGhvbiA0IHRvZ2V0aGVyIHdpdGggdGhlIHJlc3Qgb2YgdGhlICg6Yzp0eXBlOmBQeV9VTklDT0RFYCkgQVBJLgorCisKK1BvcnRpbmcgdG8gUHl0aG9uIDMuMworPT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgc2VjdGlvbiBsaXN0cyBwcmV2aW91c2x5IGRlc2NyaWJlZCBjaGFuZ2VzIGFuZCBvdGhlciBidWdmaXhlcwordGhhdCBtYXkgcmVxdWlyZSBjaGFuZ2VzIHRvIHlvdXIgY29kZS4KKworLi4gX3BvcnRpbmdweXRob25jb2RlOgorCitQb3J0aW5nIFB5dGhvbiBjb2RlCistLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4gU2V0IHRoZSA6ZW52dmFyOmBQWVRIT05IQVNIU0VFRGAKKyAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYGAwYGAgdG8gZGlzYWJsZSBoYXNoIHJhbmRvbWl6YXRpb24uIFNlZSBhbHNvIHRoZQorICA6bWV0aDpgb2JqZWN0Ll9faGFzaF9fYCBtZXRob2QuCisKKyogOmlzc3VlOmAxMjMyNmA6IE9uIExpbnV4LCBzeXMucGxhdGZvcm0gZG9lc24ndCBjb250YWluIHRoZSBtYWpvciB2ZXJzaW9uCisgIGFueW1vcmUuIEl0IGlzIG5vdyBhbHdheXMgJ2xpbnV4JywgaW5zdGVhZCBvZiAnbGludXgyJyBvciAnbGludXgzJyBkZXBlbmRpbmcKKyAgb24gdGhlIExpbnV4IHZlcnNpb24gdXNlZCB0byBidWlsZCBQeXRob24uIFJlcGxhY2Ugc3lzLnBsYXRmb3JtID09ICdsaW51eDInCisgIHdpdGggc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4JyksIG9yIGRpcmVjdGx5IHN5cy5wbGF0Zm9ybSA9PSAnbGludXgnIGlmCisgIHlvdSBkb24ndCBuZWVkIHRvIHN1cHBvcnQgb2xkZXIgUHl0aG9uIHZlcnNpb25zLgorCisqIDppc3N1ZTpgMTM4NDdgLCA6aXNzdWU6YDE0MTgwYDogOm1vZDpgdGltZWAgYW5kIDptb2Q6YGRhdGV0aW1lYDoKKyAgOmV4YzpgT3ZlcmZsb3dFcnJvcmAgaXMgbm93IHJhaXNlZCBpbnN0ZWFkIG9mIDpleGM6YFZhbHVlRXJyb3JgIGlmIGEKKyAgdGltZXN0YW1wIGlzIG91dCBvZiByYW5nZS4gOmV4YzpgT1NFcnJvcmAgaXMgbm93IHJhaXNlZCBpZiBDIGZ1bmN0aW9ucworICA6YzpmdW5jOmBnbXRpbWVgIG9yIDpjOmZ1bmM6YGxvY2FsdGltZWAgZmFpbGVkLgorCisqIFRoZSBkZWZhdWx0IGZpbmRlcnMgdXNlZCBieSBpbXBvcnQgbm93IHV0aWxpemUgYSBjYWNoZSBvZiB3aGF0IGlzIGNvbnRhaW5lZAorICB3aXRoaW4gYSBzcGVjaWZpYyBkaXJlY3RvcnkuIElmIHlvdSBjcmVhdGUgYSBQeXRob24gc291cmNlIGZpbGUgb3Igc291cmNlbGVzcworICBieXRlY29kZSBmaWxlLCBtYWtlIHN1cmUgdG8gY2FsbCA6ZnVuYzpgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzYCB0byBjbGVhcgorICBvdXQgdGhlIGNhY2hlIGZvciB0aGUgZmluZGVycyB0byBub3RpY2UgdGhlIG5ldyBmaWxlLgorCisqIDpleGM6YEltcG9ydEVycm9yYCBub3cgdXNlcyB0aGUgZnVsbCBuYW1lIG9mIHRoZSBtb2R1bGUgdGhhdCB3YXMgYXR0ZW1wZWQgdG8KKyAgYmUgaW1wb3J0ZWQuIERvY3Rlc3RzIHRoYXQgY2hlY2sgSW1wb3J0RXJyb3JzJyBtZXNzYWdlIHdpbGwgbmVlZCB0byBiZQorICB1cGRhdGVkIHRvIHVzZSB0aGUgZnVsbCBuYW1lIG9mIHRoZSBtb2R1bGUgaW5zdGVhZCBvZiBqdXN0IHRoZSB0YWlsIG9mIHRoZQorICBuYW1lLgorCisqIFRoZSAqaW5kZXgqIGFyZ3VtZW50IHRvIDpmdW5jOmBfX2ltcG9ydF9fYCBub3cgZGVmYXVsdHMgdG8gMCBpbnN0ZWFkIG9mIC0xCisgIGFuZCBubyBsb25nZXIgc3VwcG9ydCBuZWdhdGl2ZSB2YWx1ZXMuIEl0IHdhcyBhbiBvdmVyc2lnaHQgd2hlbiA6cGVwOmAzMjhgIHdhcworICBpbXBsZW1lbnRlZCB0aGF0IHRoZSBkZWZhdWx0IHZhbHVlIHJlbWFpbmVkIC0xLiBJZiB5b3UgbmVlZCB0byBjb250aW51ZSB0bworICBwZXJmb3JtIGEgcmVsYXRpdmUgaW1wb3J0IGZvbGxvd2VkIGJ5IGFuIGFic29sdXRlIGltcG9ydCwgdGhlbiBwZXJmb3JtIHRoZQorICByZWxhdGl2ZSBpbXBvcnQgdXNpbmcgYW4gaW5kZXggb2YgMSwgZm9sbG93ZWQgYnkgYW5vdGhlciBpbXBvcnQgdXNpbmcgYW4KKyAgaW5kZXggb2YgMC4gSXQgaXMgcHJlZmVycmVkLCB0aG91Z2gsIHRoYXQgeW91IHVzZQorICA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgIHJhdGhlciB0aGFuIGNhbGwgOmZ1bmM6YF9faW1wb3J0X19gIGRpcmVjdGx5LgorCisqIDpmdW5jOmBfX2ltcG9ydF9fYCBubyBsb25nZXIgYWxsb3dzIG9uZSB0byB1c2UgYW4gaW5kZXggdmFsdWUgb3RoZXIgdGhhbiAwCisgIGZvciB0b3AtbGV2ZWwgbW9kdWxlcy4gRS5nLiBgYF9faW1wb3J0X18oJ3N5cycsIGxldmVsPTEpYGAgaXMgbm93IGFuIGVycm9yLgorCisqIEJlY2F1c2UgOmF0dHI6YHN5cy5tZXRhX3BhdGhgIGFuZCA6YXR0cjpgc3lzLnBhdGhfaG9va3NgIG5vdyBoYXZlIGZpbmRlcnMgb24KKyAgdGhlbSBieSBkZWZhdWx0LCB5b3Ugd2lsbCBtb3N0IGxpa2VseSB3YW50IHRvIHVzZSA6bWV0aDpgbGlzdC5pbnNlcnRgIGluc3RlYWQKKyAgb2YgOm1ldGg6YGxpc3QuYXBwZW5kYCB0byBhZGQgdG8gdGhvc2UgbGlzdHMuCisKKyogQmVjYXVzZSBgYE5vbmVgYCBpcyBub3cgaW5zZXJ0ZWQgaW50byA6YXR0cjpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgLCBpZiB5b3UKKyAgYXJlIGNsZWFyaW5nIG91dCBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5IG9mIHBhdGhzIHRoYXQgZG8gbm90IGhhdmUgYQorICBmaW5kZXIsIHlvdSB3aWxsIG5lZWQgdG8gcmVtb3ZlIGtleXMgcGFpcmVkIHdpdGggdmFsdWVzIG9mIGBgTm9uZWBgICoqYW5kKioKKyAgOmNsYXNzOmBpbXAuTnVsbEltcG9ydGVyYCB0byBiZSBiYWNrd2FyZHMtY29tcGF0aWJsZS4gVGhpcyB3aWxsIGxlYWQgdG8gZXh0cmEKKyAgb3ZlcmhlYWQgb24gb2xkZXIgdmVyc2lvbnMgb2YgUHl0aG9uIHRoYXQgcmUtaW5zZXJ0IGBgTm9uZWBgIGludG8KKyAgOmF0dHI6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCB3aGVyZSBpdCByZXBlc2VudHMgdGhlIHVzZSBvZiBpbXBsaWNpdAorICBmaW5kZXJzLCBidXQgc2VtYW50aWNhbGx5IGl0IHNob3VsZCBub3QgY2hhbmdlIGFueXRoaW5nLgorCisqIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaW5kZXJgIG5vIGxvbmdlciBzcGVjaWZpZXMgYSBgZmluZF9tb2R1bGUoKWAgYWJzdHJhY3QKKyAgbWV0aG9kIHRoYXQgbXVzdCBiZSBpbXBsZW1lbnRlZC4gSWYgeW91IHdlcmUgcmVseWluZyBvbiBzdWJjbGFzc2VzIHRvCisgIGltcGxlbWVudCB0aGF0IG1ldGhvZCwgbWFrZSBzdXJlIHRvIGNoZWNrIGZvciB0aGUgbWV0aG9kJ3MgZXhpc3RlbmNlIGZpcnN0LgorICBZb3Ugd2lsbCBwcm9iYWJseSB3YW50IHRvIGNoZWNrIGZvciBgZmluZF9sb2FkZXIoKWAgZmlyc3QsIHRob3VnaCwgaW4gdGhlCisgIGNhc2Ugb2Ygd29ya2luZyB3aXRoIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcnMgPHBhdGggZW50cnkgZmluZGVyPmAuCisKKyogOm1vZDpgcGtndXRpbGAgaGFzIGJlZW4gY29udmVydGVkIHRvIHVzZSA6bW9kOmBpbXBvcnRsaWJgIGludGVybmFsbHkuIFRoaXMKKyAgZWxpbWluYXRlcyBtYW55IGVkZ2UgY2FzZXMgd2hlcmUgdGhlIG9sZCBiZWhhdmlvdXIgb2YgdGhlIFBFUCAzMDIgaW1wb3J0CisgIGVtdWxhdGlvbiBmYWlsZWQgdG8gbWF0Y2ggdGhlIGJlaGF2aW91ciBvZiB0aGUgcmVhbCBpbXBvcnQgc3lzdGVtLiBUaGUKKyAgaW1wb3J0IGVtdWxhdGlvbiBpdHNlbGYgaXMgc3RpbGwgcHJlc2VudCwgYnV0IGlzIG5vdyBkZXByZWNhdGVkLiBUaGUKKyAgOmZ1bmM6YHBrZ3V0aWwuaXRlcl9pbXBvcnRlcnNgIGFuZCA6ZnVuYzpgcGtndXRpbC53YWxrX3BhY2thZ2VzYCBmdW5jdGlvbnMKKyAgc3BlY2lhbCBjYXNlIHRoZSBzdGFuZGFyZCBpbXBvcnQgaG9va3Mgc28gdGhleSBhcmUgc3RpbGwgc3VwcG9ydGVkIGV2ZW4KKyAgdGhvdWdoIHRoZXkgZG8gbm90IHByb3ZpZGUgdGhlIG5vbi1zdGFuZGFyZCBgYGl0ZXJfbW9kdWxlcygpYGAgbWV0aG9kLgorCisqIEEgbG9uZ3N0YW5kaW5nIFJGQy1jb21wbGlhbmNlIGJ1ZyAoOmlzc3VlOmAxMDc5YCkgaW4gdGhlIHBhcnNpbmcgZG9uZSBieQorICA6ZnVuYzpgZW1haWwuaGVhZGVyLmRlY29kZV9oZWFkZXJgIGhhcyBiZWVuIGZpeGVkLiAgQ29kZSB0aGF0IHVzZXMgdGhlCisgIHN0YW5kYXJkIGlkaW9tIHRvIGNvbnZlcnQgZW5jb2RlZCBoZWFkZXJzIGludG8gdW5pY29kZQorICAoYGBzdHIobWFrZV9oZWFkZXIoZGVjb2RlX2hlYWRlcihoKSlgYCkgd2lsbCBzZWUgbm8gY2hhbmdlLCBidXQgY29kZSB0aGF0CisgIGxvb2tzIGF0IHRoZSBpbmRpdmlkdWFsIHR1cGxlcyByZXR1cm5lZCBieSBkZWNvZGVfaGVhZGVyIHdpbGwgc2VlIHRoYXQKKyAgd2hpdGVzcGFjZSB0aGF0IHByZWNlZGVzIG9yIGZvbGxvd3MgYGBBU0NJSWBgIHNlY3Rpb25zIGlzIG5vdyBpbmNsdWRlZCBpbiB0aGUKKyAgYGBBU0NJSWBgIHNlY3Rpb24uICBDb2RlIHRoYXQgYnVpbGRzIGhlYWRlcnMgdXNpbmcgYGBtYWtlX2hlYWRlcmBgIHNob3VsZAorICBhbHNvIGNvbnRpbnVlIHRvIHdvcmsgd2l0aG91dCBjaGFuZ2UsIHNpbmNlIGBgbWFrZV9oZWFkZXJgYCBjb250aW51ZXMgdG8gYWRkCisgIHdoaXRlc3BhY2UgYmV0d2VlbiBgYEFTQ0lJYGAgYW5kIG5vbi1gYEFTQ0lJYGAgc2VjdGlvbnMgaWYgaXQgaXMgbm90IGFscmVhZHkKKyAgcHJlc2VudCBpbiB0aGUgaW5wdXQgc3RyaW5ncy4KKworKiA6ZnVuYzpgZW1haWwudXRpbHMuZm9ybWF0YWRkcmAgbm93IGRvZXMgdGhlIGNvcnJlY3QgY29udGVudCB0cmFuc2ZlcgorICBlbmNvZGluZyB3aGVuIHBhc3NlZCBub24tYGBBU0NJSWBgIGRpc3BsYXkgbmFtZXMuICBBbnkgY29kZSB0aGF0IGRlcGVuZGVkIG9uCisgIHRoZSBwcmV2aW91cyBidWdneSBiZWhhdmlvciB0aGF0IHByZXNlcnZlZCB0aGUgbm9uLWBgQVNDSUlgYCB1bmljb2RlIGluIHRoZQorICBmb3JtYXR0ZWQgb3V0cHV0IHN0cmluZyB3aWxsIG5lZWQgdG8gYmUgY2hhbmdlZCAoOmlzc3VlOmAxNjkwNjA4YCkuCisKKyogOm1ldGg6YHBvcGxpYi5QT1AzLnF1aXRgIG1heSBub3cgcmFpc2UgcHJvdG9jb2wgZXJyb3JzIGxpa2UgYWxsIG90aGVyCisgIGBgcG9wbGliYGAgbWV0aG9kcy4gIENvZGUgdGhhdCBhc3N1bWVzIGBgcXVpdGBgIGRvZXMgbm90IHJhaXNlCisgIDpleGM6YHBvcGxpYi5lcnJvcl9wcm90b2AgZXJyb3JzIG1heSBuZWVkIHRvIGJlIGNoYW5nZWQgaWYgZXJyb3JzIG9uIGBgcXVpdGBgCisgIGFyZSBlbmNvdW50ZXJlZCBieSBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24gKDppc3N1ZTpgMTEyOTFgKS4KKworKiBUaGUgYGBzdHJpY3RgYCBhcmd1bWVudCB0byA6Y2xhc3M6YGVtYWlsLnBhcnNlci5QYXJzZXJgLCBkZXByZWNhdGVkIHNpbmNlCisgIFB5dGhvbiAyLjQsIGhhcyBmaW5hbGx5IGJlZW4gcmVtb3ZlZC4KKworKiBUaGUgZGVwcmVjYXRlZCBtZXRob2QgYGB1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRTYW1lRWxlbWVudHNgYCBoYXMgYmVlbgorICByZW1vdmVkLgorCisqIFRoZSBkZXByZWNhdGVkIHZhcmlhYmxlIGBgdGltZS5hY2NlcHQyZHllYXJgYCBoYXMgYmVlbiByZW1vdmVkLgorCisqIFRoZSBkZXByZWNhdGVkIGBgQ29udGV4dC5fY2xhbXBgYCBhdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZQorICA6bW9kOmBkZWNpbWFsYCBtb2R1bGUuICBJdCB3YXMgcHJldmlvdXNseSByZXBsYWNlZCBieSB0aGUgcHVibGljIGF0dHJpYnV0ZQorICA6YXR0cjpgfmRlY2ltYWwuQ29udGV4dC5jbGFtcGAuICAoU2VlIDppc3N1ZTpgODU0MGAuKQorCisqIFRoZSB1bmRvY3VtZW50ZWQgaW50ZXJuYWwgaGVscGVyIGNsYXNzIGBgU1NMRmFrZUZpbGVgYCBoYXMgYmVlbiByZW1vdmVkCisgIGZyb20gOm1vZDpgc210cGxpYmAsIHNpbmNlIGl0cyBmdW5jdGlvbmFsaXR5IGhhcyBsb25nIGJlZW4gcHJvdmlkZWQgZGlyZWN0bHkKKyAgYnkgOm1ldGg6YHNvY2tldC5zb2NrZXQubWFrZWZpbGVgLgorCisqIFBhc3NpbmcgYSBuZWdhdGl2ZSB2YWx1ZSB0byA6ZnVuYzpgdGltZS5zbGVlcGAgb24gV2luZG93cyBub3cgcmFpc2VzIGFuCisgIGVycm9yIGluc3RlYWQgb2Ygc2xlZXBpbmcgZm9yZXZlci4gIEl0IGhhcyBhbHdheXMgcmFpc2VkIGFuIGVycm9yIG9uIHBvc2l4LgorCisqIFRoZSBgYGFzdC5fX3ZlcnNpb25fX2BgIGNvbnN0YW50IGhhcyBiZWVuIHJlbW92ZWQuICBJZiB5b3UgbmVlZCB0bworICBtYWtlIGRlY2lzaW9ucyBhZmZlY3RlZCBieSB0aGUgQVNUIHZlcnNpb24sIHVzZSA6YXR0cjpgc3lzLnZlcnNpb25faW5mb2AKKyAgdG8gbWFrZSB0aGUgZGVjaXNpb24uCisKKyogQ29kZSB0aGF0IHVzZWQgdG8gd29yayBhcm91bmQgdGhlIGZhY3QgdGhhdCB0aGUgOm1vZDpgdGhyZWFkaW5nYCBtb2R1bGUgdXNlZAorICBmYWN0b3J5IGZ1bmN0aW9ucyBieSBzdWJjbGFzc2luZyB0aGUgcHJpdmF0ZSBjbGFzc2VzIHdpbGwgbmVlZCB0byBjaGFuZ2UgdG8KKyAgc3ViY2xhc3MgdGhlIG5vdy1wdWJsaWMgY2xhc3Nlcy4KKworKiBUaGUgdW5kb2N1bWVudGVkIGRlYnVnZ2luZyBtYWNoaW5lcnkgaW4gdGhlIHRocmVhZGluZyBtb2R1bGUgaGFzIGJlZW4KKyAgcmVtb3ZlZCwgc2ltcGxpZnlpbmcgdGhlIGNvZGUuICBUaGlzIHNob3VsZCBoYXZlIG5vIGVmZmVjdCBvbiBwcm9kdWN0aW9uCisgIGNvZGUsIGJ1dCBpcyBtZW50aW9uZWQgaGVyZSBpbiBjYXNlIGFueSBhcHBsaWNhdGlvbiBkZWJ1ZyBmcmFtZXdvcmtzIHdlcmUKKyAgaW50ZXJhY3Rpbmcgd2l0aCBpdCAoOmlzc3VlOmAxMzU1MGApLgorCisKK1BvcnRpbmcgQyBjb2RlCistLS0tLS0tLS0tLS0tLQorCisqIEluIHRoZSBjb3Vyc2Ugb2YgY2hhbmdlcyB0byB0aGUgYnVmZmVyIEFQSSB0aGUgdW5kb2N1bWVudGVkCisgIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zbWFsbHRhYmxlYCBtZW1iZXIgb2YgdGhlCisgIDpjOnR5cGU6YFB5X2J1ZmZlcmAgc3RydWN0dXJlIGhhcyBiZWVuIHJlbW92ZWQgYW5kIHRoZQorICBsYXlvdXQgb2YgdGhlIDpjOnR5cGU6YFB5TWVtb3J5Vmlld09iamVjdGAgaGFzIGNoYW5nZWQuCisKKyAgQWxsIGV4dGVuc2lvbnMgcmVseWluZyBvbiB0aGUgcmVsZXZhbnQgcGFydHMgaW4gYGBtZW1vcnlvYmplY3QuaGBgCisgIG9yIGBgb2JqZWN0LmhgYCBtdXN0IGJlIHJlYnVpbHQuCisKKyogRHVlIHRvIDpyZWY6YFBFUCAzOTMgPHBlcC0zOTM+YCwgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIHR5cGUgYW5kIGFsbAorICBmdW5jdGlvbnMgdXNpbmcgdGhpcyB0eXBlIGFyZSBkZXByZWNhdGVkIChidXQgd2lsbCBzdGF5IGF2YWlsYWJsZSBmb3IKKyAgYXQgbGVhc3QgZml2ZSB5ZWFycykuICBJZiB5b3Ugd2VyZSB1c2luZyBsb3ctbGV2ZWwgVW5pY29kZSBBUElzIHRvCisgIGNvbnN0cnVjdCBhbmQgYWNjZXNzIHVuaWNvZGUgb2JqZWN0cyBhbmQgeW91IHdhbnQgdG8gYmVuZWZpdCBvZiB0aGUKKyAgbWVtb3J5IGZvb3RwcmludCByZWR1Y3Rpb24gcHJvdmlkZWQgYnkgUEVQIDM5MywgeW91IGhhdmUgdG8gY29udmVydAorICB5b3VyIGNvZGUgdG8gdGhlIG5ldyA6ZG9jOmBVbmljb2RlIEFQSSA8Li4vYy1hcGkvdW5pY29kZT5gLgorCisgIEhvd2V2ZXIsIGlmIHlvdSBvbmx5IGhhdmUgYmVlbiB1c2luZyBoaWdoLWxldmVsIGZ1bmN0aW9ucyBzdWNoIGFzCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9Db25jYXQoKWAsIDpjOmZ1bmM6YFB5VW5pY29kZV9Kb2luYCBvcgorICA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpYCwgeW91ciBjb2RlIHdpbGwgYXV0b21hdGljYWxseSB0YWtlCisgIGFkdmFudGFnZSBvZiB0aGUgbmV3IHVuaWNvZGUgcmVwcmVzZW50YXRpb25zLgorCisqIDpjOmZ1bmM6YFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyYCBub3cgcmV0dXJucyAtMSB1cG9uIGZhaWx1cmUuCisKKyogQXMgYSBuZWdhdGl2ZSB2YWx1ZSBmb3IgdGhlICpsZXZlbCogYXJndW1lbnQgdG8gOmZ1bmM6YF9faW1wb3J0X19gIGlzIG5vCisgIGxvbmdlciB2YWxpZCwgdGhlIHNhbWUgbm93IGhvbGRzIGZvciA6YzpmdW5jOmBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbGAuCisgIFRoaXMgYWxzbyBtZWFucyB0aGF0IHRoZSB2YWx1ZSBvZiAqbGV2ZWwqIHVzZWQgYnkKKyAgOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0TW9kdWxlRXhgIGlzIG5vdyAwIGluc3RlYWQgb2YgLTEuCisKKworQnVpbGRpbmcgQyBleHRlbnNpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBUaGUgcmFuZ2Ugb2YgcG9zc2libGUgZmlsZSBuYW1lcyBmb3IgQyBleHRlbnNpb25zIGhhcyBiZWVuIG5hcnJvd2VkLgorICBWZXJ5IHJhcmVseSB1c2VkIHNwZWxsaW5ncyBoYXZlIGJlZW4gc3VwcHJlc3NlZDogdW5kZXIgUE9TSVgsIGZpbGVzCisgIG5hbWVkIGBgeHh4bW9kdWxlLnNvYGAsIGBgeHh4bW9kdWxlLmFiaTMuc29gYCBhbmQKKyAgYGB4eHhtb2R1bGUuY3B5dGhvbi0qLnNvYGAgYXJlIG5vIGxvbmdlciByZWNvZ25pemVkIGFzIGltcGxlbWVudGluZworICB0aGUgYGB4eHhgYCBtb2R1bGUuICBJZiB5b3UgaGFkIGJlZW4gZ2VuZXJhdGluZyBzdWNoIGZpbGVzLCB5b3UgaGF2ZQorICB0byBzd2l0Y2ggdG8gdGhlIG90aGVyIHNwZWxsaW5ncyAoaS5lLiwgcmVtb3ZlIHRoZSBgYG1vZHVsZWBgIHN0cmluZworICBmcm9tIHRoZSBmaWxlIG5hbWVzKS4KKworICAoaW1wbGVtZW50ZWQgaW4gOmlzc3VlOmAxNDA0MGAuKQorCisKK0NvbW1hbmQgTGluZSBTd2l0Y2ggQ2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogVGhlIC1RIGNvbW1hbmQtbGluZSBmbGFnIGFuZCByZWxhdGVkIGFydGlmYWN0cyBoYXZlIGJlZW4gcmVtb3ZlZC4gIENvZGUKKyAgY2hlY2tpbmcgc3lzLmZsYWdzLmRpdmlzaW9uX3dhcm5pbmcgd2lsbCBuZWVkIHVwZGF0aW5nLgorCisgICg6aXNzdWU6YDEwOTk4YCwgY29udHJpYnV0ZWQgYnkgw4lyaWMgQXJhdWpvLikKKworKiBXaGVuIDpwcm9ncmFtOmBweXRob25gIGlzIHN0YXJ0ZWQgd2l0aCA6b3B0aW9uOmAtU2AsIGBgaW1wb3J0IHNpdGVgYAorICB3aWxsIG5vIGxvbmdlciBhZGQgc2l0ZS1zcGVjaWZpYyBwYXRocyB0byB0aGUgbW9kdWxlIHNlYXJjaCBwYXRocy4gIEluCisgIHByZXZpb3VzIHZlcnNpb25zLCBpdCBkaWQuCisKKyAgKDppc3N1ZTpgMTE1OTFgLCBjb250cmlidXRlZCBieSBDYXJsIE1leWVyIHdpdGggZWRpdGlvbnMgYnkgw4lyaWMgQXJhdWpvLikKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy9jaGFuZ2Vsb2cucnN0IGIvRG9jL3doYXRzbmV3L2NoYW5nZWxvZy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdlMmRhYgotLS0gL2Rldi9udWxsCisrKyBiL0RvYy93aGF0c25ldy9jaGFuZ2Vsb2cucnN0CkBAIC0wLDAgKzEsNiBAQAorKysrKysrKysrCitDaGFuZ2Vsb2cKKysrKysrKysrKworCisuLiBtaXNjbmV3czo6IC4uLy4uL01pc2MvTkVXUworCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0IGIvRG9jL3doYXRzbmV3L2luZGV4LnJzdAppbmRleCA4MjIwYmQyLi5iYzEyMDZiIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0CisrKyBiL0RvYy93aGF0c25ldy9pbmRleC5yc3QKQEAgLTExLDYgKzExLDcgQEAKIC4uIHRvY3RyZWU6OgogICAgOm1heGRlcHRoOiAyCiAKKyAgIDMuMy5yc3QKICAgIDMuMi5yc3QKICAgIDMuMS5yc3QKICAgIDMuMC5yc3QKQEAgLTIyLDMgKzIzLDExIEBACiAgICAyLjIucnN0CiAgICAyLjEucnN0CiAgICAyLjAucnN0CisKK1RoZSAiQ2hhbmdlbG9nIiBpcyBhIEhUTUwgdmVyc2lvbiBvZiB0aGUgZmlsZSA6c291cmNlOmBNaXNjL05FV1NgIHdoaWNoCitjb250YWlucyAqYWxsKiBub250cml2aWFsIGNoYW5nZXMgdG8gUHl0aG9uIGZvciB0aGUgY3VycmVudCB2ZXJzaW9uLgorCisuLiB0b2N0cmVlOjoKKyAgIDptYXhkZXB0aDogMgorCisgICBjaGFuZ2Vsb2cucnN0CmRpZmYgLS1naXQgYS9HcmFtbWFyL0dyYW1tYXIgYi9HcmFtbWFyL0dyYW1tYXIKaW5kZXggY2VhNjhkZS4uZDdhYWZmZCAxMDA2NDQKLS0tIGEvR3JhbW1hci9HcmFtbWFyCisrKyBiL0dyYW1tYXIvR3JhbW1hcgpAQCAtMTMsNyArMTMsNyBAQAogIyBTdGFydCBzeW1ib2xzIGZvciB0aGUgZ3JhbW1hcjoKICMgICAgICAgc2luZ2xlX2lucHV0IGlzIGEgc2luZ2xlIGludGVyYWN0aXZlIHN0YXRlbWVudDsKICMgICAgICAgZmlsZV9pbnB1dCBpcyBhIG1vZHVsZSBvciBzZXF1ZW5jZSBvZiBjb21tYW5kcyByZWFkIGZyb20gYW4gaW5wdXQgZmlsZTsKLSMgICAgICAgZXZhbF9pbnB1dCBpcyB0aGUgaW5wdXQgZm9yIHRoZSBldmFsKCkgYW5kIGlucHV0KCkgZnVuY3Rpb25zLgorIyAgICAgICBldmFsX2lucHV0IGlzIHRoZSBpbnB1dCBmb3IgdGhlIGV2YWwoKSBmdW5jdGlvbnMuCiAjIE5COiBjb21wb3VuZF9zdG10IGluIHNpbmdsZV9pbnB1dCBpcyBmb2xsb3dlZCBieSBleHRyYSBORVdMSU5FIQogc2luZ2xlX2lucHV0OiBORVdMSU5FIHwgc2ltcGxlX3N0bXQgfCBjb21wb3VuZF9zdG10IE5FV0xJTkUKIGZpbGVfaW5wdXQ6IChORVdMSU5FIHwgc3RtdCkqIEVORE1BUktFUgpAQCAtMTI5LDQgKzEyOSw1IEBACiAjIG5vdCB1c2VkIGluIGdyYW1tYXIsIGJ1dCBtYXkgYXBwZWFyIGluICJub2RlIiBwYXNzZWQgZnJvbSBQYXJzZXIgdG8gQ29tcGlsZXIKIGVuY29kaW5nX2RlY2w6IE5BTUUKIAoteWllbGRfZXhwcjogJ3lpZWxkJyBbdGVzdGxpc3RdCit5aWVsZF9leHByOiAneWllbGQnIFt5aWVsZF9hcmddCit5aWVsZF9hcmc6ICdmcm9tJyB0ZXN0IHwgdGVzdGxpc3QKZGlmZiAtLWdpdCBhL0luY2x1ZGUvUHl0aG9uLWFzdC5oIGIvSW5jbHVkZS9QeXRob24tYXN0LmgKaW5kZXggMGFkNzg4Yi4uN2FkNmNiMyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9QeXRob24tYXN0LmgKKysrIGIvSW5jbHVkZS9QeXRob24tYXN0LmgKQEAgLTM2LDYgKzM2LDggQEAKIAogdHlwZWRlZiBzdHJ1Y3QgX2FsaWFzICphbGlhc190eTsKIAordHlwZWRlZiBzdHJ1Y3QgX3dpdGhpdGVtICp3aXRoaXRlbV90eTsKKwogCiBlbnVtIF9tb2Rfa2luZCB7TW9kdWxlX2tpbmQ9MSwgSW50ZXJhY3RpdmVfa2luZD0yLCBFeHByZXNzaW9uX2tpbmQ9MywKICAgICAgICAgICAgICAgICAgU3VpdGVfa2luZD00fTsKQEAgLTY0LDEwICs2Niw5IEBACiBlbnVtIF9zdG10X2tpbmQge0Z1bmN0aW9uRGVmX2tpbmQ9MSwgQ2xhc3NEZWZfa2luZD0yLCBSZXR1cm5fa2luZD0zLAogICAgICAgICAgICAgICAgICAgRGVsZXRlX2tpbmQ9NCwgQXNzaWduX2tpbmQ9NSwgQXVnQXNzaWduX2tpbmQ9NiwgRm9yX2tpbmQ9NywKICAgICAgICAgICAgICAgICAgIFdoaWxlX2tpbmQ9OCwgSWZfa2luZD05LCBXaXRoX2tpbmQ9MTAsIFJhaXNlX2tpbmQ9MTEsCi0gICAgICAgICAgICAgICAgICBUcnlFeGNlcHRfa2luZD0xMiwgVHJ5RmluYWxseV9raW5kPTEzLCBBc3NlcnRfa2luZD0xNCwKLSAgICAgICAgICAgICAgICAgIEltcG9ydF9raW5kPTE1LCBJbXBvcnRGcm9tX2tpbmQ9MTYsIEdsb2JhbF9raW5kPTE3LAotICAgICAgICAgICAgICAgICAgTm9ubG9jYWxfa2luZD0xOCwgRXhwcl9raW5kPTE5LCBQYXNzX2tpbmQ9MjAsIEJyZWFrX2tpbmQ9MjEsCi0gICAgICAgICAgICAgICAgICBDb250aW51ZV9raW5kPTIyfTsKKyAgICAgICAgICAgICAgICAgIFRyeV9raW5kPTEyLCBBc3NlcnRfa2luZD0xMywgSW1wb3J0X2tpbmQ9MTQsCisgICAgICAgICAgICAgICAgICBJbXBvcnRGcm9tX2tpbmQ9MTUsIEdsb2JhbF9raW5kPTE2LCBOb25sb2NhbF9raW5kPTE3LAorICAgICAgICAgICAgICAgICAgRXhwcl9raW5kPTE4LCBQYXNzX2tpbmQ9MTksIEJyZWFrX2tpbmQ9MjAsIENvbnRpbnVlX2tpbmQ9MjF9Owogc3RydWN0IF9zdG10IHsKICAgICAgICAgZW51bSBfc3RtdF9raW5kIGtpbmQ7CiAgICAgICAgIHVuaW9uIHsKQEAgLTEyOCw4ICsxMjksNyBAQAogICAgICAgICAgICAgICAgIH0gSWY7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgY29udGV4dF9leHByOwotICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBvcHRpb25hbF92YXJzOworICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKml0ZW1zOwogICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmJvZHk7CiAgICAgICAgICAgICAgICAgfSBXaXRoOwogICAgICAgICAgICAgICAgIApAQCAtMTQyLDEyICsxNDIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmJvZHk7CiAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqaGFuZGxlcnM7CiAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqb3JlbHNlOwotICAgICAgICAgICAgICAgIH0gVHJ5RXhjZXB0OwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqYm9keTsKICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpmaW5hbGJvZHk7Ci0gICAgICAgICAgICAgICAgfSBUcnlGaW5hbGx5OworICAgICAgICAgICAgICAgIH0gVHJ5OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHRlc3Q7CkBAIC0xODQsMTAgKzE4MCwxMCBAQAogZW51bSBfZXhwcl9raW5kIHtCb29sT3Bfa2luZD0xLCBCaW5PcF9raW5kPTIsIFVuYXJ5T3Bfa2luZD0zLCBMYW1iZGFfa2luZD00LAogICAgICAgICAgICAgICAgICAgSWZFeHBfa2luZD01LCBEaWN0X2tpbmQ9NiwgU2V0X2tpbmQ9NywgTGlzdENvbXBfa2luZD04LAogICAgICAgICAgICAgICAgICAgU2V0Q29tcF9raW5kPTksIERpY3RDb21wX2tpbmQ9MTAsIEdlbmVyYXRvckV4cF9raW5kPTExLAotICAgICAgICAgICAgICAgICAgWWllbGRfa2luZD0xMiwgQ29tcGFyZV9raW5kPTEzLCBDYWxsX2tpbmQ9MTQsIE51bV9raW5kPTE1LAotICAgICAgICAgICAgICAgICAgU3RyX2tpbmQ9MTYsIEJ5dGVzX2tpbmQ9MTcsIEVsbGlwc2lzX2tpbmQ9MTgsCi0gICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVfa2luZD0xOSwgU3Vic2NyaXB0X2tpbmQ9MjAsIFN0YXJyZWRfa2luZD0yMSwKLSAgICAgICAgICAgICAgICAgIE5hbWVfa2luZD0yMiwgTGlzdF9raW5kPTIzLCBUdXBsZV9raW5kPTI0fTsKKyAgICAgICAgICAgICAgICAgIFlpZWxkX2tpbmQ9MTIsIFlpZWxkRnJvbV9raW5kPTEzLCBDb21wYXJlX2tpbmQ9MTQsCisgICAgICAgICAgICAgICAgICBDYWxsX2tpbmQ9MTUsIE51bV9raW5kPTE2LCBTdHJfa2luZD0xNywgQnl0ZXNfa2luZD0xOCwKKyAgICAgICAgICAgICAgICAgIEVsbGlwc2lzX2tpbmQ9MTksIEF0dHJpYnV0ZV9raW5kPTIwLCBTdWJzY3JpcHRfa2luZD0yMSwKKyAgICAgICAgICAgICAgICAgIFN0YXJyZWRfa2luZD0yMiwgTmFtZV9raW5kPTIzLCBMaXN0X2tpbmQ9MjQsIFR1cGxlX2tpbmQ9MjV9Owogc3RydWN0IF9leHByIHsKICAgICAgICAgZW51bSBfZXhwcl9raW5kIGtpbmQ7CiAgICAgICAgIHVuaW9uIHsKQEAgLTI1Myw2ICsyNDksMTAgQEAKICAgICAgICAgICAgICAgICB9IFlpZWxkOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOworICAgICAgICAgICAgICAgIH0gWWllbGRGcm9tOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IGxlZnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX2ludF9zZXEgKm9wczsKICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpjb21wYXJhdG9yczsKQEAgLTI3NSw3ICsyNzUsNyBAQAogICAgICAgICAgICAgICAgIH0gU3RyOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgczsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzIHM7CiAgICAgICAgICAgICAgICAgfSBCeXRlczsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBzdHJ1Y3QgewpAQCAtMzgzLDYgKzM4MywxMSBAQAogICAgICAgICBpZGVudGlmaWVyIGFzbmFtZTsKIH07CiAKK3N0cnVjdCBfd2l0aGl0ZW0geworICAgICAgICBleHByX3R5IGNvbnRleHRfZXhwcjsKKyAgICAgICAgZXhwcl90eSBvcHRpb25hbF92YXJzOworfTsKKwogCiAjZGVmaW5lIE1vZHVsZShhMCwgYTEpIF9QeV9Nb2R1bGUoYTAsIGExKQogbW9kX3R5IF9QeV9Nb2R1bGUoYXNkbF9zZXEgKiBib2R5LCBQeUFyZW5hICphcmVuYSk7CkBAIC00MjEsMTggKzQyNiwxNiBAQAogI2RlZmluZSBJZihhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfSWYoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKIHN0bXRfdHkgX1B5X0lmKGV4cHJfdHkgdGVzdCwgYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqIG9yZWxzZSwgaW50IGxpbmVubywKICAgICAgICAgICAgICAgIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7Ci0jZGVmaW5lIFdpdGgoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X1dpdGgoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKLXN0bXRfdHkgX1B5X1dpdGgoZXhwcl90eSBjb250ZXh0X2V4cHIsIGV4cHJfdHkgb3B0aW9uYWxfdmFycywgYXNkbF9zZXEgKiBib2R5LAotICAgICAgICAgICAgICAgICBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBXaXRoKGEwLCBhMSwgYTIsIGEzLCBhNCkgX1B5X1dpdGgoYTAsIGExLCBhMiwgYTMsIGE0KQorc3RtdF90eSBfUHlfV2l0aChhc2RsX3NlcSAqIGl0ZW1zLCBhc2RsX3NlcSAqIGJvZHksIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LAorICAgICAgICAgICAgICAgICBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIFJhaXNlKGEwLCBhMSwgYTIsIGEzLCBhNCkgX1B5X1JhaXNlKGEwLCBhMSwgYTIsIGEzLCBhNCkKIHN0bXRfdHkgX1B5X1JhaXNlKGV4cHJfdHkgZXhjLCBleHByX3R5IGNhdXNlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwKICAgICAgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKTsKLSNkZWZpbmUgVHJ5RXhjZXB0KGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9UcnlFeGNlcHQoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKLXN0bXRfdHkgX1B5X1RyeUV4Y2VwdChhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogaGFuZGxlcnMsIGFzZGxfc2VxICogb3JlbHNlLAotICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7Ci0jZGVmaW5lIFRyeUZpbmFsbHkoYTAsIGExLCBhMiwgYTMsIGE0KSBfUHlfVHJ5RmluYWxseShhMCwgYTEsIGEyLCBhMywgYTQpCi1zdG10X3R5IF9QeV9UcnlGaW5hbGx5KGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBmaW5hbGJvZHksIGludCBsaW5lbm8sIGludAotICAgICAgICAgICAgICAgICAgICAgICBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIFRyeShhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikgX1B5X1RyeShhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikKK3N0bXRfdHkgX1B5X1RyeShhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogaGFuZGxlcnMsIGFzZGxfc2VxICogb3JlbHNlLAorICAgICAgICAgICAgICAgIGFzZGxfc2VxICogZmluYWxib2R5LCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYQorICAgICAgICAgICAgICAgICphcmVuYSk7CiAjZGVmaW5lIEFzc2VydChhMCwgYTEsIGEyLCBhMywgYTQpIF9QeV9Bc3NlcnQoYTAsIGExLCBhMiwgYTMsIGE0KQogc3RtdF90eSBfUHlfQXNzZXJ0KGV4cHJfdHkgdGVzdCwgZXhwcl90eSBtc2csIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKTsKQEAgLTQ5MCw2ICs0OTMsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgWWllbGQoYTAsIGExLCBhMiwgYTMpIF9QeV9ZaWVsZChhMCwgYTEsIGEyLCBhMykKIGV4cHJfdHkgX1B5X1lpZWxkKGV4cHJfdHkgdmFsdWUsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIFlpZWxkRnJvbShhMCwgYTEsIGEyLCBhMykgX1B5X1lpZWxkRnJvbShhMCwgYTEsIGEyLCBhMykKK2V4cHJfdHkgX1B5X1lpZWxkRnJvbShleHByX3R5IHZhbHVlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYQorICAgICAgICAgICAgICAgICAgICAgICphcmVuYSk7CiAjZGVmaW5lIENvbXBhcmUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X0NvbXBhcmUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKIGV4cHJfdHkgX1B5X0NvbXBhcmUoZXhwcl90eSBsZWZ0LCBhc2RsX2ludF9zZXEgKiBvcHMsIGFzZGxfc2VxICogY29tcGFyYXRvcnMsCiAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CkBAIC01MDIsNyArNTA4LDcgQEAKICNkZWZpbmUgU3RyKGEwLCBhMSwgYTIsIGEzKSBfUHlfU3RyKGEwLCBhMSwgYTIsIGEzKQogZXhwcl90eSBfUHlfU3RyKHN0cmluZyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBCeXRlcyhhMCwgYTEsIGEyLCBhMykgX1B5X0J5dGVzKGEwLCBhMSwgYTIsIGEzKQotZXhwcl90eSBfUHlfQnl0ZXMoc3RyaW5nIHMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CitleHByX3R5IF9QeV9CeXRlcyhieXRlcyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBFbGxpcHNpcyhhMCwgYTEsIGEyKSBfUHlfRWxsaXBzaXMoYTAsIGExLCBhMikKIGV4cHJfdHkgX1B5X0VsbGlwc2lzKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIEF0dHJpYnV0ZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfQXR0cmlidXRlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpCkBAIC01NDcsNiArNTUzLDkgQEAKIGtleXdvcmRfdHkgX1B5X2tleXdvcmQoaWRlbnRpZmllciBhcmcsIGV4cHJfdHkgdmFsdWUsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgYWxpYXMoYTAsIGExLCBhMikgX1B5X2FsaWFzKGEwLCBhMSwgYTIpCiBhbGlhc190eSBfUHlfYWxpYXMoaWRlbnRpZmllciBuYW1lLCBpZGVudGlmaWVyIGFzbmFtZSwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSB3aXRoaXRlbShhMCwgYTEsIGEyKSBfUHlfd2l0aGl0ZW0oYTAsIGExLCBhMikKK3dpdGhpdGVtX3R5IF9QeV93aXRoaXRlbShleHByX3R5IGNvbnRleHRfZXhwciwgZXhwcl90eSBvcHRpb25hbF92YXJzLCBQeUFyZW5hCisgICAgICAgICAgICAgICAgICAgICAgICAgKmFyZW5hKTsKIAogUHlPYmplY3QqIFB5QVNUX21vZDJvYmoobW9kX3R5IHQpOwogbW9kX3R5IFB5QVNUX29iajJtb2QoUHlPYmplY3QqIGFzdCwgUHlBcmVuYSogYXJlbmEsIGludCBtb2RlKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvUHl0aG9uLmggYi9JbmNsdWRlL1B5dGhvbi5oCmluZGV4IGQ2ZTQ3YzIuLmE3OGE3MjEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvUHl0aG9uLmgKKysrIGIvSW5jbHVkZS9QeXRob24uaApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPGFzc2VydC5oPgogCiAjaW5jbHVkZSAicHlwb3J0LmgiCisjaW5jbHVkZSAicHltYWNyby5oIgogCiAjaW5jbHVkZSAicHlhdG9taWMuaCIKIApAQCAtMTAwLDYgKzEwMSw3IEBACiAjaW5jbHVkZSAid2FybmluZ3MuaCIKICNpbmNsdWRlICJ3ZWFrcmVmb2JqZWN0LmgiCiAjaW5jbHVkZSAic3RydWN0c2VxLmgiCisjaW5jbHVkZSAibmFtZXNwYWNlb2JqZWN0LmgiCiAKICNpbmNsdWRlICJjb2RlY3MuaCIKICNpbmNsdWRlICJweWVycm9ycy5oIgpAQCAtMTI1LDQzICsxMjcsNiBAQAogI2luY2x1ZGUgInB5c3RyY21wLmgiCiAjaW5jbHVkZSAiZHRvYS5oIgogI2luY2x1ZGUgImZpbGV1dGlscy5oIgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qIF9QeV9NYW5nbGUgaXMgZGVmaW5lZCBpbiBjb21waWxlLmMgKi8KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlfTWFuZ2xlKFB5T2JqZWN0ICpwLCBQeU9iamVjdCAqbmFtZSk7Ci0jZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotLyogQXJndW1lbnQgbXVzdCBiZSBhIGNoYXIgb3IgYW4gaW50IGluIFstMTI4LCAxMjddIG9yIFswLCAyNTVdLiAqLwotI2RlZmluZSBQeV9DSEFSTUFTSyhjKSAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIpKChjKSAmIDB4ZmYpKQotCiAjaW5jbHVkZSAicHlmcGUuaCIKIAotLyogVGhlc2UgZGVmaW5pdGlvbnMgbXVzdCBtYXRjaCBjb3JyZXNwb25kaW5nIGRlZmluaXRpb25zIGluIGdyYW1pbml0LmguCi0gICBUaGVyZSdzIGNvZGUgaW4gY29tcGlsZS5jIHRoYXQgY2hlY2tzIHRoYXQgdGhleSBhcmUgdGhlIHNhbWUuICovCi0jZGVmaW5lIFB5X3NpbmdsZV9pbnB1dCAyNTYKLSNkZWZpbmUgUHlfZmlsZV9pbnB1dCAyNTcKLSNkZWZpbmUgUHlfZXZhbF9pbnB1dCAyNTgKLQotI2lmZGVmIEhBVkVfUFRICi0vKiBHTlUgcHRoIHVzZXItc3BhY2UgdGhyZWFkIHN1cHBvcnQgKi8KLSNpbmNsdWRlIDxwdGguaD4KLSNlbmRpZgotCi0vKiBEZWZpbmUgbWFjcm9zIGZvciBpbmxpbmUgZG9jdW1lbnRhdGlvbi4gKi8KLSNkZWZpbmUgUHlEb2NfVkFSKG5hbWUpIHN0YXRpYyBjaGFyIG5hbWVbXQotI2RlZmluZSBQeURvY19TVFJWQVIobmFtZSxzdHIpIFB5RG9jX1ZBUihuYW1lKSA9IFB5RG9jX1NUUihzdHIpCi0jaWZkZWYgV0lUSF9ET0NfU1RSSU5HUwotI2RlZmluZSBQeURvY19TVFIoc3RyKSBzdHIKLSNlbHNlCi0jZGVmaW5lIFB5RG9jX1NUUihzdHIpICIiCi0jZW5kaWYKLQogI2VuZGlmIC8qICFQeV9QWVRIT05fSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9hYnN0cmFjdC5oIGIvSW5jbHVkZS9hYnN0cmFjdC5oCmluZGV4IDBmZTA5NTYuLjQ0YjVhZjcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYWJzdHJhY3QuaAorKysgYi9JbmNsdWRlL2Fic3RyYWN0LmgKQEAgLTcsNiArNyw3IEBACiAjaWZkZWYgUFlfU1NJWkVfVF9DTEVBTgogI2RlZmluZSBQeU9iamVjdF9DYWxsRnVuY3Rpb24gX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVAogI2RlZmluZSBQeU9iamVjdF9DYWxsTWV0aG9kIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCisjZGVmaW5lIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQgX1B5T2JqZWN0X0NhbGxNZXRob2RJZF9TaXplVAogI2VuZGlmCiAKIC8qIEFic3RyYWN0IE9iamVjdCBJbnRlcmZhY2UgKG1hbnkgdGhhbmtzIHRvIEppbSBGdWx0b24pICovCkBAIC0zMDcsMTEgKzMwOCwyMiBAQAogICAgICBQeXRob24gZXhwcmVzc2lvbjogby5tZXRob2QoYXJncykuCiAgICAgICAgKi8KIAorICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICptZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmZvcm1hdCwgLi4uKTsKKworICAgICAgIC8qCisgICAgICAgICBMaWtlIFB5T2JqZWN0X0NhbGxNZXRob2QsIGJ1dCBleHBlY3QgYSBfUHlfSWRlbnRpZmllciogYXMgdGhlCisgICAgICAgICBtZXRob2QgbmFtZS4KKyAgICAgICAqLworCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVChQeU9iamVjdCAqY2FsbGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpmb3JtYXQsIC4uLik7CiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQoUHlPYmplY3QgKm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpmb3JtYXQsIC4uLik7CisgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxNZXRob2RJZF9TaXplVChQeU9iamVjdCAqbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfSWRlbnRpZmllciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpmb3JtYXQsIC4uLik7CiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CkBAIC0zMjcsNiArMzM5LDEwIEBACiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhQeU9iamVjdCAqbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWV0aG9kLCAuLi4pOworICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kT2JqSWRBcmdzKFB5T2JqZWN0ICpvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKwogCiAgICAgICAgLyoKICAgICAgQ2FsbCB0aGUgbWV0aG9kIG5hbWVkIG0gb2Ygb2JqZWN0IG8gd2l0aCBhIHZhcmlhYmxlIG51bWJlciBvZgpAQCAtNTE5LDExICs1MzUsMTIgQEAKIAogCiAKKyAgICAgLyogSW1wbGVtZW50YXRpb24gaW4gbWVtb3J5b2JqZWN0LmMgKi8KICAgICAgUHlBUElfRlVOQyhpbnQpIFB5QnVmZmVyX1RvQ29udGlndW91cyh2b2lkICpidWYsIFB5X2J1ZmZlciAqdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgY2hhciBmb3J0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgY2hhciBvcmRlcik7CiAKICAgICAgUHlBUElfRlVOQyhpbnQpIFB5QnVmZmVyX0Zyb21Db250aWd1b3VzKFB5X2J1ZmZlciAqdmlldywgdm9pZCAqYnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4sIGNoYXIgZm9ydCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgY2hhciBvcmRlcik7CiAKIAogICAgIC8qIENvcHkgbGVuIGJ5dGVzIG9mIGRhdGEgZnJvbSB0aGUgY29udGlndW91cyBjaHVuayBvZiBtZW1vcnkKQEAgLTU0Nyw3ICs1NjQsNyBAQAogICAgIC8qIENvcHkgdGhlIGRhdGEgZnJvbSB0aGUgc3JjIGJ1ZmZlciB0byB0aGUgYnVmZmVyIG9mIGRlc3RpbmF0aW9uCiAgICAgICovCiAKLSAgICAgUHlBUElfRlVOQyhpbnQpIFB5QnVmZmVyX0lzQ29udGlndW91cyhQeV9idWZmZXIgKnZpZXcsIGNoYXIgZm9ydCk7CisgICAgIFB5QVBJX0ZVTkMoaW50KSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoY29uc3QgUHlfYnVmZmVyICp2aWV3LCBjaGFyIGZvcnQpOwogCiAKICAgICAgUHlBUElfRlVOQyh2b2lkKSBQeUJ1ZmZlcl9GaWxsQ29udGlndW91c1N0cmlkZXMoaW50IG5kaW1zLApAQCAtNzYxLDIxICs3NzgsNiBAQAogICAgICBQeUFQSV9GVU5DKFB5X3NzaXplX3QpIFB5TnVtYmVyX0FzU3NpemVfdChQeU9iamVjdCAqbywgUHlPYmplY3QgKmV4Yyk7CiAKICAgICAgICAvKgotICAgICBSZXR1cm5zIHRoZSBJbnRlZ3JhbCBpbnN0YW5jZSBjb252ZXJ0ZWQgdG8gYW4gaW50LiBUaGUKLSAgICAgaW5zdGFuY2UgaXMgZXhwZWN0ZWQgdG8gYmUgaW50IG9yIGxvbmcgb3IgaGF2ZSBhbiBfX2ludF9fCi0gICAgIG1ldGhvZC4gU3RlYWxzIGludGVncmFsJ3MgcmVmZXJlbmNlLiBlcnJvcl9mb3JtYXQgd2lsbCBiZQotICAgICB1c2VkIHRvIGNyZWF0ZSB0aGUgVHlwZUVycm9yIGlmIGludGVncmFsIGlzbid0IGFjdHVhbGx5IGFuCi0gICAgIEludGVncmFsIGluc3RhbmNlLiBlcnJvcl9mb3JtYXQgc2hvdWxkIGJlIGEgZm9ybWF0IHN0cmluZwotICAgICB0aGF0IGNhbiBhY2NlcHQgYSBjaGFyKiBuYW1pbmcgaW50ZWdyYWwncyB0eXBlLgotICAgICAgICovCi0KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLSAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlOdW1iZXJfQ29udmVydEludGVncmFsVG9JbnQoCi0gICAgICAgICBQeU9iamVjdCAqaW50ZWdyYWwsCi0gICAgICAgICBjb25zdCBjaGFyKiBlcnJvcl9mb3JtYXQpOwotI2VuZGlmCi0KLSAgICAgICAvKgogICAgIFJldHVybnMgdGhlIG9iamVjdCBjb252ZXJ0ZWQgdG8gUHlfc3NpemVfdCBieSBnb2luZyB0aHJvdWdoCiAgICAgUHlOdW1iZXJfSW5kZXggZmlyc3QuICBJZiBhbiBvdmVyZmxvdyBlcnJvciBvY2N1cnMgd2hpbGUKICAgICBjb252ZXJ0aW5nIHRoZSBpbnQtb3ItbG9uZyB0byBQeV9zc2l6ZV90LCB0aGVuIHRoZSBzZWNvbmQgYXJndW1lbnQKQEAgLTEwMTQsNyArMTAxNiw3IEBACiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeVNlcXVlbmNlX0Zhc3QoUHlPYmplY3QgKm8sIGNvbnN0IGNoYXIqIG0pOwogICAgICAgIC8qCi0gICAgIFJldHVybnMgdGhlIHNlcXVlbmNlLCBvLCBhcyBhIHR1cGxlLCB1bmxlc3MgaXQncyBhbHJlYWR5IGEKKyAgICAgUmV0dXJucyB0aGUgc2VxdWVuY2UsIG8sIGFzIGEgbGlzdCwgdW5sZXNzIGl0J3MgYWxyZWFkeSBhCiAgICAgIHR1cGxlIG9yIGxpc3QuICBVc2UgUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNIHRvIGFjY2VzcyB0aGUKICAgICAgbWVtYmVycyBvZiB0aGlzIGxpc3QsIGFuZCBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUgdG8gZ2V0IGl0cyBsZW5ndGguCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYXNkbC5oIGIvSW5jbHVkZS9hc2RsLmgKaW5kZXggOWJiMDY5Ny4uNmJmNjE4ZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9hc2RsLmgKKysrIGIvSW5jbHVkZS9hc2RsLmgKQEAgLTMsNiArMyw3IEBACiAKIHR5cGVkZWYgUHlPYmplY3QgKiBpZGVudGlmaWVyOwogdHlwZWRlZiBQeU9iamVjdCAqIHN0cmluZzsKK3R5cGVkZWYgUHlPYmplY3QgKiBieXRlczsKIHR5cGVkZWYgUHlPYmplY3QgKiBvYmplY3Q7CiAKIC8qIEl0IHdvdWxkIGJlIG5pY2UgaWYgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IGFzZGxfYy5weSB3YXMgY29tcGxldGVseQpAQCAtMTQsMTcgKzE1LDE3IEBACiAvKiBYWFggQSBzZXF1ZW5jZSBzaG91bGQgYmUgdHlwZWQgc28gdGhhdCBpdHMgdXNlIGNhbiBiZSB0eXBlY2hlY2tlZC4gKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewotICAgIGludCBzaXplOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICB2b2lkICplbGVtZW50c1sxXTsKIH0gYXNkbF9zZXE7CiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgICBpbnQgc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgaW50IGVsZW1lbnRzWzFdOwogfSBhc2RsX2ludF9zZXE7CiAKLWFzZGxfc2VxICphc2RsX3NlcV9uZXcoaW50IHNpemUsIFB5QXJlbmEgKmFyZW5hKTsKLWFzZGxfaW50X3NlcSAqYXNkbF9pbnRfc2VxX25ldyhpbnQgc2l6ZSwgUHlBcmVuYSAqYXJlbmEpOworYXNkbF9zZXEgKmFzZGxfc2VxX25ldyhQeV9zc2l6ZV90IHNpemUsIFB5QXJlbmEgKmFyZW5hKTsKK2FzZGxfaW50X3NlcSAqYXNkbF9pbnRfc2VxX25ldyhQeV9zc2l6ZV90IHNpemUsIFB5QXJlbmEgKmFyZW5hKTsKIAogI2RlZmluZSBhc2RsX3NlcV9HRVQoUywgSSkgKFMpLT5lbGVtZW50c1soSSldCiAjZGVmaW5lIGFzZGxfc2VxX0xFTihTKSAoKFMpID09IE5VTEwgPyAwIDogKFMpLT5zaXplKQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9hc3QuaCBiL0luY2x1ZGUvYXN0LmgKaW5kZXggYTAxNTMzNi4uMDU1ZThkYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9hc3QuaAorKysgYi9JbmNsdWRlL2FzdC5oCkBAIC00LDYgKzQsNyBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorUHlBUElfRlVOQyhpbnQpIFB5QVNUX1ZhbGlkYXRlKG1vZF90eSk7CiBQeUFQSV9GVU5DKG1vZF90eSkgUHlBU1RfRnJvbU5vZGUoCiAgICAgY29uc3Qgbm9kZSAqbiwKICAgICBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ieXRlc29iamVjdC5oIGIvSW5jbHVkZS9ieXRlc29iamVjdC5oCmluZGV4IGUxYWY4OWYuLmQ3YzdmZmQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYnl0ZXNvYmplY3QuaAorKysgYi9JbmNsdWRlL2J5dGVzb2JqZWN0LmgKQEAgLTYyLDggKzYyLDYgQEAKIFB5QVBJX0ZVTkModm9pZCkgUHlCeXRlc19Db25jYXRBbmREZWwoUHlPYmplY3QgKiosIFB5T2JqZWN0ICopOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeUJ5dGVzX1Jlc2l6ZShQeU9iamVjdCAqKiwgUHlfc3NpemVfdCk7Ci1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUJ5dGVzX0Zvcm1hdExvbmcoUHlPYmplY3QqLCBpbnQsIGludCwKLQkJCQkJCSAgaW50LCBjaGFyKiosIGludCopOwogI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Qnl0ZXNfRGVjb2RlRXNjYXBlKGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwKIAkJCQkJCSAgIGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwKZGlmZiAtLWdpdCBhL0luY2x1ZGUvY29kZS5oIGIvSW5jbHVkZS9jb2RlLmgKaW5kZXggZTc3M2I2YS4uN2M3ZTViZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jb2RlLmgKKysrIGIvSW5jbHVkZS9jb2RlLmgKQEAgLTIyLDYgKzIyLDcgQEAKICAgICBQeU9iamVjdCAqY29fZnJlZXZhcnM7CS8qIHR1cGxlIG9mIHN0cmluZ3MgKGZyZWUgdmFyaWFibGUgbmFtZXMpICovCiAgICAgUHlPYmplY3QgKmNvX2NlbGx2YXJzOyAgICAgIC8qIHR1cGxlIG9mIHN0cmluZ3MgKGNlbGwgdmFyaWFibGUgbmFtZXMpICovCiAgICAgLyogVGhlIHJlc3QgZG9lc24ndCBjb3VudCBmb3IgaGFzaCBvciBjb21wYXJpc29ucyAqLworICAgIHVuc2lnbmVkIGNoYXIgKmNvX2NlbGwyYXJnOyAvKiBNYXBzIGNlbGwgdmFycyB3aGljaCBhcmUgYXJndW1lbnRzLiAqLwogICAgIFB5T2JqZWN0ICpjb19maWxlbmFtZTsJLyogdW5pY29kZSAod2hlcmUgaXQgd2FzIGxvYWRlZCBmcm9tKSAqLwogICAgIFB5T2JqZWN0ICpjb19uYW1lOwkJLyogdW5pY29kZSAobmFtZSwgZm9yIHJlZmVyZW5jZSkgKi8KICAgICBpbnQgY29fZmlyc3RsaW5lbm87CQkvKiBmaXJzdCBzb3VyY2UgbGluZSBudW1iZXIgKi8KQEAgLTU3LDYgKzU4LDExIEBACiAKICNkZWZpbmUgQ09fRlVUVVJFX0JBUlJZX0FTX0JERkwgIDB4NDAwMDAKIAorLyogVGhpcyB2YWx1ZSBpcyBmb3VuZCBpbiB0aGUgY29fY2VsbDJhcmcgYXJyYXkgd2hlbiB0aGUgYXNzb2NpYXRlZCBjZWxsCisgICB2YXJpYWJsZSBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGFuIGFyZ3VtZW50LiBUaGUgbWF4aW11bSBudW1iZXIgb2YKKyAgIGFyZ3VtZW50cyBpcyAyNTUgKGluZGV4ZWQgdXAgdG8gMjU0KSwgc28gMjU1IHdvcmsgYXMgYSBzcGVjaWFsIGZsYWcuKi8KKyNkZWZpbmUgQ09fQ0VMTF9OT1RfQU5fQVJHIDI1NQorCiAvKiBUaGlzIHNob3VsZCBiZSBkZWZpbmVkIGlmIGEgZnV0dXJlIHN0YXRlbWVudCBtb2RpZmllcyB0aGUgc3ludGF4LgogICAgRm9yIGV4YW1wbGUsIHdoZW4gYSBrZXl3b3JkIGlzIGFkZGVkLgogKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvY29kZWNzLmggYi9JbmNsdWRlL2NvZGVjcy5oCmluZGV4IGRmZjA5ZTcuLjBkOWU5YjQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvY29kZWNzLmgKKysrIGIvSW5jbHVkZS9jb2RlY3MuaApAQCAtMTc0LDYgKzE3NCw4IEBACiAvKiByZXBsYWNlIHRoZSB1bmljb2RlIGVuY29kZSBlcnJvciB3aXRoIGJhY2tzbGFzaCBlc2NhcGVzIChceCwgXHUgYW5kIFxVKSAqLwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnMoUHlPYmplY3QgKmV4Yyk7CiAKK1B5QVBJX0RBVEEoY29uc3QgY2hhciAqKSBQeV9oZXhkaWdpdHM7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL2NvbXBpbGUuaCBiL0luY2x1ZGUvY29tcGlsZS5oCmluZGV4IGJjNTNiMzkuLmFjMjYzNmQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvY29tcGlsZS5oCisrKyBiL0luY2x1ZGUvY29tcGlsZS5oCkBAIC0xLDcgKzEsNyBAQAotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogI2lmbmRlZiBQeV9DT01QSUxFX0gKICNkZWZpbmUgUHlfQ09NUElMRV9ICiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKICNpbmNsdWRlICJjb2RlLmgiCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpAQCAtMzgsOSArMzgsMTkgQEAKICAgICBQeUFyZW5hICphcmVuYSk7CiBQeUFQSV9GVU5DKFB5RnV0dXJlRmVhdHVyZXMgKikgUHlGdXR1cmVfRnJvbUFTVChzdHJ1Y3QgX21vZCAqLCBjb25zdCBjaGFyICopOwogCisvKiBfUHlfTWFuZ2xlIGlzIGRlZmluZWQgaW4gY29tcGlsZS5jICovCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5X01hbmdsZShQeU9iamVjdCAqcCwgUHlPYmplY3QgKm5hbWUpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgotI2VuZGlmIC8qICFQeV9DT01QSUxFX0ggKi8KKwogI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLworCisvKiBUaGVzZSBkZWZpbml0aW9ucyBtdXN0IG1hdGNoIGNvcnJlc3BvbmRpbmcgZGVmaW5pdGlvbnMgaW4gZ3JhbWluaXQuaC4KKyAgIFRoZXJlJ3MgY29kZSBpbiBjb21waWxlLmMgdGhhdCBjaGVja3MgdGhhdCB0aGV5IGFyZSB0aGUgc2FtZS4gKi8KKyNkZWZpbmUgUHlfc2luZ2xlX2lucHV0IDI1NgorI2RlZmluZSBQeV9maWxlX2lucHV0IDI1NworI2RlZmluZSBQeV9ldmFsX2lucHV0IDI1OAorCisjZW5kaWYgLyogIVB5X0NPTVBJTEVfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9jb21wbGV4b2JqZWN0LmggYi9JbmNsdWRlL2NvbXBsZXhvYmplY3QuaAppbmRleCBjMzc5YjA4Li4xOTM0ZjNiIDEwMDY0NAotLS0gYS9JbmNsdWRlL2NvbXBsZXhvYmplY3QuaAorKysgYi9JbmNsdWRlL2NvbXBsZXhvYmplY3QuaApAQCAtNjMsOSArNjMsMTIgQEAKIC8qIEZvcm1hdCB0aGUgb2JqZWN0IGJhc2VkIG9uIHRoZSBmb3JtYXRfc3BlYywgYXMgZGVmaW5lZCBpbiBQRVAgMzEwMQogICAgKEFkdmFuY2VkIFN0cmluZyBGb3JtYXR0aW5nKS4gKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Q29tcGxleF9Gb3JtYXRBZHZhbmNlZChQeU9iamVjdCAqb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKmZvcm1hdF9zcGVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlDb21wbGV4X0Zvcm1hdEFkdmFuY2VkV3JpdGVyKAorICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYywKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgZW5kKTsKICNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZGF0ZXRpbWUuaCBiL0luY2x1ZGUvZGF0ZXRpbWUuaAppbmRleCBkYjU3YTE4Li40MWUzYmNmIDEwMDY0NAotLS0gYS9JbmNsdWRlL2RhdGV0aW1lLmgKKysrIGIvSW5jbHVkZS9kYXRldGltZS5oCkBAIC0xMzUsNiArMTM1LDEyIEBACiAgICAgICgoKFB5RGF0ZVRpbWVfVGltZSopbyktPmRhdGFbNF0gPDwgOCkgIHwgICAgICAgICAgIFwKICAgICAgICgoUHlEYXRlVGltZV9UaW1lKilvKS0+ZGF0YVs1XSkKIAorLyogQXBwbHkgZm9yIHRpbWUgZGVsdGEgaW5zdGFuY2VzICovCisjZGVmaW5lIFB5RGF0ZVRpbWVfREVMVEFfR0VUX0RBWVMobykgICAgICAgICAoKChQeURhdGVUaW1lX0RlbHRhKilvKS0+ZGF5cykKKyNkZWZpbmUgUHlEYXRlVGltZV9ERUxUQV9HRVRfU0VDT05EUyhvKSAgICAgICgoKFB5RGF0ZVRpbWVfRGVsdGEqKW8pLT5zZWNvbmRzKQorI2RlZmluZSBQeURhdGVUaW1lX0RFTFRBX0dFVF9NSUNST1NFQ09ORFMobykgICAgICAgICAgICBcCisgICAgKCgoUHlEYXRlVGltZV9EZWx0YSopbyktPm1pY3Jvc2Vjb25kcykKKwogCiAvKiBEZWZpbmUgc3RydWN0dXJlIGZvciBDIEFQSS4gKi8KIHR5cGVkZWYgc3RydWN0IHsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZGVzY3JvYmplY3QuaCBiL0luY2x1ZGUvZGVzY3JvYmplY3QuaAppbmRleCA2NDZiM2NjLi5lMmJhOTdmIDEwMDY0NAotLS0gYS9JbmNsdWRlL2Rlc2Nyb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9kZXNjcm9iamVjdC5oCkBAIC00Miw2ICs0Miw3IEBACiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5VHlwZU9iamVjdCAqZF90eXBlOwogICAgIFB5T2JqZWN0ICpkX25hbWU7CisgICAgUHlPYmplY3QgKmRfcXVhbG5hbWU7CiB9IFB5RGVzY3JPYmplY3Q7CiAKICNkZWZpbmUgUHlEZXNjcl9DT01NT04gUHlEZXNjck9iamVjdCBkX2NvbW1vbgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9kaWN0b2JqZWN0LmggYi9JbmNsdWRlL2RpY3RvYmplY3QuaAppbmRleCBiMDI2Nzg1Li5kODlhYWM4IDEwMDY0NAotLS0gYS9JbmNsdWRlL2RpY3RvYmplY3QuaAorKysgYi9JbmNsdWRlL2RpY3RvYmplY3QuaApAQCAtMTMsNzggKzEzLDIwIEBACiAgICB0dW5pbmcgZGljdGlvbmFyaWVzLCBhbmQgc2V2ZXJhbCBpZGVhcyBmb3IgcG9zc2libGUgb3B0aW1pemF0aW9ucy4KICovCiAKLS8qCi1UaGVyZSBhcmUgdGhyZWUga2luZHMgb2Ygc2xvdHMgaW4gdGhlIHRhYmxlOgotCi0xLiBVbnVzZWQuICBtZV9rZXkgPT0gbWVfdmFsdWUgPT0gTlVMTAotICAgRG9lcyBub3QgaG9sZCBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIgbm93IGFuZCBuZXZlciBkaWQuICBVbnVzZWQgY2FuCi0gICB0cmFuc2l0aW9uIHRvIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBUaGlzIGlzIHRoZSBvbmx5IGNhc2UgaW4gd2hpY2gKLSAgIG1lX2tleSBpcyBOVUxMLCBhbmQgaXMgZWFjaCBzbG90J3MgaW5pdGlhbCBzdGF0ZS4KLQotMi4gQWN0aXZlLiAgbWVfa2V5ICE9IE5VTEwgYW5kIG1lX2tleSAhPSBkdW1teSBhbmQgbWVfdmFsdWUgIT0gTlVMTAotICAgSG9sZHMgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLiAgQWN0aXZlIGNhbiB0cmFuc2l0aW9uIHRvIER1bW15IHVwb24KLSAgIGtleSBkZWxldGlvbi4gIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSBpbiB3aGljaCBtZV92YWx1ZSAhPSBOVUxMLgotCi0zLiBEdW1teS4gIG1lX2tleSA9PSBkdW1teSBhbmQgbWVfdmFsdWUgPT0gTlVMTAotICAgUHJldmlvdXNseSBoZWxkIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpciwgYnV0IHRoYXQgd2FzIGRlbGV0ZWQgYW5kIGFuCi0gICBhY3RpdmUgcGFpciBoYXMgbm90IHlldCBvdmVyd3JpdHRlbiB0aGUgc2xvdC4gIER1bW15IGNhbiB0cmFuc2l0aW9uIHRvCi0gICBBY3RpdmUgdXBvbiBrZXkgaW5zZXJ0aW9uLiAgRHVtbXkgc2xvdHMgY2Fubm90IGJlIG1hZGUgVW51c2VkIGFnYWluCi0gICAoY2Fubm90IGhhdmUgbWVfa2V5IHNldCB0byBOVUxMKSwgZWxzZSB0aGUgcHJvYmUgc2VxdWVuY2UgaW4gY2FzZSBvZgotICAgY29sbGlzaW9uIHdvdWxkIGhhdmUgbm8gd2F5IHRvIGtub3cgdGhleSB3ZXJlIG9uY2UgYWN0aXZlLgotCi1Ob3RlOiAucG9waXRlbSgpIGFidXNlcyB0aGUgbWVfaGFzaCBmaWVsZCBvZiBhbiBVbnVzZWQgb3IgRHVtbXkgc2xvdCB0bwotaG9sZCBhIHNlYXJjaCBmaW5nZXIuICBUaGUgbWVfaGFzaCBmaWVsZCBvZiBVbnVzZWQgb3IgRHVtbXkgc2xvdHMgaGFzIG5vCi1tZWFuaW5nIG90aGVyd2lzZS4KLSovCi0KLS8qIFB5RGljdF9NSU5TSVpFIGlzIHRoZSBtaW5pbXVtIHNpemUgb2YgYSBkaWN0aW9uYXJ5LiAgVGhpcyBtYW55IHNsb3RzIGFyZQotICogYWxsb2NhdGVkIGRpcmVjdGx5IGluIHRoZSBkaWN0IG9iamVjdCAoaW4gdGhlIG1hX3NtYWxsdGFibGUgbWVtYmVyKS4KLSAqIEl0IG11c3QgYmUgYSBwb3dlciBvZiAyLCBhbmQgYXQgbGVhc3QgNC4gIDggYWxsb3dzIGRpY3RzIHdpdGggbm8gbW9yZQotICogdGhhbiA1IGFjdGl2ZSBlbnRyaWVzIHRvIGxpdmUgaW4gbWFfc21hbGx0YWJsZSAoYW5kIHNvIGF2b2lkIGFuCi0gKiBhZGRpdGlvbmFsIG1hbGxvYyk7IGluc3RydW1lbnRhdGlvbiBzdWdnZXN0ZWQgdGhpcyBzdWZmaWNlcyBmb3IgdGhlCi0gKiBtYWpvcml0eSBvZiBkaWN0cyAoY29uc2lzdGluZyBtb3N0bHkgb2YgdXN1YWxseS1zbWFsbCBpbnN0YW5jZSBkaWN0cyBhbmQKLSAqIHVzdWFsbHktc21hbGwgZGljdHMgY3JlYXRlZCB0byBwYXNzIGtleXdvcmQgYXJndW1lbnRzKS4KLSAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotI2RlZmluZSBQeURpY3RfTUlOU0laRSA4CiAKK3R5cGVkZWYgc3RydWN0IF9kaWN0a2V5c29iamVjdCBQeURpY3RLZXlzT2JqZWN0OworCisvKiBUaGUgbWFfdmFsdWVzIHBvaW50ZXIgaXMgTlVMTCBmb3IgYSBjb21iaW5lZCB0YWJsZQorICogb3IgcG9pbnRzIHRvIGFuIGFycmF5IG9mIFB5T2JqZWN0KiBmb3IgYSBzcGxpdCB0YWJsZQorICovCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgLyogQ2FjaGVkIGhhc2ggY29kZSBvZiBtZV9rZXkuICovCi0gICAgUHlfaGFzaF90IG1lX2hhc2g7Ci0gICAgUHlPYmplY3QgKm1lX2tleTsKLSAgICBQeU9iamVjdCAqbWVfdmFsdWU7Ci19IFB5RGljdEVudHJ5OwotCi0vKgotVG8gZW5zdXJlIHRoZSBsb29rdXAgYWxnb3JpdGhtIHRlcm1pbmF0ZXMsIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIFVudXNlZAotc2xvdCAoTlVMTCBrZXkpIGluIHRoZSB0YWJsZS4KLVRoZSB2YWx1ZSBtYV9maWxsIGlzIHRoZSBudW1iZXIgb2Ygbm9uLU5VTEwga2V5cyAoc3VtIG9mIEFjdGl2ZSBhbmQgRHVtbXkpOwotbWFfdXNlZCBpcyB0aGUgbnVtYmVyIG9mIG5vbi1OVUxMLCBub24tZHVtbXkga2V5cyAoPT0gdGhlIG51bWJlciBvZiBub24tTlVMTAotdmFsdWVzID09IHRoZSBudW1iZXIgb2YgQWN0aXZlIGl0ZW1zKS4KLVRvIGF2b2lkIHNsb3dpbmcgZG93biBsb29rdXBzIG9uIGEgbmVhci1mdWxsIHRhYmxlLCB3ZSByZXNpemUgdGhlIHRhYmxlIHdoZW4KLWl0J3MgdHdvLXRoaXJkcyBmdWxsLgotKi8KLXR5cGVkZWYgc3RydWN0IF9kaWN0b2JqZWN0IFB5RGljdE9iamVjdDsKLXN0cnVjdCBfZGljdG9iamVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5X3NzaXplX3QgbWFfZmlsbDsgIC8qICMgQWN0aXZlICsgIyBEdW1teSAqLwotICAgIFB5X3NzaXplX3QgbWFfdXNlZDsgIC8qICMgQWN0aXZlICovCisgICAgUHlfc3NpemVfdCBtYV91c2VkOworICAgIFB5RGljdEtleXNPYmplY3QgKm1hX2tleXM7CisgICAgUHlPYmplY3QgKiptYV92YWx1ZXM7Cit9IFB5RGljdE9iamVjdDsKIAotICAgIC8qIFRoZSB0YWJsZSBjb250YWlucyBtYV9tYXNrICsgMSBzbG90cywgYW5kIHRoYXQncyBhIHBvd2VyIG9mIDIuCi0gICAgICogV2Ugc3RvcmUgdGhlIG1hc2sgaW5zdGVhZCBvZiB0aGUgc2l6ZSBiZWNhdXNlIHRoZSBtYXNrIGlzIG1vcmUKLSAgICAgKiBmcmVxdWVudGx5IG5lZWRlZC4KLSAgICAgKi8KLSAgICBQeV9zc2l6ZV90IG1hX21hc2s7Ci0KLSAgICAvKiBtYV90YWJsZSBwb2ludHMgdG8gbWFfc21hbGx0YWJsZSBmb3Igc21hbGwgdGFibGVzLCBlbHNlIHRvCi0gICAgICogYWRkaXRpb25hbCBtYWxsb2MnZWQgbWVtb3J5LiAgbWFfdGFibGUgaXMgbmV2ZXIgTlVMTCEgIFRoaXMgcnVsZQotICAgICAqIHNhdmVzIHJlcGVhdGVkIHJ1bnRpbWUgbnVsbC10ZXN0cyBpbiB0aGUgd29ya2hvcnNlIGdldGl0ZW0gYW5kCi0gICAgICogc2V0aXRlbSBjYWxscy4KLSAgICAgKi8KLSAgICBQeURpY3RFbnRyeSAqbWFfdGFibGU7Ci0gICAgUHlEaWN0RW50cnkgKigqbWFfbG9va3VwKShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCk7Ci0gICAgUHlEaWN0RW50cnkgbWFfc21hbGx0YWJsZVtQeURpY3RfTUlOU0laRV07Ci19OwogI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeURpY3RfVHlwZTsKQEAgLTEwOSwxMiArNTEsMTYgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X05ldyh2b2lkKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X0dldEl0ZW0oUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9HZXRJdGVtSWRXaXRoRXJyb3IoUHlPYmplY3QgKmRwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSk7CiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X1NldEl0ZW0oUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqaXRlbSk7CiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X0RlbEl0ZW0oUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KTsKIFB5QVBJX0ZVTkModm9pZCkgUHlEaWN0X0NsZWFyKFB5T2JqZWN0ICptcCk7CiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X05leHQoCiAgICAgUHlPYmplY3QgKm1wLCBQeV9zc2l6ZV90ICpwb3MsIFB5T2JqZWN0ICoqa2V5LCBQeU9iamVjdCAqKnZhbHVlKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5RGljdEtleXNPYmplY3QgKl9QeURpY3RfTmV3S2V5c0ZvckNsYXNzKHZvaWQpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9HZW5lcmljR2V0RGljdChQeU9iamVjdCAqLCB2b2lkICopOwogUHlBUElfRlVOQyhpbnQpIF9QeURpY3RfTmV4dCgKICAgICBQeU9iamVjdCAqbXAsIFB5X3NzaXplX3QgKnBvcywgUHlPYmplY3QgKiprZXksIFB5T2JqZWN0ICoqdmFsdWUsIFB5X2hhc2hfdCAqaGFzaCk7CiAjZW5kaWYKQEAgLTEyOSw2ICs3NSwxMCBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlEaWN0X05ld1ByZXNpemVkKFB5X3NzaXplX3QgbWludXNlZCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeURpY3RfTWF5YmVVbnRyYWNrKFB5T2JqZWN0ICptcCk7CiBQeUFQSV9GVU5DKGludCkgX1B5RGljdF9IYXNPbmx5U3RyaW5nS2V5cyhQeU9iamVjdCAqbXApOworUHlfc3NpemVfdCBfUHlEaWN0X0tleXNTaXplKFB5RGljdEtleXNPYmplY3QgKmtleXMpOworI2RlZmluZSBfUHlEaWN0X0hhc1NwbGl0VGFibGUoZCkgKChkKS0+bWFfdmFsdWVzICE9IE5VTEwpCisKK1B5QVBJX0ZVTkMoaW50KSBQeURpY3RfQ2xlYXJGcmVlTGlzdCh2b2lkKTsKICNlbmRpZgogCiAvKiBQeURpY3RfVXBkYXRlKG1wLCBvdGhlcikgaXMgZXF1aXZhbGVudCB0byBQeURpY3RfTWVyZ2UobXAsIG90aGVyLCAxKS4gKi8KQEAgLTE1Myw5ICsxMDMsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ZlcnJpZGUpOwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9HZXRJdGVtU3RyaW5nKFB5T2JqZWN0ICpkcCwgY29uc3QgY2hhciAqa2V5KTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9HZXRJdGVtSWQoUHlPYmplY3QgKmRwLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSk7CiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X1NldEl0ZW1TdHJpbmcoUHlPYmplY3QgKmRwLCBjb25zdCBjaGFyICprZXksIFB5T2JqZWN0ICppdGVtKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlEaWN0X1NldEl0ZW1JZChQeU9iamVjdCAqZHAsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5LCBQeU9iamVjdCAqaXRlbSk7CiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X0RlbEl0ZW1TdHJpbmcoUHlPYmplY3QgKmRwLCBjb25zdCBjaGFyICprZXkpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitpbnQgX1B5T2JqZWN0RGljdF9TZXRJdGVtKFB5VHlwZU9iamVjdCAqdHAsIFB5T2JqZWN0ICoqZGljdHB0ciwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICp2YWx1ZSk7CitQeU9iamVjdCAqX1B5RGljdF9Mb2FkR2xvYmFsKFB5RGljdE9iamVjdCAqLCBQeURpY3RPYmplY3QgKiwgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKHZvaWQpIF9QeURpY3RfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpOworI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL2R0b2EuaCBiL0luY2x1ZGUvZHRvYS5oCmluZGV4IDgxOWJkMGYuLjliZmI2MjUgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZHRvYS5oCisrKyBiL0luY2x1ZGUvZHRvYS5oCkBAIC04LDYgKzgsOCBAQAogUHlBUElfRlVOQyhjaGFyICopIF9QeV9kZ19kdG9hKGRvdWJsZSBkLCBpbnQgbW9kZSwgaW50IG5kaWdpdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmRlY3B0LCBpbnQgKnNpZ24sIGNoYXIgKipydmUpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlfZGdfZnJlZWR0b2EoY2hhciAqcyk7CitQeUFQSV9GVU5DKGRvdWJsZSkgX1B5X2RnX3N0ZG5hbihpbnQgc2lnbik7CitQeUFQSV9GVU5DKGRvdWJsZSkgX1B5X2RnX2luZmluaXR5KGludCBzaWduKTsKIAogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZXJyY29kZS5oIGIvSW5jbHVkZS9lcnJjb2RlLmgKaW5kZXggNmJiM2NjMS4uNTk0NjY4NiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9lcnJjb2RlLmgKKysrIGIvSW5jbHVkZS9lcnJjb2RlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNkZWZpbmUgRV9FT0xTCQkyNAkvKiBFT0wgaW4gc2luZ2xlLXF1b3RlZCBzdHJpbmcgKi8KICNkZWZpbmUgRV9MSU5FQ09OVAkyNQkvKiBVbmV4cGVjdGVkIGNoYXJhY3RlcnMgYWZ0ZXIgYSBsaW5lIGNvbnRpbnVhdGlvbiAqLwogI2RlZmluZSBFX0lERU5USUZJRVIgICAgMjYgICAgICAvKiBJbnZhbGlkIGNoYXJhY3RlcnMgaW4gaWRlbnRpZmllciAqLworI2RlZmluZSBFX0JBRFNJTkdMRQkyNwkvKiBJbGwtZm9ybWVkIHNpbmdsZSBzdGF0ZW1lbnQgaW5wdXQgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL2ZpbGV1dGlscy5oIGIvSW5jbHVkZS9maWxldXRpbHMuaAppbmRleCAyZmFkZTliLi43YzE4Y2YyIDEwMDY0NAotLS0gYS9JbmNsdWRlL2ZpbGV1dGlscy5oCisrKyBiL0luY2x1ZGUvZmlsZXV0aWxzLmgKQEAgLTUsNiArNSw4IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9kZXZpY2VfZW5jb2RpbmcoaW50KTsKKwogUHlBUElfRlVOQyh3Y2hhcl90ICopIF9QeV9jaGFyMndjaGFyKAogICAgIGNvbnN0IGNoYXIgKmFyZywKICAgICBzaXplX3QgKnNpemUpOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9mbG9hdG9iamVjdC5oIGIvSW5jbHVkZS9mbG9hdG9iamVjdC5oCmluZGV4IDkwZjBhNDUuLmUyNDBmZGIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZmxvYXRvYmplY3QuaAorKysgYi9JbmNsdWRlL2Zsb2F0b2JqZWN0LmgKQEAgLTI3LDEyICsyNywxMiBAQAogI2RlZmluZSBQeV9SRVRVUk5fTkFOIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoUHlfTkFOKQogI2VuZGlmCiAKLSNkZWZpbmUgUHlfUkVUVVJOX0lORihzaWduKSBkbwkJCQkJXAotCWlmIChjb3B5c2lnbigxLiwgc2lnbikgPT0gMS4pIHsJCQkJXAotCQlyZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKFB5X0hVR0VfVkFMKTsJXAotCX0gZWxzZSB7CQkJCQkJXAotCQlyZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKC1QeV9IVUdFX1ZBTCk7CVwKLQl9IHdoaWxlKDApCisjZGVmaW5lIFB5X1JFVFVSTl9JTkYoc2lnbikgZG8gICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKGNvcHlzaWduKDEuLCBzaWduKSA9PSAxLikgeyAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoUHlfSFVHRV9WQUwpOyAgICBcCisgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoLVB5X0hVR0VfVkFMKTsgICBcCisgICAgfSB3aGlsZSgwKQogCiBQeUFQSV9GVU5DKGRvdWJsZSkgUHlGbG9hdF9HZXRNYXgodm9pZCk7CiBQeUFQSV9GVU5DKGRvdWJsZSkgUHlGbG9hdF9HZXRNaW4odm9pZCk7CkBAIC0xMTAsMTEgKzExMCwxNiBAQAogLyogZnJlZSBsaXN0IGFwaSAqLwogUHlBUElfRlVOQyhpbnQpIFB5RmxvYXRfQ2xlYXJGcmVlTGlzdCh2b2lkKTsKIAorUHlBUElfRlVOQyh2b2lkKSBfUHlGbG9hdF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUqIG91dCk7CisKIC8qIEZvcm1hdCB0aGUgb2JqZWN0IGJhc2VkIG9uIHRoZSBmb3JtYXRfc3BlYywgYXMgZGVmaW5lZCBpbiBQRVAgMzEwMQogICAgKEFkdmFuY2VkIFN0cmluZyBGb3JtYXR0aW5nKS4gKi8KLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RmxvYXRfRm9ybWF0QWR2YW5jZWQoUHlPYmplY3QgKm9iaiwKLQkJCQkJICAgICAgIFB5X1VOSUNPREUgKmZvcm1hdF9zcGVjLAotCQkJCQkgICAgICAgUHlfc3NpemVfdCBmb3JtYXRfc3BlY19sZW4pOworUHlBUElfRlVOQyhpbnQpIF9QeUZsb2F0X0Zvcm1hdEFkdmFuY2VkV3JpdGVyKAorICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYywKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgZW5kKTsKICNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZnJhbWVvYmplY3QuaCBiL0luY2x1ZGUvZnJhbWVvYmplY3QuaAppbmRleCAxZmI2NGJiLi4zM2Y3M2FmIDEwMDY0NAotLS0gYS9JbmNsdWRlL2ZyYW1lb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9mcmFtZW9iamVjdC5oCkBAIC05LDQ1ICs5LDQ1IEBACiAjZW5kaWYKIAogdHlwZWRlZiBzdHJ1Y3QgewotICAgIGludCBiX3R5cGU7CQkJLyogd2hhdCBraW5kIG9mIGJsb2NrIHRoaXMgaXMgKi8KLSAgICBpbnQgYl9oYW5kbGVyOwkJLyogd2hlcmUgdG8ganVtcCB0byBmaW5kIGhhbmRsZXIgKi8KLSAgICBpbnQgYl9sZXZlbDsJCS8qIHZhbHVlIHN0YWNrIGxldmVsIHRvIHBvcCB0byAqLworICAgIGludCBiX3R5cGU7ICAgICAgICAgICAgICAgICAvKiB3aGF0IGtpbmQgb2YgYmxvY2sgdGhpcyBpcyAqLworICAgIGludCBiX2hhbmRsZXI7ICAgICAgICAgICAgICAvKiB3aGVyZSB0byBqdW1wIHRvIGZpbmQgaGFuZGxlciAqLworICAgIGludCBiX2xldmVsOyAgICAgICAgICAgICAgICAvKiB2YWx1ZSBzdGFjayBsZXZlbCB0byBwb3AgdG8gKi8KIH0gUHlUcnlCbG9jazsKIAogdHlwZWRlZiBzdHJ1Y3QgX2ZyYW1lIHsKICAgICBQeU9iamVjdF9WQVJfSEVBRAotICAgIHN0cnVjdCBfZnJhbWUgKmZfYmFjazsJLyogcHJldmlvdXMgZnJhbWUsIG9yIE5VTEwgKi8KLSAgICBQeUNvZGVPYmplY3QgKmZfY29kZTsJLyogY29kZSBzZWdtZW50ICovCi0gICAgUHlPYmplY3QgKmZfYnVpbHRpbnM7CS8qIGJ1aWx0aW4gc3ltYm9sIHRhYmxlIChQeURpY3RPYmplY3QpICovCi0gICAgUHlPYmplY3QgKmZfZ2xvYmFsczsJLyogZ2xvYmFsIHN5bWJvbCB0YWJsZSAoUHlEaWN0T2JqZWN0KSAqLwotICAgIFB5T2JqZWN0ICpmX2xvY2FsczsJCS8qIGxvY2FsIHN5bWJvbCB0YWJsZSAoYW55IG1hcHBpbmcpICovCi0gICAgUHlPYmplY3QgKipmX3ZhbHVlc3RhY2s7CS8qIHBvaW50cyBhZnRlciB0aGUgbGFzdCBsb2NhbCAqLworICAgIHN0cnVjdCBfZnJhbWUgKmZfYmFjazsgICAgICAvKiBwcmV2aW91cyBmcmFtZSwgb3IgTlVMTCAqLworICAgIFB5Q29kZU9iamVjdCAqZl9jb2RlOyAgICAgICAvKiBjb2RlIHNlZ21lbnQgKi8KKyAgICBQeU9iamVjdCAqZl9idWlsdGluczsgICAgICAgLyogYnVpbHRpbiBzeW1ib2wgdGFibGUgKFB5RGljdE9iamVjdCkgKi8KKyAgICBQeU9iamVjdCAqZl9nbG9iYWxzOyAgICAgICAgLyogZ2xvYmFsIHN5bWJvbCB0YWJsZSAoUHlEaWN0T2JqZWN0KSAqLworICAgIFB5T2JqZWN0ICpmX2xvY2FsczsgICAgICAgICAvKiBsb2NhbCBzeW1ib2wgdGFibGUgKGFueSBtYXBwaW5nKSAqLworICAgIFB5T2JqZWN0ICoqZl92YWx1ZXN0YWNrOyAgICAvKiBwb2ludHMgYWZ0ZXIgdGhlIGxhc3QgbG9jYWwgKi8KICAgICAvKiBOZXh0IGZyZWUgc2xvdCBpbiBmX3ZhbHVlc3RhY2suICBGcmFtZSBjcmVhdGlvbiBzZXRzIHRvIGZfdmFsdWVzdGFjay4KICAgICAgICBGcmFtZSBldmFsdWF0aW9uIHVzdWFsbHkgTlVMTHMgaXQsIGJ1dCBhIGZyYW1lIHRoYXQgeWllbGRzIHNldHMgaXQKICAgICAgICB0byB0aGUgY3VycmVudCBzdGFjayB0b3AuICovCiAgICAgUHlPYmplY3QgKipmX3N0YWNrdG9wOwotICAgIFB5T2JqZWN0ICpmX3RyYWNlOwkJLyogVHJhY2UgZnVuY3Rpb24gKi8KKyAgICBQeU9iamVjdCAqZl90cmFjZTsgICAgICAgICAgLyogVHJhY2UgZnVuY3Rpb24gKi8KIAotCS8qIEluIGEgZ2VuZXJhdG9yLCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gc3dhcCBiZXR3ZWVuIHRoZSBleGNlcHRpb24KLQkgICBzdGF0ZSBpbnNpZGUgdGhlIGdlbmVyYXRvciBhbmQgdGhlIGV4Y2VwdGlvbiBzdGF0ZSBvZiB0aGUgY2FsbGluZwotCSAgIGZyYW1lICh3aGljaCBzaG91bGRuJ3QgYmUgaW1wYWN0ZWQgd2hlbiB0aGUgZ2VuZXJhdG9yICJ5aWVsZHMiCi0JICAgZnJvbSBhbiBleGNlcHQgaGFuZGxlcikuCi0JICAgVGhlc2UgdGhyZWUgZmllbGRzIGV4aXN0IGV4YWN0bHkgZm9yIHRoYXQsIGFuZCBhcmUgdW51c2VkIGZvcgotCSAgIG5vbi1nZW5lcmF0b3IgZnJhbWVzLiBTZWUgdGhlIFNBVkVfRVhDX1NUQVRFIGFuZCBTV0FQX0VYQ19TVEFURQotCSAgIG1hY3JvcyBpbiBjZXZhbC5jIGZvciBkZXRhaWxzIG9mIHRoZWlyIHVzZS4gKi8KKyAgICAgICAgLyogSW4gYSBnZW5lcmF0b3IsIHdlIG5lZWQgdG8gYmUgYWJsZSB0byBzd2FwIGJldHdlZW4gdGhlIGV4Y2VwdGlvbgorICAgICAgICAgICBzdGF0ZSBpbnNpZGUgdGhlIGdlbmVyYXRvciBhbmQgdGhlIGV4Y2VwdGlvbiBzdGF0ZSBvZiB0aGUgY2FsbGluZworICAgICAgICAgICBmcmFtZSAod2hpY2ggc2hvdWxkbid0IGJlIGltcGFjdGVkIHdoZW4gdGhlIGdlbmVyYXRvciAieWllbGRzIgorICAgICAgICAgICBmcm9tIGFuIGV4Y2VwdCBoYW5kbGVyKS4KKyAgICAgICAgICAgVGhlc2UgdGhyZWUgZmllbGRzIGV4aXN0IGV4YWN0bHkgZm9yIHRoYXQsIGFuZCBhcmUgdW51c2VkIGZvcgorICAgICAgICAgICBub24tZ2VuZXJhdG9yIGZyYW1lcy4gU2VlIHRoZSBzYXZlX2V4Y19zdGF0ZSBhbmQgc3dhcF9leGNfc3RhdGUKKyAgICAgICAgICAgZnVuY3Rpb25zIGluIGNldmFsLmMgZm9yIGRldGFpbHMgb2YgdGhlaXIgdXNlLiAqLwogICAgIFB5T2JqZWN0ICpmX2V4Y190eXBlLCAqZl9leGNfdmFsdWUsICpmX2V4Y190cmFjZWJhY2s7CiAKICAgICBQeVRocmVhZFN0YXRlICpmX3RzdGF0ZTsKLSAgICBpbnQgZl9sYXN0aTsJCS8qIExhc3QgaW5zdHJ1Y3Rpb24gaWYgY2FsbGVkICovCisgICAgaW50IGZfbGFzdGk7ICAgICAgICAgICAgICAgIC8qIExhc3QgaW5zdHJ1Y3Rpb24gaWYgY2FsbGVkICovCiAgICAgLyogQ2FsbCBQeUZyYW1lX0dldExpbmVOdW1iZXIoKSBpbnN0ZWFkIG9mIHJlYWRpbmcgdGhpcyBmaWVsZAogICAgICAgIGRpcmVjdGx5LiAgQXMgb2YgMi4zIGZfbGluZW5vIGlzIG9ubHkgdmFsaWQgd2hlbiB0cmFjaW5nIGlzCiAgICAgICAgYWN0aXZlIChpLmUuIHdoZW4gZl90cmFjZSBpcyBzZXQpLiAgQXQgb3RoZXIgdGltZXMgd2UgdXNlCiAgICAgICAgUHlDb2RlX0FkZHIyTGluZSB0byBjYWxjdWxhdGUgdGhlIGxpbmUgZnJvbSB0aGUgY3VycmVudAogICAgICAgIGJ5dGVjb2RlIGluZGV4LiAqLwotICAgIGludCBmX2xpbmVubzsJCS8qIEN1cnJlbnQgbGluZSBudW1iZXIgKi8KLSAgICBpbnQgZl9pYmxvY2s7CQkvKiBpbmRleCBpbiBmX2Jsb2Nrc3RhY2sgKi8KKyAgICBpbnQgZl9saW5lbm87ICAgICAgICAgICAgICAgLyogQ3VycmVudCBsaW5lIG51bWJlciAqLworICAgIGludCBmX2libG9jazsgICAgICAgICAgICAgICAvKiBpbmRleCBpbiBmX2Jsb2Nrc3RhY2sgKi8KICAgICBQeVRyeUJsb2NrIGZfYmxvY2tzdGFja1tDT19NQVhCTE9DS1NdOyAvKiBmb3IgdHJ5IGFuZCBsb29wIGJsb2NrcyAqLwotICAgIFB5T2JqZWN0ICpmX2xvY2Fsc3BsdXNbMV07CS8qIGxvY2FscytzdGFjaywgZHluYW1pY2FsbHkgc2l6ZWQgKi8KKyAgICBQeU9iamVjdCAqZl9sb2NhbHNwbHVzWzFdOyAgLyogbG9jYWxzK3N0YWNrLCBkeW5hbWljYWxseSBzaXplZCAqLwogfSBQeUZyYW1lT2JqZWN0OwogCiAKQEAgLTc5LDYgKzc5LDggQEAKIAogUHlBUElfRlVOQyhpbnQpIFB5RnJhbWVfQ2xlYXJGcmVlTGlzdCh2b2lkKTsKIAorUHlBUElfRlVOQyh2b2lkKSBfUHlGcmFtZV9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCk7CisKIC8qIFJldHVybiB0aGUgbGluZSBvZiBjb2RlIHRoZSBmcmFtZSBpcyBjdXJyZW50bHkgZXhlY3V0aW5nLiAqLwogUHlBUElfRlVOQyhpbnQpIFB5RnJhbWVfR2V0TGluZU51bWJlcihQeUZyYW1lT2JqZWN0ICopOwogCmRpZmYgLS1naXQgYS9JbmNsdWRlL2Z1bmNvYmplY3QuaCBiL0luY2x1ZGUvZnVuY29iamVjdC5oCmluZGV4IDUyMWQ4N2IuLmNjMTQyNmMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZnVuY29iamVjdC5oCisrKyBiL0luY2x1ZGUvZnVuY29iamVjdC5oCkBAIC0zMSw2ICszMSw3IEBACiAgICAgUHlPYmplY3QgKmZ1bmNfd2Vha3JlZmxpc3Q7CS8qIExpc3Qgb2Ygd2VhayByZWZlcmVuY2VzICovCiAgICAgUHlPYmplY3QgKmZ1bmNfbW9kdWxlOwkvKiBUaGUgX19tb2R1bGVfXyBhdHRyaWJ1dGUsIGNhbiBiZSBhbnl0aGluZyAqLwogICAgIFB5T2JqZWN0ICpmdW5jX2Fubm90YXRpb25zOwkvKiBBbm5vdGF0aW9ucywgYSBkaWN0IG9yIE5VTEwgKi8KKyAgICBQeU9iamVjdCAqZnVuY19xdWFsbmFtZTsgICAgLyogVGhlIHF1YWxpZmllZCBuYW1lICovCiAKICAgICAvKiBJbnZhcmlhbnQ6CiAgICAgICogICAgIGZ1bmNfY2xvc3VyZSBjb250YWlucyB0aGUgYmluZGluZ3MgZm9yIGZ1bmNfY29kZS0+Y29fZnJlZXZhcnMsIHNvCkBAIC00NCw2ICs0NSw3IEBACiAjZGVmaW5lIFB5RnVuY3Rpb25fQ2hlY2sob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlGdW5jdGlvbl9UeXBlKQogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RnVuY3Rpb25fTmV3KFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZShQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlGdW5jdGlvbl9HZXRDb2RlKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUZ1bmN0aW9uX0dldEdsb2JhbHMoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RnVuY3Rpb25fR2V0TW9kdWxlKFB5T2JqZWN0ICopOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9nZW5vYmplY3QuaCBiL0luY2x1ZGUvZ2Vub2JqZWN0LmgKaW5kZXggZDI5ZmIxZS4uZWQ0NTFiYSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9nZW5vYmplY3QuaAorKysgYi9JbmNsdWRlL2dlbm9iamVjdC5oCkBAIC0xMSwyMCArMTEsMjAgQEAKIHN0cnVjdCBfZnJhbWU7IC8qIEF2b2lkIGluY2x1ZGluZyBmcmFtZW9iamVjdC5oICovCiAKIHR5cGVkZWYgc3RydWN0IHsKLQlQeU9iamVjdF9IRUFECi0JLyogVGhlIGdpXyBwcmVmaXggaXMgaW50ZW5kZWQgdG8gcmVtaW5kIG9mIGdlbmVyYXRvci1pdGVyYXRvci4gKi8KKyAgICBQeU9iamVjdF9IRUFECisgICAgLyogVGhlIGdpXyBwcmVmaXggaXMgaW50ZW5kZWQgdG8gcmVtaW5kIG9mIGdlbmVyYXRvci1pdGVyYXRvci4gKi8KIAotCS8qIE5vdGU6IGdpX2ZyYW1lIGNhbiBiZSBOVUxMIGlmIHRoZSBnZW5lcmF0b3IgaXMgImZpbmlzaGVkIiAqLwotCXN0cnVjdCBfZnJhbWUgKmdpX2ZyYW1lOworICAgIC8qIE5vdGU6IGdpX2ZyYW1lIGNhbiBiZSBOVUxMIGlmIHRoZSBnZW5lcmF0b3IgaXMgImZpbmlzaGVkIiAqLworICAgIHN0cnVjdCBfZnJhbWUgKmdpX2ZyYW1lOwogCi0JLyogVHJ1ZSBpZiBnZW5lcmF0b3IgaXMgYmVpbmcgZXhlY3V0ZWQuICovCi0JaW50IGdpX3J1bm5pbmc7Ci0gICAgCi0JLyogVGhlIGNvZGUgb2JqZWN0IGJhY2tpbmcgdGhlIGdlbmVyYXRvciAqLwotCVB5T2JqZWN0ICpnaV9jb2RlOworICAgIC8qIFRydWUgaWYgZ2VuZXJhdG9yIGlzIGJlaW5nIGV4ZWN1dGVkLiAqLworICAgIGNoYXIgZ2lfcnVubmluZzsKIAotCS8qIExpc3Qgb2Ygd2VhayByZWZlcmVuY2UuICovCi0JUHlPYmplY3QgKmdpX3dlYWtyZWZsaXN0OworICAgIC8qIFRoZSBjb2RlIG9iamVjdCBiYWNraW5nIHRoZSBnZW5lcmF0b3IgKi8KKyAgICBQeU9iamVjdCAqZ2lfY29kZTsKKworICAgIC8qIExpc3Qgb2Ygd2VhayByZWZlcmVuY2UuICovCisgICAgUHlPYmplY3QgKmdpX3dlYWtyZWZsaXN0OwogfSBQeUdlbk9iamVjdDsKIAogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5R2VuX1R5cGU7CkBAIC0zNCw2ICszNCw4IEBACiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlHZW5fTmV3KHN0cnVjdCBfZnJhbWUgKik7CiBQeUFQSV9GVU5DKGludCkgUHlHZW5fTmVlZHNGaW5hbGl6aW5nKFB5R2VuT2JqZWN0ICopOworUHlBUElfRlVOQyhpbnQpIF9QeUdlbl9GZXRjaFN0b3BJdGVyYXRpb25WYWx1ZShQeU9iamVjdCAqKik7CitQeU9iamVjdCAqX1B5R2VuX1NlbmQoUHlHZW5PYmplY3QgKiwgUHlPYmplY3QgKik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ncmFtaW5pdC5oIGIvSW5jbHVkZS9ncmFtaW5pdC5oCmluZGV4IGUwZTI3ZjkuLjNlYzk0OWEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZ3JhbWluaXQuaAorKysgYi9JbmNsdWRlL2dyYW1pbml0LmgKQEAgLTgxLDMgKzgxLDQgQEAKICNkZWZpbmUgY29tcF9pZiAzMzQKICNkZWZpbmUgZW5jb2RpbmdfZGVjbCAzMzUKICNkZWZpbmUgeWllbGRfZXhwciAzMzYKKyNkZWZpbmUgeWllbGRfYXJnIDMzNwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9pbXBvcnQuaCBiL0luY2x1ZGUvaW1wb3J0LmgKaW5kZXggNDAwZTk3Yy4uZmRjMjczMyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9pbXBvcnQuaAorKysgYi9JbmNsdWRlL2ltcG9ydC5oCkBAIC03LDYgKzcsOSBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorUHlBUElfRlVOQyh2b2lkKSBfUHlJbXBvcnRaaXBfSW5pdCh2b2lkKTsKKworUHlNT0RJTklUX0ZVTkMgUHlJbml0X2ltcCh2b2lkKTsKIFB5QVBJX0ZVTkMobG9uZykgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIodm9pZCk7CiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlJbXBvcnRfR2V0TWFnaWNUYWcodm9pZCk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlKApAQCAtMjQsNyArMjcsMTYgQEAKICAgICBjaGFyICpwYXRobmFtZSwgICAgICAgICAgICAgLyogZGVjb2RlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nICovCiAgICAgY2hhciAqY3BhdGhuYW1lICAgICAgICAgICAgIC8qIGRlY29kZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyAqLwogICAgICk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KAorICAgIFB5T2JqZWN0ICpuYW1lLAorICAgIFB5T2JqZWN0ICpjbywKKyAgICBQeU9iamVjdCAqcGF0aG5hbWUsCisgICAgUHlPYmplY3QgKmNwYXRobmFtZQorICAgICk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0dldE1vZHVsZURpY3Qodm9pZCk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdCgKKyAgICBQeU9iamVjdCAqbmFtZQorICAgICk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0FkZE1vZHVsZSgKICAgICBjb25zdCBjaGFyICpuYW1lICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwpAQCAtMzUsNyArNDcsMTQgQEAKICAgICBjb25zdCBjaGFyICpuYW1lICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbCgKLSAgICBjaGFyICpuYW1lLCAgICAgICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KKyAgICBjb25zdCBjaGFyICpuYW1lLCAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KKyAgICBQeU9iamVjdCAqZ2xvYmFscywKKyAgICBQeU9iamVjdCAqbG9jYWxzLAorICAgIFB5T2JqZWN0ICpmcm9tbGlzdCwKKyAgICBpbnQgbGV2ZWwKKyAgICApOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdCgKKyAgICBQeU9iamVjdCAqbmFtZSwKICAgICBQeU9iamVjdCAqZ2xvYmFscywKICAgICBQeU9iamVjdCAqbG9jYWxzLAogICAgIFB5T2JqZWN0ICpmcm9tbGlzdCwKQEAgLTQzLDEyICs2MiwxNSBAQAogICAgICk7CiAKICNkZWZpbmUgUHlJbXBvcnRfSW1wb3J0TW9kdWxlRXgobiwgZywgbCwgZikgXAotICAgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsKG4sIGcsIGwsIGYsIC0xKQorICAgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsKG4sIGcsIGwsIGYsIDApCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfR2V0SW1wb3J0ZXIoUHlPYmplY3QgKnBhdGgpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9JbXBvcnQoUHlPYmplY3QgKm5hbWUpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9SZWxvYWRNb2R1bGUoUHlPYmplY3QgKm0pOwogUHlBUElfRlVOQyh2b2lkKSBQeUltcG9ydF9DbGVhbnVwKHZvaWQpOworUHlBUElfRlVOQyhpbnQpIFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZU9iamVjdCgKKyAgICBQeU9iamVjdCAqbmFtZQorICAgICk7CiBQeUFQSV9GVU5DKGludCkgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlKAogICAgIGNoYXIgKm5hbWUgICAgICAgICAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLwogICAgICk7CkBAIC02NSwxNyArODcsMTcgQEAKIFB5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0X1JlSW5pdExvY2sodm9pZCk7CiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKilfUHlJbXBvcnRfRmluZEJ1aWx0aW4oCi0gICAgY2hhciAqbmFtZSAgICAgICAgICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCisgICAgY29uc3QgY2hhciAqbmFtZSAgICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCiAgICAgKTsKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKilfUHlJbXBvcnRfRmluZEV4dGVuc2lvblVuaWNvZGUoY2hhciAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKilfUHlJbXBvcnRfRmluZEV4dGVuc2lvbk9iamVjdChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KV9QeUltcG9ydF9GaXh1cEJ1aWx0aW4oCiAgICAgUHlPYmplY3QgKm1vZCwKICAgICBjaGFyICpuYW1lICAgICAgICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwotUHlBUElfRlVOQyhpbnQpX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uVW5pY29kZShQeU9iamVjdCosIGNoYXIgKiwgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKGludClfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QoUHlPYmplY3QqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAogc3RydWN0IF9pbml0dGFiIHsKLSAgICBjaGFyICpuYW1lOworICAgIGNoYXIgKm5hbWU7ICAgICAgICAgICAgICAgICAvKiBBU0NJSSBlbmNvZGVkIHN0cmluZyAqLwogICAgIFB5T2JqZWN0KiAoKmluaXRmdW5jKSh2b2lkKTsKIH07CiBQeUFQSV9EQVRBKHN0cnVjdCBfaW5pdHRhYiAqKSBQeUltcG9ydF9Jbml0dGFiOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9pbnRyY2hlY2suaCBiL0luY2x1ZGUvaW50cmNoZWNrLmgKaW5kZXggM2I2N2VkMC4uZjUzZmVlMSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9pbnRyY2hlY2suaAorKysgYi9JbmNsdWRlL2ludHJjaGVjay5oCkBAIC04LDYgKzgsMTIgQEAKIFB5QVBJX0ZVTkMoaW50KSBQeU9TX0ludGVycnVwdE9jY3VycmVkKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeU9TX0luaXRJbnRlcnJ1cHRzKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeU9TX0FmdGVyRm9yayh2b2lkKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlPU19Jc01haW5UaHJlYWQodm9pZCk7CisKKyNpZmRlZiBNU19XSU5ET1dTCisvKiB3aW5kb3dzLmggaXMgbm90IGluY2x1ZGVkIGJ5IFB5dGhvbi5oIHNvIHVzZSB2b2lkKiBpbnN0ZWFkIG9mIEhBTkRMRSAqLworUHlBUElfRlVOQyh2b2lkKikgX1B5T1NfU2lnaW50RXZlbnQodm9pZCk7CisjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL2xpc3RvYmplY3QuaCBiL0luY2x1ZGUvbGlzdG9iamVjdC5oCmluZGV4IDk0OWIxYTMuLmRjNjJhZWUgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbGlzdG9iamVjdC5oCisrKyBiL0luY2x1ZGUvbGlzdG9iamVjdC5oCkBAIC02Miw2ICs2Miw5IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TGlzdF9Bc1R1cGxlKFB5T2JqZWN0ICopOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlMaXN0X0V4dGVuZChQeUxpc3RPYmplY3QgKiwgUHlPYmplY3QgKik7CisKK1B5QVBJX0ZVTkMoaW50KSBQeUxpc3RfQ2xlYXJGcmVlTGlzdCh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5TGlzdF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCk7CiAjZW5kaWYKIAogLyogTWFjcm8sIHRyYWRpbmcgc2FmZXR5IGZvciBzcGVlZCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9sb25naW50cmVwci5oIGIvSW5jbHVkZS9sb25naW50cmVwci5oCmluZGV4IGI5NGY3YjIuLjNhNDViYWQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbG9uZ2ludHJlcHIuaAorKysgYi9JbmNsdWRlL2xvbmdpbnRyZXByLmgKQEAgLTYsNyArNiw3IEBACiAjZW5kaWYKIAogCi0vKiBUaGlzIGlzIHB1Ymxpc2hlZCBmb3IgdGhlIGJlbmVmaXQgb2YgImZyaWVuZCIgbWFyc2hhbC5jIG9ubHkuICovCisvKiBUaGlzIGlzIHB1Ymxpc2hlZCBmb3IgdGhlIGJlbmVmaXQgb2YgImZyaWVuZHMiIG1hcnNoYWwuYyBhbmQgX2RlY2ltYWwuYy4gKi8KIAogLyogUGFyYW1ldGVycyBvZiB0aGUgbG9uZyBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uLiAgVGhlcmUgYXJlIHR3byBkaWZmZXJlbnQKICAgIHNldHMgb2YgcGFyYW1ldGVyczogb25lIHNldCBmb3IgMzAtYml0IGRpZ2l0cywgc3RvcmVkIGluIGFuIHVuc2lnbmVkIDMyLWJpdApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9sb25nb2JqZWN0LmggYi9JbmNsdWRlL2xvbmdvYmplY3QuaAppbmRleCA1ZjhiMTc4Li5jZDBjZjMwIDEwMDY0NAotLS0gYS9JbmNsdWRlL2xvbmdvYmplY3QuaAorKysgYi9JbmNsdWRlL2xvbmdvYmplY3QuaApAQCAtMTIsNyArMTIsNyBAQAogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5TG9uZ19UeXBlOwogCiAjZGVmaW5lIFB5TG9uZ19DaGVjayhvcCkgXAotCQlQeVR5cGVfRmFzdFN1YmNsYXNzKFB5X1RZUEUob3ApLCBQeV9UUEZMQUdTX0xPTkdfU1VCQ0xBU1MpCisgICAgICAgIFB5VHlwZV9GYXN0U3ViY2xhc3MoUHlfVFlQRShvcCksIFB5X1RQRkxBR1NfTE9OR19TVUJDTEFTUykKICNkZWZpbmUgUHlMb25nX0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlMb25nX1R5cGUpCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21Mb25nKGxvbmcpOwpAQCAtODMsNiArODMsNyBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbVN0cmluZyhjaGFyICosIGNoYXIgKiosIGludCk7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tVW5pY29kZShQeV9VTklDT0RFKiwgUHlfc3NpemVfdCwgaW50KTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21Vbmljb2RlT2JqZWN0KFB5T2JqZWN0ICp1LCBpbnQgYmFzZSk7CiAjZW5kaWYKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQpAQCAtMTI0LDggKzEyNSw4IEBACiAgICAgIGVub3VnaCBtZW1vcnkgdG8gY3JlYXRlIHRoZSBQeXRob24gbG9uZy4KICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUxvbmdfRnJvbUJ5dGVBcnJheSgKLQljb25zdCB1bnNpZ25lZCBjaGFyKiBieXRlcywgc2l6ZV90IG4sCi0JaW50IGxpdHRsZV9lbmRpYW4sIGludCBpc19zaWduZWQpOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJ5dGVzLCBzaXplX3QgbiwKKyAgICBpbnQgbGl0dGxlX2VuZGlhbiwgaW50IGlzX3NpZ25lZCk7CiAKIC8qIF9QeUxvbmdfQXNCeXRlQXJyYXk6IENvbnZlcnQgdGhlIGxlYXN0LXNpZ25pZmljYW50IDgqbiBiaXRzIG9mIGxvbmcKICAgIHYgdG8gYSBiYXNlLTI1NiBpbnRlZ2VyLCBzdG9yZWQgaW4gYXJyYXkgYnl0ZXMuICBOb3JtYWxseSByZXR1cm4gMCwKQEAgLTE0NywxOSArMTQ4LDI4IEBACiAgICAgIGNhc2UsIGJ1dCBieXRlcyBob2xkcyB0aGUgbGVhc3Qtc2lnbmZpY2FudCBuIGJ5dGVzIG9mIHRoZSB0cnVlIHZhbHVlLgogKi8KIFB5QVBJX0ZVTkMoaW50KSBfUHlMb25nX0FzQnl0ZUFycmF5KFB5TG9uZ09iamVjdCogdiwKLQl1bnNpZ25lZCBjaGFyKiBieXRlcywgc2l6ZV90IG4sCi0JaW50IGxpdHRsZV9lbmRpYW4sIGludCBpc19zaWduZWQpOworICAgIHVuc2lnbmVkIGNoYXIqIGJ5dGVzLCBzaXplX3QgbiwKKyAgICBpbnQgbGl0dGxlX2VuZGlhbiwgaW50IGlzX3NpZ25lZCk7CiAKIAogLyogX1B5TG9uZ19Gb3JtYXQ6IENvbnZlcnQgdGhlIGxvbmcgdG8gYSBzdHJpbmcgb2JqZWN0IHdpdGggZ2l2ZW4gYmFzZSwKICAgIGFwcGVuZGluZyBhIGJhc2UgcHJlZml4IG9mIDBbYm94XSBpZiBiYXNlIGlzIDIsIDggb3IgMTYuICovCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUxvbmdfRm9ybWF0KFB5T2JqZWN0ICphYSwgaW50IGJhc2UpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlMb25nX0Zvcm1hdChQeU9iamVjdCAqb2JqLCBpbnQgYmFzZSk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlMb25nX0Zvcm1hdFdyaXRlcigKKyAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICBpbnQgYmFzZSwKKyAgICBpbnQgYWx0ZXJuYXRlKTsKIAogLyogRm9ybWF0IHRoZSBvYmplY3QgYmFzZWQgb24gdGhlIGZvcm1hdF9zcGVjLCBhcyBkZWZpbmVkIGluIFBFUCAzMTAxCiAgICAoQWR2YW5jZWQgU3RyaW5nIEZvcm1hdHRpbmcpLiAqLwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlMb25nX0Zvcm1hdEFkdmFuY2VkKFB5T2JqZWN0ICpvYmosCi0JCQkJCSAgICAgIFB5X1VOSUNPREUgKmZvcm1hdF9zcGVjLAotCQkJCQkgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbik7CitQeUFQSV9GVU5DKGludCkgX1B5TG9uZ19Gb3JtYXRBZHZhbmNlZFdyaXRlcigKKyAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGVuZCk7CiAjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogLyogVGhlc2UgYXJlbid0IHJlYWxseSBwYXJ0IG9mIHRoZSBsb25nIG9iamVjdCwgYnV0IHRoZXkncmUgaGFuZHkuIFRoZQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tZW1vcnlvYmplY3QuaCBiL0luY2x1ZGUvbWVtb3J5b2JqZWN0LmgKaW5kZXggNjJlY2JkNi4uYzJlMTE5NCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tZW1vcnlvYmplY3QuaAorKysgYi9JbmNsdWRlL21lbW9yeW9iamVjdC5oCkBAIC02LDY5ICs2LDY1IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgX1B5TWFuYWdlZEJ1ZmZlcl9UeXBlOworI2VuZGlmCiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlNZW1vcnlWaWV3X1R5cGU7CiAKICNkZWZpbmUgUHlNZW1vcnlWaWV3X0NoZWNrKG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5TWVtb3J5Vmlld19UeXBlKQogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCi0vKiBHZXQgYSBwb2ludGVyIHRvIHRoZSB1bmRlcmx5aW5nIFB5X2J1ZmZlciBvZiBhIG1lbW9yeXZpZXcgb2JqZWN0LiAqLworLyogR2V0IGEgcG9pbnRlciB0byB0aGUgbWVtb3J5dmlldydzIHByaXZhdGUgY29weSBvZiB0aGUgZXhwb3J0ZXIncyBidWZmZXIuICovCiAjZGVmaW5lIFB5TWVtb3J5Vmlld19HRVRfQlVGRkVSKG9wKSAoJigoUHlNZW1vcnlWaWV3T2JqZWN0ICopKG9wKSktPnZpZXcpCi0vKiBHZXQgYSBwb2ludGVyIHRvIHRoZSBQeU9iamVjdCBmcm9tIHdoaWNoIG9yaWdpbmF0ZXMgYSBtZW1vcnl2aWV3IG9iamVjdC4gKi8KKy8qIEdldCBhIHBvaW50ZXIgdG8gdGhlIGV4cG9ydGluZyBvYmplY3QgKHRoaXMgbWF5IGJlIE5VTEwhKS4gKi8KICNkZWZpbmUgUHlNZW1vcnlWaWV3X0dFVF9CQVNFKG9wKSAoKChQeU1lbW9yeVZpZXdPYmplY3QgKikob3ApKS0+dmlldy5vYmopCiAjZW5kaWYKIAotCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzKFB5T2JqZWN0ICpiYXNlLCAKLQkJCQkJCSAgaW50IGJ1ZmZlcnR5cGUsIAotCQkJCQkJICBjaGFyIGZvcnQpOwotCi0gICAgLyogUmV0dXJuIGEgY29udGlndW91cyBjaHVuayBvZiBtZW1vcnkgcmVwcmVzZW50aW5nIHRoZSBidWZmZXIKLSAgICAgICBmcm9tIGFuIG9iamVjdCBpbiBhIG1lbW9yeSB2aWV3IG9iamVjdC4gIElmIGEgY29weSBpcyBtYWRlIHRoZW4gdGhlCi0gICAgICAgYmFzZSBvYmplY3QgZm9yIHRoZSBtZW1vcnkgdmlldyB3aWxsIGJlIGEgKm5ldyogYnl0ZXMgb2JqZWN0LiAKLSAgICAgICAKLSAgICAgICBPdGhlcndpc2UsIHRoZSBiYXNlLW9iamVjdCB3aWxsIGJlIHRoZSBvYmplY3QgaXRzZWxmIGFuZCBubyAKLSAgICAgICBkYXRhLWNvcHlpbmcgd2lsbCBiZSBkb25lLiAKLQotICAgICAgIFRoZSBidWZmZXJ0eXBlIGFyZ3VtZW50IGNhbiBiZSBQeUJVRl9SRUFELCBQeUJVRl9XUklURSwKLSAgICAgICBQeUJVRl9TSEFET1cgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHJldHVybmVkIGJ1ZmZlcgotICAgICAgIHNob3VsZCBiZSBSRUFET05MWSwgV1JJVEFCTEUsIG9yIHNldCB0byB1cGRhdGUgdGhlCi0gICAgICAgb3JpZ2luYWwgYnVmZmVyIGlmIGEgY29weSBtdXN0IGJlIG1hZGUuICBJZiBidWZmZXJ0eXBlIGlzCi0gICAgICAgUHlCVUZfV1JJVEUgYW5kIHRoZSBidWZmZXIgaXMgbm90IGNvbnRpZ3VvdXMgYW4gZXJyb3Igd2lsbAotICAgICAgIGJlIHJhaXNlZC4gIEluIHRoaXMgY2lyY3Vtc3RhbmNlLCB0aGUgdXNlciBjYW4gdXNlCi0gICAgICAgUHlCVUZfU0hBRE9XIHRvIGVuc3VyZSB0aGF0IGEgYSB3cml0YWJsZSB0ZW1wb3JhcnkKLSAgICAgICBjb250aWd1b3VzIGJ1ZmZlciBpcyByZXR1cm5lZC4gIFRoZSBjb250ZW50cyBvZiB0aGlzCi0gICAgICAgY29udGlndW91cyBidWZmZXIgd2lsbCBiZSBjb3BpZWQgYmFjayBpbnRvIHRoZSBvcmlnaW5hbAotICAgICAgIG9iamVjdCBhZnRlciB0aGUgbWVtb3J5dmlldyBvYmplY3QgaXMgZGVsZXRlZCBhcyBsb25nIGFzCi0gICAgICAgdGhlIG9yaWdpbmFsIG9iamVjdCBpcyB3cml0YWJsZSBhbmQgYWxsb3dzIHNldHRpbmcgYW4KLSAgICAgICBleGNsdXNpdmUgd3JpdGUgbG9jay4gSWYgdGhpcyBpcyBub3QgYWxsb3dlZCBieSB0aGUKLSAgICAgICBvcmlnaW5hbCBvYmplY3QsIHRoZW4gYSBCdWZmZXJFcnJvciBpcyByYWlzZWQuCi0gICAgICAgCi0gICAgICAgSWYgdGhlIG9iamVjdCBpcyBtdWx0aS1kaW1lbnNpb25hbCBhbmQgaWYgZm9ydHJhbiBpcyAnRicsCi0gICAgICAgdGhlIGZpcnN0IGRpbWVuc2lvbiBvZiB0aGUgdW5kZXJseWluZyBhcnJheSB3aWxsIHZhcnkgdGhlCi0gICAgICAgZmFzdGVzdCBpbiB0aGUgYnVmZmVyLiAgSWYgZm9ydHJhbiBpcyAnQycsIHRoZW4gdGhlIGxhc3QKLSAgICAgICBkaW1lbnNpb24gd2lsbCB2YXJ5IHRoZSBmYXN0ZXN0IChDLXN0eWxlIGNvbnRpZ3VvdXMpLiAgSWYKLSAgICAgICBmb3J0cmFuIGlzICdBJywgdGhlbiBpdCBkb2VzIG5vdCBtYXR0ZXIgYW5kIHlvdSB3aWxsIGdldAotICAgICAgIHdoYXRldmVyIHRoZSBvYmplY3QgZGVjaWRlcyBpcyBtb3JlIGVmZmljaWVudC4gIAotCi0gICAgICAgQSBuZXcgcmVmZXJlbmNlIGlzIHJldHVybmVkIHRoYXQgbXVzdCBiZSBERUNSRUYnZCB3aGVuIGZpbmlzaGVkLgotICAgICovCi0KIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QoUHlPYmplY3QgKmJhc2UpOwotCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TWVtb3J5Vmlld19Gcm9tTWVtb3J5KGNoYXIgKm1lbSwgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcihQeV9idWZmZXIgKmluZm8pOwotICAgIC8qIGNyZWF0ZSBuZXcgaWYgYnVmcHRyIGlzIE5VTEwgCi0gICAgICAgIHdpbGwgYmUgYSBuZXcgYnl0ZXNvYmplY3QgaW4gYmFzZSAqLwogI2VuZGlmCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzKFB5T2JqZWN0ICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmZmVydHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBvcmRlcik7CiAKIAotLyogVGhlIHN0cnVjdCBpcyBkZWNsYXJlZCBoZXJlIHNvIHRoYXQgbWFjcm9zIGNhbiB3b3JrLCBidXQgaXQgc2hvdWxkbid0Ci0gICBiZSBjb25zaWRlcmVkIHB1YmxpYy4gRG9uJ3QgYWNjZXNzIHRob3NlIGZpZWxkcyBkaXJlY3RseSwgdXNlIHRoZSBtYWNyb3MKKy8qIFRoZSBzdHJ1Y3RzIGFyZSBkZWNsYXJlZCBoZXJlIHNvIHRoYXQgbWFjcm9zIGNhbiB3b3JrLCBidXQgdGhleSBzaG91bGRuJ3QKKyAgIGJlIGNvbnNpZGVyZWQgcHVibGljLiBEb24ndCBhY2Nlc3MgdGhlaXIgZmllbGRzIGRpcmVjdGx5LCB1c2UgdGhlIG1hY3JvcwogICAgYW5kIGZ1bmN0aW9ucyBpbnN0ZWFkISAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorI2RlZmluZSBfUHlfTUFOQUdFRF9CVUZGRVJfUkVMRUFTRUQgICAgMHgwMDEgIC8qIGFjY2VzcyB0byBleHBvcnRlciBibG9ja2VkICovCisjZGVmaW5lIF9QeV9NQU5BR0VEX0JVRkZFUl9GUkVFX0ZPUk1BVCAweDAwMiAgLyogZnJlZSBmb3JtYXQgKi8KIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlfYnVmZmVyIHZpZXc7CisgICAgaW50IGZsYWdzOyAgICAgICAgICAvKiBzdGF0ZSBmbGFncyAqLworICAgIFB5X3NzaXplX3QgZXhwb3J0czsgLyogbnVtYmVyIG9mIGRpcmVjdCBtZW1vcnl2aWV3IGV4cG9ydHMgKi8KKyAgICBQeV9idWZmZXIgbWFzdGVyOyAvKiBzbmFwc2hvdCBidWZmZXIgb2J0YWluZWQgZnJvbSB0aGUgb3JpZ2luYWwgZXhwb3J0ZXIgKi8KK30gX1B5TWFuYWdlZEJ1ZmZlck9iamVjdDsKKworCisvKiBzdGF0aWMgc3RvcmFnZSB1c2VkIGZvciBjYXN0aW5nIGJldHdlZW4gZm9ybWF0cyAqLworI2RlZmluZSBfUHlfTUVNT1JZVklFV19NQVhfRk9STUFUIDMgLyogbXVzdCBiZSA+PSAzICovCisKKy8qIG1lbW9yeXZpZXcgc3RhdGUgZmxhZ3MgKi8KKyNkZWZpbmUgX1B5X01FTU9SWVZJRVdfUkVMRUFTRUQgICAgMHgwMDEgIC8qIGFjY2VzcyB0byBtYXN0ZXIgYnVmZmVyIGJsb2NrZWQgKi8KKyNkZWZpbmUgX1B5X01FTU9SWVZJRVdfQyAgICAgICAgICAgMHgwMDIgIC8qIEMtY29udGlndW91cyBsYXlvdXQgKi8KKyNkZWZpbmUgX1B5X01FTU9SWVZJRVdfRk9SVFJBTiAgICAgMHgwMDQgIC8qIEZvcnRyYW4gY29udGlndW91cyBsYXlvdXQgKi8KKyNkZWZpbmUgX1B5X01FTU9SWVZJRVdfU0NBTEFSICAgICAgMHgwMDggIC8qIHNjYWxhcjogbmRpbSA9IDAgKi8KKyNkZWZpbmUgX1B5X01FTU9SWVZJRVdfUElMICAgICAgICAgMHgwMTAgIC8qIFBJTC1zdHlsZSBsYXlvdXQgKi8KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X1ZBUl9IRUFECisgICAgX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqbWJ1ZjsgLyogbWFuYWdlZCBidWZmZXIgKi8KKyAgICBQeV9oYXNoX3QgaGFzaDsgICAgICAgICAgICAgICAvKiBoYXNoIHZhbHVlIGZvciByZWFkLW9ubHkgdmlld3MgKi8KKyAgICBpbnQgZmxhZ3M7ICAgICAgICAgICAgICAgICAgICAvKiBzdGF0ZSBmbGFncyAqLworICAgIFB5X3NzaXplX3QgZXhwb3J0czsgICAgICAgICAgIC8qIG51bWJlciBvZiBidWZmZXIgcmUtZXhwb3J0cyAqLworICAgIFB5X2J1ZmZlciB2aWV3OyAgICAgICAgICAgICAgIC8qIHByaXZhdGUgY29weSBvZiB0aGUgZXhwb3J0ZXIncyB2aWV3ICovCisgICAgY2hhciBmb3JtYXRbX1B5X01FTU9SWVZJRVdfTUFYX0ZPUk1BVF07IC8qIHVzZWQgZm9yIGNhc3RpbmcgKi8KKyAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CisgICAgUHlfc3NpemVfdCBvYl9hcnJheVsxXTsgICAgICAgLyogc2hhcGUsIHN0cmlkZXMsIHN1Ym9mZnNldHMgKi8KIH0gUHlNZW1vcnlWaWV3T2JqZWN0OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmggYi9JbmNsdWRlL21ldGhvZG9iamVjdC5oCmluZGV4IDdlNjdjMGIuLjNjYzJlYTkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9tZXRob2RvYmplY3QuaApAQCAtMTcsNyArMTcsNyBAQAogCiB0eXBlZGVmIFB5T2JqZWN0ICooKlB5Q0Z1bmN0aW9uKShQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHR5cGVkZWYgUHlPYmplY3QgKigqUHlDRnVuY3Rpb25XaXRoS2V5d29yZHMpKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCi0JCQkJCSAgICAgUHlPYmplY3QgKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKTsKIHR5cGVkZWYgUHlPYmplY3QgKigqUHlOb0FyZ3NGdW5jdGlvbikoUHlPYmplY3QgKik7CiAKIFB5QVBJX0ZVTkMoUHlDRnVuY3Rpb24pIFB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uKFB5T2JqZWN0ICopOwpAQCAtMzAsMjQgKzMwLDI1IEBACiAjZGVmaW5lIFB5Q0Z1bmN0aW9uX0dFVF9GVU5DVElPTihmdW5jKSBcCiAgICAgICAgICgoKFB5Q0Z1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gbV9tbCAtPiBtbF9tZXRoKQogI2RlZmluZSBQeUNGdW5jdGlvbl9HRVRfU0VMRihmdW5jKSBcCi0JKCgoUHlDRnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBtX3NlbGYpCisgICAgICAgICgoKFB5Q0Z1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gbV9tbCAtPiBtbF9mbGFncyAmIE1FVEhfU1RBVElDID8gXAorICAgICAgICAgTlVMTCA6ICgoUHlDRnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBtX3NlbGYpCiAjZGVmaW5lIFB5Q0Z1bmN0aW9uX0dFVF9GTEFHUyhmdW5jKSBcCi0JKCgoUHlDRnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBtX21sIC0+IG1sX2ZsYWdzKQorICAgICAgICAoKChQeUNGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IG1fbWwgLT4gbWxfZmxhZ3MpCiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlDRnVuY3Rpb25fQ2FsbChQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAogc3RydWN0IFB5TWV0aG9kRGVmIHsKLSAgICBjb25zdCBjaGFyCSptbF9uYW1lOwkvKiBUaGUgbmFtZSBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24vbWV0aG9kICovCi0gICAgUHlDRnVuY3Rpb24gIG1sX21ldGg7CS8qIFRoZSBDIGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cyBpdCAqLwotICAgIGludAkJIG1sX2ZsYWdzOwkvKiBDb21iaW5hdGlvbiBvZiBNRVRIX3h4eCBmbGFncywgd2hpY2ggbW9zdGx5Ci0JCQkJICAgZGVzY3JpYmUgdGhlIGFyZ3MgZXhwZWN0ZWQgYnkgdGhlIEMgZnVuYyAqLwotICAgIGNvbnN0IGNoYXIJKm1sX2RvYzsJLyogVGhlIF9fZG9jX18gYXR0cmlidXRlLCBvciBOVUxMICovCisgICAgY29uc3QgY2hhciAgKm1sX25hbWU7ICAgLyogVGhlIG5hbWUgb2YgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uL21ldGhvZCAqLworICAgIFB5Q0Z1bmN0aW9uIG1sX21ldGg7ICAgIC8qIFRoZSBDIGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cyBpdCAqLworICAgIGludCAgICAgICAgIG1sX2ZsYWdzOyAgIC8qIENvbWJpbmF0aW9uIG9mIE1FVEhfeHh4IGZsYWdzLCB3aGljaCBtb3N0bHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmliZSB0aGUgYXJncyBleHBlY3RlZCBieSB0aGUgQyBmdW5jICovCisgICAgY29uc3QgY2hhciAgKm1sX2RvYzsgICAgLyogVGhlIF9fZG9jX18gYXR0cmlidXRlLCBvciBOVUxMICovCiB9OwogdHlwZWRlZiBzdHJ1Y3QgUHlNZXRob2REZWYgUHlNZXRob2REZWY7CiAKICNkZWZpbmUgUHlDRnVuY3Rpb25fTmV3KE1MLCBTRUxGKSBQeUNGdW5jdGlvbl9OZXdFeCgoTUwpLCAoU0VMRiksIE5VTEwpCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q0Z1bmN0aW9uX05ld0V4KFB5TWV0aG9kRGVmICosIFB5T2JqZWN0ICosIAotCQkJCQkgUHlPYmplY3QgKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICopOwogCiAvKiBGbGFnIHBhc3NlZCB0byBuZXdtZXRob2RvYmplY3QgKi8KIC8qICNkZWZpbmUgTUVUSF9PTERBUkdTICAweDAwMDAgICAtLSB1bnN1cHBvcnRlZCBub3cgKi8KQEAgLTgxLDYgKzgyLDExIEBACiAKIFB5QVBJX0ZVTkMoaW50KSBQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0KHZvaWQpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKHZvaWQpIF9QeUNGdW5jdGlvbl9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeU1ldGhvZF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCk7CisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvbW9kc3VwcG9ydC5oIGIvSW5jbHVkZS9tb2RzdXBwb3J0LmgKaW5kZXggYmY2NDc4Zi4uZWNmMWRjYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tb2RzdXBwb3J0LmgKKysrIGIvSW5jbHVkZS9tb2RzdXBwb3J0LmgKQEAgLTIzLDYgKzIzLDggQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChjb25zdCBjaGFyICosIHZhX2xpc3QpOwogI2VuZGlmCiAKKy8qIER1ZSB0byBhIGdsaXRjaCBpbiAzLjIsIHRoZSBfU2l6ZVQgdmVyc2lvbnMgd2VyZW4ndCBleHBvcnRlZCBmcm9tIHRoZSBETEwuICovCisjaWYgIWRlZmluZWQoUFlfU1NJWkVfVF9DTEVBTikgfHwgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzAzMDAwMAogUHlBUElfRlVOQyhpbnQpIFB5QXJnX1BhcnNlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKIFB5QVBJX0ZVTkMoaW50KSBQeUFyZ19QYXJzZVR1cGxlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgLi4uKSBQeV9GT1JNQVRfUEFSU0VUVVBMRShQeUFyZ19QYXJzZVR1cGxlLCAyLCAzKTsKIFB5QVBJX0ZVTkMoaW50KSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKQEAgLTMxLDEzICszMywxNCBAQAogUHlBUElfRlVOQyhpbnQpIFB5QXJnX1VucGFja1R1cGxlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwgUHlfc3NpemVfdCwgLi4uKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlfQnVpbGRWYWx1ZShjb25zdCBjaGFyICosIC4uLik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9CdWlsZFZhbHVlX1NpemVUKGNvbnN0IGNoYXIgKiwgLi4uKTsKKyNlbmRpZgogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19Ob0tleXdvcmRzKGNvbnN0IGNoYXIgKmZ1bmNuYW1lLCBQeU9iamVjdCAqa3cpOwotI2VuZGlmCiAKIFB5QVBJX0ZVTkMoaW50KSBQeUFyZ19WYVBhcnNlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CiBQeUFQSV9GVU5DKGludCkgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBjaGFyICoqLCB2YV9saXN0KTsKKyNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeV9WYUJ1aWxkVmFsdWUoY29uc3QgY2hhciAqLCB2YV9saXN0KTsKIAogUHlBUElfRlVOQyhpbnQpIFB5TW9kdWxlX0FkZE9iamVjdChQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIFB5T2JqZWN0ICopOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tb2R1bGVvYmplY3QuaCBiL0luY2x1ZGUvbW9kdWxlb2JqZWN0LmgKaW5kZXggN2IyYmYxYy4uODAxM2RkOSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tb2R1bGVvYmplY3QuaAorKysgYi9JbmNsdWRlL21vZHVsZW9iamVjdC5oCkBAIC0xMiwxMCArMTIsMTQgQEAKICNkZWZpbmUgUHlNb2R1bGVfQ2hlY2sob3ApIFB5T2JqZWN0X1R5cGVDaGVjayhvcCwgJlB5TW9kdWxlX1R5cGUpCiAjZGVmaW5lIFB5TW9kdWxlX0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlNb2R1bGVfVHlwZSkKIAorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1vZHVsZV9OZXdPYmplY3QoCisgICAgUHlPYmplY3QgKm5hbWUKKyAgICApOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1vZHVsZV9OZXcoCiAgICAgY29uc3QgY2hhciAqbmFtZSAgICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCiAgICAgKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNb2R1bGVfR2V0RGljdChQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNb2R1bGVfR2V0TmFtZU9iamVjdChQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeU1vZHVsZV9HZXROYW1lKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5TW9kdWxlX0dldEZpbGVuYW1lKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdChQeU9iamVjdCAqKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvbmFtZXNwYWNlb2JqZWN0LmggYi9JbmNsdWRlL25hbWVzcGFjZW9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0MTJmMDUKLS0tIC9kZXYvbnVsbAorKysgYi9JbmNsdWRlL25hbWVzcGFjZW9iamVjdC5oCkBAIC0wLDAgKzEsMTcgQEAKKworLyogc2ltcGxlIG5hbWVzcGFjZSBvYmplY3QgaW50ZXJmYWNlICovCisKKyNpZm5kZWYgTkFNRVNQQUNFT0JKRUNUX0gKKyNkZWZpbmUgTkFNRVNQQUNFT0JKRUNUX0gKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIF9QeU5hbWVzcGFjZV9UeXBlOworCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU5hbWVzcGFjZV9OZXcoUHlPYmplY3QgKmt3ZHMpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8qICFOQU1FU1BBQ0VPQkpFQ1RfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ub2RlLmggYi9JbmNsdWRlL25vZGUuaAppbmRleCA5ZjY3NjBjLi45OWMxM2Y3IDEwMDY0NAotLS0gYS9JbmNsdWRlL25vZGUuaAorKysgYi9JbmNsdWRlL25vZGUuaApAQCAtMzEsNiArMzEsNyBAQAogI2RlZmluZSBSQ0hJTEQobiwgaSkJKENISUxEKG4sIE5DSChuKSArIGkpKQogI2RlZmluZSBUWVBFKG4pCQkoKG4pLT5uX3R5cGUpCiAjZGVmaW5lIFNUUihuKQkJKChuKS0+bl9zdHIpCisjZGVmaW5lIExJTkVOTyhuKSAgICAgICAoKG4pLT5uX2xpbmVubykKIAogLyogQXNzZXJ0IHRoYXQgdGhlIHR5cGUgb2YgYSBub2RlIGlzIHdoYXQgd2UgZXhwZWN0ICovCiAjZGVmaW5lIFJFUShuLCB0eXBlKSBhc3NlcnQoVFlQRShuKSA9PSAodHlwZSkpCmRpZmYgLS1naXQgYS9JbmNsdWRlL29iamVjdC5oIGIvSW5jbHVkZS9vYmplY3QuaAppbmRleCA2MTIwYWI4MTMuLjM4N2NhZGIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9vYmplY3QuaApAQCAtMTE3LDYgKzExNywzNSBAQAogI2RlZmluZSBQeV9UWVBFKG9iKSAgICAgICAgICAgICAoKChQeU9iamVjdCopKG9iKSktPm9iX3R5cGUpCiAjZGVmaW5lIFB5X1NJWkUob2IpICAgICAgICAgICAgICgoKFB5VmFyT2JqZWN0Kikob2IpKS0+b2Jfc2l6ZSkKIAorLyoqKioqKioqKioqKioqKioqKioqKiBTdHJpbmcgTGl0ZXJhbHMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFRoaXMgc3RydWN0dXJlIGhlbHBzIG1hbmFnaW5nIHN0YXRpYyBzdHJpbmdzLiBUaGUgYmFzaWMgdXNhZ2UgZ29lcyBsaWtlIHRoaXM6CisgICBJbnN0ZWFkIG9mIGRvaW5nCisKKyAgICAgICByID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvLCAiZm9vIiwgImFyZ3MiLCAuLi4pOworCisgICBkbworCisgICAgICAgX1B5X0lERU5USUZJRVIoZm9vKTsKKyAgICAgICAuLi4KKyAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvLCAmUHlJZF9mb28sICJhcmdzIiwgLi4uKTsKKworICAgUHlJZF9mb28gaXMgYSBzdGF0aWMgdmFyaWFibGUsIGVpdGhlciBvbiBibG9jayBsZXZlbCBvciBmaWxlIGxldmVsLiBPbiBmaXJzdAorICAgdXNhZ2UsIHRoZSBzdHJpbmcgImZvbyIgaXMgaW50ZXJuZWQsIGFuZCB0aGUgc3RydWN0dXJlcyBhcmUgbGlua2VkLiBPbiBpbnRlcnByZXRlcgorICAgc2h1dGRvd24sIGFsbCBzdHJpbmdzIGFyZSByZWxlYXNlZCAodGhyb3VnaCBfUHlVbmljb2RlX0NsZWFyU3RhdGljU3RyaW5ncykuCisKKyAgIEFsdGVybmF0aXZlbHksIF9QeV9zdGF0aWNfc3RyaW5nIGFsbG93cyB0byBjaG9vc2UgdGhlIHZhcmlhYmxlIG5hbWUuCisgICBfUHlVbmljb2RlX0Zyb21JZCByZXR1cm5zIGEgYm9ycm93ZWQgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcm5lZCBzdHJpbmcuCisgICBfUHlPYmplY3Rfe0dldCxTZXQsSGFzfUF0dHJJZCBhcmUgX19nZXRhdHRyX18gdmVyc2lvbnMgdXNpbmcgX1B5X0lkZW50aWZpZXIqLgorKi8KK3R5cGVkZWYgc3RydWN0IF9QeV9JZGVudGlmaWVyIHsKKyAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm5leHQ7CisgICAgY29uc3QgY2hhciogc3RyaW5nOworICAgIFB5T2JqZWN0ICpvYmplY3Q7Cit9IF9QeV9JZGVudGlmaWVyOworCisjZGVmaW5lIF9QeV9zdGF0aWNfc3RyaW5nKHZhcm5hbWUsIHZhbHVlKSAgc3RhdGljIF9QeV9JZGVudGlmaWVyIHZhcm5hbWUgPSB7IDAsIHZhbHVlLCAwIH0KKyNkZWZpbmUgX1B5X0lERU5USUZJRVIodmFybmFtZSkgX1B5X3N0YXRpY19zdHJpbmcoUHlJZF8jI3Zhcm5hbWUsICN2YXJuYW1lKQorCiAvKgogVHlwZSBvYmplY3RzIGNvbnRhaW4gYSBzdHJpbmcgY29udGFpbmluZyB0aGUgdHlwZSBuYW1lICh0byBoZWxwIHNvbWV3aGF0CiBpbiBkZWJ1Z2dpbmcpLCB0aGUgYWxsb2NhdGlvbiBwYXJhbWV0ZXJzIChzZWUgUHlPYmplY3RfTmV3KCkgYW5kCkBAIC0xNTcsMTUgKzE4NiwxNiBAQAogICAgIFB5X3NzaXplX3QgKnNoYXBlOwogICAgIFB5X3NzaXplX3QgKnN0cmlkZXM7CiAgICAgUHlfc3NpemVfdCAqc3Vib2Zmc2V0czsKLSAgICBQeV9zc2l6ZV90IHNtYWxsdGFibGVbMl07ICAvKiBzdGF0aWMgc3RvcmUgZm9yIHNoYXBlIGFuZCBzdHJpZGVzIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9uby1kaW1lbnNpb25hbCBidWZmZXJzLiAqLwogICAgIHZvaWQgKmludGVybmFsOwogfSBQeV9idWZmZXI7CiAKIHR5cGVkZWYgaW50ICgqZ2V0YnVmZmVycHJvYykoUHlPYmplY3QgKiwgUHlfYnVmZmVyICosIGludCk7CiB0eXBlZGVmIHZvaWQgKCpyZWxlYXNlYnVmZmVycHJvYykoUHlPYmplY3QgKiwgUHlfYnVmZmVyICopOwogCi0gICAgLyogRmxhZ3MgZm9yIGdldHRpbmcgYnVmZmVycyAqLworLyogTWF4aW11bSBudW1iZXIgb2YgZGltZW5zaW9ucyAqLworI2RlZmluZSBQeUJVRl9NQVhfTkRJTSA2NAorCisvKiBGbGFncyBmb3IgZ2V0dGluZyBidWZmZXJzICovCiAjZGVmaW5lIFB5QlVGX1NJTVBMRSAwCiAjZGVmaW5lIFB5QlVGX1dSSVRBQkxFIDB4MDAwMQogLyogIHdlIHVzZWQgdG8gaW5jbHVkZSBhbiBFLCBiYWNrd2FyZHMgY29tcGF0aWJsZSBhbGlhcyAgKi8KQEAgLTQwMyw2ICs0MzMsOSBAQAogfSBQeVR5cGVfU3BlYzsKIAogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VHlwZV9Gcm9tU3BlYyhQeVR5cGVfU3BlYyopOworI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwMzAwMDAKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMoUHlUeXBlX1NwZWMqLCBQeU9iamVjdCopOworI2VuZGlmCiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFRoZSAqcmVhbCogbGF5b3V0IG9mIGEgdHlwZSBvYmplY3Qgd2hlbiBhbGxvY2F0ZWQgb24gdGhlIGhlYXAgKi8KQEAgLTQxOCw3ICs0NTEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIGdpdmVuIG9wZXJhdG9yIChlLmcuIF9fZ2V0aXRlbV9fKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlIGFkZF9vcGVyYXRvcnMoKSBpbiB0eXBlb2JqZWN0LmMgLiAqLwogICAgIFB5QnVmZmVyUHJvY3MgYXNfYnVmZmVyOwotICAgIFB5T2JqZWN0ICpodF9uYW1lLCAqaHRfc2xvdHM7CisgICAgUHlPYmplY3QgKmh0X25hbWUsICpodF9zbG90cywgKmh0X3F1YWxuYW1lOworICAgIHN0cnVjdCBfZGljdGtleXNvYmplY3QgKmh0X2NhY2hlZF9rZXlzOwogICAgIC8qIGhlcmUgYXJlIG9wdGlvbmFsIHVzZXIgc2xvdHMsIGZvbGxvd2VkIGJ5IHRoZSBtZW1iZXJzLiAqLwogfSBQeUhlYXBUeXBlT2JqZWN0OwogCkBAIC00NDgsMTMgKzQ4MiwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5VHlwZV9Mb29rdXAoUHlUeXBlT2JqZWN0ICosIFB5T2JqZWN0ICopOwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChQeU9iamVjdCAqLCBjaGFyICosIFB5T2JqZWN0ICoqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoUHlPYmplY3QgKiwgX1B5X0lkZW50aWZpZXIgKik7CiBQeUFQSV9GVU5DKFB5VHlwZU9iamVjdCAqKSBfUHlUeXBlX0NhbGN1bGF0ZU1ldGFjbGFzcyhQeVR5cGVPYmplY3QgKiwgUHlPYmplY3QgKik7CiAjZW5kaWYKIFB5QVBJX0ZVTkModW5zaWduZWQgaW50KSBQeVR5cGVfQ2xlYXJDYWNoZSh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlUeXBlX01vZGlmaWVkKFB5VHlwZU9iamVjdCAqKTsKIAogLyogR2VuZXJpYyBvcGVyYXRpb25zIG9uIG9iamVjdHMgKi8KK3N0cnVjdCBfUHlfSWRlbnRpZmllcjsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9QcmludChQeU9iamVjdCAqLCBGSUxFICosIGludCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9CcmVha1BvaW50KHZvaWQpOwpAQCAtNDcyLDYgKzUwNywxMCBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9HZXRBdHRyKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X1NldEF0dHIoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfSGFzQXR0cihQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlPYmplY3RfSXNBYnN0cmFjdChQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0dldEF0dHJJZChQeU9iamVjdCAqLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKik7CitQeUFQSV9GVU5DKGludCkgX1B5T2JqZWN0X1NldEF0dHJJZChQeU9iamVjdCAqLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKiwgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKGludCkgX1B5T2JqZWN0X0hhc0F0dHJJZChQeU9iamVjdCAqLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICoqKSBfUHlPYmplY3RfR2V0RGljdFB0cihQeU9iamVjdCAqKTsKICNlbmRpZgpAQCAtNDgyLDYgKzUyMSw3IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyKFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfR2VuZXJpY1NldERpY3QoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgdm9pZCAqKTsKIFB5QVBJX0ZVTkMoUHlfaGFzaF90KSBQeU9iamVjdF9IYXNoKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeV9oYXNoX3QpIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZChQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9Jc1RydWUoUHlPYmplY3QgKik7CkBAIC00OTgsNiArNTM4LDExIEBACiBfUHlPYmplY3RfR2VuZXJpY1NldEF0dHJXaXRoRGljdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKKy8qIEhlbHBlciB0byBsb29rIHVwIGEgYnVpbHRpbiBvYmplY3QgKi8KKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikKK19QeU9iamVjdF9HZXRCdWlsdGluKGNvbnN0IGNoYXIgKm5hbWUpOworI2VuZGlmCiAKIC8qIFB5T2JqZWN0X0RpcihvYmopIGFjdHMgbGlrZSBQeXRob24gYnVpbHRpbnMuZGlyKG9iaiksIHJldHVybmluZyBhCiAgICBsaXN0IG9mIHN0cmluZ3MuICBQeU9iamVjdF9EaXIoTlVMTCkgaXMgbGlrZSBidWlsdGlucy5kaXIoKSwKQEAgLTUxNSw2ICs1NjAsNyBAQAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeV9oYXNoX3QpIF9QeV9IYXNoRG91YmxlKGRvdWJsZSk7CiBQeUFQSV9GVU5DKFB5X2hhc2hfdCkgX1B5X0hhc2hQb2ludGVyKHZvaWQqKTsKK1B5QVBJX0ZVTkMoUHlfaGFzaF90KSBfUHlfSGFzaEJ5dGVzKHVuc2lnbmVkIGNoYXIqLCBQeV9zc2l6ZV90KTsKICNlbmRpZgogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC04MDMsNiArODQ5LDEwIEBACiBQeUFQSV9EQVRBKFB5T2JqZWN0KSBfUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3Q7IC8qIERvbid0IHVzZSB0aGlzIGRpcmVjdGx5ICovCiAjZGVmaW5lIFB5X05vdEltcGxlbWVudGVkICgmX1B5X05vdEltcGxlbWVudGVkU3RydWN0KQogCisvKiBNYWNybyBmb3IgcmV0dXJuaW5nIFB5X05vdEltcGxlbWVudGVkIGZyb20gYSBmdW5jdGlvbiAqLworI2RlZmluZSBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQgXAorICAgIHJldHVybiBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpLCBQeV9Ob3RJbXBsZW1lbnRlZAorCiAvKiBSaWNoIGNvbXBhcmlzb24gb3Bjb2RlcyAqLwogI2RlZmluZSBQeV9MVCAwCiAjZGVmaW5lIFB5X0xFIDEKQEAgLTkxMiw3ICs5NjIsNyBAQAogKi8KIAogLyogVGhpcyBpcyB0aGUgb2xkIHByaXZhdGUgQVBJLCBpbnZva2VkIGJ5IHRoZSBtYWNyb3MgYmVmb3JlIDMuMi40LgotICAgS2VwdCBmb3IgYmluYXJ5IGNvbXBhdGliaWxpdHkgb2YgZXh0ZW5zaW9ucy4gKi8KKyAgIEtlcHQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5IG9mIGV4dGVuc2lvbnMgdXNpbmcgdGhlIHN0YWJsZSBBQkkuICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0KFB5T2JqZWN0Kik7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4odm9pZCk7CiBQeUFQSV9EQVRBKGludCkgX1B5VHJhc2hfZGVsZXRlX25lc3Rpbmc7CkBAIC05MzksNiArOTg5LDE0IEBACiAgICAgICAgICAgICBfUHlUcmFzaF90aHJlYWRfZGVwb3NpdF9vYmplY3QoKFB5T2JqZWN0KilvcCk7IFwKICAgICB9IHdoaWxlICgwKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyh2b2lkKQorX1B5RGVidWdBbGxvY2F0b3JTdGF0cyhGSUxFICpvdXQsIGNvbnN0IGNoYXIgKmJsb2NrX25hbWUsIGludCBudW1fYmxvY2tzLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZW9mX2Jsb2NrKTsKK1B5QVBJX0ZVTkModm9pZCkKK19QeU9iamVjdF9EZWJ1Z1R5cGVTdGF0cyhGSUxFICpvdXQpOworI2VuZGlmIC8qIGlmbmRlZiBQeV9MSU1JVEVEX0FQSSAqLworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vYmppbXBsLmggYi9JbmNsdWRlL29iamltcGwuaAppbmRleCA4ZmMzZmMxLi4zZDVmNTA5IDEwMDY0NAotLS0gYS9JbmNsdWRlL29iamltcGwuaAorKysgYi9JbmNsdWRlL29iamltcGwuaApAQCAtMTAxLDEzICsxMDEsMTUgQEAKIAogLyogTWFjcm9zICovCiAjaWZkZWYgV0lUSF9QWU1BTExPQworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyh2b2lkKSBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpOworI2VuZGlmIC8qICNpZm5kZWYgUHlfTElNSVRFRF9BUEkgKi8KICNpZmRlZiBQWU1BTExPQ19ERUJVRyAgIC8qIFdJVEhfUFlNQUxMT0MgJiYgUFlNQUxMT0NfREVCVUcgKi8KIFB5QVBJX0ZVTkModm9pZCAqKSBfUHlPYmplY3RfRGVidWdNYWxsb2Moc2l6ZV90IG5ieXRlcyk7CiBQeUFQSV9GVU5DKHZvaWQgKikgX1B5T2JqZWN0X0RlYnVnUmVhbGxvYyh2b2lkICpwLCBzaXplX3QgbmJ5dGVzKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5T2JqZWN0X0RlYnVnRnJlZSh2b2lkICpwKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5T2JqZWN0X0RlYnVnRHVtcEFkZHJlc3MoY29uc3Qgdm9pZCAqcCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeU9iamVjdF9EZWJ1Z0NoZWNrQWRkcmVzcyhjb25zdCB2b2lkICpwKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHModm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQgKikgX1B5T2JqZWN0X0RlYnVnTWFsbG9jQXBpKGNoYXIgYXBpLCBzaXplX3QgbmJ5dGVzKTsKIFB5QVBJX0ZVTkModm9pZCAqKSBfUHlPYmplY3RfRGVidWdSZWFsbG9jQXBpKGNoYXIgYXBpLCB2b2lkICpwLCBzaXplX3QgbmJ5dGVzKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5T2JqZWN0X0RlYnVnRnJlZUFwaShjaGFyIGFwaSwgdm9pZCAqcCk7CkBAIC0xNzksMTIgKzE4MSw5IEBACiAjZW5kaWYKIAogI2RlZmluZSBfUHlPYmplY3RfVkFSX1NJWkUodHlwZW9iaiwgbml0ZW1zKSAgICAgXAotICAgIChzaXplX3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICggKCAodHlwZW9iaiktPnRwX2Jhc2ljc2l6ZSArICAgICAgICAgICAgICAgXAotICAgICAgICAobml0ZW1zKSoodHlwZW9iaiktPnRwX2l0ZW1zaXplICsgICAgICAgXAotICAgICAgICAoU0laRU9GX1ZPSURfUCAtIDEpICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgKSAmIH4oU0laRU9GX1ZPSURfUCAtIDEpICAgICAgICAgICAgICAgICAgXAotICAgICkKKyAgICBfUHlfU0laRV9ST1VORF9VUCgodHlwZW9iaiktPnRwX2Jhc2ljc2l6ZSArIFwKKyAgICAgICAgKG5pdGVtcykqKHR5cGVvYmopLT50cF9pdGVtc2l6ZSwgICAgICAgIFwKKyAgICAgICAgU0laRU9GX1ZPSURfUCkKIAogI2RlZmluZSBQeU9iamVjdF9ORVcodHlwZSwgdHlwZW9iaikgXAogKCAodHlwZSAqKSBQeU9iamVjdF9Jbml0KCBcCmRpZmYgLS1naXQgYS9JbmNsdWRlL29wY29kZS5oIGIvSW5jbHVkZS9vcGNvZGUuaAppbmRleCA2YjEwOTQ0Li5hOTAxODRkIDEwMDY0NAotLS0gYS9JbmNsdWRlL29wY29kZS5oCisrKyBiL0luY2x1ZGUvb3Bjb2RlLmgKQEAgLTcsMTE3ICs3LDExNyBAQAogCiAvKiBJbnN0cnVjdGlvbiBvcGNvZGVzIGZvciBjb21waWxlZCBjb2RlICovCiAKLSNkZWZpbmUgU1RPUF9DT0RFCTAKLSNkZWZpbmUgUE9QX1RPUAkJMQotI2RlZmluZSBST1RfVFdPCQkyCi0jZGVmaW5lIFJPVF9USFJFRQkzCi0jZGVmaW5lIERVUF9UT1AJCTQKKyNkZWZpbmUgUE9QX1RPUCAgICAgICAgIDEKKyNkZWZpbmUgUk9UX1RXTyAgICAgICAgIDIKKyNkZWZpbmUgUk9UX1RIUkVFICAgICAgIDMKKyNkZWZpbmUgRFVQX1RPUCAgICAgICAgIDQKICNkZWZpbmUgRFVQX1RPUF9UV08gICAgIDUKLSNkZWZpbmUgTk9QCQk5CisjZGVmaW5lIE5PUCAgICAgICAgICAgICA5CiAKLSNkZWZpbmUgVU5BUllfUE9TSVRJVkUJMTAKLSNkZWZpbmUgVU5BUllfTkVHQVRJVkUJMTEKLSNkZWZpbmUgVU5BUllfTk9UCTEyCisjZGVmaW5lIFVOQVJZX1BPU0lUSVZFICAxMAorI2RlZmluZSBVTkFSWV9ORUdBVElWRSAgMTEKKyNkZWZpbmUgVU5BUllfTk9UICAgICAgIDEyCiAKLSNkZWZpbmUgVU5BUllfSU5WRVJUCTE1CisjZGVmaW5lIFVOQVJZX0lOVkVSVCAgICAxNQogCi0jZGVmaW5lIEJJTkFSWV9QT1dFUgkxOQorI2RlZmluZSBCSU5BUllfUE9XRVIgICAgMTkKIAotI2RlZmluZSBCSU5BUllfTVVMVElQTFkJMjAKKyNkZWZpbmUgQklOQVJZX01VTFRJUExZIDIwCiAKLSNkZWZpbmUgQklOQVJZX01PRFVMTwkyMgotI2RlZmluZSBCSU5BUllfQURECTIzCi0jZGVmaW5lIEJJTkFSWV9TVUJUUkFDVAkyNAotI2RlZmluZSBCSU5BUllfU1VCU0NSCTI1CisjZGVmaW5lIEJJTkFSWV9NT0RVTE8gICAyMgorI2RlZmluZSBCSU5BUllfQUREICAgICAgMjMKKyNkZWZpbmUgQklOQVJZX1NVQlRSQUNUIDI0CisjZGVmaW5lIEJJTkFSWV9TVUJTQ1IgICAyNQogI2RlZmluZSBCSU5BUllfRkxPT1JfRElWSURFIDI2CiAjZGVmaW5lIEJJTkFSWV9UUlVFX0RJVklERSAyNwogI2RlZmluZSBJTlBMQUNFX0ZMT09SX0RJVklERSAyOAogI2RlZmluZSBJTlBMQUNFX1RSVUVfRElWSURFIDI5CiAKLSNkZWZpbmUgU1RPUkVfTUFQCTU0Ci0jZGVmaW5lIElOUExBQ0VfQURECTU1Ci0jZGVmaW5lIElOUExBQ0VfU1VCVFJBQ1QJNTYKLSNkZWZpbmUgSU5QTEFDRV9NVUxUSVBMWQk1NworI2RlZmluZSBTVE9SRV9NQVAgICAgICAgNTQKKyNkZWZpbmUgSU5QTEFDRV9BREQgICAgIDU1CisjZGVmaW5lIElOUExBQ0VfU1VCVFJBQ1QgICAgICAgIDU2CisjZGVmaW5lIElOUExBQ0VfTVVMVElQTFkgICAgICAgIDU3CiAKLSNkZWZpbmUgSU5QTEFDRV9NT0RVTE8JNTkKLSNkZWZpbmUgU1RPUkVfU1VCU0NSCTYwCi0jZGVmaW5lIERFTEVURV9TVUJTQ1IJNjEKKyNkZWZpbmUgSU5QTEFDRV9NT0RVTE8gIDU5CisjZGVmaW5lIFNUT1JFX1NVQlNDUiAgICA2MAorI2RlZmluZSBERUxFVEVfU1VCU0NSICAgNjEKIAotI2RlZmluZSBCSU5BUllfTFNISUZUCTYyCi0jZGVmaW5lIEJJTkFSWV9SU0hJRlQJNjMKLSNkZWZpbmUgQklOQVJZX0FORAk2NAotI2RlZmluZSBCSU5BUllfWE9SCTY1Ci0jZGVmaW5lIEJJTkFSWV9PUgk2NgotI2RlZmluZSBJTlBMQUNFX1BPV0VSCTY3Ci0jZGVmaW5lIEdFVF9JVEVSCTY4Ci0jZGVmaW5lIFNUT1JFX0xPQ0FMUwk2OQotI2RlZmluZSBQUklOVF9FWFBSCTcwCisjZGVmaW5lIEJJTkFSWV9MU0hJRlQgICA2MgorI2RlZmluZSBCSU5BUllfUlNISUZUICAgNjMKKyNkZWZpbmUgQklOQVJZX0FORCAgICAgIDY0CisjZGVmaW5lIEJJTkFSWV9YT1IgICAgICA2NQorI2RlZmluZSBCSU5BUllfT1IgICAgICAgNjYKKyNkZWZpbmUgSU5QTEFDRV9QT1dFUiAgIDY3CisjZGVmaW5lIEdFVF9JVEVSICAgICAgICA2OAorI2RlZmluZSBTVE9SRV9MT0NBTFMgICAgNjkKKyNkZWZpbmUgUFJJTlRfRVhQUiAgICAgIDcwCiAjZGVmaW5lIExPQURfQlVJTERfQ0xBU1MgNzEKKyNkZWZpbmUgWUlFTERfRlJPTSAgICAgIDcyCiAKLSNkZWZpbmUgSU5QTEFDRV9MU0hJRlQJNzUKLSNkZWZpbmUgSU5QTEFDRV9SU0hJRlQJNzYKLSNkZWZpbmUgSU5QTEFDRV9BTkQJNzcKLSNkZWZpbmUgSU5QTEFDRV9YT1IJNzgKLSNkZWZpbmUgSU5QTEFDRV9PUgk3OQotI2RlZmluZSBCUkVBS19MT09QCTgwCisjZGVmaW5lIElOUExBQ0VfTFNISUZUICA3NQorI2RlZmluZSBJTlBMQUNFX1JTSElGVCAgNzYKKyNkZWZpbmUgSU5QTEFDRV9BTkQgICAgIDc3CisjZGVmaW5lIElOUExBQ0VfWE9SICAgICA3OAorI2RlZmluZSBJTlBMQUNFX09SICAgICAgNzkKKyNkZWZpbmUgQlJFQUtfTE9PUCAgICAgIDgwCiAjZGVmaW5lIFdJVEhfQ0xFQU5VUCAgICA4MQogCi0jZGVmaW5lIFJFVFVSTl9WQUxVRQk4MwotI2RlZmluZSBJTVBPUlRfU1RBUgk4NAorI2RlZmluZSBSRVRVUk5fVkFMVUUgICAgODMKKyNkZWZpbmUgSU1QT1JUX1NUQVIgICAgIDg0CiAKLSNkZWZpbmUgWUlFTERfVkFMVUUJODYKLSNkZWZpbmUgUE9QX0JMT0NLCTg3Ci0jZGVmaW5lIEVORF9GSU5BTExZCTg4Ci0jZGVmaW5lIFBPUF9FWENFUFQJODkKKyNkZWZpbmUgWUlFTERfVkFMVUUgICAgIDg2CisjZGVmaW5lIFBPUF9CTE9DSyAgICAgICA4NworI2RlZmluZSBFTkRfRklOQUxMWSAgICAgODgKKyNkZWZpbmUgUE9QX0VYQ0VQVCAgICAgIDg5CiAKLSNkZWZpbmUgSEFWRV9BUkdVTUVOVAk5MAkvKiBPcGNvZGVzIGZyb20gaGVyZSBoYXZlIGFuIGFyZ3VtZW50OiAqLworI2RlZmluZSBIQVZFX0FSR1VNRU5UICAgOTAgICAgICAvKiBPcGNvZGVzIGZyb20gaGVyZSBoYXZlIGFuIGFyZ3VtZW50OiAqLwogCi0jZGVmaW5lIFNUT1JFX05BTUUJOTAJLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0jZGVmaW5lIERFTEVURV9OQU1FCTkxCS8qICIiICovCi0jZGVmaW5lIFVOUEFDS19TRVFVRU5DRQk5MgkvKiBOdW1iZXIgb2Ygc2VxdWVuY2UgaXRlbXMgKi8KLSNkZWZpbmUgRk9SX0lURVIJOTMKKyNkZWZpbmUgU1RPUkVfTkFNRSAgICAgIDkwICAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCisjZGVmaW5lIERFTEVURV9OQU1FICAgICA5MSAgICAgIC8qICIiICovCisjZGVmaW5lIFVOUEFDS19TRVFVRU5DRSA5MiAgICAgIC8qIE51bWJlciBvZiBzZXF1ZW5jZSBpdGVtcyAqLworI2RlZmluZSBGT1JfSVRFUiAgICAgICAgOTMKICNkZWZpbmUgVU5QQUNLX0VYICAgICAgIDk0ICAgICAgLyogTnVtIGl0ZW1zIGJlZm9yZSB2YXJpYWJsZSBwYXJ0ICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE51bSBpdGVtcyBhZnRlciB2YXJpYWJsZSBwYXJ0IDw8IDgpICovCiAKLSNkZWZpbmUgU1RPUkVfQVRUUgk5NQkvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KLSNkZWZpbmUgREVMRVRFX0FUVFIJOTYJLyogIiIgKi8KLSNkZWZpbmUgU1RPUkVfR0xPQkFMCTk3CS8qICIiICovCi0jZGVmaW5lIERFTEVURV9HTE9CQUwJOTgJLyogIiIgKi8KKyNkZWZpbmUgU1RPUkVfQVRUUiAgICAgIDk1ICAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCisjZGVmaW5lIERFTEVURV9BVFRSICAgICA5NiAgICAgIC8qICIiICovCisjZGVmaW5lIFNUT1JFX0dMT0JBTCAgICA5NyAgICAgIC8qICIiICovCisjZGVmaW5lIERFTEVURV9HTE9CQUwgICA5OCAgICAgIC8qICIiICovCiAKLSNkZWZpbmUgTE9BRF9DT05TVAkxMDAJLyogSW5kZXggaW4gY29uc3QgbGlzdCAqLwotI2RlZmluZSBMT0FEX05BTUUJMTAxCS8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwotI2RlZmluZSBCVUlMRF9UVVBMRQkxMDIJLyogTnVtYmVyIG9mIHR1cGxlIGl0ZW1zICovCi0jZGVmaW5lIEJVSUxEX0xJU1QJMTAzCS8qIE51bWJlciBvZiBsaXN0IGl0ZW1zICovCi0jZGVmaW5lIEJVSUxEX1NFVAkxMDQgICAgIC8qIE51bWJlciBvZiBzZXQgaXRlbXMgKi8KLSNkZWZpbmUgQlVJTERfTUFQCTEwNQkvKiBBbHdheXMgemVybyBmb3Igbm93ICovCi0jZGVmaW5lIExPQURfQVRUUgkxMDYJLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0jZGVmaW5lIENPTVBBUkVfT1AJMTA3CS8qIENvbXBhcmlzb24gb3BlcmF0b3IgKi8KLSNkZWZpbmUgSU1QT1JUX05BTUUJMTA4CS8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwotI2RlZmluZSBJTVBPUlRfRlJPTQkxMDkJLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCisjZGVmaW5lIExPQURfQ09OU1QgICAgICAxMDAgICAgIC8qIEluZGV4IGluIGNvbnN0IGxpc3QgKi8KKyNkZWZpbmUgTE9BRF9OQU1FICAgICAgIDEwMSAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCisjZGVmaW5lIEJVSUxEX1RVUExFICAgICAxMDIgICAgIC8qIE51bWJlciBvZiB0dXBsZSBpdGVtcyAqLworI2RlZmluZSBCVUlMRF9MSVNUICAgICAgMTAzICAgICAvKiBOdW1iZXIgb2YgbGlzdCBpdGVtcyAqLworI2RlZmluZSBCVUlMRF9TRVQgICAgICAgMTA0ICAgICAvKiBOdW1iZXIgb2Ygc2V0IGl0ZW1zICovCisjZGVmaW5lIEJVSUxEX01BUCAgICAgICAxMDUgICAgIC8qIEFsd2F5cyB6ZXJvIGZvciBub3cgKi8KKyNkZWZpbmUgTE9BRF9BVFRSICAgICAgIDEwNiAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCisjZGVmaW5lIENPTVBBUkVfT1AgICAgICAxMDcgICAgIC8qIENvbXBhcmlzb24gb3BlcmF0b3IgKi8KKyNkZWZpbmUgSU1QT1JUX05BTUUgICAgIDEwOCAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCisjZGVmaW5lIElNUE9SVF9GUk9NICAgICAxMDkgICAgIC8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwogCi0jZGVmaW5lIEpVTVBfRk9SV0FSRAkxMTAJLyogTnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgKi8KLSNkZWZpbmUgSlVNUF9JRl9GQUxTRV9PUl9QT1AgMTExCS8qIFRhcmdldCBieXRlIG9mZnNldCBmcm9tIGJlZ2lubmluZyBvZiBjb2RlICovCi0jZGVmaW5lIEpVTVBfSUZfVFJVRV9PUl9QT1AgMTEyCS8qICIiICovCi0jZGVmaW5lIEpVTVBfQUJTT0xVVEUJMTEzCS8qICIiICovCi0jZGVmaW5lIFBPUF9KVU1QX0lGX0ZBTFNFIDExNAkvKiAiIiAqLwotI2RlZmluZSBQT1BfSlVNUF9JRl9UUlVFIDExNQkvKiAiIiAqLworI2RlZmluZSBKVU1QX0ZPUldBUkQgICAgMTEwICAgICAvKiBOdW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCAqLworI2RlZmluZSBKVU1QX0lGX0ZBTFNFX09SX1BPUCAxMTEgICAgICAgIC8qIFRhcmdldCBieXRlIG9mZnNldCBmcm9tIGJlZ2lubmluZyBvZiBjb2RlICovCisjZGVmaW5lIEpVTVBfSUZfVFJVRV9PUl9QT1AgMTEyIC8qICIiICovCisjZGVmaW5lIEpVTVBfQUJTT0xVVEUgICAxMTMgICAgIC8qICIiICovCisjZGVmaW5lIFBPUF9KVU1QX0lGX0ZBTFNFIDExNCAgIC8qICIiICovCisjZGVmaW5lIFBPUF9KVU1QX0lGX1RSVUUgMTE1ICAgIC8qICIiICovCiAKLSNkZWZpbmUgTE9BRF9HTE9CQUwJMTE2CS8qIEluZGV4IGluIG5hbWUgbGlzdCAqLworI2RlZmluZSBMT0FEX0dMT0JBTCAgICAgMTE2ICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KIAotI2RlZmluZSBDT05USU5VRV9MT09QCTExOQkvKiBTdGFydCBvZiBsb29wIChhYnNvbHV0ZSkgKi8KLSNkZWZpbmUgU0VUVVBfTE9PUAkxMjAJLyogVGFyZ2V0IGFkZHJlc3MgKHJlbGF0aXZlKSAqLwotI2RlZmluZSBTRVRVUF9FWENFUFQJMTIxCS8qICIiICovCi0jZGVmaW5lIFNFVFVQX0ZJTkFMTFkJMTIyCS8qICIiICovCisjZGVmaW5lIENPTlRJTlVFX0xPT1AgICAxMTkgICAgIC8qIFN0YXJ0IG9mIGxvb3AgKGFic29sdXRlKSAqLworI2RlZmluZSBTRVRVUF9MT09QICAgICAgMTIwICAgICAvKiBUYXJnZXQgYWRkcmVzcyAocmVsYXRpdmUpICovCisjZGVmaW5lIFNFVFVQX0VYQ0VQVCAgICAxMjEgICAgIC8qICIiICovCisjZGVmaW5lIFNFVFVQX0ZJTkFMTFkgICAxMjIgICAgIC8qICIiICovCiAKLSNkZWZpbmUgTE9BRF9GQVNUCTEyNAkvKiBMb2NhbCB2YXJpYWJsZSBudW1iZXIgKi8KLSNkZWZpbmUgU1RPUkVfRkFTVAkxMjUJLyogTG9jYWwgdmFyaWFibGUgbnVtYmVyICovCi0jZGVmaW5lIERFTEVURV9GQVNUCTEyNgkvKiBMb2NhbCB2YXJpYWJsZSBudW1iZXIgKi8KKyNkZWZpbmUgTE9BRF9GQVNUICAgICAgIDEyNCAgICAgLyogTG9jYWwgdmFyaWFibGUgbnVtYmVyICovCisjZGVmaW5lIFNUT1JFX0ZBU1QgICAgICAxMjUgICAgIC8qIExvY2FsIHZhcmlhYmxlIG51bWJlciAqLworI2RlZmluZSBERUxFVEVfRkFTVCAgICAgMTI2ICAgICAvKiBMb2NhbCB2YXJpYWJsZSBudW1iZXIgKi8KIAotI2RlZmluZSBSQUlTRV9WQVJBUkdTCTEzMAkvKiBOdW1iZXIgb2YgcmFpc2UgYXJndW1lbnRzICgxLCAyIG9yIDMpICovCisjZGVmaW5lIFJBSVNFX1ZBUkFSR1MgICAxMzAgICAgIC8qIE51bWJlciBvZiByYWlzZSBhcmd1bWVudHMgKDEsIDIgb3IgMykgKi8KIC8qIENBTExfRlVOQ1RJT05fWFhYIG9wY29kZXMgZGVmaW5lZCBiZWxvdyBkZXBlbmQgb24gdGhpcyBkZWZpbml0aW9uICovCi0jZGVmaW5lIENBTExfRlVOQ1RJT04JMTMxCS8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCi0jZGVmaW5lIE1BS0VfRlVOQ1RJT04JMTMyCS8qICNkZWZhdWx0cyArICNrd2RlZmF1bHRzPDw4ICsgI2Fubm90YXRpb25zPDwxNiAqLwotI2RlZmluZSBCVUlMRF9TTElDRSAJMTMzCS8qIE51bWJlciBvZiBpdGVtcyAqLworI2RlZmluZSBDQUxMX0ZVTkNUSU9OICAgMTMxICAgICAvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLworI2RlZmluZSBNQUtFX0ZVTkNUSU9OICAgMTMyICAgICAvKiAjZGVmYXVsdHMgKyAja3dkZWZhdWx0czw8OCArICNhbm5vdGF0aW9uczw8MTYgKi8KKyNkZWZpbmUgQlVJTERfU0xJQ0UgICAgIDEzMyAgICAgLyogTnVtYmVyIG9mIGl0ZW1zICovCiAKICNkZWZpbmUgTUFLRV9DTE9TVVJFICAgIDEzNCAgICAgLyogc2FtZSBhcyBNQUtFX0ZVTkNUSU9OICovCiAjZGVmaW5lIExPQURfQ0xPU1VSRSAgICAxMzUgICAgIC8qIExvYWQgZnJlZSB2YXJpYWJsZSBmcm9tIGNsb3N1cmUgKi8KQEAgLTEyNyw5ICsxMjcsOSBAQAogCiAvKiBUaGUgbmV4dCAzIG9wY29kZXMgbXVzdCBiZSBjb250aWd1b3VzIGFuZCBzYXRpc2Z5CiAgICAoQ0FMTF9GVU5DVElPTl9WQVIgLSBDQUxMX0ZVTkNUSU9OKSAmIDMgPT0gMSAgKi8KLSNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVIgICAgICAgICAgMTQwCS8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCi0jZGVmaW5lIENBTExfRlVOQ1RJT05fS1cgICAgICAgICAgIDE0MQkvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLwotI2RlZmluZSBDQUxMX0ZVTkNUSU9OX1ZBUl9LVyAgICAgICAxNDIJLyogI2FyZ3MgKyAoI2t3YXJnczw8OCkgKi8KKyNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVIgICAgICAgICAgMTQwICAvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLworI2RlZmluZSBDQUxMX0ZVTkNUSU9OX0tXICAgICAgICAgICAxNDEgIC8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCisjZGVmaW5lIENBTExfRlVOQ1RJT05fVkFSX0tXICAgICAgIDE0MiAgLyogI2FyZ3MgKyAoI2t3YXJnczw8OCkgKi8KIAogI2RlZmluZSBTRVRVUF9XSVRIIDE0MwogCkBAIC0xNDksNyArMTQ5LDcgQEAKIAogCiBlbnVtIGNtcF9vcCB7UHlDbXBfTFQ9UHlfTFQsIFB5Q21wX0xFPVB5X0xFLCBQeUNtcF9FUT1QeV9FUSwgUHlDbXBfTkU9UHlfTkUsIFB5Q21wX0dUPVB5X0dULCBQeUNtcF9HRT1QeV9HRSwKLQkgICAgIFB5Q21wX0lOLCBQeUNtcF9OT1RfSU4sIFB5Q21wX0lTLCBQeUNtcF9JU19OT1QsIFB5Q21wX0VYQ19NQVRDSCwgUHlDbXBfQkFEfTsKKyAgICAgICAgICAgICBQeUNtcF9JTiwgUHlDbXBfTk9UX0lOLCBQeUNtcF9JUywgUHlDbXBfSVNfTk9ULCBQeUNtcF9FWENfTUFUQ0gsIFB5Q21wX0JBRH07CiAKICNkZWZpbmUgSEFTX0FSRyhvcCkgKChvcCkgPj0gSEFWRV9BUkdVTUVOVCkKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vc2RlZnMuaCBiL0luY2x1ZGUvb3NkZWZzLmgKaW5kZXggOTBiNDMwYS4uMDVjMGM4ZSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vc2RlZnMuaAorKysgYi9JbmNsdWRlL29zZGVmcy5oCkBAIC0yOSw2ICsyOSwxNCBAQAogI2VuZGlmCiAKIC8qIE1heCBwYXRobmFtZSBsZW5ndGggKi8KKyNpZmRlZiBfX2hwdXgKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpZm5kZWYgUEFUSF9NQVgKKyNkZWZpbmUgUEFUSF9NQVggTUFYUEFUSExFTgorI2VuZGlmCisjZW5kaWYKKwogI2lmbmRlZiBNQVhQQVRITEVOCiAjaWYgZGVmaW5lZChQQVRIX01BWCkgJiYgUEFUSF9NQVggPiAxMDI0CiAjZGVmaW5lIE1BWFBBVEhMRU4gUEFUSF9NQVgKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcGFyc2V0b2suaCBiL0luY2x1ZGUvcGFyc2V0b2suaAppbmRleCA0Yjc2OTRmLi45MTFkZmMxIDEwMDY0NAotLS0gYS9JbmNsdWRlL3BhcnNldG9rLmgKKysrIGIvSW5jbHVkZS9wYXJzZXRvay5oCkBAIC05LDcgKzksMTAgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIGludCBlcnJvcjsKLSAgICBjb25zdCBjaGFyICpmaWxlbmFtZTsgICAgICAgLyogZGVjb2RlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nICovCisjaWZuZGVmIFBHRU4KKyAgICAvKiBUaGUgZmlsZW5hbWUgaXMgdXNlbGVzcyBmb3IgcGdlbiwgc2VlIGNvbW1lbnQgaW4gdG9rX3N0YXRlIHN0cnVjdHVyZSAqLworICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKKyNlbmRpZgogICAgIGludCBsaW5lbm87CiAgICAgaW50IG9mZnNldDsKICAgICBjaGFyICp0ZXh0OyAgICAgICAgICAgICAgICAgLyogVVRGLTgtZW5jb2RlZCBzdHJpbmcgKi8KQEAgLTY2LDggKzY5LDEwIEBACiAgICAgcGVycmRldGFpbCAqZXJyX3JldCwKICAgICBpbnQgKmZsYWdzKTsKIAotLyogTm90ZSB0aGF0IGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpcyBkZWZpbmVkIGluIHB5dGhvbnJ1bi5jIG5vdCBwYXJzZXRvay5jLiAqLworLyogTm90ZSB0aGF0IHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGluIHB5dGhvbnJ1bi5jLAorICAgbm90IGluIHBhcnNldG9rLmMgKi8KIFB5QVBJX0ZVTkModm9pZCkgUHlQYXJzZXJfU2V0RXJyb3IocGVycmRldGFpbCAqKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlQYXJzZXJfQ2xlYXJFcnJvcihwZXJyZGV0YWlsICopOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcGF0Y2hsZXZlbC5oIGIvSW5jbHVkZS9wYXRjaGxldmVsLmgKaW5kZXggMDgzOTA3MS4uYjU5MTlhNCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9wYXRjaGxldmVsLmgKKysrIGIvSW5jbHVkZS9wYXRjaGxldmVsLmgKQEAgLTE3LDE5ICsxNywxNSBAQAogLyogVmVyc2lvbiBwYXJzZWQgb3V0IGludG8gbnVtZXJpYyB2YWx1ZXMgKi8KIC8qLS1zdGFydCBjb25zdGFudHMtLSovCiAjZGVmaW5lIFBZX01BSk9SX1ZFUlNJT04JMwotI2RlZmluZSBQWV9NSU5PUl9WRVJTSU9OCTIKLSNkZWZpbmUgUFlfTUlDUk9fVkVSU0lPTgkzCisjZGVmaW5lIFBZX01JTk9SX1ZFUlNJT04JMworI2RlZmluZSBQWV9NSUNST19WRVJTSU9OCTAKICNkZWZpbmUgUFlfUkVMRUFTRV9MRVZFTAlQWV9SRUxFQVNFX0xFVkVMX0ZJTkFMCiAjZGVmaW5lIFBZX1JFTEVBU0VfU0VSSUFMCTAKIAogLyogVmVyc2lvbiBhcyBhIHN0cmluZyAqLwotI2RlZmluZSBQWV9WRVJTSU9OICAgICAgCSIzLjIuMysiCisjZGVmaW5lIFBZX1ZFUlNJT04gICAgICAJIjMuMy4wKyIKIC8qLS1lbmQgY29uc3RhbnRzLS0qLwogCi0vKiBTdWJ2ZXJzaW9uIFJldmlzaW9uIG51bWJlciBvZiB0aGlzIGZpbGUgKG5vdCBvZiB0aGUgcmVwb3NpdG9yeSkuIEVtcHR5Ci0gICBzaW5jZSBNZXJjdXJpYWwgbWlncmF0aW9uLiAqLwotI2RlZmluZSBQWV9QQVRDSExFVkVMX1JFVklTSU9OICAiIgotCiAvKiBWZXJzaW9uIGFzIGEgc2luZ2xlIDQtYnl0ZSBoZXggbnVtYmVyLCBlLmcuIDB4MDEwNTAyQjIgPT0gMS41LjJiMi4KICAgIFVzZSB0aGlzIGZvciBudW1lcmljIGNvbXBhcmlzb25zLCBlLmcuICNpZiBQWV9WRVJTSU9OX0hFWCA+PSAuLi4gKi8KICNkZWZpbmUgUFlfVkVSU0lPTl9IRVggKChQWV9NQUpPUl9WRVJTSU9OIDw8IDI0KSB8IFwKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlfY3Vyc2VzLmggYi9JbmNsdWRlL3B5X2N1cnNlcy5oCmluZGV4IGE4OTFjNDIuLmYyYzA4ZjYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlfY3Vyc2VzLmgKKysrIGIvSW5jbHVkZS9weV9jdXJzZXMuaApAQCAtNzYsNiArNzYsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogCVB5T2JqZWN0X0hFQUQKIAlXSU5ET1cgKndpbjsKKwljaGFyICplbmNvZGluZzsKIH0gUHlDdXJzZXNXaW5kb3dPYmplY3Q7CiAKICNkZWZpbmUgUHlDdXJzZXNXaW5kb3dfQ2hlY2sodikJIChQeV9UWVBFKHYpID09ICZQeUN1cnNlc1dpbmRvd19UeXBlKQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWRlYnVnLmggYi9JbmNsdWRlL3B5ZGVidWcuaAppbmRleCBlMjNjYmRjLi45N2MyZjhjIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5ZGVidWcuaAorKysgYi9JbmNsdWRlL3B5ZGVidWcuaApAQCAtMTYsNyArMTYsNiBAQAogUHlBUElfREFUQShpbnQpIFB5X1VzZUNsYXNzRXhjZXB0aW9uc0ZsYWc7CiBQeUFQSV9EQVRBKGludCkgUHlfRnJvemVuRmxhZzsKIFB5QVBJX0RBVEEoaW50KSBQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWc7Ci1QeUFQSV9EQVRBKGludCkgUHlfRGl2aXNpb25XYXJuaW5nRmxhZzsKIFB5QVBJX0RBVEEoaW50KSBQeV9Eb250V3JpdGVCeXRlY29kZUZsYWc7CiBQeUFQSV9EQVRBKGludCkgUHlfTm9Vc2VyU2l0ZURpcmVjdG9yeTsKIFB5QVBJX0RBVEEoaW50KSBQeV9VbmJ1ZmZlcmVkU3RkaW9GbGFnOwpAQCAtMjcsOCArMjYsNiBAQAogICAgUFlUSE9OUEFUSCBhbmQgUFlUSE9OSE9NRSBmcm9tIHRoZSBlbnZpcm9ubWVudCAqLwogI2RlZmluZSBQeV9HRVRFTlYocykgKFB5X0lnbm9yZUVudmlyb25tZW50RmxhZyA/IE5VTEwgOiBnZXRlbnYocykpCiAKLVB5QVBJX0ZVTkModm9pZCkgUHlfRmF0YWxFcnJvcihjb25zdCBjaGFyICptZXNzYWdlKTsKLQogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHllcnJvcnMuaCBiL0luY2x1ZGUvcHllcnJvcnMuaAppbmRleCA0YmIzYzAxLi5hZjM3NDEwIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5ZXJyb3JzLmgKKysrIGIvSW5jbHVkZS9weWVycm9ycy5oCkBAIC0xMCw3ICsxMCw4IEBACiAvKiBQeUV4Y2VwdGlvbl9IRUFEIGRlZmluZXMgdGhlIGluaXRpYWwgc2VnbWVudCBvZiBldmVyeSBleGNlcHRpb24gY2xhc3MuICovCiAjZGVmaW5lIFB5RXhjZXB0aW9uX0hFQUQgUHlPYmplY3RfSEVBRCBQeU9iamVjdCAqZGljdDtcCiAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3M7IFB5T2JqZWN0ICp0cmFjZWJhY2s7XAotICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0OyBQeU9iamVjdCAqY2F1c2U7CisgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRleHQ7IFB5T2JqZWN0ICpjYXVzZTtcCisgICAgICAgICAgICAgY2hhciBzdXBwcmVzc19jb250ZXh0OwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlFeGNlcHRpb25fSEVBRApAQCAtMjgsNiArMjksMTMgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5RXhjZXB0aW9uX0hFQUQKKyAgICBQeU9iamVjdCAqbXNnOworICAgIFB5T2JqZWN0ICpuYW1lOworICAgIFB5T2JqZWN0ICpwYXRoOworfSBQeUltcG9ydEVycm9yT2JqZWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlFeGNlcHRpb25fSEVBRAogICAgIFB5T2JqZWN0ICplbmNvZGluZzsKICAgICBQeU9iamVjdCAqb2JqZWN0OwogICAgIFB5X3NzaXplX3Qgc3RhcnQ7CkBAIC00NSwxOCArNTMsMjMgQEAKICAgICBQeU9iamVjdCAqbXllcnJubzsKICAgICBQeU9iamVjdCAqc3RyZXJyb3I7CiAgICAgUHlPYmplY3QgKmZpbGVuYW1lOwotfSBQeUVudmlyb25tZW50RXJyb3JPYmplY3Q7Ci0KICNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlPYmplY3QgKndpbmVycm9yOworI2VuZGlmCisgICAgUHlfc3NpemVfdCB3cml0dGVuOyAgIC8qIG9ubHkgZm9yIEJsb2NraW5nSU9FcnJvciwgLTEgb3RoZXJ3aXNlICovCit9IFB5T1NFcnJvck9iamVjdDsKKwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5RXhjZXB0aW9uX0hFQUQKLSAgICBQeU9iamVjdCAqbXllcnJubzsKLSAgICBQeU9iamVjdCAqc3RyZXJyb3I7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lOwotICAgIFB5T2JqZWN0ICp3aW5lcnJvcjsKLX0gUHlXaW5kb3dzRXJyb3JPYmplY3Q7CisgICAgUHlPYmplY3QgKnZhbHVlOworfSBQeVN0b3BJdGVyYXRpb25PYmplY3Q7CisKKy8qIENvbXBhdGliaWxpdHkgdHlwZWRlZnMgKi8KK3R5cGVkZWYgUHlPU0Vycm9yT2JqZWN0IFB5RW52aXJvbm1lbnRFcnJvck9iamVjdDsKKyNpZmRlZiBNU19XSU5ET1dTCit0eXBlZGVmIFB5T1NFcnJvck9iamVjdCBQeVdpbmRvd3NFcnJvck9iamVjdDsKICNlbmRpZgotI2VuZGlmCisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIC8qIEVycm9yIGhhbmRsaW5nIGRlZmluaXRpb25zICovCiAKQEAgLTcwLDcgKzgzLDE5IEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5RXJyX0NsZWFyKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeUVycl9GZXRjaChQeU9iamVjdCAqKiwgUHlPYmplY3QgKiosIFB5T2JqZWN0ICoqKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlFcnJfUmVzdG9yZShQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlfRmF0YWxFcnJvcihjb25zdCBjaGFyICptZXNzYWdlKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlFcnJfR2V0RXhjSW5mbyhQeU9iamVjdCAqKiwgUHlPYmplY3QgKiosIFB5T2JqZWN0ICoqKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlFcnJfU2V0RXhjSW5mbyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKworI2lmIGRlZmluZWQoX19jbGFuZ19fKSB8fCBcCisgICAgKGRlZmluZWQoX19HTlVDX01BSk9SX18pICYmIFwKKyAgICAgKChfX0dOVUNfTUFKT1JfXyA+PSAzKSB8fCBcCisgICAgICAoX19HTlVDX01BSk9SX18gPT0gMikgJiYgKF9fR05VQ19NSU5PUl9fID49IDUpKSkKKyNkZWZpbmUgX1B5X05PX1JFVFVSTiBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKQorI2Vsc2UKKyNkZWZpbmUgX1B5X05PX1JFVFVSTgorI2VuZGlmCisKK1B5QVBJX0ZVTkModm9pZCkgUHlfRmF0YWxFcnJvcihjb25zdCBjaGFyICptZXNzYWdlKSBfUHlfTk9fUkVUVVJOOwogCiAjaWYgZGVmaW5lZChQeV9ERUJVRykgfHwgZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkKICNkZWZpbmUgX1B5RXJyX09DQ1VSUkVEKCkgUHlFcnJfT2NjdXJyZWQoKQpAQCAtMTIyLDEwICsxNDcsOSBAQAogCiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Fzc2VydGlvbkVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19BdHRyaWJ1dGVFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQnVmZmVyRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0VPRkVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19GbG9hdGluZ1BvaW50RXJyb3I7Ci1QeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Vudmlyb25tZW50RXJyb3I7Ci1QeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0lPRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX09TRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0ltcG9ydEVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19JbmRleEVycm9yOwpAQCAtMTUwLDYgKzE3NCwyNyBAQAogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1ZhbHVlRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yOworCitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Jsb2NraW5nSU9FcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQnJva2VuUGlwZUVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19DaGlsZFByb2Nlc3NFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQ29ubmVjdGlvbkVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Db25uZWN0aW9uQWJvcnRlZEVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Db25uZWN0aW9uUmVmdXNlZEVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Db25uZWN0aW9uUmVzZXRFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfRmlsZUV4aXN0c0Vycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19GaWxlTm90Rm91bmRFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSW50ZXJydXB0ZWRFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSXNBRGlyZWN0b3J5RXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX05vdEFEaXJlY3RvcnlFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfUGVybWlzc2lvbkVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Qcm9jZXNzTG9va3VwRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1RpbWVvdXRFcnJvcjsKKworCisvKiBDb21wYXRpYmlsaXR5IGFsaWFzZXMgKi8KK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfRW52aXJvbm1lbnRFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSU9FcnJvcjsKICNpZmRlZiBNU19XSU5ET1dTCiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1dpbmRvd3NFcnJvcjsKICNlbmRpZgpAQCAtMTU3LDggKzIwMiw2IEBACiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1ZNU0Vycm9yOwogI2VuZGlmCiAKLVB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQnVmZmVyRXJyb3I7Ci0KIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0OwogCiAvKiBQcmVkZWZpbmVkIHdhcm5pbmcgY2F0ZWdvcmllcyAqLwpAQCAtMTk4LDggKzI0MSw2IEBACiAgICAgKTsKIAogI2lmZGVmIE1TX1dJTkRPV1MKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoCi0gICAgaW50LCBjb25zdCBjaGFyICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZSgKICAgICBpbnQgaWVyciwKICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSAgICAgICAgLyogZGVjb2RlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nICovCkBAIC0yMjQsNiArMjY1LDExIEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5T2JqZWN0ICosIGludCk7CiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEV4Y1dpdGhBcmdzS3dhcmdzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEltcG9ydEVycm9yKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgUHlPYmplY3QgKik7CisKIC8qIEV4cG9ydCB0aGUgb2xkIGZ1bmN0aW9uIHNvIHRoYXQgdGhlIGV4aXN0aW5nIEFQSSByZW1haW5zIGF2YWlsYWJsZTogKi8KIFB5QVBJX0ZVTkModm9pZCkgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZW5vKTsKQEAgLTI5Myw2ICszMzksMTIgQEAKICAgICBQeV9zc2l6ZV90IGVuZCwKICAgICBjb25zdCBjaGFyICpyZWFzb24gICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfQ3JlYXRlKAorICAgIFB5T2JqZWN0ICpvYmplY3QsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGVuZCwKKyAgICBjb25zdCBjaGFyICpyZWFzb24gICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KKyAgICApOwogI2VuZGlmCiAKIC8qIGdldCB0aGUgZW5jb2RpbmcgYXR0cmlidXRlICovCkBAIC0zNDgsNyArNDAwLDYgQEAKICAgICBjb25zdCBjaGFyICpyZWFzb24gICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwogCi0KIC8qIFRoZXNlIEFQSXMgYXJlbid0IHJlYWxseSBwYXJ0IG9mIHRoZSBlcnJvciBpbXBsZW1lbnRhdGlvbiwgYnV0CiAgICBvZnRlbiBuZWVkZWQgdG8gZm9ybWF0IGVycm9yIG1lc3NhZ2VzOyB0aGUgbmF0aXZlIEMgbGliIEFQSXMgYXJlCiAgICBub3QgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMsIHdoaWNoIGlzIHdoeSB3ZSBwcm92aWRlIGVtdWxhdGlvbnMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlleHBhdC5oIGIvSW5jbHVkZS9weWV4cGF0LmgKaW5kZXggNTM0MGVmNS4uMTY4YjViMiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWV4cGF0LmgKKysrIGIvSW5jbHVkZS9weWV4cGF0LmgKQEAgLTQzLDYgKzQzLDggQEAKICAgICAgICAgWE1MX1BhcnNlciBwYXJzZXIsIFhNTF9Vbmtub3duRW5jb2RpbmdIYW5kbGVyIGhhbmRsZXIsCiAgICAgICAgIHZvaWQgKmVuY29kaW5nSGFuZGxlckRhdGEpOwogICAgIHZvaWQgKCpTZXRVc2VyRGF0YSkoWE1MX1BhcnNlciBwYXJzZXIsIHZvaWQgKnVzZXJEYXRhKTsKKyAgICB2b2lkICgqU2V0U3RhcnREb2N0eXBlRGVjbEhhbmRsZXIpKFhNTF9QYXJzZXIgcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX1N0YXJ0RG9jdHlwZURlY2xIYW5kbGVyIHN0YXJ0KTsKICAgICAvKiBhbHdheXMgYWRkIG5ldyBzdHVmZiB0byB0aGUgZW5kISAqLwogfTsKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weW1hY3JvLmggYi9JbmNsdWRlL3B5bWFjcm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmI0YjNkCi0tLSAvZGV2L251bGwKKysrIGIvSW5jbHVkZS9weW1hY3JvLmgKQEAgLTAsMCArMSw3MiBAQAorI2lmbmRlZiBQeV9QWU1BQ1JPX0gKKyNkZWZpbmUgUHlfUFlNQUNST19ICisKKyNkZWZpbmUgUHlfTUlOKHgsIHkpICgoKHgpID4gKHkpKSA/ICh5KSA6ICh4KSkKKyNkZWZpbmUgUHlfTUFYKHgsIHkpICgoKHgpID4gKHkpKSA/ICh4KSA6ICh5KSkKKworLyogQXJndW1lbnQgbXVzdCBiZSBhIGNoYXIgb3IgYW4gaW50IGluIFstMTI4LCAxMjddIG9yIFswLCAyNTVdLiAqLworI2RlZmluZSBQeV9DSEFSTUFTSyhjKSAoKHVuc2lnbmVkIGNoYXIpKChjKSAmIDB4ZmYpKQorCisKKy8qIEFzc2VydCBhIGJ1aWxkLXRpbWUgZGVwZW5kZW5jeSwgYXMgYW4gZXhwcmVzc2lvbi4KKworICAgWW91ciBjb21waWxlIHdpbGwgZmFpbCBpZiB0aGUgY29uZGl0aW9uIGlzbid0IHRydWUsIG9yIGNhbid0IGJlIGV2YWx1YXRlZAorICAgYnkgdGhlIGNvbXBpbGVyLiBUaGlzIGNhbiBiZSB1c2VkIGluIGFuIGV4cHJlc3Npb246IGl0cyB2YWx1ZSBpcyAwLgorCisgICBFeGFtcGxlOgorCisgICAjZGVmaW5lIGZvb190b19jaGFyKGZvbykgIFwKKyAgICAgICAoKGNoYXIgKikoZm9vKSAgICAgICAgXAorICAgICAgICArIFB5X0JVSUxEX0FTU0VSVF9FWFBSKG9mZnNldG9mKHN0cnVjdCBmb28sIHN0cmluZykgPT0gMCkpCisKKyAgIFdyaXR0ZW4gYnkgUnVzdHkgUnVzc2VsbCwgcHVibGljIGRvbWFpbiwgaHR0cDovL2Njb2RlYXJjaGl2ZS5uZXQvICovCisjZGVmaW5lIFB5X0JVSUxEX0FTU0VSVF9FWFBSKGNvbmQpIFwKKyAgICAoc2l6ZW9mKGNoYXIgWzEgLSAyKiEoY29uZCldKSAtIDEpCisKKy8qIEdldCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgdmlzaWJsZSBhcnJheQorCisgICBUaGlzIGRvZXMgbm90IHdvcmsgb24gcG9pbnRlcnMsIG9yIGFycmF5cyBkZWNsYXJlZCBhcyBbXSwgb3IgZnVuY3Rpb24KKyAgIHBhcmFtZXRlcnMuIFdpdGggY29ycmVjdCBjb21waWxlciBzdXBwb3J0LCBzdWNoIHVzYWdlIHdpbGwgY2F1c2UgYSBidWlsZAorICAgZXJyb3IgKHNlZSBQeV9CVUlMRF9BU1NFUlRfRVhQUikuCisKKyAgIFdyaXR0ZW4gYnkgUnVzdHkgUnVzc2VsbCwgcHVibGljIGRvbWFpbiwgaHR0cDovL2Njb2RlYXJjaGl2ZS5uZXQvCisKKyAgIFJlcXVpcmVzIGF0IEdDQyAzLjErICovCisjaWYgKGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykgJiYgXAorICAgICgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VX01JTk9SX18gPj0gMSkpIHx8IChfX0dOVUNfXyA+PSA0KSkKKy8qIFR3byBnY2MgZXh0ZW5zaW9ucy4KKyAgICZhWzBdIGRlZ3JhZGVzIHRvIGEgcG9pbnRlcjogYSBkaWZmZXJlbnQgdHlwZSBmcm9tIGFuIGFycmF5ICovCisjZGVmaW5lIFB5X0FSUkFZX0xFTkdUSChhcnJheSkgXAorICAgIChzaXplb2YoYXJyYXkpIC8gc2l6ZW9mKChhcnJheSlbMF0pIFwKKyAgICAgKyBQeV9CVUlMRF9BU1NFUlRfRVhQUighX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoYXJyYXkpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mKCYoYXJyYXkpWzBdKSkpKQorI2Vsc2UKKyNkZWZpbmUgUHlfQVJSQVlfTEVOR1RIKGFycmF5KSBcCisgICAgKHNpemVvZihhcnJheSkgLyBzaXplb2YoKGFycmF5KVswXSkpCisjZW5kaWYKKworCisvKiBEZWZpbmUgbWFjcm9zIGZvciBpbmxpbmUgZG9jdW1lbnRhdGlvbi4gKi8KKyNkZWZpbmUgUHlEb2NfVkFSKG5hbWUpIHN0YXRpYyBjaGFyIG5hbWVbXQorI2RlZmluZSBQeURvY19TVFJWQVIobmFtZSxzdHIpIFB5RG9jX1ZBUihuYW1lKSA9IFB5RG9jX1NUUihzdHIpCisjaWZkZWYgV0lUSF9ET0NfU1RSSU5HUworI2RlZmluZSBQeURvY19TVFIoc3RyKSBzdHIKKyNlbHNlCisjZGVmaW5lIFB5RG9jX1NUUihzdHIpICIiCisjZW5kaWYKKworLyogQmVsb3cgImEiIGlzIGEgcG93ZXIgb2YgMi4gKi8KKy8qIFJvdW5kIGRvd24gc2l6ZSAibiIgdG8gYmUgYSBtdWx0aXBsZSBvZiAiYSIuICovCisjZGVmaW5lIF9QeV9TSVpFX1JPVU5EX0RPV04obiwgYSkgKChzaXplX3QpKG4pICYgfihzaXplX3QpKChhKSAtIDEpKQorLyogUm91bmQgdXAgc2l6ZSAibiIgdG8gYmUgYSBtdWx0aXBsZSBvZiAiYSIuICovCisjZGVmaW5lIF9QeV9TSVpFX1JPVU5EX1VQKG4sIGEpICgoKHNpemVfdCkobikgKyBcCisgICAgICAgIChzaXplX3QpKChhKSAtIDEpKSAmIH4oc2l6ZV90KSgoYSkgLSAxKSkKKy8qIFJvdW5kIHBvaW50ZXIgInAiIGRvd24gdG8gdGhlIGNsb3Nlc3QgImEiLWFsaWduZWQgYWRkcmVzcyA8PSAicCIuICovCisjZGVmaW5lIF9QeV9BTElHTl9ET1dOKHAsIGEpICgodm9pZCAqKSgoUHlfdWludHB0cl90KShwKSAmIH4oUHlfdWludHB0cl90KSgoYSkgLSAxKSkpCisvKiBSb3VuZCBwb2ludGVyICJwIiB1cCB0byB0aGUgY2xvc2VzdCAiYSItYWxpZ25lZCBhZGRyZXNzID49ICJwIi4gKi8KKyNkZWZpbmUgX1B5X0FMSUdOX1VQKHAsIGEpICgodm9pZCAqKSgoKFB5X3VpbnRwdHJfdCkocCkgKyBcCisgICAgICAgIChQeV91aW50cHRyX3QpKChhKSAtIDEpKSAmIH4oUHlfdWludHB0cl90KSgoYSkgLSAxKSkpCisvKiBDaGVjayBpZiBwb2ludGVyICJwIiBpcyBhbGlnbmVkIHRvICJhIi1ieXRlcyBib3VuZGFyeS4gKi8KKyNkZWZpbmUgX1B5X0lTX0FMSUdORUQocCwgYSkgKCEoKFB5X3VpbnRwdHJfdCkocCkgJiAoUHlfdWludHB0cl90KSgoYSkgLSAxKSkpCisKKyNlbmRpZiAvKiBQeV9QWU1BQ1JPX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHltYXRoLmggYi9JbmNsdWRlL3B5bWF0aC5oCmluZGV4IGI0ZWRhNjYuLjYyYTZjNDIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHltYXRoLmgKKysrIGIvSW5jbHVkZS9weW1hdGguaApAQCAtMzcsMTIgKzM3LDYgQEAKICNlbmRpZiAvKiBfX1NURENfXyAqLwogI2VuZGlmIC8qIF9NU0NfVkVSICovCiAKLSNpZmRlZiBfT1NGX1NPVVJDRQotLyogT1NGMSA1LjEgZG9lc24ndCBtYWtlIHRoZXNlIGF2YWlsYWJsZSB3aXRoIFhPUEVOX1NPVVJDRV9FWFRFTkRFRCBkZWZpbmVkICovCi1leHRlcm4gaW50IGZpbml0ZShkb3VibGUpOwotZXh0ZXJuIGRvdWJsZSBjb3B5c2lnbihkb3VibGUsIGRvdWJsZSk7Ci0jZW5kaWYKLQogLyogSGlnaCBwcmVjaXNpb24gZGVmaW50aW9uIG9mIHBpIGFuZCBlIChFdWxlcikKICAqIFRoZSB2YWx1ZXMgYXJlIHRha2VuIGZyb20gbGliYzYncyBtYXRoLmguCiAgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlwb3J0LmggYi9JbmNsdWRlL3B5cG9ydC5oCmluZGV4IGM3NGZmOWMuLmU0ZTM2MDEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlwb3J0LmgKKysrIGIvSW5jbHVkZS9weXBvcnQuaApAQCAtMTQ4LDcgKzE0OCw3IEBACiAjZGVmaW5lIF9QeUhBU0hfTVVMVElQTElFUiAxMDAwMDAzVUwgIC8qIDB4ZjQyNDMgKi8KIAogLyogUGFyYW1ldGVycyB1c2VkIGZvciB0aGUgbnVtZXJpYyBoYXNoIGltcGxlbWVudGF0aW9uLiAgU2VlIG5vdGVzIGZvcgotICAgX1B5SGFzaF9Eb3VibGUgaW4gT2JqZWN0cy9vYmplY3QuYy4gIE51bWVyaWMgaGFzaGVzIGFyZSBiYXNlZCBvbgorICAgX1B5X0hhc2hEb3VibGUgaW4gT2JqZWN0cy9vYmplY3QuYy4gIE51bWVyaWMgaGFzaGVzIGFyZSBiYXNlZCBvbgogICAgcmVkdWN0aW9uIG1vZHVsbyB0aGUgcHJpbWUgMioqX1B5SEFTSF9CSVRTIC0gMS4gKi8KIAogI2lmIFNJWkVPRl9WT0lEX1AgPj0gOApAQCAtNjYyLDcgKzY2Miw3IEBACiAvKiBPbiBRTlggNiwgc3RydWN0IHRlcm1pbyBtdXN0IGJlIGRlY2xhcmVkIGJ5IGluY2x1ZGluZyBzeXMvdGVybWlvLmgKICAgIGlmIFRDR0VUQSwgVENTRVRBLCBUQ1NFVEFXLCBvciBUQ1NFVEFGIGFyZSB1c2VkLiAgc3lzL3Rlcm1pby5oIG11c3QKICAgIGJlIGluY2x1ZGVkIGJlZm9yZSB0ZXJtaW9zLmggb3IgaXQgd2lsbCBnZW5lcmF0ZSBhbiBlcnJvci4gKi8KLSNpZmRlZiBIQVZFX1NZU19URVJNSU9fSAorI2lmIGRlZmluZWQoSEFWRV9TWVNfVEVSTUlPX0gpICYmICFkZWZpbmVkKF9faHB1eCkKICNpbmNsdWRlIDxzeXMvdGVybWlvLmg+CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXN0YXRlLmggYi9JbmNsdWRlL3B5c3RhdGUuaAppbmRleCAwNjBlZmE3Li4yMDE3YjAyIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5c3RhdGUuaAorKysgYi9JbmNsdWRlL3B5c3RhdGUuaApAQCAtMjUsNyArMjUsNyBAQAogICAgIFB5T2JqZWN0ICptb2R1bGVzX2J5X2luZGV4OwogICAgIFB5T2JqZWN0ICpzeXNkaWN0OwogICAgIFB5T2JqZWN0ICpidWlsdGluczsKLSAgICBQeU9iamVjdCAqbW9kdWxlc19yZWxvYWRpbmc7CisgICAgUHlPYmplY3QgKmltcG9ydGxpYjsKIAogICAgIFB5T2JqZWN0ICpjb2RlY19zZWFyY2hfcGF0aDsKICAgICBQeU9iamVjdCAqY29kZWNfc2VhcmNoX2NhY2hlOwpAQCAtMzMsNiArMzMsNyBAQAogICAgIGludCBjb2RlY3NfaW5pdGlhbGl6ZWQ7CiAgICAgaW50IGZzY29kZWNfaW5pdGlhbGl6ZWQ7CiAKKwogI2lmZGVmIEhBVkVfRExPUEVOCiAgICAgaW50IGRsb3BlbmZsYWdzOwogI2VuZGlmCkBAIC03NCw5ICs3NSw5IEBACiAgICAgc3RydWN0IF9mcmFtZSAqZnJhbWU7CiAgICAgaW50IHJlY3Vyc2lvbl9kZXB0aDsKICAgICBjaGFyIG92ZXJmbG93ZWQ7IC8qIFRoZSBzdGFjayBoYXMgb3ZlcmZsb3dlZC4gQWxsb3cgNTAgbW9yZSBjYWxscwotCQkgICAgICAgIHRvIGhhbmRsZSB0aGUgcnVudGltZSBlcnJvci4gKi8KLSAgICBjaGFyIHJlY3Vyc2lvbl9jcml0aWNhbDsgLyogVGhlIGN1cnJlbnQgY2FsbHMgbXVzdCBub3QgY2F1c2UgCi0JCQkJYSBzdGFjayBvdmVyZmxvdy4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGhhbmRsZSB0aGUgcnVudGltZSBlcnJvci4gKi8KKyAgICBjaGFyIHJlY3Vyc2lvbl9jcml0aWNhbDsgLyogVGhlIGN1cnJlbnQgY2FsbHMgbXVzdCBub3QgY2F1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBzdGFjayBvdmVyZmxvdy4gKi8KICAgICAvKiAndHJhY2luZycga2VlcHMgdHJhY2sgb2YgdGhlIGV4ZWN1dGlvbiBkZXB0aCB3aGVuIHRyYWNpbmcvcHJvZmlsaW5nLgogICAgICAgIFRoaXMgaXMgdG8gcHJldmVudCB0aGUgYWN0dWFsIHRyYWNlL3Byb2ZpbGUgY29kZSBmcm9tIGJlaW5nIHJlY29yZGVkIGluCiAgICAgICAgdGhlIHRyYWNlL3Byb2ZpbGUuICovCkBAIC0xMjYsNiArMTI3LDExIEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcihQeUludGVycHJldGVyU3RhdGUgKik7CiBQeUFQSV9GVU5DKHZvaWQpIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoUHlJbnRlcnByZXRlclN0YXRlICopOwogUHlBUElfRlVOQyhpbnQpIF9QeVN0YXRlX0FkZE1vZHVsZShQeU9iamVjdCosIHN0cnVjdCBQeU1vZHVsZURlZiopOworI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwMzAwMDAKKy8qIE5ldyBpbiAzLjMgKi8KK1B5QVBJX0ZVTkMoaW50KSBQeVN0YXRlX0FkZE1vZHVsZShQeU9iamVjdCosIHN0cnVjdCBQeU1vZHVsZURlZiopOworUHlBUElfRlVOQyhpbnQpIFB5U3RhdGVfUmVtb3ZlTW9kdWxlKHN0cnVjdCBQeU1vZHVsZURlZiopOworI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlTdGF0ZV9GaW5kTW9kdWxlKHN0cnVjdCBQeU1vZHVsZURlZiopOwogCiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlUaHJlYWRTdGF0ZV9OZXcoUHlJbnRlcnByZXRlclN0YXRlICopOwpAQCAtMTYzLDYgKzE2OSw4IEBACiAgICAgZW51bSB7UHlHSUxTdGF0ZV9MT0NLRUQsIFB5R0lMU3RhdGVfVU5MT0NLRUR9CiAgICAgICAgIFB5R0lMU3RhdGVfU1RBVEU7CiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorCiAvKiBFbnN1cmUgdGhhdCB0aGUgY3VycmVudCB0aHJlYWQgaXMgcmVhZHkgdG8gY2FsbCB0aGUgUHl0aG9uCiAgICBDIEFQSSwgcmVnYXJkbGVzcyBvZiB0aGUgY3VycmVudCBzdGF0ZSBvZiBQeXRob24sIG9yIG9mIGl0cwogICAgdGhyZWFkIGxvY2suICBUaGlzIG1heSBiZSBjYWxsZWQgYXMgbWFueSB0aW1lcyBhcyBkZXNpcmVkCkBAIC0yMDQsNiArMjEyLDggQEAKICovCiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUodm9pZCk7CiAKKyNlbmRpZiAgIC8qICNpZmRlZiBXSVRIX1RIUkVBRCAqLworCiAvKiBUaGUgaW1wbGVtZW50YXRpb24gb2Ygc3lzLl9jdXJyZW50X2ZyYW1lcygpICBSZXR1cm5zIGEgZGljdCBtYXBwaW5nCiAgICB0aHJlYWQgaWQgdG8gdGhhdCB0aHJlYWQncyBjdXJyZW50IGZyYW1lLgogKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aG9ucnVuLmggYi9JbmNsdWRlL3B5dGhvbnJ1bi5oCmluZGV4IGUyNDRjZTcuLjRkMjRiMmQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHl0aG9ucnVuLmgKKysrIGIvSW5jbHVkZS9weXRob25ydW4uaApAQCAtMzAsNiArMzAsOSBAQAogCiBQeUFQSV9GVU5DKHZvaWQpIFB5X0luaXRpYWxpemUodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5X0luaXRpYWxpemVFeChpbnQpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyh2b2lkKSBfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoaW50LCBpbnQpOworI2VuZGlmCiBQeUFQSV9GVU5DKHZvaWQpIFB5X0ZpbmFsaXplKHZvaWQpOwogUHlBUElfRlVOQyhpbnQpIFB5X0lzSW5pdGlhbGl6ZWQodm9pZCk7CiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlfTmV3SW50ZXJwcmV0ZXIodm9pZCk7CkBAIC04Miw5ICs4NSwxMiBAQAogICAgIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzKEZQLCBTLCBCLCAwKQogI2VuZGlmCiBQeUFQSV9GVU5DKHN0cnVjdCBfbm9kZSAqKSBQeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzKGNvbnN0IGNoYXIgKiwgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCk7CitQeUFQSV9GVU5DKHN0cnVjdCBfbm9kZSAqKSBQeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzRmlsZW5hbWUoY29uc3QgY2hhciAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIGludCk7CiBQeUFQSV9GVU5DKHN0cnVjdCBfbm9kZSAqKSBQeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncyhGSUxFICosIGNvbnN0IGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBpbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBpbnQpOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5UnVuX1N0cmluZ0ZsYWdzKGNvbnN0IGNoYXIgKiwgaW50LCBQeU9iamVjdCAqLApAQCAtMTc5LDkgKzE4NSw2IEBACiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0Q29tcGlsZXIodm9pZCk7CiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0QnVpbGRJbmZvKHZvaWQpOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhjb25zdCBjaGFyICopIF9QeV9zdm52ZXJzaW9uKHZvaWQpOwotUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X1N1YnZlcnNpb25SZXZpc2lvbih2b2lkKTsKLVB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9TdWJ2ZXJzaW9uU2hvcnRCcmFuY2godm9pZCk7CiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgX1B5X2hnaWRlbnRpZmllcih2b2lkKTsKIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBfUHlfaGd2ZXJzaW9uKHZvaWQpOwogI2VuZGlmCkBAIC0xOTEsNyArMTk0LDcgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5QnVpbHRpbl9Jbml0KHZvaWQpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlTeXNfSW5pdCh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0X0luaXQodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeUV4Y19Jbml0KHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlFeGNfSW5pdChQeU9iamVjdCAqIGJsdGlubW9kKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0SG9va3NfSW5pdCh2b2lkKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlGcmFtZV9Jbml0KHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlGbG9hdF9Jbml0KHZvaWQpOwpAQCAtMjE1LDYgKzIxOCw3IEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5RmxvYXRfRmluaSh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlPU19GaW5pSW50ZXJydXB0cyh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5R0NfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlTbGljZV9GaW5pKHZvaWQpOwogCiBQeUFQSV9EQVRBKFB5VGhyZWFkU3RhdGUgKikgX1B5X0ZpbmFsaXppbmc7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aHJlYWQuaCBiL0luY2x1ZGUvcHl0aHJlYWQuaAppbmRleCA5ODA2YzYxLi42ZTlmMzAzIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5dGhyZWFkLmgKKysrIGIvSW5jbHVkZS9weXRocmVhZC5oCkBAIC0zMiw3ICszMiw3IEBACiAgICBvbiBhIGxvY2sgKHNlZSBQeVRocmVhZF9hY3F1aXJlX2xvY2tfdGltZWQoKSBiZWxvdykuCiAgICBQWV9USU1FT1VUX01BWCBpcyB0aGUgaGlnaGVzdCB1c2FibGUgdmFsdWUgKGluIG1pY3Jvc2Vjb25kcykgb2YgdGhhdAogICAgdHlwZSwgYW5kIGRlcGVuZHMgb24gdGhlIHN5c3RlbSB0aHJlYWRpbmcgQVBJLgotICAgCisKICAgIE5PVEU6IHRoaXMgaXNuJ3QgdGhlIHNhbWUgdmFsdWUgYXMgYF90aHJlYWQuVElNRU9VVF9NQVhgLiAgVGhlIF90aHJlYWQKICAgIG1vZHVsZSBleHBvc2VzIGEgaGlnaGVyLWxldmVsIEFQSSwgd2l0aCB0aW1lb3V0cyBleHByZXNzZWQgaW4gc2Vjb25kcwogICAgYW5kIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgYWxsb3dlZC4KQEAgLTc0LDYgKzc0LDggQEAKIFB5QVBJX0ZVTkMoc2l6ZV90KSBQeVRocmVhZF9nZXRfc3RhY2tzaXplKHZvaWQpOwogUHlBUElfRlVOQyhpbnQpIFB5VGhyZWFkX3NldF9zdGFja3NpemUoc2l6ZV90KTsKIAorUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VGhyZWFkX0dldEluZm8odm9pZCk7CisKIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIChUTFMpIEFQSSAqLwogUHlBUElfRlVOQyhpbnQpIFB5VGhyZWFkX2NyZWF0ZV9rZXkodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5VGhyZWFkX2RlbGV0ZV9rZXkoaW50KTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aW1lLmggYi9JbmNsdWRlL3B5dGltZS5oCmluZGV4IGQ3MDdiZGIuLjUyOTAyZjUgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHl0aW1lLmgKKysrIGIvSW5jbHVkZS9weXRpbWUuaApAQCAtMyw2ICszLDcgQEAKICNkZWZpbmUgUHlfUFlUSU1FX0gKIAogI2luY2x1ZGUgInB5Y29uZmlnLmgiIC8qIGluY2x1ZGUgZm9yIGRlZmluZXMgKi8KKyNpbmNsdWRlICJvYmplY3QuaCIKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBTeW1ib2xzIGFuZCBtYWNyb3MgdG8gc3VwcGx5IHBsYXRmb3JtLWluZGVwZW5kZW50IGludGVyZmFjZXMgdG8gdGltZSByZWxhdGVkCkBAIC0yMSwxMSArMjIsMjUgQEAKIH0gX1B5VGltZV90aW1ldmFsOwogI2VuZGlmCiAKKy8qIFN0cnVjdHVyZSB1c2VkIGJ5IHRpbWUuZ2V0X2Nsb2NrX2luZm8oKSAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGNvbnN0IGNoYXIgKmltcGxlbWVudGF0aW9uOworICAgIGludCBtb25vdG9uaWM7CisgICAgaW50IGFkanVzdGFibGU7CisgICAgZG91YmxlIHJlc29sdXRpb247Cit9IF9QeV9jbG9ja19pbmZvX3Q7CisKIC8qIFNpbWlsYXIgdG8gUE9TSVggZ2V0dGltZW9mZGF5IGJ1dCBjYW5ub3QgZmFpbC4gIElmIHN5c3RlbSBnZXR0aW1lb2ZkYXkKICAqIGZhaWxzIG9yIGlzIG5vdCBhdmFpbGFibGUsIGZhbGwgYmFjayB0byBsb3dlciByZXNvbHV0aW9uIGNsb2Nrcy4KICAqLwogUHlBUElfRlVOQyh2b2lkKSBfUHlUaW1lX2dldHRpbWVvZmRheShfUHlUaW1lX3RpbWV2YWwgKnRwKTsKIAorLyogU2ltaWxhciB0byBfUHlUaW1lX2dldHRpbWVvZmRheSgpIGJ1dCByZXRyaWV2ZSBhbHNvIGluZm9ybWF0aW9uIG9uIHRoZQorICogY2xvY2sgdXNlZCB0byBnZXQgdGhlIGN1cnJlbnQgdGltZS4gKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5VGltZV9nZXR0aW1lb2ZkYXlfaW5mbygKKyAgICBfUHlUaW1lX3RpbWV2YWwgKnRwLAorICAgIF9QeV9jbG9ja19pbmZvX3QgKmluZm8pOworCiAjZGVmaW5lIF9QeVRpbWVfQUREX1NFQ09ORFModHYsIGludGVydmFsKSBcCiBkbyB7IFwKICAgICB0di50dl91c2VjICs9IChsb25nKSAoKChsb25nKSBpbnRlcnZhbCAtIGludGVydmFsKSAqIDEwMDAwMDApOyBcCkBAIC0zNyw2ICs1MiwzNyBAQAogICAgICgodHZfZW5kLnR2X3NlYyAtIHR2X3N0YXJ0LnR2X3NlYykgKyBcCiAgICAgICh0dl9lbmQudHZfdXNlYyAtIHR2X3N0YXJ0LnR2X3VzZWMpICogMC4wMDAwMDEpCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIENvbnZlcnQgYSBudW1iZXIgb2Ygc2Vjb25kcywgaW50IG9yIGZsb2F0LCB0byB0aW1lX3QuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9PYmplY3RUb1RpbWVfdCgKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIHRpbWVfdCAqc2VjKTsKKworLyogQ29udmVydCBhIHRpbWVfdCB0byBhIFB5TG9uZy4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5TG9uZ19Gcm9tVGltZV90KAorICAgIHRpbWVfdCBzZWMpOworCisvKiBDb252ZXJ0IGEgUHlMb25nIHRvIGEgdGltZV90LiAqLworUHlBUElfRlVOQyh0aW1lX3QpIF9QeUxvbmdfQXNUaW1lX3QoCisgICAgUHlPYmplY3QgKm9iaik7CisKKy8qIENvbnZlcnQgYSBudW1iZXIgb2Ygc2Vjb25kcywgaW50IG9yIGZsb2F0LCB0byBhIHRpbWV2YWwgc3RydWN0dXJlLgorICAgdXNlYyBpcyBpbiB0aGUgcmFuZ2UgWzA7IDk5OTk5OV0gYW5kIHJvdW5kZWQgdG93YXJkcyB6ZXJvLgorICAgRm9yIGV4YW1wbGUsIC0xLjIgaXMgY29udmVydGVkIHRvICgtMiwgODAwMDAwKS4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX09iamVjdFRvVGltZXZhbCgKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIHRpbWVfdCAqc2VjLAorICAgIGxvbmcgKnVzZWMpOworCisvKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHNlY29uZHMsIGludCBvciBmbG9hdCwgdG8gYSB0aW1lc3BlYyBzdHJ1Y3R1cmUuCisgICBuc2VjIGlzIGluIHRoZSByYW5nZSBbMDsgOTk5OTk5OTk5XSBhbmQgcm91bmRlZCB0b3dhcmRzIHplcm8uCisgICBGb3IgZXhhbXBsZSwgLTEuMiBpcyBjb252ZXJ0ZWQgdG8gKC0yLCA4MDAwMDAwMDApLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYygKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIHRpbWVfdCAqc2VjLAorICAgIGxvbmcgKm5zZWMpOworI2VuZGlmCisKIC8qIER1bW15IHRvIGZvcmNlIGxpbmtpbmcuICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRpbWVfSW5pdCh2b2lkKTsKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zZXRvYmplY3QuaCBiL0luY2x1ZGUvc2V0b2JqZWN0LmgKaW5kZXggNjIzNDExMS4uYTE0ODc0YiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zZXRvYmplY3QuaAorKysgYi9JbmNsdWRlL3NldG9iamVjdC5oCkBAIC05OSw2ICs5OSw5IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5U2V0X1BvcChQeU9iamVjdCAqc2V0KTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlTZXRfVXBkYXRlKFB5T2JqZWN0ICpzZXQsIFB5T2JqZWN0ICppdGVyYWJsZSk7CisKK1B5QVBJX0ZVTkMoaW50KSBQeVNldF9DbGVhckZyZWVMaXN0KHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlTZXRfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpOwogI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaCBiL0luY2x1ZGUvc3RydWN0bWVtYmVyLmgKaW5kZXggMGI4NWIyYS4uOTQ4ZjY5MCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaAorKysgYi9JbmNsdWRlL3N0cnVjdG1lbWJlci5oCkBAIC05LDE2ICs5LDYgQEAKIAogI2luY2x1ZGUgPHN0ZGRlZi5oPiAvKiBGb3Igb2Zmc2V0b2YgKi8KIAotLyogVGhlIG9mZnNldG9mKCkgbWFjcm8gY2FsY3VsYXRlcyB0aGUgb2Zmc2V0IG9mIGEgc3RydWN0dXJlIG1lbWJlcgotICAgaW4gaXRzIHN0cnVjdHVyZS4gIFVuZm9ydHVuYXRlbHkgdGhpcyBjYW5ub3QgYmUgd3JpdHRlbiBkb3duCi0gICBwb3J0YWJseSwgaGVuY2UgaXQgaXMgcHJvdmlkZWQgYnkgYSBTdGFuZGFyZCBDIGhlYWRlciBmaWxlLgotICAgRm9yIHByZS1TdGFuZGFyZCBDIGNvbXBpbGVycywgaGVyZSBpcyBhIHZlcnNpb24gdGhhdCB1c3VhbGx5IHdvcmtzCi0gICAoYnV0IHdhdGNoIG91dCEpOiAqLwotCi0jaWZuZGVmIG9mZnNldG9mCi0jZGVmaW5lIG9mZnNldG9mKHR5cGUsIG1lbWJlcikgKCAoaW50KSAmICgodHlwZSopMCkgLT4gbWVtYmVyICkKLSNlbmRpZgotCiAvKiBBbiBhcnJheSBvZiBQeU1lbWJlckRlZiBzdHJ1Y3R1cmVzIGRlZmluZXMgdGhlIG5hbWUsIHR5cGUgYW5kIG9mZnNldAogICAgb2Ygc2VsZWN0ZWQgbWVtYmVycyBvZiBhIEMgc3RydWN0dXJlLiAgVGhlc2UgY2FuIGJlIHJlYWQgYnkKICAgIFB5TWVtYmVyX0dldE9uZSgpIGFuZCBzZXQgYnkgUHlNZW1iZXJfU2V0T25lKCkgKGV4Y2VwdCBpZiB0aGVpciBSRUFET05MWQpAQCAtMjYsNDIgKzE2LDQxIEBACiAgICBwb2ludGVyIGlzIE5VTEwuICovCiAKIHR5cGVkZWYgc3RydWN0IFB5TWVtYmVyRGVmIHsKLQkvKiBDdXJyZW50IHZlcnNpb24sIHVzZSB0aGlzICovCi0JY2hhciAqbmFtZTsKLQlpbnQgdHlwZTsKLQlQeV9zc2l6ZV90IG9mZnNldDsKLQlpbnQgZmxhZ3M7Ci0JY2hhciAqZG9jOworICAgIGNoYXIgKm5hbWU7CisgICAgaW50IHR5cGU7CisgICAgUHlfc3NpemVfdCBvZmZzZXQ7CisgICAgaW50IGZsYWdzOworICAgIGNoYXIgKmRvYzsKIH0gUHlNZW1iZXJEZWY7CiAKIC8qIFR5cGVzICovCi0jZGVmaW5lIFRfU0hPUlQJCTAKLSNkZWZpbmUgVF9JTlQJCTEKLSNkZWZpbmUgVF9MT05HCQkyCi0jZGVmaW5lIFRfRkxPQVQJCTMKLSNkZWZpbmUgVF9ET1VCTEUJNAotI2RlZmluZSBUX1NUUklORwk1Ci0jZGVmaW5lIFRfT0JKRUNUCTYKKyNkZWZpbmUgVF9TSE9SVCAgICAgMAorI2RlZmluZSBUX0lOVCAgICAgICAxCisjZGVmaW5lIFRfTE9ORyAgICAgIDIKKyNkZWZpbmUgVF9GTE9BVCAgICAgMworI2RlZmluZSBUX0RPVUJMRSAgICA0CisjZGVmaW5lIFRfU1RSSU5HICAgIDUKKyNkZWZpbmUgVF9PQkpFQ1QgICAgNgogLyogWFhYIHRoZSBvcmRlcmluZyBoZXJlIGlzIHdlaXJkIGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eSAqLwotI2RlZmluZSBUX0NIQVIJCTcJLyogMS1jaGFyYWN0ZXIgc3RyaW5nICovCi0jZGVmaW5lIFRfQllURQkJOAkvKiA4LWJpdCBzaWduZWQgaW50ICovCisjZGVmaW5lIFRfQ0hBUiAgICAgIDcgICAvKiAxLWNoYXJhY3RlciBzdHJpbmcgKi8KKyNkZWZpbmUgVF9CWVRFICAgICAgOCAgIC8qIDgtYml0IHNpZ25lZCBpbnQgKi8KIC8qIHVuc2lnbmVkIHZhcmlhbnRzOiAqLwotI2RlZmluZSBUX1VCWVRFCQk5Ci0jZGVmaW5lIFRfVVNIT1JUCTEwCi0jZGVmaW5lIFRfVUlOVAkJMTEKLSNkZWZpbmUgVF9VTE9ORwkJMTIKKyNkZWZpbmUgVF9VQllURSAgICAgOQorI2RlZmluZSBUX1VTSE9SVCAgICAxMAorI2RlZmluZSBUX1VJTlQgICAgICAxMQorI2RlZmluZSBUX1VMT05HICAgICAxMgogCiAvKiBBZGRlZCBieSBKYWNrOiBzdHJpbmdzIGNvbnRhaW5lZCBpbiB0aGUgc3RydWN0dXJlICovCi0jZGVmaW5lIFRfU1RSSU5HX0lOUExBQ0UJMTMKKyNkZWZpbmUgVF9TVFJJTkdfSU5QTEFDRSAgICAxMwogCiAvKiBBZGRlZCBieSBMaWxsbzogYm9vbHMgY29udGFpbmVkIGluIHRoZSBzdHJ1Y3R1cmUgKGFzc3VtZWQgY2hhcikgKi8KLSNkZWZpbmUgVF9CT09MCQkxNAorI2RlZmluZSBUX0JPT0wgICAgICAxNAogCi0jZGVmaW5lIFRfT0JKRUNUX0VYCTE2CS8qIExpa2UgVF9PQkpFQ1QsIGJ1dCByYWlzZXMgQXR0cmlidXRlRXJyb3IKLQkJCQkgICB3aGVuIHRoZSB2YWx1ZSBpcyBOVUxMLCBpbnN0ZWFkIG9mCi0JCQkJICAgY29udmVydGluZyB0byBOb25lLiAqLworI2RlZmluZSBUX09CSkVDVF9FWCAxNiAgLyogTGlrZSBUX09CSkVDVCwgYnV0IHJhaXNlcyBBdHRyaWJ1dGVFcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgdmFsdWUgaXMgTlVMTCwgaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGluZyB0byBOb25lLiAqLwogI2lmZGVmIEhBVkVfTE9OR19MT05HCi0jZGVmaW5lIFRfTE9OR0xPTkcgICAgICAxNyAgCisjZGVmaW5lIFRfTE9OR0xPTkcgICAgICAxNwogI2RlZmluZSBUX1VMT05HTE9ORyAgICAgMTgKICNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLwogCkBAIC03MCwxMCArNTksMTAgQEAKIAogCiAvKiBGbGFncyAqLwotI2RlZmluZSBSRUFET05MWQkxCi0jZGVmaW5lIFJFQURfUkVTVFJJQ1RFRAkyCisjZGVmaW5lIFJFQURPTkxZICAgICAgICAgICAgMQorI2RlZmluZSBSRUFEX1JFU1RSSUNURUQgICAgIDIKICNkZWZpbmUgUFlfV1JJVEVfUkVTVFJJQ1RFRCA0Ci0jZGVmaW5lIFJFU1RSSUNURUQJKFJFQURfUkVTVFJJQ1RFRCB8IFBZX1dSSVRFX1JFU1RSSUNURUQpCisjZGVmaW5lIFJFU1RSSUNURUQgICAgICAgICAgKFJFQURfUkVTVFJJQ1RFRCB8IFBZX1dSSVRFX1JFU1RSSUNURUQpCiAKIAogLyogQ3VycmVudCBBUEksIHVzZSB0aGlzICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3N5bXRhYmxlLmggYi9JbmNsdWRlL3N5bXRhYmxlLmgKaW5kZXggZmQ3ZGUwNC4uNmVkM2EyYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zeW10YWJsZS5oCisrKyBiL0luY2x1ZGUvc3ltdGFibGUuaApAQCAtMjMsMTAgKzIzLDE1IEBACiAgICAgUHlPYmplY3QgKnN0X2Jsb2NrczsgICAgICAgICAgICAvKiBkaWN0OiBtYXAgQVNUIG5vZGUgYWRkcmVzc2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICB0byBzeW1ib2wgdGFibGUgZW50cmllcyAqLwogICAgIFB5T2JqZWN0ICpzdF9zdGFjazsgICAgICAgICAgICAgLyogbGlzdDogc3RhY2sgb2YgbmFtZXNwYWNlIGluZm8gKi8KLSAgICBQeU9iamVjdCAqc3RfZ2xvYmFsOyAgICAgICAgICAgIC8qIGJvcnJvd2VkIHJlZiB0byBzdF90b3AtPnN0X3N5bWJvbHMgKi8KLSAgICBpbnQgc3RfbmJsb2NrczsgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBibG9ja3MgdXNlZCAqLworICAgIFB5T2JqZWN0ICpzdF9nbG9iYWw7ICAgICAgICAgICAgLyogYm9ycm93ZWQgcmVmIHRvIHN0X3RvcC0+c3RlX3N5bWJvbHMgKi8KKyAgICBpbnQgc3RfbmJsb2NrczsgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBibG9ja3MgdXNlZC4ga2VwdCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNpc3RlbmN5IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVyIHN0cnVjdHVyZSAqLwogICAgIFB5T2JqZWN0ICpzdF9wcml2YXRlOyAgICAgICAgICAgLyogbmFtZSBvZiBjdXJyZW50IGNsYXNzIG9yIE5VTEwgKi8KLSAgICBQeUZ1dHVyZUZlYXR1cmVzICpzdF9mdXR1cmU7ICAgIC8qIG1vZHVsZSdzIGZ1dHVyZSBmZWF0dXJlcyAqLworICAgIFB5RnV0dXJlRmVhdHVyZXMgKnN0X2Z1dHVyZTsgICAgLyogbW9kdWxlJ3MgZnV0dXJlIGZlYXR1cmVzIHRoYXQgYWZmZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3ltYm9sIHRhYmxlICovCisgICAgaW50IHJlY3Vyc2lvbl9kZXB0aDsgICAgICAgICAgICAvKiBjdXJyZW50IHJlY3Vyc2lvbiBkZXB0aCAqLworICAgIGludCByZWN1cnNpb25fbGltaXQ7ICAgICAgICAgICAgLyogcmVjdXJzaW9uIGxpbWl0ICovCiB9OwogCiB0eXBlZGVmIHN0cnVjdCBfc3ltdGFibGVfZW50cnkgewpAQCAtMzQsNyArMzksNyBAQAogICAgIFB5T2JqZWN0ICpzdGVfaWQ7ICAgICAgICAvKiBpbnQ6IGtleSBpbiBzdGVfdGFibGUtPnN0X2Jsb2NrcyAqLwogICAgIFB5T2JqZWN0ICpzdGVfc3ltYm9sczsgICAvKiBkaWN0OiB2YXJpYWJsZSBuYW1lcyB0byBmbGFncyAqLwogICAgIFB5T2JqZWN0ICpzdGVfbmFtZTsgICAgICAvKiBzdHJpbmc6IG5hbWUgb2YgY3VycmVudCBibG9jayAqLwotICAgIFB5T2JqZWN0ICpzdGVfdmFybmFtZXM7ICAvKiBsaXN0IG9mIHZhcmlhYmxlIG5hbWVzICovCisgICAgUHlPYmplY3QgKnN0ZV92YXJuYW1lczsgIC8qIGxpc3Qgb2YgZnVuY3Rpb24gcGFyYW1ldGVycyAqLwogICAgIFB5T2JqZWN0ICpzdGVfY2hpbGRyZW47ICAvKiBsaXN0IG9mIGNoaWxkIGJsb2NrcyAqLwogICAgIF9QeV9ibG9ja190eSBzdGVfdHlwZTsgICAvKiBtb2R1bGUsIGNsYXNzLCBvciBmdW5jdGlvbiAqLwogICAgIGludCBzdGVfdW5vcHRpbWl6ZWQ7ICAgICAvKiBmYWxzZSBpZiBuYW1lc3BhY2UgaXMgb3B0aW1pemVkICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3RpbWVmdW5jcy5oIGIvSW5jbHVkZS90aW1lZnVuY3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M0MzU3NS4uMDAwMDAwMAotLS0gYS9JbmNsdWRlL3RpbWVmdW5jcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotLyogIHRpbWVmdW5jcy5oCi0gKi8KLQotLyogVXRpbGl0eSBmdW5jdGlvbiByZWxhdGVkIHRvIHRpbWVtb2R1bGUuYy4gKi8KLQotI2lmbmRlZiBUSU1FRlVOQ1NfSAotI2RlZmluZSBUSU1FRlVOQ1NfSAotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0KLS8qIENhc3QgZG91YmxlIHggdG8gdGltZV90LCBidXQgcmFpc2UgVmFsdWVFcnJvciBpZiB4IGlzIHRvbyBsYXJnZQotICogdG8gZml0IGluIGEgdGltZV90LiAgVmFsdWVFcnJvciBpcyBzZXQgb24gcmV0dXJuIGlmZiB0aGUgcmV0dXJuCi0gKiB2YWx1ZSBpcyAodGltZV90KS0xIGFuZCBQeUVycl9PY2N1cnJlZCgpLgotICovCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKHRpbWVfdCkgX1B5VGltZV9Eb3VibGVUb1RpbWV0KGRvdWJsZSB4KTsKLSNlbmRpZgotCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0jZW5kaWYgIC8qIFRJTUVGVU5DU19IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3RyYWNlYmFjay5oIGIvSW5jbHVkZS90cmFjZWJhY2suaAppbmRleCA2OWUzZDA1Li43NzM0NzA3IDEwMDY0NAotLS0gYS9JbmNsdWRlL3RyYWNlYmFjay5oCisrKyBiL0luY2x1ZGUvdHJhY2ViYWNrLmgKQEAgLTUsNiArNSw4IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisjaW5jbHVkZSAicHlzdGF0ZS5oIgorCiBzdHJ1Y3QgX2ZyYW1lOwogCiAvKiBUcmFjZWJhY2sgaW50ZXJmYWNlICovCkBAIC0yOCw2ICszMCw0MiBAQAogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5VHJhY2VCYWNrX1R5cGU7CiAjZGVmaW5lIFB5VHJhY2VCYWNrX0NoZWNrKHYpIChQeV9UWVBFKHYpID09ICZQeVRyYWNlQmFja19UeXBlKQogCisvKiBXcml0ZSB0aGUgUHl0aG9uIHRyYWNlYmFjayBpbnRvIHRoZSBmaWxlICdmZCcuIEZvciBleGFtcGxlOgorCisgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KToKKyAgICAgICAgIEZpbGUgInh4eCIsIGxpbmUgeHh4IGluIDx4eHg+CisgICAgICAgICBGaWxlICJ4eHgiLCBsaW5lIHh4eCBpbiA8eHh4PgorICAgICAgICAgLi4uCisgICAgICAgICBGaWxlICJ4eHgiLCBsaW5lIHh4eCBpbiA8eHh4PgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHdyaXR0ZW4gZm9yIGRlYnVnIHB1cnBvc2Ugb25seSwgdG8gZHVtcCB0aGUgdHJhY2ViYWNrIGluCisgICB0aGUgd29yc3QgY2FzZTogYWZ0ZXIgYSBzZWdtZW50YXRpb24gZmF1bHQsIGF0IGZhdGFsIGVycm9yLCBldGMuIFRoYXQncyB3aHksCisgICBpdCBpcyB2ZXJ5IGxpbWl0ZWQuIFN0cmluZ3MgYXJlIHRydW5jYXRlZCB0byAxMDAgY2hhcmFjdGVycyBhbmQgZW5jb2RlZCB0bworICAgQVNDSUkgd2l0aCBiYWNrc2xhc2hyZXBsYWNlLiBJdCBkb2Vzbid0IHdyaXRlIHRoZSBzb3VyY2UgY29kZSwgb25seSB0aGUKKyAgIGZ1bmN0aW9uIG5hbWUsIGZpbGVuYW1lIGFuZCBsaW5lIG51bWJlciBvZiBlYWNoIGZyYW1lLiBXcml0ZSBvbmx5IHRoZSBmaXJzdAorICAgMTAwIGZyYW1lczogaWYgdGhlIHRyYWNlYmFjayBpcyB0cnVuY2F0ZWQsIHdyaXRlIHRoZSBsaW5lICIgLi4uIi4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KKworUHlBUElfREFUQSh2b2lkKSBfUHlfRHVtcFRyYWNlYmFjaygKKyAgICBpbnQgZmQsCisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKTsKKworLyogV3JpdGUgdGhlIHRyYWNlYmFjayBvZiBhbGwgdGhyZWFkcyBpbnRvIHRoZSBmaWxlICdmZCcuIGN1cnJlbnRfdGhyZWFkIGNhbiBiZQorICAgTlVMTC4gUmV0dXJuIE5VTEwgb24gc3VjY2Vzcywgb3IgYW4gZXJyb3IgbWVzc2FnZSBvbiBlcnJvci4KKworICAgVGhpcyBmdW5jdGlvbiBpcyB3cml0dGVuIGZvciBkZWJ1ZyBwdXJwb3NlIG9ubHkuIEl0IGNhbGxzCisgICBfUHlfRHVtcFRyYWNlYmFjaygpIGZvciBlYWNoIHRocmVhZCwgYW5kIHNvIGhhcyB0aGUgc2FtZSBsaW1pdGF0aW9ucy4gSXQKKyAgIG9ubHkgd3JpdGUgdGhlIHRyYWNlYmFjayBvZiB0aGUgZmlyc3QgMTAwIHRocmVhZHM6IHdyaXRlICIuLi4iIGlmIHRoZXJlIGFyZQorICAgbW9yZSB0aHJlYWRzLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworCitQeUFQSV9EQVRBKGNvbnN0IGNoYXIqKSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoCisgICAgaW50IGZkLCBQeUludGVycHJldGVyU3RhdGUgKmludGVycCwKKyAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50X3RocmVhZCk7CisKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvdHVwbGVvYmplY3QuaCBiL0luY2x1ZGUvdHVwbGVvYmplY3QuaAppbmRleCBmMTdiNzg4Li5jMjczY2U3IDEwMDY0NAotLS0gYS9JbmNsdWRlL3R1cGxlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS90dXBsZW9iamVjdC5oCkBAIC02Myw2ICs2Myw5IEBACiAjZW5kaWYKIAogUHlBUElfRlVOQyhpbnQpIFB5VHVwbGVfQ2xlYXJGcmVlTGlzdCh2b2lkKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkModm9pZCkgX1B5VHVwbGVfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpOworI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS91Y25oYXNoLmggYi9JbmNsdWRlL3Vjbmhhc2guaAppbmRleCA3MGZkZjEzLi44ZGU5YmEwIDEwMDY0NAotLS0gYS9JbmNsdWRlL3Vjbmhhc2guaAorKysgYi9JbmNsdWRlL3Vjbmhhc2guaApAQCAtMTksMTEgKzE5LDEzIEBACiAgICAgICAgc3VjY2VzcywgemVybyBpZiBub3QuICBEb2VzIG5vdCBzZXQgUHl0aG9uIGV4Y2VwdGlvbnMuIAogICAgICAgIElmIHNlbGYgaXMgTlVMTCwgZGF0YSBjb21lIGZyb20gdGhlIGRlZmF1bHQgdmVyc2lvbiBvZiB0aGUgZGF0YWJhc2UuCiAgICAgICAgSWYgaXQgaXMgbm90IE5VTEwsIGl0IHNob3VsZCBiZSBhIHVuaWNvZGVkYXRhLnVjZF9YX1lfWiBvYmplY3QgKi8KLSAgICBpbnQgKCpnZXRuYW1lKShQeU9iamVjdCAqc2VsZiwgUHlfVUNTNCBjb2RlLCBjaGFyKiBidWZmZXIsIGludCBidWZsZW4pOworICAgIGludCAoKmdldG5hbWUpKFB5T2JqZWN0ICpzZWxmLCBQeV9VQ1M0IGNvZGUsIGNoYXIqIGJ1ZmZlciwgaW50IGJ1ZmxlbiwKKyAgICAgICAgICAgICAgICAgICBpbnQgd2l0aF9hbGlhc19hbmRfc2VxKTsKIAogICAgIC8qIEdldCBjaGFyYWN0ZXIgY29kZSBmb3IgYSBnaXZlbiBuYW1lLiAgU2FtZSBlcnJvciBoYW5kbGluZwogICAgICAgIGFzIGZvciBnZXRuYW1lLiAqLwotICAgIGludCAoKmdldGNvZGUpKFB5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyKiBuYW1lLCBpbnQgbmFtZWxlbiwgUHlfVUNTNCogY29kZSk7CisgICAgaW50ICgqZ2V0Y29kZSkoUHlPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIqIG5hbWUsIGludCBuYW1lbGVuLCBQeV9VQ1M0KiBjb2RlLAorICAgICAgICAgICAgICAgICAgIGludCB3aXRoX25hbWVkX3NlcSk7CiAKIH0gX1B5VW5pY29kZV9OYW1lX0NBUEk7CiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oIGIvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKaW5kZXggMzc5YTkwYy4uYThmNWI1ZCAxMDA2NDQKLS0tIGEvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKQEAgLTY0LDE2ICs2NCwxNSBAQAogLyogUHl0aG9uIDMueCByZXF1aXJlcyB1bmljb2RlICovCiAjZGVmaW5lIFB5X1VTSU5HX1VOSUNPREUKIAotLyogRklYTUU6IE12TCdzIG5ldyBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHRoYXQgUHlfVU5JQ09ERV9TSVpFIGlzCi0gICBwcm9wZXJseSBzZXQsIGJ1dCB0aGUgZGVmYXVsdCBydWxlcyBiZWxvdyBkb2Vzbid0IHNldCBpdC4gIEknbGwKLSAgIHNvcnQgdGhpcyBvdXQgc29tZSBvdGhlciBkYXkgLS0gZnJlZHJpa0BweXRob253YXJlLmNvbSAqLwotCi0jaWZuZGVmIFB5X1VOSUNPREVfU0laRQotI2Vycm9yIE11c3QgZGVmaW5lIFB5X1VOSUNPREVfU0laRQorI2lmbmRlZiBTSVpFT0ZfV0NIQVJfVAorI2Vycm9yIE11c3QgZGVmaW5lIFNJWkVPRl9XQ0hBUl9UCiAjZW5kaWYKIAotLyogU2V0dGluZyBQeV9VTklDT0RFX1dJREUgZW5hYmxlcyBVQ1MtNCBzdG9yYWdlLiAgT3RoZXJ3aXNlLCBVbmljb2RlCi0gICBzdHJpbmdzIGFyZSBzdG9yZWQgYXMgVUNTLTIgKHdpdGggbGltaXRlZCBzdXBwb3J0IGZvciBVVEYtMTYpICovCisjZGVmaW5lIFB5X1VOSUNPREVfU0laRSBTSVpFT0ZfV0NIQVJfVAorCisvKiBJZiB3Y2hhcl90IGNhbiBiZSB1c2VkIGZvciBVQ1MtNCBzdG9yYWdlLCBzZXQgUHlfVU5JQ09ERV9XSURFLgorICAgT3RoZXJ3aXNlLCBVbmljb2RlIHN0cmluZ3MgYXJlIHN0b3JlZCBhcyBVQ1MtMiAod2l0aCBsaW1pdGVkIHN1cHBvcnQKKyAgIGZvciBVVEYtMTYpICovCiAKICNpZiBQeV9VTklDT0RFX1NJWkUgPj0gNAogI2RlZmluZSBQeV9VTklDT0RFX1dJREUKQEAgLTg0LDE5ICs4MywxNCBAQAogLyogI2RlZmluZSBIQVZFX1dDSEFSX0ggKi8KIC8qICNkZWZpbmUgSEFWRV9VU0FCTEVfV0NIQVJfVCAqLwogCi0vKiBEZWZhdWx0cyBmb3IgdmFyaW91cyBwbGF0Zm9ybXMgKi8KLSNpZm5kZWYgUFlfVU5JQ09ERV9UWVBFCisvKiBQeV9VTklDT0RFIHdhcyB0aGUgbmF0aXZlIFVuaWNvZGUgc3RvcmFnZSBmb3JtYXQgKGNvZGUgdW5pdCkgdXNlZCBieQorICAgUHl0aG9uIGFuZCByZXByZXNlbnRzIGEgc2luZ2xlIFVuaWNvZGUgZWxlbWVudCBpbiB0aGUgVW5pY29kZSB0eXBlLgorICAgV2l0aCBQRVAgMzkzLCBQeV9VTklDT0RFIGlzIGRlcHJlY2F0ZWQgYW5kIHJlcGxhY2VkIHdpdGggYQorICAgdHlwZWRlZiB0byB3Y2hhcl90LiAqLwogCi0vKiBXaW5kb3dzIGhhcyBhIHVzYWJsZSB3Y2hhcl90IHR5cGUgKHVubGVzcyB3ZSdyZSB1c2luZyBVQ1MtNCkgKi8KLSMgaWYgZGVmaW5lZChNU19XSU4zMikgJiYgUHlfVU5JQ09ERV9TSVpFID09IDIKLSMgIGRlZmluZSBIQVZFX1VTQUJMRV9XQ0hBUl9UCi0jICBkZWZpbmUgUFlfVU5JQ09ERV9UWVBFIHdjaGFyX3QKLSMgZW5kaWYKLQotIyBpZiBkZWZpbmVkKFB5X1VOSUNPREVfV0lERSkKLSMgIGRlZmluZSBQWV9VTklDT0RFX1RZUEUgUHlfVUNTNAotIyBlbmRpZgotCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisjZGVmaW5lIFBZX1VOSUNPREVfVFlQRSB3Y2hhcl90Cit0eXBlZGVmIHdjaGFyX3QgUHlfVU5JQ09ERTsKICNlbmRpZgogCiAvKiBJZiB0aGUgY29tcGlsZXIgcHJvdmlkZXMgYSB3Y2hhcl90IHR5cGUgd2UgdHJ5IHRvIHN1cHBvcnQgaXQKQEAgLTEwOSw2ICsxMDMsMTAgQEAKICMgZW5kaWYKICNlbmRpZgogCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorIyAgZGVmaW5lIEhBVkVfTUJDUworI2VuZGlmCisKICNpZmRlZiBIQVZFX1dDSEFSX0gKIC8qIFdvcmsgYXJvdW5kIGEgY29zbWV0aWMgYnVnIGluIEJTREkgNC54IHdjaGFyLmg7IHRoYW5rcyB0byBUaG9tYXMgV291dGVycyAqLwogIyBpZmRlZiBfSEFWRV9CU0RJCkBAIC0xMTcsMjAxICsxMTUsMjQgQEAKICMgIGluY2x1ZGUgPHdjaGFyLmg+CiAjZW5kaWYKIAotLyoKLSAqIFVzZSB0aGlzIHR5cGVkZWYgd2hlbiB5b3UgbmVlZCB0byByZXByZXNlbnQgYSBVVEYtMTYgc3Vycm9nYXRlIHBhaXIKLSAqIGFzIHNpbmdsZSB1bnNpZ25lZCBpbnRlZ2VyLgotICovCi0jaWYgU0laRU9GX0lOVCA+PSA0CisvKiBQeV9VQ1M0IGFuZCBQeV9VQ1MyIGFyZSB0eXBlZGVmcyBmb3IgdGhlIHJlc3BlY3RpdmUKKyAgIHVuaWNvZGUgcmVwcmVzZW50YXRpb25zLiAqLworI2lmIFNJWkVPRl9JTlQgPT0gNAogdHlwZWRlZiB1bnNpZ25lZCBpbnQgUHlfVUNTNDsKLSNlbGlmIFNJWkVPRl9MT05HID49IDQKKyNlbGlmIFNJWkVPRl9MT05HID09IDQKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBQeV9VQ1M0OwotI2VuZGlmCi0KLS8qIFB5X1VOSUNPREUgaXMgdGhlIG5hdGl2ZSBVbmljb2RlIHN0b3JhZ2UgZm9ybWF0IChjb2RlIHVuaXQpIHVzZWQgYnkKLSAgIFB5dGhvbiBhbmQgcmVwcmVzZW50cyBhIHNpbmdsZSBVbmljb2RlIGVsZW1lbnQgaW4gdGhlIFVuaWNvZGUKLSAgIHR5cGUuICovCi0KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLXR5cGVkZWYgUFlfVU5JQ09ERV9UWVBFIFB5X1VOSUNPREU7Ci0jZW5kaWYKLQotLyogLS0tIFVDUy0yL1VDUy00IE5hbWUgTWFuZ2xpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLS8qIFVuaWNvZGUgQVBJIG5hbWVzIGFyZSBtYW5nbGVkIHRvIGFzc3VyZSB0aGF0IFVDUy0yIGFuZCBVQ1MtNCBidWlsZHMKLSAgIHByb2R1Y2UgZGlmZmVyZW50IGV4dGVybmFsIG5hbWVzIGFuZCB0aHVzIGNhdXNlIGltcG9ydCBlcnJvcnMgaW4KLSAgIGNhc2UgUHl0aG9uIGludGVycHJldGVycyBhbmQgZXh0ZW5zaW9ucyB3aXRoIG1peGVkIGNvbXBpbGVkIGluCi0gICBVbmljb2RlIHdpZHRoIGFzc3VtcHRpb25zIGFyZSBjb21iaW5lZC4gKi8KLQotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLQotIyBkZWZpbmUgUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcgUHlVbmljb2RlVUNTMl9Bc0FTQ0lJU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNDaGFybWFwU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0IFB5VW5pY29kZVVDUzJfQXNEZWNvZGVkT2JqZWN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZSBQeVVuaWNvZGVVQ1MyX0FzRGVjb2RlZFVuaWNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3QgUHlVbmljb2RlVUNTMl9Bc0VuY29kZWRPYmplY3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcgUHlVbmljb2RlVUNTMl9Bc0VuY29kZWRTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlIFB5VW5pY29kZVVDUzJfQXNFbmNvZGVkVW5pY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNMYXRpbjFTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcgUHlVbmljb2RlVUNTMl9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNVVEYzMlN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcgUHlVbmljb2RlVUNTMl9Bc1VURjE2U3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nIFB5VW5pY29kZVVDUzJfQXNVVEY4U3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVbmljb2RlIFB5VW5pY29kZVVDUzJfQXNVbmljb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNVbmljb2RlRXNjYXBlU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNXaWRlQ2hhciBQeVVuaWNvZGVVQ1MyX0FzV2lkZUNoYXIKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNXaWRlQ2hhclN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0NsZWFyRnJlZUxpc3QgUHlVbmljb2RlVUNTMl9DbGVhckZyZWVsaXN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfQ29tcGFyZSBQeVVuaWNvZGVVQ1MyX0NvbXBhcmUKLSMgZGVmaW5lIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nIFB5VW5pY29kZVVDUzJfQ29tcGFyZVdpdGhBU0NJSVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0NvbmNhdCBQeVVuaWNvZGVVQ1MyX0NvbmNhdAotIyBkZWZpbmUgUHlVbmljb2RlX0FwcGVuZCBQeVVuaWNvZGVVQ1MyX0FwcGVuZAotIyBkZWZpbmUgUHlVbmljb2RlX0FwcGVuZEFuZERlbCBQeVVuaWNvZGVVQ1MyX0FwcGVuZEFuZERlbAotIyBkZWZpbmUgUHlVbmljb2RlX0NvbnRhaW5zIFB5VW5pY29kZVVDUzJfQ29udGFpbnMKLSMgZGVmaW5lIFB5VW5pY29kZV9Db3VudCBQeVVuaWNvZGVVQ1MyX0NvdW50Ci0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlIFB5VW5pY29kZVVDUzJfRGVjb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlQVNDSUkgUHlVbmljb2RlVUNTMl9EZWNvZGVBU0NJSQotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZUNoYXJtYXAgUHlVbmljb2RlVUNTMl9EZWNvZGVDaGFybWFwCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xIFB5VW5pY29kZVVDUzJfRGVjb2RlTGF0aW4xCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0IFB5VW5pY29kZVVDUzJfRGVjb2RlRlNEZWZhdWx0Ci0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZSBQeVVuaWNvZGVVQ1MyX0RlY29kZUZTRGVmYXVsdEFuZFNpemUKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlIFB5VW5pY29kZVVDUzJfRGVjb2RlUmF3VW5pY29kZUVzY2FwZQotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjMyIFB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMzIKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsIFB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMzJTdGF0ZWZ1bAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjE2IFB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMTYKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsIFB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMTZTdGF0ZWZ1bAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjggUHlVbmljb2RlVUNTMl9EZWNvZGVVVEY4Ci0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsIFB5VW5pY29kZVVDUzJfRGVjb2RlVVRGOFN0YXRlZnVsCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZSBQeVVuaWNvZGVVQ1MyX0RlY29kZVVuaWNvZGVFc2NhcGUKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGUgUHlVbmljb2RlVUNTMl9FbmNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVBU0NJSSBQeVVuaWNvZGVVQ1MyX0VuY29kZUFTQ0lJCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcCBQeVVuaWNvZGVVQ1MyX0VuY29kZUNoYXJtYXAKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsIFB5VW5pY29kZVVDUzJfRW5jb2RlRGVjaW1hbAotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZUxhdGluMSBQeVVuaWNvZGVVQ1MyX0VuY29kZUxhdGluMQotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUgUHlVbmljb2RlVUNTMl9FbmNvZGVSYXdVbmljb2RlRXNjYXBlCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlVVRGMzIgUHlVbmljb2RlVUNTMl9FbmNvZGVVVEYzMgotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVVURjE2IFB5VW5pY29kZVVDUzJfRW5jb2RlVVRGMTYKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVVVEY4IFB5VW5pY29kZVVDUzJfRW5jb2RlVVRGOAotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGUgUHlVbmljb2RlVUNTMl9FbmNvZGVVbmljb2RlRXNjYXBlCi0jIGRlZmluZSBQeVVuaWNvZGVfRmluZCBQeVVuaWNvZGVVQ1MyX0ZpbmQKLSMgZGVmaW5lIFB5VW5pY29kZV9Gb3JtYXQgUHlVbmljb2RlVUNTMl9Gb3JtYXQKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdCBQeVVuaWNvZGVVQ1MyX0Zyb21FbmNvZGVkT2JqZWN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbUZvcm1hdCBQeVVuaWNvZGVVQ1MyX0Zyb21Gb3JtYXQKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tRm9ybWF0ViBQeVVuaWNvZGVVQ1MyX0Zyb21Gb3JtYXRWCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbU9iamVjdCBQeVVuaWNvZGVVQ1MyX0Zyb21PYmplY3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tT3JkaW5hbCBQeVVuaWNvZGVVQ1MyX0Zyb21PcmRpbmFsCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbVN0cmluZyBQeVVuaWNvZGVVQ1MyX0Zyb21TdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSBQeVVuaWNvZGVVQ1MyX0Zyb21TdHJpbmdBbmRTaXplCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUgUHlVbmljb2RlVUNTMl9Gcm9tVW5pY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21XaWRlQ2hhciBQeVVuaWNvZGVVQ1MyX0Zyb21XaWRlQ2hhcgotIyBkZWZpbmUgUHlVbmljb2RlX0ZTQ29udmVydGVyIFB5VW5pY29kZVVDUzJfRlNDb252ZXJ0ZXIKLSMgZGVmaW5lIFB5VW5pY29kZV9GU0RlY29kZXIgUHlVbmljb2RlVUNTMl9GU0RlY29kZXIKLSMgZGVmaW5lIFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcgUHlVbmljb2RlVUNTMl9HZXREZWZhdWx0RW5jb2RpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9HZXRNYXggUHlVbmljb2RlVUNTMl9HZXRNYXgKLSMgZGVmaW5lIFB5VW5pY29kZV9HZXRTaXplIFB5VW5pY29kZVVDUzJfR2V0U2l6ZQotIyBkZWZpbmUgUHlVbmljb2RlX0lzSWRlbnRpZmllciBQeVVuaWNvZGVVQ1MyX0lzSWRlbnRpZmllcgotIyBkZWZpbmUgUHlVbmljb2RlX0pvaW4gUHlVbmljb2RlVUNTMl9Kb2luCi0jIGRlZmluZSBQeVVuaWNvZGVfUGFydGl0aW9uIFB5VW5pY29kZVVDUzJfUGFydGl0aW9uCi0jIGRlZmluZSBQeVVuaWNvZGVfUlBhcnRpdGlvbiBQeVVuaWNvZGVVQ1MyX1JQYXJ0aXRpb24KLSMgZGVmaW5lIFB5VW5pY29kZV9SU3BsaXQgUHlVbmljb2RlVUNTMl9SU3BsaXQKLSMgZGVmaW5lIFB5VW5pY29kZV9SZXBsYWNlIFB5VW5pY29kZVVDUzJfUmVwbGFjZQotIyBkZWZpbmUgUHlVbmljb2RlX1Jlc2l6ZSBQeVVuaWNvZGVVQ1MyX1Jlc2l6ZQotIyBkZWZpbmUgUHlVbmljb2RlX1JpY2hDb21wYXJlIFB5VW5pY29kZVVDUzJfUmljaENvbXBhcmUKLSMgZGVmaW5lIFB5VW5pY29kZV9TcGxpdCBQeVVuaWNvZGVVQ1MyX1NwbGl0Ci0jIGRlZmluZSBQeVVuaWNvZGVfU3BsaXRsaW5lcyBQeVVuaWNvZGVVQ1MyX1NwbGl0bGluZXMKLSMgZGVmaW5lIFB5VW5pY29kZV9UYWlsbWF0Y2ggUHlVbmljb2RlVUNTMl9UYWlsbWF0Y2gKLSMgZGVmaW5lIFB5VW5pY29kZV9UcmFuc2xhdGUgUHlVbmljb2RlVUNTMl9UcmFuc2xhdGUKLSMgZGVmaW5lIFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwIFB5VW5pY29kZVVDUzJfVHJhbnNsYXRlQ2hhcm1hcAotIyBkZWZpbmUgX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nIF9QeVVuaWNvZGVVQ1MyX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcKLSMgZGVmaW5lIF9QeVVuaWNvZGVfRmluaSBfUHlVbmljb2RlVUNTMl9GaW5pCi0jIGRlZmluZSBfUHlVbmljb2RlX0luaXQgX1B5VW5pY29kZVVDUzJfSW5pdAotIyBkZWZpbmUgUHlVbmljb2RlX3N0cmR1cCBQeVVuaWNvZGVVQ1MyX3N0cmR1cAotCiAjZWxzZQotCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZyBQeVVuaWNvZGVVQ1M0X0FzQVNDSUlTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc0NoYXJtYXBTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QgUHlVbmljb2RlVUNTNF9Bc0RlY29kZWRPYmplY3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlIFB5VW5pY29kZVVDUzRfQXNEZWNvZGVkVW5pY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdCBQeVVuaWNvZGVVQ1M0X0FzRW5jb2RlZE9iamVjdAotIyBkZWZpbmUgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyBQeVVuaWNvZGVVQ1M0X0FzRW5jb2RlZFN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUgUHlVbmljb2RlVUNTNF9Bc0VuY29kZWRVbmljb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc0xhdGluMVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZyBQeVVuaWNvZGVVQ1M0X0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc1VURjMyU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVVEYxNlN0cmluZyBQeVVuaWNvZGVVQ1M0X0FzVVRGMTZTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1VURjhTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc1VURjhTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1VuaWNvZGUgUHlVbmljb2RlVUNTNF9Bc1VuaWNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1dpZGVDaGFyIFB5VW5pY29kZVVDUzRfQXNXaWRlQ2hhcgotIyBkZWZpbmUgUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc1dpZGVDaGFyU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQ2xlYXJGcmVlTGlzdCBQeVVuaWNvZGVVQ1M0X0NsZWFyRnJlZWxpc3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Db21wYXJlIFB5VW5pY29kZVVDUzRfQ29tcGFyZQotIyBkZWZpbmUgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcgUHlVbmljb2RlVUNTNF9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQ29uY2F0IFB5VW5pY29kZVVDUzRfQ29uY2F0Ci0jIGRlZmluZSBQeVVuaWNvZGVfQXBwZW5kIFB5VW5pY29kZVVDUzRfQXBwZW5kCi0jIGRlZmluZSBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsIFB5VW5pY29kZVVDUzRfQXBwZW5kQW5kRGVsCi0jIGRlZmluZSBQeVVuaWNvZGVfQ29udGFpbnMgUHlVbmljb2RlVUNTNF9Db250YWlucwotIyBkZWZpbmUgUHlVbmljb2RlX0NvdW50IFB5VW5pY29kZVVDUzRfQ291bnQKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGUgUHlVbmljb2RlVUNTNF9EZWNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVBU0NJSSBQeVVuaWNvZGVVQ1M0X0RlY29kZUFTQ0lJCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcCBQeVVuaWNvZGVVQ1M0X0RlY29kZUNoYXJtYXAKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVMYXRpbjEgUHlVbmljb2RlVUNTNF9EZWNvZGVMYXRpbjEKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQgUHlVbmljb2RlVUNTNF9EZWNvZGVGU0RlZmF1bHQKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplIFB5VW5pY29kZVVDUzRfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZQotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUgUHlVbmljb2RlVUNTNF9EZWNvZGVSYXdVbmljb2RlRXNjYXBlCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGMzIgUHlVbmljb2RlVUNTNF9EZWNvZGVVVEYzMgotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwgUHlVbmljb2RlVUNTNF9EZWNvZGVVVEYzMlN0YXRlZnVsCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGMTYgUHlVbmljb2RlVUNTNF9EZWNvZGVVVEYxNgotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwgUHlVbmljb2RlVUNTNF9EZWNvZGVVVEYxNlN0YXRlZnVsCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGOCBQeVVuaWNvZGVVQ1M0X0RlY29kZVVURjgKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwgUHlVbmljb2RlVUNTNF9EZWNvZGVVVEY4U3RhdGVmdWwKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlIFB5VW5pY29kZVVDUzRfRGVjb2RlVW5pY29kZUVzY2FwZQotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZSBQeVVuaWNvZGVVQ1M0X0VuY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZUFTQ0lJIFB5VW5pY29kZVVDUzRfRW5jb2RlQVNDSUkKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVDaGFybWFwIFB5VW5pY29kZVVDUzRfRW5jb2RlQ2hhcm1hcAotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZURlY2ltYWwgUHlVbmljb2RlVUNTNF9FbmNvZGVEZWNpbWFsCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xIFB5VW5pY29kZVVDUzRfRW5jb2RlTGF0aW4xCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2FwZSBQeVVuaWNvZGVVQ1M0X0VuY29kZVJhd1VuaWNvZGVFc2NhcGUKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVVVEYzMiBQeVVuaWNvZGVVQ1M0X0VuY29kZVVURjMyCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlVVRGMTYgUHlVbmljb2RlVUNTNF9FbmNvZGVVVEYxNgotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVVURjggUHlVbmljb2RlVUNTNF9FbmNvZGVVVEY4Ci0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZSBQeVVuaWNvZGVVQ1M0X0VuY29kZVVuaWNvZGVFc2NhcGUKLSMgZGVmaW5lIFB5VW5pY29kZV9GaW5kIFB5VW5pY29kZVVDUzRfRmluZAotIyBkZWZpbmUgUHlVbmljb2RlX0Zvcm1hdCBQeVVuaWNvZGVVQ1M0X0Zvcm1hdAotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0IFB5VW5pY29kZVVDUzRfRnJvbUVuY29kZWRPYmplY3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tRm9ybWF0IFB5VW5pY29kZVVDUzRfRnJvbUZvcm1hdAotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21Gb3JtYXRWIFB5VW5pY29kZVVDUzRfRnJvbUZvcm1hdFYKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tT2JqZWN0IFB5VW5pY29kZVVDUzRfRnJvbU9iamVjdAotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21PcmRpbmFsIFB5VW5pY29kZVVDUzRfRnJvbU9yZGluYWwKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tU3RyaW5nIFB5VW5pY29kZVVDUzRfRnJvbVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplIFB5VW5pY29kZVVDUzRfRnJvbVN0cmluZ0FuZFNpemUKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tVW5pY29kZSBQeVVuaWNvZGVVQ1M0X0Zyb21Vbmljb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyIFB5VW5pY29kZVVDUzRfRnJvbVdpZGVDaGFyCi0jIGRlZmluZSBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIgUHlVbmljb2RlVUNTNF9GU0NvbnZlcnRlcgotIyBkZWZpbmUgUHlVbmljb2RlX0ZTRGVjb2RlciBQeVVuaWNvZGVVQ1M0X0ZTRGVjb2RlcgotIyBkZWZpbmUgUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZyBQeVVuaWNvZGVVQ1M0X0dldERlZmF1bHRFbmNvZGluZwotIyBkZWZpbmUgUHlVbmljb2RlX0dldE1heCBQeVVuaWNvZGVVQ1M0X0dldE1heAotIyBkZWZpbmUgUHlVbmljb2RlX0dldFNpemUgUHlVbmljb2RlVUNTNF9HZXRTaXplCi0jIGRlZmluZSBQeVVuaWNvZGVfSXNJZGVudGlmaWVyIFB5VW5pY29kZVVDUzRfSXNJZGVudGlmaWVyCi0jIGRlZmluZSBQeVVuaWNvZGVfSm9pbiBQeVVuaWNvZGVVQ1M0X0pvaW4KLSMgZGVmaW5lIFB5VW5pY29kZV9QYXJ0aXRpb24gUHlVbmljb2RlVUNTNF9QYXJ0aXRpb24KLSMgZGVmaW5lIFB5VW5pY29kZV9SUGFydGl0aW9uIFB5VW5pY29kZVVDUzRfUlBhcnRpdGlvbgotIyBkZWZpbmUgUHlVbmljb2RlX1JTcGxpdCBQeVVuaWNvZGVVQ1M0X1JTcGxpdAotIyBkZWZpbmUgUHlVbmljb2RlX1JlcGxhY2UgUHlVbmljb2RlVUNTNF9SZXBsYWNlCi0jIGRlZmluZSBQeVVuaWNvZGVfUmVzaXplIFB5VW5pY29kZVVDUzRfUmVzaXplCi0jIGRlZmluZSBQeVVuaWNvZGVfUmljaENvbXBhcmUgUHlVbmljb2RlVUNTNF9SaWNoQ29tcGFyZQotIyBkZWZpbmUgUHlVbmljb2RlX1NwbGl0IFB5VW5pY29kZVVDUzRfU3BsaXQKLSMgZGVmaW5lIFB5VW5pY29kZV9TcGxpdGxpbmVzIFB5VW5pY29kZVVDUzRfU3BsaXRsaW5lcwotIyBkZWZpbmUgUHlVbmljb2RlX1RhaWxtYXRjaCBQeVVuaWNvZGVVQ1M0X1RhaWxtYXRjaAotIyBkZWZpbmUgUHlVbmljb2RlX1RyYW5zbGF0ZSBQeVVuaWNvZGVVQ1M0X1RyYW5zbGF0ZQotIyBkZWZpbmUgUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAgUHlVbmljb2RlVUNTNF9UcmFuc2xhdGVDaGFybWFwCi0jIGRlZmluZSBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcgX1B5VW5pY29kZVVDUzRfQXNEZWZhdWx0RW5jb2RlZFN0cmluZwotIyBkZWZpbmUgX1B5VW5pY29kZV9GaW5pIF9QeVVuaWNvZGVVQ1M0X0ZpbmkKLSMgZGVmaW5lIF9QeVVuaWNvZGVfSW5pdCBfUHlVbmljb2RlVUNTNF9Jbml0Ci0jIGRlZmluZSBQeVVuaWNvZGVfc3RyZHVwIFB5VW5pY29kZVVDUzRfc3RyZHVwCi0KKyNlcnJvciAiQ291bGQgbm90IGZpbmQgYSBwcm9wZXIgdHlwZWRlZiBmb3IgUHlfVUNTNCIKICNlbmRpZgogCisjaWYgU0laRU9GX1NIT1JUID09IDIKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgUHlfVUNTMjsKKyNlbHNlCisjZXJyb3IgIkNvdWxkIG5vdCBmaW5kIGEgcHJvcGVyIHR5cGVkZWYgZm9yIFB5X1VDUzIiCisjZW5kaWYKKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIFB5X1VDUzE7CisKIC8qIC0tLSBJbnRlcm5hbCBVbmljb2RlIE9wZXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAvKiBTaW5jZSBzcGxpdHRpbmcgb24gd2hpdGVzcGFjZSBpcyBhbiBpbXBvcnRhbnQgdXNlIGNhc2UsIGFuZApAQCAtMzUwLDcgKzE3MSw3IEBACiAgICAgUHlfVU5JQ09ERV9JU0RJR0lUKGNoKSB8fCBcCiAgICAgUHlfVU5JQ09ERV9JU05VTUVSSUMoY2gpKQogCi0jZGVmaW5lIFB5X1VOSUNPREVfQ09QWSh0YXJnZXQsIHNvdXJjZSwgbGVuZ3RoKSAgICAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIFB5X1VOSUNPREVfQ09QWSh0YXJnZXQsIHNvdXJjZSwgbGVuZ3RoKSBcCiAgICAgUHlfTUVNQ1BZKCh0YXJnZXQpLCAoc291cmNlKSwgKGxlbmd0aCkqc2l6ZW9mKFB5X1VOSUNPREUpKQogCiAjZGVmaW5lIFB5X1VOSUNPREVfRklMTCh0YXJnZXQsIHZhbHVlLCBsZW5ndGgpIFwKQEAgLTM1OCwxMyArMTc5LDI3IEBACiAgICAgZm9yIChpXyA9IDA7IGlfIDwgKGxlbmd0aCk7IGlfKyspIHRfW2lfXSA9IHZfO1wKICAgICB9IHdoaWxlICgwKQogCisvKiBtYWNyb3MgdG8gd29yayB3aXRoIHN1cnJvZ2F0ZXMgKi8KKyNkZWZpbmUgUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoY2gpICgweEQ4MDAgPD0gY2ggJiYgY2ggPD0gMHhERkZGKQorI2RlZmluZSBQeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFKGNoKSAoMHhEODAwIDw9IGNoICYmIGNoIDw9IDB4REJGRikKKyNkZWZpbmUgUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKGNoKSAoMHhEQzAwIDw9IGNoICYmIGNoIDw9IDB4REZGRikKKy8qIEpvaW4gdHdvIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzIGFuZCByZXR1cm4gYSBzaW5nbGUgUHlfVUNTNCB2YWx1ZS4gKi8KKyNkZWZpbmUgUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMoaGlnaCwgbG93KSAgXAorICAgICgoKCgoUHlfVUNTNCkoaGlnaCkgJiAweDAzRkYpIDw8IDEwKSB8ICAgICAgXAorICAgICAgKChQeV9VQ1M0KShsb3cpICYgMHgwM0ZGKSkgKyAweDEwMDAwKQorLyogaGlnaCBzdXJyb2dhdGUgPSB0b3AgMTAgYml0cyBhZGRlZCB0byBEODAwICovCisjZGVmaW5lIFB5X1VOSUNPREVfSElHSF9TVVJST0dBVEUoY2gpICgweEQ4MDAgLSAoMHgxMDAwMCA+PiAxMCkgKyAoKGNoKSA+PiAxMCkpCisvKiBsb3cgc3Vycm9nYXRlID0gYm90dG9tIDEwIGJpdHMgYWRkZWQgdG8gREMwMCAqLworI2RlZmluZSBQeV9VTklDT0RFX0xPV19TVVJST0dBVEUoY2gpICgweERDMDAgKyAoKGNoKSAmIDB4M0ZGKSkKKwogLyogQ2hlY2sgaWYgc3Vic3RyaW5nIG1hdGNoZXMgYXQgZ2l2ZW4gb2Zmc2V0LiAgVGhlIG9mZnNldCBtdXN0IGJlCiAgICB2YWxpZCwgYW5kIHRoZSBzdWJzdHJpbmcgbXVzdCBub3QgYmUgZW1wdHkuICovCiAKICNkZWZpbmUgUHlfVU5JQ09ERV9NQVRDSChzdHJpbmcsIG9mZnNldCwgc3Vic3RyaW5nKSBcCi0gICAgKCgqKChzdHJpbmcpLT5zdHIgKyAob2Zmc2V0KSkgPT0gKigoc3Vic3RyaW5nKS0+c3RyKSkgJiYgXAotICAgICgoKigoc3RyaW5nKS0+c3RyICsgKG9mZnNldCkgKyAoc3Vic3RyaW5nKS0+bGVuZ3RoLTEpID09ICooKHN1YnN0cmluZyktPnN0ciArIChzdWJzdHJpbmcpLT5sZW5ndGgtMSkpKSAmJiBcCi0gICAgICFtZW1jbXAoKHN0cmluZyktPnN0ciArIChvZmZzZXQpLCAoc3Vic3RyaW5nKS0+c3RyLCAoc3Vic3RyaW5nKS0+bGVuZ3RoKnNpemVvZihQeV9VTklDT0RFKSkpCisgICAgKCgqKChzdHJpbmcpLT53c3RyICsgKG9mZnNldCkpID09ICooKHN1YnN0cmluZyktPndzdHIpKSAmJiBcCisgICAgICgoKigoc3RyaW5nKS0+d3N0ciArIChvZmZzZXQpICsgKHN1YnN0cmluZyktPndzdHJfbGVuZ3RoLTEpID09ICooKHN1YnN0cmluZyktPndzdHIgKyAoc3Vic3RyaW5nKS0+d3N0cl9sZW5ndGgtMSkpKSAmJiBcCisgICAgICFtZW1jbXAoKHN0cmluZyktPndzdHIgKyAob2Zmc2V0KSwgKHN1YnN0cmluZyktPndzdHIsIChzdWJzdHJpbmcpLT53c3RyX2xlbmd0aCpzaXplb2YoUHlfVU5JQ09ERSkpKQorCiAjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCkBAIC0zNzQsNDEgKzIwOSwzNzQgQEAKIC8qIC0tLSBVbmljb2RlIFR5cGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCisKKy8qIEFTQ0lJLW9ubHkgc3RyaW5ncyBjcmVhdGVkIHRocm91Z2ggUHlVbmljb2RlX05ldyB1c2UgdGhlIFB5QVNDSUlPYmplY3QKKyAgIHN0cnVjdHVyZS4gc3RhdGUuYXNjaWkgYW5kIHN0YXRlLmNvbXBhY3QgYXJlIHNldCwgYW5kIHRoZSBkYXRhCisgICBpbW1lZGlhdGVseSBmb2xsb3cgdGhlIHN0cnVjdHVyZS4gdXRmOF9sZW5ndGggYW5kIHdzdHJfbGVuZ3RoIGNhbiBiZSBmb3VuZAorICAgaW4gdGhlIGxlbmd0aCBmaWVsZDsgdGhlIHV0ZjggcG9pbnRlciBpcyBlcXVhbCB0byB0aGUgZGF0YSBwb2ludGVyLiAqLwogdHlwZWRlZiBzdHJ1Y3QgeworICAgIC8qIFRoZXJlIGFyZSA0IGZvcm1zIG9mIFVuaWNvZGUgc3RyaW5nczoKKworICAgICAgIC0gY29tcGFjdCBhc2NpaToKKworICAgICAgICAgKiBzdHJ1Y3R1cmUgPSBQeUFTQ0lJT2JqZWN0CisgICAgICAgICAqIHRlc3Q6IFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9wKQorICAgICAgICAgKiBraW5kID0gUHlVbmljb2RlXzFCWVRFX0tJTkQKKyAgICAgICAgICogY29tcGFjdCA9IDEKKyAgICAgICAgICogYXNjaWkgPSAxCisgICAgICAgICAqIHJlYWR5ID0gMQorICAgICAgICAgKiAobGVuZ3RoIGlzIHRoZSBsZW5ndGggb2YgdGhlIHV0ZjggYW5kIHdzdHIgc3RyaW5ncykKKyAgICAgICAgICogKGRhdGEgc3RhcnRzIGp1c3QgYWZ0ZXIgdGhlIHN0cnVjdHVyZSkKKyAgICAgICAgICogKHNpbmNlIEFTQ0lJIGlzIGRlY29kZWQgZnJvbSBVVEYtOCwgdGhlIHV0Zjggc3RyaW5nIGFyZSB0aGUgZGF0YSkKKworICAgICAgIC0gY29tcGFjdDoKKworICAgICAgICAgKiBzdHJ1Y3R1cmUgPSBQeUNvbXBhY3RVbmljb2RlT2JqZWN0CisgICAgICAgICAqIHRlc3Q6IFB5VW5pY29kZV9JU19DT01QQUNUKG9wKSAmJiAhUHlVbmljb2RlX0lTX0FTQ0lJKG9wKQorICAgICAgICAgKiBraW5kID0gUHlVbmljb2RlXzFCWVRFX0tJTkQsIFB5VW5pY29kZV8yQllURV9LSU5EIG9yCisgICAgICAgICAgIFB5VW5pY29kZV80QllURV9LSU5ECisgICAgICAgICAqIGNvbXBhY3QgPSAxCisgICAgICAgICAqIHJlYWR5ID0gMQorICAgICAgICAgKiBhc2NpaSA9IDAKKyAgICAgICAgICogdXRmOCBpcyBub3Qgc2hhcmVkIHdpdGggZGF0YQorICAgICAgICAgKiB1dGY4X2xlbmd0aCA9IDAgaWYgdXRmOCBpcyBOVUxMCisgICAgICAgICAqIHdzdHIgaXMgc2hhcmVkIHdpdGggZGF0YSBhbmQgd3N0cl9sZW5ndGg9bGVuZ3RoCisgICAgICAgICAgIGlmIGtpbmQ9UHlVbmljb2RlXzJCWVRFX0tJTkQgYW5kIHNpemVvZih3Y2hhcl90KT0yCisgICAgICAgICAgIG9yIGlmIGtpbmQ9UHlVbmljb2RlXzRCWVRFX0tJTkQgYW5kIHNpemVvZih3Y2hhcl90KT00CisgICAgICAgICAqIHdzdHJfbGVuZ3RoID0gMCBpZiB3c3RyIGlzIE5VTEwKKyAgICAgICAgICogKGRhdGEgc3RhcnRzIGp1c3QgYWZ0ZXIgdGhlIHN0cnVjdHVyZSkKKworICAgICAgIC0gbGVnYWN5IHN0cmluZywgbm90IHJlYWR5OgorCisgICAgICAgICAqIHN0cnVjdHVyZSA9IFB5VW5pY29kZU9iamVjdAorICAgICAgICAgKiB0ZXN0OiBraW5kID09IFB5VW5pY29kZV9XQ0hBUl9LSU5ECisgICAgICAgICAqIGxlbmd0aCA9IDAgKHVzZSB3c3RyX2xlbmd0aCkKKyAgICAgICAgICogaGFzaCA9IC0xCisgICAgICAgICAqIGtpbmQgPSBQeVVuaWNvZGVfV0NIQVJfS0lORAorICAgICAgICAgKiBjb21wYWN0ID0gMAorICAgICAgICAgKiBhc2NpaSA9IDAKKyAgICAgICAgICogcmVhZHkgPSAwCisgICAgICAgICAqIGludGVybmVkID0gU1NUQVRFX05PVF9JTlRFUk5FRAorICAgICAgICAgKiB3c3RyIGlzIG5vdCBOVUxMCisgICAgICAgICAqIGRhdGEuYW55IGlzIE5VTEwKKyAgICAgICAgICogdXRmOCBpcyBOVUxMCisgICAgICAgICAqIHV0ZjhfbGVuZ3RoID0gMAorCisgICAgICAgLSBsZWdhY3kgc3RyaW5nLCByZWFkeToKKworICAgICAgICAgKiBzdHJ1Y3R1cmUgPSBQeVVuaWNvZGVPYmplY3Qgc3RydWN0dXJlCisgICAgICAgICAqIHRlc3Q6ICFQeVVuaWNvZGVfSVNfQ09NUEFDVChvcCkgJiYga2luZCAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORAorICAgICAgICAgKiBraW5kID0gUHlVbmljb2RlXzFCWVRFX0tJTkQsIFB5VW5pY29kZV8yQllURV9LSU5EIG9yCisgICAgICAgICAgIFB5VW5pY29kZV80QllURV9LSU5ECisgICAgICAgICAqIGNvbXBhY3QgPSAwCisgICAgICAgICAqIHJlYWR5ID0gMQorICAgICAgICAgKiBkYXRhLmFueSBpcyBub3QgTlVMTAorICAgICAgICAgKiB1dGY4IGlzIHNoYXJlZCBhbmQgdXRmOF9sZW5ndGggPSBsZW5ndGggd2l0aCBkYXRhLmFueSBpZiBhc2NpaSA9IDEKKyAgICAgICAgICogdXRmOF9sZW5ndGggPSAwIGlmIHV0ZjggaXMgTlVMTAorICAgICAgICAgKiB3c3RyIGlzIHNoYXJlZCB3aXRoIGRhdGEuYW55IGFuZCB3c3RyX2xlbmd0aCA9IGxlbmd0aAorICAgICAgICAgICBpZiBraW5kPVB5VW5pY29kZV8yQllURV9LSU5EIGFuZCBzaXplb2Yod2NoYXJfdCk9MgorICAgICAgICAgICBvciBpZiBraW5kPVB5VW5pY29kZV80QllURV9LSU5EIGFuZCBzaXplb2Yod2NoYXJfNCk9NAorICAgICAgICAgKiB3c3RyX2xlbmd0aCA9IDAgaWYgd3N0ciBpcyBOVUxMCisKKyAgICAgICBDb21wYWN0IHN0cmluZ3MgdXNlIG9ubHkgb25lIG1lbW9yeSBibG9jayAoc3RydWN0dXJlICsgY2hhcmFjdGVycyksCisgICAgICAgd2hlcmVhcyBsZWdhY3kgc3RyaW5ncyB1c2Ugb25lIGJsb2NrIGZvciB0aGUgc3RydWN0dXJlIGFuZCBvbmUgYmxvY2sKKyAgICAgICBmb3IgY2hhcmFjdGVycy4KKworICAgICAgIExlZ2FjeSBzdHJpbmdzIGFyZSBjcmVhdGVkIGJ5IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgpIGFuZAorICAgICAgIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKSBmdW5jdGlvbnMuIFRoZXkgYmVjb21lIHJlYWR5CisgICAgICAgd2hlbiBQeVVuaWNvZGVfUkVBRFkoKSBpcyBjYWxsZWQuCisKKyAgICAgICBTZWUgYWxzbyBfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koKS4KKyAgICAqLwogICAgIFB5T2JqZWN0X0hFQUQKLSAgICBQeV9zc2l6ZV90IGxlbmd0aDsgICAgICAgICAgLyogTGVuZ3RoIG9mIHJhdyBVbmljb2RlIGRhdGEgaW4gYnVmZmVyICovCi0gICAgUHlfVU5JQ09ERSAqc3RyOyAgICAgICAgICAgIC8qIFJhdyBVbmljb2RlIGJ1ZmZlciAqLworICAgIFB5X3NzaXplX3QgbGVuZ3RoOyAgICAgICAgICAvKiBOdW1iZXIgb2YgY29kZSBwb2ludHMgaW4gdGhlIHN0cmluZyAqLwogICAgIFB5X2hhc2hfdCBoYXNoOyAgICAgICAgICAgICAvKiBIYXNoIHZhbHVlOyAtMSBpZiBub3Qgc2V0ICovCi0gICAgaW50IHN0YXRlOyAgICAgICAgICAgICAgICAgIC8qICE9IDAgaWYgaW50ZXJuZWQuIEluIHRoaXMgY2FzZSB0aGUgdHdvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJlZmVyZW5jZXMgZnJvbSB0aGUgZGljdGlvbmFyeSB0byB0aGlzIG9iamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBhcmUgKm5vdCogY291bnRlZCBpbiBvYl9yZWZjbnQuICovCi0gICAgUHlPYmplY3QgKmRlZmVuYzsgICAgICAgICAgIC8qIChEZWZhdWx0KSBFbmNvZGVkIHZlcnNpb24gYXMgUHl0aG9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZywgb3IgTlVMTDsgdGhpcyBpcyB1c2VkIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRpbmcgdGhlIGJ1ZmZlciBwcm90b2NvbCAqLworICAgIHN0cnVjdCB7CisgICAgICAgIC8qCisgICAgICAgICAgIFNTVEFURV9OT1RfSU5URVJORUQgKDApCisgICAgICAgICAgIFNTVEFURV9JTlRFUk5FRF9NT1JUQUwgKDEpCisgICAgICAgICAgIFNTVEFURV9JTlRFUk5FRF9JTU1PUlRBTCAoMikKKworICAgICAgICAgICBJZiBpbnRlcm5lZCAhPSBTU1RBVEVfTk9UX0lOVEVSTkVELCB0aGUgdHdvIHJlZmVyZW5jZXMgZnJvbSB0aGUKKyAgICAgICAgICAgZGljdGlvbmFyeSB0byB0aGlzIG9iamVjdCBhcmUgKm5vdCogY291bnRlZCBpbiBvYl9yZWZjbnQuCisgICAgICAgICAqLworICAgICAgICB1bnNpZ25lZCBpbnQgaW50ZXJuZWQ6MjsKKyAgICAgICAgLyogQ2hhcmFjdGVyIHNpemU6CisKKyAgICAgICAgICAgLSBQeVVuaWNvZGVfV0NIQVJfS0lORCAoMCk6CisKKyAgICAgICAgICAgICAqIGNoYXJhY3RlciB0eXBlID0gd2NoYXJfdCAoMTYgb3IgMzIgYml0cywgZGVwZW5kaW5nIG9uIHRoZQorICAgICAgICAgICAgICAgcGxhdGZvcm0pCisKKyAgICAgICAgICAgLSBQeVVuaWNvZGVfMUJZVEVfS0lORCAoMSk6CisKKyAgICAgICAgICAgICAqIGNoYXJhY3RlciB0eXBlID0gUHlfVUNTMSAoOCBiaXRzLCB1bnNpZ25lZCkKKyAgICAgICAgICAgICAqIGFsbCBjaGFyYWN0ZXJzIGFyZSBpbiB0aGUgcmFuZ2UgVSswMDAwLVUrMDBGRiAobGF0aW4xKQorICAgICAgICAgICAgICogaWYgYXNjaWkgaXMgc2V0LCBhbGwgY2hhcmFjdGVycyBhcmUgaW4gdGhlIHJhbmdlIFUrMDAwMC1VKzAwN0YKKyAgICAgICAgICAgICAgIChBU0NJSSksIG90aGVyd2lzZSBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGlzIGluIHRoZSByYW5nZQorICAgICAgICAgICAgICAgVSswMDgwLVUrMDBGRgorCisgICAgICAgICAgIC0gUHlVbmljb2RlXzJCWVRFX0tJTkQgKDIpOgorCisgICAgICAgICAgICAgKiBjaGFyYWN0ZXIgdHlwZSA9IFB5X1VDUzIgKDE2IGJpdHMsIHVuc2lnbmVkKQorICAgICAgICAgICAgICogYWxsIGNoYXJhY3RlcnMgYXJlIGluIHRoZSByYW5nZSBVKzAwMDAtVStGRkZGIChCTVApCisgICAgICAgICAgICAgKiBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGlzIGluIHRoZSByYW5nZSBVKzAxMDAtVStGRkZGCisKKyAgICAgICAgICAgLSBQeVVuaWNvZGVfNEJZVEVfS0lORCAoNCk6CisKKyAgICAgICAgICAgICAqIGNoYXJhY3RlciB0eXBlID0gUHlfVUNTNCAoMzIgYml0cywgdW5zaWduZWQpCisgICAgICAgICAgICAgKiBhbGwgY2hhcmFjdGVycyBhcmUgaW4gdGhlIHJhbmdlIFUrMDAwMC1VKzEwRkZGRgorICAgICAgICAgICAgICogYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBpcyBpbiB0aGUgcmFuZ2UgVSsxMDAwMC1VKzEwRkZGRgorICAgICAgICAgKi8KKyAgICAgICAgdW5zaWduZWQgaW50IGtpbmQ6MzsKKyAgICAgICAgLyogQ29tcGFjdCBpcyB3aXRoIHJlc3BlY3QgdG8gdGhlIGFsbG9jYXRpb24gc2NoZW1lLiBDb21wYWN0IHVuaWNvZGUKKyAgICAgICAgICAgb2JqZWN0cyBvbmx5IHJlcXVpcmUgb25lIG1lbW9yeSBibG9jayB3aGlsZSBub24tY29tcGFjdCBvYmplY3RzIHVzZQorICAgICAgICAgICBvbmUgYmxvY2sgZm9yIHRoZSBQeVVuaWNvZGVPYmplY3Qgc3RydWN0IGFuZCBhbm90aGVyIGZvciBpdHMgZGF0YQorICAgICAgICAgICBidWZmZXIuICovCisgICAgICAgIHVuc2lnbmVkIGludCBjb21wYWN0OjE7CisgICAgICAgIC8qIFRoZSBzdHJpbmcgb25seSBjb250YWlucyBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZSBVKzAwMDAtVSswMDdGIChBU0NJSSkKKyAgICAgICAgICAgYW5kIHRoZSBraW5kIGlzIFB5VW5pY29kZV8xQllURV9LSU5ELiBJZiBhc2NpaSBpcyBzZXQgYW5kIGNvbXBhY3QgaXMKKyAgICAgICAgICAgc2V0LCB1c2UgdGhlIFB5QVNDSUlPYmplY3Qgc3RydWN0dXJlLiAqLworICAgICAgICB1bnNpZ25lZCBpbnQgYXNjaWk6MTsKKyAgICAgICAgLyogVGhlIHJlYWR5IGZsYWcgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIG9iamVjdCBsYXlvdXQgaXMgaW5pdGlhbGl6ZWQKKyAgICAgICAgICAgY29tcGxldGVseS4gVGhpcyBtZWFucyB0aGF0IHRoaXMgaXMgZWl0aGVyIGEgY29tcGFjdCBvYmplY3QsIG9yCisgICAgICAgICAgIHRoZSBkYXRhIHBvaW50ZXIgaXMgZmlsbGVkIG91dC4gVGhlIGJpdCBpcyByZWR1bmRhbnQsIGFuZCBoZWxwcworICAgICAgICAgICB0byBtaW5pbWl6ZSB0aGUgdGVzdCBpbiBQeVVuaWNvZGVfSVNfUkVBRFkoKS4gKi8KKyAgICAgICAgdW5zaWduZWQgaW50IHJlYWR5OjE7CisgICAgfSBzdGF0ZTsKKyAgICB3Y2hhcl90ICp3c3RyOyAgICAgICAgICAgICAgLyogd2NoYXJfdCByZXByZXNlbnRhdGlvbiAobnVsbC10ZXJtaW5hdGVkKSAqLworfSBQeUFTQ0lJT2JqZWN0OworCisvKiBOb24tQVNDSUkgc3RyaW5ncyBhbGxvY2F0ZWQgdGhyb3VnaCBQeVVuaWNvZGVfTmV3IHVzZSB0aGUKKyAgIFB5Q29tcGFjdFVuaWNvZGVPYmplY3Qgc3RydWN0dXJlLiBzdGF0ZS5jb21wYWN0IGlzIHNldCwgYW5kIHRoZSBkYXRhCisgICBpbW1lZGlhdGVseSBmb2xsb3cgdGhlIHN0cnVjdHVyZS4gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeUFTQ0lJT2JqZWN0IF9iYXNlOworICAgIFB5X3NzaXplX3QgdXRmOF9sZW5ndGg7ICAgICAvKiBOdW1iZXIgb2YgYnl0ZXMgaW4gdXRmOCwgZXhjbHVkaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0ZXJtaW5hdGluZyBcMC4gKi8KKyAgICBjaGFyICp1dGY4OyAgICAgICAgICAgICAgICAgLyogVVRGLTggcmVwcmVzZW50YXRpb24gKG51bGwtdGVybWluYXRlZCkgKi8KKyAgICBQeV9zc2l6ZV90IHdzdHJfbGVuZ3RoOyAgICAgLyogTnVtYmVyIG9mIGNvZGUgcG9pbnRzIGluIHdzdHIsIHBvc3NpYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHN1cnJvZ2F0ZXMgY291bnQgYXMgdHdvIGNvZGUgcG9pbnRzLiAqLworfSBQeUNvbXBhY3RVbmljb2RlT2JqZWN0OworCisvKiBTdHJpbmdzIGFsbG9jYXRlZCB0aHJvdWdoIFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBsZW4pIHVzZSB0aGUKKyAgIFB5VW5pY29kZU9iamVjdCBzdHJ1Y3R1cmUuIFRoZSBhY3R1YWwgc3RyaW5nIGRhdGEgaXMgaW5pdGlhbGx5IGluIHRoZSB3c3RyCisgICBibG9jaywgYW5kIGNvcGllZCBpbnRvIHRoZSBkYXRhIGJsb2NrIHVzaW5nIF9QeVVuaWNvZGVfUmVhZHkuICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlDb21wYWN0VW5pY29kZU9iamVjdCBfYmFzZTsKKyAgICB1bmlvbiB7CisgICAgICAgIHZvaWQgKmFueTsKKyAgICAgICAgUHlfVUNTMSAqbGF0aW4xOworICAgICAgICBQeV9VQ1MyICp1Y3MyOworICAgICAgICBQeV9VQ1M0ICp1Y3M0OworICAgIH0gZGF0YTsgICAgICAgICAgICAgICAgICAgICAvKiBDYW5vbmljYWwsIHNtYWxsZXN0LWZvcm0gVW5pY29kZSBidWZmZXIgKi8KIH0gUHlVbmljb2RlT2JqZWN0OwogI2VuZGlmCiAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeVVuaWNvZGVfVHlwZTsKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeVVuaWNvZGVJdGVyX1R5cGU7CiAKLSNkZWZpbmUgU1NUQVRFX05PVF9JTlRFUk5FRCAwCi0jZGVmaW5lIFNTVEFURV9JTlRFUk5FRF9NT1JUQUwgMQotI2RlZmluZSBTU1RBVEVfSU5URVJORURfSU1NT1JUQUwgMgotCiAjZGVmaW5lIFB5VW5pY29kZV9DaGVjayhvcCkgXAogICAgICAgICAgICAgICAgICBQeVR5cGVfRmFzdFN1YmNsYXNzKFB5X1RZUEUob3ApLCBQeV9UUEZMQUdTX1VOSUNPREVfU1VCQ0xBU1MpCiAjZGVmaW5lIFB5VW5pY29kZV9DaGVja0V4YWN0KG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5VW5pY29kZV9UeXBlKQogCiAvKiBGYXN0IGFjY2VzcyBtYWNyb3MgKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLSNkZWZpbmUgUHlVbmljb2RlX0dFVF9TSVpFKG9wKSBcCi0gICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwoKChQeVVuaWNvZGVPYmplY3QgKikob3ApKS0+bGVuZ3RoKSkKKworI2RlZmluZSBQeVVuaWNvZGVfV1NUUl9MRU5HVEgob3ApIFwKKyAgICAoUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob3ApID8gICAgICAgICAgICAgICAgICBcCisgICAgICgoUHlBU0NJSU9iamVjdCopb3ApLT5sZW5ndGggOiAgICAgICAgICAgICAgICAgICAgXAorICAgICAoKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QqKW9wKS0+d3N0cl9sZW5ndGgpCisKKy8qIFJldHVybnMgdGhlIGRlcHJlY2F0ZWQgUHlfVU5JQ09ERSByZXByZXNlbnRhdGlvbidzIHNpemUgaW4gY29kZSB1bml0cworICAgKHRoaXMgaW5jbHVkZXMgc3Vycm9nYXRlIHBhaXJzIGFzIDIgdW5pdHMpLgorICAgSWYgdGhlIFB5X1VOSUNPREUgcmVwcmVzZW50YXRpb24gaXMgbm90IGF2YWlsYWJsZSwgaXQgd2lsbCBiZSBjb21wdXRlZAorICAgb24gcmVxdWVzdC4gIFVzZSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgpIGZvciB0aGUgbGVuZ3RoIGluIGNvZGUgcG9pbnRzLiAqLworCisjZGVmaW5lIFB5VW5pY29kZV9HRVRfU0laRShvcCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCAgICAgICAgICAgICAgICAgICAgXAorICAgICAoKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPndzdHIpID8gICAgICAgICAgICAgICBcCisgICAgICBQeVVuaWNvZGVfV1NUUl9MRU5HVEgob3ApIDogICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICgodm9pZClQeVVuaWNvZGVfQXNVbmljb2RlKChQeU9iamVjdCAqKShvcCkpLCAgXAorICAgICAgIGFzc2VydCgoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+d3N0ciksICAgICAgICBcCisgICAgICAgUHlVbmljb2RlX1dTVFJfTEVOR1RIKG9wKSkpCisKICNkZWZpbmUgUHlVbmljb2RlX0dFVF9EQVRBX1NJWkUob3ApIFwKLSAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCgoKFB5VW5pY29kZU9iamVjdCAqKShvcCkpLT5sZW5ndGggKiBzaXplb2YoUHlfVU5JQ09ERSkpKQorICAgIChQeVVuaWNvZGVfR0VUX1NJWkUob3ApICogUHlfVU5JQ09ERV9TSVpFKQorCisvKiBBbGlhcyBmb3IgUHlVbmljb2RlX0FzVW5pY29kZSgpLiAgVGhpcyB3aWxsIGNyZWF0ZSBhIHdjaGFyX3QvUHlfVU5JQ09ERQorICAgcmVwcmVzZW50YXRpb24gb24gZGVtYW5kLiAgVXNpbmcgdGhpcyBtYWNybyBpcyB2ZXJ5IGluZWZmaWNpZW50IG5vdywKKyAgIHRyeSB0byBwb3J0IHlvdXIgY29kZSB0byB1c2UgdGhlIG5ldyBQeVVuaWNvZGVfKkJZVEVfREFUQSgpIG1hY3JvcyBvcgorICAgdXNlIFB5VW5pY29kZV9XUklURSgpIGFuZCBQeVVuaWNvZGVfUkVBRCgpLiAqLworCiAjZGVmaW5lIFB5VW5pY29kZV9BU19VTklDT0RFKG9wKSBcCi0gICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwoKChQeVVuaWNvZGVPYmplY3QgKikob3ApKS0+c3RyKSkKKyAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCBcCisgICAgICgoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+d3N0cikgPyAoKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPndzdHIpIDogXAorICAgICAgUHlVbmljb2RlX0FzVW5pY29kZSgoUHlPYmplY3QgKikob3ApKSkKKwogI2RlZmluZSBQeVVuaWNvZGVfQVNfREFUQShvcCkgXAotICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9wKSksKChjb25zdCBjaGFyICopKChQeVVuaWNvZGVPYmplY3QgKikob3ApKS0+c3RyKSkKKyAgICAoKGNvbnN0IGNoYXIgKikoUHlVbmljb2RlX0FTX1VOSUNPREUob3ApKSkKKworCisvKiAtLS0gRmxleGlibGUgU3RyaW5nIFJlcHJlc2VudGF0aW9uIEhlbHBlciBNYWNyb3MgKFBFUCAzOTMpIC0tLS0tLS0tLS0tLS0tICovCisKKy8qIFZhbHVlcyBmb3IgUHlBU0NJSU9iamVjdC5zdGF0ZTogKi8KKworLyogSW50ZXJuaW5nIHN0YXRlLiAqLworI2RlZmluZSBTU1RBVEVfTk9UX0lOVEVSTkVEIDAKKyNkZWZpbmUgU1NUQVRFX0lOVEVSTkVEX01PUlRBTCAxCisjZGVmaW5lIFNTVEFURV9JTlRFUk5FRF9JTU1PUlRBTCAyCisKKy8qIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgY29udGFpbnMgb25seSBBU0NJSSBjaGFyYWN0ZXJzLCBvciAwIGlmIG5vdC4gVGhlCisgICBzdHJpbmcgbWF5IGJlIGNvbXBhY3QgKFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKSBvciBub3QsIGJ1dCBtdXN0IGJlCisgICByZWFkeS4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX0lTX0FTQ0lJKG9wKSAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwgICAgICAgICAgICAgICAgXAorICAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKG9wKSksICAgICAgICAgICAgIFwKKyAgICAgKChQeUFTQ0lJT2JqZWN0KilvcCktPnN0YXRlLmFzY2lpKQorCisvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGNvbXBhY3Qgb3IgMCBpZiBub3QuCisgICBObyB0eXBlIGNoZWNrcyBvciBSZWFkeSBjYWxscyBhcmUgcGVyZm9ybWVkLiAqLworI2RlZmluZSBQeVVuaWNvZGVfSVNfQ09NUEFDVChvcCkgXAorICAgICgoKFB5QVNDSUlPYmplY3QqKShvcCkpLT5zdGF0ZS5jb21wYWN0KQorCisvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgY29tcGFjdCBBU0NJSSBzdHJpbmcgKHVzZSBQeUFTQ0lJT2JqZWN0CisgICBzdHJ1Y3R1cmUpLCBvciAwIGlmIG5vdC4gIE5vIHR5cGUgY2hlY2tzIG9yIFJlYWR5IGNhbGxzIGFyZSBwZXJmb3JtZWQuICovCisjZGVmaW5lIFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9wKSAgICAgICAgICAgICAgICAgXAorICAgICgoKFB5QVNDSUlPYmplY3QqKW9wKS0+c3RhdGUuYXNjaWkgJiYgUHlVbmljb2RlX0lTX0NPTVBBQ1Qob3ApKQorCitlbnVtIFB5VW5pY29kZV9LaW5kIHsKKy8qIFN0cmluZyBjb250YWlucyBvbmx5IHdzdHIgYnl0ZSBjaGFyYWN0ZXJzLiAgVGhpcyBpcyBvbmx5IHBvc3NpYmxlCisgICB3aGVuIHRoZSBzdHJpbmcgd2FzIGNyZWF0ZWQgd2l0aCBhIGxlZ2FjeSBBUEkgYW5kIF9QeVVuaWNvZGVfUmVhZHkoKQorICAgaGFzIG5vdCBiZWVuIGNhbGxlZCB5ZXQuICAqLworICAgIFB5VW5pY29kZV9XQ0hBUl9LSU5EID0gMCwKKy8qIFJldHVybiB2YWx1ZXMgb2YgdGhlIFB5VW5pY29kZV9LSU5EKCkgbWFjcm86ICovCisgICAgUHlVbmljb2RlXzFCWVRFX0tJTkQgPSAxLAorICAgIFB5VW5pY29kZV8yQllURV9LSU5EID0gMiwKKyAgICBQeVVuaWNvZGVfNEJZVEVfS0lORCA9IDQKK307CisKKy8qIFJldHVybiBwb2ludGVycyB0byB0aGUgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGNhc3QgdG8gdW5zaWduZWQgY2hhciwKKyAgIFB5X1VDUzIsIG9yIFB5X1VDUzQgZm9yIGRpcmVjdCBjaGFyYWN0ZXIgYWNjZXNzLgorICAgTm8gY2hlY2tzIGFyZSBwZXJmb3JtZWQsIHVzZSBQeVVuaWNvZGVfS0lORCgpIGJlZm9yZSB0byBlbnN1cmUKKyAgIHRoZXNlIHdpbGwgd29yayBjb3JyZWN0bHkuICovCisKKyNkZWZpbmUgUHlVbmljb2RlXzFCWVRFX0RBVEEob3ApICgoUHlfVUNTMSopUHlVbmljb2RlX0RBVEEob3ApKQorI2RlZmluZSBQeVVuaWNvZGVfMkJZVEVfREFUQShvcCkgKChQeV9VQ1MyKilQeVVuaWNvZGVfREFUQShvcCkpCisjZGVmaW5lIFB5VW5pY29kZV80QllURV9EQVRBKG9wKSAoKFB5X1VDUzQqKVB5VW5pY29kZV9EQVRBKG9wKSkKKworLyogUmV0dXJuIG9uZSBvZiB0aGUgUHlVbmljb2RlXypfS0lORCB2YWx1ZXMgZGVmaW5lZCBhYm92ZS4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX0tJTkQob3ApIFwKKyAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCBcCisgICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkob3ApKSwgICAgICAgICAgICBcCisgICAgICgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT5zdGF0ZS5raW5kKQorCisvKiBSZXR1cm4gYSB2b2lkIHBvaW50ZXIgdG8gdGhlIHJhdyB1bmljb2RlIGJ1ZmZlci4gKi8KKyNkZWZpbmUgX1B5VW5pY29kZV9DT01QQUNUX0RBVEEob3ApICAgICAgICAgICAgICAgICAgICAgXAorICAgIChQeVVuaWNvZGVfSVNfQVNDSUkob3ApID8gICAgICAgICAgICAgICAgICAgXAorICAgICAoKHZvaWQqKSgoUHlBU0NJSU9iamVjdCopKG9wKSArIDEpKSA6ICAgICAgICAgICAgICBcCisgICAgICgodm9pZCopKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0Kikob3ApICsgMSkpKQorCisjZGVmaW5lIF9QeVVuaWNvZGVfTk9OQ09NUEFDVF9EQVRBKG9wKSAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KCgoUHlVbmljb2RlT2JqZWN0Kikob3ApKS0+ZGF0YS5hbnkpLCAgICAgICAgXAorICAgICAoKCgoUHlVbmljb2RlT2JqZWN0ICopKG9wKSktPmRhdGEuYW55KSkpCisKKyNkZWZpbmUgUHlVbmljb2RlX0RBVEEob3ApIFwKKyAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCBcCisgICAgIFB5VW5pY29kZV9JU19DT01QQUNUKG9wKSA/IF9QeVVuaWNvZGVfQ09NUEFDVF9EQVRBKG9wKSA6ICAgXAorICAgICBfUHlVbmljb2RlX05PTkNPTVBBQ1RfREFUQShvcCkpCisKKy8qIEluIHRoZSBhY2Nlc3MgbWFjcm9zIGJlbG93LCAia2luZCIgbWF5IGJlIGV2YWx1YXRlZCBtb3JlIHRoYW4gb25jZS4KKyAgIEFsbCBvdGhlciBtYWNybyBwYXJhbWV0ZXJzIGFyZSBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLCBzbyBpdCBpcyBzYWZlCisgICB0byBwdXQgc2lkZSBlZmZlY3RzIGludG8gdGhlbSAoc3VjaCBhcyBpbmNyZWFzaW5nIHRoZSBpbmRleCkuICovCisKKy8qIFdyaXRlIGludG8gdGhlIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiwgdGhpcyBtYWNybyBkb2VzIG5vdCBkbyBhbnkgc2FuaXR5CisgICBjaGVja3MgYW5kIGlzIGludGVuZGVkIGZvciB1c2FnZSBpbiBsb29wcy4gIFRoZSBjYWxsZXIgc2hvdWxkIGNhY2hlIHRoZQorICAga2luZCBhbmQgZGF0YSBwb2ludGVycyBvYnRhaW5lZCBmcm9tIG90aGVyIG1hY3JvIGNhbGxzLgorICAgaW5kZXggaXMgdGhlIGluZGV4IGluIHRoZSBzdHJpbmcgKHN0YXJ0cyBhdCAwKSBhbmQgdmFsdWUgaXMgdGhlIG5ldworICAgY29kZSBwb2ludCB2YWx1ZSB3aGljaCBzaG91bGQgYmUgd3JpdHRlbiB0byB0aGF0IGxvY2F0aW9uLiAqLworI2RlZmluZSBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgaW5kZXgsIHZhbHVlKSBcCisgICAgZG8geyBcCisgICAgICAgIHN3aXRjaCAoKGtpbmQpKSB7IFwKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDogeyBcCisgICAgICAgICAgICAoKFB5X1VDUzEgKikoZGF0YSkpWyhpbmRleCldID0gKFB5X1VDUzEpKHZhbHVlKTsgXAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6IHsgXAorICAgICAgICAgICAgKChQeV9VQ1MyICopKGRhdGEpKVsoaW5kZXgpXSA9IChQeV9VQ1MyKSh2YWx1ZSk7IFwKKyAgICAgICAgICAgIGJyZWFrOyBcCisgICAgICAgIH0gXAorICAgICAgICBkZWZhdWx0OiB7IFwKKyAgICAgICAgICAgIGFzc2VydCgoa2luZCkgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOyBcCisgICAgICAgICAgICAoKFB5X1VDUzQgKikoZGF0YSkpWyhpbmRleCldID0gKFB5X1VDUzQpKHZhbHVlKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSB3aGlsZSAoMCkKKworLyogUmVhZCBhIGNvZGUgcG9pbnQgZnJvbSB0aGUgc3RyaW5nJ3MgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uLiAgTm8gY2hlY2tzCisgICBvciByZWFkeSBjYWxscyBhcmUgcGVyZm9ybWVkLiAqLworI2RlZmluZSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpbmRleCkgXAorICAgICgoUHlfVUNTNCkgXAorICAgICgoa2luZCkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQgPyBcCisgICAgICAgICgoY29uc3QgUHlfVUNTMSAqKShkYXRhKSlbKGluZGV4KV0gOiBcCisgICAgICAgICgoa2luZCkgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQgPyBcCisgICAgICAgICAgICAoKGNvbnN0IFB5X1VDUzIgKikoZGF0YSkpWyhpbmRleCldIDogXAorICAgICAgICAgICAgKChjb25zdCBQeV9VQ1M0ICopKGRhdGEpKVsoaW5kZXgpXSBcCisgICAgICAgICkgXAorICAgICkpCisKKy8qIFB5VW5pY29kZV9SRUFEX0NIQVIoKSBpcyBsZXNzIGVmZmljaWVudCB0aGFuIFB5VW5pY29kZV9SRUFEKCkgYmVjYXVzZSBpdAorICAgY2FsbHMgUHlVbmljb2RlX0tJTkQoKSBhbmQgbWlnaHQgY2FsbCBpdCB0d2ljZS4gIEZvciBzaW5nbGUgcmVhZHMsIHVzZQorICAgUHlVbmljb2RlX1JFQURfQ0hBUiwgZm9yIG11bHRpcGxlIGNvbnNlY3V0aXZlIHJlYWRzIGNhbGxlcnMgc2hvdWxkCisgICBjYWNoZSBraW5kIGFuZCB1c2UgUHlVbmljb2RlX1JFQUQgaW5zdGVhZC4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlLCBpbmRleCkgXAorICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSwgICAgICAgICAgXAorICAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKSwgICAgICAgXAorICAgICAoUHlfVUNTNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoUHlVbmljb2RlX0tJTkQoKHVuaWNvZGUpKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCA/IFwKKyAgICAgICAgICAgICgoY29uc3QgUHlfVUNTMSAqKShQeVVuaWNvZGVfREFUQSgodW5pY29kZSkpKSlbKGluZGV4KV0gOiBcCisgICAgICAgICAgICAoUHlVbmljb2RlX0tJTkQoKHVuaWNvZGUpKSA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCA/IFwKKyAgICAgICAgICAgICAgICAoKGNvbnN0IFB5X1VDUzIgKikoUHlVbmljb2RlX0RBVEEoKHVuaWNvZGUpKSkpWyhpbmRleCldIDogXAorICAgICAgICAgICAgICAgICgoY29uc3QgUHlfVUNTNCAqKShQeVVuaWNvZGVfREFUQSgodW5pY29kZSkpKSlbKGluZGV4KV0gXAorICAgICAgICAgICAgKSBcCisgICAgICAgICkpCisKKy8qIFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgdW5pY29kZSBzdHJpbmcuIFRoZSBjYWxsZXIgaGFzIHRvIG1ha2Ugc3VyZSB0aGF0CisgICB0aGUgc3RyaW5nIGhhcyBpdCdzIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBzZXQgYmVmb3JlIGNhbGxpbmcKKyAgIHRoaXMgbWFjcm8uICBDYWxsIFB5VW5pY29kZV8oRkFTVF8pUmVhZHkgdG8gZW5zdXJlIHRoYXQuICovCisjZGVmaW5lIFB5VW5pY29kZV9HRVRfTEVOR1RIKG9wKSAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwgICAgICAgICAgICAgICBcCisgICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkob3ApKSwgICAgICAgICAgICBcCisgICAgICgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT5sZW5ndGgpCisKKworLyogRmFzdCBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBhbiBvYmplY3QgaXMgcmVhZHkuIEVxdWl2YWxlbnQgdG8KKyAgIFB5VW5pY29kZV9JU19DT01QQUNUKG9wKSB8fCAoKFB5VW5pY29kZU9iamVjdCopKG9wKSktPmRhdGEuYW55KSAqLworCisjZGVmaW5lIFB5VW5pY29kZV9JU19SRUFEWShvcCkgKCgoUHlBU0NJSU9iamVjdCopb3ApLT5zdGF0ZS5yZWFkeSkKKworLyogUHlVbmljb2RlX1JFQURZKCkgZG9lcyBsZXNzIHdvcmsgdGhhbiBfUHlVbmljb2RlX1JlYWR5KCkgaW4gdGhlIGJlc3QKKyAgIGNhc2UuICBJZiB0aGUgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGlzIG5vdCB5ZXQgc2V0LCBpdCB3aWxsIHN0aWxsIGNhbGwKKyAgIF9QeVVuaWNvZGVfUmVhZHkoKS4KKyAgIFJldHVybnMgMCBvbiBzdWNjZXNzIGFuZCAtMSBvbiBlcnJvcnMuICovCisjZGVmaW5lIFB5VW5pY29kZV9SRUFEWShvcCkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKFB5VW5pY29kZV9JU19SRUFEWShvcCkgPyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgMCA6IF9QeVVuaWNvZGVfUmVhZHkoKFB5T2JqZWN0ICopKG9wKSkpKQorCisvKiBSZXR1cm4gYSBtYXhpbXVtIGNoYXJhY3RlciB2YWx1ZSB3aGljaCBpcyBzdWl0YWJsZSBmb3IgY3JlYXRpbmcgYW5vdGhlcgorICAgc3RyaW5nIGJhc2VkIG9uIG9wLiAgVGhpcyBpcyBhbHdheXMgYW4gYXBwcm94aW1hdGlvbiBidXQgbW9yZSBlZmZpY2llbnQKKyAgIHRoYW4gaXRlcmF0aW5nIG92ZXIgdGhlIHN0cmluZy4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKG9wKSBcCisgICAgKGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkob3ApKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIChQeVVuaWNvZGVfSVNfQVNDSUkob3ApID8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAoMHg3ZikgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAoUHlVbmljb2RlX0tJTkQob3ApID09IFB5VW5pY29kZV8xQllURV9LSU5EID8gICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgKDB4ZmZVKSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgKFB5VW5pY29kZV9LSU5EKG9wKSA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCA/ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgweGZmZmZVKSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgweDEwZmZmZlUpKSkpKQorCiAjZW5kaWYKIAogLyogLS0tIENvbnN0YW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC00MTgsMTIgKzU4NiwxMDcgQEAKICAgIFVuaWNvZGUgY2hhcmFjdGVyIFUrRkZGRCBpcyB0aGUgb2ZmaWNpYWwgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSIGluCiAgICBVbmljb2RlIDMuMC4gKi8KIAotI2RlZmluZSBQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUiAoKFB5X1VOSUNPREUpIDB4RkZGRCkKKyNkZWZpbmUgUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVIgKChQeV9VQ1M0KSAweEZGRkQpCiAKIC8qID09PSBQdWJsaWMgQVBJID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogCiAvKiAtLS0gUGxhaW4gUHlfVU5JQ09ERSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAorLyogV2l0aCBQRVAgMzkzLCB0aGlzIGlzIHRoZSByZWNvbW1lbmRlZCB3YXkgdG8gYWxsb2NhdGUgYSBuZXcgdW5pY29kZSBvYmplY3QuCisgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYWxsb2NhdGUgdGhlIG9iamVjdCBhbmQgaXRzIGJ1ZmZlciBpbiBhIHNpbmdsZSBtZW1vcnkKKyAgIGJsb2NrLiAgT2JqZWN0cyBjcmVhdGVkIHVzaW5nIHRoaXMgZnVuY3Rpb24gYXJlIG5vdCByZXNpemFibGUuICovCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX05ldygKKyAgICBQeV9zc2l6ZV90IHNpemUsICAgICAgICAgICAgLyogTnVtYmVyIG9mIGNvZGUgcG9pbnRzIGluIHRoZSBuZXcgc3RyaW5nICovCisgICAgUHlfVUNTNCBtYXhjaGFyICAgICAgICAgICAgIC8qIG1heGltdW0gY29kZSBwb2ludCB2YWx1ZSBpbiB0aGUgc3RyaW5nICovCisgICAgKTsKKyNlbmRpZgorCisvKiBJbml0aWFsaXplcyB0aGUgY2Fub25pY2FsIHN0cmluZyByZXByZXNlbnRhdGlvbiBmcm9tIGEgdGhlIGRlcHJlY2F0ZWQKKyAgIHdzdHIvUHlfVU5JQ09ERSByZXByZXNlbnRhdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNvbnZlcnQgVW5pY29kZQorICAgb2JqZWN0cyB3aGljaCB3ZXJlIGNyZWF0ZWQgdXNpbmcgdGhlIG9sZCBBUEkgdG8gdGhlIG5ldyBmbGV4aWJsZSBmb3JtYXQKKyAgIGludHJvZHVjZWQgd2l0aCBQRVAgMzkzLgorCisgICBEb24ndCBjYWxsIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHksIHVzZSB0aGUgcHVibGljIFB5VW5pY29kZV9SRUFEWSgpIG1hY3JvCisgICBpbnN0ZWFkLiAqLworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfUmVhZHkoCisgICAgUHlPYmplY3QgKnVuaWNvZGUgICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCisgICAgKTsKKyNlbmRpZgorCisvKiBHZXQgYSBjb3B5IG9mIGEgVW5pY29kZSBzdHJpbmcuICovCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9Db3B5KAorICAgIFB5T2JqZWN0ICp1bmljb2RlCisgICAgKTsKKyNlbmRpZgorCisvKiBDb3B5IGNoYXJhY3RlciBmcm9tIG9uZSB1bmljb2RlIG9iamVjdCBpbnRvIGFub3RoZXIsIHRoaXMgZnVuY3Rpb24gcGVyZm9ybXMKKyAgIGNoYXJhY3RlciBjb252ZXJzaW9uIHdoZW4gbmVjZXNzYXJ5IGFuZCBmYWxscyBiYWNrIHRvIG1lbWNweSgpIGlmIHBvc3NpYmxlLgorCisgICBGYWlsIGlmIHRvIGlzIHRvbyBzbWFsbCAoc21hbGxlciB0aGFuICpob3dfbWFueSogb3Igc21hbGxlciB0aGFuCisgICBsZW4oZnJvbSktZnJvbV9zdGFydCksIG9yIGlmIGtpbmQoZnJvbVtmcm9tX3N0YXJ0OmZyb21fc3RhcnQraG93X21hbnldKSA+CisgICBraW5kKHRvKSwgb3IgaWYgKnRvKiBoYXMgbW9yZSB0aGFuIDEgcmVmZXJlbmNlLgorCisgICBSZXR1cm4gdGhlIG51bWJlciBvZiB3cml0dGVuIGNoYXJhY3Rlciwgb3IgcmV0dXJuIC0xIGFuZCByYWlzZSBhbiBleGNlcHRpb24KKyAgIG9uIGVycm9yLgorCisgICBQc2V1ZG8tY29kZToKKworICAgICAgIGhvd19tYW55ID0gbWluKGhvd19tYW55LCBsZW4oZnJvbSkgLSBmcm9tX3N0YXJ0KQorICAgICAgIHRvW3RvX3N0YXJ0OnRvX3N0YXJ0K2hvd19tYW55XSA9IGZyb21bZnJvbV9zdGFydDpmcm9tX3N0YXJ0K2hvd19tYW55XQorICAgICAgIHJldHVybiBob3dfbWFueQorCisgICBOb3RlOiBUaGUgZnVuY3Rpb24gZG9lc24ndCB3cml0ZSBhIHRlcm1pbmF0aW5nIG51bGwgY2hhcmFjdGVyLgorICAgKi8KKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKAorICAgIFB5T2JqZWN0ICp0bywKKyAgICBQeV9zc2l6ZV90IHRvX3N0YXJ0LAorICAgIFB5T2JqZWN0ICpmcm9tLAorICAgIFB5X3NzaXplX3QgZnJvbV9zdGFydCwKKyAgICBQeV9zc2l6ZV90IGhvd19tYW55CisgICAgKTsKKworLyogVW5zYWZlIHZlcnNpb24gb2YgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKCk6IGRvbid0IGNoZWNrIGFyZ3VtZW50cyBhbmQgc28KKyAgIG1heSBjcmFzaCBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkIChlLmcuIGlmIHRoZSBvdXRwdXQgc3RyaW5nCisgICBpcyB0b28gc2hvcnQpLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycygKKyAgICBQeU9iamVjdCAqdG8sCisgICAgUHlfc3NpemVfdCB0b19zdGFydCwKKyAgICBQeU9iamVjdCAqZnJvbSwKKyAgICBQeV9zc2l6ZV90IGZyb21fc3RhcnQsCisgICAgUHlfc3NpemVfdCBob3dfbWFueQorICAgICk7CisjZW5kaWYKKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorLyogRmlsbCBhIHN0cmluZyB3aXRoIGEgY2hhcmFjdGVyOiB3cml0ZSBmaWxsX2NoYXIgaW50bworICAgdW5pY29kZVtzdGFydDpzdGFydCtsZW5ndGhdLgorCisgICBGYWlsIGlmIGZpbGxfY2hhciBpcyBiaWdnZXIgdGhhbiB0aGUgc3RyaW5nIG1heGltdW0gY2hhcmFjdGVyLCBvciBpZiB0aGUKKyAgIHN0cmluZyBoYXMgbW9yZSB0aGFuIDEgcmVmZXJlbmNlLgorCisgICBSZXR1cm4gdGhlIG51bWJlciBvZiB3cml0dGVuIGNoYXJhY3Rlciwgb3IgcmV0dXJuIC0xIGFuZCByYWlzZSBhbiBleGNlcHRpb24KKyAgIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBQeVVuaWNvZGVfRmlsbCgKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgbGVuZ3RoLAorICAgIFB5X1VDUzQgZmlsbF9jaGFyCisgICAgKTsKKworLyogVW5zYWZlIHZlcnNpb24gb2YgUHlVbmljb2RlX0ZpbGwoKTogZG9uJ3QgY2hlY2sgYXJndW1lbnRzIGFuZCBzbyBtYXkgY3Jhc2gKKyAgIGlmIHBhcmFtZXRlcnMgYXJlIGludmFsaWQgKGUuZy4gaWYgbGVuZ3RoIGlzIGxvbmdlciB0aGFuIHRoZSBzdHJpbmcpLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlVbmljb2RlX0Zhc3RGaWxsKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgUHlfc3NpemVfdCBsZW5ndGgsCisgICAgUHlfVUNTNCBmaWxsX2NoYXIKKyAgICApOworI2VuZGlmCisKIC8qIENyZWF0ZSBhIFVuaWNvZGUgT2JqZWN0IGZyb20gdGhlIFB5X1VOSUNPREUgYnVmZmVyIHUgb2YgdGhlIGdpdmVuCiAgICBzaXplLgogCkBAIC00NDgsMTMgKzcxMSw2MCBAQAogICAgICk7CiAKIC8qIFNpbWlsYXIgdG8gUHlVbmljb2RlX0Zyb21Vbmljb2RlKCksIGJ1dCB1IHBvaW50cyB0byBudWxsLXRlcm1pbmF0ZWQKLSAgIFVURi04IGVuY29kZWQgYnl0ZXMgKi8KKyAgIFVURi04IGVuY29kZWQgYnl0ZXMuICBUaGUgc2l6ZSBpcyBkZXRlcm1pbmVkIHdpdGggc3RybGVuKCkuICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0Zyb21TdHJpbmcoCiAgICAgY29uc3QgY2hhciAqdSAgICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisvKiBDcmVhdGUgYSBuZXcgc3RyaW5nIGZyb20gYSBidWZmZXIgb2YgUHlfVUNTMSwgUHlfVUNTMiBvciBQeV9VQ1M0IGNoYXJhY3RlcnMuCisgICBTY2FuIHRoZSBzdHJpbmcgdG8gZmluZCB0aGUgbWF4aW11bSBjaGFyYWN0ZXIuICovCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YSgKKyAgICBpbnQga2luZCwKKyAgICBjb25zdCB2b2lkICpidWZmZXIsCisgICAgUHlfc3NpemVfdCBzaXplKTsKKworLyogQ3JlYXRlIGEgbmV3IHN0cmluZyBmcm9tIGEgYnVmZmVyIG9mIEFTQ0lJIGNoYXJhY3RlcnMuCisgICBXQVJOSU5HOiBEb24ndCBjaGVjayBpZiB0aGUgc3RyaW5nIGNvbnRhaW5zIGFueSBub24tQVNDSUkgY2hhcmFjdGVyLiAqLworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfRnJvbUFTQ0lJKAorICAgIGNvbnN0IGNoYXIgKmJ1ZmZlciwKKyAgICBQeV9zc2l6ZV90IHNpemUpOworI2VuZGlmCisKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfU3Vic3RyaW5nKAorICAgIFB5T2JqZWN0ICpzdHIsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGVuZCk7CisKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIENvbXB1dGUgdGhlIG1heGltdW0gY2hhcmFjdGVyIG9mIHRoZSBzdWJzdHJpbmcgdW5pY29kZVtzdGFydDplbmRdLgorICAgUmV0dXJuIDEyNyBmb3IgYW4gZW1wdHkgc3RyaW5nLiAqLworUHlBUElfRlVOQyhQeV9VQ1M0KSBfUHlVbmljb2RlX0ZpbmRNYXhDaGFyICgKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgZW5kKTsKKyNlbmRpZgorCisvKiBDb3B5IHRoZSBzdHJpbmcgaW50byBhIFVDUzQgYnVmZmVyIGluY2x1ZGluZyB0aGUgbnVsbCBjaGFyYWN0ZXIgaWYgY29weV9udWxsCisgICBpcyBzZXQuIFJldHVybiBOVUxMIGFuZCByYWlzZSBhbiBleGNlcHRpb24gb24gZXJyb3IuIFJhaXNlIGEgVmFsdWVFcnJvciBpZgorICAgdGhlIGJ1ZmZlciBpcyBzbWFsbGVyIHRoYW4gdGhlIHN0cmluZy4gUmV0dXJuIGJ1ZmZlciBvbiBzdWNjZXNzLgorCisgICBidWZsZW4gaXMgdGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyIGluIChQeV9VQ1M0KSBjaGFyYWN0ZXJzLiAqLworUHlBUElfRlVOQyhQeV9VQ1M0KikgUHlVbmljb2RlX0FzVUNTNCgKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBQeV9VQ1M0KiBidWZmZXIsCisgICAgUHlfc3NpemVfdCBidWZsZW4sCisgICAgaW50IGNvcHlfbnVsbCk7CisKKy8qIENvcHkgdGhlIHN0cmluZyBpbnRvIGEgVUNTNCBidWZmZXIuIEEgbmV3IGJ1ZmZlciBpcyBhbGxvY2F0ZWQgdXNpbmcKKyAqIFB5TWVtX01hbGxvYzsgaWYgdGhpcyBmYWlscywgTlVMTCBpcyByZXR1cm5lZCB3aXRoIGEgbWVtb3J5IGVycm9yCisgICBleGNlcHRpb24gc2V0LiAqLworUHlBUElfRlVOQyhQeV9VQ1M0KikgUHlVbmljb2RlX0FzVUNTNENvcHkoUHlPYmplY3QgKnVuaWNvZGUpOworCiAvKiBSZXR1cm4gYSByZWFkLW9ubHkgcG9pbnRlciB0byB0aGUgVW5pY29kZSBvYmplY3QncyBpbnRlcm5hbAotICAgUHlfVU5JQ09ERSBidWZmZXIuICovCisgICBQeV9VTklDT0RFIGJ1ZmZlci4KKyAgIElmIHRoZSB3Y2hhcl90L1B5X1VOSUNPREUgcmVwcmVzZW50YXRpb24gaXMgbm90IHlldCBhdmFpbGFibGUsIHRoaXMKKyAgIGZ1bmN0aW9uIHdpbGwgY2FsY3VsYXRlIGl0LiAqLwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5X1VOSUNPREUgKikgUHlVbmljb2RlX0FzVW5pY29kZSgKQEAgLTQ2MiwzMCArNzcyLDY5IEBACiAgICAgKTsKICNlbmRpZgogCisvKiBSZXR1cm4gYSByZWFkLW9ubHkgcG9pbnRlciB0byB0aGUgVW5pY29kZSBvYmplY3QncyBpbnRlcm5hbAorICAgUHlfVU5JQ09ERSBidWZmZXIgYW5kIHNhdmUgdGhlIGxlbmd0aCBhdCBzaXplLgorICAgSWYgdGhlIHdjaGFyX3QvUHlfVU5JQ09ERSByZXByZXNlbnRhdGlvbiBpcyBub3QgeWV0IGF2YWlsYWJsZSwgdGhpcworICAgZnVuY3Rpb24gd2lsbCBjYWxjdWxhdGUgaXQuICovCisKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlfVU5JQ09ERSAqKSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSgKKyAgICBQeU9iamVjdCAqdW5pY29kZSwgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KKyAgICBQeV9zc2l6ZV90ICpzaXplICAgICAgICAgICAgLyogbG9jYXRpb24gd2hlcmUgdG8gc2F2ZSB0aGUgbGVuZ3RoICovCisgICAgKTsKKyNlbmRpZgorCiAvKiBHZXQgdGhlIGxlbmd0aCBvZiB0aGUgVW5pY29kZSBvYmplY3QuICovCiAKK1B5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlVbmljb2RlX0dldExlbmd0aCgKKyAgICBQeU9iamVjdCAqdW5pY29kZQorKTsKKworLyogR2V0IHRoZSBudW1iZXIgb2YgUHlfVU5JQ09ERSB1bml0cyBpbiB0aGUKKyAgIHN0cmluZyByZXByZXNlbnRhdGlvbi4gKi8KKwogUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBQeVVuaWNvZGVfR2V0U2l6ZSgKICAgICBQeU9iamVjdCAqdW5pY29kZSAgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KICAgICApOwogCisvKiBSZWFkIGEgY2hhcmFjdGVyIGZyb20gdGhlIHN0cmluZy4gKi8KKworUHlBUElfRlVOQyhQeV9VQ1M0KSBQeVVuaWNvZGVfUmVhZENoYXIoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgUHlfc3NpemVfdCBpbmRleAorICAgICk7CisKKy8qIFdyaXRlIGEgY2hhcmFjdGVyIHRvIHRoZSBzdHJpbmcuIFRoZSBzdHJpbmcgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCB0aHJvdWdoCisgICBQeVVuaWNvZGVfTmV3LCBtdXN0IG5vdCBiZSBzaGFyZWQsIGFuZCBtdXN0IG5vdCBoYXZlIGJlZW4gaGFzaGVkIHlldC4KKworICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IuICovCisKK1B5QVBJX0ZVTkMoaW50KSBQeVVuaWNvZGVfV3JpdGVDaGFyKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgIFB5X3NzaXplX3QgaW5kZXgsCisgICAgUHlfVUNTNCBjaGFyYWN0ZXIKKyAgICApOworCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBHZXQgdGhlIG1heGltdW0gb3JkaW5hbCBmb3IgYSBVbmljb2RlIGNoYXJhY3Rlci4gKi8KIFB5QVBJX0ZVTkMoUHlfVU5JQ09ERSkgUHlVbmljb2RlX0dldE1heCh2b2lkKTsKICNlbmRpZgogCi0vKiBSZXNpemUgYW4gYWxyZWFkeSBhbGxvY2F0ZWQgVW5pY29kZSBvYmplY3QgdG8gdGhlIG5ldyBzaXplIGxlbmd0aC4KKy8qIFJlc2l6ZSBhbiBVbmljb2RlIG9iamVjdC4gVGhlIGxlbmd0aCBpcyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMsIGV4Y2VwdAorICAgaWYgdGhlIGtpbmQgb2YgdGhlIHN0cmluZyBpcyBQeVVuaWNvZGVfV0NIQVJfS0lORDogaW4gdGhpcyBjYXNlLCB0aGUgbGVuZ3RoCisgICBpcyB0aGUgbnVtYmVyIG9mIFB5X1VOSUNPREUgY2hhcmFjdGVycy4KIAogICAgKnVuaWNvZGUgaXMgbW9kaWZpZWQgdG8gcG9pbnQgdG8gdGhlIG5ldyAocmVzaXplZCkgb2JqZWN0IGFuZCAwCiAgICByZXR1cm5lZCBvbiBzdWNjZXNzLgogCi0gICBUaGlzIEFQSSBtYXkgb25seSBiZSBjYWxsZWQgYnkgdGhlIGZ1bmN0aW9uIHdoaWNoIGFsc28gY2FsbGVkIHRoZQotICAgVW5pY29kZSBjb25zdHJ1Y3Rvci4gVGhlIHJlZmNvdW50IG9uIHRoZSBvYmplY3QgbXVzdCBiZSAxLiBPdGhlcndpc2UsCi0gICBhbiBlcnJvciBpcyByZXR1cm5lZC4KKyAgIFRyeSB0byByZXNpemUgdGhlIHN0cmluZyBpbiBwbGFjZSAod2hpY2ggaXMgdXN1YWxseSBmYXN0ZXIgdGhhbiBhbGxvY2F0aW5nCisgICBhIG5ldyBzdHJpbmcgYW5kIGNvcHkgY2hhcmFjdGVycyksIG9yIGNyZWF0ZSBhIG5ldyBzdHJpbmcuCiAKICAgIEVycm9yIGhhbmRsaW5nIGlzIGltcGxlbWVudGVkIGFzIGZvbGxvd3M6IGFuIGV4Y2VwdGlvbiBpcyBzZXQsIC0xCiAgICBpcyByZXR1cm5lZCBhbmQgKnVuaWNvZGUgbGVmdCB1bnRvdWNoZWQuCiAKLSovCisgICBXQVJOSU5HOiBUaGUgZnVuY3Rpb24gZG9lc24ndCBjaGVjayBzdHJpbmcgY29udGVudCwgdGhlIHJlc3VsdCBtYXkgbm90IGJlIGEKKyAgICAgICAgICAgIHN0cmluZyBpbiBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24uICovCiAKIFB5QVBJX0ZVTkMoaW50KSBQeVVuaWNvZGVfUmVzaXplKAogICAgIFB5T2JqZWN0ICoqdW5pY29kZSwgICAgICAgICAvKiBQb2ludGVyIHRvIHRoZSBVbmljb2RlIG9iamVjdCAqLwpAQCAtNTQyLDExICs4OTEsNjcgQEAKICAgICApOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3QgKmJ1ZmZlcjsKKyAgICB2b2lkICpkYXRhOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICBQeV9VQ1M0IG1heGNoYXI7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIFB5X3NzaXplX3QgcG9zOworICAgIC8qIG1pbmltdW0gbGVuZ3RoIG9mIHRoZSBidWZmZXIgd2hlbiBvdmVyYWxsb2NhdGlvbiBpcyBlbmFibGVkLAorICAgICAgIHNlZSBfUHlVbmljb2RlV3JpdGVyX0luaXQoKSAqLworICAgIFB5X3NzaXplX3QgbWluX2xlbmd0aDsKKyAgICB1bnNpZ25lZCBjaGFyIG92ZXJhbGxvY2F0ZTsKKyAgICAvKiBJZiByZWFkb25seSBpcyAxLCBidWZmZXIgaXMgYSBzaGFyZWQgc3RyaW5nIChjYW5ub3QgYmUgbW9kaWZpZWQpCisgICAgICAgYW5kIHNpemUgaXMgc2V0IHRvIDAuICovCisgICAgdW5zaWduZWQgY2hhciByZWFkb25seTsKK30gX1B5VW5pY29kZVdyaXRlciA7CisKKy8qIEluaXRpYWxpemUgYSBVbmljb2RlIHdyaXRlci4KKworICAgSWYgbWluX2xlbmd0aCBpcyBncmVhdGVyIHRoYW4gemVybywgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCkKKyAgIG92ZXJhbGxvY2F0ZXMgdGhlIGJ1ZmZlciBhbmQgbWluX2xlbmd0aCBpcyB0aGUgbWluaW11bSBsZW5ndGggaW4gY2hhcmFjdGVycworICAgb2YgdGhlIGJ1ZmZlci4gKi8KK1B5QVBJX0ZVTkModm9pZCkKK19QeVVuaWNvZGVXcml0ZXJfSW5pdChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5X3NzaXplX3QgbWluX2xlbmd0aCk7CisKKy8qIFByZXBhcmUgdGhlIGJ1ZmZlciB0byB3cml0ZSAnbGVuZ3RoJyBjaGFyYWN0ZXJzCisgICB3aXRoIHRoZSBzcGVjaWZpZWQgbWF4aW11bSBjaGFyYWN0ZXIuCisKKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworI2RlZmluZSBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoV1JJVEVSLCBMRU5HVEgsIE1BWENIQVIpICAgICAgICAgICAgIFwKKyAgICAoKChNQVhDSEFSKSA8PSAoV1JJVEVSKS0+bWF4Y2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAmJiAoTEVOR1RIKSA8PSAoV1JJVEVSKS0+c2l6ZSAtIChXUklURVIpLT5wb3MpICAgICAgICAgICAgICAgICAgXAorICAgICA/IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgOiAoKChMRU5HVEgpID09IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgID8gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICA6IF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUludGVybmFsKChXUklURVIpLCAoTEVOR1RIKSwgKE1BWENIQVIpKSkpCisKKy8qIERvbid0IGNhbGwgdGhpcyBmdW5jdGlvbiBkaXJlY3RseSwgdXNlIHRoZSBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoKSBtYWNybworICAgaW5zdGVhZC4gKi8KK1B5QVBJX0ZVTkMoaW50KQorX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlSW50ZXJuYWwoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgbWF4Y2hhcik7CisKK1B5QVBJX0ZVTkMoaW50KQorX1B5VW5pY29kZVdyaXRlcl9Xcml0ZVN0cihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5T2JqZWN0ICpzdHIpOworCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopCitfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpOworCitQeUFQSV9GVU5DKHZvaWQpCitfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKTsKKyNlbmRpZgorCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBGb3JtYXQgdGhlIG9iamVjdCBiYXNlZCBvbiB0aGUgZm9ybWF0X3NwZWMsIGFzIGRlZmluZWQgaW4gUEVQIDMxMDEKICAgIChBZHZhbmNlZCBTdHJpbmcgRm9ybWF0dGluZykuICovCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVVuaWNvZGVfRm9ybWF0QWR2YW5jZWQoUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpmb3JtYXRfc3BlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbik7CitQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZFdyaXRlcigKKyAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGVuZCk7CiAjZW5kaWYKIAogUHlBUElfRlVOQyh2b2lkKSBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZShQeU9iamVjdCAqKik7CkBAIC01NTksNyArOTY0LDggQEAKICNlbmRpZgogCiAvKiBVc2Ugb25seSBpZiB5b3Uga25vdyBpdCdzIGEgc3RyaW5nICovCi0jZGVmaW5lIFB5VW5pY29kZV9DSEVDS19JTlRFUk5FRChvcCkgKCgoUHlVbmljb2RlT2JqZWN0ICopKG9wKSktPnN0YXRlKQorI2RlZmluZSBQeVVuaWNvZGVfQ0hFQ0tfSU5URVJORUQob3ApIFwKKyAgICAoKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPnN0YXRlLmludGVybmVkKQogCiAvKiAtLS0gd2NoYXJfdCBzdXBwb3J0IGZvciBwbGF0Zm9ybXMgd2hpY2ggc3VwcG9ydCBpdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNjA2LDE0ICsxMDEyLDE3IEBACiAgICAgUHlfc3NpemVfdCAqc2l6ZSAgICAgICAgICAgIC8qIG51bWJlciBvZiBjaGFyYWN0ZXJzIG9mIHRoZSByZXN1bHQgKi8KICAgICApOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKHZvaWQqKSBfUHlVbmljb2RlX0FzS2luZChQeU9iamVjdCAqcywgdW5zaWduZWQgaW50IGtpbmQpOworI2VuZGlmCisKICNlbmRpZgogCiAvKiAtLS0gVW5pY29kZSBvcmRpbmFscyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogLyogQ3JlYXRlIGEgVW5pY29kZSBPYmplY3QgZnJvbSB0aGUgZ2l2ZW4gVW5pY29kZSBjb2RlIHBvaW50IG9yZGluYWwuCiAKLSAgIFRoZSBvcmRpbmFsIG11c3QgYmUgaW4gcmFuZ2UoMHgxMDAwMCkgb24gbmFycm93IFB5dGhvbiBidWlsZHMKLSAgIChVQ1MyKSwgYW5kIHJhbmdlKDB4MTEwMDAwKSBvbiB3aWRlIGJ1aWxkcyAoVUNTNCkuIEEgVmFsdWVFcnJvciBpcworICAgVGhlIG9yZGluYWwgbXVzdCBiZSBpbiByYW5nZSgweDExMDAwMCkuIEEgVmFsdWVFcnJvciBpcwogICAgcmFpc2VkIGluIGNhc2UgaXQgaXMgbm90LgogCiAqLwpAQCAtNjUxLDUwICsxMDYwLDQyIEBACiAKIC8qIC0tLSBNYW5hZ2UgdGhlIGRlZmF1bHQgZW5jb2RpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi0vKiBSZXR1cm4gYSBQeXRob24gc3RyaW5nIGhvbGRpbmcgdGhlIGRlZmF1bHQgZW5jb2RlZCB2YWx1ZSBvZiB0aGUKLSAgIFVuaWNvZGUgb2JqZWN0LgotCi0gICBTYW1lIGFzIFB5VW5pY29kZV9Bc1VURjhTdHJpbmcoKSBleGNlcHQKLSAgIHRoZSByZXN1bHRpbmcgc3RyaW5nIGlzIGNhY2hlZCBpbiB0aGUgVW5pY29kZSBvYmplY3QgZm9yIHN1YnNlcXVlbnQKLSAgIHVzYWdlIGJ5IHRoaXMgZnVuY3Rpb24uIFRoZSBjYWNoZWQgdmVyc2lvbiBpcyBuZWVkZWQgdG8gaW1wbGVtZW50Ci0gICB0aGUgY2hhcmFjdGVyIGJ1ZmZlciBpbnRlcmZhY2UgYW5kIHdpbGwgbGl2ZSAoYXQgbGVhc3QpIGFzIGxvbmcgYXMKLSAgIHRoZSBVbmljb2RlIG9iamVjdCBpdHNlbGYuCi0KLSAgIFRoZSByZWZjb3VudCBvZiB0aGUgc3RyaW5nIGlzICpub3QqIGluY3JlbWVudGVkLgotCi0gICAqKiogRXhwb3J0ZWQgZm9yIGludGVybmFsIHVzZSBieSB0aGUgaW50ZXJwcmV0ZXIgb25seSAhISEgKioqCi0KLSovCi0KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nKAotICAgIFB5T2JqZWN0ICp1bmljb2RlLAotICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7Ci0jZW5kaWYKLQogLyogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGRlZmF1bHQgZW5jb2RpbmcgKFVURi04KSBvZiB0aGUKICAgIFVuaWNvZGUgb2JqZWN0IHVuaWNvZGUgYW5kIHRoZSBzaXplIG9mIHRoZSBlbmNvZGVkIHJlcHJlc2VudGF0aW9uCiAgICBpbiBieXRlcyBzdG9yZWQgaW4gKnNpemUuCiAKICAgIEluIGNhc2Ugb2YgYW4gZXJyb3IsIG5vICpzaXplIGlzIHNldC4KIAorICAgVGhpcyBmdW5jdGlvbiBjYWNoZXMgdGhlIFVURi04IGVuY29kZWQgc3RyaW5nIGluIHRoZSB1bmljb2Rlb2JqZWN0CisgICBhbmQgc3Vic2VxdWVudCBjYWxscyB3aWxsIHJldHVybiB0aGUgc2FtZSBzdHJpbmcuICBUaGUgbWVtb3J5IGlzIHJlbGVhc2VkCisgICB3aGVuIHRoZSB1bmljb2Rlb2JqZWN0IGlzIGRlYWxsb2NhdGVkLgorCisgICBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZSBpcyBhICNkZWZpbmUgZm9yIFB5VW5pY29kZV9Bc1VURjhBbmRTaXplIHRvCisgICBzdXBwb3J0IHRoZSBwcmV2aW91cyBpbnRlcm5hbCBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIGJlaGF2aW91ci4KKwogICAgKioqIFRoaXMgQVBJIGlzIGZvciBpbnRlcnByZXRlciBJTlRFUk5BTCBVU0UgT05MWSBhbmQgd2lsbCBsaWtlbHkKICAgICoqKiBiZSByZW1vdmVkIG9yIGNoYW5nZWQgaW4gdGhlIGZ1dHVyZS4KIAogICAgKioqIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgVW5pY29kZSBvYmplY3QgYXMgVVRGLTggYnl0ZXMgc3RyaW5nLAogICAgKioqIHBsZWFzZSB1c2UgUHlVbmljb2RlX0FzVVRGOFN0cmluZygpIGluc3RlYWQuCi0KICovCiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoY2hhciAqKSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZSgKK1B5QVBJX0ZVTkMoY2hhciAqKSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZSgKICAgICBQeU9iamVjdCAqdW5pY29kZSwKICAgICBQeV9zc2l6ZV90ICpzaXplKTsKKyNkZWZpbmUgX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUgUHlVbmljb2RlX0FzVVRGOEFuZFNpemUKICNlbmRpZgogCiAvKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZGVmYXVsdCBlbmNvZGluZyAoVVRGLTgpIG9mIHRoZQogICAgVW5pY29kZSBvYmplY3QgdW5pY29kZS4KIAorICAgTGlrZSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZSgpLCB0aGlzIGFsc28gY2FjaGVzIHRoZSBVVEYtOCByZXByZXNlbnRhdGlvbgorICAgaW4gdGhlIHVuaWNvZGVvYmplY3QuCisKKyAgIF9QeVVuaWNvZGVfQXNTdHJpbmcgaXMgYSAjZGVmaW5lIGZvciBQeVVuaWNvZGVfQXNVVEY4IHRvCisgICBzdXBwb3J0IHRoZSBwcmV2aW91cyBpbnRlcm5hbCBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIGJlaGF2aW91ci4KKwogICAgVXNlIG9mIHRoaXMgQVBJIGlzIERFUFJFQ0FURUQgc2luY2Ugbm8gc2l6ZSBpbmZvcm1hdGlvbiBjYW4gYmUKICAgIGV4dHJhY3RlZCBmcm9tIHRoZSByZXR1cm5lZCBkYXRhLgogCkBAIC03MDcsNyArMTEwOCw4IEBACiAqLwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKGNoYXIgKikgX1B5VW5pY29kZV9Bc1N0cmluZyhQeU9iamVjdCAqdW5pY29kZSk7CitQeUFQSV9GVU5DKGNoYXIgKikgUHlVbmljb2RlX0FzVVRGOChQeU9iamVjdCAqdW5pY29kZSk7CisjZGVmaW5lIF9QeVVuaWNvZGVfQXNTdHJpbmcgUHlVbmljb2RlX0FzVVRGOAogI2VuZGlmCiAKIC8qIFJldHVybnMgInV0Zi04Ii4gICovCkBAIC04MTIsNiArMTIxNCwxMiBAQAogICAgIGludCBiYXNlNjRXaGl0ZVNwYWNlLCAgICAgICAvKiBFbmNvZGUgd2hpdGVzcGFjZSAoc3AsIGh0LCBubCwgY3IpIGluIGJhc2U2NCAqLwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLwogICAgICk7CitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9FbmNvZGVVVEY3KAorICAgIFB5T2JqZWN0ICp1bmljb2RlLCAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLworICAgIGludCBiYXNlNjRTZXRPLCAgICAgICAgICAgICAvKiBFbmNvZGUgUkZDMjE1MiBTZXQgTyBjaGFyYWN0ZXJzIGluIGJhc2U2NCAqLworICAgIGludCBiYXNlNjRXaGl0ZVNwYWNlLCAgICAgICAvKiBFbmNvZGUgd2hpdGVzcGFjZSAoc3AsIGh0LCBubCwgY3IpIGluIGJhc2U2NCAqLworICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLworICAgICk7CiAjZW5kaWYKIAogLyogLS0tIFVURi04IENvZGVjcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC04MzQsNiArMTI0MiwxMCBAQAogICAgICk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0FzVVRGOFN0cmluZygKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBjb25zdCBjaGFyICplcnJvcnMpOworCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0VuY29kZVVURjgoCiAgICAgY29uc3QgUHlfVU5JQ09ERSAqZGF0YSwgICAgIC8qIFVuaWNvZGUgY2hhciBidWZmZXIgKi8KICAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAgICAgLyogbnVtYmVyIG9mIFB5X1VOSUNPREUgY2hhcnMgdG8gZW5jb2RlICovCkBAIC05MTUsNiArMTMyNywxMSBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycywgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLwogICAgIGludCBieXRlb3JkZXIgICAgICAgICAgICAgICAvKiBieXRlb3JkZXIgdG8gdXNlIDA9Qk9NK25hdGl2ZTstMT1MRSwxPUJFICovCiAgICAgKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0VuY29kZVVURjMyKAorICAgIFB5T2JqZWN0ICpvYmplY3QsICAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLworICAgIGNvbnN0IGNoYXIgKmVycm9ycywgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLworICAgIGludCBieXRlb3JkZXIgICAgICAgICAgICAgICAvKiBieXRlb3JkZXIgdG8gdXNlIDA9Qk9NK25hdGl2ZTstMT1MRSwxPUJFICovCisgICAgKTsKICNlbmRpZgogCiAvKiAtLS0gVVRGLTE2IENvZGVjcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTk5NSw2ICsxNDEyLDExIEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzLCAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCiAgICAgaW50IGJ5dGVvcmRlciAgICAgICAgICAgICAgIC8qIGJ5dGVvcmRlciB0byB1c2UgMD1CT00rbmF0aXZlOy0xPUxFLDE9QkUgKi8KICAgICApOworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoCisgICAgUHlPYmplY3QqIHVuaWNvZGUsICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCisgICAgY29uc3QgY2hhciAqZXJyb3JzLCAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCisgICAgaW50IGJ5dGVvcmRlciAgICAgICAgICAgICAgIC8qIGJ5dGVvcmRlciB0byB1c2UgMD1CT00rbmF0aXZlOy0xPUxFLDE9QkUgKi8KKyAgICApOwogI2VuZGlmCiAKIC8qIC0tLSBVbmljb2RlLUVzY2FwZSBDb2RlY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtMTA2NCw2ICsxNDg2LDEwIEBACiAgICAgKTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoCisgICAgUHlPYmplY3QqIHVuaWNvZGUsCisgICAgY29uc3QgY2hhciogZXJyb3JzKTsKKwogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9FbmNvZGVMYXRpbjEoCiAgICAgY29uc3QgUHlfVU5JQ09ERSAqZGF0YSwgICAgIC8qIFVuaWNvZGUgY2hhciBidWZmZXIgKi8KICAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAgICAgLyogTnVtYmVyIG9mIFB5X1VOSUNPREUgY2hhcnMgdG8gZW5jb2RlICovCkBAIC0xMDg4LDYgKzE1MTQsMTAgQEAKICAgICApOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKAorICAgIFB5T2JqZWN0KiB1bmljb2RlLAorICAgIGNvbnN0IGNoYXIqIGVycm9ycyk7CisKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRW5jb2RlQVNDSUkoCiAgICAgY29uc3QgUHlfVU5JQ09ERSAqZGF0YSwgICAgIC8qIFVuaWNvZGUgY2hhciBidWZmZXIgKi8KICAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAgICAgLyogTnVtYmVyIG9mIFB5X1VOSUNPREUgY2hhcnMgdG8gZW5jb2RlICovCkBAIC0xMTM5LDYgKzE1NjksMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuaWNvZGUgb3JkaW5hbCAtPiBjaGFyIG9yZGluYWwpICovCiAgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCiAgICAgKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCisgICAgUHlPYmplY3QgKm1hcHBpbmcsICAgICAgICAgIC8qIGNoYXJhY3RlciBtYXBwaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bmljb2RlIG9yZGluYWwgLT4gY2hhciBvcmRpbmFsKSAqLworICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLworICAgICk7CiAjZW5kaWYKIAogLyogVHJhbnNsYXRlIGEgUHlfVU5JQ09ERSBidWZmZXIgb2YgdGhlIGdpdmVuIGxlbmd0aCBieSBhcHBseWluZyBhCkBAIC0xMTYzLDcgKzE1OTksNyBAQAogICAgICk7CiAjZW5kaWYKIAotI2lmZGVmIE1TX1dJTjMyCisjaWZkZWYgSEFWRV9NQkNTCiAKIC8qIC0tLSBNQkNTIGNvZGVjcyBmb3IgV2luZG93cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC0xMTgwLDYgKzE2MTYsMTQgQEAKICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCAgICAgICAgLyogYnl0ZXMgY29uc3VtZWQgKi8KICAgICApOwogCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0RlY29kZUNvZGVQYWdlU3RhdGVmdWwoCisgICAgaW50IGNvZGVfcGFnZSwgICAgICAgICAgICAgIC8qIGNvZGUgcGFnZSBudW1iZXIgKi8KKyAgICBjb25zdCBjaGFyICpzdHJpbmcsICAgICAgICAgLyogZW5jb2RlZCBzdHJpbmcgKi8KKyAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAgICAgLyogc2l6ZSBvZiBzdHJpbmcgKi8KKyAgICBjb25zdCBjaGFyICplcnJvcnMsICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KKyAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCAgICAgICAgLyogYnl0ZXMgY29uc3VtZWQgKi8KKyAgICApOworCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0FzTUJDU1N0cmluZygKICAgICBQeU9iamVjdCAqdW5pY29kZSAgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KICAgICApOwpAQCAtMTE4NywxMiArMTYzMSwxOCBAQAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9FbmNvZGVNQkNTKAogICAgIGNvbnN0IFB5X1VOSUNPREUgKmRhdGEsICAgICAvKiBVbmljb2RlIGNoYXIgYnVmZmVyICovCi0gICAgUHlfc3NpemVfdCBsZW5ndGgsICAgICAgICAgIC8qIE51bWJlciBvZiBQeV9VTklDT0RFIGNoYXJzIHRvIGVuY29kZSAqLworICAgIFB5X3NzaXplX3QgbGVuZ3RoLCAgICAgICAgICAvKiBudW1iZXIgb2YgUHlfVU5JQ09ERSBjaGFycyB0byBlbmNvZGUgKi8KICAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KICAgICApOwogI2VuZGlmCiAKLSNlbmRpZiAvKiBNU19XSU4zMiAqLworUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZSgKKyAgICBpbnQgY29kZV9wYWdlLCAgICAgICAgICAgICAgLyogY29kZSBwYWdlIG51bWJlciAqLworICAgIFB5T2JqZWN0ICp1bmljb2RlLCAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLworICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLworICAgICk7CisKKyNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KIAogLyogLS0tIERlY2ltYWwgRW5jb2RlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTEyNDAsNiArMTY5MCw0OSBAQAogICAgICk7CiAjZW5kaWYKIAorLyogU2ltaWxhciB0byBQeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbFRvQVNDSUkoKSwgYnV0IHRha2VzIGEgUHlPYmplY3QKKyAgIGFzIGFyZ3VtZW50IGluc3RlYWQgb2YgYSByYXcgYnVmZmVyIGFuZCBsZW5ndGguICBUaGlzIGZ1bmN0aW9uIGFkZGl0aW9uYWxseQorICAgdHJhbnNmb3JtcyBzcGFjZXMgdG8gQVNDSUkgYmVjYXVzZSB0aGlzIGlzIHdoYXQgdGhlIGNhbGxlcnMgaW4gbG9uZ29iamVjdCwKKyAgIGZsb2F0b2JqZWN0LCBhbmQgY29tcGxleG9iamVjdCBkaWQgYW55d2F5cy4gKi8KKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbEFuZFNwYWNlVG9BU0NJSSgKKyAgICBQeU9iamVjdCAqdW5pY29kZSAgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KKyAgICApOworI2VuZGlmCisKKy8qIC0tLSBMb2NhbGUgZW5jb2RpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qIERlY29kZSBhIHN0cmluZyBmcm9tIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZy4gVGhlIGRlY29kZXIgaXMgc3RyaWN0IGlmCisgICAqc3Vycm9nYXRlZXNjYXBlKiBpcyBlcXVhbCB0byB6ZXJvLCBvdGhlcndpc2UgaXQgdXNlcyB0aGUgJ3N1cnJvZ2F0ZWVzY2FwZScKKyAgIGVycm9yIGhhbmRsZXIgKFBFUCAzODMpIHRvIGVzY2FwZSB1bmRlY29kYWJsZSBieXRlcy4gSWYgYSBieXRlIHNlcXVlbmNlIGNhbgorICAgYmUgZGVjb2RlZCBhcyBhIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIgYW5kICpzdXJyb2dhdGVlc2NhcGUqIGlzIG5vdCBlcXVhbCB0bworICAgemVybywgdGhlIGJ5dGUgc2VxdWVuY2UgaXMgZXNjYXBlZCB1c2luZyB0aGUgJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IgaGFuZGxlcgorICAgaW5zdGVhZCBvZiBiZWluZyBkZWNvZGVkLiAqc3RyKiBtdXN0IGVuZCB3aXRoIGEgbnVsbCBjaGFyYWN0ZXIgYnV0IGNhbm5vdAorICAgY29udGFpbiBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMuICovCisKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZSgKKyAgICBjb25zdCBjaGFyICpzdHIsCisgICAgUHlfc3NpemVfdCBsZW4sCisgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworLyogU2ltaWxhciB0byBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZSgpLCBidXQgY29tcHV0ZSB0aGUgc3RyaW5nCisgICBsZW5ndGggdXNpbmcgc3RybGVuKCkuICovCisKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKAorICAgIGNvbnN0IGNoYXIgKnN0ciwKKyAgICBjb25zdCBjaGFyICplcnJvcnMpOworCisvKiBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB0byB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuIFRoZSBlbmNvZGVyIGlzCisgICBzdHJpY3QgaXMgKnN1cnJvZ2F0ZWVzY2FwZSogaXMgZXF1YWwgdG8gemVybywgb3RoZXJ3aXNlIHRoZQorICAgInN1cnJvZ2F0ZWVzY2FwZSIgZXJyb3IgaGFuZGxlciBpcyB1c2VkLiBSZXR1cm4gYSBieXRlcyBvYmplY3QuIFRoZSBzdHJpbmcKKyAgIGNhbm5vdCBjb250YWluIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycy4uICovCisKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgIGNvbnN0IGNoYXIgKmVycm9ycworICAgICk7CisKIC8qIC0tLSBGaWxlIHN5c3RlbSBlbmNvZGluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qIFBhcnNlVHVwbGUgY29udmVydGVyOiBlbmNvZGUgc3RyIG9iamVjdHMgdG8gYnl0ZXMgdXNpbmcKQEAgLTEyOTIsNyArMTc4NSw3IEBACiAKICAgIFRoZXNlIGFyZSBjYXBhYmxlIG9mIGhhbmRsaW5nIFVuaWNvZGUgb2JqZWN0cyBhbmQgc3RyaW5ncyBvbiBpbnB1dAogICAgKHdlIHJlZmVyIHRvIHRoZW0gYXMgc3RyaW5ncyBpbiB0aGUgZGVzY3JpcHRpb25zKSBhbmQgcmV0dXJuCi0gICBVbmljb2RlIG9iamVjdHMgb3IgaW50ZWdlcnMgYXMgYXBwb3JwcmlhdGUuICovCisgICBVbmljb2RlIG9iamVjdHMgb3IgaW50ZWdlcnMgYXMgYXBwcm9wcmlhdGUuICovCiAKIC8qIENvbmNhdCB0d28gc3RyaW5ncyBnaXZpbmcgYSBuZXcgVW5pY29kZSBzdHJpbmcuICovCiAKQEAgLTE0MjcsNiArMTkyMCwxNSBAQAogICAgIGludCBkaXJlY3Rpb24gICAgICAgICAgICAgICAvKiBGaW5kIGRpcmVjdGlvbjogKzEgZm9yd2FyZCwgLTEgYmFja3dhcmQgKi8KICAgICApOwogCisvKiBMaWtlIFB5VW5pY29kZV9GaW5kLCBidXQgc2VhcmNoIGZvciBzaW5nbGUgY2hhcmFjdGVyIG9ubHkuICovCitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIFB5VW5pY29kZV9GaW5kQ2hhcigKKyAgICBQeU9iamVjdCAqc3RyLAorICAgIFB5X1VDUzQgY2gsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGVuZCwKKyAgICBpbnQgZGlyZWN0aW9uCisgICAgKTsKKwogLyogQ291bnQgdGhlIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiBzdWJzdHIgaW4gc3RyW3N0YXJ0OmVuZF0uICovCiAKIFB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlVbmljb2RlX0NvdW50KApAQCAtMTQ2Myw3ICsxOTY1LDcgQEAKIC8qIFJpY2ggY29tcGFyZSB0d28gc3RyaW5ncyBhbmQgcmV0dXJuIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogCiAgICAtIE5VTEwgaW4gY2FzZSBhbiBleGNlcHRpb24gd2FzIHJhaXNlZAotICAgLSBQeV9UcnVlIG9yIFB5X0ZhbHNlIGZvciBzdWNjZXNzZnVseSBjb21wYXJpc29ucworICAgLSBQeV9UcnVlIG9yIFB5X0ZhbHNlIGZvciBzdWNjZXNzZnVsbHkgY29tcGFyaXNvbnMKICAgIC0gUHlfTm90SW1wbGVtZW50ZWQgaW4gY2FzZSB0aGUgdHlwZSBjb21iaW5hdGlvbiBpcyB1bmtub3duCiAKICAgIE5vdGUgdGhhdCBQeV9FUSBhbmQgUHlfTkUgY29tcGFyaXNvbnMgY2FuIGNhdXNlIGEgVW5pY29kZVdhcm5pbmcgaW4KQEAgLTE1MTQsMzUgKzIwMTYsMjYgQEAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIEV4dGVybmFsbHkgdmlzaWJsZSBmb3Igc3RyLnN0cmlwKHVuaWNvZGUpICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVVuaWNvZGVfWFN0cmlwKAotICAgIFB5VW5pY29kZU9iamVjdCAqc2VsZiwKKyAgICBQeU9iamVjdCAqc2VsZiwKICAgICBpbnQgc3RyaXB0eXBlLAogICAgIFB5T2JqZWN0ICpzZXBvYmoKICAgICApOwogI2VuZGlmCiAKLS8qIFVzaW5nIHRoZSBjdXJyZW50IGxvY2FsZSwgaW5zZXJ0IHRoZSB0aG91c2FuZHMgZ3JvdXBpbmcKLSAgIGludG8gdGhlIHN0cmluZyBwb2ludGVkIHRvIGJ5IGJ1ZmZlci4gIEZvciB0aGUgYXJndW1lbnQgZGVzY3JpcHRpb25zLAotICAgc2VlIE9iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaCAqLwotCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmdMb2NhbGUoUHlfVU5JQ09ERSAqYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuX2J1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKmRpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgbl9kaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1pbl93aWR0aCk7Ci0jZW5kaWYKLQogLyogVXNpbmcgZXhwbGljaXQgcGFzc2VkLWluIHZhbHVlcywgaW5zZXJ0IHRoZSB0aG91c2FuZHMgZ3JvdXBpbmcKICAgIGludG8gdGhlIHN0cmluZyBwb2ludGVkIHRvIGJ5IGJ1ZmZlci4gIEZvciB0aGUgYXJndW1lbnQgZGVzY3JpcHRpb25zLAogICAgc2VlIE9iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaCAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlVbmljb2RlX0luc2VydFRob3VzYW5kc0dyb3VwaW5nKFB5X1VOSUNPREUgKmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgbl9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpkaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtaW5fd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpncm91cGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRob3VzYW5kc19zZXApOworUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlVbmljb2RlX0luc2VydFRob3VzYW5kc0dyb3VwaW5nKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgIFB5X3NzaXplX3QgaW5kZXgsCisgICAgUHlfc3NpemVfdCBuX2J1ZmZlciwKKyAgICB2b2lkICpkaWdpdHMsCisgICAgUHlfc3NpemVfdCBuX2RpZ2l0cywKKyAgICBQeV9zc2l6ZV90IG1pbl93aWR0aCwKKyAgICBjb25zdCBjaGFyICpncm91cGluZywKKyAgICBQeU9iamVjdCAqdGhvdXNhbmRzX3NlcCwKKyAgICBQeV9VQ1M0ICptYXhjaGFyKTsKICNlbmRpZgogLyogPT09IENoYXJhY3RlcnMgVHlwZSBBUElzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKQEAgLTE1OTgsNiArMjA5MSwzNCBAQAogICAgIFB5X1VDUzQgY2ggICAgICAgLyogVW5pY29kZSBjaGFyYWN0ZXIgKi8KICAgICApOwogCitQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9Ub0xvd2VyRnVsbCgKKyAgICBQeV9VQ1M0IGNoLCAgICAgICAvKiBVbmljb2RlIGNoYXJhY3RlciAqLworICAgIFB5X1VDUzQgKnJlcworICAgICk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX1RvVGl0bGVGdWxsKAorICAgIFB5X1VDUzQgY2gsICAgICAgIC8qIFVuaWNvZGUgY2hhcmFjdGVyICovCisgICAgUHlfVUNTNCAqcmVzCisgICAgKTsKKworUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfVG9VcHBlckZ1bGwoCisgICAgUHlfVUNTNCBjaCwgICAgICAgLyogVW5pY29kZSBjaGFyYWN0ZXIgKi8KKyAgICBQeV9VQ1M0ICpyZXMKKyAgICApOworCitQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9Ub0ZvbGRlZEZ1bGwoCisgICAgUHlfVUNTNCBjaCwgICAgICAgLyogVW5pY29kZSBjaGFyYWN0ZXIgKi8KKyAgICBQeV9VQ1M0ICpyZXMKKyAgICApOworCitQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9Jc0Nhc2VJZ25vcmFibGUoCisgICAgUHlfVUNTNCBjaCAgICAgICAgIC8qIFVuaWNvZGUgY2hhcmFjdGVyICovCisgICAgKTsKKworUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfSXNDYXNlZCgKKyAgICBQeV9VQ1M0IGNoICAgICAgICAgLyogVW5pY29kZSBjaGFyYWN0ZXIgKi8KKyAgICApOworCiBQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9Ub0RlY2ltYWxEaWdpdCgKICAgICBQeV9VQ1M0IGNoICAgICAgIC8qIFVuaWNvZGUgY2hhcmFjdGVyICovCiAgICAgKTsKQEAgLTE2NzYsNiArMjE5NywxNyBAQAogICAgICk7CiAjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAorI2lmIGRlZmluZWQoUHlfREVCVUcpICYmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKQorUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSgKKyAgICBQeU9iamVjdCAqb3AsCisgICAgaW50IGNoZWNrX2NvbnRlbnQpOworI2VuZGlmCisKKy8qIFJldHVybiBhbiBpbnRlcm5lZCBVbmljb2RlIG9iamVjdCBmb3IgYW4gSWRlbnRpZmllcjsgbWF5IGZhaWwgaWYgdGhlcmUgaXMgbm8gbWVtb3J5LiovCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9Gcm9tSWQoX1B5X0lkZW50aWZpZXIqKTsKKy8qIENsZWFyIGFsbCBzdGF0aWMgc3RyaW5ncy4gKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5VW5pY29kZV9DbGVhclN0YXRpY1N0cmluZ3Modm9pZCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9MSUNFTlNFIGIvTElDRU5TRQppbmRleCA0MzM4OGU3Li5kZDcwNDRlIDEwMDY0NAotLS0gYS9MSUNFTlNFCisrKyBiL0xJQ0VOU0UKQEAgLTc0LDYgKzc0LDcgQEAKICAgICAzLjIuMSAgICAgICAgICAgMy4yICAgICAgICAgMjAxMSAgICAgICAgUFNGICAgICAgICAgeWVzCiAgICAgMy4yLjIgICAgICAgICAgIDMuMi4xICAgICAgIDIwMTEgICAgICAgIFBTRiAgICAgICAgIHllcwogICAgIDMuMi4zICAgICAgICAgICAzLjIuMiAgICAgICAyMDEyICAgICAgICBQU0YgICAgICAgICB5ZXMKKyAgICAzLjMuMCAgICAgICAgICAgMy4yICAgICAgICAgMjAxMiAgICAgICAgUFNGICAgICAgICAgeWVzCiAKIEZvb3Rub3RlczoKIApAQCAtMTA5LDggKzExMCw4IEBACiBkaXN0cmlidXRlLCBhbmQgb3RoZXJ3aXNlIHVzZSBQeXRob24gYWxvbmUgb3IgaW4gYW55IGRlcml2YXRpdmUgdmVyc2lvbiwKIHByb3ZpZGVkLCBob3dldmVyLCB0aGF0IFBTRidzIExpY2Vuc2UgQWdyZWVtZW50IGFuZCBQU0YncyBub3RpY2Ugb2YgY29weXJpZ2h0LAogaS5lLiwgIkNvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwKLTIwMTEsIDIwMTIgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb247IEFsbCBSaWdodHMgUmVzZXJ2ZWQiIGFyZSByZXRhaW5lZCBpbiBQeXRob24KLWFsb25lIG9yIGluIGFueSBkZXJpdmF0aXZlIHZlcnNpb24gcHJlcGFyZWQgYnkgTGljZW5zZWUuCisyMDExLCAyMDEyLCAyMDEzIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBBbGwgUmlnaHRzIFJlc2VydmVkIiBhcmUgcmV0YWluZWQKK2luIFB5dGhvbiBhbG9uZSBvciBpbiBhbnkgZGVyaXZhdGl2ZSB2ZXJzaW9uIHByZXBhcmVkIGJ5IExpY2Vuc2VlLgogCiAzLiBJbiB0aGUgZXZlbnQgTGljZW5zZWUgcHJlcGFyZXMgYSBkZXJpdmF0aXZlIHdvcmsgdGhhdCBpcyBiYXNlZCBvbgogb3IgaW5jb3Jwb3JhdGVzIFB5dGhvbiBvciBhbnkgcGFydCB0aGVyZW9mLCBhbmQgd2FudHMgdG8gbWFrZQpkaWZmIC0tZ2l0IGEvTGliL19kdW1teV90aHJlYWQucHkgYi9MaWIvX2R1bW15X3RocmVhZC5weQppbmRleCBlZDUwNTIwLi4xM2IxZjI2IDEwMDY0NAotLS0gYS9MaWIvX2R1bW15X3RocmVhZC5weQorKysgYi9MaWIvX2R1bW15X3RocmVhZC5weQpAQCAtMjQsMTEgKzI0LDcgQEAKICMgaW1wb3J0cyBhcmUgZG9uZSB3aGVuIG5lZWRlZCBvbiBhIGZ1bmN0aW9uLWJ5LWZ1bmN0aW9uIGJhc2lzLiAgU2luY2UgdGhyZWFkcwogIyBhcmUgZGlzYWJsZWQsIHRoZSBpbXBvcnQgbG9jayBzaG91bGQgbm90IGJlIGFuIGlzc3VlIGFueXdheSAoPz8pLgogCi1jbGFzcyBlcnJvcihFeGNlcHRpb24pOgotICAgICIiIkR1bW15IGltcGxlbWVudGF0aW9uIG9mIF90aHJlYWQuZXJyb3IuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MpOgotICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCitlcnJvciA9IFJ1bnRpbWVFcnJvcgogCiBkZWYgc3RhcnRfbmV3X3RocmVhZChmdW5jdGlvbiwgYXJncywga3dhcmdzPXt9KToKICAgICAiIiJEdW1teSBpbXBsZW1lbnRhdGlvbiBvZiBfdGhyZWFkLnN0YXJ0X25ld190aHJlYWQoKS4KZGlmZiAtLWdpdCBhL0xpYi9fcHlpby5weSBiL0xpYi9fcHlpby5weQppbmRleCBkYzJiNDMzLi5hYWI2MGRiIDEwMDY0NAotLS0gYS9MaWIvX3B5aW8ucHkKKysrIGIvTGliL19weWlvLnB5CkBAIC01LDcgKzUsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgYWJjCiBpbXBvcnQgY29kZWNzCi1pbXBvcnQgd2FybmluZ3MKIGltcG9ydCBlcnJubwogIyBJbXBvcnQgX3RocmVhZCBpbnN0ZWFkIG9mIHRocmVhZGluZyB0byByZWR1Y2Ugc3RhcnR1cCBjb3N0CiB0cnk6CkBAIC0xNSw3ICsxNCwxMSBAQAogCiBpbXBvcnQgaW8KIGZyb20gaW8gaW1wb3J0IChfX2FsbF9fLCBTRUVLX1NFVCwgU0VFS19DVVIsIFNFRUtfRU5EKQotZnJvbSBlcnJubyBpbXBvcnQgRUlOVFIKKwordmFsaWRfc2Vla19mbGFncyA9IHswLCAxLCAyfSAgIyBIYXJkd2lyZWQgdmFsdWVzCitpZiBoYXNhdHRyKG9zLCAnU0VFS19IT0xFJykgOgorICAgIHZhbGlkX3NlZWtfZmxhZ3MuYWRkKG9zLlNFRUtfSE9MRSkKKyAgICB2YWxpZF9zZWVrX2ZsYWdzLmFkZChvcy5TRUVLX0RBVEEpCiAKICMgb3BlbigpIHVzZXMgc3RfYmxrc2l6ZSB3aGVuZXZlciB3ZSBjYW4KIERFRkFVTFRfQlVGRkVSX1NJWkUgPSA4ICogMTAyNCAgIyBieXRlcwpAQCAtMjQsMjAgKzI3LDEyIEBACiAjIGRlZmluZWQgaW4gaW8ucHkuIFdlIGRvbid0IHVzZSByZWFsIGluaGVyaXRhbmNlIHRob3VnaCwgYmVjYXVzZSB3ZSBkb24ndAogIyB3YW50IHRvIGluaGVyaXQgdGhlIEMgaW1wbGVtZW50YXRpb25zLgogCi0KLWNsYXNzIEJsb2NraW5nSU9FcnJvcihJT0Vycm9yKToKLQotICAgICIiIkV4Y2VwdGlvbiByYWlzZWQgd2hlbiBJL08gd291bGQgYmxvY2sgb24gYSBub24tYmxvY2tpbmcgSS9PIHN0cmVhbS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlcnJubywgc3RyZXJyb3IsIGNoYXJhY3RlcnNfd3JpdHRlbj0wKToKLSAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhlcnJubywgc3RyZXJyb3IpCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNoYXJhY3RlcnNfd3JpdHRlbiwgaW50KToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2hhcmFjdGVyc193cml0dGVuIG11c3QgYmUgYSBpbnRlZ2VyIikKLSAgICAgICAgc2VsZi5jaGFyYWN0ZXJzX3dyaXR0ZW4gPSBjaGFyYWN0ZXJzX3dyaXR0ZW4KKyMgUmViaW5kIGZvciBjb21wYXRpYmlsaXR5CitCbG9ja2luZ0lPRXJyb3IgPSBCbG9ja2luZ0lPRXJyb3IKIAogCiBkZWYgb3BlbihmaWxlLCBtb2RlPSJyIiwgYnVmZmVyaW5nPS0xLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwKLSAgICAgICAgIG5ld2xpbmU9Tm9uZSwgY2xvc2VmZD1UcnVlKToKKyAgICAgICAgIG5ld2xpbmU9Tm9uZSwgY2xvc2VmZD1UcnVlLCBvcGVuZXI9Tm9uZSk6CiAKICAgICByIiIiT3BlbiBmaWxlIGFuZCByZXR1cm4gYSBzdHJlYW0uICBSYWlzZSBJT0Vycm9yIHVwb24gZmFpbHVyZS4KIApAQCAtNDcsMjEgKzQyLDIyIEBACiAgICAgd3JhcHBlZC4gKElmIGEgZmlsZSBkZXNjcmlwdG9yIGlzIGdpdmVuLCBpdCBpcyBjbG9zZWQgd2hlbiB0aGUKICAgICByZXR1cm5lZCBJL08gb2JqZWN0IGlzIGNsb3NlZCwgdW5sZXNzIGNsb3NlZmQgaXMgc2V0IHRvIEZhbHNlLikKIAotICAgIG1vZGUgaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBtb2RlIGluIHdoaWNoIHRoZSBmaWxlCi0gICAgaXMgb3BlbmVkLiBJdCBkZWZhdWx0cyB0byAncicgd2hpY2ggbWVhbnMgb3BlbiBmb3IgcmVhZGluZyBpbiB0ZXh0Ci0gICAgbW9kZS4gIE90aGVyIGNvbW1vbiB2YWx1ZXMgYXJlICd3JyBmb3Igd3JpdGluZyAodHJ1bmNhdGluZyB0aGUgZmlsZSBpZgotICAgIGl0IGFscmVhZHkgZXhpc3RzKSwgYW5kICdhJyBmb3IgYXBwZW5kaW5nICh3aGljaCBvbiBzb21lIFVuaXggc3lzdGVtcywKLSAgICBtZWFucyB0aGF0IGFsbCB3cml0ZXMgYXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgcmVnYXJkbGVzcyBvZiB0aGUKLSAgICBjdXJyZW50IHNlZWsgcG9zaXRpb24pLiBJbiB0ZXh0IG1vZGUsIGlmIGVuY29kaW5nIGlzIG5vdCBzcGVjaWZpZWQgdGhlCi0gICAgZW5jb2RpbmcgdXNlZCBpcyBwbGF0Zm9ybSBkZXBlbmRlbnQuIChGb3IgcmVhZGluZyBhbmQgd3JpdGluZyByYXcKLSAgICBieXRlcyB1c2UgYmluYXJ5IG1vZGUgYW5kIGxlYXZlIGVuY29kaW5nIHVuc3BlY2lmaWVkLikgVGhlIGF2YWlsYWJsZQotICAgIG1vZGVzIGFyZToKKyAgICBtb2RlIGlzIGFuIG9wdGlvbmFsIHN0cmluZyB0aGF0IHNwZWNpZmllcyB0aGUgbW9kZSBpbiB3aGljaCB0aGUgZmlsZSBpcworICAgIG9wZW5lZC4gSXQgZGVmYXVsdHMgdG8gJ3InIHdoaWNoIG1lYW5zIG9wZW4gZm9yIHJlYWRpbmcgaW4gdGV4dCBtb2RlLiBPdGhlcgorICAgIGNvbW1vbiB2YWx1ZXMgYXJlICd3JyBmb3Igd3JpdGluZyAodHJ1bmNhdGluZyB0aGUgZmlsZSBpZiBpdCBhbHJlYWR5CisgICAgZXhpc3RzKSwgJ3gnIGZvciBleGNsdXNpdmUgY3JlYXRpb24gb2YgYSBuZXcgZmlsZSwgYW5kICdhJyBmb3IgYXBwZW5kaW5nCisgICAgKHdoaWNoIG9uIHNvbWUgVW5peCBzeXN0ZW1zLCBtZWFucyB0aGF0IGFsbCB3cml0ZXMgYXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlCisgICAgZmlsZSByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IHNlZWsgcG9zaXRpb24pLiBJbiB0ZXh0IG1vZGUsIGlmIGVuY29kaW5nIGlzCisgICAgbm90IHNwZWNpZmllZCB0aGUgZW5jb2RpbmcgdXNlZCBpcyBwbGF0Zm9ybSBkZXBlbmRlbnQuIChGb3IgcmVhZGluZyBhbmQKKyAgICB3cml0aW5nIHJhdyBieXRlcyB1c2UgYmluYXJ5IG1vZGUgYW5kIGxlYXZlIGVuY29kaW5nIHVuc3BlY2lmaWVkLikgVGhlCisgICAgYXZhaWxhYmxlIG1vZGVzIGFyZToKIAogICAgID09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICBDaGFyYWN0ZXIgTWVhbmluZwogICAgIC0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAncicgICAgICAgb3BlbiBmb3IgcmVhZGluZyAoZGVmYXVsdCkKICAgICAndycgICAgICAgb3BlbiBmb3Igd3JpdGluZywgdHJ1bmNhdGluZyB0aGUgZmlsZSBmaXJzdAorICAgICd4JyAgICAgICBjcmVhdGUgYSBuZXcgZmlsZSBhbmQgb3BlbiBpdCBmb3Igd3JpdGluZwogICAgICdhJyAgICAgICBvcGVuIGZvciB3cml0aW5nLCBhcHBlbmRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSBpZiBpdCBleGlzdHMKICAgICAnYicgICAgICAgYmluYXJ5IG1vZGUKICAgICAndCcgICAgICAgdGV4dCBtb2RlIChkZWZhdWx0KQpAQCAtNzIsNyArNjgsOCBAQAogCiAgICAgVGhlIGRlZmF1bHQgbW9kZSBpcyAncnQnIChvcGVuIGZvciByZWFkaW5nIHRleHQpLiBGb3IgYmluYXJ5IHJhbmRvbQogICAgIGFjY2VzcywgdGhlIG1vZGUgJ3crYicgb3BlbnMgYW5kIHRydW5jYXRlcyB0aGUgZmlsZSB0byAwIGJ5dGVzLCB3aGlsZQotICAgICdyK2InIG9wZW5zIHRoZSBmaWxlIHdpdGhvdXQgdHJ1bmNhdGlvbi4KKyAgICAncitiJyBvcGVucyB0aGUgZmlsZSB3aXRob3V0IHRydW5jYXRpb24uIFRoZSAneCcgbW9kZSBpbXBsaWVzICd3JyBhbmQKKyAgICByYWlzZXMgYW4gYEZpbGVFeGlzdHNFcnJvcmAgaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMuCiAKICAgICBQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGZpbGVzIG9wZW5lZCBpbiBiaW5hcnkgYW5kIHRleHQgbW9kZXMsCiAgICAgZXZlbiB3aGVuIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0gZG9lc24ndC4gRmlsZXMgb3BlbmVkIGluCkBAIC0xMzIsNiArMTI5LDEyIEBACiAgICAgYmUga2VwdCBvcGVuIHdoZW4gdGhlIGZpbGUgaXMgY2xvc2VkLiBUaGlzIGRvZXMgbm90IHdvcmsgd2hlbiBhIGZpbGUgbmFtZSBpcwogICAgIGdpdmVuIGFuZCBtdXN0IGJlIFRydWUgaW4gdGhhdCBjYXNlLgogCisgICAgQSBjdXN0b20gb3BlbmVyIGNhbiBiZSB1c2VkIGJ5IHBhc3NpbmcgYSBjYWxsYWJsZSBhcyAqb3BlbmVyKi4gVGhlCisgICAgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5IGNhbGxpbmcKKyAgICAqb3BlbmVyKiB3aXRoICgqZmlsZSosICpmbGFncyopLiAqb3BlbmVyKiBtdXN0IHJldHVybiBhbiBvcGVuIGZpbGUKKyAgICBkZXNjcmlwdG9yIChwYXNzaW5nIG9zLm9wZW4gYXMgKm9wZW5lciogcmVzdWx0cyBpbiBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8KKyAgICBwYXNzaW5nIE5vbmUpLgorCiAgICAgb3BlbigpIHJldHVybnMgYSBmaWxlIG9iamVjdCB3aG9zZSB0eXBlIGRlcGVuZHMgb24gdGhlIG1vZGUsIGFuZAogICAgIHRocm91Z2ggd2hpY2ggdGhlIHN0YW5kYXJkIGZpbGUgb3BlcmF0aW9ucyBzdWNoIGFzIHJlYWRpbmcgYW5kIHdyaXRpbmcKICAgICBhcmUgcGVyZm9ybWVkLiBXaGVuIG9wZW4oKSBpcyB1c2VkIHRvIG9wZW4gYSBmaWxlIGluIGEgdGV4dCBtb2RlICgndycsCkBAIC0xNTcsOCArMTYwLDkgQEAKICAgICBpZiBlcnJvcnMgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKGVycm9ycywgc3RyKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpbnZhbGlkIGVycm9yczogJXIiICUgZXJyb3JzKQogICAgIG1vZGVzID0gc2V0KG1vZGUpCi0gICAgaWYgbW9kZXMgLSBzZXQoImFyd2IrdFUiKSBvciBsZW4obW9kZSkgPiBsZW4obW9kZXMpOgorICAgIGlmIG1vZGVzIC0gc2V0KCJheHJ3Yit0VSIpIG9yIGxlbihtb2RlKSA+IGxlbihtb2Rlcyk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgbW9kZTogJXIiICUgbW9kZSkKKyAgICBjcmVhdGluZyA9ICJ4IiBpbiBtb2RlcwogICAgIHJlYWRpbmcgPSAiciIgaW4gbW9kZXMKICAgICB3cml0aW5nID0gInciIGluIG1vZGVzCiAgICAgYXBwZW5kaW5nID0gImEiIGluIG1vZGVzCkBAIC0xNjYsMTQgKzE3MCwxNCBAQAogICAgIHRleHQgPSAidCIgaW4gbW9kZXMKICAgICBiaW5hcnkgPSAiYiIgaW4gbW9kZXMKICAgICBpZiAiVSIgaW4gbW9kZXM6Ci0gICAgICAgIGlmIHdyaXRpbmcgb3IgYXBwZW5kaW5nOgorICAgICAgICBpZiBjcmVhdGluZyBvciB3cml0aW5nIG9yIGFwcGVuZGluZzoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbid0IHVzZSBVIGFuZCB3cml0aW5nIG1vZGUgYXQgb25jZSIpCiAgICAgICAgIHJlYWRpbmcgPSBUcnVlCiAgICAgaWYgdGV4dCBhbmQgYmluYXJ5OgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW4ndCBoYXZlIHRleHQgYW5kIGJpbmFyeSBtb2RlIGF0IG9uY2UiKQotICAgIGlmIHJlYWRpbmcgKyB3cml0aW5nICsgYXBwZW5kaW5nID4gMToKKyAgICBpZiBjcmVhdGluZyArIHJlYWRpbmcgKyB3cml0aW5nICsgYXBwZW5kaW5nID4gMToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2FuJ3QgaGF2ZSByZWFkL3dyaXRlL2FwcGVuZCBtb2RlIGF0IG9uY2UiKQotICAgIGlmIG5vdCAocmVhZGluZyBvciB3cml0aW5nIG9yIGFwcGVuZGluZyk6CisgICAgaWYgbm90IChjcmVhdGluZyBvciByZWFkaW5nIG9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nKToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibXVzdCBoYXZlIGV4YWN0bHkgb25lIG9mIHJlYWQvd3JpdGUvYXBwZW5kIG1vZGUiKQogICAgIGlmIGJpbmFyeSBhbmQgZW5jb2RpbmcgaXMgbm90IE5vbmU6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJpbmFyeSBtb2RlIGRvZXNuJ3QgdGFrZSBhbiBlbmNvZGluZyBhcmd1bWVudCIpCkBAIC0xODIsMTEgKzE4NiwxMiBAQAogICAgIGlmIGJpbmFyeSBhbmQgbmV3bGluZSBpcyBub3QgTm9uZToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYmluYXJ5IG1vZGUgZG9lc24ndCB0YWtlIGEgbmV3bGluZSBhcmd1bWVudCIpCiAgICAgcmF3ID0gRmlsZUlPKGZpbGUsCisgICAgICAgICAgICAgICAgIChjcmVhdGluZyBhbmQgIngiIG9yICIiKSArCiAgICAgICAgICAgICAgICAgIChyZWFkaW5nIGFuZCAiciIgb3IgIiIpICsKICAgICAgICAgICAgICAgICAgKHdyaXRpbmcgYW5kICJ3IiBvciAiIikgKwogICAgICAgICAgICAgICAgICAoYXBwZW5kaW5nIGFuZCAiYSIgb3IgIiIpICsKICAgICAgICAgICAgICAgICAgKHVwZGF0aW5nIGFuZCAiKyIgb3IgIiIpLAotICAgICAgICAgICAgICAgICBjbG9zZWZkKQorICAgICAgICAgICAgICAgICBjbG9zZWZkLCBvcGVuZXI9b3BlbmVyKQogICAgIGxpbmVfYnVmZmVyaW5nID0gRmFsc2UKICAgICBpZiBidWZmZXJpbmcgPT0gMSBvciBidWZmZXJpbmcgPCAwIGFuZCByYXcuaXNhdHR5KCk6CiAgICAgICAgIGJ1ZmZlcmluZyA9IC0xCkBAIC0yMDgsNyArMjEzLDcgQEAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2FuJ3QgaGF2ZSB1bmJ1ZmZlcmVkIHRleHQgSS9PIikKICAgICBpZiB1cGRhdGluZzoKICAgICAgICAgYnVmZmVyID0gQnVmZmVyZWRSYW5kb20ocmF3LCBidWZmZXJpbmcpCi0gICAgZWxpZiB3cml0aW5nIG9yIGFwcGVuZGluZzoKKyAgICBlbGlmIGNyZWF0aW5nIG9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOgogICAgICAgICBidWZmZXIgPSBCdWZmZXJlZFdyaXRlcihyYXcsIGJ1ZmZlcmluZykKICAgICBlbGlmIHJlYWRpbmc6CiAgICAgICAgIGJ1ZmZlciA9IEJ1ZmZlcmVkUmVhZGVyKHJhdywgYnVmZmVyaW5nKQpAQCAtMzA1LDYgKzMxMCw3IEBACiAgICAgICAgICogMCAtLSBzdGFydCBvZiBzdHJlYW0gKHRoZSBkZWZhdWx0KTsgb2Zmc2V0IHNob3VsZCBiZSB6ZXJvIG9yIHBvc2l0aXZlCiAgICAgICAgICogMSAtLSBjdXJyZW50IHN0cmVhbSBwb3NpdGlvbjsgb2Zmc2V0IG1heSBiZSBuZWdhdGl2ZQogICAgICAgICAqIDIgLS0gZW5kIG9mIHN0cmVhbTsgb2Zmc2V0IGlzIHVzdWFsbHkgbmVnYXRpdmUKKyAgICAgICAgU29tZSBvcGVyYXRpbmcgc3lzdGVtcyAvIGZpbGUgc3lzdGVtcyBjb3VsZCBwcm92aWRlIGFkZGl0aW9uYWwgdmFsdWVzLgogCiAgICAgICAgIFJldHVybiBhbiBpbnQgaW5kaWNhdGluZyB0aGUgbmV3IGFic29sdXRlIHBvc2l0aW9uLgogICAgICAgICAiIiIKQEAgLTM0MCw4ICszNDYsMTAgQEAKICAgICAgICAgVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGNsb3NlZC4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIG5vdCBzZWxmLl9fY2xvc2VkOgotICAgICAgICAgICAgc2VsZi5mbHVzaCgpCi0gICAgICAgICAgICBzZWxmLl9fY2xvc2VkID0gVHJ1ZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuZmx1c2goKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzZWxmLl9fY2xvc2VkID0gVHJ1ZQogCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICIiIkRlc3RydWN0b3IuICBDYWxscyBjbG9zZSgpLiIiIgpAQCAtODY1LDcgKzg3Myw3IEBACiAgICAgICAgIGVsaWYgd2hlbmNlID09IDI6CiAgICAgICAgICAgICBzZWxmLl9wb3MgPSBtYXgoMCwgbGVuKHNlbGYuX2J1ZmZlcikgKyBwb3MpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHdoZW5jZSB2YWx1ZSIpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bnN1cHBvcnRlZCB3aGVuY2UgdmFsdWUiKQogICAgICAgICByZXR1cm4gc2VsZi5fcG9zCiAKICAgICBkZWYgdGVsbChzZWxmKToKQEAgLTk1NCwxNSArOTYyLDE5IEBACiAgICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciB3aGVuIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCBpcyB1bnNwZWNpZmllZC4KICAgICAgICAgaWYgbiBpcyBOb25lIG9yIG4gPT0gLTE6CiAgICAgICAgICAgICBzZWxmLl9yZXNldF9yZWFkX2J1ZigpCisgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYucmF3LCAncmVhZGFsbCcpOgorICAgICAgICAgICAgICAgIGNodW5rID0gc2VsZi5yYXcucmVhZGFsbCgpCisgICAgICAgICAgICAgICAgaWYgY2h1bmsgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1Zltwb3M6XSBvciBOb25lCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1Zltwb3M6XSArIGNodW5rCiAgICAgICAgICAgICBjaHVua3MgPSBbYnVmW3BvczpdXSAgIyBTdHJpcCB0aGUgY29uc3VtZWQgYnl0ZXMuCiAgICAgICAgICAgICBjdXJyZW50X3NpemUgPSAwCiAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgICMgUmVhZCB1bnRpbCBFT0Ygb3IgdW50aWwgcmVhZCgpIHdvdWxkIGJsb2NrLgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnJhdy5yZWFkKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgotICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IEVJTlRSOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBpZiBjaHVuayBpbiBlbXB0eV92YWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgIG5vZGF0YV92YWwgPSBjaHVuawpAQCAtOTg0LDkgKzk5Niw3IEBACiAgICAgICAgIHdoaWxlIGF2YWlsIDwgbjoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBjaHVuayA9IHNlbGYucmF3LnJlYWQod2FudGVkKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IEVJTlRSOgotICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGNodW5rIGluIGVtcHR5X3ZhbHVlczoKICAgICAgICAgICAgICAgICBub2RhdGFfdmFsID0gY2h1bmsKQEAgLTEwMTksOSArMTAyOSw3IEBACiAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IHNlbGYucmF3LnJlYWQodG9fcmVhZCkKLSAgICAgICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgotICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IEVJTlRSOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgaWYgY3VycmVudDoKQEAgLTEwNDYsNyArMTA1NCw3IEBACiAgICAgICAgIHJldHVybiBfQnVmZmVyZWRJT01peGluLnRlbGwoc2VsZikgLSBsZW4oc2VsZi5fcmVhZF9idWYpICsgc2VsZi5fcmVhZF9wb3MKIAogICAgIGRlZiBzZWVrKHNlbGYsIHBvcywgd2hlbmNlPTApOgotICAgICAgICBpZiBub3QgKDAgPD0gd2hlbmNlIDw9IDIpOgorICAgICAgICBpZiB3aGVuY2Ugbm90IGluIHZhbGlkX3NlZWtfZmxhZ3M6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHdoZW5jZSB2YWx1ZSIpCiAgICAgICAgIHdpdGggc2VsZi5fcmVhZF9sb2NrOgogICAgICAgICAgICAgaWYgd2hlbmNlID09IDE6CkBAIC0xMDY0LDE5ICsxMDcyLDEzIEBACiAgICAgREVGQVVMVF9CVUZGRVJfU0laRS4KICAgICAiIiIKIAotICAgIF93YXJuaW5nX3N0YWNrX29mZnNldCA9IDIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByYXcsCi0gICAgICAgICAgICAgICAgIGJ1ZmZlcl9zaXplPURFRkFVTFRfQlVGRkVSX1NJWkUsIG1heF9idWZmZXJfc2l6ZT1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKToKICAgICAgICAgaWYgbm90IHJhdy53cml0YWJsZSgpOgogICAgICAgICAgICAgcmFpc2UgSU9FcnJvcignInJhdyIgYXJndW1lbnQgbXVzdCBiZSB3cml0YWJsZS4nKQogCiAgICAgICAgIF9CdWZmZXJlZElPTWl4aW4uX19pbml0X18oc2VsZiwgcmF3KQogICAgICAgICBpZiBidWZmZXJfc2l6ZSA8PSAwOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBidWZmZXIgc2l6ZSIpCi0gICAgICAgIGlmIG1heF9idWZmZXJfc2l6ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIm1heF9idWZmZXJfc2l6ZSBpcyBkZXByZWNhdGVkIiwgRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93YXJuaW5nX3N0YWNrX29mZnNldCkKICAgICAgICAgc2VsZi5idWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplCiAgICAgICAgIHNlbGYuX3dyaXRlX2J1ZiA9IGJ5dGVhcnJheSgpCiAgICAgICAgIHNlbGYuX3dyaXRlX2xvY2sgPSBMb2NrKCkKQEAgLTExMjYsMTMgKzExMjgsMTEgQEAKICAgICAgICAgd2hpbGUgc2VsZi5fd3JpdGVfYnVmOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG4gPSBzZWxmLnJhdy53cml0ZShzZWxmLl93cml0ZV9idWYpCisgICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgZXhjZXB0IEJsb2NraW5nSU9FcnJvcjoKICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInNlbGYucmF3IHNob3VsZCBpbXBsZW1lbnQgUmF3SU9CYXNlOiBpdCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaG91bGQgbm90IHJhaXNlIEJsb2NraW5nSU9FcnJvciIpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gRUlOVFI6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIG4gaXMgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBCbG9ja2luZ0lPRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgIGVycm5vLkVBR0FJTiwKQEAgLTExNDUsOCArMTE0NSw4IEBACiAgICAgICAgIHJldHVybiBfQnVmZmVyZWRJT01peGluLnRlbGwoc2VsZikgKyBsZW4oc2VsZi5fd3JpdGVfYnVmKQogCiAgICAgZGVmIHNlZWsoc2VsZiwgcG9zLCB3aGVuY2U9MCk6Ci0gICAgICAgIGlmIG5vdCAoMCA8PSB3aGVuY2UgPD0gMik6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHdoZW5jZSIpCisgICAgICAgIGlmIHdoZW5jZSBub3QgaW4gdmFsaWRfc2Vla19mbGFnczoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgd2hlbmNlIHZhbHVlIikKICAgICAgICAgd2l0aCBzZWxmLl93cml0ZV9sb2NrOgogICAgICAgICAgICAgc2VsZi5fZmx1c2hfdW5sb2NrZWQoKQogICAgICAgICAgICAgcmV0dXJuIF9CdWZmZXJlZElPTWl4aW4uc2VlayhzZWxmLCBwb3MsIHdoZW5jZSkKQEAgLTExNjgsMTUgKzExNjgsMTEgQEAKICAgICAjIFhYWCBUaGUgdXNlZnVsbmVzcyBvZiB0aGlzIChjb21wYXJlZCB0byBoYXZpbmcgdHdvIHNlcGFyYXRlIElPCiAgICAgIyBvYmplY3RzKSBpcyBxdWVzdGlvbmFibGUuCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVhZGVyLCB3cml0ZXIsCi0gICAgICAgICAgICAgICAgIGJ1ZmZlcl9zaXplPURFRkFVTFRfQlVGRkVSX1NJWkUsIG1heF9idWZmZXJfc2l6ZT1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVhZGVyLCB3cml0ZXIsIGJ1ZmZlcl9zaXplPURFRkFVTFRfQlVGRkVSX1NJWkUpOgogICAgICAgICAiIiJDb25zdHJ1Y3Rvci4KIAogICAgICAgICBUaGUgYXJndW1lbnRzIGFyZSB0d28gUmF3SU8gaW5zdGFuY2VzLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgbWF4X2J1ZmZlcl9zaXplIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgd2FybmluZ3Mud2FybigibWF4X2J1ZmZlcl9zaXplIGlzIGRlcHJlY2F0ZWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0KICAgICAgICAgaWYgbm90IHJlYWRlci5yZWFkYWJsZSgpOgogICAgICAgICAgICAgcmFpc2UgSU9FcnJvcignInJlYWRlciIgYXJndW1lbnQgbXVzdCBiZSByZWFkYWJsZS4nKQogCkBAIC0xMjMzLDE3ICsxMjI5LDE0IEBACiAgICAgZGVmYXVsdHMgdG8gREVGQVVMVF9CVUZGRVJfU0laRS4KICAgICAiIiIKIAotICAgIF93YXJuaW5nX3N0YWNrX29mZnNldCA9IDMKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByYXcsCi0gICAgICAgICAgICAgICAgIGJ1ZmZlcl9zaXplPURFRkFVTFRfQlVGRkVSX1NJWkUsIG1heF9idWZmZXJfc2l6ZT1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKToKICAgICAgICAgcmF3Ll9jaGVja1NlZWthYmxlKCkKICAgICAgICAgQnVmZmVyZWRSZWFkZXIuX19pbml0X18oc2VsZiwgcmF3LCBidWZmZXJfc2l6ZSkKLSAgICAgICAgQnVmZmVyZWRXcml0ZXIuX19pbml0X18oc2VsZiwgcmF3LCBidWZmZXJfc2l6ZSwgbWF4X2J1ZmZlcl9zaXplKQorICAgICAgICBCdWZmZXJlZFdyaXRlci5fX2luaXRfXyhzZWxmLCByYXcsIGJ1ZmZlcl9zaXplKQogCiAgICAgZGVmIHNlZWsoc2VsZiwgcG9zLCB3aGVuY2U9MCk6Ci0gICAgICAgIGlmIG5vdCAoMCA8PSB3aGVuY2UgPD0gMik6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHdoZW5jZSIpCisgICAgICAgIGlmIHdoZW5jZSBub3QgaW4gdmFsaWRfc2Vla19mbGFnczoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgd2hlbmNlIHZhbHVlIikKICAgICAgICAgc2VsZi5mbHVzaCgpCiAgICAgICAgIGlmIHNlbGYuX3JlYWRfYnVmOgogICAgICAgICAgICAgIyBVbmRvIHJlYWQgYWhlYWQuCkBAIC0xNDU1LDcgKzE0NDgsNyBAQAogICAgIHIiIiJDaGFyYWN0ZXIgYW5kIGxpbmUgYmFzZWQgbGF5ZXIgb3ZlciBhIEJ1ZmZlcmVkSU9CYXNlIG9iamVjdCwgYnVmZmVyLgogCiAgICAgZW5jb2RpbmcgZ2l2ZXMgdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHRoYXQgdGhlIHN0cmVhbSB3aWxsIGJlCi0gICAgZGVjb2RlZCBvciBlbmNvZGVkIHdpdGguIEl0IGRlZmF1bHRzIHRvIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZy4KKyAgICBkZWNvZGVkIG9yIGVuY29kZWQgd2l0aC4gSXQgZGVmYXVsdHMgdG8gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKS4KIAogICAgIGVycm9ycyBkZXRlcm1pbmVzIHRoZSBzdHJpY3RuZXNzIG9mIGVuY29kaW5nIGFuZCBkZWNvZGluZyAoc2VlIHRoZQogICAgIGNvZGVjcy5yZWdpc3RlcikgYW5kIGRlZmF1bHRzIHRvICJzdHJpY3QiLgpAQCAtMTQ3Niw2ICsxNDY5LDkgQEAKIAogICAgIF9DSFVOS19TSVpFID0gMjA0OAogCisgICAgIyBUaGUgd3JpdGVfdGhyb3VnaCBhcmd1bWVudCBoYXMgbm8gZWZmZWN0IGhlcmUgc2luY2UgdGhpcworICAgICMgaW1wbGVtZW50YXRpb24gYWx3YXlzIHdyaXRlcyB0aHJvdWdoLiAgVGhlIGFyZ3VtZW50IGlzIHByZXNlbnQgb25seQorICAgICMgc28gdGhhdCB0aGUgc2lnbmF0dXJlIGNhbiBtYXRjaCB0aGUgc2lnbmF0dXJlIG9mIHRoZSBDIHZlcnNpb24uCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJ1ZmZlciwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSwKICAgICAgICAgICAgICAgICAgbGluZV9idWZmZXJpbmc9RmFsc2UsIHdyaXRlX3Rocm91Z2g9RmFsc2UpOgogICAgICAgICBpZiBuZXdsaW5lIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShuZXdsaW5lLCBzdHIpOgpAQCAtMTQ5NCw3ICsxNDkwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgIyBJbXBvcnRpbmcgbG9jYWxlIG1heSBmYWlsIGlmIFB5dGhvbiBpcyBiZWluZyBidWlsdAogICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyA9ICJhc2NpaSIKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyA9IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpCisgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nID0gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKQogCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGVuY29kaW5nLCBzdHIpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBlbmNvZGluZzogJXIiICUgZW5jb2RpbmcpCkBAIC0xNTIxLDYgKzE1MTcsNyBAQAogICAgICAgICBzZWxmLl9zbmFwc2hvdCA9IE5vbmUgICMgaW5mbyBmb3IgcmVjb25zdHJ1Y3RpbmcgZGVjb2RlciBzdGF0ZQogICAgICAgICBzZWxmLl9zZWVrYWJsZSA9IHNlbGYuX3RlbGxpbmcgPSBzZWxmLmJ1ZmZlci5zZWVrYWJsZSgpCiAgICAgICAgIHNlbGYuX2hhc19yZWFkMSA9IGhhc2F0dHIoc2VsZi5idWZmZXIsICdyZWFkMScpCisgICAgICAgIHNlbGYuX2IyY3JhdGlvID0gMC4wCiAKICAgICAgICAgaWYgc2VsZi5fc2Vla2FibGUgYW5kIHNlbGYud3JpdGFibGUoKToKICAgICAgICAgICAgIHBvc2l0aW9uID0gc2VsZi5idWZmZXIudGVsbCgpCkBAIC0xNTg5LDggKzE1ODYsMTAgQEAKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgaWYgc2VsZi5idWZmZXIgaXMgbm90IE5vbmUgYW5kIG5vdCBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHNlbGYuZmx1c2goKQotICAgICAgICAgICAgc2VsZi5idWZmZXIuY2xvc2UoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuZmx1c2goKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzZWxmLmJ1ZmZlci5jbG9zZSgpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgY2xvc2VkKHNlbGYpOgpAQCAtMTY5Myw3ICsxNjkyLDEyIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBpbnB1dF9jaHVuayA9IHNlbGYuYnVmZmVyLnJlYWQoc2VsZi5fQ0hVTktfU0laRSkKICAgICAgICAgZW9mID0gbm90IGlucHV0X2NodW5rCi0gICAgICAgIHNlbGYuX3NldF9kZWNvZGVkX2NoYXJzKHNlbGYuX2RlY29kZXIuZGVjb2RlKGlucHV0X2NodW5rLCBlb2YpKQorICAgICAgICBkZWNvZGVkX2NoYXJzID0gc2VsZi5fZGVjb2Rlci5kZWNvZGUoaW5wdXRfY2h1bmssIGVvZikKKyAgICAgICAgc2VsZi5fc2V0X2RlY29kZWRfY2hhcnMoZGVjb2RlZF9jaGFycykKKyAgICAgICAgaWYgZGVjb2RlZF9jaGFyczoKKyAgICAgICAgICAgIHNlbGYuX2IyY3JhdGlvID0gbGVuKGlucHV0X2NodW5rKSAvIGxlbihzZWxmLl9kZWNvZGVkX2NoYXJzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fYjJjcmF0aW8gPSAwLjAKIAogICAgICAgICBpZiBzZWxmLl90ZWxsaW5nOgogICAgICAgICAgICAgIyBBdCB0aGUgc25hcHNob3QgcG9pbnQsIGxlbihkZWNfYnVmZmVyKSBieXRlcyBiZWZvcmUgdGhlIHJlYWQsCkBAIC0xNzQ3LDIwICsxNzUxLDU2IEBACiAgICAgICAgICMgZm9yd2FyZCB1bnRpbCBpdCBnaXZlcyB1cyBlbm91Z2ggZGVjb2RlZCBjaGFyYWN0ZXJzLgogICAgICAgICBzYXZlZF9zdGF0ZSA9IGRlY29kZXIuZ2V0c3RhdGUoKQogICAgICAgICB0cnk6CisgICAgICAgICAgICAjIEZhc3Qgc2VhcmNoIGZvciBhbiBhY2NlcHRhYmxlIHN0YXJ0IHBvaW50LCBjbG9zZSB0byBvdXIKKyAgICAgICAgICAgICMgY3VycmVudCBwb3MuCisgICAgICAgICAgICAjIFJhdGlvbmFsZTogY2FsbGluZyBkZWNvZGVyLmRlY29kZSgpIGhhcyBhIGxhcmdlIG92ZXJoZWFkCisgICAgICAgICAgICAjIHJlZ2FyZGxlc3Mgb2YgY2h1bmsgc2l6ZTsgd2Ugd2FudCB0aGUgbnVtYmVyIG9mIHN1Y2ggY2FsbHMgdG8KKyAgICAgICAgICAgICMgYmUgTygxKSBpbiBtb3N0IHNpdHVhdGlvbnMgKGNvbW1vbiBkZWNvZGVycywgbm9uLWNyYXp5IGlucHV0KS4KKyAgICAgICAgICAgICMgQWN0dWFsbHksIGl0IHdpbGwgYmUgZXhhY3RseSAxIGZvciBmaXhlZC1zaXplIGNvZGVjcyAoYWxsCisgICAgICAgICAgICAjIDgtYml0IGNvZGVjcywgYWxzbyBVVEYtMTYgYW5kIFVURi0zMikuCisgICAgICAgICAgICBza2lwX2J5dGVzID0gaW50KHNlbGYuX2IyY3JhdGlvICogY2hhcnNfdG9fc2tpcCkKKyAgICAgICAgICAgIHNraXBfYmFjayA9IDEKKyAgICAgICAgICAgIGFzc2VydCBza2lwX2J5dGVzIDw9IGxlbihuZXh0X2lucHV0KQorICAgICAgICAgICAgd2hpbGUgc2tpcF9ieXRlcyA+IDA6CisgICAgICAgICAgICAgICAgZGVjb2Rlci5zZXRzdGF0ZSgoYicnLCBkZWNfZmxhZ3MpKQorICAgICAgICAgICAgICAgICMgRGVjb2RlIHVwIHRvIHRlbXB0YXRpdmUgc3RhcnQgcG9pbnQKKyAgICAgICAgICAgICAgICBuID0gbGVuKGRlY29kZXIuZGVjb2RlKG5leHRfaW5wdXRbOnNraXBfYnl0ZXNdKSkKKyAgICAgICAgICAgICAgICBpZiBuIDw9IGNoYXJzX3RvX3NraXA6CisgICAgICAgICAgICAgICAgICAgIGIsIGQgPSBkZWNvZGVyLmdldHN0YXRlKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGI6CisgICAgICAgICAgICAgICAgICAgICAgICAjIEJlZm9yZSBwb3MgYW5kIG5vIGJ5dGVzIGJ1ZmZlcmVkIGluIGRlY29kZXIgPT4gT0sKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlY19mbGFncyA9IGQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzX3RvX3NraXAgLT0gbgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgIyBTa2lwIGJhY2sgYnkgYnVmZmVyZWQgYW1vdW50IGFuZCByZXNldCBoZXVyaXN0aWMKKyAgICAgICAgICAgICAgICAgICAgc2tpcF9ieXRlcyAtPSBsZW4oYikKKyAgICAgICAgICAgICAgICAgICAgc2tpcF9iYWNrID0gMQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgV2UncmUgdG9vIGZhciBhaGVhZCwgc2tpcCBiYWNrIGEgYml0CisgICAgICAgICAgICAgICAgICAgIHNraXBfYnl0ZXMgLT0gc2tpcF9iYWNrCisgICAgICAgICAgICAgICAgICAgIHNraXBfYmFjayA9IHNraXBfYmFjayAqIDIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2tpcF9ieXRlcyA9IDAKKyAgICAgICAgICAgICAgICBkZWNvZGVyLnNldHN0YXRlKChiJycsIGRlY19mbGFncykpCisKICAgICAgICAgICAgICMgTm90ZSBvdXIgaW5pdGlhbCBzdGFydCBwb2ludC4KLSAgICAgICAgICAgIGRlY29kZXIuc2V0c3RhdGUoKGInJywgZGVjX2ZsYWdzKSkKLSAgICAgICAgICAgIHN0YXJ0X3BvcyA9IHBvc2l0aW9uCi0gICAgICAgICAgICBzdGFydF9mbGFncywgYnl0ZXNfZmVkLCBjaGFyc19kZWNvZGVkID0gZGVjX2ZsYWdzLCAwLCAwCi0gICAgICAgICAgICBuZWVkX2VvZiA9IDAKKyAgICAgICAgICAgIHN0YXJ0X3BvcyA9IHBvc2l0aW9uICsgc2tpcF9ieXRlcworICAgICAgICAgICAgc3RhcnRfZmxhZ3MgPSBkZWNfZmxhZ3MKKyAgICAgICAgICAgIGlmIGNoYXJzX3RvX3NraXAgPT0gMDoKKyAgICAgICAgICAgICAgICAjIFdlIGhhdmVuJ3QgbW92ZWQgZnJvbSB0aGUgc3RhcnQgcG9pbnQuCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BhY2tfY29va2llKHN0YXJ0X3Bvcywgc3RhcnRfZmxhZ3MpCiAKICAgICAgICAgICAgICMgRmVlZCB0aGUgZGVjb2RlciBvbmUgYnl0ZSBhdCBhIHRpbWUuICBBcyB3ZSBnbywgbm90ZSB0aGUKICAgICAgICAgICAgICMgbmVhcmVzdCAic2FmZSBzdGFydCBwb2ludCIgYmVmb3JlIHRoZSBjdXJyZW50IGxvY2F0aW9uCiAgICAgICAgICAgICAjIChhIHBvaW50IHdoZXJlIHRoZSBkZWNvZGVyIGhhcyBub3RoaW5nIGJ1ZmZlcmVkLCBzbyBzZWVrKCkKICAgICAgICAgICAgICMgY2FuIHNhZmVseSBzdGFydCBmcm9tIHRoZXJlIGFuZCBhZHZhbmNlIHRvIHRoaXMgbG9jYXRpb24pLgotICAgICAgICAgICAgbmV4dF9ieXRlID0gYnl0ZWFycmF5KDEpCi0gICAgICAgICAgICBmb3IgbmV4dF9ieXRlWzBdIGluIG5leHRfaW5wdXQ6CisgICAgICAgICAgICBieXRlc19mZWQgPSAwCisgICAgICAgICAgICBuZWVkX2VvZiA9IDAKKyAgICAgICAgICAgICMgQ2hhcnMgZGVjb2RlZCBzaW5jZSBgc3RhcnRfcG9zYAorICAgICAgICAgICAgY2hhcnNfZGVjb2RlZCA9IDAKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHNraXBfYnl0ZXMsIGxlbihuZXh0X2lucHV0KSk6CiAgICAgICAgICAgICAgICAgYnl0ZXNfZmVkICs9IDEKLSAgICAgICAgICAgICAgICBjaGFyc19kZWNvZGVkICs9IGxlbihkZWNvZGVyLmRlY29kZShuZXh0X2J5dGUpKQorICAgICAgICAgICAgICAgIGNoYXJzX2RlY29kZWQgKz0gbGVuKGRlY29kZXIuZGVjb2RlKG5leHRfaW5wdXRbaTppKzFdKSkKICAgICAgICAgICAgICAgICBkZWNfYnVmZmVyLCBkZWNfZmxhZ3MgPSBkZWNvZGVyLmdldHN0YXRlKCkKICAgICAgICAgICAgICAgICBpZiBub3QgZGVjX2J1ZmZlciBhbmQgY2hhcnNfZGVjb2RlZCA8PSBjaGFyc190b19za2lwOgogICAgICAgICAgICAgICAgICAgICAjIERlY29kZXIgYnVmZmVyIGlzIGVtcHR5LCBzbyB0aGlzIGlzIGEgc2FmZSBzdGFydCBwb2ludC4KQEAgLTE4MTksOCArMTg1OSw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5fZGVjb2Rlci5yZXNldCgpCiAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb24KICAgICAgICAgaWYgd2hlbmNlICE9IDA6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHdoZW5jZSAoJXIsIHNob3VsZCBiZSAwLCAxIG9yIDIpIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuY2UsKSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVuc3VwcG9ydGVkIHdoZW5jZSAoJXIpIiAlICh3aGVuY2UsKSkKICAgICAgICAgaWYgY29va2llIDwgMDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5lZ2F0aXZlIHNlZWsgcG9zaXRpb24gJXIiICUgKGNvb2tpZSwpKQogICAgICAgICBzZWxmLmZsdXNoKCkKZGlmZiAtLWdpdCBhL0xpYi9fc3RycHRpbWUucHkgYi9MaWIvX3N0cnB0aW1lLnB5CmluZGV4IGZhMDYzNzYuLmIwY2QzZDYgMTAwNjQ0Ci0tLSBhL0xpYi9fc3RycHRpbWUucHkKKysrIGIvTGliL19zdHJwdGltZS5weQpAQCAtNDg2LDE5ICs0ODYsMTkgQEAKIAogICAgIHJldHVybiAoeWVhciwgbW9udGgsIGRheSwKICAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLAotICAgICAgICAgICAgd2Vla2RheSwganVsaWFuLCB0eiwgZ210b2ZmLCB0em5hbWUpLCBmcmFjdGlvbgorICAgICAgICAgICAgd2Vla2RheSwganVsaWFuLCB0eiwgdHpuYW1lLCBnbXRvZmYpLCBmcmFjdGlvbgogCiBkZWYgX3N0cnB0aW1lX3RpbWUoZGF0YV9zdHJpbmcsIGZvcm1hdD0iJWEgJWIgJWQgJUg6JU06JVMgJVkiKToKICAgICAiIiJSZXR1cm4gYSB0aW1lIHN0cnVjdCBiYXNlZCBvbiB0aGUgaW5wdXQgc3RyaW5nIGFuZCB0aGUKICAgICBmb3JtYXQgc3RyaW5nLiIiIgogICAgIHR0ID0gX3N0cnB0aW1lKGRhdGFfc3RyaW5nLCBmb3JtYXQpWzBdCi0gICAgcmV0dXJuIHRpbWUuc3RydWN0X3RpbWUodHRbOjldKQorICAgIHJldHVybiB0aW1lLnN0cnVjdF90aW1lKHR0Wzp0aW1lLl9TVFJVQ1RfVE1fSVRFTVNdKQogCiBkZWYgX3N0cnB0aW1lX2RhdGV0aW1lKGNscywgZGF0YV9zdHJpbmcsIGZvcm1hdD0iJWEgJWIgJWQgJUg6JU06JVMgJVkiKToKICAgICAiIiJSZXR1cm4gYSBjbGFzcyBjbHMgaW5zdGFuY2UgYmFzZWQgb24gdGhlIGlucHV0IHN0cmluZyBhbmQgdGhlCiAgICAgZm9ybWF0IHN0cmluZy4iIiIKICAgICB0dCwgZnJhY3Rpb24gPSBfc3RycHRpbWUoZGF0YV9zdHJpbmcsIGZvcm1hdCkKLSAgICBnbXRvZmYsIHR6bmFtZSA9IHR0Wy0yOl0KKyAgICB0em5hbWUsIGdtdG9mZiA9IHR0Wy0yOl0KICAgICBhcmdzID0gdHRbOjZdICsgKGZyYWN0aW9uLCkKICAgICBpZiBnbXRvZmYgaXMgbm90IE5vbmU6CiAgICAgICAgIHR6ZGVsdGEgPSBkYXRldGltZV90aW1lZGVsdGEoc2Vjb25kcz1nbXRvZmYpCmRpZmYgLS1naXQgYS9MaWIvYWJjLnB5IGIvTGliL2FiYy5weQppbmRleCBhNmMyZGM0Li4wOTc3OGU4IDEwMDY0NAotLS0gYS9MaWIvYWJjLnB5CisrKyBiL0xpYi9hYmMucHkKQEAgLTI2LDcgKzI2LDggQEAKIAogCiBjbGFzcyBhYnN0cmFjdGNsYXNzbWV0aG9kKGNsYXNzbWV0aG9kKToKLSAgICAiIiJBIGRlY29yYXRvciBpbmRpY2F0aW5nIGFic3RyYWN0IGNsYXNzbWV0aG9kcy4KKyAgICAiIiIKKyAgICBBIGRlY29yYXRvciBpbmRpY2F0aW5nIGFic3RyYWN0IGNsYXNzbWV0aG9kcy4KIAogICAgIFNpbWlsYXIgdG8gYWJzdHJhY3RtZXRob2QuCiAKQEAgLTM2LDYgKzM3LDkgQEAKICAgICAgICAgICAgIEBhYnN0cmFjdGNsYXNzbWV0aG9kCiAgICAgICAgICAgICBkZWYgbXlfYWJzdHJhY3RfY2xhc3NtZXRob2QoY2xzLCAuLi4pOgogICAgICAgICAgICAgICAgIC4uLgorCisgICAgJ2Fic3RyYWN0Y2xhc3NtZXRob2QnIGlzIGRlcHJlY2F0ZWQuIFVzZSAnY2xhc3NtZXRob2QnIHdpdGgKKyAgICAnYWJzdHJhY3RtZXRob2QnIGluc3RlYWQuCiAgICAgIiIiCiAKICAgICBfX2lzYWJzdHJhY3RtZXRob2RfXyA9IFRydWUKQEAgLTQ2LDcgKzUwLDggQEAKIAogCiBjbGFzcyBhYnN0cmFjdHN0YXRpY21ldGhvZChzdGF0aWNtZXRob2QpOgotICAgICIiIkEgZGVjb3JhdG9yIGluZGljYXRpbmcgYWJzdHJhY3Qgc3RhdGljbWV0aG9kcy4KKyAgICAiIiIKKyAgICBBIGRlY29yYXRvciBpbmRpY2F0aW5nIGFic3RyYWN0IHN0YXRpY21ldGhvZHMuCiAKICAgICBTaW1pbGFyIHRvIGFic3RyYWN0bWV0aG9kLgogCkBAIC01Niw2ICs2MSw5IEBACiAgICAgICAgICAgICBAYWJzdHJhY3RzdGF0aWNtZXRob2QKICAgICAgICAgICAgIGRlZiBteV9hYnN0cmFjdF9zdGF0aWNtZXRob2QoLi4uKToKICAgICAgICAgICAgICAgICAuLi4KKworICAgICdhYnN0cmFjdHN0YXRpY21ldGhvZCcgaXMgZGVwcmVjYXRlZC4gVXNlICdzdGF0aWNtZXRob2QnIHdpdGgKKyAgICAnYWJzdHJhY3RtZXRob2QnIGluc3RlYWQuCiAgICAgIiIiCiAKICAgICBfX2lzYWJzdHJhY3RtZXRob2RfXyA9IFRydWUKQEAgLTY2LDcgKzc0LDggQEAKIAogCiBjbGFzcyBhYnN0cmFjdHByb3BlcnR5KHByb3BlcnR5KToKLSAgICAiIiJBIGRlY29yYXRvciBpbmRpY2F0aW5nIGFic3RyYWN0IHByb3BlcnRpZXMuCisgICAgIiIiCisgICAgQSBkZWNvcmF0b3IgaW5kaWNhdGluZyBhYnN0cmFjdCBwcm9wZXJ0aWVzLgogCiAgICAgUmVxdWlyZXMgdGhhdCB0aGUgbWV0YWNsYXNzIGlzIEFCQ01ldGEgb3IgZGVyaXZlZCBmcm9tIGl0LiAgQQogICAgIGNsYXNzIHRoYXQgaGFzIGEgbWV0YWNsYXNzIGRlcml2ZWQgZnJvbSBBQkNNZXRhIGNhbm5vdCBiZQpAQCAtODgsNyArOTcsMTEgQEAKICAgICAgICAgICAgIGRlZiBnZXR4KHNlbGYpOiAuLi4KICAgICAgICAgICAgIGRlZiBzZXR4KHNlbGYsIHZhbHVlKTogLi4uCiAgICAgICAgICAgICB4ID0gYWJzdHJhY3Rwcm9wZXJ0eShnZXR4LCBzZXR4KQorCisgICAgJ2Fic3RyYWN0cHJvcGVydHknIGlzIGRlcHJlY2F0ZWQuIFVzZSAncHJvcGVydHknIHdpdGggJ2Fic3RyYWN0bWV0aG9kJworICAgIGluc3RlYWQuCiAgICAgIiIiCisKICAgICBfX2lzYWJzdHJhY3RtZXRob2RfXyA9IFRydWUKIAogCkBAIC0xMzMsMTEgKzE0NiwxNCBAQAogICAgICAgICByZXR1cm4gY2xzCiAKICAgICBkZWYgcmVnaXN0ZXIoY2xzLCBzdWJjbGFzcyk6Ci0gICAgICAgICIiIlJlZ2lzdGVyIGEgdmlydHVhbCBzdWJjbGFzcyBvZiBhbiBBQkMuIiIiCisgICAgICAgICIiIlJlZ2lzdGVyIGEgdmlydHVhbCBzdWJjbGFzcyBvZiBhbiBBQkMuCisKKyAgICAgICAgUmV0dXJucyB0aGUgc3ViY2xhc3MsIHRvIGFsbG93IHVzYWdlIGFzIGEgY2xhc3MgZGVjb3JhdG9yLgorICAgICAgICAiIiIKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc3ViY2xhc3MsIHR5cGUpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4gb25seSByZWdpc3RlciBjbGFzc2VzIikKICAgICAgICAgaWYgaXNzdWJjbGFzcyhzdWJjbGFzcywgY2xzKToKLSAgICAgICAgICAgIHJldHVybiAgIyBBbHJlYWR5IGEgc3ViY2xhc3MKKyAgICAgICAgICAgIHJldHVybiBzdWJjbGFzcyAgIyBBbHJlYWR5IGEgc3ViY2xhc3MKICAgICAgICAgIyBTdWJ0bGU6IHRlc3QgZm9yIGN5Y2xlcyAqYWZ0ZXIqIHRlc3RpbmcgZm9yICJhbHJlYWR5IGEgc3ViY2xhc3MiOwogICAgICAgICAjIHRoaXMgbWVhbnMgd2UgYWxsb3cgWC5yZWdpc3RlcihYKSBhbmQgaW50ZXJwcmV0IGl0IGFzIGEgbm8tb3AuCiAgICAgICAgIGlmIGlzc3ViY2xhc3MoY2xzLCBzdWJjbGFzcyk6CkBAIC0xNDUsNiArMTYxLDcgQEAKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiUmVmdXNpbmcgdG8gY3JlYXRlIGFuIGluaGVyaXRhbmNlIGN5Y2xlIikKICAgICAgICAgY2xzLl9hYmNfcmVnaXN0cnkuYWRkKHN1YmNsYXNzKQogICAgICAgICBBQkNNZXRhLl9hYmNfaW52YWxpZGF0aW9uX2NvdW50ZXIgKz0gMSAgIyBJbnZhbGlkYXRlIG5lZ2F0aXZlIGNhY2hlCisgICAgICAgIHJldHVybiBzdWJjbGFzcwogCiAgICAgZGVmIF9kdW1wX3JlZ2lzdHJ5KGNscywgZmlsZT1Ob25lKToKICAgICAgICAgIiIiRGVidWcgaGVscGVyIHRvIHByaW50IHRoZSBBQkMgcmVnaXN0cnkuIiIiCmRpZmYgLS1naXQgYS9MaWIvYWlmYy5weSBiL0xpYi9haWZjLnB5CmluZGV4IDg0MWY1YWUuLmExOWIzOGYgMTAwNjQ0Ci0tLSBhL0xpYi9haWZjLnB5CisrKyBiL0xpYi9haWZjLnB5CkBAIC0xMzYsNiArMTM2LDcgQEAKIAogaW1wb3J0IHN0cnVjdAogaW1wb3J0IGJ1aWx0aW5zCitpbXBvcnQgd2FybmluZ3MKIAogX19hbGxfXyA9IFsiRXJyb3IiLCAib3BlbiIsICJvcGVuZnAiXQogCkBAIC00NDAsNyArNDQxLDcgQEAKICAgICAgICAgICAgIGtsdWRnZSA9IDAKICAgICAgICAgICAgIGlmIGNodW5rLmNodW5rc2l6ZSA9PSAxODoKICAgICAgICAgICAgICAgICBrbHVkZ2UgPSAxCi0gICAgICAgICAgICAgICAgcHJpbnQoJ1dhcm5pbmc6IGJhZCBDT01NIGNodW5rIHNpemUnKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ1dhcm5pbmc6IGJhZCBDT01NIGNodW5rIHNpemUnKQogICAgICAgICAgICAgICAgIGNodW5rLmNodW5rc2l6ZSA9IDIzCiAgICAgICAgICAgICAjREVCVUcgZW5kCiAgICAgICAgICAgICBzZWxmLl9jb21wdHlwZSA9IGNodW5rLnJlYWQoNCkKQEAgLTQ4NCwxMSArNDg1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICMgYSBwb3NpdGlvbiAwIGFuZCBuYW1lICcnCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21hcmtlcnMuYXBwZW5kKChpZCwgcG9zLCBuYW1lKSkKICAgICAgICAgZXhjZXB0IEVPRkVycm9yOgotICAgICAgICAgICAgcHJpbnQoJ1dhcm5pbmc6IE1BUksgY2h1bmsgY29udGFpbnMgb25seScsIGVuZD0nICcpCi0gICAgICAgICAgICBwcmludChsZW4oc2VsZi5fbWFya2VycyksIGVuZD0nICcpCi0gICAgICAgICAgICBpZiBsZW4oc2VsZi5fbWFya2VycykgPT0gMTogcHJpbnQoJ21hcmtlcicsIGVuZD0nICcpCi0gICAgICAgICAgICBlbHNlOiBwcmludCgnbWFya2VycycsIGVuZD0nICcpCi0gICAgICAgICAgICBwcmludCgnaW5zdGVhZCBvZicsIG5tYXJrZXJzKQorICAgICAgICAgICAgdyA9ICgnV2FybmluZzogTUFSSyBjaHVuayBjb250YWlucyBvbmx5ICVzIG1hcmtlciVzIGluc3RlYWQgb2YgJXMnICUKKyAgICAgICAgICAgICAgICAgKGxlbihzZWxmLl9tYXJrZXJzKSwgJycgaWYgbGVuKHNlbGYuX21hcmtlcnMpID09IDEgZWxzZSAncycsCisgICAgICAgICAgICAgICAgICBubWFya2VycykpCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKHcpCiAKIGNsYXNzIEFpZmNfd3JpdGU6CiAgICAgIyBWYXJpYWJsZXMgdXNlZCBpbiB0aGlzIGNsYXNzOgpkaWZmIC0tZ2l0IGEvTGliL2FyZ3BhcnNlLnB5IGIvTGliL2FyZ3BhcnNlLnB5CmluZGV4IGViODk0Y2EuLmYyNWIxYjYgMTAwNjQ0Ci0tLSBhL0xpYi9hcmdwYXJzZS5weQorKysgYi9MaWIvYXJncGFyc2UucHkKQEAgLTcxLDYgKzcxLDcgQEAKICAgICAnQXJndW1lbnREZWZhdWx0c0hlbHBGb3JtYXR0ZXInLAogICAgICdSYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXInLAogICAgICdSYXdUZXh0SGVscEZvcm1hdHRlcicsCisgICAgJ01ldGF2YXJUeXBlSGVscEZvcm1hdHRlcicsCiAgICAgJ05hbWVzcGFjZScsCiAgICAgJ0FjdGlvbicsCiAgICAgJ09ORV9PUl9NT1JFJywKQEAgLTQxOSw3ICs0MjAsOCBAQAogCiAgICAgICAgICAgICAjIHByb2R1Y2UgYWxsIGFyZyBzdHJpbmdzCiAgICAgICAgICAgICBlbGlmIG5vdCBhY3Rpb24ub3B0aW9uX3N0cmluZ3M6Ci0gICAgICAgICAgICAgICAgcGFydCA9IHNlbGYuX2Zvcm1hdF9hcmdzKGFjdGlvbiwgYWN0aW9uLmRlc3QpCisgICAgICAgICAgICAgICAgZGVmYXVsdCA9IHNlbGYuX2dldF9kZWZhdWx0X21ldGF2YXJfZm9yX3Bvc2l0aW9uYWwoYWN0aW9uKQorICAgICAgICAgICAgICAgIHBhcnQgPSBzZWxmLl9mb3JtYXRfYXJncyhhY3Rpb24sIGRlZmF1bHQpCiAKICAgICAgICAgICAgICAgICAjIGlmIGl0J3MgaW4gYSBncm91cCwgc3RyaXAgdGhlIG91dGVyIFtdCiAgICAgICAgICAgICAgICAgaWYgYWN0aW9uIGluIGdyb3VwX2FjdGlvbnM6CkBAIC00NDEsNyArNDQzLDcgQEAKICAgICAgICAgICAgICAgICAjIGlmIHRoZSBPcHRpb25hbCB0YWtlcyBhIHZhbHVlLCBmb3JtYXQgaXM6CiAgICAgICAgICAgICAgICAgIyAgICAtcyBBUkdTIG9yIC0tbG9uZyBBUkdTCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCA9IGFjdGlvbi5kZXN0LnVwcGVyKCkKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCA9IHNlbGYuX2dldF9kZWZhdWx0X21ldGF2YXJfZm9yX29wdGlvbmFsKGFjdGlvbikKICAgICAgICAgICAgICAgICAgICAgYXJnc19zdHJpbmcgPSBzZWxmLl9mb3JtYXRfYXJncyhhY3Rpb24sIGRlZmF1bHQpCiAgICAgICAgICAgICAgICAgICAgIHBhcnQgPSAnJXMgJXMnICUgKG9wdGlvbl9zdHJpbmcsIGFyZ3Nfc3RyaW5nKQogCkBAIC01MjcsNyArNTI5LDggQEAKIAogICAgIGRlZiBfZm9ybWF0X2FjdGlvbl9pbnZvY2F0aW9uKHNlbGYsIGFjdGlvbik6CiAgICAgICAgIGlmIG5vdCBhY3Rpb24ub3B0aW9uX3N0cmluZ3M6Ci0gICAgICAgICAgICBtZXRhdmFyLCA9IHNlbGYuX21ldGF2YXJfZm9ybWF0dGVyKGFjdGlvbiwgYWN0aW9uLmRlc3QpKDEpCisgICAgICAgICAgICBkZWZhdWx0ID0gc2VsZi5fZ2V0X2RlZmF1bHRfbWV0YXZhcl9mb3JfcG9zaXRpb25hbChhY3Rpb24pCisgICAgICAgICAgICBtZXRhdmFyLCA9IHNlbGYuX21ldGF2YXJfZm9ybWF0dGVyKGFjdGlvbiwgZGVmYXVsdCkoMSkKICAgICAgICAgICAgIHJldHVybiBtZXRhdmFyCiAKICAgICAgICAgZWxzZToKQEAgLTU0MSw3ICs1NDQsNyBAQAogICAgICAgICAgICAgIyBpZiB0aGUgT3B0aW9uYWwgdGFrZXMgYSB2YWx1ZSwgZm9ybWF0IGlzOgogICAgICAgICAgICAgIyAgICAtcyBBUkdTLCAtLWxvbmcgQVJHUwogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkZWZhdWx0ID0gYWN0aW9uLmRlc3QudXBwZXIoKQorICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBzZWxmLl9nZXRfZGVmYXVsdF9tZXRhdmFyX2Zvcl9vcHRpb25hbChhY3Rpb24pCiAgICAgICAgICAgICAgICAgYXJnc19zdHJpbmcgPSBzZWxmLl9mb3JtYXRfYXJncyhhY3Rpb24sIGRlZmF1bHQpCiAgICAgICAgICAgICAgICAgZm9yIG9wdGlvbl9zdHJpbmcgaW4gYWN0aW9uLm9wdGlvbl9zdHJpbmdzOgogICAgICAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoJyVzICVzJyAlIChvcHRpb25fc3RyaW5nLCBhcmdzX3N0cmluZykpCkBAIC02MTksNiArNjIyLDEyIEBACiAgICAgZGVmIF9nZXRfaGVscF9zdHJpbmcoc2VsZiwgYWN0aW9uKToKICAgICAgICAgcmV0dXJuIGFjdGlvbi5oZWxwCiAKKyAgICBkZWYgX2dldF9kZWZhdWx0X21ldGF2YXJfZm9yX29wdGlvbmFsKHNlbGYsIGFjdGlvbik6CisgICAgICAgIHJldHVybiBhY3Rpb24uZGVzdC51cHBlcigpCisKKyAgICBkZWYgX2dldF9kZWZhdWx0X21ldGF2YXJfZm9yX3Bvc2l0aW9uYWwoc2VsZiwgYWN0aW9uKToKKyAgICAgICAgcmV0dXJuIGFjdGlvbi5kZXN0CisKIAogY2xhc3MgUmF3RGVzY3JpcHRpb25IZWxwRm9ybWF0dGVyKEhlbHBGb3JtYXR0ZXIpOgogICAgICIiIkhlbHAgbWVzc2FnZSBmb3JtYXR0ZXIgd2hpY2ggcmV0YWlucyBhbnkgZm9ybWF0dGluZyBpbiBkZXNjcmlwdGlvbnMuCkBAIC02MjgsNyArNjM3LDcgQEAKICAgICAiIiIKIAogICAgIGRlZiBfZmlsbF90ZXh0KHNlbGYsIHRleHQsIHdpZHRoLCBpbmRlbnQpOgotICAgICAgICByZXR1cm4gJycuam9pbihbaW5kZW50ICsgbGluZSBmb3IgbGluZSBpbiB0ZXh0LnNwbGl0bGluZXMoVHJ1ZSldKQorICAgICAgICByZXR1cm4gJycuam9pbihpbmRlbnQgKyBsaW5lIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSkKIAogCiBjbGFzcyBSYXdUZXh0SGVscEZvcm1hdHRlcihSYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXIpOgpAQCAtNjU5LDYgKzY2OCwyMiBAQAogICAgICAgICByZXR1cm4gaGVscAogCiAKK2NsYXNzIE1ldGF2YXJUeXBlSGVscEZvcm1hdHRlcihIZWxwRm9ybWF0dGVyKToKKyAgICAiIiJIZWxwIG1lc3NhZ2UgZm9ybWF0dGVyIHdoaWNoIHVzZXMgdGhlIGFyZ3VtZW50ICd0eXBlJyBhcyB0aGUgZGVmYXVsdAorICAgIG1ldGF2YXIgdmFsdWUgKGluc3RlYWQgb2YgdGhlIGFyZ3VtZW50ICdkZXN0JykKKworICAgIE9ubHkgdGhlIG5hbWUgb2YgdGhpcyBjbGFzcyBpcyBjb25zaWRlcmVkIGEgcHVibGljIEFQSS4gQWxsIHRoZSBtZXRob2RzCisgICAgcHJvdmlkZWQgYnkgdGhlIGNsYXNzIGFyZSBjb25zaWRlcmVkIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4KKyAgICAiIiIKKworICAgIGRlZiBfZ2V0X2RlZmF1bHRfbWV0YXZhcl9mb3Jfb3B0aW9uYWwoc2VsZiwgYWN0aW9uKToKKyAgICAgICAgcmV0dXJuIGFjdGlvbi50eXBlLl9fbmFtZV9fCisKKyAgICBkZWYgX2dldF9kZWZhdWx0X21ldGF2YXJfZm9yX3Bvc2l0aW9uYWwoc2VsZiwgYWN0aW9uKToKKyAgICAgICAgcmV0dXJuIGFjdGlvbi50eXBlLl9fbmFtZV9fCisKKworCiAjID09PT09PT09PT09PT09PT09PT09PQogIyBPcHRpb25zIGFuZCBBcmd1bWVudHMKICMgPT09PT09PT09PT09PT09PT09PT09CkBAIC0xNTU0LDcgKzE1NzksNiBAQAogICAgICAgICAgICAgICAgICB1c2FnZT1Ob25lLAogICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1Ob25lLAogICAgICAgICAgICAgICAgICBlcGlsb2c9Tm9uZSwKLSAgICAgICAgICAgICAgICAgdmVyc2lvbj1Ob25lLAogICAgICAgICAgICAgICAgICBwYXJlbnRzPVtdLAogICAgICAgICAgICAgICAgICBmb3JtYXR0ZXJfY2xhc3M9SGVscEZvcm1hdHRlciwKICAgICAgICAgICAgICAgICAgcHJlZml4X2NoYXJzPSctJywKQEAgLTE1NjMsMTQgKzE1ODcsNiBAQAogICAgICAgICAgICAgICAgICBjb25mbGljdF9oYW5kbGVyPSdlcnJvcicsCiAgICAgICAgICAgICAgICAgIGFkZF9oZWxwPVRydWUpOgogCi0gICAgICAgIGlmIHZlcnNpb24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCi0gICAgICAgICAgICAgICAgIiIiVGhlICJ2ZXJzaW9uIiBhcmd1bWVudCB0byBBcmd1bWVudFBhcnNlciBpcyBkZXByZWNhdGVkLiAiIiIKLSAgICAgICAgICAgICAgICAiIiJQbGVhc2UgdXNlICIiIgotICAgICAgICAgICAgICAgICIiIiJhZGRfYXJndW1lbnQoLi4uLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPSJOIiwgLi4uKSIgIiIiCi0gICAgICAgICAgICAgICAgIiIiaW5zdGVhZCIiIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotCiAgICAgICAgIHN1cGVyaW5pdCA9IHN1cGVyKEFyZ3VtZW50UGFyc2VyLCBzZWxmKS5fX2luaXRfXwogICAgICAgICBzdXBlcmluaXQoZGVzY3JpcHRpb249ZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgICBwcmVmaXhfY2hhcnM9cHJlZml4X2NoYXJzLApAQCAtMTU4NCw3ICsxNjAwLDYgQEAKICAgICAgICAgc2VsZi5wcm9nID0gcHJvZwogICAgICAgICBzZWxmLnVzYWdlID0gdXNhZ2UKICAgICAgICAgc2VsZi5lcGlsb2cgPSBlcGlsb2cKLSAgICAgICAgc2VsZi52ZXJzaW9uID0gdmVyc2lvbgogICAgICAgICBzZWxmLmZvcm1hdHRlcl9jbGFzcyA9IGZvcm1hdHRlcl9jbGFzcwogICAgICAgICBzZWxmLmZyb21maWxlX3ByZWZpeF9jaGFycyA9IGZyb21maWxlX3ByZWZpeF9jaGFycwogICAgICAgICBzZWxmLmFkZF9oZWxwID0gYWRkX2hlbHAKQEAgLTE1OTksNyArMTYxNCw3IEBACiAgICAgICAgICAgICByZXR1cm4gc3RyaW5nCiAgICAgICAgIHNlbGYucmVnaXN0ZXIoJ3R5cGUnLCBOb25lLCBpZGVudGl0eSkKIAotICAgICAgICAjIGFkZCBoZWxwIGFuZCB2ZXJzaW9uIGFyZ3VtZW50cyBpZiBuZWNlc3NhcnkKKyAgICAgICAgIyBhZGQgaGVscCBhcmd1bWVudCBpZiBuZWNlc3NhcnkKICAgICAgICAgIyAodXNpbmcgZXhwbGljaXQgZGVmYXVsdCB0byBvdmVycmlkZSBnbG9iYWwgYXJndW1lbnRfZGVmYXVsdCkKICAgICAgICAgZGVmYXVsdF9wcmVmaXggPSAnLScgaWYgJy0nIGluIHByZWZpeF9jaGFycyBlbHNlIHByZWZpeF9jaGFyc1swXQogICAgICAgICBpZiBzZWxmLmFkZF9oZWxwOgpAQCAtMTYwNywxMiArMTYyMiw2IEBACiAgICAgICAgICAgICAgICAgZGVmYXVsdF9wcmVmaXgrJ2gnLCBkZWZhdWx0X3ByZWZpeCoyKydoZWxwJywKICAgICAgICAgICAgICAgICBhY3Rpb249J2hlbHAnLCBkZWZhdWx0PVNVUFBSRVNTLAogICAgICAgICAgICAgICAgIGhlbHA9Xygnc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdCcpKQotICAgICAgICBpZiBzZWxmLnZlcnNpb246Ci0gICAgICAgICAgICBzZWxmLmFkZF9hcmd1bWVudCgKLSAgICAgICAgICAgICAgICBkZWZhdWx0X3ByZWZpeCsndicsIGRlZmF1bHRfcHJlZml4KjIrJ3ZlcnNpb24nLAotICAgICAgICAgICAgICAgIGFjdGlvbj0ndmVyc2lvbicsIGRlZmF1bHQ9U1VQUFJFU1MsCi0gICAgICAgICAgICAgICAgdmVyc2lvbj1zZWxmLnZlcnNpb24sCi0gICAgICAgICAgICAgICAgaGVscD1fKCJzaG93IHByb2dyYW0ncyB2ZXJzaW9uIG51bWJlciBhbmQgZXhpdCIpKQogCiAgICAgICAgICMgYWRkIHBhcmVudCBhcmd1bWVudHMgYW5kIGRlZmF1bHRzCiAgICAgICAgIGZvciBwYXJlbnQgaW4gcGFyZW50czoKQEAgLTE2MzIsNyArMTY0MSw2IEBACiAgICAgICAgICAgICAncHJvZycsCiAgICAgICAgICAgICAndXNhZ2UnLAogICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJywKLSAgICAgICAgICAgICd2ZXJzaW9uJywKICAgICAgICAgICAgICdmb3JtYXR0ZXJfY2xhc3MnLAogICAgICAgICAgICAgJ2NvbmZsaWN0X2hhbmRsZXInLAogICAgICAgICAgICAgJ2FkZF9oZWxwJywKQEAgLTE5NDAsMjkgKzE5NDgsMjkgQEAKICAgICAgICAgIyBpZiB3ZSBkaWRuJ3QgY29uc3VtZSBhbGwgdGhlIGFyZ3VtZW50IHN0cmluZ3MsIHRoZXJlIHdlcmUgZXh0cmFzCiAgICAgICAgIGV4dHJhcy5leHRlbmQoYXJnX3N0cmluZ3Nbc3RvcF9pbmRleDpdKQogCi0gICAgICAgICMgaWYgd2UgZGlkbid0IHVzZSBhbGwgdGhlIFBvc2l0aW9uYWwgb2JqZWN0cywgdGhlcmUgd2VyZSB0b28gZmV3Ci0gICAgICAgICMgYXJnIHN0cmluZ3Mgc3VwcGxpZWQuCi0gICAgICAgIGlmIHBvc2l0aW9uYWxzOgotICAgICAgICAgICAgc2VsZi5lcnJvcihfKCd0b28gZmV3IGFyZ3VtZW50cycpKQotCi0gICAgICAgICMgbWFrZSBzdXJlIGFsbCByZXF1aXJlZCBhY3Rpb25zIHdlcmUgcHJlc2VudCwgYW5kIGNvbnZlcnQgZGVmYXVsdHMuCisgICAgICAgICMgbWFrZSBzdXJlIGFsbCByZXF1aXJlZCBhY3Rpb25zIHdlcmUgcHJlc2VudCBhbmQgYWxzbyBjb252ZXJ0CisgICAgICAgICMgYWN0aW9uIGRlZmF1bHRzIHdoaWNoIHdlcmUgbm90IGdpdmVuIGFzIGFyZ3VtZW50cworICAgICAgICByZXF1aXJlZF9hY3Rpb25zID0gW10KICAgICAgICAgZm9yIGFjdGlvbiBpbiBzZWxmLl9hY3Rpb25zOgogICAgICAgICAgICAgaWYgYWN0aW9uIG5vdCBpbiBzZWVuX2FjdGlvbnM6CiAgICAgICAgICAgICAgICAgaWYgYWN0aW9uLnJlcXVpcmVkOgotICAgICAgICAgICAgICAgICAgICBuYW1lID0gX2dldF9hY3Rpb25fbmFtZShhY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoXygnYXJndW1lbnQgJXMgaXMgcmVxdWlyZWQnKSAlIG5hbWUpCisgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkX2FjdGlvbnMuYXBwZW5kKF9nZXRfYWN0aW9uX25hbWUoYWN0aW9uKSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAjIENvbnZlcnQgYWN0aW9uIGRlZmF1bHQgbm93IGluc3RlYWQgb2YgZG9pbmcgaXQgYmVmb3JlCiAgICAgICAgICAgICAgICAgICAgICMgcGFyc2luZyBhcmd1bWVudHMgdG8gYXZvaWQgY2FsbGluZyBjb252ZXJ0IGZ1bmN0aW9ucwogICAgICAgICAgICAgICAgICAgICAjIHR3aWNlICh3aGljaCBtYXkgZmFpbCkgaWYgdGhlIGFyZ3VtZW50IHdhcyBnaXZlbiwgYnV0CiAgICAgICAgICAgICAgICAgICAgICMgb25seSBpZiBpdCB3YXMgZGVmaW5lZCBhbHJlYWR5IGluIHRoZSBuYW1lc3BhY2UKICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlvbi5kZWZhdWx0IGlzIG5vdCBOb25lIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoYWN0aW9uLmRlZmF1bHQsIHN0cikgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzYXR0cihuYW1lc3BhY2UsIGFjdGlvbi5kZXN0KSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24uZGVmYXVsdCBpcyBnZXRhdHRyKG5hbWVzcGFjZSwgYWN0aW9uLmRlc3QpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoYWN0aW9uLmRlZmF1bHQsIHN0cikgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBoYXNhdHRyKG5hbWVzcGFjZSwgYWN0aW9uLmRlc3QpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmRlZmF1bHQgaXMgZ2V0YXR0cihuYW1lc3BhY2UsIGFjdGlvbi5kZXN0KSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKG5hbWVzcGFjZSwgYWN0aW9uLmRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2dldF92YWx1ZShhY3Rpb24sIGFjdGlvbi5kZWZhdWx0KSkKIAorICAgICAgICBpZiByZXF1aXJlZF9hY3Rpb25zOgorICAgICAgICAgICAgc2VsZi5lcnJvcihfKCd0aGUgZm9sbG93aW5nIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQ6ICVzJykgJQorICAgICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4ocmVxdWlyZWRfYWN0aW9ucykpCisKICAgICAgICAgIyBtYWtlIHN1cmUgYWxsIHJlcXVpcmVkIGdyb3VwcyBoYWQgb25lIG9wdGlvbiBwcmVzZW50CiAgICAgICAgIGZvciBncm91cCBpbiBzZWxmLl9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXBzOgogICAgICAgICAgICAgaWYgZ3JvdXAucmVxdWlyZWQ6CkBAIC0yMzE0LDE2ICsyMzIyLDYgQEAKICAgICAgICAgIyBkZXRlcm1pbmUgaGVscCBmcm9tIGZvcm1hdCBhYm92ZQogICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdF9oZWxwKCkKIAotICAgIGRlZiBmb3JtYXRfdmVyc2lvbihzZWxmKToKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLndhcm4oCi0gICAgICAgICAgICAnVGhlIGZvcm1hdF92ZXJzaW9uIG1ldGhvZCBpcyBkZXByZWNhdGVkIC0tIHRoZSAidmVyc2lvbiIgJwotICAgICAgICAgICAgJ2FyZ3VtZW50IHRvIEFyZ3VtZW50UGFyc2VyIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuJywKLSAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgZm9ybWF0dGVyID0gc2VsZi5fZ2V0X2Zvcm1hdHRlcigpCi0gICAgICAgIGZvcm1hdHRlci5hZGRfdGV4dChzZWxmLnZlcnNpb24pCi0gICAgICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0X2hlbHAoKQotCiAgICAgZGVmIF9nZXRfZm9ybWF0dGVyKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5mb3JtYXR0ZXJfY2xhc3MocHJvZz1zZWxmLnByb2cpCiAKQEAgLTIzNDAsMTQgKzIzMzgsNiBAQAogICAgICAgICAgICAgZmlsZSA9IF9zeXMuc3Rkb3V0CiAgICAgICAgIHNlbGYuX3ByaW50X21lc3NhZ2Uoc2VsZi5mb3JtYXRfaGVscCgpLCBmaWxlKQogCi0gICAgZGVmIHByaW50X3ZlcnNpb24oc2VsZiwgZmlsZT1Ob25lKToKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLndhcm4oCi0gICAgICAgICAgICAnVGhlIHByaW50X3ZlcnNpb24gbWV0aG9kIGlzIGRlcHJlY2F0ZWQgLS0gdGhlICJ2ZXJzaW9uIiAnCi0gICAgICAgICAgICAnYXJndW1lbnQgdG8gQXJndW1lbnRQYXJzZXIgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4nLAotICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICBzZWxmLl9wcmludF9tZXNzYWdlKHNlbGYuZm9ybWF0X3ZlcnNpb24oKSwgZmlsZSkKLQogICAgIGRlZiBfcHJpbnRfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCBmaWxlPU5vbmUpOgogICAgICAgICBpZiBtZXNzYWdlOgogICAgICAgICAgICAgaWYgZmlsZSBpcyBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL2FzdC5weSBiL0xpYi9hc3QucHkKaW5kZXggZmI1YWRhYy4uMTNmNTlmOSAxMDA2NDQKLS0tIGEvTGliL2FzdC5weQorKysgYi9MaWIvYXN0LnB5CkBAIC0yNSw3ICsyNSw2IEBACiAgICAgOmxpY2Vuc2U6IFB5dGhvbiBMaWNlbnNlLgogIiIiCiBmcm9tIF9hc3QgaW1wb3J0ICoKLWZyb20gX2FzdCBpbXBvcnQgX192ZXJzaW9uX18KIAogCiBkZWYgcGFyc2Uoc291cmNlLCBmaWxlbmFtZT0nPHVua25vd24+JywgbW9kZT0nZXhlYycpOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaGF0LnB5IGIvTGliL2FzeW5jaGF0LnB5CmluZGV4IDY1NTg1MTIuLjRlMjZiYjUgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2hhdC5weQorKysgYi9MaWIvYXN5bmNoYXQucHkKQEAgLTQ5LDE4ICs0OSw2IEBACiBpbXBvcnQgYXN5bmNvcmUKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCiAKLWRlZiBidWZmZXIob2JqLCBzdGFydD1Ob25lLCBzdG9wPU5vbmUpOgotICAgICMgaWYgbWVtb3J5dmlldyBvYmplY3RzIGdhaW4gc2xpY2luZyBzZW1hbnRpY3MsCi0gICAgIyB0aGlzIGZ1bmN0aW9uIHdpbGwgY2hhbmdlIGZvciB0aGUgYmV0dGVyCi0gICAgIyBtZW1vcnl2aWV3IHVzZWQgZm9yIHRoZSBUeXBlRXJyb3IKLSAgICBtZW1vcnl2aWV3KG9iaikKLSAgICBpZiBzdGFydCA9PSBOb25lOgotICAgICAgICBzdGFydCA9IDAKLSAgICBpZiBzdG9wID09IE5vbmU6Ci0gICAgICAgIHN0b3AgPSBsZW4ob2JqKQotICAgIHggPSBvYmpbc3RhcnQ6c3RvcF0KLSAgICAjIyBwcmludCgiYnVmZmVyIHR5cGUgaXM6ICVzIiUodHlwZSh4KSwpKQotICAgIHJldHVybiB4CiAKIGNsYXNzIGFzeW5jX2NoYXQgKGFzeW5jb3JlLmRpc3BhdGNoZXIpOgogICAgICIiIlRoaXMgaXMgYW4gYWJzdHJhY3QgY2xhc3MuICBZb3UgbXVzdCBkZXJpdmUgZnJvbSB0aGlzIGNsYXNzLCBhbmQgYWRkCkBAIC03NSw3ICs2Myw3IEBACiAgICAgIyBzaWduIG9mIGFuIGFwcGxpY2F0aW9uIGJ1ZyB0aGF0IHdlIGRvbid0IHdhbnQgdG8gcGFzcyBzaWxlbnRseQogCiAgICAgdXNlX2VuY29kaW5nICAgICAgICAgICAgPSAwCi0gICAgZW5jb2RpbmcgICAgICAgICAgICAgICAgPSAnbGF0aW4xJworICAgIGVuY29kaW5nICAgICAgICAgICAgICAgID0gJ2xhdGluLTEnCiAKICAgICBkZWYgX19pbml0X18gKHNlbGYsIHNvY2s9Tm9uZSwgbWFwPU5vbmUpOgogICAgICAgICAjIGZvciBzdHJpbmcgdGVybWluYXRvciBtYXRjaGluZwpAQCAtMjQwLDcgKzIyOCw3IEBACiAgICAgICAgICAgICAjIGhhbmRsZSBjbGFzc2ljIHByb2R1Y2VyIGJlaGF2aW9yCiAgICAgICAgICAgICBvYnMgPSBzZWxmLmFjX291dF9idWZmZXJfc2l6ZQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGRhdGEgPSBidWZmZXIoZmlyc3QsIDAsIG9icykKKyAgICAgICAgICAgICAgICBkYXRhID0gZmlyc3RbOm9ic10KICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICAgICAgZGF0YSA9IGZpcnN0Lm1vcmUoKQogICAgICAgICAgICAgICAgIGlmIGRhdGE6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNvcmUucHkgYi9MaWIvYXN5bmNvcmUucHkKaW5kZXggZDM3OWJhOC4uOTA5ZDlmNiAxMDA2NDQKLS0tIGEvTGliL2FzeW5jb3JlLnB5CisrKyBiL0xpYi9hc3luY29yZS5weQpAQCAtNTQsNyArNTQsNyBAQAogCiBpbXBvcnQgb3MKIGZyb20gZXJybm8gaW1wb3J0IEVBTFJFQURZLCBFSU5QUk9HUkVTUywgRVdPVUxEQkxPQ0ssIEVDT05OUkVTRVQsIEVJTlZBTCwgXAotICAgICBFTk9UQ09OTiwgRVNIVVRET1dOLCBFSU5UUiwgRUlTQ09OTiwgRUJBREYsIEVDT05OQUJPUlRFRCwgRVBJUEUsIEVBR0FJTiwgXAorICAgICBFTk9UQ09OTiwgRVNIVVRET1dOLCBFSVNDT05OLCBFQkFERiwgRUNPTk5BQk9SVEVELCBFUElQRSwgRUFHQUlOLCBcCiAgICAgIGVycm9yY29kZQogCiBfRElTQ09OTkVDVEVEID0gZnJvemVuc2V0KChFQ09OTlJFU0VULCBFTk9UQ09OTiwgRVNIVVRET1dOLCBFQ09OTkFCT1JURUQsIEVQSVBFLApAQCAtMTQzLDExICsxNDMsOCBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHIsIHcsIGUgPSBzZWxlY3Quc2VsZWN0KHIsIHcsIGUsIHRpbWVvdXQpCi0gICAgICAgIGV4Y2VwdCBzZWxlY3QuZXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgaWYgZXJyLmFyZ3NbMF0gIT0gRUlOVFI6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgorICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgZm9yIGZkIGluIHI6CiAgICAgICAgICAgICBvYmogPSBtYXAuZ2V0KGZkKQpAQCAtMTg0LDE1ICsxODEsMTAgQEAKICAgICAgICAgICAgIGlmIG9iai53cml0YWJsZSgpIGFuZCBub3Qgb2JqLmFjY2VwdGluZzoKICAgICAgICAgICAgICAgICBmbGFncyB8PSBzZWxlY3QuUE9MTE9VVAogICAgICAgICAgICAgaWYgZmxhZ3M6Ci0gICAgICAgICAgICAgICAgIyBPbmx5IGNoZWNrIGZvciBleGNlcHRpb25zIGlmIG9iamVjdCB3YXMgZWl0aGVyIHJlYWRhYmxlCi0gICAgICAgICAgICAgICAgIyBvciB3cml0YWJsZS4KLSAgICAgICAgICAgICAgICBmbGFncyB8PSBzZWxlY3QuUE9MTEVSUiB8IHNlbGVjdC5QT0xMSFVQIHwgc2VsZWN0LlBPTExOVkFMCiAgICAgICAgICAgICAgICAgcG9sbHN0ZXIucmVnaXN0ZXIoZmQsIGZsYWdzKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICByID0gcG9sbHN0ZXIucG9sbCh0aW1lb3V0KQotICAgICAgICBleGNlcHQgc2VsZWN0LmVycm9yIGFzIGVycjoKLSAgICAgICAgICAgIGlmIGVyci5hcmdzWzBdICE9IEVJTlRSOgotICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgogICAgICAgICAgICAgciA9IFtdCiAgICAgICAgIGZvciBmZCwgZmxhZ3MgaW4gcjoKICAgICAgICAgICAgIG9iaiA9IG1hcC5nZXQoZmQpCkBAIC0yOTIsNyArMjg0LDcgQEAKICAgICAgICAgICAgIGRlbCBtYXBbZmRdCiAgICAgICAgIHNlbGYuX2ZpbGVubyA9IE5vbmUKIAotICAgIGRlZiBjcmVhdGVfc29ja2V0KHNlbGYsIGZhbWlseSwgdHlwZSk6CisgICAgZGVmIGNyZWF0ZV9zb2NrZXQoc2VsZiwgZmFtaWx5PXNvY2tldC5BRl9JTkVULCB0eXBlPXNvY2tldC5TT0NLX1NUUkVBTSk6CiAgICAgICAgIHNlbGYuZmFtaWx5X2FuZF90eXBlID0gZmFtaWx5LCB0eXBlCiAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KGZhbWlseSwgdHlwZSkKICAgICAgICAgc29jay5zZXRibG9ja2luZygwKQpkaWZmIC0tZ2l0IGEvTGliL2Jhc2U2NC5weSBiL0xpYi9iYXNlNjQucHkKaW5kZXggODk1ZDgxMy4uNDA0MmYwMCAxMDA3NTUKLS0tIGEvTGliL2Jhc2U2NC5weQorKysgYi9MaWIvYmFzZTY0LnB5CkBAIC0yOSwxNCArMjksMTYgQEAKIAogYnl0ZXNfdHlwZXMgPSAoYnl0ZXMsIGJ5dGVhcnJheSkgICMgVHlwZXMgYWNjZXB0YWJsZSBhcyBiaW5hcnkgZGF0YQogCi0KLWRlZiBfdHJhbnNsYXRlKHMsIGFsdGNoYXJzKToKLSAgICBpZiBub3QgaXNpbnN0YW5jZShzLCBieXRlc190eXBlcyk6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgYnl0ZXMsIG5vdCAlcyIgJSBzLl9fY2xhc3NfXy5fX25hbWVfXykKLSAgICB0cmFuc2xhdGlvbiA9IGJ5dGVhcnJheShyYW5nZSgyNTYpKQotICAgIGZvciBrLCB2IGluIGFsdGNoYXJzLml0ZW1zKCk6Ci0gICAgICAgIHRyYW5zbGF0aW9uW29yZChrKV0gPSB2WzBdCi0gICAgcmV0dXJuIHMudHJhbnNsYXRlKHRyYW5zbGF0aW9uKQorZGVmIF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKHMpOgorICAgIGlmIGlzaW5zdGFuY2Uocywgc3RyKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHMuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdzdHJpbmcgYXJndW1lbnQgc2hvdWxkIGNvbnRhaW4gb25seSBBU0NJSSBjaGFyYWN0ZXJzJykKKyAgICBlbGlmIGlzaW5zdGFuY2UocywgYnl0ZXNfdHlwZXMpOgorICAgICAgICByZXR1cm4gcworICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYXJndW1lbnQgc2hvdWxkIGJlIGJ5dGVzIG9yIEFTQ0lJIHN0cmluZywgbm90ICVzIiAlIHMuX19jbGFzc19fLl9fbmFtZV9fKQogCiAKIApAQCAtNjEsNyArNjMsNyBAQAogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgbm90ICVzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgYWx0Y2hhcnMuX19jbGFzc19fLl9fbmFtZV9fKQogICAgICAgICBhc3NlcnQgbGVuKGFsdGNoYXJzKSA9PSAyLCByZXByKGFsdGNoYXJzKQotICAgICAgICByZXR1cm4gX3RyYW5zbGF0ZShlbmNvZGVkLCB7JysnOiBhbHRjaGFyc1swOjFdLCAnLyc6IGFsdGNoYXJzWzE6Ml19KQorICAgICAgICByZXR1cm4gZW5jb2RlZC50cmFuc2xhdGUoYnl0ZXMubWFrZXRyYW5zKGInKy8nLCBhbHRjaGFycykpCiAgICAgcmV0dXJuIGVuY29kZWQKIAogCkBAIC03OSwxNCArODEsMTEgQEAKICAgICBkaXNjYXJkZWQgcHJpb3IgdG8gdGhlIHBhZGRpbmcgY2hlY2suICBJZiB2YWxpZGF0ZSBpcyBUcnVlLAogICAgIG5vbi1iYXNlNjQtYWxwaGFiZXQgY2hhcmFjdGVycyBpbiB0aGUgaW5wdXQgcmVzdWx0IGluIGEgYmluYXNjaWkuRXJyb3IuCiAgICAgIiIiCi0gICAgaWYgbm90IGlzaW5zdGFuY2UocywgYnl0ZXNfdHlwZXMpOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzLCBub3QgJXMiICUgcy5fX2NsYXNzX18uX19uYW1lX18pCisgICAgcyA9IF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKHMpCiAgICAgaWYgYWx0Y2hhcnMgaXMgbm90IE5vbmU6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFsdGNoYXJzLCBieXRlc190eXBlcyk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzLCBub3QgJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBhbHRjaGFycy5fX2NsYXNzX18uX19uYW1lX18pCisgICAgICAgIGFsdGNoYXJzID0gX2J5dGVzX2Zyb21fZGVjb2RlX2RhdGEoYWx0Y2hhcnMpCiAgICAgICAgIGFzc2VydCBsZW4oYWx0Y2hhcnMpID09IDIsIHJlcHIoYWx0Y2hhcnMpCi0gICAgICAgIHMgPSBfdHJhbnNsYXRlKHMsIHtjaHIoYWx0Y2hhcnNbMF0pOiBiJysnLCBjaHIoYWx0Y2hhcnNbMV0pOiBiJy8nfSkKKyAgICAgICAgcyA9IHMudHJhbnNsYXRlKGJ5dGVzLm1ha2V0cmFucyhhbHRjaGFycywgYicrLycpKQogICAgIGlmIHZhbGlkYXRlIGFuZCBub3QgcmUubWF0Y2goYideW0EtWmEtejAtOSsvXSo9ezAsMn0kJywgcyk6CiAgICAgICAgIHJhaXNlIGJpbmFzY2lpLkVycm9yKCdOb24tYmFzZTY0IGRpZ2l0IGZvdW5kJykKICAgICByZXR1cm4gYmluYXNjaWkuYTJiX2Jhc2U2NChzKQpAQCAtMTA5LDYgKzEwOCwxMCBAQAogICAgICIiIgogICAgIHJldHVybiBiNjRkZWNvZGUocykKIAorCitfdXJsc2FmZV9lbmNvZGVfdHJhbnNsYXRpb24gPSBieXRlcy5tYWtldHJhbnMoYicrLycsIGInLV8nKQorX3VybHNhZmVfZGVjb2RlX3RyYW5zbGF0aW9uID0gYnl0ZXMubWFrZXRyYW5zKGInLV8nLCBiJysvJykKKwogZGVmIHVybHNhZmVfYjY0ZW5jb2RlKHMpOgogICAgICIiIkVuY29kZSBhIGJ5dGUgc3RyaW5nIHVzaW5nIGEgdXJsLXNhZmUgQmFzZTY0IGFscGhhYmV0LgogCkBAIC0xMTYsNyArMTE5LDcgQEAKICAgICByZXR1cm5lZC4gIFRoZSBhbHBoYWJldCB1c2VzICctJyBpbnN0ZWFkIG9mICcrJyBhbmQgJ18nIGluc3RlYWQgb2YKICAgICAnLycuCiAgICAgIiIiCi0gICAgcmV0dXJuIGI2NGVuY29kZShzLCBiJy1fJykKKyAgICByZXR1cm4gYjY0ZW5jb2RlKHMpLnRyYW5zbGF0ZShfdXJsc2FmZV9lbmNvZGVfdHJhbnNsYXRpb24pCiAKIGRlZiB1cmxzYWZlX2I2NGRlY29kZShzKToKICAgICAiIiJEZWNvZGUgYSBieXRlIHN0cmluZyBlbmNvZGVkIHdpdGggdGhlIHN0YW5kYXJkIEJhc2U2NCBhbHBoYWJldC4KQEAgLTEyOCw3ICsxMzEsOSBAQAogCiAgICAgVGhlIGFscGhhYmV0IHVzZXMgJy0nIGluc3RlYWQgb2YgJysnIGFuZCAnXycgaW5zdGVhZCBvZiAnLycuCiAgICAgIiIiCi0gICAgcmV0dXJuIGI2NGRlY29kZShzLCBiJy1fJykKKyAgICBzID0gX2J5dGVzX2Zyb21fZGVjb2RlX2RhdGEocykKKyAgICBzID0gcy50cmFuc2xhdGUoX3VybHNhZmVfZGVjb2RlX3RyYW5zbGF0aW9uKQorICAgIHJldHVybiBiNjRkZWNvZGUocykKIAogCiAKQEAgLTIxMSw4ICsyMTYsNyBAQAogICAgIHRoZSBpbnB1dCBpcyBpbmNvcnJlY3RseSBwYWRkZWQgb3IgaWYgdGhlcmUgYXJlIG5vbi1hbHBoYWJldAogICAgIGNoYXJhY3RlcnMgcHJlc2VudCBpbiB0aGUgaW5wdXQuCiAgICAgIiIiCi0gICAgaWYgbm90IGlzaW5zdGFuY2UocywgYnl0ZXNfdHlwZXMpOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzLCBub3QgJXMiICUgcy5fX2NsYXNzX18uX19uYW1lX18pCisgICAgcyA9IF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKHMpCiAgICAgcXVhbnRhLCBsZWZ0b3ZlciA9IGRpdm1vZChsZW4ocyksIDgpCiAgICAgaWYgbGVmdG92ZXI6CiAgICAgICAgIHJhaXNlIGJpbmFzY2lpLkVycm9yKCdJbmNvcnJlY3QgcGFkZGluZycpCkBAIC0yMjAsMTAgKzIyNCw5IEBACiAgICAgIyBGYWxzZSwgb3IgdGhlIGNoYXJhY3RlciB0byBtYXAgdGhlIGRpZ2l0IDEgKG9uZSkgdG8uICBJdCBzaG91bGQgYmUKICAgICAjIGVpdGhlciBMIChlbCkgb3IgSSAoZXllKS4KICAgICBpZiBtYXAwMSBpcyBub3QgTm9uZToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobWFwMDEsIGJ5dGVzX3R5cGVzKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgYnl0ZXMsIG5vdCAlcyIgJSBtYXAwMS5fX2NsYXNzX18uX19uYW1lX18pCisgICAgICAgIG1hcDAxID0gX2J5dGVzX2Zyb21fZGVjb2RlX2RhdGEobWFwMDEpCiAgICAgICAgIGFzc2VydCBsZW4obWFwMDEpID09IDEsIHJlcHIobWFwMDEpCi0gICAgICAgIHMgPSBfdHJhbnNsYXRlKHMsIHtiJzAnOiBiJ08nLCBiJzEnOiBtYXAwMX0pCisgICAgICAgIHMgPSBzLnRyYW5zbGF0ZShieXRlcy5tYWtldHJhbnMoYicwMScsIGInTycgKyBtYXAwMSkpCiAgICAgaWYgY2FzZWZvbGQ6CiAgICAgICAgIHMgPSBzLnVwcGVyKCkKICAgICAjIFN0cmlwIG9mZiBwYWQgY2hhcmFjdGVycyBmcm9tIHRoZSByaWdodC4gIFdlIG5lZWQgdG8gY291bnQgdGhlIHBhZApAQCAtMjkyLDggKzI5NSw3IEBACiAgICAgcyB3ZXJlIGluY29ycmVjdGx5IHBhZGRlZCBvciBpZiB0aGVyZSBhcmUgbm9uLWFscGhhYmV0IGNoYXJhY3RlcnMKICAgICBwcmVzZW50IGluIHRoZSBzdHJpbmcuCiAgICAgIiIiCi0gICAgaWYgbm90IGlzaW5zdGFuY2UocywgYnl0ZXNfdHlwZXMpOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzLCBub3QgJXMiICUgcy5fX2NsYXNzX18uX19uYW1lX18pCisgICAgcyA9IF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKHMpCiAgICAgaWYgY2FzZWZvbGQ6CiAgICAgICAgIHMgPSBzLnVwcGVyKCkKICAgICBpZiByZS5zZWFyY2goYidbXjAtOUEtRl0nLCBzKToKZGlmZiAtLWdpdCBhL0xpYi9iaW5oZXgucHkgYi9MaWIvYmluaGV4LnB5CmluZGV4IDk5OWE2NzUuLjdiZjkyNzggMTAwNjQ0Ci0tLSBhL0xpYi9iaW5oZXgucHkKKysrIGIvTGliL2JpbmhleC5weQpAQCAtMjMsNyArMjMsNiBAQAogIwogaW1wb3J0IGlvCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBiaW5hc2NpaQogCmRpZmYgLS1naXQgYS9MaWIvYnoyLnB5IGIvTGliL2J6Mi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzA3NTA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2J6Mi5weQpAQCAtMCwwICsxLDUwNCBAQAorIiIiSW50ZXJmYWNlIHRvIHRoZSBsaWJiemlwMiBjb21wcmVzc2lvbiBsaWJyYXJ5LgorCitUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGZpbGUgaW50ZXJmYWNlLCBjbGFzc2VzIGZvciBpbmNyZW1lbnRhbAorKGRlKWNvbXByZXNzaW9uLCBhbmQgZnVuY3Rpb25zIGZvciBvbmUtc2hvdCAoZGUpY29tcHJlc3Npb24uCisiIiIKKworX19hbGxfXyA9IFsiQloyRmlsZSIsICJCWjJDb21wcmVzc29yIiwgIkJaMkRlY29tcHJlc3NvciIsCisgICAgICAgICAgICJvcGVuIiwgImNvbXByZXNzIiwgImRlY29tcHJlc3MiXQorCitfX2F1dGhvcl9fID0gIk5hZGVlbSBWYXdkYSA8bmFkZWVtLnZhd2RhQGdtYWlsLmNvbT4iCisKK2ltcG9ydCBidWlsdGlucworaW1wb3J0IGlvCitpbXBvcnQgd2FybmluZ3MKKwordHJ5OgorICAgIGZyb20gdGhyZWFkaW5nIGltcG9ydCBSTG9jaworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gZHVtbXlfdGhyZWFkaW5nIGltcG9ydCBSTG9jaworCitmcm9tIF9iejIgaW1wb3J0IEJaMkNvbXByZXNzb3IsIEJaMkRlY29tcHJlc3NvcgorCisKK19NT0RFX0NMT1NFRCAgID0gMAorX01PREVfUkVBRCAgICAgPSAxCitfTU9ERV9SRUFEX0VPRiA9IDIKK19NT0RFX1dSSVRFICAgID0gMworCitfQlVGRkVSX1NJWkUgPSA4MTkyCisKKworY2xhc3MgQloyRmlsZShpby5CdWZmZXJlZElPQmFzZSk6CisKKyAgICAiIiJBIGZpbGUgb2JqZWN0IHByb3ZpZGluZyB0cmFuc3BhcmVudCBiemlwMiAoZGUpY29tcHJlc3Npb24uCisKKyAgICBBIEJaMkZpbGUgY2FuIGFjdCBhcyBhIHdyYXBwZXIgZm9yIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0LCBvciByZWZlcgorICAgIGRpcmVjdGx5IHRvIGEgbmFtZWQgZmlsZSBvbiBkaXNrLgorCisgICAgTm90ZSB0aGF0IEJaMkZpbGUgcHJvdmlkZXMgYSAqYmluYXJ5KiBmaWxlIGludGVyZmFjZSAtIGRhdGEgcmVhZCBpcworICAgIHJldHVybmVkIGFzIGJ5dGVzLCBhbmQgZGF0YSB0byBiZSB3cml0dGVuIHNob3VsZCBiZSBnaXZlbiBhcyBieXRlcy4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZT0iciIsIGJ1ZmZlcmluZz1Ob25lLCBjb21wcmVzc2xldmVsPTkpOgorICAgICAgICAiIiJPcGVuIGEgYnppcDItY29tcHJlc3NlZCBmaWxlLgorCisgICAgICAgIElmIGZpbGVuYW1lIGlzIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgaXMgZ2l2ZXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8KKyAgICAgICAgYmUgb3BlbmVkLiBPdGhlcndpc2UsIGl0IHNob3VsZCBiZSBhIGZpbGUgb2JqZWN0LCB3aGljaCB3aWxsIGJlIHVzZWQgdG8KKyAgICAgICAgcmVhZCBvciB3cml0ZSB0aGUgY29tcHJlc3NlZCBkYXRhLgorCisgICAgICAgIG1vZGUgY2FuIGJlICdyJyBmb3IgcmVhZGluZyAoZGVmYXVsdCksICd3JyBmb3IgKG92ZXIpd3JpdGluZywgb3IgJ2EnIGZvcgorICAgICAgICBhcHBlbmRpbmcuIFRoZXNlIGNhbiBlcXVpdmFsZW50bHkgYmUgZ2l2ZW4gYXMgJ3JiJywgJ3diJywgYW5kICdhYicuCisKKyAgICAgICAgYnVmZmVyaW5nIGlzIGlnbm9yZWQuIEl0cyB1c2UgaXMgZGVwcmVjYXRlZC4KKworICAgICAgICBJZiBtb2RlIGlzICd3JyBvciAnYScsIGNvbXByZXNzbGV2ZWwgY2FuIGJlIGEgbnVtYmVyIGJldHdlZW4gMQorICAgICAgICBhbmQgOSBzcGVjaWZ5aW5nIHRoZSBsZXZlbCBvZiBjb21wcmVzc2lvbjogMSBwcm9kdWNlcyB0aGUgbGVhc3QKKyAgICAgICAgY29tcHJlc3Npb24sIGFuZCA5IChkZWZhdWx0KSBwcm9kdWNlcyB0aGUgbW9zdCBjb21wcmVzc2lvbi4KKworICAgICAgICBJZiBtb2RlIGlzICdyJywgdGhlIGlucHV0IGZpbGUgbWF5IGJlIHRoZSBjb25jYXRlbmF0aW9uIG9mCisgICAgICAgIG11bHRpcGxlIGNvbXByZXNzZWQgc3RyZWFtcy4KKyAgICAgICAgIiIiCisgICAgICAgICMgVGhpcyBsb2NrIG11c3QgYmUgcmVjdXJzaXZlLCBzbyB0aGF0IEJ1ZmZlcmVkSU9CYXNlJ3MKKyAgICAgICAgIyByZWFkbGluZSgpLCByZWFkbGluZXMoKSBhbmQgd3JpdGVsaW5lcygpIGRvbid0IGRlYWRsb2NrLgorICAgICAgICBzZWxmLl9sb2NrID0gUkxvY2soKQorICAgICAgICBzZWxmLl9mcCA9IE5vbmUKKyAgICAgICAgc2VsZi5fY2xvc2VmcCA9IEZhbHNlCisgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9DTE9TRUQKKyAgICAgICAgc2VsZi5fcG9zID0gMAorICAgICAgICBzZWxmLl9zaXplID0gLTEKKworICAgICAgICBpZiBidWZmZXJpbmcgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJVc2Ugb2YgJ2J1ZmZlcmluZycgYXJndW1lbnQgaXMgZGVwcmVjYXRlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKKworICAgICAgICBpZiBub3QgKDEgPD0gY29tcHJlc3NsZXZlbCA8PSA5KToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbXByZXNzbGV2ZWwgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDkiKQorCisgICAgICAgIGlmIG1vZGUgaW4gKCIiLCAiciIsICJyYiIpOgorICAgICAgICAgICAgbW9kZSA9ICJyYiIKKyAgICAgICAgICAgIG1vZGVfY29kZSA9IF9NT0RFX1JFQUQKKyAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBiIiIKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCisgICAgICAgIGVsaWYgbW9kZSBpbiAoInciLCAid2IiKToKKyAgICAgICAgICAgIG1vZGUgPSAid2IiCisgICAgICAgICAgICBtb2RlX2NvZGUgPSBfTU9ERV9XUklURQorICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IEJaMkNvbXByZXNzb3IoY29tcHJlc3NsZXZlbCkKKyAgICAgICAgZWxpZiBtb2RlIGluICgiYSIsICJhYiIpOgorICAgICAgICAgICAgbW9kZSA9ICJhYiIKKyAgICAgICAgICAgIG1vZGVfY29kZSA9IF9NT0RFX1dSSVRFCisgICAgICAgICAgICBzZWxmLl9jb21wcmVzc29yID0gQloyQ29tcHJlc3Nvcihjb21wcmVzc2xldmVsKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiB7IXJ9Ii5mb3JtYXQobW9kZSkpCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMpKToKKyAgICAgICAgICAgIHNlbGYuX2ZwID0gYnVpbHRpbnMub3BlbihmaWxlbmFtZSwgbW9kZSkKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9tb2RlID0gbW9kZV9jb2RlCisgICAgICAgIGVsaWYgaGFzYXR0cihmaWxlbmFtZSwgInJlYWQiKSBvciBoYXNhdHRyKGZpbGVuYW1lLCAid3JpdGUiKToKKyAgICAgICAgICAgIHNlbGYuX2ZwID0gZmlsZW5hbWUKKyAgICAgICAgICAgIHNlbGYuX21vZGUgPSBtb2RlX2NvZGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlsZW5hbWUgbXVzdCBiZSBhIHN0ciBvciBieXRlcyBvYmplY3QsIG9yIGEgZmlsZSIpCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICIiIkZsdXNoIGFuZCBjbG9zZSB0aGUgZmlsZS4KKworICAgICAgICBNYXkgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIHdpdGhvdXQgZXJyb3IuIE9uY2UgdGhlIGZpbGUgaXMKKyAgICAgICAgY2xvc2VkLCBhbnkgb3RoZXIgb3BlcmF0aW9uIG9uIGl0IHdpbGwgcmFpc2UgYSBWYWx1ZUVycm9yLgorICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9DTE9TRUQ6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fbW9kZSBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBOb25lCisgICAgICAgICAgICAgICAgZWxpZiBzZWxmLl9tb2RlID09IF9NT0RFX1dSSVRFOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcC53cml0ZShzZWxmLl9jb21wcmVzc29yLmZsdXNoKCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzb3IgPSBOb25lCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fY2xvc2VmcDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcCA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VmcCA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9DTE9TRUQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY2xvc2VkKHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIHRoaXMgZmlsZSBpcyBjbG9zZWQuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9tb2RlID09IF9NT0RFX0NMT1NFRAorCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSB1bmRlcmx5aW5nIGZpbGUuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fZnAuZmlsZW5vKCkKKworICAgIGRlZiBzZWVrYWJsZShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGZpbGUgc3VwcG9ydHMgc2Vla2luZy4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYucmVhZGFibGUoKSBhbmQgc2VsZi5fZnAuc2Vla2FibGUoKQorCisgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSB3YXMgb3BlbmVkIGZvciByZWFkaW5nLiIiIgorICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKQorCisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSB3YXMgb3BlbmVkIGZvciB3cml0aW5nLiIiIgorICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgPT0gX01PREVfV1JJVEUKKworICAgICMgTW9kZS1jaGVja2luZyBoZWxwZXIgZnVuY3Rpb25zLgorCisgICAgZGVmIF9jaGVja19ub3RfY2xvc2VkKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKQorCisgICAgZGVmIF9jaGVja19jYW5fcmVhZChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fbW9kZSBub3QgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKToKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIkZpbGUgbm90IG9wZW4gZm9yIHJlYWRpbmciKQorCisgICAgZGVmIF9jaGVja19jYW5fd3JpdGUoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX21vZGUgIT0gX01PREVfV1JJVEU6CisgICAgICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJGaWxlIG5vdCBvcGVuIGZvciB3cml0aW5nIikKKworICAgIGRlZiBfY2hlY2tfY2FuX3NlZWsoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX21vZGUgbm90IGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRik6CisgICAgICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJTZWVraW5nIGlzIG9ubHkgc3VwcG9ydGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbiBmaWxlcyBvcGVuIGZvciByZWFkaW5nIikKKyAgICAgICAgaWYgbm90IHNlbGYuX2ZwLnNlZWthYmxlKCk6CisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiVGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvZXMgbm90IHN1cHBvcnQgc2Vla2luZyIpCisKKyAgICAjIEZpbGwgdGhlIHJlYWRhaGVhZCBidWZmZXIgaWYgaXQgaXMgZW1wdHkuIFJldHVybnMgRmFsc2Ugb24gRU9GLgorICAgIGRlZiBfZmlsbF9idWZmZXIoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRF9FT0Y6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgIyBEZXBlbmRpbmcgb24gdGhlIGlucHV0IGRhdGEsIG91ciBjYWxsIHRvIHRoZSBkZWNvbXByZXNzb3IgbWF5IG5vdAorICAgICAgICAjIHJldHVybiBhbnkgZGF0YS4gSW4gdGhpcyBjYXNlLCB0cnkgYWdhaW4gYWZ0ZXIgcmVhZGluZyBhbm90aGVyIGJsb2NrLgorICAgICAgICB3aGlsZSBzZWxmLl9idWZmZXJfb2Zmc2V0ID09IGxlbihzZWxmLl9idWZmZXIpOgorICAgICAgICAgICAgcmF3YmxvY2sgPSAoc2VsZi5fZGVjb21wcmVzc29yLnVudXNlZF9kYXRhIG9yCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcC5yZWFkKF9CVUZGRVJfU0laRSkpCisKKyAgICAgICAgICAgIGlmIG5vdCByYXdibG9jazoKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9kZWNvbXByZXNzb3IuZW9mOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfUkVBRF9FT0YKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2l6ZSA9IHNlbGYuX3BvcworICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiQ29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kLW9mLXN0cmVhbSBtYXJrZXIgd2FzIHJlYWNoZWQiKQorCisgICAgICAgICAgICAjIENvbnRpbnVlIHRvIG5leHQgc3RyZWFtLgorICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKKyAgICAgICAgICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBCWjJEZWNvbXByZXNzb3IoKQorCisgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhyYXdibG9jaykKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAjIFJlYWQgZGF0YSB1bnRpbCBFT0YuCisgICAgIyBJZiByZXR1cm5fZGF0YSBpcyBmYWxzZSwgY29uc3VtZSB0aGUgZGF0YSB3aXRob3V0IHJldHVybmluZyBpdC4KKyAgICBkZWYgX3JlYWRfYWxsKHNlbGYsIHJldHVybl9kYXRhPVRydWUpOgorICAgICAgICAjIFRoZSBsb29wIGFzc3VtZXMgdGhhdCBfYnVmZmVyX29mZnNldCBpcyAwLiBFbnN1cmUgdGhhdCB0aGlzIGlzIHRydWUuCisgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KKyAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKKworICAgICAgICBibG9ja3MgPSBbXQorICAgICAgICB3aGlsZSBzZWxmLl9maWxsX2J1ZmZlcigpOgorICAgICAgICAgICAgaWYgcmV0dXJuX2RhdGE6CisgICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChzZWxmLl9idWZmZXIpCisgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKHNlbGYuX2J1ZmZlcikKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgorICAgICAgICBpZiByZXR1cm5fZGF0YToKKyAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCisKKyAgICAjIFJlYWQgYSBibG9jayBvZiB1cCB0byBuIGJ5dGVzLgorICAgICMgSWYgcmV0dXJuX2RhdGEgaXMgZmFsc2UsIGNvbnN1bWUgdGhlIGRhdGEgd2l0aG91dCByZXR1cm5pbmcgaXQuCisgICAgZGVmIF9yZWFkX2Jsb2NrKHNlbGYsIG4sIHJldHVybl9kYXRhPVRydWUpOgorICAgICAgICAjIElmIHdlIGhhdmUgZW5vdWdoIGRhdGEgYnVmZmVyZWQsIHJldHVybiBpbW1lZGlhdGVseS4KKyAgICAgICAgZW5kID0gc2VsZi5fYnVmZmVyX29mZnNldCArIG4KKyAgICAgICAgaWYgZW5kIDw9IGxlbihzZWxmLl9idWZmZXIpOgorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDogZW5kXQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IGVuZAorICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQorICAgICAgICAgICAgcmV0dXJuIGRhdGEgaWYgcmV0dXJuX2RhdGEgZWxzZSBOb25lCisKKyAgICAgICAgIyBUaGUgbG9vcCBhc3N1bWVzIHRoYXQgX2J1ZmZlcl9vZmZzZXQgaXMgMC4gRW5zdXJlIHRoYXQgdGhpcyBpcyB0cnVlLgorICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldDpdCisgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCisKKyAgICAgICAgYmxvY2tzID0gW10KKyAgICAgICAgd2hpbGUgbiA+IDAgYW5kIHNlbGYuX2ZpbGxfYnVmZmVyKCk6CisgICAgICAgICAgICBpZiBuIDwgbGVuKHNlbGYuX2J1ZmZlcik6CisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcls6bl0KKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gbgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyCisgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCisgICAgICAgICAgICBpZiByZXR1cm5fZGF0YToKKyAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKGRhdGEpCisgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICBuIC09IGxlbihkYXRhKQorICAgICAgICBpZiByZXR1cm5fZGF0YToKKyAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCisKKyAgICBkZWYgcGVlayhzZWxmLCBuPTApOgorICAgICAgICAiIiJSZXR1cm4gYnVmZmVyZWQgZGF0YSB3aXRob3V0IGFkdmFuY2luZyB0aGUgZmlsZSBwb3NpdGlvbi4KKworICAgICAgICBBbHdheXMgcmV0dXJucyBhdCBsZWFzdCBvbmUgYnl0ZSBvZiBkYXRhLCB1bmxlc3MgYXQgRU9GLgorICAgICAgICBUaGUgZXhhY3QgbnVtYmVyIG9mIGJ5dGVzIHJldHVybmVkIGlzIHVuc3BlY2lmaWVkLgorICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGxfYnVmZmVyKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGIiIgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KKworICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgorICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCisKKyAgICAgICAgSWYgc2l6ZSBpcyBuZWdhdGl2ZSBvciBvbWl0dGVkLCByZWFkIHVudGlsIEVPRiBpcyByZWFjaGVkLgorICAgICAgICBSZXR1cm5zIGInJyBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGF0IEVPRi4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKKyAgICAgICAgICAgIGlmIHNpemUgPT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gYiIiCisgICAgICAgICAgICBlbGlmIHNpemUgPCAwOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkX2FsbCgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkX2Jsb2NrKHNpemUpCisKKyAgICBkZWYgcmVhZDEoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgICIiIlJlYWQgdXAgdG8gc2l6ZSB1bmNvbXByZXNzZWQgYnl0ZXMsIHdoaWxlIHRyeWluZyB0byBhdm9pZAorICAgICAgICBtYWtpbmcgbXVsdGlwbGUgcmVhZHMgZnJvbSB0aGUgdW5kZXJseWluZyBzdHJlYW0uCisKKyAgICAgICAgUmV0dXJucyBiJycgaWYgdGhlIGZpbGUgaXMgYXQgRU9GLgorICAgICAgICAiIiIKKyAgICAgICAgIyBVc3VhbGx5LCByZWFkMSgpIGNhbGxzIF9mcC5yZWFkKCkgYXQgbW9zdCBvbmNlLiBIb3dldmVyLCBzb21ldGltZXMKKyAgICAgICAgIyB0aGlzIGRvZXMgbm90IGdpdmUgZW5vdWdoIGRhdGEgZm9yIHRoZSBkZWNvbXByZXNzb3IgdG8gbWFrZSBwcm9ncmVzcy4KKyAgICAgICAgIyBJbiB0aGlzIGNhc2Ugd2UgbWFrZSBtdWx0aXBsZSByZWFkcywgdG8gYXZvaWQgcmV0dXJuaW5nIGIiIi4KKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICAgICAgaWYgKHNpemUgPT0gMCBvcgorICAgICAgICAgICAgICAgICMgT25seSBjYWxsIF9maWxsX2J1ZmZlcigpIGlmIHRoZSBidWZmZXIgaXMgYWN0dWFsbHkgZW1wdHkuCisgICAgICAgICAgICAgICAgIyBUaGlzIGdpdmVzIGEgc2lnbmlmaWNhbnQgc3BlZWR1cCBpZiAqc2l6ZSogaXMgc21hbGwuCisgICAgICAgICAgICAgICAgKHNlbGYuX2J1ZmZlcl9vZmZzZXQgPT0gbGVuKHNlbGYuX2J1ZmZlcikgYW5kIG5vdCBzZWxmLl9maWxsX2J1ZmZlcigpKSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGIiIgorICAgICAgICAgICAgaWYgc2l6ZSA+IDA6CisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgKyBzaXplXQorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldDpdCisgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCisgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKKyAgICAgICAgICAgIHNlbGYuX3BvcyArPSBsZW4oZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBkYXRhCisKKyAgICBkZWYgcmVhZGludG8oc2VsZiwgYik6CisgICAgICAgICIiIlJlYWQgdXAgdG8gbGVuKGIpIGJ5dGVzIGludG8gYi4KKworICAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZCAoMCBmb3IgRU9GKS4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkaW50byhzZWxmLCBiKQorCisgICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9LTEpOgorICAgICAgICAiIiJSZWFkIGEgbGluZSBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgZnJvbSB0aGUgZmlsZS4KKworICAgICAgICBUaGUgdGVybWluYXRpbmcgbmV3bGluZSAoaWYgcHJlc2VudCkgaXMgcmV0YWluZWQuIElmIHNpemUgaXMKKyAgICAgICAgbm9uLW5lZ2F0aXZlLCBubyBtb3JlIHRoYW4gc2l6ZSBieXRlcyB3aWxsIGJlIHJlYWQgKGluIHdoaWNoCisgICAgICAgIGNhc2UgdGhlIGxpbmUgbWF5IGJlIGluY29tcGxldGUpLiBSZXR1cm5zIGInJyBpZiBhbHJlYWR5IGF0IEVPRi4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNpemUsIGludCk6CisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzaXplLCAiX19pbmRleF9fIik6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJJbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkIikKKyAgICAgICAgICAgIHNpemUgPSBzaXplLl9faW5kZXhfXygpCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKKyAgICAgICAgICAgICMgU2hvcnRjdXQgZm9yIHRoZSBjb21tb24gY2FzZSAtIHRoZSB3aG9sZSBsaW5lIGlzIGluIHRoZSBidWZmZXIuCisgICAgICAgICAgICBpZiBzaXplIDwgMDoKKyAgICAgICAgICAgICAgICBlbmQgPSBzZWxmLl9idWZmZXIuZmluZChiIlxuIiwgc2VsZi5fYnVmZmVyX29mZnNldCkgKyAxCisgICAgICAgICAgICAgICAgaWYgZW5kID4gMDoKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDogZW5kXQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gZW5kCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcyArPSBsZW4obGluZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKKyAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkbGluZShzZWxmLCBzaXplKQorCisgICAgZGVmIHJlYWRsaW5lcyhzZWxmLCBzaXplPS0xKToKKyAgICAgICAgIiIiUmVhZCBhIGxpc3Qgb2YgbGluZXMgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCisKKyAgICAgICAgc2l6ZSBjYW4gYmUgc3BlY2lmaWVkIHRvIGNvbnRyb2wgdGhlIG51bWJlciBvZiBsaW5lcyByZWFkOiBubworICAgICAgICBmdXJ0aGVyIGxpbmVzIHdpbGwgYmUgcmVhZCBvbmNlIHRoZSB0b3RhbCBzaXplIG9mIHRoZSBsaW5lcyByZWFkCisgICAgICAgIHNvIGZhciBlcXVhbHMgb3IgZXhjZWVkcyBzaXplLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2l6ZSwgaW50KToKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNpemUsICJfX2luZGV4X18iKToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkludGVnZXIgYXJndW1lbnQgZXhwZWN0ZWQiKQorICAgICAgICAgICAgc2l6ZSA9IHNpemUuX19pbmRleF9fKCkKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgcmV0dXJuIGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRsaW5lcyhzZWxmLCBzaXplKQorCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgorICAgICAgICAiIiJXcml0ZSBhIGJ5dGUgc3RyaW5nIHRvIHRoZSBmaWxlLgorCisgICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgd3JpdHRlbiwgd2hpY2ggaXMKKyAgICAgICAgYWx3YXlzIGxlbihkYXRhKS4gTm90ZSB0aGF0IGR1ZSB0byBidWZmZXJpbmcsIHRoZSBmaWxlIG9uIGRpc2sKKyAgICAgICAgbWF5IG5vdCByZWZsZWN0IHRoZSBkYXRhIHdyaXR0ZW4gdW50aWwgY2xvc2UoKSBpcyBjYWxsZWQuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9jaGVja19jYW5fd3JpdGUoKQorICAgICAgICAgICAgY29tcHJlc3NlZCA9IHNlbGYuX2NvbXByZXNzb3IuY29tcHJlc3MoZGF0YSkKKyAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKGNvbXByZXNzZWQpCisgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICByZXR1cm4gbGVuKGRhdGEpCisKKyAgICBkZWYgd3JpdGVsaW5lcyhzZWxmLCBzZXEpOgorICAgICAgICAiIiJXcml0ZSBhIHNlcXVlbmNlIG9mIGJ5dGUgc3RyaW5ncyB0byB0aGUgZmlsZS4KKworICAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIHdyaXR0ZW4uCisgICAgICAgIHNlcSBjYW4gYmUgYW55IGl0ZXJhYmxlIHlpZWxkaW5nIGJ5dGUgc3RyaW5ncy4KKworICAgICAgICBMaW5lIHNlcGFyYXRvcnMgYXJlIG5vdCBhZGRlZCBiZXR3ZWVuIHRoZSB3cml0dGVuIGJ5dGUgc3RyaW5ncy4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS53cml0ZWxpbmVzKHNlbGYsIHNlcSkKKworICAgICMgUmV3aW5kIHRoZSBmaWxlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRhdGEgc3RyZWFtLgorICAgIGRlZiBfcmV3aW5kKHNlbGYpOgorICAgICAgICBzZWxmLl9mcC5zZWVrKDAsIDApCisgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9SRUFECisgICAgICAgIHNlbGYuX3BvcyA9IDAKKyAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gQloyRGVjb21wcmVzc29yKCkKKyAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCisgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCisKKyAgICBkZWYgc2VlayhzZWxmLCBvZmZzZXQsIHdoZW5jZT0wKToKKyAgICAgICAgIiIiQ2hhbmdlIHRoZSBmaWxlIHBvc2l0aW9uLgorCisgICAgICAgIFRoZSBuZXcgcG9zaXRpb24gaXMgc3BlY2lmaWVkIGJ5IG9mZnNldCwgcmVsYXRpdmUgdG8gdGhlCisgICAgICAgIHBvc2l0aW9uIGluZGljYXRlZCBieSB3aGVuY2UuIFZhbHVlcyBmb3Igd2hlbmNlIGFyZToKKworICAgICAgICAgICAgMDogc3RhcnQgb2Ygc3RyZWFtIChkZWZhdWx0KTsgb2Zmc2V0IG11c3Qgbm90IGJlIG5lZ2F0aXZlCisgICAgICAgICAgICAxOiBjdXJyZW50IHN0cmVhbSBwb3NpdGlvbgorICAgICAgICAgICAgMjogZW5kIG9mIHN0cmVhbTsgb2Zmc2V0IG11c3Qgbm90IGJlIHBvc2l0aXZlCisKKyAgICAgICAgUmV0dXJucyB0aGUgbmV3IGZpbGUgcG9zaXRpb24uCisKKyAgICAgICAgTm90ZSB0aGF0IHNlZWtpbmcgaXMgZW11bGF0ZWQsIHNvIGRlcGVuZGluZyBvbiB0aGUgcGFyYW1ldGVycywKKyAgICAgICAgdGhpcyBvcGVyYXRpb24gbWF5IGJlIGV4dHJlbWVseSBzbG93LgorICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3NlZWsoKQorCisgICAgICAgICAgICAjIFJlY2FsY3VsYXRlIG9mZnNldCBhcyBhbiBhYnNvbHV0ZSBmaWxlIHBvc2l0aW9uLgorICAgICAgICAgICAgaWYgd2hlbmNlID09IDA6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxpZiB3aGVuY2UgPT0gMToKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBzZWxmLl9wb3MgKyBvZmZzZXQKKyAgICAgICAgICAgIGVsaWYgd2hlbmNlID09IDI6CisgICAgICAgICAgICAgICAgIyBTZWVraW5nIHJlbGF0aXZlIHRvIEVPRiAtIHdlIG5lZWQgdG8ga25vdyB0aGUgZmlsZSdzIHNpemUuCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fc2l6ZSA8IDA6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfYWxsKHJldHVybl9kYXRhPUZhbHNlKQorICAgICAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3NpemUgKyBvZmZzZXQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCB2YWx1ZSBmb3Igd2hlbmNlOiB7fSIuZm9ybWF0KHdoZW5jZSkpCisKKyAgICAgICAgICAgICMgTWFrZSBpdCBzbyB0aGF0IG9mZnNldCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgZm9yd2FyZC4KKyAgICAgICAgICAgIGlmIG9mZnNldCA8IHNlbGYuX3BvczoKKyAgICAgICAgICAgICAgICBzZWxmLl9yZXdpbmQoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvZmZzZXQgLT0gc2VsZi5fcG9zCisKKyAgICAgICAgICAgICMgUmVhZCBhbmQgZGlzY2FyZCBkYXRhIHVudGlsIHdlIHJlYWNoIHRoZSBkZXNpcmVkIHBvc2l0aW9uLgorICAgICAgICAgICAgc2VsZi5fcmVhZF9ibG9jayhvZmZzZXQsIHJldHVybl9kYXRhPUZhbHNlKQorCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcG9zCisKKyAgICBkZWYgdGVsbChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24uIiIiCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcworCisKK2RlZiBvcGVuKGZpbGVuYW1lLCBtb2RlPSJyYiIsIGNvbXByZXNzbGV2ZWw9OSwKKyAgICAgICAgIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUpOgorICAgICIiIk9wZW4gYSBiemlwMi1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG9yIHRleHQgbW9kZS4KKworICAgIFRoZSBmaWxlbmFtZSBhcmd1bWVudCBjYW4gYmUgYW4gYWN0dWFsIGZpbGVuYW1lIChhIHN0ciBvciBieXRlcyBvYmplY3QpLCBvcgorICAgIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KKworICAgIFRoZSBtb2RlIGFyZ3VtZW50IGNhbiBiZSAiciIsICJyYiIsICJ3IiwgIndiIiwgImEiIG9yICJhYiIgZm9yIGJpbmFyeSBtb2RlLAorICAgIG9yICJydCIsICJ3dCIgb3IgImF0IiBmb3IgdGV4dCBtb2RlLiBUaGUgZGVmYXVsdCBtb2RlIGlzICJyYiIsIGFuZCB0aGUKKyAgICBkZWZhdWx0IGNvbXByZXNzbGV2ZWwgaXMgOS4KKworICAgIEZvciBiaW5hcnkgbW9kZSwgdGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIHRoZSBCWjJGaWxlIGNvbnN0cnVjdG9yOgorICAgIEJaMkZpbGUoZmlsZW5hbWUsIG1vZGUsIGNvbXByZXNzbGV2ZWwpLiBJbiB0aGlzIGNhc2UsIHRoZSBlbmNvZGluZywgZXJyb3JzCisgICAgYW5kIG5ld2xpbmUgYXJndW1lbnRzIG11c3Qgbm90IGJlIHByb3ZpZGVkLgorCisgICAgRm9yIHRleHQgbW9kZSwgYSBCWjJGaWxlIG9iamVjdCBpcyBjcmVhdGVkLCBhbmQgd3JhcHBlZCBpbiBhbgorICAgIGlvLlRleHRJT1dyYXBwZXIgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGVuY29kaW5nLCBlcnJvciBoYW5kbGluZworICAgIGJlaGF2aW9yLCBhbmQgbGluZSBlbmRpbmcocykuCisKKyAgICAiIiIKKyAgICBpZiAidCIgaW4gbW9kZToKKyAgICAgICAgaWYgImIiIGluIG1vZGU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIG1vZGU6ICVyIiAlIChtb2RlLCkpCisgICAgZWxzZToKKyAgICAgICAgaWYgZW5jb2RpbmcgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnZW5jb2RpbmcnIG5vdCBzdXBwb3J0ZWQgaW4gYmluYXJ5IG1vZGUiKQorICAgICAgICBpZiBlcnJvcnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnZXJyb3JzJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKKyAgICAgICAgaWYgbmV3bGluZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFyZ3VtZW50ICduZXdsaW5lJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKKworICAgIGJ6X21vZGUgPSBtb2RlLnJlcGxhY2UoInQiLCAiIikKKyAgICBiaW5hcnlfZmlsZSA9IEJaMkZpbGUoZmlsZW5hbWUsIGJ6X21vZGUsIGNvbXByZXNzbGV2ZWw9Y29tcHJlc3NsZXZlbCkKKworICAgIGlmICJ0IiBpbiBtb2RlOgorICAgICAgICByZXR1cm4gaW8uVGV4dElPV3JhcHBlcihiaW5hcnlfZmlsZSwgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gYmluYXJ5X2ZpbGUKKworCitkZWYgY29tcHJlc3MoZGF0YSwgY29tcHJlc3NsZXZlbD05KToKKyAgICAiIiJDb21wcmVzcyBhIGJsb2NrIG9mIGRhdGEuCisKKyAgICBjb21wcmVzc2xldmVsLCBpZiBnaXZlbiwgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDEgYW5kIDkuCisKKyAgICBGb3IgaW5jcmVtZW50YWwgY29tcHJlc3Npb24sIHVzZSBhIEJaMkNvbXByZXNzb3Igb2JqZWN0IGluc3RlYWQuCisgICAgIiIiCisgICAgY29tcCA9IEJaMkNvbXByZXNzb3IoY29tcHJlc3NsZXZlbCkKKyAgICByZXR1cm4gY29tcC5jb21wcmVzcyhkYXRhKSArIGNvbXAuZmx1c2goKQorCisKK2RlZiBkZWNvbXByZXNzKGRhdGEpOgorICAgICIiIkRlY29tcHJlc3MgYSBibG9jayBvZiBkYXRhLgorCisgICAgRm9yIGluY3JlbWVudGFsIGRlY29tcHJlc3Npb24sIHVzZSBhIEJaMkRlY29tcHJlc3NvciBvYmplY3QgaW5zdGVhZC4KKyAgICAiIiIKKyAgICBpZiBsZW4oZGF0YSkgPT0gMDoKKyAgICAgICAgcmV0dXJuIGIiIgorCisgICAgcmVzdWx0cyA9IFtdCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgZGVjb21wID0gQloyRGVjb21wcmVzc29yKCkKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQoZGVjb21wLmRlY29tcHJlc3MoZGF0YSkpCisgICAgICAgIGlmIG5vdCBkZWNvbXAuZW9mOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ29tcHJlc3NlZCBkYXRhIGVuZGVkIGJlZm9yZSB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kLW9mLXN0cmVhbSBtYXJrZXIgd2FzIHJlYWNoZWQiKQorICAgICAgICBpZiBub3QgZGVjb21wLnVudXNlZF9kYXRhOgorICAgICAgICAgICAgcmV0dXJuIGIiIi5qb2luKHJlc3VsdHMpCisgICAgICAgICMgVGhlcmUgaXMgdW51c2VkIGRhdGEgbGVmdCBvdmVyLiBQcm9jZWVkIHRvIG5leHQgc3RyZWFtLgorICAgICAgICBkYXRhID0gZGVjb21wLnVudXNlZF9kYXRhCmRpZmYgLS1naXQgYS9MaWIvY2dpLnB5IGIvTGliL2NnaS5weQppbmRleCBhZDZiMWY4Li45NmIxZjU3IDEwMDc1NQotLS0gYS9MaWIvY2dpLnB5CisrKyBiL0xpYi9jZ2kucHkKQEAgLTc2LDcgKzc2LDcgQEAKICAgICBzZW5kIGFuIGVycm9yIG1lc3NhZ2UpLgogCiAgICAgIiIiCi0gICAgZ2xvYmFsIGxvZ2ZwLCBsb2cKKyAgICBnbG9iYWwgbG9nLCBsb2dmaWxlLCBsb2dmcAogICAgIGlmIGxvZ2ZpbGUgYW5kIG5vdCBsb2dmcDoKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbG9nZnAgPSBvcGVuKGxvZ2ZpbGUsICJhIikKQEAgLTk2LDYgKzk2LDE1IEBACiAgICAgIiIiRHVtbXkgZnVuY3Rpb24sIGFzc2lnbmVkIHRvIGxvZyB3aGVuIGxvZ2dpbmcgaXMgZGlzYWJsZWQuIiIiCiAgICAgcGFzcwogCitkZWYgY2xvc2Vsb2coKToKKyAgICAiIiJDbG9zZSB0aGUgbG9nIGZpbGUuIiIiCisgICAgZ2xvYmFsIGxvZywgbG9nZmlsZSwgbG9nZnAKKyAgICBsb2dmaWxlID0gJycKKyAgICBpZiBsb2dmcDoKKyAgICAgICAgbG9nZnAuY2xvc2UoKQorICAgICAgICBsb2dmcCA9IE5vbmUKKyAgICBsb2cgPSBpbml0bG9nCisKIGxvZyA9IGluaXRsb2cgICAgICAgICAgICMgVGhlIGN1cnJlbnQgbG9nZ2luZyBmdW5jdGlvbgogCiAKQEAgLTEwMDMsNyArMTAxMiw3IEBACiBkZWYgZXNjYXBlKHMsIHF1b3RlPU5vbmUpOgogICAgICIiIkRlcHJlY2F0ZWQgQVBJLiIiIgogICAgIHdhcm4oImNnaS5lc2NhcGUgaXMgZGVwcmVjYXRlZCwgdXNlIGh0bWwuZXNjYXBlIGluc3RlYWQiLAotICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQorICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgcyA9IHMucmVwbGFjZSgiJiIsICImYW1wOyIpICMgTXVzdCBiZSBkb25lIGZpcnN0IQogICAgIHMgPSBzLnJlcGxhY2UoIjwiLCAiJmx0OyIpCiAgICAgcyA9IHMucmVwbGFjZSgiPiIsICImZ3Q7IikKZGlmZiAtLWdpdCBhL0xpYi9jZ2l0Yi5weSBiL0xpYi9jZ2l0Yi5weQppbmRleCA2ZGE0MGU4Li42ZWI1MmU3IDEwMDY0NAotLS0gYS9MaWIvY2dpdGIucHkKKysrIGIvTGliL2NnaXRiLnB5CkBAIC0zMSw3ICszMSw2IEBACiBpbXBvcnQgdGltZQogaW1wb3J0IHRva2VuaXplCiBpbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgdHlwZXMKIAogZGVmIHJlc2V0KCk6CiAgICAgIiIiUmV0dXJuIGEgc3RyaW5nIHRoYXQgcmVzZXRzIHRoZSBDR0kgYW5kIGJyb3dzZXIgdG8gYSBrbm93biBzdGF0ZS4iIiIKZGlmZiAtLWdpdCBhL0xpYi9jb2RlLnB5IGIvTGliL2NvZGUucHkKaW5kZXggNjA1YWVkZS4uOTAyMGFhYiAxMDA2NDQKLS0tIGEvTGliL2NvZGUucHkKKysrIGIvTGliL2NvZGUucHkKQEAgLTEwNSw5ICsxMDUsMTAgQEAKICAgICAgICAgVGhlIG91dHB1dCBpcyB3cml0dGVuIGJ5IHNlbGYud3JpdGUoKSwgYmVsb3cuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHR5cGUsIHZhbHVlLCBzeXMubGFzdF90cmFjZWJhY2sgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICB0eXBlLCB2YWx1ZSwgdGIgPSBzeXMuZXhjX2luZm8oKQogICAgICAgICBzeXMubGFzdF90eXBlID0gdHlwZQogICAgICAgICBzeXMubGFzdF92YWx1ZSA9IHZhbHVlCisgICAgICAgIHN5cy5sYXN0X3RyYWNlYmFjayA9IHRiCiAgICAgICAgIGlmIGZpbGVuYW1lIGFuZCB0eXBlIGlzIFN5bnRheEVycm9yOgogICAgICAgICAgICAgIyBXb3JrIGhhcmQgdG8gc3R1ZmYgdGhlIGNvcnJlY3QgZmlsZW5hbWUgaW4gdGhlIGV4Y2VwdGlvbgogICAgICAgICAgICAgdHJ5OgpAQCAtMTE5LDggKzEyMCwxMyBAQAogICAgICAgICAgICAgICAgICMgU3R1ZmYgaW4gdGhlIHJpZ2h0IGZpbGVuYW1lCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBTeW50YXhFcnJvcihtc2csIChmaWxlbmFtZSwgbGluZW5vLCBvZmZzZXQsIGxpbmUpKQogICAgICAgICAgICAgICAgIHN5cy5sYXN0X3ZhbHVlID0gdmFsdWUKLSAgICAgICAgbGluZXMgPSB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KHR5cGUsIHZhbHVlKQotICAgICAgICBzZWxmLndyaXRlKCcnLmpvaW4obGluZXMpKQorICAgICAgICBpZiBzeXMuZXhjZXB0aG9vayBpcyBzeXMuX19leGNlcHRob29rX186CisgICAgICAgICAgICBsaW5lcyA9IHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkodHlwZSwgdmFsdWUpCisgICAgICAgICAgICBzZWxmLndyaXRlKCcnLmpvaW4obGluZXMpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBJZiBzb21lb25lIGhhcyBzZXQgc3lzLmV4Y2VwdGhvb2ssIHdlIGxldCB0aGF0IHRha2UgcHJlY2VkZW5jZQorICAgICAgICAgICAgIyBvdmVyIHNlbGYud3JpdGUKKyAgICAgICAgICAgIHN5cy5leGNlcHRob29rKHR5cGUsIHZhbHVlLCB0YikKIAogICAgIGRlZiBzaG93dHJhY2ViYWNrKHNlbGYpOgogICAgICAgICAiIiJEaXNwbGF5IHRoZSBleGNlcHRpb24gdGhhdCBqdXN0IG9jY3VycmVkLgpAQCAtMTQzLDcgKzE0OSwxMiBAQAogICAgICAgICAgICAgbGluZXMuZXh0ZW5kKHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkodHlwZSwgdmFsdWUpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgdGJsaXN0ID0gdGIgPSBOb25lCi0gICAgICAgIHNlbGYud3JpdGUoJycuam9pbihsaW5lcykpCisgICAgICAgIGlmIHN5cy5leGNlcHRob29rIGlzIHN5cy5fX2V4Y2VwdGhvb2tfXzoKKyAgICAgICAgICAgIHNlbGYud3JpdGUoJycuam9pbihsaW5lcykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIElmIHNvbWVvbmUgaGFzIHNldCBzeXMuZXhjZXB0aG9vaywgd2UgbGV0IHRoYXQgdGFrZSBwcmVjZWRlbmNlCisgICAgICAgICAgICAjIG92ZXIgc2VsZi53cml0ZQorICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2sodHlwZSwgdmFsdWUsIHRiKQogCiAgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgogICAgICAgICAiIiJXcml0ZSBhIHN0cmluZy4KZGlmZiAtLWdpdCBhL0xpYi9jb2RlY3MucHkgYi9MaWIvY29kZWNzLnB5CmluZGV4IGIxNTBkNjQuLjQ4ZDRjOWMgMTAwNjQ0Ci0tLSBhL0xpYi9jb2RlY3MucHkKKysrIGIvTGliL2NvZGVjcy5weQpAQCAtNDYxLDcgKzQ2MSw3IEBACiAKICAgICAgICAgIyByZWFkIHVudGlsIHdlIGdldCB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGNoYXJhY3RlcnMgKGlmIGF2YWlsYWJsZSkKICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICMgY2FuIHRoZSByZXF1ZXN0IGNhbiBiZSBzYXRpc2ZpZWQgZnJvbSB0aGUgY2hhcmFjdGVyIGJ1ZmZlcj8KKyAgICAgICAgICAgICMgY2FuIHRoZSByZXF1ZXN0IGJlIHNhdGlzZmllZCBmcm9tIHRoZSBjaGFyYWN0ZXIgYnVmZmVyPwogICAgICAgICAgICAgaWYgY2hhcnMgPCAwOgogICAgICAgICAgICAgICAgIGlmIHNpemUgPCAwOgogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmNoYXJidWZmZXI6CkBAIC00ODQsNyArNDg0LDcgQEAKICAgICAgICAgICAgICAgICBpZiBmaXJzdGxpbmU6CiAgICAgICAgICAgICAgICAgICAgIG5ld2NoYXJzLCBkZWNvZGVkYnl0ZXMgPSBcCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRlY29kZShkYXRhWzpleGMuc3RhcnRdLCBzZWxmLmVycm9ycykKLSAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBuZXdjaGFycy5zcGxpdGxpbmVzKFRydWUpCisgICAgICAgICAgICAgICAgICAgIGxpbmVzID0gbmV3Y2hhcnMuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICAgICAgICAgICAgICBpZiBsZW4obGluZXMpPD0xOgogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtNTI2LDcgKzUyNiw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5jaGFyYnVmZmVyID0gc2VsZi5saW5lYnVmZmVyWzBdCiAgICAgICAgICAgICAgICAgc2VsZi5saW5lYnVmZmVyID0gTm9uZQogICAgICAgICAgICAgaWYgbm90IGtlZXBlbmRzOgotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0bGluZXMoRmFsc2UpWzBdCisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXRsaW5lcyhrZWVwZW5kcz1GYWxzZSlbMF0KICAgICAgICAgICAgIHJldHVybiBsaW5lCiAKICAgICAgICAgcmVhZHNpemUgPSBzaXplIG9yIDcyCkBAIC01NDMsNyArNTQzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgZGF0YSArPSBzZWxmLnJlYWQoc2l6ZT0xLCBjaGFycz0xKQogCiAgICAgICAgICAgICBsaW5lICs9IGRhdGEKLSAgICAgICAgICAgIGxpbmVzID0gbGluZS5zcGxpdGxpbmVzKFRydWUpCisgICAgICAgICAgICBsaW5lcyA9IGxpbmUuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICAgICAgaWYgbGluZXM6CiAgICAgICAgICAgICAgICAgaWYgbGVuKGxpbmVzKSA+IDE6CiAgICAgICAgICAgICAgICAgICAgICMgTW9yZSB0aGFuIG9uZSBsaW5lIHJlc3VsdDsgdGhlIGZpcnN0IGxpbmUgaXMgYSBmdWxsIGxpbmUKQEAgLTU1OSwxMCArNTU5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAjIG9ubHkgb25lIHJlbWFpbmluZyBsaW5lLCBwdXQgaXQgYmFjayBpbnRvIGNoYXJidWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2hhcmJ1ZmZlciA9IGxpbmVzWzBdICsgc2VsZi5jaGFyYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBrZWVwZW5kczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0bGluZXMoRmFsc2UpWzBdCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdGxpbmVzKGtlZXBlbmRzPUZhbHNlKVswXQogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIGxpbmUwd2l0aGVuZCA9IGxpbmVzWzBdCi0gICAgICAgICAgICAgICAgbGluZTB3aXRob3V0ZW5kID0gbGluZXNbMF0uc3BsaXRsaW5lcyhGYWxzZSlbMF0KKyAgICAgICAgICAgICAgICBsaW5lMHdpdGhvdXRlbmQgPSBsaW5lc1swXS5zcGxpdGxpbmVzKGtlZXBlbmRzPUZhbHNlKVswXQogICAgICAgICAgICAgICAgIGlmIGxpbmUwd2l0aGVuZCAhPSBsaW5lMHdpdGhvdXRlbmQ6ICMgV2UgcmVhbGx5IGhhdmUgYSBsaW5lIGVuZAogICAgICAgICAgICAgICAgICAgICAjIFB1dCB0aGUgcmVzdCBiYWNrIHRvZ2V0aGVyIGFuZCBrZWVwIGl0IHVudGlsIHRoZSBuZXh0IGNhbGwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGFyYnVmZmVyID0gc2VsZi5fZW1wdHlfY2hhcmJ1ZmZlci5qb2luKGxpbmVzWzE6XSkgKyBcCkBAIC01NzUsNyArNTc1LDcgQEAKICAgICAgICAgICAgICMgd2UgZGlkbid0IGdldCBhbnl0aGluZyBvciB0aGlzIHdhcyBvdXIgb25seSB0cnkKICAgICAgICAgICAgIGlmIG5vdCBkYXRhIG9yIHNpemUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgaWYgbGluZSBhbmQgbm90IGtlZXBlbmRzOgotICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdGxpbmVzKEZhbHNlKVswXQorICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdGxpbmVzKGtlZXBlbmRzPUZhbHNlKVswXQogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBpZiByZWFkc2l6ZSA8IDgwMDA6CiAgICAgICAgICAgICAgICAgcmVhZHNpemUgKj0gMgpAQCAtODAzLDcgKzgwMyw3IEBACiAKICAgICAgICAgZGF0YSA9IHNlbGYucmVhZGVyLnJlYWQoKQogICAgICAgICBkYXRhLCBieXRlc2VuY29kZWQgPSBzZWxmLmVuY29kZShkYXRhLCBzZWxmLmVycm9ycykKLSAgICAgICAgcmV0dXJuIGRhdGEuc3BsaXRsaW5lcygxKQorICAgICAgICByZXR1cm4gZGF0YS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAKICAgICBkZWYgX19uZXh0X18oc2VsZik6CiAKQEAgLTEwNDIsMTAgKzEwNDIsNyBAQAogICAgICAgICBtYXBwZWQgdG8gdGhlbXNlbHZlcy4KIAogICAgICIiIgotICAgIHJlcyA9IHt9Ci0gICAgZm9yIGkgaW4gcm5nOgotICAgICAgICByZXNbaV09aQotICAgIHJldHVybiByZXMKKyAgICByZXR1cm4ge2k6aSBmb3IgaSBpbiBybmd9CiAKIGRlZiBtYWtlX2VuY29kaW5nX21hcChkZWNvZGluZ19tYXApOgogCmRpZmYgLS1naXQgYS9MaWIvY29sbGVjdGlvbnMucHkgYi9MaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkKc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gTGliL2NvbGxlY3Rpb25zLnB5CnJlbmFtZSB0byBMaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkKaW5kZXggZWIyMDI0My4uMmRjYzM5NSAxMDA2NDQKLS0tIGEvTGliL2NvbGxlY3Rpb25zLnB5CisrKyBiL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQpAQCAtMSwxMyArMSwxNCBAQAogX19hbGxfXyA9IFsnZGVxdWUnLCAnZGVmYXVsdGRpY3QnLCAnbmFtZWR0dXBsZScsICdVc2VyRGljdCcsICdVc2VyTGlzdCcsCi0gICAgICAgICAgICAnVXNlclN0cmluZycsICdDb3VudGVyJywgJ09yZGVyZWREaWN0J10KLSMgRm9yIGJvb3RzdHJhcHBpbmcgcmVhc29ucywgdGhlIGNvbGxlY3Rpb24gQUJDcyBhcmUgZGVmaW5lZCBpbiBfYWJjb2xsLnB5LgotIyBUaGV5IHNob3VsZCBob3dldmVyIGJlIGNvbnNpZGVyZWQgYW4gaW50ZWdyYWwgcGFydCBvZiBjb2xsZWN0aW9ucy5weS4KLWZyb20gX2FiY29sbCBpbXBvcnQgKgotaW1wb3J0IF9hYmNvbGwKLV9fYWxsX18gKz0gX2FiY29sbC5fX2FsbF9fCisgICAgICAgICAgICAnVXNlclN0cmluZycsICdDb3VudGVyJywgJ09yZGVyZWREaWN0JywgJ0NoYWluTWFwJ10KKworIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIGNvbnRpbnVlIHRvIG1ha2UgdGhlIGNvbGxlY3Rpb25zIEFCQ3MKKyMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIGNvbGxlY3Rpb25zIG1vZHVsZS4KK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCAqCitpbXBvcnQgY29sbGVjdGlvbnMuYWJjCitfX2FsbF9fICs9IGNvbGxlY3Rpb25zLmFiYy5fX2FsbF9fCiAKIGZyb20gX2NvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZSwgZGVmYXVsdGRpY3QKLWZyb20gb3BlcmF0b3IgaW1wb3J0IGl0ZW1nZXR0ZXIgYXMgX2l0ZW1nZXR0ZXIKK2Zyb20gb3BlcmF0b3IgaW1wb3J0IGl0ZW1nZXR0ZXIgYXMgX2l0ZW1nZXR0ZXIsIGVxIGFzIF9lcQogZnJvbSBrZXl3b3JkIGltcG9ydCBpc2tleXdvcmQgYXMgX2lza2V5d29yZAogaW1wb3J0IHN5cyBhcyBfc3lzCiBpbXBvcnQgaGVhcHEgYXMgX2hlYXBxCkBAIC0yMjgsNyArMjI5LDcgQEAKICAgICAgICAgJycnCiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIE9yZGVyZWREaWN0KToKICAgICAgICAgICAgIHJldHVybiBsZW4oc2VsZik9PWxlbihvdGhlcikgYW5kIFwKLSAgICAgICAgICAgICAgICAgICBhbGwocD09cSBmb3IgcCwgcSBpbiB6aXAoc2VsZi5pdGVtcygpLCBvdGhlci5pdGVtcygpKSkKKyAgICAgICAgICAgICAgICAgICBhbGwobWFwKF9lcSwgc2VsZi5pdGVtcygpLCBvdGhlci5pdGVtcygpKSkKICAgICAgICAgcmV0dXJuIGRpY3QuX19lcV9fKHNlbGYsIG90aGVyKQogCiAKQEAgLTMxNCwzMyArMzE1LDMyIEBACiAKICAgICAiIiIKIAotICAgICMgUGFyc2UgYW5kIHZhbGlkYXRlIHRoZSBmaWVsZCBuYW1lcy4gIFZhbGlkYXRpb24gc2VydmVzIHR3byBwdXJwb3NlcywKLSAgICAjIGdlbmVyYXRpbmcgaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZXMgYW5kIHByZXZlbnRpbmcgdGVtcGxhdGUgaW5qZWN0aW9uIGF0dGFja3MuCisgICAgIyBWYWxpZGF0ZSB0aGUgZmllbGQgbmFtZXMuICBBdCB0aGUgdXNlcidzIG9wdGlvbiwgZWl0aGVyIGdlbmVyYXRlIGFuIGVycm9yCisgICAgIyBtZXNzYWdlIG9yIGF1dG9tYXRpY2FsbHkgcmVwbGFjZSB0aGUgZmllbGQgbmFtZSB3aXRoIGEgdmFsaWQgbmFtZS4KICAgICBpZiBpc2luc3RhbmNlKGZpZWxkX25hbWVzLCBzdHIpOgotICAgICAgICBmaWVsZF9uYW1lcyA9IGZpZWxkX25hbWVzLnJlcGxhY2UoJywnLCAnICcpLnNwbGl0KCkgIyBuYW1lcyBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZSBhbmQvb3IgY29tbWFzCisgICAgICAgIGZpZWxkX25hbWVzID0gZmllbGRfbmFtZXMucmVwbGFjZSgnLCcsICcgJykuc3BsaXQoKQogICAgIGZpZWxkX25hbWVzID0gbGlzdChtYXAoc3RyLCBmaWVsZF9uYW1lcykpCiAgICAgaWYgcmVuYW1lOgogICAgICAgICBzZWVuID0gc2V0KCkKICAgICAgICAgZm9yIGluZGV4LCBuYW1lIGluIGVudW1lcmF0ZShmaWVsZF9uYW1lcyk6Ci0gICAgICAgICAgICBpZiAobm90IGFsbChjLmlzYWxudW0oKSBvciBjPT0nXycgZm9yIGMgaW4gbmFtZSkKKyAgICAgICAgICAgIGlmIChub3QgbmFtZS5pc2lkZW50aWZpZXIoKQogICAgICAgICAgICAgICAgIG9yIF9pc2tleXdvcmQobmFtZSkKLSAgICAgICAgICAgICAgICBvciBub3QgbmFtZQotICAgICAgICAgICAgICAgIG9yIG5hbWVbMF0uaXNkaWdpdCgpCiAgICAgICAgICAgICAgICAgb3IgbmFtZS5zdGFydHN3aXRoKCdfJykKICAgICAgICAgICAgICAgICBvciBuYW1lIGluIHNlZW4pOgogICAgICAgICAgICAgICAgIGZpZWxkX25hbWVzW2luZGV4XSA9ICdfJWQnICUgaW5kZXgKICAgICAgICAgICAgIHNlZW4uYWRkKG5hbWUpCiAgICAgZm9yIG5hbWUgaW4gW3R5cGVuYW1lXSArIGZpZWxkX25hbWVzOgotICAgICAgICBpZiBub3QgYWxsKGMuaXNhbG51bSgpIG9yIGM9PSdfJyBmb3IgYyBpbiBuYW1lKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIGNhbiBvbmx5IGNvbnRhaW4gYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIHVuZGVyc2NvcmVzOiAlcicgJSBuYW1lKQorICAgICAgICBpZiBub3QgbmFtZS5pc2lkZW50aWZpZXIoKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIG11c3QgYmUgdmFsaWQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWRlbnRpZmllcnM6ICVyJyAlIG5hbWUpCiAgICAgICAgIGlmIF9pc2tleXdvcmQobmFtZSk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUeXBlIG5hbWVzIGFuZCBmaWVsZCBuYW1lcyBjYW5ub3QgYmUgYSBrZXl3b3JkOiAlcicgJSBuYW1lKQotICAgICAgICBpZiBuYW1lWzBdLmlzZGlnaXQoKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIGNhbm5vdCBzdGFydCB3aXRoIGEgbnVtYmVyOiAlcicgJSBuYW1lKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVHlwZSBuYW1lcyBhbmQgZmllbGQgbmFtZXMgY2Fubm90IGJlIGEgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna2V5d29yZDogJXInICUgbmFtZSkKICAgICBzZWVuID0gc2V0KCkKICAgICBmb3IgbmFtZSBpbiBmaWVsZF9uYW1lczoKICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdfJykgYW5kIG5vdCByZW5hbWU6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdGaWVsZCBuYW1lcyBjYW5ub3Qgc3RhcnQgd2l0aCBhbiB1bmRlcnNjb3JlOiAlcicgJSBuYW1lKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRmllbGQgbmFtZXMgY2Fubm90IHN0YXJ0IHdpdGggYW4gdW5kZXJzY29yZTogJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJXInICUgbmFtZSkKICAgICAgICAgaWYgbmFtZSBpbiBzZWVuOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRW5jb3VudGVyZWQgZHVwbGljYXRlIGZpZWxkIG5hbWU6ICVyJyAlIG5hbWUpCiAgICAgICAgIHNlZW4uYWRkKG5hbWUpCkBAIC0zNTEsMjEgKzM1MSwyMyBAQAogICAgICAgICBmaWVsZF9uYW1lcyA9IHR1cGxlKGZpZWxkX25hbWVzKSwKICAgICAgICAgbnVtX2ZpZWxkcyA9IGxlbihmaWVsZF9uYW1lcyksCiAgICAgICAgIGFyZ19saXN0ID0gcmVwcih0dXBsZShmaWVsZF9uYW1lcykpLnJlcGxhY2UoIiciLCAiIilbMTotMV0sCi0gICAgICAgIHJlcHJfZm10ID0gJywgJy5qb2luKF9yZXByX3RlbXBsYXRlLmZvcm1hdChuYW1lPW5hbWUpIGZvciBuYW1lIGluIGZpZWxkX25hbWVzKSwKKyAgICAgICAgcmVwcl9mbXQgPSAnLCAnLmpvaW4oX3JlcHJfdGVtcGxhdGUuZm9ybWF0KG5hbWU9bmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmllbGRfbmFtZXMpLAogICAgICAgICBmaWVsZF9kZWZzID0gJ1xuJy5qb2luKF9maWVsZF90ZW1wbGF0ZS5mb3JtYXQoaW5kZXg9aW5kZXgsIG5hbWU9bmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5kZXgsIG5hbWUgaW4gZW51bWVyYXRlKGZpZWxkX25hbWVzKSkKICAgICApCiAKLSAgICAjIEV4ZWN1dGUgdGhlIHRlbXBsYXRlIHN0cmluZyBpbiBhIHRlbXBvcmFyeSBuYW1lc3BhY2UgYW5kCi0gICAgIyBzdXBwb3J0IHRyYWNpbmcgdXRpbGl0aWVzIGJ5IHNldHRpbmcgYSB2YWx1ZSBmb3IgZnJhbWUuZl9nbG9iYWxzWydfX25hbWVfXyddCisgICAgIyBFeGVjdXRlIHRoZSB0ZW1wbGF0ZSBzdHJpbmcgaW4gYSB0ZW1wb3JhcnkgbmFtZXNwYWNlIGFuZCBzdXBwb3J0CisgICAgIyB0cmFjaW5nIHV0aWxpdGllcyBieSBzZXR0aW5nIGEgdmFsdWUgZm9yIGZyYW1lLmZfZ2xvYmFsc1snX19uYW1lX18nXQogICAgIG5hbWVzcGFjZSA9IGRpY3QoX19uYW1lX189J25hbWVkdHVwbGVfJXMnICUgdHlwZW5hbWUpCiAgICAgdHJ5OgogICAgICAgICBleGVjKGNsYXNzX2RlZmluaXRpb24sIG5hbWVzcGFjZSkKICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZToKICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IoZS5tc2cgKyAnOlxuXG4nICsgY2xhc3NfZGVmaW5pdGlvbikKICAgICByZXN1bHQgPSBuYW1lc3BhY2VbdHlwZW5hbWVdCisgICAgcmVzdWx0Ll9zb3VyY2UgPSBjbGFzc19kZWZpbml0aW9uCiAgICAgaWYgdmVyYm9zZToKLSAgICAgICAgcHJpbnQoY2xhc3NfZGVmaW5pdGlvbikKKyAgICAgICAgcHJpbnQocmVzdWx0Ll9zb3VyY2UpCiAKICAgICAjIEZvciBwaWNrbGluZyB0byB3b3JrLCB0aGUgX19tb2R1bGVfXyB2YXJpYWJsZSBuZWVkcyB0byBiZSBzZXQgdG8gdGhlIGZyYW1lCiAgICAgIyB3aGVyZSB0aGUgbmFtZWQgdHVwbGUgaXMgY3JlYXRlZC4gIEJ5cGFzcyB0aGlzIHN0ZXAgaW4gZW52aXJvbWVudHMgd2hlcmUKQEAgLTY3NCwxMiArNjc2LDg2IEBACiAgICAgICAgICAgICAgICAgcmVzdWx0W2VsZW1dID0gbmV3Y291bnQKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCisgICAgZGVmIF9fcG9zX18oc2VsZik6CisgICAgICAgICdBZGRzIGFuIGVtcHR5IGNvdW50ZXIsIGVmZmVjdGl2ZWx5IHN0cmlwcGluZyBuZWdhdGl2ZSBhbmQgemVybyBjb3VudHMnCisgICAgICAgIHJldHVybiBzZWxmICsgQ291bnRlcigpCisKKyAgICBkZWYgX19uZWdfXyhzZWxmKToKKyAgICAgICAgJycnU3VidHJhY3RzIGZyb20gYW4gZW1wdHkgY291bnRlci4gIFN0cmlwcyBwb3NpdGl2ZSBhbmQgemVybyBjb3VudHMsCisgICAgICAgIGFuZCBmbGlwcyB0aGUgc2lnbiBvbiBuZWdhdGl2ZSBjb3VudHMuCisKKyAgICAgICAgJycnCisgICAgICAgIHJldHVybiBDb3VudGVyKCkgLSBzZWxmCisKKyAgICBkZWYgX2tlZXBfcG9zaXRpdmUoc2VsZik6CisgICAgICAgICcnJ0ludGVybmFsIG1ldGhvZCB0byBzdHJpcCBlbGVtZW50cyB3aXRoIGEgbmVnYXRpdmUgb3IgemVybyBjb3VudCcnJworICAgICAgICBub25wb3NpdGl2ZSA9IFtlbGVtIGZvciBlbGVtLCBjb3VudCBpbiBzZWxmLml0ZW1zKCkgaWYgbm90IGNvdW50ID4gMF0KKyAgICAgICAgZm9yIGVsZW0gaW4gbm9ucG9zaXRpdmU6CisgICAgICAgICAgICBkZWwgc2VsZltlbGVtXQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9faWFkZF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgJycnSW5wbGFjZSBhZGQgZnJvbSBhbm90aGVyIGNvdW50ZXIsIGtlZXBpbmcgb25seSBwb3NpdGl2ZSBjb3VudHMuCisKKyAgICAgICAgPj4+IGMgPSBDb3VudGVyKCdhYmJiJykKKyAgICAgICAgPj4+IGMgKz0gQ291bnRlcignYmNjJykKKyAgICAgICAgPj4+IGMKKyAgICAgICAgQ291bnRlcih7J2InOiA0LCAnYyc6IDIsICdhJzogMX0pCisKKyAgICAgICAgJycnCisgICAgICAgIGZvciBlbGVtLCBjb3VudCBpbiBvdGhlci5pdGVtcygpOgorICAgICAgICAgICAgc2VsZltlbGVtXSArPSBjb3VudAorICAgICAgICByZXR1cm4gc2VsZi5fa2VlcF9wb3NpdGl2ZSgpCisKKyAgICBkZWYgX19pc3ViX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAnJydJbnBsYWNlIHN1YnRyYWN0IGNvdW50ZXIsIGJ1dCBrZWVwIG9ubHkgcmVzdWx0cyB3aXRoIHBvc2l0aXZlIGNvdW50cy4KKworICAgICAgICA+Pj4gYyA9IENvdW50ZXIoJ2FiYmJjJykKKyAgICAgICAgPj4+IGMgLT0gQ291bnRlcignYmNjZCcpCisgICAgICAgID4+PiBjCisgICAgICAgIENvdW50ZXIoeydiJzogMiwgJ2EnOiAxfSkKKworICAgICAgICAnJycKKyAgICAgICAgZm9yIGVsZW0sIGNvdW50IGluIG90aGVyLml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmW2VsZW1dIC09IGNvdW50CisgICAgICAgIHJldHVybiBzZWxmLl9rZWVwX3Bvc2l0aXZlKCkKKworICAgIGRlZiBfX2lvcl9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgJycnSW5wbGFjZSB1bmlvbiBpcyB0aGUgbWF4aW11bSBvZiB2YWx1ZSBmcm9tIGVpdGhlciBjb3VudGVyLgorCisgICAgICAgID4+PiBjID0gQ291bnRlcignYWJiYicpCisgICAgICAgID4+PiBjIHw9IENvdW50ZXIoJ2JjYycpCisgICAgICAgID4+PiBjCisgICAgICAgIENvdW50ZXIoeydiJzogMywgJ2MnOiAyLCAnYSc6IDF9KQorCisgICAgICAgICcnJworICAgICAgICBmb3IgZWxlbSwgb3RoZXJfY291bnQgaW4gb3RoZXIuaXRlbXMoKToKKyAgICAgICAgICAgIGNvdW50ID0gc2VsZltlbGVtXQorICAgICAgICAgICAgaWYgb3RoZXJfY291bnQgPiBjb3VudDoKKyAgICAgICAgICAgICAgICBzZWxmW2VsZW1dID0gb3RoZXJfY291bnQKKyAgICAgICAgcmV0dXJuIHNlbGYuX2tlZXBfcG9zaXRpdmUoKQorCisgICAgZGVmIF9faWFuZF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgJycnSW5wbGFjZSBpbnRlcnNlY3Rpb24gaXMgdGhlIG1pbmltdW0gb2YgY29ycmVzcG9uZGluZyBjb3VudHMuCisKKyAgICAgICAgPj4+IGMgPSBDb3VudGVyKCdhYmJiJykKKyAgICAgICAgPj4+IGMgJj0gQ291bnRlcignYmNjJykKKyAgICAgICAgPj4+IGMKKyAgICAgICAgQ291bnRlcih7J2InOiAxfSkKKworICAgICAgICAnJycKKyAgICAgICAgZm9yIGVsZW0sIGNvdW50IGluIHNlbGYuaXRlbXMoKToKKyAgICAgICAgICAgIG90aGVyX2NvdW50ID0gb3RoZXJbZWxlbV0KKyAgICAgICAgICAgIGlmIG90aGVyX2NvdW50IDwgY291bnQ6CisgICAgICAgICAgICAgICAgc2VsZltlbGVtXSA9IG90aGVyX2NvdW50CisgICAgICAgIHJldHVybiBzZWxmLl9rZWVwX3Bvc2l0aXZlKCkKKwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMjIyAgQ2hhaW5NYXAgKGhlbHBlciBmb3IgY29uZmlncGFyc2VyKQorIyMjICBDaGFpbk1hcCAoaGVscGVyIGZvciBjb25maWdwYXJzZXIgYW5kIHN0cmluZy5UZW1wbGF0ZSkKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1jbGFzcyBfQ2hhaW5NYXAoTXV0YWJsZU1hcHBpbmcpOgorY2xhc3MgQ2hhaW5NYXAoTXV0YWJsZU1hcHBpbmcpOgogICAgICcnJyBBIENoYWluTWFwIGdyb3VwcyBtdWx0aXBsZSBkaWN0cyAob3Igb3RoZXIgbWFwcGluZ3MpIHRvZ2V0aGVyCiAgICAgdG8gY3JlYXRlIGEgc2luZ2xlLCB1cGRhdGVhYmxlIHZpZXcuCiAKQEAgLTg5MCw2ICs5NjYsOCBAQAogICAgIGRlZiBpbnNlcnQoc2VsZiwgaSwgaXRlbSk6IHNlbGYuZGF0YS5pbnNlcnQoaSwgaXRlbSkKICAgICBkZWYgcG9wKHNlbGYsIGk9LTEpOiByZXR1cm4gc2VsZi5kYXRhLnBvcChpKQogICAgIGRlZiByZW1vdmUoc2VsZiwgaXRlbSk6IHNlbGYuZGF0YS5yZW1vdmUoaXRlbSkKKyAgICBkZWYgY2xlYXIoc2VsZik6IHNlbGYuZGF0YS5jbGVhcigpCisgICAgZGVmIGNvcHkoc2VsZik6IHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmKQogICAgIGRlZiBjb3VudChzZWxmLCBpdGVtKTogcmV0dXJuIHNlbGYuZGF0YS5jb3VudChpdGVtKQogICAgIGRlZiBpbmRleChzZWxmLCBpdGVtLCAqYXJncyk6IHJldHVybiBzZWxmLmRhdGEuaW5kZXgoaXRlbSwgKmFyZ3MpCiAgICAgZGVmIHJldmVyc2Uoc2VsZik6IHNlbGYuZGF0YS5yZXZlcnNlKCkKQEAgLTEwMzQsNyArMTExMiw3IEBACiAgICAgICAgIHJldHVybiBzZWxmLmRhdGEuc3BsaXQoc2VwLCBtYXhzcGxpdCkKICAgICBkZWYgcnNwbGl0KHNlbGYsIHNlcD1Ob25lLCBtYXhzcGxpdD0tMSk6CiAgICAgICAgIHJldHVybiBzZWxmLmRhdGEucnNwbGl0KHNlcCwgbWF4c3BsaXQpCi0gICAgZGVmIHNwbGl0bGluZXMoc2VsZiwga2VlcGVuZHM9MCk6IHJldHVybiBzZWxmLmRhdGEuc3BsaXRsaW5lcyhrZWVwZW5kcykKKyAgICBkZWYgc3BsaXRsaW5lcyhzZWxmLCBrZWVwZW5kcz1GYWxzZSk6IHJldHVybiBzZWxmLmRhdGEuc3BsaXRsaW5lcyhrZWVwZW5kcykKICAgICBkZWYgc3RhcnRzd2l0aChzZWxmLCBwcmVmaXgsIHN0YXJ0PTAsIGVuZD1fc3lzLm1heHNpemUpOgogICAgICAgICByZXR1cm4gc2VsZi5kYXRhLnN0YXJ0c3dpdGgocHJlZml4LCBzdGFydCwgZW5kKQogICAgIGRlZiBzdHJpcChzZWxmLCBjaGFycz1Ob25lKTogcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS5zdHJpcChjaGFycykpCkBAIC0xMDQ0LDQ0ICsxMTIyLDMgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS50cmFuc2xhdGUoKmFyZ3MpKQogICAgIGRlZiB1cHBlcihzZWxmKTogcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS51cHBlcigpKQogICAgIGRlZiB6ZmlsbChzZWxmLCB3aWR0aCk6IHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEuemZpbGwod2lkdGgpKQotCi0KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMjIyBTaW1wbGUgdGVzdHMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgIyB2ZXJpZnkgdGhhdCBpbnN0YW5jZXMgY2FuIGJlIHBpY2tsZWQKLSAgICBmcm9tIHBpY2tsZSBpbXBvcnQgbG9hZHMsIGR1bXBzCi0gICAgUG9pbnQgPSBuYW1lZHR1cGxlKCdQb2ludCcsICd4LCB5JywgVHJ1ZSkKLSAgICBwID0gUG9pbnQoeD0xMCwgeT0yMCkKLSAgICBhc3NlcnQgcCA9PSBsb2FkcyhkdW1wcyhwKSkKLQotICAgICMgdGVzdCBhbmQgZGVtb25zdHJhdGUgYWJpbGl0eSB0byBvdmVycmlkZSBtZXRob2RzCi0gICAgY2xhc3MgUG9pbnQobmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykpOgotICAgICAgICBfX3Nsb3RzX18gPSAoKQotICAgICAgICBAcHJvcGVydHkKLSAgICAgICAgZGVmIGh5cG90KHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuIChzZWxmLnggKiogMiArIHNlbGYueSAqKiAyKSAqKiAwLjUKLSAgICAgICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgICAgICByZXR1cm4gJ1BvaW50OiB4PSU2LjNmICB5PSU2LjNmICBoeXBvdD0lNi4zZicgJSAoc2VsZi54LCBzZWxmLnksIHNlbGYuaHlwb3QpCi0KLSAgICBmb3IgcCBpbiBQb2ludCgzLCA0KSwgUG9pbnQoMTQsIDUvNy4pOgotICAgICAgICBwcmludCAocCkKLQotICAgIGNsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpKToKLSAgICAgICAgJ1BvaW50IGNsYXNzIHdpdGggb3B0aW1pemVkIF9tYWtlKCkgYW5kIF9yZXBsYWNlKCkgd2l0aG91dCBlcnJvci1jaGVja2luZycKLSAgICAgICAgX19zbG90c19fID0gKCkKLSAgICAgICAgX21ha2UgPSBjbGFzc21ldGhvZCh0dXBsZS5fX25ld19fKQotICAgICAgICBkZWYgX3JlcGxhY2Uoc2VsZiwgX21hcD1tYXAsICoqa3dkcyk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fbWFrZShfbWFwKGt3ZHMuZ2V0LCAoJ3gnLCAneScpLCBzZWxmKSkKLQotICAgIHByaW50KFBvaW50KDExLCAyMikuX3JlcGxhY2UoeD0xMDApKQotCi0gICAgUG9pbnQzRCA9IG5hbWVkdHVwbGUoJ1BvaW50M0QnLCBQb2ludC5fZmllbGRzICsgKCd6JywpKQotICAgIHByaW50KFBvaW50M0QuX19kb2NfXykKLQotICAgIGltcG9ydCBkb2N0ZXN0Ci0gICAgVGVzdFJlc3VsdHMgPSBuYW1lZHR1cGxlKCdUZXN0UmVzdWx0cycsICdmYWlsZWQgYXR0ZW1wdGVkJykKLSAgICBwcmludChUZXN0UmVzdWx0cygqZG9jdGVzdC50ZXN0bW9kKCkpKQpkaWZmIC0tZ2l0IGEvTGliL2NvbGxlY3Rpb25zL19fbWFpbl9fLnB5IGIvTGliL2NvbGxlY3Rpb25zL19fbWFpbl9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2M2UzOGUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvY29sbGVjdGlvbnMvX19tYWluX18ucHkKQEAgLTAsMCArMSwzOCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyBTaW1wbGUgdGVzdHMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgdmVyaWZ5IHRoYXQgaW5zdGFuY2VzIGNhbiBiZSBwaWNrbGVkCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCitmcm9tIHBpY2tsZSBpbXBvcnQgbG9hZHMsIGR1bXBzCitQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgJ3gsIHknLCBUcnVlKQorcCA9IFBvaW50KHg9MTAsIHk9MjApCithc3NlcnQgcCA9PSBsb2FkcyhkdW1wcyhwKSkKKworIyB0ZXN0IGFuZCBkZW1vbnN0cmF0ZSBhYmlsaXR5IHRvIG92ZXJyaWRlIG1ldGhvZHMKK2NsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpKToKKyAgICBfX3Nsb3RzX18gPSAoKQorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBoeXBvdChzZWxmKToKKyAgICAgICAgcmV0dXJuIChzZWxmLnggKiogMiArIHNlbGYueSAqKiAyKSAqKiAwLjUKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICdQb2ludDogeD0lNi4zZiAgeT0lNi4zZiAgaHlwb3Q9JTYuM2YnICUgKHNlbGYueCwgc2VsZi55LCBzZWxmLmh5cG90KQorCitmb3IgcCBpbiBQb2ludCgzLCA0KSwgUG9pbnQoMTQsIDUvNy4pOgorICAgIHByaW50IChwKQorCitjbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6CisgICAgJ1BvaW50IGNsYXNzIHdpdGggb3B0aW1pemVkIF9tYWtlKCkgYW5kIF9yZXBsYWNlKCkgd2l0aG91dCBlcnJvci1jaGVja2luZycKKyAgICBfX3Nsb3RzX18gPSAoKQorICAgIF9tYWtlID0gY2xhc3NtZXRob2QodHVwbGUuX19uZXdfXykKKyAgICBkZWYgX3JlcGxhY2Uoc2VsZiwgX21hcD1tYXAsICoqa3dkcyk6CisgICAgICAgIHJldHVybiBzZWxmLl9tYWtlKF9tYXAoa3dkcy5nZXQsICgneCcsICd5JyksIHNlbGYpKQorCitwcmludChQb2ludCgxMSwgMjIpLl9yZXBsYWNlKHg9MTAwKSkKKworUG9pbnQzRCA9IG5hbWVkdHVwbGUoJ1BvaW50M0QnLCBQb2ludC5fZmllbGRzICsgKCd6JywpKQorcHJpbnQoUG9pbnQzRC5fX2RvY19fKQorCitpbXBvcnQgZG9jdGVzdCwgY29sbGVjdGlvbnMKK1Rlc3RSZXN1bHRzID0gbmFtZWR0dXBsZSgnVGVzdFJlc3VsdHMnLCAnZmFpbGVkIGF0dGVtcHRlZCcpCitwcmludChUZXN0UmVzdWx0cygqZG9jdGVzdC50ZXN0bW9kKGNvbGxlY3Rpb25zKSkpCmRpZmYgLS1naXQgYS9MaWIvX2FiY29sbC5weSBiL0xpYi9jb2xsZWN0aW9ucy9hYmMucHkKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gTGliL19hYmNvbGwucHkKcmVuYW1lIHRvIExpYi9jb2xsZWN0aW9ucy9hYmMucHkKaW5kZXggNWRkY2VhMy4uYzIzYjdkZCAxMDA2NDQKLS0tIGEvTGliL19hYmNvbGwucHkKKysrIGIvTGliL2NvbGxlY3Rpb25zL2FiYy5weQpAQCAtMyw5ICszLDcgQEAKIAogIiIiQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChBQkNzKSBmb3IgY29sbGVjdGlvbnMsIGFjY29yZGluZyB0byBQRVAgMzExOS4KIAotRE9OJ1QgVVNFIFRISVMgTU9EVUxFIERJUkVDVExZISAgVGhlIGNsYXNzZXMgaGVyZSBzaG91bGQgYmUgaW1wb3J0ZWQKLXZpYSBjb2xsZWN0aW9uczsgdGhleSBhcmUgZGVmaW5lZCBoZXJlIG9ubHkgdG8gYWxsZXZpYXRlIGNlcnRhaW4KLWJvb3RzdHJhcHBpbmcgaXNzdWVzLiAgVW5pdCB0ZXN0cyBhcmUgaW4gdGVzdF9jb2xsZWN0aW9ucy4KK1VuaXQgdGVzdHMgYXJlIGluIHRlc3RfY29sbGVjdGlvbnMuCiAiIiIKIAogZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCkBAIC0yMCw5ICsxOCwxMyBAQAogICAgICAgICAgICAiQnl0ZVN0cmluZyIsCiAgICAgICAgICAgIF0KIAotCi0jIyMgY29sbGVjdGlvbiByZWxhdGVkIHR5cGVzIHdoaWNoIGFyZSBub3QgZXhwb3NlZCB0aHJvdWdoIGJ1aWx0aW4gIyMjCi0jIyBpdGVyYXRvcnMgIyMKKyMgUHJpdmF0ZSBsaXN0IG9mIHR5cGVzIHRoYXQgd2Ugd2FudCB0byByZWdpc3RlciB3aXRoIHRoZSB2YXJpb3VzIEFCQ3MKKyMgc28gdGhhdCB0aGV5IHdpbGwgcGFzcyB0ZXN0cyBsaWtlOgorIyAgICAgICBpdCA9IGl0ZXIoc29tZWJ5dGVhcnJheSkKKyMgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaXQsIEl0ZXJhYmxlKQorIyBOb3RlOiAgaW4gb3RoZXIgaW1wbGVtZW50YXRpb25zLCB0aGVzZSB0eXBlcyBtYW55IG5vdCBiZSBkaXN0aW5jdAorIyBhbmQgdGhleSBtYWtlIGhhdmUgdGhlaXIgb3duIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIHR5cGVzIHRoYXQKKyMgYXJlIG5vdCBpbmNsdWRlZCBvbiB0aGlzIGxpc3QuCiBieXRlc19pdGVyYXRvciA9IHR5cGUoaXRlcihiJycpKQogYnl0ZWFycmF5X2l0ZXJhdG9yID0gdHlwZShpdGVyKGJ5dGVhcnJheSgpKSkKICNjYWxsYWJsZV9pdGVyYXRvciA9ID8/PwpAQCAtNDEsMTMgKzQzLDE1IEBACiBkaWN0X3ZhbHVlcyA9IHR5cGUoe30udmFsdWVzKCkpCiBkaWN0X2l0ZW1zID0gdHlwZSh7fS5pdGVtcygpKQogIyMgbWlzYyAjIwotZGljdF9wcm94eSA9IHR5cGUodHlwZS5fX2RpY3RfXykKK21hcHBpbmdwcm94eSA9IHR5cGUodHlwZS5fX2RpY3RfXykKIAogCiAjIyMgT05FLVRSSUNLIFBPTklFUyAjIyMKIAogY2xhc3MgSGFzaGFibGUobWV0YWNsYXNzPUFCQ01ldGEpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIDAKQEAgLTY1LDYgKzY5LDggQEAKIAogY2xhc3MgSXRlcmFibGUobWV0YWNsYXNzPUFCQ01ldGEpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICAgd2hpbGUgRmFsc2U6CkBAIC04MCw2ICs4Niw4IEBACiAKIGNsYXNzIEl0ZXJhdG9yKEl0ZXJhYmxlKToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19uZXh0X18oc2VsZik6CiAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KQEAgLTExMSw2ICsxMTksOCBAQAogCiBjbGFzcyBTaXplZChtZXRhY2xhc3M9QUJDTWV0YSk6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgIHJldHVybiAwCkBAIC0xMjUsNiArMTM1LDggQEAKIAogY2xhc3MgQ29udGFpbmVyKG1ldGFjbGFzcz1BQkNNZXRhKToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHgpOgogICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTEzOSw2ICsxNTEsOCBAQAogCiBjbGFzcyBDYWxsYWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzLCAqKmt3ZHMpOgogICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTE2Niw2ICsxODAsOCBAQAogICAgIHRoZW4gdGhlIG90aGVyIG9wZXJhdGlvbnMgd2lsbCBhdXRvbWF0aWNhbGx5IGZvbGxvdyBzdWl0LgogICAgICIiIgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgU2V0KToKICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZApAQCAtMjc3LDYgKzI5Myw4IEBACiAKIGNsYXNzIE11dGFibGVTZXQoU2V0KToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgYWRkKHNlbGYsIHZhbHVlKToKICAgICAgICAgIiIiQWRkIGFuIGVsZW1lbnQuIiIiCkBAIC0zNTAsNiArMzY4LDggQEAKIAogY2xhc3MgTWFwcGluZyhTaXplZCwgSXRlcmFibGUsIENvbnRhaW5lcik6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgIHJhaXNlIEtleUVycm9yCkBAIC0zODUsNiArNDA1LDggQEAKICAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgcmV0dXJuIG5vdCAoc2VsZiA9PSBvdGhlcikKIAorTWFwcGluZy5yZWdpc3RlcihtYXBwaW5ncHJveHkpCisKIAogY2xhc3MgTWFwcGluZ1ZpZXcoU2l6ZWQpOgogCkBAIC00NTMsNiArNDc1LDggQEAKIAogY2xhc3MgTXV0YWJsZU1hcHBpbmcoTWFwcGluZyk6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgogICAgICAgICByYWlzZSBLZXlFcnJvcgpAQCAtNTMyLDYgKzU1Niw4IEBACiAgICAgX19nZXRpdGVtX18sIGFuZCBfX2xlbl9fLgogICAgICIiIgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpbmRleCk6CiAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IKQEAgLTU3NywxMiArNjAzLDE2IEBACiAgICAgWFhYIFNob3VsZCBhZGQgYWxsIHRoZWlyIG1ldGhvZHMuCiAgICAgIiIiCiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiBCeXRlU3RyaW5nLnJlZ2lzdGVyKGJ5dGVzKQogQnl0ZVN0cmluZy5yZWdpc3RlcihieXRlYXJyYXkpCiAKIAogY2xhc3MgTXV0YWJsZVNlcXVlbmNlKFNlcXVlbmNlKToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaW5kZXgsIHZhbHVlKToKICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcgpAQCAtNTk4LDYgKzYyOCwxMyBAQAogICAgIGRlZiBhcHBlbmQoc2VsZiwgdmFsdWUpOgogICAgICAgICBzZWxmLmluc2VydChsZW4oc2VsZiksIHZhbHVlKQogCisgICAgZGVmIGNsZWFyKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHNlbGYucG9wKCkKKyAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICBwYXNzCisKICAgICBkZWYgcmV2ZXJzZShzZWxmKToKICAgICAgICAgbiA9IGxlbihzZWxmKQogICAgICAgICBmb3IgaSBpbiByYW5nZShuLy8yKToKZGlmZiAtLWdpdCBhL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvX2Jhc2UucHkgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL19iYXNlLnB5CmluZGV4IDc5MjljM2MuLmNhM2FlYmQgMTAwNjQ0Ci0tLSBhL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvX2Jhc2UucHkKKysrIGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9fYmFzZS5weQpAQCAtNCw3ICs0LDYgQEAKIF9fYXV0aG9yX18gPSAnQnJpYW4gUXVpbmxhbiAoYnJpYW5Ac3dlZXRhcHAuY29tKScKIAogaW1wb3J0IGNvbGxlY3Rpb25zCi1pbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRpbWUKQEAgLTMzMyw3ICszMzIsNyBAQAogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIGNhbmNlbGxlZChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGZ1dHVyZSBoYXMgY2FuY2VsbGVkLiIiIgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgZnV0dXJlIHdhcyBjYW5jZWxsZWQuIiIiCiAgICAgICAgIHdpdGggc2VsZi5fY29uZGl0aW9uOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3N0YXRlIGluIFtDQU5DRUxMRUQsIENBTkNFTExFRF9BTkRfTk9USUZJRURdCiAKQEAgLTQ3MSw4ICs0NzAsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIExPR0dFUi5jcml0aWNhbCgnRnV0dXJlICVzIGluIHVuZXhwZWN0ZWQgc3RhdGU6ICVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQoc2VsZi5mdXR1cmUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZ1dHVyZS5fc3RhdGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zdGF0ZSkKICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0Z1dHVyZSBpbiB1bmV4cGVjdGVkIHN0YXRlJykKIAogICAgIGRlZiBzZXRfcmVzdWx0KHNlbGYsIHJlc3VsdCk6CkBAIC01MzgsMTUgKzUzNywxOSBAQAogCiAgICAgICAgIGZzID0gW3NlbGYuc3VibWl0KGZuLCAqYXJncykgZm9yIGFyZ3MgaW4gemlwKCppdGVyYWJsZXMpXQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciBmdXR1cmUgaW4gZnM6Ci0gICAgICAgICAgICAgICAgaWYgdGltZW91dCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCBmdXR1cmUucmVzdWx0KCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCBmdXR1cmUucmVzdWx0KGVuZF90aW1lIC0gdGltZS50aW1lKCkpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmb3IgZnV0dXJlIGluIGZzOgotICAgICAgICAgICAgICAgIGZ1dHVyZS5jYW5jZWwoKQorICAgICAgICAjIFlpZWxkIG11c3QgYmUgaGlkZGVuIGluIGNsb3N1cmUgc28gdGhhdCB0aGUgZnV0dXJlcyBhcmUgc3VibWl0dGVkCisgICAgICAgICMgYmVmb3JlIHRoZSBmaXJzdCBpdGVyYXRvciB2YWx1ZSBpcyByZXF1aXJlZC4KKyAgICAgICAgZGVmIHJlc3VsdF9pdGVyYXRvcigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvciBmdXR1cmUgaW4gZnM6CisgICAgICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGZ1dHVyZS5yZXN1bHQoKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgZnV0dXJlLnJlc3VsdChlbmRfdGltZSAtIHRpbWUudGltZSgpKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmb3IgZnV0dXJlIGluIGZzOgorICAgICAgICAgICAgICAgICAgICBmdXR1cmUuY2FuY2VsKCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdF9pdGVyYXRvcigpCiAKICAgICBkZWYgc2h1dGRvd24oc2VsZiwgd2FpdD1UcnVlKToKICAgICAgICAgIiIiQ2xlYW4tdXAgdGhlIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIEV4ZWN1dG9yLgpkaWZmIC0tZ2l0IGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9wcm9jZXNzLnB5IGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9wcm9jZXNzLnB5CmluZGV4IGQzYmJlMmMuLjA0MjM4YTcgMTAwNjQ0Ci0tLSBhL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvcHJvY2Vzcy5weQorKysgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3Byb2Nlc3MucHkKQEAgLTQ2LDkgKzQ2LDEyIEBACiBfX2F1dGhvcl9fID0gJ0JyaWFuIFF1aW5sYW4gKGJyaWFuQHN3ZWV0YXBwLmNvbSknCiAKIGltcG9ydCBhdGV4aXQKK2ltcG9ydCBvcwogZnJvbSBjb25jdXJyZW50LmZ1dHVyZXMgaW1wb3J0IF9iYXNlCiBpbXBvcnQgcXVldWUKIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKK2Zyb20gbXVsdGlwcm9jZXNzaW5nLnF1ZXVlcyBpbXBvcnQgU2ltcGxlUXVldWUsIEZ1bGwKK2Zyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IHdhaXQKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB3ZWFrcmVmCiAKQEAgLTEyMSw3ICsxMjQsNyBAQAogICAgICAgICBjYWxsX2l0ZW0gPSBjYWxsX3F1ZXVlLmdldChibG9jaz1UcnVlKQogICAgICAgICBpZiBjYWxsX2l0ZW0gaXMgTm9uZToKICAgICAgICAgICAgICMgV2FrZSB1cCBxdWV1ZSBtYW5hZ2VtZW50IHRocmVhZAotICAgICAgICAgICAgcmVzdWx0X3F1ZXVlLnB1dChOb25lKQorICAgICAgICAgICAgcmVzdWx0X3F1ZXVlLnB1dChvcy5nZXRwaWQoKSkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByID0gY2FsbF9pdGVtLmZuKCpjYWxsX2l0ZW0uYXJncywgKipjYWxsX2l0ZW0ua3dhcmdzKQpAQCAtMTkzLDQ2ICsxOTYsOTIgQEAKICAgICAgICAgcmVzdWx0X3F1ZXVlOiBBIG11bHRpcHJvY2Vzc2luZy5RdWV1ZSBvZiBfUmVzdWx0SXRlbXMgZ2VuZXJhdGVkIGJ5IHRoZQogICAgICAgICAgICAgcHJvY2VzcyB3b3JrZXJzLgogICAgICIiIgotICAgIG5iX3NodXRkb3duX3Byb2Nlc3NlcyA9IDAKLSAgICBkZWYgc2h1dGRvd25fb25lX3Byb2Nlc3MoKToKLSAgICAgICAgIiIiVGVsbCBhIHdvcmtlciB0byB0ZXJtaW5hdGUsIHdoaWNoIHdpbGwgaW4gdHVybiB3YWtlIHVzIGFnYWluIiIiCi0gICAgICAgIG5vbmxvY2FsIG5iX3NodXRkb3duX3Byb2Nlc3NlcwotICAgICAgICBjYWxsX3F1ZXVlLnB1dChOb25lKQotICAgICAgICBuYl9zaHV0ZG93bl9wcm9jZXNzZXMgKz0gMQorICAgIGV4ZWN1dG9yID0gTm9uZQorCisgICAgZGVmIHNodXR0aW5nX2Rvd24oKToKKyAgICAgICAgcmV0dXJuIF9zaHV0ZG93biBvciBleGVjdXRvciBpcyBOb25lIG9yIGV4ZWN1dG9yLl9zaHV0ZG93bl90aHJlYWQKKworICAgIGRlZiBzaHV0ZG93bl93b3JrZXIoKToKKyAgICAgICAgIyBUaGlzIGlzIGFuIHVwcGVyIGJvdW5kCisgICAgICAgIG5iX2NoaWxkcmVuX2FsaXZlID0gc3VtKHAuaXNfYWxpdmUoKSBmb3IgcCBpbiBwcm9jZXNzZXMudmFsdWVzKCkpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIG5iX2NoaWxkcmVuX2FsaXZlKToKKyAgICAgICAgICAgIGNhbGxfcXVldWUucHV0X25vd2FpdChOb25lKQorICAgICAgICAjIFJlbGVhc2UgdGhlIHF1ZXVlJ3MgcmVzb3VyY2VzIGFzIHNvb24gYXMgcG9zc2libGUuCisgICAgICAgIGNhbGxfcXVldWUuY2xvc2UoKQorICAgICAgICAjIElmIC5qb2luKCkgaXMgbm90IGNhbGxlZCBvbiB0aGUgY3JlYXRlZCBwcm9jZXNzZXMgdGhlbgorICAgICAgICAjIHNvbWUgbXVsdGlwcm9jZXNzaW5nLlF1ZXVlIG1ldGhvZHMgbWF5IGRlYWRsb2NrIG9uIE1hYyBPUyBYLgorICAgICAgICBmb3IgcCBpbiBwcm9jZXNzZXMudmFsdWVzKCk6CisgICAgICAgICAgICBwLmpvaW4oKQorCisgICAgcmVhZGVyID0gcmVzdWx0X3F1ZXVlLl9yZWFkZXIKKwogICAgIHdoaWxlIFRydWU6CiAgICAgICAgIF9hZGRfY2FsbF9pdGVtX3RvX3F1ZXVlKHBlbmRpbmdfd29ya19pdGVtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya19pZHNfcXVldWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxfcXVldWUpCiAKLSAgICAgICAgcmVzdWx0X2l0ZW0gPSByZXN1bHRfcXVldWUuZ2V0KGJsb2NrPVRydWUpCi0gICAgICAgIGlmIHJlc3VsdF9pdGVtIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgd29ya19pdGVtID0gcGVuZGluZ193b3JrX2l0ZW1zW3Jlc3VsdF9pdGVtLndvcmtfaWRdCi0gICAgICAgICAgICBkZWwgcGVuZGluZ193b3JrX2l0ZW1zW3Jlc3VsdF9pdGVtLndvcmtfaWRdCi0KLSAgICAgICAgICAgIGlmIHJlc3VsdF9pdGVtLmV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICB3b3JrX2l0ZW0uZnV0dXJlLnNldF9leGNlcHRpb24ocmVzdWx0X2l0ZW0uZXhjZXB0aW9uKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB3b3JrX2l0ZW0uZnV0dXJlLnNldF9yZXN1bHQocmVzdWx0X2l0ZW0ucmVzdWx0KQorICAgICAgICBzZW50aW5lbHMgPSBbcC5zZW50aW5lbCBmb3IgcCBpbiBwcm9jZXNzZXMudmFsdWVzKCldCisgICAgICAgIGFzc2VydCBzZW50aW5lbHMKKyAgICAgICAgcmVhZHkgPSB3YWl0KFtyZWFkZXJdICsgc2VudGluZWxzKQorICAgICAgICBpZiByZWFkZXIgaW4gcmVhZHk6CisgICAgICAgICAgICByZXN1bHRfaXRlbSA9IHJlYWRlci5yZWN2KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgTWFyayB0aGUgcHJvY2VzcyBwb29sIGJyb2tlbiBzbyB0aGF0IHN1Ym1pdHMgZmFpbCByaWdodCBub3cuCisgICAgICAgICAgICBleGVjdXRvciA9IGV4ZWN1dG9yX3JlZmVyZW5jZSgpCisgICAgICAgICAgICBpZiBleGVjdXRvciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBleGVjdXRvci5fYnJva2VuID0gVHJ1ZQorICAgICAgICAgICAgICAgIGV4ZWN1dG9yLl9zaHV0ZG93bl90aHJlYWQgPSBUcnVlCisgICAgICAgICAgICAgICAgZXhlY3V0b3IgPSBOb25lCisgICAgICAgICAgICAjIEFsbCBmdXR1cmVzIGluIGZsaWdodCBtdXN0IGJlIG1hcmtlZCBmYWlsZWQKKyAgICAgICAgICAgIGZvciB3b3JrX2lkLCB3b3JrX2l0ZW0gaW4gcGVuZGluZ193b3JrX2l0ZW1zLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgd29ya19pdGVtLmZ1dHVyZS5zZXRfZXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICBCcm9rZW5Qcm9jZXNzUG9vbCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJBIHByb2Nlc3MgaW4gdGhlIHByb2Nlc3MgcG9vbCB3YXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgInRlcm1pbmF0ZWQgYWJydXB0bHkgd2hpbGUgdGhlIGZ1dHVyZSB3YXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgInJ1bm5pbmcgb3IgcGVuZGluZy4iCisgICAgICAgICAgICAgICAgICAgICkpCisgICAgICAgICAgICBwZW5kaW5nX3dvcmtfaXRlbXMuY2xlYXIoKQorICAgICAgICAgICAgIyBUZXJtaW5hdGUgcmVtYWluaW5nIHdvcmtlcnMgZm9yY2libHk6IHRoZSBxdWV1ZXMgb3IgdGhlaXIKKyAgICAgICAgICAgICMgbG9ja3MgbWF5IGJlIGluIGEgZGlydHkgc3RhdGUgYW5kIGJsb2NrIGZvcmV2ZXIuCisgICAgICAgICAgICBmb3IgcCBpbiBwcm9jZXNzZXMudmFsdWVzKCk6CisgICAgICAgICAgICAgICAgcC50ZXJtaW5hdGUoKQorICAgICAgICAgICAgc2h1dGRvd25fd29ya2VyKCkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBpc2luc3RhbmNlKHJlc3VsdF9pdGVtLCBpbnQpOgorICAgICAgICAgICAgIyBDbGVhbiBzaHV0ZG93biBvZiBhIHdvcmtlciB1c2luZyBpdHMgUElECisgICAgICAgICAgICAjIChhdm9pZHMgbWFya2luZyB0aGUgZXhlY3V0b3IgYnJva2VuKQorICAgICAgICAgICAgYXNzZXJ0IHNodXR0aW5nX2Rvd24oKQorICAgICAgICAgICAgcCA9IHByb2Nlc3Nlcy5wb3AocmVzdWx0X2l0ZW0pCisgICAgICAgICAgICBwLmpvaW4oKQorICAgICAgICAgICAgaWYgbm90IHByb2Nlc3NlczoKKyAgICAgICAgICAgICAgICBzaHV0ZG93bl93b3JrZXIoKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBlbGlmIHJlc3VsdF9pdGVtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgd29ya19pdGVtID0gcGVuZGluZ193b3JrX2l0ZW1zLnBvcChyZXN1bHRfaXRlbS53b3JrX2lkLCBOb25lKQorICAgICAgICAgICAgIyB3b3JrX2l0ZW0gY2FuIGJlIE5vbmUgaWYgYW5vdGhlciBwcm9jZXNzIHRlcm1pbmF0ZWQgKHNlZSBhYm92ZSkKKyAgICAgICAgICAgIGlmIHdvcmtfaXRlbSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiByZXN1bHRfaXRlbS5leGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgIHdvcmtfaXRlbS5mdXR1cmUuc2V0X2V4Y2VwdGlvbihyZXN1bHRfaXRlbS5leGNlcHRpb24pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgd29ya19pdGVtLmZ1dHVyZS5zZXRfcmVzdWx0KHJlc3VsdF9pdGVtLnJlc3VsdCkKICAgICAgICAgIyBDaGVjayB3aGV0aGVyIHdlIHNob3VsZCBzdGFydCBzaHV0dGluZyBkb3duLgogICAgICAgICBleGVjdXRvciA9IGV4ZWN1dG9yX3JlZmVyZW5jZSgpCiAgICAgICAgICMgTm8gbW9yZSB3b3JrIGl0ZW1zIGNhbiBiZSBhZGRlZCBpZjoKICAgICAgICAgIyAgIC0gVGhlIGludGVycHJldGVyIGlzIHNodXR0aW5nIGRvd24gT1IKICAgICAgICAgIyAgIC0gVGhlIGV4ZWN1dG9yIHRoYXQgb3ducyB0aGlzIHdvcmtlciBoYXMgYmVlbiBjb2xsZWN0ZWQgT1IKICAgICAgICAgIyAgIC0gVGhlIGV4ZWN1dG9yIHRoYXQgb3ducyB0aGlzIHdvcmtlciBoYXMgYmVlbiBzaHV0ZG93bi4KLSAgICAgICAgaWYgX3NodXRkb3duIG9yIGV4ZWN1dG9yIGlzIE5vbmUgb3IgZXhlY3V0b3IuX3NodXRkb3duX3RocmVhZDoKLSAgICAgICAgICAgICMgU2luY2Ugbm8gbmV3IHdvcmsgaXRlbXMgY2FuIGJlIGFkZGVkLCBpdCBpcyBzYWZlIHRvIHNodXRkb3duCi0gICAgICAgICAgICAjIHRoaXMgdGhyZWFkIGlmIHRoZXJlIGFyZSBubyBwZW5kaW5nIHdvcmsgaXRlbXMuCi0gICAgICAgICAgICBpZiBub3QgcGVuZGluZ193b3JrX2l0ZW1zOgotICAgICAgICAgICAgICAgIHdoaWxlIG5iX3NodXRkb3duX3Byb2Nlc3NlcyA8IGxlbihwcm9jZXNzZXMpOgotICAgICAgICAgICAgICAgICAgICBzaHV0ZG93bl9vbmVfcHJvY2VzcygpCi0gICAgICAgICAgICAgICAgIyBJZiAuam9pbigpIGlzIG5vdCBjYWxsZWQgb24gdGhlIGNyZWF0ZWQgcHJvY2Vzc2VzIHRoZW4KLSAgICAgICAgICAgICAgICAjIHNvbWUgbXVsdGlwcm9jZXNzaW5nLlF1ZXVlIG1ldGhvZHMgbWF5IGRlYWRsb2NrIG9uIE1hYyBPUwotICAgICAgICAgICAgICAgICMgWC4KLSAgICAgICAgICAgICAgICBmb3IgcCBpbiBwcm9jZXNzZXM6Ci0gICAgICAgICAgICAgICAgICAgIHAuam9pbigpCi0gICAgICAgICAgICAgICAgY2FsbF9xdWV1ZS5jbG9zZSgpCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGRlbCBleGVjdXRvcgorICAgICAgICBpZiBzaHV0dGluZ19kb3duKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIyBTaW5jZSBubyBuZXcgd29yayBpdGVtcyBjYW4gYmUgYWRkZWQsIGl0IGlzIHNhZmUgdG8gc2h1dGRvd24KKyAgICAgICAgICAgICAgICAjIHRoaXMgdGhyZWFkIGlmIHRoZXJlIGFyZSBubyBwZW5kaW5nIHdvcmsgaXRlbXMuCisgICAgICAgICAgICAgICAgaWYgbm90IHBlbmRpbmdfd29ya19pdGVtczoKKyAgICAgICAgICAgICAgICAgICAgc2h1dGRvd25fd29ya2VyKCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBleGNlcHQgRnVsbDoKKyAgICAgICAgICAgICAgICAjIFRoaXMgaXMgbm90IGEgcHJvYmxlbTogd2Ugd2lsbCBldmVudHVhbGx5IGJlIHdva2VuIHVwIChpbgorICAgICAgICAgICAgICAgICMgcmVzdWx0X3F1ZXVlLmdldCgpKSBhbmQgYmUgYWJsZSB0byBzZW5kIGEgc2VudGluZWwgYWdhaW4uCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBleGVjdXRvciA9IE5vbmUKIAogX3N5c3RlbV9saW1pdHNfY2hlY2tlZCA9IEZhbHNlCiBfc3lzdGVtX2xpbWl0ZWQgPSBOb25lCkBAIC0yNDMsNyArMjkyLDYgQEAKICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoX3N5c3RlbV9saW1pdGVkKQogICAgIF9zeXN0ZW1fbGltaXRzX2NoZWNrZWQgPSBUcnVlCiAgICAgdHJ5OgotICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgbnNlbXNfbWF4ID0gb3Muc3lzY29uZigiU0NfU0VNX05TRU1TX01BWCIpCiAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgICMgc3lzY29uZiBub3QgYXZhaWxhYmxlIG9yIHNldHRpbmcgbm90IGF2YWlsYWJsZQpAQCAtMjU5LDYgKzMwNywxNCBAQAogICAgIF9zeXN0ZW1fbGltaXRlZCA9ICJzeXN0ZW0gcHJvdmlkZXMgdG9vIGZldyBzZW1hcGhvcmVzICglZCBhdmFpbGFibGUsIDI1NiBuZWNlc3NhcnkpIiAlIG5zZW1zX21heAogICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoX3N5c3RlbV9saW1pdGVkKQogCisKK2NsYXNzIEJyb2tlblByb2Nlc3NQb29sKFJ1bnRpbWVFcnJvcik6CisgICAgIiIiCisgICAgUmFpc2VkIHdoZW4gYSBwcm9jZXNzIGluIGEgUHJvY2Vzc1Bvb2xFeGVjdXRvciB0ZXJtaW5hdGVkIGFicnVwdGx5CisgICAgd2hpbGUgYSBmdXR1cmUgd2FzIGluIHRoZSBydW5uaW5nIHN0YXRlLgorICAgICIiIgorCisKIGNsYXNzIFByb2Nlc3NQb29sRXhlY3V0b3IoX2Jhc2UuRXhlY3V0b3IpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXhfd29ya2Vycz1Ob25lKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZXMgYSBuZXcgUHJvY2Vzc1Bvb2xFeGVjdXRvciBpbnN0YW5jZS4KQEAgLTI4MCwxNCArMzM2LDIwIEBACiAgICAgICAgICMgYmVjYXVzZSBmdXR1cmVzIGluIHRoZSBjYWxsIHF1ZXVlIGNhbm5vdCBiZSBjYW5jZWxsZWQuCiAgICAgICAgIHNlbGYuX2NhbGxfcXVldWUgPSBtdWx0aXByb2Nlc3NpbmcuUXVldWUoc2VsZi5fbWF4X3dvcmtlcnMgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYVFJBX1FVRVVFRF9DQUxMUykKLSAgICAgICAgc2VsZi5fcmVzdWx0X3F1ZXVlID0gbXVsdGlwcm9jZXNzaW5nLlF1ZXVlKCkKKyAgICAgICAgIyBLaWxsZWQgd29ya2VyIHByb2Nlc3NlcyBjYW4gcHJvZHVjZSBzcHVyaW91cyAiYnJva2VuIHBpcGUiCisgICAgICAgICMgdHJhY2ViYWNrcyBpbiB0aGUgcXVldWUncyBvd24gd29ya2VyIHRocmVhZC4gQnV0IHdlIGRldGVjdCBraWxsZWQKKyAgICAgICAgIyBwcm9jZXNzZXMgYW55d2F5LCBzbyBzaWxlbmNlIHRoZSB0cmFjZWJhY2tzLgorICAgICAgICBzZWxmLl9jYWxsX3F1ZXVlLl9pZ25vcmVfZXBpcGUgPSBUcnVlCisgICAgICAgIHNlbGYuX3Jlc3VsdF9xdWV1ZSA9IFNpbXBsZVF1ZXVlKCkKICAgICAgICAgc2VsZi5fd29ya19pZHMgPSBxdWV1ZS5RdWV1ZSgpCiAgICAgICAgIHNlbGYuX3F1ZXVlX21hbmFnZW1lbnRfdGhyZWFkID0gTm9uZQotICAgICAgICBzZWxmLl9wcm9jZXNzZXMgPSBzZXQoKQorICAgICAgICAjIE1hcCBvZiBwaWRzIHRvIHByb2Nlc3NlcworICAgICAgICBzZWxmLl9wcm9jZXNzZXMgPSB7fQogCiAgICAgICAgICMgU2h1dGRvd24gaXMgYSB0d28tc3RlcCBwcm9jZXNzLgogICAgICAgICBzZWxmLl9zaHV0ZG93bl90aHJlYWQgPSBGYWxzZQogICAgICAgICBzZWxmLl9zaHV0ZG93bl9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQorICAgICAgICBzZWxmLl9icm9rZW4gPSBGYWxzZQogICAgICAgICBzZWxmLl9xdWV1ZV9jb3VudCA9IDAKICAgICAgICAgc2VsZi5fcGVuZGluZ193b3JrX2l0ZW1zID0ge30KIApAQCAtMjk3LDYgKzM1OSw4IEBACiAgICAgICAgIGRlZiB3ZWFrcmVmX2NiKF8sIHE9c2VsZi5fcmVzdWx0X3F1ZXVlKToKICAgICAgICAgICAgIHEucHV0KE5vbmUpCiAgICAgICAgIGlmIHNlbGYuX3F1ZXVlX21hbmFnZW1lbnRfdGhyZWFkIGlzIE5vbmU6CisgICAgICAgICAgICAjIFN0YXJ0IHRoZSBwcm9jZXNzZXMgc28gdGhhdCB0aGVpciBzZW50aW5lbHMgYXJlIGtub3duLgorICAgICAgICAgICAgc2VsZi5fYWRqdXN0X3Byb2Nlc3NfY291bnQoKQogICAgICAgICAgICAgc2VsZi5fcXVldWVfbWFuYWdlbWVudF90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKAogICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9X3F1ZXVlX21hbmFnZW1lbnRfd29ya2VyLAogICAgICAgICAgICAgICAgICAgICBhcmdzPSh3ZWFrcmVmLnJlZihzZWxmLCB3ZWFrcmVmX2NiKSwKQEAgLTMxNiwxMCArMzgwLDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHNlbGYuX2NhbGxfcXVldWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jlc3VsdF9xdWV1ZSkpCiAgICAgICAgICAgICBwLnN0YXJ0KCkKLSAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3Nlcy5hZGQocCkKKyAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3Nlc1twLnBpZF0gPSBwCiAKICAgICBkZWYgc3VibWl0KHNlbGYsIGZuLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICB3aXRoIHNlbGYuX3NodXRkb3duX2xvY2s6CisgICAgICAgICAgICBpZiBzZWxmLl9icm9rZW46CisgICAgICAgICAgICAgICAgcmFpc2UgQnJva2VuUHJvY2Vzc1Bvb2woJ0EgY2hpbGQgcHJvY2VzcyB0ZXJtaW5hdGVkICcKKyAgICAgICAgICAgICAgICAgICAgJ2FicnVwdGx5LCB0aGUgcHJvY2VzcyBwb29sIGlzIG5vdCB1c2FibGUgYW55bW9yZScpCiAgICAgICAgICAgICBpZiBzZWxmLl9zaHV0ZG93bl90aHJlYWQ6CiAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdjYW5ub3Qgc2NoZWR1bGUgbmV3IGZ1dHVyZXMgYWZ0ZXIgc2h1dGRvd24nKQogCkBAIC0zMzMsNyArNDAwLDYgQEAKICAgICAgICAgICAgIHNlbGYuX3Jlc3VsdF9xdWV1ZS5wdXQoTm9uZSkKIAogICAgICAgICAgICAgc2VsZi5fc3RhcnRfcXVldWVfbWFuYWdlbWVudF90aHJlYWQoKQotICAgICAgICAgICAgc2VsZi5fYWRqdXN0X3Byb2Nlc3NfY291bnQoKQogICAgICAgICAgICAgcmV0dXJuIGYKICAgICBzdWJtaXQuX19kb2NfXyA9IF9iYXNlLkV4ZWN1dG9yLnN1Ym1pdC5fX2RvY19fCiAKZGlmZiAtLWdpdCBhL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5IGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkKaW5kZXggZmJhYzA4OC4uOTViYjY4MiAxMDA2NDQKLS0tIGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkKKysrIGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkKQEAgLTc0LDcgKzc0LDcgQEAKICAgICAgICAgICAgICAgICB3b3JrX3F1ZXVlLnB1dChOb25lKQogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgZGVsIGV4ZWN1dG9yCi0gICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKKyAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKICAgICAgICAgX2Jhc2UuTE9HR0VSLmNyaXRpY2FsKCdFeGNlcHRpb24gaW4gd29ya2VyJywgZXhjX2luZm89VHJ1ZSkKIAogY2xhc3MgVGhyZWFkUG9vbEV4ZWN1dG9yKF9iYXNlLkV4ZWN1dG9yKToKZGlmZiAtLWdpdCBhL0xpYi9jb25maWdwYXJzZXIucHkgYi9MaWIvY29uZmlncGFyc2VyLnB5CmluZGV4IGU1NTM2YTAuLmM3YmVlNmIgMTAwNjQ0Ci0tLSBhL0xpYi9jb25maWdwYXJzZXIucHkKKysrIGIvTGliL2NvbmZpZ3BhcnNlci5weQpAQCAtMTE4LDcgKzExOCw4IEBACiAgICAgICAgIGJldHdlZW4ga2V5cyBhbmQgdmFsdWVzIGFyZSBzdXJyb3VuZGVkIGJ5IHNwYWNlcy4KICIiIgogCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBNdXRhYmxlTWFwcGluZywgT3JkZXJlZERpY3QgYXMgX2RlZmF1bHRfZGljdCwgX0NoYWluTWFwCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0IGFzIF9kZWZhdWx0X2RpY3QsIENoYWluTWFwIGFzIF9DaGFpbk1hcAogaW1wb3J0IGZ1bmN0b29scwogaW1wb3J0IGlvCiBpbXBvcnQgaXRlcnRvb2xzCkBAIC05NTksNyArOTYwLDkgQEAKIAogICAgICAgICAjIFhYWCB0aGlzIGlzIG5vdCBhdG9taWMgaWYgcmVhZF9kaWN0IGZhaWxzIGF0IGFueSBwb2ludC4gVGhlbiBhZ2FpbiwKICAgICAgICAgIyBubyB1cGRhdGUgbWV0aG9kIGluIGNvbmZpZ3BhcnNlciBpcyBhdG9taWMgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbi4KLSAgICAgICAgaWYga2V5IGluIHNlbGYuX3NlY3Rpb25zOgorICAgICAgICBpZiBrZXkgPT0gc2VsZi5kZWZhdWx0X3NlY3Rpb246CisgICAgICAgICAgICBzZWxmLl9kZWZhdWx0cy5jbGVhcigpCisgICAgICAgIGVsaWYga2V5IGluIHNlbGYuX3NlY3Rpb25zOgogICAgICAgICAgICAgc2VsZi5fc2VjdGlvbnNba2V5XS5jbGVhcigpCiAgICAgICAgIHNlbGYucmVhZF9kaWN0KHtrZXk6IHZhbHVlfSkKIApAQCAtMTAwNSwxOCArMTAwOCwyNiBAQAogICAgICAgICBpbmRlbnRfbGV2ZWwgPSAwCiAgICAgICAgIGUgPSBOb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb25lLCBvciBhbiBleGNlcHRpb24KICAgICAgICAgZm9yIGxpbmVubywgbGluZSBpbiBlbnVtZXJhdGUoZnAsIHN0YXJ0PTEpOgotICAgICAgICAgICAgY29tbWVudF9zdGFydCA9IE5vbmUKKyAgICAgICAgICAgIGNvbW1lbnRfc3RhcnQgPSBzeXMubWF4c2l6ZQogICAgICAgICAgICAgIyBzdHJpcCBpbmxpbmUgY29tbWVudHMKLSAgICAgICAgICAgIGZvciBwcmVmaXggaW4gc2VsZi5faW5saW5lX2NvbW1lbnRfcHJlZml4ZXM6Ci0gICAgICAgICAgICAgICAgaW5kZXggPSBsaW5lLmZpbmQocHJlZml4KQotICAgICAgICAgICAgICAgIGlmIGluZGV4ID09IDAgb3IgKGluZGV4ID4gMCBhbmQgbGluZVtpbmRleC0xXS5pc3NwYWNlKCkpOgotICAgICAgICAgICAgICAgICAgICBjb21tZW50X3N0YXJ0ID0gaW5kZXgKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlubGluZV9wcmVmaXhlcyA9IHtwOiAtMSBmb3IgcCBpbiBzZWxmLl9pbmxpbmVfY29tbWVudF9wcmVmaXhlc30KKyAgICAgICAgICAgIHdoaWxlIGNvbW1lbnRfc3RhcnQgPT0gc3lzLm1heHNpemUgYW5kIGlubGluZV9wcmVmaXhlczoKKyAgICAgICAgICAgICAgICBuZXh0X3ByZWZpeGVzID0ge30KKyAgICAgICAgICAgICAgICBmb3IgcHJlZml4LCBpbmRleCBpbiBpbmxpbmVfcHJlZml4ZXMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBsaW5lLmZpbmQocHJlZml4LCBpbmRleCsxKQorICAgICAgICAgICAgICAgICAgICBpZiBpbmRleCA9PSAtMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIG5leHRfcHJlZml4ZXNbcHJlZml4XSA9IGluZGV4CisgICAgICAgICAgICAgICAgICAgIGlmIGluZGV4ID09IDAgb3IgKGluZGV4ID4gMCBhbmQgbGluZVtpbmRleC0xXS5pc3NwYWNlKCkpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudF9zdGFydCA9IG1pbihjb21tZW50X3N0YXJ0LCBpbmRleCkKKyAgICAgICAgICAgICAgICBpbmxpbmVfcHJlZml4ZXMgPSBuZXh0X3ByZWZpeGVzCiAgICAgICAgICAgICAjIHN0cmlwIGZ1bGwgbGluZSBjb21tZW50cwogICAgICAgICAgICAgZm9yIHByZWZpeCBpbiBzZWxmLl9jb21tZW50X3ByZWZpeGVzOgogICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RyaXAoKS5zdGFydHN3aXRoKHByZWZpeCk6CiAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRfc3RhcnQgPSAwCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiBjb21tZW50X3N0YXJ0ID09IHN5cy5tYXhzaXplOgorICAgICAgICAgICAgICAgIGNvbW1lbnRfc3RhcnQgPSBOb25lCiAgICAgICAgICAgICB2YWx1ZSA9IGxpbmVbOmNvbW1lbnRfc3RhcnRdLnN0cmlwKCkKICAgICAgICAgICAgIGlmIG5vdCB2YWx1ZToKICAgICAgICAgICAgICAgICBpZiBzZWxmLl9lbXB0eV9saW5lc19pbl92YWx1ZXM6CmRpZmYgLS1naXQgYS9MaWIvY29udGV4dGxpYi5weSBiL0xpYi9jb250ZXh0bGliLnB5CmluZGV4IDVlYmJiYzYuLjBiNmJmNzEgMTAwNjQ0Ci0tLSBhL0xpYi9jb250ZXh0bGliLnB5CisrKyBiL0xpYi9jb250ZXh0bGliLnB5CkBAIC0xLDEwICsxLDEwIEBACiAiIiJVdGlsaXRpZXMgZm9yIHdpdGgtc3RhdGVtZW50IGNvbnRleHRzLiAgU2VlIFBFUCAzNDMuIiIiCiAKIGltcG9ydCBzeXMKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKLWZyb20gd2FybmluZ3MgaW1wb3J0IHdhcm4KIAotX19hbGxfXyA9IFsiY29udGV4dG1hbmFnZXIiLCAiY2xvc2luZyIsICJDb250ZXh0RGVjb3JhdG9yIl0KK19fYWxsX18gPSBbImNvbnRleHRtYW5hZ2VyIiwgImNsb3NpbmciLCAiQ29udGV4dERlY29yYXRvciIsICJFeGl0U3RhY2siXQogCiAKIGNsYXNzIENvbnRleHREZWNvcmF0b3Iob2JqZWN0KToKQEAgLTEzLDEyICsxMywxMiBAQAogICAgIGRlZiBfcmVjcmVhdGVfY20oc2VsZik6CiAgICAgICAgICIiIlJldHVybiBhIHJlY3JlYXRlZCBpbnN0YW5jZSBvZiBzZWxmLgogCi0gICAgICAgIEFsbG93cyBvdGhlcndpc2Ugb25lLXNob3QgY29udGV4dCBtYW5hZ2VycyBsaWtlCisgICAgICAgIEFsbG93cyBhbiBvdGhlcndpc2Ugb25lLXNob3QgY29udGV4dCBtYW5hZ2VyIGxpa2UKICAgICAgICAgX0dlbmVyYXRvckNvbnRleHRNYW5hZ2VyIHRvIHN1cHBvcnQgdXNlIGFzCi0gICAgICAgIGRlY29yYXRvcnMgdmlhIGltcGxpY2l0IHJlY3JlYXRpb24uCisgICAgICAgIGEgZGVjb3JhdG9yIHZpYSBpbXBsaWNpdCByZWNyZWF0aW9uLgogCi0gICAgICAgIE5vdGU6IHRoaXMgaXMgYSBwcml2YXRlIGludGVyZmFjZSBqdXN0IGZvciBfR0NNIGluIDMuMiBidXQgd2lsbCBiZQotICAgICAgICByZW5hbWVkIGFuZCBkb2N1bWVudGVkIGZvciB0aGlyZCBwYXJ0eSB1c2UgaW4gMy4zCisgICAgICAgIFRoaXMgaXMgYSBwcml2YXRlIGludGVyZmFjZSBqdXN0IGZvciBfR2VuZXJhdG9yQ29udGV4dE1hbmFnZXIuCisgICAgICAgIFNlZSBpc3N1ZSAjMTE2NDcgZm9yIGRldGFpbHMuCiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gc2VsZgogCkBAIC0xMzksMyArMTM5LDExNyBAQAogICAgICAgICByZXR1cm4gc2VsZi50aGluZwogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2luZm8pOgogICAgICAgICBzZWxmLnRoaW5nLmNsb3NlKCkKKworCisjIEluc3BpcmVkIGJ5IGRpc2N1c3Npb25zIG9uIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMzU4NQorY2xhc3MgRXhpdFN0YWNrKG9iamVjdCk6CisgICAgIiIiQ29udGV4dCBtYW5hZ2VyIGZvciBkeW5hbWljIG1hbmFnZW1lbnQgb2YgYSBzdGFjayBvZiBleGl0IGNhbGxiYWNrcworCisgICAgRm9yIGV4YW1wbGU6CisKKyAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgIGZpbGVzID0gW3N0YWNrLmVudGVyX2NvbnRleHQob3BlbihmbmFtZSkpIGZvciBmbmFtZSBpbiBmaWxlbmFtZXNdCisgICAgICAgICAgICAjIEFsbCBvcGVuZWQgZmlsZXMgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNsb3NlZCBhdCB0aGUgZW5kIG9mCisgICAgICAgICAgICAjIHRoZSB3aXRoIHN0YXRlbWVudCwgZXZlbiBpZiBhdHRlbXB0cyB0byBvcGVuIGZpbGVzIGxhdGVyCisgICAgICAgICAgICAjIGluIHRoZSBsaXN0IHJhaXNlIGFuIGV4Y2VwdGlvbgorCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9leGl0X2NhbGxiYWNrcyA9IGRlcXVlKCkKKworICAgIGRlZiBwb3BfYWxsKHNlbGYpOgorICAgICAgICAiIiJQcmVzZXJ2ZSB0aGUgY29udGV4dCBzdGFjayBieSB0cmFuc2ZlcnJpbmcgaXQgdG8gYSBuZXcgaW5zdGFuY2UiIiIKKyAgICAgICAgbmV3X3N0YWNrID0gdHlwZShzZWxmKSgpCisgICAgICAgIG5ld19zdGFjay5fZXhpdF9jYWxsYmFja3MgPSBzZWxmLl9leGl0X2NhbGxiYWNrcworICAgICAgICBzZWxmLl9leGl0X2NhbGxiYWNrcyA9IGRlcXVlKCkKKyAgICAgICAgcmV0dXJuIG5ld19zdGFjaworCisgICAgZGVmIF9wdXNoX2NtX2V4aXQoc2VsZiwgY20sIGNtX2V4aXQpOgorICAgICAgICAiIiJIZWxwZXIgdG8gY29ycmVjdGx5IHJlZ2lzdGVyIGNhbGxiYWNrcyB0byBfX2V4aXRfXyBtZXRob2RzIiIiCisgICAgICAgIGRlZiBfZXhpdF93cmFwcGVyKCpleGNfZGV0YWlscyk6CisgICAgICAgICAgICByZXR1cm4gY21fZXhpdChjbSwgKmV4Y19kZXRhaWxzKQorICAgICAgICBfZXhpdF93cmFwcGVyLl9fc2VsZl9fID0gY20KKyAgICAgICAgc2VsZi5wdXNoKF9leGl0X3dyYXBwZXIpCisKKyAgICBkZWYgcHVzaChzZWxmLCBleGl0KToKKyAgICAgICAgIiIiUmVnaXN0ZXJzIGEgY2FsbGJhY2sgd2l0aCB0aGUgc3RhbmRhcmQgX19leGl0X18gbWV0aG9kIHNpZ25hdHVyZQorCisgICAgICAgIENhbiBzdXBwcmVzcyBleGNlcHRpb25zIHRoZSBzYW1lIHdheSBfX2V4aXRfXyBtZXRob2RzIGNhbi4KKworICAgICAgICBBbHNvIGFjY2VwdHMgYW55IG9iamVjdCB3aXRoIGFuIF9fZXhpdF9fIG1ldGhvZCAocmVnaXN0ZXJpbmcgYSBjYWxsCisgICAgICAgIHRvIHRoZSBtZXRob2QgaW5zdGVhZCBvZiB0aGUgb2JqZWN0IGl0c2VsZikKKyAgICAgICAgIiIiCisgICAgICAgICMgV2UgdXNlIGFuIHVuYm91bmQgbWV0aG9kIHJhdGhlciB0aGFuIGEgYm91bmQgbWV0aG9kIHRvIGZvbGxvdworICAgICAgICAjIHRoZSBzdGFuZGFyZCBsb29rdXAgYmVoYXZpb3VyIGZvciBzcGVjaWFsIG1ldGhvZHMKKyAgICAgICAgX2NiX3R5cGUgPSB0eXBlKGV4aXQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGV4aXRfbWV0aG9kID0gX2NiX3R5cGUuX19leGl0X18KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyBOb3QgYSBjb250ZXh0IG1hbmFnZXIsIHNvIGFzc3VtZSBpdHMgYSBjYWxsYWJsZQorICAgICAgICAgICAgc2VsZi5fZXhpdF9jYWxsYmFja3MuYXBwZW5kKGV4aXQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9wdXNoX2NtX2V4aXQoZXhpdCwgZXhpdF9tZXRob2QpCisgICAgICAgIHJldHVybiBleGl0ICMgQWxsb3cgdXNlIGFzIGEgZGVjb3JhdG9yCisKKyAgICBkZWYgY2FsbGJhY2soc2VsZiwgY2FsbGJhY2ssICphcmdzLCAqKmt3ZHMpOgorICAgICAgICAiIiJSZWdpc3RlcnMgYW4gYXJiaXRyYXJ5IGNhbGxiYWNrIGFuZCBhcmd1bWVudHMuCisKKyAgICAgICAgQ2Fubm90IHN1cHByZXNzIGV4Y2VwdGlvbnMuCisgICAgICAgICIiIgorICAgICAgICBkZWYgX2V4aXRfd3JhcHBlcihleGNfdHlwZSwgZXhjLCB0Yik6CisgICAgICAgICAgICBjYWxsYmFjaygqYXJncywgKiprd2RzKQorICAgICAgICAjIFdlIGNoYW5nZWQgdGhlIHNpZ25hdHVyZSwgc28gdXNpbmcgQHdyYXBzIGlzIG5vdCBhcHByb3ByaWF0ZSwgYnV0CisgICAgICAgICMgc2V0dGluZyBfX3dyYXBwZWRfXyBtYXkgc3RpbGwgaGVscCB3aXRoIGludHJvc3BlY3Rpb24KKyAgICAgICAgX2V4aXRfd3JhcHBlci5fX3dyYXBwZWRfXyA9IGNhbGxiYWNrCisgICAgICAgIHNlbGYucHVzaChfZXhpdF93cmFwcGVyKQorICAgICAgICByZXR1cm4gY2FsbGJhY2sgIyBBbGxvdyB1c2UgYXMgYSBkZWNvcmF0b3IKKworICAgIGRlZiBlbnRlcl9jb250ZXh0KHNlbGYsIGNtKToKKyAgICAgICAgIiIiRW50ZXJzIHRoZSBzdXBwbGllZCBjb250ZXh0IG1hbmFnZXIKKworICAgICAgICBJZiBzdWNjZXNzZnVsLCBhbHNvIHB1c2hlcyBpdHMgX19leGl0X18gbWV0aG9kIGFzIGEgY2FsbGJhY2sgYW5kCisgICAgICAgIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgX19lbnRlcl9fIG1ldGhvZC4KKyAgICAgICAgIiIiCisgICAgICAgICMgV2UgbG9vayB1cCB0aGUgc3BlY2lhbCBtZXRob2RzIG9uIHRoZSB0eXBlIHRvIG1hdGNoIHRoZSB3aXRoIHN0YXRlbWVudAorICAgICAgICBfY21fdHlwZSA9IHR5cGUoY20pCisgICAgICAgIF9leGl0ID0gX2NtX3R5cGUuX19leGl0X18KKyAgICAgICAgcmVzdWx0ID0gX2NtX3R5cGUuX19lbnRlcl9fKGNtKQorICAgICAgICBzZWxmLl9wdXNoX2NtX2V4aXQoY20sIF9leGl0KQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICIiIkltbWVkaWF0ZWx5IHVud2luZCB0aGUgY29udGV4dCBzdGFjayIiIgorICAgICAgICBzZWxmLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfZGV0YWlscyk6CisgICAgICAgICMgV2UgbWFuaXB1bGF0ZSB0aGUgZXhjZXB0aW9uIHN0YXRlIHNvIGl0IGJlaGF2ZXMgYXMgdGhvdWdoCisgICAgICAgICMgd2Ugd2VyZSBhY3R1YWxseSBuZXN0aW5nIG11bHRpcGxlIHdpdGggc3RhdGVtZW50cworICAgICAgICBmcmFtZV9leGMgPSBzeXMuZXhjX2luZm8oKVsxXQorICAgICAgICBkZWYgX2ZpeF9leGNlcHRpb25fY29udGV4dChuZXdfZXhjLCBvbGRfZXhjKToKKyAgICAgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICAgICAgZXhjX2NvbnRleHQgPSBuZXdfZXhjLl9fY29udGV4dF9fCisgICAgICAgICAgICAgICAgaWYgZXhjX2NvbnRleHQgaW4gKE5vbmUsIGZyYW1lX2V4Yyk6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgbmV3X2V4YyA9IGV4Y19jb250ZXh0CisgICAgICAgICAgICBuZXdfZXhjLl9fY29udGV4dF9fID0gb2xkX2V4YworCisgICAgICAgICMgQ2FsbGJhY2tzIGFyZSBpbnZva2VkIGluIExJRk8gb3JkZXIgdG8gbWF0Y2ggdGhlIGJlaGF2aW91ciBvZgorICAgICAgICAjIG5lc3RlZCBjb250ZXh0IG1hbmFnZXJzCisgICAgICAgIHN1cHByZXNzZWRfZXhjID0gRmFsc2UKKyAgICAgICAgd2hpbGUgc2VsZi5fZXhpdF9jYWxsYmFja3M6CisgICAgICAgICAgICBjYiA9IHNlbGYuX2V4aXRfY2FsbGJhY2tzLnBvcCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgY2IoKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NlZF9leGMgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGV4Y19kZXRhaWxzID0gKE5vbmUsIE5vbmUsIE5vbmUpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgbmV3X2V4Y19kZXRhaWxzID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgICAgICAjIHNpbXVsYXRlIHRoZSBzdGFjayBvZiBleGNlcHRpb25zIGJ5IHNldHRpbmcgdGhlIGNvbnRleHQKKyAgICAgICAgICAgICAgICBfZml4X2V4Y2VwdGlvbl9jb250ZXh0KG5ld19leGNfZGV0YWlsc1sxXSwgZXhjX2RldGFpbHNbMV0pCisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX2V4aXRfY2FsbGJhY2tzOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIGV4Y19kZXRhaWxzID0gbmV3X2V4Y19kZXRhaWxzCisgICAgICAgIHJldHVybiBzdXBwcmVzc2VkX2V4YwpkaWZmIC0tZ2l0IGEvTGliL2NvcHkucHkgYi9MaWIvY29weS5weQppbmRleCAwODlkMTAxLi5kOTYyMDFlIDEwMDY0NAotLS0gYS9MaWIvY29weS5weQorKysgYi9MaWIvY29weS5weQpAQCAtMTczLDggKzE3MywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW4oZGVlcCljb3B5YWJsZSBvYmplY3Qgb2YgdHlwZSAlcyIgJSBjbHMpCiAgICAgICAgICAgICAgICAgeSA9IF9yZWNvbnN0cnVjdCh4LCBydiwgMSwgbWVtbykKIAotICAgIG1lbW9bZF0gPSB5Ci0gICAgX2tlZXBfYWxpdmUoeCwgbWVtbykgIyBNYWtlIHN1cmUgeCBsaXZlcyBhdCBsZWFzdCBhcyBsb25nIGFzIGQKKyAgICAjIElmIGlzIGl0cyBvd24gY29weSwgZG9uJ3QgbWVtb2l6ZS4KKyAgICBpZiB5IGlzIG5vdCB4OgorICAgICAgICBtZW1vW2RdID0geQorICAgICAgICBfa2VlcF9hbGl2ZSh4LCBtZW1vKSAjIE1ha2Ugc3VyZSB4IGxpdmVzIGF0IGxlYXN0IGFzIGxvbmcgYXMgZAogICAgIHJldHVybiB5CiAKIF9kZWVwY29weV9kaXNwYXRjaCA9IGQgPSB7fQpAQCAtMjE0LDkgKzIxNiwxMCBAQAogICAgIHkgPSBbXQogICAgIGZvciBhIGluIHg6CiAgICAgICAgIHkuYXBwZW5kKGRlZXBjb3B5KGEsIG1lbW8pKQotICAgIGQgPSBpZCh4KQorICAgICMgV2UncmUgbm90IGdvaW5nIHRvIHB1dCB0aGUgdHVwbGUgaW4gdGhlIG1lbW8sIGJ1dCBpdCdzIHN0aWxsIGltcG9ydGFudCB3ZQorICAgICMgY2hlY2sgZm9yIGl0LCBpbiBjYXNlIHRoZSB0dXBsZSBjb250YWlucyByZWN1cnNpdmUgbXV0YWJsZSBzdHJ1Y3R1cmVzLgogICAgIHRyeToKLSAgICAgICAgcmV0dXJuIG1lbW9bZF0KKyAgICAgICAgcmV0dXJuIG1lbW9baWQoeCldCiAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICBwYXNzCiAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHgpKToKQEAgLTIyNSw3ICsyMjgsNiBAQAogICAgICAgICAgICAgYnJlYWsKICAgICBlbHNlOgogICAgICAgICB5ID0geAotICAgIG1lbW9bZF0gPSB5CiAgICAgcmV0dXJuIHkKIGRbdHVwbGVdID0gX2RlZXBjb3B5X3R1cGxlCiAKQEAgLTMyMSw2OCArMzIzLDMgQEAKICMgSGVscGVyIGZvciBpbnN0YW5jZSBjcmVhdGlvbiB3aXRob3V0IGNhbGxpbmcgX19pbml0X18KIGNsYXNzIF9FbXB0eUNsYXNzOgogICAgIHBhc3MKLQotZGVmIF90ZXN0KCk6Ci0gICAgbCA9IFtOb25lLCAxLCAyLCAzLjE0LCAneHl6enknLCAoMSwgMiksIFszLjE0LCAnYWJjJ10sCi0gICAgICAgICB7J2FiYyc6ICdBQkMnfSwgKCksIFtdLCB7fV0KLSAgICBsMSA9IGNvcHkobCkKLSAgICBwcmludChsMT09bCkKLSAgICBsMSA9IG1hcChjb3B5LCBsKQotICAgIHByaW50KGwxPT1sKQotICAgIGwxID0gZGVlcGNvcHkobCkKLSAgICBwcmludChsMT09bCkKLSAgICBjbGFzcyBDOgotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYXJnPU5vbmUpOgotICAgICAgICAgICAgc2VsZi5hID0gMQotICAgICAgICAgICAgc2VsZi5hcmcgPSBhcmcKLSAgICAgICAgICAgIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IHN5cwotICAgICAgICAgICAgICAgIGZpbGUgPSBzeXMuYXJndlswXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmaWxlID0gX19maWxlX18KLSAgICAgICAgICAgIHNlbGYuZnAgPSBvcGVuKGZpbGUpCi0gICAgICAgICAgICBzZWxmLmZwLmNsb3NlKCkKLSAgICAgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKLSAgICAgICAgICAgIHJldHVybiB7J2EnOiBzZWxmLmEsICdhcmcnOiBzZWxmLmFyZ30KLSAgICAgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6Ci0gICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzdGF0ZS5pdGVtcygpOgotICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwga2V5LCB2YWx1ZSkKLSAgICAgICAgZGVmIF9fZGVlcGNvcHlfXyhzZWxmLCBtZW1vPU5vbmUpOgotICAgICAgICAgICAgbmV3ID0gc2VsZi5fX2NsYXNzX18oZGVlcGNvcHkoc2VsZi5hcmcsIG1lbW8pKQotICAgICAgICAgICAgbmV3LmEgPSBzZWxmLmEKLSAgICAgICAgICAgIHJldHVybiBuZXcKLSAgICBjID0gQygnYXJndW1lbnQgc2tldGNoJykKLSAgICBsLmFwcGVuZChjKQotICAgIGwyID0gY29weShsKQotICAgIHByaW50KGwgPT0gbDIpCi0gICAgcHJpbnQobCkKLSAgICBwcmludChsMikKLSAgICBsMiA9IGRlZXBjb3B5KGwpCi0gICAgcHJpbnQobCA9PSBsMikKLSAgICBwcmludChsKQotICAgIHByaW50KGwyKQotICAgIGwuYXBwZW5kKHtsWzFdOiBsLCAneHl6JzogbFsyXX0pCi0gICAgbDMgPSBjb3B5KGwpCi0gICAgaW1wb3J0IHJlcHJsaWIKLSAgICBwcmludChtYXAocmVwcmxpYi5yZXByLCBsKSkKLSAgICBwcmludChtYXAocmVwcmxpYi5yZXByLCBsMSkpCi0gICAgcHJpbnQobWFwKHJlcHJsaWIucmVwciwgbDIpKQotICAgIHByaW50KG1hcChyZXBybGliLnJlcHIsIGwzKSkKLSAgICBsMyA9IGRlZXBjb3B5KGwpCi0gICAgcHJpbnQobWFwKHJlcHJsaWIucmVwciwgbCkpCi0gICAgcHJpbnQobWFwKHJlcHJsaWIucmVwciwgbDEpKQotICAgIHByaW50KG1hcChyZXBybGliLnJlcHIsIGwyKSkKLSAgICBwcmludChtYXAocmVwcmxpYi5yZXByLCBsMykpCi0gICAgY2xhc3Mgb2RpY3QoZGljdCk6Ci0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkID0ge30pOgotICAgICAgICAgICAgc2VsZi5hID0gOTkKLSAgICAgICAgICAgIGRpY3QuX19pbml0X18oc2VsZiwgZCkKLSAgICAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGssIGkpOgotICAgICAgICAgICAgZGljdC5fX3NldGl0ZW1fXyhzZWxmLCBrLCBpKQotICAgICAgICAgICAgc2VsZi5hCi0gICAgbyA9IG9kaWN0KHsiQSIgOiAiQiJ9KQotICAgIHggPSBkZWVwY29weShvKQotICAgIHByaW50KG8sIHgpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvTGliL2NyeXB0LnB5IGIvTGliL2NyeXB0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MGM4MWMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvY3J5cHQucHkKQEAgLTAsMCArMSw2MiBAQAorIiIiV3JhcHBlciB0byB0aGUgUE9TSVggY3J5cHQgbGlicmFyeSBjYWxsIGFuZCBhc3NvY2lhdGVkIGZ1bmN0aW9uYWxpdHkuIiIiCisKK2ltcG9ydCBfY3J5cHQKK2ltcG9ydCBzdHJpbmcgYXMgX3N0cmluZworZnJvbSByYW5kb20gaW1wb3J0IFN5c3RlbVJhbmRvbSBhcyBfU3lzdGVtUmFuZG9tCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlIGFzIF9uYW1lZHR1cGxlCisKKworX3NhbHRjaGFycyA9IF9zdHJpbmcuYXNjaWlfbGV0dGVycyArIF9zdHJpbmcuZGlnaXRzICsgJy4vJworX3NyID0gX1N5c3RlbVJhbmRvbSgpCisKKworY2xhc3MgX01ldGhvZChfbmFtZWR0dXBsZSgnX01ldGhvZCcsICduYW1lIGlkZW50IHNhbHRfY2hhcnMgdG90YWxfc2l6ZScpKToKKworICAgICIiIkNsYXNzIHJlcHJlc2VudGluZyBhIHNhbHQgbWV0aG9kIHBlciB0aGUgTW9kdWxhciBDcnlwdCBGb3JtYXQgb3IgdGhlCisgICAgbGVnYWN5IDItY2hhcmFjdGVyIGNyeXB0IG1ldGhvZC4iIiIKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8Y3J5cHQuTUVUSE9EX3t9PicuZm9ybWF0KHNlbGYubmFtZSkKKworCitkZWYgbWtzYWx0KG1ldGhvZD1Ob25lKToKKyAgICAiIiJHZW5lcmF0ZSBhIHNhbHQgZm9yIHRoZSBzcGVjaWZpZWQgbWV0aG9kLgorCisgICAgSWYgbm90IHNwZWNpZmllZCwgdGhlIHN0cm9uZ2VzdCBhdmFpbGFibGUgbWV0aG9kIHdpbGwgYmUgdXNlZC4KKworICAgICIiIgorICAgIGlmIG1ldGhvZCBpcyBOb25lOgorICAgICAgICBtZXRob2QgPSBtZXRob2RzWzBdCisgICAgcyA9ICcke30kJy5mb3JtYXQobWV0aG9kLmlkZW50KSBpZiBtZXRob2QuaWRlbnQgZWxzZSAnJworICAgIHMgKz0gJycuam9pbihfc3Iuc2FtcGxlKF9zYWx0Y2hhcnMsIG1ldGhvZC5zYWx0X2NoYXJzKSkKKyAgICByZXR1cm4gcworCisKK2RlZiBjcnlwdCh3b3JkLCBzYWx0PU5vbmUpOgorICAgICIiIlJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIG9uZS13YXkgaGFzaCBvZiBhIHBhc3N3b3JkLCB3aXRoIGEgc2FsdAorICAgIHByZXBlbmRlZC4KKworICAgIElmIGBgc2FsdGBgIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgYGBOb25lYGAsIHRoZSBzdHJvbmdlc3QKKyAgICBhdmFpbGFibGUgbWV0aG9kIHdpbGwgYmUgc2VsZWN0ZWQgYW5kIGEgc2FsdCBnZW5lcmF0ZWQuICBPdGhlcndpc2UsCisgICAgYGBzYWx0YGAgbWF5IGJlIG9uZSBvZiB0aGUgYGBjcnlwdC5NRVRIT0RfKmBgIHZhbHVlcywgb3IgYSBzdHJpbmcgYXMKKyAgICByZXR1cm5lZCBieSBgYGNyeXB0Lm1rc2FsdCgpYGAuCisKKyAgICAiIiIKKyAgICBpZiBzYWx0IGlzIE5vbmUgb3IgaXNpbnN0YW5jZShzYWx0LCBfTWV0aG9kKToKKyAgICAgICAgc2FsdCA9IG1rc2FsdChzYWx0KQorICAgIHJldHVybiBfY3J5cHQuY3J5cHQod29yZCwgc2FsdCkKKworCisjICBhdmFpbGFibGUgc2FsdGluZy9jcnlwdG8gbWV0aG9kcworTUVUSE9EX0NSWVBUID0gX01ldGhvZCgnQ1JZUFQnLCBOb25lLCAyLCAxMykKK01FVEhPRF9NRDUgPSBfTWV0aG9kKCdNRDUnLCAnMScsIDgsIDM0KQorTUVUSE9EX1NIQTI1NiA9IF9NZXRob2QoJ1NIQTI1NicsICc1JywgMTYsIDYzKQorTUVUSE9EX1NIQTUxMiA9IF9NZXRob2QoJ1NIQTUxMicsICc2JywgMTYsIDEwNikKKworbWV0aG9kcyA9IFtdCitmb3IgX21ldGhvZCBpbiAoTUVUSE9EX1NIQTUxMiwgTUVUSE9EX1NIQTI1NiwgTUVUSE9EX01ENSk6CisgICAgX3Jlc3VsdCA9IGNyeXB0KCcnLCBfbWV0aG9kKQorICAgIGlmIF9yZXN1bHQgYW5kIGxlbihfcmVzdWx0KSA9PSBfbWV0aG9kLnRvdGFsX3NpemU6CisgICAgICAgIG1ldGhvZHMuYXBwZW5kKF9tZXRob2QpCittZXRob2RzLmFwcGVuZChNRVRIT0RfQ1JZUFQpCitkZWwgX3Jlc3VsdCwgX21ldGhvZApkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy9fX2luaXRfXy5weSBiL0xpYi9jdHlwZXMvX19pbml0X18ucHkKaW5kZXggMTExMjA5YS4uYzkyZTEzMCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy9fX2luaXRfXy5weQorKysgYi9MaWIvY3R5cGVzL19faW5pdF9fLnB5CkBAIC0yNiw3ICsyNiw3IEBACiAgICAgIyBsaWJyYXJpZXMuICBPUyBYIDEwLjMgaXMgRGFyd2luIDcsIHNvIHdlIGNoZWNrIGZvcgogICAgICMgdGhhdC4KIAotICAgIGlmIGludChfb3MudW5hbWUoKVsyXS5zcGxpdCgnLicpWzBdKSA8IDg6CisgICAgaWYgaW50KF9vcy51bmFtZSgpLnJlbGVhc2Uuc3BsaXQoJy4nKVswXSkgPCA4OgogICAgICAgICBERUZBVUxUX01PREUgPSBSVExEX0dMT0JBTAogCiBmcm9tIF9jdHlwZXMgaW1wb3J0IEZVTkNGTEFHX0NERUNMIGFzIF9GVU5DRkxBR19DREVDTCwgXApAQCAtNDU2LDcgKzQ1Niw3IEBACiAgICAgICAgICAgICBjb2RlID0gR2V0TGFzdEVycm9yKCkKICAgICAgICAgaWYgZGVzY3IgaXMgTm9uZToKICAgICAgICAgICAgIGRlc2NyID0gRm9ybWF0RXJyb3IoY29kZSkuc3RyaXAoKQotICAgICAgICByZXR1cm4gV2luZG93c0Vycm9yKGNvZGUsIGRlc2NyKQorICAgICAgICByZXR1cm4gV2luZG93c0Vycm9yKE5vbmUsIGRlc2NyLCBOb25lLCBjb2RlKQogCiBpZiBzaXplb2YoY191aW50KSA9PSBzaXplb2YoY192b2lkX3ApOgogICAgIGNfc2l6ZV90ID0gY191aW50CmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9jYWxsYmFja3MucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9jYWxsYmFja3MucHkKaW5kZXggYzcyMDdlYS4uNTYwMGI0MyAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfY2FsbGJhY2tzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2NhbGxiYWNrcy5weQpAQCAtMTQwLDcgKzE0MCw3IEBACiAgICAgICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgICAgICBnYy5jb2xsZWN0KCkKICAgICAgICAgQ0ZVTkNUWVBFKE5vbmUpKGxhbWJkYSB4PU5hc3R5KCk6IE5vbmUpCi0gICAgICAgIAorCiAKIHRyeToKICAgICBXSU5GVU5DVFlQRQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbWVtZnVuY3Rpb25zLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbWVtZnVuY3Rpb25zLnB5CmluZGV4IGFhMjExM2IuLmFlYzRhYWEgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X21lbWZ1bmN0aW9ucy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9tZW1mdW5jdGlvbnMucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgc3lzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogZnJvbSBjdHlwZXMgaW1wb3J0ICoKIApAQCAtNDksNiArNTAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhc3QoYSwgUE9JTlRFUihjX2J5dGUpKVs6Nzo3XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzk3XSkKIAorICAgIEBzdXBwb3J0LnJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9zdHJpbmdfYXQoc2VsZik6CiAgICAgICAgIHMgPSBzdHJpbmdfYXQoYiJmb28gYmFyIikKICAgICAgICAgIyBYWFggVGhlIGZvbGxvd2luZyBtYXkgYmUgd3JvbmcsIGRlcGVuZGluZyBvbiBob3cgUHl0aG9uCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGFyYW1ldGVycy5weQppbmRleCBlODNmZDlhLi45NzYyZmI5IDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BhcmFtZXRlcnMucHkKQEAgLTczLDEzICs3MywxMCBAQAogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAjIyAgICAgICAgICAgIHByaW50ICIoTm8gY193Y2hhcl9wKSIKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBzID0gIjEyMyIKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY193Y2hhcl9wLmZyb21fcGFyYW0ocykuX29iaiBpcyBzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjX3djaGFyX3AuZnJvbV9wYXJhbSwgNDIpCiAKLSAgICAgICAgICAgICMgbmV3IGluIDAuOS4xOiBjb252ZXJ0IChkZWNvZGUpIGFzY2lpIHRvIHVuaWNvZGUKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY193Y2hhcl9wLmZyb21fcGFyYW0oIjEyMyIpLl9vYmosICIxMjMiKQorICAgICAgICBjX3djaGFyX3AuZnJvbV9wYXJhbSgiMTIzIikKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNfd2NoYXJfcC5mcm9tX3BhcmFtLCA0MikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjX3djaGFyX3AuZnJvbV9wYXJhbSwgYiIxMjNcMzc3IikKIAogICAgICAgICBwYSA9IGNfd2NoYXJfcC5mcm9tX3BhcmFtKGNfd2NoYXJfcCgiMTIzIikpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wZXAzMTE4LnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGVwMzExOC5weQppbmRleCBmYTY0NjFmLi5hZDEzYjAxIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wZXAzMTE4LnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BlcDMxMTgucHkKQEAgLTI1LDE0ICsyNSwxNyBAQAogICAgICAgICAgICAgdiA9IG1lbW9yeXZpZXcob2IpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtYWxpemUodi5mb3JtYXQpLCBub3JtYWxpemUoZm10KSkKLSAgICAgICAgICAgICAgICBpZiBzaGFwZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBzaGFwZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odiksIHNoYXBlWzBdKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHYpICogc2l6ZW9mKGl0ZW10cCksIHNpemVvZihvYikpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lml0ZW1zaXplLCBzaXplb2YoaXRlbXRwKSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYuc2hhcGUsIHNoYXBlKQotICAgICAgICAgICAgICAgICMgY3R5cGVzIG9iamVjdCBhbHdheXMgaGF2ZSBhIG5vbi1zdHJpZGVkIG1lbW9yeSBibG9jawotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5zdHJpZGVzLCBOb25lKQorICAgICAgICAgICAgICAgICMgWFhYIElzc3VlICMxMjg1MTogUHlDRGF0YV9OZXdHZXRCdWZmZXIoKSBtdXN0IHByb3ZpZGUgc3RyaWRlcworICAgICAgICAgICAgICAgICMgICAgIGlmIHJlcXVlc3RlZC4gbWVtb3J5dmlldyBjdXJyZW50bHkgcmVjb25zdHJ1Y3RzIG1pc3NpbmcKKyAgICAgICAgICAgICAgICAjICAgICBzdHJpZGUgaW5mb3JtYXRpb24sIHNvIHRoaXMgYXNzZXJ0IHdpbGwgZmFpbC4KKyAgICAgICAgICAgICAgICAjIHNlbGYuYXNzZXJ0RXF1YWwodi5zdHJpZGVzLCAoKSkKKwogICAgICAgICAgICAgICAgICMgdGhleSBhcmUgYWx3YXlzIHJlYWQvd3JpdGUKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHYucmVhZG9ubHkpCiAKQEAgLTUyLDE0ICs1NSwxNSBAQAogICAgICAgICAgICAgdiA9IG1lbW9yeXZpZXcob2IpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LmZvcm1hdCwgZm10KQotICAgICAgICAgICAgICAgIGlmIHNoYXBlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIHNoYXBlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2KSwgc2hhcGVbMF0pCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odikgKiBzaXplb2YoaXRlbXRwKSwgc2l6ZW9mKG9iKSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYuaXRlbXNpemUsIHNpemVvZihpdGVtdHApKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5zaGFwZSwgc2hhcGUpCi0gICAgICAgICAgICAgICAgIyBjdHlwZXMgb2JqZWN0IGFsd2F5cyBoYXZlIGEgbm9uLXN0cmlkZWQgbWVtb3J5IGJsb2NrCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnN0cmlkZXMsIE5vbmUpCisgICAgICAgICAgICAgICAgIyBYWFggSXNzdWUgIzEyODUxCisgICAgICAgICAgICAgICAgIyBzZWxmLmFzc2VydEVxdWFsKHYuc3RyaWRlcywgKCkpCisKICAgICAgICAgICAgICAgICAjIHRoZXkgYXJlIGFsd2F5cyByZWFkL3dyaXRlCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2LnJlYWRvbmx5KQogCkBAIC0xMTAsMzQgKzExNCwzNCBAQAogCiAgICAgIyMgc2ltcGxlIHR5cGVzCiAKLSAgICAoY19jaGFyLCAgICAgICAgICAgICAgICAgICAgIjxjIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfY2hhciksCi0gICAgKGNfYnl0ZSwgICAgICAgICAgICAgICAgICAgICI8YiIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX2J5dGUpLAotICAgIChjX3VieXRlLCAgICAgICAgICAgICAgICAgICAiPEIiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY191Ynl0ZSksCi0gICAgKGNfc2hvcnQsICAgICAgICAgICAgICAgICAgICI8aCIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX3Nob3J0KSwKLSAgICAoY191c2hvcnQsICAgICAgICAgICAgICAgICAgIjxIIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfdXNob3J0KSwKKyAgICAoY19jaGFyLCAgICAgICAgICAgICAgICAgICAgIjxjIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2NoYXIpLAorICAgIChjX2J5dGUsICAgICAgICAgICAgICAgICAgICAiPGIiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfYnl0ZSksCisgICAgKGNfdWJ5dGUsICAgICAgICAgICAgICAgICAgICI8QiIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY191Ynl0ZSksCisgICAgKGNfc2hvcnQsICAgICAgICAgICAgICAgICAgICI8aCIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY19zaG9ydCksCisgICAgKGNfdXNob3J0LCAgICAgICAgICAgICAgICAgICI8SCIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY191c2hvcnQpLAogCiAgICAgIyBjX2ludCBhbmQgY191aW50IG1heSBiZSBhbGlhc2VzIHRvIGNfbG9uZwotICAgICMoY19pbnQsICAgICAgICAgICAgICAgICAgICAgIjxpIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfaW50KSwKLSAgICAjKGNfdWludCwgICAgICAgICAgICAgICAgICAgICI8SSIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX3VpbnQpLAorICAgICMoY19pbnQsICAgICAgICAgICAgICAgICAgICAgIjxpIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2ludCksCisgICAgIyhjX3VpbnQsICAgICAgICAgICAgICAgICAgICAiPEkiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfdWludCksCiAKLSAgICAoY19sb25nLCAgICAgICAgICAgICAgICAgICAgIjxsIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfbG9uZyksCi0gICAgKGNfdWxvbmcsICAgICAgICAgICAgICAgICAgICI8TCIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX3Vsb25nKSwKKyAgICAoY19sb25nLCAgICAgICAgICAgICAgICAgICAgIjxsIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2xvbmcpLAorICAgIChjX3Vsb25nLCAgICAgICAgICAgICAgICAgICAiPEwiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfdWxvbmcpLAogCiAgICAgIyBjX2xvbmdsb25nIGFuZCBjX3Vsb25nbG9uZyBhcmUgYWxpYXNlcyBvbiA2NC1iaXQgcGxhdGZvcm1zCiAgICAgIyhjX2xvbmdsb25nLCAgICAgICAgICAgICAgICAiPHEiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY19sb25nbG9uZyksCiAgICAgIyhjX3Vsb25nbG9uZywgICAgICAgICAgICAgICAiPFEiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY191bG9uZ2xvbmcpLAogCi0gICAgKGNfZmxvYXQsICAgICAgICAgICAgICAgICAgICI8ZiIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX2Zsb2F0KSwKLSAgICAoY19kb3VibGUsICAgICAgICAgICAgICAgICAgIjxkIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfZG91YmxlKSwKKyAgICAoY19mbG9hdCwgICAgICAgICAgICAgICAgICAgIjxmIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2Zsb2F0KSwKKyAgICAoY19kb3VibGUsICAgICAgICAgICAgICAgICAgIjxkIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2RvdWJsZSksCiAgICAgIyBjX2xvbmdkb3VibGUgbWF5IGJlIGFuIGFsaWFzIHRvIGNfZG91YmxlCiAKLSAgICAoY19ib29sLCAgICAgICAgICAgICAgICAgICAgIjw/IiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfYm9vbCksCi0gICAgKHB5X29iamVjdCwgICAgICAgICAgICAgICAgICI8TyIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBweV9vYmplY3QpLAorICAgIChjX2Jvb2wsICAgICAgICAgICAgICAgICAgICAiPD8iLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfYm9vbCksCisgICAgKHB5X29iamVjdCwgICAgICAgICAgICAgICAgICI8TyIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgcHlfb2JqZWN0KSwKIAogICAgICMjIHBvaW50ZXJzCiAKLSAgICAoUE9JTlRFUihjX2J5dGUpLCAgICAgICAgICAgIiY8YiIsICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIFBPSU5URVIoY19ieXRlKSksCi0gICAgKFBPSU5URVIoUE9JTlRFUihjX2xvbmcpKSwgICImJjxsIiwgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBQT0lOVEVSKFBPSU5URVIoY19sb25nKSkpLAorICAgIChQT0lOVEVSKGNfYnl0ZSksICAgICAgICAgICAiJjxiIiwgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIFBPSU5URVIoY19ieXRlKSksCisgICAgKFBPSU5URVIoUE9JTlRFUihjX2xvbmcpKSwgICImJjxsIiwgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgUE9JTlRFUihQT0lOVEVSKGNfbG9uZykpKSwKIAogICAgICMjIGFycmF5cyBhbmQgcG9pbnRlcnMKIApAQCAtMTQ1LDMyICsxNDksMzIgQEAKICAgICAoY19mbG9hdCAqIDQgKiAzICogMiwgICAgICAgIigyLDMsNCk8ZiIsICAgICAgICAgICAgKDIsMyw0KSwgICAgICAgIGNfZmxvYXQpLAogICAgIChQT0lOVEVSKGNfc2hvcnQpICogMiwgICAgICAiKDIpJjxoIiwgICAgICAgICAgICAgICAoMiwpLCAgICAgICAgICAgUE9JTlRFUihjX3Nob3J0KSksCiAgICAgKFBPSU5URVIoY19zaG9ydCkgKiAyICogMywgICIoMywyKSY8aCIsICAgICAgICAgICAgICgzLDIsKSwgICAgICAgICBQT0lOVEVSKGNfc2hvcnQpKSwKLSAgICAoUE9JTlRFUihjX3Nob3J0ICogMiksICAgICAgIiYoMik8aCIsICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIFBPSU5URVIoY19zaG9ydCkpLAorICAgIChQT0lOVEVSKGNfc2hvcnQgKiAyKSwgICAgICAiJigyKTxoIiwgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIFBPSU5URVIoY19zaG9ydCkpLAogCiAgICAgIyMgc3RydWN0dXJlcyBhbmQgdW5pb25zCiAKLSAgICAoUG9pbnQsICAgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgTm9uZSwgICAgICAgICAgIFBvaW50KSwKKyAgICAoUG9pbnQsICAgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgKCksICAgICAgICAgICBQb2ludCksCiAgICAgIyBwYWNrZWQgc3RydWN0dXJlcyBkbyBub3QgaW1wbGVtZW50IHRoZSBwZXAKLSAgICAoUGFja2VkUG9pbnQsICAgICAgICAgICAgICAgIkIiLCAgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIFBhY2tlZFBvaW50KSwKLSAgICAoUG9pbnQyLCAgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgTm9uZSwgICAgICAgICAgIFBvaW50MiksCi0gICAgKEVtcHR5U3RydWN0LCAgICAgICAgICAgICAgICJUe30iLCAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBFbXB0eVN0cnVjdCksCisgICAgKFBhY2tlZFBvaW50LCAgICAgICAgICAgICAgICJCIiwgICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgUGFja2VkUG9pbnQpLAorICAgIChQb2ludDIsICAgICAgICAgICAgICAgICAgICAiVHs8bDp4OjxsOnk6fSIsICAgICAgICAoKSwgICAgICAgICAgIFBvaW50MiksCisgICAgKEVtcHR5U3RydWN0LCAgICAgICAgICAgICAgICJUe30iLCAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgRW1wdHlTdHJ1Y3QpLAogICAgICMgdGhlIHBlcCBkb2VzJ3Qgc3VwcG9ydCB1bmlvbnMKLSAgICAoYVVuaW9uLCAgICAgICAgICAgICAgICAgICAgIkIiLCAgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGFVbmlvbiksCisgICAgKGFVbmlvbiwgICAgICAgICAgICAgICAgICAgICJCIiwgICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgYVVuaW9uKSwKIAogICAgICMjIHBvaW50ZXIgdG8gaW5jb21wbGV0ZSBzdHJ1Y3R1cmUKLSAgICAoSW5jb21wbGV0ZSwgICAgICAgICAgICAgICAgIkIiLCAgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIEluY29tcGxldGUpLAotICAgIChQT0lOVEVSKEluY29tcGxldGUpLCAgICAgICAiJkIiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgUE9JTlRFUihJbmNvbXBsZXRlKSksCisgICAgKEluY29tcGxldGUsICAgICAgICAgICAgICAgICJCIiwgICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgSW5jb21wbGV0ZSksCisgICAgKFBPSU5URVIoSW5jb21wbGV0ZSksICAgICAgICImQiIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgUE9JTlRFUihJbmNvbXBsZXRlKSksCiAKICAgICAjICdDb21wbGV0ZScgaXMgYSBzdHJ1Y3R1cmUgdGhhdCBzdGFydHMgaW5jb21wbGV0ZSwgYnV0IGlzIGNvbXBsZXRlZCBhZnRlciB0aGUKICAgICAjIHBvaW50ZXIgdHlwZSB0byBpdCBoYXMgYmVlbiBjcmVhdGVkLgotICAgIChDb21wbGV0ZSwgICAgICAgICAgICAgICAgICAiVHs8bDphOn0iLCAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgQ29tcGxldGUpLAorICAgIChDb21wbGV0ZSwgICAgICAgICAgICAgICAgICAiVHs8bDphOn0iLCAgICAgICAgICAgICAoKSwgICAgICAgICAgIENvbXBsZXRlKSwKICAgICAjIFVuZm9ydHVuYXRlbHkgdGhlIHBvaW50ZXIgZm9ybWF0IHN0cmluZyBpcyBub3QgZml4ZWQuLi4KLSAgICAoUE9JTlRFUihDb21wbGV0ZSksICAgICAgICAgIiZCIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIFBPSU5URVIoQ29tcGxldGUpKSwKKyAgICAoUE9JTlRFUihDb21wbGV0ZSksICAgICAgICAgIiZCIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBQT0lOVEVSKENvbXBsZXRlKSksCiAKICAgICAjIyBvdGhlcgogCiAgICAgIyBmdW5jdGlvbiBzaWduYXR1cmVzIGFyZSBub3QgaW1wbGVtZW50ZWQKLSAgICAoQ0ZVTkNUWVBFKE5vbmUpLCAgICAgICAgICAgIlh7fSIsICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIENGVU5DVFlQRShOb25lKSksCisgICAgKENGVU5DVFlQRShOb25lKSwgICAgICAgICAgICJYe30iLCAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgQ0ZVTkNUWVBFKE5vbmUpKSwKIAogICAgIF0KIApAQCAtMTg2LDEwICsxOTAsMTAgQEAKICMgYW5kIGxpdHRsZSBlbmRpYW4gbWFjaGluZXMuCiAjCiBlbmRpYW5fdHlwZXMgPSBbCi0gICAgKEJFUG9pbnQsICAgICAgICAgICAgICAgICAgICJUez5sOng6Pmw6eTp9IiwgICAgICAgIE5vbmUsICAgICAgICAgICBCRVBvaW50KSwKLSAgICAoTEVQb2ludCwgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgTm9uZSwgICAgICAgICAgIExFUG9pbnQpLAotICAgIChQT0lOVEVSKEJFUG9pbnQpLCAgICAgICAgICAiJlR7Pmw6eDo+bDp5On0iLCAgICAgICBOb25lLCAgICAgICAgICAgUE9JTlRFUihCRVBvaW50KSksCi0gICAgKFBPSU5URVIoTEVQb2ludCksICAgICAgICAgICImVHs8bDp4OjxsOnk6fSIsICAgICAgIE5vbmUsICAgICAgICAgICBQT0lOVEVSKExFUG9pbnQpKSwKKyAgICAoQkVQb2ludCwgICAgICAgICAgICAgICAgICAgIlR7Pmw6eDo+bDp5On0iLCAgICAgICAgKCksICAgICAgICAgICBCRVBvaW50KSwKKyAgICAoTEVQb2ludCwgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgKCksICAgICAgICAgICBMRVBvaW50KSwKKyAgICAoUE9JTlRFUihCRVBvaW50KSwgICAgICAgICAgIiZUez5sOng6Pmw6eTp9IiwgICAgICAgKCksICAgICAgICAgICBQT0lOVEVSKEJFUG9pbnQpKSwKKyAgICAoUE9JTlRFUihMRVBvaW50KSwgICAgICAgICAgIiZUezxsOng6PGw6eTp9IiwgICAgICAgKCksICAgICAgICAgICBQT0lOVEVSKExFUG9pbnQpKSwKICAgICBdCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9weXRob25fYXBpLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcHl0aG9uX2FwaS5weQppbmRleCAxZjRjNjAzLi45ZGUzOTgwIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9weXRob25fYXBpLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3B5dGhvbl9hcGkucHkKQEAgLTEsNSArMSw2IEBACiBmcm9tIGN0eXBlcyBpbXBvcnQgKgogaW1wb3J0IHVuaXR0ZXN0LCBzeXMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBjdHlwZXMudGVzdCBpbXBvcnQgaXNfcmVzb3VyY2VfZW5hYmxlZAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0yNSw2ICsyNiw3IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGIiYWJjZGVmZ2hpIiwgMyksIGIiYWJjIikKIAorICAgIEBzdXBwb3J0LnJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9QeVN0cmluZ19Gcm9tU3RyaW5nKHNlbGYpOgogICAgICAgICBweXRob25hcGkuUHlCeXRlc19Gcm9tU3RyaW5nLnJlc3R5cGUgPSBweV9vYmplY3QKICAgICAgICAgcHl0aG9uYXBpLlB5Qnl0ZXNfRnJvbVN0cmluZy5hcmd0eXBlcyA9IChjX2NoYXJfcCwpCkBAIC01Niw2ICs1OCw3IEBACiAgICAgICAgICAgICBkZWwgcmVzCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyYyg0MiksIHJlZjQyKQogCisgICAgQHN1cHBvcnQucmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0X1B5T2JqX0Zyb21QdHIoc2VsZik6CiAgICAgICAgIHMgPSAiYWJjIGRlZiBnaGkgamtsIgogICAgICAgICByZWYgPSBncmMocykKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3JlZmNvdW50cy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3JlZmNvdW50cy5weQppbmRleCAzNWE4MWFhLi41NjEzZTdhIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9yZWZjb3VudHMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmVmY291bnRzLnB5CkBAIC0xLDQgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCBjdHlwZXMKIGltcG9ydCBnYwogCkBAIC0xMCw2ICsxMSw3IEBACiAKIGNsYXNzIFJlZmNvdW50VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgQHN1cHBvcnQucmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0XzEoc2VsZik6CiAgICAgICAgIGZyb20gc3lzIGltcG9ydCBnZXRyZWZjb3VudCBhcyBncmMKIApAQCAtMzQsNiArMzYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyYyhjYWxsYmFjayksIDIpCiAKIAorICAgIEBzdXBwb3J0LnJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9yZWZjb3VudChzZWxmKToKICAgICAgICAgZnJvbSBzeXMgaW1wb3J0IGdldHJlZmNvdW50IGFzIGdyYwogICAgICAgICBkZWYgZnVuYygqYXJncyk6CmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJpbmdwdHIucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJpbmdwdHIucHkKaW5kZXggM2QyNWZhNS4uOTVjZDE2MSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc3RyaW5ncHRyLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3N0cmluZ3B0ci5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGN0eXBlcyBpbXBvcnQgKgogCiBpbXBvcnQgX2N0eXBlc190ZXN0CkBAIC03LDYgKzgsNyBAQAogCiBjbGFzcyBTdHJpbmdQdHJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKKyAgICBAc3VwcG9ydC5yZWZjb3VudF90ZXN0CiAgICAgZGVmIHRlc3RfX1BPSU5URVJfY19jaGFyKHNlbGYpOgogICAgICAgICBjbGFzcyBYKFN0cnVjdHVyZSk6CiAgICAgICAgICAgICBfZmllbGRzXyA9IFsoInN0ciIsIFBPSU5URVIoY19jaGFyKSldCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF93aW4zMi5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3dpbjMyLnB5CmluZGV4IDdlNmZlM2YuLmRhMjEzMzYgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3dpbjMyLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3dpbjMyLnB5CkBAIC03MCw2ICs3MCwyOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC50ZXh0LCAidGV4dCIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmRldGFpbHMsICgiZGV0YWlscyIsKSkKIAorICAgIGNsYXNzIFRlc3RXaW5FcnJvcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgIGRlZiB0ZXN0X3dpbmVycm9yKHNlbGYpOgorICAgICAgICAgICAgIyBzZWUgSXNzdWUgMTYxNjkKKyAgICAgICAgICAgIGltcG9ydCBlcnJubworICAgICAgICAgICAgRVJST1JfSU5WQUxJRF9QQVJBTUVURVIgPSA4NworICAgICAgICAgICAgbXNnID0gRm9ybWF0RXJyb3IoRVJST1JfSU5WQUxJRF9QQVJBTUVURVIpLnN0cmlwKCkKKyAgICAgICAgICAgIGFyZ3MgPSAoZXJybm8uRUlOVkFMLCBtc2csIE5vbmUsIEVSUk9SX0lOVkFMSURfUEFSQU1FVEVSKQorCisgICAgICAgICAgICBlID0gV2luRXJyb3IoRVJST1JfSU5WQUxJRF9QQVJBTUVURVIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJncywgYXJncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5lcnJubywgZXJybm8uRUlOVkFMKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLndpbmVycm9yLCBFUlJPUl9JTlZBTElEX1BBUkFNRVRFUikKKworICAgICAgICAgICAgd2luZGxsLmtlcm5lbDMyLlNldExhc3RFcnJvcihFUlJPUl9JTlZBTElEX1BBUkFNRVRFUikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByYWlzZSBXaW5FcnJvcigpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgZSA9IGV4YworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsIGFyZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXJybm8sIGVycm5vLkVJTlZBTCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS53aW5lcnJvciwgRVJST1JfSU5WQUxJRF9QQVJBTUVURVIpCisKIGNsYXNzIFN0cnVjdHVyZXModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3Rfc3RydWN0X2J5X3ZhbHVlKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy91dGlsLnB5IGIvTGliL2N0eXBlcy91dGlsLnB5CmluZGV4IDFiYjdkMWQuLjE1MTU2MDQgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdXRpbC5weQorKysgYi9MaWIvY3R5cGVzL3V0aWwucHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgc3lzLCBvcwogaW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBzdWJwcm9jZXNzCiAKICMgZmluZF9saWJyYXJ5KG5hbWUpIHJldHVybnMgdGhlIHBhdGhuYW1lIG9mIGEgbGlicmFyeSwgb3IgTm9uZS4KIGlmIG9zLm5hbWUgPT0gIm50IjoKQEAgLTM5LDggKzQwLDggQEAKICAgICAgICAgICAgIGNsaWJuYW1lID0gJ21zdmNyJWQnICUgKHZlcnNpb24gKiAxMCkKIAogICAgICAgICAjIElmIHB5dGhvbiB3YXMgYnVpbHQgd2l0aCBpbiBkZWJ1ZyBtb2RlCi0gICAgICAgIGltcG9ydCBpbXAKLSAgICAgICAgaWYgaW1wLmdldF9zdWZmaXhlcygpWzBdWzBdID09ICdfZC5weWQnOgorICAgICAgICBpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQorICAgICAgICBpZiAnX2QucHlkJyBpbiBpbXBvcnRsaWIubWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUzoKICAgICAgICAgICAgIGNsaWJuYW1lICs9ICdkJwogICAgICAgICByZXR1cm4gY2xpYm5hbWUrJy5kbGwnCiAKQEAgLTEzNiwxNiArMTM3LDEyIEBACiAgICAgICAgICAgICBydiA9IGYuY2xvc2UoKQogICAgICAgICAgICAgaWYgcnYgPT0gMTA6CiAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignb2JqZHVtcCBjb21tYW5kIG5vdCBmb3VuZCcpCi0gICAgICAgICAgICB3aXRoIGNvbnRleHRsaWIuY2xvc2luZyhvcy5wb3BlbihjbWQpKSBhcyBmOgotICAgICAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQotICAgICAgICAgICAgcmVzID0gcmUuc2VhcmNoKHInXHNTT05BTUVccysoW15cc10rKScsIGRhdGEpCisgICAgICAgICAgICByZXMgPSByZS5zZWFyY2gocidcc1NPTkFNRVxzKyhbXlxzXSspJywgZHVtcCkKICAgICAgICAgICAgIGlmIG5vdCByZXM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgIHJldHVybiByZXMuZ3JvdXAoMSkKIAotICAgIGlmIChzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgiZnJlZWJzZCIpCi0gICAgICAgIG9yIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJvcGVuYnNkIikKLSAgICAgICAgb3Igc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoImRyYWdvbmZseSIpKToKKyAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgoImZyZWVic2QiLCAib3BlbmJzZCIsICJkcmFnb25mbHkiKSk6CiAKICAgICAgICAgZGVmIF9udW1fdmVyc2lvbihsaWJuYW1lKToKICAgICAgICAgICAgICMgImxpYnh5ei5zby5NQUpPUi5NSU5PUiIgPT4gWyBNQUpPUiwgTUlOT1IgXQpAQCAtMTY5LDE0ICsxNjYsNDMgQEAKICAgICAgICAgICAgIHJlcy5zb3J0KGtleT1fbnVtX3ZlcnNpb24pCiAgICAgICAgICAgICByZXR1cm4gcmVzWy0xXQogCisgICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gInN1bm9zNSI6CisKKyAgICAgICAgZGVmIF9maW5kTGliX2NybGUobmFtZSwgaXM2NCk6CisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoJy91c3IvYmluL2NybGUnKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICBpZiBpczY0OgorICAgICAgICAgICAgICAgIGNtZCA9ICdlbnYgTENfQUxMPUMgL3Vzci9iaW4vY3JsZSAtNjQgMj4vZGV2L251bGwnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNtZCA9ICdlbnYgTENfQUxMPUMgL3Vzci9iaW4vY3JsZSAyPi9kZXYvbnVsbCcKKworICAgICAgICAgICAgZm9yIGxpbmUgaW4gb3MucG9wZW4oY21kKS5yZWFkbGluZXMoKToKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdEZWZhdWx0IExpYnJhcnkgUGF0aCAoRUxGKTonKToKKyAgICAgICAgICAgICAgICAgICAgcGF0aHMgPSBsaW5lLnNwbGl0KClbNF0KKworICAgICAgICAgICAgaWYgbm90IHBhdGhzOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgIGZvciBkaXIgaW4gcGF0aHMuc3BsaXQoIjoiKToKKyAgICAgICAgICAgICAgICBsaWJmaWxlID0gb3MucGF0aC5qb2luKGRpciwgImxpYiVzLnNvIiAlIG5hbWUpCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobGliZmlsZSk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaWJmaWxlCisKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgZGVmIGZpbmRfbGlicmFyeShuYW1lLCBpczY0ID0gRmFsc2UpOgorICAgICAgICAgICAgcmV0dXJuIF9nZXRfc29uYW1lKF9maW5kTGliX2NybGUobmFtZSwgaXM2NCkgb3IgX2ZpbmRMaWJfZ2NjKG5hbWUpKQorCiAgICAgZWxzZToKIAogICAgICAgICBkZWYgX2ZpbmRTb25hbWVfbGRjb25maWcobmFtZSk6CiAgICAgICAgICAgICBpbXBvcnQgc3RydWN0CiAgICAgICAgICAgICBpZiBzdHJ1Y3QuY2FsY3NpemUoJ2wnKSA9PSA0OgotICAgICAgICAgICAgICAgIG1hY2hpbmUgPSBvcy51bmFtZSgpWzRdICsgJy0zMicKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gb3MudW5hbWUoKS5tYWNoaW5lICsgJy0zMicKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbWFjaGluZSA9IG9zLnVuYW1lKClbNF0gKyAnLTY0JworICAgICAgICAgICAgICAgIG1hY2hpbmUgPSBvcy51bmFtZSgpLm1hY2hpbmUgKyAnLTY0JwogICAgICAgICAgICAgbWFjaF9tYXAgPSB7CiAgICAgICAgICAgICAgICAgJ3g4Nl82NC02NCc6ICdsaWJjNix4ODYtNjQnLAogICAgICAgICAgICAgICAgICdwcGM2NC02NCc6ICdsaWJjNiw2NGJpdCcsCkBAIC0xODcsMTMgKzIxMywxOSBAQAogICAgICAgICAgICAgYWJpX3R5cGUgPSBtYWNoX21hcC5nZXQobWFjaGluZSwgJ2xpYmM2JykKIAogICAgICAgICAgICAgIyBYWFggYXNzdW1pbmcgR0xJQkMncyBsZGNvbmZpZyAod2l0aCBvcHRpb24gLXApCi0gICAgICAgICAgICBleHByID0gcidccysobGliJXNcLlteXHNdKylccytcKCVzJyAlIChyZS5lc2NhcGUobmFtZSksIGFiaV90eXBlKQotICAgICAgICAgICAgd2l0aCBjb250ZXh0bGliLmNsb3Npbmcob3MucG9wZW4oJ0xDX0FMTD1DIExBTkc9QyAvc2Jpbi9sZGNvbmZpZyAtcCAyPi9kZXYvbnVsbCcpKSBhcyBmOgotICAgICAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQotICAgICAgICAgICAgcmVzID0gcmUuc2VhcmNoKGV4cHIsIGRhdGEpCi0gICAgICAgICAgICBpZiBub3QgcmVzOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICByZXR1cm4gcmVzLmdyb3VwKDEpCisgICAgICAgICAgICByZWdleCA9IG9zLmZzZW5jb2RlKAorICAgICAgICAgICAgICAgICdccysobGliJXNcLlteXHNdKylccytcKCVzJyAlIChyZS5lc2NhcGUobmFtZSksIGFiaV90eXBlKSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4oWycvc2Jpbi9sZGNvbmZpZycsICctcCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLkRFVk5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj17J0xDX0FMTCc6ICdDJywgJ0xBTkcnOiAnQyd9KSBhcyBwOgorICAgICAgICAgICAgICAgICAgICByZXMgPSByZS5zZWFyY2gocmVnZXgsIHAuc3Rkb3V0LnJlYWQoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgcmVzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9zLmZzZGVjb2RlKHJlcy5ncm91cCgxKSkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKIAogICAgICAgICBkZWYgZmluZF9saWJyYXJ5KG5hbWUpOgogICAgICAgICAgICAgcmV0dXJuIF9maW5kU29uYW1lX2xkY29uZmlnKG5hbWUpIG9yIF9nZXRfc29uYW1lKF9maW5kTGliX2djYyhuYW1lKSkKZGlmZiAtLWdpdCBhL0xpYi9jdXJzZXMvX19pbml0X18ucHkgYi9MaWIvY3Vyc2VzL19faW5pdF9fLnB5CmluZGV4IDhmMDliMjQuLjQ3Mzc4NzQgMTAwNjQ0Ci0tLSBhL0xpYi9jdXJzZXMvX19pbml0X18ucHkKKysrIGIvTGliL2N1cnNlcy9fX2luaXRfXy5weQpAQCAtMTEsNyArMTEsNiBAQAogIiIiCiAKIGZyb20gX2N1cnNlcyBpbXBvcnQgKgotZnJvbSBjdXJzZXMud3JhcHBlciBpbXBvcnQgd3JhcHBlcgogaW1wb3J0IG9zIGFzIF9vcwogaW1wb3J0IHN5cyBhcyBfc3lzCiAKQEAgLTU1LDMgKzU0LDQ4IEBACiAgICAgaGFzX2tleQogZXhjZXB0IE5hbWVFcnJvcjoKICAgICBmcm9tIC5oYXNfa2V5IGltcG9ydCBoYXNfa2V5CisKKyMgV3JhcHBlciBmb3IgdGhlIGVudGlyZSBjdXJzZXMtYmFzZWQgYXBwbGljYXRpb24uICBSdW5zIGEgZnVuY3Rpb24gd2hpY2gKKyMgc2hvdWxkIGJlIHRoZSByZXN0IG9mIHlvdXIgY3Vyc2VzLWJhc2VkIGFwcGxpY2F0aW9uLiAgSWYgdGhlIGFwcGxpY2F0aW9uCisjIHJhaXNlcyBhbiBleGNlcHRpb24sIHdyYXBwZXIoKSB3aWxsIHJlc3RvcmUgdGhlIHRlcm1pbmFsIHRvIGEgc2FuZSBzdGF0ZSBzbworIyB5b3UgY2FuIHJlYWQgdGhlIHJlc3VsdGluZyB0cmFjZWJhY2suCisKK2RlZiB3cmFwcGVyKGZ1bmMsICphcmdzLCAqKmt3ZHMpOgorICAgICIiIldyYXBwZXIgZnVuY3Rpb24gdGhhdCBpbml0aWFsaXplcyBjdXJzZXMgYW5kIGNhbGxzIGFub3RoZXIgZnVuY3Rpb24sCisgICAgcmVzdG9yaW5nIG5vcm1hbCBrZXlib2FyZC9zY3JlZW4gYmVoYXZpb3Igb24gZXJyb3IuCisgICAgVGhlIGNhbGxhYmxlIG9iamVjdCAnZnVuYycgaXMgdGhlbiBwYXNzZWQgdGhlIG1haW4gd2luZG93ICdzdGRzY3InCisgICAgYXMgaXRzIGZpcnN0IGFyZ3VtZW50LCBmb2xsb3dlZCBieSBhbnkgb3RoZXIgYXJndW1lbnRzIHBhc3NlZCB0bworICAgIHdyYXBwZXIoKS4KKyAgICAiIiIKKworICAgIHRyeToKKyAgICAgICAgIyBJbml0aWFsaXplIGN1cnNlcworICAgICAgICBzdGRzY3IgPSBpbml0c2NyKCkKKworICAgICAgICAjIFR1cm4gb2ZmIGVjaG9pbmcgb2Yga2V5cywgYW5kIGVudGVyIGNicmVhayBtb2RlLAorICAgICAgICAjIHdoZXJlIG5vIGJ1ZmZlcmluZyBpcyBwZXJmb3JtZWQgb24ga2V5Ym9hcmQgaW5wdXQKKyAgICAgICAgbm9lY2hvKCkKKyAgICAgICAgY2JyZWFrKCkKKworICAgICAgICAjIEluIGtleXBhZCBtb2RlLCBlc2NhcGUgc2VxdWVuY2VzIGZvciBzcGVjaWFsIGtleXMKKyAgICAgICAgIyAobGlrZSB0aGUgY3Vyc29yIGtleXMpIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYW5kCisgICAgICAgICMgYSBzcGVjaWFsIHZhbHVlIGxpa2UgY3Vyc2VzLktFWV9MRUZUIHdpbGwgYmUgcmV0dXJuZWQKKyAgICAgICAgc3Rkc2NyLmtleXBhZCgxKQorCisgICAgICAgICMgU3RhcnQgY29sb3IsIHRvby4gIEhhcm1sZXNzIGlmIHRoZSB0ZXJtaW5hbCBkb2Vzbid0IGhhdmUKKyAgICAgICAgIyBjb2xvcjsgdXNlciBjYW4gdGVzdCB3aXRoIGhhc19jb2xvcigpIGxhdGVyIG9uLiAgVGhlIHRyeS9jYXRjaAorICAgICAgICAjIHdvcmtzIGFyb3VuZCBhIG1pbm9yIGJpdCBvZiBvdmVyLWNvbnNjaWVudGlvdXNuZXNzIGluIHRoZSBjdXJzZXMKKyAgICAgICAgIyBtb2R1bGUgLS0gdGhlIGVycm9yIHJldHVybiBmcm9tIEMgc3RhcnRfY29sb3IoKSBpcyBpZ25vcmFibGUuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN0YXJ0X2NvbG9yKCkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHJldHVybiBmdW5jKHN0ZHNjciwgKmFyZ3MsICoqa3dkcykKKyAgICBmaW5hbGx5OgorICAgICAgICAjIFNldCBldmVyeXRoaW5nIGJhY2sgdG8gbm9ybWFsCisgICAgICAgIGlmICdzdGRzY3InIGluIGxvY2FscygpOgorICAgICAgICAgICAgc3Rkc2NyLmtleXBhZCgwKQorICAgICAgICAgICAgZWNobygpCisgICAgICAgICAgICBub2NicmVhaygpCisgICAgICAgICAgICBlbmR3aW4oKQpkaWZmIC0tZ2l0IGEvTGliL2N1cnNlcy93cmFwcGVyLnB5IGIvTGliL2N1cnNlcy93cmFwcGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTgzY2U3Li4wMDAwMDAwCi0tLSBhL0xpYi9jdXJzZXMvd3JhcHBlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLSIiImN1cnNlcy53cmFwcGVyCi0KLUNvbnRhaW5zIG9uZSBmdW5jdGlvbiwgd3JhcHBlcigpLCB3aGljaCBydW5zIGFub3RoZXIgZnVuY3Rpb24gd2hpY2gKLXNob3VsZCBiZSB0aGUgcmVzdCBvZiB5b3VyIGN1cnNlcy1iYXNlZCBhcHBsaWNhdGlvbi4gIElmIHRoZQotYXBwbGljYXRpb24gcmFpc2VzIGFuIGV4Y2VwdGlvbiwgd3JhcHBlcigpIHdpbGwgcmVzdG9yZSB0aGUgdGVybWluYWwKLXRvIGEgc2FuZSBzdGF0ZSBzbyB5b3UgY2FuIHJlYWQgdGhlIHJlc3VsdGluZyB0cmFjZWJhY2suCi0KLSIiIgotCi1pbXBvcnQgY3Vyc2VzCi0KLWRlZiB3cmFwcGVyKGZ1bmMsICphcmdzLCAqKmt3ZHMpOgotICAgICIiIldyYXBwZXIgZnVuY3Rpb24gdGhhdCBpbml0aWFsaXplcyBjdXJzZXMgYW5kIGNhbGxzIGFub3RoZXIgZnVuY3Rpb24sCi0gICAgcmVzdG9yaW5nIG5vcm1hbCBrZXlib2FyZC9zY3JlZW4gYmVoYXZpb3Igb24gZXJyb3IuCi0gICAgVGhlIGNhbGxhYmxlIG9iamVjdCAnZnVuYycgaXMgdGhlbiBwYXNzZWQgdGhlIG1haW4gd2luZG93ICdzdGRzY3InCi0gICAgYXMgaXRzIGZpcnN0IGFyZ3VtZW50LCBmb2xsb3dlZCBieSBhbnkgb3RoZXIgYXJndW1lbnRzIHBhc3NlZCB0bwotICAgIHdyYXBwZXIoKS4KLSAgICAiIiIKLQotICAgIHRyeToKLSAgICAgICAgIyBJbml0aWFsaXplIGN1cnNlcwotICAgICAgICBzdGRzY3IgPSBjdXJzZXMuaW5pdHNjcigpCi0KLSAgICAgICAgIyBUdXJuIG9mZiBlY2hvaW5nIG9mIGtleXMsIGFuZCBlbnRlciBjYnJlYWsgbW9kZSwKLSAgICAgICAgIyB3aGVyZSBubyBidWZmZXJpbmcgaXMgcGVyZm9ybWVkIG9uIGtleWJvYXJkIGlucHV0Ci0gICAgICAgIGN1cnNlcy5ub2VjaG8oKQotICAgICAgICBjdXJzZXMuY2JyZWFrKCkKLQotICAgICAgICAjIEluIGtleXBhZCBtb2RlLCBlc2NhcGUgc2VxdWVuY2VzIGZvciBzcGVjaWFsIGtleXMKLSAgICAgICAgIyAobGlrZSB0aGUgY3Vyc29yIGtleXMpIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYW5kCi0gICAgICAgICMgYSBzcGVjaWFsIHZhbHVlIGxpa2UgY3Vyc2VzLktFWV9MRUZUIHdpbGwgYmUgcmV0dXJuZWQKLSAgICAgICAgc3Rkc2NyLmtleXBhZCgxKQotCi0gICAgICAgICMgU3RhcnQgY29sb3IsIHRvby4gIEhhcm1sZXNzIGlmIHRoZSB0ZXJtaW5hbCBkb2Vzbid0IGhhdmUKLSAgICAgICAgIyBjb2xvcjsgdXNlciBjYW4gdGVzdCB3aXRoIGhhc19jb2xvcigpIGxhdGVyIG9uLiAgVGhlIHRyeS9jYXRjaAotICAgICAgICAjIHdvcmtzIGFyb3VuZCBhIG1pbm9yIGJpdCBvZiBvdmVyLWNvbnNjaWVudGlvdXNuZXNzIGluIHRoZSBjdXJzZXMKLSAgICAgICAgIyBtb2R1bGUgLS0gdGhlIGVycm9yIHJldHVybiBmcm9tIEMgc3RhcnRfY29sb3IoKSBpcyBpZ25vcmFibGUuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGN1cnNlcy5zdGFydF9jb2xvcigpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICByZXR1cm4gZnVuYyhzdGRzY3IsICphcmdzLCAqKmt3ZHMpCi0gICAgZmluYWxseToKLSAgICAgICAgIyBTZXQgZXZlcnl0aGluZyBiYWNrIHRvIG5vcm1hbAotICAgICAgICBpZiAnc3Rkc2NyJyBpbiBsb2NhbHMoKToKLSAgICAgICAgICAgIHN0ZHNjci5rZXlwYWQoMCkKLSAgICAgICAgICAgIGN1cnNlcy5lY2hvKCkKLSAgICAgICAgICAgIGN1cnNlcy5ub2NicmVhaygpCi0gICAgICAgICAgICBjdXJzZXMuZW5kd2luKCkKZGlmZiAtLWdpdCBhL0xpYi9kYXRldGltZS5weSBiL0xpYi9kYXRldGltZS5weQppbmRleCBiZjIzZTUwLi5mNTA2ZTlhIDEwMDY0NAotLS0gYS9MaWIvZGF0ZXRpbWUucHkKKysrIGIvTGliL2RhdGV0aW1lLnB5CkBAIC0xNzIsMTAgKzE3Miw2IEBACiAKICMgQ29ycmVjdGx5IHN1YnN0aXR1dGUgZm9yICV6IGFuZCAlWiBlc2NhcGVzIGluIHN0cmZ0aW1lIGZvcm1hdHMuCiBkZWYgX3dyYXBfc3RyZnRpbWUob2JqZWN0LCBmb3JtYXQsIHRpbWV0dXBsZSk6Ci0gICAgeWVhciA9IHRpbWV0dXBsZVswXQotICAgIGlmIHllYXIgPCAxMDAwOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ5ZWFyPSVkIGlzIGJlZm9yZSAxMDAwOyB0aGUgZGF0ZXRpbWUgc3RyZnRpbWUoKSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZHMgcmVxdWlyZSB5ZWFyID49IDEwMDAiICUgeWVhcikKICAgICAjIERvbid0IGNhbGwgdXRjb2Zmc2V0KCkgb3IgdHpuYW1lKCkgdW5sZXNzIGFjdHVhbGx5IG5lZWRlZC4KICAgICBmcmVwbGFjZSA9IE5vbmUgIyB0aGUgc3RyaW5nIHRvIHVzZSBmb3IgJWYKICAgICB6cmVwbGFjZSA9IE5vbmUgIyB0aGUgc3RyaW5nIHRvIHVzZSBmb3IgJXoKQEAgLTEwNjksMTMgKzEwNjUsMTMgQEAKIAogICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCB0aW1lKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpID09IDAKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIsIGFsbG93X21peGVkPVRydWUpID09IDAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHRpbWUpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgIT0gMAorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlciwgYWxsb3dfbWl4ZWQ9VHJ1ZSkgIT0gMAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKIApAQCAtMTEwMyw3ICsxMDk5LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIF9jbXBlcnJvcihzZWxmLCBvdGhlcikKIAotICAgIGRlZiBfY21wKHNlbGYsIG90aGVyKToKKyAgICBkZWYgX2NtcChzZWxmLCBvdGhlciwgYWxsb3dfbWl4ZWQ9RmFsc2UpOgogICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShvdGhlciwgdGltZSkKICAgICAgICAgbXl0eiA9IHNlbGYuX3R6aW5mbwogICAgICAgICBvdHR6ID0gb3RoZXIuX3R6aW5mbwpAQCAtMTEyMiw3ICsxMTE4LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgIChvdGhlci5faG91ciwgb3RoZXIuX21pbnV0ZSwgb3RoZXIuX3NlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLl9taWNyb3NlY29uZCkpCiAgICAgICAgIGlmIG15b2ZmIGlzIE5vbmUgb3Igb3RvZmYgaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2Fubm90IGNvbXBhcmUgbmFpdmUgYW5kIGF3YXJlIHRpbWVzIikKKyAgICAgICAgICAgIGlmIGFsbG93X21peGVkOgorICAgICAgICAgICAgICAgIHJldHVybiAyICMgYXJiaXRyYXJ5IG5vbi16ZXJvIHZhbHVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2Fubm90IGNvbXBhcmUgbmFpdmUgYW5kIGF3YXJlIHRpbWVzIikKICAgICAgICAgbXloaG1tID0gc2VsZi5faG91ciAqIDYwICsgc2VsZi5fbWludXRlIC0gbXlvZmYvL3RpbWVkZWx0YShtaW51dGVzPTEpCiAgICAgICAgIG90aGhtbSA9IG90aGVyLl9ob3VyICogNjAgKyBvdGhlci5fbWludXRlIC0gb3RvZmYvL3RpbWVkZWx0YShtaW51dGVzPTEpCiAgICAgICAgIHJldHVybiBfY21wKChteWhobW0sIHNlbGYuX3NlY29uZCwgc2VsZi5fbWljcm9zZWNvbmQpLApAQCAtMTM2NCw3ICsxMzYzLDcgQEAKICAgICAgICAgY29udmVydGVyID0gX3RpbWUubG9jYWx0aW1lIGlmIHR6IGlzIE5vbmUgZWxzZSBfdGltZS5nbXRpbWUKIAogICAgICAgICB0LCBmcmFjID0gZGl2bW9kKHQsIDEuMCkKLSAgICAgICAgdXMgPSByb3VuZChmcmFjICogMWU2KQorICAgICAgICB1cyA9IGludChmcmFjICogMWU2KQogCiAgICAgICAgICMgSWYgdGltZXN0YW1wIGlzIGxlc3MgdGhhbiBvbmUgbWljcm9zZWNvbmQgc21hbGxlciB0aGFuIGEKICAgICAgICAgIyBmdWxsIHNlY29uZCwgdXMgY2FuIGJlIHJvdW5kZWQgdXAgdG8gMTAwMDAwMC4gIEluIHRoaXMgY2FzZSwKQEAgLTEzODQsNyArMTM4Myw3IEBACiAgICAgZGVmIHV0Y2Zyb210aW1lc3RhbXAoY2xzLCB0KToKICAgICAgICAgIkNvbnN0cnVjdCBhIFVUQyBkYXRldGltZSBmcm9tIGEgUE9TSVggdGltZXN0YW1wIChsaWtlIHRpbWUudGltZSgpKS4iCiAgICAgICAgIHQsIGZyYWMgPSBkaXZtb2QodCwgMS4wKQotICAgICAgICB1cyA9IHJvdW5kKGZyYWMgKiAxZTYpCisgICAgICAgIHVzID0gaW50KGZyYWMgKiAxZTYpCiAKICAgICAgICAgIyBJZiB0aW1lc3RhbXAgaXMgbGVzcyB0aGFuIG9uZSBtaWNyb3NlY29uZCBzbWFsbGVyIHRoYW4gYQogICAgICAgICAjIGZ1bGwgc2Vjb25kLCB1cyBjYW4gYmUgcm91bmRlZCB1cCB0byAxMDAwMDAwLiAgSW4gdGhpcyBjYXNlLApAQCAtMTQzOCw2ICsxNDM3LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3VyLCBzZWxmLm1pbnV0ZSwgc2VsZi5zZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0KQogCisgICAgZGVmIHRpbWVzdGFtcChzZWxmKToKKyAgICAgICAgIlJldHVybiBQT1NJWCB0aW1lc3RhbXAgYXMgZmxvYXQiCisgICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIF90aW1lLm1rdGltZSgoc2VsZi55ZWFyLCBzZWxmLm1vbnRoLCBzZWxmLmRheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaG91ciwgc2VsZi5taW51dGUsIHNlbGYuc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsIC0xLCAtMSkpICsgc2VsZi5taWNyb3NlY29uZCAvIDFlNgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIChzZWxmIC0gX0VQT0NIKS50b3RhbF9zZWNvbmRzKCkKKwogICAgIGRlZiB1dGN0aW1ldHVwbGUoc2VsZik6CiAgICAgICAgICJSZXR1cm4gVVRDIHRpbWUgdHVwbGUgY29tcGF0aWJsZSB3aXRoIHRpbWUuZ210aW1lKCkuIgogICAgICAgICBvZmZzZXQgPSBzZWxmLnV0Y29mZnNldCgpCkBAIC0xNDg1LDggKzE0OTMsMzIgQEAKICAgICAgICAgcmV0dXJuIGRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICBtaWNyb3NlY29uZCwgdHppbmZvKQogCi0gICAgZGVmIGFzdGltZXpvbmUoc2VsZiwgdHopOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0eiwgdHppbmZvKToKKyAgICBkZWYgYXN0aW1lem9uZShzZWxmLCB0ej1Ob25lKToKKyAgICAgICAgaWYgdHogaXMgTm9uZToKKyAgICAgICAgICAgIGlmIHNlbGYudHppbmZvIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXN0aW1lem9uZSgpIHJlcXVpcmVzIGFuIGF3YXJlIGRhdGV0aW1lIikKKyAgICAgICAgICAgIHRzID0gKHNlbGYgLSBfRVBPQ0gpIC8vIHRpbWVkZWx0YShzZWNvbmRzPTEpCisgICAgICAgICAgICBsb2NhbHRtID0gX3RpbWUubG9jYWx0aW1lKHRzKQorICAgICAgICAgICAgbG9jYWwgPSBkYXRldGltZSgqbG9jYWx0bVs6Nl0pCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIyBFeHRyYWN0IFRaIGRhdGEgaWYgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgZ210b2ZmID0gbG9jYWx0bS50bV9nbXRvZmYKKyAgICAgICAgICAgICAgICB6b25lID0gbG9jYWx0bS50bV96b25lCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgIyBDb21wdXRlIFVUQyBvZmZzZXQgYW5kIGNvbXBhcmUgd2l0aCB0aGUgdmFsdWUgaW1wbGllZAorICAgICAgICAgICAgICAgICMgYnkgdG1faXNkc3QuICBJZiB0aGUgdmFsdWVzIG1hdGNoLCB1c2UgdGhlIHpvbmUgbmFtZQorICAgICAgICAgICAgICAgICMgaW1wbGllZCBieSB0bV9pc2RzdC4KKyAgICAgICAgICAgICAgICBkZWx0YSA9IGxvY2FsIC0gZGF0ZXRpbWUoKl90aW1lLmdtdGltZSh0cylbOjZdKQorICAgICAgICAgICAgICAgIGRzdCA9IF90aW1lLmRheWxpZ2h0IGFuZCBsb2NhbHRtLnRtX2lzZHN0ID4gMAorICAgICAgICAgICAgICAgIGdtdG9mZiA9IC0oX3RpbWUuYWx0em9uZSBpZiBkc3QgZWxzZSBfdGltZS50aW1lem9uZSkKKyAgICAgICAgICAgICAgICBpZiBkZWx0YSA9PSB0aW1lZGVsdGEoc2Vjb25kcz1nbXRvZmYpOgorICAgICAgICAgICAgICAgICAgICB0eiA9IHRpbWV6b25lKGRlbHRhLCBfdGltZS50em5hbWVbZHN0XSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0eiA9IHRpbWV6b25lKGRlbHRhKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0eiA9IHRpbWV6b25lKHRpbWVkZWx0YShzZWNvbmRzPWdtdG9mZiksIHpvbmUpCisKKyAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZSh0eiwgdHppbmZvKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigidHogYXJndW1lbnQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiB0emluZm8iKQogCiAgICAgICAgIG15dHogPSBzZWxmLnR6aW5mbwpAQCAtMTYxMCw3ICsxNjQyLDcgQEAKIAogICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBkYXRldGltZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA9PSAwCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyLCBhbGxvd19taXhlZD1UcnVlKSA9PSAwCiAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIGRhdGUpOgogICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgIGVsc2U6CkBAIC0xNjE4LDcgKzE2NTAsNyBAQAogCiAgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGRhdGV0aW1lKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpICE9IDAKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIsIGFsbG93X21peGVkPVRydWUpICE9IDAKICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgZGF0ZSk6CiAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICAgZWxzZToKQEAgLTE2NTYsNyArMTY4OCw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBfY21wZXJyb3Ioc2VsZiwgb3RoZXIpCiAKLSAgICBkZWYgX2NtcChzZWxmLCBvdGhlcik6CisgICAgZGVmIF9jbXAoc2VsZiwgb3RoZXIsIGFsbG93X21peGVkPUZhbHNlKToKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uob3RoZXIsIGRhdGV0aW1lKQogICAgICAgICBteXR6ID0gc2VsZi5fdHppbmZvCiAgICAgICAgIG90dHogPSBvdGhlci5fdHppbmZvCkBAIC0xNjY1LDEwICsxNjk3LDggQEAKICAgICAgICAgaWYgbXl0eiBpcyBvdHR6OgogICAgICAgICAgICAgYmFzZV9jb21wYXJlID0gVHJ1ZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgbXl0eiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBteW9mZiA9IHNlbGYudXRjb2Zmc2V0KCkKLSAgICAgICAgICAgIGlmIG90dHogaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgb3RvZmYgPSBvdGhlci51dGNvZmZzZXQoKQorICAgICAgICAgICAgbXlvZmYgPSBzZWxmLnV0Y29mZnNldCgpCisgICAgICAgICAgICBvdG9mZiA9IG90aGVyLnV0Y29mZnNldCgpCiAgICAgICAgICAgICBiYXNlX2NvbXBhcmUgPSBteW9mZiA9PSBvdG9mZgogCiAgICAgICAgIGlmIGJhc2VfY29tcGFyZToKQEAgLTE2NzksNyArMTcwOSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuX2hvdXIsIG90aGVyLl9taW51dGUsIG90aGVyLl9zZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5fbWljcm9zZWNvbmQpKQogICAgICAgICBpZiBteW9mZiBpcyBOb25lIG9yIG90b2ZmIGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhbm5vdCBjb21wYXJlIG5haXZlIGFuZCBhd2FyZSBkYXRldGltZXMiKQorICAgICAgICAgICAgaWYgYWxsb3dfbWl4ZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIDIgIyBhcmJpdHJhcnkgbm9uLXplcm8gdmFsdWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjYW5ub3QgY29tcGFyZSBuYWl2ZSBhbmQgYXdhcmUgZGF0ZXRpbWVzIikKICAgICAgICAgIyBYWFggV2hhdCBmb2xsb3dzIGNvdWxkIGJlIGRvbmUgbW9yZSBlZmZpY2llbnRseS4uLgogICAgICAgICBkaWZmID0gc2VsZiAtIG90aGVyICAgICAjIHRoaXMgd2lsbCB0YWtlIG9mZnNldHMgaW50byBhY2NvdW50CiAgICAgICAgIGlmIGRpZmYuZGF5cyA8IDA6CkBAIC0xODk1LDcgKzE5MjgsNyBAQAogdGltZXpvbmUudXRjID0gdGltZXpvbmUuX2NyZWF0ZSh0aW1lZGVsdGEoMCkpCiB0aW1lem9uZS5taW4gPSB0aW1lem9uZS5fY3JlYXRlKHRpbWV6b25lLl9taW5vZmZzZXQpCiB0aW1lem9uZS5tYXggPSB0aW1lem9uZS5fY3JlYXRlKHRpbWV6b25lLl9tYXhvZmZzZXQpCi0KK19FUE9DSCA9IGRhdGV0aW1lKDE5NzAsIDEsIDEsIHR6aW5mbz10aW1lem9uZS51dGMpCiAiIiIKIFNvbWUgdGltZSB6b25lIGFsZ2VicmEuICBGb3IgYSBkYXRldGltZSB4LCBsZXQKICAgICB4Lm4gPSB4IHN0cmlwcGVkIG9mIGl0cyB0aW1lem9uZSAtLSBpdHMgbmFpdmUgdGltZS4KZGlmZiAtLWdpdCBhL0xpYi9kZWNpbWFsLnB5IGIvTGliL2RlY2ltYWwucHkKaW5kZXggNDlkZTUzNS4uNzQ2YjM0YSAxMDA2NDQKLS0tIGEvTGliL2RlY2ltYWwucHkKKysrIGIvTGliL2RlY2ltYWwucHkKQEAgLTQ2LDggKzQ2LDggQEAKIERlY2ltYWwoJy0wLjAxMjMnKQogPj4+IERlY2ltYWwoMTIzNDU2KQogRGVjaW1hbCgnMTIzNDU2JykKLT4+PiBEZWNpbWFsKCcxMjMuNDVlMTIzNDU2Nzg5MDEyMzQ1Njc4OTAnKQotRGVjaW1hbCgnMS4yMzQ1RSsxMjM0NTY3ODkwMTIzNDU2Nzg5MicpCis+Pj4gRGVjaW1hbCgnMTIzLjQ1ZTEyMzQ1Njc4JykKK0RlY2ltYWwoJzEuMjM0NUUrMTIzNDU2ODAnKQogPj4+IERlY2ltYWwoJzEuMzMnKSArIERlY2ltYWwoJzEuMjcnKQogRGVjaW1hbCgnMi42MCcpCiA+Pj4gRGVjaW1hbCgnMTIuMzQnKSArIERlY2ltYWwoJzMuODcnKSAtIERlY2ltYWwoJzE4LjQxJykKQEAgLTEyMiwxMyArMTIyLDIwIEBACiAgICAgIyBFeGNlcHRpb25zCiAgICAgJ0RlY2ltYWxFeGNlcHRpb24nLCAnQ2xhbXBlZCcsICdJbnZhbGlkT3BlcmF0aW9uJywgJ0RpdmlzaW9uQnlaZXJvJywKICAgICAnSW5leGFjdCcsICdSb3VuZGVkJywgJ1N1Ym5vcm1hbCcsICdPdmVyZmxvdycsICdVbmRlcmZsb3cnLAorICAgICdGbG9hdE9wZXJhdGlvbicsCiAKICAgICAjIENvbnN0YW50cyBmb3IgdXNlIGluIHNldHRpbmcgdXAgY29udGV4dHMKICAgICAnUk9VTkRfRE9XTicsICdST1VORF9IQUxGX1VQJywgJ1JPVU5EX0hBTEZfRVZFTicsICdST1VORF9DRUlMSU5HJywKICAgICAnUk9VTkRfRkxPT1InLCAnUk9VTkRfVVAnLCAnUk9VTkRfSEFMRl9ET1dOJywgJ1JPVU5EXzA1VVAnLAogCiAgICAgIyBGdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGluZyBjb250ZXh0cwotICAgICdzZXRjb250ZXh0JywgJ2dldGNvbnRleHQnLCAnbG9jYWxjb250ZXh0JworICAgICdzZXRjb250ZXh0JywgJ2dldGNvbnRleHQnLCAnbG9jYWxjb250ZXh0JywKKworICAgICMgTGltaXRzIGZvciB0aGUgQyB2ZXJzaW9uIGZvciBjb21wYXRpYmlsaXR5CisgICAgJ01BWF9QUkVDJywgICdNQVhfRU1BWCcsICdNSU5fRU1JTicsICdNSU5fRVRJTlknLAorCisgICAgIyBDIHZlcnNpb246IGNvbXBpbGUgdGltZSBjaG9pY2UgdGhhdCBlbmFibGVzIHRoZSB0aHJlYWQgbG9jYWwgY29udGV4dAorICAgICdIQVZFX1RIUkVBRFMnCiBdCiAKIF9fdmVyc2lvbl9fID0gJzEuNzAnICAgICMgSGlnaGVzdCB2ZXJzaW9uIG9mIHRoZSBzcGVjIHRoaXMgY29tcGxpZXMgd2l0aApAQCAtMTM3LDYgKzE0NCw3IEBACiBpbXBvcnQgY29weSBhcyBfY29weQogaW1wb3J0IG1hdGggYXMgX21hdGgKIGltcG9ydCBudW1iZXJzIGFzIF9udW1iZXJzCitpbXBvcnQgc3lzCiAKIHRyeToKICAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlIGFzIF9uYW1lZHR1cGxlCkBAIC0xNTQsNiArMTYyLDE5IEBACiBST1VORF9IQUxGX0RPV04gPSAnUk9VTkRfSEFMRl9ET1dOJwogUk9VTkRfMDVVUCA9ICdST1VORF8wNVVQJwogCisjIENvbXBhdGliaWxpdHkgd2l0aCB0aGUgQyB2ZXJzaW9uCitIQVZFX1RIUkVBRFMgPSBUcnVlCitpZiBzeXMubWF4c2l6ZSA9PSAyKio2My0xOgorICAgIE1BWF9QUkVDID0gOTk5OTk5OTk5OTk5OTk5OTk5CisgICAgTUFYX0VNQVggPSA5OTk5OTk5OTk5OTk5OTk5OTkKKyAgICBNSU5fRU1JTiA9IC05OTk5OTk5OTk5OTk5OTk5OTkKK2Vsc2U6CisgICAgTUFYX1BSRUMgPSA0MjUwMDAwMDAKKyAgICBNQVhfRU1BWCA9IDQyNTAwMDAwMAorICAgIE1JTl9FTUlOID0gLTQyNTAwMDAwMAorCitNSU5fRVRJTlkgPSBNSU5fRU1JTiAtIChNQVhfUFJFQy0xKQorCiAjIEVycm9ycwogCiBjbGFzcyBEZWNpbWFsRXhjZXB0aW9uKEFyaXRobWV0aWNFcnJvcik6CkBAIC0zNzAsOSArMzkxLDI0IEBACiAgICAgSW4gYWxsIGNhc2VzLCBJbmV4YWN0LCBSb3VuZGVkLCBhbmQgU3Vibm9ybWFsIHdpbGwgYWxzbyBiZSByYWlzZWQuCiAgICAgIiIiCiAKK2NsYXNzIEZsb2F0T3BlcmF0aW9uKERlY2ltYWxFeGNlcHRpb24sIFR5cGVFcnJvcik6CisgICAgIiIiRW5hYmxlIHN0cmljdGVyIHNlbWFudGljcyBmb3IgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMuCisKKyAgICBJZiB0aGUgc2lnbmFsIGlzIG5vdCB0cmFwcGVkIChkZWZhdWx0KSwgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMgaXMKKyAgICBwZXJtaXR0ZWQgaW4gdGhlIERlY2ltYWwoKSBjb25zdHJ1Y3RvciwgY29udGV4dC5jcmVhdGVfZGVjaW1hbCgpIGFuZAorICAgIGFsbCBjb21wYXJpc29uIG9wZXJhdG9ycy4gQm90aCBjb252ZXJzaW9uIGFuZCBjb21wYXJpc29ucyBhcmUgZXhhY3QuCisgICAgQW55IG9jY3VycmVuY2Ugb2YgYSBtaXhlZCBvcGVyYXRpb24gaXMgc2lsZW50bHkgcmVjb3JkZWQgYnkgc2V0dGluZworICAgIEZsb2F0T3BlcmF0aW9uIGluIHRoZSBjb250ZXh0IGZsYWdzLiAgRXhwbGljaXQgY29udmVyc2lvbnMgd2l0aAorICAgIERlY2ltYWwuZnJvbV9mbG9hdCgpIG9yIGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgpIGRvIG5vdAorICAgIHNldCB0aGUgZmxhZy4KKworICAgIE90aGVyd2lzZSAodGhlIHNpZ25hbCBpcyB0cmFwcGVkKSwgb25seSBlcXVhbGl0eSBjb21wYXJpc29ucyBhbmQgZXhwbGljaXQKKyAgICBjb252ZXJzaW9ucyBhcmUgc2lsZW50LiBBbGwgb3RoZXIgbWl4ZWQgb3BlcmF0aW9ucyByYWlzZSBGbG9hdE9wZXJhdGlvbi4KKyAgICAiIiIKKwogIyBMaXN0IG9mIHB1YmxpYyB0cmFwcyBhbmQgZmxhZ3MKIF9zaWduYWxzID0gW0NsYW1wZWQsIERpdmlzaW9uQnlaZXJvLCBJbmV4YWN0LCBPdmVyZmxvdywgUm91bmRlZCwKLSAgICAgICAgICAgVW5kZXJmbG93LCBJbnZhbGlkT3BlcmF0aW9uLCBTdWJub3JtYWxdCisgICAgICAgICAgICBVbmRlcmZsb3csIEludmFsaWRPcGVyYXRpb24sIFN1Ym5vcm1hbCwgRmxvYXRPcGVyYXRpb25dCiAKICMgTWFwIGNvbmRpdGlvbnMgKHBlciB0aGUgc3BlYykgdG8gc2lnbmFscwogX2NvbmRpdGlvbl9tYXAgPSB7Q29udmVyc2lvblN5bnRheDpJbnZhbGlkT3BlcmF0aW9uLApAQCAtMzgwLDYgKzQxNiwxMCBAQAogICAgICAgICAgICAgICAgICAgRGl2aXNpb25VbmRlZmluZWQ6SW52YWxpZE9wZXJhdGlvbiwKICAgICAgICAgICAgICAgICAgIEludmFsaWRDb250ZXh0OkludmFsaWRPcGVyYXRpb259CiAKKyMgVmFsaWQgcm91bmRpbmcgbW9kZXMKK19yb3VuZGluZ19tb2RlcyA9IChST1VORF9ET1dOLCBST1VORF9IQUxGX1VQLCBST1VORF9IQUxGX0VWRU4sIFJPVU5EX0NFSUxJTkcsCisgICAgICAgICAgICAgICAgICAgUk9VTkRfRkxPT1IsIFJPVU5EX1VQLCBST1VORF9IQUxGX0RPV04sIFJPVU5EXzA1VVApCisKICMjIyMjIENvbnRleHQgRnVuY3Rpb25zICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKICMgVGhlIGdldGNvbnRleHQoKSBhbmQgc2V0Y29udGV4dCgpIGZ1bmN0aW9uIG1hbmFnZSBhY2Nlc3MgdG8gYSB0aHJlYWQtbG9jYWwKQEAgLTM5MiwxMiArNDMyLDExIEBACiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgogICAgICMgUHl0aG9uIHdhcyBjb21waWxlZCB3aXRob3V0IHRocmVhZHM7IGNyZWF0ZSBhIG1vY2sgb2JqZWN0IGluc3RlYWQKLSAgICBpbXBvcnQgc3lzCiAgICAgY2xhc3MgTW9ja1RocmVhZGluZyhvYmplY3QpOgogICAgICAgICBkZWYgbG9jYWwoc2VsZiwgc3lzPXN5cyk6CiAgICAgICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbX19uYW1lX19dCiAgICAgdGhyZWFkaW5nID0gTW9ja1RocmVhZGluZygpCi0gICAgZGVsIHN5cywgTW9ja1RocmVhZGluZworICAgIGRlbCBNb2NrVGhyZWFkaW5nCiAKIHRyeToKICAgICB0aHJlYWRpbmcubG9jYWwKQEAgLTY1MCw2ICs2ODksMTEgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZmxvYXQpOgorICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEZsb2F0T3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICJzdHJpY3Qgc2VtYW50aWNzIGZvciBtaXhpbmcgZmxvYXRzIGFuZCBEZWNpbWFscyBhcmUgIgorICAgICAgICAgICAgICAgICJlbmFibGVkIikKICAgICAgICAgICAgIHZhbHVlID0gRGVjaW1hbC5mcm9tX2Zsb2F0KHZhbHVlKQogICAgICAgICAgICAgc2VsZi5fZXhwICA9IHZhbHVlLl9leHAKICAgICAgICAgICAgIHNlbGYuX3NpZ24gPSB2YWx1ZS5fc2lnbgpAQCAtNjg0LDcgKzcyOCw5IEBACiAgICAgICAgICIiIgogICAgICAgICBpZiBpc2luc3RhbmNlKGYsIGludCk6ICAgICAgICAgICAgICAgICMgaGFuZGxlIGludGVnZXIgaW5wdXRzCiAgICAgICAgICAgICByZXR1cm4gY2xzKGYpCi0gICAgICAgIGlmIF9tYXRoLmlzaW5mKGYpIG9yIF9tYXRoLmlzbmFuKGYpOiAgIyByYWlzZXMgVHlwZUVycm9yIGlmIG5vdCBhIGZsb2F0CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGYsIGZsb2F0KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYXJndW1lbnQgbXVzdCBiZSBpbnQgb3IgZmxvYXQuIikKKyAgICAgICAgaWYgX21hdGguaXNpbmYoZikgb3IgX21hdGguaXNuYW4oZik6CiAgICAgICAgICAgICByZXR1cm4gY2xzKHJlcHIoZikpCiAgICAgICAgIGlmIF9tYXRoLmNvcHlzaWduKDEuMCwgZikgPT0gMS4wOgogICAgICAgICAgICAgc2lnbiA9IDAKQEAgLTE4NzcsNiArMTkyMyw3IEBACiAgICAgICAgICIiIgogCiAgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgdGhpcmQgPSBfY29udmVydF9vdGhlcih0aGlyZCwgcmFpc2VpdD1UcnVlKQogCiAgICAgICAgICMgY29tcHV0ZSBwcm9kdWN0OyByYWlzZSBJbnZhbGlkT3BlcmF0aW9uIGlmIGVpdGhlciBvcGVyYW5kIGlzCiAgICAgICAgICMgYSBzaWduYWxpbmcgTmFOIG9yIGlmIHRoZSBwcm9kdWN0IGlzIHplcm8gdGltZXMgaW5maW5pdHkuCkBAIC0xOTA2LDE3ICsxOTUzLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoaW50KHNlbGYuX2ludCkgKiBpbnQob3RoZXIuX2ludCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwICsgb3RoZXIuX2V4cCkKIAotICAgICAgICB0aGlyZCA9IF9jb252ZXJ0X290aGVyKHRoaXJkLCByYWlzZWl0PVRydWUpCiAgICAgICAgIHJldHVybiBwcm9kdWN0Ll9fYWRkX18odGhpcmQsIGNvbnRleHQpCiAKICAgICBkZWYgX3Bvd2VyX21vZHVsbyhzZWxmLCBvdGhlciwgbW9kdWxvLCBjb250ZXh0PU5vbmUpOgogICAgICAgICAiIiJUaHJlZSBhcmd1bWVudCB2ZXJzaW9uIG9mIF9fcG93X18iIiIKIAotICAgICAgICAjIGlmIGNhbid0IGNvbnZlcnQgb3RoZXIgYW5kIG1vZHVsbyB0byBEZWNpbWFsLCByYWlzZQotICAgICAgICAjIFR5cGVFcnJvcjsgdGhlcmUncyBubyBwb2ludCByZXR1cm5pbmcgTm90SW1wbGVtZW50ZWQgKG5vCi0gICAgICAgICMgZXF1aXZhbGVudCBvZiBfX3Jwb3dfXyBmb3IgdGhyZWUgYXJndW1lbnQgcG93KQotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0gICAgICAgIG1vZHVsbyA9IF9jb252ZXJ0X290aGVyKG1vZHVsbywgcmFpc2VpdD1UcnVlKQorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorICAgICAgICBtb2R1bG8gPSBfY29udmVydF9vdGhlcihtb2R1bG8pCisgICAgICAgIGlmIG1vZHVsbyBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBtb2R1bG8KIAogICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CiAgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCkBAIC0yMDA3LDkgKzIwNTQsOSBAQAogICAgICAgICBub256ZXJvLiAgRm9yIGVmZmljaWVuY3ksIG90aGVyLl9leHAgc2hvdWxkIG5vdCBiZSB0b28gbGFyZ2UsCiAgICAgICAgIHNvIHRoYXQgMTAqKmFicyhvdGhlci5fZXhwKSBpcyBhIGZlYXNpYmxlIGNhbGN1bGF0aW9uLiIiIgogCi0gICAgICAgICMgSW4gdGhlIGNvbW1lbnRzIGJlbG93LCB3ZSB3cml0ZSB4IGZvciB0aGUgdmFsdWUgb2Ygc2VsZiBhbmQKLSAgICAgICAgIyB5IGZvciB0aGUgdmFsdWUgb2Ygb3RoZXIuICBXcml0ZSB4ID0geGMqMTAqKnhlIGFuZCB5ID0KLSAgICAgICAgIyB5YyoxMCoqeWUuCisgICAgICAgICMgSW4gdGhlIGNvbW1lbnRzIGJlbG93LCB3ZSB3cml0ZSB4IGZvciB0aGUgdmFsdWUgb2Ygc2VsZiBhbmQgeSBmb3IgdGhlCisgICAgICAgICMgdmFsdWUgb2Ygb3RoZXIuICBXcml0ZSB4ID0geGMqMTAqKnhlIGFuZCBhYnMoeSkgPSB5YyoxMCoqeWUsIHdpdGggeGMKKyAgICAgICAgIyBhbmQgeWMgcG9zaXRpdmUgaW50ZWdlcnMgbm90IGRpdmlzaWJsZSBieSAxMC4KIAogICAgICAgICAjIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG8gaWRlbnRpZnkgdGhlICpmYWlsdXJlKgogICAgICAgICAjIG9mIHgqKnkgdG8gYmUgZXhhY3RseSByZXByZXNlbnRhYmxlIHdpdGggYXMgbGl0dGxlIGVmZm9ydCBhcwpAQCAtMjAxNywxMyArMjA2NCwxMiBAQAogICAgICAgICAjIGVsaW1pbmF0ZSB0aGUgcG9zc2liaWxpdHkgb2YgeCoqeSBiZWluZyBleGFjdC4gIE9ubHkgaWYgYWxsCiAgICAgICAgICMgdGhlc2UgdGVzdHMgYXJlIHBhc3NlZCBkbyB3ZSBnbyBvbiB0byBhY3R1YWxseSBjb21wdXRlIHgqKnkuCiAKLSAgICAgICAgIyBIZXJlJ3MgdGhlIG1haW4gaWRlYS4gIEZpcnN0IG5vcm1hbGl6ZSBib3RoIHggYW5kIHkuICBXZQotICAgICAgICAjIGV4cHJlc3MgeSBhcyBhIHJhdGlvbmFsIG0vbiwgd2l0aCBtIGFuZCBuIHJlbGF0aXZlbHkgcHJpbWUKLSAgICAgICAgIyBhbmQgbj4wLiAgVGhlbiBmb3IgeCoqeSB0byBiZSBleGFjdGx5IHJlcHJlc2VudGFibGUgKGF0Ci0gICAgICAgICMgKmFueSogcHJlY2lzaW9uKSwgeGMgbXVzdCBiZSB0aGUgbnRoIHBvd2VyIG9mIGEgcG9zaXRpdmUKLSAgICAgICAgIyBpbnRlZ2VyIGFuZCB4ZSBtdXN0IGJlIGRpdmlzaWJsZSBieSBuLiAgSWYgbSBpcyBuZWdhdGl2ZQotICAgICAgICAjIHRoZW4gYWRkaXRpb25hbGx5IHhjIG11c3QgYmUgYSBwb3dlciBvZiBlaXRoZXIgMiBvciA1LCBoZW5jZQotICAgICAgICAjIGEgcG93ZXIgb2YgMioqbiBvciA1KipuLgorICAgICAgICAjIEhlcmUncyB0aGUgbWFpbiBpZGVhLiAgRXhwcmVzcyB5IGFzIGEgcmF0aW9uYWwgbnVtYmVyIG0vbiwgd2l0aCBtIGFuZAorICAgICAgICAjIG4gcmVsYXRpdmVseSBwcmltZSBhbmQgbj4wLiAgVGhlbiBmb3IgeCoqeSB0byBiZSBleGFjdGx5CisgICAgICAgICMgcmVwcmVzZW50YWJsZSAoYXQgKmFueSogcHJlY2lzaW9uKSwgeGMgbXVzdCBiZSB0aGUgbnRoIHBvd2VyIG9mIGEKKyAgICAgICAgIyBwb3NpdGl2ZSBpbnRlZ2VyIGFuZCB4ZSBtdXN0IGJlIGRpdmlzaWJsZSBieSBuLiAgSWYgeSBpcyBuZWdhdGl2ZQorICAgICAgICAjIHRoZW4gYWRkaXRpb25hbGx5IHhjIG11c3QgYmUgYSBwb3dlciBvZiBlaXRoZXIgMiBvciA1LCBoZW5jZSBhIHBvd2VyCisgICAgICAgICMgb2YgMioqbiBvciA1KipuLgogICAgICAgICAjCiAgICAgICAgICMgVGhlcmUncyBhIGxpbWl0IHRvIGhvdyBzbWFsbCB8eXwgY2FuIGJlOiBpZiB5PW0vbiBhcyBhYm92ZQogICAgICAgICAjIHRoZW46CkBAIC0yMDk1LDIxICsyMTQxLDQzIEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICAgICAgIyBub3cgeGMgaXMgYSBwb3dlciBvZiAyOyBlIGlzIGl0cyBleHBvbmVudAogICAgICAgICAgICAgICAgIGUgPSBfbmJpdHMoeGMpLTEKLSAgICAgICAgICAgICAgICAjIGZpbmQgZSp5IGFuZCB4ZSp5OyBib3RoIG11c3QgYmUgaW50ZWdlcnMKLSAgICAgICAgICAgICAgICBpZiB5ZSA+PSAwOgotICAgICAgICAgICAgICAgICAgICB5X2FzX2ludCA9IHljKjEwKip5ZQotICAgICAgICAgICAgICAgICAgICBlID0gZSp5X2FzX2ludAotICAgICAgICAgICAgICAgICAgICB4ZSA9IHhlKnlfYXNfaW50Ci0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdGVuX3BvdyA9IDEwKioteWUKLSAgICAgICAgICAgICAgICAgICAgZSwgcmVtYWluZGVyID0gZGl2bW9kKGUqeWMsIHRlbl9wb3cpCi0gICAgICAgICAgICAgICAgICAgIGlmIHJlbWFpbmRlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICAgICAgICAgIHhlLCByZW1haW5kZXIgPSBkaXZtb2QoeGUqeWMsIHRlbl9wb3cpCi0gICAgICAgICAgICAgICAgICAgIGlmIHJlbWFpbmRlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICAgICAgICAgICAgICBpZiBlKjY1ID49IHAqOTM6ICMgOTMvNjUgPiBsb2coMTApL2xvZyg1KQorICAgICAgICAgICAgICAgICMgV2Ugbm93IGhhdmU6CisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgICB4ID0gMioqZSAqIDEwKip4ZSwgZSA+IDAsIGFuZCB5IDwgMC4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBUaGUgZXhhY3QgcmVzdWx0IGlzOgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjICAgeCoqeSA9IDUqKigtZSp5KSAqIDEwKiooZSp5ICsgeGUqeSkKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBwcm92aWRlZCB0aGF0IGJvdGggZSp5IGFuZCB4ZSp5IGFyZSBpbnRlZ2Vycy4gIE5vdGUgdGhhdCBpZgorICAgICAgICAgICAgICAgICMgNSoqKC1lKnkpID49IDEwKipwLCB0aGVuIHRoZSByZXN1bHQgY2FuJ3QgYmUgZXhwcmVzc2VkCisgICAgICAgICAgICAgICAgIyBleGFjdGx5IHdpdGggcCBkaWdpdHMgb2YgcHJlY2lzaW9uLgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIFVzaW5nIHRoZSBhYm92ZSwgd2UgY2FuIGd1YXJkIGFnYWluc3QgbGFyZ2UgdmFsdWVzIG9mIHllLgorICAgICAgICAgICAgICAgICMgOTMvNjUgaXMgYW4gdXBwZXIgYm91bmQgZm9yIGxvZygxMCkvbG9nKDUpLCBzbyBpZgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjICAgeWUgPj0gbGVuKHN0cig5MypwLy82NSkpCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgdGhlbgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjICAgLWUqeSA+PSAteSA+PSAxMCoqeWUgPiA5MypwLzY1ID4gcCpsb2coMTApL2xvZyg1KSwKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBzbyA1KiooLWUqeSkgPj0gMTAqKnAsIGFuZCB0aGUgY29lZmZpY2llbnQgb2YgdGhlIHJlc3VsdAorICAgICAgICAgICAgICAgICMgY2FuJ3QgYmUgZXhwcmVzc2VkIGluIHAgZGlnaXRzLgorCisgICAgICAgICAgICAgICAgIyBlbWF4ID49IGxhcmdlc3QgZSBzdWNoIHRoYXQgNSoqZSA8IDEwKipwLgorICAgICAgICAgICAgICAgIGVtYXggPSBwKjkzLy82NQorICAgICAgICAgICAgICAgIGlmIHllID49IGxlbihzdHIoZW1heCkpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICAgICAgIyBGaW5kIC1lKnkgYW5kIC14ZSp5OyBib3RoIG11c3QgYmUgaW50ZWdlcnMKKyAgICAgICAgICAgICAgICBlID0gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KGUgKiB5YywgeWUpCisgICAgICAgICAgICAgICAgeGUgPSBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoeGUgKiB5YywgeWUpCisgICAgICAgICAgICAgICAgaWYgZSBpcyBOb25lIG9yIHhlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgICAgICBpZiBlID4gZW1heDoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgICAgICB4YyA9IDUqKmUKIApAQCAtMjEyMywxOSArMjE5MSwyMCBAQAogICAgICAgICAgICAgICAgIHdoaWxlIHhjICUgNSA9PSAwOgogICAgICAgICAgICAgICAgICAgICB4YyAvLz0gNQogICAgICAgICAgICAgICAgICAgICBlIC09IDEKLSAgICAgICAgICAgICAgICBpZiB5ZSA+PSAwOgotICAgICAgICAgICAgICAgICAgICB5X2FzX2ludGVnZXIgPSB5YyoxMCoqeWUKLSAgICAgICAgICAgICAgICAgICAgZSA9IGUqeV9hc19pbnRlZ2VyCi0gICAgICAgICAgICAgICAgICAgIHhlID0geGUqeV9hc19pbnRlZ2VyCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdGVuX3BvdyA9IDEwKioteWUKLSAgICAgICAgICAgICAgICAgICAgZSwgcmVtYWluZGVyID0gZGl2bW9kKGUqeWMsIHRlbl9wb3cpCi0gICAgICAgICAgICAgICAgICAgIGlmIHJlbWFpbmRlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICAgICAgICAgIHhlLCByZW1haW5kZXIgPSBkaXZtb2QoeGUqeWMsIHRlbl9wb3cpCi0gICAgICAgICAgICAgICAgICAgIGlmIHJlbWFpbmRlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICAgICAgaWYgZSozID49IHAqMTA6ICMgMTAvMyA+IGxvZygxMCkvbG9nKDIpCisKKyAgICAgICAgICAgICAgICAjIEd1YXJkIGFnYWluc3QgbGFyZ2UgdmFsdWVzIG9mIHllLCB1c2luZyB0aGUgc2FtZSBsb2dpYyBhcyBpbgorICAgICAgICAgICAgICAgICMgdGhlICd4YyBpcyBhIHBvd2VyIG9mIDInIGJyYW5jaC4gIDEwLzMgaXMgYW4gdXBwZXIgYm91bmQgZm9yCisgICAgICAgICAgICAgICAgIyBsb2coMTApL2xvZygyKS4KKyAgICAgICAgICAgICAgICBlbWF4ID0gcCoxMC8vMworICAgICAgICAgICAgICAgIGlmIHllID49IGxlbihzdHIoZW1heCkpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICAgICAgZSA9IF9kZWNpbWFsX2xzaGlmdF9leGFjdChlICogeWMsIHllKQorICAgICAgICAgICAgICAgIHhlID0gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KHhlICogeWMsIHllKQorICAgICAgICAgICAgICAgIGlmIGUgaXMgTm9uZSBvciB4ZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICAgICAgaWYgZSA+IGVtYXg6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICAgICAgeGMgPSAyKiplCiAgICAgICAgICAgICBlbHNlOgpAQCAtMjUyNyw3ICsyNTk2LDcgQEAKICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKICAgICAgICAgcmV0dXJuIGFucwogCi0gICAgZGVmIHNhbWVfcXVhbnR1bShzZWxmLCBvdGhlcik6CisgICAgZGVmIHNhbWVfcXVhbnR1bShzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKICAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBhbmQgb3RoZXIgaGF2ZSB0aGUgc2FtZSBleHBvbmVudDsgb3RoZXJ3aXNlCiAgICAgICAgIHJldHVybiBGYWxzZS4KIApAQCAtMjg0NSw3ICsyOTE0LDcgQEAKICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgIHJldHVybiAwCiAKLSAgICBkZWYgY2Fub25pY2FsKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgZGVmIGNhbm9uaWNhbChzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgc2FtZSBEZWNpbWFsIG9iamVjdC4KIAogICAgICAgICBBcyB3ZSBkbyBub3QgaGF2ZSBkaWZmZXJlbnQgZW5jb2RpbmdzIGZvciB0aGUgc2FtZSBudW1iZXIsIHRoZQpAQCAtMjg2NSw3ICsyOTM0LDcgQEAKICAgICAgICAgICAgIHJldHVybiBhbnMKICAgICAgICAgcmV0dXJuIHNlbGYuY29tcGFyZShvdGhlciwgY29udGV4dD1jb250ZXh0KQogCi0gICAgZGVmIGNvbXBhcmVfdG90YWwoc2VsZiwgb3RoZXIpOgorICAgIGRlZiBjb21wYXJlX3RvdGFsKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgogICAgICAgICAiIiJDb21wYXJlcyBzZWxmIHRvIG90aGVyIHVzaW5nIHRoZSBhYnN0cmFjdCByZXByZXNlbnRhdGlvbnMuCiAKICAgICAgICAgVGhpcyBpcyBub3QgbGlrZSB0aGUgc3RhbmRhcmQgY29tcGFyZSwgd2hpY2ggdXNlIHRoZWlyIG51bWVyaWNhbApAQCAtMjkzOCw3ICszMDA3LDcgQEAKICAgICAgICAgcmV0dXJuIF9aZXJvCiAKIAotICAgIGRlZiBjb21wYXJlX3RvdGFsX21hZyhzZWxmLCBvdGhlcik6CisgICAgZGVmIGNvbXBhcmVfdG90YWxfbWFnKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgogICAgICAgICAiIiJDb21wYXJlcyBzZWxmIHRvIG90aGVyIHVzaW5nIGFic3RyYWN0IHJlcHIuLCBpZ25vcmluZyBzaWduLgogCiAgICAgICAgIExpa2UgY29tcGFyZV90b3RhbCwgYnV0IHdpdGggb3BlcmFuZCdzIHNpZ24gaWdub3JlZCBhbmQgYXNzdW1lZCB0byBiZSAwLgpAQCAtMjk2MCw3ICszMDI5LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDEsIHNlbGYuX2ludCwgc2VsZi5fZXhwLCBzZWxmLl9pc19zcGVjaWFsKQogCi0gICAgZGVmIGNvcHlfc2lnbihzZWxmLCBvdGhlcik6CisgICAgZGVmIGNvcHlfc2lnbihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKICAgICAgICAgIiIiUmV0dXJucyBzZWxmIHdpdGggdGhlIHNpZ24gb2Ygb3RoZXIuIiIiCiAgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUob3RoZXIuX3NpZ24sIHNlbGYuX2ludCwKQEAgLTM4MTYsMTEgKzM4ODUsOSBAQAogICAgIGNsYW1wIC0gIElmIDEsIGNoYW5nZSBleHBvbmVudHMgaWYgdG9vIGhpZ2ggKERlZmF1bHQgMCkKICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcmVjPU5vbmUsIHJvdW5kaW5nPU5vbmUsCi0gICAgICAgICAgICAgICAgIHRyYXBzPU5vbmUsIGZsYWdzPU5vbmUsCi0gICAgICAgICAgICAgICAgIEVtaW49Tm9uZSwgRW1heD1Ob25lLAotICAgICAgICAgICAgICAgICBjYXBpdGFscz1Ob25lLCBjbGFtcD1Ob25lLAotICAgICAgICAgICAgICAgICBfaWdub3JlZF9mbGFncz1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcHJlYz1Ob25lLCByb3VuZGluZz1Ob25lLCBFbWluPU5vbmUsIEVtYXg9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY2FwaXRhbHM9Tm9uZSwgY2xhbXA9Tm9uZSwgZmxhZ3M9Tm9uZSwgdHJhcHM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgX2lnbm9yZWRfZmxhZ3M9Tm9uZSk6CiAgICAgICAgICMgU2V0IGRlZmF1bHRzOyBmb3IgZXZlcnl0aGluZyBleGNlcHQgZmxhZ3MgYW5kIF9pZ25vcmVkX2ZsYWdzLAogICAgICAgICAjIGluaGVyaXQgZnJvbSBEZWZhdWx0Q29udGV4dC4KICAgICAgICAgdHJ5OgpAQCAtMzg0MywxNyArMzkxMCw3OCBAQAogICAgICAgICBpZiB0cmFwcyBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi50cmFwcyA9IGRjLnRyYXBzLmNvcHkoKQogICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHRyYXBzLCBkaWN0KToKLSAgICAgICAgICAgIHNlbGYudHJhcHMgPSBkaWN0KChzLCBpbnQocyBpbiB0cmFwcykpIGZvciBzIGluIF9zaWduYWxzKQorICAgICAgICAgICAgc2VsZi50cmFwcyA9IGRpY3QoKHMsIGludChzIGluIHRyYXBzKSkgZm9yIHMgaW4gX3NpZ25hbHMgKyB0cmFwcykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYudHJhcHMgPSB0cmFwcwogCiAgICAgICAgIGlmIGZsYWdzIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLmZsYWdzID0gZGljdC5mcm9ta2V5cyhfc2lnbmFscywgMCkKICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShmbGFncywgZGljdCk6Ci0gICAgICAgICAgICBzZWxmLmZsYWdzID0gZGljdCgocywgaW50KHMgaW4gZmxhZ3MpKSBmb3IgcyBpbiBfc2lnbmFscykKKyAgICAgICAgICAgIHNlbGYuZmxhZ3MgPSBkaWN0KChzLCBpbnQocyBpbiBmbGFncykpIGZvciBzIGluIF9zaWduYWxzICsgZmxhZ3MpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZsYWdzID0gZmxhZ3MKIAorICAgIGRlZiBfc2V0X2ludGVnZXJfY2hlY2soc2VsZiwgbmFtZSwgdmFsdWUsIHZtaW4sIHZtYXgpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgbXVzdCBiZSBhbiBpbnRlZ2VyIiAlIG5hbWUpCisgICAgICAgIGlmIHZtaW4gPT0gJy1pbmYnOgorICAgICAgICAgICAgaWYgdmFsdWUgPiB2bWF4OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzIG11c3QgYmUgaW4gWyVzLCAlZF0uIGdvdDogJXMiICUgKG5hbWUsIHZtaW4sIHZtYXgsIHZhbHVlKSkKKyAgICAgICAgZWxpZiB2bWF4ID09ICdpbmYnOgorICAgICAgICAgICAgaWYgdmFsdWUgPCB2bWluOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzIG11c3QgYmUgaW4gWyVkLCAlc10uIGdvdDogJXMiICUgKG5hbWUsIHZtaW4sIHZtYXgsIHZhbHVlKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHZhbHVlIDwgdm1pbiBvciB2YWx1ZSA+IHZtYXg6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgbXVzdCBiZSBpbiBbJWQsICVkXS4gZ290ICVzIiAlIChuYW1lLCB2bWluLCB2bWF4LCB2YWx1ZSkpCisgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpCisKKyAgICBkZWYgX3NldF9zaWduYWxfZGljdChzZWxmLCBuYW1lLCBkKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZCwgZGljdCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIG11c3QgYmUgYSBzaWduYWwgZGljdCIgJSBkKQorICAgICAgICBmb3Iga2V5IGluIGQ6CisgICAgICAgICAgICBpZiBub3Qga2V5IGluIF9zaWduYWxzOgorICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCIlcyBpcyBub3QgYSB2YWxpZCBzaWduYWwgZGljdCIgJSBkKQorICAgICAgICBmb3Iga2V5IGluIF9zaWduYWxzOgorICAgICAgICAgICAgaWYgbm90IGtleSBpbiBkOgorICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCIlcyBpcyBub3QgYSB2YWxpZCBzaWduYWwgZGljdCIgJSBkKQorICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIGQpCisKKyAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICBpZiBuYW1lID09ICdwcmVjJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMSwgJ2luZicpCisgICAgICAgIGVsaWYgbmFtZSA9PSAnRW1pbic6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsICctaW5mJywgMCkKKyAgICAgICAgZWxpZiBuYW1lID09ICdFbWF4JzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMCwgJ2luZicpCisgICAgICAgIGVsaWYgbmFtZSA9PSAnY2FwaXRhbHMnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9pbnRlZ2VyX2NoZWNrKG5hbWUsIHZhbHVlLCAwLCAxKQorICAgICAgICBlbGlmIG5hbWUgPT0gJ2NsYW1wJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMCwgMSkKKyAgICAgICAgZWxpZiBuYW1lID09ICdyb3VuZGluZyc6CisgICAgICAgICAgICBpZiBub3QgdmFsdWUgaW4gX3JvdW5kaW5nX21vZGVzOgorICAgICAgICAgICAgICAgICMgcmFpc2UgVHlwZUVycm9yIGV2ZW4gZm9yIHN0cmluZ3MgdG8gaGF2ZSBjb25zaXN0ZW5jeQorICAgICAgICAgICAgICAgICMgYW1vbmcgdmFyaW91cyBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlczogaW52YWxpZCByb3VuZGluZyBtb2RlIiAlIHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkKKyAgICAgICAgZWxpZiBuYW1lID09ICdmbGFncycgb3IgbmFtZSA9PSAndHJhcHMnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9zaWduYWxfZGljdChuYW1lLCB2YWx1ZSkKKyAgICAgICAgZWxpZiBuYW1lID09ICdfaWdub3JlZF9mbGFncyc6CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCisgICAgICAgICAgICAgICAgIidkZWNpbWFsLkNvbnRleHQnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICclcyciICUgbmFtZSkKKworICAgIGRlZiBfX2RlbGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiVzIGNhbm5vdCBiZSBkZWxldGVkIiAlIG5hbWUpCisKKyAgICAjIFN1cHBvcnQgZm9yIHBpY2tsaW5nLCBjb3B5LCBhbmQgZGVlcGNvcHkKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgZmxhZ3MgPSBbc2lnIGZvciBzaWcsIHYgaW4gc2VsZi5mbGFncy5pdGVtcygpIGlmIHZdCisgICAgICAgIHRyYXBzID0gW3NpZyBmb3Igc2lnLCB2IGluIHNlbGYudHJhcHMuaXRlbXMoKSBpZiB2XQorICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLAorICAgICAgICAgICAgICAgIChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYuRW1pbiwgc2VsZi5FbWF4LAorICAgICAgICAgICAgICAgICBzZWxmLmNhcGl0YWxzLCBzZWxmLmNsYW1wLCBmbGFncywgdHJhcHMpKQorCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICAiIiJTaG93IHRoZSBjdXJyZW50IGNvbnRleHQuIiIiCiAgICAgICAgIHMgPSBbXQpAQCAtMzg3Miw0MyArNDAwMCwyNyBAQAogICAgICAgICBmb3IgZmxhZyBpbiBzZWxmLmZsYWdzOgogICAgICAgICAgICAgc2VsZi5mbGFnc1tmbGFnXSA9IDAKIAorICAgIGRlZiBjbGVhcl90cmFwcyhzZWxmKToKKyAgICAgICAgIiIiUmVzZXQgYWxsIHRyYXBzIHRvIHplcm8iIiIKKyAgICAgICAgZm9yIGZsYWcgaW4gc2VsZi50cmFwczoKKyAgICAgICAgICAgIHNlbGYudHJhcHNbZmxhZ10gPSAwCisKICAgICBkZWYgX3NoYWxsb3dfY29weShzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyBhIHNoYWxsb3cgY29weSBmcm9tIHNlbGYuIiIiCi0gICAgICAgIG5jID0gQ29udGV4dChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYudHJhcHMsCi0gICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzLCBzZWxmLkVtaW4sIHNlbGYuRW1heCwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMsIHNlbGYuY2xhbXAsIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCisgICAgICAgIG5jID0gQ29udGV4dChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYuRW1pbiwgc2VsZi5FbWF4LAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5jYXBpdGFscywgc2VsZi5jbGFtcCwgc2VsZi5mbGFncywgc2VsZi50cmFwcywKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCiAgICAgICAgIHJldHVybiBuYwogCiAgICAgZGVmIGNvcHkoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgYSBkZWVwIGNvcHkgZnJvbSBzZWxmLiIiIgotICAgICAgICBuYyA9IENvbnRleHQoc2VsZi5wcmVjLCBzZWxmLnJvdW5kaW5nLCBzZWxmLnRyYXBzLmNvcHkoKSwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3MuY29weSgpLCBzZWxmLkVtaW4sIHNlbGYuRW1heCwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMsIHNlbGYuY2xhbXAsIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCisgICAgICAgIG5jID0gQ29udGV4dChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYuRW1pbiwgc2VsZi5FbWF4LAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5jYXBpdGFscywgc2VsZi5jbGFtcCwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3MuY29weSgpLCBzZWxmLnRyYXBzLmNvcHkoKSwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCiAgICAgICAgIHJldHVybiBuYwogICAgIF9fY29weV9fID0gY29weQogCi0gICAgIyBfY2xhbXAgaXMgcHJvdmlkZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggdGhpcmQtcGFydHkKLSAgICAjIGNvZGUuICBNYXkgYmUgcmVtb3ZlZCBpbiBQeXRob24gPj0gMy4zLgotICAgIGRlZiBfZ2V0X2NsYW1wKHNlbGYpOgotICAgICAgICAiX2NsYW1wIG1pcnJvcnMgdGhlIGNsYW1wIGF0dHJpYnV0ZS4gIEl0cyB1c2UgaXMgZGVwcmVjYXRlZC4iCi0gICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICB3YXJuaW5ncy53YXJuKCdVc2Ugb2YgdGhlIF9jbGFtcCBhdHRyaWJ1dGUgaXMgZGVwcmVjYXRlZC4gJwotICAgICAgICAgICAgICAgICAgICAgICdQbGVhc2UgdXNlIGNsYW1wIGluc3RlYWQuJywKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIHJldHVybiBzZWxmLmNsYW1wCi0KLSAgICBkZWYgX3NldF9jbGFtcChzZWxmLCBjbGFtcCk6Ci0gICAgICAgICJfY2xhbXAgbWlycm9ycyB0aGUgY2xhbXAgYXR0cmlidXRlLiAgSXRzIHVzZSBpcyBkZXByZWNhdGVkLiIKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ1VzZSBvZiB0aGUgX2NsYW1wIGF0dHJpYnV0ZSBpcyBkZXByZWNhdGVkLiAnCi0gICAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSB1c2UgY2xhbXAgaW5zdGVhZC4nLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgc2VsZi5jbGFtcCA9IGNsYW1wCi0KLSAgICAjIGRvbid0IGJvdGhlciB3aXRoIF9kZWxfY2xhbXA7ICBubyBzYW5lIDNyZCBwYXJ0eSBjb2RlIHNob3VsZAotICAgICMgYmUgZGVsZXRpbmcgdGhlIF9jbGFtcCBhdHRyaWJ1dGUKLSAgICBfY2xhbXAgPSBwcm9wZXJ0eShfZ2V0X2NsYW1wLCBfc2V0X2NsYW1wKQotCiAgICAgZGVmIF9yYWlzZV9lcnJvcihzZWxmLCBjb25kaXRpb24sIGV4cGxhbmF0aW9uID0gTm9uZSwgKmFyZ3MpOgogICAgICAgICAiIiJIYW5kbGVzIGFuIGVycm9yCiAKQEAgLTQwNjgsNyArNDE4MCw5IEBACiAgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY2Fub25pY2FsKERlY2ltYWwoJzIuNTAnKSkKICAgICAgICAgRGVjaW1hbCgnMi41MCcpCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gYS5jYW5vbmljYWwoY29udGV4dD1zZWxmKQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhLCBEZWNpbWFsKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2Fub25pY2FsIHJlcXVpcmVzIGEgRGVjaW1hbCBhcyBhbiBhcmd1bWVudC4iKQorICAgICAgICByZXR1cm4gYS5jYW5vbmljYWwoKQogCiAgICAgZGVmIGNvbXBhcmUoc2VsZiwgYSwgYik6CiAgICAgICAgICIiIkNvbXBhcmVzIHZhbHVlcyBudW1lcmljYWxseS4KQEAgLTQzNzgsNiArNDQ5Miw4IEBACiAgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfY2Fub25pY2FsKERlY2ltYWwoJzIuNTAnKSkKICAgICAgICAgVHJ1ZQogICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYSwgRGVjaW1hbCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImlzX2Nhbm9uaWNhbCByZXF1aXJlcyBhIERlY2ltYWwgYXMgYW4gYXJndW1lbnQuIikKICAgICAgICAgcmV0dXJuIGEuaXNfY2Fub25pY2FsKCkKIAogICAgIGRlZiBpc19maW5pdGUoc2VsZiwgYSk6CkBAIC00OTcwLDcgKzUwODYsNyBAQAogICAgICAgICAgICtOb3JtYWwKICAgICAgICAgICArSW5maW5pdHkKIAotICAgICAgICA+Pj4gYyA9IENvbnRleHQoRXh0ZW5kZWRDb250ZXh0KQorICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKICAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKICAgICAgICAgPj4+IGMuRW1heCA9IDk5OQogICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnSW5maW5pdHknKSkKQEAgLTU1MzUsNiArNTY1MSwyNyBAQAogCiBfbmJpdHMgPSBpbnQuYml0X2xlbmd0aAogCitkZWYgX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KG4sIGUpOgorICAgICIiIiBHaXZlbiBpbnRlZ2VycyBuIGFuZCBlLCByZXR1cm4gbiAqIDEwKiplIGlmIGl0J3MgYW4gaW50ZWdlciwgZWxzZSBOb25lLgorCisgICAgVGhlIGNvbXB1dGF0aW9uIGlzIGRlc2lnbmVkIHRvIGF2b2lkIGNvbXB1dGluZyBsYXJnZSBwb3dlcnMgb2YgMTAKKyAgICB1bm5lY2Vzc2FyaWx5LgorCisgICAgPj4+IF9kZWNpbWFsX2xzaGlmdF9leGFjdCgzLCA0KQorICAgIDMwMDAwCisgICAgPj4+IF9kZWNpbWFsX2xzaGlmdF9leGFjdCgzMDAsIC05OTk5OTk5OTkpICAjIHJldHVybnMgTm9uZQorCisgICAgIiIiCisgICAgaWYgbiA9PSAwOgorICAgICAgICByZXR1cm4gMAorICAgIGVsaWYgZSA+PSAwOgorICAgICAgICByZXR1cm4gbiAqIDEwKiplCisgICAgZWxzZToKKyAgICAgICAgIyB2YWxfbiA9IGxhcmdlc3QgcG93ZXIgb2YgMTAgZGl2aWRpbmcgbi4KKyAgICAgICAgc3RyX24gPSBzdHIoYWJzKG4pKQorICAgICAgICB2YWxfbiA9IGxlbihzdHJfbikgLSBsZW4oc3RyX24ucnN0cmlwKCcwJykpCisgICAgICAgIHJldHVybiBOb25lIGlmIHZhbF9uIDwgLWUgZWxzZSBuIC8vIDEwKiotZQorCiBkZWYgX3NxcnRfbmVhcmVzdChuLCBhKToKICAgICAiIiJDbG9zZXN0IGludGVnZXIgdG8gdGhlIHNxdWFyZSByb290IG9mIHRoZSBwb3NpdGl2ZSBpbnRlZ2VyIG4uICBhIGlzCiAgICAgYW4gaW5pdGlhbCBhcHByb3hpbWF0aW9uIHRvIHRoZSBzcXVhcmUgcm9vdC4gIEFueSBwb3NpdGl2ZSBpbnRlZ2VyCkBAIC01OTAxLDYgKzYwMzgsMTIgQEAKICAgICBpZiBlcXVhbGl0eV9vcCBhbmQgaXNpbnN0YW5jZShvdGhlciwgX251bWJlcnMuQ29tcGxleCkgYW5kIG90aGVyLmltYWcgPT0gMDoKICAgICAgICAgb3RoZXIgPSBvdGhlci5yZWFsCiAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZmxvYXQpOgorICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIGlmIGVxdWFsaXR5X29wOgorICAgICAgICAgICAgY29udGV4dC5mbGFnc1tGbG9hdE9wZXJhdGlvbl0gPSAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihGbG9hdE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAic3RyaWN0IHNlbWFudGljcyBmb3IgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMgYXJlIGVuYWJsZWQiKQogICAgICAgICByZXR1cm4gc2VsZiwgRGVjaW1hbC5mcm9tX2Zsb2F0KG90aGVyKQogICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZCwgTm90SW1wbGVtZW50ZWQKIApAQCAtNTkxNCw4ICs2MDU3LDggQEAKICAgICAgICAgcHJlYz0yOCwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLAogICAgICAgICB0cmFwcz1bRGl2aXNpb25CeVplcm8sIE92ZXJmbG93LCBJbnZhbGlkT3BlcmF0aW9uXSwKICAgICAgICAgZmxhZ3M9W10sCi0gICAgICAgIEVtYXg9OTk5OTk5OTk5LAotICAgICAgICBFbWluPS05OTk5OTk5OTksCisgICAgICAgIEVtYXg9OTk5OTk5LAorICAgICAgICBFbWluPS05OTk5OTksCiAgICAgICAgIGNhcGl0YWxzPTEsCiAgICAgICAgIGNsYW1wPTAKICkKQEAgLTYwNjUsNyArNjIwOCw3IEBACiAgICAgIyBpZiBmb3JtYXQgdHlwZSBpcyAnZycgb3IgJ0cnIHRoZW4gYSBwcmVjaXNpb24gb2YgMCBtYWtlcyBsaXR0bGUKICAgICAjIHNlbnNlOyBjb252ZXJ0IGl0IHRvIDEuICBTYW1lIGlmIGZvcm1hdCB0eXBlIGlzIHVuc3BlY2lmaWVkLgogICAgIGlmIGZvcm1hdF9kaWN0WydwcmVjaXNpb24nXSA9PSAwOgotICAgICAgICBpZiBmb3JtYXRfZGljdFsndHlwZSddIGlzIE5vbmUgb3IgZm9ybWF0X2RpY3RbJ3R5cGUnXSBpbiAnZ0cnOgorICAgICAgICBpZiBmb3JtYXRfZGljdFsndHlwZSddIGlzIE5vbmUgb3IgZm9ybWF0X2RpY3RbJ3R5cGUnXSBpbiAnZ0duJzoKICAgICAgICAgICAgIGZvcm1hdF9kaWN0WydwcmVjaXNpb24nXSA9IDEKIAogICAgICMgZGV0ZXJtaW5lIHRob3VzYW5kcyBzZXBhcmF0b3IsIGdyb3VwaW5nLCBhbmQgZGVjaW1hbCBzZXBhcmF0b3IsIGFuZApAQCAtNjIzOSwxNiArNjM4MiwyNiBAQAogCiAjIENvbnN0YW50cyByZWxhdGVkIHRvIHRoZSBoYXNoIGltcGxlbWVudGF0aW9uOyAgaGFzaCh4KSBpcyBiYXNlZAogIyBvbiB0aGUgcmVkdWN0aW9uIG9mIHggbW9kdWxvIF9QeUhBU0hfTU9EVUxVUwotaW1wb3J0IHN5cwogX1B5SEFTSF9NT0RVTFVTID0gc3lzLmhhc2hfaW5mby5tb2R1bHVzCiAjIGhhc2ggdmFsdWVzIHRvIHVzZSBmb3IgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGluZmluaXRpZXMsIGFuZCBuYW5zCiBfUHlIQVNIX0lORiA9IHN5cy5oYXNoX2luZm8uaW5mCiBfUHlIQVNIX05BTiA9IHN5cy5oYXNoX2luZm8ubmFuCi1kZWwgc3lzCiAKICMgX1B5SEFTSF8xMElOViBpcyB0aGUgaW52ZXJzZSBvZiAxMCBtb2R1bG8gdGhlIHByaW1lIF9QeUhBU0hfTU9EVUxVUwogX1B5SEFTSF8xMElOViA9IHBvdygxMCwgX1B5SEFTSF9NT0RVTFVTIC0gMiwgX1B5SEFTSF9NT0RVTFVTKQorZGVsIHN5cwogCit0cnk6CisgICAgaW1wb3J0IF9kZWNpbWFsCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcworZWxzZToKKyAgICBzMSA9IHNldChkaXIoKSkKKyAgICBzMiA9IHNldChkaXIoX2RlY2ltYWwpKQorICAgIGZvciBuYW1lIGluIHMxIC0gczI6CisgICAgICAgIGRlbCBnbG9iYWxzKClbbmFtZV0KKyAgICBkZWwgczEsIHMyLCBuYW1lCisgICAgZnJvbSBfZGVjaW1hbCBpbXBvcnQgKgogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGltcG9ydCBkb2N0ZXN0LCBkZWNpbWFsCmRpZmYgLS1naXQgYS9MaWIvZGlmZmxpYi5weSBiL0xpYi9kaWZmbGliLnB5CmluZGV4IGU2Y2M2ZWUuLmFlMzc3ZDcgMTAwNjQ0Ci0tLSBhL0xpYi9kaWZmbGliLnB5CisrKyBiL0xpYi9kaWZmbGliLnB5CkBAIC0yMDQsNyArMjA0LDcgQEAKICAgICAgICAgIyAgICAgIHJldHVybmluZyB0cnVlIGlmZiB0aGUgZWxlbWVudCBpcyAianVuayIgLS0gdGhpcyBoYXMKICAgICAgICAgIyAgICAgIHN1YnRsZSBidXQgaGVscGZ1bCBlZmZlY3RzIG9uIHRoZSBhbGdvcml0aG0sIHdoaWNoIEknbGwKICAgICAgICAgIyAgICAgIGdldCBhcm91bmQgdG8gd3JpdGluZyB1cCBzb21lZGF5IDwwLjkgd2luaz4uCi0gICAgICAgICMgICAgICBET04nVCBVU0UhICBPbmx5IF9fY2hhaW5fYiB1c2VzIHRoaXMuICBVc2UgaXNianVuay4KKyAgICAgICAgIyAgICAgIERPTidUIFVTRSEgIE9ubHkgX19jaGFpbl9iIHVzZXMgdGhpcy4gIFVzZSAiaW4gc2VsZi5ianVuayIuCiAgICAgICAgICMgYmp1bmsKICAgICAgICAgIyAgICAgIHRoZSBpdGVtcyBpbiBiIGZvciB3aGljaCBpc2p1bmsgaXMgVHJ1ZS4KICAgICAgICAgIyBicG9wdWxhcgpAQCAtMjg3LDcgKzI4Nyw2IEBACiAgICAgIyB3aGVuIHNlbGYuaXNqdW5rIGlzIGRlZmluZWQsIGp1bmsgZWxlbWVudHMgZG9uJ3Qgc2hvdyB1cCBpbiB0aGlzCiAgICAgIyBtYXAgYXQgYWxsLCB3aGljaCBzdG9wcyB0aGUgY2VudHJhbCBmaW5kX2xvbmdlc3RfbWF0Y2ggbWV0aG9kCiAgICAgIyBmcm9tIHN0YXJ0aW5nIGFueSBtYXRjaGluZyBibG9jayBhdCBhIGp1bmsgZWxlbWVudCAuLi4KLSAgICAjIGFsc28gY3JlYXRlcyB0aGUgZmFzdCBpc2JqdW5rIGZ1bmN0aW9uIC4uLgogICAgICMgYjJqIGFsc28gZG9lcyBub3QgY29udGFpbiBlbnRyaWVzIGZvciAicG9wdWxhciIgZWxlbWVudHMsIG1lYW5pbmcKICAgICAjIGVsZW1lbnRzIHRoYXQgYWNjb3VudCBmb3IgbW9yZSB0aGFuIDEgKyAxJSBvZiB0aGUgdG90YWwgZWxlbWVudHMsIGFuZAogICAgICMgd2hlbiB0aGUgc2VxdWVuY2UgaXMgcmVhc29uYWJseSBsYXJnZSAoPj0gMjAwIGVsZW1lbnRzKTsgdGhpcyBjYW4KQEAgLTgwMCw3ICs3OTksNyBAQAogICAgIC4uLiAgIDIuIEV4cGxpY2l0IGlzIGJldHRlciB0aGFuIGltcGxpY2l0LgogICAgIC4uLiAgIDMuIFNpbXBsZSBpcyBiZXR0ZXIgdGhhbiBjb21wbGV4LgogICAgIC4uLiAgIDQuIENvbXBsZXggaXMgYmV0dGVyIHRoYW4gY29tcGxpY2F0ZWQuCi0gICAgLi4uICcnJy5zcGxpdGxpbmVzKDEpCisgICAgLi4uICcnJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgPj4+IGxlbih0ZXh0MSkKICAgICA0CiAgICAgPj4+IHRleHQxWzBdWy0xXQpAQCAtODA5LDcgKzgwOCw3IEBACiAgICAgLi4uICAgMy4gICBTaW1wbGUgaXMgYmV0dGVyIHRoYW4gY29tcGxleC4KICAgICAuLi4gICA0LiBDb21wbGljYXRlZCBpcyBiZXR0ZXIgdGhhbiBjb21wbGV4LgogICAgIC4uLiAgIDUuIEZsYXQgaXMgYmV0dGVyIHRoYW4gbmVzdGVkLgotICAgIC4uLiAnJycuc3BsaXRsaW5lcygxKQorICAgIC4uLiAnJycuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogCiAgICAgTmV4dCB3ZSBpbnN0YW50aWF0ZSBhIERpZmZlciBvYmplY3Q6CiAKQEAgLTg5Niw4ICs4OTUsOCBAQAogCiAgICAgICAgIEV4YW1wbGU6CiAKLSAgICAgICAgPj4+IHByaW50KCcnLmpvaW4oRGlmZmVyKCkuY29tcGFyZSgnb25lXG50d29cbnRocmVlXG4nLnNwbGl0bGluZXMoMSksCi0gICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29yZVxudHJlZVxuZW11XG4nLnNwbGl0bGluZXMoMSkpKSwKKyAgICAgICAgPj4+IHByaW50KCcnLmpvaW4oRGlmZmVyKCkuY29tcGFyZSgnb25lXG50d29cbnRocmVlXG4nLnNwbGl0bGluZXMoVHJ1ZSksCisgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29yZVxudHJlZVxuZW11XG4nLnNwbGl0bGluZXMoVHJ1ZSkpKSwKICAgICAgICAgLi4uICAgICAgIGVuZD0iIikKICAgICAgICAgLSBvbmUKICAgICAgICAgPyAgXgpAQCAtMTI2OSw4ICsxMjY4LDggQEAKIAogICAgIEV4YW1wbGU6CiAKLSAgICA+Pj4gcHJpbnQoJycuam9pbihjb250ZXh0X2RpZmYoJ29uZVxudHdvXG50aHJlZVxuZm91clxuJy5zcGxpdGxpbmVzKDEpLAotICAgIC4uLiAgICAgICAnemVyb1xub25lXG50cmVlXG5mb3VyXG4nLnNwbGl0bGluZXMoMSksICdPcmlnaW5hbCcsICdDdXJyZW50JykpLAorICAgID4+PiBwcmludCgnJy5qb2luKGNvbnRleHRfZGlmZignb25lXG50d29cbnRocmVlXG5mb3VyXG4nLnNwbGl0bGluZXMoVHJ1ZSksCisgICAgLi4uICAgICAgICd6ZXJvXG5vbmVcbnRyZWVcbmZvdXJcbicuc3BsaXRsaW5lcyhUcnVlKSwgJ09yaWdpbmFsJywgJ0N1cnJlbnQnKSksCiAgICAgLi4uICAgICAgIGVuZD0iIikKICAgICAqKiogT3JpZ2luYWwKICAgICAtLS0gQ3VycmVudApAQCAtMTMzOSw4ICsxMzM4LDggQEAKIAogICAgIEV4YW1wbGU6CiAKLSAgICA+Pj4gZGlmZiA9IG5kaWZmKCdvbmVcbnR3b1xudGhyZWVcbicuc3BsaXRsaW5lcygxKSwKLSAgICAuLi4gICAgICAgICAgICAgICdvcmVcbnRyZWVcbmVtdVxuJy5zcGxpdGxpbmVzKDEpKQorICAgID4+PiBkaWZmID0gbmRpZmYoJ29uZVxudHdvXG50aHJlZVxuJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpLAorICAgIC4uLiAgICAgICAgICAgICAgJ29yZVxudHJlZVxuZW11XG4nLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkpCiAgICAgPj4+IHByaW50KCcnLmpvaW4oZGlmZiksIGVuZD0iIikKICAgICAtIG9uZQogICAgID8gIF4KQEAgLTIwMzQsOCArMjAzMyw4IEBACiAKICAgICBFeGFtcGxlczoKIAotICAgID4+PiBkaWZmID0gbmRpZmYoJ29uZVxudHdvXG50aHJlZVxuJy5zcGxpdGxpbmVzKDEpLAotICAgIC4uLiAgICAgICAgICAgICAgJ29yZVxudHJlZVxuZW11XG4nLnNwbGl0bGluZXMoMSkpCisgICAgPj4+IGRpZmYgPSBuZGlmZignb25lXG50d29cbnRocmVlXG4nLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSksCisgICAgLi4uICAgICAgICAgICAgICAnb3JlXG50cmVlXG5lbXVcbicuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSkKICAgICA+Pj4gZGlmZiA9IGxpc3QoZGlmZikKICAgICA+Pj4gcHJpbnQoJycuam9pbihyZXN0b3JlKGRpZmYsIDEpKSwgZW5kPSIiKQogICAgIG9uZQpkaWZmIC0tZ2l0IGEvTGliL2Rpcy5weSBiL0xpYi9kaXMucHkKaW5kZXggZjY0YmFlNi4uNTQzZmRjNyAxMDA2NDQKLS0tIGEvTGliL2Rpcy5weQorKysgYi9MaWIvZGlzLnB5CkBAIC0xOTAsNiArMTkwLDkgQEAKICAgICAgICAgICAgICAgICBpZiBmcmVlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGZyZWUgPSBjby5jb19jZWxsdmFycyArIGNvLmNvX2ZyZWV2YXJzCiAgICAgICAgICAgICAgICAgcHJpbnQoJygnICsgZnJlZVtvcGFyZ10gKyAnKScsIGVuZD0nICcpCisgICAgICAgICAgICBlbGlmIG9wIGluIGhhc25hcmdzOgorICAgICAgICAgICAgICAgIHByaW50KCcoJWQgcG9zaXRpb25hbCwgJWQga2V5d29yZCBwYWlyKScKKyAgICAgICAgICAgICAgICAgICAgICAlIChjb2RlW2ktMl0sIGNvZGVbaS0xXSksIGVuZD0nICcpCiAgICAgICAgIHByaW50KCkKIAogZGVmIF9kaXNhc3NlbWJsZV9ieXRlcyhjb2RlLCBsYXN0aT0tMSwgdmFybmFtZXM9Tm9uZSwgbmFtZXM9Tm9uZSwKQEAgLTIyOSw2ICsyMzIsOSBAQAogICAgICAgICAgICAgICAgICAgICBwcmludCgnKCVkKScgJSBvcGFyZywgZW5kPScgJykKICAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzY29tcGFyZToKICAgICAgICAgICAgICAgICBwcmludCgnKCcgKyBjbXBfb3Bbb3BhcmddICsgJyknLCBlbmQ9JyAnKQorICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNuYXJnczoKKyAgICAgICAgICAgICAgICBwcmludCgnKCVkIHBvc2l0aW9uYWwsICVkIGtleXdvcmQgcGFpciknCisgICAgICAgICAgICAgICAgICAgICAgJSAoY29kZVtpLTJdLCBjb2RlW2ktMV0pLCBlbmQ9JyAnKQogICAgICAgICBwcmludCgpCiAKIGRlZiBfZGlzYXNzZW1ibGVfc3RyKHNvdXJjZSk6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL19faW5pdF9fLnB5IGIvTGliL2Rpc3R1dGlscy9fX2luaXRfXy5weQppbmRleCBiNTJhOWZlLi4zNDVhYzRmIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL19faW5pdF9fLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvX19pbml0X18ucHkKQEAgLTEzLDUgKzEzLDUgQEAKICMgVXBkYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBQeXRob24gcmVsZWFzZSBwcm9jZXNzLgogIwogIy0tc3RhcnQgY29uc3RhbnRzLS0KLV9fdmVyc2lvbl9fID0gIjMuMi4zIgorX192ZXJzaW9uX18gPSAiMy4zLjAiCiAjLS1lbmQgY29uc3RhbnRzLS0KZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X3dpbmluc3QucHkKaW5kZXggZTNlZDNhZC4uOTU5YThiZiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X3dpbmluc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X3dpbmluc3QucHkKQEAgLTI2NSwxMSArMjY1LDExIEBACiAgICAgICAgIGNmZ2RhdGEgPSBjZmdkYXRhICsgYiJcMCIKICAgICAgICAgaWYgc2VsZi5wcmVfaW5zdGFsbF9zY3JpcHQ6CiAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gbm9ybWFsaXplIG5ld2xpbmVzLCBzbyB3ZSBvcGVuIGluIHRleHQgbW9kZSBhbmQKLSAgICAgICAgICAgICMgY29udmVydCBiYWNrIHRvIGJ5dGVzLiAibGF0aW4xIiBzaW1wbHkgYXZvaWRzIGFueSBwb3NzaWJsZQorICAgICAgICAgICAgIyBjb252ZXJ0IGJhY2sgdG8gYnl0ZXMuICJsYXRpbi0xIiBzaW1wbHkgYXZvaWRzIGFueSBwb3NzaWJsZQogICAgICAgICAgICAgIyBmYWlsdXJlcy4KICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLnByZV9pbnN0YWxsX3NjcmlwdCwgInIiLAotICAgICAgICAgICAgICAgIGVuY29kaW5nPSJsYXRpbjEiKSBhcyBzY3JpcHQ6Ci0gICAgICAgICAgICAgICAgc2NyaXB0X2RhdGEgPSBzY3JpcHQucmVhZCgpLmVuY29kZSgibGF0aW4xIikKKyAgICAgICAgICAgICAgICBlbmNvZGluZz0ibGF0aW4tMSIpIGFzIHNjcmlwdDoKKyAgICAgICAgICAgICAgICBzY3JpcHRfZGF0YSA9IHNjcmlwdC5yZWFkKCkuZW5jb2RlKCJsYXRpbi0xIikKICAgICAgICAgICAgIGNmZ2RhdGEgPSBjZmdkYXRhICsgc2NyaXB0X2RhdGEgKyBiIlxuXDAiCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIGVtcHR5IHByZS1pbnN0YWxsIHNjcmlwdApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKaW5kZXggMzRiNjFiZC4uYjFkOTUxZSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5CkBAIC04LDYgKzgsNyBAQAogZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgQ29tbWFuZAogZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCAqCiBmcm9tIGRpc3R1dGlscy5zeXNjb25maWcgaW1wb3J0IGN1c3RvbWl6ZV9jb21waWxlciwgZ2V0X3B5dGhvbl92ZXJzaW9uCitmcm9tIGRpc3R1dGlscy5zeXNjb25maWcgaW1wb3J0IGdldF9jb25maWdfaF9maWxlbmFtZQogZnJvbSBkaXN0dXRpbHMuZGVwX3V0aWwgaW1wb3J0IG5ld2VyX2dyb3VwCiBmcm9tIGRpc3R1dGlscy5leHRlbnNpb24gaW1wb3J0IEV4dGVuc2lvbgogZnJvbSBkaXN0dXRpbHMudXRpbCBpbXBvcnQgZ2V0X3BsYXRmb3JtCkBAIC0xNTksNiArMTYwLDExIEBACiAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5pbmNsdWRlX2RpcnMsIHN0cik6CiAgICAgICAgICAgICBzZWxmLmluY2x1ZGVfZGlycyA9IHNlbGYuaW5jbHVkZV9kaXJzLnNwbGl0KG9zLnBhdGhzZXApCiAKKyAgICAgICAgIyBJZiBpbiBhIHZpcnR1YWxlbnYsIGFkZCBpdHMgaW5jbHVkZSBkaXJlY3RvcnkKKyAgICAgICAgIyBJc3N1ZSAxNjExNgorICAgICAgICBpZiBzeXMuZXhlY19wcmVmaXggIT0gc3lzLmJhc2VfZXhlY19wcmVmaXg6CisgICAgICAgICAgICBzZWxmLmluY2x1ZGVfZGlycy5hcHBlbmQob3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwgJ2luY2x1ZGUnKSkKKwogICAgICAgICAjIFB1dCB0aGUgUHl0aG9uICJzeXN0ZW0iIGluY2x1ZGUgZGlyIGF0IHRoZSBlbmQsIHNvIHRoYXQKICAgICAgICAgIyBhbnkgbG9jYWwgaW5jbHVkZSBkaXJzIHRha2UgcHJlY2VkZW5jZS4KICAgICAgICAgc2VsZi5pbmNsdWRlX2RpcnMuYXBwZW5kKHB5X2luY2x1ZGUpCkBAIC0xODksNiArMTk1LDggQEAKICAgICAgICAgICAgICMgbXVzdCBiZSB0aGUgKm5hdGl2ZSogcGxhdGZvcm0uICBCdXQgd2UgZG9uJ3QgcmVhbGx5IHN1cHBvcnQKICAgICAgICAgICAgICMgY3Jvc3MtY29tcGlsaW5nIHZpYSBhIGJpbmFyeSBpbnN0YWxsIGFueXdheSwgc28gd2UgbGV0IGl0IGdvLgogICAgICAgICAgICAgc2VsZi5saWJyYXJ5X2RpcnMuYXBwZW5kKG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICdsaWJzJykpCisgICAgICAgICAgICBpZiBzeXMuYmFzZV9leGVjX3ByZWZpeCAhPSBzeXMucHJlZml4OiAgIyBJc3N1ZSAxNjExNgorICAgICAgICAgICAgICAgIHNlbGYubGlicmFyeV9kaXJzLmFwcGVuZChvcy5wYXRoLmpvaW4oc3lzLmJhc2VfZXhlY19wcmVmaXgsICdsaWJzJykpCiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnOgogICAgICAgICAgICAgICAgIHNlbGYuYnVpbGRfdGVtcCA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkX3RlbXAsICJEZWJ1ZyIpCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTk2LDggKzIwNCwxMSBAQAogCiAgICAgICAgICAgICAjIEFwcGVuZCB0aGUgc291cmNlIGRpc3RyaWJ1dGlvbiBpbmNsdWRlIGFuZCBsaWJyYXJ5IGRpcmVjdG9yaWVzLAogICAgICAgICAgICAgIyB0aGlzIGFsbG93cyBkaXN0dXRpbHMgb24gd2luZG93cyB0byB3b3JrIGluIHRoZSBzb3VyY2UgdHJlZQotICAgICAgICAgICAgc2VsZi5pbmNsdWRlX2RpcnMuYXBwZW5kKG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICdQQycpKQotICAgICAgICAgICAgaWYgTVNWQ19WRVJTSU9OID09IDk6CisgICAgICAgICAgICBzZWxmLmluY2x1ZGVfZGlycy5hcHBlbmQob3MucGF0aC5kaXJuYW1lKGdldF9jb25maWdfaF9maWxlbmFtZSgpKSkKKyAgICAgICAgICAgIF9zeXNfaG9tZSA9IGdldGF0dHIoc3lzLCAnX2hvbWUnLCBOb25lKQorICAgICAgICAgICAgaWYgX3N5c19ob21lOgorICAgICAgICAgICAgICAgIHNlbGYubGlicmFyeV9kaXJzLmFwcGVuZChfc3lzX2hvbWUpCisgICAgICAgICAgICBpZiBNU1ZDX1ZFUlNJT04gPj0gOToKICAgICAgICAgICAgICAgICAjIFVzZSB0aGUgLmxpYiBmaWxlcyBmb3IgdGhlIGNvcnJlY3QgYXJjaGl0ZWN0dXJlCiAgICAgICAgICAgICAgICAgaWYgc2VsZi5wbGF0X25hbWUgPT0gJ3dpbjMyJzoKICAgICAgICAgICAgICAgICAgICAgc3VmZml4ID0gJycKQEAgLTIzOSw4ICsyNTAsNyBAQAogICAgICAgICAjIGZvciBleHRlbnNpb25zIHVuZGVyIExpbnV4IG9yIFNvbGFyaXMgd2l0aCBhIHNoYXJlZCBQeXRob24gbGlicmFyeSwKICAgICAgICAgIyBQeXRob24ncyBsaWJyYXJ5IGRpcmVjdG9yeSBtdXN0IGJlIGFwcGVuZGVkIHRvIGxpYnJhcnlfZGlycwogICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1B5X0VOQUJMRV9TSEFSRUQnKQotICAgICAgICBpZiAoKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpIG9yIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdnbnUnKQotICAgICAgICAgICAgIG9yIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdzdW5vcycpKQorICAgICAgICBpZiAoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoKCdsaW51eCcsICdnbnUnLCAnc3Vub3MnKSkKICAgICAgICAgICAgIGFuZCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1B5X0VOQUJMRV9TSEFSRUQnKSk6CiAgICAgICAgICAgICBpZiBzeXMuZXhlY3V0YWJsZS5zdGFydHN3aXRoKG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICJiaW4iKSk6CiAgICAgICAgICAgICAgICAgIyBidWlsZGluZyB0aGlyZCBwYXJ0eSBleHRlbnNpb25zCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5CmluZGV4IGVjNDM0NzcuLjRiNWIyMmUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5CkBAIC0xMjYsMTAgKzEyNiw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBzaGViYW5nICh7IXJ9KSBpcyBub3QgZGVjb2RhYmxlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSB0aGUgc2NyaXB0IGVuY29kaW5nICh7fSkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzaGViYW5nLCBlbmNvZGluZykpCi0gICAgICAgICAgICAgICAgICAgIG91dGYgPSBvcGVuKG91dGZpbGUsICJ3YiIpCi0gICAgICAgICAgICAgICAgICAgIG91dGYud3JpdGUoc2hlYmFuZykKLSAgICAgICAgICAgICAgICAgICAgb3V0Zi53cml0ZWxpbmVzKGYucmVhZGxpbmVzKCkpCi0gICAgICAgICAgICAgICAgICAgIG91dGYuY2xvc2UoKQorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3V0ZmlsZSwgIndiIikgYXMgb3V0ZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dGYud3JpdGUoc2hlYmFuZykKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dGYud3JpdGVsaW5lcyhmLnJlYWRsaW5lcygpKQogICAgICAgICAgICAgICAgIGlmIGY6CiAgICAgICAgICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LTEwLjAtYW1kNjQuZXhlIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTAuMC1hbWQ2NC5leGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZhMGRjZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LTEwLjAtYW1kNjQuZXhlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LTEwLjAuZXhlIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTAuMC5leGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZjM2JjNgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LTEwLjAuZXhlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY3lnd2luY2NvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKaW5kZXggODE5ZTFhOS4uMGJkZDUzOSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKQEAgLTc4LDYgKzc4LDkgQEAKICAgICAgICAgZWxpZiBtc2NfdmVyID09ICcxNTAwJzoKICAgICAgICAgICAgICMgVlMyMDA4IC8gTVNWQyA5LjAKICAgICAgICAgICAgIHJldHVybiBbJ21zdmNyOTAnXQorICAgICAgICBlbGlmIG1zY192ZXIgPT0gJzE2MDAnOgorICAgICAgICAgICAgIyBWUzIwMTAgLyBNU1ZDIDEwLjAKKyAgICAgICAgICAgIHJldHVybiBbJ21zdmNyMTAwJ10KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVua25vd24gTVMgQ29tcGlsZXIgdmVyc2lvbiAlcyAiICUgbXNjX3ZlcikKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQppbmRleCBiNjAwN2E5Li5kMTI1ZTBiIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQorKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQpAQCAtMTgsMTEgKzE4LDE3IEBACiAjIFRoZXNlIGFyZSBuZWVkZWQgaW4gYSBjb3VwbGUgb2Ygc3BvdHMsIHNvIGp1c3QgY29tcHV0ZSB0aGVtIG9uY2UuCiBQUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5wcmVmaXgpCiBFWEVDX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmV4ZWNfcHJlZml4KQorQkFTRV9QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5iYXNlX3ByZWZpeCkKK0JBU0VfRVhFQ19QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5iYXNlX2V4ZWNfcHJlZml4KQogCiAjIFBhdGggdG8gdGhlIGJhc2UgZGlyZWN0b3J5IG9mIHRoZSBwcm9qZWN0LiBPbiBXaW5kb3dzIHRoZSBiaW5hcnkgbWF5CiAjIGxpdmUgaW4gcHJvamVjdC9QQ0J1aWxkOS4gIElmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhbiB4NjQgV2luZG93cyBidWlsZCwKICMgaXQnbGwgbGl2ZSBpbiBwcm9qZWN0L1BDYnVpbGQvYW1kNjQuCi1wcm9qZWN0X2Jhc2UgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKHN5cy5leGVjdXRhYmxlKSkKKyMgc2V0IGZvciBjcm9zcyBidWlsZHMKK2lmICJfUFlUSE9OX1BST0pFQ1RfQkFTRSIgaW4gb3MuZW52aXJvbjoKKyAgICBwcm9qZWN0X2Jhc2UgPSBvcy5wYXRoLmFic3BhdGgob3MuZW52aXJvblsiX1BZVEhPTl9QUk9KRUNUX0JBU0UiXSkKK2Vsc2U6CisgICAgcHJvamVjdF9iYXNlID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChzeXMuZXhlY3V0YWJsZSkpCiBpZiBvcy5uYW1lID09ICJudCIgYW5kICJwY2J1aWxkIiBpbiBwcm9qZWN0X2Jhc2VbLTg6XS5sb3dlcigpOgogICAgIHByb2plY3RfYmFzZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ocHJvamVjdF9iYXNlLCBvcy5wYXRoLnBhcmRpcikpCiAjIFBDL1ZTNy4xCkBAIC0zOSwxMSArNDUsMjEgQEAKICMgZGlmZmVyZW50IChoYXJkLXdpcmVkKSBkaXJlY3Rvcmllcy4KICMgU2V0dXAubG9jYWwgaXMgYXZhaWxhYmxlIGZvciBNYWtlZmlsZSBidWlsZHMgaW5jbHVkaW5nIFZQQVRIIGJ1aWxkcywKICMgU2V0dXAuZGlzdCBpcyBhdmFpbGFibGUgb24gV2luZG93cwotZGVmIF9weXRob25fYnVpbGQoKToKK2RlZiBfaXNfcHl0aG9uX3NvdXJjZV9kaXIoZCk6CiAgICAgZm9yIGZuIGluICgiU2V0dXAuZGlzdCIsICJTZXR1cC5sb2NhbCIpOgotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4ocHJvamVjdF9iYXNlLCAiTW9kdWxlcyIsIGZuKSk6CisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkLCAiTW9kdWxlcyIsIGZuKSk6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgIHJldHVybiBGYWxzZQorX3N5c19ob21lID0gZ2V0YXR0cihzeXMsICdfaG9tZScsIE5vbmUpCitpZiBfc3lzX2hvbWUgYW5kIG9zLm5hbWUgPT0gJ250JyBhbmQgXAorICAgIF9zeXNfaG9tZS5sb3dlcigpLmVuZHN3aXRoKCgncGNidWlsZCcsICdwY2J1aWxkXFxhbWQ2NCcpKToKKyAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKQorICAgIGlmIF9zeXNfaG9tZS5lbmRzd2l0aCgncGNidWlsZCcpOiAgICMgbXVzdCBiZSBhbWQ2NAorICAgICAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKQorZGVmIF9weXRob25fYnVpbGQoKToKKyAgICBpZiBfc3lzX2hvbWU6CisgICAgICAgIHJldHVybiBfaXNfcHl0aG9uX3NvdXJjZV9kaXIoX3N5c19ob21lKQorICAgIHJldHVybiBfaXNfcHl0aG9uX3NvdXJjZV9kaXIocHJvamVjdF9iYXNlKQogcHl0aG9uX2J1aWxkID0gX3B5dGhvbl9idWlsZCgpCiAKICMgQ2FsY3VsYXRlIHRoZSBidWlsZCBxdWFsaWZpZXIgZmxhZ3MgaWYgdGhleSBhcmUgZGVmaW5lZC4gIEFkZGluZyB0aGUgZmxhZ3MKQEAgLTc0LDExICs5MCwxMSBAQAogICAgIG90aGVyd2lzZSwgdGhpcyBpcyB0aGUgcGF0aCB0byBwbGF0Zm9ybS1zcGVjaWZpYyBoZWFkZXIgZmlsZXMKICAgICAobmFtZWx5IHB5Y29uZmlnLmgpLgogCi0gICAgSWYgJ3ByZWZpeCcgaXMgc3VwcGxpZWQsIHVzZSBpdCBpbnN0ZWFkIG9mIHN5cy5wcmVmaXggb3IKLSAgICBzeXMuZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KKyAgICBJZiAncHJlZml4JyBpcyBzdXBwbGllZCwgdXNlIGl0IGluc3RlYWQgb2Ygc3lzLmJhc2VfcHJlZml4IG9yCisgICAgc3lzLmJhc2VfZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KICAgICAiIiIKICAgICBpZiBwcmVmaXggaXMgTm9uZToKLSAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgRVhFQ19QUkVGSVggb3IgUFJFRklYCisgICAgICAgIHByZWZpeCA9IHBsYXRfc3BlY2lmaWMgYW5kIEJBU0VfRVhFQ19QUkVGSVggb3IgQkFTRV9QUkVGSVgKICAgICBpZiBvcy5uYW1lID09ICJwb3NpeCI6CiAgICAgICAgIGlmIHB5dGhvbl9idWlsZDoKICAgICAgICAgICAgICMgQXNzdW1lIHRoZSBleGVjdXRhYmxlIGlzIGluIHRoZSBidWlsZCBkaXJlY3RvcnkuICBUaGUKQEAgLTg2LDEyICsxMDIsMTQgQEAKICAgICAgICAgICAgICMgdGhlIGJ1aWxkIGRpcmVjdG9yeSBtYXkgbm90IGJlIHRoZSBzb3VyY2UgZGlyZWN0b3J5LCB3ZQogICAgICAgICAgICAgIyBtdXN0IHVzZSAic3JjZGlyIiBmcm9tIHRoZSBtYWtlZmlsZSB0byBmaW5kIHRoZSAiSW5jbHVkZSIKICAgICAgICAgICAgICMgZGlyZWN0b3J5LgotICAgICAgICAgICAgYmFzZSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoc3lzLmV4ZWN1dGFibGUpKQorICAgICAgICAgICAgYmFzZSA9IF9zeXNfaG9tZSBvciBwcm9qZWN0X2Jhc2UKICAgICAgICAgICAgIGlmIHBsYXRfc3BlY2lmaWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2UKKyAgICAgICAgICAgIGlmIF9zeXNfaG9tZToKKyAgICAgICAgICAgICAgICBpbmNkaXIgPSBvcy5wYXRoLmpvaW4oX3N5c19ob21lLCBnZXRfY29uZmlnX3ZhcignQVNUX0hfRElSJykpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGluY2RpciA9IG9zLnBhdGguam9pbihnZXRfY29uZmlnX3Zhcignc3JjZGlyJyksICdJbmNsdWRlJykKLSAgICAgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtcGF0aChpbmNkaXIpCisgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtcGF0aChpbmNkaXIpCiAgICAgICAgIHB5dGhvbl9kaXIgPSAncHl0aG9uJyArIGdldF9weXRob25fdmVyc2lvbigpICsgYnVpbGRfZmxhZ3MKICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihwcmVmaXgsICJpbmNsdWRlIiwgcHl0aG9uX2RpcikKICAgICBlbGlmIG9zLm5hbWUgPT0gIm50IjoKQEAgLTExNSwxMSArMTMzLDE0IEBACiAgICAgY29udGFpbmluZyBzdGFuZGFyZCBQeXRob24gbGlicmFyeSBtb2R1bGVzOyBvdGhlcndpc2UsIHJldHVybiB0aGUKICAgICBkaXJlY3RvcnkgZm9yIHNpdGUtc3BlY2lmaWMgbW9kdWxlcy4KIAotICAgIElmICdwcmVmaXgnIGlzIHN1cHBsaWVkLCB1c2UgaXQgaW5zdGVhZCBvZiBzeXMucHJlZml4IG9yCi0gICAgc3lzLmV4ZWNfcHJlZml4IC0tIGkuZS4sIGlnbm9yZSAncGxhdF9zcGVjaWZpYycuCisgICAgSWYgJ3ByZWZpeCcgaXMgc3VwcGxpZWQsIHVzZSBpdCBpbnN0ZWFkIG9mIHN5cy5iYXNlX3ByZWZpeCBvcgorICAgIHN5cy5iYXNlX2V4ZWNfcHJlZml4IC0tIGkuZS4sIGlnbm9yZSAncGxhdF9zcGVjaWZpYycuCiAgICAgIiIiCiAgICAgaWYgcHJlZml4IGlzIE5vbmU6Ci0gICAgICAgIHByZWZpeCA9IHBsYXRfc3BlY2lmaWMgYW5kIEVYRUNfUFJFRklYIG9yIFBSRUZJWAorICAgICAgICBpZiBzdGFuZGFyZF9saWI6CisgICAgICAgICAgICBwcmVmaXggPSBwbGF0X3NwZWNpZmljIGFuZCBCQVNFX0VYRUNfUFJFRklYIG9yIEJBU0VfUFJFRklYCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmVmaXggPSBwbGF0X3NwZWNpZmljIGFuZCBFWEVDX1BSRUZJWCBvciBQUkVGSVgKIAogICAgIGlmIG9zLm5hbWUgPT0gInBvc2l4IjoKICAgICAgICAgbGlicHl0aG9uID0gb3MucGF0aC5qb2luKHByZWZpeCwKQEAgLTIxOCw5ICsyMzksOSBAQAogICAgICIiIlJldHVybiBmdWxsIHBhdGhuYW1lIG9mIGluc3RhbGxlZCBweWNvbmZpZy5oIGZpbGUuIiIiCiAgICAgaWYgcHl0aG9uX2J1aWxkOgogICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6Ci0gICAgICAgICAgICBpbmNfZGlyID0gb3MucGF0aC5qb2luKHByb2plY3RfYmFzZSwgIlBDIikKKyAgICAgICAgICAgIGluY19kaXIgPSBvcy5wYXRoLmpvaW4oX3N5c19ob21lIG9yIHByb2plY3RfYmFzZSwgIlBDIikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGluY19kaXIgPSBwcm9qZWN0X2Jhc2UKKyAgICAgICAgICAgIGluY19kaXIgPSBfc3lzX2hvbWUgb3IgcHJvamVjdF9iYXNlCiAgICAgZWxzZToKICAgICAgICAgaW5jX2RpciA9IGdldF9weXRob25faW5jKHBsYXRfc3BlY2lmaWM9MSkKICAgICBpZiBnZXRfcHl0aG9uX3ZlcnNpb24oKSA8ICcyLjInOgpAQCAtMjM0LDcgKzI1NSw3IEBACiBkZWYgZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCk6CiAgICAgIiIiUmV0dXJuIGZ1bGwgcGF0aG5hbWUgb2YgaW5zdGFsbGVkIE1ha2VmaWxlIGZyb20gdGhlIFB5dGhvbiBidWlsZC4iIiIKICAgICBpZiBweXRob25fYnVpbGQ6Ci0gICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHN5cy5leGVjdXRhYmxlKSwgIk1ha2VmaWxlIikKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihfc3lzX2hvbWUgb3IgcHJvamVjdF9iYXNlLCAiTWFrZWZpbGUiKQogICAgIGxpYl9kaXIgPSBnZXRfcHl0aG9uX2xpYihwbGF0X3NwZWNpZmljPTAsIHN0YW5kYXJkX2xpYj0xKQogICAgIGNvbmZpZ19maWxlID0gJ2NvbmZpZy17fXt9Jy5mb3JtYXQoZ2V0X3B5dGhvbl92ZXJzaW9uKCksIGJ1aWxkX2ZsYWdzKQogICAgIHJldHVybiBvcy5wYXRoLmpvaW4obGliX2RpciwgY29uZmlnX2ZpbGUsICdNYWtlZmlsZScpCkBAIC00OTYsNyArNTE3LDcgQEAKICAgICB2YXJpYWJsZXMgcmVsZXZhbnQgZm9yIHRoZSBjdXJyZW50IHBsYXRmb3JtLiAgR2VuZXJhbGx5IHRoaXMgaW5jbHVkZXMKICAgICBldmVyeXRoaW5nIG5lZWRlZCB0byBidWlsZCBleHRlbnNpb25zIGFuZCBpbnN0YWxsIGJvdGggcHVyZSBtb2R1bGVzIGFuZAogICAgIGV4dGVuc2lvbnMuICBPbiBVbml4LCB0aGlzIG1lYW5zIGV2ZXJ5IHZhcmlhYmxlIGRlZmluZWQgaW4gUHl0aG9uJ3MKLSAgICBpbnN0YWxsZWQgTWFrZWZpbGU7IG9uIFdpbmRvd3MgYW5kIE1hYyBPUyBpdCdzIGEgbXVjaCBzbWFsbGVyIHNldC4KKyAgICBpbnN0YWxsZWQgTWFrZWZpbGU7IG9uIFdpbmRvd3MgaXQncyBhIG11Y2ggc21hbGxlciBzZXQuCiAKICAgICBXaXRoIGFyZ3VtZW50cywgcmV0dXJuIGEgbGlzdCBvZiB2YWx1ZXMgdGhhdCByZXN1bHQgZnJvbSBsb29raW5nIHVwCiAgICAgZWFjaCBhcmd1bWVudCBpbiB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBkaWN0aW9uYXJ5LgpAQCAtNTE1LDEyICs1MzYsMjkgQEAKICAgICAgICAgX2NvbmZpZ192YXJzWydwcmVmaXgnXSA9IFBSRUZJWAogICAgICAgICBfY29uZmlnX3ZhcnNbJ2V4ZWNfcHJlZml4J10gPSBFWEVDX1BSRUZJWAogCisgICAgICAgICMgQWx3YXlzIGNvbnZlcnQgc3JjZGlyIHRvIGFuIGFic29sdXRlIHBhdGgKKyAgICAgICAgc3JjZGlyID0gX2NvbmZpZ192YXJzLmdldCgnc3JjZGlyJywgcHJvamVjdF9iYXNlKQorICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CisgICAgICAgICAgICBpZiBweXRob25fYnVpbGQ6CisgICAgICAgICAgICAgICAgIyBJZiBzcmNkaXIgaXMgYSByZWxhdGl2ZSBwYXRoICh0eXBpY2FsbHkgJy4nIG9yICcuLicpCisgICAgICAgICAgICAgICAgIyB0aGVuIGl0IHNob3VsZCBiZSBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgIyBjb250YWluaW5nIE1ha2VmaWxlLgorICAgICAgICAgICAgICAgIGJhc2UgPSBvcy5wYXRoLmRpcm5hbWUoZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkpCisgICAgICAgICAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKGJhc2UsIHNyY2RpcikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBzcmNkaXIgaXMgbm90IG1lYW5pbmdmdWwgc2luY2UgdGhlIGluc3RhbGxhdGlvbiBpcworICAgICAgICAgICAgICAgICMgc3ByZWFkIGFib3V0IHRoZSBmaWxlc3lzdGVtLiAgV2UgY2hvb3NlIHRoZQorICAgICAgICAgICAgICAgICMgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIE1ha2VmaWxlIHNpbmNlIHdlIGtub3cgaXQKKyAgICAgICAgICAgICAgICAjIGV4aXN0cy4KKyAgICAgICAgICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmRpcm5hbWUoZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkpCisgICAgICAgIF9jb25maWdfdmFyc1snc3JjZGlyJ10gPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5ub3JtcGF0aChzcmNkaXIpKQorCiAgICAgICAgICMgQ29udmVydCBzcmNkaXIgaW50byBhbiBhYnNvbHV0ZSBwYXRoIGlmIGl0IGFwcGVhcnMgbmVjZXNzYXJ5LgogICAgICAgICAjIE5vcm1hbGx5IGl0IGlzIHJlbGF0aXZlIHRvIHRoZSBidWlsZCBkaXJlY3RvcnkuICBIb3dldmVyLCBkdXJpbmcKICAgICAgICAgIyB0ZXN0aW5nLCBmb3IgZXhhbXBsZSwgd2UgbWlnaHQgYmUgcnVubmluZyBhIG5vbi1pbnN0YWxsZWQgcHl0aG9uCiAgICAgICAgICMgZnJvbSBhIGRpZmZlcmVudCBkaXJlY3RvcnkuCiAgICAgICAgIGlmIHB5dGhvbl9idWlsZCBhbmQgb3MubmFtZSA9PSAicG9zaXgiOgotICAgICAgICAgICAgYmFzZSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoc3lzLmV4ZWN1dGFibGUpKQorICAgICAgICAgICAgYmFzZSA9IHByb2plY3RfYmFzZQogICAgICAgICAgICAgaWYgKG5vdCBvcy5wYXRoLmlzYWJzKF9jb25maWdfdmFyc1snc3JjZGlyJ10pIGFuZAogICAgICAgICAgICAgICAgIGJhc2UgIT0gb3MuZ2V0Y3dkKCkpOgogICAgICAgICAgICAgICAgICMgc3JjZGlyIGlzIHJlbGF0aXZlIGFuZCB3ZSBhcmUgbm90IGluIHRoZSBzYW1lIGRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2FyY2hpdmVfdXRpbC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9hcmNoaXZlX3V0aWwucHkKaW5kZXggOGVkZmFiNC4uMWFmZGQ0NiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2FyY2hpdmVfdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYXJjaGl2ZV91dGlsLnB5CkBAIC0xLDYgKzEsOCBAQAorIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KICIiIlRlc3RzIGZvciBkaXN0dXRpbHMuYXJjaGl2ZV91dGlsLiIiIgogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MKK2ltcG9ydCBzeXMKIGltcG9ydCB0YXJmaWxlCiBmcm9tIG9zLnBhdGggaW1wb3J0IHNwbGl0ZHJpdmUKIGltcG9ydCB3YXJuaW5ncwpAQCAtMjUsNiArMjcsMTggQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBaTElCX1NVUFBPUlQgPSBGYWxzZQogCitkZWYgY2FuX2ZzX2VuY29kZShmaWxlbmFtZSk6CisgICAgIiIiCisgICAgUmV0dXJuIFRydWUgaWYgdGhlIGZpbGVuYW1lIGNhbiBiZSBzYXZlZCBpbiB0aGUgZmlsZSBzeXN0ZW0uCisgICAgIiIiCisgICAgaWYgb3MucGF0aC5zdXBwb3J0c191bmljb2RlX2ZpbGVuYW1lczoKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICB0cnk6CisgICAgICAgIGZpbGVuYW1lLmVuY29kZShzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpCisgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIFRydWUKKwogCiBjbGFzcyBBcmNoaXZlVXRpbFRlc3RDYXNlKHN1cHBvcnQuVGVtcGRpck1hbmFnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQuTG9nZ2luZ1NpbGVuY2VyLApAQCAtMzIsNiArNDYsMjggQEAKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFpMSUJfU1VQUE9SVCwgJ05lZWQgemxpYiBzdXBwb3J0IHRvIHJ1bicpCiAgICAgZGVmIHRlc3RfbWFrZV90YXJiYWxsKHNlbGYpOgorICAgICAgICBzZWxmLl9tYWtlX3RhcmJhbGwoJ2FyY2hpdmUnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoWkxJQl9TVVBQT1JULCAnTmVlZCB6bGliIHN1cHBvcnQgdG8gcnVuJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhjYW5fZnNfZW5jb2RlKCfDpXJjaGl2JyksCisgICAgICAgICdGaWxlIHN5c3RlbSBjYW5ub3QgaGFuZGxlIHRoaXMgZmlsZW5hbWUnKQorICAgIGRlZiB0ZXN0X21ha2VfdGFyYmFsbF9sYXRpbjEoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBNaXJyb3IgdGVzdF9tYWtlX3RhcmJhbGwsIGV4Y2VwdCBmaWxlbmFtZSBjb250YWlucyBsYXRpbiBjaGFyYWN0ZXJzLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fbWFrZV90YXJiYWxsKCfDpXJjaGl2JykgIyBub3RlIHRoaXMgaXNuJ3QgYSByZWFsIHdvcmQKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFpMSUJfU1VQUE9SVCwgJ05lZWQgemxpYiBzdXBwb3J0IHRvIHJ1bicpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoY2FuX2ZzX2VuY29kZSgn44Gu44Ki44O844Kr44Kk44OWJyksCisgICAgICAgICdGaWxlIHN5c3RlbSBjYW5ub3QgaGFuZGxlIHRoaXMgZmlsZW5hbWUnKQorICAgIGRlZiB0ZXN0X21ha2VfdGFyYmFsbF9leHRlbmRlZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIE1pcnJvciB0ZXN0X21ha2VfdGFyYmFsbCwgZXhjZXB0IGZpbGVuYW1lIGNvbnRhaW5zIGV4dGVuZGVkCisgICAgICAgIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgbGF0aW4gY2hhcnNldC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX21ha2VfdGFyYmFsbCgn44Gu44Ki44O844Kr44Kk44OWJykgIyBqYXBhbmVzZSBmb3IgYXJjaGl2ZQorCisgICAgZGVmIF9tYWtlX3RhcmJhbGwoc2VsZiwgdGFyZ2V0X25hbWUpOgogICAgICAgICAjIGNyZWF0aW5nIHNvbWV0aGluZyB0byB0YXIKICAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKICAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsICdmaWxlMSddLCAneHh4JykKQEAgLTQzLDcgKzc5LDcgQEAKICAgICAgICAgdW5pdHRlc3Quc2tpcFVubGVzcyhzcGxpdGRyaXZlKHRtcGRpcilbMF0gPT0gc3BsaXRkcml2ZSh0bXBkaXIyKVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU291cmNlIGFuZCB0YXJnZXQgc2hvdWxkIGJlIG9uIHNhbWUgZHJpdmUiKQogCi0gICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbih0bXBkaXIyLCAnYXJjaGl2ZScpCisgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbih0bXBkaXIyLCB0YXJnZXRfbmFtZSkKIAogICAgICAgICAjIHdvcmtpbmcgd2l0aCByZWxhdGl2ZSBwYXRocyB0byBhdm9pZCB0YXIgd2FybmluZ3MKICAgICAgICAgb2xkX2RpciA9IG9zLmdldGN3ZCgpCkBAIC01OCw3ICs5NCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh0YXJiYWxsKSkKIAogICAgICAgICAjIHRyeWluZyBhbiB1bmNvbXByZXNzZWQgb25lCi0gICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbih0bXBkaXIyLCAnYXJjaGl2ZScpCisgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbih0bXBkaXIyLCB0YXJnZXRfbmFtZSkKICAgICAgICAgb2xkX2RpciA9IG9zLmdldGN3ZCgpCiAgICAgICAgIG9zLmNoZGlyKHRtcGRpcikKICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X3JwbS5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdF9ycG0ucHkKaW5kZXggYWI3YTFiZi4uYjA5MGI3OSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X3JwbS5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfcnBtLnB5CkBAIC0yOCw2ICsyOCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN5cy5leGVjdXRhYmxlLmVuY29kZSgiVVRGLTgiKQorICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInN5cy5leGVjdXRhYmxlIGlzIG5vdCBlbmNvZGFibGUgdG8gVVRGLTgiKQorCiAgICAgICAgIHN1cGVyKEJ1aWxkUnBtVGVzdENhc2UsIHNlbGYpLnNldFVwKCkKICAgICAgICAgc2VsZi5vbGRfbG9jYXRpb24gPSBvcy5nZXRjd2QoKQogICAgICAgICBzZWxmLm9sZF9zeXNfYXJndiA9IHN5cy5hcmd2LCBzeXMuYXJndls6XQpAQCAtNDIsNyArNDcsNyBAQAogCiAgICAgICAgICMgWFhYIEkgYW0gdW5hYmxlIHlldCB0byBtYWtlIHRoaXMgdGVzdCB3b3JrIHdpdGhvdXQKICAgICAgICAgIyBzcHVyaW91cyBzZHRvdXQvc3RkZXJyIG91dHB1dCB1bmRlciBNYWMgT1MgWAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ2xpbnV4Mic6CisgICAgICAgIGlmIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKToKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICMgdGhpcyB0ZXN0IHdpbGwgcnVuIG9ubHkgaWYgdGhlIHJwbSBjb21tYW5kcyBhcmUgZm91bmQKQEAgLTg2LDcgKzkxLDcgQEAKIAogICAgICAgICAjIFhYWCBJIGFtIHVuYWJsZSB5ZXQgdG8gbWFrZSB0aGlzIHRlc3Qgd29yayB3aXRob3V0CiAgICAgICAgICMgc3B1cmlvdXMgc2R0b3V0L3N0ZGVyciBvdXRwdXQgdW5kZXIgTWFjIE9TIFgKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICdsaW51eDInOgorICAgICAgICBpZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6CiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNTMzMTY0CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3lzY29uZmlnLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3N5c2NvbmZpZy5weQppbmRleCA1NDVlZjNiLi44MjZlYTQyIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3lzY29uZmlnLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zeXNjb25maWcucHkKQEAgLTUzLDYgKzUzLDM1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGN2YXJzLCBkaWN0KSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGN2YXJzKQogCisgICAgZGVmIHRlc3Rfc3JjZGlyKHNlbGYpOgorICAgICAgICAjIFNlZSBJc3N1ZXMgIzE1MzIyLCAjMTUzNjQuCisgICAgICAgIHNyY2RpciA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykKKworICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2FicyhzcmNkaXIpLCBzcmNkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKHNyY2RpciksIHNyY2RpcikKKworICAgICAgICBpZiBzeXNjb25maWcucHl0aG9uX2J1aWxkOgorICAgICAgICAgICAgIyBUaGUgcHl0aG9uIGV4ZWN1dGFibGUgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBzbyBzcmNkaXIKKyAgICAgICAgICAgICMgc2hvdWxkIGJlIGEgZnVsbCBzb3VyY2UgY2hlY2tvdXQuCisgICAgICAgICAgICBQeXRob25faCA9IG9zLnBhdGguam9pbihzcmNkaXIsICdJbmNsdWRlJywgJ1B5dGhvbi5oJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhQeXRob25faCksIFB5dGhvbl9oKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN5c2NvbmZpZy5faXNfcHl0aG9uX3NvdXJjZV9kaXIoc3JjZGlyKSkKKyAgICAgICAgZWxpZiBvcy5uYW1lID09ICdwb3NpeCc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguZGlybmFtZShzeXNjb25maWcuZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjZGlyKQorCisgICAgZGVmIHRlc3Rfc3JjZGlyX2luZGVwZW5kZW50X29mX2N3ZChzZWxmKToKKyAgICAgICAgIyBzcmNkaXIgc2hvdWxkIGJlIGluZGVwZW5kZW50IG9mIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5CisgICAgICAgICMgU2VlIElzc3VlcyAjMTUzMjIsICMxNTM2NC4KKyAgICAgICAgc3JjZGlyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQorICAgICAgICBjd2QgPSBvcy5nZXRjd2QoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5jaGRpcignLi4nKQorICAgICAgICAgICAgc3JjZGlyMiA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNoZGlyKGN3ZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcmNkaXIsIHNyY2RpcjIpCisKICAgICBkZWYgdGVzdF9jdXN0b21pemVfY29tcGlsZXIoc2VsZik6CiAKICAgICAgICAgIyBub3QgdGVzdGluZyBpZiBkZWZhdWx0IGNvbXBpbGVyIGlzIG5vdCB1bml4CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3V0aWwucHkKaW5kZXggNTIyODBkYi4uNjdkODE2NiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdXRpbC5weQpAQCAtNTMsNiArNTMsMTAgQEAKICAgICAgICAgICAgIHJldHVybiAnd2luLWlhNjQnCiAgICAgICAgIHJldHVybiBzeXMucGxhdGZvcm0KIAorICAgICMgU2V0IGZvciBjcm9zcyBidWlsZHMgZXhwbGljaXRseQorICAgIGlmICJfUFlUSE9OX0hPU1RfUExBVEZPUk0iIGluIG9zLmVudmlyb246CisgICAgICAgIHJldHVybiBvcy5lbnZpcm9uWyJfUFlUSE9OX0hPU1RfUExBVEZPUk0iXQorCiAgICAgaWYgb3MubmFtZSAhPSAicG9zaXgiIG9yIG5vdCBoYXNhdHRyKG9zLCAndW5hbWUnKToKICAgICAgICAgIyBYWFggd2hhdCBhYm91dCB0aGUgYXJjaGl0ZWN0dXJlPyBOVCBpcyBJbnRlbCBvciBBbHBoYSwKICAgICAgICAgIyBNYWMgT1MgaXMgTTY4ayBvciBQUEMsIGV0Yy4KZGlmZiAtLWdpdCBhL0xpYi9kb2N0ZXN0LnB5IGIvTGliL2RvY3Rlc3QucHkKaW5kZXggZTE4OWM4Zi4uM2FmMDVmYiAxMDA2NDQKLS0tIGEvTGliL2RvY3Rlc3QucHkKKysrIGIvTGliL2RvY3Rlc3QucHkKQEAgLTQ1OCw3ICs0NTgsNiBAQAogICAgICAgICByZXR1cm4gaGFzaCgoc2VsZi5zb3VyY2UsIHNlbGYud2FudCwgc2VsZi5saW5lbm8sIHNlbGYuaW5kZW50LAogICAgICAgICAgICAgICAgICAgICAgc2VsZi5leGNfbXNnKSkKIAotCiBjbGFzcyBEb2NUZXN0OgogICAgICIiIgogICAgIEEgY29sbGVjdGlvbiBvZiBkb2N0ZXN0IGV4YW1wbGVzIHRoYXQgc2hvdWxkIGJlIHJ1biBpbiBhIHNpbmdsZQpAQCAtMTM2Nyw3ICsxMzY2LDcgQEAKICAgICAgICAgbSA9IHNlbGYuX19MSU5FQ0FDSEVfRklMRU5BTUVfUkUubWF0Y2goZmlsZW5hbWUpCiAgICAgICAgIGlmIG0gYW5kIG0uZ3JvdXAoJ25hbWUnKSA9PSBzZWxmLnRlc3QubmFtZToKICAgICAgICAgICAgIGV4YW1wbGUgPSBzZWxmLnRlc3QuZXhhbXBsZXNbaW50KG0uZ3JvdXAoJ2V4YW1wbGVudW0nKSldCi0gICAgICAgICAgICByZXR1cm4gZXhhbXBsZS5zb3VyY2Uuc3BsaXRsaW5lcyhUcnVlKQorICAgICAgICAgICAgcmV0dXJuIGV4YW1wbGUuc291cmNlLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLnNhdmVfbGluZWNhY2hlX2dldGxpbmVzKGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscykKIApAQCAtMTQxMyw2ICsxNDEyLDcgQEAKICAgICAgICAgIyBOb3RlIHRoYXQgdGhlIGludGVyYWN0aXZlIG91dHB1dCB3aWxsIGdvIHRvICpvdXIqCiAgICAgICAgICMgc2F2ZV9zdGRvdXQsIGV2ZW4gaWYgdGhhdCdzIG5vdCB0aGUgcmVhbCBzeXMuc3Rkb3V0OyB0aGlzCiAgICAgICAgICMgYWxsb3dzIHVzIHRvIHdyaXRlIHRlc3QgY2FzZXMgZm9yIHRoZSBzZXRfdHJhY2UgYmVoYXZpb3IuCisgICAgICAgIHNhdmVfdHJhY2UgPSBzeXMuZ2V0dHJhY2UoKQogICAgICAgICBzYXZlX3NldF90cmFjZSA9IHBkYi5zZXRfdHJhY2UKICAgICAgICAgc2VsZi5kZWJ1Z2dlciA9IF9PdXRwdXRSZWRpcmVjdGluZ1BkYihzYXZlX3N0ZG91dCkKICAgICAgICAgc2VsZi5kZWJ1Z2dlci5yZXNldCgpCkBAIC0xNDMyLDYgKzE0MzIsNyBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHNhdmVfc3Rkb3V0CiAgICAgICAgICAgICBwZGIuc2V0X3RyYWNlID0gc2F2ZV9zZXRfdHJhY2UKKyAgICAgICAgICAgIHN5cy5zZXR0cmFjZShzYXZlX3RyYWNlKQogICAgICAgICAgICAgbGluZWNhY2hlLmdldGxpbmVzID0gc2VsZi5zYXZlX2xpbmVjYWNoZV9nZXRsaW5lcwogICAgICAgICAgICAgc3lzLmRpc3BsYXlob29rID0gc2F2ZV9kaXNwbGF5aG9vawogICAgICAgICAgICAgaWYgY2xlYXJfZ2xvYnM6CkBAIC0xNjI4LDggKzE2MjksOCBAQAogICAgICAgICAjIENoZWNrIGlmIHdlIHNob3VsZCB1c2UgZGlmZi4KICAgICAgICAgaWYgc2VsZi5fZG9fYV9mYW5jeV9kaWZmKHdhbnQsIGdvdCwgb3B0aW9uZmxhZ3MpOgogICAgICAgICAgICAgIyBTcGxpdCB3YW50ICYgZ290IGludG8gbGluZXMuCi0gICAgICAgICAgICB3YW50X2xpbmVzID0gd2FudC5zcGxpdGxpbmVzKFRydWUpICAjIFRydWUgPT0ga2VlcCBsaW5lIGVuZHMKLSAgICAgICAgICAgIGdvdF9saW5lcyA9IGdvdC5zcGxpdGxpbmVzKFRydWUpCisgICAgICAgICAgICB3YW50X2xpbmVzID0gd2FudC5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCisgICAgICAgICAgICBnb3RfbGluZXMgPSBnb3Quc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICAgICAgIyBVc2UgZGlmZmxpYiB0byBmaW5kIHRoZWlyIGRpZmZlcmVuY2VzLgogICAgICAgICAgICAgaWYgb3B0aW9uZmxhZ3MgJiBSRVBPUlRfVURJRkY6CiAgICAgICAgICAgICAgICAgZGlmZiA9IGRpZmZsaWIudW5pZmllZF9kaWZmKHdhbnRfbGluZXMsIGdvdF9saW5lcywgbj0yKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL19lbmNvZGVkX3dvcmRzLnB5IGIvTGliL2VtYWlsL19lbmNvZGVkX3dvcmRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMGNjNzUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZW1haWwvX2VuY29kZWRfd29yZHMucHkKQEAgLTAsMCArMSwyMjEgQEAKKyIiIiBSb3V0aW5lcyBmb3IgbWFuaXB1bGF0aW5nIFJGQzIwNDcgZW5jb2RlZCB3b3Jkcy4KKworVGhpcyBpcyBjdXJyZW50bHkgYSBwYWNrYWdlLXByaXZhdGUgQVBJLCBidXQgd2lsbCBiZSBjb25zaWRlcmVkIGZvciBwcm9tb3Rpb24KK3RvIGEgcHVibGljIEFQSSBpZiB0aGVyZSBpcyBkZW1hbmQuCisKKyIiIgorCisjIEFuIGVjb2RlZCB3b3JkIGxvb2tzIGxpa2UgdGhpczoKKyMKKyMgICAgICAgID0/Y2hhcnNldFsqbGFuZ10/Y3RlP2VuY29kZWRfc3RyaW5nPz0KKyMKKyMgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgY2hhcnNldCBzZWUgdGhlIGNoYXJzZXQgbW9kdWxlLiAgSGVyZSBpdCBpcyBvbmUKKyMgb2YgdGhlIHByZWZlcnJlZCBNSU1FIGNoYXJzZXQgbmFtZXMgKGhvcGVmdWxseTsgeW91IG5ldmVyIGtub3cgd2hlbiBwYXJzaW5nKS4KKyMgY3RlIChDb250ZW50IFRyYW5zZmVyIEVuY29kaW5nKSBpcyBlaXRoZXIgJ3EnIG9yICdiJyAoaWdub3JpbmcgY2FzZSkuICBJbgorIyB0aGVvcnkgb3RoZXIgbGV0dGVycyBjb3VsZCBiZSB1c2VkIGZvciBvdGhlciBlbmNvZGluZ3MsIGJ1dCBpbiBwcmFjdGljZSB0aGlzCisjIChhbG1vc3Q/KSBuZXZlciBoYXBwZW5zLiAgVGhlcmUgY291bGQgYmUgYSBwdWJsaWMgQVBJIGZvciBhZGRpbmcgZW50cmllcworIyB0byB0aGUgQ1RFIHRhYmxlcywgYnV0IFlBR05JIGZvciBub3cuICAncScgaXMgUXVvdGVkIFByaW50YWJsZSwgJ2InIGlzCisjIEJhc2U2NC4gIFRoZSBtZWFuaW5nIG9mIGVuY29kZWRfc3RyaW5nIHNob3VsZCBiZSBvYnZpb3VzLiAgJ2xhbmcnIGlzIG9wdGlvbmFsCisjIGFzIGluZGljYXRlZCBieSB0aGUgYnJhY2tldHMgKHRoZXkgYXJlIG5vdCBwYXJ0IG9mIHRoZSBzeW50YXgpIGJ1dCBpcyBhbG1vc3QKKyMgbmV2ZXIgZW5jb3VudGVyZWQgaW4gcHJhY3RpY2UuCisjCisjIFRoZSBnZW5lcmFsIGludGVyZmFjZSBmb3IgYSBDVEUgZGVjb2RlciBpcyB0aGF0IGl0IHRha2VzIHRoZSBlbmNvZGVkX3N0cmluZworIyBhcyBpdHMgYXJndW1lbnQsIGFuZCByZXR1cm5zIGEgdHVwbGUgKGN0ZV9kZWNvZGVkX3N0cmluZywgZGVmZWN0cykuICBUaGUKKyMgY3RlX2RlY29kZWRfc3RyaW5nIGlzIHRoZSBvcmlnaW5hbCBiaW5hcnkgdGhhdCB3YXMgZW5jb2RlZCB1c2luZyB0aGUKKyMgc3BlY2lmaWVkIGN0ZS4gICdkZWZlY3RzJyBpcyBhIGxpc3Qgb2YgTWVzc2FnZURlZmVjdCBpbnN0YW5jZXMgaW5kaWNhdGluZyBhbnkKKyMgcHJvYmxlbXMgZW5jb3VudGVyZWQgZHVyaW5nIGNvbnZlcnNpb24uICAnY2hhcnNldCcgYW5kICdsYW5nJyBhcmUgdGhlCisjIGNvcnJlc3BvbmRpbmcgc3RyaW5ncyBleHRyYWN0ZWQgZnJvbSB0aGUgRVcsIGNhc2UgcHJlc2VydmVkLgorIworIyBUaGUgZ2VuZXJhbCBpbnRlcmZhY2UgZm9yIGEgQ1RFIGVuY29kZXIgaXMgdGhhdCBpdCB0YWtlcyBhIGJpbmFyeSBzZXF1ZW5jZQorIyBhcyBpbnB1dCBhbmQgcmV0dXJucyB0aGUgY3RlX2VuY29kZWRfc3RyaW5nLCB3aGljaCBpcyBhbiBhc2NpaS1vbmx5IHN0cmluZy4KKyMKKyMgRWFjaCBkZWNvZGVyIG11c3QgYWxzbyBzdXBwbHkgYSBsZW5ndGggZnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgYmluYXJ5CisjIHNlcXVlbmNlIGFzIGl0cyBhcmd1bWVudCBhbmQgcmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgZW5jb2RlZAorIyBzdHJpbmcuCisjCisjIFRoZSBtYWluIEFQSSBmdW5jdGlvbnMgZm9yIHRoZSBtb2R1bGUgYXJlIGRlY29kZSwgd2hpY2ggY2FsbHMgdGhlIGRlY29kZXIKKyMgcmVmZXJlbmNlZCBieSB0aGUgY3RlIHNwZWNpZmllciwgYW5kIGVuY29kZSwgd2hpY2ggYWRkcyB0aGUgYXBwcm9wcmlhdGUKKyMgUkZDIDIwNDcgImNocm9tZSIgdG8gdGhlIGVuY29kZWQgc3RyaW5nLCBhbmQgY2FuIG9wdGlvbmFsbHkgYXV0b21hdGljYWxseQorIyBzZWxlY3QgdGhlIHNob3J0ZXN0IHBvc3NpYmxlIGVuY29kaW5nLiAgU2VlIHRoZWlyIGRvY3N0cmluZ3MgYmVsb3cgZm9yCisjIGRldGFpbHMuCisKK2ltcG9ydCByZQoraW1wb3J0IGJhc2U2NAoraW1wb3J0IGJpbmFzY2lpCitpbXBvcnQgZnVuY3Rvb2xzCitmcm9tIHN0cmluZyBpbXBvcnQgYXNjaWlfbGV0dGVycywgZGlnaXRzCitmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKKworX19hbGxfXyA9IFsnZGVjb2RlX3EnLAorICAgICAgICAgICAnZW5jb2RlX3EnLAorICAgICAgICAgICAnZGVjb2RlX2InLAorICAgICAgICAgICAnZW5jb2RlX2InLAorICAgICAgICAgICAnbGVuX3EnLAorICAgICAgICAgICAnbGVuX2InLAorICAgICAgICAgICAnZGVjb2RlJywKKyAgICAgICAgICAgJ2VuY29kZScsCisgICAgICAgICAgIF0KKworIworIyBRdW90ZWQgUHJpbnRhYmxlCisjCisKKyMgcmVnZXggYmFzZWQgZGVjb2Rlci4KK19xX2J5dGVfc3ViYmVyID0gZnVuY3Rvb2xzLnBhcnRpYWwocmUuY29tcGlsZShicic9KFthLWZBLUYwLTldezJ9KScpLnN1YiwKKyAgICAgICAgbGFtYmRhIG06IGJ5dGVzKFtpbnQobS5ncm91cCgxKSwgMTYpXSkpCisKK2RlZiBkZWNvZGVfcShlbmNvZGVkKToKKyAgICBlbmNvZGVkID0gZW5jb2RlZC5yZXBsYWNlKGInXycsIGInICcpCisgICAgcmV0dXJuIF9xX2J5dGVfc3ViYmVyKGVuY29kZWQpLCBbXQorCisKKyMgZGljdCBtYXBwaW5nIGJ5dGVzIHRvIHRoZWlyIGVuY29kZWQgZm9ybQorY2xhc3MgX1FCeXRlTWFwKGRpY3QpOgorCisgICAgc2FmZSA9IGInLSEqKy8nICsgYXNjaWlfbGV0dGVycy5lbmNvZGUoJ2FzY2lpJykgKyBkaWdpdHMuZW5jb2RlKCdhc2NpaScpCisKKyAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KToKKyAgICAgICAgaWYga2V5IGluIHNlbGYuc2FmZToKKyAgICAgICAgICAgIHNlbGZba2V5XSA9IGNocihrZXkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmW2tleV0gPSAiPXs6MDJYfSIuZm9ybWF0KGtleSkKKyAgICAgICAgcmV0dXJuIHNlbGZba2V5XQorCitfcV9ieXRlX21hcCA9IF9RQnl0ZU1hcCgpCisKKyMgSW4gaGVhZGVycyBzcGFjZXMgYXJlIG1hcHBlZCB0byAnXycuCitfcV9ieXRlX21hcFtvcmQoJyAnKV0gPSAnXycKKworZGVmIGVuY29kZV9xKGJzdHJpbmcpOgorICAgIHJldHVybiAnJy5qb2luKF9xX2J5dGVfbWFwW3hdIGZvciB4IGluIGJzdHJpbmcpCisKK2RlZiBsZW5fcShic3RyaW5nKToKKyAgICByZXR1cm4gc3VtKGxlbihfcV9ieXRlX21hcFt4XSkgZm9yIHggaW4gYnN0cmluZykKKworCisjCisjIEJhc2U2NAorIworCitkZWYgZGVjb2RlX2IoZW5jb2RlZCk6CisgICAgZGVmZWN0cyA9IFtdCisgICAgcGFkX2VyciA9IGxlbihlbmNvZGVkKSAlIDQKKyAgICBpZiBwYWRfZXJyOgorICAgICAgICBkZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3QoKSkKKyAgICAgICAgcGFkZGVkX2VuY29kZWQgPSBlbmNvZGVkICsgYic9PT0nWzo0LXBhZF9lcnJdCisgICAgZWxzZToKKyAgICAgICAgcGFkZGVkX2VuY29kZWQgPSBlbmNvZGVkCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gYmFzZTY0LmI2NGRlY29kZShwYWRkZWRfZW5jb2RlZCwgdmFsaWRhdGU9VHJ1ZSksIGRlZmVjdHMKKyAgICBleGNlcHQgYmluYXNjaWkuRXJyb3I6CisgICAgICAgICMgU2luY2Ugd2UgaGFkIGNvcnJlY3QgcGFkZGluZywgdGhpcyBtdXN0IGFuIGludmFsaWQgY2hhciBlcnJvci4KKyAgICAgICAgZGVmZWN0cyA9IFtlcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3QoKV0KKyAgICAgICAgIyBUaGUgbm9uLWFscGhhYmV0IGNoYXJhY3RlcnMgYXJlIGlnbm9yZWQgYXMgZmFyIGFzIHBhZGRpbmcKKyAgICAgICAgIyBnb2VzLCBidXQgd2UgZG9uJ3Qga25vdyBob3cgbWFueSB0aGVyZSBhcmUuICBTbyB3ZSdsbCBqdXN0CisgICAgICAgICMgdHJ5IHZhcmlvdXMgcGFkZGluZyBsZW5ndGhzIHVudGlsIHNvbWV0aGluZyB3b3Jrcy4KKyAgICAgICAgZm9yIGkgaW4gMCwgMSwgMiwgMzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gYmFzZTY0LmI2NGRlY29kZShlbmNvZGVkK2InPScqaSwgdmFsaWRhdGU9RmFsc2UpLCBkZWZlY3RzCisgICAgICAgICAgICBleGNlcHQgYmluYXNjaWkuRXJyb3I6CisgICAgICAgICAgICAgICAgaWYgaT09MDoKKyAgICAgICAgICAgICAgICAgICAgZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0KCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi4KKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJ1bmV4cGVjdGVkIGJpbmFzY2lpLkVycm9yIikKKworZGVmIGVuY29kZV9iKGJzdHJpbmcpOgorICAgIHJldHVybiBiYXNlNjQuYjY0ZW5jb2RlKGJzdHJpbmcpLmRlY29kZSgnYXNjaWknKQorCitkZWYgbGVuX2IoYnN0cmluZyk6CisgICAgZ3JvdXBzX29mXzMsIGxlZnRvdmVyID0gZGl2bW9kKGxlbihic3RyaW5nKSwgMykKKyAgICAjIDQgYnl0ZXMgb3V0IGZvciBlYWNoIDMgYnl0ZXMgKG9yIG5vbnplcm8gZnJhY3Rpb24gdGhlcmVvZikgaW4uCisgICAgcmV0dXJuIGdyb3Vwc19vZl8zICogNCArICg0IGlmIGxlZnRvdmVyIGVsc2UgMCkKKworCitfY3RlX2RlY29kZXJzID0geworICAgICdxJzogZGVjb2RlX3EsCisgICAgJ2InOiBkZWNvZGVfYiwKKyAgICB9CisKK2RlZiBkZWNvZGUoZXcpOgorICAgICIiIkRlY29kZSBlbmNvZGVkIHdvcmQgYW5kIHJldHVybiAoc3RyaW5nLCBjaGFyc2V0LCBsYW5nLCBkZWZlY3RzKSB0dXBsZS4KKworICAgIEFuIFJGQyAyMDQ3LzIyNDMgZW5jb2RlZCB3b3JkIGhhcyB0aGUgZm9ybToKKworICAgICAgICA9P2NoYXJzZXQqbGFuZz9jdGU/ZW5jb2RlZF9zdHJpbmc/PQorCisgICAgd2hlcmUgJypsYW5nJyBtYXkgYmUgb21pdHRlZCBidXQgdGhlIG90aGVyIHBhcnRzIG1heSBub3QgYmUuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGV4cGVjdHMgZXhhY3RseSBzdWNoIGEgc3RyaW5nICh0aGF0IGlzLCBpdCBkb2VzIG5vdCBjaGVjayB0aGUKKyAgICBzeW50YXggYW5kIG1heSByYWlzZSBlcnJvcnMgaWYgdGhlIHN0cmluZyBpcyBub3Qgd2VsbCBmb3JtZWQpLCBhbmQgcmV0dXJucworICAgIHRoZSBlbmNvZGVkX3N0cmluZyBkZWNvZGVkIGZpcnN0IGZyb20gaXRzIENvbnRlbnQgVHJhbnNmZXIgRW5jb2RpbmcgYW5kCisgICAgdGhlbiBmcm9tIHRoZSByZXN1bHRpbmcgYnl0ZXMgaW50byB1bmljb2RlIHVzaW5nIHRoZSBzcGVjaWZpZWQgY2hhcnNldC4gIElmCisgICAgdGhlIGN0ZS1kZWNvZGVkIHN0cmluZyBkb2VzIG5vdCBzdWNjZXNzZnVsbHkgZGVjb2RlIHVzaW5nIHRoZSBzcGVjaWZpZWQKKyAgICBjaGFyYWN0ZXIgc2V0LCBhIGRlZmVjdCBpcyBhZGRlZCB0byB0aGUgZGVmZWN0cyBsaXN0IGFuZCB0aGUgdW5rbm93biBvY3RldHMKKyAgICBhcmUgcmVwbGFjZWQgYnkgdGhlIHVuaWNvZGUgJ3Vua25vd24nIGNoYXJhY3RlciBcdUZERkYuCisKKyAgICBUaGUgc3BlY2lmaWVkIGNoYXJzZXQgYW5kIGxhbmd1YWdlIGFyZSByZXR1cm5lZC4gIFRoZSBkZWZhdWx0IGZvciBsYW5ndWFnZSwKKyAgICB3aGljaCBpcyByYXJlbHkgaWYgZXZlciBlbmNvdW50ZXJlZCwgaXMgdGhlIGVtcHR5IHN0cmluZy4KKworICAgICIiIgorICAgIF8sIGNoYXJzZXQsIGN0ZSwgY3RlX3N0cmluZywgXyA9IGV3LnNwbGl0KCc/JykKKyAgICBjaGFyc2V0LCBfLCBsYW5nID0gY2hhcnNldC5wYXJ0aXRpb24oJyonKQorICAgIGN0ZSA9IGN0ZS5sb3dlcigpCisgICAgIyBSZWNvdmVyIHRoZSBvcmlnaW5hbCBieXRlcyBhbmQgZG8gQ1RFIGRlY29kaW5nLgorICAgIGJzdHJpbmcgPSBjdGVfc3RyaW5nLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKyAgICBic3RyaW5nLCBkZWZlY3RzID0gX2N0ZV9kZWNvZGVyc1tjdGVdKGJzdHJpbmcpCisgICAgIyBUdXJuIHRoZSBDVEUgZGVjb2RlZCBieXRlcyBpbnRvIHVuaWNvZGUuCisgICAgdHJ5OgorICAgICAgICBzdHJpbmcgPSBic3RyaW5nLmRlY29kZShjaGFyc2V0KQorICAgIGV4Y2VwdCBVbmljb2RlRXJyb3I6CisgICAgICAgIGRlZmVjdHMuYXBwZW5kKGVycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0KCJFbmNvZGVkIHdvcmQgIgorICAgICAgICAgICAgImNvbnRhaW5zIGJ5dGVzIG5vdCBkZWNvZGFibGUgdXNpbmcge30gY2hhcnNldCIuZm9ybWF0KGNoYXJzZXQpKSkKKyAgICAgICAgc3RyaW5nID0gYnN0cmluZy5kZWNvZGUoY2hhcnNldCwgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgZXhjZXB0IExvb2t1cEVycm9yOgorICAgICAgICBzdHJpbmcgPSBic3RyaW5nLmRlY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKyAgICAgICAgaWYgY2hhcnNldC5sb3dlcigpICE9ICd1bmtub3duLThiaXQnOgorICAgICAgICAgICAgZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkNoYXJzZXRFcnJvcigiVW5rbm93biBjaGFyc2V0IHt9ICIKKyAgICAgICAgICAgICAgICAiaW4gZW5jb2RlZCB3b3JkOyBkZWNvZGVkIGFzIHVua25vd24gYnl0ZXMiLmZvcm1hdChjaGFyc2V0KSkpCisgICAgcmV0dXJuIHN0cmluZywgY2hhcnNldCwgbGFuZywgZGVmZWN0cworCisKK19jdGVfZW5jb2RlcnMgPSB7CisgICAgJ3EnOiBlbmNvZGVfcSwKKyAgICAnYic6IGVuY29kZV9iLAorICAgIH0KKworX2N0ZV9lbmNvZGVfbGVuZ3RoID0geworICAgICdxJzogbGVuX3EsCisgICAgJ2InOiBsZW5fYiwKKyAgICB9CisKK2RlZiBlbmNvZGUoc3RyaW5nLCBjaGFyc2V0PSd1dGYtOCcsIGVuY29kaW5nPU5vbmUsIGxhbmc9JycpOgorICAgICIiIkVuY29kZSBzdHJpbmcgdXNpbmcgdGhlIENURSBlbmNvZGluZyB0aGF0IHByb2R1Y2VzIHRoZSBzaG9ydGVyIHJlc3VsdC4KKworICAgIFByb2R1Y2VzIGFuIFJGQyAyMDQ3LzIyNDMgZW5jb2RlZCB3b3JkIG9mIHRoZSBmb3JtOgorCisgICAgICAgID0/Y2hhcnNldCpsYW5nP2N0ZT9lbmNvZGVkX3N0cmluZz89CisKKyAgICB3aGVyZSAnKmxhbmcnIGlzIG9taXR0ZWQgdW5sZXNzIHRoZSAnbGFuZycgcGFyYW1ldGVyIGlzIGdpdmVuIGEgdmFsdWUuCisgICAgT3B0aW9uYWwgYXJndW1lbnQgY2hhcnNldCAoZGVmYXVsdHMgdG8gdXRmLTgpIHNwZWNpZmllcyB0aGUgY2hhcnNldCB0byB1c2UKKyAgICB0byBlbmNvZGUgdGhlIHN0cmluZyB0byBiaW5hcnkgYmVmb3JlIENURSBlbmNvZGluZyBpdC4gIE9wdGlvbmFsIGFyZ3VtZW50CisgICAgJ2VuY29kaW5nJyBpcyB0aGUgY3RlIHNwZWNpZmllciBmb3IgdGhlIGVuY29kaW5nIHRoYXQgc2hvdWxkIGJlIHVzZWQgKCdxJworICAgIG9yICdiJyk7IGlmIGl0IGlzIE5vbmUgKHRoZSBkZWZhdWx0KSB0aGUgZW5jb2Rpbmcgd2hpY2ggcHJvZHVjZXMgdGhlCisgICAgc2hvcnRlc3QgZW5jb2RlZCBzZXF1ZW5jZSBpcyB1c2VkLCBleGNlcHQgdGhhdCAncScgaXMgcHJlZmVycmVkIGlmIGl0IGlzIHVwCisgICAgdG8gZml2ZSBjaGFyYWN0ZXJzIGxvbmdlci4gIE9wdGlvbmFsIGFyZ3VtZW50ICdsYW5nJyAoZGVmYXVsdCAnJykgZ2l2ZXMgdGhlCisgICAgUkZDIDIyNDMgbGFuZ3VhZ2Ugc3RyaW5nIHRvIHNwZWNpZnkgaW4gdGhlIGVuY29kZWQgd29yZC4KKworICAgICIiIgorICAgIGlmIGNoYXJzZXQgPT0gJ3Vua25vd24tOGJpdCc6CisgICAgICAgIGJzdHJpbmcgPSBzdHJpbmcuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorICAgIGVsc2U6CisgICAgICAgIGJzdHJpbmcgPSBzdHJpbmcuZW5jb2RlKGNoYXJzZXQpCisgICAgaWYgZW5jb2RpbmcgaXMgTm9uZToKKyAgICAgICAgcWxlbiA9IF9jdGVfZW5jb2RlX2xlbmd0aFsncSddKGJzdHJpbmcpCisgICAgICAgIGJsZW4gPSBfY3RlX2VuY29kZV9sZW5ndGhbJ2InXShic3RyaW5nKQorICAgICAgICAjIEJpYXMgdG93YXJkIHEuICA1IGlzIGFyYml0cmFyeS4KKyAgICAgICAgZW5jb2RpbmcgPSAncScgaWYgcWxlbiAtIGJsZW4gPCA1IGVsc2UgJ2InCisgICAgZW5jb2RlZCA9IF9jdGVfZW5jb2RlcnNbZW5jb2RpbmddKGJzdHJpbmcpCisgICAgaWYgbGFuZzoKKyAgICAgICAgbGFuZyA9ICcqJyArIGxhbmcKKyAgICByZXR1cm4gIj0/e317fT97fT97fT89Ii5mb3JtYXQoY2hhcnNldCwgbGFuZywgZW5jb2RpbmcsIGVuY29kZWQpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkgYi9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZjZmE1MgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbWFpbC9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQpAQCAtMCwwICsxLDI5NTMgQEAKKyIiIkhlYWRlciB2YWx1ZSBwYXJzZXIgaW1wbGVtZW50aW5nIHZhcmlvdXMgZW1haWwtcmVsYXRlZCBSRkMgcGFyc2luZyBydWxlcy4KKworVGhlIHBhcnNpbmcgbWV0aG9kcyBkZWZpbmVkIGluIHRoaXMgbW9kdWxlIGltcGxlbWVudCB2YXJpb3VzIGVtYWlsIHJlbGF0ZWQKK3BhcnNpbmcgcnVsZXMuICBQcmluY2lwYWwgYW1vbmcgdGhlbSBpcyBSRkMgNTMyMiwgd2hpY2ggaXMgdGhlIGZvbGxvd29uCit0byBSRkMgMjgyMiBhbmQgcHJpbWFyaWx5IGEgY2xhcmlmaWNhdGlvbiBvZiB0aGUgZm9ybWVyLiAgSXQgYWxzbyBpbXBsZW1lbnRzCitSRkMgMjA0NyBlbmNvZGVkIHdvcmQgZGVjb2RpbmcuCisKK1JGQyA1MzIyIGdvZXMgdG8gY29uc2lkZXJhYmxlIHRyb3VibGUgdG8gbWFpbnRhaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoCitSRkMgODIyIGluIHRoZSBwYXJzZSBwaGFzZSwgd2hpbGUgY2xlYW5pbmcgdXAgdGhlIHN0cnVjdHVyZSBvbiB0aGUgZ2VuZXJhdGlvbgorcGhhc2UuICBUaGlzIHBhcnNlciBzdXBwb3J0cyBjb3JyZWN0IFJGQyA1MzIyIGdlbmVyYXRpb24gYnkgdGFnZ2luZyB3aGl0ZSBzcGFjZQorYXMgZm9sZGluZyB3aGl0ZSBzcGFjZSBvbmx5IHdoZW4gZm9sZGluZyBpcyBhbGxvd2VkIGluIHRoZSBub24tb2Jzb2xldGUgcnVsZQorc2V0cy4gIEFjdHVhbGx5LCB0aGUgcGFyc2VyIGlzIGV2ZW4gbW9yZSBnZW5lcm91cyB3aGVuIGFjY2VwdGluZyBpbnB1dCB0aGFuIFJGQworNTMyMiBtYW5kYXRlcywgZm9sbG93aW5nIHRoZSBzcGlyaXQgb2YgUG9zdGVsJ3MgTGF3LCB3aGljaCBSRkMgNTMyMiBlbmNvdXJhZ2VzLgorV2hlcmUgcG9zc2libGUgZGV2aWF0aW9ucyBmcm9tIHRoZSBzdGFuZGFyZCBhcmUgYW5ub3RhdGVkIG9uIHRoZSAnZGVmZWN0cycKK2F0dHJpYnV0ZSBvZiB0b2tlbnMgdGhhdCBkZXZpYXRlLgorCitUaGUgZ2VuZXJhbCBzdHJ1Y3R1cmUgb2YgdGhlIHBhcnNlciBmb2xsb3dzIFJGQyA1MzIyLCBhbmQgdXNlcyBpdHMgdGVybWlub2xvZ3kKK3doZXJlIHRoZXJlIGlzIGEgZGlyZWN0IGNvcnJlc3BvbmRlbmNlLiAgV2hlcmUgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIGEKK3NvbWV3aGF0IGRpZmZlcmVudCBzdHJ1Y3R1cmUgdGhhbiB0aGF0IHVzZWQgYnkgdGhlIGZvcm1hbCBncmFtbWFyLCBuZXcgdGVybXMKK3RoYXQgbWltaWMgdGhlIGNsb3Nlc3QgZXhpc3RpbmcgdGVybXMgYXJlIHVzZWQuICBUaHVzLCBpdCByZWFsbHkgaGVscHMgdG8gaGF2ZQorYSBjb3B5IG9mIFJGQyA1MzIyIGhhbmR5IHdoZW4gc3R1ZHlpbmcgdGhpcyBjb2RlLgorCitJbnB1dCB0byB0aGUgcGFyc2VyIGlzIGEgc3RyaW5nIHRoYXQgaGFzIGFscmVhZHkgYmVlbiB1bmZvbGRlZCBhY2NvcmRpbmcgdG8KK1JGQyA1MzIyIHJ1bGVzLiAgQWNjb3JkaW5nIHRvIHRoZSBSRkMgdGhpcyB1bmZvbGRpbmcgaXMgdGhlIHZlcnkgZmlyc3Qgc3RlcCwgYW5kCit0aGlzIHBhcnNlciBsZWF2ZXMgdGhlIHVuZm9sZGluZyBzdGVwIHRvIGEgaGlnaGVyIGxldmVsIG1lc3NhZ2UgcGFyc2VyLCB3aGljaAord2lsbCBoYXZlIGFscmVhZHkgZGV0ZWN0ZWQgdGhlIGxpbmUgYnJlYWtzIHRoYXQgbmVlZCB1bmZvbGRpbmcgd2hpbGUKK2RldGVybWluaW5nIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBlYWNoIGhlYWRlci4KKworVGhlIG91dHB1dCBvZiB0aGUgcGFyc2VyIGlzIGEgVG9rZW5MaXN0IG9iamVjdCwgd2hpY2ggaXMgYSBsaXN0IHN1YmNsYXNzLiAgQQorVG9rZW5MaXN0IGlzIGEgcmVjdXJzaXZlIGRhdGEgc3RydWN0dXJlLiAgVGhlIHRlcm1pbmFsIG5vZGVzIG9mIHRoZSBzdHJ1Y3R1cmUKK2FyZSBUZXJtaW5hbCBvYmplY3RzLCB3aGljaCBhcmUgc3ViY2xhc3NlcyBvZiBzdHIuICBUaGVzZSBkbyBub3QgY29ycmVzcG9uZAorZGlyZWN0bHkgdG8gdGVybWluYWwgb2JqZWN0cyBpbiB0aGUgZm9ybWFsIGdyYW1tYXIsIGJ1dCBhcmUgaW5zdGVhZCBtb3JlCitwcmFjdGljYWwgaGlnaGVyIGxldmVsIGNvbWJpbmF0aW9ucyBvZiB0cnVlIHRlcm1pbmFscy4KKworQWxsIFRva2VuTGlzdCBhbmQgVGVybWluYWwgb2JqZWN0cyBoYXZlIGEgJ3ZhbHVlJyBhdHRyaWJ1dGUsIHdoaWNoIHByb2R1Y2VzIHRoZQorc2VtYW50aWNhbGx5IG1lYW5pbmdmdWwgdmFsdWUgb2YgdGhhdCBwYXJ0IG9mIHRoZSBwYXJzZSBzdWJ0cmVlLiAgVGhlIHZhbHVlIG9mCithbGwgd2hpdGVzcGFjZSB0b2tlbnMgKG5vIG1hdHRlciBob3cgbWFueSBzdWItdG9rZW5zIHRoZXkgbWF5IGNvbnRhaW4pIGlzIGEKK3NpbmdsZSBzcGFjZSwgYXMgcGVyIHRoZSBSRkMgcnVsZXMuICBUaGlzIGluY2x1ZGVzICdDRldTJywgd2hpY2ggaXMgaGVyZWluCitpbmNsdWRlZCBpbiB0aGUgZ2VuZXJhbCBjbGFzcyBvZiB3aGl0ZXNwYWNlIHRva2Vucy4gIFRoZXJlIGlzIG9uZSBleGNlcHRpb24gdG8KK3RoZSBydWxlIHRoYXQgd2hpdGVzcGFjZSB0b2tlbnMgYXJlIGNvbGxhcHNlZCBpbnRvIHNpbmdsZSBzcGFjZXMgaW4gdmFsdWVzOiBpbgordGhlIHZhbHVlIG9mIGEgJ2JhcmUtcXVvdGVkLXN0cmluZycgKGEgcXVvdGVkLXN0cmluZyB3aXRoIG5vIGxlYWRpbmcgb3IKK3RyYWlsaW5nIHdoaXRlc3BhY2UpLCBhbnkgd2hpdGVzcGFjZSB0aGF0IGFwcGVhcmVkIGJldHdlZW4gdGhlIHF1b3RhdGlvbiBtYXJrcworaXMgcHJlc2VydmVkIGluIHRoZSByZXR1cm5lZCB2YWx1ZS4gIE5vdGUgdGhhdCBpbiBhbGwgVGVybWluYWwgc3RyaW5ncyBxdW90ZWQKK3BhaXJzIGFyZSB0dXJuZWQgaW50byB0aGVpciB1bnF1b3RlZCB2YWx1ZXMuCisKK0FsbCBUb2tlbkxpc3QgYW5kIFRlcm1pbmFsIG9iamVjdHMgYWxzbyBoYXZlIGEgc3RyaW5nIHZhbHVlLCB3aGljaCBhdHRlbXB0cyB0bworYmUgYSAiY2Fub25pY2FsIiByZXByZXNlbnRhdGlvbiBvZiB0aGUgUkZDLWNvbXBsaWFudCBmb3JtIG9mIHRoZSBzdWJzdHJpbmcgdGhhdAorcHJvZHVjZWQgdGhlIHBhcnNlZCBzdWJ0cmVlLCBpbmNsdWRpbmcgbWluaW1hbCB1c2Ugb2YgcXVvdGVkIHBhaXIgcXVvdGluZy4KK1doaXRlc3BhY2UgcnVucyBhcmUgbm90IGNvbGxhcHNlZC4KKworQ29tbWVudCB0b2tlbnMgYWxzbyBoYXZlIGEgJ2NvbnRlbnQnIGF0dHJpYnV0ZSBwcm92aWRpbmcgdGhlIHN0cmluZyBmb3VuZAorYmV0d2VlbiB0aGUgcGFyZW5zIChpbmNsdWRpbmcgYW55IG5lc3RlZCBjb21tZW50cykgd2l0aCB3aGl0ZXNwYWNlIHByZXNlcnZlZC4KKworQWxsIFRva2VuTGlzdCBhbmQgVGVybWluYWwgb2JqZWN0cyBoYXZlIGEgJ2RlZmVjdHMnIGF0dHJpYnV0ZSB3aGljaCBpcyBhCitwb3NzaWJseSBlbXB0eSBsaXN0IGFsbCBvZiB0aGUgZGVmZWN0cyBmb3VuZCB3aGlsZSBjcmVhdGluZyB0aGUgdG9rZW4uICBEZWZlY3RzCittYXkgYXBwZWFyIG9uIGFueSB0b2tlbiBpbiB0aGUgdHJlZSwgYW5kIGEgY29tcG9zaXRlIGxpc3Qgb2YgYWxsIGRlZmVjdHMgaW4gdGhlCitzdWJ0cmVlIGlzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSAnYWxsX2RlZmVjdHMnIGF0dHJpYnV0ZSBvZiBhbnkgbm9kZS4gIChGb3IKK1Rlcm1pbmFsIG5vdGVzIHguZGVmZWN0cyA9PSB4LmFsbF9kZWZlY3RzLikKKworRWFjaCBvYmplY3QgaW4gYSBwYXJzZSB0cmVlIGlzIGNhbGxlZCBhICd0b2tlbicsIGFuZCBlYWNoIGhhcyBhICd0b2tlbl90eXBlJworYXR0cmlidXRlIHRoYXQgZ2l2ZXMgdGhlIG5hbWUgZnJvbSB0aGUgUkZDIDUzMjIgZ3JhbW1hciB0aGF0IGl0IHJlcHJlc2VudHMuCitOb3QgYWxsIFJGQyA1MzIyIG5vZGVzIGFyZSBwcm9kdWNlZCwgYW5kIHRoZXJlIGlzIG9uZSBub24tUkZDIDUzMjIgbm9kZSB0aGF0CittYXkgYmUgcHJvZHVjZWQ6ICdwdGV4dCcuICBBICdwdGV4dCcgaXMgYSBzdHJpbmcgb2YgcHJpbnRhYmxlIGFzY2lpIGNoYXJhY3RlcnMuCitJdCBpcyByZXR1cm5lZCBpbiBwbGFjZSBvZiBsaXN0cyBvZiAoY3RleHQvcXVvdGVkLXBhaXIpIGFuZAorKHF0ZXh0L3F1b3RlZC1wYWlyKS4KKworWFhYOiBwcm92aWRlIGNvbXBsZXRlIGxpc3Qgb2YgdG9rZW4gdHlwZXMuCisiIiIKKworaW1wb3J0IHJlCitpbXBvcnQgdXJsbGliICAgIyBGb3IgdXJsbGliLnBhcnNlLnVucXVvdGUKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUsIE9yZGVyZWREaWN0Citmcm9tIGVtYWlsIGltcG9ydCBfZW5jb2RlZF93b3JkcyBhcyBfZXcKK2Zyb20gZW1haWwgaW1wb3J0IGVycm9ycworZnJvbSBlbWFpbCBpbXBvcnQgdXRpbHMKKworIworIyBVc2VmdWwgY29uc3RhbnRzIGFuZCBmdW5jdGlvbnMKKyMKKworV1NQID0gc2V0KCcgXHQnKQorQ0ZXU19MRUFERVIgPSBXU1AgfCBzZXQoJygnKQorU1BFQ0lBTFMgPSBzZXQocicoKTw+QCw6Oy5cIltdJykKK0FUT01fRU5EUyA9IFNQRUNJQUxTIHwgV1NQCitET1RfQVRPTV9FTkRTID0gQVRPTV9FTkRTIC0gc2V0KCcuJykKKyMgJy4nLCAnIicsIGFuZCAnKCcgZG8gbm90IGVuZCBwaHJhc2VzIGluIG9yZGVyIHRvIHN1cHBvcnQgb2JzLXBocmFzZQorUEhSQVNFX0VORFMgPSBTUEVDSUFMUyAtIHNldCgnLiIoJykKK1RTUEVDSUFMUyA9IChTUEVDSUFMUyB8IHNldCgnLz89JykpIC0gc2V0KCcuJykKK1RPS0VOX0VORFMgPSBUU1BFQ0lBTFMgfCBXU1AKK0FTUEVDSUFMUyA9IFRTUEVDSUFMUyB8IHNldCgiKiclIikKK0FUVFJJQlVURV9FTkRTID0gQVNQRUNJQUxTIHwgV1NQCitFWFRFTkRFRF9BVFRSSUJVVEVfRU5EUyA9IEFUVFJJQlVURV9FTkRTIC0gc2V0KCclJykKKworZGVmIHF1b3RlX3N0cmluZyh2YWx1ZSk6CisgICAgcmV0dXJuICciJytzdHIodmFsdWUpLnJlcGxhY2UoJ1xcJywgJ1xcXFwnKS5yZXBsYWNlKCciJywgcidcIicpKyciJworCisjCisjIEFjY3VtdWxhdG9yIGZvciBoZWFkZXIgZm9sZGluZworIworCitjbGFzcyBfRm9sZGVkOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1heGxlbiwgcG9saWN5KToKKyAgICAgICAgc2VsZi5tYXhsZW4gPSBtYXhsZW4KKyAgICAgICAgc2VsZi5wb2xpY3kgPSBwb2xpY3kKKyAgICAgICAgc2VsZi5sYXN0bGVuID0gMAorICAgICAgICBzZWxmLnN0aWNreXNwYWNlID0gTm9uZQorICAgICAgICBzZWxmLmZpcnN0bGluZSA9IFRydWUKKyAgICAgICAgc2VsZi5kb25lID0gW10KKyAgICAgICAgc2VsZi5jdXJyZW50ID0gW10KKworICAgIGRlZiBuZXdsaW5lKHNlbGYpOgorICAgICAgICBzZWxmLmRvbmUuZXh0ZW5kKHNlbGYuY3VycmVudCkKKyAgICAgICAgc2VsZi5kb25lLmFwcGVuZChzZWxmLnBvbGljeS5saW5lc2VwKQorICAgICAgICBzZWxmLmN1cnJlbnQuY2xlYXIoKQorICAgICAgICBzZWxmLmxhc3RsZW4gPSAwCisKKyAgICBkZWYgZmluYWxpemUoc2VsZik6CisgICAgICAgIGlmIHNlbGYuY3VycmVudDoKKyAgICAgICAgICAgIHNlbGYubmV3bGluZSgpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oc2VsZi5kb25lKQorCisgICAgZGVmIGFwcGVuZChzZWxmLCBzdG9rZW4pOgorICAgICAgICBzZWxmLmN1cnJlbnQuYXBwZW5kKHN0b2tlbikKKworICAgIGRlZiBhcHBlbmRfaWZfZml0cyhzZWxmLCB0b2tlbiwgc3Rva2VuPU5vbmUpOgorICAgICAgICBpZiBzdG9rZW4gaXMgTm9uZToKKyAgICAgICAgICAgIHN0b2tlbiA9IHN0cih0b2tlbikKKyAgICAgICAgbCA9IGxlbihzdG9rZW4pCisgICAgICAgIGlmIHNlbGYuc3RpY2t5c3BhY2UgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzdGlja3lzcGFjZV9sZW4gPSBsZW4oc2VsZi5zdGlja3lzcGFjZSkKKyAgICAgICAgICAgIGlmIHNlbGYubGFzdGxlbiArIHN0aWNreXNwYWNlX2xlbiArIGwgPD0gc2VsZi5tYXhsZW46CisgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzZWxmLnN0aWNreXNwYWNlKQorICAgICAgICAgICAgICAgIHNlbGYubGFzdGxlbiArPSBzdGlja3lzcGFjZV9sZW4KKyAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnQuYXBwZW5kKHN0b2tlbikKKyAgICAgICAgICAgICAgICBzZWxmLmxhc3RsZW4gKz0gbAorICAgICAgICAgICAgICAgIHNlbGYuc3RpY2t5c3BhY2UgPSBOb25lCisgICAgICAgICAgICAgICAgc2VsZi5maXJzdGxpbmUgPSBGYWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBpZiB0b2tlbi5oYXNfZndzOgorICAgICAgICAgICAgICAgIHdzID0gdG9rZW4ucG9wX2xlYWRpbmdfZndzKCkKKyAgICAgICAgICAgICAgICBpZiB3cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGlja3lzcGFjZSArPSBzdHIod3MpCisgICAgICAgICAgICAgICAgICAgIHN0aWNreXNwYWNlX2xlbiArPSBsZW4od3MpCisgICAgICAgICAgICAgICAgdG9rZW4uX2ZvbGQoc2VsZikKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgaWYgc3RpY2t5c3BhY2VfbGVuIGFuZCBsICsgMSA8PSBzZWxmLm1heGxlbjoKKyAgICAgICAgICAgICAgICBtYXJnaW4gPSBzZWxmLm1heGxlbiAtIGwKKyAgICAgICAgICAgICAgICBpZiAwIDwgbWFyZ2luIDwgc3RpY2t5c3BhY2VfbGVuOgorICAgICAgICAgICAgICAgICAgICB0cmltID0gc3RpY2t5c3BhY2VfbGVuIC0gbWFyZ2luCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudC5hcHBlbmQoc2VsZi5zdGlja3lzcGFjZVs6dHJpbV0pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RpY2t5c3BhY2UgPSBzZWxmLnN0aWNreXNwYWNlW3RyaW06XQorICAgICAgICAgICAgICAgICAgICBzdGlja3lzcGFjZV9sZW4gPSB0cmltCisgICAgICAgICAgICAgICAgc2VsZi5uZXdsaW5lKCkKKyAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnQuYXBwZW5kKHNlbGYuc3RpY2t5c3BhY2UpCisgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzdG9rZW4pCisgICAgICAgICAgICAgICAgc2VsZi5sYXN0bGVuID0gbCArIHN0aWNreXNwYWNlX2xlbgorICAgICAgICAgICAgICAgIHNlbGYuc3RpY2t5c3BhY2UgPSBOb25lCisgICAgICAgICAgICAgICAgc2VsZi5maXJzdGxpbmUgPSBGYWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5maXJzdGxpbmU6CisgICAgICAgICAgICAgICAgc2VsZi5uZXdsaW5lKCkKKyAgICAgICAgICAgIHNlbGYuY3VycmVudC5hcHBlbmQoc2VsZi5zdGlja3lzcGFjZSkKKyAgICAgICAgICAgIHNlbGYuY3VycmVudC5hcHBlbmQoc3Rva2VuKQorICAgICAgICAgICAgc2VsZi5zdGlja3lzcGFjZSA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuZmlyc3RsaW5lID0gRmFsc2UKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIHNlbGYubGFzdGxlbiArIGwgPD0gc2VsZi5tYXhsZW46CisgICAgICAgICAgICBzZWxmLmN1cnJlbnQuYXBwZW5kKHN0b2tlbikKKyAgICAgICAgICAgIHNlbGYubGFzdGxlbiArPSBsCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBsIDwgc2VsZi5tYXhsZW46CisgICAgICAgICAgICBzZWxmLm5ld2xpbmUoKQorICAgICAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzdG9rZW4pCisgICAgICAgICAgICBzZWxmLmxhc3RsZW4gPSBsCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworIworIyBUb2tlbkxpc3QgYW5kIGl0cyBzdWJjbGFzc2VzCisjCisKK2NsYXNzIFRva2VuTGlzdChsaXN0KToKKworICAgIHRva2VuX3R5cGUgPSBOb25lCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3KQorICAgICAgICBzZWxmLmRlZmVjdHMgPSBbXQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJy5qb2luKHN0cih4KSBmb3IgeCBpbiBzZWxmKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJ3t9KHt9KScuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBlcigpLl9fcmVwcl9fKCkpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIHJldHVybiAnJy5qb2luKHgudmFsdWUgZm9yIHggaW4gc2VsZiBpZiB4LnZhbHVlKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFsbF9kZWZlY3RzKHNlbGYpOgorICAgICAgICByZXR1cm4gc3VtKCh4LmFsbF9kZWZlY3RzIGZvciB4IGluIHNlbGYpLCBzZWxmLmRlZmVjdHMpCisKKyAgICAjCisgICAgIyBGb2xkaW5nIEFQSQorICAgICMKKyAgICAjIHBhcnRzKCk6CisgICAgIworICAgICMgcmV0dXJuIGEgbGlzdCBvZiBvYmplY3RzIHRoYXQgY29uc3RpdHV0ZSB0aGUgImhpZ2hlciBsZXZlbCBzeW50YWN0aWMKKyAgICAjIG9iamVjdHMiIHNwZWNpZmllZCBieSB0aGUgUkZDIGFzIHRoZSBiZXN0IHBsYWNlcyB0byBmb2xkIGEgaGVhZGVyIGxpbmUuCisgICAgIyBUaGUgcmV0dXJuZWQgb2JqZWN0cyBtdXN0IGluY2x1ZGUgbGVhZGluZyBmb2xkaW5nIHdoaXRlIHNwYWNlLCBldmVuIGlmCisgICAgIyB0aGlzIG1lYW5zIG11dGF0aW5nIHRoZSB1bmRlcmx5aW5nIHBhcnNlIHRyZWUgb2YgdGhlIG9iamVjdC4gIEVhY2ggb2JqZWN0CisgICAgIyBpcyBvbmx5IHJlc3BvbnNpYmxlIGZvciByZXR1cm5pbmcgKml0cyogcGFydHMsIGFuZCBzaG91bGQgbm90IGRyaWxsIGRvd24KKyAgICAjIHRvIGFueSBsb3dlciBsZXZlbCBleGNlcHQgYXMgcmVxdWlyZWQgdG8gbWVldCB0aGUgbGVhZGluZyBmb2xkaW5nIHdoaXRlCisgICAgIyBzcGFjZSBjb25zdHJhaW50LgorICAgICMKKyAgICAjIF9mb2xkKGZvbGRlZCk6CisgICAgIworICAgICMgICBmb2xkZWQ6IHRoZSByZXN1bHQgYWNjdW11bGF0b3IuICBUaGlzIGlzIGFuIGluc3RhbmNlIG9mIF9Gb2xkZWQuCisgICAgIyAgICAgICAoWFhYOiBJIGhhdmVuJ3QgZmluaXNoZWQgZmFjdG9yaW5nIHRoaXMgb3V0IHlldCwgdGhlIGZvbGRpbmcgY29kZQorICAgICMgICAgICAgcHJldHR5IG11Y2ggdXNlcyB0aGlzIGFzIGEgc3RhdGUgb2JqZWN0LikgV2hlbiB0aGUgZm9sZGVkLmN1cnJlbnQKKyAgICAjICAgICAgIGNvbnRhaW5zIGFzIG11Y2ggdGV4dCBhcyB3aWxsIGZpdCwgdGhlIF9mb2xkIG1ldGhvZCBzaG91bGQgY2FsbAorICAgICMgICAgICAgZm9sZGVkLm5ld2xpbmUuCisgICAgIyAgZm9sZGVkLmxhc3RsZW46IHRoZSBjdXJyZW50IGxlbmd0aCBvZiB0aGUgdGVzdCBzdG9yZWQgaW4gZm9sZGVkLmN1cnJlbnQuCisgICAgIyAgZm9sZGVkLm1heGxlbjogVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCBtYXkgYXBwZWFyIG9uIGEKKyAgICAjICAgICAgIGZvbGRlZCBsaW5lLiAgRGlmZmVycyBmcm9tIHRoZSBwb2xpY3kgc2V0dGluZyBpbiB0aGF0ICJubyBsaW1pdCIgaXMKKyAgICAjICAgICAgIHJlcHJlc2VudGVkIGJ5ICtpbmYsIHdoaWNoIG1lYW5zIGl0IGNhbiBiZSB1c2VkIGluIHRoZSB0cml2aWFsbHkKKyAgICAjICAgICAgIGxvZ2ljYWwgZmFzaGlvbiBpbiBjb21wYXJpc29ucy4KKyAgICAjCisgICAgIyBDdXJyZW50bHkgbm8gc3ViY2xhc3NlcyBpbXBsZW1lbnQgcGFydHMsIGFuZCBJIHRoaW5rIHRoaXMgd2lsbCByZW1haW4KKyAgICAjIHRydWUuICBBIHN1YmNsYXNzIG9ubHkgbmVlZHMgdG8gaW1wbGVtZW50IF9mb2xkIHdoZW4gdGhlIGdlbmVyaWMgdmVyc2lvbgorICAgICMgaXNuJ3Qgc3VmZmljaWVudC4gIF9mb2xkIHdpbGwgbmVlZCB0byBiZSBpbXBsZW1lbnRlZCBwcmltYXJpbHkgd2hlbiBpdCBpcworICAgICMgcG9zc2libGUgZm9yIGVuY29kZWQgd29yZHMgdG8gYXBwZWFyIGluIHRoZSBzcGVjaWFsaXplZCB0b2tlbi1saXN0LCBzaW5jZQorICAgICMgdGhlcmUgaXMgbm8gZ2VuZXJpYyBhbGdvcml0aG0gdGhhdCBjYW4ga25vdyB3aGVyZSBleGFjdGx5IHRoZSBlbmNvZGVkCisgICAgIyB3b3JkcyBhcmUgYWxsb3dlZC4gIEEgX2ZvbGQgaW1wbGVtZW50YXRpb24gaXMgcmVzcG9uc2libGUgZm9yIGZpbGxpbmcKKyAgICAjIGxpbmVzIGluIHRoZSBzYW1lIGdlbmVyYWwgd2F5IHRoYXQgdGhlIHRvcCBsZXZlbCBfZm9sZCBkb2VzLiBJdCBtYXksIGFuZAorICAgICMgc2hvdWxkLCBjYWxsIHRoZSBfZm9sZCBtZXRob2Qgb2Ygc3ViLW9iamVjdHMgaW4gYSBzaW1pbGFyIGZhc2hpb24gdG8gdGhhdAorICAgICMgb2YgdGhlIHRvcCBsZXZlbCBfZm9sZC4KKyAgICAjCisgICAgIyBYWFg6IEknbSBob3BpbmcgaXQgd2lsbCBiZSBwb3NzaWJsZSB0byBmYWN0b3IgdGhlIGV4aXN0aW5nIGNvZGUgZnVydGhlcgorICAgICMgdG8gcmVkdWNlIHJlZHVuZGFuY3kgYW5kIG1ha2UgdGhlIGxvZ2ljIGNsZWFyZXIuCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFydHMoc2VsZik6CisgICAgICAgIGtsYXNzID0gc2VsZi5fX2NsYXNzX18KKyAgICAgICAgdGhpcyA9IFtdCisgICAgICAgIGZvciB0b2tlbiBpbiBzZWxmOgorICAgICAgICAgICAgaWYgdG9rZW4uc3RhcnRzd2l0aF9md3MoKToKKyAgICAgICAgICAgICAgICBpZiB0aGlzOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCB0aGlzWzBdIGlmIGxlbih0aGlzKT09MSBlbHNlIGtsYXNzKHRoaXMpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXIoKQorICAgICAgICAgICAgZW5kX3dzID0gdG9rZW4ucG9wX3RyYWlsaW5nX3dzKCkKKyAgICAgICAgICAgIHRoaXMuYXBwZW5kKHRva2VuKQorICAgICAgICAgICAgaWYgZW5kX3dzOgorICAgICAgICAgICAgICAgIHlpZWxkIGtsYXNzKHRoaXMpCisgICAgICAgICAgICAgICAgdGhpcyA9IFtlbmRfd3NdCisgICAgICAgIGlmIHRoaXM6CisgICAgICAgICAgICB5aWVsZCB0aGlzWzBdIGlmIGxlbih0aGlzKT09MSBlbHNlIGtsYXNzKHRoaXMpCisKKyAgICBkZWYgc3RhcnRzd2l0aF9md3Moc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWzBdLnN0YXJ0c3dpdGhfZndzKCkKKworICAgIGRlZiBwb3BfbGVhZGluZ19md3Moc2VsZik6CisgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnZndzJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnBvcCgwKQorICAgICAgICByZXR1cm4gc2VsZlswXS5wb3BfbGVhZGluZ19md3MoKQorCisgICAgZGVmIHBvcF90cmFpbGluZ193cyhzZWxmKToKKyAgICAgICAgaWYgc2VsZlstMV0udG9rZW5fdHlwZSA9PSAnY2Z3cyc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5wb3AoLTEpCisgICAgICAgIHJldHVybiBzZWxmWy0xXS5wb3BfdHJhaWxpbmdfd3MoKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGhhc19md3Moc2VsZik6CisgICAgICAgIGZvciBwYXJ0IGluIHNlbGY6CisgICAgICAgICAgICBpZiBwYXJ0Lmhhc19md3M6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaGFzX2xlYWRpbmdfY29tbWVudChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0uaGFzX2xlYWRpbmdfY29tbWVudCgpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29tbWVudHMoc2VsZik6CisgICAgICAgIGNvbW1lbnRzID0gW10KKyAgICAgICAgZm9yIHRva2VuIGluIHNlbGY6CisgICAgICAgICAgICBjb21tZW50cy5leHRlbmQodG9rZW4uY29tbWVudHMpCisgICAgICAgIHJldHVybiBjb21tZW50cworCisgICAgZGVmIGZvbGQoc2VsZiwgKiwgcG9saWN5KToKKyAgICAgICAgIyBtYXhfbGluZV9sZW5ndGggMC9Ob25lIG1lYW5zIG5vIGxpbWl0LCBpZTogaW5maW5pdGVseSBsb25nLgorICAgICAgICBtYXhsZW4gPSBwb2xpY3kubWF4X2xpbmVfbGVuZ3RoIG9yIGZsb2F0KCIraW5mIikKKyAgICAgICAgZm9sZGVkID0gX0ZvbGRlZChtYXhsZW4sIHBvbGljeSkKKyAgICAgICAgc2VsZi5fZm9sZChmb2xkZWQpCisgICAgICAgIGZvbGRlZC5maW5hbGl6ZSgpCisgICAgICAgIHJldHVybiBzdHIoZm9sZGVkKQorCisgICAgZGVmIGFzX2VuY29kZWRfd29yZChzZWxmLCBjaGFyc2V0KToKKyAgICAgICAgIyBUaGlzIHdvcmtzIG9ubHkgZm9yIHRoaW5ncyByZXR1cm5lZCBieSAncGFydHMnLCB3aGljaCBpbmNsdWRlCisgICAgICAgICMgdGhlIGxlYWRpbmcgZndzLCBpZiBhbnksIHRoYXQgc2hvdWxkIGJlIHVzZWQuCisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIHdzID0gc2VsZi5wb3BfbGVhZGluZ19md3MoKQorICAgICAgICBpZiB3czoKKyAgICAgICAgICAgIHJlcy5hcHBlbmQod3MpCisgICAgICAgIHRyYWlsZXIgPSBzZWxmLnBvcCgtMSkgaWYgc2VsZlstMV0udG9rZW5fdHlwZT09J2Z3cycgZWxzZSAnJworICAgICAgICByZXMuYXBwZW5kKF9ldy5lbmNvZGUoc3RyKHNlbGYpLCBjaGFyc2V0KSkKKyAgICAgICAgcmVzLmFwcGVuZCh0cmFpbGVyKQorICAgICAgICByZXR1cm4gJycuam9pbihyZXMpCisKKyAgICBkZWYgY3RlX2VuY29kZShzZWxmLCBjaGFyc2V0LCBwb2xpY3kpOgorICAgICAgICByZXMgPSBbXQorICAgICAgICBmb3IgcGFydCBpbiBzZWxmOgorICAgICAgICAgICAgcmVzLmFwcGVuZChwYXJ0LmN0ZV9lbmNvZGUoY2hhcnNldCwgcG9saWN5KSkKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzKQorCisgICAgZGVmIF9mb2xkKHNlbGYsIGZvbGRlZCk6CisgICAgICAgIGZvciBwYXJ0IGluIHNlbGYucGFydHM6CisgICAgICAgICAgICB0c3RyID0gc3RyKHBhcnQpCisgICAgICAgICAgICB0bGVuID0gbGVuKHRzdHIpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3RyKHBhcnQpLmVuY29kZSgndXMtYXNjaWknKQorICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICBpZiBhbnkoaXNpbnN0YW5jZSh4LCBlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHBhcnQuYWxsX2RlZmVjdHMpOgorICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ3Vua25vd24tOGJpdCcKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIFhYWDogdGhpcyBzaG91bGQgYmUgYSBwb2xpY3kgc2V0dGluZworICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ3V0Zi04JworICAgICAgICAgICAgICAgIHRzdHIgPSBwYXJ0LmN0ZV9lbmNvZGUoY2hhcnNldCwgZm9sZGVkLnBvbGljeSkKKyAgICAgICAgICAgICAgICB0bGVuID0gbGVuKHRzdHIpCisgICAgICAgICAgICBpZiBmb2xkZWQuYXBwZW5kX2lmX2ZpdHMocGFydCwgdHN0cik6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgUGVlbCBvZmYgdGhlIGxlYWRpbmcgd2hpdGVzcGFjZSBpZiBhbnkgYW5kIG1ha2UgaXQgc3RpY2t5LCB0bworICAgICAgICAgICAgIyBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24uCisgICAgICAgICAgICB3cyA9IHBhcnQucG9wX2xlYWRpbmdfZndzKCkKKyAgICAgICAgICAgIGlmIHdzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICMgUGVlbCBvZmYgdGhlIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgbWFrZSBpdCBzdGlja3ksIHRvCisgICAgICAgICAgICAgICAgIyBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24uCisgICAgICAgICAgICAgICAgZm9sZGVkLnN0aWNreXNwYWNlID0gc3RyKHBhcnQucG9wKDApKQorICAgICAgICAgICAgICAgIGlmIGZvbGRlZC5hcHBlbmRfaWZfZml0cyhwYXJ0KToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIHBhcnQuaGFzX2Z3czoKKyAgICAgICAgICAgICAgICBwYXJ0Ll9mb2xkKGZvbGRlZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBUaGVyZSBhcmUgbm8gZm9sZCBwb2ludHMgaW4gdGhpcyBvbmU7IGl0IGlzIHRvbyBsb25nIGZvciBhIHNpbmdsZQorICAgICAgICAgICAgIyBsaW5lIGFuZCBjYW4ndCBiZSBzcGxpdC4uLndlIGp1c3QgaGF2ZSB0byBwdXQgaXQgb24gaXRzIG93biBsaW5lLgorICAgICAgICAgICAgZm9sZGVkLmFwcGVuZCh0c3RyKQorICAgICAgICAgICAgZm9sZGVkLm5ld2xpbmUoKQorCisgICAgZGVmIHBwcmludChzZWxmLCBpbmRlbnQ9JycpOgorICAgICAgICBwcmludCgnXG4nLmpvaW4oc2VsZi5fcHAoaW5kZW50PScnKSkpCisKKyAgICBkZWYgcHBzdHIoc2VsZiwgaW5kZW50PScnKToKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihzZWxmLl9wcChpbmRlbnQ9JycpKQorCisgICAgZGVmIF9wcChzZWxmLCBpbmRlbnQ9JycpOgorICAgICAgICB5aWVsZCAne317fS97fSgnLmZvcm1hdCgKKyAgICAgICAgICAgIGluZGVudCwKKyAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgc2VsZi50b2tlbl90eXBlKQorICAgICAgICBmb3IgdG9rZW4gaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHRva2VuLCAnX3BwJyk6CisgICAgICAgICAgICAgICAgeWllbGQgKGluZGVudCArICcgICAgISEgaW52YWxpZCBlbGVtZW50IGluIHRva2VuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGlzdDogeyFyfScuZm9ybWF0KHRva2VuKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gdG9rZW4uX3BwKGluZGVudCsnICAgICcpOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCBsaW5lCisgICAgICAgIGlmIHNlbGYuZGVmZWN0czoKKyAgICAgICAgICAgIGV4dHJhID0gJyBEZWZlY3RzOiB7fScuZm9ybWF0KHNlbGYuZGVmZWN0cykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4dHJhID0gJycKKyAgICAgICAgeWllbGQgJ3t9KXt9Jy5mb3JtYXQoaW5kZW50LCBleHRyYSkKKworCitjbGFzcyBXaGl0ZVNwYWNlVG9rZW5MaXN0KFRva2VuTGlzdCk6CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIHJldHVybiAnICcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb21tZW50cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFt4LmNvbnRlbnQgZm9yIHggaW4gc2VsZiBpZiB4LnRva2VuX3R5cGU9PSdjb21tZW50J10KKworCitjbGFzcyBVbnN0cnVjdHVyZWRUb2tlbkxpc3QoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAndW5zdHJ1Y3R1cmVkJworCisgICAgZGVmIF9mb2xkKHNlbGYsIGZvbGRlZCk6CisgICAgICAgIGlmIGFueSh4LnRva2VuX3R5cGU9PSdlbmNvZGVkLXdvcmQnIGZvciB4IGluIHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZvbGRfZW5jb2RlZChmb2xkZWQpCisgICAgICAgICMgSGVyZSB3ZSBjYW4gaGF2ZSBlaXRoZXIgYSBwdXJlIEFTQ0lJIHN0cmluZyB0aGF0IG1heSBvciBtYXkgbm90CisgICAgICAgICMgaGF2ZSBzdXJyb2dhdGVlc2NhcGUgZW5jb2RlZCBieXRlcywgb3IgYSB1bmljb2RlIHN0cmluZy4KKyAgICAgICAgbGFzdF9ldyA9IE5vbmUKKyAgICAgICAgZm9yIHBhcnQgaW4gc2VsZi5wYXJ0czoKKyAgICAgICAgICAgIHRzdHIgPSBzdHIocGFydCkKKyAgICAgICAgICAgIGlzX2V3ID0gRmFsc2UKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzdHIocGFydCkuZW5jb2RlKCd1cy1hc2NpaScpCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgICAgIGlmIGFueShpc2luc3RhbmNlKHgsIGVycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0KQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBwYXJ0LmFsbF9kZWZlY3RzKToKKyAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9ICd1bmtub3duLThiaXQnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9ICd1dGYtOCcKKyAgICAgICAgICAgICAgICBpZiBsYXN0X2V3IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAjIFdlJ3ZlIGFscmVhZHkgZG9uZSBhbiBFVywgY29tYmluZSB0aGlzIG9uZSB3aXRoIGl0CisgICAgICAgICAgICAgICAgICAgICMgaWYgdGhlcmUncyByb29tLgorICAgICAgICAgICAgICAgICAgICBjaHVuayA9IGdldF91bnN0cnVjdHVyZWQoCisgICAgICAgICAgICAgICAgICAgICAgICAnJy5qb2luKGZvbGRlZC5jdXJyZW50W2xhc3RfZXc6XStbdHN0cl0pKS5hc19lbmNvZGVkX3dvcmQoY2hhcnNldCkKKyAgICAgICAgICAgICAgICAgICAgb2xkbGFzdGxlbiA9IHN1bShsZW4oeCkgZm9yIHggaW4gZm9sZGVkLmN1cnJlbnRbOmxhc3RfZXddKQorICAgICAgICAgICAgICAgICAgICBzY2h1bmsgPSBzdHIoY2h1bmspCisgICAgICAgICAgICAgICAgICAgIGxjaHVuayA9IGxlbihzY2h1bmspCisgICAgICAgICAgICAgICAgICAgIGlmIG9sZGxhc3RsZW4gKyBsY2h1bmsgPD0gZm9sZGVkLm1heGxlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBmb2xkZWQuY3VycmVudFtsYXN0X2V3Ol0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbGRlZC5hcHBlbmQoc2NodW5rKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9sZGVkLmxhc3RsZW4gPSBvbGRsYXN0bGVuICsgbGNodW5rCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHRzdHIgPSBwYXJ0LmFzX2VuY29kZWRfd29yZChjaGFyc2V0KQorICAgICAgICAgICAgICAgIGlzX2V3ID0gVHJ1ZQorICAgICAgICAgICAgaWYgZm9sZGVkLmFwcGVuZF9pZl9maXRzKHBhcnQsIHRzdHIpOgorICAgICAgICAgICAgICAgIGlmIGlzX2V3OgorICAgICAgICAgICAgICAgICAgICBsYXN0X2V3ID0gbGVuKGZvbGRlZC5jdXJyZW50KSAtIDEKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgaXNfZXcgb3IgbGFzdF9ldzoKKyAgICAgICAgICAgICAgICAjIEl0J3MgdG9vIGJpZyB0byBmaXQgb24gdGhlIGxpbmUsIGJ1dCBzaW5jZSB3ZSd2ZQorICAgICAgICAgICAgICAgICMgZ290IGVuY29kZWQgd29yZHMgd2UgY2FuIHVzZSBlbmNvZGVkIHdvcmQgZm9sZGluZy4KKyAgICAgICAgICAgICAgICBwYXJ0Ll9mb2xkX2FzX2V3KGZvbGRlZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBQZWVsIG9mZiB0aGUgbGVhZGluZyB3aGl0ZXNwYWNlIGlmIGFueSBhbmQgbWFrZSBpdCBzdGlja3ksIHRvCisgICAgICAgICAgICAjIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbi4KKyAgICAgICAgICAgIHdzID0gcGFydC5wb3BfbGVhZGluZ19md3MoKQorICAgICAgICAgICAgaWYgd3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZm9sZGVkLnN0aWNreXNwYWNlID0gc3RyKHdzKQorICAgICAgICAgICAgICAgIGlmIGZvbGRlZC5hcHBlbmRfaWZfZml0cyhwYXJ0KToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIHBhcnQuaGFzX2Z3czoKKyAgICAgICAgICAgICAgICBwYXJ0LmZvbGQoZm9sZGVkKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIEl0IGNhbid0IGJlIHNwbGl0Li4ud2UganVzdCBoYXZlIHRvIHB1dCBpdCBvbiBpdHMgb3duIGxpbmUuCisgICAgICAgICAgICBmb2xkZWQuYXBwZW5kKHRzdHIpCisgICAgICAgICAgICBmb2xkZWQubmV3bGluZSgpCisgICAgICAgICAgICBsYXN0X2V3ID0gTm9uZQorCisgICAgZGVmIGN0ZV9lbmNvZGUoc2VsZiwgY2hhcnNldCwgcG9saWN5KToKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgbGFzdF9ldyA9IE5vbmUKKyAgICAgICAgZm9yIHBhcnQgaW4gc2VsZjoKKyAgICAgICAgICAgIHNwYXJ0ID0gc3RyKHBhcnQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3BhcnQuZW5jb2RlKCd1cy1hc2NpaScpCisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChzcGFydCkKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgaWYgbGFzdF9ldyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHBhcnQuY3RlX2VuY29kZShjaGFyc2V0LCBwb2xpY3kpKQorICAgICAgICAgICAgICAgICAgICBsYXN0X2V3ID0gbGVuKHJlcykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0bCA9IGdldF91bnN0cnVjdHVyZWQoJycuam9pbihyZXNbbGFzdF9ldzpdICsgW3NwYXJ0XSkpCisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQodGwuYXNfZW5jb2RlZF93b3JkKCkpCisgICAgICAgIHJldHVybiAnJy5qb2luKHJlcykKKworCitjbGFzcyBQaHJhc2UoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAncGhyYXNlJworCisgICAgZGVmIF9mb2xkKHNlbGYsIGZvbGRlZCk6CisgICAgICAgICMgQXMgd2l0aCBVbnN0cnVjdHVyZWQsIHdlIGNhbiBoYXZlIHB1cmUgQVNDSUkgd2l0aCBvciB3aXRob3V0CisgICAgICAgICMgc3Vycm9nYXRlZXNjYXBlIGVuY29kZWQgYnl0ZXMsIG9yIHdlIGNvdWxkIGhhdmUgdW5pY29kZS4gIEJ1dCB0aGlzCisgICAgICAgICMgY2FzZSBpcyBtb3JlIGNvbXBsaWNhdGVkLCBzaW5jZSB3ZSBoYXZlIHRvIGRlYWwgd2l0aCB0aGUgdmFyaW91cworICAgICAgICAjIHN1Yi10b2tlbiB0eXBlcyBhbmQgaG93IHRoZXkgY2FuIGJlIGNvbXBvc2VkIGluIHRoZSBmYWNlIG9mCisgICAgICAgICMgdW5pY29kZS10aGF0LW5lZWRzLUNURS1lbmNvZGluZywgYW5kIHRoZSBmYWN0IHRoYXQgaWYgYSB0b2tlbiBhCisgICAgICAgICMgY29tbWVudCB0aGF0IGJlY29tZXMgYSBiYXJyaWVyIGFjcm9zcyB3aGljaCB3ZSBjYW4ndCBjb21wb3NlIGVuY29kZWQKKyAgICAgICAgIyB3b3Jkcy4KKyAgICAgICAgbGFzdF9ldyA9IE5vbmUKKyAgICAgICAgZm9yIHBhcnQgaW4gc2VsZi5wYXJ0czoKKyAgICAgICAgICAgIHRzdHIgPSBzdHIocGFydCkKKyAgICAgICAgICAgIHRsZW4gPSBsZW4odHN0cikKKyAgICAgICAgICAgIGhhc19ldyA9IEZhbHNlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3RyKHBhcnQpLmVuY29kZSgndXMtYXNjaWknKQorICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICBpZiBhbnkoaXNpbnN0YW5jZSh4LCBlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHBhcnQuYWxsX2RlZmVjdHMpOgorICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ3Vua25vd24tOGJpdCcKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ3V0Zi04JworICAgICAgICAgICAgICAgIGlmIGxhc3RfZXcgaXMgbm90IE5vbmUgYW5kIG5vdCBwYXJ0Lmhhc19sZWFkaW5nX2NvbW1lbnQoKToKKyAgICAgICAgICAgICAgICAgICAgIyBXZSd2ZSBhbHJlYWR5IGRvbmUgYW4gRVcsIGxldCdzIHNlZSBpZiB3ZSBjYW4gY29tYmluZQorICAgICAgICAgICAgICAgICAgICAjIHRoaXMgb25lIHdpdGggaXQuICBUaGUgbGFzdF9ldyBsb2dpYyBlbnN1cmVzIHRoYXQgYWxsIHdlCisgICAgICAgICAgICAgICAgICAgICMgaGF2ZSBhdCB0aGlzIHBvaW50IGlzIGF0b21zLCBubyBjb21tZW50cyBvciBxdW90ZWQKKyAgICAgICAgICAgICAgICAgICAgIyBzdHJpbmdzLiAgU28gd2UgY2FuIHRyZWF0IHRoZSB0ZXh0IGJldHdlZW4gdGhlIGxhc3QKKyAgICAgICAgICAgICAgICAgICAgIyBlbmNvZGVkIHdvcmQgYW5kIHRoZSBjb250ZW50IG9mIHRoaXMgdG9rZW4gYXMKKyAgICAgICAgICAgICAgICAgICAgIyB1bnN0cnVjdHVyZWQgdGV4dCwgYW5kIHRoaW5ncyB3aWxsIHdvcmsgY29ycmVjdGx5LiAgQnV0CisgICAgICAgICAgICAgICAgICAgICMgd2UgaGF2ZSB0byBzdHJpcCBvZmYgYW55IHRyYWlsaW5nIGNvbW1lbnQgb24gdGhpcyB0b2tlbgorICAgICAgICAgICAgICAgICAgICAjIGZpcnN0LCBhbmQgaWYgaXQgaXMgYSBxdW90ZWQgc3RyaW5nIHdlIGhhdmUgdG8gcHVsbCBvdXQKKyAgICAgICAgICAgICAgICAgICAgIyB0aGUgY29udGVudCAod2UncmUgZW5jb2RpbmcgaXQsIHNvIGl0IG5vIGxvbmdlciBuZWVkcyB0bworICAgICAgICAgICAgICAgICAgICAjIGJlIHF1b3RlZCkuCisgICAgICAgICAgICAgICAgICAgIGlmIHBhcnRbLTFdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnIGFuZCBwYXJ0LmNvbW1lbnRzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyID0gcGFydC5wb3AoLTEpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5kZXIgPSAnJworICAgICAgICAgICAgICAgICAgICBmb3IgaSwgdG9rZW4gaW4gZW51bWVyYXRlKHBhcnQpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSAnYmFyZS1xdW90ZWQtc3RyaW5nJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0W2ldID0gVW5zdHJ1Y3R1cmVkVG9rZW5MaXN0KHRva2VuWzpdKQorICAgICAgICAgICAgICAgICAgICBjaHVuayA9IGdldF91bnN0cnVjdHVyZWQoCisgICAgICAgICAgICAgICAgICAgICAgICAnJy5qb2luKGZvbGRlZC5jdXJyZW50W2xhc3RfZXc6XStbdHN0cl0pKS5hc19lbmNvZGVkX3dvcmQoY2hhcnNldCkKKyAgICAgICAgICAgICAgICAgICAgc2NodW5rID0gc3RyKGNodW5rKQorICAgICAgICAgICAgICAgICAgICBsY2h1bmsgPSBsZW4oc2NodW5rKQorICAgICAgICAgICAgICAgICAgICBpZiBsYXN0X2V3ICsgbGNodW5rIDw9IGZvbGRlZC5tYXhsZW46CisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgZm9sZGVkLmN1cnJlbnRbbGFzdF9ldzpdCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZWQuYXBwZW5kKHNjaHVuaykKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbGRlZC5sYXN0bGVuID0gc3VtKGxlbih4KSBmb3IgeCBpbiBmb2xkZWQuY3VycmVudCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgdHN0ciA9IHBhcnQuYXNfZW5jb2RlZF93b3JkKGNoYXJzZXQpCisgICAgICAgICAgICAgICAgdGxlbiA9IGxlbih0c3RyKQorICAgICAgICAgICAgICAgIGhhc19ldyA9IFRydWUKKyAgICAgICAgICAgIGlmIGZvbGRlZC5hcHBlbmRfaWZfZml0cyhwYXJ0LCB0c3RyKToKKyAgICAgICAgICAgICAgICBpZiBoYXNfZXcgYW5kIG5vdCBwYXJ0LmNvbW1lbnRzOgorICAgICAgICAgICAgICAgICAgICBsYXN0X2V3ID0gbGVuKGZvbGRlZC5jdXJyZW50KSAtIDEKKyAgICAgICAgICAgICAgICBlbGlmIHBhcnQuY29tbWVudHMgb3IgcGFydC50b2tlbl90eXBlID09ICdxdW90ZWQtc3RyaW5nJzoKKyAgICAgICAgICAgICAgICAgICAgIyBJZiBhIGNvbW1lbnQgaXMgaW52b2x2ZWQgd2UgY2FuJ3QgY29tYmluZSBFV3MuICBBbmQgaWYgYQorICAgICAgICAgICAgICAgICAgICAjIHF1b3RlZCBzdHJpbmcgaXMgaW52b2x2ZWQsIGl0J3Mgbm90IHdvcnRoIHRoZSBlZmZvcnQgdG8KKyAgICAgICAgICAgICAgICAgICAgIyB0cnkgdG8gY29tYmluZSB0aGVtLgorICAgICAgICAgICAgICAgICAgICBsYXN0X2V3ID0gTm9uZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBwYXJ0Ll9mb2xkKGZvbGRlZCkKKworICAgIGRlZiBjdGVfZW5jb2RlKHNlbGYsIGNoYXJzZXQsIHBvbGljeSk6CisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIGxhc3RfZXcgPSBOb25lCisgICAgICAgIGlzX2V3ID0gRmFsc2UKKyAgICAgICAgZm9yIHBhcnQgaW4gc2VsZjoKKyAgICAgICAgICAgIHNwYXJ0ID0gc3RyKHBhcnQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3BhcnQuZW5jb2RlKCd1cy1hc2NpaScpCisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChzcGFydCkKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgaXNfZXcgPSBUcnVlCisgICAgICAgICAgICAgICAgaWYgbGFzdF9ldyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgcGFydC5jb21tZW50czoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfZXcgPSBsZW4ocmVzKQorICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHBhcnQuY3RlX2VuY29kZShjaGFyc2V0LCBwb2xpY3kpKQorICAgICAgICAgICAgICAgIGVsaWYgbm90IHBhcnQuaGFzX2xlYWRpbmdfY29tbWVudCgpOgorICAgICAgICAgICAgICAgICAgICBpZiBwYXJ0Wy0xXS50b2tlbl90eXBlID09ICdjZndzJyBhbmQgcGFydC5jb21tZW50czoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlciA9IHBhcnQucG9wKC0xKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyID0gJycKKyAgICAgICAgICAgICAgICAgICAgZm9yIGksIHRva2VuIGluIGVudW1lcmF0ZShwYXJ0KToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ2JhcmUtcXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydFtpXSA9IFVuc3RydWN0dXJlZFRva2VuTGlzdCh0b2tlbls6XSkKKyAgICAgICAgICAgICAgICAgICAgdGwgPSBnZXRfdW5zdHJ1Y3R1cmVkKCcnLmpvaW4ocmVzW2xhc3RfZXc6XSArIFtzcGFydF0pKQorICAgICAgICAgICAgICAgICAgICByZXNbbGFzdF9ldzpdID0gW3RsLmFzX2VuY29kZWRfd29yZChjaGFyc2V0KV0KKyAgICAgICAgICAgIGlmIHBhcnQuY29tbWVudHMgb3IgKG5vdCBpc19ldyBhbmQgcGFydC50b2tlbl90eXBlID09ICdxdW90ZWQtc3RyaW5nJyk6CisgICAgICAgICAgICAgICAgbGFzdF9ldyA9IE5vbmUKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzKQorCitjbGFzcyBXb3JkKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ3dvcmQnCisKKworY2xhc3MgQ0ZXU0xpc3QoV2hpdGVTcGFjZVRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2Nmd3MnCisKKyAgICBkZWYgaGFzX2xlYWRpbmdfY29tbWVudChzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5jb21tZW50cykKKworCitjbGFzcyBBdG9tKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2F0b20nCisKKworY2xhc3MgVG9rZW4oVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAndG9rZW4nCisKKworY2xhc3MgRW5jb2RlZFdvcmQoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnZW5jb2RlZC13b3JkJworICAgIGN0ZSA9IE5vbmUKKyAgICBjaGFyc2V0ID0gTm9uZQorICAgIGxhbmcgPSBOb25lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZW5jb2RlZChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5jdGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jdGUKKyAgICAgICAgX2V3LmVuY29kZShzdHIoc2VsZiksIHNlbGYuY2hhcnNldCkKKworCisKK2NsYXNzIFF1b3RlZFN0cmluZyhUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdxdW90ZWQtc3RyaW5nJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbnRlbnQoc2VsZik6CisgICAgICAgIGZvciB4IGluIHNlbGY6CisgICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgPT0gJ2JhcmUtcXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHgudmFsdWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBxdW90ZWRfdmFsdWUoc2VsZik6CisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIGZvciB4IGluIHNlbGY6CisgICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgPT0gJ2JhcmUtcXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChzdHIoeCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoeC52YWx1ZSkKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHN0cmlwcGVkX3ZhbHVlKHNlbGYpOgorICAgICAgICBmb3IgdG9rZW4gaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ2JhcmUtcXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuLnZhbHVlCisKKworY2xhc3MgQmFyZVF1b3RlZFN0cmluZyhRdW90ZWRTdHJpbmcpOgorCisgICAgdG9rZW5fdHlwZSA9ICdiYXJlLXF1b3RlZC1zdHJpbmcnCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHF1b3RlX3N0cmluZygnJy5qb2luKHN0cih4KSBmb3IgeCBpbiBzZWxmKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2YWx1ZShzZWxmKToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oc3RyKHgpIGZvciB4IGluIHNlbGYpCisKKworY2xhc3MgQ29tbWVudChXaGl0ZVNwYWNlVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnY29tbWVudCcKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJycuam9pbihzdW0oWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiKCJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLnF1b3RlKHgpIGZvciB4IGluIHNlbGZdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiKSJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIFtdKSkKKworICAgIGRlZiBxdW90ZShzZWxmLCB2YWx1ZSk6CisgICAgICAgIGlmIHZhbHVlLnRva2VuX3R5cGUgPT0gJ2NvbW1lbnQnOgorICAgICAgICAgICAgcmV0dXJuIHN0cih2YWx1ZSkKKyAgICAgICAgcmV0dXJuIHN0cih2YWx1ZSkucmVwbGFjZSgnXFwnLCAnXFxcXCcpLnJlcGxhY2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygnLCAnXCgnKS5yZXBsYWNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcpJywgJ1wpJykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb250ZW50KHNlbGYpOgorICAgICAgICByZXR1cm4gJycuam9pbihzdHIoeCkgZm9yIHggaW4gc2VsZikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb21tZW50cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtzZWxmLmNvbnRlbnRdCisKK2NsYXNzIEFkZHJlc3NMaXN0KFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2FkZHJlc3MtbGlzdCcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhZGRyZXNzZXMoc2VsZik6CisgICAgICAgIHJldHVybiBbeCBmb3IgeCBpbiBzZWxmIGlmIHgudG9rZW5fdHlwZT09J2FkZHJlc3MnXQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1haWxib3hlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN1bSgoeC5tYWlsYm94ZXMKKyAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gc2VsZiBpZiB4LnRva2VuX3R5cGU9PSdhZGRyZXNzJyksIFtdKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFsbF9tYWlsYm94ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBzdW0oKHguYWxsX21haWxib3hlcworICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBzZWxmIGlmIHgudG9rZW5fdHlwZT09J2FkZHJlc3MnKSwgW10pCisKKworY2xhc3MgQWRkcmVzcyhUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdhZGRyZXNzJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgaWYgc2VsZlswXS50b2tlbl90eXBlID09ICdncm91cCc6CisgICAgICAgICAgICByZXR1cm4gc2VsZlswXS5kaXNwbGF5X25hbWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYWlsYm94ZXMoc2VsZik6CisgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnbWFpbGJveCc6CisgICAgICAgICAgICByZXR1cm4gW3NlbGZbMF1dCisgICAgICAgIGVsaWYgc2VsZlswXS50b2tlbl90eXBlID09ICdpbnZhbGlkLW1haWxib3gnOgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIHJldHVybiBzZWxmWzBdLm1haWxib3hlcworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFsbF9tYWlsYm94ZXMoc2VsZik6CisgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnbWFpbGJveCc6CisgICAgICAgICAgICByZXR1cm4gW3NlbGZbMF1dCisgICAgICAgIGVsaWYgc2VsZlswXS50b2tlbl90eXBlID09ICdpbnZhbGlkLW1haWxib3gnOgorICAgICAgICAgICAgcmV0dXJuIFtzZWxmWzBdXQorICAgICAgICByZXR1cm4gc2VsZlswXS5hbGxfbWFpbGJveGVzCisKK2NsYXNzIE1haWxib3hMaXN0KFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ21haWxib3gtbGlzdCcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYWlsYm94ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBbeCBmb3IgeCBpbiBzZWxmIGlmIHgudG9rZW5fdHlwZT09J21haWxib3gnXQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFsbF9tYWlsYm94ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBbeCBmb3IgeCBpbiBzZWxmCisgICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgaW4gKCdtYWlsYm94JywgJ2ludmFsaWQtbWFpbGJveCcpXQorCisKK2NsYXNzIEdyb3VwTGlzdChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdncm91cC1saXN0JworCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1haWxib3hlcyhzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYgb3Igc2VsZlswXS50b2tlbl90eXBlICE9ICdtYWlsYm94LWxpc3QnOgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIHJldHVybiBzZWxmWzBdLm1haWxib3hlcworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFsbF9tYWlsYm94ZXMoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmIG9yIHNlbGZbMF0udG9rZW5fdHlwZSAhPSAnbWFpbGJveC1saXN0JzoKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICByZXR1cm4gc2VsZlswXS5hbGxfbWFpbGJveGVzCisKKworY2xhc3MgR3JvdXAoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAiZ3JvdXAiCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWFpbGJveGVzKHNlbGYpOgorICAgICAgICBpZiBzZWxmWzJdLnRva2VuX3R5cGUgIT0gJ2dyb3VwLWxpc3QnOgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIHJldHVybiBzZWxmWzJdLm1haWxib3hlcworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFsbF9tYWlsYm94ZXMoc2VsZik6CisgICAgICAgIGlmIHNlbGZbMl0udG9rZW5fdHlwZSAhPSAnZ3JvdXAtbGlzdCc6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgcmV0dXJuIHNlbGZbMl0uYWxsX21haWxib3hlcworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0uZGlzcGxheV9uYW1lCisKKworY2xhc3MgTmFtZUFkZHIoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnbmFtZS1hZGRyJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgaWYgbGVuKHNlbGYpID09IDE6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gc2VsZlswXS5kaXNwbGF5X25hbWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsb2NhbF9wYXJ0KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZlstMV0ubG9jYWxfcGFydAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRvbWFpbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbLTFdLmRvbWFpbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHJvdXRlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZlstMV0ucm91dGUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhZGRyX3NwZWMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWy0xXS5hZGRyX3NwZWMKKworCitjbGFzcyBBbmdsZUFkZHIoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnYW5nbGUtYWRkcicKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsb2NhbF9wYXJ0KHNlbGYpOgorICAgICAgICBmb3IgeCBpbiBzZWxmOgorICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlID09ICdhZGRyLXNwZWMnOgorICAgICAgICAgICAgICAgIHJldHVybiB4LmxvY2FsX3BhcnQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW4oc2VsZik6CisgICAgICAgIGZvciB4IGluIHNlbGY6CisgICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgPT0gJ2FkZHItc3BlYyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHguZG9tYWluCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcm91dGUoc2VsZik6CisgICAgICAgIGZvciB4IGluIHNlbGY6CisgICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgPT0gJ29icy1yb3V0ZSc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHguZG9tYWlucworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFkZHJfc3BlYyhzZWxmKToKKyAgICAgICAgZm9yIHggaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHgudG9rZW5fdHlwZSA9PSAnYWRkci1zcGVjJzoKKyAgICAgICAgICAgICAgICByZXR1cm4geC5hZGRyX3NwZWMKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAnPD4nCisKKworY2xhc3MgT2JzUm91dGUoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnb2JzLXJvdXRlJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRvbWFpbnMoc2VsZik6CisgICAgICAgIHJldHVybiBbeC5kb21haW4gZm9yIHggaW4gc2VsZiBpZiB4LnRva2VuX3R5cGUgPT0gJ2RvbWFpbiddCisKKworY2xhc3MgTWFpbGJveChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdtYWlsYm94JworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgaWYgc2VsZlswXS50b2tlbl90eXBlID09ICduYW1lLWFkZHInOgorICAgICAgICAgICAgcmV0dXJuIHNlbGZbMF0uZGlzcGxheV9uYW1lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbG9jYWxfcGFydChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0ubG9jYWxfcGFydAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRvbWFpbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0uZG9tYWluCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcm91dGUoc2VsZik6CisgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnbmFtZS1hZGRyJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmWzBdLnJvdXRlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkcl9zcGVjKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZlswXS5hZGRyX3NwZWMKKworCitjbGFzcyBJbnZhbGlkTWFpbGJveChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdpbnZhbGlkLW1haWxib3gnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgbG9jYWxfcGFydCA9IGRvbWFpbiA9IHJvdXRlID0gYWRkcl9zcGVjID0gZGlzcGxheV9uYW1lCisKKworY2xhc3MgRG9tYWluKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2RvbWFpbicKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW4oc2VsZik6CisgICAgICAgIHJldHVybiAnJy5qb2luKHN1cGVyKCkudmFsdWUuc3BsaXQoKSkKKworCitjbGFzcyBEb3RBdG9tKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2RvdC1hdG9tJworCisKK2NsYXNzIERvdEF0b21UZXh0KFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2RvdC1hdG9tLXRleHQnCisKKworY2xhc3MgQWRkclNwZWMoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnYWRkci1zcGVjJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGxvY2FsX3BhcnQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWzBdLmxvY2FsX3BhcnQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW4oc2VsZik6CisgICAgICAgIGlmIGxlbihzZWxmKSA8IDM6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gc2VsZlstMV0uZG9tYWluCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIGlmIGxlbihzZWxmKSA8IDM6CisgICAgICAgICAgICByZXR1cm4gc2VsZlswXS52YWx1ZQorICAgICAgICByZXR1cm4gc2VsZlswXS52YWx1ZS5yc3RyaXAoKStzZWxmWzFdLnZhbHVlK3NlbGZbMl0udmFsdWUubHN0cmlwKCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhZGRyX3NwZWMoc2VsZik6CisgICAgICAgIG5hbWVzZXQgPSBzZXQoc2VsZi5sb2NhbF9wYXJ0KQorICAgICAgICBpZiBsZW4obmFtZXNldCkgPiBsZW4obmFtZXNldC1ET1RfQVRPTV9FTkRTKToKKyAgICAgICAgICAgIGxwID0gcXVvdGVfc3RyaW5nKHNlbGYubG9jYWxfcGFydCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxwID0gc2VsZi5sb2NhbF9wYXJ0CisgICAgICAgIGlmIHNlbGYuZG9tYWluIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGxwICsgJ0AnICsgc2VsZi5kb21haW4KKyAgICAgICAgcmV0dXJuIGxwCisKKworY2xhc3MgT2JzTG9jYWxQYXJ0KFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ29icy1sb2NhbC1wYXJ0JworCisKK2NsYXNzIERpc3BsYXlOYW1lKFBocmFzZSk6CisKKyAgICB0b2tlbl90eXBlID0gJ2Rpc3BsYXktbmFtZScKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIHJlcyA9IFRva2VuTGlzdChzZWxmKQorICAgICAgICBpZiByZXNbMF0udG9rZW5fdHlwZSA9PSAnY2Z3cyc6CisgICAgICAgICAgICByZXMucG9wKDApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiByZXNbMF1bMF0udG9rZW5fdHlwZSA9PSAnY2Z3cyc6CisgICAgICAgICAgICAgICAgcmVzWzBdID0gVG9rZW5MaXN0KHJlc1swXVsxOl0pCisgICAgICAgIGlmIHJlc1stMV0udG9rZW5fdHlwZSA9PSAnY2Z3cyc6CisgICAgICAgICAgICByZXMucG9wKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHJlc1stMV1bLTFdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnOgorICAgICAgICAgICAgICAgIHJlc1stMV0gPSBUb2tlbkxpc3QocmVzWy0xXVs6LTFdKQorICAgICAgICByZXR1cm4gcmVzLnZhbHVlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIHF1b3RlID0gRmFsc2UKKyAgICAgICAgaWYgc2VsZi5kZWZlY3RzOgorICAgICAgICAgICAgcXVvdGUgPSBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmb3IgeCBpbiBzZWxmOgorICAgICAgICAgICAgICAgIGlmIHgudG9rZW5fdHlwZSA9PSAncXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgICAgIHF1b3RlID0gVHJ1ZQorICAgICAgICBpZiBxdW90ZToKKyAgICAgICAgICAgIHByZSA9IHBvc3QgPSAnJworICAgICAgICAgICAgaWYgc2VsZlswXS50b2tlbl90eXBlPT0nY2Z3cycgb3Igc2VsZlswXVswXS50b2tlbl90eXBlPT0nY2Z3cyc6CisgICAgICAgICAgICAgICAgcHJlID0gJyAnCisgICAgICAgICAgICBpZiBzZWxmWy0xXS50b2tlbl90eXBlPT0nY2Z3cycgb3Igc2VsZlstMV1bLTFdLnRva2VuX3R5cGU9PSdjZndzJzoKKyAgICAgICAgICAgICAgICBwb3N0ID0gJyAnCisgICAgICAgICAgICByZXR1cm4gcHJlK3F1b3RlX3N0cmluZyhzZWxmLmRpc3BsYXlfbmFtZSkrcG9zdAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkudmFsdWUKKworCitjbGFzcyBMb2NhbFBhcnQoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnbG9jYWwtcGFydCcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2YWx1ZShzZWxmKToKKyAgICAgICAgaWYgc2VsZlswXS50b2tlbl90eXBlID09ICJxdW90ZWQtc3RyaW5nIjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmWzBdLnF1b3RlZF92YWx1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGZbMF0udmFsdWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsb2NhbF9wYXJ0KHNlbGYpOgorICAgICAgICAjIFN0cmlwIHdoaXRlc3BhY2UgZnJvbSBmcm9udCwgYmFjaywgYW5kIGFyb3VuZCBkb3RzLgorICAgICAgICByZXMgPSBbRE9UXQorICAgICAgICBsYXN0ID0gRE9UCisgICAgICAgIGxhc3RfaXNfdGwgPSBGYWxzZQorICAgICAgICBmb3IgdG9rIGluIHNlbGZbMF0gKyBbRE9UXToKKyAgICAgICAgICAgIGlmIHRvay50b2tlbl90eXBlID09ICdjZndzJzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgKGxhc3RfaXNfdGwgYW5kIHRvay50b2tlbl90eXBlID09ICdkb3QnIGFuZAorICAgICAgICAgICAgICAgICAgICBsYXN0Wy0xXS50b2tlbl90eXBlID09ICdjZndzJyk6CisgICAgICAgICAgICAgICAgcmVzWy0xXSA9IFRva2VuTGlzdChsYXN0WzotMV0pCisgICAgICAgICAgICBpc190bCA9IGlzaW5zdGFuY2UodG9rLCBUb2tlbkxpc3QpCisgICAgICAgICAgICBpZiAoaXNfdGwgYW5kIGxhc3QudG9rZW5fdHlwZSA9PSAnZG90JyBhbmQKKyAgICAgICAgICAgICAgICAgICAgdG9rWzBdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnKToKKyAgICAgICAgICAgICAgICByZXMuYXBwZW5kKFRva2VuTGlzdCh0b2tbMTpdKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCh0b2spCisgICAgICAgICAgICBsYXN0ID0gcmVzWy0xXQorICAgICAgICAgICAgbGFzdF9pc190bCA9IGlzX3RsCisgICAgICAgIHJlcyA9IFRva2VuTGlzdChyZXNbMTotMV0pCisgICAgICAgIHJldHVybiByZXMudmFsdWUKKworCitjbGFzcyBEb21haW5MaXRlcmFsKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2RvbWFpbi1saXRlcmFsJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRvbWFpbihzZWxmKToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oc3VwZXIoKS52YWx1ZS5zcGxpdCgpKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlwKHNlbGYpOgorICAgICAgICBmb3IgeCBpbiBzZWxmOgorICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlID09ICdwdGV4dCc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHgudmFsdWUKKworCitjbGFzcyBNSU1FVmVyc2lvbihUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdtaW1lLXZlcnNpb24nCisgICAgbWFqb3IgPSBOb25lCisgICAgbWlub3IgPSBOb25lCisKKworY2xhc3MgUGFyYW1ldGVyKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ3BhcmFtZXRlcicKKyAgICBzZWN0aW9uZWQgPSBGYWxzZQorICAgIGV4dGVuZGVkID0gRmFsc2UKKyAgICBjaGFyc2V0ID0gJ3VzLWFzY2lpJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNlY3Rpb25fbnVtYmVyKHNlbGYpOgorICAgICAgICAjIEJlY2F1c2UgdGhlIGZpcnN0IHRva2VuLCB0aGUgYXR0cmlidXRlIChuYW1lKSBlYXRzIENGV1MsIHRoZSBzZWNvbmQKKyAgICAgICAgIyB0b2tlbiBpcyBhbHdheXMgdGhlIHNlY3Rpb24gaWYgdGhlcmUgaXMgb25lLgorICAgICAgICByZXR1cm4gc2VsZlsxXS5udW1iZXIgaWYgc2VsZi5zZWN0aW9uZWQgZWxzZSAwCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFyYW1fdmFsdWUoc2VsZik6CisgICAgICAgICMgVGhpcyBpcyBwYXJ0IG9mIHRoZSAiaGFuZGxlIHF1b3RlZCBleHRlbmRlZCBwYXJhbWV0ZXJzIiBoYWNrLgorICAgICAgICBmb3IgdG9rZW4gaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ3ZhbHVlJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4uc3RyaXBwZWRfdmFsdWUKKyAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ3F1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgIGZvciB0b2tlbiBpbiB0b2tlbjoKKyAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSAnYmFyZS1xdW90ZWQtc3RyaW5nJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0b2tlbiBpbiB0b2tlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICd2YWx1ZSc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbi5zdHJpcHBlZF92YWx1ZQorICAgICAgICByZXR1cm4gJycKKworCitjbGFzcyBJbnZhbGlkUGFyYW1ldGVyKFBhcmFtZXRlcik6CisKKyAgICB0b2tlbl90eXBlID0gJ2ludmFsaWQtcGFyYW1ldGVyJworCisKK2NsYXNzIEF0dHJpYnV0ZShUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdhdHRyaWJ1dGUnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3RyaXBwZWRfdmFsdWUoc2VsZik6CisgICAgICAgIGZvciB0b2tlbiBpbiBzZWxmOgorICAgICAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZS5lbmRzd2l0aCgnYXR0cnRleHQnKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4udmFsdWUKKworY2xhc3MgU2VjdGlvbihUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdzZWN0aW9uJworICAgIG51bWJlciA9IE5vbmUKKworCitjbGFzcyBWYWx1ZShUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICd2YWx1ZScKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzdHJpcHBlZF92YWx1ZShzZWxmKToKKyAgICAgICAgdG9rZW4gPSBzZWxmWzBdCisgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ2Nmd3MnOgorICAgICAgICAgICAgdG9rZW4gPSBzZWxmWzFdCisgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUuZW5kc3dpdGgoCisgICAgICAgICAgICAgICAgKCdxdW90ZWQtc3RyaW5nJywgJ2F0dHJpYnV0ZScsICdleHRlbmRlZC1hdHRyaWJ1dGUnKSk6CisgICAgICAgICAgICByZXR1cm4gdG9rZW4uc3RyaXBwZWRfdmFsdWUKKyAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKKworCitjbGFzcyBNaW1lUGFyYW1ldGVycyhUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdtaW1lLXBhcmFtZXRlcnMnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFyYW1zKHNlbGYpOgorICAgICAgICAjIFRoZSBSRkMgc3BlY2lmaWNhbGx5IHN0YXRlcyB0aGF0IHRoZSBvcmRlcmluZyBvZiBwYXJhbWV0ZXJzIGlzIG5vdAorICAgICAgICAjIGd1YXJhbnRlZWQgYW5kIG1heSBiZSByZW9yZGVyZWQgYnkgdGhlIHRyYW5zcG9ydCBsYXllci4gIFNvIHdlIGhhdmUKKyAgICAgICAgIyB0byBhc3N1bWUgdGhlIFJGQyAyMjMxIHBpZWNlcyBjYW4gY29tZSBpbiBhbnkgb3JkZXIuICBIb3dldmVyLCB3ZQorICAgICAgICAjIG91dHB1dCB0aGVtIGluIHRoZSBvcmRlciB0aGF0IHdlIGZpcnN0IHNlZSBhIGdpdmVuIG5hbWUsIHdoaWNoIGdpdmVzCisgICAgICAgICMgdXMgYSBzdGFibGUgX19zdHJfXy4KKyAgICAgICAgcGFyYW1zID0gT3JkZXJlZERpY3QoKQorICAgICAgICBmb3IgdG9rZW4gaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIG5vdCB0b2tlbi50b2tlbl90eXBlLmVuZHN3aXRoKCdwYXJhbWV0ZXInKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgdG9rZW5bMF0udG9rZW5fdHlwZSAhPSAnYXR0cmlidXRlJzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbmFtZSA9IHRva2VuWzBdLnZhbHVlLnN0cmlwKCkKKyAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHBhcmFtczoKKyAgICAgICAgICAgICAgICBwYXJhbXNbbmFtZV0gPSBbXQorICAgICAgICAgICAgcGFyYW1zW25hbWVdLmFwcGVuZCgodG9rZW4uc2VjdGlvbl9udW1iZXIsIHRva2VuKSkKKyAgICAgICAgZm9yIG5hbWUsIHBhcnRzIGluIHBhcmFtcy5pdGVtcygpOgorICAgICAgICAgICAgcGFydHMgPSBzb3J0ZWQocGFydHMpCisgICAgICAgICAgICAjIFhYWDogdGhlcmUgbWlnaHQgYmUgbW9yZSByZWNvdmVyeSB3ZSBjb3VsZCBkbyBoZXJlIGlmLCBmb3IKKyAgICAgICAgICAgICMgZXhhbXBsZSwgdGhpcyBpcyByZWFsbHkgYSBjYXNlIG9mIGEgZHVwbGljYXRlIGF0dHJpYnV0ZSBuYW1lLgorICAgICAgICAgICAgdmFsdWVfcGFydHMgPSBbXQorICAgICAgICAgICAgY2hhcnNldCA9IHBhcnRzWzBdWzFdLmNoYXJzZXQKKyAgICAgICAgICAgIGZvciBpLCAoc2VjdGlvbl9udW1iZXIsIHBhcmFtKSBpbiBlbnVtZXJhdGUocGFydHMpOgorICAgICAgICAgICAgICAgIGlmIHNlY3Rpb25fbnVtYmVyICE9IGk6CisgICAgICAgICAgICAgICAgICAgIHBhcmFtLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgImluY29uc2lzdGVudCBtdWx0aXBhcnQgcGFyYW1ldGVyIG51bWJlcmluZyIpKQorICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyYW0ucGFyYW1fdmFsdWUKKyAgICAgICAgICAgICAgICBpZiBwYXJhbS5leHRlbmRlZDoKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB1cmxsaWIucGFyc2UudW5xdW90ZV90b19ieXRlcyh2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgc291cmNlIGhhZCBzdXJyb2dhdGUgZXNjYXBlZCBieXRlcy4gIFdoYXQgd2UgZG8gbm93CisgICAgICAgICAgICAgICAgICAgICAgICAjIGlzIGEgYml0IG9mIGFuIG9wZW4gcXVlc3Rpb24uICBJJ20gbm90IHN1cmUgdGhpcyBpcworICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgYmVzdCBjaG9pY2UsIGJ1dCBpdCBpcyB3aGF0IHRoZSBvbGQgYWxnb3JpdGhtIGRpZAorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB1cmxsaWIucGFyc2UudW5xdW90ZSh2YWx1ZSwgZW5jb2Rpbmc9J2xhdGluLTEnKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuZGVjb2RlKGNoYXJzZXQsICdzdXJyb2dhdGVlc2NhcGUnKQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IExvb2t1cEVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgWFhYOiB0aGVyZSBzaG91bGQgcmVhbGx5IGJlIGEgY3VzdG9tIGRlZmVjdCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHVua25vd24gY2hhcmFjdGVyIHNldCB0byBtYWtlIGl0IGVhc3kgdG8gZmluZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJlY2F1c2Ugb3RoZXJ3aXNlIHVua25vd24gY2hhcnNldCBpcyBhIHNpbGVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmFpbHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmRlY29kZSgndXMtYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHV0aWxzLl9oYXNfc3Vycm9nYXRlcyh2YWx1ZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3QoKSkKKyAgICAgICAgICAgICAgICB2YWx1ZV9wYXJ0cy5hcHBlbmQodmFsdWUpCisgICAgICAgICAgICB2YWx1ZSA9ICcnLmpvaW4odmFsdWVfcGFydHMpCisgICAgICAgICAgICB5aWVsZCBuYW1lLCB2YWx1ZQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHBhcmFtcyA9IFtdCisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxmLnBhcmFtczoKKyAgICAgICAgICAgIGlmIHZhbHVlOgorICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ3t9PXt9Jy5mb3JtYXQobmFtZSwgcXVvdGVfc3RyaW5nKHZhbHVlKSkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQobmFtZSkKKyAgICAgICAgcGFyYW1zID0gJzsgJy5qb2luKHBhcmFtcykKKyAgICAgICAgcmV0dXJuICcgJyArIHBhcmFtcyBpZiBwYXJhbXMgZWxzZSAnJworCisKK2NsYXNzIFBhcmFtZXRlcml6ZWRIZWFkZXJWYWx1ZShUb2tlbkxpc3QpOgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcmFtcyhzZWxmKToKKyAgICAgICAgZm9yIHRva2VuIGluIHJldmVyc2VkKHNlbGYpOgorICAgICAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSAnbWltZS1wYXJhbWV0ZXJzJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4ucGFyYW1zCisgICAgICAgIHJldHVybiB7fQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcnRzKHNlbGYpOgorICAgICAgICBpZiBzZWxmIGFuZCBzZWxmWy0xXS50b2tlbl90eXBlID09ICdtaW1lLXBhcmFtZXRlcnMnOgorICAgICAgICAgICAgIyBXZSBkb24ndCB3YW50IHRvIHN0YXJ0IGEgbmV3IGxpbmUgaWYgYWxsIG9mIHRoZSBwYXJhbXMgZG9uJ3QgZml0CisgICAgICAgICAgICAjIGFmdGVyIHRoZSB2YWx1ZSwgc28gdW53cmFwIHRoZSBwYXJhbWV0ZXIgbGlzdC4KKyAgICAgICAgICAgIHJldHVybiBUb2tlbkxpc3Qoc2VsZls6LTFdICsgc2VsZlstMV0pCisgICAgICAgIHJldHVybiBUb2tlbkxpc3Qoc2VsZikucGFydHMKKworCitjbGFzcyBDb250ZW50VHlwZShQYXJhbWV0ZXJpemVkSGVhZGVyVmFsdWUpOgorCisgICAgdG9rZW5fdHlwZSA9ICdjb250ZW50LXR5cGUnCisgICAgbWFpbnR5cGUgPSAndGV4dCcKKyAgICBzdWJ0eXBlID0gJ3BsYWluJworCisKK2NsYXNzIENvbnRlbnREaXNwb3NpdGlvbihQYXJhbWV0ZXJpemVkSGVhZGVyVmFsdWUpOgorCisgICAgdG9rZW5fdHlwZSA9ICdjb250ZW50LWRpc3Bvc2l0aW9uJworICAgIGNvbnRlbnRfZGlzcG9zaXRpb24gPSBOb25lCisKKworY2xhc3MgQ29udGVudFRyYW5zZmVyRW5jb2RpbmcoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnY29udGVudC10cmFuc2Zlci1lbmNvZGluZycKKyAgICBjdGUgPSAnN2JpdCcKKworCitjbGFzcyBIZWFkZXJMYWJlbChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdoZWFkZXItbGFiZWwnCisKKworY2xhc3MgSGVhZGVyKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2hlYWRlcicKKworICAgIGRlZiBfZm9sZChzZWxmLCBmb2xkZWQpOgorICAgICAgICBmb2xkZWQuYXBwZW5kKHN0cihzZWxmLnBvcCgwKSkpCisgICAgICAgIGZvbGRlZC5sYXN0bGVuID0gbGVuKGZvbGRlZC5jdXJyZW50WzBdKQorICAgICAgICAjIFRoZSBmaXJzdCBsaW5lIG9mIHRoZSBoZWFkZXIgaXMgZGlmZmVyZW50IGZyb20gYWxsIG90aGVyczogd2UgZG9uJ3QKKyAgICAgICAgIyB3YW50IHRvIHN0YXJ0IGEgbmV3IG9iamVjdCBvbiBhIG5ldyBsaW5lIGlmIGl0IGhhcyBhbnkgZm9sZCBwb2ludHMgaW4KKyAgICAgICAgIyBpdCB0aGF0IHdvdWxkIGFsbG93IHBhcnQgb2YgaXQgdG8gYmUgb24gdGhlIGZpcnN0IGhlYWRlciBsaW5lLgorICAgICAgICAjIEZ1cnRoZXIsIGlmIHRoZSBmaXJzdCBmb2xkIHBvaW50IHdvdWxkIGZpdCBvbiB0aGUgbmV3IGxpbmUsIHdlIHdhbnQKKyAgICAgICAgIyB0byBkbyB0aGF0LCBidXQgaWYgaXQgZG9lc24ndCB3ZSB3YW50IHRvIHB1dCBpdCBvbiB0aGUgZmlyc3QgbGluZS4KKyAgICAgICAgIyBGb2xkZWQgc3VwcG9ydHMgdGhpcyB2aWEgdGhlIHN0aWNreXNwYWNlIGF0dHJpYnV0ZS4gIElmIHRoaXMKKyAgICAgICAgIyBhdHRyaWJ1dGUgaXMgbm90IE5vbmUsIGl0IGRvZXMgdGhlIHNwZWNpYWwgaGFuZGxpbmcuCisgICAgICAgIGZvbGRlZC5zdGlja3lzcGFjZSA9IHN0cihzZWxmLnBvcCgwKSkgaWYgc2VsZlswXS50b2tlbl90eXBlID09ICdjZndzJyBlbHNlICcnCisgICAgICAgIHJlc3QgPSBzZWxmLnBvcCgwKQorICAgICAgICBpZiBzZWxmOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTWFsZm9ybWVkIEhlYWRlciB0b2tlbiBsaXN0IikKKyAgICAgICAgcmVzdC5fZm9sZChmb2xkZWQpCisKKworIworIyBUZXJtaW5hbCBjbGFzc2VzIGFuZCBpbnN0YW5jZXMKKyMKKworY2xhc3MgVGVybWluYWwoc3RyKToKKworICAgIGRlZiBfX25ld19fKGNscywgdmFsdWUsIHRva2VuX3R5cGUpOgorICAgICAgICBzZWxmID0gc3VwZXIoKS5fX25ld19fKGNscywgdmFsdWUpCisgICAgICAgIHNlbGYudG9rZW5fdHlwZSA9IHRva2VuX3R5cGUKKyAgICAgICAgc2VsZi5kZWZlY3RzID0gW10KKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJ7fSh7fSkiLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3VwZXIoKS5fX3JlcHJfXygpKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFsbF9kZWZlY3RzKHNlbGYpOgorICAgICAgICByZXR1cm4gbGlzdChzZWxmLmRlZmVjdHMpCisKKyAgICBkZWYgX3BwKHNlbGYsIGluZGVudD0nJyk6CisgICAgICAgIHJldHVybiBbInt9e30ve30oe30pe30iLmZvcm1hdCgKKyAgICAgICAgICAgIGluZGVudCwKKyAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgc2VsZi50b2tlbl90eXBlLAorICAgICAgICAgICAgc3VwZXIoKS5fX3JlcHJfXygpLAorICAgICAgICAgICAgJycgaWYgbm90IHNlbGYuZGVmZWN0cyBlbHNlICcge30nLmZvcm1hdChzZWxmLmRlZmVjdHMpLAorICAgICAgICAgICAgKV0KKworICAgIGRlZiBjdGVfZW5jb2RlKHNlbGYsIGNoYXJzZXQsIHBvbGljeSk6CisgICAgICAgIHZhbHVlID0gc3RyKHNlbGYpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHZhbHVlLmVuY29kZSgndXMtYXNjaWknKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gX2V3LmVuY29kZSh2YWx1ZSwgY2hhcnNldCkKKworICAgIGRlZiBwb3BfdHJhaWxpbmdfd3Moc2VsZik6CisgICAgICAgICMgVGhpcyB0ZXJtaW5hdGVzIHRoZSByZWN1cnNpb24uCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgcG9wX2xlYWRpbmdfZndzKHNlbGYpOgorICAgICAgICAjIFRoaXMgdGVybWluYXRlcyB0aGUgcmVjdXJzaW9uLgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbW1lbnRzKHNlbGYpOgorICAgICAgICByZXR1cm4gW10KKworICAgIGRlZiBoYXNfbGVhZGluZ19jb21tZW50KHNlbGYpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX2dldG5ld2FyZ3NfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuKHN0cihzZWxmKSwgc2VsZi50b2tlbl90eXBlKQorCisKK2NsYXNzIFdoaXRlU3BhY2VUZXJtaW5hbChUZXJtaW5hbCk6CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIHJldHVybiAnICcKKworICAgIGRlZiBzdGFydHN3aXRoX2Z3cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGhhc19md3MgPSBUcnVlCisKKworY2xhc3MgVmFsdWVUZXJtaW5hbChUZXJtaW5hbCk6CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgc3RhcnRzd2l0aF9md3Moc2VsZik6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgaGFzX2Z3cyA9IEZhbHNlCisKKyAgICBkZWYgYXNfZW5jb2RlZF93b3JkKHNlbGYsIGNoYXJzZXQpOgorICAgICAgICByZXR1cm4gX2V3LmVuY29kZShzdHIoc2VsZiksIGNoYXJzZXQpCisKKworY2xhc3MgRVdXaGl0ZVNwYWNlVGVybWluYWwoV2hpdGVTcGFjZVRlcm1pbmFsKToKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2YWx1ZShzZWxmKToKKyAgICAgICAgcmV0dXJuICcnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZW5jb2RlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbOl0KKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJycKKworICAgIGhhc19md3MgPSBUcnVlCisKKworIyBYWFggdGhlc2UgbmVlZCB0byBiZWNvbWUgY2xhc3NlcyBhbmQgdXNlZCBhcyBpbnN0YW5jZXMgc28KKyMgdGhhdCBhIHByb2dyYW0gY2FuJ3QgY2hhbmdlIHRoZW0gaW4gYSBwYXJzZSB0cmVlIGFuZCBzY3JldworIyB1cCBvdGhlciBwYXJzZSB0cmVlcy4gIE1heWJlIHNob3VsZCBoYXZlICB0ZXN0cyBmb3IgdGhhdCwgdG9vLgorRE9UID0gVmFsdWVUZXJtaW5hbCgnLicsICdkb3QnKQorTGlzdFNlcGFyYXRvciA9IFZhbHVlVGVybWluYWwoJywnLCAnbGlzdC1zZXBhcmF0b3InKQorUm91dGVDb21wb25lbnRNYXJrZXIgPSBWYWx1ZVRlcm1pbmFsKCdAJywgJ3JvdXRlLWNvbXBvbmVudC1tYXJrZXInKQorCisjCisjIFBhcnNlcgorIworCisiIiJQYXJzZSBzdHJpbmdzIGFjY29yZGluZyB0byBSRkM4MjIvMjA0Ny8yODIyLzUzMjIgcnVsZXMuCisKK1RoaXMgaXMgYSBzdGF0ZWxlc3MgcGFyc2VyLiAgRWFjaCBnZXRfWFhYIGZ1bmN0aW9uIGFjY2VwdHMgYSBzdHJpbmcgYW5kCityZXR1cm5zIGVpdGhlciBhIFRlcm1pbmFsIG9yIGEgVG9rZW5MaXN0IHJlcHJlc2VudGluZyB0aGUgUkZDIG9iamVjdCBuYW1lZAorYnkgdGhlIG1ldGhvZCBhbmQgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgcmVtYWluaW5nIHVucGFyc2VkIGNoYXJhY3RlcnMKK2Zyb20gdGhlIGlucHV0LiAgVGh1cyBhIHBhcnNlciBtZXRob2QgY29uc3VtZXMgdGhlIG5leHQgc3ludGFjdGljIGNvbnN0cnVjdAorb2YgYSBnaXZlbiB0eXBlIGFuZCByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBjb25zdHJ1Y3QgcGx1cyB0aGUKK3VucGFyc2VkIHJlbWFpbmRlciBvZiB0aGUgaW5wdXQgc3RyaW5nLgorCitGb3IgZXhhbXBsZSwgaWYgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYSBzdHJ1Y3R1cmVkIGhlYWRlciBpcyBhICdwaHJhc2UnLAordGhlbjoKKworICAgIHBocmFzZSwgdmFsdWUgPSBnZXRfcGhyYXNlKHZhbHVlKQorCityZXR1cm5zIHRoZSBjb21wbGV0ZSBwaHJhc2UgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZyB2YWx1ZSwgcGx1cyBhbnkKK2NoYXJhY3RlcnMgbGVmdCBpbiB0aGUgc3RyaW5nIGFmdGVyIHRoZSBwaHJhc2UgaXMgcmVtb3ZlZC4KKworIiIiCisKK193c3Bfc3BsaXR0ZXIgPSByZS5jb21waWxlKHInKFt7fV0rKScuZm9ybWF0KCcnLmpvaW4oV1NQKSkpLnNwbGl0Citfbm9uX2F0b21fZW5kX21hdGNoZXIgPSByZS5jb21waWxlKHIiW157fV0rIi5mb3JtYXQoCisgICAgJycuam9pbihBVE9NX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKK19ub25fcHJpbnRhYmxlX2ZpbmRlciA9IHJlLmNvbXBpbGUociJbXHgwMC1ceDIwXHg3Rl0iKS5maW5kYWxsCitfbm9uX3Rva2VuX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAorICAgICcnLmpvaW4oVE9LRU5fRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScsJ1xdJykpKS5tYXRjaAorX25vbl9hdHRyaWJ1dGVfZW5kX21hdGNoZXIgPSByZS5jb21waWxlKHIiW157fV0rIi5mb3JtYXQoCisgICAgJycuam9pbihBVFRSSUJVVEVfRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScsJ1xdJykpKS5tYXRjaAorX25vbl9leHRlbmRlZF9hdHRyaWJ1dGVfZW5kX21hdGNoZXIgPSByZS5jb21waWxlKHIiW157fV0rIi5mb3JtYXQoCisgICAgJycuam9pbihFWFRFTkRFRF9BVFRSSUJVVEVfRU5EUykucmVwbGFjZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJywnXF0nKSkpLm1hdGNoCisKK2RlZiBfdmFsaWRhdGVfeHRleHQoeHRleHQpOgorICAgICIiIklmIGlucHV0IHRva2VuIGNvbnRhaW5zIEFTQ0lJIG5vbi1wcmludGFibGVzLCByZWdpc3RlciBhIGRlZmVjdC4iIiIKKworICAgIG5vbl9wcmludGFibGVzID0gX25vbl9wcmludGFibGVfZmluZGVyKHh0ZXh0KQorICAgIGlmIG5vbl9wcmludGFibGVzOgorICAgICAgICB4dGV4dC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0KG5vbl9wcmludGFibGVzKSkKKyAgICBpZiB1dGlscy5faGFzX3N1cnJvZ2F0ZXMoeHRleHQpOgorICAgICAgICB4dGV4dC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdCgKKyAgICAgICAgICAgICJOb24tQVNDSUkgY2hhcmFjdGVycyBmb3VuZCBpbiBoZWFkZXIgdG9rZW4iKSkKKworZGVmIF9nZXRfcHRleHRfdG9fZW5kY2hhcnModmFsdWUsIGVuZGNoYXJzKToKKyAgICAiIiJTY2FuIHByaW50YWJsZXMvcXVvdGVkLXBhaXJzIHVudGlsIGVuZGNoYXJzIGFuZCByZXR1cm4gdW5xdW90ZWQgcHRleHQuCisKKyAgICBUaGlzIGZ1bmN0aW9uIHR1cm5zIGEgcnVuIG9mIHFjb250ZW50LCBjY29udGVudC13aXRob3V0LWNvbW1lbnRzLCBvcgorICAgIGR0ZXh0LXdpdGgtcXVvdGVkLXByaW50YWJsZXMgaW50byBhIHNpbmdsZSBzdHJpbmcgYnkgdW5xdW90aW5nIGFueQorICAgIHF1b3RlZCBwcmludGFibGVzLiAgSXQgcmV0dXJucyB0aGUgc3RyaW5nLCB0aGUgcmVtYWluaW5nIHZhbHVlLCBhbmQKKyAgICBhIGZsYWcgdGhhdCBpcyBUcnVlIGlmZiB0aGVyZSB3ZXJlIGFueSBxdW90ZWQgcHJpbnRhYmxlcyBkZWNvZGVkLgorCisgICAgIiIiCisgICAgZnJhZ21lbnQsICpyZW1haW5kZXIgPSBfd3NwX3NwbGl0dGVyKHZhbHVlLCAxKQorICAgIHZjaGFycyA9IFtdCisgICAgZXNjYXBlID0gRmFsc2UKKyAgICBoYWRfcXAgPSBGYWxzZQorICAgIGZvciBwb3MgaW4gcmFuZ2UobGVuKGZyYWdtZW50KSk6CisgICAgICAgIGlmIGZyYWdtZW50W3Bvc10gPT0gJ1xcJzoKKyAgICAgICAgICAgIGlmIGVzY2FwZToKKyAgICAgICAgICAgICAgICBlc2NhcGUgPSBGYWxzZQorICAgICAgICAgICAgICAgIGhhZF9xcCA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZXNjYXBlID0gVHJ1ZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIGVzY2FwZToKKyAgICAgICAgICAgIGVzY2FwZSA9IEZhbHNlCisgICAgICAgIGVsaWYgZnJhZ21lbnRbcG9zXSBpbiBlbmRjaGFyczoKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHZjaGFycy5hcHBlbmQoZnJhZ21lbnRbcG9zXSkKKyAgICBlbHNlOgorICAgICAgICBwb3MgPSBwb3MgKyAxCisgICAgcmV0dXJuICcnLmpvaW4odmNoYXJzKSwgJycuam9pbihbZnJhZ21lbnRbcG9zOl1dICsgcmVtYWluZGVyKSwgaGFkX3FwCisKK2RlZiBfZGVjb2RlX2V3X3J1bih2YWx1ZSk6CisgICAgIiIiIERlY29kZSBhIHJ1biBvZiBSRkMyMDQ3IGVuY29kZWQgd29yZHMuCisKKyAgICAgICAgX2RlY29kZV9ld19ydW4odmFsdWUpIC0+ICh0ZXh0LCB2YWx1ZSwgZGVmZWN0cykKKworICAgIFNjYW5zIHRoZSBzdXBwbGllZCB2YWx1ZSBmb3IgYSBydW4gb2YgdG9rZW5zIHRoYXQgbG9vayBsaWtlIHRoZXkgYXJlIFJGQworICAgIDIwNDcgZW5jb2RlZCB3b3JkcywgZGVjb2RlcyB0aG9zZSB3b3JkcyBpbnRvIHRleHQgYWNjb3JkaW5nIHRvIFJGQyAyMDQ3CisgICAgcnVsZXMgKHdoaXRlc3BhY2UgYmV0d2VlbiBlbmNvZGVkIHdvcmRzIGlzIGRpc2NhcmRlZCksIGFuZCByZXR1cm5zIHRoZSB0ZXh0CisgICAgYW5kIHRoZSByZW1haW5pbmcgdmFsdWUgKGluY2x1ZGluZyBhbnkgbGVhZGluZyB3aGl0ZXNwYWNlIG9uIHRoZSByZW1haW5pbmcKKyAgICB2YWx1ZSksIGFzIHdlbGwgYXMgYSBsaXN0IG9mIGFueSBkZWZlY3RzIGVuY291bnRlcmVkIHdoaWxlIGRlY29kaW5nLiAgVGhlCisgICAgaW5wdXQgdmFsdWUgbWF5IG5vdCBoYXZlIGFueSBsZWFkaW5nIHdoaXRlc3BhY2UuCisKKyAgICAiIiIKKyAgICByZXMgPSBbXQorICAgIGRlZmVjdHMgPSBbXQorICAgIGxhc3Rfd3MgPSAnJworICAgIHdoaWxlIHZhbHVlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0b2ssIHdzLCB2YWx1ZSA9IF93c3Bfc3BsaXR0ZXIodmFsdWUsIDEpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgdG9rLCB3cywgdmFsdWUgPSB2YWx1ZSwgJycsICcnCisgICAgICAgIGlmIG5vdCAodG9rLnN0YXJ0c3dpdGgoJz0/JykgYW5kIHRvay5lbmRzd2l0aCgnPz0nKSk6CisgICAgICAgICAgICByZXR1cm4gJycuam9pbihyZXMpLCBsYXN0X3dzICsgdG9rICsgd3MgKyB2YWx1ZSwgZGVmZWN0cworICAgICAgICB0ZXh0LCBjaGFyc2V0LCBsYW5nLCBuZXdfZGVmZWN0cyA9IF9ldy5kZWNvZGUodG9rKQorICAgICAgICByZXMuYXBwZW5kKHRleHQpCisgICAgICAgIGRlZmVjdHMuZXh0ZW5kKG5ld19kZWZlY3RzKQorICAgICAgICBsYXN0X3dzID0gd3MKKyAgICByZXR1cm4gJycuam9pbihyZXMpLCBsYXN0X3dzLCBkZWZlY3RzCisKK2RlZiBnZXRfZndzKHZhbHVlKToKKyAgICAiIiJGV1MgPSAxKldTUAorCisgICAgVGhpcyBpc24ndCB0aGUgUkZDIGRlZmluaXRpb24uICBXZSdyZSB1c2luZyBmd3MgdG8gcmVwcmVzZW50IHRva2VucyB3aGVyZQorICAgIGZvbGRpbmcgY2FuIGJlIGRvbmUsIGJ1dCB3aGVuIHdlIGFyZSBwYXJzaW5nIHRoZSAqdW4qZm9sZGluZyBoYXMgYWxyZWFkeQorICAgIGJlZW4gZG9uZSBzbyB3ZSBkb24ndCBuZWVkIHRvIHdhdGNoIG91dCBmb3IgQ1JMRi4KKworICAgICIiIgorICAgIG5ld3ZhbHVlID0gdmFsdWUubHN0cmlwKCkKKyAgICBmd3MgPSBXaGl0ZVNwYWNlVGVybWluYWwodmFsdWVbOmxlbih2YWx1ZSktbGVuKG5ld3ZhbHVlKV0sICdmd3MnKQorICAgIHJldHVybiBmd3MsIG5ld3ZhbHVlCisKK2RlZiBnZXRfZW5jb2RlZF93b3JkKHZhbHVlKToKKyAgICAiIiIgZW5jb2RlZC13b3JkID0gIj0/IiBjaGFyc2V0ICI/IiBlbmNvZGluZyAiPyIgZW5jb2RlZC10ZXh0ICI/PSIKKworICAgICIiIgorICAgIGV3ID0gRW5jb2RlZFdvcmQoKQorICAgIGlmIG5vdCB2YWx1ZS5zdGFydHN3aXRoKCc9PycpOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBlbmNvZGVkIHdvcmQgYnV0IGZvdW5kIHt9Ii5mb3JtYXQodmFsdWUpKQorICAgIHRvaywgKnJlbWFpbmRlciA9IHZhbHVlWzI6XS5zcGxpdCgnPz0nLCAxKQorICAgIGlmIHRvayA9PSB2YWx1ZVsyOl06CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIGVuY29kZWQgd29yZCBidXQgZm91bmQge30iLmZvcm1hdCh2YWx1ZSkpCisgICAgcmVtc3RyID0gJycuam9pbihyZW1haW5kZXIpCisgICAgaWYgcmVtc3RyWzoyXS5pc2RpZ2l0KCk6CisgICAgICAgIHJlc3QsICpyZW1haW5kZXIgPSByZW1zdHIuc3BsaXQoJz89JywgMSkKKyAgICAgICAgdG9rID0gdG9rICsgJz89JyArIHJlc3QKKyAgICBpZiBsZW4odG9rLnNwbGl0KCkpID4gMToKKyAgICAgICAgZXcuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAid2hpdGVzcGFjZSBpbnNpZGUgZW5jb2RlZCB3b3JkIikpCisgICAgZXcuY3RlID0gdmFsdWUKKyAgICB2YWx1ZSA9ICcnLmpvaW4ocmVtYWluZGVyKQorICAgIHRyeToKKyAgICAgICAgdGV4dCwgY2hhcnNldCwgbGFuZywgZGVmZWN0cyA9IF9ldy5kZWNvZGUoJz0/JyArIHRvayArICc/PScpCisgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImVuY29kZWQgd29yZCBmb3JtYXQgaW52YWxpZDogJ3t9JyIuZm9ybWF0KGV3LmN0ZSkpCisgICAgZXcuY2hhcnNldCA9IGNoYXJzZXQKKyAgICBldy5sYW5nID0gbGFuZworICAgIGV3LmRlZmVjdHMuZXh0ZW5kKGRlZmVjdHMpCisgICAgd2hpbGUgdGV4dDoKKyAgICAgICAgaWYgdGV4dFswXSBpbiBXU1A6CisgICAgICAgICAgICB0b2tlbiwgdGV4dCA9IGdldF9md3ModGV4dCkKKyAgICAgICAgICAgIGV3LmFwcGVuZCh0b2tlbikKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGNoYXJzLCAqcmVtYWluZGVyID0gX3dzcF9zcGxpdHRlcih0ZXh0LCAxKQorICAgICAgICB2dGV4dCA9IFZhbHVlVGVybWluYWwoY2hhcnMsICd2dGV4dCcpCisgICAgICAgIF92YWxpZGF0ZV94dGV4dCh2dGV4dCkKKyAgICAgICAgZXcuYXBwZW5kKHZ0ZXh0KQorICAgICAgICB0ZXh0ID0gJycuam9pbihyZW1haW5kZXIpCisgICAgcmV0dXJuIGV3LCB2YWx1ZQorCitkZWYgZ2V0X3Vuc3RydWN0dXJlZCh2YWx1ZSk6CisgICAgIiIidW5zdHJ1Y3R1cmVkID0gKCooW0ZXU10gdmNoYXIpICpXU1ApIC8gb2JzLXVuc3RydWN0CisgICAgICAgb2JzLXVuc3RydWN0ID0gKigoKkxGICpDUiAqKG9icy11dGV4dCkgKkxGICpDUikpIC8gRldTKQorICAgICAgIG9icy11dGV4dCA9ICVkMCAvIG9icy1OTy1XUy1DVEwgLyBMRiAvIENSCisKKyAgICAgICBvYnMtTk8tV1MtQ1RMIGlzIGNvbnRyb2wgY2hhcmFjdGVycyBleGNlcHQgV1NQL0NSL0xGLgorCisgICAgU28sIGJhc2ljYWxseSwgd2UgaGF2ZSBwcmludGFibGUgcnVucywgcGx1cyBjb250cm9sIGNoYXJhY3RlcnMgb3IgbnVsbHMgaW4KKyAgICB0aGUgb2Jzb2xldGUgc3ludGF4LCBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZS4gIFNpbmNlIFJGQyAyMDQ3IHVzZXMgdGhlCisgICAgb2Jzb2xldGUgc3ludGF4IGluIGl0cyBzcGVjaWZpY2F0aW9uLCBidXQgcmVxdWlyZXMgd2hpdGVzcGFjZSBvbiBlaXRoZXIKKyAgICBzaWRlIG9mIHRoZSBlbmNvZGVkIHdvcmRzLCBJIGNhbiBzZWUgbm8gcmVhc29uIHRvIG5lZWQgdG8gc2VwYXJhdGUgdGhlCisgICAgbm9uLXByaW50YWJsZS1ub24td2hpdGVzcGFjZSBmcm9tIHRoZSBwcmludGFibGUgcnVucyBpZiB0aGV5IG9jY3VyLCBzbyB3ZQorICAgIHBhcnNlIHRoaXMgaW50byB4dGV4dCB0b2tlbnMgc2VwYXJhdGVkIGJ5IFdTUCB0b2tlbnMuCisKKyAgICBCZWNhdXNlIGFuICd1bnN0cnVjdHVyZWQnIHZhbHVlIG11c3QgYnkgZGVmaW5pdGlvbiBjb25zdGl0dXRlIHRoZSBlbnRpcmUKKyAgICB2YWx1ZSwgdGhpcyAnZ2V0JyByb3V0aW5lIGRvZXMgbm90IHJldHVybiBhIHJlbWFpbmluZyB2YWx1ZSwgb25seSB0aGUKKyAgICBwYXJzZWQgVG9rZW5MaXN0LgorCisgICAgIiIiCisgICAgIyBYWFg6IGJ1dCB3aGF0IGFib3V0IGJhcmUgQ1IgYW5kIExGPyAgVGhleSBtaWdodCBzaWduYWwgdGhlIHN0YXJ0IG9yCisgICAgIyBlbmQgb2YgYW4gZW5jb2RlZCB3b3JkLiAgWUFHTkkgZm9yIG5vdywgc2luY2Ugb3V0IGN1cnJlbnQgcGFyc2VycworICAgICMgd2lsbCBuZXZlciBzZW5kIHVzIHN0cmluZ3Mgd2l0aCBiYXJkIENSIG9yIExGLgorCisgICAgdW5zdHJ1Y3R1cmVkID0gVW5zdHJ1Y3R1cmVkVG9rZW5MaXN0KCkKKyAgICB3aGlsZSB2YWx1ZToKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gV1NQOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Z3cyh2YWx1ZSkKKyAgICAgICAgICAgIHVuc3RydWN0dXJlZC5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiB2YWx1ZS5zdGFydHN3aXRoKCc9PycpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9lbmNvZGVkX3dvcmQodmFsdWUpCisgICAgICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBoYXZlX3dzID0gVHJ1ZQorICAgICAgICAgICAgICAgIGlmIGxlbih1bnN0cnVjdHVyZWQpID4gMDoKKyAgICAgICAgICAgICAgICAgICAgaWYgdW5zdHJ1Y3R1cmVkWy0xXS50b2tlbl90eXBlICE9ICdmd3MnOgorICAgICAgICAgICAgICAgICAgICAgICAgdW5zdHJ1Y3R1cmVkLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaXNzaW5nIHdoaXRlc3BhY2UgYmVmb3JlIGVuY29kZWQgd29yZCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZV93cyA9IEZhbHNlCisgICAgICAgICAgICAgICAgaWYgaGF2ZV93cyBhbmQgbGVuKHVuc3RydWN0dXJlZCkgPiAxOgorICAgICAgICAgICAgICAgICAgICBpZiB1bnN0cnVjdHVyZWRbLTJdLnRva2VuX3R5cGUgPT0gJ2VuY29kZWQtd29yZCc6CisgICAgICAgICAgICAgICAgICAgICAgICB1bnN0cnVjdHVyZWRbLTFdID0gRVdXaGl0ZVNwYWNlVGVybWluYWwoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zdHJ1Y3R1cmVkWy0xXSwgJ2Z3cycpCisgICAgICAgICAgICAgICAgdW5zdHJ1Y3R1cmVkLmFwcGVuZCh0b2tlbikKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICB0b2ssICpyZW1haW5kZXIgPSBfd3NwX3NwbGl0dGVyKHZhbHVlLCAxKQorICAgICAgICB2dGV4dCA9IFZhbHVlVGVybWluYWwodG9rLCAndnRleHQnKQorICAgICAgICBfdmFsaWRhdGVfeHRleHQodnRleHQpCisgICAgICAgIHVuc3RydWN0dXJlZC5hcHBlbmQodnRleHQpCisgICAgICAgIHZhbHVlID0gJycuam9pbihyZW1haW5kZXIpCisgICAgcmV0dXJuIHVuc3RydWN0dXJlZAorCitkZWYgZ2V0X3FwX2N0ZXh0KHZhbHVlKToKKyAgICAiIiJjdGV4dCA9IDxwcmludGFibGUgYXNjaWkgZXhjZXB0IFwgKCApPgorCisgICAgVGhpcyBpcyBub3QgdGhlIFJGQyBjdGV4dCwgc2luY2Ugd2UgYXJlIGhhbmRsaW5nIG5lc3RlZCBjb21tZW50cyBpbiBjb21tZW50CisgICAgYW5kIHVucXVvdGluZyBxdW90ZWQtcGFpcnMgaGVyZS4gIFdlIGFsbG93IGFueXRoaW5nIGV4Y2VwdCB0aGUgJygpJworICAgIGNoYXJhY3RlcnMsIGJ1dCBpZiB3ZSBmaW5kIGFueSBBU0NJSSBvdGhlciB0aGFuIHRoZSBSRkMgZGVmaW5lZCBwcmludGFibGUKKyAgICBBU0NJSSBhbiBOb25QcmludGFibGVEZWZlY3QgaXMgYWRkZWQgdG8gdGhlIHRva2VuJ3MgZGVmZWN0cyBsaXN0LiAgU2luY2UKKyAgICBxdW90ZWQgcGFpcnMgYXJlIGNvbnZlcnRlZCB0byB0aGVpciB1bnF1b3RlZCB2YWx1ZXMsIHdoYXQgaXMgcmV0dXJuZWQgaXMKKyAgICBhICdwdGV4dCcgdG9rZW4uICBJbiB0aGlzIGNhc2UgaXQgaXMgYSBXaGl0ZVNwYWNlVGVybWluYWwsIHNvIGl0J3MgdmFsdWUKKyAgICBpcyAnICcuCisKKyAgICAiIiIKKyAgICBwdGV4dCwgdmFsdWUsIF8gPSBfZ2V0X3B0ZXh0X3RvX2VuZGNoYXJzKHZhbHVlLCAnKCknKQorICAgIHB0ZXh0ID0gV2hpdGVTcGFjZVRlcm1pbmFsKHB0ZXh0LCAncHRleHQnKQorICAgIF92YWxpZGF0ZV94dGV4dChwdGV4dCkKKyAgICByZXR1cm4gcHRleHQsIHZhbHVlCisKK2RlZiBnZXRfcWNvbnRlbnQodmFsdWUpOgorICAgICIiInFjb250ZW50ID0gcXRleHQgLyBxdW90ZWQtcGFpcgorCisgICAgV2UgYWxsb3cgYW55dGhpbmcgZXhjZXB0IHRoZSBEUVVPVEUgY2hhcmFjdGVyLCBidXQgaWYgd2UgZmluZCBhbnkgQVNDSUkKKyAgICBvdGhlciB0aGFuIHRoZSBSRkMgZGVmaW5lZCBwcmludGFibGUgQVNDSUkgYW4gTm9uUHJpbnRhYmxlRGVmZWN0IGlzCisgICAgYWRkZWQgdG8gdGhlIHRva2VuJ3MgZGVmZWN0cyBsaXN0LiAgQW55IHF1b3RlZCBwYWlycyBhcmUgY29udmVydGVkIHRvIHRoZWlyCisgICAgdW5xdW90ZWQgdmFsdWVzLCBzbyB3aGF0IGlzIHJldHVybmVkIGlzIGEgJ3B0ZXh0JyB0b2tlbi4gIEluIHRoaXMgY2FzZSBpdAorICAgIGlzIGEgVmFsdWVUZXJtaW5hbC4KKworICAgICIiIgorICAgIHB0ZXh0LCB2YWx1ZSwgXyA9IF9nZXRfcHRleHRfdG9fZW5kY2hhcnModmFsdWUsICciJykKKyAgICBwdGV4dCA9IFZhbHVlVGVybWluYWwocHRleHQsICdwdGV4dCcpCisgICAgX3ZhbGlkYXRlX3h0ZXh0KHB0ZXh0KQorICAgIHJldHVybiBwdGV4dCwgdmFsdWUKKworZGVmIGdldF9hdGV4dCh2YWx1ZSk6CisgICAgIiIiYXRleHQgPSA8bWF0Y2hlcyBfYXRleHRfbWF0Y2hlcj4KKworICAgIFdlIGFsbG93IGFueSBub24tQVRPTV9FTkRTIGluIGF0ZXh0LCBidXQgYWRkIGFuIEludmFsaWRBVGV4dERlZmVjdCB0bworICAgIHRoZSB0b2tlbidzIGRlZmVjdHMgbGlzdCBpZiB3ZSBmaW5kIG5vbi1hdGV4dCBjaGFyYWN0ZXJzLgorICAgICIiIgorICAgIG0gPSBfbm9uX2F0b21fZW5kX21hdGNoZXIodmFsdWUpCisgICAgaWYgbm90IG06CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIGF0ZXh0IGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGF0ZXh0ID0gbS5ncm91cCgpCisgICAgdmFsdWUgPSB2YWx1ZVtsZW4oYXRleHQpOl0KKyAgICBhdGV4dCA9IFZhbHVlVGVybWluYWwoYXRleHQsICdhdGV4dCcpCisgICAgX3ZhbGlkYXRlX3h0ZXh0KGF0ZXh0KQorICAgIHJldHVybiBhdGV4dCwgdmFsdWUKKworZGVmIGdldF9iYXJlX3F1b3RlZF9zdHJpbmcodmFsdWUpOgorICAgICIiImJhcmUtcXVvdGVkLXN0cmluZyA9IERRVU9URSAqKFtGV1NdIHFjb250ZW50KSBbRldTXSBEUVVPVEUKKworICAgIEEgcXVvdGVkLXN0cmluZyB3aXRob3V0IHRoZSBsZWFkaW5nIG9yIHRyYWlsaW5nIHdoaXRlIHNwYWNlLiAgSXRzCisgICAgdmFsdWUgaXMgdGhlIHRleHQgYmV0d2VlbiB0aGUgcXVvdGUgbWFya3MsIHdpdGggd2hpdGVzcGFjZQorICAgIHByZXNlcnZlZCBhbmQgcXVvdGVkIHBhaXJzIGRlY29kZWQuCisgICAgIiIiCisgICAgaWYgdmFsdWVbMF0gIT0gJyInOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCAnXCInIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGJhcmVfcXVvdGVkX3N0cmluZyA9IEJhcmVRdW90ZWRTdHJpbmcoKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICciJzoKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gV1NQOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Z3cyh2YWx1ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9xY29udGVudCh2YWx1ZSkKKyAgICAgICAgYmFyZV9xdW90ZWRfc3RyaW5nLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIGJhcmVfcXVvdGVkX3N0cmluZy5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJlbmQgb2YgaGVhZGVyIGluc2lkZSBxdW90ZWQgc3RyaW5nIikpCisgICAgICAgIHJldHVybiBiYXJlX3F1b3RlZF9zdHJpbmcsIHZhbHVlCisgICAgcmV0dXJuIGJhcmVfcXVvdGVkX3N0cmluZywgdmFsdWVbMTpdCisKK2RlZiBnZXRfY29tbWVudCh2YWx1ZSk6CisgICAgIiIiY29tbWVudCA9ICIoIiAqKFtGV1NdIGNjb250ZW50KSBbRldTXSAiKSIKKyAgICAgICBjY29udGVudCA9IGN0ZXh0IC8gcXVvdGVkLXBhaXIgLyBjb21tZW50CisKKyAgICBXZSBoYW5kbGUgbmVzdGVkIGNvbW1lbnRzIGhlcmUsIGFuZCBxdW90ZWQtcGFpciBpbiBvdXIgcXAtY3RleHQgcm91dGluZS4KKyAgICAiIiIKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gJygnOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCAnKCcgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgY29tbWVudCA9IENvbW1lbnQoKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICIpIjoKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gV1NQOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Z3cyh2YWx1ZSkKKyAgICAgICAgZWxpZiB2YWx1ZVswXSA9PSAnKCc6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY29tbWVudCh2YWx1ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9xcF9jdGV4dCh2YWx1ZSkKKyAgICAgICAgY29tbWVudC5hcHBlbmQodG9rZW4pCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICBjb21tZW50LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgImVuZCBvZiBoZWFkZXIgaW5zaWRlIGNvbW1lbnQiKSkKKyAgICAgICAgcmV0dXJuIGNvbW1lbnQsIHZhbHVlCisgICAgcmV0dXJuIGNvbW1lbnQsIHZhbHVlWzE6XQorCitkZWYgZ2V0X2Nmd3ModmFsdWUpOgorICAgICIiIkNGV1MgPSAoMSooW0ZXU10gY29tbWVudCkgW0ZXU10pIC8gRldTCisKKyAgICAiIiIKKyAgICBjZndzID0gQ0ZXU0xpc3QoKQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gV1NQOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Z3cyh2YWx1ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jb21tZW50KHZhbHVlKQorICAgICAgICBjZndzLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gY2Z3cywgdmFsdWUKKworZGVmIGdldF9xdW90ZWRfc3RyaW5nKHZhbHVlKToKKyAgICAiIiJxdW90ZWQtc3RyaW5nID0gW0NGV1NdIDxiYXJlLXF1b3RlZC1zdHJpbmc+IFtDRldTXQorCisgICAgJ2JhcmUtcXVvdGVkLXN0cmluZycgaXMgYW4gaW50ZXJtZWRpYXRlIGNsYXNzIGRlZmluZWQgYnkgdGhpcworICAgIHBhcnNlciBhbmQgbm90IGJ5IHRoZSBSRkMgZ3JhbW1hci4gIEl0IGlzIHRoZSBxdW90ZWQgc3RyaW5nCisgICAgd2l0aG91dCBhbnkgYXR0YWNoZWQgQ0ZXUy4KKyAgICAiIiIKKyAgICBxdW90ZWRfc3RyaW5nID0gUXVvdGVkU3RyaW5nKCkKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBxdW90ZWRfc3RyaW5nLmFwcGVuZCh0b2tlbikKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYmFyZV9xdW90ZWRfc3RyaW5nKHZhbHVlKQorICAgIHF1b3RlZF9zdHJpbmcuYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIHF1b3RlZF9zdHJpbmcuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBxdW90ZWRfc3RyaW5nLCB2YWx1ZQorCitkZWYgZ2V0X2F0b20odmFsdWUpOgorICAgICIiImF0b20gPSBbQ0ZXU10gMSphdGV4dCBbQ0ZXU10KKworICAgICIiIgorICAgIGF0b20gPSBBdG9tKCkKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBhdG9tLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQVRPTV9FTkRTOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBhdG9tIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdGV4dCh2YWx1ZSkKKyAgICBhdG9tLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBhdG9tLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gYXRvbSwgdmFsdWUKKworZGVmIGdldF9kb3RfYXRvbV90ZXh0KHZhbHVlKToKKyAgICAiIiIgZG90LXRleHQgPSAxKmF0ZXh0ICooIi4iIDEqYXRleHQpCisKKyAgICAiIiIKKyAgICBkb3RfYXRvbV90ZXh0ID0gRG90QXRvbVRleHQoKQorICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSBpbiBBVE9NX0VORFM6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJleHBlY3RlZCBhdG9tIGF0IGEgc3RhcnQgb2YgIgorICAgICAgICAgICAgImRvdC1hdG9tLXRleHQgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdIG5vdCBpbiBBVE9NX0VORFM6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdGV4dCh2YWx1ZSkKKyAgICAgICAgZG90X2F0b21fdGV4dC5hcHBlbmQodG9rZW4pCisgICAgICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSA9PSAnLic6CisgICAgICAgICAgICBkb3RfYXRvbV90ZXh0LmFwcGVuZChET1QpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIGRvdF9hdG9tX3RleHRbLTFdIGlzIERPVDoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoImV4cGVjdGVkIGF0b20gYXQgZW5kIG9mIGRvdC1hdG9tLXRleHQgIgorICAgICAgICAgICAgImJ1dCBmb3VuZCAne30nIi5mb3JtYXQoJy4nK3ZhbHVlKSkKKyAgICByZXR1cm4gZG90X2F0b21fdGV4dCwgdmFsdWUKKworZGVmIGdldF9kb3RfYXRvbSh2YWx1ZSk6CisgICAgIiIiIGRvdC1hdG9tID0gW0NGV1NdIGRvdC1hdG9tLXRleHQgW0NGV1NdCisKKyAgICAiIiIKKyAgICBkb3RfYXRvbSA9IERvdEF0b20oKQorICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgZG90X2F0b20uYXBwZW5kKHRva2VuKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb3RfYXRvbV90ZXh0KHZhbHVlKQorICAgIGRvdF9hdG9tLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBkb3RfYXRvbS5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGRvdF9hdG9tLCB2YWx1ZQorCitkZWYgZ2V0X3dvcmQodmFsdWUpOgorICAgICIiIndvcmQgPSBhdG9tIC8gcXVvdGVkLXN0cmluZworCisgICAgRWl0aGVyIGF0b20gb3IgcXVvdGVkLXN0cmluZyBtYXkgc3RhcnQgd2l0aCBDRldTLiAgV2UgaGF2ZSB0byBwZWVsIG9mZiB0aGlzCisgICAgQ0ZXUyBmaXJzdCB0byBkZXRlcm1pbmUgd2hpY2ggdHlwZSBvZiB3b3JkIHRvIHBhcnNlLiAgQWZ0ZXJ3YXJkIHdlIHNwbGljZQorICAgIHRoZSBsZWFkaW5nIENGV1MsIGlmIGFueSwgaW50byB0aGUgcGFyc2VkIHN1Yi10b2tlbi4KKworICAgIElmIG5laXRoZXIgYW4gYXRvbSBvciBhIHF1b3RlZC1zdHJpbmcgaXMgZm91bmQgYmVmb3JlIHRoZSBuZXh0IHNwZWNpYWwsIGEKKyAgICBIZWFkZXJQYXJzZUVycm9yIGlzIHJhaXNlZC4KKworICAgIFRoZSB0b2tlbiByZXR1cm5lZCBpcyBlaXRoZXIgYW4gQXRvbSBvciBhIFF1b3RlZFN0cmluZywgYXMgYXBwcm9wcmlhdGUuCisgICAgVGhpcyBtZWFucyB0aGUgJ3dvcmQnIGxldmVsIG9mIHRoZSBmb3JtYWwgZ3JhbW1hciBpcyBub3QgcmVwcmVzZW50ZWQgaW4gdGhlCisgICAgcGFyc2UgdHJlZTsgdGhpcyBpcyBiZWNhdXNlIGhhdmluZyB0aGF0IGV4dHJhIGxheWVyIHdoZW4gbWFuaXB1bGF0aW5nIHRoZQorICAgIHBhcnNlIHRyZWUgaXMgbW9yZSBjb25mdXNpbmcgdGhhbiBpdCBpcyBoZWxwZnVsLgorCisgICAgIiIiCisgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICBlbHNlOgorICAgICAgICBsZWFkZXIgPSBOb25lCisgICAgaWYgdmFsdWVbMF09PSciJzoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3F1b3RlZF9zdHJpbmcodmFsdWUpCisgICAgZWxpZiB2YWx1ZVswXSBpbiBTUEVDSUFMUzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkICdhdG9tJyBvciAncXVvdGVkLXN0cmluZycgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgZWxzZToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2F0b20odmFsdWUpCisgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgIHJldHVybiB0b2tlbiwgdmFsdWUKKworZGVmIGdldF9waHJhc2UodmFsdWUpOgorICAgICIiIiBwaHJhc2UgPSAxKndvcmQgLyBvYnMtcGhyYXNlCisgICAgICAgIG9icy1waHJhc2UgPSB3b3JkICood29yZCAvICIuIiAvIENGV1MpCisKKyAgICBUaGlzIG1lYW5zIGEgcGhyYXNlIGNhbiBiZSBhIHNlcXVlbmNlIG9mIHdvcmRzLCBwZXJpb2RzLCBhbmQgQ0ZXUyBpbiBhbnkKKyAgICBvcmRlciBhcyBsb25nIGFzIGl0IHN0YXJ0cyB3aXRoIGF0IGxlYXN0IG9uZSB3b3JkLiAgSWYgYW55dGhpbmcgb3RoZXIgdGhhbgorICAgIHdvcmRzIGlzIGRldGVjdGVkLCBhbiBPYnNvbGV0ZUhlYWRlckRlZmVjdCBpcyBhZGRlZCB0byB0aGUgdG9rZW4ncyBkZWZlY3QKKyAgICBsaXN0LiAgV2UgYWxzbyBhY2NlcHQgYSBwaHJhc2UgdGhhdCBzdGFydHMgd2l0aCBDRldTIGZvbGxvd2VkIGJ5IGEgZG90OworICAgIHRoaXMgaXMgcmVnaXN0ZXJlZCBhcyBhbiBJbnZhbGlkSGVhZGVyRGVmZWN0LCBzaW5jZSBpdCBpcyBub3Qgc3VwcG9ydGVkIGJ5CisgICAgZXZlbiB0aGUgb2Jzb2xldGUgZ3JhbW1hci4KKworICAgICIiIgorICAgIHBocmFzZSA9IFBocmFzZSgpCisgICAgdHJ5OgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfd29yZCh2YWx1ZSkKKyAgICAgICAgcGhyYXNlLmFwcGVuZCh0b2tlbikKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIHBocmFzZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJwaHJhc2UgZG9lcyBub3Qgc3RhcnQgd2l0aCB3b3JkIikpCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdIG5vdCBpbiBQSFJBU0VfRU5EUzoKKyAgICAgICAgaWYgdmFsdWVbMF09PScuJzoKKyAgICAgICAgICAgIHBocmFzZS5hcHBlbmQoRE9UKQorICAgICAgICAgICAgcGhyYXNlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAicGVyaW9kIGluICdwaHJhc2UnIikpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF93b3JkKHZhbHVlKQorICAgICAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICAgICAgICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgcGhyYXNlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJjb21tZW50IGZvdW5kIHdpdGhvdXQgYXRvbSIpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBwaHJhc2UuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBwaHJhc2UsIHZhbHVlCisKK2RlZiBnZXRfbG9jYWxfcGFydCh2YWx1ZSk6CisgICAgIiIiIGxvY2FsLXBhcnQgPSBkb3QtYXRvbSAvIHF1b3RlZC1zdHJpbmcgLyBvYnMtbG9jYWwtcGFydAorCisgICAgIiIiCisgICAgbG9jYWxfcGFydCA9IExvY2FsUGFydCgpCisgICAgbGVhZGVyID0gTm9uZQorICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICBsZWFkZXIsIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBsb2NhbC1wYXJ0IGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIHRyeToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2RvdF9hdG9tKHZhbHVlKQorICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3dvcmQodmFsdWUpCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgICAgIGlmIHZhbHVlWzBdICE9ICdcXCcgYW5kIHZhbHVlWzBdIGluIFBIUkFTRV9FTkRTOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICB0b2tlbiA9IFRva2VuTGlzdCgpCisgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgIGxvY2FsX3BhcnQuYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCAodmFsdWVbMF09PSdcXCcgb3IgdmFsdWVbMF0gbm90IGluIFBIUkFTRV9FTkRTKToKKyAgICAgICAgb2JzX2xvY2FsX3BhcnQsIHZhbHVlID0gZ2V0X29ic19sb2NhbF9wYXJ0KHN0cihsb2NhbF9wYXJ0KSArIHZhbHVlKQorICAgICAgICBpZiBvYnNfbG9jYWxfcGFydC50b2tlbl90eXBlID09ICdpbnZhbGlkLW9icy1sb2NhbC1wYXJ0JzoKKyAgICAgICAgICAgIGxvY2FsX3BhcnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgImxvY2FsLXBhcnQgaXMgbm90IGRvdC1hdG9tLCBxdW90ZWQtc3RyaW5nLCBvciBvYnMtbG9jYWwtcGFydCIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9jYWxfcGFydC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgImxvY2FsLXBhcnQgaXMgbm90IGEgZG90LWF0b20gKGNvbnRhaW5zIENGV1MpIikpCisgICAgICAgIGxvY2FsX3BhcnRbMF0gPSBvYnNfbG9jYWxfcGFydAorICAgIHRyeToKKyAgICAgICAgbG9jYWxfcGFydC52YWx1ZS5lbmNvZGUoJ2FzY2lpJykKKyAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICBsb2NhbF9wYXJ0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5Ob25BU0NJSUxvY2FsUGFydERlZmVjdCgKKyAgICAgICAgICAgICAgICAibG9jYWwtcGFydCBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycykiKSkKKyAgICByZXR1cm4gbG9jYWxfcGFydCwgdmFsdWUKKworZGVmIGdldF9vYnNfbG9jYWxfcGFydCh2YWx1ZSk6CisgICAgIiIiIG9icy1sb2NhbC1wYXJ0ID0gd29yZCAqKCIuIiB3b3JkKQorICAgICIiIgorICAgIG9ic19sb2NhbF9wYXJ0ID0gT2JzTG9jYWxQYXJ0KCkKKyAgICBsYXN0X25vbl93c193YXNfZG90ID0gRmFsc2UKKyAgICB3aGlsZSB2YWx1ZSBhbmQgKHZhbHVlWzBdPT0nXFwnIG9yIHZhbHVlWzBdIG5vdCBpbiBQSFJBU0VfRU5EUyk6CisgICAgICAgIGlmIHZhbHVlWzBdID09ICcuJzoKKyAgICAgICAgICAgIGlmIGxhc3Rfbm9uX3dzX3dhc19kb3Q6CisgICAgICAgICAgICAgICAgb2JzX2xvY2FsX3BhcnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHJlcGVhdGVkICcuJyIpKQorICAgICAgICAgICAgb2JzX2xvY2FsX3BhcnQuYXBwZW5kKERPVCkKKyAgICAgICAgICAgIGxhc3Rfbm9uX3dzX3dhc19kb3QgPSBUcnVlCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZWxpZiB2YWx1ZVswXT09J1xcJzoKKyAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0LmFwcGVuZChWYWx1ZVRlcm1pbmFsKHZhbHVlWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3BsYWNlZC1zcGVjaWFsJykpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICAgICAgb2JzX2xvY2FsX3BhcnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgIidcXCcgY2hhcmFjdGVyIG91dHNpZGUgb2YgcXVvdGVkLXN0cmluZy9jY29udGVudCIpKQorICAgICAgICAgICAgbGFzdF9ub25fd3Nfd2FzX2RvdCA9IEZhbHNlCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBvYnNfbG9jYWxfcGFydCBhbmQgb2JzX2xvY2FsX3BhcnRbLTFdLnRva2VuX3R5cGUgIT0gJ2RvdCc6CisgICAgICAgICAgICBvYnNfbG9jYWxfcGFydC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAibWlzc2luZyAnLicgYmV0d2VlbiB3b3JkcyIpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfd29yZCh2YWx1ZSkKKyAgICAgICAgICAgIGxhc3Rfbm9uX3dzX3dhc19kb3QgPSBGYWxzZQorICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgICAgICBpZiB2YWx1ZVswXSBub3QgaW4gQ0ZXU19MRUFERVI6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBvYnNfbG9jYWxfcGFydC5hcHBlbmQodG9rZW4pCisgICAgaWYgKG9ic19sb2NhbF9wYXJ0WzBdLnRva2VuX3R5cGUgPT0gJ2RvdCcgb3IKKyAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0WzBdLnRva2VuX3R5cGU9PSdjZndzJyBhbmQKKyAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0WzFdLnRva2VuX3R5cGU9PSdkb3QnKToKKyAgICAgICAgb2JzX2xvY2FsX3BhcnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiSW52YWxpZCBsZWFkaW5nICcuJyBpbiBsb2NhbCBwYXJ0IikpCisgICAgaWYgKG9ic19sb2NhbF9wYXJ0Wy0xXS50b2tlbl90eXBlID09ICdkb3QnIG9yCisgICAgICAgICAgICBvYnNfbG9jYWxfcGFydFstMV0udG9rZW5fdHlwZT09J2Nmd3MnIGFuZAorICAgICAgICAgICAgb2JzX2xvY2FsX3BhcnRbLTJdLnRva2VuX3R5cGU9PSdkb3QnKToKKyAgICAgICAgb2JzX2xvY2FsX3BhcnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiSW52YWxpZCB0cmFpbGluZyAnLicgaW4gbG9jYWwgcGFydCIpKQorICAgIGlmIG9ic19sb2NhbF9wYXJ0LmRlZmVjdHM6CisgICAgICAgIG9ic19sb2NhbF9wYXJ0LnRva2VuX3R5cGUgPSAnaW52YWxpZC1vYnMtbG9jYWwtcGFydCcKKyAgICByZXR1cm4gb2JzX2xvY2FsX3BhcnQsIHZhbHVlCisKK2RlZiBnZXRfZHRleHQodmFsdWUpOgorICAgICIiIiBkdGV4dCA9IDxwcmludGFibGUgYXNjaWkgZXhjZXB0IFwgWyBdPiAvIG9icy1kdGV4dAorICAgICAgICBvYnMtZHRleHQgPSBvYnMtTk8tV1MtQ1RMIC8gcXVvdGVkLXBhaXIKKworICAgIFdlIGFsbG93IGFueXRoaW5nIGV4Y2VwdCB0aGUgZXhjbHVkZWQgY2hhcmFjdGVycywgYnV0IGlmIHdlIGZpbmQgYW55CisgICAgQVNDSUkgb3RoZXIgdGhhbiB0aGUgUkZDIGRlZmluZWQgcHJpbnRhYmxlIEFTQ0lJIGFuIE5vblByaW50YWJsZURlZmVjdCBpcworICAgIGFkZGVkIHRvIHRoZSB0b2tlbidzIGRlZmVjdHMgbGlzdC4gIFF1b3RlZCBwYWlycyBhcmUgY29udmVydGVkIHRvIHRoZWlyCisgICAgdW5xdW90ZWQgdmFsdWVzLCBzbyB3aGF0IGlzIHJldHVybmVkIGlzIGEgcHRleHQgdG9rZW4sIGluIHRoaXMgY2FzZSBhCisgICAgVmFsdWVUZXJtaW5hbC4gIElmIHRoZXJlIHdlcmUgcXVvdGVkLXByaW50YWJsZXMsIGFuIE9ic29sZXRlSGVhZGVyRGVmZWN0IGlzCisgICAgYWRkZWQgdG8gdGhlIHJldHVybmVkIHRva2VuJ3MgZGVmZWN0IGxpc3QuCisKKyAgICAiIiIKKyAgICBwdGV4dCwgdmFsdWUsIGhhZF9xcCA9IF9nZXRfcHRleHRfdG9fZW5kY2hhcnModmFsdWUsICdbXScpCisgICAgcHRleHQgPSBWYWx1ZVRlcm1pbmFsKHB0ZXh0LCAncHRleHQnKQorICAgIGlmIGhhZF9xcDoKKyAgICAgICAgcHRleHQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgInF1b3RlZCBwcmludGFibGUgZm91bmQgaW4gZG9tYWluLWxpdGVyYWwiKSkKKyAgICBfdmFsaWRhdGVfeHRleHQocHRleHQpCisgICAgcmV0dXJuIHB0ZXh0LCB2YWx1ZQorCitkZWYgX2NoZWNrX2Zvcl9lYXJseV9kbF9lbmQodmFsdWUsIGRvbWFpbl9saXRlcmFsKToKKyAgICBpZiB2YWx1ZToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAiZW5kIG9mIGlucHV0IGluc2lkZSBkb21haW4tbGl0ZXJhbCIpKQorICAgIGRvbWFpbl9saXRlcmFsLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCddJywgJ2RvbWFpbi1saXRlcmFsLWVuZCcpKQorICAgIHJldHVybiBUcnVlCisKK2RlZiBnZXRfZG9tYWluX2xpdGVyYWwodmFsdWUpOgorICAgICIiIiBkb21haW4tbGl0ZXJhbCA9IFtDRldTXSAiWyIgKihbRldTXSBkdGV4dCkgW0ZXU10gIl0iIFtDRldTXQorCisgICAgIiIiCisgICAgZG9tYWluX2xpdGVyYWwgPSBEb21haW5MaXRlcmFsKCkKKyAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGRvbWFpbl9saXRlcmFsLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJleHBlY3RlZCBkb21haW4tbGl0ZXJhbCIpCisgICAgaWYgdmFsdWVbMF0gIT0gJ1snOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiZXhwZWN0ZWQgJ1snIGF0IHN0YXJ0IG9mIGRvbWFpbi1saXRlcmFsICIKKyAgICAgICAgICAgICAgICAiYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiBfY2hlY2tfZm9yX2Vhcmx5X2RsX2VuZCh2YWx1ZSwgZG9tYWluX2xpdGVyYWwpOgorICAgICAgICByZXR1cm4gZG9tYWluX2xpdGVyYWwsIHZhbHVlCisgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKFZhbHVlVGVybWluYWwoJ1snLCAnZG9tYWluLWxpdGVyYWwtc3RhcnQnKSkKKyAgICBpZiB2YWx1ZVswXSBpbiBXU1A6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9md3ModmFsdWUpCisgICAgICAgIGRvbWFpbl9saXRlcmFsLmFwcGVuZCh0b2tlbikKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZHRleHQodmFsdWUpCisgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKHRva2VuKQorICAgIGlmIF9jaGVja19mb3JfZWFybHlfZGxfZW5kKHZhbHVlLCBkb21haW5fbGl0ZXJhbCk6CisgICAgICAgIHJldHVybiBkb21haW5fbGl0ZXJhbCwgdmFsdWUKKyAgICBpZiB2YWx1ZVswXSBpbiBXU1A6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9md3ModmFsdWUpCisgICAgICAgIGRvbWFpbl9saXRlcmFsLmFwcGVuZCh0b2tlbikKKyAgICBpZiBfY2hlY2tfZm9yX2Vhcmx5X2RsX2VuZCh2YWx1ZSwgZG9tYWluX2xpdGVyYWwpOgorICAgICAgICByZXR1cm4gZG9tYWluX2xpdGVyYWwsIHZhbHVlCisgICAgaWYgdmFsdWVbMF0gIT0gJ10nOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiZXhwZWN0ZWQgJ10nIGF0IGVuZCBvZiBkb21haW4tbGl0ZXJhbCAiCisgICAgICAgICAgICAgICAgImJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGRvbWFpbl9saXRlcmFsLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCddJywgJ2RvbWFpbi1saXRlcmFsLWVuZCcpKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBkb21haW5fbGl0ZXJhbCwgdmFsdWUKKworZGVmIGdldF9kb21haW4odmFsdWUpOgorICAgICIiIiBkb21haW4gPSBkb3QtYXRvbSAvIGRvbWFpbi1saXRlcmFsIC8gb2JzLWRvbWFpbgorICAgICAgICBvYnMtZG9tYWluID0gYXRvbSAqKCIuIiBhdG9tKSkKKworICAgICIiIgorICAgIGRvbWFpbiA9IERvbWFpbigpCisgICAgbGVhZGVyID0gTm9uZQorICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICBsZWFkZXIsIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBkb21haW4gYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgaWYgdmFsdWVbMF0gPT0gJ1snOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZG9tYWluX2xpdGVyYWwodmFsdWUpCisgICAgICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgICAgIGRvbWFpbi5hcHBlbmQodG9rZW4pCisgICAgICAgIHJldHVybiBkb21haW4sIHZhbHVlCisgICAgdHJ5OgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZG90X2F0b20odmFsdWUpCisgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXRvbSh2YWx1ZSkKKyAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgZG9tYWluLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gJy4nOgorICAgICAgICBkb21haW4uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgImRvbWFpbiBpcyBub3QgYSBkb3QtYXRvbSAoY29udGFpbnMgQ0ZXUykiKSkKKyAgICAgICAgaWYgZG9tYWluWzBdLnRva2VuX3R5cGUgPT0gJ2RvdC1hdG9tJzoKKyAgICAgICAgICAgIGRvbWFpbls6XSA9IGRvbWFpblswXQorICAgICAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gJy4nOgorICAgICAgICAgICAgZG9tYWluLmFwcGVuZChET1QpCisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXRvbSh2YWx1ZVsxOl0pCisgICAgICAgICAgICBkb21haW4uYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBkb21haW4sIHZhbHVlCisKK2RlZiBnZXRfYWRkcl9zcGVjKHZhbHVlKToKKyAgICAiIiIgYWRkci1zcGVjID0gbG9jYWwtcGFydCAiQCIgZG9tYWluCisKKyAgICAiIiIKKyAgICBhZGRyX3NwZWMgPSBBZGRyU3BlYygpCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2xvY2FsX3BhcnQodmFsdWUpCisgICAgYWRkcl9zcGVjLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gJ0AnOgorICAgICAgICBhZGRyX3NwZWMuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiYWRkLXNwZWMgbG9jYWwgcGFydCB3aXRoIG5vIGRvbWFpbiIpKQorICAgICAgICByZXR1cm4gYWRkcl9zcGVjLCB2YWx1ZQorICAgIGFkZHJfc3BlYy5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnQCcsICdhZGRyZXNzLWF0LXN5bWJvbCcpKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb21haW4odmFsdWVbMTpdKQorICAgIGFkZHJfc3BlYy5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGFkZHJfc3BlYywgdmFsdWUKKworZGVmIGdldF9vYnNfcm91dGUodmFsdWUpOgorICAgICIiIiBvYnMtcm91dGUgPSBvYnMtZG9tYWluLWxpc3QgIjoiCisgICAgICAgIG9icy1kb21haW4tbGlzdCA9ICooQ0ZXUyAvICIsIikgIkAiIGRvbWFpbiAqKCIsIiBbQ0ZXU10gWyJAIiBkb21haW5dKQorCisgICAgICAgIFJldHVybnMgYW4gb2JzLXJvdXRlIHRva2VuIHdpdGggdGhlIGFwcHJvcHJpYXRlIHN1Yi10b2tlbnMgKHRoYXQgaXMsCisgICAgICAgIHRoZXJlIGlzIG5vIG9icy1kb21haW4tbGlzdCBpbiB0aGUgcGFyc2UgdHJlZSkuCisgICAgIiIiCisgICAgb2JzX3JvdXRlID0gT2JzUm91dGUoKQorICAgIHdoaWxlIHZhbHVlIGFuZCAodmFsdWVbMF09PScsJyBvciB2YWx1ZVswXSBpbiBDRldTX0xFQURFUik6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgICAgICBvYnNfcm91dGUuYXBwZW5kKHRva2VuKQorICAgICAgICBlbGlmIHZhbHVlWzBdID09ICcsJzoKKyAgICAgICAgICAgIG9ic19yb3V0ZS5hcHBlbmQoTGlzdFNlcGFyYXRvcikKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdICE9ICdAJzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgb2JzLXJvdXRlIGRvbWFpbiBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBvYnNfcm91dGUuYXBwZW5kKFJvdXRlQ29tcG9uZW50TWFya2VyKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb21haW4odmFsdWVbMTpdKQorICAgIG9ic19yb3V0ZS5hcHBlbmQodG9rZW4pCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdPT0nLCc6CisgICAgICAgIG9ic19yb3V0ZS5hcHBlbmQoTGlzdFNlcGFyYXRvcikKKyAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgICAgIG9ic19yb3V0ZS5hcHBlbmQodG9rZW4pCisgICAgICAgIGlmIHZhbHVlWzBdID09ICdAJzoKKyAgICAgICAgICAgIG9ic19yb3V0ZS5hcHBlbmQoUm91dGVDb21wb25lbnRNYXJrZXIpCisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZG9tYWluKHZhbHVlWzE6XSkKKyAgICAgICAgICAgIG9ic19yb3V0ZS5hcHBlbmQodG9rZW4pCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiZW5kIG9mIGhlYWRlciB3aGlsZSBwYXJzaW5nIG9icy1yb3V0ZSIpCisgICAgaWYgdmFsdWVbMF0gIT0gJzonOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvciggImV4cGVjdGVkICc6JyBtYXJraW5nIGVuZCBvZiAiCisgICAgICAgICAgICAib2JzLXJvdXRlIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIG9ic19yb3V0ZS5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnOicsICdlbmQtb2Ytb2JzLXJvdXRlLW1hcmtlcicpKQorICAgIHJldHVybiBvYnNfcm91dGUsIHZhbHVlWzE6XQorCitkZWYgZ2V0X2FuZ2xlX2FkZHIodmFsdWUpOgorICAgICIiIiBhbmdsZS1hZGRyID0gW0NGV1NdICI8IiBhZGRyLXNwZWMgIj4iIFtDRldTXSAvIG9icy1hbmdsZS1hZGRyCisgICAgICAgIG9icy1hbmdsZS1hZGRyID0gW0NGV1NdICI8IiBvYnMtcm91dGUgYWRkci1zcGVjICI+IiBbQ0ZXU10KKworICAgICIiIgorICAgIGFuZ2xlX2FkZHIgPSBBbmdsZUFkZHIoKQorICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgYW5nbGVfYWRkci5hcHBlbmQodG9rZW4pCisgICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdICE9ICc8JzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgYW5nbGUtYWRkciBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBhbmdsZV9hZGRyLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc8JywgJ2FuZ2xlLWFkZHItc3RhcnQnKSkKKyAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICMgQWx0aG91Z2ggaXQgaXMgbm90IGxlZ2FsIHBlciBSRkM1MzIyLCBTTVRQIHVzZXMgJzw+JyBpbiBjZXJ0YWluCisgICAgIyBjaXJjdW1zdGFuY2VzLgorICAgIGlmIHZhbHVlWzBdID09ICc+JzoKKyAgICAgICAgYW5nbGVfYWRkci5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnPicsICdhbmdsZS1hZGRyLWVuZCcpKQorICAgICAgICBhbmdsZV9hZGRyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIm51bGwgYWRkci1zcGVjIGluIGFuZ2xlLWFkZHIiKSkKKyAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgcmV0dXJuIGFuZ2xlX2FkZHIsIHZhbHVlCisgICAgdHJ5OgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYWRkcl9zcGVjKHZhbHVlKQorICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X29ic19yb3V0ZSh2YWx1ZSkKKyAgICAgICAgICAgIGFuZ2xlX2FkZHIuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJvYnNvbGV0ZSByb3V0ZSBzcGVjaWZpY2F0aW9uIGluIGFuZ2xlLWFkZHIiKSkKKyAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAgICAgImV4cGVjdGVkIGFkZHItc3BlYyBvciBvYnMtcm91dGUgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgICAgIGFuZ2xlX2FkZHIuYXBwZW5kKHRva2VuKQorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYWRkcl9zcGVjKHZhbHVlKQorICAgIGFuZ2xlX2FkZHIuYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSA9PSAnPic6CisgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgZWxzZToKKyAgICAgICAgYW5nbGVfYWRkci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJtaXNzaW5nIHRyYWlsaW5nICc+JyBvbiBhbmdsZS1hZGRyIikpCisgICAgYW5nbGVfYWRkci5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnPicsICdhbmdsZS1hZGRyLWVuZCcpKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGFuZ2xlX2FkZHIuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBhbmdsZV9hZGRyLCB2YWx1ZQorCitkZWYgZ2V0X2Rpc3BsYXlfbmFtZSh2YWx1ZSk6CisgICAgIiIiIGRpc3BsYXktbmFtZSA9IHBocmFzZQorCisgICAgQmVjYXVzZSB0aGlzIGlzIHNpbXBseSBhIG5hbWUtcnVsZSwgd2UgZG9uJ3QgcmV0dXJuIGEgZGlzcGxheS1uYW1lCisgICAgdG9rZW4gY29udGFpbmluZyBhIHBocmFzZSwgYnV0IHJhdGhlciBhIGRpc3BsYXktbmFtZSB0b2tlbiB3aXRoCisgICAgdGhlIGNvbnRlbnQgb2YgdGhlIHBocmFzZS4KKworICAgICIiIgorICAgIGRpc3BsYXlfbmFtZSA9IERpc3BsYXlOYW1lKCkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcGhyYXNlKHZhbHVlKQorICAgIGRpc3BsYXlfbmFtZS5leHRlbmQodG9rZW5bOl0pCisgICAgZGlzcGxheV9uYW1lLmRlZmVjdHMgPSB0b2tlbi5kZWZlY3RzWzpdCisgICAgcmV0dXJuIGRpc3BsYXlfbmFtZSwgdmFsdWUKKworCitkZWYgZ2V0X25hbWVfYWRkcih2YWx1ZSk6CisgICAgIiIiIG5hbWUtYWRkciA9IFtkaXNwbGF5LW5hbWVdIGFuZ2xlLWFkZHIKKworICAgICIiIgorICAgIG5hbWVfYWRkciA9IE5hbWVBZGRyKCkKKyAgICAjIEJvdGggdGhlIG9wdGlvbmFsIGRpc3BsYXkgbmFtZSBhbmQgdGhlIGFuZ2xlLWFkZHIgY2FuIHN0YXJ0IHdpdGggY2Z3cy4KKyAgICBsZWFkZXIgPSBOb25lCisgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAgICAgImV4cGVjdGVkIG5hbWUtYWRkciBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KGxlYWRlcikpCisgICAgaWYgdmFsdWVbMF0gIT0gJzwnOgorICAgICAgICBpZiB2YWx1ZVswXSBpbiBQSFJBU0VfRU5EUzoKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgICAgICJleHBlY3RlZCBuYW1lLWFkZHIgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kaXNwbGF5X25hbWUodmFsdWUpCisgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgICAgICJleHBlY3RlZCBuYW1lLWFkZHIgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh0b2tlbikpCisgICAgICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRva2VuWzBdWzowXSA9IFtsZWFkZXJdCisgICAgICAgICAgICBsZWFkZXIgPSBOb25lCisgICAgICAgIG5hbWVfYWRkci5hcHBlbmQodG9rZW4pCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2FuZ2xlX2FkZHIodmFsdWUpCisgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgIG5hbWVfYWRkci5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIG5hbWVfYWRkciwgdmFsdWUKKworZGVmIGdldF9tYWlsYm94KHZhbHVlKToKKyAgICAiIiIgbWFpbGJveCA9IG5hbWUtYWRkciAvIGFkZHItc3BlYworCisgICAgIiIiCisgICAgIyBUaGUgb25seSB3YXkgdG8gZmlndXJlIG91dCBpZiB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgbmFtZS1hZGRyIG9yIGFuCisgICAgIyBhZGRyLXNwZWMgaXMgdG8gdHJ5IHBhcnNpbmcgZWFjaCBvbmUuCisgICAgbWFpbGJveCA9IE1haWxib3goKQorICAgIHRyeToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X25hbWVfYWRkcih2YWx1ZSkKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hZGRyX3NwZWModmFsdWUpCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgICAgICJleHBlY3RlZCBtYWlsYm94IGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGlmIGFueShpc2luc3RhbmNlKHgsIGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiB0b2tlbi5hbGxfZGVmZWN0cyk6CisgICAgICAgIG1haWxib3gudG9rZW5fdHlwZSA9ICdpbnZhbGlkLW1haWxib3gnCisgICAgbWFpbGJveC5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIG1haWxib3gsIHZhbHVlCisKK2RlZiBnZXRfaW52YWxpZF9tYWlsYm94KHZhbHVlLCBlbmRjaGFycyk6CisgICAgIiIiIFJlYWQgZXZlcnl0aGluZyB1cCB0byBvbmUgb2YgdGhlIGNoYXJzIGluIGVuZGNoYXJzLgorCisgICAgVGhpcyBpcyBvdXRzaWRlIHRoZSBmb3JtYWwgZ3JhbW1hci4gIFRoZSBJbnZhbGlkTWFpbGJveCBUb2tlbkxpc3QgdGhhdCBpcworICAgIHJldHVybmVkIGFjdHMgbGlrZSBhIE1haWxib3gsIGJ1dCB0aGUgZGF0YSBhdHRyaWJ1dGVzIGFyZSBOb25lLgorCisgICAgIiIiCisgICAgaW52YWxpZF9tYWlsYm94ID0gSW52YWxpZE1haWxib3goKQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSBub3QgaW4gZW5kY2hhcnM6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIFBIUkFTRV9FTkRTOgorICAgICAgICAgICAgaW52YWxpZF9tYWlsYm94LmFwcGVuZChWYWx1ZVRlcm1pbmFsKHZhbHVlWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNwbGFjZWQtc3BlY2lhbCcpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9waHJhc2UodmFsdWUpCisgICAgICAgICAgICBpbnZhbGlkX21haWxib3guYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBpbnZhbGlkX21haWxib3gsIHZhbHVlCisKK2RlZiBnZXRfbWFpbGJveF9saXN0KHZhbHVlKToKKyAgICAiIiIgbWFpbGJveC1saXN0ID0gKG1haWxib3ggKigiLCIgbWFpbGJveCkpIC8gb2JzLW1ib3gtbGlzdAorICAgICAgICBvYnMtbWJveC1saXN0ID0gKihbQ0ZXU10gIiwiKSBtYWlsYm94ICooIiwiIFttYWlsYm94IC8gQ0ZXU10pCisKKyAgICBGb3IgdGhpcyByb3V0aW5lIHdlIGdvIG91dHNpZGUgdGhlIGZvcm1hbCBncmFtbWFyIGluIG9yZGVyIHRvIGltcHJvdmUgZXJyb3IKKyAgICBoYW5kbGluZy4gIFdlIHJlY29nbml6ZSB0aGUgZW5kIG9mIHRoZSBtYWlsYm94IGxpc3Qgb25seSBhdCB0aGUgZW5kIG9mIHRoZQorICAgIHZhbHVlIG9yIGF0IGEgJzsnICh0aGUgZ3JvdXAgdGVybWluYXRvcikuICBUaGlzIGlzIHNvIHRoYXQgd2UgY2FuIHR1cm4KKyAgICBpbnZhbGlkIG1haWxib3hlcyBpbnRvIEludmFsaWRNYWlsYm94IHRva2VucyBhbmQgY29udGludWUgcGFyc2luZyBhbnkKKyAgICByZW1haW5pbmcgdmFsaWQgbWFpbGJveGVzLiAgV2UgYWxzbyBhbGxvdyBhbGwgbWFpbGJveCBlbnRyaWVzIHRvIGJlIG51bGwsCisgICAgYW5kIHRoaXMgY29uZGl0aW9uIGlzIGhhbmRsZWQgYXBwcm9wcmlhdGVseSBhdCBhIGhpZ2hlciBsZXZlbC4KKworICAgICIiIgorICAgIG1haWxib3hfbGlzdCA9IE1haWxib3hMaXN0KCkKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gJzsnOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfbWFpbGJveCh2YWx1ZSkKKyAgICAgICAgICAgIG1haWxib3hfbGlzdC5hcHBlbmQodG9rZW4pCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgICAgIGxlYWRlciA9IE5vbmUKKyAgICAgICAgICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICAgICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgICAgICAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gaW4gJyw7JzoKKyAgICAgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmFwcGVuZChsZWFkZXIpCisgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAiZW1wdHkgZWxlbWVudCBpbiBtYWlsYm94LWxpc3QiKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfaW52YWxpZF9tYWlsYm94KHZhbHVlLCAnLDsnKQorICAgICAgICAgICAgICAgICAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuYXBwZW5kKHRva2VuKQorICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBtYWlsYm94IGluIG1haWxib3gtbGlzdCIpKQorICAgICAgICAgICAgZWxpZiB2YWx1ZVswXSA9PSAnLCc6CisgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgImVtcHR5IGVsZW1lbnQgaW4gbWFpbGJveC1saXN0IikpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9pbnZhbGlkX21haWxib3godmFsdWUsICcsOycpCisgICAgICAgICAgICAgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBtYWlsYm94IGluIG1haWxib3gtbGlzdCIpKQorICAgICAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gbm90IGluICcsOyc6CisgICAgICAgICAgICAjIENyYXAgYWZ0ZXIgbWFpbGJveDsgdHJlYXQgaXQgYXMgYW4gaW52YWxpZCBtYWlsYm94LgorICAgICAgICAgICAgIyBUaGUgbWFpbGJveCBpbmZvIHdpbGwgc3RpbGwgYmUgYXZhaWxhYmxlLgorICAgICAgICAgICAgbWFpbGJveCA9IG1haWxib3hfbGlzdFstMV0KKyAgICAgICAgICAgIG1haWxib3gudG9rZW5fdHlwZSA9ICdpbnZhbGlkLW1haWxib3gnCisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfaW52YWxpZF9tYWlsYm94KHZhbHVlLCAnLDsnKQorICAgICAgICAgICAgbWFpbGJveC5leHRlbmQodG9rZW4pCisgICAgICAgICAgICBtYWlsYm94X2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgImludmFsaWQgbWFpbGJveCBpbiBtYWlsYm94LWxpc3QiKSkKKyAgICAgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdID09ICcsJzoKKyAgICAgICAgICAgIG1haWxib3hfbGlzdC5hcHBlbmQoTGlzdFNlcGFyYXRvcikKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgcmV0dXJuIG1haWxib3hfbGlzdCwgdmFsdWUKKworCitkZWYgZ2V0X2dyb3VwX2xpc3QodmFsdWUpOgorICAgICIiIiBncm91cC1saXN0ID0gbWFpbGJveC1saXN0IC8gQ0ZXUyAvIG9icy1ncm91cC1saXN0CisgICAgICAgIG9icy1ncm91cC1saXN0ID0gMSooW0NGV1NdICIsIikgW0NGV1NdCisKKyAgICAiIiIKKyAgICBncm91cF9saXN0ID0gR3JvdXBMaXN0KCkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIGdyb3VwX2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiZW5kIG9mIGhlYWRlciBiZWZvcmUgZ3JvdXAtbGlzdCIpKQorICAgICAgICByZXR1cm4gZ3JvdXBfbGlzdCwgdmFsdWUKKyAgICBsZWFkZXIgPSBOb25lCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICBsZWFkZXIsIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgICAgICMgVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIGluIGVtYWlsIHBhcnNpbmcsIHNpbmNlIENGV1Mtb25seSBpcyBhCisgICAgICAgICAgICAjIGxlZ2FsIGFsdGVybmF0aXZlIHRvIGdyb3VwLWxpc3QgaW4gYSBncm91cCwgd2hpY2ggaXMgdGhlIG9ubHkKKyAgICAgICAgICAgICMgcGxhY2UgZ3JvdXAtbGlzdCBhcHBlYXJzLgorICAgICAgICAgICAgZ3JvdXBfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAiZW5kIG9mIGhlYWRlciBpbiBncm91cC1saXN0IikpCisgICAgICAgICAgICBncm91cF9saXN0LmFwcGVuZChsZWFkZXIpCisgICAgICAgICAgICByZXR1cm4gZ3JvdXBfbGlzdCwgdmFsdWUKKyAgICAgICAgaWYgdmFsdWVbMF0gPT0gJzsnOgorICAgICAgICAgICAgZ3JvdXBfbGlzdC5hcHBlbmQobGVhZGVyKQorICAgICAgICAgICAgcmV0dXJuIGdyb3VwX2xpc3QsIHZhbHVlCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X21haWxib3hfbGlzdCh2YWx1ZSkKKyAgICBpZiBsZW4odG9rZW4uYWxsX21haWxib3hlcyk9PTA6CisgICAgICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGdyb3VwX2xpc3QuYXBwZW5kKGxlYWRlcikKKyAgICAgICAgZ3JvdXBfbGlzdC5leHRlbmQodG9rZW4pCisgICAgICAgIGdyb3VwX2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgImdyb3VwLWxpc3Qgd2l0aCBlbXB0eSBlbnRyaWVzIikpCisgICAgICAgIHJldHVybiBncm91cF9saXN0LCB2YWx1ZQorICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICBncm91cF9saXN0LmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gZ3JvdXBfbGlzdCwgdmFsdWUKKworZGVmIGdldF9ncm91cCh2YWx1ZSk6CisgICAgIiIiIGdyb3VwID0gZGlzcGxheS1uYW1lICI6IiBbZ3JvdXAtbGlzdF0gIjsiIFtDRldTXQorCisgICAgIiIiCisgICAgZ3JvdXAgPSBHcm91cCgpCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Rpc3BsYXlfbmFtZSh2YWx1ZSkKKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gJzonOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiZXhwZWN0ZWQgJzonIGF0IGVuZCBvZiBncm91cCAiCisgICAgICAgICAgICAiZGlzcGxheSBuYW1lIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGdyb3VwLmFwcGVuZCh0b2tlbikKKyAgICBncm91cC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnOicsICdncm91cC1kaXNwbGF5LW5hbWUtdGVybWluYXRvcicpKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdID09ICc7JzoKKyAgICAgICAgZ3JvdXAuYXBwZW5kKFZhbHVlVGVybWluYWwoJzsnLCAnZ3JvdXAtdGVybWluYXRvcicpKQorICAgICAgICByZXR1cm4gZ3JvdXAsIHZhbHVlWzE6XQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9ncm91cF9saXN0KHZhbHVlKQorICAgIGdyb3VwLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIGdyb3VwLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgImVuZCBvZiBoZWFkZXIgaW4gZ3JvdXAiKSkKKyAgICBpZiB2YWx1ZVswXSAhPSAnOyc6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkICc7JyBhdCBlbmQgb2YgZ3JvdXAgYnV0IGZvdW5kIHt9Ii5mb3JtYXQodmFsdWUpKQorICAgIGdyb3VwLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc7JywgJ2dyb3VwLXRlcm1pbmF0b3InKSkKKyAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGdyb3VwLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gZ3JvdXAsIHZhbHVlCisKK2RlZiBnZXRfYWRkcmVzcyh2YWx1ZSk6CisgICAgIiIiIGFkZHJlc3MgPSBtYWlsYm94IC8gZ3JvdXAKKworICAgIE5vdGUgdGhhdCBjb3VudGVyLWludHVpdGl2ZWx5LCBhbiBhZGRyZXNzIGNhbiBiZSBlaXRoZXIgYSBzaW5nbGUgYWRkcmVzcyBvcgorICAgIGEgbGlzdCBvZiBhZGRyZXNzZXMgKGEgZ3JvdXApLiAgVGhpcyBpcyB3aHkgdGhlIHJldHVybmVkIEFkZHJlc3Mgb2JqZWN0IGhhcworICAgIGEgJ21haWxib3hlcycgYXR0cmlidXRlIHdoaWNoIHRyZWF0cyBhIHNpbmdsZSBhZGRyZXNzIGFzIGEgbGlzdCBvZiBsZW5ndGgKKyAgICBvbmUuICBXaGVuIHlvdSBuZWVkIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiB0byB0d28gY2FzZXMsIGV4dHJhY3QgdGhlIHNpbmdsZQorICAgIGVsZW1lbnQsIHdoaWNoIGlzIGVpdGhlciBhIG1haWxib3ggb3IgYSBncm91cCB0b2tlbi4KKworICAgICIiIgorICAgICMgVGhlIGZvcm1hbCBncmFtbWFyIGlzbid0IHZlcnkgaGVscGZ1bCB3aGVuIHBhcnNpbmcgYW4gYWRkcmVzcy4gIG1haWxib3gKKyAgICAjIGFuZCBncm91cCwgZXNwZWNpYWxseSB3aGVuIGFsbG93aW5nIGZvciBvYnNvbGV0ZSBmb3Jtcywgc3RhcnQgb2ZmIHZlcnkKKyAgICAjIHNpbWlsYXJseS4gIEl0IGlzIG9ubHkgd2hlbiB5b3UgcmVhY2ggb25lIG9mIEAsIDwsIG9yIDogdGhhdCB5b3Uga25vdworICAgICMgd2hhdCB5b3UndmUgZ290LiAgU28sIHdlIHRyeSBlYWNoIG9uZSBpbiB0dXJuLCBzdGFydGluZyB3aXRoIHRoZSBtb3JlCisgICAgIyBsaWtlbHkgb2YgdGhlIHR3by4gIFdlIGNvdWxkIHBlcmhhcHMgbWFrZSB0aGlzIG1vcmUgZWZmaWNpZW50IGJ5IGxvb2tpbmcKKyAgICAjIGZvciBhIHBocmFzZSBhbmQgdGhlbiBicmFuY2hpbmcgYmFzZWQgb24gdGhlIG5leHQgY2hhcmFjdGVyLCBidXQgdGhhdAorICAgICMgd291bGQgYmUgYSBwcmVtYXR1cmUgb3B0aW1pemF0aW9uLgorICAgIGFkZHJlc3MgPSBBZGRyZXNzKCkKKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9ncm91cCh2YWx1ZSkKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9tYWlsYm94KHZhbHVlKQorICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYWRkcmVzcyBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBhZGRyZXNzLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gYWRkcmVzcywgdmFsdWUKKworZGVmIGdldF9hZGRyZXNzX2xpc3QodmFsdWUpOgorICAgICIiIiBhZGRyZXNzX2xpc3QgPSAoYWRkcmVzcyAqKCIsIiBhZGRyZXNzKSkgLyBvYnMtYWRkci1saXN0CisgICAgICAgIG9icy1hZGRyLWxpc3QgPSAqKFtDRldTXSAiLCIpIGFkZHJlc3MgKigiLCIgW2FkZHJlc3MgLyBDRldTXSkKKworICAgIFdlIGRlcGFydCBmcm9tIHRoZSBmb3JtYWwgZ3JhbW1hciBoZXJlIGJ5IGNvbnRpbnVpbmcgdG8gcGFyc2UgdW50aWwgdGhlIGVuZAorICAgIG9mIHRoZSBpbnB1dCwgYXNzdW1pbmcgdGhlIGlucHV0IHRvIGJlIGVudGlyZWx5IGNvbXBvc2VkIG9mIGFuCisgICAgYWRkcmVzcy1saXN0LiAgVGhpcyBpcyBhbHdheXMgdHJ1ZSBpbiBlbWFpbCBwYXJzaW5nLCBhbmQgYWxsb3dzIHVzCisgICAgdG8gc2tpcCBpbnZhbGlkIGFkZHJlc3NlcyB0byBwYXJzZSBhZGRpdGlvbmFsIHZhbGlkIG9uZXMuCisKKyAgICAiIiIKKyAgICBhZGRyZXNzX2xpc3QgPSBBZGRyZXNzTGlzdCgpCisgICAgd2hpbGUgdmFsdWU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hZGRyZXNzKHZhbHVlKQorICAgICAgICAgICAgYWRkcmVzc19saXN0LmFwcGVuZCh0b2tlbikKKyAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIGxlYWRlciA9IE5vbmUKKyAgICAgICAgICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICAgICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgICAgICAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gPT0gJywnOgorICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYXBwZW5kKGxlYWRlcikKKyAgICAgICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJhZGRyZXNzLWxpc3QgZW50cnkgd2l0aCBubyBjb250ZW50IikpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2ludmFsaWRfbWFpbGJveCh2YWx1ZSwgJywnKQorICAgICAgICAgICAgICAgICAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYXBwZW5kKEFkZHJlc3MoW3Rva2VuXSkpCisgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGFkZHJlc3MgaW4gYWRkcmVzcy1saXN0IikpCisgICAgICAgICAgICBlbGlmIHZhbHVlWzBdID09ICcsJzoKKyAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAiZW1wdHkgZWxlbWVudCBpbiBhZGRyZXNzLWxpc3QiKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2ludmFsaWRfbWFpbGJveCh2YWx1ZSwgJywnKQorICAgICAgICAgICAgICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYXBwZW5kKEFkZHJlc3MoW3Rva2VuXSkpCisgICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBhZGRyZXNzIGluIGFkZHJlc3MtbGlzdCIpKQorICAgICAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gJywnOgorICAgICAgICAgICAgIyBDcmFwIGFmdGVyIGFkZHJlc3M7IHRyZWF0IGl0IGFzIGFuIGludmFsaWQgbWFpbGJveC4KKyAgICAgICAgICAgICMgVGhlIG1haWxib3ggaW5mbyB3aWxsIHN0aWxsIGJlIGF2YWlsYWJsZS4KKyAgICAgICAgICAgIG1haWxib3ggPSBhZGRyZXNzX2xpc3RbLTFdWzBdCisgICAgICAgICAgICBtYWlsYm94LnRva2VuX3R5cGUgPSAnaW52YWxpZC1tYWlsYm94JworICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2ludmFsaWRfbWFpbGJveCh2YWx1ZSwgJywnKQorICAgICAgICAgICAgbWFpbGJveC5leHRlbmQodG9rZW4pCisgICAgICAgICAgICBhZGRyZXNzX2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgImludmFsaWQgYWRkcmVzcyBpbiBhZGRyZXNzLWxpc3QiKSkKKyAgICAgICAgaWYgdmFsdWU6ICAjIE11c3QgYmUgYSAsIGF0IHRoaXMgcG9pbnQuCisgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYXBwZW5kKFZhbHVlVGVybWluYWwoJywnLCAnbGlzdC1zZXBhcmF0b3InKSkKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgcmV0dXJuIGFkZHJlc3NfbGlzdCwgdmFsdWUKKworIworIyBYWFg6IEFzIEkgYmVnaW4gdG8gYWRkIGFkZGl0aW9uYWwgaGVhZGVyIHBhcnNlcnMsIEknbSByZWFsaXppbmcgd2UgcHJvYmFibHkKKyMgaGF2ZSB0d28gbGV2ZWwgb2YgcGFyc2VyIHJvdXRpbmVzOiB0aGUgZ2V0X1hYWCBtZXRob2RzIHRoYXQgZ2V0IGEgdG9rZW4gaW4KKyMgdGhlIGdyYW1tYXIsIGFuZCBwYXJzZV9YWFggbWV0aG9kcyB0aGF0IHBhcnNlIGFuIGVudGlyZSBmaWVsZCB2YWx1ZS4gIFNvCisjIGdldF9hZGRyZXNzX2xpc3QgYWJvdmUgc2hvdWxkIHJlYWxseSBiZSBhIHBhcnNlXyBtZXRob2QsIGFzIHByb2JhYmx5IHNob3VsZAorIyBiZSBnZXRfdW5zdHJ1Y3R1cmVkLgorIworCitkZWYgcGFyc2VfbWltZV92ZXJzaW9uKHZhbHVlKToKKyAgICAiIiIgbWltZS12ZXJzaW9uID0gW0NGV1NdIDEqZGlnaXQgW0NGV1NdICIuIiBbQ0ZXU10gMSpkaWdpdCBbQ0ZXU10KKworICAgICIiIgorICAgICMgVGhlIFtDRldTXSBpcyBpbXBsaWNpdCBpbiB0aGUgUkZDIDIwNDUgQk5GLgorICAgICMgWFhYOiBUaGlzIHJvdXRpbmUgaXMgYSBiaXQgdmVyYm9zZSwgc2hvdWxkIGZhY3RvciBvdXQgYSBnZXRfaW50IG1ldGhvZC4KKyAgICBtaW1lX3ZlcnNpb24gPSBNSU1FVmVyc2lvbigpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICBtaW1lX3ZlcnNpb24uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlKAorICAgICAgICAgICAgIk1pc3NpbmcgTUlNRSB2ZXJzaW9uIG51bWJlciAoZWc6IDEuMCkiKSkKKyAgICAgICAgcmV0dXJuIG1pbWVfdmVyc2lvbgorICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZCh0b2tlbikKKyAgICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAgbWltZV92ZXJzaW9uLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZSgKKyAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgTUlNRSB2ZXJzaW9uIG51bWJlciBidXQgZm91bmQgb25seSBDRldTIikpCisgICAgZGlnaXRzID0gJycKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gJy4nIGFuZCB2YWx1ZVswXSBub3QgaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGRpZ2l0cyArPSB2YWx1ZVswXQorICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIG5vdCBkaWdpdHMuaXNkaWdpdCgpOgorICAgICAgICBtaW1lX3ZlcnNpb24uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiRXhwZWN0ZWQgTUlNRSBtYWpvciB2ZXJzaW9uIG51bWJlciBidXQgZm91bmQgeyFyfSIuZm9ybWF0KGRpZ2l0cykpKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoZGlnaXRzLCAneHRleHQnKSkKKyAgICBlbHNlOgorICAgICAgICBtaW1lX3ZlcnNpb24ubWFqb3IgPSBpbnQoZGlnaXRzKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoZGlnaXRzLCAnZGlnaXRzJykpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gJy4nOgorICAgICAgICBpZiBtaW1lX3ZlcnNpb24ubWFqb3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBtaW1lX3ZlcnNpb24uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgIkluY29tcGxldGUgTUlNRSB2ZXJzaW9uOyBmb3VuZCBvbmx5IG1ham9yIG51bWJlciIpKQorICAgICAgICBpZiB2YWx1ZToKKyAgICAgICAgICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQoVmFsdWVUZXJtaW5hbCh2YWx1ZSwgJ3h0ZXh0JykpCisgICAgICAgIHJldHVybiBtaW1lX3ZlcnNpb24KKyAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoJy4nLCAndmVyc2lvbi1zZXBhcmF0b3InKSkKKyAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQodG9rZW4pCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICBpZiBtaW1lX3ZlcnNpb24ubWFqb3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBtaW1lX3ZlcnNpb24uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgIkluY29tcGxldGUgTUlNRSB2ZXJzaW9uOyBmb3VuZCBvbmx5IG1ham9yIG51bWJlciIpKQorICAgICAgICByZXR1cm4gbWltZV92ZXJzaW9uCisgICAgZGlnaXRzID0gJycKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gbm90IGluIENGV1NfTEVBREVSOgorICAgICAgICBkaWdpdHMgKz0gdmFsdWVbMF0KKyAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiBub3QgZGlnaXRzLmlzZGlnaXQoKToKKyAgICAgICAgbWltZV92ZXJzaW9uLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkV4cGVjdGVkIE1JTUUgbWlub3IgdmVyc2lvbiBudW1iZXIgYnV0IGZvdW5kIHshcn0iLmZvcm1hdChkaWdpdHMpKSkKKyAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZChWYWx1ZVRlcm1pbmFsKGRpZ2l0cywgJ3h0ZXh0JykpCisgICAgZWxzZToKKyAgICAgICAgbWltZV92ZXJzaW9uLm1pbm9yID0gaW50KGRpZ2l0cykKKyAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZChWYWx1ZVRlcm1pbmFsKGRpZ2l0cywgJ2RpZ2l0cycpKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWU6CisgICAgICAgIG1pbWVfdmVyc2lvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJFeGNlc3Mgbm9uLUNGV1MgdGV4dCBhZnRlciBNSU1FIHZlcnNpb24iKSkKKyAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZChWYWx1ZVRlcm1pbmFsKHZhbHVlLCAneHRleHQnKSkKKyAgICByZXR1cm4gbWltZV92ZXJzaW9uCisKK2RlZiBnZXRfaW52YWxpZF9wYXJhbWV0ZXIodmFsdWUpOgorICAgICIiIiBSZWFkIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlIG5leHQgJzsnLgorCisgICAgVGhpcyBpcyBvdXRzaWRlIHRoZSBmb3JtYWwgZ3JhbW1hci4gIFRoZSBJbnZhbGlkUGFyYW1ldGVyIFRva2VuTGlzdCB0aGF0IGlzCisgICAgcmV0dXJuZWQgYWN0cyBsaWtlIGEgUGFyYW1ldGVyLCBidXQgdGhlIGRhdGEgYXR0cmlidXRlcyBhcmUgTm9uZS4KKworICAgICIiIgorICAgIGludmFsaWRfcGFyYW1ldGVyID0gSW52YWxpZFBhcmFtZXRlcigpCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICc7JzoKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gUEhSQVNFX0VORFM6CisgICAgICAgICAgICBpbnZhbGlkX3BhcmFtZXRlci5hcHBlbmQoVmFsdWVUZXJtaW5hbCh2YWx1ZVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNwbGFjZWQtc3BlY2lhbCcpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9waHJhc2UodmFsdWUpCisgICAgICAgICAgICBpbnZhbGlkX3BhcmFtZXRlci5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGludmFsaWRfcGFyYW1ldGVyLCB2YWx1ZQorCitkZWYgZ2V0X3R0ZXh0KHZhbHVlKToKKyAgICAiIiJ0dGV4dCA9IDxtYXRjaGVzIF90dGV4dF9tYXRjaGVyPgorCisgICAgV2UgYWxsb3cgYW55IG5vbi1UT0tFTl9FTkRTIGluIHR0ZXh0LCBidXQgYWRkIGRlZmVjdHMgdG8gdGhlIHRva2VuJ3MKKyAgICBkZWZlY3RzIGxpc3QgaWYgd2UgZmluZCBub24tdHRleHQgY2hhcmFjdGVycy4gIFdlIGFsc28gcmVnaXN0ZXIgZGVmZWN0cyBmb3IKKyAgICAqYW55KiBub24tcHJpbnRhYmxlcyBldmVuIHRob3VnaCB0aGUgUkZDIGRvZXNuJ3QgZXhjbHVkZSBhbGwgb2YgdGhlbSwKKyAgICBiZWNhdXNlIHdlIGZvbGxvdyB0aGUgc3Bpcml0IG9mIFJGQyA1MzIyLgorCisgICAgIiIiCisgICAgbSA9IF9ub25fdG9rZW5fZW5kX21hdGNoZXIodmFsdWUpCisgICAgaWYgbm90IG06CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIHR0ZXh0IGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIHR0ZXh0ID0gbS5ncm91cCgpCisgICAgdmFsdWUgPSB2YWx1ZVtsZW4odHRleHQpOl0KKyAgICB0dGV4dCA9IFZhbHVlVGVybWluYWwodHRleHQsICd0dGV4dCcpCisgICAgX3ZhbGlkYXRlX3h0ZXh0KHR0ZXh0KQorICAgIHJldHVybiB0dGV4dCwgdmFsdWUKKworZGVmIGdldF90b2tlbih2YWx1ZSk6CisgICAgIiIidG9rZW4gPSBbQ0ZXU10gMSp0dGV4dCBbQ0ZXU10KKworICAgIFRoZSBSRkMgZXF1aXZhbGVudCBvZiB0dGV4dCBpcyBhbnkgVVMtQVNDSUkgY2hhcnMgZXhjZXB0IHNwYWNlLCBjdGxzLCBvcgorICAgIHRzcGVjaWFscy4gIFdlIGFsc28gZXhjbHVkZSB0YWJzIGV2ZW4gdGhvdWdoIHRoZSBSRkMgZG9lc24ndC4KKworICAgIFRoZSBSRkMgaW1wbGllcyB0aGUgQ0ZXUyBidXQgaXMgbm90IGV4cGxpY2l0IGFib3V0IGl0IGluIHRoZSBCTkYuCisKKyAgICAiIiIKKyAgICBtdG9rZW4gPSBUb2tlbigpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgbXRva2VuLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gVE9LRU5fRU5EUzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgdG9rZW4gYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3R0ZXh0KHZhbHVlKQorICAgIG10b2tlbi5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgbXRva2VuLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gbXRva2VuLCB2YWx1ZQorCitkZWYgZ2V0X2F0dHJ0ZXh0KHZhbHVlKToKKyAgICAiIiJhdHRydGV4dCA9IDEqKGFueSBub24tQVRUUklCVVRFX0VORFMgY2hhcmFjdGVyKQorCisgICAgV2UgYWxsb3cgYW55IG5vbi1BVFRSSUJVVEVfRU5EUyBpbiBhdHRydGV4dCwgYnV0IGFkZCBkZWZlY3RzIHRvIHRoZQorICAgIHRva2VuJ3MgZGVmZWN0cyBsaXN0IGlmIHdlIGZpbmQgbm9uLWF0dHJ0ZXh0IGNoYXJhY3RlcnMuICBXZSBhbHNvIHJlZ2lzdGVyCisgICAgZGVmZWN0cyBmb3IgKmFueSogbm9uLXByaW50YWJsZXMgZXZlbiB0aG91Z2ggdGhlIFJGQyBkb2Vzbid0IGV4Y2x1ZGUgYWxsIG9mCisgICAgdGhlbSwgYmVjYXVzZSB3ZSBmb2xsb3cgdGhlIHNwaXJpdCBvZiBSRkMgNTMyMi4KKworICAgICIiIgorICAgIG0gPSBfbm9uX2F0dHJpYnV0ZV9lbmRfbWF0Y2hlcih2YWx1ZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgYXR0cnRleHQgYnV0IGZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpCisgICAgYXR0cnRleHQgPSBtLmdyb3VwKCkKKyAgICB2YWx1ZSA9IHZhbHVlW2xlbihhdHRydGV4dCk6XQorICAgIGF0dHJ0ZXh0ID0gVmFsdWVUZXJtaW5hbChhdHRydGV4dCwgJ2F0dHJ0ZXh0JykKKyAgICBfdmFsaWRhdGVfeHRleHQoYXR0cnRleHQpCisgICAgcmV0dXJuIGF0dHJ0ZXh0LCB2YWx1ZQorCitkZWYgZ2V0X2F0dHJpYnV0ZSh2YWx1ZSk6CisgICAgIiIiIFtDRldTXSAxKmF0dHJ0ZXh0IFtDRldTXQorCisgICAgVGhpcyB2ZXJzaW9uIG9mIHRoZSBCTkYgbWFrZXMgdGhlIENGV1MgZXhwbGljaXQsIGFuZCBhcyB1c3VhbCB3ZSB1c2UgYQorICAgIHZhbHVlIHRlcm1pbmFsIGZvciB0aGUgYWN0dWFsIHJ1biBvZiBjaGFyYWN0ZXJzLiAgVGhlIFJGQyBlcXVpdmFsZW50IG9mCisgICAgYXR0cnRleHQgaXMgdGhlIHRva2VuIGNoYXJhY3RlcnMsIHdpdGggdGhlIHN1YnRyYWN0aW9uIG9mICcqJywgIiciLCBhbmQgJyUnLgorICAgIFdlIGluY2x1ZGUgdGFiIGluIHRoZSBleGNsdWRlZCBzZXQganVzdCBhcyB3ZSBkbyBmb3IgdG9rZW4uCisKKyAgICAiIiIKKyAgICBhdHRyaWJ1dGUgPSBBdHRyaWJ1dGUoKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGF0dHJpYnV0ZS5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIEFUVFJJQlVURV9FTkRTOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCB0b2tlbiBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXR0cnRleHQodmFsdWUpCisgICAgYXR0cmlidXRlLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBhdHRyaWJ1dGUuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBhdHRyaWJ1dGUsIHZhbHVlCisKK2RlZiBnZXRfZXh0ZW5kZWRfYXR0cnRleHQodmFsdWUpOgorICAgICIiImF0dHJ0ZXh0ID0gMSooYW55IG5vbi1BVFRSSUJVVEVfRU5EUyBjaGFyYWN0ZXIgcGx1cyAnJScpCisKKyAgICBUaGlzIGlzIGEgc3BlY2lhbCBwYXJzaW5nIHJvdXRpbmUgc28gdGhhdCB3ZSBnZXQgYSB2YWx1ZSB0aGF0CisgICAgaW5jbHVkZXMgJSBlc2NhcGVzIGFzIGEgc2luZ2xlIHN0cmluZyAod2hpY2ggd2UgZGVjb2RlIGFzIGEgc2luZ2xlCisgICAgc3RyaW5nIGxhdGVyKS4KKworICAgICIiIgorICAgIG0gPSBfbm9uX2V4dGVuZGVkX2F0dHJpYnV0ZV9lbmRfbWF0Y2hlcih2YWx1ZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgZXh0ZW5kZWQgYXR0cnRleHQgYnV0IGZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpCisgICAgYXR0cnRleHQgPSBtLmdyb3VwKCkKKyAgICB2YWx1ZSA9IHZhbHVlW2xlbihhdHRydGV4dCk6XQorICAgIGF0dHJ0ZXh0ID0gVmFsdWVUZXJtaW5hbChhdHRydGV4dCwgJ2V4dGVuZGVkLWF0dHJ0ZXh0JykKKyAgICBfdmFsaWRhdGVfeHRleHQoYXR0cnRleHQpCisgICAgcmV0dXJuIGF0dHJ0ZXh0LCB2YWx1ZQorCitkZWYgZ2V0X2V4dGVuZGVkX2F0dHJpYnV0ZSh2YWx1ZSk6CisgICAgIiIiIFtDRldTXSAxKmV4dGVuZGVkX2F0dHJ0ZXh0IFtDRldTXQorCisgICAgVGhpcyBpcyBsaWtlIHRoZSBub24tZXh0ZW5kZWQgdmVyc2lvbiBleGNlcHQgd2UgYWxsb3cgJSBjaGFyYWN0ZXJzLCBzbyB0aGF0CisgICAgd2UgY2FuIHBpY2sgdXAgYW4gZW5jb2RlZCB2YWx1ZSBhcyBhIHNpbmdsZSBzdHJpbmcuCisKKyAgICAiIiIKKyAgICAjIFhYWDogc2hvdWxkIHdlIGhhdmUgYW4gRXh0ZW5kZWRBdHRyaWJ1dGUgVG9rZW5MaXN0PworICAgIGF0dHJpYnV0ZSA9IEF0dHJpYnV0ZSgpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgYXR0cmlidXRlLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gRVhURU5ERURfQVRUUklCVVRFX0VORFM6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIHRva2VuIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9leHRlbmRlZF9hdHRydGV4dCh2YWx1ZSkKKyAgICBhdHRyaWJ1dGUuYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGF0dHJpYnV0ZS5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGF0dHJpYnV0ZSwgdmFsdWUKKworZGVmIGdldF9zZWN0aW9uKHZhbHVlKToKKyAgICAiIiIgJyonIGRpZ2l0cworCisgICAgVGhlIGZvcm1hbCBCTkYgaXMgbW9yZSBjb21wbGljYXRlZCBiZWNhdXNlIGxlYWRpbmcgMHMgYXJlIG5vdCBhbGxvd2VkLiAgV2UKKyAgICBjaGVjayBmb3IgdGhhdCBhbmQgYWRkIGEgZGVmZWN0LiAgV2UgYWxzbyBhc3N1bWUgbm8gQ0ZXUyBpcyBhbGxvd2VkIGJldHdlZW4KKyAgICB0aGUgJyonIGFuZCB0aGUgZGlnaXRzLCB0aG91Z2ggdGhlIFJGQyBpcyBub3QgY3J5c3RhbCBjbGVhciBvbiB0aGF0LgorICAgIFRoZSBjYWxsZXIgc2hvdWxkIGFscmVhZHkgaGF2ZSBkZWFsdCB3aXRoIGxlYWRpbmcgQ0ZXUy4KKworICAgICIiIgorICAgIHNlY3Rpb24gPSBTZWN0aW9uKCkKKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gJyonOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiRXhwZWN0ZWQgc2VjdGlvbiBidXQgZm91bmQge30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSkpCisgICAgc2VjdGlvbi5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnKicsICdzZWN0aW9uLW1hcmtlcicpKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgbm90IHZhbHVlIG9yIG5vdCB2YWx1ZVswXS5pc2RpZ2l0KCk6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJFeHBlY3RlZCBzZWN0aW9uIG51bWJlciBidXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm91bmQge30iLmZvcm1hdCh2YWx1ZSkpCisgICAgZGlnaXRzID0gJycKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0uaXNkaWdpdCgpOgorICAgICAgICBkaWdpdHMgKz0gdmFsdWVbMF0KKyAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiBkaWdpdHNbMF0gPT0gJzAnIGFuZCBkaWdpdHMgIT0gJzAnOgorICAgICAgICBzZWN0aW9uLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRXJyb3IoInNlY3Rpb24gbnVtYmVyIgorICAgICAgICAgICAgImhhcyBhbiBpbnZhbGlkIGxlYWRpbmcgMCIpKQorICAgIHNlY3Rpb24ubnVtYmVyID0gaW50KGRpZ2l0cykKKyAgICBzZWN0aW9uLmFwcGVuZChWYWx1ZVRlcm1pbmFsKGRpZ2l0cywgJ2RpZ2l0cycpKQorICAgIHJldHVybiBzZWN0aW9uLCB2YWx1ZQorCisKK2RlZiBnZXRfdmFsdWUodmFsdWUpOgorICAgICIiIiBxdW90ZWQtc3RyaW5nIC8gYXR0cmlidXRlCisKKyAgICAiIiIKKyAgICB2ID0gVmFsdWUoKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkIHZhbHVlIGJ1dCBmb3VuZCBlbmQgb2Ygc3RyaW5nIikKKyAgICBsZWFkZXIgPSBOb25lCisgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJFeHBlY3RlZCB2YWx1ZSBidXQgZm91bmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib25seSB7fSIuZm9ybWF0KGxlYWRlcikpCisgICAgaWYgdmFsdWVbMF0gPT0gJyInOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcXVvdGVkX3N0cmluZyh2YWx1ZSkKKyAgICBlbHNlOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZXh0ZW5kZWRfYXR0cmlidXRlKHZhbHVlKQorICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICB2LmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gdiwgdmFsdWUKKworZGVmIGdldF9wYXJhbWV0ZXIodmFsdWUpOgorICAgICIiIiBhdHRyaWJ1dGUgW3NlY3Rpb25dIFsiKiJdIFtDRldTXSAiPSIgdmFsdWUKKworICAgIFRoZSBDRldTIGlzIGltcGxpZWQgYnkgdGhlIFJGQyBidXQgbm90IG1hZGUgZXhwbGljaXQgaW4gdGhlIEJORi4gIFRoaXMKKyAgICBzaW1wbGlmaWVkIGZvcm0gb2YgdGhlIEJORiBmcm9tIHRoZSBSRkMgaXMgbWFkZSB0byBjb25mb3JtIHdpdGggdGhlIFJGQyBCTkYKKyAgICB0aHJvdWdoIHNvbWUgZXh0cmEgY2hlY2tzLiAgV2UgZG8gaXQgdGhpcyB3YXkgYmVjYXVzZSBpdCBtYWtlcyBib3RoIGVycm9yCisgICAgcmVjb3ZlcnkgYW5kIHdvcmtpbmcgd2l0aCB0aGUgcmVzdWx0aW5nIHBhcnNlIHRyZWUgZWFzaWVyLgorICAgICIiIgorICAgICMgSXQgaXMgcG9zc2libGUgQ0ZXUyB3b3VsZCBhbHNvIGJlIGltcGxpY2l0bHkgYWxsb3dlZCBiZXR3ZWVuIHRoZSBzZWN0aW9uCisgICAgIyBhbmQgdGhlICdleHRlbmRlZC1hdHRyaWJ1dGUnIG1hcmtlciAodGhlICcqJykgLCBidXQgd2UndmUgbmV2ZXIgc2VlbiB0aGF0CisgICAgIyBpbiB0aGUgd2lsZCBhbmQgd2Ugd2lsbCB0aGVyZWZvcmUgaWdub3JlIHRoZSBwb3NzaWJpbGl0eS4KKyAgICBwYXJhbSA9IFBhcmFtZXRlcigpCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2F0dHJpYnV0ZSh2YWx1ZSkKKyAgICBwYXJhbS5hcHBlbmQodG9rZW4pCisgICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdID09ICc7JzoKKyAgICAgICAgcGFyYW0uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoIlBhcmFtZXRlciBjb250YWlucyAiCisgICAgICAgICAgICAibmFtZSAoe30pIGJ1dCBubyB2YWx1ZSIuZm9ybWF0KHRva2VuKSkpCisgICAgICAgIHJldHVybiBwYXJhbSwgdmFsdWUKKyAgICBpZiB2YWx1ZVswXSA9PSAnKic6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9zZWN0aW9uKHZhbHVlKQorICAgICAgICAgICAgcGFyYW0uc2VjdGlvbmVkID0gVHJ1ZQorICAgICAgICAgICAgcGFyYW0uYXBwZW5kKHRva2VuKQorICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJJbmNvbXBsZXRlIHBhcmFtZXRlciIpCisgICAgICAgIGlmIHZhbHVlWzBdID09ICcqJzoKKyAgICAgICAgICAgIHBhcmFtLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCcqJywgJ2V4dGVuZGVkLXBhcmFtZXRlci1tYXJrZXInKSkKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgICAgICAgICBwYXJhbS5leHRlbmRlZCA9IFRydWUKKyAgICBpZiB2YWx1ZVswXSAhPSAnPSc6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJQYXJhbWV0ZXIgbm90IGZvbGxvd2VkIGJ5ICc9JyIpCisgICAgcGFyYW0uYXBwZW5kKFZhbHVlVGVybWluYWwoJz0nLCAncGFyYW1ldGVyLXNlcGFyYXRvcicpKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgbGVhZGVyID0gTm9uZQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIHBhcmFtLmFwcGVuZCh0b2tlbikKKyAgICByZW1haW5kZXIgPSBOb25lCisgICAgYXBwZW5kdG8gPSBwYXJhbQorICAgIGlmIHBhcmFtLmV4dGVuZGVkIGFuZCB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gJyInOgorICAgICAgICAjIE5vdyBmb3Igc29tZSBzZXJpb3VzIGhhY2tlcnkgdG8gaGFuZGxlIHRoZSBjb21tb24gaW52YWxpZCBjYXNlIG9mCisgICAgICAgICMgZG91YmxlIHF1b3RlcyBhcm91bmQgYW4gZXh0ZW5kZWQgdmFsdWUuICBXZSBhbHNvIGFjY2VwdCAod2l0aCBkZWZlY3QpCisgICAgICAgICMgYSB2YWx1ZSBtYXJrZWQgYXMgZW5jb2RlZCB0aGF0IGlzbid0IHJlYWxseS4KKyAgICAgICAgcXN0cmluZywgcmVtYWluZGVyID0gZ2V0X3F1b3RlZF9zdHJpbmcodmFsdWUpCisgICAgICAgIGlubmVyX3ZhbHVlID0gcXN0cmluZy5zdHJpcHBlZF92YWx1ZQorICAgICAgICBzZW1pX3ZhbGlkID0gRmFsc2UKKyAgICAgICAgaWYgcGFyYW0uc2VjdGlvbl9udW1iZXIgPT0gMDoKKyAgICAgICAgICAgIGlmIGlubmVyX3ZhbHVlIGFuZCBpbm5lcl92YWx1ZVswXSA9PSAiJyI6CisgICAgICAgICAgICAgICAgc2VtaV92YWxpZCA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdG9rZW4sIHJlc3QgPSBnZXRfYXR0cnRleHQoaW5uZXJfdmFsdWUpCisgICAgICAgICAgICAgICAgaWYgcmVzdCBhbmQgcmVzdFswXSA9PSAiJyI6CisgICAgICAgICAgICAgICAgICAgIHNlbWlfdmFsaWQgPSBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdG9rZW4sIHJlc3QgPSBnZXRfZXh0ZW5kZWRfYXR0cnRleHQoaW5uZXJfdmFsdWUpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBub3QgcmVzdDoKKyAgICAgICAgICAgICAgICAgICAgc2VtaV92YWxpZCA9IFRydWUKKyAgICAgICAgaWYgc2VtaV92YWxpZDoKKyAgICAgICAgICAgIHBhcmFtLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJRdW90ZWQgc3RyaW5nIHZhbHVlIGZvciBleHRlbmRlZCBwYXJhbWV0ZXIgaXMgaW52YWxpZCIpKQorICAgICAgICAgICAgcGFyYW0uYXBwZW5kKHFzdHJpbmcpCisgICAgICAgICAgICBmb3IgdCBpbiBxc3RyaW5nOgorICAgICAgICAgICAgICAgIGlmIHQudG9rZW5fdHlwZSA9PSAnYmFyZS1xdW90ZWQtc3RyaW5nJzoKKyAgICAgICAgICAgICAgICAgICAgdFs6XSA9IFtdCisgICAgICAgICAgICAgICAgICAgIGFwcGVuZHRvID0gdAorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgdmFsdWUgPSBpbm5lcl92YWx1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVtYWluZGVyID0gTm9uZQorICAgICAgICAgICAgcGFyYW0uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgIlBhcmFtZXRlciBtYXJrZWQgYXMgZXh0ZW5kZWQgYnV0IGFwcGVhcnMgdG8gaGF2ZSBhICIKKyAgICAgICAgICAgICAgICAicXVvdGVkIHN0cmluZyB2YWx1ZSB0aGF0IGlzIG5vbi1lbmNvZGVkIikpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdID09ICInIjoKKyAgICAgICAgdG9rZW4gPSBOb25lCisgICAgZWxzZToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3ZhbHVlKHZhbHVlKQorICAgIGlmIG5vdCBwYXJhbS5leHRlbmRlZCBvciBwYXJhbS5zZWN0aW9uX251bWJlciA+IDA6CisgICAgICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAiJyI6CisgICAgICAgICAgICBhcHBlbmR0by5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICBpZiByZW1haW5kZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCB2YWx1ZSwgdmFsdWUKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHJlbWFpbmRlcgorICAgICAgICAgICAgcmV0dXJuIHBhcmFtLCB2YWx1ZQorICAgICAgICBwYXJhbS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJBcHBhcmVudCBpbml0aWFsLWV4dGVuZGVkLXZhbHVlIGJ1dCBhdHRyaWJ1dGUgIgorICAgICAgICAgICAgIndhcyBub3QgbWFya2VkIGFzIGV4dGVuZGVkIG9yIHdhcyBub3QgaW5pdGlhbCBzZWN0aW9uIikpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAjIEFzc3VtZSB0aGUgY2hhcnNldC9sYW5nIGlzIG1pc3NpbmcgYW5kIHRoZSB0b2tlbiBpcyB0aGUgdmFsdWUuCisgICAgICAgIHBhcmFtLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIk1pc3NpbmcgcmVxdWlyZWQgY2hhcnNldC9sYW5nIGRlbGltaXRlcnMiKSkKKyAgICAgICAgYXBwZW5kdG8uYXBwZW5kKHRva2VuKQorICAgICAgICBpZiByZW1haW5kZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBwYXJhbSwgdmFsdWUKKyAgICBlbHNlOgorICAgICAgICBpZiB0b2tlbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZvciB0IGluIHRva2VuOgorICAgICAgICAgICAgICAgIGlmIHQudG9rZW5fdHlwZSA9PSAnZXh0ZW5kZWQtYXR0cnRleHQnOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgdC50b2tlbl90eXBlID09ICdhdHRydGV4dCcKKyAgICAgICAgICAgIGFwcGVuZHRvLmFwcGVuZCh0KQorICAgICAgICAgICAgcGFyYW0uY2hhcnNldCA9IHQudmFsdWUKKyAgICAgICAgaWYgdmFsdWVbMF0gIT0gIiciOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkIFJGQzIyMzEgY2hhci9sYW5nIGVuY29kaW5nICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxpbWl0ZXIsIGJ1dCBmb3VuZCB7IXJ9Ii5mb3JtYXQodmFsdWUpKQorICAgICAgICBhcHBlbmR0by5hcHBlbmQoVmFsdWVUZXJtaW5hbCgiJyIsICdSRkMyMjMxIGRlbGltaXRlcicpKQorICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gIiciOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2F0dHJ0ZXh0KHZhbHVlKQorICAgICAgICAgICAgYXBwZW5kdG8uYXBwZW5kKHRva2VuKQorICAgICAgICAgICAgcGFyYW0ubGFuZyA9IHRva2VuLnZhbHVlCisgICAgICAgICAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gIiciOgorICAgICAgICAgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJFeHBlY3RlZCBSRkMyMjMxIGNoYXIvbGFuZyBlbmNvZGluZyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbGltaXRlciwgYnV0IGZvdW5kIHt9Ii5mb3JtYXQodmFsdWUpKQorICAgICAgICBhcHBlbmR0by5hcHBlbmQoVmFsdWVUZXJtaW5hbCgiJyIsICdSRkMyMjMxIGRlbGltaXRlcicpKQorICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIHJlbWFpbmRlciBpcyBub3QgTm9uZToKKyAgICAgICAgIyBUcmVhdCB0aGUgcmVzdCBvZiB2YWx1ZSBhcyBiYXJlIHF1b3RlZCBzdHJpbmcgY29udGVudC4KKyAgICAgICAgdiA9IFZhbHVlKCkKKyAgICAgICAgd2hpbGUgdmFsdWU6CisgICAgICAgICAgICBpZiB2YWx1ZVswXSBpbiBXU1A6CisgICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Z3cyh2YWx1ZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3Fjb250ZW50KHZhbHVlKQorICAgICAgICAgICAgdi5hcHBlbmQodG9rZW4pCisgICAgICAgIHRva2VuID0gdgorICAgIGVsc2U6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF92YWx1ZSh2YWx1ZSkKKyAgICBhcHBlbmR0by5hcHBlbmQodG9rZW4pCisgICAgaWYgcmVtYWluZGVyIGlzIG5vdCBOb25lOgorICAgICAgICBhc3NlcnQgbm90IHZhbHVlLCB2YWx1ZQorICAgICAgICB2YWx1ZSA9IHJlbWFpbmRlcgorICAgIHJldHVybiBwYXJhbSwgdmFsdWUKKworZGVmIHBhcnNlX21pbWVfcGFyYW1ldGVycyh2YWx1ZSk6CisgICAgIiIiIHBhcmFtZXRlciAqKCAiOyIgcGFyYW1ldGVyICkKKworICAgIFRoYXQgQk5GIGlzIG1lYW50IHRvIGluZGljYXRlIHRoaXMgcm91dGluZSBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIKKyAgICBmaW5kaW5nIGFuZCBoYW5kbGluZyB0aGUgbGVhZGluZyAnOycuICBUaGVyZSBpcyBubyBjb3JyZXNwb25kaW5nIHJ1bGUgaW4KKyAgICB0aGUgZm9ybWFsIFJGQyBncmFtbWFyLCBidXQgaXQgaXMgbW9yZSBjb252ZW5pZW50IGZvciB1cyBmb3IgdGhlIHNldCBvZgorICAgIHBhcmFtZXRlcnMgdG8gYmUgdHJlYXRlZCBhcyBpdHMgb3duIFRva2VuTGlzdC4KKworICAgIFRoaXMgaXMgJ3BhcnNlJyByb3V0aW5lIGJlY2F1c2UgaXQgY29uc3VtZXMgdGhlIHJlbWluYWluZyB2YWx1ZSwgYnV0IGl0CisgICAgd291bGQgbmV2ZXIgYmUgY2FsbGVkIHRvIHBhcnNlIGEgZnVsbCBoZWFkZXIuICBJbnN0ZWFkIGl0IGlzIGNhbGxlZCB0bworICAgIHBhcnNlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIG5vbi1wYXJhbWV0ZXIgdmFsdWUgb2YgYSBzcGVjaWZpYyBNSU1FIGhlYWRlci4KKworICAgICIiIgorICAgIG1pbWVfcGFyYW1ldGVycyA9IE1pbWVQYXJhbWV0ZXJzKCkKKyAgICB3aGlsZSB2YWx1ZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3BhcmFtZXRlcih2YWx1ZSkKKyAgICAgICAgICAgIG1pbWVfcGFyYW1ldGVycy5hcHBlbmQodG9rZW4pCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvciBhcyBlcnI6CisgICAgICAgICAgICBsZWFkZXIgPSBOb25lCisgICAgICAgICAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgICAgICAgICBsZWFkZXIsIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgICAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmFwcGVuZChsZWFkZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1pbWVfcGFyYW1ldGVycworICAgICAgICAgICAgaWYgdmFsdWVbMF0gPT0gJzsnOgorICAgICAgICAgICAgICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmFwcGVuZChsZWFkZXIpCisgICAgICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIGVudHJ5IHdpdGggbm8gY29udGVudCIpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfaW52YWxpZF9wYXJhbWV0ZXIodmFsdWUpCisgICAgICAgICAgICAgICAgaWYgbGVhZGVyOgorICAgICAgICAgICAgICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgICAgICAgICAgICAgIG1pbWVfcGFyYW1ldGVycy5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBwYXJhbWV0ZXIgeyFyfSIuZm9ybWF0KHRva2VuKSkpCisgICAgICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAnOyc6CisgICAgICAgICAgICAjIEp1bmsgYWZ0ZXIgdGhlIG90aGVyd2lzZSB2YWxpZCBwYXJhbWV0ZXIuICBNYXJrIGl0IGFzCisgICAgICAgICAgICAjIGludmFsaWQsIGJ1dCBpdCB3aWxsIGhhdmUgYSB2YWx1ZS4KKyAgICAgICAgICAgIHBhcmFtID0gbWltZV9wYXJhbWV0ZXJzWy0xXQorICAgICAgICAgICAgcGFyYW0udG9rZW5fdHlwZSA9ICdpbnZhbGlkLXBhcmFtZXRlcicKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9pbnZhbGlkX3BhcmFtZXRlcih2YWx1ZSkKKyAgICAgICAgICAgIHBhcmFtLmV4dGVuZCh0b2tlbikKKyAgICAgICAgICAgIG1pbWVfcGFyYW1ldGVycy5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVyIHdpdGggaW52YWxpZCB0cmFpbGluZyB0ZXh0IHshcn0iLmZvcm1hdCh0b2tlbikpKQorICAgICAgICBpZiB2YWx1ZToKKyAgICAgICAgICAgICMgTXVzdCBiZSBhICc7JyBhdCB0aGlzIHBvaW50LgorICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc7JywgJ3BhcmFtZXRlci1zZXBhcmF0b3InKSkKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgcmV0dXJuIG1pbWVfcGFyYW1ldGVycworCitkZWYgX2ZpbmRfbWltZV9wYXJhbWV0ZXJzKHRva2VubGlzdCwgdmFsdWUpOgorICAgICIiIkRvIG91ciBiZXN0IHRvIGZpbmQgdGhlIHBhcmFtZXRlcnMgaW4gYW4gaW52YWxpZCBNSU1FIGhlYWRlcgorCisgICAgIiIiCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICc7JzoKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gUEhSQVNFX0VORFM6CisgICAgICAgICAgICB0b2tlbmxpc3QuYXBwZW5kKFZhbHVlVGVybWluYWwodmFsdWVbMF0sICdtaXNwbGFjZWQtc3BlY2lhbCcpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9waHJhc2UodmFsdWUpCisgICAgICAgICAgICB0b2tlbmxpc3QuYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmV0dXJuCisgICAgdG9rZW5saXN0LmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc7JywgJ3BhcmFtZXRlci1zZXBhcmF0b3InKSkKKyAgICB0b2tlbmxpc3QuYXBwZW5kKHBhcnNlX21pbWVfcGFyYW1ldGVycyh2YWx1ZVsxOl0pKQorCitkZWYgcGFyc2VfY29udGVudF90eXBlX2hlYWRlcih2YWx1ZSk6CisgICAgIiIiIG1haW50eXBlICIvIiBzdWJ0eXBlICooICI7IiBwYXJhbWV0ZXIgKQorCisgICAgVGhlIG1haW50eXBlIGFuZCBzdWJzdHlwZSBhcmUgdG9rZW5zLiAgVGhlb3JldGljYWxseSB0aGV5IGNvdWxkCisgICAgYmUgY2hlY2tlZCBhZ2FpbnN0IHRoZSBvZmZpY2lhbCBJQU5BIGxpc3QgKyB4LXRva2VuLCBidXQgd2UKKyAgICBkb24ndCBkbyB0aGF0LgorICAgICIiIgorICAgIGN0eXBlID0gQ29udGVudFR5cGUoKQorICAgIHJlY292ZXIgPSBGYWxzZQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgY3R5cGUuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlKAorICAgICAgICAgICAgIk1pc3NpbmcgY29udGVudCB0eXBlIHNwZWNpZmljYXRpb24iKSkKKyAgICAgICAgcmV0dXJuIGN0eXBlCisgICAgdHJ5OgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfdG9rZW4odmFsdWUpCisgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICBjdHlwZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJFeHBlY3RlZCBjb250ZW50IG1haW50eXBlIGJ1dCBmb3VuZCB7IXJ9Ii5mb3JtYXQodmFsdWUpKSkKKyAgICAgICAgX2ZpbmRfbWltZV9wYXJhbWV0ZXJzKGN0eXBlLCB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGN0eXBlCisgICAgY3R5cGUuYXBwZW5kKHRva2VuKQorICAgICMgWFhYOiBJZiB3ZSByZWFsbHkgd2FudCB0byBmb2xsb3cgdGhlIGZvcm1hbCBncmFtbWVyIHdlIHNob3VsZCBtYWtlCisgICAgIyBtYW50eXBlIGFuZCBzdWJ0eXBlIHNwZWNpYWxpemVkIFRva2VuTGlzdHMgaGVyZS4gIFByb2JhYmx5IG5vdCB3b3J0aCBpdC4KKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gJy8nOgorICAgICAgICBjdHlwZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJJbnZhbGlkIGNvbnRlbnQgdHlwZSIpKQorICAgICAgICBpZiB2YWx1ZToKKyAgICAgICAgICAgIF9maW5kX21pbWVfcGFyYW1ldGVycyhjdHlwZSwgdmFsdWUpCisgICAgICAgIHJldHVybiBjdHlwZQorICAgIGN0eXBlLm1haW50eXBlID0gdG9rZW4udmFsdWUuc3RyaXAoKS5sb3dlcigpCisgICAgY3R5cGUuYXBwZW5kKFZhbHVlVGVybWluYWwoJy8nLCAnY29udGVudC10eXBlLXNlcGFyYXRvcicpKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgdHJ5OgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfdG9rZW4odmFsdWUpCisgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICBjdHlwZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJFeHBlY3RlZCBjb250ZW50IHN1YnR5cGUgYnV0IGZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpKQorICAgICAgICBfZmluZF9taW1lX3BhcmFtZXRlcnMoY3R5cGUsIHZhbHVlKQorICAgICAgICByZXR1cm4gY3R5cGUKKyAgICBjdHlwZS5hcHBlbmQodG9rZW4pCisgICAgY3R5cGUuc3VidHlwZSA9IHRva2VuLnZhbHVlLnN0cmlwKCkubG93ZXIoKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmV0dXJuIGN0eXBlCisgICAgaWYgdmFsdWVbMF0gIT0gJzsnOgorICAgICAgICBjdHlwZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJPbmx5IHBhcmFtZXRlcnMgYXJlIHZhbGlkIGFmdGVyIGNvbnRlbnQgdHlwZSwgYnV0ICIKKyAgICAgICAgICAgICJmb3VuZCB7IXJ9Ii5mb3JtYXQodmFsdWUpKSkKKyAgICAgICAgIyBUaGUgUkZDIHJlcXVpcmVzIHRoYXQgYSBzeW50YWN0aWNhbGx5IGludmFsaWQgY29udGVudC10eXBlIGJlIHRyZWF0ZWQKKyAgICAgICAgIyBhcyB0ZXh0L3BsYWluLiAgUGVyaGFwcyB3ZSBzaG91bGQgcG9zdGVsIHRoaXMsIGJ1dCB3ZSBzaG91bGQgcHJvYmFibHkKKyAgICAgICAgIyBvbmx5IGRvIHRoYXQgaWYgd2Ugd2VyZSBjaGVja2luZyB0aGUgc3VidHlwZSB2YWx1ZSBhZ2FpbnN0IElBTkEuCisgICAgICAgIGRlbCBjdHlwZS5tYWludHlwZSwgY3R5cGUuc3VidHlwZQorICAgICAgICBfZmluZF9taW1lX3BhcmFtZXRlcnMoY3R5cGUsIHZhbHVlKQorICAgICAgICByZXR1cm4gY3R5cGUKKyAgICBjdHlwZS5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnOycsICdwYXJhbWV0ZXItc2VwYXJhdG9yJykpCisgICAgY3R5cGUuYXBwZW5kKHBhcnNlX21pbWVfcGFyYW1ldGVycyh2YWx1ZVsxOl0pKQorICAgIHJldHVybiBjdHlwZQorCitkZWYgcGFyc2VfY29udGVudF9kaXNwb3NpdGlvbl9oZWFkZXIodmFsdWUpOgorICAgICIiIiBkaXNwb3NpdGlvbi10eXBlICooICI7IiBwYXJhbWV0ZXIgKQorCisgICAgIiIiCisgICAgZGlzcF9oZWFkZXIgPSBDb250ZW50RGlzcG9zaXRpb24oKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgZGlzcF9oZWFkZXIuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlKAorICAgICAgICAgICAgIk1pc3NpbmcgY29udGVudCBkaXNwb3NpdGlvbiIpKQorICAgICAgICByZXR1cm4gZGlzcF9oZWFkZXIKKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF90b2tlbih2YWx1ZSkKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIGN0eXBlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkV4cGVjdGVkIGNvbnRlbnQgZGlzcG9zaXRpb24gYnV0IGZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpKQorICAgICAgICBfZmluZF9taW1lX3BhcmFtZXRlcnMoZGlzcF9oZWFkZXIsIHZhbHVlKQorICAgICAgICByZXR1cm4gZGlzcF9oZWFkZXIKKyAgICBkaXNwX2hlYWRlci5hcHBlbmQodG9rZW4pCisgICAgZGlzcF9oZWFkZXIuY29udGVudF9kaXNwb3NpdGlvbiA9IHRva2VuLnZhbHVlLnN0cmlwKCkubG93ZXIoKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmV0dXJuIGRpc3BfaGVhZGVyCisgICAgaWYgdmFsdWVbMF0gIT0gJzsnOgorICAgICAgICBkaXNwX2hlYWRlci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJPbmx5IHBhcmFtZXRlcnMgYXJlIHZhbGlkIGFmdGVyIGNvbnRlbnQgZGlzcG9zaXRpb24sIGJ1dCAiCisgICAgICAgICAgICAiZm91bmQgeyFyfSIuZm9ybWF0KHZhbHVlKSkpCisgICAgICAgIF9maW5kX21pbWVfcGFyYW1ldGVycyhkaXNwX2hlYWRlciwgdmFsdWUpCisgICAgICAgIHJldHVybiBkaXNwX2hlYWRlcgorICAgIGRpc3BfaGVhZGVyLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc7JywgJ3BhcmFtZXRlci1zZXBhcmF0b3InKSkKKyAgICBkaXNwX2hlYWRlci5hcHBlbmQocGFyc2VfbWltZV9wYXJhbWV0ZXJzKHZhbHVlWzE6XSkpCisgICAgcmV0dXJuIGRpc3BfaGVhZGVyCisKK2RlZiBwYXJzZV9jb250ZW50X3RyYW5zZmVyX2VuY29kaW5nX2hlYWRlcih2YWx1ZSk6CisgICAgIiIiIG1lY2hhbmlzbQorCisgICAgIiIiCisgICAgIyBXZSBzaG91bGQgcHJvYmFibHkgdmFsaWRhdGUgdGhlIHZhbHVlcywgc2luY2UgdGhlIGxpc3QgaXMgZml4ZWQuCisgICAgY3RlX2hlYWRlciA9IENvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIGN0ZV9oZWFkZXIuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlKAorICAgICAgICAgICAgIk1pc3NpbmcgY29udGVudCB0cmFuc2ZlciBlbmNvZGluZyIpKQorICAgICAgICByZXR1cm4gY3RlX2hlYWRlcgorICAgIHRyeToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3Rva2VuKHZhbHVlKQorICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgY3R5cGUuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiRXhwZWN0ZWQgY29udGVudCB0cm5hc2ZlciBlbmNvZGluZyBidXQgZm91bmQgeyFyfSIuZm9ybWF0KHZhbHVlKSkpCisgICAgZWxzZToKKyAgICAgICAgY3RlX2hlYWRlci5hcHBlbmQodG9rZW4pCisgICAgICAgIGN0ZV9oZWFkZXIuY3RlID0gdG9rZW4udmFsdWUuc3RyaXAoKS5sb3dlcigpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByZXR1cm4gY3RlX2hlYWRlcgorICAgIHdoaWxlIHZhbHVlOgorICAgICAgICBjdGVfaGVhZGVyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkV4dHJhIHRleHQgYWZ0ZXIgY29udGVudCB0cmFuc2ZlciBlbmNvZGluZyIpKQorICAgICAgICBpZiB2YWx1ZVswXSBpbiBQSFJBU0VfRU5EUzoKKyAgICAgICAgICAgIGN0ZV9oZWFkZXIuYXBwZW5kKFZhbHVlVGVybWluYWwodmFsdWVbMF0sICdtaXNwbGFjZWQtc3BlY2lhbCcpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9waHJhc2UodmFsdWUpCisgICAgICAgICAgICBjdGVfaGVhZGVyLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gY3RlX2hlYWRlcgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL19wYXJzZWFkZHIucHkgYi9MaWIvZW1haWwvX3BhcnNlYWRkci5weQppbmRleCA3OTU3M2M2Li5jZGZhMzcyIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvX3BhcnNlYWRkci5weQorKysgYi9MaWIvZW1haWwvX3BhcnNlYWRkci5weQpAQCAtNDcsNiArNDcsMjUgQEAKIAogICAgIEFjY291bnRzIGZvciBtaWxpdGFyeSB0aW1lem9uZXMuCiAgICAgIiIiCisgICAgcmVzID0gX3BhcnNlZGF0ZV90eihkYXRhKQorICAgIGlmIG5vdCByZXM6CisgICAgICAgIHJldHVybgorICAgIGlmIHJlc1s5XSBpcyBOb25lOgorICAgICAgICByZXNbOV0gPSAwCisgICAgcmV0dXJuIHR1cGxlKHJlcykKKworZGVmIF9wYXJzZWRhdGVfdHooZGF0YSk6CisgICAgIiIiQ29udmVydCBkYXRlIHRvIGV4dGVuZGVkIHRpbWUgdHVwbGUuCisKKyAgICBUaGUgbGFzdCAoYWRkaXRpb25hbCkgZWxlbWVudCBpcyB0aGUgdGltZSB6b25lIG9mZnNldCBpbiBzZWNvbmRzLCBleGNlcHQgaWYKKyAgICB0aGUgdGltZXpvbmUgd2FzIHNwZWNpZmllZCBhcyAtMDAwMC4gIEluIHRoYXQgY2FzZSB0aGUgbGFzdCBlbGVtZW50IGlzCisgICAgTm9uZS4gIFRoaXMgaW5kaWNhdGVzIGEgVVRDIHRpbWVzdGFtcCB0aGF0IGV4cGxpY2l0bHkgZGVjbGFpbXMga25vd2xlZGdlIG9mCisgICAgdGhlIHNvdXJjZSB0aW1lem9uZSwgYXMgb3Bwb3NlZCB0byBhICswMDAwIHRpbWVzdGFtcCB0aGF0IGluZGljYXRlcyB0aGUKKyAgICBzb3VyY2UgdGltZXpvbmUgcmVhbGx5IHdhcyBVVEMuCisKKyAgICAiIiIKKyAgICBpZiBub3QgZGF0YToKKyAgICAgICAgcmV0dXJuCiAgICAgZGF0YSA9IGRhdGEuc3BsaXQoKQogICAgICMgVGhlIEZXUyBhZnRlciB0aGUgY29tbWEgYWZ0ZXIgdGhlIGRheS1vZi13ZWVrIGlzIG9wdGlvbmFsLCBzbyBzZWFyY2ggYW5kCiAgICAgIyBhZGp1c3QgZm9yIHRoaXMuCkBAIC05OSw2ICsxMTgsMTQgQEAKICAgICAgICAgdHNzID0gJzAnCiAgICAgZWxpZiBsZW4odG0pID09IDM6CiAgICAgICAgIFt0aGgsIHRtbSwgdHNzXSA9IHRtCisgICAgZWxpZiBsZW4odG0pID09IDEgYW5kICcuJyBpbiB0bVswXToKKyAgICAgICAgIyBTb21lIG5vbi1jb21wbGlhbnQgTVVBcyB1c2UgJy4nIHRvIHNlcGFyYXRlIHRpbWUgZWxlbWVudHMuCisgICAgICAgIHRtID0gdG1bMF0uc3BsaXQoJy4nKQorICAgICAgICBpZiBsZW4odG0pID09IDI6CisgICAgICAgICAgICBbdGhoLCB0bW1dID0gdG0KKyAgICAgICAgICAgIHRzcyA9IDAKKyAgICAgICAgZWxpZiBsZW4odG0pID09IDM6CisgICAgICAgICAgICBbdGhoLCB0bW0sIHRzc10gPSB0bQogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBOb25lCiAgICAgdHJ5OgpAQCAtMTMwLDYgKzE1Nyw4IEBACiAgICAgICAgICAgICB0em9mZnNldCA9IGludCh0eikKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCisgICAgICAgIGlmIHR6b2Zmc2V0PT0wIGFuZCB0ei5zdGFydHN3aXRoKCctJyk6CisgICAgICAgICAgICB0em9mZnNldCA9IE5vbmUKICAgICAjIENvbnZlcnQgYSB0aW1lem9uZSBvZmZzZXQgaW50byBzZWNvbmRzIDsgLTA1MDAgLT4gLTE4MDAwCiAgICAgaWYgdHpvZmZzZXQ6CiAgICAgICAgIGlmIHR6b2Zmc2V0IDwgMDoKQEAgLTEzOSw3ICsxNjgsNyBAQAogICAgICAgICAgICAgdHpzaWduID0gMQogICAgICAgICB0em9mZnNldCA9IHR6c2lnbiAqICggKHR6b2Zmc2V0Ly8xMDApKjM2MDAgKyAodHpvZmZzZXQgJSAxMDApKjYwKQogICAgICMgRGF5bGlnaHQgU2F2aW5nIFRpbWUgZmxhZyBpcyBzZXQgdG8gLTEsIHNpbmNlIERTVCBpcyB1bmtub3duLgotICAgIHJldHVybiB5eSwgbW0sIGRkLCB0aGgsIHRtbSwgdHNzLCAwLCAxLCAtMSwgdHpvZmZzZXQKKyAgICByZXR1cm4gW3l5LCBtbSwgZGQsIHRoaCwgdG1tLCB0c3MsIDAsIDEsIC0xLCB0em9mZnNldF0KIAogCiBkZWYgcGFyc2VkYXRlKGRhdGEpOgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL19wb2xpY3liYXNlLnB5IGIvTGliL2VtYWlsL19wb2xpY3liYXNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMDYxMTQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkKQEAgLTAsMCArMSwzNTggQEAKKyIiIlBvbGljeSBmcmFtZXdvcmsgZm9yIHRoZSBlbWFpbCBwYWNrYWdlLgorCitBbGxvd3MgZmluZSBncmFpbmVkIGZlYXR1cmUgY29udHJvbCBvZiBob3cgdGhlIHBhY2thZ2UgcGFyc2VzIGFuZCBlbWl0cyBkYXRhLgorIiIiCisKK2ltcG9ydCBhYmMKK2Zyb20gZW1haWwgaW1wb3J0IGhlYWRlcgorZnJvbSBlbWFpbCBpbXBvcnQgY2hhcnNldCBhcyBfY2hhcnNldAorZnJvbSBlbWFpbC51dGlscyBpbXBvcnQgX2hhc19zdXJyb2dhdGVzCisKK19fYWxsX18gPSBbCisgICAgJ1BvbGljeScsCisgICAgJ0NvbXBhdDMyJywKKyAgICAnY29tcGF0MzInLAorICAgIF0KKworCitjbGFzcyBfUG9saWN5QmFzZToKKworICAgICIiIlBvbGljeSBPYmplY3QgYmFzaWMgZnJhbWV3b3JrLgorCisgICAgVGhpcyBjbGFzcyBpcyB1c2VsZXNzIHVubGVzcyBzdWJjbGFzc2VkLiAgQSBzdWJjbGFzcyBzaG91bGQgZGVmaW5lCisgICAgY2xhc3MgYXR0cmlidXRlcyB3aXRoIGRlZmF1bHRzIGZvciBhbnkgdmFsdWVzIHRoYXQgYXJlIHRvIGJlCisgICAgbWFuYWdlZCBieSB0aGUgUG9saWN5IG9iamVjdC4gIFRoZSBjb25zdHJ1Y3RvciB3aWxsIHRoZW4gYWxsb3cKKyAgICBub24tZGVmYXVsdCB2YWx1ZXMgdG8gYmUgc2V0IGZvciB0aGVzZSBhdHRyaWJ1dGVzIGF0IGluc3RhbmNlCisgICAgY3JlYXRpb24gdGltZS4gIFRoZSBpbnN0YW5jZSB3aWxsIGJlIGNhbGxhYmxlLCB0YWtpbmcgdGhlc2Ugc2FtZQorICAgIGF0dHJpYnV0ZXMga2V5d29yZCBhcmd1bWVudHMsIGFuZCByZXR1cm5pbmcgYSBuZXcgaW5zdGFuY2UKKyAgICBpZGVudGljYWwgdG8gdGhlIGNhbGxlZCBpbnN0YW5jZSBleGNlcHQgZm9yIHRob3NlIHZhbHVlcyBjaGFuZ2VkCisgICAgYnkgdGhlIGtleXdvcmQgYXJndW1lbnRzLiAgSW5zdGFuY2VzIG1heSBiZSBhZGRlZCwgeWllbGRpbmcgbmV3CisgICAgaW5zdGFuY2VzIHdpdGggYW55IG5vbi1kZWZhdWx0IHZhbHVlcyBmcm9tIHRoZSByaWdodCBoYW5kCisgICAgb3BlcmFuZCBvdmVycmlkaW5nIHRob3NlIGluIHRoZSBsZWZ0IGhhbmQgb3BlcmFuZC4gIFRoYXQgaXMsCisKKyAgICAgICAgQSArIEIgPT0gQSg8bm9uLWRlZmF1bHQgdmFsdWVzIG9mIEI+KQorCisgICAgVGhlIHJlcHIgb2YgYW4gaW5zdGFuY2UgY2FuIGJlIHVzZWQgdG8gcmVjb25zdHJ1Y3QgdGhlIG9iamVjdAorICAgIGlmIGFuZCBvbmx5IGlmIHRoZSByZXByIG9mIHRoZSB2YWx1ZXMgY2FuIGJlIHVzZWQgdG8gcmVjb25zdHJ1Y3QKKyAgICB0aG9zZSB2YWx1ZXMuCisKKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3KToKKyAgICAgICAgIiIiQ3JlYXRlIG5ldyBQb2xpY3ksIHBvc3NpYmx5IG92ZXJyaWRpbmcgc29tZSBkZWZhdWx0cy4KKworICAgICAgICBTZWUgY2xhc3MgZG9jc3RyaW5nIGZvciBhIGxpc3Qgb2Ygb3ZlcnJpZGFibGUgYXR0cmlidXRlcy4KKworICAgICAgICAiIiIKKyAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGt3Lml0ZW1zKCk6CisgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsIG5hbWUpOgorICAgICAgICAgICAgICAgIHN1cGVyKF9Qb2xpY3lCYXNlLHNlbGYpLl9fc2V0YXR0cl9fKG5hbWUsIHZhbHVlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJ7IXJ9IGlzIGFuIGludmFsaWQga2V5d29yZCBhcmd1bWVudCBmb3Ige30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fKSkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgYXJncyA9IFsgInt9PXshcn0iLmZvcm1hdChuYW1lLCB2YWx1ZSkKKyAgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNlbGYuX19kaWN0X18uaXRlbXMoKSBdCisgICAgICAgIHJldHVybiAie30oe30pIi5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sICcsICcuam9pbihhcmdzKSkKKworICAgIGRlZiBjbG9uZShzZWxmLCAqKmt3KToKKyAgICAgICAgIiIiUmV0dXJuIGEgbmV3IGluc3RhbmNlIHdpdGggc3BlY2lmaWVkIGF0dHJpYnV0ZXMgY2hhbmdlZC4KKworICAgICAgICBUaGUgbmV3IGluc3RhbmNlIGhhcyB0aGUgc2FtZSBhdHRyaWJ1dGUgdmFsdWVzIGFzIHRoZSBjdXJyZW50IG9iamVjdCwKKyAgICAgICAgZXhjZXB0IGZvciB0aGUgY2hhbmdlcyBwYXNzZWQgaW4gYXMga2V5d29yZCBhcmd1bWVudHMuCisKKyAgICAgICAgIiIiCisgICAgICAgIG5ld3BvbGljeSA9IHNlbGYuX19jbGFzc19fLl9fbmV3X18oc2VsZi5fX2NsYXNzX18pCisgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBzZWxmLl9fZGljdF9fLml0ZW1zKCk6CisgICAgICAgICAgICBvYmplY3QuX19zZXRhdHRyX18obmV3cG9saWN5LCBhdHRyLCB2YWx1ZSkKKyAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIGt3Lml0ZW1zKCk6CisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCBhdHRyKToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJ7IXJ9IGlzIGFuIGludmFsaWQga2V5d29yZCBhcmd1bWVudCBmb3Ige30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIsIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fKSkKKyAgICAgICAgICAgIG9iamVjdC5fX3NldGF0dHJfXyhuZXdwb2xpY3ksIGF0dHIsIHZhbHVlKQorICAgICAgICByZXR1cm4gbmV3cG9saWN5CisKKyAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICBpZiBoYXNhdHRyKHNlbGYsIG5hbWUpOgorICAgICAgICAgICAgbXNnID0gInshcn0gb2JqZWN0IGF0dHJpYnV0ZSB7IXJ9IGlzIHJlYWQtb25seSIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1zZyA9ICJ7IXJ9IG9iamVjdCBoYXMgbm8gYXR0cmlidXRlIHshcn0iCisgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG1zZy5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIG5hbWUpKQorCisgICAgZGVmIF9fYWRkX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAiIiJOb24tZGVmYXVsdCB2YWx1ZXMgZnJvbSByaWdodCBvcGVyYW5kIG92ZXJyaWRlIHRob3NlIGZyb20gbGVmdC4KKworICAgICAgICBUaGUgb2JqZWN0IHJldHVybmVkIGlzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBzdWJjbGFzcy4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuY2xvbmUoKipvdGhlci5fX2RpY3RfXykKKworCitkZWYgX2FwcGVuZF9kb2MoZG9jLCBhZGRlZF9kb2MpOgorICAgIGRvYyA9IGRvYy5yc3BsaXQoJ1xuJywgMSlbMF0KKyAgICBhZGRlZF9kb2MgPSBhZGRlZF9kb2Muc3BsaXQoJ1xuJywgMSlbMV0KKyAgICByZXR1cm4gZG9jICsgJ1xuJyArIGFkZGVkX2RvYworCitkZWYgX2V4dGVuZF9kb2NzdHJpbmdzKGNscyk6CisgICAgaWYgY2xzLl9fZG9jX18gYW5kIGNscy5fX2RvY19fLnN0YXJ0c3dpdGgoJysnKToKKyAgICAgICAgY2xzLl9fZG9jX18gPSBfYXBwZW5kX2RvYyhjbHMuX19iYXNlc19fWzBdLl9fZG9jX18sIGNscy5fX2RvY19fKQorICAgIGZvciBuYW1lLCBhdHRyIGluIGNscy5fX2RpY3RfXy5pdGVtcygpOgorICAgICAgICBpZiBhdHRyLl9fZG9jX18gYW5kIGF0dHIuX19kb2NfXy5zdGFydHN3aXRoKCcrJyk6CisgICAgICAgICAgICBmb3IgYyBpbiAoYyBmb3IgYmFzZSBpbiBjbHMuX19iYXNlc19fIGZvciBjIGluIGJhc2UubXJvKCkpOgorICAgICAgICAgICAgICAgIGRvYyA9IGdldGF0dHIoZ2V0YXR0cihjLCBuYW1lKSwgJ19fZG9jX18nKQorICAgICAgICAgICAgICAgIGlmIGRvYzoKKyAgICAgICAgICAgICAgICAgICAgYXR0ci5fX2RvY19fID0gX2FwcGVuZF9kb2MoZG9jLCBhdHRyLl9fZG9jX18pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgcmV0dXJuIGNscworCisKK2NsYXNzIFBvbGljeShfUG9saWN5QmFzZSwgbWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKKworICAgIHIiIiJDb250cm9scyBmb3IgaG93IG1lc3NhZ2VzIGFyZSBpbnRlcnByZXRlZCBhbmQgZm9ybWF0dGVkLgorCisgICAgTW9zdCBvZiB0aGUgY2xhc3NlcyBhbmQgbWFueSBvZiB0aGUgbWV0aG9kcyBpbiB0aGUgZW1haWwgcGFja2FnZSBhY2NlcHQKKyAgICBQb2xpY3kgb2JqZWN0cyBhcyBwYXJhbWV0ZXJzLiAgQSBQb2xpY3kgb2JqZWN0IGNvbnRhaW5zIGEgc2V0IG9mIHZhbHVlcyBhbmQKKyAgICBmdW5jdGlvbnMgdGhhdCBjb250cm9sIGhvdyBpbnB1dCBpcyBpbnRlcnByZXRlZCBhbmQgaG93IG91dHB1dCBpcyByZW5kZXJlZC4KKyAgICBGb3IgZXhhbXBsZSwgdGhlIHBhcmFtZXRlciAncmFpc2Vfb25fZGVmZWN0JyBjb250cm9scyB3aGV0aGVyIG9yIG5vdCBhbiBSRkMKKyAgICB2aW9sYXRpb24gcmVzdWx0cyBpbiBhbiBlcnJvciBiZWluZyByYWlzZWQgb3Igbm90LCB3aGlsZSAnbWF4X2xpbmVfbGVuZ3RoJworICAgIGNvbnRyb2xzIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBvdXRwdXQgbGluZXMgd2hlbiBhIE1lc3NhZ2UgaXMgc2VyaWFsaXplZC4KKworICAgIEFueSB2YWxpZCBhdHRyaWJ1dGUgbWF5IGJlIG92ZXJyaWRkZW4gd2hlbiBhIFBvbGljeSBpcyBjcmVhdGVkIGJ5IHBhc3NpbmcKKyAgICBpdCBhcyBhIGtleXdvcmQgYXJndW1lbnQgdG8gdGhlIGNvbnN0cnVjdG9yLiAgUG9saWN5IG9iamVjdHMgYXJlIGltbXV0YWJsZSwKKyAgICBidXQgYSBuZXcgUG9saWN5IG9iamVjdCBjYW4gYmUgY3JlYXRlZCB3aXRoIG9ubHkgY2VydGFpbiB2YWx1ZXMgY2hhbmdlZCBieQorICAgIGNhbGxpbmcgdGhlIFBvbGljeSBpbnN0YW5jZSB3aXRoIGtleXdvcmQgYXJndW1lbnRzLiAgUG9saWN5IG9iamVjdHMgY2FuCisgICAgYWxzbyBiZSBhZGRlZCwgcHJvZHVjaW5nIGEgbmV3IFBvbGljeSBvYmplY3QgaW4gd2hpY2ggdGhlIG5vbi1kZWZhdWx0CisgICAgYXR0cmlidXRlcyBzZXQgaW4gdGhlIHJpZ2h0IGhhbmQgb3BlcmFuZCBvdmVyd3JpdGUgdGhvc2Ugc3BlY2lmaWVkIGluIHRoZQorICAgIGxlZnQgb3BlcmFuZC4KKworICAgIFNldHRhYmxlIGF0dHJpYnV0ZXM6CisKKyAgICByYWlzZV9vbl9kZWZlY3QgICAgIC0tIElmIHRydWUsIHRoZW4gZGVmZWN0cyBzaG91bGQgYmUgcmFpc2VkIGFzIGVycm9ycy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQ6IEZhbHNlLgorCisgICAgbGluZXNlcCAgICAgICAgICAgICAtLSBzdHJpbmcgY29udGFpbmluZyB0aGUgdmFsdWUgdG8gdXNlIGFzIHNlcGFyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJldHdlZW4gb3V0cHV0IGxpbmVzLiAgRGVmYXVsdCAnXG4nLgorCisgICAgY3RlX3R5cGUgICAgICAgICAgICAtLSBUeXBlIG9mIGFsbG93ZWQgY29udGVudCB0cmFuc2ZlciBlbmNvZGluZ3MKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgN2JpdCAgLS0gQVNDSUkgb25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAgOGJpdCAgLS0gQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdCBpcyBhbGxvd2VkCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQ6IDhiaXQuICBBbHNvIGNvbnRyb2xzIHRoZSBkaXNwb3NpdGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJGQyBpbnZhbGlkKSBiaW5hcnkgZGF0YSBpbiBoZWFkZXJzOyBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uIG9mIHRoZSBiaW5hcnlfZm9sZCBtZXRob2QuCisKKyAgICBtYXhfbGluZV9sZW5ndGggICAgIC0tIG1heGltdW0gbGVuZ3RoIG9mIGxpbmVzLCBleGNsdWRpbmcgJ2xpbmVzZXAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHNlcmlhbGl6YXRpb24uICBOb25lIG9yIDAgbWVhbnMgbm8gbGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBpbmcgaXMgZG9uZS4gIERlZmF1bHQgaXMgNzguCisKKyAgICAiIiIKKworICAgIHJhaXNlX29uX2RlZmVjdCA9IEZhbHNlCisgICAgbGluZXNlcCA9ICdcbicKKyAgICBjdGVfdHlwZSA9ICc4Yml0JworICAgIG1heF9saW5lX2xlbmd0aCA9IDc4CisKKyAgICBkZWYgaGFuZGxlX2RlZmVjdChzZWxmLCBvYmosIGRlZmVjdCk6CisgICAgICAgICIiIkJhc2VkIG9uIHBvbGljeSwgZWl0aGVyIHJhaXNlIGRlZmVjdCBvciBjYWxsIHJlZ2lzdGVyX2RlZmVjdC4KKworICAgICAgICAgICAgaGFuZGxlX2RlZmVjdChvYmosIGRlZmVjdCkKKworICAgICAgICBkZWZlY3Qgc2hvdWxkIGJlIGEgRGVmZWN0IHN1YmNsYXNzLCBidXQgaW4gYW55IGNhc2UgbXVzdCBiZSBhbgorICAgICAgICBFeGNlcHRpb24gc3ViY2xhc3MuICBvYmogaXMgdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgZGVmZWN0IHNob3VsZCBiZQorICAgICAgICByZWdpc3RlcmVkIGlmIGl0IGlzIG5vdCByYWlzZWQuICBJZiB0aGUgcmFpc2Vfb25fZGVmZWN0IGlzIFRydWUsIHRoZQorICAgICAgICBkZWZlY3QgaXMgcmFpc2VkIGFzIGFuIGVycm9yLCBvdGhlcndpc2UgdGhlIG9iamVjdCBhbmQgdGhlIGRlZmVjdCBhcmUKKyAgICAgICAgcGFzc2VkIHRvIHJlZ2lzdGVyX2RlZmVjdC4KKworICAgICAgICBUaGlzIG1ldGhvZCBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgYnkgcGFyc2VycyB0aGF0IGRpc2NvdmVyIGRlZmVjdHMuCisgICAgICAgIFRoZSBlbWFpbCBwYWNrYWdlIHBhcnNlcnMgYWx3YXlzIGNhbGwgaXQgd2l0aCBEZWZlY3QgaW5zdGFuY2VzLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLnJhaXNlX29uX2RlZmVjdDoKKyAgICAgICAgICAgIHJhaXNlIGRlZmVjdAorICAgICAgICBzZWxmLnJlZ2lzdGVyX2RlZmVjdChvYmosIGRlZmVjdCkKKworICAgIGRlZiByZWdpc3Rlcl9kZWZlY3Qoc2VsZiwgb2JqLCBkZWZlY3QpOgorICAgICAgICAiIiJSZWNvcmQgJ2RlZmVjdCcgb24gJ29iaicuCisKKyAgICAgICAgQ2FsbGVkIGJ5IGhhbmRsZV9kZWZlY3QgaWYgcmFpc2Vfb25fZGVmZWN0IGlzIEZhbHNlLiAgVGhpcyBtZXRob2QgaXMKKyAgICAgICAgcGFydCBvZiB0aGUgUG9saWN5IEFQSSBzbyB0aGF0IFBvbGljeSBzdWJjbGFzc2VzIGNhbiBpbXBsZW1lbnQgY3VzdG9tCisgICAgICAgIGRlZmVjdCBoYW5kbGluZy4gIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzIHRoZSBhcHBlbmQgbWV0aG9kIG9mCisgICAgICAgIHRoZSBkZWZlY3RzIGF0dHJpYnV0ZSBvZiBvYmouICBUaGUgb2JqZWN0cyB1c2VkIGJ5IHRoZSBlbWFpbCBwYWNrYWdlIGJ5CisgICAgICAgIGRlZmF1bHQgdGhhdCBnZXQgcGFzc2VkIHRvIHRoaXMgbWV0aG9kIHdpbGwgYWx3YXlzIGhhdmUgYSBkZWZlY3RzCisgICAgICAgIGF0dHJpYnV0ZSB3aXRoIGFuIGFwcGVuZCBtZXRob2QuCisKKyAgICAgICAgIiIiCisgICAgICAgIG9iai5kZWZlY3RzLmFwcGVuZChkZWZlY3QpCisKKyAgICBkZWYgaGVhZGVyX21heF9jb3VudChzZWxmLCBuYW1lKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyIG9mIGhlYWRlcnMgbmFtZWQgJ25hbWUnLgorCisgICAgICAgIENhbGxlZCB3aGVuIGEgaGVhZGVyIGlzIGFkZGVkIHRvIGEgTWVzc2FnZSBvYmplY3QuICBJZiB0aGUgcmV0dXJuZWQKKyAgICAgICAgdmFsdWUgaXMgbm90IDAgb3IgTm9uZSwgYW5kIHRoZXJlIGFyZSBhbHJlYWR5IGEgbnVtYmVyIG9mIGhlYWRlcnMgd2l0aAorICAgICAgICB0aGUgbmFtZSAnbmFtZScgZXF1YWwgdG8gdGhlIHZhbHVlIHJldHVybmVkLCBhIFZhbHVlRXJyb3IgaXMgcmFpc2VkLgorCisgICAgICAgIEJlY2F1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgTWVzc2FnZSdzIF9fc2V0aXRlbV9fIGlzIHRvIGFwcGVuZCB0aGUKKyAgICAgICAgdmFsdWUgdG8gdGhlIGxpc3Qgb2YgaGVhZGVycywgaXQgaXMgZWFzeSB0byBjcmVhdGUgZHVwbGljYXRlIGhlYWRlcnMKKyAgICAgICAgd2l0aG91dCByZWFsaXppbmcgaXQuICBUaGlzIG1ldGhvZCBhbGxvd3MgY2VydGFpbiBoZWFkZXJzIHRvIGJlIGxpbWl0ZWQKKyAgICAgICAgaW4gdGhlIG51bWJlciBvZiBpbnN0YW5jZXMgb2YgdGhhdCBoZWFkZXIgdGhhdCBtYXkgYmUgYWRkZWQgdG8gYQorICAgICAgICBNZXNzYWdlIHByb2dyYW1tYXRpY2FsbHkuICAoVGhlIGxpbWl0IGlzIG5vdCBvYnNlcnZlZCBieSB0aGUgcGFyc2VyLAorICAgICAgICB3aGljaCB3aWxsIGZhaXRoZnVsbHkgcHJvZHVjZSBhcyBtYW55IGhlYWRlcnMgYXMgZXhpc3QgaW4gdGhlIG1lc3NhZ2UKKyAgICAgICAgYmVpbmcgcGFyc2VkLikKKworICAgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIE5vbmUgZm9yIGFsbCBoZWFkZXIgbmFtZXMuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBoZWFkZXJfc291cmNlX3BhcnNlKHNlbGYsIHNvdXJjZWxpbmVzKToKKyAgICAgICAgIiIiR2l2ZW4gYSBsaXN0IG9mIGxpbmVzZXAgdGVybWluYXRlZCBzdHJpbmdzIGNvbnN0aXR1dGluZyB0aGUgbGluZXMgb2YKKyAgICAgICAgYSBzaW5nbGUgaGVhZGVyLCByZXR1cm4gdGhlIChuYW1lLCB2YWx1ZSkgdHVwbGUgdGhhdCBzaG91bGQgYmUgc3RvcmVkCisgICAgICAgIGluIHRoZSBtb2RlbC4gIFRoZSBpbnB1dCBsaW5lcyBzaG91bGQgcmV0YWluIHRoZWlyIHRlcm1pbmF0aW5nIGxpbmVzZXAKKyAgICAgICAgY2hhcmFjdGVycy4gIFRoZSBsaW5lcyBwYXNzZWQgaW4gYnkgdGhlIGVtYWlsIHBhY2thZ2UgbWF5IGNvbnRhaW4KKyAgICAgICAgc3Vycm9nYXRlZXNjYXBlZCBiaW5hcnkgZGF0YS4KKyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgaGVhZGVyX3N0b3JlX3BhcnNlKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiR2l2ZW4gdGhlIGhlYWRlciBuYW1lIGFuZCB0aGUgdmFsdWUgcHJvdmlkZWQgYnkgdGhlIGFwcGxpY2F0aW9uCisgICAgICAgIHByb2dyYW0sIHJldHVybiB0aGUgKG5hbWUsIHZhbHVlKSB0aGF0IHNob3VsZCBiZSBzdG9yZWQgaW4gdGhlIG1vZGVsLgorICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBoZWFkZXJfZmV0Y2hfcGFyc2Uoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiJHaXZlbiB0aGUgaGVhZGVyIG5hbWUgYW5kIHRoZSB2YWx1ZSBmcm9tIHRoZSBtb2RlbCwgcmV0dXJuIHRoZSB2YWx1ZQorICAgICAgICB0byBiZSByZXR1cm5lZCB0byB0aGUgYXBwbGljYXRpb24gcHJvZ3JhbSB0aGF0IGlzIHJlcXVlc3RpbmcgdGhhdAorICAgICAgICBoZWFkZXIuICBUaGUgdmFsdWUgcGFzc2VkIGluIGJ5IHRoZSBlbWFpbCBwYWNrYWdlIG1heSBjb250YWluCisgICAgICAgIHN1cnJvZ2F0ZWVzY2FwZWQgYmluYXJ5IGRhdGEgaWYgdGhlIGxpbmVzIHdlcmUgcGFyc2VkIGJ5IGEgQnl0ZXNQYXJzZXIuCisgICAgICAgIFRoZSByZXR1cm5lZCB2YWx1ZSBzaG91bGQgbm90IGNvbnRhaW4gYW55IHN1cnJvZ2F0ZWVzY2FwZWQgZGF0YS4KKworICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBmb2xkKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiR2l2ZW4gdGhlIGhlYWRlciBuYW1lIGFuZCB0aGUgdmFsdWUgZnJvbSB0aGUgbW9kZWwsIHJldHVybiBhIHN0cmluZworICAgICAgICBjb250YWluaW5nIGxpbmVzZXAgY2hhcmFjdGVycyB0aGF0IGltcGxlbWVudCB0aGUgZm9sZGluZyBvZiB0aGUgaGVhZGVyCisgICAgICAgIGFjY29yZGluZyB0byB0aGUgcG9saWN5IGNvbnRyb2xzLiAgVGhlIHZhbHVlIHBhc3NlZCBpbiBieSB0aGUgZW1haWwKKyAgICAgICAgcGFja2FnZSBtYXkgY29udGFpbiBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhIGlmIHRoZSBsaW5lcyB3ZXJlCisgICAgICAgIHBhcnNlZCBieSBhIEJ5dGVzUGFyc2VyLiAgVGhlIHJldHVybmVkIHZhbHVlIHNob3VsZCBub3QgY29udGFpbiBhbnkKKyAgICAgICAgc3Vycm9nYXRlZXNjYXBlZCBkYXRhLgorCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIGZvbGRfYmluYXJ5KHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiR2l2ZW4gdGhlIGhlYWRlciBuYW1lIGFuZCB0aGUgdmFsdWUgZnJvbSB0aGUgbW9kZWwsIHJldHVybiBiaW5hcnkKKyAgICAgICAgZGF0YSBjb250YWluaW5nIGxpbmVzZXAgY2hhcmFjdGVycyB0aGF0IGltcGxlbWVudCB0aGUgZm9sZGluZyBvZiB0aGUKKyAgICAgICAgaGVhZGVyIGFjY29yZGluZyB0byB0aGUgcG9saWN5IGNvbnRyb2xzLiAgVGhlIHZhbHVlIHBhc3NlZCBpbiBieSB0aGUKKyAgICAgICAgZW1haWwgcGFja2FnZSBtYXkgY29udGFpbiBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhLgorCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKworQF9leHRlbmRfZG9jc3RyaW5ncworY2xhc3MgQ29tcGF0MzIoUG9saWN5KToKKworICAgICIiIisKKyAgICBUaGlzIHBhcnRpY3VsYXIgcG9saWN5IGlzIHRoZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IFBvbGljeS4gIEl0CisgICAgcmVwbGljYXRlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgdmVyc2lvbiA1LjEuCisgICAgIiIiCisKKyAgICBkZWYgX3Nhbml0aXplX2hlYWRlcihzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICMgSWYgdGhlIGhlYWRlciB2YWx1ZSBjb250YWlucyBzdXJyb2dhdGVzLCByZXR1cm4gYSBIZWFkZXIgdXNpbmcKKyAgICAgICAgIyB0aGUgdW5rbm93bi04Yml0IGNoYXJzZXQgdG8gZW5jb2RlIHRoZSBieXRlcyBhcyBlbmNvZGVkIHdvcmRzLgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgICAgICMgQXNzdW1lIGl0IGlzIGFscmVhZHkgYSBoZWFkZXIgb2JqZWN0CisgICAgICAgICAgICByZXR1cm4gdmFsdWUKKyAgICAgICAgaWYgX2hhc19zdXJyb2dhdGVzKHZhbHVlKToKKyAgICAgICAgICAgIHJldHVybiBoZWFkZXIuSGVhZGVyKHZhbHVlLCBjaGFyc2V0PV9jaGFyc2V0LlVOS05PV044QklULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX25hbWU9bmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZQorCisgICAgZGVmIGhlYWRlcl9zb3VyY2VfcGFyc2Uoc2VsZiwgc291cmNlbGluZXMpOgorICAgICAgICAiIiIrCisgICAgICAgIFRoZSBuYW1lIGlzIHBhcnNlZCBhcyBldmVyeXRoaW5nIHVwIHRvIHRoZSAnOicgYW5kIHJldHVybmVkIHVubW9kaWZpZWQuCisgICAgICAgIFRoZSB2YWx1ZSBpcyBkZXRlcm1pbmVkIGJ5IHN0cmlwcGluZyBsZWFkaW5nIHdoaXRlc3BhY2Ugb2ZmIHRoZQorICAgICAgICByZW1haW5kZXIgb2YgdGhlIGZpcnN0IGxpbmUsIGpvaW5pbmcgYWxsIHN1YnNlcXVlbnQgbGluZXMgdG9nZXRoZXIsIGFuZAorICAgICAgICBzdHJpcHBpbmcgYW55IHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiBvciBsaW5lZmVlZCBjaGFyYWN0ZXJzLgorCisgICAgICAgICIiIgorICAgICAgICBuYW1lLCB2YWx1ZSA9IHNvdXJjZWxpbmVzWzBdLnNwbGl0KCc6JywgMSkKKyAgICAgICAgdmFsdWUgPSB2YWx1ZS5sc3RyaXAoJyBcdCcpICsgJycuam9pbihzb3VyY2VsaW5lc1sxOl0pCisgICAgICAgIHJldHVybiAobmFtZSwgdmFsdWUucnN0cmlwKCdcclxuJykpCisKKyAgICBkZWYgaGVhZGVyX3N0b3JlX3BhcnNlKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiKworICAgICAgICBUaGUgbmFtZSBhbmQgdmFsdWUgYXJlIHJldHVybmVkIHVubW9kaWZpZWQuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gKG5hbWUsIHZhbHVlKQorCisgICAgZGVmIGhlYWRlcl9mZXRjaF9wYXJzZShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIisKKyAgICAgICAgSWYgdGhlIHZhbHVlIGNvbnRhaW5zIGJpbmFyeSBkYXRhLCBpdCBpcyBjb252ZXJ0ZWQgaW50byBhIEhlYWRlciBvYmplY3QKKyAgICAgICAgdXNpbmcgdGhlIHVua25vd24tOGJpdCBjaGFyc2V0LiAgT3RoZXJ3aXNlIGl0IGlzIHJldHVybmVkIHVubW9kaWZpZWQuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc2FuaXRpemVfaGVhZGVyKG5hbWUsIHZhbHVlKQorCisgICAgZGVmIGZvbGQoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiIrCisgICAgICAgIEhlYWRlcnMgYXJlIGZvbGRlZCB1c2luZyB0aGUgSGVhZGVyIGZvbGRpbmcgYWxnb3JpdGhtLCB3aGljaCBwcmVzZXJ2ZXMKKyAgICAgICAgZXhpc3RpbmcgbGluZSBicmVha3MgaW4gdGhlIHZhbHVlLCBhbmQgd3JhcHMgZWFjaCByZXN1bHRpbmcgbGluZSB0byB0aGUKKyAgICAgICAgbWF4X2xpbmVfbGVuZ3RoLiAgTm9uLUFTQ0lJIGJpbmFyeSBkYXRhIGFyZSBDVEUgZW5jb2RlZCB1c2luZyB0aGUKKyAgICAgICAgdW5rbm93bi04Yml0IGNoYXJzZXQuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9mb2xkKG5hbWUsIHZhbHVlLCBzYW5pdGl6ZT1UcnVlKQorCisgICAgZGVmIGZvbGRfYmluYXJ5KHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiKworICAgICAgICBIZWFkZXJzIGFyZSBmb2xkZWQgdXNpbmcgdGhlIEhlYWRlciBmb2xkaW5nIGFsZ29yaXRobSwgd2hpY2ggcHJlc2VydmVzCisgICAgICAgIGV4aXN0aW5nIGxpbmUgYnJlYWtzIGluIHRoZSB2YWx1ZSwgYW5kIHdyYXBzIGVhY2ggcmVzdWx0aW5nIGxpbmUgdG8gdGhlCisgICAgICAgIG1heF9saW5lX2xlbmd0aC4gIElmIGN0ZV90eXBlIGlzIDdiaXQsIG5vbi1hc2NpaSBiaW5hcnkgZGF0YSBpcyBDVEUKKyAgICAgICAgZW5jb2RlZCB1c2luZyB0aGUgdW5rbm93bi04Yml0IGNoYXJzZXQuICBPdGhlcndpc2UgdGhlIG9yaWdpbmFsIHNvdXJjZQorICAgICAgICBoZWFkZXIgaXMgdXNlZCwgd2l0aCBpdHMgZXhpc3RpbmcgbGluZSBicmVha3MgYW5kL29yIGJpbmFyeSBkYXRhLgorCisgICAgICAgICIiIgorICAgICAgICBmb2xkZWQgPSBzZWxmLl9mb2xkKG5hbWUsIHZhbHVlLCBzYW5pdGl6ZT1zZWxmLmN0ZV90eXBlPT0nN2JpdCcpCisgICAgICAgIHJldHVybiBmb2xkZWQuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorCisgICAgZGVmIF9mb2xkKHNlbGYsIG5hbWUsIHZhbHVlLCBzYW5pdGl6ZSk6CisgICAgICAgIHBhcnRzID0gW10KKyAgICAgICAgcGFydHMuYXBwZW5kKCclczogJyAlIG5hbWUpCisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICAgICAgICBpZiBfaGFzX3N1cnJvZ2F0ZXModmFsdWUpOgorICAgICAgICAgICAgICAgIGlmIHNhbml0aXplOgorICAgICAgICAgICAgICAgICAgICBoID0gaGVhZGVyLkhlYWRlcih2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNldD1fY2hhcnNldC5VTktOT1dOOEJJVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX25hbWU9bmFtZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIElmIHdlIGhhdmUgcmF3IDhiaXQgZGF0YSBpbiBhIGJ5dGUgc3RyaW5nLCB3ZSBoYXZlIG5vIGlkZWEKKyAgICAgICAgICAgICAgICAgICAgIyB3aGF0IHRoZSBlbmNvZGluZyBpcy4gIFRoZXJlIGlzIG5vIHNhZmUgd2F5IHRvIHNwbGl0IHRoaXMKKyAgICAgICAgICAgICAgICAgICAgIyBzdHJpbmcuICBJZiBpdCdzIGFzY2lpLXN1YnNldCwgdGhlbiB3ZSBjb3VsZCBkbyBhIG5vcm1hbAorICAgICAgICAgICAgICAgICAgICAjIGFzY2lpIHNwbGl0LCBidXQgaWYgaXQncyBtdWx0aWJ5dGUgdGhlbiB3ZSBjb3VsZCBicmVhayB0aGUKKyAgICAgICAgICAgICAgICAgICAgIyBzdHJpbmcuICBUaGVyZSdzIG5vIHdheSB0byBrbm93IHNvIHRoZSBsZWFzdCBoYXJtIHNlZW1zIHRvCisgICAgICAgICAgICAgICAgICAgICMgYmUgdG8gbm90IHNwbGl0IHRoZSBzdHJpbmcgYW5kIHJpc2sgaXQgYmVpbmcgdG9vIGxvbmcuCisgICAgICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZCh2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgaCA9IE5vbmUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaCA9IGhlYWRlci5IZWFkZXIodmFsdWUsIGhlYWRlcl9uYW1lPW5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEFzc3VtZSBpdCBpcyBhIEhlYWRlci1saWtlIG9iamVjdC4KKyAgICAgICAgICAgIGggPSB2YWx1ZQorICAgICAgICBpZiBoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcGFydHMuYXBwZW5kKGguZW5jb2RlKGxpbmVzZXA9c2VsZi5saW5lc2VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxpbmVsZW49c2VsZi5tYXhfbGluZV9sZW5ndGgpKQorICAgICAgICBwYXJ0cy5hcHBlbmQoc2VsZi5saW5lc2VwKQorICAgICAgICByZXR1cm4gJycuam9pbihwYXJ0cykKKworCitjb21wYXQzMiA9IENvbXBhdDMyKCkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9hcmNoaXRlY3R1cmUucnN0IGIvTGliL2VtYWlsL2FyY2hpdGVjdHVyZS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBkMjRmZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbWFpbC9hcmNoaXRlY3R1cmUucnN0CkBAIC0wLDAgKzEsMjE2IEBACis6bW9kOmBlbWFpbGAgUGFja2FnZSBBcmNoaXRlY3R1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitPdmVydmlldworLS0tLS0tLS0KKworVGhlIGVtYWlsIHBhY2thZ2UgY29uc2lzdHMgb2YgdGhyZWUgbWFqb3IgY29tcG9uZW50czoKKworICAgIE1vZGVsCisgICAgICAgIEFuIG9iamVjdCBzdHJ1Y3R1cmUgdGhhdCByZXByZXNlbnRzIGFuIGVtYWlsIG1lc3NhZ2UsIGFuZCBwcm92aWRlcyBhbgorICAgICAgICBBUEkgZm9yIGNyZWF0aW5nLCBxdWVyeWluZywgYW5kIG1vZGlmeWluZyBhIG1lc3NhZ2UuCisKKyAgICBQYXJzZXIKKyAgICAgICAgVGFrZXMgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIG9yIGJ5dGVzIGFuZCBwcm9kdWNlcyBhIG1vZGVsIG9mIHRoZQorICAgICAgICBlbWFpbCBtZXNzYWdlIHJlcHJlc2VudGVkIGJ5IHRob3NlIGNoYXJhY3RlcnMgb3IgYnl0ZXMuCisKKyAgICBHZW5lcmF0b3IKKyAgICAgICAgVGFrZXMgYSBtb2RlbCBhbmQgdHVybnMgaXQgaW50byBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgb3IgYnl0ZXMuICBUaGUKKyAgICAgICAgc2VxdWVuY2UgY2FuIGVpdGhlciBiZSBpbnRlbmRlZCBmb3IgaHVtYW4gY29uc3VtcHRpb24gKGEgcHJpbnRhYmxlCisgICAgICAgIHVuaWNvZGUgc3RyaW5nKSBvciBieXRlcyBzdWl0YWJsZSBmb3IgdHJhbnNtaXNzaW9uIG92ZXIgdGhlIHdpcmUuICBJbgorICAgICAgICB0aGUgbGF0dGVyIGNhc2UgYWxsIGRhdGEgaXMgcHJvcGVybHkgZW5jb2RlZCB1c2luZyB0aGUgY29udGVudCB0cmFuc2ZlcgorICAgICAgICBlbmNvZGluZ3Mgc3BlY2lmaWVkIGJ5IHRoZSByZWxldmFudCBSRkNzLgorCitDb25jZXB0dWFsbHkgdGhlIHBhY2thZ2UgaXMgb3JnYW5pemVkIGFyb3VuZCB0aGUgbW9kZWwuICBUaGUgbW9kZWwgcHJvdmlkZXMgYm90aAorImV4dGVybmFsIiBBUElzIGludGVuZGVkIGZvciB1c2UgYnkgYXBwbGljYXRpb24gcHJvZ3JhbXMgdXNpbmcgdGhlIGxpYnJhcnksCithbmQgImludGVybmFsIiBBUElzIGludGVuZGVkIGZvciB1c2UgYnkgdGhlIFBhcnNlciBhbmQgR2VuZXJhdG9yIGNvbXBvbmVudHMuCitUaGlzIGRpdmlzaW9uIGlzIGludGVudGlvbmFsbHkgYSBiaXQgZnV6eTsgdGhlIEFQSSBkZXNjcmliZWQgYnkgdGhpcyBkb2N1bWVudGF0aW9uCitpcyBhbGwgYSBwdWJsaWMsIHN0YWJsZSBBUEkuICBUaGlzIGFsbG93cyBmb3IgYW4gYXBwbGljYXRpb24gd2l0aCBzcGVjaWFsIG5lZWRzCit0byBpbXBsZW1lbnQgaXRzIG93biBwYXJzZXIgYW5kL29yIGdlbmVyYXRvci4KKworSW4gYWRkaXRpb24gdG8gdGhlIHRocmVlIG1ham9yIGZ1bmN0aW9uYWwgY29tcG9uZW50cywgdGhlcmUgaXMgYSB0aGlyZCBrZXkKK2NvbXBvbmVudCB0byB0aGUgYXJjaGl0ZWN0dXJlOgorCisgICAgUG9saWN5CisgICAgICAgIEFuIG9iamVjdCB0aGF0IHNwZWNpZmllcyB2YXJpb3VzIGJlaGF2aW9yYWwgc2V0dGluZ3MgYW5kIGNhcnJpZXMKKyAgICAgICAgaW1wbGVtZW50YXRpb25zIG9mIHZhcmlvdXMgYmVoYXZpb3ItY29udHJvbGxpbmcgbWV0aG9kcy4KKworVGhlIFBvbGljeSBmcmFtZXdvcmsgcHJvdmlkZXMgYSBzaW1wbGUgYW5kIGNvbnZlbmllbnQgd2F5IHRvIGNvbnRyb2wgdGhlCitiZWhhdmlvciBvZiB0aGUgbGlicmFyeSwgbWFraW5nIGl0IHBvc3NpYmxlIGZvciB0aGUgbGlicmFyeSB0byBiZSB1c2VkIGluIGEKK3ZlcnkgZmxleGlibGUgZmFzaGlvbiB3aGlsZSBsZXZlcmFnaW5nIHRoZSBjb21tb24gY29kZSByZXF1aXJlZCB0byBwYXJzZSwKK3JlcHJlc2VudCwgYW5kIGdlbmVyYXRlIG1lc3NhZ2UtbGlrZSBvYmplY3RzLiAgRm9yIGV4YW1wbGUsIGluIGFkZGl0aW9uIHRvIHRoZQorZGVmYXVsdCA6cmZjOmA1MzIyYCBlbWFpbCBtZXNzYWdlIHBvbGljeSwgd2UgYWxzbyBoYXZlIGEgcG9saWN5IHRoYXQgbWFuYWdlcworSFRUUCBoZWFkZXJzIGluIGEgZmFzaGlvbiBjb21wbGlhbnQgd2l0aCA6cmZjOmAyNjE2YC4gIEluZGl2aWR1YWwgcG9saWN5Citjb250cm9scywgc3VjaCBhcyB0aGUgbWF4aW11bSBsaW5lIGxlbmd0aCBwcm9kdWNlZCBieSB0aGUgZ2VuZXJhdG9yLCBjYW4gYWxzbworYmUgY29udHJvbGxlZCBpbmRpdmlkdWFsbHkgdG8gbWVldCBzcGVjaWFsaXplZCBhcHBsaWNhdGlvbiByZXF1aXJlbWVudHMuCisKKworVGhlIE1vZGVsCistLS0tLS0tLS0KKworVGhlIG1lc3NhZ2UgbW9kZWwgaXMgaW1wbGVtZW50ZWQgYnkgdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MuCitUaGUgbW9kZWwgZGl2aWRlcyBhIG1lc3NhZ2UgaW50byB0aGUgdHdvIGZ1bmRhbWVudGFsIHBhcnRzIGRpc2N1c3NlZCBieSB0aGUKK1JGQzogdGhlIGhlYWRlciBzZWN0aW9uIGFuZCB0aGUgYm9keS4gIFRoZSBgTWVzc2FnZWAgb2JqZWN0IGFjdHMgYXMgYQorcHNldWRvLWRpY3Rpb25hcnkgb2YgbmFtZWQgaGVhZGVycy4gIEl0cyBkaWN0aW9uYXJ5IGludGVyZmFjZSBwcm92aWRlcworY29udmVuaWVudCBhY2Nlc3MgdG8gaW5kaXZpZHVhbCBoZWFkZXJzIGJ5IG5hbWUuICBIb3dldmVyLCBhbGwgaGVhZGVycyBhcmUga2VwdAoraW50ZXJuYWxseSBpbiBhbiBvcmRlcmVkIGxpc3QsIHNvIHRoYXQgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBvcmRlciBvZiB0aGUKK2hlYWRlcnMgaW4gdGhlIG9yaWdpbmFsIG1lc3NhZ2UgaXMgcHJlc2VydmVkLgorCitUaGUgYE1lc3NhZ2VgIG9iamVjdCBhbHNvIGhhcyBhIGBwYXlsb2FkYCB0aGF0IGhvbGRzIHRoZSBib2R5LiAgQSBgcGF5bG9hZGAgY2FuCitiZSBvbmUgb2YgdHdvIHRoaW5nczogZGF0YSwgb3IgYSBsaXN0IG9mIGBNZXNzYWdlYCBvYmplY3RzLiAgVGhlIGxhdHRlciBpcyB1c2VkCit0byByZXByZXNlbnQgYSBtdWx0aXBhcnQgTUlNRSBtZXNzYWdlLiAgTGlzdHMgY2FuIGJlIG5lc3RlZCBhcmJpdHJhcmlseSBkZWVwbHkKK2luIG9yZGVyIHRvIHJlcHJlc2VudCB0aGUgbWVzc2FnZSwgd2l0aCBhbGwgdGVybWluYWwgbGVhdmVzIGhhdmluZyBub24tbGlzdAorZGF0YSBwYXlsb2Fkcy4KKworCitNZXNzYWdlIExpZmVjeWNsZQorLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGdlbmVyYWwgbGlmZWN5bGUgb2YgYSBtZXNzYWdlIGlzOgorCisgICAgQ3JlYXRpb24KKyAgICAgICAgQSBgTWVzc2FnZWAgb2JqZWN0IGNhbiBiZSBjcmVhdGVkIGJ5IGEgUGFyc2VyLCBvciBpdCBjYW4gYmUKKyAgICAgICAgaW5zdGFudGlhdGVkIGFzIGFuIGVtcHR5IG1lc3NhZ2UgYnkgYW4gYXBwbGljYXRpb24uCisKKyAgICBNYW5pcHVsYXRpb24KKyAgICAgICAgVGhlIGFwcGxpY2F0aW9uIG1heSBleGFtaW5lIG9uZSBvciBtb3JlIGhlYWRlcnMsIGFuZC9vciB0aGUKKyAgICAgICAgcGF5bG9hZCwgYW5kIGl0IG1heSBtb2RpZnkgb25lIG9yIG1vcmUgaGVhZGVycyBhbmQvb3IKKyAgICAgICAgdGhlIHBheWxvYWQuICBUaGlzIG1heSBiZSBkb25lIG9uIHRoZSB0b3AgbGV2ZWwgYE1lc3NhZ2VgCisgICAgICAgIG9iamVjdCwgb3Igb24gYW55IHN1Yi1vYmplY3QuCisKKyAgICBGaW5hbGl6YXRpb24KKyAgICAgICAgVGhlIE1vZGVsIGlzIGNvbnZlcnRlZCBpbnRvIGEgdW5pY29kZSBvciBiaW5hcnkgc3RyZWFtLAorICAgICAgICBvciB0aGUgbW9kZWwgaXMgZGlzY2FyZGVkLgorCisKKworSGVhZGVyIFBvbGljeSBDb250cm9sIER1cmluZyBMaWZlY3ljbGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK09uZSBvZiB0aGUgbWFqb3IgY29udHJvbHMgZXhlcnRlZCBieSB0aGUgUG9saWN5IGlzIHRoZSBtYW5hZ2VtZW50IG9mIGhlYWRlcnMKK2R1cmluZyB0aGUgYE1lc3NhZ2VgIGxpZmVjeWNsZS4gIE1vc3QgYXBwbGljYXRpb25zIGRvbid0IG5lZWQgdG8gYmUgYXdhcmUgb2YKK3RoaXMuCisKK0EgaGVhZGVyIGVudGVycyB0aGUgbW9kZWwgaW4gb25lIG9mIHR3byB3YXlzOiB2aWEgYSBQYXJzZXIsIG9yIGJ5IGJlaW5nIHNldCB0bworYSBzcGVjaWZpYyB2YWx1ZSBieSBhbiBhcHBsaWNhdGlvbiBwcm9ncmFtIGFmdGVyIHRoZSBNb2RlbCBhbHJlYWR5IGV4aXN0cy4KK1NpbWlsYXJseSwgYSBoZWFkZXIgZXhpdHMgdGhlIG1vZGVsIGluIG9uZSBvZiB0d28gd2F5czogYnkgYmVpbmcgc2VyaWFsaXplZCBieQorYSBHZW5lcmF0b3IsIG9yIGJ5IGJlaW5nIHJldHJpZXZlZCBmcm9tIGEgTW9kZWwgYnkgYW4gYXBwbGljYXRpb24gcHJvZ3JhbS4gIFRoZQorUG9saWN5IG9iamVjdCBwcm92aWRlcyBob29rcyBmb3IgYWxsIGZvdXIgb2YgdGhlc2UgcGF0aHdheXMuCisKK1RoZSBtb2RlbCBzdG9yYWdlIGZvciBoZWFkZXJzIGlzIGEgbGlzdCBvZiAobmFtZSwgdmFsdWUpIHR1cGxlcy4KKworVGhlIFBhcnNlciBpZGVudGlmaWVzIGhlYWRlcnMgZHVyaW5nIHBhcnNpbmcsIGFuZCBwYXNzZXMgdGhlbSB0byB0aGUKKzptZXRoOmB+ZW1haWwucG9saWN5LlBvbGljeS5oZWFkZXJfc291cmNlX3BhcnNlYCBtZXRob2Qgb2YgdGhlIFBvbGljeS4gIFRoZQorcmVzdWx0IG9mIHRoYXQgbWV0aG9kIGlzIHRoZSAobmFtZSwgdmFsdWUpIHR1cGxlIHRvIGJlIHN0b3JlZCBpbiB0aGUgbW9kZWwuCisKK1doZW4gYW4gYXBwbGljYXRpb24gcHJvZ3JhbSBzdXBwbGllcyBhIGhlYWRlciB2YWx1ZSAoZm9yIGV4YW1wbGUsIHRocm91Z2ggdGhlCitgTWVzc2FnZWAgb2JqZWN0IGBfX3NldGl0ZW1fX2AgaW50ZXJmYWNlKSwgdGhlIG5hbWUgYW5kIHRoZSB2YWx1ZSBhcmUgcGFzc2VkIHRvCit0aGUgOm1ldGg6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmhlYWRlcl9zdG9yZV9wYXJzZWAgbWV0aG9kIG9mIHRoZSBQb2xpY3ksIHdoaWNoCityZXR1cm5zIHRoZSAobmFtZSwgdmFsdWUpIHR1cGxlIHRvIGJlIHN0b3JlZCBpbiB0aGUgbW9kZWwuCisKK1doZW4gYW4gYXBwbGljYXRpb24gcHJvZ3JhbSByZXRyaWV2ZXMgYSBoZWFkZXIgKHRocm91Z2ggYW55IG9mIHRoZSBkaWN0IG9yIGxpc3QKK2ludGVyZmFjZXMgb2YgYE1lc3NhZ2VgKSwgdGhlIG5hbWUgYW5kIHZhbHVlIGFyZSBwYXNzZWQgdG8gdGhlCis6bWV0aDpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuaGVhZGVyX2ZldGNoX3BhcnNlYCBtZXRob2Qgb2YgdGhlIFBvbGljeSB0bworb2J0YWluIHRoZSB2YWx1ZSByZXR1cm5lZCB0byB0aGUgYXBwbGljYXRpb24uCisKK1doZW4gYSBHZW5lcmF0b3IgcmVxdWVzdHMgYSBoZWFkZXIgZHVyaW5nIHNlcmlhbGl6YXRpb24sIHRoZSBuYW1lIGFuZCB2YWx1ZSBhcmUKK3Bhc3NlZCB0byB0aGUgOm1ldGg6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmZvbGRgIG1ldGhvZCBvZiB0aGUgUG9saWN5LCB3aGljaAorcmV0dXJucyBhIHN0cmluZyBjb250YWluaW5nIGxpbmUgYnJlYWtzIGluIHRoZSBhcHByb3ByaWF0ZSBwbGFjZXMuICBUaGUKKzptZXRoOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAgUG9saWN5IGNvbnRyb2wgZGV0ZXJtaW5lcyB3aGV0aGVyIG9yCitub3QgQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZyBpcyBwZXJmb3JtZWQgb24gdGhlIGRhdGEgaW4gdGhlIGhlYWRlci4gIFRoZXJlIGlzCithbHNvIGEgOm1ldGg6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmJpbmFyeV9mb2xkYCBtZXRob2QgZm9yIHVzZSBieSBnZW5lcmF0b3JzCit0aGF0IHByb2R1Y2UgYmluYXJ5IG91dHB1dCwgd2hpY2ggcmV0dXJucyB0aGUgZm9sZGVkIGhlYWRlciBhcyBiaW5hcnkgZGF0YSwKK3Bvc3NpYmx5IGZvbGRlZCBhdCBkaWZmZXJlbnQgcGxhY2VzIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcgc3RyaW5nIHdvdWxkIGJlLgorCisKK0hhbmRsaW5nIEJpbmFyeSBEYXRhCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbiBhbiBpZGVhbCB3b3JsZCBhbGwgbWVzc2FnZSBkYXRhIHdvdWxkIGNvbmZvcm0gdG8gdGhlIFJGQ3MsIG1lYW5pbmcgdGhhdCB0aGUKK3BhcnNlciBjb3VsZCBkZWNvZGUgdGhlIG1lc3NhZ2UgaW50byB0aGUgaWRlYWxpemVkIHVuaWNvZGUgbWVzc2FnZSB0aGF0IHRoZQorc2VuZGVyIG9yaWdpbmFsbHkgd3JvdGUuICBJbiB0aGUgcmVhbCB3b3JsZCwgdGhlIGVtYWlsIHBhY2thZ2UgbXVzdCBhbHNvIGJlCithYmxlIHRvIGRlYWwgd2l0aCBiYWRseSBmb3JtYXR0ZWQgbWVzc2FnZXMsIGluY2x1ZGluZyBtZXNzYWdlcyBjb250YWluaW5nCitub24tQVNDSUkgY2hhcmFjdGVycyB0aGF0IGVpdGhlciBoYXZlIG5vIGluZGljYXRlZCBjaGFyYWN0ZXIgc2V0IG9yIGFyZSBub3QKK3ZhbGlkIGNoYXJhY3RlcnMgaW4gdGhlIGluZGljYXRlZCBjaGFyYWN0ZXIgc2V0LgorCitTaW5jZSBlbWFpbCBtZXNzYWdlcyBhcmUgKnByaW1hcmlseSogdGV4dCBkYXRhLCBhbmQgb3BlcmF0aW9ucyBvbiBtZXNzYWdlIGRhdGEKK2FyZSBwcmltYXJpbHkgdGV4dCBvcGVyYXRpb25zIChleGNlcHQgZm9yIGJpbmFyeSBwYXlsb2FkcyBvZiBjb3Vyc2UpLCB0aGUgbW9kZWwKK3N0b3JlcyBhbGwgdGV4dCBkYXRhIGFzIHVuaWNvZGUgc3RyaW5ncy4gIFVuLWRlY29kYWJsZSBiaW5hcnkgaW5zaWRlIHRleHQKK2RhdGEgaXMgaGFuZGxlZCBieSB1c2luZyB0aGUgYHN1cnJvZ2F0ZWVzY2FwZWAgZXJyb3IgaGFuZGxlciBvZiB0aGUgQVNDSUkKK2NvZGVjLiAgQXMgd2l0aCB0aGUgYmluYXJ5IGZpbGVuYW1lcyB0aGUgZXJyb3IgaGFuZGxlciB3YXMgaW50cm9kdWNlZCB0bworaGFuZGxlLCB0aGlzIGFsbG93cyB0aGUgZW1haWwgcGFja2FnZSB0byAiY2FycnkiIHRoZSBiaW5hcnkgZGF0YSByZWNlaXZlZAorZHVyaW5nIHBhcnNpbmcgYWxvbmcgdW50aWwgdGhlIG91dHB1dCBzdGFnZSwgYXQgd2hpY2ggdGltZSBpdCBpcyByZWdlbmVyYXRlZAoraW4gaXRzIG9yaWdpbmFsIGZvcm0uCisKK1RoaXMgY2FycmllZCBiaW5hcnkgZGF0YSBpcyBhbG1vc3QgZW50aXJlbHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgVGhlIG9uZQorcGxhY2Ugd2hlcmUgaXQgaXMgdmlzaWJsZSBpbiB0aGUgQVBJIGlzIGluIHRoZSAiaW50ZXJuYWwiIEFQSS4gIEEgUGFyc2VyIG11c3QKK2RvIHRoZSBgc3Vycm9nYXRlZXNjYXBlYCBlbmNvZGluZyBvZiBiaW5hcnkgaW5wdXQgZGF0YSwgYW5kIHBhc3MgdGhhdCBkYXRhIHRvCit0aGUgYXBwcm9wcmlhdGUgUG9saWN5IG1ldGhvZC4gIFRoZSAiaW50ZXJuYWwiIGludGVyZmFjZSB1c2VkIGJ5IHRoZSBHZW5lcmF0b3IKK3RvIGFjY2VzcyBoZWFkZXIgdmFsdWVzIHByZXNlcnZlcyB0aGUgYHN1cnJvZ2F0ZWVzY2FwZWRgIGJ5dGVzLiAgQWxsIG90aGVyCitpbnRlcmZhY2VzIGNvbnZlcnQgdGhlIGJpbmFyeSBkYXRhIGVpdGhlciBiYWNrIGludG8gYnl0ZXMgb3IgaW50byBhIHNhZmUgZm9ybQorKGxvc2luZyBpbmZvcm1hdGlvbiBpbiBzb21lIGNhc2VzKS4KKworCitCYWNrd2FyZCBDb21wYXRpYmlsaXR5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6Y2xhc3M6YH5lbWFpbC5wb2xpY3kuUG9saWN5LkNvbXBhdDMyYCBQb2xpY3kgcHJvdmlkZXMgYmFja3dhcmQKK2NvbXBhdGliaWxpdHkgd2l0aCB2ZXJzaW9uIDUuMSBvZiB0aGUgZW1haWwgcGFja2FnZS4gIEl0IGRvZXMgdGhpcyB2aWEgdGhlCitmb2xsb3dpbmcgaW1wbGVtZW50YXRpb24gb2YgdGhlIGZvdXIrMSBQb2xpY3kgbWV0aG9kcyBkZXNjcmliZWQgYWJvdmU6CisKK2hlYWRlcl9zb3VyY2VfcGFyc2UKKyAgICBTcGxpdHMgdGhlIGZpcnN0IGxpbmUgb24gdGhlIGNvbG9uIHRvIG9idGFpbiB0aGUgbmFtZSwgZGlzY2FyZHMgYW55IHNwYWNlcworICAgIGFmdGVyIHRoZSBjb2xvbiwgYW5kIGpvaW5zIHRoZSByZW1haW5kZXIgb2YgdGhlIGxpbmUgd2l0aCBhbGwgb2YgdGhlCisgICAgcmVtYWluaW5nIGxpbmVzLCBwcmVzZXJ2aW5nIHRoZSBsaW5lc2VwIGNoYXJhY3RlcnMgdG8gb2J0YWluIHRoZSB2YWx1ZS4KKyAgICBUcmFpbGluZyBjYXJyaWFnZSByZXR1cm4gYW5kL29yIGxpbmVmZWVkIGNoYXJhY3RlcnMgYXJlIHN0cmlwcGVkIGZyb20gdGhlCisgICAgcmVzdWx0aW5nIHZhbHVlIHN0cmluZy4KKworaGVhZGVyX3N0b3JlX3BhcnNlCisgICAgUmV0dXJucyB0aGUgbmFtZSBhbmQgdmFsdWUgZXhhY3RseSBhcyByZWNlaXZlZCBmcm9tIHRoZSBhcHBsaWNhdGlvbi4KKworaGVhZGVyX2ZldGNoX3BhcnNlCisgICAgSWYgdGhlIHZhbHVlIGNvbnRhaW5zIGFueSBgc3Vycm9nYXRlZXNjYXBlZGAgYmluYXJ5IGRhdGEsIHJldHVybiB0aGUgdmFsdWUKKyAgICBhcyBhIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIG9iamVjdCwgdXNpbmcgdGhlIGNoYXJhY3RlciBzZXQKKyAgICBgdW5rbm93bi04Yml0YC4gIE90aGVyd2lzZSBqdXN0IHJldHVybnMgdGhlIHZhbHVlLgorCitmb2xkCisgICAgVXNlcyA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCdzIGZvbGRpbmcgdG8gZm9sZCBoZWFkZXJzIGluIHRoZQorICAgIHNhbWUgd2F5IHRoZSBlbWFpbDUuMSBnZW5lcmF0b3IgZGlkLgorCitiaW5hcnlfZm9sZAorICAgIFNhbWUgYXMgZm9sZCwgYnV0IGVuY29kZXMgdG8gJ2FzY2lpJy4KKworCitOZXcgQWxnb3JpdGhtCistLS0tLS0tLS0tLS0tCisKK2hlYWRlcl9zb3VyY2VfcGFyc2UKKyAgICBTYW1lIGFzIGxlZ2FjeSBiZWhhdmlvci4KKworaGVhZGVyX3N0b3JlX3BhcnNlCisgICAgU2FtZSBhcyBsZWdhY3kgYmVoYXZpb3IuCisKK2hlYWRlcl9mZXRjaF9wYXJzZQorICAgIElmIHRoZSB2YWx1ZSBpcyBhbHJlYWR5IGEgaGVhZGVyIG9iamVjdCwgcmV0dXJucyBpdC4gIE90aGVyd2lzZSwgcGFyc2VzIHRoZQorICAgIHZhbHVlIHVzaW5nIHRoZSBuZXcgcGFyc2VyLCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0aW5nIG9iamVjdCBhcyB0aGUgdmFsdWUuCisgICAgYHN1cnJvZ2F0ZWVzY2FwZWRgIGJ5dGVzIGdldCB0dXJuZWQgaW50byB1bmljb2RlIHVua25vd24gY2hhcmFjdGVyIGNvZGUKKyAgICBwb2ludHMuCisKK2ZvbGQKKyAgICBVc2VzIHRoZSBuZXcgaGVhZGVyIGZvbGRpbmcgYWxnb3JpdGhtLCByZXNwZWN0aW5nIHRoZSBwb2xpY3kgc2V0dGluZ3MuCisgICAgc3Vycm9nYXRlZXNjYXBlZCBieXRlcyBhcmUgZW5jb2RlZCB1c2luZyB0aGUgYGB1bmtub3duLThiaXRgYCBjaGFyc2V0IGZvcgorICAgIGBgY3RlX3R5cGU9N2JpdGBgIG9yIGBgOGJpdGBgLiAgUmV0dXJucyBhIHN0cmluZy4KKworICAgIEF0IHNvbWUgcG9pbnQgdGhlcmUgd2lsbCBhbHNvIGJlIGEgYGBjdGVfdHlwZT11bmljb2RlYGAsIGFuZCBmb3IgdGhhdAorICAgIHBvbGljeSBmb2xkIHdpbGwgc2VyaWFsaXplIHRoZSBpZGVhbGl6ZWQgdW5pY29kZSBtZXNzYWdlIHdpdGggUkZDLWxpa2UKKyAgICBmb2xkaW5nLCBjb252ZXJ0aW5nIGFueSBzdXJyb2dhdGVlc2NhcGVkIGJ5dGVzIGludG8gdGhlIHVuaWNvZGUKKyAgICB1bmtub3duIGNoYXJhY3RlciBnbHlwaC4KKworYmluYXJ5X2ZvbGQKKyAgICBVc2VzIHRoZSBuZXcgaGVhZGVyIGZvbGRpbmcgYWxnb3JpdGhtLCByZXNwZWN0aW5nIHRoZSBwb2xpY3kgc2V0dGluZ3MuCisgICAgc3Vycm9nYXRlZXNjYXBlZCBieXRlcyBhcmUgZW5jb2RlZCB1c2luZyB0aGUgYHVua25vd24tOGJpdGAgY2hhcnNldCBmb3IKKyAgICBgYGN0ZV90eXBlPTdiaXRgYCwgYW5kIGdldCB0dXJuZWQgYmFjayBpbnRvIGJ5dGVzIGZvciBgYGN0ZV90eXBlPThiaXRgYC4KKyAgICBSZXR1cm5zIGJ5dGVzLgorCisgICAgQXQgc29tZSBwb2ludCB0aGVyZSB3aWxsIGFsc28gYmUgYSBgYGN0ZV90eXBlPXVuaWNvZGVgYCwgYW5kIGZvciB0aGF0CisgICAgcG9saWN5IGJpbmFyeV9mb2xkIHdpbGwgc2VyaWFsaXplIHRoZSBtZXNzYWdlIGFjY29yZGluZyB0byA6cmZjOmBgNTMzNWBgLgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2Vycm9ycy5weSBiL0xpYi9lbWFpbC9lcnJvcnMucHkKaW5kZXggZDUyYTYyNC4uNzkxMjM5ZiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2Vycm9ycy5weQorKysgYi9MaWIvZW1haWwvZXJyb3JzLnB5CkBAIC01LDcgKzUsNiBAQAogIiIiZW1haWwgcGFja2FnZSBleGNlcHRpb24gY2xhc3Nlcy4iIiIKIAogCi0MCiBjbGFzcyBNZXNzYWdlRXJyb3IoRXhjZXB0aW9uKToKICAgICAiIiJCYXNlIGNsYXNzIGZvciBlcnJvcnMgaW4gdGhlIGVtYWlsIHBhY2thZ2UuIiIiCiAKQEAgLTMwLDEyICsyOSwxMyBAQAogICAgICIiIkFuIGlsbGVnYWwgY2hhcnNldCB3YXMgZ2l2ZW4uIiIiCiAKIAotDAogIyBUaGVzZSBhcmUgcGFyc2luZyBkZWZlY3RzIHdoaWNoIHRoZSBwYXJzZXIgd2FzIGFibGUgdG8gd29yayBhcm91bmQuCi1jbGFzcyBNZXNzYWdlRGVmZWN0OgorY2xhc3MgTWVzc2FnZURlZmVjdChWYWx1ZUVycm9yKToKICAgICAiIiJCYXNlIGNsYXNzIGZvciBhIG1lc3NhZ2UgZGVmZWN0LiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmU9Tm9uZSk6CisgICAgICAgIGlmIGxpbmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKGxpbmUpCiAgICAgICAgIHNlbGYubGluZSA9IGxpbmUKIAogY2xhc3MgTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgpAQCAtNDQsMTQgKzQ0LDY0IEBACiBjbGFzcyBTdGFydEJvdW5kYXJ5Tm90Rm91bmREZWZlY3QoTWVzc2FnZURlZmVjdCk6CiAgICAgIiIiVGhlIGNsYWltZWQgc3RhcnQgYm91bmRhcnkgd2FzIG5ldmVyIGZvdW5kLiIiIgogCitjbGFzcyBDbG9zZUJvdW5kYXJ5Tm90Rm91bmREZWZlY3QoTWVzc2FnZURlZmVjdCk6CisgICAgIiIiQSBzdGFydCBib3VuZGFyeSB3YXMgZm91bmQsIGJ1dCBub3QgdGhlIGNvcnJlc3BvbmRpbmcgY2xvc2UgYm91bmRhcnkuIiIiCisKIGNsYXNzIEZpcnN0SGVhZGVyTGluZUlzQ29udGludWF0aW9uRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgogICAgICIiIkEgbWVzc2FnZSBoYWQgYSBjb250aW51YXRpb24gbGluZSBhcyBpdHMgZmlyc3QgaGVhZGVyIGxpbmUuIiIiCiAKIGNsYXNzIE1pc3BsYWNlZEVudmVsb3BlSGVhZGVyRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgogICAgICIiIkEgJ1VuaXgtZnJvbScgaGVhZGVyIHdhcyBmb3VuZCBpbiB0aGUgbWlkZGxlIG9mIGEgaGVhZGVyIGJsb2NrLiIiIgogCi1jbGFzcyBNYWxmb3JtZWRIZWFkZXJEZWZlY3QoTWVzc2FnZURlZmVjdCk6Ci0gICAgIiIiRm91bmQgYSBoZWFkZXIgdGhhdCB3YXMgbWlzc2luZyBhIGNvbG9uLCBvciB3YXMgb3RoZXJ3aXNlIG1hbGZvcm1lZC4iIiIKK2NsYXNzIE1pc3NpbmdIZWFkZXJCb2R5U2VwYXJhdG9yRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgorICAgICIiIkZvdW5kIGxpbmUgd2l0aCBubyBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIG5vIGNvbG9uIGJlZm9yZSBibGFuayBsaW5lLiIiIgorIyBYWFg6IGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIGp1c3QgaW4gY2FzZSAoaXQgd2FzIG5ldmVyIGVtaXR0ZWQpLgorTWFsZm9ybWVkSGVhZGVyRGVmZWN0ID0gTWlzc2luZ0hlYWRlckJvZHlTZXBhcmF0b3JEZWZlY3QKIAogY2xhc3MgTXVsdGlwYXJ0SW52YXJpYW50VmlvbGF0aW9uRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgogICAgICIiIkEgbWVzc2FnZSBjbGFpbWVkIHRvIGJlIGEgbXVsdGlwYXJ0IGJ1dCBubyBzdWJwYXJ0cyB3ZXJlIGZvdW5kLiIiIgorCitjbGFzcyBJbnZhbGlkTXVsdGlwYXJ0Q29udGVudFRyYW5zZmVyRW5jb2RpbmdEZWZlY3QoTWVzc2FnZURlZmVjdCk6CisgICAgIiIiQW4gaW52YWxpZCBjb250ZW50IHRyYW5zZmVyIGVuY29kaW5nIHdhcyBzZXQgb24gdGhlIG11bHRpcGFydCBpdHNlbGYuIiIiCisKK2NsYXNzIFVuZGVjb2RhYmxlQnl0ZXNEZWZlY3QoTWVzc2FnZURlZmVjdCk6CisgICAgIiIiSGVhZGVyIGNvbnRhaW5lZCBieXRlcyB0aGF0IGNvdWxkIG5vdCBiZSBkZWNvZGVkIiIiCisKK2NsYXNzIEludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgorICAgICIiImJhc2U2NCBlbmNvZGVkIHNlcXVlbmNlIGhhZCBhbiBpbmNvcnJlY3QgbGVuZ3RoIiIiCisKK2NsYXNzIEludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgorICAgICIiImJhc2U2NCBlbmNvZGVkIHNlcXVlbmNlIGhhZCBjaGFyYWN0ZXJzIG5vdCBpbiBiYXNlNjQgYWxwaGFiZXQiIiIKKworIyBUaGVzZSBlcnJvcnMgYXJlIHNwZWNpZmljIHRvIGhlYWRlciBwYXJzaW5nLgorCitjbGFzcyBIZWFkZXJEZWZlY3QoTWVzc2FnZURlZmVjdCk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgYSBoZWFkZXIgZGVmZWN0LiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprdykKKworY2xhc3MgSW52YWxpZEhlYWRlckRlZmVjdChIZWFkZXJEZWZlY3QpOgorICAgICIiIkhlYWRlciBpcyBub3QgdmFsaWQsIG1lc3NhZ2UgZ2l2ZXMgZGV0YWlscy4iIiIKKworY2xhc3MgSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWUoSGVhZGVyRGVmZWN0KToKKyAgICAiIiJBIGhlYWRlciB0aGF0IG11c3QgaGF2ZSBhIHZhbHVlIGhhZCBub25lIiIiCisKK2NsYXNzIE5vblByaW50YWJsZURlZmVjdChIZWFkZXJEZWZlY3QpOgorICAgICIiIkFTQ0lJIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgYXNjaWktcHJpbnRhYmxlIHJhbmdlIGZvdW5kIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbm9uX3ByaW50YWJsZXMpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKG5vbl9wcmludGFibGVzKQorICAgICAgICBzZWxmLm5vbl9wcmludGFibGVzID0gbm9uX3ByaW50YWJsZXMKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKCJ0aGUgZm9sbG93aW5nIEFTQ0lJIG5vbi1wcmludGFibGVzIGZvdW5kIGluIGhlYWRlcjogIgorICAgICAgICAgICAgInt9Ii5mb3JtYXQoc2VsZi5ub25fcHJpbnRhYmxlcykpCisKK2NsYXNzIE9ic29sZXRlSGVhZGVyRGVmZWN0KEhlYWRlckRlZmVjdCk6CisgICAgIiIiSGVhZGVyIHVzZXMgc3ludGF4IGRlY2xhcmVkIG9ic29sZXRlIGJ5IFJGQyA1MzIyIiIiCisKK2NsYXNzIE5vbkFTQ0lJTG9jYWxQYXJ0RGVmZWN0KEhlYWRlckRlZmVjdCk6CisgICAgIiIibG9jYWxfcGFydCBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycyIiIgorICAgICMgVGhpcyBkZWZlY3Qgb25seSBvY2N1cnMgZHVyaW5nIHVuaWNvZGUgcGFyc2luZywgbm90IHdoZW4KKyAgICAjIHBhcnNpbmcgbWVzc2FnZXMgZGVjb2RlZCBmcm9tIGJpbmFyeS4KZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5IGIvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkKaW5kZXggMTZlZDI4OC4uZWE0MWU5NSAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkKKysrIGIvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkKQEAgLTI1LDYgKzI1LDcgQEAKIAogZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCiBmcm9tIGVtYWlsIGltcG9ydCBtZXNzYWdlCitmcm9tIGVtYWlsLl9wb2xpY3liYXNlIGltcG9ydCBjb21wYXQzMgogCiBOTENSRSA9IHJlLmNvbXBpbGUoJ1xyXG58XHJ8XG4nKQogTkxDUkVfYm9sID0gcmUuY29tcGlsZSgnKFxyXG58XHJ8XG4pJykKQEAgLTEyMCw5ICsxMjEsNiBAQAogICAgICAgICAjIFJldmVyc2UgYW5kIGluc2VydCBhdCB0aGUgZnJvbnQgb2YgdGhlIGxpbmVzLgogICAgICAgICBzZWxmLl9saW5lc1s6MF0gPSBsaW5lc1s6Oi0xXQogCi0gICAgZGVmIGlzX2Nsb3NlZChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2Nsb3NlZAotCiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZgogCkBAIC0xMzcsOSArMTM1LDIyIEBACiBjbGFzcyBGZWVkUGFyc2VyOgogICAgICIiIkEgZmVlZC1zdHlsZSBwYXJzZXIgb2YgZW1haWwuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgX2ZhY3Rvcnk9bWVzc2FnZS5NZXNzYWdlKToKLSAgICAgICAgIiIiX2ZhY3RvcnkgaXMgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzIHRvIGNyZWF0ZSBhIG5ldyBtZXNzYWdlIG9iaiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfZmFjdG9yeT1tZXNzYWdlLk1lc3NhZ2UsICosIHBvbGljeT1jb21wYXQzMik6CisgICAgICAgICIiIl9mYWN0b3J5IGlzIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cyB0byBjcmVhdGUgYSBuZXcgbWVzc2FnZSBvYmoKKworICAgICAgICBUaGUgcG9saWN5IGtleXdvcmQgc3BlY2lmaWVzIGEgcG9saWN5IG9iamVjdCB0aGF0IGNvbnRyb2xzIGEgbnVtYmVyIG9mCisgICAgICAgIGFzcGVjdHMgb2YgdGhlIHBhcnNlcidzIG9wZXJhdGlvbi4gIFRoZSBkZWZhdWx0IHBvbGljeSBtYWludGFpbnMKKyAgICAgICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKworICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fZmFjdG9yeSA9IF9mYWN0b3J5CisgICAgICAgIHNlbGYucG9saWN5ID0gcG9saWN5CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIF9mYWN0b3J5KHBvbGljeT1zZWxmLnBvbGljeSkKKyAgICAgICAgICAgIHNlbGYuX2ZhY3Rvcnlfa3dkcyA9IGxhbWJkYTogeydwb2xpY3knOiBzZWxmLnBvbGljeX0KKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICMgQXNzdW1lIHRoaXMgaXMgYW4gb2xkLXN0eWxlIGZhY3RvcnkKKyAgICAgICAgICAgIHNlbGYuX2ZhY3Rvcnlfa3dkcyA9IGxhbWJkYToge30KICAgICAgICAgc2VsZi5faW5wdXQgPSBCdWZmZXJlZFN1YkZpbGUoKQogICAgICAgICBzZWxmLl9tc2dzdGFjayA9IFtdCiAgICAgICAgIHNlbGYuX3BhcnNlID0gc2VsZi5fcGFyc2VnZW4oKS5fX25leHRfXwpAQCAtMTcxLDExICsxODIsMTIgQEAKICAgICAgICAgIyBMb29rIGZvciBmaW5hbCBzZXQgb2YgZGVmZWN0cwogICAgICAgICBpZiByb290LmdldF9jb250ZW50X21haW50eXBlKCkgPT0gJ211bHRpcGFydCcgXAogICAgICAgICAgICAgICAgYW5kIG5vdCByb290LmlzX211bHRpcGFydCgpOgotICAgICAgICAgICAgcm9vdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuTXVsdGlwYXJ0SW52YXJpYW50VmlvbGF0aW9uRGVmZWN0KCkpCisgICAgICAgICAgICBkZWZlY3QgPSBlcnJvcnMuTXVsdGlwYXJ0SW52YXJpYW50VmlvbGF0aW9uRGVmZWN0KCkKKyAgICAgICAgICAgIHNlbGYucG9saWN5LmhhbmRsZV9kZWZlY3Qocm9vdCwgZGVmZWN0KQogICAgICAgICByZXR1cm4gcm9vdAogCiAgICAgZGVmIF9uZXdfbWVzc2FnZShzZWxmKToKLSAgICAgICAgbXNnID0gc2VsZi5fZmFjdG9yeSgpCisgICAgICAgIG1zZyA9IHNlbGYuX2ZhY3RvcnkoKipzZWxmLl9mYWN0b3J5X2t3ZHMoKSkKICAgICAgICAgaWYgc2VsZi5fY3VyIGFuZCBzZWxmLl9jdXIuZ2V0X2NvbnRlbnRfdHlwZSgpID09ICdtdWx0aXBhcnQvZGlnZXN0JzoKICAgICAgICAgICAgIG1zZy5zZXRfZGVmYXVsdF90eXBlKCdtZXNzYWdlL3JmYzgyMicpCiAgICAgICAgIGlmIHNlbGYuX21zZ3N0YWNrOgpAQCAtMjA3LDYgKzIxOSw4IEBACiAgICAgICAgICAgICAgICAgIyAoaS5lLiBuZXdsaW5lKSwganVzdCB0aHJvdyBpdCBhd2F5LiBPdGhlcndpc2UgdGhlIGxpbmUgaXMKICAgICAgICAgICAgICAgICAjIHBhcnQgb2YgdGhlIGJvZHkgc28gcHVzaCBpdCBiYWNrLgogICAgICAgICAgICAgICAgIGlmIG5vdCBOTENSRS5tYXRjaChsaW5lKToKKyAgICAgICAgICAgICAgICAgICAgZGVmZWN0ID0gZXJyb3JzLk1pc3NpbmdIZWFkZXJCb2R5U2VwYXJhdG9yRGVmZWN0KCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChzZWxmLl9jdXIsIGRlZmVjdCkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXQudW5yZWFkbGluZShsaW5lKQogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBoZWFkZXJzLmFwcGVuZChsaW5lKQpAQCAtMjg0LDcgKzI5OCw4IEBACiAgICAgICAgICAgICAgICAgIyBkZWZpbmVkIGEgYm91bmRhcnkuICBUaGF0J3MgYSBwcm9ibGVtIHdoaWNoIHdlJ2xsIGhhbmRsZSBieQogICAgICAgICAgICAgICAgICMgcmVhZGluZyBldmVyeXRoaW5nIHVudGlsIHRoZSBFT0YgYW5kIG1hcmtpbmcgdGhlIG1lc3NhZ2UgYXMKICAgICAgICAgICAgICAgICAjIGRlZmVjdGl2ZS4KLSAgICAgICAgICAgICAgICBzZWxmLl9jdXIuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk5vQm91bmRhcnlJbk11bHRpcGFydERlZmVjdCgpKQorICAgICAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QoKQorICAgICAgICAgICAgICAgIHNlbGYucG9saWN5LmhhbmRsZV9kZWZlY3Qoc2VsZi5fY3VyLCBkZWZlY3QpCiAgICAgICAgICAgICAgICAgbGluZXMgPSBbXQogICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX2lucHV0OgogICAgICAgICAgICAgICAgICAgICBpZiBsaW5lIGlzIE5lZWRNb3JlRGF0YToKQEAgLTI5Myw2ICszMDgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpCiAgICAgICAgICAgICAgICAgc2VsZi5fY3VyLnNldF9wYXlsb2FkKEVNUFRZU1RSSU5HLmpvaW4obGluZXMpKQogICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgIyBNYWtlIHN1cmUgYSB2YWxpZCBjb250ZW50IHR5cGUgd2FzIHNwZWNpZmllZCBwZXIgUkZDIDIwNDU6Ni40LgorICAgICAgICAgICAgaWYgKHNlbGYuX2N1ci5nZXQoJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnLCAnOGJpdCcpLmxvd2VyKCkKKyAgICAgICAgICAgICAgICAgICAgbm90IGluICgnN2JpdCcsICc4Yml0JywgJ2JpbmFyeScpKToKKyAgICAgICAgICAgICAgICBkZWZlY3QgPSBlcnJvcnMuSW52YWxpZE11bHRpcGFydENvbnRlbnRUcmFuc2ZlckVuY29kaW5nRGVmZWN0KCkKKyAgICAgICAgICAgICAgICBzZWxmLnBvbGljeS5oYW5kbGVfZGVmZWN0KHNlbGYuX2N1ciwgZGVmZWN0KQogICAgICAgICAgICAgIyBDcmVhdGUgYSBsaW5lIG1hdGNoIHByZWRpY2F0ZSB3aGljaCBtYXRjaGVzIHRoZSBpbnRlci1wYXJ0CiAgICAgICAgICAgICAjIGJvdW5kYXJ5IGFzIHdlbGwgYXMgdGhlIGVuZC1vZi1tdWx0aXBhcnQgYm91bmRhcnkuICBEb24ndCBwdXNoCiAgICAgICAgICAgICAjIHRoaXMgb250byB0aGUgaW5wdXQgc3RyZWFtIHVudGlsIHdlJ3ZlIHNjYW5uZWQgcGFzdCB0aGUKQEAgLTMwNCw2ICszMjQsNyBAQAogICAgICAgICAgICAgY2FwdHVyaW5nX3ByZWFtYmxlID0gVHJ1ZQogICAgICAgICAgICAgcHJlYW1ibGUgPSBbXQogICAgICAgICAgICAgbGluZXNlcCA9IEZhbHNlCisgICAgICAgICAgICBjbG9zZV9ib3VuZGFyeV9zZWVuID0gRmFsc2UKICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuX2lucHV0LnJlYWRsaW5lKCkKICAgICAgICAgICAgICAgICBpZiBsaW5lIGlzIE5lZWRNb3JlRGF0YToKQEAgLTMxOCw2ICszMzksNyBAQAogICAgICAgICAgICAgICAgICAgICAjIHRoZSBjbG9zaW5nIGJvdW5kYXJ5LCB0aGVuIHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIyBlcGlsb2d1ZSB3aXRoIHRoZSBlbXB0eSBzdHJpbmcgKHNlZSBiZWxvdykuCiAgICAgICAgICAgICAgICAgICAgIGlmIG1vLmdyb3VwKCdlbmQnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2JvdW5kYXJ5X3NlZW4gPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lc2VwID0gbW8uZ3JvdXAoJ2xpbmVzZXAnKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgIyBXZSBzYXcgYW4gaW50ZXItcGFydCBib3VuZGFyeS4gIFdlcmUgd2UgaW4gdGhlIHByZWFtYmxlPwpAQCAtMzg2LDkgKzQwOCw5IEBACiAgICAgICAgICAgICAjIFdlJ3ZlIHNlZW4gZWl0aGVyIHRoZSBFT0Ygb3IgdGhlIGVuZCBib3VuZGFyeS4gIElmIHdlJ3JlIHN0aWxsCiAgICAgICAgICAgICAjIGNhcHR1cmluZyB0aGUgcHJlYW1ibGUsIHdlIG5ldmVyIHNhdyB0aGUgc3RhcnQgYm91bmRhcnkuICBOb3RlCiAgICAgICAgICAgICAjIHRoYXQgYXMgYSBkZWZlY3QgYW5kIHN0b3JlIHRoZSBjYXB0dXJlZCB0ZXh0IGFzIHRoZSBwYXlsb2FkLgotICAgICAgICAgICAgIyBFdmVyeXRoaW5nIGZyb20gaGVyZSB0byB0aGUgRU9GIGlzIGVwaWxvZ3VlLgogICAgICAgICAgICAgaWYgY2FwdHVyaW5nX3ByZWFtYmxlOgotICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KCkpCisgICAgICAgICAgICAgICAgZGVmZWN0ID0gZXJyb3JzLlN0YXJ0Qm91bmRhcnlOb3RGb3VuZERlZmVjdCgpCisgICAgICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChzZWxmLl9jdXIsIGRlZmVjdCkKICAgICAgICAgICAgICAgICBzZWxmLl9jdXIuc2V0X3BheWxvYWQoRU1QVFlTVFJJTkcuam9pbihwcmVhbWJsZSkpCiAgICAgICAgICAgICAgICAgZXBpbG9ndWUgPSBbXQogICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX2lucHV0OgpAQCAtMzk3LDggKzQxOSwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBzZWxmLl9jdXIuZXBpbG9ndWUgPSBFTVBUWVNUUklORy5qb2luKGVwaWxvZ3VlKQogICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgIyBJZiB0aGUgZW5kIGJvdW5kYXJ5IGVuZGVkIGluIGEgbmV3bGluZSwgd2UnbGwgbmVlZCB0byBtYWtlIHN1cmUKLSAgICAgICAgICAgICMgdGhlIGVwaWxvZ3VlIGlzbid0IE5vbmUKKyAgICAgICAgICAgICMgSWYgd2UncmUgbm90IHByb2Nlc3NpbmcgdGhlIHByZWFtYmxlLCB0aGVuIHdlIG1pZ2h0IGhhdmUgc2VlbgorICAgICAgICAgICAgIyBFT0Ygd2l0aG91dCBzZWVpbmcgdGhhdCBlbmQgYm91bmRhcnkuLi50aGF0IGlzIGFsc28gYSBkZWZlY3QuCisgICAgICAgICAgICBpZiBub3QgY2xvc2VfYm91bmRhcnlfc2VlbjoKKyAgICAgICAgICAgICAgICBkZWZlY3QgPSBlcnJvcnMuQ2xvc2VCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KCkKKyAgICAgICAgICAgICAgICBzZWxmLnBvbGljeS5oYW5kbGVfZGVmZWN0KHNlbGYuX2N1ciwgZGVmZWN0KQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgIyBFdmVyeXRoaW5nIGZyb20gaGVyZSB0byB0aGUgRU9GIGlzIGVwaWxvZ3VlLiAgSWYgdGhlIGVuZCBib3VuZGFyeQorICAgICAgICAgICAgIyBlbmRlZCBpbiBhIG5ld2xpbmUsIHdlJ2xsIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBlcGlsb2d1ZSBpc24ndAorICAgICAgICAgICAgIyBOb25lCiAgICAgICAgICAgICBpZiBsaW5lc2VwOgogICAgICAgICAgICAgICAgIGVwaWxvZ3VlID0gWycnXQogICAgICAgICAgICAgZWxzZToKQEAgLTQ0MCwxNCArNDY5LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICMgaXMgaWxsZWdhbCwgc28gbGV0J3Mgbm90ZSB0aGUgZGVmZWN0LCBzdG9yZSB0aGUgaWxsZWdhbAogICAgICAgICAgICAgICAgICAgICAjIGxpbmUsIGFuZCBpZ25vcmUgaXQgZm9yIHB1cnBvc2VzIG9mIGhlYWRlcnMuCiAgICAgICAgICAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5GaXJzdEhlYWRlckxpbmVJc0NvbnRpbnVhdGlvbkRlZmVjdChsaW5lKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9jdXIuZGVmZWN0cy5hcHBlbmQoZGVmZWN0KQorICAgICAgICAgICAgICAgICAgICBzZWxmLnBvbGljeS5oYW5kbGVfZGVmZWN0KHNlbGYuX2N1ciwgZGVmZWN0KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGxhc3R2YWx1ZS5hcHBlbmQobGluZSkKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgbGFzdGhlYWRlcjoKLSAgICAgICAgICAgICAgICAjIFhYWCByZWNvbnNpZGVyIHRoZSBqb2luaW5nIG9mIGZvbGRlZCBsaW5lcwotICAgICAgICAgICAgICAgIGxoZHIgPSBFTVBUWVNUUklORy5qb2luKGxhc3R2YWx1ZSlbOi0xXS5yc3RyaXAoJ1xyXG4nKQotICAgICAgICAgICAgICAgIHNlbGYuX2N1cltsYXN0aGVhZGVyXSA9IGxoZHIKKyAgICAgICAgICAgICAgICBzZWxmLl9jdXIuc2V0X3Jhdygqc2VsZi5wb2xpY3kuaGVhZGVyX3NvdXJjZV9wYXJzZShsYXN0dmFsdWUpKQogICAgICAgICAgICAgICAgIGxhc3RoZWFkZXIsIGxhc3R2YWx1ZSA9ICcnLCBbXQogICAgICAgICAgICAgIyBDaGVjayBmb3IgZW52ZWxvcGUgaGVhZGVyLCBpLmUuIHVuaXgtZnJvbQogICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdGcm9tICcpOgpAQCAtNDcxLDE5ICs0OTgsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY3VyLmRlZmVjdHMuYXBwZW5kKGRlZmVjdCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICMgU3BsaXQgdGhlIGxpbmUgb24gdGhlIGNvbG9uIHNlcGFyYXRpbmcgZmllbGQgbmFtZSBmcm9tIHZhbHVlLgorICAgICAgICAgICAgIyBUaGVyZSB3aWxsIGFsd2F5cyBiZSBhIGNvbG9uLCBiZWNhdXNlIGlmIHRoZXJlIHdhc24ndCB0aGUgcGFydCBvZgorICAgICAgICAgICAgIyB0aGUgcGFyc2VyIHRoYXQgY2FsbHMgdXMgd291bGQgaGF2ZSBzdGFydGVkIHBhcnNpbmcgdGhlIGJvZHkuCiAgICAgICAgICAgICBpID0gbGluZS5maW5kKCc6JykKLSAgICAgICAgICAgIGlmIGkgPCAwOgotICAgICAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5NYWxmb3JtZWRIZWFkZXJEZWZlY3QobGluZSkKLSAgICAgICAgICAgICAgICBzZWxmLl9jdXIuZGVmZWN0cy5hcHBlbmQoZGVmZWN0KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBhc3NlcnQgaT4wLCAiX3BhcnNlX2hlYWRlcnMgZmVkIGxpbmUgd2l0aCBubyA6IGFuZCBubyBsZWFkaW5nIFdTIgogICAgICAgICAgICAgbGFzdGhlYWRlciA9IGxpbmVbOmldCi0gICAgICAgICAgICBsYXN0dmFsdWUgPSBbbGluZVtpKzE6XS5sc3RyaXAoKV0KKyAgICAgICAgICAgIGxhc3R2YWx1ZSA9IFtsaW5lXQogICAgICAgICAjIERvbmUgd2l0aCBhbGwgdGhlIGxpbmVzLCBzbyBoYW5kbGUgdGhlIGxhc3QgaGVhZGVyLgogICAgICAgICBpZiBsYXN0aGVhZGVyOgotICAgICAgICAgICAgIyBYWFggcmVjb25zaWRlciB0aGUgam9pbmluZyBvZiBmb2xkZWQgbGluZXMKLSAgICAgICAgICAgIHNlbGYuX2N1cltsYXN0aGVhZGVyXSA9IEVNUFRZU1RSSU5HLmpvaW4obGFzdHZhbHVlKS5yc3RyaXAoJ1xyXG4nKQorICAgICAgICAgICAgc2VsZi5fY3VyLnNldF9yYXcoKnNlbGYucG9saWN5LmhlYWRlcl9zb3VyY2VfcGFyc2UobGFzdHZhbHVlKSkKIAotDAorCiBjbGFzcyBCeXRlc0ZlZWRQYXJzZXIoRmVlZFBhcnNlcik6CiAgICAgIiIiTGlrZSBGZWVkUGFyc2VyLCBidXQgZmVlZCBhY2NlcHRzIGJ5dGVzLiIiIgogCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5IGIvTGliL2VtYWlsL2dlbmVyYXRvci5weQppbmRleCBhYjM3ZTk0Li4yNGYyYWJmIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5CisrKyBiL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkKQEAgLTEzLDggKzEzLDEwIEBACiBpbXBvcnQgd2FybmluZ3MKIAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8sIEJ5dGVzSU8KK2Zyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IGNvbXBhdDMyCiBmcm9tIGVtYWlsLmhlYWRlciBpbXBvcnQgSGVhZGVyCi1mcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IF9oYXNfc3Vycm9nYXRlcworZnJvbSBlbWFpbC51dGlscyBpbXBvcnQgX2hhc19zdXJyb2dhdGVzCitpbXBvcnQgZW1haWwuY2hhcnNldCBhcyBfY2hhcnNldAogCiBVTkRFUlNDT1JFID0gJ18nCiBOTCA9ICdcbicgICMgWFhYOiBubyBsb25nZXIgdXNlZCBieSB0aGUgY29kZSBiZWxvdy4KQEAgLTMzLDcgKzM1LDggQEAKICAgICAjIFB1YmxpYyBpbnRlcmZhY2UKICAgICAjCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NzgpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj1Ob25lLCAqLAorICAgICAgICAgICAgICAgICBwb2xpY3k9Tm9uZSk6CiAgICAgICAgICIiIkNyZWF0ZSB0aGUgZ2VuZXJhdG9yIGZvciBtZXNzYWdlIGZsYXR0ZW5pbmcuCiAKICAgICAgICAgb3V0ZnAgaXMgdGhlIG91dHB1dCBmaWxlLWxpa2Ugb2JqZWN0IGZvciB3cml0aW5nIHRoZSBtZXNzYWdlIHRvLiAgSXQKQEAgLTQ5LDE2ICs1MiwyMiBAQAogICAgICAgICBkZWZpbmVkIGluIHRoZSBIZWFkZXIgY2xhc3MuICBTZXQgbWF4aGVhZGVybGVuIHRvIHplcm8gdG8gZGlzYWJsZQogICAgICAgICBoZWFkZXIgd3JhcHBpbmcuICBUaGUgZGVmYXVsdCBpcyA3OCwgYXMgcmVjb21tZW5kZWQgKGJ1dCBub3QgcmVxdWlyZWQpCiAgICAgICAgIGJ5IFJGQyAyODIyLgorCisgICAgICAgIFRoZSBwb2xpY3kga2V5d29yZCBzcGVjaWZpZXMgYSBwb2xpY3kgb2JqZWN0IHRoYXQgY29udHJvbHMgYSBudW1iZXIgb2YKKyAgICAgICAgYXNwZWN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3Mgb3BlcmF0aW9uLiAgVGhlIGRlZmF1bHQgcG9saWN5IG1haW50YWlucworICAgICAgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgorCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9mcCA9IG91dGZwCiAgICAgICAgIHNlbGYuX21hbmdsZV9mcm9tXyA9IG1hbmdsZV9mcm9tXwotICAgICAgICBzZWxmLl9tYXhoZWFkZXJsZW4gPSBtYXhoZWFkZXJsZW4KKyAgICAgICAgc2VsZi5tYXhoZWFkZXJsZW4gPSBtYXhoZWFkZXJsZW4KKyAgICAgICAgc2VsZi5wb2xpY3kgPSBwb2xpY3kKIAogICAgIGRlZiB3cml0ZShzZWxmLCBzKToKICAgICAgICAgIyBKdXN0IGRlbGVnYXRlIHRvIHRoZSBmaWxlIG9iamVjdAogICAgICAgICBzZWxmLl9mcC53cml0ZShzKQogCi0gICAgZGVmIGZsYXR0ZW4oc2VsZiwgbXNnLCB1bml4ZnJvbT1GYWxzZSwgbGluZXNlcD0nXG4nKToKKyAgICBkZWYgZmxhdHRlbihzZWxmLCBtc2csIHVuaXhmcm9tPUZhbHNlLCBsaW5lc2VwPU5vbmUpOgogICAgICAgICByIiIiUHJpbnQgdGhlIG1lc3NhZ2Ugb2JqZWN0IHRyZWUgcm9vdGVkIGF0IG1zZyB0byB0aGUgb3V0cHV0IGZpbGUKICAgICAgICAgc3BlY2lmaWVkIHdoZW4gdGhlIEdlbmVyYXRvciBpbnN0YW5jZSB3YXMgY3JlYXRlZC4KIApAQCAtNzAsMjkgKzc5LDQ3IEBACiAgICAgICAgIE5vdGUgdGhhdCBmb3Igc3Vib2JqZWN0cywgbm8gRnJvbV8gbGluZSBpcyBwcmludGVkLgogCiAgICAgICAgIGxpbmVzZXAgc3BlY2lmaWVzIHRoZSBjaGFyYWN0ZXJzIHVzZWQgdG8gaW5kaWNhdGUgYSBuZXcgbGluZSBpbgotICAgICAgICB0aGUgb3V0cHV0LiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgdGhlIG1vc3QgdXNlZnVsIGZvciB0eXBpY2FsCi0gICAgICAgIFB5dGhvbiBhcHBsaWNhdGlvbnMsIGJ1dCBpdCBjYW4gYmUgc2V0IHRvIFxyXG4gdG8gcHJvZHVjZSBSRkMtY29tcGxpYW50Ci0gICAgICAgIGxpbmUgc2VwYXJhdG9ycyB3aGVuIG5lZWRlZC4KKyAgICAgICAgdGhlIG91dHB1dC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGRldGVybWluZWQgYnkgdGhlIHBvbGljeS4KIAogICAgICAgICAiIiIKICAgICAgICAgIyBXZSB1c2UgdGhlIF9YWFggY29uc3RhbnRzIGZvciBvcGVyYXRpbmcgb24gZGF0YSB0aGF0IGNvbWVzIGRpcmVjdGx5CiAgICAgICAgICMgZnJvbSB0aGUgbXNnLCBhbmQgX2VuY29kZWRfWFhYIGNvbnN0YW50cyBmb3Igb3BlcmF0aW5nIG9uIGRhdGEgdGhhdAogICAgICAgICAjIGhhcyBhbHJlYWR5IGJlZW4gY29udmVydGVkICh0byBieXRlcyBpbiB0aGUgQnl0ZXNHZW5lcmF0b3IpIGFuZAogICAgICAgICAjIGluc2VydGVkIGludG8gYSB0ZW1wb3JhcnkgYnVmZmVyLgotICAgICAgICBzZWxmLl9OTCA9IGxpbmVzZXAKLSAgICAgICAgc2VsZi5fZW5jb2RlZF9OTCA9IHNlbGYuX2VuY29kZShsaW5lc2VwKQorICAgICAgICBwb2xpY3kgPSBtc2cucG9saWN5IGlmIHNlbGYucG9saWN5IGlzIE5vbmUgZWxzZSBzZWxmLnBvbGljeQorICAgICAgICBpZiBsaW5lc2VwIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcG9saWN5ID0gcG9saWN5LmNsb25lKGxpbmVzZXA9bGluZXNlcCkKKyAgICAgICAgaWYgc2VsZi5tYXhoZWFkZXJsZW4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwb2xpY3kgPSBwb2xpY3kuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPXNlbGYubWF4aGVhZGVybGVuKQorICAgICAgICBzZWxmLl9OTCA9IHBvbGljeS5saW5lc2VwCisgICAgICAgIHNlbGYuX2VuY29kZWRfTkwgPSBzZWxmLl9lbmNvZGUoc2VsZi5fTkwpCiAgICAgICAgIHNlbGYuX0VNUFRZID0gJycKICAgICAgICAgc2VsZi5fZW5jb2RlZF9FTVRQWSA9IHNlbGYuX2VuY29kZSgnJykKLSAgICAgICAgaWYgdW5peGZyb206Ci0gICAgICAgICAgICB1ZnJvbSA9IG1zZy5nZXRfdW5peGZyb20oKQotICAgICAgICAgICAgaWYgbm90IHVmcm9tOgotICAgICAgICAgICAgICAgIHVmcm9tID0gJ0Zyb20gbm9ib2R5ICcgKyB0aW1lLmN0aW1lKHRpbWUudGltZSgpKQotICAgICAgICAgICAgc2VsZi53cml0ZSh1ZnJvbSArIHNlbGYuX05MKQotICAgICAgICBzZWxmLl93cml0ZShtc2cpCisgICAgICAgICMgQmVjYXVzZSB3ZSB1c2UgY2xvbmUgKGJlbG93KSB3aGVuIHdlIHJlY3Vyc2l2ZWx5IHByb2Nlc3MgbWVzc2FnZQorICAgICAgICAjIHN1YnBhcnRzLCBhbmQgYmVjYXVzZSBjbG9uZSB1c2VzIHRoZSBjb21wdXRlZCBwb2xpY3kgKG5vdCBOb25lKSwKKyAgICAgICAgIyBzdWJtZXNzYWdlcyB3aWxsIGF1dG9tYXRpY2FsbHkgZ2V0IHNldCB0byB0aGUgY29tcHV0ZWQgcG9saWN5IHdoZW4KKyAgICAgICAgIyB0aGV5IGFyZSBwcm9jZXNzZWQgYnkgdGhpcyBjb2RlLgorICAgICAgICBvbGRfZ2VuX3BvbGljeSA9IHNlbGYucG9saWN5CisgICAgICAgIG9sZF9tc2dfcG9saWN5ID0gbXNnLnBvbGljeQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnBvbGljeSA9IHBvbGljeQorICAgICAgICAgICAgbXNnLnBvbGljeSA9IHBvbGljeQorICAgICAgICAgICAgaWYgdW5peGZyb206CisgICAgICAgICAgICAgICAgdWZyb20gPSBtc2cuZ2V0X3VuaXhmcm9tKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgdWZyb206CisgICAgICAgICAgICAgICAgICAgIHVmcm9tID0gJ0Zyb20gbm9ib2R5ICcgKyB0aW1lLmN0aW1lKHRpbWUudGltZSgpKQorICAgICAgICAgICAgICAgIHNlbGYud3JpdGUodWZyb20gKyBzZWxmLl9OTCkKKyAgICAgICAgICAgIHNlbGYuX3dyaXRlKG1zZykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYucG9saWN5ID0gb2xkX2dlbl9wb2xpY3kKKyAgICAgICAgICAgIG1zZy5wb2xpY3kgPSBvbGRfbXNnX3BvbGljeQogCiAgICAgZGVmIGNsb25lKHNlbGYsIGZwKToKICAgICAgICAgIiIiQ2xvbmUgdGhpcyBnZW5lcmF0b3Igd2l0aCB0aGUgZXhhY3Qgc2FtZSBvcHRpb25zLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oZnAsIHNlbGYuX21hbmdsZV9mcm9tXywgc2VsZi5fbWF4aGVhZGVybGVuKQorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oZnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tYW5nbGVfZnJvbV8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCAjIFVzZSBwb2xpY3kgc2V0dGluZywgd2hpY2ggd2UndmUgYWRqdXN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1zZWxmLnBvbGljeSkKIAogICAgICMKICAgICAjIFByb3RlY3RlZCBpbnRlcmZhY2UgLSB1bmRvY3VtZW50ZWQgOy8KQEAgLTE4MCwxNiArMjA3LDggQEAKICAgICAjCiAKICAgICBkZWYgX3dyaXRlX2hlYWRlcnMoc2VsZiwgbXNnKToKLSAgICAgICAgZm9yIGgsIHYgaW4gbXNnLml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLndyaXRlKCclczogJyAlIGgpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHYsIEhlYWRlcik6Ci0gICAgICAgICAgICAgICAgc2VsZi53cml0ZSh2LmVuY29kZSgKLSAgICAgICAgICAgICAgICAgICAgbWF4bGluZWxlbj1zZWxmLl9tYXhoZWFkZXJsZW4sIGxpbmVzZXA9c2VsZi5fTkwpK3NlbGYuX05MKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIEhlYWRlcidzIGdvdCBsb3RzIG9mIHNtYXJ0cywgc28gdXNlIGl0LgotICAgICAgICAgICAgICAgIGhlYWRlciA9IEhlYWRlcih2LCBtYXhsaW5lbGVuPXNlbGYuX21heGhlYWRlcmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX25hbWU9aCkKLSAgICAgICAgICAgICAgICBzZWxmLndyaXRlKGhlYWRlci5lbmNvZGUobGluZXNlcD1zZWxmLl9OTCkrc2VsZi5fTkwpCisgICAgICAgIGZvciBoLCB2IGluIG1zZy5yYXdfaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoc2VsZi5wb2xpY3kuZm9sZChoLCB2KSkKICAgICAgICAgIyBBIGJsYW5rIGxpbmUgYWx3YXlzIHNlcGFyYXRlcyBoZWFkZXJzIGZyb20gYm9keQogICAgICAgICBzZWxmLndyaXRlKHNlbGYuX05MKQogCkBAIC0yNzksMTIgKzI5OCwxMiBAQAogICAgICAgICAjIFRoZSBjb250ZW50cyBvZiBzaWduZWQgcGFydHMgaGFzIHRvIHN0YXkgdW5tb2RpZmllZCBpbiBvcmRlciB0byBrZWVwCiAgICAgICAgICMgdGhlIHNpZ25hdHVyZSBpbnRhY3QgcGVyIFJGQzE4NDcgMi4xLCBzbyB3ZSBkaXNhYmxlIGhlYWRlciB3cmFwcGluZy4KICAgICAgICAgIyBSRE06IFRoaXMgaXNuJ3QgZW5vdWdoIHRvIGNvbXBsZXRlbHkgcHJlc2VydmUgdGhlIHBhcnQsIGJ1dCBpdCBoZWxwcy4KLSAgICAgICAgb2xkX21heGhlYWRlcmxlbiA9IHNlbGYuX21heGhlYWRlcmxlbgorICAgICAgICBwID0gc2VsZi5wb2xpY3kKKyAgICAgICAgc2VsZi5wb2xpY3kgPSBwLmNsb25lKG1heF9saW5lX2xlbmd0aD0wKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9tYXhoZWFkZXJsZW4gPSAwCiAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfbXVsdGlwYXJ0KG1zZykKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX21heGhlYWRlcmxlbiA9IG9sZF9tYXhoZWFkZXJsZW4KKyAgICAgICAgICAgIHNlbGYucG9saWN5ID0gcAogCiAgICAgZGVmIF9oYW5kbGVfbWVzc2FnZV9kZWxpdmVyeV9zdGF0dXMoc2VsZiwgbXNnKToKICAgICAgICAgIyBXZSBjYW4ndCBqdXN0IHdyaXRlIHRoZSBoZWFkZXJzIGRpcmVjdGx5IHRvIHNlbGYncyBmaWxlIG9iamVjdApAQCAtMzE5LDEwICszMzgsMTIgQEAKICAgICAgICAgIyBtZXNzYWdlL3JmYzgyMi4gIFN1Y2ggbWVzc2FnZXMgYXJlIGdlbmVyYXRlZCBieSwgZm9yIGV4YW1wbGUsCiAgICAgICAgICMgR3JvdXB3aXNlIHdoZW4gZm9yd2FyZGluZyB1bmFkb3JuZWQgbWVzc2FnZXMuICAoSXNzdWUgNzk3MC4pICBTbwogICAgICAgICAjIGluIHRoYXQgY2FzZSB3ZSBqdXN0IGVtaXQgdGhlIHN0cmluZyBib2R5LgotICAgICAgICBwYXlsb2FkID0gbXNnLmdldF9wYXlsb2FkKCkKKyAgICAgICAgcGF5bG9hZCA9IG1zZy5fcGF5bG9hZAogICAgICAgICBpZiBpc2luc3RhbmNlKHBheWxvYWQsIGxpc3QpOgogICAgICAgICAgICAgZy5mbGF0dGVuKG1zZy5nZXRfcGF5bG9hZCgwKSwgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9c2VsZi5fTkwpCiAgICAgICAgICAgICBwYXlsb2FkID0gcy5nZXR2YWx1ZSgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwYXlsb2FkID0gc2VsZi5fZW5jb2RlKHBheWxvYWQpCiAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHBheWxvYWQpCiAKICAgICAjIFRoaXMgdXNlZCB0byBiZSBhIG1vZHVsZSBsZXZlbCBmdW5jdGlvbjsgd2UgdXNlIGEgY2xhc3NtZXRob2QgZm9yIHRoaXMKQEAgLTM1OCw3ICszNzksMTAgQEAKIAogICAgIEZ1bmN0aW9uYWxseSBpZGVudGljYWwgdG8gdGhlIGJhc2UgR2VuZXJhdG9yIGV4Y2VwdCB0aGF0IHRoZSBvdXRwdXQgaXMKICAgICBieXRlcyBhbmQgbm90IHN0cmluZy4gIFdoZW4gc3Vycm9nYXRlcyB3ZXJlIHVzZWQgaW4gdGhlIGlucHV0IHRvIGVuY29kZQotICAgIGJ5dGVzLCB0aGVzZSBhcmUgZGVjb2RlZCBiYWNrIHRvIGJ5dGVzIGZvciBvdXRwdXQuCisgICAgYnl0ZXMsIHRoZXNlIGFyZSBkZWNvZGVkIGJhY2sgdG8gYnl0ZXMgZm9yIG91dHB1dC4gIElmIHRoZSBwb2xpY3kgaGFzCisgICAgY3RlX3R5cGUgc2V0IHRvIDdiaXQsIHRoZW4gdGhlIG1lc3NhZ2UgaXMgdHJhbnNmb3JtZWQgc3VjaCB0aGF0IHRoZQorICAgIG5vbi1BU0NJSSBieXRlcyBhcmUgcHJvcGVybHkgY29udGVudCB0cmFuc2ZlciBlbmNvZGVkLCB1c2luZyB0aGUgY2hhcnNldAorICAgIHVua25vd24tOGJpdC4KIAogICAgIFRoZSBvdXRmcCBvYmplY3QgbXVzdCBhY2NlcHQgYnl0ZXMgaW4gaXRzIHdyaXRlIG1ldGhvZC4KICAgICAiIiIKQEAgLTM3OSwyMyArNDAzLDggQEAKICAgICBkZWYgX3dyaXRlX2hlYWRlcnMoc2VsZiwgbXNnKToKICAgICAgICAgIyBUaGlzIGlzIGFsbW9zdCB0aGUgc2FtZSBhcyB0aGUgc3RyaW5nIHZlcnNpb24sIGV4Y2VwdCBmb3IgaGFuZGxpbmcKICAgICAgICAgIyBzdHJpbmdzIHdpdGggOGJpdCBieXRlcy4KLSAgICAgICAgZm9yIGgsIHYgaW4gbXNnLl9oZWFkZXJzOgotICAgICAgICAgICAgc2VsZi53cml0ZSgnJXM6ICcgJSBoKQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2LCBIZWFkZXIpOgotICAgICAgICAgICAgICAgIHNlbGYud3JpdGUodi5lbmNvZGUobWF4bGluZWxlbj1zZWxmLl9tYXhoZWFkZXJsZW4pK3NlbGYuX05MKQotICAgICAgICAgICAgZWxpZiBfaGFzX3N1cnJvZ2F0ZXModik6Ci0gICAgICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIHJhdyA4Yml0IGRhdGEgaW4gYSBieXRlIHN0cmluZywgd2UgaGF2ZSBubyBpZGVhCi0gICAgICAgICAgICAgICAgIyB3aGF0IHRoZSBlbmNvZGluZyBpcy4gIFRoZXJlIGlzIG5vIHNhZmUgd2F5IHRvIHNwbGl0IHRoaXMKLSAgICAgICAgICAgICAgICAjIHN0cmluZy4gIElmIGl0J3MgYXNjaWktc3Vic2V0LCB0aGVuIHdlIGNvdWxkIGRvIGEgbm9ybWFsCi0gICAgICAgICAgICAgICAgIyBhc2NpaSBzcGxpdCwgYnV0IGlmIGl0J3MgbXVsdGlieXRlIHRoZW4gd2UgY291bGQgYnJlYWsgdGhlCi0gICAgICAgICAgICAgICAgIyBzdHJpbmcuICBUaGVyZSdzIG5vIHdheSB0byBrbm93IHNvIHRoZSBsZWFzdCBoYXJtIHNlZW1zIHRvCi0gICAgICAgICAgICAgICAgIyBiZSB0byBub3Qgc3BsaXQgdGhlIHN0cmluZyBhbmQgcmlzayBpdCBiZWluZyB0b28gbG9uZy4KLSAgICAgICAgICAgICAgICBzZWxmLndyaXRlKHYrTkwpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgSGVhZGVyJ3MgZ290IGxvdHMgb2Ygc21hcnRzIGFuZCB0aGlzIHN0cmluZyBpcyBzYWZlLi4uCi0gICAgICAgICAgICAgICAgaGVhZGVyID0gSGVhZGVyKHYsIG1heGxpbmVsZW49c2VsZi5fbWF4aGVhZGVybGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfbmFtZT1oKQotICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoaGVhZGVyLmVuY29kZShsaW5lc2VwPXNlbGYuX05MKStzZWxmLl9OTCkKKyAgICAgICAgZm9yIGgsIHYgaW4gbXNnLnJhd19pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5fZnAud3JpdGUoc2VsZi5wb2xpY3kuZm9sZF9iaW5hcnkoaCwgdikpCiAgICAgICAgICMgQSBibGFuayBsaW5lIGFsd2F5cyBzZXBhcmF0ZXMgaGVhZGVycyBmcm9tIGJvZHkKICAgICAgICAgc2VsZi53cml0ZShzZWxmLl9OTCkKIApAQCAtNDA0LDcgKzQxMyw3IEBACiAgICAgICAgICMganVzdCB3cml0ZSBpdCBiYWNrIG91dC4KICAgICAgICAgaWYgbXNnLl9wYXlsb2FkIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgX2hhc19zdXJyb2dhdGVzKG1zZy5fcGF5bG9hZCk6CisgICAgICAgIGlmIF9oYXNfc3Vycm9nYXRlcyhtc2cuX3BheWxvYWQpIGFuZCBub3Qgc2VsZi5wb2xpY3kuY3RlX3R5cGU9PSc3Yml0JzoKICAgICAgICAgICAgIGlmIHNlbGYuX21hbmdsZV9mcm9tXzoKICAgICAgICAgICAgICAgICBtc2cuX3BheWxvYWQgPSBmY3JlLnN1YigiPkZyb20gIiwgbXNnLl9wYXlsb2FkKQogICAgICAgICAgICAgc2VsZi5fd3JpdGVfbGluZXMobXNnLl9wYXlsb2FkKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2hlYWRlci5weSBiL0xpYi9lbWFpbC9oZWFkZXIucHkKaW5kZXggZTMzMzI0YS4uNWJkMDYzOCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2hlYWRlci5weQorKysgYi9MaWIvZW1haWwvaGVhZGVyLnB5CkBAIC00MCw3ICs0MCw2IEBACiAgIFw/ICAgICAgICAgICAgICAgICAgICAjIGxpdGVyYWwgPwogICAoP1A8ZW5jb2RlZD4uKj8pICAgICAgIyBub24tZ3JlZWR5IHVwIHRvIHRoZSBuZXh0ID89IGlzIHRoZSBlbmNvZGVkIHN0cmluZwogICBcPz0gICAgICAgICAgICAgICAgICAgIyBsaXRlcmFsID89Ci0gICg/PVsgXHRdfCQpICAgICAgICAgICAjIHdoaXRlc3BhY2Ugb3IgdGhlIGVuZCBvZiB0aGUgc3RyaW5nCiAgICcnJywgcmUuVkVSQk9TRSB8IHJlLklHTk9SRUNBU0UgfCByZS5NVUxUSUxJTkUpCiAKICMgRmllbGQgbmFtZSByZWdleHAsIGluY2x1ZGluZyB0cmFpbGluZyBjb2xvbiwgYnV0IG5vdCBzZXBhcmF0aW5nIHdoaXRlc3BhY2UsCkBAIC04Niw4ICs4NSwxMiBAQAogICAgIHdvcmRzID0gW10KICAgICBmb3IgbGluZSBpbiBoZWFkZXIuc3BsaXRsaW5lcygpOgogICAgICAgICBwYXJ0cyA9IGVjcmUuc3BsaXQobGluZSkKKyAgICAgICAgZmlyc3QgPSBUcnVlCiAgICAgICAgIHdoaWxlIHBhcnRzOgotICAgICAgICAgICAgdW5lbmNvZGVkID0gcGFydHMucG9wKDApLnN0cmlwKCkKKyAgICAgICAgICAgIHVuZW5jb2RlZCA9IHBhcnRzLnBvcCgwKQorICAgICAgICAgICAgaWYgZmlyc3Q6CisgICAgICAgICAgICAgICAgdW5lbmNvZGVkID0gdW5lbmNvZGVkLmxzdHJpcCgpCisgICAgICAgICAgICAgICAgZmlyc3QgPSBGYWxzZQogICAgICAgICAgICAgaWYgdW5lbmNvZGVkOgogICAgICAgICAgICAgICAgIHdvcmRzLmFwcGVuZCgodW5lbmNvZGVkLCBOb25lLCBOb25lKSkKICAgICAgICAgICAgIGlmIHBhcnRzOgpAQCAtOTUsNiArOTgsMTYgQEAKICAgICAgICAgICAgICAgICBlbmNvZGluZyA9IHBhcnRzLnBvcCgwKS5sb3dlcigpCiAgICAgICAgICAgICAgICAgZW5jb2RlZCA9IHBhcnRzLnBvcCgwKQogICAgICAgICAgICAgICAgIHdvcmRzLmFwcGVuZCgoZW5jb2RlZCwgZW5jb2RpbmcsIGNoYXJzZXQpKQorICAgICMgTm93IGxvb3Agb3ZlciB3b3JkcyBhbmQgcmVtb3ZlIHdvcmRzIHRoYXQgY29uc2lzdCBvZiB3aGl0ZXNwYWNlCisgICAgIyBiZXR3ZWVuIHR3byBlbmNvZGVkIHN0cmluZ3MuCisgICAgaW1wb3J0IHN5cworICAgIGRyb3BsaXN0ID0gW10KKyAgICBmb3IgbiwgdyBpbiBlbnVtZXJhdGUod29yZHMpOgorICAgICAgICBpZiBuPjEgYW5kIHdbMV0gYW5kIHdvcmRzW24tMl1bMV0gYW5kIHdvcmRzW24tMV1bMF0uaXNzcGFjZSgpOgorICAgICAgICAgICAgZHJvcGxpc3QuYXBwZW5kKG4tMSkKKyAgICBmb3IgZCBpbiByZXZlcnNlZChkcm9wbGlzdCk6CisgICAgICAgIGRlbCB3b3Jkc1tkXQorCiAgICAgIyBUaGUgbmV4dCBzdGVwIGlzIHRvIGRlY29kZSBlYWNoIGVuY29kZWQgd29yZCBieSBhcHBseWluZyB0aGUgcmV2ZXJzZQogICAgICMgYmFzZTY0IG9yIHF1b3ByaSB0cmFuc2Zvcm1hdGlvbi4gIGRlY29kZWRfd29yZHMgaXMgbm93IGEgbGlzdCBvZiB0aGUKICAgICAjIGZvcm0gKGRlY29kZWRfd29yZCwgY2hhcnNldCkuCkBAIC0yMTcsMjIgKzIzMCwyNyBAQAogICAgICAgICBzZWxmLl9ub3JtYWxpemUoKQogICAgICAgICB1Y2h1bmtzID0gW10KICAgICAgICAgbGFzdGNzID0gTm9uZQorICAgICAgICBsYXN0c3BhY2UgPSBOb25lCiAgICAgICAgIGZvciBzdHJpbmcsIGNoYXJzZXQgaW4gc2VsZi5fY2h1bmtzOgogICAgICAgICAgICAgIyBXZSBtdXN0IHByZXNlcnZlIHNwYWNlcyBiZXR3ZWVuIGVuY29kZWQgYW5kIG5vbi1lbmNvZGVkIHdvcmQKICAgICAgICAgICAgICMgYm91bmRhcmllcywgd2hpY2ggbWVhbnMgZm9yIHVzIHdlIG5lZWQgdG8gYWRkIGEgc3BhY2Ugd2hlbiB3ZSBnbwogICAgICAgICAgICAgIyBmcm9tIGEgY2hhcnNldCB0byBOb25lL3VzLWFzY2lpLCBvciBmcm9tIE5vbmUvdXMtYXNjaWkgdG8gYQogICAgICAgICAgICAgIyBjaGFyc2V0LiAgT25seSBkbyB0aGlzIGZvciB0aGUgc2Vjb25kIGFuZCBzdWJzZXF1ZW50IGNodW5rcy4KKyAgICAgICAgICAgICMgRG9uJ3QgYWRkIGEgc3BhY2UgaWYgdGhlIE5vbmUvdXMtYXNjaWkgc3RyaW5nIGFscmVhZHkgaGFzCisgICAgICAgICAgICAjIGEgc3BhY2UgKHRyYWlsaW5nIG9yIGxlYWRpbmcgZGVwZW5kaW5nIG9uIHRyYW5zaXRpb24pCiAgICAgICAgICAgICBuZXh0Y3MgPSBjaGFyc2V0CiAgICAgICAgICAgICBpZiBuZXh0Y3MgPT0gX2NoYXJzZXQuVU5LTk9XTjhCSVQ6CiAgICAgICAgICAgICAgICAgb3JpZ2luYWxfYnl0ZXMgPSBzdHJpbmcuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQogICAgICAgICAgICAgICAgIHN0cmluZyA9IG9yaWdpbmFsX2J5dGVzLmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpCiAgICAgICAgICAgICBpZiB1Y2h1bmtzOgorICAgICAgICAgICAgICAgIGhhc3NwYWNlID0gc3RyaW5nIGFuZCBzZWxmLl9ub25jdGV4dChzdHJpbmdbMF0pCiAgICAgICAgICAgICAgICAgaWYgbGFzdGNzIG5vdCBpbiAoTm9uZSwgJ3VzLWFzY2lpJyk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5leHRjcyBpbiAoTm9uZSwgJ3VzLWFzY2lpJyk6CisgICAgICAgICAgICAgICAgICAgIGlmIG5leHRjcyBpbiAoTm9uZSwgJ3VzLWFzY2lpJykgYW5kIG5vdCBoYXNzcGFjZToKICAgICAgICAgICAgICAgICAgICAgICAgIHVjaHVua3MuYXBwZW5kKFNQQUNFKQogICAgICAgICAgICAgICAgICAgICAgICAgbmV4dGNzID0gTm9uZQotICAgICAgICAgICAgICAgIGVsaWYgbmV4dGNzIG5vdCBpbiAoTm9uZSwgJ3VzLWFzY2lpJyk6CisgICAgICAgICAgICAgICAgZWxpZiBuZXh0Y3Mgbm90IGluIChOb25lLCAndXMtYXNjaWknKSBhbmQgbm90IGxhc3RzcGFjZToKICAgICAgICAgICAgICAgICAgICAgdWNodW5rcy5hcHBlbmQoU1BBQ0UpCisgICAgICAgICAgICBsYXN0c3BhY2UgPSBzdHJpbmcgYW5kIHNlbGYuX25vbmN0ZXh0KHN0cmluZ1stMV0pCiAgICAgICAgICAgICBsYXN0Y3MgPSBuZXh0Y3MKICAgICAgICAgICAgIHVjaHVua3MuYXBwZW5kKHN0cmluZykKICAgICAgICAgcmV0dXJuIEVNUFRZU1RSSU5HLmpvaW4odWNodW5rcykKQEAgLTI5MSw2ICszMDksMTEgQEAKICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gVVRGOAogICAgICAgICBzZWxmLl9jaHVua3MuYXBwZW5kKChzLCBjaGFyc2V0KSkKIAorICAgIGRlZiBfbm9uY3RleHQoc2VsZiwgcyk6CisgICAgICAgICIiIlRydWUgaWYgc3RyaW5nIHMgaXMgbm90IGEgY3RleHQgY2hhcmFjdGVyIG9mIFJGQzgyMi4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzLmlzc3BhY2UoKSBvciBzIGluICgnKCcsICcpJywgJ1xcJykKKwogICAgIGRlZiBlbmNvZGUoc2VsZiwgc3BsaXRjaGFycz0nOywgXHQnLCBtYXhsaW5lbGVuPU5vbmUsIGxpbmVzZXA9J1xuJyk6CiAgICAgICAgIHIiIiJFbmNvZGUgYSBtZXNzYWdlIGhlYWRlciBpbnRvIGFuIFJGQy1jb21wbGlhbnQgZm9ybWF0LgogCkBAIC0zMzQsNyArMzU3LDIwIEBACiAgICAgICAgICAgICBtYXhsaW5lbGVuID0gMTAwMDAwMAogICAgICAgICBmb3JtYXR0ZXIgPSBfVmFsdWVGb3JtYXR0ZXIoc2VsZi5faGVhZGVybGVuLCBtYXhsaW5lbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29udGludWF0aW9uX3dzLCBzcGxpdGNoYXJzKQorICAgICAgICBsYXN0Y3MgPSBOb25lCisgICAgICAgIGhhc3NwYWNlID0gbGFzdHNwYWNlID0gTm9uZQogICAgICAgICBmb3Igc3RyaW5nLCBjaGFyc2V0IGluIHNlbGYuX2NodW5rczoKKyAgICAgICAgICAgIGlmIGhhc3NwYWNlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGhhc3NwYWNlID0gc3RyaW5nIGFuZCBzZWxmLl9ub25jdGV4dChzdHJpbmdbMF0pCisgICAgICAgICAgICAgICAgaW1wb3J0IHN5cworICAgICAgICAgICAgICAgIGlmIGxhc3RjcyBub3QgaW4gKE5vbmUsICd1cy1hc2NpaScpOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgaGFzc3BhY2Ugb3IgY2hhcnNldCBub3QgaW4gKE5vbmUsICd1cy1hc2NpaScpOgorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLmFkZF90cmFuc2l0aW9uKCkKKyAgICAgICAgICAgICAgICBlbGlmIGNoYXJzZXQgbm90IGluIChOb25lLCAndXMtYXNjaWknKSBhbmQgbm90IGxhc3RzcGFjZToKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLmFkZF90cmFuc2l0aW9uKCkKKyAgICAgICAgICAgIGxhc3RzcGFjZSA9IHN0cmluZyBhbmQgc2VsZi5fbm9uY3RleHQoc3RyaW5nWy0xXSkKKyAgICAgICAgICAgIGxhc3RjcyA9IGNoYXJzZXQKKyAgICAgICAgICAgIGhhc3NwYWNlID0gRmFsc2UKICAgICAgICAgICAgIGxpbmVzID0gc3RyaW5nLnNwbGl0bGluZXMoKQogICAgICAgICAgICAgaWYgbGluZXM6CiAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLmZlZWQoJycsIGxpbmVzWzBdLCBjaGFyc2V0KQpAQCAtMzUxLDYgKzM4Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlci5mZWVkKGZ3cywgc2xpbmUsIGNoYXJzZXQpCiAgICAgICAgICAgICBpZiBsZW4obGluZXMpID4gMToKICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIubmV3bGluZSgpCisgICAgICAgIGlmIHNlbGYuX2NodW5rczoKICAgICAgICAgICAgIGZvcm1hdHRlci5hZGRfdHJhbnNpdGlvbigpCiAgICAgICAgIHZhbHVlID0gZm9ybWF0dGVyLl9zdHIobGluZXNlcCkKICAgICAgICAgaWYgX2VtYmVkZWRfaGVhZGVyLnNlYXJjaCh2YWx1ZSk6CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvaGVhZGVycmVnaXN0cnkucHkgYi9MaWIvZW1haWwvaGVhZGVycmVnaXN0cnkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZhZTk1MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbWFpbC9oZWFkZXJyZWdpc3RyeS5weQpAQCAtMCwwICsxLDU4MyBAQAorIiIiUmVwcmVzZW50aW5nIGFuZCBtYW5pcHVsYXRpbmcgZW1haWwgaGVhZGVycyB2aWEgY3VzdG9tIG9iamVjdHMuCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBIZWFkZXJSZWdpc3RyeSBBUEkuCitUaGUgaW1wbGVtZW50YXRpb24gaXMgZGVzaWduZWQgdG8gZmxleGlibHkgZm9sbG93IFJGQzUzMjIgcnVsZXMuCisKK0V2ZW50dWFsbHkgSGVhZGVyUmVnaXN0cnkgd2lsbCBiZSBhIHB1YmxpYyBBUEksIGJ1dCBpdCBpc24ndCB5ZXQsCithbmQgd2lsbCBwcm9iYWJseSBjaGFuZ2Ugc29tZSBiZWZvcmUgdGhhdCBoYXBwZW5zLgorCisiIiIKKworZnJvbSBlbWFpbCBpbXBvcnQgdXRpbHMKK2Zyb20gZW1haWwgaW1wb3J0IGVycm9ycworZnJvbSBlbWFpbCBpbXBvcnQgX2hlYWRlcl92YWx1ZV9wYXJzZXIgYXMgcGFyc2VyCisKK2NsYXNzIEFkZHJlc3M6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGlzcGxheV9uYW1lPScnLCB1c2VybmFtZT0nJywgZG9tYWluPScnLCBhZGRyX3NwZWM9Tm9uZSk6CisgICAgICAgICIiIkNyZWF0ZSBhbiBvYmplY3QgcmVwcmVzZXRpbmcgYSBmdWxsIGVtYWlsIGFkZHJlc3MuCisKKyAgICAgICAgQW4gYWRkcmVzcyBjYW4gaGF2ZSBhICdkaXNwbGF5X25hbWUnLCBhICd1c2VybmFtZScsIGFuZCBhICdkb21haW4nLiAgSW4KKyAgICAgICAgYWRkaXRpb24gdG8gc3BlY2lmeWluZyB0aGUgdXNlcm5hbWUgYW5kIGRvbWFpbiBzZXBhcmF0ZWx5LCB0aGV5IG1heSBiZQorICAgICAgICBzcGVjaWZpZWQgdG9nZXRoZXIgYnkgdXNpbmcgdGhlIGFkZHJfc3BlYyBrZXl3b3JkICppbnN0ZWFkIG9mKiB0aGUKKyAgICAgICAgdXNlcm5hbWUgYW5kIGRvbWFpbiBrZXl3b3Jkcy4gIElmIGFuIGFkZHJfc3BlYyBzdHJpbmcgaXMgc3BlY2lmaWVkIGl0CisgICAgICAgIG11c3QgYmUgcHJvcGVybHkgcXVvdGVkIGFjY29yZGluZyB0byBSRkMgNTMyMiBydWxlczsgYW4gZXJyb3Igd2lsbCBiZQorICAgICAgICByYWlzZWQgaWYgaXQgaXMgbm90LgorCisgICAgICAgIEFuIEFkZHJlc3Mgb2JqZWN0IGhhcyBkaXNwbGF5X25hbWUsIHVzZXJuYW1lLCBkb21haW4sIGFuZCBhZGRyX3NwZWMKKyAgICAgICAgYXR0cmlidXRlcywgYWxsIG9mIHdoaWNoIGFyZSByZWFkLW9ubHkuICBUaGUgYWRkcl9zcGVjIGFuZCB0aGUgc3RyaW5nCisgICAgICAgIHZhbHVlIG9mIHRoZSBvYmplY3QgYXJlIGJvdGggcXVvdGVkIGFjY29yZGluZyB0byBSRkM1MzIyIHJ1bGVzLCBidXQKKyAgICAgICAgd2l0aG91dCBhbnkgQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZy4KKworICAgICAgICAiIiIKKyAgICAgICAgIyBUaGlzIGNsYXVzZSB3aXRoIGl0cyBwb3RlbnRpYWwgJ3JhaXNlJyBtYXkgb25seSBoYXBwZW4gd2hlbiBhbgorICAgICAgICAjIGFwcGxpY2F0aW9uIHByb2dyYW0gY3JlYXRlcyBhbiBBZGRyZXNzIG9iamVjdCB1c2luZyBhbiBhZGRyX3NwZWMKKyAgICAgICAgIyBrZXl3b3JkLiAgVGhlIGVtYWlsIGxpYnJhcnkgY29kZSBpdHNlbGYgbXVzdCBhbHdheXMgc3VwcGx5IHVzZXJuYW1lCisgICAgICAgICMgYW5kIGRvbWFpbi4KKyAgICAgICAgaWYgYWRkcl9zcGVjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgdXNlcm5hbWUgb3IgZG9tYWluOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYWRkcnNwZWMgc3BlY2lmaWVkIHdoZW4gdXNlcm5hbWUgYW5kL29yICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvbWFpbiBhbHNvIHNwZWNpZmllZCIpCisgICAgICAgICAgICBhX3MsIHJlc3QgPSBwYXJzZXIuZ2V0X2FkZHJfc3BlYyhhZGRyX3NwZWMpCisgICAgICAgICAgICBpZiByZXN0OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgYWRkcl9zcGVjOyBvbmx5ICd7fScgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIGJlIHBhcnNlZCBmcm9tICd7fSciLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFfcywgYWRkcl9zcGVjKSkKKyAgICAgICAgICAgIGlmIGFfcy5hbGxfZGVmZWN0czoKKyAgICAgICAgICAgICAgICByYWlzZSBhX3MuYWxsX2RlZmVjdHNbMF0KKyAgICAgICAgICAgIHVzZXJuYW1lID0gYV9zLmxvY2FsX3BhcnQKKyAgICAgICAgICAgIGRvbWFpbiA9IGFfcy5kb21haW4KKyAgICAgICAgc2VsZi5fZGlzcGxheV9uYW1lID0gZGlzcGxheV9uYW1lCisgICAgICAgIHNlbGYuX3VzZXJuYW1lID0gdXNlcm5hbWUKKyAgICAgICAgc2VsZi5fZG9tYWluID0gZG9tYWluCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZGlzcGxheV9uYW1lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdXNlcm5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl91c2VybmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRvbWFpbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2RvbWFpbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFkZHJfc3BlYyhzZWxmKToKKyAgICAgICAgIiIiVGhlIGFkZHJfc3BlYyAodXNlcm5hbWVAZG9tYWluKSBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLCBxdW90ZWQKKyAgICAgICAgYWNjb3JkaW5nIHRvIFJGQyA1MzIyIHJ1bGVzLCBidXQgd2l0aCBubyBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5nLgorICAgICAgICAiIiIKKyAgICAgICAgbmFtZXNldCA9IHNldChzZWxmLnVzZXJuYW1lKQorICAgICAgICBpZiBsZW4obmFtZXNldCkgPiBsZW4obmFtZXNldC1wYXJzZXIuRE9UX0FUT01fRU5EUyk6CisgICAgICAgICAgICBscCA9IHBhcnNlci5xdW90ZV9zdHJpbmcoc2VsZi51c2VybmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxwID0gc2VsZi51c2VybmFtZQorICAgICAgICBpZiBzZWxmLmRvbWFpbjoKKyAgICAgICAgICAgIHJldHVybiBscCArICdAJyArIHNlbGYuZG9tYWluCisgICAgICAgIGlmIG5vdCBscDoKKyAgICAgICAgICAgIHJldHVybiAnPD4nCisgICAgICAgIHJldHVybiBscAorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIkFkZHJlc3MoZGlzcGxheV9uYW1lPXshcn0sIHVzZXJuYW1lPXshcn0sIGRvbWFpbj17IXJ9KSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaXNwbGF5X25hbWUsIHNlbGYudXNlcm5hbWUsIHNlbGYuZG9tYWluKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIG5hbWVzZXQgPSBzZXQoc2VsZi5kaXNwbGF5X25hbWUpCisgICAgICAgIGlmIGxlbihuYW1lc2V0KSA+IGxlbihuYW1lc2V0LXBhcnNlci5TUEVDSUFMUyk6CisgICAgICAgICAgICBkaXNwID0gcGFyc2VyLnF1b3RlX3N0cmluZyhzZWxmLmRpc3BsYXlfbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRpc3AgPSBzZWxmLmRpc3BsYXlfbmFtZQorICAgICAgICBpZiBkaXNwOgorICAgICAgICAgICAgYWRkcl9zcGVjID0gJycgaWYgc2VsZi5hZGRyX3NwZWM9PSc8PicgZWxzZSBzZWxmLmFkZHJfc3BlYworICAgICAgICAgICAgcmV0dXJuICJ7fSA8e30+Ii5mb3JtYXQoZGlzcCwgYWRkcl9zcGVjKQorICAgICAgICByZXR1cm4gc2VsZi5hZGRyX3NwZWMKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiB0eXBlKG90aGVyKSAhPSB0eXBlKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiAoc2VsZi5kaXNwbGF5X25hbWUgPT0gb3RoZXIuZGlzcGxheV9uYW1lIGFuZAorICAgICAgICAgICAgICAgIHNlbGYudXNlcm5hbWUgPT0gb3RoZXIudXNlcm5hbWUgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5kb21haW4gPT0gb3RoZXIuZG9tYWluKQorCisKK2NsYXNzIEdyb3VwOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpc3BsYXlfbmFtZT1Ob25lLCBhZGRyZXNzZXM9Tm9uZSk6CisgICAgICAgICIiIkNyZWF0ZSBhbiBvYmplY3QgcmVwcmVzZW50aW5nIGFuIGFkZHJlc3MgZ3JvdXAuCisKKyAgICAgICAgQW4gYWRkcmVzcyBncm91cCBjb25zaXN0cyBvZiBhIGRpc3BsYXlfbmFtZSBmb2xsb3dlZCBieSBjb2xvbiBhbmQgYW4KKyAgICAgICAgbGlzdCBvZiBhZGRyZXNzZXMgKHNlZSBBZGRyZXNzKSB0ZXJtaW5hdGVkIGJ5IGEgc2VtaS1jb2xvbi4gIFRoZSBHcm91cAorICAgICAgICBpcyBjcmVhdGVkIGJ5IHNwZWNpZnlpbmcgYSBkaXNwbGF5X25hbWUgYW5kIGEgcG9zc2libHkgZW1wdHkgbGlzdCBvZgorICAgICAgICBBZGRyZXNzIG9iamVjdHMuICBBIEdyb3VwIGNhbiBhbHNvIGJlIHVzZWQgdG8gcmVwcmVzZW50IGEgc2luZ2xlCisgICAgICAgIGFkZHJlc3MgdGhhdCBpcyBub3QgaW4gYSBncm91cCwgd2hpY2ggaXMgY29udmVuaWVudCB3aGVuIG1hbmlwdWxhdGluZworICAgICAgICBsaXN0cyB0aGF0IGFyZSBhIGNvbWJpbmF0aW9uIG9mIEdyb3VwcyBhbmQgaW5kaXZpZHVhbCBBZGRyZXNzZXMuICBJbgorICAgICAgICB0aGlzIGNhc2UgdGhlIGRpc3BsYXlfbmFtZSBzaG91bGQgYmUgc2V0IHRvIE5vbmUuICBJbiBwYXJ0aWN1bGFyLCB0aGUKKyAgICAgICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgR3JvdXAgd2hvc2UgZGlzcGxheV9uYW1lIGlzIE5vbmUgaXMgdGhlIHNhbWUKKyAgICAgICAgYXMgdGhlIEFkZHJlc3Mgb2JqZWN0LCBpZiB0aGVyZSBpcyBvbmUgYW5kIG9ubHkgb25lIEFkZHJlc3Mgb2JqZWN0IGluCisgICAgICAgIHRoZSBhZGRyZXNzZXMgbGlzdC4KKworICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fZGlzcGxheV9uYW1lID0gZGlzcGxheV9uYW1lCisgICAgICAgIHNlbGYuX2FkZHJlc3NlcyA9IHR1cGxlKGFkZHJlc3NlcykgaWYgYWRkcmVzc2VzIGVsc2UgdHVwbGUoKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Rpc3BsYXlfbmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFkZHJlc3NlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2FkZHJlc3NlcworCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIkdyb3VwKGRpc3BsYXlfbmFtZT17IXJ9LCBhZGRyZXNzZXM9eyFyfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICBzZWxmLmRpc3BsYXlfbmFtZSwgc2VsZi5hZGRyZXNzZXMpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5kaXNwbGF5X25hbWUgaXMgTm9uZSBhbmQgbGVuKHNlbGYuYWRkcmVzc2VzKT09MToKKyAgICAgICAgICAgIHJldHVybiBzdHIoc2VsZi5hZGRyZXNzZXNbMF0pCisgICAgICAgIGRpc3AgPSBzZWxmLmRpc3BsYXlfbmFtZQorICAgICAgICBpZiBkaXNwIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbmFtZXNldCA9IHNldChkaXNwKQorICAgICAgICAgICAgaWYgbGVuKG5hbWVzZXQpID4gbGVuKG5hbWVzZXQtcGFyc2VyLlNQRUNJQUxTKToKKyAgICAgICAgICAgICAgICBkaXNwID0gcGFyc2VyLnF1b3RlX3N0cmluZyhkaXNwKQorICAgICAgICBhZHJzdHIgPSAiLCAiLmpvaW4oc3RyKHgpIGZvciB4IGluIHNlbGYuYWRkcmVzc2VzKQorICAgICAgICBhZHJzdHIgPSAnICcgKyBhZHJzdHIgaWYgYWRyc3RyIGVsc2UgYWRyc3RyCisgICAgICAgIHJldHVybiAie306e307Ii5mb3JtYXQoZGlzcCwgYWRyc3RyKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIHR5cGUob3RoZXIpICE9IHR5cGUoc2VsZik6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIChzZWxmLmRpc3BsYXlfbmFtZSA9PSBvdGhlci5kaXNwbGF5X25hbWUgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5hZGRyZXNzZXMgPT0gb3RoZXIuYWRkcmVzc2VzKQorCisKKyMgSGVhZGVyIENsYXNzZXMgIworCitjbGFzcyBCYXNlSGVhZGVyKHN0cik6CisKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBtZXNzYWdlIGhlYWRlcnMuCisKKyAgICBJbXBsZW1lbnRzIGdlbmVyaWMgYmVoYXZpb3IgYW5kIHByb3ZpZGVzIHRvb2xzIGZvciBzdWJjbGFzc2VzLgorCisgICAgQSBzdWJjbGFzcyBtdXN0IGRlZmluZSBhIGNsYXNzbWV0aG9kIG5hbWVkICdwYXJzZScgdGhhdCB0YWtlcyBhbiB1bmZvbGRlZAorICAgIHZhbHVlIHN0cmluZyBhbmQgYSBkaWN0aW9uYXJ5IGFzIGl0cyBhcmd1bWVudHMuICBUaGUgZGljdGlvbmFyeSB3aWxsCisgICAgY29udGFpbiBvbmUga2V5LCAnZGVmZWN0cycsIGluaXRpYWxpemVkIHRvIGFuIGVtcHR5IGxpc3QuICBBZnRlciB0aGUgY2FsbAorICAgIHRoZSBkaWN0aW9uYXJ5IG11c3QgY29udGFpbiB0d28gYWRkaXRpb25hbCBrZXlzOiBwYXJzZV90cmVlLCBzZXQgdG8gdGhlCisgICAgcGFyc2UgdHJlZSBvYnRhaW5lZCBmcm9tIHBhcnNpbmcgdGhlIGhlYWRlciwgYW5kICdkZWNvZGVkJywgc2V0IHRvIHRoZQorICAgIHN0cmluZyB2YWx1ZSBvZiB0aGUgaWRlYWxpemVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkYXRhIGZyb20gdGhlIHZhbHVlLgorICAgIChUaGF0IGlzLCBlbmNvZGVkIHdvcmRzIGFyZSBkZWNvZGVkLCBhbmQgdmFsdWVzIHRoYXQgaGF2ZSBjYW5vbmljYWwKKyAgICByZXByZXNlbnRhdGlvbnMgYXJlIHNvIHJlcHJlc2VudGVkLikKKworICAgIFRoZSBkZWZlY3RzIGtleSBpcyBpbnRlbmRlZCB0byBjb2xsZWN0IHBhcnNpbmcgZGVmZWN0cywgd2hpY2ggdGhlIG1lc3NhZ2UKKyAgICBwYXJzZXIgd2lsbCBzdWJzZXF1ZW50bHkgZGlzcG9zZSBvZiBhcyBhcHByb3ByaWF0ZS4gIFRoZSBwYXJzZXIgc2hvdWxkIG5vdCwKKyAgICBpbnNvZmFyIGFzIHByYWN0aWNhbCwgcmFpc2UgYW55IGVycm9ycy4gIERlZmVjdHMgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZQorICAgIGxpc3QgaW5zdGVhZC4gIFRoZSBzdGFuZGFyZCBoZWFkZXIgcGFyc2VycyByZWdpc3RlciBkZWZlY3RzIGZvciBSRkMKKyAgICBjb21wbGlhbmNlIGlzc3VlcywgZm9yIG9ic29sZXRlIFJGQyBzeW50YXgsIGFuZCBmb3IgdW5yZWNvdmVyYWJsZSBwYXJzaW5nCisgICAgZXJyb3JzLgorCisgICAgVGhlIHBhcnNlIG1ldGhvZCBtYXkgYWRkIGFkZGl0aW9uYWwga2V5cyB0byB0aGUgZGljdGlvbmFyeS4gIEluIHRoaXMgY2FzZQorICAgIHRoZSBzdWJjbGFzcyBtdXN0IGRlZmluZSBhbiAnaW5pdCcgbWV0aG9kLCB3aGljaCB3aWxsIGJlIHBhc3NlZCB0aGUKKyAgICBkaWN0aW9uYXJ5IGFzIGl0cyBrZXl3b3JkIGFyZ3VtZW50cy4gIFRoZSBtZXRob2Qgc2hvdWxkIHVzZSAodXN1YWxseSBieQorICAgIHNldHRpbmcgdGhlbSBhcyB0aGUgdmFsdWUgb2Ygc2ltaWxhcmx5IG5hbWVkIGF0dHJpYnV0ZXMpIGFuZCByZW1vdmUgYWxsIHRoZQorICAgIGV4dHJhIGtleXMgYWRkZWQgYnkgaXRzIHBhcnNlIG1ldGhvZCwgYW5kIHRoZW4gdXNlIHN1cGVyIHRvIGNhbGwgaXRzIHBhcmVudAorICAgIGNsYXNzIHdpdGggdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYW5kIGtleXdvcmRzLgorCisgICAgVGhlIHN1YmNsYXNzIHNob3VsZCBhbHNvIG1ha2Ugc3VyZSB0aGF0IGEgJ21heF9jb3VudCcgYXR0cmlidXRlIGlzIGRlZmluZWQKKyAgICB0aGF0IGlzIGVpdGhlciBOb25lIG9yIDEuIFhYWDogbmVlZCB0byBiZXR0ZXIgZGVmaW5lIHRoaXMgQVBJLgorCisgICAgIiIiCisKKyAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIHZhbHVlKToKKyAgICAgICAga3dkcyA9IHsnZGVmZWN0cyc6IFtdfQorICAgICAgICBjbHMucGFyc2UodmFsdWUsIGt3ZHMpCisgICAgICAgIGlmIHV0aWxzLl9oYXNfc3Vycm9nYXRlcyhrd2RzWydkZWNvZGVkJ10pOgorICAgICAgICAgICAga3dkc1snZGVjb2RlZCddID0gdXRpbHMuX3Nhbml0aXplKGt3ZHNbJ2RlY29kZWQnXSkKKyAgICAgICAgc2VsZiA9IHN0ci5fX25ld19fKGNscywga3dkc1snZGVjb2RlZCddKQorICAgICAgICBkZWwga3dkc1snZGVjb2RlZCddCisgICAgICAgIHNlbGYuaW5pdChuYW1lLCAqKmt3ZHMpCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgaW5pdChzZWxmLCBuYW1lLCAqLCBwYXJzZV90cmVlLCBkZWZlY3RzKToKKyAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5fcGFyc2VfdHJlZSA9IHBhcnNlX3RyZWUKKyAgICAgICAgc2VsZi5fZGVmZWN0cyA9IGRlZmVjdHMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRlZmVjdHMoc2VsZik6CisgICAgICAgIHJldHVybiB0dXBsZShzZWxmLl9kZWZlY3RzKQorCisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiAoCisgICAgICAgICAgICBfcmVjb25zdHJ1Y3RfaGVhZGVyLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fYmFzZXNfXywKKyAgICAgICAgICAgICAgICBzdHIoc2VsZiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgc2VsZi5fX2RpY3RfXykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcmVjb25zdHJ1Y3QoY2xzLCB2YWx1ZSk6CisgICAgICAgIHJldHVybiBzdHIuX19uZXdfXyhjbHMsIHZhbHVlKQorCisgICAgZGVmIGZvbGQoc2VsZiwgKiwgcG9saWN5KToKKyAgICAgICAgIiIiRm9sZCBoZWFkZXIgYWNjb3JkaW5nIHRvIHBvbGljeS4KKworICAgICAgICBUaGUgcGFyc2VkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBoZWFkZXIgaXMgZm9sZGVkIGFjY29yZGluZyB0bworICAgICAgICBSRkM1MzIyIHJ1bGVzLCBhcyBtb2RpZmllZCBieSB0aGUgcG9saWN5LiAgSWYgdGhlIHBhcnNlIHRyZWUKKyAgICAgICAgY29udGFpbnMgc3Vycm9nYXRlZXNjYXBlZCBieXRlcywgdGhlIGJ5dGVzIGFyZSBDVEUgZW5jb2RlZCB1c2luZworICAgICAgICB0aGUgY2hhcnNldCAndW5rbm93bi04Yml0Ii4KKworICAgICAgICBBbnkgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gdGhlIHBhcnNlIHRyZWUgYXJlIENURSBlbmNvZGVkIHVzaW5nCisgICAgICAgIGNoYXJzZXQgdXRmLTguIFhYWDogbWFrZSB0aGlzIGEgcG9saWN5IHNldHRpbmcuCisKKyAgICAgICAgVGhlIHJldHVybmVkIHZhbHVlIGlzIGFuIEFTQ0lJLW9ubHkgc3RyaW5nIHBvc3NpYmx5IGNvbnRhaW5pbmcgbGluZXNlcAorICAgICAgICBjaGFyYWN0ZXJzLCBhbmQgZW5kaW5nIHdpdGggYSBsaW5lc2VwIGNoYXJhY3Rlci4gIFRoZSBzdHJpbmcgaW5jbHVkZXMKKyAgICAgICAgdGhlIGhlYWRlciBuYW1lIGFuZCB0aGUgJzogJyBzZXBhcmF0b3IuCisKKyAgICAgICAgIiIiCisgICAgICAgICMgQXQgc29tZSBwb2ludCB3ZSBuZWVkIHRvIG9ubHkgcHV0IGZ3cyBoZXJlIGlmIGl0IHdhcyBpbiB0aGUgc291cmNlLgorICAgICAgICBoZWFkZXIgPSBwYXJzZXIuSGVhZGVyKFsKKyAgICAgICAgICAgIHBhcnNlci5IZWFkZXJMYWJlbChbCisgICAgICAgICAgICAgICAgcGFyc2VyLlZhbHVlVGVybWluYWwoc2VsZi5uYW1lLCAnaGVhZGVyLW5hbWUnKSwKKyAgICAgICAgICAgICAgICBwYXJzZXIuVmFsdWVUZXJtaW5hbCgnOicsICdoZWFkZXItc2VwJyldKSwKKyAgICAgICAgICAgIHBhcnNlci5DRldTTGlzdChbcGFyc2VyLldoaXRlU3BhY2VUZXJtaW5hbCgnICcsICdmd3MnKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZV90cmVlXSkKKyAgICAgICAgcmV0dXJuIGhlYWRlci5mb2xkKHBvbGljeT1wb2xpY3kpCisKKworZGVmIF9yZWNvbnN0cnVjdF9oZWFkZXIoY2xzX25hbWUsIGJhc2VzLCB2YWx1ZSk6CisgICAgcmV0dXJuIHR5cGUoY2xzX25hbWUsIGJhc2VzLCB7fSkuX3JlY29uc3RydWN0KHZhbHVlKQorCisKK2NsYXNzIFVuc3RydWN0dXJlZEhlYWRlcjoKKworICAgIG1heF9jb3VudCA9IE5vbmUKKyAgICB2YWx1ZV9wYXJzZXIgPSBzdGF0aWNtZXRob2QocGFyc2VyLmdldF91bnN0cnVjdHVyZWQpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2UoY2xzLCB2YWx1ZSwga3dkcyk6CisgICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IGNscy52YWx1ZV9wYXJzZXIodmFsdWUpCisgICAgICAgIGt3ZHNbJ2RlY29kZWQnXSA9IHN0cihrd2RzWydwYXJzZV90cmVlJ10pCisKKworY2xhc3MgVW5pcXVlVW5zdHJ1Y3R1cmVkSGVhZGVyKFVuc3RydWN0dXJlZEhlYWRlcik6CisKKyAgICBtYXhfY291bnQgPSAxCisKKworY2xhc3MgRGF0ZUhlYWRlcjoKKworICAgICIiIkhlYWRlciB3aG9zZSB2YWx1ZSBjb25zaXN0cyBvZiBhIHNpbmdsZSB0aW1lc3RhbXAuCisKKyAgICBQcm92aWRlcyBhbiBhZGRpdGlvbmFsIGF0dHJpYnV0ZSwgZGF0ZXRpbWUsIHdoaWNoIGlzIGVpdGhlciBhbiBhd2FyZQorICAgIGRhdGV0aW1lIHVzaW5nIGEgdGltZXpvbmUsIG9yIGEgbmFpdmUgZGF0ZXRpbWUgaWYgdGhlIHRpbWV6b25lCisgICAgaW4gdGhlIGlucHV0IHN0cmluZyBpcyAtMDAwMC4gIEFsc28gYWNjZXB0cyBhIGRhdGV0aW1lIGFzIGlucHV0LgorICAgIFRoZSAndmFsdWUnIGF0dHJpYnV0ZSBpcyB0aGUgbm9ybWFsaXplZCBmb3JtIG9mIHRoZSB0aW1lc3RhbXAsCisgICAgd2hpY2ggbWVhbnMgaXQgaXMgdGhlIG91dHB1dCBvZiBmb3JtYXRfZGF0ZXRpbWUgb24gdGhlIGRhdGV0aW1lLgorICAgICIiIgorCisgICAgbWF4X2NvdW50ID0gTm9uZQorCisgICAgIyBUaGlzIGlzIHVzZWQgb25seSBmb3IgZm9sZGluZywgbm90IGZvciBjcmVhdGluZyAnZGVjb2RlZCcuCisgICAgdmFsdWVfcGFyc2VyID0gc3RhdGljbWV0aG9kKHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHBhcnNlKGNscywgdmFsdWUsIGt3ZHMpOgorICAgICAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICAgICBrd2RzWydkZWZlY3RzJ10uYXBwZW5kKGVycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZSgpKQorICAgICAgICAgICAga3dkc1snZGF0ZXRpbWUnXSA9IE5vbmUKKyAgICAgICAgICAgIGt3ZHNbJ2RlY29kZWQnXSA9ICcnCisgICAgICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBwYXJzZXIuVG9rZW5MaXN0KCkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICAgICAgdmFsdWUgPSB1dGlscy5wYXJzZWRhdGVfdG9fZGF0ZXRpbWUodmFsdWUpCisgICAgICAgIGt3ZHNbJ2RhdGV0aW1lJ10gPSB2YWx1ZQorICAgICAgICBrd2RzWydkZWNvZGVkJ10gPSB1dGlscy5mb3JtYXRfZGF0ZXRpbWUoa3dkc1snZGF0ZXRpbWUnXSkKKyAgICAgICAga3dkc1sncGFyc2VfdHJlZSddID0gY2xzLnZhbHVlX3BhcnNlcihrd2RzWydkZWNvZGVkJ10pCisKKyAgICBkZWYgaW5pdChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHNlbGYuX2RhdGV0aW1lID0ga3cucG9wKCdkYXRldGltZScpCisgICAgICAgIHN1cGVyKCkuaW5pdCgqYXJncywgKiprdykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkYXRldGltZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2RhdGV0aW1lCisKKworY2xhc3MgVW5pcXVlRGF0ZUhlYWRlcihEYXRlSGVhZGVyKToKKworICAgIG1heF9jb3VudCA9IDEKKworCitjbGFzcyBBZGRyZXNzSGVhZGVyOgorCisgICAgbWF4X2NvdW50ID0gTm9uZQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiB2YWx1ZV9wYXJzZXIodmFsdWUpOgorICAgICAgICBhZGRyZXNzX2xpc3QsIHZhbHVlID0gcGFyc2VyLmdldF9hZGRyZXNzX2xpc3QodmFsdWUpCisgICAgICAgIGFzc2VydCBub3QgdmFsdWUsICd0aGlzIHNob3VsZCBub3QgaGFwcGVuJworICAgICAgICByZXR1cm4gYWRkcmVzc19saXN0CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2UoY2xzLCB2YWx1ZSwga3dkcyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICAgICAgICAjIFdlIGFyZSB0cmFuc2xhdGluZyBoZXJlIGZyb20gdGhlIFJGQyBsYW5ndWFnZSAoYWRkcmVzcy9tYWlsYm94KQorICAgICAgICAgICAgIyB0byBvdXIgQVBJIGxhbmd1YWdlIChncm91cC9hZGRyZXNzKS4KKyAgICAgICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IGFkZHJlc3NfbGlzdCA9IGNscy52YWx1ZV9wYXJzZXIodmFsdWUpCisgICAgICAgICAgICBncm91cHMgPSBbXQorICAgICAgICAgICAgZm9yIGFkZHIgaW4gYWRkcmVzc19saXN0LmFkZHJlc3NlczoKKyAgICAgICAgICAgICAgICBncm91cHMuYXBwZW5kKEdyb3VwKGFkZHIuZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FkZHJlc3MobWIuZGlzcGxheV9uYW1lIG9yICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWIubG9jYWxfcGFydCBvciAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1iLmRvbWFpbiBvciAnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbWIgaW4gYWRkci5hbGxfbWFpbGJveGVzXSkpCisgICAgICAgICAgICBkZWZlY3RzID0gbGlzdChhZGRyZXNzX2xpc3QuYWxsX2RlZmVjdHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEFzc3VtZSBpdCBpcyBBZGRyZXNzL0dyb3VwIHN0dWZmCisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cih2YWx1ZSwgJ19faXRlcl9fJyk6CisgICAgICAgICAgICAgICAgdmFsdWUgPSBbdmFsdWVdCisgICAgICAgICAgICBncm91cHMgPSBbR3JvdXAoTm9uZSwgW2l0ZW1dKSBpZiBub3QgaGFzYXR0cihpdGVtLCAnYWRkcmVzc2VzJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaXRlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gdmFsdWVdCisgICAgICAgICAgICBkZWZlY3RzID0gW10KKyAgICAgICAga3dkc1snZ3JvdXBzJ10gPSBncm91cHMKKyAgICAgICAga3dkc1snZGVmZWN0cyddID0gZGVmZWN0cworICAgICAgICBrd2RzWydkZWNvZGVkJ10gPSAnLCAnLmpvaW4oW3N0cihpdGVtKSBmb3IgaXRlbSBpbiBncm91cHNdKQorICAgICAgICBpZiAncGFyc2VfdHJlZScgbm90IGluIGt3ZHM6CisgICAgICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBjbHMudmFsdWVfcGFyc2VyKGt3ZHNbJ2RlY29kZWQnXSkKKworICAgIGRlZiBpbml0KHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgc2VsZi5fZ3JvdXBzID0gdHVwbGUoa3cucG9wKCdncm91cHMnKSkKKyAgICAgICAgc2VsZi5fYWRkcmVzc2VzID0gTm9uZQorICAgICAgICBzdXBlcigpLmluaXQoKmFyZ3MsICoqa3cpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZ3JvdXBzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZ3JvdXBzCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkcmVzc2VzKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9hZGRyZXNzZXMgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2FkZHJlc3NlcyA9IHR1cGxlKFthZGRyZXNzIGZvciBncm91cCBpbiBzZWxmLl9ncm91cHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhZGRyZXNzIGluIGdyb3VwLmFkZHJlc3Nlc10pCisgICAgICAgIHJldHVybiBzZWxmLl9hZGRyZXNzZXMKKworCitjbGFzcyBVbmlxdWVBZGRyZXNzSGVhZGVyKEFkZHJlc3NIZWFkZXIpOgorCisgICAgbWF4X2NvdW50ID0gMQorCisKK2NsYXNzIFNpbmdsZUFkZHJlc3NIZWFkZXIoQWRkcmVzc0hlYWRlcik6CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkcmVzcyhzZWxmKToKKyAgICAgICAgaWYgbGVuKHNlbGYuYWRkcmVzc2VzKSE9MToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoKCJ2YWx1ZSBvZiBzaW5nbGUgYWRkcmVzcyBoZWFkZXIge30gaXMgbm90ICIKKyAgICAgICAgICAgICAgICAiYSBzaW5nbGUgYWRkcmVzcyIpLmZvcm1hdChzZWxmLm5hbWUpKQorICAgICAgICByZXR1cm4gc2VsZi5hZGRyZXNzZXNbMF0KKworCitjbGFzcyBVbmlxdWVTaW5nbGVBZGRyZXNzSGVhZGVyKFNpbmdsZUFkZHJlc3NIZWFkZXIpOgorCisgICAgbWF4X2NvdW50ID0gMQorCisKK2NsYXNzIE1JTUVWZXJzaW9uSGVhZGVyOgorCisgICAgbWF4X2NvdW50ID0gMQorCisgICAgdmFsdWVfcGFyc2VyID0gc3RhdGljbWV0aG9kKHBhcnNlci5wYXJzZV9taW1lX3ZlcnNpb24pCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2UoY2xzLCB2YWx1ZSwga3dkcyk6CisgICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IHBhcnNlX3RyZWUgPSBjbHMudmFsdWVfcGFyc2VyKHZhbHVlKQorICAgICAgICBrd2RzWydkZWNvZGVkJ10gPSBzdHIocGFyc2VfdHJlZSkKKyAgICAgICAga3dkc1snZGVmZWN0cyddLmV4dGVuZChwYXJzZV90cmVlLmFsbF9kZWZlY3RzKQorICAgICAgICBrd2RzWydtYWpvciddID0gTm9uZSBpZiBwYXJzZV90cmVlLm1pbm9yIGlzIE5vbmUgZWxzZSBwYXJzZV90cmVlLm1ham9yCisgICAgICAgIGt3ZHNbJ21pbm9yJ10gPSBwYXJzZV90cmVlLm1pbm9yCisgICAgICAgIGlmIHBhcnNlX3RyZWUubWlub3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBrd2RzWyd2ZXJzaW9uJ10gPSAne30ue30nLmZvcm1hdChrd2RzWydtYWpvciddLCBrd2RzWydtaW5vciddKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAga3dkc1sndmVyc2lvbiddID0gTm9uZQorCisgICAgZGVmIGluaXQoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBzZWxmLl92ZXJzaW9uID0ga3cucG9wKCd2ZXJzaW9uJykKKyAgICAgICAgc2VsZi5fbWFqb3IgPSBrdy5wb3AoJ21ham9yJykKKyAgICAgICAgc2VsZi5fbWlub3IgPSBrdy5wb3AoJ21pbm9yJykKKyAgICAgICAgc3VwZXIoKS5pbml0KCphcmdzLCAqKmt3KQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1ham9yKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbWFqb3IKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtaW5vcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX21pbm9yCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmVyc2lvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ZlcnNpb24KKworCitjbGFzcyBQYXJhbWV0ZXJpemVkTUlNRUhlYWRlcjoKKworICAgICMgTWl4aW4gdGhhdCBoYW5kbGVzIHRoZSBwYXJhbXMgZGljdC4gIE11c3QgYmUgc3ViY2xhc3NlZCBhbmQKKyAgICAjIGEgcHJvcGVydHkgdmFsdWVfcGFyc2VyIGZvciB0aGUgc3BlY2lmaWMgaGVhZGVyIHByb3ZpZGVkLgorCisgICAgbWF4X2NvdW50ID0gMQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHBhcnNlKGNscywgdmFsdWUsIGt3ZHMpOgorICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBwYXJzZV90cmVlID0gY2xzLnZhbHVlX3BhcnNlcih2YWx1ZSkKKyAgICAgICAga3dkc1snZGVjb2RlZCddID0gc3RyKHBhcnNlX3RyZWUpCisgICAgICAgIGt3ZHNbJ2RlZmVjdHMnXS5leHRlbmQocGFyc2VfdHJlZS5hbGxfZGVmZWN0cykKKyAgICAgICAgaWYgcGFyc2VfdHJlZS5wYXJhbXMgaXMgTm9uZToKKyAgICAgICAgICAgIGt3ZHNbJ3BhcmFtcyddID0ge30KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgVGhlIE1JTUUgUkZDcyBzcGVjaWZ5IHRoYXQgcGFyYW1ldGVyIG9yZGVyaW5nIGlzIGFyYml0cmFyeS4KKyAgICAgICAgICAgIGt3ZHNbJ3BhcmFtcyddID0ge3V0aWxzLl9zYW5pdGl6ZShuYW1lKS5sb3dlcigpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbHMuX3Nhbml0aXplKHZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBwYXJzZV90cmVlLnBhcmFtc30KKworICAgIGRlZiBpbml0KHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgc2VsZi5fcGFyYW1zID0ga3cucG9wKCdwYXJhbXMnKQorICAgICAgICBzdXBlcigpLmluaXQoKmFyZ3MsICoqa3cpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFyYW1zKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fcGFyYW1zLmNvcHkoKQorCisKK2NsYXNzIENvbnRlbnRUeXBlSGVhZGVyKFBhcmFtZXRlcml6ZWRNSU1FSGVhZGVyKToKKworICAgIHZhbHVlX3BhcnNlciA9IHN0YXRpY21ldGhvZChwYXJzZXIucGFyc2VfY29udGVudF90eXBlX2hlYWRlcikKKworICAgIGRlZiBpbml0KHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgc3VwZXIoKS5pbml0KCphcmdzLCAqKmt3KQorICAgICAgICBzZWxmLl9tYWludHlwZSA9IHV0aWxzLl9zYW5pdGl6ZShzZWxmLl9wYXJzZV90cmVlLm1haW50eXBlKQorICAgICAgICBzZWxmLl9zdWJ0eXBlID0gdXRpbHMuX3Nhbml0aXplKHNlbGYuX3BhcnNlX3RyZWUuc3VidHlwZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYWludHlwZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX21haW50eXBlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3VidHlwZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3N1YnR5cGUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb250ZW50X3R5cGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLm1haW50eXBlICsgJy8nICsgc2VsZi5zdWJ0eXBlCisKKworY2xhc3MgQ29udGVudERpc3Bvc2l0aW9uSGVhZGVyKFBhcmFtZXRlcml6ZWRNSU1FSGVhZGVyKToKKworICAgIHZhbHVlX3BhcnNlciA9IHN0YXRpY21ldGhvZChwYXJzZXIucGFyc2VfY29udGVudF9kaXNwb3NpdGlvbl9oZWFkZXIpCisKKyAgICBkZWYgaW5pdChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHN1cGVyKCkuaW5pdCgqYXJncywgKiprdykKKyAgICAgICAgY2QgPSBzZWxmLl9wYXJzZV90cmVlLmNvbnRlbnRfZGlzcG9zaXRpb24KKyAgICAgICAgc2VsZi5fY29udGVudF9kaXNwb3NpdGlvbiA9IGNkIGlmIGNkIGlzIE5vbmUgZWxzZSB1dGlscy5fc2FuaXRpemUoY2QpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29udGVudF9kaXNwb3NpdGlvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NvbnRlbnRfZGlzcG9zaXRpb24KKworCitjbGFzcyBDb250ZW50VHJhbnNmZXJFbmNvZGluZ0hlYWRlcjoKKworICAgIG1heF9jb3VudCA9IDEKKworICAgIHZhbHVlX3BhcnNlciA9IHN0YXRpY21ldGhvZChwYXJzZXIucGFyc2VfY29udGVudF90cmFuc2Zlcl9lbmNvZGluZ19oZWFkZXIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2UoY2xzLCB2YWx1ZSwga3dkcyk6CisgICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IHBhcnNlX3RyZWUgPSBjbHMudmFsdWVfcGFyc2VyKHZhbHVlKQorICAgICAgICBrd2RzWydkZWNvZGVkJ10gPSBzdHIocGFyc2VfdHJlZSkKKyAgICAgICAga3dkc1snZGVmZWN0cyddLmV4dGVuZChwYXJzZV90cmVlLmFsbF9kZWZlY3RzKQorCisgICAgZGVmIGluaXQoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBzdXBlcigpLmluaXQoKmFyZ3MsICoqa3cpCisgICAgICAgIHNlbGYuX2N0ZSA9IHV0aWxzLl9zYW5pdGl6ZShzZWxmLl9wYXJzZV90cmVlLmN0ZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjdGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jdGUKKworCisjIFRoZSBoZWFkZXIgZmFjdG9yeSAjCisKK19kZWZhdWx0X2hlYWRlcl9tYXAgPSB7CisgICAgJ3N1YmplY3QnOiAgICAgICAgICAgICAgICAgICAgICBVbmlxdWVVbnN0cnVjdHVyZWRIZWFkZXIsCisgICAgJ2RhdGUnOiAgICAgICAgICAgICAgICAgICAgICAgICBVbmlxdWVEYXRlSGVhZGVyLAorICAgICdyZXNlbnQtZGF0ZSc6ICAgICAgICAgICAgICAgICAgRGF0ZUhlYWRlciwKKyAgICAnb3JpZy1kYXRlJzogICAgICAgICAgICAgICAgICAgIFVuaXF1ZURhdGVIZWFkZXIsCisgICAgJ3NlbmRlcic6ICAgICAgICAgICAgICAgICAgICAgICBVbmlxdWVTaW5nbGVBZGRyZXNzSGVhZGVyLAorICAgICdyZXNlbnQtc2VuZGVyJzogICAgICAgICAgICAgICAgU2luZ2xlQWRkcmVzc0hlYWRlciwKKyAgICAndG8nOiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZUFkZHJlc3NIZWFkZXIsCisgICAgJ3Jlc2VudC10byc6ICAgICAgICAgICAgICAgICAgICBBZGRyZXNzSGVhZGVyLAorICAgICdjYyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pcXVlQWRkcmVzc0hlYWRlciwKKyAgICAncmVzZW50LWNjJzogICAgICAgICAgICAgICAgICAgIEFkZHJlc3NIZWFkZXIsCisgICAgJ2JjYyc6ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyLAorICAgICdyZXNlbnQtYmNjJzogICAgICAgICAgICAgICAgICAgQWRkcmVzc0hlYWRlciwKKyAgICAnZnJvbSc6ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZUFkZHJlc3NIZWFkZXIsCisgICAgJ3Jlc2VudC1mcm9tJzogICAgICAgICAgICAgICAgICBBZGRyZXNzSGVhZGVyLAorICAgICdyZXBseS10byc6ICAgICAgICAgICAgICAgICAgICAgVW5pcXVlQWRkcmVzc0hlYWRlciwKKyAgICAnbWltZS12ZXJzaW9uJzogICAgICAgICAgICAgICAgIE1JTUVWZXJzaW9uSGVhZGVyLAorICAgICdjb250ZW50LXR5cGUnOiAgICAgICAgICAgICAgICAgQ29udGVudFR5cGVIZWFkZXIsCisgICAgJ2NvbnRlbnQtZGlzcG9zaXRpb24nOiAgICAgICAgICBDb250ZW50RGlzcG9zaXRpb25IZWFkZXIsCisgICAgJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnOiAgICBDb250ZW50VHJhbnNmZXJFbmNvZGluZ0hlYWRlciwKKyAgICB9CisKK2NsYXNzIEhlYWRlclJlZ2lzdHJ5OgorCisgICAgIiIiQSBoZWFkZXJfZmFjdG9yeSBhbmQgaGVhZGVyIHJlZ2lzdHJ5LiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJhc2VfY2xhc3M9QmFzZUhlYWRlciwgZGVmYXVsdF9jbGFzcz1VbnN0cnVjdHVyZWRIZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgIHVzZV9kZWZhdWx0X21hcD1UcnVlKToKKyAgICAgICAgIiIiQ3JlYXRlIGEgaGVhZGVyX2ZhY3RvcnkgdGhhdCB3b3JrcyB3aXRoIHRoZSBQb2xpY3kgQVBJLgorCisgICAgICAgIGJhc2VfY2xhc3MgaXMgdGhlIGNsYXNzIHRoYXQgd2lsbCBiZSB0aGUgbGFzdCBjbGFzcyBpbiB0aGUgY3JlYXRlZAorICAgICAgICBoZWFkZXIgY2xhc3MncyBfX2Jhc2VzX18gbGlzdC4gIGRlZmF1bHRfY2xhc3MgaXMgdGhlIGNsYXNzIHRoYXQgd2lsbCBiZQorICAgICAgICB1c2VkIGlmICJuYW1lIiAoc2VlIF9fY2FsbF9fKSBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlIHJlZ2lzdHJ5LgorICAgICAgICB1c2VfZGVmYXVsdF9tYXAgY29udHJvbHMgd2hldGhlciBvciBub3QgdGhlIGRlZmF1bHQgbWFwcGluZyBvZiBuYW1lcyB0bworICAgICAgICBzcGVjaWFsaXplZCBjbGFzc2VzIGlzIGNvcGllZCBpbiB0byB0aGUgcmVnaXN0cnkgd2hlbiB0aGUgZmFjdG9yeSBpcworICAgICAgICBjcmVhdGVkLiAgVGhlIGRlZmF1bHQgaXMgVHJ1ZS4KKworICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5yZWdpc3RyeSA9IHt9CisgICAgICAgIHNlbGYuYmFzZV9jbGFzcyA9IGJhc2VfY2xhc3MKKyAgICAgICAgc2VsZi5kZWZhdWx0X2NsYXNzID0gZGVmYXVsdF9jbGFzcworICAgICAgICBpZiB1c2VfZGVmYXVsdF9tYXA6CisgICAgICAgICAgICBzZWxmLnJlZ2lzdHJ5LnVwZGF0ZShfZGVmYXVsdF9oZWFkZXJfbWFwKQorCisgICAgZGVmIG1hcF90b190eXBlKHNlbGYsIG5hbWUsIGNscyk6CisgICAgICAgICIiIlJlZ2lzdGVyIGNscyBhcyB0aGUgc3BlY2lhbGl6ZWQgY2xhc3MgZm9yIGhhbmRsaW5nICJuYW1lIiBoZWFkZXJzLgorCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnJlZ2lzdHJ5W25hbWUubG93ZXIoKV0gPSBjbHMKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBuYW1lKToKKyAgICAgICAgY2xzID0gc2VsZi5yZWdpc3RyeS5nZXQobmFtZS5sb3dlcigpLCBzZWxmLmRlZmF1bHRfY2xhc3MpCisgICAgICAgIHJldHVybiB0eXBlKCdfJytjbHMuX19uYW1lX18sIChjbHMsIHNlbGYuYmFzZV9jbGFzcyksIHt9KQorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiQ3JlYXRlIGEgaGVhZGVyIGluc3RhbmNlIGZvciBoZWFkZXIgJ25hbWUnIGZyb20gJ3ZhbHVlJy4KKworICAgICAgICBDcmVhdGVzIGEgaGVhZGVyIGluc3RhbmNlIGJ5IGNyZWF0aW5nIGEgc3BlY2lhbGl6ZWQgY2xhc3MgZm9yIHBhcnNpbmcKKyAgICAgICAgYW5kIHJlcHJlc2VudGluZyB0aGUgc3BlY2lmaWVkIGhlYWRlciBieSBjb21iaW5pbmcgdGhlIGZhY3RvcnkKKyAgICAgICAgYmFzZV9jbGFzcyB3aXRoIGEgc3BlY2lhbGl6ZWQgY2xhc3MgZnJvbSB0aGUgcmVnaXN0cnkgb3IgdGhlCisgICAgICAgIGRlZmF1bHRfY2xhc3MsIGFuZCBwYXNzaW5nIHRoZSBuYW1lIGFuZCB2YWx1ZSB0byB0aGUgY29uc3RydWN0ZWQKKyAgICAgICAgY2xhc3MncyBjb25zdHJ1Y3Rvci4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGZbbmFtZV0obmFtZSwgdmFsdWUpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWVzc2FnZS5weSBiL0xpYi9lbWFpbC9tZXNzYWdlLnB5CmluZGV4IGYxZmZjZGIuLjNmZWFiNTIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9tZXNzYWdlLnB5CisrKyBiL0xpYi9lbWFpbC9tZXNzYWdlLnB5CkBAIC0xMCwxNCArMTAsMTQgQEAKIGltcG9ydCB1dQogaW1wb3J0IGJhc2U2NAogaW1wb3J0IGJpbmFzY2lpCi1pbXBvcnQgd2FybmluZ3MKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPCiAKICMgSW50cmFwYWNrYWdlIGltcG9ydHMKIGZyb20gZW1haWwgaW1wb3J0IHV0aWxzCiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKLWZyb20gZW1haWwgaW1wb3J0IGhlYWRlcgorZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgY29tcGF0MzIKIGZyb20gZW1haWwgaW1wb3J0IGNoYXJzZXQgYXMgX2NoYXJzZXQKK2Zyb20gZW1haWwuX2VuY29kZWRfd29yZHMgaW1wb3J0IGRlY29kZV9iCiBDaGFyc2V0ID0gX2NoYXJzZXQuQ2hhcnNldAogCiBTRU1JU1BBQ0UgPSAnOyAnCkBAIC0yNiwyNCArMjYsNiBAQAogIyBleGlzdGVuY2Ugb2Ygd2hpY2ggZm9yY2UgcXVvdGluZyBvZiB0aGUgcGFyYW1ldGVyIHZhbHVlLgogdHNwZWNpYWxzID0gcmUuY29tcGlsZShyJ1sgXChcKTw+QCw7OlxcIi9cW1xdXD89XScpCiAKLSMgSG93IHRvIGZpZ3VyZSBvdXQgaWYgd2UgYXJlIHByb2Nlc3Npbmcgc3RyaW5ncyB0aGF0IGNvbWUgZnJvbSBhIGJ5dGUKLSMgc291cmNlIHdpdGggdW5kZWNvZGFibGUgY2hhcmFjdGVycy4KLV9oYXNfc3Vycm9nYXRlcyA9IHJlLmNvbXBpbGUoCi0gICAgJyhbXlx1ZDgwMC1cdWRiZmZdfFxBKVtcdWRjMDAtXHVkZmZmXShbXlx1ZGMwMC1cdWRmZmZdfFxaKScpLnNlYXJjaAotCi0KLSMgSGVscGVyIGZ1bmN0aW9ucwotZGVmIF9zYW5pdGl6ZV9oZWFkZXIobmFtZSwgdmFsdWUpOgotICAgICMgSWYgdGhlIGhlYWRlciB2YWx1ZSBjb250YWlucyBzdXJyb2dhdGVzLCByZXR1cm4gYSBIZWFkZXIgdXNpbmcKLSAgICAjIHRoZSB1bmtub3duLThiaXQgY2hhcnNldCB0byBlbmNvZGUgdGhlIGJ5dGVzIGFzIGVuY29kZWQgd29yZHMuCi0gICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHN0cik6Ci0gICAgICAgICMgQXNzdW1lIGl0IGlzIGFscmVhZHkgYSBoZWFkZXIgb2JqZWN0Ci0gICAgICAgIHJldHVybiB2YWx1ZQotICAgIGlmIF9oYXNfc3Vycm9nYXRlcyh2YWx1ZSk6Ci0gICAgICAgIHJldHVybiBoZWFkZXIuSGVhZGVyKHZhbHVlLCBjaGFyc2V0PV9jaGFyc2V0LlVOS05PV044QklULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfbmFtZT1uYW1lKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiB2YWx1ZQogCiBkZWYgX3NwbGl0cGFyYW0ocGFyYW0pOgogICAgICMgU3BsaXQgaGVhZGVyIHBhcmFtZXRlcnMuICBCQVc6IHRoaXMgbWF5IGJlIHRvbyBzaW1wbGUuICBJdCBpc24ndApAQCAtMTM2LDcgKzExOCw4IEBACiAgICAgeW91IG11c3QgdXNlIHRoZSBleHBsaWNpdCBBUEkgdG8gc2V0IG9yIGdldCBhbGwgdGhlIGhlYWRlcnMuICBOb3QgYWxsIG9mCiAgICAgdGhlIG1hcHBpbmcgbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb2xpY3k9Y29tcGF0MzIpOgorICAgICAgICBzZWxmLnBvbGljeSA9IHBvbGljeQogICAgICAgICBzZWxmLl9oZWFkZXJzID0gW10KICAgICAgICAgc2VsZi5fdW5peGZyb20gPSBOb25lCiAgICAgICAgIHNlbGYuX3BheWxvYWQgPSBOb25lCkBAIC0yNDYsNyArMjI5LDcgQEAKICAgICAgICAgY3RlID0gc3RyKHNlbGYuZ2V0KCdjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJywgJycpKS5sb3dlcigpCiAgICAgICAgICMgcGF5bG9hZCBtYXkgYmUgYnl0ZXMgaGVyZS4KICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXlsb2FkLCBzdHIpOgotICAgICAgICAgICAgaWYgX2hhc19zdXJyb2dhdGVzKHBheWxvYWQpOgorICAgICAgICAgICAgaWYgdXRpbHMuX2hhc19zdXJyb2dhdGVzKHBheWxvYWQpOgogICAgICAgICAgICAgICAgIGJwYXlsb2FkID0gcGF5bG9hZC5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCiAgICAgICAgICAgICAgICAgaWYgbm90IGRlY29kZToKICAgICAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtMjY3LDExICsyNTAsMTIgQEAKICAgICAgICAgaWYgY3RlID09ICdxdW90ZWQtcHJpbnRhYmxlJzoKICAgICAgICAgICAgIHJldHVybiB1dGlscy5fcWRlY29kZShicGF5bG9hZCkKICAgICAgICAgZWxpZiBjdGUgPT0gJ2Jhc2U2NCc6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGJhc2U2NC5iNjRkZWNvZGUoYnBheWxvYWQpCi0gICAgICAgICAgICBleGNlcHQgYmluYXNjaWkuRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBJbmNvcnJlY3QgcGFkZGluZwotICAgICAgICAgICAgICAgIHJldHVybiBicGF5bG9hZAorICAgICAgICAgICAgIyBYWFg6IHRoaXMgaXMgYSBiaXQgb2YgYSBoYWNrOyBkZWNvZGVfYiBzaG91bGQgcHJvYmFibHkgYmUgZmFjdG9yZWQKKyAgICAgICAgICAgICMgb3V0IHNvbWV3aGVyZSwgYnV0IEkgaGF2ZW4ndCBmaWd1cmVkIG91dCB3aGVyZSB5ZXQuCisgICAgICAgICAgICB2YWx1ZSwgZGVmZWN0cyA9IGRlY29kZV9iKGInJy5qb2luKGJwYXlsb2FkLnNwbGl0bGluZXMoKSkpCisgICAgICAgICAgICBmb3IgZGVmZWN0IGluIGRlZmVjdHM6CisgICAgICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChzZWxmLCBkZWZlY3QpCisgICAgICAgICAgICByZXR1cm4gdmFsdWUKICAgICAgICAgZWxpZiBjdGUgaW4gKCd4LXV1ZW5jb2RlJywgJ3V1ZW5jb2RlJywgJ3V1ZScsICd4LXV1ZScpOgogICAgICAgICAgICAgaW5fZmlsZSA9IEJ5dGVzSU8oYnBheWxvYWQpCiAgICAgICAgICAgICBvdXRfZmlsZSA9IEJ5dGVzSU8oKQpAQCAtMzYyLDcgKzM0NiwxNyBAQAogICAgICAgICBOb3RlOiB0aGlzIGRvZXMgbm90IG92ZXJ3cml0ZSBhbiBleGlzdGluZyBoZWFkZXIgd2l0aCB0aGUgc2FtZSBmaWVsZAogICAgICAgICBuYW1lLiAgVXNlIF9fZGVsaXRlbV9fKCkgZmlyc3QgdG8gZGVsZXRlIGFueSBleGlzdGluZyBoZWFkZXJzLgogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5faGVhZGVycy5hcHBlbmQoKG5hbWUsIHZhbCkpCisgICAgICAgIG1heF9jb3VudCA9IHNlbGYucG9saWN5LmhlYWRlcl9tYXhfY291bnQobmFtZSkKKyAgICAgICAgaWYgbWF4X2NvdW50OgorICAgICAgICAgICAgbG5hbWUgPSBuYW1lLmxvd2VyKCkKKyAgICAgICAgICAgIGZvdW5kID0gMAorICAgICAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5faGVhZGVyczoKKyAgICAgICAgICAgICAgICBpZiBrLmxvd2VyKCkgPT0gbG5hbWU6CisgICAgICAgICAgICAgICAgICAgIGZvdW5kICs9IDEKKyAgICAgICAgICAgICAgICAgICAgaWYgZm91bmQgPj0gbWF4X2NvdW50OgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlcmUgbWF5IGJlIGF0IG1vc3Qge30ge30gaGVhZGVycyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiBhIG1lc3NhZ2UiLmZvcm1hdChtYXhfY291bnQsIG5hbWUpKQorICAgICAgICBzZWxmLl9oZWFkZXJzLmFwcGVuZChzZWxmLnBvbGljeS5oZWFkZXJfc3RvcmVfcGFyc2UobmFtZSwgdmFsKSkKIAogICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBuYW1lKToKICAgICAgICAgIiIiRGVsZXRlIGFsbCBvY2N1cnJlbmNlcyBvZiBhIGhlYWRlciwgaWYgcHJlc2VudC4KQEAgLTQwMSw3ICszOTUsOCBAQAogICAgICAgICBBbnkgZmllbGRzIGRlbGV0ZWQgYW5kIHJlLWluc2VydGVkIGFyZSBhbHdheXMgYXBwZW5kZWQgdG8gdGhlIGhlYWRlcgogICAgICAgICBsaXN0LgogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIFtfc2FuaXRpemVfaGVhZGVyKGssIHYpIGZvciBrLCB2IGluIHNlbGYuX2hlYWRlcnNdCisgICAgICAgIHJldHVybiBbc2VsZi5wb2xpY3kuaGVhZGVyX2ZldGNoX3BhcnNlKGssIHYpCisgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5faGVhZGVyc10KIAogICAgIGRlZiBpdGVtcyhzZWxmKToKICAgICAgICAgIiIiR2V0IGFsbCB0aGUgbWVzc2FnZSdzIGhlYWRlciBmaWVsZHMgYW5kIHZhbHVlcy4KQEAgLTQxMSw3ICs0MDYsOCBAQAogICAgICAgICBBbnkgZmllbGRzIGRlbGV0ZWQgYW5kIHJlLWluc2VydGVkIGFyZSBhbHdheXMgYXBwZW5kZWQgdG8gdGhlIGhlYWRlcgogICAgICAgICBsaXN0LgogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIFsoaywgX3Nhbml0aXplX2hlYWRlcihrLCB2KSkgZm9yIGssIHYgaW4gc2VsZi5faGVhZGVyc10KKyAgICAgICAgcmV0dXJuIFsoaywgc2VsZi5wb2xpY3kuaGVhZGVyX2ZldGNoX3BhcnNlKGssIHYpKQorICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIHNlbGYuX2hlYWRlcnNdCiAKICAgICBkZWYgZ2V0KHNlbGYsIG5hbWUsIGZhaWxvYmo9Tm9uZSk6CiAgICAgICAgICIiIkdldCBhIGhlYWRlciB2YWx1ZS4KQEAgLTQyMiwxMCArNDE4LDI5IEBACiAgICAgICAgIG5hbWUgPSBuYW1lLmxvd2VyKCkKICAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5faGVhZGVyczoKICAgICAgICAgICAgIGlmIGsubG93ZXIoKSA9PSBuYW1lOgotICAgICAgICAgICAgICAgIHJldHVybiBfc2FuaXRpemVfaGVhZGVyKGssIHYpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucG9saWN5LmhlYWRlcl9mZXRjaF9wYXJzZShrLCB2KQogICAgICAgICByZXR1cm4gZmFpbG9iagogCiAgICAgIworICAgICMgIkludGVybmFsIiBtZXRob2RzIChwdWJsaWMgQVBJLCBidXQgb25seSBpbnRlbmRlZCBmb3IgdXNlIGJ5IGEgcGFyc2VyCisgICAgIyBvciBnZW5lcmF0b3IsIG5vdCBub3JtYWwgYXBwbGljYXRpb24gY29kZS4KKyAgICAjCisKKyAgICBkZWYgc2V0X3JhdyhzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIlN0b3JlIG5hbWUgYW5kIHZhbHVlIGluIHRoZSBtb2RlbCB3aXRob3V0IG1vZGlmaWNhdGlvbi4KKworICAgICAgICBUaGlzIGlzIGFuICJpbnRlcm5hbCIgQVBJLCBpbnRlbmRlZCBvbmx5IGZvciB1c2UgYnkgYSBwYXJzZXIuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9oZWFkZXJzLmFwcGVuZCgobmFtZSwgdmFsdWUpKQorCisgICAgZGVmIHJhd19pdGVtcyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSAobmFtZSwgdmFsdWUpIGhlYWRlciBwYWlycyB3aXRob3V0IG1vZGlmaWNhdGlvbi4KKworICAgICAgICBUaGlzIGlzIGFuICJpbnRlcm5hbCIgQVBJLCBpbnRlbmRlZCBvbmx5IGZvciB1c2UgYnkgYSBnZW5lcmF0b3IuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gaXRlcihzZWxmLl9oZWFkZXJzLmNvcHkoKSkKKworICAgICMKICAgICAjIEFkZGl0aW9uYWwgdXNlZnVsIHN0dWZmCiAgICAgIwogCkBAIC00NDIsNyArNDU3LDcgQEAKICAgICAgICAgbmFtZSA9IG5hbWUubG93ZXIoKQogICAgICAgICBmb3IgaywgdiBpbiBzZWxmLl9oZWFkZXJzOgogICAgICAgICAgICAgaWYgay5sb3dlcigpID09IG5hbWU6Ci0gICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChfc2FuaXRpemVfaGVhZGVyKGssIHYpKQorICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoc2VsZi5wb2xpY3kuaGVhZGVyX2ZldGNoX3BhcnNlKGssIHYpKQogICAgICAgICBpZiBub3QgdmFsdWVzOgogICAgICAgICAgICAgcmV0dXJuIGZhaWxvYmoKICAgICAgICAgcmV0dXJuIHZhbHVlcwpAQCAtNDc1LDcgKzQ5MCw3IEBACiAgICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKF9mb3JtYXRwYXJhbShrLnJlcGxhY2UoJ18nLCAnLScpLCB2KSkKICAgICAgICAgaWYgX3ZhbHVlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcGFydHMuaW5zZXJ0KDAsIF92YWx1ZSkKLSAgICAgICAgc2VsZi5faGVhZGVycy5hcHBlbmQoKF9uYW1lLCBTRU1JU1BBQ0Uuam9pbihwYXJ0cykpKQorICAgICAgICBzZWxmW19uYW1lXSA9IFNFTUlTUEFDRS5qb2luKHBhcnRzKQogCiAgICAgZGVmIHJlcGxhY2VfaGVhZGVyKHNlbGYsIF9uYW1lLCBfdmFsdWUpOgogICAgICAgICAiIiJSZXBsYWNlIGEgaGVhZGVyLgpAQCAtNDg3LDcgKzUwMiw3IEBACiAgICAgICAgIF9uYW1lID0gX25hbWUubG93ZXIoKQogICAgICAgICBmb3IgaSwgKGssIHYpIGluIHppcChyYW5nZShsZW4oc2VsZi5faGVhZGVycykpLCBzZWxmLl9oZWFkZXJzKToKICAgICAgICAgICAgIGlmIGsubG93ZXIoKSA9PSBfbmFtZToKLSAgICAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzW2ldID0gKGssIF92YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzW2ldID0gc2VsZi5wb2xpY3kuaGVhZGVyX3N0b3JlX3BhcnNlKGssIF92YWx1ZSkKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoX25hbWUpCkBAIC04MDMsNyArODE4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChrKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKCclcz0lcycgJSAoaywgdikpCi0gICAgICAgICAgICAgICAgbmV3aGVhZGVycy5hcHBlbmQoKGgsIFNFTUlTUEFDRS5qb2luKHBhcnRzKSkpCisgICAgICAgICAgICAgICAgdmFsID0gU0VNSVNQQUNFLmpvaW4ocGFydHMpCisgICAgICAgICAgICAgICAgbmV3aGVhZGVycy5hcHBlbmQoc2VsZi5wb2xpY3kuaGVhZGVyX3N0b3JlX3BhcnNlKGgsIHZhbCkpCiAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbmV3aGVhZGVycy5hcHBlbmQoKGgsIHYpKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvdGV4dC5weSBiL0xpYi9lbWFpbC9taW1lL3RleHQucHkKaW5kZXggNTc0N2RiNS4uM2I1YjA5ZiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvdGV4dC5weQorKysgYi9MaWIvZW1haWwvbWltZS90ZXh0LnB5CkBAIC0xNCw3ICsxNCw3IEBACiBjbGFzcyBNSU1FVGV4dChNSU1FTm9uTXVsdGlwYXJ0KToKICAgICAiIiJDbGFzcyBmb3IgZ2VuZXJhdGluZyB0ZXh0LyogdHlwZSBNSU1FIGRvY3VtZW50cy4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfdGV4dCwgX3N1YnR5cGU9J3BsYWluJywgX2NoYXJzZXQ9J3VzLWFzY2lpJyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIF90ZXh0LCBfc3VidHlwZT0ncGxhaW4nLCBfY2hhcnNldD1Ob25lKToKICAgICAgICAgIiIiQ3JlYXRlIGEgdGV4dC8qIHR5cGUgTUlNRSBkb2N1bWVudC4KIAogICAgICAgICBfdGV4dCBpcyB0aGUgc3RyaW5nIGZvciB0aGlzIG1lc3NhZ2Ugb2JqZWN0LgpAQCAtMjUsNiArMjUsMTggQEAKICAgICAgICAgaGVhZGVyLiAgVGhpcyBkZWZhdWx0cyB0byAidXMtYXNjaWkiLiAgTm90ZSB0aGF0IGFzIGEgc2lkZS1lZmZlY3QsIHRoZQogICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIGhlYWRlciB3aWxsIGFsc28gYmUgc2V0LgogICAgICAgICAiIiIKKworICAgICAgICAjIElmIG5vIF9jaGFyc2V0IHdhcyBzcGVjaWZpZWQsIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgbm9uLWFzY2lpCisgICAgICAgICMgY2hhcmFjdGVycyBwcmVzZW50LiBJZiBub3QsIHVzZSAndXMtYXNjaWknLCBvdGhlcndpc2UgdXNlIHV0Zi04LgorICAgICAgICAjIFhYWDogVGhpcyBjYW4gYmUgcmVtb3ZlZCBvbmNlICM3MzA0IGlzIGZpeGVkLgorICAgICAgICBpZiBfY2hhcnNldCBpcyBOb25lOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIF90ZXh0LmVuY29kZSgndXMtYXNjaWknKQorICAgICAgICAgICAgICAgIF9jaGFyc2V0ID0gJ3VzLWFzY2lpJworICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICBfY2hhcnNldCA9ICd1dGYtOCcKKwogICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICd0ZXh0JywgX3N1YnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKip7J2NoYXJzZXQnOiBfY2hhcnNldH0pCisKICAgICAgICAgc2VsZi5zZXRfcGF5bG9hZChfdGV4dCwgX2NoYXJzZXQpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvcGFyc2VyLnB5IGIvTGliL2VtYWlsL3BhcnNlci5weQppbmRleCAxYzkzMWVhLi4xYWFiMDEyIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvcGFyc2VyLnB5CisrKyBiL0xpYi9lbWFpbC9wYXJzZXIucHkKQEAgLTQsMTggKzQsMTkgQEAKIAogIiIiQSBwYXJzZXIgb2YgUkZDIDI4MjIgYW5kIE1JTUUgZW1haWwgbWVzc2FnZXMuIiIiCiAKLV9fYWxsX18gPSBbJ1BhcnNlcicsICdIZWFkZXJQYXJzZXInLCAnQnl0ZXNQYXJzZXInXQorX19hbGxfXyA9IFsnUGFyc2VyJywgJ0hlYWRlclBhcnNlcicsICdCeXRlc1BhcnNlcicsICdCeXRlc0hlYWRlclBhcnNlciddCiAKIGltcG9ydCB3YXJuaW5ncwogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8sIFRleHRJT1dyYXBwZXIKIAogZnJvbSBlbWFpbC5mZWVkcGFyc2VyIGltcG9ydCBGZWVkUGFyc2VyCiBmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UKK2Zyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IGNvbXBhdDMyCiAKIAogDAogY2xhc3MgUGFyc2VyOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd3MpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfY2xhc3M9TWVzc2FnZSwgKiwgcG9saWN5PWNvbXBhdDMyKToKICAgICAgICAgIiIiUGFyc2VyIG9mIFJGQyAyODIyIGFuZCBNSU1FIGVtYWlsIG1lc3NhZ2VzLgogCiAgICAgICAgIENyZWF0ZXMgYW4gaW4tbWVtb3J5IG9iamVjdCB0cmVlIHJlcHJlc2VudGluZyB0aGUgZW1haWwgbWVzc2FnZSwgd2hpY2gKQEAgLTMwLDI4ICszMSwxNCBAQAogICAgICAgICBfY2xhc3MgaXMgdGhlIGNsYXNzIHRvIGluc3RhbnRpYXRlIGZvciBuZXcgbWVzc2FnZSBvYmplY3RzIHdoZW4gdGhleQogICAgICAgICBtdXN0IGJlIGNyZWF0ZWQuICBUaGlzIGNsYXNzIG11c3QgaGF2ZSBhIGNvbnN0cnVjdG9yIHRoYXQgY2FuIHRha2UKICAgICAgICAgemVybyBhcmd1bWVudHMuICBEZWZhdWx0IGlzIE1lc3NhZ2UuTWVzc2FnZS4KKworICAgICAgICBUaGUgcG9saWN5IGtleXdvcmQgc3BlY2lmaWVzIGEgcG9saWN5IG9iamVjdCB0aGF0IGNvbnRyb2xzIGEgbnVtYmVyIG9mCisgICAgICAgIGFzcGVjdHMgb2YgdGhlIHBhcnNlcidzIG9wZXJhdGlvbi4gIFRoZSBkZWZhdWx0IHBvbGljeSBtYWludGFpbnMKKyAgICAgICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKwogICAgICAgICAiIiIKLSAgICAgICAgaWYgbGVuKGFyZ3MpID49IDE6Ci0gICAgICAgICAgICBpZiAnX2NsYXNzJyBpbiBrd3M6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJNdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJnICdfY2xhc3MnIikKLSAgICAgICAgICAgIGt3c1snX2NsYXNzJ10gPSBhcmdzWzBdCi0gICAgICAgIGlmIGxlbihhcmdzKSA9PSAyOgotICAgICAgICAgICAgaWYgJ3N0cmljdCcgaW4ga3dzOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiTXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZyAnc3RyaWN0JyIpCi0gICAgICAgICAgICBrd3NbJ3N0cmljdCddID0gYXJnc1sxXQotICAgICAgICBpZiBsZW4oYXJncykgPiAyOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdUb28gbWFueSBhcmd1bWVudHMnKQotICAgICAgICBpZiAnX2NsYXNzJyBpbiBrd3M6Ci0gICAgICAgICAgICBzZWxmLl9jbGFzcyA9IGt3c1snX2NsYXNzJ10KLSAgICAgICAgICAgIGRlbCBrd3NbJ19jbGFzcyddCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9jbGFzcyA9IE1lc3NhZ2UKLSAgICAgICAgaWYgJ3N0cmljdCcgaW4ga3dzOgotICAgICAgICAgICAgd2FybmluZ3Mud2FybigiJ3N0cmljdCcgYXJndW1lbnQgaXMgZGVwcmVjYXRlZCAoYW5kIGlnbm9yZWQpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgICAgICAgICAgZGVsIGt3c1snc3RyaWN0J10KLSAgICAgICAgaWYga3dzOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdVbmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnRzJykKKyAgICAgICAgc2VsZi5fY2xhc3MgPSBfY2xhc3MKKyAgICAgICAgc2VsZi5wb2xpY3kgPSBwb2xpY3kKIAogICAgIGRlZiBwYXJzZShzZWxmLCBmcCwgaGVhZGVyc29ubHk9RmFsc2UpOgogICAgICAgICAiIiJDcmVhdGUgYSBtZXNzYWdlIHN0cnVjdHVyZSBmcm9tIHRoZSBkYXRhIGluIGEgZmlsZS4KQEAgLTYxLDcgKzQ4LDcgQEAKICAgICAgICAgcGFyc2luZyBhZnRlciByZWFkaW5nIHRoZSBoZWFkZXJzIG9yIG5vdC4gIFRoZSBkZWZhdWx0IGlzIEZhbHNlLAogICAgICAgICBtZWFuaW5nIGl0IHBhcnNlcyB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBmaWxlLgogICAgICAgICAiIiIKLSAgICAgICAgZmVlZHBhcnNlciA9IEZlZWRQYXJzZXIoc2VsZi5fY2xhc3MpCisgICAgICAgIGZlZWRwYXJzZXIgPSBGZWVkUGFyc2VyKHNlbGYuX2NsYXNzLCBwb2xpY3k9c2VsZi5wb2xpY3kpCiAgICAgICAgIGlmIGhlYWRlcnNvbmx5OgogICAgICAgICAgICAgZmVlZHBhcnNlci5fc2V0X2hlYWRlcnNvbmx5KCkKICAgICAgICAgd2hpbGUgVHJ1ZToKQEAgLTEzNCwzICsxMjEsMTEgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHRleHQgPSB0ZXh0LmRlY29kZSgnQVNDSUknLCBlcnJvcnM9J3N1cnJvZ2F0ZWVzY2FwZScpCiAgICAgICAgIHJldHVybiBzZWxmLnBhcnNlci5wYXJzZXN0cih0ZXh0LCBoZWFkZXJzb25seSkKKworCitjbGFzcyBCeXRlc0hlYWRlclBhcnNlcihCeXRlc1BhcnNlcik6CisgICAgZGVmIHBhcnNlKHNlbGYsIGZwLCBoZWFkZXJzb25seT1UcnVlKToKKyAgICAgICAgcmV0dXJuIEJ5dGVzUGFyc2VyLnBhcnNlKHNlbGYsIGZwLCBoZWFkZXJzb25seT1UcnVlKQorCisgICAgZGVmIHBhcnNlYnl0ZXMoc2VsZiwgdGV4dCwgaGVhZGVyc29ubHk9VHJ1ZSk6CisgICAgICAgIHJldHVybiBCeXRlc1BhcnNlci5wYXJzZWJ5dGVzKHNlbGYsIHRleHQsIGhlYWRlcnNvbmx5PVRydWUpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvcG9saWN5LnB5IGIvTGliL2VtYWlsL3BvbGljeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGU4OGFmCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2VtYWlsL3BvbGljeS5weQpAQCAtMCwwICsxLDE4OCBAQAorIiIiVGhpcyB3aWxsIGJlIHRoZSBob21lIGZvciB0aGUgcG9saWN5IHRoYXQgaG9va3MgaW4gdGhlIG5ldworY29kZSB0aGF0IGFkZHMgYWxsIHRoZSBlbWFpbDYgZmVhdHVyZXMuCisiIiIKKworZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgUG9saWN5LCBDb21wYXQzMiwgY29tcGF0MzIsIF9leHRlbmRfZG9jc3RyaW5ncworZnJvbSBlbWFpbC51dGlscyBpbXBvcnQgX2hhc19zdXJyb2dhdGVzCitmcm9tIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5IGltcG9ydCBIZWFkZXJSZWdpc3RyeSBhcyBIZWFkZXJSZWdpc3RyeQorCitfX2FsbF9fID0gWworICAgICdDb21wYXQzMicsCisgICAgJ2NvbXBhdDMyJywKKyAgICAnUG9saWN5JywKKyAgICAnRW1haWxQb2xpY3knLAorICAgICdkZWZhdWx0JywKKyAgICAnc3RyaWN0JywKKyAgICAnU01UUCcsCisgICAgJ0hUVFAnLAorICAgIF0KKworQF9leHRlbmRfZG9jc3RyaW5ncworY2xhc3MgRW1haWxQb2xpY3koUG9saWN5KToKKworICAgICIiIisKKyAgICBQUk9WSVNJT05BTAorCisgICAgVGhlIEFQSSBleHRlbnNpb25zIGVuYWJsZWQgYnkgdGhpcyBwb2xpY3kgYXJlIGN1cnJlbnRseSBwcm92aXNpb25hbC4KKyAgICBSZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KKworICAgIFRoaXMgcG9saWN5IGFkZHMgbmV3IGhlYWRlciBwYXJzaW5nIGFuZCBmb2xkaW5nIGFsZ29yaXRobXMuICBJbnN0ZWFkIG9mCisgICAgc2ltcGxlIHN0cmluZ3MsIGhlYWRlcnMgYXJlIGN1c3RvbSBvYmplY3RzIHdpdGggY3VzdG9tIGF0dHJpYnV0ZXMKKyAgICBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdGhlIGZpZWxkLiAgVGhlIGZvbGRpbmcgYWxnb3JpdGhtIGZ1bGx5CisgICAgaW1wbGVtZW50cyBSRkNzIDIwNDcgYW5kIDUzMjIuCisKKyAgICBJbiBhZGRpdGlvbiB0byB0aGUgc2V0dGFibGUgYXR0cmlidXRlcyBsaXN0ZWQgYWJvdmUgdGhhdCBhcHBseSB0bworICAgIGFsbCBQb2xpY2llcywgdGhpcyBwb2xpY3kgYWRkcyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgYXR0cmlidXRlczoKKworICAgIHJlZm9sZF9zb3VyY2UgICAgICAgLS0gaWYgdGhlIHZhbHVlIGZvciBhIGhlYWRlciBpbiB0aGUgTWVzc2FnZSBvYmplY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbWUgZnJvbSB0aGUgcGFyc2luZyBvZiBzb21lIHNvdXJjZSwgdGhpcyBhdHRyaWJ1dGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBhIGdlbmVyYXRvciBzaG91bGQgcmVmb2xkCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHZhbHVlIHdoZW4gdHJhbnNmb3JtaW5nIHRoZSBtZXNzYWdlIGJhY2sgaW50bworICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtIGZvcm0uICBUaGUgcG9zc2libGUgdmFsdWVzIGFyZToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uZSAgLS0gYWxsIHNvdXJjZSB2YWx1ZXMgdXNlIG9yaWdpbmFsIGZvbGRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgIC0tIHNvdXJjZSB2YWx1ZXMgdGhhdCBoYXZlIGFueSBsaW5lIHRoYXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdlciB0aGFuIG1heF9saW5lX2xlbmd0aCB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZvbGRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsICAtLSBhbGwgdmFsdWVzIGFyZSByZWZvbGRlZC4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgJ2xvbmcnLgorCisgICAgaGVhZGVyX2ZhY3RvcnkgICAgICAtLSBhIGNhbGxhYmxlIHRoYXQgdGFrZXMgdHdvIGFyZ3VtZW50cywgJ25hbWUnIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJywgd2hlcmUgJ25hbWUnIGlzIGEgaGVhZGVyIGZpZWxkIG5hbWUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWUnIGlzIGFuIHVuZm9sZGVkIGhlYWRlciBmaWVsZCB2YWx1ZSwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5zIGEgc3RyaW5nLWxpa2Ugb2JqZWN0IHRoYXQgcmVwcmVzZW50cyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIuICBBIGRlZmF1bHQgaGVhZGVyX2ZhY3RvcnkgaXMgcHJvdmlkZWQgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXJzdGFuZHMgc29tZSBvZiB0aGUgUkZDNTMyMiBoZWFkZXIgZmllbGQgdHlwZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ3VycmVudGx5IGFkZHJlc3MgZmllbGRzIGFuZCBkYXRlIGZpZWxkcyBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWFsIHRyZWF0bWVudCwgd2hpbGUgYWxsIG90aGVyIGZpZWxkcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWF0ZWQgYXMgdW5zdHJ1Y3R1cmVkLiAgVGhpcyBsaXN0IHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZCBiZWZvcmUgdGhlIGV4dGVuc2lvbiBpcyBtYXJrZWQgc3RhYmxlLikKKyAgICAiIiIKKworICAgIHJlZm9sZF9zb3VyY2UgPSAnbG9uZycKKyAgICBoZWFkZXJfZmFjdG9yeSA9IEhlYWRlclJlZ2lzdHJ5KCkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3KToKKyAgICAgICAgIyBFbnN1cmUgdGhhdCBlYWNoIG5ldyBpbnN0YW5jZSBnZXRzIGEgdW5pcXVlIGhlYWRlciBmYWN0b3J5CisgICAgICAgICMgKGFzIG9wcG9zZWQgdG8gY2xvbmVzLCB3aGljaCBzaGFyZSB0aGUgZmFjdG9yeSkuCisgICAgICAgIGlmICdoZWFkZXJfZmFjdG9yeScgbm90IGluIGt3OgorICAgICAgICAgICAgb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsICdoZWFkZXJfZmFjdG9yeScsIEhlYWRlclJlZ2lzdHJ5KCkpCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprdykKKworICAgIGRlZiBoZWFkZXJfbWF4X2NvdW50KHNlbGYsIG5hbWUpOgorICAgICAgICAiIiIrCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcyBjbGFzcyByZXR1cm5zIHRoZSBtYXhfY291bnQgYXR0cmlidXRlIGZyb20KKyAgICAgICAgdGhlIHNwZWNpYWxpemVkIGhlYWRlciBjbGFzcyB0aGF0IHdvdWxkIGJlIHVzZWQgdG8gY29uc3RydWN0IGEgaGVhZGVyCisgICAgICAgIG9mIHR5cGUgJ25hbWUnLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuaGVhZGVyX2ZhY3RvcnlbbmFtZV0ubWF4X2NvdW50CisKKyAgICAjIFRoZSBsb2dpYyBvZiB0aGUgbmV4dCB0aHJlZSBtZXRob2RzIGlzIGNob3NlbiBzdWNoIHRoYXQgaXQgaXMgcG9zc2libGUgdG8KKyAgICAjIHN3aXRjaCBhIE1lc3NhZ2Ugb2JqZWN0IGJldHdlZW4gYSBDb21wYXQzMiBwb2xpY3kgYW5kIGEgcG9saWN5IGRlcml2ZWQKKyAgICAjIGZyb20gdGhpcyBjbGFzcyBhbmQgaGF2ZSB0aGUgcmVzdWx0cyBzdGF5IGNvbnNpc3RlbnQuICBUaGlzIGFsbG93cyBhCisgICAgIyBNZXNzYWdlIG9iamVjdCBjb25zdHJ1Y3RlZCB3aXRoIHRoaXMgcG9saWN5IHRvIGJlIHBhc3NlZCB0byBhIGxpYnJhcnkKKyAgICAjIHRoYXQgb25seSBoYW5kbGVzIENvbXBhdDMyIG9iamVjdHMsIG9yIHRvIHJlY2VpdmUgc3VjaCBhbiBvYmplY3QgYW5kCisgICAgIyBjb252ZXJ0IGl0IHRvIHVzZSB0aGUgbmV3ZXIgc3R5bGUgYnkganVzdCBjaGFuZ2luZyBpdHMgcG9saWN5LiAgSXQgaXMKKyAgICAjIGFsc28gY2hvc2VuIGJlY2F1c2UgaXQgcG9zdHBvbmVzIHRoZSByZWxhdGl2ZWx5IGV4cGVuc2l2ZSBmdWxsIHJmYzUzMjIKKyAgICAjIHBhcnNlIHVudGlsIGFzIGxhdGUgYXMgcG9zc2libGUgd2hlbiBwYXJzaW5nIGZyb20gc291cmNlLCBzaW5jZSBpbiBtYW55CisgICAgIyBhcHBsaWNhdGlvbnMgb25seSBhIGZldyBoZWFkZXJzIHdpbGwgYWN0dWFsbHkgYmUgaW5zcGVjdGVkLgorCisgICAgZGVmIGhlYWRlcl9zb3VyY2VfcGFyc2Uoc2VsZiwgc291cmNlbGluZXMpOgorICAgICAgICAiIiIrCisgICAgICAgIFRoZSBuYW1lIGlzIHBhcnNlZCBhcyBldmVyeXRoaW5nIHVwIHRvIHRoZSAnOicgYW5kIHJldHVybmVkIHVubW9kaWZpZWQuCisgICAgICAgIFRoZSB2YWx1ZSBpcyBkZXRlcm1pbmVkIGJ5IHN0cmlwcGluZyBsZWFkaW5nIHdoaXRlc3BhY2Ugb2ZmIHRoZQorICAgICAgICByZW1haW5kZXIgb2YgdGhlIGZpcnN0IGxpbmUsIGpvaW5pbmcgYWxsIHN1YnNlcXVlbnQgbGluZXMgdG9nZXRoZXIsIGFuZAorICAgICAgICBzdHJpcHBpbmcgYW55IHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiBvciBsaW5lZmVlZCBjaGFyYWN0ZXJzLiAgKFRoaXMKKyAgICAgICAgaXMgdGhlIHNhbWUgYXMgQ29tcGF0MzIpLgorCisgICAgICAgICIiIgorICAgICAgICBuYW1lLCB2YWx1ZSA9IHNvdXJjZWxpbmVzWzBdLnNwbGl0KCc6JywgMSkKKyAgICAgICAgdmFsdWUgPSB2YWx1ZS5sc3RyaXAoJyBcdCcpICsgJycuam9pbihzb3VyY2VsaW5lc1sxOl0pCisgICAgICAgIHJldHVybiAobmFtZSwgdmFsdWUucnN0cmlwKCdcclxuJykpCisKKyAgICBkZWYgaGVhZGVyX3N0b3JlX3BhcnNlKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiKworICAgICAgICBUaGUgbmFtZSBpcyByZXR1cm5lZCB1bmNoYW5nZWQuICBJZiB0aGUgaW5wdXQgdmFsdWUgaGFzIGEgJ25hbWUnCisgICAgICAgIGF0dHJpYnV0ZSBhbmQgaXQgbWF0Y2hlcyB0aGUgbmFtZSBpZ25vcmluZyBjYXNlLCB0aGUgdmFsdWUgaXMgcmV0dXJuZWQKKyAgICAgICAgdW5jaGFuZ2VkLiAgT3RoZXJ3aXNlIHRoZSBuYW1lIGFuZCB2YWx1ZSBhcmUgcGFzc2VkIHRvIGhlYWRlcl9mYWN0b3J5CisgICAgICAgIG1ldGhvZCwgYW5kIHRoZSByZXN1bHRpbmcgY3VzdG9tIGhlYWRlciBvYmplY3QgaXMgcmV0dXJuZWQgYXMgdGhlCisgICAgICAgIHZhbHVlLiAgSW4gdGhpcyBjYXNlIGEgVmFsdWVFcnJvciBpcyByYWlzZWQgaWYgdGhlIGlucHV0IHZhbHVlIGNvbnRhaW5zCisgICAgICAgIENSIG9yIExGIGNoYXJhY3RlcnMuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGhhc2F0dHIodmFsdWUsICduYW1lJykgYW5kIHZhbHVlLm5hbWUubG93ZXIoKSA9PSBuYW1lLmxvd2VyKCk6CisgICAgICAgICAgICByZXR1cm4gKG5hbWUsIHZhbHVlKQorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpIGFuZCBsZW4odmFsdWUuc3BsaXRsaW5lcygpKT4xOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSGVhZGVyIHZhbHVlcyBtYXkgbm90IGNvbnRhaW4gbGluZWZlZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3IgY2FycmlhZ2UgcmV0dXJuIGNoYXJhY3RlcnMiKQorICAgICAgICByZXR1cm4gKG5hbWUsIHNlbGYuaGVhZGVyX2ZhY3RvcnkobmFtZSwgdmFsdWUpKQorCisgICAgZGVmIGhlYWRlcl9mZXRjaF9wYXJzZShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIisKKyAgICAgICAgSWYgdGhlIHZhbHVlIGhhcyBhICduYW1lJyBhdHRyaWJ1dGUsIGl0IGlzIHJldHVybmVkIHRvIHVubW9kaWZpZWQuCisgICAgICAgIE90aGVyd2lzZSB0aGUgbmFtZSBhbmQgdGhlIHZhbHVlIHdpdGggYW55IGxpbmVzZXAgY2hhcmFjdGVycyByZW1vdmVkCisgICAgICAgIGFyZSBwYXNzZWQgdG8gdGhlIGhlYWRlcl9mYWN0b3J5IG1ldGhvZCwgYW5kIHRoZSByZXN1bHRpbmcgY3VzdG9tCisgICAgICAgIGhlYWRlciBvYmplY3QgaXMgcmV0dXJuZWQuICBBbnkgc3Vycm9nYXRlZXNjYXBlZCBieXRlcyBnZXQgdHVybmVkCisgICAgICAgIGludG8gdGhlIHVuaWNvZGUgdW5rbm93bi1jaGFyYWN0ZXIgZ2x5cGguCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGhhc2F0dHIodmFsdWUsICduYW1lJyk6CisgICAgICAgICAgICByZXR1cm4gdmFsdWUKKyAgICAgICAgcmV0dXJuIHNlbGYuaGVhZGVyX2ZhY3RvcnkobmFtZSwgJycuam9pbih2YWx1ZS5zcGxpdGxpbmVzKCkpKQorCisgICAgZGVmIGZvbGQoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiIrCisgICAgICAgIEhlYWRlciBmb2xkaW5nIGlzIGNvbnRyb2xsZWQgYnkgdGhlIHJlZm9sZF9zb3VyY2UgcG9saWN5IHNldHRpbmcuICBBCisgICAgICAgIHZhbHVlIGlzIGNvbnNpZGVyZWQgdG8gYmUgYSAnc291cmNlIHZhbHVlJyBpZiBhbmQgb25seSBpZiBpdCBkb2VzIG5vdAorICAgICAgICBoYXZlIGEgJ25hbWUnIGF0dHJpYnV0ZSAoaGF2aW5nIGEgJ25hbWUnIGF0dHJpYnV0ZSBtZWFucyBpdCBpcyBhIGhlYWRlcgorICAgICAgICBvYmplY3Qgb2Ygc29tZSBzb3J0KS4gIElmIGEgc291cmNlIHZhbHVlIG5lZWRzIHRvIGJlIHJlZm9sZGVkIGFjY29yZGluZworICAgICAgICB0byB0aGUgcG9saWN5LCBpdCBpcyBjb252ZXJ0ZWQgaW50byBhIGN1c3RvbSBoZWFkZXIgb2JqZWN0IGJ5IHBhc3NpbmcKKyAgICAgICAgdGhlIG5hbWUgYW5kIHRoZSB2YWx1ZSB3aXRoIGFueSBsaW5lc2VwIGNoYXJhY3RlcnMgcmVtb3ZlZCB0byB0aGUKKyAgICAgICAgaGVhZGVyX2ZhY3RvcnkgbWV0aG9kLiAgRm9sZGluZyBvZiBhIGN1c3RvbSBoZWFkZXIgb2JqZWN0IGlzIGRvbmUgYnkKKyAgICAgICAgY2FsbGluZyBpdHMgZm9sZCBtZXRob2Qgd2l0aCB0aGUgY3VycmVudCBwb2xpY3kuCisKKyAgICAgICAgU291cmNlIHZhbHVlcyBhcmUgc3BsaXQgaW50byBsaW5lcyB1c2luZyBzcGxpdGxpbmVzLiAgSWYgdGhlIHZhbHVlIGlzCisgICAgICAgIG5vdCB0byBiZSByZWZvbGRlZCwgdGhlIGxpbmVzIGFyZSByZWpvaW5lZCB1c2luZyB0aGUgbGluZXNlcCBmcm9tIHRoZQorICAgICAgICBwb2xpY3kgYW5kIHJldHVybmVkLiAgVGhlIGV4Y2VwdGlvbiBpcyBsaW5lcyBjb250YWluaW5nIG5vbi1hc2NpaQorICAgICAgICBiaW5hcnkgZGF0YS4gIEluIHRoYXQgY2FzZSB0aGUgdmFsdWUgaXMgcmVmb2xkZWQgcmVnYXJkbGVzcyBvZiB0aGUKKyAgICAgICAgcmVmb2xkX3NvdXJjZSBzZXR0aW5nLCB3aGljaCBjYXVzZXMgdGhlIGJpbmFyeSBkYXRhIHRvIGJlIENURSBlbmNvZGVkCisgICAgICAgIHVzaW5nIHRoZSB1bmtub3duLThiaXQgY2hhcnNldC4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZvbGQobmFtZSwgdmFsdWUsIHJlZm9sZF9iaW5hcnk9VHJ1ZSkKKworICAgIGRlZiBmb2xkX2JpbmFyeShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIisKKyAgICAgICAgVGhlIHNhbWUgYXMgZm9sZCBpZiBjdGVfdHlwZSBpcyA3Yml0LCBleGNlcHQgdGhhdCB0aGUgcmV0dXJuZWQgdmFsdWUgaXMKKyAgICAgICAgYnl0ZXMuCisKKyAgICAgICAgSWYgY3RlX3R5cGUgaXMgOGJpdCwgbm9uLUFTQ0lJIGJpbmFyeSBkYXRhIGlzIGNvbnZlcnRlZCBiYWNrIGludG8KKyAgICAgICAgYnl0ZXMuICBIZWFkZXJzIHdpdGggYmluYXJ5IGRhdGEgYXJlIG5vdCByZWZvbGRlZCwgcmVnYXJkbGVzcyBvZiB0aGUKKyAgICAgICAgcmVmb2xkX2hlYWRlciBzZXR0aW5nLCBzaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8ga25vdyB3aGV0aGVyIHRoZSBiaW5hcnkKKyAgICAgICAgZGF0YSBjb25zaXN0cyBvZiBzaW5nbGUgYnl0ZSBjaGFyYWN0ZXJzIG9yIG11bHRpYnl0ZSBjaGFyYWN0ZXJzLgorCisgICAgICAgICIiIgorICAgICAgICBmb2xkZWQgPSBzZWxmLl9mb2xkKG5hbWUsIHZhbHVlLCByZWZvbGRfYmluYXJ5PXNlbGYuY3RlX3R5cGU9PSc3Yml0JykKKyAgICAgICAgcmV0dXJuIGZvbGRlZC5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisKKyAgICBkZWYgX2ZvbGQoc2VsZiwgbmFtZSwgdmFsdWUsIHJlZm9sZF9iaW5hcnk9RmFsc2UpOgorICAgICAgICBpZiBoYXNhdHRyKHZhbHVlLCAnbmFtZScpOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmZvbGQocG9saWN5PXNlbGYpCisgICAgICAgIG1heGxlbiA9IHNlbGYubWF4X2xpbmVfbGVuZ3RoIGlmIHNlbGYubWF4X2xpbmVfbGVuZ3RoIGVsc2UgZmxvYXQoJ2luZicpCisgICAgICAgIGxpbmVzID0gdmFsdWUuc3BsaXRsaW5lcygpCisgICAgICAgIHJlZm9sZCA9IChzZWxmLnJlZm9sZF9zb3VyY2UgPT0gJ2FsbCcgb3IKKyAgICAgICAgICAgICAgICAgIHNlbGYucmVmb2xkX3NvdXJjZSA9PSAnbG9uZycgYW5kCisgICAgICAgICAgICAgICAgICAgIChsaW5lcyBhbmQgbGVuKGxpbmVzWzBdKStsZW4obmFtZSkrMiA+IG1heGxlbiBvcgorICAgICAgICAgICAgICAgICAgICAgYW55KGxlbih4KSA+IG1heGxlbiBmb3IgeCBpbiBsaW5lc1sxOl0pKSkKKyAgICAgICAgaWYgcmVmb2xkIG9yIHJlZm9sZF9iaW5hcnkgYW5kIF9oYXNfc3Vycm9nYXRlcyh2YWx1ZSk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5oZWFkZXJfZmFjdG9yeShuYW1lLCAnJy5qb2luKGxpbmVzKSkuZm9sZChwb2xpY3k9c2VsZikKKyAgICAgICAgcmV0dXJuIG5hbWUgKyAnOiAnICsgc2VsZi5saW5lc2VwLmpvaW4obGluZXMpICsgc2VsZi5saW5lc2VwCisKKworZGVmYXVsdCA9IEVtYWlsUG9saWN5KCkKKyMgTWFrZSB0aGUgZGVmYXVsdCBwb2xpY3kgdXNlIHRoZSBjbGFzcyBkZWZhdWx0IGhlYWRlcl9mYWN0b3J5CitkZWwgZGVmYXVsdC5oZWFkZXJfZmFjdG9yeQorc3RyaWN0ID0gZGVmYXVsdC5jbG9uZShyYWlzZV9vbl9kZWZlY3Q9VHJ1ZSkKK1NNVFAgPSBkZWZhdWx0LmNsb25lKGxpbmVzZXA9J1xyXG4nKQorSFRUUCA9IGRlZmF1bHQuY2xvbmUobGluZXNlcD0nXHJcbicsIG1heF9saW5lX2xlbmd0aD1Ob25lKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3V0aWxzLnB5IGIvTGliL2VtYWlsL3V0aWxzLnB5CmluZGV4IGFjNGRhMzcuLjkzYTYyNWMgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC91dGlscy5weQorKysgYi9MaWIvZW1haWwvdXRpbHMucHkKQEAgLTExLDEyICsxMSwxNCBAQAogICAgICdlbmNvZGVfcmZjMjIzMScsCiAgICAgJ2Zvcm1hdGFkZHInLAogICAgICdmb3JtYXRkYXRlJywKKyAgICAnZm9ybWF0X2RhdGV0aW1lJywKICAgICAnZ2V0YWRkcmVzc2VzJywKICAgICAnbWFrZV9tc2dpZCcsCiAgICAgJ21rdGltZV90eicsCiAgICAgJ3BhcnNlYWRkcicsCiAgICAgJ3BhcnNlZGF0ZScsCiAgICAgJ3BhcnNlZGF0ZV90eicsCisgICAgJ3BhcnNlZGF0ZV90b19kYXRldGltZScsCiAgICAgJ3VucXVvdGUnLAogICAgIF0KIApAQCAtMjYsNiArMjgsNyBAQAogaW1wb3J0IGJhc2U2NAogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHNvY2tldAoraW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgdXJsbGliLnBhcnNlCiBpbXBvcnQgd2FybmluZ3MKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCkBAIC0zNCwxNCArMzcsMTMgQEAKIGZyb20gZW1haWwuX3BhcnNlYWRkciBpbXBvcnQgQWRkcmVzc0xpc3QgYXMgX0FkZHJlc3NMaXN0CiBmcm9tIGVtYWlsLl9wYXJzZWFkZHIgaW1wb3J0IG1rdGltZV90egogCi0jIFdlIG5lZWQgd29ybWFyb3VuZHMgZm9yIGJ1Z3MgaW4gdGhlc2UgbWV0aG9kcyBpbiBvbGRlciBQeXRob25zIChzZWUgYmVsb3cpCi1mcm9tIGVtYWlsLl9wYXJzZWFkZHIgaW1wb3J0IHBhcnNlZGF0ZSBhcyBfcGFyc2VkYXRlCi1mcm9tIGVtYWlsLl9wYXJzZWFkZHIgaW1wb3J0IHBhcnNlZGF0ZV90eiBhcyBfcGFyc2VkYXRlX3R6Citmcm9tIGVtYWlsLl9wYXJzZWFkZHIgaW1wb3J0IHBhcnNlZGF0ZSwgcGFyc2VkYXRlX3R6LCBfcGFyc2VkYXRlX3R6CiAKIGZyb20gcXVvcHJpIGltcG9ydCBkZWNvZGVzdHJpbmcgYXMgX3FkZWNvZGUKIAogIyBJbnRyYXBhY2thZ2UgaW1wb3J0cwogZnJvbSBlbWFpbC5lbmNvZGVycyBpbXBvcnQgX2JlbmNvZGUsIF9xZW5jb2RlCitmcm9tIGVtYWlsLmNoYXJzZXQgaW1wb3J0IENoYXJzZXQKIAogQ09NTUFTUEFDRSA9ICcsICcKIEVNUFRZU1RSSU5HID0gJycKQEAgLTUwLDI3ICs1Miw1MyBAQAogVElDSyA9ICInIgogCiBzcGVjaWFsc3JlID0gcmUuY29tcGlsZShyJ1tdW1xcKCk8PkAsOjsiLl0nKQotZXNjYXBlc3JlID0gcmUuY29tcGlsZShyJ1tdW1xcKCkiXScpCitlc2NhcGVzcmUgPSByZS5jb21waWxlKHInW1xcIl0nKQogCisjIEhvdyB0byBmaWd1cmUgb3V0IGlmIHdlIGFyZSBwcm9jZXNzaW5nIHN0cmluZ3MgdGhhdCBjb21lIGZyb20gYSBieXRlCisjIHNvdXJjZSB3aXRoIHVuZGVjb2RhYmxlIGNoYXJhY3RlcnMuCitfaGFzX3N1cnJvZ2F0ZXMgPSByZS5jb21waWxlKAorICAgICcoW15cdWQ4MDAtXHVkYmZmXXxcQSlbXHVkYzAwLVx1ZGZmZl0oW15cdWRjMDAtXHVkZmZmXXxcWiknKS5zZWFyY2gKKworIyBIb3cgdG8gZGVhbCB3aXRoIGEgc3RyaW5nIGNvbnRhaW5pbmcgYnl0ZXMgYmVmb3JlIGhhbmRpbmcgaXQgdG8gdGhlCisjIGFwcGxpY2F0aW9uIHRocm91Z2ggdGhlICdub3JtYWwnIGludGVyZmFjZS4KK2RlZiBfc2FuaXRpemUoc3RyaW5nKToKKyAgICAjIFR1cm4gYW55IGVzY2FwZWQgYnl0ZXMgaW50byB1bmljb2RlICd1bmtub3duJyBjaGFyLgorICAgIG9yaWdpbmFsX2J5dGVzID0gc3RyaW5nLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKyAgICByZXR1cm4gb3JpZ2luYWxfYnl0ZXMuZGVjb2RlKCdhc2NpaScsICdyZXBsYWNlJykKIAogCiAjIEhlbHBlcnMKIAotZGVmIGZvcm1hdGFkZHIocGFpcik6CitkZWYgZm9ybWF0YWRkcihwYWlyLCBjaGFyc2V0PSd1dGYtOCcpOgogICAgICIiIlRoZSBpbnZlcnNlIG9mIHBhcnNlYWRkcigpLCB0aGlzIHRha2VzIGEgMi10dXBsZSBvZiB0aGUgZm9ybQogICAgIChyZWFsbmFtZSwgZW1haWxfYWRkcmVzcykgYW5kIHJldHVybnMgdGhlIHN0cmluZyB2YWx1ZSBzdWl0YWJsZQogICAgIGZvciBhbiBSRkMgMjgyMiBGcm9tLCBUbyBvciBDYyBoZWFkZXIuCiAKICAgICBJZiB0aGUgZmlyc3QgZWxlbWVudCBvZiBwYWlyIGlzIGZhbHNlLCB0aGVuIHRoZSBzZWNvbmQgZWxlbWVudCBpcwogICAgIHJldHVybmVkIHVubW9kaWZpZWQuCisKKyAgICBPcHRpb25hbCBjaGFyc2V0IGlmIGdpdmVuIGlzIHRoZSBjaGFyYWN0ZXIgc2V0IHRoYXQgaXMgdXNlZCB0byBlbmNvZGUKKyAgICByZWFsbmFtZSBpbiBjYXNlIHJlYWxuYW1lIGlzIG5vdCBBU0NJSSBzYWZlLiAgQ2FuIGJlIGFuIGluc3RhbmNlIG9mIHN0ciBvcgorICAgIGEgQ2hhcnNldC1saWtlIG9iamVjdCB3aGljaCBoYXMgYSBoZWFkZXJfZW5jb2RlIG1ldGhvZC4gIERlZmF1bHQgaXMKKyAgICAndXRmLTgnLgogICAgICIiIgogICAgIG5hbWUsIGFkZHJlc3MgPSBwYWlyCisgICAgIyBUaGUgYWRkcmVzcyBNVVNUIChwZXIgUkZDKSBiZSBhc2NpaSwgc28gcmFpc2UgYW4gVW5pY29kZUVycm9yIGlmIGl0IGlzbid0LgorICAgIGFkZHJlc3MuZW5jb2RlKCdhc2NpaScpCiAgICAgaWYgbmFtZToKLSAgICAgICAgcXVvdGVzID0gJycKLSAgICAgICAgaWYgc3BlY2lhbHNyZS5zZWFyY2gobmFtZSk6Ci0gICAgICAgICAgICBxdW90ZXMgPSAnIicKLSAgICAgICAgbmFtZSA9IGVzY2FwZXNyZS5zdWIocidcXFxnPDA+JywgbmFtZSkKLSAgICAgICAgcmV0dXJuICclcyVzJXMgPCVzPicgJSAocXVvdGVzLCBuYW1lLCBxdW90ZXMsIGFkZHJlc3MpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5hbWUuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNoYXJzZXQsIHN0cik6CisgICAgICAgICAgICAgICAgY2hhcnNldCA9IENoYXJzZXQoY2hhcnNldCkKKyAgICAgICAgICAgIGVuY29kZWRfbmFtZSA9IGNoYXJzZXQuaGVhZGVyX2VuY29kZShuYW1lKQorICAgICAgICAgICAgcmV0dXJuICIlcyA8JXM+IiAlIChlbmNvZGVkX25hbWUsIGFkZHJlc3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBxdW90ZXMgPSAnJworICAgICAgICAgICAgaWYgc3BlY2lhbHNyZS5zZWFyY2gobmFtZSk6CisgICAgICAgICAgICAgICAgcXVvdGVzID0gJyInCisgICAgICAgICAgICBuYW1lID0gZXNjYXBlc3JlLnN1YihyJ1xcXGc8MD4nLCBuYW1lKQorICAgICAgICAgICAgcmV0dXJuICclcyVzJXMgPCVzPicgJSAocXVvdGVzLCBuYW1lLCBxdW90ZXMsIGFkZHJlc3MpCiAgICAgcmV0dXJuIGFkZHJlc3MKIAogCkBAIC05NCw2ICsxMjIsMTQgQEAKICAgJycnLCByZS5WRVJCT1NFIHwgcmUuSUdOT1JFQ0FTRSkKIAogCitkZWYgX2Zvcm1hdF90aW1ldHVwbGVfYW5kX3pvbmUodGltZXR1cGxlLCB6b25lKToKKyAgICByZXR1cm4gJyVzLCAlMDJkICVzICUwNGQgJTAyZDolMDJkOiUwMmQgJXMnICUgKAorICAgICAgICBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddW3RpbWV0dXBsZVs2XV0sCisgICAgICAgIHRpbWV0dXBsZVsyXSwKKyAgICAgICAgWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsCisgICAgICAgICAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXVt0aW1ldHVwbGVbMV0gLSAxXSwKKyAgICAgICAgdGltZXR1cGxlWzBdLCB0aW1ldHVwbGVbM10sIHRpbWV0dXBsZVs0XSwgdGltZXR1cGxlWzVdLAorICAgICAgICB6b25lKQogCiBkZWYgZm9ybWF0ZGF0ZSh0aW1ldmFsPU5vbmUsIGxvY2FsdGltZT1GYWxzZSwgdXNlZ210PUZhbHNlKToKICAgICAiIiJSZXR1cm5zIGEgZGF0ZSBzdHJpbmcgYXMgc3BlY2lmaWVkIGJ5IFJGQyAyODIyLCBlLmcuOgpAQCAtMTM4LDE0ICsxNzQsMjUgQEAKICAgICAgICAgICAgIHpvbmUgPSAnR01UJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgem9uZSA9ICctMDAwMCcKLSAgICByZXR1cm4gJyVzLCAlMDJkICVzICUwNGQgJTAyZDolMDJkOiUwMmQgJXMnICUgKAotICAgICAgICBbJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0JywgJ1N1biddW25vd1s2XV0sCi0gICAgICAgIG5vd1syXSwKLSAgICAgICAgWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsCi0gICAgICAgICAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnXVtub3dbMV0gLSAxXSwKLSAgICAgICAgbm93WzBdLCBub3dbM10sIG5vd1s0XSwgbm93WzVdLAotICAgICAgICB6b25lKQorICAgIHJldHVybiBfZm9ybWF0X3RpbWV0dXBsZV9hbmRfem9uZShub3csIHpvbmUpCiAKK2RlZiBmb3JtYXRfZGF0ZXRpbWUoZHQsIHVzZWdtdD1GYWxzZSk6CisgICAgIiIiVHVybiBhIGRhdGV0aW1lIGludG8gYSBkYXRlIHN0cmluZyBhcyBzcGVjaWZpZWQgaW4gUkZDIDI4MjIuCisKKyAgICBJZiB1c2VnbXQgaXMgVHJ1ZSwgZHQgbXVzdCBiZSBhbiBhd2FyZSBkYXRldGltZSB3aXRoIGFuIG9mZnNldCBvZiB6ZXJvLiAgSW4KKyAgICB0aGlzIGNhc2UgJ0dNVCcgd2lsbCBiZSByZW5kZXJlZCBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgKzAwMDAgcmVxdWlyZWQgYnkKKyAgICBSRkMyODIyLiAgVGhpcyBpcyB0byBzdXBwb3J0IEhUVFAgaGVhZGVycyBpbnZvbHZpbmcgZGF0ZSBzdGFtcHMuCisgICAgIiIiCisgICAgbm93ID0gZHQudGltZXR1cGxlKCkKKyAgICBpZiB1c2VnbXQ6CisgICAgICAgIGlmIGR0LnR6aW5mbyBpcyBOb25lIG9yIGR0LnR6aW5mbyAhPSBkYXRldGltZS50aW1lem9uZS51dGM6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1c2VnbXQgb3B0aW9uIHJlcXVpcmVzIGEgVVRDIGRhdGV0aW1lIikKKyAgICAgICAgem9uZSA9ICdHTVQnCisgICAgZWxpZiBkdC50emluZm8gaXMgTm9uZToKKyAgICAgICAgem9uZSA9ICctMDAwMCcKKyAgICBlbHNlOgorICAgICAgICB6b25lID0gZHQuc3RyZnRpbWUoIiV6IikKKyAgICByZXR1cm4gX2Zvcm1hdF90aW1ldHVwbGVfYW5kX3pvbmUobm93LCB6b25lKQogCiAKIGRlZiBtYWtlX21zZ2lkKGlkc3RyaW5nPU5vbmUsIGRvbWFpbj1Ob25lKToKQEAgLTE3MiwyMCArMjE5LDEyIEBACiAgICAgcmV0dXJuIG1zZ2lkCiAKIAotCi0jIFRoZXNlIGZ1bmN0aW9ucyBhcmUgaW4gdGhlIHN0YW5kYWxvbmUgbWltZWxpYiB2ZXJzaW9uIG9ubHkgYmVjYXVzZSB0aGV5J3ZlCi0jIHN1YnNlcXVlbnRseSBiZWVuIGZpeGVkIGluIHRoZSBsYXRlc3QgUHl0aG9uIHZlcnNpb25zLiAgV2UgdXNlIHRoaXMgdG8gd29ybQotIyBhcm91bmQgYnJva2VuIG9sZGVyIFB5dGhvbnMuCi1kZWYgcGFyc2VkYXRlKGRhdGEpOgotICAgIGlmIG5vdCBkYXRhOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIHJldHVybiBfcGFyc2VkYXRlKGRhdGEpCi0KLQotZGVmIHBhcnNlZGF0ZV90eihkYXRhKToKLSAgICBpZiBub3QgZGF0YToKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICByZXR1cm4gX3BhcnNlZGF0ZV90eihkYXRhKQorZGVmIHBhcnNlZGF0ZV90b19kYXRldGltZShkYXRhKToKKyAgICAqZHR1cGxlLCB0eiA9IF9wYXJzZWRhdGVfdHooZGF0YSkKKyAgICBpZiB0eiBpcyBOb25lOgorICAgICAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUoKmR0dXBsZVs6Nl0pCisgICAgcmV0dXJuIGRhdGV0aW1lLmRhdGV0aW1lKCpkdHVwbGVbOjZdLAorICAgICAgICAgICAgdHppbmZvPWRhdGV0aW1lLnRpbWV6b25lKGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPXR6KSkpCiAKIAogZGVmIHBhcnNlYWRkcihhZGRyKToKQEAgLTMwNCwzICszNDMsNDkgQEAKICAgICBleGNlcHQgTG9va3VwRXJyb3I6CiAgICAgICAgICMgY2hhcnNldCBpcyBub3QgYSBrbm93biBjb2RlYy4KICAgICAgICAgcmV0dXJuIHVucXVvdGUodGV4dCkKKworCisjCisjIGRhdGV0aW1lIGRvZXNuJ3QgcHJvdmlkZSBhIGxvY2FsdGltZSBmdW5jdGlvbiB5ZXQsIHNvIHByb3ZpZGUgb25lLiAgQ29kZQorIyBhZGFwdGVkIGZyb20gdGhlIHBhdGNoIGluIGlzc3VlIDk1MjcuICBUaGlzIG1heSBub3QgYmUgcGVyZmVjdCwgYnV0IGl0IGlzCisjIGJldHRlciB0aGFuIG5vdCBoYXZpbmcgaXQuCisjCisKK2RlZiBsb2NhbHRpbWUoZHQ9Tm9uZSwgaXNkc3Q9LTEpOgorICAgICIiIlJldHVybiBsb2NhbCB0aW1lIGFzIGFuIGF3YXJlIGRhdGV0aW1lIG9iamVjdC4KKworICAgIElmIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cywgcmV0dXJuIGN1cnJlbnQgdGltZS4gIE90aGVyd2lzZSAqZHQqCisgICAgYXJndW1lbnQgc2hvdWxkIGJlIGEgZGF0ZXRpbWUgaW5zdGFuY2UsIGFuZCBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlCisgICAgbG9jYWwgdGltZSB6b25lIGFjY29yZGluZyB0byB0aGUgc3lzdGVtIHRpbWUgem9uZSBkYXRhYmFzZS4gIElmICpkdCogaXMKKyAgICBuYWl2ZSAodGhhdCBpcywgZHQudHppbmZvIGlzIE5vbmUpLCBpdCBpcyBhc3N1bWVkIHRvIGJlIGluIGxvY2FsIHRpbWUuCisgICAgSW4gdGhpcyBjYXNlLCBhIHBvc2l0aXZlIG9yIHplcm8gdmFsdWUgZm9yICppc2RzdCogY2F1c2VzIGxvY2FsdGltZSB0bworICAgIHByZXN1bWUgaW5pdGlhbGx5IHRoYXQgc3VtbWVyIHRpbWUgKGZvciBleGFtcGxlLCBEYXlsaWdodCBTYXZpbmcgVGltZSkKKyAgICBpcyBvciBpcyBub3QgKHJlc3BlY3RpdmVseSkgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuICBBCisgICAgbmVnYXRpdmUgdmFsdWUgZm9yICppc2RzdCogY2F1c2VzIHRoZSBsb2NhbHRpbWUoKSBmdW5jdGlvbiB0byBhdHRlbXB0CisgICAgdG8gZGl2aW5lIHdoZXRoZXIgc3VtbWVyIHRpbWUgaXMgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuCisKKyAgICAiIiIKKyAgICBpZiBkdCBpcyBOb25lOgorICAgICAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KGRhdGV0aW1lLnRpbWV6b25lLnV0YykuYXN0aW1lem9uZSgpCisgICAgaWYgZHQudHppbmZvIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gZHQuYXN0aW1lem9uZSgpCisgICAgIyBXZSBoYXZlIGEgbmFpdmUgZGF0ZXRpbWUuICBDb252ZXJ0IHRvIGEgKGxvY2FsdGltZSkgdGltZXR1cGxlIGFuZCBwYXNzIHRvCisgICAgIyBzeXN0ZW0gbWt0aW1lIHRvZ2V0aGVyIHdpdGggdGhlIGlzZHN0IGhpbnQuICBTeXN0ZW0gbWt0aW1lIHdpbGwgcmV0dXJuCisgICAgIyBzZWNvbmRzIHNpbmNlIGVwb2NoLgorICAgIHRtID0gZHQudGltZXR1cGxlKClbOi0xXSArIChpc2RzdCwpCisgICAgc2Vjb25kcyA9IHRpbWUubWt0aW1lKHRtKQorICAgIGxvY2FsdG0gPSB0aW1lLmxvY2FsdGltZShzZWNvbmRzKQorICAgIHRyeToKKyAgICAgICAgZGVsdGEgPSBkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz1sb2NhbHRtLnRtX2dtdG9mZikKKyAgICAgICAgdHogPSBkYXRldGltZS50aW1lem9uZShkZWx0YSwgbG9jYWx0bS50bV96b25lKQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgIyBDb21wdXRlIFVUQyBvZmZzZXQgYW5kIGNvbXBhcmUgd2l0aCB0aGUgdmFsdWUgaW1wbGllZCBieSB0bV9pc2RzdC4KKyAgICAgICAgIyBJZiB0aGUgdmFsdWVzIG1hdGNoLCB1c2UgdGhlIHpvbmUgbmFtZSBpbXBsaWVkIGJ5IHRtX2lzZHN0LgorICAgICAgICBkZWx0YSA9IGR0IC0gZGF0ZXRpbWUuZGF0ZXRpbWUoKnRpbWUuZ210aW1lKHNlY29uZHMpWzo2XSkKKyAgICAgICAgZHN0ID0gdGltZS5kYXlsaWdodCBhbmQgbG9jYWx0bS50bV9pc2RzdCA+IDAKKyAgICAgICAgZ210b2ZmID0gLSh0aW1lLmFsdHpvbmUgaWYgZHN0IGVsc2UgdGltZS50aW1lem9uZSkKKyAgICAgICAgaWYgZGVsdGEgPT0gZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKToKKyAgICAgICAgICAgIHR6ID0gZGF0ZXRpbWUudGltZXpvbmUoZGVsdGEsIHRpbWUudHpuYW1lW2RzdF0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0eiA9IGRhdGV0aW1lLnRpbWV6b25lKGRlbHRhKQorICAgIHJldHVybiBkdC5yZXBsYWNlKHR6aW5mbz10eikKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvY3AwMzcucHkgYi9MaWIvZW5jb2RpbmdzL2NwMDM3LnB5CmluZGV4IDRlZGQ3MDguLmJmZTJjMWUgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvY3AwMzcucHkKKysrIGIvTGliL2VuY29kaW5ncy9jcDAzNy5weQpAQCAtMzAxLDYgKzMwMSw3IEBACiAgICAgJ1x4ZDknICAgICAjICAweEZEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgICdceGRhJyAgICAgIyAgMHhGRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICAnXHg5ZicgICAgICMgIDB4RkYgLT4gQ09OVFJPTAorICAgICdcdWZmZmUnICAgIyMgV2lkZW4gdG8gVUNTMiBmb3Igb3B0aW1pemF0aW9uCiApCiAKICMjIyBFbmNvZGluZyB0YWJsZQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9jcDUwMC5weSBiL0xpYi9lbmNvZGluZ3MvY3A1MDAucHkKaW5kZXggNWY2MTUzNS4uYTk3NWJlNyAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9jcDUwMC5weQorKysgYi9MaWIvZW5jb2RpbmdzL2NwNTAwLnB5CkBAIC0zMDEsNiArMzAxLDcgQEAKICAgICAnXHhkOScgICAgICMgIDB4RkQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAgJ1x4ZGEnICAgICAjICAweEZFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgICdceDlmJyAgICAgIyAgMHhGRiAtPiBDT05UUk9MCisgICAgJ1x1ZmZmZScgICAjIyBXaWRlbiB0byBVQ1MyIGZvciBvcHRpbWl6YXRpb24KICkKIAogIyMjIEVuY29kaW5nIHRhYmxlCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2NwNjUwMDEucHkgYi9MaWIvZW5jb2RpbmdzL2NwNjUwMDEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg3ZWI4NwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbmNvZGluZ3MvY3A2NTAwMS5weQpAQCAtMCwwICsxLDQwIEBACisiIiIKK0NvZGUgcGFnZSA2NTAwMTogV2luZG93cyBVVEYtOCAoQ1BfVVRGOCkuCisiIiIKKworaW1wb3J0IGNvZGVjcworaW1wb3J0IGZ1bmN0b29scworCitpZiBub3QgaGFzYXR0cihjb2RlY3MsICdjb2RlX3BhZ2VfZW5jb2RlJyk6CisgICAgcmFpc2UgTG9va3VwRXJyb3IoImNwNjUwMDEgZW5jb2RpbmcgaXMgb25seSBhdmFpbGFibGUgb24gV2luZG93cyIpCisKKyMjIyBDb2RlYyBBUElzCisKK2VuY29kZSA9IGZ1bmN0b29scy5wYXJ0aWFsKGNvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlLCA2NTAwMSkKK2RlY29kZSA9IGZ1bmN0b29scy5wYXJ0aWFsKGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCA2NTAwMSkKKworY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgorICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKKyAgICAgICAgcmV0dXJuIGVuY29kZShpbnB1dCwgc2VsZi5lcnJvcnMpWzBdCisKK2NsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuQnVmZmVyZWRJbmNyZW1lbnRhbERlY29kZXIpOgorICAgIF9idWZmZXJfZGVjb2RlID0gZGVjb2RlCisKK2NsYXNzIFN0cmVhbVdyaXRlcihjb2RlY3MuU3RyZWFtV3JpdGVyKToKKyAgICBlbmNvZGUgPSBlbmNvZGUKKworY2xhc3MgU3RyZWFtUmVhZGVyKGNvZGVjcy5TdHJlYW1SZWFkZXIpOgorICAgIGRlY29kZSA9IGRlY29kZQorCisjIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKKworZGVmIGdldHJlZ2VudHJ5KCk6CisgICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCisgICAgICAgIG5hbWU9J2NwNjUwMDEnLAorICAgICAgICBlbmNvZGU9ZW5jb2RlLAorICAgICAgICBkZWNvZGU9ZGVjb2RlLAorICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAorICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAorICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAorICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAorICAgICkKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvaHBfcm9tYW44LnB5IGIvTGliL2VuY29kaW5ncy9ocF9yb21hbjgucHkKaW5kZXggZGJhYWE3Mi4uMjMzNDIwOCAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9ocF9yb21hbjgucHkKKysrIGIvTGliL2VuY29kaW5ncy9ocF9yb21hbjgucHkKQEAgLTE0LDE4ICsxNCwxOCBAQAogY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKIAogICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ19tYXApCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQogCiAgICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX21hcCkKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCiAKIGNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfbWFwKVswXQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQogCiBjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX21hcClbMF0KKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KIAogY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgIHBhc3MKQEAgLTQ2LDEwNyArNDYsMjY3IEBACiAgICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCiAgICAgKQogCi0jIyMgRGVjb2RpbmcgTWFwCiAKLWRlY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2lkZW50aXR5X2RpY3QocmFuZ2UoMjU2KSkKLWRlY29kaW5nX21hcC51cGRhdGUoewotICAgICAgICAweDAwYTE6IDB4MDBjMCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKLSAgICAgICAgMHgwMGEyOiAweDAwYzIsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGEzOiAweDAwYzgsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBhNDogMHgwMGNhLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBhNTogMHgwMGNiLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMGE2OiAweDAwY2UsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGE3OiAweDAwY2YsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwYTg6IDB4MDBiNCwgIyAgICAgICBBQ1VURSBBQ0NFTlQKLSAgICAgICAgMHgwMGE5OiAweDAyY2IsICMgICAgICAgTU9ESUZJRVIgTEVUVEVSIEdSQVZFIEFDQ0VOVCAoTWFuZGFyaW4gQ2hpbmVzZSBmb3VydGggdG9uZSkKLSAgICAgICAgMHgwMGFhOiAweDAyYzYsICMgICAgICAgTU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVggQUNDRU5UCi0gICAgICAgIDB4MDBhYjogMHgwMGE4LCAjICAgICAgIERJQUVSRVNJUwotICAgICAgICAweDAwYWM6IDB4MDJkYywgIyAgICAgICBTTUFMTCBUSUxERQotICAgICAgICAweDAwYWQ6IDB4MDBkOSwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKLSAgICAgICAgMHgwMGFlOiAweDAwZGIsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGFmOiAweDIwYTQsICMgICAgICAgTElSQSBTSUdOCi0gICAgICAgIDB4MDBiMDogMHgwMGFmLCAjICAgICAgIE1BQ1JPTgotICAgICAgICAweDAwYjE6IDB4MDBkZCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGIyOiAweDAwZmQsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQotICAgICAgICAweDAwYjM6IDB4MDBiMCwgIyAgICAgICBERUdSRUUgU0lHTgotICAgICAgICAweDAwYjQ6IDB4MDBjNywgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwYjU6IDB4MDBlNywgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGI2OiAweDAwZDEsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFCi0gICAgICAgIDB4MDBiNzogMHgwMGYxLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKLSAgICAgICAgMHgwMGI4OiAweDAwYTEsICMgICAgICAgSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSwotICAgICAgICAweDAwYjk6IDB4MDBiZiwgIyAgICAgICBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCi0gICAgICAgIDB4MDBiYTogMHgwMGE0LCAjICAgICAgIENVUlJFTkNZIFNJR04KLSAgICAgICAgMHgwMGJiOiAweDAwYTMsICMgICAgICAgUE9VTkQgU0lHTgotICAgICAgICAweDAwYmM6IDB4MDBhNSwgIyAgICAgICBZRU4gU0lHTgotICAgICAgICAweDAwYmQ6IDB4MDBhNywgIyAgICAgICBTRUNUSU9OIFNJR04KLSAgICAgICAgMHgwMGJlOiAweDAxOTIsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCi0gICAgICAgIDB4MDBiZjogMHgwMGEyLCAjICAgICAgIENFTlQgU0lHTgotICAgICAgICAweDAwYzA6IDB4MDBlMiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGMxOiAweDAwZWEsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBjMjogMHgwMGY0LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwYzM6IDB4MDBmYiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGM0OiAweDAwZTEsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQotICAgICAgICAweDAwYzU6IDB4MDBlOSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBjNjogMHgwMGYzLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGM3OiAweDAwZmEsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQotICAgICAgICAweDAwYzg6IDB4MDBlMCwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBjOTogMHgwMGU4LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKLSAgICAgICAgMHgwMGNhOiAweDAwZjIsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQotICAgICAgICAweDAwY2I6IDB4MDBmOSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBjYzogMHgwMGU0LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBjZDogMHgwMGViLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBjZTogMHgwMGY2LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBjZjogMHgwMGZjLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBkMDogMHgwMGM1LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCi0gICAgICAgIDB4MDBkMTogMHgwMGVlLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwZDI6IDB4MDBkOCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggU1RST0tFCi0gICAgICAgIDB4MDBkMzogMHgwMGM2LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEFFCi0gICAgICAgIDB4MDBkNDogMHgwMGU1LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQotICAgICAgICAweDAwZDU6IDB4MDBlZCwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBkNjogMHgwMGY4LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFCi0gICAgICAgIDB4MDBkNzogMHgwMGU2LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBBRQotICAgICAgICAweDAwZDg6IDB4MDBjNCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBkOTogMHgwMGVjLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKLSAgICAgICAgMHgwMGRhOiAweDAwZDYsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwZGI6IDB4MDBkYywgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBkYzogMHgwMGM5LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQotICAgICAgICAweDAwZGQ6IDB4MDBlZiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwZGU6IDB4MDBkZiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUyAoR2VybWFuKQotICAgICAgICAweDAwZGY6IDB4MDBkNCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwZTA6IDB4MDBjMSwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGUxOiAweDAwYzMsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFCi0gICAgICAgIDB4MDBlMjogMHgwMGUzLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggVElMREUKLSAgICAgICAgMHgwMGUzOiAweDAwZDAsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRVRIIChJY2VsYW5kaWMpCi0gICAgICAgIDB4MDBlNDogMHgwMGYwLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBFVEggKEljZWxhbmRpYykKLSAgICAgICAgMHgwMGU1OiAweDAwY2QsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBlNjogMHgwMGNjLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBHUkFWRQotICAgICAgICAweDAwZTc6IDB4MDBkMywgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGU4OiAweDAwZDIsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBlOTogMHgwMGQ1LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQotICAgICAgICAweDAwZWE6IDB4MDBmNSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCi0gICAgICAgIDB4MDBlYjogMHgwMTYwLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgotICAgICAgICAweDAwZWM6IDB4MDE2MSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBlZDogMHgwMGRhLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQotICAgICAgICAweDAwZWU6IDB4MDE3OCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBlZjogMHgwMGZmLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBmMDogMHgwMGRlLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIFRIT1JOIChJY2VsYW5kaWMpCi0gICAgICAgIDB4MDBmMTogMHgwMGZlLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBUSE9STiAoSWNlbGFuZGljKQotICAgICAgICAweDAwZjI6IDB4MDBiNywgIyAgICAgICBNSURETEUgRE9UCi0gICAgICAgIDB4MDBmMzogMHgwMGI1LCAjICAgICAgIE1JQ1JPIFNJR04KLSAgICAgICAgMHgwMGY0OiAweDAwYjYsICMgICAgICAgUElMQ1JPVyBTSUdOCi0gICAgICAgIDB4MDBmNTogMHgwMGJlLCAjICAgICAgIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUwotICAgICAgICAweDAwZjY6IDB4MjAxNCwgIyAgICAgICBFTSBEQVNICi0gICAgICAgIDB4MDBmNzogMHgwMGJjLCAjICAgICAgIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgotICAgICAgICAweDAwZjg6IDB4MDBiZCwgIyAgICAgICBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKLSAgICAgICAgMHgwMGY5OiAweDAwYWEsICMgICAgICAgRkVNSU5JTkUgT1JESU5BTCBJTkRJQ0FUT1IKLSAgICAgICAgMHgwMGZhOiAweDAwYmEsICMgICAgICAgTUFTQ1VMSU5FIE9SRElOQUwgSU5ESUNBVE9SCi0gICAgICAgIDB4MDBmYjogMHgwMGFiLCAjICAgICAgIExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBmYzogMHgyNWEwLCAjICAgICAgIEJMQUNLIFNRVUFSRQotICAgICAgICAweDAwZmQ6IDB4MDBiYiwgIyAgICAgICBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMGZlOiAweDAwYjEsICMgICAgICAgUExVUy1NSU5VUyBTSUdOCi0gICAgICAgIDB4MDBmZjogTm9uZSwKLX0pCisjIyMgRGVjb2RpbmcgVGFibGUKIAotIyMjIEVuY29kaW5nIE1hcAorZGVjb2RpbmdfdGFibGUgPSAoCisgICAgJ1x4MDAnICAgICAjICAweDAwIC0+IE5VTEwKKyAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORworICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCisgICAgJ1x4MDMnICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUCisgICAgJ1x4MDQnICAgICAjICAweDA0IC0+IEVORCBPRiBUUkFOU01JU1NJT04KKyAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gRU5RVUlSWQorICAgICdceDA2JyAgICAgIyAgMHgwNiAtPiBBQ0tOT1dMRURHRQorICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBCRUxMCisgICAgJ1x4MDgnICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQorICAgICdcdCcgICAgICAgIyAgMHgwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KKyAgICAnXG4nICAgICAgICMgIDB4MEEgLT4gTElORSBGRUVECisgICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KKyAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gRk9STSBGRUVECisgICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgorICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKKyAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gU0hJRlQgSU4KKyAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQorICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKKyAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPCisgICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCisgICAgJ1x4MTQnICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKKyAgICAnXHgxNScgICAgICMgIDB4MTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKKyAgICAnXHgxNicgICAgICMgIDB4MTYgLT4gU1lOQ0hST05PVVMgSURMRQorICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCisgICAgJ1x4MTgnICAgICAjICAweDE4IC0+IENBTkNFTAorICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBFTkQgT0YgTUVESVVNCisgICAgJ1x4MWEnICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKKyAgICAnXHgxYicgICAgICMgIDB4MUIgLT4gRVNDQVBFCisgICAgJ1x4MWMnICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SCisgICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgorICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCisgICAgJ1x4MWYnICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SCisgICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCisgICAgJyEnICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKKyAgICAnIicgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKKyAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KKyAgICAnJCcgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KKyAgICAnJScgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCisgICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAorICAgICInIiAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCisgICAgJygnICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKKyAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKKyAgICAnKicgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKKyAgICAnKycgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCisgICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCisgICAgJy0nICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUworICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKKyAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUworICAgICcwJyAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCisgICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQorICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KKyAgICAnMycgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKKyAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgorICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCisgICAgJzYnICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAorICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgorICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAorICAgICc5JyAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCisgICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OCisgICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgorICAgICc8JyAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgorICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgorICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgorICAgICc/JyAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCisgICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKKyAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQorICAgICdCJyAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCisgICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKKyAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAorICAgICdFJyAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCisgICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKKyAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRworICAgICdIJyAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICisgICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKKyAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgorICAgICdLJyAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCisgICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKKyAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQorICAgICdOJyAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCisgICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KKyAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAorICAgICdRJyAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCisgICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKKyAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUworICAgICdUJyAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCisgICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKKyAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgorICAgICdXJyAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCisgICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKKyAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQorICAgICdaJyAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCisgICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKKyAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCisgICAgJ10nICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCisgICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCisgICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCisgICAgJ2AnICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAorICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQorICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgorICAgICdjJyAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQworICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAorICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQorICAgICdmJyAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgorICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRworICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAorICAgICdpJyAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQorICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgorICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSworICAgICdsJyAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAorICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQorICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgorICAgICdvJyAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTworICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAorICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQorICAgICdyJyAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgorICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUworICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAorICAgICd1JyAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQorICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgorICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVworICAgICd4JyAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAorICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQorICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgorICAgICd7JyAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKKyAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQorICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCisgICAgJ34nICAgICAgICAjICAweDdFIC0+IFRJTERFCisgICAgJ1x4N2YnICAgICAjICAweDdGIC0+IERFTEVURQorICAgICdceDgwJyAgICAgIyAgMHg4MCAtPiA8Y29udHJvbD4KKyAgICAnXHg4MScgICAgICMgIDB4ODEgLT4gPGNvbnRyb2w+CisgICAgJ1x4ODInICAgICAjICAweDgyIC0+IDxjb250cm9sPgorICAgICdceDgzJyAgICAgIyAgMHg4MyAtPiA8Y29udHJvbD4KKyAgICAnXHg4NCcgICAgICMgIDB4ODQgLT4gPGNvbnRyb2w+CisgICAgJ1x4ODUnICAgICAjICAweDg1IC0+IDxjb250cm9sPgorICAgICdceDg2JyAgICAgIyAgMHg4NiAtPiA8Y29udHJvbD4KKyAgICAnXHg4NycgICAgICMgIDB4ODcgLT4gPGNvbnRyb2w+CisgICAgJ1x4ODgnICAgICAjICAweDg4IC0+IDxjb250cm9sPgorICAgICdceDg5JyAgICAgIyAgMHg4OSAtPiA8Y29udHJvbD4KKyAgICAnXHg4YScgICAgICMgIDB4OEEgLT4gPGNvbnRyb2w+CisgICAgJ1x4OGInICAgICAjICAweDhCIC0+IDxjb250cm9sPgorICAgICdceDhjJyAgICAgIyAgMHg4QyAtPiA8Y29udHJvbD4KKyAgICAnXHg4ZCcgICAgICMgIDB4OEQgLT4gPGNvbnRyb2w+CisgICAgJ1x4OGUnICAgICAjICAweDhFIC0+IDxjb250cm9sPgorICAgICdceDhmJyAgICAgIyAgMHg4RiAtPiA8Y29udHJvbD4KKyAgICAnXHg5MCcgICAgICMgIDB4OTAgLT4gPGNvbnRyb2w+CisgICAgJ1x4OTEnICAgICAjICAweDkxIC0+IDxjb250cm9sPgorICAgICdceDkyJyAgICAgIyAgMHg5MiAtPiA8Y29udHJvbD4KKyAgICAnXHg5MycgICAgICMgIDB4OTMgLT4gPGNvbnRyb2w+CisgICAgJ1x4OTQnICAgICAjICAweDk0IC0+IDxjb250cm9sPgorICAgICdceDk1JyAgICAgIyAgMHg5NSAtPiA8Y29udHJvbD4KKyAgICAnXHg5NicgICAgICMgIDB4OTYgLT4gPGNvbnRyb2w+CisgICAgJ1x4OTcnICAgICAjICAweDk3IC0+IDxjb250cm9sPgorICAgICdceDk4JyAgICAgIyAgMHg5OCAtPiA8Y29udHJvbD4KKyAgICAnXHg5OScgICAgICMgIDB4OTkgLT4gPGNvbnRyb2w+CisgICAgJ1x4OWEnICAgICAjICAweDlBIC0+IDxjb250cm9sPgorICAgICdceDliJyAgICAgIyAgMHg5QiAtPiA8Y29udHJvbD4KKyAgICAnXHg5YycgICAgICMgIDB4OUMgLT4gPGNvbnRyb2w+CisgICAgJ1x4OWQnICAgICAjICAweDlEIC0+IDxjb250cm9sPgorICAgICdceDllJyAgICAgIyAgMHg5RSAtPiA8Y29udHJvbD4KKyAgICAnXHg5ZicgICAgICMgIDB4OUYgLT4gPGNvbnRyb2w+CisgICAgJ1x4YTAnICAgICAjICAweEEwIC0+IE5PLUJSRUFLIFNQQUNFCisgICAgJ1x4YzAnICAgICAjICAweEExIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRQorICAgICdceGMyJyAgICAgIyAgMHhBMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGM4JyAgICAgIyAgMHhBMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKKyAgICAnXHhjYScgICAgICMgIDB4QTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhjYicgICAgICMgIDB4QTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUworICAgICdceGNlJyAgICAgIyAgMHhBNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGNmJyAgICAgIyAgMHhBNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCisgICAgJ1x4YjQnICAgICAjICAweEE4IC0+IEFDVVRFIEFDQ0VOVAorICAgICdcdTAyY2InICAgIyAgMHhBOSAtPiBNT0RJRklFUiBMRVRURVIgR1JBVkUgQUNDRU5UIChNQU5EQVJJTiBDSElORVNFIEZPVVJUSCBUT05FKQorICAgICdcdTAyYzYnICAgIyAgMHhBQSAtPiBNT0RJRklFUiBMRVRURVIgQ0lSQ1VNRkxFWCBBQ0NFTlQKKyAgICAnXHhhOCcgICAgICMgIDB4QUIgLT4gRElBRVJFU0lTCisgICAgJ1x1MDJkYycgICAjICAweEFDIC0+IFNNQUxMIFRJTERFCisgICAgJ1x4ZDknICAgICAjICAweEFEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRQorICAgICdceGRiJyAgICAgIyAgMHhBRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAorICAgICdcdTIwYTQnICAgIyAgMHhBRiAtPiBMSVJBIFNJR04KKyAgICAnXHhhZicgICAgICMgIDB4QjAgLT4gTUFDUk9OCisgICAgJ1x4ZGQnICAgICAjICAweEIxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBBQ1VURQorICAgICdceGZkJyAgICAgIyAgMHhCMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCisgICAgJ1x4YjAnICAgICAjICAweEIzIC0+IERFR1JFRSBTSUdOCisgICAgJ1x4YzcnICAgICAjICAweEI0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCisgICAgJ1x4ZTcnICAgICAjICAweEI1IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQorICAgICdceGQxJyAgICAgIyAgMHhCNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKKyAgICAnXHhmMScgICAgICMgIDB4QjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERQorICAgICdceGExJyAgICAgIyAgMHhCOCAtPiBJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCisgICAgJ1x4YmYnICAgICAjICAweEI5IC0+IElOVkVSVEVEIFFVRVNUSU9OIE1BUksKKyAgICAnXHhhNCcgICAgICMgIDB4QkEgLT4gQ1VSUkVOQ1kgU0lHTgorICAgICdceGEzJyAgICAgIyAgMHhCQiAtPiBQT1VORCBTSUdOCisgICAgJ1x4YTUnICAgICAjICAweEJDIC0+IFlFTiBTSUdOCisgICAgJ1x4YTcnICAgICAjICAweEJEIC0+IFNFQ1RJT04gU0lHTgorICAgICdcdTAxOTInICAgIyAgMHhCRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKKyAgICAnXHhhMicgICAgICMgIDB4QkYgLT4gQ0VOVCBTSUdOCisgICAgJ1x4ZTInICAgICAjICAweEMwIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGVhJyAgICAgIyAgMHhDMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhmNCcgICAgICMgIDB4QzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZmInICAgICAjICAweEMzIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGUxJyAgICAgIyAgMHhDNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCisgICAgJ1x4ZTknICAgICAjICAweEM1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKKyAgICAnXHhmMycgICAgICMgIDB4QzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQorICAgICdceGZhJyAgICAgIyAgMHhDNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCisgICAgJ1x4ZTAnICAgICAjICAweEM4IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKKyAgICAnXHhlOCcgICAgICMgIDB4QzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQorICAgICdceGYyJyAgICAgIyAgMHhDQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFCisgICAgJ1x4ZjknICAgICAjICAweENCIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkUKKyAgICAnXHhlNCcgICAgICMgIDB4Q0MgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhlYicgICAgICMgIDB4Q0QgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhmNicgICAgICMgIDB4Q0UgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKKyAgICAnXHhmYycgICAgICMgIDB4Q0YgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhjNScgICAgICMgIDB4RDAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKKyAgICAnXHhlZScgICAgICMgIDB4RDEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZDgnICAgICAjICAweEQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKKyAgICAnXHhjNicgICAgICMgIDB4RDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQUUKKyAgICAnXHhlNScgICAgICMgIDB4RDQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCisgICAgJ1x4ZWQnICAgICAjICAweEQ1IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKKyAgICAnXHhmOCcgICAgICMgIDB4RDYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKKyAgICAnXHhlNicgICAgICMgIDB4RDcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEFFCisgICAgJ1x4YzQnICAgICAjICAweEQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhlYycgICAgICMgIDB4RDkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQorICAgICdceGQ2JyAgICAgIyAgMHhEQSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZGMnICAgICAjICAweERCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhjOScgICAgICMgIDB4REMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCisgICAgJ1x4ZWYnICAgICAjICAweEREIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZGYnICAgICAjICAweERFIC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTIChHRVJNQU4pCisgICAgJ1x4ZDQnICAgICAjICAweERGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4YzEnICAgICAjICAweEUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQorICAgICdceGMzJyAgICAgIyAgMHhFMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKKyAgICAnXHhlMycgICAgICMgIDB4RTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQorICAgICdceGQwJyAgICAgIyAgMHhFMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFVEggKElDRUxBTkRJQykKKyAgICAnXHhmMCcgICAgICMgIDB4RTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEVUSCAoSUNFTEFORElDKQorICAgICdceGNkJyAgICAgIyAgMHhFNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKKyAgICAnXHhjYycgICAgICMgIDB4RTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFCisgICAgJ1x4ZDMnICAgICAjICAweEU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQorICAgICdceGQyJyAgICAgIyAgMHhFOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkUKKyAgICAnXHhkNScgICAgICMgIDB4RTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCisgICAgJ1x4ZjUnICAgICAjICAweEVBIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKKyAgICAnXHUwMTYwJyAgICMgIDB4RUIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCisgICAgJ1x1MDE2MScgICAjICAweEVDIC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0FST04KKyAgICAnXHhkYScgICAgICMgIDB4RUQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCisgICAgJ1x1MDE3OCcgICAjICAweEVFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhmZicgICAgICMgIDB4RUYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhkZScgICAgICMgIDB4RjAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVEhPUk4gKElDRUxBTkRJQykKKyAgICAnXHhmZScgICAgICMgIDB4RjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFRIT1JOIChJQ0VMQU5ESUMpCisgICAgJ1x4YjcnICAgICAjICAweEYyIC0+IE1JRERMRSBET1QKKyAgICAnXHhiNScgICAgICMgIDB4RjMgLT4gTUlDUk8gU0lHTgorICAgICdceGI2JyAgICAgIyAgMHhGNCAtPiBQSUxDUk9XIFNJR04KKyAgICAnXHhiZScgICAgICMgIDB4RjUgLT4gVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTCisgICAgJ1x1MjAxNCcgICAjICAweEY2IC0+IEVNIERBU0gKKyAgICAnXHhiYycgICAgICMgIDB4RjcgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCisgICAgJ1x4YmQnICAgICAjICAweEY4IC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgorICAgICdceGFhJyAgICAgIyAgMHhGOSAtPiBGRU1JTklORSBPUkRJTkFMIElORElDQVRPUgorICAgICdceGJhJyAgICAgIyAgMHhGQSAtPiBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKKyAgICAnXHhhYicgICAgICMgIDB4RkIgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyNWEwJyAgICMgIDB4RkMgLT4gQkxBQ0sgU1FVQVJFCisgICAgJ1x4YmInICAgICAjICAweEZEIC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdceGIxJyAgICAgIyAgMHhGRSAtPiBQTFVTLU1JTlVTIFNJR04KKyAgICAnXHVmZmZlJworKQogCi1lbmNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9lbmNvZGluZ19tYXAoZGVjb2RpbmdfbWFwKQorIyMjIEVuY29kaW5nIHRhYmxlCitlbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvaWRuYS5weSBiL0xpYi9lbmNvZGluZ3MvaWRuYS5weQppbmRleCA1ODNiZGYxLi5lYTQwNTg1IDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL2lkbmEucHkKKysrIGIvTGliL2VuY29kaW5ncy9pZG5hLnB5CkBAIC0xNTMsNiArMTUzLDIwIEBACiAgICAgICAgIGlmIG5vdCBpbnB1dDoKICAgICAgICAgICAgIHJldHVybiBiJycsIDAKIAorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXN1bHQgPSBpbnB1dC5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgQVNDSUkgbmFtZTogZmFzdCBwYXRoCisgICAgICAgICAgICBsYWJlbHMgPSByZXN1bHQuc3BsaXQoYicuJykKKyAgICAgICAgICAgIGZvciBsYWJlbCBpbiBsYWJlbHNbOi0xXToKKyAgICAgICAgICAgICAgICBpZiBub3QgKDAgPCBsZW4obGFiZWwpIDwgNjQpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBVbmljb2RlRXJyb3IoImxhYmVsIGVtcHR5IG9yIHRvbyBsb25nIikKKyAgICAgICAgICAgIGlmIGxlbihsYWJlbHNbLTFdKSA+PSA2NDoKKyAgICAgICAgICAgICAgICByYWlzZSBVbmljb2RlRXJyb3IoImxhYmVsIHRvbyBsb25nIikKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQsIGxlbihpbnB1dCkKKwogICAgICAgICByZXN1bHQgPSBieXRlYXJyYXkoKQogICAgICAgICBsYWJlbHMgPSBkb3RzLnNwbGl0KGlucHV0KQogICAgICAgICBpZiBsYWJlbHMgYW5kIG5vdCBsYWJlbHNbLTFdOgpAQCAtMTc5LDYgKzE5MywxNCBAQAogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShpbnB1dCwgYnl0ZXMpOgogICAgICAgICAgICAgIyBYWFggb2J2aW91c2x5IHdyb25nLCBzZWUgIzMyMzIKICAgICAgICAgICAgIGlucHV0ID0gYnl0ZXMoaW5wdXQpCisKKyAgICAgICAgaWYgYWNlX3ByZWZpeCBub3QgaW4gaW5wdXQ6CisgICAgICAgICAgICAjIEZhc3QgcGF0aAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dC5kZWNvZGUoJ2FzY2lpJyksIGxlbihpbnB1dCkKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCiAgICAgICAgIGxhYmVscyA9IGlucHV0LnNwbGl0KGIiLiIpCiAKICAgICAgICAgaWYgbGFiZWxzIGFuZCBsZW4obGFiZWxzWy0xXSkgPT0gMDoKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvaXNvODg1OV8xLnB5IGIvTGliL2VuY29kaW5ncy9pc284ODU5XzEucHkKaW5kZXggOGNmYzAxZi4uZDljYzUxNiAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9pc284ODU5XzEucHkKKysrIGIvTGliL2VuY29kaW5ncy9pc284ODU5XzEucHkKQEAgLTMwMSw2ICszMDEsNyBAQAogICAgICdceGZkJyAgICAgIyAgMHhGRCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCiAgICAgJ1x4ZmUnICAgICAjICAweEZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBUSE9STiAoSWNlbGFuZGljKQogICAgICdceGZmJyAgICAgIyAgMHhGRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUworICAgICdcdWZmZmUnICAgIyMgV2lkZW4gdG8gVUNTMiBmb3Igb3B0aW1pemF0aW9uCiApCiAKICMjIyBFbmNvZGluZyB0YWJsZQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9tYWNfbGF0aW4yLnB5IGIvTGliL2VuY29kaW5ncy9tYWNfbGF0aW4yLnB5CmluZGV4IGUzMjJiZTIuLmRhOWQ0YjEgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvbWFjX2xhdGluMi5weQorKysgYi9MaWIvZW5jb2RpbmdzL21hY19sYXRpbjIucHkKQEAgLTEsNCArMSw0IEBACi0iIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGdlbmVyYXRlZCBmcm9tICdMQVRJTjIuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgorIiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBtYWNfbGF0aW4yIGdlbmVyYXRlZCBmcm9tICdNQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC9NQUMvTEFUSU4yLlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KIAogV3JpdHRlbiBieSBNYXJjLUFuZHJlIExlbWJ1cmcgKG1hbEBsZW1idXJnLmNvbSkuCiAKQEAgLTE0LDE4ICsxNCwxOCBAQAogY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKIAogICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ19tYXApCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQogCiAgICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX21hcCkKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCiAKIGNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfbWFwKVswXQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQogCiBjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX21hcClbMF0KKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KIAogY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgIHBhc3MKQEAgLTQ2LDEzOCArNDYsMjY3IEBACiAgICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICAgKQogCi0jIyMgRGVjb2RpbmcgTWFwCiAKLWRlY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2lkZW50aXR5X2RpY3QocmFuZ2UoMjU2KSkKLWRlY29kaW5nX21hcC51cGRhdGUoewotICAgICAgICAweDAwODA6IDB4MDBjNCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDA4MTogMHgwMTAwLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMDgyOiAweDAxMDEsICMgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMDgzOiAweDAwYzksICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDA4NDogMHgwMTA0LCAjIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBPR09ORUsKLSAgICAgICAgMHgwMDg1OiAweDAwZDYsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwODY6IDB4MDBkYywgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDA4NzogMHgwMGUxLCAjIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDg4OiAweDAxMDUsICMgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBPR09ORUsKLSAgICAgICAgMHgwMDg5OiAweDAxMGMsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENBUk9OCi0gICAgICAgIDB4MDA4YTogMHgwMGU0LCAjIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDA4YjogMHgwMTBkLCAjIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0FST04KLSAgICAgICAgMHgwMDhjOiAweDAxMDYsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDA4ZDogMHgwMTA3LCAjIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDhlOiAweDAwZTksICMgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQotICAgICAgICAweDAwOGY6IDB4MDE3OSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDkwOiAweDAxN2EsICMgTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBBQ1VURQotICAgICAgICAweDAwOTE6IDB4MDEwZSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggQ0FST04KLSAgICAgICAgMHgwMDkyOiAweDAwZWQsICMgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQotICAgICAgICAweDAwOTM6IDB4MDEwZiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIENBUk9OCi0gICAgICAgIDB4MDA5NDogMHgwMTEyLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMDk1OiAweDAxMTMsICMgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMDk2OiAweDAxMTYsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRQotICAgICAgICAweDAwOTc6IDB4MDBmMywgIyBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDA5ODogMHgwMTE3LCAjIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRE9UIEFCT1ZFCi0gICAgICAgIDB4MDA5OTogMHgwMGY0LCAjIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwOWE6IDB4MDBmNiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwOWI6IDB4MDBmNSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCi0gICAgICAgIDB4MDA5YzogMHgwMGZhLCAjIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDlkOiAweDAxMWEsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENBUk9OCi0gICAgICAgIDB4MDA5ZTogMHgwMTFiLCAjIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0FST04KLSAgICAgICAgMHgwMDlmOiAweDAwZmMsICMgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMGEwOiAweDIwMjAsICMgREFHR0VSCi0gICAgICAgIDB4MDBhMTogMHgwMGIwLCAjIERFR1JFRSBTSUdOCi0gICAgICAgIDB4MDBhMjogMHgwMTE4LCAjIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBPR09ORUsKLSAgICAgICAgMHgwMGE0OiAweDAwYTcsICMgU0VDVElPTiBTSUdOCi0gICAgICAgIDB4MDBhNTogMHgyMDIyLCAjIEJVTExFVAotICAgICAgICAweDAwYTY6IDB4MDBiNiwgIyBQSUxDUk9XIFNJR04KLSAgICAgICAgMHgwMGE3OiAweDAwZGYsICMgTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKLSAgICAgICAgMHgwMGE4OiAweDAwYWUsICMgUkVHSVNURVJFRCBTSUdOCi0gICAgICAgIDB4MDBhYTogMHgyMTIyLCAjIFRSQURFIE1BUksgU0lHTgotICAgICAgICAweDAwYWI6IDB4MDExOSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE9HT05FSwotICAgICAgICAweDAwYWM6IDB4MDBhOCwgIyBESUFFUkVTSVMKLSAgICAgICAgMHgwMGFkOiAweDIyNjAsICMgTk9UIEVRVUFMIFRPCi0gICAgICAgIDB4MDBhZTogMHgwMTIzLCAjIExBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwYWY6IDB4MDEyZSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggT0dPTkVLCi0gICAgICAgIDB4MDBiMDogMHgwMTJmLCAjIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggT0dPTkVLCi0gICAgICAgIDB4MDBiMTogMHgwMTJhLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMGIyOiAweDIyNjQsICMgTEVTUy1USEFOIE9SIEVRVUFMIFRPCi0gICAgICAgIDB4MDBiMzogMHgyMjY1LCAjIEdSRUFURVItVEhBTiBPUiBFUVVBTCBUTwotICAgICAgICAweDAwYjQ6IDB4MDEyYiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwYjU6IDB4MDEzNiwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwYjY6IDB4MjIwMiwgIyBQQVJUSUFMIERJRkZFUkVOVElBTAotICAgICAgICAweDAwYjc6IDB4MjIxMSwgIyBOLUFSWSBTVU1NQVRJT04KLSAgICAgICAgMHgwMGI4OiAweDAxNDIsICMgTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBTVFJPS0UKLSAgICAgICAgMHgwMGI5OiAweDAxM2IsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGJhOiAweDAxM2MsICMgTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBiYjogMHgwMTNkLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDQVJPTgotICAgICAgICAweDAwYmM6IDB4MDEzZSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBiZDogMHgwMTM5LCAjIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBBQ1VURQotICAgICAgICAweDAwYmU6IDB4MDEzYSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBiZjogMHgwMTQ1LCAjIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBjMDogMHgwMTQ2LCAjIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwYzE6IDB4MDE0MywgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGMyOiAweDAwYWMsICMgTk9UIFNJR04KLSAgICAgICAgMHgwMGMzOiAweDIyMWEsICMgU1FVQVJFIFJPT1QKLSAgICAgICAgMHgwMGM0OiAweDAxNDQsICMgTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBBQ1VURQotICAgICAgICAweDAwYzU6IDB4MDE0NywgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGM2OiAweDIyMDYsICMgSU5DUkVNRU5UCi0gICAgICAgIDB4MDBjNzogMHgwMGFiLCAjIExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBjODogMHgwMGJiLCAjIFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwYzk6IDB4MjAyNiwgIyBIT1JJWk9OVEFMIEVMTElQU0lTCi0gICAgICAgIDB4MDBjYTogMHgwMGEwLCAjIE5PLUJSRUFLIFNQQUNFCi0gICAgICAgIDB4MDBjYjogMHgwMTQ4LCAjIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGNjOiAweDAxNTAsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVUJMRSBBQ1VURQotICAgICAgICAweDAwY2Q6IDB4MDBkNSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKLSAgICAgICAgMHgwMGNlOiAweDAxNTEsICMgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEUKLSAgICAgICAgMHgwMGNmOiAweDAxNGMsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwZDA6IDB4MjAxMywgIyBFTiBEQVNICi0gICAgICAgIDB4MDBkMTogMHgyMDE0LCAjIEVNIERBU0gKLSAgICAgICAgMHgwMGQyOiAweDIwMWMsICMgTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMGQzOiAweDIwMWQsICMgUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBkNDogMHgyMDE4LCAjIExFRlQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBkNTogMHgyMDE5LCAjIFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZDY6IDB4MDBmNywgIyBESVZJU0lPTiBTSUdOCi0gICAgICAgIDB4MDBkNzogMHgyNWNhLCAjIExPWkVOR0UKLSAgICAgICAgMHgwMGQ4OiAweDAxNGQsICMgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBNQUNST04KLSAgICAgICAgMHgwMGQ5OiAweDAxNTQsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBkYTogMHgwMTU1LCAjIExBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGRiOiAweDAxNTgsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBkYzogMHgyMDM5LCAjIFNJTkdMRSBMRUZULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBkZDogMHgyMDNhLCAjIFNJTkdMRSBSSUdIVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZGU6IDB4MDE1OSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBkZjogMHgwMTU2LCAjIExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBlMDogMHgwMTU3LCAjIExBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwZTE6IDB4MDE2MCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGUyOiAweDIwMWEsICMgU0lOR0xFIExPVy05IFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBlMzogMHgyMDFlLCAjIERPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZTQ6IDB4MDE2MSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBlNTogMHgwMTVhLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBBQ1VURQotICAgICAgICAweDAwZTY6IDB4MDE1YiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBlNzogMHgwMGMxLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQotICAgICAgICAweDAwZTg6IDB4MDE2NCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGU5OiAweDAxNjUsICMgTEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBDQVJPTgotICAgICAgICAweDAwZWE6IDB4MDBjZCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGViOiAweDAxN2QsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBlYzogMHgwMTdlLCAjIExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGVkOiAweDAxNmEsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwZWU6IDB4MDBkMywgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGVmOiAweDAwZDQsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGYwOiAweDAxNmIsICMgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMGYxOiAweDAxNmUsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIFJJTkcgQUJPVkUKLSAgICAgICAgMHgwMGYyOiAweDAwZGEsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBmMzogMHgwMTZmLCAjIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggUklORyBBQk9WRQotICAgICAgICAweDAwZjQ6IDB4MDE3MCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCi0gICAgICAgIDB4MDBmNTogMHgwMTcxLCAjIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCi0gICAgICAgIDB4MDBmNjogMHgwMTcyLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBPR09ORUsKLSAgICAgICAgMHgwMGY3OiAweDAxNzMsICMgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBPR09ORUsKLSAgICAgICAgMHgwMGY4OiAweDAwZGQsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBmOTogMHgwMGZkLCAjIExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGZhOiAweDAxMzcsICMgTEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBmYjogMHgwMTdiLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKLSAgICAgICAgMHgwMGZjOiAweDAxNDEsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIFNUUk9LRQotICAgICAgICAweDAwZmQ6IDB4MDE3YywgIyBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIERPVCBBQk9WRQotICAgICAgICAweDAwZmU6IDB4MDEyMiwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwZmY6IDB4MDJjNywgIyBDQVJPTgotfSkKKyMjIyBEZWNvZGluZyBUYWJsZQogCi0jIyMgRW5jb2RpbmcgTWFwCitkZWNvZGluZ190YWJsZSA9ICgKKyAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAorICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBTVEFSVCBPRiBIRUFESU5HCisgICAgJ1x4MDInICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKKyAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gRU5EIE9GIFRFWFQKKyAgICAnXHgwNCcgICAgICMgIDB4MDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgorICAgICdceDA1JyAgICAgIyAgMHgwNSAtPiBFTlFVSVJZCisgICAgJ1x4MDYnICAgICAjICAweDA2IC0+IEFDS05PV0xFREdFCisgICAgJ1x4MDcnICAgICAjICAweDA3IC0+IEJFTEwKKyAgICAnXHgwOCcgICAgICMgIDB4MDggLT4gQkFDS1NQQUNFCisgICAgJ1x0JyAgICAgICAjICAweDA5IC0+IEhPUklaT05UQUwgVEFCVUxBVElPTgorICAgICdcbicgICAgICAgIyAgMHgwQSAtPiBMSU5FIEZFRUQKKyAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgorICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBGT1JNIEZFRUQKKyAgICAnXHInICAgICAgICMgIDB4MEQgLT4gQ0FSUklBR0UgUkVUVVJOCisgICAgJ1x4MGUnICAgICAjICAweDBFIC0+IFNISUZUIE9VVAorICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBTSElGVCBJTgorICAgICdceDEwJyAgICAgIyAgMHgxMCAtPiBEQVRBIExJTksgRVNDQVBFCisgICAgJ1x4MTEnICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQorICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBERVZJQ0UgQ09OVFJPTCBUV08KKyAgICAnXHgxMycgICAgICMgIDB4MTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKKyAgICAnXHgxNCcgICAgICMgIDB4MTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgorICAgICdceDE1JyAgICAgIyAgMHgxNSAtPiBORUdBVElWRSBBQ0tOT1dMRURHRQorICAgICdceDE2JyAgICAgIyAgMHgxNiAtPiBTWU5DSFJPTk9VUyBJRExFCisgICAgJ1x4MTcnICAgICAjICAweDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKKyAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCisgICAgJ1x4MTknICAgICAjICAweDE5IC0+IEVORCBPRiBNRURJVU0KKyAgICAnXHgxYScgICAgICMgIDB4MUEgLT4gU1VCU1RJVFVURQorICAgICdceDFiJyAgICAgIyAgMHgxQiAtPiBFU0NBUEUKKyAgICAnXHgxYycgICAgICMgIDB4MUMgLT4gRklMRSBTRVBBUkFUT1IKKyAgICAnXHgxZCcgICAgICMgIDB4MUQgLT4gR1JPVVAgU0VQQVJBVE9SCisgICAgJ1x4MWUnICAgICAjICAweDFFIC0+IFJFQ09SRCBTRVBBUkFUT1IKKyAgICAnXHgxZicgICAgICMgIDB4MUYgLT4gVU5JVCBTRVBBUkFUT1IKKyAgICAnICcgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKKyAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSworICAgICciJyAgICAgICAgIyAgMHgyMiAtPiBRVU9UQVRJT04gTUFSSworICAgICcjJyAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgorICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgorICAgICclJyAgICAgICAgIyAgMHgyNSAtPiBQRVJDRU5UIFNJR04KKyAgICAnJicgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECisgICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKKyAgICAnKCcgICAgICAgICMgIDB4MjggLT4gTEVGVCBQQVJFTlRIRVNJUworICAgICcpJyAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUworICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSworICAgICcrJyAgICAgICAgIyAgMHgyQiAtPiBQTFVTIFNJR04KKyAgICAnLCcgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKKyAgICAnLScgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCisgICAgJy4nICAgICAgICAjICAweDJFIC0+IEZVTEwgU1RPUAorICAgICcvJyAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCisgICAgJzAnICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KKyAgICAnMScgICAgICAgICMgIDB4MzEgLT4gRElHSVQgT05FCisgICAgJzInICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTworICAgICczJyAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQorICAgICc0JyAgICAgICAgIyAgMHgzNCAtPiBESUdJVCBGT1VSCisgICAgJzUnICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKKyAgICAnNicgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCisgICAgJzcnICAgICAgICAjICAweDM3IC0+IERJR0lUIFNFVkVOCisgICAgJzgnICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCisgICAgJzknICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKKyAgICAnOicgICAgICAgICMgIDB4M0EgLT4gQ09MT04KKyAgICAnOycgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCisgICAgJzwnICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCisgICAgJz0nICAgICAgICAjICAweDNEIC0+IEVRVUFMUyBTSUdOCisgICAgJz4nICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCisgICAgJz8nICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKKyAgICAnQCcgICAgICAgICMgIDB4NDAgLT4gQ09NTUVSQ0lBTCBBVAorICAgICdBJyAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCisgICAgJ0InICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKKyAgICAnQycgICAgICAgICMgIDB4NDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQworICAgICdEJyAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECisgICAgJ0UnICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKKyAgICAnRicgICAgICAgICMgIDB4NDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgorICAgICdHJyAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCisgICAgJ0gnICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKKyAgICAnSScgICAgICAgICMgIDB4NDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQorICAgICdKJyAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCisgICAgJ0snICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKKyAgICAnTCcgICAgICAgICMgIDB4NEMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAorICAgICdNJyAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCisgICAgJ04nICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KKyAgICAnTycgICAgICAgICMgIDB4NEYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTworICAgICdQJyAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCisgICAgJ1EnICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKKyAgICAnUicgICAgICAgICMgIDB4NTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgorICAgICdTJyAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCisgICAgJ1QnICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKKyAgICAnVScgICAgICAgICMgIDB4NTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQorICAgICdWJyAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCisgICAgJ1cnICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKKyAgICAnWCcgICAgICAgICMgIDB4NTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAorICAgICdZJyAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCisgICAgJ1onICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKKyAgICAnWycgICAgICAgICMgIDB4NUIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAorICAgICdcXCcgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKKyAgICAnXScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKKyAgICAnXicgICAgICAgICMgIDB4NUUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKKyAgICAnXycgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKKyAgICAnYCcgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCisgICAgJ2EnICAgICAgICAjICAweDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCisgICAgJ2InICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCisgICAgJ2MnICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCisgICAgJ2QnICAgICAgICAjICAweDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECisgICAgJ2UnICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCisgICAgJ2YnICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCisgICAgJ2cnICAgICAgICAjICAweDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCisgICAgJ2gnICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICisgICAgJ2knICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCisgICAgJ2onICAgICAgICAjICAweDZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCisgICAgJ2snICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCisgICAgJ2wnICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCisgICAgJ20nICAgICAgICAjICAweDZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCisgICAgJ24nICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCisgICAgJ28nICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCisgICAgJ3AnICAgICAgICAjICAweDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCisgICAgJ3EnICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCisgICAgJ3InICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCisgICAgJ3MnICAgICAgICAjICAweDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCisgICAgJ3QnICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCisgICAgJ3UnICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCisgICAgJ3YnICAgICAgICAjICAweDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCisgICAgJ3cnICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCisgICAgJ3gnICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCisgICAgJ3knICAgICAgICAjICAweDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCisgICAgJ3onICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCisgICAgJ3snICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAorICAgICd8JyAgICAgICAgIyAgMHg3QyAtPiBWRVJUSUNBTCBMSU5FCisgICAgJ30nICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKKyAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKKyAgICAnXHg3ZicgICAgICMgIDB4N0YgLT4gREVMRVRFCisgICAgJ1x4YzQnICAgICAjICAweDgwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKyAgICAnXHUwMTAwJyAgICMgIDB4ODEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIE1BQ1JPTgorICAgICdcdTAxMDEnICAgIyAgMHg4MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIE1BQ1JPTgorICAgICdceGM5JyAgICAgIyAgMHg4MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKKyAgICAnXHUwMTA0JyAgICMgIDB4ODQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIE9HT05FSworICAgICdceGQ2JyAgICAgIyAgMHg4NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZGMnICAgICAjICAweDg2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhlMScgICAgICMgIDB4ODcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQorICAgICdcdTAxMDUnICAgIyAgMHg4OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIE9HT05FSworICAgICdcdTAxMGMnICAgIyAgMHg4OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0FST04KKyAgICAnXHhlNCcgICAgICMgIDB4OEEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKyAgICAnXHUwMTBkJyAgICMgIDB4OEIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDQVJPTgorICAgICdcdTAxMDYnICAgIyAgMHg4QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQUNVVEUKKyAgICAnXHUwMTA3JyAgICMgIDB4OEQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBBQ1VURQorICAgICdceGU5JyAgICAgIyAgMHg4RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCisgICAgJ1x1MDE3OScgICAjICAweDhGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBBQ1VURQorICAgICdcdTAxN2EnICAgIyAgMHg5MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIEFDVVRFCisgICAgJ1x1MDEwZScgICAjICAweDkxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBDQVJPTgorICAgICdceGVkJyAgICAgIyAgMHg5MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCisgICAgJ1x1MDEwZicgICAjICAweDkzIC0+IExBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggQ0FST04KKyAgICAnXHUwMTEyJyAgICMgIDB4OTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE1BQ1JPTgorICAgICdcdTAxMTMnICAgIyAgMHg5NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE1BQ1JPTgorICAgICdcdTAxMTYnICAgIyAgMHg5NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRE9UIEFCT1ZFCisgICAgJ1x4ZjMnICAgICAjICAweDk3IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKKyAgICAnXHUwMTE3JyAgICMgIDB4OTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBET1QgQUJPVkUKKyAgICAnXHhmNCcgICAgICMgIDB4OTkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZjYnICAgICAjICAweDlBIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZjUnICAgICAjICAweDlCIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKKyAgICAnXHhmYScgICAgICMgIDB4OUMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQorICAgICdcdTAxMWEnICAgIyAgMHg5RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0FST04KKyAgICAnXHUwMTFiJyAgICMgIDB4OUUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDQVJPTgorICAgICdceGZjJyAgICAgIyAgMHg5RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUworICAgICdcdTIwMjAnICAgIyAgMHhBMCAtPiBEQUdHRVIKKyAgICAnXHhiMCcgICAgICMgIDB4QTEgLT4gREVHUkVFIFNJR04KKyAgICAnXHUwMTE4JyAgICMgIDB4QTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE9HT05FSworICAgICdceGEzJyAgICAgIyAgMHhBMyAtPiBQT1VORCBTSUdOCisgICAgJ1x4YTcnICAgICAjICAweEE0IC0+IFNFQ1RJT04gU0lHTgorICAgICdcdTIwMjInICAgIyAgMHhBNSAtPiBCVUxMRVQKKyAgICAnXHhiNicgICAgICMgIDB4QTYgLT4gUElMQ1JPVyBTSUdOCisgICAgJ1x4ZGYnICAgICAjICAweEE3IC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCisgICAgJ1x4YWUnICAgICAjICAweEE4IC0+IFJFR0lTVEVSRUQgU0lHTgorICAgICdceGE5JyAgICAgIyAgMHhBOSAtPiBDT1BZUklHSFQgU0lHTgorICAgICdcdTIxMjInICAgIyAgMHhBQSAtPiBUUkFERSBNQVJLIFNJR04KKyAgICAnXHUwMTE5JyAgICMgIDB4QUIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBPR09ORUsKKyAgICAnXHhhOCcgICAgICMgIDB4QUMgLT4gRElBRVJFU0lTCisgICAgJ1x1MjI2MCcgICAjICAweEFEIC0+IE5PVCBFUVVBTCBUTworICAgICdcdTAxMjMnICAgIyAgMHhBRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIENFRElMTEEKKyAgICAnXHUwMTJlJyAgICMgIDB4QUYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE9HT05FSworICAgICdcdTAxMmYnICAgIyAgMHhCMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIE9HT05FSworICAgICdcdTAxMmEnICAgIyAgMHhCMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggTUFDUk9OCisgICAgJ1x1MjI2NCcgICAjICAweEIyIC0+IExFU1MtVEhBTiBPUiBFUVVBTCBUTworICAgICdcdTIyNjUnICAgIyAgMHhCMyAtPiBHUkVBVEVSLVRIQU4gT1IgRVFVQUwgVE8KKyAgICAnXHUwMTJiJyAgICMgIDB4QjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBNQUNST04KKyAgICAnXHUwMTM2JyAgICMgIDB4QjUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIENFRElMTEEKKyAgICAnXHUyMjAyJyAgICMgIDB4QjYgLT4gUEFSVElBTCBESUZGRVJFTlRJQUwKKyAgICAnXHUyMjExJyAgICMgIDB4QjcgLT4gTi1BUlkgU1VNTUFUSU9OCisgICAgJ1x1MDE0MicgICAjICAweEI4IC0+IExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggU1RST0tFCisgICAgJ1x1MDEzYicgICAjICAweEI5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDRURJTExBCisgICAgJ1x1MDEzYycgICAjICAweEJBIC0+IExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0VESUxMQQorICAgICdcdTAxM2QnICAgIyAgMHhCQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0FST04KKyAgICAnXHUwMTNlJyAgICMgIDB4QkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDQVJPTgorICAgICdcdTAxMzknICAgIyAgMHhCRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQUNVVEUKKyAgICAnXHUwMTNhJyAgICMgIDB4QkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBBQ1VURQorICAgICdcdTAxNDUnICAgIyAgMHhCRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQ0VESUxMQQorICAgICdcdTAxNDYnICAgIyAgMHhDMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENFRElMTEEKKyAgICAnXHUwMTQzJyAgICMgIDB4QzEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIEFDVVRFCisgICAgJ1x4YWMnICAgICAjICAweEMyIC0+IE5PVCBTSUdOCisgICAgJ1x1MjIxYScgICAjICAweEMzIC0+IFNRVUFSRSBST09UCisgICAgJ1x1MDE0NCcgICAjICAweEM0IC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQUNVVEUKKyAgICAnXHUwMTQ3JyAgICMgIDB4QzUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENBUk9OCisgICAgJ1x1MjIwNicgICAjICAweEM2IC0+IElOQ1JFTUVOVAorICAgICdceGFiJyAgICAgIyAgMHhDNyAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdceGJiJyAgICAgIyAgMHhDOCAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDI2JyAgICMgIDB4QzkgLT4gSE9SSVpPTlRBTCBFTExJUFNJUworICAgICdceGEwJyAgICAgIyAgMHhDQSAtPiBOTy1CUkVBSyBTUEFDRQorICAgICdcdTAxNDgnICAgIyAgMHhDQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENBUk9OCisgICAgJ1x1MDE1MCcgICAjICAweENDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEUKKyAgICAnXHhkNScgICAgICMgIDB4Q0QgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCisgICAgJ1x1MDE1MScgICAjICAweENFIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9VQkxFIEFDVVRFCisgICAgJ1x1MDE0YycgICAjICAweENGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBNQUNST04KKyAgICAnXHUyMDEzJyAgICMgIDB4RDAgLT4gRU4gREFTSAorICAgICdcdTIwMTQnICAgIyAgMHhEMSAtPiBFTSBEQVNICisgICAgJ1x1MjAxYycgICAjICAweEQyIC0+IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxZCcgICAjICAweEQzIC0+IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMTgnICAgIyAgMHhENCAtPiBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMTknICAgIyAgMHhENSAtPiBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHhmNycgICAgICMgIDB4RDYgLT4gRElWSVNJT04gU0lHTgorICAgICdcdTI1Y2EnICAgIyAgMHhENyAtPiBMT1pFTkdFCisgICAgJ1x1MDE0ZCcgICAjICAweEQ4IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggTUFDUk9OCisgICAgJ1x1MDE1NCcgICAjICAweEQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBBQ1VURQorICAgICdcdTAxNTUnICAgIyAgMHhEQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIEFDVVRFCisgICAgJ1x1MDE1OCcgICAjICAweERCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBDQVJPTgorICAgICdcdTIwMzknICAgIyAgMHhEQyAtPiBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwM2EnICAgIyAgMHhERCAtPiBTSU5HTEUgUklHSFQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUwMTU5JyAgICMgIDB4REUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBDQVJPTgorICAgICdcdTAxNTYnICAgIyAgMHhERiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQ0VESUxMQQorICAgICdcdTAxNTcnICAgIyAgMHhFMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENFRElMTEEKKyAgICAnXHUwMTYwJyAgICMgIDB4RTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCisgICAgJ1x1MjAxYScgICAjICAweEUyIC0+IFNJTkdMRSBMT1ctOSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMWUnICAgIyAgMHhFMyAtPiBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUwMTYxJyAgICMgIDB4RTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgorICAgICdcdTAxNWEnICAgIyAgMHhFNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQUNVVEUKKyAgICAnXHUwMTViJyAgICMgIDB4RTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBBQ1VURQorICAgICdceGMxJyAgICAgIyAgMHhFNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKKyAgICAnXHUwMTY0JyAgICMgIDB4RTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENBUk9OCisgICAgJ1x1MDE2NScgICAjICAweEU5IC0+IExBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ0FST04KKyAgICAnXHhjZCcgICAgICMgIDB4RUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCisgICAgJ1x1MDE3ZCcgICAjICAweEVCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBDQVJPTgorICAgICdcdTAxN2UnICAgIyAgMHhFQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENBUk9OCisgICAgJ1x1MDE2YScgICAjICAweEVEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST04KKyAgICAnXHhkMycgICAgICMgIDB4RUUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCisgICAgJ1x4ZDQnICAgICAjICAweEVGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x1MDE2YicgICAjICAweEYwIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggTUFDUk9OCisgICAgJ1x1MDE2ZScgICAjICAweEYxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFCisgICAgJ1x4ZGEnICAgICAjICAweEYyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQorICAgICdcdTAxNmYnICAgIyAgMHhGMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIFJJTkcgQUJPVkUKKyAgICAnXHUwMTcwJyAgICMgIDB4RjQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERPVUJMRSBBQ1VURQorICAgICdcdTAxNzEnICAgIyAgMHhGNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERPVUJMRSBBQ1VURQorICAgICdcdTAxNzInICAgIyAgMHhGNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggT0dPTkVLCisgICAgJ1x1MDE3MycgICAjICAweEY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggT0dPTkVLCisgICAgJ1x4ZGQnICAgICAjICAweEY4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBBQ1VURQorICAgICdceGZkJyAgICAgIyAgMHhGOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCisgICAgJ1x1MDEzNycgICAjICAweEZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBLIFdJVEggQ0VESUxMQQorICAgICdcdTAxN2InICAgIyAgMHhGQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggRE9UIEFCT1ZFCisgICAgJ1x1MDE0MScgICAjICAweEZDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBTVFJPS0UKKyAgICAnXHUwMTdjJyAgICMgIDB4RkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKKyAgICAnXHUwMTIyJyAgICMgIDB4RkUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIENFRElMTEEKKyAgICAnXHUwMmM3JyAgICMgIDB4RkYgLT4gQ0FST04KKykKIAotZW5jb2RpbmdfbWFwID0gY29kZWNzLm1ha2VfZW5jb2RpbmdfbWFwKGRlY29kaW5nX21hcCkKKyMjIyBFbmNvZGluZyB0YWJsZQorZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL3BhbG1vcy5weSBiL0xpYi9lbmNvZGluZ3MvcGFsbW9zLnB5CmluZGV4IDRiNzdlMmIuLmM1MDZkNjUgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvcGFsbW9zLnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvcGFsbW9zLnB5CkBAIC0xMCwxOCArMTAsMTggQEAKIAogY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKICAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfbWFwKQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKIAogICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ19tYXApCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQogCiBjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX21hcClbMF0KKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KIAogY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ19tYXApWzBdCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCiAKIGNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgICBwYXNzCkBAIC00Miw0MiArNDIsMjY3IEBACiAgICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICAgKQogCi0jIyMgRGVjb2RpbmcgTWFwCiAKLWRlY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2lkZW50aXR5X2RpY3QocmFuZ2UoMjU2KSkKKyMjIyBEZWNvZGluZyBUYWJsZQogCi0jIFRoZSBQYWxtT1MgY2hhcmFjdGVyIHNldCBpcyBtb3N0bHkgaXNvLTg4NTktMSB3aXRoIHNvbWUgZGlmZmVyZW5jZXMuCi1kZWNvZGluZ19tYXAudXBkYXRlKHsKLSAgICAgICAgMHgwMDgwOiAweDIwYWMsICMgICAgICAgRVVSTyBTSUdOCi0gICAgICAgIDB4MDA4MjogMHgyMDFhLCAjICAgICAgIFNJTkdMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwODM6IDB4MDE5MiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKLSAgICAgICAgMHgwMDg0OiAweDIwMWUsICMgICAgICAgRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDA4NTogMHgyMDI2LCAjICAgICAgIEhPUklaT05UQUwgRUxMSVBTSVMKLSAgICAgICAgMHgwMDg2OiAweDIwMjAsICMgICAgICAgREFHR0VSCi0gICAgICAgIDB4MDA4NzogMHgyMDIxLCAjICAgICAgIERPVUJMRSBEQUdHRVIKLSAgICAgICAgMHgwMDg4OiAweDAyYzYsICMgICAgICAgTU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVggQUNDRU5UCi0gICAgICAgIDB4MDA4OTogMHgyMDMwLCAjICAgICAgIFBFUiBNSUxMRSBTSUdOCi0gICAgICAgIDB4MDA4YTogMHgwMTYwLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgotICAgICAgICAweDAwOGI6IDB4MjAzOSwgIyAgICAgICBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwOGM6IDB4MDE1MiwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIE9FCi0gICAgICAgIDB4MDA4ZDogMHgyNjY2LCAjICAgICAgIEJMQUNLIERJQU1PTkQgU1VJVAotICAgICAgICAweDAwOGU6IDB4MjY2MywgIyAgICAgICBCTEFDSyBDTFVCIFNVSVQKLSAgICAgICAgMHgwMDhmOiAweDI2NjUsICMgICAgICAgQkxBQ0sgSEVBUlQgU1VJVAotICAgICAgICAweDAwOTA6IDB4MjY2MCwgIyAgICAgICBCTEFDSyBTUEFERSBTVUlUCi0gICAgICAgIDB4MDA5MTogMHgyMDE4LCAjICAgICAgIExFRlQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDA5MjogMHgyMDE5LCAjICAgICAgIFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwOTM6IDB4MjAxYywgIyAgICAgICBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwOTQ6IDB4MjAxZCwgIyAgICAgICBSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDk1OiAweDIwMjIsICMgICAgICAgQlVMTEVUCi0gICAgICAgIDB4MDA5NjogMHgyMDEzLCAjICAgICAgIEVOIERBU0gKLSAgICAgICAgMHgwMDk3OiAweDIwMTQsICMgICAgICAgRU0gREFTSAotICAgICAgICAweDAwOTg6IDB4MDJkYywgIyAgICAgICBTTUFMTCBUSUxERQotICAgICAgICAweDAwOTk6IDB4MjEyMiwgIyAgICAgICBUUkFERSBNQVJLIFNJR04KLSAgICAgICAgMHgwMDlhOiAweDAxNjEsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgotICAgICAgICAweDAwOWM6IDB4MDE1MywgIyAgICAgICBMQVRJTiBTTUFMTCBMSUdBVFVSRSBPRQotICAgICAgICAweDAwOWY6IDB4MDE3OCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCi19KQorZGVjb2RpbmdfdGFibGUgPSAoCisgICAgJ1x4MDAnICAgICAjICAweDAwIC0+IE5VTEwKKyAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORworICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCisgICAgJ1x4MDMnICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUCisgICAgJ1x4MDQnICAgICAjICAweDA0IC0+IEVORCBPRiBUUkFOU01JU1NJT04KKyAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gRU5RVUlSWQorICAgICdceDA2JyAgICAgIyAgMHgwNiAtPiBBQ0tOT1dMRURHRQorICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBCRUxMCisgICAgJ1x4MDgnICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQorICAgICdcdCcgICAgICAgIyAgMHgwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KKyAgICAnXG4nICAgICAgICMgIDB4MEEgLT4gTElORSBGRUVECisgICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KKyAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gRk9STSBGRUVECisgICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgorICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKKyAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gU0hJRlQgSU4KKyAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQorICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKKyAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPCisgICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCisgICAgJ1x4MTQnICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKKyAgICAnXHgxNScgICAgICMgIDB4MTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKKyAgICAnXHgxNicgICAgICMgIDB4MTYgLT4gU1lOQ0hST05PVVMgSURMRQorICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCisgICAgJ1x4MTgnICAgICAjICAweDE4IC0+IENBTkNFTAorICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBFTkQgT0YgTUVESVVNCisgICAgJ1x4MWEnICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKKyAgICAnXHgxYicgICAgICMgIDB4MUIgLT4gRVNDQVBFCisgICAgJ1x4MWMnICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SCisgICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgorICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCisgICAgJ1x4MWYnICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SCisgICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCisgICAgJyEnICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKKyAgICAnIicgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKKyAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KKyAgICAnJCcgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KKyAgICAnJScgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCisgICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAorICAgICInIiAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCisgICAgJygnICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKKyAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKKyAgICAnKicgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKKyAgICAnKycgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCisgICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCisgICAgJy0nICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUworICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKKyAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUworICAgICcwJyAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCisgICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQorICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KKyAgICAnMycgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKKyAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgorICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCisgICAgJzYnICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAorICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgorICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAorICAgICc5JyAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCisgICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OCisgICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgorICAgICc8JyAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgorICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgorICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgorICAgICc/JyAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCisgICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKKyAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQorICAgICdCJyAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCisgICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKKyAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAorICAgICdFJyAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCisgICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKKyAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRworICAgICdIJyAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICisgICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKKyAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgorICAgICdLJyAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCisgICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKKyAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQorICAgICdOJyAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCisgICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KKyAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAorICAgICdRJyAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCisgICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKKyAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUworICAgICdUJyAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCisgICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKKyAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgorICAgICdXJyAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCisgICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKKyAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQorICAgICdaJyAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCisgICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKKyAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCisgICAgJ10nICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCisgICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCisgICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCisgICAgJ2AnICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAorICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQorICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgorICAgICdjJyAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQworICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAorICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQorICAgICdmJyAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgorICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRworICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAorICAgICdpJyAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQorICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgorICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSworICAgICdsJyAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAorICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQorICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgorICAgICdvJyAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTworICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAorICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQorICAgICdyJyAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgorICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUworICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAorICAgICd1JyAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQorICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgorICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVworICAgICd4JyAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAorICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQorICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgorICAgICd7JyAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKKyAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQorICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCisgICAgJ34nICAgICAgICAjICAweDdFIC0+IFRJTERFCisgICAgJ1x4N2YnICAgICAjICAweDdGIC0+IERFTEVURQorICAgICdcdTIwYWMnICAgIyAgMHg4MCAtPiBFVVJPIFNJR04KKyAgICAnXHg4MScgICAgICMgIDB4ODEgLT4gPGNvbnRyb2w+CisgICAgJ1x1MjAxYScgICAjICAweDgyIC0+IFNJTkdMRSBMT1ctOSBRVU9UQVRJT04gTUFSSworICAgICdcdTAxOTInICAgIyAgMHg4MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKKyAgICAnXHUyMDFlJyAgICMgIDB4ODQgLT4gRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAyNicgICAjICAweDg1IC0+IEhPUklaT05UQUwgRUxMSVBTSVMKKyAgICAnXHUyMDIwJyAgICMgIDB4ODYgLT4gREFHR0VSCisgICAgJ1x1MjAyMScgICAjICAweDg3IC0+IERPVUJMRSBEQUdHRVIKKyAgICAnXHUwMmM2JyAgICMgIDB4ODggLT4gTU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVggQUNDRU5UCisgICAgJ1x1MjAzMCcgICAjICAweDg5IC0+IFBFUiBNSUxMRSBTSUdOCisgICAgJ1x1MDE2MCcgICAjICAweDhBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgorICAgICdcdTIwMzknICAgIyAgMHg4QiAtPiBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTAxNTInICAgIyAgMHg4QyAtPiBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIE9FCisgICAgJ1x1MjY2NicgICAjICAweDhEIC0+IEJMQUNLIERJQU1PTkQgU1VJVAorICAgICdcdTI2NjMnICAgIyAgMHg4RSAtPiBCTEFDSyBDTFVCIFNVSVQKKyAgICAnXHUyNjY1JyAgICMgIDB4OEYgLT4gQkxBQ0sgSEVBUlQgU1VJVAorICAgICdcdTI2NjAnICAgIyAgMHg5MCAtPiBCTEFDSyBTUEFERSBTVUlUCisgICAgJ1x1MjAxOCcgICAjICAweDkxIC0+IExFRlQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxOScgICAjICAweDkyIC0+IFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMWMnICAgIyAgMHg5MyAtPiBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMWQnICAgIyAgMHg5NCAtPiBSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDIyJyAgICMgIDB4OTUgLT4gQlVMTEVUCisgICAgJ1x1MjAxMycgICAjICAweDk2IC0+IEVOIERBU0gKKyAgICAnXHUyMDE0JyAgICMgIDB4OTcgLT4gRU0gREFTSAorICAgICdcdTAyZGMnICAgIyAgMHg5OCAtPiBTTUFMTCBUSUxERQorICAgICdcdTIxMjInICAgIyAgMHg5OSAtPiBUUkFERSBNQVJLIFNJR04KKyAgICAnXHUwMTYxJyAgICMgIDB4OUEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgorICAgICdceDliJyAgICAgIyAgMHg5QiAtPiA8Y29udHJvbD4KKyAgICAnXHUwMTUzJyAgICMgIDB4OUMgLT4gTEFUSU4gU01BTEwgTElHQVRVUkUgT0UKKyAgICAnXHg5ZCcgICAgICMgIDB4OUQgLT4gPGNvbnRyb2w+CisgICAgJ1x4OWUnICAgICAjICAweDlFIC0+IDxjb250cm9sPgorICAgICdcdTAxNzgnICAgIyAgMHg5RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCisgICAgJ1x4YTAnICAgICAjICAweEEwIC0+IE5PLUJSRUFLIFNQQUNFCisgICAgJ1x4YTEnICAgICAjICAweEExIC0+IElOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUksKKyAgICAnXHhhMicgICAgICMgIDB4QTIgLT4gQ0VOVCBTSUdOCisgICAgJ1x4YTMnICAgICAjICAweEEzIC0+IFBPVU5EIFNJR04KKyAgICAnXHhhNCcgICAgICMgIDB4QTQgLT4gQ1VSUkVOQ1kgU0lHTgorICAgICdceGE1JyAgICAgIyAgMHhBNSAtPiBZRU4gU0lHTgorICAgICdceGE2JyAgICAgIyAgMHhBNiAtPiBCUk9LRU4gQkFSCisgICAgJ1x4YTcnICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgorICAgICdceGE4JyAgICAgIyAgMHhBOCAtPiBESUFFUkVTSVMKKyAgICAnXHhhOScgICAgICMgIDB4QTkgLT4gQ09QWVJJR0hUIFNJR04KKyAgICAnXHhhYScgICAgICMgIDB4QUEgLT4gRkVNSU5JTkUgT1JESU5BTCBJTkRJQ0FUT1IKKyAgICAnXHhhYicgICAgICMgIDB4QUIgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHhhYycgICAgICMgIDB4QUMgLT4gTk9UIFNJR04KKyAgICAnXHhhZCcgICAgICMgIDB4QUQgLT4gU09GVCBIWVBIRU4KKyAgICAnXHhhZScgICAgICMgIDB4QUUgLT4gUkVHSVNURVJFRCBTSUdOCisgICAgJ1x4YWYnICAgICAjICAweEFGIC0+IE1BQ1JPTgorICAgICdceGIwJyAgICAgIyAgMHhCMCAtPiBERUdSRUUgU0lHTgorICAgICdceGIxJyAgICAgIyAgMHhCMSAtPiBQTFVTLU1JTlVTIFNJR04KKyAgICAnXHhiMicgICAgICMgIDB4QjIgLT4gU1VQRVJTQ1JJUFQgVFdPCisgICAgJ1x4YjMnICAgICAjICAweEIzIC0+IFNVUEVSU0NSSVBUIFRIUkVFCisgICAgJ1x4YjQnICAgICAjICAweEI0IC0+IEFDVVRFIEFDQ0VOVAorICAgICdceGI1JyAgICAgIyAgMHhCNSAtPiBNSUNSTyBTSUdOCisgICAgJ1x4YjYnICAgICAjICAweEI2IC0+IFBJTENST1cgU0lHTgorICAgICdceGI3JyAgICAgIyAgMHhCNyAtPiBNSURETEUgRE9UCisgICAgJ1x4YjgnICAgICAjICAweEI4IC0+IENFRElMTEEKKyAgICAnXHhiOScgICAgICMgIDB4QjkgLT4gU1VQRVJTQ1JJUFQgT05FCisgICAgJ1x4YmEnICAgICAjICAweEJBIC0+IE1BU0NVTElORSBPUkRJTkFMIElORElDQVRPUgorICAgICdceGJiJyAgICAgIyAgMHhCQiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHhiYycgICAgICMgIDB4QkMgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCisgICAgJ1x4YmQnICAgICAjICAweEJEIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgorICAgICdceGJlJyAgICAgIyAgMHhCRSAtPiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMKKyAgICAnXHhiZicgICAgICMgIDB4QkYgLT4gSU5WRVJURUQgUVVFU1RJT04gTUFSSworICAgICdceGMwJyAgICAgIyAgMHhDMCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKKyAgICAnXHhjMScgICAgICMgIDB4QzEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCisgICAgJ1x4YzInICAgICAjICAweEMyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4YzMnICAgICAjICAweEMzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBUSUxERQorICAgICdceGM0JyAgICAgIyAgMHhDNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCisgICAgJ1x4YzUnICAgICAjICAweEM1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCisgICAgJ1x4YzYnICAgICAjICAweEM2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEFFCisgICAgJ1x4YzcnICAgICAjICAweEM3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCisgICAgJ1x4YzgnICAgICAjICAweEM4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRQorICAgICdceGM5JyAgICAgIyAgMHhDOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKKyAgICAnXHhjYScgICAgICMgIDB4Q0EgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhjYicgICAgICMgIDB4Q0IgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUworICAgICdceGNjJyAgICAgIyAgMHhDQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKKyAgICAnXHhjZCcgICAgICMgIDB4Q0QgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCisgICAgJ1x4Y2UnICAgICAjICAweENFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4Y2YnICAgICAjICAweENGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhkMCcgICAgICMgIDB4RDAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRVRIIChJY2VsYW5kaWMpCisgICAgJ1x4ZDEnICAgICAjICAweEQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQorICAgICdceGQyJyAgICAgIyAgMHhEMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkUKKyAgICAnXHhkMycgICAgICMgIDB4RDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCisgICAgJ1x4ZDQnICAgICAjICAweEQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZDUnICAgICAjICAweEQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQorICAgICdceGQ2JyAgICAgIyAgMHhENiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZDcnICAgICAjICAweEQ3IC0+IE1VTFRJUExJQ0FUSU9OIFNJR04KKyAgICAnXHhkOCcgICAgICMgIDB4RDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQorICAgICdceGQ5JyAgICAgIyAgMHhEOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKKyAgICAnXHhkYScgICAgICMgIDB4REEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCisgICAgJ1x4ZGInICAgICAjICAweERCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZGMnICAgICAjICAweERDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhkZCcgICAgICMgIDB4REQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCisgICAgJ1x4ZGUnICAgICAjICAweERFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFRIT1JOIChJY2VsYW5kaWMpCisgICAgJ1x4ZGYnICAgICAjICAweERGIC0+IExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTIChHZXJtYW4pCisgICAgJ1x4ZTAnICAgICAjICAweEUwIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKKyAgICAnXHhlMScgICAgICMgIDB4RTEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQorICAgICdceGUyJyAgICAgIyAgMHhFMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhlMycgICAgICMgIDB4RTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQorICAgICdceGU0JyAgICAgIyAgMHhFNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUworICAgICdceGU1JyAgICAgIyAgMHhFNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKKyAgICAnXHhlNicgICAgICMgIDB4RTYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEFFCisgICAgJ1x4ZTcnICAgICAjICAweEU3IC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQorICAgICdceGU4JyAgICAgIyAgMHhFOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCisgICAgJ1x4ZTknICAgICAjICAweEU5IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKKyAgICAnXHhlYScgICAgICMgIDB4RUEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZWInICAgICAjICAweEVCIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZWMnICAgICAjICAweEVDIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKKyAgICAnXHhlZCcgICAgICMgIDB4RUQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQorICAgICdceGVlJyAgICAgIyAgMHhFRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhlZicgICAgICMgIDB4RUYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhmMCcgICAgICMgIDB4RjAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEVUSCAoSWNlbGFuZGljKQorICAgICdceGYxJyAgICAgIyAgMHhGMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCisgICAgJ1x4ZjInICAgICAjICAweEYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggR1JBVkUKKyAgICAnXHhmMycgICAgICMgIDB4RjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQorICAgICdceGY0JyAgICAgIyAgMHhGNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhmNScgICAgICMgIDB4RjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERQorICAgICdceGY2JyAgICAgIyAgMHhGNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUworICAgICdceGY3JyAgICAgIyAgMHhGNyAtPiBESVZJU0lPTiBTSUdOCisgICAgJ1x4ZjgnICAgICAjICAweEY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFCisgICAgJ1x4ZjknICAgICAjICAweEY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkUKKyAgICAnXHhmYScgICAgICMgIDB4RkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQorICAgICdceGZiJyAgICAgIyAgMHhGQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhmYycgICAgICMgIDB4RkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhmZCcgICAgICMgIDB4RkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQorICAgICdceGZlJyAgICAgIyAgMHhGRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVEhPUk4gKEljZWxhbmRpYykKKyAgICAnXHhmZicgICAgICMgIDB4RkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKKykKIAotIyMjIEVuY29kaW5nIE1hcAotCi1lbmNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9lbmNvZGluZ19tYXAoZGVjb2RpbmdfbWFwKQorIyMjIEVuY29kaW5nIHRhYmxlCitlbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvcHRjcDE1NC5weSBiL0xpYi9lbmNvZGluZ3MvcHRjcDE1NC5weQppbmRleCBhZWY4OTc1Li42NTZiNzlkIDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL3B0Y3AxNTQucHkKKysrIGIvTGliL2VuY29kaW5ncy9wdGNwMTU0LnB5CkBAIC0xNCwxOCArMTQsMTggQEAKIGNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CiAKICAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfbWFwKQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKIAogICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ19tYXApCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQogCiBjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX21hcClbMF0KKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KIAogY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ19tYXApWzBdCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCiAKIGNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgICBwYXNzCkBAIC00NiwxMzAgKzQ2LDI2NyBAQAogICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgICkKIAotIyMjIERlY29kaW5nIE1hcAogCi1kZWNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9pZGVudGl0eV9kaWN0KHJhbmdlKDI1NikpCi1kZWNvZGluZ19tYXAudXBkYXRlKHsKLSAgICAgICAgMHgwMDgwOiAweDA0OTYsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwODE6IDB4MDQ5MiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFIFdJVEggU1RST0tFCi0gICAgICAgIDB4MDA4MjogMHgwNGVlLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDA4MzogMHgwNDkzLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFIFdJVEggU1RST0tFCi0gICAgICAgIDB4MDA4NDogMHgyMDFlLCAjICAgICAgICBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDg1OiAweDIwMjYsICMgICAgICAgIEhPUklaT05UQUwgRUxMSVBTSVMKLSAgICAgICAgMHgwMDg2OiAweDA0YjYsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwODc6IDB4MDRhZSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU1RSQUlHSFQgVQotICAgICAgICAweDAwODg6IDB4MDRiMiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEEgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDg5OiAweDA0YWYsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBTVFJBSUdIVCBVCi0gICAgICAgIDB4MDA4YTogMHgwNGEwLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVNIS0lSIEtBCi0gICAgICAgIDB4MDA4YjogMHgwNGUyLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDA4YzogMHgwNGEyLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTiBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwOGQ6IDB4MDQ5YSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDhlOiAweDA0YmEsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNISEEKLSAgICAgICAgMHgwMDhmOiAweDA0YjgsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQotICAgICAgICAweDAwOTA6IDB4MDQ5NywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwOTE6IDB4MjAxOCwgIyAgICAgICAgTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDkyOiAweDIwMTksICMgICAgICAgIFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwOTM6IDB4MjAxYywgIyAgICAgICAgTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDk0OiAweDIwMWQsICMgICAgICAgIFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwOTU6IDB4MjAyMiwgIyAgICAgICAgQlVMTEVUCi0gICAgICAgIDB4MDA5NjogMHgyMDEzLCAjICAgICAgICBFTiBEQVNICi0gICAgICAgIDB4MDA5NzogMHgyMDE0LCAjICAgICAgICBFTSBEQVNICi0gICAgICAgIDB4MDA5ODogMHgwNGIzLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDk5OiAweDA0YjcsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDlhOiAweDA0YTEsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBCQVNIS0lSIEtBCi0gICAgICAgIDB4MDA5YjogMHgwNGUzLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwOWM6IDB4MDRhMywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDA5ZDogMHgwNDliLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDllOiAweDA0YmIsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBTSEhBCi0gICAgICAgIDB4MDA5ZjogMHgwNGI5LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggVkVSVElDQUwgU1RST0tFCi0gICAgICAgIDB4MDBhMTogMHgwNDBlLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBVIChCeWVsb3J1c3NpYW4pCi0gICAgICAgIDB4MDBhMjogMHgwNDVlLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgVSAoQnllbG9ydXNzaWFuKQotICAgICAgICAweDAwYTM6IDB4MDQwOCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSkUKLSAgICAgICAgMHgwMGE0OiAweDA0ZTgsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEJBUlJFRCBPCi0gICAgICAgIDB4MDBhNTogMHgwNDk4LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwYTY6IDB4MDRiMCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU1RSQUlHSFQgVSBXSVRIIFNUUk9LRQotICAgICAgICAweDAwYTg6IDB4MDQwMSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU8KLSAgICAgICAgMHgwMGFhOiAweDA0ZDgsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNDSFdBCi0gICAgICAgIDB4MDBhZDogMHgwNGVmLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwYWY6IDB4MDQ5YywgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBWRVJUSUNBTCBTVFJPS0UKLSAgICAgICAgMHgwMGIxOiAweDA0YjEsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBTVFJBSUdIVCBVIFdJVEggU1RST0tFCi0gICAgICAgIDB4MDBiMjogMHgwNDA2LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKLSAgICAgICAgMHgwMGIzOiAweDA0NTYsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKLSAgICAgICAgMHgwMGI0OiAweDA0OTksICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBaRSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwYjU6IDB4MDRlOSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJBUlJFRCBPCi0gICAgICAgIDB4MDBiODogMHgwNDUxLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSU8KLSAgICAgICAgMHgwMGI5OiAweDIxMTYsICMgICAgICAgIE5VTUVSTyBTSUdOCi0gICAgICAgIDB4MDBiYTogMHgwNGQ5LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0NIV0EKLSAgICAgICAgMHgwMGJjOiAweDA0NTgsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBKRQotICAgICAgICAweDAwYmQ6IDB4MDRhYSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMGJlOiAweDA0YWIsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBFUyBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwYmY6IDB4MDQ5ZCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggVkVSVElDQUwgU1RST0tFCi0gICAgICAgIDB4MDBjMDogMHgwNDEwLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBCi0gICAgICAgIDB4MDBjMTogMHgwNDExLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRQotICAgICAgICAweDAwYzI6IDB4MDQxMiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVkUKLSAgICAgICAgMHgwMGMzOiAweDA0MTMsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRQotICAgICAgICAweDAwYzQ6IDB4MDQxNCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREUKLSAgICAgICAgMHgwMGM1OiAweDA0MTUsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIElFCi0gICAgICAgIDB4MDBjNjogMHgwNDE2LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUKLSAgICAgICAgMHgwMGM3OiAweDA0MTcsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFCi0gICAgICAgIDB4MDBjODogMHgwNDE4LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJCi0gICAgICAgIDB4MDBjOTogMHgwNDE5LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBJCi0gICAgICAgIDB4MDBjYTogMHgwNDFhLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQQotICAgICAgICAweDAwY2I6IDB4MDQxYiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUwKLSAgICAgICAgMHgwMGNjOiAweDA0MWMsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVNCi0gICAgICAgIDB4MDBjZDogMHgwNDFkLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTgotICAgICAgICAweDAwY2U6IDB4MDQxZSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTwotICAgICAgICAweDAwY2Y6IDB4MDQxZiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUEUKLSAgICAgICAgMHgwMGQwOiAweDA0MjAsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVSCi0gICAgICAgIDB4MDBkMTogMHgwNDIxLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUwotICAgICAgICAweDAwZDI6IDB4MDQyMiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEUKLSAgICAgICAgMHgwMGQzOiAweDA0MjMsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFUKLSAgICAgICAgMHgwMGQ0OiAweDA0MjQsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVGCi0gICAgICAgIDB4MDBkNTogMHgwNDI1LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQQotICAgICAgICAweDAwZDY6IDB4MDQyNiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNFCi0gICAgICAgIDB4MDBkNzogMHgwNDI3LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUKLSAgICAgICAgMHgwMGQ4OiAweDA0MjgsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQQotICAgICAgICAweDAwZDk6IDB4MDQyOSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hDSEEKLSAgICAgICAgMHgwMGRhOiAweDA0MmEsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBUkQgU0lHTgotICAgICAgICAweDAwZGI6IDB4MDQyYiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUVSVQotICAgICAgICAweDAwZGM6IDB4MDQyYywgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU09GVCBTSUdOCi0gICAgICAgIDB4MDBkZDogMHgwNDJkLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFCi0gICAgICAgIDB4MDBkZTogMHgwNDJlLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZVQotICAgICAgICAweDAwZGY6IDB4MDQyZiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUEKLSAgICAgICAgMHgwMGUwOiAweDA0MzAsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBBCi0gICAgICAgIDB4MDBlMTogMHgwNDMxLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKLSAgICAgICAgMHgwMGUyOiAweDA0MzIsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBWRQotICAgICAgICAweDAwZTM6IDB4MDQzMywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRQotICAgICAgICAweDAwZTQ6IDB4MDQzNCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERFCi0gICAgICAgIDB4MDBlNTogMHgwNDM1LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKLSAgICAgICAgMHgwMGU2OiAweDA0MzYsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUKLSAgICAgICAgMHgwMGU3OiAweDA0MzcsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBaRQotICAgICAgICAweDAwZTg6IDB4MDQzOCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKLSAgICAgICAgMHgwMGU5OiAweDA0MzksICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCi0gICAgICAgIDB4MDBlYTogMHgwNDNhLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKLSAgICAgICAgMHgwMGViOiAweDA0M2IsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBFTAotICAgICAgICAweDAwZWM6IDB4MDQzYywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCi0gICAgICAgIDB4MDBlZDogMHgwNDNkLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KLSAgICAgICAgMHgwMGVlOiAweDA0M2UsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBPCi0gICAgICAgIDB4MDBlZjogMHgwNDNmLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUKLSAgICAgICAgMHgwMGYwOiAweDA0NDAsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBFUgotICAgICAgICAweDAwZjE6IDB4MDQ0MSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCi0gICAgICAgIDB4MDBmMjogMHgwNDQyLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUKLSAgICAgICAgMHgwMGYzOiAweDA0NDMsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBVCi0gICAgICAgIDB4MDBmNDogMHgwNDQ0LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUYKLSAgICAgICAgMHgwMGY1OiAweDA0NDUsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBIQQotICAgICAgICAweDAwZjY6IDB4MDQ0NiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRTRQotICAgICAgICAweDAwZjc6IDB4MDQ0NywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRQotICAgICAgICAweDAwZjg6IDB4MDQ0OCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQQotICAgICAgICAweDAwZjk6IDB4MDQ0OSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQ0hBCi0gICAgICAgIDB4MDBmYTogMHgwNDRhLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEFSRCBTSUdOCi0gICAgICAgIDB4MDBmYjogMHgwNDRiLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUVSVQotICAgICAgICAweDAwZmM6IDB4MDQ0YywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNPRlQgU0lHTgotICAgICAgICAweDAwZmQ6IDB4MDQ0ZCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEUKLSAgICAgICAgMHgwMGZlOiAweDA0NGUsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBZVQotICAgICAgICAweDAwZmY6IDB4MDQ0ZiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBCi19KQorIyMjIERlY29kaW5nIFRhYmxlCiAKLSMjIyBFbmNvZGluZyBNYXAKK2RlY29kaW5nX3RhYmxlID0gKAorICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCisgICAgJ1x4MDEnICAgICAjICAweDAxIC0+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+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQorICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUgKERFTCkKKyAgICAnXHUwNDk2JyAgICMgIDB4ODAgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDQ5MicgICAjICAweDgxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRQorICAgICdcdTA0ZWUnICAgIyAgMHg4MiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OCisgICAgJ1x1MDQ5MycgICAjICAweDgzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUgV0lUSCBTVFJPS0UKKyAgICAnXHUyMDFlJyAgICMgIDB4ODQgLT4gRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAyNicgICAjICAweDg1IC0+IEhPUklaT05UQUwgRUxMSVBTSVMKKyAgICAnXHUwNGI2JyAgICMgIDB4ODYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRhZScgICAjICAweDg3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUKKyAgICAnXHUwNGIyJyAgICMgIDB4ODggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEEgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGFmJyAgICMgIDB4ODkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNUUkFJR0hUIFUKKyAgICAnXHUwNGEwJyAgICMgIDB4OEEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkFTSEtJUiBLQQorICAgICdcdTA0ZTInICAgIyAgMHg4QiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJIFdJVEggTUFDUk9OCisgICAgJ1x1MDRhMicgICAjICAweDhDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVOIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDQ5YScgICAjICAweDhEIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRiYScgICAjICAweDhFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNISEEKKyAgICAnXHUwNGI4JyAgICMgIDB4OEYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggVkVSVElDQUwgU1RST0tFCisgICAgJ1x1MDQ5NycgICAjICAweDkwIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUyMDE4JyAgICMgIDB4OTEgLT4gTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDE5JyAgICMgIDB4OTIgLT4gUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxYycgICAjICAweDkzIC0+IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxZCcgICAjICAweDk0IC0+IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMjInICAgIyAgMHg5NSAtPiBCVUxMRVQKKyAgICAnXHUyMDEzJyAgICMgIDB4OTYgLT4gRU4gREFTSAorICAgICdcdTIwMTQnICAgIyAgMHg5NyAtPiBFTSBEQVNICisgICAgJ1x1MDRiMycgICAjICAweDk4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YjcnICAgIyAgMHg5OSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRhMScgICAjICAweDlBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCQVNIS0lSIEtBCisgICAgJ1x1MDRlMycgICAjICAweDlCIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJIFdJVEggTUFDUk9OCisgICAgJ1x1MDRhMycgICAjICAweDlDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTiBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0OWInICAgIyAgMHg5RCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGJiJyAgICMgIDB4OUUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNISEEKKyAgICAnXHUwNGI5JyAgICMgIDB4OUYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQorICAgICdceGEwJyAgICAgIyAgMHhBMCAtPiBOTy1CUkVBSyBTUEFDRQorICAgICdcdTA0MGUnICAgIyAgMHhBMSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBVIChCeWVsb3J1c3NpYW4pCisgICAgJ1x1MDQ1ZScgICAjICAweEEyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBVIChCeWVsb3J1c3NpYW4pCisgICAgJ1x1MDQwOCcgICAjICAweEEzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEpFCisgICAgJ1x1MDRlOCcgICAjICAweEE0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEJBUlJFRCBPCisgICAgJ1x1MDQ5OCcgICAjICAweEE1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRiMCcgICAjICAweEE2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUgV0lUSCBTVFJPS0UKKyAgICAnXHhhNycgICAgICMgIDB4QTcgLT4gU0VDVElPTiBTSUdOCisgICAgJ1x1MDQwMScgICAjICAweEE4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIElPCisgICAgJ1x4YTknICAgICAjICAweEE5IC0+IENPUFlSSUdIVCBTSUdOCisgICAgJ1x1MDRkOCcgICAjICAweEFBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNDSFdBCisgICAgJ1x4YWInICAgICAjICAweEFCIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x4YWMnICAgICAjICAweEFDIC0+IE5PVCBTSUdOCisgICAgJ1x1MDRlZicgICAjICAweEFEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBVIFdJVEggTUFDUk9OCisgICAgJ1x4YWUnICAgICAjICAweEFFIC0+IFJFR0lTVEVSRUQgU0lHTgorICAgICdcdTA0OWMnICAgIyAgMHhBRiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQorICAgICdceGIwJyAgICAgIyAgMHhCMCAtPiBERUdSRUUgU0lHTgorICAgICdcdTA0YjEnICAgIyAgMHhCMSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU1RSQUlHSFQgVSBXSVRIIFNUUk9LRQorICAgICdcdTA0MDYnICAgIyAgMHhCMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKKyAgICAnXHUwNDU2JyAgICMgIDB4QjMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSQorICAgICdcdTA0OTknICAgIyAgMHhCNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGU5JyAgICMgIDB4QjUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJBUlJFRCBPCisgICAgJ1x4YjYnICAgICAjICAweEI2IC0+IFBJTENST1cgU0lHTgorICAgICdceGI3JyAgICAgIyAgMHhCNyAtPiBNSURETEUgRE9UCisgICAgJ1x1MDQ1MScgICAjICAweEI4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJTworICAgICdcdTIxMTYnICAgIyAgMHhCOSAtPiBOVU1FUk8gU0lHTgorICAgICdcdTA0ZDknICAgIyAgMHhCQSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0NIV0EKKyAgICAnXHhiYicgICAgICMgIDB4QkIgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MDQ1OCcgICAjICAweEJDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBKRQorICAgICdcdTA0YWEnICAgIyAgMHhCRCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUyBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YWInICAgIyAgMHhCRSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNDlkJyAgICMgIDB4QkYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggVkVSVElDQUwgU1RST0tFCisgICAgJ1x1MDQxMCcgICAjICAweEMwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEEKKyAgICAnXHUwNDExJyAgICMgIDB4QzEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkUKKyAgICAnXHUwNDEyJyAgICMgIDB4QzIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVkUKKyAgICAnXHUwNDEzJyAgICMgIDB4QzMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCisgICAgJ1x1MDQxNCcgICAjICAweEM0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIERFCisgICAgJ1x1MDQxNScgICAjICAweEM1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIElFCisgICAgJ1x1MDQxNicgICAjICAweEM2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQorICAgICdcdTA0MTcnICAgIyAgMHhDNyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRQorICAgICdcdTA0MTgnICAgIyAgMHhDOCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJCisgICAgJ1x1MDQxOScgICAjICAweEM5IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkKKyAgICAnXHUwNDFhJyAgICMgIDB4Q0EgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EKKyAgICAnXHUwNDFiJyAgICMgIDB4Q0IgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUwKKyAgICAnXHUwNDFjJyAgICMgIDB4Q0MgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KKyAgICAnXHUwNDFkJyAgICMgIDB4Q0QgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4KKyAgICAnXHUwNDFlJyAgICMgIDB4Q0UgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTworICAgICdcdTA0MWYnICAgIyAgMHhDRiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQorICAgICdcdTA0MjAnICAgIyAgMHhEMCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUgorICAgICdcdTA0MjEnICAgIyAgMHhEMSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUworICAgICdcdTA0MjInICAgIyAgMHhEMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURQorICAgICdcdTA0MjMnICAgIyAgMHhEMyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVCisgICAgJ1x1MDQyNCcgICAjICAweEQ0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVGCisgICAgJ1x1MDQyNScgICAjICAweEQ1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCisgICAgJ1x1MDQyNicgICAjICAweEQ2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFRTRQorICAgICdcdTA0MjcnICAgIyAgMHhENyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUKKyAgICAnXHUwNDI4JyAgICMgIDB4RDggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCisgICAgJ1x1MDQyOScgICAjICAweEQ5IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQ0hBCisgICAgJ1x1MDQyYScgICAjICAweERBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBUkQgU0lHTgorICAgICdcdTA0MmInICAgIyAgMHhEQiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCisgICAgJ1x1MDQyYycgICAjICAweERDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNPRlQgU0lHTgorICAgICdcdTA0MmQnICAgIyAgMHhERCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFCisgICAgJ1x1MDQyZScgICAjICAweERFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlVCisgICAgJ1x1MDQyZicgICAjICAweERGIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlBCisgICAgJ1x1MDQzMCcgICAjICAweEUwIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBBCisgICAgJ1x1MDQzMScgICAjICAweEUxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCRQorICAgICdcdTA0MzInICAgIyAgMHhFMiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVkUKKyAgICAnXHUwNDMzJyAgICMgIDB4RTMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRQorICAgICdcdTA0MzQnICAgIyAgMHhFNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKKyAgICAnXHUwNDM1JyAgICMgIDB4RTUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCisgICAgJ1x1MDQzNicgICAjICAweEU2IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUKKyAgICAnXHUwNDM3JyAgICMgIDB4RTcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCisgICAgJ1x1MDQzOCcgICAjICAweEU4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJCisgICAgJ1x1MDQzOScgICAjICAweEU5IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCisgICAgJ1x1MDQzYScgICAjICAweEVBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQQorICAgICdcdTA0M2InICAgIyAgMHhFQiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKKyAgICAnXHUwNDNjJyAgICMgIDB4RUMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCisgICAgJ1x1MDQzZCcgICAjICAweEVEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTgorICAgICdcdTA0M2UnICAgIyAgMHhFRSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgTworICAgICdcdTA0M2YnICAgIyAgMHhFRiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUKKyAgICAnXHUwNDQwJyAgICMgIDB4RjAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCisgICAgJ1x1MDQ0MScgICAjICAweEYxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFUworICAgICdcdTA0NDInICAgIyAgMHhGMiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUKKyAgICAnXHUwNDQzJyAgICMgIDB4RjMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKKyAgICAnXHUwNDQ0JyAgICMgIDB4RjQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVGCisgICAgJ1x1MDQ0NScgICAjICAweEY1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQQorICAgICdcdTA0NDYnICAgIyAgMHhGNiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNFCisgICAgJ1x1MDQ0NycgICAjICAweEY3IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUKKyAgICAnXHUwNDQ4JyAgICMgIDB4RjggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQQorICAgICdcdTA0NDknICAgIyAgMHhGOSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hDSEEKKyAgICAnXHUwNDRhJyAgICMgIDB4RkEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBUkQgU0lHTgorICAgICdcdTA0NGInICAgIyAgMHhGQiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUVSVQorICAgICdcdTA0NGMnICAgIyAgMHhGQyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU09GVCBTSUdOCisgICAgJ1x1MDQ0ZCcgICAjICAweEZEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFCisgICAgJ1x1MDQ0ZScgICAjICAweEZFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZVQorICAgICdcdTA0NGYnICAgIyAgMHhGRiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUEKKykKIAotZW5jb2RpbmdfbWFwID0gY29kZWNzLm1ha2VfZW5jb2RpbmdfbWFwKGRlY29kaW5nX21hcCkKKyMjIyBFbmNvZGluZyB0YWJsZQorZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpCmRpZmYgLS1naXQgYS9MaWIvZmlsZWlucHV0LnB5IGIvTGliL2ZpbGVpbnB1dC5weQppbmRleCA1NTRiZWIyLi5kYmJiYjIxIDEwMDY0NAotLS0gYS9MaWIvZmlsZWlucHV0LnB5CisrKyBiL0xpYi9maWxlaW5wdXQucHkKQEAgLTM5OCw5ICszOTgsOCBAQAogCiAKIGRlZiBob29rX2VuY29kZWQoZW5jb2RpbmcpOgotICAgIGltcG9ydCBjb2RlY3MKICAgICBkZWYgb3Blbmhvb2soZmlsZW5hbWUsIG1vZGUpOgotICAgICAgICByZXR1cm4gY29kZWNzLm9wZW4oZmlsZW5hbWUsIG1vZGUsIGVuY29kaW5nKQorICAgICAgICByZXR1cm4gb3BlbihmaWxlbmFtZSwgbW9kZSwgZW5jb2Rpbmc9ZW5jb2RpbmcpCiAgICAgcmV0dXJuIG9wZW5ob29rCiAKIApkaWZmIC0tZ2l0IGEvTGliL2ZubWF0Y2gucHkgYi9MaWIvZm5tYXRjaC5weQppbmRleCA3MjZmYmU1Li42MzMwYjBjIDEwMDY0NAotLS0gYS9MaWIvZm5tYXRjaC5weQorKysgYi9MaWIvZm5tYXRjaC5weQpAQCAtMzUsOSArMzUsOSBAQAogICAgIHBhdCA9IG9zLnBhdGgubm9ybWNhc2UocGF0KQogICAgIHJldHVybiBmbm1hdGNoY2FzZShuYW1lLCBwYXQpCiAKLUBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9MjUwKQotZGVmIF9jb21waWxlX3BhdHRlcm4ocGF0LCBpc19ieXRlcz1GYWxzZSk6Ci0gICAgaWYgaXNfYnl0ZXM6CitAZnVuY3Rvb2xzLmxydV9jYWNoZShtYXhzaXplPTI1NiwgdHlwZWQ9VHJ1ZSkKK2RlZiBfY29tcGlsZV9wYXR0ZXJuKHBhdCk6CisgICAgaWYgaXNpbnN0YW5jZShwYXQsIGJ5dGVzKToKICAgICAgICAgcGF0X3N0ciA9IHN0cihwYXQsICdJU08tODg1OS0xJykKICAgICAgICAgcmVzX3N0ciA9IHRyYW5zbGF0ZShwYXRfc3RyKQogICAgICAgICByZXMgPSBieXRlcyhyZXNfc3RyLCAnSVNPLTg4NTktMScpCkBAIC00OSw3ICs0OSw3IEBACiAgICAgIiIiUmV0dXJuIHRoZSBzdWJzZXQgb2YgdGhlIGxpc3QgTkFNRVMgdGhhdCBtYXRjaCBQQVQuIiIiCiAgICAgcmVzdWx0ID0gW10KICAgICBwYXQgPSBvcy5wYXRoLm5vcm1jYXNlKHBhdCkKLSAgICBtYXRjaCA9IF9jb21waWxlX3BhdHRlcm4ocGF0LCBpc2luc3RhbmNlKHBhdCwgYnl0ZXMpKQorICAgIG1hdGNoID0gX2NvbXBpbGVfcGF0dGVybihwYXQpCiAgICAgaWYgb3MucGF0aCBpcyBwb3NpeHBhdGg6CiAgICAgICAgICMgbm9ybWNhc2Ugb24gcG9zaXggaXMgTk9QLiBPcHRpbWl6ZSBpdCBhd2F5IGZyb20gdGhlIGxvb3AuCiAgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgpAQCAtNjcsNyArNjcsNyBAQAogICAgIFRoaXMgaXMgYSB2ZXJzaW9uIG9mIGZubWF0Y2goKSB3aGljaCBkb2Vzbid0IGNhc2Utbm9ybWFsaXplCiAgICAgaXRzIGFyZ3VtZW50cy4KICAgICAiIiIKLSAgICBtYXRjaCA9IF9jb21waWxlX3BhdHRlcm4ocGF0LCBpc2luc3RhbmNlKHBhdCwgYnl0ZXMpKQorICAgIG1hdGNoID0gX2NvbXBpbGVfcGF0dGVybihwYXQpCiAgICAgcmV0dXJuIG1hdGNoKG5hbWUpIGlzIG5vdCBOb25lCiAKIApkaWZmIC0tZ2l0IGEvTGliL2Z0cGxpYi5weSBiL0xpYi9mdHBsaWIucHkKaW5kZXggOGI3MzNjZi4uNzQxZTY0NyAxMDA2NDQKLS0tIGEvTGliL2Z0cGxpYi5weQorKysgYi9MaWIvZnRwbGliLnB5CkBAIC0xMDAsMTQgKzEwMCwxNSBAQAogICAgIGZpbGUgPSBOb25lCiAgICAgd2VsY29tZSA9IE5vbmUKICAgICBwYXNzaXZlc2VydmVyID0gMQotICAgIGVuY29kaW5nID0gImxhdGluMSIKKyAgICBlbmNvZGluZyA9ICJsYXRpbi0xIgogCiAgICAgIyBJbml0aWFsaXphdGlvbiBtZXRob2QgKGNhbGxlZCBieSBjbGFzcyBpbnN0YW50aWF0aW9uKS4KICAgICAjIEluaXRpYWxpemUgaG9zdCB0byBsb2NhbGhvc3QsIHBvcnQgdG8gc3RhbmRhcmQgZnRwIHBvcnQKICAgICAjIE9wdGlvbmFsIGFyZ3VtZW50cyBhcmUgaG9zdCAoZm9yIGNvbm5lY3QoKSksCiAgICAgIyBhbmQgdXNlciwgcGFzc3dkLCBhY2N0IChmb3IgbG9naW4oKSkKICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nJywgdXNlcj0nJywgcGFzc3dkPScnLCBhY2N0PScnLAotICAgICAgICAgICAgICAgICB0aW1lb3V0PV9HTE9CQUxfREVGQVVMVF9USU1FT1VUKToKKyAgICAgICAgICAgICAgICAgdGltZW91dD1fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwgc291cmNlX2FkZHJlc3M9Tm9uZSk6CisgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MgPSBzb3VyY2VfYWRkcmVzcwogICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CiAgICAgICAgIGlmIGhvc3Q6CiAgICAgICAgICAgICBzZWxmLmNvbm5lY3QoaG9zdCkKQEAgLTEyOCwxMCArMTI5LDEyIEBACiAgICAgICAgICAgICAgICAgaWYgc2VsZi5zb2NrIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAotICAgIGRlZiBjb25uZWN0KHNlbGYsIGhvc3Q9JycsIHBvcnQ9MCwgdGltZW91dD0tOTk5KToKKyAgICBkZWYgY29ubmVjdChzZWxmLCBob3N0PScnLCBwb3J0PTAsIHRpbWVvdXQ9LTk5OSwgc291cmNlX2FkZHJlc3M9Tm9uZSk6CiAgICAgICAgICcnJ0Nvbm5lY3QgdG8gaG9zdC4gIEFyZ3VtZW50cyBhcmU6CiAgICAgICAgICAtIGhvc3Q6IGhvc3RuYW1lIHRvIGNvbm5lY3QgdG8gKHN0cmluZywgZGVmYXVsdCBwcmV2aW91cyBob3N0KQogICAgICAgICAgLSBwb3J0OiBwb3J0IHRvIGNvbm5lY3QgdG8gKGludGVnZXIsIGRlZmF1bHQgcHJldmlvdXMgcG9ydCkKKyAgICAgICAgIC0gc291cmNlX2FkZHJlc3M6IGEgMi10dXBsZSAoaG9zdCwgcG9ydCkgZm9yIHRoZSBzb2NrZXQgdG8gYmluZAorICAgICAgICAgICB0byBhcyBpdHMgc291cmNlIGFkZHJlc3MgYmVmb3JlIGNvbm5lY3RpbmcuCiAgICAgICAgICcnJwogICAgICAgICBpZiBob3N0ICE9ICcnOgogICAgICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdApAQCAtMTM5LDcgKzE0MiwxMCBAQAogICAgICAgICAgICAgc2VsZi5wb3J0ID0gcG9ydAogICAgICAgICBpZiB0aW1lb3V0ICE9IC05OTk6CiAgICAgICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0Ci0gICAgICAgIHNlbGYuc29jayA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoc2VsZi5ob3N0LCBzZWxmLnBvcnQpLCBzZWxmLnRpbWVvdXQpCisgICAgICAgIGlmIHNvdXJjZV9hZGRyZXNzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5zb3VyY2VfYWRkcmVzcyA9IHNvdXJjZV9hZGRyZXNzCisgICAgICAgIHNlbGYuc29jayA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoc2VsZi5ob3N0LCBzZWxmLnBvcnQpLCBzZWxmLnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1zZWxmLnNvdXJjZV9hZGRyZXNzKQogICAgICAgICBzZWxmLmFmID0gc2VsZi5zb2NrLmZhbWlseQogICAgICAgICBzZWxmLmZpbGUgPSBzZWxmLnNvY2subWFrZWZpbGUoJ3InLCBlbmNvZGluZz1zZWxmLmVuY29kaW5nKQogICAgICAgICBzZWxmLndlbGNvbWUgPSBzZWxmLmdldHJlc3AoKQpAQCAtMTY5LDEwICsxNzUsOCBAQAogCiAgICAgIyBJbnRlcm5hbDogInNhbml0aXplIiBhIHN0cmluZyBmb3IgcHJpbnRpbmcKICAgICBkZWYgc2FuaXRpemUoc2VsZiwgcyk6Ci0gICAgICAgIGlmIHNbOjVdID09ICdwYXNzICcgb3Igc1s6NV0gPT0gJ1BBU1MgJzoKLSAgICAgICAgICAgIGkgPSBsZW4ocykKLSAgICAgICAgICAgIHdoaWxlIGkgPiA1IGFuZCBzW2ktMV0gaW4geydccicsICdcbid9OgotICAgICAgICAgICAgICAgIGkgPSBpLTEKKyAgICAgICAgaWYgc1s6NV0gaW4geydwYXNzICcsICdQQVNTICd9OgorICAgICAgICAgICAgaSA9IGxlbihzLnJzdHJpcCgnXHJcbicpKQogICAgICAgICAgICAgcyA9IHNbOjVdICsgJyonKihpLTUpICsgc1tpOl0KICAgICAgICAgcmV0dXJuIHJlcHIocykKIApAQCAtMzQwLDcgKzM0NCw4IEBACiAgICAgICAgIHNpemUgPSBOb25lCiAgICAgICAgIGlmIHNlbGYucGFzc2l2ZXNlcnZlcjoKICAgICAgICAgICAgIGhvc3QsIHBvcnQgPSBzZWxmLm1ha2VwYXN2KCkKLSAgICAgICAgICAgIGNvbm4gPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGhvc3QsIHBvcnQpLCBzZWxmLnRpbWVvdXQpCisgICAgICAgICAgICBjb25uID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChob3N0LCBwb3J0KSwgc2VsZi50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1zZWxmLnNvdXJjZV9hZGRyZXNzKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGlmIHJlc3QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZGNtZCgiUkVTVCAlcyIgJSByZXN0KQpAQCAtMzU5LDggKzM2NCw3IEBACiAgICAgICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNvY2sgPSBzZWxmLm1ha2Vwb3J0KCkKLSAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi5tYWtlcG9ydCgpIGFzIHNvY2s6CiAgICAgICAgICAgICAgICAgaWYgcmVzdCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kY21kKCJSRVNUICVzIiAlIHJlc3QpCiAgICAgICAgICAgICAgICAgcmVzcCA9IHNlbGYuc2VuZGNtZChjbWQpCkBAIC0zNzIsOCArMzc2LDYgQEAKICAgICAgICAgICAgICAgICBjb25uLCBzb2NrYWRkciA9IHNvY2suYWNjZXB0KCkKICAgICAgICAgICAgICAgICBpZiBzZWxmLnRpbWVvdXQgaXMgbm90IF9HTE9CQUxfREVGQVVMVF9USU1FT1VUOgogICAgICAgICAgICAgICAgICAgICBjb25uLnNldHRpbWVvdXQoc2VsZi50aW1lb3V0KQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzb2NrLmNsb3NlKCkKICAgICAgICAgaWYgcmVzcFs6M10gPT0gJzE1MCc6CiAgICAgICAgICAgICAjIHRoaXMgaXMgY29uZGl0aW9uYWwgaW4gY2FzZSB3ZSByZWNlaXZlZCBhIDEyNQogICAgICAgICAgICAgc2l6ZSA9IHBhcnNlMTUwKHJlc3ApCkBAIC00MzEsNyArNDMzLDcgQEAKICAgICAgICAgIiIiUmV0cmlldmUgZGF0YSBpbiBsaW5lIG1vZGUuICBBIG5ldyBwb3J0IGlzIGNyZWF0ZWQgZm9yIHlvdS4KIAogICAgICAgICBBcmdzOgotICAgICAgICAgIGNtZDogQSBSRVRSLCBMSVNULCBOTFNULCBvciBNTFNEIGNvbW1hbmQuCisgICAgICAgICAgY21kOiBBIFJFVFIsIExJU1QsIG9yIE5MU1QgY29tbWFuZC4KICAgICAgICAgICBjYWxsYmFjazogQW4gb3B0aW9uYWwgc2luZ2xlIHBhcmFtZXRlciBjYWxsYWJsZSB0aGF0IGlzIGNhbGxlZAogICAgICAgICAgICAgICAgICAgICBmb3IgZWFjaCBsaW5lIHdpdGggdGhlIHRyYWlsaW5nIENSTEYgc3RyaXBwZWQuCiAgICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0OiBwcmludF9saW5lKCldCkBAIC01MzIsNiArNTM0LDM0IEBACiAgICAgICAgICAgICAgICAgY21kID0gY21kICsgKCcgJyArIGFyZykKICAgICAgICAgc2VsZi5yZXRybGluZXMoY21kLCBmdW5jKQogCisgICAgZGVmIG1sc2Qoc2VsZiwgcGF0aD0iIiwgZmFjdHM9W10pOgorICAgICAgICAnJydMaXN0IGEgZGlyZWN0b3J5IGluIGEgc3RhbmRhcmRpemVkIGZvcm1hdCBieSB1c2luZyBNTFNECisgICAgICAgIGNvbW1hbmQgKFJGQy0zNjU5KS4gSWYgcGF0aCBpcyBvbWl0dGVkIHRoZSBjdXJyZW50IGRpcmVjdG9yeQorICAgICAgICBpcyBhc3N1bWVkLiAiZmFjdHMiIGlzIGEgbGlzdCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgdHlwZQorICAgICAgICBvZiBpbmZvcm1hdGlvbiBkZXNpcmVkIChlLmcuIFsidHlwZSIsICJzaXplIiwgInBlcm0iXSkuCisKKyAgICAgICAgUmV0dXJuIGEgZ2VuZXJhdG9yIG9iamVjdCB5aWVsZGluZyBhIHR1cGxlIG9mIHR3byBlbGVtZW50cworICAgICAgICBmb3IgZXZlcnkgZmlsZSBmb3VuZCBpbiBwYXRoLgorICAgICAgICBGaXJzdCBlbGVtZW50IGlzIHRoZSBmaWxlIG5hbWUsIHRoZSBzZWNvbmQgb25lIGlzIGEgZGljdGlvbmFyeQorICAgICAgICBpbmNsdWRpbmcgYSB2YXJpYWJsZSBudW1iZXIgb2YgImZhY3RzIiBkZXBlbmRpbmcgb24gdGhlIHNlcnZlcgorICAgICAgICBhbmQgd2hldGhlciAiZmFjdHMiIGFyZ3VtZW50IGhhcyBiZWVuIHByb3ZpZGVkLgorICAgICAgICAnJycKKyAgICAgICAgaWYgZmFjdHM6CisgICAgICAgICAgICBzZWxmLnNlbmRjbWQoIk9QVFMgTUxTVCAiICsgIjsiLmpvaW4oZmFjdHMpICsgIjsiKQorICAgICAgICBpZiBwYXRoOgorICAgICAgICAgICAgY21kID0gIk1MU0QgJXMiICUgcGF0aAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY21kID0gIk1MU0QiCisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgc2VsZi5yZXRybGluZXMoY21kLCBsaW5lcy5hcHBlbmQpCisgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICAgICAgZmFjdHNfZm91bmQsIF8sIG5hbWUgPSBsaW5lLnJzdHJpcChDUkxGKS5wYXJ0aXRpb24oJyAnKQorICAgICAgICAgICAgZW50cnkgPSB7fQorICAgICAgICAgICAgZm9yIGZhY3QgaW4gZmFjdHNfZm91bmRbOi0xXS5zcGxpdCgiOyIpOgorICAgICAgICAgICAgICAgIGtleSwgXywgdmFsdWUgPSBmYWN0LnBhcnRpdGlvbigiPSIpCisgICAgICAgICAgICAgICAgZW50cnlba2V5Lmxvd2VyKCldID0gdmFsdWUKKyAgICAgICAgICAgIHlpZWxkIChuYW1lLCBlbnRyeSkKKwogICAgIGRlZiByZW5hbWUoc2VsZiwgZnJvbW5hbWUsIHRvbmFtZSk6CiAgICAgICAgICcnJ1JlbmFtZSBhIGZpbGUuJycnCiAgICAgICAgIHJlc3AgPSBzZWxmLnNlbmRjbWQoJ1JORlIgJyArIGZyb21uYW1lKQpAQCAtNTY2LDEwICs1OTYsNyBAQAogICAgICAgICByZXNwID0gc2VsZi5zZW5kY21kKCdTSVpFICcgKyBmaWxlbmFtZSkKICAgICAgICAgaWYgcmVzcFs6M10gPT0gJzIxMyc6CiAgICAgICAgICAgICBzID0gcmVzcFszOl0uc3RyaXAoKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBpbnQocykKLSAgICAgICAgICAgIGV4Y2VwdCAoT3ZlcmZsb3dFcnJvciwgVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludChzKQorICAgICAgICAgICAgcmV0dXJuIGludChzKQogCiAgICAgZGVmIG1rZChzZWxmLCBkaXJuYW1lKToKICAgICAgICAgJycnTWFrZSBhIGRpcmVjdG9yeSwgcmV0dXJuIGl0cyBmdWxsIHBhdGhuYW1lLicnJwpAQCAtNjAxLDExICs2MjgsMTEgQEAKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgJycnQ2xvc2UgdGhlIGNvbm5lY3Rpb24gd2l0aG91dCBhc3N1bWluZyBhbnl0aGluZyBhYm91dCBpdC4nJycKLSAgICAgICAgaWYgc2VsZi5maWxlOgorICAgICAgICBpZiBzZWxmLmZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQorICAgICAgICBpZiBzZWxmLnNvY2sgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQotICAgICAgICAgICAgc2VsZi5maWxlID0gc2VsZi5zb2NrID0gTm9uZQotCisgICAgICAgIHNlbGYuZmlsZSA9IHNlbGYuc29jayA9IE5vbmUKIAogdHJ5OgogICAgIGltcG9ydCBzc2wKQEAgLTY0OSw3ICs2NzYsNyBAQAogCiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCB1c2VyPScnLCBwYXNzd2Q9JycsIGFjY3Q9JycsIGtleWZpbGU9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPU5vbmUsIGNvbnRleHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9X0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQpOgorICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwgc291cmNlX2FkZHJlc3M9Tm9uZSk6CiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBrZXlmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGtleWZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKQEAgLTY2MCw3ICs2ODcsNyBAQAogICAgICAgICAgICAgc2VsZi5jZXJ0ZmlsZSA9IGNlcnRmaWxlCiAgICAgICAgICAgICBzZWxmLmNvbnRleHQgPSBjb250ZXh0CiAgICAgICAgICAgICBzZWxmLl9wcm90X3AgPSBGYWxzZQotICAgICAgICAgICAgRlRQLl9faW5pdF9fKHNlbGYsIGhvc3QsIHVzZXIsIHBhc3N3ZCwgYWNjdCwgdGltZW91dCkKKyAgICAgICAgICAgIEZUUC5fX2luaXRfXyhzZWxmLCBob3N0LCB1c2VyLCBwYXNzd2QsIGFjY3QsIHRpbWVvdXQsIHNvdXJjZV9hZGRyZXNzKQogCiAgICAgICAgIGRlZiBsb2dpbihzZWxmLCB1c2VyPScnLCBwYXNzd2Q9JycsIGFjY3Q9JycsIHNlY3VyZT1UcnVlKToKICAgICAgICAgICAgIGlmIHNlY3VyZSBhbmQgbm90IGlzaW5zdGFuY2Uoc2VsZi5zb2NrLCBzc2wuU1NMU29ja2V0KToKQEAgLTY4NCw2ICs3MTEsMTQgQEAKICAgICAgICAgICAgIHNlbGYuZmlsZSA9IHNlbGYuc29jay5tYWtlZmlsZShtb2RlPSdyJywgZW5jb2Rpbmc9c2VsZi5lbmNvZGluZykKICAgICAgICAgICAgIHJldHVybiByZXNwCiAKKyAgICAgICAgZGVmIGNjYyhzZWxmKToKKyAgICAgICAgICAgICcnJ1N3aXRjaCBiYWNrIHRvIGEgY2xlYXItdGV4dCBjb250cm9sIGNvbm5lY3Rpb24uJycnCisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzZWxmLnNvY2ssIHNzbC5TU0xTb2NrZXQpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vdCB1c2luZyBUTFMiKQorICAgICAgICAgICAgcmVzcCA9IHNlbGYudm9pZGNtZCgnQ0NDJykKKyAgICAgICAgICAgIHNlbGYuc29jayA9IHNlbGYuc29jay51bndyYXAoKQorICAgICAgICAgICAgcmV0dXJuIHJlc3AKKwogICAgICAgICBkZWYgcHJvdF9wKHNlbGYpOgogICAgICAgICAgICAgJycnU2V0IHVwIHNlY3VyZSBkYXRhIGNvbm5lY3Rpb24uJycnCiAgICAgICAgICAgICAjIFBST1QgZGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgZGF0YSBjaGFubmVsIGlzIHRvIGJlIHByb3RlY3RlZC4KQEAgLTcyMCw4ICs3NTUsNyBAQAogCiAgICAgICAgIGRlZiByZXRyYmluYXJ5KHNlbGYsIGNtZCwgY2FsbGJhY2ssIGJsb2Nrc2l6ZT04MTkyLCByZXN0PU5vbmUpOgogICAgICAgICAgICAgc2VsZi52b2lkY21kKCdUWVBFIEknKQotICAgICAgICAgICAgY29ubiA9IHNlbGYudHJhbnNmZXJjbWQoY21kLCByZXN0KQotICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLnRyYW5zZmVyY21kKGNtZCwgcmVzdCkgYXMgY29ubjoKICAgICAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgICAgICBkYXRhID0gY29ubi5yZWN2KGJsb2Nrc2l6ZSkKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CkBAIC03MzAsOCArNzY0LDYgQEAKICAgICAgICAgICAgICAgICAjIHNodXRkb3duIHNzbCBsYXllcgogICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY29ubiwgc3NsLlNTTFNvY2tldCk6CiAgICAgICAgICAgICAgICAgICAgIGNvbm4udW53cmFwKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi52b2lkcmVzcCgpCiAKICAgICAgICAgZGVmIHJldHJsaW5lcyhzZWxmLCBjbWQsIGNhbGxiYWNrID0gTm9uZSk6CkBAIC03MzksNyArNzcxLDcgQEAKICAgICAgICAgICAgIHJlc3AgPSBzZWxmLnNlbmRjbWQoJ1RZUEUgQScpCiAgICAgICAgICAgICBjb25uID0gc2VsZi50cmFuc2ZlcmNtZChjbWQpCiAgICAgICAgICAgICBmcCA9IGNvbm4ubWFrZWZpbGUoJ3InLCBlbmNvZGluZz1zZWxmLmVuY29kaW5nKQotICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBmcCwgY29ubjoKICAgICAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgICAgICBsaW5lID0gZnAucmVhZGxpbmUoKQogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnZ2luZyA+IDI6IHByaW50KCcqcmV0cionLCByZXByKGxpbmUpKQpAQCAtNzUzLDE1ICs3ODUsMTEgQEAKICAgICAgICAgICAgICAgICAjIHNodXRkb3duIHNzbCBsYXllcgogICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY29ubiwgc3NsLlNTTFNvY2tldCk6CiAgICAgICAgICAgICAgICAgICAgIGNvbm4udW53cmFwKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgZnAuY2xvc2UoKQotICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYudm9pZHJlc3AoKQogCiAgICAgICAgIGRlZiBzdG9yYmluYXJ5KHNlbGYsIGNtZCwgZnAsIGJsb2Nrc2l6ZT04MTkyLCBjYWxsYmFjaz1Ob25lLCByZXN0PU5vbmUpOgogICAgICAgICAgICAgc2VsZi52b2lkY21kKCdUWVBFIEknKQotICAgICAgICAgICAgY29ubiA9IHNlbGYudHJhbnNmZXJjbWQoY21kLCByZXN0KQotICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLnRyYW5zZmVyY21kKGNtZCwgcmVzdCkgYXMgY29ubjoKICAgICAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgICAgICBidWYgPSBmcC5yZWFkKGJsb2Nrc2l6ZSkKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjogYnJlYWsKQEAgLTc3MCwxNCArNzk4LDExIEBACiAgICAgICAgICAgICAgICAgIyBzaHV0ZG93biBzc2wgbGF5ZXIKICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNvbm4sIHNzbC5TU0xTb2NrZXQpOgogICAgICAgICAgICAgICAgICAgICBjb25uLnVud3JhcCgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYudm9pZHJlc3AoKQogCiAgICAgICAgIGRlZiBzdG9ybGluZXMoc2VsZiwgY21kLCBmcCwgY2FsbGJhY2s9Tm9uZSk6CiAgICAgICAgICAgICBzZWxmLnZvaWRjbWQoJ1RZUEUgQScpCi0gICAgICAgICAgICBjb25uID0gc2VsZi50cmFuc2ZlcmNtZChjbWQpCi0gICAgICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNlbGYudHJhbnNmZXJjbWQoY21kKSBhcyBjb25uOgogICAgICAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICAgICAgIGJ1ZiA9IGZwLnJlYWRsaW5lKCkKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjogYnJlYWsKQEAgLTc4OSw4ICs4MTQsNiBAQAogICAgICAgICAgICAgICAgICMgc2h1dGRvd24gc3NsIGxheWVyCiAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjb25uLCBzc2wuU1NMU29ja2V0KToKICAgICAgICAgICAgICAgICAgICAgY29ubi51bndyYXAoKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjb25uLmNsb3NlKCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLnZvaWRyZXNwKCkKIAogICAgICAgICBkZWYgYWJvcnQoc2VsZik6CkBAIC04MjMsMTEgKzg0Niw3IEBACiAgICAgbSA9IF8xNTBfcmUubWF0Y2gocmVzcCkKICAgICBpZiBub3QgbToKICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICBzID0gbS5ncm91cCgxKQotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIGludChzKQotICAgIGV4Y2VwdCAoT3ZlcmZsb3dFcnJvciwgVmFsdWVFcnJvcik6Ci0gICAgICAgIHJldHVybiBpbnQocykKKyAgICByZXR1cm4gaW50KG0uZ3JvdXAoMSkpCiAKIAogXzIyN19yZSA9IE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9mdW5jdG9vbHMucHkgYi9MaWIvZnVuY3Rvb2xzLnB5CmluZGV4IDg1ZWEyNTcuLjA1M2U0NGUgMTAwNjQ0Ci0tLSBhL0xpYi9mdW5jdG9vbHMucHkKKysrIGIvTGliL2Z1bmN0b29scy5weQpAQCAtMTIsMTYgKzEyLDI1IEBACiAgICAgICAgICAgICd0b3RhbF9vcmRlcmluZycsICdjbXBfdG9fa2V5JywgJ2xydV9jYWNoZScsICdyZWR1Y2UnLCAncGFydGlhbCddCiAKIGZyb20gX2Z1bmN0b29scyBpbXBvcnQgcGFydGlhbCwgcmVkdWNlCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdCwgbmFtZWR0dXBsZQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQogdHJ5OgotICAgIGZyb20gX3RocmVhZCBpbXBvcnQgYWxsb2NhdGVfbG9jayBhcyBMb2NrCisgICAgZnJvbSBfdGhyZWFkIGltcG9ydCBSTG9jawogZXhjZXB0OgotICAgIGZyb20gX2R1bW15X3RocmVhZCBpbXBvcnQgYWxsb2NhdGVfbG9jayBhcyBMb2NrCisgICAgY2xhc3MgUkxvY2s6CisgICAgICAgICdEdW1teSByZWVudHJhbnQgbG9jayBmb3IgYnVpbGRzIHdpdGhvdXQgdGhyZWFkcycKKyAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKTogcGFzcworICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjdHlwZSwgZXhjaW5zdCwgZXhjdGIpOiBwYXNzCisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyB1cGRhdGVfd3JhcHBlcigpIGFuZCB3cmFwcygpIGRlY29yYXRvcgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogIyB1cGRhdGVfd3JhcHBlcigpIGFuZCB3cmFwcygpIGFyZSB0b29scyB0byBoZWxwIHdyaXRlCiAjIHdyYXBwZXIgZnVuY3Rpb25zIHRoYXQgY2FuIGhhbmRsZSBuYWl2ZSBpbnRyb3NwZWN0aW9uCiAKLVdSQVBQRVJfQVNTSUdOTUVOVFMgPSAoJ19fbW9kdWxlX18nLCAnX19uYW1lX18nLCAnX19kb2NfXycsICdfX2Fubm90YXRpb25zX18nKQorV1JBUFBFUl9BU1NJR05NRU5UUyA9ICgnX19tb2R1bGVfXycsICdfX25hbWVfXycsICdfX3F1YWxuYW1lX18nLCAnX19kb2NfXycsCisgICAgICAgICAgICAgICAgICAgICAgICdfX2Fubm90YXRpb25zX18nKQogV1JBUFBFUl9VUERBVEVTID0gKCdfX2RpY3RfXycsKQogZGVmIHVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsCiAgICAgICAgICAgICAgICAgICAgd3JhcHBlZCwKQEAgLTY1LDYgKzc0LDExIEBACiAgICAgcmV0dXJuIHBhcnRpYWwodXBkYXRlX3dyYXBwZXIsIHdyYXBwZWQ9d3JhcHBlZCwKICAgICAgICAgICAgICAgICAgICBhc3NpZ25lZD1hc3NpZ25lZCwgdXBkYXRlZD11cGRhdGVkKQogCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMgdG90YWxfb3JkZXJpbmcgY2xhc3MgZGVjb3JhdG9yCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCiBkZWYgdG90YWxfb3JkZXJpbmcoY2xzKToKICAgICAiIiJDbGFzcyBkZWNvcmF0b3IgdGhhdCBmaWxscyBpbiBtaXNzaW5nIG9yZGVyaW5nIG1ldGhvZHMiIiIKICAgICBjb252ZXJ0ID0gewpAQCAtOTMsNiArMTA3LDExIEBACiAgICAgICAgICAgICBzZXRhdHRyKGNscywgb3BuYW1lLCBvcGZ1bmMpCiAgICAgcmV0dXJuIGNscwogCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMgY21wX3RvX2tleSgpIGZ1bmN0aW9uIGNvbnZlcnRlcgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwogZGVmIGNtcF90b19rZXkobXljbXApOgogICAgICIiIkNvbnZlcnQgYSBjbXA9IGZ1bmN0aW9uIGludG8gYSBrZXk9IGZ1bmN0aW9uIiIiCiAgICAgY2xhc3MgSyhvYmplY3QpOgpAQCAtMTE0LDc5ICsxMzMsMTgxIEBACiAgICAgICAgIF9faGFzaF9fID0gTm9uZQogICAgIHJldHVybiBLCiAKLV9DYWNoZUluZm8gPSBuYW1lZHR1cGxlKCJDYWNoZUluZm8iLCAiaGl0cyBtaXNzZXMgbWF4c2l6ZSBjdXJyc2l6ZSIpCit0cnk6CisgICAgZnJvbSBfZnVuY3Rvb2xzIGltcG9ydCBjbXBfdG9fa2V5CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcwogCi1kZWYgbHJ1X2NhY2hlKG1heHNpemU9MTAwKToKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyBMUlUgQ2FjaGUgZnVuY3Rpb24gZGVjb3JhdG9yCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitfQ2FjaGVJbmZvID0gbmFtZWR0dXBsZSgiQ2FjaGVJbmZvIiwgWyJoaXRzIiwgIm1pc3NlcyIsICJtYXhzaXplIiwgImN1cnJzaXplIl0pCisKK2NsYXNzIF9IYXNoZWRTZXEobGlzdCk6CisgICAgIiIiIFRoaXMgY2xhc3MgZ3VhcmFudGVlcyB0aGF0IGhhc2goKSB3aWxsIGJlIGNhbGxlZCBubyBtb3JlIHRoYW4gb25jZQorICAgICAgICBwZXIgZWxlbWVudC4gIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhlIGxydV9jYWNoZSgpIHdpbGwgaGFzaAorICAgICAgICB0aGUga2V5IG11bHRpcGxlIHRpbWVzIG9uIGEgY2FjaGUgbWlzcy4KKworICAgICIiIgorCisgICAgX19zbG90c19fID0gJ2hhc2h2YWx1ZScKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0dXAsIGhhc2g9aGFzaCk6CisgICAgICAgIHNlbGZbOl0gPSB0dXAKKyAgICAgICAgc2VsZi5oYXNodmFsdWUgPSBoYXNoKHR1cCkKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuaGFzaHZhbHVlCisKK2RlZiBfbWFrZV9rZXkoYXJncywga3dkcywgdHlwZWQsCisgICAgICAgICAgICAga3dkX21hcmsgPSAob2JqZWN0KCksKSwKKyAgICAgICAgICAgICBmYXN0dHlwZXMgPSB7aW50LCBzdHIsIGZyb3plbnNldCwgdHlwZShOb25lKX0sCisgICAgICAgICAgICAgc29ydGVkPXNvcnRlZCwgdHVwbGU9dHVwbGUsIHR5cGU9dHlwZSwgbGVuPWxlbik6CisgICAgIiIiTWFrZSBhIGNhY2hlIGtleSBmcm9tIG9wdGlvbmFsbHkgdHlwZWQgcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmd1bWVudHMKKworICAgIFRoZSBrZXkgaXMgY29uc3RydWN0ZWQgaW4gYSB3YXkgdGhhdCBpcyBmbGF0IGFzIHBvc3NpYmxlIHJhdGhlciB0aGFuCisgICAgYXMgYSBuZXN0ZWQgc3RydWN0dXJlIHRoYXQgd291bGQgdGFrZSBtb3JlIG1lbW9yeS4KKworICAgIElmIHRoZXJlIGlzIG9ubHkgYSBzaW5nbGUgYXJndW1lbnQgYW5kIGl0cyBkYXRhIHR5cGUgaXMga25vd24gdG8gY2FjaGUKKyAgICBpdHMgaGFzaCB2YWx1ZSwgdGhlbiB0aGF0IGFyZ3VtZW50IGlzIHJldHVybmVkIHdpdGhvdXQgYSB3cmFwcGVyLiAgVGhpcworICAgIHNhdmVzIHNwYWNlIGFuZCBpbXByb3ZlcyBsb29rdXAgc3BlZWQuCisKKyAgICAiIiIKKyAgICBrZXkgPSBhcmdzCisgICAgaWYga3dkczoKKyAgICAgICAgc29ydGVkX2l0ZW1zID0gc29ydGVkKGt3ZHMuaXRlbXMoKSkKKyAgICAgICAga2V5ICs9IGt3ZF9tYXJrCisgICAgICAgIGZvciBpdGVtIGluIHNvcnRlZF9pdGVtczoKKyAgICAgICAgICAgIGtleSArPSBpdGVtCisgICAgaWYgdHlwZWQ6CisgICAgICAgIGtleSArPSB0dXBsZSh0eXBlKHYpIGZvciB2IGluIGFyZ3MpCisgICAgICAgIGlmIGt3ZHM6CisgICAgICAgICAgICBrZXkgKz0gdHVwbGUodHlwZSh2KSBmb3IgaywgdiBpbiBzb3J0ZWRfaXRlbXMpCisgICAgZWxpZiBsZW4oa2V5KSA9PSAxIGFuZCB0eXBlKGtleVswXSkgaW4gZmFzdHR5cGVzOgorICAgICAgICByZXR1cm4ga2V5WzBdCisgICAgcmV0dXJuIF9IYXNoZWRTZXEoa2V5KQorCitkZWYgbHJ1X2NhY2hlKG1heHNpemU9MTI4LCB0eXBlZD1GYWxzZSk6CiAgICAgIiIiTGVhc3QtcmVjZW50bHktdXNlZCBjYWNoZSBkZWNvcmF0b3IuCiAKICAgICBJZiAqbWF4c2l6ZSogaXMgc2V0IHRvIE5vbmUsIHRoZSBMUlUgZmVhdHVyZXMgYXJlIGRpc2FibGVkIGFuZCB0aGUgY2FjaGUKICAgICBjYW4gZ3JvdyB3aXRob3V0IGJvdW5kLgogCisgICAgSWYgKnR5cGVkKiBpcyBUcnVlLCBhcmd1bWVudHMgb2YgZGlmZmVyZW50IHR5cGVzIHdpbGwgYmUgY2FjaGVkIHNlcGFyYXRlbHkuCisgICAgRm9yIGV4YW1wbGUsIGYoMy4wKSBhbmQgZigzKSB3aWxsIGJlIHRyZWF0ZWQgYXMgZGlzdGluY3QgY2FsbHMgd2l0aAorICAgIGRpc3RpbmN0IHJlc3VsdHMuCisKICAgICBBcmd1bWVudHMgdG8gdGhlIGNhY2hlZCBmdW5jdGlvbiBtdXN0IGJlIGhhc2hhYmxlLgogCi0gICAgVmlldyB0aGUgY2FjaGUgc3RhdGlzdGljcyBuYW1lZCB0dXBsZSAoaGl0cywgbWlzc2VzLCBtYXhzaXplLCBjdXJyc2l6ZSkgd2l0aAotICAgIGYuY2FjaGVfaW5mbygpLiAgQ2xlYXIgdGhlIGNhY2hlIGFuZCBzdGF0aXN0aWNzIHdpdGggZi5jYWNoZV9jbGVhcigpLgorICAgIFZpZXcgdGhlIGNhY2hlIHN0YXRpc3RpY3MgbmFtZWQgdHVwbGUgKGhpdHMsIG1pc3NlcywgbWF4c2l6ZSwgY3VycnNpemUpCisgICAgd2l0aCBmLmNhY2hlX2luZm8oKS4gIENsZWFyIHRoZSBjYWNoZSBhbmQgc3RhdGlzdGljcyB3aXRoIGYuY2FjaGVfY2xlYXIoKS4KICAgICBBY2Nlc3MgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gd2l0aCBmLl9fd3JhcHBlZF9fLgogCiAgICAgU2VlOiAgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYWNoZV9hbGdvcml0aG1zI0xlYXN0X1JlY2VudGx5X1VzZWQKIAogICAgICIiIgorCiAgICAgIyBVc2VycyBzaG91bGQgb25seSBhY2Nlc3MgdGhlIGxydV9jYWNoZSB0aHJvdWdoIGl0cyBwdWJsaWMgQVBJOgogICAgICMgICAgICAgY2FjaGVfaW5mbywgY2FjaGVfY2xlYXIsIGFuZCBmLl9fd3JhcHBlZF9fCiAgICAgIyBUaGUgaW50ZXJuYWxzIG9mIHRoZSBscnVfY2FjaGUgYXJlIGVuY2Fwc3VsYXRlZCBmb3IgdGhyZWFkIHNhZmV0eSBhbmQKICAgICAjIHRvIGFsbG93IHRoZSBpbXBsZW1lbnRhdGlvbiB0byBjaGFuZ2UgKGluY2x1ZGluZyBhIHBvc3NpYmxlIEMgdmVyc2lvbikuCiAKLSAgICBkZWYgZGVjb3JhdGluZ19mdW5jdGlvbih1c2VyX2Z1bmN0aW9uLAotICAgICAgICAgICAgICAgIHR1cGxlPXR1cGxlLCBzb3J0ZWQ9c29ydGVkLCBsZW49bGVuLCBLZXlFcnJvcj1LZXlFcnJvcik6CisgICAgIyBDb25zdGFudHMgc2hhcmVkIGJ5IGFsbCBscnUgY2FjaGUgaW5zdGFuY2VzOgorICAgIHNlbnRpbmVsID0gb2JqZWN0KCkgICAgICAgICAgIyB1bmlxdWUgb2JqZWN0IHVzZWQgdG8gc2lnbmFsIGNhY2hlIG1pc3NlcworICAgIG1ha2Vfa2V5ID0gX21ha2Vfa2V5ICAgICAgICAgIyBidWlsZCBhIGtleSBmcm9tIHRoZSBmdW5jdGlvbiBhcmd1bWVudHMKKyAgICBQUkVWLCBORVhULCBLRVksIFJFU1VMVCA9IDAsIDEsIDIsIDMgICAjIG5hbWVzIGZvciB0aGUgbGluayBmaWVsZHMKIAorICAgIGRlZiBkZWNvcmF0aW5nX2Z1bmN0aW9uKHVzZXJfZnVuY3Rpb24pOgorCisgICAgICAgIGNhY2hlID0ge30KICAgICAgICAgaGl0cyA9IG1pc3NlcyA9IDAKLSAgICAgICAga3dkX21hcmsgPSAob2JqZWN0KCksKSAgICAgICAgICAjIHNlcGFyYXRlcyBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3MKLSAgICAgICAgbG9jayA9IExvY2soKSAgICAgICAgICAgICAgICAgICAjIG5lZWRlZCBiZWNhdXNlIE9yZGVyZWREaWN0IGlzbid0IHRocmVhZHNhZmUKKyAgICAgICAgZnVsbCA9IEZhbHNlCisgICAgICAgIGNhY2hlX2dldCA9IGNhY2hlLmdldCAgICAjIGJvdW5kIG1ldGhvZCB0byBsb29rdXAgYSBrZXkgb3IgcmV0dXJuIE5vbmUKKyAgICAgICAgbG9jayA9IFJMb2NrKCkgICAgICAgICAgICMgYmVjYXVzZSBsaW5rZWRsaXN0IHVwZGF0ZXMgYXJlbid0IHRocmVhZHNhZmUKKyAgICAgICAgcm9vdCA9IFtdICAgICAgICAgICAgICAgICMgcm9vdCBvZiB0aGUgY2lyY3VsYXIgZG91Ymx5IGxpbmtlZCBsaXN0CisgICAgICAgIHJvb3RbOl0gPSBbcm9vdCwgcm9vdCwgTm9uZSwgTm9uZV0gICAgICMgaW5pdGlhbGl6ZSBieSBwb2ludGluZyB0byBzZWxmCiAKLSAgICAgICAgaWYgbWF4c2l6ZSBpcyBOb25lOgotICAgICAgICAgICAgY2FjaGUgPSBkaWN0KCkgICAgICAgICAgICAgICMgc2ltcGxlIGNhY2hlIHdpdGhvdXQgb3JkZXJpbmcgb3Igc2l6ZSBsaW1pdAorICAgICAgICBpZiBtYXhzaXplID09IDA6CiAKLSAgICAgICAgICAgIEB3cmFwcyh1c2VyX2Z1bmN0aW9uKQogICAgICAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICAgICAgICAgIyBObyBjYWNoaW5nIC0tIGp1c3QgYSBzdGF0aXN0aWNzIHVwZGF0ZSBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbAorICAgICAgICAgICAgICAgIG5vbmxvY2FsIG1pc3NlcworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHVzZXJfZnVuY3Rpb24oKmFyZ3MsICoqa3dkcykKKyAgICAgICAgICAgICAgICBtaXNzZXMgKz0gMQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKKworICAgICAgICBlbGlmIG1heHNpemUgaXMgTm9uZToKKworICAgICAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICAgICAgICAgIyBTaW1wbGUgY2FjaGluZyB3aXRob3V0IG9yZGVyaW5nIG9yIHNpemUgbGltaXQKICAgICAgICAgICAgICAgICBub25sb2NhbCBoaXRzLCBtaXNzZXMKLSAgICAgICAgICAgICAgICBrZXkgPSBhcmdzCi0gICAgICAgICAgICAgICAgaWYga3dkczoKLSAgICAgICAgICAgICAgICAgICAga2V5ICs9IGt3ZF9tYXJrICsgdHVwbGUoc29ydGVkKGt3ZHMuaXRlbXMoKSkpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBjYWNoZVtrZXldCisgICAgICAgICAgICAgICAga2V5ID0gbWFrZV9rZXkoYXJncywga3dkcywgdHlwZWQpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY2FjaGVfZ2V0KGtleSwgc2VudGluZWwpCisgICAgICAgICAgICAgICAgaWYgcmVzdWx0IGlzIG5vdCBzZW50aW5lbDoKICAgICAgICAgICAgICAgICAgICAgaGl0cyArPSAxCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICByZXN1bHQgPSB1c2VyX2Z1bmN0aW9uKCphcmdzLCAqKmt3ZHMpCiAgICAgICAgICAgICAgICAgY2FjaGVba2V5XSA9IHJlc3VsdAogICAgICAgICAgICAgICAgIG1pc3NlcyArPSAxCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY2FjaGUgPSBPcmRlcmVkRGljdCgpICAgICAgICAgICAjIG9yZGVyZWQgbGVhc3QgcmVjZW50IHRvIG1vc3QgcmVjZW50Ci0gICAgICAgICAgICBjYWNoZV9wb3BpdGVtID0gY2FjaGUucG9waXRlbQotICAgICAgICAgICAgY2FjaGVfcmVuZXcgPSBjYWNoZS5tb3ZlX3RvX2VuZAogCi0gICAgICAgICAgICBAd3JhcHModXNlcl9mdW5jdGlvbikKKyAgICAgICAgZWxzZToKKwogICAgICAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dkcyk6Ci0gICAgICAgICAgICAgICAgbm9ubG9jYWwgaGl0cywgbWlzc2VzCi0gICAgICAgICAgICAgICAga2V5ID0gYXJncwotICAgICAgICAgICAgICAgIGlmIGt3ZHM6Ci0gICAgICAgICAgICAgICAgICAgIGtleSArPSBrd2RfbWFyayArIHR1cGxlKHNvcnRlZChrd2RzLml0ZW1zKCkpKQorICAgICAgICAgICAgICAgICMgU2l6ZSBsaW1pdGVkIGNhY2hpbmcgdGhhdCB0cmFja3MgYWNjZXNzZXMgYnkgcmVjZW5jeQorICAgICAgICAgICAgICAgIG5vbmxvY2FsIHJvb3QsIGhpdHMsIG1pc3NlcywgZnVsbAorICAgICAgICAgICAgICAgIGtleSA9IG1ha2Vfa2V5KGFyZ3MsIGt3ZHMsIHR5cGVkKQogICAgICAgICAgICAgICAgIHdpdGggbG9jazoKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY2FjaGVba2V5XQotICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfcmVuZXcoa2V5KSAgICAjIHJlY29yZCByZWNlbnQgdXNlIG9mIHRoaXMga2V5CisgICAgICAgICAgICAgICAgICAgIGxpbmsgPSBjYWNoZV9nZXQoa2V5KQorICAgICAgICAgICAgICAgICAgICBpZiBsaW5rIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBNb3ZlIHRoZSBsaW5rIHRvIHRoZSBmcm9udCBvZiB0aGUgY2lyY3VsYXIgcXVldWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtfcHJldiwgbGlua19uZXh0LCBfa2V5LCByZXN1bHQgPSBsaW5rCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rX3ByZXZbTkVYVF0gPSBsaW5rX25leHQKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtfbmV4dFtQUkVWXSA9IGxpbmtfcHJldgorICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHJvb3RbUFJFVl0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RbTkVYVF0gPSByb290W1BSRVZdID0gbGluaworICAgICAgICAgICAgICAgICAgICAgICAgbGlua1tQUkVWXSA9IGxhc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtbTkVYVF0gPSByb290CiAgICAgICAgICAgICAgICAgICAgICAgICBoaXRzICs9IDEKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHVzZXJfZnVuY3Rpb24oKmFyZ3MsICoqa3dkcykKICAgICAgICAgICAgICAgICB3aXRoIGxvY2s6Ci0gICAgICAgICAgICAgICAgICAgIGNhY2hlW2tleV0gPSByZXN1bHQgICAgICMgcmVjb3JkIHJlY2VudCB1c2Ugb2YgdGhpcyBrZXkKKyAgICAgICAgICAgICAgICAgICAgaWYga2V5IGluIGNhY2hlOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBHZXR0aW5nIGhlcmUgbWVhbnMgdGhhdCB0aGlzIHNhbWUga2V5IHdhcyBhZGRlZCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgY2FjaGUgd2hpbGUgdGhlIGxvY2sgd2FzIHJlbGVhc2VkLiAgU2luY2UgdGhlIGxpbmsKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdXBkYXRlIGlzIGFscmVhZHkgZG9uZSwgd2UgbmVlZCBvbmx5IHJldHVybiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgY29tcHV0ZWQgcmVzdWx0IGFuZCB1cGRhdGUgdGhlIGNvdW50IG9mIG1pc3Nlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBmdWxsOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2UgdGhlIG9sZCByb290IHRvIHN0b3JlIHRoZSBuZXcga2V5IGFuZCByZXN1bHQuCisgICAgICAgICAgICAgICAgICAgICAgICBvbGRyb290ID0gcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgb2xkcm9vdFtLRVldID0ga2V5CisgICAgICAgICAgICAgICAgICAgICAgICBvbGRyb290W1JFU1VMVF0gPSByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICMgRW1wdHkgdGhlIG9sZGVzdCBsaW5rIGFuZCBtYWtlIGl0IHRoZSBuZXcgcm9vdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICMgS2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgb2xkIGtleSBhbmQgb2xkIHJlc3VsdCB0bworICAgICAgICAgICAgICAgICAgICAgICAgIyBwcmV2ZW50IHRoZWlyIHJlZiBjb3VudHMgZnJvbSBnb2luZyB0byB6ZXJvIGR1cmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdXBkYXRlLiBUaGF0IHdpbGwgcHJldmVudCBwb3RlbnRpYWxseSBhcmJpdHJhcnkgb2JqZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAjIGNsZWFuLXVwIGNvZGUgKGkuZS4gX19kZWxfXykgZnJvbSBydW5uaW5nIHdoaWxlIHdlJ3JlCisgICAgICAgICAgICAgICAgICAgICAgICAjIHN0aWxsIGFkanVzdGluZyB0aGUgbGlua3MuCisgICAgICAgICAgICAgICAgICAgICAgICByb290ID0gb2xkcm9vdFtORVhUXQorICAgICAgICAgICAgICAgICAgICAgICAgb2xka2V5ID0gcm9vdFtLRVldCisgICAgICAgICAgICAgICAgICAgICAgICBvbGRyZXN1bHQgPSByb290W1JFU1VMVF0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RbS0VZXSA9IHJvb3RbUkVTVUxUXSA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgTm93IHVwZGF0ZSB0aGUgY2FjaGUgZGljdGlvbmFyeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBjYWNoZVtvbGRrZXldCisgICAgICAgICAgICAgICAgICAgICAgICAjIFNhdmUgdGhlIHBvdGVudGlhbGx5IHJlZW50cmFudCBjYWNoZVtrZXldIGFzc2lnbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIGxhc3QsIGFmdGVyIHRoZSByb290IGFuZCBsaW5rcyBoYXZlIGJlZW4gcHV0IGluCisgICAgICAgICAgICAgICAgICAgICAgICAjIGEgY29uc2lzdGVudCBzdGF0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlW2tleV0gPSBvbGRyb290CisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAjIFB1dCByZXN1bHQgaW4gYSBuZXcgbGluayBhdCB0aGUgZnJvbnQgb2YgdGhlIHF1ZXVlLgorICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHJvb3RbUFJFVl0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsgPSBbbGFzdCwgcm9vdCwga2V5LCByZXN1bHRdCisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0W05FWFRdID0gcm9vdFtQUkVWXSA9IGNhY2hlW2tleV0gPSBsaW5rCisgICAgICAgICAgICAgICAgICAgICAgICBmdWxsID0gKGxlbihjYWNoZSkgPj0gbWF4c2l6ZSkKICAgICAgICAgICAgICAgICAgICAgbWlzc2VzICs9IDEKLSAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGNhY2hlKSA+IG1heHNpemU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZV9wb3BpdGVtKDApICAgICMgcHVyZ2UgbGVhc3QgcmVjZW50bHkgdXNlZCBjYWNoZSBlbnRyeQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgICAgICBkZWYgY2FjaGVfaW5mbygpOgpAQCAtMTk2LDEzICszMTcsMTUgQEAKIAogICAgICAgICBkZWYgY2FjaGVfY2xlYXIoKToKICAgICAgICAgICAgICIiIkNsZWFyIHRoZSBjYWNoZSBhbmQgY2FjaGUgc3RhdGlzdGljcyIiIgotICAgICAgICAgICAgbm9ubG9jYWwgaGl0cywgbWlzc2VzCisgICAgICAgICAgICBub25sb2NhbCBoaXRzLCBtaXNzZXMsIGZ1bGwKICAgICAgICAgICAgIHdpdGggbG9jazoKICAgICAgICAgICAgICAgICBjYWNoZS5jbGVhcigpCisgICAgICAgICAgICAgICAgcm9vdFs6XSA9IFtyb290LCByb290LCBOb25lLCBOb25lXQogICAgICAgICAgICAgICAgIGhpdHMgPSBtaXNzZXMgPSAwCisgICAgICAgICAgICAgICAgZnVsbCA9IEZhbHNlCiAKICAgICAgICAgd3JhcHBlci5jYWNoZV9pbmZvID0gY2FjaGVfaW5mbwogICAgICAgICB3cmFwcGVyLmNhY2hlX2NsZWFyID0gY2FjaGVfY2xlYXIKLSAgICAgICAgcmV0dXJuIHdyYXBwZXIKKyAgICAgICAgcmV0dXJuIHVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsIHVzZXJfZnVuY3Rpb24pCiAKICAgICByZXR1cm4gZGVjb3JhdGluZ19mdW5jdGlvbgpkaWZmIC0tZ2l0IGEvTGliL2dldG9wdC5weSBiL0xpYi9nZXRvcHQucHkKaW5kZXggOTgwODYxZC4uM2Q2ZWNiZCAxMDA2NDQKLS0tIGEvTGliL2dldG9wdC5weQorKysgYi9MaWIvZ2V0b3B0LnB5CkBAIC0xOSw3ICsxOSw3IEBACiAjIEdlcnJpdCBIb2xsIDxnZXJyaXRAbmwubGludXgub3JnPiBtb3ZlZCB0aGUgc3RyaW5nLWJhc2VkIGV4Y2VwdGlvbnMKICMgdG8gY2xhc3MtYmFzZWQgZXhjZXB0aW9ucy4KICMKLSMgUGV0ZXIgw4PChXN0cmFuZCA8YXN0cmFuZEBseXNhdG9yLmxpdS5zZT4gYWRkZWQgZ251X2dldG9wdCgpLgorIyBQZXRlciDDhXN0cmFuZCA8YXN0cmFuZEBseXNhdG9yLmxpdS5zZT4gYWRkZWQgZ251X2dldG9wdCgpLgogIwogIyBUT0RPIGZvciBnbnVfZ2V0b3B0KCk6CiAjCkBAIC0zNCw2ICszNCwxMSBAQAogX19hbGxfXyA9IFsiR2V0b3B0RXJyb3IiLCJlcnJvciIsImdldG9wdCIsImdudV9nZXRvcHQiXQogCiBpbXBvcnQgb3MKK3RyeToKKyAgICBmcm9tIGdldHRleHQgaW1wb3J0IGdldHRleHQgYXMgXworZXhjZXB0IEltcG9ydEVycm9yOgorICAgICMgQm9vdHN0cmFwcGluZyBQeXRob246IGdldHRleHQncyBkZXBlbmRlbmNpZXMgbm90IGJ1aWx0IHlldAorICAgIGRlZiBfKHMpOiByZXR1cm4gcwogCiBjbGFzcyBHZXRvcHRFcnJvcihFeGNlcHRpb24pOgogICAgIG9wdCA9ICcnCkBAIC0xNTMsMTAgKzE1OCwxMCBAQAogICAgIGlmIGhhc19hcmc6CiAgICAgICAgIGlmIG9wdGFyZyBpcyBOb25lOgogICAgICAgICAgICAgaWYgbm90IGFyZ3M6Ci0gICAgICAgICAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoJ29wdGlvbiAtLSVzIHJlcXVpcmVzIGFyZ3VtZW50JyAlIG9wdCwgb3B0KQorICAgICAgICAgICAgICAgIHJhaXNlIEdldG9wdEVycm9yKF8oJ29wdGlvbiAtLSVzIHJlcXVpcmVzIGFyZ3VtZW50JykgJSBvcHQsIG9wdCkKICAgICAgICAgICAgIG9wdGFyZywgYXJncyA9IGFyZ3NbMF0sIGFyZ3NbMTpdCiAgICAgZWxpZiBvcHRhcmcgaXMgbm90IE5vbmU6Ci0gICAgICAgIHJhaXNlIEdldG9wdEVycm9yKCdvcHRpb24gLS0lcyBtdXN0IG5vdCBoYXZlIGFuIGFyZ3VtZW50JyAlIG9wdCwgb3B0KQorICAgICAgICByYWlzZSBHZXRvcHRFcnJvcihfKCdvcHRpb24gLS0lcyBtdXN0IG5vdCBoYXZlIGFuIGFyZ3VtZW50JykgJSBvcHQsIG9wdCkKICAgICBvcHRzLmFwcGVuZCgoJy0tJyArIG9wdCwgb3B0YXJnIG9yICcnKSkKICAgICByZXR1cm4gb3B0cywgYXJncwogCkBAIC0xNjYsNyArMTcxLDcgQEAKIGRlZiBsb25nX2hhc19hcmdzKG9wdCwgbG9uZ29wdHMpOgogICAgIHBvc3NpYmlsaXRpZXMgPSBbbyBmb3IgbyBpbiBsb25nb3B0cyBpZiBvLnN0YXJ0c3dpdGgob3B0KV0KICAgICBpZiBub3QgcG9zc2liaWxpdGllczoKLSAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoJ29wdGlvbiAtLSVzIG5vdCByZWNvZ25pemVkJyAlIG9wdCwgb3B0KQorICAgICAgICByYWlzZSBHZXRvcHRFcnJvcihfKCdvcHRpb24gLS0lcyBub3QgcmVjb2duaXplZCcpICUgb3B0LCBvcHQpCiAgICAgIyBJcyB0aGVyZSBhbiBleGFjdCBtYXRjaD8KICAgICBpZiBvcHQgaW4gcG9zc2liaWxpdGllczoKICAgICAgICAgcmV0dXJuIEZhbHNlLCBvcHQKQEAgLTE3Niw3ICsxODEsNyBAQAogICAgIGlmIGxlbihwb3NzaWJpbGl0aWVzKSA+IDE6CiAgICAgICAgICMgWFhYIHNpbmNlIHBvc3NpYmlsaXRpZXMgY29udGFpbnMgYWxsIHZhbGlkIGNvbnRpbnVhdGlvbnMsIG1pZ2h0IGJlCiAgICAgICAgICMgbmljZSB0byB3b3JrIHRoZW0gaW50byB0aGUgZXJyb3IgbXNnCi0gICAgICAgIHJhaXNlIEdldG9wdEVycm9yKCdvcHRpb24gLS0lcyBub3QgYSB1bmlxdWUgcHJlZml4JyAlIG9wdCwgb3B0KQorICAgICAgICByYWlzZSBHZXRvcHRFcnJvcihfKCdvcHRpb24gLS0lcyBub3QgYSB1bmlxdWUgcHJlZml4JykgJSBvcHQsIG9wdCkKICAgICBhc3NlcnQgbGVuKHBvc3NpYmlsaXRpZXMpID09IDEKICAgICB1bmlxdWVfbWF0Y2ggPSBwb3NzaWJpbGl0aWVzWzBdCiAgICAgaGFzX2FyZyA9IHVuaXF1ZV9tYXRjaC5lbmRzd2l0aCgnPScpCkBAIC0xOTAsNyArMTk1LDcgQEAKICAgICAgICAgaWYgc2hvcnRfaGFzX2FyZyhvcHQsIHNob3J0b3B0cyk6CiAgICAgICAgICAgICBpZiBvcHRzdHJpbmcgPT0gJyc6CiAgICAgICAgICAgICAgICAgaWYgbm90IGFyZ3M6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEdldG9wdEVycm9yKCdvcHRpb24gLSVzIHJlcXVpcmVzIGFyZ3VtZW50JyAlIG9wdCwKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoXygnb3B0aW9uIC0lcyByZXF1aXJlcyBhcmd1bWVudCcpICUgb3B0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHQpCiAgICAgICAgICAgICAgICAgb3B0c3RyaW5nLCBhcmdzID0gYXJnc1swXSwgYXJnc1sxOl0KICAgICAgICAgICAgIG9wdGFyZywgb3B0c3RyaW5nID0gb3B0c3RyaW5nLCAnJwpAQCAtMjAzLDcgKzIwOCw3IEBACiAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHNob3J0b3B0cykpOgogICAgICAgICBpZiBvcHQgPT0gc2hvcnRvcHRzW2ldICE9ICc6JzoKICAgICAgICAgICAgIHJldHVybiBzaG9ydG9wdHMuc3RhcnRzd2l0aCgnOicsIGkrMSkKLSAgICByYWlzZSBHZXRvcHRFcnJvcignb3B0aW9uIC0lcyBub3QgcmVjb2duaXplZCcgJSBvcHQsIG9wdCkKKyAgICByYWlzZSBHZXRvcHRFcnJvcihfKCdvcHRpb24gLSVzIG5vdCByZWNvZ25pemVkJykgJSBvcHQsIG9wdCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgc3lzCmRpZmYgLS1naXQgYS9MaWIvZ2V0cGFzcy5weSBiL0xpYi9nZXRwYXNzLnB5CmluZGV4IGRjMDJiZDEuLjAwNDQ3NDIgMTAwNjQ0Ci0tLSBhL0xpYi9nZXRwYXNzLnB5CisrKyBiL0xpYi9nZXRwYXNzLnB5CkBAIC03Miw3ICs3Miw3IEBACiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIHRlcm1pb3MudGNzZXRhdHRyKGZkLCB0Y3NldGF0dHJfZmxhZ3MsIG9sZCkKICAgICAgICAgICAgICAgICBzdHJlYW0uZmx1c2goKSAgIyBpc3N1ZTcyMDgKLSAgICAgICAgZXhjZXB0IHRlcm1pb3MuZXJyb3IgYXMgZToKKyAgICAgICAgZXhjZXB0IHRlcm1pb3MuZXJyb3I6CiAgICAgICAgICAgICBpZiBwYXNzd2QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgIyBfcmF3X2lucHV0IHN1Y2NlZWRlZC4gIFRoZSBmaW5hbCB0Y3NldGF0dHIgZmFpbGVkLiAgUmVyYWlzZQogICAgICAgICAgICAgICAgICMgaW5zdGVhZCBvZiBsZWF2aW5nIHRoZSB0ZXJtaW5hbCBpbiBhbiB1bmtub3duIHN0YXRlLgpAQCAtMTQ1LDggKzE0NSw2IEBACiAKICAgICAiIiIKIAotICAgIGltcG9ydCBvcwotCiAgICAgZm9yIG5hbWUgaW4gKCdMT0dOQU1FJywgJ1VTRVInLCAnTE5BTUUnLCAnVVNFUk5BTUUnKToKICAgICAgICAgdXNlciA9IG9zLmVudmlyb24uZ2V0KG5hbWUpCiAgICAgICAgIGlmIHVzZXI6CmRpZmYgLS1naXQgYS9MaWIvZ2V0dGV4dC5weSBiL0xpYi9nZXR0ZXh0LnB5CmluZGV4IDI1NmUzMzEuLmU0M2YwNDQgMTAwNjQ0Ci0tLSBhL0xpYi9nZXR0ZXh0LnB5CisrKyBiL0xpYi9nZXR0ZXh0LnB5CkBAIC01NSw3ICs1NSw3IEBACiAgICAgICAgICAgICdkZ2V0dGV4dCcsICdkbmdldHRleHQnLCAnZ2V0dGV4dCcsICduZ2V0dGV4dCcsCiAgICAgICAgICAgIF0KIAotX2RlZmF1bHRfbG9jYWxlZGlyID0gb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsICdzaGFyZScsICdsb2NhbGUnKQorX2RlZmF1bHRfbG9jYWxlZGlyID0gb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwgJ3NoYXJlJywgJ2xvY2FsZScpCiAKIAogZGVmIGMycHkocGx1cmFsKToKZGlmZiAtLWdpdCBhL0xpYi9nemlwLnB5IGIvTGliL2d6aXAucHkKaW5kZXggOGZiMWVkMC4uZDdkYTAyYyAxMDA2NDQKLS0tIGEvTGliL2d6aXAucHkKKysrIGIvTGliL2d6aXAucHkKQEAgLTE2LDMyICsxNiw1NSBAQAogCiBSRUFELCBXUklURSA9IDEsIDIKIAotZGVmIFUzMihpKToKLSAgICAiIiJSZXR1cm4gaSBhcyBhbiB1bnNpZ25lZCBpbnRlZ2VyLCBhc3N1bWluZyBpdCBmaXRzIGluIDMyIGJpdHMuCi0gICAgSWYgaXQncyA+PSAyR0Igd2hlbiB2aWV3ZWQgYXMgYSAzMi1iaXQgdW5zaWduZWQgaW50LCByZXR1cm4gYSBsb25nLgotICAgICIiIgotICAgIGlmIGkgPCAwOgotICAgICAgICBpICs9IDEgPDwgMzIKLSAgICByZXR1cm4gaQorZGVmIG9wZW4oZmlsZW5hbWUsIG1vZGU9InJiIiwgY29tcHJlc3NsZXZlbD05LAorICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSk6CisgICAgIiIiT3BlbiBhIGd6aXAtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUuCiAKLWRlZiBMT1dVMzIoaSk6Ci0gICAgIiIiUmV0dXJuIHRoZSBsb3ctb3JkZXIgMzIgYml0cywgYXMgYSBub24tbmVnYXRpdmUgaW50IiIiCi0gICAgcmV0dXJuIGkgJiAweEZGRkZGRkZGCisgICAgVGhlIGZpbGVuYW1lIGFyZ3VtZW50IGNhbiBiZSBhbiBhY3R1YWwgZmlsZW5hbWUgKGEgc3RyIG9yIGJ5dGVzIG9iamVjdCksIG9yCisgICAgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorCisgICAgVGhlIG1vZGUgYXJndW1lbnQgY2FuIGJlICJyIiwgInJiIiwgInciLCAid2IiLCAiYSIgb3IgImFiIiBmb3IgYmluYXJ5IG1vZGUsCisgICAgb3IgInJ0IiwgInd0IiBvciAiYXQiIGZvciB0ZXh0IG1vZGUuIFRoZSBkZWZhdWx0IG1vZGUgaXMgInJiIiwgYW5kIHRoZQorICAgIGRlZmF1bHQgY29tcHJlc3NsZXZlbCBpcyA5LgorCisgICAgRm9yIGJpbmFyeSBtb2RlLCB0aGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gdGhlIEd6aXBGaWxlIGNvbnN0cnVjdG9yOgorICAgIEd6aXBGaWxlKGZpbGVuYW1lLCBtb2RlLCBjb21wcmVzc2xldmVsKS4gSW4gdGhpcyBjYXNlLCB0aGUgZW5jb2RpbmcsIGVycm9ycworICAgIGFuZCBuZXdsaW5lIGFyZ3VtZW50cyBtdXN0IG5vdCBiZSBwcm92aWRlZC4KKworICAgIEZvciB0ZXh0IG1vZGUsIGEgR3ppcEZpbGUgb2JqZWN0IGlzIGNyZWF0ZWQsIGFuZCB3cmFwcGVkIGluIGFuCisgICAgaW8uVGV4dElPV3JhcHBlciBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcsIGVycm9yIGhhbmRsaW5nCisgICAgYmVoYXZpb3IsIGFuZCBsaW5lIGVuZGluZyhzKS4KKworICAgICIiIgorICAgIGlmICJ0IiBpbiBtb2RlOgorICAgICAgICBpZiAiYiIgaW4gbW9kZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogJXIiICUgKG1vZGUsKSkKKyAgICBlbHNlOgorICAgICAgICBpZiBlbmNvZGluZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFyZ3VtZW50ICdlbmNvZGluZycgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCisgICAgICAgIGlmIGVycm9ycyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFyZ3VtZW50ICdlcnJvcnMnIG5vdCBzdXBwb3J0ZWQgaW4gYmluYXJ5IG1vZGUiKQorICAgICAgICBpZiBuZXdsaW5lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ25ld2xpbmUnIG5vdCBzdXBwb3J0ZWQgaW4gYmluYXJ5IG1vZGUiKQorCisgICAgZ3pfbW9kZSA9IG1vZGUucmVwbGFjZSgidCIsICIiKQorICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgIGJpbmFyeV9maWxlID0gR3ppcEZpbGUoZmlsZW5hbWUsIGd6X21vZGUsIGNvbXByZXNzbGV2ZWwpCisgICAgZWxpZiBoYXNhdHRyKGZpbGVuYW1lLCAicmVhZCIpIG9yIGhhc2F0dHIoZmlsZW5hbWUsICJ3cml0ZSIpOgorICAgICAgICBiaW5hcnlfZmlsZSA9IEd6aXBGaWxlKE5vbmUsIGd6X21vZGUsIGNvbXByZXNzbGV2ZWwsIGZpbGVuYW1lKQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlsZW5hbWUgbXVzdCBiZSBhIHN0ciBvciBieXRlcyBvYmplY3QsIG9yIGEgZmlsZSIpCisKKyAgICBpZiAidCIgaW4gbW9kZToKKyAgICAgICAgcmV0dXJuIGlvLlRleHRJT1dyYXBwZXIoYmluYXJ5X2ZpbGUsIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGJpbmFyeV9maWxlCiAKIGRlZiB3cml0ZTMydShvdXRwdXQsIHZhbHVlKToKICAgICAjIFRoZSBMIGZvcm1hdCB3cml0ZXMgdGhlIGJpdCBwYXR0ZXJuIGNvcnJlY3RseSB3aGV0aGVyIHNpZ25lZAogICAgICMgb3IgdW5zaWduZWQuCiAgICAgb3V0cHV0LndyaXRlKHN0cnVjdC5wYWNrKCI8TCIsIHZhbHVlKSkKIAotZGVmIG9wZW4oZmlsZW5hbWUsIG1vZGU9InJiIiwgY29tcHJlc3NsZXZlbD05KToKLSAgICAiIiJTaG9ydGhhbmQgZm9yIEd6aXBGaWxlKGZpbGVuYW1lLCBtb2RlLCBjb21wcmVzc2xldmVsKS4KLQotICAgIFRoZSBmaWxlbmFtZSBhcmd1bWVudCBpcyByZXF1aXJlZDsgbW9kZSBkZWZhdWx0cyB0byAncmInCi0gICAgYW5kIGNvbXByZXNzbGV2ZWwgZGVmYXVsdHMgdG8gOS4KLQotICAgICIiIgotICAgIHJldHVybiBHemlwRmlsZShmaWxlbmFtZSwgbW9kZSwgY29tcHJlc3NsZXZlbCkKLQogY2xhc3MgX1BhZGRlZEZpbGU6CiAgICAgIiIiTWluaW1hbCByZWFkLW9ubHkgZmlsZSBvYmplY3QgdGhhdCBwcmVwZW5kcyBhIHN0cmluZyB0byB0aGUgY29udGVudHMKICAgICBvZiBhbiBhY3R1YWwgZmlsZS4gU2hvdWxkbid0IGJlIHVzZWQgb3V0c2lkZSBvZiBnemlwLnB5LCBhcyBpdCBsYWNrcwpAQCAtMTAzLDcgKzEyNiw3IEBACiAgICAgdGhlIGV4Y2VwdGlvbiBvZiB0aGUgcmVhZGludG8oKSBhbmQgdHJ1bmNhdGUoKSBtZXRob2RzLgogCiAgICAgVGhpcyBjbGFzcyBvbmx5IHN1cHBvcnRzIG9wZW5pbmcgZmlsZXMgaW4gYmluYXJ5IG1vZGUuIElmIHlvdSBuZWVkIHRvIG9wZW4gYQotICAgIGNvbXByZXNzZWQgZmlsZSBpbiB0ZXh0IG1vZGUsIHdyYXAgeW91ciBHemlwRmlsZSB3aXRoIGFuIGlvLlRleHRJT1dyYXBwZXIuCisgICAgY29tcHJlc3NlZCBmaWxlIGluIHRleHQgbW9kZSwgdXNlIHRoZSBnemlwLm9wZW4oKSBmdW5jdGlvbi4KIAogICAgICIiIgogCkBAIC0xNTEsNyArMTc0LDcgQEAKICAgICAgICAgIiIiCiAKICAgICAgICAgaWYgbW9kZSBhbmQgKCd0JyBpbiBtb2RlIG9yICdVJyBpbiBtb2RlKToKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoIk1vZGUgIiArIG1vZGUgKyAiIG5vdCBzdXBwb3J0ZWQiKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiB7IXJ9Ii5mb3JtYXQobW9kZSkpCiAgICAgICAgIGlmIG1vZGUgYW5kICdiJyBub3QgaW4gbW9kZToKICAgICAgICAgICAgIG1vZGUgKz0gJ2InCiAgICAgICAgIGlmIGZpbGVvYmogaXMgTm9uZToKQEAgLTE2MSwxMCArMTg0LDkgQEAKICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcykpOgogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gJycKICAgICAgICAgaWYgbW9kZSBpcyBOb25lOgotICAgICAgICAgICAgaWYgaGFzYXR0cihmaWxlb2JqLCAnbW9kZScpOiBtb2RlID0gZmlsZW9iai5tb2RlCi0gICAgICAgICAgICBlbHNlOiBtb2RlID0gJ3JiJworICAgICAgICAgICAgbW9kZSA9IGdldGF0dHIoZmlsZW9iaiwgJ21vZGUnLCAncmInKQogCi0gICAgICAgIGlmIG1vZGVbMDoxXSA9PSAncic6CisgICAgICAgIGlmIG1vZGUuc3RhcnRzd2l0aCgncicpOgogICAgICAgICAgICAgc2VsZi5tb2RlID0gUkVBRAogICAgICAgICAgICAgIyBTZXQgZmxhZyBpbmRpY2F0aW5nIHN0YXJ0IG9mIGEgbmV3IG1lbWJlcgogICAgICAgICAgICAgc2VsZi5fbmV3X21lbWJlciA9IFRydWUKQEAgLTE3OSw3ICsyMDEsNyBAQAogICAgICAgICAgICAgc2VsZi5taW5fcmVhZHNpemUgPSAxMDAKICAgICAgICAgICAgIGZpbGVvYmogPSBfUGFkZGVkRmlsZShmaWxlb2JqKQogCi0gICAgICAgIGVsaWYgbW9kZVswOjFdID09ICd3JyBvciBtb2RlWzA6MV0gPT0gJ2EnOgorICAgICAgICBlbGlmIG1vZGUuc3RhcnRzd2l0aCgoJ3cnLCAnYScpKToKICAgICAgICAgICAgIHNlbGYubW9kZSA9IFdSSVRFCiAgICAgICAgICAgICBzZWxmLl9pbml0X3dyaXRlKGZpbGVuYW1lKQogICAgICAgICAgICAgc2VsZi5jb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooY29tcHJlc3NsZXZlbCwKQEAgLTE4OCw3ICsyMTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemxpYi5ERUZfTUVNX0xFVkVMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoIk1vZGUgIiArIG1vZGUgKyAiIG5vdCBzdXBwb3J0ZWQiKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiB7IXJ9Ii5mb3JtYXQobW9kZSkpCiAKICAgICAgICAgc2VsZi5maWxlb2JqID0gZmlsZW9iagogICAgICAgICBzZWxmLm9mZnNldCA9IDAKQEAgLTM1Miw2ICszNzQsMjggQEAKICAgICAgICAgc2VsZi5vZmZzZXQgKz0gc2l6ZQogICAgICAgICByZXR1cm4gY2h1bmsKIAorICAgIGRlZiByZWFkMShzZWxmLCBzaXplPS0xKToKKyAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgaWYgc2VsZi5tb2RlICE9IFJFQUQ6CisgICAgICAgICAgICBpbXBvcnQgZXJybm8KKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoZXJybm8uRUJBREYsICJyZWFkMSgpIG9uIHdyaXRlLW9ubHkgR3ppcEZpbGUgb2JqZWN0IikKKworICAgICAgICBpZiBzZWxmLmV4dHJhc2l6ZSA8PSAwIGFuZCBzZWxmLmZpbGVvYmogaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBiJycKKworICAgICAgICAjIEZvciBjZXJ0YWluIGlucHV0IGRhdGEsIGEgc2luZ2xlIGNhbGwgdG8gX3JlYWQoKSBtYXkgbm90IHJldHVybgorICAgICAgICAjIGFueSBkYXRhLiBJbiB0aGlzIGNhc2UsIHJldHJ5IHVudGlsIHdlIGdldCBzb21lIGRhdGEgb3IgcmVhY2ggRU9GLgorICAgICAgICB3aGlsZSBzZWxmLmV4dHJhc2l6ZSA8PSAwIGFuZCBzZWxmLl9yZWFkKCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGlmIHNpemUgPCAwIG9yIHNpemUgPiBzZWxmLmV4dHJhc2l6ZToKKyAgICAgICAgICAgIHNpemUgPSBzZWxmLmV4dHJhc2l6ZQorCisgICAgICAgIG9mZnNldCA9IHNlbGYub2Zmc2V0IC0gc2VsZi5leHRyYXN0YXJ0CisgICAgICAgIGNodW5rID0gc2VsZi5leHRyYWJ1ZltvZmZzZXQ6IG9mZnNldCArIHNpemVdCisgICAgICAgIHNlbGYuZXh0cmFzaXplIC09IHNpemUKKyAgICAgICAgc2VsZi5vZmZzZXQgKz0gc2l6ZQorICAgICAgICByZXR1cm4gY2h1bmsKKwogICAgIGRlZiBwZWVrKHNlbGYsIG4pOgogICAgICAgICBpZiBzZWxmLm1vZGUgIT0gUkVBRDoKICAgICAgICAgICAgIGltcG9ydCBlcnJubwpkaWZmIC0tZ2l0IGEvTGliL2hlYXBxLnB5IGIvTGliL2hlYXBxLnB5CmluZGV4IGRlYzE1YWUuLjAwYjQyOWMgMTAwNjQ0Ci0tLSBhL0xpYi9oZWFwcS5weQorKysgYi9MaWIvaGVhcHEucHkKQEAgLTEyNyw4ICsxMjcsNyBAQAogX19hbGxfXyA9IFsnaGVhcHB1c2gnLCAnaGVhcHBvcCcsICdoZWFwaWZ5JywgJ2hlYXByZXBsYWNlJywgJ21lcmdlJywKICAgICAgICAgICAgJ25sYXJnZXN0JywgJ25zbWFsbGVzdCcsICdoZWFwcHVzaHBvcCddCiAKLWZyb20gaXRlcnRvb2xzIGltcG9ydCBpc2xpY2UsIHJlcGVhdCwgY291bnQsIHRlZSwgY2hhaW4KLWltcG9ydCBiaXNlY3QKK2Zyb20gaXRlcnRvb2xzIGltcG9ydCBpc2xpY2UsIGNvdW50LCB0ZWUsIGNoYWluCiAKIGRlZiBoZWFwcHVzaChoZWFwLCBpdGVtKToKICAgICAiIiJQdXNoIGl0ZW0gb250byBoZWFwLCBtYWludGFpbmluZyB0aGUgaGVhcCBpbnZhcmlhbnQuIiIiCkBAIC0xODAsNiArMTc5LDE5IEBACiAgICAgZm9yIGkgaW4gcmV2ZXJzZWQocmFuZ2Uobi8vMikpOgogICAgICAgICBfc2lmdHVwKHgsIGkpCiAKK2RlZiBfaGVhcHB1c2hwb3BfbWF4KGhlYXAsIGl0ZW0pOgorICAgICIiIk1heGhlYXAgdmVyc2lvbiBvZiBhIGhlYXBwdXNoIGZvbGxvd2VkIGJ5IGEgaGVhcHBvcC4iIiIKKyAgICBpZiBoZWFwIGFuZCBpdGVtIDwgaGVhcFswXToKKyAgICAgICAgaXRlbSwgaGVhcFswXSA9IGhlYXBbMF0sIGl0ZW0KKyAgICAgICAgX3NpZnR1cF9tYXgoaGVhcCwgMCkKKyAgICByZXR1cm4gaXRlbQorCitkZWYgX2hlYXBpZnlfbWF4KHgpOgorICAgICIiIlRyYW5zZm9ybSBsaXN0IGludG8gYSBtYXhoZWFwLCBpbi1wbGFjZSwgaW4gTyhsZW4oeCkpIHRpbWUuIiIiCisgICAgbiA9IGxlbih4KQorICAgIGZvciBpIGluIHJldmVyc2VkKHJhbmdlKG4vLzIpKToKKyAgICAgICAgX3NpZnR1cF9tYXgoeCwgaSkKKwogZGVmIG5sYXJnZXN0KG4sIGl0ZXJhYmxlKToKICAgICAiIiJGaW5kIHRoZSBuIGxhcmdlc3QgZWxlbWVudHMgaW4gYSBkYXRhc2V0LgogCkBAIC0yMDUsMzAgKzIxNywxNiBAQAogICAgICIiIgogICAgIGlmIG4gPCAwOgogICAgICAgICByZXR1cm4gW10KLSAgICBpZiBoYXNhdHRyKGl0ZXJhYmxlLCAnX19sZW5fXycpIGFuZCBuICogMTAgPD0gbGVuKGl0ZXJhYmxlKToKLSAgICAgICAgIyBGb3Igc21hbGxlciB2YWx1ZXMgb2YgbiwgdGhlIGJpc2VjdCBtZXRob2QgaXMgZmFzdGVyIHRoYW4gYSBtaW5oZWFwLgotICAgICAgICAjIEl0IGlzIGFsc28gbWVtb3J5IGVmZmljaWVudCwgY29uc3VtaW5nIG9ubHkgbiBlbGVtZW50cyBvZiBzcGFjZS4KLSAgICAgICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQotICAgICAgICByZXN1bHQgPSBzb3J0ZWQoaXNsaWNlKGl0LCAwLCBuKSkKLSAgICAgICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgaW5zb3J0ID0gYmlzZWN0Lmluc29ydAotICAgICAgICBwb3AgPSByZXN1bHQucG9wCi0gICAgICAgIGxvcyA9IHJlc3VsdFstMV0gICAgIyBsb3MgLS0+IExhcmdlc3Qgb2YgdGhlIG5zbWFsbGVzdAotICAgICAgICBmb3IgZWxlbSBpbiBpdDoKLSAgICAgICAgICAgIGlmIGVsZW0gPCBsb3M6Ci0gICAgICAgICAgICAgICAgaW5zb3J0KHJlc3VsdCwgZWxlbSkKLSAgICAgICAgICAgICAgICBwb3AoKQotICAgICAgICAgICAgICAgIGxvcyA9IHJlc3VsdFstMV0KKyAgICBpdCA9IGl0ZXIoaXRlcmFibGUpCisgICAgcmVzdWx0ID0gbGlzdChpc2xpY2UoaXQsIG4pKQorICAgIGlmIG5vdCByZXN1bHQ6CiAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAjIEFuIGFsdGVybmF0aXZlIGFwcHJvYWNoIG1hbmlmZXN0cyB0aGUgd2hvbGUgaXRlcmFibGUgaW4gbWVtb3J5IGJ1dAotICAgICMgc2F2ZXMgY29tcGFyaXNvbnMgYnkgaGVhcGlmeWluZyBhbGwgYXQgb25jZS4gIEFsc28sIHNhdmVzIHRpbWUKLSAgICAjIG92ZXIgYmlzZWN0Lmluc29ydCgpIHdoaWNoIGhhcyBPKG4pIGRhdGEgbW92ZW1lbnQgdGltZSBmb3IgZXZlcnkKLSAgICAjIGluc2VydGlvbi4gIEZpbmRpbmcgdGhlIG4gc21hbGxlc3Qgb2YgYW4gbSBsZW5ndGggaXRlcmFibGUgcmVxdWlyZXMKLSAgICAjICAgIE8obSkgKyBPKG4gbG9nIG0pIGNvbXBhcmlzb25zLgotICAgIGggPSBsaXN0KGl0ZXJhYmxlKQotICAgIGhlYXBpZnkoaCkKLSAgICByZXR1cm4gbGlzdChtYXAoaGVhcHBvcCwgcmVwZWF0KGgsIG1pbihuLCBsZW4oaCkpKSkpCisgICAgX2hlYXBpZnlfbWF4KHJlc3VsdCkKKyAgICBfaGVhcHB1c2hwb3AgPSBfaGVhcHB1c2hwb3BfbWF4CisgICAgZm9yIGVsZW0gaW4gaXQ6CisgICAgICAgIF9oZWFwcHVzaHBvcChyZXN1bHQsIGVsZW0pCisgICAgcmVzdWx0LnNvcnQoKQorICAgIHJldHVybiByZXN1bHQKIAogIyAnaGVhcCcgaXMgYSBoZWFwIGF0IGFsbCBpbmRpY2VzID49IHN0YXJ0cG9zLCBleGNlcHQgcG9zc2libHkgZm9yIHBvcy4gIHBvcwogIyBpcyB0aGUgaW5kZXggb2YgYSBsZWFmIHdpdGggYSBwb3NzaWJseSBvdXQtb2Ytb3JkZXIgdmFsdWUuICBSZXN0b3JlIHRoZQpAQCAtMzA2LDYgKzMwNCw0MiBAQAogICAgIGhlYXBbcG9zXSA9IG5ld2l0ZW0KICAgICBfc2lmdGRvd24oaGVhcCwgc3RhcnRwb3MsIHBvcykKIAorZGVmIF9zaWZ0ZG93bl9tYXgoaGVhcCwgc3RhcnRwb3MsIHBvcyk6CisgICAgJ01heGhlYXAgdmFyaWFudCBvZiBfc2lmdGRvd24nCisgICAgbmV3aXRlbSA9IGhlYXBbcG9zXQorICAgICMgRm9sbG93IHRoZSBwYXRoIHRvIHRoZSByb290LCBtb3ZpbmcgcGFyZW50cyBkb3duIHVudGlsIGZpbmRpbmcgYSBwbGFjZQorICAgICMgbmV3aXRlbSBmaXRzLgorICAgIHdoaWxlIHBvcyA+IHN0YXJ0cG9zOgorICAgICAgICBwYXJlbnRwb3MgPSAocG9zIC0gMSkgPj4gMQorICAgICAgICBwYXJlbnQgPSBoZWFwW3BhcmVudHBvc10KKyAgICAgICAgaWYgcGFyZW50IDwgbmV3aXRlbToKKyAgICAgICAgICAgIGhlYXBbcG9zXSA9IHBhcmVudAorICAgICAgICAgICAgcG9zID0gcGFyZW50cG9zCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBicmVhaworICAgIGhlYXBbcG9zXSA9IG5ld2l0ZW0KKworZGVmIF9zaWZ0dXBfbWF4KGhlYXAsIHBvcyk6CisgICAgJ01heGhlYXAgdmFyaWFudCBvZiBfc2lmdHVwJworICAgIGVuZHBvcyA9IGxlbihoZWFwKQorICAgIHN0YXJ0cG9zID0gcG9zCisgICAgbmV3aXRlbSA9IGhlYXBbcG9zXQorICAgICMgQnViYmxlIHVwIHRoZSBsYXJnZXIgY2hpbGQgdW50aWwgaGl0dGluZyBhIGxlYWYuCisgICAgY2hpbGRwb3MgPSAyKnBvcyArIDEgICAgIyBsZWZ0bW9zdCBjaGlsZCBwb3NpdGlvbgorICAgIHdoaWxlIGNoaWxkcG9zIDwgZW5kcG9zOgorICAgICAgICAjIFNldCBjaGlsZHBvcyB0byBpbmRleCBvZiBsYXJnZXIgY2hpbGQuCisgICAgICAgIHJpZ2h0cG9zID0gY2hpbGRwb3MgKyAxCisgICAgICAgIGlmIHJpZ2h0cG9zIDwgZW5kcG9zIGFuZCBub3QgaGVhcFtyaWdodHBvc10gPCBoZWFwW2NoaWxkcG9zXToKKyAgICAgICAgICAgIGNoaWxkcG9zID0gcmlnaHRwb3MKKyAgICAgICAgIyBNb3ZlIHRoZSBsYXJnZXIgY2hpbGQgdXAuCisgICAgICAgIGhlYXBbcG9zXSA9IGhlYXBbY2hpbGRwb3NdCisgICAgICAgIHBvcyA9IGNoaWxkcG9zCisgICAgICAgIGNoaWxkcG9zID0gMipwb3MgKyAxCisgICAgIyBUaGUgbGVhZiBhdCBwb3MgaXMgZW1wdHkgbm93LiAgUHV0IG5ld2l0ZW0gdGhlcmUsIGFuZCBidWJibGUgaXQgdXAKKyAgICAjIHRvIGl0cyBmaW5hbCByZXN0aW5nIHBsYWNlIChieSBzaWZ0aW5nIGl0cyBwYXJlbnRzIGRvd24pLgorICAgIGhlYXBbcG9zXSA9IG5ld2l0ZW0KKyAgICBfc2lmdGRvd25fbWF4KGhlYXAsIHN0YXJ0cG9zLCBwb3MpCisKICMgSWYgYXZhaWxhYmxlLCB1c2UgQyBpbXBsZW1lbnRhdGlvbgogdHJ5OgogICAgIGZyb20gX2hlYXBxIGltcG9ydCAqCmRpZmYgLS1naXQgYS9MaWIvaG1hYy5weSBiL0xpYi9obWFjLnB5CmluZGV4IDk1NmZjNjUuLjQyOTdhNzEgMTAwNjQ0Ci0tLSBhL0xpYi9obWFjLnB5CisrKyBiL0xpYi9obWFjLnB5CkBAIC00LDYgKzQsNyBAQAogIiIiCiAKIGltcG9ydCB3YXJuaW5ncyBhcyBfd2FybmluZ3MKK2Zyb20gb3BlcmF0b3IgaW1wb3J0IF9jb21wYXJlX2RpZ2VzdCBhcyBjb21wYXJlX2RpZ2VzdAogCiB0cmFuc181QyA9IGJ5dGVzKCh4IF4gMHg1QykgZm9yIHggaW4gcmFuZ2UoMjU2KSkKIHRyYW5zXzM2ID0gYnl0ZXMoKHggXiAweDM2KSBmb3IgeCBpbiByYW5nZSgyNTYpKQpAQCAtMTMsNiArMTQsNyBAQAogZGlnZXN0X3NpemUgPSBOb25lCiAKIAorCiBjbGFzcyBITUFDOgogICAgICIiIlJGQyAyMTA0IEhNQUMgY2xhc3MuICBBbHNvIGNvbXBsaWVzIHdpdGggUkZDIDQyMzEuCiAKQEAgLTMzLDcgKzM1LDcgQEAKICAgICAgICAgIiIiCiAKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoa2V5LCBieXRlcyk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzLCBidXQgZ290ICVyIiAlIHR5cGUoa2V5KS5fX25hbWVfXykKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigia2V5OiBleHBlY3RlZCBieXRlcywgYnV0IGdvdCAlciIgJSB0eXBlKGtleSkuX19uYW1lX18pCiAKICAgICAgICAgaWYgZGlnZXN0bW9kIGlzIE5vbmU6CiAgICAgICAgICAgICBpbXBvcnQgaGFzaGxpYgpkaWZmIC0tZ2l0IGEvTGliL2h0bWwvZW50aXRpZXMucHkgYi9MaWIvaHRtbC9lbnRpdGllcy5weQppbmRleCBlMmI3YmYxLi5lODkxYWQ2IDEwMDY0NAotLS0gYS9MaWIvaHRtbC9lbnRpdGllcy5weQorKysgYi9MaWIvaHRtbC9lbnRpdGllcy5weQpAQCAtMjU2LDYgKzI1NiwyMjQyIEBACiAgICAgJ3p3bmonOiAgICAgMHgyMDBjLCAjIHplcm8gd2lkdGggbm9uLWpvaW5lciwgVSsyMDBDIE5FVyBSRkMgMjA3MAogfQogCisKKyMgbWFwcyB0aGUgSFRNTDUgbmFtZWQgY2hhcmFjdGVyIHJlZmVyZW5jZXMgdG8gdGhlIGVxdWl2YWxlbnQgVW5pY29kZSBjaGFyYWN0ZXIocykKK2h0bWw1ID0geworICAgICdBYWN1dGUnOiAnXHhjMScsCisgICAgJ2FhY3V0ZSc6ICdceGUxJywKKyAgICAnQWFjdXRlOyc6ICdceGMxJywKKyAgICAnYWFjdXRlOyc6ICdceGUxJywKKyAgICAnQWJyZXZlOyc6ICdcdTAxMDInLAorICAgICdhYnJldmU7JzogJ1x1MDEwMycsCisgICAgJ2FjOyc6ICdcdTIyM2UnLAorICAgICdhY2Q7JzogJ1x1MjIzZicsCisgICAgJ2FjRTsnOiAnXHUyMjNlXHUwMzMzJywKKyAgICAnQWNpcmMnOiAnXHhjMicsCisgICAgJ2FjaXJjJzogJ1x4ZTInLAorICAgICdBY2lyYzsnOiAnXHhjMicsCisgICAgJ2FjaXJjOyc6ICdceGUyJywKKyAgICAnYWN1dGUnOiAnXHhiNCcsCisgICAgJ2FjdXRlOyc6ICdceGI0JywKKyAgICAnQWN5Oyc6ICdcdTA0MTAnLAorICAgICdhY3k7JzogJ1x1MDQzMCcsCisgICAgJ0FFbGlnJzogJ1x4YzYnLAorICAgICdhZWxpZyc6ICdceGU2JywKKyAgICAnQUVsaWc7JzogJ1x4YzYnLAorICAgICdhZWxpZzsnOiAnXHhlNicsCisgICAgJ2FmOyc6ICdcdTIwNjEnLAorICAgICdBZnI7JzogJ1xVMDAwMWQ1MDQnLAorICAgICdhZnI7JzogJ1xVMDAwMWQ1MWUnLAorICAgICdBZ3JhdmUnOiAnXHhjMCcsCisgICAgJ2FncmF2ZSc6ICdceGUwJywKKyAgICAnQWdyYXZlOyc6ICdceGMwJywKKyAgICAnYWdyYXZlOyc6ICdceGUwJywKKyAgICAnYWxlZnN5bTsnOiAnXHUyMTM1JywKKyAgICAnYWxlcGg7JzogJ1x1MjEzNScsCisgICAgJ0FscGhhOyc6ICdcdTAzOTEnLAorICAgICdhbHBoYTsnOiAnXHUwM2IxJywKKyAgICAnQW1hY3I7JzogJ1x1MDEwMCcsCisgICAgJ2FtYWNyOyc6ICdcdTAxMDEnLAorICAgICdhbWFsZzsnOiAnXHUyYTNmJywKKyAgICAnQU1QJzogJyYnLAorICAgICdhbXAnOiAnJicsCisgICAgJ0FNUDsnOiAnJicsCisgICAgJ2FtcDsnOiAnJicsCisgICAgJ0FuZDsnOiAnXHUyYTUzJywKKyAgICAnYW5kOyc6ICdcdTIyMjcnLAorICAgICdhbmRhbmQ7JzogJ1x1MmE1NScsCisgICAgJ2FuZGQ7JzogJ1x1MmE1YycsCisgICAgJ2FuZHNsb3BlOyc6ICdcdTJhNTgnLAorICAgICdhbmR2Oyc6ICdcdTJhNWEnLAorICAgICdhbmc7JzogJ1x1MjIyMCcsCisgICAgJ2FuZ2U7JzogJ1x1MjlhNCcsCisgICAgJ2FuZ2xlOyc6ICdcdTIyMjAnLAorICAgICdhbmdtc2Q7JzogJ1x1MjIyMScsCisgICAgJ2FuZ21zZGFhOyc6ICdcdTI5YTgnLAorICAgICdhbmdtc2RhYjsnOiAnXHUyOWE5JywKKyAgICAnYW5nbXNkYWM7JzogJ1x1MjlhYScsCisgICAgJ2FuZ21zZGFkOyc6ICdcdTI5YWInLAorICAgICdhbmdtc2RhZTsnOiAnXHUyOWFjJywKKyAgICAnYW5nbXNkYWY7JzogJ1x1MjlhZCcsCisgICAgJ2FuZ21zZGFnOyc6ICdcdTI5YWUnLAorICAgICdhbmdtc2RhaDsnOiAnXHUyOWFmJywKKyAgICAnYW5ncnQ7JzogJ1x1MjIxZicsCisgICAgJ2FuZ3J0dmI7JzogJ1x1MjJiZScsCisgICAgJ2FuZ3J0dmJkOyc6ICdcdTI5OWQnLAorICAgICdhbmdzcGg7JzogJ1x1MjIyMicsCisgICAgJ2FuZ3N0Oyc6ICdceGM1JywKKyAgICAnYW5nemFycjsnOiAnXHUyMzdjJywKKyAgICAnQW9nb247JzogJ1x1MDEwNCcsCisgICAgJ2FvZ29uOyc6ICdcdTAxMDUnLAorICAgICdBb3BmOyc6ICdcVTAwMDFkNTM4JywKKyAgICAnYW9wZjsnOiAnXFUwMDAxZDU1MicsCisgICAgJ2FwOyc6ICdcdTIyNDgnLAorICAgICdhcGFjaXI7JzogJ1x1MmE2ZicsCisgICAgJ2FwRTsnOiAnXHUyYTcwJywKKyAgICAnYXBlOyc6ICdcdTIyNGEnLAorICAgICdhcGlkOyc6ICdcdTIyNGInLAorICAgICdhcG9zOyc6ICInIiwKKyAgICAnQXBwbHlGdW5jdGlvbjsnOiAnXHUyMDYxJywKKyAgICAnYXBwcm94Oyc6ICdcdTIyNDgnLAorICAgICdhcHByb3hlcTsnOiAnXHUyMjRhJywKKyAgICAnQXJpbmcnOiAnXHhjNScsCisgICAgJ2FyaW5nJzogJ1x4ZTUnLAorICAgICdBcmluZzsnOiAnXHhjNScsCisgICAgJ2FyaW5nOyc6ICdceGU1JywKKyAgICAnQXNjcjsnOiAnXFUwMDAxZDQ5YycsCisgICAgJ2FzY3I7JzogJ1xVMDAwMWQ0YjYnLAorICAgICdBc3NpZ247JzogJ1x1MjI1NCcsCisgICAgJ2FzdDsnOiAnKicsCisgICAgJ2FzeW1wOyc6ICdcdTIyNDgnLAorICAgICdhc3ltcGVxOyc6ICdcdTIyNGQnLAorICAgICdBdGlsZGUnOiAnXHhjMycsCisgICAgJ2F0aWxkZSc6ICdceGUzJywKKyAgICAnQXRpbGRlOyc6ICdceGMzJywKKyAgICAnYXRpbGRlOyc6ICdceGUzJywKKyAgICAnQXVtbCc6ICdceGM0JywKKyAgICAnYXVtbCc6ICdceGU0JywKKyAgICAnQXVtbDsnOiAnXHhjNCcsCisgICAgJ2F1bWw7JzogJ1x4ZTQnLAorICAgICdhd2NvbmludDsnOiAnXHUyMjMzJywKKyAgICAnYXdpbnQ7JzogJ1x1MmExMScsCisgICAgJ2JhY2tjb25nOyc6ICdcdTIyNGMnLAorICAgICdiYWNrZXBzaWxvbjsnOiAnXHUwM2Y2JywKKyAgICAnYmFja3ByaW1lOyc6ICdcdTIwMzUnLAorICAgICdiYWNrc2ltOyc6ICdcdTIyM2QnLAorICAgICdiYWNrc2ltZXE7JzogJ1x1MjJjZCcsCisgICAgJ0JhY2tzbGFzaDsnOiAnXHUyMjE2JywKKyAgICAnQmFydjsnOiAnXHUyYWU3JywKKyAgICAnYmFydmVlOyc6ICdcdTIyYmQnLAorICAgICdCYXJ3ZWQ7JzogJ1x1MjMwNicsCisgICAgJ2JhcndlZDsnOiAnXHUyMzA1JywKKyAgICAnYmFyd2VkZ2U7JzogJ1x1MjMwNScsCisgICAgJ2Jicms7JzogJ1x1MjNiNScsCisgICAgJ2Jicmt0YnJrOyc6ICdcdTIzYjYnLAorICAgICdiY29uZzsnOiAnXHUyMjRjJywKKyAgICAnQmN5Oyc6ICdcdTA0MTEnLAorICAgICdiY3k7JzogJ1x1MDQzMScsCisgICAgJ2JkcXVvOyc6ICdcdTIwMWUnLAorICAgICdiZWNhdXM7JzogJ1x1MjIzNScsCisgICAgJ0JlY2F1c2U7JzogJ1x1MjIzNScsCisgICAgJ2JlY2F1c2U7JzogJ1x1MjIzNScsCisgICAgJ2JlbXB0eXY7JzogJ1x1MjliMCcsCisgICAgJ2JlcHNpOyc6ICdcdTAzZjYnLAorICAgICdiZXJub3U7JzogJ1x1MjEyYycsCisgICAgJ0Jlcm5vdWxsaXM7JzogJ1x1MjEyYycsCisgICAgJ0JldGE7JzogJ1x1MDM5MicsCisgICAgJ2JldGE7JzogJ1x1MDNiMicsCisgICAgJ2JldGg7JzogJ1x1MjEzNicsCisgICAgJ2JldHdlZW47JzogJ1x1MjI2YycsCisgICAgJ0JmcjsnOiAnXFUwMDAxZDUwNScsCisgICAgJ2JmcjsnOiAnXFUwMDAxZDUxZicsCisgICAgJ2JpZ2NhcDsnOiAnXHUyMmMyJywKKyAgICAnYmlnY2lyYzsnOiAnXHUyNWVmJywKKyAgICAnYmlnY3VwOyc6ICdcdTIyYzMnLAorICAgICdiaWdvZG90Oyc6ICdcdTJhMDAnLAorICAgICdiaWdvcGx1czsnOiAnXHUyYTAxJywKKyAgICAnYmlnb3RpbWVzOyc6ICdcdTJhMDInLAorICAgICdiaWdzcWN1cDsnOiAnXHUyYTA2JywKKyAgICAnYmlnc3RhcjsnOiAnXHUyNjA1JywKKyAgICAnYmlndHJpYW5nbGVkb3duOyc6ICdcdTI1YmQnLAorICAgICdiaWd0cmlhbmdsZXVwOyc6ICdcdTI1YjMnLAorICAgICdiaWd1cGx1czsnOiAnXHUyYTA0JywKKyAgICAnYmlndmVlOyc6ICdcdTIyYzEnLAorICAgICdiaWd3ZWRnZTsnOiAnXHUyMmMwJywKKyAgICAnYmthcm93Oyc6ICdcdTI5MGQnLAorICAgICdibGFja2xvemVuZ2U7JzogJ1x1MjllYicsCisgICAgJ2JsYWNrc3F1YXJlOyc6ICdcdTI1YWEnLAorICAgICdibGFja3RyaWFuZ2xlOyc6ICdcdTI1YjQnLAorICAgICdibGFja3RyaWFuZ2xlZG93bjsnOiAnXHUyNWJlJywKKyAgICAnYmxhY2t0cmlhbmdsZWxlZnQ7JzogJ1x1MjVjMicsCisgICAgJ2JsYWNrdHJpYW5nbGVyaWdodDsnOiAnXHUyNWI4JywKKyAgICAnYmxhbms7JzogJ1x1MjQyMycsCisgICAgJ2JsazEyOyc6ICdcdTI1OTInLAorICAgICdibGsxNDsnOiAnXHUyNTkxJywKKyAgICAnYmxrMzQ7JzogJ1x1MjU5MycsCisgICAgJ2Jsb2NrOyc6ICdcdTI1ODgnLAorICAgICdibmU7JzogJz1cdTIwZTUnLAorICAgICdibmVxdWl2Oyc6ICdcdTIyNjFcdTIwZTUnLAorICAgICdiTm90Oyc6ICdcdTJhZWQnLAorICAgICdibm90Oyc6ICdcdTIzMTAnLAorICAgICdCb3BmOyc6ICdcVTAwMDFkNTM5JywKKyAgICAnYm9wZjsnOiAnXFUwMDAxZDU1MycsCisgICAgJ2JvdDsnOiAnXHUyMmE1JywKKyAgICAnYm90dG9tOyc6ICdcdTIyYTUnLAorICAgICdib3d0aWU7JzogJ1x1MjJjOCcsCisgICAgJ2JveGJveDsnOiAnXHUyOWM5JywKKyAgICAnYm94REw7JzogJ1x1MjU1NycsCisgICAgJ2JveERsOyc6ICdcdTI1NTYnLAorICAgICdib3hkTDsnOiAnXHUyNTU1JywKKyAgICAnYm94ZGw7JzogJ1x1MjUxMCcsCisgICAgJ2JveERSOyc6ICdcdTI1NTQnLAorICAgICdib3hEcjsnOiAnXHUyNTUzJywKKyAgICAnYm94ZFI7JzogJ1x1MjU1MicsCisgICAgJ2JveGRyOyc6ICdcdTI1MGMnLAorICAgICdib3hIOyc6ICdcdTI1NTAnLAorICAgICdib3hoOyc6ICdcdTI1MDAnLAorICAgICdib3hIRDsnOiAnXHUyNTY2JywKKyAgICAnYm94SGQ7JzogJ1x1MjU2NCcsCisgICAgJ2JveGhEOyc6ICdcdTI1NjUnLAorICAgICdib3hoZDsnOiAnXHUyNTJjJywKKyAgICAnYm94SFU7JzogJ1x1MjU2OScsCisgICAgJ2JveEh1Oyc6ICdcdTI1NjcnLAorICAgICdib3hoVTsnOiAnXHUyNTY4JywKKyAgICAnYm94aHU7JzogJ1x1MjUzNCcsCisgICAgJ2JveG1pbnVzOyc6ICdcdTIyOWYnLAorICAgICdib3hwbHVzOyc6ICdcdTIyOWUnLAorICAgICdib3h0aW1lczsnOiAnXHUyMmEwJywKKyAgICAnYm94VUw7JzogJ1x1MjU1ZCcsCisgICAgJ2JveFVsOyc6ICdcdTI1NWMnLAorICAgICdib3h1TDsnOiAnXHUyNTViJywKKyAgICAnYm94dWw7JzogJ1x1MjUxOCcsCisgICAgJ2JveFVSOyc6ICdcdTI1NWEnLAorICAgICdib3hVcjsnOiAnXHUyNTU5JywKKyAgICAnYm94dVI7JzogJ1x1MjU1OCcsCisgICAgJ2JveHVyOyc6ICdcdTI1MTQnLAorICAgICdib3hWOyc6ICdcdTI1NTEnLAorICAgICdib3h2Oyc6ICdcdTI1MDInLAorICAgICdib3hWSDsnOiAnXHUyNTZjJywKKyAgICAnYm94Vmg7JzogJ1x1MjU2YicsCisgICAgJ2JveHZIOyc6ICdcdTI1NmEnLAorICAgICdib3h2aDsnOiAnXHUyNTNjJywKKyAgICAnYm94Vkw7JzogJ1x1MjU2MycsCisgICAgJ2JveFZsOyc6ICdcdTI1NjInLAorICAgICdib3h2TDsnOiAnXHUyNTYxJywKKyAgICAnYm94dmw7JzogJ1x1MjUyNCcsCisgICAgJ2JveFZSOyc6ICdcdTI1NjAnLAorICAgICdib3hWcjsnOiAnXHUyNTVmJywKKyAgICAnYm94dlI7JzogJ1x1MjU1ZScsCisgICAgJ2JveHZyOyc6ICdcdTI1MWMnLAorICAgICdicHJpbWU7JzogJ1x1MjAzNScsCisgICAgJ0JyZXZlOyc6ICdcdTAyZDgnLAorICAgICdicmV2ZTsnOiAnXHUwMmQ4JywKKyAgICAnYnJ2YmFyJzogJ1x4YTYnLAorICAgICdicnZiYXI7JzogJ1x4YTYnLAorICAgICdCc2NyOyc6ICdcdTIxMmMnLAorICAgICdic2NyOyc6ICdcVTAwMDFkNGI3JywKKyAgICAnYnNlbWk7JzogJ1x1MjA0ZicsCisgICAgJ2JzaW07JzogJ1x1MjIzZCcsCisgICAgJ2JzaW1lOyc6ICdcdTIyY2QnLAorICAgICdic29sOyc6ICdcXCcsCisgICAgJ2Jzb2xiOyc6ICdcdTI5YzUnLAorICAgICdic29saHN1YjsnOiAnXHUyN2M4JywKKyAgICAnYnVsbDsnOiAnXHUyMDIyJywKKyAgICAnYnVsbGV0Oyc6ICdcdTIwMjInLAorICAgICdidW1wOyc6ICdcdTIyNGUnLAorICAgICdidW1wRTsnOiAnXHUyYWFlJywKKyAgICAnYnVtcGU7JzogJ1x1MjI0ZicsCisgICAgJ0J1bXBlcTsnOiAnXHUyMjRlJywKKyAgICAnYnVtcGVxOyc6ICdcdTIyNGYnLAorICAgICdDYWN1dGU7JzogJ1x1MDEwNicsCisgICAgJ2NhY3V0ZTsnOiAnXHUwMTA3JywKKyAgICAnQ2FwOyc6ICdcdTIyZDInLAorICAgICdjYXA7JzogJ1x1MjIyOScsCisgICAgJ2NhcGFuZDsnOiAnXHUyYTQ0JywKKyAgICAnY2FwYnJjdXA7JzogJ1x1MmE0OScsCisgICAgJ2NhcGNhcDsnOiAnXHUyYTRiJywKKyAgICAnY2FwY3VwOyc6ICdcdTJhNDcnLAorICAgICdjYXBkb3Q7JzogJ1x1MmE0MCcsCisgICAgJ0NhcGl0YWxEaWZmZXJlbnRpYWxEOyc6ICdcdTIxNDUnLAorICAgICdjYXBzOyc6ICdcdTIyMjlcdWZlMDAnLAorICAgICdjYXJldDsnOiAnXHUyMDQxJywKKyAgICAnY2Fyb247JzogJ1x1MDJjNycsCisgICAgJ0NheWxleXM7JzogJ1x1MjEyZCcsCisgICAgJ2NjYXBzOyc6ICdcdTJhNGQnLAorICAgICdDY2Fyb247JzogJ1x1MDEwYycsCisgICAgJ2NjYXJvbjsnOiAnXHUwMTBkJywKKyAgICAnQ2NlZGlsJzogJ1x4YzcnLAorICAgICdjY2VkaWwnOiAnXHhlNycsCisgICAgJ0NjZWRpbDsnOiAnXHhjNycsCisgICAgJ2NjZWRpbDsnOiAnXHhlNycsCisgICAgJ0NjaXJjOyc6ICdcdTAxMDgnLAorICAgICdjY2lyYzsnOiAnXHUwMTA5JywKKyAgICAnQ2NvbmludDsnOiAnXHUyMjMwJywKKyAgICAnY2N1cHM7JzogJ1x1MmE0YycsCisgICAgJ2NjdXBzc207JzogJ1x1MmE1MCcsCisgICAgJ0Nkb3Q7JzogJ1x1MDEwYScsCisgICAgJ2Nkb3Q7JzogJ1x1MDEwYicsCisgICAgJ2NlZGlsJzogJ1x4YjgnLAorICAgICdjZWRpbDsnOiAnXHhiOCcsCisgICAgJ0NlZGlsbGE7JzogJ1x4YjgnLAorICAgICdjZW1wdHl2Oyc6ICdcdTI5YjInLAorICAgICdjZW50JzogJ1x4YTInLAorICAgICdjZW50Oyc6ICdceGEyJywKKyAgICAnQ2VudGVyRG90Oyc6ICdceGI3JywKKyAgICAnY2VudGVyZG90Oyc6ICdceGI3JywKKyAgICAnQ2ZyOyc6ICdcdTIxMmQnLAorICAgICdjZnI7JzogJ1xVMDAwMWQ1MjAnLAorICAgICdDSGN5Oyc6ICdcdTA0MjcnLAorICAgICdjaGN5Oyc6ICdcdTA0NDcnLAorICAgICdjaGVjazsnOiAnXHUyNzEzJywKKyAgICAnY2hlY2ttYXJrOyc6ICdcdTI3MTMnLAorICAgICdDaGk7JzogJ1x1MDNhNycsCisgICAgJ2NoaTsnOiAnXHUwM2M3JywKKyAgICAnY2lyOyc6ICdcdTI1Y2InLAorICAgICdjaXJjOyc6ICdcdTAyYzYnLAorICAgICdjaXJjZXE7JzogJ1x1MjI1NycsCisgICAgJ2NpcmNsZWFycm93bGVmdDsnOiAnXHUyMWJhJywKKyAgICAnY2lyY2xlYXJyb3dyaWdodDsnOiAnXHUyMWJiJywKKyAgICAnY2lyY2xlZGFzdDsnOiAnXHUyMjliJywKKyAgICAnY2lyY2xlZGNpcmM7JzogJ1x1MjI5YScsCisgICAgJ2NpcmNsZWRkYXNoOyc6ICdcdTIyOWQnLAorICAgICdDaXJjbGVEb3Q7JzogJ1x1MjI5OScsCisgICAgJ2NpcmNsZWRSOyc6ICdceGFlJywKKyAgICAnY2lyY2xlZFM7JzogJ1x1MjRjOCcsCisgICAgJ0NpcmNsZU1pbnVzOyc6ICdcdTIyOTYnLAorICAgICdDaXJjbGVQbHVzOyc6ICdcdTIyOTUnLAorICAgICdDaXJjbGVUaW1lczsnOiAnXHUyMjk3JywKKyAgICAnY2lyRTsnOiAnXHUyOWMzJywKKyAgICAnY2lyZTsnOiAnXHUyMjU3JywKKyAgICAnY2lyZm5pbnQ7JzogJ1x1MmExMCcsCisgICAgJ2Npcm1pZDsnOiAnXHUyYWVmJywKKyAgICAnY2lyc2NpcjsnOiAnXHUyOWMyJywKKyAgICAnQ2xvY2t3aXNlQ29udG91ckludGVncmFsOyc6ICdcdTIyMzInLAorICAgICdDbG9zZUN1cmx5RG91YmxlUXVvdGU7JzogJ1x1MjAxZCcsCisgICAgJ0Nsb3NlQ3VybHlRdW90ZTsnOiAnXHUyMDE5JywKKyAgICAnY2x1YnM7JzogJ1x1MjY2MycsCisgICAgJ2NsdWJzdWl0Oyc6ICdcdTI2NjMnLAorICAgICdDb2xvbjsnOiAnXHUyMjM3JywKKyAgICAnY29sb247JzogJzonLAorICAgICdDb2xvbmU7JzogJ1x1MmE3NCcsCisgICAgJ2NvbG9uZTsnOiAnXHUyMjU0JywKKyAgICAnY29sb25lcTsnOiAnXHUyMjU0JywKKyAgICAnY29tbWE7JzogJywnLAorICAgICdjb21tYXQ7JzogJ0AnLAorICAgICdjb21wOyc6ICdcdTIyMDEnLAorICAgICdjb21wZm47JzogJ1x1MjIxOCcsCisgICAgJ2NvbXBsZW1lbnQ7JzogJ1x1MjIwMScsCisgICAgJ2NvbXBsZXhlczsnOiAnXHUyMTAyJywKKyAgICAnY29uZzsnOiAnXHUyMjQ1JywKKyAgICAnY29uZ2RvdDsnOiAnXHUyYTZkJywKKyAgICAnQ29uZ3J1ZW50Oyc6ICdcdTIyNjEnLAorICAgICdDb25pbnQ7JzogJ1x1MjIyZicsCisgICAgJ2NvbmludDsnOiAnXHUyMjJlJywKKyAgICAnQ29udG91ckludGVncmFsOyc6ICdcdTIyMmUnLAorICAgICdDb3BmOyc6ICdcdTIxMDInLAorICAgICdjb3BmOyc6ICdcVTAwMDFkNTU0JywKKyAgICAnY29wcm9kOyc6ICdcdTIyMTAnLAorICAgICdDb3Byb2R1Y3Q7JzogJ1x1MjIxMCcsCisgICAgJ0NPUFknOiAnXHhhOScsCisgICAgJ2NvcHknOiAnXHhhOScsCisgICAgJ0NPUFk7JzogJ1x4YTknLAorICAgICdjb3B5Oyc6ICdceGE5JywKKyAgICAnY29weXNyOyc6ICdcdTIxMTcnLAorICAgICdDb3VudGVyQ2xvY2t3aXNlQ29udG91ckludGVncmFsOyc6ICdcdTIyMzMnLAorICAgICdjcmFycjsnOiAnXHUyMWI1JywKKyAgICAnQ3Jvc3M7JzogJ1x1MmEyZicsCisgICAgJ2Nyb3NzOyc6ICdcdTI3MTcnLAorICAgICdDc2NyOyc6ICdcVTAwMDFkNDllJywKKyAgICAnY3NjcjsnOiAnXFUwMDAxZDRiOCcsCisgICAgJ2NzdWI7JzogJ1x1MmFjZicsCisgICAgJ2NzdWJlOyc6ICdcdTJhZDEnLAorICAgICdjc3VwOyc6ICdcdTJhZDAnLAorICAgICdjc3VwZTsnOiAnXHUyYWQyJywKKyAgICAnY3Rkb3Q7JzogJ1x1MjJlZicsCisgICAgJ2N1ZGFycmw7JzogJ1x1MjkzOCcsCisgICAgJ2N1ZGFycnI7JzogJ1x1MjkzNScsCisgICAgJ2N1ZXByOyc6ICdcdTIyZGUnLAorICAgICdjdWVzYzsnOiAnXHUyMmRmJywKKyAgICAnY3VsYXJyOyc6ICdcdTIxYjYnLAorICAgICdjdWxhcnJwOyc6ICdcdTI5M2QnLAorICAgICdDdXA7JzogJ1x1MjJkMycsCisgICAgJ2N1cDsnOiAnXHUyMjJhJywKKyAgICAnY3VwYnJjYXA7JzogJ1x1MmE0OCcsCisgICAgJ0N1cENhcDsnOiAnXHUyMjRkJywKKyAgICAnY3VwY2FwOyc6ICdcdTJhNDYnLAorICAgICdjdXBjdXA7JzogJ1x1MmE0YScsCisgICAgJ2N1cGRvdDsnOiAnXHUyMjhkJywKKyAgICAnY3Vwb3I7JzogJ1x1MmE0NScsCisgICAgJ2N1cHM7JzogJ1x1MjIyYVx1ZmUwMCcsCisgICAgJ2N1cmFycjsnOiAnXHUyMWI3JywKKyAgICAnY3VyYXJybTsnOiAnXHUyOTNjJywKKyAgICAnY3VybHllcXByZWM7JzogJ1x1MjJkZScsCisgICAgJ2N1cmx5ZXFzdWNjOyc6ICdcdTIyZGYnLAorICAgICdjdXJseXZlZTsnOiAnXHUyMmNlJywKKyAgICAnY3VybHl3ZWRnZTsnOiAnXHUyMmNmJywKKyAgICAnY3VycmVuJzogJ1x4YTQnLAorICAgICdjdXJyZW47JzogJ1x4YTQnLAorICAgICdjdXJ2ZWFycm93bGVmdDsnOiAnXHUyMWI2JywKKyAgICAnY3VydmVhcnJvd3JpZ2h0Oyc6ICdcdTIxYjcnLAorICAgICdjdXZlZTsnOiAnXHUyMmNlJywKKyAgICAnY3V3ZWQ7JzogJ1x1MjJjZicsCisgICAgJ2N3Y29uaW50Oyc6ICdcdTIyMzInLAorICAgICdjd2ludDsnOiAnXHUyMjMxJywKKyAgICAnY3lsY3R5Oyc6ICdcdTIzMmQnLAorICAgICdEYWdnZXI7JzogJ1x1MjAyMScsCisgICAgJ2RhZ2dlcjsnOiAnXHUyMDIwJywKKyAgICAnZGFsZXRoOyc6ICdcdTIxMzgnLAorICAgICdEYXJyOyc6ICdcdTIxYTEnLAorICAgICdkQXJyOyc6ICdcdTIxZDMnLAorICAgICdkYXJyOyc6ICdcdTIxOTMnLAorICAgICdkYXNoOyc6ICdcdTIwMTAnLAorICAgICdEYXNodjsnOiAnXHUyYWU0JywKKyAgICAnZGFzaHY7JzogJ1x1MjJhMycsCisgICAgJ2Ria2Fyb3c7JzogJ1x1MjkwZicsCisgICAgJ2RibGFjOyc6ICdcdTAyZGQnLAorICAgICdEY2Fyb247JzogJ1x1MDEwZScsCisgICAgJ2RjYXJvbjsnOiAnXHUwMTBmJywKKyAgICAnRGN5Oyc6ICdcdTA0MTQnLAorICAgICdkY3k7JzogJ1x1MDQzNCcsCisgICAgJ0REOyc6ICdcdTIxNDUnLAorICAgICdkZDsnOiAnXHUyMTQ2JywKKyAgICAnZGRhZ2dlcjsnOiAnXHUyMDIxJywKKyAgICAnZGRhcnI7JzogJ1x1MjFjYScsCisgICAgJ0REb3RyYWhkOyc6ICdcdTI5MTEnLAorICAgICdkZG90c2VxOyc6ICdcdTJhNzcnLAorICAgICdkZWcnOiAnXHhiMCcsCisgICAgJ2RlZzsnOiAnXHhiMCcsCisgICAgJ0RlbDsnOiAnXHUyMjA3JywKKyAgICAnRGVsdGE7JzogJ1x1MDM5NCcsCisgICAgJ2RlbHRhOyc6ICdcdTAzYjQnLAorICAgICdkZW1wdHl2Oyc6ICdcdTI5YjEnLAorICAgICdkZmlzaHQ7JzogJ1x1Mjk3ZicsCisgICAgJ0RmcjsnOiAnXFUwMDAxZDUwNycsCisgICAgJ2RmcjsnOiAnXFUwMDAxZDUyMScsCisgICAgJ2RIYXI7JzogJ1x1Mjk2NScsCisgICAgJ2RoYXJsOyc6ICdcdTIxYzMnLAorICAgICdkaGFycjsnOiAnXHUyMWMyJywKKyAgICAnRGlhY3JpdGljYWxBY3V0ZTsnOiAnXHhiNCcsCisgICAgJ0RpYWNyaXRpY2FsRG90Oyc6ICdcdTAyZDknLAorICAgICdEaWFjcml0aWNhbERvdWJsZUFjdXRlOyc6ICdcdTAyZGQnLAorICAgICdEaWFjcml0aWNhbEdyYXZlOyc6ICdgJywKKyAgICAnRGlhY3JpdGljYWxUaWxkZTsnOiAnXHUwMmRjJywKKyAgICAnZGlhbTsnOiAnXHUyMmM0JywKKyAgICAnRGlhbW9uZDsnOiAnXHUyMmM0JywKKyAgICAnZGlhbW9uZDsnOiAnXHUyMmM0JywKKyAgICAnZGlhbW9uZHN1aXQ7JzogJ1x1MjY2NicsCisgICAgJ2RpYW1zOyc6ICdcdTI2NjYnLAorICAgICdkaWU7JzogJ1x4YTgnLAorICAgICdEaWZmZXJlbnRpYWxEOyc6ICdcdTIxNDYnLAorICAgICdkaWdhbW1hOyc6ICdcdTAzZGQnLAorICAgICdkaXNpbjsnOiAnXHUyMmYyJywKKyAgICAnZGl2Oyc6ICdceGY3JywKKyAgICAnZGl2aWRlJzogJ1x4ZjcnLAorICAgICdkaXZpZGU7JzogJ1x4ZjcnLAorICAgICdkaXZpZGVvbnRpbWVzOyc6ICdcdTIyYzcnLAorICAgICdkaXZvbng7JzogJ1x1MjJjNycsCisgICAgJ0RKY3k7JzogJ1x1MDQwMicsCisgICAgJ2RqY3k7JzogJ1x1MDQ1MicsCisgICAgJ2RsY29ybjsnOiAnXHUyMzFlJywKKyAgICAnZGxjcm9wOyc6ICdcdTIzMGQnLAorICAgICdkb2xsYXI7JzogJyQnLAorICAgICdEb3BmOyc6ICdcVTAwMDFkNTNiJywKKyAgICAnZG9wZjsnOiAnXFUwMDAxZDU1NScsCisgICAgJ0RvdDsnOiAnXHhhOCcsCisgICAgJ2RvdDsnOiAnXHUwMmQ5JywKKyAgICAnRG90RG90Oyc6ICdcdTIwZGMnLAorICAgICdkb3RlcTsnOiAnXHUyMjUwJywKKyAgICAnZG90ZXFkb3Q7JzogJ1x1MjI1MScsCisgICAgJ0RvdEVxdWFsOyc6ICdcdTIyNTAnLAorICAgICdkb3RtaW51czsnOiAnXHUyMjM4JywKKyAgICAnZG90cGx1czsnOiAnXHUyMjE0JywKKyAgICAnZG90c3F1YXJlOyc6ICdcdTIyYTEnLAorICAgICdkb3VibGViYXJ3ZWRnZTsnOiAnXHUyMzA2JywKKyAgICAnRG91YmxlQ29udG91ckludGVncmFsOyc6ICdcdTIyMmYnLAorICAgICdEb3VibGVEb3Q7JzogJ1x4YTgnLAorICAgICdEb3VibGVEb3duQXJyb3c7JzogJ1x1MjFkMycsCisgICAgJ0RvdWJsZUxlZnRBcnJvdzsnOiAnXHUyMWQwJywKKyAgICAnRG91YmxlTGVmdFJpZ2h0QXJyb3c7JzogJ1x1MjFkNCcsCisgICAgJ0RvdWJsZUxlZnRUZWU7JzogJ1x1MmFlNCcsCisgICAgJ0RvdWJsZUxvbmdMZWZ0QXJyb3c7JzogJ1x1MjdmOCcsCisgICAgJ0RvdWJsZUxvbmdMZWZ0UmlnaHRBcnJvdzsnOiAnXHUyN2ZhJywKKyAgICAnRG91YmxlTG9uZ1JpZ2h0QXJyb3c7JzogJ1x1MjdmOScsCisgICAgJ0RvdWJsZVJpZ2h0QXJyb3c7JzogJ1x1MjFkMicsCisgICAgJ0RvdWJsZVJpZ2h0VGVlOyc6ICdcdTIyYTgnLAorICAgICdEb3VibGVVcEFycm93Oyc6ICdcdTIxZDEnLAorICAgICdEb3VibGVVcERvd25BcnJvdzsnOiAnXHUyMWQ1JywKKyAgICAnRG91YmxlVmVydGljYWxCYXI7JzogJ1x1MjIyNScsCisgICAgJ0Rvd25BcnJvdzsnOiAnXHUyMTkzJywKKyAgICAnRG93bmFycm93Oyc6ICdcdTIxZDMnLAorICAgICdkb3duYXJyb3c7JzogJ1x1MjE5MycsCisgICAgJ0Rvd25BcnJvd0JhcjsnOiAnXHUyOTEzJywKKyAgICAnRG93bkFycm93VXBBcnJvdzsnOiAnXHUyMWY1JywKKyAgICAnRG93bkJyZXZlOyc6ICdcdTAzMTEnLAorICAgICdkb3duZG93bmFycm93czsnOiAnXHUyMWNhJywKKyAgICAnZG93bmhhcnBvb25sZWZ0Oyc6ICdcdTIxYzMnLAorICAgICdkb3duaGFycG9vbnJpZ2h0Oyc6ICdcdTIxYzInLAorICAgICdEb3duTGVmdFJpZ2h0VmVjdG9yOyc6ICdcdTI5NTAnLAorICAgICdEb3duTGVmdFRlZVZlY3RvcjsnOiAnXHUyOTVlJywKKyAgICAnRG93bkxlZnRWZWN0b3I7JzogJ1x1MjFiZCcsCisgICAgJ0Rvd25MZWZ0VmVjdG9yQmFyOyc6ICdcdTI5NTYnLAorICAgICdEb3duUmlnaHRUZWVWZWN0b3I7JzogJ1x1Mjk1ZicsCisgICAgJ0Rvd25SaWdodFZlY3RvcjsnOiAnXHUyMWMxJywKKyAgICAnRG93blJpZ2h0VmVjdG9yQmFyOyc6ICdcdTI5NTcnLAorICAgICdEb3duVGVlOyc6ICdcdTIyYTQnLAorICAgICdEb3duVGVlQXJyb3c7JzogJ1x1MjFhNycsCisgICAgJ2RyYmthcm93Oyc6ICdcdTI5MTAnLAorICAgICdkcmNvcm47JzogJ1x1MjMxZicsCisgICAgJ2RyY3JvcDsnOiAnXHUyMzBjJywKKyAgICAnRHNjcjsnOiAnXFUwMDAxZDQ5ZicsCisgICAgJ2RzY3I7JzogJ1xVMDAwMWQ0YjknLAorICAgICdEU2N5Oyc6ICdcdTA0MDUnLAorICAgICdkc2N5Oyc6ICdcdTA0NTUnLAorICAgICdkc29sOyc6ICdcdTI5ZjYnLAorICAgICdEc3Ryb2s7JzogJ1x1MDExMCcsCisgICAgJ2RzdHJvazsnOiAnXHUwMTExJywKKyAgICAnZHRkb3Q7JzogJ1x1MjJmMScsCisgICAgJ2R0cmk7JzogJ1x1MjViZicsCisgICAgJ2R0cmlmOyc6ICdcdTI1YmUnLAorICAgICdkdWFycjsnOiAnXHUyMWY1JywKKyAgICAnZHVoYXI7JzogJ1x1Mjk2ZicsCisgICAgJ2R3YW5nbGU7JzogJ1x1MjlhNicsCisgICAgJ0RaY3k7JzogJ1x1MDQwZicsCisgICAgJ2R6Y3k7JzogJ1x1MDQ1ZicsCisgICAgJ2R6aWdyYXJyOyc6ICdcdTI3ZmYnLAorICAgICdFYWN1dGUnOiAnXHhjOScsCisgICAgJ2VhY3V0ZSc6ICdceGU5JywKKyAgICAnRWFjdXRlOyc6ICdceGM5JywKKyAgICAnZWFjdXRlOyc6ICdceGU5JywKKyAgICAnZWFzdGVyOyc6ICdcdTJhNmUnLAorICAgICdFY2Fyb247JzogJ1x1MDExYScsCisgICAgJ2VjYXJvbjsnOiAnXHUwMTFiJywKKyAgICAnZWNpcjsnOiAnXHUyMjU2JywKKyAgICAnRWNpcmMnOiAnXHhjYScsCisgICAgJ2VjaXJjJzogJ1x4ZWEnLAorICAgICdFY2lyYzsnOiAnXHhjYScsCisgICAgJ2VjaXJjOyc6ICdceGVhJywKKyAgICAnZWNvbG9uOyc6ICdcdTIyNTUnLAorICAgICdFY3k7JzogJ1x1MDQyZCcsCisgICAgJ2VjeTsnOiAnXHUwNDRkJywKKyAgICAnZUREb3Q7JzogJ1x1MmE3NycsCisgICAgJ0Vkb3Q7JzogJ1x1MDExNicsCisgICAgJ2VEb3Q7JzogJ1x1MjI1MScsCisgICAgJ2Vkb3Q7JzogJ1x1MDExNycsCisgICAgJ2VlOyc6ICdcdTIxNDcnLAorICAgICdlZkRvdDsnOiAnXHUyMjUyJywKKyAgICAnRWZyOyc6ICdcVTAwMDFkNTA4JywKKyAgICAnZWZyOyc6ICdcVTAwMDFkNTIyJywKKyAgICAnZWc7JzogJ1x1MmE5YScsCisgICAgJ0VncmF2ZSc6ICdceGM4JywKKyAgICAnZWdyYXZlJzogJ1x4ZTgnLAorICAgICdFZ3JhdmU7JzogJ1x4YzgnLAorICAgICdlZ3JhdmU7JzogJ1x4ZTgnLAorICAgICdlZ3M7JzogJ1x1MmE5NicsCisgICAgJ2Vnc2RvdDsnOiAnXHUyYTk4JywKKyAgICAnZWw7JzogJ1x1MmE5OScsCisgICAgJ0VsZW1lbnQ7JzogJ1x1MjIwOCcsCisgICAgJ2VsaW50ZXJzOyc6ICdcdTIzZTcnLAorICAgICdlbGw7JzogJ1x1MjExMycsCisgICAgJ2VsczsnOiAnXHUyYTk1JywKKyAgICAnZWxzZG90Oyc6ICdcdTJhOTcnLAorICAgICdFbWFjcjsnOiAnXHUwMTEyJywKKyAgICAnZW1hY3I7JzogJ1x1MDExMycsCisgICAgJ2VtcHR5Oyc6ICdcdTIyMDUnLAorICAgICdlbXB0eXNldDsnOiAnXHUyMjA1JywKKyAgICAnRW1wdHlTbWFsbFNxdWFyZTsnOiAnXHUyNWZiJywKKyAgICAnZW1wdHl2Oyc6ICdcdTIyMDUnLAorICAgICdFbXB0eVZlcnlTbWFsbFNxdWFyZTsnOiAnXHUyNWFiJywKKyAgICAnZW1zcDEzOyc6ICdcdTIwMDQnLAorICAgICdlbXNwMTQ7JzogJ1x1MjAwNScsCisgICAgJ2Vtc3A7JzogJ1x1MjAwMycsCisgICAgJ0VORzsnOiAnXHUwMTRhJywKKyAgICAnZW5nOyc6ICdcdTAxNGInLAorICAgICdlbnNwOyc6ICdcdTIwMDInLAorICAgICdFb2dvbjsnOiAnXHUwMTE4JywKKyAgICAnZW9nb247JzogJ1x1MDExOScsCisgICAgJ0VvcGY7JzogJ1xVMDAwMWQ1M2MnLAorICAgICdlb3BmOyc6ICdcVTAwMDFkNTU2JywKKyAgICAnZXBhcjsnOiAnXHUyMmQ1JywKKyAgICAnZXBhcnNsOyc6ICdcdTI5ZTMnLAorICAgICdlcGx1czsnOiAnXHUyYTcxJywKKyAgICAnZXBzaTsnOiAnXHUwM2I1JywKKyAgICAnRXBzaWxvbjsnOiAnXHUwMzk1JywKKyAgICAnZXBzaWxvbjsnOiAnXHUwM2I1JywKKyAgICAnZXBzaXY7JzogJ1x1MDNmNScsCisgICAgJ2VxY2lyYzsnOiAnXHUyMjU2JywKKyAgICAnZXFjb2xvbjsnOiAnXHUyMjU1JywKKyAgICAnZXFzaW07JzogJ1x1MjI0MicsCisgICAgJ2Vxc2xhbnRndHI7JzogJ1x1MmE5NicsCisgICAgJ2Vxc2xhbnRsZXNzOyc6ICdcdTJhOTUnLAorICAgICdFcXVhbDsnOiAnXHUyYTc1JywKKyAgICAnZXF1YWxzOyc6ICc9JywKKyAgICAnRXF1YWxUaWxkZTsnOiAnXHUyMjQyJywKKyAgICAnZXF1ZXN0Oyc6ICdcdTIyNWYnLAorICAgICdFcXVpbGlicml1bTsnOiAnXHUyMWNjJywKKyAgICAnZXF1aXY7JzogJ1x1MjI2MScsCisgICAgJ2VxdWl2REQ7JzogJ1x1MmE3OCcsCisgICAgJ2VxdnBhcnNsOyc6ICdcdTI5ZTUnLAorICAgICdlcmFycjsnOiAnXHUyOTcxJywKKyAgICAnZXJEb3Q7JzogJ1x1MjI1MycsCisgICAgJ0VzY3I7JzogJ1x1MjEzMCcsCisgICAgJ2VzY3I7JzogJ1x1MjEyZicsCisgICAgJ2VzZG90Oyc6ICdcdTIyNTAnLAorICAgICdFc2ltOyc6ICdcdTJhNzMnLAorICAgICdlc2ltOyc6ICdcdTIyNDInLAorICAgICdFdGE7JzogJ1x1MDM5NycsCisgICAgJ2V0YTsnOiAnXHUwM2I3JywKKyAgICAnRVRIJzogJ1x4ZDAnLAorICAgICdldGgnOiAnXHhmMCcsCisgICAgJ0VUSDsnOiAnXHhkMCcsCisgICAgJ2V0aDsnOiAnXHhmMCcsCisgICAgJ0V1bWwnOiAnXHhjYicsCisgICAgJ2V1bWwnOiAnXHhlYicsCisgICAgJ0V1bWw7JzogJ1x4Y2InLAorICAgICdldW1sOyc6ICdceGViJywKKyAgICAnZXVybzsnOiAnXHUyMGFjJywKKyAgICAnZXhjbDsnOiAnIScsCisgICAgJ2V4aXN0Oyc6ICdcdTIyMDMnLAorICAgICdFeGlzdHM7JzogJ1x1MjIwMycsCisgICAgJ2V4cGVjdGF0aW9uOyc6ICdcdTIxMzAnLAorICAgICdFeHBvbmVudGlhbEU7JzogJ1x1MjE0NycsCisgICAgJ2V4cG9uZW50aWFsZTsnOiAnXHUyMTQ3JywKKyAgICAnZmFsbGluZ2RvdHNlcTsnOiAnXHUyMjUyJywKKyAgICAnRmN5Oyc6ICdcdTA0MjQnLAorICAgICdmY3k7JzogJ1x1MDQ0NCcsCisgICAgJ2ZlbWFsZTsnOiAnXHUyNjQwJywKKyAgICAnZmZpbGlnOyc6ICdcdWZiMDMnLAorICAgICdmZmxpZzsnOiAnXHVmYjAwJywKKyAgICAnZmZsbGlnOyc6ICdcdWZiMDQnLAorICAgICdGZnI7JzogJ1xVMDAwMWQ1MDknLAorICAgICdmZnI7JzogJ1xVMDAwMWQ1MjMnLAorICAgICdmaWxpZzsnOiAnXHVmYjAxJywKKyAgICAnRmlsbGVkU21hbGxTcXVhcmU7JzogJ1x1MjVmYycsCisgICAgJ0ZpbGxlZFZlcnlTbWFsbFNxdWFyZTsnOiAnXHUyNWFhJywKKyAgICAnZmpsaWc7JzogJ2ZqJywKKyAgICAnZmxhdDsnOiAnXHUyNjZkJywKKyAgICAnZmxsaWc7JzogJ1x1ZmIwMicsCisgICAgJ2ZsdG5zOyc6ICdcdTI1YjEnLAorICAgICdmbm9mOyc6ICdcdTAxOTInLAorICAgICdGb3BmOyc6ICdcVTAwMDFkNTNkJywKKyAgICAnZm9wZjsnOiAnXFUwMDAxZDU1NycsCisgICAgJ0ZvckFsbDsnOiAnXHUyMjAwJywKKyAgICAnZm9yYWxsOyc6ICdcdTIyMDAnLAorICAgICdmb3JrOyc6ICdcdTIyZDQnLAorICAgICdmb3JrdjsnOiAnXHUyYWQ5JywKKyAgICAnRm91cmllcnRyZjsnOiAnXHUyMTMxJywKKyAgICAnZnBhcnRpbnQ7JzogJ1x1MmEwZCcsCisgICAgJ2ZyYWMxMic6ICdceGJkJywKKyAgICAnZnJhYzEyOyc6ICdceGJkJywKKyAgICAnZnJhYzEzOyc6ICdcdTIxNTMnLAorICAgICdmcmFjMTQnOiAnXHhiYycsCisgICAgJ2ZyYWMxNDsnOiAnXHhiYycsCisgICAgJ2ZyYWMxNTsnOiAnXHUyMTU1JywKKyAgICAnZnJhYzE2Oyc6ICdcdTIxNTknLAorICAgICdmcmFjMTg7JzogJ1x1MjE1YicsCisgICAgJ2ZyYWMyMzsnOiAnXHUyMTU0JywKKyAgICAnZnJhYzI1Oyc6ICdcdTIxNTYnLAorICAgICdmcmFjMzQnOiAnXHhiZScsCisgICAgJ2ZyYWMzNDsnOiAnXHhiZScsCisgICAgJ2ZyYWMzNTsnOiAnXHUyMTU3JywKKyAgICAnZnJhYzM4Oyc6ICdcdTIxNWMnLAorICAgICdmcmFjNDU7JzogJ1x1MjE1OCcsCisgICAgJ2ZyYWM1NjsnOiAnXHUyMTVhJywKKyAgICAnZnJhYzU4Oyc6ICdcdTIxNWQnLAorICAgICdmcmFjNzg7JzogJ1x1MjE1ZScsCisgICAgJ2ZyYXNsOyc6ICdcdTIwNDQnLAorICAgICdmcm93bjsnOiAnXHUyMzIyJywKKyAgICAnRnNjcjsnOiAnXHUyMTMxJywKKyAgICAnZnNjcjsnOiAnXFUwMDAxZDRiYicsCisgICAgJ2dhY3V0ZTsnOiAnXHUwMWY1JywKKyAgICAnR2FtbWE7JzogJ1x1MDM5MycsCisgICAgJ2dhbW1hOyc6ICdcdTAzYjMnLAorICAgICdHYW1tYWQ7JzogJ1x1MDNkYycsCisgICAgJ2dhbW1hZDsnOiAnXHUwM2RkJywKKyAgICAnZ2FwOyc6ICdcdTJhODYnLAorICAgICdHYnJldmU7JzogJ1x1MDExZScsCisgICAgJ2dicmV2ZTsnOiAnXHUwMTFmJywKKyAgICAnR2NlZGlsOyc6ICdcdTAxMjInLAorICAgICdHY2lyYzsnOiAnXHUwMTFjJywKKyAgICAnZ2NpcmM7JzogJ1x1MDExZCcsCisgICAgJ0djeTsnOiAnXHUwNDEzJywKKyAgICAnZ2N5Oyc6ICdcdTA0MzMnLAorICAgICdHZG90Oyc6ICdcdTAxMjAnLAorICAgICdnZG90Oyc6ICdcdTAxMjEnLAorICAgICdnRTsnOiAnXHUyMjY3JywKKyAgICAnZ2U7JzogJ1x1MjI2NScsCisgICAgJ2dFbDsnOiAnXHUyYThjJywKKyAgICAnZ2VsOyc6ICdcdTIyZGInLAorICAgICdnZXE7JzogJ1x1MjI2NScsCisgICAgJ2dlcXE7JzogJ1x1MjI2NycsCisgICAgJ2dlcXNsYW50Oyc6ICdcdTJhN2UnLAorICAgICdnZXM7JzogJ1x1MmE3ZScsCisgICAgJ2dlc2NjOyc6ICdcdTJhYTknLAorICAgICdnZXNkb3Q7JzogJ1x1MmE4MCcsCisgICAgJ2dlc2RvdG87JzogJ1x1MmE4MicsCisgICAgJ2dlc2RvdG9sOyc6ICdcdTJhODQnLAorICAgICdnZXNsOyc6ICdcdTIyZGJcdWZlMDAnLAorICAgICdnZXNsZXM7JzogJ1x1MmE5NCcsCisgICAgJ0dmcjsnOiAnXFUwMDAxZDUwYScsCisgICAgJ2dmcjsnOiAnXFUwMDAxZDUyNCcsCisgICAgJ0dnOyc6ICdcdTIyZDknLAorICAgICdnZzsnOiAnXHUyMjZiJywKKyAgICAnZ2dnOyc6ICdcdTIyZDknLAorICAgICdnaW1lbDsnOiAnXHUyMTM3JywKKyAgICAnR0pjeTsnOiAnXHUwNDAzJywKKyAgICAnZ2pjeTsnOiAnXHUwNDUzJywKKyAgICAnZ2w7JzogJ1x1MjI3NycsCisgICAgJ2dsYTsnOiAnXHUyYWE1JywKKyAgICAnZ2xFOyc6ICdcdTJhOTInLAorICAgICdnbGo7JzogJ1x1MmFhNCcsCisgICAgJ2duYXA7JzogJ1x1MmE4YScsCisgICAgJ2duYXBwcm94Oyc6ICdcdTJhOGEnLAorICAgICdnbkU7JzogJ1x1MjI2OScsCisgICAgJ2duZTsnOiAnXHUyYTg4JywKKyAgICAnZ25lcTsnOiAnXHUyYTg4JywKKyAgICAnZ25lcXE7JzogJ1x1MjI2OScsCisgICAgJ2duc2ltOyc6ICdcdTIyZTcnLAorICAgICdHb3BmOyc6ICdcVTAwMDFkNTNlJywKKyAgICAnZ29wZjsnOiAnXFUwMDAxZDU1OCcsCisgICAgJ2dyYXZlOyc6ICdgJywKKyAgICAnR3JlYXRlckVxdWFsOyc6ICdcdTIyNjUnLAorICAgICdHcmVhdGVyRXF1YWxMZXNzOyc6ICdcdTIyZGInLAorICAgICdHcmVhdGVyRnVsbEVxdWFsOyc6ICdcdTIyNjcnLAorICAgICdHcmVhdGVyR3JlYXRlcjsnOiAnXHUyYWEyJywKKyAgICAnR3JlYXRlckxlc3M7JzogJ1x1MjI3NycsCisgICAgJ0dyZWF0ZXJTbGFudEVxdWFsOyc6ICdcdTJhN2UnLAorICAgICdHcmVhdGVyVGlsZGU7JzogJ1x1MjI3MycsCisgICAgJ0dzY3I7JzogJ1xVMDAwMWQ0YTInLAorICAgICdnc2NyOyc6ICdcdTIxMGEnLAorICAgICdnc2ltOyc6ICdcdTIyNzMnLAorICAgICdnc2ltZTsnOiAnXHUyYThlJywKKyAgICAnZ3NpbWw7JzogJ1x1MmE5MCcsCisgICAgJ0dUJzogJz4nLAorICAgICdndCc6ICc+JywKKyAgICAnR1Q7JzogJz4nLAorICAgICdHdDsnOiAnXHUyMjZiJywKKyAgICAnZ3Q7JzogJz4nLAorICAgICdndGNjOyc6ICdcdTJhYTcnLAorICAgICdndGNpcjsnOiAnXHUyYTdhJywKKyAgICAnZ3Rkb3Q7JzogJ1x1MjJkNycsCisgICAgJ2d0bFBhcjsnOiAnXHUyOTk1JywKKyAgICAnZ3RxdWVzdDsnOiAnXHUyYTdjJywKKyAgICAnZ3RyYXBwcm94Oyc6ICdcdTJhODYnLAorICAgICdndHJhcnI7JzogJ1x1Mjk3OCcsCisgICAgJ2d0cmRvdDsnOiAnXHUyMmQ3JywKKyAgICAnZ3RyZXFsZXNzOyc6ICdcdTIyZGInLAorICAgICdndHJlcXFsZXNzOyc6ICdcdTJhOGMnLAorICAgICdndHJsZXNzOyc6ICdcdTIyNzcnLAorICAgICdndHJzaW07JzogJ1x1MjI3MycsCisgICAgJ2d2ZXJ0bmVxcTsnOiAnXHUyMjY5XHVmZTAwJywKKyAgICAnZ3ZuRTsnOiAnXHUyMjY5XHVmZTAwJywKKyAgICAnSGFjZWs7JzogJ1x1MDJjNycsCisgICAgJ2hhaXJzcDsnOiAnXHUyMDBhJywKKyAgICAnaGFsZjsnOiAnXHhiZCcsCisgICAgJ2hhbWlsdDsnOiAnXHUyMTBiJywKKyAgICAnSEFSRGN5Oyc6ICdcdTA0MmEnLAorICAgICdoYXJkY3k7JzogJ1x1MDQ0YScsCisgICAgJ2hBcnI7JzogJ1x1MjFkNCcsCisgICAgJ2hhcnI7JzogJ1x1MjE5NCcsCisgICAgJ2hhcnJjaXI7JzogJ1x1Mjk0OCcsCisgICAgJ2hhcnJ3Oyc6ICdcdTIxYWQnLAorICAgICdIYXQ7JzogJ14nLAorICAgICdoYmFyOyc6ICdcdTIxMGYnLAorICAgICdIY2lyYzsnOiAnXHUwMTI0JywKKyAgICAnaGNpcmM7JzogJ1x1MDEyNScsCisgICAgJ2hlYXJ0czsnOiAnXHUyNjY1JywKKyAgICAnaGVhcnRzdWl0Oyc6ICdcdTI2NjUnLAorICAgICdoZWxsaXA7JzogJ1x1MjAyNicsCisgICAgJ2hlcmNvbjsnOiAnXHUyMmI5JywKKyAgICAnSGZyOyc6ICdcdTIxMGMnLAorICAgICdoZnI7JzogJ1xVMDAwMWQ1MjUnLAorICAgICdIaWxiZXJ0U3BhY2U7JzogJ1x1MjEwYicsCisgICAgJ2hrc2Vhcm93Oyc6ICdcdTI5MjUnLAorICAgICdoa3N3YXJvdzsnOiAnXHUyOTI2JywKKyAgICAnaG9hcnI7JzogJ1x1MjFmZicsCisgICAgJ2hvbXRodDsnOiAnXHUyMjNiJywKKyAgICAnaG9va2xlZnRhcnJvdzsnOiAnXHUyMWE5JywKKyAgICAnaG9va3JpZ2h0YXJyb3c7JzogJ1x1MjFhYScsCisgICAgJ0hvcGY7JzogJ1x1MjEwZCcsCisgICAgJ2hvcGY7JzogJ1xVMDAwMWQ1NTknLAorICAgICdob3JiYXI7JzogJ1x1MjAxNScsCisgICAgJ0hvcml6b250YWxMaW5lOyc6ICdcdTI1MDAnLAorICAgICdIc2NyOyc6ICdcdTIxMGInLAorICAgICdoc2NyOyc6ICdcVTAwMDFkNGJkJywKKyAgICAnaHNsYXNoOyc6ICdcdTIxMGYnLAorICAgICdIc3Ryb2s7JzogJ1x1MDEyNicsCisgICAgJ2hzdHJvazsnOiAnXHUwMTI3JywKKyAgICAnSHVtcERvd25IdW1wOyc6ICdcdTIyNGUnLAorICAgICdIdW1wRXF1YWw7JzogJ1x1MjI0ZicsCisgICAgJ2h5YnVsbDsnOiAnXHUyMDQzJywKKyAgICAnaHlwaGVuOyc6ICdcdTIwMTAnLAorICAgICdJYWN1dGUnOiAnXHhjZCcsCisgICAgJ2lhY3V0ZSc6ICdceGVkJywKKyAgICAnSWFjdXRlOyc6ICdceGNkJywKKyAgICAnaWFjdXRlOyc6ICdceGVkJywKKyAgICAnaWM7JzogJ1x1MjA2MycsCisgICAgJ0ljaXJjJzogJ1x4Y2UnLAorICAgICdpY2lyYyc6ICdceGVlJywKKyAgICAnSWNpcmM7JzogJ1x4Y2UnLAorICAgICdpY2lyYzsnOiAnXHhlZScsCisgICAgJ0ljeTsnOiAnXHUwNDE4JywKKyAgICAnaWN5Oyc6ICdcdTA0MzgnLAorICAgICdJZG90Oyc6ICdcdTAxMzAnLAorICAgICdJRWN5Oyc6ICdcdTA0MTUnLAorICAgICdpZWN5Oyc6ICdcdTA0MzUnLAorICAgICdpZXhjbCc6ICdceGExJywKKyAgICAnaWV4Y2w7JzogJ1x4YTEnLAorICAgICdpZmY7JzogJ1x1MjFkNCcsCisgICAgJ0lmcjsnOiAnXHUyMTExJywKKyAgICAnaWZyOyc6ICdcVTAwMDFkNTI2JywKKyAgICAnSWdyYXZlJzogJ1x4Y2MnLAorICAgICdpZ3JhdmUnOiAnXHhlYycsCisgICAgJ0lncmF2ZTsnOiAnXHhjYycsCisgICAgJ2lncmF2ZTsnOiAnXHhlYycsCisgICAgJ2lpOyc6ICdcdTIxNDgnLAorICAgICdpaWlpbnQ7JzogJ1x1MmEwYycsCisgICAgJ2lpaW50Oyc6ICdcdTIyMmQnLAorICAgICdpaW5maW47JzogJ1x1MjlkYycsCisgICAgJ2lpb3RhOyc6ICdcdTIxMjknLAorICAgICdJSmxpZzsnOiAnXHUwMTMyJywKKyAgICAnaWpsaWc7JzogJ1x1MDEzMycsCisgICAgJ0ltOyc6ICdcdTIxMTEnLAorICAgICdJbWFjcjsnOiAnXHUwMTJhJywKKyAgICAnaW1hY3I7JzogJ1x1MDEyYicsCisgICAgJ2ltYWdlOyc6ICdcdTIxMTEnLAorICAgICdJbWFnaW5hcnlJOyc6ICdcdTIxNDgnLAorICAgICdpbWFnbGluZTsnOiAnXHUyMTEwJywKKyAgICAnaW1hZ3BhcnQ7JzogJ1x1MjExMScsCisgICAgJ2ltYXRoOyc6ICdcdTAxMzEnLAorICAgICdpbW9mOyc6ICdcdTIyYjcnLAorICAgICdpbXBlZDsnOiAnXHUwMWI1JywKKyAgICAnSW1wbGllczsnOiAnXHUyMWQyJywKKyAgICAnaW47JzogJ1x1MjIwOCcsCisgICAgJ2luY2FyZTsnOiAnXHUyMTA1JywKKyAgICAnaW5maW47JzogJ1x1MjIxZScsCisgICAgJ2luZmludGllOyc6ICdcdTI5ZGQnLAorICAgICdpbm9kb3Q7JzogJ1x1MDEzMScsCisgICAgJ0ludDsnOiAnXHUyMjJjJywKKyAgICAnaW50Oyc6ICdcdTIyMmInLAorICAgICdpbnRjYWw7JzogJ1x1MjJiYScsCisgICAgJ2ludGVnZXJzOyc6ICdcdTIxMjQnLAorICAgICdJbnRlZ3JhbDsnOiAnXHUyMjJiJywKKyAgICAnaW50ZXJjYWw7JzogJ1x1MjJiYScsCisgICAgJ0ludGVyc2VjdGlvbjsnOiAnXHUyMmMyJywKKyAgICAnaW50bGFyaGs7JzogJ1x1MmExNycsCisgICAgJ2ludHByb2Q7JzogJ1x1MmEzYycsCisgICAgJ0ludmlzaWJsZUNvbW1hOyc6ICdcdTIwNjMnLAorICAgICdJbnZpc2libGVUaW1lczsnOiAnXHUyMDYyJywKKyAgICAnSU9jeTsnOiAnXHUwNDAxJywKKyAgICAnaW9jeTsnOiAnXHUwNDUxJywKKyAgICAnSW9nb247JzogJ1x1MDEyZScsCisgICAgJ2lvZ29uOyc6ICdcdTAxMmYnLAorICAgICdJb3BmOyc6ICdcVTAwMDFkNTQwJywKKyAgICAnaW9wZjsnOiAnXFUwMDAxZDU1YScsCisgICAgJ0lvdGE7JzogJ1x1MDM5OScsCisgICAgJ2lvdGE7JzogJ1x1MDNiOScsCisgICAgJ2lwcm9kOyc6ICdcdTJhM2MnLAorICAgICdpcXVlc3QnOiAnXHhiZicsCisgICAgJ2lxdWVzdDsnOiAnXHhiZicsCisgICAgJ0lzY3I7JzogJ1x1MjExMCcsCisgICAgJ2lzY3I7JzogJ1xVMDAwMWQ0YmUnLAorICAgICdpc2luOyc6ICdcdTIyMDgnLAorICAgICdpc2luZG90Oyc6ICdcdTIyZjUnLAorICAgICdpc2luRTsnOiAnXHUyMmY5JywKKyAgICAnaXNpbnM7JzogJ1x1MjJmNCcsCisgICAgJ2lzaW5zdjsnOiAnXHUyMmYzJywKKyAgICAnaXNpbnY7JzogJ1x1MjIwOCcsCisgICAgJ2l0Oyc6ICdcdTIwNjInLAorICAgICdJdGlsZGU7JzogJ1x1MDEyOCcsCisgICAgJ2l0aWxkZTsnOiAnXHUwMTI5JywKKyAgICAnSXVrY3k7JzogJ1x1MDQwNicsCisgICAgJ2l1a2N5Oyc6ICdcdTA0NTYnLAorICAgICdJdW1sJzogJ1x4Y2YnLAorICAgICdpdW1sJzogJ1x4ZWYnLAorICAgICdJdW1sOyc6ICdceGNmJywKKyAgICAnaXVtbDsnOiAnXHhlZicsCisgICAgJ0pjaXJjOyc6ICdcdTAxMzQnLAorICAgICdqY2lyYzsnOiAnXHUwMTM1JywKKyAgICAnSmN5Oyc6ICdcdTA0MTknLAorICAgICdqY3k7JzogJ1x1MDQzOScsCisgICAgJ0pmcjsnOiAnXFUwMDAxZDUwZCcsCisgICAgJ2pmcjsnOiAnXFUwMDAxZDUyNycsCisgICAgJ2ptYXRoOyc6ICdcdTAyMzcnLAorICAgICdKb3BmOyc6ICdcVTAwMDFkNTQxJywKKyAgICAnam9wZjsnOiAnXFUwMDAxZDU1YicsCisgICAgJ0pzY3I7JzogJ1xVMDAwMWQ0YTUnLAorICAgICdqc2NyOyc6ICdcVTAwMDFkNGJmJywKKyAgICAnSnNlcmN5Oyc6ICdcdTA0MDgnLAorICAgICdqc2VyY3k7JzogJ1x1MDQ1OCcsCisgICAgJ0p1a2N5Oyc6ICdcdTA0MDQnLAorICAgICdqdWtjeTsnOiAnXHUwNDU0JywKKyAgICAnS2FwcGE7JzogJ1x1MDM5YScsCisgICAgJ2thcHBhOyc6ICdcdTAzYmEnLAorICAgICdrYXBwYXY7JzogJ1x1MDNmMCcsCisgICAgJ0tjZWRpbDsnOiAnXHUwMTM2JywKKyAgICAna2NlZGlsOyc6ICdcdTAxMzcnLAorICAgICdLY3k7JzogJ1x1MDQxYScsCisgICAgJ2tjeTsnOiAnXHUwNDNhJywKKyAgICAnS2ZyOyc6ICdcVTAwMDFkNTBlJywKKyAgICAna2ZyOyc6ICdcVTAwMDFkNTI4JywKKyAgICAna2dyZWVuOyc6ICdcdTAxMzgnLAorICAgICdLSGN5Oyc6ICdcdTA0MjUnLAorICAgICdraGN5Oyc6ICdcdTA0NDUnLAorICAgICdLSmN5Oyc6ICdcdTA0MGMnLAorICAgICdramN5Oyc6ICdcdTA0NWMnLAorICAgICdLb3BmOyc6ICdcVTAwMDFkNTQyJywKKyAgICAna29wZjsnOiAnXFUwMDAxZDU1YycsCisgICAgJ0tzY3I7JzogJ1xVMDAwMWQ0YTYnLAorICAgICdrc2NyOyc6ICdcVTAwMDFkNGMwJywKKyAgICAnbEFhcnI7JzogJ1x1MjFkYScsCisgICAgJ0xhY3V0ZTsnOiAnXHUwMTM5JywKKyAgICAnbGFjdXRlOyc6ICdcdTAxM2EnLAorICAgICdsYWVtcHR5djsnOiAnXHUyOWI0JywKKyAgICAnbGFncmFuOyc6ICdcdTIxMTInLAorICAgICdMYW1iZGE7JzogJ1x1MDM5YicsCisgICAgJ2xhbWJkYTsnOiAnXHUwM2JiJywKKyAgICAnTGFuZzsnOiAnXHUyN2VhJywKKyAgICAnbGFuZzsnOiAnXHUyN2U4JywKKyAgICAnbGFuZ2Q7JzogJ1x1Mjk5MScsCisgICAgJ2xhbmdsZTsnOiAnXHUyN2U4JywKKyAgICAnbGFwOyc6ICdcdTJhODUnLAorICAgICdMYXBsYWNldHJmOyc6ICdcdTIxMTInLAorICAgICdsYXF1byc6ICdceGFiJywKKyAgICAnbGFxdW87JzogJ1x4YWInLAorICAgICdMYXJyOyc6ICdcdTIxOWUnLAorICAgICdsQXJyOyc6ICdcdTIxZDAnLAorICAgICdsYXJyOyc6ICdcdTIxOTAnLAorICAgICdsYXJyYjsnOiAnXHUyMWU0JywKKyAgICAnbGFycmJmczsnOiAnXHUyOTFmJywKKyAgICAnbGFycmZzOyc6ICdcdTI5MWQnLAorICAgICdsYXJyaGs7JzogJ1x1MjFhOScsCisgICAgJ2xhcnJscDsnOiAnXHUyMWFiJywKKyAgICAnbGFycnBsOyc6ICdcdTI5MzknLAorICAgICdsYXJyc2ltOyc6ICdcdTI5NzMnLAorICAgICdsYXJydGw7JzogJ1x1MjFhMicsCisgICAgJ2xhdDsnOiAnXHUyYWFiJywKKyAgICAnbEF0YWlsOyc6ICdcdTI5MWInLAorICAgICdsYXRhaWw7JzogJ1x1MjkxOScsCisgICAgJ2xhdGU7JzogJ1x1MmFhZCcsCisgICAgJ2xhdGVzOyc6ICdcdTJhYWRcdWZlMDAnLAorICAgICdsQmFycjsnOiAnXHUyOTBlJywKKyAgICAnbGJhcnI7JzogJ1x1MjkwYycsCisgICAgJ2xiYnJrOyc6ICdcdTI3NzInLAorICAgICdsYnJhY2U7JzogJ3snLAorICAgICdsYnJhY2s7JzogJ1snLAorICAgICdsYnJrZTsnOiAnXHUyOThiJywKKyAgICAnbGJya3NsZDsnOiAnXHUyOThmJywKKyAgICAnbGJya3NsdTsnOiAnXHUyOThkJywKKyAgICAnTGNhcm9uOyc6ICdcdTAxM2QnLAorICAgICdsY2Fyb247JzogJ1x1MDEzZScsCisgICAgJ0xjZWRpbDsnOiAnXHUwMTNiJywKKyAgICAnbGNlZGlsOyc6ICdcdTAxM2MnLAorICAgICdsY2VpbDsnOiAnXHUyMzA4JywKKyAgICAnbGN1YjsnOiAneycsCisgICAgJ0xjeTsnOiAnXHUwNDFiJywKKyAgICAnbGN5Oyc6ICdcdTA0M2InLAorICAgICdsZGNhOyc6ICdcdTI5MzYnLAorICAgICdsZHF1bzsnOiAnXHUyMDFjJywKKyAgICAnbGRxdW9yOyc6ICdcdTIwMWUnLAorICAgICdsZHJkaGFyOyc6ICdcdTI5NjcnLAorICAgICdsZHJ1c2hhcjsnOiAnXHUyOTRiJywKKyAgICAnbGRzaDsnOiAnXHUyMWIyJywKKyAgICAnbEU7JzogJ1x1MjI2NicsCisgICAgJ2xlOyc6ICdcdTIyNjQnLAorICAgICdMZWZ0QW5nbGVCcmFja2V0Oyc6ICdcdTI3ZTgnLAorICAgICdMZWZ0QXJyb3c7JzogJ1x1MjE5MCcsCisgICAgJ0xlZnRhcnJvdzsnOiAnXHUyMWQwJywKKyAgICAnbGVmdGFycm93Oyc6ICdcdTIxOTAnLAorICAgICdMZWZ0QXJyb3dCYXI7JzogJ1x1MjFlNCcsCisgICAgJ0xlZnRBcnJvd1JpZ2h0QXJyb3c7JzogJ1x1MjFjNicsCisgICAgJ2xlZnRhcnJvd3RhaWw7JzogJ1x1MjFhMicsCisgICAgJ0xlZnRDZWlsaW5nOyc6ICdcdTIzMDgnLAorICAgICdMZWZ0RG91YmxlQnJhY2tldDsnOiAnXHUyN2U2JywKKyAgICAnTGVmdERvd25UZWVWZWN0b3I7JzogJ1x1Mjk2MScsCisgICAgJ0xlZnREb3duVmVjdG9yOyc6ICdcdTIxYzMnLAorICAgICdMZWZ0RG93blZlY3RvckJhcjsnOiAnXHUyOTU5JywKKyAgICAnTGVmdEZsb29yOyc6ICdcdTIzMGEnLAorICAgICdsZWZ0aGFycG9vbmRvd247JzogJ1x1MjFiZCcsCisgICAgJ2xlZnRoYXJwb29udXA7JzogJ1x1MjFiYycsCisgICAgJ2xlZnRsZWZ0YXJyb3dzOyc6ICdcdTIxYzcnLAorICAgICdMZWZ0UmlnaHRBcnJvdzsnOiAnXHUyMTk0JywKKyAgICAnTGVmdHJpZ2h0YXJyb3c7JzogJ1x1MjFkNCcsCisgICAgJ2xlZnRyaWdodGFycm93Oyc6ICdcdTIxOTQnLAorICAgICdsZWZ0cmlnaHRhcnJvd3M7JzogJ1x1MjFjNicsCisgICAgJ2xlZnRyaWdodGhhcnBvb25zOyc6ICdcdTIxY2InLAorICAgICdsZWZ0cmlnaHRzcXVpZ2Fycm93Oyc6ICdcdTIxYWQnLAorICAgICdMZWZ0UmlnaHRWZWN0b3I7JzogJ1x1Mjk0ZScsCisgICAgJ0xlZnRUZWU7JzogJ1x1MjJhMycsCisgICAgJ0xlZnRUZWVBcnJvdzsnOiAnXHUyMWE0JywKKyAgICAnTGVmdFRlZVZlY3RvcjsnOiAnXHUyOTVhJywKKyAgICAnbGVmdHRocmVldGltZXM7JzogJ1x1MjJjYicsCisgICAgJ0xlZnRUcmlhbmdsZTsnOiAnXHUyMmIyJywKKyAgICAnTGVmdFRyaWFuZ2xlQmFyOyc6ICdcdTI5Y2YnLAorICAgICdMZWZ0VHJpYW5nbGVFcXVhbDsnOiAnXHUyMmI0JywKKyAgICAnTGVmdFVwRG93blZlY3RvcjsnOiAnXHUyOTUxJywKKyAgICAnTGVmdFVwVGVlVmVjdG9yOyc6ICdcdTI5NjAnLAorICAgICdMZWZ0VXBWZWN0b3I7JzogJ1x1MjFiZicsCisgICAgJ0xlZnRVcFZlY3RvckJhcjsnOiAnXHUyOTU4JywKKyAgICAnTGVmdFZlY3RvcjsnOiAnXHUyMWJjJywKKyAgICAnTGVmdFZlY3RvckJhcjsnOiAnXHUyOTUyJywKKyAgICAnbEVnOyc6ICdcdTJhOGInLAorICAgICdsZWc7JzogJ1x1MjJkYScsCisgICAgJ2xlcTsnOiAnXHUyMjY0JywKKyAgICAnbGVxcTsnOiAnXHUyMjY2JywKKyAgICAnbGVxc2xhbnQ7JzogJ1x1MmE3ZCcsCisgICAgJ2xlczsnOiAnXHUyYTdkJywKKyAgICAnbGVzY2M7JzogJ1x1MmFhOCcsCisgICAgJ2xlc2RvdDsnOiAnXHUyYTdmJywKKyAgICAnbGVzZG90bzsnOiAnXHUyYTgxJywKKyAgICAnbGVzZG90b3I7JzogJ1x1MmE4MycsCisgICAgJ2xlc2c7JzogJ1x1MjJkYVx1ZmUwMCcsCisgICAgJ2xlc2dlczsnOiAnXHUyYTkzJywKKyAgICAnbGVzc2FwcHJveDsnOiAnXHUyYTg1JywKKyAgICAnbGVzc2RvdDsnOiAnXHUyMmQ2JywKKyAgICAnbGVzc2VxZ3RyOyc6ICdcdTIyZGEnLAorICAgICdsZXNzZXFxZ3RyOyc6ICdcdTJhOGInLAorICAgICdMZXNzRXF1YWxHcmVhdGVyOyc6ICdcdTIyZGEnLAorICAgICdMZXNzRnVsbEVxdWFsOyc6ICdcdTIyNjYnLAorICAgICdMZXNzR3JlYXRlcjsnOiAnXHUyMjc2JywKKyAgICAnbGVzc2d0cjsnOiAnXHUyMjc2JywKKyAgICAnTGVzc0xlc3M7JzogJ1x1MmFhMScsCisgICAgJ2xlc3NzaW07JzogJ1x1MjI3MicsCisgICAgJ0xlc3NTbGFudEVxdWFsOyc6ICdcdTJhN2QnLAorICAgICdMZXNzVGlsZGU7JzogJ1x1MjI3MicsCisgICAgJ2xmaXNodDsnOiAnXHUyOTdjJywKKyAgICAnbGZsb29yOyc6ICdcdTIzMGEnLAorICAgICdMZnI7JzogJ1xVMDAwMWQ1MGYnLAorICAgICdsZnI7JzogJ1xVMDAwMWQ1MjknLAorICAgICdsZzsnOiAnXHUyMjc2JywKKyAgICAnbGdFOyc6ICdcdTJhOTEnLAorICAgICdsSGFyOyc6ICdcdTI5NjInLAorICAgICdsaGFyZDsnOiAnXHUyMWJkJywKKyAgICAnbGhhcnU7JzogJ1x1MjFiYycsCisgICAgJ2xoYXJ1bDsnOiAnXHUyOTZhJywKKyAgICAnbGhibGs7JzogJ1x1MjU4NCcsCisgICAgJ0xKY3k7JzogJ1x1MDQwOScsCisgICAgJ2xqY3k7JzogJ1x1MDQ1OScsCisgICAgJ0xsOyc6ICdcdTIyZDgnLAorICAgICdsbDsnOiAnXHUyMjZhJywKKyAgICAnbGxhcnI7JzogJ1x1MjFjNycsCisgICAgJ2xsY29ybmVyOyc6ICdcdTIzMWUnLAorICAgICdMbGVmdGFycm93Oyc6ICdcdTIxZGEnLAorICAgICdsbGhhcmQ7JzogJ1x1Mjk2YicsCisgICAgJ2xsdHJpOyc6ICdcdTI1ZmEnLAorICAgICdMbWlkb3Q7JzogJ1x1MDEzZicsCisgICAgJ2xtaWRvdDsnOiAnXHUwMTQwJywKKyAgICAnbG1vdXN0Oyc6ICdcdTIzYjAnLAorICAgICdsbW91c3RhY2hlOyc6ICdcdTIzYjAnLAorICAgICdsbmFwOyc6ICdcdTJhODknLAorICAgICdsbmFwcHJveDsnOiAnXHUyYTg5JywKKyAgICAnbG5FOyc6ICdcdTIyNjgnLAorICAgICdsbmU7JzogJ1x1MmE4NycsCisgICAgJ2xuZXE7JzogJ1x1MmE4NycsCisgICAgJ2xuZXFxOyc6ICdcdTIyNjgnLAorICAgICdsbnNpbTsnOiAnXHUyMmU2JywKKyAgICAnbG9hbmc7JzogJ1x1MjdlYycsCisgICAgJ2xvYXJyOyc6ICdcdTIxZmQnLAorICAgICdsb2JyazsnOiAnXHUyN2U2JywKKyAgICAnTG9uZ0xlZnRBcnJvdzsnOiAnXHUyN2Y1JywKKyAgICAnTG9uZ2xlZnRhcnJvdzsnOiAnXHUyN2Y4JywKKyAgICAnbG9uZ2xlZnRhcnJvdzsnOiAnXHUyN2Y1JywKKyAgICAnTG9uZ0xlZnRSaWdodEFycm93Oyc6ICdcdTI3ZjcnLAorICAgICdMb25nbGVmdHJpZ2h0YXJyb3c7JzogJ1x1MjdmYScsCisgICAgJ2xvbmdsZWZ0cmlnaHRhcnJvdzsnOiAnXHUyN2Y3JywKKyAgICAnbG9uZ21hcHN0bzsnOiAnXHUyN2ZjJywKKyAgICAnTG9uZ1JpZ2h0QXJyb3c7JzogJ1x1MjdmNicsCisgICAgJ0xvbmdyaWdodGFycm93Oyc6ICdcdTI3ZjknLAorICAgICdsb25ncmlnaHRhcnJvdzsnOiAnXHUyN2Y2JywKKyAgICAnbG9vcGFycm93bGVmdDsnOiAnXHUyMWFiJywKKyAgICAnbG9vcGFycm93cmlnaHQ7JzogJ1x1MjFhYycsCisgICAgJ2xvcGFyOyc6ICdcdTI5ODUnLAorICAgICdMb3BmOyc6ICdcVTAwMDFkNTQzJywKKyAgICAnbG9wZjsnOiAnXFUwMDAxZDU1ZCcsCisgICAgJ2xvcGx1czsnOiAnXHUyYTJkJywKKyAgICAnbG90aW1lczsnOiAnXHUyYTM0JywKKyAgICAnbG93YXN0Oyc6ICdcdTIyMTcnLAorICAgICdsb3diYXI7JzogJ18nLAorICAgICdMb3dlckxlZnRBcnJvdzsnOiAnXHUyMTk5JywKKyAgICAnTG93ZXJSaWdodEFycm93Oyc6ICdcdTIxOTgnLAorICAgICdsb3o7JzogJ1x1MjVjYScsCisgICAgJ2xvemVuZ2U7JzogJ1x1MjVjYScsCisgICAgJ2xvemY7JzogJ1x1MjllYicsCisgICAgJ2xwYXI7JzogJygnLAorICAgICdscGFybHQ7JzogJ1x1Mjk5MycsCisgICAgJ2xyYXJyOyc6ICdcdTIxYzYnLAorICAgICdscmNvcm5lcjsnOiAnXHUyMzFmJywKKyAgICAnbHJoYXI7JzogJ1x1MjFjYicsCisgICAgJ2xyaGFyZDsnOiAnXHUyOTZkJywKKyAgICAnbHJtOyc6ICdcdTIwMGUnLAorICAgICdscnRyaTsnOiAnXHUyMmJmJywKKyAgICAnbHNhcXVvOyc6ICdcdTIwMzknLAorICAgICdMc2NyOyc6ICdcdTIxMTInLAorICAgICdsc2NyOyc6ICdcVTAwMDFkNGMxJywKKyAgICAnTHNoOyc6ICdcdTIxYjAnLAorICAgICdsc2g7JzogJ1x1MjFiMCcsCisgICAgJ2xzaW07JzogJ1x1MjI3MicsCisgICAgJ2xzaW1lOyc6ICdcdTJhOGQnLAorICAgICdsc2ltZzsnOiAnXHUyYThmJywKKyAgICAnbHNxYjsnOiAnWycsCisgICAgJ2xzcXVvOyc6ICdcdTIwMTgnLAorICAgICdsc3F1b3I7JzogJ1x1MjAxYScsCisgICAgJ0xzdHJvazsnOiAnXHUwMTQxJywKKyAgICAnbHN0cm9rOyc6ICdcdTAxNDInLAorICAgICdMVCc6ICc8JywKKyAgICAnbHQnOiAnPCcsCisgICAgJ0xUOyc6ICc8JywKKyAgICAnTHQ7JzogJ1x1MjI2YScsCisgICAgJ2x0Oyc6ICc8JywKKyAgICAnbHRjYzsnOiAnXHUyYWE2JywKKyAgICAnbHRjaXI7JzogJ1x1MmE3OScsCisgICAgJ2x0ZG90Oyc6ICdcdTIyZDYnLAorICAgICdsdGhyZWU7JzogJ1x1MjJjYicsCisgICAgJ2x0aW1lczsnOiAnXHUyMmM5JywKKyAgICAnbHRsYXJyOyc6ICdcdTI5NzYnLAorICAgICdsdHF1ZXN0Oyc6ICdcdTJhN2InLAorICAgICdsdHJpOyc6ICdcdTI1YzMnLAorICAgICdsdHJpZTsnOiAnXHUyMmI0JywKKyAgICAnbHRyaWY7JzogJ1x1MjVjMicsCisgICAgJ2x0clBhcjsnOiAnXHUyOTk2JywKKyAgICAnbHVyZHNoYXI7JzogJ1x1Mjk0YScsCisgICAgJ2x1cnVoYXI7JzogJ1x1Mjk2NicsCisgICAgJ2x2ZXJ0bmVxcTsnOiAnXHUyMjY4XHVmZTAwJywKKyAgICAnbHZuRTsnOiAnXHUyMjY4XHVmZTAwJywKKyAgICAnbWFjcic6ICdceGFmJywKKyAgICAnbWFjcjsnOiAnXHhhZicsCisgICAgJ21hbGU7JzogJ1x1MjY0MicsCisgICAgJ21hbHQ7JzogJ1x1MjcyMCcsCisgICAgJ21hbHRlc2U7JzogJ1x1MjcyMCcsCisgICAgJ01hcDsnOiAnXHUyOTA1JywKKyAgICAnbWFwOyc6ICdcdTIxYTYnLAorICAgICdtYXBzdG87JzogJ1x1MjFhNicsCisgICAgJ21hcHN0b2Rvd247JzogJ1x1MjFhNycsCisgICAgJ21hcHN0b2xlZnQ7JzogJ1x1MjFhNCcsCisgICAgJ21hcHN0b3VwOyc6ICdcdTIxYTUnLAorICAgICdtYXJrZXI7JzogJ1x1MjVhZScsCisgICAgJ21jb21tYTsnOiAnXHUyYTI5JywKKyAgICAnTWN5Oyc6ICdcdTA0MWMnLAorICAgICdtY3k7JzogJ1x1MDQzYycsCisgICAgJ21kYXNoOyc6ICdcdTIwMTQnLAorICAgICdtRERvdDsnOiAnXHUyMjNhJywKKyAgICAnbWVhc3VyZWRhbmdsZTsnOiAnXHUyMjIxJywKKyAgICAnTWVkaXVtU3BhY2U7JzogJ1x1MjA1ZicsCisgICAgJ01lbGxpbnRyZjsnOiAnXHUyMTMzJywKKyAgICAnTWZyOyc6ICdcVTAwMDFkNTEwJywKKyAgICAnbWZyOyc6ICdcVTAwMDFkNTJhJywKKyAgICAnbWhvOyc6ICdcdTIxMjcnLAorICAgICdtaWNybyc6ICdceGI1JywKKyAgICAnbWljcm87JzogJ1x4YjUnLAorICAgICdtaWQ7JzogJ1x1MjIyMycsCisgICAgJ21pZGFzdDsnOiAnKicsCisgICAgJ21pZGNpcjsnOiAnXHUyYWYwJywKKyAgICAnbWlkZG90JzogJ1x4YjcnLAorICAgICdtaWRkb3Q7JzogJ1x4YjcnLAorICAgICdtaW51czsnOiAnXHUyMjEyJywKKyAgICAnbWludXNiOyc6ICdcdTIyOWYnLAorICAgICdtaW51c2Q7JzogJ1x1MjIzOCcsCisgICAgJ21pbnVzZHU7JzogJ1x1MmEyYScsCisgICAgJ01pbnVzUGx1czsnOiAnXHUyMjEzJywKKyAgICAnbWxjcDsnOiAnXHUyYWRiJywKKyAgICAnbWxkcjsnOiAnXHUyMDI2JywKKyAgICAnbW5wbHVzOyc6ICdcdTIyMTMnLAorICAgICdtb2RlbHM7JzogJ1x1MjJhNycsCisgICAgJ01vcGY7JzogJ1xVMDAwMWQ1NDQnLAorICAgICdtb3BmOyc6ICdcVTAwMDFkNTVlJywKKyAgICAnbXA7JzogJ1x1MjIxMycsCisgICAgJ01zY3I7JzogJ1x1MjEzMycsCisgICAgJ21zY3I7JzogJ1xVMDAwMWQ0YzInLAorICAgICdtc3Rwb3M7JzogJ1x1MjIzZScsCisgICAgJ011Oyc6ICdcdTAzOWMnLAorICAgICdtdTsnOiAnXHUwM2JjJywKKyAgICAnbXVsdGltYXA7JzogJ1x1MjJiOCcsCisgICAgJ211bWFwOyc6ICdcdTIyYjgnLAorICAgICduYWJsYTsnOiAnXHUyMjA3JywKKyAgICAnTmFjdXRlOyc6ICdcdTAxNDMnLAorICAgICduYWN1dGU7JzogJ1x1MDE0NCcsCisgICAgJ25hbmc7JzogJ1x1MjIyMFx1MjBkMicsCisgICAgJ25hcDsnOiAnXHUyMjQ5JywKKyAgICAnbmFwRTsnOiAnXHUyYTcwXHUwMzM4JywKKyAgICAnbmFwaWQ7JzogJ1x1MjI0Ylx1MDMzOCcsCisgICAgJ25hcG9zOyc6ICdcdTAxNDknLAorICAgICduYXBwcm94Oyc6ICdcdTIyNDknLAorICAgICduYXR1cjsnOiAnXHUyNjZlJywKKyAgICAnbmF0dXJhbDsnOiAnXHUyNjZlJywKKyAgICAnbmF0dXJhbHM7JzogJ1x1MjExNScsCisgICAgJ25ic3AnOiAnXHhhMCcsCisgICAgJ25ic3A7JzogJ1x4YTAnLAorICAgICduYnVtcDsnOiAnXHUyMjRlXHUwMzM4JywKKyAgICAnbmJ1bXBlOyc6ICdcdTIyNGZcdTAzMzgnLAorICAgICduY2FwOyc6ICdcdTJhNDMnLAorICAgICdOY2Fyb247JzogJ1x1MDE0NycsCisgICAgJ25jYXJvbjsnOiAnXHUwMTQ4JywKKyAgICAnTmNlZGlsOyc6ICdcdTAxNDUnLAorICAgICduY2VkaWw7JzogJ1x1MDE0NicsCisgICAgJ25jb25nOyc6ICdcdTIyNDcnLAorICAgICduY29uZ2RvdDsnOiAnXHUyYTZkXHUwMzM4JywKKyAgICAnbmN1cDsnOiAnXHUyYTQyJywKKyAgICAnTmN5Oyc6ICdcdTA0MWQnLAorICAgICduY3k7JzogJ1x1MDQzZCcsCisgICAgJ25kYXNoOyc6ICdcdTIwMTMnLAorICAgICduZTsnOiAnXHUyMjYwJywKKyAgICAnbmVhcmhrOyc6ICdcdTI5MjQnLAorICAgICduZUFycjsnOiAnXHUyMWQ3JywKKyAgICAnbmVhcnI7JzogJ1x1MjE5NycsCisgICAgJ25lYXJyb3c7JzogJ1x1MjE5NycsCisgICAgJ25lZG90Oyc6ICdcdTIyNTBcdTAzMzgnLAorICAgICdOZWdhdGl2ZU1lZGl1bVNwYWNlOyc6ICdcdTIwMGInLAorICAgICdOZWdhdGl2ZVRoaWNrU3BhY2U7JzogJ1x1MjAwYicsCisgICAgJ05lZ2F0aXZlVGhpblNwYWNlOyc6ICdcdTIwMGInLAorICAgICdOZWdhdGl2ZVZlcnlUaGluU3BhY2U7JzogJ1x1MjAwYicsCisgICAgJ25lcXVpdjsnOiAnXHUyMjYyJywKKyAgICAnbmVzZWFyOyc6ICdcdTI5MjgnLAorICAgICduZXNpbTsnOiAnXHUyMjQyXHUwMzM4JywKKyAgICAnTmVzdGVkR3JlYXRlckdyZWF0ZXI7JzogJ1x1MjI2YicsCisgICAgJ05lc3RlZExlc3NMZXNzOyc6ICdcdTIyNmEnLAorICAgICdOZXdMaW5lOyc6ICdcbicsCisgICAgJ25leGlzdDsnOiAnXHUyMjA0JywKKyAgICAnbmV4aXN0czsnOiAnXHUyMjA0JywKKyAgICAnTmZyOyc6ICdcVTAwMDFkNTExJywKKyAgICAnbmZyOyc6ICdcVTAwMDFkNTJiJywKKyAgICAnbmdFOyc6ICdcdTIyNjdcdTAzMzgnLAorICAgICduZ2U7JzogJ1x1MjI3MScsCisgICAgJ25nZXE7JzogJ1x1MjI3MScsCisgICAgJ25nZXFxOyc6ICdcdTIyNjdcdTAzMzgnLAorICAgICduZ2Vxc2xhbnQ7JzogJ1x1MmE3ZVx1MDMzOCcsCisgICAgJ25nZXM7JzogJ1x1MmE3ZVx1MDMzOCcsCisgICAgJ25HZzsnOiAnXHUyMmQ5XHUwMzM4JywKKyAgICAnbmdzaW07JzogJ1x1MjI3NScsCisgICAgJ25HdDsnOiAnXHUyMjZiXHUyMGQyJywKKyAgICAnbmd0Oyc6ICdcdTIyNmYnLAorICAgICduZ3RyOyc6ICdcdTIyNmYnLAorICAgICduR3R2Oyc6ICdcdTIyNmJcdTAzMzgnLAorICAgICduaEFycjsnOiAnXHUyMWNlJywKKyAgICAnbmhhcnI7JzogJ1x1MjFhZScsCisgICAgJ25ocGFyOyc6ICdcdTJhZjInLAorICAgICduaTsnOiAnXHUyMjBiJywKKyAgICAnbmlzOyc6ICdcdTIyZmMnLAorICAgICduaXNkOyc6ICdcdTIyZmEnLAorICAgICduaXY7JzogJ1x1MjIwYicsCisgICAgJ05KY3k7JzogJ1x1MDQwYScsCisgICAgJ25qY3k7JzogJ1x1MDQ1YScsCisgICAgJ25sQXJyOyc6ICdcdTIxY2QnLAorICAgICdubGFycjsnOiAnXHUyMTlhJywKKyAgICAnbmxkcjsnOiAnXHUyMDI1JywKKyAgICAnbmxFOyc6ICdcdTIyNjZcdTAzMzgnLAorICAgICdubGU7JzogJ1x1MjI3MCcsCisgICAgJ25MZWZ0YXJyb3c7JzogJ1x1MjFjZCcsCisgICAgJ25sZWZ0YXJyb3c7JzogJ1x1MjE5YScsCisgICAgJ25MZWZ0cmlnaHRhcnJvdzsnOiAnXHUyMWNlJywKKyAgICAnbmxlZnRyaWdodGFycm93Oyc6ICdcdTIxYWUnLAorICAgICdubGVxOyc6ICdcdTIyNzAnLAorICAgICdubGVxcTsnOiAnXHUyMjY2XHUwMzM4JywKKyAgICAnbmxlcXNsYW50Oyc6ICdcdTJhN2RcdTAzMzgnLAorICAgICdubGVzOyc6ICdcdTJhN2RcdTAzMzgnLAorICAgICdubGVzczsnOiAnXHUyMjZlJywKKyAgICAnbkxsOyc6ICdcdTIyZDhcdTAzMzgnLAorICAgICdubHNpbTsnOiAnXHUyMjc0JywKKyAgICAnbkx0Oyc6ICdcdTIyNmFcdTIwZDInLAorICAgICdubHQ7JzogJ1x1MjI2ZScsCisgICAgJ25sdHJpOyc6ICdcdTIyZWEnLAorICAgICdubHRyaWU7JzogJ1x1MjJlYycsCisgICAgJ25MdHY7JzogJ1x1MjI2YVx1MDMzOCcsCisgICAgJ25taWQ7JzogJ1x1MjIyNCcsCisgICAgJ05vQnJlYWs7JzogJ1x1MjA2MCcsCisgICAgJ05vbkJyZWFraW5nU3BhY2U7JzogJ1x4YTAnLAorICAgICdOb3BmOyc6ICdcdTIxMTUnLAorICAgICdub3BmOyc6ICdcVTAwMDFkNTVmJywKKyAgICAnbm90JzogJ1x4YWMnLAorICAgICdOb3Q7JzogJ1x1MmFlYycsCisgICAgJ25vdDsnOiAnXHhhYycsCisgICAgJ05vdENvbmdydWVudDsnOiAnXHUyMjYyJywKKyAgICAnTm90Q3VwQ2FwOyc6ICdcdTIyNmQnLAorICAgICdOb3REb3VibGVWZXJ0aWNhbEJhcjsnOiAnXHUyMjI2JywKKyAgICAnTm90RWxlbWVudDsnOiAnXHUyMjA5JywKKyAgICAnTm90RXF1YWw7JzogJ1x1MjI2MCcsCisgICAgJ05vdEVxdWFsVGlsZGU7JzogJ1x1MjI0Mlx1MDMzOCcsCisgICAgJ05vdEV4aXN0czsnOiAnXHUyMjA0JywKKyAgICAnTm90R3JlYXRlcjsnOiAnXHUyMjZmJywKKyAgICAnTm90R3JlYXRlckVxdWFsOyc6ICdcdTIyNzEnLAorICAgICdOb3RHcmVhdGVyRnVsbEVxdWFsOyc6ICdcdTIyNjdcdTAzMzgnLAorICAgICdOb3RHcmVhdGVyR3JlYXRlcjsnOiAnXHUyMjZiXHUwMzM4JywKKyAgICAnTm90R3JlYXRlckxlc3M7JzogJ1x1MjI3OScsCisgICAgJ05vdEdyZWF0ZXJTbGFudEVxdWFsOyc6ICdcdTJhN2VcdTAzMzgnLAorICAgICdOb3RHcmVhdGVyVGlsZGU7JzogJ1x1MjI3NScsCisgICAgJ05vdEh1bXBEb3duSHVtcDsnOiAnXHUyMjRlXHUwMzM4JywKKyAgICAnTm90SHVtcEVxdWFsOyc6ICdcdTIyNGZcdTAzMzgnLAorICAgICdub3RpbjsnOiAnXHUyMjA5JywKKyAgICAnbm90aW5kb3Q7JzogJ1x1MjJmNVx1MDMzOCcsCisgICAgJ25vdGluRTsnOiAnXHUyMmY5XHUwMzM4JywKKyAgICAnbm90aW52YTsnOiAnXHUyMjA5JywKKyAgICAnbm90aW52YjsnOiAnXHUyMmY3JywKKyAgICAnbm90aW52YzsnOiAnXHUyMmY2JywKKyAgICAnTm90TGVmdFRyaWFuZ2xlOyc6ICdcdTIyZWEnLAorICAgICdOb3RMZWZ0VHJpYW5nbGVCYXI7JzogJ1x1MjljZlx1MDMzOCcsCisgICAgJ05vdExlZnRUcmlhbmdsZUVxdWFsOyc6ICdcdTIyZWMnLAorICAgICdOb3RMZXNzOyc6ICdcdTIyNmUnLAorICAgICdOb3RMZXNzRXF1YWw7JzogJ1x1MjI3MCcsCisgICAgJ05vdExlc3NHcmVhdGVyOyc6ICdcdTIyNzgnLAorICAgICdOb3RMZXNzTGVzczsnOiAnXHUyMjZhXHUwMzM4JywKKyAgICAnTm90TGVzc1NsYW50RXF1YWw7JzogJ1x1MmE3ZFx1MDMzOCcsCisgICAgJ05vdExlc3NUaWxkZTsnOiAnXHUyMjc0JywKKyAgICAnTm90TmVzdGVkR3JlYXRlckdyZWF0ZXI7JzogJ1x1MmFhMlx1MDMzOCcsCisgICAgJ05vdE5lc3RlZExlc3NMZXNzOyc6ICdcdTJhYTFcdTAzMzgnLAorICAgICdub3RuaTsnOiAnXHUyMjBjJywKKyAgICAnbm90bml2YTsnOiAnXHUyMjBjJywKKyAgICAnbm90bml2YjsnOiAnXHUyMmZlJywKKyAgICAnbm90bml2YzsnOiAnXHUyMmZkJywKKyAgICAnTm90UHJlY2VkZXM7JzogJ1x1MjI4MCcsCisgICAgJ05vdFByZWNlZGVzRXF1YWw7JzogJ1x1MmFhZlx1MDMzOCcsCisgICAgJ05vdFByZWNlZGVzU2xhbnRFcXVhbDsnOiAnXHUyMmUwJywKKyAgICAnTm90UmV2ZXJzZUVsZW1lbnQ7JzogJ1x1MjIwYycsCisgICAgJ05vdFJpZ2h0VHJpYW5nbGU7JzogJ1x1MjJlYicsCisgICAgJ05vdFJpZ2h0VHJpYW5nbGVCYXI7JzogJ1x1MjlkMFx1MDMzOCcsCisgICAgJ05vdFJpZ2h0VHJpYW5nbGVFcXVhbDsnOiAnXHUyMmVkJywKKyAgICAnTm90U3F1YXJlU3Vic2V0Oyc6ICdcdTIyOGZcdTAzMzgnLAorICAgICdOb3RTcXVhcmVTdWJzZXRFcXVhbDsnOiAnXHUyMmUyJywKKyAgICAnTm90U3F1YXJlU3VwZXJzZXQ7JzogJ1x1MjI5MFx1MDMzOCcsCisgICAgJ05vdFNxdWFyZVN1cGVyc2V0RXF1YWw7JzogJ1x1MjJlMycsCisgICAgJ05vdFN1YnNldDsnOiAnXHUyMjgyXHUyMGQyJywKKyAgICAnTm90U3Vic2V0RXF1YWw7JzogJ1x1MjI4OCcsCisgICAgJ05vdFN1Y2NlZWRzOyc6ICdcdTIyODEnLAorICAgICdOb3RTdWNjZWVkc0VxdWFsOyc6ICdcdTJhYjBcdTAzMzgnLAorICAgICdOb3RTdWNjZWVkc1NsYW50RXF1YWw7JzogJ1x1MjJlMScsCisgICAgJ05vdFN1Y2NlZWRzVGlsZGU7JzogJ1x1MjI3Zlx1MDMzOCcsCisgICAgJ05vdFN1cGVyc2V0Oyc6ICdcdTIyODNcdTIwZDInLAorICAgICdOb3RTdXBlcnNldEVxdWFsOyc6ICdcdTIyODknLAorICAgICdOb3RUaWxkZTsnOiAnXHUyMjQxJywKKyAgICAnTm90VGlsZGVFcXVhbDsnOiAnXHUyMjQ0JywKKyAgICAnTm90VGlsZGVGdWxsRXF1YWw7JzogJ1x1MjI0NycsCisgICAgJ05vdFRpbGRlVGlsZGU7JzogJ1x1MjI0OScsCisgICAgJ05vdFZlcnRpY2FsQmFyOyc6ICdcdTIyMjQnLAorICAgICducGFyOyc6ICdcdTIyMjYnLAorICAgICducGFyYWxsZWw7JzogJ1x1MjIyNicsCisgICAgJ25wYXJzbDsnOiAnXHUyYWZkXHUyMGU1JywKKyAgICAnbnBhcnQ7JzogJ1x1MjIwMlx1MDMzOCcsCisgICAgJ25wb2xpbnQ7JzogJ1x1MmExNCcsCisgICAgJ25wcjsnOiAnXHUyMjgwJywKKyAgICAnbnByY3VlOyc6ICdcdTIyZTAnLAorICAgICducHJlOyc6ICdcdTJhYWZcdTAzMzgnLAorICAgICducHJlYzsnOiAnXHUyMjgwJywKKyAgICAnbnByZWNlcTsnOiAnXHUyYWFmXHUwMzM4JywKKyAgICAnbnJBcnI7JzogJ1x1MjFjZicsCisgICAgJ25yYXJyOyc6ICdcdTIxOWInLAorICAgICducmFycmM7JzogJ1x1MjkzM1x1MDMzOCcsCisgICAgJ25yYXJydzsnOiAnXHUyMTlkXHUwMzM4JywKKyAgICAnblJpZ2h0YXJyb3c7JzogJ1x1MjFjZicsCisgICAgJ25yaWdodGFycm93Oyc6ICdcdTIxOWInLAorICAgICducnRyaTsnOiAnXHUyMmViJywKKyAgICAnbnJ0cmllOyc6ICdcdTIyZWQnLAorICAgICduc2M7JzogJ1x1MjI4MScsCisgICAgJ25zY2N1ZTsnOiAnXHUyMmUxJywKKyAgICAnbnNjZTsnOiAnXHUyYWIwXHUwMzM4JywKKyAgICAnTnNjcjsnOiAnXFUwMDAxZDRhOScsCisgICAgJ25zY3I7JzogJ1xVMDAwMWQ0YzMnLAorICAgICduc2hvcnRtaWQ7JzogJ1x1MjIyNCcsCisgICAgJ25zaG9ydHBhcmFsbGVsOyc6ICdcdTIyMjYnLAorICAgICduc2ltOyc6ICdcdTIyNDEnLAorICAgICduc2ltZTsnOiAnXHUyMjQ0JywKKyAgICAnbnNpbWVxOyc6ICdcdTIyNDQnLAorICAgICduc21pZDsnOiAnXHUyMjI0JywKKyAgICAnbnNwYXI7JzogJ1x1MjIyNicsCisgICAgJ25zcXN1YmU7JzogJ1x1MjJlMicsCisgICAgJ25zcXN1cGU7JzogJ1x1MjJlMycsCisgICAgJ25zdWI7JzogJ1x1MjI4NCcsCisgICAgJ25zdWJFOyc6ICdcdTJhYzVcdTAzMzgnLAorICAgICduc3ViZTsnOiAnXHUyMjg4JywKKyAgICAnbnN1YnNldDsnOiAnXHUyMjgyXHUyMGQyJywKKyAgICAnbnN1YnNldGVxOyc6ICdcdTIyODgnLAorICAgICduc3Vic2V0ZXFxOyc6ICdcdTJhYzVcdTAzMzgnLAorICAgICduc3VjYzsnOiAnXHUyMjgxJywKKyAgICAnbnN1Y2NlcTsnOiAnXHUyYWIwXHUwMzM4JywKKyAgICAnbnN1cDsnOiAnXHUyMjg1JywKKyAgICAnbnN1cEU7JzogJ1x1MmFjNlx1MDMzOCcsCisgICAgJ25zdXBlOyc6ICdcdTIyODknLAorICAgICduc3Vwc2V0Oyc6ICdcdTIyODNcdTIwZDInLAorICAgICduc3Vwc2V0ZXE7JzogJ1x1MjI4OScsCisgICAgJ25zdXBzZXRlcXE7JzogJ1x1MmFjNlx1MDMzOCcsCisgICAgJ250Z2w7JzogJ1x1MjI3OScsCisgICAgJ050aWxkZSc6ICdceGQxJywKKyAgICAnbnRpbGRlJzogJ1x4ZjEnLAorICAgICdOdGlsZGU7JzogJ1x4ZDEnLAorICAgICdudGlsZGU7JzogJ1x4ZjEnLAorICAgICdudGxnOyc6ICdcdTIyNzgnLAorICAgICdudHJpYW5nbGVsZWZ0Oyc6ICdcdTIyZWEnLAorICAgICdudHJpYW5nbGVsZWZ0ZXE7JzogJ1x1MjJlYycsCisgICAgJ250cmlhbmdsZXJpZ2h0Oyc6ICdcdTIyZWInLAorICAgICdudHJpYW5nbGVyaWdodGVxOyc6ICdcdTIyZWQnLAorICAgICdOdTsnOiAnXHUwMzlkJywKKyAgICAnbnU7JzogJ1x1MDNiZCcsCisgICAgJ251bTsnOiAnIycsCisgICAgJ251bWVybzsnOiAnXHUyMTE2JywKKyAgICAnbnVtc3A7JzogJ1x1MjAwNycsCisgICAgJ252YXA7JzogJ1x1MjI0ZFx1MjBkMicsCisgICAgJ25WRGFzaDsnOiAnXHUyMmFmJywKKyAgICAnblZkYXNoOyc6ICdcdTIyYWUnLAorICAgICdudkRhc2g7JzogJ1x1MjJhZCcsCisgICAgJ252ZGFzaDsnOiAnXHUyMmFjJywKKyAgICAnbnZnZTsnOiAnXHUyMjY1XHUyMGQyJywKKyAgICAnbnZndDsnOiAnPlx1MjBkMicsCisgICAgJ252SGFycjsnOiAnXHUyOTA0JywKKyAgICAnbnZpbmZpbjsnOiAnXHUyOWRlJywKKyAgICAnbnZsQXJyOyc6ICdcdTI5MDInLAorICAgICdudmxlOyc6ICdcdTIyNjRcdTIwZDInLAorICAgICdudmx0Oyc6ICc8XHUyMGQyJywKKyAgICAnbnZsdHJpZTsnOiAnXHUyMmI0XHUyMGQyJywKKyAgICAnbnZyQXJyOyc6ICdcdTI5MDMnLAorICAgICdudnJ0cmllOyc6ICdcdTIyYjVcdTIwZDInLAorICAgICdudnNpbTsnOiAnXHUyMjNjXHUyMGQyJywKKyAgICAnbndhcmhrOyc6ICdcdTI5MjMnLAorICAgICdud0FycjsnOiAnXHUyMWQ2JywKKyAgICAnbndhcnI7JzogJ1x1MjE5NicsCisgICAgJ253YXJyb3c7JzogJ1x1MjE5NicsCisgICAgJ253bmVhcjsnOiAnXHUyOTI3JywKKyAgICAnT2FjdXRlJzogJ1x4ZDMnLAorICAgICdvYWN1dGUnOiAnXHhmMycsCisgICAgJ09hY3V0ZTsnOiAnXHhkMycsCisgICAgJ29hY3V0ZTsnOiAnXHhmMycsCisgICAgJ29hc3Q7JzogJ1x1MjI5YicsCisgICAgJ29jaXI7JzogJ1x1MjI5YScsCisgICAgJ09jaXJjJzogJ1x4ZDQnLAorICAgICdvY2lyYyc6ICdceGY0JywKKyAgICAnT2NpcmM7JzogJ1x4ZDQnLAorICAgICdvY2lyYzsnOiAnXHhmNCcsCisgICAgJ09jeTsnOiAnXHUwNDFlJywKKyAgICAnb2N5Oyc6ICdcdTA0M2UnLAorICAgICdvZGFzaDsnOiAnXHUyMjlkJywKKyAgICAnT2RibGFjOyc6ICdcdTAxNTAnLAorICAgICdvZGJsYWM7JzogJ1x1MDE1MScsCisgICAgJ29kaXY7JzogJ1x1MmEzOCcsCisgICAgJ29kb3Q7JzogJ1x1MjI5OScsCisgICAgJ29kc29sZDsnOiAnXHUyOWJjJywKKyAgICAnT0VsaWc7JzogJ1x1MDE1MicsCisgICAgJ29lbGlnOyc6ICdcdTAxNTMnLAorICAgICdvZmNpcjsnOiAnXHUyOWJmJywKKyAgICAnT2ZyOyc6ICdcVTAwMDFkNTEyJywKKyAgICAnb2ZyOyc6ICdcVTAwMDFkNTJjJywKKyAgICAnb2dvbjsnOiAnXHUwMmRiJywKKyAgICAnT2dyYXZlJzogJ1x4ZDInLAorICAgICdvZ3JhdmUnOiAnXHhmMicsCisgICAgJ09ncmF2ZTsnOiAnXHhkMicsCisgICAgJ29ncmF2ZTsnOiAnXHhmMicsCisgICAgJ29ndDsnOiAnXHUyOWMxJywKKyAgICAnb2hiYXI7JzogJ1x1MjliNScsCisgICAgJ29obTsnOiAnXHUwM2E5JywKKyAgICAnb2ludDsnOiAnXHUyMjJlJywKKyAgICAnb2xhcnI7JzogJ1x1MjFiYScsCisgICAgJ29sY2lyOyc6ICdcdTI5YmUnLAorICAgICdvbGNyb3NzOyc6ICdcdTI5YmInLAorICAgICdvbGluZTsnOiAnXHUyMDNlJywKKyAgICAnb2x0Oyc6ICdcdTI5YzAnLAorICAgICdPbWFjcjsnOiAnXHUwMTRjJywKKyAgICAnb21hY3I7JzogJ1x1MDE0ZCcsCisgICAgJ09tZWdhOyc6ICdcdTAzYTknLAorICAgICdvbWVnYTsnOiAnXHUwM2M5JywKKyAgICAnT21pY3JvbjsnOiAnXHUwMzlmJywKKyAgICAnb21pY3JvbjsnOiAnXHUwM2JmJywKKyAgICAnb21pZDsnOiAnXHUyOWI2JywKKyAgICAnb21pbnVzOyc6ICdcdTIyOTYnLAorICAgICdPb3BmOyc6ICdcVTAwMDFkNTQ2JywKKyAgICAnb29wZjsnOiAnXFUwMDAxZDU2MCcsCisgICAgJ29wYXI7JzogJ1x1MjliNycsCisgICAgJ09wZW5DdXJseURvdWJsZVF1b3RlOyc6ICdcdTIwMWMnLAorICAgICdPcGVuQ3VybHlRdW90ZTsnOiAnXHUyMDE4JywKKyAgICAnb3BlcnA7JzogJ1x1MjliOScsCisgICAgJ29wbHVzOyc6ICdcdTIyOTUnLAorICAgICdPcjsnOiAnXHUyYTU0JywKKyAgICAnb3I7JzogJ1x1MjIyOCcsCisgICAgJ29yYXJyOyc6ICdcdTIxYmInLAorICAgICdvcmQ7JzogJ1x1MmE1ZCcsCisgICAgJ29yZGVyOyc6ICdcdTIxMzQnLAorICAgICdvcmRlcm9mOyc6ICdcdTIxMzQnLAorICAgICdvcmRmJzogJ1x4YWEnLAorICAgICdvcmRmOyc6ICdceGFhJywKKyAgICAnb3JkbSc6ICdceGJhJywKKyAgICAnb3JkbTsnOiAnXHhiYScsCisgICAgJ29yaWdvZjsnOiAnXHUyMmI2JywKKyAgICAnb3JvcjsnOiAnXHUyYTU2JywKKyAgICAnb3JzbG9wZTsnOiAnXHUyYTU3JywKKyAgICAnb3J2Oyc6ICdcdTJhNWInLAorICAgICdvUzsnOiAnXHUyNGM4JywKKyAgICAnT3NjcjsnOiAnXFUwMDAxZDRhYScsCisgICAgJ29zY3I7JzogJ1x1MjEzNCcsCisgICAgJ09zbGFzaCc6ICdceGQ4JywKKyAgICAnb3NsYXNoJzogJ1x4ZjgnLAorICAgICdPc2xhc2g7JzogJ1x4ZDgnLAorICAgICdvc2xhc2g7JzogJ1x4ZjgnLAorICAgICdvc29sOyc6ICdcdTIyOTgnLAorICAgICdPdGlsZGUnOiAnXHhkNScsCisgICAgJ290aWxkZSc6ICdceGY1JywKKyAgICAnT3RpbGRlOyc6ICdceGQ1JywKKyAgICAnb3RpbGRlOyc6ICdceGY1JywKKyAgICAnT3RpbWVzOyc6ICdcdTJhMzcnLAorICAgICdvdGltZXM7JzogJ1x1MjI5NycsCisgICAgJ290aW1lc2FzOyc6ICdcdTJhMzYnLAorICAgICdPdW1sJzogJ1x4ZDYnLAorICAgICdvdW1sJzogJ1x4ZjYnLAorICAgICdPdW1sOyc6ICdceGQ2JywKKyAgICAnb3VtbDsnOiAnXHhmNicsCisgICAgJ292YmFyOyc6ICdcdTIzM2QnLAorICAgICdPdmVyQmFyOyc6ICdcdTIwM2UnLAorICAgICdPdmVyQnJhY2U7JzogJ1x1MjNkZScsCisgICAgJ092ZXJCcmFja2V0Oyc6ICdcdTIzYjQnLAorICAgICdPdmVyUGFyZW50aGVzaXM7JzogJ1x1MjNkYycsCisgICAgJ3BhcjsnOiAnXHUyMjI1JywKKyAgICAncGFyYSc6ICdceGI2JywKKyAgICAncGFyYTsnOiAnXHhiNicsCisgICAgJ3BhcmFsbGVsOyc6ICdcdTIyMjUnLAorICAgICdwYXJzaW07JzogJ1x1MmFmMycsCisgICAgJ3BhcnNsOyc6ICdcdTJhZmQnLAorICAgICdwYXJ0Oyc6ICdcdTIyMDInLAorICAgICdQYXJ0aWFsRDsnOiAnXHUyMjAyJywKKyAgICAnUGN5Oyc6ICdcdTA0MWYnLAorICAgICdwY3k7JzogJ1x1MDQzZicsCisgICAgJ3BlcmNudDsnOiAnJScsCisgICAgJ3BlcmlvZDsnOiAnLicsCisgICAgJ3Blcm1pbDsnOiAnXHUyMDMwJywKKyAgICAncGVycDsnOiAnXHUyMmE1JywKKyAgICAncGVydGVuazsnOiAnXHUyMDMxJywKKyAgICAnUGZyOyc6ICdcVTAwMDFkNTEzJywKKyAgICAncGZyOyc6ICdcVTAwMDFkNTJkJywKKyAgICAnUGhpOyc6ICdcdTAzYTYnLAorICAgICdwaGk7JzogJ1x1MDNjNicsCisgICAgJ3BoaXY7JzogJ1x1MDNkNScsCisgICAgJ3BobW1hdDsnOiAnXHUyMTMzJywKKyAgICAncGhvbmU7JzogJ1x1MjYwZScsCisgICAgJ1BpOyc6ICdcdTAzYTAnLAorICAgICdwaTsnOiAnXHUwM2MwJywKKyAgICAncGl0Y2hmb3JrOyc6ICdcdTIyZDQnLAorICAgICdwaXY7JzogJ1x1MDNkNicsCisgICAgJ3BsYW5jazsnOiAnXHUyMTBmJywKKyAgICAncGxhbmNraDsnOiAnXHUyMTBlJywKKyAgICAncGxhbmt2Oyc6ICdcdTIxMGYnLAorICAgICdwbHVzOyc6ICcrJywKKyAgICAncGx1c2FjaXI7JzogJ1x1MmEyMycsCisgICAgJ3BsdXNiOyc6ICdcdTIyOWUnLAorICAgICdwbHVzY2lyOyc6ICdcdTJhMjInLAorICAgICdwbHVzZG87JzogJ1x1MjIxNCcsCisgICAgJ3BsdXNkdTsnOiAnXHUyYTI1JywKKyAgICAncGx1c2U7JzogJ1x1MmE3MicsCisgICAgJ1BsdXNNaW51czsnOiAnXHhiMScsCisgICAgJ3BsdXNtbic6ICdceGIxJywKKyAgICAncGx1c21uOyc6ICdceGIxJywKKyAgICAncGx1c3NpbTsnOiAnXHUyYTI2JywKKyAgICAncGx1c3R3bzsnOiAnXHUyYTI3JywKKyAgICAncG07JzogJ1x4YjEnLAorICAgICdQb2luY2FyZXBsYW5lOyc6ICdcdTIxMGMnLAorICAgICdwb2ludGludDsnOiAnXHUyYTE1JywKKyAgICAnUG9wZjsnOiAnXHUyMTE5JywKKyAgICAncG9wZjsnOiAnXFUwMDAxZDU2MScsCisgICAgJ3BvdW5kJzogJ1x4YTMnLAorICAgICdwb3VuZDsnOiAnXHhhMycsCisgICAgJ1ByOyc6ICdcdTJhYmInLAorICAgICdwcjsnOiAnXHUyMjdhJywKKyAgICAncHJhcDsnOiAnXHUyYWI3JywKKyAgICAncHJjdWU7JzogJ1x1MjI3YycsCisgICAgJ3ByRTsnOiAnXHUyYWIzJywKKyAgICAncHJlOyc6ICdcdTJhYWYnLAorICAgICdwcmVjOyc6ICdcdTIyN2EnLAorICAgICdwcmVjYXBwcm94Oyc6ICdcdTJhYjcnLAorICAgICdwcmVjY3VybHllcTsnOiAnXHUyMjdjJywKKyAgICAnUHJlY2VkZXM7JzogJ1x1MjI3YScsCisgICAgJ1ByZWNlZGVzRXF1YWw7JzogJ1x1MmFhZicsCisgICAgJ1ByZWNlZGVzU2xhbnRFcXVhbDsnOiAnXHUyMjdjJywKKyAgICAnUHJlY2VkZXNUaWxkZTsnOiAnXHUyMjdlJywKKyAgICAncHJlY2VxOyc6ICdcdTJhYWYnLAorICAgICdwcmVjbmFwcHJveDsnOiAnXHUyYWI5JywKKyAgICAncHJlY25lcXE7JzogJ1x1MmFiNScsCisgICAgJ3ByZWNuc2ltOyc6ICdcdTIyZTgnLAorICAgICdwcmVjc2ltOyc6ICdcdTIyN2UnLAorICAgICdQcmltZTsnOiAnXHUyMDMzJywKKyAgICAncHJpbWU7JzogJ1x1MjAzMicsCisgICAgJ3ByaW1lczsnOiAnXHUyMTE5JywKKyAgICAncHJuYXA7JzogJ1x1MmFiOScsCisgICAgJ3BybkU7JzogJ1x1MmFiNScsCisgICAgJ3BybnNpbTsnOiAnXHUyMmU4JywKKyAgICAncHJvZDsnOiAnXHUyMjBmJywKKyAgICAnUHJvZHVjdDsnOiAnXHUyMjBmJywKKyAgICAncHJvZmFsYXI7JzogJ1x1MjMyZScsCisgICAgJ3Byb2ZsaW5lOyc6ICdcdTIzMTInLAorICAgICdwcm9mc3VyZjsnOiAnXHUyMzEzJywKKyAgICAncHJvcDsnOiAnXHUyMjFkJywKKyAgICAnUHJvcG9ydGlvbjsnOiAnXHUyMjM3JywKKyAgICAnUHJvcG9ydGlvbmFsOyc6ICdcdTIyMWQnLAorICAgICdwcm9wdG87JzogJ1x1MjIxZCcsCisgICAgJ3Byc2ltOyc6ICdcdTIyN2UnLAorICAgICdwcnVyZWw7JzogJ1x1MjJiMCcsCisgICAgJ1BzY3I7JzogJ1xVMDAwMWQ0YWInLAorICAgICdwc2NyOyc6ICdcVTAwMDFkNGM1JywKKyAgICAnUHNpOyc6ICdcdTAzYTgnLAorICAgICdwc2k7JzogJ1x1MDNjOCcsCisgICAgJ3B1bmNzcDsnOiAnXHUyMDA4JywKKyAgICAnUWZyOyc6ICdcVTAwMDFkNTE0JywKKyAgICAncWZyOyc6ICdcVTAwMDFkNTJlJywKKyAgICAncWludDsnOiAnXHUyYTBjJywKKyAgICAnUW9wZjsnOiAnXHUyMTFhJywKKyAgICAncW9wZjsnOiAnXFUwMDAxZDU2MicsCisgICAgJ3FwcmltZTsnOiAnXHUyMDU3JywKKyAgICAnUXNjcjsnOiAnXFUwMDAxZDRhYycsCisgICAgJ3FzY3I7JzogJ1xVMDAwMWQ0YzYnLAorICAgICdxdWF0ZXJuaW9uczsnOiAnXHUyMTBkJywKKyAgICAncXVhdGludDsnOiAnXHUyYTE2JywKKyAgICAncXVlc3Q7JzogJz8nLAorICAgICdxdWVzdGVxOyc6ICdcdTIyNWYnLAorICAgICdRVU9UJzogJyInLAorICAgICdxdW90JzogJyInLAorICAgICdRVU9UOyc6ICciJywKKyAgICAncXVvdDsnOiAnIicsCisgICAgJ3JBYXJyOyc6ICdcdTIxZGInLAorICAgICdyYWNlOyc6ICdcdTIyM2RcdTAzMzEnLAorICAgICdSYWN1dGU7JzogJ1x1MDE1NCcsCisgICAgJ3JhY3V0ZTsnOiAnXHUwMTU1JywKKyAgICAncmFkaWM7JzogJ1x1MjIxYScsCisgICAgJ3JhZW1wdHl2Oyc6ICdcdTI5YjMnLAorICAgICdSYW5nOyc6ICdcdTI3ZWInLAorICAgICdyYW5nOyc6ICdcdTI3ZTknLAorICAgICdyYW5nZDsnOiAnXHUyOTkyJywKKyAgICAncmFuZ2U7JzogJ1x1MjlhNScsCisgICAgJ3JhbmdsZTsnOiAnXHUyN2U5JywKKyAgICAncmFxdW8nOiAnXHhiYicsCisgICAgJ3JhcXVvOyc6ICdceGJiJywKKyAgICAnUmFycjsnOiAnXHUyMWEwJywKKyAgICAnckFycjsnOiAnXHUyMWQyJywKKyAgICAncmFycjsnOiAnXHUyMTkyJywKKyAgICAncmFycmFwOyc6ICdcdTI5NzUnLAorICAgICdyYXJyYjsnOiAnXHUyMWU1JywKKyAgICAncmFycmJmczsnOiAnXHUyOTIwJywKKyAgICAncmFycmM7JzogJ1x1MjkzMycsCisgICAgJ3JhcnJmczsnOiAnXHUyOTFlJywKKyAgICAncmFycmhrOyc6ICdcdTIxYWEnLAorICAgICdyYXJybHA7JzogJ1x1MjFhYycsCisgICAgJ3JhcnJwbDsnOiAnXHUyOTQ1JywKKyAgICAncmFycnNpbTsnOiAnXHUyOTc0JywKKyAgICAnUmFycnRsOyc6ICdcdTI5MTYnLAorICAgICdyYXJydGw7JzogJ1x1MjFhMycsCisgICAgJ3JhcnJ3Oyc6ICdcdTIxOWQnLAorICAgICdyQXRhaWw7JzogJ1x1MjkxYycsCisgICAgJ3JhdGFpbDsnOiAnXHUyOTFhJywKKyAgICAncmF0aW87JzogJ1x1MjIzNicsCisgICAgJ3JhdGlvbmFsczsnOiAnXHUyMTFhJywKKyAgICAnUkJhcnI7JzogJ1x1MjkxMCcsCisgICAgJ3JCYXJyOyc6ICdcdTI5MGYnLAorICAgICdyYmFycjsnOiAnXHUyOTBkJywKKyAgICAncmJicms7JzogJ1x1Mjc3MycsCisgICAgJ3JicmFjZTsnOiAnfScsCisgICAgJ3JicmFjazsnOiAnXScsCisgICAgJ3JicmtlOyc6ICdcdTI5OGMnLAorICAgICdyYnJrc2xkOyc6ICdcdTI5OGUnLAorICAgICdyYnJrc2x1Oyc6ICdcdTI5OTAnLAorICAgICdSY2Fyb247JzogJ1x1MDE1OCcsCisgICAgJ3JjYXJvbjsnOiAnXHUwMTU5JywKKyAgICAnUmNlZGlsOyc6ICdcdTAxNTYnLAorICAgICdyY2VkaWw7JzogJ1x1MDE1NycsCisgICAgJ3JjZWlsOyc6ICdcdTIzMDknLAorICAgICdyY3ViOyc6ICd9JywKKyAgICAnUmN5Oyc6ICdcdTA0MjAnLAorICAgICdyY3k7JzogJ1x1MDQ0MCcsCisgICAgJ3JkY2E7JzogJ1x1MjkzNycsCisgICAgJ3JkbGRoYXI7JzogJ1x1Mjk2OScsCisgICAgJ3JkcXVvOyc6ICdcdTIwMWQnLAorICAgICdyZHF1b3I7JzogJ1x1MjAxZCcsCisgICAgJ3Jkc2g7JzogJ1x1MjFiMycsCisgICAgJ1JlOyc6ICdcdTIxMWMnLAorICAgICdyZWFsOyc6ICdcdTIxMWMnLAorICAgICdyZWFsaW5lOyc6ICdcdTIxMWInLAorICAgICdyZWFscGFydDsnOiAnXHUyMTFjJywKKyAgICAncmVhbHM7JzogJ1x1MjExZCcsCisgICAgJ3JlY3Q7JzogJ1x1MjVhZCcsCisgICAgJ1JFRyc6ICdceGFlJywKKyAgICAncmVnJzogJ1x4YWUnLAorICAgICdSRUc7JzogJ1x4YWUnLAorICAgICdyZWc7JzogJ1x4YWUnLAorICAgICdSZXZlcnNlRWxlbWVudDsnOiAnXHUyMjBiJywKKyAgICAnUmV2ZXJzZUVxdWlsaWJyaXVtOyc6ICdcdTIxY2InLAorICAgICdSZXZlcnNlVXBFcXVpbGlicml1bTsnOiAnXHUyOTZmJywKKyAgICAncmZpc2h0Oyc6ICdcdTI5N2QnLAorICAgICdyZmxvb3I7JzogJ1x1MjMwYicsCisgICAgJ1JmcjsnOiAnXHUyMTFjJywKKyAgICAncmZyOyc6ICdcVTAwMDFkNTJmJywKKyAgICAnckhhcjsnOiAnXHUyOTY0JywKKyAgICAncmhhcmQ7JzogJ1x1MjFjMScsCisgICAgJ3JoYXJ1Oyc6ICdcdTIxYzAnLAorICAgICdyaGFydWw7JzogJ1x1Mjk2YycsCisgICAgJ1JobzsnOiAnXHUwM2ExJywKKyAgICAncmhvOyc6ICdcdTAzYzEnLAorICAgICdyaG92Oyc6ICdcdTAzZjEnLAorICAgICdSaWdodEFuZ2xlQnJhY2tldDsnOiAnXHUyN2U5JywKKyAgICAnUmlnaHRBcnJvdzsnOiAnXHUyMTkyJywKKyAgICAnUmlnaHRhcnJvdzsnOiAnXHUyMWQyJywKKyAgICAncmlnaHRhcnJvdzsnOiAnXHUyMTkyJywKKyAgICAnUmlnaHRBcnJvd0JhcjsnOiAnXHUyMWU1JywKKyAgICAnUmlnaHRBcnJvd0xlZnRBcnJvdzsnOiAnXHUyMWM0JywKKyAgICAncmlnaHRhcnJvd3RhaWw7JzogJ1x1MjFhMycsCisgICAgJ1JpZ2h0Q2VpbGluZzsnOiAnXHUyMzA5JywKKyAgICAnUmlnaHREb3VibGVCcmFja2V0Oyc6ICdcdTI3ZTcnLAorICAgICdSaWdodERvd25UZWVWZWN0b3I7JzogJ1x1Mjk1ZCcsCisgICAgJ1JpZ2h0RG93blZlY3RvcjsnOiAnXHUyMWMyJywKKyAgICAnUmlnaHREb3duVmVjdG9yQmFyOyc6ICdcdTI5NTUnLAorICAgICdSaWdodEZsb29yOyc6ICdcdTIzMGInLAorICAgICdyaWdodGhhcnBvb25kb3duOyc6ICdcdTIxYzEnLAorICAgICdyaWdodGhhcnBvb251cDsnOiAnXHUyMWMwJywKKyAgICAncmlnaHRsZWZ0YXJyb3dzOyc6ICdcdTIxYzQnLAorICAgICdyaWdodGxlZnRoYXJwb29uczsnOiAnXHUyMWNjJywKKyAgICAncmlnaHRyaWdodGFycm93czsnOiAnXHUyMWM5JywKKyAgICAncmlnaHRzcXVpZ2Fycm93Oyc6ICdcdTIxOWQnLAorICAgICdSaWdodFRlZTsnOiAnXHUyMmEyJywKKyAgICAnUmlnaHRUZWVBcnJvdzsnOiAnXHUyMWE2JywKKyAgICAnUmlnaHRUZWVWZWN0b3I7JzogJ1x1Mjk1YicsCisgICAgJ3JpZ2h0dGhyZWV0aW1lczsnOiAnXHUyMmNjJywKKyAgICAnUmlnaHRUcmlhbmdsZTsnOiAnXHUyMmIzJywKKyAgICAnUmlnaHRUcmlhbmdsZUJhcjsnOiAnXHUyOWQwJywKKyAgICAnUmlnaHRUcmlhbmdsZUVxdWFsOyc6ICdcdTIyYjUnLAorICAgICdSaWdodFVwRG93blZlY3RvcjsnOiAnXHUyOTRmJywKKyAgICAnUmlnaHRVcFRlZVZlY3RvcjsnOiAnXHUyOTVjJywKKyAgICAnUmlnaHRVcFZlY3RvcjsnOiAnXHUyMWJlJywKKyAgICAnUmlnaHRVcFZlY3RvckJhcjsnOiAnXHUyOTU0JywKKyAgICAnUmlnaHRWZWN0b3I7JzogJ1x1MjFjMCcsCisgICAgJ1JpZ2h0VmVjdG9yQmFyOyc6ICdcdTI5NTMnLAorICAgICdyaW5nOyc6ICdcdTAyZGEnLAorICAgICdyaXNpbmdkb3RzZXE7JzogJ1x1MjI1MycsCisgICAgJ3JsYXJyOyc6ICdcdTIxYzQnLAorICAgICdybGhhcjsnOiAnXHUyMWNjJywKKyAgICAncmxtOyc6ICdcdTIwMGYnLAorICAgICdybW91c3Q7JzogJ1x1MjNiMScsCisgICAgJ3Jtb3VzdGFjaGU7JzogJ1x1MjNiMScsCisgICAgJ3JubWlkOyc6ICdcdTJhZWUnLAorICAgICdyb2FuZzsnOiAnXHUyN2VkJywKKyAgICAncm9hcnI7JzogJ1x1MjFmZScsCisgICAgJ3JvYnJrOyc6ICdcdTI3ZTcnLAorICAgICdyb3BhcjsnOiAnXHUyOTg2JywKKyAgICAnUm9wZjsnOiAnXHUyMTFkJywKKyAgICAncm9wZjsnOiAnXFUwMDAxZDU2MycsCisgICAgJ3JvcGx1czsnOiAnXHUyYTJlJywKKyAgICAncm90aW1lczsnOiAnXHUyYTM1JywKKyAgICAnUm91bmRJbXBsaWVzOyc6ICdcdTI5NzAnLAorICAgICdycGFyOyc6ICcpJywKKyAgICAncnBhcmd0Oyc6ICdcdTI5OTQnLAorICAgICdycHBvbGludDsnOiAnXHUyYTEyJywKKyAgICAncnJhcnI7JzogJ1x1MjFjOScsCisgICAgJ1JyaWdodGFycm93Oyc6ICdcdTIxZGInLAorICAgICdyc2FxdW87JzogJ1x1MjAzYScsCisgICAgJ1JzY3I7JzogJ1x1MjExYicsCisgICAgJ3JzY3I7JzogJ1xVMDAwMWQ0YzcnLAorICAgICdSc2g7JzogJ1x1MjFiMScsCisgICAgJ3JzaDsnOiAnXHUyMWIxJywKKyAgICAncnNxYjsnOiAnXScsCisgICAgJ3JzcXVvOyc6ICdcdTIwMTknLAorICAgICdyc3F1b3I7JzogJ1x1MjAxOScsCisgICAgJ3J0aHJlZTsnOiAnXHUyMmNjJywKKyAgICAncnRpbWVzOyc6ICdcdTIyY2EnLAorICAgICdydHJpOyc6ICdcdTI1YjknLAorICAgICdydHJpZTsnOiAnXHUyMmI1JywKKyAgICAncnRyaWY7JzogJ1x1MjViOCcsCisgICAgJ3J0cmlsdHJpOyc6ICdcdTI5Y2UnLAorICAgICdSdWxlRGVsYXllZDsnOiAnXHUyOWY0JywKKyAgICAncnVsdWhhcjsnOiAnXHUyOTY4JywKKyAgICAncng7JzogJ1x1MjExZScsCisgICAgJ1NhY3V0ZTsnOiAnXHUwMTVhJywKKyAgICAnc2FjdXRlOyc6ICdcdTAxNWInLAorICAgICdzYnF1bzsnOiAnXHUyMDFhJywKKyAgICAnU2M7JzogJ1x1MmFiYycsCisgICAgJ3NjOyc6ICdcdTIyN2InLAorICAgICdzY2FwOyc6ICdcdTJhYjgnLAorICAgICdTY2Fyb247JzogJ1x1MDE2MCcsCisgICAgJ3NjYXJvbjsnOiAnXHUwMTYxJywKKyAgICAnc2NjdWU7JzogJ1x1MjI3ZCcsCisgICAgJ3NjRTsnOiAnXHUyYWI0JywKKyAgICAnc2NlOyc6ICdcdTJhYjAnLAorICAgICdTY2VkaWw7JzogJ1x1MDE1ZScsCisgICAgJ3NjZWRpbDsnOiAnXHUwMTVmJywKKyAgICAnU2NpcmM7JzogJ1x1MDE1YycsCisgICAgJ3NjaXJjOyc6ICdcdTAxNWQnLAorICAgICdzY25hcDsnOiAnXHUyYWJhJywKKyAgICAnc2NuRTsnOiAnXHUyYWI2JywKKyAgICAnc2Nuc2ltOyc6ICdcdTIyZTknLAorICAgICdzY3BvbGludDsnOiAnXHUyYTEzJywKKyAgICAnc2NzaW07JzogJ1x1MjI3ZicsCisgICAgJ1NjeTsnOiAnXHUwNDIxJywKKyAgICAnc2N5Oyc6ICdcdTA0NDEnLAorICAgICdzZG90Oyc6ICdcdTIyYzUnLAorICAgICdzZG90YjsnOiAnXHUyMmExJywKKyAgICAnc2RvdGU7JzogJ1x1MmE2NicsCisgICAgJ3NlYXJoazsnOiAnXHUyOTI1JywKKyAgICAnc2VBcnI7JzogJ1x1MjFkOCcsCisgICAgJ3NlYXJyOyc6ICdcdTIxOTgnLAorICAgICdzZWFycm93Oyc6ICdcdTIxOTgnLAorICAgICdzZWN0JzogJ1x4YTcnLAorICAgICdzZWN0Oyc6ICdceGE3JywKKyAgICAnc2VtaTsnOiAnOycsCisgICAgJ3Nlc3dhcjsnOiAnXHUyOTI5JywKKyAgICAnc2V0bWludXM7JzogJ1x1MjIxNicsCisgICAgJ3NldG1uOyc6ICdcdTIyMTYnLAorICAgICdzZXh0Oyc6ICdcdTI3MzYnLAorICAgICdTZnI7JzogJ1xVMDAwMWQ1MTYnLAorICAgICdzZnI7JzogJ1xVMDAwMWQ1MzAnLAorICAgICdzZnJvd247JzogJ1x1MjMyMicsCisgICAgJ3NoYXJwOyc6ICdcdTI2NmYnLAorICAgICdTSENIY3k7JzogJ1x1MDQyOScsCisgICAgJ3NoY2hjeTsnOiAnXHUwNDQ5JywKKyAgICAnU0hjeTsnOiAnXHUwNDI4JywKKyAgICAnc2hjeTsnOiAnXHUwNDQ4JywKKyAgICAnU2hvcnREb3duQXJyb3c7JzogJ1x1MjE5MycsCisgICAgJ1Nob3J0TGVmdEFycm93Oyc6ICdcdTIxOTAnLAorICAgICdzaG9ydG1pZDsnOiAnXHUyMjIzJywKKyAgICAnc2hvcnRwYXJhbGxlbDsnOiAnXHUyMjI1JywKKyAgICAnU2hvcnRSaWdodEFycm93Oyc6ICdcdTIxOTInLAorICAgICdTaG9ydFVwQXJyb3c7JzogJ1x1MjE5MScsCisgICAgJ3NoeSc6ICdceGFkJywKKyAgICAnc2h5Oyc6ICdceGFkJywKKyAgICAnU2lnbWE7JzogJ1x1MDNhMycsCisgICAgJ3NpZ21hOyc6ICdcdTAzYzMnLAorICAgICdzaWdtYWY7JzogJ1x1MDNjMicsCisgICAgJ3NpZ21hdjsnOiAnXHUwM2MyJywKKyAgICAnc2ltOyc6ICdcdTIyM2MnLAorICAgICdzaW1kb3Q7JzogJ1x1MmE2YScsCisgICAgJ3NpbWU7JzogJ1x1MjI0MycsCisgICAgJ3NpbWVxOyc6ICdcdTIyNDMnLAorICAgICdzaW1nOyc6ICdcdTJhOWUnLAorICAgICdzaW1nRTsnOiAnXHUyYWEwJywKKyAgICAnc2ltbDsnOiAnXHUyYTlkJywKKyAgICAnc2ltbEU7JzogJ1x1MmE5ZicsCisgICAgJ3NpbW5lOyc6ICdcdTIyNDYnLAorICAgICdzaW1wbHVzOyc6ICdcdTJhMjQnLAorICAgICdzaW1yYXJyOyc6ICdcdTI5NzInLAorICAgICdzbGFycjsnOiAnXHUyMTkwJywKKyAgICAnU21hbGxDaXJjbGU7JzogJ1x1MjIxOCcsCisgICAgJ3NtYWxsc2V0bWludXM7JzogJ1x1MjIxNicsCisgICAgJ3NtYXNocDsnOiAnXHUyYTMzJywKKyAgICAnc21lcGFyc2w7JzogJ1x1MjllNCcsCisgICAgJ3NtaWQ7JzogJ1x1MjIyMycsCisgICAgJ3NtaWxlOyc6ICdcdTIzMjMnLAorICAgICdzbXQ7JzogJ1x1MmFhYScsCisgICAgJ3NtdGU7JzogJ1x1MmFhYycsCisgICAgJ3NtdGVzOyc6ICdcdTJhYWNcdWZlMDAnLAorICAgICdTT0ZUY3k7JzogJ1x1MDQyYycsCisgICAgJ3NvZnRjeTsnOiAnXHUwNDRjJywKKyAgICAnc29sOyc6ICcvJywKKyAgICAnc29sYjsnOiAnXHUyOWM0JywKKyAgICAnc29sYmFyOyc6ICdcdTIzM2YnLAorICAgICdTb3BmOyc6ICdcVTAwMDFkNTRhJywKKyAgICAnc29wZjsnOiAnXFUwMDAxZDU2NCcsCisgICAgJ3NwYWRlczsnOiAnXHUyNjYwJywKKyAgICAnc3BhZGVzdWl0Oyc6ICdcdTI2NjAnLAorICAgICdzcGFyOyc6ICdcdTIyMjUnLAorICAgICdzcWNhcDsnOiAnXHUyMjkzJywKKyAgICAnc3FjYXBzOyc6ICdcdTIyOTNcdWZlMDAnLAorICAgICdzcWN1cDsnOiAnXHUyMjk0JywKKyAgICAnc3FjdXBzOyc6ICdcdTIyOTRcdWZlMDAnLAorICAgICdTcXJ0Oyc6ICdcdTIyMWEnLAorICAgICdzcXN1YjsnOiAnXHUyMjhmJywKKyAgICAnc3FzdWJlOyc6ICdcdTIyOTEnLAorICAgICdzcXN1YnNldDsnOiAnXHUyMjhmJywKKyAgICAnc3FzdWJzZXRlcTsnOiAnXHUyMjkxJywKKyAgICAnc3FzdXA7JzogJ1x1MjI5MCcsCisgICAgJ3Nxc3VwZTsnOiAnXHUyMjkyJywKKyAgICAnc3FzdXBzZXQ7JzogJ1x1MjI5MCcsCisgICAgJ3Nxc3Vwc2V0ZXE7JzogJ1x1MjI5MicsCisgICAgJ3NxdTsnOiAnXHUyNWExJywKKyAgICAnU3F1YXJlOyc6ICdcdTI1YTEnLAorICAgICdzcXVhcmU7JzogJ1x1MjVhMScsCisgICAgJ1NxdWFyZUludGVyc2VjdGlvbjsnOiAnXHUyMjkzJywKKyAgICAnU3F1YXJlU3Vic2V0Oyc6ICdcdTIyOGYnLAorICAgICdTcXVhcmVTdWJzZXRFcXVhbDsnOiAnXHUyMjkxJywKKyAgICAnU3F1YXJlU3VwZXJzZXQ7JzogJ1x1MjI5MCcsCisgICAgJ1NxdWFyZVN1cGVyc2V0RXF1YWw7JzogJ1x1MjI5MicsCisgICAgJ1NxdWFyZVVuaW9uOyc6ICdcdTIyOTQnLAorICAgICdzcXVhcmY7JzogJ1x1MjVhYScsCisgICAgJ3NxdWY7JzogJ1x1MjVhYScsCisgICAgJ3NyYXJyOyc6ICdcdTIxOTInLAorICAgICdTc2NyOyc6ICdcVTAwMDFkNGFlJywKKyAgICAnc3NjcjsnOiAnXFUwMDAxZDRjOCcsCisgICAgJ3NzZXRtbjsnOiAnXHUyMjE2JywKKyAgICAnc3NtaWxlOyc6ICdcdTIzMjMnLAorICAgICdzc3RhcmY7JzogJ1x1MjJjNicsCisgICAgJ1N0YXI7JzogJ1x1MjJjNicsCisgICAgJ3N0YXI7JzogJ1x1MjYwNicsCisgICAgJ3N0YXJmOyc6ICdcdTI2MDUnLAorICAgICdzdHJhaWdodGVwc2lsb247JzogJ1x1MDNmNScsCisgICAgJ3N0cmFpZ2h0cGhpOyc6ICdcdTAzZDUnLAorICAgICdzdHJuczsnOiAnXHhhZicsCisgICAgJ1N1YjsnOiAnXHUyMmQwJywKKyAgICAnc3ViOyc6ICdcdTIyODInLAorICAgICdzdWJkb3Q7JzogJ1x1MmFiZCcsCisgICAgJ3N1YkU7JzogJ1x1MmFjNScsCisgICAgJ3N1YmU7JzogJ1x1MjI4NicsCisgICAgJ3N1YmVkb3Q7JzogJ1x1MmFjMycsCisgICAgJ3N1Ym11bHQ7JzogJ1x1MmFjMScsCisgICAgJ3N1Ym5FOyc6ICdcdTJhY2InLAorICAgICdzdWJuZTsnOiAnXHUyMjhhJywKKyAgICAnc3VicGx1czsnOiAnXHUyYWJmJywKKyAgICAnc3VicmFycjsnOiAnXHUyOTc5JywKKyAgICAnU3Vic2V0Oyc6ICdcdTIyZDAnLAorICAgICdzdWJzZXQ7JzogJ1x1MjI4MicsCisgICAgJ3N1YnNldGVxOyc6ICdcdTIyODYnLAorICAgICdzdWJzZXRlcXE7JzogJ1x1MmFjNScsCisgICAgJ1N1YnNldEVxdWFsOyc6ICdcdTIyODYnLAorICAgICdzdWJzZXRuZXE7JzogJ1x1MjI4YScsCisgICAgJ3N1YnNldG5lcXE7JzogJ1x1MmFjYicsCisgICAgJ3N1YnNpbTsnOiAnXHUyYWM3JywKKyAgICAnc3Vic3ViOyc6ICdcdTJhZDUnLAorICAgICdzdWJzdXA7JzogJ1x1MmFkMycsCisgICAgJ3N1Y2M7JzogJ1x1MjI3YicsCisgICAgJ3N1Y2NhcHByb3g7JzogJ1x1MmFiOCcsCisgICAgJ3N1Y2NjdXJseWVxOyc6ICdcdTIyN2QnLAorICAgICdTdWNjZWVkczsnOiAnXHUyMjdiJywKKyAgICAnU3VjY2VlZHNFcXVhbDsnOiAnXHUyYWIwJywKKyAgICAnU3VjY2VlZHNTbGFudEVxdWFsOyc6ICdcdTIyN2QnLAorICAgICdTdWNjZWVkc1RpbGRlOyc6ICdcdTIyN2YnLAorICAgICdzdWNjZXE7JzogJ1x1MmFiMCcsCisgICAgJ3N1Y2NuYXBwcm94Oyc6ICdcdTJhYmEnLAorICAgICdzdWNjbmVxcTsnOiAnXHUyYWI2JywKKyAgICAnc3VjY25zaW07JzogJ1x1MjJlOScsCisgICAgJ3N1Y2NzaW07JzogJ1x1MjI3ZicsCisgICAgJ1N1Y2hUaGF0Oyc6ICdcdTIyMGInLAorICAgICdTdW07JzogJ1x1MjIxMScsCisgICAgJ3N1bTsnOiAnXHUyMjExJywKKyAgICAnc3VuZzsnOiAnXHUyNjZhJywKKyAgICAnc3VwMSc6ICdceGI5JywKKyAgICAnc3VwMTsnOiAnXHhiOScsCisgICAgJ3N1cDInOiAnXHhiMicsCisgICAgJ3N1cDI7JzogJ1x4YjInLAorICAgICdzdXAzJzogJ1x4YjMnLAorICAgICdzdXAzOyc6ICdceGIzJywKKyAgICAnU3VwOyc6ICdcdTIyZDEnLAorICAgICdzdXA7JzogJ1x1MjI4MycsCisgICAgJ3N1cGRvdDsnOiAnXHUyYWJlJywKKyAgICAnc3VwZHN1YjsnOiAnXHUyYWQ4JywKKyAgICAnc3VwRTsnOiAnXHUyYWM2JywKKyAgICAnc3VwZTsnOiAnXHUyMjg3JywKKyAgICAnc3VwZWRvdDsnOiAnXHUyYWM0JywKKyAgICAnU3VwZXJzZXQ7JzogJ1x1MjI4MycsCisgICAgJ1N1cGVyc2V0RXF1YWw7JzogJ1x1MjI4NycsCisgICAgJ3N1cGhzb2w7JzogJ1x1MjdjOScsCisgICAgJ3N1cGhzdWI7JzogJ1x1MmFkNycsCisgICAgJ3N1cGxhcnI7JzogJ1x1Mjk3YicsCisgICAgJ3N1cG11bHQ7JzogJ1x1MmFjMicsCisgICAgJ3N1cG5FOyc6ICdcdTJhY2MnLAorICAgICdzdXBuZTsnOiAnXHUyMjhiJywKKyAgICAnc3VwcGx1czsnOiAnXHUyYWMwJywKKyAgICAnU3Vwc2V0Oyc6ICdcdTIyZDEnLAorICAgICdzdXBzZXQ7JzogJ1x1MjI4MycsCisgICAgJ3N1cHNldGVxOyc6ICdcdTIyODcnLAorICAgICdzdXBzZXRlcXE7JzogJ1x1MmFjNicsCisgICAgJ3N1cHNldG5lcTsnOiAnXHUyMjhiJywKKyAgICAnc3Vwc2V0bmVxcTsnOiAnXHUyYWNjJywKKyAgICAnc3Vwc2ltOyc6ICdcdTJhYzgnLAorICAgICdzdXBzdWI7JzogJ1x1MmFkNCcsCisgICAgJ3N1cHN1cDsnOiAnXHUyYWQ2JywKKyAgICAnc3dhcmhrOyc6ICdcdTI5MjYnLAorICAgICdzd0FycjsnOiAnXHUyMWQ5JywKKyAgICAnc3dhcnI7JzogJ1x1MjE5OScsCisgICAgJ3N3YXJyb3c7JzogJ1x1MjE5OScsCisgICAgJ3N3bndhcjsnOiAnXHUyOTJhJywKKyAgICAnc3psaWcnOiAnXHhkZicsCisgICAgJ3N6bGlnOyc6ICdceGRmJywKKyAgICAnVGFiOyc6ICdcdCcsCisgICAgJ3RhcmdldDsnOiAnXHUyMzE2JywKKyAgICAnVGF1Oyc6ICdcdTAzYTQnLAorICAgICd0YXU7JzogJ1x1MDNjNCcsCisgICAgJ3Ricms7JzogJ1x1MjNiNCcsCisgICAgJ1RjYXJvbjsnOiAnXHUwMTY0JywKKyAgICAndGNhcm9uOyc6ICdcdTAxNjUnLAorICAgICdUY2VkaWw7JzogJ1x1MDE2MicsCisgICAgJ3RjZWRpbDsnOiAnXHUwMTYzJywKKyAgICAnVGN5Oyc6ICdcdTA0MjInLAorICAgICd0Y3k7JzogJ1x1MDQ0MicsCisgICAgJ3Rkb3Q7JzogJ1x1MjBkYicsCisgICAgJ3RlbHJlYzsnOiAnXHUyMzE1JywKKyAgICAnVGZyOyc6ICdcVTAwMDFkNTE3JywKKyAgICAndGZyOyc6ICdcVTAwMDFkNTMxJywKKyAgICAndGhlcmU0Oyc6ICdcdTIyMzQnLAorICAgICdUaGVyZWZvcmU7JzogJ1x1MjIzNCcsCisgICAgJ3RoZXJlZm9yZTsnOiAnXHUyMjM0JywKKyAgICAnVGhldGE7JzogJ1x1MDM5OCcsCisgICAgJ3RoZXRhOyc6ICdcdTAzYjgnLAorICAgICd0aGV0YXN5bTsnOiAnXHUwM2QxJywKKyAgICAndGhldGF2Oyc6ICdcdTAzZDEnLAorICAgICd0aGlja2FwcHJveDsnOiAnXHUyMjQ4JywKKyAgICAndGhpY2tzaW07JzogJ1x1MjIzYycsCisgICAgJ1RoaWNrU3BhY2U7JzogJ1x1MjA1Zlx1MjAwYScsCisgICAgJ3RoaW5zcDsnOiAnXHUyMDA5JywKKyAgICAnVGhpblNwYWNlOyc6ICdcdTIwMDknLAorICAgICd0aGthcDsnOiAnXHUyMjQ4JywKKyAgICAndGhrc2ltOyc6ICdcdTIyM2MnLAorICAgICdUSE9STic6ICdceGRlJywKKyAgICAndGhvcm4nOiAnXHhmZScsCisgICAgJ1RIT1JOOyc6ICdceGRlJywKKyAgICAndGhvcm47JzogJ1x4ZmUnLAorICAgICdUaWxkZTsnOiAnXHUyMjNjJywKKyAgICAndGlsZGU7JzogJ1x1MDJkYycsCisgICAgJ1RpbGRlRXF1YWw7JzogJ1x1MjI0MycsCisgICAgJ1RpbGRlRnVsbEVxdWFsOyc6ICdcdTIyNDUnLAorICAgICdUaWxkZVRpbGRlOyc6ICdcdTIyNDgnLAorICAgICd0aW1lcyc6ICdceGQ3JywKKyAgICAndGltZXM7JzogJ1x4ZDcnLAorICAgICd0aW1lc2I7JzogJ1x1MjJhMCcsCisgICAgJ3RpbWVzYmFyOyc6ICdcdTJhMzEnLAorICAgICd0aW1lc2Q7JzogJ1x1MmEzMCcsCisgICAgJ3RpbnQ7JzogJ1x1MjIyZCcsCisgICAgJ3RvZWE7JzogJ1x1MjkyOCcsCisgICAgJ3RvcDsnOiAnXHUyMmE0JywKKyAgICAndG9wYm90Oyc6ICdcdTIzMzYnLAorICAgICd0b3BjaXI7JzogJ1x1MmFmMScsCisgICAgJ1RvcGY7JzogJ1xVMDAwMWQ1NGInLAorICAgICd0b3BmOyc6ICdcVTAwMDFkNTY1JywKKyAgICAndG9wZm9yazsnOiAnXHUyYWRhJywKKyAgICAndG9zYTsnOiAnXHUyOTI5JywKKyAgICAndHByaW1lOyc6ICdcdTIwMzQnLAorICAgICdUUkFERTsnOiAnXHUyMTIyJywKKyAgICAndHJhZGU7JzogJ1x1MjEyMicsCisgICAgJ3RyaWFuZ2xlOyc6ICdcdTI1YjUnLAorICAgICd0cmlhbmdsZWRvd247JzogJ1x1MjViZicsCisgICAgJ3RyaWFuZ2xlbGVmdDsnOiAnXHUyNWMzJywKKyAgICAndHJpYW5nbGVsZWZ0ZXE7JzogJ1x1MjJiNCcsCisgICAgJ3RyaWFuZ2xlcTsnOiAnXHUyMjVjJywKKyAgICAndHJpYW5nbGVyaWdodDsnOiAnXHUyNWI5JywKKyAgICAndHJpYW5nbGVyaWdodGVxOyc6ICdcdTIyYjUnLAorICAgICd0cmlkb3Q7JzogJ1x1MjVlYycsCisgICAgJ3RyaWU7JzogJ1x1MjI1YycsCisgICAgJ3RyaW1pbnVzOyc6ICdcdTJhM2EnLAorICAgICdUcmlwbGVEb3Q7JzogJ1x1MjBkYicsCisgICAgJ3RyaXBsdXM7JzogJ1x1MmEzOScsCisgICAgJ3RyaXNiOyc6ICdcdTI5Y2QnLAorICAgICd0cml0aW1lOyc6ICdcdTJhM2InLAorICAgICd0cnBleml1bTsnOiAnXHUyM2UyJywKKyAgICAnVHNjcjsnOiAnXFUwMDAxZDRhZicsCisgICAgJ3RzY3I7JzogJ1xVMDAwMWQ0YzknLAorICAgICdUU2N5Oyc6ICdcdTA0MjYnLAorICAgICd0c2N5Oyc6ICdcdTA0NDYnLAorICAgICdUU0hjeTsnOiAnXHUwNDBiJywKKyAgICAndHNoY3k7JzogJ1x1MDQ1YicsCisgICAgJ1RzdHJvazsnOiAnXHUwMTY2JywKKyAgICAndHN0cm9rOyc6ICdcdTAxNjcnLAorICAgICd0d2l4dDsnOiAnXHUyMjZjJywKKyAgICAndHdvaGVhZGxlZnRhcnJvdzsnOiAnXHUyMTllJywKKyAgICAndHdvaGVhZHJpZ2h0YXJyb3c7JzogJ1x1MjFhMCcsCisgICAgJ1VhY3V0ZSc6ICdceGRhJywKKyAgICAndWFjdXRlJzogJ1x4ZmEnLAorICAgICdVYWN1dGU7JzogJ1x4ZGEnLAorICAgICd1YWN1dGU7JzogJ1x4ZmEnLAorICAgICdVYXJyOyc6ICdcdTIxOWYnLAorICAgICd1QXJyOyc6ICdcdTIxZDEnLAorICAgICd1YXJyOyc6ICdcdTIxOTEnLAorICAgICdVYXJyb2NpcjsnOiAnXHUyOTQ5JywKKyAgICAnVWJyY3k7JzogJ1x1MDQwZScsCisgICAgJ3VicmN5Oyc6ICdcdTA0NWUnLAorICAgICdVYnJldmU7JzogJ1x1MDE2YycsCisgICAgJ3VicmV2ZTsnOiAnXHUwMTZkJywKKyAgICAnVWNpcmMnOiAnXHhkYicsCisgICAgJ3VjaXJjJzogJ1x4ZmInLAorICAgICdVY2lyYzsnOiAnXHhkYicsCisgICAgJ3VjaXJjOyc6ICdceGZiJywKKyAgICAnVWN5Oyc6ICdcdTA0MjMnLAorICAgICd1Y3k7JzogJ1x1MDQ0MycsCisgICAgJ3VkYXJyOyc6ICdcdTIxYzUnLAorICAgICdVZGJsYWM7JzogJ1x1MDE3MCcsCisgICAgJ3VkYmxhYzsnOiAnXHUwMTcxJywKKyAgICAndWRoYXI7JzogJ1x1Mjk2ZScsCisgICAgJ3VmaXNodDsnOiAnXHUyOTdlJywKKyAgICAnVWZyOyc6ICdcVTAwMDFkNTE4JywKKyAgICAndWZyOyc6ICdcVTAwMDFkNTMyJywKKyAgICAnVWdyYXZlJzogJ1x4ZDknLAorICAgICd1Z3JhdmUnOiAnXHhmOScsCisgICAgJ1VncmF2ZTsnOiAnXHhkOScsCisgICAgJ3VncmF2ZTsnOiAnXHhmOScsCisgICAgJ3VIYXI7JzogJ1x1Mjk2MycsCisgICAgJ3VoYXJsOyc6ICdcdTIxYmYnLAorICAgICd1aGFycjsnOiAnXHUyMWJlJywKKyAgICAndWhibGs7JzogJ1x1MjU4MCcsCisgICAgJ3VsY29ybjsnOiAnXHUyMzFjJywKKyAgICAndWxjb3JuZXI7JzogJ1x1MjMxYycsCisgICAgJ3VsY3JvcDsnOiAnXHUyMzBmJywKKyAgICAndWx0cmk7JzogJ1x1MjVmOCcsCisgICAgJ1VtYWNyOyc6ICdcdTAxNmEnLAorICAgICd1bWFjcjsnOiAnXHUwMTZiJywKKyAgICAndW1sJzogJ1x4YTgnLAorICAgICd1bWw7JzogJ1x4YTgnLAorICAgICdVbmRlckJhcjsnOiAnXycsCisgICAgJ1VuZGVyQnJhY2U7JzogJ1x1MjNkZicsCisgICAgJ1VuZGVyQnJhY2tldDsnOiAnXHUyM2I1JywKKyAgICAnVW5kZXJQYXJlbnRoZXNpczsnOiAnXHUyM2RkJywKKyAgICAnVW5pb247JzogJ1x1MjJjMycsCisgICAgJ1VuaW9uUGx1czsnOiAnXHUyMjhlJywKKyAgICAnVW9nb247JzogJ1x1MDE3MicsCisgICAgJ3VvZ29uOyc6ICdcdTAxNzMnLAorICAgICdVb3BmOyc6ICdcVTAwMDFkNTRjJywKKyAgICAndW9wZjsnOiAnXFUwMDAxZDU2NicsCisgICAgJ1VwQXJyb3c7JzogJ1x1MjE5MScsCisgICAgJ1VwYXJyb3c7JzogJ1x1MjFkMScsCisgICAgJ3VwYXJyb3c7JzogJ1x1MjE5MScsCisgICAgJ1VwQXJyb3dCYXI7JzogJ1x1MjkxMicsCisgICAgJ1VwQXJyb3dEb3duQXJyb3c7JzogJ1x1MjFjNScsCisgICAgJ1VwRG93bkFycm93Oyc6ICdcdTIxOTUnLAorICAgICdVcGRvd25hcnJvdzsnOiAnXHUyMWQ1JywKKyAgICAndXBkb3duYXJyb3c7JzogJ1x1MjE5NScsCisgICAgJ1VwRXF1aWxpYnJpdW07JzogJ1x1Mjk2ZScsCisgICAgJ3VwaGFycG9vbmxlZnQ7JzogJ1x1MjFiZicsCisgICAgJ3VwaGFycG9vbnJpZ2h0Oyc6ICdcdTIxYmUnLAorICAgICd1cGx1czsnOiAnXHUyMjhlJywKKyAgICAnVXBwZXJMZWZ0QXJyb3c7JzogJ1x1MjE5NicsCisgICAgJ1VwcGVyUmlnaHRBcnJvdzsnOiAnXHUyMTk3JywKKyAgICAnVXBzaTsnOiAnXHUwM2QyJywKKyAgICAndXBzaTsnOiAnXHUwM2M1JywKKyAgICAndXBzaWg7JzogJ1x1MDNkMicsCisgICAgJ1Vwc2lsb247JzogJ1x1MDNhNScsCisgICAgJ3Vwc2lsb247JzogJ1x1MDNjNScsCisgICAgJ1VwVGVlOyc6ICdcdTIyYTUnLAorICAgICdVcFRlZUFycm93Oyc6ICdcdTIxYTUnLAorICAgICd1cHVwYXJyb3dzOyc6ICdcdTIxYzgnLAorICAgICd1cmNvcm47JzogJ1x1MjMxZCcsCisgICAgJ3VyY29ybmVyOyc6ICdcdTIzMWQnLAorICAgICd1cmNyb3A7JzogJ1x1MjMwZScsCisgICAgJ1VyaW5nOyc6ICdcdTAxNmUnLAorICAgICd1cmluZzsnOiAnXHUwMTZmJywKKyAgICAndXJ0cmk7JzogJ1x1MjVmOScsCisgICAgJ1VzY3I7JzogJ1xVMDAwMWQ0YjAnLAorICAgICd1c2NyOyc6ICdcVTAwMDFkNGNhJywKKyAgICAndXRkb3Q7JzogJ1x1MjJmMCcsCisgICAgJ1V0aWxkZTsnOiAnXHUwMTY4JywKKyAgICAndXRpbGRlOyc6ICdcdTAxNjknLAorICAgICd1dHJpOyc6ICdcdTI1YjUnLAorICAgICd1dHJpZjsnOiAnXHUyNWI0JywKKyAgICAndXVhcnI7JzogJ1x1MjFjOCcsCisgICAgJ1V1bWwnOiAnXHhkYycsCisgICAgJ3V1bWwnOiAnXHhmYycsCisgICAgJ1V1bWw7JzogJ1x4ZGMnLAorICAgICd1dW1sOyc6ICdceGZjJywKKyAgICAndXdhbmdsZTsnOiAnXHUyOWE3JywKKyAgICAndmFuZ3J0Oyc6ICdcdTI5OWMnLAorICAgICd2YXJlcHNpbG9uOyc6ICdcdTAzZjUnLAorICAgICd2YXJrYXBwYTsnOiAnXHUwM2YwJywKKyAgICAndmFybm90aGluZzsnOiAnXHUyMjA1JywKKyAgICAndmFycGhpOyc6ICdcdTAzZDUnLAorICAgICd2YXJwaTsnOiAnXHUwM2Q2JywKKyAgICAndmFycHJvcHRvOyc6ICdcdTIyMWQnLAorICAgICd2QXJyOyc6ICdcdTIxZDUnLAorICAgICd2YXJyOyc6ICdcdTIxOTUnLAorICAgICd2YXJyaG87JzogJ1x1MDNmMScsCisgICAgJ3ZhcnNpZ21hOyc6ICdcdTAzYzInLAorICAgICd2YXJzdWJzZXRuZXE7JzogJ1x1MjI4YVx1ZmUwMCcsCisgICAgJ3ZhcnN1YnNldG5lcXE7JzogJ1x1MmFjYlx1ZmUwMCcsCisgICAgJ3ZhcnN1cHNldG5lcTsnOiAnXHUyMjhiXHVmZTAwJywKKyAgICAndmFyc3Vwc2V0bmVxcTsnOiAnXHUyYWNjXHVmZTAwJywKKyAgICAndmFydGhldGE7JzogJ1x1MDNkMScsCisgICAgJ3ZhcnRyaWFuZ2xlbGVmdDsnOiAnXHUyMmIyJywKKyAgICAndmFydHJpYW5nbGVyaWdodDsnOiAnXHUyMmIzJywKKyAgICAnVmJhcjsnOiAnXHUyYWViJywKKyAgICAndkJhcjsnOiAnXHUyYWU4JywKKyAgICAndkJhcnY7JzogJ1x1MmFlOScsCisgICAgJ1ZjeTsnOiAnXHUwNDEyJywKKyAgICAndmN5Oyc6ICdcdTA0MzInLAorICAgICdWRGFzaDsnOiAnXHUyMmFiJywKKyAgICAnVmRhc2g7JzogJ1x1MjJhOScsCisgICAgJ3ZEYXNoOyc6ICdcdTIyYTgnLAorICAgICd2ZGFzaDsnOiAnXHUyMmEyJywKKyAgICAnVmRhc2hsOyc6ICdcdTJhZTYnLAorICAgICdWZWU7JzogJ1x1MjJjMScsCisgICAgJ3ZlZTsnOiAnXHUyMjI4JywKKyAgICAndmVlYmFyOyc6ICdcdTIyYmInLAorICAgICd2ZWVlcTsnOiAnXHUyMjVhJywKKyAgICAndmVsbGlwOyc6ICdcdTIyZWUnLAorICAgICdWZXJiYXI7JzogJ1x1MjAxNicsCisgICAgJ3ZlcmJhcjsnOiAnfCcsCisgICAgJ1ZlcnQ7JzogJ1x1MjAxNicsCisgICAgJ3ZlcnQ7JzogJ3wnLAorICAgICdWZXJ0aWNhbEJhcjsnOiAnXHUyMjIzJywKKyAgICAnVmVydGljYWxMaW5lOyc6ICd8JywKKyAgICAnVmVydGljYWxTZXBhcmF0b3I7JzogJ1x1Mjc1OCcsCisgICAgJ1ZlcnRpY2FsVGlsZGU7JzogJ1x1MjI0MCcsCisgICAgJ1ZlcnlUaGluU3BhY2U7JzogJ1x1MjAwYScsCisgICAgJ1ZmcjsnOiAnXFUwMDAxZDUxOScsCisgICAgJ3ZmcjsnOiAnXFUwMDAxZDUzMycsCisgICAgJ3ZsdHJpOyc6ICdcdTIyYjInLAorICAgICd2bnN1YjsnOiAnXHUyMjgyXHUyMGQyJywKKyAgICAndm5zdXA7JzogJ1x1MjI4M1x1MjBkMicsCisgICAgJ1ZvcGY7JzogJ1xVMDAwMWQ1NGQnLAorICAgICd2b3BmOyc6ICdcVTAwMDFkNTY3JywKKyAgICAndnByb3A7JzogJ1x1MjIxZCcsCisgICAgJ3ZydHJpOyc6ICdcdTIyYjMnLAorICAgICdWc2NyOyc6ICdcVTAwMDFkNGIxJywKKyAgICAndnNjcjsnOiAnXFUwMDAxZDRjYicsCisgICAgJ3ZzdWJuRTsnOiAnXHUyYWNiXHVmZTAwJywKKyAgICAndnN1Ym5lOyc6ICdcdTIyOGFcdWZlMDAnLAorICAgICd2c3VwbkU7JzogJ1x1MmFjY1x1ZmUwMCcsCisgICAgJ3ZzdXBuZTsnOiAnXHUyMjhiXHVmZTAwJywKKyAgICAnVnZkYXNoOyc6ICdcdTIyYWEnLAorICAgICd2emlnemFnOyc6ICdcdTI5OWEnLAorICAgICdXY2lyYzsnOiAnXHUwMTc0JywKKyAgICAnd2NpcmM7JzogJ1x1MDE3NScsCisgICAgJ3dlZGJhcjsnOiAnXHUyYTVmJywKKyAgICAnV2VkZ2U7JzogJ1x1MjJjMCcsCisgICAgJ3dlZGdlOyc6ICdcdTIyMjcnLAorICAgICd3ZWRnZXE7JzogJ1x1MjI1OScsCisgICAgJ3dlaWVycDsnOiAnXHUyMTE4JywKKyAgICAnV2ZyOyc6ICdcVTAwMDFkNTFhJywKKyAgICAnd2ZyOyc6ICdcVTAwMDFkNTM0JywKKyAgICAnV29wZjsnOiAnXFUwMDAxZDU0ZScsCisgICAgJ3dvcGY7JzogJ1xVMDAwMWQ1NjgnLAorICAgICd3cDsnOiAnXHUyMTE4JywKKyAgICAnd3I7JzogJ1x1MjI0MCcsCisgICAgJ3dyZWF0aDsnOiAnXHUyMjQwJywKKyAgICAnV3NjcjsnOiAnXFUwMDAxZDRiMicsCisgICAgJ3dzY3I7JzogJ1xVMDAwMWQ0Y2MnLAorICAgICd4Y2FwOyc6ICdcdTIyYzInLAorICAgICd4Y2lyYzsnOiAnXHUyNWVmJywKKyAgICAneGN1cDsnOiAnXHUyMmMzJywKKyAgICAneGR0cmk7JzogJ1x1MjViZCcsCisgICAgJ1hmcjsnOiAnXFUwMDAxZDUxYicsCisgICAgJ3hmcjsnOiAnXFUwMDAxZDUzNScsCisgICAgJ3hoQXJyOyc6ICdcdTI3ZmEnLAorICAgICd4aGFycjsnOiAnXHUyN2Y3JywKKyAgICAnWGk7JzogJ1x1MDM5ZScsCisgICAgJ3hpOyc6ICdcdTAzYmUnLAorICAgICd4bEFycjsnOiAnXHUyN2Y4JywKKyAgICAneGxhcnI7JzogJ1x1MjdmNScsCisgICAgJ3htYXA7JzogJ1x1MjdmYycsCisgICAgJ3huaXM7JzogJ1x1MjJmYicsCisgICAgJ3hvZG90Oyc6ICdcdTJhMDAnLAorICAgICdYb3BmOyc6ICdcVTAwMDFkNTRmJywKKyAgICAneG9wZjsnOiAnXFUwMDAxZDU2OScsCisgICAgJ3hvcGx1czsnOiAnXHUyYTAxJywKKyAgICAneG90aW1lOyc6ICdcdTJhMDInLAorICAgICd4ckFycjsnOiAnXHUyN2Y5JywKKyAgICAneHJhcnI7JzogJ1x1MjdmNicsCisgICAgJ1hzY3I7JzogJ1xVMDAwMWQ0YjMnLAorICAgICd4c2NyOyc6ICdcVTAwMDFkNGNkJywKKyAgICAneHNxY3VwOyc6ICdcdTJhMDYnLAorICAgICd4dXBsdXM7JzogJ1x1MmEwNCcsCisgICAgJ3h1dHJpOyc6ICdcdTI1YjMnLAorICAgICd4dmVlOyc6ICdcdTIyYzEnLAorICAgICd4d2VkZ2U7JzogJ1x1MjJjMCcsCisgICAgJ1lhY3V0ZSc6ICdceGRkJywKKyAgICAneWFjdXRlJzogJ1x4ZmQnLAorICAgICdZYWN1dGU7JzogJ1x4ZGQnLAorICAgICd5YWN1dGU7JzogJ1x4ZmQnLAorICAgICdZQWN5Oyc6ICdcdTA0MmYnLAorICAgICd5YWN5Oyc6ICdcdTA0NGYnLAorICAgICdZY2lyYzsnOiAnXHUwMTc2JywKKyAgICAneWNpcmM7JzogJ1x1MDE3NycsCisgICAgJ1ljeTsnOiAnXHUwNDJiJywKKyAgICAneWN5Oyc6ICdcdTA0NGInLAorICAgICd5ZW4nOiAnXHhhNScsCisgICAgJ3llbjsnOiAnXHhhNScsCisgICAgJ1lmcjsnOiAnXFUwMDAxZDUxYycsCisgICAgJ3lmcjsnOiAnXFUwMDAxZDUzNicsCisgICAgJ1lJY3k7JzogJ1x1MDQwNycsCisgICAgJ3lpY3k7JzogJ1x1MDQ1NycsCisgICAgJ1lvcGY7JzogJ1xVMDAwMWQ1NTAnLAorICAgICd5b3BmOyc6ICdcVTAwMDFkNTZhJywKKyAgICAnWXNjcjsnOiAnXFUwMDAxZDRiNCcsCisgICAgJ3lzY3I7JzogJ1xVMDAwMWQ0Y2UnLAorICAgICdZVWN5Oyc6ICdcdTA0MmUnLAorICAgICd5dWN5Oyc6ICdcdTA0NGUnLAorICAgICd5dW1sJzogJ1x4ZmYnLAorICAgICdZdW1sOyc6ICdcdTAxNzgnLAorICAgICd5dW1sOyc6ICdceGZmJywKKyAgICAnWmFjdXRlOyc6ICdcdTAxNzknLAorICAgICd6YWN1dGU7JzogJ1x1MDE3YScsCisgICAgJ1pjYXJvbjsnOiAnXHUwMTdkJywKKyAgICAnemNhcm9uOyc6ICdcdTAxN2UnLAorICAgICdaY3k7JzogJ1x1MDQxNycsCisgICAgJ3pjeTsnOiAnXHUwNDM3JywKKyAgICAnWmRvdDsnOiAnXHUwMTdiJywKKyAgICAnemRvdDsnOiAnXHUwMTdjJywKKyAgICAnemVldHJmOyc6ICdcdTIxMjgnLAorICAgICdaZXJvV2lkdGhTcGFjZTsnOiAnXHUyMDBiJywKKyAgICAnWmV0YTsnOiAnXHUwMzk2JywKKyAgICAnemV0YTsnOiAnXHUwM2I2JywKKyAgICAnWmZyOyc6ICdcdTIxMjgnLAorICAgICd6ZnI7JzogJ1xVMDAwMWQ1MzcnLAorICAgICdaSGN5Oyc6ICdcdTA0MTYnLAorICAgICd6aGN5Oyc6ICdcdTA0MzYnLAorICAgICd6aWdyYXJyOyc6ICdcdTIxZGQnLAorICAgICdab3BmOyc6ICdcdTIxMjQnLAorICAgICd6b3BmOyc6ICdcVTAwMDFkNTZiJywKKyAgICAnWnNjcjsnOiAnXFUwMDAxZDRiNScsCisgICAgJ3pzY3I7JzogJ1xVMDAwMWQ0Y2YnLAorICAgICd6d2o7JzogJ1x1MjAwZCcsCisgICAgJ3p3bmo7JzogJ1x1MjAwYycsCit9CisKICMgbWFwcyB0aGUgVW5pY29kZSBjb2RlcG9pbnQgdG8gdGhlIEhUTUwgZW50aXR5IG5hbWUKIGNvZGVwb2ludDJuYW1lID0ge30KIApkaWZmIC0tZ2l0IGEvTGliL2h0bWwvcGFyc2VyLnB5IGIvTGliL2h0bWwvcGFyc2VyLnB5CmluZGV4IGRlNTA0YWIuLmY4YWM4MjggMTAwNjQ0Ci0tLSBhL0xpYi9odG1sL3BhcnNlci5weQorKysgYi9MaWIvaHRtbC9wYXJzZXIucHkKQEAgLTEwLDYgKzEwLDcgQEAKIAogaW1wb3J0IF9tYXJrdXBiYXNlCiBpbXBvcnQgcmUKK2ltcG9ydCB3YXJuaW5ncwogCiAjIFJlZ3VsYXIgZXhwcmVzc2lvbnMgdXNlZCBmb3IgcGFyc2luZwogCkBAIC0xMTMsMTQgKzExNCwxNiBAQAogCiAgICAgQ0RBVEFfQ09OVEVOVF9FTEVNRU5UUyA9ICgic2NyaXB0IiwgInN0eWxlIikKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJpY3Q9VHJ1ZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0cmljdD1GYWxzZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYW5kIHJlc2V0IHRoaXMgaW5zdGFuY2UuCiAKLSAgICAgICAgSWYgc3RyaWN0IGlzIHNldCB0byBUcnVlICh0aGUgZGVmYXVsdCksIGVycm9ycyBhcmUgcmFpc2VkIHdoZW4gaW52YWxpZAotICAgICAgICBIVE1MIGlzIGVuY291bnRlcmVkLiAgSWYgc2V0IHRvIEZhbHNlLCBhbiBhdHRlbXB0IGlzIGluc3RlYWQgbWFkZSB0bwotICAgICAgICBjb250aW51ZSBwYXJzaW5nLCBtYWtpbmcgImJlc3QgZ3Vlc3NlcyIgYWJvdXQgdGhlIGludGVuZGVkIG1lYW5pbmcsIGluCi0gICAgICAgIGEgZmFzaGlvbiBzaW1pbGFyIHRvIHdoYXQgYnJvd3NlcnMgdHlwaWNhbGx5IGRvLgorICAgICAgICBJZiBzdHJpY3QgaXMgc2V0IHRvIEZhbHNlICh0aGUgZGVmYXVsdCkgdGhlIHBhcnNlciB3aWxsIHBhcnNlIGludmFsaWQKKyAgICAgICAgbWFya3VwLCBvdGhlcndpc2UgaXQgd2lsbCByYWlzZSBhbiBlcnJvci4gIE5vdGUgdGhhdCB0aGUgc3RyaWN0IG1vZGUKKyAgICAgICAgaXMgZGVwcmVjYXRlZC4KICAgICAgICAgIiIiCisgICAgICAgIGlmIHN0cmljdDoKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSBzdHJpY3QgbW9kZSBpcyBkZXByZWNhdGVkLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICBzZWxmLnN0cmljdCA9IHN0cmljdAogICAgICAgICBzZWxmLnJlc2V0KCkKIApAQCAtMjcxLDggKzI3NCw4IEBACiAgICAgIyBTZWUgYWxzbyBwYXJzZV9kZWNsYXJhdGlvbiBpbiBfbWFya3VwYmFzZQogICAgIGRlZiBwYXJzZV9odG1sX2RlY2xhcmF0aW9uKHNlbGYsIGkpOgogICAgICAgICByYXdkYXRhID0gc2VsZi5yYXdkYXRhCi0gICAgICAgIGlmIHJhd2RhdGFbaTppKzJdICE9ICc8ISc6Ci0gICAgICAgICAgICBzZWxmLmVycm9yKCd1bmV4cGVjdGVkIGNhbGwgdG8gcGFyc2VfaHRtbF9kZWNsYXJhdGlvbigpJykKKyAgICAgICAgYXNzZXJ0IHJhd2RhdGFbaTppKzJdID09ICc8IScsICgndW5leHBlY3RlZCBjYWxsIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFyc2VfaHRtbF9kZWNsYXJhdGlvbigpJykKICAgICAgICAgaWYgcmF3ZGF0YVtpOmkrNF0gPT0gJzwhLS0nOgogICAgICAgICAgICAgIyB0aGlzIGNhc2UgaXMgYWN0dWFsbHkgYWxyZWFkeSBoYW5kbGVkIGluIGdvYWhlYWQoKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucGFyc2VfY29tbWVudChpKQpAQCAtMjkyLDggKzI5NSw4IEBACiAgICAgIyBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvdG9rZW5pemF0aW9uLmh0bWwjYm9ndXMtY29tbWVudC1zdGF0ZQogICAgIGRlZiBwYXJzZV9ib2d1c19jb21tZW50KHNlbGYsIGksIHJlcG9ydD0xKToKICAgICAgICAgcmF3ZGF0YSA9IHNlbGYucmF3ZGF0YQotICAgICAgICBpZiByYXdkYXRhW2k6aSsyXSBub3QgaW4gKCc8IScsICc8LycpOgotICAgICAgICAgICAgc2VsZi5lcnJvcigndW5leHBlY3RlZCBjYWxsIHRvIHBhcnNlX2NvbW1lbnQoKScpCisgICAgICAgIGFzc2VydCByYXdkYXRhW2k6aSsyXSBpbiAoJzwhJywgJzwvJyksICgndW5leHBlY3RlZCBjYWxsIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJzZV9jb21tZW50KCknKQogICAgICAgICBwb3MgPSByYXdkYXRhLmZpbmQoJz4nLCBpKzIpCiAgICAgICAgIGlmIHBvcyA9PSAtMToKICAgICAgICAgICAgIHJldHVybiAtMQpAQCAtNDk3LDcgKzUwMCw2IEBACiAgICAgICAgICAgICBzZWxmLmVycm9yKCJ1bmtub3duIGRlY2xhcmF0aW9uOiAlciIgJSAoZGF0YSwpKQogCiAgICAgIyBJbnRlcm5hbCAtLSBoZWxwZXIgdG8gcmVtb3ZlIHNwZWNpYWwgY2hhcmFjdGVyIHF1b3RpbmcKLSAgICBlbnRpdHlkZWZzID0gTm9uZQogICAgIGRlZiB1bmVzY2FwZShzZWxmLCBzKToKICAgICAgICAgaWYgJyYnIG5vdCBpbiBzOgogICAgICAgICAgICAgcmV0dXJuIHMKQEAgLTUwNywyNCArNTA5LDIzIEBACiAgICAgICAgICAgICAgICAgaWYgc1swXSA9PSAiIyI6CiAgICAgICAgICAgICAgICAgICAgIHMgPSBzWzE6XQogICAgICAgICAgICAgICAgICAgICBpZiBzWzBdIGluIFsneCcsJ1gnXToKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBpbnQoc1sxOl0sIDE2KQorICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGludChzWzE6XS5yc3RyaXAoJzsnKSwgMTYpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gaW50KHMpCisgICAgICAgICAgICAgICAgICAgICAgICBjID0gaW50KHMucnN0cmlwKCc7JykpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaHIoYykKICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgIHJldHVybiAnJiMnKyBzICsnOycKKyAgICAgICAgICAgICAgICByZXR1cm4gJyYjJyArIHMKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBDYW5ub3QgdXNlIG5hbWUyY29kZXBvaW50IGRpcmVjdGx5LCBiZWNhdXNlIEhUTUxQYXJzZXIKLSAgICAgICAgICAgICAgICAjIHN1cHBvcnRzIGFwb3MsIHdoaWNoIGlzIG5vdCBwYXJ0IG9mIEhUTUwgNAotICAgICAgICAgICAgICAgIGltcG9ydCBodG1sLmVudGl0aWVzCi0gICAgICAgICAgICAgICAgaWYgSFRNTFBhcnNlci5lbnRpdHlkZWZzIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGVudGl0eWRlZnMgPSBIVE1MUGFyc2VyLmVudGl0eWRlZnMgPSB7J2Fwb3MnOiInIn0KLSAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gaHRtbC5lbnRpdGllcy5uYW1lMmNvZGVwb2ludC5pdGVtcygpOgotICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5ZGVmc1trXSA9IGNocih2KQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZW50aXR5ZGVmc1tzXQotICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcmJytzKyc7JworICAgICAgICAgICAgICAgIGZyb20gaHRtbC5lbnRpdGllcyBpbXBvcnQgaHRtbDUKKyAgICAgICAgICAgICAgICBpZiBzIGluIGh0bWw1OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaHRtbDVbc10KKyAgICAgICAgICAgICAgICBlbGlmIHMuZW5kc3dpdGgoJzsnKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcmJyArIHMKKyAgICAgICAgICAgICAgICBmb3IgeCBpbiByYW5nZSgyLCBsZW4ocykpOgorICAgICAgICAgICAgICAgICAgICBpZiBzWzp4XSBpbiBodG1sNToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBodG1sNVtzWzp4XV0gKyBzW3g6XQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJicgKyBzCiAKLSAgICAgICAgcmV0dXJuIHJlLnN1YihyIiYoIz9beFhdPyg/OlswLTlhLWZBLUZdK3xcd3sxLDh9KSk7IiwKKyAgICAgICAgcmV0dXJuIHJlLnN1YihyIiYoIz9beFhdPyg/OlswLTlhLWZBLUZdKzt8XHd7MSwzMn07PykpIiwKICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlRW50aXRpZXMsIHMsIGZsYWdzPXJlLkFTQ0lJKQpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY2xpZW50LnB5IGIvTGliL2h0dHAvY2xpZW50LnB5CmluZGV4IDU0NjZkMDYuLjQ2NjNkNDMgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2NsaWVudC5weQorKysgYi9MaWIvaHR0cC9jbGllbnQucHkKQEAgLTE0MSw2ICsxNDEsOSBAQAogTE9DS0VEID0gNDIzCiBGQUlMRURfREVQRU5ERU5DWSA9IDQyNAogVVBHUkFERV9SRVFVSVJFRCA9IDQyNgorUFJFQ09ORElUSU9OX1JFUVVJUkVEID0gNDI4CitUT09fTUFOWV9SRVFVRVNUUyA9IDQyOQorUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRSA9IDQzMQogCiAjIHNlcnZlciBlcnJvcgogSU5URVJOQUxfU0VSVkVSX0VSUk9SID0gNTAwCkBAIC0xNTEsNiArMTU0LDcgQEAKIEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEID0gNTA1CiBJTlNVRkZJQ0lFTlRfU1RPUkFHRSA9IDUwNwogTk9UX0VYVEVOREVEID0gNTEwCitORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEID0gNTExCiAKICMgTWFwcGluZyBzdGF0dXMgY29kZXMgdG8gb2ZmaWNpYWwgVzNDIG5hbWVzCiByZXNwb25zZXMgPSB7CkBAIC0xOTIsNiArMTk2LDkgQEAKICAgICA0MTU6ICdVbnN1cHBvcnRlZCBNZWRpYSBUeXBlJywKICAgICA0MTY6ICdSZXF1ZXN0ZWQgUmFuZ2UgTm90IFNhdGlzZmlhYmxlJywKICAgICA0MTc6ICdFeHBlY3RhdGlvbiBGYWlsZWQnLAorICAgIDQyODogJ1ByZWNvbmRpdGlvbiBSZXF1aXJlZCcsCisgICAgNDI5OiAnVG9vIE1hbnkgUmVxdWVzdHMnLAorICAgIDQzMTogJ1JlcXVlc3QgSGVhZGVyIEZpZWxkcyBUb28gTGFyZ2UnLAogCiAgICAgNTAwOiAnSW50ZXJuYWwgU2VydmVyIEVycm9yJywKICAgICA1MDE6ICdOb3QgSW1wbGVtZW50ZWQnLApAQCAtMTk5LDYgKzIwNiw3IEBACiAgICAgNTAzOiAnU2VydmljZSBVbmF2YWlsYWJsZScsCiAgICAgNTA0OiAnR2F0ZXdheSBUaW1lb3V0JywKICAgICA1MDU6ICdIVFRQIFZlcnNpb24gTm90IFN1cHBvcnRlZCcsCisgICAgNTExOiAnTmV0d29yayBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCcsCiB9CiAKICMgbWF4aW1hbCBhbW91bnQgb2YgZGF0YSB0byByZWFkIGF0IG9uZSB0aW1lIGluIF9zYWZlX3JlYWQKQEAgLTQ4OSwxMSArNDk3LDE3IEBACiAgICAgICAgICAgICBzZWxmLl9jbG9zZV9jb25uKCkKICAgICAgICAgICAgIHJldHVybiBiIiIKIAotICAgICAgICBpZiBzZWxmLmNodW5rZWQ6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF9jaHVua2VkKGFtdCkKKyAgICAgICAgaWYgYW10IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIyBBbW91bnQgaXMgZ2l2ZW4sIHNvIGNhbGwgYmFzZSBjbGFzcyB2ZXJzaW9uCisgICAgICAgICAgICAjICh3aGljaCBpcyBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBzZWxmLnJlYWRpbnRvKQorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKEhUVFBSZXNwb25zZSwgc2VsZikucmVhZChhbXQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEFtb3VudCBpcyBub3QgZ2l2ZW4gKHVuYm91bmRlZCByZWFkKSBzbyB3ZSBtdXN0IGNoZWNrIHNlbGYubGVuZ3RoCisgICAgICAgICAgICAjIGFuZCBzZWxmLmNodW5rZWQKIAotICAgICAgICBpZiBhbXQgaXMgTm9uZToKLSAgICAgICAgICAgICMgdW5ib3VuZGVkIHJlYWQKKyAgICAgICAgICAgIGlmIHNlbGYuY2h1bmtlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZGFsbF9jaHVua2VkKCkKKwogICAgICAgICAgICAgaWYgc2VsZi5sZW5ndGggaXMgTm9uZToKICAgICAgICAgICAgICAgICBzID0gc2VsZi5mcC5yZWFkKCkKICAgICAgICAgICAgIGVsc2U6CkBAIC01MDYsNjYgKzUyMCw1MyBAQAogICAgICAgICAgICAgc2VsZi5fY2xvc2VfY29ubigpICAgICAgICAjIHdlIHJlYWQgZXZlcnl0aGluZwogICAgICAgICAgICAgcmV0dXJuIHMKIAorICAgIGRlZiByZWFkaW50byhzZWxmLCBiKToKKyAgICAgICAgaWYgc2VsZi5mcCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIDAKKworICAgICAgICBpZiBzZWxmLl9tZXRob2QgPT0gIkhFQUQiOgorICAgICAgICAgICAgc2VsZi5fY2xvc2VfY29ubigpCisgICAgICAgICAgICByZXR1cm4gMAorCisgICAgICAgIGlmIHNlbGYuY2h1bmtlZDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkaW50b19jaHVua2VkKGIpCisKICAgICAgICAgaWYgc2VsZi5sZW5ndGggaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBhbXQgPiBzZWxmLmxlbmd0aDoKKyAgICAgICAgICAgIGlmIGxlbihiKSA+IHNlbGYubGVuZ3RoOgogICAgICAgICAgICAgICAgICMgY2xpcCB0aGUgcmVhZCB0byB0aGUgImVuZCBvZiByZXNwb25zZSIKLSAgICAgICAgICAgICAgICBhbXQgPSBzZWxmLmxlbmd0aAorICAgICAgICAgICAgICAgIGIgPSBtZW1vcnl2aWV3KGIpWzA6c2VsZi5sZW5ndGhdCiAKICAgICAgICAgIyB3ZSBkbyBub3QgdXNlIF9zYWZlX3JlYWQoKSBoZXJlIGJlY2F1c2UgdGhpcyBtYXkgYmUgYSAud2lsbF9jbG9zZQogICAgICAgICAjIGNvbm5lY3Rpb24sIGFuZCB0aGUgdXNlciBpcyByZWFkaW5nIG1vcmUgYnl0ZXMgdGhhbiB3aWxsIGJlIHByb3ZpZGVkCiAgICAgICAgICMgKGZvciBleGFtcGxlLCByZWFkaW5nIGluIDFrIGNodW5rcykKLSAgICAgICAgcyA9IHNlbGYuZnAucmVhZChhbXQpCi0gICAgICAgIGlmIG5vdCBzOgorICAgICAgICBuID0gc2VsZi5mcC5yZWFkaW50byhiKQorICAgICAgICBpZiBub3QgbjoKICAgICAgICAgICAgICMgSWRlYWxseSwgd2Ugd291bGQgcmFpc2UgSW5jb21wbGV0ZVJlYWQgaWYgdGhlIGNvbnRlbnQtbGVuZ3RoCiAgICAgICAgICAgICAjIHdhc24ndCBzYXRpc2ZpZWQsIGJ1dCBpdCBtaWdodCBicmVhayBjb21wYXRpYmlsaXR5LgogICAgICAgICAgICAgc2VsZi5fY2xvc2VfY29ubigpCiAgICAgICAgIGVsaWYgc2VsZi5sZW5ndGggaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLmxlbmd0aCAtPSBsZW4ocykKKyAgICAgICAgICAgIHNlbGYubGVuZ3RoIC09IG4KICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmxlbmd0aDoKICAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZV9jb25uKCkKKyAgICAgICAgcmV0dXJuIG4KIAotICAgICAgICByZXR1cm4gcworICAgIGRlZiBfcmVhZF9uZXh0X2NodW5rX3NpemUoc2VsZik6CisgICAgICAgICMgUmVhZCB0aGUgbmV4dCBjaHVuayBzaXplIGZyb20gdGhlIGZpbGUKKyAgICAgICAgbGluZSA9IHNlbGYuZnAucmVhZGxpbmUoX01BWExJTkUgKyAxKQorICAgICAgICBpZiBsZW4obGluZSkgPiBfTUFYTElORToKKyAgICAgICAgICAgIHJhaXNlIExpbmVUb29Mb25nKCJjaHVuayBzaXplIikKKyAgICAgICAgaSA9IGxpbmUuZmluZChiIjsiKQorICAgICAgICBpZiBpID49IDA6CisgICAgICAgICAgICBsaW5lID0gbGluZVs6aV0gIyBzdHJpcCBjaHVuay1leHRlbnNpb25zCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBpbnQobGluZSwgMTYpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgIyBjbG9zZSB0aGUgY29ubmVjdGlvbiBhcyBwcm90b2NvbCBzeW5jaHJvbmlzYXRpb24gaXMKKyAgICAgICAgICAgICMgcHJvYmFibHkgbG9zdAorICAgICAgICAgICAgc2VsZi5fY2xvc2VfY29ubigpCisgICAgICAgICAgICByYWlzZQogCi0gICAgZGVmIF9yZWFkX2NodW5rZWQoc2VsZiwgYW10KToKLSAgICAgICAgYXNzZXJ0IHNlbGYuY2h1bmtlZCAhPSBfVU5LTk9XTgotICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5jaHVua19sZWZ0Ci0gICAgICAgIHZhbHVlID0gW10KLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5mcC5yZWFkbGluZShfTUFYTElORSArIDEpCi0gICAgICAgICAgICAgICAgaWYgbGVuKGxpbmUpID4gX01BWExJTkU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIExpbmVUb29Mb25nKCJjaHVuayBzaXplIikKLSAgICAgICAgICAgICAgICBpID0gbGluZS5maW5kKGIiOyIpCi0gICAgICAgICAgICAgICAgaWYgaSA+PSAwOgotICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZVs6aV0gIyBzdHJpcCBjaHVuay1leHRlbnNpb25zCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBjaHVua19sZWZ0ID0gaW50KGxpbmUsIDE2KQotICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICAjIGNsb3NlIHRoZSBjb25uZWN0aW9uIGFzIHByb3RvY29sIHN5bmNocm9uaXNhdGlvbiBpcwotICAgICAgICAgICAgICAgICAgICAjIHByb2JhYmx5IGxvc3QKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VfY29ubigpCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEluY29tcGxldGVSZWFkKGInJy5qb2luKHZhbHVlKSkKLSAgICAgICAgICAgICAgICBpZiBjaHVua19sZWZ0ID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBhbXQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICB2YWx1ZS5hcHBlbmQoc2VsZi5fc2FmZV9yZWFkKGNodW5rX2xlZnQpKQotICAgICAgICAgICAgZWxpZiBhbXQgPCBjaHVua19sZWZ0OgotICAgICAgICAgICAgICAgIHZhbHVlLmFwcGVuZChzZWxmLl9zYWZlX3JlYWQoYW10KSkKLSAgICAgICAgICAgICAgICBzZWxmLmNodW5rX2xlZnQgPSBjaHVua19sZWZ0IC0gYW10Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGInJy5qb2luKHZhbHVlKQotICAgICAgICAgICAgZWxpZiBhbXQgPT0gY2h1bmtfbGVmdDoKLSAgICAgICAgICAgICAgICB2YWx1ZS5hcHBlbmQoc2VsZi5fc2FmZV9yZWFkKGFtdCkpCi0gICAgICAgICAgICAgICAgc2VsZi5fc2FmZV9yZWFkKDIpICAjIHRvc3MgdGhlIENSTEYgYXQgdGhlIGVuZCBvZiB0aGUgY2h1bmsKLSAgICAgICAgICAgICAgICBzZWxmLmNodW5rX2xlZnQgPSBOb25lCi0gICAgICAgICAgICAgICAgcmV0dXJuIGInJy5qb2luKHZhbHVlKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB2YWx1ZS5hcHBlbmQoc2VsZi5fc2FmZV9yZWFkKGNodW5rX2xlZnQpKQotICAgICAgICAgICAgICAgIGFtdCAtPSBjaHVua19sZWZ0Ci0KLSAgICAgICAgICAgICMgd2UgcmVhZCB0aGUgd2hvbGUgY2h1bmssIGdldCBhbm90aGVyCi0gICAgICAgICAgICBzZWxmLl9zYWZlX3JlYWQoMikgICAgICAjIHRvc3MgdGhlIENSTEYgYXQgdGhlIGVuZCBvZiB0aGUgY2h1bmsKLSAgICAgICAgICAgIGNodW5rX2xlZnQgPSBOb25lCi0KKyAgICBkZWYgX3JlYWRfYW5kX2Rpc2NhcmRfdHJhaWxlcihzZWxmKToKICAgICAgICAgIyByZWFkIGFuZCBkaXNjYXJkIHRyYWlsZXIgdXAgdG8gdGhlIENSTEYgdGVybWluYXRvcgogICAgICAgICAjIyMgbm90ZTogd2Ugc2hvdWxkbid0IGhhdmUgYW55IHRyYWlsZXJzIQogICAgICAgICB3aGlsZSBUcnVlOgpAQCAtNTc5LDExICs1ODAsNzIgQEAKICAgICAgICAgICAgIGlmIGxpbmUgaW4gKGInXHJcbicsIGInXG4nLCBiJycpOgogICAgICAgICAgICAgICAgIGJyZWFrCiAKKyAgICBkZWYgX3JlYWRhbGxfY2h1bmtlZChzZWxmKToKKyAgICAgICAgYXNzZXJ0IHNlbGYuY2h1bmtlZCAhPSBfVU5LTk9XTgorICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5jaHVua19sZWZ0CisgICAgICAgIHZhbHVlID0gW10KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLl9yZWFkX25leHRfY2h1bmtfc2l6ZSgpCisgICAgICAgICAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEluY29tcGxldGVSZWFkKGInJy5qb2luKHZhbHVlKSkKKyAgICAgICAgICAgIHZhbHVlLmFwcGVuZChzZWxmLl9zYWZlX3JlYWQoY2h1bmtfbGVmdCkpCisKKyAgICAgICAgICAgICMgd2UgcmVhZCB0aGUgd2hvbGUgY2h1bmssIGdldCBhbm90aGVyCisgICAgICAgICAgICBzZWxmLl9zYWZlX3JlYWQoMikgICAgICAjIHRvc3MgdGhlIENSTEYgYXQgdGhlIGVuZCBvZiB0aGUgY2h1bmsKKyAgICAgICAgICAgIGNodW5rX2xlZnQgPSBOb25lCisKKyAgICAgICAgc2VsZi5fcmVhZF9hbmRfZGlzY2FyZF90cmFpbGVyKCkKKwogICAgICAgICAjIHdlIHJlYWQgZXZlcnl0aGluZzsgY2xvc2UgdGhlICJmaWxlIgogICAgICAgICBzZWxmLl9jbG9zZV9jb25uKCkKIAogICAgICAgICByZXR1cm4gYicnLmpvaW4odmFsdWUpCiAKKyAgICBkZWYgX3JlYWRpbnRvX2NodW5rZWQoc2VsZiwgYik6CisgICAgICAgIGFzc2VydCBzZWxmLmNodW5rZWQgIT0gX1VOS05PV04KKyAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuY2h1bmtfbGVmdAorCisgICAgICAgIHRvdGFsX2J5dGVzID0gMAorICAgICAgICBtdmIgPSBtZW1vcnl2aWV3KGIpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBpZiBjaHVua19sZWZ0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5fcmVhZF9uZXh0X2NodW5rX3NpemUoKQorICAgICAgICAgICAgICAgICAgICBpZiBjaHVua19sZWZ0ID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbmNvbXBsZXRlUmVhZChieXRlcyhiWzA6dG90YWxfYnl0ZXNdKSkKKworICAgICAgICAgICAgaWYgbGVuKG12YikgPCBjaHVua19sZWZ0OgorICAgICAgICAgICAgICAgIG4gPSBzZWxmLl9zYWZlX3JlYWRpbnRvKG12YikKKyAgICAgICAgICAgICAgICBzZWxmLmNodW5rX2xlZnQgPSBjaHVua19sZWZ0IC0gbgorICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbF9ieXRlcyArIG4KKyAgICAgICAgICAgIGVsaWYgbGVuKG12YikgPT0gY2h1bmtfbGVmdDoKKyAgICAgICAgICAgICAgICBuID0gc2VsZi5fc2FmZV9yZWFkaW50byhtdmIpCisgICAgICAgICAgICAgICAgc2VsZi5fc2FmZV9yZWFkKDIpICAjIHRvc3MgdGhlIENSTEYgYXQgdGhlIGVuZCBvZiB0aGUgY2h1bmsKKyAgICAgICAgICAgICAgICBzZWxmLmNodW5rX2xlZnQgPSBOb25lCisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsX2J5dGVzICsgbgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0ZW1wX212YiA9IG12YlswOmNodW5rX2xlZnRdCisgICAgICAgICAgICAgICAgbiA9IHNlbGYuX3NhZmVfcmVhZGludG8odGVtcF9tdmIpCisgICAgICAgICAgICAgICAgbXZiID0gbXZiW246XQorICAgICAgICAgICAgICAgIHRvdGFsX2J5dGVzICs9IG4KKworICAgICAgICAgICAgIyB3ZSByZWFkIHRoZSB3aG9sZSBjaHVuaywgZ2V0IGFub3RoZXIKKyAgICAgICAgICAgIHNlbGYuX3NhZmVfcmVhZCgyKSAgICAgICMgdG9zcyB0aGUgQ1JMRiBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuaworICAgICAgICAgICAgY2h1bmtfbGVmdCA9IE5vbmUKKworICAgICAgICBzZWxmLl9yZWFkX2FuZF9kaXNjYXJkX3RyYWlsZXIoKQorCisgICAgICAgICMgd2UgcmVhZCBldmVyeXRoaW5nOyBjbG9zZSB0aGUgImZpbGUiCisgICAgICAgIHNlbGYuX2Nsb3NlX2Nvbm4oKQorCisgICAgICAgIHJldHVybiB0b3RhbF9ieXRlcworCiAgICAgZGVmIF9zYWZlX3JlYWQoc2VsZiwgYW10KToKICAgICAgICAgIiIiUmVhZCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlcXVlc3RlZCwgY29tcGVuc2F0aW5nIGZvciBwYXJ0aWFsIHJlYWRzLgogCkBAIC02MDcsNiArNjY5LDIyIEBACiAgICAgICAgICAgICBhbXQgLT0gbGVuKGNodW5rKQogICAgICAgICByZXR1cm4gYiIiLmpvaW4ocykKIAorICAgIGRlZiBfc2FmZV9yZWFkaW50byhzZWxmLCBiKToKKyAgICAgICAgIiIiU2FtZSBhcyBfc2FmZV9yZWFkLCBidXQgZm9yIHJlYWRpbmcgaW50byBhIGJ1ZmZlci4iIiIKKyAgICAgICAgdG90YWxfYnl0ZXMgPSAwCisgICAgICAgIG12YiA9IG1lbW9yeXZpZXcoYikKKyAgICAgICAgd2hpbGUgdG90YWxfYnl0ZXMgPCBsZW4oYik6CisgICAgICAgICAgICBpZiBNQVhBTU9VTlQgPCBsZW4obXZiKToKKyAgICAgICAgICAgICAgICB0ZW1wX212YiA9IG12YlswOk1BWEFNT1VOVF0KKyAgICAgICAgICAgICAgICBuID0gc2VsZi5mcC5yZWFkaW50byh0ZW1wX212YikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbiA9IHNlbGYuZnAucmVhZGludG8obXZiKQorICAgICAgICAgICAgaWYgbm90IG46CisgICAgICAgICAgICAgICAgcmFpc2UgSW5jb21wbGV0ZVJlYWQoYnl0ZXMobXZiWzA6dG90YWxfYnl0ZXNdKSwgbGVuKGIpKQorICAgICAgICAgICAgbXZiID0gbXZiW246XQorICAgICAgICAgICAgdG90YWxfYnl0ZXMgKz0gbgorICAgICAgICByZXR1cm4gdG90YWxfYnl0ZXMKKwogICAgIGRlZiBmaWxlbm8oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmZwLmZpbGVubygpCiAKQEAgLTcxMyw3ICs3OTEsNyBAQAogICAgICAgICBzZWxmLnNlbmQoY29ubmVjdF9ieXRlcykKICAgICAgICAgZm9yIGhlYWRlciwgdmFsdWUgaW4gc2VsZi5fdHVubmVsX2hlYWRlcnMuaXRlbXMoKToKICAgICAgICAgICAgIGhlYWRlcl9zdHIgPSAiJXM6ICVzXHJcbiIgJSAoaGVhZGVyLCB2YWx1ZSkKLSAgICAgICAgICAgIGhlYWRlcl9ieXRlcyA9IGhlYWRlcl9zdHIuZW5jb2RlKCJsYXRpbjEiKQorICAgICAgICAgICAgaGVhZGVyX2J5dGVzID0gaGVhZGVyX3N0ci5lbmNvZGUoImxhdGluLTEiKQogICAgICAgICAgICAgc2VsZi5zZW5kKGhlYWRlcl9ieXRlcykKICAgICAgICAgc2VsZi5zZW5kKGInXHJcbicpCiAKQEAgLTk1Niw3ICsxMDM0LDcgQEAKICAgICAgICAgdmFsdWVzID0gbGlzdCh2YWx1ZXMpCiAgICAgICAgIGZvciBpLCBvbmVfdmFsdWUgaW4gZW51bWVyYXRlKHZhbHVlcyk6CiAgICAgICAgICAgICBpZiBoYXNhdHRyKG9uZV92YWx1ZSwgJ2VuY29kZScpOgotICAgICAgICAgICAgICAgIHZhbHVlc1tpXSA9IG9uZV92YWx1ZS5lbmNvZGUoJ2xhdGluMScpCisgICAgICAgICAgICAgICAgdmFsdWVzW2ldID0gb25lX3ZhbHVlLmVuY29kZSgnbGF0aW4tMScpCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uob25lX3ZhbHVlLCBpbnQpOgogICAgICAgICAgICAgICAgIHZhbHVlc1tpXSA9IHN0cihvbmVfdmFsdWUpLmVuY29kZSgnYXNjaWknKQogICAgICAgICB2YWx1ZSA9IGInXHJcblx0Jy5qb2luKHZhbHVlcykKZGlmZiAtLWdpdCBhL0xpYi9odHRwL2Nvb2tpZWphci5weSBiL0xpYi9odHRwL2Nvb2tpZWphci5weQppbmRleCBiNmNmYzM1Li45MDFlNzYyIDEwMDY0NAotLS0gYS9MaWIvaHR0cC9jb29raWVqYXIucHkKKysrIGIvTGliL2h0dHAvY29va2llamFyLnB5CkBAIC02MjUsNyArNjI1LDcgQEAKICAgICByZXR1cm4gcGF0aAogCiBkZWYgcmVxdWVzdF9wb3J0KHJlcXVlc3QpOgotICAgIGhvc3QgPSByZXF1ZXN0LmdldF9ob3N0KCkKKyAgICBob3N0ID0gcmVxdWVzdC5ob3N0CiAgICAgaSA9IGhvc3QuZmluZCgnOicpCiAgICAgaWYgaSA+PSAwOgogICAgICAgICBwb3J0ID0gaG9zdFtpKzE6XQpAQCAtOTQ5LDcgKzk0OSw3IEBACiAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYgc2V0X29rX3ZlcmlmaWFiaWxpdHkoc2VsZiwgY29va2llLCByZXF1ZXN0KToKLSAgICAgICAgaWYgcmVxdWVzdC5pc191bnZlcmlmaWFibGUoKSBhbmQgaXNfdGhpcmRfcGFydHkocmVxdWVzdCk6CisgICAgICAgIGlmIHJlcXVlc3QudW52ZXJpZmlhYmxlIGFuZCBpc190aGlyZF9wYXJ0eShyZXF1ZXN0KToKICAgICAgICAgICAgIGlmIGNvb2tpZS52ZXJzaW9uID4gMCBhbmQgc2VsZi5zdHJpY3RfcmZjMjk2NV91bnZlcmlmaWFibGU6CiAgICAgICAgICAgICAgICAgX2RlYnVnKCIgICB0aGlyZC1wYXJ0eSBSRkMgMjk2NSBjb29raWUgZHVyaW5nICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVudmVyaWZpYWJsZSB0cmFuc2FjdGlvbiIpCkBAIC0xMDg4LDcgKzEwODgsNyBAQAogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIHJldHVybl9va192ZXJpZmlhYmlsaXR5KHNlbGYsIGNvb2tpZSwgcmVxdWVzdCk6Ci0gICAgICAgIGlmIHJlcXVlc3QuaXNfdW52ZXJpZmlhYmxlKCkgYW5kIGlzX3RoaXJkX3BhcnR5KHJlcXVlc3QpOgorICAgICAgICBpZiByZXF1ZXN0LnVudmVyaWZpYWJsZSBhbmQgaXNfdGhpcmRfcGFydHkocmVxdWVzdCk6CiAgICAgICAgICAgICBpZiBjb29raWUudmVyc2lvbiA+IDAgYW5kIHNlbGYuc3RyaWN0X3JmYzI5NjVfdW52ZXJpZmlhYmxlOgogICAgICAgICAgICAgICAgIF9kZWJ1ZygiICAgdGhpcmQtcGFydHkgUkZDIDI5NjUgY29va2llIGR1cmluZyB1bnZlcmlmaWFibGUgIgogICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNhY3Rpb24iKQpAQCAtMTEwMCw3ICsxMTAwLDcgQEAKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiByZXR1cm5fb2tfc2VjdXJlKHNlbGYsIGNvb2tpZSwgcmVxdWVzdCk6Ci0gICAgICAgIGlmIGNvb2tpZS5zZWN1cmUgYW5kIHJlcXVlc3QuZ2V0X3R5cGUoKSAhPSAiaHR0cHMiOgorICAgICAgICBpZiBjb29raWUuc2VjdXJlIGFuZCByZXF1ZXN0LnR5cGUgIT0gImh0dHBzIjoKICAgICAgICAgICAgIF9kZWJ1ZygiICAgc2VjdXJlIGNvb2tpZSB3aXRoIG5vbi1zZWN1cmUgcmVxdWVzdCIpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIFRydWUKZGlmZiAtLWdpdCBhL0xpYi9odHRwL2Nvb2tpZXMucHkgYi9MaWIvaHR0cC9jb29raWVzLnB5CmluZGV4IGRkYmNiZjguLmQyOTE2NzggMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2Nvb2tpZXMucHkKKysrIGIvTGliL2h0dHAvY29va2llcy5weQpAQCAtMTU5LDcgKzE1OSw3IEBACiAjICAgICAgIF9MZWdhbENoYXJzICAgICAgIGlzIHRoZSBsaXN0IG9mIGNoYXJzIHdoaWNoIGRvbid0IHJlcXVpcmUgIidzCiAjICAgICAgIF9UcmFuc2xhdG9yICAgICAgIGhhc2gtdGFibGUgZm9yIGZhc3QgcXVvdGluZwogIwotX0xlZ2FsQ2hhcnMgICAgICAgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAiISMkJSYnKistLl5fYHx+IgorX0xlZ2FsQ2hhcnMgICAgICAgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAiISMkJSYnKistLl5fYHx+OiIKIF9UcmFuc2xhdG9yICAgICAgID0gewogICAgICdcMDAwJyA6ICdcXDAwMCcsICAnXDAwMScgOiAnXFwwMDEnLCAgJ1wwMDInIDogJ1xcMDAyJywKICAgICAnXDAwMycgOiAnXFwwMDMnLCAgJ1wwMDQnIDogJ1xcMDA0JywgICdcMDA1JyA6ICdcXDAwNScsCmRpZmYgLS1naXQgYS9MaWIvaHR0cC9zZXJ2ZXIucHkgYi9MaWIvaHR0cC9zZXJ2ZXIucHkKaW5kZXggNTU2OTAzNy4uYzRhYzcwMyAxMDA2NDQKLS0tIGEvTGliL2h0dHAvc2VydmVyLnB5CisrKyBiL0xpYi9odHRwL3NlcnZlci5weQpAQCAtMTAwLDExICsxMDAsMTQgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgdXJsbGliLnBhcnNlCiBpbXBvcnQgY29weQoraW1wb3J0IGFyZ3BhcnNlCisKIAogIyBEZWZhdWx0IGVycm9yIG1lc3NhZ2UgdGVtcGxhdGUKIERFRkFVTFRfRVJST1JfTUVTU0FHRSA9ICIiIlwKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIKICAgICAgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiPgorPGh0bWw+CiAgICAgPGhlYWQ+CiAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiPgogICAgICAgICA8dGl0bGU+RXJyb3IgcmVzcG9uc2U8L3RpdGxlPgpAQCAtMzUyLDYgKzM1NSw3IEBACiAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZV9vbmx5KDEwMCkKKyAgICAgICAgc2VsZi5mbHVzaF9oZWFkZXJzKCkKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiBoYW5kbGVfb25lX3JlcXVlc3Qoc2VsZik6CkBAIC00MjksNyArNDMzLDggQEAKICAgICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoY29udGVudC5lbmNvZGUoJ1VURi04JywgJ3JlcGxhY2UnKSkKIAogICAgIGRlZiBzZW5kX3Jlc3BvbnNlKHNlbGYsIGNvZGUsIG1lc3NhZ2U9Tm9uZSk6Ci0gICAgICAgICIiIlNlbmQgdGhlIHJlc3BvbnNlIGhlYWRlciBhbmQgbG9nIHRoZSByZXNwb25zZSBjb2RlLgorICAgICAgICAiIiJBZGQgdGhlIHJlc3BvbnNlIGhlYWRlciB0byB0aGUgaGVhZGVycyBidWZmZXIgYW5kIGxvZyB0aGUKKyAgICAgICAgcmVzcG9uc2UgY29kZS4KIAogICAgICAgICBBbHNvIHNlbmQgdHdvIHN0YW5kYXJkIGhlYWRlcnMgd2l0aCB0aGUgc2VydmVyIHNvZnR3YXJlCiAgICAgICAgIHZlcnNpb24gYW5kIHRoZSBjdXJyZW50IGRhdGUuCkBAIC00NDgsMTYgKzQ1MywxOSBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBtZXNzYWdlID0gJycKICAgICAgICAgaWYgc2VsZi5yZXF1ZXN0X3ZlcnNpb24gIT0gJ0hUVFAvMC45JzoKLSAgICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoKCIlcyAlZCAlc1xyXG4iICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLnByb3RvY29sX3ZlcnNpb24sIGNvZGUsIG1lc3NhZ2UpKS5lbmNvZGUoJ2xhdGluMScsICdzdHJpY3QnKSkKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsICdfaGVhZGVyc19idWZmZXInKToKKyAgICAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX2J1ZmZlciA9IFtdCisgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX2J1ZmZlci5hcHBlbmQoKCIlcyAlZCAlc1xyXG4iICUKKyAgICAgICAgICAgICAgICAgICAgKHNlbGYucHJvdG9jb2xfdmVyc2lvbiwgY29kZSwgbWVzc2FnZSkpLmVuY29kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICdsYXRpbi0xJywgJ3N0cmljdCcpKQogCiAgICAgZGVmIHNlbmRfaGVhZGVyKHNlbGYsIGtleXdvcmQsIHZhbHVlKToKLSAgICAgICAgIiIiU2VuZCBhIE1JTUUgaGVhZGVyLiIiIgorICAgICAgICAiIiJTZW5kIGEgTUlNRSBoZWFkZXIgdG8gdGhlIGhlYWRlcnMgYnVmZmVyLiIiIgogICAgICAgICBpZiBzZWxmLnJlcXVlc3RfdmVyc2lvbiAhPSAnSFRUUC8wLjknOgogICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgJ19oZWFkZXJzX2J1ZmZlcicpOgogICAgICAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNfYnVmZmVyID0gW10KICAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNfYnVmZmVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAoIiVzOiAlc1xyXG4iICUgKGtleXdvcmQsIHZhbHVlKSkuZW5jb2RlKCdsYXRpbjEnLCAnc3RyaWN0JykpCisgICAgICAgICAgICAgICAgKCIlczogJXNcclxuIiAlIChrZXl3b3JkLCB2YWx1ZSkpLmVuY29kZSgnbGF0aW4tMScsICdzdHJpY3QnKSkKIAogICAgICAgICBpZiBrZXl3b3JkLmxvd2VyKCkgPT0gJ2Nvbm5lY3Rpb24nOgogICAgICAgICAgICAgaWYgdmFsdWUubG93ZXIoKSA9PSAnY2xvc2UnOgpAQCAtNDY5LDYgKzQ3NywxMCBAQAogICAgICAgICAiIiJTZW5kIHRoZSBibGFuayBsaW5lIGVuZGluZyB0aGUgTUlNRSBoZWFkZXJzLiIiIgogICAgICAgICBpZiBzZWxmLnJlcXVlc3RfdmVyc2lvbiAhPSAnSFRUUC8wLjknOgogICAgICAgICAgICAgc2VsZi5faGVhZGVyc19idWZmZXIuYXBwZW5kKGIiXHJcbiIpCisgICAgICAgICAgICBzZWxmLmZsdXNoX2hlYWRlcnMoKQorCisgICAgZGVmIGZsdXNoX2hlYWRlcnMoc2VsZik6CisgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ19oZWFkZXJzX2J1ZmZlcicpOgogICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZShiIiIuam9pbihzZWxmLl9oZWFkZXJzX2J1ZmZlcikpCiAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX2J1ZmZlciA9IFtdCiAKQEAgLTUxNCw3ICs1MjYsNyBAQAogICAgICAgICAiIiIKIAogICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCIlcyAtIC0gWyVzXSAlc1xuIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuY2xpZW50X2FkZHJlc3NbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuYWRkcmVzc19zdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dfZGF0ZV90aW1lX3N0cmluZygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQlYXJncykpCiAKQEAgLTU0OCwxNSArNTYwLDkgQEAKICAgICAgICAgICAgICAgICAgJ0p1bCcsICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ10KIAogICAgIGRlZiBhZGRyZXNzX3N0cmluZyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBjbGllbnQgYWRkcmVzcyBmb3JtYXR0ZWQgZm9yIGxvZ2dpbmcuCisgICAgICAgICIiIlJldHVybiB0aGUgY2xpZW50IGFkZHJlc3MuIiIiCiAKLSAgICAgICAgVGhpcyB2ZXJzaW9uIGxvb2tzIHVwIHRoZSBmdWxsIGhvc3RuYW1lIHVzaW5nIGdldGhvc3RieWFkZHIoKSwKLSAgICAgICAgYW5kIHRyaWVzIHRvIGZpbmQgYSBuYW1lIHRoYXQgY29udGFpbnMgYXQgbGVhc3Qgb25lIGRvdC4KLQotICAgICAgICAiIiIKLQotICAgICAgICBob3N0LCBwb3J0ID0gc2VsZi5jbGllbnRfYWRkcmVzc1s6Ml0KLSAgICAgICAgcmV0dXJuIHNvY2tldC5nZXRmcWRuKGhvc3QpCisgICAgICAgIHJldHVybiBzZWxmLmNsaWVudF9hZGRyZXNzWzBdCiAKICAgICAjIEVzc2VudGlhbGx5IHN0YXRpYyBjbGFzcyB2YXJpYWJsZXMKIApAQCAtNTY5LDcgKzU3NSw3IEBACiAKICAgICAjIFRhYmxlIG1hcHBpbmcgcmVzcG9uc2UgY29kZXMgdG8gbWVzc2FnZXM7IGVudHJpZXMgaGF2ZSB0aGUKICAgICAjIGZvcm0ge2NvZGU6IChzaG9ydG1lc3NhZ2UsIGxvbmdtZXNzYWdlKX0uCi0gICAgIyBTZWUgUkZDIDI2MTYuCisgICAgIyBTZWUgUkZDIDI2MTYgYW5kIDY1ODUuCiAgICAgcmVzcG9uc2VzID0gewogICAgICAgICAxMDA6ICgnQ29udGludWUnLCAnUmVxdWVzdCByZWNlaXZlZCwgcGxlYXNlIGNvbnRpbnVlJyksCiAgICAgICAgIDEwMTogKCdTd2l0Y2hpbmcgUHJvdG9jb2xzJywKQEAgLTYyNCw2ICs2MzAsMTIgQEAKICAgICAgICAgICAgICAgJ0Nhbm5vdCBzYXRpc2Z5IHJlcXVlc3QgcmFuZ2UuJyksCiAgICAgICAgIDQxNzogKCdFeHBlY3RhdGlvbiBGYWlsZWQnLAogICAgICAgICAgICAgICAnRXhwZWN0IGNvbmRpdGlvbiBjb3VsZCBub3QgYmUgc2F0aXNmaWVkLicpLAorICAgICAgICA0Mjg6ICgnUHJlY29uZGl0aW9uIFJlcXVpcmVkJywKKyAgICAgICAgICAgICAgJ1RoZSBvcmlnaW4gc2VydmVyIHJlcXVpcmVzIHRoZSByZXF1ZXN0IHRvIGJlIGNvbmRpdGlvbmFsLicpLAorICAgICAgICA0Mjk6ICgnVG9vIE1hbnkgUmVxdWVzdHMnLCAnVGhlIHVzZXIgaGFzIHNlbnQgdG9vIG1hbnkgcmVxdWVzdHMgJworICAgICAgICAgICAgICAnaW4gYSBnaXZlbiBhbW91bnQgb2YgdGltZSAoInJhdGUgbGltaXRpbmciKS4nKSwKKyAgICAgICAgNDMxOiAoJ1JlcXVlc3QgSGVhZGVyIEZpZWxkcyBUb28gTGFyZ2UnLCAnVGhlIHNlcnZlciBpcyB1bndpbGxpbmcgdG8gJworICAgICAgICAgICAgICAncHJvY2VzcyB0aGUgcmVxdWVzdCBiZWNhdXNlIGl0cyBoZWFkZXIgZmllbGRzIGFyZSB0b28gbGFyZ2UuJyksCiAKICAgICAgICAgNTAwOiAoJ0ludGVybmFsIFNlcnZlciBFcnJvcicsICdTZXJ2ZXIgZ290IGl0c2VsZiBpbiB0cm91YmxlJyksCiAgICAgICAgIDUwMTogKCdOb3QgSW1wbGVtZW50ZWQnLApAQCAtNjM0LDYgKzY0Niw4IEBACiAgICAgICAgIDUwNDogKCdHYXRld2F5IFRpbWVvdXQnLAogICAgICAgICAgICAgICAnVGhlIGdhdGV3YXkgc2VydmVyIGRpZCBub3QgcmVjZWl2ZSBhIHRpbWVseSByZXNwb25zZScpLAogICAgICAgICA1MDU6ICgnSFRUUCBWZXJzaW9uIE5vdCBTdXBwb3J0ZWQnLCAnQ2Fubm90IGZ1bGZpbGwgcmVxdWVzdC4nKSwKKyAgICAgICAgNTExOiAoJ05ldHdvcmsgQXV0aGVudGljYXRpb24gUmVxdWlyZWQnLAorICAgICAgICAgICAgICAnVGhlIGNsaWVudCBuZWVkcyB0byBhdXRoZW50aWNhdGUgdG8gZ2FpbiBuZXR3b3JrIGFjY2Vzcy4nKSwKICAgICAgICAgfQogCiAKQEAgLTcyMiwxMCArNzM2LDE2IEBACiAgICAgICAgIGxpc3Quc29ydChrZXk9bGFtYmRhIGE6IGEubG93ZXIoKSkKICAgICAgICAgciA9IFtdCiAgICAgICAgIGRpc3BsYXlwYXRoID0gaHRtbC5lc2NhcGUodXJsbGliLnBhcnNlLnVucXVvdGUoc2VsZi5wYXRoKSkKLSAgICAgICAgci5hcHBlbmQoJzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4nKQotICAgICAgICByLmFwcGVuZCgiPGh0bWw+XG48dGl0bGU+RGlyZWN0b3J5IGxpc3RpbmcgZm9yICVzPC90aXRsZT5cbiIgJSBkaXNwbGF5cGF0aCkKLSAgICAgICAgci5hcHBlbmQoIjxib2R5PlxuPGgyPkRpcmVjdG9yeSBsaXN0aW5nIGZvciAlczwvaDI+XG4iICUgZGlzcGxheXBhdGgpCi0gICAgICAgIHIuYXBwZW5kKCI8aHI+XG48dWw+XG4iKQorICAgICAgICBlbmMgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKKyAgICAgICAgdGl0bGUgPSAnRGlyZWN0b3J5IGxpc3RpbmcgZm9yICVzJyAlIGRpc3BsYXlwYXRoCisgICAgICAgIHIuYXBwZW5kKCc8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iICcKKyAgICAgICAgICAgICAgICAgJyJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIj4nKQorICAgICAgICByLmFwcGVuZCgnPGh0bWw+XG48aGVhZD4nKQorICAgICAgICByLmFwcGVuZCgnPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAnCisgICAgICAgICAgICAgICAgICdjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9JXMiPicgJSBlbmMpCisgICAgICAgIHIuYXBwZW5kKCc8dGl0bGU+JXM8L3RpdGxlPlxuPC9oZWFkPicgJSB0aXRsZSkKKyAgICAgICAgci5hcHBlbmQoJzxib2R5PlxuPGgxPiVzPC9oMT4nICUgdGl0bGUpCisgICAgICAgIHIuYXBwZW5kKCc8aHI+XG48dWw+JykKICAgICAgICAgZm9yIG5hbWUgaW4gbGlzdDoKICAgICAgICAgICAgIGZ1bGxuYW1lID0gb3MucGF0aC5qb2luKHBhdGgsIG5hbWUpCiAgICAgICAgICAgICBkaXNwbGF5bmFtZSA9IGxpbmtuYW1lID0gbmFtZQpAQCAtNzM2LDExICs3NTYsMTAgQEAKICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKGZ1bGxuYW1lKToKICAgICAgICAgICAgICAgICBkaXNwbGF5bmFtZSA9IG5hbWUgKyAiQCIKICAgICAgICAgICAgICAgICAjIE5vdGU6IGEgbGluayB0byBhIGRpcmVjdG9yeSBkaXNwbGF5cyB3aXRoIEAgYW5kIGxpbmtzIHdpdGggLwotICAgICAgICAgICAgci5hcHBlbmQoJzxsaT48YSBocmVmPSIlcyI+JXM8L2E+XG4nCisgICAgICAgICAgICByLmFwcGVuZCgnPGxpPjxhIGhyZWY9IiVzIj4lczwvYT48L2xpPicKICAgICAgICAgICAgICAgICAgICAgJSAodXJsbGliLnBhcnNlLnF1b3RlKGxpbmtuYW1lKSwgaHRtbC5lc2NhcGUoZGlzcGxheW5hbWUpKSkKLSAgICAgICAgci5hcHBlbmQoIjwvdWw+XG48aHI+XG48L2JvZHk+XG48L2h0bWw+XG4iKQotICAgICAgICBlbmMgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKLSAgICAgICAgZW5jb2RlZCA9ICcnLmpvaW4ocikuZW5jb2RlKGVuYykKKyAgICAgICAgci5hcHBlbmQoJzwvdWw+XG48aHI+XG48L2JvZHk+XG48L2h0bWw+XG4nKQorICAgICAgICBlbmNvZGVkID0gJ1xuJy5qb2luKHIpLmVuY29kZShlbmMpCiAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKICAgICAgICAgZi53cml0ZShlbmNvZGVkKQogICAgICAgICBmLnNlZWsoMCkKQEAgLTg4OCwxMSArOTA3LDcgQEAKIAogZGVmIGV4ZWN1dGFibGUocGF0aCk6CiAgICAgIiIiVGVzdCBmb3IgZXhlY3V0YWJsZSBmaWxlLiIiIgotICAgIHRyeToKLSAgICAgICAgc3QgPSBvcy5zdGF0KHBhdGgpCi0gICAgZXhjZXB0IG9zLmVycm9yOgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICByZXR1cm4gc3Quc3RfbW9kZSAmIDBvMTExICE9IDAKKyAgICByZXR1cm4gb3MuYWNjZXNzKHBhdGgsIG9zLlhfT0spCiAKIAogY2xhc3MgQ0dJSFRUUFJlcXVlc3RIYW5kbGVyKFNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlcik6CkBAIC0xMDA4LDcgKzEwMjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdG5hbWUpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaXNweSA9IHNlbGYuaXNfcHl0aG9uKHNjcmlwdG5hbWUpCi0gICAgICAgIGlmIG5vdCBpc3B5OgorICAgICAgICBpZiBzZWxmLmhhdmVfZm9yayBvciBub3QgaXNweToKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2V4ZWN1dGFibGUoc2NyaXB0ZmlsZSk6CiAgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQwMywgIkNHSSBzY3JpcHQgaXMgbm90IGV4ZWN1dGFibGUgKCVyKSIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRuYW1lKQpAQCAtMTAyOSw5ICsxMDQ0LDYgQEAKICAgICAgICAgZW52WydTQ1JJUFRfTkFNRSddID0gc2NyaXB0bmFtZQogICAgICAgICBpZiBxdWVyeToKICAgICAgICAgICAgIGVudlsnUVVFUllfU1RSSU5HJ10gPSBxdWVyeQotICAgICAgICBob3N0ID0gc2VsZi5hZGRyZXNzX3N0cmluZygpCi0gICAgICAgIGlmIGhvc3QgIT0gc2VsZi5jbGllbnRfYWRkcmVzc1swXToKLSAgICAgICAgICAgIGVudlsnUkVNT1RFX0hPU1QnXSA9IGhvc3QKICAgICAgICAgZW52WydSRU1PVEVfQUREUiddID0gc2VsZi5jbGllbnRfYWRkcmVzc1swXQogICAgICAgICBhdXRob3JpemF0aW9uID0gc2VsZi5oZWFkZXJzLmdldCgiYXV0aG9yaXphdGlvbiIpCiAgICAgICAgIGlmIGF1dGhvcml6YXRpb246CkBAIC0xMDgzLDYgKzEwOTUsNyBAQAogICAgICAgICAgICAgZW52LnNldGRlZmF1bHQoaywgIiIpCiAKICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDIwMCwgIlNjcmlwdCBvdXRwdXQgZm9sbG93cyIpCisgICAgICAgIHNlbGYuZmx1c2hfaGVhZGVycygpCiAKICAgICAgICAgZGVjb2RlZF9xdWVyeSA9IHF1ZXJ5LnJlcGxhY2UoJysnLCAnICcpCiAKQEAgLTExNjIsMTggKzExNzUsMTMgQEAKIAogCiBkZWYgdGVzdChIYW5kbGVyQ2xhc3MgPSBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLAotICAgICAgICAgU2VydmVyQ2xhc3MgPSBIVFRQU2VydmVyLCBwcm90b2NvbD0iSFRUUC8xLjAiKToKKyAgICAgICAgIFNlcnZlckNsYXNzID0gSFRUUFNlcnZlciwgcHJvdG9jb2w9IkhUVFAvMS4wIiwgcG9ydD04MDAwKToKICAgICAiIiJUZXN0IHRoZSBIVFRQIHJlcXVlc3QgaGFuZGxlciBjbGFzcy4KIAogICAgIFRoaXMgcnVucyBhbiBIVFRQIHNlcnZlciBvbiBwb3J0IDgwMDAgKG9yIHRoZSBmaXJzdCBjb21tYW5kIGxpbmUKICAgICBhcmd1bWVudCkuCiAKICAgICAiIiIKLQotICAgIGlmIHN5cy5hcmd2WzE6XToKLSAgICAgICAgcG9ydCA9IGludChzeXMuYXJndlsxXSkKLSAgICBlbHNlOgotICAgICAgICBwb3J0ID0gODAwMAogICAgIHNlcnZlcl9hZGRyZXNzID0gKCcnLCBwb3J0KQogCiAgICAgSGFuZGxlckNsYXNzLnByb3RvY29sX3ZlcnNpb24gPSBwcm90b2NvbApAQCAtMTE4OSw0ICsxMTk3LDE1IEBACiAgICAgICAgIHN5cy5leGl0KDApCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdChIYW5kbGVyQ2xhc3M9U2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyKQorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNnaScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1J1biBhcyBDR0kgU2VydmVyJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdwb3J0JywgYWN0aW9uPSdzdG9yZScsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PTgwMDAsIHR5cGU9aW50LAorICAgICAgICAgICAgICAgICAgICAgICAgbmFyZ3M9Jz8nLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU3BlY2lmeSBhbHRlcm5hdGUgcG9ydCBbZGVmYXVsdDogODAwMF0nKQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgaWYgYXJncy5jZ2k6CisgICAgICAgIHRlc3QoSGFuZGxlckNsYXNzPUNHSUhUVFBSZXF1ZXN0SGFuZGxlciwgcG9ydD1hcmdzLnBvcnQpCisgICAgZWxzZToKKyAgICAgICAgdGVzdChIYW5kbGVyQ2xhc3M9U2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyLCBwb3J0PWFyZ3MucG9ydCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0F1dG9Db21wbGV0ZS5weSBiL0xpYi9pZGxlbGliL0F1dG9Db21wbGV0ZS5weQppbmRleCBlNGMxYWZmLi45MjlkMzU4IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9BdXRvQ29tcGxldGUucHkKKysrIGIvTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlLnB5CkBAIC05LDkgKzksNiBAQAogCiBmcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKIAotIyBUaGlzIHN0cmluZyBpbmNsdWRlcyBhbGwgY2hhcnMgdGhhdCBtYXkgYmUgaW4gYSBmaWxlIG5hbWUgKHdpdGhvdXQgYSBwYXRoCi0jIHNlcGFyYXRvcikKLUZJTEVOQU1FX0NIQVJTID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgb3MuY3VyZGlyICsgIi5ffiMkOi0iCiAjIFRoaXMgc3RyaW5nIGluY2x1ZGVzIGFsbCBjaGFycyB0aGF0IG1heSBiZSBpbiBhbiBpZGVudGlmaWVyCiBJRF9DSEFSUyA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICJfIgogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9Db2xvckRlbGVnYXRvci5weSBiL0xpYi9pZGxlbGliL0NvbG9yRGVsZWdhdG9yLnB5CmluZGV4IGUxODgxOTIuLmU0Y2NiNDIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0NvbG9yRGVsZWdhdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL0NvbG9yRGVsZWdhdG9yLnB5CkBAIC0yMSwxMCArMjEsMTEgQEAKICAgICAjIDFzdCAnZmlsZScgY29sb3JpemVkIG5vcm1hbCwgMm5kIGFzIGJ1aWx0aW4sIDNyZCBhcyBzdHJpbmcKICAgICBidWlsdGluID0gciIoW14uJ1wiXFwjXVxifF4pIiArIGFueSgiQlVJTFRJTiIsIGJ1aWx0aW5saXN0KSArIHIiXGIiCiAgICAgY29tbWVudCA9IGFueSgiQ09NTUVOVCIsIFtyIiNbXlxuXSoiXSkKLSAgICBzcXN0cmluZyA9IHIiKFxiW3JSYkJdKT8nW14nXFxcbl0qKFxcLlteJ1xcXG5dKikqJz8iCi0gICAgZHFzdHJpbmcgPSByJyhcYltyUmJCXSk/IlteIlxcXG5dKihcXC5bXiJcXFxuXSopKiI/JwotICAgIHNxM3N0cmluZyA9IHIiKFxiW3JSYkJdKT8nJydbXidcXF0qKChcXC58Jyg/IScnKSlbXidcXF0qKSooJycnKT8iCi0gICAgZHEzc3RyaW5nID0gcicoXGJbclJiQl0pPyIiIlteIlxcXSooKFxcLnwiKD8hIiIpKVteIlxcXSopKigiIiIpPycKKyAgICBzdHJpbmdwcmVmaXggPSByIihcYnJ8dXx1cnxSfFV8VVJ8VXJ8dVJ8YnxCfGJyfEJyfGJSfEJSfHJifHJCfFJifFJCKT8iCisgICAgc3FzdHJpbmcgPSBzdHJpbmdwcmVmaXggKyByIidbXidcXFxuXSooXFwuW14nXFxcbl0qKSonPyIKKyAgICBkcXN0cmluZyA9IHN0cmluZ3ByZWZpeCArIHInIlteIlxcXG5dKihcXC5bXiJcXFxuXSopKiI/JworICAgIHNxM3N0cmluZyA9IHN0cmluZ3ByZWZpeCArIHIiJycnW14nXFxdKigoXFwufCcoPyEnJykpW14nXFxdKikqKCcnJyk/IgorICAgIGRxM3N0cmluZyA9IHN0cmluZ3ByZWZpeCArIHInIiIiW14iXFxdKigoXFwufCIoPyEiIikpW14iXFxdKikqKCIiIik/JwogICAgIHN0cmluZyA9IGFueSgiU1RSSU5HIiwgW3NxM3N0cmluZywgZHEzc3RyaW5nLCBzcXN0cmluZywgZHFzdHJpbmddKQogICAgIHJldHVybiBrdyArICJ8IiArIGJ1aWx0aW4gKyAifCIgKyBjb21tZW50ICsgInwiICsgc3RyaW5nICtcCiAgICAgICAgICAgICJ8IiArIGFueSgiU1lOQyIsIFtyIlxuIl0pCkBAIC0xNDksOSArMTUwLDkgQEAKICAgICAgICAgICAgIHNlbGYuc3RvcF9jb2xvcml6aW5nID0gRmFsc2UKICAgICAgICAgICAgIHNlbGYuY29sb3JpemluZyA9IFRydWUKICAgICAgICAgICAgIGlmIERFQlVHOiBwcmludCgiY29sb3JpemluZy4uLiIpCi0gICAgICAgICAgICB0MCA9IHRpbWUuY2xvY2soKQorICAgICAgICAgICAgdDAgPSB0aW1lLnBlcmZfY291bnRlcigpCiAgICAgICAgICAgICBzZWxmLnJlY29sb3JpemVfbWFpbigpCi0gICAgICAgICAgICB0MSA9IHRpbWUuY2xvY2soKQorICAgICAgICAgICAgdDEgPSB0aW1lLnBlcmZfY291bnRlcigpCiAgICAgICAgICAgICBpZiBERUJVRzogcHJpbnQoIiUuM2Ygc2Vjb25kcyIgJSAodDEtdDApKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5jb2xvcml6aW5nID0gRmFsc2UKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weSBiL0xpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weQppbmRleCAxNmY2M2M1Li4zMzk3NDE1IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9FZGl0b3JXaW5kb3cucHkKKysrIGIvTGliL2lkbGVsaWIvRWRpdG9yV2luZG93LnB5CkBAIC0xLDggKzEsOSBAQAotaW1wb3J0IHN5cworaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBzdHJpbmcKLWltcG9ydCBpbXAKK2ltcG9ydCBzeXMKIGZyb20gdGtpbnRlciBpbXBvcnQgKgogaW1wb3J0IHRraW50ZXIuc2ltcGxlZGlhbG9nIGFzIHRrU2ltcGxlRGlhbG9nCiBpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveApAQCAtMjcsOCArMjgsNyBAQAogICAgICJGb3JtYXQgc3lzLnZlcnNpb25faW5mbyB0byBwcm9kdWNlIHRoZSBTcGhpbnggdmVyc2lvbiBzdHJpbmcgdXNlZCB0byBpbnN0YWxsIHRoZSBjaG0gZG9jcyIKICAgICBtYWpvciwgbWlub3IsIG1pY3JvLCBsZXZlbCwgc2VyaWFsID0gc3lzLnZlcnNpb25faW5mbwogICAgIHJlbGVhc2UgPSAnJXMlcycgJSAobWFqb3IsIG1pbm9yKQotICAgIGlmIG1pY3JvOgotICAgICAgICByZWxlYXNlICs9ICclcycgJSAobWljcm8sKQorICAgIHJlbGVhc2UgKz0gJyVzJyAlIChtaWNybywpCiAgICAgaWYgbGV2ZWwgPT0gJ2NhbmRpZGF0ZSc6CiAgICAgICAgIHJlbGVhc2UgKz0gJ3JjJXMnICUgKHNlcmlhbCwpCiAgICAgZWxpZiBsZXZlbCAhPSAnZmluYWwnOgpAQCAtMTIwLDcgKzEyMCw3IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmxpc3Q9Tm9uZSwgZmlsZW5hbWU9Tm9uZSwga2V5PU5vbmUsIHJvb3Q9Tm9uZSk6CiAgICAgICAgIGlmIEVkaXRvcldpbmRvdy5oZWxwX3VybCBpcyBOb25lOgotICAgICAgICAgICAgZG9jaG9tZSA9ICBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgJ0RvYycsICdpbmRleC5odG1sJykKKyAgICAgICAgICAgIGRvY2hvbWUgPSAgb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwgJ0RvYycsICdpbmRleC5odG1sJykKICAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5jb3VudCgnbGludXgnKToKICAgICAgICAgICAgICAgICAjIGxvb2sgZm9yIGh0bWwgZG9jcyBpbiBhIGNvdXBsZSBvZiBzdGFuZGFyZCBwbGFjZXMKICAgICAgICAgICAgICAgICBweXZlciA9ICdweXRob24tZG9jcy0nICsgJyVzLiVzLiVzJyAlIHN5cy52ZXJzaW9uX2luZm9bOjNdCkBAIC0xMzEsMTMgKzEzMSwxMyBAQAogICAgICAgICAgICAgICAgICAgICBkb2Nob21lID0gb3MucGF0aC5qb2luKGJhc2VwYXRoLCBweXZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRG9jJywgJ2luZGV4Lmh0bWwnKQogICAgICAgICAgICAgZWxpZiBzeXMucGxhdGZvcm1bOjNdID09ICd3aW4nOgotICAgICAgICAgICAgICAgIGNobWZpbGUgPSBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgJ0RvYycsCisgICAgICAgICAgICAgICAgY2htZmlsZSA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9wcmVmaXgsICdEb2MnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1B5dGhvbiVzLmNobScgJSBfc3BoaW54X3ZlcnNpb24oKSkKICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShjaG1maWxlKToKICAgICAgICAgICAgICAgICAgICAgZG9jaG9tZSA9IGNobWZpbGUKICAgICAgICAgICAgIGVsaWYgbWFjb3N4U3VwcG9ydC5ydW5uaW5nQXNPU1hBcHAoKToKICAgICAgICAgICAgICAgICAjIGRvY3VtZW50YXRpb24gaXMgc3RvcmVkIGluc2lkZSB0aGUgcHl0aG9uIGZyYW1ld29yawotICAgICAgICAgICAgICAgIGRvY2hvbWUgPSBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwKKyAgICAgICAgICAgICAgICBkb2Nob21lID0gb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICdSZXNvdXJjZXMvRW5nbGlzaC5scHJvai9Eb2N1bWVudGF0aW9uL2luZGV4Lmh0bWwnKQogICAgICAgICAgICAgZG9jaG9tZSA9IG9zLnBhdGgubm9ybXBhdGgoZG9jaG9tZSkKICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGRvY2hvbWUpOgpAQCAtMTA0MSw3ICsxMDQxLDEwIEBACiAKICAgICBkZWYgbG9hZF9leHRlbnNpb24oc2VsZiwgbmFtZSk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIG1vZCA9IF9faW1wb3J0X18obmFtZSwgZ2xvYmFscygpLCBsb2NhbHMoKSwgW10pCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbW9kID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJy4nICsgbmFtZSwgcGFja2FnZT1fX3BhY2thZ2VfXykKKyAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICBwcmludCgiXG5GYWlsZWQgdG8gaW1wb3J0IGV4dGVuc2lvbjogIiwgbmFtZSkKICAgICAgICAgICAgIHJhaXNlCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9IeXBlclBhcnNlci5weSBiL0xpYi9pZGxlbGliL0h5cGVyUGFyc2VyLnB5CmluZGV4IDQ0MTRkZTcuLjRhZjRiMDggMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0h5cGVyUGFyc2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL0h5cGVyUGFyc2VyLnB5CkBAIC0yMzQsNyArMjM0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIyBXZSBjYW4ndCBjb250aW51ZSBhZnRlciBvdGhlciB0eXBlcyBvZiBicmFja2V0cwogICAgICAgICAgICAgICAgICAgICBpZiByYXd0ZXh0W3Bvc10gaW4gIidcIiI6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIFNjYW4gYSBzdHJpbmcgcHJlZml4Ci0gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSBwb3MgPiAwIGFuZCByYXd0ZXh0W3BvcyAtIDFdIGluICJyUmJCIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHBvcyA+IDAgYW5kIHJhd3RleHRbcG9zIC0gMV0gaW4gInJSYkJ1VSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zIC09IDEKICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfaWRlbnRpZmllcl9wb3MgPSBwb3MKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0lPQmluZGluZy5weSBiL0xpYi9pZGxlbGliL0lPQmluZGluZy5weQppbmRleCBjNGYxNGVmLi45ZmUwNzAxIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9JT0JpbmRpbmcucHkKKysrIGIvTGliL2lkbGVsaWIvSU9CaW5kaW5nLnB5CkBAIC0xLDYgKzEsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgdHlwZXMKLWltcG9ydCBwaXBlcworaW1wb3J0IHNobGV4CiBpbXBvcnQgc3lzCiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgdGVtcGZpbGUKQEAgLTQ1OSw3ICs0NTksNyBAQAogICAgICAgICBlbHNlOiAjbm8gcHJpbnRpbmcgZm9yIHRoaXMgcGxhdGZvcm0KICAgICAgICAgICAgIHByaW50UGxhdGZvcm0gPSBGYWxzZQogICAgICAgICBpZiBwcmludFBsYXRmb3JtOiAgI3dlIGNhbiB0cnkgdG8gcHJpbnQgZm9yIHRoaXMgcGxhdGZvcm0KLSAgICAgICAgICAgIGNvbW1hbmQgPSBjb21tYW5kICUgcGlwZXMucXVvdGUoZmlsZW5hbWUpCisgICAgICAgICAgICBjb21tYW5kID0gY29tbWFuZCAlIHNobGV4LnF1b3RlKGZpbGVuYW1lKQogICAgICAgICAgICAgcGlwZSA9IG9zLnBvcGVuKGNvbW1hbmQsICJyIikKICAgICAgICAgICAgICMgdGhpbmdzIGNhbiBnZXQgdWdseSBvbiBOVCBpZiB0aGVyZSBpcyBubyBwcmludGVyIGF2YWlsYWJsZS4KICAgICAgICAgICAgIG91dHB1dCA9IHBpcGUucmVhZCgpLnN0cmlwKCkKQEAgLTQ4Niw2ICs0ODYsOCBAQAogICAgICAgICAoIkFsbCBmaWxlcyIsICIqIiksCiAgICAgICAgIF0KIAorICAgIGRlZmF1bHRleHRlbnNpb24gPSAnLnB5JyBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgZWxzZSAnJworCiAgICAgZGVmIGFza29wZW5maWxlKHNlbGYpOgogICAgICAgICBkaXIsIGJhc2UgPSBzZWxmLmRlZmF1bHRmaWxlbmFtZSgib3BlbiIpCiAgICAgICAgIGlmIG5vdCBzZWxmLm9wZW5kaWFsb2c6CkBAIC01MDksOCArNTExLDEwIEBACiAgICAgZGVmIGFza3NhdmVmaWxlKHNlbGYpOgogICAgICAgICBkaXIsIGJhc2UgPSBzZWxmLmRlZmF1bHRmaWxlbmFtZSgic2F2ZSIpCiAgICAgICAgIGlmIG5vdCBzZWxmLnNhdmVkaWFsb2c6Ci0gICAgICAgICAgICBzZWxmLnNhdmVkaWFsb2cgPSB0a0ZpbGVEaWFsb2cuU2F2ZUFzKG1hc3Rlcj1zZWxmLnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGV0eXBlcz1zZWxmLmZpbGV0eXBlcykKKyAgICAgICAgICAgIHNlbGYuc2F2ZWRpYWxvZyA9IHRrRmlsZURpYWxvZy5TYXZlQXMoCisgICAgICAgICAgICAgICAgICAgIG1hc3Rlcj1zZWxmLnRleHQsCisgICAgICAgICAgICAgICAgICAgIGZpbGV0eXBlcz1zZWxmLmZpbGV0eXBlcywKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdGV4dGVuc2lvbj1zZWxmLmRlZmF1bHRleHRlbnNpb24pCiAgICAgICAgIGZpbGVuYW1lID0gc2VsZi5zYXZlZGlhbG9nLnNob3coaW5pdGlhbGRpcj1kaXIsIGluaXRpYWxmaWxlPWJhc2UpCiAgICAgICAgIHJldHVybiBmaWxlbmFtZQogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9ORVdTLnR4dCBiL0xpYi9pZGxlbGliL05FV1MudHh0CmluZGV4IGYyMzRiNjQuLmY2ZTg5MTdkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ORVdTLnR4dAorKysgYi9MaWIvaWRsZWxpYi9ORVdTLnR4dApAQCAtMSwxMCArMSwyMyBAQAotV2hhdCdzIE5ldyBpbiBJRExFIDMuMi40PworV2hhdCdzIE5ldyBpbiBJRExFIDMuMy4xPworPT09PT09PT09PT09PT09PT09PT09PT09PQorCistIElzc3VlICMxNjIyNjogRml4IElETEUgUGF0aCBCcm93c2VyIGNyYXNoLgorICAoUGF0Y2ggYnkgUm9nZXIgU2Vyd3kpCisKKy0gSXNzdWUgIzE1ODUzOiBQcmV2ZW50IElETEUgY3Jhc2ggb24gT1MgWCB3aGVuIG9wZW5pbmcgUHJlZmVyZW5jZXMgbWVudQorICB3aXRoIGNlcnRhaW4gdmVyc2lvbnMgb2YgVGsgOC41LiAgSW5pdGlhbCBwYXRjaCBieSBLZXZpbiBXYWx6ZXIuCisKKworV2hhdCdzIE5ldyBpbiBJRExFIDMuMy4wPwogPT09PT09PT09PT09PT09PT09PT09PT09PQogCiAtIElzc3VlICM3MTYzOiBQcm9wYWdhdGUgcmV0dXJuIHZhbHVlIG9mIHN5cy5zdGRvdXQud3JpdGUuCiAKIC0gSXNzdWUgIzE1MzE4OiBQcmV2ZW50IHdyaXRpbmcgdG8gc3lzLnN0ZGluLgogCistIElzc3VlICM0ODMyOiBNb2RpZnkgSURMRSB0byBzYXZlIGZpbGVzIHdpdGggLnB5IGV4dGVuc2lvbiBieQorICBkZWZhdWx0IG9uIFdpbmRvd3MgYW5kIE9TIFggKFRrIDguNSkgYXMgaXQgYWxyZWFkeSBkb2VzIHdpdGggWDExIFRrLgorCiAtIElzc3VlICMxMzUzMiwgIzE1MzE5OiBDaGVjayB0aGF0IGFyZ3VtZW50cyB0byBzeXMuc3Rkb3V0LndyaXRlIGFyZSBzdHJpbmdzLgogCiAtIElzc3VlICMgMTI1MTA6IEF0dGVtcHQgdG8gZ2V0IGNlcnRhaW4gdG9vbCB0aXBzIG5vIGxvbmdlciBjcmFzaGVzIElETEUuCkBAIC0xOCwxNSArMzEsMTAgQEAKIC0gSXNzdWUgIzE0OTM3OiBQZXJmb3JtIGF1dG8tY29tcGxldGlvbiBvZiBmaWxlbmFtZXMgaW4gc3RyaW5ncyBldmVuIGZvcgogICBub24tQVNDSUkgZmlsZW5hbWVzLiBMaWtld2lzZSBmb3IgaWRlbnRpZmllcnMuCiAKLS0gSXNzdWUgIzE0MDE4OiBVcGRhdGUgY2hlY2tzIGZvciB1bnN0YWJsZSBzeXN0ZW0gVGNsL1RrIHZlcnNpb25zIG9uIE9TIFgKLSAgdG8gaW5jbHVkZSB2ZXJzaW9ucyBzaGlwcGVkIHdpdGggT1MgWCAxMC43IGFuZCAxMC44IGluIGFkZGl0aW9uIHRvIDEwLjYuCistIElzc3VlICM4NTE1OiBTZXQgX19maWxlX18gd2hlbiBydW4gZmlsZSBpbiBJRExFLgorICBJbml0aWFsIHBhdGNoIGJ5IEJydWNlIEZyZWRlcmlrc2VuLgogCi0tIElzc3VlICMxNTg1MzogUHJldmVudCBJRExFIGNyYXNoIG9uIE9TIFggd2hlbiBvcGVuaW5nIFByZWZlcmVuY2VzIG1lbnUKLSAgd2l0aCBjZXJ0YWluIHZlcnNpb25zIG9mIFRrIDguNS4gIEluaXRpYWwgcGF0Y2ggYnkgS2V2aW4gV2FsemVyLgotCi0KLVdoYXQncyBOZXcgaW4gSURMRSAzLjIuMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0gSURMRSBjYW4gYmUgbGF1bmNoZWQgYXMgYHB5dGhvbiAtbSBpZGxlbGliYAogCiAtIElzc3VlICMxNDQwOTogSURMRSBub3cgcHJvcGVybHkgZXhlY3V0ZXMgY29tbWFuZHMgaW4gdGhlIFNoZWxsIHdpbmRvdwogICB3aGVuIGl0IGNhbm5vdCByZWFkIHRoZSBub3JtYWwgY29uZmlnIGZpbGVzIG9uIHN0YXJ0dXAgYW5kCkBAIC0zNiw2ICs0NCw5IEBACiAtIElzc3VlICMzNTczOiBJRExFIGhhbmdzIHdoZW4gcGFzc2luZyBpbnZhbGlkIGNvbW1hbmQgbGluZSBhcmdzCiAgIChkaXJlY3RvcnkoaWVzKSBpbnN0ZWFkIG9mIGZpbGUocykpLgogCistIElzc3VlICMxNDAxODogVXBkYXRlIGNoZWNrcyBmb3IgdW5zdGFibGUgc3lzdGVtIFRjbC9UayB2ZXJzaW9ucyBvbiBPUyBYCisgIHRvIGluY2x1ZGUgdmVyc2lvbnMgc2hpcHBlZCB3aXRoIE9TIFggMTAuNyBhbmQgMTAuOCBpbiBhZGRpdGlvbiB0byAxMC42LgorCiAKIFdoYXQncyBOZXcgaW4gSURMRSAzLjIuMT8KID09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1BhdGhCcm93c2VyLnB5IGIvTGliL2lkbGVsaWIvUGF0aEJyb3dzZXIucHkKaW5kZXggZDg4YTQ4ZS4uNTViZjFhYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUGF0aEJyb3dzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvUGF0aEJyb3dzZXIucHkKQEAgLTEsNiArMSw3IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CiAKIGZyb20gaWRsZWxpYi5UcmVlV2lkZ2V0IGltcG9ydCBUcmVlSXRlbQogZnJvbSBpZGxlbGliLkNsYXNzQnJvd3NlciBpbXBvcnQgQ2xhc3NCcm93c2VyLCBNb2R1bGVCcm93c2VyVHJlZUl0ZW0KQEAgLTcwLDkgKzcxLDExIEBACiAKICAgICBkZWYgbGlzdG1vZHVsZXMoc2VsZiwgYWxsbmFtZXMpOgogICAgICAgICBtb2R1bGVzID0ge30KLSAgICAgICAgc3VmZml4ZXMgPSBpbXAuZ2V0X3N1ZmZpeGVzKCkKKyAgICAgICAgc3VmZml4ZXMgPSBpbXBvcnRsaWIubWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFU1s6XQorICAgICAgICBzdWZmaXhlcyArPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFU1s6XQorICAgICAgICBzdWZmaXhlcyArPSBpbXBvcnRsaWIubWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTWzpdCiAgICAgICAgIHNvcnRlZCA9IFtdCi0gICAgICAgIGZvciBzdWZmLCBtb2RlLCBmbGFnIGluIHN1ZmZpeGVzOgorICAgICAgICBmb3Igc3VmZiBpbiBzdWZmaXhlczoKICAgICAgICAgICAgIGkgPSAtbGVuKHN1ZmYpCiAgICAgICAgICAgICBmb3IgbmFtZSBpbiBhbGxuYW1lc1s6XToKICAgICAgICAgICAgICAgICBub3JtZWRfbmFtZSA9IG9zLnBhdGgubm9ybWNhc2UobmFtZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1B5U2hlbGwucHkgYi9MaWIvaWRsZWxpYi9QeVNoZWxsLnB5CmluZGV4IDg2NTQ3MmUuLjM4ZWQzYWYgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1B5U2hlbGwucHkKKysrIGIvTGliL2lkbGVsaWIvUHlTaGVsbC5weQpAQCAtNDgxLDYgKzQ4MSwxMCBAQAogCiAgICAgZGVmIGtpbGxfc3VicHJvY2VzcyhzZWxmKToKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5ycGNjbHQubGlzdGVuaW5nX3NvY2suY2xvc2UoKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6ICAjIG5vIHNvY2tldAorICAgICAgICAgICAgcGFzcworICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnJwY2NsdC5jbG9zZSgpCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjogICMgbm8gc29ja2V0CiAgICAgICAgICAgICBwYXNzCkBAIC0xMDA5LDYgKzEwMTMsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbm9zdWIgPSAiPT09PSBObyBTdWJwcm9jZXNzID09PT0iCisgICAgICAgICAgICBzeXMuZGlzcGxheWhvb2sgPSBycGMuZGlzcGxheWhvb2sKKwogICAgICAgICBzZWxmLndyaXRlKCJQeXRob24gJXMgb24gJXNcbiVzXG4lcyIgJQogICAgICAgICAgICAgICAgICAgIChzeXMudmVyc2lvbiwgc3lzLnBsYXRmb3JtLCBzZWxmLkNPUFlSSUdIVCwgbm9zdWIpKQogICAgICAgICBzZWxmLnNob3dwcm9tcHQoKQpAQCAtMTIzMSw2ICsxMjM3LDE2IEBACiAgICAgICAgIHNlbGYuc2V0X2xpbmVfYW5kX2NvbHVtbigpCiAKICAgICBkZWYgd3JpdGUoc2VsZiwgcywgdGFncz0oKSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uocywgc3RyKSBhbmQgbGVuKHMpIGFuZCBtYXgocykgPiAnXHVmZmZmJzoKKyAgICAgICAgICAgICMgVGsgZG9lc24ndCBzdXBwb3J0IG91dHB1dHRpbmcgbm9uLUJNUCBjaGFyYWN0ZXJzCisgICAgICAgICAgICAjIExldCdzIGFzc3VtZSB3aGF0IHByaW50ZWQgc3RyaW5nIGlzIG5vdCB2ZXJ5IGxvbmcsCisgICAgICAgICAgICAjIGZpbmQgZmlyc3Qgbm9uLUJNUCBjaGFyYWN0ZXIgYW5kIGNvbnN0cnVjdCBpbmZvcm1hdGl2ZQorICAgICAgICAgICAgIyBVbmljb2RlRW5jb2RlRXJyb3IgZXhjZXB0aW9uLgorICAgICAgICAgICAgZm9yIHN0YXJ0LCBjaGFyIGluIGVudW1lcmF0ZShzKToKKyAgICAgICAgICAgICAgICBpZiBjaGFyID4gJ1x1ZmZmZic6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICByYWlzZSBVbmljb2RlRW5jb2RlRXJyb3IoIlVDUy0yIiwgY2hhciwgc3RhcnQsIHN0YXJ0KzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05vbi1CTVAgY2hhcmFjdGVyIG5vdCBzdXBwb3J0ZWQgaW4gVGsnKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnRleHQubWFya19ncmF2aXR5KCJpb21hcmsiLCAicmlnaHQiKQogICAgICAgICAgICAgY291bnQgPSBPdXRwdXRXaW5kb3cud3JpdGUoc2VsZiwgcywgdGFncywgImlvbWFyayIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9TY3JpcHRCaW5kaW5nLnB5IGIvTGliL2lkbGVsaWIvU2NyaXB0QmluZGluZy5weQppbmRleCAxOGNlOTY1Li41MjhhZGY2IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9TY3JpcHRCaW5kaW5nLnB5CisrKyBiL0xpYi9pZGxlbGliL1NjcmlwdEJpbmRpbmcucHkKQEAgLTE1MCwxNiArMTUwLDE2IEBACiAgICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUoZmlsZW5hbWUpCiAgICAgICAgICMgWFhYIFRvbyBvZnRlbiB0aGlzIGRpc2NhcmRzIGFyZ3VtZW50cyB0aGUgdXNlciBqdXN0IHNldC4uLgogICAgICAgICBpbnRlcnAucnVuY29tbWFuZCgiIiJpZiAxOgotICAgICAgICAgICAgX2ZpbGVuYW1lID0gJXIKKyAgICAgICAgICAgIF9fZmlsZV9fID0ge2ZpbGVuYW1lIXJ9CiAgICAgICAgICAgICBpbXBvcnQgc3lzIGFzIF9zeXMKICAgICAgICAgICAgIGZyb20gb3MucGF0aCBpbXBvcnQgYmFzZW5hbWUgYXMgX2Jhc2VuYW1lCiAgICAgICAgICAgICBpZiAobm90IF9zeXMuYXJndiBvcgotICAgICAgICAgICAgICAgIF9iYXNlbmFtZShfc3lzLmFyZ3ZbMF0pICE9IF9iYXNlbmFtZShfZmlsZW5hbWUpKToKLSAgICAgICAgICAgICAgICBfc3lzLmFyZ3YgPSBbX2ZpbGVuYW1lXQorICAgICAgICAgICAgICAgIF9iYXNlbmFtZShfc3lzLmFyZ3ZbMF0pICE9IF9iYXNlbmFtZShfX2ZpbGVfXykpOgorICAgICAgICAgICAgICAgIF9zeXMuYXJndiA9IFtfX2ZpbGVfX10KICAgICAgICAgICAgIGltcG9ydCBvcyBhcyBfb3MKLSAgICAgICAgICAgIF9vcy5jaGRpciglcikKLSAgICAgICAgICAgIGRlbCBfZmlsZW5hbWUsIF9zeXMsIF9iYXNlbmFtZSwgX29zCi0gICAgICAgICAgICBcbiIiIiAlIChmaWxlbmFtZSwgZGlybmFtZSkpCisgICAgICAgICAgICBfb3MuY2hkaXIoe2Rpcm5hbWUhcn0pCisgICAgICAgICAgICBkZWwgX3N5cywgX2Jhc2VuYW1lLCBfb3MKKyAgICAgICAgICAgIFxuIiIiLmZvcm1hdChmaWxlbmFtZT1maWxlbmFtZSwgZGlybmFtZT1kaXJuYW1lKSkKICAgICAgICAgaW50ZXJwLnByZXBlbmRfc3lzcGF0aChmaWxlbmFtZSkKICAgICAgICAgIyBYWFggS0JLIDAzSnVsMDQgV2hlbiBydW4gdy9vIHN1YnByb2Nlc3MsIHJ1bnRpbWUgd2FybmluZ3Mgc3RpbGwKICAgICAgICAgIyAgICAgICAgIGdvIHRvIF9fc3RkZXJyX18uICBXaXRoIHN1YnByb2Nlc3MsIHRoZXkgZ28gdG8gdGhlIHNoZWxsLgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvX19tYWluX18ucHkgYi9MaWIvaWRsZWxpYi9fX21haW5fXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjY2ZjJmCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvX19tYWluX18ucHkKQEAgLTAsMCArMSw5IEBACisiIiIKK0lETEUgbWFpbiBlbnRyeSBwb2ludAorCitSdW4gSURMRSBhcyBweXRob24gLW0gaWRsZWxpYgorIiIiCisKKworaW1wb3J0IGlkbGVsaWIuUHlTaGVsbAoraWRsZWxpYi5QeVNoZWxsLm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvY29uZmlnSGFuZGxlci5weSBiL0xpYi9pZGxlbGliL2NvbmZpZ0hhbmRsZXIucHkKaW5kZXggN2ZhNDgxZC4uNWJmMjY2OCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvY29uZmlnSGFuZGxlci5weQorKysgYi9MaWIvaWRsZWxpYi9jb25maWdIYW5kbGVyLnB5CkBAIC0xNDUsNyArMTQ1LDggQEAKICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICAgICAgICAgIG9zLnVubGluayhmbmFtZSkKICAgICAgICAgICAgICAgICBjZmdGaWxlID0gb3BlbihmbmFtZSwgJ3cnKQotICAgICAgICAgICAgc2VsZi53cml0ZShjZmdGaWxlKQorICAgICAgICAgICAgd2l0aCBjZmdGaWxlOgorICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoY2ZnRmlsZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuUmVtb3ZlRmlsZSgpCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGV2ZXIucHkgYi9MaWIvaWRsZWxpYi9pZGxldmVyLnB5CmluZGV4IDE3NDU1ZGIuLjhkODMxN2QgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGV2ZXIucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZXZlci5weQpAQCAtMSArMSBAQAotSURMRV9WRVJTSU9OID0gIjMuMi4zIgorSURMRV9WRVJTSU9OID0gIjMuMy4wIgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvbWFjb3N4U3VwcG9ydC5weSBiL0xpYi9pZGxlbGliL21hY29zeFN1cHBvcnQucHkKaW5kZXggOTY5MDQ0Mi4uNjcwNjlmYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvbWFjb3N4U3VwcG9ydC5weQorKysgYi9MaWIvaWRsZWxpYi9tYWNvc3hTdXBwb3J0LnB5CkBAIC0xMiwxMiArMTIsMjIgQEAKIGRlZiBydW5uaW5nQXNPU1hBcHAoKToKICAgICAiIiIKICAgICBSZXR1cm5zIFRydWUgaWYgUHl0aG9uIGlzIHJ1bm5pbmcgZnJvbSB3aXRoaW4gYW4gYXBwIG9uIE9TWC4KLSAgICBJZiBzbywgYXNzdW1lIHRoYXQgUHl0aG9uIHdhcyBidWlsdCB3aXRoIEFxdWEgVGNsL1RrIHJhdGhlciB0aGFuCi0gICAgWDExIFRjbC9Uay4KKyAgICBJZiBzbywgdGhlIHZhcmlvdXMgT1MgWCBjdXN0b21pemF0aW9ucyB3aWxsIGJlIHRyaWdnZXJlZCBsYXRlciAobWVudQorICAgIGZpeHVwLCBldCBhbCkuICAoT3JpZ2luYWxseSwgdGhpcyB0ZXN0IHdhcyBzdXBwb3NlZCB0byBjb25kaXRpb24KKyAgICBiZWhhdmlvciBvbiB3aGV0aGVyIElETEUgd2FzIHJ1bm5pbmcgdW5kZXIgQXF1YSBUayByYXRoZXIgdGhhbgorICAgIHVuZGVyIFgxMSBUayBidXQgdGhhdCBkb2VzIG5vdCB3b3JrIHNpbmNlIGEgZnJhbWV3b3JrIGJ1aWxkCisgICAgY291bGQgYmUgbGlua2VkIHdpdGggWDExLiAgRm9yIHNldmVyYWwgcmVsZWFzZXMsIHRoaXMgdGVzdCBhY3R1YWxseQorICAgIGRpZmZlcmVudGlhdGVzIGJldHdlZW4gd2hldGhlciBJRExFIGlzIHJ1bm5pbmcgZnJvbSBhIGZyYW1ld29yayBvcgorICAgIG5vdC4gIEFzIGEgZnV0dXJlIGVuaGFuY2VtZW50LCBpdCBzaG91bGQgYmUgY29uc2lkZXJlZCB3aGV0aGVyIHRoZXJlCisgICAgc2hvdWxkIGJlIGEgZGlmZmVyZW5jZSBiYXNlZCBvbiBmcmFtZXdvcmsgYW5kIGFueSBuZWVkZWQgWDExIGFkYXB0aW9ucworICAgIHNob3VsZCBiZSBtYWRlIGRlcGVuZGVudCBvbiBhIG5ldyBmdW5jdGlvbiB0aGF0IGFjdHVhbGx5IHRlc3RzIGZvciBYMTEuKQogICAgICIiIgogICAgIGdsb2JhbCBfYXBwYnVuZGxlCiAgICAgaWYgX2FwcGJ1bmRsZSBpcyBOb25lOgotICAgICAgICBfYXBwYnVuZGxlID0gKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgJy5hcHAnIGluIHN5cy5leGVjdXRhYmxlKQorICAgICAgICBfYXBwYnVuZGxlID0gc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nCisgICAgICAgIGlmIF9hcHBidW5kbGU6CisgICAgICAgICAgICBpbXBvcnQgc3lzY29uZmlnCisgICAgICAgICAgICBfYXBwYnVuZGxlID0gYm9vbChzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1BZVEhPTkZSQU1FV09SSycpKQogICAgIHJldHVybiBfYXBwYnVuZGxlCiAKIF9jYXJib25hcXVhdGsgPSBOb25lCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9ycGMucHkgYi9MaWIvaWRsZWxpYi9ycGMucHkKaW5kZXggMjllNjg3ZS4uYTBlYjFiMyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvcnBjLnB5CisrKyBiL0xpYi9pZGxlbGliL3JwYy5weQpAQCAtNDAsNiArNDAsNyBAQAogaW1wb3J0IGNvcHlyZWcKIGltcG9ydCB0eXBlcwogaW1wb3J0IG1hcnNoYWwKK2ltcG9ydCBidWlsdGlucwogCiAKIGRlZiB1bnBpY2tsZV9jb2RlKG1zKToKQEAgLTE5Niw4ICsxOTcsMTIgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gKCJFUlJPUiIsICJVbnN1cHBvcnRlZCBtZXNzYWdlIHR5cGU6ICVzIiAlIGhvdykKICAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQ6CiAgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgogICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHJldHVybiAoIkNBTExFWEMiLCBleCkKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgbXNnID0gIioqKiBJbnRlcm5hbCBFcnJvcjogcnBjLnB5OlNvY2tldElPLmxvY2FsY2FsbCgpXG5cbiJcCiAgICAgICAgICAgICAgICAgICAiIE9iamVjdDogJXMgXG4gTWV0aG9kOiAlcyBcbiBBcmdzOiAlc1xuIgpAQCAtMjU3LDYgKzI2Miw5IEBACiAgICAgICAgIGlmIGhvdyA9PSAiRVJST1IiOgogICAgICAgICAgICAgc2VsZi5kZWJ1ZygiZGVjb2RlcmVzcG9uc2U6IEludGVybmFsIEVSUk9SOiIsIHdoYXQpCiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3Iod2hhdCkKKyAgICAgICAgaWYgaG93ID09ICJDQUxMRVhDIjoKKyAgICAgICAgICAgIHNlbGYuZGVidWcoImRlY29kZXJlc3BvbnNlOiBDYWxsIEV4Y2VwdGlvbjoiLCB3aGF0KQorICAgICAgICAgICAgcmFpc2Ugd2hhdAogICAgICAgICByYWlzZSBTeXN0ZW1FcnJvcihob3csIHdoYXQpCiAKICAgICBkZWYgZGVjb2RlX2ludGVycnVwdGhvb2soc2VsZik6CkBAIC01OTYsMyArNjA0LDIxIEBACiAKICMgWFhYIEtCSyAwOVNlcDAzICBXZSBuZWVkIGEgcHJvcGVyIHVuaXQgdGVzdCBmb3IgdGhpcyBtb2R1bGUuICBQcmV2aW91c2x5CiAjICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgdGVzdCBjb2RlIHdhcyByZW1vdmVkIGF0IFJldiAxLjI3IChyMzQwOTgpLgorCitkZWYgZGlzcGxheWhvb2sodmFsdWUpOgorICAgICIiIk92ZXJyaWRlIHN0YW5kYXJkIGRpc3BsYXkgaG9vayB0byB1c2Ugbm9uLWxvY2FsZSBlbmNvZGluZyIiIgorICAgIGlmIHZhbHVlIGlzIE5vbmU6CisgICAgICAgIHJldHVybgorICAgICMgU2V0ICdfJyB0byBOb25lIHRvIGF2b2lkIHJlY3Vyc2lvbgorICAgIGJ1aWx0aW5zLl8gPSBOb25lCisgICAgdGV4dCA9IHJlcHIodmFsdWUpCisgICAgdHJ5OgorICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKHRleHQpCisgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgIyBsZXQncyB1c2UgYXNjaWkgd2hpbGUgdXRmOC1ibXAgY29kZWMgZG9lc24ndCBwcmVzZW50CisgICAgICAgIGVuY29kaW5nID0gJ2FzY2lpJworICAgICAgICBieXRlcyA9IHRleHQuZW5jb2RlKGVuY29kaW5nLCAnYmFja3NsYXNocmVwbGFjZScpCisgICAgICAgIHRleHQgPSBieXRlcy5kZWNvZGUoZW5jb2RpbmcsICdzdHJpY3QnKQorICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKHRleHQpCisgICAgc3lzLnN0ZG91dC53cml0ZSgiXG4iKQorICAgIGJ1aWx0aW5zLl8gPSB2YWx1ZQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvcnVuLnB5IGIvTGliL2lkbGVsaWIvcnVuLnB5CmluZGV4IDdkMDk0MWUuLmQxMDU5MTIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL3J1bi5weQorKysgYi9MaWIvaWRsZWxpYi9ydW4ucHkKQEAgLTcsNiArNyw3IEBACiBpbXBvcnQgX3RocmVhZCBhcyB0aHJlYWQKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCBxdWV1ZQoraW1wb3J0IHRraW50ZXIKIAogZnJvbSBpZGxlbGliIGltcG9ydCBDYWxsVGlwcwogZnJvbSBpZGxlbGliIGltcG9ydCBBdXRvQ29tcGxldGUKQEAgLTQxLDYgKzQyLDE3IEBACiAgICAgICAgIHJldHVybiBzCiAgICAgd2FybmluZ3MuZm9ybWF0d2FybmluZyA9IGlkbGVfZm9ybWF0d2FybmluZ19zdWJwcm9jCiAKKwordGNsID0gdGtpbnRlci5UY2woKQorCisKK2RlZiBoYW5kbGVfdGtfZXZlbnRzKHRjbD10Y2wpOgorICAgICIiIlByb2Nlc3MgYW55IHRrIGV2ZW50cyB0aGF0IGFyZSByZWFkeSB0byBiZSBkaXNwYXRjaGVkIGlmIHRraW50ZXIKKyAgICBoYXMgYmVlbiBpbXBvcnRlZCwgYSB0Y2wgaW50ZXJwcmV0ZXIgaGFzIGJlZW4gY3JlYXRlZCBhbmQgdGsgaGFzIGJlZW4KKyAgICBsb2FkZWQuIiIiCisgICAgdGNsLmV2YWwoInVwZGF0ZSIpCisKKwogIyBUaHJlYWQgc2hhcmVkIGdsb2JhbHM6IEVzdGFibGlzaCBhIHF1ZXVlIGJldHdlZW4gYSBzdWJ0aHJlYWQgKHdoaWNoIGhhbmRsZXMKICMgdGhlIHNvY2tldCkgYW5kIHRoZSBtYWluIHRocmVhZCAod2hpY2ggcnVucyB1c2VyIGNvZGUpLCBwbHVzIGdsb2JhbAogIyBjb21wbGV0aW9uLCBleGl0IGFuZCBpbnRlcnJ1cHRhYmxlICh0aGUgbWFpbiB0aHJlYWQpIGZsYWdzOgpAQCAtOTYsNiArMTA4LDcgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZXEsIHJlcXVlc3QgPSBycGMucmVxdWVzdF9xdWV1ZS5nZXQoYmxvY2s9VHJ1ZSwgdGltZW91dD0wLjA1KQogICAgICAgICAgICAgZXhjZXB0IHF1ZXVlLkVtcHR5OgorICAgICAgICAgICAgICAgIGhhbmRsZV90a19ldmVudHMoKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBtZXRob2QsIGFyZ3MsIGt3YXJncyA9IHJlcXVlc3QKICAgICAgICAgICAgIHJldCA9IG1ldGhvZCgqYXJncywgKiprd2FyZ3MpCkBAIC0xNzAsNyArMTgzLDkgQEAKICAgICAgICAgICAgIHByaW50X2V4Yyh0eXBlKGNhdXNlKSwgY2F1c2UsIGNhdXNlLl9fdHJhY2ViYWNrX18pCiAgICAgICAgICAgICBwcmludCgiXG5UaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlICIKICAgICAgICAgICAgICAgICAgICJvZiB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjpcbiIsIGZpbGU9ZWZpbGUpCi0gICAgICAgIGVsaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY29udGV4dCBub3QgaW4gc2VlbjoKKyAgICAgICAgZWxpZiAoY29udGV4dCBpcyBub3QgTm9uZSBhbmQKKyAgICAgICAgICAgICAgbm90IGV4Yy5fX3N1cHByZXNzX2NvbnRleHRfXyBhbmQKKyAgICAgICAgICAgICAgY29udGV4dCBub3QgaW4gc2Vlbik6CiAgICAgICAgICAgICBwcmludF9leGModHlwZShjb250ZXh0KSwgY29udGV4dCwgY29udGV4dC5fX3RyYWNlYmFja19fKQogICAgICAgICAgICAgcHJpbnQoIlxuRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sICIKICAgICAgICAgICAgICAgICAgICJhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDpcbiIsIGZpbGU9ZWZpbGUpCkBAIC0yNzgsNiArMjkzLDcgQEAKICAgICAgICAgc3lzLnN0ZGVyciA9IFB5U2hlbGwuUHNldWRvT3V0cHV0RmlsZShzZWxmLmNvbnNvbGUsICJzdGRlcnIiLAogICAgICAgICAgICAgICAgIElPQmluZGluZy5lbmNvZGluZykKIAorICAgICAgICBzeXMuZGlzcGxheWhvb2sgPSBycGMuZGlzcGxheWhvb2sKICAgICAgICAgIyBwYWdlIGhlbHAoKSB0ZXh0IHRvIHNoZWxsLgogICAgICAgICBpbXBvcnQgcHlkb2MgIyBpbXBvcnQgbXVzdCBiZSBkb25lIGhlcmUgdG8gY2FwdHVyZSBpL28gYmluZGluZwogICAgICAgICBweWRvYy5wYWdlciA9IHB5ZG9jLnBsYWlucGFnZXIKZGlmZiAtLWdpdCBhL0xpYi9pbWFwbGliLnB5IGIvTGliL2ltYXBsaWIucHkKaW5kZXggMDBhMTdmYi4uZjhjN2ZmZCAxMDA2NDQKLS0tIGEvTGliL2ltYXBsaWIucHkKKysrIGIvTGliL2ltYXBsaWIucHkKQEAgLTIzLDcgKzIzLDcgQEAKIF9fdmVyc2lvbl9fID0gIjIuNTgiCiAKIGltcG9ydCBiaW5hc2NpaSwgZXJybm8sIHJhbmRvbSwgcmUsIHNvY2tldCwgc3VicHJvY2Vzcywgc3lzLCB0aW1lLCBjYWxlbmRhcgotCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZXpvbmUsIHRpbWVkZWx0YQogdHJ5OgogICAgIGltcG9ydCBzc2wKICAgICBIQVZFX1NTTCA9IFRydWUKQEAgLTI0OSwxNSArMjQ5LDcgQEAKIAogICAgIGRlZiByZWFkKHNlbGYsIHNpemUpOgogICAgICAgICAiIiJSZWFkICdzaXplJyBieXRlcyBmcm9tIHJlbW90ZS4iIiIKLSAgICAgICAgY2h1bmtzID0gW10KLSAgICAgICAgcmVhZCA9IDAKLSAgICAgICAgd2hpbGUgcmVhZCA8IHNpemU6Ci0gICAgICAgICAgICBkYXRhID0gc2VsZi5maWxlLnJlYWQobWluKHNpemUtcmVhZCwgNDA5NikpCi0gICAgICAgICAgICBpZiBub3QgZGF0YToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgcmVhZCArPSBsZW4oZGF0YSkKLSAgICAgICAgICAgIGNodW5rcy5hcHBlbmQoZGF0YSkKLSAgICAgICAgcmV0dXJuIGInJy5qb2luKGNodW5rcykKKyAgICAgICAgcmV0dXJuIHNlbGYuZmlsZS5yZWFkKHNpemUpCiAKIAogICAgIGRlZiByZWFkbGluZShzZWxmKToKQEAgLTExNzksMjUgKzExNzEsNDAgQEAKIAogICAgICAgICAiIiJJTUFQNCBjbGllbnQgY2xhc3Mgb3ZlciBTU0wgY29ubmVjdGlvbgogCi0gICAgICAgIEluc3RhbnRpYXRlIHdpdGg6IElNQVA0X1NTTChbaG9zdFssIHBvcnRbLCBrZXlmaWxlWywgY2VydGZpbGVdXV1dKQorICAgICAgICBJbnN0YW50aWF0ZSB3aXRoOiBJTUFQNF9TU0woW2hvc3RbLCBwb3J0Wywga2V5ZmlsZVssIGNlcnRmaWxlWywgc3NsX2NvbnRleHRdXV1dXSkKIAogICAgICAgICAgICAgICAgIGhvc3QgLSBob3N0J3MgbmFtZSAoZGVmYXVsdDogbG9jYWxob3N0KTsKLSAgICAgICAgICAgICAgICBwb3J0IC0gcG9ydCBudW1iZXIgKGRlZmF1bHQ6IHN0YW5kYXJkIElNQVA0IFNTTCBwb3J0KS4KKyAgICAgICAgICAgICAgICBwb3J0IC0gcG9ydCBudW1iZXIgKGRlZmF1bHQ6IHN0YW5kYXJkIElNQVA0IFNTTCBwb3J0KTsKICAgICAgICAgICAgICAgICBrZXlmaWxlIC0gUEVNIGZvcm1hdHRlZCBmaWxlIHRoYXQgY29udGFpbnMgeW91ciBwcml2YXRlIGtleSAoZGVmYXVsdDogTm9uZSk7CiAgICAgICAgICAgICAgICAgY2VydGZpbGUgLSBQRU0gZm9ybWF0dGVkIGNlcnRpZmljYXRlIGNoYWluIGZpbGUgKGRlZmF1bHQ6IE5vbmUpOworICAgICAgICAgICAgICAgIHNzbF9jb250ZXh0IC0gYSBTU0xDb250ZXh0IG9iamVjdCB0aGF0IGNvbnRhaW5zIHlvdXIgY2VydGlmaWNhdGUgY2hhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBwcml2YXRlIGtleSAoZGVmYXVsdDogTm9uZSkKKyAgICAgICAgICAgICAgICBOb3RlOiBpZiBzc2xfY29udGV4dCBpcyBwcm92aWRlZCwgdGhlbiBwYXJhbWV0ZXJzIGtleWZpbGUgb3IKKyAgICAgICAgICAgICAgICBjZXJ0ZmlsZSBzaG91bGQgbm90IGJlIHNldCBvdGhlcndpc2UgVmFsdWVFcnJvciBpcyByYWlzZWQuCiAKICAgICAgICAgZm9yIG1vcmUgZG9jdW1lbnRhdGlvbiBzZWUgdGhlIGRvY3N0cmluZyBvZiB0aGUgcGFyZW50IGNsYXNzIElNQVA0LgogICAgICAgICAiIiIKIAogCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0ID0gJycsIHBvcnQgPSBJTUFQNF9TU0xfUE9SVCwga2V5ZmlsZSA9IE5vbmUsIGNlcnRmaWxlID0gTm9uZSk6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCBwb3J0PUlNQVA0X1NTTF9QT1JULCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsIHNzbF9jb250ZXh0PU5vbmUpOgorICAgICAgICAgICAgaWYgc3NsX2NvbnRleHQgaXMgbm90IE5vbmUgYW5kIGtleWZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic3NsX2NvbnRleHQgYW5kIGtleWZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIHNzbF9jb250ZXh0IGlzIG5vdCBOb25lIGFuZCBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzc2xfY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKwogICAgICAgICAgICAgc2VsZi5rZXlmaWxlID0ga2V5ZmlsZQogICAgICAgICAgICAgc2VsZi5jZXJ0ZmlsZSA9IGNlcnRmaWxlCisgICAgICAgICAgICBzZWxmLnNzbF9jb250ZXh0ID0gc3NsX2NvbnRleHQKICAgICAgICAgICAgIElNQVA0Ll9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQpCiAKICAgICAgICAgZGVmIF9jcmVhdGVfc29ja2V0KHNlbGYpOgogICAgICAgICAgICAgc29jayA9IElNQVA0Ll9jcmVhdGVfc29ja2V0KHNlbGYpCi0gICAgICAgICAgICByZXR1cm4gc3NsLndyYXBfc29ja2V0KHNvY2ssIHNlbGYua2V5ZmlsZSwgc2VsZi5jZXJ0ZmlsZSkKKyAgICAgICAgICAgIGlmIHNlbGYuc3NsX2NvbnRleHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3NsX2NvbnRleHQud3JhcF9zb2NrZXQoc29jaykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNzbC53cmFwX3NvY2tldChzb2NrLCBzZWxmLmtleWZpbGUsIHNlbGYuY2VydGZpbGUpCiAKICAgICAgICAgZGVmIG9wZW4oc2VsZiwgaG9zdD0nJywgcG9ydD1JTUFQNF9TU0xfUE9SVCk6CiAgICAgICAgICAgICAiIiJTZXR1cCBjb25uZWN0aW9uIHRvIHJlbW90ZSBzZXJ2ZXIgb24gImhvc3Q6cG9ydCIuCkBAIC0xMzEwLDEwICsxMzE3LDggQEAKICAgICAgICAgICAgIHJldHVybiBiJycKICAgICAgICAgcmV0dXJuIGJpbmFzY2lpLmEyYl9iYXNlNjQoaW5wKQogCi0KLQotTW9uMm51bSA9IHtiJ0phbic6IDEsIGInRmViJzogMiwgYidNYXInOiAzLCBiJ0Fwcic6IDQsIGInTWF5JzogNSwgYidKdW4nOiA2LAotICAgICAgICAgICBiJ0p1bCc6IDcsIGInQXVnJzogOCwgYidTZXAnOiA5LCBiJ09jdCc6IDEwLCBiJ05vdic6IDExLCBiJ0RlYyc6IDEyfQorTW9udGhzID0gJyBKYW4gRmViIE1hciBBcHIgTWF5IEp1biBKdWwgQXVnIFNlcCBPY3QgTm92IERlYycuc3BsaXQoJyAnKQorTW9uMm51bSA9IHtzLmVuY29kZSgpOm4rMSBmb3IgbiwgcyBpbiBlbnVtZXJhdGUoTW9udGhzWzE6XSl9CiAKIGRlZiBJbnRlcm5hbGRhdGUydHVwbGUocmVzcCk6CiAgICAgIiIiUGFyc2UgYW4gSU1BUDQgSU5URVJOQUxEQVRFIHN0cmluZy4KQEAgLTEzODEsMjggKzEzODYsMzcgQEAKICAgICBSZXR1cm4gc3RyaW5nIGluIGZvcm06ICciREQtTW1tLVlZWVkgSEg6TU06U1MgK0hITU0iJy4gIFRoZQogICAgIGRhdGVfdGltZSBhcmd1bWVudCBjYW4gYmUgYSBudW1iZXIgKGludCBvciBmbG9hdCkgcmVwcmVzZW50aW5nCiAgICAgc2Vjb25kcyBzaW5jZSBlcG9jaCAoYXMgcmV0dXJuZWQgYnkgdGltZS50aW1lKCkpLCBhIDktdHVwbGUKLSAgICByZXByZXNlbnRpbmcgbG9jYWwgdGltZSAoYXMgcmV0dXJuZWQgYnkgdGltZS5sb2NhbHRpbWUoKSksIG9yIGEKKyAgICByZXByZXNlbnRpbmcgbG9jYWwgdGltZSwgYW4gaW5zdGFuY2Ugb2YgdGltZS5zdHJ1Y3RfdGltZSAoYXMKKyAgICByZXR1cm5lZCBieSB0aW1lLmxvY2FsdGltZSgpKSwgYW4gYXdhcmUgZGF0ZXRpbWUgaW5zdGFuY2Ugb3IgYQogICAgIGRvdWJsZS1xdW90ZWQgc3RyaW5nLiAgSW4gdGhlIGxhc3QgY2FzZSwgaXQgaXMgYXNzdW1lZCB0byBhbHJlYWR5CiAgICAgYmUgaW4gdGhlIGNvcnJlY3QgZm9ybWF0LgogICAgICIiIgotCiAgICAgaWYgaXNpbnN0YW5jZShkYXRlX3RpbWUsIChpbnQsIGZsb2F0KSk6Ci0gICAgICAgIHR0ID0gdGltZS5sb2NhbHRpbWUoZGF0ZV90aW1lKQotICAgIGVsaWYgaXNpbnN0YW5jZShkYXRlX3RpbWUsICh0dXBsZSwgdGltZS5zdHJ1Y3RfdGltZSkpOgotICAgICAgICB0dCA9IGRhdGVfdGltZQorICAgICAgICBkdCA9IGRhdGV0aW1lLmZyb210aW1lc3RhbXAoZGF0ZV90aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXpvbmUudXRjKS5hc3RpbWV6b25lKCkKKyAgICBlbGlmIGlzaW5zdGFuY2UoZGF0ZV90aW1lLCB0dXBsZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGdtdG9mZiA9IGRhdGVfdGltZS50bV9nbXRvZmYKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgaWYgdGltZS5kYXlsaWdodDoKKyAgICAgICAgICAgICAgICBkc3QgPSBkYXRlX3RpbWVbOF0KKyAgICAgICAgICAgICAgICBpZiBkc3QgPT0gLTE6CisgICAgICAgICAgICAgICAgICAgIGRzdCA9IHRpbWUubG9jYWx0aW1lKHRpbWUubWt0aW1lKGRhdGVfdGltZSkpWzhdCisgICAgICAgICAgICAgICAgZ210b2ZmID0gLSh0aW1lLnRpbWV6b25lLCB0aW1lLmFsdHpvbmUpW2RzdF0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZ210b2ZmID0gLXRpbWUudGltZXpvbmUKKyAgICAgICAgZGVsdGEgPSB0aW1lZGVsdGEoc2Vjb25kcz1nbXRvZmYpCisgICAgICAgIGR0ID0gZGF0ZXRpbWUoKmRhdGVfdGltZVs6Nl0sIHR6aW5mbz10aW1lem9uZShkZWx0YSkpCisgICAgZWxpZiBpc2luc3RhbmNlKGRhdGVfdGltZSwgZGF0ZXRpbWUpOgorICAgICAgICBpZiBkYXRlX3RpbWUudHppbmZvIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkYXRlX3RpbWUgbXVzdCBiZSBhd2FyZSIpCisgICAgICAgIGR0ID0gZGF0ZV90aW1lCiAgICAgZWxpZiBpc2luc3RhbmNlKGRhdGVfdGltZSwgc3RyKSBhbmQgKGRhdGVfdGltZVswXSxkYXRlX3RpbWVbLTFdKSA9PSAoJyInLCciJyk6CiAgICAgICAgIHJldHVybiBkYXRlX3RpbWUgICAgICAgICMgQXNzdW1lIGluIGNvcnJlY3QgZm9ybWF0CiAgICAgZWxzZToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGF0ZV90aW1lIG5vdCBvZiBhIGtub3duIHR5cGUiKQotCi0gICAgZHQgPSB0aW1lLnN0cmZ0aW1lKCIlZC0lYi0lWSAlSDolTTolUyIsIHR0KQotICAgIGlmIGR0WzBdID09ICcwJzoKLSAgICAgICAgZHQgPSAnICcgKyBkdFsxOl0KLSAgICBpZiB0aW1lLmRheWxpZ2h0IGFuZCB0dFstMV06Ci0gICAgICAgIHpvbmUgPSAtdGltZS5hbHR6b25lCi0gICAgZWxzZToKLSAgICAgICAgem9uZSA9IC10aW1lLnRpbWV6b25lCi0gICAgcmV0dXJuICciJyArIGR0ICsgIiAlKzAzZCUwMmQiICUgZGl2bW9kKHpvbmUvLzYwLCA2MCkgKyAnIicKKyAgICBmbXQgPSAnIiVkLXt9LSVZICVIOiVNOiVTICV6IicuZm9ybWF0KE1vbnRoc1tkdC5tb250aF0pCisgICAgcmV0dXJuIGR0LnN0cmZ0aW1lKGZtdCkKIAogCiAKZGlmZiAtLWdpdCBhL0xpYi9pbXAucHkgYi9MaWIvaW1wLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhOWM4NGUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaW1wLnB5CkBAIC0wLDAgKzEsMjU3IEBACisiIiJUaGlzIG1vZHVsZSBwcm92aWRlcyB0aGUgY29tcG9uZW50cyBuZWVkZWQgdG8gYnVpbGQgeW91ciBvd24gX19pbXBvcnRfXworZnVuY3Rpb24uICBVbmRvY3VtZW50ZWQgZnVuY3Rpb25zIGFyZSBvYnNvbGV0ZS4KKworSW4gbW9zdCBjYXNlcyBpdCBpcyBwcmVmZXJyZWQgeW91IGNvbnNpZGVyIHVzaW5nIHRoZSBpbXBvcnRsaWIgbW9kdWxlJ3MKK2Z1bmN0aW9uYWxpdHkgb3ZlciB0aGlzIG1vZHVsZS4KKworIiIiCisjIChQcm9iYWJseSkgbmVlZCB0byBzdGF5IGluIF9pbXAKK2Zyb20gX2ltcCBpbXBvcnQgKGxvY2tfaGVsZCwgYWNxdWlyZV9sb2NrLCByZWxlYXNlX2xvY2ssCisgICAgICAgICAgICAgICAgICBsb2FkX2R5bmFtaWMsIGdldF9mcm96ZW5fb2JqZWN0LCBpc19mcm96ZW5fcGFja2FnZSwKKyAgICAgICAgICAgICAgICAgIGluaXRfYnVpbHRpbiwgaW5pdF9mcm96ZW4sIGlzX2J1aWx0aW4sIGlzX2Zyb3plbiwKKyAgICAgICAgICAgICAgICAgIF9maXhfY29fZmlsZW5hbWUpCisKKyMgRGlyZWN0bHkgZXhwb3NlZCBieSB0aGlzIG1vZHVsZQorZnJvbSBpbXBvcnRsaWIuX2Jvb3RzdHJhcCBpbXBvcnQgbmV3X21vZHVsZQorZnJvbSBpbXBvcnRsaWIuX2Jvb3RzdHJhcCBpbXBvcnQgY2FjaGVfZnJvbV9zb3VyY2UsIHNvdXJjZV9mcm9tX2NhY2hlCisKKworZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRva2VuaXplCitpbXBvcnQgd2FybmluZ3MKKworCisjIERFUFJFQ0FURUQKK1NFQVJDSF9FUlJPUiA9IDAKK1BZX1NPVVJDRSA9IDEKK1BZX0NPTVBJTEVEID0gMgorQ19FWFRFTlNJT04gPSAzCitQWV9SRVNPVVJDRSA9IDQKK1BLR19ESVJFQ1RPUlkgPSA1CitDX0JVSUxUSU4gPSA2CitQWV9GUk9aRU4gPSA3CitQWV9DT0RFUkVTT1VSQ0UgPSA4CitJTVBfSE9PSyA9IDkKKworCitkZWYgZ2V0X21hZ2ljKCk6CisgICAgIiIiUmV0dXJuIHRoZSBtYWdpYyBudW1iZXIgZm9yIC5weWMgb3IgLnB5byBmaWxlcy4iIiIKKyAgICByZXR1cm4gX2Jvb3RzdHJhcC5fTUFHSUNfQllURVMKKworCitkZWYgZ2V0X3RhZygpOgorICAgICIiIlJldHVybiB0aGUgbWFnaWMgdGFnIGZvciAucHljIG9yIC5weW8gZmlsZXMuIiIiCisgICAgcmV0dXJuIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcKKworCitkZWYgZ2V0X3N1ZmZpeGVzKCk6CisgICAgd2FybmluZ3Mud2FybignaW1wLmdldF9zdWZmaXhlcygpIGlzIGRlcHJlY2F0ZWQ7IHVzZSB0aGUgY29uc3RhbnRzICcKKyAgICAgICAgICAgICAgICAgICdkZWZpbmVkIG9uIGltcG9ydGxpYi5tYWNoaW5lcnkgaW5zdGVhZCcsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgZXh0ZW5zaW9ucyA9IFsocywgJ3JiJywgQ19FWFRFTlNJT04pIGZvciBzIGluIG1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVNdCisgICAgc291cmNlID0gWyhzLCAnVScsIFBZX1NPVVJDRSkgZm9yIHMgaW4gbWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFU10KKyAgICBieXRlY29kZSA9IFsocywgJ3JiJywgUFlfQ09NUElMRUQpIGZvciBzIGluIG1hY2hpbmVyeS5CWVRFQ09ERV9TVUZGSVhFU10KKworICAgIHJldHVybiBleHRlbnNpb25zICsgc291cmNlICsgYnl0ZWNvZGUKKworCitjbGFzcyBOdWxsSW1wb3J0ZXI6CisKKyAgICAiIiJOdWxsIGltcG9ydCBvYmplY3QuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CisgICAgICAgIGlmIHBhdGggPT0gJyc6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignZW1wdHkgcGF0aG5hbWUnLCBwYXRoPScnKQorICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIocGF0aCk6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignZXhpc3RpbmcgZGlyZWN0b3J5JywgcGF0aD1wYXRoKQorCisgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgIiIiQWx3YXlzIHJldHVybnMgTm9uZS4iIiIKKyAgICAgICAgcmV0dXJuIE5vbmUKKworCitjbGFzcyBfSGFja2VkR2V0RGF0YToKKworICAgICIiIkNvbXBhdGliaWlsdHkgc3VwcG9ydCBmb3IgJ2ZpbGUnIGFyZ3VtZW50cyBvZiB2YXJpb3VzIGxvYWRfKigpCisgICAgZnVuY3Rpb25zLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bGxuYW1lLCBwYXRoLCBmaWxlPU5vbmUpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKGZ1bGxuYW1lLCBwYXRoKQorICAgICAgICBzZWxmLmZpbGUgPSBmaWxlCisKKyAgICBkZWYgZ2V0X2RhdGEoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIkdyb3NzIGhhY2sgdG8gY29udG9ydCBsb2FkZXIgdG8gZGVhbCB3LyBsb2FkXyooKSdzIGJhZCBBUEkuIiIiCisgICAgICAgIGlmIHNlbGYuZmlsZSBhbmQgcGF0aCA9PSBzZWxmLnBhdGg6CisgICAgICAgICAgICB3aXRoIHNlbGYuZmlsZToKKyAgICAgICAgICAgICAgICAjIFRlY2huaWNhbGx5IHNob3VsZCBiZSByZXR1cm5pbmcgYnl0ZXMsIGJ1dAorICAgICAgICAgICAgICAgICMgU291cmNlTG9hZGVyLmdldF9jb2RlKCkganVzdCBwYXNzZWQgd2hhdCBpcyByZXR1cm5lZCB0bworICAgICAgICAgICAgICAgICMgY29tcGlsZSgpIHdoaWNoIGNhbiBoYW5kbGUgc3RyLiBBbmQgY29udmVydGluZyB0byBieXRlcyB3b3VsZAorICAgICAgICAgICAgICAgICMgcmVxdWlyZSBmaWd1cmluZyBvdXQgdGhlIGVuY29kaW5nIHRvIGRlY29kZSB0byBhbmQKKyAgICAgICAgICAgICAgICAjIHRva2VuaXplLmRldGVjdF9lbmNvZGluZygpIG9ubHkgYWNjZXB0cyBieXRlcy4KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5maWxlLnJlYWQoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZ2V0X2RhdGEocGF0aCkKKworCitjbGFzcyBfTG9hZFNvdXJjZUNvbXBhdGliaWxpdHkoX0hhY2tlZEdldERhdGEsIF9ib290c3RyYXAuU291cmNlRmlsZUxvYWRlcik6CisKKyAgICAiIiJDb21wYXRpYmlsaXR5IHN1cHBvcnQgZm9yIGltcGxlbWVudGluZyBsb2FkX3NvdXJjZSgpLiIiIgorCisKK2RlZiBsb2FkX3NvdXJjZShuYW1lLCBwYXRobmFtZSwgZmlsZT1Ob25lKToKKyAgICBtc2cgPSAoJ2ltcC5sb2FkX3NvdXJjZSgpIGlzIGRlcHJlY2F0ZWQ7IHVzZSAnCisgICAgICAgICAgICdpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIobmFtZSwgcGF0aG5hbWUpLmxvYWRfbW9kdWxlKCknCisgICAgICAgICAgICcgaW5zdGVhZCcpCisgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICByZXR1cm4gX0xvYWRTb3VyY2VDb21wYXRpYmlsaXR5KG5hbWUsIHBhdGhuYW1lLCBmaWxlKS5sb2FkX21vZHVsZShuYW1lKQorCisKK2NsYXNzIF9Mb2FkQ29tcGlsZWRDb21wYXRpYmlsaXR5KF9IYWNrZWRHZXREYXRhLAorICAgICAgICBfYm9vdHN0cmFwLlNvdXJjZWxlc3NGaWxlTG9hZGVyKToKKworICAgICIiIkNvbXBhdGliaWxpdHkgc3VwcG9ydCBmb3IgaW1wbGVtZW50aW5nIGxvYWRfY29tcGlsZWQoKS4iIiIKKworCitkZWYgbG9hZF9jb21waWxlZChuYW1lLCBwYXRobmFtZSwgZmlsZT1Ob25lKToKKyAgICBtc2cgPSAoJ2ltcC5sb2FkX2NvbXBpbGVkKCkgaXMgZGVwcmVjYXRlZDsgdXNlICcKKyAgICAgICAgICAgJ2ltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIobmFtZSwgcGF0aG5hbWUpLicKKyAgICAgICAgICAgJ2xvYWRfbW9kdWxlKCkgaW5zdGVhZCAnKQorICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgcmV0dXJuIF9Mb2FkQ29tcGlsZWRDb21wYXRpYmlsaXR5KG5hbWUsIHBhdGhuYW1lLCBmaWxlKS5sb2FkX21vZHVsZShuYW1lKQorCisKK2RlZiBsb2FkX3BhY2thZ2UobmFtZSwgcGF0aCk6CisgICAgbXNnID0gKCdpbXAubG9hZF9wYWNrYWdlKCkgaXMgZGVwcmVjYXRlZDsgdXNlIGVpdGhlciAnCisgICAgICAgICAgICdpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoKSBvciAnCisgICAgICAgICAgICdpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKCkgaW5zdGVhZCcpCisgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICBpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgorICAgICAgICBleHRlbnNpb25zID0gKG1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVNbOl0gKworICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5CWVRFQ09ERV9TVUZGSVhFU1s6XSkKKyAgICAgICAgZm9yIGV4dGVuc2lvbiBpbiBleHRlbnNpb25zOgorICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoLCAnX19pbml0X18nK2V4dGVuc2lvbikKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7IXJ9IGlzIG5vdCBhIHBhY2thZ2UnLmZvcm1hdChwYXRoKSkKKyAgICByZXR1cm4gX2Jvb3RzdHJhcC5Tb3VyY2VGaWxlTG9hZGVyKG5hbWUsIHBhdGgpLmxvYWRfbW9kdWxlKG5hbWUpCisKKworZGVmIGxvYWRfbW9kdWxlKG5hbWUsIGZpbGUsIGZpbGVuYW1lLCBkZXRhaWxzKToKKyAgICAiIiIqKkRFUFJFQ0FURUQqKgorCisgICAgTG9hZCBhIG1vZHVsZSwgZ2l2ZW4gaW5mb3JtYXRpb24gcmV0dXJuZWQgYnkgZmluZF9tb2R1bGUoKS4KKworICAgIFRoZSBtb2R1bGUgbmFtZSBtdXN0IGluY2x1ZGUgdGhlIGZ1bGwgcGFja2FnZSBuYW1lLCBpZiBhbnkuCisKKyAgICAiIiIKKyAgICBzdWZmaXgsIG1vZGUsIHR5cGVfID0gZGV0YWlscworICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnKQorICAgICAgICBpZiBtb2RlIGFuZCAobm90IG1vZGUuc3RhcnRzd2l0aCgoJ3InLCAnVScpKSBvciAnKycgaW4gbW9kZSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdpbnZhbGlkIGZpbGUgb3BlbiBtb2RlIHshcn0nLmZvcm1hdChtb2RlKSkKKyAgICAgICAgZWxpZiBmaWxlIGlzIE5vbmUgYW5kIHR5cGVfIGluIHtQWV9TT1VSQ0UsIFBZX0NPTVBJTEVELCBDX0VYVEVOU0lPTn06CisgICAgICAgICAgICBtc2cgPSAnZmlsZSBvYmplY3QgcmVxdWlyZWQgZm9yIGltcG9ydCAodHlwZSBjb2RlIHt9KScuZm9ybWF0KHR5cGVfKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCisgICAgICAgIGVsaWYgdHlwZV8gPT0gUFlfU09VUkNFOgorICAgICAgICAgICAgcmV0dXJuIGxvYWRfc291cmNlKG5hbWUsIGZpbGVuYW1lLCBmaWxlKQorICAgICAgICBlbGlmIHR5cGVfID09IFBZX0NPTVBJTEVEOgorICAgICAgICAgICAgcmV0dXJuIGxvYWRfY29tcGlsZWQobmFtZSwgZmlsZW5hbWUsIGZpbGUpCisgICAgICAgIGVsaWYgdHlwZV8gPT0gQ19FWFRFTlNJT046CisgICAgICAgICAgICByZXR1cm4gbG9hZF9keW5hbWljKG5hbWUsIGZpbGVuYW1lLCBmaWxlKQorICAgICAgICBlbGlmIHR5cGVfID09IFBLR19ESVJFQ1RPUlk6CisgICAgICAgICAgICByZXR1cm4gbG9hZF9wYWNrYWdlKG5hbWUsIGZpbGVuYW1lKQorICAgICAgICBlbGlmIHR5cGVfID09IENfQlVJTFRJTjoKKyAgICAgICAgICAgIHJldHVybiBpbml0X2J1aWx0aW4obmFtZSkKKyAgICAgICAgZWxpZiB0eXBlXyA9PSBQWV9GUk9aRU46CisgICAgICAgICAgICByZXR1cm4gaW5pdF9mcm96ZW4obmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1zZyA9ICAiRG9uJ3Qga25vdyBob3cgdG8gaW1wb3J0IHt9ICh0eXBlIGNvZGUge30pIi5mb3JtYXQobmFtZSwgdHlwZV8pCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkKKworCitkZWYgZmluZF9tb2R1bGUobmFtZSwgcGF0aD1Ob25lKToKKyAgICAiIiIqKkRFUFJFQ0FURUQqKgorCisgICAgU2VhcmNoIGZvciBhIG1vZHVsZS4KKworICAgIElmIHBhdGggaXMgb21pdHRlZCBvciBOb25lLCBzZWFyY2ggZm9yIGEgYnVpbHQtaW4sIGZyb3plbiBvciBzcGVjaWFsCisgICAgbW9kdWxlIGFuZCBjb250aW51ZSBzZWFyY2ggaW4gc3lzLnBhdGguIFRoZSBtb2R1bGUgbmFtZSBjYW5ub3QKKyAgICBjb250YWluICcuJzsgdG8gc2VhcmNoIGZvciBhIHN1Ym1vZHVsZSBvZiBhIHBhY2thZ2UsIHBhc3MgdGhlCisgICAgc3VibW9kdWxlIG5hbWUgYW5kIHRoZSBwYWNrYWdlJ3MgX19wYXRoX18uCisKKyAgICAiIiIKKyAgICBpZiBub3QgaXNpbnN0YW5jZShuYW1lLCBzdHIpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiduYW1lJyBtdXN0IGJlIGEgc3RyLCBub3Qge30iLmZvcm1hdCh0eXBlKG5hbWUpKSkKKyAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHBhdGgsICh0eXBlKE5vbmUpLCBsaXN0KSk6CisgICAgICAgICMgQmFja3dhcmRzLWNvbXBhdGliaWxpdHkKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCInbGlzdCcgbXVzdCBiZSBOb25lIG9yIGEgbGlzdCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCB7fSIuZm9ybWF0KHR5cGUobmFtZSkpKQorCisgICAgaWYgcGF0aCBpcyBOb25lOgorICAgICAgICBpZiBpc19idWlsdGluKG5hbWUpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsICgnJywgJycsIENfQlVJTFRJTikKKyAgICAgICAgZWxpZiBpc19mcm96ZW4obmFtZSk6CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgKCcnLCAnJywgUFlfRlJPWkVOKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcGF0aCA9IHN5cy5wYXRoCisKKyAgICBmb3IgZW50cnkgaW4gcGF0aDoKKyAgICAgICAgcGFja2FnZV9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oZW50cnksIG5hbWUpCisgICAgICAgIGZvciBzdWZmaXggaW4gWycucHknLCBtYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVNbMF1dOgorICAgICAgICAgICAgcGFja2FnZV9maWxlX25hbWUgPSAnX19pbml0X18nICsgc3VmZml4CisgICAgICAgICAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4ocGFja2FnZV9kaXJlY3RvcnksIHBhY2thZ2VfZmlsZV9uYW1lKQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZmlsZV9wYXRoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgcGFja2FnZV9kaXJlY3RvcnksICgnJywgJycsIFBLR19ESVJFQ1RPUlkpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJykKKyAgICAgICAgICAgIGZvciBzdWZmaXgsIG1vZGUsIHR5cGVfIGluIGdldF9zdWZmaXhlcygpOgorICAgICAgICAgICAgICAgIGZpbGVfbmFtZSA9IG5hbWUgKyBzdWZmaXgKKyAgICAgICAgICAgICAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4oZW50cnksIGZpbGVfbmFtZSkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmaWxlX3BhdGgpOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgYnJlYWsgICMgQnJlYWsgb3V0IG9mIG91dGVyIGxvb3Agd2hlbiBicmVha2luZyBvdXQgb2YgaW5uZXIgbG9vcC4KKyAgICBlbHNlOgorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihfYm9vdHN0cmFwLl9FUlJfTVNHLmZvcm1hdChuYW1lKSwgbmFtZT1uYW1lKQorCisgICAgZW5jb2RpbmcgPSBOb25lCisgICAgaWYgbW9kZSA9PSAnVSc6CisgICAgICAgIHdpdGggb3BlbihmaWxlX3BhdGgsICdyYicpIGFzIGZpbGU6CisgICAgICAgICAgICBlbmNvZGluZyA9IHRva2VuaXplLmRldGVjdF9lbmNvZGluZyhmaWxlLnJlYWRsaW5lKVswXQorICAgIGZpbGUgPSBvcGVuKGZpbGVfcGF0aCwgbW9kZSwgZW5jb2Rpbmc9ZW5jb2RpbmcpCisgICAgcmV0dXJuIGZpbGUsIGZpbGVfcGF0aCwgKHN1ZmZpeCwgbW9kZSwgdHlwZV8pCisKKworX1JFTE9BRElORyA9IHt9CisKK2RlZiByZWxvYWQobW9kdWxlKToKKyAgICAiIiJSZWxvYWQgdGhlIG1vZHVsZSBhbmQgcmV0dXJuIGl0LgorCisgICAgVGhlIG1vZHVsZSBtdXN0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQgYmVmb3JlLgorCisgICAgIiIiCisgICAgaWYgbm90IG1vZHVsZSBvciB0eXBlKG1vZHVsZSkgIT0gdHlwZShzeXMpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoInJlbG9hZCgpIGFyZ3VtZW50IG11c3QgYmUgbW9kdWxlIikKKyAgICBuYW1lID0gbW9kdWxlLl9fbmFtZV9fCisgICAgaWYgbmFtZSBub3QgaW4gc3lzLm1vZHVsZXM6CisgICAgICAgIG1zZyA9ICJtb2R1bGUge30gbm90IGluIHN5cy5tb2R1bGVzIgorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cuZm9ybWF0KG5hbWUpLCBuYW1lPW5hbWUpCisgICAgaWYgbmFtZSBpbiBfUkVMT0FESU5HOgorICAgICAgICByZXR1cm4gX1JFTE9BRElOR1tuYW1lXQorICAgIF9SRUxPQURJTkdbbmFtZV0gPSBtb2R1bGUKKyAgICB0cnk6CisgICAgICAgIHBhcmVudF9uYW1lID0gbmFtZS5ycGFydGl0aW9uKCcuJylbMF0KKyAgICAgICAgaWYgcGFyZW50X25hbWUgYW5kIHBhcmVudF9uYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIG1zZyA9ICJwYXJlbnQgeyFyfSBub3QgaW4gc3lzLm1vZHVsZXMiCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cuZm9ybWF0KHBhcmVudG5hbWUpLCBuYW1lPXBhcmVudF9uYW1lKQorICAgICAgICByZXR1cm4gbW9kdWxlLl9fbG9hZGVyX18ubG9hZF9tb2R1bGUobmFtZSkKKyAgICBmaW5hbGx5OgorICAgICAgICB0cnk6CisgICAgICAgICAgICBkZWwgX1JFTE9BRElOR1tuYW1lXQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL19faW5pdF9fLnB5IGIvTGliL2ltcG9ydGxpYi9fX2luaXRfXy5weQppbmRleCAyYmFhZjkzLi4yMmM5MGYyIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL19faW5pdF9fLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvX19pbml0X18ucHkKQEAgLTEsMTEwICsxLDc2IEBACi0iIiJBIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIGltcG9ydC4KLQotUmVmZXJlbmNlcyBvbiBpbXBvcnQ6Ci0KLSAgICAqIExhbmd1YWdlIHJlZmVyZW5jZQotICAgICAgICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvcmVmL2ltcG9ydC5odG1sCi0gICAgKiBfX2ltcG9ydF9fIGZ1bmN0aW9uCi0gICAgICAgICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWIvYnVpbHQtaW4tZnVuY3MuaHRtbAotICAgICogUGFja2FnZXMKLSAgICAgICAgICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG9jL2Vzc2F5cy9wYWNrYWdlcy5odG1sCi0gICAgKiBQRVAgMjM1OiBJbXBvcnQgb24gQ2FzZS1JbnNlbnNpdGl2ZSBQbGF0Zm9ybXMKLSAgICAgICAgICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAyMzUKLSAgICAqIFBFUCAyNzU6IEltcG9ydCBNb2R1bGVzIGZyb20gWmlwIEFyY2hpdmVzCi0gICAgICAgICAgaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wMjczCi0gICAgKiBQRVAgMzAyOiBOZXcgSW1wb3J0IEhvb2tzCi0gICAgICAgICAgaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wMzAyLwotICAgICogUEVQIDMyODogSW1wb3J0czogTXVsdGktbGluZSBhbmQgQWJzb2x1dGUvUmVsYXRpdmUKLSAgICAgICAgICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAzMjgKLQotIiIiCi1fX2FsbF9fID0gWydfX2ltcG9ydF9fJywgJ2ltcG9ydF9tb2R1bGUnXQotCi1mcm9tIC4gaW1wb3J0IF9ib290c3RyYXAKLQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCB0b2tlbml6ZQorIiIiQSBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBpbXBvcnQuIiIiCitfX2FsbF9fID0gWydfX2ltcG9ydF9fJywgJ2ltcG9ydF9tb2R1bGUnLCAnaW52YWxpZGF0ZV9jYWNoZXMnXQogCiAjIEJvb3RzdHJhcCBoZWxwICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLWRlZiBfY2FzZV9vayhkaXJlY3RvcnksIGNoZWNrKToKLSAgICAiIiJDaGVjayBpZiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5zIHNvbWV0aGluZyBtYXRjaGluZyAnY2hlY2snLgorIyBVbnRpbCBib290c3RyYXBwaW5nIGlzIGNvbXBsZXRlLCBETyBOT1QgaW1wb3J0IGFueSBtb2R1bGVzIHRoYXQgYXR0ZW1wdAorIyB0byBpbXBvcnQgaW1wb3J0bGliLl9ib290c3RyYXAgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpLiBTaW5jZSB0aGlzCisjIHBhcnRpYWxseSBpbml0aWFsaXNlZCBwYWNrYWdlIHdvdWxkIGJlIHByZXNlbnQgaW4gc3lzLm1vZHVsZXMsIHRob3NlCisjIG1vZHVsZXMgd291bGQgZ2V0IGFuIHVuaW5pdGlhbGlzZWQgY29weSBvZiB0aGUgc291cmNlIHZlcnNpb24sIGluc3RlYWQKKyMgb2YgYSBmdWxseSBpbml0aWFsaXNlZCB2ZXJzaW9uIChlaXRoZXIgdGhlIGZyb3plbiBvbmUgb3IgdGhlIG9uZQorIyBpbml0aWFsaXNlZCBiZWxvdyBpZiB0aGUgZnJvemVuIG9uZSBpcyBub3QgYXZhaWxhYmxlKS4KK2ltcG9ydCBfaW1wICAjIEp1c3QgdGhlIGJ1aWx0aW4gY29tcG9uZW50LCBOT1QgdGhlIGZ1bGwgUHl0aG9uIG1vZHVsZQoraW1wb3J0IHN5cwogCi0gICAgTm8gY2hlY2sgaXMgZG9uZSBpZiB0aGUgZmlsZS9kaXJlY3RvcnkgZXhpc3RzIG9yIG5vdC4KLQotICAgICIiIgotICAgIGlmICdQWVRIT05DQVNFT0snIGluIG9zLmVudmlyb246Ci0gICAgICAgIHJldHVybiBUcnVlCi0gICAgZWxpZiBjaGVjayBpbiBvcy5saXN0ZGlyKGRpcmVjdG9yeSBpZiBkaXJlY3RvcnkgZWxzZSBvcy5nZXRjd2QoKSk6Ci0gICAgICAgIHJldHVybiBUcnVlCi0gICAgcmV0dXJuIEZhbHNlCi0KLQotZGVmIF93X2xvbmcoeCk6Ci0gICAgIiIiQ29udmVydCBhIDMyLWJpdCBpbnRlZ2VyIHRvIGxpdHRsZS1lbmRpYW4uCi0KLSAgICBYWFggVGVtcG9yYXJ5IHVudGlsIG1hcnNoYWwncyBsb25nIGZ1bmN0aW9ucyBhcmUgZXhwb3NlZC4KLQotICAgICIiIgotICAgIHggPSBpbnQoeCkKLSAgICBpbnRfYnl0ZXMgPSBbXQotICAgIGludF9ieXRlcy5hcHBlbmQoeCAmIDB4RkYpCi0gICAgaW50X2J5dGVzLmFwcGVuZCgoeCA+PiA4KSAmIDB4RkYpCi0gICAgaW50X2J5dGVzLmFwcGVuZCgoeCA+PiAxNikgJiAweEZGKQotICAgIGludF9ieXRlcy5hcHBlbmQoKHggPj4gMjQpICYgMHhGRikKLSAgICByZXR1cm4gYnl0ZWFycmF5KGludF9ieXRlcykKLQotCi1kZWYgX3JfbG9uZyhpbnRfYnl0ZXMpOgotICAgICIiIkNvbnZlcnQgNCBieXRlcyBpbiBsaXR0bGUtZW5kaWFuIHRvIGFuIGludGVnZXIuCi0KLSAgICBYWFggVGVtcG9yYXJ5IHVudGlsIG1hcnNoYWwncyBsb25nIGZ1bmN0aW9uIGFyZSBleHBvc2VkLgotCi0gICAgIiIiCi0gICAgeCA9IGludF9ieXRlc1swXQotICAgIHggfD0gaW50X2J5dGVzWzFdIDw8IDgKLSAgICB4IHw9IGludF9ieXRlc1syXSA8PCAxNgotICAgIHggfD0gaW50X2J5dGVzWzNdIDw8IDI0Ci0gICAgcmV0dXJuIHgKLQotCi0jIFJlcXVpcmVkIGJ1aWx0LWluIG1vZHVsZXMuCiB0cnk6Ci0gICAgaW1wb3J0IHBvc2l4IGFzIF9vcworICAgIGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiBhcyBfYm9vdHN0cmFwCiBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgbnQgYXMgX29zCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbXBvcnQgb3MyIGFzIF9vcwotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigncG9zaXgsIG50LCBvciBvczIgbW9kdWxlIHJlcXVpcmVkIGZvciBpbXBvcnRsaWInKQotX2Jvb3RzdHJhcC5fb3MgPSBfb3MKLWltcG9ydCBpbXAsIHN5cywgbWFyc2hhbCwgZXJybm8sIF9pbwotX2Jvb3RzdHJhcC5pbXAgPSBpbXAKLV9ib290c3RyYXAuc3lzID0gc3lzCi1fYm9vdHN0cmFwLm1hcnNoYWwgPSBtYXJzaGFsCi1fYm9vdHN0cmFwLmVycm5vID0gZXJybm8KLV9ib290c3RyYXAuX2lvID0gX2lvCi1pbXBvcnQgX3dhcm5pbmdzCi1fYm9vdHN0cmFwLl93YXJuaW5ncyA9IF93YXJuaW5ncworICAgIGZyb20gLiBpbXBvcnQgX2Jvb3RzdHJhcAorICAgIF9ib290c3RyYXAuX3NldHVwKHN5cywgX2ltcCkKK2Vsc2U6CisgICAgIyBpbXBvcnRsaWIuX2Jvb3RzdHJhcCBpcyB0aGUgYnVpbHQtaW4gaW1wb3J0LCBlbnN1cmUgd2UgZG9uJ3QgY3JlYXRlCisgICAgIyBhIHNlY29uZCBjb3B5IG9mIHRoZSBtb2R1bGUuCisgICAgX2Jvb3RzdHJhcC5fX25hbWVfXyA9ICdpbXBvcnRsaWIuX2Jvb3RzdHJhcCcKKyAgICBfYm9vdHN0cmFwLl9fcGFja2FnZV9fID0gJ2ltcG9ydGxpYicKKyAgICBfYm9vdHN0cmFwLl9fZmlsZV9fID0gX19maWxlX18ucmVwbGFjZSgnX19pbml0X18ucHknLCAnX2Jvb3RzdHJhcC5weScpCisgICAgc3lzLm1vZHVsZXNbJ2ltcG9ydGxpYi5fYm9vdHN0cmFwJ10gPSBfYm9vdHN0cmFwCiAKKyMgVG8gc2ltcGxpZnkgaW1wb3J0cyBpbiB0ZXN0IGNvZGUKK193X2xvbmcgPSBfYm9vdHN0cmFwLl93X2xvbmcKK19yX2xvbmcgPSBfYm9vdHN0cmFwLl9yX2xvbmcKIAotZnJvbSBvcyBpbXBvcnQgc2VwCi0jIEZvciBvcy5wYXRoLmpvaW4gcmVwbGFjZW1lbnQ7IHB1bGwgZnJvbSBJbmNsdWRlL29zZGVmcy5oOlNFUCAuCi1fYm9vdHN0cmFwLnBhdGhfc2VwID0gc2VwCi0KLV9ib290c3RyYXAuX2Nhc2Vfb2sgPSBfY2FzZV9vawotbWFyc2hhbC5fd19sb25nID0gX3dfbG9uZwotbWFyc2hhbC5fcl9sb25nID0gX3JfbG9uZwotCisjIEZ1bGx5IGJvb3RzdHJhcHBlZCBhdCB0aGlzIHBvaW50LCBpbXBvcnQgd2hhdGV2ZXIgeW91IGxpa2UsIGNpcmN1bGFyCisjIGRlcGVuZGVuY2llcyBhbmQgc3RhcnR1cCBvdmVyaGVhZCBtaW5pbWlzYXRpb24gcGVybWl0dGluZyA6KQogCiAjIFB1YmxpYyBBUEkgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IF9faW1wb3J0X18KIAogCitkZWYgaW52YWxpZGF0ZV9jYWNoZXMoKToKKyAgICAiIiJDYWxsIHRoZSBpbnZhbGlkYXRlX2NhY2hlcygpIG1ldGhvZCBvbiBhbGwgbWV0YSBwYXRoIGZpbmRlcnMgc3RvcmVkIGluCisgICAgc3lzLm1ldGFfcGF0aCAod2hlcmUgaW1wbGVtZW50ZWQpLiIiIgorICAgIGZvciBmaW5kZXIgaW4gc3lzLm1ldGFfcGF0aDoKKyAgICAgICAgaWYgaGFzYXR0cihmaW5kZXIsICdpbnZhbGlkYXRlX2NhY2hlcycpOgorICAgICAgICAgICAgZmluZGVyLmludmFsaWRhdGVfY2FjaGVzKCkKKworCitkZWYgZmluZF9sb2FkZXIobmFtZSwgcGF0aD1Ob25lKToKKyAgICAiIiJGaW5kIHRoZSBsb2FkZXIgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLgorCisgICAgRmlyc3QsIHN5cy5tb2R1bGVzIGlzIGNoZWNrZWQgdG8gc2VlIGlmIHRoZSBtb2R1bGUgd2FzIGFscmVhZHkgaW1wb3J0ZWQuIElmCisgICAgc28sIHRoZW4gc3lzLm1vZHVsZXNbbmFtZV0uX19sb2FkZXJfXyBpcyByZXR1cm5lZC4gSWYgdGhhdCBoYXBwZW5zIHRvIGJlCisgICAgc2V0IHRvIE5vbmUsIHRoZW4gVmFsdWVFcnJvciBpcyByYWlzZWQuIElmIHRoZSBtb2R1bGUgaXMgbm90IGluCisgICAgc3lzLm1vZHVsZXMsIHRoZW4gc3lzLm1ldGFfcGF0aCBpcyBzZWFyY2hlZCBmb3IgYSBzdWl0YWJsZSBsb2FkZXIgd2l0aCB0aGUKKyAgICB2YWx1ZSBvZiAncGF0aCcgZ2l2ZW4gdG8gdGhlIGZpbmRlcnMuIE5vbmUgaXMgcmV0dXJuZWQgaWYgbm8gbG9hZGVyIGNvdWxkCisgICAgYmUgZm91bmQuCisKKyAgICBEb3R0ZWQgbmFtZXMgZG8gbm90IGhhdmUgdGhlaXIgcGFyZW50IHBhY2thZ2VzIGltcGxpY2l0bHkgaW1wb3J0ZWQuIFlvdSB3aWxsCisgICAgbW9zdCBsaWtlbHkgbmVlZCB0byBleHBsaWNpdGx5IGltcG9ydCBhbGwgcGFyZW50IHBhY2thZ2VzIGluIHRoZSBwcm9wZXIKKyAgICBvcmRlciBmb3IgYSBzdWJtb2R1bGUgdG8gZ2V0IHRoZSBjb3JyZWN0IGxvYWRlci4KKworICAgICIiIgorICAgIHRyeToKKyAgICAgICAgbG9hZGVyID0gc3lzLm1vZHVsZXNbbmFtZV0uX19sb2FkZXJfXworICAgICAgICBpZiBsb2FkZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9Ll9fbG9hZGVyX18gaXMgTm9uZScuZm9ybWF0KG5hbWUpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGxvYWRlcgorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcworICAgIHJldHVybiBfYm9vdHN0cmFwLl9maW5kX21vZHVsZShuYW1lLCBwYXRoKQorCisKIGRlZiBpbXBvcnRfbW9kdWxlKG5hbWUsIHBhY2thZ2U9Tm9uZSk6CiAgICAgIiIiSW1wb3J0IGEgbW9kdWxlLgogCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkKaW5kZXggYWE0MDMyYy4uN2UzNDhhNCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weQpAQCAtNiwzMyArNiw5MyBAQAogd29yay4gT25lIHNob3VsZCB1c2UgaW1wb3J0bGliIGFzIHRoZSBwdWJsaWMtZmFjaW5nIHZlcnNpb24gb2YgdGhpcyBtb2R1bGUuCiAKICIiIgotCi0jIEluamVjdGVkIG1vZHVsZXMgYXJlICdfd2FybmluZ3MnLCAnaW1wJywgJ3N5cycsICdtYXJzaGFsJywgJ2Vycm5vJywgJ19pbycsCi0jIGFuZCAnX29zJyAoYS5rLmEuICdwb3NpeCcsICdudCcgb3IgJ29zMicpLgotIyBJbmplY3RlZCBhdHRyaWJ1dGUgaXMgcGF0aF9zZXAuCiAjCisjIElNUE9SVEFOVDogV2hlbmV2ZXIgbWFraW5nIGNoYW5nZXMgdG8gdGhpcyBtb2R1bGUsIGJlIHN1cmUgdG8gcnVuCisjIGEgdG9wLWxldmVsIG1ha2UgaW4gb3JkZXIgdG8gZ2V0IHRoZSBmcm96ZW4gdmVyc2lvbiBvZiB0aGUgbW9kdWxlCisjIHVwZGF0ZS4gTm90IGRvaW5nIHNvLCB3aWxsIHJlc3VsdCBpbiB0aGUgTWFrZWZpbGUgdG8gZmFpbCBmb3IKKyMgYWxsIG90aGVycyB3aG8gZG9uJ3QgaGF2ZSBhIC4vcHl0aG9uIGFyb3VuZCB0byBmcmVlemUgdGhlIG1vZHVsZQorIyBpbiB0aGUgZWFybHkgc3RhZ2VzIG9mIGNvbXBpbGF0aW9uLgorIworCisjIFNlZSBpbXBvcnRsaWIuX3NldHVwKCkgZm9yIHdoYXQgaXMgaW5qZWN0ZWQgaW50byB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KKwogIyBXaGVuIGVkaXRpbmcgdGhpcyBjb2RlIGJlIGF3YXJlIHRoYXQgY29kZSBleGVjdXRlZCBhdCBpbXBvcnQgdGltZSBDQU5OT1QKICMgcmVmZXJlbmNlIGFueSBpbmplY3RlZCBvYmplY3RzISBUaGlzIGluY2x1ZGVzIG5vdCBvbmx5IGdsb2JhbCBjb2RlIGJ1dCBhbHNvCiAjIGFueXRoaW5nIHNwZWNpZmllZCBhdCB0aGUgY2xhc3MgbGV2ZWwuCiAKKyMgWFhYIE1ha2Ugc3VyZSBhbGwgcHVibGljIG5hbWVzIGhhdmUgbm8gc2luZ2xlIGxlYWRpbmcgdW5kZXJzY29yZSBhbmQgYWxsCisjICAgICBvdGhlcnMgZG8uCisKIAogIyBCb290c3RyYXAtcmVsYXRlZCBjb2RlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi0jIFhYWCBDb3VsZCBhbHNvIGV4cG9zZSBNb2R1bGVzL2dldHBhdGguYzpqb2lucGF0aCgpCi1kZWYgX3BhdGhfam9pbigqYXJncyk6Ci0gICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguam9pbi4iIiIKLSAgICByZXR1cm4gcGF0aF9zZXAuam9pbih4WzotbGVuKHBhdGhfc2VwKV0gaWYgeC5lbmRzd2l0aChwYXRoX3NlcCkgZWxzZSB4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gYXJncyBpZiB4KQorX0NBU0VfSU5TRU5TSVRJVkVfUExBVEZPUk1TID0gJ3dpbicsICdjeWd3aW4nLCAnZGFyd2luJwogCiAKLWRlZiBfcGF0aF9leGlzdHMocGF0aCk6Ci0gICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguZXhpc3RzLiIiIgotICAgIHRyeToKLSAgICAgICAgX29zLnN0YXQocGF0aCkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcmV0dXJuIEZhbHNlCitkZWYgX21ha2VfcmVsYXhfY2FzZSgpOgorICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKF9DQVNFX0lOU0VOU0lUSVZFX1BMQVRGT1JNUyk6CisgICAgICAgIGRlZiBfcmVsYXhfY2FzZSgpOgorICAgICAgICAgICAgIiIiVHJ1ZSBpZiBmaWxlbmFtZXMgbXVzdCBiZSBjaGVja2VkIGNhc2UtaW5zZW5zaXRpdmVseS4iIiIKKyAgICAgICAgICAgIHJldHVybiBiJ1BZVEhPTkNBU0VPSycgaW4gX29zLmVudmlyb24KICAgICBlbHNlOgotICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBkZWYgX3JlbGF4X2Nhc2UoKToKKyAgICAgICAgICAgICIiIlRydWUgaWYgZmlsZW5hbWVzIG11c3QgYmUgY2hlY2tlZCBjYXNlLWluc2Vuc2l0aXZlbHkuIiIiCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gX3JlbGF4X2Nhc2UKKworCisjIFRPRE86IEV4cG9zZSBmcm9tIG1hcnNoYWwKK2RlZiBfd19sb25nKHgpOgorICAgICIiIkNvbnZlcnQgYSAzMi1iaXQgaW50ZWdlciB0byBsaXR0bGUtZW5kaWFuLgorCisgICAgWFhYIFRlbXBvcmFyeSB1bnRpbCBtYXJzaGFsJ3MgbG9uZyBmdW5jdGlvbnMgYXJlIGV4cG9zZWQuCisKKyAgICAiIiIKKyAgICB4ID0gaW50KHgpCisgICAgaW50X2J5dGVzID0gW10KKyAgICBpbnRfYnl0ZXMuYXBwZW5kKHggJiAweEZGKQorICAgIGludF9ieXRlcy5hcHBlbmQoKHggPj4gOCkgJiAweEZGKQorICAgIGludF9ieXRlcy5hcHBlbmQoKHggPj4gMTYpICYgMHhGRikKKyAgICBpbnRfYnl0ZXMuYXBwZW5kKCh4ID4+IDI0KSAmIDB4RkYpCisgICAgcmV0dXJuIGJ5dGVhcnJheShpbnRfYnl0ZXMpCisKKworIyBUT0RPOiBFeHBvc2UgZnJvbSBtYXJzaGFsCitkZWYgX3JfbG9uZyhpbnRfYnl0ZXMpOgorICAgICIiIkNvbnZlcnQgNCBieXRlcyBpbiBsaXR0bGUtZW5kaWFuIHRvIGFuIGludGVnZXIuCisKKyAgICBYWFggVGVtcG9yYXJ5IHVudGlsIG1hcnNoYWwncyBsb25nIGZ1bmN0aW9uIGFyZSBleHBvc2VkLgorCisgICAgIiIiCisgICAgeCA9IGludF9ieXRlc1swXQorICAgIHggfD0gaW50X2J5dGVzWzFdIDw8IDgKKyAgICB4IHw9IGludF9ieXRlc1syXSA8PCAxNgorICAgIHggfD0gaW50X2J5dGVzWzNdIDw8IDI0CisgICAgcmV0dXJuIHgKKworCitkZWYgX3BhdGhfam9pbigqcGF0aF9wYXJ0cyk6CisgICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguam9pbigpLiIiIgorICAgIG5ld19wYXJ0cyA9IFtdCisgICAgZm9yIHBhcnQgaW4gcGF0aF9wYXJ0czoKKyAgICAgICAgaWYgbm90IHBhcnQ6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBuZXdfcGFydHMuYXBwZW5kKHBhcnQpCisgICAgICAgIGlmIHBhcnRbLTFdIG5vdCBpbiBwYXRoX3NlcGFyYXRvcnM6CisgICAgICAgICAgICBuZXdfcGFydHMuYXBwZW5kKHBhdGhfc2VwKQorICAgIHJldHVybiAnJy5qb2luKG5ld19wYXJ0c1s6LTFdKSAgIyBEcm9wIHN1cGVyZmx1b3VzIHBhdGggc2VwYXJhdG9yLgorCisKK2RlZiBfcGF0aF9zcGxpdChwYXRoKToKKyAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5zcGxpdCgpLiIiIgorICAgIGZvciB4IGluIHJldmVyc2VkKHBhdGgpOgorICAgICAgICBpZiB4IGluIHBhdGhfc2VwYXJhdG9yczoKKyAgICAgICAgICAgIHNlcCA9IHgKKyAgICAgICAgICAgIGJyZWFrCisgICAgZWxzZToKKyAgICAgICAgc2VwID0gcGF0aF9zZXAKKyAgICBmcm9udCwgXywgdGFpbCA9IHBhdGgucnBhcnRpdGlvbihzZXApCisgICAgcmV0dXJuIGZyb250LCB0YWlsCiAKIAogZGVmIF9wYXRoX2lzX21vZGVfdHlwZShwYXRoLCBtb2RlKToKQEAgLTU4LDYxICsxMTgsNDAxIEBACiAgICAgcmV0dXJuIF9wYXRoX2lzX21vZGVfdHlwZShwYXRoLCAwbzA0MDAwMCkKIAogCi1kZWYgX3BhdGhfd2l0aG91dF9leHQocGF0aCwgZXh0X3R5cGUpOgotICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLnNwbGl0ZXh0KClbMF0uIiIiCi0gICAgZm9yIHN1ZmZpeCBpbiBfc3VmZml4X2xpc3QoZXh0X3R5cGUpOgotICAgICAgICBpZiBwYXRoLmVuZHN3aXRoKHN1ZmZpeCk6Ci0gICAgICAgICAgICByZXR1cm4gcGF0aFs6LWxlbihzdWZmaXgpXQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInBhdGggaXMgbm90IG9mIHRoZSBzcGVjaWZpZWQgdHlwZSIpCi0KLQotZGVmIF9wYXRoX2Fic29sdXRlKHBhdGgpOgotICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmFic3BhdGguIiIiCi0gICAgaWYgbm90IHBhdGg6Ci0gICAgICAgIHBhdGggPSBfb3MuZ2V0Y3dkKCkKK2RlZiBfd3JpdGVfYXRvbWljKHBhdGgsIGRhdGEsIG1vZGU9MG82NjYpOgorICAgICIiIkJlc3QtZWZmb3J0IGZ1bmN0aW9uIHRvIHdyaXRlIGRhdGEgdG8gYSBwYXRoIGF0b21pY2FsbHkuCisgICAgQmUgcHJlcGFyZWQgdG8gaGFuZGxlIGEgRmlsZUV4aXN0c0Vycm9yIGlmIGNvbmN1cnJlbnQgd3JpdGluZyBvZiB0aGUKKyAgICB0ZW1wb3JhcnkgZmlsZSBpcyBhdHRlbXB0ZWQuIiIiCisgICAgIyBpZCgpIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBwc2V1ZG8tcmFuZG9tIGZpbGVuYW1lLgorICAgIHBhdGhfdG1wID0gJ3t9Lnt9Jy5mb3JtYXQocGF0aCwgaWQocGF0aCkpCisgICAgZmQgPSBfb3Mub3BlbihwYXRoX3RtcCwKKyAgICAgICAgICAgICAgICAgIF9vcy5PX0VYQ0wgfCBfb3MuT19DUkVBVCB8IF9vcy5PX1dST05MWSwgbW9kZSAmIDBvNjY2KQogICAgIHRyeToKLSAgICAgICAgcmV0dXJuIF9vcy5fZ2V0ZnVsbHBhdGhuYW1lKHBhdGgpCi0gICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoJy8nKToKLSAgICAgICAgICAgIHJldHVybiBwYXRoCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gX3BhdGhfam9pbihfb3MuZ2V0Y3dkKCksIHBhdGgpCisgICAgICAgICMgV2UgZmlyc3Qgd3JpdGUgZGF0YSB0byBhIHRlbXBvcmFyeSBmaWxlLCBhbmQgdGhlbiB1c2Ugb3MucmVwbGFjZSgpIHRvCisgICAgICAgICMgcGVyZm9ybSBhbiBhdG9taWMgcmVuYW1lLgorICAgICAgICB3aXRoIF9pby5GaWxlSU8oZmQsICd3YicpIGFzIGZpbGU6CisgICAgICAgICAgICBmaWxlLndyaXRlKGRhdGEpCisgICAgICAgIF9vcy5yZXBsYWNlKHBhdGhfdG1wLCBwYXRoKQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBfb3MudW5saW5rKHBhdGhfdG1wKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcmFpc2UKIAogCiBkZWYgX3dyYXAobmV3LCBvbGQpOgotICAgICIiIlNpbXBsZSBzdWJzdGl0dXRlIGZvciBmdW5jdG9vbHMud3JhcHMuIiIiCi0gICAgZm9yIHJlcGxhY2UgaW4gWydfX21vZHVsZV9fJywgJ19fbmFtZV9fJywgJ19fZG9jX18nXToKLSAgICAgICAgc2V0YXR0cihuZXcsIHJlcGxhY2UsIGdldGF0dHIob2xkLCByZXBsYWNlKSkKKyAgICAiIiJTaW1wbGUgc3Vic3RpdHV0ZSBmb3IgZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyLiIiIgorICAgIGZvciByZXBsYWNlIGluIFsnX19tb2R1bGVfXycsICdfX25hbWVfXycsICdfX3F1YWxuYW1lX18nLCAnX19kb2NfXyddOgorICAgICAgICBpZiBoYXNhdHRyKG9sZCwgcmVwbGFjZSk6CisgICAgICAgICAgICBzZXRhdHRyKG5ldywgcmVwbGFjZSwgZ2V0YXR0cihvbGQsIHJlcGxhY2UpKQogICAgIG5ldy5fX2RpY3RfXy51cGRhdGUob2xkLl9fZGljdF9fKQogCiAKLWNvZGVfdHlwZSA9IHR5cGUoX3dyYXAuX19jb2RlX18pCitfY29kZV90eXBlID0gdHlwZShfd3JhcC5fX2NvZGVfXykKIAotIyBGaW5kZXIvbG9hZGVyIHV0aWxpdHkgY29kZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgbmV3X21vZHVsZShuYW1lKToKKyAgICAiIiJDcmVhdGUgYSBuZXcgbW9kdWxlLgorCisgICAgVGhlIG1vZHVsZSBpcyBub3QgZW50ZXJlZCBpbnRvIHN5cy5tb2R1bGVzLgorCisgICAgIiIiCisgICAgcmV0dXJuIHR5cGUoX2lvKShuYW1lKQorCisKKyMgTW9kdWxlLWxldmVsIGxvY2tpbmcgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBBIGRpY3QgbWFwcGluZyBtb2R1bGUgbmFtZXMgdG8gd2Vha3JlZnMgb2YgX01vZHVsZUxvY2sgaW5zdGFuY2VzCitfbW9kdWxlX2xvY2tzID0ge30KKyMgQSBkaWN0IG1hcHBpbmcgdGhyZWFkIGlkcyB0byBfTW9kdWxlTG9jayBpbnN0YW5jZXMKK19ibG9ja2luZ19vbiA9IHt9CisKKworY2xhc3MgX0RlYWRsb2NrRXJyb3IoUnVudGltZUVycm9yKToKKyAgICBwYXNzCisKKworY2xhc3MgX01vZHVsZUxvY2s6CisgICAgIiIiQSByZWN1cnNpdmUgbG9jayBpbXBsZW1lbnRhdGlvbiB3aGljaCBpcyBhYmxlIHRvIGRldGVjdCBkZWFkbG9ja3MKKyAgICAoZS5nLiB0aHJlYWQgMSB0cnlpbmcgdG8gdGFrZSBsb2NrcyBBIHRoZW4gQiwgYW5kIHRocmVhZCAyIHRyeWluZyB0bworICAgIHRha2UgbG9ja3MgQiB0aGVuIEEpLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgorICAgICAgICBzZWxmLmxvY2sgPSBfdGhyZWFkLmFsbG9jYXRlX2xvY2soKQorICAgICAgICBzZWxmLndha2V1cCA9IF90aHJlYWQuYWxsb2NhdGVfbG9jaygpCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5vd25lciA9IE5vbmUKKyAgICAgICAgc2VsZi5jb3VudCA9IDAKKyAgICAgICAgc2VsZi53YWl0ZXJzID0gMAorCisgICAgZGVmIGhhc19kZWFkbG9jayhzZWxmKToKKyAgICAgICAgIyBEZWFkbG9jayBhdm9pZGFuY2UgZm9yIGNvbmN1cnJlbnQgY2lyY3VsYXIgaW1wb3J0cy4KKyAgICAgICAgbWUgPSBfdGhyZWFkLmdldF9pZGVudCgpCisgICAgICAgIHRpZCA9IHNlbGYub3duZXIKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGxvY2sgPSBfYmxvY2tpbmdfb24uZ2V0KHRpZCkKKyAgICAgICAgICAgIGlmIGxvY2sgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIHRpZCA9IGxvY2sub3duZXIKKyAgICAgICAgICAgIGlmIHRpZCA9PSBtZToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIGFjcXVpcmUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBBY3F1aXJlIHRoZSBtb2R1bGUgbG9jay4gIElmIGEgcG90ZW50aWFsIGRlYWRsb2NrIGlzIGRldGVjdGVkLAorICAgICAgICBhIF9EZWFkbG9ja0Vycm9yIGlzIHJhaXNlZC4KKyAgICAgICAgT3RoZXJ3aXNlLCB0aGUgbG9jayBpcyBhbHdheXMgYWNxdWlyZWQgYW5kIFRydWUgaXMgcmV0dXJuZWQuCisgICAgICAgICIiIgorICAgICAgICB0aWQgPSBfdGhyZWFkLmdldF9pZGVudCgpCisgICAgICAgIF9ibG9ja2luZ19vblt0aWRdID0gc2VsZgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5sb2NrOgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmNvdW50ID09IDAgb3Igc2VsZi5vd25lciA9PSB0aWQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm93bmVyID0gdGlkCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvdW50ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuaGFzX2RlYWRsb2NrKCk6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBfRGVhZGxvY2tFcnJvcigiZGVhZGxvY2sgZGV0ZWN0ZWQgYnkgJXIiICUgc2VsZikKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi53YWtldXAuYWNxdWlyZShGYWxzZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndhaXRlcnMgKz0gMQorICAgICAgICAgICAgICAgICMgV2FpdCBmb3IgYSByZWxlYXNlKCkgY2FsbAorICAgICAgICAgICAgICAgIHNlbGYud2FrZXVwLmFjcXVpcmUoKQorICAgICAgICAgICAgICAgIHNlbGYud2FrZXVwLnJlbGVhc2UoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZGVsIF9ibG9ja2luZ19vblt0aWRdCisKKyAgICBkZWYgcmVsZWFzZShzZWxmKToKKyAgICAgICAgdGlkID0gX3RocmVhZC5nZXRfaWRlbnQoKQorICAgICAgICB3aXRoIHNlbGYubG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYub3duZXIgIT0gdGlkOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiY2Fubm90IHJlbGVhc2UgdW4tYWNxdWlyZWQgbG9jayIpCisgICAgICAgICAgICBhc3NlcnQgc2VsZi5jb3VudCA+IDAKKyAgICAgICAgICAgIHNlbGYuY291bnQgLT0gMQorICAgICAgICAgICAgaWYgc2VsZi5jb3VudCA9PSAwOgorICAgICAgICAgICAgICAgIHNlbGYub3duZXIgPSBOb25lCisgICAgICAgICAgICAgICAgaWYgc2VsZi53YWl0ZXJzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLndhaXRlcnMgLT0gMQorICAgICAgICAgICAgICAgICAgICBzZWxmLndha2V1cC5yZWxlYXNlKCkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJfTW9kdWxlTG9jayglcikgYXQgJWQiICUgKHNlbGYubmFtZSwgaWQoc2VsZikpCisKKworY2xhc3MgX0R1bW15TW9kdWxlTG9jazoKKyAgICAiIiJBIHNpbXBsZSBfTW9kdWxlTG9jayBlcXVpdmFsZW50IGZvciBQeXRob24gYnVpbGRzIHdpdGhvdXQKKyAgICBtdWx0aS10aHJlYWRpbmcgc3VwcG9ydC4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLmNvdW50ID0gMAorCisgICAgZGVmIGFjcXVpcmUoc2VsZik6CisgICAgICAgIHNlbGYuY291bnQgKz0gMQorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHJlbGVhc2Uoc2VsZik6CisgICAgICAgIGlmIHNlbGYuY291bnQgPT0gMDoKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiY2Fubm90IHJlbGVhc2UgdW4tYWNxdWlyZWQgbG9jayIpCisgICAgICAgIHNlbGYuY291bnQgLT0gMQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIl9EdW1teU1vZHVsZUxvY2soJXIpIGF0ICVkIiAlIChzZWxmLm5hbWUsIGlkKHNlbGYpKQorCisKKyMgVGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIGFyZSBmb3IgY29uc3VtcHRpb24gYnkgUHl0aG9uL2ltcG9ydC5jLgorCitkZWYgX2dldF9tb2R1bGVfbG9jayhuYW1lKToKKyAgICAiIiJHZXQgb3IgY3JlYXRlIHRoZSBtb2R1bGUgbG9jayBmb3IgYSBnaXZlbiBtb2R1bGUgbmFtZS4KKworICAgIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aXRoIHRoZSBpbXBvcnQgbG9jayB0YWtlbi4iIiIKKyAgICBsb2NrID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgbG9jayA9IF9tb2R1bGVfbG9ja3NbbmFtZV0oKQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGlmIGxvY2sgaXMgTm9uZToKKyAgICAgICAgaWYgX3RocmVhZCBpcyBOb25lOgorICAgICAgICAgICAgbG9jayA9IF9EdW1teU1vZHVsZUxvY2sobmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvY2sgPSBfTW9kdWxlTG9jayhuYW1lKQorICAgICAgICBkZWYgY2IoXyk6CisgICAgICAgICAgICBkZWwgX21vZHVsZV9sb2Nrc1tuYW1lXQorICAgICAgICBfbW9kdWxlX2xvY2tzW25hbWVdID0gX3dlYWtyZWYucmVmKGxvY2ssIGNiKQorICAgIHJldHVybiBsb2NrCisKK2RlZiBfbG9ja191bmxvY2tfbW9kdWxlKG5hbWUpOgorICAgICIiIlJlbGVhc2UgdGhlIGdsb2JhbCBpbXBvcnQgbG9jaywgYW5kIGFjcXVpcmVzIHRoZW4gcmVsZWFzZSB0aGUKKyAgICBtb2R1bGUgbG9jayBmb3IgYSBnaXZlbiBtb2R1bGUgbmFtZS4KKyAgICBUaGlzIGlzIHVzZWQgdG8gZW5zdXJlIGEgbW9kdWxlIGlzIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQsIGluIHRoZQorICAgIGV2ZW50IGl0IGlzIGJlaW5nIGltcG9ydGVkIGJ5IGFub3RoZXIgdGhyZWFkLgorCisgICAgU2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGggdGhlIGltcG9ydCBsb2NrIHRha2VuLiIiIgorICAgIGxvY2sgPSBfZ2V0X21vZHVsZV9sb2NrKG5hbWUpCisgICAgX2ltcC5yZWxlYXNlX2xvY2soKQorICAgIHRyeToKKyAgICAgICAgbG9jay5hY3F1aXJlKCkKKyAgICBleGNlcHQgX0RlYWRsb2NrRXJyb3I6CisgICAgICAgICMgQ29uY3VycmVudCBjaXJjdWxhciBpbXBvcnQsIHdlJ2xsIGFjY2VwdCBhIHBhcnRpYWxseSBpbml0aWFsaXplZAorICAgICAgICAjIG1vZHVsZSBvYmplY3QuCisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBsb2NrLnJlbGVhc2UoKQorCisjIEZyYW1lIHN0cmlwcGluZyBtYWdpYyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChmLCAqYXJncywgKiprd2RzKToKKyAgICAiIiJyZW1vdmVfaW1wb3J0bGliX2ZyYW1lcyBpbiBpbXBvcnQuYyB3aWxsIGFsd2F5cyByZW1vdmUgc2VxdWVuY2VzCisgICAgb2YgaW1wb3J0bGliIGZyYW1lcyB0aGF0IGVuZCB3aXRoIGEgY2FsbCB0byB0aGlzIGZ1bmN0aW9uCisKKyAgICBVc2UgaXQgaW5zdGVhZCBvZiBhIG5vcm1hbCBjYWxsIGluIHBsYWNlcyB3aGVyZSBpbmNsdWRpbmcgdGhlIGltcG9ydGxpYgorICAgIGZyYW1lcyBpbnRyb2R1Y2VzIHVud2FudGVkIG5vaXNlIGludG8gdGhlIHRyYWNlYmFjayAoZS5nLiB3aGVuIGV4ZWN1dGluZworICAgIG1vZHVsZSBjb2RlKQorICAgICIiIgorICAgIHJldHVybiBmKCphcmdzLCAqKmt3ZHMpCisKKworIyBGaW5kZXIvbG9hZGVyIHV0aWxpdHkgY29kZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisiIiJNYWdpYyB3b3JkIHRvIHJlamVjdCAucHljIGZpbGVzIGdlbmVyYXRlZCBieSBvdGhlciBQeXRob24gdmVyc2lvbnMuCitJdCBzaG91bGQgY2hhbmdlIGZvciBlYWNoIGluY29tcGF0aWJsZSBjaGFuZ2UgdG8gdGhlIGJ5dGVjb2RlLgorCitUaGUgdmFsdWUgb2YgQ1IgYW5kIExGIGlzIGluY29ycG9yYXRlZCBzbyBpZiB5b3UgZXZlciByZWFkIG9yIHdyaXRlCithIC5weWMgZmlsZSBpbiB0ZXh0IG1vZGUgdGhlIG1hZ2ljIG51bWJlciB3aWxsIGJlIHdyb25nOyBhbHNvLCB0aGUKK0FwcGxlIE1QVyBjb21waWxlciBzd2FwcyB0aGVpciB2YWx1ZXMsIGJvdGNoaW5nIHN0cmluZyBjb25zdGFudHMuCisKK1RoZSBtYWdpYyBudW1iZXJzIG11c3QgYmUgc3BhY2VkIGFwYXJ0IGF0IGxlYXN0IDIgdmFsdWVzLCBhcyB0aGUKKy1VIGludGVycGV0ZXIgZmxhZyB3aWxsIGNhdXNlIE1BR0lDKzEgYmVpbmcgdXNlZC4gVGhleSBoYXZlIGJlZW4KK29kZCBudW1iZXJzIGZvciBzb21lIHRpbWUgbm93LgorCitUaGVyZSB3ZXJlIGEgdmFyaWV0eSBvZiBvbGQgc2NoZW1lcyBmb3Igc2V0dGluZyB0aGUgbWFnaWMgbnVtYmVyLgorVGhlIGN1cnJlbnQgd29ya2luZyBzY2hlbWUgaXMgdG8gaW5jcmVtZW50IHRoZSBwcmV2aW91cyB2YWx1ZSBieQorMTAuCisKK1N0YXJ0aW5nIHdpdGggdGhlIGFkb3B0aW9uIG9mIFBFUCAzMTQ3IGluIFB5dGhvbiAzLjIsIGV2ZXJ5IGJ1bXAgaW4gbWFnaWMKK251bWJlciBhbHNvIGluY2x1ZGVzIGEgbmV3ICJtYWdpYyB0YWciLCBpLmUuIGEgaHVtYW4gcmVhZGFibGUgc3RyaW5nIHVzZWQKK3RvIHJlcHJlc2VudCB0aGUgbWFnaWMgbnVtYmVyIGluIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzLiAgV2hlbiB5b3UgY2hhbmdlCit0aGUgbWFnaWMgbnVtYmVyLCB5b3UgbXVzdCBhbHNvIHNldCBhIG5ldyB1bmlxdWUgbWFnaWMgdGFnLiAgR2VuZXJhbGx5IHRoaXMKK2NhbiBiZSBuYW1lZCBhZnRlciB0aGUgUHl0aG9uIG1ham9yIHZlcnNpb24gb2YgdGhlIG1hZ2ljIG51bWJlciBidW1wLCBidXQKK2l0IGNhbiByZWFsbHkgYmUgYW55dGhpbmcsIGFzIGxvbmcgYXMgaXQncyBkaWZmZXJlbnQgdGhhbiBhbnl0aGluZyBlbHNlCit0aGF0J3MgY29tZSBiZWZvcmUuICBUaGUgdGFncyBhcmUgaW5jbHVkZWQgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSwgc3RhcnRpbmcKK3dpdGggUHl0aG9uIDMuMmEwLgorCitLbm93biB2YWx1ZXM6CisgUHl0aG9uIDEuNTogICAyMDEyMQorIFB5dGhvbiAxLjUuMTogMjAxMjEKKyAgICBQeXRob24gMS41LjI6IDIwMTIxCisgICAgUHl0aG9uIDEuNjogICA1MDQyOAorICAgIFB5dGhvbiAyLjA6ICAgNTA4MjMKKyAgICBQeXRob24gMi4wLjE6IDUwODIzCisgICAgUHl0aG9uIDIuMTogICA2MDIwMgorICAgIFB5dGhvbiAyLjEuMTogNjAyMDIKKyAgICBQeXRob24gMi4xLjI6IDYwMjAyCisgICAgUHl0aG9uIDIuMjogICA2MDcxNworICAgIFB5dGhvbiAyLjNhMDogNjIwMTEKKyAgICBQeXRob24gMi4zYTA6IDYyMDIxCisgICAgUHl0aG9uIDIuM2EwOiA2MjAxMSAoISkKKyAgICBQeXRob24gMi40YTA6IDYyMDQxCisgICAgUHl0aG9uIDIuNGEzOiA2MjA1MQorICAgIFB5dGhvbiAyLjRiMTogNjIwNjEKKyAgICBQeXRob24gMi41YTA6IDYyMDcxCisgICAgUHl0aG9uIDIuNWEwOiA2MjA4MSAoYXN0LWJyYW5jaCkKKyAgICBQeXRob24gMi41YTA6IDYyMDkxICh3aXRoKQorICAgIFB5dGhvbiAyLjVhMDogNjIwOTIgKGNoYW5nZWQgV0lUSF9DTEVBTlVQIG9wY29kZSkKKyAgICBQeXRob24gMi41YjM6IDYyMTAxIChmaXggd3JvbmcgY29kZTogZm9yIHgsIGluIC4uLikKKyAgICBQeXRob24gMi41YjM6IDYyMTExIChmaXggd3JvbmcgY29kZTogeCArPSB5aWVsZCkKKyAgICBQeXRob24gMi41YzE6IDYyMTIxIChmaXggd3JvbmcgbG5vdGFiIHdpdGggZm9yIGxvb3BzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JpbmcgY29uc3RhbnRzIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkKQorICAgIFB5dGhvbiAyLjVjMjogNjIxMzEgKGZpeCB3cm9uZyBjb2RlOiBmb3IgeCwgaW4gLi4uIGluIGxpc3Rjb21wL2dlbmV4cCkKKyAgICBQeXRob24gMi42YTA6IDYyMTUxIChwZWVwaG9sZSBvcHRpbWl6YXRpb25zIGFuZCBTVE9SRV9NQVAgb3Bjb2RlKQorICAgIFB5dGhvbiAyLjZhMTogNjIxNjEgKFdJVEhfQ0xFQU5VUCBvcHRpbWl6YXRpb24pCisgICAgUHl0aG9uIDMwMDA6ICAgMzAwMAorICAgICAgICAgICAgICAgICAgIDMwMTAgKHJlbW92ZWQgVU5BUllfQ09OVkVSVCkKKyAgICAgICAgICAgICAgICAgICAzMDIwIChhZGRlZCBCVUlMRF9TRVQpCisgICAgICAgICAgICAgICAgICAgMzAzMCAoYWRkZWQga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAgICAgMzA0MCAoYWRkZWQgc2lnbmF0dXJlIGFubm90YXRpb25zKQorICAgICAgICAgICAgICAgICAgIDMwNTAgKHByaW50IGJlY29tZXMgYSBmdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAzMDYwIChQRVAgMzExNSBtZXRhY2xhc3Mgc3ludGF4KQorICAgICAgICAgICAgICAgICAgIDMwNjEgKHN0cmluZyBsaXRlcmFscyBiZWNvbWUgdW5pY29kZSkKKyAgICAgICAgICAgICAgICAgICAzMDcxIChQRVAgMzEwOSByYWlzZSBjaGFuZ2VzKQorICAgICAgICAgICAgICAgICAgIDMwODEgKFBFUCAzMTM3IG1ha2UgX19maWxlX18gYW5kIF9fbmFtZV9fIHVuaWNvZGUpCisgICAgICAgICAgICAgICAgICAgMzA5MSAoa2lsbCBzdHI4IGludGVybmluZykKKyAgICAgICAgICAgICAgICAgICAzMTAxIChtZXJnZSBmcm9tIDIuNmEwLCBzZWUgNjIxNTEpCisgICAgICAgICAgICAgICAgICAgMzEwMyAoX19maWxlX18gcG9pbnRzIHRvIHNvdXJjZSBmaWxlKQorICAgIFB5dGhvbiAzLjBhNDogMzExMSAoV0lUSF9DTEVBTlVQIG9wdGltaXphdGlvbikuCisgICAgUHl0aG9uIDMuMGE1OiAzMTMxIChsZXhpY2FsIGV4Y2VwdGlvbiBzdGFja2luZywgaW5jbHVkaW5nIFBPUF9FWENFUFQpCisgICAgUHl0aG9uIDMuMWEwOiAzMTQxIChvcHRpbWl6ZSBsaXN0LCBzZXQgYW5kIGRpY3QgY29tcHJlaGVuc2lvbnM6CisgICAgICAgICAgICBjaGFuZ2UgTElTVF9BUFBFTkQgYW5kIFNFVF9BREQsIGFkZCBNQVBfQUREKQorICAgIFB5dGhvbiAzLjFhMDogMzE1MSAob3B0aW1pemUgY29uZGl0aW9uYWwgYnJhbmNoZXM6CisgICAgICAgICAgICBpbnRyb2R1Y2UgUE9QX0pVTVBfSUZfRkFMU0UgYW5kIFBPUF9KVU1QX0lGX1RSVUUpCisgICAgUHl0aG9uIDMuMmEwOiAzMTYwIChhZGQgU0VUVVBfV0lUSCkKKyAgICAgICAgICAgICAgICAgIHRhZzogY3B5dGhvbi0zMgorICAgIFB5dGhvbiAzLjJhMTogMzE3MCAoYWRkIERVUF9UT1BfVFdPLCByZW1vdmUgRFVQX1RPUFggYW5kIFJPVF9GT1VSKQorICAgICAgICAgICAgICAgICAgdGFnOiBjcHl0aG9uLTMyCisgICAgUHl0aG9uIDMuMmEyICAzMTgwIChhZGQgREVMRVRFX0RFUkVGKQorICAgIFB5dGhvbiAzLjNhMCAgMzE5MCBfX2NsYXNzX18gc3VwZXIgY2xvc3VyZSBjaGFuZ2VkCisgICAgUHl0aG9uIDMuM2EwICAzMjAwIChfX3F1YWxuYW1lX18gYWRkZWQpCisgICAgICAgICAgICAgICAgICAgICAzMjEwIChhZGRlZCBzaXplIG1vZHVsbyAyKiozMiB0byB0aGUgcHljIGhlYWRlcikKKyAgICBQeXRob24gMy4zYTEgIDMyMjAgKGNoYW5nZWQgUEVQIDM4MCBpbXBsZW1lbnRhdGlvbikKKyAgICBQeXRob24gMy4zYTQgIDMyMzAgKHJldmVydCBjaGFuZ2VzIHRvIGltcGxpY2l0IF9fY2xhc3NfXyBjbG9zdXJlKQorCitNQUdJQyBtdXN0IGNoYW5nZSB3aGVuZXZlciB0aGUgYnl0ZWNvZGUgZW1pdHRlZCBieSB0aGUgY29tcGlsZXIgbWF5IG5vCitsb25nZXIgYmUgdW5kZXJzdG9vZCBieSBvbGRlciBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGV2YWwgbG9vcCAodXN1YWxseQorZHVlIHRvIHRoZSBhZGRpdGlvbiBvZiBuZXcgb3Bjb2RlcykuCisKKyIiIgorX1JBV19NQUdJQ19OVU1CRVIgPSAzMjMwIHwgb3JkKCdccicpIDw8IDE2IHwgb3JkKCdcbicpIDw8IDI0CitfTUFHSUNfQllURVMgPSBieXRlcyhfUkFXX01BR0lDX05VTUJFUiA+PiBuICYgMHhmZiBmb3IgbiBpbiByYW5nZSgwLCAyNSwgOCkpCisKK19QWUNBQ0hFID0gJ19fcHljYWNoZV9fJworCitTT1VSQ0VfU1VGRklYRVMgPSBbJy5weSddICAjIF9zZXR1cCgpIGFkZHMgLnB5dyBhcyBuZWVkZWQuCisKK0RFQlVHX0JZVEVDT0RFX1NVRkZJWEVTID0gWycucHljJ10KK09QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUyA9IFsnLnB5byddCisKK2RlZiBjYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBkZWJ1Z19vdmVycmlkZT1Ob25lKToKKyAgICAiIiJHaXZlbiB0aGUgcGF0aCB0byBhIC5weSBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weWMvLnB5byBmaWxlLgorCisgICAgVGhlIC5weSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gZXhpc3Q7IHRoaXMgc2ltcGx5IHJldHVybnMgdGhlIHBhdGggdG8gdGhlCisgICAgLnB5Yy8ucHlvIGZpbGUgY2FsY3VsYXRlZCBhcyBpZiB0aGUgLnB5IGZpbGUgd2VyZSBpbXBvcnRlZC4gIFRoZSBleHRlbnNpb24KKyAgICB3aWxsIGJlIC5weWMgdW5sZXNzIHN5cy5mbGFncy5vcHRpbWl6ZSBpcyBub24temVybywgdGhlbiBpdCB3aWxsIGJlIC5weW8uCisKKyAgICBJZiBkZWJ1Z19vdmVycmlkZSBpcyBub3QgTm9uZSwgdGhlbiBpdCBtdXN0IGJlIGEgYm9vbGVhbiBhbmQgaXMgdXNlZCBpbgorICAgIHBsYWNlIG9mIHN5cy5mbGFncy5vcHRpbWl6ZS4KKworICAgIElmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZSB0aGVuIE5vdEltcGxlbWVudGVkRXJyb3IgaXMgcmFpc2VkLgorCisgICAgIiIiCisgICAgZGVidWcgPSBub3Qgc3lzLmZsYWdzLm9wdGltaXplIGlmIGRlYnVnX292ZXJyaWRlIGlzIE5vbmUgZWxzZSBkZWJ1Z19vdmVycmlkZQorICAgIGlmIGRlYnVnOgorICAgICAgICBzdWZmaXhlcyA9IERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTCisgICAgZWxzZToKKyAgICAgICAgc3VmZml4ZXMgPSBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMKKyAgICBoZWFkLCB0YWlsID0gX3BhdGhfc3BsaXQocGF0aCkKKyAgICBiYXNlX2ZpbGVuYW1lLCBzZXAsIF8gPSB0YWlsLnBhcnRpdGlvbignLicpCisgICAgdGFnID0gc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZworICAgIGlmIHRhZyBpcyBOb25lOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUnKQorICAgIGZpbGVuYW1lID0gJycuam9pbihbYmFzZV9maWxlbmFtZSwgc2VwLCB0YWcsIHN1ZmZpeGVzWzBdXSkKKyAgICByZXR1cm4gX3BhdGhfam9pbihoZWFkLCBfUFlDQUNIRSwgZmlsZW5hbWUpCisKKworZGVmIHNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpOgorICAgICIiIkdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5Yy4vLnB5byBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weSBmaWxlLgorCisgICAgVGhlIC5weWMvLnB5byBmaWxlIGRvZXMgbm90IG5lZWQgdG8gZXhpc3Q7IHRoaXMgc2ltcGx5IHJldHVybnMgdGhlIHBhdGggdG8KKyAgICB0aGUgLnB5IGZpbGUgY2FsY3VsYXRlZCB0byBjb3JyZXNwb25kIHRvIHRoZSAucHljLy5weW8gZmlsZS4gIElmIHBhdGggZG9lcworICAgIG5vdCBjb25mb3JtIHRvIFBFUCAzMTQ3IGZvcm1hdCwgVmFsdWVFcnJvciB3aWxsIGJlIHJhaXNlZC4gSWYKKyAgICBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUgdGhlbiBOb3RJbXBsZW1lbnRlZEVycm9yIGlzIHJhaXNlZC4KKworICAgICIiIgorICAgIGlmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lJykKKyAgICBoZWFkLCBweWNhY2hlX2ZpbGVuYW1lID0gX3BhdGhfc3BsaXQocGF0aCkKKyAgICBoZWFkLCBweWNhY2hlID0gX3BhdGhfc3BsaXQoaGVhZCkKKyAgICBpZiBweWNhY2hlICE9IF9QWUNBQ0hFOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fSBub3QgYm90dG9tLWxldmVsIGRpcmVjdG9yeSBpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3shcn0nLmZvcm1hdChfUFlDQUNIRSwgcGF0aCkpCisgICAgaWYgcHljYWNoZV9maWxlbmFtZS5jb3VudCgnLicpICE9IDI6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2V4cGVjdGVkIG9ubHkgMiBkb3RzIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAneyFyfScuZm9ybWF0KHB5Y2FjaGVfZmlsZW5hbWUpKQorICAgIGJhc2VfZmlsZW5hbWUgPSBweWNhY2hlX2ZpbGVuYW1lLnBhcnRpdGlvbignLicpWzBdCisgICAgcmV0dXJuIF9wYXRoX2pvaW4oaGVhZCwgYmFzZV9maWxlbmFtZSArIFNPVVJDRV9TVUZGSVhFU1swXSkKKworCitkZWYgX2dldF9zb3VyY2VmaWxlKGJ5dGVjb2RlX3BhdGgpOgorICAgICIiIkNvbnZlcnQgYSBieXRlY29kZSBmaWxlIHBhdGggdG8gYSBzb3VyY2UgcGF0aCAoaWYgcG9zc2libGUpLgorCisgICAgVGhpcyBmdW5jdGlvbiBleGlzdHMgcHVyZWx5IGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBmb3IKKyAgICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhGaWxlbmFtZXMoKSBpbiB0aGUgQyBBUEkuCisKKyAgICAiIiIKKyAgICBpZiBsZW4oYnl0ZWNvZGVfcGF0aCkgPT0gMDoKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICByZXN0LCBfLCBleHRlbnNpb24gPSBieXRlY29kZV9wYXRoLnJwYXJpdGlvbignLicpCisgICAgaWYgbm90IHJlc3Qgb3IgZXh0ZW5zaW9uLmxvd2VyKClbLTM6LTFdICE9ICcucHknOgorICAgICAgICByZXR1cm4gYnl0ZWNvZGVfcGF0aAorCisgICAgdHJ5OgorICAgICAgICBzb3VyY2VfcGF0aCA9IHNvdXJjZV9mcm9tX2NhY2hlKGJ5dGVjb2RlX3BhdGgpCisgICAgZXhjZXB0IChOb3RJbXBsZW1lbnRlZEVycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgc291cmNlX3BhdGggPSBieXRjb2RlX3BhdGhbLTE6XQorCisgICAgcmV0dXJuIHNvdXJjZV9wYXRoIGlmIF9wYXRoX2lzZmlsZShzb3VyY2Vfc3RhdHMpIGVsc2UgYnl0ZWNvZGVfcGF0aAorCisKK2RlZiBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UsICphcmdzKToKKyAgICAiIiJQcmludCB0aGUgbWVzc2FnZSB0byBzdGRlcnIgaWYgLXYvUFlUSE9OVkVSQk9TRSBpcyB0dXJuZWQgb24uIiIiCisgICAgaWYgc3lzLmZsYWdzLnZlcmJvc2U6CisgICAgICAgIGlmIG5vdCBtZXNzYWdlLnN0YXJ0c3dpdGgoKCcjJywgJ2ltcG9ydCAnKSk6CisgICAgICAgICAgICBtZXNzYWdlID0gJyMgJyArIG1lc3NhZ2UKKyAgICAgICAgcHJpbnQobWVzc2FnZS5mb3JtYXQoKmFyZ3MpLCBmaWxlPXN5cy5zdGRlcnIpCisKIAogZGVmIHNldF9wYWNrYWdlKGZ4bik6CiAgICAgIiIiU2V0IF9fcGFja2FnZV9fIG9uIHRoZSByZXR1cm5lZCBtb2R1bGUuIiIiCi0gICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dhcmdzKToKKyAgICBkZWYgc2V0X3BhY2thZ2Vfd3JhcHBlcigqYXJncywgKiprd2FyZ3MpOgogICAgICAgICBtb2R1bGUgPSBmeG4oKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBpZiBub3QgaGFzYXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycpIG9yIG1vZHVsZS5fX3BhY2thZ2VfXyBpcyBOb25lOgorICAgICAgICBpZiBnZXRhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJywgTm9uZSkgaXMgTm9uZToKICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX25hbWVfXwogICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKICAgICAgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBtb2R1bGUuX19wYWNrYWdlX18ucnBhcnRpdGlvbignLicpWzBdCiAgICAgICAgIHJldHVybiBtb2R1bGUKLSAgICBfd3JhcCh3cmFwcGVyLCBmeG4pCi0gICAgcmV0dXJuIHdyYXBwZXIKKyAgICBfd3JhcChzZXRfcGFja2FnZV93cmFwcGVyLCBmeG4pCisgICAgcmV0dXJuIHNldF9wYWNrYWdlX3dyYXBwZXIKIAogCiBkZWYgc2V0X2xvYWRlcihmeG4pOgogICAgICIiIlNldCBfX2xvYWRlcl9fIG9uIHRoZSByZXR1cm5lZCBtb2R1bGUuIiIiCi0gICAgZGVmIHdyYXBwZXIoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICBkZWYgc2V0X2xvYWRlcl93cmFwcGVyKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIG1vZHVsZSA9IGZ4bihzZWxmLCAqYXJncywgKiprd2FyZ3MpCiAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fbG9hZGVyX18nKToKICAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc2VsZgogICAgICAgICByZXR1cm4gbW9kdWxlCi0gICAgX3dyYXAod3JhcHBlciwgZnhuKQotICAgIHJldHVybiB3cmFwcGVyCisgICAgX3dyYXAoc2V0X2xvYWRlcl93cmFwcGVyLCBmeG4pCisgICAgcmV0dXJuIHNldF9sb2FkZXJfd3JhcHBlcgogCiAKIGRlZiBtb2R1bGVfZm9yX2xvYWRlcihmeG4pOgpAQCAtMTIwLDMxICs1MjAsNTQgQEAKIAogICAgIFRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24gaXMgcGFzc2VkIHRoZSBtb2R1bGUgdG8gdXNlIGluc3RlYWQgb2YgdGhlIG1vZHVsZQogICAgIG5hbWUuIFRoZSBtb2R1bGUgcGFzc2VkIGluIHRvIHRoZSBmdW5jdGlvbiBpcyBlaXRoZXIgZnJvbSBzeXMubW9kdWxlcyBpZgotICAgIGl0IGFscmVhZHkgZXhpc3RzIG9yIGlzIGEgbmV3IG1vZHVsZSB3aGljaCBoYXMgX19uYW1lX18gc2V0IGFuZCBpcyBpbnNlcnRlZAotICAgIGludG8gc3lzLm1vZHVsZXMuIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kIHRoZSBkZWNvcmF0b3IgY3JlYXRlZCB0aGUKLSAgICBtb2R1bGUgaXQgaXMgc3Vic2VxdWVudGx5IHJlbW92ZWQgZnJvbSBzeXMubW9kdWxlcy4KKyAgICBpdCBhbHJlYWR5IGV4aXN0cyBvciBpcyBhIG5ldyBtb2R1bGUuIElmIHRoZSBtb2R1bGUgaXMgbmV3LCB0aGVuIF9fbmFtZV9fCisgICAgaXMgc2V0IHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgbWV0aG9kLCBfX2xvYWRlcl9fIGlzIHNldCB0byBzZWxmLCBhbmQKKyAgICBfX3BhY2thZ2VfXyBpcyBzZXQgYWNjb3JkaW5nbHkgKGlmIHNlbGYuaXNfcGFja2FnZSgpIGlzIGRlZmluZWQpIHdpbGwgYmUgc2V0CisgICAgYmVmb3JlIGl0IGlzIHBhc3NlZCB0byB0aGUgZGVjb3JhdGVkIGZ1bmN0aW9uIChpZiBzZWxmLmlzX3BhY2thZ2UoKSBkb2VzCisgICAgbm90IHdvcmsgZm9yIHRoZSBtb2R1bGUgaXQgd2lsbCBiZSBzZXQgcG9zdC1sb2FkKS4KKworICAgIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kIHRoZSBkZWNvcmF0b3IgY3JlYXRlZCB0aGUgbW9kdWxlIGl0IGlzCisgICAgc3Vic2VxdWVudGx5IHJlbW92ZWQgZnJvbSBzeXMubW9kdWxlcy4KIAogICAgIFRoZSBkZWNvcmF0b3IgYXNzdW1lcyB0aGF0IHRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24gdGFrZXMgdGhlIG1vZHVsZSBuYW1lIGFzCiAgICAgdGhlIHNlY29uZCBhcmd1bWVudC4KIAogICAgICIiIgotICAgIGRlZiBkZWNvcmF0ZWQoc2VsZiwgZnVsbG5hbWUsICphcmdzLCAqKmt3YXJncyk6CisgICAgZGVmIG1vZHVsZV9mb3JfbG9hZGVyX3dyYXBwZXIoc2VsZiwgZnVsbG5hbWUsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzLmdldChmdWxsbmFtZSkKLSAgICAgICAgaXNfcmVsb2FkID0gYm9vbChtb2R1bGUpCisgICAgICAgIGlzX3JlbG9hZCA9IG1vZHVsZSBpcyBub3QgTm9uZQogICAgICAgICBpZiBub3QgaXNfcmVsb2FkOgogICAgICAgICAgICAgIyBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgb3BlbigpIGlzIGNhbGxlZCBhcyB0aGUgJ2lvJyBtb2R1bGUKICAgICAgICAgICAgICMgaW1wbGljaXRseSBpbXBvcnRzICdsb2NhbGUnIGFuZCB3b3VsZCBvdGhlcndpc2UgdHJpZ2dlciBhbgogICAgICAgICAgICAgIyBpbmZpbml0ZSBsb29wLgotICAgICAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoZnVsbG5hbWUpCisgICAgICAgICAgICBtb2R1bGUgPSBuZXdfbW9kdWxlKGZ1bGxuYW1lKQorICAgICAgICAgICAgIyBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgcHV0dGluZyB0aGUgbW9kdWxlIGluIHN5cy5tb2R1bGVzCisgICAgICAgICAgICAjIChvdGhlcndpc2UgYW4gb3B0aW1pemF0aW9uIHNob3J0Y3V0IGluIGltcG9ydC5jIGJlY29tZXMgd3JvbmcpCisgICAgICAgICAgICBtb2R1bGUuX19pbml0aWFsaXppbmdfXyA9IFRydWUKICAgICAgICAgICAgIHN5cy5tb2R1bGVzW2Z1bGxuYW1lXSA9IG1vZHVsZQorICAgICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBzZWxmCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXNfcGFja2FnZSA9IHNlbGYuaXNfcGFja2FnZShmdWxsbmFtZSkKKyAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIGlzX3BhY2thZ2U6CisgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IGZ1bGxuYW1lCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtb2R1bGUuX19pbml0aWFsaXppbmdfXyA9IFRydWUKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBJZiBfX3BhY2thZ2VfXyB3YXMgbm90IHNldCBhYm92ZSwgX19pbXBvcnRfXygpIHdpbGwgZG8gaXQgbGF0ZXIuCiAgICAgICAgICAgICByZXR1cm4gZnhuKHNlbGYsIG1vZHVsZSwgKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBpZiBub3QgaXNfcmVsb2FkOgogICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tmdWxsbmFtZV0KICAgICAgICAgICAgIHJhaXNlCi0gICAgX3dyYXAoZGVjb3JhdGVkLCBmeG4pCi0gICAgcmV0dXJuIGRlY29yYXRlZAorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgbW9kdWxlLl9faW5pdGlhbGl6aW5nX18gPSBGYWxzZQorICAgIF93cmFwKG1vZHVsZV9mb3JfbG9hZGVyX3dyYXBwZXIsIGZ4bikKKyAgICByZXR1cm4gbW9kdWxlX2Zvcl9sb2FkZXJfd3JhcHBlcgogCiAKIGRlZiBfY2hlY2tfbmFtZShtZXRob2QpOgpAQCAtMTU1LDM4ICs1NzgsNTEgQEAKICAgICBjb21wYXJlZCBhZ2FpbnN0LiBJZiB0aGUgY29tcGFyaXNvbiBmYWlscyB0aGVuIEltcG9ydEVycm9yIGlzIHJhaXNlZC4KIAogICAgICIiIgotICAgIGRlZiBpbm5lcihzZWxmLCBuYW1lLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBpZiBzZWxmLl9uYW1lICE9IG5hbWU6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigibG9hZGVyIGNhbm5vdCBoYW5kbGUgJXMiICUgbmFtZSkKKyAgICBkZWYgX2NoZWNrX25hbWVfd3JhcHBlcihzZWxmLCBuYW1lPU5vbmUsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUKKyAgICAgICAgZWxpZiBzZWxmLm5hbWUgIT0gbmFtZToKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJsb2FkZXIgY2Fubm90IGhhbmRsZSAlcyIgJSBuYW1lLCBuYW1lPW5hbWUpCiAgICAgICAgIHJldHVybiBtZXRob2Qoc2VsZiwgbmFtZSwgKmFyZ3MsICoqa3dhcmdzKQotICAgIF93cmFwKGlubmVyLCBtZXRob2QpCi0gICAgcmV0dXJuIGlubmVyCisgICAgX3dyYXAoX2NoZWNrX25hbWVfd3JhcHBlciwgbWV0aG9kKQorICAgIHJldHVybiBfY2hlY2tfbmFtZV93cmFwcGVyCiAKIAogZGVmIF9yZXF1aXJlc19idWlsdGluKGZ4bik6CiAgICAgIiIiRGVjb3JhdG9yIHRvIHZlcmlmeSB0aGUgbmFtZWQgbW9kdWxlIGlzIGJ1aWx0LWluLiIiIgotICAgIGRlZiB3cmFwcGVyKHNlbGYsIGZ1bGxuYW1lKToKKyAgICBkZWYgX3JlcXVpcmVzX2J1aWx0aW5fd3JhcHBlcihzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgIGlmIGZ1bGxuYW1lIG5vdCBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXM6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiezB9IGlzIG5vdCBhIGJ1aWx0LWluIG1vZHVsZSIuZm9ybWF0KGZ1bGxuYW1lKSkKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJ7fSBpcyBub3QgYSBidWlsdC1pbiBtb2R1bGUiLmZvcm1hdChmdWxsbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lKQogICAgICAgICByZXR1cm4gZnhuKHNlbGYsIGZ1bGxuYW1lKQotICAgIF93cmFwKHdyYXBwZXIsIGZ4bikKLSAgICByZXR1cm4gd3JhcHBlcgorICAgIF93cmFwKF9yZXF1aXJlc19idWlsdGluX3dyYXBwZXIsIGZ4bikKKyAgICByZXR1cm4gX3JlcXVpcmVzX2J1aWx0aW5fd3JhcHBlcgogCiAKIGRlZiBfcmVxdWlyZXNfZnJvemVuKGZ4bik6CiAgICAgIiIiRGVjb3JhdG9yIHRvIHZlcmlmeSB0aGUgbmFtZWQgbW9kdWxlIGlzIGZyb3plbi4iIiIKLSAgICBkZWYgd3JhcHBlcihzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgIGlmIG5vdCBpbXAuaXNfZnJvemVuKGZ1bGxuYW1lKToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJ7MH0gaXMgbm90IGEgZnJvemVuIG1vZHVsZSIuZm9ybWF0KGZ1bGxuYW1lKSkKKyAgICBkZWYgX3JlcXVpcmVzX2Zyb3plbl93cmFwcGVyKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgaWYgbm90IF9pbXAuaXNfZnJvemVuKGZ1bGxuYW1lKToKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJ7fSBpcyBub3QgYSBmcm96ZW4gbW9kdWxlIi5mb3JtYXQoZnVsbG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkKICAgICAgICAgcmV0dXJuIGZ4bihzZWxmLCBmdWxsbmFtZSkKLSAgICBfd3JhcCh3cmFwcGVyLCBmeG4pCi0gICAgcmV0dXJuIHdyYXBwZXIKKyAgICBfd3JhcChfcmVxdWlyZXNfZnJvemVuX3dyYXBwZXIsIGZ4bikKKyAgICByZXR1cm4gX3JlcXVpcmVzX2Zyb3plbl93cmFwcGVyCiAKIAotZGVmIF9zdWZmaXhfbGlzdChzdWZmaXhfdHlwZSk6Ci0gICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBmaWxlIHN1ZmZpeGVzIGJhc2VkIG9uIHRoZSBpbXAgZmlsZSB0eXBlLiIiIgotICAgIHJldHVybiBbc3VmZml4WzBdIGZvciBzdWZmaXggaW4gaW1wLmdldF9zdWZmaXhlcygpCi0gICAgICAgICAgICBpZiBzdWZmaXhbMl0gPT0gc3VmZml4X3R5cGVdCitkZWYgX2ZpbmRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpOgorICAgICIiIlRyeSB0byBmaW5kIGEgbG9hZGVyIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZSBieSBkZWxlZ2F0aW5nIHRvCisgICAgc2VsZi5maW5kX2xvYWRlcigpLiIiIgorICAgICMgQ2FsbCBmaW5kX2xvYWRlcigpLiBJZiBpdCByZXR1cm5zIGEgc3RyaW5nIChpbmRpY2F0aW5nIHRoaXMKKyAgICAjIGlzIGEgbmFtZXNwYWNlIHBhY2thZ2UgcG9ydGlvbiksIGdlbmVyYXRlIGEgd2FybmluZyBhbmQKKyAgICAjIHJldHVybiBOb25lLgorICAgIGxvYWRlciwgcG9ydGlvbnMgPSBzZWxmLmZpbmRfbG9hZGVyKGZ1bGxuYW1lKQorICAgIGlmIGxvYWRlciBpcyBOb25lIGFuZCBsZW4ocG9ydGlvbnMpOgorICAgICAgICBtc2cgPSAiTm90IGltcG9ydGluZyBkaXJlY3Rvcnkge306IG1pc3NpbmcgX19pbml0X18iCisgICAgICAgIF93YXJuaW5ncy53YXJuKG1zZy5mb3JtYXQocG9ydGlvbnNbMF0pLCBJbXBvcnRXYXJuaW5nKQorICAgIHJldHVybiBsb2FkZXIKKworCiAKIAogIyBMb2FkZXJzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMjAxLDYgKzYzNywxMCBAQAogICAgICIiIgogCiAgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG1vZHVsZV9yZXByKGNscywgbW9kdWxlKToKKyAgICAgICAgcmV0dXJuICI8bW9kdWxlICd7fScgKGJ1aWx0LWluKT4iLmZvcm1hdChtb2R1bGUuX19uYW1lX18pCisKKyAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZmluZF9tb2R1bGUoY2xzLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKICAgICAgICAgIiIiRmluZCB0aGUgYnVpbHQtaW4gbW9kdWxlLgogCkBAIC0yMDksNyArNjQ5LDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIGlmIHBhdGggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gY2xzIGlmIGltcC5pc19idWlsdGluKGZ1bGxuYW1lKSBlbHNlIE5vbmUKKyAgICAgICAgcmV0dXJuIGNscyBpZiBfaW1wLmlzX2J1aWx0aW4oZnVsbG5hbWUpIGVsc2UgTm9uZQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgQHNldF9wYWNrYWdlCkBAIC0yMTksNyArNjU5LDcgQEAKICAgICAgICAgIiIiTG9hZCBhIGJ1aWx0LWluIG1vZHVsZS4iIiIKICAgICAgICAgaXNfcmVsb2FkID0gZnVsbG5hbWUgaW4gc3lzLm1vZHVsZXMKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIGltcC5pbml0X2J1aWx0aW4oZnVsbG5hbWUpCisgICAgICAgICAgICByZXR1cm4gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmluaXRfYnVpbHRpbiwgZnVsbG5hbWUpCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGlmIG5vdCBpc19yZWxvYWQgYW5kIGZ1bGxuYW1lIGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tmdWxsbmFtZV0KQEAgLTI0MCw3ICs2ODAsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIEBfcmVxdWlyZXNfYnVpbHRpbgogICAgIGRlZiBpc19wYWNrYWdlKGNscywgZnVsbG5hbWUpOgotICAgICAgICAiIiJSZXR1cm4gTm9uZSBhcyBidWlsdC1pbiBtb2R1bGUgYXJlIG5ldmVyIHBhY2thZ2VzLiIiIgorICAgICAgICAiIiJSZXR1cm4gRmFsc2UgYXMgYnVpbHQtaW4gbW9kdWxlcyBhcmUgbmV2ZXIgcGFja2FnZXMuIiIiCiAgICAgICAgIHJldHVybiBGYWxzZQogCiAKQEAgLTI1NCw5ICs2OTQsMTMgQEAKICAgICAiIiIKIAogICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBtb2R1bGVfcmVwcihjbHMsIG0pOgorICAgICAgICByZXR1cm4gIjxtb2R1bGUgJ3t9JyAoZnJvemVuKT4iLmZvcm1hdChtLl9fbmFtZV9fKQorCisgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZpbmRfbW9kdWxlKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6CiAgICAgICAgICIiIkZpbmQgYSBmcm96ZW4gbW9kdWxlLiIiIgotICAgICAgICByZXR1cm4gY2xzIGlmIGltcC5pc19mcm96ZW4oZnVsbG5hbWUpIGVsc2UgTm9uZQorICAgICAgICByZXR1cm4gY2xzIGlmIF9pbXAuaXNfZnJvemVuKGZ1bGxuYW1lKSBlbHNlIE5vbmUKIAogICAgIEBjbGFzc21ldGhvZAogICAgIEBzZXRfcGFja2FnZQpAQCAtMjY2LDcgKzcxMCwxMCBAQAogICAgICAgICAiIiJMb2FkIGEgZnJvemVuIG1vZHVsZS4iIiIKICAgICAgICAgaXNfcmVsb2FkID0gZnVsbG5hbWUgaW4gc3lzLm1vZHVsZXMKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIGltcC5pbml0X2Zyb3plbihmdWxsbmFtZSkKKyAgICAgICAgICAgIG0gPSBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKF9pbXAuaW5pdF9mcm96ZW4sIGZ1bGxuYW1lKQorICAgICAgICAgICAgIyBMZXQgb3VyIG93biBtb2R1bGVfcmVwcigpIG1ldGhvZCBwcm9kdWNlIGEgc3VpdGFibGUgcmVwci4KKyAgICAgICAgICAgIGRlbCBtLl9fZmlsZV9fCisgICAgICAgICAgICByZXR1cm4gbQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBpZiBub3QgaXNfcmVsb2FkIGFuZCBmdWxsbmFtZSBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbZnVsbG5hbWVdCkBAIC0yNzYsNyArNzIzLDcgQEAKICAgICBAX3JlcXVpcmVzX2Zyb3plbgogICAgIGRlZiBnZXRfY29kZShjbHMsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBjb2RlIG9iamVjdCBmb3IgdGhlIGZyb3plbiBtb2R1bGUuIiIiCi0gICAgICAgIHJldHVybiBpbXAuZ2V0X2Zyb3plbl9vYmplY3QoZnVsbG5hbWUpCisgICAgICAgIHJldHVybiBfaW1wLmdldF9mcm96ZW5fb2JqZWN0KGZ1bGxuYW1lKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgQF9yZXF1aXJlc19mcm96ZW4KQEAgLTI4Nyw0MCArNzM0LDExNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIEBfcmVxdWlyZXNfZnJvemVuCiAgICAgZGVmIGlzX3BhY2thZ2UoY2xzLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiBpZiB0aGUgZnJvemVuIG1vZHVsZSBpcyBhIHBhY2thZ2UuIiIiCi0gICAgICAgIHJldHVybiBpbXAuaXNfZnJvemVuX3BhY2thZ2UoZnVsbG5hbWUpCisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBmcm96ZW4gbW9kdWxlIGlzIGEgcGFja2FnZS4iIiIKKyAgICAgICAgcmV0dXJuIF9pbXAuaXNfZnJvemVuX3BhY2thZ2UoZnVsbG5hbWUpCisKKworY2xhc3MgV2luZG93c1JlZ2lzdHJ5RmluZGVyOgorCisgICAgIiIiTWV0YSBwYXRoIGZpbmRlciBmb3IgbW9kdWxlcyBkZWNsYXJlZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4KKyAgICAiIiIKKworICAgIFJFR0lTVFJZX0tFWSA9ICgKKyAgICAgICAgIlNvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXHtzeXNfdmVyc2lvbn0iCisgICAgICAgICJcXE1vZHVsZXNcXHtmdWxsbmFtZX0iKQorICAgIFJFR0lTVFJZX0tFWV9ERUJVRyA9ICgKKyAgICAgICAgIlNvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXHtzeXNfdmVyc2lvbn0iCisgICAgICAgICJcXE1vZHVsZXNcXHtmdWxsbmFtZX1cXERlYnVnIikKKyAgICBERUJVR19CVUlMRCA9IEZhbHNlICAjIENoYW5nZWQgaW4gX3NldHVwKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfb3Blbl9yZWdpc3RyeShjbHMsIGtleSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBfd2lucmVnLk9wZW5LZXkoX3dpbnJlZy5IS0VZX0NVUlJFTlRfVVNFUiwga2V5KQorICAgICAgICBleGNlcHQgV2luZG93c0Vycm9yOgorICAgICAgICAgICAgcmV0dXJuIF93aW5yZWcuT3BlbktleShfd2lucmVnLkhLRVlfTE9DQUxfTUFDSElORSwga2V5KQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9zZWFyY2hfcmVnaXN0cnkoY2xzLCBmdWxsbmFtZSk6CisgICAgICAgIGlmIGNscy5ERUJVR19CVUlMRDoKKyAgICAgICAgICAgIHJlZ2lzdHJ5X2tleSA9IGNscy5SRUdJU1RSWV9LRVlfREVCVUcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlZ2lzdHJ5X2tleSA9IGNscy5SRUdJU1RSWV9LRVkKKyAgICAgICAga2V5ID0gcmVnaXN0cnlfa2V5LmZvcm1hdChmdWxsbmFtZT1mdWxsbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNfdmVyc2lvbj1zeXMudmVyc2lvbls6M10pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggY2xzLl9vcGVuX3JlZ2lzdHJ5KGtleSkgYXMgaGtleToKKyAgICAgICAgICAgICAgICBmaWxlcGF0aCA9IF93aW5yZWcuUXVlcnlWYWx1ZShoa2V5LCAiIikKKyAgICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBmaWxlcGF0aAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZpbmRfbW9kdWxlKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6CisgICAgICAgICIiIkZpbmQgbW9kdWxlIG5hbWVkIGluIHRoZSByZWdpc3RyeS4iIiIKKyAgICAgICAgZmlsZXBhdGggPSBjbHMuX3NlYXJjaF9yZWdpc3RyeShmdWxsbmFtZSkKKyAgICAgICAgaWYgZmlsZXBhdGggaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIF9vcy5zdGF0KGZpbGVwYXRoKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGZvciBsb2FkZXIsIHN1ZmZpeGVzLCBfIGluIF9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpOgorICAgICAgICAgICAgaWYgZmlsZXBhdGguZW5kc3dpdGgodHVwbGUoc3VmZml4ZXMpKToKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9hZGVyKGZ1bGxuYW1lLCBmaWxlcGF0aCkKIAogCiBjbGFzcyBfTG9hZGVyQmFzaWNzOgogCiAgICAgIiIiQmFzZSBjbGFzcyBvZiBjb21tb24gY29kZSBuZWVkZWQgYnkgYm90aCBTb3VyY2VMb2FkZXIgYW5kCi0gICAgX1NvdXJjZWxlc3NGaWxlTG9hZGVyLiIiIgorICAgIFNvdXJjZWxlc3NGaWxlTG9hZGVyLiIiIgogCiAgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmlzX3BhY2thZ2UgYnkgY2hlY2tpbmcgaWYKICAgICAgICAgdGhlIHBhdGggcmV0dXJuZWQgYnkgZ2V0X2ZpbGVuYW1lIGhhcyBhIGZpbGVuYW1lIG9mICdfX2luaXRfXy5weScuIiIiCi0gICAgICAgIGZpbGVuYW1lID0gc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpLnJwYXJ0aXRpb24ocGF0aF9zZXApWzJdCi0gICAgICAgIHJldHVybiBmaWxlbmFtZS5yc3BsaXQoJy4nLCAxKVswXSA9PSAnX19pbml0X18nCisgICAgICAgIGZpbGVuYW1lID0gX3BhdGhfc3BsaXQoc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpKVsxXQorICAgICAgICBmaWxlbmFtZV9iYXNlID0gZmlsZW5hbWUucnNwbGl0KCcuJywgMSlbMF0KKyAgICAgICAgdGFpbF9uYW1lID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzJdCisgICAgICAgIHJldHVybiBmaWxlbmFtZV9iYXNlID09ICdfX2luaXRfXycgYW5kIHRhaWxfbmFtZSAhPSAnX19pbml0X18nCiAKLSAgICBkZWYgX2J5dGVzX2Zyb21fYnl0ZWNvZGUoc2VsZiwgZnVsbG5hbWUsIGRhdGEsIHNvdXJjZV9tdGltZSk6CisgICAgZGVmIF9ieXRlc19mcm9tX2J5dGVjb2RlKHNlbGYsIGZ1bGxuYW1lLCBkYXRhLCBieXRlY29kZV9wYXRoLCBzb3VyY2Vfc3RhdHMpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG1hcnNoYWxsZWQgYnl0ZXMgZnJvbSBieXRlY29kZSwgdmVyaWZ5aW5nIHRoZSBtYWdpYwotICAgICAgICBudW1iZXIgYW5kIHRpbWVzdGFtcCBhbG9uZyB0aGUgd2F5LgorICAgICAgICBudW1iZXIsIHRpbWVzdGFtcCBhbmQgc291cmNlIHNpemUgYWxvbmcgdGhlIHdheS4KIAotICAgICAgICBJZiBzb3VyY2VfbXRpbWUgaXMgTm9uZSB0aGVuIHNraXAgdGhlIHRpbWVzdGFtcCBjaGVjay4KKyAgICAgICAgSWYgc291cmNlX3N0YXRzIGlzIE5vbmUgdGhlbiBza2lwIHRoZSB0aW1lc3RhbXAgY2hlY2suCiAKICAgICAgICAgIiIiCiAgICAgICAgIG1hZ2ljID0gZGF0YVs6NF0KICAgICAgICAgcmF3X3RpbWVzdGFtcCA9IGRhdGFbNDo4XQotICAgICAgICBpZiBsZW4obWFnaWMpICE9IDQgb3IgbWFnaWMgIT0gaW1wLmdldF9tYWdpYygpOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoImJhZCBtYWdpYyBudW1iZXIgaW4ge30iLmZvcm1hdChmdWxsbmFtZSkpCisgICAgICAgIHJhd19zaXplID0gZGF0YVs4OjEyXQorICAgICAgICBpZiBtYWdpYyAhPSBfTUFHSUNfQllURVM6CisgICAgICAgICAgICBtc2cgPSAnYmFkIG1hZ2ljIG51bWJlciBpbiB7IXJ9OiB7IXJ9Jy5mb3JtYXQoZnVsbG5hbWUsIG1hZ2ljKQorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLCBuYW1lPWZ1bGxuYW1lLCBwYXRoPWJ5dGVjb2RlX3BhdGgpCiAgICAgICAgIGVsaWYgbGVuKHJhd190aW1lc3RhbXApICE9IDQ6Ci0gICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiYmFkIHRpbWVzdGFtcCBpbiB7fSIuZm9ybWF0KGZ1bGxuYW1lKSkKLSAgICAgICAgZWxpZiBzb3VyY2VfbXRpbWUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBtYXJzaGFsLl9yX2xvbmcocmF3X3RpbWVzdGFtcCkgIT0gc291cmNlX210aW1lOgotICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJieXRlY29kZSBpcyBzdGFsZSBmb3Ige30iLmZvcm1hdChmdWxsbmFtZSkpCisgICAgICAgICAgICBtZXNzYWdlID0gJ2JhZCB0aW1lc3RhbXAgaW4ge30nLmZvcm1hdChmdWxsbmFtZSkKKyAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKG1lc3NhZ2UpCisgICAgICAgIGVsaWYgbGVuKHJhd19zaXplKSAhPSA0OgorICAgICAgICAgICAgbWVzc2FnZSA9ICdiYWQgc2l6ZSBpbiB7fScuZm9ybWF0KGZ1bGxuYW1lKQorICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlKQorICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IobWVzc2FnZSkKKyAgICAgICAgaWYgc291cmNlX3N0YXRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNvdXJjZV9tdGltZSA9IGludChzb3VyY2Vfc3RhdHNbJ210aW1lJ10pCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBfcl9sb25nKHJhd190aW1lc3RhbXApICE9IHNvdXJjZV9tdGltZToKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICdieXRlY29kZSBpcyBzdGFsZSBmb3Ige30nLmZvcm1hdChmdWxsbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlLCBuYW1lPWZ1bGxuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPWJ5dGVjb2RlX3BhdGgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc291cmNlX3NpemUgPSBzb3VyY2Vfc3RhdHNbJ3NpemUnXSAmIDB4RkZGRkZGRkYKKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIF9yX2xvbmcocmF3X3NpemUpICE9IHNvdXJjZV9zaXplOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICJieXRlY29kZSBpcyBzdGFsZSBmb3Ige30iLmZvcm1hdChmdWxsbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lLCBwYXRoPWJ5dGVjb2RlX3BhdGgpCiAgICAgICAgICMgQ2FuJ3QgcmV0dXJuIHRoZSBjb2RlIG9iamVjdCBhcyBlcnJvcnMgZnJvbSBtYXJzaGFsIGxvYWRpbmcgbmVlZCB0bwogICAgICAgICAjIHByb3BhZ2F0ZSBldmVuIHdoZW4gc291cmNlIGlzIGF2YWlsYWJsZS4KLSAgICAgICAgcmV0dXJuIGRhdGFbODpdCisgICAgICAgIHJldHVybiBkYXRhWzEyOl0KIAogICAgIEBtb2R1bGVfZm9yX2xvYWRlcgogICAgIGRlZiBfbG9hZF9tb2R1bGUoc2VsZiwgbW9kdWxlLCAqLCBzb3VyY2VsZXNzPUZhbHNlKToKQEAgLTMzMCwxNiArODU0LDE5IEBACiAgICAgICAgIGNvZGVfb2JqZWN0ID0gc2VsZi5nZXRfY29kZShuYW1lKQogICAgICAgICBtb2R1bGUuX19maWxlX18gPSBzZWxmLmdldF9maWxlbmFtZShuYW1lKQogICAgICAgICBpZiBub3Qgc291cmNlbGVzczoKLSAgICAgICAgICAgIG1vZHVsZS5fX2NhY2hlZF9fID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKG1vZHVsZS5fX2ZpbGVfXykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtb2R1bGUuX19jYWNoZWRfXyA9IGNhY2hlX2Zyb21fc291cmNlKG1vZHVsZS5fX2ZpbGVfXykKKyAgICAgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgorICAgICAgICAgICAgICAgIG1vZHVsZS5fX2NhY2hlZF9fID0gbW9kdWxlLl9fZmlsZV9fCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtb2R1bGUuX19jYWNoZWRfXyA9IG1vZHVsZS5fX2ZpbGVfXwogICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBuYW1lCiAgICAgICAgIGlmIHNlbGYuaXNfcGFja2FnZShuYW1lKToKLSAgICAgICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IFttb2R1bGUuX19maWxlX18ucnNwbGl0KHBhdGhfc2VwLCAxKVswXV0KKyAgICAgICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IFtfcGF0aF9zcGxpdChtb2R1bGUuX19maWxlX18pWzBdXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbW9kdWxlLl9fcGFja2FnZV9fLnJwYXJ0aXRpb24oJy4nKVswXQogICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNlbGYKLSAgICAgICAgZXhlYyhjb2RlX29iamVjdCwgbW9kdWxlLl9fZGljdF9fKQorICAgICAgICBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKGV4ZWMsIGNvZGVfb2JqZWN0LCBtb2R1bGUuX19kaWN0X18pCiAgICAgICAgIHJldHVybiBtb2R1bGUKIAogCkBAIC0zNDgsMTIgKzg3NSwzMSBAQAogICAgIGRlZiBwYXRoX210aW1lKHNlbGYsIHBhdGgpOgogICAgICAgICAiIiJPcHRpb25hbCBtZXRob2QgdGhhdCByZXR1cm5zIHRoZSBtb2RpZmljYXRpb24gdGltZSAoYW4gaW50KSBmb3IgdGhlCiAgICAgICAgIHNwZWNpZmllZCBwYXRoLCB3aGVyZSBwYXRoIGlzIGEgc3RyLgotCi0gICAgICAgIEltcGxlbWVudGluZyB0aGlzIG1ldGhvZCBhbGxvd3MgdGhlIGxvYWRlciB0byByZWFkIGJ5dGVjb2RlIGZpbGVzLgotCiAgICAgICAgICIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKKyAgICBkZWYgcGF0aF9zdGF0cyhzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiT3B0aW9uYWwgbWV0aG9kIHJldHVybmluZyBhIG1ldGFkYXRhIGRpY3QgZm9yIHRoZSBzcGVjaWZpZWQgcGF0aAorICAgICAgICB0byBieSB0aGUgcGF0aCAoc3RyKS4KKyAgICAgICAgUG9zc2libGUga2V5czoKKyAgICAgICAgLSAnbXRpbWUnIChtYW5kYXRvcnkpIGlzIHRoZSBudW1lcmljIHRpbWVzdGFtcCBvZiBsYXN0IHNvdXJjZQorICAgICAgICAgIGNvZGUgbW9kaWZpY2F0aW9uOworICAgICAgICAtICdzaXplJyAob3B0aW9uYWwpIGlzIHRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSBzb3VyY2UgY29kZS4KKworICAgICAgICBJbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QgYWxsb3dzIHRoZSBsb2FkZXIgdG8gcmVhZCBieXRlY29kZSBmaWxlcy4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiB7J210aW1lJzogc2VsZi5wYXRoX210aW1lKHBhdGgpfQorCisgICAgZGVmIF9jYWNoZV9ieXRlY29kZShzZWxmLCBzb3VyY2VfcGF0aCwgY2FjaGVfcGF0aCwgZGF0YSk6CisgICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCB3aGljaCB3cml0ZXMgZGF0YSAoYnl0ZXMpIHRvIGEgZmlsZSBwYXRoIChhIHN0cikuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kIGFsbG93cyBmb3IgdGhlIHdyaXRpbmcgb2YgYnl0ZWNvZGUgZmlsZXMuCisKKyAgICAgICAgVGhlIHNvdXJjZSBwYXRoIGlzIG5lZWRlZCBpbiBvcmRlciB0byBjb3JyZWN0bHkgdHJhbnNmZXIgcGVybWlzc2lvbnMKKyAgICAgICAgIiIiCisgICAgICAgICMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB3ZSBkZWxlZ2F0ZSB0byBzZXRfZGF0YSgpCisgICAgICAgIHJldHVybiBzZWxmLnNldF9kYXRhKGNhY2hlX3BhdGgsIGRhdGEpCisKICAgICBkZWYgc2V0X2RhdGEoc2VsZiwgcGF0aCwgZGF0YSk6CiAgICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCB3aGljaCB3cml0ZXMgZGF0YSAoYnl0ZXMpIHRvIGEgZmlsZSBwYXRoIChhIHN0cikuCiAKQEAgLTM2OSwyOCArOTE1LDQyIEBACiAgICAgICAgIHBhdGggPSBzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc291cmNlX2J5dGVzID0gc2VsZi5nZXRfZGF0YShwYXRoKQotICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJzb3VyY2Ugbm90IGF2YWlsYWJsZSB0aHJvdWdoIGdldF9kYXRhKCkiKQotICAgICAgICBlbmNvZGluZyA9IHRva2VuaXplLmRldGVjdF9lbmNvZGluZyhfaW8uQnl0ZXNJTyhzb3VyY2VfYnl0ZXMpLnJlYWRsaW5lKQorICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBleGM6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigic291cmNlIG5vdCBhdmFpbGFibGUgdGhyb3VnaCBnZXRfZGF0YSgpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUpIGZyb20gZXhjCisgICAgICAgIHJlYWRzb3VyY2UgPSBfaW8uQnl0ZXNJTyhzb3VyY2VfYnl0ZXMpLnJlYWRsaW5lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGVuY29kaW5nID0gdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKHJlYWRzb3VyY2UpCisgICAgICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyBleGM6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiRmFpbGVkIHRvIGRldGVjdCBlbmNvZGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lKSBmcm9tIGV4YwogICAgICAgICBuZXdsaW5lX2RlY29kZXIgPSBfaW8uSW5jcmVtZW50YWxOZXdsaW5lRGVjb2RlcihOb25lLCBUcnVlKQotICAgICAgICByZXR1cm4gbmV3bGluZV9kZWNvZGVyLmRlY29kZShzb3VyY2VfYnl0ZXMuZGVjb2RlKGVuY29kaW5nWzBdKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIG5ld2xpbmVfZGVjb2Rlci5kZWNvZGUoc291cmNlX2J5dGVzLmRlY29kZShlbmNvZGluZ1swXSkpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIkZhaWxlZCB0byBkZWNvZGUgc291cmNlIGZpbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkgZnJvbSBleGMKIAogICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIkNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIEluc3BlY3RMb2FkZXIuZ2V0X2NvZGUuCiAKLSAgICAgICAgUmVhZGluZyBvZiBieXRlY29kZSByZXF1aXJlcyBwYXRoX210aW1lIHRvIGJlIGltcGxlbWVudGVkLiBUbyB3cml0ZQorICAgICAgICBSZWFkaW5nIG9mIGJ5dGVjb2RlIHJlcXVpcmVzIHBhdGhfc3RhdHMgdG8gYmUgaW1wbGVtZW50ZWQuIFRvIHdyaXRlCiAgICAgICAgIGJ5dGVjb2RlLCBzZXRfZGF0YSBtdXN0IGFsc28gYmUgaW1wbGVtZW50ZWQuCiAKICAgICAgICAgIiIiCiAgICAgICAgIHNvdXJjZV9wYXRoID0gc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpCi0gICAgICAgIGJ5dGVjb2RlX3BhdGggPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2Uoc291cmNlX3BhdGgpCiAgICAgICAgIHNvdXJjZV9tdGltZSA9IE5vbmUKLSAgICAgICAgaWYgYnl0ZWNvZGVfcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IGNhY2hlX2Zyb21fc291cmNlKHNvdXJjZV9wYXRoKQorICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKKyAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBOb25lCisgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc291cmNlX210aW1lID0gc2VsZi5wYXRoX210aW1lKHNvdXJjZV9wYXRoKQorICAgICAgICAgICAgICAgIHN0ID0gc2VsZi5wYXRoX3N0YXRzKHNvdXJjZV9wYXRoKQogICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgPSBpbnQoc3RbJ210aW1lJ10pCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5nZXRfZGF0YShieXRlY29kZV9wYXRoKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgpAQCAtMzk4LDI5ICs5NTgsMzcgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc19kYXRhID0gc2VsZi5fYnl0ZXNfZnJvbV9ieXRlY29kZShmdWxsbmFtZSwgZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9tdGltZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdCkKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgRU9GRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgne30gbWF0Y2hlcyB7fScsIGJ5dGVjb2RlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX3BhdGgpCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IG1hcnNoYWwubG9hZHMoYnl0ZXNfZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZm91bmQsIGNvZGVfdHlwZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZvdW5kLCBfY29kZV90eXBlKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaW1wLl9maXhfY29fZmlsZW5hbWUoZm91bmQsIHNvdXJjZV9wYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20ge30nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlY29kZV9wYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZAogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAiTm9uLWNvZGUgb2JqZWN0IGluIHt9IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQoYnl0ZWNvZGVfcGF0aCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLmZvcm1hdChieXRlY29kZV9wYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lLCBwYXRoPWJ5dGVjb2RlX3BhdGgpCiAgICAgICAgIHNvdXJjZV9ieXRlcyA9IHNlbGYuZ2V0X2RhdGEoc291cmNlX3BhdGgpCi0gICAgICAgIGNvZGVfb2JqZWN0ID0gY29tcGlsZShzb3VyY2VfYnl0ZXMsIHNvdXJjZV9wYXRoLCAnZXhlYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbnRfaW5oZXJpdD1UcnVlKQorICAgICAgICBjb2RlX29iamVjdCA9IF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoY29tcGlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2J5dGVzLCBzb3VyY2VfcGF0aCwgJ2V4ZWMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkb250X2luaGVyaXQ9VHJ1ZSkKKyAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7fScsIHNvdXJjZV9wYXRoKQogICAgICAgICBpZiAobm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlIGFuZCBieXRlY29kZV9wYXRoIGlzIG5vdCBOb25lIGFuZAotICAgICAgICAgICAgICAgIHNvdXJjZV9tdGltZSBpcyBub3QgTm9uZSk6Ci0gICAgICAgICAgICAjIElmIGUuZy4gSnl0aG9uIGV2ZXIgaW1wbGVtZW50cyBpbXAuY2FjaGVfZnJvbV9zb3VyY2UgdG8gaGF2ZQotICAgICAgICAgICAgIyB0aGVpciBvd24gY2FjaGVkIGZpbGUgZm9ybWF0LCB0aGlzIGJsb2NrIG9mIGNvZGUgd2lsbCBtb3N0IGxpa2VseQotICAgICAgICAgICAgIyByYWlzZSBhbiBleGNlcHRpb24uCi0gICAgICAgICAgICBkYXRhID0gYnl0ZWFycmF5KGltcC5nZXRfbWFnaWMoKSkKLSAgICAgICAgICAgIGRhdGEuZXh0ZW5kKG1hcnNoYWwuX3dfbG9uZyhzb3VyY2VfbXRpbWUpKQorICAgICAgICAgICAgc291cmNlX210aW1lIGlzIG5vdCBOb25lKToKKyAgICAgICAgICAgIGRhdGEgPSBieXRlYXJyYXkoX01BR0lDX0JZVEVTKQorICAgICAgICAgICAgZGF0YS5leHRlbmQoX3dfbG9uZyhzb3VyY2VfbXRpbWUpKQorICAgICAgICAgICAgZGF0YS5leHRlbmQoX3dfbG9uZyhsZW4oc291cmNlX2J5dGVzKSkpCiAgICAgICAgICAgICBkYXRhLmV4dGVuZChtYXJzaGFsLmR1bXBzKGNvZGVfb2JqZWN0KSkKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLnNldF9kYXRhKGJ5dGVjb2RlX3BhdGgsIGRhdGEpCisgICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVfYnl0ZWNvZGUoc291cmNlX3BhdGgsIGJ5dGVjb2RlX3BhdGgsIGRhdGEpCisgICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnd3JvdGUgeyFyfScsIGJ5dGVjb2RlX3BhdGgpCiAgICAgICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHJldHVybiBjb2RlX29iamVjdApAQCAtNDM2LDcgKzEwMDQsNyBAQAogICAgICAgICByZXR1cm4gc2VsZi5fbG9hZF9tb2R1bGUoZnVsbG5hbWUpCiAKIAotY2xhc3MgX0ZpbGVMb2FkZXI6CitjbGFzcyBGaWxlTG9hZGVyOgogCiAgICAgIiIiQmFzZSBmaWxlIGxvYWRlciBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIHRoZSBsb2FkZXIgcHJvdG9jb2wgbWV0aG9kcyB0aGF0CiAgICAgcmVxdWlyZSBmaWxlIHN5c3RlbSB1c2FnZS4iIiIKQEAgLTQ0NCwxMyArMTAxMiwyMCBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdWxsbmFtZSwgcGF0aCk6CiAgICAgICAgICIiIkNhY2hlIHRoZSBtb2R1bGUgbmFtZSBhbmQgdGhlIHBhdGggdG8gdGhlIGZpbGUgZm91bmQgYnkgdGhlCiAgICAgICAgIGZpbmRlci4iIiIKLSAgICAgICAgc2VsZi5fbmFtZSA9IGZ1bGxuYW1lCi0gICAgICAgIHNlbGYuX3BhdGggPSBwYXRoCisgICAgICAgIHNlbGYubmFtZSA9IGZ1bGxuYW1lCisgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKworICAgIEBfY2hlY2tfbmFtZQorICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIkxvYWQgYSBtb2R1bGUgZnJvbSBhIGZpbGUuIiIiCisgICAgICAgICMgSXNzdWUgIzE0ODU3OiBBdm9pZCB0aGUgemVyby1hcmd1bWVudCBmb3JtIHNvIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICAjIG9mIHRoYXQgZm9ybSBjYW4gYmUgdXBkYXRlZCB3aXRob3V0IGJyZWFraW5nIHRoZSBmcm96ZW4gbW9kdWxlCisgICAgICAgIHJldHVybiBzdXBlcihGaWxlTG9hZGVyLCBzZWxmKS5sb2FkX21vZHVsZShmdWxsbmFtZSkKIAogICAgIEBfY2hlY2tfbmFtZQogICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHBhdGggdG8gdGhlIHNvdXJjZSBmaWxlIGFzIGZvdW5kIGJ5IHRoZSBmaW5kZXIuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9wYXRoCisgICAgICAgIHJldHVybiBzZWxmLnBhdGgKIAogICAgIGRlZiBnZXRfZGF0YShzZWxmLCBwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBkYXRhIGZyb20gcGF0aCBhcyByYXcgYnl0ZXMuIiIiCkBAIC00NTgsNTIgKzEwMzMsNTYgQEAKICAgICAgICAgICAgIHJldHVybiBmaWxlLnJlYWQoKQogCiAKLWNsYXNzIF9Tb3VyY2VGaWxlTG9hZGVyKF9GaWxlTG9hZGVyLCBTb3VyY2VMb2FkZXIpOgorY2xhc3MgU291cmNlRmlsZUxvYWRlcihGaWxlTG9hZGVyLCBTb3VyY2VMb2FkZXIpOgogCiAgICAgIiIiQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgU291cmNlTG9hZGVyIHVzaW5nIHRoZSBmaWxlIHN5c3RlbS4iIiIKIAotICAgIGRlZiBwYXRoX210aW1lKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIG1vZGlmaWNhdGlvbiB0aW1lIGZvciB0aGUgcGF0aC4iIiIKLSAgICAgICAgcmV0dXJuIGludChfb3Muc3RhdChwYXRoKS5zdF9tdGltZSkKKyAgICBkZWYgcGF0aF9zdGF0cyhzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBtZXRhZGF0YSBmb3IgdGhlIHBhdGguIiIiCisgICAgICAgIHN0ID0gX29zLnN0YXQocGF0aCkKKyAgICAgICAgcmV0dXJuIHsnbXRpbWUnOiBzdC5zdF9tdGltZSwgJ3NpemUnOiBzdC5zdF9zaXplfQogCi0gICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpOgorICAgIGRlZiBfY2FjaGVfYnl0ZWNvZGUoc2VsZiwgc291cmNlX3BhdGgsIGJ5dGVjb2RlX3BhdGgsIGRhdGEpOgorICAgICAgICAjIEFkYXB0IGJldHdlZW4gdGhlIHR3byBBUElzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1vZGUgPSBfb3Muc3RhdChzb3VyY2VfcGF0aCkuc3RfbW9kZQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIG1vZGUgPSAwbzY2NgorICAgICAgICAjIFdlIGFsd2F5cyBlbnN1cmUgd3JpdGUgYWNjZXNzIHNvIHdlIGNhbiB1cGRhdGUgY2FjaGVkIGZpbGVzCisgICAgICAgICMgbGF0ZXIgZXZlbiB3aGVuIHRoZSBzb3VyY2UgZmlsZXMgYXJlIHJlYWQtb25seSBvbiBXaW5kb3dzICgjNjA3NCkKKyAgICAgICAgbW9kZSB8PSAwbzIwMAorICAgICAgICByZXR1cm4gc2VsZi5zZXRfZGF0YShieXRlY29kZV9wYXRoLCBkYXRhLCBfbW9kZT1tb2RlKQorCisgICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEsICosIF9tb2RlPTBvNjY2KToKICAgICAgICAgIiIiV3JpdGUgYnl0ZXMgZGF0YSB0byBhIGZpbGUuIiIiCi0gICAgICAgIHBhcmVudCwgXywgZmlsZW5hbWUgPSBwYXRoLnJwYXJ0aXRpb24ocGF0aF9zZXApCisgICAgICAgIHBhcmVudCwgZmlsZW5hbWUgPSBfcGF0aF9zcGxpdChwYXRoKQogICAgICAgICBwYXRoX3BhcnRzID0gW10KICAgICAgICAgIyBGaWd1cmUgb3V0IHdoYXQgZGlyZWN0b3JpZXMgYXJlIG1pc3NpbmcuCiAgICAgICAgIHdoaWxlIHBhcmVudCBhbmQgbm90IF9wYXRoX2lzZGlyKHBhcmVudCk6Ci0gICAgICAgICAgICBwYXJlbnQsIF8sIHBhcnQgPSBwYXJlbnQucnBhcnRpdGlvbihwYXRoX3NlcCkKKyAgICAgICAgICAgIHBhcmVudCwgcGFydCA9IF9wYXRoX3NwbGl0KHBhcmVudCkKICAgICAgICAgICAgIHBhdGhfcGFydHMuYXBwZW5kKHBhcnQpCiAgICAgICAgICMgQ3JlYXRlIG5lZWRlZCBkaXJlY3Rvcmllcy4KICAgICAgICAgZm9yIHBhcnQgaW4gcmV2ZXJzZWQocGF0aF9wYXJ0cyk6CiAgICAgICAgICAgICBwYXJlbnQgPSBfcGF0aF9qb2luKHBhcmVudCwgcGFydCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBfb3MubWtkaXIocGFyZW50KQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKICAgICAgICAgICAgICAgICAjIFByb2JhYmx5IGFub3RoZXIgUHl0aG9uIHByb2Nlc3MgYWxyZWFkeSBjcmVhdGVkIHRoZSBkaXIuCi0gICAgICAgICAgICAgICAgaWYgZXhjLmVycm5vID09IGVycm5vLkVFWElTVDoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgICAgICMgSWYgY2FuJ3QgZ2V0IHByb3BlciBhY2Nlc3MsIHRoZW4ganVzdCBmb3JnZXQgYWJvdXQgd3JpdGluZwotICAgICAgICAgICAgICAgICMgdGhlIGRhdGEuCi0gICAgICAgICAgICAgICAgaWYgZXhjLmVycm5vID09IGVycm5vLkVBQ0NFUzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBfaW8uRmlsZUlPKHBhdGgsICd3YicpIGFzIGZpbGU6Ci0gICAgICAgICAgICAgICAgZmlsZS53cml0ZShkYXRhKQotICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBleGM6Ci0gICAgICAgICAgICAjIERvbid0IHdvcnJ5IGlmIHlvdSBjYW4ndCB3cml0ZSBieXRlY29kZS4KLSAgICAgICAgICAgIGlmIGV4Yy5lcnJubyA9PSBlcnJuby5FQUNDRVM6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAjIENvdWxkIGJlIGEgcGVybWlzc2lvbiBlcnJvciwgcmVhZC1vbmx5IGZpbGVzeXN0ZW06IGp1c3QgZm9yZ2V0CisgICAgICAgICAgICAgICAgIyBhYm91dCB3cml0aW5nIHRoZSBkYXRhLgorICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhcmVudCwgZXhjKQogICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBfd3JpdGVfYXRvbWljKHBhdGgsIGRhdGEsIF9tb2RlKQorICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY3JlYXRlZCB7IXJ9JywgcGF0aCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgIyBTYW1lIGFzIGFib3ZlOiBqdXN0IGRvbid0IHdyaXRlIHRoZSBieXRlY29kZS4KKyAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhdGgsIGV4YykKIAogCi1jbGFzcyBfU291cmNlbGVzc0ZpbGVMb2FkZXIoX0ZpbGVMb2FkZXIsIF9Mb2FkZXJCYXNpY3MpOgorY2xhc3MgU291cmNlbGVzc0ZpbGVMb2FkZXIoRmlsZUxvYWRlciwgX0xvYWRlckJhc2ljcyk6CiAKICAgICAiIiJMb2FkZXIgd2hpY2ggaGFuZGxlcyBzb3VyY2VsZXNzIGZpbGUgaW1wb3J0cy4iIiIKIApAQCAtNTEzLDE5ICsxMDkyLDI1IEBACiAgICAgZGVmIGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQogICAgICAgICBkYXRhID0gc2VsZi5nZXRfZGF0YShwYXRoKQotICAgICAgICBieXRlc19kYXRhID0gc2VsZi5fYnl0ZXNfZnJvbV9ieXRlY29kZShmdWxsbmFtZSwgZGF0YSwgTm9uZSkKKyAgICAgICAgYnl0ZXNfZGF0YSA9IHNlbGYuX2J5dGVzX2Zyb21fYnl0ZWNvZGUoZnVsbG5hbWUsIGRhdGEsIHBhdGgsIE5vbmUpCiAgICAgICAgIGZvdW5kID0gbWFyc2hhbC5sb2FkcyhieXRlc19kYXRhKQotICAgICAgICBpZiBpc2luc3RhbmNlKGZvdW5kLCBjb2RlX3R5cGUpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGZvdW5kLCBfY29kZV90eXBlKToKKyAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20geyFyfScsIHBhdGgpCiAgICAgICAgICAgICByZXR1cm4gZm91bmQKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJOb24tY29kZSBvYmplY3QgaW4ge30iLmZvcm1hdChwYXRoKSkKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJOb24tY29kZSBvYmplY3QgaW4ge30iLmZvcm1hdChwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUsIHBhdGg9cGF0aCkKIAogICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiUmV0dXJuIE5vbmUgYXMgdGhlcmUgaXMgbm8gc291cmNlIGNvZGUuIiIiCiAgICAgICAgIHJldHVybiBOb25lCiAKIAotY2xhc3MgX0V4dGVuc2lvbkZpbGVMb2FkZXI6CisjIEZpbGxlZCBpbiBieSBfc2V0dXAoKS4KK0VYVEVOU0lPTl9TVUZGSVhFUyA9IFtdCisKKworY2xhc3MgRXh0ZW5zaW9uRmlsZUxvYWRlcjoKIAogICAgICIiIkxvYWRlciBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMuCiAKQEAgLTUzNCwxNCArMTExOSw4IEBACiAgICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGF0aCk6Ci0gICAgICAgICIiIkluaXRpYWxpemUgdGhlIGxvYWRlci4KLQotICAgICAgICBJZiBpc19wa2cgaXMgVHJ1ZSB0aGVuIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgYXMgZXh0ZW5zaW9uIG1vZHVsZXMKLSAgICAgICAgY2Fubm90IGJlIHRoZSBfX2luaXRfXyBtb2R1bGUgZm9yIGFuIGV4dGVuc2lvbiBtb2R1bGUuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYuX3BhdGggPSBwYXRoCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAogCiAgICAgQF9jaGVja19uYW1lCiAgICAgQHNldF9wYWNrYWdlCkBAIC01NTAsMjk3ICsxMTI5LDUyOCBAQAogICAgICAgICAiIiJMb2FkIGFuIGV4dGVuc2lvbiBtb2R1bGUuIiIiCiAgICAgICAgIGlzX3JlbG9hZCA9IGZ1bGxuYW1lIGluIHN5cy5tb2R1bGVzCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBpbXAubG9hZF9keW5hbWljKGZ1bGxuYW1lLCBzZWxmLl9wYXRoKQorICAgICAgICAgICAgbW9kdWxlID0gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmxvYWRfZHluYW1pYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbG5hbWUsIHNlbGYucGF0aCkKKyAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2V4dGVuc2lvbiBtb2R1bGUgbG9hZGVkIGZyb20geyFyfScsIHNlbGYucGF0aCkKKyAgICAgICAgICAgIGlmIHNlbGYuaXNfcGFja2FnZShmdWxsbmFtZSkgYW5kIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGF0aF9fID0gW19wYXRoX3NwbGl0KHNlbGYucGF0aClbMF1dCisgICAgICAgICAgICByZXR1cm4gbW9kdWxlCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGlmIG5vdCBpc19yZWxvYWQgYW5kIGZ1bGxuYW1lIGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tmdWxsbmFtZV0KICAgICAgICAgICAgIHJhaXNlCiAKLSAgICBAX2NoZWNrX25hbWUKICAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiBGYWxzZSBhcyBhbiBleHRlbnNpb24gbW9kdWxlIGNhbiBuZXZlciBiZSBhIHBhY2thZ2UuIiIiCi0gICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgZXh0ZW5zaW9uIG1vZHVsZSBpcyBhIHBhY2thZ2UuIiIiCisgICAgICAgIGZpbGVfbmFtZSA9IF9wYXRoX3NwbGl0KHNlbGYucGF0aClbMV0KKyAgICAgICAgcmV0dXJuIGFueShmaWxlX25hbWUgPT0gJ19faW5pdF9fJyArIHN1ZmZpeAorICAgICAgICAgICAgICAgICAgIGZvciBzdWZmaXggaW4gRVhURU5TSU9OX1NVRkZJWEVTKQogCi0gICAgQF9jaGVja19uYW1lCiAgICAgZGVmIGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiUmV0dXJuIE5vbmUgYXMgYW4gZXh0ZW5zaW9uIG1vZHVsZSBjYW5ub3QgY3JlYXRlIGEgY29kZSBvYmplY3QuIiIiCiAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBAX2NoZWNrX25hbWUKICAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIlJldHVybiBOb25lIGFzIGV4dGVuc2lvbiBtb2R1bGVzIGhhdmUgbm8gc291cmNlIGNvZGUuIiIiCiAgICAgICAgIHJldHVybiBOb25lCiAKIAorY2xhc3MgX05hbWVzcGFjZVBhdGg6CisgICAgIiIiUmVwcmVzZW50cyBhIG5hbWVzcGFjZSBwYWNrYWdlJ3MgcGF0aC4gIEl0IHVzZXMgdGhlIG1vZHVsZSBuYW1lCisgICAgdG8gZmluZCBpdHMgcGFyZW50IG1vZHVsZSwgYW5kIGZyb20gdGhlcmUgaXQgbG9va3MgdXAgdGhlIHBhcmVudCdzCisgICAgX19wYXRoX18uICBXaGVuIHRoaXMgY2hhbmdlcywgdGhlIG1vZHVsZSdzIG93biBwYXRoIGlzIHJlY29tcHV0ZWQsCisgICAgdXNpbmcgcGF0aF9maW5kZXIuICBGb3IgdG9wLWxldmVsIG1vZHVsZXMsIHRoZSBwYXJlbnQgbW9kdWxlJ3MgcGF0aAorICAgIGlzIHN5cy5wYXRoLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhdGgsIHBhdGhfZmluZGVyKToKKyAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5fcGF0aCA9IHBhdGgKKyAgICAgICAgc2VsZi5fbGFzdF9wYXJlbnRfcGF0aCA9IHR1cGxlKHNlbGYuX2dldF9wYXJlbnRfcGF0aCgpKQorICAgICAgICBzZWxmLl9wYXRoX2ZpbmRlciA9IHBhdGhfZmluZGVyCisKKyAgICBkZWYgX2ZpbmRfcGFyZW50X3BhdGhfbmFtZXMoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgYSB0dXBsZSBvZiAocGFyZW50LW1vZHVsZS1uYW1lLCBwYXJlbnQtcGF0aC1hdHRyLW5hbWUpIiIiCisgICAgICAgIHBhcmVudCwgZG90LCBtZSA9IHNlbGYuX25hbWUucnBhcnRpdGlvbignLicpCisgICAgICAgIGlmIGRvdCA9PSAnJzoKKyAgICAgICAgICAgICMgVGhpcyBpcyBhIHRvcC1sZXZlbCBtb2R1bGUuIHN5cy5wYXRoIGNvbnRhaW5zIHRoZSBwYXJlbnQgcGF0aC4KKyAgICAgICAgICAgIHJldHVybiAnc3lzJywgJ3BhdGgnCisgICAgICAgICMgTm90IGEgdG9wLWxldmVsIG1vZHVsZS4gcGFyZW50LW1vZHVsZS5fX3BhdGhfXyBjb250YWlucyB0aGUKKyAgICAgICAgIyAgcGFyZW50IHBhdGguCisgICAgICAgIHJldHVybiBwYXJlbnQsICdfX3BhdGhfXycKKworICAgIGRlZiBfZ2V0X3BhcmVudF9wYXRoKHNlbGYpOgorICAgICAgICBwYXJlbnRfbW9kdWxlX25hbWUsIHBhdGhfYXR0cl9uYW1lID0gc2VsZi5fZmluZF9wYXJlbnRfcGF0aF9uYW1lcygpCisgICAgICAgIHJldHVybiBnZXRhdHRyKHN5cy5tb2R1bGVzW3BhcmVudF9tb2R1bGVfbmFtZV0sIHBhdGhfYXR0cl9uYW1lKQorCisgICAgZGVmIF9yZWNhbGN1bGF0ZShzZWxmKToKKyAgICAgICAgIyBJZiB0aGUgcGFyZW50J3MgcGF0aCBoYXMgY2hhbmdlZCwgcmVjYWxjdWxhdGUgX3BhdGgKKyAgICAgICAgcGFyZW50X3BhdGggPSB0dXBsZShzZWxmLl9nZXRfcGFyZW50X3BhdGgoKSkgIyBNYWtlIGEgY29weQorICAgICAgICBpZiBwYXJlbnRfcGF0aCAhPSBzZWxmLl9sYXN0X3BhcmVudF9wYXRoOgorICAgICAgICAgICAgbG9hZGVyLCBuZXdfcGF0aCA9IHNlbGYuX3BhdGhfZmluZGVyKHNlbGYuX25hbWUsIHBhcmVudF9wYXRoKQorICAgICAgICAgICAgIyBOb3RlIHRoYXQgbm8gY2hhbmdlcyBhcmUgbWFkZSBpZiBhIGxvYWRlciBpcyByZXR1cm5lZCwgYnV0IHdlCisgICAgICAgICAgICAjICBkbyByZW1lbWJlciB0aGUgbmV3IHBhcmVudCBwYXRoCisgICAgICAgICAgICBpZiBsb2FkZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9wYXRoID0gbmV3X3BhdGgKKyAgICAgICAgICAgIHNlbGYuX2xhc3RfcGFyZW50X3BhdGggPSBwYXJlbnRfcGF0aCAgICAgIyBTYXZlIHRoZSBjb3B5CisgICAgICAgIHJldHVybiBzZWxmLl9wYXRoCisKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBpdGVyKHNlbGYuX3JlY2FsY3VsYXRlKCkpCisKKyAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9yZWNhbGN1bGF0ZSgpKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIl9OYW1lc3BhY2VQYXRoKHshcn0pIi5mb3JtYXQoc2VsZi5fcGF0aCkKKworICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgaXRlbSk6CisgICAgICAgIHJldHVybiBpdGVtIGluIHNlbGYuX3JlY2FsY3VsYXRlKCkKKworICAgIGRlZiBhcHBlbmQoc2VsZiwgaXRlbSk6CisgICAgICAgIHNlbGYuX3BhdGguYXBwZW5kKGl0ZW0pCisKKworY2xhc3MgTmFtZXNwYWNlTG9hZGVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwYXRoLCBwYXRoX2ZpbmRlcik6CisgICAgICAgIHNlbGYuX3BhdGggPSBfTmFtZXNwYWNlUGF0aChuYW1lLCBwYXRoLCBwYXRoX2ZpbmRlcikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBtb2R1bGVfcmVwcihjbHMsIG1vZHVsZSk6CisgICAgICAgIHJldHVybiAiPG1vZHVsZSAne30nIChuYW1lc3BhY2UpPiIuZm9ybWF0KG1vZHVsZS5fX25hbWVfXykKKworICAgIEBtb2R1bGVfZm9yX2xvYWRlcgorICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBtb2R1bGUpOgorICAgICAgICAiIiJMb2FkIGEgbmFtZXNwYWNlIG1vZHVsZS4iIiIKKyAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnbmFtZXNwYWNlIG1vZHVsZSBsb2FkZWQgd2l0aCBwYXRoIHshcn0nLCBzZWxmLl9wYXRoKQorICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBzZWxmLl9wYXRoCisgICAgICAgIHJldHVybiBtb2R1bGUKKworCiAjIEZpbmRlcnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIGNsYXNzIFBhdGhGaW5kZXI6CiAKLSAgICAiIiJNZXRhIHBhdGggZmluZGVyIGZvciBzeXMuKHBhdGh8cGF0aF9ob29rc3xwYXRoX2ltcG9ydGVyX2NhY2hlKS4iIiIKKyAgICAiIiJNZXRhIHBhdGggZmluZGVyIGZvciBzeXMucGF0aCBhbmQgcGFja2FnZSBfX3BhdGhfXyBhdHRyaWJ1dGVzLiIiIgogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9wYXRoX2hvb2tzKGNscywgcGF0aCwgaG9va3M9Tm9uZSk6CisgICAgZGVmIGludmFsaWRhdGVfY2FjaGVzKGNscyk6CisgICAgICAgICIiIkNhbGwgdGhlIGludmFsaWRhdGVfY2FjaGVzKCkgbWV0aG9kIG9uIGFsbCBwYXRoIGVudHJ5IGZpbmRlcnMKKyAgICAgICAgc3RvcmVkIGluIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlcyAod2hlcmUgaW1wbGVtZW50ZWQpLiIiIgorICAgICAgICBmb3IgZmluZGVyIGluIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLnZhbHVlcygpOgorICAgICAgICAgICAgaWYgaGFzYXR0cihmaW5kZXIsICdpbnZhbGlkYXRlX2NhY2hlcycpOgorICAgICAgICAgICAgICAgIGZpbmRlci5pbnZhbGlkYXRlX2NhY2hlcygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3BhdGhfaG9va3MoY2xzLCBwYXRoKToKICAgICAgICAgIiIiU2VhcmNoIHNlcXVlbmNlIG9mIGhvb2tzIGZvciBhIGZpbmRlciBmb3IgJ3BhdGgnLgogCiAgICAgICAgIElmICdob29rcycgaXMgZmFsc2UgdGhlbiB1c2Ugc3lzLnBhdGhfaG9va3MuCiAKICAgICAgICAgIiIiCi0gICAgICAgIGlmIG5vdCBob29rczoKLSAgICAgICAgICAgIGhvb2tzID0gc3lzLnBhdGhfaG9va3MKLSAgICAgICAgZm9yIGhvb2sgaW4gaG9va3M6CisgICAgICAgIGlmIG5vdCBzeXMucGF0aF9ob29rczoKKyAgICAgICAgICAgIF93YXJuaW5ncy53YXJuKCdzeXMucGF0aF9ob29rcyBpcyBlbXB0eScsIEltcG9ydFdhcm5pbmcpCisgICAgICAgIGZvciBob29rIGluIHN5cy5wYXRoX2hvb2tzOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHJldHVybiBob29rKHBhdGgpCiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJubyBwYXRoIGhvb2sgZm91bmQgZm9yIHswfSIuZm9ybWF0KHBhdGgpKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfcGF0aF9pbXBvcnRlcl9jYWNoZShjbHMsIHBhdGgsIGRlZmF1bHQ9Tm9uZSk6Ci0gICAgICAgICIiIkdldCB0aGUgZmluZGVyIGZvciB0aGUgcGF0aCBmcm9tIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLgorICAgIGRlZiBfcGF0aF9pbXBvcnRlcl9jYWNoZShjbHMsIHBhdGgpOgorICAgICAgICAiIiJHZXQgdGhlIGZpbmRlciBmb3IgdGhlIHBhdGggZW50cnkgZnJvbSBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4KIAotICAgICAgICBJZiB0aGUgcGF0aCBpcyBub3QgaW4gdGhlIGNhY2hlLCBmaW5kIHRoZSBhcHByb3ByaWF0ZSBmaW5kZXIgYW5kIGNhY2hlCi0gICAgICAgIGl0LiBJZiBOb25lIGlzIGNhY2hlZCwgZ2V0IHRoZSBkZWZhdWx0IGZpbmRlciBhbmQgY2FjaGUgdGhhdAotICAgICAgICAoaWYgYXBwbGljYWJsZSkuCi0KLSAgICAgICAgQmVjYXVzZSBvZiBOdWxsSW1wb3J0ZXIsIHNvbWUgZmluZGVyIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIG9ubHkKLSAgICAgICAgZXhwbGljaXQgZmFpbCBjYXNlIGlzIGlmIE5vbmUgaXMgY2FjaGVkIGJ1dCB0aGUgcGF0aCBjYW5ub3QgYmUgdXNlZCBmb3IKLSAgICAgICAgdGhlIGRlZmF1bHQgaG9vaywgZm9yIHdoaWNoIEltcG9ydEVycm9yIGlzIHJhaXNlZC4KKyAgICAgICAgSWYgdGhlIHBhdGggZW50cnkgaXMgbm90IGluIHRoZSBjYWNoZSwgZmluZCB0aGUgYXBwcm9wcmlhdGUgZmluZGVyCisgICAgICAgIGFuZCBjYWNoZSBpdC4gSWYgbm8gZmluZGVyIGlzIGF2YWlsYWJsZSwgc3RvcmUgTm9uZS4KIAogICAgICAgICAiIiIKKyAgICAgICAgaWYgcGF0aCA9PSAnJzoKKyAgICAgICAgICAgIHBhdGggPSAnLicKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZmluZGVyID0gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF0KICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgZmluZGVyID0gY2xzLl9wYXRoX2hvb2tzKHBhdGgpCiAgICAgICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtwYXRoXSA9IGZpbmRlcgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgZmluZGVyIGlzIE5vbmUgYW5kIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgIyBSYWlzZXMgSW1wb3J0RXJyb3Igb24gZmFpbHVyZS4KLSAgICAgICAgICAgICAgICBmaW5kZXIgPSBkZWZhdWx0KHBhdGgpCi0gICAgICAgICAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF0gPSBmaW5kZXIKICAgICAgICAgcmV0dXJuIGZpbmRlcgogCiAgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9nZXRfbG9hZGVyKGNscywgZnVsbG5hbWUsIHBhdGgpOgorICAgICAgICAiIiJGaW5kIHRoZSBsb2FkZXIgb3IgbmFtZXNwYWNlX3BhdGggZm9yIHRoaXMgbW9kdWxlL3BhY2thZ2UgbmFtZS4iIiIKKyAgICAgICAgIyBJZiB0aGlzIGVuZHMgdXAgYmVpbmcgYSBuYW1lc3BhY2UgcGFja2FnZSwgbmFtZXNwYWNlX3BhdGggaXMKKyAgICAgICAgIyAgdGhlIGxpc3Qgb2YgcGF0aHMgdGhhdCB3aWxsIGJlY29tZSBpdHMgX19wYXRoX18KKyAgICAgICAgbmFtZXNwYWNlX3BhdGggPSBbXQorICAgICAgICBmb3IgZW50cnkgaW4gcGF0aDoKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGVudHJ5LCAoc3RyLCBieXRlcykpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmaW5kZXIgPSBjbHMuX3BhdGhfaW1wb3J0ZXJfY2FjaGUoZW50cnkpCisgICAgICAgICAgICBpZiBmaW5kZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihmaW5kZXIsICdmaW5kX2xvYWRlcicpOgorICAgICAgICAgICAgICAgICAgICBsb2FkZXIsIHBvcnRpb25zID0gZmluZGVyLmZpbmRfbG9hZGVyKGZ1bGxuYW1lKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGxvYWRlciA9IGZpbmRlci5maW5kX21vZHVsZShmdWxsbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgcG9ydGlvbnMgPSBbXQorICAgICAgICAgICAgICAgIGlmIGxvYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgIyBXZSBmb3VuZCBhIGxvYWRlcjogcmV0dXJuIGl0IGltbWVkaWF0ZWx5LgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZGVyLCBuYW1lc3BhY2VfcGF0aAorICAgICAgICAgICAgICAgICMgVGhpcyBpcyBwb3NzaWJseSBwYXJ0IG9mIGEgbmFtZXNwYWNlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgIyAgUmVtZW1iZXIgdGhlc2UgcGF0aCBlbnRyaWVzIChpZiBhbnkpIGZvciB3aGVuIHdlCisgICAgICAgICAgICAgICAgIyAgY3JlYXRlIGEgbmFtZXNwYWNlIHBhY2thZ2UsIGFuZCBjb250aW51ZSBpdGVyYXRpbmcKKyAgICAgICAgICAgICAgICAjICBvbiBwYXRoLgorICAgICAgICAgICAgICAgIG5hbWVzcGFjZV9wYXRoLmV4dGVuZChwb3J0aW9ucykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBuYW1lc3BhY2VfcGF0aAorCisgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZpbmRfbW9kdWxlKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6CiAgICAgICAgICIiIkZpbmQgdGhlIG1vZHVsZSBvbiBzeXMucGF0aCBvciAncGF0aCcgYmFzZWQgb24gc3lzLnBhdGhfaG9va3MgYW5kCiAgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLiIiIgotICAgICAgICBpZiBub3QgcGF0aDoKKyAgICAgICAgaWYgcGF0aCBpcyBOb25lOgogICAgICAgICAgICAgcGF0aCA9IHN5cy5wYXRoCi0gICAgICAgIGZvciBlbnRyeSBpbiBwYXRoOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGZpbmRlciA9IGNscy5fcGF0aF9pbXBvcnRlcl9jYWNoZShlbnRyeSkKLSAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgZmluZGVyOgotICAgICAgICAgICAgICAgIGxvYWRlciA9IGZpbmRlci5maW5kX21vZHVsZShmdWxsbmFtZSkKLSAgICAgICAgICAgICAgICBpZiBsb2FkZXI6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZXIKKyAgICAgICAgbG9hZGVyLCBuYW1lc3BhY2VfcGF0aCA9IGNscy5fZ2V0X2xvYWRlcihmdWxsbmFtZSwgcGF0aCkKKyAgICAgICAgaWYgbG9hZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGxvYWRlcgogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGlmIG5hbWVzcGFjZV9wYXRoOgorICAgICAgICAgICAgICAgICMgV2UgZm91bmQgYXQgbGVhc3Qgb25lIG5hbWVzcGFjZSBwYXRoLiAgUmV0dXJuIGEKKyAgICAgICAgICAgICAgICAjICBsb2FkZXIgd2hpY2ggY2FuIGNyZWF0ZSB0aGUgbmFtZXNwYWNlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgcmV0dXJuIE5hbWVzcGFjZUxvYWRlcihmdWxsbmFtZSwgbmFtZXNwYWNlX3BhdGgsIGNscy5fZ2V0X2xvYWRlcikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogCi1jbGFzcyBfRmlsZUZpbmRlcjoKK2NsYXNzIEZpbGVGaW5kZXI6CiAKICAgICAiIiJGaWxlLWJhc2VkIGZpbmRlci4KIAotICAgIENvbnN0cnVjdG9yIHRha2VzIGEgbGlzdCBvZiBvYmplY3RzIGRldGFpbGluZyB3aGF0IGZpbGUgZXh0ZW5zaW9ucyB0aGVpcgotICAgIGxvYWRlciBzdXBwb3J0cyBhbG9uZyB3aXRoIHdoZXRoZXIgaXQgY2FuIGJlIHVzZWQgZm9yIGEgcGFja2FnZS4KKyAgICBJbnRlcmFjdGlvbnMgd2l0aCB0aGUgZmlsZSBzeXN0ZW0gYXJlIGNhY2hlZCBmb3IgcGVyZm9ybWFuY2UsIGJlaW5nCisgICAgcmVmcmVzaGVkIHdoZW4gdGhlIGRpcmVjdG9yeSB0aGUgZmluZGVyIGlzIGhhbmRsaW5nIGhhcyBiZWVuIG1vZGlmaWVkLgogCiAgICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgKmRldGFpbHMpOgotICAgICAgICAiIiJJbml0aWFsaXplIHdpdGggZmluZGVyIGRldGFpbHMuIiIiCi0gICAgICAgIHBhY2thZ2VzID0gW10KLSAgICAgICAgbW9kdWxlcyA9IFtdCi0gICAgICAgIGZvciBkZXRhaWwgaW4gZGV0YWlsczoKLSAgICAgICAgICAgIG1vZHVsZXMuZXh0ZW5kKChzdWZmaXgsIGRldGFpbC5sb2FkZXIpIGZvciBzdWZmaXggaW4gZGV0YWlsLnN1ZmZpeGVzKQotICAgICAgICAgICAgaWYgZGV0YWlsLnN1cHBvcnRzX3BhY2thZ2VzOgotICAgICAgICAgICAgICAgIHBhY2thZ2VzLmV4dGVuZCgoc3VmZml4LCBkZXRhaWwubG9hZGVyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Igc3VmZml4IGluIGRldGFpbC5zdWZmaXhlcykKLSAgICAgICAgc2VsZi5wYWNrYWdlcyA9IHBhY2thZ2VzCi0gICAgICAgIHNlbGYubW9kdWxlcyA9IG1vZHVsZXMKLSAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICAiIiJJbml0aWFsaXplIHdpdGggdGhlIHBhdGggdG8gc2VhcmNoIG9uIGFuZCBhIHZhcmlhYmxlIG51bWJlciBvZgorICAgICAgICAyLXR1cGxlcyBjb250YWluaW5nIHRoZSBsb2FkZXIgYW5kIHRoZSBmaWxlIHN1ZmZpeGVzIHRoZSBsb2FkZXIKKyAgICAgICAgcmVjb2duaXplcy4iIiIKKyAgICAgICAgbG9hZGVycyA9IFtdCisgICAgICAgIGZvciBsb2FkZXIsIHN1ZmZpeGVzIGluIGRldGFpbHM6CisgICAgICAgICAgICBsb2FkZXJzLmV4dGVuZCgoc3VmZml4LCBsb2FkZXIpIGZvciBzdWZmaXggaW4gc3VmZml4ZXMpCisgICAgICAgIHNlbGYuX2xvYWRlcnMgPSBsb2FkZXJzCisgICAgICAgICMgQmFzZSAoZGlyZWN0b3J5KSBwYXRoCisgICAgICAgIHNlbGYucGF0aCA9IHBhdGggb3IgJy4nCisgICAgICAgIHNlbGYuX3BhdGhfbXRpbWUgPSAtMQorICAgICAgICBzZWxmLl9wYXRoX2NhY2hlID0gc2V0KCkKKyAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0gc2V0KCkKIAotICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlRyeSB0byBmaW5kIGEgbG9hZGVyIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZS4iIiIKKyAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoc2VsZik6CisgICAgICAgICIiIkludmFsaWRhdGUgdGhlIGRpcmVjdG9yeSBtdGltZS4iIiIKKyAgICAgICAgc2VsZi5fcGF0aF9tdGltZSA9IC0xCisKKyAgICBmaW5kX21vZHVsZSA9IF9maW5kX21vZHVsZV9zaGltCisKKyAgICBkZWYgZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJUcnkgdG8gZmluZCBhIGxvYWRlciBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUsIG9yIHRoZSBuYW1lc3BhY2UKKyAgICAgICAgcGFja2FnZSBwb3J0aW9ucy4gUmV0dXJucyAobG9hZGVyLCBsaXN0LW9mLXBvcnRpb25zKS4iIiIKKyAgICAgICAgaXNfbmFtZXNwYWNlID0gRmFsc2UKICAgICAgICAgdGFpbF9tb2R1bGUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCcuJylbMl0KLSAgICAgICAgYmFzZV9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlKQotICAgICAgICBpZiBfcGF0aF9pc2RpcihiYXNlX3BhdGgpIGFuZCBfY2FzZV9vayhzZWxmLnBhdGgsIHRhaWxfbW9kdWxlKToKLSAgICAgICAgICAgIGZvciBzdWZmaXgsIGxvYWRlciBpbiBzZWxmLnBhY2thZ2VzOgotICAgICAgICAgICAgICAgIGluaXRfZmlsZW5hbWUgPSAnX19pbml0X18nICsgc3VmZml4Ci0gICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gX3BhdGhfam9pbihiYXNlX3BhdGgsIGluaXRfZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgaWYgKF9wYXRoX2lzZmlsZShmdWxsX3BhdGgpIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgX2Nhc2Vfb2soYmFzZV9wYXRoLCBpbml0X2ZpbGVuYW1lKSk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZXIoZnVsbG5hbWUsIGZ1bGxfcGF0aCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbXNnID0gIk5vdCBpbXBvcnRpbmcgZGlyZWN0b3J5IHt9OiBtaXNzaW5nIF9faW5pdF9fIgotICAgICAgICAgICAgICAgIF93YXJuaW5ncy53YXJuKG1zZy5mb3JtYXQoYmFzZV9wYXRoKSwgSW1wb3J0V2FybmluZykKLSAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyIGluIHNlbGYubW9kdWxlczoKLSAgICAgICAgICAgIG1vZF9maWxlbmFtZSA9IHRhaWxfbW9kdWxlICsgc3VmZml4Ci0gICAgICAgICAgICBmdWxsX3BhdGggPSBfcGF0aF9qb2luKHNlbGYucGF0aCwgbW9kX2ZpbGVuYW1lKQotICAgICAgICAgICAgaWYgX3BhdGhfaXNmaWxlKGZ1bGxfcGF0aCkgYW5kIF9jYXNlX29rKHNlbGYucGF0aCwgbW9kX2ZpbGVuYW1lKToKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9hZGVyKGZ1bGxuYW1lLCBmdWxsX3BhdGgpCi0gICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG10aW1lID0gX29zLnN0YXQoc2VsZi5wYXRoKS5zdF9tdGltZQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIG10aW1lID0gLTEKKyAgICAgICAgaWYgbXRpbWUgIT0gc2VsZi5fcGF0aF9tdGltZToKKyAgICAgICAgICAgIHNlbGYuX2ZpbGxfY2FjaGUoKQorICAgICAgICAgICAgc2VsZi5fcGF0aF9tdGltZSA9IG10aW1lCisgICAgICAgICMgdGFpbF9tb2R1bGUga2VlcHMgdGhlIG9yaWdpbmFsIGNhc2luZywgZm9yIF9fZmlsZV9fIGFuZCBmcmllbmRzCisgICAgICAgIGlmIF9yZWxheF9jYXNlKCk6CisgICAgICAgICAgICBjYWNoZSA9IHNlbGYuX3JlbGF4ZWRfcGF0aF9jYWNoZQorICAgICAgICAgICAgY2FjaGVfbW9kdWxlID0gdGFpbF9tb2R1bGUubG93ZXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2FjaGUgPSBzZWxmLl9wYXRoX2NhY2hlCisgICAgICAgICAgICBjYWNoZV9tb2R1bGUgPSB0YWlsX21vZHVsZQorICAgICAgICAjIENoZWNrIGlmIHRoZSBtb2R1bGUgaXMgdGhlIG5hbWUgb2YgYSBkaXJlY3RvcnkgKGFuZCB0aHVzIGEgcGFja2FnZSkuCisgICAgICAgIGlmIGNhY2hlX21vZHVsZSBpbiBjYWNoZToKKyAgICAgICAgICAgIGJhc2VfcGF0aCA9IF9wYXRoX2pvaW4oc2VsZi5wYXRoLCB0YWlsX21vZHVsZSkKKyAgICAgICAgICAgIGlmIF9wYXRoX2lzZGlyKGJhc2VfcGF0aCk6CisgICAgICAgICAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyIGluIHNlbGYuX2xvYWRlcnM6CisgICAgICAgICAgICAgICAgICAgIGluaXRfZmlsZW5hbWUgPSAnX19pbml0X18nICsgc3VmZml4CisgICAgICAgICAgICAgICAgICAgIGZ1bGxfcGF0aCA9IF9wYXRoX2pvaW4oYmFzZV9wYXRoLCBpbml0X2ZpbGVuYW1lKQorICAgICAgICAgICAgICAgICAgICBpZiBfcGF0aF9pc2ZpbGUoZnVsbF9wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobG9hZGVyKGZ1bGxuYW1lLCBmdWxsX3BhdGgpLCBbYmFzZV9wYXRoXSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIEEgbmFtZXNwYWNlIHBhY2thZ2UsIHJldHVybiB0aGUgcGF0aCBpZiB3ZSBkb24ndCBhbHNvCisgICAgICAgICAgICAgICAgICAgICMgIGZpbmQgYSBtb2R1bGUgaW4gdGhlIG5leHQgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgaXNfbmFtZXNwYWNlID0gVHJ1ZQorICAgICAgICAjIENoZWNrIGZvciBhIGZpbGUgdy8gYSBwcm9wZXIgc3VmZml4IGV4aXN0cy4KKyAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyIGluIHNlbGYuX2xvYWRlcnM6CisgICAgICAgICAgICBpZiBjYWNoZV9tb2R1bGUgKyBzdWZmaXggaW4gY2FjaGU6CisgICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlICsgc3VmZml4KQorICAgICAgICAgICAgICAgIGlmIF9wYXRoX2lzZmlsZShmdWxsX3BhdGgpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGxvYWRlcihmdWxsbmFtZSwgZnVsbF9wYXRoKSwgW10pCisgICAgICAgIGlmIGlzX25hbWVzcGFjZToKKyAgICAgICAgICAgIHJldHVybiAoTm9uZSwgW2Jhc2VfcGF0aF0pCisgICAgICAgIHJldHVybiAoTm9uZSwgW10pCiAKLWNsYXNzIF9Tb3VyY2VGaW5kZXJEZXRhaWxzOgorICAgIGRlZiBfZmlsbF9jYWNoZShzZWxmKToKKyAgICAgICAgIiIiRmlsbCB0aGUgY2FjaGUgb2YgcG90ZW50aWFsIG1vZHVsZXMgYW5kIHBhY2thZ2VzIGZvciB0aGlzIGRpcmVjdG9yeS4iIiIKKyAgICAgICAgcGF0aCA9IHNlbGYucGF0aAorICAgICAgICB0cnk6CisgICAgICAgICAgICBjb250ZW50cyA9IF9vcy5saXN0ZGlyKHBhdGgpCisgICAgICAgIGV4Y2VwdCAoRmlsZU5vdEZvdW5kRXJyb3IsIFBlcm1pc3Npb25FcnJvciwgTm90QURpcmVjdG9yeUVycm9yKToKKyAgICAgICAgICAgICMgRGlyZWN0b3J5IGhhcyBlaXRoZXIgYmVlbiByZW1vdmVkLCB0dXJuZWQgaW50byBhIGZpbGUsIG9yIG1hZGUKKyAgICAgICAgICAgICMgdW5yZWFkYWJsZS4KKyAgICAgICAgICAgIGNvbnRlbnRzID0gW10KKyAgICAgICAgIyBXZSBzdG9yZSB0d28gY2FjaGVkIHZlcnNpb25zLCB0byBoYW5kbGUgcnVudGltZSBjaGFuZ2VzIG9mIHRoZQorICAgICAgICAjIFBZVEhPTkNBU0VPSyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKyAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKKyAgICAgICAgICAgIHNlbGYuX3BhdGhfY2FjaGUgPSBzZXQoY29udGVudHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFdpbmRvd3MgdXNlcnMgY2FuIGltcG9ydCBtb2R1bGVzIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBmaWxlCisgICAgICAgICAgICAjIHN1ZmZpeGVzIChmb3IgbGVnYWN5IHJlYXNvbnMpLiBNYWtlIHRoZSBzdWZmaXggbG93ZXJjYXNlIGhlcmUKKyAgICAgICAgICAgICMgc28gaXQncyBkb25lIG9uY2UgaW5zdGVhZCBvZiBmb3IgZXZlcnkgaW1wb3J0LiBUaGlzIGlzIHNhZmUgYXMKKyAgICAgICAgICAgICMgdGhlIHNwZWNpZmllZCBzdWZmaXhlcyB0byBjaGVjayBhZ2FpbnN0IGFyZSBhbHdheXMgc3BlY2lmaWVkIGluIGEKKyAgICAgICAgICAgICMgY2FzZS1zZW5zaXRpdmUgbWFubmVyLgorICAgICAgICAgICAgbG93ZXJfc3VmZml4X2NvbnRlbnRzID0gc2V0KCkKKyAgICAgICAgICAgIGZvciBpdGVtIGluIGNvbnRlbnRzOgorICAgICAgICAgICAgICAgIG5hbWUsIGRvdCwgc3VmZml4ID0gaXRlbS5wYXJ0aXRpb24oJy4nKQorICAgICAgICAgICAgICAgIGlmIGRvdDoKKyAgICAgICAgICAgICAgICAgICAgbmV3X25hbWUgPSAne30ue30nLmZvcm1hdChuYW1lLCBzdWZmaXgubG93ZXIoKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBuZXdfbmFtZSA9IG5hbWUKKyAgICAgICAgICAgICAgICBsb3dlcl9zdWZmaXhfY29udGVudHMuYWRkKG5ld19uYW1lKQorICAgICAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IGxvd2VyX3N1ZmZpeF9jb250ZW50cworICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aChfQ0FTRV9JTlNFTlNJVElWRV9QTEFURk9STVMpOgorICAgICAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0gc2V0KGZuLmxvd2VyKCkgZm9yIGZuIGluIGNvbnRlbnRzKQogCi0gICAgbG9hZGVyID0gX1NvdXJjZUZpbGVMb2FkZXIKLSAgICBzdXBwb3J0c19wYWNrYWdlcyA9IFRydWUKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGF0aF9ob29rKGNscywgKmxvYWRlcl9kZXRhaWxzKToKKyAgICAgICAgIiIiQSBjbGFzcyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIGNsb3N1cmUgdG8gdXNlIG9uIHN5cy5wYXRoX2hvb2sKKyAgICAgICAgd2hpY2ggd2lsbCByZXR1cm4gYW4gaW5zdGFuY2UgdXNpbmcgdGhlIHNwZWNpZmllZCBsb2FkZXJzIGFuZCB0aGUgcGF0aAorICAgICAgICBjYWxsZWQgb24gdGhlIGNsb3N1cmUuCiAKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuc3VmZml4ZXMgPSBfc3VmZml4X2xpc3QoaW1wLlBZX1NPVVJDRSkKKyAgICAgICAgSWYgdGhlIHBhdGggY2FsbGVkIG9uIHRoZSBjbG9zdXJlIGlzIG5vdCBhIGRpcmVjdG9yeSwgSW1wb3J0RXJyb3IgaXMKKyAgICAgICAgcmFpc2VkLgogCi1jbGFzcyBfU291cmNlbGVzc0ZpbmRlckRldGFpbHM6CisgICAgICAgICIiIgorICAgICAgICBkZWYgcGF0aF9ob29rX2Zvcl9GaWxlRmluZGVyKHBhdGgpOgorICAgICAgICAgICAgIiIiUGF0aCBob29rIGZvciBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIuIiIiCisgICAgICAgICAgICBpZiBub3QgX3BhdGhfaXNkaXIocGF0aCk6CisgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIm9ubHkgZGlyZWN0b3JpZXMgYXJlIHN1cHBvcnRlZCIsIHBhdGg9cGF0aCkKKyAgICAgICAgICAgIHJldHVybiBjbHMocGF0aCwgKmxvYWRlcl9kZXRhaWxzKQogCi0gICAgbG9hZGVyID0gX1NvdXJjZWxlc3NGaWxlTG9hZGVyCi0gICAgc3VwcG9ydHNfcGFja2FnZXMgPSBUcnVlCisgICAgICAgIHJldHVybiBwYXRoX2hvb2tfZm9yX0ZpbGVGaW5kZXIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zdWZmaXhlcyA9IF9zdWZmaXhfbGlzdChpbXAuUFlfQ09NUElMRUQpCi0KLQotY2xhc3MgX0V4dGVuc2lvbkZpbmRlckRldGFpbHM6Ci0KLSAgICBsb2FkZXIgPSBfRXh0ZW5zaW9uRmlsZUxvYWRlcgotICAgIHN1cHBvcnRzX3BhY2thZ2VzID0gRmFsc2UKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zdWZmaXhlcyA9IF9zdWZmaXhfbGlzdChpbXAuQ19FWFRFTlNJT04pCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIkZpbGVGaW5kZXIoJXIpIiAlIChzZWxmLnBhdGgsKQogCiAKICMgSW1wb3J0IGl0c2VsZiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotZGVmIF9maWxlX3BhdGhfaG9vayhwYXRoKToKLSAgICAiIiJJZiB0aGUgcGF0aCBpcyBhIGRpcmVjdG9yeSwgcmV0dXJuIGEgZmlsZS1iYXNlZCBmaW5kZXIuIiIiCi0gICAgaWYgX3BhdGhfaXNkaXIocGF0aCk6Ci0gICAgICAgIHJldHVybiBfRmlsZUZpbmRlcihwYXRoLCBfRXh0ZW5zaW9uRmluZGVyRGV0YWlscygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1NvdXJjZUZpbmRlckRldGFpbHMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Tb3VyY2VsZXNzRmluZGVyRGV0YWlscygpKQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJvbmx5IGRpcmVjdG9yaWVzIGFyZSBzdXBwb3J0ZWQiKQotCi0KLV9ERUZBVUxUX1BBVEhfSE9PSyA9IF9maWxlX3BhdGhfaG9vawotCi1jbGFzcyBfRGVmYXVsdFBhdGhGaW5kZXIoUGF0aEZpbmRlcik6Ci0KLSAgICAiIiJTdWJjbGFzcyBvZiBQYXRoRmluZGVyIHRoYXQgaW1wbGVtZW50cyBpbXBsaWNpdCBzZW1hbnRpY3MgZm9yCi0gICAgX19pbXBvcnRfXy4iIiIKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfcGF0aF9ob29rcyhjbHMsIHBhdGgpOgotICAgICAgICAiIiJTZWFyY2ggc3lzLnBhdGhfaG9va3MgYXMgd2VsbCBhcyBpbXBsaWNpdCBwYXRoIGhvb2tzLiIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fcGF0aF9ob29rcyhwYXRoKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBpbXBsaWNpdF9ob29rcyA9IFtfREVGQVVMVF9QQVRIX0hPT0ssIGltcC5OdWxsSW1wb3J0ZXJdCi0gICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fcGF0aF9ob29rcyhwYXRoLCBpbXBsaWNpdF9ob29rcykKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfcGF0aF9pbXBvcnRlcl9jYWNoZShjbHMsIHBhdGgpOgotICAgICAgICAiIiJVc2UgdGhlIGRlZmF1bHQgcGF0aCBob29rIHdoZW4gTm9uZSBpcyBzdG9yZWQgaW4KLSAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuIiIiCi0gICAgICAgIHJldHVybiBzdXBlcigpLl9wYXRoX2ltcG9ydGVyX2NhY2hlKHBhdGgsIF9ERUZBVUxUX1BBVEhfSE9PSykKLQotCiBjbGFzcyBfSW1wb3J0TG9ja0NvbnRleHQ6CiAKICAgICAiIiJDb250ZXh0IG1hbmFnZXIgZm9yIHRoZSBpbXBvcnQgbG9jay4iIiIKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgICIiIkFjcXVpcmUgdGhlIGltcG9ydCBsb2NrLiIiIgotICAgICAgICBpbXAuYWNxdWlyZV9sb2NrKCkKKyAgICAgICAgX2ltcC5hY3F1aXJlX2xvY2soKQogCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIGV4Y190cmFjZWJhY2spOgogICAgICAgICAiIiJSZWxlYXNlIHRoZSBpbXBvcnQgbG9jayByZWdhcmRsZXNzIG9mIGFueSByYWlzZWQgZXhjZXB0aW9ucy4iIiIKLSAgICAgICAgaW1wLnJlbGVhc2VfbG9jaygpCisgICAgICAgIF9pbXAucmVsZWFzZV9sb2NrKCkKIAogCi1fSU1QTElDSVRfTUVUQV9QQVRIID0gW0J1aWx0aW5JbXBvcnRlciwgRnJvemVuSW1wb3J0ZXIsIF9EZWZhdWx0UGF0aEZpbmRlcl0KK2RlZiBfcmVzb2x2ZV9uYW1lKG5hbWUsIHBhY2thZ2UsIGxldmVsKToKKyAgICAiIiJSZXNvbHZlIGEgcmVsYXRpdmUgbW9kdWxlIG5hbWUgdG8gYW4gYWJzb2x1dGUgb25lLiIiIgorICAgIGJpdHMgPSBwYWNrYWdlLnJzcGxpdCgnLicsIGxldmVsIC0gMSkKKyAgICBpZiBsZW4oYml0cykgPCBsZXZlbDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCBiZXlvbmQgdG9wLWxldmVsIHBhY2thZ2UnKQorICAgIGJhc2UgPSBiaXRzWzBdCisgICAgcmV0dXJuICd7fS57fScuZm9ybWF0KGJhc2UsIG5hbWUpIGlmIG5hbWUgZWxzZSBiYXNlCiAKLV9FUlJfTVNHID0gJ05vIG1vZHVsZSBuYW1lZCB7fScKKworZGVmIF9maW5kX21vZHVsZShuYW1lLCBwYXRoKToKKyAgICAiIiJGaW5kIGEgbW9kdWxlJ3MgbG9hZGVyLiIiIgorICAgIGlmIG5vdCBzeXMubWV0YV9wYXRoOgorICAgICAgICBfd2FybmluZ3Mud2Fybignc3lzLm1ldGFfcGF0aCBpcyBlbXB0eScsIEltcG9ydFdhcm5pbmcpCisgICAgZm9yIGZpbmRlciBpbiBzeXMubWV0YV9wYXRoOgorICAgICAgICB3aXRoIF9JbXBvcnRMb2NrQ29udGV4dCgpOgorICAgICAgICAgICAgbG9hZGVyID0gZmluZGVyLmZpbmRfbW9kdWxlKG5hbWUsIHBhdGgpCisgICAgICAgIGlmIGxvYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgVGhlIHBhcmVudCBpbXBvcnQgbWF5IGhhdmUgYWxyZWFkeSBpbXBvcnRlZCB0aGlzIG1vZHVsZS4KKyAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZXIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW25hbWVdLl9fbG9hZGVyX18KKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gTm9uZQorCisKK2RlZiBfc2FuaXR5X2NoZWNrKG5hbWUsIHBhY2thZ2UsIGxldmVsKToKKyAgICAiIiJWZXJpZnkgYXJndW1lbnRzIGFyZSAic2FuZSIuIiIiCisgICAgaWYgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJtb2R1bGUgbmFtZSBtdXN0IGJlIHN0ciwgbm90IHt9Ii5mb3JtYXQodHlwZShuYW1lKSkpCisgICAgaWYgbGV2ZWwgPCAwOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdsZXZlbCBtdXN0IGJlID49IDAnKQorICAgIGlmIHBhY2thZ2U6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhY2thZ2UsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIl9fcGFja2FnZV9fIG5vdCBzZXQgdG8gYSBzdHJpbmciKQorICAgICAgICBlbGlmIHBhY2thZ2Ugbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgbXNnID0gKCJQYXJlbnQgbW9kdWxlIHshcn0gbm90IGxvYWRlZCwgY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgIgorICAgICAgICAgICAgICAgICAgICJpbXBvcnQiKQorICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXJyb3IobXNnLmZvcm1hdChwYWNrYWdlKSkKKyAgICBpZiBub3QgbmFtZSBhbmQgbGV2ZWwgPT0gMDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRW1wdHkgbW9kdWxlIG5hbWUiKQorCisKK19FUlJfTVNHID0gJ05vIG1vZHVsZSBuYW1lZCB7IXJ9JworCitkZWYgX2ZpbmRfYW5kX2xvYWRfdW5sb2NrZWQobmFtZSwgaW1wb3J0Xyk6CisgICAgcGF0aCA9IE5vbmUKKyAgICBwYXJlbnQgPSBuYW1lLnJwYXJ0aXRpb24oJy4nKVswXQorICAgIGlmIHBhcmVudDoKKyAgICAgICAgaWYgcGFyZW50IG5vdCBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoaW1wb3J0XywgcGFyZW50KQorICAgICAgICAjIENyYXp5IHNpZGUtZWZmZWN0cyEKKyAgICAgICAgaWYgbmFtZSBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tuYW1lXQorICAgICAgICAjIEJhY2t3YXJkcy1jb21wYXRpYmlsaXR5OyBiZSBuaWNlciB0byBza2lwIHRoZSBkaWN0IGxvb2t1cC4KKyAgICAgICAgcGFyZW50X21vZHVsZSA9IHN5cy5tb2R1bGVzW3BhcmVudF0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9tb2R1bGUuX19wYXRoX18KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgbXNnID0gKF9FUlJfTVNHICsgJzsge30gaXMgbm90IGEgcGFja2FnZScpLmZvcm1hdChuYW1lLCBwYXJlbnQpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkKKyAgICBsb2FkZXIgPSBfZmluZF9tb2R1bGUobmFtZSwgcGF0aCkKKyAgICBpZiBsb2FkZXIgaXMgTm9uZToKKyAgICAgICAgZXhjID0gSW1wb3J0RXJyb3IoX0VSUl9NU0cuZm9ybWF0KG5hbWUpLCBuYW1lPW5hbWUpCisgICAgICAgICMgVE9ETyhicmV0dCk6IHN3aXRjaCB0byBhIHByb3BlciBNb2R1bGVOb3RGb3VuZCBleGNlcHRpb24gaW4gUHl0aG9uCisgICAgICAgICMgMy40LgorICAgICAgICBleGMuX25vdF9mb3VuZCA9IFRydWUKKyAgICAgICAgcmFpc2UgZXhjCisgICAgZWxpZiBuYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgIyBUaGUgcGFyZW50IGltcG9ydCBtYXkgaGF2ZSBhbHJlYWR5IGltcG9ydGVkIHRoaXMgbW9kdWxlLgorICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnaW1wb3J0IHshcn0gIyB7IXJ9JywgbmFtZSwgbG9hZGVyKQorICAgICMgQmFja3dhcmRzLWNvbXBhdGliaWxpdHk7IGJlIG5pY2VyIHRvIHNraXAgdGhlIGRpY3QgbG9va3VwLgorICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCisgICAgaWYgcGFyZW50OgorICAgICAgICAjIFNldCB0aGUgbW9kdWxlIGFzIGFuIGF0dHJpYnV0ZSBvbiBpdHMgcGFyZW50LgorICAgICAgICBwYXJlbnRfbW9kdWxlID0gc3lzLm1vZHVsZXNbcGFyZW50XQorICAgICAgICBzZXRhdHRyKHBhcmVudF9tb2R1bGUsIG5hbWUucnBhcnRpdGlvbignLicpWzJdLCBtb2R1bGUpCisgICAgIyBTZXQgX19wYWNrYWdlX18gaWYgdGhlIGxvYWRlciBkaWQgbm90LgorICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nLCBOb25lKSBpcyBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBtb2R1bGUuX19uYW1lX18KKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbW9kdWxlLl9fcGFja2FnZV9fLnJwYXJ0aXRpb24oJy4nKVswXQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgIyBTZXQgbG9hZGVyIGlmIG5lZWQgYmUuCisgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19sb2FkZXJfXycpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IGxvYWRlcgorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgcmV0dXJuIG1vZHVsZQorCisKK2RlZiBfZmluZF9hbmRfbG9hZChuYW1lLCBpbXBvcnRfKToKKyAgICAiIiJGaW5kIGFuZCBsb2FkIHRoZSBtb2R1bGUsIGFuZCByZWxlYXNlIHRoZSBpbXBvcnQgbG9jay4iIiIKKyAgICB0cnk6CisgICAgICAgIGxvY2sgPSBfZ2V0X21vZHVsZV9sb2NrKG5hbWUpCisgICAgZmluYWxseToKKyAgICAgICAgX2ltcC5yZWxlYXNlX2xvY2soKQorICAgIGxvY2suYWNxdWlyZSgpCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gX2ZpbmRfYW5kX2xvYWRfdW5sb2NrZWQobmFtZSwgaW1wb3J0XykKKyAgICBmaW5hbGx5OgorICAgICAgICBsb2NrLnJlbGVhc2UoKQorCiAKIGRlZiBfZ2NkX2ltcG9ydChuYW1lLCBwYWNrYWdlPU5vbmUsIGxldmVsPTApOgogICAgICIiIkltcG9ydCBhbmQgcmV0dXJuIHRoZSBtb2R1bGUgYmFzZWQgb24gaXRzIG5hbWUsIHRoZSBwYWNrYWdlIHRoZSBjYWxsIGlzCiAgICAgYmVpbmcgbWFkZSBmcm9tLCBhbmQgdGhlIGxldmVsIGFkanVzdG1lbnQuCiAKICAgICBUaGlzIGZ1bmN0aW9uIHJlcHJlc2VudHMgdGhlIGdyZWF0ZXN0IGNvbW1vbiBkZW5vbWluYXRvciBvZiBmdW5jdGlvbmFsaXR5Ci0gICAgYmV0d2VlbiBpbXBvcnRfbW9kdWxlIGFuZCBfX2ltcG9ydF9fLiBUaGlzIGluY2x1ZGVzIHNldHR0aW5nIF9fcGFja2FnZV9fIGlmCisgICAgYmV0d2VlbiBpbXBvcnRfbW9kdWxlIGFuZCBfX2ltcG9ydF9fLiBUaGlzIGluY2x1ZGVzIHNldHRpbmcgX19wYWNrYWdlX18gaWYKICAgICB0aGUgbG9hZGVyIGRpZCBub3QuCiAKICAgICAiIiIKLSAgICBpZiBwYWNrYWdlOgotICAgICAgICBpZiBub3QgaGFzYXR0cihwYWNrYWdlLCAncmluZGV4Jyk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJfX3BhY2thZ2VfXyBub3Qgc2V0IHRvIGEgc3RyaW5nIikKLSAgICAgICAgZWxpZiBwYWNrYWdlIG5vdCBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgICAgIG1zZyA9ICgiUGFyZW50IG1vZHVsZSB7MCFyfSBub3QgbG9hZGVkLCBjYW5ub3QgcGVyZm9ybSByZWxhdGl2ZSAiCi0gICAgICAgICAgICAgICAgICAgImltcG9ydCIpCi0gICAgICAgICAgICByYWlzZSBTeXN0ZW1FcnJvcihtc2cuZm9ybWF0KHBhY2thZ2UpKQotICAgIGlmIG5vdCBuYW1lIGFuZCBsZXZlbCA9PSAwOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFbXB0eSBtb2R1bGUgbmFtZSIpCisgICAgX3Nhbml0eV9jaGVjayhuYW1lLCBwYWNrYWdlLCBsZXZlbCkKICAgICBpZiBsZXZlbCA+IDA6Ci0gICAgICAgIGRvdCA9IGxlbihwYWNrYWdlKQotICAgICAgICBmb3IgeCBpbiByYW5nZShsZXZlbCwgMSwgLTEpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGRvdCA9IHBhY2thZ2UucmluZGV4KCcuJywgMCwgZG90KQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCBiZXlvbmQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvcC1sZXZlbCBwYWNrYWdlIikKLSAgICAgICAgaWYgbmFtZToKLSAgICAgICAgICAgIG5hbWUgPSAiezB9LnsxfSIuZm9ybWF0KHBhY2thZ2VbOmRvdF0sIG5hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuYW1lID0gcGFja2FnZVs6ZG90XQotICAgIHdpdGggX0ltcG9ydExvY2tDb250ZXh0KCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCi0gICAgICAgICAgICBpZiBtb2R1bGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gKCJpbXBvcnQgb2Yge30gaGFsdGVkOyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUgaW4gc3lzLm1vZHVsZXMiLmZvcm1hdChuYW1lKSkKLSAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlKQotICAgICAgICAgICAgcmV0dXJuIG1vZHVsZQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIHBhcmVudCA9IG5hbWUucnBhcnRpdGlvbignLicpWzBdCi0gICAgICAgIHBhdGggPSBOb25lCi0gICAgICAgIGlmIHBhcmVudDoKLSAgICAgICAgICAgIGlmIHBhcmVudCBub3QgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgICAgICAgICAgX2djZF9pbXBvcnQocGFyZW50KQotICAgICAgICAgICAgIyBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eTsgYmUgbmljZXIgdG8gc2tpcCB0aGUgZGljdCBsb29rdXAuCi0gICAgICAgICAgICBwYXJlbnRfbW9kdWxlID0gc3lzLm1vZHVsZXNbcGFyZW50XQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBhdGggPSBwYXJlbnRfbW9kdWxlLl9fcGF0aF9fCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgbXNnID0gKF9FUlJfTVNHICsgJzsge30gaXMgbm90IGEgcGFja2FnZScpLmZvcm1hdChuYW1lLCBwYXJlbnQpCi0gICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnKQotICAgICAgICBtZXRhX3BhdGggPSBzeXMubWV0YV9wYXRoICsgX0lNUExJQ0lUX01FVEFfUEFUSAotICAgICAgICBmb3IgZmluZGVyIGluIG1ldGFfcGF0aDoKLSAgICAgICAgICAgIGxvYWRlciA9IGZpbmRlci5maW5kX21vZHVsZShuYW1lLCBwYXRoKQotICAgICAgICAgICAgaWYgbG9hZGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICMgVGhlIHBhcmVudCBpbXBvcnQgbWF5IGhhdmUgYWxyZWFkeSBpbXBvcnRlZCB0aGlzIG1vZHVsZS4KLSAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgICAgICAgICAgICAgbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKF9FUlJfTVNHLmZvcm1hdChuYW1lKSkKLSAgICAgICAgIyBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eTsgYmUgbmljZXIgdG8gc2tpcCB0aGUgZGljdCBsb29rdXAuCi0gICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCi0gICAgICAgIGlmIHBhcmVudDoKLSAgICAgICAgICAgICMgU2V0IHRoZSBtb2R1bGUgYXMgYW4gYXR0cmlidXRlIG9uIGl0cyBwYXJlbnQuCi0gICAgICAgICAgICBzZXRhdHRyKHBhcmVudF9tb2R1bGUsIG5hbWUucnBhcnRpdGlvbignLicpWzJdLCBtb2R1bGUpCi0gICAgICAgICMgU2V0IF9fcGFja2FnZV9fIGlmIHRoZSBsb2FkZXIgZGlkIG5vdC4KLSAgICAgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKSBvciBtb2R1bGUuX19wYWNrYWdlX18gaXMgTm9uZToKLSAgICAgICAgICAgICMgV2F0Y2ggb3V0IGZvciB3aGF0IGNvbWVzIG91dCBvZiBzeXMubW9kdWxlcyB0byBub3QgYmUgYSBtb2R1bGUsCi0gICAgICAgICAgICAjIGUuZy4gYW4gaW50LgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX25hbWVfXwotICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6Ci0gICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX3BhY2thZ2VfXy5ycGFydGl0aW9uKCcuJylbMF0KLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHJldHVybiBtb2R1bGUKKyAgICAgICAgbmFtZSA9IF9yZXNvbHZlX25hbWUobmFtZSwgcGFja2FnZSwgbGV2ZWwpCisgICAgX2ltcC5hY3F1aXJlX2xvY2soKQorICAgIGlmIG5hbWUgbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICByZXR1cm4gX2ZpbmRfYW5kX2xvYWQobmFtZSwgX2djZF9pbXBvcnQpCisgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbmFtZV0KKyAgICBpZiBtb2R1bGUgaXMgTm9uZToKKyAgICAgICAgX2ltcC5yZWxlYXNlX2xvY2soKQorICAgICAgICBtZXNzYWdlID0gKCJpbXBvcnQgb2Yge30gaGFsdGVkOyAiCisgICAgICAgICAgICAgICAgICAgICJOb25lIGluIHN5cy5tb2R1bGVzIi5mb3JtYXQobmFtZSkpCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsIG5hbWU9bmFtZSkKKyAgICBfbG9ja191bmxvY2tfbW9kdWxlKG5hbWUpCisgICAgcmV0dXJuIG1vZHVsZQorCitkZWYgX2hhbmRsZV9mcm9tbGlzdChtb2R1bGUsIGZyb21saXN0LCBpbXBvcnRfKToKKyAgICAiIiJGaWd1cmUgb3V0IHdoYXQgX19pbXBvcnRfXyBzaG91bGQgcmV0dXJuLgorCisgICAgVGhlIGltcG9ydF8gcGFyYW1ldGVyIGlzIGEgY2FsbGFibGUgd2hpY2ggdGFrZXMgdGhlIG5hbWUgb2YgbW9kdWxlIHRvCisgICAgaW1wb3J0LiBJdCBpcyByZXF1aXJlZCB0byBkZWNvdXBsZSB0aGUgZnVuY3Rpb24gZnJvbSBhc3N1bWluZyBpbXBvcnRsaWIncworICAgIGltcG9ydCBpbXBsZW1lbnRhdGlvbiBpcyBkZXNpcmVkLgorCisgICAgIiIiCisgICAgIyBUaGUgaGVsbCB0aGF0IGlzIGZyb21saXN0IC4uLgorICAgICMgSWYgYSBwYWNrYWdlIHdhcyBpbXBvcnRlZCwgdHJ5IHRvIGltcG9ydCBzdHVmZiBmcm9tIGZyb21saXN0LgorICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKKyAgICAgICAgaWYgJyonIGluIGZyb21saXN0OgorICAgICAgICAgICAgZnJvbWxpc3QgPSBsaXN0KGZyb21saXN0KQorICAgICAgICAgICAgZnJvbWxpc3QucmVtb3ZlKCcqJykKKyAgICAgICAgICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19hbGxfXycpOgorICAgICAgICAgICAgICAgIGZyb21saXN0LmV4dGVuZChtb2R1bGUuX19hbGxfXykKKyAgICAgICAgZm9yIHggaW4gZnJvbWxpc3Q6CisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihtb2R1bGUsIHgpOgorICAgICAgICAgICAgICAgIGZyb21fbmFtZSA9ICd7fS57fScuZm9ybWF0KG1vZHVsZS5fX25hbWVfXywgeCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoaW1wb3J0XywgZnJvbV9uYW1lKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgICAgICMgQmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZGljdGF0ZXMgd2UgaWdub3JlIGZhaWxlZAorICAgICAgICAgICAgICAgICAgICAjIGltcG9ydHMgdHJpZ2dlcmVkIGJ5IGZyb21saXN0IGZvciBtb2R1bGVzIHRoYXQgZG9uJ3QKKyAgICAgICAgICAgICAgICAgICAgIyBleGlzdC4KKyAgICAgICAgICAgICAgICAgICAgIyBUT0RPKGJyZXR0KTogSW4gUHl0aG9uIDMuNCwgaGF2ZSBpbXBvcnQgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgIyAgIE1vZHVsZU5vdEZvdW5kIGFuZCBjYXRjaCB0aGF0LgorICAgICAgICAgICAgICAgICAgICBpZiBnZXRhdHRyKGV4YywgJ19ub3RfZm91bmQnLCBGYWxzZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBleGMubmFtZSA9PSBmcm9tX25hbWU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICByZXR1cm4gbW9kdWxlCiAKIAotZGVmIF9faW1wb3J0X18obmFtZSwgZ2xvYmFscz17fSwgbG9jYWxzPXt9LCBmcm9tbGlzdD1bXSwgbGV2ZWw9MCk6CitkZWYgX2NhbGNfX19wYWNrYWdlX18oZ2xvYmFscyk6CisgICAgIiIiQ2FsY3VsYXRlIHdoYXQgX19wYWNrYWdlX18gc2hvdWxkIGJlLgorCisgICAgX19wYWNrYWdlX18gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgZGVmaW5lZCBvciBjb3VsZCBiZSBzZXQgdG8gTm9uZQorICAgIHRvIHJlcHJlc2VudCB0aGF0IGl0cyBwcm9wZXIgdmFsdWUgaXMgdW5rbm93bi4KKworICAgICIiIgorICAgIHBhY2thZ2UgPSBnbG9iYWxzLmdldCgnX19wYWNrYWdlX18nKQorICAgIGlmIHBhY2thZ2UgaXMgTm9uZToKKyAgICAgICAgcGFja2FnZSA9IGdsb2JhbHNbJ19fbmFtZV9fJ10KKyAgICAgICAgaWYgJ19fcGF0aF9fJyBub3QgaW4gZ2xvYmFsczoKKyAgICAgICAgICAgIHBhY2thZ2UgPSBwYWNrYWdlLnJwYXJ0aXRpb24oJy4nKVswXQorICAgIHJldHVybiBwYWNrYWdlCisKKworZGVmIF9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpOgorICAgICIiIlJldHVybnMgYSBsaXN0IG9mIGZpbGUtYmFzZWQgbW9kdWxlIGxvYWRlcnMuCisKKyAgICBFYWNoIGl0ZW0gaXMgYSB0dXBsZSAobG9hZGVyLCBzdWZmaXhlcywgYWxsb3dfcGFja2FnZXMpLgorICAgICIiIgorICAgIGV4dGVuc2lvbnMgPSBFeHRlbnNpb25GaWxlTG9hZGVyLCBfaW1wLmV4dGVuc2lvbl9zdWZmaXhlcygpCisgICAgc291cmNlID0gU291cmNlRmlsZUxvYWRlciwgU09VUkNFX1NVRkZJWEVTCisgICAgYnl0ZWNvZGUgPSBTb3VyY2VsZXNzRmlsZUxvYWRlciwgQllURUNPREVfU1VGRklYRVMKKyAgICByZXR1cm4gW2V4dGVuc2lvbnMsIHNvdXJjZSwgYnl0ZWNvZGVdCisKKworZGVmIF9faW1wb3J0X18obmFtZSwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSwgZnJvbWxpc3Q9KCksIGxldmVsPTApOgogICAgICIiIkltcG9ydCBhIG1vZHVsZS4KIAogICAgIFRoZSAnZ2xvYmFscycgYXJndW1lbnQgaXMgdXNlZCB0byBpbmZlciB3aGVyZSB0aGUgaW1wb3J0IGlzIG9jY3VyaW5nIGZyb20KQEAgLTg1MSw0MCArMTY2MSwxMTcgQEAKICAgICBpbXBvcnQgKGUuZy4gYGBmcm9tIC4ucGtnIGltcG9ydCBtb2RgYCB3b3VsZCBoYXZlIGEgJ2xldmVsJyBvZiAyKS4KIAogICAgICIiIgotICAgIGlmIG5vdCBoYXNhdHRyKG5hbWUsICdycGFydGl0aW9uJyk6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigibW9kdWxlIG5hbWUgbXVzdCBiZSBzdHIsIG5vdCB7fSIuZm9ybWF0KHR5cGUobmFtZSkpKQogICAgIGlmIGxldmVsID09IDA6CiAgICAgICAgIG1vZHVsZSA9IF9nY2RfaW1wb3J0KG5hbWUpCiAgICAgZWxzZToKLSAgICAgICAgIyBfX3BhY2thZ2VfXyBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBkZWZpbmVkIG9yIGNvdWxkIGJlIHNldCB0byBOb25lCi0gICAgICAgICMgdG8gcmVwcmVzZW50IHRoYXQgaXQncyBwcm9wZXIgdmFsdWUgaXMgdW5rbm93bgotICAgICAgICBwYWNrYWdlID0gZ2xvYmFscy5nZXQoJ19fcGFja2FnZV9fJykKLSAgICAgICAgaWYgcGFja2FnZSBpcyBOb25lOgotICAgICAgICAgICAgcGFja2FnZSA9IGdsb2JhbHNbJ19fbmFtZV9fJ10KLSAgICAgICAgICAgIGlmICdfX3BhdGhfXycgbm90IGluIGdsb2JhbHM6Ci0gICAgICAgICAgICAgICAgcGFja2FnZSA9IHBhY2thZ2UucnBhcnRpdGlvbignLicpWzBdCisgICAgICAgIGdsb2JhbHNfID0gZ2xvYmFscyBpZiBnbG9iYWxzIGlzIG5vdCBOb25lIGVsc2Uge30KKyAgICAgICAgcGFja2FnZSA9IF9jYWxjX19fcGFja2FnZV9fKGdsb2JhbHNfKQogICAgICAgICBtb2R1bGUgPSBfZ2NkX2ltcG9ydChuYW1lLCBwYWNrYWdlLCBsZXZlbCkKLSAgICAjIFRoZSBoZWxsIHRoYXQgaXMgZnJvbWxpc3QgLi4uCiAgICAgaWYgbm90IGZyb21saXN0OgogICAgICAgICAjIFJldHVybiB1cCB0byB0aGUgZmlyc3QgZG90IGluICduYW1lJy4gVGhpcyBpcyBjb21wbGljYXRlZCBieSB0aGUgZmFjdAogICAgICAgICAjIHRoYXQgJ25hbWUnIG1heSBiZSByZWxhdGl2ZS4KICAgICAgICAgaWYgbGV2ZWwgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tuYW1lLnBhcnRpdGlvbignLicpWzBdXQorICAgICAgICAgICAgcmV0dXJuIF9nY2RfaW1wb3J0KG5hbWUucGFydGl0aW9uKCcuJylbMF0pCiAgICAgICAgIGVsaWYgbm90IG5hbWU6CiAgICAgICAgICAgICByZXR1cm4gbW9kdWxlCiAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEZpZ3VyZSBvdXQgd2hlcmUgdG8gc2xpY2UgdGhlIG1vZHVsZSdzIG5hbWUgdXAgdG8gdGhlIGZpcnN0IGRvdAorICAgICAgICAgICAgIyBpbiAnbmFtZScuCiAgICAgICAgICAgICBjdXRfb2ZmID0gbGVuKG5hbWUpIC0gbGVuKG5hbWUucGFydGl0aW9uKCcuJylbMF0pCi0gICAgICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbbW9kdWxlLl9fbmFtZV9fWzotY3V0X29mZl1dCisgICAgICAgICAgICAjIFNsaWNlIGVuZCBuZWVkcyB0byBiZSBwb3NpdGl2ZSB0byBhbGxldmlhdGUgbmVlZCB0byBzcGVjaWFsLWNhc2UKKyAgICAgICAgICAgICMgd2hlbiBgYCcuJyBub3QgaW4gbmFtZWBgLgorICAgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW21vZHVsZS5fX25hbWVfX1s6bGVuKG1vZHVsZS5fX25hbWVfXyktY3V0X29mZl1dCiAgICAgZWxzZToKLSAgICAgICAgIyBJZiBhIHBhY2thZ2Ugd2FzIGltcG9ydGVkLCB0cnkgdG8gaW1wb3J0IHN0dWZmIGZyb20gZnJvbWxpc3QuCi0gICAgICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKLSAgICAgICAgICAgIGlmICcqJyBpbiBmcm9tbGlzdCBhbmQgaGFzYXR0cihtb2R1bGUsICdfX2FsbF9fJyk6Ci0gICAgICAgICAgICAgICAgZnJvbWxpc3QgPSBsaXN0KGZyb21saXN0KQotICAgICAgICAgICAgICAgIGZyb21saXN0LnJlbW92ZSgnKicpCi0gICAgICAgICAgICAgICAgZnJvbWxpc3QuZXh0ZW5kKG1vZHVsZS5fX2FsbF9fKQotICAgICAgICAgICAgZm9yIHggaW4gKHkgZm9yIHkgaW4gZnJvbWxpc3QgaWYgbm90IGhhc2F0dHIobW9kdWxlLHkpKToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIF9nY2RfaW1wb3J0KCd7MH0uezF9Jy5mb3JtYXQobW9kdWxlLl9fbmFtZV9fLCB4KSkKLSAgICAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgcmV0dXJuIG1vZHVsZQorICAgICAgICByZXR1cm4gX2hhbmRsZV9mcm9tbGlzdChtb2R1bGUsIGZyb21saXN0LCBfZ2NkX2ltcG9ydCkKKworCisKK2RlZiBfc2V0dXAoc3lzX21vZHVsZSwgX2ltcF9tb2R1bGUpOgorICAgICIiIlNldHVwIGltcG9ydGxpYiBieSBpbXBvcnRpbmcgbmVlZGVkIGJ1aWx0LWluIG1vZHVsZXMgYW5kIGluamVjdGluZyB0aGVtCisgICAgaW50byB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KKworICAgIEFzIHN5cyBpcyBuZWVkZWQgZm9yIHN5cy5tb2R1bGVzIGFjY2VzcyBhbmQgX2ltcCBpcyBuZWVkZWQgdG8gbG9hZCBidWlsdC1pbgorICAgIG1vZHVsZXMsIHRob3NlIHR3byBtb2R1bGVzIG11c3QgYmUgZXhwbGljaXRseSBwYXNzZWQgaW4uCisKKyAgICAiIiIKKyAgICBnbG9iYWwgX2ltcCwgc3lzLCBCWVRFQ09ERV9TVUZGSVhFUworICAgIF9pbXAgPSBfaW1wX21vZHVsZQorICAgIHN5cyA9IHN5c19tb2R1bGUKKworICAgIGlmIHN5cy5mbGFncy5vcHRpbWl6ZToKKyAgICAgICAgQllURUNPREVfU1VGRklYRVMgPSBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMKKyAgICBlbHNlOgorICAgICAgICBCWVRFQ09ERV9TVUZGSVhFUyA9IERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTCisKKyAgICBtb2R1bGVfdHlwZSA9IHR5cGUoc3lzKQorICAgIGZvciBuYW1lLCBtb2R1bGUgaW4gc3lzLm1vZHVsZXMuaXRlbXMoKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShtb2R1bGUsIG1vZHVsZV90eXBlKToKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fbG9hZGVyX18nKToKKyAgICAgICAgICAgICAgICBpZiBuYW1lIGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lczoKKyAgICAgICAgICAgICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBCdWlsdGluSW1wb3J0ZXIKKyAgICAgICAgICAgICAgICBlbGlmIF9pbXAuaXNfZnJvemVuKG5hbWUpOgorICAgICAgICAgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IEZyb3plbkltcG9ydGVyCisKKyAgICBzZWxmX21vZHVsZSA9IHN5cy5tb2R1bGVzW19fbmFtZV9fXQorICAgIGZvciBidWlsdGluX25hbWUgaW4gKCdfaW8nLCAnX3dhcm5pbmdzJywgJ2J1aWx0aW5zJywgJ21hcnNoYWwnKToKKyAgICAgICAgaWYgYnVpbHRpbl9uYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIGJ1aWx0aW5fbW9kdWxlID0gQnVpbHRpbkltcG9ydGVyLmxvYWRfbW9kdWxlKGJ1aWx0aW5fbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJ1aWx0aW5fbW9kdWxlID0gc3lzLm1vZHVsZXNbYnVpbHRpbl9uYW1lXQorICAgICAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCBidWlsdGluX25hbWUsIGJ1aWx0aW5fbW9kdWxlKQorCisgICAgb3NfZGV0YWlscyA9ICgncG9zaXgnLCBbJy8nXSksICgnbnQnLCBbJ1xcJywgJy8nXSksICgnb3MyJywgWydcXCcsICcvJ10pCisgICAgZm9yIGJ1aWx0aW5fb3MsIHBhdGhfc2VwYXJhdG9ycyBpbiBvc19kZXRhaWxzOgorICAgICAgICAjIEFzc3VtcHRpb24gbWFkZSBpbiBfcGF0aF9qb2luKCkKKyAgICAgICAgYXNzZXJ0IGFsbChsZW4oc2VwKSA9PSAxIGZvciBzZXAgaW4gcGF0aF9zZXBhcmF0b3JzKQorICAgICAgICBwYXRoX3NlcCA9IHBhdGhfc2VwYXJhdG9yc1swXQorICAgICAgICBpZiBidWlsdGluX29zIGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgb3NfbW9kdWxlID0gc3lzLm1vZHVsZXNbYnVpbHRpbl9vc10KKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3NfbW9kdWxlID0gQnVpbHRpbkltcG9ydGVyLmxvYWRfbW9kdWxlKGJ1aWx0aW5fb3MpCisgICAgICAgICAgICAgICAgIyBUT0RPOiByaXAgb3V0IG9zMiBjb2RlIGFmdGVyIDMuMyBpcyByZWxlYXNlZCBhcyBwZXIgUEVQIDExCisgICAgICAgICAgICAgICAgaWYgYnVpbHRpbl9vcyA9PSAnb3MyJyBhbmQgJ0VNWCBHQ0MnIGluIHN5cy52ZXJzaW9uOgorICAgICAgICAgICAgICAgICAgICBwYXRoX3NlcCA9IHBhdGhfc2VwYXJhdG9yc1sxXQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignaW1wb3J0bGliIHJlcXVpcmVzIHBvc2l4IG9yIG50JykKKworICAgIHRyeToKKyAgICAgICAgdGhyZWFkX21vZHVsZSA9IEJ1aWx0aW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX3RocmVhZCcpCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAjIFB5dGhvbiB3YXMgYnVpbHQgd2l0aG91dCB0aHJlYWRzCisgICAgICAgIHRocmVhZF9tb2R1bGUgPSBOb25lCisgICAgd2Vha3JlZl9tb2R1bGUgPSBCdWlsdGluSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ193ZWFrcmVmJykKKworICAgIGlmIGJ1aWx0aW5fb3MgPT0gJ250JzoKKyAgICAgICAgd2lucmVnX21vZHVsZSA9IEJ1aWx0aW5JbXBvcnRlci5sb2FkX21vZHVsZSgnd2lucmVnJykKKyAgICAgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ193aW5yZWcnLCB3aW5yZWdfbW9kdWxlKQorCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ19vcycsIG9zX21vZHVsZSkKKyAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCAnX3RocmVhZCcsIHRocmVhZF9tb2R1bGUpCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ193ZWFrcmVmJywgd2Vha3JlZl9tb2R1bGUpCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ3BhdGhfc2VwJywgcGF0aF9zZXApCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ3BhdGhfc2VwYXJhdG9ycycsIHNldChwYXRoX3NlcGFyYXRvcnMpKQorICAgICMgQ29uc3RhbnRzCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ19yZWxheF9jYXNlJywgX21ha2VfcmVsYXhfY2FzZSgpKQorICAgIEVYVEVOU0lPTl9TVUZGSVhFUy5leHRlbmQoX2ltcC5leHRlbnNpb25fc3VmZml4ZXMoKSkKKyAgICBpZiBidWlsdGluX29zID09ICdudCc6CisgICAgICAgIFNPVVJDRV9TVUZGSVhFUy5hcHBlbmQoJy5weXcnKQorICAgICAgICBpZiAnX2QucHlkJyBpbiBFWFRFTlNJT05fU1VGRklYRVM6CisgICAgICAgICAgICBXaW5kb3dzUmVnaXN0cnlGaW5kZXIuREVCVUdfQlVJTEQgPSBUcnVlCisKKworZGVmIF9pbnN0YWxsKHN5c19tb2R1bGUsIF9pbXBfbW9kdWxlKToKKyAgICAiIiJJbnN0YWxsIGltcG9ydGxpYiBhcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgaW1wb3J0LiIiIgorICAgIF9zZXR1cChzeXNfbW9kdWxlLCBfaW1wX21vZHVsZSkKKyAgICBzdXBwb3J0ZWRfbG9hZGVycyA9IF9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpCisgICAgc3lzLnBhdGhfaG9va3MuZXh0ZW5kKFtGaWxlRmluZGVyLnBhdGhfaG9vaygqc3VwcG9ydGVkX2xvYWRlcnMpXSkKKyAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChCdWlsdGluSW1wb3J0ZXIpCisgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoRnJvemVuSW1wb3J0ZXIpCisgICAgaWYgX29zLl9fbmFtZV9fID09ICdudCc6CisgICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKFdpbmRvd3NSZWdpc3RyeUZpbmRlcikKKyAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChQYXRoRmluZGVyKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9hYmMucHkgYi9MaWIvaW1wb3J0bGliL2FiYy5weQppbmRleCBmYTM0M2Y4Li4zODc1NjdhIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL2FiYy5weQorKysgYi9MaWIvaW1wb3J0bGliL2FiYy5weQpAQCAtMSwxOCArMSw5NCBAQAogIiIiQWJzdHJhY3QgYmFzZSBjbGFzc2VzIHJlbGF0ZWQgdG8gaW1wb3J0LiIiIgogZnJvbSAuIGltcG9ydCBfYm9vdHN0cmFwCiBmcm9tIC4gaW1wb3J0IG1hY2hpbmVyeQotZnJvbSAuIGltcG9ydCB1dGlsCit0cnk6CisgICAgaW1wb3J0IF9mcm96ZW5faW1wb3J0bGliCitleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgorICAgIGlmIGV4Yy5uYW1lICE9ICdfZnJvemVuX2ltcG9ydGxpYic6CisgICAgICAgIHJhaXNlCisgICAgX2Zyb3plbl9pbXBvcnRsaWIgPSBOb25lCiBpbXBvcnQgYWJjCiBpbXBvcnQgaW1wCi1pbXBvcnQgaW8KIGltcG9ydCBtYXJzaGFsCi1pbXBvcnQgb3MucGF0aAogaW1wb3J0IHN5cwogaW1wb3J0IHRva2VuaXplCi1pbXBvcnQgdHlwZXMKIGltcG9ydCB3YXJuaW5ncwogCiAKK2RlZiBfcmVnaXN0ZXIoYWJzdHJhY3RfY2xzLCAqY2xhc3Nlcyk6CisgICAgZm9yIGNscyBpbiBjbGFzc2VzOgorICAgICAgICBhYnN0cmFjdF9jbHMucmVnaXN0ZXIoY2xzKQorICAgICAgICBpZiBfZnJvemVuX2ltcG9ydGxpYiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZyb3plbl9jbHMgPSBnZXRhdHRyKF9mcm96ZW5faW1wb3J0bGliLCBjbHMuX19uYW1lX18pCisgICAgICAgICAgICBhYnN0cmFjdF9jbHMucmVnaXN0ZXIoZnJvemVuX2NscykKKworCitjbGFzcyBGaW5kZXIobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKKworICAgICIiIkxlZ2FjeSBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBpbXBvcnQgZmluZGVycy4KKworICAgIEl0IG1heSBiZSBzdWJjbGFzc2VkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbGVnYWN5IHRoaXJkIHBhcnR5CisgICAgcmVpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGltcG9ydCBzeXN0ZW0uICBPdGhlcndpc2UsIGZpbmRlcgorICAgIGltcGxlbWVudGF0aW9ucyBzaG91bGQgZGVyaXZlIGZyb20gdGhlIG1vcmUgc3BlY2lmaWMgTWV0YVBhdGhGaW5kZXIKKyAgICBvciBQYXRoRW50cnlGaW5kZXIgQUJDcy4KKyAgICAiIiIKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6CisgICAgICAgICIiIkFuIGFic3RyYWN0IG1ldGhvZCB0aGF0IHNob3VsZCBmaW5kIGEgbW9kdWxlLgorICAgICAgICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIgYW5kIHRoZSBvcHRpb25hbCBwYXRoIGlzIGEgc3RyIG9yIE5vbmUuCisgICAgICAgIFJldHVybnMgYSBMb2FkZXIgb2JqZWN0LgorICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisKK2NsYXNzIE1ldGFQYXRoRmluZGVyKEZpbmRlcik6CisKKyAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBpbXBvcnQgZmluZGVycyBvbiBzeXMubWV0YV9wYXRoLiIiIgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aCk6CisgICAgICAgICIiIkFic3RyYWN0IG1ldGhvZCB3aGljaCwgd2hlbiBpbXBsZW1lbnRlZCwgc2hvdWxkIGZpbmQgYSBtb2R1bGUuCisgICAgICAgIFRoZSBmdWxsbmFtZSBpcyBhIHN0ciBhbmQgdGhlIHBhdGggaXMgYSBzdHIgb3IgTm9uZS4KKyAgICAgICAgUmV0dXJucyBhIExvYWRlciBvYmplY3QuCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoc2VsZik6CisgICAgICAgICIiIkFuIG9wdGlvbmFsIG1ldGhvZCBmb3IgY2xlYXJpbmcgdGhlIGZpbmRlcidzIGNhY2hlLCBpZiBhbnkuCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworX3JlZ2lzdGVyKE1ldGFQYXRoRmluZGVyLCBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLCBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIsCisgICAgICAgICAgbWFjaGluZXJ5LlBhdGhGaW5kZXIsIG1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXIpCisKKworY2xhc3MgUGF0aEVudHJ5RmluZGVyKEZpbmRlcik6CisKKyAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBwYXRoIGVudHJ5IGZpbmRlcnMgdXNlZCBieSBQYXRoRmluZGVyLiIiIgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBmaW5kX2xvYWRlcihzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIkFic3RyYWN0IG1ldGhvZCB3aGljaCwgd2hlbiBpbXBsZW1lbnRlZCwgcmV0dXJucyBhIG1vZHVsZSBsb2FkZXIuCisgICAgICAgIFRoZSBmdWxsbmFtZSBpcyBhIHN0ci4gIFJldHVybnMgYSAyLXR1cGxlIG9mIChMb2FkZXIsIHBvcnRpb24pIHdoZXJlCisgICAgICAgIHBvcnRpb24gaXMgYSBzZXF1ZW5jZSBvZiBmaWxlIHN5c3RlbSBsb2NhdGlvbnMgY29udHJpYnV0aW5nIHRvIHBhcnQgb2YKKyAgICAgICAgYSBuYW1lc3BhY2UgcGFja2FnZS4gIFRoZSBzZXF1ZW5jZSBtYXkgYmUgZW1wdHkgYW5kIHRoZSBsb2FkZXIgbWF5IGJlCisgICAgICAgIE5vbmUuCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBmaW5kX21vZHVsZSA9IF9ib290c3RyYXAuX2ZpbmRfbW9kdWxlX3NoaW0KKworICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhzZWxmKToKKyAgICAgICAgIiIiQW4gb3B0aW9uYWwgbWV0aG9kIGZvciBjbGVhcmluZyB0aGUgZmluZGVyJ3MgY2FjaGUsIGlmIGFueS4KKyAgICAgICAgVGhpcyBtZXRob2QgaXMgdXNlZCBieSBQYXRoRmluZGVyLmludmFsaWRhdGVfY2FjaGVzKCkuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworX3JlZ2lzdGVyKFBhdGhFbnRyeUZpbmRlciwgbWFjaGluZXJ5LkZpbGVGaW5kZXIpCisKKwogY2xhc3MgTG9hZGVyKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CiAKICAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBpbXBvcnQgbG9hZGVycy4iIiIKQEAgLTIzLDIzICs5OSwxMiBAQAogICAgICAgICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIuIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAotCi1jbGFzcyBGaW5kZXIobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKLQotICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGltcG9ydCBmaW5kZXJzLiIiIgotCiAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAotICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKLSAgICAgICAgIiIiQWJzdHJhY3QgbWV0aG9kIHdoaWNoIHdoZW4gaW1wbGVtZW50ZWQgc2hvdWxkIGZpbmQgYSBtb2R1bGUuCi0gICAgICAgIFRoZSBmdWxsbmFtZSBpcyBhIHN0ciBhbmQgdGhlIG9wdGlvbmFsIHBhdGggaXMgYSBzdHIgb3IgTm9uZS4KLSAgICAgICAgUmV0dXJucyBhIExvYWRlciBvYmplY3QuCi0gICAgICAgICIiIgorICAgIGRlZiBtb2R1bGVfcmVwcihzZWxmLCBtb2R1bGUpOgorICAgICAgICAiIiJBYnN0cmFjdCBtZXRob2Qgd2hpY2ggd2hlbiBpbXBsZW1lbnRlZCBjYWxjdWxhdGVzIGFuZCByZXR1cm5zIHRoZQorICAgICAgICBnaXZlbiBtb2R1bGUncyByZXByLiIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLUZpbmRlci5yZWdpc3RlcihtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyKQotRmluZGVyLnJlZ2lzdGVyKG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlcikKLUZpbmRlci5yZWdpc3RlcihtYWNoaW5lcnkuUGF0aEZpbmRlcikKLQogCiBjbGFzcyBSZXNvdXJjZUxvYWRlcihMb2FkZXIpOgogCkBAIC04NCw4ICsxNDksOCBAQAogICAgICAgICBtb2R1bGUuICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIuICBSZXR1cm5zIGEgc3RyLiIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLUluc3BlY3RMb2FkZXIucmVnaXN0ZXIobWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlcikKLUluc3BlY3RMb2FkZXIucmVnaXN0ZXIobWFjaGluZXJ5LkZyb3plbkltcG9ydGVyKQorX3JlZ2lzdGVyKEluc3BlY3RMb2FkZXIsIG1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIsIG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlciwKKyAgICAgICAgICAgIG1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKQogCiAKIGNsYXNzIEV4ZWN1dGlvbkxvYWRlcihJbnNwZWN0TG9hZGVyKToKQEAgLTEwNCw2ICsxNjksMTUgQEAKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAKK2NsYXNzIEZpbGVMb2FkZXIoX2Jvb3RzdHJhcC5GaWxlTG9hZGVyLCBSZXNvdXJjZUxvYWRlciwgRXhlY3V0aW9uTG9hZGVyKToKKworICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgcGFydGlhbGx5IGltcGxlbWVudGluZyB0aGUgUmVzb3VyY2VMb2FkZXIgYW5kCisgICAgRXhlY3V0aW9uTG9hZGVyIEFCQ3MuIiIiCisKK19yZWdpc3RlcihGaWxlTG9hZGVyLCBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgIG1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKKworCiBjbGFzcyBTb3VyY2VMb2FkZXIoX2Jvb3RzdHJhcC5Tb3VyY2VMb2FkZXIsIFJlc291cmNlTG9hZGVyLCBFeGVjdXRpb25Mb2FkZXIpOgogCiAgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgbG9hZGluZyBzb3VyY2UgY29kZSAoYW5kIG9wdGlvbmFsbHkgYW55CkBAIC0xMjMsNyArMTk3LDIwIEBACiAKICAgICBkZWYgcGF0aF9tdGltZShzZWxmLCBwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSAoaW50KSBtb2RpZmljYXRpb24gdGltZSBmb3IgdGhlIHBhdGggKHN0cikuIiIiCi0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgaWYgc2VsZi5wYXRoX3N0YXRzLl9fZnVuY19fIGlzIFNvdXJjZUxvYWRlci5wYXRoX3N0YXRzOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICByZXR1cm4gaW50KHNlbGYucGF0aF9zdGF0cyhwYXRoKVsnbXRpbWUnXSkKKworICAgIGRlZiBwYXRoX3N0YXRzKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJSZXR1cm4gYSBtZXRhZGF0YSBkaWN0IGZvciB0aGUgc291cmNlIHBvaW50ZWQgdG8gYnkgdGhlIHBhdGggKHN0cikuCisgICAgICAgIFBvc3NpYmxlIGtleXM6CisgICAgICAgIC0gJ210aW1lJyAobWFuZGF0b3J5KSBpcyB0aGUgbnVtZXJpYyB0aW1lc3RhbXAgb2YgbGFzdCBzb3VyY2UKKyAgICAgICAgICBjb2RlIG1vZGlmaWNhdGlvbjsKKyAgICAgICAgLSAnc2l6ZScgKG9wdGlvbmFsKSBpcyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgc291cmNlIGNvZGUuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLnBhdGhfbXRpbWUuX19mdW5jX18gaXMgU291cmNlTG9hZGVyLnBhdGhfbXRpbWU6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisgICAgICAgIHJldHVybiB7J210aW1lJzogc2VsZi5wYXRoX210aW1lKHBhdGgpfQogCiAgICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpOgogICAgICAgICAiIiJXcml0ZSB0aGUgYnl0ZXMgdG8gdGhlIHBhdGggKGlmIHBvc3NpYmxlKS4KQEAgLTEzNyw2ICsyMjQsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCitfcmVnaXN0ZXIoU291cmNlTG9hZGVyLCBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcikKIAogY2xhc3MgUHlMb2FkZXIoU291cmNlTG9hZGVyKToKIApAQCAtMTk1LDEwICsyODMsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlIFNvdXJjZUxvYWRlciBpbnN0ZWFkLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlZSB0aGUgaW1wb3J0bGliIGRvY3VtZW50YXRpb24gb24gaG93IHRvIGJlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcGF0aWJsZSB3aXRoIFB5dGhvbiAzLjEgb253YXJkcy4iLAotICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgcGF0aCA9IHNlbGYuc291cmNlX3BhdGgoZnVsbG5hbWUpCiAgICAgICAgIGlmIHBhdGggaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihuYW1lPWZ1bGxuYW1lKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHBhdGgKIApAQCAtMjI2LDcgKzMxNCw3IEBACiAgICAgICAgIGlmIHBhdGggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gcGF0aAogICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigibm8gc291cmNlIG9yIGJ5dGVjb2RlIHBhdGggYXZhaWxhYmxlIGZvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInswIXJ9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7MCFyfSIuZm9ybWF0KGZ1bGxuYW1lKSwgbmFtZT1mdWxsbmFtZSkKIAogICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIkdldCBhIGNvZGUgb2JqZWN0IGZyb20gc291cmNlIG9yIGJ5dGVjb2RlLiIiIgpAQCAtMjM0LDcgKzMyMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlbW92YWwgaW4gUHl0aG9uIDMuNDsgdXNlIFNvdXJjZUxvYWRlciBpbnN0ZWFkLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklmIFB5dGhvbiAzLjEgY29tcGF0aWJpbGl0eSBpcyByZXF1aXJlZCwgc2VlIHRoZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhdGVzdCBkb2N1bWVudGF0aW9uIGZvciBQeUxvYWRlci4iLAotICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgc291cmNlX3RpbWVzdGFtcCA9IHNlbGYuc291cmNlX210aW1lKGZ1bGxuYW1lKQogICAgICAgICAjIFRyeSB0byB1c2UgYnl0ZWNvZGUgaWYgaXQgaXMgYXZhaWxhYmxlLgogICAgICAgICBieXRlY29kZV9wYXRoID0gc2VsZi5ieXRlY29kZV9wYXRoKGZ1bGxuYW1lKQpAQCAtMjQzLDIwICszMzEsMzAgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBtYWdpYyA9IGRhdGFbOjRdCiAgICAgICAgICAgICAgICAgaWYgbGVuKG1hZ2ljKSA8IDQ6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJiYWQgbWFnaWMgbnVtYmVyIGluIHt9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgbWFnaWMgbnVtYmVyIGluIHt9Ii5mb3JtYXQoZnVsbG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSwgcGF0aD1ieXRlY29kZV9wYXRoKQogICAgICAgICAgICAgICAgIHJhd190aW1lc3RhbXAgPSBkYXRhWzQ6OF0KICAgICAgICAgICAgICAgICBpZiBsZW4ocmF3X3RpbWVzdGFtcCkgPCA0OgogICAgICAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiYmFkIHRpbWVzdGFtcCBpbiB7fSIuZm9ybWF0KGZ1bGxuYW1lKSkKLSAgICAgICAgICAgICAgICBweWNfdGltZXN0YW1wID0gbWFyc2hhbC5fcl9sb25nKHJhd190aW1lc3RhbXApCi0gICAgICAgICAgICAgICAgYnl0ZWNvZGUgPSBkYXRhWzg6XQorICAgICAgICAgICAgICAgIHB5Y190aW1lc3RhbXAgPSBfYm9vdHN0cmFwLl9yX2xvbmcocmF3X3RpbWVzdGFtcCkKKyAgICAgICAgICAgICAgICByYXdfc291cmNlX3NpemUgPSBkYXRhWzg6MTJdCisgICAgICAgICAgICAgICAgaWYgbGVuKHJhd19zb3VyY2Vfc2l6ZSkgIT0gNDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoImJhZCBmaWxlIHNpemUgaW4ge30iLmZvcm1hdChmdWxsbmFtZSkpCisgICAgICAgICAgICAgICAgIyBTb3VyY2Ugc2l6ZSBpcyB1bnVzZWQgYXMgdGhlIEFCQyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvCisgICAgICAgICAgICAgICAgIyBnZXQgdGhlIHNpemUgb2YgdGhlIHNvdXJjZSBhaGVhZCBvZiByZWFkaW5nIGl0LgorICAgICAgICAgICAgICAgIGJ5dGVjb2RlID0gZGF0YVsxMjpdCiAgICAgICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgbWFnaWMgbnVtYmVyIGlzIHZhbGlkLgogICAgICAgICAgICAgICAgIGlmIGltcC5nZXRfbWFnaWMoKSAhPSBtYWdpYzoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoImJhZCBtYWdpYyBudW1iZXIgaW4ge30iLmZvcm1hdChmdWxsbmFtZSkpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBtYWdpYyBudW1iZXIgaW4ge30iLmZvcm1hdChmdWxsbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lLCBwYXRoPWJ5dGVjb2RlX3BhdGgpCiAgICAgICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgYnl0ZWNvZGUgaXMgbm90IHN0YWxlIChvbmx5IG1hdHRlcnMgd2hlbgogICAgICAgICAgICAgICAgICMgdGhlcmUgaXMgc291cmNlIHRvIGZhbGwgYmFjayBvbi4KICAgICAgICAgICAgICAgICBpZiBzb3VyY2VfdGltZXN0YW1wOgogICAgICAgICAgICAgICAgICAgICBpZiBweWNfdGltZXN0YW1wIDwgc291cmNlX3RpbWVzdGFtcDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJieXRlY29kZSBpcyBzdGFsZSIpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiYnl0ZWNvZGUgaXMgc3RhbGUiLCBuYW1lPWZ1bGxuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1ieXRlY29kZV9wYXRoKQogICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgRU9GRXJyb3IpOgogICAgICAgICAgICAgICAgICMgSWYgc291cmNlIGlzIGF2YWlsYWJsZSBnaXZlIGl0IGEgc2hvdC4KICAgICAgICAgICAgICAgICBpZiBzb3VyY2VfdGltZXN0YW1wIGlzIG5vdCBOb25lOgpAQCAtMjY4LDE4ICszNjYsMjAgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gbWFyc2hhbC5sb2FkcyhieXRlY29kZSkKICAgICAgICAgZWxpZiBzb3VyY2VfdGltZXN0YW1wIGlzIE5vbmU6CiAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigibm8gc291cmNlIG9yIGJ5dGVjb2RlIGF2YWlsYWJsZSB0byBjcmVhdGUgY29kZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QgZm9yIHswIXJ9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCBmb3IgezAhcn0iLmZvcm1hdChmdWxsbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lKQogICAgICAgICAjIFVzZSB0aGUgc291cmNlLgogICAgICAgICBzb3VyY2VfcGF0aCA9IHNlbGYuc291cmNlX3BhdGgoZnVsbG5hbWUpCiAgICAgICAgIGlmIHNvdXJjZV9wYXRoIGlzIE5vbmU6CiAgICAgICAgICAgICBtZXNzYWdlID0gImEgc291cmNlIHBhdGggbXVzdCBleGlzdCB0byBsb2FkIHswfSIuZm9ybWF0KGZ1bGxuYW1lKQotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSkKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsIG5hbWU9ZnVsbG5hbWUpCiAgICAgICAgIHNvdXJjZSA9IHNlbGYuZ2V0X2RhdGEoc291cmNlX3BhdGgpCiAgICAgICAgIGNvZGVfb2JqZWN0ID0gY29tcGlsZShzb3VyY2UsIHNvdXJjZV9wYXRoLCAnZXhlYycsIGRvbnRfaW5oZXJpdD1UcnVlKQogICAgICAgICAjIEdlbmVyYXRlIGJ5dGVjb2RlIGFuZCB3cml0ZSBpdCBvdXQuCiAgICAgICAgIGlmIG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZToKICAgICAgICAgICAgIGRhdGEgPSBieXRlYXJyYXkoaW1wLmdldF9tYWdpYygpKQotICAgICAgICAgICAgZGF0YS5leHRlbmQobWFyc2hhbC5fd19sb25nKHNvdXJjZV90aW1lc3RhbXApKQorICAgICAgICAgICAgZGF0YS5leHRlbmQoX2Jvb3RzdHJhcC5fd19sb25nKHNvdXJjZV90aW1lc3RhbXApKQorICAgICAgICAgICAgZGF0YS5leHRlbmQoX2Jvb3RzdHJhcC5fd19sb25nKGxlbihzb3VyY2UpICYgMHhGRkZGRkZGRikpCiAgICAgICAgICAgICBkYXRhLmV4dGVuZChtYXJzaGFsLmR1bXBzKGNvZGVfb2JqZWN0KSkKICAgICAgICAgICAgIHNlbGYud3JpdGVfYnl0ZWNvZGUoZnVsbG5hbWUsIGRhdGEpCiAgICAgICAgIHJldHVybiBjb2RlX29iamVjdApkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9tYWNoaW5lcnkucHkgYi9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQppbmRleCA1MTk3NzQ0Li5mZjgyNmU0IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQorKysgYi9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQpAQCAtMSw1ICsxLDIwIEBACiAiIiJUaGUgbWFjaGluZXJ5IG9mIGltcG9ydGxpYjogZmluZGVycywgbG9hZGVycywgaG9va3MsIGV0Yy4iIiIKIAoraW1wb3J0IF9pbXAKKworZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgKFNPVVJDRV9TVUZGSVhFUywgREVCVUdfQllURUNPREVfU1VGRklYRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTLCBCWVRFQ09ERV9TVUZGSVhFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICBFWFRFTlNJT05fU1VGRklYRVMpCiBmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBCdWlsdGluSW1wb3J0ZXIKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IEZyb3plbkltcG9ydGVyCitmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBXaW5kb3dzUmVnaXN0cnlGaW5kZXIKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IFBhdGhGaW5kZXIKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IEZpbGVGaW5kZXIKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IFNvdXJjZUZpbGVMb2FkZXIKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IFNvdXJjZWxlc3NGaWxlTG9hZGVyCitmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBFeHRlbnNpb25GaWxlTG9hZGVyCisKKworZGVmIGFsbF9zdWZmaXhlcygpOgorICAgICIiIlJldHVybnMgYSBsaXN0IG9mIGFsbCByZWNvZ25pemVkIG1vZHVsZSBzdWZmaXhlcyBmb3IgdGhpcyBwcm9jZXNzIiIiCisgICAgcmV0dXJuIFNPVVJDRV9TVUZGSVhFUyArIEJZVEVDT0RFX1NVRkZJWEVTICsgRVhURU5TSU9OX1NVRkZJWEVTCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvX19pbml0X18ucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OWRlMjkuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9fX21haW5fXy5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9fX21haW5fXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGVjYzUzZC4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvX19tYWluX18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0iIiJSdW4gaW1wb3J0bGliJ3MgdGVzdCBzdWl0ZS4KLQotU3BlY2lmeWluZyB0aGUgYGAtLWJ1aWx0aW5gYCBmbGFnIHdpbGwgcnVuIHRlc3RzLCB3aGVyZSBhcHBsaWNhYmxlLCB3aXRoCi1idWlsdGlucy5fX2ltcG9ydF9fIGluc3RlYWQgb2YgaW1wb3J0bGliLl9faW1wb3J0X18uCi0KLSIiIgotaW1wb3J0IGltcG9ydGxpYgotZnJvbSBpbXBvcnRsaWIudGVzdC5pbXBvcnRfIGltcG9ydCB1dGlsCi1pbXBvcnQgb3MucGF0aAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGlmICdfX3B5Y2FjaGVfXycgaW4gX19maWxlX186Ci0gICAgICAgIHBhcnRzID0gX19maWxlX18uc3BsaXQob3MucGF0aC5zZXApCi0gICAgICAgIHN0YXJ0X2RpciA9IHNlcC5qb2luKHBhcnRzWzotMl0pCi0gICAgZWxzZToKLSAgICAgICAgc3RhcnRfZGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHRvcF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKHN0YXJ0X2RpcikpCi0gICAgdGVzdF9sb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKLSAgICBpZiAnLS1idWlsdGluJyBpbiBzeXMuYXJndjoKLSAgICAgICAgdXRpbC51c2luZ19fX2ltcG9ydF9fID0gVHJ1ZQotICAgIHJ1bl91bml0dGVzdCh0ZXN0X2xvYWRlci5kaXNjb3ZlcihzdGFydF9kaXIsIHRvcF9sZXZlbF9kaXI9dG9wX2RpcikpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2JlbmNobWFyay5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9iZW5jaG1hcmsucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZGU2YzYuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2JlbmNobWFyay5weQorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi0iIiJCZW5jaG1hcmsgc29tZSBiYXNpYyBpbXBvcnQgdXNlLWNhc2VzLgotCi1UaGUgYXNzdW1wdGlvbiBpcyBtYWRlIHRoYXQgdGhpcyBiZW5jaG1hcmsgaXMgcnVuIGluIGEgZnJlc2ggaW50ZXJwcmV0ZXIgYW5kCi10aHVzIGhhcyBubyBleHRlcm5hbCBjaGFuZ2VzIG1hZGUgdG8gaW1wb3J0LXJlbGF0ZWQgYXR0cmlidXRlcyBpbiBzeXMuCi0KLSIiIgotZnJvbSAuIGltcG9ydCB1dGlsCi1mcm9tIC5zb3VyY2UgaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKLWltcG9ydCBkZWNpbWFsCi1pbXBvcnQgaW1wCi1pbXBvcnQgaW1wb3J0bGliCi1pbXBvcnQgb3MKLWltcG9ydCBweV9jb21waWxlCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGltZWl0Ci0KLQotZGVmIGJlbmNoKG5hbWUsIGNsZWFudXA9bGFtYmRhOiBOb25lLCAqLCBzZWNvbmRzPTEsIHJlcGVhdD0zKToKLSAgICAiIiJCZW5jaCB0aGUgZ2l2ZW4gc3RhdGVtZW50IGFzIG1hbnkgdGltZXMgYXMgbmVjZXNzYXJ5IHVudGlsIHRvdGFsCi0gICAgZXhlY3V0aW9ucyB0YWtlIG9uZSBzZWNvbmQuIiIiCi0gICAgc3RtdCA9ICJfX2ltcG9ydF9fKHshcn0pIi5mb3JtYXQobmFtZSkKLSAgICB0aW1lciA9IHRpbWVpdC5UaW1lcihzdG10KQotICAgIGZvciB4IGluIHJhbmdlKHJlcGVhdCk6Ci0gICAgICAgIHRvdGFsX3RpbWUgPSAwCi0gICAgICAgIGNvdW50ID0gMAotICAgICAgICB3aGlsZSB0b3RhbF90aW1lIDwgc2Vjb25kczoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0b3RhbF90aW1lICs9IHRpbWVyLnRpbWVpdCgxKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjbGVhbnVwKCkKLSAgICAgICAgICAgIGNvdW50ICs9IDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgT25lIGV4ZWN1dGlvbiB0b28gZmFyCi0gICAgICAgICAgICBpZiB0b3RhbF90aW1lID4gc2Vjb25kczoKLSAgICAgICAgICAgICAgICBjb3VudCAtPSAxCi0gICAgICAgIHlpZWxkIGNvdW50IC8vIHNlY29uZHMKLQotZGVmIGZyb21fY2FjaGUoc2Vjb25kcywgcmVwZWF0KToKLSAgICAiIiJzeXMubW9kdWxlcyIiIgotICAgIG5hbWUgPSAnPGJlbmNobWFyayBpbXBvcnQ+JwotICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKG5hbWUpCi0gICAgbW9kdWxlLl9fZmlsZV9fID0gJzx0ZXN0PicKLSAgICBtb2R1bGUuX19wYWNrYWdlX18gPSAnJwotICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgotICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQotICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIHJlcGVhdD1yZXBlYXQsIHNlY29uZHM9c2Vjb25kcyk6Ci0gICAgICAgICAgICB5aWVsZCByZXN1bHQKLQotCi1kZWYgYnVpbHRpbl9tb2Qoc2Vjb25kcywgcmVwZWF0KToKLSAgICAiIiJCdWlsdC1pbiBtb2R1bGUiIiIKLSAgICBuYW1lID0gJ2Vycm5vJwotICAgIGlmIG5hbWUgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgIGRlbCBzeXMubW9kdWxlc1tuYW1lXQotICAgICMgUmVseWluZyBvbiBidWlsdC1pbiBpbXBvcnRlciBiZWluZyBpbXBsaWNpdC4KLSAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLCByZXBlYXQ9cmVwZWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgeWllbGQgcmVzdWx0Ci0KLQotZGVmIHNvdXJjZV93b19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgotICAgICIiIlNvdXJjZSB3L28gYnl0ZWNvZGU6IHNpbXBsZSIiIgotICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gVHJ1ZQotICAgIHRyeToKLSAgICAgICAgbmFtZSA9ICdfX2ltcG9ydGxpYl90ZXN0X2JlbmNobWFya19fJwotICAgICAgICAjIENsZWFycyBvdXQgc3lzLm1vZHVsZXMgYW5kIHB1dHMgYW4gZW50cnkgYXQgdGhlIGZyb250IG9mIHN5cy5wYXRoLgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKG5hbWUpIGFzIG1hcHBpbmc6Ci0gICAgICAgICAgICBhc3NlcnQgbm90IG9zLnBhdGguZXhpc3RzKGltcC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nW25hbWVdKSkKLSAgICAgICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHM9c2Vjb25kcyk6Ci0gICAgICAgICAgICAgICAgeWllbGQgcmVzdWx0Ci0gICAgZmluYWxseToKLSAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBGYWxzZQotCi0KLWRlZiBkZWNpbWFsX3dvX2J5dGVjb2RlKHNlY29uZHMsIHJlcGVhdCk6Ci0gICAgIiIiU291cmNlIHcvbyBieXRlY29kZTogZGVjaW1hbCIiIgotICAgIG5hbWUgPSAnZGVjaW1hbCcKLSAgICBkZWNpbWFsX2J5dGVjb2RlID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKGRlY2ltYWwuX19maWxlX18pCi0gICAgaWYgb3MucGF0aC5leGlzdHMoZGVjaW1hbF9ieXRlY29kZSk6Ci0gICAgICAgIG9zLnVubGluayhkZWNpbWFsX2J5dGVjb2RlKQotICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gVHJ1ZQotICAgIHRyeToKLSAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBsYW1iZGE6IHN5cy5tb2R1bGVzLnBvcChuYW1lKSwgcmVwZWF0PXJlcGVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICAgICAgeWllbGQgcmVzdWx0Ci0gICAgZmluYWxseToKLSAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBGYWxzZQotCi0KLWRlZiBzb3VyY2Vfd3JpdGluZ19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgotICAgICIiIlNvdXJjZSB3cml0aW5nIGJ5dGVjb2RlOiBzaW1wbGUiIiIKLSAgICBhc3NlcnQgbm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCi0gICAgbmFtZSA9ICdfX2ltcG9ydGxpYl90ZXN0X2JlbmNobWFya19fJwotICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobmFtZSkgYXMgbWFwcGluZzoKLSAgICAgICAgZGVmIGNsZWFudXAoKToKLSAgICAgICAgICAgIHN5cy5tb2R1bGVzLnBvcChuYW1lKQotICAgICAgICAgICAgb3MudW5saW5rKGltcC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nW25hbWVdKSkKLSAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBjbGVhbnVwLCByZXBlYXQ9cmVwZWF0LCBzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCi0gICAgICAgICAgICB5aWVsZCByZXN1bHQKLQotCi1kZWYgZGVjaW1hbF93cml0aW5nX2J5dGVjb2RlKHNlY29uZHMsIHJlcGVhdCk6Ci0gICAgIiIiU291cmNlIHdyaXRpbmcgYnl0ZWNvZGU6IGRlY2ltYWwiIiIKLSAgICBhc3NlcnQgbm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCi0gICAgbmFtZSA9ICdkZWNpbWFsJwotICAgIGRlZiBjbGVhbnVwKCk6Ci0gICAgICAgIHN5cy5tb2R1bGVzLnBvcChuYW1lKQotICAgICAgICBvcy51bmxpbmsoaW1wLmNhY2hlX2Zyb21fc291cmNlKGRlY2ltYWwuX19maWxlX18pKQotICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgY2xlYW51cCwgcmVwZWF0PXJlcGVhdCwgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgeWllbGQgcmVzdWx0Ci0KLQotZGVmIHNvdXJjZV91c2luZ19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgotICAgICIiIkJ5dGVjb2RlIHcvIHNvdXJjZTogc2ltcGxlIiIiCi0gICAgbmFtZSA9ICdfX2ltcG9ydGxpYl90ZXN0X2JlbmNobWFya19fJwotICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobmFtZSkgYXMgbWFwcGluZzoKLSAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKG1hcHBpbmdbbmFtZV0pCi0gICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCi0gICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgIHlpZWxkIHJlc3VsdAotCi0KLWRlZiBkZWNpbWFsX3VzaW5nX2J5dGVjb2RlKHNlY29uZHMsIHJlcGVhdCk6Ci0gICAgIiIiQnl0ZWNvZGUgdy8gc291cmNlOiBkZWNpbWFsIiIiCi0gICAgbmFtZSA9ICdkZWNpbWFsJwotICAgIHB5X2NvbXBpbGUuY29tcGlsZShkZWNpbWFsLl9fZmlsZV9fKQotICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICB5aWVsZCByZXN1bHQKLQotCi1kZWYgbWFpbihpbXBvcnRfKToKLSAgICBfX2J1aWx0aW5zX18uX19pbXBvcnRfXyA9IGltcG9ydF8KLSAgICBiZW5jaG1hcmtzID0gKGZyb21fY2FjaGUsIGJ1aWx0aW5fbW9kLAotICAgICAgICAgICAgICAgICAgc291cmNlX3VzaW5nX2J5dGVjb2RlLCBzb3VyY2Vfd29fYnl0ZWNvZGUsCi0gICAgICAgICAgICAgICAgICBzb3VyY2Vfd3JpdGluZ19ieXRlY29kZSwKLSAgICAgICAgICAgICAgICAgIGRlY2ltYWxfdXNpbmdfYnl0ZWNvZGUsIGRlY2ltYWxfd3JpdGluZ19ieXRlY29kZSwKLSAgICAgICAgICAgICAgICAgIGRlY2ltYWxfd29fYnl0ZWNvZGUsKQotICAgIHNlY29uZHMgPSAxCi0gICAgc2Vjb25kc19wbHVyYWwgPSAncycgaWYgc2Vjb25kcyA+IDEgZWxzZSAnJwotICAgIHJlcGVhdCA9IDMKLSAgICBoZWFkZXIgPSAiTWVhc3VyaW5nIGltcG9ydHMvc2Vjb25kIG92ZXIge30gc2Vjb25ke30sIGJlc3Qgb3V0IG9mIHt9XG4iCi0gICAgcHJpbnQoaGVhZGVyLmZvcm1hdChzZWNvbmRzLCBzZWNvbmRzX3BsdXJhbCwgcmVwZWF0KSkKLSAgICBmb3IgYmVuY2htYXJrIGluIGJlbmNobWFya3M6Ci0gICAgICAgIHByaW50KGJlbmNobWFyay5fX2RvY19fLCAiWyIsIGVuZD0nICcpCi0gICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICByZXN1bHRzID0gW10KLSAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaG1hcmsoc2Vjb25kcz1zZWNvbmRzLCByZXBlYXQ9cmVwZWF0KToKLSAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCkKLSAgICAgICAgICAgIHByaW50KHJlc3VsdCwgZW5kPScgJykKLSAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICBhc3NlcnQgbm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCi0gICAgICAgIHByaW50KCJdIiwgImJlc3QgaXMiLCBmb3JtYXQobWF4KHJlc3VsdHMpLCAnLGQnKSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGltcG9ydCBvcHRwYXJzZQotCi0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLWInLCAnLS1idWlsdGluJywgZGVzdD0nYnVpbHRpbicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSJ1c2UgdGhlIGJ1aWx0LWluIF9faW1wb3J0X18iKQotICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCi0gICAgaWYgYXJnczoKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJ1bnJlY29nbml6ZWQgYXJnczoge30iLmZvcm1hdChhcmdzKSkKLSAgICBpbXBvcnRfID0gX19pbXBvcnRfXwotICAgIGlmIG5vdCBvcHRpb25zLmJ1aWx0aW46Ci0gICAgICAgIGltcG9ydF8gPSBpbXBvcnRsaWIuX19pbXBvcnRfXwotCi0gICAgbWFpbihpbXBvcnRfKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi9fX2luaXRfXy5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlYzU4NDAuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLWltcG9ydCBpbXBvcnRsaWIudGVzdAotaW1wb3J0IG9zLnBhdGgKLWltcG9ydCB1bml0dGVzdAotCi0KLWRlZiB0ZXN0X3N1aXRlKCk6Ci0gICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHJldHVybiBpbXBvcnRsaWIudGVzdC50ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5leHRlbnNpb24nLCBkaXJlY3RvcnkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KHRlc3Rfc3VpdGUoKSkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfbG9hZGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTc4M2RiLi4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGV4dF91dGlsCi1mcm9tIC4uIGltcG9ydCBhYmMKLWZyb20gLi4gaW1wb3J0IHV0aWwKLQotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotY2xhc3MgTG9hZGVyVGVzdHMoYWJjLkxvYWRlclRlc3RzKToKLQotICAgICIiIlRlc3QgbG9hZF9tb2R1bGUoKSBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMuIiIiCi0KLSAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9FeHRlbnNpb25GaWxlTG9hZGVyKGV4dF91dGlsLk5BTUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRfdXRpbC5GSUxFUEFUSCkKLSAgICAgICAgcmV0dXJuIGxvYWRlci5sb2FkX21vZHVsZShmdWxsbmFtZSkKLQotICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoZXh0X3V0aWwuTkFNRSk6Ci0gICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCi0gICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gWygnX19uYW1lX18nLCBleHRfdXRpbC5OQU1FKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX2ZpbGVfXycsIGV4dF91dGlsLkZJTEVQQVRIKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX3BhY2thZ2VfXycsICcnKV06Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4dF91dGlsLk5BTUUgaW4gc3lzLm1vZHVsZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtb2R1bGUuX19sb2FkZXJfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX0V4dGVuc2lvbkZpbGVMb2FkZXIpKQotCi0gICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKLSAgICAgICAgIyBFeHRlbnNpb25zIGFyZSBub3QgZm91bmQgaW4gcGFja2FnZXMuCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiB0ZXN0X2xhY2tpbmdfcGFyZW50KHNlbGYpOgotICAgICAgICAjIEV4dGVuc2lvbnMgYXJlIG5vdCBmb3VuZCBpbiBwYWNrYWdlcy4KLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHRlc3RfbW9kdWxlX3JldXNlKHNlbGYpOgotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShleHRfdXRpbC5OQU1FKToKLSAgICAgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCi0gICAgICAgICAgICBtb2R1bGUyID0gc2VsZi5sb2FkX21vZHVsZShleHRfdXRpbC5OQU1FKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZTEgaXMgbW9kdWxlMikKLQotICAgIGRlZiB0ZXN0X3N0YXRlX2FmdGVyX2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgICMgTm8gZWFzeSB3YXkgdG8gdHJpZ2dlciBhIGZhaWx1cmUgYWZ0ZXIgYSBzdWNjZXNzZnVsIGltcG9ydC4KLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHRlc3RfdW5sb2FkYWJsZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6Ci0gICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlKCdhc2RmamtsOycpCi0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QoTG9hZGVyVGVzdHMpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2Zyb3plbi9fX2luaXRfXy5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9mcm96ZW4vX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NDVlZWIuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2Zyb3plbi9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLWltcG9ydCBpbXBvcnRsaWIudGVzdAotaW1wb3J0IG9zLnBhdGgKLWltcG9ydCB1bml0dGVzdAotCi0KLWRlZiB0ZXN0X3N1aXRlKCk6Ci0gICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHJldHVybiBpbXBvcnRsaWIudGVzdC50ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5mcm96ZW4nLCBkaXJlY3RvcnkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KHRlc3Rfc3VpdGUoKSkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL19faW5pdF9fLnB5IGIvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkZjc2NjEuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1pbXBvcnQgaW1wb3J0bGliLnRlc3QKLWltcG9ydCBvcy5wYXRoCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1kZWYgdGVzdF9zdWl0ZSgpOgotICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuaW1wb3J0XycsIGRpcmVjdG9yeSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QodGVzdF9zdWl0ZSgpKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9hcGkucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X2FwaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTA3NWQ0Mi4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X2FwaS5weQorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLWZyb20gLiBpbXBvcnQgdXRpbAotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotY2xhc3MgQVBJVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0IEFQSS1zcGVjaWZpYyBkZXRhaWxzIGZvciBfX2ltcG9ydF9fIChlLmcuIHJhaXNpbmcgdGhlIHJpZ2h0Ci0gICAgZXhjZXB0aW9uIHdoZW4gcGFzc2luZyBpbiBhbiBpbnQgZm9yIHRoZSBtb2R1bGUgbmFtZSkuIiIiCi0KLSAgICBkZWYgdGVzdF9uYW1lX3JlcXVpcmVzX3JwYXJpdGlvbihzZWxmKToKLSAgICAgICAgIyBSYWlzZSBUeXBlRXJyb3IgaWYgYSBub24tc3RyaW5nIGlzIHBhc3NlZCBpbiBmb3IgdGhlIG1vZHVsZSBuYW1lLgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6Ci0gICAgICAgICAgICB1dGlsLmltcG9ydF8oNDIpCi0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QoQVBJVGVzdCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5IGIvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFhZGMzMi4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBpbXBvcnRsaWIKLQotCi1jbGFzcyBQYXJlbnRNb2R1bGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJJbXBvcnRpbmcgYSBzdWJtb2R1bGUgc2hvdWxkIGltcG9ydCB0aGUgcGFyZW50IG1vZHVsZXMuIiIiCi0KLSAgICBkZWYgdGVzdF9pbXBvcnRfcGFyZW50KHNlbGYpOgotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLm1vZHVsZScpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgotICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZy5tb2R1bGUnKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncGtnJyBpbiBzeXMubW9kdWxlcykKLQotICAgIGRlZiB0ZXN0X2JhZF9wYXJlbnQoc2VsZik6Ci0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5tb2R1bGUnKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKLSAgICAgICAgICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnLm1vZHVsZScpCi0KLSAgICBkZWYgdGVzdF9tb2R1bGVfbm90X3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgICMgVHJ5IHRvIGltcG9ydCBhIHN1Ym1vZHVsZSBmcm9tIGEgbm9uLXBhY2thZ2Ugc2hvdWxkIHJhaXNlIEltcG9ydEVycm9yLgotICAgICAgICBhc3NlcnQgbm90IGhhc2F0dHIoc3lzLCAnX19wYXRoX18nKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKLSAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3N5cy5ub19zdWJtb2R1bGVzX2hlcmUnKQotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KFBhcmVudE1vZHVsZVRlc3RzKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfcGF0aC5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfcGF0aC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZhYTIzMS4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X3BhdGgucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKLWZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAotaW1wb3J0IGltcAotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGVtcGZpbGUKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0eXBlcyBpbXBvcnQgTWV0aG9kVHlwZQotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotY2xhc3MgRmluZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgIiIiVGVzdHMgZm9yIFBhdGhGaW5kZXIuIiIiCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICAjIFRlc3QgTm9uZSByZXR1cm5lZCB1cG9uIG5vdCBmaW5kaW5nIGEgc3VpdGFibGUgZmluZGVyLgotICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKLSAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZSgpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkgaXMgTm9uZSkKLQotICAgIGRlZiB0ZXN0X3N5c19wYXRoKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBzeXMucGF0aCBpcyB1c2VkIHdoZW4gJ3BhdGgnIGlzIE5vbmUuCi0gICAgICAgICMgSW1wbGljaXRseSB0ZXN0cyB0aGF0IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlzIHVzZWQuCi0gICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JwotICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JwotICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKLSAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBpbXBvcnRlcn0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF0pOgotICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvYWRlciBpcyBpbXBvcnRlcikKLQotICAgIGRlZiB0ZXN0X3BhdGgoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0ICdwYXRoJyBpcyB1c2VkIHdoZW4gc2V0LgotICAgICAgICAjIEltcGxpY2l0bHkgdGVzdHMgdGhhdCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSBpcyB1c2VkLgotICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKLSAgICAgICAgcGF0aCA9ICc8dGVzdCBwYXRoPicKLSAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfbW9kdWxlcyhtb2R1bGUpCi0gICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogaW1wb3J0ZXJ9KToKLSAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwgW3BhdGhdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvYWRlciBpcyBpbXBvcnRlcikKLQotICAgIGRlZiB0ZXN0X3BhdGhfaG9va3Moc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoX2hvb2tzIGlzIHVzZWQuCi0gICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlzIHNldC4KLSAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCi0gICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCi0gICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQotICAgICAgICBob29rID0gaW1wb3J0X3V0aWwubW9ja19wYXRoX2hvb2socGF0aCwgaW1wb3J0ZXI9aW1wb3J0ZXIpCi0gICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9ob29rcz1baG9va10pOgotICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLCBbcGF0aF0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVyIGlzIGltcG9ydGVyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGggaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF0gaXMgaW1wb3J0ZXIpCi0KLSAgICBkZWYgdGVzdF9wYXRoX2ltcG9ydGVyX2NhY2hlX2hhc19Ob25lKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBpZiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSBoYXMgTm9uZSB0aGF0IE5vbmUgaXMgcmV0dXJuZWQuCi0gICAgICAgIGNsZWFyX2NhY2hlID0ge3BhdGg6IE5vbmUgZm9yIHBhdGggaW4gc3lzLnBhdGh9Ci0gICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT1jbGVhcl9jYWNoZSk6Ci0gICAgICAgICAgICBmb3IgbmFtZSBpbiAoJ2FzeW5jaGF0JywgJ3N5cycsICc8dGVzdCBtb2R1bGU+Jyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG5hbWUpIGlzIE5vbmUpCi0KLSAgICBkZWYgdGVzdF9wYXRoX2ltcG9ydGVyX2NhY2hlX2hhc19Ob25lX2NvbnRpbnVlcyhzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgaGF2aW5nIE5vbmUgaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgY2F1c2VzIHRoZSBzZWFyY2ggdG8KLSAgICAgICAgIyBjb250aW51ZS4KLSAgICAgICAgcGF0aCA9ICc8dGVzdCBwYXRoPicKLSAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCi0gICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQotICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9WycxJywgJzInXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2ltcG9ydGVyX2NhY2hlPXsnMSc6IE5vbmUsICcyJzogaW1wb3J0ZXJ9KToKLSAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIgaXMgaW1wb3J0ZXIpCi0KLQotCi1jbGFzcyBEZWZhdWx0UGF0aEZpbmRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgICIiIlRlc3QgaW1wb3J0bGliLl9ib290c3RyYXAuX0RlZmF1bHRQYXRoRmluZGVyLiIiIgotCi0gICAgZGVmIHRlc3RfaW1wbGljaXRfaG9va3Moc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IHRoZSBpbXBsaWNpdCBwYXRoIGhvb2tzIGFyZSB1c2VkLgotICAgICAgICBiYWRfcGF0aCA9ICc8cGF0aD4nCi0gICAgICAgIG1vZHVsZSA9ICc8bW9kdWxlPicKLSAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cyhiYWRfcGF0aCkKLSAgICAgICAgZXhpc3RpbmdfcGF0aCA9IHRlbXBmaWxlLm1rZHRlbXAoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKCk6Ci0gICAgICAgICAgICAgICAgbm90aGluZyA9IF9ib290c3RyYXAuX0RlZmF1bHRQYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bZXhpc3RpbmdfcGF0aF0pCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdGhpbmcgaXMgTm9uZSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhpc3RpbmdfcGF0aCBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSkKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBpc2luc3RhbmNlKHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW2V4aXN0aW5nX3BhdGhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wLk51bGxJbXBvcnRlcikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlc3VsdCkKLSAgICAgICAgICAgICAgICBub3RoaW5nID0gX2Jvb3RzdHJhcC5fRGVmYXVsdFBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bYmFkX3BhdGhdKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3RoaW5nIGlzIE5vbmUpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJhZF9wYXRoIGluIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW2JhZF9wYXRoXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXAuTnVsbEltcG9ydGVyKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLnJtZGlyKGV4aXN0aW5nX3BhdGgpCi0KLQotICAgIGRlZiB0ZXN0X3BhdGhfaW1wb3J0ZXJfY2FjaGVfaGFzX05vbmUoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IHRoZSBkZWZhdWx0IGhvb2sgaXMgdXNlZCB3aGVuIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlCi0gICAgICAgICMgY29udGFpbnMgTm9uZSBmb3IgYSBwYXRoLgotICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKLSAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfbW9kdWxlcyhtb2R1bGUpCi0gICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCi0gICAgICAgICMgWFhYIE5vdCBibGFja2JveC4KLSAgICAgICAgb3JpZ2luYWxfaG9vayA9IF9ib290c3RyYXAuX0RFRkFVTFRfUEFUSF9IT09LCi0gICAgICAgIG1vY2tfaG9vayA9IGltcG9ydF91dGlsLm1vY2tfcGF0aF9ob29rKHBhdGgsIGltcG9ydGVyPWltcG9ydGVyKQotICAgICAgICBfYm9vdHN0cmFwLl9ERUZBVUxUX1BBVEhfSE9PSyA9IG1vY2tfaG9vawotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IE5vbmV9KToKLSAgICAgICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9EZWZhdWx0UGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9W3BhdGhdKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIgaXMgaW1wb3J0ZXIpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBfYm9vdHN0cmFwLl9ERUZBVUxUX1BBVEhfSE9PSyA9IG9yaWdpbmFsX2hvb2sKLQotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAotICAgIHJ1bl91bml0dGVzdChGaW5kZXJUZXN0cywgRGVmYXVsdFBhdGhGaW5kZXJUZXN0cykKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3JlZ3J0ZXN0LnB5IGIvTGliL2ltcG9ydGxpYi90ZXN0L3JlZ3J0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTAzYWU3Li4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9yZWdydGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSIiIlJ1biBQeXRob24ncyBzdGFuZGFyZCB0ZXN0IHN1aXRlIHVzaW5nIGltcG9ydGxpYi5fX2ltcG9ydF9fLgotCi1UZXN0cyBrbm93biB0byBmYWlsIGJlY2F1c2Ugb2YgYXNzdW1wdGlvbnMgdGhhdCBpbXBvcnRsaWIgKHByb3Blcmx5KQotaW52YWxpZGF0ZXMgYXJlIGF1dG9tYXRpY2FsbHkgc2tpcHBlZCBpZiB0aGUgZW50aXJlIHRlc3Qgc3VpdGUgaXMgcnVuLgotT3RoZXJ3aXNlIGFsbCBjb21tYW5kLWxpbmUgb3B0aW9ucyB2YWxpZCBmb3IgdGVzdC5yZWdydGVzdCBhcmUgYWxzbyB2YWxpZCBmb3IKLXRoaXMgc2NyaXB0LgotCi1YWFggRkFJTElORwotICAqIHRlc3RfaW1wb3J0Ci0gICAgLSB0ZXN0X2luY29ycmVjdF9jb2RlX25hbWUKLSAgICAgICAgZmlsZSBuYW1lIGRpZmZlcmluZyBiZXR3ZWVuIF9fZmlsZV9fIGFuZCBjb19maWxlbmFtZSAocjY4MzYwIG9uIHRydW5rKQotICAgIC0gdGVzdF9pbXBvcnRfYnlfZmlsZW5hbWUKLSAgICAgICAgZXhjZXB0aW9uIGZvciB0cnlpbmcgdG8gaW1wb3J0IGJ5IGZpbGUgbmFtZSBkb2VzIG5vdCBtYXRjaAotCi0iIiIKLWltcG9ydCBpbXBvcnRsaWIKLWltcG9ydCBzeXMKLWZyb20gdGVzdCBpbXBvcnQgcmVncnRlc3QKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBfX2J1aWx0aW5zX18uX19pbXBvcnRfXyA9IGltcG9ydGxpYi5fX2ltcG9ydF9fCi0KLSAgICBleGNsdWRlID0gWyctLWV4Y2x1ZGUnLAotICAgICAgICAgICAgICAgICd0ZXN0X2Zyb3plbicsICMgRG9lcyBub3QgZXhwZWN0IF9fbG9hZGVyX18gYXR0cmlidXRlCi0gICAgICAgICAgICAgICAgJ3Rlc3RfcGtnJywgICMgRG9lcyBub3QgZXhwZWN0IF9fbG9hZGVyX18gYXR0cmlidXRlCi0gICAgICAgICAgICAgICAgJ3Rlc3RfcHlkb2MnLCAjIERvZXMgbm90IGV4cGVjdCBfX2xvYWRlcl9fIGF0dHJpYnV0ZQotICAgICAgICAgICAgICBdCi0KLSAgICAjIFN3aXRjaGluZyBvbiAtLWV4Y2x1ZGUgaW1wbGllcyBydW5uaW5nIGFsbCB0ZXN0IGJ1dCB0aGUgb25lcyBsaXN0ZWQsIHNvCi0gICAgIyBvbmx5IHVzZSBpdCB3aGVuIG9uZSBpcyBub3QgcnVubmluZyBhbiBleHBsaWNpdCB0ZXN0Ci0gICAgaWYgbGVuKHN5cy5hcmd2KSA9PSAxOgotICAgICAgICAjIE5vIHByb2dyYW1tYXRpYyB3YXkgdG8gc3BlY2lmeSB0ZXN0cyB0byBleGNsdWRlCi0gICAgICAgIHN5cy5hcmd2LmV4dGVuZChleGNsdWRlKQotCi0gICAgcmVncnRlc3QubWFpbihxdWlldD1UcnVlLCB2ZXJib3NlMj1UcnVlKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NGY3YjYuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKLWltcG9ydCB1bml0dGVzdAotCi0KLWNsYXNzIFBhdGhIb29rVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0IHRoZSBwYXRoIGhvb2sgZm9yIHNvdXJjZS4iIiIKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ2R1bW15JykgYXMgbWFwcGluZzoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKF9ib290c3RyYXAuX2ZpbGVfcGF0aF9ob29rKG1hcHBpbmdbJy5yb290J10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbmRfbW9kdWxlJykpCi0KLSAgICBkZWYgdGVzdF9lbXB0eV9zdHJpbmcoc2VsZik6Ci0gICAgICAgICMgVGhlIGVtcHR5IHN0cmluZyByZXByZXNlbnRzIHRoZSBjd2QuCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKF9ib290c3RyYXAuX2ZpbGVfcGF0aF9ob29rKCcnKSwgJ2ZpbmRfbW9kdWxlJykpCi0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QoUGF0aEhvb2tUZXN0KQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC90ZXN0X2FwaS5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC90ZXN0X2FwaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE1MTYyNi4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvdGVzdF9hcGkucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi1mcm9tIC4gaW1wb3J0IHV0aWwKLWltcG9ydCBpbXAKLWltcG9ydCBpbXBvcnRsaWIKLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotCi0KLWNsYXNzIEltcG9ydE1vZHVsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgICIiIlRlc3QgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUuIiIiCi0KLSAgICBkZWYgdGVzdF9tb2R1bGVfaW1wb3J0KHNlbGYpOgotICAgICAgICAjIFRlc3QgaW1wb3J0aW5nIGEgdG9wLWxldmVsIG1vZHVsZS4KLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygndG9wX2xldmVsJykgYXMgbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ3RvcF9sZXZlbCcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICd0b3BfbGV2ZWwnKQotCi0gICAgZGVmIHRlc3RfYWJzb2x1dGVfcGFja2FnZV9pbXBvcnQoc2VsZik6Ci0gICAgICAgICMgVGVzdCBpbXBvcnRpbmcgYSBtb2R1bGUgZnJvbSBhIHBhY2thZ2Ugd2l0aCBhbiBhYnNvbHV0ZSBuYW1lLgotICAgICAgICBwa2dfbmFtZSA9ICdwa2cnCi0gICAgICAgIHBrZ19sb25nX25hbWUgPSAnezB9Ll9faW5pdF9fJy5mb3JtYXQocGtnX25hbWUpCi0gICAgICAgIG5hbWUgPSAnezB9Lm1vZCcuZm9ybWF0KHBrZ19uYW1lKQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKHBrZ19sb25nX25hbWUsIG5hbWUpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgotICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG5hbWUpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCi0KLSAgICBkZWYgdGVzdF9zaGFsbG93X3JlbGF0aXZlX3BhY2thZ2VfaW1wb3J0KHNlbGYpOgotICAgICAgICAjIFRlc3QgaW1wb3J0aW5nIGEgbW9kdWxlIGZyb20gYSBwYWNrYWdlIHRocm91Z2ggYSByZWxhdGl2ZSBpbXBvcnQuCi0gICAgICAgIHBrZ19uYW1lID0gJ3BrZycKLSAgICAgICAgcGtnX2xvbmdfbmFtZSA9ICd7MH0uX19pbml0X18nLmZvcm1hdChwa2dfbmFtZSkKLSAgICAgICAgbW9kdWxlX25hbWUgPSAnbW9kJwotICAgICAgICBhYnNvbHV0ZV9uYW1lID0gJ3swfS57MX0nLmZvcm1hdChwa2dfbmFtZSwgbW9kdWxlX25hbWUpCi0gICAgICAgIHJlbGF0aXZlX25hbWUgPSAnLnswfScuZm9ybWF0KG1vZHVsZV9uYW1lKQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKHBrZ19sb25nX25hbWUsIGFic29sdXRlX25hbWUpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgotICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHBrZ19uYW1lKQotICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHJlbGF0aXZlX25hbWUsIHBrZ19uYW1lKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBhYnNvbHV0ZV9uYW1lKQotCi0gICAgZGVmIHRlc3RfZGVlcF9yZWxhdGl2ZV9wYWNrYWdlX2ltcG9ydChzZWxmKToKLSAgICAgICAgbW9kdWxlcyA9IFsnYS5fX2luaXRfXycsICdhLmIuX19pbml0X18nLCAnYS5jJ10KLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygqbW9kdWxlcykgYXMgbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6Ci0gICAgICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2EnKQotICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdhLmInKQotICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCcuLmMnLCAnYS5iJykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ2EuYycpCi0KLSAgICBkZWYgdGVzdF9hYnNvbHV0ZV9pbXBvcnRfd2l0aF9wYWNrYWdlKHNlbGYpOgotICAgICAgICAjIFRlc3QgaW1wb3J0aW5nIGEgbW9kdWxlIGZyb20gYSBwYWNrYWdlIHdpdGggYW4gYWJzb2x1dGUgbmFtZSB3aXRoCi0gICAgICAgICMgdGhlICdwYWNrYWdlJyBhcmd1bWVudCBnaXZlbi4KLSAgICAgICAgcGtnX25hbWUgPSAncGtnJwotICAgICAgICBwa2dfbG9uZ19uYW1lID0gJ3swfS5fX2luaXRfXycuZm9ybWF0KHBrZ19uYW1lKQotICAgICAgICBuYW1lID0gJ3swfS5tb2QnLmZvcm1hdChwa2dfbmFtZSkKLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBuYW1lKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKLSAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShwa2dfbmFtZSkKLSAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lLCBwa2dfbmFtZSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbmFtZSkKLQotICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydF93b19wYWNrYWdlKHNlbGYpOgotICAgICAgICAjIFJlbGF0aXZlIGltcG9ydHMgY2Fubm90IGhhcHBlbiB3aXRob3V0IHRoZSAncGFja2FnZScgYXJndW1lbnQgYmVpbmcKLSAgICAgICAgIyBzZXQuCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKLSAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCcuc3VwcG9ydCcpCi0KLQotICAgIGRlZiB0ZXN0X2xvYWRlZF9vbmNlKHNlbGYpOgotICAgICAgICAjIElzc3VlICMxMzU5MTogTW9kdWxlcyBzaG91bGQgb25seSBiZSBsb2FkZWQgb25jZSB3aGVuCi0gICAgICAgICMgaW5pdGlhbGl6aW5nIHRoZSBwYXJlbnQgcGFja2FnZSBhdHRlbXB0cyB0byBpbXBvcnQgdGhlCi0gICAgICAgICMgbW9kdWxlIGN1cnJlbnRseSBiZWluZyBpbXBvcnRlZC4KLSAgICAgICAgYl9sb2FkX2NvdW50ID0gMAotICAgICAgICBkZWYgbG9hZF9hKCk6Ci0gICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnYS5iJykKLSAgICAgICAgZGVmIGxvYWRfYigpOgotICAgICAgICAgICAgbm9ubG9jYWwgYl9sb2FkX2NvdW50Ci0gICAgICAgICAgICBiX2xvYWRfY291bnQgKz0gMQotICAgICAgICBjb2RlID0geydhJzogbG9hZF9hLCAnYS5iJzogbG9hZF9ifQotICAgICAgICBtb2R1bGVzID0gWydhLl9faW5pdF9fJywgJ2EuYiddCi0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoKm1vZHVsZXMsIG1vZHVsZV9jb2RlPWNvZGUpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgotICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdhLmInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJfbG9hZF9jb3VudCwgMSkKLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QoSW1wb3J0TW9kdWxlVGVzdHMpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3Rlc3RfdXRpbC5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC90ZXN0X3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMjQ0N2YuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3Rlc3RfdXRpbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAotaW1wb3J0IGltcAotaW1wb3J0IHN5cwotaW1wb3J0IHR5cGVzCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1jbGFzcyBNb2R1bGVGb3JMb2FkZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0cyBmb3IgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zvcl9sb2FkZXIuIiIiCi0KLSAgICBkZWYgcmV0dXJuX21vZHVsZShzZWxmLCBuYW1lKToKLSAgICAgICAgZnhuID0gdXRpbC5tb2R1bGVfZm9yX2xvYWRlcihsYW1iZGEgc2VsZiwgbW9kdWxlOiBtb2R1bGUpCi0gICAgICAgIHJldHVybiBmeG4oc2VsZiwgbmFtZSkKLQotICAgIGRlZiByYWlzZV9leGNlcHRpb24oc2VsZiwgbmFtZSk6Ci0gICAgICAgIGRlZiB0b193cmFwKHNlbGYsIG1vZHVsZSk6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgotICAgICAgICBmeG4gPSB1dGlsLm1vZHVsZV9mb3JfbG9hZGVyKHRvX3dyYXApCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZ4bihzZWxmLCBuYW1lKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICBkZWYgdGVzdF9uZXdfbW9kdWxlKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCB3aGVuIG5vIG1vZHVsZSBleGlzdHMgaW4gc3lzLm1vZHVsZXMgYSBuZXcgbW9kdWxlIGlzCi0gICAgICAgICMgY3JlYXRlZC4KLSAgICAgICAgbW9kdWxlX25hbWUgPSAnYS5iLmMnCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobW9kdWxlX25hbWUpOgotICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5yZXR1cm5fbW9kdWxlKG1vZHVsZV9uYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZV9uYW1lIGluIHN5cy5tb2R1bGVzKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbW9kdWxlX25hbWUpCi0KLSAgICBkZWYgdGVzdF9yZWxvYWQoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IGEgbW9kdWxlIGlzIHJldXNlZCBpZiBhbHJlYWR5IGluIHN5cy5tb2R1bGVzLgotICAgICAgICBuYW1lID0gJ2EuYi5jJwotICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgnYS5iLmMnKQotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgotICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKLSAgICAgICAgICAgIHJldHVybmVkX21vZHVsZSA9IHNlbGYucmV0dXJuX21vZHVsZShuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR1cm5lZF9tb2R1bGUsIHN5cy5tb2R1bGVzW25hbWVdKQotCi0gICAgZGVmIHRlc3RfbmV3X21vZHVsZV9mYWlsdXJlKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBhIG1vZHVsZSBpcyByZW1vdmVkIGZyb20gc3lzLm1vZHVsZXMgaWYgYWRkZWQgYnV0IGFuCi0gICAgICAgICMgZXhjZXB0aW9uIGlzIHJhaXNlZC4KLSAgICAgICAgbmFtZSA9ICdhLmIuYycKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgICAgIHNlbGYucmFpc2VfZXhjZXB0aW9uKG5hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobmFtZSBub3QgaW4gc3lzLm1vZHVsZXMpCi0KLSAgICBkZWYgdGVzdF9yZWxvYWRfZmFpbHVyZShzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgYSBmYWlsdXJlIG9uIHJlbG9hZCBsZWF2ZXMgdGhlIG1vZHVsZSBpbi1wbGFjZS4KLSAgICAgICAgbmFtZSA9ICdhLmIuYycKLSAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUobmFtZSkKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCi0gICAgICAgICAgICBzZWxmLnJhaXNlX2V4Y2VwdGlvbihuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUsIHN5cy5tb2R1bGVzW25hbWVdKQotCi0KLWNsYXNzIFNldFBhY2thZ2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLQotICAgICIiIlRlc3RzIGZvciBpbXBvcnRsaWIudXRpbC5zZXRfcGFja2FnZS4iIiIKLQotICAgIGRlZiB2ZXJpZnkoc2VsZiwgbW9kdWxlLCBleHBlY3QpOgotICAgICAgICAiIiJWZXJpZnkgdGhlIG1vZHVsZSBoYXMgdGhlIGV4cGVjdGVkIHZhbHVlIGZvciBfX3BhY2thZ2VfXyBhZnRlcgotICAgICAgICBwYXNzaW5nIHRocm91Z2ggc2V0X3BhY2thZ2UuIiIiCi0gICAgICAgIGZ4biA9IGxhbWJkYTogbW9kdWxlCi0gICAgICAgIHdyYXBwZWQgPSB1dGlsLnNldF9wYWNrYWdlKGZ4bikKLSAgICAgICAgd3JhcHBlZCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0LCBtb2R1bGUuX19wYWNrYWdlX18pCi0KLSAgICBkZWYgdGVzdF90b3BfbGV2ZWwoc2VsZik6Ci0gICAgICAgICMgX19wYWNrYWdlX18gc2hvdWxkIGJlIHNldCB0byB0aGUgZW1wdHkgc3RyaW5nIGlmIGEgdG9wLWxldmVsIG1vZHVsZS4KLSAgICAgICAgIyBJbXBsaWNpdGx5IHRlc3RzIHdoZW4gcGFja2FnZSBpcyBzZXQgdG8gTm9uZS4KLSAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ21vZHVsZScpCi0gICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IE5vbmUKLSAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCAnJykKLQotICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgICMgVGVzdCBzZXR0aW5nIF9fcGFja2FnZV9fIGZvciBhIHBhY2thZ2UuCi0gICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdwa2cnKQotICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbJzxwYXRoPiddCi0gICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IE5vbmUKLSAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCAncGtnJykKLQotICAgIGRlZiB0ZXN0X3N1Ym1vZHVsZShzZWxmKToKLSAgICAgICAgIyBUZXN0IF9fcGFja2FnZV9fIGZvciBhIG1vZHVsZSBpbiBhIHBhY2thZ2UuCi0gICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdwa2cubW9kJykKLSAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gTm9uZQotICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUsICdwa2cnKQotCi0gICAgZGVmIHRlc3Rfc2V0dGluZ19pZl9taXNzaW5nKHNlbGYpOgotICAgICAgICAjIF9fcGFja2FnZV9fIHNob3VsZCBiZSBzZXQgaWYgaXQgaXMgbWlzc2luZy4KLSAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ21vZCcpCi0gICAgICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKToKLSAgICAgICAgICAgIGRlbGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKQotICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUsICcnKQotCi0gICAgZGVmIHRlc3RfbGVhdmluZ19hbG9uZShzZWxmKToKLSAgICAgICAgIyBJZiBfX3BhY2thZ2VfXyBpcyBzZXQgYW5kIG5vdCBOb25lIHRoZW4gbGVhdmUgaXQgYWxvbmUuCi0gICAgICAgIGZvciB2YWx1ZSBpbiAoVHJ1ZSwgRmFsc2UpOgotICAgICAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ21vZCcpCi0gICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSB2YWx1ZQotICAgICAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCB2YWx1ZSkKLQotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTW9kdWxlRm9yTG9hZGVyVGVzdHMsIFNldFBhY2thZ2VUZXN0cykKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3V0aWwucHkgYi9MaWIvaW1wb3J0bGliL3V0aWwucHkKaW5kZXggN2I0NGZhMS4uMTMxNjQzNyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi91dGlsLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvdXRpbC5weQpAQCAtMywzICszLDE5IEBACiBmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBtb2R1bGVfZm9yX2xvYWRlcgogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgc2V0X2xvYWRlcgogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgc2V0X3BhY2thZ2UKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IF9yZXNvbHZlX25hbWUKKworCitkZWYgcmVzb2x2ZV9uYW1lKG5hbWUsIHBhY2thZ2UpOgorICAgICIiIlJlc29sdmUgYSByZWxhdGl2ZSBtb2R1bGUgbmFtZSB0byBhbiBhYnNvbHV0ZSBvbmUuIiIiCisgICAgaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnLicpOgorICAgICAgICByZXR1cm4gbmFtZQorICAgIGVsaWYgbm90IHBhY2thZ2U6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3shcn0gaXMgbm90IGEgcmVsYXRpdmUgbmFtZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyhubyBsZWFkaW5nIGRvdCknLmZvcm1hdChuYW1lKSkKKyAgICBsZXZlbCA9IDAKKyAgICBmb3IgY2hhcmFjdGVyIGluIG5hbWU6CisgICAgICAgIGlmIGNoYXJhY3RlciAhPSAnLic6CisgICAgICAgICAgICBicmVhaworICAgICAgICBsZXZlbCArPSAxCisgICAgcmV0dXJuIF9yZXNvbHZlX25hbWUobmFtZVtsZXZlbDpdLCBwYWNrYWdlLCBsZXZlbCkKZGlmZiAtLWdpdCBhL0xpYi9pbnNwZWN0LnB5IGIvTGliL2luc3BlY3QucHkKaW5kZXggMjAzMTc1NS4uN2E3YmI5MSAxMDA2NDQKLS0tIGEvTGliL2luc3BlY3QucHkKKysrIGIvTGliL2luc3BlY3QucHkKQEAgLTIyLDI0ICsyMiwyOSBAQAogICAgIGdldG91dGVyZnJhbWVzKCksIGdldGlubmVyZnJhbWVzKCkgLSBnZXQgaW5mbyBhYm91dCBmcmFtZXMKICAgICBjdXJyZW50ZnJhbWUoKSAtIGdldCB0aGUgY3VycmVudCBzdGFjayBmcmFtZQogICAgIHN0YWNrKCksIHRyYWNlKCkgLSBnZXQgaW5mbyBhYm91dCBmcmFtZXMgb24gdGhlIHN0YWNrIG9yIGluIGEgdHJhY2ViYWNrCisKKyAgICBzaWduYXR1cmUoKSAtIGdldCBhIFNpZ25hdHVyZSBvYmplY3QgZm9yIHRoZSBjYWxsYWJsZQogIiIiCiAKICMgVGhpcyBtb2R1bGUgaXMgaW4gdGhlIHB1YmxpYyBkb21haW4uICBObyB3YXJyYW50aWVzLgogCi1fX2F1dGhvcl9fID0gJ0thLVBpbmcgWWVlIDxwaW5nQGxmdy5vcmc+JwotX19kYXRlX18gPSAnMSBKYW4gMjAwMScKK19fYXV0aG9yX18gPSAoJ0thLVBpbmcgWWVlIDxwaW5nQGxmdy5vcmc+JywKKyAgICAgICAgICAgICAgJ1l1cnkgU2VsaXZhbm92IDx5c2VsaXZhbm92QHNwcnltaXguY29tPicpCiAKLWltcG9ydCBzeXMKLWltcG9ydCBvcwotaW1wb3J0IHR5cGVzCi1pbXBvcnQgaXRlcnRvb2xzCi1pbXBvcnQgc3RyaW5nCi1pbXBvcnQgcmUKIGltcG9ydCBpbXAKLWltcG9ydCB0b2tlbml6ZQoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKK2ltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBsaW5lY2FjaGUKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgdG9rZW5pemUKK2ltcG9ydCB0eXBlcworaW1wb3J0IHdhcm5pbmdzCitpbXBvcnQgZnVuY3Rvb2xzCitpbXBvcnQgYnVpbHRpbnMKIGZyb20gb3BlcmF0b3IgaW1wb3J0IGF0dHJnZXR0ZXIKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUsIE9yZGVyZWREaWN0CiAKICMgQ3JlYXRlIGNvbnN0YW50cyBmb3IgdGhlIGNvbXBpbGVyIGZsYWdzIGluIEluY2x1ZGUvY29kZS5oCiAjIFdlIHRyeSB0byBnZXQgdGhlbSBmcm9tIGRpcyB0byBhdm9pZCBkdXBsaWNhdGlvbiwgYnV0IGZhbGwKQEAgLTQzMyw2ICs0MzgsOCBAQAogCiBkZWYgZ2V0bW9kdWxlaW5mbyhwYXRoKToKICAgICAiIiJHZXQgdGhlIG1vZHVsZSBuYW1lLCBzdWZmaXgsIG1vZGUsIGFuZCBtb2R1bGUgdHlwZSBmb3IgYSBnaXZlbiBmaWxlLiIiIgorICAgIHdhcm5pbmdzLndhcm4oJ2luc3BlY3QuZ2V0bW9kdWxlaW5mbygpIGlzIGRlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAyKQogICAgIGZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQogICAgIHN1ZmZpeGVzID0gWygtbGVuKHN1ZmZpeCksIHN1ZmZpeCwgbW9kZSwgbXR5cGUpCiAgICAgICAgICAgICAgICAgICAgIGZvciBzdWZmaXgsIG1vZGUsIG10eXBlIGluIGltcC5nZXRfc3VmZml4ZXMoKV0KQEAgLTQ0MywyMCArNDUwLDI5IEBACiAKIGRlZiBnZXRtb2R1bGVuYW1lKHBhdGgpOgogICAgICIiIlJldHVybiB0aGUgbW9kdWxlIG5hbWUgZm9yIGEgZ2l2ZW4gZmlsZSwgb3IgTm9uZS4iIiIKLSAgICBpbmZvID0gZ2V0bW9kdWxlaW5mbyhwYXRoKQotICAgIGlmIGluZm86IHJldHVybiBpbmZvWzBdCisgICAgZm5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpCisgICAgIyBDaGVjayBmb3IgcGF0aHMgdGhhdCBsb29rIGxpa2UgYW4gYWN0dWFsIG1vZHVsZSBmaWxlCisgICAgc3VmZml4ZXMgPSBbKC1sZW4oc3VmZml4KSwgc3VmZml4KQorICAgICAgICAgICAgICAgICAgICBmb3Igc3VmZml4IGluIGltcG9ydGxpYi5tYWNoaW5lcnkuYWxsX3N1ZmZpeGVzKCldCisgICAgc3VmZml4ZXMuc29ydCgpICMgdHJ5IGxvbmdlc3Qgc3VmZml4ZXMgZmlyc3QsIGluIGNhc2UgdGhleSBvdmVybGFwCisgICAgZm9yIG5lZ2xlbiwgc3VmZml4IGluIHN1ZmZpeGVzOgorICAgICAgICBpZiBmbmFtZS5lbmRzd2l0aChzdWZmaXgpOgorICAgICAgICAgICAgcmV0dXJuIGZuYW1lWzpuZWdsZW5dCisgICAgcmV0dXJuIE5vbmUKIAogZGVmIGdldHNvdXJjZWZpbGUob2JqZWN0KToKICAgICAiIiJSZXR1cm4gdGhlIGZpbGVuYW1lIHRoYXQgY2FuIGJlIHVzZWQgdG8gbG9jYXRlIGFuIG9iamVjdCdzIHNvdXJjZS4KICAgICBSZXR1cm4gTm9uZSBpZiBubyB3YXkgY2FuIGJlIGlkZW50aWZpZWQgdG8gZ2V0IHRoZSBzb3VyY2UuCiAgICAgIiIiCiAgICAgZmlsZW5hbWUgPSBnZXRmaWxlKG9iamVjdCkKLSAgICBpZiBmaWxlbmFtZVstNDpdLmxvd2VyKCkgaW4gKCcucHljJywgJy5weW8nKToKLSAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZVs6LTRdICsgJy5weScKLSAgICBmb3Igc3VmZml4LCBtb2RlLCBraW5kIGluIGltcC5nZXRfc3VmZml4ZXMoKToKLSAgICAgICAgaWYgJ2InIGluIG1vZGUgYW5kIGZpbGVuYW1lWy1sZW4oc3VmZml4KTpdLmxvd2VyKCkgPT0gc3VmZml4OgotICAgICAgICAgICAgIyBMb29rcyBsaWtlIGEgYmluYXJ5IGZpbGUuICBXZSB3YW50IHRvIG9ubHkgcmV0dXJuIGEgdGV4dCBmaWxlLgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBhbGxfYnl0ZWNvZGVfc3VmZml4ZXMgPSBpbXBvcnRsaWIubWFjaGluZXJ5LkRFQlVHX0JZVEVDT0RFX1NVRkZJWEVTWzpdCisgICAgYWxsX2J5dGVjb2RlX3N1ZmZpeGVzICs9IGltcG9ydGxpYi5tYWNoaW5lcnkuT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTWzpdCisgICAgaWYgYW55KGZpbGVuYW1lLmVuZHN3aXRoKHMpIGZvciBzIGluIGFsbF9ieXRlY29kZV9zdWZmaXhlcyk6CisgICAgICAgIGZpbGVuYW1lID0gKG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzBdICsKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVNbMF0pCisgICAgZWxpZiBhbnkoZmlsZW5hbWUuZW5kc3dpdGgocykgZm9yIHMgaW4KKyAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVMpOgorICAgICAgICByZXR1cm4gTm9uZQogICAgIGlmIG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAgICAgIyBvbmx5IHJldHVybiBhIG5vbi1leGlzdGVudCBmaWxlbmFtZSBpZiB0aGUgbW9kdWxlIGhhcyBhIFBFUCAzMDIgbG9hZGVyCkBAIC05MzEsNiArOTQ3LDQzIEBACiAgICAgICAgIHNwZWNzLmFwcGVuZChmb3JtYXR2YXJrdyh2YXJrdykgKyBmb3JtYXR2YWx1ZShsb2NhbHNbdmFya3ddKSkKICAgICByZXR1cm4gJygnICsgJywgJy5qb2luKHNwZWNzKSArICcpJwogCitkZWYgX21pc3NpbmdfYXJndW1lbnRzKGZfbmFtZSwgYXJnbmFtZXMsIHBvcywgdmFsdWVzKToKKyAgICBuYW1lcyA9IFtyZXByKG5hbWUpIGZvciBuYW1lIGluIGFyZ25hbWVzIGlmIG5hbWUgbm90IGluIHZhbHVlc10KKyAgICBtaXNzaW5nID0gbGVuKG5hbWVzKQorICAgIGlmIG1pc3NpbmcgPT0gMToKKyAgICAgICAgcyA9IG5hbWVzWzBdCisgICAgZWxpZiBtaXNzaW5nID09IDI6CisgICAgICAgIHMgPSAie30gYW5kIHt9Ii5mb3JtYXQoKm5hbWVzKQorICAgIGVsc2U6CisgICAgICAgIHRhaWwgPSAiLCB7fSBhbmQge30iLmZvcm1hdChuYW1lc1stMjpdKQorICAgICAgICBkZWwgbmFtZXNbLTI6XQorICAgICAgICBzID0gIiwgIi5qb2luKG5hbWVzKSArIHRhaWwKKyAgICByYWlzZSBUeXBlRXJyb3IoIiVzKCkgbWlzc2luZyAlaSByZXF1aXJlZCAlcyBhcmd1bWVudCVzOiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAoZl9uYW1lLCBtaXNzaW5nLAorICAgICAgICAgICAgICAgICAgICAgICJwb3NpdGlvbmFsIiBpZiBwb3MgZWxzZSAia2V5d29yZC1vbmx5IiwKKyAgICAgICAgICAgICAgICAgICAgICAiIiBpZiBtaXNzaW5nID09IDEgZWxzZSAicyIsIHMpKQorCitkZWYgX3Rvb19tYW55KGZfbmFtZSwgYXJncywga3dvbmx5LCB2YXJhcmdzLCBkZWZjb3VudCwgZ2l2ZW4sIHZhbHVlcyk6CisgICAgYXRsZWFzdCA9IGxlbihhcmdzKSAtIGRlZmNvdW50CisgICAga3dvbmx5X2dpdmVuID0gbGVuKFthcmcgZm9yIGFyZyBpbiBrd29ubHkgaWYgYXJnIGluIHZhbHVlc10pCisgICAgaWYgdmFyYXJnczoKKyAgICAgICAgcGx1cmFsID0gYXRsZWFzdCAhPSAxCisgICAgICAgIHNpZyA9ICJhdCBsZWFzdCAlZCIgJSAoYXRsZWFzdCwpCisgICAgZWxpZiBkZWZjb3VudDoKKyAgICAgICAgcGx1cmFsID0gVHJ1ZQorICAgICAgICBzaWcgPSAiZnJvbSAlZCB0byAlZCIgJSAoYXRsZWFzdCwgbGVuKGFyZ3MpKQorICAgIGVsc2U6CisgICAgICAgIHBsdXJhbCA9IGxlbihhcmdzKSAhPSAxCisgICAgICAgIHNpZyA9IHN0cihsZW4oYXJncykpCisgICAga3dvbmx5X3NpZyA9ICIiCisgICAgaWYga3dvbmx5X2dpdmVuOgorICAgICAgICBtc2cgPSAiIHBvc2l0aW9uYWwgYXJndW1lbnQlcyAoYW5kICVkIGtleXdvcmQtb25seSBhcmd1bWVudCVzKSIKKyAgICAgICAga3dvbmx5X3NpZyA9IChtc2cgJSAoInMiIGlmIGdpdmVuICE9IDEgZWxzZSAiIiwga3dvbmx5X2dpdmVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgaWYga3dvbmx5X2dpdmVuICE9IDEgZWxzZSAiIikpCisgICAgcmFpc2UgVHlwZUVycm9yKCIlcygpIHRha2VzICVzIHBvc2l0aW9uYWwgYXJndW1lbnQlcyBidXQgJWQlcyAlcyBnaXZlbiIgJQorICAgICAgICAgICAgKGZfbmFtZSwgc2lnLCAicyIgaWYgcGx1cmFsIGVsc2UgIiIsIGdpdmVuLCBrd29ubHlfc2lnLAorICAgICAgICAgICAgICJ3YXMiIGlmIGdpdmVuID09IDEgYW5kIG5vdCBrd29ubHlfZ2l2ZW4gZWxzZSAid2VyZSIpKQorCiBkZWYgZ2V0Y2FsbGFyZ3MoZnVuYywgKnBvc2l0aW9uYWwsICoqbmFtZWQpOgogICAgICIiIkdldCB0aGUgbWFwcGluZyBvZiBhcmd1bWVudHMgdG8gdmFsdWVzLgogCkBAIC05NDIsNjYgKzk5NSwxMDggQEAKICAgICBmX25hbWUgPSBmdW5jLl9fbmFtZV9fCiAgICAgYXJnMnZhbHVlID0ge30KIAorCiAgICAgaWYgaXNtZXRob2QoZnVuYykgYW5kIGZ1bmMuX19zZWxmX18gaXMgbm90IE5vbmU6CiAgICAgICAgICMgaW1wbGljaXQgJ3NlbGYnIChvciAnY2xzJyBmb3IgY2xhc3NtZXRob2RzKSBhcmd1bWVudAogICAgICAgICBwb3NpdGlvbmFsID0gKGZ1bmMuX19zZWxmX18sKSArIHBvc2l0aW9uYWwKICAgICBudW1fcG9zID0gbGVuKHBvc2l0aW9uYWwpCi0gICAgbnVtX3RvdGFsID0gbnVtX3BvcyArIGxlbihuYW1lZCkKICAgICBudW1fYXJncyA9IGxlbihhcmdzKQogICAgIG51bV9kZWZhdWx0cyA9IGxlbihkZWZhdWx0cykgaWYgZGVmYXVsdHMgZWxzZSAwCi0gICAgZm9yIGFyZywgdmFsdWUgaW4gemlwKGFyZ3MsIHBvc2l0aW9uYWwpOgotICAgICAgICBhcmcydmFsdWVbYXJnXSA9IHZhbHVlCi0gICAgaWYgdmFyYXJnczoKLSAgICAgICAgaWYgbnVtX3BvcyA+IG51bV9hcmdzOgotICAgICAgICAgICAgYXJnMnZhbHVlW3ZhcmFyZ3NdID0gcG9zaXRpb25hbFstKG51bV9wb3MtbnVtX2FyZ3MpOl0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFyZzJ2YWx1ZVt2YXJhcmdzXSA9ICgpCi0gICAgZWxpZiAwIDwgbnVtX2FyZ3MgPCBudW1fcG9zOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzKCkgdGFrZXMgJXMgJWQgcG9zaXRpb25hbCAlcyAoJWQgZ2l2ZW4pJyAlICgKLSAgICAgICAgICAgIGZfbmFtZSwgJ2F0IG1vc3QnIGlmIGRlZmF1bHRzIGVsc2UgJ2V4YWN0bHknLCBudW1fYXJncywKLSAgICAgICAgICAgICdhcmd1bWVudHMnIGlmIG51bV9hcmdzID4gMSBlbHNlICdhcmd1bWVudCcsIG51bV90b3RhbCkpCi0gICAgZWxpZiBudW1fYXJncyA9PSAwIGFuZCBudW1fdG90YWw6Ci0gICAgICAgIGlmIHZhcmt3IG9yIGt3b25seWFyZ3M6Ci0gICAgICAgICAgICBpZiBudW1fcG9zOgotICAgICAgICAgICAgICAgICMgWFhYOiBXZSBzaG91bGQgdXNlIG51bV9wb3MsIGJ1dCBQeXRob24gYWxzbyB1c2VzIG51bV90b3RhbDoKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzKCkgdGFrZXMgZXhhY3RseSAwIHBvc2l0aW9uYWwgYXJndW1lbnRzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyglZCBnaXZlbiknICUgKGZfbmFtZSwgbnVtX3RvdGFsKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMoKSB0YWtlcyBubyBhcmd1bWVudHMgKCVkIGdpdmVuKScgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmX25hbWUsIG51bV90b3RhbCkpCiAKLSAgICBmb3IgYXJnIGluIGl0ZXJ0b29scy5jaGFpbihhcmdzLCBrd29ubHlhcmdzKToKLSAgICAgICAgaWYgYXJnIGluIG5hbWVkOgotICAgICAgICAgICAgaWYgYXJnIGluIGFyZzJ2YWx1ZToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCAnJXMnIiAlIChmX25hbWUsIGFyZykpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGFyZzJ2YWx1ZVthcmddID0gbmFtZWQucG9wKGFyZykKLSAgICBmb3Iga3dvbmx5YXJnIGluIGt3b25seWFyZ3M6Ci0gICAgICAgIGlmIGt3b25seWFyZyBub3QgaW4gYXJnMnZhbHVlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGFyZzJ2YWx1ZVtrd29ubHlhcmddID0ga3dvbmx5ZGVmYXVsdHNba3dvbmx5YXJnXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMoKSBuZWVkcyBrZXl3b3JkLW9ubHkgYXJndW1lbnQgJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZfbmFtZSwga3dvbmx5YXJnKSkKLSAgICBpZiBkZWZhdWx0czogICAgIyBmaWxsIGluIGFueSBtaXNzaW5nIHZhbHVlcyB3aXRoIHRoZSBkZWZhdWx0cwotICAgICAgICBmb3IgYXJnLCB2YWx1ZSBpbiB6aXAoYXJnc1stbnVtX2RlZmF1bHRzOl0sIGRlZmF1bHRzKToKLSAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gYXJnMnZhbHVlOgotICAgICAgICAgICAgICAgIGFyZzJ2YWx1ZVthcmddID0gdmFsdWUKKyAgICBuID0gbWluKG51bV9wb3MsIG51bV9hcmdzKQorICAgIGZvciBpIGluIHJhbmdlKG4pOgorICAgICAgICBhcmcydmFsdWVbYXJnc1tpXV0gPSBwb3NpdGlvbmFsW2ldCisgICAgaWYgdmFyYXJnczoKKyAgICAgICAgYXJnMnZhbHVlW3ZhcmFyZ3NdID0gdHVwbGUocG9zaXRpb25hbFtuOl0pCisgICAgcG9zc2libGVfa3dhcmdzID0gc2V0KGFyZ3MgKyBrd29ubHlhcmdzKQogICAgIGlmIHZhcmt3OgotICAgICAgICBhcmcydmFsdWVbdmFya3ddID0gbmFtZWQKLSAgICBlbGlmIG5hbWVkOgotICAgICAgICB1bmV4cGVjdGVkID0gbmV4dChpdGVyKG5hbWVkKSkKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcygpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJyVzJyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgKGZfbmFtZSwgdW5leHBlY3RlZCkpCi0gICAgdW5hc3NpZ25lZCA9IG51bV9hcmdzIC0gbGVuKFthcmcgZm9yIGFyZyBpbiBhcmdzIGlmIGFyZyBpbiBhcmcydmFsdWVdKQotICAgIGlmIHVuYXNzaWduZWQ6Ci0gICAgICAgIG51bV9yZXF1aXJlZCA9IG51bV9hcmdzIC0gbnVtX2RlZmF1bHRzCi0gICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMoKSB0YWtlcyAlcyAlZCAlcyAoJWQgZ2l2ZW4pJyAlICgKLSAgICAgICAgICAgIGZfbmFtZSwgJ2F0IGxlYXN0JyBpZiBkZWZhdWx0cyBlbHNlICdleGFjdGx5JywgbnVtX3JlcXVpcmVkLAotICAgICAgICAgICAgJ2FyZ3VtZW50cycgaWYgbnVtX3JlcXVpcmVkID4gMSBlbHNlICdhcmd1bWVudCcsIG51bV90b3RhbCkpCisgICAgICAgIGFyZzJ2YWx1ZVt2YXJrd10gPSB7fQorICAgIGZvciBrdywgdmFsdWUgaW4gbmFtZWQuaXRlbXMoKToKKyAgICAgICAgaWYga3cgbm90IGluIHBvc3NpYmxlX2t3YXJnczoKKyAgICAgICAgICAgIGlmIG5vdCB2YXJrdzoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzKCkgZ290IGFuIHVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudCAlciIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZl9uYW1lLCBrdykpCisgICAgICAgICAgICBhcmcydmFsdWVbdmFya3ddW2t3XSA9IHZhbHVlCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBrdyBpbiBhcmcydmFsdWU6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQgJXIiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZl9uYW1lLCBrdykpCisgICAgICAgIGFyZzJ2YWx1ZVtrd10gPSB2YWx1ZQorICAgIGlmIG51bV9wb3MgPiBudW1fYXJncyBhbmQgbm90IHZhcmFyZ3M6CisgICAgICAgIF90b29fbWFueShmX25hbWUsIGFyZ3MsIGt3b25seWFyZ3MsIHZhcmFyZ3MsIG51bV9kZWZhdWx0cywKKyAgICAgICAgICAgICAgICAgICBudW1fcG9zLCBhcmcydmFsdWUpCisgICAgaWYgbnVtX3BvcyA8IG51bV9hcmdzOgorICAgICAgICByZXEgPSBhcmdzWzpudW1fYXJncyAtIG51bV9kZWZhdWx0c10KKyAgICAgICAgZm9yIGFyZyBpbiByZXE6CisgICAgICAgICAgICBpZiBhcmcgbm90IGluIGFyZzJ2YWx1ZToKKyAgICAgICAgICAgICAgICBfbWlzc2luZ19hcmd1bWVudHMoZl9uYW1lLCByZXEsIFRydWUsIGFyZzJ2YWx1ZSkKKyAgICAgICAgZm9yIGksIGFyZyBpbiBlbnVtZXJhdGUoYXJnc1tudW1fYXJncyAtIG51bV9kZWZhdWx0czpdKToKKyAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gYXJnMnZhbHVlOgorICAgICAgICAgICAgICAgIGFyZzJ2YWx1ZVthcmddID0gZGVmYXVsdHNbaV0KKyAgICBtaXNzaW5nID0gMAorICAgIGZvciBrd2FyZyBpbiBrd29ubHlhcmdzOgorICAgICAgICBpZiBrd2FyZyBub3QgaW4gYXJnMnZhbHVlOgorICAgICAgICAgICAgaWYga3dhcmcgaW4ga3dvbmx5ZGVmYXVsdHM6CisgICAgICAgICAgICAgICAgYXJnMnZhbHVlW2t3YXJnXSA9IGt3b25seWRlZmF1bHRzW2t3YXJnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtaXNzaW5nICs9IDEKKyAgICBpZiBtaXNzaW5nOgorICAgICAgICBfbWlzc2luZ19hcmd1bWVudHMoZl9uYW1lLCBrd29ubHlhcmdzLCBGYWxzZSwgYXJnMnZhbHVlKQogICAgIHJldHVybiBhcmcydmFsdWUKIAorQ2xvc3VyZVZhcnMgPSBuYW1lZHR1cGxlKCdDbG9zdXJlVmFycycsICdub25sb2NhbHMgZ2xvYmFscyBidWlsdGlucyB1bmJvdW5kJykKKworZGVmIGdldGNsb3N1cmV2YXJzKGZ1bmMpOgorICAgICIiIgorICAgIEdldCB0aGUgbWFwcGluZyBvZiBmcmVlIHZhcmlhYmxlcyB0byB0aGVpciBjdXJyZW50IHZhbHVlcy4KKworICAgIFJldHVybnMgYSBuYW1lZCB0dXBsZSBvZiBkaWN0cyBtYXBwaW5nIHRoZSBjdXJyZW50IG5vbmxvY2FsLCBnbG9iYWwKKyAgICBhbmQgYnVpbHRpbiByZWZlcmVuY2VzIGFzIHNlZW4gYnkgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLiBBIGZpbmFsCisgICAgc2V0IG9mIHVuYm91bmQgbmFtZXMgdGhhdCBjb3VsZCBub3QgYmUgcmVzb2x2ZWQgaXMgYWxzbyBwcm92aWRlZC4KKyAgICAiIiIKKworICAgIGlmIGlzbWV0aG9kKGZ1bmMpOgorICAgICAgICBmdW5jID0gZnVuYy5fX2Z1bmNfXworCisgICAgaWYgbm90IGlzZnVuY3Rpb24oZnVuYyk6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJ3shcn0nIGlzIG5vdCBhIFB5dGhvbiBmdW5jdGlvbiIuZm9ybWF0KGZ1bmMpKQorCisgICAgY29kZSA9IGZ1bmMuX19jb2RlX18KKyAgICAjIE5vbmxvY2FsIHJlZmVyZW5jZXMgYXJlIG5hbWVkIGluIGNvX2ZyZWV2YXJzIGFuZCByZXNvbHZlZAorICAgICMgYnkgbG9va2luZyB0aGVtIHVwIGluIF9fY2xvc3VyZV9fIGJ5IHBvc2l0aW9uYWwgaW5kZXgKKyAgICBpZiBmdW5jLl9fY2xvc3VyZV9fIGlzIE5vbmU6CisgICAgICAgIG5vbmxvY2FsX3ZhcnMgPSB7fQorICAgIGVsc2U6CisgICAgICAgIG5vbmxvY2FsX3ZhcnMgPSB7CisgICAgICAgICAgICB2YXIgOiBjZWxsLmNlbGxfY29udGVudHMKKyAgICAgICAgICAgIGZvciB2YXIsIGNlbGwgaW4gemlwKGNvZGUuY29fZnJlZXZhcnMsIGZ1bmMuX19jbG9zdXJlX18pCisgICAgICAgfQorCisgICAgIyBHbG9iYWwgYW5kIGJ1aWx0aW4gcmVmZXJlbmNlcyBhcmUgbmFtZWQgaW4gY29fbmFtZXMgYW5kIHJlc29sdmVkCisgICAgIyBieSBsb29raW5nIHRoZW0gdXAgaW4gX19nbG9iYWxzX18gb3IgX19idWlsdGluc19fCisgICAgZ2xvYmFsX25zID0gZnVuYy5fX2dsb2JhbHNfXworICAgIGJ1aWx0aW5fbnMgPSBnbG9iYWxfbnMuZ2V0KCJfX2J1aWx0aW5zX18iLCBidWlsdGlucy5fX2RpY3RfXykKKyAgICBpZiBpc21vZHVsZShidWlsdGluX25zKToKKyAgICAgICAgYnVpbHRpbl9ucyA9IGJ1aWx0aW5fbnMuX19kaWN0X18KKyAgICBnbG9iYWxfdmFycyA9IHt9CisgICAgYnVpbHRpbl92YXJzID0ge30KKyAgICB1bmJvdW5kX25hbWVzID0gc2V0KCkKKyAgICBmb3IgbmFtZSBpbiBjb2RlLmNvX25hbWVzOgorICAgICAgICBpZiBuYW1lIGluICgiTm9uZSIsICJUcnVlIiwgIkZhbHNlIik6CisgICAgICAgICAgICAjIEJlY2F1c2UgdGhlc2UgdXNlZCB0byBiZSBidWlsdGlucyBpbnN0ZWFkIG9mIGtleXdvcmRzLCB0aGV5CisgICAgICAgICAgICAjIG1heSBzdGlsbCBzaG93IHVwIGFzIG5hbWUgcmVmZXJlbmNlcy4gV2UgaWdub3JlIHRoZW0uCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnbG9iYWxfdmFyc1tuYW1lXSA9IGdsb2JhbF9uc1tuYW1lXQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYnVpbHRpbl92YXJzW25hbWVdID0gYnVpbHRpbl9uc1tuYW1lXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHVuYm91bmRfbmFtZXMuYWRkKG5hbWUpCisKKyAgICByZXR1cm4gQ2xvc3VyZVZhcnMobm9ubG9jYWxfdmFycywgZ2xvYmFsX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5fdmFycywgdW5ib3VuZF9uYW1lcykKKwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzdGFjayBmcmFtZSBleHRyYWN0aW9uCiAKIFRyYWNlYmFjayA9IG5hbWVkdHVwbGUoJ1RyYWNlYmFjaycsICdmaWxlbmFtZSBsaW5lbm8gZnVuY3Rpb24gY29kZV9jb250ZXh0IGluZGV4JykKQEAgLTExNzEsNiArMTI2Niw4IEBACiAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoYXR0cikKIAogCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBnZW5lcmF0b3IgaW50cm9zcGVjdGlvbgorCiBHRU5fQ1JFQVRFRCA9ICdHRU5fQ1JFQVRFRCcKIEdFTl9SVU5OSU5HID0gJ0dFTl9SVU5OSU5HJwogR0VOX1NVU1BFTkRFRCA9ICdHRU5fU1VTUEVOREVEJwpAQCAtMTE5MiwzICsxMjg5LDc4NSBAQAogICAgIGlmIGdlbmVyYXRvci5naV9mcmFtZS5mX2xhc3RpID09IC0xOgogICAgICAgICByZXR1cm4gR0VOX0NSRUFURUQKICAgICByZXR1cm4gR0VOX1NVU1BFTkRFRAorCisKK2RlZiBnZXRnZW5lcmF0b3Jsb2NhbHMoZ2VuZXJhdG9yKToKKyAgICAiIiIKKyAgICBHZXQgdGhlIG1hcHBpbmcgb2YgZ2VuZXJhdG9yIGxvY2FsIHZhcmlhYmxlcyB0byB0aGVpciBjdXJyZW50IHZhbHVlcy4KKworICAgIEEgZGljdCBpcyByZXR1cm5lZCwgd2l0aCB0aGUga2V5cyB0aGUgbG9jYWwgdmFyaWFibGUgbmFtZXMgYW5kIHZhbHVlcyB0aGUKKyAgICBib3VuZCB2YWx1ZXMuIiIiCisKKyAgICBpZiBub3QgaXNnZW5lcmF0b3IoZ2VuZXJhdG9yKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIneyFyfScgaXMgbm90IGEgUHl0aG9uIGdlbmVyYXRvciIuZm9ybWF0KGdlbmVyYXRvcikpCisKKyAgICBmcmFtZSA9IGdldGF0dHIoZ2VuZXJhdG9yLCAiZ2lfZnJhbWUiLCBOb25lKQorICAgIGlmIGZyYW1lIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmdpX2ZyYW1lLmZfbG9jYWxzCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIHt9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyBGdW5jdGlvbiBTaWduYXR1cmUgT2JqZWN0IChQRVAgMzYyKQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisKK19XcmFwcGVyRGVzY3JpcHRvciA9IHR5cGUodHlwZS5fX2NhbGxfXykKK19NZXRob2RXcmFwcGVyID0gdHlwZShhbGwuX19jYWxsX18pCisKK19Ob25Vc2VyRGVmaW5lZENhbGxhYmxlcyA9IChfV3JhcHBlckRlc2NyaXB0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01ldGhvZFdyYXBwZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuQnVpbHRpbkZ1bmN0aW9uVHlwZSkKKworCitkZWYgX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKGNscywgbWV0aG9kX25hbWUpOgorICAgIHRyeToKKyAgICAgICAgbWV0aCA9IGdldGF0dHIoY2xzLCBtZXRob2RfbmFtZSkKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIHJldHVybgorICAgIGVsc2U6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG1ldGgsIF9Ob25Vc2VyRGVmaW5lZENhbGxhYmxlcyk6CisgICAgICAgICAgICAjIE9uY2UgJ19fc2lnbmF0dXJlX18nIHdpbGwgYmUgYWRkZWQgdG8gJ0MnLWxldmVsCisgICAgICAgICAgICAjIGNhbGxhYmxlcywgdGhpcyBjaGVjayB3b24ndCBiZSBuZWNlc3NhcnkKKyAgICAgICAgICAgIHJldHVybiBtZXRoCisKKworZGVmIHNpZ25hdHVyZShvYmopOgorICAgICcnJ0dldCBhIHNpZ25hdHVyZSBvYmplY3QgZm9yIHRoZSBwYXNzZWQgY2FsbGFibGUuJycnCisKKyAgICBpZiBub3QgY2FsbGFibGUob2JqKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIG5vdCBhIGNhbGxhYmxlIG9iamVjdCcuZm9ybWF0KG9iaikpCisKKyAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuTWV0aG9kVHlwZSk6CisgICAgICAgICMgSW4gdGhpcyBjYXNlIHdlIHNraXAgdGhlIGZpcnN0IHBhcmFtZXRlciBvZiB0aGUgdW5kZXJseWluZworICAgICAgICAjIGZ1bmN0aW9uICh1c3VhbGx5IGBzZWxmYCBvciBgY2xzYCkuCisgICAgICAgIHNpZyA9IHNpZ25hdHVyZShvYmouX19mdW5jX18pCisgICAgICAgIHJldHVybiBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPXR1cGxlKHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpKVsxOl0pCisKKyAgICB0cnk6CisgICAgICAgIHNpZyA9IG9iai5fX3NpZ25hdHVyZV9fCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgaWYgc2lnIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNpZworCisgICAgdHJ5OgorICAgICAgICAjIFdhcyB0aGlzIGZ1bmN0aW9uIHdyYXBwZWQgYnkgYSBkZWNvcmF0b3I/CisgICAgICAgIHdyYXBwZWQgPSBvYmouX193cmFwcGVkX18KKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gc2lnbmF0dXJlKHdyYXBwZWQpCisKKyAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuRnVuY3Rpb25UeXBlKToKKyAgICAgICAgcmV0dXJuIFNpZ25hdHVyZS5mcm9tX2Z1bmN0aW9uKG9iaikKKworICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBmdW5jdG9vbHMucGFydGlhbCk6CisgICAgICAgIHNpZyA9IHNpZ25hdHVyZShvYmouZnVuYykKKworICAgICAgICBuZXdfcGFyYW1zID0gT3JkZXJlZERpY3Qoc2lnLnBhcmFtZXRlcnMuaXRlbXMoKSkKKworICAgICAgICBwYXJ0aWFsX2FyZ3MgPSBvYmouYXJncyBvciAoKQorICAgICAgICBwYXJ0aWFsX2tleXdvcmRzID0gb2JqLmtleXdvcmRzIG9yIHt9CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJhID0gc2lnLmJpbmRfcGFydGlhbCgqcGFydGlhbF9hcmdzLCAqKnBhcnRpYWxfa2V5d29yZHMpCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgZXg6CisgICAgICAgICAgICBtc2cgPSAncGFydGlhbCBvYmplY3QgeyFyfSBoYXMgaW5jb3JyZWN0IGFyZ3VtZW50cycuZm9ybWF0KG9iaikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKSBmcm9tIGV4CisKKyAgICAgICAgZm9yIGFyZ19uYW1lLCBhcmdfdmFsdWUgaW4gYmEuYXJndW1lbnRzLml0ZW1zKCk6CisgICAgICAgICAgICBwYXJhbSA9IG5ld19wYXJhbXNbYXJnX25hbWVdCisgICAgICAgICAgICBpZiBhcmdfbmFtZSBpbiBwYXJ0aWFsX2tleXdvcmRzOgorICAgICAgICAgICAgICAgICMgV2Ugc2V0IGEgbmV3IGRlZmF1bHQgdmFsdWUsIGJlY2F1c2UgdGhlIGZvbGxvd2luZyBjb2RlCisgICAgICAgICAgICAgICAgIyBpcyBjb3JyZWN0OgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjICAgPj4+IGRlZiBmb28oYSk6IHByaW50KGEpCisgICAgICAgICAgICAgICAgIyAgID4+PiBwcmludChwYXJ0aWFsKHBhcnRpYWwoZm9vLCBhPTEwKSwgYT0yMCkoKSkKKyAgICAgICAgICAgICAgICAjICAgMjAKKyAgICAgICAgICAgICAgICAjICAgPj4+IHByaW50KHBhcnRpYWwocGFydGlhbChmb28sIGE9MTApLCBhPTIwKShhPTMwKSkKKyAgICAgICAgICAgICAgICAjICAgMzAKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBTbywgd2l0aCAncGFydGlhbCcgb2JqZWN0cywgcGFzc2luZyBhIGtleXdvcmQgYXJndW1lbnQgaXMKKyAgICAgICAgICAgICAgICAjIGxpa2Ugc2V0dGluZyBhIG5ldyBkZWZhdWx0IHZhbHVlIGZvciB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICMgcGFyYW1ldGVyCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgV2UgYWxzbyBtYXJrIHRoaXMgcGFyYW1ldGVyIHdpdGggJ19wYXJ0aWFsX2t3YXJnJworICAgICAgICAgICAgICAgICMgZmxhZy4gIExhdGVyLCBpbiAnX2JpbmQnLCB0aGUgJ2RlZmF1bHQnIHZhbHVlIG9mIHRoaXMKKyAgICAgICAgICAgICAgICAjIHBhcmFtZXRlciB3aWxsIGJlIGFkZGVkIHRvICdrd2FyZ3MnLCB0byBzaW11bGF0ZQorICAgICAgICAgICAgICAgICMgdGhlICdmdW5jdG9vbHMucGFydGlhbCcgcmVhbCBjYWxsLgorICAgICAgICAgICAgICAgIG5ld19wYXJhbXNbYXJnX25hbWVdID0gcGFyYW0ucmVwbGFjZShkZWZhdWx0PWFyZ192YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3BhcnRpYWxfa3dhcmc9VHJ1ZSkKKworICAgICAgICAgICAgZWxpZiAocGFyYW0ua2luZCBub3QgaW4gKF9WQVJfS0VZV09SRCwgX1ZBUl9QT1NJVElPTkFMKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgcGFyYW0uX3BhcnRpYWxfa3dhcmcpOgorICAgICAgICAgICAgICAgIG5ld19wYXJhbXMucG9wKGFyZ19uYW1lKQorCisgICAgICAgIHJldHVybiBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPW5ld19wYXJhbXMudmFsdWVzKCkpCisKKyAgICBzaWcgPSBOb25lCisgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGUpOgorICAgICAgICAjIG9iaiBpcyBhIGNsYXNzIG9yIGEgbWV0YWNsYXNzCisKKyAgICAgICAgIyBGaXJzdCwgbGV0J3Mgc2VlIGlmIGl0IGhhcyBhbiBvdmVybG9hZGVkIF9fY2FsbF9fIGRlZmluZWQKKyAgICAgICAgIyBpbiBpdHMgbWV0YWNsYXNzCisgICAgICAgIGNhbGwgPSBfZ2V0X3VzZXJfZGVmaW5lZF9tZXRob2QodHlwZShvYmopLCAnX19jYWxsX18nKQorICAgICAgICBpZiBjYWxsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2lnID0gc2lnbmF0dXJlKGNhbGwpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIE5vdyB3ZSBjaGVjayBpZiB0aGUgJ29iaicgY2xhc3MgaGFzIGEgJ19fbmV3X18nIG1ldGhvZAorICAgICAgICAgICAgbmV3ID0gX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKG9iaiwgJ19fbmV3X18nKQorICAgICAgICAgICAgaWYgbmV3IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNpZyA9IHNpZ25hdHVyZShuZXcpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgRmluYWxseSwgd2Ugc2hvdWxkIGhhdmUgYXQgbGVhc3QgX19pbml0X18gaW1wbGVtZW50ZWQKKyAgICAgICAgICAgICAgICBpbml0ID0gX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKG9iaiwgJ19faW5pdF9fJykKKyAgICAgICAgICAgICAgICBpZiBpbml0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzaWcgPSBzaWduYXR1cmUoaW5pdCkKKyAgICBlbGlmIG5vdCBpc2luc3RhbmNlKG9iaiwgX05vblVzZXJEZWZpbmVkQ2FsbGFibGVzKToKKyAgICAgICAgIyBBbiBvYmplY3Qgd2l0aCBfX2NhbGxfXworICAgICAgICAjIFdlIGFsc28gY2hlY2sgdGhhdCB0aGUgJ29iaicgaXMgbm90IGFuIGluc3RhbmNlIG9mCisgICAgICAgICMgX1dyYXBwZXJEZXNjcmlwdG9yIG9yIF9NZXRob2RXcmFwcGVyIHRvIGF2b2lkCisgICAgICAgICMgaW5maW5pdGUgcmVjdXJzaW9uIChhbmQgZXZlbiBwb3RlbnRpYWwgc2VnZmF1bHQpCisgICAgICAgIGNhbGwgPSBfZ2V0X3VzZXJfZGVmaW5lZF9tZXRob2QodHlwZShvYmopLCAnX19jYWxsX18nKQorICAgICAgICBpZiBjYWxsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2lnID0gc2lnbmF0dXJlKGNhbGwpCisKKyAgICBpZiBzaWcgaXMgbm90IE5vbmU6CisgICAgICAgICMgRm9yIGNsYXNzZXMgYW5kIG9iamVjdHMgd2Ugc2tpcCB0aGUgZmlyc3QgcGFyYW1ldGVyIG9mIHRoZWlyCisgICAgICAgICMgX19jYWxsX18sIF9fbmV3X18sIG9yIF9faW5pdF9fIG1ldGhvZHMKKyAgICAgICAgcmV0dXJuIHNpZy5yZXBsYWNlKHBhcmFtZXRlcnM9dHVwbGUoc2lnLnBhcmFtZXRlcnMudmFsdWVzKCkpWzE6XSkKKworICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5CdWlsdGluRnVuY3Rpb25UeXBlKToKKyAgICAgICAgIyBSYWlzZSBhIG5pY2VyIGVycm9yIG1lc3NhZ2UgZm9yIGJ1aWx0aW5zCisgICAgICAgIG1zZyA9ICdubyBzaWduYXR1cmUgZm91bmQgZm9yIGJ1aWx0aW4gZnVuY3Rpb24geyFyfScuZm9ybWF0KG9iaikKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCisKKyAgICByYWlzZSBWYWx1ZUVycm9yKCdjYWxsYWJsZSB7IXJ9IGlzIG5vdCBzdXBwb3J0ZWQgYnkgc2lnbmF0dXJlJy5mb3JtYXQob2JqKSkKKworCitjbGFzcyBfdm9pZDoKKyAgICAnJydBIHByaXZhdGUgbWFya2VyIC0gdXNlZCBpbiBQYXJhbWV0ZXIgJiBTaWduYXR1cmUnJycKKworCitjbGFzcyBfZW1wdHk6CisgICAgcGFzcworCisKK2NsYXNzIF9QYXJhbWV0ZXJLaW5kKGludCk6CisgICAgZGVmIF9fbmV3X18oc2VsZiwgKmFyZ3MsIG5hbWUpOgorICAgICAgICBvYmogPSBpbnQuX19uZXdfXyhzZWxmLCAqYXJncykKKyAgICAgICAgb2JqLl9uYW1lID0gbmFtZQorICAgICAgICByZXR1cm4gb2JqCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8X1BhcmFtZXRlcktpbmQ6IHshcn0+Jy5mb3JtYXQoc2VsZi5fbmFtZSkKKworCitfUE9TSVRJT05BTF9PTkxZICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kKDAsIG5hbWU9J1BPU0lUSU9OQUxfT05MWScpCitfUE9TSVRJT05BTF9PUl9LRVlXT1JEICA9IF9QYXJhbWV0ZXJLaW5kKDEsIG5hbWU9J1BPU0lUSU9OQUxfT1JfS0VZV09SRCcpCitfVkFSX1BPU0lUSU9OQUwgICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kKDIsIG5hbWU9J1ZBUl9QT1NJVElPTkFMJykKK19LRVlXT1JEX09OTFkgICAgICAgICAgID0gX1BhcmFtZXRlcktpbmQoMywgbmFtZT0nS0VZV09SRF9PTkxZJykKK19WQVJfS0VZV09SRCAgICAgICAgICAgID0gX1BhcmFtZXRlcktpbmQoNCwgbmFtZT0nVkFSX0tFWVdPUkQnKQorCisKK2NsYXNzIFBhcmFtZXRlcjoKKyAgICAnJydSZXByZXNlbnRzIGEgcGFyYW1ldGVyIGluIGEgZnVuY3Rpb24gc2lnbmF0dXJlLgorCisgICAgSGFzIHRoZSBmb2xsb3dpbmcgcHVibGljIGF0dHJpYnV0ZXM6CisKKyAgICAqIG5hbWUgOiBzdHIKKyAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhIHN0cmluZy4KKyAgICAqIGRlZmF1bHQgOiBvYmplY3QKKyAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBwYXJhbWV0ZXIgaWYgc3BlY2lmaWVkLiAgSWYgdGhlCisgICAgICAgIHBhcmFtZXRlciBoYXMgbm8gZGVmYXVsdCB2YWx1ZSwgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldC4KKyAgICAqIGFubm90YXRpb24KKyAgICAgICAgVGhlIGFubm90YXRpb24gZm9yIHRoZSBwYXJhbWV0ZXIgaWYgc3BlY2lmaWVkLiAgSWYgdGhlCisgICAgICAgIHBhcmFtZXRlciBoYXMgbm8gYW5ub3RhdGlvbiwgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldC4KKyAgICAqIGtpbmQgOiBzdHIKKyAgICAgICAgRGVzY3JpYmVzIGhvdyBhcmd1bWVudCB2YWx1ZXMgYXJlIGJvdW5kIHRvIHRoZSBwYXJhbWV0ZXIuCisgICAgICAgIFBvc3NpYmxlIHZhbHVlczogYFBhcmFtZXRlci5QT1NJVElPTkFMX09OTFlgLAorICAgICAgICBgUGFyYW1ldGVyLlBPU0lUSU9OQUxfT1JfS0VZV09SRGAsIGBQYXJhbWV0ZXIuVkFSX1BPU0lUSU9OQUxgLAorICAgICAgICBgUGFyYW1ldGVyLktFWVdPUkRfT05MWWAsIGBQYXJhbWV0ZXIuVkFSX0tFWVdPUkRgLgorICAgICcnJworCisgICAgX19zbG90c19fID0gKCdfbmFtZScsICdfa2luZCcsICdfZGVmYXVsdCcsICdfYW5ub3RhdGlvbicsICdfcGFydGlhbF9rd2FyZycpCisKKyAgICBQT1NJVElPTkFMX09OTFkgICAgICAgICA9IF9QT1NJVElPTkFMX09OTFkKKyAgICBQT1NJVElPTkFMX09SX0tFWVdPUkQgICA9IF9QT1NJVElPTkFMX09SX0tFWVdPUkQKKyAgICBWQVJfUE9TSVRJT05BTCAgICAgICAgICA9IF9WQVJfUE9TSVRJT05BTAorICAgIEtFWVdPUkRfT05MWSAgICAgICAgICAgID0gX0tFWVdPUkRfT05MWQorICAgIFZBUl9LRVlXT1JEICAgICAgICAgICAgID0gX1ZBUl9LRVlXT1JECisKKyAgICBlbXB0eSA9IF9lbXB0eQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGtpbmQsICosIGRlZmF1bHQ9X2VtcHR5LCBhbm5vdGF0aW9uPV9lbXB0eSwKKyAgICAgICAgICAgICAgICAgX3BhcnRpYWxfa3dhcmc9RmFsc2UpOgorCisgICAgICAgIGlmIGtpbmQgbm90IGluIChfUE9TSVRJT05BTF9PTkxZLCBfUE9TSVRJT05BTF9PUl9LRVlXT1JELAorICAgICAgICAgICAgICAgICAgICAgICAgX1ZBUl9QT1NJVElPTkFMLCBfS0VZV09SRF9PTkxZLCBfVkFSX0tFWVdPUkQpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCB2YWx1ZSBmb3IgJ1BhcmFtZXRlci5raW5kJyBhdHRyaWJ1dGUiKQorICAgICAgICBzZWxmLl9raW5kID0ga2luZAorCisgICAgICAgIGlmIGRlZmF1bHQgaXMgbm90IF9lbXB0eToKKyAgICAgICAgICAgIGlmIGtpbmQgaW4gKF9WQVJfUE9TSVRJT05BTCwgX1ZBUl9LRVlXT1JEKToKKyAgICAgICAgICAgICAgICBtc2cgPSAne30gcGFyYW1ldGVycyBjYW5ub3QgaGF2ZSBkZWZhdWx0IHZhbHVlcycuZm9ybWF0KGtpbmQpCisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCisgICAgICAgIHNlbGYuX2RlZmF1bHQgPSBkZWZhdWx0CisgICAgICAgIHNlbGYuX2Fubm90YXRpb24gPSBhbm5vdGF0aW9uCisKKyAgICAgICAgaWYgbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgaWYga2luZCAhPSBfUE9TSVRJT05BTF9PTkxZOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vbmUgaXMgbm90IGEgdmFsaWQgbmFtZSBmb3IgYSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLXBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXIiKQorICAgICAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5hbWUgPSBzdHIobmFtZSkKKyAgICAgICAgICAgIGlmIGtpbmQgIT0gX1BPU0lUSU9OQUxfT05MWSBhbmQgbm90IG5hbWUuaXNpZGVudGlmaWVyKCk6CisgICAgICAgICAgICAgICAgbXNnID0gJ3shcn0gaXMgbm90IGEgdmFsaWQgcGFyYW1ldGVyIG5hbWUnLmZvcm1hdChuYW1lKQorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQorICAgICAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKKworICAgICAgICBzZWxmLl9wYXJ0aWFsX2t3YXJnID0gX3BhcnRpYWxfa3dhcmcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRlZmF1bHQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9kZWZhdWx0CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYW5ub3RhdGlvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Fubm90YXRpb24KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBraW5kKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fa2luZAorCisgICAgZGVmIHJlcGxhY2Uoc2VsZiwgKiwgbmFtZT1fdm9pZCwga2luZD1fdm9pZCwgYW5ub3RhdGlvbj1fdm9pZCwKKyAgICAgICAgICAgICAgICBkZWZhdWx0PV92b2lkLCBfcGFydGlhbF9rd2FyZz1fdm9pZCk6CisgICAgICAgICcnJ0NyZWF0ZXMgYSBjdXN0b21pemVkIGNvcHkgb2YgdGhlIFBhcmFtZXRlci4nJycKKworICAgICAgICBpZiBuYW1lIGlzIF92b2lkOgorICAgICAgICAgICAgbmFtZSA9IHNlbGYuX25hbWUKKworICAgICAgICBpZiBraW5kIGlzIF92b2lkOgorICAgICAgICAgICAga2luZCA9IHNlbGYuX2tpbmQKKworICAgICAgICBpZiBhbm5vdGF0aW9uIGlzIF92b2lkOgorICAgICAgICAgICAgYW5ub3RhdGlvbiA9IHNlbGYuX2Fubm90YXRpb24KKworICAgICAgICBpZiBkZWZhdWx0IGlzIF92b2lkOgorICAgICAgICAgICAgZGVmYXVsdCA9IHNlbGYuX2RlZmF1bHQKKworICAgICAgICBpZiBfcGFydGlhbF9rd2FyZyBpcyBfdm9pZDoKKyAgICAgICAgICAgIF9wYXJ0aWFsX2t3YXJnID0gc2VsZi5fcGFydGlhbF9rd2FyZworCisgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKG5hbWUsIGtpbmQsIGRlZmF1bHQ9ZGVmYXVsdCwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBfcGFydGlhbF9rd2FyZz1fcGFydGlhbF9rd2FyZykKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBraW5kID0gc2VsZi5raW5kCisKKyAgICAgICAgZm9ybWF0dGVkID0gc2VsZi5fbmFtZQorICAgICAgICBpZiBraW5kID09IF9QT1NJVElPTkFMX09OTFk6CisgICAgICAgICAgICBpZiBmb3JtYXR0ZWQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmb3JtYXR0ZWQgPSAnJworICAgICAgICAgICAgZm9ybWF0dGVkID0gJzx7fT4nLmZvcm1hdChmb3JtYXR0ZWQpCisKKyAgICAgICAgIyBBZGQgYW5ub3RhdGlvbiBhbmQgZGVmYXVsdCB2YWx1ZQorICAgICAgICBpZiBzZWxmLl9hbm5vdGF0aW9uIGlzIG5vdCBfZW1wdHk6CisgICAgICAgICAgICBmb3JtYXR0ZWQgPSAne306e30nLmZvcm1hdChmb3JtYXR0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRhbm5vdGF0aW9uKHNlbGYuX2Fubm90YXRpb24pKQorCisgICAgICAgIGlmIHNlbGYuX2RlZmF1bHQgaXMgbm90IF9lbXB0eToKKyAgICAgICAgICAgIGZvcm1hdHRlZCA9ICd7fT17fScuZm9ybWF0KGZvcm1hdHRlZCwgcmVwcihzZWxmLl9kZWZhdWx0KSkKKworICAgICAgICBpZiBraW5kID09IF9WQVJfUE9TSVRJT05BTDoKKyAgICAgICAgICAgIGZvcm1hdHRlZCA9ICcqJyArIGZvcm1hdHRlZAorICAgICAgICBlbGlmIGtpbmQgPT0gX1ZBUl9LRVlXT1JEOgorICAgICAgICAgICAgZm9ybWF0dGVkID0gJyoqJyArIGZvcm1hdHRlZAorCisgICAgICAgIHJldHVybiBmb3JtYXR0ZWQKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8e30gYXQgezojeH0geyFyfT4nLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZChzZWxmKSwgc2VsZi5uYW1lKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiAoaXNzdWJjbGFzcyhvdGhlci5fX2NsYXNzX18sIFBhcmFtZXRlcikgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5fbmFtZSA9PSBvdGhlci5fbmFtZSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9raW5kID09IG90aGVyLl9raW5kIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuX2RlZmF1bHQgPT0gb3RoZXIuX2RlZmF1bHQgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5fYW5ub3RhdGlvbiA9PSBvdGhlci5fYW5ub3RhdGlvbikKKworICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gbm90IHNlbGYuX19lcV9fKG90aGVyKQorCisKK2NsYXNzIEJvdW5kQXJndW1lbnRzOgorICAgICcnJ1Jlc3VsdCBvZiBgU2lnbmF0dXJlLmJpbmRgIGNhbGwuICBIb2xkcyB0aGUgbWFwcGluZyBvZiBhcmd1bWVudHMKKyAgICB0byB0aGUgZnVuY3Rpb24ncyBwYXJhbWV0ZXJzLgorCisgICAgSGFzIHRoZSBmb2xsb3dpbmcgcHVibGljIGF0dHJpYnV0ZXM6CisKKyAgICAqIGFyZ3VtZW50cyA6IE9yZGVyZWREaWN0CisgICAgICAgIEFuIG9yZGVyZWQgbXV0YWJsZSBtYXBwaW5nIG9mIHBhcmFtZXRlcnMnIG5hbWVzIHRvIGFyZ3VtZW50cycgdmFsdWVzLgorICAgICAgICBEb2VzIG5vdCBjb250YWluIGFyZ3VtZW50cycgZGVmYXVsdCB2YWx1ZXMuCisgICAgKiBzaWduYXR1cmUgOiBTaWduYXR1cmUKKyAgICAgICAgVGhlIFNpZ25hdHVyZSBvYmplY3QgdGhhdCBjcmVhdGVkIHRoaXMgaW5zdGFuY2UuCisgICAgKiBhcmdzIDogdHVwbGUKKyAgICAgICAgVHVwbGUgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgdmFsdWVzLgorICAgICoga3dhcmdzIDogZGljdAorICAgICAgICBEaWN0IG9mIGtleXdvcmQgYXJndW1lbnRzIHZhbHVlcy4KKyAgICAnJycKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaWduYXR1cmUsIGFyZ3VtZW50cyk6CisgICAgICAgIHNlbGYuYXJndW1lbnRzID0gYXJndW1lbnRzCisgICAgICAgIHNlbGYuX3NpZ25hdHVyZSA9IHNpZ25hdHVyZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNpZ25hdHVyZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NpZ25hdHVyZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFyZ3Moc2VsZik6CisgICAgICAgIGFyZ3MgPSBbXQorICAgICAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW0gaW4gc2VsZi5fc2lnbmF0dXJlLnBhcmFtZXRlcnMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIChwYXJhbS5raW5kIGluIChfVkFSX0tFWVdPUkQsIF9LRVlXT1JEX09OTFkpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uX3BhcnRpYWxfa3dhcmcpOgorICAgICAgICAgICAgICAgICMgS2V5d29yZCBhcmd1bWVudHMgbWFwcGVkIGJ5ICdmdW5jdG9vbHMucGFydGlhbCcKKyAgICAgICAgICAgICAgICAjIChQYXJhbWV0ZXIuX3BhcnRpYWxfa3dhcmcgaXMgVHJ1ZSkgYXJlIG1hcHBlZAorICAgICAgICAgICAgICAgICMgaW4gJ0JvdW5kQXJndW1lbnRzLmt3YXJncycsIGFsb25nIHdpdGggVkFSX0tFWVdPUkQgJgorICAgICAgICAgICAgICAgICMgS0VZV09SRF9PTkxZCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGFyZyA9IHNlbGYuYXJndW1lbnRzW3BhcmFtX25hbWVdCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgIyBXZSdyZSBkb25lIGhlcmUuIE90aGVyIGFyZ3VtZW50cworICAgICAgICAgICAgICAgICMgd2lsbCBiZSBtYXBwZWQgaW4gJ0JvdW5kQXJndW1lbnRzLmt3YXJncycKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9WQVJfUE9TSVRJT05BTDoKKyAgICAgICAgICAgICAgICAgICAgIyAqYXJncworICAgICAgICAgICAgICAgICAgICBhcmdzLmV4dGVuZChhcmcpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBwbGFpbiBhcmd1bWVudAorICAgICAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZChhcmcpCisKKyAgICAgICAgcmV0dXJuIHR1cGxlKGFyZ3MpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYga3dhcmdzKHNlbGYpOgorICAgICAgICBrd2FyZ3MgPSB7fQorICAgICAgICBrd2FyZ3Nfc3RhcnRlZCA9IEZhbHNlCisgICAgICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbSBpbiBzZWxmLl9zaWduYXR1cmUucGFyYW1ldGVycy5pdGVtcygpOgorICAgICAgICAgICAgaWYgbm90IGt3YXJnc19zdGFydGVkOgorICAgICAgICAgICAgICAgIGlmIChwYXJhbS5raW5kIGluIChfVkFSX0tFWVdPUkQsIF9LRVlXT1JEX09OTFkpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS5fcGFydGlhbF9rd2FyZyk6CisgICAgICAgICAgICAgICAgICAgIGt3YXJnc19zdGFydGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtX25hbWUgbm90IGluIHNlbGYuYXJndW1lbnRzOgorICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzX3N0YXJ0ZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBpZiBub3Qga3dhcmdzX3N0YXJ0ZWQ6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGFyZyA9IHNlbGYuYXJndW1lbnRzW3BhcmFtX25hbWVdCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9WQVJfS0VZV09SRDoKKyAgICAgICAgICAgICAgICAgICAgIyAqKmt3YXJncworICAgICAgICAgICAgICAgICAgICBrd2FyZ3MudXBkYXRlKGFyZykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIHBsYWluIGtleXdvcmQgYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAga3dhcmdzW3BhcmFtX25hbWVdID0gYXJnCisKKyAgICAgICAgcmV0dXJuIGt3YXJncworCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiAoaXNzdWJjbGFzcyhvdGhlci5fX2NsYXNzX18sIEJvdW5kQXJndW1lbnRzKSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLnNpZ25hdHVyZSA9PSBvdGhlci5zaWduYXR1cmUgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5hcmd1bWVudHMgPT0gb3RoZXIuYXJndW1lbnRzKQorCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBub3Qgc2VsZi5fX2VxX18ob3RoZXIpCisKKworY2xhc3MgU2lnbmF0dXJlOgorICAgICcnJ0EgU2lnbmF0dXJlIG9iamVjdCByZXByZXNlbnRzIHRoZSBvdmVyYWxsIHNpZ25hdHVyZSBvZiBhIGZ1bmN0aW9uLgorICAgIEl0IHN0b3JlcyBhIFBhcmFtZXRlciBvYmplY3QgZm9yIGVhY2ggcGFyYW1ldGVyIGFjY2VwdGVkIGJ5IHRoZQorICAgIGZ1bmN0aW9uLCBhcyB3ZWxsIGFzIGluZm9ybWF0aW9uIHNwZWNpZmljIHRvIHRoZSBmdW5jdGlvbiBpdHNlbGYuCisKKyAgICBBIFNpZ25hdHVyZSBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgcHVibGljIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHM6CisKKyAgICAqIHBhcmFtZXRlcnMgOiBPcmRlcmVkRGljdAorICAgICAgICBBbiBvcmRlcmVkIG1hcHBpbmcgb2YgcGFyYW1ldGVycycgbmFtZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgUGFyYW1ldGVyIG9iamVjdHMgKGtleXdvcmQtb25seSBhcmd1bWVudHMgYXJlIGluIHRoZSBzYW1lIG9yZGVyCisgICAgICAgIGFzIGxpc3RlZCBpbiBgY29kZS5jb192YXJuYW1lc2ApLgorICAgICogcmV0dXJuX2Fubm90YXRpb24gOiBvYmplY3QKKyAgICAgICAgVGhlIGFubm90YXRpb24gZm9yIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24gaWYgc3BlY2lmaWVkLgorICAgICAgICBJZiB0aGUgZnVuY3Rpb24gaGFzIG5vIGFubm90YXRpb24gZm9yIGl0cyByZXR1cm4gdHlwZSwgdGhpcworICAgICAgICBhdHRyaWJ1dGUgaXMgbm90IHNldC4KKyAgICAqIGJpbmQoKmFyZ3MsICoqa3dhcmdzKSAtPiBCb3VuZEFyZ3VtZW50cworICAgICAgICBDcmVhdGVzIGEgbWFwcGluZyBmcm9tIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzIHRvCisgICAgICAgIHBhcmFtZXRlcnMuCisgICAgKiBiaW5kX3BhcnRpYWwoKmFyZ3MsICoqa3dhcmdzKSAtPiBCb3VuZEFyZ3VtZW50cworICAgICAgICBDcmVhdGVzIGEgcGFydGlhbCBtYXBwaW5nIGZyb20gcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmd1bWVudHMKKyAgICAgICAgdG8gcGFyYW1ldGVycyAoc2ltdWxhdGluZyAnZnVuY3Rvb2xzLnBhcnRpYWwnIGJlaGF2aW9yLikKKyAgICAnJycKKworICAgIF9fc2xvdHNfXyA9ICgnX3JldHVybl9hbm5vdGF0aW9uJywgJ19wYXJhbWV0ZXJzJykKKworICAgIF9wYXJhbWV0ZXJfY2xzID0gUGFyYW1ldGVyCisgICAgX2JvdW5kX2FyZ3VtZW50c19jbHMgPSBCb3VuZEFyZ3VtZW50cworCisgICAgZW1wdHkgPSBfZW1wdHkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJhbWV0ZXJzPU5vbmUsICosIHJldHVybl9hbm5vdGF0aW9uPV9lbXB0eSwKKyAgICAgICAgICAgICAgICAgX192YWxpZGF0ZV9wYXJhbWV0ZXJzX189VHJ1ZSk6CisgICAgICAgICcnJ0NvbnN0cnVjdHMgU2lnbmF0dXJlIGZyb20gdGhlIGdpdmVuIGxpc3Qgb2YgUGFyYW1ldGVyCisgICAgICAgIG9iamVjdHMgYW5kICdyZXR1cm5fYW5ub3RhdGlvbicuICBBbGwgYXJndW1lbnRzIGFyZSBvcHRpb25hbC4KKyAgICAgICAgJycnCisKKyAgICAgICAgaWYgcGFyYW1ldGVycyBpcyBOb25lOgorICAgICAgICAgICAgcGFyYW1zID0gT3JkZXJlZERpY3QoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgX192YWxpZGF0ZV9wYXJhbWV0ZXJzX186CisgICAgICAgICAgICAgICAgcGFyYW1zID0gT3JkZXJlZERpY3QoKQorICAgICAgICAgICAgICAgIHRvcF9raW5kID0gX1BPU0lUSU9OQUxfT05MWQorCisgICAgICAgICAgICAgICAgZm9yIGlkeCwgcGFyYW0gaW4gZW51bWVyYXRlKHBhcmFtZXRlcnMpOgorICAgICAgICAgICAgICAgICAgICBraW5kID0gcGFyYW0ua2luZAorICAgICAgICAgICAgICAgICAgICBpZiBraW5kIDwgdG9wX2tpbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAnd3JvbmcgcGFyYW1ldGVyIG9yZGVyOiB7fSBiZWZvcmUge30nCisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBtc2cuZm9ybWF0KHRvcF9raW5kLCBwYXJhbS5raW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB0b3Bfa2luZCA9IGtpbmQKKworICAgICAgICAgICAgICAgICAgICBuYW1lID0gcGFyYW0ubmFtZQorICAgICAgICAgICAgICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gc3RyKGlkeCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtID0gcGFyYW0ucmVwbGFjZShuYW1lPW5hbWUpCisKKyAgICAgICAgICAgICAgICAgICAgaWYgbmFtZSBpbiBwYXJhbXM6CisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAnZHVwbGljYXRlIHBhcmFtZXRlciBuYW1lOiB7IXJ9Jy5mb3JtYXQobmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQorICAgICAgICAgICAgICAgICAgICBwYXJhbXNbbmFtZV0gPSBwYXJhbQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwYXJhbXMgPSBPcmRlcmVkRGljdCgoKHBhcmFtLm5hbWUsIHBhcmFtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBhcmFtIGluIHBhcmFtZXRlcnMpKQorCisgICAgICAgIHNlbGYuX3BhcmFtZXRlcnMgPSB0eXBlcy5NYXBwaW5nUHJveHlUeXBlKHBhcmFtcykKKyAgICAgICAgc2VsZi5fcmV0dXJuX2Fubm90YXRpb24gPSByZXR1cm5fYW5ub3RhdGlvbgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fZnVuY3Rpb24oY2xzLCBmdW5jKToKKyAgICAgICAgJycnQ29uc3RydWN0cyBTaWduYXR1cmUgZm9yIHRoZSBnaXZlbiBweXRob24gZnVuY3Rpb24nJycKKworICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmdW5jLCB0eXBlcy5GdW5jdGlvblR5cGUpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIG5vdCBhIFB5dGhvbiBmdW5jdGlvbicuZm9ybWF0KGZ1bmMpKQorCisgICAgICAgIFBhcmFtZXRlciA9IGNscy5fcGFyYW1ldGVyX2NscworCisgICAgICAgICMgUGFyYW1ldGVyIGluZm9ybWF0aW9uLgorICAgICAgICBmdW5jX2NvZGUgPSBmdW5jLl9fY29kZV9fCisgICAgICAgIHBvc19jb3VudCA9IGZ1bmNfY29kZS5jb19hcmdjb3VudAorICAgICAgICBhcmdfbmFtZXMgPSBmdW5jX2NvZGUuY29fdmFybmFtZXMKKyAgICAgICAgcG9zaXRpb25hbCA9IHR1cGxlKGFyZ19uYW1lc1s6cG9zX2NvdW50XSkKKyAgICAgICAga2V5d29yZF9vbmx5X2NvdW50ID0gZnVuY19jb2RlLmNvX2t3b25seWFyZ2NvdW50CisgICAgICAgIGtleXdvcmRfb25seSA9IGFyZ19uYW1lc1twb3NfY291bnQ6KHBvc19jb3VudCArIGtleXdvcmRfb25seV9jb3VudCldCisgICAgICAgIGFubm90YXRpb25zID0gZnVuYy5fX2Fubm90YXRpb25zX18KKyAgICAgICAgZGVmYXVsdHMgPSBmdW5jLl9fZGVmYXVsdHNfXworICAgICAgICBrd2RlZmF1bHRzID0gZnVuYy5fX2t3ZGVmYXVsdHNfXworCisgICAgICAgIGlmIGRlZmF1bHRzOgorICAgICAgICAgICAgcG9zX2RlZmF1bHRfY291bnQgPSBsZW4oZGVmYXVsdHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwb3NfZGVmYXVsdF9jb3VudCA9IDAKKworICAgICAgICBwYXJhbWV0ZXJzID0gW10KKworICAgICAgICAjIE5vbi1rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyB3L28gZGVmYXVsdHMuCisgICAgICAgIG5vbl9kZWZhdWx0X2NvdW50ID0gcG9zX2NvdW50IC0gcG9zX2RlZmF1bHRfY291bnQKKyAgICAgICAgZm9yIG5hbWUgaW4gcG9zaXRpb25hbFs6bm9uX2RlZmF1bHRfY291bnRdOgorICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1BPU0lUSU9OQUxfT1JfS0VZV09SRCkpCisKKyAgICAgICAgIyAuLi4gdy8gZGVmYXVsdHMuCisgICAgICAgIGZvciBvZmZzZXQsIG5hbWUgaW4gZW51bWVyYXRlKHBvc2l0aW9uYWxbbm9uX2RlZmF1bHRfY291bnQ6XSk6CisgICAgICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fUE9TSVRJT05BTF9PUl9LRVlXT1JELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9ZGVmYXVsdHNbb2Zmc2V0XSkpCisKKyAgICAgICAgIyAqYXJncworICAgICAgICBpZiBmdW5jX2NvZGUuY29fZmxhZ3MgJiAweDA0OgorICAgICAgICAgICAgbmFtZSA9IGFyZ19uYW1lc1twb3NfY291bnQgKyBrZXl3b3JkX29ubHlfY291bnRdCisgICAgICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fVkFSX1BPU0lUSU9OQUwpKQorCisgICAgICAgICMgS2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuCisgICAgICAgIGZvciBuYW1lIGluIGtleXdvcmRfb25seToKKyAgICAgICAgICAgIGRlZmF1bHQgPSBfZW1wdHkKKyAgICAgICAgICAgIGlmIGt3ZGVmYXVsdHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZGVmYXVsdCA9IGt3ZGVmYXVsdHMuZ2V0KG5hbWUsIF9lbXB0eSkKKworICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X0tFWVdPUkRfT05MWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PWRlZmF1bHQpKQorICAgICAgICAjICoqa3dhcmdzCisgICAgICAgIGlmIGZ1bmNfY29kZS5jb19mbGFncyAmIDB4MDg6CisgICAgICAgICAgICBpbmRleCA9IHBvc19jb3VudCArIGtleXdvcmRfb25seV9jb3VudAorICAgICAgICAgICAgaWYgZnVuY19jb2RlLmNvX2ZsYWdzICYgMHgwNDoKKyAgICAgICAgICAgICAgICBpbmRleCArPSAxCisKKyAgICAgICAgICAgIG5hbWUgPSBhcmdfbmFtZXNbaW5kZXhdCisgICAgICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fVkFSX0tFWVdPUkQpKQorCisgICAgICAgIHJldHVybiBjbHMocGFyYW1ldGVycywKKyAgICAgICAgICAgICAgICAgICByZXR1cm5fYW5ub3RhdGlvbj1hbm5vdGF0aW9ucy5nZXQoJ3JldHVybicsIF9lbXB0eSksCisgICAgICAgICAgICAgICAgICAgX192YWxpZGF0ZV9wYXJhbWV0ZXJzX189RmFsc2UpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFyYW1ldGVycyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BhcmFtZXRlcnMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiByZXR1cm5fYW5ub3RhdGlvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JldHVybl9hbm5vdGF0aW9uCisKKyAgICBkZWYgcmVwbGFjZShzZWxmLCAqLCBwYXJhbWV0ZXJzPV92b2lkLCByZXR1cm5fYW5ub3RhdGlvbj1fdm9pZCk6CisgICAgICAgICcnJ0NyZWF0ZXMgYSBjdXN0b21pemVkIGNvcHkgb2YgdGhlIFNpZ25hdHVyZS4KKyAgICAgICAgUGFzcyAncGFyYW1ldGVycycgYW5kL29yICdyZXR1cm5fYW5ub3RhdGlvbicgYXJndW1lbnRzCisgICAgICAgIHRvIG92ZXJyaWRlIHRoZW0gaW4gdGhlIG5ldyBjb3B5LgorICAgICAgICAnJycKKworICAgICAgICBpZiBwYXJhbWV0ZXJzIGlzIF92b2lkOgorICAgICAgICAgICAgcGFyYW1ldGVycyA9IHNlbGYucGFyYW1ldGVycy52YWx1ZXMoKQorCisgICAgICAgIGlmIHJldHVybl9hbm5vdGF0aW9uIGlzIF92b2lkOgorICAgICAgICAgICAgcmV0dXJuX2Fubm90YXRpb24gPSBzZWxmLl9yZXR1cm5fYW5ub3RhdGlvbgorCisgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKHBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9hbm5vdGF0aW9uPXJldHVybl9hbm5vdGF0aW9uKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIChub3QgaXNzdWJjbGFzcyh0eXBlKG90aGVyKSwgU2lnbmF0dXJlKSBvcgorICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHVybl9hbm5vdGF0aW9uICE9IG90aGVyLnJldHVybl9hbm5vdGF0aW9uIG9yCisgICAgICAgICAgICAgICAgICAgIGxlbihzZWxmLnBhcmFtZXRlcnMpICE9IGxlbihvdGhlci5wYXJhbWV0ZXJzKSk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBvdGhlcl9wb3NpdGlvbnMgPSB7cGFyYW06IGlkeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGlkeCwgcGFyYW0gaW4gZW51bWVyYXRlKG90aGVyLnBhcmFtZXRlcnMua2V5cygpKX0KKworICAgICAgICBmb3IgaWR4LCAocGFyYW1fbmFtZSwgcGFyYW0pIGluIGVudW1lcmF0ZShzZWxmLnBhcmFtZXRlcnMuaXRlbXMoKSk6CisgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9LRVlXT1JEX09OTFk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBvdGhlcl9wYXJhbSA9IG90aGVyLnBhcmFtZXRlcnNbcGFyYW1fbmFtZV0KKyAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtICE9IG90aGVyX3BhcmFtOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3RoZXJfaWR4ID0gb3RoZXJfcG9zaXRpb25zW3BhcmFtX25hbWVdCisgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ICE9IG90aGVyX2lkeCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0gIT0gb3RoZXIucGFyYW1ldGVyc1twYXJhbV9uYW1lXSk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBub3Qgc2VsZi5fX2VxX18ob3RoZXIpCisKKyAgICBkZWYgX2JpbmQoc2VsZiwgYXJncywga3dhcmdzLCAqLCBwYXJ0aWFsPUZhbHNlKToKKyAgICAgICAgJycnUHJpdmF0ZSBtZXRob2QuICBEb24ndCB1c2UgZGlyZWN0bHkuJycnCisKKyAgICAgICAgYXJndW1lbnRzID0gT3JkZXJlZERpY3QoKQorCisgICAgICAgIHBhcmFtZXRlcnMgPSBpdGVyKHNlbGYucGFyYW1ldGVycy52YWx1ZXMoKSkKKyAgICAgICAgcGFyYW1ldGVyc19leCA9ICgpCisgICAgICAgIGFyZ192YWxzID0gaXRlcihhcmdzKQorCisgICAgICAgIGlmIHBhcnRpYWw6CisgICAgICAgICAgICAjIFN1cHBvcnQgZm9yIGJpbmRpbmcgYXJndW1lbnRzIHRvICdmdW5jdG9vbHMucGFydGlhbCcgb2JqZWN0cy4KKyAgICAgICAgICAgICMgU2VlICdmdW5jdG9vbHMucGFydGlhbCcgY2FzZSBpbiAnc2lnbmF0dXJlKCknIGltcGxlbWVudGF0aW9uCisgICAgICAgICAgICAjIGZvciBkZXRhaWxzLgorICAgICAgICAgICAgZm9yIHBhcmFtX25hbWUsIHBhcmFtIGluIHNlbGYucGFyYW1ldGVycy5pdGVtcygpOgorICAgICAgICAgICAgICAgIGlmIChwYXJhbS5fcGFydGlhbF9rd2FyZyBhbmQgcGFyYW1fbmFtZSBub3QgaW4ga3dhcmdzKToKKyAgICAgICAgICAgICAgICAgICAgIyBTaW11bGF0aW5nICdmdW5jdG9vbHMucGFydGlhbCcgYmVoYXZpb3IKKyAgICAgICAgICAgICAgICAgICAga3dhcmdzW3BhcmFtX25hbWVdID0gcGFyYW0uZGVmYXVsdAorCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAjIExldCdzIGl0ZXJhdGUgdGhyb3VnaCB0aGUgcG9zaXRpb25hbCBhcmd1bWVudHMgYW5kIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICMgcGFyYW1ldGVycworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGFyZ192YWwgPSBuZXh0KGFyZ192YWxzKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgIyBObyBtb3JlIHBvc2l0aW9uYWwgYXJndW1lbnRzCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBwYXJhbSA9IG5leHQocGFyYW1ldGVycykKKyAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgIyBObyBtb3JlIHBhcmFtZXRlcnMuIFRoYXQncyBpdC4gSnVzdCBuZWVkIHRvIGNoZWNrIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgIyB3ZSBoYXZlIG5vIGBrd2FyZ3NgIGFmdGVyIHRoaXMgd2hpbGUgbG9vcAorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1ZBUl9QT1NJVElPTkFMOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGF0J3MgT0ssIGp1c3QgZW1wdHkgKmFyZ3MuICBMZXQncyBzdGFydCBwYXJzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAjIGt3YXJncworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBwYXJhbS5uYW1lIGluIGt3YXJnczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1BPU0lUSU9OQUxfT05MWToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAne2FyZyFyfSBwYXJhbWV0ZXIgaXMgcG9zaXRpb25hbCBvbmx5LCAnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnV0IHdhcyBwYXNzZWQgYXMgYSBrZXl3b3JkJworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IG1zZy5mb3JtYXQoYXJnPXBhcmFtLm5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZykgZnJvbSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzX2V4ID0gKHBhcmFtLCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGVsaWYgKHBhcmFtLmtpbmQgPT0gX1ZBUl9LRVlXT1JEIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS5kZWZhdWx0IGlzIG5vdCBfZW1wdHkpOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGF0J3MgZmluZSB0b28gLSB3ZSBoYXZlIGEgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgIyBwYXJhbWV0ZXIuICBTbywgbGV0cyBzdGFydCBwYXJzaW5nIGBrd2FyZ3NgLCBzdGFydGluZworICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoIHRoZSBjdXJyZW50IHBhcmFtZXRlcgorICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyc19leCA9IChwYXJhbSwpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGFydGlhbDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzX2V4ID0gKHBhcmFtLCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAne2FyZyFyfSBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0IHZhbHVlJworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IG1zZy5mb3JtYXQoYXJnPXBhcmFtLm5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZykgZnJvbSBOb25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgV2UgaGF2ZSBhIHBvc2l0aW9uYWwgYXJndW1lbnQgdG8gcHJvY2VzcworICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcGFyYW0gPSBuZXh0KHBhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKSBmcm9tIE5vbmUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kIGluIChfVkFSX0tFWVdPUkQsIF9LRVlXT1JEX09OTFkpOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBMb29rcyBsaWtlIHdlIGhhdmUgbm8gcGFyYW1ldGVyIGZvciB0aGlzIHBvc2l0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICMgYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKQorCisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1ZBUl9QT1NJVElPTkFMOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBoYXZlIGFuICcqYXJncyctbGlrZSBhcmd1bWVudCwgbGV0J3MgZmlsbCBpdCB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAjIGFsbCBwb3NpdGlvbmFsIGFyZ3VtZW50cyB3ZSBoYXZlIGxlZnQgYW5kIG1vdmUgb24gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIG5leHQgcGhhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IFthcmdfdmFsXQorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmV4dGVuZChhcmdfdmFscykKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1twYXJhbS5uYW1lXSA9IHR1cGxlKHZhbHVlcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW0ubmFtZSBpbiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ211bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7YXJnIXJ9Jy5mb3JtYXQoYXJnPXBhcmFtLm5hbWUpKQorCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1twYXJhbS5uYW1lXSA9IGFyZ192YWwKKworICAgICAgICAjIE5vdywgd2UgaXRlcmF0ZSB0aHJvdWdoIHRoZSByZW1haW5pbmcgcGFyYW1ldGVycyB0byBwcm9jZXNzCisgICAgICAgICMga2V5d29yZCBhcmd1bWVudHMKKyAgICAgICAga3dhcmdzX3BhcmFtID0gTm9uZQorICAgICAgICBmb3IgcGFyYW0gaW4gaXRlcnRvb2xzLmNoYWluKHBhcmFtZXRlcnNfZXgsIHBhcmFtZXRlcnMpOgorICAgICAgICAgICAgaWYgcGFyYW0ua2luZCA9PSBfUE9TSVRJT05BTF9PTkxZOgorICAgICAgICAgICAgICAgICMgVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIGluIGNhc2Ugb2YgYSBwcm9wZXJseSBidWlsdAorICAgICAgICAgICAgICAgICMgU2lnbmF0dXJlIG9iamVjdCAoYnV0IGxldCdzIGhhdmUgdGhpcyBjaGVjayBoZXJlCisgICAgICAgICAgICAgICAgIyB0byBlbnN1cmUgY29ycmVjdCBiZWhhdmlvdXIganVzdCBpbiBjYXNlKQorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigne2FyZyFyfSBwYXJhbWV0ZXIgaXMgcG9zaXRpb25hbCBvbmx5LCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdidXQgd2FzIHBhc3NlZCBhcyBhIGtleXdvcmQnLiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChhcmc9cGFyYW0ubmFtZSkpCisKKyAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1ZBUl9LRVlXT1JEOgorICAgICAgICAgICAgICAgICMgTWVtb3JpemUgdGhhdCB3ZSBoYXZlIGEgJyoqa3dhcmdzJy1saWtlIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgIGt3YXJnc19wYXJhbSA9IHBhcmFtCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgcGFyYW1fbmFtZSA9IHBhcmFtLm5hbWUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhcmdfdmFsID0ga3dhcmdzLnBvcChwYXJhbV9uYW1lKQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgICMgV2UgaGF2ZSBubyB2YWx1ZSBmb3IgdGhpcyBwYXJhbWV0ZXIuICBJdCdzIGZpbmUgdGhvdWdoLAorICAgICAgICAgICAgICAgICMgaWYgaXQgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgb3IgaXQgaXMgYW4gJyphcmdzJy1saWtlCisgICAgICAgICAgICAgICAgIyBwYXJhbWV0ZXIsIGxlZnQgYWxvbmUgYnkgdGhlIHByb2Nlc3Npbmcgb2YgcG9zaXRpb25hbAorICAgICAgICAgICAgICAgICMgYXJndW1lbnRzLgorICAgICAgICAgICAgICAgIGlmIChub3QgcGFydGlhbCBhbmQgcGFyYW0ua2luZCAhPSBfVkFSX1BPU0lUSU9OQUwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uZGVmYXVsdCBpcyBfZW1wdHkpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3thcmchcn0gcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCB2YWx1ZScuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChhcmc9cGFyYW1fbmFtZSkpIGZyb20gTm9uZQorCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFyZ3VtZW50c1twYXJhbV9uYW1lXSA9IGFyZ192YWwKKworICAgICAgICBpZiBrd2FyZ3M6CisgICAgICAgICAgICBpZiBrd2FyZ3NfcGFyYW0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIyBQcm9jZXNzIG91ciAnKiprd2FyZ3MnLWxpa2UgcGFyYW1ldGVyCisgICAgICAgICAgICAgICAgYXJndW1lbnRzW2t3YXJnc19wYXJhbS5uYW1lXSA9IGt3YXJncworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3RvbyBtYW55IGtleXdvcmQgYXJndW1lbnRzJykKKworICAgICAgICByZXR1cm4gc2VsZi5fYm91bmRfYXJndW1lbnRzX2NscyhzZWxmLCBhcmd1bWVudHMpCisKKyAgICBkZWYgYmluZChfX2JpbmRfc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgJycnR2V0IGEgQm91bmRBcmd1bWVudHMgb2JqZWN0LCB0aGF0IG1hcHMgdGhlIHBhc3NlZCBgYXJnc2AKKyAgICAgICAgYW5kIGBrd2FyZ3NgIHRvIHRoZSBmdW5jdGlvbidzIHNpZ25hdHVyZS4gIFJhaXNlcyBgVHlwZUVycm9yYAorICAgICAgICBpZiB0aGUgcGFzc2VkIGFyZ3VtZW50cyBjYW4gbm90IGJlIGJvdW5kLgorICAgICAgICAnJycKKyAgICAgICAgcmV0dXJuIF9fYmluZF9zZWxmLl9iaW5kKGFyZ3MsIGt3YXJncykKKworICAgIGRlZiBiaW5kX3BhcnRpYWwoX19iaW5kX3NlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICcnJ0dldCBhIEJvdW5kQXJndW1lbnRzIG9iamVjdCwgdGhhdCBwYXJ0aWFsbHkgbWFwcyB0aGUKKyAgICAgICAgcGFzc2VkIGBhcmdzYCBhbmQgYGt3YXJnc2AgdG8gdGhlIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlLgorICAgICAgICBSYWlzZXMgYFR5cGVFcnJvcmAgaWYgdGhlIHBhc3NlZCBhcmd1bWVudHMgY2FuIG5vdCBiZSBib3VuZC4KKyAgICAgICAgJycnCisgICAgICAgIHJldHVybiBfX2JpbmRfc2VsZi5fYmluZChhcmdzLCBrd2FyZ3MsIHBhcnRpYWw9VHJ1ZSkKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICByZW5kZXJfa3dfb25seV9zZXBhcmF0b3IgPSBUcnVlCisgICAgICAgIGZvciBpZHgsIHBhcmFtIGluIGVudW1lcmF0ZShzZWxmLnBhcmFtZXRlcnMudmFsdWVzKCkpOgorICAgICAgICAgICAgZm9ybWF0dGVkID0gc3RyKHBhcmFtKQorCisgICAgICAgICAgICBraW5kID0gcGFyYW0ua2luZAorICAgICAgICAgICAgaWYga2luZCA9PSBfVkFSX1BPU0lUSU9OQUw6CisgICAgICAgICAgICAgICAgIyBPSywgd2UgaGF2ZSBhbiAnKmFyZ3MnLWxpa2UgcGFyYW1ldGVyLCBzbyB3ZSB3b24ndCBuZWVkCisgICAgICAgICAgICAgICAgIyBhICcqJyB0byBzZXBhcmF0ZSBrZXl3b3JkLW9ubHkgYXJndW1lbnRzCisgICAgICAgICAgICAgICAgcmVuZGVyX2t3X29ubHlfc2VwYXJhdG9yID0gRmFsc2UKKyAgICAgICAgICAgIGVsaWYga2luZCA9PSBfS0VZV09SRF9PTkxZIGFuZCByZW5kZXJfa3dfb25seV9zZXBhcmF0b3I6CisgICAgICAgICAgICAgICAgIyBXZSBoYXZlIGEga2V5d29yZC1vbmx5IHBhcmFtZXRlciB0byByZW5kZXIgYW5kIHdlIGhhdmVuJ3QKKyAgICAgICAgICAgICAgICAjIHJlbmRlcmVkIGFuICcqYXJncyctbGlrZSBwYXJhbWV0ZXIgYmVmb3JlLCBzbyBhZGQgYSAnKicKKyAgICAgICAgICAgICAgICAjIHNlcGFyYXRvciB0byB0aGUgcGFyYW1ldGVycyBsaXN0ICgiZm9vKGFyZzEsICosIGFyZzIpIiBjYXNlKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyonKQorICAgICAgICAgICAgICAgICMgVGhpcyBjb25kaXRpb24gc2hvdWxkIGJlIG9ubHkgdHJpZ2dlcmVkIG9uY2UsIHNvCisgICAgICAgICAgICAgICAgIyByZXNldCB0aGUgZmxhZworICAgICAgICAgICAgICAgIHJlbmRlcl9rd19vbmx5X3NlcGFyYXRvciA9IEZhbHNlCisKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZm9ybWF0dGVkKQorCisgICAgICAgIHJlbmRlcmVkID0gJyh7fSknLmZvcm1hdCgnLCAnLmpvaW4ocmVzdWx0KSkKKworICAgICAgICBpZiBzZWxmLnJldHVybl9hbm5vdGF0aW9uIGlzIG5vdCBfZW1wdHk6CisgICAgICAgICAgICBhbm5vID0gZm9ybWF0YW5ub3RhdGlvbihzZWxmLnJldHVybl9hbm5vdGF0aW9uKQorICAgICAgICAgICAgcmVuZGVyZWQgKz0gJyAtPiB7fScuZm9ybWF0KGFubm8pCisKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVkCmRpZmYgLS1naXQgYS9MaWIvaW8ucHkgYi9MaWIvaW8ucHkKaW5kZXggNjNkMmIzMy4uYmRhNGRlZiAxMDA2NDQKLS0tIGEvTGliL2lvLnB5CisrKyBiL0xpYi9pby5weQpAQCAtNTgsNiArNTgsOSBAQAogCiBPcGVuV3JhcHBlciA9IF9pby5vcGVuICMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBfcHlpbwogCisjIFByZXRlbmQgdGhpcyBleGNlcHRpb24gd2FzIGNyZWF0ZWQgaGVyZS4KK1Vuc3VwcG9ydGVkT3BlcmF0aW9uLl9fbW9kdWxlX18gPSAiaW8iCisKICMgZm9yIHNlZWsoKQogU0VFS19TRVQgPSAwCiBTRUVLX0NVUiA9IDEKZGlmZiAtLWdpdCBhL0xpYi9pcGFkZHJlc3MucHkgYi9MaWIvaXBhZGRyZXNzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5YjNmNzQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaXBhZGRyZXNzLnB5CkBAIC0wLDAgKzEsMjA5NCBAQAorIyBDb3B5cmlnaHQgMjAwNyBHb29nbGUgSW5jLgorIyAgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgorCisiIiJBIGZhc3QsIGxpZ2h0d2VpZ2h0IElQdjQvSVB2NiBtYW5pcHVsYXRpb24gbGlicmFyeSBpbiBQeXRob24uCisKK1RoaXMgbGlicmFyeSBpcyB1c2VkIHRvIGNyZWF0ZS9wb2tlL21hbmlwdWxhdGUgSVB2NCBhbmQgSVB2NiBhZGRyZXNzZXMKK2FuZCBuZXR3b3Jrcy4KKworIiIiCisKK19fdmVyc2lvbl9fID0gJzEuMCcKKworCitpbXBvcnQgZnVuY3Rvb2xzCisKK0lQVjRMRU5HVEggPSAzMgorSVBWNkxFTkdUSCA9IDEyOAorCitjbGFzcyBBZGRyZXNzVmFsdWVFcnJvcihWYWx1ZUVycm9yKToKKyAgICAiIiJBIFZhbHVlIEVycm9yIHJlbGF0ZWQgdG8gdGhlIGFkZHJlc3MuIiIiCisKKworY2xhc3MgTmV0bWFza1ZhbHVlRXJyb3IoVmFsdWVFcnJvcik6CisgICAgIiIiQSBWYWx1ZSBFcnJvciByZWxhdGVkIHRvIHRoZSBuZXRtYXNrLiIiIgorCisKK2RlZiBpcF9hZGRyZXNzKGFkZHJlc3MpOgorICAgICIiIlRha2UgYW4gSVAgc3RyaW5nL2ludCBhbmQgcmV0dXJuIGFuIG9iamVjdCBvZiB0aGUgY29ycmVjdCB0eXBlLgorCisgICAgQXJnczoKKyAgICAgICAgYWRkcmVzczogQSBzdHJpbmcgb3IgaW50ZWdlciwgdGhlIElQIGFkZHJlc3MuICBFaXRoZXIgSVB2NCBvcgorICAgICAgICAgIElQdjYgYWRkcmVzc2VzIG1heSBiZSBzdXBwbGllZDsgaW50ZWdlcnMgbGVzcyB0aGFuIDIqKjMyIHdpbGwKKyAgICAgICAgICBiZSBjb25zaWRlcmVkIHRvIGJlIElQdjQgYnkgZGVmYXVsdC4KKworICAgIFJldHVybnM6CisgICAgICAgIEFuIElQdjRBZGRyZXNzIG9yIElQdjZBZGRyZXNzIG9iamVjdC4KKworICAgIFJhaXNlczoKKyAgICAgICAgVmFsdWVFcnJvcjogaWYgdGhlICphZGRyZXNzKiBwYXNzZWQgaXNuJ3QgZWl0aGVyIGEgdjQgb3IgYSB2NgorICAgICAgICAgIGFkZHJlc3MKKworICAgICIiIgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIElQdjRBZGRyZXNzKGFkZHJlc3MpCisgICAgZXhjZXB0IChBZGRyZXNzVmFsdWVFcnJvciwgTmV0bWFza1ZhbHVlRXJyb3IpOgorICAgICAgICBwYXNzCisKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBJUHY2QWRkcmVzcyhhZGRyZXNzKQorICAgIGV4Y2VwdCAoQWRkcmVzc1ZhbHVlRXJyb3IsIE5ldG1hc2tWYWx1ZUVycm9yKToKKyAgICAgICAgcGFzcworCisgICAgcmFpc2UgVmFsdWVFcnJvcignJXIgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGFuIElQdjQgb3IgSVB2NiBhZGRyZXNzJyAlCisgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzKQorCisKK2RlZiBpcF9uZXR3b3JrKGFkZHJlc3MsIHN0cmljdD1UcnVlKToKKyAgICAiIiJUYWtlIGFuIElQIHN0cmluZy9pbnQgYW5kIHJldHVybiBhbiBvYmplY3Qgb2YgdGhlIGNvcnJlY3QgdHlwZS4KKworICAgIEFyZ3M6CisgICAgICAgIGFkZHJlc3M6IEEgc3RyaW5nIG9yIGludGVnZXIsIHRoZSBJUCBuZXR3b3JrLiAgRWl0aGVyIElQdjQgb3IKKyAgICAgICAgICBJUHY2IG5ldHdvcmtzIG1heSBiZSBzdXBwbGllZDsgaW50ZWdlcnMgbGVzcyB0aGFuIDIqKjMyIHdpbGwKKyAgICAgICAgICBiZSBjb25zaWRlcmVkIHRvIGJlIElQdjQgYnkgZGVmYXVsdC4KKworICAgIFJldHVybnM6CisgICAgICAgIEFuIElQdjROZXR3b3JrIG9yIElQdjZOZXR3b3JrIG9iamVjdC4KKworICAgIFJhaXNlczoKKyAgICAgICAgVmFsdWVFcnJvcjogaWYgdGhlIHN0cmluZyBwYXNzZWQgaXNuJ3QgZWl0aGVyIGEgdjQgb3IgYSB2NgorICAgICAgICAgIGFkZHJlc3MuIE9yIGlmIHRoZSBuZXR3b3JrIGhhcyBob3N0IGJpdHMgc2V0LgorCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gSVB2NE5ldHdvcmsoYWRkcmVzcywgc3RyaWN0KQorICAgIGV4Y2VwdCAoQWRkcmVzc1ZhbHVlRXJyb3IsIE5ldG1hc2tWYWx1ZUVycm9yKToKKyAgICAgICAgcGFzcworCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gSVB2Nk5ldHdvcmsoYWRkcmVzcywgc3RyaWN0KQorICAgIGV4Y2VwdCAoQWRkcmVzc1ZhbHVlRXJyb3IsIE5ldG1hc2tWYWx1ZUVycm9yKToKKyAgICAgICAgcGFzcworCisgICAgcmFpc2UgVmFsdWVFcnJvcignJXIgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGFuIElQdjQgb3IgSVB2NiBuZXR3b3JrJyAlCisgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzKQorCisKK2RlZiBpcF9pbnRlcmZhY2UoYWRkcmVzcyk6CisgICAgIiIiVGFrZSBhbiBJUCBzdHJpbmcvaW50IGFuZCByZXR1cm4gYW4gb2JqZWN0IG9mIHRoZSBjb3JyZWN0IHR5cGUuCisKKyAgICBBcmdzOgorICAgICAgICBhZGRyZXNzOiBBIHN0cmluZyBvciBpbnRlZ2VyLCB0aGUgSVAgYWRkcmVzcy4gIEVpdGhlciBJUHY0IG9yCisgICAgICAgICAgSVB2NiBhZGRyZXNzZXMgbWF5IGJlIHN1cHBsaWVkOyBpbnRlZ2VycyBsZXNzIHRoYW4gMioqMzIgd2lsbAorICAgICAgICAgIGJlIGNvbnNpZGVyZWQgdG8gYmUgSVB2NCBieSBkZWZhdWx0LgorCisgICAgUmV0dXJuczoKKyAgICAgICAgQW4gSVB2NEludGVyZmFjZSBvciBJUHY2SW50ZXJmYWNlIG9iamVjdC4KKworICAgIFJhaXNlczoKKyAgICAgICAgVmFsdWVFcnJvcjogaWYgdGhlIHN0cmluZyBwYXNzZWQgaXNuJ3QgZWl0aGVyIGEgdjQgb3IgYSB2NgorICAgICAgICAgIGFkZHJlc3MuCisKKyAgICBOb3RlczoKKyAgICAgICAgVGhlIElQdj9JbnRlcmZhY2UgY2xhc3NlcyBkZXNjcmliZSBhbiBBZGRyZXNzIG9uIGEgcGFydGljdWxhcgorICAgICAgICBOZXR3b3JrLCBzbyB0aGV5J3JlIGJhc2ljYWxseSBhIGNvbWJpbmF0aW9uIG9mIGJvdGggdGhlIEFkZHJlc3MKKyAgICAgICAgYW5kIE5ldHdvcmsgY2xhc3Nlcy4KKworICAgICIiIgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIElQdjRJbnRlcmZhY2UoYWRkcmVzcykKKyAgICBleGNlcHQgKEFkZHJlc3NWYWx1ZUVycm9yLCBOZXRtYXNrVmFsdWVFcnJvcik6CisgICAgICAgIHBhc3MKKworICAgIHRyeToKKyAgICAgICAgcmV0dXJuIElQdjZJbnRlcmZhY2UoYWRkcmVzcykKKyAgICBleGNlcHQgKEFkZHJlc3NWYWx1ZUVycm9yLCBOZXRtYXNrVmFsdWVFcnJvcik6CisgICAgICAgIHBhc3MKKworICAgIHJhaXNlIFZhbHVlRXJyb3IoJyVyIGRvZXMgbm90IGFwcGVhciB0byBiZSBhbiBJUHY0IG9yIElQdjYgaW50ZXJmYWNlJyAlCisgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzKQorCisKK2RlZiB2NF9pbnRfdG9fcGFja2VkKGFkZHJlc3MpOgorICAgICIiIlJlcHJlc2VudCBhbiBhZGRyZXNzIGFzIDQgcGFja2VkIGJ5dGVzIGluIG5ldHdvcmsgKGJpZy1lbmRpYW4pIG9yZGVyLgorCisgICAgQXJnczoKKyAgICAgICAgYWRkcmVzczogQW4gaW50ZWdlciByZXByZXNlbnRhdGlvbiBvZiBhbiBJUHY0IElQIGFkZHJlc3MuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBUaGUgaW50ZWdlciBhZGRyZXNzIHBhY2tlZCBhcyA0IGJ5dGVzIGluIG5ldHdvcmsgKGJpZy1lbmRpYW4pIG9yZGVyLgorCisgICAgUmFpc2VzOgorICAgICAgICBWYWx1ZUVycm9yOiBJZiB0aGUgaW50ZWdlciBpcyBuZWdhdGl2ZSBvciB0b28gbGFyZ2UgdG8gYmUgYW4KKyAgICAgICAgICBJUHY0IElQIGFkZHJlc3MuCisKKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBhZGRyZXNzLnRvX2J5dGVzKDQsICdiaWcnKQorICAgIGV4Y2VwdDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQWRkcmVzcyBuZWdhdGl2ZSBvciB0b28gbGFyZ2UgZm9yIElQdjQiKQorCisKK2RlZiB2Nl9pbnRfdG9fcGFja2VkKGFkZHJlc3MpOgorICAgICIiIlJlcHJlc2VudCBhbiBhZGRyZXNzIGFzIDE2IHBhY2tlZCBieXRlcyBpbiBuZXR3b3JrIChiaWctZW5kaWFuKSBvcmRlci4KKworICAgIEFyZ3M6CisgICAgICAgIGFkZHJlc3M6IEFuIGludGVnZXIgcmVwcmVzZW50YXRpb24gb2YgYW4gSVB2NiBJUCBhZGRyZXNzLgorCisgICAgUmV0dXJuczoKKyAgICAgICAgVGhlIGludGVnZXIgYWRkcmVzcyBwYWNrZWQgYXMgMTYgYnl0ZXMgaW4gbmV0d29yayAoYmlnLWVuZGlhbikgb3JkZXIuCisKKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBhZGRyZXNzLnRvX2J5dGVzKDE2LCAnYmlnJykKKyAgICBleGNlcHQ6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFkZHJlc3MgbmVnYXRpdmUgb3IgdG9vIGxhcmdlIGZvciBJUHY2IikKKworCitkZWYgX3NwbGl0X29wdGlvbmFsX25ldG1hc2soYWRkcmVzcyk6CisgICAgIiIiSGVscGVyIHRvIHNwbGl0IHRoZSBuZXRtYXNrIGFuZCByYWlzZSBBZGRyZXNzVmFsdWVFcnJvciBpZiBuZWVkZWQiIiIKKyAgICBhZGRyID0gc3RyKGFkZHJlc3MpLnNwbGl0KCcvJykKKyAgICBpZiBsZW4oYWRkcikgPiAyOgorICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiT25seSBvbmUgJy8nIHBlcm1pdHRlZCBpbiAlciIgJSBhZGRyZXNzKQorICAgIHJldHVybiBhZGRyCisKKworZGVmIF9maW5kX2FkZHJlc3NfcmFuZ2UoYWRkcmVzc2VzKToKKyAgICAiIiJGaW5kIGEgc2VxdWVuY2Ugb2YgSVB2I0FkZHJlc3MuCisKKyAgICBBcmdzOgorICAgICAgICBhZGRyZXNzZXM6IGEgbGlzdCBvZiBJUHYjQWRkcmVzcyBvYmplY3RzLgorCisgICAgUmV0dXJuczoKKyAgICAgICAgQSB0dXBsZSBjb250YWluaW5nIHRoZSBmaXJzdCBhbmQgbGFzdCBJUCBhZGRyZXNzZXMgaW4gdGhlIHNlcXVlbmNlLgorCisgICAgIiIiCisgICAgZmlyc3QgPSBsYXN0ID0gYWRkcmVzc2VzWzBdCisgICAgZm9yIGlwIGluIGFkZHJlc3Nlc1sxOl06CisgICAgICAgIGlmIGlwLl9pcCA9PSBsYXN0Ll9pcCArIDE6CisgICAgICAgICAgICBsYXN0ID0gaXAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJyZWFrCisgICAgcmV0dXJuIChmaXJzdCwgbGFzdCkKKworCitkZWYgX2NvdW50X3JpZ2h0aGFuZF96ZXJvX2JpdHMobnVtYmVyLCBiaXRzKToKKyAgICAiIiJDb3VudCB0aGUgbnVtYmVyIG9mIHplcm8gYml0cyBvbiB0aGUgcmlnaHQgaGFuZCBzaWRlLgorCisgICAgQXJnczoKKyAgICAgICAgbnVtYmVyOiBhbiBpbnRlZ2VyLgorICAgICAgICBiaXRzOiBtYXhpbXVtIG51bWJlciBvZiBiaXRzIHRvIGNvdW50LgorCisgICAgUmV0dXJuczoKKyAgICAgICAgVGhlIG51bWJlciBvZiB6ZXJvIGJpdHMgb24gdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiB0aGUgbnVtYmVyLgorCisgICAgIiIiCisgICAgaWYgbnVtYmVyID09IDA6CisgICAgICAgIHJldHVybiBiaXRzCisgICAgZm9yIGkgaW4gcmFuZ2UoYml0cyk6CisgICAgICAgIGlmIChudW1iZXIgPj4gaSkgJiAxOgorICAgICAgICAgICAgcmV0dXJuIGkKKyAgICAjIEFsbCBiaXRzIG9mIGludGVyZXN0IHdlcmUgemVybywgZXZlbiBpZiB0aGVyZSBhcmUgbW9yZSBpbiB0aGUgbnVtYmVyCisgICAgcmV0dXJuIGJpdHMKKworCitkZWYgc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2UoZmlyc3QsIGxhc3QpOgorICAgICIiIlN1bW1hcml6ZSBhIG5ldHdvcmsgcmFuZ2UgZ2l2ZW4gdGhlIGZpcnN0IGFuZCBsYXN0IElQIGFkZHJlc3Nlcy4KKworICAgIEV4YW1wbGU6CisgICAgICAgID4+PiBsaXN0KHN1bW1hcml6ZV9hZGRyZXNzX3JhbmdlKElQdjRBZGRyZXNzKCcxOTIuMC4yLjAnKSwKKyAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTMwJykpKQorICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKKyAgICAgICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjUnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzMxJyksCisgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi4xMzAvMzInKV0KKworICAgIEFyZ3M6CisgICAgICAgIGZpcnN0OiB0aGUgZmlyc3QgSVB2NEFkZHJlc3Mgb3IgSVB2NkFkZHJlc3MgaW4gdGhlIHJhbmdlLgorICAgICAgICBsYXN0OiB0aGUgbGFzdCBJUHY0QWRkcmVzcyBvciBJUHY2QWRkcmVzcyBpbiB0aGUgcmFuZ2UuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBBbiBpdGVyYXRvciBvZiB0aGUgc3VtbWFyaXplZCBJUHYoNHw2KSBuZXR3b3JrIG9iamVjdHMuCisKKyAgICBSYWlzZToKKyAgICAgICAgVHlwZUVycm9yOgorICAgICAgICAgICAgSWYgdGhlIGZpcnN0IGFuZCBsYXN0IG9iamVjdHMgYXJlIG5vdCBJUCBhZGRyZXNzZXMuCisgICAgICAgICAgICBJZiB0aGUgZmlyc3QgYW5kIGxhc3Qgb2JqZWN0cyBhcmUgbm90IHRoZSBzYW1lIHZlcnNpb24uCisgICAgICAgIFZhbHVlRXJyb3I6CisgICAgICAgICAgICBJZiB0aGUgbGFzdCBvYmplY3QgaXMgbm90IGdyZWF0ZXIgdGhhbiB0aGUgZmlyc3QuCisgICAgICAgICAgICBJZiB0aGUgdmVyc2lvbiBvZiB0aGUgZmlyc3QgYWRkcmVzcyBpcyBub3QgNCBvciA2LgorCisgICAgIiIiCisgICAgaWYgKG5vdCAoaXNpbnN0YW5jZShmaXJzdCwgX0Jhc2VBZGRyZXNzKSBhbmQKKyAgICAgICAgICAgICBpc2luc3RhbmNlKGxhc3QsIF9CYXNlQWRkcmVzcykpKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdmaXJzdCBhbmQgbGFzdCBtdXN0IGJlIElQIGFkZHJlc3Nlcywgbm90IG5ldHdvcmtzJykKKyAgICBpZiBmaXJzdC52ZXJzaW9uICE9IGxhc3QudmVyc2lvbjoKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB2ZXJzaW9uIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCwgbGFzdCkpCisgICAgaWYgZmlyc3QgPiBsYXN0OgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdsYXN0IElQIGFkZHJlc3MgbXVzdCBiZSBncmVhdGVyIHRoYW4gZmlyc3QnKQorCisgICAgaWYgZmlyc3QudmVyc2lvbiA9PSA0OgorICAgICAgICBpcCA9IElQdjROZXR3b3JrCisgICAgZWxpZiBmaXJzdC52ZXJzaW9uID09IDY6CisgICAgICAgIGlwID0gSVB2Nk5ldHdvcmsKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd1bmtub3duIElQIHZlcnNpb24nKQorCisgICAgaXBfYml0cyA9IGZpcnN0Ll9tYXhfcHJlZml4bGVuCisgICAgZmlyc3RfaW50ID0gZmlyc3QuX2lwCisgICAgbGFzdF9pbnQgPSBsYXN0Ll9pcAorICAgIHdoaWxlIGZpcnN0X2ludCA8PSBsYXN0X2ludDoKKyAgICAgICAgbmJpdHMgPSBtaW4oX2NvdW50X3JpZ2h0aGFuZF96ZXJvX2JpdHMoZmlyc3RfaW50LCBpcF9iaXRzKSwKKyAgICAgICAgICAgICAgICAgICAgKGxhc3RfaW50IC0gZmlyc3RfaW50ICsgMSkuYml0X2xlbmd0aCgpIC0gMSkKKyAgICAgICAgbmV0ID0gaXAoJyVzLyVkJyAlIChmaXJzdCwgaXBfYml0cyAtIG5iaXRzKSkKKyAgICAgICAgeWllbGQgbmV0CisgICAgICAgIGZpcnN0X2ludCArPSAxIDw8IG5iaXRzCisgICAgICAgIGlmIGZpcnN0X2ludCAtIDEgPT0gaXAuX0FMTF9PTkVTOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZmlyc3QgPSBmaXJzdC5fX2NsYXNzX18oZmlyc3RfaW50KQorCisKK2RlZiBfY29sbGFwc2VfYWRkcmVzc2VzX3JlY3Vyc2l2ZShhZGRyZXNzZXMpOgorICAgICIiIkxvb3BzIHRocm91Z2ggdGhlIGFkZHJlc3NlcywgY29sbGFwc2luZyBjb25jdXJyZW50IG5ldGJsb2Nrcy4KKworICAgIEV4YW1wbGU6CisKKyAgICAgICAgaXAxID0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNicpCisgICAgICAgIGlwMiA9IElQdjROZXR3b3JrKCcxOTIuMC4yLjY0LzI2JykKKyAgICAgICAgaXAzID0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI2JykKKyAgICAgICAgaXA0ID0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTkyLzI2JykKKworICAgICAgICBfY29sbGFwc2VfYWRkcmVzc2VzX3JlY3Vyc2l2ZShbaXAxLCBpcDIsIGlwMywgaXA0XSkgLT4KKyAgICAgICAgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpXQorCisgICAgICAgIFRoaXMgc2hvdWxkbid0IGJlIGNhbGxlZCBkaXJlY3RseTsgaXQgaXMgY2FsbGVkIHZpYQorICAgICAgICAgIGNvbGxhcHNlX2FkZHJlc3NlcyhbXSkuCisKKyAgICBBcmdzOgorICAgICAgICBhZGRyZXNzZXM6IEEgbGlzdCBvZiBJUHY0TmV0d29yaydzIG9yIElQdjZOZXR3b3JrJ3MKKworICAgIFJldHVybnM6CisgICAgICAgIEEgbGlzdCBvZiBJUHY0TmV0d29yaydzIG9yIElQdjZOZXR3b3JrJ3MgZGVwZW5kaW5nIG9uIHdoYXQgd2Ugd2VyZQorICAgICAgICBwYXNzZWQuCisKKyAgICAiIiIKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBsYXN0X2FkZHIgPSBOb25lCisgICAgICAgIHJldF9hcnJheSA9IFtdCisgICAgICAgIG9wdGltaXplZCA9IEZhbHNlCisKKyAgICAgICAgZm9yIGN1cl9hZGRyIGluIGFkZHJlc3NlczoKKyAgICAgICAgICAgIGlmIG5vdCByZXRfYXJyYXk6CisgICAgICAgICAgICAgICAgbGFzdF9hZGRyID0gY3VyX2FkZHIKKyAgICAgICAgICAgICAgICByZXRfYXJyYXkuYXBwZW5kKGN1cl9hZGRyKQorICAgICAgICAgICAgZWxpZiAoY3VyX2FkZHIubmV0d29ya19hZGRyZXNzID49IGxhc3RfYWRkci5uZXR3b3JrX2FkZHJlc3MgYW5kCisgICAgICAgICAgICAgICAgY3VyX2FkZHIuYnJvYWRjYXN0X2FkZHJlc3MgPD0gbGFzdF9hZGRyLmJyb2FkY2FzdF9hZGRyZXNzKToKKyAgICAgICAgICAgICAgICBvcHRpbWl6ZWQgPSBUcnVlCisgICAgICAgICAgICBlbGlmIGN1cl9hZGRyID09IGxpc3QobGFzdF9hZGRyLnN1cGVybmV0KCkuc3VibmV0cygpKVsxXToKKyAgICAgICAgICAgICAgICByZXRfYXJyYXlbLTFdID0gbGFzdF9hZGRyID0gbGFzdF9hZGRyLnN1cGVybmV0KCkKKyAgICAgICAgICAgICAgICBvcHRpbWl6ZWQgPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxhc3RfYWRkciA9IGN1cl9hZGRyCisgICAgICAgICAgICAgICAgcmV0X2FycmF5LmFwcGVuZChjdXJfYWRkcikKKworICAgICAgICBhZGRyZXNzZXMgPSByZXRfYXJyYXkKKyAgICAgICAgaWYgbm90IG9wdGltaXplZDoKKyAgICAgICAgICAgIHJldHVybiBhZGRyZXNzZXMKKworCitkZWYgY29sbGFwc2VfYWRkcmVzc2VzKGFkZHJlc3Nlcyk6CisgICAgIiIiQ29sbGFwc2UgYSBsaXN0IG9mIElQIG9iamVjdHMuCisKKyAgICBFeGFtcGxlOgorICAgICAgICBjb2xsYXBzZV9hZGRyZXNzZXMoW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjUnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMjUnKV0pIC0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpXQorCisgICAgQXJnczoKKyAgICAgICAgYWRkcmVzc2VzOiBBbiBpdGVyYXRvciBvZiBJUHY0TmV0d29yayBvciBJUHY2TmV0d29yayBvYmplY3RzLgorCisgICAgUmV0dXJuczoKKyAgICAgICAgQW4gaXRlcmF0b3Igb2YgdGhlIGNvbGxhcHNlZCBJUHYoNHw2KU5ldHdvcmsgb2JqZWN0cy4KKworICAgIFJhaXNlczoKKyAgICAgICAgVHlwZUVycm9yOiBJZiBwYXNzZWQgYSBsaXN0IG9mIG1peGVkIHZlcnNpb24gb2JqZWN0cy4KKworICAgICIiIgorICAgIGkgPSAwCisgICAgYWRkcnMgPSBbXQorICAgIGlwcyA9IFtdCisgICAgbmV0cyA9IFtdCisKKyAgICAjIHNwbGl0IElQIGFkZHJlc3NlcyBhbmQgbmV0d29ya3MKKyAgICBmb3IgaXAgaW4gYWRkcmVzc2VzOgorICAgICAgICBpZiBpc2luc3RhbmNlKGlwLCBfQmFzZUFkZHJlc3MpOgorICAgICAgICAgICAgaWYgaXBzIGFuZCBpcHNbLTFdLl92ZXJzaW9uICE9IGlwLl92ZXJzaW9uOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdmVyc2lvbiIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcCwgaXBzWy0xXSkpCisgICAgICAgICAgICBpcHMuYXBwZW5kKGlwKQorICAgICAgICBlbGlmIGlwLl9wcmVmaXhsZW4gPT0gaXAuX21heF9wcmVmaXhsZW46CisgICAgICAgICAgICBpZiBpcHMgYW5kIGlwc1stMV0uX3ZlcnNpb24gIT0gaXAuX3ZlcnNpb246CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB2ZXJzaW9uIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLCBpcHNbLTFdKSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpcHMuYXBwZW5kKGlwLmlwKQorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgIGlwcy5hcHBlbmQoaXAubmV0d29ya19hZGRyZXNzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbmV0cyBhbmQgbmV0c1stMV0uX3ZlcnNpb24gIT0gaXAuX3ZlcnNpb246CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB2ZXJzaW9uIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLCBuZXRzWy0xXSkpCisgICAgICAgICAgICBuZXRzLmFwcGVuZChpcCkKKworICAgICMgc29ydCBhbmQgZGVkdXAKKyAgICBpcHMgPSBzb3J0ZWQoc2V0KGlwcykpCisgICAgbmV0cyA9IHNvcnRlZChzZXQobmV0cykpCisKKyAgICB3aGlsZSBpIDwgbGVuKGlwcyk6CisgICAgICAgIChmaXJzdCwgbGFzdCkgPSBfZmluZF9hZGRyZXNzX3JhbmdlKGlwc1tpOl0pCisgICAgICAgIGkgPSBpcHMuaW5kZXgobGFzdCkgKyAxCisgICAgICAgIGFkZHJzLmV4dGVuZChzdW1tYXJpemVfYWRkcmVzc19yYW5nZShmaXJzdCwgbGFzdCkpCisKKyAgICByZXR1cm4gaXRlcihfY29sbGFwc2VfYWRkcmVzc2VzX3JlY3Vyc2l2ZShzb3J0ZWQoCisgICAgICAgIGFkZHJzICsgbmV0cywga2V5PV9CYXNlTmV0d29yay5fZ2V0X25ldHdvcmtzX2tleSkpKQorCisKK2RlZiBnZXRfbWl4ZWRfdHlwZV9rZXkob2JqKToKKyAgICAiIiJSZXR1cm4gYSBrZXkgc3VpdGFibGUgZm9yIHNvcnRpbmcgYmV0d2VlbiBuZXR3b3JrcyBhbmQgYWRkcmVzc2VzLgorCisgICAgQWRkcmVzcyBhbmQgTmV0d29yayBvYmplY3RzIGFyZSBub3Qgc29ydGFibGUgYnkgZGVmYXVsdDsgdGhleSdyZQorICAgIGZ1bmRhbWVudGFsbHkgZGlmZmVyZW50IHNvIHRoZSBleHByZXNzaW9uCisKKyAgICAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMCcpIDw9IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorCisgICAgZG9lc24ndCBtYWtlIGFueSBzZW5zZS4gIFRoZXJlIGFyZSBzb21lIHRpbWVzIGhvd2V2ZXIsIHdoZXJlIHlvdSBtYXkgd2lzaAorICAgIHRvIGhhdmUgaXBhZGRyZXNzIHNvcnQgdGhlc2UgZm9yIHlvdSBhbnl3YXkuIElmIHlvdSBuZWVkIHRvIGRvIHRoaXMsIHlvdQorICAgIGNhbiB1c2UgdGhpcyBmdW5jdGlvbiBhcyB0aGUga2V5PSBhcmd1bWVudCB0byBzb3J0ZWQoKS4KKworICAgIEFyZ3M6CisgICAgICBvYmo6IGVpdGhlciBhIE5ldHdvcmsgb3IgQWRkcmVzcyBvYmplY3QuCisgICAgUmV0dXJuczoKKyAgICAgIGFwcHJvcHJpYXRlIGtleS4KKworICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBfQmFzZU5ldHdvcmspOgorICAgICAgICByZXR1cm4gb2JqLl9nZXRfbmV0d29ya3Nfa2V5KCkKKyAgICBlbGlmIGlzaW5zdGFuY2Uob2JqLCBfQmFzZUFkZHJlc3MpOgorICAgICAgICByZXR1cm4gb2JqLl9nZXRfYWRkcmVzc19rZXkoKQorICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisKK2NsYXNzIF9Ub3RhbE9yZGVyaW5nTWl4aW46CisgICAgIyBIZWxwZXIgdGhhdCBkZXJpdmVzIHRoZSBvdGhlciBjb21wYXJpc29uIG9wZXJhdGlvbnMgZnJvbQorICAgICMgX19sdF9fIGFuZCBfX2VxX18KKyAgICAjIFdlIGF2b2lkIGZ1bmN0b29scy50b3RhbF9vcmRlcmluZyBiZWNhdXNlIGl0IGRvZXNuJ3QgaGFuZGxlCisgICAgIyBOb3RJbXBsZW1lbnRlZCBjb3JyZWN0bHkgeWV0IChodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTAwNDIpCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgZXF1YWwgPSBzZWxmLl9fZXFfXyhvdGhlcikKKyAgICAgICAgaWYgZXF1YWwgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG5vdCBlcXVhbAorICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGxlc3MgPSBzZWxmLl9fbHRfXyhvdGhlcikKKyAgICAgICAgaWYgbGVzcyBpcyBOb3RJbXBsZW1lbnRlZCBvciBub3QgbGVzczoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9fZXFfXyhvdGhlcikKKyAgICAgICAgcmV0dXJuIGxlc3MKKyAgICBkZWYgX19ndF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgbGVzcyA9IHNlbGYuX19sdF9fKG90aGVyKQorICAgICAgICBpZiBsZXNzIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIGVxdWFsID0gc2VsZi5fX2VxX18ob3RoZXIpCisgICAgICAgIGlmIGVxdWFsIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBub3QgKGxlc3Mgb3IgZXF1YWwpCisgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGxlc3MgPSBzZWxmLl9fbHRfXyhvdGhlcikKKyAgICAgICAgaWYgbGVzcyBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gbm90IGxlc3MKKworY2xhc3MgX0lQQWRkcmVzc0Jhc2UoX1RvdGFsT3JkZXJpbmdNaXhpbik6CisKKyAgICAiIiJUaGUgbW90aGVyIGNsYXNzLiIiIgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGV4cGxvZGVkKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGxvbmdoYW5kIHZlcnNpb24gb2YgdGhlIElQIGFkZHJlc3MgYXMgYSBzdHJpbmcuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9leHBsb2RlX3Nob3J0aGFuZF9pcF9zdHJpbmcoKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbXByZXNzZWQoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgc2hvcnRoYW5kIHZlcnNpb24gb2YgdGhlIElQIGFkZHJlc3MgYXMgYSBzdHJpbmcuIiIiCisgICAgICAgIHJldHVybiBzdHIoc2VsZikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2ZXJzaW9uKHNlbGYpOgorICAgICAgICBtc2cgPSAnJTIwMHMgaGFzIG5vIHZlcnNpb24gc3BlY2lmaWVkJyAlICh0eXBlKHNlbGYpLCkKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihtc2cpCisKKyAgICBkZWYgX2NoZWNrX2ludF9hZGRyZXNzKHNlbGYsIGFkZHJlc3MpOgorICAgICAgICBpZiBhZGRyZXNzIDwgMDoKKyAgICAgICAgICAgIG1zZyA9ICIlZCAoPCAwKSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdiVkIGFkZHJlc3MiCisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSAoYWRkcmVzcywgc2VsZi5fdmVyc2lvbikpCisgICAgICAgIGlmIGFkZHJlc3MgPiBzZWxmLl9BTExfT05FUzoKKyAgICAgICAgICAgIG1zZyA9ICIlZCAoPj0gMioqJWQpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2JWQgYWRkcmVzcyIKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIChhZGRyZXNzLCBzZWxmLl9tYXhfcHJlZml4bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24pKQorCisgICAgZGVmIF9jaGVja19wYWNrZWRfYWRkcmVzcyhzZWxmLCBhZGRyZXNzLCBleHBlY3RlZF9sZW4pOgorICAgICAgICBhZGRyZXNzX2xlbiA9IGxlbihhZGRyZXNzKQorICAgICAgICBpZiBhZGRyZXNzX2xlbiAhPSBleHBlY3RlZF9sZW46CisgICAgICAgICAgICBtc2cgPSAiJXIgKGxlbiAlZCAhPSAlZCkgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHYlZCBhZGRyZXNzIgorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgKGFkZHJlc3MsIGFkZHJlc3NfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2xlbiwgc2VsZi5fdmVyc2lvbikpCisKKyAgICBkZWYgX2lwX2ludF9mcm9tX3ByZWZpeChzZWxmLCBwcmVmaXhsZW49Tm9uZSk6CisgICAgICAgICIiIlR1cm4gdGhlIHByZWZpeCBsZW5ndGggbmV0bWFzayBpbnRvIGEgaW50IGZvciBjb21wYXJpc29uLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBwcmVmaXhsZW46IEFuIGludGVnZXIsIHRoZSBwcmVmaXggbGVuZ3RoLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBbiBpbnRlZ2VyLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBwcmVmaXhsZW4gaXMgTm9uZToKKyAgICAgICAgICAgIHByZWZpeGxlbiA9IHNlbGYuX3ByZWZpeGxlbgorICAgICAgICByZXR1cm4gc2VsZi5fQUxMX09ORVMgXiAoc2VsZi5fQUxMX09ORVMgPj4gcHJlZml4bGVuKQorCisgICAgZGVmIF9wcmVmaXhfZnJvbV9pcF9pbnQoc2VsZiwgaXBfaW50LCBtYXNrPTMyKToKKyAgICAgICAgIiIiUmV0dXJuIHByZWZpeCBsZW5ndGggZnJvbSB0aGUgZGVjaW1hbCBuZXRtYXNrLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBpcF9pbnQ6IEFuIGludGVnZXIsIHRoZSBJUCBhZGRyZXNzLgorICAgICAgICAgICAgbWFzazogVGhlIG5ldG1hc2suICBEZWZhdWx0cyB0byAzMi4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQW4gaW50ZWdlciwgdGhlIHByZWZpeCBsZW5ndGguCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBtYXNrIC0gX2NvdW50X3JpZ2h0aGFuZF96ZXJvX2JpdHMoaXBfaW50LCBtYXNrKQorCisgICAgZGVmIF9pcF9zdHJpbmdfZnJvbV9wcmVmaXgoc2VsZiwgcHJlZml4bGVuPU5vbmUpOgorICAgICAgICAiIiJUdXJuIGEgcHJlZml4IGxlbmd0aCBpbnRvIGEgZG90dGVkIGRlY2ltYWwgc3RyaW5nLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBwcmVmaXhsZW46IEFuIGludGVnZXIsIHRoZSBuZXRtYXNrIHByZWZpeCBsZW5ndGguCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgc3RyaW5nLCB0aGUgZG90dGVkIGRlY2ltYWwgbmV0bWFzayBzdHJpbmcuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBwcmVmaXhsZW46CisgICAgICAgICAgICBwcmVmaXhsZW4gPSBzZWxmLl9wcmVmaXhsZW4KKyAgICAgICAgcmV0dXJuIHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcF9pbnRfZnJvbV9wcmVmaXgocHJlZml4bGVuKSkKKworCitjbGFzcyBfQmFzZUFkZHJlc3MoX0lQQWRkcmVzc0Jhc2UpOgorCisgICAgIiIiQSBnZW5lcmljIElQIG9iamVjdC4KKworICAgIFRoaXMgSVAgY2xhc3MgY29udGFpbnMgdGhlIHZlcnNpb24gaW5kZXBlbmRlbnQgbWV0aG9kcyB3aGljaCBhcmUKKyAgICB1c2VkIGJ5IHNpbmdsZSBJUCBhZGRyZXNzZXMuCisKKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKyAgICAgICAgaWYgKG5vdCBpc2luc3RhbmNlKGFkZHJlc3MsIGJ5dGVzKQorICAgICAgICAgICAgYW5kICcvJyBpbiBzdHIoYWRkcmVzcykpOgorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoIlVuZXhwZWN0ZWQgJy8nIGluICVyIiAlIGFkZHJlc3MpCisKKyAgICBkZWYgX19pbnRfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lwCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIChzZWxmLl9pcCA9PSBvdGhlci5faXAKKyAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGYuX3ZlcnNpb24gPT0gb3RoZXIuX3ZlcnNpb24pCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIHNlbGYuX3ZlcnNpb24gIT0gb3RoZXIuX3ZlcnNpb246CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzIGFuZCAlcyBhcmUgbm90IG9mIHRoZSBzYW1lIHZlcnNpb24nICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBvdGhlcikpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBfQmFzZUFkZHJlc3MpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB0eXBlJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgb3RoZXIpKQorICAgICAgICBpZiBzZWxmLl9pcCAhPSBvdGhlci5faXA6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5faXAgPCBvdGhlci5faXAKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAjIFNob3J0aGFuZCBmb3IgSW50ZWdlciBhZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24uIFRoaXMgaXMgbm90CisgICAgIyBtZWFudCB0byBldmVyIHN1cHBvcnQgYWRkaXRpb24vc3VidHJhY3Rpb24gb2YgYWRkcmVzc2VzLgorICAgIGRlZiBfX2FkZF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIGludCk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKGludChzZWxmKSArIG90aGVyKQorCisgICAgZGVmIF9fc3ViX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgaW50KToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oaW50KHNlbGYpIC0gb3RoZXIpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMoJXIpJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3RyKHNlbGYpKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzdHIoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSkKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goaGV4KGludChzZWxmLl9pcCkpKQorCisgICAgZGVmIF9nZXRfYWRkcmVzc19rZXkoc2VsZik6CisgICAgICAgIHJldHVybiAoc2VsZi5fdmVyc2lvbiwgc2VsZikKKworCitjbGFzcyBfQmFzZU5ldHdvcmsoX0lQQWRkcmVzc0Jhc2UpOgorCisgICAgIiIiQSBnZW5lcmljIElQIG5ldHdvcmsgb2JqZWN0LgorCisgICAgVGhpcyBJUCBjbGFzcyBjb250YWlucyB0aGUgdmVyc2lvbiBpbmRlcGVuZGVudCBtZXRob2RzIHdoaWNoIGFyZQorICAgIHVzZWQgYnkgbmV0d29ya3MuCisKKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CisgICAgICAgIHNlbGYuX2NhY2hlID0ge30KKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcyglciknICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzdHIoc2VsZikpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lZCcgJSAoc2VsZi5uZXR3b3JrX2FkZHJlc3MsIHNlbGYucHJlZml4bGVuKQorCisgICAgZGVmIGhvc3RzKHNlbGYpOgorICAgICAgICAiIiJHZW5lcmF0ZSBJdGVyYXRvciBvdmVyIHVzYWJsZSBob3N0cyBpbiBhIG5ldHdvcmsuCisKKyAgICAgICAgVGhpcyBpcyBsaWtlIF9faXRlcl9fIGV4Y2VwdCBpdCBkb2Vzbid0IHJldHVybiB0aGUgbmV0d29yaworICAgICAgICBvciBicm9hZGNhc3QgYWRkcmVzc2VzLgorCisgICAgICAgICIiIgorICAgICAgICBuZXR3b3JrID0gaW50KHNlbGYubmV0d29ya19hZGRyZXNzKQorICAgICAgICBicm9hZGNhc3QgPSBpbnQoc2VsZi5icm9hZGNhc3RfYWRkcmVzcykKKyAgICAgICAgZm9yIHggaW4gcmFuZ2UobmV0d29yayArIDEsIGJyb2FkY2FzdCk6CisgICAgICAgICAgICB5aWVsZCBzZWxmLl9hZGRyZXNzX2NsYXNzKHgpCisKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgIG5ldHdvcmsgPSBpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpCisgICAgICAgIGJyb2FkY2FzdCA9IGludChzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKQorICAgICAgICBmb3IgeCBpbiByYW5nZShuZXR3b3JrLCBicm9hZGNhc3QgKyAxKToKKyAgICAgICAgICAgIHlpZWxkIHNlbGYuX2FkZHJlc3NfY2xhc3MoeCkKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBuKToKKyAgICAgICAgbmV0d29yayA9IGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykKKyAgICAgICAgYnJvYWRjYXN0ID0gaW50KHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MpCisgICAgICAgIGlmIG4gPj0gMDoKKyAgICAgICAgICAgIGlmIG5ldHdvcmsgKyBuID4gYnJvYWRjYXN0OgorICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9hZGRyZXNzX2NsYXNzKG5ldHdvcmsgKyBuKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbiArPSAxCisgICAgICAgICAgICBpZiBicm9hZGNhc3QgKyBuIDwgbmV0d29yazoKKyAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fYWRkcmVzc19jbGFzcyhicm9hZGNhc3QgKyBuKQorCisgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIHNlbGYuX3ZlcnNpb24gIT0gb3RoZXIuX3ZlcnNpb246CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzIGFuZCAlcyBhcmUgbm90IG9mIHRoZSBzYW1lIHZlcnNpb24nICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBvdGhlcikpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBfQmFzZU5ldHdvcmspOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB0eXBlJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgb3RoZXIpKQorICAgICAgICBpZiBzZWxmLm5ldHdvcmtfYWRkcmVzcyAhPSBvdGhlci5uZXR3b3JrX2FkZHJlc3M6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5uZXR3b3JrX2FkZHJlc3MgPCBvdGhlci5uZXR3b3JrX2FkZHJlc3MKKyAgICAgICAgaWYgc2VsZi5uZXRtYXNrICE9IG90aGVyLm5ldG1hc2s6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5uZXRtYXNrIDwgb3RoZXIubmV0bWFzaworICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gKHNlbGYuX3ZlcnNpb24gPT0gb3RoZXIuX3ZlcnNpb24gYW5kCisgICAgICAgICAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID09IG90aGVyLm5ldHdvcmtfYWRkcmVzcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYubmV0bWFzaykgPT0gaW50KG90aGVyLm5ldG1hc2spKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSBeIGludChzZWxmLm5ldG1hc2spKQorCisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICMgYWx3YXlzIGZhbHNlIGlmIG9uZSBpcyB2NCBhbmQgdGhlIG90aGVyIGlzIHY2LgorICAgICAgICBpZiBzZWxmLl92ZXJzaW9uICE9IG90aGVyLl92ZXJzaW9uOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICMgZGVhbGluZyB3aXRoIGFub3RoZXIgbmV0d29yay4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgX0Jhc2VOZXR3b3JrKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAjIGRlYWxpbmcgd2l0aCBhbm90aGVyIGFkZHJlc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgYWRkcmVzcworICAgICAgICAgICAgcmV0dXJuIChpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpIDw9IGludChvdGhlci5faXApIDw9CisgICAgICAgICAgICAgICAgICAgIGludChzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKSkKKworICAgIGRlZiBvdmVybGFwcyhzZWxmLCBvdGhlcik6CisgICAgICAgICIiIlRlbGwgaWYgc2VsZiBpcyBwYXJ0bHkgY29udGFpbmVkIGluIG90aGVyLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5uZXR3b3JrX2FkZHJlc3MgaW4gb3RoZXIgb3IgKAorICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcyBpbiBvdGhlciBvciAoCisgICAgICAgICAgICAgICAgb3RoZXIubmV0d29ya19hZGRyZXNzIGluIHNlbGYgb3IgKAorICAgICAgICAgICAgICAgICAgICBvdGhlci5icm9hZGNhc3RfYWRkcmVzcyBpbiBzZWxmKSkpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYnJvYWRjYXN0X2FkZHJlc3Moc2VsZik6CisgICAgICAgIHggPSBzZWxmLl9jYWNoZS5nZXQoJ2Jyb2FkY2FzdF9hZGRyZXNzJykKKyAgICAgICAgaWYgeCBpcyBOb25lOgorICAgICAgICAgICAgeCA9IHNlbGYuX2FkZHJlc3NfY2xhc3MoaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5ob3N0bWFzaykpCisgICAgICAgICAgICBzZWxmLl9jYWNoZVsnYnJvYWRjYXN0X2FkZHJlc3MnXSA9IHgKKyAgICAgICAgcmV0dXJuIHgKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBob3N0bWFzayhzZWxmKToKKyAgICAgICAgeCA9IHNlbGYuX2NhY2hlLmdldCgnaG9zdG1hc2snKQorICAgICAgICBpZiB4IGlzIE5vbmU6CisgICAgICAgICAgICB4ID0gc2VsZi5fYWRkcmVzc19jbGFzcyhpbnQoc2VsZi5uZXRtYXNrKSBeIHNlbGYuX0FMTF9PTkVTKQorICAgICAgICAgICAgc2VsZi5fY2FjaGVbJ2hvc3RtYXNrJ10gPSB4CisgICAgICAgIHJldHVybiB4CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2l0aF9wcmVmaXhsZW4oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJWQnICUgKHNlbGYubmV0d29ya19hZGRyZXNzLCBzZWxmLl9wcmVmaXhsZW4pCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2l0aF9uZXRtYXNrKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLm5ldHdvcmtfYWRkcmVzcywgc2VsZi5uZXRtYXNrKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdpdGhfaG9zdG1hc2soc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJXMnICUgKHNlbGYubmV0d29ya19hZGRyZXNzLCBzZWxmLmhvc3RtYXNrKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG51bV9hZGRyZXNzZXMoc2VsZik6CisgICAgICAgICIiIk51bWJlciBvZiBob3N0cyBpbiB0aGUgY3VycmVudCBzdWJuZXQuIiIiCisgICAgICAgIHJldHVybiBpbnQoc2VsZi5icm9hZGNhc3RfYWRkcmVzcykgLSBpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpICsgMQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIF9hZGRyZXNzX2NsYXNzKHNlbGYpOgorICAgICAgICAjIFJldHVybmluZyBiYXJlIGFkZHJlc3Mgb2JqZWN0cyAocmF0aGVyIHRoYW4gaW50ZXJmYWNlcykgYWxsb3dzIGZvcgorICAgICAgICAjIG1vcmUgY29uc2lzdGVudCBiZWhhdmlvdXIgYWNyb3NzIHRoZSBuZXR3b3JrIGFkZHJlc3MsIGJyb2FkY2FzdAorICAgICAgICAjIGFkZHJlc3MgYW5kIGluZGl2aWR1YWwgaG9zdCBhZGRyZXNzZXMuCisgICAgICAgIG1zZyA9ICclMjAwcyBoYXMgbm8gYXNzb2NpYXRlZCBhZGRyZXNzIGNsYXNzJyAlICh0eXBlKHNlbGYpLCkKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihtc2cpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcHJlZml4bGVuKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fcHJlZml4bGVuCisKKyAgICBkZWYgYWRkcmVzc19leGNsdWRlKHNlbGYsIG90aGVyKToKKyAgICAgICAgIiIiUmVtb3ZlIGFuIGFkZHJlc3MgZnJvbSBhIGxhcmdlciBibG9jay4KKworICAgICAgICBGb3IgZXhhbXBsZToKKworICAgICAgICAgICAgYWRkcjEgPSBpcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjgnKQorICAgICAgICAgICAgYWRkcjIgPSBpcF9uZXR3b3JrKCcxOTIuMC4yLjEvMzInKQorICAgICAgICAgICAgYWRkcjEuYWRkcmVzc19leGNsdWRlKGFkZHIyKSA9CisgICAgICAgICAgICAgICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMzInKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMi8zMScpLAorICAgICAgICAgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjQvMzAnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuOC8yOScpXQorCisgICAgICAgIG9yIElQdjY6CisKKyAgICAgICAgICAgIGFkZHIxID0gaXBfbmV0d29yaygnMjAwMTpkYjg6OjEvMzInKQorICAgICAgICAgICAgYWRkcjIgPSBpcF9uZXR3b3JrKCcyMDAxOmRiODo6MS8xMjgnKQorICAgICAgICAgICAgYWRkcjEuYWRkcmVzc19leGNsdWRlKGFkZHIyKSA9CisgICAgICAgICAgICAgICAgW2lwX25ldHdvcmsoJzIwMDE6ZGI4OjoxLzEyOCcpLAorICAgICAgICAgICAgICAgIGlwX25ldHdvcmsoJzIwMDE6ZGI4OjoyLzEyNycpLAorICAgICAgICAgICAgICAgIGlwX25ldHdvcmsoJzIwMDE6ZGI4Ojo0LzEyNicpLAorICAgICAgICAgICAgICAgIGlwX25ldHdvcmsoJzIwMDE6ZGI4Ojo4LzEyNScpLAorICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgIGlwX25ldHdvcmsoJzIwMDE6ZGI4OjgwMDA6Oi8zMycpXQorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBvdGhlcjogQW4gSVB2NE5ldHdvcmsgb3IgSVB2Nk5ldHdvcmsgb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEFuIGl0ZXJhdG9yIG9mIHRoZSBJUHYoNHw2KU5ldHdvcmsgb2JqZWN0cyB3aGljaCBpcyBzZWxmCisgICAgICAgICAgICBtaW51cyBvdGhlci4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBUeXBlRXJyb3I6IElmIHNlbGYgYW5kIG90aGVyIGFyZSBvZiBkaWZmZmVyaW5nIGFkZHJlc3MKKyAgICAgICAgICAgICAgdmVyc2lvbnMsIG9yIGlmIG90aGVyIGlzIG5vdCBhIG5ldHdvcmsgb2JqZWN0LgorICAgICAgICAgICAgVmFsdWVFcnJvcjogSWYgb3RoZXIgaXMgbm90IGNvbXBsZXRlbHkgY29udGFpbmVkIGJ5IHNlbGYuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLl92ZXJzaW9uID09IG90aGVyLl92ZXJzaW9uOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB2ZXJzaW9uIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgb3RoZXIpKQorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBfQmFzZU5ldHdvcmspOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBpcyBub3QgYSBuZXR3b3JrIG9iamVjdCIgJSBvdGhlcikKKworICAgICAgICBpZiBub3QgKG90aGVyLm5ldHdvcmtfYWRkcmVzcyA+PSBzZWxmLm5ldHdvcmtfYWRkcmVzcyBhbmQKKyAgICAgICAgICAgICAgICBvdGhlci5icm9hZGNhc3RfYWRkcmVzcyA8PSBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJyVzIG5vdCBjb250YWluZWQgaW4gJXMnICUgKG90aGVyLCBzZWxmKSkKKyAgICAgICAgaWYgb3RoZXIgPT0gc2VsZjoKKyAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKworICAgICAgICAjIE1ha2Ugc3VyZSB3ZSdyZSBjb21wYXJpbmcgdGhlIG5ldHdvcmsgb2Ygb3RoZXIuCisgICAgICAgIG90aGVyID0gb3RoZXIuX19jbGFzc19fKCclcy8lcycgJSAob3RoZXIubmV0d29ya19hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLnByZWZpeGxlbikpCisKKyAgICAgICAgczEsIHMyID0gc2VsZi5zdWJuZXRzKCkKKyAgICAgICAgd2hpbGUgczEgIT0gb3RoZXIgYW5kIHMyICE9IG90aGVyOgorICAgICAgICAgICAgaWYgKG90aGVyLm5ldHdvcmtfYWRkcmVzcyA+PSBzMS5uZXR3b3JrX2FkZHJlc3MgYW5kCisgICAgICAgICAgICAgICAgb3RoZXIuYnJvYWRjYXN0X2FkZHJlc3MgPD0gczEuYnJvYWRjYXN0X2FkZHJlc3MpOgorICAgICAgICAgICAgICAgIHlpZWxkIHMyCisgICAgICAgICAgICAgICAgczEsIHMyID0gczEuc3VibmV0cygpCisgICAgICAgICAgICBlbGlmIChvdGhlci5uZXR3b3JrX2FkZHJlc3MgPj0gczIubmV0d29ya19hZGRyZXNzIGFuZAorICAgICAgICAgICAgICAgICAgb3RoZXIuYnJvYWRjYXN0X2FkZHJlc3MgPD0gczIuYnJvYWRjYXN0X2FkZHJlc3MpOgorICAgICAgICAgICAgICAgIHlpZWxkIHMxCisgICAgICAgICAgICAgICAgczEsIHMyID0gczIuc3VibmV0cygpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgSWYgd2UgZ290IGhlcmUsIHRoZXJlJ3MgYSBidWcgc29tZXdoZXJlLgorICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdFcnJvciBwZXJmb3JtaW5nIGV4Y2x1c2lvbjogJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzMTogJXMgczI6ICVzIG90aGVyOiAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzMSwgczIsIG90aGVyKSkKKyAgICAgICAgaWYgczEgPT0gb3RoZXI6CisgICAgICAgICAgICB5aWVsZCBzMgorICAgICAgICBlbGlmIHMyID09IG90aGVyOgorICAgICAgICAgICAgeWllbGQgczEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgSWYgd2UgZ290IGhlcmUsIHRoZXJlJ3MgYSBidWcgc29tZXdoZXJlLgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ0Vycm9yIHBlcmZvcm1pbmcgZXhjbHVzaW9uOiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnczE6ICVzIHMyOiAlcyBvdGhlcjogJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzMSwgczIsIG90aGVyKSkKKworICAgIGRlZiBjb21wYXJlX25ldHdvcmtzKHNlbGYsIG90aGVyKToKKyAgICAgICAgIiIiQ29tcGFyZSB0d28gSVAgb2JqZWN0cy4KKworICAgICAgICBUaGlzIGlzIG9ubHkgY29uY2VybmVkIGFib3V0IHRoZSBjb21wYXJpc29uIG9mIHRoZSBpbnRlZ2VyCisgICAgICAgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBuZXR3b3JrIGFkZHJlc3Nlcy4gIFRoaXMgbWVhbnMgdGhhdCB0aGUKKyAgICAgICAgaG9zdCBiaXRzIGFyZW4ndCBjb25zaWRlcmVkIGF0IGFsbCBpbiB0aGlzIG1ldGhvZC4gIElmIHlvdSB3YW50CisgICAgICAgIHRvIGNvbXBhcmUgaG9zdCBiaXRzLCB5b3UgY2FuIGVhc2lseSBlbm91Z2ggZG8gYQorICAgICAgICAnSG9zdEEuX2lwIDwgSG9zdEIuX2lwJworCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBvdGhlcjogQW4gSVAgb2JqZWN0LgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBJZiB0aGUgSVAgdmVyc2lvbnMgb2Ygc2VsZiBhbmQgb3RoZXIgYXJlIHRoZSBzYW1lLCByZXR1cm5zOgorCisgICAgICAgICAgICAtMSBpZiBzZWxmIDwgb3RoZXI6CisgICAgICAgICAgICAgIGVnOiBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI1JykgPCBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMjUnKQorICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6OjEwMDAvMTI0JykgPAorICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjoyMDAwLzEyNCcpCisgICAgICAgICAgICAwIGlmIHNlbGYgPT0gb3RoZXIKKyAgICAgICAgICAgICAgZWc6IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKSA9PSBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JykKKyAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjoxMDAwLzEyNCcpID09CisgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6OjEwMDAvMTI0JykKKyAgICAgICAgICAgIDEgaWYgc2VsZiA+IG90aGVyCisgICAgICAgICAgICAgIGVnOiBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMjUnKSA+IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjUnKQorICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjoyMDAwLzEyNCcpID4KKyAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6OjEwMDAvMTI0JykKKworICAgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgICAgVHlwZUVycm9yIGlmIHRoZSBJUCB2ZXJzaW9ucyBhcmUgZGlmZmVyZW50LgorCisgICAgICAgICIiIgorICAgICAgICAjIGRvZXMgdGhpcyBuZWVkIHRvIHJhaXNlIGEgVmFsdWVFcnJvcj8KKyAgICAgICAgaWYgc2VsZi5fdmVyc2lvbiAhPSBvdGhlci5fdmVyc2lvbjoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdHlwZScgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIG90aGVyKSkKKyAgICAgICAgIyBzZWxmLl92ZXJzaW9uID09IG90aGVyLl92ZXJzaW9uIGJlbG93IGhlcmU6CisgICAgICAgIGlmIHNlbGYubmV0d29ya19hZGRyZXNzIDwgb3RoZXIubmV0d29ya19hZGRyZXNzOgorICAgICAgICAgICAgcmV0dXJuIC0xCisgICAgICAgIGlmIHNlbGYubmV0d29ya19hZGRyZXNzID4gb3RoZXIubmV0d29ya19hZGRyZXNzOgorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgIyBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9PSBvdGhlci5uZXR3b3JrX2FkZHJlc3MgYmVsb3cgaGVyZToKKyAgICAgICAgaWYgc2VsZi5uZXRtYXNrIDwgb3RoZXIubmV0bWFzazoKKyAgICAgICAgICAgIHJldHVybiAtMQorICAgICAgICBpZiBzZWxmLm5ldG1hc2sgPiBvdGhlci5uZXRtYXNrOgorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgcmV0dXJuIDAKKworICAgIGRlZiBfZ2V0X25ldHdvcmtzX2tleShzZWxmKToKKyAgICAgICAgIiIiTmV0d29yay1vbmx5IGtleSBmdW5jdGlvbi4KKworICAgICAgICBSZXR1cm5zIGFuIG9iamVjdCB0aGF0IGlkZW50aWZpZXMgdGhpcyBhZGRyZXNzJyBuZXR3b3JrIGFuZAorICAgICAgICBuZXRtYXNrLiBUaGlzIGZ1bmN0aW9uIGlzIGEgc3VpdGFibGUgImtleSIgYXJndW1lbnQgZm9yIHNvcnRlZCgpCisgICAgICAgIGFuZCBsaXN0LnNvcnQoKS4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIChzZWxmLl92ZXJzaW9uLCBzZWxmLm5ldHdvcmtfYWRkcmVzcywgc2VsZi5uZXRtYXNrKQorCisgICAgZGVmIHN1Ym5ldHMoc2VsZiwgcHJlZml4bGVuX2RpZmY9MSwgbmV3X3ByZWZpeD1Ob25lKToKKyAgICAgICAgIiIiVGhlIHN1Ym5ldHMgd2hpY2ggam9pbiB0byBtYWtlIHRoZSBjdXJyZW50IHN1Ym5ldC4KKworICAgICAgICBJbiB0aGUgY2FzZSB0aGF0IHNlbGYgY29udGFpbnMgb25seSBvbmUgSVAKKyAgICAgICAgKHNlbGYuX3ByZWZpeGxlbiA9PSAzMiBmb3IgSVB2NCBvciBzZWxmLl9wcmVmaXhsZW4gPT0gMTI4CisgICAgICAgIGZvciBJUHY2KSwgeWllbGQgYW4gaXRlcmF0b3Igd2l0aCBqdXN0IG91cnNlbGYuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHByZWZpeGxlbl9kaWZmOiBBbiBpbnRlZ2VyLCB0aGUgYW1vdW50IHRoZSBwcmVmaXggbGVuZ3RoCisgICAgICAgICAgICAgIHNob3VsZCBiZSBpbmNyZWFzZWQgYnkuIFRoaXMgc2hvdWxkIG5vdCBiZSBzZXQgaWYKKyAgICAgICAgICAgICAgbmV3X3ByZWZpeCBpcyBhbHNvIHNldC4KKyAgICAgICAgICAgIG5ld19wcmVmaXg6IFRoZSBkZXNpcmVkIG5ldyBwcmVmaXggbGVuZ3RoLiBUaGlzIG11c3QgYmUgYQorICAgICAgICAgICAgICBsYXJnZXIgbnVtYmVyIChzbWFsbGVyIHByZWZpeCkgdGhhbiB0aGUgZXhpc3RpbmcgcHJlZml4LgorICAgICAgICAgICAgICBUaGlzIHNob3VsZCBub3QgYmUgc2V0IGlmIHByZWZpeGxlbl9kaWZmIGlzIGFsc28gc2V0LgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBbiBpdGVyYXRvciBvZiBJUHYoNHw2KSBvYmplY3RzLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIFZhbHVlRXJyb3I6IFRoZSBwcmVmaXhsZW5fZGlmZiBpcyB0b28gc21hbGwgb3IgdG9vIGxhcmdlLgorICAgICAgICAgICAgICAgIE9SCisgICAgICAgICAgICBwcmVmaXhsZW5fZGlmZiBhbmQgbmV3X3ByZWZpeCBhcmUgYm90aCBzZXQgb3IgbmV3X3ByZWZpeAorICAgICAgICAgICAgICBpcyBhIHNtYWxsZXIgbnVtYmVyIHRoYW4gdGhlIGN1cnJlbnQgcHJlZml4IChzbWFsbGVyCisgICAgICAgICAgICAgIG51bWJlciBtZWFucyBhIGxhcmdlciBuZXR3b3JrKQorCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9wcmVmaXhsZW4gPT0gc2VsZi5fbWF4X3ByZWZpeGxlbjoKKyAgICAgICAgICAgIHlpZWxkIHNlbGYKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIG5ld19wcmVmaXggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBuZXdfcHJlZml4IDwgc2VsZi5fcHJlZml4bGVuOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ25ldyBwcmVmaXggbXVzdCBiZSBsb25nZXInKQorICAgICAgICAgICAgaWYgcHJlZml4bGVuX2RpZmYgIT0gMToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdjYW5ub3Qgc2V0IHByZWZpeGxlbl9kaWZmIGFuZCBuZXdfcHJlZml4JykKKyAgICAgICAgICAgIHByZWZpeGxlbl9kaWZmID0gbmV3X3ByZWZpeCAtIHNlbGYuX3ByZWZpeGxlbgorCisgICAgICAgIGlmIHByZWZpeGxlbl9kaWZmIDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3ByZWZpeCBsZW5ndGggZGlmZiBtdXN0IGJlID4gMCcpCisgICAgICAgIG5ld19wcmVmaXhsZW4gPSBzZWxmLl9wcmVmaXhsZW4gKyBwcmVmaXhsZW5fZGlmZgorCisgICAgICAgIGlmIG5vdCBzZWxmLl9pc192YWxpZF9uZXRtYXNrKHN0cihuZXdfcHJlZml4bGVuKSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICdwcmVmaXggbGVuZ3RoIGRpZmYgJWQgaXMgaW52YWxpZCBmb3IgbmV0YmxvY2sgJXMnICUgKAorICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZml4bGVuLCBzZWxmKSkKKworICAgICAgICBmaXJzdCA9IHNlbGYuX19jbGFzc19fKCclcy8lcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubmV0d29ya19hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiArIHByZWZpeGxlbl9kaWZmKSkKKworICAgICAgICB5aWVsZCBmaXJzdAorICAgICAgICBjdXJyZW50ID0gZmlyc3QKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGJyb2FkY2FzdCA9IGN1cnJlbnQuYnJvYWRjYXN0X2FkZHJlc3MKKyAgICAgICAgICAgIGlmIGJyb2FkY2FzdCA9PSBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgbmV3X2FkZHIgPSBzZWxmLl9hZGRyZXNzX2NsYXNzKGludChicm9hZGNhc3QpICsgMSkKKyAgICAgICAgICAgIGN1cnJlbnQgPSBzZWxmLl9fY2xhc3NfXygnJXMvJXMnICUgKG5ld19hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ByZWZpeGxlbikpCisKKyAgICAgICAgICAgIHlpZWxkIGN1cnJlbnQKKworICAgIGRlZiBzdXBlcm5ldChzZWxmLCBwcmVmaXhsZW5fZGlmZj0xLCBuZXdfcHJlZml4PU5vbmUpOgorICAgICAgICAiIiJUaGUgc3VwZXJuZXQgY29udGFpbmluZyB0aGUgY3VycmVudCBuZXR3b3JrLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBwcmVmaXhsZW5fZGlmZjogQW4gaW50ZWdlciwgdGhlIGFtb3VudCB0aGUgcHJlZml4IGxlbmd0aCBvZgorICAgICAgICAgICAgICB0aGUgbmV0d29yayBzaG91bGQgYmUgZGVjcmVhc2VkIGJ5LiAgRm9yIGV4YW1wbGUsIGdpdmVuIGEKKyAgICAgICAgICAgICAgLzI0IG5ldHdvcmsgYW5kIGEgcHJlZml4bGVuX2RpZmYgb2YgMywgYSBzdXBlcm5ldCB3aXRoIGEKKyAgICAgICAgICAgICAgLzIxIG5ldG1hc2sgaXMgcmV0dXJuZWQuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEFuIElQdjQgbmV0d29yayBvYmplY3QuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgVmFsdWVFcnJvcjogSWYgc2VsZi5wcmVmaXhsZW4gLSBwcmVmaXhsZW5fZGlmZiA8IDAuIEkuZS4sIHlvdSBoYXZlCisgICAgICAgICAgICAgIGEgbmVnYXRpdmUgcHJlZml4IGxlbmd0aC4KKyAgICAgICAgICAgICAgICBPUgorICAgICAgICAgICAgSWYgcHJlZml4bGVuX2RpZmYgYW5kIG5ld19wcmVmaXggYXJlIGJvdGggc2V0IG9yIG5ld19wcmVmaXggaXMgYQorICAgICAgICAgICAgICBsYXJnZXIgbnVtYmVyIHRoYW4gdGhlIGN1cnJlbnQgcHJlZml4IChsYXJnZXIgbnVtYmVyIG1lYW5zIGEKKyAgICAgICAgICAgICAgc21hbGxlciBuZXR3b3JrKQorCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9wcmVmaXhsZW4gPT0gMDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgaWYgbmV3X3ByZWZpeCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIG5ld19wcmVmaXggPiBzZWxmLl9wcmVmaXhsZW46CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbmV3IHByZWZpeCBtdXN0IGJlIHNob3J0ZXInKQorICAgICAgICAgICAgaWYgcHJlZml4bGVuX2RpZmYgIT0gMToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdjYW5ub3Qgc2V0IHByZWZpeGxlbl9kaWZmIGFuZCBuZXdfcHJlZml4JykKKyAgICAgICAgICAgIHByZWZpeGxlbl9kaWZmID0gc2VsZi5fcHJlZml4bGVuIC0gbmV3X3ByZWZpeAorCisgICAgICAgIGlmIHNlbGYucHJlZml4bGVuIC0gcHJlZml4bGVuX2RpZmYgPCAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAnY3VycmVudCBwcmVmaXhsZW4gaXMgJWQsIGNhbm5vdCBoYXZlIGEgcHJlZml4bGVuX2RpZmYgb2YgJWQnICUKKyAgICAgICAgICAgICAgICAoc2VsZi5wcmVmaXhsZW4sIHByZWZpeGxlbl9kaWZmKSkKKyAgICAgICAgIyBUT0RPIChwbW9vZHkpOiBvcHRpbWl6ZSB0aGlzLgorICAgICAgICB0ID0gc2VsZi5fX2NsYXNzX18oJyVzLyVkJyAlIChzZWxmLm5ldHdvcmtfYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wcmVmaXhsZW4gLSBwcmVmaXhsZW5fZGlmZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0PUZhbHNlKQorICAgICAgICByZXR1cm4gdC5fX2NsYXNzX18oJyVzLyVkJyAlICh0Lm5ldHdvcmtfYWRkcmVzcywgdC5wcmVmaXhsZW4pKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX211bHRpY2FzdChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3IgbXVsdGljYXN0IHVzZS4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGEgbXVsdGljYXN0IGFkZHJlc3MuCisgICAgICAgICAgICBTZWUgUkZDIDIzNzMgMi43IGZvciBkZXRhaWxzLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gKHNlbGYubmV0d29ya19hZGRyZXNzLmlzX211bHRpY2FzdCBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzLmlzX211bHRpY2FzdCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19yZXNlcnZlZChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyBvdGhlcndpc2UgSUVURiByZXNlcnZlZC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHdpdGhpbiBvbmUgb2YgdGhlCisgICAgICAgICAgICByZXNlcnZlZCBJUHY2IE5ldHdvcmsgcmFuZ2VzLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gKHNlbGYubmV0d29ya19hZGRyZXNzLmlzX3Jlc2VydmVkIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MuaXNfcmVzZXJ2ZWQpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfbGlua19sb2NhbChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3IgbGluay1sb2NhbC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIHBlciBSRkMgNDI5MS4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIChzZWxmLm5ldHdvcmtfYWRkcmVzcy5pc19saW5rX2xvY2FsIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MuaXNfbGlua19sb2NhbCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19wcml2YXRlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoaXMgYWRkcmVzcyBpcyBhbGxvY2F0ZWQgZm9yIHByaXZhdGUgbmV0d29ya3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIgUkZDIDQxOTMuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAoc2VsZi5uZXR3b3JrX2FkZHJlc3MuaXNfcHJpdmF0ZSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzLmlzX3ByaXZhdGUpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfdW5zcGVjaWZpZWQoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgdW5zcGVjaWZpZWQuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGlzIGlzIHRoZSB1bnNwZWNpZmllZCBhZGRyZXNzIGFzIGRlZmluZWQgaW4KKyAgICAgICAgICAgIFJGQyAyMzczIDIuNS4yLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gKHNlbGYubmV0d29ya19hZGRyZXNzLmlzX3Vuc3BlY2lmaWVkIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MuaXNfdW5zcGVjaWZpZWQpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfbG9vcGJhY2soc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgYSBsb29wYmFjayBhZGRyZXNzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgYSBsb29wYmFjayBhZGRyZXNzIGFzIGRlZmluZWQgaW4KKyAgICAgICAgICAgIFJGQyAyMzczIDIuNS4zLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gKHNlbGYubmV0d29ya19hZGRyZXNzLmlzX2xvb3BiYWNrIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MuaXNfbG9vcGJhY2spCisKKworY2xhc3MgX0Jhc2VWNDoKKworICAgICIiIkJhc2UgSVB2NCBvYmplY3QuCisKKyAgICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgYnkgSVB2NCBvYmplY3RzIGluIGJvdGggc2luZ2xlIElQCisgICAgYWRkcmVzc2VzIGFuZCBuZXR3b3Jrcy4KKworICAgICIiIgorCisgICAgIyBFcXVpdmFsZW50IHRvIDI1NS4yNTUuMjU1LjI1NSBvciAzMiBiaXRzIG9mIDEncy4KKyAgICBfQUxMX09ORVMgPSAoMioqSVBWNExFTkdUSCkgLSAxCisgICAgX0RFQ0lNQUxfRElHSVRTID0gZnJvemVuc2V0KCcwMTIzNDU2Nzg5JykKKworICAgICMgdGhlIHZhbGlkIG9jdGV0cyBmb3IgaG9zdCBhbmQgbmV0bWFza3MuIG9ubHkgdXNlZnVsIGZvciBJUHY0LgorICAgIF92YWxpZF9tYXNrX29jdGV0cyA9IGZyb3plbnNldCgoMjU1LCAyNTQsIDI1MiwgMjQ4LCAyNDAsIDIyNCwgMTkyLCAxMjgsIDApKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorICAgICAgICBzZWxmLl92ZXJzaW9uID0gNAorICAgICAgICBzZWxmLl9tYXhfcHJlZml4bGVuID0gSVBWNExFTkdUSAorCisgICAgZGVmIF9leHBsb2RlX3Nob3J0aGFuZF9pcF9zdHJpbmcoc2VsZik6CisgICAgICAgIHJldHVybiBzdHIoc2VsZikKKworICAgIGRlZiBfaXBfaW50X2Zyb21fc3RyaW5nKHNlbGYsIGlwX3N0cik6CisgICAgICAgICIiIlR1cm4gdGhlIGdpdmVuIElQIHN0cmluZyBpbnRvIGFuIGludGVnZXIgZm9yIGNvbXBhcmlzb24uCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGlwX3N0cjogQSBzdHJpbmcsIHRoZSBJUCBpcF9zdHIuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFRoZSBJUCBpcF9zdHIgYXMgYW4gaW50ZWdlci4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBBZGRyZXNzVmFsdWVFcnJvcjogaWYgaXBfc3RyIGlzbid0IGEgdmFsaWQgSVB2NCBBZGRyZXNzLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgaXBfc3RyOgorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoJ0FkZHJlc3MgY2Fubm90IGJlIGVtcHR5JykKKworICAgICAgICBvY3RldHMgPSBpcF9zdHIuc3BsaXQoJy4nKQorICAgICAgICBpZiBsZW4ob2N0ZXRzKSAhPSA0OgorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoIkV4cGVjdGVkIDQgb2N0ZXRzIGluICVyIiAlIGlwX3N0cikKKworICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gaW50LmZyb21fYnl0ZXMobWFwKHNlbGYuX3BhcnNlX29jdGV0LCBvY3RldHMpLCAnYmlnJykKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoIiVzIGluICVyIiAlIChleGMsIGlwX3N0cikpIGZyb20gTm9uZQorCisgICAgZGVmIF9wYXJzZV9vY3RldChzZWxmLCBvY3RldF9zdHIpOgorICAgICAgICAiIiJDb252ZXJ0IGEgZGVjaW1hbCBvY3RldCBpbnRvIGFuIGludGVnZXIuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG9jdGV0X3N0cjogQSBzdHJpbmcsIHRoZSBudW1iZXIgdG8gcGFyc2UuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFRoZSBvY3RldCBhcyBhbiBpbnRlZ2VyLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIFZhbHVlRXJyb3I6IGlmIHRoZSBvY3RldCBpc24ndCBzdHJpY3RseSBhIGRlY2ltYWwgZnJvbSBbMC4uMjU1XS4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IG9jdGV0X3N0cjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkVtcHR5IG9jdGV0IG5vdCBwZXJtaXR0ZWQiKQorICAgICAgICAjIFdoaXRlbGlzdCB0aGUgY2hhcmFjdGVycywgc2luY2UgaW50KCkgYWxsb3dzIGEgbG90IG9mIGJpemFycmUgc3R1ZmYuCisgICAgICAgIGlmIG5vdCBzZWxmLl9ERUNJTUFMX0RJR0lUUy5pc3N1cGVyc2V0KG9jdGV0X3N0cik6CisgICAgICAgICAgICBtc2cgPSAiT25seSBkZWNpbWFsIGRpZ2l0cyBwZXJtaXR0ZWQgaW4gJXIiCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZyAlIG9jdGV0X3N0cikKKyAgICAgICAgIyBXZSBkbyB0aGUgbGVuZ3RoIGNoZWNrIHNlY29uZCwgc2luY2UgdGhlIGludmFsaWQgY2hhcmFjdGVyIGVycm9yCisgICAgICAgICMgaXMgbGlrZWx5IHRvIGJlIG1vcmUgaW5mb3JtYXRpdmUgZm9yIHRoZSB1c2VyCisgICAgICAgIGlmIGxlbihvY3RldF9zdHIpID4gMzoKKyAgICAgICAgICAgIG1zZyA9ICJBdCBtb3N0IDMgY2hhcmFjdGVycyBwZXJtaXR0ZWQgaW4gJXIiCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZyAlIG9jdGV0X3N0cikKKyAgICAgICAgIyBDb252ZXJ0IHRvIGludGVnZXIgKHdlIGtub3cgZGlnaXRzIGFyZSBsZWdhbCkKKyAgICAgICAgb2N0ZXRfaW50ID0gaW50KG9jdGV0X3N0ciwgMTApCisgICAgICAgICMgQW55IG9jdGV0cyB0aGF0IGxvb2sgbGlrZSB0aGV5ICptaWdodCogYmUgd3JpdHRlbiBpbiBvY3RhbCwKKyAgICAgICAgIyBhbmQgd2hpY2ggZG9uJ3QgbG9vayBleGFjdGx5IHRoZSBzYW1lIGluIGJvdGggb2N0YWwgYW5kCisgICAgICAgICMgZGVjaW1hbCBhcmUgcmVqZWN0ZWQgYXMgYW1iaWd1b3VzCisgICAgICAgIGlmIG9jdGV0X2ludCA+IDcgYW5kIG9jdGV0X3N0clswXSA9PSAnMCc6CisgICAgICAgICAgICBtc2cgPSAiQW1iaWd1b3VzIChvY3RhbC9kZWNpbWFsKSB2YWx1ZSBpbiAlciBub3QgcGVybWl0dGVkIgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cgJSBvY3RldF9zdHIpCisgICAgICAgIGlmIG9jdGV0X2ludCA+IDI1NToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk9jdGV0ICVkICg+IDI1NSkgbm90IHBlcm1pdHRlZCIgJSBvY3RldF9pbnQpCisgICAgICAgIHJldHVybiBvY3RldF9pbnQKKworICAgIGRlZiBfc3RyaW5nX2Zyb21faXBfaW50KHNlbGYsIGlwX2ludCk6CisgICAgICAgICIiIlR1cm5zIGEgMzItYml0IGludGVnZXIgaW50byBkb3R0ZWQgZGVjaW1hbCBub3RhdGlvbi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgaXBfaW50OiBBbiBpbnRlZ2VyLCB0aGUgSVAgYWRkcmVzcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgVGhlIElQIGFkZHJlc3MgYXMgYSBzdHJpbmcgaW4gZG90dGVkIGRlY2ltYWwgbm90YXRpb24uCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAnLicuam9pbihtYXAoc3RyLCBpcF9pbnQudG9fYnl0ZXMoNCwgJ2JpZycpKSkKKworICAgIGRlZiBfaXNfdmFsaWRfbmV0bWFzayhzZWxmLCBuZXRtYXNrKToKKyAgICAgICAgIiIiVmVyaWZ5IHRoYXQgdGhlIG5ldG1hc2sgaXMgdmFsaWQuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG5ldG1hc2s6IEEgc3RyaW5nLCBlaXRoZXIgYSBwcmVmaXggb3IgZG90dGVkIGRlY2ltYWwKKyAgICAgICAgICAgICAgbmV0bWFzay4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBwcmVmaXggcmVwcmVzZW50cyBhIHZhbGlkIElQdjQKKyAgICAgICAgICAgIG5ldG1hc2suCisKKyAgICAgICAgIiIiCisgICAgICAgIG1hc2sgPSBuZXRtYXNrLnNwbGl0KCcuJykKKyAgICAgICAgaWYgbGVuKG1hc2spID09IDQ6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm9yIHggaW4gbWFzazoKKyAgICAgICAgICAgICAgICAgICAgaWYgaW50KHgpIG5vdCBpbiBzZWxmLl92YWxpZF9tYXNrX29jdGV0czoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgIyBGb3VuZCBzb21ldGhpbmcgdGhhdCBpc24ndCBhbiBpbnRlZ2VyIG9yIGlzbid0IHZhbGlkCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBmb3IgaWR4LCB5IGluIGVudW1lcmF0ZShtYXNrKToKKyAgICAgICAgICAgICAgICBpZiBpZHggPiAwIGFuZCB5ID4gbWFza1tpZHggLSAxXToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXRtYXNrID0gaW50KG5ldG1hc2spCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiAwIDw9IG5ldG1hc2sgPD0gc2VsZi5fbWF4X3ByZWZpeGxlbgorCisgICAgZGVmIF9pc19ob3N0bWFzayhzZWxmLCBpcF9zdHIpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBJUCBzdHJpbmcgaXMgYSBob3N0bWFzayAocmF0aGVyIHRoYW4gYSBuZXRtYXNrKS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgaXBfc3RyOiBBIHN0cmluZywgdGhlIHBvdGVudGlhbCBob3N0bWFzay4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBJUCBzdHJpbmcgaXMgYSBob3N0bWFzay4KKworICAgICAgICAiIiIKKyAgICAgICAgYml0cyA9IGlwX3N0ci5zcGxpdCgnLicpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBhcnRzID0gW3ggZm9yIHggaW4gbWFwKGludCwgYml0cykgaWYgeCBpbiBzZWxmLl92YWxpZF9tYXNrX29jdGV0c10KKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgbGVuKHBhcnRzKSAhPSBsZW4oYml0cyk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgcGFydHNbMF0gPCBwYXJ0c1stMV06CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYXhfcHJlZml4bGVuKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbWF4X3ByZWZpeGxlbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZlcnNpb24oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl92ZXJzaW9uCisKKworY2xhc3MgSVB2NEFkZHJlc3MoX0Jhc2VWNCwgX0Jhc2VBZGRyZXNzKToKKworICAgICIiIlJlcHJlc2VudCBhbmQgbWFuaXB1bGF0ZSBzaW5nbGUgSVB2NCBBZGRyZXNzZXMuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CisKKyAgICAgICAgIiIiCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBhZGRyZXNzOiBBIHN0cmluZyBvciBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgSVAKKworICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIGFuIGludGVnZXIgY2FuIGJlIHBhc3NlZCwgc28KKyAgICAgICAgICAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpID09IElQdjRBZGRyZXNzKDMyMjEyMjU5ODUpLgorICAgICAgICAgICAgICBvciwgbW9yZSBnZW5lcmFsbHkKKyAgICAgICAgICAgICAgSVB2NEFkZHJlc3MoaW50KElQdjRBZGRyZXNzKCcxOTIuMC4yLjEnKSkpID09CisgICAgICAgICAgICAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgQWRkcmVzc1ZhbHVlRXJyb3I6IElmIGlwYWRkcmVzcyBpc24ndCBhIHZhbGlkIElQdjQgYWRkcmVzcy4KKworICAgICAgICAiIiIKKyAgICAgICAgX0Jhc2VBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCisgICAgICAgIF9CYXNlVjQuX19pbml0X18oc2VsZiwgYWRkcmVzcykKKworICAgICAgICAjIEVmZmljaWVudCBjb25zdHJ1Y3RvciBmcm9tIGludGVnZXIuCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgaW50KToKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2ludF9hZGRyZXNzKGFkZHJlc3MpCisgICAgICAgICAgICBzZWxmLl9pcCA9IGFkZHJlc3MKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgQ29uc3RydWN0aW5nIGZyb20gYSBwYWNrZWQgYWRkcmVzcworICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGJ5dGVzKToKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3BhY2tlZF9hZGRyZXNzKGFkZHJlc3MsIDQpCisgICAgICAgICAgICBzZWxmLl9pcCA9IGludC5mcm9tX2J5dGVzKGFkZHJlc3MsICdiaWcnKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBBc3N1bWUgaW5wdXQgYXJndW1lbnQgdG8gYmUgc3RyaW5nIG9yIGFueSBvYmplY3QgcmVwcmVzZW50YXRpb24KKyAgICAgICAgIyB3aGljaCBjb252ZXJ0cyBpbnRvIGEgZm9ybWF0dGVkIElQIHN0cmluZy4KKyAgICAgICAgYWRkcl9zdHIgPSBzdHIoYWRkcmVzcykKKyAgICAgICAgc2VsZi5faXAgPSBzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoYWRkcl9zdHIpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFja2VkKHNlbGYpOgorICAgICAgICAiIiJUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgYWRkcmVzcy4iIiIKKyAgICAgICAgcmV0dXJuIHY0X2ludF90b19wYWNrZWQoc2VsZi5faXApCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgb3RoZXJ3aXNlIElFVEYgcmVzZXJ2ZWQuCisKKyAgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHdpdGhpbiB0aGUKKyAgICAgICAgICAgICByZXNlcnZlZCBJUHY0IE5ldHdvcmsgcmFuZ2UuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJlc2VydmVkX25ldHdvcmsgPSBJUHY0TmV0d29yaygnMjQwLjAuMC4wLzQnKQorICAgICAgICByZXR1cm4gc2VsZiBpbiByZXNlcnZlZF9uZXR3b3JrCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfcHJpdmF0ZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGlzIGFkZHJlc3MgaXMgYWxsb2NhdGVkIGZvciBwcml2YXRlIG5ldHdvcmtzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgcGVyIFJGQyAxOTE4LgorCisgICAgICAgICIiIgorICAgICAgICBwcml2YXRlXzEwID0gSVB2NE5ldHdvcmsoJzEwLjAuMC4wLzgnKQorICAgICAgICBwcml2YXRlXzE3MiA9IElQdjROZXR3b3JrKCcxNzIuMTYuMC4wLzEyJykKKyAgICAgICAgcHJpdmF0ZV8xOTIgPSBJUHY0TmV0d29yaygnMTkyLjE2OC4wLjAvMTYnKQorICAgICAgICByZXR1cm4gKHNlbGYgaW4gcHJpdmF0ZV8xMCBvcgorICAgICAgICAgICAgICAgIHNlbGYgaW4gcHJpdmF0ZV8xNzIgb3IKKyAgICAgICAgICAgICAgICBzZWxmIGluIHByaXZhdGVfMTkyKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX211bHRpY2FzdChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3IgbXVsdGljYXN0IHVzZS4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIG11bHRpY2FzdC4KKyAgICAgICAgICAgIFNlZSBSRkMgMzE3MSBmb3IgZGV0YWlscy4KKworICAgICAgICAiIiIKKyAgICAgICAgbXVsdGljYXN0X25ldHdvcmsgPSBJUHY0TmV0d29yaygnMjI0LjAuMC4wLzQnKQorICAgICAgICByZXR1cm4gc2VsZiBpbiBtdWx0aWNhc3RfbmV0d29yaworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3Vuc3BlY2lmaWVkKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHVuc3BlY2lmaWVkLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhpcyBpcyB0aGUgdW5zcGVjaWZpZWQgYWRkcmVzcyBhcyBkZWZpbmVkIGluCisgICAgICAgICAgICBSRkMgNTczNSAzLgorCisgICAgICAgICIiIgorICAgICAgICB1bnNwZWNpZmllZF9hZGRyZXNzID0gSVB2NEFkZHJlc3MoJzAuMC4wLjAnKQorICAgICAgICByZXR1cm4gc2VsZiA9PSB1bnNwZWNpZmllZF9hZGRyZXNzCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfbG9vcGJhY2soc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgYSBsb29wYmFjayBhZGRyZXNzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgYSBsb29wYmFjayBwZXIgUkZDIDMzMzAuCisKKyAgICAgICAgIiIiCisgICAgICAgIGxvb3BiYWNrX25ldHdvcmsgPSBJUHY0TmV0d29yaygnMTI3LjAuMC4wLzgnKQorICAgICAgICByZXR1cm4gc2VsZiBpbiBsb29wYmFja19uZXR3b3JrCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfbGlua19sb2NhbChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3IgbGluay1sb2NhbC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGxpbmstbG9jYWwgcGVyIFJGQyAzOTI3LgorCisgICAgICAgICIiIgorICAgICAgICBsaW5rbG9jYWxfbmV0d29yayA9IElQdjROZXR3b3JrKCcxNjkuMjU0LjAuMC8xNicpCisgICAgICAgIHJldHVybiBzZWxmIGluIGxpbmtsb2NhbF9uZXR3b3JrCisKKworY2xhc3MgSVB2NEludGVyZmFjZShJUHY0QWRkcmVzcyk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgKGJ5dGVzLCBpbnQpKToKKyAgICAgICAgICAgIElQdjRBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCisgICAgICAgICAgICBzZWxmLm5ldHdvcmsgPSBJUHY0TmV0d29yayhzZWxmLl9pcCkKKyAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGFkZHIgPSBfc3BsaXRfb3B0aW9uYWxfbmV0bWFzayhhZGRyZXNzKQorICAgICAgICBJUHY0QWRkcmVzcy5fX2luaXRfXyhzZWxmLCBhZGRyWzBdKQorCisgICAgICAgIHNlbGYubmV0d29yayA9IElQdjROZXR3b3JrKGFkZHJlc3MsIHN0cmljdD1GYWxzZSkKKyAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5uZXR3b3JrLl9wcmVmaXhsZW4KKworICAgICAgICBzZWxmLm5ldG1hc2sgPSBzZWxmLm5ldHdvcmsubmV0bWFzaworICAgICAgICBzZWxmLmhvc3RtYXNrID0gc2VsZi5uZXR3b3JrLmhvc3RtYXNrCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lZCcgJSAoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXR3b3JrLnByZWZpeGxlbikKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBhZGRyZXNzX2VxdWFsID0gSVB2NEFkZHJlc3MuX19lcV9fKHNlbGYsIG90aGVyKQorICAgICAgICBpZiBub3QgYWRkcmVzc19lcXVhbCBvciBhZGRyZXNzX2VxdWFsIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIGFkZHJlc3NfZXF1YWwKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubmV0d29yayA9PSBvdGhlci5uZXR3b3JrCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICMgQW4gaW50ZXJmYWNlIHdpdGggYW4gYXNzb2NpYXRlZCBuZXR3b3JrIGlzIE5PVCB0aGUKKyAgICAgICAgICAgICMgc2FtZSBhcyBhbiB1bmFzc29jaWF0ZWQgYWRkcmVzcy4gVGhhdCdzIHdoeSB0aGUgaGFzaAorICAgICAgICAgICAgIyB0YWtlcyB0aGUgZXh0cmEgaW5mbyBpbnRvIGFjY291bnQuCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICBhZGRyZXNzX2xlc3MgPSBJUHY0QWRkcmVzcy5fX2x0X18oc2VsZiwgb3RoZXIpCisgICAgICAgIGlmIGFkZHJlc3NfbGVzcyBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5uZXR3b3JrIDwgb3RoZXIubmV0d29yaworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAjIFdlICpkbyogYWxsb3cgYWRkcmVzc2VzIGFuZCBpbnRlcmZhY2VzIHRvIGJlIHNvcnRlZC4gVGhlCisgICAgICAgICAgICAjIHVuYXNzb2NpYXRlZCBhZGRyZXNzIGlzIGNvbnNpZGVyZWQgbGVzcyB0aGFuIGFsbCBpbnRlcmZhY2VzLgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9pcCBeIHNlbGYuX3ByZWZpeGxlbiBeIGludChzZWxmLm5ldHdvcmsubmV0d29ya19hZGRyZXNzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlwKHNlbGYpOgorICAgICAgICByZXR1cm4gSVB2NEFkZHJlc3Moc2VsZi5faXApCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2l0aF9wcmVmaXhsZW4oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJXMnICUgKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3aXRoX25ldG1hc2soc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJXMnICUgKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmV0bWFzaykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3aXRoX2hvc3RtYXNrKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvc3RtYXNrKQorCisKK2NsYXNzIElQdjROZXR3b3JrKF9CYXNlVjQsIF9CYXNlTmV0d29yayk6CisKKyAgICAiIiJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYW5kIG1hbmlwdWxhdGVzIDMyLWJpdCBJUHY0IG5ldHdvcmsgKyBhZGRyZXNzZXMuLgorCisgICAgQXR0cmlidXRlczogW2V4YW1wbGVzIGZvciBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI3JyldCisgICAgICAgIC5uZXR3b3JrX2FkZHJlc3M6IElQdjRBZGRyZXNzKCcxOTIuMC4yLjAnKQorICAgICAgICAuaG9zdG1hc2s6IElQdjRBZGRyZXNzKCcwLjAuMC4zMScpCisgICAgICAgIC5icm9hZGNhc3RfYWRkcmVzczogSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMzInKQorICAgICAgICAubmV0bWFzazogSVB2NEFkZHJlc3MoJzI1NS4yNTUuMjU1LjIyNCcpCisgICAgICAgIC5wcmVmaXhsZW46IDI3CisKKyAgICAiIiIKKyAgICAjIENsYXNzIHRvIHVzZSB3aGVuIGNyZWF0aW5nIGFkZHJlc3Mgb2JqZWN0cworICAgIF9hZGRyZXNzX2NsYXNzID0gSVB2NEFkZHJlc3MKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzLCBzdHJpY3Q9VHJ1ZSk6CisKKyAgICAgICAgIiIiSW5zdGFudGlhdGUgYSBuZXcgSVB2NCBuZXR3b3JrIG9iamVjdC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgYWRkcmVzczogQSBzdHJpbmcgb3IgaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIElQIFsmIG5ldHdvcmtdLgorICAgICAgICAgICAgICAnMTkyLjAuMi4wLzI0JworICAgICAgICAgICAgICAnMTkyLjAuMi4wLzI1NS4yNTUuMjU1LjAnCisgICAgICAgICAgICAgICcxOTIuMC4wLjIvMC4wLjAuMjU1JworICAgICAgICAgICAgICBhcmUgYWxsIGZ1bmN0aW9uYWxseSB0aGUgc2FtZSBpbiBJUHY0LiBTaW1pbGFybHksCisgICAgICAgICAgICAgICcxOTIuMC4yLjEnCisgICAgICAgICAgICAgICcxOTIuMC4yLjEvMjU1LjI1NS4yNTUuMjU1JworICAgICAgICAgICAgICAnMTkyLjAuMi4xLzMyJworICAgICAgICAgICAgICBhcmUgYWxzbyBmdW5jdGlvbmFseSBlcXVpdmFsZW50LiBUaGF0IGlzIHRvIHNheSwgZmFpbGluZyB0bworICAgICAgICAgICAgICBwcm92aWRlIGEgc3VibmV0bWFzayB3aWxsIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBhIG1hc2sgb2YgLzMyLgorCisgICAgICAgICAgICAgIElmIHRoZSBtYXNrIChwb3J0aW9uIGFmdGVyIHRoZSAvIGluIHRoZSBhcmd1bWVudCkgaXMgZ2l2ZW4gaW4KKyAgICAgICAgICAgICAgZG90dGVkIHF1YWQgZm9ybSwgaXQgaXMgdHJlYXRlZCBhcyBhIG5ldG1hc2sgaWYgaXQgc3RhcnRzIHdpdGggYQorICAgICAgICAgICAgICBub24temVybyBmaWVsZCAoZS5nLiAvMjU1LjAuMC4wID09IC84KSBhbmQgYXMgYSBob3N0bWFzayBpZiBpdAorICAgICAgICAgICAgICBzdGFydHMgd2l0aCBhIHplcm8gZmllbGQgKGUuZy4gMC4yNTUuMjU1LjI1NSA9PSAvOCksIHdpdGggdGhlCisgICAgICAgICAgICAgIHNpbmdsZSBleGNlcHRpb24gb2YgYW4gYWxsLXplcm8gbWFzayB3aGljaCBpcyB0cmVhdGVkIGFzIGEKKyAgICAgICAgICAgICAgbmV0bWFzayA9PSAvMC4gSWYgbm8gbWFzayBpcyBnaXZlbiwgYSBkZWZhdWx0IG9mIC8zMiBpcyB1c2VkLgorCisgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgYW4gaW50ZWdlciBjYW4gYmUgcGFzc2VkLCBzbworICAgICAgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi4xJykgPT0gSVB2NE5ldHdvcmsoMzIyMTIyNTk4NSkKKyAgICAgICAgICAgICAgb3IsIG1vcmUgZ2VuZXJhbGx5CisgICAgICAgICAgICAgIElQdjRJbnRlcmZhY2UoaW50KElQdjRJbnRlcmZhY2UoJzE5Mi4wLjIuMScpKSkgPT0KKyAgICAgICAgICAgICAgICBJUHY0SW50ZXJmYWNlKCcxOTIuMC4yLjEnKQorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEFkZHJlc3NWYWx1ZUVycm9yOiBJZiBpcGFkZHJlc3MgaXNuJ3QgYSB2YWxpZCBJUHY0IGFkZHJlc3MuCisgICAgICAgICAgICBOZXRtYXNrVmFsdWVFcnJvcjogSWYgdGhlIG5ldG1hc2sgaXNuJ3QgdmFsaWQgZm9yCisgICAgICAgICAgICAgIGFuIElQdjQgYWRkcmVzcy4KKyAgICAgICAgICAgIFZhbHVlRXJyb3I6IElmIHN0cmljdCBpcyBUcnVlIGFuZCBhIG5ldHdvcmsgYWRkcmVzcyBpcyBub3QKKyAgICAgICAgICAgICAgc3VwcGxpZWQuCisKKyAgICAgICAgIiIiCisKKyAgICAgICAgX0Jhc2VWNC5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQorICAgICAgICBfQmFzZU5ldHdvcmsuX19pbml0X18oc2VsZiwgYWRkcmVzcykKKworICAgICAgICAjIENvbnN0cnVjdGluZyBmcm9tIGEgcGFja2VkIGFkZHJlc3MKKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBieXRlcyk6CisgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjRBZGRyZXNzKGFkZHJlc3MpCisgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY0QWRkcmVzcyhzZWxmLl9BTExfT05FUykKKyAgICAgICAgICAgICNmaXhtZTogYWRkcmVzcy9uZXR3b3JrIHRlc3QgaGVyZQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBFZmZpY2llbnQgY29uc3RydWN0b3IgZnJvbSBpbnRlZ2VyLgorICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGludCk6CisgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjRBZGRyZXNzKGFkZHJlc3MpCisgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY0QWRkcmVzcyhzZWxmLl9BTExfT05FUykKKyAgICAgICAgICAgICNmaXhtZTogYWRkcmVzcy9uZXR3b3JrIHRlc3QgaGVyZS4KKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgQXNzdW1lIGlucHV0IGFyZ3VtZW50IHRvIGJlIHN0cmluZyBvciBhbnkgb2JqZWN0IHJlcHJlc2VudGF0aW9uCisgICAgICAgICMgd2hpY2ggY29udmVydHMgaW50byBhIGZvcm1hdHRlZCBJUCBwcmVmaXggc3RyaW5nLgorICAgICAgICBhZGRyID0gX3NwbGl0X29wdGlvbmFsX25ldG1hc2soYWRkcmVzcykKKyAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY0QWRkcmVzcyhzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoYWRkclswXSkpCisKKyAgICAgICAgaWYgbGVuKGFkZHIpID09IDI6CisgICAgICAgICAgICBtYXNrID0gYWRkclsxXS5zcGxpdCgnLicpCisKKyAgICAgICAgICAgIGlmIGxlbihtYXNrKSA9PSA0OgorICAgICAgICAgICAgICAgICMgV2UgaGF2ZSBkb3R0ZWQgZGVjaW1hbCBuZXRtYXNrLgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2lzX3ZhbGlkX25ldG1hc2soYWRkclsxXSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjRBZGRyZXNzKHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyWzFdKSkKKyAgICAgICAgICAgICAgICBlbGlmIHNlbGYuX2lzX2hvc3RtYXNrKGFkZHJbMV0pOgorICAgICAgICAgICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY0QWRkcmVzcygKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhhZGRyWzFdKSBeIHNlbGYuX0FMTF9PTkVTKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIE5ldG1hc2tWYWx1ZUVycm9yKCclciBpcyBub3QgYSB2YWxpZCBuZXRtYXNrJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGFkZHJbMV0pCisKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9wcmVmaXhfZnJvbV9pcF9pbnQoaW50KHNlbGYubmV0bWFzaykpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgV2UgaGF2ZSBhIG5ldG1hc2sgaW4gcHJlZml4IGxlbmd0aCBmb3JtLgorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9pc192YWxpZF9uZXRtYXNrKGFkZHJbMV0pOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBOZXRtYXNrVmFsdWVFcnJvcignJXIgaXMgbm90IGEgdmFsaWQgbmV0bWFzaycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBhZGRyWzFdKQorICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IGludChhZGRyWzFdKQorICAgICAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjRBZGRyZXNzKHNlbGYuX2lwX2ludF9mcm9tX3ByZWZpeCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KKyAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjRBZGRyZXNzKHNlbGYuX2lwX2ludF9mcm9tX3ByZWZpeCgKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4pKQorCisgICAgICAgIGlmIHN0cmljdDoKKyAgICAgICAgICAgIGlmIChJUHY0QWRkcmVzcyhpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpICYgaW50KHNlbGYubmV0bWFzaykpICE9CisgICAgICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJyVzIGhhcyBob3N0IGJpdHMgc2V0JyAlIHNlbGYpCisgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NEFkZHJlc3MoaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSAmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYubmV0bWFzaykpCisKKyAgICAgICAgaWYgc2VsZi5fcHJlZml4bGVuID09IChzZWxmLl9tYXhfcHJlZml4bGVuIC0gMSk6CisgICAgICAgICAgICBzZWxmLmhvc3RzID0gc2VsZi5fX2l0ZXJfXworCisKK2NsYXNzIF9CYXNlVjY6CisKKyAgICAiIiJCYXNlIElQdjYgb2JqZWN0LgorCisgICAgVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIGJ5IElQdjYgb2JqZWN0cyBpbiBib3RoIHNpbmdsZSBJUAorICAgIGFkZHJlc3NlcyBhbmQgbmV0d29ya3MuCisKKyAgICAiIiIKKworICAgIF9BTExfT05FUyA9ICgyKipJUFY2TEVOR1RIKSAtIDEKKyAgICBfSEVYVEVUX0NPVU5UID0gOAorICAgIF9IRVhfRElHSVRTID0gZnJvemVuc2V0KCcwMTIzNDU2Nzg5QUJDREVGYWJjZGVmJykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKyAgICAgICAgc2VsZi5fdmVyc2lvbiA9IDYKKyAgICAgICAgc2VsZi5fbWF4X3ByZWZpeGxlbiA9IElQVjZMRU5HVEgKKworICAgIGRlZiBfaXBfaW50X2Zyb21fc3RyaW5nKHNlbGYsIGlwX3N0cik6CisgICAgICAgICIiIlR1cm4gYW4gSVB2NiBpcF9zdHIgaW50byBhbiBpbnRlZ2VyLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBpcF9zdHI6IEEgc3RyaW5nLCB0aGUgSVB2NiBpcF9zdHIuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEFuIGludCwgdGhlIElQdjYgYWRkcmVzcworCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEFkZHJlc3NWYWx1ZUVycm9yOiBpZiBpcF9zdHIgaXNuJ3QgYSB2YWxpZCBJUHY2IEFkZHJlc3MuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBpcF9zdHI6CisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcignQWRkcmVzcyBjYW5ub3QgYmUgZW1wdHknKQorCisgICAgICAgIHBhcnRzID0gaXBfc3RyLnNwbGl0KCc6JykKKworICAgICAgICAjIEFuIElQdjYgYWRkcmVzcyBuZWVkcyBhdCBsZWFzdCAyIGNvbG9ucyAoMyBwYXJ0cykuCisgICAgICAgIF9taW5fcGFydHMgPSAzCisgICAgICAgIGlmIGxlbihwYXJ0cykgPCBfbWluX3BhcnRzOgorICAgICAgICAgICAgbXNnID0gIkF0IGxlYXN0ICVkIHBhcnRzIGV4cGVjdGVkIGluICVyIiAlIChfbWluX3BhcnRzLCBpcF9zdHIpCisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cpCisKKyAgICAgICAgIyBJZiB0aGUgYWRkcmVzcyBoYXMgYW4gSVB2NC1zdHlsZSBzdWZmaXgsIGNvbnZlcnQgaXQgdG8gaGV4YWRlY2ltYWwuCisgICAgICAgIGlmICcuJyBpbiBwYXJ0c1stMV06CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXB2NF9pbnQgPSBJUHY0QWRkcmVzcyhwYXJ0cy5wb3AoKSkuX2lwCisgICAgICAgICAgICBleGNlcHQgQWRkcmVzc1ZhbHVlRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCIlcyBpbiAlciIgJSAoZXhjLCBpcF9zdHIpKSBmcm9tIE5vbmUKKyAgICAgICAgICAgIHBhcnRzLmFwcGVuZCgnJXgnICUgKChpcHY0X2ludCA+PiAxNikgJiAweEZGRkYpKQorICAgICAgICAgICAgcGFydHMuYXBwZW5kKCcleCcgJSAoaXB2NF9pbnQgJiAweEZGRkYpKQorCisgICAgICAgICMgQW4gSVB2NiBhZGRyZXNzIGNhbid0IGhhdmUgbW9yZSB0aGFuIDggY29sb25zICg5IHBhcnRzKS4KKyAgICAgICAgIyBUaGUgZXh0cmEgY29sb24gY29tZXMgZnJvbSB1c2luZyB0aGUgIjo6IiBub3RhdGlvbiBmb3IgYSBzaW5nbGUKKyAgICAgICAgIyBsZWFkaW5nIG9yIHRyYWlsaW5nIHplcm8gcGFydC4KKyAgICAgICAgX21heF9wYXJ0cyA9IHNlbGYuX0hFWFRFVF9DT1VOVCArIDEKKyAgICAgICAgaWYgbGVuKHBhcnRzKSA+IF9tYXhfcGFydHM6CisgICAgICAgICAgICBtc2cgPSAiQXQgbW9zdCAlZCBjb2xvbnMgcGVybWl0dGVkIGluICVyIiAlIChfbWF4X3BhcnRzLTEsIGlwX3N0cikKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZykKKworICAgICAgICAjIERpc3JlZ2FyZGluZyB0aGUgZW5kcG9pbnRzLCBmaW5kICc6Oicgd2l0aCBub3RoaW5nIGluIGJldHdlZW4uCisgICAgICAgICMgVGhpcyBpbmRpY2F0ZXMgdGhhdCBhIHJ1biBvZiB6ZXJvZXMgaGFzIGJlZW4gc2tpcHBlZC4KKyAgICAgICAgc2tpcF9pbmRleCA9IE5vbmUKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgbGVuKHBhcnRzKSAtIDEpOgorICAgICAgICAgICAgaWYgbm90IHBhcnRzW2ldOgorICAgICAgICAgICAgICAgIGlmIHNraXBfaW5kZXggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgQ2FuJ3QgaGF2ZSBtb3JlIHRoYW4gb25lICc6OicKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gIkF0IG1vc3Qgb25lICc6OicgcGVybWl0dGVkIGluICVyIiAlIGlwX3N0cgorICAgICAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cpCisgICAgICAgICAgICAgICAgc2tpcF9pbmRleCA9IGkKKworICAgICAgICAjIHBhcnRzX2hpIGlzIHRoZSBudW1iZXIgb2YgcGFydHMgdG8gY29weSBmcm9tIGFib3ZlL2JlZm9yZSB0aGUgJzo6JworICAgICAgICAjIHBhcnRzX2xvIGlzIHRoZSBudW1iZXIgb2YgcGFydHMgdG8gY29weSBmcm9tIGJlbG93L2FmdGVyIHRoZSAnOjonCisgICAgICAgIGlmIHNraXBfaW5kZXggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIElmIHdlIGZvdW5kIGEgJzo6JywgdGhlbiBjaGVjayBpZiBpdCBhbHNvIGNvdmVycyB0aGUgZW5kcG9pbnRzLgorICAgICAgICAgICAgcGFydHNfaGkgPSBza2lwX2luZGV4CisgICAgICAgICAgICBwYXJ0c19sbyA9IGxlbihwYXJ0cykgLSBza2lwX2luZGV4IC0gMQorICAgICAgICAgICAgaWYgbm90IHBhcnRzWzBdOgorICAgICAgICAgICAgICAgIHBhcnRzX2hpIC09IDEKKyAgICAgICAgICAgICAgICBpZiBwYXJ0c19oaToKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gIkxlYWRpbmcgJzonIG9ubHkgcGVybWl0dGVkIGFzIHBhcnQgb2YgJzo6JyBpbiAlciIKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgaXBfc3RyKSAgIyBeOiByZXF1aXJlcyBeOjoKKyAgICAgICAgICAgIGlmIG5vdCBwYXJ0c1stMV06CisgICAgICAgICAgICAgICAgcGFydHNfbG8gLT0gMQorICAgICAgICAgICAgICAgIGlmIHBhcnRzX2xvOgorICAgICAgICAgICAgICAgICAgICBtc2cgPSAiVHJhaWxpbmcgJzonIG9ubHkgcGVybWl0dGVkIGFzIHBhcnQgb2YgJzo6JyBpbiAlciIKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgaXBfc3RyKSAgIyA6JCByZXF1aXJlcyA6OiQKKyAgICAgICAgICAgIHBhcnRzX3NraXBwZWQgPSBzZWxmLl9IRVhURVRfQ09VTlQgLSAocGFydHNfaGkgKyBwYXJ0c19sbykKKyAgICAgICAgICAgIGlmIHBhcnRzX3NraXBwZWQgPCAxOgorICAgICAgICAgICAgICAgIG1zZyA9ICJFeHBlY3RlZCBhdCBtb3N0ICVkIG90aGVyIHBhcnRzIHdpdGggJzo6JyBpbiAlciIKKyAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSAoc2VsZi5fSEVYVEVUX0NPVU5ULTEsIGlwX3N0cikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIE90aGVyd2lzZSwgYWxsb2NhdGUgdGhlIGVudGlyZSBhZGRyZXNzIHRvIHBhcnRzX2hpLiAgVGhlCisgICAgICAgICAgICAjIGVuZHBvaW50cyBjb3VsZCBzdGlsbCBiZSBlbXB0eSwgYnV0IF9wYXJzZV9oZXh0ZXQoKSB3aWxsIGNoZWNrCisgICAgICAgICAgICAjIGZvciB0aGF0LgorICAgICAgICAgICAgaWYgbGVuKHBhcnRzKSAhPSBzZWxmLl9IRVhURVRfQ09VTlQ6CisgICAgICAgICAgICAgICAgbXNnID0gIkV4YWN0bHkgJWQgcGFydHMgZXhwZWN0ZWQgd2l0aG91dCAnOjonIGluICVyIgorICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIChzZWxmLl9IRVhURVRfQ09VTlQsIGlwX3N0cikpCisgICAgICAgICAgICBpZiBub3QgcGFydHNbMF06CisgICAgICAgICAgICAgICAgbXNnID0gIkxlYWRpbmcgJzonIG9ubHkgcGVybWl0dGVkIGFzIHBhcnQgb2YgJzo6JyBpbiAlciIKKyAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSBpcF9zdHIpICAjIF46IHJlcXVpcmVzIF46OgorICAgICAgICAgICAgaWYgbm90IHBhcnRzWy0xXToKKyAgICAgICAgICAgICAgICBtc2cgPSAiVHJhaWxpbmcgJzonIG9ubHkgcGVybWl0dGVkIGFzIHBhcnQgb2YgJzo6JyBpbiAlciIKKyAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSBpcF9zdHIpICAjIDokIHJlcXVpcmVzIDo6JAorICAgICAgICAgICAgcGFydHNfaGkgPSBsZW4ocGFydHMpCisgICAgICAgICAgICBwYXJ0c19sbyA9IDAKKyAgICAgICAgICAgIHBhcnRzX3NraXBwZWQgPSAwCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBOb3csIHBhcnNlIHRoZSBoZXh0ZXRzIGludG8gYSAxMjgtYml0IGludGVnZXIuCisgICAgICAgICAgICBpcF9pbnQgPSAwCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShwYXJ0c19oaSk6CisgICAgICAgICAgICAgICAgaXBfaW50IDw8PSAxNgorICAgICAgICAgICAgICAgIGlwX2ludCB8PSBzZWxmLl9wYXJzZV9oZXh0ZXQocGFydHNbaV0pCisgICAgICAgICAgICBpcF9pbnQgPDw9IDE2ICogcGFydHNfc2tpcHBlZAorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLXBhcnRzX2xvLCAwKToKKyAgICAgICAgICAgICAgICBpcF9pbnQgPDw9IDE2CisgICAgICAgICAgICAgICAgaXBfaW50IHw9IHNlbGYuX3BhcnNlX2hleHRldChwYXJ0c1tpXSkKKyAgICAgICAgICAgIHJldHVybiBpcF9pbnQKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoIiVzIGluICVyIiAlIChleGMsIGlwX3N0cikpIGZyb20gTm9uZQorCisgICAgZGVmIF9wYXJzZV9oZXh0ZXQoc2VsZiwgaGV4dGV0X3N0cik6CisgICAgICAgICIiIkNvbnZlcnQgYW4gSVB2NiBoZXh0ZXQgc3RyaW5nIGludG8gYW4gaW50ZWdlci4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgaGV4dGV0X3N0cjogQSBzdHJpbmcsIHRoZSBudW1iZXIgdG8gcGFyc2UuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFRoZSBoZXh0ZXQgYXMgYW4gaW50ZWdlci4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBWYWx1ZUVycm9yOiBpZiB0aGUgaW5wdXQgaXNuJ3Qgc3RyaWN0bHkgYSBoZXggbnVtYmVyIGZyb20KKyAgICAgICAgICAgICAgWzAuLkZGRkZdLgorCisgICAgICAgICIiIgorICAgICAgICAjIFdoaXRlbGlzdCB0aGUgY2hhcmFjdGVycywgc2luY2UgaW50KCkgYWxsb3dzIGEgbG90IG9mIGJpemFycmUgc3R1ZmYuCisgICAgICAgIGlmIG5vdCBzZWxmLl9IRVhfRElHSVRTLmlzc3VwZXJzZXQoaGV4dGV0X3N0cik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJPbmx5IGhleCBkaWdpdHMgcGVybWl0dGVkIGluICVyIiAlIGhleHRldF9zdHIpCisgICAgICAgICMgV2UgZG8gdGhlIGxlbmd0aCBjaGVjayBzZWNvbmQsIHNpbmNlIHRoZSBpbnZhbGlkIGNoYXJhY3RlciBlcnJvcgorICAgICAgICAjIGlzIGxpa2VseSB0byBiZSBtb3JlIGluZm9ybWF0aXZlIGZvciB0aGUgdXNlcgorICAgICAgICBpZiBsZW4oaGV4dGV0X3N0cikgPiA0OgorICAgICAgICAgICAgbXNnID0gIkF0IG1vc3QgNCBjaGFyYWN0ZXJzIHBlcm1pdHRlZCBpbiAlciIKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnICUgaGV4dGV0X3N0cikKKyAgICAgICAgIyBMZW5ndGggY2hlY2sgbWVhbnMgd2UgY2FuIHNraXAgY2hlY2tpbmcgdGhlIGludGVnZXIgdmFsdWUKKyAgICAgICAgcmV0dXJuIGludChoZXh0ZXRfc3RyLCAxNikKKworICAgIGRlZiBfY29tcHJlc3NfaGV4dGV0cyhzZWxmLCBoZXh0ZXRzKToKKyAgICAgICAgIiIiQ29tcHJlc3NlcyBhIGxpc3Qgb2YgaGV4dGV0cy4KKworICAgICAgICBDb21wcmVzc2VzIGEgbGlzdCBvZiBzdHJpbmdzLCByZXBsYWNpbmcgdGhlIGxvbmdlc3QgY29udGludW91cworICAgICAgICBzZXF1ZW5jZSBvZiAiMCIgaW4gdGhlIGxpc3Qgd2l0aCAiIiBhbmQgYWRkaW5nIGVtcHR5IHN0cmluZ3MgYXQKKyAgICAgICAgdGhlIGJlZ2lubmluZyBvciBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgc3VjaCB0aGF0IHN1YnNlcXVlbnRseQorICAgICAgICBjYWxsaW5nICI6Ii5qb2luKGhleHRldHMpIHdpbGwgcHJvZHVjZSB0aGUgY29tcHJlc3NlZCB2ZXJzaW9uIG9mCisgICAgICAgIHRoZSBJUHY2IGFkZHJlc3MuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGhleHRldHM6IEEgbGlzdCBvZiBzdHJpbmdzLCB0aGUgaGV4dGV0cyB0byBjb21wcmVzcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBsaXN0IG9mIHN0cmluZ3MuCisKKyAgICAgICAgIiIiCisgICAgICAgIGJlc3RfZG91YmxlY29sb25fc3RhcnQgPSAtMQorICAgICAgICBiZXN0X2RvdWJsZWNvbG9uX2xlbiA9IDAKKyAgICAgICAgZG91YmxlY29sb25fc3RhcnQgPSAtMQorICAgICAgICBkb3VibGVjb2xvbl9sZW4gPSAwCisgICAgICAgIGZvciBpbmRleCwgaGV4dGV0IGluIGVudW1lcmF0ZShoZXh0ZXRzKToKKyAgICAgICAgICAgIGlmIGhleHRldCA9PSAnMCc6CisgICAgICAgICAgICAgICAgZG91YmxlY29sb25fbGVuICs9IDEKKyAgICAgICAgICAgICAgICBpZiBkb3VibGVjb2xvbl9zdGFydCA9PSAtMToKKyAgICAgICAgICAgICAgICAgICAgIyBTdGFydCBvZiBhIHNlcXVlbmNlIG9mIHplcm9zLgorICAgICAgICAgICAgICAgICAgICBkb3VibGVjb2xvbl9zdGFydCA9IGluZGV4CisgICAgICAgICAgICAgICAgaWYgZG91YmxlY29sb25fbGVuID4gYmVzdF9kb3VibGVjb2xvbl9sZW46CisgICAgICAgICAgICAgICAgICAgICMgVGhpcyBpcyB0aGUgbG9uZ2VzdCBzZXF1ZW5jZSBvZiB6ZXJvcyBzbyBmYXIuCisgICAgICAgICAgICAgICAgICAgIGJlc3RfZG91YmxlY29sb25fbGVuID0gZG91YmxlY29sb25fbGVuCisgICAgICAgICAgICAgICAgICAgIGJlc3RfZG91YmxlY29sb25fc3RhcnQgPSBkb3VibGVjb2xvbl9zdGFydAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkb3VibGVjb2xvbl9sZW4gPSAwCisgICAgICAgICAgICAgICAgZG91YmxlY29sb25fc3RhcnQgPSAtMQorCisgICAgICAgIGlmIGJlc3RfZG91YmxlY29sb25fbGVuID4gMToKKyAgICAgICAgICAgIGJlc3RfZG91YmxlY29sb25fZW5kID0gKGJlc3RfZG91YmxlY29sb25fc3RhcnQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVzdF9kb3VibGVjb2xvbl9sZW4pCisgICAgICAgICAgICAjIEZvciB6ZXJvcyBhdCB0aGUgZW5kIG9mIHRoZSBhZGRyZXNzLgorICAgICAgICAgICAgaWYgYmVzdF9kb3VibGVjb2xvbl9lbmQgPT0gbGVuKGhleHRldHMpOgorICAgICAgICAgICAgICAgIGhleHRldHMgKz0gWycnXQorICAgICAgICAgICAgaGV4dGV0c1tiZXN0X2RvdWJsZWNvbG9uX3N0YXJ0OmJlc3RfZG91YmxlY29sb25fZW5kXSA9IFsnJ10KKyAgICAgICAgICAgICMgRm9yIHplcm9zIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFkZHJlc3MuCisgICAgICAgICAgICBpZiBiZXN0X2RvdWJsZWNvbG9uX3N0YXJ0ID09IDA6CisgICAgICAgICAgICAgICAgaGV4dGV0cyA9IFsnJ10gKyBoZXh0ZXRzCisKKyAgICAgICAgcmV0dXJuIGhleHRldHMKKworICAgIGRlZiBfc3RyaW5nX2Zyb21faXBfaW50KHNlbGYsIGlwX2ludD1Ob25lKToKKyAgICAgICAgIiIiVHVybnMgYSAxMjgtYml0IGludGVnZXIgaW50byBoZXhhZGVjaW1hbCBub3RhdGlvbi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgaXBfaW50OiBBbiBpbnRlZ2VyLCB0aGUgSVAgYWRkcmVzcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBzdHJpbmcsIHRoZSBoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgYWRkcmVzcy4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBWYWx1ZUVycm9yOiBUaGUgYWRkcmVzcyBpcyBiaWdnZXIgdGhhbiAxMjggYml0cyBvZiBhbGwgb25lcy4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgaXBfaW50IGlzIE5vbmU6CisgICAgICAgICAgICBpcF9pbnQgPSBpbnQoc2VsZi5faXApCisKKyAgICAgICAgaWYgaXBfaW50ID4gc2VsZi5fQUxMX09ORVM6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJUHY2IGFkZHJlc3MgaXMgdG9vIGxhcmdlJykKKworICAgICAgICBoZXhfc3RyID0gJyUwMzJ4JyAlIGlwX2ludAorICAgICAgICBoZXh0ZXRzID0gWycleCcgJSBpbnQoaGV4X3N0clt4OngrNF0sIDE2KSBmb3IgeCBpbiByYW5nZSgwLCAzMiwgNCldCisKKyAgICAgICAgaGV4dGV0cyA9IHNlbGYuX2NvbXByZXNzX2hleHRldHMoaGV4dGV0cykKKyAgICAgICAgcmV0dXJuICc6Jy5qb2luKGhleHRldHMpCisKKyAgICBkZWYgX2V4cGxvZGVfc2hvcnRoYW5kX2lwX3N0cmluZyhzZWxmKToKKyAgICAgICAgIiIiRXhwYW5kIGEgc2hvcnRlbmVkIElQdjYgYWRkcmVzcy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgaXBfc3RyOiBBIHN0cmluZywgdGhlIElQdjYgYWRkcmVzcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBzdHJpbmcsIHRoZSBleHBhbmRlZCBJUHY2IGFkZHJlc3MuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZiwgSVB2Nk5ldHdvcmspOgorICAgICAgICAgICAgaXBfc3RyID0gc3RyKHNlbGYubmV0d29ya19hZGRyZXNzKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc2VsZiwgSVB2NkludGVyZmFjZSk6CisgICAgICAgICAgICBpcF9zdHIgPSBzdHIoc2VsZi5pcCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlwX3N0ciA9IHN0cihzZWxmKQorCisgICAgICAgIGlwX2ludCA9IHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhpcF9zdHIpCisgICAgICAgIGhleF9zdHIgPSAnJTAzMngnICUgaXBfaW50CisgICAgICAgIHBhcnRzID0gW2hleF9zdHJbeDp4KzRdIGZvciB4IGluIHJhbmdlKDAsIDMyLCA0KV0KKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLCAoX0Jhc2VOZXR3b3JrLCBJUHY2SW50ZXJmYWNlKSk6CisgICAgICAgICAgICByZXR1cm4gJyVzLyVkJyAlICgnOicuam9pbihwYXJ0cyksIHNlbGYuX3ByZWZpeGxlbikKKyAgICAgICAgcmV0dXJuICc6Jy5qb2luKHBhcnRzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1heF9wcmVmaXhsZW4oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9tYXhfcHJlZml4bGVuCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmVyc2lvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ZlcnNpb24KKworCitjbGFzcyBJUHY2QWRkcmVzcyhfQmFzZVY2LCBfQmFzZUFkZHJlc3MpOgorCisgICAgIiIiUmVwcmVzZW50IGFuZCBtYW5pcHVsYXRlIHNpbmdsZSBJUHY2IEFkZHJlc3Nlcy4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKyAgICAgICAgIiIiSW5zdGFudGlhdGUgYSBuZXcgSVB2NiBhZGRyZXNzIG9iamVjdC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgYWRkcmVzczogQSBzdHJpbmcgb3IgaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIElQCisKKyAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCBhbiBpbnRlZ2VyIGNhbiBiZSBwYXNzZWQsIHNvCisgICAgICAgICAgICAgIElQdjZBZGRyZXNzKCcyMDAxOmRiODo6JykgPT0KKyAgICAgICAgICAgICAgICBJUHY2QWRkcmVzcyg0MjU0MDc2NjQxMTI4MjU5Mjg1NjkwMzk4NDk1MTY1MzgyNjU2MCkKKyAgICAgICAgICAgICAgb3IsIG1vcmUgZ2VuZXJhbGx5CisgICAgICAgICAgICAgIElQdjZBZGRyZXNzKGludChJUHY2QWRkcmVzcygnMjAwMTpkYjg6OicpKSkgPT0KKyAgICAgICAgICAgICAgICBJUHY2QWRkcmVzcygnMjAwMTpkYjg6OicpCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgQWRkcmVzc1ZhbHVlRXJyb3I6IElmIGFkZHJlc3MgaXNuJ3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MuCisKKyAgICAgICAgIiIiCisgICAgICAgIF9CYXNlQWRkcmVzcy5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQorICAgICAgICBfQmFzZVY2Ll9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCisKKyAgICAgICAgIyBFZmZpY2llbnQgY29uc3RydWN0b3IgZnJvbSBpbnRlZ2VyLgorICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGludCk6CisgICAgICAgICAgICBzZWxmLl9jaGVja19pbnRfYWRkcmVzcyhhZGRyZXNzKQorICAgICAgICAgICAgc2VsZi5faXAgPSBhZGRyZXNzCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIENvbnN0cnVjdGluZyBmcm9tIGEgcGFja2VkIGFkZHJlc3MKKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBieXRlcyk6CisgICAgICAgICAgICBzZWxmLl9jaGVja19wYWNrZWRfYWRkcmVzcyhhZGRyZXNzLCAxNikKKyAgICAgICAgICAgIHNlbGYuX2lwID0gaW50LmZyb21fYnl0ZXMoYWRkcmVzcywgJ2JpZycpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIEFzc3VtZSBpbnB1dCBhcmd1bWVudCB0byBiZSBzdHJpbmcgb3IgYW55IG9iamVjdCByZXByZXNlbnRhdGlvbgorICAgICAgICAjIHdoaWNoIGNvbnZlcnRzIGludG8gYSBmb3JtYXR0ZWQgSVAgc3RyaW5nLgorICAgICAgICBhZGRyX3N0ciA9IHN0cihhZGRyZXNzKQorICAgICAgICBzZWxmLl9pcCA9IHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhhZGRyX3N0cikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYWNrZWQoc2VsZik6CisgICAgICAgICIiIlRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBhZGRyZXNzLiIiIgorICAgICAgICByZXR1cm4gdjZfaW50X3RvX3BhY2tlZChzZWxmLl9pcCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19tdWx0aWNhc3Qoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIG11bHRpY2FzdCB1c2UuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBhIG11bHRpY2FzdCBhZGRyZXNzLgorICAgICAgICAgICAgU2VlIFJGQyAyMzczIDIuNyBmb3IgZGV0YWlscy4KKworICAgICAgICAiIiIKKyAgICAgICAgbXVsdGljYXN0X25ldHdvcmsgPSBJUHY2TmV0d29yaygnZmYwMDo6LzgnKQorICAgICAgICByZXR1cm4gc2VsZiBpbiBtdWx0aWNhc3RfbmV0d29yaworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3Jlc2VydmVkKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIG90aGVyd2lzZSBJRVRGIHJlc2VydmVkLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgd2l0aGluIG9uZSBvZiB0aGUKKyAgICAgICAgICAgIHJlc2VydmVkIElQdjYgTmV0d29yayByYW5nZXMuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJlc2VydmVkX25ldHdvcmtzID0gW0lQdjZOZXR3b3JrKCc6Oi84JyksIElQdjZOZXR3b3JrKCcxMDA6Oi84JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDA6Oi83JyksIElQdjZOZXR3b3JrKCc0MDA6Oi82JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCc4MDA6Oi81JyksIElQdjZOZXR3b3JrKCcxMDAwOjovNCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnNDAwMDo6LzMnKSwgSVB2Nk5ldHdvcmsoJzYwMDA6Oi8zJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCc4MDAwOjovMycpLCBJUHY2TmV0d29yaygnQTAwMDo6LzMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJ0MwMDA6Oi8zJyksIElQdjZOZXR3b3JrKCdFMDAwOjovNCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnRjAwMDo6LzUnKSwgSVB2Nk5ldHdvcmsoJ0Y4MDA6Oi82JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCdGRTAwOjovOScpXQorCisgICAgICAgIHJldHVybiBhbnkoc2VsZiBpbiB4IGZvciB4IGluIHJlc2VydmVkX25ldHdvcmtzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX2xpbmtfbG9jYWwoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIGxpbmstbG9jYWwuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIgUkZDIDQyOTEuCisKKyAgICAgICAgIiIiCisgICAgICAgIGxpbmtsb2NhbF9uZXR3b3JrID0gSVB2Nk5ldHdvcmsoJ2ZlODA6Oi8xMCcpCisgICAgICAgIHJldHVybiBzZWxmIGluIGxpbmtsb2NhbF9uZXR3b3JrCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfc2l0ZV9sb2NhbChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3Igc2l0ZS1sb2NhbC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIHNpdGUtbG9jYWwgYWRkcmVzcyBzcGFjZSBoYXMgYmVlbiBkZXByZWNhdGVkIGJ5IFJGQyAzODc5LgorICAgICAgICBVc2UgaXNfcHJpdmF0ZSB0byB0ZXN0IGlmIHRoaXMgYWRkcmVzcyBpcyBpbiB0aGUgc3BhY2Ugb2YgdW5pcXVlIGxvY2FsCisgICAgICAgIGFkZHJlc3NlcyBhcyBkZWZpbmVkIGJ5IFJGQyA0MTkzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgcGVyIFJGQyAzNTEzIDIuNS42LgorCisgICAgICAgICIiIgorICAgICAgICBzaXRlbG9jYWxfbmV0d29yayA9IElQdjZOZXR3b3JrKCdmZWMwOjovMTAnKQorICAgICAgICByZXR1cm4gc2VsZiBpbiBzaXRlbG9jYWxfbmV0d29yaworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3ByaXZhdGUoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhpcyBhZGRyZXNzIGlzIGFsbG9jYXRlZCBmb3IgcHJpdmF0ZSBuZXR3b3Jrcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIHBlciBSRkMgNDE5My4KKworICAgICAgICAiIiIKKyAgICAgICAgcHJpdmF0ZV9uZXR3b3JrID0gSVB2Nk5ldHdvcmsoJ2ZjMDA6Oi83JykKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gcHJpdmF0ZV9uZXR3b3JrCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfdW5zcGVjaWZpZWQoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgdW5zcGVjaWZpZWQuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGlzIGlzIHRoZSB1bnNwZWNpZmllZCBhZGRyZXNzIGFzIGRlZmluZWQgaW4KKyAgICAgICAgICAgIFJGQyAyMzczIDIuNS4yLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5faXAgPT0gMAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX2xvb3BiYWNrKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIGEgbG9vcGJhY2sgYWRkcmVzcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGEgbG9vcGJhY2sgYWRkcmVzcyBhcyBkZWZpbmVkIGluCisgICAgICAgICAgICBSRkMgMjM3MyAyLjUuMy4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lwID09IDEKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpcHY0X21hcHBlZChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBJUHY0IG1hcHBlZCBhZGRyZXNzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBJZiB0aGUgSVB2NiBhZGRyZXNzIGlzIGEgdjQgbWFwcGVkIGFkZHJlc3MsIHJldHVybiB0aGUKKyAgICAgICAgICAgIElQdjQgbWFwcGVkIGFkZHJlc3MuIFJldHVybiBOb25lIG90aGVyd2lzZS4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgKHNlbGYuX2lwID4+IDMyKSAhPSAweEZGRkY6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gSVB2NEFkZHJlc3Moc2VsZi5faXAgJiAweEZGRkZGRkZGKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHRlcmVkbyhzZWxmKToKKyAgICAgICAgIiIiVHVwbGUgb2YgZW1iZWRkZWQgdGVyZWRvIElQcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgVHVwbGUgb2YgdGhlIChzZXJ2ZXIsIGNsaWVudCkgSVBzIG9yIE5vbmUgaWYgdGhlIGFkZHJlc3MKKyAgICAgICAgICAgIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgdGVyZWRvIGFkZHJlc3MgKGRvZXNuJ3Qgc3RhcnQgd2l0aAorICAgICAgICAgICAgMjAwMTo6LzMyKQorCisgICAgICAgICIiIgorICAgICAgICBpZiAoc2VsZi5faXAgPj4gOTYpICE9IDB4MjAwMTAwMDA6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gKElQdjRBZGRyZXNzKChzZWxmLl9pcCA+PiA2NCkgJiAweEZGRkZGRkZGKSwKKyAgICAgICAgICAgICAgICBJUHY0QWRkcmVzcyh+c2VsZi5faXAgJiAweEZGRkZGRkZGKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzaXh0b2ZvdXIoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgSVB2NCA2dG80IGVtYmVkZGVkIGFkZHJlc3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFRoZSBJUHY0IDZ0bzQtZW1iZWRkZWQgYWRkcmVzcyBpZiBwcmVzZW50IG9yIE5vbmUgaWYgdGhlCisgICAgICAgICAgICBhZGRyZXNzIGRvZXNuJ3QgYXBwZWFyIHRvIGNvbnRhaW4gYSA2dG80IGVtYmVkZGVkIGFkZHJlc3MuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIChzZWxmLl9pcCA+PiAxMTIpICE9IDB4MjAwMjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBJUHY0QWRkcmVzcygoc2VsZi5faXAgPj4gODApICYgMHhGRkZGRkZGRikKKworCitjbGFzcyBJUHY2SW50ZXJmYWNlKElQdjZBZGRyZXNzKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCAoYnl0ZXMsIGludCkpOgorICAgICAgICAgICAgSVB2NkFkZHJlc3MuX19pbml0X18oc2VsZiwgYWRkcmVzcykKKyAgICAgICAgICAgIHNlbGYubmV0d29yayA9IElQdjZOZXR3b3JrKHNlbGYuX2lwKQorICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgYWRkciA9IF9zcGxpdF9vcHRpb25hbF9uZXRtYXNrKGFkZHJlc3MpCisgICAgICAgIElQdjZBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJbMF0pCisgICAgICAgIHNlbGYubmV0d29yayA9IElQdjZOZXR3b3JrKGFkZHJlc3MsIHN0cmljdD1GYWxzZSkKKyAgICAgICAgc2VsZi5uZXRtYXNrID0gc2VsZi5uZXR3b3JrLm5ldG1hc2sKKyAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5uZXR3b3JrLl9wcmVmaXhsZW4KKyAgICAgICAgc2VsZi5ob3N0bWFzayA9IHNlbGYubmV0d29yay5ob3N0bWFzaworCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJWQnICUgKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmV0d29yay5wcmVmaXhsZW4pCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgYWRkcmVzc19lcXVhbCA9IElQdjZBZGRyZXNzLl9fZXFfXyhzZWxmLCBvdGhlcikKKyAgICAgICAgaWYgbm90IGFkZHJlc3NfZXF1YWwgb3IgYWRkcmVzc19lcXVhbCBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBhZGRyZXNzX2VxdWFsCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm5ldHdvcmsgPT0gb3RoZXIubmV0d29yaworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAjIEFuIGludGVyZmFjZSB3aXRoIGFuIGFzc29jaWF0ZWQgbmV0d29yayBpcyBOT1QgdGhlCisgICAgICAgICAgICAjIHNhbWUgYXMgYW4gdW5hc3NvY2lhdGVkIGFkZHJlc3MuIFRoYXQncyB3aHkgdGhlIGhhc2gKKyAgICAgICAgICAgICMgdGFrZXMgdGhlIGV4dHJhIGluZm8gaW50byBhY2NvdW50LgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgYWRkcmVzc19sZXNzID0gSVB2NkFkZHJlc3MuX19sdF9fKHNlbGYsIG90aGVyKQorICAgICAgICBpZiBhZGRyZXNzX2xlc3MgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubmV0d29yayA8IG90aGVyLm5ldHdvcmsKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyBXZSAqZG8qIGFsbG93IGFkZHJlc3NlcyBhbmQgaW50ZXJmYWNlcyB0byBiZSBzb3J0ZWQuIFRoZQorICAgICAgICAgICAgIyB1bmFzc29jaWF0ZWQgYWRkcmVzcyBpcyBjb25zaWRlcmVkIGxlc3MgdGhhbiBhbGwgaW50ZXJmYWNlcy4KKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5faXAgXiBzZWxmLl9wcmVmaXhsZW4gXiBpbnQoc2VsZi5uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpcChzZWxmKToKKyAgICAgICAgcmV0dXJuIElQdjZBZGRyZXNzKHNlbGYuX2lwKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdpdGhfcHJlZml4bGVuKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4pCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2l0aF9uZXRtYXNrKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5ldG1hc2spCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2l0aF9ob3N0bWFzayhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lcycgJSAoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3N0bWFzaykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc191bnNwZWNpZmllZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lwID09IDAgYW5kIHNlbGYubmV0d29yay5pc191bnNwZWNpZmllZAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX2xvb3BiYWNrKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5faXAgPT0gMSBhbmQgc2VsZi5uZXR3b3JrLmlzX2xvb3BiYWNrCisKKworY2xhc3MgSVB2Nk5ldHdvcmsoX0Jhc2VWNiwgX0Jhc2VOZXR3b3JrKToKKworICAgICIiIlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhbmQgbWFuaXB1bGF0ZXMgMTI4LWJpdCBJUHY2IG5ldHdvcmtzLgorCisgICAgQXR0cmlidXRlczogW2V4YW1wbGVzIGZvciBJUHY2KCcyMDAxOmRiODo6MTAwMC8xMjQnKV0KKyAgICAgICAgLm5ldHdvcmtfYWRkcmVzczogSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxMDAwJykKKyAgICAgICAgLmhvc3RtYXNrOiBJUHY2QWRkcmVzcygnOjpmJykKKyAgICAgICAgLmJyb2FkY2FzdF9hZGRyZXNzOiBJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEwMGYnKQorICAgICAgICAubmV0bWFzazogSVB2NkFkZHJlc3MoJ2ZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmMCcpCisgICAgICAgIC5wcmVmaXhsZW46IDEyNAorCisgICAgIiIiCisKKyAgICAjIENsYXNzIHRvIHVzZSB3aGVuIGNyZWF0aW5nIGFkZHJlc3Mgb2JqZWN0cworICAgIF9hZGRyZXNzX2NsYXNzID0gSVB2NkFkZHJlc3MKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzLCBzdHJpY3Q9VHJ1ZSk6CisgICAgICAgICIiIkluc3RhbnRpYXRlIGEgbmV3IElQdjYgTmV0d29yayBvYmplY3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGFkZHJlc3M6IEEgc3RyaW5nIG9yIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBJUHY2IG5ldHdvcmsgb3IgdGhlCisgICAgICAgICAgICAgIElQIGFuZCBwcmVmaXgvbmV0bWFzay4KKyAgICAgICAgICAgICAgJzIwMDE6ZGI4OjovMTI4JworICAgICAgICAgICAgICAnMjAwMTpkYjg6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDAvMTI4JworICAgICAgICAgICAgICAnMjAwMTpkYjg6OicKKyAgICAgICAgICAgICAgYXJlIGFsbCBmdW5jdGlvbmFsbHkgdGhlIHNhbWUgaW4gSVB2Ni4gIFRoYXQgaXMgdG8gc2F5LAorICAgICAgICAgICAgICBmYWlsaW5nIHRvIHByb3ZpZGUgYSBzdWJuZXRtYXNrIHdpbGwgY3JlYXRlIGFuIG9iamVjdCB3aXRoCisgICAgICAgICAgICAgIGEgbWFzayBvZiAvMTI4LgorCisgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgYW4gaW50ZWdlciBjYW4gYmUgcGFzc2VkLCBzbworICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6OicpID09CisgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoNDI1NDA3NjY0MTEyODI1OTI4NTY5MDM5ODQ5NTE2NTM4MjY1NjApCisgICAgICAgICAgICAgIG9yLCBtb3JlIGdlbmVyYWxseQorICAgICAgICAgICAgICBJUHY2TmV0d29yayhpbnQoSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjonKSkpID09CisgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjonKQorCisgICAgICAgICAgICBzdHJpY3Q6IEEgYm9vbGVhbi4gSWYgdHJ1ZSwgZW5zdXJlIHRoYXQgd2UgaGF2ZSBiZWVuIHBhc3NlZAorICAgICAgICAgICAgICBBIHRydWUgbmV0d29yayBhZGRyZXNzLCBlZywgMjAwMTpkYjg6OjEwMDAvMTI0IGFuZCBub3QgYW4KKyAgICAgICAgICAgICAgSVAgYWRkcmVzcyBvbiBhIG5ldHdvcmssIGVnLCAyMDAxOmRiODo6MS8xMjQuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgQWRkcmVzc1ZhbHVlRXJyb3I6IElmIGFkZHJlc3MgaXNuJ3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MuCisgICAgICAgICAgICBOZXRtYXNrVmFsdWVFcnJvcjogSWYgdGhlIG5ldG1hc2sgaXNuJ3QgdmFsaWQgZm9yCisgICAgICAgICAgICAgIGFuIElQdjYgYWRkcmVzcy4KKyAgICAgICAgICAgIFZhbHVlRXJyb3I6IElmIHN0cmljdCB3YXMgVHJ1ZSBhbmQgYSBuZXR3b3JrIGFkZHJlc3Mgd2FzIG5vdAorICAgICAgICAgICAgICBzdXBwbGllZC4KKworICAgICAgICAiIiIKKyAgICAgICAgX0Jhc2VWNi5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQorICAgICAgICBfQmFzZU5ldHdvcmsuX19pbml0X18oc2VsZiwgYWRkcmVzcykKKworICAgICAgICAjIEVmZmljaWVudCBjb25zdHJ1Y3RvciBmcm9tIGludGVnZXIuCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgaW50KToKKyAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NkFkZHJlc3MoYWRkcmVzcykKKyAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KKyAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjZBZGRyZXNzKHNlbGYuX0FMTF9PTkVTKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBDb25zdHJ1Y3RpbmcgZnJvbSBhIHBhY2tlZCBhZGRyZXNzCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgYnl0ZXMpOgorICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY2QWRkcmVzcyhhZGRyZXNzKQorICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NkFkZHJlc3Moc2VsZi5fQUxMX09ORVMpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIEFzc3VtZSBpbnB1dCBhcmd1bWVudCB0byBiZSBzdHJpbmcgb3IgYW55IG9iamVjdCByZXByZXNlbnRhdGlvbgorICAgICAgICAjIHdoaWNoIGNvbnZlcnRzIGludG8gYSBmb3JtYXR0ZWQgSVAgcHJlZml4IHN0cmluZy4KKyAgICAgICAgYWRkciA9IF9zcGxpdF9vcHRpb25hbF9uZXRtYXNrKGFkZHJlc3MpCisKKyAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY2QWRkcmVzcyhzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoYWRkclswXSkpCisKKyAgICAgICAgaWYgbGVuKGFkZHIpID09IDI6CisgICAgICAgICAgICBpZiBzZWxmLl9pc192YWxpZF9uZXRtYXNrKGFkZHJbMV0pOgorICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IGludChhZGRyWzFdKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBOZXRtYXNrVmFsdWVFcnJvcignJXIgaXMgbm90IGEgdmFsaWQgbmV0bWFzaycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBhZGRyWzFdKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorCisgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjZBZGRyZXNzKHNlbGYuX2lwX2ludF9mcm9tX3ByZWZpeChzZWxmLl9wcmVmaXhsZW4pKQorICAgICAgICBpZiBzdHJpY3Q6CisgICAgICAgICAgICBpZiAoSVB2NkFkZHJlc3MoaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSAmIGludChzZWxmLm5ldG1hc2spKSAhPQorICAgICAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCclcyBoYXMgaG9zdCBiaXRzIHNldCcgJSBzZWxmKQorICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjZBZGRyZXNzKGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykgJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludChzZWxmLm5ldG1hc2spKQorCisgICAgICAgIGlmIHNlbGYuX3ByZWZpeGxlbiA9PSAoc2VsZi5fbWF4X3ByZWZpeGxlbiAtIDEpOgorICAgICAgICAgICAgc2VsZi5ob3N0cyA9IHNlbGYuX19pdGVyX18KKworICAgIGRlZiBfaXNfdmFsaWRfbmV0bWFzayhzZWxmLCBwcmVmaXhsZW4pOgorICAgICAgICAiIiJWZXJpZnkgdGhhdCB0aGUgbmV0bWFzay9wcmVmaXhsZW4gaXMgdmFsaWQuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHByZWZpeGxlbjogQSBzdHJpbmcsIHRoZSBuZXRtYXNrIGluIHByZWZpeCBsZW5ndGggZm9ybWF0LgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIHByZWZpeCByZXByZXNlbnRzIGEgdmFsaWQgSVB2NgorICAgICAgICAgICAgbmV0bWFzay4KKworICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcHJlZml4bGVuID0gaW50KHByZWZpeGxlbikKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIDAgPD0gcHJlZml4bGVuIDw9IHNlbGYuX21heF9wcmVmaXhsZW4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19zaXRlX2xvY2FsKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBzaXRlLWxvY2FsLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgc2l0ZS1sb2NhbCBhZGRyZXNzIHNwYWNlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYnkgUkZDIDM4NzkuCisgICAgICAgIFVzZSBpc19wcml2YXRlIHRvIHRlc3QgaWYgdGhpcyBhZGRyZXNzIGlzIGluIHRoZSBzcGFjZSBvZiB1bmlxdWUgbG9jYWwKKyAgICAgICAgYWRkcmVzc2VzIGFzIGRlZmluZWQgYnkgUkZDIDQxOTMuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIgUkZDIDM1MTMgMi41LjYuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAoc2VsZi5uZXR3b3JrX2FkZHJlc3MuaXNfc2l0ZV9sb2NhbCBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzLmlzX3NpdGVfbG9jYWwpCmRpZmYgLS1naXQgYS9MaWIvanNvbi9kZWNvZGVyLnB5IGIvTGliL2pzb24vZGVjb2Rlci5weQppbmRleCA5MzhlYmZmLi41MWMzYWE3IDEwMDY0NAotLS0gYS9MaWIvanNvbi9kZWNvZGVyLnB5CisrKyBiL0xpYi9qc29uL2RlY29kZXIucHkKQEAgLTEyMSw4ICsxMjEsNyBAQAogICAgICAgICAgICAgICAgIG1zZyA9ICJJbnZhbGlkIFxcdVhYWFggZXNjYXBlIgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKG1zZywgcywgZW5kKSkKICAgICAgICAgICAgIHVuaSA9IGludChlc2MsIDE2KQotICAgICAgICAgICAgIyBDaGVjayBmb3Igc3Vycm9nYXRlIHBhaXIgb24gVUNTLTQgc3lzdGVtcwotICAgICAgICAgICAgaWYgMHhkODAwIDw9IHVuaSA8PSAweGRiZmYgYW5kIHN5cy5tYXh1bmljb2RlID4gNjU1MzU6CisgICAgICAgICAgICBpZiAweGQ4MDAgPD0gdW5pIDw9IDB4ZGJmZjoKICAgICAgICAgICAgICAgICBtc2cgPSAiSW52YWxpZCBcXHVYWFhYXFx1WFhYWCBzdXJyb2dhdGUgcGFpciIKICAgICAgICAgICAgICAgICBpZiBub3Qgc1tlbmQgKyA1OmVuZCArIDddID09ICdcXHUnOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGVycm1zZyhtc2csIHMsIGVuZCkpCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9fX21haW5fXy5weSBiL0xpYi9saWIydG8zL19fbWFpbl9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNjg4YmEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvbGliMnRvMy9fX21haW5fXy5weQpAQCAtMCwwICsxLDQgQEAKK2ltcG9ydCBzeXMKK2Zyb20gLm1haW4gaW1wb3J0IG1haW4KKworc3lzLmV4aXQobWFpbigibGliMnRvMy5maXhlcyIpKQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXJfYmFzZS5weSBiL0xpYi9saWIydG8zL2ZpeGVyX2Jhc2UucHkKaW5kZXggYWZjMDQ2Ny4uYjE3NjA1NiAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXJfYmFzZS5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcl9iYXNlLnB5CkBAIC0yNyw3ICsyNyw2IEBACiAgICAgcGF0dGVybl90cmVlID0gTm9uZSAjIFRyZWUgcmVwcmVzZW50YXRpb24gb2YgdGhlIHBhdHRlcm4KICAgICBvcHRpb25zID0gTm9uZSAgIyBPcHRpb25zIG9iamVjdCBwYXNzZWQgdG8gaW5pdGlhbGl6ZXIKICAgICBmaWxlbmFtZSA9IE5vbmUgIyBUaGUgZmlsZW5hbWUgKHNldCBieSBzZXRfZmlsZW5hbWUpCi0gICAgbG9nZ2VyID0gTm9uZSAgICMgQSBsb2dnZXIgKHNldCBieSBzZXRfZmlsZW5hbWUpCiAgICAgbnVtYmVycyA9IGl0ZXJ0b29scy5jb3VudCgxKSAjIEZvciBuZXdfbmFtZSgpCiAgICAgdXNlZF9uYW1lcyA9IHNldCgpICMgQSBzZXQgb2YgYWxsIHVzZWQgTkFNRXMKICAgICBvcmRlciA9ICJwb3N0IiAjIERvZXMgdGhlIGZpeGVyIHByZWZlciBwcmUtIG9yIHBvc3Qtb3JkZXIgdHJhdmVyc2FsCkBAIC03MCwxMiArNjksMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aF90cmVlPVRydWUpCiAKICAgICBkZWYgc2V0X2ZpbGVuYW1lKHNlbGYsIGZpbGVuYW1lKToKLSAgICAgICAgIiIiU2V0IHRoZSBmaWxlbmFtZSwgYW5kIGEgbG9nZ2VyIGRlcml2ZWQgZnJvbSBpdC4KKyAgICAgICAgIiIiU2V0IHRoZSBmaWxlbmFtZS4KIAogICAgICAgICBUaGUgbWFpbiByZWZhY3RvcmluZyB0b29sIHNob3VsZCBjYWxsIHRoaXMuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKLSAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihmaWxlbmFtZSkKIAogICAgIGRlZiBtYXRjaChzZWxmLCBub2RlKToKICAgICAgICAgIiIiUmV0dXJucyBtYXRjaCBmb3IgYSBnaXZlbiBwYXJzZSB0cmVlIG5vZGUuCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9weXRyZWUucHkgYi9MaWIvbGliMnRvMy9weXRyZWUucHkKaW5kZXggZmE0OTQyZjMuLjE3Y2JmMGEgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3B5dHJlZS5weQorKysgYi9MaWIvbGliMnRvMy9weXRyZWUucHkKQEAgLTEwOSwyNiArMTA5LDYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAotICAgIGRlZiBzZXRfcHJlZml4KHNlbGYsIHByZWZpeCk6Ci0gICAgICAgICIiIgotICAgICAgICBTZXQgdGhlIHByZWZpeCBmb3IgdGhlIG5vZGUgKHNlZSBMZWFmIGNsYXNzKS4KLQotICAgICAgICBERVBSRUNBVEVEOyB1c2UgdGhlIHByZWZpeCBwcm9wZXJ0eSBkaXJlY3RseS4KLSAgICAgICAgIiIiCi0gICAgICAgIHdhcm5pbmdzLndhcm4oInNldF9wcmVmaXgoKSBpcyBkZXByZWNhdGVkOyB1c2UgdGhlIHByZWZpeCBwcm9wZXJ0eSIsCi0gICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgICAgIHNlbGYucHJlZml4ID0gcHJlZml4Ci0KLSAgICBkZWYgZ2V0X3ByZWZpeChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiB0aGUgcHJlZml4IGZvciB0aGUgbm9kZSAoc2VlIExlYWYgY2xhc3MpLgotCi0gICAgICAgIERFUFJFQ0FURUQ7IHVzZSB0aGUgcHJlZml4IHByb3BlcnR5IGRpcmVjdGx5LgotICAgICAgICAiIiIKLSAgICAgICAgd2FybmluZ3Mud2FybigiZ2V0X3ByZWZpeCgpIGlzIGRlcHJlY2F0ZWQ7IHVzZSB0aGUgcHJlZml4IHByb3BlcnR5IiwKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICAgICAgcmV0dXJuIHNlbGYucHJlZml4Ci0KICAgICBkZWYgcmVwbGFjZShzZWxmLCBuZXcpOgogICAgICAgICAiIiJSZXBsYWNlIHRoaXMgbm9kZSB3aXRoIGEgbmV3IG9uZSBpbiB0aGUgcGFyZW50LiIiIgogICAgICAgICBhc3NlcnQgc2VsZi5wYXJlbnQgaXMgbm90IE5vbmUsIHN0cihzZWxmKQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvcmVmYWN0b3IucHkgYi9MaWIvbGliMnRvMy9yZWZhY3Rvci5weQppbmRleCAzOGZiOGVkLi4yMDFlMTkzIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9yZWZhY3Rvci5weQorKysgYi9MaWIvbGliMnRvMy9yZWZhY3Rvci5weQpAQCAtNTY2LDcgKzU2Niw3IEBACiAgICAgICAgIGJsb2NrX2xpbmVubyA9IE5vbmUKICAgICAgICAgaW5kZW50ID0gTm9uZQogICAgICAgICBsaW5lbm8gPSAwCi0gICAgICAgIGZvciBsaW5lIGluIGlucHV0LnNwbGl0bGluZXMoVHJ1ZSk6CisgICAgICAgIGZvciBsaW5lIGluIGlucHV0LnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSk6CiAgICAgICAgICAgICBsaW5lbm8gKz0gMQogICAgICAgICAgICAgaWYgbGluZS5sc3RyaXAoKS5zdGFydHN3aXRoKHNlbGYuUFMxKToKICAgICAgICAgICAgICAgICBpZiBibG9jayBpcyBub3QgTm9uZToKQEAgLTYxMCw3ICs2MTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVubywgZXJyLl9fY2xhc3NfXy5fX25hbWVfXywgZXJyKQogICAgICAgICAgICAgcmV0dXJuIGJsb2NrCiAgICAgICAgIGlmIHNlbGYucmVmYWN0b3JfdHJlZSh0cmVlLCBmaWxlbmFtZSk6Ci0gICAgICAgICAgICBuZXcgPSBzdHIodHJlZSkuc3BsaXRsaW5lcyhUcnVlKQorICAgICAgICAgICAgbmV3ID0gc3RyKHRyZWUpLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKICAgICAgICAgICAgICMgVW5kbyB0aGUgYWRqdXN0bWVudCBvZiB0aGUgbGluZSBudW1iZXJzIGluIHdyYXBfdG9rcygpIGJlbG93LgogICAgICAgICAgICAgY2xpcHBlZCwgbmV3ID0gbmV3WzpsaW5lbm8tMV0sIG5ld1tsaW5lbm8tMTpdCiAgICAgICAgICAgICBhc3NlcnQgY2xpcHBlZCA9PSBbIlxuIl0gKiAobGluZW5vLTEpLCBjbGlwcGVkCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3B5dHJlZS5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcHl0cmVlLnB5CmluZGV4IGFjN2Q5MDAuLmEyYWIxZjMgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcHl0cmVlLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcHl0cmVlLnB5CkBAIC0zMSwyMyArMzEsNiBAQAogCiAgICAgIiIiVW5pdCB0ZXN0cyBmb3Igbm9kZXMgKEJhc2UsIExlYWYsIE5vZGUpLiIiIgogCi0gICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMiw2KToKLSAgICAgICAgIyB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyBpcyBuZXcgaW4gMi42LgotICAgICAgICBkZWYgdGVzdF9kZXByZWNhdGVkX3ByZWZpeF9tZXRob2RzKHNlbGYpOgotICAgICAgICAgICAgbCA9IHB5dHJlZS5MZWFmKDEwMCwgImZvbyIpCi0gICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiYWx3YXlzIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobC5nZXRfcHJlZml4KCksICIiKQotICAgICAgICAgICAgICAgIGwuc2V0X3ByZWZpeCgiaGkiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsLnByZWZpeCwgImhpIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAyKQotICAgICAgICAgICAgZm9yIHdhcm5pbmcgaW4gdzoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUod2FybmluZy5jYXRlZ29yeSBpcyBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih3WzBdLm1lc3NhZ2UpLCAiZ2V0X3ByZWZpeCgpIGlzIGRlcHJlY2F0ZWQ7ICIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZSB0aGUgcHJlZml4IHByb3BlcnR5IikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHdbMV0ubWVzc2FnZSksICJzZXRfcHJlZml4KCkgaXMgZGVwcmVjYXRlZDsgIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlIHRoZSBwcmVmaXggcHJvcGVydHkiKQotCiAgICAgZGVmIHRlc3RfaW5zdGFudGlhdGVfYmFzZShzZWxmKToKICAgICAgICAgaWYgX19kZWJ1Z19fOgogICAgICAgICAgICAgIyBUZXN0IHRoYXQgaW5zdGFudGlhdGluZyBCYXNlKCkgcmFpc2VzIGFuIEFzc2VydGlvbkVycm9yCmRpZmYgLS1naXQgYS9MaWIvbG9nZ2luZy9fX2luaXRfXy5weSBiL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CmluZGV4IDVjYjI4NjYuLmZhMDNmNzggMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CisrKyBiL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CkBAIC0zNiwxNSArMzYsOSBAQAogICAgICAgICAgICAnZ2V0TG9nUmVjb3JkRmFjdG9yeScsICdzZXRMb2dSZWNvcmRGYWN0b3J5JywgJ2xhc3RSZXNvcnQnXQogCiB0cnk6Ci0gICAgaW1wb3J0IGNvZGVjcwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGNvZGVjcyA9IE5vbmUKLQotdHJ5OgotICAgIGltcG9ydCBfdGhyZWFkIGFzIHRocmVhZAogICAgIGltcG9ydCB0aHJlYWRpbmcKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICB0aHJlYWQgPSBOb25lCitleGNlcHQgSW1wb3J0RXJyb3I6ICNwcmFnbWE6IG5vIGNvdmVyCisgICAgdGhyZWFkaW5nID0gTm9uZQogCiBfX2F1dGhvcl9fICA9ICJWaW5heSBTYWppcCA8dmluYXlfc2FqaXBAcmVkLWRvdmUuY29tPiIKIF9fc3RhdHVzX18gID0gInByb2R1Y3Rpb24iCkBAIC02NSwxNiArNTksMTYgQEAKICAgICBfc3JjZmlsZSA9IF9fZmlsZV9fCiBfc3JjZmlsZSA9IG9zLnBhdGgubm9ybWNhc2UoX3NyY2ZpbGUpCiAKLSMgbmV4dCBiaXQgZmlsY2hlZCBmcm9tIDEuNS4yJ3MgaW5zcGVjdC5weQotZGVmIGN1cnJlbnRmcmFtZSgpOgotICAgICIiIlJldHVybiB0aGUgZnJhbWUgb2JqZWN0IGZvciB0aGUgY2FsbGVyJ3Mgc3RhY2sgZnJhbWUuIiIiCi0gICAgdHJ5OgotICAgICAgICByYWlzZSBFeGNlcHRpb24KLSAgICBleGNlcHQ6Ci0gICAgICAgIHJldHVybiBzeXMuZXhjX2luZm8oKVsyXS50Yl9mcmFtZS5mX2JhY2sKIAotaWYgaGFzYXR0cihzeXMsICdfZ2V0ZnJhbWUnKTogY3VycmVudGZyYW1lID0gbGFtYmRhOiBzeXMuX2dldGZyYW1lKDMpCi0jIGRvbmUgZmlsY2hpbmcKK2lmIGhhc2F0dHIoc3lzLCAnX2dldGZyYW1lJyk6CisgICAgY3VycmVudGZyYW1lID0gbGFtYmRhOiBzeXMuX2dldGZyYW1lKDMpCitlbHNlOiAjcHJhZ21hOiBubyBjb3ZlcgorICAgIGRlZiBjdXJyZW50ZnJhbWUoKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBmcmFtZSBvYmplY3QgZm9yIHRoZSBjYWxsZXIncyBzdGFjayBmcmFtZS4iIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHJldHVybiBzeXMuZXhjX2luZm8oKVsyXS50Yl9mcmFtZS5mX2JhY2sKIAogIyBfc3JjZmlsZSBpcyBvbmx5IHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBzeXMuX2dldGZyYW1lKCkuCiAjIFRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIFB5dGhvbiwgc2V0IF9zcmNmaWxlCkBAIC05MiwyMiArODYsMjIgQEAKICNyYWlzZUV4Y2VwdGlvbnMgaXMgdXNlZCB0byBzZWUgaWYgZXhjZXB0aW9ucyBkdXJpbmcgaGFuZGxpbmcgc2hvdWxkIGJlCiAjcHJvcGFnYXRlZAogIwotcmFpc2VFeGNlcHRpb25zID0gMQorcmFpc2VFeGNlcHRpb25zID0gVHJ1ZQogCiAjCiAjIElmIHlvdSBkb24ndCB3YW50IHRocmVhZGluZyBpbmZvcm1hdGlvbiBpbiB0aGUgbG9nLCBzZXQgdGhpcyB0byB6ZXJvCiAjCi1sb2dUaHJlYWRzID0gMQorbG9nVGhyZWFkcyA9IFRydWUKIAogIwogIyBJZiB5b3UgZG9uJ3Qgd2FudCBtdWx0aXByb2Nlc3NpbmcgaW5mb3JtYXRpb24gaW4gdGhlIGxvZywgc2V0IHRoaXMgdG8gemVybwogIwotbG9nTXVsdGlwcm9jZXNzaW5nID0gMQorbG9nTXVsdGlwcm9jZXNzaW5nID0gVHJ1ZQogCiAjCiAjIElmIHlvdSBkb24ndCB3YW50IHByb2Nlc3MgaW5mb3JtYXRpb24gaW4gdGhlIGxvZywgc2V0IHRoaXMgdG8gemVybwogIwotbG9nUHJvY2Vzc2VzID0gMQorbG9nUHJvY2Vzc2VzID0gVHJ1ZQogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjICAgTGV2ZWwgcmVsYXRlZCBzdHVmZgpAQCAtMTk3LDkgKzE5MSw5IEBACiAjdGhlIGxvY2sgd291bGQgYWxyZWFkeSBoYXZlIGJlZW4gYWNxdWlyZWQgLSBzbyB3ZSBuZWVkIGFuIFJMb2NrLgogI1RoZSBzYW1lIGFyZ3VtZW50IGFwcGxpZXMgdG8gTG9nZ2VycyBhbmQgTWFuYWdlci5sb2dnZXJEaWN0LgogIwotaWYgdGhyZWFkOgoraWYgdGhyZWFkaW5nOgogICAgIF9sb2NrID0gdGhyZWFkaW5nLlJMb2NrKCkKLWVsc2U6CitlbHNlOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgIF9sb2NrID0gTm9uZQogCiAKQEAgLTI1Miw3ICsyNDYsNyBAQAogICAgICAgICAjIGR1cmluZyBmb3JtYXR0aW5nLCB3ZSB0ZXN0IHRvIHNlZSBpZiB0aGUgYXJnIGlzIHByZXNlbnQgdXNpbmcKICAgICAgICAgIyAnaWYgc2VsZi5hcmdzOicuIElmIHRoZSBldmVudCBiZWluZyBsb2dnZWQgaXMgZS5nLiAnVmFsdWUgaXMgJWQnCiAgICAgICAgICMgYW5kIGlmIHRoZSBwYXNzZWQgYXJnIGZhaWxzICdpZiBzZWxmLmFyZ3M6JyB0aGVuIG5vIGZvcm1hdHRpbmcKLSAgICAgICAgIyBpcyBkb25lLiBGb3IgZXhhbXBsZSwgbG9nZ2VyLndhcm4oJ1ZhbHVlIGlzICVkJywgMCkgd291bGQgbG9nCisgICAgICAgICMgaXMgZG9uZS4gRm9yIGV4YW1wbGUsIGxvZ2dlci53YXJuaW5nKCdWYWx1ZSBpcyAlZCcsIDApIHdvdWxkIGxvZwogICAgICAgICAjICdWYWx1ZSBpcyAlZCcgaW5zdGVhZCBvZiAnVmFsdWUgaXMgMCcuCiAgICAgICAgICMgRm9yIHRoZSB1c2UgY2FzZSBvZiBwYXNzaW5nIGEgZGljdGlvbmFyeSwgdGhpcyBzaG91bGQgbm90IGJlIGEKICAgICAgICAgIyBwcm9ibGVtLgpAQCAtMjc2LDEzICsyNzAsMTMgQEAKICAgICAgICAgc2VsZi5jcmVhdGVkID0gY3QKICAgICAgICAgc2VsZi5tc2VjcyA9IChjdCAtIGludChjdCkpICogMTAwMAogICAgICAgICBzZWxmLnJlbGF0aXZlQ3JlYXRlZCA9IChzZWxmLmNyZWF0ZWQgLSBfc3RhcnRUaW1lKSAqIDEwMDAKLSAgICAgICAgaWYgbG9nVGhyZWFkcyBhbmQgdGhyZWFkOgotICAgICAgICAgICAgc2VsZi50aHJlYWQgPSB0aHJlYWQuZ2V0X2lkZW50KCkKKyAgICAgICAgaWYgbG9nVGhyZWFkcyBhbmQgdGhyZWFkaW5nOgorICAgICAgICAgICAgc2VsZi50aHJlYWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKICAgICAgICAgICAgIHNlbGYudGhyZWFkTmFtZSA9IHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpLm5hbWUKLSAgICAgICAgZWxzZToKKyAgICAgICAgZWxzZTogIyBwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICBzZWxmLnRocmVhZCA9IE5vbmUKICAgICAgICAgICAgIHNlbGYudGhyZWFkTmFtZSA9IE5vbmUKLSAgICAgICAgaWYgbm90IGxvZ011bHRpcHJvY2Vzc2luZzoKKyAgICAgICAgaWYgbm90IGxvZ011bHRpcHJvY2Vzc2luZzogIyBwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICBzZWxmLnByb2Nlc3NOYW1lID0gTm9uZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5wcm9jZXNzTmFtZSA9ICdNYWluUHJvY2VzcycKQEAgLTI5NCw3ICsyODgsNyBAQAogICAgICAgICAgICAgICAgICMgZm9yIGFuIGV4YW1wbGUKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc05hbWUgPSBtcC5jdXJyZW50X3Byb2Nlc3MoKS5uYW1lCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGlmIGxvZ1Byb2Nlc3NlcyBhbmQgaGFzYXR0cihvcywgJ2dldHBpZCcpOgogICAgICAgICAgICAgc2VsZi5wcm9jZXNzID0gb3MuZ2V0cGlkKCkKQEAgLTQ2Niw2ICs0NjAsOSBAQAogICAgICAgICBzZWxmLl9mbXQgPSBzZWxmLl9zdHlsZS5fZm10CiAgICAgICAgIHNlbGYuZGF0ZWZtdCA9IGRhdGVmbXQKIAorICAgIGRlZmF1bHRfdGltZV9mb3JtYXQgPSAnJVktJW0tJWQgJUg6JU06JVMnCisgICAgZGVmYXVsdF9tc2VjX2Zvcm1hdCA9ICclcywlMDNkJworCiAgICAgZGVmIGZvcm1hdFRpbWUoc2VsZiwgcmVjb3JkLCBkYXRlZm10PU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgUmV0dXJuIHRoZSBjcmVhdGlvbiB0aW1lIG9mIHRoZSBzcGVjaWZpZWQgTG9nUmVjb3JkIGFzIGZvcm1hdHRlZCB0ZXh0LgpAQCAtNDg4LDggKzQ4NSw4IEBACiAgICAgICAgIGlmIGRhdGVmbXQ6CiAgICAgICAgICAgICBzID0gdGltZS5zdHJmdGltZShkYXRlZm10LCBjdCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHQgPSB0aW1lLnN0cmZ0aW1lKCIlWS0lbS0lZCAlSDolTTolUyIsIGN0KQotICAgICAgICAgICAgcyA9ICIlcywlMDNkIiAlICh0LCByZWNvcmQubXNlY3MpICMgdGhlIHVzZSBvZiAlIGhlcmUgaXMgaW50ZXJuYWwKKyAgICAgICAgICAgIHQgPSB0aW1lLnN0cmZ0aW1lKHNlbGYuZGVmYXVsdF90aW1lX2Zvcm1hdCwgY3QpCisgICAgICAgICAgICBzID0gc2VsZi5kZWZhdWx0X21zZWNfZm9ybWF0ICUgKHQsIHJlY29yZC5tc2VjcykKICAgICAgICAgcmV0dXJuIHMKIAogICAgIGRlZiBmb3JtYXRFeGNlcHRpb24oc2VsZiwgZWkpOgpAQCAtNjQyLDExICs2MzksMTEgQEAKICAgICAgICAgeWVzLiBJZiBkZWVtZWQgYXBwcm9wcmlhdGUsIHRoZSByZWNvcmQgbWF5IGJlIG1vZGlmaWVkIGluLXBsYWNlLgogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5ubGVuID09IDA6Ci0gICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgZWxpZiBzZWxmLm5hbWUgPT0gcmVjb3JkLm5hbWU6Ci0gICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgZWxpZiByZWNvcmQubmFtZS5maW5kKHNlbGYubmFtZSwgMCwgc2VsZi5ubGVuKSAhPSAwOgotICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gKHJlY29yZC5uYW1lW3NlbGYubmxlbl0gPT0gIi4iKQogCiBjbGFzcyBGaWx0ZXJlcihvYmplY3QpOgpAQCAtNjg2LDE0ICs2ODMsMTQgQEAKIAogICAgICAgICAgICBBbGxvdyBmaWx0ZXJzIHRvIGJlIGp1c3QgY2FsbGFibGVzLgogICAgICAgICAiIiIKLSAgICAgICAgcnYgPSAxCisgICAgICAgIHJ2ID0gVHJ1ZQogICAgICAgICBmb3IgZiBpbiBzZWxmLmZpbHRlcnM6CiAgICAgICAgICAgICBpZiBoYXNhdHRyKGYsICdmaWx0ZXInKToKICAgICAgICAgICAgICAgICByZXN1bHQgPSBmLmZpbHRlcihyZWNvcmQpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGYocmVjb3JkKSAjIGFzc3VtZSBjYWxsYWJsZSAtIHdpbGwgcmFpc2UgaWYgbm90CiAgICAgICAgICAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICAgICAgICAgIHJ2ID0gMAorICAgICAgICAgICAgICAgIHJ2ID0gRmFsc2UKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICByZXR1cm4gcnYKIApAQCAtNzcyLDkgKzc2OSw5IEBACiAgICAgICAgICIiIgogICAgICAgICBBY3F1aXJlIGEgdGhyZWFkIGxvY2sgZm9yIHNlcmlhbGl6aW5nIGFjY2VzcyB0byB0aGUgdW5kZXJseWluZyBJL08uCiAgICAgICAgICIiIgotICAgICAgICBpZiB0aHJlYWQ6CisgICAgICAgIGlmIHRocmVhZGluZzoKICAgICAgICAgICAgIHNlbGYubG9jayA9IHRocmVhZGluZy5STG9jaygpCi0gICAgICAgIGVsc2U6CisgICAgICAgIGVsc2U6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICBzZWxmLmxvY2sgPSBOb25lCiAKICAgICBkZWYgYWNxdWlyZShzZWxmKToKQEAgLTc5Myw3ICs3OTAsNyBAQAogCiAgICAgZGVmIHNldExldmVsKHNlbGYsIGxldmVsKToKICAgICAgICAgIiIiCi0gICAgICAgIFNldCB0aGUgbG9nZ2luZyBsZXZlbCBvZiB0aGlzIGhhbmRsZXIuCisgICAgICAgIFNldCB0aGUgbG9nZ2luZyBsZXZlbCBvZiB0aGlzIGhhbmRsZXIuICBsZXZlbCBtdXN0IGJlIGFuIGludCBvciBhIHN0ci4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYubGV2ZWwgPSBfY2hlY2tMZXZlbChsZXZlbCkKIApAQCAtODg5LDcgKzg4Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBzeXMuc3RkZXJyKQogICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0xvZ2dlZCBmcm9tIGZpbGUgJXMsIGxpbmUgJXNcbicgJSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuZmlsZW5hbWUsIHJlY29yZC5saW5lbm8pKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgICAgICBwYXNzICAgICMgc2VlIGlzc3VlIDU5NzEKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgZGVsIGVpCkBAIC05NDIsNyArOTM5LDcgQEAKICAgICAgICAgICAgIHN0cmVhbS53cml0ZShtc2cpCiAgICAgICAgICAgICBzdHJlYW0ud3JpdGUoc2VsZi50ZXJtaW5hdG9yKQogICAgICAgICAgICAgc2VsZi5mbHVzaCgpCi0gICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQpAQCAtOTUxLDE0ICs5NDgsMTIgQEAKICAgICAiIiIKICAgICBBIGhhbmRsZXIgY2xhc3Mgd2hpY2ggd3JpdGVzIGZvcm1hdHRlZCBsb2dnaW5nIHJlY29yZHMgdG8gZGlzayBmaWxlcy4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9J2EnLCBlbmNvZGluZz1Ob25lLCBkZWxheT0wKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9J2EnLCBlbmNvZGluZz1Ob25lLCBkZWxheT1GYWxzZSk6CiAgICAgICAgICIiIgogICAgICAgICBPcGVuIHRoZSBzcGVjaWZpZWQgZmlsZSBhbmQgdXNlIGl0IGFzIHRoZSBzdHJlYW0gZm9yIGxvZ2dpbmcuCiAgICAgICAgICIiIgogICAgICAgICAja2VlcCB0aGUgYWJzb2x1dGUgcGF0aCwgb3RoZXJ3aXNlIGRlcml2ZWQgY2xhc3NlcyB3aGljaCB1c2UgdGhpcwogICAgICAgICAjbWF5IGNvbWUgYSBjcm9wcGVyIHdoZW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGNoYW5nZXMKLSAgICAgICAgaWYgY29kZWNzIGlzIE5vbmU6Ci0gICAgICAgICAgICBlbmNvZGluZyA9IE5vbmUKICAgICAgICAgc2VsZi5iYXNlRmlsZW5hbWUgPSBvcy5wYXRoLmFic3BhdGgoZmlsZW5hbWUpCiAgICAgICAgIHNlbGYubW9kZSA9IG1vZGUKICAgICAgICAgc2VsZi5lbmNvZGluZyA9IGVuY29kaW5nCkBAIC05OTAsMTEgKzk4NSw3IEBACiAgICAgICAgIE9wZW4gdGhlIGN1cnJlbnQgYmFzZSBmaWxlIHdpdGggdGhlIChvcmlnaW5hbCkgbW9kZSBhbmQgZW5jb2RpbmcuCiAgICAgICAgIFJldHVybiB0aGUgcmVzdWx0aW5nIHN0cmVhbS4KICAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuZW5jb2RpbmcgaXMgTm9uZToKLSAgICAgICAgICAgIHN0cmVhbSA9IG9wZW4oc2VsZi5iYXNlRmlsZW5hbWUsIHNlbGYubW9kZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN0cmVhbSA9IGNvZGVjcy5vcGVuKHNlbGYuYmFzZUZpbGVuYW1lLCBzZWxmLm1vZGUsIHNlbGYuZW5jb2RpbmcpCi0gICAgICAgIHJldHVybiBzdHJlYW0KKyAgICAgICAgcmV0dXJuIG9wZW4oc2VsZi5iYXNlRmlsZW5hbWUsIHNlbGYubW9kZSwgZW5jb2Rpbmc9c2VsZi5lbmNvZGluZykKIAogICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6CiAgICAgICAgICIiIgpAQCAtMTIwNiwxMyArMTE5NywxMyBAQAogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgIHNlbGYubGV2ZWwgPSBfY2hlY2tMZXZlbChsZXZlbCkKICAgICAgICAgc2VsZi5wYXJlbnQgPSBOb25lCi0gICAgICAgIHNlbGYucHJvcGFnYXRlID0gMQorICAgICAgICBzZWxmLnByb3BhZ2F0ZSA9IFRydWUKICAgICAgICAgc2VsZi5oYW5kbGVycyA9IFtdCi0gICAgICAgIHNlbGYuZGlzYWJsZWQgPSAwCisgICAgICAgIHNlbGYuZGlzYWJsZWQgPSBGYWxzZQogCiAgICAgZGVmIHNldExldmVsKHNlbGYsIGxldmVsKToKICAgICAgICAgIiIiCi0gICAgICAgIFNldCB0aGUgbG9nZ2luZyBsZXZlbCBvZiB0aGlzIGxvZ2dlci4KKyAgICAgICAgU2V0IHRoZSBsb2dnaW5nIGxldmVsIG9mIHRoaXMgbG9nZ2VyLiAgbGV2ZWwgbXVzdCBiZSBhbiBpbnQgb3IgYSBzdHIuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmxldmVsID0gX2NoZWNrTGV2ZWwobGV2ZWwpCiAKQEAgLTEyNTIsNyArMTI0MywxMCBAQAogICAgICAgICBpZiBzZWxmLmlzRW5hYmxlZEZvcihXQVJOSU5HKToKICAgICAgICAgICAgIHNlbGYuX2xvZyhXQVJOSU5HLCBtc2csIGFyZ3MsICoqa3dhcmdzKQogCi0gICAgd2FybiA9IHdhcm5pbmcKKyAgICBkZWYgd2FybihzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSAnd2FybicgbWV0aG9kIGlzIGRlcHJlY2F0ZWQsICIKKyAgICAgICAgICAgICJ1c2UgJ3dhcm5pbmcnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgIHNlbGYud2FybmluZyhtc2csICphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiBlcnJvcihzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIgpAQCAtMTM2MSw5ICsxMzU1LDkgQEAKICAgICAgICAgICAgICNJcm9uUHl0aG9uIGNhbiB1c2UgbG9nZ2luZy4KICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBmbiwgbG5vLCBmdW5jLCBzaW5mbyA9IHNlbGYuZmluZENhbGxlcihzdGFja19pbmZvKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjogIyBwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICAgICAgZm4sIGxubywgZnVuYyA9ICIodW5rbm93biBmaWxlKSIsIDAsICIodW5rbm93biBmdW5jdGlvbikiCi0gICAgICAgIGVsc2U6CisgICAgICAgIGVsc2U6ICMgcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgZm4sIGxubywgZnVuYyA9ICIodW5rbm93biBmaWxlKSIsIDAsICIodW5rbm93biBmdW5jdGlvbikiCiAgICAgICAgIGlmIGV4Y19pbmZvOgogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZXhjX2luZm8sIHR1cGxlKToKQEAgLTE0NzUsNyArMTQ2OSw3IEBACiAgICAgICAgIElzIHRoaXMgbG9nZ2VyIGVuYWJsZWQgZm9yIGxldmVsICdsZXZlbCc/CiAgICAgICAgICIiIgogICAgICAgICBpZiBzZWxmLm1hbmFnZXIuZGlzYWJsZSA+PSBsZXZlbDoKLSAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIGxldmVsID49IHNlbGYuZ2V0RWZmZWN0aXZlTGV2ZWwoKQogCiAgICAgZGVmIGdldENoaWxkKHNlbGYsIHN1ZmZpeCk6CkBAIC0xNTY1LDcgKzE1NTksMTAgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYubG9nKFdBUk5JTkcsIG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCi0gICAgd2FybiA9IHdhcm5pbmcKKyAgICBkZWYgd2FybihzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSAnd2FybicgbWV0aG9kIGlzIGRlcHJlY2F0ZWQsICIKKyAgICAgICAgICAgICJ1c2UgJ3dhcm5pbmcnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgIHNlbGYud2FybmluZyhtc2csICphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiBlcnJvcihzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIgpAQCAtMTU3Nyw3ICsxNTc0LDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIERlbGVnYXRlIGFuIGV4Y2VwdGlvbiBjYWxsIHRvIHRoZSB1bmRlcmx5aW5nIGxvZ2dlci4KICAgICAgICAgIiIiCi0gICAgICAgIGt3YXJnc1siZXhjX2luZm8iXSA9IDEKKyAgICAgICAga3dhcmdzWyJleGNfaW5mbyJdID0gVHJ1ZQogICAgICAgICBzZWxmLmxvZyhFUlJPUiwgbXNnLCAqYXJncywgKiprd2FyZ3MpCiAKICAgICBkZWYgY3JpdGljYWwoc2VsZiwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgpAQCAtMTY2MCw2ICsxNjU3LDEwIEBACiAgICAgc3RyZWFtICAgIFVzZSB0aGUgc3BlY2lmaWVkIHN0cmVhbSB0byBpbml0aWFsaXplIHRoZSBTdHJlYW1IYW5kbGVyLiBOb3RlCiAgICAgICAgICAgICAgIHRoYXQgdGhpcyBhcmd1bWVudCBpcyBpbmNvbXBhdGlibGUgd2l0aCAnZmlsZW5hbWUnIC0gaWYgYm90aAogICAgICAgICAgICAgICBhcmUgcHJlc2VudCwgJ3N0cmVhbScgaXMgaWdub3JlZC4KKyAgICBoYW5kbGVycyAgSWYgc3BlY2lmaWVkLCB0aGlzIHNob3VsZCBiZSBhbiBpdGVyYWJsZSBvZiBhbHJlYWR5IGNyZWF0ZWQKKyAgICAgICAgICAgICAgaGFuZGxlcnMsIHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHJvb3QgaGFuZGxlci4gQW55IGhhbmRsZXIKKyAgICAgICAgICAgICAgaW4gdGhlIGxpc3Qgd2hpY2ggZG9lcyBub3QgaGF2ZSBhIGZvcm1hdHRlciBhc3NpZ25lZCB3aWxsIGJlCisgICAgICAgICAgICAgIGFzc2lnbmVkIHRoZSBmb3JtYXR0ZXIgY3JlYXRlZCBpbiB0aGlzIGZ1bmN0aW9uLgogCiAgICAgTm90ZSB0aGF0IHlvdSBjb3VsZCBzcGVjaWZ5IGEgc3RyZWFtIGNyZWF0ZWQgdXNpbmcgb3BlbihmaWxlbmFtZSwgbW9kZSkKICAgICByYXRoZXIgdGhhbiBwYXNzaW5nIHRoZSBmaWxlbmFtZSBhbmQgbW9kZSBpbi4gSG93ZXZlciwgaXQgc2hvdWxkIGJlCkBAIC0xNjY3LDMzICsxNjY4LDUwIEBACiAgICAgdXNpbmcgc3lzLnN0ZG91dCBvciBzeXMuc3RkZXJyKSwgd2hlcmVhcyBGaWxlSGFuZGxlciBjbG9zZXMgaXRzIHN0cmVhbQogICAgIHdoZW4gdGhlIGhhbmRsZXIgaXMgY2xvc2VkLgogCi0gICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuMgorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICAgQWRkZWQgdGhlIGBgc3R5bGVgYCBwYXJhbWV0ZXIuCisKKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgIEFkZGVkIHRoZSBgYGhhbmRsZXJzYGAgcGFyYW1ldGVyLiBBIGBgVmFsdWVFcnJvcmBgIGlzIG5vdyB0aHJvd24gZm9yCisgICAgICAgaW5jb21wYXRpYmxlIGFyZ3VtZW50cyAoZS5nLiBgYGhhbmRsZXJzYGAgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGgKKyAgICAgICBgYGZpbGVuYW1lYGAvYGBmaWxlbW9kZWBgLCBvciBgYGZpbGVuYW1lYGAvYGBmaWxlbW9kZWBgIHNwZWNpZmllZAorICAgICAgIHRvZ2V0aGVyIHdpdGggYGBzdHJlYW1gYCwgb3IgYGBoYW5kbGVyc2BgIHNwZWNpZmllZCB0b2dldGhlciB3aXRoCisgICAgICAgYGBzdHJlYW1gYC4KICAgICAiIiIKICAgICAjIEFkZCB0aHJlYWQgc2FmZXR5IGluIGNhc2Ugc29tZW9uZSBtaXN0YWtlbmx5IGNhbGxzCiAgICAgIyBiYXNpY0NvbmZpZygpIGZyb20gbXVsdGlwbGUgdGhyZWFkcwogICAgIF9hY3F1aXJlTG9jaygpCiAgICAgdHJ5OgogICAgICAgICBpZiBsZW4ocm9vdC5oYW5kbGVycykgPT0gMDoKLSAgICAgICAgICAgIGZpbGVuYW1lID0ga3dhcmdzLnBvcCgiZmlsZW5hbWUiLCBOb25lKQotICAgICAgICAgICAgaWYgZmlsZW5hbWU6Ci0gICAgICAgICAgICAgICAgbW9kZSA9IGt3YXJncy5wb3AoImZpbGVtb2RlIiwgJ2EnKQotICAgICAgICAgICAgICAgIGhkbHIgPSBGaWxlSGFuZGxlcihmaWxlbmFtZSwgbW9kZSkKKyAgICAgICAgICAgIGhhbmRsZXJzID0ga3dhcmdzLmdldCgiaGFuZGxlcnMiKQorICAgICAgICAgICAgaWYgaGFuZGxlcnMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBpZiAic3RyZWFtIiBpbiBrd2FyZ3MgYW5kICJmaWxlbmFtZSIgaW4ga3dhcmdzOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCInc3RyZWFtJyBhbmQgJ2ZpbGVuYW1lJyBzaG91bGQgbm90IGJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3BlY2lmaWVkIHRvZ2V0aGVyIikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc3RyZWFtID0ga3dhcmdzLnBvcCgic3RyZWFtIiwgTm9uZSkKLSAgICAgICAgICAgICAgICBoZGxyID0gU3RyZWFtSGFuZGxlcihzdHJlYW0pCi0gICAgICAgICAgICBmcyA9IGt3YXJncy5wb3AoImZvcm1hdCIsIEJBU0lDX0ZPUk1BVCkKLSAgICAgICAgICAgIGRmcyA9IGt3YXJncy5wb3AoImRhdGVmbXQiLCBOb25lKQotICAgICAgICAgICAgc3R5bGUgPSBrd2FyZ3MucG9wKCJzdHlsZSIsICclJykKKyAgICAgICAgICAgICAgICBpZiAic3RyZWFtIiBpbiBrd2FyZ3Mgb3IgImZpbGVuYW1lIiBpbiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIidzdHJlYW0nIG9yICdmaWxlbmFtZScgc2hvdWxkIG5vdCBiZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllZCB0b2dldGhlciB3aXRoICdoYW5kbGVycyciKQorICAgICAgICAgICAgaWYgaGFuZGxlcnMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGt3YXJncy5nZXQoImZpbGVuYW1lIikKKyAgICAgICAgICAgICAgICBpZiBmaWxlbmFtZToKKyAgICAgICAgICAgICAgICAgICAgbW9kZSA9IGt3YXJncy5nZXQoImZpbGVtb2RlIiwgJ2EnKQorICAgICAgICAgICAgICAgICAgICBoID0gRmlsZUhhbmRsZXIoZmlsZW5hbWUsIG1vZGUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtID0ga3dhcmdzLmdldCgic3RyZWFtIikKKyAgICAgICAgICAgICAgICAgICAgaCA9IFN0cmVhbUhhbmRsZXIoc3RyZWFtKQorICAgICAgICAgICAgICAgIGhhbmRsZXJzID0gW2hdCisgICAgICAgICAgICBmcyA9IGt3YXJncy5nZXQoImZvcm1hdCIsIEJBU0lDX0ZPUk1BVCkKKyAgICAgICAgICAgIGRmcyA9IGt3YXJncy5nZXQoImRhdGVmbXQiLCBOb25lKQorICAgICAgICAgICAgc3R5bGUgPSBrd2FyZ3MuZ2V0KCJzdHlsZSIsICclJykKICAgICAgICAgICAgIGZtdCA9IEZvcm1hdHRlcihmcywgZGZzLCBzdHlsZSkKLSAgICAgICAgICAgIGhkbHIuc2V0Rm9ybWF0dGVyKGZtdCkKLSAgICAgICAgICAgIHJvb3QuYWRkSGFuZGxlcihoZGxyKQotICAgICAgICAgICAgbGV2ZWwgPSBrd2FyZ3MucG9wKCJsZXZlbCIsIE5vbmUpCisgICAgICAgICAgICBmb3IgaCBpbiBoYW5kbGVyczoKKyAgICAgICAgICAgICAgICBpZiBoLmZvcm1hdHRlciBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBoLnNldEZvcm1hdHRlcihmbXQpCisgICAgICAgICAgICAgICAgcm9vdC5hZGRIYW5kbGVyKGgpCisgICAgICAgICAgICBsZXZlbCA9IGt3YXJncy5nZXQoImxldmVsIikKICAgICAgICAgICAgIGlmIGxldmVsIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJvb3Quc2V0TGV2ZWwobGV2ZWwpCi0gICAgICAgICAgICBpZiBrd2FyZ3M6Ci0gICAgICAgICAgICAgICAgcyA9ICcsICcuam9pbihrd2FyZ3Mua2V5cygpKQotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1VuZXhwZWN0ZWQgaW4ga2V5d29yZCBhcmd1bWVudHM6ICVzJyAlIHMpCiAgICAgZmluYWxseToKICAgICAgICAgX3JlbGVhc2VMb2NrKCkKIApAQCAtMTc1NCw3ICsxNzcyLDEwIEBACiAgICAgICAgIGJhc2ljQ29uZmlnKCkKICAgICByb290Lndhcm5pbmcobXNnLCAqYXJncywgKiprd2FyZ3MpCiAKLXdhcm4gPSB3YXJuaW5nCitkZWYgd2Fybihtc2csICphcmdzLCAqKmt3YXJncyk6CisgICAgd2FybmluZ3Mud2FybigiVGhlICd3YXJuJyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLCAiCisgICAgICAgICJ1c2UgJ3dhcm5pbmcnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgd2FybmluZyhtc2csICphcmdzLCAqKmt3YXJncykKIAogZGVmIGluZm8obXNnLCAqYXJncywgKiprd2FyZ3MpOgogICAgICIiIgpAQCAtMTgzOSwxMCArMTg2MCwxMCBAQAogICAgIHBhY2thZ2UuCiAgICAgIiIiCiAgICAgZGVmIGhhbmRsZShzZWxmLCByZWNvcmQpOgotICAgICAgICBwYXNzCisgICAgICAgICIiIlN0dWIuIiIiCiAKICAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgotICAgICAgICBwYXNzCisgICAgICAgICIiIlN0dWIuIiIiCiAKICAgICBkZWYgY3JlYXRlTG9jayhzZWxmKToKICAgICAgICAgc2VsZi5sb2NrID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2xvZ2dpbmcvY29uZmlnLnB5IGIvTGliL2xvZ2dpbmcvY29uZmlnLnB5CmluZGV4IDM3M2RhMmIuLjVlZjVjOTEgMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL2NvbmZpZy5weQorKysgYi9MaWIvbG9nZ2luZy9jb25maWcucHkKQEAgLTI0LDEzICsyNCwxMyBAQAogVG8gdXNlLCBzaW1wbHkgJ2ltcG9ydCBsb2dnaW5nJyBhbmQgbG9nIGF3YXkhCiAiIiIKIAotaW1wb3J0IHN5cywgbG9nZ2luZywgbG9nZ2luZy5oYW5kbGVycywgc29ja2V0LCBzdHJ1Y3QsIG9zLCB0cmFjZWJhY2ssIHJlCi1pbXBvcnQgdHlwZXMsIGlvCitpbXBvcnQgc3lzLCBsb2dnaW5nLCBsb2dnaW5nLmhhbmRsZXJzLCBzb2NrZXQsIHN0cnVjdCwgdHJhY2ViYWNrLCByZQoraW1wb3J0IGlvCiAKIHRyeToKICAgICBpbXBvcnQgX3RocmVhZCBhcyB0aHJlYWQKICAgICBpbXBvcnQgdGhyZWFkaW5nCi1leGNlcHQgSW1wb3J0RXJyb3I6CitleGNlcHQgSW1wb3J0RXJyb3I6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgdGhyZWFkID0gTm9uZQogCiBmcm9tIHNvY2tldHNlcnZlciBpbXBvcnQgVGhyZWFkaW5nVENQU2VydmVyLCBTdHJlYW1SZXF1ZXN0SGFuZGxlcgpAQCAtOTgsOSArOTgsNiBAQAogZGVmIF9zdHJpcF9zcGFjZXMoYWxpc3QpOgogICAgIHJldHVybiBtYXAobGFtYmRhIHg6IHguc3RyaXAoKSwgYWxpc3QpCiAKLWRlZiBfZW5jb2RlZChzKToKLSAgICByZXR1cm4gcyBpZiBpc2luc3RhbmNlKHMsIHN0cikgZWxzZSBzLmVuY29kZSgndXRmLTgnKQotCiBkZWYgX2NyZWF0ZV9mb3JtYXR0ZXJzKGNwKToKICAgICAiIiJDcmVhdGUgYW5kIHJldHVybiBmb3JtYXR0ZXJzIiIiCiAgICAgZmxpc3QgPSBjcFsiZm9ybWF0dGVycyJdWyJrZXlzIl0KQEAgLTIxNSw3ICsyMTIsNyBAQAogICAgICNhdm9pZCBkaXNhYmxpbmcgY2hpbGQgbG9nZ2VycyBvZiBleHBsaWNpdGx5CiAgICAgI25hbWVkIGxvZ2dlcnMuIFdpdGggYSBzb3J0ZWQgbGlzdCBpdCBpcyBlYXNpZXIKICAgICAjdG8gZmluZCB0aGUgY2hpbGQgbG9nZ2Vycy4KLSAgICBleGlzdGluZy5zb3J0KGtleT1fZW5jb2RlZCkKKyAgICBleGlzdGluZy5zb3J0KCkKICAgICAjV2UnbGwga2VlcCB0aGUgbGlzdCBvZiBleGlzdGluZyBsb2dnZXJzCiAgICAgI3doaWNoIGFyZSBjaGlsZHJlbiBvZiBuYW1lZCBsb2dnZXJzIGhlcmUuLi4KICAgICBjaGlsZF9sb2dnZXJzID0gW10KQEAgLTU4OCw3ICs1ODUsNyBAQAogICAgICAgICAgICAgICAgICNhdm9pZCBkaXNhYmxpbmcgY2hpbGQgbG9nZ2VycyBvZiBleHBsaWNpdGx5CiAgICAgICAgICAgICAgICAgI25hbWVkIGxvZ2dlcnMuIFdpdGggYSBzb3J0ZWQgbGlzdCBpdCBpcyBlYXNpZXIKICAgICAgICAgICAgICAgICAjdG8gZmluZCB0aGUgY2hpbGQgbG9nZ2Vycy4KLSAgICAgICAgICAgICAgICBleGlzdGluZy5zb3J0KGtleT1fZW5jb2RlZCkKKyAgICAgICAgICAgICAgICBleGlzdGluZy5zb3J0KCkKICAgICAgICAgICAgICAgICAjV2UnbGwga2VlcCB0aGUgbGlzdCBvZiBleGlzdGluZyBsb2dnZXJzCiAgICAgICAgICAgICAgICAgI3doaWNoIGFyZSBjaGlsZHJlbiBvZiBuYW1lZCBsb2dnZXJzIGhlcmUuLi4KICAgICAgICAgICAgICAgICBjaGlsZF9sb2dnZXJzID0gW10KQEAgLTc4Niw3ICs3ODMsNyBAQAogICAgIGFuZCB3aGljaCB5b3UgY2FuIGpvaW4oKSB3aGVuIGFwcHJvcHJpYXRlLiBUbyBzdG9wIHRoZSBzZXJ2ZXIsIGNhbGwKICAgICBzdG9wTGlzdGVuaW5nKCkuCiAgICAgIiIiCi0gICAgaWYgbm90IHRocmVhZDoKKyAgICBpZiBub3QgdGhyZWFkOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJsaXN0ZW4oKSBuZWVkcyB0aHJlYWRpbmcgdG8gd29yayIpCiAKICAgICBjbGFzcyBDb25maWdTdHJlYW1IYW5kbGVyKFN0cmVhbVJlcXVlc3RIYW5kbGVyKToKQEAgLTgwNCw3ICs4MDEsNiBAQAogICAgICAgICAgICAgc3RydWN0LnBhY2soIj5MIiwgbiksIGZvbGxvd2VkIGJ5IHRoZSBjb25maWcgZmlsZS4KICAgICAgICAgICAgIFVzZXMgZmlsZUNvbmZpZygpIHRvIGRvIHRoZSBncnVudCB3b3JrLgogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgdGVtcGZpbGUKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBjb25uID0gc2VsZi5jb25uZWN0aW9uCiAgICAgICAgICAgICAgICAgY2h1bmsgPSBjb25uLnJlY3YoNCkKQEAgLTgyNSw3ICs4MjEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSA9IGlvLlN0cmluZ0lPKGNodW5rKQogICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVDb25maWcoZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKZGlmZiAtLWdpdCBhL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5IGIvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKaW5kZXggODM0OWQzYS4uZjI4NmNkNiAxMDA2NDQKLS0tIGEvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKKysrIGIvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKQEAgLTI0LDE4ICsyNCwxNCBAQAogIiIiCiAKIGltcG9ydCBlcnJubywgbG9nZ2luZywgc29ja2V0LCBvcywgcGlja2xlLCBzdHJ1Y3QsIHRpbWUsIHJlCitmcm9tIGNvZGVjcyBpbXBvcnQgQk9NX1VURjgKIGZyb20gc3RhdCBpbXBvcnQgU1RfREVWLCBTVF9JTk8sIFNUX01USU1FCiBpbXBvcnQgcXVldWUKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCi1leGNlcHQgSW1wb3J0RXJyb3I6CitleGNlcHQgSW1wb3J0RXJyb3I6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgdGhyZWFkaW5nID0gTm9uZQogCi10cnk6Ci0gICAgaW1wb3J0IGNvZGVjcwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGNvZGVjcyA9IE5vbmUKLQogIwogIyBTb21lIGNvbnN0YW50cy4uLgogIwpAQCAtNTUsMTUgKzUxLDE1IEBACiAgICAgTm90IG1lYW50IHRvIGJlIGluc3RhbnRpYXRlZCBkaXJlY3RseS4gIEluc3RlYWQsIHVzZSBSb3RhdGluZ0ZpbGVIYW5kbGVyCiAgICAgb3IgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZSwgZW5jb2Rpbmc9Tm9uZSwgZGVsYXk9MCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBtb2RlLCBlbmNvZGluZz1Ob25lLCBkZWxheT1GYWxzZSk6CiAgICAgICAgICIiIgogICAgICAgICBVc2UgdGhlIHNwZWNpZmllZCBmaWxlbmFtZSBmb3Igc3RyZWFtZWQgbG9nZ2luZwogICAgICAgICAiIiIKLSAgICAgICAgaWYgY29kZWNzIGlzIE5vbmU6Ci0gICAgICAgICAgICBlbmNvZGluZyA9IE5vbmUKICAgICAgICAgbG9nZ2luZy5GaWxlSGFuZGxlci5fX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZSwgZW5jb2RpbmcsIGRlbGF5KQogICAgICAgICBzZWxmLm1vZGUgPSBtb2RlCiAgICAgICAgIHNlbGYuZW5jb2RpbmcgPSBlbmNvZGluZworICAgICAgICBzZWxmLm5hbWVyID0gTm9uZQorICAgICAgICBzZWxmLnJvdGF0b3IgPSBOb25lCiAKICAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgogICAgICAgICAiIiIKQEAgLTc2LDE3ICs3Miw1NSBAQAogICAgICAgICAgICAgaWYgc2VsZi5zaG91bGRSb2xsb3ZlcihyZWNvcmQpOgogICAgICAgICAgICAgICAgIHNlbGYuZG9Sb2xsb3ZlcigpCiAgICAgICAgICAgICBsb2dnaW5nLkZpbGVIYW5kbGVyLmVtaXQoc2VsZiwgcmVjb3JkKQotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKKyAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKIAorICAgIGRlZiByb3RhdGlvbl9maWxlbmFtZShzZWxmLCBkZWZhdWx0X25hbWUpOgorICAgICAgICAiIiIKKyAgICAgICAgTW9kaWZ5IHRoZSBmaWxlbmFtZSBvZiBhIGxvZyBmaWxlIHdoZW4gcm90YXRpbmcuCisKKyAgICAgICAgVGhpcyBpcyBwcm92aWRlZCBzbyB0aGF0IGEgY3VzdG9tIGZpbGVuYW1lIGNhbiBiZSBwcm92aWRlZC4KKworICAgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUgJ25hbWVyJyBhdHRyaWJ1dGUgb2YgdGhlCisgICAgICAgIGhhbmRsZXIsIGlmIGl0J3MgY2FsbGFibGUsIHBhc3NpbmcgdGhlIGRlZmF1bHQgbmFtZSB0bworICAgICAgICBpdC4gSWYgdGhlIGF0dHJpYnV0ZSBpc24ndCBjYWxsYWJsZSAodGhlIGRlZmF1bHQgaXMgTm9uZSksIHRoZSBuYW1lCisgICAgICAgIGlzIHJldHVybmVkIHVuY2hhbmdlZC4KKworICAgICAgICA6cGFyYW0gZGVmYXVsdF9uYW1lOiBUaGUgZGVmYXVsdCBuYW1lIGZvciB0aGUgbG9nIGZpbGUuCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgY2FsbGFibGUoc2VsZi5uYW1lcik6CisgICAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0X25hbWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYubmFtZXIoZGVmYXVsdF9uYW1lKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgcm90YXRlKHNlbGYsIHNvdXJjZSwgZGVzdCk6CisgICAgICAgICIiIgorICAgICAgICBXaGVuIHJvdGF0aW5nLCByb3RhdGUgdGhlIGN1cnJlbnQgbG9nLgorCisgICAgICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzIHRoZSAncm90YXRvcicgYXR0cmlidXRlIG9mIHRoZQorICAgICAgICBoYW5kbGVyLCBpZiBpdCdzIGNhbGxhYmxlLCBwYXNzaW5nIHRoZSBzb3VyY2UgYW5kIGRlc3QgYXJndW1lbnRzIHRvCisgICAgICAgIGl0LiBJZiB0aGUgYXR0cmlidXRlIGlzbid0IGNhbGxhYmxlICh0aGUgZGVmYXVsdCBpcyBOb25lKSwgdGhlIHNvdXJjZQorICAgICAgICBpcyBzaW1wbHkgcmVuYW1lZCB0byB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgICAgOnBhcmFtIHNvdXJjZTogVGhlIHNvdXJjZSBmaWxlbmFtZS4gVGhpcyBpcyBub3JtYWxseSB0aGUgYmFzZQorICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgZS5nLiAndGVzdC5sb2cnCisgICAgICAgIDpwYXJhbSBkZXN0OiAgIFRoZSBkZXN0aW5hdGlvbiBmaWxlbmFtZS4gVGhpcyBpcyBub3JtYWxseQorICAgICAgICAgICAgICAgICAgICAgICB3aGF0IHRoZSBzb3VyY2UgaXMgcm90YXRlZCB0bywgZS5nLiAndGVzdC5sb2cuMScuCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgY2FsbGFibGUoc2VsZi5yb3RhdG9yKToKKyAgICAgICAgICAgIG9zLnJlbmFtZShzb3VyY2UsIGRlc3QpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnJvdGF0b3Ioc291cmNlLCBkZXN0KQorCiBjbGFzcyBSb3RhdGluZ0ZpbGVIYW5kbGVyKEJhc2VSb3RhdGluZ0hhbmRsZXIpOgogICAgICIiIgogICAgIEhhbmRsZXIgZm9yIGxvZ2dpbmcgdG8gYSBzZXQgb2YgZmlsZXMsIHdoaWNoIHN3aXRjaGVzIGZyb20gb25lIGZpbGUKICAgICB0byB0aGUgbmV4dCB3aGVuIHRoZSBjdXJyZW50IGZpbGUgcmVhY2hlcyBhIGNlcnRhaW4gc2l6ZS4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9J2EnLCBtYXhCeXRlcz0wLCBiYWNrdXBDb3VudD0wLCBlbmNvZGluZz1Ob25lLCBkZWxheT0wKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9J2EnLCBtYXhCeXRlcz0wLCBiYWNrdXBDb3VudD0wLCBlbmNvZGluZz1Ob25lLCBkZWxheT1GYWxzZSk6CiAgICAgICAgICIiIgogICAgICAgICBPcGVuIHRoZSBzcGVjaWZpZWQgZmlsZSBhbmQgdXNlIGl0IGFzIHRoZSBzdHJlYW0gZm9yIGxvZ2dpbmcuCiAKQEAgLTEyNywxNiArMTYxLDE3IEBACiAgICAgICAgICAgICBzZWxmLnN0cmVhbSA9IE5vbmUKICAgICAgICAgaWYgc2VsZi5iYWNrdXBDb3VudCA+IDA6CiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShzZWxmLmJhY2t1cENvdW50IC0gMSwgMCwgLTEpOgotICAgICAgICAgICAgICAgIHNmbiA9ICIlcy4lZCIgJSAoc2VsZi5iYXNlRmlsZW5hbWUsIGkpCi0gICAgICAgICAgICAgICAgZGZuID0gIiVzLiVkIiAlIChzZWxmLmJhc2VGaWxlbmFtZSwgaSArIDEpCisgICAgICAgICAgICAgICAgc2ZuID0gc2VsZi5yb3RhdGlvbl9maWxlbmFtZSgiJXMuJWQiICUgKHNlbGYuYmFzZUZpbGVuYW1lLCBpKSkKKyAgICAgICAgICAgICAgICBkZm4gPSBzZWxmLnJvdGF0aW9uX2ZpbGVuYW1lKCIlcy4lZCIgJSAoc2VsZi5iYXNlRmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKyAxKSkKICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZm4pOgogICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZm4pOgogICAgICAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGRmbikKICAgICAgICAgICAgICAgICAgICAgb3MucmVuYW1lKHNmbiwgZGZuKQotICAgICAgICAgICAgZGZuID0gc2VsZi5iYXNlRmlsZW5hbWUgKyAiLjEiCisgICAgICAgICAgICBkZm4gPSBzZWxmLnJvdGF0aW9uX2ZpbGVuYW1lKHNlbGYuYmFzZUZpbGVuYW1lICsgIi4xIikKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRmbik6CiAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGRmbikKLSAgICAgICAgICAgIG9zLnJlbmFtZShzZWxmLmJhc2VGaWxlbmFtZSwgZGZuKQorICAgICAgICAgICAgc2VsZi5yb3RhdGUoc2VsZi5iYXNlRmlsZW5hbWUsIGRmbikKICAgICAgICAgc2VsZi5zdHJlYW0gPSBzZWxmLl9vcGVuKCkKIAogICAgIGRlZiBzaG91bGRSb2xsb3ZlcihzZWxmLCByZWNvcmQpOgpAQCAtMTgzLDE5ICsyMTgsMTkgQEAKICAgICAgICAgaWYgc2VsZi53aGVuID09ICdTJzoKICAgICAgICAgICAgIHNlbGYuaW50ZXJ2YWwgPSAxICMgb25lIHNlY29uZAogICAgICAgICAgICAgc2VsZi5zdWZmaXggPSAiJVktJW0tJWRfJUgtJU0tJVMiCi0gICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn1fXGR7Mn0tXGR7Mn0tXGR7Mn0kIgorICAgICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHIiXlxkezR9LVxkezJ9LVxkezJ9X1xkezJ9LVxkezJ9LVxkezJ9KFwuXHcrKT8kIgogICAgICAgICBlbGlmIHNlbGYud2hlbiA9PSAnTSc6CiAgICAgICAgICAgICBzZWxmLmludGVydmFsID0gNjAgIyBvbmUgbWludXRlCiAgICAgICAgICAgICBzZWxmLnN1ZmZpeCA9ICIlWS0lbS0lZF8lSC0lTSIKLSAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfV9cZHsyfS1cZHsyfSQiCisgICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn1fXGR7Mn0tXGR7Mn0oXC5cdyspPyQiCiAgICAgICAgIGVsaWYgc2VsZi53aGVuID09ICdIJzoKICAgICAgICAgICAgIHNlbGYuaW50ZXJ2YWwgPSA2MCAqIDYwICMgb25lIGhvdXIKICAgICAgICAgICAgIHNlbGYuc3VmZml4ID0gIiVZLSVtLSVkXyVIIgotICAgICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHIiXlxkezR9LVxkezJ9LVxkezJ9X1xkezJ9JCIKKyAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfV9cZHsyfShcLlx3Kyk/JCIKICAgICAgICAgZWxpZiBzZWxmLndoZW4gPT0gJ0QnIG9yIHNlbGYud2hlbiA9PSAnTUlETklHSFQnOgogICAgICAgICAgICAgc2VsZi5pbnRlcnZhbCA9IDYwICogNjAgKiAyNCAjIG9uZSBkYXkKICAgICAgICAgICAgIHNlbGYuc3VmZml4ID0gIiVZLSVtLSVkIgotICAgICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHIiXlxkezR9LVxkezJ9LVxkezJ9JCIKKyAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfShcLlx3Kyk/JCIKICAgICAgICAgZWxpZiBzZWxmLndoZW4uc3RhcnRzd2l0aCgnVycpOgogICAgICAgICAgICAgc2VsZi5pbnRlcnZhbCA9IDYwICogNjAgKiAyNCAqIDcgIyBvbmUgd2VlawogICAgICAgICAgICAgaWYgbGVuKHNlbGYud2hlbikgIT0gMjoKQEAgLTIwNCw3ICsyMzksNyBAQAogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgZGF5IHNwZWNpZmllZCBmb3Igd2Vla2x5IHJvbGxvdmVyOiAlcyIgJSBzZWxmLndoZW4pCiAgICAgICAgICAgICBzZWxmLmRheU9mV2VlayA9IGludChzZWxmLndoZW5bMV0pCiAgICAgICAgICAgICBzZWxmLnN1ZmZpeCA9ICIlWS0lbS0lZCIKLSAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfSQiCisgICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn0oXC5cdyspPyQiCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHJvbGxvdmVyIGludGVydmFsIHNwZWNpZmllZDogJXMiICUgc2VsZi53aGVuKQogCkBAIC0zMzcsMTAgKzM3MiwxMSBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGFkZGVuZCA9IC0zNjAwCiAgICAgICAgICAgICAgICAgdGltZVR1cGxlID0gdGltZS5sb2NhbHRpbWUodCArIGFkZGVuZCkKLSAgICAgICAgZGZuID0gc2VsZi5iYXNlRmlsZW5hbWUgKyAiLiIgKyB0aW1lLnN0cmZ0aW1lKHNlbGYuc3VmZml4LCB0aW1lVHVwbGUpCisgICAgICAgIGRmbiA9IHNlbGYucm90YXRpb25fZmlsZW5hbWUoc2VsZi5iYXNlRmlsZW5hbWUgKyAiLiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUuc3RyZnRpbWUoc2VsZi5zdWZmaXgsIHRpbWVUdXBsZSkpCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRmbik6CiAgICAgICAgICAgICBvcy5yZW1vdmUoZGZuKQotICAgICAgICBvcy5yZW5hbWUoc2VsZi5iYXNlRmlsZW5hbWUsIGRmbikKKyAgICAgICAgc2VsZi5yb3RhdGUoc2VsZi5iYXNlRmlsZW5hbWUsIGRmbikKICAgICAgICAgaWYgc2VsZi5iYWNrdXBDb3VudCA+IDA6CiAgICAgICAgICAgICBmb3IgcyBpbiBzZWxmLmdldEZpbGVzVG9EZWxldGUoKToKICAgICAgICAgICAgICAgICBvcy5yZW1vdmUocykKQEAgLTM3OSw3ICs0MTUsNyBAQAogICAgIFRoaXMgaGFuZGxlciBpcyBiYXNlZCBvbiBhIHN1Z2dlc3Rpb24gYW5kIHBhdGNoIGJ5IENoYWQgSi4KICAgICBTY2hyb2VkZXIuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBtb2RlPSdhJywgZW5jb2Rpbmc9Tm9uZSwgZGVsYXk9MCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBtb2RlPSdhJywgZW5jb2Rpbmc9Tm9uZSwgZGVsYXk9RmFsc2UpOgogICAgICAgICBsb2dnaW5nLkZpbGVIYW5kbGVyLl9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBtb2RlLCBlbmNvZGluZywgZGVsYXkpCiAgICAgICAgIHNlbGYuZGV2LCBzZWxmLmlubyA9IC0xLCAtMQogICAgICAgICBzZWxmLl9zdGF0c3RyZWFtKCkKQEAgLTQzOCwxNSArNDc0LDE1IEBACiAgICAgICAgICIiIgogICAgICAgICBJbml0aWFsaXplcyB0aGUgaGFuZGxlciB3aXRoIGEgc3BlY2lmaWMgaG9zdCBhZGRyZXNzIGFuZCBwb3J0LgogCi0gICAgICAgIFRoZSBhdHRyaWJ1dGUgJ2Nsb3NlT25FcnJvcicgaXMgc2V0IHRvIDEgLSB3aGljaCBtZWFucyB0aGF0IGlmCi0gICAgICAgIGEgc29ja2V0IGVycm9yIG9jY3VycywgdGhlIHNvY2tldCBpcyBzaWxlbnRseSBjbG9zZWQgYW5kIHRoZW4KLSAgICAgICAgcmVvcGVuZWQgb24gdGhlIG5leHQgbG9nZ2luZyBjYWxsLgorICAgICAgICBXaGVuIHRoZSBhdHRyaWJ1dGUgKmNsb3NlT25FcnJvciogaXMgc2V0IHRvIFRydWUgLSBpZiBhIHNvY2tldCBlcnJvcgorICAgICAgICBvY2N1cnMsIHRoZSBzb2NrZXQgaXMgc2lsZW50bHkgY2xvc2VkIGFuZCB0aGVuIHJlb3BlbmVkIG9uIHRoZSBuZXh0CisgICAgICAgIGxvZ2dpbmcgY2FsbC4KICAgICAgICAgIiIiCiAgICAgICAgIGxvZ2dpbmcuSGFuZGxlci5fX2luaXRfXyhzZWxmKQogICAgICAgICBzZWxmLmhvc3QgPSBob3N0CiAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKICAgICAgICAgc2VsZi5zb2NrID0gTm9uZQotICAgICAgICBzZWxmLmNsb3NlT25FcnJvciA9IDAKKyAgICAgICAgc2VsZi5jbG9zZU9uRXJyb3IgPSBGYWxzZQogICAgICAgICBzZWxmLnJldHJ5VGltZSA9IE5vbmUKICAgICAgICAgIwogICAgICAgICAjIEV4cG9uZW50aWFsIGJhY2tvZmYgcGFyYW1ldGVycy4KQEAgLTQ2Myw4ICs0OTksMTIgQEAKICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKICAgICAgICAgaWYgaGFzYXR0cihzLCAnc2V0dGltZW91dCcpOgogICAgICAgICAgICAgcy5zZXR0aW1lb3V0KHRpbWVvdXQpCi0gICAgICAgIHMuY29ubmVjdCgoc2VsZi5ob3N0LCBzZWxmLnBvcnQpKQotICAgICAgICByZXR1cm4gcworICAgICAgICB0cnk6CisgICAgICAgICAgICBzLmNvbm5lY3QoKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSkKKyAgICAgICAgICAgIHJldHVybiBzCisgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgICAgIHJhaXNlCiAKICAgICBkZWYgY3JlYXRlU29ja2V0KHNlbGYpOgogICAgICAgICAiIiIKQEAgLTQ3Nyw3ICs1MTcsNyBAQAogICAgICAgICAjIGlzIHRoZSBmaXJzdCB0aW1lIGJhY2sgYWZ0ZXIgYSBkaXNjb25uZWN0LCBvcgogICAgICAgICAjIHdlJ3ZlIHdhaXRlZCBsb25nIGVub3VnaC4KICAgICAgICAgaWYgc2VsZi5yZXRyeVRpbWUgaXMgTm9uZToKLSAgICAgICAgICAgIGF0dGVtcHQgPSAxCisgICAgICAgICAgICBhdHRlbXB0ID0gVHJ1ZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgYXR0ZW1wdCA9IChub3cgPj0gc2VsZi5yZXRyeVRpbWUpCiAgICAgICAgIGlmIGF0dGVtcHQ6CkBAIC01MTAsMTQgKzU1MCwxNCBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5zb2NrLCAic2VuZGFsbCIpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2suc2VuZGFsbChzKQotICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZWxzZTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgICAgICAgICAgc2VudHNvZmFyID0gMAogICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gbGVuKHMpCiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIGxlZnQgPiAwOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VudCA9IHNlbGYuc29jay5zZW5kKHNbc2VudHNvZmFyOl0pCiAgICAgICAgICAgICAgICAgICAgICAgICBzZW50c29mYXIgPSBzZW50c29mYXIgKyBzZW50CiAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gbGVmdCAtIHNlbnQKLSAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgICAgIHNlbGYuc29jay5jbG9zZSgpCiAgICAgICAgICAgICAgICAgc2VsZi5zb2NrID0gTm9uZSAgIyBzbyB3ZSBjYW4gY2FsbCBjcmVhdGVTb2NrZXQgbmV4dCB0aW1lCiAKQEAgLTU2Nyw3ICs2MDcsNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzID0gc2VsZi5tYWtlUGlja2xlKHJlY29yZCkKICAgICAgICAgICAgIHNlbGYuc2VuZChzKQotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKKyAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKQEAgLTYwMSw3ICs2NDEsNyBAQAogICAgICAgICBJbml0aWFsaXplcyB0aGUgaGFuZGxlciB3aXRoIGEgc3BlY2lmaWMgaG9zdCBhZGRyZXNzIGFuZCBwb3J0LgogICAgICAgICAiIiIKICAgICAgICAgU29ja2V0SGFuZGxlci5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0KQotICAgICAgICBzZWxmLmNsb3NlT25FcnJvciA9IDAKKyAgICAgICAgc2VsZi5jbG9zZU9uRXJyb3IgPSBGYWxzZQogCiAgICAgZGVmIG1ha2VTb2NrZXQoc2VsZik6CiAgICAgICAgICIiIgpAQCAtNzQyLDEwICs3ODIsMTAgQEAKICAgICAgICAgc2VsZi5zb2NrdHlwZSA9IHNvY2t0eXBlCiAKICAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBzdHIpOgotICAgICAgICAgICAgc2VsZi51bml4c29ja2V0ID0gMQorICAgICAgICAgICAgc2VsZi51bml4c29ja2V0ID0gVHJ1ZQogICAgICAgICAgICAgc2VsZi5fY29ubmVjdF91bml4c29ja2V0KGFkZHJlc3MpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnVuaXhzb2NrZXQgPSAwCisgICAgICAgICAgICBzZWxmLnVuaXhzb2NrZXQgPSBGYWxzZQogICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrdHlwZSkKICAgICAgICAgICAgIGlmIHNvY2t0eXBlID09IHNvY2tldC5TT0NLX1NUUkVBTToKICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5jb25uZWN0KGFkZHJlc3MpCkBAIC03NzgsOCArODE4LDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuYWNxdWlyZSgpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIHNlbGYudW5peHNvY2tldDoKLSAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLnNvY2tldC5jbG9zZSgpCiAgICAgICAgICAgICBsb2dnaW5nLkhhbmRsZXIuY2xvc2Uoc2VsZikKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYucmVsZWFzZSgpCkBAIC03OTQsNiArODMzLDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnByaW9yaXR5X21hcC5nZXQobGV2ZWxOYW1lLCAid2FybmluZyIpCiAKKyAgICBpZGVudCA9ICcnICAgICAgICAgICMgcHJlcGVuZGVkIHRvIGFsbCBtZXNzYWdlcwogICAgIGFwcGVuZF9udWwgPSBUcnVlICAgIyBzb21lIG9sZCBzeXNsb2cgZGFlbW9ucyBleHBlY3QgYSBOVUwgdGVybWluYXRvcgogCiAgICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKQEAgLTgwNCw2ICs4NDQsOCBAQAogICAgICAgICBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgcHJlc2VudCwgaXQgaXMgTk9UIHNlbnQgdG8gdGhlIHNlcnZlci4KICAgICAgICAgIiIiCiAgICAgICAgIG1zZyA9IHNlbGYuZm9ybWF0KHJlY29yZCkKKyAgICAgICAgaWYgc2VsZi5pZGVudDoKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuaWRlbnQgKyBtc2cKICAgICAgICAgaWYgc2VsZi5hcHBlbmRfbnVsOgogICAgICAgICAgICAgbXNnICs9ICdcMDAwJwogICAgICAgICAiIiIKQEAgLTgyNyw3ICs4NjksNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LnNlbmR0byhtc2csIHNlbGYuYWRkcmVzcykKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQuc2VuZGFsbChtc2cpCi0gICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQpAQCAtODM3LDcgKzg3OSw3IEBACiAgICAgQSBoYW5kbGVyIGNsYXNzIHdoaWNoIHNlbmRzIGFuIFNNVFAgZW1haWwgZm9yIGVhY2ggbG9nZ2luZyBldmVudC4KICAgICAiIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWFpbGhvc3QsIGZyb21hZGRyLCB0b2FkZHJzLCBzdWJqZWN0LAotICAgICAgICAgICAgICAgICBjcmVkZW50aWFscz1Ob25lLCBzZWN1cmU9Tm9uZSk6CisgICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzPU5vbmUsIHNlY3VyZT1Ob25lLCB0aW1lb3V0PTUuMCk6CiAgICAgICAgICIiIgogICAgICAgICBJbml0aWFsaXplIHRoZSBoYW5kbGVyLgogCkBAIC04NTEsNiArODkzLDggQEAKICAgICAgICAgd2lsbCBiZSBlaXRoZXIgYW4gZW1wdHkgdHVwbGUsIG9yIGEgc2luZ2xlLXZhbHVlIHR1cGxlIHdpdGggdGhlIG5hbWUKICAgICAgICAgb2YgYSBrZXlmaWxlLCBvciBhIDItdmFsdWUgdHVwbGUgd2l0aCB0aGUgbmFtZXMgb2YgdGhlIGtleWZpbGUgYW5kCiAgICAgICAgIGNlcnRpZmljYXRlIGZpbGUuIChUaGlzIHR1cGxlIGlzIHBhc3NlZCB0byB0aGUgYHN0YXJ0dGxzYCBtZXRob2QpLgorICAgICAgICBBIHRpbWVvdXQgaW4gc2Vjb25kcyBjYW4gYmUgc3BlY2lmaWVkIGZvciB0aGUgU01UUCBjb25uZWN0aW9uICh0aGUKKyAgICAgICAgZGVmYXVsdCBpcyBvbmUgc2Vjb25kKS4KICAgICAgICAgIiIiCiAgICAgICAgIGxvZ2dpbmcuSGFuZGxlci5fX2luaXRfXyhzZWxmKQogICAgICAgICBpZiBpc2luc3RhbmNlKG1haWxob3N0LCB0dXBsZSk6CkBAIC04NjcsNyArOTExLDcgQEAKICAgICAgICAgc2VsZi50b2FkZHJzID0gdG9hZGRycwogICAgICAgICBzZWxmLnN1YmplY3QgPSBzdWJqZWN0CiAgICAgICAgIHNlbGYuc2VjdXJlID0gc2VjdXJlCi0gICAgICAgIHNlbGYuX3RpbWVvdXQgPSA1LjAKKyAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAogCiAgICAgZGVmIGdldFN1YmplY3Qoc2VsZiwgcmVjb3JkKToKICAgICAgICAgIiIiCkBAIC04OTAsNyArOTM0LDcgQEAKICAgICAgICAgICAgIHBvcnQgPSBzZWxmLm1haWxwb3J0CiAgICAgICAgICAgICBpZiBub3QgcG9ydDoKICAgICAgICAgICAgICAgICBwb3J0ID0gc210cGxpYi5TTVRQX1BPUlQKLSAgICAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoc2VsZi5tYWlsaG9zdCwgcG9ydCwgdGltZW91dD1zZWxmLl90aW1lb3V0KQorICAgICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChzZWxmLm1haWxob3N0LCBwb3J0LCB0aW1lb3V0PXNlbGYudGltZW91dCkKICAgICAgICAgICAgIG1zZyA9IHNlbGYuZm9ybWF0KHJlY29yZCkKICAgICAgICAgICAgIG1zZyA9ICJGcm9tOiAlc1xyXG5UbzogJXNcclxuU3ViamVjdDogJXNcclxuRGF0ZTogJXNcclxuXHJcbiVzIiAlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZyb21hZGRyLApAQCAtOTA1LDcgKzk0OSw3IEBACiAgICAgICAgICAgICAgICAgc210cC5sb2dpbihzZWxmLnVzZXJuYW1lLCBzZWxmLnBhc3N3b3JkKQogICAgICAgICAgICAgc210cC5zZW5kbWFpbChzZWxmLmZyb21hZGRyLCBzZWxmLnRvYWRkcnMsIG1zZykKICAgICAgICAgICAgIHNtdHAucXVpdCgpCi0gICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQpAQCAtOTkyLDcgKzEwMzYsNyBAQAogICAgICAgICAgICAgICAgIHR5cGUgPSBzZWxmLmdldEV2ZW50VHlwZShyZWNvcmQpCiAgICAgICAgICAgICAgICAgbXNnID0gc2VsZi5mb3JtYXQocmVjb3JkKQogICAgICAgICAgICAgICAgIHNlbGYuX3dlbHUuUmVwb3J0RXZlbnQoc2VsZi5hcHBuYW1lLCBpZCwgY2F0LCB0eXBlLCBbbXNnXSkKLSAgICAgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKQEAgLTEwNzUsOSArMTExOSwxMSBAQAogICAgICAgICAgICAgICAgIHMgPSAoJ3UlczolcycgJSBzZWxmLmNyZWRlbnRpYWxzKS5lbmNvZGUoJ3V0Zi04JykKICAgICAgICAgICAgICAgICBzID0gJ0Jhc2ljICcgKyBiYXNlNjQuYjY0ZW5jb2RlKHMpLnN0cmlwKCkKICAgICAgICAgICAgICAgICBoLnB1dGhlYWRlcignQXV0aG9yaXphdGlvbicsIHMpCi0gICAgICAgICAgICBoLmVuZGhlYWRlcnMoZGF0YSBpZiBzZWxmLm1ldGhvZCA9PSAiUE9TVCIgZWxzZSBOb25lKQorICAgICAgICAgICAgaC5lbmRoZWFkZXJzKCkKKyAgICAgICAgICAgIGlmIHNlbGYubWV0aG9kID09ICJQT1NUIjoKKyAgICAgICAgICAgICAgICBoLnNlbmQoZGF0YS5lbmNvZGUoJ3V0Zi04JykpCiAgICAgICAgICAgICBoLmdldHJlc3BvbnNlKCkgICAgI2Nhbid0IGRvIGFueXRoaW5nIHdpdGggdGhlIHJlc3VsdAotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKKyAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKQEAgLTEyNTksNyArMTMwNSw3IEBACiAgICAgICAgICIiIgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmVucXVldWUoc2VsZi5wcmVwYXJlKHJlY29yZCkpCi0gICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQpAQCAtMTM1Niw2ICsxNDAyLDE2IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IHF1ZXVlLkVtcHR5OgogICAgICAgICAgICAgICAgICAgICBicmVhawogCisgICAgICAgIGRlZiBlbnF1ZXVlX3NlbnRpbmVsKHNlbGYpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBUaGlzIGlzIHVzZWQgdG8gZW5xdWV1ZSB0aGUgc2VudGluZWwgcmVjb3JkLgorCisgICAgICAgICAgICBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiB1c2VzIHB1dF9ub3dhaXQuIFlvdSBtYXkgd2FudCB0byBvdmVycmlkZSB0aGlzCisgICAgICAgICAgICBtZXRob2QgaWYgeW91IHdhbnQgdG8gdXNlIHRpbWVvdXRzIG9yIHdvcmsgd2l0aCBjdXN0b20gcXVldWUKKyAgICAgICAgICAgIGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93YWl0KHNlbGYuX3NlbnRpbmVsKQorCiAgICAgICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBTdG9wIHRoZSBsaXN0ZW5lci4KQEAgLTEzNjUsNiArMTQyMSw2IEBACiAgICAgICAgICAgICBtYXkgYmUgc29tZSByZWNvcmRzIHN0aWxsIGxlZnQgb24gdGhlIHF1ZXVlLCB3aGljaCB3b24ndCBiZSBwcm9jZXNzZWQuCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIHNlbGYuX3N0b3Auc2V0KCkKLSAgICAgICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdChzZWxmLl9zZW50aW5lbCkKKyAgICAgICAgICAgIHNlbGYuZW5xdWV1ZV9zZW50aW5lbCgpCiAgICAgICAgICAgICBzZWxmLl90aHJlYWQuam9pbigpCiAgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCmRpZmYgLS1naXQgYS9MaWIvbHptYS5weSBiL0xpYi9sem1hLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMWIwNjUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvbHptYS5weQpAQCAtMCwwICsxLDQ1NCBAQAorIiIiSW50ZXJmYWNlIHRvIHRoZSBsaWJsem1hIGNvbXByZXNzaW9uIGxpYnJhcnkuCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIGEgY2xhc3MgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgY29tcHJlc3NlZCBmaWxlcywKK2NsYXNzZXMgZm9yIGluY3JlbWVudGFsIChkZSljb21wcmVzc2lvbiwgYW5kIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBmb3IKK29uZS1zaG90IChkZSljb21wcmVzc2lvbi4KKworVGhlc2UgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIHN1cHBvcnQgYm90aCB0aGUgWFogYW5kIGxlZ2FjeSBMWk1BCitjb250YWluZXIgZm9ybWF0cywgYXMgd2VsbCBhcyByYXcgY29tcHJlc3NlZCBkYXRhIHN0cmVhbXMuCisiIiIKKworX19hbGxfXyA9IFsKKyAgICAiQ0hFQ0tfTk9ORSIsICJDSEVDS19DUkMzMiIsICJDSEVDS19DUkM2NCIsICJDSEVDS19TSEEyNTYiLAorICAgICJDSEVDS19JRF9NQVgiLCAiQ0hFQ0tfVU5LTk9XTiIsCisgICAgIkZJTFRFUl9MWk1BMSIsICJGSUxURVJfTFpNQTIiLCAiRklMVEVSX0RFTFRBIiwgIkZJTFRFUl9YODYiLCAiRklMVEVSX0lBNjQiLAorICAgICJGSUxURVJfQVJNIiwgIkZJTFRFUl9BUk1USFVNQiIsICJGSUxURVJfUE9XRVJQQyIsICJGSUxURVJfU1BBUkMiLAorICAgICJGT1JNQVRfQVVUTyIsICJGT1JNQVRfWFoiLCAiRk9STUFUX0FMT05FIiwgIkZPUk1BVF9SQVciLAorICAgICJNRl9IQzMiLCAiTUZfSEM0IiwgIk1GX0JUMiIsICJNRl9CVDMiLCAiTUZfQlQ0IiwKKyAgICAiTU9ERV9GQVNUIiwgIk1PREVfTk9STUFMIiwgIlBSRVNFVF9ERUZBVUxUIiwgIlBSRVNFVF9FWFRSRU1FIiwKKworICAgICJMWk1BQ29tcHJlc3NvciIsICJMWk1BRGVjb21wcmVzc29yIiwgIkxaTUFGaWxlIiwgIkxaTUFFcnJvciIsCisgICAgIm9wZW4iLCAiY29tcHJlc3MiLCAiZGVjb21wcmVzcyIsICJpc19jaGVja19zdXBwb3J0ZWQiLAorXQorCitpbXBvcnQgYnVpbHRpbnMKK2ltcG9ydCBpbworZnJvbSBfbHptYSBpbXBvcnQgKgorZnJvbSBfbHptYSBpbXBvcnQgX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcywgX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcworCisKK19NT0RFX0NMT1NFRCAgID0gMAorX01PREVfUkVBRCAgICAgPSAxCitfTU9ERV9SRUFEX0VPRiA9IDIKK19NT0RFX1dSSVRFICAgID0gMworCitfQlVGRkVSX1NJWkUgPSA4MTkyCisKKworY2xhc3MgTFpNQUZpbGUoaW8uQnVmZmVyZWRJT0Jhc2UpOgorCisgICAgIiIiQSBmaWxlIG9iamVjdCBwcm92aWRpbmcgdHJhbnNwYXJlbnQgTFpNQSAoZGUpY29tcHJlc3Npb24uCisKKyAgICBBbiBMWk1BRmlsZSBjYW4gYWN0IGFzIGEgd3JhcHBlciBmb3IgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QsIG9yCisgICAgcmVmZXIgZGlyZWN0bHkgdG8gYSBuYW1lZCBmaWxlIG9uIGRpc2suCisKKyAgICBOb3RlIHRoYXQgTFpNQUZpbGUgcHJvdmlkZXMgYSAqYmluYXJ5KiBmaWxlIGludGVyZmFjZSAtIGRhdGEgcmVhZAorICAgIGlzIHJldHVybmVkIGFzIGJ5dGVzLCBhbmQgZGF0YSB0byBiZSB3cml0dGVuIG11c3QgYmUgZ2l2ZW4gYXMgYnl0ZXMuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWU9Tm9uZSwgbW9kZT0iciIsICosCisgICAgICAgICAgICAgICAgIGZvcm1hdD1Ob25lLCBjaGVjaz0tMSwgcHJlc2V0PU5vbmUsIGZpbHRlcnM9Tm9uZSk6CisgICAgICAgICIiIk9wZW4gYW4gTFpNQS1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG1vZGUuCisKKyAgICAgICAgZmlsZW5hbWUgY2FuIGJlIGVpdGhlciBhbiBhY3R1YWwgZmlsZSBuYW1lIChnaXZlbiBhcyBhIHN0ciBvcgorICAgICAgICBieXRlcyBvYmplY3QpLCBpbiB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzIG9wZW5lZCwgb3IgaXQgY2FuCisgICAgICAgIGJlIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KKworICAgICAgICBtb2RlIGNhbiBiZSAiciIgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLCAidyIgZm9yIChvdmVyKXdyaXRpbmcsIG9yCisgICAgICAgICJhIiBmb3IgYXBwZW5kaW5nLiBUaGVzZSBjYW4gZXF1aXZhbGVudGx5IGJlIGdpdmVuIGFzICJyYiIsICJ3YiIsCisgICAgICAgIGFuZCAiYWIiIHJlc3BlY3RpdmVseS4KKworICAgICAgICBmb3JtYXQgc3BlY2lmaWVzIHRoZSBjb250YWluZXIgZm9ybWF0IHRvIHVzZSBmb3IgdGhlIGZpbGUuCisgICAgICAgIElmIG1vZGUgaXMgInIiLCB0aGlzIGRlZmF1bHRzIHRvIEZPUk1BVF9BVVRPLiBPdGhlcndpc2UsIHRoZQorICAgICAgICBkZWZhdWx0IGlzIEZPUk1BVF9YWi4KKworICAgICAgICBjaGVjayBzcGVjaWZpZXMgdGhlIGludGVncml0eSBjaGVjayB0byB1c2UuIFRoaXMgYXJndW1lbnQgY2FuCisgICAgICAgIG9ubHkgYmUgdXNlZCB3aGVuIG9wZW5pbmcgYSBmaWxlIGZvciB3cml0aW5nLiBGb3IgRk9STUFUX1haLAorICAgICAgICB0aGUgZGVmYXVsdCBpcyBDSEVDS19DUkM2NC4gRk9STUFUX0FMT05FIGFuZCBGT1JNQVRfUkFXIGRvIG5vdAorICAgICAgICBzdXBwb3J0IGludGVncml0eSBjaGVja3MgLSBmb3IgdGhlc2UgZm9ybWF0cywgY2hlY2sgbXVzdCBiZQorICAgICAgICBvbWl0dGVkLCBvciBiZSBDSEVDS19OT05FLgorCisgICAgICAgIFdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHJlYWRpbmcsIHRoZSAqcHJlc2V0KiBhcmd1bWVudCBpcyBub3QKKyAgICAgICAgbWVhbmluZ2Z1bCwgYW5kIHNob3VsZCBiZSBvbWl0dGVkLiBUaGUgKmZpbHRlcnMqIGFyZ3VtZW50IHNob3VsZAorICAgICAgICBhbHNvIGJlIG9taXR0ZWQsIGV4Y2VwdCB3aGVuIGZvcm1hdCBpcyBGT1JNQVRfUkFXIChpbiB3aGljaCBjYXNlCisgICAgICAgIGl0IGlzIHJlcXVpcmVkKS4KKworICAgICAgICBXaGVuIG9wZW5pbmcgYSBmaWxlIGZvciB3cml0aW5nLCB0aGUgc2V0dGluZ3MgdXNlZCBieSB0aGUKKyAgICAgICAgY29tcHJlc3NvciBjYW4gYmUgc3BlY2lmaWVkIGVpdGhlciBhcyBhIHByZXNldCBjb21wcmVzc2lvbgorICAgICAgICBsZXZlbCAod2l0aCB0aGUgKnByZXNldCogYXJndW1lbnQpLCBvciBpbiBkZXRhaWwgYXMgYSBjdXN0b20KKyAgICAgICAgZmlsdGVyIGNoYWluICh3aXRoIHRoZSAqZmlsdGVycyogYXJndW1lbnQpLiBGb3IgRk9STUFUX1haIGFuZAorICAgICAgICBGT1JNQVRfQUxPTkUsIHRoZSBkZWZhdWx0IGlzIHRvIHVzZSB0aGUgUFJFU0VUX0RFRkFVTFQgcHJlc2V0CisgICAgICAgIGxldmVsLiBGb3IgRk9STUFUX1JBVywgdGhlIGNhbGxlciBtdXN0IGFsd2F5cyBzcGVjaWZ5IGEgZmlsdGVyCisgICAgICAgIGNoYWluOyB0aGUgcmF3IGNvbXByZXNzb3IgZG9lcyBub3Qgc3VwcG9ydCBwcmVzZXQgY29tcHJlc3Npb24KKyAgICAgICAgbGV2ZWxzLgorCisgICAgICAgIHByZXNldCAoaWYgcHJvdmlkZWQpIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSAwLTksCisgICAgICAgIG9wdGlvbmFsbHkgT1ItZWQgd2l0aCB0aGUgY29uc3RhbnQgUFJFU0VUX0VYVFJFTUUuCisKKyAgICAgICAgZmlsdGVycyAoaWYgcHJvdmlkZWQpIHNob3VsZCBiZSBhIHNlcXVlbmNlIG9mIGRpY3RzLiBFYWNoIGRpY3QKKyAgICAgICAgc2hvdWxkIGhhdmUgYW4gZW50cnkgZm9yICJpZCIgaW5kaWNhdGluZyBJRCBvZiB0aGUgZmlsdGVyLCBwbHVzCisgICAgICAgIGFkZGl0aW9uYWwgZW50cmllcyBmb3Igb3B0aW9ucyB0byB0aGUgZmlsdGVyLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fZnAgPSBOb25lCisgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBGYWxzZQorICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfQ0xPU0VECisgICAgICAgIHNlbGYuX3BvcyA9IDAKKyAgICAgICAgc2VsZi5fc2l6ZSA9IC0xCisKKyAgICAgICAgaWYgbW9kZSBpbiAoInIiLCAicmIiKToKKyAgICAgICAgICAgIGlmIGNoZWNrICE9IC0xOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCBzcGVjaWZ5IGFuIGludGVncml0eSBjaGVjayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2hlbiBvcGVuaW5nIGEgZmlsZSBmb3IgcmVhZGluZyIpCisgICAgICAgICAgICBpZiBwcmVzZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IHNwZWNpZnkgYSBwcmVzZXQgY29tcHJlc3Npb24gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxldmVsIHdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHJlYWRpbmciKQorICAgICAgICAgICAgaWYgZm9ybWF0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZm9ybWF0ID0gRk9STUFUX0FVVE8KKyAgICAgICAgICAgIG1vZGVfY29kZSA9IF9NT0RFX1JFQUQKKyAgICAgICAgICAgICMgU2F2ZSB0aGUgYXJncyB0byBwYXNzIHRvIHRoZSBMWk1BRGVjb21wcmVzc29yIGluaXRpYWxpemVyLgorICAgICAgICAgICAgIyBJZiB0aGUgZmlsZSBjb250YWlucyBtdWx0aXBsZSBjb21wcmVzc2VkIHN0cmVhbXMsIGVhY2gKKyAgICAgICAgICAgICMgc3RyZWFtIHdpbGwgbmVlZCBhIHNlcGFyYXRlIGRlY29tcHJlc3NvciBvYmplY3QuCisgICAgICAgICAgICBzZWxmLl9pbml0X2FyZ3MgPSB7ImZvcm1hdCI6Zm9ybWF0LCAiZmlsdGVycyI6ZmlsdGVyc30KKyAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IExaTUFEZWNvbXByZXNzb3IoKipzZWxmLl9pbml0X2FyZ3MpCisgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBOb25lCisgICAgICAgIGVsaWYgbW9kZSBpbiAoInciLCAid2IiLCAiYSIsICJhYiIpOgorICAgICAgICAgICAgaWYgZm9ybWF0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZm9ybWF0ID0gRk9STUFUX1haCisgICAgICAgICAgICBtb2RlX2NvZGUgPSBfTU9ERV9XUklURQorICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IExaTUFDb21wcmVzc29yKGZvcm1hdD1mb3JtYXQsIGNoZWNrPWNoZWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNldD1wcmVzZXQsIGZpbHRlcnM9ZmlsdGVycykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogeyFyfSIuZm9ybWF0KG1vZGUpKQorCisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgICAgICBpZiAiYiIgbm90IGluIG1vZGU6CisgICAgICAgICAgICAgICAgbW9kZSArPSAiYiIKKyAgICAgICAgICAgIHNlbGYuX2ZwID0gYnVpbHRpbnMub3BlbihmaWxlbmFtZSwgbW9kZSkKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9tb2RlID0gbW9kZV9jb2RlCisgICAgICAgIGVsaWYgaGFzYXR0cihmaWxlbmFtZSwgInJlYWQiKSBvciBoYXNhdHRyKGZpbGVuYW1lLCAid3JpdGUiKToKKyAgICAgICAgICAgIHNlbGYuX2ZwID0gZmlsZW5hbWUKKyAgICAgICAgICAgIHNlbGYuX21vZGUgPSBtb2RlX2NvZGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlsZW5hbWUgbXVzdCBiZSBhIHN0ciBvciBieXRlcyBvYmplY3QsIG9yIGEgZmlsZSIpCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICIiIkZsdXNoIGFuZCBjbG9zZSB0aGUgZmlsZS4KKworICAgICAgICBNYXkgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIHdpdGhvdXQgZXJyb3IuIE9uY2UgdGhlIGZpbGUgaXMKKyAgICAgICAgY2xvc2VkLCBhbnkgb3RoZXIgb3BlcmF0aW9uIG9uIGl0IHdpbGwgcmFpc2UgYSBWYWx1ZUVycm9yLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9DTE9TRUQ6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgc2VsZi5fbW9kZSBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpOgorICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBOb25lCisgICAgICAgICAgICBlbGlmIHNlbGYuX21vZGUgPT0gX01PREVfV1JJVEU6CisgICAgICAgICAgICAgICAgc2VsZi5fZnAud3JpdGUoc2VsZi5fY29tcHJlc3Nvci5mbHVzaCgpKQorICAgICAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzb3IgPSBOb25lCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fY2xvc2VmcDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnAuY2xvc2UoKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzZWxmLl9mcCA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZWZwID0gRmFsc2UKKyAgICAgICAgICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfQ0xPU0VECisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY2xvc2VkKHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIHRoaXMgZmlsZSBpcyBjbG9zZWQuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9tb2RlID09IF9NT0RFX0NMT1NFRAorCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSB1bmRlcmx5aW5nIGZpbGUuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fZnAuZmlsZW5vKCkKKworICAgIGRlZiBzZWVrYWJsZShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGZpbGUgc3VwcG9ydHMgc2Vla2luZy4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYucmVhZGFibGUoKSBhbmQgc2VsZi5fZnAuc2Vla2FibGUoKQorCisgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSB3YXMgb3BlbmVkIGZvciByZWFkaW5nLiIiIgorICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKQorCisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSB3YXMgb3BlbmVkIGZvciB3cml0aW5nLiIiIgorICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgPT0gX01PREVfV1JJVEUKKworICAgICMgTW9kZS1jaGVja2luZyBoZWxwZXIgZnVuY3Rpb25zLgorCisgICAgZGVmIF9jaGVja19ub3RfY2xvc2VkKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKQorCisgICAgZGVmIF9jaGVja19jYW5fcmVhZChzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYucmVhZGFibGUoKToKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJGaWxlIG5vdCBvcGVuIGZvciByZWFkaW5nIikKKworICAgIGRlZiBfY2hlY2tfY2FuX3dyaXRlKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi53cml0YWJsZSgpOgorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIkZpbGUgbm90IG9wZW4gZm9yIHdyaXRpbmciKQorCisgICAgZGVmIF9jaGVja19jYW5fc2VlayhzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYucmVhZGFibGUoKToKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJTZWVraW5nIGlzIG9ubHkgc3VwcG9ydGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbiBmaWxlcyBvcGVuIGZvciByZWFkaW5nIikKKyAgICAgICAgaWYgbm90IHNlbGYuX2ZwLnNlZWthYmxlKCk6CisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiVGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvZXMgbm90IHN1cHBvcnQgc2Vla2luZyIpCisKKyAgICAjIEZpbGwgdGhlIHJlYWRhaGVhZCBidWZmZXIgaWYgaXQgaXMgZW1wdHkuIFJldHVybnMgRmFsc2Ugb24gRU9GLgorICAgIGRlZiBfZmlsbF9idWZmZXIoc2VsZik6CisgICAgICAgICMgRGVwZW5kaW5nIG9uIHRoZSBpbnB1dCBkYXRhLCBvdXIgY2FsbCB0byB0aGUgZGVjb21wcmVzc29yIG1heSBub3QKKyAgICAgICAgIyByZXR1cm4gYW55IGRhdGEuIEluIHRoaXMgY2FzZSwgdHJ5IGFnYWluIGFmdGVyIHJlYWRpbmcgYW5vdGhlciBibG9jay4KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGlmIHNlbGYuX2J1ZmZlcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgICAgICBpZiBzZWxmLl9kZWNvbXByZXNzb3IudW51c2VkX2RhdGE6CisgICAgICAgICAgICAgICAgcmF3YmxvY2sgPSBzZWxmLl9kZWNvbXByZXNzb3IudW51c2VkX2RhdGEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmF3YmxvY2sgPSBzZWxmLl9mcC5yZWFkKF9CVUZGRVJfU0laRSkKKworICAgICAgICAgICAgaWYgbm90IHJhd2Jsb2NrOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci5lb2Y6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9SRUFEX0VPRgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zaXplID0gc2VsZi5fcG9zCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKCJDb21wcmVzc2VkIGZpbGUgZW5kZWQgYmVmb3JlIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmQtb2Ytc3RyZWFtIG1hcmtlciB3YXMgcmVhY2hlZCIpCisKKyAgICAgICAgICAgICMgQ29udGludWUgdG8gbmV4dCBzdHJlYW0uCisgICAgICAgICAgICBpZiBzZWxmLl9kZWNvbXByZXNzb3IuZW9mOgorICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IExaTUFEZWNvbXByZXNzb3IoKipzZWxmLl9pbml0X2FyZ3MpCisKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKHJhd2Jsb2NrKQorCisgICAgIyBSZWFkIGRhdGEgdW50aWwgRU9GLgorICAgICMgSWYgcmV0dXJuX2RhdGEgaXMgZmFsc2UsIGNvbnN1bWUgdGhlIGRhdGEgd2l0aG91dCByZXR1cm5pbmcgaXQuCisgICAgZGVmIF9yZWFkX2FsbChzZWxmLCByZXR1cm5fZGF0YT1UcnVlKToKKyAgICAgICAgYmxvY2tzID0gW10KKyAgICAgICAgd2hpbGUgc2VsZi5fZmlsbF9idWZmZXIoKToKKyAgICAgICAgICAgIGlmIHJldHVybl9kYXRhOgorICAgICAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQoc2VsZi5fYnVmZmVyKQorICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihzZWxmLl9idWZmZXIpCisgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBOb25lCisgICAgICAgIGlmIHJldHVybl9kYXRhOgorICAgICAgICAgICAgcmV0dXJuIGIiIi5qb2luKGJsb2NrcykKKworICAgICMgUmVhZCBhIGJsb2NrIG9mIHVwIHRvIG4gYnl0ZXMuCisgICAgIyBJZiByZXR1cm5fZGF0YSBpcyBmYWxzZSwgY29uc3VtZSB0aGUgZGF0YSB3aXRob3V0IHJldHVybmluZyBpdC4KKyAgICBkZWYgX3JlYWRfYmxvY2soc2VsZiwgbiwgcmV0dXJuX2RhdGE9VHJ1ZSk6CisgICAgICAgIGJsb2NrcyA9IFtdCisgICAgICAgIHdoaWxlIG4gPiAwIGFuZCBzZWxmLl9maWxsX2J1ZmZlcigpOgorICAgICAgICAgICAgaWYgbiA8IGxlbihzZWxmLl9idWZmZXIpOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXJbOm5dCisgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fYnVmZmVyW246XQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyCisgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gTm9uZQorICAgICAgICAgICAgaWYgcmV0dXJuX2RhdGE6CisgICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChkYXRhKQorICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQorICAgICAgICAgICAgbiAtPSBsZW4oZGF0YSkKKyAgICAgICAgaWYgcmV0dXJuX2RhdGE6CisgICAgICAgICAgICByZXR1cm4gYiIiLmpvaW4oYmxvY2tzKQorCisgICAgZGVmIHBlZWsoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgICIiIlJldHVybiBidWZmZXJlZCBkYXRhIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBmaWxlIHBvc2l0aW9uLgorCisgICAgICAgIEFsd2F5cyByZXR1cm5zIGF0IGxlYXN0IG9uZSBieXRlIG9mIGRhdGEsIHVubGVzcyBhdCBFT0YuCisgICAgICAgIFRoZSBleGFjdCBudW1iZXIgb2YgYnl0ZXMgcmV0dXJuZWQgaXMgdW5zcGVjaWZpZWQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja19jYW5fcmVhZCgpCisgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRF9FT0Ygb3Igbm90IHNlbGYuX2ZpbGxfYnVmZmVyKCk6CisgICAgICAgICAgICByZXR1cm4gYiIiCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIKKworICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgorICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCisKKyAgICAgICAgSWYgc2l6ZSBpcyBuZWdhdGl2ZSBvciBvbWl0dGVkLCByZWFkIHVudGlsIEVPRiBpcyByZWFjaGVkLgorICAgICAgICBSZXR1cm5zIGIiIiBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGF0IEVPRi4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKKyAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEX0VPRiBvciBzaXplID09IDA6CisgICAgICAgICAgICByZXR1cm4gYiIiCisgICAgICAgIGVsaWYgc2l6ZSA8IDA6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF9hbGwoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfYmxvY2soc2l6ZSkKKworICAgIGRlZiByZWFkMShzZWxmLCBzaXplPS0xKToKKyAgICAgICAgIiIiUmVhZCB1cCB0byBzaXplIHVuY29tcHJlc3NlZCBieXRlcywgd2hpbGUgdHJ5aW5nIHRvIGF2b2lkCisgICAgICAgIG1ha2luZyBtdWx0aXBsZSByZWFkcyBmcm9tIHRoZSB1bmRlcmx5aW5nIHN0cmVhbS4KKworICAgICAgICBSZXR1cm5zIGIiIiBpZiB0aGUgZmlsZSBpcyBhdCBFT0YuCisgICAgICAgICIiIgorICAgICAgICAjIFVzdWFsbHksIHJlYWQxKCkgY2FsbHMgX2ZwLnJlYWQoKSBhdCBtb3N0IG9uY2UuIEhvd2V2ZXIsIHNvbWV0aW1lcworICAgICAgICAjIHRoaXMgZG9lcyBub3QgZ2l2ZSBlbm91Z2ggZGF0YSBmb3IgdGhlIGRlY29tcHJlc3NvciB0byBtYWtlIHByb2dyZXNzLgorICAgICAgICAjIEluIHRoaXMgY2FzZSB3ZSBtYWtlIG11bHRpcGxlIHJlYWRzLCB0byBhdm9pZCByZXR1cm5pbmcgYiIiLgorICAgICAgICBzZWxmLl9jaGVja19jYW5fcmVhZCgpCisgICAgICAgIGlmIChzaXplID09IDAgb3Igc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEX0VPRiBvcgorICAgICAgICAgICAgbm90IHNlbGYuX2ZpbGxfYnVmZmVyKCkpOgorICAgICAgICAgICAgcmV0dXJuIGIiIgorICAgICAgICBpZiAwIDwgc2l6ZSA8IGxlbihzZWxmLl9idWZmZXIpOgorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcls6c2l6ZV0KKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2J1ZmZlcltzaXplOl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXIKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKKyAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQorICAgICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgorICAgICAgICAiIiJXcml0ZSBhIGJ5dGVzIG9iamVjdCB0byB0aGUgZmlsZS4KKworICAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIHdyaXR0ZW4sIHdoaWNoIGlzCisgICAgICAgIGFsd2F5cyBsZW4oZGF0YSkuIE5vdGUgdGhhdCBkdWUgdG8gYnVmZmVyaW5nLCB0aGUgZmlsZSBvbiBkaXNrCisgICAgICAgIG1heSBub3QgcmVmbGVjdCB0aGUgZGF0YSB3cml0dGVuIHVudGlsIGNsb3NlKCkgaXMgY2FsbGVkLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3dyaXRlKCkKKyAgICAgICAgY29tcHJlc3NlZCA9IHNlbGYuX2NvbXByZXNzb3IuY29tcHJlc3MoZGF0YSkKKyAgICAgICAgc2VsZi5fZnAud3JpdGUoY29tcHJlc3NlZCkKKyAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQorICAgICAgICByZXR1cm4gbGVuKGRhdGEpCisKKyAgICAjIFJld2luZCB0aGUgZmlsZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkYXRhIHN0cmVhbS4KKyAgICBkZWYgX3Jld2luZChzZWxmKToKKyAgICAgICAgc2VsZi5fZnAuc2VlaygwLCAwKQorICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfUkVBRAorICAgICAgICBzZWxmLl9wb3MgPSAwCisgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IExaTUFEZWNvbXByZXNzb3IoKipzZWxmLl9pbml0X2FyZ3MpCisgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKKworICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPTApOgorICAgICAgICAiIiJDaGFuZ2UgdGhlIGZpbGUgcG9zaXRpb24uCisKKyAgICAgICAgVGhlIG5ldyBwb3NpdGlvbiBpcyBzcGVjaWZpZWQgYnkgb2Zmc2V0LCByZWxhdGl2ZSB0byB0aGUKKyAgICAgICAgcG9zaXRpb24gaW5kaWNhdGVkIGJ5IHdoZW5jZS4gUG9zc2libGUgdmFsdWVzIGZvciB3aGVuY2UgYXJlOgorCisgICAgICAgICAgICAwOiBzdGFydCBvZiBzdHJlYW0gKGRlZmF1bHQpOiBvZmZzZXQgbXVzdCBub3QgYmUgbmVnYXRpdmUKKyAgICAgICAgICAgIDE6IGN1cnJlbnQgc3RyZWFtIHBvc2l0aW9uCisgICAgICAgICAgICAyOiBlbmQgb2Ygc3RyZWFtOyBvZmZzZXQgbXVzdCBub3QgYmUgcG9zaXRpdmUKKworICAgICAgICBSZXR1cm5zIHRoZSBuZXcgZmlsZSBwb3NpdGlvbi4KKworICAgICAgICBOb3RlIHRoYXQgc2Vla2luZyBpcyBlbXVsYXRlZCwgc3AgZGVwZW5kaW5nIG9uIHRoZSBwYXJhbWV0ZXJzLAorICAgICAgICB0aGlzIG9wZXJhdGlvbiBtYXkgYmUgZXh0cmVtZWx5IHNsb3cuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja19jYW5fc2VlaygpCisKKyAgICAgICAgIyBSZWNhbGN1bGF0ZSBvZmZzZXQgYXMgYW4gYWJzb2x1dGUgZmlsZSBwb3NpdGlvbi4KKyAgICAgICAgaWYgd2hlbmNlID09IDA6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsaWYgd2hlbmNlID09IDE6CisgICAgICAgICAgICBvZmZzZXQgPSBzZWxmLl9wb3MgKyBvZmZzZXQKKyAgICAgICAgZWxpZiB3aGVuY2UgPT0gMjoKKyAgICAgICAgICAgICMgU2Vla2luZyByZWxhdGl2ZSB0byBFT0YgLSB3ZSBuZWVkIHRvIGtub3cgdGhlIGZpbGUncyBzaXplLgorICAgICAgICAgICAgaWYgc2VsZi5fc2l6ZSA8IDA6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9hbGwocmV0dXJuX2RhdGE9RmFsc2UpCisgICAgICAgICAgICBvZmZzZXQgPSBzZWxmLl9zaXplICsgb2Zmc2V0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHZhbHVlIGZvciB3aGVuY2U6IHt9Ii5mb3JtYXQod2hlbmNlKSkKKworICAgICAgICAjIE1ha2UgaXQgc28gdGhhdCBvZmZzZXQgaXMgdGhlIG51bWJlciBvZiBieXRlcyB0byBza2lwIGZvcndhcmQuCisgICAgICAgIGlmIG9mZnNldCA8IHNlbGYuX3BvczoKKyAgICAgICAgICAgIHNlbGYuX3Jld2luZCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvZmZzZXQgLT0gc2VsZi5fcG9zCisKKyAgICAgICAgIyBSZWFkIGFuZCBkaXNjYXJkIGRhdGEgdW50aWwgd2UgcmVhY2ggdGhlIGRlc2lyZWQgcG9zaXRpb24uCisgICAgICAgIGlmIHNlbGYuX21vZGUgIT0gX01PREVfUkVBRF9FT0Y6CisgICAgICAgICAgICBzZWxmLl9yZWFkX2Jsb2NrKG9mZnNldCwgcmV0dXJuX2RhdGE9RmFsc2UpCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BvcworCisgICAgZGVmIHRlbGwoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLiIiIgorICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BvcworCisKK2RlZiBvcGVuKGZpbGVuYW1lLCBtb2RlPSJyYiIsICosCisgICAgICAgICBmb3JtYXQ9Tm9uZSwgY2hlY2s9LTEsIHByZXNldD1Ob25lLCBmaWx0ZXJzPU5vbmUsCisgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKToKKyAgICAiIiJPcGVuIGFuIExaTUEtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUuCisKKyAgICBmaWxlbmFtZSBjYW4gYmUgZWl0aGVyIGFuIGFjdHVhbCBmaWxlIG5hbWUgKGdpdmVuIGFzIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCksCisgICAgaW4gd2hpY2ggY2FzZSB0aGUgbmFtZWQgZmlsZSBpcyBvcGVuZWQsIG9yIGl0IGNhbiBiZSBhbiBleGlzdGluZyBmaWxlIG9iamVjdAorICAgIHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KKworICAgIFRoZSBtb2RlIGFyZ3VtZW50IGNhbiBiZSAiciIsICJyYiIgKGRlZmF1bHQpLCAidyIsICJ3YiIsICJhIiwgb3IgImFiIiBmb3IKKyAgICBiaW5hcnkgbW9kZSwgb3IgInJ0IiwgInd0IiBvciAiYXQiIGZvciB0ZXh0IG1vZGUuCisKKyAgICBUaGUgZm9ybWF0LCBjaGVjaywgcHJlc2V0IGFuZCBmaWx0ZXJzIGFyZ3VtZW50cyBzcGVjaWZ5IHRoZSBjb21wcmVzc2lvbgorICAgIHNldHRpbmdzLCBhcyBmb3IgTFpNQUNvbXByZXNzb3IsIExaTUFEZWNvbXByZXNzb3IgYW5kIExaTUFGaWxlLgorCisgICAgRm9yIGJpbmFyeSBtb2RlLCB0aGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gdGhlIExaTUFGaWxlIGNvbnN0cnVjdG9yOgorICAgIExaTUFGaWxlKGZpbGVuYW1lLCBtb2RlLCAuLi4pLiBJbiB0aGlzIGNhc2UsIHRoZSBlbmNvZGluZywgZXJyb3JzIGFuZAorICAgIG5ld2xpbmUgYXJndW1lbnRzIG11c3Qgbm90IGJlIHByb3ZpZGVkLgorCisgICAgRm9yIHRleHQgbW9kZSwgYSBMWk1BRmlsZSBvYmplY3QgaXMgY3JlYXRlZCwgYW5kIHdyYXBwZWQgaW4gYW4KKyAgICBpby5UZXh0SU9XcmFwcGVyIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBlbmNvZGluZywgZXJyb3IgaGFuZGxpbmcKKyAgICBiZWhhdmlvciwgYW5kIGxpbmUgZW5kaW5nKHMpLgorCisgICAgIiIiCisgICAgaWYgInQiIGluIG1vZGU6CisgICAgICAgIGlmICJiIiBpbiBtb2RlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiAlciIgJSAobW9kZSwpKQorICAgIGVsc2U6CisgICAgICAgIGlmIGVuY29kaW5nIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ2VuY29kaW5nJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKKyAgICAgICAgaWYgZXJyb3JzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ2Vycm9ycycgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCisgICAgICAgIGlmIG5ld2xpbmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnbmV3bGluZScgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCisKKyAgICBsel9tb2RlID0gbW9kZS5yZXBsYWNlKCJ0IiwgIiIpCisgICAgYmluYXJ5X2ZpbGUgPSBMWk1BRmlsZShmaWxlbmFtZSwgbHpfbW9kZSwgZm9ybWF0PWZvcm1hdCwgY2hlY2s9Y2hlY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXQ9cHJlc2V0LCBmaWx0ZXJzPWZpbHRlcnMpCisKKyAgICBpZiAidCIgaW4gbW9kZToKKyAgICAgICAgcmV0dXJuIGlvLlRleHRJT1dyYXBwZXIoYmluYXJ5X2ZpbGUsIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGJpbmFyeV9maWxlCisKKworZGVmIGNvbXByZXNzKGRhdGEsIGZvcm1hdD1GT1JNQVRfWFosIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKToKKyAgICAiIiJDb21wcmVzcyBhIGJsb2NrIG9mIGRhdGEuCisKKyAgICBSZWZlciB0byBMWk1BQ29tcHJlc3NvcidzIGRvY3N0cmluZyBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUKKyAgICBvcHRpb25hbCBhcmd1bWVudHMgKmZvcm1hdCosICpjaGVjayosICpwcmVzZXQqIGFuZCAqZmlsdGVycyouCisKKyAgICBGb3IgaW5jcmVtZW50YWwgY29tcHJlc3Npb24sIHVzZSBhbiBMWk1BQ29tcHJlc3NvciBvYmplY3QgaW5zdGVhZC4KKyAgICAiIiIKKyAgICBjb21wID0gTFpNQUNvbXByZXNzb3IoZm9ybWF0LCBjaGVjaywgcHJlc2V0LCBmaWx0ZXJzKQorICAgIHJldHVybiBjb21wLmNvbXByZXNzKGRhdGEpICsgY29tcC5mbHVzaCgpCisKKworZGVmIGRlY29tcHJlc3MoZGF0YSwgZm9ybWF0PUZPUk1BVF9BVVRPLCBtZW1saW1pdD1Ob25lLCBmaWx0ZXJzPU5vbmUpOgorICAgICIiIkRlY29tcHJlc3MgYSBibG9jayBvZiBkYXRhLgorCisgICAgUmVmZXIgdG8gTFpNQURlY29tcHJlc3NvcidzIGRvY3N0cmluZyBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUKKyAgICBvcHRpb25hbCBhcmd1bWVudHMgKmZvcm1hdCosICpjaGVjayogYW5kICpmaWx0ZXJzKi4KKworICAgIEZvciBpbmNyZW1lbnRhbCBkZWNvbXByZXNzaW9uLCB1c2UgYSBMWk1BRGVjb21wcmVzc29yIG9iamVjdCBpbnN0ZWFkLgorICAgICIiIgorICAgIHJlc3VsdHMgPSBbXQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGRlY29tcCA9IExaTUFEZWNvbXByZXNzb3IoZm9ybWF0LCBtZW1saW1pdCwgZmlsdGVycykKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQoZGVjb21wLmRlY29tcHJlc3MoZGF0YSkpCisgICAgICAgIGlmIG5vdCBkZWNvbXAuZW9mOgorICAgICAgICAgICAgcmFpc2UgTFpNQUVycm9yKCJDb21wcmVzc2VkIGRhdGEgZW5kZWQgYmVmb3JlIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKKyAgICAgICAgaWYgbm90IGRlY29tcC51bnVzZWRfZGF0YToKKyAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihyZXN1bHRzKQorICAgICAgICAjIFRoZXJlIGlzIHVudXNlZCBkYXRhIGxlZnQgb3Zlci4gUHJvY2VlZCB0byBuZXh0IHN0cmVhbS4KKyAgICAgICAgZGF0YSA9IGRlY29tcC51bnVzZWRfZGF0YQpkaWZmIC0tZ2l0IGEvTGliL21haWxib3gucHkgYi9MaWIvbWFpbGJveC5weQppbmRleCBjNzNmYjk1Li5kM2JmM2ZkIDEwMDY0NAotLS0gYS9MaWIvbWFpbGJveC5weQorKysgYi9MaWIvbWFpbGJveC5weQpAQCAtMTE1Nyw4ICsxMTU3LDcgQEAKICAgICBkZWYgZ2V0X3NlcXVlbmNlcyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGEgbmFtZS10by1rZXktbGlzdCBkaWN0aW9uYXJ5IHRvIGRlZmluZSBlYWNoIHNlcXVlbmNlLiIiIgogICAgICAgICByZXN1bHRzID0ge30KLSAgICAgICAgZiA9IG9wZW4ob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsICcubWhfc2VxdWVuY2VzJyksICdyJykKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsICcubWhfc2VxdWVuY2VzJyksICdyJywgZW5jb2Rpbmc9J0FTQ0lJJykgYXMgZjoKICAgICAgICAgICAgIGFsbF9rZXlzID0gc2V0KHNlbGYua2V5cygpKQogICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKICAgICAgICAgICAgICAgICB0cnk6CkBAIC0xMTc3LDEzICsxMTc2LDExIEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEZvcm1hdEVycm9yKCdJbnZhbGlkIHNlcXVlbmNlIHNwZWNpZmljYXRpb246ICVzJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUucnN0cmlwKCkpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgcmV0dXJuIHJlc3VsdHMKIAogICAgIGRlZiBzZXRfc2VxdWVuY2VzKHNlbGYsIHNlcXVlbmNlcyk6CiAgICAgICAgICIiIlNldCBzZXF1ZW5jZXMgdXNpbmcgdGhlIGdpdmVuIG5hbWUtdG8ta2V5LWxpc3QgZGljdGlvbmFyeS4iIiIKLSAgICAgICAgZiA9IG9wZW4ob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsICcubWhfc2VxdWVuY2VzJyksICdyKycpCisgICAgICAgIGYgPSBvcGVuKG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCAnLm1oX3NlcXVlbmNlcycpLCAncisnLCBlbmNvZGluZz0nQVNDSUknKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy5jbG9zZShvcy5vcGVuKGYubmFtZSwgb3MuT19XUk9OTFkgfCBvcy5PX1RSVU5DKSkKICAgICAgICAgICAgIGZvciBuYW1lLCBrZXlzIGluIHNlcXVlbmNlcy5pdGVtcygpOgpAQCAtMTUyMyw5ICsxNTIwLDEwIEBACiAKICAgICBkZWYgX2JlY29tZV9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICAiIiJBc3N1bWUgdGhlIG5vbi1mb3JtYXQtc3BlY2lmaWMgc3RhdGUgb2YgbWVzc2FnZS4iIiIKLSAgICAgICAgZm9yIG5hbWUgaW4gKCdfaGVhZGVycycsICdfdW5peGZyb20nLCAnX3BheWxvYWQnLCAnX2NoYXJzZXQnLAotICAgICAgICAgICAgICAgICAgICAgJ3ByZWFtYmxlJywgJ2VwaWxvZ3VlJywgJ2RlZmVjdHMnLCAnX2RlZmF1bHRfdHlwZScpOgotICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1tuYW1lXSA9IG1lc3NhZ2UuX19kaWN0X19bbmFtZV0KKyAgICAgICAgdHlwZV9zcGVjaWZpYyA9IGdldGF0dHIobWVzc2FnZSwgJ190eXBlX3NwZWNpZmljX2F0dHJpYnV0ZXMnLCBbXSkKKyAgICAgICAgZm9yIG5hbWUgaW4gbWVzc2FnZS5fX2RpY3RfXzoKKyAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHR5cGVfc3BlY2lmaWM6CisgICAgICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1tuYW1lXSA9IG1lc3NhZ2UuX19kaWN0X19bbmFtZV0KIAogICAgIGRlZiBfZXhwbGFpbl90byhzZWxmLCBtZXNzYWdlKToKICAgICAgICAgIiIiQ29weSBmb3JtYXQtc3BlY2lmaWMgc3RhdGUgdG8gbWVzc2FnZSBpbnNvZmFyIGFzIHBvc3NpYmxlLiIiIgpAQCAtMTUzOCw2ICsxNTM2LDggQEAKIGNsYXNzIE1haWxkaXJNZXNzYWdlKE1lc3NhZ2UpOgogICAgICIiIk1lc3NhZ2Ugd2l0aCBNYWlsZGlyLXNwZWNpZmljIHByb3BlcnRpZXMuIiIiCiAKKyAgICBfdHlwZV9zcGVjaWZpY19hdHRyaWJ1dGVzID0gWydfc3ViZGlyJywgJ19pbmZvJywgJ19kYXRlJ10KKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlPU5vbmUpOgogICAgICAgICAiIiJJbml0aWFsaXplIGEgTWFpbGRpck1lc3NhZ2UgaW5zdGFuY2UuIiIiCiAgICAgICAgIHNlbGYuX3N1YmRpciA9ICduZXcnCkBAIC0xNjQ1LDYgKzE2NDUsOCBAQAogY2xhc3MgX21ib3hNTURGTWVzc2FnZShNZXNzYWdlKToKICAgICAiIiJNZXNzYWdlIHdpdGggbWJveC0gb3IgTU1ERi1zcGVjaWZpYyBwcm9wZXJ0aWVzLiIiIgogCisgICAgX3R5cGVfc3BlY2lmaWNfYXR0cmlidXRlcyA9IFsnX2Zyb20nXQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2U9Tm9uZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYW4gbWJveE1NREZNZXNzYWdlIGluc3RhbmNlLiIiIgogICAgICAgICBzZWxmLnNldF9mcm9tKCdNQUlMRVItREFFTU9OJywgVHJ1ZSkKQEAgLTE3NjAsNiArMTc2Miw4IEBACiBjbGFzcyBNSE1lc3NhZ2UoTWVzc2FnZSk6CiAgICAgIiIiTWVzc2FnZSB3aXRoIE1ILXNwZWNpZmljIHByb3BlcnRpZXMuIiIiCiAKKyAgICBfdHlwZV9zcGVjaWZpY19hdHRyaWJ1dGVzID0gWydfc2VxdWVuY2VzJ10KKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlPU5vbmUpOgogICAgICAgICAiIiJJbml0aWFsaXplIGFuIE1ITWVzc2FnZSBpbnN0YW5jZS4iIiIKICAgICAgICAgc2VsZi5fc2VxdWVuY2VzID0gW10KQEAgLTE4MzAsNiArMTgzNCw4IEBACiBjbGFzcyBCYWJ5bE1lc3NhZ2UoTWVzc2FnZSk6CiAgICAgIiIiTWVzc2FnZSB3aXRoIEJhYnlsLXNwZWNpZmljIHByb3BlcnRpZXMuIiIiCiAKKyAgICBfdHlwZV9zcGVjaWZpY19hdHRyaWJ1dGVzID0gWydfbGFiZWxzJywgJ192aXNpYmxlJ10KKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlPU5vbmUpOgogICAgICAgICAiIiJJbml0aWFsaXplIGFuIEJhYnlsTWVzc2FnZSBpbnN0YW5jZS4iIiIKICAgICAgICAgc2VsZi5fbGFiZWxzID0gW10KZGlmZiAtLWdpdCBhL0xpYi9tYWlsY2FwLnB5IGIvTGliL21haWxjYXAucHkKaW5kZXggNGFlMTNkNy4uOTlmNDk1OCAxMDA2NDQKLS0tIGEvTGliL21haWxjYXAucHkKKysrIGIvTGliL21haWxjYXAucHkKQEAgLTMzLDEwICszMywxMCBAQAogCiBkZWYgbGlzdG1haWxjYXBmaWxlcygpOgogICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIG1haWxjYXAgZmlsZXMgZm91bmQgb24gdGhlIHN5c3RlbS4iIiIKLSAgICAjIFhYWCBBY3R1YWxseSwgdGhpcyBpcyBVbml4LXNwZWNpZmljCisgICAgIyBUaGlzIGlzIG1vc3RseSBhIFVuaXggdGhpbmcsIGJ1dCB3ZSB1c2UgdGhlIE9TIHBhdGggc2VwYXJhdG9yIGFueXdheQogICAgIGlmICdNQUlMQ0FQUycgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgc3RyID0gb3MuZW52aXJvblsnTUFJTENBUFMnXQotICAgICAgICBtYWlsY2FwcyA9IHN0ci5zcGxpdCgnOicpCisgICAgICAgIHBhdGhzdHIgPSBvcy5lbnZpcm9uWydNQUlMQ0FQUyddCisgICAgICAgIG1haWxjYXBzID0gcGF0aHN0ci5zcGxpdChvcy5wYXRoc2VwKQogICAgIGVsc2U6CiAgICAgICAgIGlmICdIT01FJyBpbiBvcy5lbnZpcm9uOgogICAgICAgICAgICAgaG9tZSA9IG9zLmVudmlyb25bJ0hPTUUnXQpkaWZmIC0tZ2l0IGEvTGliL21pbWV0eXBlcy5weSBiL0xpYi9taW1ldHlwZXMucHkKaW5kZXggOGNlMDJmOS4uM2YwYmQwZSAxMDA2NDQKLS0tIGEvTGliL21pbWV0eXBlcy5weQorKysgYi9MaWIvbWltZXR5cGVzLnB5CkBAIC0yNDksNyArMjQ5LDYgQEAKICAgICAgICAgICAgICAgICAgICAgeWllbGQgY3R5cGUKICAgICAgICAgICAgICAgICBpICs9IDEKIAotICAgICAgICBkZWZhdWx0X2VuY29kaW5nID0gc3lzLmdldGRlZmF1bHRlbmNvZGluZygpCiAgICAgICAgIHdpdGggX3dpbnJlZy5PcGVuS2V5KF93aW5yZWcuSEtFWV9DTEFTU0VTX1JPT1QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInTUlNRVxEYXRhYmFzZVxDb250ZW50IFR5cGUnKSBhcyBtaW1lZGI6CiAgICAgICAgICAgICBmb3IgY3R5cGUgaW4gZW51bV90eXBlcyhtaW1lZGIpOgpAQCAtNDM0LDYgKzQzMyw4IEBACiAgICAgICAgICcua3NoJyAgICA6ICd0ZXh0L3BsYWluJywKICAgICAgICAgJy5sYXRleCcgIDogJ2FwcGxpY2F0aW9uL3gtbGF0ZXgnLAogICAgICAgICAnLm0xdicgICAgOiAndmlkZW8vbXBlZycsCisgICAgICAgICcubTN1JyAgICA6ICdhcHBsaWNhdGlvbi92bmQuYXBwbGUubXBlZ3VybCcsCisgICAgICAgICcubTN1OCcgICA6ICdhcHBsaWNhdGlvbi92bmQuYXBwbGUubXBlZ3VybCcsCiAgICAgICAgICcubWFuJyAgICA6ICdhcHBsaWNhdGlvbi94LXRyb2ZmLW1hbicsCiAgICAgICAgICcubWUnICAgICA6ICdhcHBsaWNhdGlvbi94LXRyb2ZmLW1lJywKICAgICAgICAgJy5taHQnICAgIDogJ21lc3NhZ2UvcmZjODIyJywKZGlmZiAtLWdpdCBhL0xpYi9tb2R1bGVmaW5kZXIucHkgYi9MaWIvbW9kdWxlZmluZGVyLnB5CmluZGV4IGYwMzNiYTkuLmY5MGE0MzIgMTAwNjQ0Ci0tLSBhL0xpYi9tb2R1bGVmaW5kZXIucHkKKysrIGIvTGliL21vZHVsZWZpbmRlci5weQpAQCAtMSwxNiArMSwxNCBAQAogIiIiRmluZCBtb2R1bGVzIHVzZWQgYnkgYSBzY3JpcHQsIHVzaW5nIGludHJvc3BlY3Rpb24uIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgZ2VuZXJhdG9ycwogaW1wb3J0IGRpcwogaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCBtYXJzaGFsCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB0eXBlcwogaW1wb3J0IHN0cnVjdAogCi1SRUFEX01PREUgPSAiclUiCi0KICMgWFhYIENsZWFuIHVwIG9uY2Ugc3RyOCdzIGNzdG9yIG1hdGNoZXMgYnl0ZXMuCiBMT0FEX0NPTlNUID0gYnl0ZXMoW2Rpcy5vcG5hbWUuaW5kZXgoJ0xPQURfQ09OU1QnKV0pCiBJTVBPUlRfTkFNRSA9IGJ5dGVzKFtkaXMub3BuYW1lLmluZGV4KCdJTVBPUlRfTkFNRScpXSkKQEAgLTI5LDkgKzI3LDcgQEAKIAogIyBBIFB1YmxpYyBpbnRlcmZhY2UKIGRlZiBBZGRQYWNrYWdlUGF0aChwYWNrYWdlbmFtZSwgcGF0aCk6Ci0gICAgcGF0aHMgPSBwYWNrYWdlUGF0aE1hcC5nZXQocGFja2FnZW5hbWUsIFtdKQotICAgIHBhdGhzLmFwcGVuZChwYXRoKQotICAgIHBhY2thZ2VQYXRoTWFwW3BhY2thZ2VuYW1lXSA9IHBhdGhzCisgICAgcGFja2FnZVBhdGhNYXAuc2V0ZGVmYXVsdChwYWNrYWdlbmFtZSwgW10pLmFwcGVuZChwYXRoKQogCiByZXBsYWNlUGFja2FnZU1hcCA9IHt9CiAKQEAgLTEwNiwxNCArMTAyLDE0IEBACiAKICAgICBkZWYgcnVuX3NjcmlwdChzZWxmLCBwYXRobmFtZSk6CiAgICAgICAgIHNlbGYubXNnKDIsICJydW5fc2NyaXB0IiwgcGF0aG5hbWUpCi0gICAgICAgIHdpdGggb3BlbihwYXRobmFtZSwgUkVBRF9NT0RFKSBhcyBmcDoKKyAgICAgICAgd2l0aCBvcGVuKHBhdGhuYW1lKSBhcyBmcDoKICAgICAgICAgICAgIHN0dWZmID0gKCIiLCAiciIsIGltcC5QWV9TT1VSQ0UpCiAgICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlKCdfX21haW5fXycsIGZwLCBwYXRobmFtZSwgc3R1ZmYpCiAKICAgICBkZWYgbG9hZF9maWxlKHNlbGYsIHBhdGhuYW1lKToKICAgICAgICAgZGlyLCBuYW1lID0gb3MucGF0aC5zcGxpdChwYXRobmFtZSkKICAgICAgICAgbmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKQotICAgICAgICB3aXRoIG9wZW4ocGF0aG5hbWUsIFJFQURfTU9ERSkgYXMgZnA6CisgICAgICAgIHdpdGggb3BlbihwYXRobmFtZSkgYXMgZnA6CiAgICAgICAgICAgICBzdHVmZiA9IChleHQsICJyIiwgaW1wLlBZX1NPVVJDRSkKICAgICAgICAgICAgIHNlbGYubG9hZF9tb2R1bGUobmFtZSwgZnAsIHBhdGhuYW1lLCBzdHVmZikKIApAQCAtMjI3LDggKzIyMyw5IEBACiAgICAgICAgICMgQnV0IHdlIG11c3QgYWxzbyBjb2xsZWN0IFB5dGhvbiBleHRlbnNpb24gbW9kdWxlcyAtIGFsdGhvdWdoCiAgICAgICAgICMgd2UgY2Fubm90IHNlcGFyYXRlIG5vcm1hbCBkbGxzIGZyb20gUHl0aG9uIGV4dGVuc2lvbnMuCiAgICAgICAgIHN1ZmZpeGVzID0gW10KLSAgICAgICAgZm9yIHRyaXBsZSBpbiBpbXAuZ2V0X3N1ZmZpeGVzKCk6Ci0gICAgICAgICAgICBzdWZmaXhlcy5hcHBlbmQodHJpcGxlWzBdKQorICAgICAgICBzdWZmaXhlcyArPSBpbXBvcnRsaWIubWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFU1s6XQorICAgICAgICBzdWZmaXhlcyArPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFU1s6XQorICAgICAgICBzdWZmaXhlcyArPSBpbXBvcnRsaWIubWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTWzpdCiAgICAgICAgIGZvciBkaXIgaW4gbS5fX3BhdGhfXzoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoZGlyKQpAQCAtMjcwLDcgKzI2Nyw4IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG0gPSBzZWxmLmxvYWRfbW9kdWxlKGZxbmFtZSwgZnAsIHBhdGhuYW1lLCBzdHVmZikKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGlmIGZwOiBmcC5jbG9zZSgpCisgICAgICAgICAgICBpZiBmcDoKKyAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCiAgICAgICAgIGlmIHBhcmVudDoKICAgICAgICAgICAgIHNldGF0dHIocGFyZW50LCBwYXJ0bmFtZSwgbSkKICAgICAgICAgc2VsZi5tc2dvdXQoMywgImltcG9ydF9tb2R1bGUgLT4iLCBtKQpAQCAtNjYyLDQgKzY2MCw0IEBACiAgICAgdHJ5OgogICAgICAgICBtZiA9IHRlc3QoKQogICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgcHJpbnQoIlxuW2ludGVycnVwdF0iKQorICAgICAgICBwcmludCgiXG5baW50ZXJydXB0ZWRdIikKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvX19pbml0X18ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL19faW5pdF9fLnB5CmluZGV4IGU2ZTE2YzguLjFmM2U2N2MgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvX19pbml0X18ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9fX2luaXRfXy5weQpAQCAtMTMsMzIgKzEzLDcgQEAKICMKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBfX3ZlcnNpb25fXyA9ICcwLjcwYTEnCkBAIC00OCw4ICsyMyw4IEBACiAgICAgJ01hbmFnZXInLCAnUGlwZScsICdjcHVfY291bnQnLCAnbG9nX3RvX3N0ZGVycicsICdnZXRfbG9nZ2VyJywKICAgICAnYWxsb3dfY29ubmVjdGlvbl9waWNrbGluZycsICdCdWZmZXJUb29TaG9ydCcsICdUaW1lb3V0RXJyb3InLAogICAgICdMb2NrJywgJ1JMb2NrJywgJ1NlbWFwaG9yZScsICdCb3VuZGVkU2VtYXBob3JlJywgJ0NvbmRpdGlvbicsCi0gICAgJ0V2ZW50JywgJ1F1ZXVlJywgJ0pvaW5hYmxlUXVldWUnLCAnUG9vbCcsICdWYWx1ZScsICdBcnJheScsCi0gICAgJ1Jhd1ZhbHVlJywgJ1Jhd0FycmF5JywgJ1NVQkRFQlVHJywgJ1NVQldBUk5JTkcnLAorICAgICdFdmVudCcsICdCYXJyaWVyJywgJ1F1ZXVlJywgJ1NpbXBsZVF1ZXVlJywgJ0pvaW5hYmxlUXVldWUnLCAnUG9vbCcsCisgICAgJ1ZhbHVlJywgJ0FycmF5JywgJ1Jhd1ZhbHVlJywgJ1Jhd0FycmF5JywgJ1NVQkRFQlVHJywgJ1NVQldBUk5JTkcnLAogICAgIF0KIAogX19hdXRob3JfXyA9ICdSLiBPdWRrZXJrIChyLm0ub3Vka2Vya0BnbWFpbC5jb20pJwpAQCAtMTYxLDcgKzEzNiw5IEBACiAgICAgJycnCiAgICAgSW5zdGFsbCBzdXBwb3J0IGZvciBzZW5kaW5nIGNvbm5lY3Rpb25zIGFuZCBzb2NrZXRzIGJldHdlZW4gcHJvY2Vzc2VzCiAgICAgJycnCi0gICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IHJlZHVjdGlvbgorICAgICMgVGhpcyBpcyB1bmRvY3VtZW50ZWQuICBJbiBwcmV2aW91cyB2ZXJzaW9ucyBvZiBtdWx0aXByb2Nlc3NpbmcKKyAgICAjIGl0cyBvbmx5IGVmZmVjdCB3YXMgdG8gbWFrZSBzb2NrZXQgb2JqZWN0cyBpbmhlcml0YWJsZSBvbiBXaW5kb3dzLgorICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbgogCiAjCiAjIERlZmluaXRpb25zIGRlcGVuZGluZyBvbiBuYXRpdmUgc2VtYXBob3JlcwpAQCAtMjA5LDYgKzE4NiwxMyBAQAogICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnN5bmNocm9uaXplIGltcG9ydCBFdmVudAogICAgIHJldHVybiBFdmVudCgpCiAKK2RlZiBCYXJyaWVyKHBhcnRpZXMsIGFjdGlvbj1Ob25lLCB0aW1lb3V0PU5vbmUpOgorICAgICcnJworICAgIFJldHVybnMgYSBiYXJyaWVyIG9iamVjdAorICAgICcnJworICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnN5bmNocm9uaXplIGltcG9ydCBCYXJyaWVyCisgICAgcmV0dXJuIEJhcnJpZXIocGFydGllcywgYWN0aW9uLCB0aW1lb3V0KQorCiBkZWYgUXVldWUobWF4c2l6ZT0wKToKICAgICAnJycKICAgICBSZXR1cm5zIGEgcXVldWUgb2JqZWN0CkBAIC0yMjMsNiArMjA3LDEzIEBACiAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcucXVldWVzIGltcG9ydCBKb2luYWJsZVF1ZXVlCiAgICAgcmV0dXJuIEpvaW5hYmxlUXVldWUobWF4c2l6ZSkKIAorZGVmIFNpbXBsZVF1ZXVlKCk6CisgICAgJycnCisgICAgUmV0dXJucyBhIHF1ZXVlIG9iamVjdAorICAgICcnJworICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnF1ZXVlcyBpbXBvcnQgU2ltcGxlUXVldWUKKyAgICByZXR1cm4gU2ltcGxlUXVldWUoKQorCiBkZWYgUG9vbChwcm9jZXNzZXM9Tm9uZSwgaW5pdGlhbGl6ZXI9Tm9uZSwgaW5pdGFyZ3M9KCksIG1heHRhc2tzcGVyY2hpbGQ9Tm9uZSk6CiAgICAgJycnCiAgICAgUmV0dXJucyBhIHByb2Nlc3MgcG9vbCBvYmplY3QKQEAgLTI0NCwxOSArMjM1LDE5IEBACiAgICAgZnJvbSBtdWx0aXByb2Nlc3Npbmcuc2hhcmVkY3R5cGVzIGltcG9ydCBSYXdBcnJheQogICAgIHJldHVybiBSYXdBcnJheSh0eXBlY29kZV9vcl90eXBlLCBzaXplX29yX2luaXRpYWxpemVyKQogCi1kZWYgVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MsICoqa3dkcyk6CitkZWYgVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MsIGxvY2s9VHJ1ZSk6CiAgICAgJycnCiAgICAgUmV0dXJucyBhIHN5bmNocm9uaXplZCBzaGFyZWQgb2JqZWN0CiAgICAgJycnCiAgICAgZnJvbSBtdWx0aXByb2Nlc3Npbmcuc2hhcmVkY3R5cGVzIGltcG9ydCBWYWx1ZQotICAgIHJldHVybiBWYWx1ZSh0eXBlY29kZV9vcl90eXBlLCAqYXJncywgKiprd2RzKQorICAgIHJldHVybiBWYWx1ZSh0eXBlY29kZV9vcl90eXBlLCAqYXJncywgbG9jaz1sb2NrKQogCi1kZWYgQXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplciwgKiprd2RzKToKK2RlZiBBcnJheSh0eXBlY29kZV9vcl90eXBlLCBzaXplX29yX2luaXRpYWxpemVyLCAqLCBsb2NrPVRydWUpOgogICAgICcnJwogICAgIFJldHVybnMgYSBzeW5jaHJvbml6ZWQgc2hhcmVkIGFycmF5CiAgICAgJycnCiAgICAgZnJvbSBtdWx0aXByb2Nlc3Npbmcuc2hhcmVkY3R5cGVzIGltcG9ydCBBcnJheQotICAgIHJldHVybiBBcnJheSh0eXBlY29kZV9vcl90eXBlLCBzaXplX29yX2luaXRpYWxpemVyLCAqKmt3ZHMpCisgICAgcmV0dXJuIEFycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIsIGxvY2s9bG9jaykKIAogIwogIwpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CmluZGV4IGE1ZGMyYTguLjFkNjVmNDYgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKQEAgLTQsNDkgKzQsMzQgQEAKICMgbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCi1fX2FsbF9fID0gWyAnQ2xpZW50JywgJ0xpc3RlbmVyJywgJ1BpcGUnIF0KK19fYWxsX18gPSBbICdDbGllbnQnLCAnTGlzdGVuZXInLCAnUGlwZScsICd3YWl0JyBdCiAKK2ltcG9ydCBpbwogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCitpbXBvcnQgcGlja2xlCitpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc29ja2V0CitpbXBvcnQgc3RydWN0CiBpbXBvcnQgZXJybm8KIGltcG9ydCB0aW1lCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBpdGVydG9vbHMKIAogaW1wb3J0IF9tdWx0aXByb2Nlc3NpbmcKLWZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBjdXJyZW50X3Byb2Nlc3MsIEF1dGhlbnRpY2F0aW9uRXJyb3IKK2Zyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBjdXJyZW50X3Byb2Nlc3MsIEF1dGhlbnRpY2F0aW9uRXJyb3IsIEJ1ZmZlclRvb1Nob3J0CiBmcm9tIG11bHRpcHJvY2Vzc2luZy51dGlsIGltcG9ydCBnZXRfdGVtcF9kaXIsIEZpbmFsaXplLCBzdWJfZGVidWcsIGRlYnVnCi1mcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIGltcG9ydCBkdXBsaWNhdGUsIGNsb3NlCi0KK2Zyb20gbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgaW1wb3J0IEZvcmtpbmdQaWNrbGVyCit0cnk6CisgICAgaW1wb3J0IF93aW5hcGkKKyAgICBmcm9tIF93aW5hcGkgaW1wb3J0IFdBSVRfT0JKRUNUXzAsIFdBSVRfVElNRU9VVCwgSU5GSU5JVEUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgcmFpc2UKKyAgICBfd2luYXBpID0gTm9uZQogCiAjCiAjCkBAIC0xMjIsNiArMTA3LDMwOSBAQAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdhZGRyZXNzIHR5cGUgb2YgJXIgdW5yZWNvZ25pemVkJyAlIGFkZHJlc3MpCiAKICMKKyMgQ29ubmVjdGlvbiBjbGFzc2VzCisjCisKK2NsYXNzIF9Db25uZWN0aW9uQmFzZToKKyAgICBfaGFuZGxlID0gTm9uZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhhbmRsZSwgcmVhZGFibGU9VHJ1ZSwgd3JpdGFibGU9VHJ1ZSk6CisgICAgICAgIGhhbmRsZSA9IGhhbmRsZS5fX2luZGV4X18oKQorICAgICAgICBpZiBoYW5kbGUgPCAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBoYW5kbGUiKQorICAgICAgICBpZiBub3QgcmVhZGFibGUgYW5kIG5vdCB3cml0YWJsZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgImF0IGxlYXN0IG9uZSBvZiBgcmVhZGFibGVgIGFuZCBgd3JpdGFibGVgIG11c3QgYmUgVHJ1ZSIpCisgICAgICAgIHNlbGYuX2hhbmRsZSA9IGhhbmRsZQorICAgICAgICBzZWxmLl9yZWFkYWJsZSA9IHJlYWRhYmxlCisgICAgICAgIHNlbGYuX3dyaXRhYmxlID0gd3JpdGFibGUKKworICAgICMgWFhYIHNob3VsZCB3ZSB1c2UgdXRpbC5GaW5hbGl6ZSBpbnN0ZWFkIG9mIGEgX19kZWxfXz8KKworICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9oYW5kbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9jbG9zZSgpCisKKyAgICBkZWYgX2NoZWNrX2Nsb3NlZChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5faGFuZGxlIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJoYW5kbGUgaXMgY2xvc2VkIikKKworICAgIGRlZiBfY2hlY2tfcmVhZGFibGUoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLl9yZWFkYWJsZToKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoImNvbm5lY3Rpb24gaXMgd3JpdGUtb25seSIpCisKKyAgICBkZWYgX2NoZWNrX3dyaXRhYmxlKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fd3JpdGFibGU6CisgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJjb25uZWN0aW9uIGlzIHJlYWQtb25seSIpCisKKyAgICBkZWYgX2JhZF9tZXNzYWdlX2xlbmd0aChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fd3JpdGFibGU6CisgICAgICAgICAgICBzZWxmLl9yZWFkYWJsZSA9IEZhbHNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKyAgICAgICAgcmFpc2UgSU9FcnJvcigiYmFkIG1lc3NhZ2UgbGVuZ3RoIikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjbG9zZWQoc2VsZik6CisgICAgICAgICIiIlRydWUgaWYgdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9oYW5kbGUgaXMgTm9uZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIHJlYWRhYmxlIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9yZWFkYWJsZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIHdyaXRhYmxlIiIiCisgICAgICAgIHJldHVybiBzZWxmLl93cml0YWJsZQorCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgIiIiRmlsZSBkZXNjcmlwdG9yIG9yIGhhbmRsZSBvZiB0aGUgY29ubmVjdGlvbiIiIgorICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5faGFuZGxlCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICIiIkNsb3NlIHRoZSBjb25uZWN0aW9uIiIiCisgICAgICAgIGlmIHNlbGYuX2hhbmRsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZSgpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZSA9IE5vbmUKKworICAgIGRlZiBzZW5kX2J5dGVzKHNlbGYsIGJ1Ziwgb2Zmc2V0PTAsIHNpemU9Tm9uZSk6CisgICAgICAgICIiIlNlbmQgdGhlIGJ5dGVzIGRhdGEgZnJvbSBhIGJ5dGVzLWxpa2Ugb2JqZWN0IiIiCisgICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrX3dyaXRhYmxlKCkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYnVmKQorICAgICAgICAjIEhBQ0sgZm9yIGJ5dGUtaW5kZXhpbmcgb2Ygbm9uLWJ5dGV3aXNlIGJ1ZmZlcnMgKGUuZy4gYXJyYXkuYXJyYXkpCisgICAgICAgIGlmIG0uaXRlbXNpemUgPiAxOgorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoYnl0ZXMobSkpCisgICAgICAgIG4gPSBsZW4obSkKKyAgICAgICAgaWYgb2Zmc2V0IDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm9mZnNldCBpcyBuZWdhdGl2ZSIpCisgICAgICAgIGlmIG4gPCBvZmZzZXQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJidWZmZXIgbGVuZ3RoIDwgb2Zmc2V0IikKKyAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgorICAgICAgICAgICAgc2l6ZSA9IG4gLSBvZmZzZXQKKyAgICAgICAgZWxpZiBzaXplIDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNpemUgaXMgbmVnYXRpdmUiKQorICAgICAgICBlbGlmIG9mZnNldCArIHNpemUgPiBuOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYnVmZmVyIGxlbmd0aCA8IG9mZnNldCArIHNpemUiKQorICAgICAgICBzZWxmLl9zZW5kX2J5dGVzKG1bb2Zmc2V0Om9mZnNldCArIHNpemVdKQorCisgICAgZGVmIHNlbmQoc2VsZiwgb2JqKToKKyAgICAgICAgIiIiU2VuZCBhIChwaWNrbGFibGUpIG9iamVjdCIiIgorICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja193cml0YWJsZSgpCisgICAgICAgIGJ1ZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICBGb3JraW5nUGlja2xlcihidWYsIHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MKS5kdW1wKG9iaikKKyAgICAgICAgc2VsZi5fc2VuZF9ieXRlcyhidWYuZ2V0YnVmZmVyKCkpCisKKyAgICBkZWYgcmVjdl9ieXRlcyhzZWxmLCBtYXhsZW5ndGg9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBSZWNlaXZlIGJ5dGVzIGRhdGEgYXMgYSBieXRlcyBvYmplY3QuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja19yZWFkYWJsZSgpCisgICAgICAgIGlmIG1heGxlbmd0aCBpcyBub3QgTm9uZSBhbmQgbWF4bGVuZ3RoIDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5lZ2F0aXZlIG1heGxlbmd0aCIpCisgICAgICAgIGJ1ZiA9IHNlbGYuX3JlY3ZfYnl0ZXMobWF4bGVuZ3RoKQorICAgICAgICBpZiBidWYgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2JhZF9tZXNzYWdlX2xlbmd0aCgpCisgICAgICAgIHJldHVybiBidWYuZ2V0dmFsdWUoKQorCisgICAgZGVmIHJlY3ZfYnl0ZXNfaW50byhzZWxmLCBidWYsIG9mZnNldD0wKToKKyAgICAgICAgIiIiCisgICAgICAgIFJlY2VpdmUgYnl0ZXMgZGF0YSBpbnRvIGEgd3JpdGVhYmxlIGJ1ZmZlci1saWtlIG9iamVjdC4KKyAgICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrX3JlYWRhYmxlKCkKKyAgICAgICAgd2l0aCBtZW1vcnl2aWV3KGJ1ZikgYXMgbToKKyAgICAgICAgICAgICMgR2V0IGJ5dGVzaXplIG9mIGFyYml0cmFyeSBidWZmZXIKKyAgICAgICAgICAgIGl0ZW1zaXplID0gbS5pdGVtc2l6ZQorICAgICAgICAgICAgYnl0ZXNpemUgPSBpdGVtc2l6ZSAqIGxlbihtKQorICAgICAgICAgICAgaWYgb2Zmc2V0IDwgMDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJuZWdhdGl2ZSBvZmZzZXQiKQorICAgICAgICAgICAgZWxpZiBvZmZzZXQgPiBieXRlc2l6ZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJvZmZzZXQgdG9vIGxhcmdlIikKKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX3JlY3ZfYnl0ZXMoKQorICAgICAgICAgICAgc2l6ZSA9IHJlc3VsdC50ZWxsKCkKKyAgICAgICAgICAgIGlmIGJ5dGVzaXplIDwgb2Zmc2V0ICsgc2l6ZToKKyAgICAgICAgICAgICAgICByYWlzZSBCdWZmZXJUb29TaG9ydChyZXN1bHQuZ2V0dmFsdWUoKSkKKyAgICAgICAgICAgICMgTWVzc2FnZSBjYW4gZml0IGluIGRlc3QKKyAgICAgICAgICAgIHJlc3VsdC5zZWVrKDApCisgICAgICAgICAgICByZXN1bHQucmVhZGludG8obVtvZmZzZXQgLy8gaXRlbXNpemUgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9mZnNldCArIHNpemUpIC8vIGl0ZW1zaXplXSkKKyAgICAgICAgICAgIHJldHVybiBzaXplCisKKyAgICBkZWYgcmVjdihzZWxmKToKKyAgICAgICAgIiIiUmVjZWl2ZSBhIChwaWNrbGFibGUpIG9iamVjdCIiIgorICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja19yZWFkYWJsZSgpCisgICAgICAgIGJ1ZiA9IHNlbGYuX3JlY3ZfYnl0ZXMoKQorICAgICAgICByZXR1cm4gcGlja2xlLmxvYWRzKGJ1Zi5nZXRidWZmZXIoKSkKKworICAgIGRlZiBwb2xsKHNlbGYsIHRpbWVvdXQ9MC4wKToKKyAgICAgICAgIiIiV2hldGhlciB0aGVyZSBpcyBhbnkgaW5wdXQgYXZhaWxhYmxlIHRvIGJlIHJlYWQiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVhZGFibGUoKQorICAgICAgICByZXR1cm4gc2VsZi5fcG9sbCh0aW1lb3V0KQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdGIpOgorICAgICAgICBzZWxmLmNsb3NlKCkKKworCitpZiBfd2luYXBpOgorCisgICAgY2xhc3MgUGlwZUNvbm5lY3Rpb24oX0Nvbm5lY3Rpb25CYXNlKToKKyAgICAgICAgIiIiCisgICAgICAgIENvbm5lY3Rpb24gY2xhc3MgYmFzZWQgb24gYSBXaW5kb3dzIG5hbWVkIHBpcGUuCisgICAgICAgIE92ZXJsYXBwZWQgSS9PIGlzIHVzZWQsIHNvIHRoZSBoYW5kbGVzIG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQKKyAgICAgICAgd2l0aCBGSUxFX0ZMQUdfT1ZFUkxBUFBFRC4KKyAgICAgICAgIiIiCisgICAgICAgIF9nb3RfZW1wdHlfbWVzc2FnZSA9IEZhbHNlCisKKyAgICAgICAgZGVmIF9jbG9zZShzZWxmLCBfQ2xvc2VIYW5kbGU9X3dpbmFwaS5DbG9zZUhhbmRsZSk6CisgICAgICAgICAgICBfQ2xvc2VIYW5kbGUoc2VsZi5faGFuZGxlKQorCisgICAgICAgIGRlZiBfc2VuZF9ieXRlcyhzZWxmLCBidWYpOgorICAgICAgICAgICAgb3YsIGVyciA9IF93aW5hcGkuV3JpdGVGaWxlKHNlbGYuX2hhbmRsZSwgYnVmLCBvdmVybGFwcGVkPVRydWUpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgZXJyID09IF93aW5hcGkuRVJST1JfSU9fUEVORElORzoKKyAgICAgICAgICAgICAgICAgICAgd2FpdHJlcyA9IF93aW5hcGkuV2FpdEZvck11bHRpcGxlT2JqZWN0cygKKyAgICAgICAgICAgICAgICAgICAgICAgIFtvdi5ldmVudF0sIEZhbHNlLCBJTkZJTklURSkKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHdhaXRyZXMgPT0gV0FJVF9PQkpFQ1RfMAorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIG92LmNhbmNlbCgpCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgbndyaXR0ZW4sIGVyciA9IG92LkdldE92ZXJsYXBwZWRSZXN1bHQoVHJ1ZSkKKyAgICAgICAgICAgIGFzc2VydCBlcnIgPT0gMAorICAgICAgICAgICAgYXNzZXJ0IG53cml0dGVuID09IGxlbihidWYpCisKKyAgICAgICAgZGVmIF9yZWN2X2J5dGVzKHNlbGYsIG1heHNpemU9Tm9uZSk6CisgICAgICAgICAgICBpZiBzZWxmLl9nb3RfZW1wdHlfbWVzc2FnZToKKyAgICAgICAgICAgICAgICBzZWxmLl9nb3RfZW1wdHlfbWVzc2FnZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGlvLkJ5dGVzSU8oKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBic2l6ZSA9IDEyOCBpZiBtYXhzaXplIGlzIE5vbmUgZWxzZSBtaW4obWF4c2l6ZSwgMTI4KQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3YsIGVyciA9IF93aW5hcGkuUmVhZEZpbGUoc2VsZi5faGFuZGxlLCBic2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXBwZWQ9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXJyID09IF93aW5hcGkuRVJST1JfSU9fUEVORElORzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0cmVzID0gX3dpbmFwaS5XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3YuZXZlbnRdLCBGYWxzZSwgSU5GSU5JVEUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHdhaXRyZXMgPT0gV0FJVF9PQkpFQ1RfMAorICAgICAgICAgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBvdi5jYW5jZWwoKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5yZWFkLCBlcnIgPSBvdi5HZXRPdmVybGFwcGVkUmVzdWx0KFRydWUpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnIgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaW8uQnl0ZXNJTygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShvdi5nZXRidWZmZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZgorICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBlcnIgPT0gX3dpbmFwaS5FUlJPUl9NT1JFX0RBVEE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9tb3JlX2RhdGEob3YsIG1heHNpemUpCisgICAgICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgaWYgZS53aW5lcnJvciA9PSBfd2luYXBpLkVSUk9SX0JST0tFTl9QSVBFOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInNob3VsZG4ndCBnZXQgaGVyZTsgZXhwZWN0ZWQgS2V5Ym9hcmRJbnRlcnJ1cHQiKQorCisgICAgICAgIGRlZiBfcG9sbChzZWxmLCB0aW1lb3V0KToKKyAgICAgICAgICAgIGlmIChzZWxmLl9nb3RfZW1wdHlfbWVzc2FnZSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5QZWVrTmFtZWRQaXBlKHNlbGYuX2hhbmRsZSlbMF0gIT0gMCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBib29sKHdhaXQoW3NlbGZdLCB0aW1lb3V0KSkKKworICAgICAgICBkZWYgX2dldF9tb3JlX2RhdGEoc2VsZiwgb3YsIG1heHNpemUpOgorICAgICAgICAgICAgYnVmID0gb3YuZ2V0YnVmZmVyKCkKKyAgICAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgICAgIGYud3JpdGUoYnVmKQorICAgICAgICAgICAgbGVmdCA9IF93aW5hcGkuUGVla05hbWVkUGlwZShzZWxmLl9oYW5kbGUpWzFdCisgICAgICAgICAgICBhc3NlcnQgbGVmdCA+IDAKKyAgICAgICAgICAgIGlmIG1heHNpemUgaXMgbm90IE5vbmUgYW5kIGxlbihidWYpICsgbGVmdCA+IG1heHNpemU6CisgICAgICAgICAgICAgICAgc2VsZi5fYmFkX21lc3NhZ2VfbGVuZ3RoKCkKKyAgICAgICAgICAgIG92LCBlcnIgPSBfd2luYXBpLlJlYWRGaWxlKHNlbGYuX2hhbmRsZSwgbGVmdCwgb3ZlcmxhcHBlZD1UcnVlKQorICAgICAgICAgICAgcmJ5dGVzLCBlcnIgPSBvdi5HZXRPdmVybGFwcGVkUmVzdWx0KFRydWUpCisgICAgICAgICAgICBhc3NlcnQgZXJyID09IDAKKyAgICAgICAgICAgIGFzc2VydCByYnl0ZXMgPT0gbGVmdAorICAgICAgICAgICAgZi53cml0ZShvdi5nZXRidWZmZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBmCisKKworY2xhc3MgQ29ubmVjdGlvbihfQ29ubmVjdGlvbkJhc2UpOgorICAgICIiIgorICAgIENvbm5lY3Rpb24gY2xhc3MgYmFzZWQgb24gYW4gYXJiaXRyYXJ5IGZpbGUgZGVzY3JpcHRvciAoVW5peCBvbmx5KSwgb3IKKyAgICBhIHNvY2tldCBoYW5kbGUgKFdpbmRvd3MpLgorICAgICIiIgorCisgICAgaWYgX3dpbmFwaToKKyAgICAgICAgZGVmIF9jbG9zZShzZWxmLCBfY2xvc2U9X211bHRpcHJvY2Vzc2luZy5jbG9zZXNvY2tldCk6CisgICAgICAgICAgICBfY2xvc2Uoc2VsZi5faGFuZGxlKQorICAgICAgICBfd3JpdGUgPSBfbXVsdGlwcm9jZXNzaW5nLnNlbmQKKyAgICAgICAgX3JlYWQgPSBfbXVsdGlwcm9jZXNzaW5nLnJlY3YKKyAgICBlbHNlOgorICAgICAgICBkZWYgX2Nsb3NlKHNlbGYsIF9jbG9zZT1vcy5jbG9zZSk6CisgICAgICAgICAgICBfY2xvc2Uoc2VsZi5faGFuZGxlKQorICAgICAgICBfd3JpdGUgPSBvcy53cml0ZQorICAgICAgICBfcmVhZCA9IG9zLnJlYWQKKworICAgIGRlZiBfc2VuZChzZWxmLCBidWYsIHdyaXRlPV93cml0ZSk6CisgICAgICAgIHJlbWFpbmluZyA9IGxlbihidWYpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBuID0gd3JpdGUoc2VsZi5faGFuZGxlLCBidWYpCisgICAgICAgICAgICByZW1haW5pbmcgLT0gbgorICAgICAgICAgICAgaWYgcmVtYWluaW5nID09IDA6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGJ1ZiA9IGJ1ZltuOl0KKworICAgIGRlZiBfcmVjdihzZWxmLCBzaXplLCByZWFkPV9yZWFkKToKKyAgICAgICAgYnVmID0gaW8uQnl0ZXNJTygpCisgICAgICAgIGhhbmRsZSA9IHNlbGYuX2hhbmRsZQorICAgICAgICByZW1haW5pbmcgPSBzaXplCisgICAgICAgIHdoaWxlIHJlbWFpbmluZyA+IDA6CisgICAgICAgICAgICBjaHVuayA9IHJlYWQoaGFuZGxlLCByZW1haW5pbmcpCisgICAgICAgICAgICBuID0gbGVuKGNodW5rKQorICAgICAgICAgICAgaWYgbiA9PSAwOgorICAgICAgICAgICAgICAgIGlmIHJlbWFpbmluZyA9PSBzaXplOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoImdvdCBlbmQgb2YgZmlsZSBkdXJpbmcgbWVzc2FnZSIpCisgICAgICAgICAgICBidWYud3JpdGUoY2h1bmspCisgICAgICAgICAgICByZW1haW5pbmcgLT0gbgorICAgICAgICByZXR1cm4gYnVmCisKKyAgICBkZWYgX3NlbmRfYnl0ZXMoc2VsZiwgYnVmKToKKyAgICAgICAgIyBGb3Igd2lyZSBjb21wYXRpYmlsaXR5IHdpdGggMy4yIGFuZCBsb3dlcgorICAgICAgICBuID0gbGVuKGJ1ZikKKyAgICAgICAgc2VsZi5fc2VuZChzdHJ1Y3QucGFjaygiIWkiLCBuKSkKKyAgICAgICAgIyBUaGUgY29uZGl0aW9uIGlzIG5lY2Vzc2FyeSB0byBhdm9pZCAiYnJva2VuIHBpcGUiIGVycm9ycworICAgICAgICAjIHdoZW4gc2VuZGluZyBhIDAtbGVuZ3RoIGJ1ZmZlciBpZiB0aGUgb3RoZXIgZW5kIGNsb3NlZCB0aGUgcGlwZS4KKyAgICAgICAgaWYgbiA+IDA6CisgICAgICAgICAgICBzZWxmLl9zZW5kKGJ1ZikKKworICAgIGRlZiBfcmVjdl9ieXRlcyhzZWxmLCBtYXhzaXplPU5vbmUpOgorICAgICAgICBidWYgPSBzZWxmLl9yZWN2KDQpCisgICAgICAgIHNpemUsID0gc3RydWN0LnVucGFjaygiIWkiLCBidWYuZ2V0dmFsdWUoKSkKKyAgICAgICAgaWYgbWF4c2l6ZSBpcyBub3QgTm9uZSBhbmQgc2l6ZSA+IG1heHNpemU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gc2VsZi5fcmVjdihzaXplKQorCisgICAgZGVmIF9wb2xsKHNlbGYsIHRpbWVvdXQpOgorICAgICAgICByID0gd2FpdChbc2VsZl0sIHRpbWVvdXQpCisgICAgICAgIHJldHVybiBib29sKHIpCisKKworIwogIyBQdWJsaWMgZnVuY3Rpb25zCiAjCiAKQEAgLTE1NCw2ICs0NDIsOCBAQAogCiAgICAgICAgIFJldHVybnMgYSBgQ29ubmVjdGlvbmAgb2JqZWN0LgogICAgICAgICAnJycKKyAgICAgICAgaWYgc2VsZi5fbGlzdGVuZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJ2xpc3RlbmVyIGlzIGNsb3NlZCcpCiAgICAgICAgIGMgPSBzZWxmLl9saXN0ZW5lci5hY2NlcHQoKQogICAgICAgICBpZiBzZWxmLl9hdXRoa2V5OgogICAgICAgICAgICAgZGVsaXZlcl9jaGFsbGVuZ2UoYywgc2VsZi5fYXV0aGtleSkKQEAgLTE2NCwxMSArNDU0LDE5IEBACiAgICAgICAgICcnJwogICAgICAgICBDbG9zZSB0aGUgYm91bmQgc29ja2V0IG9yIG5hbWVkIHBpcGUgb2YgYHNlbGZgLgogICAgICAgICAnJycKLSAgICAgICAgcmV0dXJuIHNlbGYuX2xpc3RlbmVyLmNsb3NlKCkKKyAgICAgICAgaWYgc2VsZi5fbGlzdGVuZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9saXN0ZW5lci5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLl9saXN0ZW5lciA9IE5vbmUKIAogICAgIGFkZHJlc3MgPSBwcm9wZXJ0eShsYW1iZGEgc2VsZjogc2VsZi5fbGlzdGVuZXIuX2FkZHJlc3MpCiAgICAgbGFzdF9hY2NlcHRlZCA9IHByb3BlcnR5KGxhbWJkYSBzZWxmOiBzZWxmLl9saXN0ZW5lci5fbGFzdF9hY2NlcHRlZCkKIAorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RiKToKKyAgICAgICAgc2VsZi5jbG9zZSgpCisKIAogZGVmIENsaWVudChhZGRyZXNzLCBmYW1pbHk9Tm9uZSwgYXV0aGtleT1Ob25lKToKICAgICAnJycKQEAgLTIwMSwxOSArNDk5LDE2IEBACiAgICAgICAgICAgICBzMSwgczIgPSBzb2NrZXQuc29ja2V0cGFpcigpCiAgICAgICAgICAgICBzMS5zZXRibG9ja2luZyhUcnVlKQogICAgICAgICAgICAgczIuc2V0YmxvY2tpbmcoVHJ1ZSkKLSAgICAgICAgICAgIGMxID0gX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKG9zLmR1cChzMS5maWxlbm8oKSkpCi0gICAgICAgICAgICBjMiA9IF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbihvcy5kdXAoczIuZmlsZW5vKCkpKQotICAgICAgICAgICAgczEuY2xvc2UoKQotICAgICAgICAgICAgczIuY2xvc2UoKQorICAgICAgICAgICAgYzEgPSBDb25uZWN0aW9uKHMxLmRldGFjaCgpKQorICAgICAgICAgICAgYzIgPSBDb25uZWN0aW9uKHMyLmRldGFjaCgpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZmQxLCBmZDIgPSBvcy5waXBlKCkKLSAgICAgICAgICAgIGMxID0gX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKGZkMSwgd3JpdGFibGU9RmFsc2UpCi0gICAgICAgICAgICBjMiA9IF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbihmZDIsIHJlYWRhYmxlPUZhbHNlKQorICAgICAgICAgICAgYzEgPSBDb25uZWN0aW9uKGZkMSwgd3JpdGFibGU9RmFsc2UpCisgICAgICAgICAgICBjMiA9IENvbm5lY3Rpb24oZmQyLCByZWFkYWJsZT1GYWxzZSkKIAogICAgICAgICByZXR1cm4gYzEsIGMyCiAKIGVsc2U6Ci0gICAgZnJvbSBfbXVsdGlwcm9jZXNzaW5nIGltcG9ydCB3aW4zMgogCiAgICAgZGVmIFBpcGUoZHVwbGV4PVRydWUpOgogICAgICAgICAnJycKQEAgLTIyMSwzNSArNTE2LDM1IEBACiAgICAgICAgICcnJwogICAgICAgICBhZGRyZXNzID0gYXJiaXRyYXJ5X2FkZHJlc3MoJ0FGX1BJUEUnKQogICAgICAgICBpZiBkdXBsZXg6Ci0gICAgICAgICAgICBvcGVubW9kZSA9IHdpbjMyLlBJUEVfQUNDRVNTX0RVUExFWAotICAgICAgICAgICAgYWNjZXNzID0gd2luMzIuR0VORVJJQ19SRUFEIHwgd2luMzIuR0VORVJJQ19XUklURQorICAgICAgICAgICAgb3Blbm1vZGUgPSBfd2luYXBpLlBJUEVfQUNDRVNTX0RVUExFWAorICAgICAgICAgICAgYWNjZXNzID0gX3dpbmFwaS5HRU5FUklDX1JFQUQgfCBfd2luYXBpLkdFTkVSSUNfV1JJVEUKICAgICAgICAgICAgIG9ic2l6ZSwgaWJzaXplID0gQlVGU0laRSwgQlVGU0laRQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3Blbm1vZGUgPSB3aW4zMi5QSVBFX0FDQ0VTU19JTkJPVU5ECi0gICAgICAgICAgICBhY2Nlc3MgPSB3aW4zMi5HRU5FUklDX1dSSVRFCisgICAgICAgICAgICBvcGVubW9kZSA9IF93aW5hcGkuUElQRV9BQ0NFU1NfSU5CT1VORAorICAgICAgICAgICAgYWNjZXNzID0gX3dpbmFwaS5HRU5FUklDX1dSSVRFCiAgICAgICAgICAgICBvYnNpemUsIGlic2l6ZSA9IDAsIEJVRlNJWkUKIAotICAgICAgICBoMSA9IHdpbjMyLkNyZWF0ZU5hbWVkUGlwZSgKLSAgICAgICAgICAgIGFkZHJlc3MsIG9wZW5tb2RlLAotICAgICAgICAgICAgd2luMzIuUElQRV9UWVBFX01FU1NBR0UgfCB3aW4zMi5QSVBFX1JFQURNT0RFX01FU1NBR0UgfAotICAgICAgICAgICAgd2luMzIuUElQRV9XQUlULAotICAgICAgICAgICAgMSwgb2JzaXplLCBpYnNpemUsIHdpbjMyLk5NUFdBSVRfV0FJVF9GT1JFVkVSLCB3aW4zMi5OVUxMCisgICAgICAgIGgxID0gX3dpbmFwaS5DcmVhdGVOYW1lZFBpcGUoCisgICAgICAgICAgICBhZGRyZXNzLCBvcGVubW9kZSB8IF93aW5hcGkuRklMRV9GTEFHX09WRVJMQVBQRUQgfAorICAgICAgICAgICAgX3dpbmFwaS5GSUxFX0ZMQUdfRklSU1RfUElQRV9JTlNUQU5DRSwKKyAgICAgICAgICAgIF93aW5hcGkuUElQRV9UWVBFX01FU1NBR0UgfCBfd2luYXBpLlBJUEVfUkVBRE1PREVfTUVTU0FHRSB8CisgICAgICAgICAgICBfd2luYXBpLlBJUEVfV0FJVCwKKyAgICAgICAgICAgIDEsIG9ic2l6ZSwgaWJzaXplLCBfd2luYXBpLk5NUFdBSVRfV0FJVF9GT1JFVkVSLCBfd2luYXBpLk5VTEwKICAgICAgICAgICAgICkKLSAgICAgICAgaDIgPSB3aW4zMi5DcmVhdGVGaWxlKAotICAgICAgICAgICAgYWRkcmVzcywgYWNjZXNzLCAwLCB3aW4zMi5OVUxMLCB3aW4zMi5PUEVOX0VYSVNUSU5HLCAwLCB3aW4zMi5OVUxMCisgICAgICAgIGgyID0gX3dpbmFwaS5DcmVhdGVGaWxlKAorICAgICAgICAgICAgYWRkcmVzcywgYWNjZXNzLCAwLCBfd2luYXBpLk5VTEwsIF93aW5hcGkuT1BFTl9FWElTVElORywKKyAgICAgICAgICAgIF93aW5hcGkuRklMRV9GTEFHX09WRVJMQVBQRUQsIF93aW5hcGkuTlVMTAogICAgICAgICAgICAgKQotICAgICAgICB3aW4zMi5TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSgKLSAgICAgICAgICAgIGgyLCB3aW4zMi5QSVBFX1JFQURNT0RFX01FU1NBR0UsIE5vbmUsIE5vbmUKKyAgICAgICAgX3dpbmFwaS5TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSgKKyAgICAgICAgICAgIGgyLCBfd2luYXBpLlBJUEVfUkVBRE1PREVfTUVTU0FHRSwgTm9uZSwgTm9uZQogICAgICAgICAgICAgKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpbjMyLkNvbm5lY3ROYW1lZFBpcGUoaDEsIHdpbjMyLk5VTEwpCi0gICAgICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuYXJnc1swXSAhPSB3aW4zMi5FUlJPUl9QSVBFX0NPTk5FQ1RFRDoKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBvdmVybGFwcGVkID0gX3dpbmFwaS5Db25uZWN0TmFtZWRQaXBlKGgxLCBvdmVybGFwcGVkPVRydWUpCisgICAgICAgIF8sIGVyciA9IG92ZXJsYXBwZWQuR2V0T3ZlcmxhcHBlZFJlc3VsdChUcnVlKQorICAgICAgICBhc3NlcnQgZXJyID09IDAKIAotICAgICAgICBjMSA9IF9tdWx0aXByb2Nlc3NpbmcuUGlwZUNvbm5lY3Rpb24oaDEsIHdyaXRhYmxlPWR1cGxleCkKLSAgICAgICAgYzIgPSBfbXVsdGlwcm9jZXNzaW5nLlBpcGVDb25uZWN0aW9uKGgyLCByZWFkYWJsZT1kdXBsZXgpCisgICAgICAgIGMxID0gUGlwZUNvbm5lY3Rpb24oaDEsIHdyaXRhYmxlPWR1cGxleCkKKyAgICAgICAgYzIgPSBQaXBlQ29ubmVjdGlvbihoMiwgcmVhZGFibGU9ZHVwbGV4KQogCiAgICAgICAgIHJldHVybiBjMSwgYzIKIApAQCAtMjY0LDEyICs1NTksMTUgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcywgZmFtaWx5LCBiYWNrbG9nPTEpOgogICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQuc29ja2V0KGdldGF0dHIoc29ja2V0LCBmYW1pbHkpKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX1JFVVNFQUREUiwgMSkKKyAgICAgICAgICAgICMgU09fUkVVU0VBRERSIGhhcyBkaWZmZXJlbnQgc2VtYW50aWNzIG9uIFdpbmRvd3MgKGlzc3VlICMyNTUwKS4KKyAgICAgICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU09fUkVVU0VBRERSLCAxKQogICAgICAgICAgICAgc2VsZi5fc29ja2V0LnNldGJsb2NraW5nKFRydWUpCiAgICAgICAgICAgICBzZWxmLl9zb2NrZXQuYmluZChhZGRyZXNzKQogICAgICAgICAgICAgc2VsZi5fc29ja2V0Lmxpc3RlbihiYWNrbG9nKQogICAgICAgICAgICAgc2VsZi5fYWRkcmVzcyA9IHNlbGYuX3NvY2tldC5nZXRzb2NrbmFtZSgpCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgc2VsZi5fc29ja2V0LmNsb3NlKCkKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIHNlbGYuX2ZhbWlseSA9IGZhbWlseQpAQCAtMjg1LDEwICs1ODMsNyBAQAogICAgIGRlZiBhY2NlcHQoc2VsZik6CiAgICAgICAgIHMsIHNlbGYuX2xhc3RfYWNjZXB0ZWQgPSBzZWxmLl9zb2NrZXQuYWNjZXB0KCkKICAgICAgICAgcy5zZXRibG9ja2luZyhUcnVlKQotICAgICAgICBmZCA9IGR1cGxpY2F0ZShzLmZpbGVubygpKQotICAgICAgICBjb25uID0gX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKGZkKQotICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgcmV0dXJuIGNvbm4KKyAgICAgICAgcmV0dXJuIENvbm5lY3Rpb24ocy5kZXRhY2goKSkKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgc2VsZi5fc29ja2V0LmNsb3NlKCkKQEAgLTMwMywyNCArNTk4LDggQEAKICAgICBmYW1pbHkgPSBhZGRyZXNzX3R5cGUoYWRkcmVzcykKICAgICB3aXRoIHNvY2tldC5zb2NrZXQoIGdldGF0dHIoc29ja2V0LCBmYW1pbHkpICkgYXMgczoKICAgICAgICAgcy5zZXRibG9ja2luZyhUcnVlKQotICAgICAgICB0ID0gX2luaXRfdGltZW91dCgpCi0KLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QoYWRkcmVzcykKLSAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gIT0gZXJybm8uRUNPTk5SRUZVU0VEIG9yIF9jaGVja190aW1lb3V0KHQpOgotICAgICAgICAgICAgICAgICAgICBkZWJ1ZygnZmFpbGVkIHRvIGNvbm5lY3QgdG8gYWRkcmVzcyAlcycsIGFkZHJlc3MpCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAxKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UKLQotICAgICAgICBmZCA9IGR1cGxpY2F0ZShzLmZpbGVubygpKQotICAgIGNvbm4gPSBfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb24oZmQpCi0gICAgcmV0dXJuIGNvbm4KKyAgICAgICAgcy5jb25uZWN0KGFkZHJlc3MpCisgICAgICAgIHJldHVybiBDb25uZWN0aW9uKHMuZGV0YWNoKCkpCiAKICMKICMgRGVmaW5pdGlvbnMgZm9yIGNvbm5lY3Rpb25zIGJhc2VkIG9uIG5hbWVkIHBpcGVzCkBAIC0zMzQsNDggKzYxMyw1NSBAQAogICAgICAgICAnJycKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MsIGJhY2tsb2c9Tm9uZSk6CiAgICAgICAgICAgICBzZWxmLl9hZGRyZXNzID0gYWRkcmVzcwotICAgICAgICAgICAgaGFuZGxlID0gd2luMzIuQ3JlYXRlTmFtZWRQaXBlKAotICAgICAgICAgICAgICAgIGFkZHJlc3MsIHdpbjMyLlBJUEVfQUNDRVNTX0RVUExFWCwKLSAgICAgICAgICAgICAgICB3aW4zMi5QSVBFX1RZUEVfTUVTU0FHRSB8IHdpbjMyLlBJUEVfUkVBRE1PREVfTUVTU0FHRSB8Ci0gICAgICAgICAgICAgICAgd2luMzIuUElQRV9XQUlULAotICAgICAgICAgICAgICAgIHdpbjMyLlBJUEVfVU5MSU1JVEVEX0lOU1RBTkNFUywgQlVGU0laRSwgQlVGU0laRSwKLSAgICAgICAgICAgICAgICB3aW4zMi5OTVBXQUlUX1dBSVRfRk9SRVZFUiwgd2luMzIuTlVMTAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9xdWV1ZSA9IFtoYW5kbGVdCisgICAgICAgICAgICBzZWxmLl9oYW5kbGVfcXVldWUgPSBbc2VsZi5fbmV3X2hhbmRsZShmaXJzdD1UcnVlKV0KKwogICAgICAgICAgICAgc2VsZi5fbGFzdF9hY2NlcHRlZCA9IE5vbmUKLQogICAgICAgICAgICAgc3ViX2RlYnVnKCdsaXN0ZW5lciBjcmVhdGVkIHdpdGggYWRkcmVzcz0lcicsIHNlbGYuX2FkZHJlc3MpCi0KICAgICAgICAgICAgIHNlbGYuY2xvc2UgPSBGaW5hbGl6ZSgKICAgICAgICAgICAgICAgICBzZWxmLCBQaXBlTGlzdGVuZXIuX2ZpbmFsaXplX3BpcGVfbGlzdGVuZXIsCiAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5faGFuZGxlX3F1ZXVlLCBzZWxmLl9hZGRyZXNzKSwgZXhpdHByaW9yaXR5PTAKICAgICAgICAgICAgICAgICApCiAKLSAgICAgICAgZGVmIGFjY2VwdChzZWxmKToKLSAgICAgICAgICAgIG5ld2hhbmRsZSA9IHdpbjMyLkNyZWF0ZU5hbWVkUGlwZSgKLSAgICAgICAgICAgICAgICBzZWxmLl9hZGRyZXNzLCB3aW4zMi5QSVBFX0FDQ0VTU19EVVBMRVgsCi0gICAgICAgICAgICAgICAgd2luMzIuUElQRV9UWVBFX01FU1NBR0UgfCB3aW4zMi5QSVBFX1JFQURNT0RFX01FU1NBR0UgfAotICAgICAgICAgICAgICAgIHdpbjMyLlBJUEVfV0FJVCwKLSAgICAgICAgICAgICAgICB3aW4zMi5QSVBFX1VOTElNSVRFRF9JTlNUQU5DRVMsIEJVRlNJWkUsIEJVRlNJWkUsCi0gICAgICAgICAgICAgICAgd2luMzIuTk1QV0FJVF9XQUlUX0ZPUkVWRVIsIHdpbjMyLk5VTEwKKyAgICAgICAgZGVmIF9uZXdfaGFuZGxlKHNlbGYsIGZpcnN0PUZhbHNlKToKKyAgICAgICAgICAgIGZsYWdzID0gX3dpbmFwaS5QSVBFX0FDQ0VTU19EVVBMRVggfCBfd2luYXBpLkZJTEVfRkxBR19PVkVSTEFQUEVECisgICAgICAgICAgICBpZiBmaXJzdDoKKyAgICAgICAgICAgICAgICBmbGFncyB8PSBfd2luYXBpLkZJTEVfRkxBR19GSVJTVF9QSVBFX0lOU1RBTkNFCisgICAgICAgICAgICByZXR1cm4gX3dpbmFwaS5DcmVhdGVOYW1lZFBpcGUoCisgICAgICAgICAgICAgICAgc2VsZi5fYWRkcmVzcywgZmxhZ3MsCisgICAgICAgICAgICAgICAgX3dpbmFwaS5QSVBFX1RZUEVfTUVTU0FHRSB8IF93aW5hcGkuUElQRV9SRUFETU9ERV9NRVNTQUdFIHwKKyAgICAgICAgICAgICAgICBfd2luYXBpLlBJUEVfV0FJVCwKKyAgICAgICAgICAgICAgICBfd2luYXBpLlBJUEVfVU5MSU1JVEVEX0lOU1RBTkNFUywgQlVGU0laRSwgQlVGU0laRSwKKyAgICAgICAgICAgICAgICBfd2luYXBpLk5NUFdBSVRfV0FJVF9GT1JFVkVSLCBfd2luYXBpLk5VTEwKICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBzZWxmLl9oYW5kbGVfcXVldWUuYXBwZW5kKG5ld2hhbmRsZSkKKworICAgICAgICBkZWYgYWNjZXB0KHNlbGYpOgorICAgICAgICAgICAgc2VsZi5faGFuZGxlX3F1ZXVlLmFwcGVuZChzZWxmLl9uZXdfaGFuZGxlKCkpCiAgICAgICAgICAgICBoYW5kbGUgPSBzZWxmLl9oYW5kbGVfcXVldWUucG9wKDApCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2luMzIuQ29ubmVjdE5hbWVkUGlwZShoYW5kbGUsIHdpbjMyLk5VTEwpCi0gICAgICAgICAgICBleGNlcHQgV2luZG93c0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgb3YgPSBfd2luYXBpLkNvbm5lY3ROYW1lZFBpcGUoaGFuZGxlLCBvdmVybGFwcGVkPVRydWUpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUud2luZXJyb3IgIT0gX3dpbmFwaS5FUlJPUl9OT19EQVRBOgorICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgICMgRVJST1JfTk9fREFUQSBjYW4gb2NjdXIgaWYgYSBjbGllbnQgaGFzIGFscmVhZHkgY29ubmVjdGVkLAogICAgICAgICAgICAgICAgICMgd3JpdHRlbiBkYXRhIGFuZCB0aGVuIGRpc2Nvbm5lY3RlZCAtLSBzZWUgSXNzdWUgMTQ3MjUuCi0gICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdIG5vdCBpbiAod2luMzIuRVJST1JfUElQRV9DT05ORUNURUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luMzIuRVJST1JfTk9fREFUQSk6CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gX3dpbmFwaS5XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKAorICAgICAgICAgICAgICAgICAgICAgICAgW292LmV2ZW50XSwgRmFsc2UsIElORklOSVRFKQorICAgICAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAgICAgb3YuY2FuY2VsKCkKKyAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShoYW5kbGUpCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICByZXR1cm4gX211bHRpcHJvY2Vzc2luZy5QaXBlQ29ubmVjdGlvbihoYW5kbGUpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgXywgZXJyID0gb3YuR2V0T3ZlcmxhcHBlZFJlc3VsdChUcnVlKQorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZXJyID09IDAKKyAgICAgICAgICAgIHJldHVybiBQaXBlQ29ubmVjdGlvbihoYW5kbGUpCiAKICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgX2ZpbmFsaXplX3BpcGVfbGlzdGVuZXIocXVldWUsIGFkZHJlc3MpOgogICAgICAgICAgICAgc3ViX2RlYnVnKCdjbG9zaW5nIGxpc3RlbmVyIHdpdGggYWRkcmVzcz0lcicsIGFkZHJlc3MpCiAgICAgICAgICAgICBmb3IgaGFuZGxlIGluIHF1ZXVlOgotICAgICAgICAgICAgICAgIGNsb3NlKGhhbmRsZSkKKyAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKGhhbmRsZSkKIAogICAgIGRlZiBQaXBlQ2xpZW50KGFkZHJlc3MpOgogICAgICAgICAnJycKQEAgLTM4NCwyNCArNjcwLDI1IEBACiAgICAgICAgIHQgPSBfaW5pdF90aW1lb3V0KCkKICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aW4zMi5XYWl0TmFtZWRQaXBlKGFkZHJlc3MsIDEwMDApCi0gICAgICAgICAgICAgICAgaCA9IHdpbjMyLkNyZWF0ZUZpbGUoCi0gICAgICAgICAgICAgICAgICAgIGFkZHJlc3MsIHdpbjMyLkdFTkVSSUNfUkVBRCB8IHdpbjMyLkdFTkVSSUNfV1JJVEUsCi0gICAgICAgICAgICAgICAgICAgIDAsIHdpbjMyLk5VTEwsIHdpbjMyLk9QRU5fRVhJU1RJTkcsIDAsIHdpbjMyLk5VTEwKKyAgICAgICAgICAgICAgICBfd2luYXBpLldhaXROYW1lZFBpcGUoYWRkcmVzcywgMTAwMCkKKyAgICAgICAgICAgICAgICBoID0gX3dpbmFwaS5DcmVhdGVGaWxlKAorICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLCBfd2luYXBpLkdFTkVSSUNfUkVBRCB8IF93aW5hcGkuR0VORVJJQ19XUklURSwKKyAgICAgICAgICAgICAgICAgICAgMCwgX3dpbmFwaS5OVUxMLCBfd2luYXBpLk9QRU5fRVhJU1RJTkcsCisgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuRklMRV9GTEFHX09WRVJMQVBQRUQsIF93aW5hcGkuTlVMTAogICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICBleGNlcHQgV2luZG93c0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdIG5vdCBpbiAod2luMzIuRVJST1JfU0VNX1RJTUVPVVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luMzIuRVJST1JfUElQRV9CVVNZKSBvciBfY2hlY2tfdGltZW91dCh0KToKKyAgICAgICAgICAgICAgICBpZiBlLndpbmVycm9yIG5vdCBpbiAoX3dpbmFwaS5FUlJPUl9TRU1fVElNRU9VVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5FUlJPUl9QSVBFX0JVU1kpIG9yIF9jaGVja190aW1lb3V0KHQpOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UKIAotICAgICAgICB3aW4zMi5TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSgKLSAgICAgICAgICAgIGgsIHdpbjMyLlBJUEVfUkVBRE1PREVfTUVTU0FHRSwgTm9uZSwgTm9uZQorICAgICAgICBfd2luYXBpLlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlKAorICAgICAgICAgICAgaCwgX3dpbmFwaS5QSVBFX1JFQURNT0RFX01FU1NBR0UsIE5vbmUsIE5vbmUKICAgICAgICAgICAgICkKLSAgICAgICAgcmV0dXJuIF9tdWx0aXByb2Nlc3NpbmcuUGlwZUNvbm5lY3Rpb24oaCkKKyAgICAgICAgcmV0dXJuIFBpcGVDb25uZWN0aW9uKGgpCiAKICMKICMgQXV0aGVudGljYXRpb24gc3R1ZmYKQEAgLTQ1OCwxMCArNzQ1LDEwIEBACiAgICAgICAgIHJldHVybiBzZWxmLl9sb2FkcyhzKQogCiBkZWYgX3htbF9kdW1wcyhvYmopOgotICAgIHJldHVybiB4bWxycGNsaWIuZHVtcHMoKG9iaiwpLCBOb25lLCBOb25lLCBOb25lLCAxKS5lbmNvZGUoJ3V0ZjgnKQorICAgIHJldHVybiB4bWxycGNsaWIuZHVtcHMoKG9iaiwpLCBOb25lLCBOb25lLCBOb25lLCAxKS5lbmNvZGUoJ3V0Zi04JykKIAogZGVmIF94bWxfbG9hZHMocyk6Ci0gICAgKG9iaiwpLCBtZXRob2QgPSB4bWxycGNsaWIubG9hZHMocy5kZWNvZGUoJ3V0ZjgnKSkKKyAgICAob2JqLCksIG1ldGhvZCA9IHhtbHJwY2xpYi5sb2FkcyhzLmRlY29kZSgndXRmLTgnKSkKICAgICByZXR1cm4gb2JqCiAKIGNsYXNzIFhtbExpc3RlbmVyKExpc3RlbmVyKToKQEAgLTQ3NSwzICs3NjIsMTYzIEBACiAgICAgZ2xvYmFsIHhtbHJwY2xpYgogICAgIGltcG9ydCB4bWxycGMuY2xpZW50IGFzIHhtbHJwY2xpYgogICAgIHJldHVybiBDb25uZWN0aW9uV3JhcHBlcihDbGllbnQoKmFyZ3MsICoqa3dkcyksIF94bWxfZHVtcHMsIF94bWxfbG9hZHMpCisKKyMKKyMgV2FpdAorIworCitpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKworICAgIGRlZiBfZXhoYXVzdGl2ZV93YWl0KGhhbmRsZXMsIHRpbWVvdXQpOgorICAgICAgICAjIFJldHVybiBBTEwgaGFuZGxlcyB3aGljaCBhcmUgY3VycmVudGx5IHNpZ25hbGxlZC4gIChPbmx5CisgICAgICAgICMgcmV0dXJuaW5nIHRoZSBmaXJzdCBzaWduYWxsZWQgbWlnaHQgY3JlYXRlIHN0YXJ2YXRpb24gaXNzdWVzLikKKyAgICAgICAgTCA9IGxpc3QoaGFuZGxlcykKKyAgICAgICAgcmVhZHkgPSBbXQorICAgICAgICB3aGlsZSBMOgorICAgICAgICAgICAgcmVzID0gX3dpbmFwaS5XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKEwsIEZhbHNlLCB0aW1lb3V0KQorICAgICAgICAgICAgaWYgcmVzID09IFdBSVRfVElNRU9VVDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxpZiBXQUlUX09CSkVDVF8wIDw9IHJlcyA8IFdBSVRfT0JKRUNUXzAgKyBsZW4oTCk6CisgICAgICAgICAgICAgICAgcmVzIC09IFdBSVRfT0JKRUNUXzAKKyAgICAgICAgICAgIGVsaWYgV0FJVF9BQkFORE9ORURfMCA8PSByZXMgPCBXQUlUX0FCQU5ET05FRF8wICsgbGVuKEwpOgorICAgICAgICAgICAgICAgIHJlcyAtPSBXQUlUX0FCQU5ET05FRF8wCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignU2hvdWxkIG5vdCBnZXQgaGVyZScpCisgICAgICAgICAgICByZWFkeS5hcHBlbmQoTFtyZXNdKQorICAgICAgICAgICAgTCA9IExbcmVzKzE6XQorICAgICAgICAgICAgdGltZW91dCA9IDAKKyAgICAgICAgcmV0dXJuIHJlYWR5CisKKyAgICBfcmVhZHlfZXJyb3JzID0ge193aW5hcGkuRVJST1JfQlJPS0VOX1BJUEUsIF93aW5hcGkuRVJST1JfTkVUTkFNRV9ERUxFVEVEfQorCisgICAgZGVmIHdhaXQob2JqZWN0X2xpc3QsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgICcnJworICAgICAgICBXYWl0IHRpbGwgYW4gb2JqZWN0IGluIG9iamVjdF9saXN0IGlzIHJlYWR5L3JlYWRhYmxlLgorCisgICAgICAgIFJldHVybnMgbGlzdCBvZiB0aG9zZSBvYmplY3RzIGluIG9iamVjdF9saXN0IHdoaWNoIGFyZSByZWFkeS9yZWFkYWJsZS4KKyAgICAgICAgJycnCisgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKKyAgICAgICAgICAgIHRpbWVvdXQgPSBJTkZJTklURQorICAgICAgICBlbGlmIHRpbWVvdXQgPCAwOgorICAgICAgICAgICAgdGltZW91dCA9IDAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRpbWVvdXQgPSBpbnQodGltZW91dCAqIDEwMDAgKyAwLjUpCisKKyAgICAgICAgb2JqZWN0X2xpc3QgPSBsaXN0KG9iamVjdF9saXN0KQorICAgICAgICB3YWl0aGFuZGxlX3RvX29iaiA9IHt9CisgICAgICAgIG92X2xpc3QgPSBbXQorICAgICAgICByZWFkeV9vYmplY3RzID0gc2V0KCkKKyAgICAgICAgcmVhZHlfaGFuZGxlcyA9IHNldCgpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9yIG8gaW4gb2JqZWN0X2xpc3Q6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmaWxlbm8gPSBnZXRhdHRyKG8sICdmaWxlbm8nKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgd2FpdGhhbmRsZV90b19vYmpbby5fX2luZGV4X18oKV0gPSBvCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBzdGFydCBhbiBvdmVybGFwcGVkIHJlYWQgb2YgbGVuZ3RoIHplcm8KKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgb3YsIGVyciA9IF93aW5hcGkuUmVhZEZpbGUoZmlsZW5vKCksIDAsIFRydWUpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBlLndpbmVycm9yCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnIgbm90IGluIF9yZWFkeV9lcnJvcnM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgaWYgZXJyID09IF93aW5hcGkuRVJST1JfSU9fUEVORElORzoKKyAgICAgICAgICAgICAgICAgICAgICAgIG92X2xpc3QuYXBwZW5kKG92KQorICAgICAgICAgICAgICAgICAgICAgICAgd2FpdGhhbmRsZV90b19vYmpbb3YuZXZlbnRdID0gbworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBvLmZpbGVubygpIGlzIGFuIG92ZXJsYXBwZWQgcGlwZSBoYW5kbGUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAjIGVyciA9PSAwIHRoZW4gdGhlcmUgaXMgYSB6ZXJvIGxlbmd0aCBtZXNzYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBwaXBlLCBidXQgaXQgSEFTIE5PVCBiZWVuIGNvbnN1bWVkLgorICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHlfb2JqZWN0cy5hZGQobykKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSAwCisKKyAgICAgICAgICAgIHJlYWR5X2hhbmRsZXMgPSBfZXhoYXVzdGl2ZV93YWl0KHdhaXRoYW5kbGVfdG9fb2JqLmtleXMoKSwgdGltZW91dCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICMgcmVxdWVzdCB0aGF0IG92ZXJsYXBwZWQgcmVhZHMgc3RvcAorICAgICAgICAgICAgZm9yIG92IGluIG92X2xpc3Q6CisgICAgICAgICAgICAgICAgb3YuY2FuY2VsKCkKKworICAgICAgICAgICAgIyB3YWl0IGZvciBhbGwgb3ZlcmxhcHBlZCByZWFkcyB0byBzdG9wCisgICAgICAgICAgICBmb3Igb3YgaW4gb3ZfbGlzdDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIF8sIGVyciA9IG92LkdldE92ZXJsYXBwZWRSZXN1bHQoVHJ1ZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICAgICBlcnIgPSBlLndpbmVycm9yCisgICAgICAgICAgICAgICAgICAgIGlmIGVyciBub3QgaW4gX3JlYWR5X2Vycm9yczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgaWYgZXJyICE9IF93aW5hcGkuRVJST1JfT1BFUkFUSU9OX0FCT1JURUQ6CisgICAgICAgICAgICAgICAgICAgIG8gPSB3YWl0aGFuZGxlX3RvX29ialtvdi5ldmVudF0KKyAgICAgICAgICAgICAgICAgICAgcmVhZHlfb2JqZWN0cy5hZGQobykKKyAgICAgICAgICAgICAgICAgICAgaWYgZXJyID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAjIElmIG8uZmlsZW5vKCkgaXMgYW4gb3ZlcmxhcHBlZCBwaXBlIGhhbmRsZSB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAjIGEgemVybyBsZW5ndGggbWVzc2FnZSBIQVMgYmVlbiBjb25zdW1lZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIobywgJ19nb3RfZW1wdHlfbWVzc2FnZScpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uX2dvdF9lbXB0eV9tZXNzYWdlID0gVHJ1ZQorCisgICAgICAgIHJlYWR5X29iamVjdHMudXBkYXRlKHdhaXRoYW5kbGVfdG9fb2JqW2hdIGZvciBoIGluIHJlYWR5X2hhbmRsZXMpCisgICAgICAgIHJldHVybiBbbyBmb3IgbyBpbiBvYmplY3RfbGlzdCBpZiBvIGluIHJlYWR5X29iamVjdHNdCisKK2Vsc2U6CisKKyAgICBpZiBoYXNhdHRyKHNlbGVjdCwgJ3BvbGwnKToKKyAgICAgICAgZGVmIF9wb2xsKGZkcywgdGltZW91dCk6CisgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBpbnQodGltZW91dCkgKiAxMDAwICAjIHRpbWVvdXQgaXMgaW4gbWlsbGlzZWNvbmRzCisgICAgICAgICAgICBmZF9tYXAgPSB7fQorICAgICAgICAgICAgcG9sbHN0ZXIgPSBzZWxlY3QucG9sbCgpCisgICAgICAgICAgICBmb3IgZmQgaW4gZmRzOgorICAgICAgICAgICAgICAgIHBvbGxzdGVyLnJlZ2lzdGVyKGZkLCBzZWxlY3QuUE9MTElOKQorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoZmQsICdmaWxlbm8nKToKKyAgICAgICAgICAgICAgICAgICAgZmRfbWFwW2ZkLmZpbGVubygpXSA9IGZkCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZmRfbWFwW2ZkXSA9IGZkCisgICAgICAgICAgICBscyA9IFtdCisgICAgICAgICAgICBmb3IgZmQsIGV2ZW50IGluIHBvbGxzdGVyLnBvbGwodGltZW91dCk6CisgICAgICAgICAgICAgICAgaWYgZXZlbnQgJiBzZWxlY3QuUE9MTE5WQUw6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ludmFsaWQgZmlsZSBkZXNjcmlwdG9yICVpJyAlIGZkKQorICAgICAgICAgICAgICAgIGxzLmFwcGVuZChmZF9tYXBbZmRdKQorICAgICAgICAgICAgcmV0dXJuIGxzCisgICAgZWxzZToKKyAgICAgICAgZGVmIF9wb2xsKGZkcywgdGltZW91dCk6CisgICAgICAgICAgICByZXR1cm4gc2VsZWN0LnNlbGVjdChmZHMsIFtdLCBbXSwgdGltZW91dClbMF0KKworCisgICAgZGVmIHdhaXQob2JqZWN0X2xpc3QsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgICcnJworICAgICAgICBXYWl0IHRpbGwgYW4gb2JqZWN0IGluIG9iamVjdF9saXN0IGlzIHJlYWR5L3JlYWRhYmxlLgorCisgICAgICAgIFJldHVybnMgbGlzdCBvZiB0aG9zZSBvYmplY3RzIGluIG9iamVjdF9saXN0IHdoaWNoIGFyZSByZWFkeS9yZWFkYWJsZS4KKyAgICAgICAgJycnCisgICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiB0aW1lb3V0IDw9IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9wb2xsKG9iamVjdF9saXN0LCAwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkZWFkbGluZSA9IHRpbWUudGltZSgpICsgdGltZW91dAorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBfcG9sbChvYmplY3RfbGlzdCwgdGltZW91dCkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5UUjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gdGltZS50aW1lKCkKKworIworIyBNYWtlIGNvbm5lY3Rpb24gYW5kIHNvY2tldCBvYmplY3RzIHNoYXJhYmxlIGlmIHBvc3NpYmxlCisjCisKK2lmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgIGZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCisgICAgRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIoc29ja2V0LnNvY2tldCwgcmVkdWN0aW9uLnJlZHVjZV9zb2NrZXQpCisgICAgRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIoQ29ubmVjdGlvbiwgcmVkdWN0aW9uLnJlZHVjZV9jb25uZWN0aW9uKQorICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKFBpcGVDb25uZWN0aW9uLCByZWR1Y3Rpb24ucmVkdWNlX3BpcGVfY29ubmVjdGlvbikKK2Vsc2U6CisgICAgdHJ5OgorICAgICAgICBmcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKHNvY2tldC5zb2NrZXQsIHJlZHVjdGlvbi5yZWR1Y2Vfc29ja2V0KQorICAgICAgICBGb3JraW5nUGlja2xlci5yZWdpc3RlcihDb25uZWN0aW9uLCByZWR1Y3Rpb24ucmVkdWNlX2Nvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L19faW5pdF9fLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9fX2luaXRfXy5weQppbmRleCAxMDFjM2NiLi5lMzFmYzYxIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L19faW5pdF9fLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvX19pbml0X18ucHkKQEAgLTM1LDcgKzM1LDcgQEAKIF9fYWxsX18gPSBbCiAgICAgJ1Byb2Nlc3MnLCAnY3VycmVudF9wcm9jZXNzJywgJ2FjdGl2ZV9jaGlsZHJlbicsICdmcmVlemVfc3VwcG9ydCcsCiAgICAgJ0xvY2snLCAnUkxvY2snLCAnU2VtYXBob3JlJywgJ0JvdW5kZWRTZW1hcGhvcmUnLCAnQ29uZGl0aW9uJywKLSAgICAnRXZlbnQnLCAnUXVldWUnLCAnTWFuYWdlcicsICdQaXBlJywgJ1Bvb2wnLCAnSm9pbmFibGVRdWV1ZScKKyAgICAnRXZlbnQnLCAnQmFycmllcicsICdRdWV1ZScsICdNYW5hZ2VyJywgJ1BpcGUnLCAnUG9vbCcsICdKb2luYWJsZVF1ZXVlJwogICAgIF0KIAogIwpAQCAtNDYsMTIgKzQ2LDEwIEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgd2Vha3JlZgogaW1wb3J0IGFycmF5Ci1pbXBvcnQgaXRlcnRvb2xzCiAKLWZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBUaW1lb3V0RXJyb3IsIGNwdV9jb3VudAogZnJvbSBtdWx0aXByb2Nlc3NpbmcuZHVtbXkuY29ubmVjdGlvbiBpbXBvcnQgUGlwZQogZnJvbSB0aHJlYWRpbmcgaW1wb3J0IExvY2ssIFJMb2NrLCBTZW1hcGhvcmUsIEJvdW5kZWRTZW1hcGhvcmUKLWZyb20gdGhyZWFkaW5nIGltcG9ydCBFdmVudAorZnJvbSB0aHJlYWRpbmcgaW1wb3J0IEV2ZW50LCBDb25kaXRpb24sIEJhcnJpZXIKIGZyb20gcXVldWUgaW1wb3J0IFF1ZXVlCiAKICMKQEAgLTg1LDE3ICs4Myw2IEBACiAjCiAjCiAKLWNsYXNzIENvbmRpdGlvbih0aHJlYWRpbmcuX0NvbmRpdGlvbik6Ci0gICAgIyBYWFgKLSAgICBpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDApOgotICAgICAgICBub3RpZnlfYWxsID0gdGhyZWFkaW5nLl9Db25kaXRpb24ubm90aWZ5X2FsbC5fX2Z1bmNfXwotICAgIGVsc2U6Ci0gICAgICAgIG5vdGlmeV9hbGwgPSB0aHJlYWRpbmcuX0NvbmRpdGlvbi5ub3RpZnlfYWxsCi0KLSMKLSMKLSMKLQogUHJvY2VzcyA9IER1bW15UHJvY2VzcwogY3VycmVudF9wcm9jZXNzID0gdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkCiBjdXJyZW50X3Byb2Nlc3MoKS5fY2hpbGRyZW4gPSB3ZWFrcmVmLldlYWtLZXlEaWN0aW9uYXJ5KCkKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvY29ubmVjdGlvbi5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvY29ubmVjdGlvbi5weQppbmRleCBhZjEwNTc5Li44NzRlYzhlIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L2Nvbm5lY3Rpb24ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9jb25uZWN0aW9uLnB5CkBAIC01Myw2ICs1MywxMiBAQAogCiAgICAgYWRkcmVzcyA9IHByb3BlcnR5KGxhbWJkYSBzZWxmOiBzZWxmLl9iYWNrbG9nX3F1ZXVlKQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdGIpOgorICAgICAgICBzZWxmLmNsb3NlKCkKKwogCiBkZWYgQ2xpZW50KGFkZHJlc3MpOgogICAgIF9pbiwgX291dCA9IFF1ZXVlKCksIFF1ZXVlKCkKQEAgLTg1LDMgKzkxLDkgQEAKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgcGFzcworCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdGIpOgorICAgICAgICBzZWxmLmNsb3NlKCkKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya2luZy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya2luZy5weQppbmRleCA4ZGM0YjAwLi4wYmIyMWM0IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtpbmcucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9mb3JraW5nLnB5CkBAIC00LDMyICs0LDcgQEAKICMgbXVsdGlwcm9jZXNzaW5nL2ZvcmtpbmcucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBpbXBvcnQgb3MKQEAgLTM5LDcgKzE0LDcgQEAKIAogZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IHV0aWwsIHByb2Nlc3MKIAotX19hbGxfXyA9IFsnUG9wZW4nLCAnYXNzZXJ0X3NwYXduaW5nJywgJ2V4aXQnLCAnZHVwbGljYXRlJywgJ2Nsb3NlJywgJ0ZvcmtpbmdQaWNrbGVyJ10KK19fYWxsX18gPSBbJ1BvcGVuJywgJ2Fzc2VydF9zcGF3bmluZycsICdkdXBsaWNhdGUnLCAnY2xvc2UnLCAnRm9ya2luZ1BpY2tsZXInXQogCiAjCiAjIENoZWNrIHRoYXQgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIHNwYXduaW5nIGEgY2hpbGQgcHJvY2VzcwpAQCAtNTYsMTggKzMxLDE4IEBACiAjIFRyeSBtYWtpbmcgc29tZSBjYWxsYWJsZSB0eXBlcyBwaWNrbGFibGUKICMKIAotZnJvbSBwaWNrbGUgaW1wb3J0IF9QaWNrbGVyIGFzIFBpY2tsZXIKK2Zyb20gcGlja2xlIGltcG9ydCBQaWNrbGVyCitmcm9tIGNvcHlyZWcgaW1wb3J0IGRpc3BhdGNoX3RhYmxlCisKIGNsYXNzIEZvcmtpbmdQaWNrbGVyKFBpY2tsZXIpOgotICAgIGRpc3BhdGNoID0gUGlja2xlci5kaXNwYXRjaC5jb3B5KCkKKyAgICBfZXh0cmFfcmVkdWNlcnMgPSB7fQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIFBpY2tsZXIuX19pbml0X18oc2VsZiwgKmFyZ3MpCisgICAgICAgIHNlbGYuZGlzcGF0Y2hfdGFibGUgPSBkaXNwYXRjaF90YWJsZS5jb3B5KCkKKyAgICAgICAgc2VsZi5kaXNwYXRjaF90YWJsZS51cGRhdGUoc2VsZi5fZXh0cmFfcmVkdWNlcnMpCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHJlZ2lzdGVyKGNscywgdHlwZSwgcmVkdWNlKToKLSAgICAgICAgZGVmIGRpc3BhdGNoZXIoc2VsZiwgb2JqKToKLSAgICAgICAgICAgIHJ2ID0gcmVkdWNlKG9iaikKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocnYsIHN0cik6Ci0gICAgICAgICAgICAgICAgc2VsZi5zYXZlX2dsb2JhbChvYmosIHJ2KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLnNhdmVfcmVkdWNlKG9iaj1vYmosICpydikKLSAgICAgICAgY2xzLmRpc3BhdGNoW3R5cGVdID0gZGlzcGF0Y2hlcgorICAgICAgICBjbHMuX2V4dHJhX3JlZHVjZXJzW3R5cGVdID0gcmVkdWNlCiAKIGRlZiBfcmVkdWNlX21ldGhvZChtKToKICAgICBpZiBtLl9fc2VsZl9fIGlzIE5vbmU6CkBAIC0xMDEsOSArNzYsNiBAQAogIwogCiBpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKLSAgICBpbXBvcnQgdGltZQotCi0gICAgZXhpdCA9IG9zLl9leGl0CiAgICAgZHVwbGljYXRlID0gb3MuZHVwCiAgICAgY2xvc2UgPSBvcy5jbG9zZQogCkBAIC0xMTksMTQgKzkxLDIzIEBACiAgICAgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IE5vbmUKIAorICAgICAgICAgICAgciwgdyA9IG9zLnBpcGUoKQorICAgICAgICAgICAgc2VsZi5zZW50aW5lbCA9IHIKKwogICAgICAgICAgICAgc2VsZi5waWQgPSBvcy5mb3JrKCkKICAgICAgICAgICAgIGlmIHNlbGYucGlkID09IDA6CisgICAgICAgICAgICAgICAgb3MuY2xvc2UocikKICAgICAgICAgICAgICAgICBpZiAncmFuZG9tJyBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHJhbmRvbQogICAgICAgICAgICAgICAgICAgICByYW5kb20uc2VlZCgpCiAgICAgICAgICAgICAgICAgY29kZSA9IHByb2Nlc3Nfb2JqLl9ib290c3RyYXAoKQogICAgICAgICAgICAgICAgIG9zLl9leGl0KGNvZGUpCiAKKyAgICAgICAgICAgICMgYHdgIHdpbGwgYmUgY2xvc2VkIHdoZW4gdGhlIGNoaWxkIGV4aXRzLCBhdCB3aGljaCBwb2ludCBgcmAKKyAgICAgICAgICAgICMgd2lsbCBiZWNvbWUgcmVhZHkgZm9yIHJlYWRpbmcgKHVzaW5nIGUuZy4gc2VsZWN0KCkpLgorICAgICAgICAgICAgb3MuY2xvc2UodykKKyAgICAgICAgICAgIHV0aWwuRmluYWxpemUoc2VsZiwgb3MuY2xvc2UsIChyLCkpCisKICAgICAgICAgZGVmIHBvbGwoc2VsZiwgZmxhZz1vcy5XTk9IQU5HKToKICAgICAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lOgogICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CkBAIC0xNDksMjYgKzEzMCwyMCBAQAogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQogCiAgICAgICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6Ci0gICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucG9sbCgwKQotICAgICAgICAgICAgZGVhZGxpbmUgPSB0aW1lLnRpbWUoKSArIHRpbWVvdXQKLSAgICAgICAgICAgIGRlbGF5ID0gMC4wMDA1Ci0gICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgIHJlcyA9IHNlbGYucG9sbCgpCi0gICAgICAgICAgICAgICAgaWYgcmVzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IGRlYWRsaW5lIC0gdGltZS50aW1lKCkKLSAgICAgICAgICAgICAgICBpZiByZW1haW5pbmcgPD0gMDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBkZWxheSA9IG1pbihkZWxheSAqIDIsIHJlbWFpbmluZywgMC4wNSkKLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKGRlbGF5KQotICAgICAgICAgICAgcmV0dXJuIHJlcworICAgICAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgZnJvbSAuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAorICAgICAgICAgICAgICAgICAgICBpZiBub3Qgd2FpdChbc2VsZi5zZW50aW5lbF0sIHRpbWVvdXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgICAgICAjIFRoaXMgc2hvdWxkbid0IGJsb2NrIGlmIHdhaXQoKSByZXR1cm5lZCBzdWNjZXNzZnVsbHkuCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucG9sbChvcy5XTk9IQU5HIGlmIHRpbWVvdXQgPT0gMC4wIGVsc2UgMCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHVybmNvZGUKIAogICAgICAgICBkZWYgdGVybWluYXRlKHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBvcy5raWxsKHNlbGYucGlkLCBzaWduYWwuU0lHVEVSTSkKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLndhaXQodGltZW91dD0wLjEpIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogCkBAIC0xODMsMTIgKzE1OCw5IEBACiBlbHNlOgogICAgIGltcG9ydCBfdGhyZWFkCiAgICAgaW1wb3J0IG1zdmNydAotICAgIGltcG9ydCBfc3VicHJvY2VzcwotICAgIGltcG9ydCB0aW1lCisgICAgaW1wb3J0IF93aW5hcGkKIAotICAgIGZyb20gcGlja2xlIGltcG9ydCBkdW1wLCBsb2FkLCBISUdIRVNUX1BST1RPQ09MCi0gICAgZnJvbSBfbXVsdGlwcm9jZXNzaW5nIGltcG9ydCB3aW4zMiwgQ29ubmVjdGlvbiwgUGlwZUNvbm5lY3Rpb24KLSAgICBmcm9tIC51dGlsIGltcG9ydCBGaW5hbGl6ZQorICAgIGZyb20gcGlja2xlIGltcG9ydCBsb2FkLCBISUdIRVNUX1BST1RPQ09MCiAKICAgICBkZWYgZHVtcChvYmosIGZpbGUsIHByb3RvY29sPU5vbmUpOgogICAgICAgICBGb3JraW5nUGlja2xlcihmaWxlLCBwcm90b2NvbCkuZHVtcChvYmopCkBAIC0yMDEsOCArMTczLDcgQEAKICAgICBXSU5FWEUgPSAoc3lzLnBsYXRmb3JtID09ICd3aW4zMicgYW5kIGdldGF0dHIoc3lzLCAnZnJvemVuJywgRmFsc2UpKQogICAgIFdJTlNFUlZJQ0UgPSBzeXMuZXhlY3V0YWJsZS5sb3dlcigpLmVuZHN3aXRoKCJweXRob25zZXJ2aWNlLmV4ZSIpCiAKLSAgICBleGl0ID0gd2luMzIuRXhpdFByb2Nlc3MKLSAgICBjbG9zZSA9IHdpbjMyLkNsb3NlSGFuZGxlCisgICAgY2xvc2UgPSBfd2luYXBpLkNsb3NlSGFuZGxlCiAKICAgICAjCiAgICAgIyBfcHl0aG9uX2V4ZSBpcyB0aGUgYXNzdW1lZCBwYXRoIHRvIHRoZSBweXRob24gZXhlY3V0YWJsZS4KQEAgLTIyNCwxMSArMTk1LDExIEBACiAKICAgICBkZWYgZHVwbGljYXRlKGhhbmRsZSwgdGFyZ2V0X3Byb2Nlc3M9Tm9uZSwgaW5oZXJpdGFibGU9RmFsc2UpOgogICAgICAgICBpZiB0YXJnZXRfcHJvY2VzcyBpcyBOb25lOgotICAgICAgICAgICAgdGFyZ2V0X3Byb2Nlc3MgPSBfc3VicHJvY2Vzcy5HZXRDdXJyZW50UHJvY2VzcygpCi0gICAgICAgIHJldHVybiBfc3VicHJvY2Vzcy5EdXBsaWNhdGVIYW5kbGUoCi0gICAgICAgICAgICBfc3VicHJvY2Vzcy5HZXRDdXJyZW50UHJvY2VzcygpLCBoYW5kbGUsIHRhcmdldF9wcm9jZXNzLAotICAgICAgICAgICAgMCwgaW5oZXJpdGFibGUsIF9zdWJwcm9jZXNzLkRVUExJQ0FURV9TQU1FX0FDQ0VTUwotICAgICAgICAgICAgKS5EZXRhY2goKQorICAgICAgICAgICAgdGFyZ2V0X3Byb2Nlc3MgPSBfd2luYXBpLkdldEN1cnJlbnRQcm9jZXNzKCkKKyAgICAgICAgcmV0dXJuIF93aW5hcGkuRHVwbGljYXRlSGFuZGxlKAorICAgICAgICAgICAgX3dpbmFwaS5HZXRDdXJyZW50UHJvY2VzcygpLCBoYW5kbGUsIHRhcmdldF9wcm9jZXNzLAorICAgICAgICAgICAgMCwgaW5oZXJpdGFibGUsIF93aW5hcGkuRFVQTElDQVRFX1NBTUVfQUNDRVNTCisgICAgICAgICAgICApCiAKICAgICAjCiAgICAgIyBXZSBkZWZpbmUgYSBQb3BlbiBjbGFzcyBzaW1pbGFyIHRvIHRoZSBvbmUgZnJvbSBzdWJwcm9jZXNzLCBidXQKQEAgLTI0Miw2ICsyMTMsOSBAQAogICAgICAgICBfdGxzID0gX3RocmVhZC5fbG9jYWwoKQogCiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9jZXNzX29iaik6CisgICAgICAgICAgICBjbWQgPSAnICcuam9pbignIiVzIicgJSB4IGZvciB4IGluIGdldF9jb21tYW5kX2xpbmUoKSkKKyAgICAgICAgICAgIHByZXBfZGF0YSA9IGdldF9wcmVwYXJhdGlvbl9kYXRhKHByb2Nlc3Nfb2JqLl9uYW1lKQorCiAgICAgICAgICAgICAjIGNyZWF0ZSBwaXBlIGZvciBjb21tdW5pY2F0aW9uIHdpdGggY2hpbGQKICAgICAgICAgICAgIHJmZCwgd2ZkID0gb3MucGlwZSgpCiAKQEAgLTI0OSwzMCArMjIzLDMxIEBACiAgICAgICAgICAgICByaGFuZGxlID0gZHVwbGljYXRlKG1zdmNydC5nZXRfb3NmaGFuZGxlKHJmZCksIGluaGVyaXRhYmxlPVRydWUpCiAgICAgICAgICAgICBvcy5jbG9zZShyZmQpCiAKLSAgICAgICAgICAgICMgc3RhcnQgcHJvY2VzcwotICAgICAgICAgICAgY21kID0gZ2V0X2NvbW1hbmRfbGluZSgpICsgW3JoYW5kbGVdCi0gICAgICAgICAgICBjbWQgPSAnICcuam9pbignIiVzIicgJSB4IGZvciB4IGluIGNtZCkKLSAgICAgICAgICAgIGhwLCBodCwgcGlkLCB0aWQgPSBfc3VicHJvY2Vzcy5DcmVhdGVQcm9jZXNzKAotICAgICAgICAgICAgICAgIF9weXRob25fZXhlLCBjbWQsIE5vbmUsIE5vbmUsIDEsIDAsIE5vbmUsIE5vbmUsIE5vbmUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBodC5DbG9zZSgpCi0gICAgICAgICAgICBjbG9zZShyaGFuZGxlKQorICAgICAgICAgICAgd2l0aCBvcGVuKHdmZCwgJ3diJywgY2xvc2VmZD1UcnVlKSBhcyB0b19jaGlsZDoKKyAgICAgICAgICAgICAgICAjIHN0YXJ0IHByb2Nlc3MKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGhwLCBodCwgcGlkLCB0aWQgPSBfd2luYXBpLkNyZWF0ZVByb2Nlc3MoCisgICAgICAgICAgICAgICAgICAgICAgICBfcHl0aG9uX2V4ZSwgY21kICsgKCcgJXMnICUgcmhhbmRsZSksCisgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBOb25lLCAxLCAwLCBOb25lLCBOb25lLCBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoaHQpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgY2xvc2UocmhhbmRsZSkKIAotICAgICAgICAgICAgIyBzZXQgYXR0cmlidXRlcyBvZiBzZWxmCi0gICAgICAgICAgICBzZWxmLnBpZCA9IHBpZAotICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gTm9uZQotICAgICAgICAgICAgc2VsZi5faGFuZGxlID0gaHAKKyAgICAgICAgICAgICAgICAjIHNldCBhdHRyaWJ1dGVzIG9mIHNlbGYKKyAgICAgICAgICAgICAgICBzZWxmLnBpZCA9IHBpZAorICAgICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGUgPSBocAorICAgICAgICAgICAgICAgIHNlbGYuc2VudGluZWwgPSBpbnQoaHApCisgICAgICAgICAgICAgICAgdXRpbC5GaW5hbGl6ZShzZWxmLCBfd2luYXBpLkNsb3NlSGFuZGxlLCAoc2VsZi5zZW50aW5lbCwpKQogCi0gICAgICAgICAgICAjIHNlbmQgaW5mb3JtYXRpb24gdG8gY2hpbGQKLSAgICAgICAgICAgIHByZXBfZGF0YSA9IGdldF9wcmVwYXJhdGlvbl9kYXRhKHByb2Nlc3Nfb2JqLl9uYW1lKQotICAgICAgICAgICAgdG9fY2hpbGQgPSBvcy5mZG9wZW4od2ZkLCAnd2InKQotICAgICAgICAgICAgUG9wZW4uX3Rscy5wcm9jZXNzX2hhbmRsZSA9IGludChocCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBkdW1wKHByZXBfZGF0YSwgdG9fY2hpbGQsIEhJR0hFU1RfUFJPVE9DT0wpCi0gICAgICAgICAgICAgICAgZHVtcChwcm9jZXNzX29iaiwgdG9fY2hpbGQsIEhJR0hFU1RfUFJPVE9DT0wpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGRlbCBQb3Blbi5fdGxzLnByb2Nlc3NfaGFuZGxlCi0gICAgICAgICAgICAgICAgdG9fY2hpbGQuY2xvc2UoKQorICAgICAgICAgICAgICAgICMgc2VuZCBpbmZvcm1hdGlvbiB0byBjaGlsZAorICAgICAgICAgICAgICAgIFBvcGVuLl90bHMucHJvY2Vzc19oYW5kbGUgPSBpbnQoaHApCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBkdW1wKHByZXBfZGF0YSwgdG9fY2hpbGQsIEhJR0hFU1RfUFJPVE9DT0wpCisgICAgICAgICAgICAgICAgICAgIGR1bXAocHJvY2Vzc19vYmosIHRvX2NoaWxkLCBISUdIRVNUX1BST1RPQ09MKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIGRlbCBQb3Blbi5fdGxzLnByb2Nlc3NfaGFuZGxlCiAKICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgdGhyZWFkX2lzX3NwYXduaW5nKCk6CkBAIC0yODUsMTMgKzI2MCwxMyBAQAogICAgICAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgaWYgdGltZW91dCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBtc2VjcyA9IF9zdWJwcm9jZXNzLklORklOSVRFCisgICAgICAgICAgICAgICAgICAgIG1zZWNzID0gX3dpbmFwaS5JTkZJTklURQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIG1zZWNzID0gbWF4KDAsIGludCh0aW1lb3V0ICogMTAwMCArIDAuNSkpCiAKLSAgICAgICAgICAgICAgICByZXMgPSBfc3VicHJvY2Vzcy5XYWl0Rm9yU2luZ2xlT2JqZWN0KGludChzZWxmLl9oYW5kbGUpLCBtc2VjcykKLSAgICAgICAgICAgICAgICBpZiByZXMgPT0gX3N1YnByb2Nlc3MuV0FJVF9PQkpFQ1RfMDoKLSAgICAgICAgICAgICAgICAgICAgY29kZSA9IF9zdWJwcm9jZXNzLkdldEV4aXRDb2RlUHJvY2VzcyhzZWxmLl9oYW5kbGUpCisgICAgICAgICAgICAgICAgcmVzID0gX3dpbmFwaS5XYWl0Rm9yU2luZ2xlT2JqZWN0KGludChzZWxmLl9oYW5kbGUpLCBtc2VjcykKKyAgICAgICAgICAgICAgICBpZiByZXMgPT0gX3dpbmFwaS5XQUlUX09CSkVDVF8wOgorICAgICAgICAgICAgICAgICAgICBjb2RlID0gX3dpbmFwaS5HZXRFeGl0Q29kZVByb2Nlc3Moc2VsZi5faGFuZGxlKQogICAgICAgICAgICAgICAgICAgICBpZiBjb2RlID09IFRFUk1JTkFURToKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSAtc2lnbmFsLlNJR1RFUk0KICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gY29kZQpAQCAtMzA0LDkgKzI3OSw5IEBACiAgICAgICAgIGRlZiB0ZXJtaW5hdGUoc2VsZik6CiAgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIF9zdWJwcm9jZXNzLlRlcm1pbmF0ZVByb2Nlc3MoaW50KHNlbGYuX2hhbmRsZSksIFRFUk1JTkFURSkKLSAgICAgICAgICAgICAgICBleGNlcHQgV2luZG93c0Vycm9yOgotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLndhaXQodGltZW91dD0wLjEpIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuVGVybWluYXRlUHJvY2VzcyhpbnQoc2VsZi5faGFuZGxlKSwgVEVSTUlOQVRFKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLndhaXQodGltZW91dD0xLjApIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogCiAgICAgIwpAQCAtMzU2LDcgKzMzMSw4IEBACiAgICAgICAgICAgICByZXR1cm4gW3N5cy5leGVjdXRhYmxlLCAnLS1tdWx0aXByb2Nlc3NpbmctZm9yayddCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwcm9nID0gJ2Zyb20gbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgaW1wb3J0IG1haW47IG1haW4oKScKLSAgICAgICAgICAgIHJldHVybiBbX3B5dGhvbl9leGUsICctYycsIHByb2csICctLW11bHRpcHJvY2Vzc2luZy1mb3JrJ10KKyAgICAgICAgICAgIG9wdHMgPSB1dGlsLl9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQorICAgICAgICAgICAgcmV0dXJuIFtfcHl0aG9uX2V4ZV0gKyBvcHRzICsgWyctYycsIHByb2csICctLW11bHRpcHJvY2Vzc2luZy1mb3JrJ10KIAogCiAgICAgZGVmIG1haW4oKToKQEAgLTM3OCw3ICszNTQsNyBAQAogICAgICAgICBmcm9tX3BhcmVudC5jbG9zZSgpCiAKICAgICAgICAgZXhpdGNvZGUgPSBzZWxmLl9ib290c3RyYXAoKQotICAgICAgICBleGl0KGV4aXRjb2RlKQorICAgICAgICBzeXMuZXhpdChleGl0Y29kZSkKIAogCiAgICAgZGVmIGdldF9wcmVwYXJhdGlvbl9kYXRhKG5hbWUpOgpAQCAtNDExLDIyICszODcsNiBAQAogCiAgICAgICAgIHJldHVybiBkCiAKLSAgICAjCi0gICAgIyBNYWtlIChQaXBlKUNvbm5lY3Rpb24gcGlja2xhYmxlCi0gICAgIwotCi0gICAgZGVmIHJlZHVjZV9jb25uZWN0aW9uKGNvbm4pOgotICAgICAgICBpZiBub3QgUG9wZW4udGhyZWFkX2lzX3NwYXduaW5nKCk6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCi0gICAgICAgICAgICAgICAgJ0J5IGRlZmF1bHQgJXMgb2JqZWN0cyBjYW4gb25seSBiZSBzaGFyZWQgYmV0d2VlbiBwcm9jZXNzZXNcbicKLSAgICAgICAgICAgICAgICAndXNpbmcgaW5oZXJpdGFuY2UnICUgdHlwZShjb25uKS5fX25hbWVfXwotICAgICAgICAgICAgICAgICkKLSAgICAgICAgcmV0dXJuIHR5cGUoY29ubiksIChQb3Blbi5kdXBsaWNhdGVfZm9yX2NoaWxkKGNvbm4uZmlsZW5vKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4ucmVhZGFibGUsIGNvbm4ud3JpdGFibGUpCi0KLSAgICBGb3JraW5nUGlja2xlci5yZWdpc3RlcihDb25uZWN0aW9uLCByZWR1Y2VfY29ubmVjdGlvbikKLSAgICBGb3JraW5nUGlja2xlci5yZWdpc3RlcihQaXBlQ29ubmVjdGlvbiwgcmVkdWNlX2Nvbm5lY3Rpb24pCi0KICMKICMgUHJlcGFyZSBjdXJyZW50IHByb2Nlc3MKICMKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weQppbmRleCAwYTI1ZWYwLi40ZTkzYzEyIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5CkBAIC00LDM3ICs0LDExIEBACiAjIG11bHRpcHJvY2Vzc2luZy9oZWFwLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAogaW1wb3J0IGJpc2VjdAogaW1wb3J0IG1tYXAKLWltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGhyZWFkaW5nCkBAIC01Miw3ICsyNiw3IEBACiAKIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogCi0gICAgZnJvbSBfbXVsdGlwcm9jZXNzaW5nIGltcG9ydCB3aW4zMgorICAgIGltcG9ydCBfd2luYXBpCiAKICAgICBjbGFzcyBBcmVuYShvYmplY3QpOgogCkBAIC02Miw3ICszNiw3IEBACiAgICAgICAgICAgICBzZWxmLnNpemUgPSBzaXplCiAgICAgICAgICAgICBzZWxmLm5hbWUgPSAncHltLSVkLSVkJyAlIChvcy5nZXRwaWQoKSwgbmV4dChBcmVuYS5fY291bnRlcikpCiAgICAgICAgICAgICBzZWxmLmJ1ZmZlciA9IG1tYXAubW1hcCgtMSwgc2VsZi5zaXplLCB0YWduYW1lPXNlbGYubmFtZSkKLSAgICAgICAgICAgIGFzc2VydCB3aW4zMi5HZXRMYXN0RXJyb3IoKSA9PSAwLCAndGFnbmFtZSBhbHJlYWR5IGluIHVzZScKKyAgICAgICAgICAgIGFzc2VydCBfd2luYXBpLkdldExhc3RFcnJvcigpID09IDAsICd0YWduYW1lIGFscmVhZHkgaW4gdXNlJwogICAgICAgICAgICAgc2VsZi5fc3RhdGUgPSAoc2VsZi5zaXplLCBzZWxmLm5hbWUpCiAKICAgICAgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKQEAgLTcyLDcgKzQ2LDcgQEAKICAgICAgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CiAgICAgICAgICAgICBzZWxmLnNpemUsIHNlbGYubmFtZSA9IHNlbGYuX3N0YXRlID0gc3RhdGUKICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gbW1hcC5tbWFwKC0xLCBzZWxmLnNpemUsIHRhZ25hbWU9c2VsZi5uYW1lKQotICAgICAgICAgICAgYXNzZXJ0IHdpbjMyLkdldExhc3RFcnJvcigpID09IHdpbjMyLkVSUk9SX0FMUkVBRFlfRVhJU1RTCisgICAgICAgICAgICBhc3NlcnQgX3dpbmFwaS5HZXRMYXN0RXJyb3IoKSA9PSBfd2luYXBpLkVSUk9SX0FMUkVBRFlfRVhJU1RTCiAKIGVsc2U6CiAKQEAgLTIzMSw3ICsyMDUsNyBAQAogICAgICAgICAgICAgc2VsZi5fbG9jay5yZWxlYXNlKCkKIAogIwotIyBDbGFzcyByZXByZXNlbnRpbmcgYSBjaHVuayBvZiBhbiBtbWFwIC0tIGNhbiBiZSBpbmhlcml0ZWQKKyMgQ2xhc3MgcmVwcmVzZW50aW5nIGEgY2h1bmsgb2YgYW4gbW1hcCAtLSBjYW4gYmUgaW5oZXJpdGVkIGJ5IGNoaWxkIHByb2Nlc3MKICMKIAogY2xhc3MgQnVmZmVyV3JhcHBlcihvYmplY3QpOgpAQCAtMjQ0LDExICsyMTgsNiBAQAogICAgICAgICBzZWxmLl9zdGF0ZSA9IChibG9jaywgc2l6ZSkKICAgICAgICAgRmluYWxpemUoc2VsZiwgQnVmZmVyV3JhcHBlci5faGVhcC5mcmVlLCBhcmdzPShibG9jaywpKQogCi0gICAgZGVmIGdldF9hZGRyZXNzKHNlbGYpOgorICAgIGRlZiBjcmVhdGVfbWVtb3J5dmlldyhzZWxmKToKICAgICAgICAgKGFyZW5hLCBzdGFydCwgc3RvcCksIHNpemUgPSBzZWxmLl9zdGF0ZQotICAgICAgICBhZGRyZXNzLCBsZW5ndGggPSBfbXVsdGlwcm9jZXNzaW5nLmFkZHJlc3Nfb2ZfYnVmZmVyKGFyZW5hLmJ1ZmZlcikKLSAgICAgICAgYXNzZXJ0IHNpemUgPD0gbGVuZ3RoCi0gICAgICAgIHJldHVybiBhZGRyZXNzICsgc3RhcnQKLQotICAgIGRlZiBnZXRfc2l6ZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3N0YXRlWzFdCisgICAgICAgIHJldHVybiBtZW1vcnl2aWV3KGFyZW5hLmJ1ZmZlcilbc3RhcnQ6c3RhcnQrc2l6ZV0KZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CmluZGV4IDU1ODhlYWQuLjFhYjE0N2UgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weQpAQCAtNSwzMiArNSw3IEBACiAjIG11bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weQogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvbnRyaWJ1dG9ycyBtYXkgYmUKLSMgICAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSMgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0jIFNVQ0ggREFNQUdFLgorIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiAjCiAKIF9fYWxsX18gPSBbICdCYXNlTWFuYWdlcicsICdTeW5jTWFuYWdlcicsICdCYXNlUHJveHknLCAnVG9rZW4nIF0KQEAgLTM5LDE5ICsxNCwxNiBAQAogIyBJbXBvcnRzCiAjCiAKLWltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IHdlYWtyZWYKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCBhcnJheQogaW1wb3J0IHF1ZXVlCiAKIGZyb20gdHJhY2ViYWNrIGltcG9ydCBmb3JtYXRfZXhjCi1mcm9tIHBpY2tsZSBpbXBvcnQgUGlja2xpbmdFcnJvcgogZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFByb2Nlc3MsIGN1cnJlbnRfcHJvY2VzcywgYWN0aXZlX2NoaWxkcmVuLCBQb29sLCB1dGlsLCBjb25uZWN0aW9uCiBmcm9tIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzIGltcG9ydCBBdXRoZW50aWNhdGlvblN0cmluZwotZnJvbSBtdWx0aXByb2Nlc3NpbmcuZm9ya2luZyBpbXBvcnQgZXhpdCwgUG9wZW4sIGFzc2VydF9zcGF3bmluZywgRm9ya2luZ1BpY2tsZXIKLWZyb20gbXVsdGlwcm9jZXNzaW5nLnV0aWwgaW1wb3J0IEZpbmFsaXplLCBpbmZvCitmcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIGltcG9ydCBQb3BlbiwgRm9ya2luZ1BpY2tsZXIKK2Zyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZQogCiAjCiAjIFJlZ2lzdGVyIHNvbWUgdGhpbmdzIGZvciBwaWNrbGluZwpAQCAtMTY4LDI4ICsxNDAsMzggQEAKICAgICAgICAgc2VsZi5pZF90b19vYmogPSB7JzAnOiAoTm9uZSwgKCkpfQogICAgICAgICBzZWxmLmlkX3RvX3JlZmNvdW50ID0ge30KICAgICAgICAgc2VsZi5tdXRleCA9IHRocmVhZGluZy5STG9jaygpCi0gICAgICAgIHNlbGYuc3RvcCA9IDAKIAogICAgIGRlZiBzZXJ2ZV9mb3JldmVyKHNlbGYpOgogICAgICAgICAnJycKICAgICAgICAgUnVuIHRoZSBzZXJ2ZXIgZm9yZXZlcgogICAgICAgICAnJycKKyAgICAgICAgc2VsZi5zdG9wX2V2ZW50ID0gdGhyZWFkaW5nLkV2ZW50KCkKICAgICAgICAgY3VycmVudF9wcm9jZXNzKCkuX21hbmFnZXJfc2VydmVyID0gc2VsZgogICAgICAgICB0cnk6CisgICAgICAgICAgICBhY2NlcHRlciA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuYWNjZXB0ZXIpCisgICAgICAgICAgICBhY2NlcHRlci5kYWVtb24gPSBUcnVlCisgICAgICAgICAgICBhY2NlcHRlci5zdGFydCgpCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHNlbGYubGlzdGVuZXIuYWNjZXB0KCkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBJT0Vycm9yKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLmhhbmRsZV9yZXF1ZXN0LCBhcmdzPShjLCkpCi0gICAgICAgICAgICAgICAgICAgIHQuZGFlbW9uID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICB0LnN0YXJ0KCkKKyAgICAgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5zdG9wX2V2ZW50LmlzX3NldCgpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0b3BfZXZlbnQud2FpdCgxKQogICAgICAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5zdG9wID0gOTk5Ci0gICAgICAgICAgICBzZWxmLmxpc3RlbmVyLmNsb3NlKCkKKyAgICAgICAgICAgIGlmIHN5cy5zdGRvdXQgIT0gc3lzLl9fc3Rkb3V0X186CisgICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygncmVzZXR0aW5nIHN0ZG91dCwgc3RkZXJyJykKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gc3lzLl9fc3Rkb3V0X18KKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gc3lzLl9fc3RkZXJyX18KKyAgICAgICAgICAgIHN5cy5leGl0KDApCisKKyAgICBkZWYgYWNjZXB0ZXIoc2VsZik6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYyA9IHNlbGYubGlzdGVuZXIuYWNjZXB0KCkKKyAgICAgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgSU9FcnJvcik6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLmhhbmRsZV9yZXF1ZXN0LCBhcmdzPShjLCkpCisgICAgICAgICAgICB0LmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgIHQuc3RhcnQoKQogCiAgICAgZGVmIGhhbmRsZV9yZXF1ZXN0KHNlbGYsIGMpOgogICAgICAgICAnJycKQEAgLTIzNiw3ICsyMTgsNyBAQAogICAgICAgICBzZW5kID0gY29ubi5zZW5kCiAgICAgICAgIGlkX3RvX29iaiA9IHNlbGYuaWRfdG9fb2JqCiAKLSAgICAgICAgd2hpbGUgbm90IHNlbGYuc3RvcDoKKyAgICAgICAgd2hpbGUgbm90IHNlbGYuc3RvcF9ldmVudC5pc19zZXQoKToKIAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG1ldGhvZG5hbWUgPSBvYmogPSBOb25lCkBAIC0zNDYsMzIgKzMyOCwxMyBAQAogICAgICAgICBTaHV0ZG93biB0aGlzIHByb2Nlc3MKICAgICAgICAgJycnCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCdtYW5hZ2VyIHJlY2VpdmVkIHNodXRkb3duIG1lc3NhZ2UnKQotICAgICAgICAgICAgICAgIGMuc2VuZCgoJyNSRVRVUk4nLCBOb25lKSkKLQotICAgICAgICAgICAgICAgIGlmIHN5cy5zdGRvdXQgIT0gc3lzLl9fc3Rkb3V0X186Ci0gICAgICAgICAgICAgICAgICAgIHV0aWwuZGVidWcoJ3Jlc2V0dGluZyBzdGRvdXQsIHN0ZGVycicpCi0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzeXMuX19zdGRvdXRfXwotICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gc3lzLl9fc3RkZXJyX18KLQotICAgICAgICAgICAgICAgIHV0aWwuX3J1bl9maW5hbGl6ZXJzKDApCi0KLSAgICAgICAgICAgICAgICBmb3IgcCBpbiBhY3RpdmVfY2hpbGRyZW4oKToKLSAgICAgICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygndGVybWluYXRpbmcgYSBjaGlsZCBwcm9jZXNzIG9mIG1hbmFnZXInKQotICAgICAgICAgICAgICAgICAgICBwLnRlcm1pbmF0ZSgpCi0KLSAgICAgICAgICAgICAgICBmb3IgcCBpbiBhY3RpdmVfY2hpbGRyZW4oKToKLSAgICAgICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygndGVybWluYXRpbmcgYSBjaGlsZCBwcm9jZXNzIG9mIG1hbmFnZXInKQotICAgICAgICAgICAgICAgICAgICBwLmpvaW4oKQotCi0gICAgICAgICAgICAgICAgdXRpbC5fcnVuX2ZpbmFsaXplcnMoKQotICAgICAgICAgICAgICAgIHV0aWwuaW5mbygnbWFuYWdlciBleGl0aW5nIHdpdGggZXhpdGNvZGUgMCcpCi0gICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IHRyYWNlYmFjawotICAgICAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQorICAgICAgICAgICAgdXRpbC5kZWJ1ZygnbWFuYWdlciByZWNlaXZlZCBzaHV0ZG93biBtZXNzYWdlJykKKyAgICAgICAgICAgIGMuc2VuZCgoJyNSRVRVUk4nLCBOb25lKSkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgaW1wb3J0IHRyYWNlYmFjaworICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBleGl0KDApCisgICAgICAgICAgICBzZWxmLnN0b3BfZXZlbnQuc2V0KCkKIAogICAgIGRlZiBjcmVhdGUoc2VsZiwgYywgdHlwZWlkLCAqYXJncywgKiprd2RzKToKICAgICAgICAgJycnCkBAIC00ODMsMTAgKzQ0Niw2IEBACiAgICAgICAgIHNlbGYuX3NlcmlhbGl6ZXIgPSBzZXJpYWxpemVyCiAgICAgICAgIHNlbGYuX0xpc3RlbmVyLCBzZWxmLl9DbGllbnQgPSBsaXN0ZW5lcl9jbGllbnRbc2VyaWFsaXplcl0KIAotICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgotICAgICAgICByZXR1cm4gdHlwZShzZWxmKS5mcm9tX2FkZHJlc3MsIFwKLSAgICAgICAgICAgICAgIChzZWxmLl9hZGRyZXNzLCBzZWxmLl9hdXRoa2V5LCBzZWxmLl9zZXJpYWxpemVyKQotCiAgICAgZGVmIGdldF9zZXJ2ZXIoc2VsZik6CiAgICAgICAgICcnJwogICAgICAgICBSZXR1cm4gc2VydmVyIG9iamVjdCB3aXRoIHNlcnZlX2ZvcmV2ZXIoKSBtZXRob2QgYW5kIGFkZHJlc3MgYXR0cmlidXRlCkBAIC01NzYsNyArNTM1LDEwIEBACiAgICAgICAgICcnJwogICAgICAgICBKb2luIHRoZSBtYW5hZ2VyIHByb2Nlc3MgKGlmIGl0IGhhcyBiZWVuIHNwYXduZWQpCiAgICAgICAgICcnJwotICAgICAgICBzZWxmLl9wcm9jZXNzLmpvaW4odGltZW91dCkKKyAgICAgICAgaWYgc2VsZi5fcHJvY2VzcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3Muam9pbih0aW1lb3V0KQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX3Byb2Nlc3MuaXNfYWxpdmUoKToKKyAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzID0gTm9uZQogCiAgICAgZGVmIF9kZWJ1Z19pbmZvKHNlbGYpOgogICAgICAgICAnJycKQEAgLTU5OSw2ICs1NjEsOSBAQAogICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9zdGF0ZS52YWx1ZSA9PSBTdGF0ZS5JTklUSUFMOgorICAgICAgICAgICAgc2VsZi5zdGFydCgpCisgICAgICAgIGFzc2VydCBzZWxmLl9zdGF0ZS52YWx1ZSA9PSBTdGF0ZS5TVEFSVEVECiAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6CkBAIC02MjAsNyArNTg1LDcgQEAKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgcGFzcwogCi0gICAgICAgICAgICBwcm9jZXNzLmpvaW4odGltZW91dD0wLjIpCisgICAgICAgICAgICBwcm9jZXNzLmpvaW4odGltZW91dD0xLjApCiAgICAgICAgICAgICBpZiBwcm9jZXNzLmlzX2FsaXZlKCk6CiAgICAgICAgICAgICAgICAgdXRpbC5pbmZvKCdtYW5hZ2VyIHN0aWxsIGFsaXZlJykKICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHByb2Nlc3MsICd0ZXJtaW5hdGUnKToKQEAgLTk4Miw4ICs5NDcsOSBAQAogCiBjbGFzcyBBY3F1aXJlclByb3h5KEJhc2VQcm94eSk6CiAgICAgX2V4cG9zZWRfID0gKCdhY3F1aXJlJywgJ3JlbGVhc2UnKQotICAgIGRlZiBhY3F1aXJlKHNlbGYsIGJsb2NraW5nPVRydWUpOgotICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnYWNxdWlyZScsIChibG9ja2luZywpKQorICAgIGRlZiBhY3F1aXJlKHNlbGYsIGJsb2NraW5nPVRydWUsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgIGFyZ3MgPSAoYmxvY2tpbmcsKSBpZiB0aW1lb3V0IGlzIE5vbmUgZWxzZSAoYmxvY2tpbmcsIHRpbWVvdXQpCisgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdhY3F1aXJlJywgYXJncykKICAgICBkZWYgcmVsZWFzZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ3JlbGVhc2UnKQogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CkBAIC0xMDAwLDYgKzk2NiwyNCBAQAogICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnbm90aWZ5JykKICAgICBkZWYgbm90aWZ5X2FsbChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ25vdGlmeV9hbGwnKQorICAgIGRlZiB3YWl0X2ZvcihzZWxmLCBwcmVkaWNhdGUsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgIHJlc3VsdCA9IHByZWRpY2F0ZSgpCisgICAgICAgIGlmIHJlc3VsdDoKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZW5kdGltZSA9IE5vbmUKKyAgICAgICAgICAgIHdhaXR0aW1lID0gTm9uZQorICAgICAgICB3aGlsZSBub3QgcmVzdWx0OgorICAgICAgICAgICAgaWYgZW5kdGltZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3YWl0dGltZSA9IGVuZHRpbWUgLSBfdGltZSgpCisgICAgICAgICAgICAgICAgaWYgd2FpdHRpbWUgPD0gMDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHNlbGYud2FpdCh3YWl0dGltZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IHByZWRpY2F0ZSgpCisgICAgICAgIHJldHVybiByZXN1bHQKKwogCiBjbGFzcyBFdmVudFByb3h5KEJhc2VQcm94eSk6CiAgICAgX2V4cG9zZWRfID0gKCdpc19zZXQnLCAnc2V0JywgJ2NsZWFyJywgJ3dhaXQnKQpAQCAtMTAxMiw2ICs5OTYsMjYgQEAKICAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnd2FpdCcsICh0aW1lb3V0LCkpCiAKKworY2xhc3MgQmFycmllclByb3h5KEJhc2VQcm94eSk6CisgICAgX2V4cG9zZWRfID0gKCdfX2dldGF0dHJpYnV0ZV9fJywgJ3dhaXQnLCAnYWJvcnQnLCAncmVzZXQnKQorICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCd3YWl0JywgKHRpbWVvdXQsKSkKKyAgICBkZWYgYWJvcnQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdhYm9ydCcpCisgICAgZGVmIHJlc2V0KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgncmVzZXQnKQorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYXJ0aWVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnX19nZXRhdHRyaWJ1dGVfXycsICgncGFydGllcycsKSkKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbl93YWl0aW5nKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnX19nZXRhdHRyaWJ1dGVfXycsICgnbl93YWl0aW5nJywpKQorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBicm9rZW4oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdfX2dldGF0dHJpYnV0ZV9fJywgKCdicm9rZW4nLCkpCisKKwogY2xhc3MgTmFtZXNwYWNlUHJveHkoQmFzZVByb3h5KToKICAgICBfZXhwb3NlZF8gPSAoJ19fZ2V0YXR0cmlidXRlX18nLCAnX19zZXRhdHRyX18nLCAnX19kZWxhdHRyX18nKQogICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBrZXkpOgpAQCAtMTA0MSwxMiArMTA0NSwxMSBAQAogCiAKIEJhc2VMaXN0UHJveHkgPSBNYWtlUHJveHlUeXBlKCdCYXNlTGlzdFByb3h5JywgKAotICAgICdfX2FkZF9fJywgJ19fY29udGFpbnNfXycsICdfX2RlbGl0ZW1fXycsICdfX2RlbHNsaWNlX18nLAotICAgICdfX2dldGl0ZW1fXycsICdfX2dldHNsaWNlX18nLCAnX19sZW5fXycsICdfX211bF9fJywKLSAgICAnX19yZXZlcnNlZF9fJywgJ19fcm11bF9fJywgJ19fc2V0aXRlbV9fJywgJ19fc2V0c2xpY2VfXycsCisgICAgJ19fYWRkX18nLCAnX19jb250YWluc19fJywgJ19fZGVsaXRlbV9fJywgJ19fZ2V0aXRlbV9fJywgJ19fbGVuX18nLAorICAgICdfX211bF9fJywgJ19fcmV2ZXJzZWRfXycsICdfX3JtdWxfXycsICdfX3NldGl0ZW1fXycsCiAgICAgJ2FwcGVuZCcsICdjb3VudCcsICdleHRlbmQnLCAnaW5kZXgnLCAnaW5zZXJ0JywgJ3BvcCcsICdyZW1vdmUnLAogICAgICdyZXZlcnNlJywgJ3NvcnQnLCAnX19pbXVsX18nCi0gICAgKSkgICAgICAgICAgICAgICAgICAjIFhYWCBfX2dldHNsaWNlX18gYW5kIF9fc2V0c2xpY2VfXyB1bm5lZWRlZCBpbiBQeTMuMAorICAgICkpCiBjbGFzcyBMaXN0UHJveHkoQmFzZUxpc3RQcm94eSk6CiAgICAgZGVmIF9faWFkZF9fKHNlbGYsIHZhbHVlKToKICAgICAgICAgc2VsZi5fY2FsbG1ldGhvZCgnZXh0ZW5kJywgKHZhbHVlLCkpCkBAIC0xMDY0LDE3ICsxMDY3LDE4IEBACiAKIAogQXJyYXlQcm94eSA9IE1ha2VQcm94eVR5cGUoJ0FycmF5UHJveHknLCAoCi0gICAgJ19fbGVuX18nLCAnX19nZXRpdGVtX18nLCAnX19zZXRpdGVtX18nLCAnX19nZXRzbGljZV9fJywgJ19fc2V0c2xpY2VfXycKLSAgICApKSAgICAgICAgICAgICAgICAgICMgWFhYIF9fZ2V0c2xpY2VfXyBhbmQgX19zZXRzbGljZV9fIHVubmVlZGVkIGluIFB5My4wCisgICAgJ19fbGVuX18nLCAnX19nZXRpdGVtX18nLCAnX19zZXRpdGVtX18nCisgICAgKSkKIAogCiBQb29sUHJveHkgPSBNYWtlUHJveHlUeXBlKCdQb29sUHJveHknLCAoCiAgICAgJ2FwcGx5JywgJ2FwcGx5X2FzeW5jJywgJ2Nsb3NlJywgJ2ltYXAnLCAnaW1hcF91bm9yZGVyZWQnLCAnam9pbicsCi0gICAgJ21hcCcsICdtYXBfYXN5bmMnLCAndGVybWluYXRlJworICAgICdtYXAnLCAnbWFwX2FzeW5jJywgJ3N0YXJtYXAnLCAnc3Rhcm1hcF9hc3luYycsICd0ZXJtaW5hdGUnCiAgICAgKSkKIFBvb2xQcm94eS5fbWV0aG9kX3RvX3R5cGVpZF8gPSB7CiAgICAgJ2FwcGx5X2FzeW5jJzogJ0FzeW5jUmVzdWx0JywKICAgICAnbWFwX2FzeW5jJzogJ0FzeW5jUmVzdWx0JywKKyAgICAnc3Rhcm1hcF9hc3luYyc6ICdBc3luY1Jlc3VsdCcsCiAgICAgJ2ltYXAnOiAnSXRlcmF0b3InLAogICAgICdpbWFwX3Vub3JkZXJlZCc6ICdJdGVyYXRvcicKICAgICB9CkBAIC0xMTAzLDYgKzExMDcsNyBAQAogU3luY01hbmFnZXIucmVnaXN0ZXIoJ0JvdW5kZWRTZW1hcGhvcmUnLCB0aHJlYWRpbmcuQm91bmRlZFNlbWFwaG9yZSwKICAgICAgICAgICAgICAgICAgICAgIEFjcXVpcmVyUHJveHkpCiBTeW5jTWFuYWdlci5yZWdpc3RlcignQ29uZGl0aW9uJywgdGhyZWFkaW5nLkNvbmRpdGlvbiwgQ29uZGl0aW9uUHJveHkpCitTeW5jTWFuYWdlci5yZWdpc3RlcignQmFycmllcicsIHRocmVhZGluZy5CYXJyaWVyLCBCYXJyaWVyUHJveHkpCiBTeW5jTWFuYWdlci5yZWdpc3RlcignUG9vbCcsIFBvb2wsIFBvb2xQcm94eSkKIFN5bmNNYW5hZ2VyLnJlZ2lzdGVyKCdsaXN0JywgbGlzdCwgTGlzdFByb3h5KQogU3luY01hbmFnZXIucmVnaXN0ZXIoJ2RpY3QnLCBkaWN0LCBEaWN0UHJveHkpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKaW5kZXggNzUwMmZmOC4uN2Y3M2I0NCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weQpAQCAtNCwzMiArNCw3IEBACiAjIG11bHRpcHJvY2Vzc2luZy9wb29sLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAogX19hbGxfXyA9IFsnUG9vbCddCkBAIC02NCw2ICszOSw5IEBACiBkZWYgbWFwc3RhcihhcmdzKToKICAgICByZXR1cm4gbGlzdChtYXAoKmFyZ3MpKQogCitkZWYgc3Rhcm1hcHN0YXIoYXJncyk6CisgICAgcmV0dXJuIGxpc3QoaXRlcnRvb2xzLnN0YXJtYXAoYXJnc1swXSwgYXJnc1sxXSkpCisKICMKICMgQ29kZSBydW4gYnkgd29ya2VyIHByb2Nlc3NlcwogIwpAQCAtMjQ3LDE0ICsyMjUsMzAgQEAKICAgICAgICAgQXBwbHkgYGZ1bmNgIHRvIGVhY2ggZWxlbWVudCBpbiBgaXRlcmFibGVgLCBjb2xsZWN0aW5nIHRoZSByZXN1bHRzCiAgICAgICAgIGluIGEgbGlzdCB0aGF0IGlzIHJldHVybmVkLgogICAgICAgICAnJycKLSAgICAgICAgYXNzZXJ0IHNlbGYuX3N0YXRlID09IFJVTgotICAgICAgICByZXR1cm4gc2VsZi5tYXBfYXN5bmMoZnVuYywgaXRlcmFibGUsIGNodW5rc2l6ZSkuZ2V0KCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX21hcF9hc3luYyhmdW5jLCBpdGVyYWJsZSwgbWFwc3RhciwgY2h1bmtzaXplKS5nZXQoKQorCisgICAgZGVmIHN0YXJtYXAoc2VsZiwgZnVuYywgaXRlcmFibGUsIGNodW5rc2l6ZT1Ob25lKToKKyAgICAgICAgJycnCisgICAgICAgIExpa2UgYG1hcCgpYCBtZXRob2QgYnV0IHRoZSBlbGVtZW50cyBvZiB0aGUgYGl0ZXJhYmxlYCBhcmUgZXhwZWN0ZWQgdG8KKyAgICAgICAgYmUgaXRlcmFibGVzIGFzIHdlbGwgYW5kIHdpbGwgYmUgdW5wYWNrZWQgYXMgYXJndW1lbnRzLiBIZW5jZQorICAgICAgICBgZnVuY2AgYW5kIChhLCBiKSBiZWNvbWVzIGZ1bmMoYSwgYikuCisgICAgICAgICcnJworICAgICAgICByZXR1cm4gc2VsZi5fbWFwX2FzeW5jKGZ1bmMsIGl0ZXJhYmxlLCBzdGFybWFwc3RhciwgY2h1bmtzaXplKS5nZXQoKQorCisgICAgZGVmIHN0YXJtYXBfYXN5bmMoc2VsZiwgZnVuYywgaXRlcmFibGUsIGNodW5rc2l6ZT1Ob25lLCBjYWxsYmFjaz1Ob25lLAorICAgICAgICAgICAgZXJyb3JfY2FsbGJhY2s9Tm9uZSk6CisgICAgICAgICcnJworICAgICAgICBBc3luY2hyb25vdXMgdmVyc2lvbiBvZiBgc3Rhcm1hcCgpYCBtZXRob2QuCisgICAgICAgICcnJworICAgICAgICByZXR1cm4gc2VsZi5fbWFwX2FzeW5jKGZ1bmMsIGl0ZXJhYmxlLCBzdGFybWFwc3RhciwgY2h1bmtzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLCBlcnJvcl9jYWxsYmFjaykKIAogICAgIGRlZiBpbWFwKHNlbGYsIGZ1bmMsIGl0ZXJhYmxlLCBjaHVua3NpemU9MSk6CiAgICAgICAgICcnJwogICAgICAgICBFcXVpdmFsZW50IG9mIGBtYXAoKWAgLS0gY2FuIGJlIE1VQ0ggc2xvd2VyIHRoYW4gYFBvb2wubWFwKClgLgogICAgICAgICAnJycKLSAgICAgICAgYXNzZXJ0IHNlbGYuX3N0YXRlID09IFJVTgorICAgICAgICBpZiBzZWxmLl9zdGF0ZSAhPSBSVU46CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQb29sIG5vdCBydW5uaW5nIikKICAgICAgICAgaWYgY2h1bmtzaXplID09IDE6CiAgICAgICAgICAgICByZXN1bHQgPSBJTWFwSXRlcmF0b3Ioc2VsZi5fY2FjaGUpCiAgICAgICAgICAgICBzZWxmLl90YXNrcXVldWUucHV0KCgoKHJlc3VsdC5fam9iLCBpLCBmdW5jLCAoeCwpLCB7fSkKQEAgLTI3Miw3ICsyNjYsOCBAQAogICAgICAgICAnJycKICAgICAgICAgTGlrZSBgaW1hcCgpYCBtZXRob2QgYnV0IG9yZGVyaW5nIG9mIHJlc3VsdHMgaXMgYXJiaXRyYXJ5LgogICAgICAgICAnJycKLSAgICAgICAgYXNzZXJ0IHNlbGYuX3N0YXRlID09IFJVTgorICAgICAgICBpZiBzZWxmLl9zdGF0ZSAhPSBSVU46CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQb29sIG5vdCBydW5uaW5nIikKICAgICAgICAgaWYgY2h1bmtzaXplID09IDE6CiAgICAgICAgICAgICByZXN1bHQgPSBJTWFwVW5vcmRlcmVkSXRlcmF0b3Ioc2VsZi5fY2FjaGUpCiAgICAgICAgICAgICBzZWxmLl90YXNrcXVldWUucHV0KCgoKHJlc3VsdC5fam9iLCBpLCBmdW5jLCAoeCwpLCB7fSkKQEAgLTI5MSw3ICsyODYsOCBAQAogICAgICAgICAnJycKICAgICAgICAgQXN5bmNocm9ub3VzIHZlcnNpb24gb2YgYGFwcGx5KClgIG1ldGhvZC4KICAgICAgICAgJycnCi0gICAgICAgIGFzc2VydCBzZWxmLl9zdGF0ZSA9PSBSVU4KKyAgICAgICAgaWYgc2VsZi5fc3RhdGUgIT0gUlVOOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUG9vbCBub3QgcnVubmluZyIpCiAgICAgICAgIHJlc3VsdCA9IEFwcGx5UmVzdWx0KHNlbGYuX2NhY2hlLCBjYWxsYmFjaywgZXJyb3JfY2FsbGJhY2spCiAgICAgICAgIHNlbGYuX3Rhc2txdWV1ZS5wdXQoKFsocmVzdWx0Ll9qb2IsIE5vbmUsIGZ1bmMsIGFyZ3MsIGt3ZHMpXSwgTm9uZSkpCiAgICAgICAgIHJldHVybiByZXN1bHQKQEAgLTMwMSw3ICsyOTcsMTYgQEAKICAgICAgICAgJycnCiAgICAgICAgIEFzeW5jaHJvbm91cyB2ZXJzaW9uIG9mIGBtYXAoKWAgbWV0aG9kLgogICAgICAgICAnJycKLSAgICAgICAgYXNzZXJ0IHNlbGYuX3N0YXRlID09IFJVTgorICAgICAgICByZXR1cm4gc2VsZi5fbWFwX2FzeW5jKGZ1bmMsIGl0ZXJhYmxlLCBtYXBzdGFyLCBjaHVua3NpemUsIGNhbGxiYWNrLAorICAgICAgICAgICAgZXJyb3JfY2FsbGJhY2spCisKKyAgICBkZWYgX21hcF9hc3luYyhzZWxmLCBmdW5jLCBpdGVyYWJsZSwgbWFwcGVyLCBjaHVua3NpemU9Tm9uZSwgY2FsbGJhY2s9Tm9uZSwKKyAgICAgICAgICAgIGVycm9yX2NhbGxiYWNrPU5vbmUpOgorICAgICAgICAnJycKKyAgICAgICAgSGVscGVyIGZ1bmN0aW9uIHRvIGltcGxlbWVudCBtYXAsIHN0YXJtYXAgYW5kIHRoZWlyIGFzeW5jIGNvdW50ZXJwYXJ0cy4KKyAgICAgICAgJycnCisgICAgICAgIGlmIHNlbGYuX3N0YXRlICE9IFJVTjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBvb2wgbm90IHJ1bm5pbmciKQogICAgICAgICBpZiBub3QgaGFzYXR0cihpdGVyYWJsZSwgJ19fbGVuX18nKToKICAgICAgICAgICAgIGl0ZXJhYmxlID0gbGlzdChpdGVyYWJsZSkKIApAQCAtMzE1LDcgKzMyMCw3IEBACiAgICAgICAgIHRhc2tfYmF0Y2hlcyA9IFBvb2wuX2dldF90YXNrcyhmdW5jLCBpdGVyYWJsZSwgY2h1bmtzaXplKQogICAgICAgICByZXN1bHQgPSBNYXBSZXN1bHQoc2VsZi5fY2FjaGUsIGNodW5rc2l6ZSwgbGVuKGl0ZXJhYmxlKSwgY2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jYWxsYmFjaz1lcnJvcl9jYWxsYmFjaykKLSAgICAgICAgc2VsZi5fdGFza3F1ZXVlLnB1dCgoKChyZXN1bHQuX2pvYiwgaSwgbWFwc3RhciwgKHgsKSwge30pCisgICAgICAgIHNlbGYuX3Rhc2txdWV1ZS5wdXQoKCgocmVzdWx0Ll9qb2IsIGksIG1hcHBlciwgKHgsKSwge30pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSwgeCBpbiBlbnVtZXJhdGUodGFza19iYXRjaGVzKSksIE5vbmUpKQogICAgICAgICByZXR1cm4gcmVzdWx0CiAKQEAgLTUxOSw2ICs1MjQsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgZGVidWcoJ2NsZWFuaW5nIHVwIHdvcmtlciAlZCcgJSBwLnBpZCkKICAgICAgICAgICAgICAgICAgICAgcC5qb2luKCkKIAorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6CisgICAgICAgIHNlbGYudGVybWluYXRlKCkKKwogIwogIyBDbGFzcyB3aG9zZSBpbnN0YW5jZXMgYXJlIHJldHVybmVkIGJ5IGBQb29sLmFwcGx5X2FzeW5jKClgCiAjCkBAIC01MjYsMzIgKzUzNywyNiBAQAogY2xhc3MgQXBwbHlSZXN1bHQob2JqZWN0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYWNoZSwgY2FsbGJhY2ssIGVycm9yX2NhbGxiYWNrKToKLSAgICAgICAgc2VsZi5fY29uZCA9IHRocmVhZGluZy5Db25kaXRpb24odGhyZWFkaW5nLkxvY2soKSkKKyAgICAgICAgc2VsZi5fZXZlbnQgPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICBzZWxmLl9qb2IgPSBuZXh0KGpvYl9jb3VudGVyKQogICAgICAgICBzZWxmLl9jYWNoZSA9IGNhY2hlCi0gICAgICAgIHNlbGYuX3JlYWR5ID0gRmFsc2UKICAgICAgICAgc2VsZi5fY2FsbGJhY2sgPSBjYWxsYmFjawogICAgICAgICBzZWxmLl9lcnJvcl9jYWxsYmFjayA9IGVycm9yX2NhbGxiYWNrCiAgICAgICAgIGNhY2hlW3NlbGYuX2pvYl0gPSBzZWxmCiAKICAgICBkZWYgcmVhZHkoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9yZWFkeQorICAgICAgICByZXR1cm4gc2VsZi5fZXZlbnQuaXNfc2V0KCkKIAogICAgIGRlZiBzdWNjZXNzZnVsKHNlbGYpOgotICAgICAgICBhc3NlcnQgc2VsZi5fcmVhZHkKKyAgICAgICAgYXNzZXJ0IHNlbGYucmVhZHkoKQogICAgICAgICByZXR1cm4gc2VsZi5fc3VjY2VzcwogCiAgICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lKToKLSAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgbm90IHNlbGYuX3JlYWR5OgotICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQud2FpdCh0aW1lb3V0KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKKyAgICAgICAgc2VsZi5fZXZlbnQud2FpdCh0aW1lb3V0KQogCiAgICAgZGVmIGdldChzZWxmLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICBzZWxmLndhaXQodGltZW91dCkKLSAgICAgICAgaWYgbm90IHNlbGYuX3JlYWR5OgorICAgICAgICBpZiBub3Qgc2VsZi5yZWFkeSgpOgogICAgICAgICAgICAgcmFpc2UgVGltZW91dEVycm9yCiAgICAgICAgIGlmIHNlbGYuX3N1Y2Nlc3M6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fdmFsdWUKQEAgLTU2NCwxMiArNTY5LDcgQEAKICAgICAgICAgICAgIHNlbGYuX2NhbGxiYWNrKHNlbGYuX3ZhbHVlKQogICAgICAgICBpZiBzZWxmLl9lcnJvcl9jYWxsYmFjayBhbmQgbm90IHNlbGYuX3N1Y2Nlc3M6CiAgICAgICAgICAgICBzZWxmLl9lcnJvcl9jYWxsYmFjayhzZWxmLl92YWx1ZSkKLSAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fcmVhZHkgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLl9jb25kLm5vdGlmeSgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQorICAgICAgICBzZWxmLl9ldmVudC5zZXQoKQogICAgICAgICBkZWwgc2VsZi5fY2FjaGVbc2VsZi5fam9iXQogCiAjCkBAIC01ODYsNyArNTg2LDcgQEAKICAgICAgICAgc2VsZi5fY2h1bmtzaXplID0gY2h1bmtzaXplCiAgICAgICAgIGlmIGNodW5rc2l6ZSA8PSAwOgogICAgICAgICAgICAgc2VsZi5fbnVtYmVyX2xlZnQgPSAwCi0gICAgICAgICAgICBzZWxmLl9yZWFkeSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuX2V2ZW50LnNldCgpCiAgICAgICAgICAgICBkZWwgY2FjaGVbc2VsZi5fam9iXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fbnVtYmVyX2xlZnQgPSBsZW5ndGgvL2NodW5rc2l6ZSArIGJvb2wobGVuZ3RoICUgY2h1bmtzaXplKQpAQCAtNjAwLDI0ICs2MDAsMTQgQEAKICAgICAgICAgICAgICAgICBpZiBzZWxmLl9jYWxsYmFjazoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FsbGJhY2soc2VsZi5fdmFsdWUpCiAgICAgICAgICAgICAgICAgZGVsIHNlbGYuX2NhY2hlW3NlbGYuX2pvYl0KLSAgICAgICAgICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZHkgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQubm90aWZ5KCkKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuX2V2ZW50LnNldCgpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9zdWNjZXNzID0gRmFsc2UKICAgICAgICAgICAgIHNlbGYuX3ZhbHVlID0gcmVzdWx0CiAgICAgICAgICAgICBpZiBzZWxmLl9lcnJvcl9jYWxsYmFjazoKICAgICAgICAgICAgICAgICBzZWxmLl9lcnJvcl9jYWxsYmFjayhzZWxmLl92YWx1ZSkKICAgICAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCi0gICAgICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuX3JlYWR5ID0gVHJ1ZQotICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQubm90aWZ5KCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKKyAgICAgICAgICAgIHNlbGYuX2V2ZW50LnNldCgpCiAKICMKICMgQ2xhc3Mgd2hvc2UgaW5zdGFuY2VzIGFyZSByZXR1cm5lZCBieSBgUG9vbC5pbWFwKClgCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Byb2Nlc3MucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3Byb2Nlc3MucHkKaW5kZXggMzI2MmI1MC4uODkzNTA3YiAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9wcm9jZXNzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcHJvY2Vzcy5weQpAQCAtNCwzMiArNCw3IEBACiAjIG11bHRpcHJvY2Vzc2luZy9wcm9jZXNzLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAogX19hbGxfXyA9IFsnUHJvY2VzcycsICdjdXJyZW50X3Byb2Nlc3MnLCAnYWN0aXZlX2NoaWxkcmVuJ10KQEAgLTkyLDEyICs2NywxNiBAQAogICAgICcnJwogICAgIF9Qb3BlbiA9IE5vbmUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBncm91cD1Ob25lLCB0YXJnZXQ9Tm9uZSwgbmFtZT1Ob25lLCBhcmdzPSgpLCBrd2FyZ3M9e30pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBncm91cD1Ob25lLCB0YXJnZXQ9Tm9uZSwgbmFtZT1Ob25lLCBhcmdzPSgpLCBrd2FyZ3M9e30sCisgICAgICAgICAgICAgICAgICosIGRhZW1vbj1Ob25lKToKICAgICAgICAgYXNzZXJ0IGdyb3VwIGlzIE5vbmUsICdncm91cCBhcmd1bWVudCBtdXN0IGJlIE5vbmUgZm9yIG5vdycKICAgICAgICAgY291bnQgPSBuZXh0KF9jdXJyZW50X3Byb2Nlc3MuX2NvdW50ZXIpCiAgICAgICAgIHNlbGYuX2lkZW50aXR5ID0gX2N1cnJlbnRfcHJvY2Vzcy5faWRlbnRpdHkgKyAoY291bnQsKQogICAgICAgICBzZWxmLl9hdXRoa2V5ID0gX2N1cnJlbnRfcHJvY2Vzcy5fYXV0aGtleQotICAgICAgICBzZWxmLl9kYWVtb25pYyA9IF9jdXJyZW50X3Byb2Nlc3MuX2RhZW1vbmljCisgICAgICAgIGlmIGRhZW1vbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2RhZW1vbmljID0gZGFlbW9uCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9kYWVtb25pYyA9IF9jdXJyZW50X3Byb2Nlc3MuX2RhZW1vbmljCiAgICAgICAgIHNlbGYuX3RlbXBkaXIgPSBfY3VycmVudF9wcm9jZXNzLl90ZW1wZGlyCiAgICAgICAgIHNlbGYuX3BhcmVudF9waWQgPSBvcy5nZXRwaWQoKQogICAgICAgICBzZWxmLl9wb3BlbiA9IE5vbmUKQEAgLTEzMCw2ICsxMDksNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZnJvbSAuZm9ya2luZyBpbXBvcnQgUG9wZW4KICAgICAgICAgc2VsZi5fcG9wZW4gPSBQb3BlbihzZWxmKQorICAgICAgICBzZWxmLl9zZW50aW5lbCA9IHNlbGYuX3BvcGVuLnNlbnRpbmVsCiAgICAgICAgIF9jdXJyZW50X3Byb2Nlc3MuX2NoaWxkcmVuLmFkZChzZWxmKQogCiAgICAgZGVmIHRlcm1pbmF0ZShzZWxmKToKQEAgLTIxNiw2ICsxOTYsMTcgQEAKIAogICAgIHBpZCA9IGlkZW50CiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2VudGluZWwoc2VsZik6CisgICAgICAgICcnJworICAgICAgICBSZXR1cm4gYSBmaWxlIGRlc2NyaXB0b3IgKFVuaXgpIG9yIGhhbmRsZSAoV2luZG93cykgc3VpdGFibGUgZm9yCisgICAgICAgIHdhaXRpbmcgZm9yIHByb2Nlc3MgdGVybWluYXRpb24uCisgICAgICAgICcnJworICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2VudGluZWwKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicHJvY2VzcyBub3Qgc3RhcnRlZCIpCisKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIGlmIHNlbGYgaXMgX2N1cnJlbnRfcHJvY2VzczoKICAgICAgICAgICAgIHN0YXR1cyA9ICdzdGFydGVkJwpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weQppbmRleCA1MWQ5OTEyLi4zNzI3MWZiIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weQpAQCAtNCwzMiArNCw3IEBACiAjIG11bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBfX2FsbF9fID0gWydRdWV1ZScsICdTaW1wbGVRdWV1ZScsICdKb2luYWJsZVF1ZXVlJ10KQEAgLTM5LDEyICsxNCwxMiBAQAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgdGltZQotaW1wb3J0IGF0ZXhpdAogaW1wb3J0IHdlYWtyZWYKK2ltcG9ydCBlcnJubwogCiBmcm9tIHF1ZXVlIGltcG9ydCBFbXB0eSwgRnVsbAogaW1wb3J0IF9tdWx0aXByb2Nlc3NpbmcKLWZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBQaXBlCitmcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCBQaXBlCiBmcm9tIG11bHRpcHJvY2Vzc2luZy5zeW5jaHJvbml6ZSBpbXBvcnQgTG9jaywgQm91bmRlZFNlbWFwaG9yZSwgU2VtYXBob3JlLCBDb25kaXRpb24KIGZyb20gbXVsdGlwcm9jZXNzaW5nLnV0aWwgaW1wb3J0IGRlYnVnLCBpbmZvLCBGaW5hbGl6ZSwgcmVnaXN0ZXJfYWZ0ZXJfZm9yawogZnJvbSBtdWx0aXByb2Nlc3NpbmcuZm9ya2luZyBpbXBvcnQgYXNzZXJ0X3NwYXduaW5nCkBAIC02Nyw2ICs0Miw4IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl93bG9jayA9IExvY2soKQogICAgICAgICBzZWxmLl9zZW0gPSBCb3VuZGVkU2VtYXBob3JlKG1heHNpemUpCisgICAgICAgICMgRm9yIHVzZSBieSBjb25jdXJyZW50LmZ1dHVyZXMKKyAgICAgICAgc2VsZi5faWdub3JlX2VwaXBlID0gRmFsc2UKIAogICAgICAgICBzZWxmLl9hZnRlcl9mb3JrKCkKIApAQCAtNzUsMTEgKzUyLDExIEBACiAKICAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgogICAgICAgICBhc3NlcnRfc3Bhd25pbmcoc2VsZikKLSAgICAgICAgcmV0dXJuIChzZWxmLl9tYXhzaXplLCBzZWxmLl9yZWFkZXIsIHNlbGYuX3dyaXRlciwKKyAgICAgICAgcmV0dXJuIChzZWxmLl9pZ25vcmVfZXBpcGUsIHNlbGYuX21heHNpemUsIHNlbGYuX3JlYWRlciwgc2VsZi5fd3JpdGVyLAogICAgICAgICAgICAgICAgIHNlbGYuX3Jsb2NrLCBzZWxmLl93bG9jaywgc2VsZi5fc2VtLCBzZWxmLl9vcGlkKQogCiAgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6Ci0gICAgICAgIChzZWxmLl9tYXhzaXplLCBzZWxmLl9yZWFkZXIsIHNlbGYuX3dyaXRlciwKKyAgICAgICAgKHNlbGYuX2lnbm9yZV9lcGlwZSwgc2VsZi5fbWF4c2l6ZSwgc2VsZi5fcmVhZGVyLCBzZWxmLl93cml0ZXIsCiAgICAgICAgICBzZWxmLl9ybG9jaywgc2VsZi5fd2xvY2ssIHNlbGYuX3NlbSwgc2VsZi5fb3BpZCkgPSBzdGF0ZQogICAgICAgICBzZWxmLl9hZnRlcl9mb3JrKCkKIApAQCAtMTgyLDcgKzE1OSw3IEBACiAgICAgICAgIHNlbGYuX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQoCiAgICAgICAgICAgICB0YXJnZXQ9UXVldWUuX2ZlZWQsCiAgICAgICAgICAgICBhcmdzPShzZWxmLl9idWZmZXIsIHNlbGYuX25vdGVtcHR5LCBzZWxmLl9zZW5kLAotICAgICAgICAgICAgICAgICAgc2VsZi5fd2xvY2ssIHNlbGYuX3dyaXRlci5jbG9zZSksCisgICAgICAgICAgICAgICAgICBzZWxmLl93bG9jaywgc2VsZi5fd3JpdGVyLmNsb3NlLCBzZWxmLl9pZ25vcmVfZXBpcGUpLAogICAgICAgICAgICAgbmFtZT0nUXVldWVGZWVkZXJUaHJlYWQnCiAgICAgICAgICAgICApCiAgICAgICAgIHNlbGYuX3RocmVhZC5kYWVtb24gPSBUcnVlCkBAIC0yMzMsNyArMjEwLDcgQEAKICAgICAgICAgICAgIG5vdGVtcHR5LnJlbGVhc2UoKQogCiAgICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfZmVlZChidWZmZXIsIG5vdGVtcHR5LCBzZW5kLCB3cml0ZWxvY2ssIGNsb3NlKToKKyAgICBkZWYgX2ZlZWQoYnVmZmVyLCBub3RlbXB0eSwgc2VuZCwgd3JpdGVsb2NrLCBjbG9zZSwgaWdub3JlX2VwaXBlKToKICAgICAgICAgZGVidWcoJ3N0YXJ0aW5nIHRocmVhZCB0byBmZWVkIGRhdGEgdG8gcGlwZScpCiAgICAgICAgIGZyb20gLnV0aWwgaW1wb3J0IGlzX2V4aXRpbmcKIApAQCAtMjc1LDYgKzI1Miw4IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgaWYgaWdub3JlX2VwaXBlIGFuZCBnZXRhdHRyKGUsICdlcnJubycsIDApID09IGVycm5vLkVQSVBFOgorICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgIyBTaW5jZSB0aGlzIHJ1bnMgaW4gYSBkYWVtb24gdGhyZWFkIHRoZSByZXNvdXJjZXMgaXQgdXNlcwogICAgICAgICAgICAgIyBtYXkgYmUgYmVjb21lIHVudXNhYmxlIHdoaWxlIHRoZSBwcm9jZXNzIGlzIGNsZWFuaW5nIHVwLgogICAgICAgICAgICAgIyBXZSBpZ25vcmUgZXJyb3JzIHdoaWNoIGhhcHBlbiBhZnRlciB0aGUgcHJvY2VzcyBoYXMKQEAgLTM1Niw2ICszMzUsNyBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5fcmVhZGVyLCBzZWxmLl93cml0ZXIgPSBQaXBlKGR1cGxleD1GYWxzZSkKICAgICAgICAgc2VsZi5fcmxvY2sgPSBMb2NrKCkKKyAgICAgICAgc2VsZi5fcG9sbCA9IHNlbGYuX3JlYWRlci5wb2xsCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICAgICAgc2VsZi5fd2xvY2sgPSBOb25lCiAgICAgICAgIGVsc2U6CkBAIC0zNjMsNyArMzQzLDcgQEAKICAgICAgICAgc2VsZi5fbWFrZV9tZXRob2RzKCkKIAogICAgIGRlZiBlbXB0eShzZWxmKToKLSAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9yZWFkZXIucG9sbCgpCisgICAgICAgIHJldHVybiBub3Qgc2VsZi5fcG9sbCgpCiAKICAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgogICAgICAgICBhc3NlcnRfc3Bhd25pbmcoc2VsZikKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVkdWN0aW9uLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkKaW5kZXggNmU1ZTViYy4uNjU2ZmE4ZiAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkKQEAgLTUsNTMgKzUsMjkgQEAKICMgbXVsdGlwcm9jZXNzaW5nL3JlZHVjdGlvbi5weQogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvbnRyaWJ1dG9ycyBtYXkgYmUKLSMgICAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSMgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0jIFNVQ0ggREFNQUdFLgorIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiAjCiAKLV9fYWxsX18gPSBbXQorX19hbGxfXyA9IFsncmVkdWNlX3NvY2tldCcsICdyZWR1Y2VfY29ubmVjdGlvbicsICdzZW5kX2hhbmRsZScsICdyZWN2X2hhbmRsZSddCiAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHNvY2tldAogaW1wb3J0IHRocmVhZGluZworaW1wb3J0IHN0cnVjdAoraW1wb3J0IHNpZ25hbAogCi1pbXBvcnQgX211bHRpcHJvY2Vzc2luZwogZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IGN1cnJlbnRfcHJvY2VzcwotZnJvbSBtdWx0aXByb2Nlc3NpbmcuZm9ya2luZyBpbXBvcnQgUG9wZW4sIGR1cGxpY2F0ZSwgY2xvc2UsIEZvcmtpbmdQaWNrbGVyCiBmcm9tIG11bHRpcHJvY2Vzc2luZy51dGlsIGltcG9ydCByZWdpc3Rlcl9hZnRlcl9mb3JrLCBkZWJ1Zywgc3ViX2RlYnVnCi1mcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCBDbGllbnQsIExpc3RlbmVyCitmcm9tIG11bHRpcHJvY2Vzc2luZy51dGlsIGltcG9ydCBpc19leGl0aW5nLCBzdWJfd2FybmluZwogCiAKICMKICMKICMKIAotaWYgbm90KHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInIG9yIGhhc2F0dHIoX211bHRpcHJvY2Vzc2luZywgJ3JlY3ZmZCcpKToKK2lmIG5vdChzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyBvciAoaGFzYXR0cihzb2NrZXQsICdDTVNHX0xFTicpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNhdHRyKHNvY2tldCwgJ1NDTV9SSUdIVFMnKSkpOgogICAgIHJhaXNlIEltcG9ydEVycm9yKCdwaWNrbGluZyBvZiBjb25uZWN0aW9ucyBub3Qgc3VwcG9ydGVkJykKIAogIwpAQCAtNTksMTU3ICszNSwyNDYgQEAKICMKIAogaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgaW1wb3J0IF9zdWJwcm9jZXNzCi0gICAgZnJvbSBfbXVsdGlwcm9jZXNzaW5nIGltcG9ydCB3aW4zMgorICAgICMgV2luZG93cworICAgIF9fYWxsX18gKz0gWydyZWR1Y2VfcGlwZV9jb25uZWN0aW9uJ10KKyAgICBpbXBvcnQgX3dpbmFwaQogCiAgICAgZGVmIHNlbmRfaGFuZGxlKGNvbm4sIGhhbmRsZSwgZGVzdGluYXRpb25fcGlkKToKLSAgICAgICAgcHJvY2Vzc19oYW5kbGUgPSB3aW4zMi5PcGVuUHJvY2VzcygKLSAgICAgICAgICAgIHdpbjMyLlBST0NFU1NfQUxMX0FDQ0VTUywgRmFsc2UsIGRlc3RpbmF0aW9uX3BpZAotICAgICAgICAgICAgKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBuZXdfaGFuZGxlID0gZHVwbGljYXRlKGhhbmRsZSwgcHJvY2Vzc19oYW5kbGUpCi0gICAgICAgICAgICBjb25uLnNlbmQobmV3X2hhbmRsZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNsb3NlKHByb2Nlc3NfaGFuZGxlKQorICAgICAgICBkaCA9IER1cEhhbmRsZShoYW5kbGUsIF93aW5hcGkuRFVQTElDQVRFX1NBTUVfQUNDRVNTLCBkZXN0aW5hdGlvbl9waWQpCisgICAgICAgIGNvbm4uc2VuZChkaCkKIAogICAgIGRlZiByZWN2X2hhbmRsZShjb25uKToKLSAgICAgICAgcmV0dXJuIGNvbm4ucmVjdigpCisgICAgICAgIHJldHVybiBjb25uLnJlY3YoKS5kZXRhY2goKQogCi1lbHNlOgotICAgIGRlZiBzZW5kX2hhbmRsZShjb25uLCBoYW5kbGUsIGRlc3RpbmF0aW9uX3BpZCk6Ci0gICAgICAgIF9tdWx0aXByb2Nlc3Npbmcuc2VuZGZkKGNvbm4uZmlsZW5vKCksIGhhbmRsZSkKKyAgICBjbGFzcyBEdXBIYW5kbGUob2JqZWN0KToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhhbmRsZSwgYWNjZXNzLCBwaWQ9Tm9uZSk6CisgICAgICAgICAgICAjIGR1cGxpY2F0ZSBoYW5kbGUgZm9yIHByb2Nlc3Mgd2l0aCBnaXZlbiBwaWQKKyAgICAgICAgICAgIGlmIHBpZCBpcyBOb25lOgorICAgICAgICAgICAgICAgIHBpZCA9IG9zLmdldHBpZCgpCisgICAgICAgICAgICBwcm9jID0gX3dpbmFwaS5PcGVuUHJvY2Vzcyhfd2luYXBpLlBST0NFU1NfRFVQX0hBTkRMRSwgRmFsc2UsIHBpZCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGUgPSBfd2luYXBpLkR1cGxpY2F0ZUhhbmRsZSgKKyAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5HZXRDdXJyZW50UHJvY2VzcygpLAorICAgICAgICAgICAgICAgICAgICBoYW5kbGUsIHByb2MsIGFjY2VzcywgRmFsc2UsIDApCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUocHJvYykKKyAgICAgICAgICAgIHNlbGYuX2FjY2VzcyA9IGFjY2VzcworICAgICAgICAgICAgc2VsZi5fcGlkID0gcGlkCiAKLSAgICBkZWYgcmVjdl9oYW5kbGUoY29ubik6Ci0gICAgICAgIHJldHVybiBfbXVsdGlwcm9jZXNzaW5nLnJlY3ZmZChjb25uLmZpbGVubygpKQorICAgICAgICBkZWYgZGV0YWNoKHNlbGYpOgorICAgICAgICAgICAgIyByZXRyaWV2ZSBoYW5kbGUgZnJvbSBwcm9jZXNzIHdoaWNoIGN1cnJlbnRseSBvd25zIGl0CisgICAgICAgICAgICBpZiBzZWxmLl9waWQgPT0gb3MuZ2V0cGlkKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2hhbmRsZQorICAgICAgICAgICAgcHJvYyA9IF93aW5hcGkuT3BlblByb2Nlc3MoX3dpbmFwaS5QUk9DRVNTX0RVUF9IQU5ETEUsIEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGlkKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBfd2luYXBpLkR1cGxpY2F0ZUhhbmRsZSgKKyAgICAgICAgICAgICAgICAgICAgcHJvYywgc2VsZi5faGFuZGxlLCBfd2luYXBpLkdldEN1cnJlbnRQcm9jZXNzKCksCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2FjY2VzcywgRmFsc2UsIF93aW5hcGkuRFVQTElDQVRFX0NMT1NFX1NPVVJDRSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShwcm9jKQogCi0jCi0jIFN1cHBvcnQgZm9yIGEgcGVyLXByb2Nlc3Mgc2VydmVyIHRocmVhZCB3aGljaCBjYWNoZXMgcGlja2xlZCBoYW5kbGVzCi0jCisgICAgY2xhc3MgRHVwU29ja2V0KG9iamVjdCk6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrKToKKyAgICAgICAgICAgIG5ld19zb2NrID0gc29jay5kdXAoKQorICAgICAgICAgICAgZGVmIHNlbmQoY29ubiwgcGlkKToKKyAgICAgICAgICAgICAgICBzaGFyZSA9IG5ld19zb2NrLnNoYXJlKHBpZCkKKyAgICAgICAgICAgICAgICBjb25uLnNlbmRfYnl0ZXMoc2hhcmUpCisgICAgICAgICAgICBzZWxmLl9pZCA9IHJlc291cmNlX3NoYXJlci5yZWdpc3RlcihzZW5kLCBuZXdfc29jay5jbG9zZSkKIAotX2NhY2hlID0gc2V0KCkKKyAgICAgICAgZGVmIGRldGFjaChzZWxmKToKKyAgICAgICAgICAgIGNvbm4gPSByZXNvdXJjZV9zaGFyZXIuZ2V0X2Nvbm5lY3Rpb24oc2VsZi5faWQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2hhcmUgPSBjb25uLnJlY3ZfYnl0ZXMoKQorICAgICAgICAgICAgICAgIHJldHVybiBzb2NrZXQuZnJvbXNoYXJlKHNoYXJlKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBjb25uLmNsb3NlKCkKIAotZGVmIF9yZXNldChvYmopOgotICAgIGdsb2JhbCBfbG9jaywgX2xpc3RlbmVyLCBfY2FjaGUKLSAgICBmb3IgaCBpbiBfY2FjaGU6Ci0gICAgICAgIGNsb3NlKGgpCi0gICAgX2NhY2hlLmNsZWFyKCkKLSAgICBfbG9jayA9IHRocmVhZGluZy5Mb2NrKCkKLSAgICBfbGlzdGVuZXIgPSBOb25lCisgICAgZGVmIHJlZHVjZV9zb2NrZXQocyk6CisgICAgICAgIHJldHVybiByZWJ1aWxkX3NvY2tldCwgKER1cFNvY2tldChzKSwpCiAKLV9yZXNldChOb25lKQotcmVnaXN0ZXJfYWZ0ZXJfZm9yayhfcmVzZXQsIF9yZXNldCkKKyAgICBkZWYgcmVidWlsZF9zb2NrZXQoZHMpOgorICAgICAgICByZXR1cm4gZHMuZGV0YWNoKCkKIAotZGVmIF9nZXRfbGlzdGVuZXIoKToKLSAgICBnbG9iYWwgX2xpc3RlbmVyCisgICAgZGVmIHJlZHVjZV9jb25uZWN0aW9uKGNvbm4pOgorICAgICAgICBoYW5kbGUgPSBjb25uLmZpbGVubygpCisgICAgICAgIHdpdGggc29ja2V0LmZyb21mZChoYW5kbGUsIHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pIGFzIHM6CisgICAgICAgICAgICBkcyA9IER1cFNvY2tldChzKQorICAgICAgICAgICAgcmV0dXJuIHJlYnVpbGRfY29ubmVjdGlvbiwgKGRzLCBjb25uLnJlYWRhYmxlLCBjb25uLndyaXRhYmxlKQogCi0gICAgaWYgX2xpc3RlbmVyIGlzIE5vbmU6Ci0gICAgICAgIF9sb2NrLmFjcXVpcmUoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBfbGlzdGVuZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBkZWJ1Zygnc3RhcnRpbmcgbGlzdGVuZXIgYW5kIHRocmVhZCBmb3Igc2VuZGluZyBoYW5kbGVzJykKLSAgICAgICAgICAgICAgICBfbGlzdGVuZXIgPSBMaXN0ZW5lcihhdXRoa2V5PWN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXkpCi0gICAgICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PV9zZXJ2ZSkKLSAgICAgICAgICAgICAgICB0LmRhZW1vbiA9IFRydWUKLSAgICAgICAgICAgICAgICB0LnN0YXJ0KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIF9sb2NrLnJlbGVhc2UoKQotCi0gICAgcmV0dXJuIF9saXN0ZW5lcgotCi1kZWYgX3NlcnZlKCk6Ci0gICAgZnJvbSAudXRpbCBpbXBvcnQgaXNfZXhpdGluZywgc3ViX3dhcm5pbmcKLQotICAgIHdoaWxlIDE6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvbm4gPSBfbGlzdGVuZXIuYWNjZXB0KCkKLSAgICAgICAgICAgIGhhbmRsZV93YW50ZWQsIGRlc3RpbmF0aW9uX3BpZCA9IGNvbm4ucmVjdigpCi0gICAgICAgICAgICBfY2FjaGUucmVtb3ZlKGhhbmRsZV93YW50ZWQpCi0gICAgICAgICAgICBzZW5kX2hhbmRsZShjb25uLCBoYW5kbGVfd2FudGVkLCBkZXN0aW5hdGlvbl9waWQpCi0gICAgICAgICAgICBjbG9zZShoYW5kbGVfd2FudGVkKQotICAgICAgICAgICAgY29ubi5jbG9zZSgpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIGlmIG5vdCBpc19leGl0aW5nKCk6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IHRyYWNlYmFjawotICAgICAgICAgICAgICAgIHN1Yl93YXJuaW5nKAotICAgICAgICAgICAgICAgICAgICAndGhyZWFkIGZvciBzaGFyaW5nIGhhbmRsZXMgcmFpc2VkIGV4Y2VwdGlvbiA6XG4nICsKLSAgICAgICAgICAgICAgICAgICAgJy0nKjc5ICsgJ1xuJyArIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkgKyAnLScqNzkKLSAgICAgICAgICAgICAgICAgICAgKQotCi0jCi0jIEZ1bmN0aW9ucyB0byBiZSB1c2VkIGZvciBwaWNrbGluZy91bnBpY2tsaW5nIG9iamVjdHMgd2l0aCBoYW5kbGVzCi0jCi0KLWRlZiByZWR1Y2VfaGFuZGxlKGhhbmRsZSk6Ci0gICAgaWYgUG9wZW4udGhyZWFkX2lzX3NwYXduaW5nKCk6Ci0gICAgICAgIHJldHVybiAoTm9uZSwgUG9wZW4uZHVwbGljYXRlX2Zvcl9jaGlsZChoYW5kbGUpLCBUcnVlKQotICAgIGR1cF9oYW5kbGUgPSBkdXBsaWNhdGUoaGFuZGxlKQotICAgIF9jYWNoZS5hZGQoZHVwX2hhbmRsZSkKLSAgICBzdWJfZGVidWcoJ3JlZHVjaW5nIGhhbmRsZSAlZCcsIGhhbmRsZSkKLSAgICByZXR1cm4gKF9nZXRfbGlzdGVuZXIoKS5hZGRyZXNzLCBkdXBfaGFuZGxlLCBGYWxzZSkKLQotZGVmIHJlYnVpbGRfaGFuZGxlKHBpY2tsZWRfZGF0YSk6Ci0gICAgYWRkcmVzcywgaGFuZGxlLCBpbmhlcml0ZWQgPSBwaWNrbGVkX2RhdGEKLSAgICBpZiBpbmhlcml0ZWQ6Ci0gICAgICAgIHJldHVybiBoYW5kbGUKLSAgICBzdWJfZGVidWcoJ3JlYnVpbGRpbmcgaGFuZGxlICVkJywgaGFuZGxlKQotICAgIGNvbm4gPSBDbGllbnQoYWRkcmVzcywgYXV0aGtleT1jdXJyZW50X3Byb2Nlc3MoKS5hdXRoa2V5KQotICAgIGNvbm4uc2VuZCgoaGFuZGxlLCBvcy5nZXRwaWQoKSkpCi0gICAgbmV3X2hhbmRsZSA9IHJlY3ZfaGFuZGxlKGNvbm4pCi0gICAgY29ubi5jbG9zZSgpCi0gICAgcmV0dXJuIG5ld19oYW5kbGUKLQotIwotIyBSZWdpc3RlciBgX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uYCB3aXRoIGBGb3JraW5nUGlja2xlcmAKLSMKLQotZGVmIHJlZHVjZV9jb25uZWN0aW9uKGNvbm4pOgotICAgIHJoID0gcmVkdWNlX2hhbmRsZShjb25uLmZpbGVubygpKQotICAgIHJldHVybiByZWJ1aWxkX2Nvbm5lY3Rpb24sIChyaCwgY29ubi5yZWFkYWJsZSwgY29ubi53cml0YWJsZSkKLQotZGVmIHJlYnVpbGRfY29ubmVjdGlvbihyZWR1Y2VkX2hhbmRsZSwgcmVhZGFibGUsIHdyaXRhYmxlKToKLSAgICBoYW5kbGUgPSByZWJ1aWxkX2hhbmRsZShyZWR1Y2VkX2hhbmRsZSkKLSAgICByZXR1cm4gX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKAotICAgICAgICBoYW5kbGUsIHJlYWRhYmxlPXJlYWRhYmxlLCB3cml0YWJsZT13cml0YWJsZQotICAgICAgICApCi0KLUZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbiwgcmVkdWNlX2Nvbm5lY3Rpb24pCi0KLSMKLSMgUmVnaXN0ZXIgYHNvY2tldC5zb2NrZXRgIHdpdGggYEZvcmtpbmdQaWNrbGVyYAotIwotCi1kZWYgZnJvbWZkKGZkLCBmYW1pbHksIHR5cGVfLCBwcm90bz0wKToKLSAgICBzID0gc29ja2V0LmZyb21mZChmZCwgZmFtaWx5LCB0eXBlXywgcHJvdG8pCi0gICAgaWYgcy5fX2NsYXNzX18gaXMgbm90IHNvY2tldC5zb2NrZXQ6Ci0gICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KF9zb2NrPXMpCi0gICAgcmV0dXJuIHMKLQotZGVmIHJlZHVjZV9zb2NrZXQocyk6Ci0gICAgcmVkdWNlZF9oYW5kbGUgPSByZWR1Y2VfaGFuZGxlKHMuZmlsZW5vKCkpCi0gICAgcmV0dXJuIHJlYnVpbGRfc29ja2V0LCAocmVkdWNlZF9oYW5kbGUsIHMuZmFtaWx5LCBzLnR5cGUsIHMucHJvdG8pCi0KLWRlZiByZWJ1aWxkX3NvY2tldChyZWR1Y2VkX2hhbmRsZSwgZmFtaWx5LCB0eXBlXywgcHJvdG8pOgotICAgIGZkID0gcmVidWlsZF9oYW5kbGUocmVkdWNlZF9oYW5kbGUpCi0gICAgX3NvY2sgPSBmcm9tZmQoZmQsIGZhbWlseSwgdHlwZV8sIHByb3RvKQotICAgIGNsb3NlKGZkKQotICAgIHJldHVybiBfc29jawotCi1Gb3JraW5nUGlja2xlci5yZWdpc3Rlcihzb2NrZXQuc29ja2V0LCByZWR1Y2Vfc29ja2V0KQotCi0jCi0jIFJlZ2lzdGVyIGBfbXVsdGlwcm9jZXNzaW5nLlBpcGVDb25uZWN0aW9uYCB3aXRoIGBGb3JraW5nUGlja2xlcmAKLSMKLQotaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgZGVmIHJlYnVpbGRfY29ubmVjdGlvbihkcywgcmVhZGFibGUsIHdyaXRhYmxlKToKKyAgICAgICAgZnJvbSAuY29ubmVjdGlvbiBpbXBvcnQgQ29ubmVjdGlvbgorICAgICAgICBzb2NrID0gZHMuZGV0YWNoKCkKKyAgICAgICAgcmV0dXJuIENvbm5lY3Rpb24oc29jay5kZXRhY2goKSwgcmVhZGFibGUsIHdyaXRhYmxlKQogCiAgICAgZGVmIHJlZHVjZV9waXBlX2Nvbm5lY3Rpb24oY29ubik6Ci0gICAgICAgIHJoID0gcmVkdWNlX2hhbmRsZShjb25uLmZpbGVubygpKQotICAgICAgICByZXR1cm4gcmVidWlsZF9waXBlX2Nvbm5lY3Rpb24sIChyaCwgY29ubi5yZWFkYWJsZSwgY29ubi53cml0YWJsZSkKKyAgICAgICAgYWNjZXNzID0gKChfd2luYXBpLkZJTEVfR0VORVJJQ19SRUFEIGlmIGNvbm4ucmVhZGFibGUgZWxzZSAwKSB8CisgICAgICAgICAgICAgICAgICAoX3dpbmFwaS5GSUxFX0dFTkVSSUNfV1JJVEUgaWYgY29ubi53cml0YWJsZSBlbHNlIDApKQorICAgICAgICBkaCA9IER1cEhhbmRsZShjb25uLmZpbGVubygpLCBhY2Nlc3MpCisgICAgICAgIHJldHVybiByZWJ1aWxkX3BpcGVfY29ubmVjdGlvbiwgKGRoLCBjb25uLnJlYWRhYmxlLCBjb25uLndyaXRhYmxlKQogCi0gICAgZGVmIHJlYnVpbGRfcGlwZV9jb25uZWN0aW9uKHJlZHVjZWRfaGFuZGxlLCByZWFkYWJsZSwgd3JpdGFibGUpOgotICAgICAgICBoYW5kbGUgPSByZWJ1aWxkX2hhbmRsZShyZWR1Y2VkX2hhbmRsZSkKLSAgICAgICAgcmV0dXJuIF9tdWx0aXByb2Nlc3NpbmcuUGlwZUNvbm5lY3Rpb24oCi0gICAgICAgICAgICBoYW5kbGUsIHJlYWRhYmxlPXJlYWRhYmxlLCB3cml0YWJsZT13cml0YWJsZQotICAgICAgICAgICAgKQorICAgIGRlZiByZWJ1aWxkX3BpcGVfY29ubmVjdGlvbihkaCwgcmVhZGFibGUsIHdyaXRhYmxlKToKKyAgICAgICAgZnJvbSAuY29ubmVjdGlvbiBpbXBvcnQgUGlwZUNvbm5lY3Rpb24KKyAgICAgICAgaGFuZGxlID0gZGguZGV0YWNoKCkKKyAgICAgICAgcmV0dXJuIFBpcGVDb25uZWN0aW9uKGhhbmRsZSwgcmVhZGFibGUsIHdyaXRhYmxlKQogCi0gICAgRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIoX211bHRpcHJvY2Vzc2luZy5QaXBlQ29ubmVjdGlvbiwgcmVkdWNlX3BpcGVfY29ubmVjdGlvbikKK2Vsc2U6CisgICAgIyBVbml4CisKKyAgICAjIE9uIE1hY09TWCB3ZSBzaG91bGQgYWNrbm93bGVkZ2UgcmVjZWlwdCBvZiBmZHMgLS0gc2VlIElzc3VlMTQ2NjkKKyAgICBBQ0tOT1dMRURHRSA9IHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJworCisgICAgZGVmIHNlbmRfaGFuZGxlKGNvbm4sIGhhbmRsZSwgZGVzdGluYXRpb25fcGlkKToKKyAgICAgICAgd2l0aCBzb2NrZXQuZnJvbWZkKGNvbm4uZmlsZW5vKCksIHNvY2tldC5BRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0pIGFzIHM6CisgICAgICAgICAgICBzLnNlbmRtc2coW2IneCddLCBbKHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU0NNX1JJR0hUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0LnBhY2soIkBpIiwgaGFuZGxlKSldKQorICAgICAgICBpZiBBQ0tOT1dMRURHRSBhbmQgY29ubi5yZWN2X2J5dGVzKCkgIT0gYidBQ0snOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdkaWQgbm90IHJlY2VpdmUgYWNrbm93bGVkZ2VtZW50IG9mIGZkJykKKworICAgIGRlZiByZWN2X2hhbmRsZShjb25uKToKKyAgICAgICAgc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZSgiQGkiKQorICAgICAgICB3aXRoIHNvY2tldC5mcm9tZmQoY29ubi5maWxlbm8oKSwgc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkgYXMgczoKKyAgICAgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzLnJlY3Ztc2coMSwgc29ja2V0LkNNU0dfTEVOKHNpemUpKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIEFDS05PV0xFREdFOgorICAgICAgICAgICAgICAgICAgICBjb25uLnNlbmRfYnl0ZXMoYidBQ0snKQorICAgICAgICAgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gYW5jZGF0YVswXQorICAgICAgICAgICAgICAgIGlmIChjbXNnX2xldmVsID09IHNvY2tldC5TT0xfU09DS0VUIGFuZAorICAgICAgICAgICAgICAgICAgICBjbXNnX3R5cGUgPT0gc29ja2V0LlNDTV9SSUdIVFMpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RydWN0LnVucGFjaygiQGkiLCBjbXNnX2RhdGFbOnNpemVdKVswXQorICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBJbmRleEVycm9yLCBzdHJ1Y3QuZXJyb3IpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignSW52YWxpZCBkYXRhIHJlY2VpdmVkJykKKworICAgIGNsYXNzIER1cEZkKG9iamVjdCk6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmZCk6CisgICAgICAgICAgICBuZXdfZmQgPSBvcy5kdXAoZmQpCisgICAgICAgICAgICBkZWYgc2VuZChjb25uLCBwaWQpOgorICAgICAgICAgICAgICAgIHNlbmRfaGFuZGxlKGNvbm4sIG5ld19mZCwgcGlkKQorICAgICAgICAgICAgZGVmIGNsb3NlKCk6CisgICAgICAgICAgICAgICAgb3MuY2xvc2UobmV3X2ZkKQorICAgICAgICAgICAgc2VsZi5faWQgPSByZXNvdXJjZV9zaGFyZXIucmVnaXN0ZXIoc2VuZCwgY2xvc2UpCisKKyAgICAgICAgZGVmIGRldGFjaChzZWxmKToKKyAgICAgICAgICAgIGNvbm4gPSByZXNvdXJjZV9zaGFyZXIuZ2V0X2Nvbm5lY3Rpb24oc2VsZi5faWQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlY3ZfaGFuZGxlKGNvbm4pCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQorCisgICAgZGVmIHJlZHVjZV9zb2NrZXQocyk6CisgICAgICAgIGRmID0gRHVwRmQocy5maWxlbm8oKSkKKyAgICAgICAgcmV0dXJuIHJlYnVpbGRfc29ja2V0LCAoZGYsIHMuZmFtaWx5LCBzLnR5cGUsIHMucHJvdG8pCisKKyAgICBkZWYgcmVidWlsZF9zb2NrZXQoZGYsIGZhbWlseSwgdHlwZSwgcHJvdG8pOgorICAgICAgICBmZCA9IGRmLmRldGFjaCgpCisgICAgICAgIHMgPSBzb2NrZXQuZnJvbWZkKGZkLCBmYW1pbHksIHR5cGUsIHByb3RvKQorICAgICAgICBvcy5jbG9zZShmZCkKKyAgICAgICAgcmV0dXJuIHMKKworICAgIGRlZiByZWR1Y2VfY29ubmVjdGlvbihjb25uKToKKyAgICAgICAgZGYgPSBEdXBGZChjb25uLmZpbGVubygpKQorICAgICAgICByZXR1cm4gcmVidWlsZF9jb25uZWN0aW9uLCAoZGYsIGNvbm4ucmVhZGFibGUsIGNvbm4ud3JpdGFibGUpCisKKyAgICBkZWYgcmVidWlsZF9jb25uZWN0aW9uKGRmLCByZWFkYWJsZSwgd3JpdGFibGUpOgorICAgICAgICBmcm9tIC5jb25uZWN0aW9uIGltcG9ydCBDb25uZWN0aW9uCisgICAgICAgIGZkID0gZGYuZGV0YWNoKCkKKyAgICAgICAgcmV0dXJuIENvbm5lY3Rpb24oZmQsIHJlYWRhYmxlLCB3cml0YWJsZSkKKworIworIyBTZXJ2ZXIgd2hpY2ggc2hhcmVzIHJlZ2lzdGVyZWQgcmVzb3VyY2VzIHdpdGggY2xpZW50cworIworCitjbGFzcyBSZXNvdXJjZVNoYXJlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fa2V5ID0gMAorICAgICAgICBzZWxmLl9jYWNoZSA9IHt9CisgICAgICAgIHNlbGYuX29sZF9sb2NrcyA9IFtdCisgICAgICAgIHNlbGYuX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisgICAgICAgIHNlbGYuX2xpc3RlbmVyID0gTm9uZQorICAgICAgICBzZWxmLl9hZGRyZXNzID0gTm9uZQorICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisgICAgICAgIHJlZ2lzdGVyX2FmdGVyX2Zvcmsoc2VsZiwgUmVzb3VyY2VTaGFyZXIuX2FmdGVyZm9yaykKKworICAgIGRlZiByZWdpc3RlcihzZWxmLCBzZW5kLCBjbG9zZSk6CisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYuX2FkZHJlc3MgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9zdGFydCgpCisgICAgICAgICAgICBzZWxmLl9rZXkgKz0gMQorICAgICAgICAgICAgc2VsZi5fY2FjaGVbc2VsZi5fa2V5XSA9IChzZW5kLCBjbG9zZSkKKyAgICAgICAgICAgIHJldHVybiAoc2VsZi5fYWRkcmVzcywgc2VsZi5fa2V5KQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBnZXRfY29ubmVjdGlvbihpZGVudCk6CisgICAgICAgIGZyb20gLmNvbm5lY3Rpb24gaW1wb3J0IENsaWVudAorICAgICAgICBhZGRyZXNzLCBrZXkgPSBpZGVudAorICAgICAgICBjID0gQ2xpZW50KGFkZHJlc3MsIGF1dGhrZXk9Y3VycmVudF9wcm9jZXNzKCkuYXV0aGtleSkKKyAgICAgICAgYy5zZW5kKChrZXksIG9zLmdldHBpZCgpKSkKKyAgICAgICAgcmV0dXJuIGMKKworICAgIGRlZiBzdG9wKHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgIGZyb20gLmNvbm5lY3Rpb24gaW1wb3J0IENsaWVudAorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBpZiBzZWxmLl9hZGRyZXNzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGMgPSBDbGllbnQoc2VsZi5fYWRkcmVzcywgYXV0aGtleT1jdXJyZW50X3Byb2Nlc3MoKS5hdXRoa2V5KQorICAgICAgICAgICAgICAgIGMuc2VuZChOb25lKQorICAgICAgICAgICAgICAgIGMuY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuX3RocmVhZC5qb2luKHRpbWVvdXQpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fdGhyZWFkLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgICAgIHN1Yl93YXJuKCdSZXNvdXJjZVNoYXJlciB0aHJlYWQgZGlkIG5vdCBzdG9wIHdoZW4gYXNrZWQnKQorICAgICAgICAgICAgICAgIHNlbGYuX2xpc3RlbmVyLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisgICAgICAgICAgICAgICAgc2VsZi5fYWRkcmVzcyA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLl9saXN0ZW5lciA9IE5vbmUKKyAgICAgICAgICAgICAgICBmb3Iga2V5LCAoc2VuZCwgY2xvc2UpIGluIHNlbGYuX2NhY2hlLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgICAgIGNsb3NlKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZS5jbGVhcigpCisKKyAgICBkZWYgX2FmdGVyZm9yayhzZWxmKToKKyAgICAgICAgZm9yIGtleSwgKHNlbmQsIGNsb3NlKSBpbiBzZWxmLl9jYWNoZS5pdGVtcygpOgorICAgICAgICAgICAgY2xvc2UoKQorICAgICAgICBzZWxmLl9jYWNoZS5jbGVhcigpCisgICAgICAgICMgSWYgc2VsZi5fbG9jayB3YXMgbG9ja2VkIGF0IHRoZSB0aW1lIG9mIHRoZSBmb3JrLCBpdCBtYXkgYmUgYnJva2VuCisgICAgICAgICMgLS0gc2VlIGlzc3VlIDY3MjEuICBSZXBsYWNlIGl0IHdpdGhvdXQgbGV0dGluZyBpdCBiZSBnYydlZC4KKyAgICAgICAgc2VsZi5fb2xkX2xvY2tzLmFwcGVuZChzZWxmLl9sb2NrKQorICAgICAgICBzZWxmLl9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQorICAgICAgICBpZiBzZWxmLl9saXN0ZW5lciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2xpc3RlbmVyLmNsb3NlKCkKKyAgICAgICAgc2VsZi5fbGlzdGVuZXIgPSBOb25lCisgICAgICAgIHNlbGYuX2FkZHJlc3MgPSBOb25lCisgICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKKworICAgIGRlZiBfc3RhcnQoc2VsZik6CisgICAgICAgIGZyb20gLmNvbm5lY3Rpb24gaW1wb3J0IExpc3RlbmVyCisgICAgICAgIGFzc2VydCBzZWxmLl9saXN0ZW5lciBpcyBOb25lCisgICAgICAgIGRlYnVnKCdzdGFydGluZyBsaXN0ZW5lciBhbmQgdGhyZWFkIGZvciBzZW5kaW5nIGhhbmRsZXMnKQorICAgICAgICBzZWxmLl9saXN0ZW5lciA9IExpc3RlbmVyKGF1dGhrZXk9Y3VycmVudF9wcm9jZXNzKCkuYXV0aGtleSkKKyAgICAgICAgc2VsZi5fYWRkcmVzcyA9IHNlbGYuX2xpc3RlbmVyLmFkZHJlc3MKKyAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuX3NlcnZlKQorICAgICAgICB0LmRhZW1vbiA9IFRydWUKKyAgICAgICAgdC5zdGFydCgpCisgICAgICAgIHNlbGYuX3RocmVhZCA9IHQKKworICAgIGRlZiBfc2VydmUoc2VsZik6CisgICAgICAgIGlmIGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9zaWdtYXNrJyk6CisgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIHJhbmdlKDEsIHNpZ25hbC5OU0lHKSkKKyAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjb25uID0gc2VsZi5fbGlzdGVuZXIuYWNjZXB0KCkKKyAgICAgICAgICAgICAgICBtc2cgPSBjb25uLnJlY3YoKQorICAgICAgICAgICAgICAgIGlmIG1zZyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGtleSwgZGVzdGluYXRpb25fcGlkID0gbXNnCisgICAgICAgICAgICAgICAgc2VuZCwgY2xvc2UgPSBzZWxmLl9jYWNoZS5wb3Aoa2V5KQorICAgICAgICAgICAgICAgIHNlbmQoY29ubiwgZGVzdGluYXRpb25fcGlkKQorICAgICAgICAgICAgICAgIGNsb3NlKCkKKyAgICAgICAgICAgICAgICBjb25uLmNsb3NlKCkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBpZiBub3QgaXNfZXhpdGluZygpOgorICAgICAgICAgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCisgICAgICAgICAgICAgICAgICAgIHN1Yl93YXJuaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgJ3RocmVhZCBmb3Igc2hhcmluZyBoYW5kbGVzIHJhaXNlZCBleGNlcHRpb24gOlxuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAnLScqNzkgKyAnXG4nICsgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSArICctJyo3OQorICAgICAgICAgICAgICAgICAgICAgICAgKQorCityZXNvdXJjZV9zaGFyZXIgPSBSZXNvdXJjZVNoYXJlcigpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weSBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5CmluZGV4IDFlNjk0ZGEuLmEzNThlZDQgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5CkBAIC00LDM1ICs0LDkgQEAKICMgbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvbnRyaWJ1dG9ycyBtYXkgYmUKLSMgICAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSMgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0jIFNVQ0ggREFNQUdFLgorIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiAjCiAKLWltcG9ydCBzeXMKIGltcG9ydCBjdHlwZXMKIGltcG9ydCB3ZWFrcmVmCiAKQEAgLTg5LDcgKzYzLDcgQEAKICAgICAgICAgcmVzdWx0Ll9faW5pdF9fKCpzaXplX29yX2luaXRpYWxpemVyKQogICAgICAgICByZXR1cm4gcmVzdWx0CiAKLWRlZiBWYWx1ZSh0eXBlY29kZV9vcl90eXBlLCAqYXJncywgbG9jaz1Ob25lKToKK2RlZiBWYWx1ZSh0eXBlY29kZV9vcl90eXBlLCAqYXJncywgbG9jaz1UcnVlKToKICAgICAnJycKICAgICBSZXR1cm4gYSBzeW5jaHJvbml6YXRpb24gd3JhcHBlciBmb3IgYSBWYWx1ZQogICAgICcnJwpAQCAtMTAyLDEzICs3NiwxMCBAQAogICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiJyVyJyBoYXMgbm8gbWV0aG9kICdhY3F1aXJlJyIgJSBsb2NrKQogICAgIHJldHVybiBzeW5jaHJvbml6ZWQob2JqLCBsb2NrKQogCi1kZWYgQXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplciwgKiprd2RzKToKK2RlZiBBcnJheSh0eXBlY29kZV9vcl90eXBlLCBzaXplX29yX2luaXRpYWxpemVyLCAqLCBsb2NrPVRydWUpOgogICAgICcnJwogICAgIFJldHVybiBhIHN5bmNocm9uaXphdGlvbiB3cmFwcGVyIGZvciBhIFJhd0FycmF5CiAgICAgJycnCi0gICAgbG9jayA9IGt3ZHMucG9wKCdsb2NrJywgTm9uZSkKLSAgICBpZiBrd2RzOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd1bnJlY29nbml6ZWQga2V5d29yZCBhcmd1bWVudChzKTogJXMnICUgbGlzdChrd2RzLmtleXMoKSkpCiAgICAgb2JqID0gUmF3QXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplcikKICAgICBpZiBsb2NrIGlzIEZhbHNlOgogICAgICAgICByZXR1cm4gb2JqCkBAIC0xNTgsNyArMTI5LDggQEAKICAgICBpZiBsZW5ndGggaXMgbm90IE5vbmU6CiAgICAgICAgIHR5cGVfID0gdHlwZV8gKiBsZW5ndGgKICAgICBGb3JraW5nUGlja2xlci5yZWdpc3Rlcih0eXBlXywgcmVkdWNlX2N0eXBlKQotICAgIG9iaiA9IHR5cGVfLmZyb21fYWRkcmVzcyh3cmFwcGVyLmdldF9hZGRyZXNzKCkpCisgICAgYnVmID0gd3JhcHBlci5jcmVhdGVfbWVtb3J5dmlldygpCisgICAgb2JqID0gdHlwZV8uZnJvbV9idWZmZXIoYnVmKQogICAgIG9iai5fd3JhcHBlciA9IHdyYXBwZXIKICAgICByZXR1cm4gb2JqCiAKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3luY2hyb25pemUucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3N5bmNocm9uaXplLnB5CmluZGV4IDcwYWU4MjUuLjIyZWFiZTUgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3luY2hyb25pemUucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9zeW5jaHJvbml6ZS5weQpAQCAtNCwzMiArNCw3IEBACiAjIG11bHRpcHJvY2Vzc2luZy9zeW5jaHJvbml6ZS5weQogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvbnRyaWJ1dG9ycyBtYXkgYmUKLSMgICAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSMgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0jIFNVQ0ggREFNQUdFLgorIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiAjCiAKIF9fYWxsX18gPSBbCkBAIC0zNywxNSArMTIsMTMgQEAKICAgICBdCiAKIGltcG9ydCB0aHJlYWRpbmcKLWltcG9ydCBvcwogaW1wb3J0IHN5cwogCi1mcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUsIHNsZWVwIGFzIF9zbGVlcAotCiBpbXBvcnQgX211bHRpcHJvY2Vzc2luZwogZnJvbSBtdWx0aXByb2Nlc3NpbmcucHJvY2VzcyBpbXBvcnQgY3VycmVudF9wcm9jZXNzCi1mcm9tIG11bHRpcHJvY2Vzc2luZy51dGlsIGltcG9ydCBGaW5hbGl6ZSwgcmVnaXN0ZXJfYWZ0ZXJfZm9yaywgZGVidWcKK2Zyb20gbXVsdGlwcm9jZXNzaW5nLnV0aWwgaW1wb3J0IHJlZ2lzdGVyX2FmdGVyX2ZvcmssIGRlYnVnCiBmcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIGltcG9ydCBhc3NlcnRfc3Bhd25pbmcsIFBvcGVuCitmcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKIAogIyBUcnkgdG8gaW1wb3J0IHRoZSBtcC5zeW5jaHJvbml6ZSBtb2R1bGUgY2xlYW5seSwgaWYgaXQgZmFpbHMKICMgcmFpc2UgSW1wb3J0RXJyb3IgZm9yIHBsYXRmb3JtcyBsYWNraW5nIGEgd29ya2luZyBzZW1fb3BlbiBpbXBsZW1lbnRhdGlvbi4KQEAgLTI0Myw3ICsyMTYsNyBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgd2FpdCBmb3Igbm90aWZpY2F0aW9uIG9yIHRpbWVvdXQKLSAgICAgICAgICAgIHJldCA9IHNlbGYuX3dhaXRfc2VtYXBob3JlLmFjcXVpcmUoVHJ1ZSwgdGltZW91dCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl93YWl0X3NlbWFwaG9yZS5hY3F1aXJlKFRydWUsIHRpbWVvdXQpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAjIGluZGljYXRlIHRoYXQgdGhpcyB0aHJlYWQgaGFzIHdva2VuCiAgICAgICAgICAgICBzZWxmLl93b2tlbl9jb3VudC5yZWxlYXNlKCkKQEAgLTI1MSw3ICsyMjQsNiBAQAogICAgICAgICAgICAgIyByZWFjcXVpcmUgbG9jawogICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoY291bnQpOgogICAgICAgICAgICAgICAgIHNlbGYuX2xvY2suYWNxdWlyZSgpCi0gICAgICAgICAgICByZXR1cm4gcmV0CiAKICAgICBkZWYgbm90aWZ5KHNlbGYpOgogICAgICAgICBhc3NlcnQgc2VsZi5fbG9jay5fc2VtbG9jay5faXNfbWluZSgpLCAnbG9jayBpcyBub3Qgb3duZWQnCkBAIC0yOTMsNiArMjY1LDI0IEBACiAgICAgICAgICAgICB3aGlsZSBzZWxmLl93YWl0X3NlbWFwaG9yZS5hY3F1aXJlKEZhbHNlKToKICAgICAgICAgICAgICAgICBwYXNzCiAKKyAgICBkZWYgd2FpdF9mb3Ioc2VsZiwgcHJlZGljYXRlLCB0aW1lb3V0PU5vbmUpOgorICAgICAgICByZXN1bHQgPSBwcmVkaWNhdGUoKQorICAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBlbmR0aW1lID0gX3RpbWUoKSArIHRpbWVvdXQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVuZHRpbWUgPSBOb25lCisgICAgICAgICAgICB3YWl0dGltZSA9IE5vbmUKKyAgICAgICAgd2hpbGUgbm90IHJlc3VsdDoKKyAgICAgICAgICAgIGlmIGVuZHRpbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgd2FpdHRpbWUgPSBlbmR0aW1lIC0gX3RpbWUoKQorICAgICAgICAgICAgICAgIGlmIHdhaXR0aW1lIDw9IDA6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBzZWxmLndhaXQod2FpdHRpbWUpCisgICAgICAgICAgICByZXN1bHQgPSBwcmVkaWNhdGUoKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKICMKICMgRXZlbnQKICMKQEAgLTM0MywzICszMzMsNDMgQEAKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKKworIworIyBCYXJyaWVyCisjCisKK2NsYXNzIEJhcnJpZXIodGhyZWFkaW5nLkJhcnJpZXIpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnRpZXMsIGFjdGlvbj1Ob25lLCB0aW1lb3V0PU5vbmUpOgorICAgICAgICBpbXBvcnQgc3RydWN0CisgICAgICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLmhlYXAgaW1wb3J0IEJ1ZmZlcldyYXBwZXIKKyAgICAgICAgd3JhcHBlciA9IEJ1ZmZlcldyYXBwZXIoc3RydWN0LmNhbGNzaXplKCdpJykgKiAyKQorICAgICAgICBjb25kID0gQ29uZGl0aW9uKCkKKyAgICAgICAgc2VsZi5fX3NldHN0YXRlX18oKHBhcnRpZXMsIGFjdGlvbiwgdGltZW91dCwgY29uZCwgd3JhcHBlcikpCisgICAgICAgIHNlbGYuX3N0YXRlID0gMAorICAgICAgICBzZWxmLl9jb3VudCA9IDAKKworICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgorICAgICAgICAoc2VsZi5fcGFydGllcywgc2VsZi5fYWN0aW9uLCBzZWxmLl90aW1lb3V0LAorICAgICAgICAgc2VsZi5fY29uZCwgc2VsZi5fd3JhcHBlcikgPSBzdGF0ZQorICAgICAgICBzZWxmLl9hcnJheSA9IHNlbGYuX3dyYXBwZXIuY3JlYXRlX21lbW9yeXZpZXcoKS5jYXN0KCdpJykKKworICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CisgICAgICAgIHJldHVybiAoc2VsZi5fcGFydGllcywgc2VsZi5fYWN0aW9uLCBzZWxmLl90aW1lb3V0LAorICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQsIHNlbGYuX3dyYXBwZXIpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgX3N0YXRlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fYXJyYXlbMF0KKworICAgIEBfc3RhdGUuc2V0dGVyCisgICAgZGVmIF9zdGF0ZShzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX2FycmF5WzBdID0gdmFsdWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBfY291bnQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9hcnJheVsxXQorCisgICAgQF9jb3VudC5zZXR0ZXIKKyAgICBkZWYgX2NvdW50KHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi5fYXJyYXlbMV0gPSB2YWx1ZQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy91dGlsLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy91dGlsLnB5CmluZGV4IDYxYjA1MzMuLjcyMzg1YTggMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvdXRpbC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3V0aWwucHkKQEAgLTQsMzkgKzQsMTggQEAKICMgbXVsdGlwcm9jZXNzaW5nL3V0aWwucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCitpbXBvcnQgc3lzCitpbXBvcnQgZnVuY3Rvb2xzCitpbXBvcnQgb3MKIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCB3ZWFrcmVmCiBpbXBvcnQgYXRleGl0CiBpbXBvcnQgdGhyZWFkaW5nICAgICAgICAjIHdlIHdhbnQgdGhyZWFkaW5nIHRvIGluc3RhbGwgaXQncwogICAgICAgICAgICAgICAgICAgICAgICAgIyBjbGVhbnVwIGZ1bmN0aW9uIGJlZm9yZSBtdWx0aXByb2Nlc3NpbmcgZG9lcworZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBfYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzCiAKIGZyb20gbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MgaW1wb3J0IGN1cnJlbnRfcHJvY2VzcywgYWN0aXZlX2NoaWxkcmVuCiAKQEAgLTg0LDcgKzYzLDcgQEAKICAgICBSZXR1cm5zIGxvZ2dlciB1c2VkIGJ5IG11bHRpcHJvY2Vzc2luZwogICAgICcnJwogICAgIGdsb2JhbCBfbG9nZ2VyCi0gICAgaW1wb3J0IGxvZ2dpbmcsIGF0ZXhpdAorICAgIGltcG9ydCBsb2dnaW5nCiAKICAgICBsb2dnaW5nLl9hY3F1aXJlTG9jaygpCiAgICAgdHJ5OgpAQCAtMTgzLDEwICsxNjIsMTUgQEAKICAgICAgICAgc2VsZi5fYXJncyA9IGFyZ3MKICAgICAgICAgc2VsZi5fa3dhcmdzID0ga3dhcmdzIG9yIHt9CiAgICAgICAgIHNlbGYuX2tleSA9IChleGl0cHJpb3JpdHksIG5leHQoX2ZpbmFsaXplcl9jb3VudGVyKSkKKyAgICAgICAgc2VsZi5fcGlkID0gb3MuZ2V0cGlkKCkKIAogICAgICAgICBfZmluYWxpemVyX3JlZ2lzdHJ5W3NlbGYuX2tleV0gPSBzZWxmCiAKLSAgICBkZWYgX19jYWxsX18oc2VsZiwgd3I9Tm9uZSk6CisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHdyPU5vbmUsCisgICAgICAgICAgICAgICAgICMgTmVlZCB0byBiaW5kIHRoZXNlIGxvY2FsbHkgYmVjYXVzZSB0aGUgZ2xvYmFscyBjYW4gaGF2ZQorICAgICAgICAgICAgICAgICAjIGJlZW4gY2xlYXJlZCBhdCBzaHV0ZG93bgorICAgICAgICAgICAgICAgICBfZmluYWxpemVyX3JlZ2lzdHJ5PV9maW5hbGl6ZXJfcmVnaXN0cnksCisgICAgICAgICAgICAgICAgIHN1Yl9kZWJ1Zz1zdWJfZGVidWcsIGdldHBpZD1vcy5nZXRwaWQpOgogICAgICAgICAnJycKICAgICAgICAgUnVuIHRoZSBjYWxsYmFjayB1bmxlc3MgaXQgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgb3IgY2FuY2VsbGVkCiAgICAgICAgICcnJwpAQCAtMTk1LDkgKzE3OSwxMyBAQAogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICBzdWJfZGVidWcoJ2ZpbmFsaXplciBubyBsb25nZXIgcmVnaXN0ZXJlZCcpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzdWJfZGVidWcoJ2ZpbmFsaXplciBjYWxsaW5nICVzIHdpdGggYXJncyAlcyBhbmQga3dhcmdzICVzJywKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NhbGxiYWNrLCBzZWxmLl9hcmdzLCBzZWxmLl9rd2FyZ3MpCi0gICAgICAgICAgICByZXMgPSBzZWxmLl9jYWxsYmFjaygqc2VsZi5fYXJncywgKipzZWxmLl9rd2FyZ3MpCisgICAgICAgICAgICBpZiBzZWxmLl9waWQgIT0gZ2V0cGlkKCk6CisgICAgICAgICAgICAgICAgc3ViX2RlYnVnKCdmaW5hbGl6ZXIgaWdub3JlZCBiZWNhdXNlIGRpZmZlcmVudCBwcm9jZXNzJykKKyAgICAgICAgICAgICAgICByZXMgPSBOb25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHN1Yl9kZWJ1ZygnZmluYWxpemVyIGNhbGxpbmcgJXMgd2l0aCBhcmdzICVzIGFuZCBrd2FyZ3MgJXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsYmFjaywgc2VsZi5fYXJncywgc2VsZi5fa3dhcmdzKQorICAgICAgICAgICAgICAgIHJlcyA9IHNlbGYuX2NhbGxiYWNrKCpzZWxmLl9hcmdzLCAqKnNlbGYuX2t3YXJncykKICAgICAgICAgICAgIHNlbGYuX3dlYWtyZWYgPSBzZWxmLl9jYWxsYmFjayA9IHNlbGYuX2FyZ3MgPSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fa3dhcmdzID0gc2VsZi5fa2V5ID0gTm9uZQogICAgICAgICAgICAgcmV0dXJuIHJlcwpAQCAtMjk5LDE2ICsyODcsMjEgQEAKICAgICAgICAgaW5mbygncHJvY2VzcyBzaHV0dGluZyBkb3duJykKICAgICAgICAgZGVidWcoJ3J1bm5pbmcgYWxsICJhdGV4aXQiIGZpbmFsaXplcnMgd2l0aCBwcmlvcml0eSA+PSAwJykKICAgICAgICAgX3J1bl9maW5hbGl6ZXJzKDApCisKICAgICAgICAgaWYgY3VycmVudF9wcm9jZXNzKCkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAjIFdlIGNoZWNrIGlmIHRoZSBjdXJyZW50IHByb2Nlc3MgaXMgTm9uZSBoZXJlIGJlY2F1c2UgaWYKLSAgICAgICAgICAgICMgaXQncyBOb25lLCBhbnkgY2FsbCB0byBgYGFjdGl2ZV9jaGlsZHJlbigpYGAgd2lsbCByYWlzZSBhbgotICAgICAgICAgICAgIyBBdHRyaWJ1dGVFcnJvciAoYWN0aXZlX2NoaWxkcmVuIHdpbmRzIHVwIHRyeWluZyB0byBnZXQKLSAgICAgICAgICAgICMgYXR0cmlidXRlcyBmcm9tIHV0aWwuX2N1cnJlbnRfcHJvY2VzcykuICBUaGlzIGhhcHBlbnMgaW4gYQotICAgICAgICAgICAgIyB2YXJpZXR5IG9mIHNodXRkb3duIGNpcmN1bXN0YW5jZXMgdGhhdCBhcmUgbm90IHdlbGwtdW5kZXJzdG9vZAotICAgICAgICAgICAgIyBiZWNhdXNlIG1vZHVsZS1zY29wZSB2YXJpYWJsZXMgYXJlIG5vdCBhcHBhcmVudGx5IHN1cHBvc2VkIHRvCi0gICAgICAgICAgICAjIGJlIGRlc3Ryb3llZCB1bnRpbCBhZnRlciB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4gIEhvd2V2ZXIsCi0gICAgICAgICAgICAjIHRoZXkgYXJlIGluZGVlZCBkZXN0cm95ZWQgYmVmb3JlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLiAgU2VlCi0gICAgICAgICAgICAjIGlzc3VlcyAjOTc3NSBhbmQgIzE1ODgxLiAgQWxzbyByZWxhdGVkOiAjNDEwNiwgIzkyMDUsIGFuZCAjOTIwNy4KKyAgICAgICAgICAgICMgaXQncyBOb25lLCBhbnkgY2FsbCB0byBgYGFjdGl2ZV9jaGlsZHJlbigpYGAgd2lsbCByYWlzZQorICAgICAgICAgICAgIyBhbiBBdHRyaWJ1dGVFcnJvciAoYWN0aXZlX2NoaWxkcmVuIHdpbmRzIHVwIHRyeWluZyB0bworICAgICAgICAgICAgIyBnZXQgYXR0cmlidXRlcyBmcm9tIHV0aWwuX2N1cnJlbnRfcHJvY2VzcykuICBPbmUKKyAgICAgICAgICAgICMgc2l0dWF0aW9uIHdoZXJlIHRoaXMgY2FuIGhhcHBlbiBpcyBpZiBzb21lb25lIGhhcworICAgICAgICAgICAgIyBtYW5pcHVsYXRlZCBzeXMubW9kdWxlcywgY2F1c2luZyB0aGlzIG1vZHVsZSB0byBiZQorICAgICAgICAgICAgIyBnYXJiYWdlIGNvbGxlY3RlZC4gIFRoZSBkZXN0cnVjdG9yIGZvciB0aGUgbW9kdWxlIHR5cGUKKyAgICAgICAgICAgICMgdGhlbiByZXBsYWNlcyBhbGwgdmFsdWVzIGluIHRoZSBtb2R1bGUgZGljdCB3aXRoIE5vbmUuCisgICAgICAgICAgICAjIEZvciBpbnN0YW5jZSwgYWZ0ZXIgc2V0dXB0b29scyBydW5zIGEgdGVzdCBpdCByZXBsYWNlcworICAgICAgICAgICAgIyBzeXMubW9kdWxlcyB3aXRoIGEgY29weSBjcmVhdGVkIGVhcmxpZXIuICBTZWUgaXNzdWVzCisgICAgICAgICAgICAjICM5Nzc1IGFuZCAjMTU4ODEuICBBbHNvIHJlbGF0ZWQ6ICM0MTA2LCAjOTIwNSwgYW5kCisgICAgICAgICAgICAjICM5MjA3LgorCiAgICAgICAgICAgICBmb3IgcCBpbiBhY3RpdmVfY2hpbGRyZW4oKToKICAgICAgICAgICAgICAgICBpZiBwLl9kYWVtb25pYzoKICAgICAgICAgICAgICAgICAgICAgaW5mbygnY2FsbGluZyB0ZXJtaW5hdGUoKSBmb3IgZGFlbW9uICVzJywgcC5uYW1lKQpkaWZmIC0tZ2l0IGEvTGliL25udHBsaWIucHkgYi9MaWIvbm50cGxpYi5weQppbmRleCAzMmJmZmQ4Li4yZGU2ZWJkIDEwMDY0NAotLS0gYS9MaWIvbm50cGxpYi5weQorKysgYi9MaWIvbm50cGxpYi5weQpAQCAtMTY2LDcgKzE2Niw3IEBACiAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQodi5kZWNvZGUoZW5jIG9yICdhc2NpaScpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcGFydHMuYXBwZW5kKHYpCi0gICAgcmV0dXJuICcgJy5qb2luKHBhcnRzKQorICAgIHJldHVybiAnJy5qb2luKHBhcnRzKQogCiBkZWYgX3BhcnNlX292ZXJ2aWV3X2ZtdChsaW5lcyk6CiAgICAgIiIiUGFyc2UgYSBsaXN0IG9mIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHJlc3BvbnNlIHRvIExJU1QgT1ZFUlZJRVcuRk1UCkBAIC0zNTEsNiArMzUxLDIwIEBACiAgICAgICAgICMgTG9nIGluIGFuZCBlbmNyeXB0aW9uIHNldHVwIG9yZGVyIGlzIGxlZnQgdG8gc3ViY2xhc3Nlcy4KICAgICAgICAgc2VsZi5hdXRoZW50aWNhdGVkID0gRmFsc2UKIAorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICBpc19jb25uZWN0ZWQgPSBsYW1iZGE6IGhhc2F0dHIoc2VsZiwgImZpbGUiKQorICAgICAgICBpZiBpc19jb25uZWN0ZWQoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLnF1aXQoKQorICAgICAgICAgICAgZXhjZXB0IChzb2NrZXQuZXJyb3IsIEVPRkVycm9yKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGlmIGlzX2Nvbm5lY3RlZCgpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZSgpCisKICAgICBkZWYgZ2V0d2VsY29tZShzZWxmKToKICAgICAgICAgIiIiR2V0IHRoZSB3ZWxjb21lIG1lc3NhZ2UgZnJvbSB0aGUgc2VydmVyCiAgICAgICAgICh0aGlzIGlzIHJlYWQgYW5kIHNxdWlycmVsZWQgYXdheSBieSBfX2luaXRfXygpKS4KQEAgLTgxOSw3ICs4MzMsNyBAQAogICAgICAgICAtIGxpc3Q6IGxpc3Qgb2YgKG5hbWUsdGl0bGUpIHN0cmluZ3MiIiIKICAgICAgICAgd2FybmluZ3Mud2FybigiVGhlIFhHVElUTEUgZXh0ZW5zaW9uIGlzIG5vdCBhY3RpdmVseSB1c2VkLCAiCiAgICAgICAgICAgICAgICAgICAgICAgInVzZSBkZXNjcmlwdGlvbnMoKSBpbnN0ZWFkIiwKLSAgICAgICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgbGluZV9wYXQgPSByZS5jb21waWxlKCdeKFteIFx0XSspWyBcdF0rKC4qKSQnKQogICAgICAgICByZXNwLCByYXdfbGluZXMgPSBzZWxmLl9sb25nY21kc3RyaW5nKCdYR1RJVExFICcgKyBncm91cCwgZmlsZSkKICAgICAgICAgbGluZXMgPSBbXQpAQCAtODM3LDcgKzg1MSw3IEBACiAgICAgICAgIHBhdGg6IGRpcmVjdG9yeSBwYXRoIHRvIGFydGljbGUKICAgICAgICAgIiIiCiAgICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSBYUEFUSCBleHRlbnNpb24gaXMgbm90IGFjdGl2ZWx5IHVzZWQiLAotICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogCiAgICAgICAgIHJlc3AgPSBzZWxmLl9zaG9ydGNtZCgnWFBBVEggezB9Jy5mb3JtYXQoaWQpKQogICAgICAgICBpZiBub3QgcmVzcC5zdGFydHN3aXRoKCcyMjMnKToKZGlmZiAtLWdpdCBhL0xpYi9udW1iZXJzLnB5IGIvTGliL251bWJlcnMucHkKaW5kZXggZWNmYWQ3Yy4uYjIwNjQ1NyAxMDA2NDQKLS0tIGEvTGliL251bWJlcnMucHkKKysrIGIvTGliL251bWJlcnMucHkKQEAgLTUsNyArNSw3IEBACiAKIFRPRE86IEZpbGwgb3V0IG1vcmUgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBvbiB0aGUgb3BlcmF0b3JzLiIiIgogCi1mcm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QsIGFic3RyYWN0cHJvcGVydHkKK2Zyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZAogCiBfX2FsbF9fID0gWyJOdW1iZXIiLCAiQ29tcGxleCIsICJSZWFsIiwgIlJhdGlvbmFsIiwgIkludGVncmFsIl0KIApAQCAtNTAsNyArNTAsOCBAQAogICAgICAgICAiIiJUcnVlIGlmIHNlbGYgIT0gMC4gQ2FsbGVkIGZvciBib29sKHNlbGYpLiIiIgogICAgICAgICByZXR1cm4gc2VsZiAhPSAwCiAKLSAgICBAYWJzdHJhY3Rwcm9wZXJ0eQorICAgIEBwcm9wZXJ0eQorICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiByZWFsKHNlbGYpOgogICAgICAgICAiIiJSZXRyaWV2ZSB0aGUgcmVhbCBjb21wb25lbnQgb2YgdGhpcyBudW1iZXIuCiAKQEAgLTU4LDcgKzU5LDggQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAotICAgIEBhYnN0cmFjdHByb3BlcnR5CisgICAgQHByb3BlcnR5CisgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIGltYWcoc2VsZik6CiAgICAgICAgICIiIlJldHJpZXZlIHRoZSBpbWFnaW5hcnkgY29tcG9uZW50IG9mIHRoaXMgbnVtYmVyLgogCkBAIC0yNzIsMTEgKzI3NCwxMyBAQAogCiAgICAgX19zbG90c19fID0gKCkKIAotICAgIEBhYnN0cmFjdHByb3BlcnR5CisgICAgQHByb3BlcnR5CisgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIG51bWVyYXRvcihzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCi0gICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBAcHJvcGVydHkKKyAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgZGVub21pbmF0b3Ioc2VsZik6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIApkaWZmIC0tZ2l0IGEvTGliL29wY29kZS5weSBiL0xpYi9vcGNvZGUucHkKaW5kZXggOGUxNWQxMy4uYTYzOWZlMyAxMDA2NDQKLS0tIGEvTGliL29wY29kZS5weQorKysgYi9MaWIvb3Bjb2RlLnB5CkBAIC02LDcgKzYsNyBAQAogCiBfX2FsbF9fID0gWyJjbXBfb3AiLCAiaGFzY29uc3QiLCAiaGFzbmFtZSIsICJoYXNqcmVsIiwgImhhc2phYnMiLAogICAgICAgICAgICAiaGFzbG9jYWwiLCAiaGFzY29tcGFyZSIsICJoYXNmcmVlIiwgIm9wbmFtZSIsICJvcG1hcCIsCi0gICAgICAgICAgICJIQVZFX0FSR1VNRU5UIiwgIkVYVEVOREVEX0FSRyJdCisgICAgICAgICAgICJIQVZFX0FSR1VNRU5UIiwgIkVYVEVOREVEX0FSRyIsICJoYXNuYXJncyJdCiAKIGNtcF9vcCA9ICgnPCcsICc8PScsICc9PScsICchPScsICc+JywgJz49JywgJ2luJywgJ25vdCBpbicsICdpcycsCiAgICAgICAgICdpcyBub3QnLCAnZXhjZXB0aW9uIG1hdGNoJywgJ0JBRCcpCkBAIC0xOCw2ICsxOCw3IEBACiBoYXNsb2NhbCA9IFtdCiBoYXNjb21wYXJlID0gW10KIGhhc2ZyZWUgPSBbXQoraGFzbmFyZ3MgPSBbXQogCiBvcG1hcCA9IHt9CiBvcG5hbWUgPSBbJyddICogMjU2CkBAIC00Myw3ICs0NCw2IEBACiAjIEluc3RydWN0aW9uIG9wY29kZXMgZm9yIGNvbXBpbGVkIGNvZGUKICMgQmxhbmsgbGluZXMgY29ycmVzcG9uZCB0byBhdmFpbGFibGUgb3Bjb2RlcwogCi1kZWZfb3AoJ1NUT1BfQ09ERScsIDApCiBkZWZfb3AoJ1BPUF9UT1AnLCAxKQogZGVmX29wKCdST1RfVFdPJywgMikKIGRlZl9vcCgnUk9UX1RIUkVFJywgMykKQEAgLTg4LDYgKzg4LDcgQEAKIAogZGVmX29wKCdQUklOVF9FWFBSJywgNzApCiBkZWZfb3AoJ0xPQURfQlVJTERfQ0xBU1MnLCA3MSkKK2RlZl9vcCgnWUlFTERfRlJPTScsIDcyKQogCiBkZWZfb3AoJ0lOUExBQ0VfTFNISUZUJywgNzUpCiBkZWZfb3AoJ0lOUExBQ0VfUlNISUZUJywgNzYpCkBAIC0xNTIsNiArMTUzLDcgQEAKIAogZGVmX29wKCdSQUlTRV9WQVJBUkdTJywgMTMwKSAgICAjIE51bWJlciBvZiByYWlzZSBhcmd1bWVudHMgKDEsIDIsIG9yIDMpCiBkZWZfb3AoJ0NBTExfRlVOQ1RJT04nLCAxMzEpICAgICMgI2FyZ3MgKyAoI2t3YXJncyA8PCA4KQoraGFzbmFyZ3MuYXBwZW5kKDEzMSkKIGRlZl9vcCgnTUFLRV9GVU5DVElPTicsIDEzMikgICAgIyBOdW1iZXIgb2YgYXJncyB3aXRoIGRlZmF1bHQgdmFsdWVzCiBkZWZfb3AoJ0JVSUxEX1NMSUNFJywgMTMzKSAgICAgICMgTnVtYmVyIG9mIGl0ZW1zCiBkZWZfb3AoJ01BS0VfQ0xPU1VSRScsIDEzNCkKQEAgLTE2NSw4ICsxNjcsMTEgQEAKIGhhc2ZyZWUuYXBwZW5kKDEzOCkKIAogZGVmX29wKCdDQUxMX0ZVTkNUSU9OX1ZBUicsIDE0MCkgICAgICMgI2FyZ3MgKyAoI2t3YXJncyA8PCA4KQoraGFzbmFyZ3MuYXBwZW5kKDE0MCkKIGRlZl9vcCgnQ0FMTF9GVU5DVElPTl9LVycsIDE0MSkgICAgICAjICNhcmdzICsgKCNrd2FyZ3MgPDwgOCkKK2hhc25hcmdzLmFwcGVuZCgxNDEpCiBkZWZfb3AoJ0NBTExfRlVOQ1RJT05fVkFSX0tXJywgMTQyKSAgIyAjYXJncyArICgja3dhcmdzIDw8IDgpCitoYXNuYXJncy5hcHBlbmQoMTQyKQogCiBqcmVsX29wKCdTRVRVUF9XSVRIJywgMTQzKQogCmRpZmYgLS1naXQgYS9MaWIvb3B0cGFyc2UucHkgYi9MaWIvb3B0cGFyc2UucHkKaW5kZXggZDk3YTFmNy4uMzc3NjRkMyAxMDA2NDQKLS0tIGEvTGliL29wdHBhcnNlLnB5CisrKyBiL0xpYi9vcHRwYXJzZS5weQpAQCAtODYsMTAgKzg2LDE2IEBACiAjICAgSWQ6IGVycm9ycy5weSA1MDkgMjAwNi0wNC0yMCAwMDo1ODoyNFogZ3dhcmQKIAogdHJ5OgotICAgIGZyb20gZ2V0dGV4dCBpbXBvcnQgZ2V0dGV4dAorICAgIGZyb20gZ2V0dGV4dCBpbXBvcnQgZ2V0dGV4dCwgbmdldHRleHQKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBkZWYgZ2V0dGV4dChtZXNzYWdlKToKICAgICAgICAgcmV0dXJuIG1lc3NhZ2UKKworICAgIGRlZiBuZ2V0dGV4dChzaW5ndWxhciwgcGx1cmFsLCBuKToKKyAgICAgICAgaWYgbiA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIHNpbmd1bGFyCisgICAgICAgIHJldHVybiBwbHVyYWwKKwogXyA9IGdldHRleHQKIAogCkBAIC00MTEsMTEgKzQxNyw4IEBACiBkZWYgX3BhcnNlX2ludCh2YWwpOgogICAgIHJldHVybiBfcGFyc2VfbnVtKHZhbCwgaW50KQogCi1kZWYgX3BhcnNlX2xvbmcodmFsKToKLSAgICByZXR1cm4gX3BhcnNlX251bSh2YWwsIGludCkKLQogX2J1aWx0aW5fY3Z0ID0geyAiaW50IiA6IChfcGFyc2VfaW50LCBfKCJpbnRlZ2VyIikpLAotICAgICAgICAgICAgICAgICAibG9uZyIgOiAoX3BhcnNlX2xvbmcsIF8oImxvbmcgaW50ZWdlciIpKSwKKyAgICAgICAgICAgICAgICAgImxvbmciIDogKF9wYXJzZV9pbnQsIF8oImludGVnZXIiKSksCiAgICAgICAgICAgICAgICAgICJmbG9hdCIgOiAoZmxvYXQsIF8oImZsb2F0aW5nLXBvaW50IikpLAogICAgICAgICAgICAgICAgICAiY29tcGxleCIgOiAoY29tcGxleCwgXygiY29tcGxleCIpKSB9CiAKQEAgLTE0ODMsMTEgKzE0ODYsMTAgQEAKICAgICAgICAgaWYgb3B0aW9uLnRha2VzX3ZhbHVlKCk6CiAgICAgICAgICAgICBuYXJncyA9IG9wdGlvbi5uYXJncwogICAgICAgICAgICAgaWYgbGVuKHJhcmdzKSA8IG5hcmdzOgotICAgICAgICAgICAgICAgIGlmIG5hcmdzID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoXygiJXMgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IikgJSBvcHQpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcihfKCIlcyBvcHRpb24gcmVxdWlyZXMgJWQgYXJndW1lbnRzIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChvcHQsIG5hcmdzKSkKKyAgICAgICAgICAgICAgICBzZWxmLmVycm9yKG5nZXR0ZXh0KAorICAgICAgICAgICAgICAgICAgICAiJShvcHRpb24pcyBvcHRpb24gcmVxdWlyZXMgJShudW1iZXIpZCBhcmd1bWVudCIsCisgICAgICAgICAgICAgICAgICAgICIlKG9wdGlvbilzIG9wdGlvbiByZXF1aXJlcyAlKG51bWJlcilkIGFyZ3VtZW50cyIsCisgICAgICAgICAgICAgICAgICAgIG5hcmdzKSAlIHsib3B0aW9uIjogb3B0LCAibnVtYmVyIjogbmFyZ3N9KQogICAgICAgICAgICAgZWxpZiBuYXJncyA9PSAxOgogICAgICAgICAgICAgICAgIHZhbHVlID0gcmFyZ3MucG9wKDApCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTUyMiwxMSArMTUyNCwxMCBAQAogCiAgICAgICAgICAgICAgICAgbmFyZ3MgPSBvcHRpb24ubmFyZ3MKICAgICAgICAgICAgICAgICBpZiBsZW4ocmFyZ3MpIDwgbmFyZ3M6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5hcmdzID09IDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yKF8oIiVzIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIpICUgb3B0KQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcihfKCIlcyBvcHRpb24gcmVxdWlyZXMgJWQgYXJndW1lbnRzIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAob3B0LCBuYXJncykpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IobmdldHRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICAiJShvcHRpb24pcyBvcHRpb24gcmVxdWlyZXMgJShudW1iZXIpZCBhcmd1bWVudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiJShvcHRpb24pcyBvcHRpb24gcmVxdWlyZXMgJShudW1iZXIpZCBhcmd1bWVudHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgbmFyZ3MpICUgeyJvcHRpb24iOiBvcHQsICJudW1iZXIiOiBuYXJnc30pCiAgICAgICAgICAgICAgICAgZWxpZiBuYXJncyA9PSAxOgogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHJhcmdzLnBvcCgwKQogICAgICAgICAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvb3MucHkgYi9MaWIvb3MucHkKaW5kZXggODFlMDM3YS4uZTRlYTE0MiAxMDA2NDQKLS0tIGEvTGliL29zLnB5CisrKyBiL0xpYi9vcy5weQpAQCAtMjQsMTMgKzI0LDE4IEBACiAjJwogCiBpbXBvcnQgc3lzLCBlcnJubworaW1wb3J0IHN0YXQgYXMgc3QKIAogX25hbWVzID0gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzCiAKICMgTm90ZTogIG1vcmUgbmFtZXMgYXJlIGFkZGVkIHRvIF9fYWxsX18gbGF0ZXIuCiBfX2FsbF9fID0gWyJhbHRzZXAiLCAiY3VyZGlyIiwgInBhcmRpciIsICJzZXAiLCAicGF0aHNlcCIsICJsaW5lc2VwIiwKLSAgICAgICAgICAgImRlZnBhdGgiLCAibmFtZSIsICJwYXRoIiwgImRldm51bGwiLAotICAgICAgICAgICAiU0VFS19TRVQiLCAiU0VFS19DVVIiLCAiU0VFS19FTkQiXQorICAgICAgICAgICAiZGVmcGF0aCIsICJuYW1lIiwgInBhdGgiLCAiZGV2bnVsbCIsICJTRUVLX1NFVCIsICJTRUVLX0NVUiIsCisgICAgICAgICAgICJTRUVLX0VORCIsICJmc2VuY29kZSIsICJmc2RlY29kZSIsICJnZXRfZXhlY19wYXRoIiwgImZkb3BlbiIsCisgICAgICAgICAgICJwb3BlbiIsICJleHRzZXAiXQorCitkZWYgX2V4aXN0cyhuYW1lKToKKyAgICByZXR1cm4gbmFtZSBpbiBnbG9iYWxzKCkKIAogZGVmIF9nZXRfZXhwb3J0c19saXN0KG1vZHVsZSk6CiAgICAgdHJ5OgpAQCAtMzgsMTkgKzQzLDIzIEBACiAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICByZXR1cm4gW24gZm9yIG4gaW4gZGlyKG1vZHVsZSkgaWYgblswXSAhPSAnXyddCiAKKyMgQW55IG5ldyBkZXBlbmRlbmNpZXMgb2YgdGhlIG9zIG1vZHVsZSBhbmQvb3IgY2hhbmdlcyBpbiBwYXRoIHNlcGFyYXRvcgorIyByZXF1aXJlcyB1cGRhdGluZyBpbXBvcnRsaWIgYXMgd2VsbC4KIGlmICdwb3NpeCcgaW4gX25hbWVzOgogICAgIG5hbWUgPSAncG9zaXgnCiAgICAgbGluZXNlcCA9ICdcbicKICAgICBmcm9tIHBvc2l4IGltcG9ydCAqCiAgICAgdHJ5OgogICAgICAgICBmcm9tIHBvc2l4IGltcG9ydCBfZXhpdAorICAgICAgICBfX2FsbF9fLmFwcGVuZCgnX2V4aXQnKQogICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgcGFzcwogICAgIGltcG9ydCBwb3NpeHBhdGggYXMgcGF0aAogCi0gICAgaW1wb3J0IHBvc2l4Ci0gICAgX19hbGxfXy5leHRlbmQoX2dldF9leHBvcnRzX2xpc3QocG9zaXgpKQotICAgIGRlbCBwb3NpeAorICAgIHRyeToKKyAgICAgICAgZnJvbSBwb3NpeCBpbXBvcnQgX2hhdmVfZnVuY3Rpb25zCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICBwYXNzCiAKIGVsaWYgJ250JyBpbiBfbmFtZXM6CiAgICAgbmFtZSA9ICdudCcKQEAgLTU4LDYgKzY3LDcgQEAKICAgICBmcm9tIG50IGltcG9ydCAqCiAgICAgdHJ5OgogICAgICAgICBmcm9tIG50IGltcG9ydCBfZXhpdAorICAgICAgICBfX2FsbF9fLmFwcGVuZCgnX2V4aXQnKQogICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgcGFzcwogICAgIGltcG9ydCBudHBhdGggYXMgcGF0aApAQCAtNjYsMTIgKzc2LDE4IEBACiAgICAgX19hbGxfXy5leHRlbmQoX2dldF9leHBvcnRzX2xpc3QobnQpKQogICAgIGRlbCBudAogCisgICAgdHJ5OgorICAgICAgICBmcm9tIG50IGltcG9ydCBfaGF2ZV9mdW5jdGlvbnMKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MKKwogZWxpZiAnb3MyJyBpbiBfbmFtZXM6CiAgICAgbmFtZSA9ICdvczInCiAgICAgbGluZXNlcCA9ICdcclxuJwogICAgIGZyb20gb3MyIGltcG9ydCAqCiAgICAgdHJ5OgogICAgICAgICBmcm9tIG9zMiBpbXBvcnQgX2V4aXQKKyAgICAgICAgX19hbGxfXy5hcHBlbmQoJ19leGl0JykKICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgIHBhc3MKICAgICBpZiBzeXMudmVyc2lvbi5maW5kKCdFTVggR0NDJykgPT0gLTE6CkBAIC04NCwxMiArMTAwLDE4IEBACiAgICAgX19hbGxfXy5leHRlbmQoX2dldF9leHBvcnRzX2xpc3Qob3MyKSkKICAgICBkZWwgb3MyCiAKKyAgICB0cnk6CisgICAgICAgIGZyb20gb3MyIGltcG9ydCBfaGF2ZV9mdW5jdGlvbnMKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MKKwogZWxpZiAnY2UnIGluIF9uYW1lczoKICAgICBuYW1lID0gJ2NlJwogICAgIGxpbmVzZXAgPSAnXHJcbicKICAgICBmcm9tIGNlIGltcG9ydCAqCiAgICAgdHJ5OgogICAgICAgICBmcm9tIGNlIGltcG9ydCBfZXhpdAorICAgICAgICBfX2FsbF9fLmFwcGVuZCgnX2V4aXQnKQogICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgcGFzcwogICAgICMgV2UgY2FuIHVzZSB0aGUgc3RhbmRhcmQgV2luZG93cyBwYXRoLgpAQCAtOTksNiArMTIxLDExIEBACiAgICAgX19hbGxfXy5leHRlbmQoX2dldF9leHBvcnRzX2xpc3QoY2UpKQogICAgIGRlbCBjZQogCisgICAgdHJ5OgorICAgICAgICBmcm9tIGNlIGltcG9ydCBfaGF2ZV9mdW5jdGlvbnMKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MKKwogZWxzZToKICAgICByYWlzZSBJbXBvcnRFcnJvcignbm8gb3Mgc3BlY2lmaWMgbW9kdWxlIGZvdW5kJykKIApAQCAtMTA4LDggKzEzNSw5NyBAQAogCiBkZWwgX25hbWVzCiAKKworaWYgX2V4aXN0cygiX2hhdmVfZnVuY3Rpb25zIik6CisgICAgX2dsb2JhbHMgPSBnbG9iYWxzKCkKKyAgICBkZWYgX2FkZChzdHIsIGZuKToKKyAgICAgICAgaWYgKGZuIGluIF9nbG9iYWxzKSBhbmQgKHN0ciBpbiBfaGF2ZV9mdW5jdGlvbnMpOgorICAgICAgICAgICAgX3NldC5hZGQoX2dsb2JhbHNbZm5dKQorCisgICAgX3NldCA9IHNldCgpCisgICAgX2FkZCgiSEFWRV9GQUNDRVNTQVQiLCAgImFjY2VzcyIpCisgICAgX2FkZCgiSEFWRV9GQ0hNT0RBVCIsICAgImNobW9kIikKKyAgICBfYWRkKCJIQVZFX0ZDSE9XTkFUIiwgICAiY2hvd24iKQorICAgIF9hZGQoIkhBVkVfRlNUQVRBVCIsICAgICJzdGF0IikKKyAgICBfYWRkKCJIQVZFX0ZVVElNRVNBVCIsICAidXRpbWUiKQorICAgIF9hZGQoIkhBVkVfTElOS0FUIiwgICAgICJsaW5rIikKKyAgICBfYWRkKCJIQVZFX01LRElSQVQiLCAgICAibWtkaXIiKQorICAgIF9hZGQoIkhBVkVfTUtGSUZPQVQiLCAgICJta2ZpZm8iKQorICAgIF9hZGQoIkhBVkVfTUtOT0RBVCIsICAgICJta25vZCIpCisgICAgX2FkZCgiSEFWRV9PUEVOQVQiLCAgICAgIm9wZW4iKQorICAgIF9hZGQoIkhBVkVfUkVBRExJTktBVCIsICJyZWFkbGluayIpCisgICAgX2FkZCgiSEFWRV9SRU5BTUVBVCIsICAgInJlbmFtZSIpCisgICAgX2FkZCgiSEFWRV9TWU1MSU5LQVQiLCAgInN5bWxpbmsiKQorICAgIF9hZGQoIkhBVkVfVU5MSU5LQVQiLCAgICJ1bmxpbmsiKQorICAgIF9hZGQoIkhBVkVfVU5MSU5LQVQiLCAgICJybWRpciIpCisgICAgX2FkZCgiSEFWRV9VVElNRU5TQVQiLCAgInV0aW1lIikKKyAgICBzdXBwb3J0c19kaXJfZmQgPSBfc2V0CisKKyAgICBfc2V0ID0gc2V0KCkKKyAgICBfYWRkKCJIQVZFX0ZBQ0NFU1NBVCIsICAiYWNjZXNzIikKKyAgICBzdXBwb3J0c19lZmZlY3RpdmVfaWRzID0gX3NldAorCisgICAgX3NldCA9IHNldCgpCisgICAgX2FkZCgiSEFWRV9GQ0hESVIiLCAgICAgImNoZGlyIikKKyAgICBfYWRkKCJIQVZFX0ZDSE1PRCIsICAgICAiY2htb2QiKQorICAgIF9hZGQoIkhBVkVfRkNIT1dOIiwgICAgICJjaG93biIpCisgICAgX2FkZCgiSEFWRV9GRE9QRU5ESVIiLCAgImxpc3RkaXIiKQorICAgIF9hZGQoIkhBVkVfRkVYRUNWRSIsICAgICJleGVjdmUiKQorICAgIF9zZXQuYWRkKHN0YXQpICMgZnN0YXQgYWx3YXlzIHdvcmtzCisgICAgX2FkZCgiSEFWRV9GVFJVTkNBVEUiLCAgInRydW5jYXRlIikKKyAgICBfYWRkKCJIQVZFX0ZVVElNRU5TIiwgICAidXRpbWUiKQorICAgIF9hZGQoIkhBVkVfRlVUSU1FUyIsICAgICJ1dGltZSIpCisgICAgX2FkZCgiSEFWRV9GUEFUSENPTkYiLCAgInBhdGhjb25mIikKKyAgICBpZiBfZXhpc3RzKCJzdGF0dmZzIikgYW5kIF9leGlzdHMoImZzdGF0dmZzIik6ICMgbWFjIG9zIHgxMC4zCisgICAgICAgIF9hZGQoIkhBVkVfRlNUQVRWRlMiLCAic3RhdHZmcyIpCisgICAgc3VwcG9ydHNfZmQgPSBfc2V0CisKKyAgICBfc2V0ID0gc2V0KCkKKyAgICBfYWRkKCJIQVZFX0ZBQ0NFU1NBVCIsICAiYWNjZXNzIikKKyAgICAjIFNvbWUgcGxhdGZvcm1zIGRvbid0IHN1cHBvcnQgbGNobW9kKCkuICBPZnRlbiB0aGUgZnVuY3Rpb24gZXhpc3RzCisgICAgIyBhbnl3YXksIGFzIGEgc3R1YiB0aGF0IGFsd2F5cyByZXR1cm5zIEVOT1NVUCBvciBwZXJoYXBzIEVPUE5PVFNVUFAuCisgICAgIyAoTm8sIEkgZG9uJ3Qga25vdyB3aHkgdGhhdCdzIGEgZ29vZCBkZXNpZ24uKSAgLi9jb25maWd1cmUgd2lsbCBkZXRlY3QKKyAgICAjIHRoaXMgYW5kIHJlamVjdCBpdC0tc28gSEFWRV9MQ0hNT0Qgc3RpbGwgd29uJ3QgYmUgZGVmaW5lZCBvbiBzdWNoCisgICAgIyBwbGF0Zm9ybXMuICBUaGlzIGlzIFZlcnkgSGVscGZ1bC4KKyAgICAjCisgICAgIyBIb3dldmVyLCBzb21ldGltZXMgcGxhdGZvcm1zIHdpdGhvdXQgYSB3b3JraW5nIGxjaG1vZCgpICpkbyogaGF2ZQorICAgICMgZmNobW9kYXQoKS4gIChFeGFtcGxlczogTGludXgga2VybmVsIDMuMiB3aXRoIGdsaWJjIDIuMTUsCisgICAgIyBPcGVuSW5kaWFuYSAzLnguKSAgQW5kIGZjaG1vZGF0KCkgaGFzIGEgZmxhZyB0aGF0IHRoZW9yZXRpY2FsbHkgbWFrZXMKKyAgICAjIGl0IGJlaGF2ZSBsaWtlIGxjaG1vZCgpLiAgU28gaW4gdGhlb3J5IGl0IHdvdWxkIGJlIGEgc3VpdGFibGUKKyAgICAjIHJlcGxhY2VtZW50IGZvciBsY2htb2QoKS4gIEJ1dCB3aGVuIGxjaG1vZCgpIGRvZXNuJ3Qgd29yaywgZmNobW9kYXQoKSdzCisgICAgIyBmbGFnIGRvZXNuJ3Qgd29yayAqZWl0aGVyKi4gIFNhZGx5IC4vY29uZmlndXJlIGlzbid0IHNvcGhpc3RpY2F0ZWQKKyAgICAjIGVub3VnaCB0byBkZXRlY3QgdGhpcyBjb25kaXRpb24tLWl0IG9ubHkgZGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdAorICAgICMgZmNobW9kYXQoKSBtaW5pbWFsbHkgd29ya3MuCisgICAgIworICAgICMgVGhlcmVmb3JlIHdlIHNpbXBseSBpZ25vcmUgZmNobW9kYXQoKSB3aGVuIGRlY2lkaW5nIHdoZXRoZXIgb3Igbm90CisgICAgIyBvcy5jaG1vZCBzdXBwb3J0cyBmb2xsb3dfc3ltbGlua3MuICBKdXN0IGNoZWNraW5nIGxjaG1vZCgpIGlzCisgICAgIyBzdWZmaWNpZW50LiAgQWZ0ZXIgYWxsLS1pZiB5b3UgaGF2ZSBhIHdvcmtpbmcgZmNobW9kYXQoKSwgeW91cgorICAgICMgbGNobW9kKCkgYWxtb3N0IGNlcnRhaW5seSB3b3JrcyB0b28uCisgICAgIworICAgICMgX2FkZCgiSEFWRV9GQ0hNT0RBVCIsICAgImNobW9kIikKKyAgICBfYWRkKCJIQVZFX0ZDSE9XTkFUIiwgICAiY2hvd24iKQorICAgIF9hZGQoIkhBVkVfRlNUQVRBVCIsICAgICJzdGF0IikKKyAgICBfYWRkKCJIQVZFX0xDSEZMQUdTIiwgICAiY2hmbGFncyIpCisgICAgX2FkZCgiSEFWRV9MQ0hNT0QiLCAgICAgImNobW9kIikKKyAgICBpZiBfZXhpc3RzKCJsY2hvd24iKTogIyBtYWMgb3MgeDEwLjMKKyAgICAgICAgX2FkZCgiSEFWRV9MQ0hPV04iLCAiY2hvd24iKQorICAgIF9hZGQoIkhBVkVfTElOS0FUIiwgICAgICJsaW5rIikKKyAgICBfYWRkKCJIQVZFX0xVVElNRVMiLCAgICAidXRpbWUiKQorICAgIF9hZGQoIkhBVkVfTFNUQVQiLCAgICAgICJzdGF0IikKKyAgICBfYWRkKCJIQVZFX0ZTVEFUQVQiLCAgICAic3RhdCIpCisgICAgX2FkZCgiSEFWRV9VVElNRU5TQVQiLCAgInV0aW1lIikKKyAgICBfYWRkKCJNU19XSU5ET1dTIiwgICAgICAic3RhdCIpCisgICAgc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzID0gX3NldAorCisgICAgZGVsIF9zZXQKKyAgICBkZWwgX2hhdmVfZnVuY3Rpb25zCisgICAgZGVsIF9nbG9iYWxzCisgICAgZGVsIF9hZGQKKworCiAjIFB5dGhvbiB1c2VzIGZpeGVkIHZhbHVlcyBmb3IgdGhlIFNFRUtfIGNvbnN0YW50czsgdGhleSBhcmUgbWFwcGVkCiAjIHRvIG5hdGl2ZSBjb25zdGFudHMgaWYgbmVjZXNzYXJ5IGluIHBvc2l4bW9kdWxlLmMKKyMgT3RoZXIgcG9zc2libGUgU0VFSyB2YWx1ZXMgYXJlIGRpcmVjdGx5IGltcG9ydGVkIGZyb20gcG9zaXhtb2R1bGUuYwogU0VFS19TRVQgPSAwCiBTRUVLX0NVUiA9IDEKIFNFRUtfRU5EID0gMgpAQCAtMTIwLDggKzIzNiw2IEBACiAgICAgdW1hc2sobWFzaykKICAgICByZXR1cm4gbW9kZSAmIH5tYXNrCiAKLSMnCi0KICMgU3VwZXIgZGlyZWN0b3J5IHV0aWxpdGllcy4KICMgKEluc3BpcmVkIGJ5IEVyaWMgUmF5bW9uZDsgdGhlIGRvYyBzdHJpbmdzIGFyZSBtb3N0bHkgaGlzKQogCkBAIC0xNTQsNyArMjY4LDYgQEAKICAgICB0cnk6CiAgICAgICAgIG1rZGlyKG5hbWUsIG1vZGUpCiAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgaW1wb3J0IHN0YXQgYXMgc3QKICAgICAgICAgZGlyX2V4aXN0cyA9IHBhdGguaXNkaXIobmFtZSkKICAgICAgICAgZXhwZWN0ZWRfbW9kZSA9IF9nZXRfbWFza2VkX21vZGUobW9kZSkKICAgICAgICAgaWYgZGlyX2V4aXN0czoKQEAgLTE2Niw2ICsyNzksOSBAQAogICAgICAgICAgICAgYWN0dWFsX21vZGUgPSAtMQogICAgICAgICBpZiBub3QgKGUuZXJybm8gPT0gZXJybm8uRUVYSVNUIGFuZCBleGlzdF9vayBhbmQgZGlyX2V4aXN0cyBhbmQKICAgICAgICAgICAgICAgICBhY3R1YWxfbW9kZSA9PSBleHBlY3RlZF9tb2RlKToKKyAgICAgICAgICAgIGlmIGRpcl9leGlzdHMgYW5kIGFjdHVhbF9tb2RlICE9IGV4cGVjdGVkX21vZGU6CisgICAgICAgICAgICAgICAgZS5zdHJlcnJvciArPSAnIChtb2RlICVvICE9IGV4cGVjdGVkIG1vZGUgJW8pJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbF9tb2RlLCBleHBlY3RlZF9tb2RlKQogICAgICAgICAgICAgcmFpc2UKIAogZGVmIHJlbW92ZWRpcnMobmFtZSk6CkBAIC0zMDMsMTMgKzQxOSwxMDcgQEAKICAgICBmb3IgbmFtZSBpbiBkaXJzOgogICAgICAgICBuZXdfcGF0aCA9IGpvaW4odG9wLCBuYW1lKQogICAgICAgICBpZiBmb2xsb3dsaW5rcyBvciBub3QgaXNsaW5rKG5ld19wYXRoKToKLSAgICAgICAgICAgIGZvciB4IGluIHdhbGsobmV3X3BhdGgsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd2xpbmtzKToKLSAgICAgICAgICAgICAgICB5aWVsZCB4CisgICAgICAgICAgICB5aWVsZCBmcm9tIHdhbGsobmV3X3BhdGgsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd2xpbmtzKQogICAgIGlmIG5vdCB0b3Bkb3duOgogICAgICAgICB5aWVsZCB0b3AsIGRpcnMsIG5vbmRpcnMKIAogX19hbGxfXy5hcHBlbmQoIndhbGsiKQogCitpZiB7b3Blbiwgc3RhdH0gPD0gc3VwcG9ydHNfZGlyX2ZkIGFuZCB7bGlzdGRpciwgc3RhdH0gPD0gc3VwcG9ydHNfZmQ6CisKKyAgICBkZWYgZndhbGsodG9wPSIuIiwgdG9wZG93bj1UcnVlLCBvbmVycm9yPU5vbmUsICosIGZvbGxvd19zeW1saW5rcz1GYWxzZSwgZGlyX2ZkPU5vbmUpOgorICAgICAgICAiIiJEaXJlY3RvcnkgdHJlZSBnZW5lcmF0b3IuCisKKyAgICAgICAgVGhpcyBiZWhhdmVzIGV4YWN0bHkgbGlrZSB3YWxrKCksIGV4Y2VwdCB0aGF0IGl0IHlpZWxkcyBhIDQtdHVwbGUKKworICAgICAgICAgICAgZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcywgZGlyZmQKKworICAgICAgICBgZGlycGF0aGAsIGBkaXJuYW1lc2AgYW5kIGBmaWxlbmFtZXNgIGFyZSBpZGVudGljYWwgdG8gd2FsaygpIG91dHB1dCwKKyAgICAgICAgYW5kIGBkaXJmZGAgaXMgYSBmaWxlIGRlc2NyaXB0b3IgcmVmZXJyaW5nIHRvIHRoZSBkaXJlY3RvcnkgYGRpcnBhdGhgLgorCisgICAgICAgIFRoZSBhZHZhbnRhZ2Ugb2YgZndhbGsoKSBvdmVyIHdhbGsoKSBpcyB0aGF0IGl0J3Mgc2FmZSBhZ2FpbnN0IHN5bWxpbmsKKyAgICAgICAgcmFjZXMgKHdoZW4gZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlKS4KKworICAgICAgICBJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAorICAgICAgICAgIGFuZCB0b3Agc2hvdWxkIGJlIHJlbGF0aXZlOyB0b3Agd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgorICAgICAgICAgIChkaXJfZmQgaXMgYWx3YXlzIHN1cHBvcnRlZCBmb3IgZndhbGsuKQorCisgICAgICAgIENhdXRpb246CisgICAgICAgIFNpbmNlIGZ3YWxrKCkgeWllbGRzIGZpbGUgZGVzY3JpcHRvcnMsIHRob3NlIGFyZSBvbmx5IHZhbGlkIHVudGlsIHRoZQorICAgICAgICBuZXh0IGl0ZXJhdGlvbiBzdGVwLCBzbyB5b3Ugc2hvdWxkIGR1cCgpIHRoZW0gaWYgeW91IHdhbnQgdG8ga2VlcCB0aGVtCisgICAgICAgIGZvciBhIGxvbmdlciBwZXJpb2QuCisKKyAgICAgICAgRXhhbXBsZToKKworICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzLCByb290ZmQgaW4gb3MuZndhbGsoJ3B5dGhvbi9MaWIvZW1haWwnKToKKyAgICAgICAgICAgIHByaW50KHJvb3QsICJjb25zdW1lcyIsIGVuZD0iIikKKyAgICAgICAgICAgIHByaW50KHN1bShbb3Muc3RhdChuYW1lLCBkaXJfZmQ9cm9vdGZkKS5zdF9zaXplIGZvciBuYW1lIGluIGZpbGVzXSksCisgICAgICAgICAgICAgICAgICBlbmQ9IiIpCisgICAgICAgICAgICBwcmludCgiYnl0ZXMgaW4iLCBsZW4oZmlsZXMpLCAibm9uLWRpcmVjdG9yeSBmaWxlcyIpCisgICAgICAgICAgICBpZiAnQ1ZTJyBpbiBkaXJzOgorICAgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCdDVlMnKSAgIyBkb24ndCB2aXNpdCBDVlMgZGlyZWN0b3JpZXMKKyAgICAgICAgIiIiCisgICAgICAgICMgTm90ZTogVG8gZ3VhcmQgYWdhaW5zdCBzeW1saW5rIHJhY2VzLCB3ZSB1c2UgdGhlIHN0YW5kYXJkCisgICAgICAgICMgbHN0YXQoKS9vcGVuKCkvZnN0YXQoKSB0cmljay4KKyAgICAgICAgb3JpZ19zdCA9IHN0YXQodG9wLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UsIGRpcl9mZD1kaXJfZmQpCisgICAgICAgIHRvcGZkID0gb3Blbih0b3AsIE9fUkRPTkxZLCBkaXJfZmQ9ZGlyX2ZkKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiAoZm9sbG93X3N5bWxpbmtzIG9yIChzdC5TX0lTRElSKG9yaWdfc3Quc3RfbW9kZSkgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLnNhbWVzdGF0KG9yaWdfc3QsIHN0YXQodG9wZmQpKSkpOgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gX2Z3YWxrKHRvcGZkLCB0b3AsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGNsb3NlKHRvcGZkKQorCisgICAgZGVmIF9md2Fsayh0b3BmZCwgdG9wcGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93X3N5bWxpbmtzKToKKyAgICAgICAgIyBOb3RlOiBUaGlzIHVzZXMgTyhkZXB0aCBvZiB0aGUgZGlyZWN0b3J5IHRyZWUpIGZpbGUgZGVzY3JpcHRvcnM6IGlmCisgICAgICAgICMgbmVjZXNzYXJ5LCBpdCBjYW4gYmUgYWRhcHRlZCB0byBvbmx5IHJlcXVpcmUgTygxKSBGRHMsIHNlZSBpc3N1ZQorICAgICAgICAjICMxMzczNC4KKworICAgICAgICBuYW1lcyA9IGxpc3RkaXIodG9wZmQpCisgICAgICAgIGRpcnMsIG5vbmRpcnMgPSBbXSwgW10KKyAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIyBIZXJlLCB3ZSBkb24ndCB1c2UgQVRfU1lNTElOS19OT0ZPTExPVyB0byBiZSBjb25zaXN0ZW50IHdpdGgKKyAgICAgICAgICAgICAgICAjIHdhbGsoKSB3aGljaCByZXBvcnRzIHN5bWxpbmtzIHRvIGRpcmVjdG9yaWVzIGFzIGRpcmVjdG9yaWVzLgorICAgICAgICAgICAgICAgICMgV2UgZG8gaG93ZXZlciBjaGVjayBmb3Igc3ltbGlua3MgYmVmb3JlIHJlY3Vyc2luZyBpbnRvCisgICAgICAgICAgICAgICAgIyBhIHN1YmRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBpZiBzdC5TX0lTRElSKHN0YXQobmFtZSwgZGlyX2ZkPXRvcGZkKS5zdF9tb2RlKToKKyAgICAgICAgICAgICAgICAgICAgZGlycy5hcHBlbmQobmFtZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBub25kaXJzLmFwcGVuZChuYW1lKQorICAgICAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgIyBBZGQgZGFuZ2xpbmcgc3ltbGlua3MsIGlnbm9yZSBkaXNhcHBlYXJlZCBmaWxlcworICAgICAgICAgICAgICAgICAgICBpZiBzdC5TX0lTTE5LKHN0YXQobmFtZSwgZGlyX2ZkPXRvcGZkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdF9tb2RlKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vbmRpcnMuYXBwZW5kKG5hbWUpCisgICAgICAgICAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGlmIHRvcGRvd246CisgICAgICAgICAgICB5aWVsZCB0b3BwYXRoLCBkaXJzLCBub25kaXJzLCB0b3BmZAorCisgICAgICAgIGZvciBuYW1lIGluIGRpcnM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3JpZ19zdCA9IHN0YXQobmFtZSwgZGlyX2ZkPXRvcGZkLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQorICAgICAgICAgICAgICAgIGRpcmZkID0gb3BlbihuYW1lLCBPX1JET05MWSwgZGlyX2ZkPXRvcGZkKQorICAgICAgICAgICAgZXhjZXB0IGVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBpZiBvbmVycm9yIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBvbmVycm9yKGVycikKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBmb2xsb3dfc3ltbGlua3Mgb3IgcGF0aC5zYW1lc3RhdChvcmlnX3N0LCBzdGF0KGRpcmZkKSk6CisgICAgICAgICAgICAgICAgICAgIGRpcnBhdGggPSBwYXRoLmpvaW4odG9wcGF0aCwgbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBfZndhbGsoZGlyZmQsIGRpcnBhdGgsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgY2xvc2UoZGlyZmQpCisKKyAgICAgICAgaWYgbm90IHRvcGRvd246CisgICAgICAgICAgICB5aWVsZCB0b3BwYXRoLCBkaXJzLCBub25kaXJzLCB0b3BmZAorCisgICAgX19hbGxfXy5hcHBlbmQoImZ3YWxrIikKKwogIyBNYWtlIHN1cmUgb3MuZW52aXJvbiBleGlzdHMsIGF0IGxlYXN0CiB0cnk6CiAgICAgZW52aXJvbgpAQCAtNDQ2LDcgKzY1Niw3IEBACiAKIAogIyBDaGFuZ2UgZW52aXJvbiB0byBhdXRvbWF0aWNhbGx5IGNhbGwgcHV0ZW52KCksIHVuc2V0ZW52IGlmIHRoZXkgZXhpc3QuCi1mcm9tIF9hYmNvbGwgaW1wb3J0IE11dGFibGVNYXBwaW5nICAjIENhbid0IHVzZSBjb2xsZWN0aW9ucyAoYm9vdHN0cmFwKQorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE11dGFibGVNYXBwaW5nCiAKIGNsYXNzIF9FbnZpcm9uKE11dGFibGVNYXBwaW5nKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YSwgZW5jb2Rla2V5LCBkZWNvZGVrZXksIGVuY29kZXZhbHVlLCBkZWNvZGV2YWx1ZSwgcHV0ZW52LCB1bnNldGVudik6CkBAIC02MTAsMTUgKzgyMCwxNCBAQAogZnNlbmNvZGUsIGZzZGVjb2RlID0gX2ZzY29kZWMoKQogZGVsIF9mc2NvZGVjCiAKLWRlZiBfZXhpc3RzKG5hbWUpOgotICAgIHJldHVybiBuYW1lIGluIGdsb2JhbHMoKQotCiAjIFN1cHBseSBzcGF3biooKSAocHJvYmFibHkgb25seSBmb3IgVW5peCkKIGlmIF9leGlzdHMoImZvcmsiKSBhbmQgbm90IF9leGlzdHMoInNwYXdudiIpIGFuZCBfZXhpc3RzKCJleGVjdiIpOgogCiAgICAgUF9XQUlUID0gMAogICAgIFBfTk9XQUlUID0gUF9OT1dBSVRPID0gMQogCisgICAgX19hbGxfXy5leHRlbmQoWyJQX1dBSVQiLCAiUF9OT1dBSVQiLCAiUF9OT1dBSVRPIl0pCisKICAgICAjIFhYWCBTaG91bGQgd2Ugc3VwcG9ydCBQX0RFVEFDSD8gIEkgc3VwcG9zZSBpdCBjb3VsZCBmb3JrKCkqKjIKICAgICAjIGFuZCBjbG9zZSB0aGUgc3RkIEkvTyBzdHJlYW1zLiAgQWxzbywgUF9PVkVSTEFZIGlzIHRoZSBzYW1lCiAgICAgIyBhcyBleGVjdiooKT8KQEAgLTc3OSw3ICs5ODgsNyBAQAogICAgICAgICByYWlzZSBUeXBlRXJyb3IoImludmFsaWQgY21kIHR5cGUgKCVzLCBleHBlY3RlZCBzdHJpbmcpIiAlIHR5cGUoY21kKSkKICAgICBpZiBtb2RlIG5vdCBpbiAoInIiLCAidyIpOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIG1vZGUgJXIiICUgbW9kZSkKLSAgICBpZiBidWZmZXJpbmcgPT0gMCBvciBidWZmZXJpbmcgPT0gTm9uZToKKyAgICBpZiBidWZmZXJpbmcgPT0gMCBvciBidWZmZXJpbmcgaXMgTm9uZToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicG9wZW4oKSBkb2VzIG5vdCBzdXBwb3J0IHVuYnVmZmVyZWQgc3RyZWFtcyIpCiAgICAgaW1wb3J0IHN1YnByb2Nlc3MsIGlvCiAgICAgaWYgbW9kZSA9PSAiciI6CmRpZmYgLS1naXQgYS9MaWIvcGRiLnB5IGIvTGliL3BkYi5weQppbmRleCA4YzdjMTJiLi5lNmQ3ZjhmIDEwMDc1NQotLS0gYS9MaWIvcGRiLnB5CisrKyBiL0xpYi9wZGIucHkKQEAgLTczLDYgKzczLDcgQEAKIGltcG9ydCBiZGIKIGltcG9ydCBkaXMKIGltcG9ydCBjb2RlCitpbXBvcnQgZ2xvYgogaW1wb3J0IHBwcmludAogaW1wb3J0IHNpZ25hbAogaW1wb3J0IGluc3BlY3QKQEAgLTE1NSw2ICsxNTYsOCBAQAogICAgICAgICAjIFRyeSB0byBsb2FkIHJlYWRsaW5lIGlmIGl0IGV4aXN0cwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpbXBvcnQgcmVhZGxpbmUKKyAgICAgICAgICAgICMgcmVtb3ZlIHNvbWUgY29tbW9uIGZpbGUgbmFtZSBkZWxpbWl0ZXJzCisgICAgICAgICAgICByZWFkbGluZS5zZXRfY29tcGxldGVyX2RlbGltcygnIFx0XG5gQCMkJV4mKigpPStbe119XFx8OzpcJyIsPD4/JykKICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFsbG93X2tiZGludCA9IEZhbHNlCkBAIC00NDUsNiArNDQ4LDYxIEBACiAgICAgZGVmIGVycm9yKHNlbGYsIG1zZyk6CiAgICAgICAgIHByaW50KCcqKionLCBtc2csIGZpbGU9c2VsZi5zdGRvdXQpCiAKKyAgICAjIEdlbmVyaWMgY29tcGxldGlvbiBmdW5jdGlvbnMuICBJbmRpdmlkdWFsIGNvbXBsZXRlX2ZvbyBtZXRob2RzIGNhbiBiZQorICAgICMgYXNzaWduZWQgYmVsb3cgdG8gb25lIG9mIHRoZXNlIGZ1bmN0aW9ucy4KKworICAgIGRlZiBfY29tcGxldGVfbG9jYXRpb24oc2VsZiwgdGV4dCwgbGluZSwgYmVnaWR4LCBlbmRpZHgpOgorICAgICAgICAjIENvbXBsZXRlIGEgZmlsZS9tb2R1bGUvZnVuY3Rpb24gbG9jYXRpb24gZm9yIGJyZWFrL3RicmVhay9jbGVhci4KKyAgICAgICAgaWYgbGluZS5zdHJpcCgpLmVuZHN3aXRoKCgnOicsICcsJykpOgorICAgICAgICAgICAgIyBIZXJlIGNvbWVzIGEgbGluZSBudW1iZXIgb3IgYSBjb25kaXRpb24gd2hpY2ggd2UgY2FuJ3QgY29tcGxldGUuCisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgIyBGaXJzdCwgdHJ5IHRvIGZpbmQgbWF0Y2hpbmcgZnVuY3Rpb25zIChpLmUuIGV4cHJlc3Npb25zKS4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0ID0gc2VsZi5fY29tcGxldGVfZXhwcmVzc2lvbih0ZXh0LCBsaW5lLCBiZWdpZHgsIGVuZGlkeCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgIHJldCA9IFtdCisgICAgICAgICMgVGhlbiwgdHJ5IHRvIGNvbXBsZXRlIGZpbGUgbmFtZXMgYXMgd2VsbC4KKyAgICAgICAgZ2xvYnMgPSBnbG9iLmdsb2IodGV4dCArICcqJykKKyAgICAgICAgZm9yIGZuIGluIGdsb2JzOgorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihmbik6CisgICAgICAgICAgICAgICAgcmV0LmFwcGVuZChmbiArICcvJykKKyAgICAgICAgICAgIGVsaWYgb3MucGF0aC5pc2ZpbGUoZm4pIGFuZCBmbi5sb3dlcigpLmVuZHN3aXRoKCgnLnB5JywgJy5weXcnKSk6CisgICAgICAgICAgICAgICAgcmV0LmFwcGVuZChmbiArICc6JykKKyAgICAgICAgcmV0dXJuIHJldAorCisgICAgZGVmIF9jb21wbGV0ZV9icG51bWJlcihzZWxmLCB0ZXh0LCBsaW5lLCBiZWdpZHgsIGVuZGlkeCk6CisgICAgICAgICMgQ29tcGxldGUgYSBicmVha3BvaW50IG51bWJlci4gIChUaGlzIHdvdWxkIGJlIG1vcmUgaGVscGZ1bCBpZiB3ZSBjb3VsZAorICAgICAgICAjIGRpc3BsYXkgYWRkaXRpb25hbCBpbmZvIGFsb25nIHdpdGggdGhlIGNvbXBsZXRpb25zLCBzdWNoIGFzIGZpbGUvbGluZQorICAgICAgICAjIG9mIHRoZSBicmVha3BvaW50LikKKyAgICAgICAgcmV0dXJuIFtzdHIoaSkgZm9yIGksIGJwIGluIGVudW1lcmF0ZShiZGIuQnJlYWtwb2ludC5icGJ5bnVtYmVyKQorICAgICAgICAgICAgICAgIGlmIGJwIGlzIG5vdCBOb25lIGFuZCBzdHIoaSkuc3RhcnRzd2l0aCh0ZXh0KV0KKworICAgIGRlZiBfY29tcGxldGVfZXhwcmVzc2lvbihzZWxmLCB0ZXh0LCBsaW5lLCBiZWdpZHgsIGVuZGlkeCk6CisgICAgICAgICMgQ29tcGxldGUgYW4gYXJiaXRyYXJ5IGV4cHJlc3Npb24uCisgICAgICAgIGlmIG5vdCBzZWxmLmN1cmZyYW1lOgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgICMgQ29sbGVjdCBnbG9iYWxzIGFuZCBsb2NhbHMuICBJdCBpcyB1c3VhbGx5IG5vdCByZWFsbHkgc2Vuc2libGUgdG8gYWxzbworICAgICAgICAjIGNvbXBsZXRlIGJ1aWx0aW5zLCBhbmQgdGhleSBjbHV0dGVyIHRoZSBuYW1lc3BhY2UgcXVpdGUgaGVhdmlseSwgc28gd2UKKyAgICAgICAgIyBsZWF2ZSB0aGVtIG91dC4KKyAgICAgICAgbnMgPSBzZWxmLmN1cmZyYW1lLmZfZ2xvYmFscy5jb3B5KCkKKyAgICAgICAgbnMudXBkYXRlKHNlbGYuY3VyZnJhbWVfbG9jYWxzKQorICAgICAgICBpZiAnLicgaW4gdGV4dDoKKyAgICAgICAgICAgICMgV2FsayBhbiBhdHRyaWJ1dGUgY2hhaW4gdXAgdG8gdGhlIGxhc3QgcGFydCwgc2ltaWxhciB0byB3aGF0CisgICAgICAgICAgICAjIHJsY29tcGxldGVyIGRvZXMuICBUaGlzIHdpbGwgYmFpbCBpZiBhbnkgb2YgdGhlIHBhcnRzIGFyZSBub3QKKyAgICAgICAgICAgICMgc2ltcGxlIGF0dHJpYnV0ZSBhY2Nlc3MsIHdoaWNoIGlzIHdoYXQgd2Ugd2FudC4KKyAgICAgICAgICAgIGRvdHRlZCA9IHRleHQuc3BsaXQoJy4nKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9iaiA9IG5zW2RvdHRlZFswXV0KKyAgICAgICAgICAgICAgICBmb3IgcGFydCBpbiBkb3R0ZWRbMTotMV06CisgICAgICAgICAgICAgICAgICAgIG9iaiA9IGdldGF0dHIob2JqLCBwYXJ0KQorICAgICAgICAgICAgZXhjZXB0IChLZXlFcnJvciwgQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICAgICAgcHJlZml4ID0gJy4nLmpvaW4oZG90dGVkWzotMV0pICsgJy4nCisgICAgICAgICAgICByZXR1cm4gW3ByZWZpeCArIG4gZm9yIG4gaW4gZGlyKG9iaikgaWYgbi5zdGFydHN3aXRoKGRvdHRlZFstMV0pXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBDb21wbGV0ZSBhIHNpbXBsZSBuYW1lLgorICAgICAgICAgICAgcmV0dXJuIFtuIGZvciBuIGluIG5zLmtleXMoKSBpZiBuLnN0YXJ0c3dpdGgodGV4dCldCisKICAgICAjIENvbW1hbmQgZGVmaW5pdGlvbnMsIGNhbGxlZCBieSBjbWRsb29wKCkKICAgICAjIFRoZSBhcmd1bWVudCBpcyB0aGUgcmVtYWluaW5nIHN0cmluZyBvbiB0aGUgY29tbWFuZCBsaW5lCiAgICAgIyBSZXR1cm4gdHJ1ZSB0byBleGl0IGZyb20gdGhlIGNvbW1hbmQgbG9vcApAQCAtNTI2LDYgKzU4NCw4IEBACiAgICAgICAgICAgICBzZWxmLmNvbW1hbmRzX2RlZmluaW5nID0gRmFsc2UKICAgICAgICAgICAgIHNlbGYucHJvbXB0ID0gcHJvbXB0X2JhY2sKIAorICAgIGNvbXBsZXRlX2NvbW1hbmRzID0gX2NvbXBsZXRlX2JwbnVtYmVyCisKICAgICBkZWYgZG9fYnJlYWsoc2VsZiwgYXJnLCB0ZW1wb3JhcnkgPSAwKToKICAgICAgICAgIiIiYihyZWFrKSBbIChbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dIF0KICAgICAgICAgV2l0aG91dCBhcmd1bWVudCwgbGlzdCBhbGwgYnJlYWtzLgpAQCAtNjI4LDYgKzY4OCw5IEBACiAKICAgICBkb19iID0gZG9fYnJlYWsKIAorICAgIGNvbXBsZXRlX2JyZWFrID0gX2NvbXBsZXRlX2xvY2F0aW9uCisgICAgY29tcGxldGVfYiA9IF9jb21wbGV0ZV9sb2NhdGlvbgorCiAgICAgZGVmIGRvX3RicmVhayhzZWxmLCBhcmcpOgogICAgICAgICAiIiJ0YnJlYWsgWyAoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXSBdCiAgICAgICAgIFNhbWUgYXJndW1lbnRzIGFzIGJyZWFrLCBidXQgc2V0cyBhIHRlbXBvcmFyeSBicmVha3BvaW50OiBpdApAQCAtNjM1LDYgKzY5OCw4IEBACiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmRvX2JyZWFrKGFyZywgMSkKIAorICAgIGNvbXBsZXRlX3RicmVhayA9IF9jb21wbGV0ZV9sb2NhdGlvbgorCiAgICAgZGVmIGxpbmVpbmZvKHNlbGYsIGlkZW50aWZpZXIpOgogICAgICAgICBmYWlsZWQgPSAoTm9uZSwgTm9uZSwgTm9uZSkKICAgICAgICAgIyBJbnB1dCBpcyBpZGVudGlmaWVyLCBtYXkgYmUgaW4gc2luZ2xlIHF1b3RlcwpAQCAtNzA0LDYgKzc2OSw4IEBACiAgICAgICAgICAgICAgICAgYnAuZW5hYmxlKCkKICAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ0VuYWJsZWQgJXMnICUgYnApCiAKKyAgICBjb21wbGV0ZV9lbmFibGUgPSBfY29tcGxldGVfYnBudW1iZXIKKwogICAgIGRlZiBkb19kaXNhYmxlKHNlbGYsIGFyZyk6CiAgICAgICAgICIiImRpc2FibGUgYnBudW1iZXIgW2JwbnVtYmVyIC4uLl0KICAgICAgICAgRGlzYWJsZXMgdGhlIGJyZWFrcG9pbnRzIGdpdmVuIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YKQEAgLTcyMiw2ICs3ODksOCBAQAogICAgICAgICAgICAgICAgIGJwLmRpc2FibGUoKQogICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgnRGlzYWJsZWQgJXMnICUgYnApCiAKKyAgICBjb21wbGV0ZV9kaXNhYmxlID0gX2NvbXBsZXRlX2JwbnVtYmVyCisKICAgICBkZWYgZG9fY29uZGl0aW9uKHNlbGYsIGFyZyk6CiAgICAgICAgICIiImNvbmRpdGlvbiBicG51bWJlciBbY29uZGl0aW9uXQogICAgICAgICBTZXQgYSBuZXcgY29uZGl0aW9uIGZvciB0aGUgYnJlYWtwb2ludCwgYW4gZXhwcmVzc2lvbiB3aGljaApAQCAtNzQ1LDYgKzgxNCw4IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgnTmV3IGNvbmRpdGlvbiBzZXQgZm9yIGJyZWFrcG9pbnQgJWQuJyAlIGJwLm51bWJlcikKIAorICAgIGNvbXBsZXRlX2NvbmRpdGlvbiA9IF9jb21wbGV0ZV9icG51bWJlcgorCiAgICAgZGVmIGRvX2lnbm9yZShzZWxmLCBhcmcpOgogICAgICAgICAiIiJpZ25vcmUgYnBudW1iZXIgW2NvdW50XQogICAgICAgICBTZXQgdGhlIGlnbm9yZSBjb3VudCBmb3IgdGhlIGdpdmVuIGJyZWFrcG9pbnQgbnVtYmVyLiAgSWYKQEAgLTc3Niw2ICs4NDcsOCBAQAogICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgnV2lsbCBzdG9wIG5leHQgdGltZSBicmVha3BvaW50ICVkIGlzIHJlYWNoZWQuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGJwLm51bWJlcikKIAorICAgIGNvbXBsZXRlX2lnbm9yZSA9IF9jb21wbGV0ZV9icG51bWJlcgorCiAgICAgZGVmIGRvX2NsZWFyKHNlbGYsIGFyZyk6CiAgICAgICAgICIiImNsKGVhcikgZmlsZW5hbWU6bGluZW5vXG5jbChlYXIpIFticG51bWJlciBbYnBudW1iZXIuLi5dXQogICAgICAgICBXaXRoIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgYnJlYWtwb2ludCBudW1iZXJzLCBjbGVhcgpAQCAtODI0LDYgKzg5Nyw5IEBACiAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdEZWxldGVkICVzJyAlIGJwKQogICAgIGRvX2NsID0gZG9fY2xlYXIgIyAnYycgaXMgYWxyZWFkeSBhbiBhYmJyZXZpYXRpb24gZm9yICdjb250aW51ZScKIAorICAgIGNvbXBsZXRlX2NsZWFyID0gX2NvbXBsZXRlX2xvY2F0aW9uCisgICAgY29tcGxldGVfY2wgPSBfY29tcGxldGVfbG9jYXRpb24KKwogICAgIGRlZiBkb193aGVyZShzZWxmLCBhcmcpOgogICAgICAgICAiIiJ3KGhlcmUpCiAgICAgICAgIFByaW50IGEgc3RhY2sgdHJhY2UsIHdpdGggdGhlIG1vc3QgcmVjZW50IGZyYW1lIGF0IHRoZSBib3R0b20uCkBAIC0xMDE0LDYgKzEwOTAsOCBAQAogICAgICAgICBzeXMuc2V0dHJhY2Uoc2VsZi50cmFjZV9kaXNwYXRjaCkKICAgICAgICAgc2VsZi5sYXN0Y21kID0gcC5sYXN0Y21kCiAKKyAgICBjb21wbGV0ZV9kZWJ1ZyA9IF9jb21wbGV0ZV9leHByZXNzaW9uCisKICAgICBkZWYgZG9fcXVpdChzZWxmLCBhcmcpOgogICAgICAgICAiIiJxKHVpdClcbmV4aXQKICAgICAgICAgUXVpdCBmcm9tIHRoZSBkZWJ1Z2dlci4gVGhlIHByb2dyYW0gYmVpbmcgZXhlY3V0ZWQgaXMgYWJvcnRlZC4KQEAgLTExMDAsNiArMTE3OCwxMCBAQAogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBwYXNzCiAKKyAgICBjb21wbGV0ZV9wcmludCA9IF9jb21wbGV0ZV9leHByZXNzaW9uCisgICAgY29tcGxldGVfcCA9IF9jb21wbGV0ZV9leHByZXNzaW9uCisgICAgY29tcGxldGVfcHAgPSBfY29tcGxldGVfZXhwcmVzc2lvbgorCiAgICAgZGVmIGRvX2xpc3Qoc2VsZiwgYXJnKToKICAgICAgICAgIiIibChpc3QpIFtmaXJzdCBbLGxhc3RdIHwgLl0KIApAQCAtMTE4MCw2ICsxMjYyLDggQEAKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLl9wcmludF9saW5lcyhsaW5lcywgbGluZW5vKQogCisgICAgY29tcGxldGVfc291cmNlID0gX2NvbXBsZXRlX2V4cHJlc3Npb24KKwogICAgIGRlZiBfcHJpbnRfbGluZXMoc2VsZiwgbGluZXMsIHN0YXJ0LCBicmVha3M9KCksIGZyYW1lPU5vbmUpOgogICAgICAgICAiIiJQcmludCBhIHJhbmdlIG9mIGxpbmVzLiIiIgogICAgICAgICBpZiBmcmFtZToKQEAgLTEyMzQsNiArMTMxOCw4IEBACiAgICAgICAgICMgTm9uZSBvZiB0aGUgYWJvdmUuLi4KICAgICAgICAgc2VsZi5tZXNzYWdlKHR5cGUodmFsdWUpKQogCisgICAgY29tcGxldGVfd2hhdGlzID0gX2NvbXBsZXRlX2V4cHJlc3Npb24KKwogICAgIGRlZiBkb19kaXNwbGF5KHNlbGYsIGFyZyk6CiAgICAgICAgICIiImRpc3BsYXkgW2V4cHJlc3Npb25dCiAKQEAgLTEyNTEsNiArMTMzNyw4IEBACiAgICAgICAgICAgICBzZWxmLmRpc3BsYXlpbmcuc2V0ZGVmYXVsdChzZWxmLmN1cmZyYW1lLCB7fSlbYXJnXSA9IHZhbAogICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdkaXNwbGF5ICVzOiAlcicgJSAoYXJnLCB2YWwpKQogCisgICAgY29tcGxldGVfZGlzcGxheSA9IF9jb21wbGV0ZV9leHByZXNzaW9uCisKICAgICBkZWYgZG9fdW5kaXNwbGF5KHNlbGYsIGFyZyk6CiAgICAgICAgICIiInVuZGlzcGxheSBbZXhwcmVzc2lvbl0KIApAQCAtMTI2Niw2ICsxMzU0LDEwIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmRpc3BsYXlpbmcucG9wKHNlbGYuY3VyZnJhbWUsIE5vbmUpCiAKKyAgICBkZWYgY29tcGxldGVfdW5kaXNwbGF5KHNlbGYsIHRleHQsIGxpbmUsIGJlZ2lkeCwgZW5kaWR4KToKKyAgICAgICAgcmV0dXJuIFtlIGZvciBlIGluIHNlbGYuZGlzcGxheWluZy5nZXQoc2VsZi5jdXJmcmFtZSwge30pCisgICAgICAgICAgICAgICAgaWYgZS5zdGFydHN3aXRoKHRleHQpXQorCiAgICAgZGVmIGRvX2ludGVyYWN0KHNlbGYsIGFyZyk6CiAgICAgICAgICIiImludGVyYWN0CiAKQEAgLTEzMjAsNiArMTQxMiw5IEBACiAgICAgICAgIGlmIGFyZ3NbMF0gaW4gc2VsZi5hbGlhc2VzOgogICAgICAgICAgICAgZGVsIHNlbGYuYWxpYXNlc1thcmdzWzBdXQogCisgICAgZGVmIGNvbXBsZXRlX3VuYWxpYXMoc2VsZiwgdGV4dCwgbGluZSwgYmVnaWR4LCBlbmRpZHgpOgorICAgICAgICByZXR1cm4gW2EgZm9yIGEgaW4gc2VsZi5hbGlhc2VzIGlmIGEuc3RhcnRzd2l0aCh0ZXh0KV0KKwogICAgICMgTGlzdCBvZiBhbGwgdGhlIGNvbW1hbmRzIG1ha2luZyB0aGUgcHJvZ3JhbSByZXN1bWUgZXhlY3V0aW9uLgogICAgIGNvbW1hbmRzX3Jlc3VtaW5nID0gWydkb19jb250aW51ZScsICdkb19zdGVwJywgJ2RvX25leHQnLCAnZG9fcmV0dXJuJywKICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9fcXVpdCcsICdkb19qdW1wJ10KZGlmZiAtLWdpdCBhL0xpYi9waWNrbGUucHkgYi9MaWIvcGlja2xlLnB5CmluZGV4IGE2OTBjY2QuLmU4MWEzNzkgMTAwNjQ0Ci0tLSBhL0xpYi9waWNrbGUucHkKKysrIGIvTGliL3BpY2tsZS5weQpAQCAtMjMsOCArMjMsNiBAQAogCiAiIiIKIAotX192ZXJzaW9uX18gPSAiJFJldmlzaW9uJCIgICAgICAgIyBDb2RlIHZlcnNpb24KLQogZnJvbSB0eXBlcyBpbXBvcnQgRnVuY3Rpb25UeXBlLCBCdWlsdGluRnVuY3Rpb25UeXBlCiBmcm9tIGNvcHlyZWcgaW1wb3J0IGRpc3BhdGNoX3RhYmxlCiBmcm9tIGNvcHlyZWcgaW1wb3J0IF9leHRlbnNpb25fcmVnaXN0cnksIF9pbnZlcnRlZF9yZWdpc3RyeSwgX2V4dGVuc2lvbl9jYWNoZQpAQCAtMjk5LDggKzI5Nyw4IEBACiAgICAgICAgICAgICBmKHNlbGYsIG9iaikgIyBDYWxsIHVuYm91bmQgbWV0aG9kIHdpdGggZXhwbGljaXQgc2VsZgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgIyBDaGVjayBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlCi0gICAgICAgIHJlZHVjZSA9IGRpc3BhdGNoX3RhYmxlLmdldCh0KQorICAgICAgICAjIENoZWNrIHByaXZhdGUgZGlzcGF0Y2ggdGFibGUgaWYgYW55LCBvciBlbHNlIGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUKKyAgICAgICAgcmVkdWNlID0gZ2V0YXR0cihzZWxmLCAnZGlzcGF0Y2hfdGFibGUnLCBkaXNwYXRjaF90YWJsZSkuZ2V0KHQpCiAgICAgICAgIGlmIHJlZHVjZToKICAgICAgICAgICAgIHJ2ID0gcmVkdWNlKG9iaikKICAgICAgICAgZWxzZToKQEAgLTM3Nyw3ICszNzUsNyBAQAogICAgICAgICAgICAgIyBhbGxvd2luZyBwcm90b2NvbCAwIGFuZCAxIHRvIHdvcmsgbm9ybWFsbHkuICBGb3IgdGhpcyB0bwogICAgICAgICAgICAgIyB3b3JrLCB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgYnkgX19yZWR1Y2VfXyBzaG91bGQgYmUKICAgICAgICAgICAgICMgY2FsbGVkIF9fbmV3b2JqX18sIGFuZCBpdHMgZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIGEKLSAgICAgICAgICAgICMgbmV3LXN0eWxlIGNsYXNzLiAgVGhlIGltcGxlbWVudGF0aW9uIGZvciBfX25ld29ial9fCisgICAgICAgICAgICAjIGNsYXNzLiAgVGhlIGltcGxlbWVudGF0aW9uIGZvciBfX25ld29ial9fCiAgICAgICAgICAgICAjIHNob3VsZCBiZSBhcyBmb2xsb3dzLCBhbHRob3VnaCBwaWNrbGUgaGFzIG5vIHdheSB0bwogICAgICAgICAgICAgIyB2ZXJpZnkgdGhpczoKICAgICAgICAgICAgICMKQEAgLTQ0MCw2ICs0MzgsMTQgQEAKICAgICAgICAgc2VsZi53cml0ZShOT05FKQogICAgIGRpc3BhdGNoW3R5cGUoTm9uZSldID0gc2F2ZV9ub25lCiAKKyAgICBkZWYgc2F2ZV9lbGxpcHNpcyhzZWxmLCBvYmopOgorICAgICAgICBzZWxmLnNhdmVfZ2xvYmFsKEVsbGlwc2lzLCAnRWxsaXBzaXMnKQorICAgIGRpc3BhdGNoW3R5cGUoRWxsaXBzaXMpXSA9IHNhdmVfZWxsaXBzaXMKKworICAgIGRlZiBzYXZlX25vdGltcGxlbWVudGVkKHNlbGYsIG9iaik6CisgICAgICAgIHNlbGYuc2F2ZV9nbG9iYWwoTm90SW1wbGVtZW50ZWQsICdOb3RJbXBsZW1lbnRlZCcpCisgICAgZGlzcGF0Y2hbdHlwZShOb3RJbXBsZW1lbnRlZCldID0gc2F2ZV9ub3RpbXBsZW1lbnRlZAorCiAgICAgZGVmIHNhdmVfYm9vbChzZWxmLCBvYmopOgogICAgICAgICBpZiBzZWxmLnByb3RvID49IDI6CiAgICAgICAgICAgICBzZWxmLndyaXRlKG9iaiBhbmQgTkVXVFJVRSBvciBORVdGQUxTRSkKQEAgLTEzNDUsNyArMTM1MSw3IEBACiAgICAgcmV0dXJuIGRvY3Rlc3QudGVzdG1vZCgpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgaW1wb3J0IHN5cywgYXJncGFyc2UKKyAgICBpbXBvcnQgYXJncGFyc2UKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigKICAgICAgICAgZGVzY3JpcHRpb249J2Rpc3BsYXkgY29udGVudHMgb2YgdGhlIHBpY2tsZSBmaWxlcycpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKZGlmZiAtLWdpdCBhL0xpYi9waWNrbGV0b29scy5weSBiL0xpYi9waWNrbGV0b29scy5weQppbmRleCBlYzZjYzUzLi42NmY0ZWRkIDEwMDY0NAotLS0gYS9MaWIvcGlja2xldG9vbHMucHkKKysrIGIvTGliL3BpY2tsZXRvb2xzLnB5CkBAIC01MTAsMTAgKzUxMCw3IEBACiAgICAgZWxpZiBzID09IGIiMDEiOgogICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAgdHJ5OgotICAgICAgICByZXR1cm4gaW50KHMpCi0gICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6Ci0gICAgICAgIHJldHVybiBpbnQocykKKyAgICByZXR1cm4gaW50KHMpCiAKIGRlZiByZWFkX2RlY2ltYWxubF9sb25nKGYpOgogICAgIHIiIiIKQEAgLTE2NDIsNiArMTYzOSw4IEBACiAgICAgICBpcyBwdXNoZWQgb24gdGhlIHN0YWNrLgogCiAgICAgICBOT1RFOiAgY2hlY2tzIGZvciBfX3NhZmVfZm9yX3VucGlja2xpbmdfXyB3ZW50IGF3YXkgaW4gUHl0aG9uIDIuMy4KKyAgICAgIE5PVEU6ICB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBvbGQtc3R5bGUgYW5kIG5ldy1zdHlsZSBjbGFzc2VzIGRvZXMKKyAgICAgICAgICAgICBub3QgbWFrZSBzZW5zZSBpbiBQeXRob24gMy4KICAgICAgICIiIiksCiAKICAgICBJKG5hbWU9J09CSicsCmRpZmYgLS1naXQgYS9MaWIvcGlwZXMucHkgYi9MaWIvcGlwZXMucHkKaW5kZXggNDI5NzA1My4uZjFhMTZmNiAxMDA2NDQKLS0tIGEvTGliL3BpcGVzLnB5CisrKyBiL0xpYi9waXBlcy5weQpAQCAtNjAsNyArNjAsOSBAQAogaW1wb3J0IHJlCiBpbXBvcnQgb3MKIGltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHN0cmluZworIyB3ZSBpbXBvcnQgdGhlIHF1b3RlIGZ1bmN0aW9uIHJhdGhlciB0aGFuIHRoZSBtb2R1bGUgZm9yIGJhY2t3YXJkIGNvbXBhdAorIyAocXVvdGUgdXNlZCB0byBiZSBhbiB1bmRvY3VtZW50ZWQgYnV0IHVzZWQgZnVuY3Rpb24gaW4gcGlwZXMpCitmcm9tIHNobGV4IGltcG9ydCBxdW90ZQogCiBfX2FsbF9fID0gWyJUZW1wbGF0ZSJdCiAKQEAgLTI0MywyMiArMjQ1LDMgQEAKICAgICAgICAgY21kbGlzdCA9IHRyYXBjbWQgKyAnXG4nICsgY21kbGlzdCArICdcbicgKyBybWNtZAogICAgICMKICAgICByZXR1cm4gY21kbGlzdAotCi0KLSMgUmVsaWFibHkgcXVvdGUgYSBzdHJpbmcgYXMgYSBzaW5nbGUgYXJndW1lbnQgZm9yIC9iaW4vc2gKLQotIyBTYWZlIHVucXVvdGVkCi1fc2FmZWNoYXJzID0gZnJvemVuc2V0KHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICdAJV8tKz06LC4vJykKLQotZGVmIHF1b3RlKGZpbGUpOgotICAgICIiIlJldHVybiBhIHNoZWxsLWVzY2FwZWQgdmVyc2lvbiBvZiB0aGUgZmlsZSBzdHJpbmcuIiIiCi0gICAgZm9yIGMgaW4gZmlsZToKLSAgICAgICAgaWYgYyBub3QgaW4gX3NhZmVjaGFyczoKLSAgICAgICAgICAgIGJyZWFrCi0gICAgZWxzZToKLSAgICAgICAgaWYgbm90IGZpbGU6Ci0gICAgICAgICAgICByZXR1cm4gIicnIgotICAgICAgICByZXR1cm4gZmlsZQotICAgICMgdXNlIHNpbmdsZSBxdW90ZXMsIGFuZCBwdXQgc2luZ2xlIHF1b3RlcyBpbnRvIGRvdWJsZSBxdW90ZXMKLSAgICAjIHRoZSBzdHJpbmcgJCdiIGlzIHRoZW4gcXVvdGVkIGFzICckJyInIidiJwotICAgIHJldHVybiAiJyIgKyBmaWxlLnJlcGxhY2UoIiciLCAiJ1wiJ1wiJyIpICsgIiciCmRpZmYgLS1naXQgYS9MaWIvcGtndXRpbC5weSBiL0xpYi9wa2d1dGlsLnB5CmluZGV4IDUxZGEwYjEuLmE1ZGUwNGQgMTAwNjQ0Ci0tLSBhL0xpYi9wa2d1dGlsLnB5CisrKyBiL0xpYi9wa2d1dGlsLnB5CkBAIC0yLDggKzIsMTAgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgaW1wCiBpbXBvcnQgb3MucGF0aAorZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogZnJvbSB0eXBlcyBpbXBvcnQgTW9kdWxlVHlwZQogCiBfX2FsbF9fID0gWwpAQCAtMjEsNyArMjMsNyBAQAogICAgIGlmIG1hZ2ljICE9IGltcC5nZXRfbWFnaWMoKToKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIHN0cmVhbS5yZWFkKDQpICMgU2tpcCB0aW1lc3RhbXAKKyAgICBzdHJlYW0ucmVhZCg4KSAjIFNraXAgdGltZXN0YW1wIGFuZCBzaXplCiAgICAgcmV0dXJuIG1hcnNoYWwubG9hZChzdHJlYW0pCiAKIApAQCAtMTU1LDYgKzE1Nyw0OSBAQAogCiBpdGVyX2ltcG9ydGVyX21vZHVsZXMgPSBzaW1wbGVnZW5lcmljKGl0ZXJfaW1wb3J0ZXJfbW9kdWxlcykKIAorIyBJbXBsZW1lbnQgYSBmaWxlIHdhbGtlciBmb3IgdGhlIG5vcm1hbCBpbXBvcnRsaWIgcGF0aCBob29rCitkZWYgX2l0ZXJfZmlsZV9maW5kZXJfbW9kdWxlcyhpbXBvcnRlciwgcHJlZml4PScnKToKKyAgICBpZiBpbXBvcnRlci5wYXRoIGlzIE5vbmUgb3Igbm90IG9zLnBhdGguaXNkaXIoaW1wb3J0ZXIucGF0aCk6CisgICAgICAgIHJldHVybgorCisgICAgeWllbGRlZCA9IHt9CisgICAgaW1wb3J0IGluc3BlY3QKKyAgICB0cnk6CisgICAgICAgIGZpbGVuYW1lcyA9IG9zLmxpc3RkaXIoaW1wb3J0ZXIucGF0aCkKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgIyBpZ25vcmUgdW5yZWFkYWJsZSBkaXJlY3RvcmllcyBsaWtlIGltcG9ydCBkb2VzCisgICAgICAgIGZpbGVuYW1lcyA9IFtdCisgICAgZmlsZW5hbWVzLnNvcnQoKSAgIyBoYW5kbGUgcGFja2FnZXMgYmVmb3JlIHNhbWUtbmFtZWQgbW9kdWxlcworCisgICAgZm9yIGZuIGluIGZpbGVuYW1lczoKKyAgICAgICAgbW9kbmFtZSA9IGluc3BlY3QuZ2V0bW9kdWxlbmFtZShmbikKKyAgICAgICAgaWYgbW9kbmFtZT09J19faW5pdF9fJyBvciBtb2RuYW1lIGluIHlpZWxkZWQ6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oaW1wb3J0ZXIucGF0aCwgZm4pCisgICAgICAgIGlzcGtnID0gRmFsc2UKKworICAgICAgICBpZiBub3QgbW9kbmFtZSBhbmQgb3MucGF0aC5pc2RpcihwYXRoKSBhbmQgJy4nIG5vdCBpbiBmbjoKKyAgICAgICAgICAgIG1vZG5hbWUgPSBmbgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRpcmNvbnRlbnRzID0gb3MubGlzdGRpcihwYXRoKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgIyBpZ25vcmUgdW5yZWFkYWJsZSBkaXJlY3RvcmllcyBsaWtlIGltcG9ydCBkb2VzCisgICAgICAgICAgICAgICAgZGlyY29udGVudHMgPSBbXQorICAgICAgICAgICAgZm9yIGZuIGluIGRpcmNvbnRlbnRzOgorICAgICAgICAgICAgICAgIHN1Ym5hbWUgPSBpbnNwZWN0LmdldG1vZHVsZW5hbWUoZm4pCisgICAgICAgICAgICAgICAgaWYgc3VibmFtZT09J19faW5pdF9fJzoKKyAgICAgICAgICAgICAgICAgICAgaXNwa2cgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlICAgICMgbm90IGEgcGFja2FnZQorCisgICAgICAgIGlmIG1vZG5hbWUgYW5kICcuJyBub3QgaW4gbW9kbmFtZToKKyAgICAgICAgICAgIHlpZWxkZWRbbW9kbmFtZV0gPSAxCisgICAgICAgICAgICB5aWVsZCBwcmVmaXggKyBtb2RuYW1lLCBpc3BrZworCitpdGVyX2ltcG9ydGVyX21vZHVsZXMucmVnaXN0ZXIoCisgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyLCBfaXRlcl9maWxlX2ZpbmRlcl9tb2R1bGVzKQogCiBjbGFzcyBJbXBJbXBvcnRlcjoKICAgICAiIiJQRVAgMzAyIEltcG9ydGVyIHRoYXQgd3JhcHMgUHl0aG9uJ3MgImNsYXNzaWMiIGltcG9ydCBhbGdvcml0aG0KQEAgLTE2OCw2ICsyMTMsOCBAQAogICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9Tm9uZSk6CisgICAgICAgIHdhcm4oIlRoaXMgZW11bGF0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSAnaW1wb3J0bGliJyBpbnN0ZWFkIiwKKyAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKIAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKQEAgLTIzMiw2ICsyNzksOCBAQAogICAgIGNvZGUgPSBzb3VyY2UgPSBOb25lCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZnVsbG5hbWUsIGZpbGUsIGZpbGVuYW1lLCBldGMpOgorICAgICAgICB3YXJuKCJUaGlzIGVtdWxhdGlvbiBpcyBkZXByZWNhdGVkLCB1c2UgJ2ltcG9ydGxpYicgaW5zdGVhZCIsCisgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICBzZWxmLmZpbGUgPSBmaWxlCiAgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQogICAgICAgICBzZWxmLmZ1bGxuYW1lID0gZnVsbG5hbWUKQEAgLTI1Niw3ICszMDUsNyBAQAogICAgICAgICBpZiBzZWxmLmZpbGUgYW5kIHNlbGYuZmlsZS5jbG9zZWQ6CiAgICAgICAgICAgICBtb2RfdHlwZSA9IHNlbGYuZXRjWzJdCiAgICAgICAgICAgICBpZiBtb2RfdHlwZT09aW1wLlBZX1NPVVJDRToKLSAgICAgICAgICAgICAgICBzZWxmLmZpbGUgPSBvcGVuKHNlbGYuZmlsZW5hbWUsICdyVScpCisgICAgICAgICAgICAgICAgc2VsZi5maWxlID0gb3BlbihzZWxmLmZpbGVuYW1lLCAncicpCiAgICAgICAgICAgICBlbGlmIG1vZF90eXBlIGluIChpbXAuUFlfQ09NUElMRUQsIGltcC5DX0VYVEVOU0lPTik6CiAgICAgICAgICAgICAgICAgc2VsZi5maWxlID0gb3BlbihzZWxmLmZpbGVuYW1lLCAncmInKQogCkBAIC0zMDEsNyArMzUwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlLmNsb3NlKCkKICAgICAgICAgICAgIGVsaWYgbW9kX3R5cGU9PWltcC5QWV9DT01QSUxFRDoKICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLmZpbGVuYW1lWzotMV0pOgotICAgICAgICAgICAgICAgICAgICBmID0gb3BlbihzZWxmLmZpbGVuYW1lWzotMV0sICdyVScpCisgICAgICAgICAgICAgICAgICAgIGYgPSBvcGVuKHNlbGYuZmlsZW5hbWVbOi0xXSwgJ3InKQogICAgICAgICAgICAgICAgICAgICBzZWxmLnNvdXJjZSA9IGYucmVhZCgpCiAgICAgICAgICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgZWxpZiBtb2RfdHlwZT09aW1wLlBLR19ESVJFQ1RPUlk6CkBAIC0zMTUsOSArMzY0LDkgQEAKICAgICBkZWYgZ2V0X2ZpbGVuYW1lKHNlbGYsIGZ1bGxuYW1lPU5vbmUpOgogICAgICAgICBmdWxsbmFtZSA9IHNlbGYuX2ZpeF9uYW1lKGZ1bGxuYW1lKQogICAgICAgICBtb2RfdHlwZSA9IHNlbGYuZXRjWzJdCi0gICAgICAgIGlmIHNlbGYuZXRjWzJdPT1pbXAuUEtHX0RJUkVDVE9SWToKKyAgICAgICAgaWYgbW9kX3R5cGU9PWltcC5QS0dfRElSRUNUT1JZOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9kZWxlZ2F0ZSgpLmdldF9maWxlbmFtZSgpCi0gICAgICAgIGVsaWYgc2VsZi5ldGNbMl0gaW4gKGltcC5QWV9TT1VSQ0UsIGltcC5QWV9DT01QSUxFRCwgaW1wLkNfRVhURU5TSU9OKToKKyAgICAgICAgZWxpZiBtb2RfdHlwZSBpbiAoaW1wLlBZX1NPVVJDRSwgaW1wLlBZX0NPTVBJTEVELCBpbXAuQ19FWFRFTlNJT04pOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZW5hbWUKICAgICAgICAgcmV0dXJuIE5vbmUKIApAQCAtMzY2LDEwICs0MTUsNiBAQAogICAgIFRoZSByZXR1cm5lZCBpbXBvcnRlciBpcyBjYWNoZWQgaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUKICAgICBpZiBpdCB3YXMgbmV3bHkgY3JlYXRlZCBieSBhIHBhdGggaG9vay4KIAotICAgIElmIHRoZXJlIGlzIG5vIGltcG9ydGVyLCBhIHdyYXBwZXIgYXJvdW5kIHRoZSBiYXNpYyBpbXBvcnQKLSAgICBtYWNoaW5lcnkgaXMgcmV0dXJuZWQuIFRoaXMgd3JhcHBlciBpcyBuZXZlciBpbnNlcnRlZCBpbnRvCi0gICAgdGhlIGltcG9ydGVyIGNhY2hlIChOb25lIGlzIGluc2VydGVkIGluc3RlYWQpLgotCiAgICAgVGhlIGNhY2hlIChvciBwYXJ0IG9mIGl0KSBjYW4gYmUgY2xlYXJlZCBtYW51YWxseSBpZiBhCiAgICAgcmVzY2FuIG9mIHN5cy5wYXRoX2hvb2tzIGlzIG5lY2Vzc2FyeS4KICAgICAiIiIKQEAgLTM3OSwxOCArNDI0LDEyIEBACiAgICAgICAgIGZvciBwYXRoX2hvb2sgaW4gc3lzLnBhdGhfaG9va3M6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgaW1wb3J0ZXIgPSBwYXRoX2hvb2socGF0aF9pdGVtKQorICAgICAgICAgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLnNldGRlZmF1bHQocGF0aF9pdGVtLCBpbXBvcnRlcikKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGltcG9ydGVyID0gTm9uZQotICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5zZXRkZWZhdWx0KHBhdGhfaXRlbSwgaW1wb3J0ZXIpCi0KLSAgICBpZiBpbXBvcnRlciBpcyBOb25lOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbXBvcnRlciA9IEltcEltcG9ydGVyKHBhdGhfaXRlbSkKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgaW1wb3J0ZXIgPSBOb25lCiAgICAgcmV0dXJuIGltcG9ydGVyCiAKIApAQCAtMzk4LDU1ICs0MzcsMzcgQEAKICAgICAiIiJZaWVsZCBQRVAgMzAyIGltcG9ydGVycyBmb3IgdGhlIGdpdmVuIG1vZHVsZSBuYW1lCiAKICAgICBJZiBmdWxsbmFtZSBjb250YWlucyBhICcuJywgdGhlIGltcG9ydGVycyB3aWxsIGJlIGZvciB0aGUgcGFja2FnZQotICAgIGNvbnRhaW5pbmcgZnVsbG5hbWUsIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgaW1wb3J0ZXJzIGZvciBzeXMubWV0YV9wYXRoLAotICAgIHN5cy5wYXRoLCBhbmQgUHl0aG9uJ3MgImNsYXNzaWMiIGltcG9ydCBtYWNoaW5lcnksIGluIHRoYXQgb3JkZXIuICBJZgotICAgIHRoZSBuYW1lZCBtb2R1bGUgaXMgaW4gYSBwYWNrYWdlLCB0aGF0IHBhY2thZ2UgaXMgaW1wb3J0ZWQgYXMgYSBzaWRlCisgICAgY29udGFpbmluZyBmdWxsbmFtZSwgb3RoZXJ3aXNlIHRoZXkgd2lsbCBiZSBhbGwgcmVnaXN0ZXJlZCB0b3AgbGV2ZWwKKyAgICBpbXBvcnRlcnMgKGkuZS4gdGhvc2Ugb24gYm90aCBzeXMubWV0YV9wYXRoIGFuZCBzeXMucGF0aF9ob29rcykuCisKKyAgICBJZiB0aGUgbmFtZWQgbW9kdWxlIGlzIGluIGEgcGFja2FnZSwgdGhhdCBwYWNrYWdlIGlzIGltcG9ydGVkIGFzIGEgc2lkZQogICAgIGVmZmVjdCBvZiBpbnZva2luZyB0aGlzIGZ1bmN0aW9uLgogCi0gICAgTm9uIFBFUCAzMDIgbWVjaGFuaXNtcyAoZS5nLiB0aGUgV2luZG93cyByZWdpc3RyeSkgdXNlZCBieSB0aGUKLSAgICBzdGFuZGFyZCBpbXBvcnQgbWFjaGluZXJ5IHRvIGZpbmQgZmlsZXMgaW4gYWx0ZXJuYXRpdmUgbG9jYXRpb25zCi0gICAgYXJlIHBhcnRpYWxseSBzdXBwb3J0ZWQsIGJ1dCBhcmUgc2VhcmNoZWQgQUZURVIgc3lzLnBhdGguIE5vcm1hbGx5LAotICAgIHRoZXNlIGxvY2F0aW9ucyBhcmUgc2VhcmNoZWQgQkVGT1JFIHN5cy5wYXRoLCBwcmV2ZW50aW5nIHN5cy5wYXRoCi0gICAgZW50cmllcyBmcm9tIHNoYWRvd2luZyB0aGVtLgotCi0gICAgRm9yIHRoaXMgdG8gY2F1c2UgYSB2aXNpYmxlIGRpZmZlcmVuY2UgaW4gYmVoYXZpb3VyLCB0aGVyZSBtdXN0Ci0gICAgYmUgYSBtb2R1bGUgb3IgcGFja2FnZSBuYW1lIHRoYXQgaXMgYWNjZXNzaWJsZSB2aWEgYm90aCBzeXMucGF0aAotICAgIGFuZCBvbmUgb2YgdGhlIG5vbiBQRVAgMzAyIGZpbGUgc3lzdGVtIG1lY2hhbmlzbXMuIEluIHRoaXMgY2FzZSwKLSAgICB0aGUgZW11bGF0aW9uIHdpbGwgZmluZCB0aGUgZm9ybWVyIHZlcnNpb24sIHdoaWxlIHRoZSBidWlsdGluCi0gICAgaW1wb3J0IG1lY2hhbmlzbSB3aWxsIGZpbmQgdGhlIGxhdHRlci4KLQotICAgIEl0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgdHlwZXMgY2FuIGJlIGFmZmVjdGVkIGJ5IHRoaXMgZGlzY3JlcGFuY3k6Ci0gICAgICAgIGltcC5DX0VYVEVOU0lPTiwgaW1wLlBZX1NPVVJDRSwgaW1wLlBZX0NPTVBJTEVELCBpbXAuUEtHX0RJUkVDVE9SWQorICAgIElmIG5vIG1vZHVsZSBuYW1lIGlzIHNwZWNpZmllZCwgYWxsIHRvcCBsZXZlbCBpbXBvcnRlcnMgYXJlIHByb2R1Y2VkLgogICAgICIiIgogICAgIGlmIGZ1bGxuYW1lLnN0YXJ0c3dpdGgoJy4nKToKLSAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIlJlbGF0aXZlIG1vZHVsZSBuYW1lcyBub3Qgc3VwcG9ydGVkIikKKyAgICAgICAgbXNnID0gIlJlbGF0aXZlIG1vZHVsZSBuYW1lIHshcn0gbm90IHN1cHBvcnRlZCIuZm9ybWF0KGZ1bGxuYW1lKQorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cpCiAgICAgaWYgJy4nIGluIGZ1bGxuYW1lOgogICAgICAgICAjIEdldCB0aGUgY29udGFpbmluZyBwYWNrYWdlJ3MgX19wYXRoX18KLSAgICAgICAgcGtnID0gJy4nLmpvaW4oZnVsbG5hbWUuc3BsaXQoJy4nKVs6LTFdKQotICAgICAgICBpZiBwa2cgbm90IGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAgX19pbXBvcnRfXyhwa2cpCi0gICAgICAgIHBhdGggPSBnZXRhdHRyKHN5cy5tb2R1bGVzW3BrZ10sICdfX3BhdGhfXycsIE5vbmUpIG9yIFtdCisgICAgICAgIHBrZ19uYW1lID0gZnVsbG5hbWUucnBhcnRpdGlvbigiLiIpWzBdCisgICAgICAgIHBrZyA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHBrZykKKyAgICAgICAgcGF0aCA9IGdldGF0dHIoc3lzLm1vZHVsZXNbcGtnXSwgJ19fcGF0aF9fJywgTm9uZSkKKyAgICAgICAgaWYgcGF0aCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCiAgICAgZWxzZToKICAgICAgICAgZm9yIGltcG9ydGVyIGluIHN5cy5tZXRhX3BhdGg6CiAgICAgICAgICAgICB5aWVsZCBpbXBvcnRlcgogICAgICAgICBwYXRoID0gc3lzLnBhdGgKICAgICBmb3IgaXRlbSBpbiBwYXRoOgogICAgICAgICB5aWVsZCBnZXRfaW1wb3J0ZXIoaXRlbSkKLSAgICBpZiAnLicgbm90IGluIGZ1bGxuYW1lOgotICAgICAgICB5aWVsZCBJbXBJbXBvcnRlcigpCiAKIGRlZiBnZXRfbG9hZGVyKG1vZHVsZV9vcl9uYW1lKToKICAgICAiIiJHZXQgYSBQRVAgMzAyICJsb2FkZXIiIG9iamVjdCBmb3IgbW9kdWxlX29yX25hbWUKIAotICAgIElmIHRoZSBtb2R1bGUgb3IgcGFja2FnZSBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUgbm9ybWFsIGltcG9ydAotICAgIG1lY2hhbmlzbSwgYSB3cmFwcGVyIGFyb3VuZCB0aGUgcmVsZXZhbnQgcGFydCBvZiB0aGF0IG1hY2hpbmVyeQotICAgIGlzIHJldHVybmVkLiAgUmV0dXJucyBOb25lIGlmIHRoZSBtb2R1bGUgY2Fubm90IGJlIGZvdW5kIG9yIGltcG9ydGVkLgorICAgIFJldHVybnMgTm9uZSBpZiB0aGUgbW9kdWxlIGNhbm5vdCBiZSBmb3VuZCBvciBpbXBvcnRlZC4KICAgICBJZiB0aGUgbmFtZWQgbW9kdWxlIGlzIG5vdCBhbHJlYWR5IGltcG9ydGVkLCBpdHMgY29udGFpbmluZyBwYWNrYWdlCiAgICAgKGlmIGFueSkgaXMgaW1wb3J0ZWQsIGluIG9yZGVyIHRvIGVzdGFibGlzaCB0aGUgcGFja2FnZSBfX3BhdGhfXy4KLQotICAgIFRoaXMgZnVuY3Rpb24gdXNlcyBpdGVyX2ltcG9ydGVycygpLCBhbmQgaXMgdGh1cyBzdWJqZWN0IHRvIHRoZSBzYW1lCi0gICAgbGltaXRhdGlvbnMgcmVnYXJkaW5nIHBsYXRmb3JtLXNwZWNpZmljIHNwZWNpYWwgaW1wb3J0IGxvY2F0aW9ucyBzdWNoCi0gICAgYXMgdGhlIFdpbmRvd3MgcmVnaXN0cnkuCiAgICAgIiIiCiAgICAgaWYgbW9kdWxlX29yX25hbWUgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgIG1vZHVsZV9vcl9uYW1lID0gc3lzLm1vZHVsZXNbbW9kdWxlX29yX25hbWVdCkBAIC00NjAsMjAgKzQ4MSwzMyBAQAogICAgICAgICBmdWxsbmFtZSA9IG1vZHVsZV9vcl9uYW1lCiAgICAgcmV0dXJuIGZpbmRfbG9hZGVyKGZ1bGxuYW1lKQogCisKIGRlZiBmaW5kX2xvYWRlcihmdWxsbmFtZSk6CiAgICAgIiIiRmluZCBhIFBFUCAzMDIgImxvYWRlciIgb2JqZWN0IGZvciBmdWxsbmFtZQogCi0gICAgSWYgZnVsbG5hbWUgY29udGFpbnMgZG90cywgcGF0aCBtdXN0IGJlIHRoZSBjb250YWluaW5nIHBhY2thZ2UncyBfX3BhdGhfXy4KLSAgICBSZXR1cm5zIE5vbmUgaWYgdGhlIG1vZHVsZSBjYW5ub3QgYmUgZm91bmQgb3IgaW1wb3J0ZWQuIFRoaXMgZnVuY3Rpb24gdXNlcwotICAgIGl0ZXJfaW1wb3J0ZXJzKCksIGFuZCBpcyB0aHVzIHN1YmplY3QgdG8gdGhlIHNhbWUgbGltaXRhdGlvbnMgcmVnYXJkaW5nCi0gICAgcGxhdGZvcm0tc3BlY2lmaWMgc3BlY2lhbCBpbXBvcnQgbG9jYXRpb25zIHN1Y2ggYXMgdGhlIFdpbmRvd3MgcmVnaXN0cnkuCisgICAgVGhpcyBpcyBzIGNvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIDpmdW5jOmBpbXBvcnRsaWIuZmluZF9sb2FkZXJgIHRoYXQKKyAgICBzZXRzIHRoZSAqcGF0aCogYXJndW1lbnQgY29ycmVjdGx5IHdoZW4gc2VhcmNoaW5nIGZvciBzdWJtb2R1bGVzLCBhbmQKKyAgICBhbHNvIGVuc3VyZXMgcGFyZW50IHBhY2thZ2VzIChpZiBhbnkpIGFyZSBpbXBvcnRlZCBiZWZvcmUgc2VhcmNoaW5nIGZvcgorICAgIHN1Ym1vZHVsZXMuCiAgICAgIiIiCi0gICAgZm9yIGltcG9ydGVyIGluIGl0ZXJfaW1wb3J0ZXJzKGZ1bGxuYW1lKToKLSAgICAgICAgbG9hZGVyID0gaW1wb3J0ZXIuZmluZF9tb2R1bGUoZnVsbG5hbWUpCi0gICAgICAgIGlmIGxvYWRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBsb2FkZXIKLQotICAgIHJldHVybiBOb25lCisgICAgaWYgZnVsbG5hbWUuc3RhcnRzd2l0aCgnLicpOgorICAgICAgICBtc2cgPSAiUmVsYXRpdmUgbW9kdWxlIG5hbWUgeyFyfSBub3Qgc3VwcG9ydGVkIi5mb3JtYXQoZnVsbG5hbWUpCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZykKKyAgICBwYXRoID0gTm9uZQorICAgIHBrZ19uYW1lID0gZnVsbG5hbWUucnBhcnRpdGlvbigiLiIpWzBdCisgICAgaWYgcGtnX25hbWU6CisgICAgICAgIHBrZyA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHBrZ19uYW1lKQorICAgICAgICBwYXRoID0gZ2V0YXR0cihwa2csICJfX3BhdGhfXyIsIE5vbmUpCisgICAgICAgIGlmIHBhdGggaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gaW1wb3J0bGliLmZpbmRfbG9hZGVyKGZ1bGxuYW1lLCBwYXRoKQorICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBUeXBlRXJyb3IsIFZhbHVlRXJyb3IpIGFzIGV4OgorICAgICAgICAjIFRoaXMgaGFjayBmaXhlcyBhbiBpbXBlZGFuY2UgbWlzbWF0Y2ggYmV0d2VlbiBwa2d1dGlsIGFuZAorICAgICAgICAjIGltcG9ydGxpYiwgd2hlcmUgdGhlIGxhdHRlciByYWlzZXMgb3RoZXIgZXJyb3JzIGZvciBjYXNlcyB3aGVyZQorICAgICAgICAjIHBrZ3V0aWwgcHJldmlvdXNseSByYWlzZWQgSW1wb3J0RXJyb3IKKyAgICAgICAgbXNnID0gIkVycm9yIHdoaWxlIGZpbmRpbmcgbG9hZGVyIGZvciB7IXJ9ICh7fToge30pIgorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cuZm9ybWF0KGZ1bGxuYW1lLCB0eXBlKGV4KSwgZXgpKSBmcm9tIGV4CiAKIAogZGVmIGV4dGVuZF9wYXRoKHBhdGgsIG5hbWUpOgpAQCAtNTE0LDIxICs1NDgsNDEgQEAKICAgICAgICAgIyBmcm96ZW4gcGFja2FnZS4gIFJldHVybiB0aGUgcGF0aCB1bmNoYW5nZWQgaW4gdGhhdCBjYXNlLgogICAgICAgICByZXR1cm4gcGF0aAogCi0gICAgcG5hbWUgPSBvcy5wYXRoLmpvaW4oKm5hbWUuc3BsaXQoJy4nKSkgIyBSZWNvbnN0aXR1dGUgYXMgcmVsYXRpdmUgcGF0aAogICAgIHNuYW1lX3BrZyA9IG5hbWUgKyAiLnBrZyIKLSAgICBpbml0X3B5ID0gIl9faW5pdF9fLnB5IgogCiAgICAgcGF0aCA9IHBhdGhbOl0gIyBTdGFydCB3aXRoIGEgY29weSBvZiB0aGUgZXhpc3RpbmcgcGF0aAogCi0gICAgZm9yIGRpciBpbiBzeXMucGF0aDoKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGlyLCBzdHIpIG9yIG5vdCBvcy5wYXRoLmlzZGlyKGRpcik6CisgICAgcGFyZW50X3BhY2thZ2UsIF8sIGZpbmFsX25hbWUgPSBuYW1lLnJwYXJ0aXRpb24oJy4nKQorICAgIGlmIHBhcmVudF9wYWNrYWdlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWFyY2hfcGF0aCA9IHN5cy5tb2R1bGVzW3BhcmVudF9wYWNrYWdlXS5fX3BhdGhfXworICAgICAgICBleGNlcHQgKEtleUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAjIFdlIGNhbid0IGRvIGFueXRoaW5nOiBmaW5kX2xvYWRlcigpIHJldHVybnMgTm9uZSB3aGVuCisgICAgICAgICAgICAjIHBhc3NlZCBhIGRvdHRlZCBuYW1lLgorICAgICAgICAgICAgcmV0dXJuIHBhdGgKKyAgICBlbHNlOgorICAgICAgICBzZWFyY2hfcGF0aCA9IHN5cy5wYXRoCisKKyAgICBmb3IgZGlyIGluIHNlYXJjaF9wYXRoOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkaXIsIHN0cik6CiAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBzdWJkaXIgPSBvcy5wYXRoLmpvaW4oZGlyLCBwbmFtZSkKLSAgICAgICAgIyBYWFggVGhpcyBtYXkgc3RpbGwgYWRkIGR1cGxpY2F0ZSBlbnRyaWVzIHRvIHBhdGggb24KLSAgICAgICAgIyBjYXNlLWluc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zCi0gICAgICAgIGluaXRmaWxlID0gb3MucGF0aC5qb2luKHN1YmRpciwgaW5pdF9weSkKLSAgICAgICAgaWYgc3ViZGlyIG5vdCBpbiBwYXRoIGFuZCBvcy5wYXRoLmlzZmlsZShpbml0ZmlsZSk6Ci0gICAgICAgICAgICBwYXRoLmFwcGVuZChzdWJkaXIpCisKKyAgICAgICAgZmluZGVyID0gZ2V0X2ltcG9ydGVyKGRpcikKKyAgICAgICAgaWYgZmluZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIyBJcyB0aGlzIGZpbmRlciBQRVAgNDIwIGNvbXBsaWFudD8KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoZmluZGVyLCAnZmluZF9sb2FkZXInKToKKyAgICAgICAgICAgICAgICBsb2FkZXIsIHBvcnRpb25zID0gZmluZGVyLmZpbmRfbG9hZGVyKGZpbmFsX25hbWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgTm8sIG5vIG5lZWQgdG8gY2FsbCBpdAorICAgICAgICAgICAgICAgIGxvYWRlciA9IE5vbmUKKyAgICAgICAgICAgICAgICBwb3J0aW9ucyA9IFtdCisKKyAgICAgICAgICAgIGZvciBwb3J0aW9uIGluIHBvcnRpb25zOgorICAgICAgICAgICAgICAgICMgWFhYIFRoaXMgbWF5IHN0aWxsIGFkZCBkdXBsaWNhdGUgZW50cmllcyB0byBwYXRoIG9uCisgICAgICAgICAgICAgICAgIyBjYXNlLWluc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zCisgICAgICAgICAgICAgICAgaWYgcG9ydGlvbiBub3QgaW4gcGF0aDoKKyAgICAgICAgICAgICAgICAgICAgcGF0aC5hcHBlbmQocG9ydGlvbikKKwogICAgICAgICAjIFhYWCBJcyB0aGlzIHRoZSByaWdodCB0aGluZyBmb3Igc3VicGFja2FnZXMgbGlrZSB6b3BlLmFwcD8KICAgICAgICAgIyBJdCBsb29rcyBmb3IgYSBmaWxlIG5hbWVkICJ6b3BlLmFwcC5wa2ciCiAgICAgICAgIHBrZ2ZpbGUgPSBvcy5wYXRoLmpvaW4oZGlyLCBzbmFtZV9wa2cpCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1nZW5lcmljL3JlZ2VuIGIvTGliL3BsYXQtZ2VuZXJpYy9yZWdlbgppbmRleCBhMjBjZGMxLi5jOTYxNjdkIDEwMDc1NQotLS0gYS9MaWIvcGxhdC1nZW5lcmljL3JlZ2VuCisrKyBiL0xpYi9wbGF0LWdlbmVyaWMvcmVnZW4KQEAgLTEsMyArMSwzIEBACiAjISAvYmluL3NoCiBzZXQgLXYKLXB5dGhvbiRFWEUgLi4vLi4vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAorZXZhbCAkUFlUSE9OX0ZPUl9CVUlMRCAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgIicodV9sb25nKSciIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWxpbnV4Mi9DRFJPTS5weSBiL0xpYi9wbGF0LWxpbnV4L0NEUk9NLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvcGxhdC1saW51eDIvQ0RST00ucHkKcmVuYW1lIHRvIExpYi9wbGF0LWxpbnV4L0NEUk9NLnB5CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1saW51eDIvRExGQ04ucHkgYi9MaWIvcGxhdC1saW51eC9ETEZDTi5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3BsYXQtbGludXgyL0RMRkNOLnB5CnJlbmFtZSB0byBMaWIvcGxhdC1saW51eC9ETEZDTi5weQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgyL0lOLnB5IGIvTGliL3BsYXQtbGludXgvSU4ucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9wbGF0LWxpbnV4Mi9JTi5weQpyZW5hbWUgdG8gTGliL3BsYXQtbGludXgvSU4ucHkKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWxpbnV4Mi9UWVBFUy5weSBiL0xpYi9wbGF0LWxpbnV4L1RZUEVTLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvcGxhdC1saW51eDIvVFlQRVMucHkKcmVuYW1lIHRvIExpYi9wbGF0LWxpbnV4L1RZUEVTLnB5CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1saW51eDIvcmVnZW4gYi9MaWIvcGxhdC1saW51eC9yZWdlbgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3BsYXQtbGludXgyL3JlZ2VuCnJlbmFtZSB0byBMaWIvcGxhdC1saW51eC9yZWdlbgpkaWZmIC0tZ2l0IGEvTGliL3BsYXRmb3JtLnB5IGIvTGliL3BsYXRmb3JtLnB5CmluZGV4IDY4NmEwNDUuLjJiOGEyNGEgMTAwNzU1Ci0tLSBhL0xpYi9wbGF0Zm9ybS5weQorKysgYi9MaWIvcGxhdGZvcm0ucHkKQEAgLTExMSw2ICsxMTEsNyBAQAogCiBfX3ZlcnNpb25fXyA9ICcxLjAuNycKIAoraW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgc3lzLCBvcywgcmUsIHN1YnByb2Nlc3MKIAogIyMjIEdsb2JhbHMgJiBDb25zdGFudHMKQEAgLTEzMCwxNSArMTMxLDE1IEBACiAKICMjIyBQbGF0Zm9ybSBzcGVjaWZpYyBBUElzCiAKLV9saWJjX3NlYXJjaCA9IHJlLmNvbXBpbGUocicoX19saWJjX2luaXQpJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnfCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJyhHTElCQ18oWzAtOS5dKykpJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnfCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJyhsaWJjKF9cdyspP1wuc28oPzpcLihcZFswLTkuXSopKT8pJywgcmUuQVNDSUkpCitfbGliY19zZWFyY2ggPSByZS5jb21waWxlKGInKF9fbGliY19pbml0KScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYid8JworICAgICAgICAgICAgICAgICAgICAgICAgICBiJyhHTElCQ18oWzAtOS5dKykpJworICAgICAgICAgICAgICAgICAgICAgICAgICBiJ3wnCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJyhsaWJjKF9cdyspP1wuc28oPzpcLihcZFswLTkuXSopKT8pJywgcmUuQVNDSUkpCiAKIGRlZiBsaWJjX3ZlcihleGVjdXRhYmxlPXN5cy5leGVjdXRhYmxlLGxpYj0nJyx2ZXJzaW9uPScnLAogCi0gICAgICAgICAgICAgY2h1bmtzaXplPTIwNDgpOgorICAgICAgICAgICAgIGNodW5rc2l6ZT0xNjM4NCk6CiAKICAgICAiIiIgVHJpZXMgdG8gZGV0ZXJtaW5lIHRoZSBsaWJjIHZlcnNpb24gdGhhdCB0aGUgZmlsZSBleGVjdXRhYmxlCiAgICAgICAgICh3aGljaCBkZWZhdWx0cyB0byB0aGUgUHl0aG9uIGludGVycHJldGVyKSBpcyBsaW5rZWQgYWdhaW5zdC4KQEAgLTE1OSwxNyArMTYwLDIyIEBACiAgICAgICAgICMgYWJsZSB0byBvcGVuIHN5bWxpbmtzIGZvciByZWFkaW5nCiAgICAgICAgIGV4ZWN1dGFibGUgPSBvcy5wYXRoLnJlYWxwYXRoKGV4ZWN1dGFibGUpCiAgICAgZiA9IG9wZW4oZXhlY3V0YWJsZSwncmInKQotICAgIGJpbmFyeSA9IGYucmVhZChjaHVua3NpemUpLmRlY29kZSgnbGF0aW4tMScpCisgICAgYmluYXJ5ID0gZi5yZWFkKGNodW5rc2l6ZSkKICAgICBwb3MgPSAwCiAgICAgd2hpbGUgMToKLSAgICAgICAgbSA9IF9saWJjX3NlYXJjaC5zZWFyY2goYmluYXJ5LHBvcykKKyAgICAgICAgaWYgYidsaWJjJyBpbiBiaW5hcnkgb3IgYidHTElCQycgaW4gYmluYXJ5OgorICAgICAgICAgICAgbSA9IF9saWJjX3NlYXJjaC5zZWFyY2goYmluYXJ5LHBvcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG0gPSBOb25lCiAgICAgICAgIGlmIG5vdCBtOgotICAgICAgICAgICAgYmluYXJ5ID0gZi5yZWFkKGNodW5rc2l6ZSkuZGVjb2RlKCdsYXRpbi0xJykKKyAgICAgICAgICAgIGJpbmFyeSA9IGYucmVhZChjaHVua3NpemUpCiAgICAgICAgICAgICBpZiBub3QgYmluYXJ5OgogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBwb3MgPSAwCiAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBsaWJjaW5pdCxnbGliYyxnbGliY3ZlcnNpb24sc28sdGhyZWFkcyxzb3ZlcnNpb24gPSBtLmdyb3VwcygpCisgICAgICAgIGxpYmNpbml0LGdsaWJjLGdsaWJjdmVyc2lvbixzbyx0aHJlYWRzLHNvdmVyc2lvbiA9IFsKKyAgICAgICAgICAgIHMuZGVjb2RlKCdsYXRpbjEnKSBpZiBzIGlzIG5vdCBOb25lIGVsc2UgcworICAgICAgICAgICAgZm9yIHMgaW4gbS5ncm91cHMoKV0KICAgICAgICAgaWYgbGliY2luaXQgYW5kIG5vdCBsaWI6CiAgICAgICAgICAgICBsaWIgPSAnbGliYycKICAgICAgICAgZWxpZiBnbGliYzoKQEAgLTI1NSw3ICsyNjEsNyBAQAogX3N1cHBvcnRlZF9kaXN0cyA9ICgKICAgICAnU3VTRScsICdkZWJpYW4nLCAnZmVkb3JhJywgJ3JlZGhhdCcsICdjZW50b3MnLAogICAgICdtYW5kcmFrZScsICdtYW5kcml2YScsICdyb2NrcycsICdzbGFja3dhcmUnLCAneWVsbG93ZG9nJywgJ2dlbnRvbycsCi0gICAgJ1VuaXRlZExpbnV4JywgJ3R1cmJvbGludXgnKQorICAgICdVbml0ZWRMaW51eCcsICd0dXJib2xpbnV4JywgJ2FyY2gnLCAnbWFnZWlhJykKIAogZGVmIF9wYXJzZV9yZWxlYXNlX2ZpbGUoZmlyc3RsaW5lKToKIApAQCAtMzU3LDkyICszNjMsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZF9kaXN0cz1zdXBwb3J0ZWRfZGlzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2Rpc3RyaWJ1dGlvbl9uYW1lPTApCiAKLWNsYXNzIF9wb3BlbjoKLQotICAgICIiIiBGYWlybHkgcG9ydGFibGUgKGFsdGVybmF0aXZlKSBwb3BlbiBpbXBsZW1lbnRhdGlvbi4KLQotICAgICAgICBUaGlzIGlzIG1vc3RseSBuZWVkZWQgaW4gY2FzZSBvcy5wb3BlbigpIGlzIG5vdCBhdmFpbGFibGUsIG9yCi0gICAgICAgIGRvZXNuJ3Qgd29yayBhcyBhZHZlcnRpc2VkLCBlLmcuIGluIFdpbjlYIEdVSSBwcm9ncmFtcyBsaWtlCi0gICAgICAgIFB5dGhvbldpbiBvciBJRExFLgotCi0gICAgICAgIFdyaXRpbmcgdG8gdGhlIHBpcGUgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuCi0KLSAgICAiIiIKLSAgICB0bXBmaWxlID0gJycKLSAgICBwaXBlID0gTm9uZQotICAgIGJ1ZnNpemUgPSBOb25lCi0gICAgbW9kZSA9ICdyJwotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsY21kLG1vZGU9J3InLGJ1ZnNpemU9Tm9uZSk6Ci0KLSAgICAgICAgaWYgbW9kZSAhPSAncic6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdwb3BlbigpLWVtdWxhdGlvbiBvbmx5IHN1cHBvcnRzIHJlYWQgbW9kZScpCi0gICAgICAgIGltcG9ydCB0ZW1wZmlsZQotICAgICAgICBzZWxmLnRtcGZpbGUgPSB0bXBmaWxlID0gdGVtcGZpbGUubWt0ZW1wKCkKLSAgICAgICAgb3Muc3lzdGVtKGNtZCArICcgPiAlcycgJSB0bXBmaWxlKQotICAgICAgICBzZWxmLnBpcGUgPSBvcGVuKHRtcGZpbGUsJ3JiJykKLSAgICAgICAgc2VsZi5idWZzaXplID0gYnVmc2l6ZQotICAgICAgICBzZWxmLm1vZGUgPSBtb2RlCi0KLSAgICBkZWYgcmVhZChzZWxmKToKLQotICAgICAgICByZXR1cm4gc2VsZi5waXBlLnJlYWQoKQotCi0gICAgZGVmIHJlYWRsaW5lcyhzZWxmKToKLQotICAgICAgICBpZiBzZWxmLmJ1ZnNpemUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5waXBlLnJlYWRsaW5lcygpCi0KLSAgICBkZWYgY2xvc2Uoc2VsZiwKLQotICAgICAgICAgICAgICByZW1vdmU9b3MudW5saW5rLGVycm9yPW9zLmVycm9yKToKLQotICAgICAgICBpZiBzZWxmLnBpcGU6Ci0gICAgICAgICAgICByYyA9IHNlbGYucGlwZS5jbG9zZSgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYyA9IDI1NQotICAgICAgICBpZiBzZWxmLnRtcGZpbGU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmVtb3ZlKHNlbGYudG1wZmlsZSkKLSAgICAgICAgICAgIGV4Y2VwdCBlcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHJldHVybiByYwotCi0gICAgIyBBbGlhcwotICAgIF9fZGVsX18gPSBjbG9zZQotCiBkZWYgcG9wZW4oY21kLCBtb2RlPSdyJywgYnVmc2l6ZT0tMSk6CiAKICAgICAiIiIgUG9ydGFibGUgcG9wZW4oKSBpbnRlcmZhY2UuCiAgICAgIiIiCi0gICAgIyBGaW5kIGEgd29ya2luZyBwb3BlbiBpbXBsZW1lbnRhdGlvbiBwcmVmZXJyaW5nIHdpbjMycGlwZS5wb3BlbgotICAgICMgb3ZlciBvcy5wb3BlbiBvdmVyIF9wb3BlbgotICAgIHBvcGVuID0gTm9uZQotICAgIGlmIG9zLmVudmlyb24uZ2V0KCdPUycsJycpID09ICdXaW5kb3dzX05UJzoKLSAgICAgICAgIyBPbiBOVCB3aW4zMnBpcGUgc2hvdWxkIHdvcms7IG9uIFdpbjl4IGl0IGhhbmdzIGR1ZSB0byBidWdzCi0gICAgICAgICMgaW4gdGhlIE1TIEMgbGliIChzZWUgTVMgS25vd2xlZGdlQmFzZSBhcnRpY2xlIFExNTA5NTYpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGltcG9ydCB3aW4zMnBpcGUKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcG9wZW4gPSB3aW4zMnBpcGUucG9wZW4KLSAgICBpZiBwb3BlbiBpcyBOb25lOgotICAgICAgICBpZiBoYXNhdHRyKG9zLCdwb3BlbicpOgotICAgICAgICAgICAgcG9wZW4gPSBvcy5wb3BlbgotICAgICAgICAgICAgIyBDaGVjayB3aGV0aGVyIGl0IHdvcmtzLi4uIGl0IGRvZXNuJ3QgaW4gR1VJIHByb2dyYW1zCi0gICAgICAgICAgICAjIG9uIFdpbmRvd3MgcGxhdGZvcm1zCi0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzogIyBYWFggT3RoZXJzIHRvbyA/Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBwb3BlbignJykKLSAgICAgICAgICAgICAgICBleGNlcHQgb3MuZXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBvcGVuID0gX3BvcGVuCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwb3BlbiA9IF9wb3BlbgotICAgIGlmIGJ1ZnNpemUgaXMgTm9uZToKLSAgICAgICAgcmV0dXJuIHBvcGVuKGNtZCxtb2RlKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBwb3BlbihjbWQsbW9kZSxidWZzaXplKQorICAgIGltcG9ydCB3YXJuaW5ncworICAgIHdhcm5pbmdzLndhcm4oJ3VzZSBvcy5wb3BlbiBpbnN0ZWFkJywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCisgICAgcmV0dXJuIG9zLnBvcGVuKGNtZCwgbW9kZSwgYnVmc2l6ZSkKIAogZGVmIF9ub3JtX3ZlcnNpb24odmVyc2lvbiwgYnVpbGQ9JycpOgogCkBAIC03NzksNyArNzA2LDcgQEAKICAgICBwbCA9IHBsaXN0bGliLnJlYWRQbGlzdChmbikKICAgICByZWxlYXNlID0gcGxbJ1Byb2R1Y3RWZXJzaW9uJ10KICAgICB2ZXJzaW9uaW5mbz0oJycsICcnLCAnJykKLSAgICBtYWNoaW5lID0gb3MudW5hbWUoKVs0XQorICAgIG1hY2hpbmUgPSBvcy51bmFtZSgpLm1hY2hpbmUKICAgICBpZiBtYWNoaW5lIGluICgncHBjJywgJ1Bvd2VyIE1hY2ludG9zaCcpOgogICAgICAgICAjIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGdlc3RhbHQgYmFzZWQgY29kZQogICAgICAgICBtYWNoaW5lID0gJ1Bvd2VyUEMnCkBAIC0xMDA0LDkgKzkzMSwxMCBAQAogICAgIHRyeToKICAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oWydmaWxlJywgdGFyZ2V0XSwKICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisKICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLG9zLmVycm9yKToKICAgICAgICAgcmV0dXJuIGRlZmF1bHQKLSAgICBvdXRwdXQgPSBwcm9jLmNvbW11bmljYXRlKClbMF0uZGVjb2RlKCJsYXRpbi0xIikKKyAgICBvdXRwdXQgPSBwcm9jLmNvbW11bmljYXRlKClbMF0uZGVjb2RlKCdsYXRpbi0xJykKICAgICByYyA9IHByb2Mud2FpdCgpCiAgICAgaWYgbm90IG91dHB1dCBvciByYzoKICAgICAgICAgcmV0dXJuIGRlZmF1bHQKQEAgLTExMDcsNiArMTAzNSw5IEBACiAKICMjIyBQb3J0YWJsZSB1bmFtZSgpIGludGVyZmFjZQogCit1bmFtZV9yZXN1bHQgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCJ1bmFtZV9yZXN1bHQiLAorICAgICAgICAgICAgICAgICAgICAic3lzdGVtIG5vZGUgcmVsZWFzZSB2ZXJzaW9uIG1hY2hpbmUgcHJvY2Vzc29yIikKKwogX3VuYW1lX2NhY2hlID0gTm9uZQogCiBkZWYgdW5hbWUoKToKQEAgLTEyNDEsNyArMTE3Miw3IEBACiAgICAgICAgIHN5c3RlbSA9ICdXaW5kb3dzJwogICAgICAgICByZWxlYXNlID0gJ1Zpc3RhJwogCi0gICAgX3VuYW1lX2NhY2hlID0gc3lzdGVtLG5vZGUscmVsZWFzZSx2ZXJzaW9uLG1hY2hpbmUscHJvY2Vzc29yCisgICAgX3VuYW1lX2NhY2hlID0gdW5hbWVfcmVzdWx0KHN5c3RlbSxub2RlLHJlbGVhc2UsdmVyc2lvbixtYWNoaW5lLHByb2Nlc3NvcikKICAgICByZXR1cm4gX3VuYW1lX2NhY2hlCiAKICMjIyBEaXJlY3QgaW50ZXJmYWNlcyB0byBzb21lIG9mIHRoZSB1bmFtZSgpIHJldHVybiB2YWx1ZXMKQEAgLTEyNTMsNyArMTE4NCw3IEBACiAgICAgICAgIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpZiB0aGUgdmFsdWUgY2Fubm90IGJlIGRldGVybWluZWQuCiAKICAgICAiIiIKLSAgICByZXR1cm4gdW5hbWUoKVswXQorICAgIHJldHVybiB1bmFtZSgpLnN5c3RlbQogCiBkZWYgbm9kZSgpOgogCkBAIC0xMjYzLDcgKzExOTQsNyBAQAogICAgICAgICBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBkZXRlcm1pbmVkLgogCiAgICAgIiIiCi0gICAgcmV0dXJuIHVuYW1lKClbMV0KKyAgICByZXR1cm4gdW5hbWUoKS5ub2RlCiAKIGRlZiByZWxlYXNlKCk6CiAKQEAgLTEyNzIsNyArMTIwMyw3IEBACiAgICAgICAgIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpZiB0aGUgdmFsdWUgY2Fubm90IGJlIGRldGVybWluZWQuCiAKICAgICAiIiIKLSAgICByZXR1cm4gdW5hbWUoKVsyXQorICAgIHJldHVybiB1bmFtZSgpLnJlbGVhc2UKIAogZGVmIHZlcnNpb24oKToKIApAQCAtMTI4MSw3ICsxMjEyLDcgQEAKICAgICAgICAgQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGlmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZC4KIAogICAgICIiIgotICAgIHJldHVybiB1bmFtZSgpWzNdCisgICAgcmV0dXJuIHVuYW1lKCkudmVyc2lvbgogCiBkZWYgbWFjaGluZSgpOgogCkBAIC0xMjkwLDcgKzEyMjEsNyBAQAogICAgICAgICBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBkZXRlcm1pbmVkLgogCiAgICAgIiIiCi0gICAgcmV0dXJuIHVuYW1lKClbNF0KKyAgICByZXR1cm4gdW5hbWUoKS5tYWNoaW5lCiAKIGRlZiBwcm9jZXNzb3IoKToKIApAQCAtMTMwMiw3ICsxMjMzLDcgQEAKICAgICAgICAgZS5nLiAgTmV0QlNEIGRvZXMgdGhpcy4KIAogICAgICIiIgotICAgIHJldHVybiB1bmFtZSgpWzVdCisgICAgcmV0dXJuIHVuYW1lKCkucHJvY2Vzc29yCiAKICMjIyBWYXJpb3VzIEFQSXMgZm9yIGV4dHJhY3RpbmcgaW5mb3JtYXRpb24gZnJvbSBzeXMudmVyc2lvbgogCmRpZmYgLS1naXQgYS9MaWIvcGxpc3RsaWIucHkgYi9MaWIvcGxpc3RsaWIucHkKaW5kZXggMmU3ZTUxMi4uNDFmZDhmMiAxMDA2NDQKLS0tIGEvTGliL3BsaXN0bGliLnB5CisrKyBiL0xpYi9wbGlzdGxpYi5weQpAQCAtMjM3LDIwICsyMzcsMjYgQEAKICAgICAgICAgc2VsZi5lbmRFbGVtZW50KCJkYXRhIikKIAogICAgIGRlZiB3cml0ZURpY3Qoc2VsZiwgZCk6Ci0gICAgICAgIHNlbGYuYmVnaW5FbGVtZW50KCJkaWN0IikKLSAgICAgICAgaXRlbXMgPSBzb3J0ZWQoZC5pdGVtcygpKQotICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVtczoKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGtleSwgc3RyKToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImtleXMgbXVzdCBiZSBzdHJpbmdzIikKLSAgICAgICAgICAgIHNlbGYuc2ltcGxlRWxlbWVudCgia2V5Iiwga2V5KQotICAgICAgICAgICAgc2VsZi53cml0ZVZhbHVlKHZhbHVlKQotICAgICAgICBzZWxmLmVuZEVsZW1lbnQoImRpY3QiKQorICAgICAgICBpZiBkOgorICAgICAgICAgICAgc2VsZi5iZWdpbkVsZW1lbnQoImRpY3QiKQorICAgICAgICAgICAgaXRlbXMgPSBzb3J0ZWQoZC5pdGVtcygpKQorICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gaXRlbXM6CisgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoa2V5LCBzdHIpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImtleXMgbXVzdCBiZSBzdHJpbmdzIikKKyAgICAgICAgICAgICAgICBzZWxmLnNpbXBsZUVsZW1lbnQoImtleSIsIGtleSkKKyAgICAgICAgICAgICAgICBzZWxmLndyaXRlVmFsdWUodmFsdWUpCisgICAgICAgICAgICBzZWxmLmVuZEVsZW1lbnQoImRpY3QiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zaW1wbGVFbGVtZW50KCJkaWN0IikKIAogICAgIGRlZiB3cml0ZUFycmF5KHNlbGYsIGFycmF5KToKLSAgICAgICAgc2VsZi5iZWdpbkVsZW1lbnQoImFycmF5IikKLSAgICAgICAgZm9yIHZhbHVlIGluIGFycmF5OgotICAgICAgICAgICAgc2VsZi53cml0ZVZhbHVlKHZhbHVlKQotICAgICAgICBzZWxmLmVuZEVsZW1lbnQoImFycmF5IikKKyAgICAgICAgaWYgYXJyYXk6CisgICAgICAgICAgICBzZWxmLmJlZ2luRWxlbWVudCgiYXJyYXkiKQorICAgICAgICAgICAgZm9yIHZhbHVlIGluIGFycmF5OgorICAgICAgICAgICAgICAgIHNlbGYud3JpdGVWYWx1ZSh2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuZW5kRWxlbWVudCgiYXJyYXkiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zaW1wbGVFbGVtZW50KCJhcnJheSIpCiAKIAogY2xhc3MgX0ludGVybmFsRGljdChkaWN0KToKQEAgLTI2NiwxMyArMjcyLDEzIEBACiAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihhdHRyKQogICAgICAgICBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiAgICAgICAgIHdhcm4oIkF0dHJpYnV0ZSBhY2Nlc3MgZnJvbSBwbGlzdCBkaWN0cyBpcyBkZXByZWNhdGVkLCB1c2UgZFtrZXldICIKLSAgICAgICAgICAgICAibm90YXRpb24gaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAgIm5vdGF0aW9uIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiB2YWx1ZQogCiAgICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIGF0dHIsIHZhbHVlKToKICAgICAgICAgZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogICAgICAgICB3YXJuKCJBdHRyaWJ1dGUgYWNjZXNzIGZyb20gcGxpc3QgZGljdHMgaXMgZGVwcmVjYXRlZCwgdXNlIGRba2V5XSAiCi0gICAgICAgICAgICAgIm5vdGF0aW9uIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgICJub3RhdGlvbiBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmW2F0dHJdID0gdmFsdWUKIAogICAgIGRlZiBfX2RlbGF0dHJfXyhzZWxmLCBhdHRyKToKQEAgLTI4MiwxNCArMjg4LDE0IEBACiAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihhdHRyKQogICAgICAgICBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiAgICAgICAgIHdhcm4oIkF0dHJpYnV0ZSBhY2Nlc3MgZnJvbSBwbGlzdCBkaWN0cyBpcyBkZXByZWNhdGVkLCB1c2UgZFtrZXldICIKLSAgICAgICAgICAgICAibm90YXRpb24gaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAgIm5vdGF0aW9uIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAKIGNsYXNzIERpY3QoX0ludGVybmFsRGljdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgogICAgICAgICBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiAgICAgICAgIHdhcm4oIlRoZSBwbGlzdGxpYi5EaWN0IGNsYXNzIGlzIGRlcHJlY2F0ZWQsIHVzZSBidWlsdGluIGRpY3QgaW5zdGVhZCIsCi0gICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCiAKIApAQCAtMzAyLDcgKzMwOCw3IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKICAgICAgICAgZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogICAgICAgICB3YXJuKCJUaGUgUGxpc3QgY2xhc3MgaXMgZGVwcmVjYXRlZCwgdXNlIHRoZSByZWFkUGxpc3QoKSBhbmQgIgotICAgICAgICAgICAgICJ3cml0ZVBsaXN0KCkgZnVuY3Rpb25zIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgICJ3cml0ZVBsaXN0KCkgZnVuY3Rpb25zIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCiAKICAgICBkZWYgZnJvbUZpbGUoY2xzLCBwYXRoT3JGaWxlKToKZGlmZiAtLWdpdCBhL0xpYi9wb3BsaWIucHkgYi9MaWIvcG9wbGliLnB5CmluZGV4IDg0ZWE4OGQuLmQ0MmQ5ZGQgMTAwNjQ0Ci0tLSBhL0xpYi9wb3BsaWIucHkKKysrIGIvTGliL3BvcGxpYi5weQpAQCAtMjUwLDE1ICsyNTAsMTggQEAKIAogICAgIGRlZiBxdWl0KHNlbGYpOgogICAgICAgICAiIiJTaWdub2ZmOiBjb21taXQgY2hhbmdlcyBvbiBzZXJ2ZXIsIHVubG9jayBtYWlsYm94LCBjbG9zZSBjb25uZWN0aW9uLiIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXNwID0gc2VsZi5fc2hvcnRjbWQoJ1FVSVQnKQotICAgICAgICBleGNlcHQgZXJyb3JfcHJvdG8gYXMgdmFsOgotICAgICAgICAgICAgcmVzcCA9IHZhbAotICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQotICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQotICAgICAgICBkZWwgc2VsZi5maWxlLCBzZWxmLnNvY2sKKyAgICAgICAgcmVzcCA9IHNlbGYuX3Nob3J0Y21kKCdRVUlUJykKKyAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgIHJldHVybiByZXNwCiAKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICIiIkNsb3NlIHRoZSBjb25uZWN0aW9uIHdpdGhvdXQgYXNzdW1pbmcgYW55dGhpbmcgYWJvdXQgaXQuIiIiCisgICAgICAgIGlmIHNlbGYuZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuZmlsZS5jbG9zZSgpCisgICAgICAgIGlmIHNlbGYuc29jayBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc29jay5jbG9zZSgpCisgICAgICAgIHNlbGYuZmlsZSA9IHNlbGYuc29jayA9IE5vbmUKKwogICAgICNfX2RlbF9fID0gcXVpdAogCiAKZGlmZiAtLWdpdCBhL0xpYi9wb3NpeHBhdGgucHkgYi9MaWIvcG9zaXhwYXRoLnB5CmluZGV4IGJjNzZjOTAuLmIxZTFhOTIgMTAwNjQ0Ci0tLSBhL0xpYi9wb3NpeHBhdGgucHkKKysrIGIvTGliL3Bvc2l4cGF0aC5weQpAQCAtODgsNyArODgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcyBpbiAoYSwgKSArIHApCiAgICAgICAgIGlmIHZhbGlkX3R5cGVzOgogICAgICAgICAgICAgIyBNdXN0IGhhdmUgYSBtaXh0dXJlIG9mIHRleHQgYW5kIGJpbmFyeSBkYXRhCi0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbid0IG1peCBzdHJpbmdzIGFuZCBieXRlcyBpbiBwYXRoIGNvbXBvbmVudHMuIikKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgbWl4IHN0cmluZ3MgYW5kIGJ5dGVzIGluIHBhdGggIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21wb25lbnRzLiIpIGZyb20gTm9uZQogICAgICAgICByYWlzZQogICAgIHJldHVybiBwYXRoCiAKZGlmZiAtLWdpdCBhL0xpYi9wcm9maWxlLnB5IGIvTGliL3Byb2ZpbGUucHkKaW5kZXggMjk3ZTMyZC4uNzQzZTc3ZCAxMDA3NTUKLS0tIGEvTGliL3Byb2ZpbGUucHkKKysrIGIvTGliL3Byb2ZpbGUucHkKQEAgLTgzLDI2ICs4Myw2IEBACiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIHByb2YucHJpbnRfc3RhdHMoc29ydCkKIAotaWYgaGFzYXR0cihvcywgInRpbWVzIik6Ci0gICAgZGVmIF9nZXRfdGltZV90aW1lcyh0aW1lcj1vcy50aW1lcyk6Ci0gICAgICAgIHQgPSB0aW1lcigpCi0gICAgICAgIHJldHVybiB0WzBdICsgdFsxXQotCi0jIFVzaW5nIGdldHJ1c2FnZSgzKSBpcyBiZXR0ZXIgdGhhbiBjbG9jaygzKSBpZiBhdmFpbGFibGU6Ci0jIG9uIHNvbWUgc3lzdGVtcyAoZS5nLiBGcmVlQlNEKSwgZ2V0cnVzYWdlIGhhcyBhIGhpZ2hlciByZXNvbHV0aW9uCi0jIEZ1cnRoZXJtb3JlLCBvbiBhIFBPU0lYIHN5c3RlbSwgcmV0dXJucyBtaWNyb3NlY29uZHMsIHdoaWNoCi0jIHdyYXAgYXJvdW5kIGFmdGVyIDM2bWluLgotX2hhc19yZXMgPSAwCi10cnk6Ci0gICAgaW1wb3J0IHJlc291cmNlCi0gICAgcmVzZ2V0cnVzYWdlID0gbGFtYmRhOiByZXNvdXJjZS5nZXRydXNhZ2UocmVzb3VyY2UuUlVTQUdFX1NFTEYpCi0gICAgZGVmIF9nZXRfdGltZV9yZXNvdXJjZSh0aW1lcj1yZXNnZXRydXNhZ2UpOgotICAgICAgICB0ID0gdGltZXIoKQotICAgICAgICByZXR1cm4gdFswXSArIHRbMV0KLSAgICBfaGFzX3JlcyA9IDEKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi0KIGNsYXNzIFByb2ZpbGU6CiAgICAgIiIiUHJvZmlsZXIgY2xhc3MuCiAKQEAgLTE1NSwyMCArMTM1LDggQEAKICAgICAgICAgc2VsZi5iaWFzID0gYmlhcyAgICAgIyBNYXRlcmlhbGl6ZSBpbiBsb2NhbCBkaWN0IGZvciBsb29rdXAgc3BlZWQuCiAKICAgICAgICAgaWYgbm90IHRpbWVyOgotICAgICAgICAgICAgaWYgX2hhc19yZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi50aW1lciA9IHJlc2dldHJ1c2FnZQotICAgICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2hlciA9IHNlbGYudHJhY2VfZGlzcGF0Y2gKLSAgICAgICAgICAgICAgICBzZWxmLmdldF90aW1lID0gX2dldF90aW1lX3Jlc291cmNlCi0gICAgICAgICAgICBlbGlmIGhhc2F0dHIodGltZSwgJ2Nsb2NrJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi50aW1lciA9IHNlbGYuZ2V0X3RpbWUgPSB0aW1lLmNsb2NrCi0gICAgICAgICAgICAgICAgc2VsZi5kaXNwYXRjaGVyID0gc2VsZi50cmFjZV9kaXNwYXRjaF9pCi0gICAgICAgICAgICBlbGlmIGhhc2F0dHIob3MsICd0aW1lcycpOgotICAgICAgICAgICAgICAgIHNlbGYudGltZXIgPSBvcy50aW1lcwotICAgICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2hlciA9IHNlbGYudHJhY2VfZGlzcGF0Y2gKLSAgICAgICAgICAgICAgICBzZWxmLmdldF90aW1lID0gX2dldF90aW1lX3RpbWVzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYudGltZXIgPSBzZWxmLmdldF90aW1lID0gdGltZS50aW1lCi0gICAgICAgICAgICAgICAgc2VsZi5kaXNwYXRjaGVyID0gc2VsZi50cmFjZV9kaXNwYXRjaF9pCisgICAgICAgICAgICBzZWxmLnRpbWVyID0gc2VsZi5nZXRfdGltZSA9IHRpbWUucHJvY2Vzc190aW1lCisgICAgICAgICAgICBzZWxmLmRpc3BhdGNoZXIgPSBzZWxmLnRyYWNlX2Rpc3BhdGNoX2kKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYudGltZXIgPSB0aW1lcgogICAgICAgICAgICAgdCA9IHNlbGYudGltZXIoKSAjIHRlc3Qgb3V0IHRpbWVyIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9MaWIvcHN0YXRzLnB5IGIvTGliL3BzdGF0cy5weQppbmRleCBiZmJhYTQxLi42YTc3NjA1IDEwMDY0NAotLS0gYS9MaWIvcHN0YXRzLnB5CisrKyBiL0xpYi9wc3RhdHMucHkKQEAgLTY3OCwxMyArNjc4LDE0IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0b3AKICAgICAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBpbXBvcnQgc3lzCiAgICAgaWYgbGVuKHN5cy5hcmd2KSA+IDE6CiAgICAgICAgIGluaXRwcm9maWxlID0gc3lzLmFyZ3ZbMV0KICAgICBlbHNlOgogICAgICAgICBpbml0cHJvZmlsZSA9IE5vbmUKICAgICB0cnk6CiAgICAgICAgIGJyb3dzZXIgPSBQcm9maWxlQnJvd3Nlcihpbml0cHJvZmlsZSkKKyAgICAgICAgZm9yIHByb2ZpbGUgaW4gc3lzLmFyZ3ZbMjpdOgorICAgICAgICAgICAgYnJvd3Nlci5kb19hZGQocHJvZmlsZSkKICAgICAgICAgcHJpbnQoIldlbGNvbWUgdG8gdGhlIHByb2ZpbGUgc3RhdGlzdGljcyBicm93c2VyLiIsIGZpbGU9YnJvd3Nlci5zdHJlYW0pCiAgICAgICAgIGJyb3dzZXIuY21kbG9vcCgpCiAgICAgICAgIHByaW50KCJHb29kYnllLiIsIGZpbGU9YnJvd3Nlci5zdHJlYW0pCmRpZmYgLS1naXQgYS9MaWIvcHlfY29tcGlsZS5weSBiL0xpYi9weV9jb21waWxlLnB5CmluZGV4IDVhZGI3MGEuLjYyZDY5YWQgMTAwNjQ0Ci0tLSBhL0xpYi9weV9jb21waWxlLnB5CisrKyBiL0xpYi9weV9jb21waWxlLnB5CkBAIC0xMTAsOSArMTEwLDExIEBACiAgICAgIiIiCiAgICAgd2l0aCB0b2tlbml6ZS5vcGVuKGZpbGUpIGFzIGY6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHRpbWVzdGFtcCA9IGludChvcy5mc3RhdChmLmZpbGVubygpKS5zdF9tdGltZSkKKyAgICAgICAgICAgIHN0ID0gb3MuZnN0YXQoZi5maWxlbm8oKSkKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgdGltZXN0YW1wID0gaW50KG9zLnN0YXQoZmlsZSkuc3RfbXRpbWUpCisgICAgICAgICAgICBzdCA9IG9zLnN0YXQoZmlsZSkKKyAgICAgICAgdGltZXN0YW1wID0gaW50KHN0LnN0X210aW1lKQorICAgICAgICBzaXplID0gc3Quc3Rfc2l6ZSAmIDB4RkZGRkZGRkYKICAgICAgICAgY29kZXN0cmluZyA9IGYucmVhZCgpCiAgICAgdHJ5OgogICAgICAgICBjb2Rlb2JqZWN0ID0gYnVpbHRpbnMuY29tcGlsZShjb2Rlc3RyaW5nLCBkZmlsZSBvciBmaWxlLCAnZXhlYycsCkBAIC0xMzksNiArMTQxLDcgQEAKICAgICB3aXRoIG9wZW4oY2ZpbGUsICd3YicpIGFzIGZjOgogICAgICAgICBmYy53cml0ZShiJ1wwXDBcMFwwJykKICAgICAgICAgd3JfbG9uZyhmYywgdGltZXN0YW1wKQorICAgICAgICB3cl9sb25nKGZjLCBzaXplKQogICAgICAgICBtYXJzaGFsLmR1bXAoY29kZW9iamVjdCwgZmMpCiAgICAgICAgIGZjLmZsdXNoKCkKICAgICAgICAgZmMuc2VlaygwLCAwKQpkaWZmIC0tZ2l0IGEvTGliL3B5Y2xici5weSBiL0xpYi9weWNsYnIucHkKaW5kZXggNjVlOWZiZS4uOWVjMDVlZSAxMDA2NDQKLS0tIGEvTGliL3B5Y2xici5weQorKysgYi9MaWIvcHljbGJyLnB5CkBAIC0zOSw4ICszOSwxMCBAQAogICAgICAgICBsaW5lbm8gLS0gdGhlIGxpbmUgaW4gdGhlIGZpbGUgb24gd2hpY2ggdGhlIGNsYXNzIHN0YXRlbWVudCBvY2N1cnJlZAogIiIiCiAKK2ltcG9ydCBpbworaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgdG9rZW5pemUKIGZyb20gdG9rZW4gaW1wb3J0IE5BTUUsIERFREVOVCwgT1AKIGZyb20gb3BlcmF0b3IgaW1wb3J0IGl0ZW1nZXR0ZXIKQEAgLTEzNSwxOSArMTM3LDI0IEBACiAgICAgIyBTZWFyY2ggdGhlIHBhdGggZm9yIHRoZSBtb2R1bGUKICAgICBmID0gTm9uZQogICAgIGlmIGlucGFja2FnZSBpcyBub3QgTm9uZToKLSAgICAgICAgZiwgZm5hbWUsIChfcywgX20sIHR5KSA9IGltcC5maW5kX21vZHVsZShtb2R1bGUsIHBhdGgpCisgICAgICAgIHNlYXJjaF9wYXRoID0gcGF0aAogICAgIGVsc2U6Ci0gICAgICAgIGYsIGZuYW1lLCAoX3MsIF9tLCB0eSkgPSBpbXAuZmluZF9tb2R1bGUobW9kdWxlLCBwYXRoICsgc3lzLnBhdGgpCi0gICAgaWYgdHkgPT0gaW1wLlBLR19ESVJFQ1RPUlk6Ci0gICAgICAgIGRpY3RbJ19fcGF0aF9fJ10gPSBbZm5hbWVdCi0gICAgICAgIHBhdGggPSBbZm5hbWVdICsgcGF0aAotICAgICAgICBmLCBmbmFtZSwgKF9zLCBfbSwgdHkpID0gaW1wLmZpbmRfbW9kdWxlKCdfX2luaXRfXycsIFtmbmFtZV0pCisgICAgICAgIHNlYXJjaF9wYXRoID0gcGF0aCArIHN5cy5wYXRoCisgICAgbG9hZGVyID0gaW1wb3J0bGliLmZpbmRfbG9hZGVyKGZ1bGxtb2R1bGUsIHNlYXJjaF9wYXRoKQorICAgIGZuYW1lID0gbG9hZGVyLmdldF9maWxlbmFtZShmdWxsbW9kdWxlKQogICAgIF9tb2R1bGVzW2Z1bGxtb2R1bGVdID0gZGljdAotICAgIGlmIHR5ICE9IGltcC5QWV9TT1VSQ0U6CisgICAgaWYgbG9hZGVyLmlzX3BhY2thZ2UoZnVsbG1vZHVsZSk6CisgICAgICAgIGRpY3RbJ19fcGF0aF9fJ10gPSBbb3MucGF0aC5kaXJuYW1lKGZuYW1lKV0KKyAgICB0cnk6CisgICAgICAgIHNvdXJjZSA9IGxvYWRlci5nZXRfc291cmNlKGZ1bGxtb2R1bGUpCisgICAgICAgIGlmIHNvdXJjZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGRpY3QKKyAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBJbXBvcnRFcnJvcik6CiAgICAgICAgICMgbm90IFB5dGhvbiBzb3VyY2UsIGNhbid0IGRvIGFueXRoaW5nIHdpdGggdGhpcyBtb2R1bGUKLSAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgIHJldHVybiBkaWN0CiAKKyAgICBmID0gaW8uU3RyaW5nSU8oc291cmNlKQorCiAgICAgc3RhY2sgPSBbXSAjIHN0YWNrIG9mIChjbGFzcywgaW5kZW50KSBwYWlycwogCiAgICAgZyA9IHRva2VuaXplLmdlbmVyYXRlX3Rva2VucyhmLnJlYWRsaW5lKQpkaWZmIC0tZ2l0IGEvTGliL3B5ZG9jLnB5IGIvTGliL3B5ZG9jLnB5CmluZGV4IDM3NjE2ZmIuLmZhNTMxZTkgMTAwNzU1Ci0tLSBhL0xpYi9weWRvYy5weQorKysgYi9MaWIvcHlkb2MucHkKQEAgLTEsNyArMSw3IEBACiAjIS91c3IvYmluL2VudiBweXRob24zCiAiIiJHZW5lcmF0ZSBQeXRob24gZG9jdW1lbnRhdGlvbiBpbiBIVE1MIG9yIHRleHQgZm9yIGludGVyYWN0aXZlIHVzZS4KIAotSW4gdGhlIFB5dGhvbiBpbnRlcnByZXRlciwgZG8gImZyb20gcHlkb2MgaW1wb3J0IGhlbHAiIHRvIHByb3ZpZGUgb25saW5lCitJbiB0aGUgUHl0aG9uIGludGVycHJldGVyLCBkbyAiZnJvbSBweWRvYyBpbXBvcnQgaGVscCIgdG8gcHJvdmlkZQogaGVscC4gIENhbGxpbmcgaGVscCh0aGluZykgb24gYSBQeXRob24gb2JqZWN0IGRvY3VtZW50cyB0aGUgb2JqZWN0LgogCiBPciwgYXQgdGhlIHNoZWxsIGNvbW1hbmQgbGluZSBvdXRzaWRlIG9mIFB5dGhvbjoKQEAgLTIyLDExICsyMiw2IEBACiBvcGVuIGEgV2ViIGJyb3dzZXIgdG8gaW50ZXJhY3RpdmVseSBicm93c2UgZG9jdW1lbnRhdGlvbi4gIFRoZSAtcCBvcHRpb24KIGNhbiBiZSB1c2VkIHdpdGggdGhlIC1iIG9wdGlvbiB0byBleHBsaWNpdGx5IHNwZWNpZnkgdGhlIHNlcnZlciBwb3J0LgogCi1Gb3IgcGxhdGZvcm1zIHdpdGhvdXQgYSBjb21tYW5kIGxpbmUsICJweWRvYyAtZyIgc3RhcnRzIHRoZSBIVFRQIHNlcnZlcgotYW5kIGFsc28gcG9wcyB1cCBhIGxpdHRsZSB3aW5kb3cgZm9yIGNvbnRyb2xsaW5nIGl0LiAgVGhpcyBvcHRpb24gaXMKLWRlcHJlY2F0ZWQsIHNpbmNlIHRoZSBzZXJ2ZXIgY2FuIG5vdyBiZSBjb250cm9sbGVkIGRpcmVjdGx5IGZyb20gSFRUUAotY2xpZW50cy4KLQogUnVuICJweWRvYyAtdyA8bmFtZT4iIHRvIHdyaXRlIG91dCB0aGUgSFRNTCBkb2N1bWVudGF0aW9uIGZvciBhIG1vZHVsZQogdG8gYSBmaWxlIG5hbWVkICI8bmFtZT4uaHRtbCIuCiAKQEAgLTQyLDcgKzM3LDYgQEAKIF9fYXV0aG9yX18gPSAiS2EtUGluZyBZZWUgPHBpbmdAbGZ3Lm9yZz4iCiBfX2RhdGVfXyA9ICIyNiBGZWJydWFyeSAyMDAxIgogCi1fX3ZlcnNpb25fXyA9ICIkUmV2aXNpb24kIgogX19jcmVkaXRzX18gPSAiIiJHdWlkbyB2YW4gUm9zc3VtLCBmb3IgYW4gZXhjZWxsZW50IHByb2dyYW1taW5nIGxhbmd1YWdlLgogVG9tbXkgQnVybmV0dGUsIHRoZSBvcmlnaW5hbCBjcmVhdG9yIG9mIG1hbnB5LgogUGF1bCBQcmVzY29kLCBmb3IgYWxsIGhpcyB3b3JrIG9uIG9ubGluZWhlbHAuCkBAIC01OSw2ICs1Myw3IEBACiAKIGltcG9ydCBidWlsdGlucwogaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCBpbnNwZWN0CiBpbXBvcnQgaW8KIGltcG9ydCBvcwpAQCAtMTY4LDEyICsxNjMsMTIgQEAKIAogZGVmIHZpc2libGVuYW1lKG5hbWUsIGFsbD1Ob25lLCBvYmo9Tm9uZSk6CiAgICAgIiIiRGVjaWRlIHdoZXRoZXIgdG8gc2hvdyBkb2N1bWVudGF0aW9uIG9uIGEgdmFyaWFibGUuIiIiCi0gICAgIyBDZXJ0YWluIHNwZWNpYWwgbmFtZXMgYXJlIHJlZHVuZGFudC4KLSAgICBfaGlkZGVuX25hbWVzID0gKCdfX2J1aWx0aW5zX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX3BhdGhfXycsCi0gICAgICAgICAgICAgICAgICAgICAnX19tb2R1bGVfXycsICdfX25hbWVfXycsICdfX3Nsb3RzX18nLCAnX19wYWNrYWdlX18nLAotICAgICAgICAgICAgICAgICAgICAgJ19fY2FjaGVkX18nLCAnX19hdXRob3JfXycsICdfX2NyZWRpdHNfXycsICdfX2RhdGVfXycsCi0gICAgICAgICAgICAgICAgICAgICAnX192ZXJzaW9uX18nKQotICAgIGlmIG5hbWUgaW4gX2hpZGRlbl9uYW1lczogcmV0dXJuIDAKKyAgICAjIENlcnRhaW4gc3BlY2lhbCBuYW1lcyBhcmUgcmVkdW5kYW50IG9yIGludGVybmFsLgorICAgIGlmIG5hbWUgaW4geydfX2F1dGhvcl9fJywgJ19fYnVpbHRpbnNfXycsICdfX2NhY2hlZF9fJywgJ19fY3JlZGl0c19fJywKKyAgICAgICAgICAgICAgICAnX19kYXRlX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX2luaXRpYWxpemluZ19fJywKKyAgICAgICAgICAgICAgICAnX19sb2FkZXJfXycsICdfX21vZHVsZV9fJywgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywKKyAgICAgICAgICAgICAgICAnX19wYXRoX18nLCAnX19xdWFsbmFtZV9fJywgJ19fc2xvdHNfXycsICdfX3ZlcnNpb25fXyd9OgorICAgICAgICByZXR1cm4gMAogICAgICMgUHJpdmF0ZSBuYW1lcyBhcmUgaGlkZGVuLCBidXQgc3BlY2lhbCBuYW1lcyBhcmUgZGlzcGxheWVkLgogICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnX18nKSBhbmQgbmFtZS5lbmRzd2l0aCgnX18nKTogcmV0dXJuIDEKICAgICAjIE5hbWVkdHVwbGVzIGhhdmUgcHVibGljIGZpZWxkcyBhbmQgbWV0aG9kcyB3aXRoIGEgc2luZ2xlIGxlYWRpbmcgdW5kZXJzY29yZQpAQCAtMjI2LDIwICsyMjEsMzQgQEAKICAgICBtdGltZSA9IG9zLnN0YXQoZmlsZW5hbWUpLnN0X210aW1lCiAgICAgbGFzdHVwZGF0ZSwgcmVzdWx0ID0gY2FjaGUuZ2V0KGZpbGVuYW1lLCAoTm9uZSwgTm9uZSkpCiAgICAgaWYgbGFzdHVwZGF0ZSBpcyBOb25lIG9yIGxhc3R1cGRhdGUgPCBtdGltZToKLSAgICAgICAgaW5mbyA9IGluc3BlY3QuZ2V0bW9kdWxlaW5mbyhmaWxlbmFtZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZmlsZSA9IHRva2VuaXplLm9wZW4oZmlsZW5hbWUpCiAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICAgICAgIyBtb2R1bGUgY2FuJ3QgYmUgb3BlbmVkLCBzbyBza2lwIGl0CiAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBpZiBpbmZvIGFuZCAnYicgaW4gaW5mb1syXTogIyBiaW5hcnkgbW9kdWxlcyBoYXZlIHRvIGJlIGltcG9ydGVkCi0gICAgICAgICAgICB0cnk6IG1vZHVsZSA9IGltcC5sb2FkX21vZHVsZSgnX190ZW1wX18nLCBmaWxlLCBmaWxlbmFtZSwgaW5mb1sxOl0pCi0gICAgICAgICAgICBleGNlcHQ6IHJldHVybiBOb25lCisgICAgICAgIGJpbmFyeV9zdWZmaXhlcyA9IGltcG9ydGxpYi5tYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVNbOl0KKyAgICAgICAgYmluYXJ5X3N1ZmZpeGVzICs9IGltcG9ydGxpYi5tYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTWzpdCisgICAgICAgIGlmIGFueShmaWxlbmFtZS5lbmRzd2l0aCh4KSBmb3IgeCBpbiBiaW5hcnlfc3VmZml4ZXMpOgorICAgICAgICAgICAgIyBiaW5hcnkgbW9kdWxlcyBoYXZlIHRvIGJlIGltcG9ydGVkCisgICAgICAgICAgICBmaWxlLmNsb3NlKCkKKyAgICAgICAgICAgIGlmIGFueShmaWxlbmFtZS5lbmRzd2l0aCh4KSBmb3IgeCBpbgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTKToKKyAgICAgICAgICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKCdfX3RlbXBfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKCdfX3RlbXBfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZSgnX190ZW1wX18nKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICByZXN1bHQgPSAobW9kdWxlLl9fZG9jX18gb3IgJycpLnNwbGl0bGluZXMoKVswXQogICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydfX3RlbXBfXyddCi0gICAgICAgIGVsc2U6ICMgdGV4dCBtb2R1bGVzIGNhbiBiZSBkaXJlY3RseSBleGFtaW5lZAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyB0ZXh0IG1vZHVsZXMgY2FuIGJlIGRpcmVjdGx5IGV4YW1pbmVkCiAgICAgICAgICAgICByZXN1bHQgPSBzb3VyY2Vfc3lub3BzaXMoZmlsZSkKICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQorCiAgICAgICAgIGNhY2hlW2ZpbGVuYW1lXSA9IChtdGltZSwgcmVzdWx0KQogICAgIHJldHVybiByZXN1bHQKIApAQCAtMzA1LDkgKzMxNCw4IEBACiAgICAgICAgIGVsaWYgZXhjIGlzIFN5bnRheEVycm9yOgogICAgICAgICAgICAgIyBBIFN5bnRheEVycm9yIG9jY3VycmVkIGJlZm9yZSB3ZSBjb3VsZCBleGVjdXRlIHRoZSBtb2R1bGUuCiAgICAgICAgICAgICByYWlzZSBFcnJvckR1cmluZ0ltcG9ydCh2YWx1ZS5maWxlbmFtZSwgaW5mbykKLSAgICAgICAgZWxpZiBleGMgaXMgSW1wb3J0RXJyb3IgYW5kIGV4dHJhY3RfdGIodGIpWy0xXVsyXT09J3NhZmVpbXBvcnQnOgotICAgICAgICAgICAgIyBUaGUgaW1wb3J0IGVycm9yIG9jY3VycmVkIGRpcmVjdGx5IGluIHRoaXMgZnVuY3Rpb24sCi0gICAgICAgICAgICAjIHdoaWNoIG1lYW5zIHRoZXJlIGlzIG5vIHN1Y2ggbW9kdWxlIGluIHRoZSBwYXRoLgorICAgICAgICBlbGlmIGV4YyBpcyBJbXBvcnRFcnJvciBhbmQgdmFsdWUubmFtZSA9PSBwYXRoOgorICAgICAgICAgICAgIyBObyBzdWNoIG1vZHVsZSBpbiB0aGUgcGF0aC4KICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIFNvbWUgb3RoZXIgZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRoZSBpbXBvcnRpbmcgcHJvY2Vzcy4KQEAgLTM2MSw3ICszNjksNyBAQAogCiAgICAgICAgIGRvY2xvYyA9IG9zLmVudmlyb24uZ2V0KCJQWVRIT05ET0NTIiwgc2VsZi5QWVRIT05ET0NTKQogCi0gICAgICAgIGJhc2VkaXIgPSBvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAibGliIiwKKyAgICAgICAgYmFzZWRpciA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9leGVjX3ByZWZpeCwgImxpYiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiVkLiVkIiAlICBzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICAgICAgaWYgKGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlKG9zKSkgYW5kCiAgICAgICAgICAgICAob2JqZWN0Ll9fbmFtZV9fIGluICgnZXJybm8nLCAnZXhjZXB0aW9ucycsICdnYycsICdpbXAnLApAQCAtOTYzLDYgKzk3MSw5IEBACiAgICAgICAgIG1vZHBrZ3MgPSBbXQogICAgICAgICBpZiBzaGFkb3dlZCBpcyBOb25lOiBzaGFkb3dlZCA9IHt9CiAgICAgICAgIGZvciBpbXBvcnRlciwgbmFtZSwgaXNwa2cgaW4gcGtndXRpbC5pdGVyX21vZHVsZXMoW2Rpcl0pOgorICAgICAgICAgICAgaWYgYW55KCgweEQ4MDAgPD0gb3JkKGNoKSA8PSAweERGRkYpIGZvciBjaCBpbiBuYW1lKToKKyAgICAgICAgICAgICAgICAjIGlnbm9yZSBhIG1vZHVsZSBpZiBpdHMgbmFtZSBjb250YWlucyBhIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgbW9kcGtncy5hcHBlbmQoKG5hbWUsICcnLCBpc3BrZywgbmFtZSBpbiBzaGFkb3dlZCkpCiAgICAgICAgICAgICBzaGFkb3dlZFtuYW1lXSA9IDEKIApAQCAtMTgyNyw3ICsxODM4LDcgQEAKIAogICAgIGRlZiBpbnRybyhzZWxmKToKICAgICAgICAgc2VsZi5vdXRwdXQud3JpdGUoJycnCi1XZWxjb21lIHRvIFB5dGhvbiAlcyEgIFRoaXMgaXMgdGhlIG9ubGluZSBoZWxwIHV0aWxpdHkuCitXZWxjb21lIHRvIFB5dGhvbiAlcyEgIFRoaXMgaXMgdGhlIGludGVyYWN0aXZlIGhlbHAgdXRpbGl0eS4KIAogSWYgdGhpcyBpcyB5b3VyIGZpcnN0IHRpbWUgdXNpbmcgUHl0aG9uLCB5b3Ugc2hvdWxkIGRlZmluaXRlbHkgY2hlY2sgb3V0CiB0aGUgdHV0b3JpYWwgb24gdGhlIEludGVybmV0IGF0IGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvJXMvdHV0b3JpYWwvLgpAQCAtMjAxOCwxNCArMjAyOSw2IEBACiAgICAgICAgICAgICBpZiBzZWxmLnF1aXQ6CiAgICAgICAgICAgICAgICAgYnJlYWsKIAotICAgICAgICAgICAgIyBYWFggU2tpcHBpbmcgdGhpcyBmaWxlIGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBidWcKLSAgICAgICAgICAgICMgdGhhdCBjYXVzZXMgcHl0aG9uIHRvIGNyYXNoIHdpdGggYSBzZWdmYXVsdC4KLSAgICAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTkzMTkKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgVE9ETyBSZW1vdmUgdGhpcyBvbmNlIHRoZSBidWcgaXMgZml4ZWQuCi0gICAgICAgICAgICBpZiBtb2RuYW1lIGluIHsndGVzdC5iYWRzeW50YXhfcGVwMzEyMCcsICdiYWRzeW50YXhfcGVwMzEyMCd9OgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KICAgICAgICAgICAgIGlmIGtleSBpcyBOb25lOgogICAgICAgICAgICAgICAgIGNhbGxiYWNrKE5vbmUsIG1vZG5hbWUsICcnKQogICAgICAgICAgICAgZWxzZToKQEAgLTIwMzcsNyArMjA0MCw3IEBACiAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihsb2FkZXIsICdnZXRfc291cmNlJyk6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IGxvYWRlci5nZXRfc291cmNlKG1vZG5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBvbmVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZXJyb3IobW9kbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC0yMDc0LDI3MiArMjA3Nyw2IEBACiAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCdpZ25vcmUnKSAjIGlnbm9yZSBwcm9ibGVtcyBkdXJpbmcgaW1wb3J0CiAgICAgICAgIE1vZHVsZVNjYW5uZXIoKS5ydW4oY2FsbGJhY2ssIGtleSwgb25lcnJvcj1vbmVycm9yKQogCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXZWIgYnJvd3NlciBpbnRlcmZhY2UKLQotZGVmIHNlcnZlKHBvcnQsIGNhbGxiYWNrPU5vbmUsIGNvbXBsZXRlcj1Ob25lKToKLSAgICBpbXBvcnQgaHR0cC5zZXJ2ZXIsIGVtYWlsLm1lc3NhZ2UsIHNlbGVjdAotCi0gICAgbXNnID0gJ3RoZSBweWRvYy5zZXJ2ZSgpIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQnCi0gICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotCi0gICAgY2xhc3MgRG9jSGFuZGxlcihodHRwLnNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVyKToKLSAgICAgICAgZGVmIHNlbmRfZG9jdW1lbnQoc2VsZiwgdGl0bGUsIGNvbnRlbnRzKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwKQotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgnKQotICAgICAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQotICAgICAgICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoaHRtbC5wYWdlKHRpdGxlLCBjb250ZW50cykuZW5jb2RlKCd1dGYtOCcpKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6IHBhc3MKLQotICAgICAgICBkZWYgZG9fR0VUKHNlbGYpOgotICAgICAgICAgICAgcGF0aCA9IHNlbGYucGF0aAotICAgICAgICAgICAgaWYgcGF0aFstNTpdID09ICcuaHRtbCc6IHBhdGggPSBwYXRoWzotNV0KLSAgICAgICAgICAgIGlmIHBhdGhbOjFdID09ICcvJzogcGF0aCA9IHBhdGhbMTpdCi0gICAgICAgICAgICBpZiBwYXRoIGFuZCBwYXRoICE9ICcuJzoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG9iaiA9IGxvY2F0ZShwYXRoLCBmb3JjZWxvYWQ9MSkKLSAgICAgICAgICAgICAgICBleGNlcHQgRXJyb3JEdXJpbmdJbXBvcnQgYXMgdmFsdWU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9kb2N1bWVudChwYXRoLCBodG1sLmVzY2FwZShzdHIodmFsdWUpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgaWYgb2JqOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZG9jdW1lbnQoZGVzY3JpYmUob2JqKSwgaHRtbC5kb2N1bWVudChvYmosIHBhdGgpKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9kb2N1bWVudChwYXRoLAotJ25vIFB5dGhvbiBkb2N1bWVudGF0aW9uIGZvdW5kIGZvciAlcycgJSByZXByKHBhdGgpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBoZWFkaW5nID0gaHRtbC5oZWFkaW5nKAotJzxiaWc+PGJpZz48c3Ryb25nPlB5dGhvbjogSW5kZXggb2YgTW9kdWxlczwvc3Ryb25nPjwvYmlnPjwvYmlnPicsCi0nI2ZmZmZmZicsICcjNzc5OWVlJykKLSAgICAgICAgICAgICAgICBkZWYgYmx0aW5saW5rKG5hbWUpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzxhIGhyZWY9IiVzLmh0bWwiPiVzPC9hPicgJSAobmFtZSwgbmFtZSkKLSAgICAgICAgICAgICAgICBuYW1lcyA9IFt4IGZvciB4IGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lcyBpZiB4ICE9ICdfX21haW5fXyddCi0gICAgICAgICAgICAgICAgY29udGVudHMgPSBodG1sLm11bHRpY29sdW1uKG5hbWVzLCBibHRpbmxpbmspCi0gICAgICAgICAgICAgICAgaW5kaWNlcyA9IFsnPHA+JyArIGh0bWwuYmlnc2VjdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ0J1aWx0LWluIE1vZHVsZXMnLCAnI2ZmZmZmZicsICcjZWU3N2FhJywgY29udGVudHMpXQotCi0gICAgICAgICAgICAgICAgc2VlbiA9IHt9Ci0gICAgICAgICAgICAgICAgZm9yIGRpciBpbiBzeXMucGF0aDoKLSAgICAgICAgICAgICAgICAgICAgaW5kaWNlcy5hcHBlbmQoaHRtbC5pbmRleChkaXIsIHNlZW4pKQotICAgICAgICAgICAgICAgIGNvbnRlbnRzID0gaGVhZGluZyArICcgJy5qb2luKGluZGljZXMpICsgJycnPHAgYWxpZ249cmlnaHQ+Ci08Zm9udCBjb2xvcj0iIzkwOTA5MCIgZmFjZT0iaGVsdmV0aWNhLCBhcmlhbCI+PHN0cm9uZz4KLXB5ZG9jPC9zdHJvbmc+IGJ5IEthLVBpbmcgWWVlICZsdDtwaW5nQGxmdy5vcmcmZ3Q7PC9mb250PicnJwotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9kb2N1bWVudCgnSW5kZXggb2YgTW9kdWxlcycsIGNvbnRlbnRzKQotCi0gICAgICAgIGRlZiBsb2dfbWVzc2FnZShzZWxmLCAqYXJncyk6IHBhc3MKLQotICAgIGNsYXNzIERvY1NlcnZlcihodHRwLnNlcnZlci5IVFRQU2VydmVyKToKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIGNhbGxiYWNrKToKLSAgICAgICAgICAgIGhvc3QgPSAnbG9jYWxob3N0JwotICAgICAgICAgICAgc2VsZi5hZGRyZXNzID0gKGhvc3QsIHBvcnQpCi0gICAgICAgICAgICBzZWxmLnVybCA9ICdodHRwOi8vJXM6JWQvJyAlIChob3N0LCBwb3J0KQotICAgICAgICAgICAgc2VsZi5jYWxsYmFjayA9IGNhbGxiYWNrCi0gICAgICAgICAgICBzZWxmLmJhc2UuX19pbml0X18oc2VsZiwgc2VsZi5hZGRyZXNzLCBzZWxmLmhhbmRsZXIpCi0KLSAgICAgICAgZGVmIHNlcnZlX3VudGlsX3F1aXQoc2VsZik6Ci0gICAgICAgICAgICBpbXBvcnQgc2VsZWN0Ci0gICAgICAgICAgICBzZWxmLnF1aXQgPSBGYWxzZQotICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYucXVpdDoKLSAgICAgICAgICAgICAgICByZCwgd3IsIGV4ID0gc2VsZWN0LnNlbGVjdChbc2VsZi5zb2NrZXQuZmlsZW5vKCldLCBbXSwgW10sIDEpCi0gICAgICAgICAgICAgICAgaWYgcmQ6IHNlbGYuaGFuZGxlX3JlcXVlc3QoKQotICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQotCi0gICAgICAgIGRlZiBzZXJ2ZXJfYWN0aXZhdGUoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLmJhc2Uuc2VydmVyX2FjdGl2YXRlKHNlbGYpCi0gICAgICAgICAgICBpZiBzZWxmLmNhbGxiYWNrOiBzZWxmLmNhbGxiYWNrKHNlbGYpCi0KLSAgICBEb2NTZXJ2ZXIuYmFzZSA9IGh0dHAuc2VydmVyLkhUVFBTZXJ2ZXIKLSAgICBEb2NTZXJ2ZXIuaGFuZGxlciA9IERvY0hhbmRsZXIKLSAgICBEb2NIYW5kbGVyLk1lc3NhZ2VDbGFzcyA9IGVtYWlsLm1lc3NhZ2UuTWVzc2FnZQotICAgIHRyeToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgRG9jU2VydmVyKHBvcnQsIGNhbGxiYWNrKS5zZXJ2ZV91bnRpbF9xdWl0KCkKLSAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgc2VsZWN0LmVycm9yKToKLSAgICAgICAgICAgIHBhc3MKLSAgICBmaW5hbGx5OgotICAgICAgICBpZiBjb21wbGV0ZXI6IGNvbXBsZXRlcigpCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZ3JhcGhpY2FsIGludGVyZmFjZQotCi1kZWYgZ3VpKCk6Ci0gICAgIiIiR3JhcGhpY2FsIGludGVyZmFjZSAoc3RhcnRzIFdlYiBzZXJ2ZXIgYW5kIHBvcHMgdXAgYSBjb250cm9sIHdpbmRvdykuIiIiCi0KLSAgICBtc2cgPSAoJ3RoZSBweWRvYy5ndWkoKSBmdW5jdGlvbiBhbmQgInB5ZG9jIC1nIiBvcHRpb24gYXJlIGRlcHJlY2F0ZWRcbicsCi0gICAgICAgICAgICd1c2UgInB5ZG9jLmJyb3dzZSgpIGZ1bmN0aW9uIGFuZCAicHlkb2MgLWIiIG9wdGlvbiBpbnN0ZWFkLicpCi0gICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotCi0gICAgY2xhc3MgR1VJOgotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgd2luZG93LCBwb3J0PTc0NjQpOgotICAgICAgICAgICAgc2VsZi53aW5kb3cgPSB3aW5kb3cKLSAgICAgICAgICAgIHNlbGYuc2VydmVyID0gTm9uZQotICAgICAgICAgICAgc2VsZi5zY2FubmVyID0gTm9uZQotCi0gICAgICAgICAgICBpbXBvcnQgdGtpbnRlcgotICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfZnJtID0gdGtpbnRlci5GcmFtZSh3aW5kb3cpCi0gICAgICAgICAgICBzZWxmLnRpdGxlX2xibCA9IHRraW50ZXIuTGFiZWwoc2VsZi5zZXJ2ZXJfZnJtLAotICAgICAgICAgICAgICAgIHRleHQ9J1N0YXJ0aW5nIHNlcnZlci4uLlxuICcpCi0gICAgICAgICAgICBzZWxmLm9wZW5fYnRuID0gdGtpbnRlci5CdXR0b24oc2VsZi5zZXJ2ZXJfZnJtLAotICAgICAgICAgICAgICAgIHRleHQ9J29wZW4gYnJvd3NlcicsIGNvbW1hbmQ9c2VsZi5vcGVuLCBzdGF0ZT0nZGlzYWJsZWQnKQotICAgICAgICAgICAgc2VsZi5xdWl0X2J0biA9IHRraW50ZXIuQnV0dG9uKHNlbGYuc2VydmVyX2ZybSwKLSAgICAgICAgICAgICAgICB0ZXh0PSdxdWl0IHNlcnZpbmcnLCBjb21tYW5kPXNlbGYucXVpdCwgc3RhdGU9J2Rpc2FibGVkJykKLQotICAgICAgICAgICAgc2VsZi5zZWFyY2hfZnJtID0gdGtpbnRlci5GcmFtZSh3aW5kb3cpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9sYmwgPSB0a2ludGVyLkxhYmVsKHNlbGYuc2VhcmNoX2ZybSwgdGV4dD0nU2VhcmNoIGZvcicpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9lbnQgPSB0a2ludGVyLkVudHJ5KHNlbGYuc2VhcmNoX2ZybSkKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2VudC5iaW5kKCc8UmV0dXJuPicsIHNlbGYuc2VhcmNoKQotICAgICAgICAgICAgc2VsZi5zdG9wX2J0biA9IHRraW50ZXIuQnV0dG9uKHNlbGYuc2VhcmNoX2ZybSwKLSAgICAgICAgICAgICAgICB0ZXh0PSdzdG9wJywgcGFkeT0wLCBjb21tYW5kPXNlbGYuc3RvcCwgc3RhdGU9J2Rpc2FibGVkJykKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgICAgICAgICAgICAgICMgVHJ5aW5nIHRvIGhpZGUgYW5kIHNob3cgdGhpcyBidXR0b24gY3Jhc2hlcyB1bmRlciBXaW5kb3dzLgotICAgICAgICAgICAgICAgIHNlbGYuc3RvcF9idG4ucGFjayhzaWRlPSdyaWdodCcpCi0KLSAgICAgICAgICAgIHNlbGYud2luZG93LnRpdGxlKCdweWRvYycpCi0gICAgICAgICAgICBzZWxmLndpbmRvdy5wcm90b2NvbCgnV01fREVMRVRFX1dJTkRPVycsIHNlbGYucXVpdCkKLSAgICAgICAgICAgIHNlbGYudGl0bGVfbGJsLnBhY2soc2lkZT0ndG9wJywgZmlsbD0neCcpCi0gICAgICAgICAgICBzZWxmLm9wZW5fYnRuLnBhY2soc2lkZT0nbGVmdCcsIGZpbGw9J3gnLCBleHBhbmQ9MSkKLSAgICAgICAgICAgIHNlbGYucXVpdF9idG4ucGFjayhzaWRlPSdyaWdodCcsIGZpbGw9J3gnLCBleHBhbmQ9MSkKLSAgICAgICAgICAgIHNlbGYuc2VydmVyX2ZybS5wYWNrKHNpZGU9J3RvcCcsIGZpbGw9J3gnKQotCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9sYmwucGFjayhzaWRlPSdsZWZ0JykKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2VudC5wYWNrKHNpZGU9J3JpZ2h0JywgZmlsbD0neCcsIGV4cGFuZD0xKQotICAgICAgICAgICAgc2VsZi5zZWFyY2hfZnJtLnBhY2soc2lkZT0ndG9wJywgZmlsbD0neCcpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9lbnQuZm9jdXNfc2V0KCkKLQotICAgICAgICAgICAgZm9udCA9ICgnaGVsdmV0aWNhJywgc3lzLnBsYXRmb3JtID09ICd3aW4zMicgYW5kIDggb3IgMTApCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9sc3QgPSB0a2ludGVyLkxpc3Rib3god2luZG93LCBmb250PWZvbnQsIGhlaWdodD02KQotICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0LmJpbmQoJzxCdXR0b24tMT4nLCBzZWxmLnNlbGVjdCkKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X2xzdC5iaW5kKCc8RG91YmxlLUJ1dHRvbi0xPicsIHNlbGYuZ290bykKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X3NjciA9IHRraW50ZXIuU2Nyb2xsYmFyKHdpbmRvdywKLSAgICAgICAgICAgICAgICBvcmllbnQ9J3ZlcnRpY2FsJywgY29tbWFuZD1zZWxmLnJlc3VsdF9sc3QueXZpZXcpCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9sc3QuY29uZmlnKHlzY3JvbGxjb21tYW5kPXNlbGYucmVzdWx0X3Njci5zZXQpCi0KLSAgICAgICAgICAgIHNlbGYucmVzdWx0X2ZybSA9IHRraW50ZXIuRnJhbWUod2luZG93KQotICAgICAgICAgICAgc2VsZi5nb3RvX2J0biA9IHRraW50ZXIuQnV0dG9uKHNlbGYucmVzdWx0X2ZybSwKLSAgICAgICAgICAgICAgICB0ZXh0PSdnbyB0byBzZWxlY3RlZCcsIGNvbW1hbmQ9c2VsZi5nb3RvKQotICAgICAgICAgICAgc2VsZi5oaWRlX2J0biA9IHRraW50ZXIuQnV0dG9uKHNlbGYucmVzdWx0X2ZybSwKLSAgICAgICAgICAgICAgICB0ZXh0PSdoaWRlIHJlc3VsdHMnLCBjb21tYW5kPXNlbGYuaGlkZSkKLSAgICAgICAgICAgIHNlbGYuZ290b19idG4ucGFjayhzaWRlPSdsZWZ0JywgZmlsbD0neCcsIGV4cGFuZD0xKQotICAgICAgICAgICAgc2VsZi5oaWRlX2J0bi5wYWNrKHNpZGU9J3JpZ2h0JywgZmlsbD0neCcsIGV4cGFuZD0xKQotCi0gICAgICAgICAgICBzZWxmLndpbmRvdy51cGRhdGUoKQotICAgICAgICAgICAgc2VsZi5taW53aWR0aCA9IHNlbGYud2luZG93LndpbmZvX3dpZHRoKCkKLSAgICAgICAgICAgIHNlbGYubWluaGVpZ2h0ID0gc2VsZi53aW5kb3cud2luZm9faGVpZ2h0KCkKLSAgICAgICAgICAgIHNlbGYuYmlnbWluaGVpZ2h0ID0gKHNlbGYuc2VydmVyX2ZybS53aW5mb19yZXFoZWlnaHQoKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlYXJjaF9mcm0ud2luZm9fcmVxaGVpZ2h0KCkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0LndpbmZvX3JlcWhlaWdodCgpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0X2ZybS53aW5mb19yZXFoZWlnaHQoKSkKLSAgICAgICAgICAgIHNlbGYuYmlnd2lkdGgsIHNlbGYuYmlnaGVpZ2h0ID0gc2VsZi5taW53aWR0aCwgc2VsZi5iaWdtaW5oZWlnaHQKLSAgICAgICAgICAgIHNlbGYuZXhwYW5kZWQgPSAwCi0gICAgICAgICAgICBzZWxmLndpbmRvdy53bV9nZW9tZXRyeSgnJWR4JWQnICUgKHNlbGYubWlud2lkdGgsIHNlbGYubWluaGVpZ2h0KSkKLSAgICAgICAgICAgIHNlbGYud2luZG93LndtX21pbnNpemUoc2VsZi5taW53aWR0aCwgc2VsZi5taW5oZWlnaHQpCi0gICAgICAgICAgICBzZWxmLndpbmRvdy50ay53aWxsZGlzcGF0Y2goKQotCi0gICAgICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCi0gICAgICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKAotICAgICAgICAgICAgICAgIHRhcmdldD1zZXJ2ZSwgYXJncz0ocG9ydCwgc2VsZi5yZWFkeSwgc2VsZi5xdWl0KSkuc3RhcnQoKQotCi0gICAgICAgIGRlZiByZWFkeShzZWxmLCBzZXJ2ZXIpOgotICAgICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBzZXJ2ZXIKLSAgICAgICAgICAgIHNlbGYudGl0bGVfbGJsLmNvbmZpZygKLSAgICAgICAgICAgICAgICB0ZXh0PSdQeXRob24gZG9jdW1lbnRhdGlvbiBzZXJ2ZXIgYXRcbicgKyBzZXJ2ZXIudXJsKQotICAgICAgICAgICAgc2VsZi5vcGVuX2J0bi5jb25maWcoc3RhdGU9J25vcm1hbCcpCi0gICAgICAgICAgICBzZWxmLnF1aXRfYnRuLmNvbmZpZyhzdGF0ZT0nbm9ybWFsJykKLQotICAgICAgICBkZWYgb3BlbihzZWxmLCBldmVudD1Ob25lLCB1cmw9Tm9uZSk6Ci0gICAgICAgICAgICB1cmwgPSB1cmwgb3Igc2VsZi5zZXJ2ZXIudXJsCi0gICAgICAgICAgICBpbXBvcnQgd2ViYnJvd3NlcgotICAgICAgICAgICAgd2ViYnJvd3Nlci5vcGVuKHVybCkKLQotICAgICAgICBkZWYgcXVpdChzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgICAgIGlmIHNlbGYuc2VydmVyOgotICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnF1aXQgPSAxCi0gICAgICAgICAgICBzZWxmLndpbmRvdy5xdWl0KCkKLQotICAgICAgICBkZWYgc2VhcmNoKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICAgICAga2V5ID0gc2VsZi5zZWFyY2hfZW50LmdldCgpCi0gICAgICAgICAgICBzZWxmLnN0b3BfYnRuLnBhY2soc2lkZT0ncmlnaHQnKQotICAgICAgICAgICAgc2VsZi5zdG9wX2J0bi5jb25maWcoc3RhdGU9J25vcm1hbCcpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9sYmwuY29uZmlnKHRleHQ9J1NlYXJjaGluZyBmb3IgIiVzIi4uLicgJSBrZXkpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9lbnQuZm9yZ2V0KCkKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2xibC5wYWNrKHNpZGU9J2xlZnQnKQotICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0LmRlbGV0ZSgwLCAnZW5kJykKLSAgICAgICAgICAgIHNlbGYuZ290b19idG4uY29uZmlnKHN0YXRlPSdkaXNhYmxlZCcpCi0gICAgICAgICAgICBzZWxmLmV4cGFuZCgpCi0KLSAgICAgICAgICAgIGltcG9ydCB0aHJlYWRpbmcKLSAgICAgICAgICAgIGlmIHNlbGYuc2Nhbm5lcjoKLSAgICAgICAgICAgICAgICBzZWxmLnNjYW5uZXIucXVpdCA9IDEKLSAgICAgICAgICAgIHNlbGYuc2Nhbm5lciA9IE1vZHVsZVNjYW5uZXIoKQotICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5zY2FubmVyLnJ1biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi51cGRhdGUsIGtleSwgc2VsZi5kb25lKSkuc3RhcnQoKQotCi0gICAgICAgIGRlZiB1cGRhdGUoc2VsZiwgcGF0aCwgbW9kbmFtZSwgZGVzYyk6Ci0gICAgICAgICAgICBpZiBtb2RuYW1lWy05Ol0gPT0gJy5fX2luaXRfXyc6Ci0gICAgICAgICAgICAgICAgbW9kbmFtZSA9IG1vZG5hbWVbOi05XSArICcgKHBhY2thZ2UpJwotICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0Lmluc2VydCgnZW5kJywKLSAgICAgICAgICAgICAgICBtb2RuYW1lICsgJyAtICcgKyAoZGVzYyBvciAnKG5vIGRlc2NyaXB0aW9uKScpKQotCi0gICAgICAgIGRlZiBzdG9wKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICAgICAgaWYgc2VsZi5zY2FubmVyOgotICAgICAgICAgICAgICAgIHNlbGYuc2Nhbm5lci5xdWl0ID0gMQotICAgICAgICAgICAgICAgIHNlbGYuc2Nhbm5lciA9IE5vbmUKLQotICAgICAgICBkZWYgZG9uZShzZWxmKToKLSAgICAgICAgICAgIHNlbGYuc2Nhbm5lciA9IE5vbmUKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2xibC5jb25maWcodGV4dD0nU2VhcmNoIGZvcicpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9sYmwucGFjayhzaWRlPSdsZWZ0JykKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2VudC5wYWNrKHNpZGU9J3JpZ2h0JywgZmlsbD0neCcsIGV4cGFuZD0xKQotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6IHNlbGYuc3RvcF9idG4uZm9yZ2V0KCkKLSAgICAgICAgICAgIHNlbGYuc3RvcF9idG4uY29uZmlnKHN0YXRlPSdkaXNhYmxlZCcpCi0KLSAgICAgICAgZGVmIHNlbGVjdChzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgICAgIHNlbGYuZ290b19idG4uY29uZmlnKHN0YXRlPSdub3JtYWwnKQotCi0gICAgICAgIGRlZiBnb3RvKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICAgICAgc2VsZWN0aW9uID0gc2VsZi5yZXN1bHRfbHN0LmN1cnNlbGVjdGlvbigpCi0gICAgICAgICAgICBpZiBzZWxlY3Rpb246Ci0gICAgICAgICAgICAgICAgbW9kbmFtZSA9IHNlbGYucmVzdWx0X2xzdC5nZXQoc2VsZWN0aW9uWzBdKS5zcGxpdCgpWzBdCi0gICAgICAgICAgICAgICAgc2VsZi5vcGVuKHVybD1zZWxmLnNlcnZlci51cmwgKyBtb2RuYW1lICsgJy5odG1sJykKLQotICAgICAgICBkZWYgY29sbGFwc2Uoc2VsZik6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5leHBhbmRlZDogcmV0dXJuCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9mcm0uZm9yZ2V0KCkKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X3Njci5mb3JnZXQoKQotICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0LmZvcmdldCgpCi0gICAgICAgICAgICBzZWxmLmJpZ3dpZHRoID0gc2VsZi53aW5kb3cud2luZm9fd2lkdGgoKQotICAgICAgICAgICAgc2VsZi5iaWdoZWlnaHQgPSBzZWxmLndpbmRvdy53aW5mb19oZWlnaHQoKQotICAgICAgICAgICAgc2VsZi53aW5kb3cud21fZ2VvbWV0cnkoJyVkeCVkJyAlIChzZWxmLm1pbndpZHRoLCBzZWxmLm1pbmhlaWdodCkpCi0gICAgICAgICAgICBzZWxmLndpbmRvdy53bV9taW5zaXplKHNlbGYubWlud2lkdGgsIHNlbGYubWluaGVpZ2h0KQotICAgICAgICAgICAgc2VsZi5leHBhbmRlZCA9IDAKLQotICAgICAgICBkZWYgZXhwYW5kKHNlbGYpOgotICAgICAgICAgICAgaWYgc2VsZi5leHBhbmRlZDogcmV0dXJuCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9mcm0ucGFjayhzaWRlPSdib3R0b20nLCBmaWxsPSd4JykKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X3Njci5wYWNrKHNpZGU9J3JpZ2h0JywgZmlsbD0neScpCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9sc3QucGFjayhzaWRlPSd0b3AnLCBmaWxsPSdib3RoJywgZXhwYW5kPTEpCi0gICAgICAgICAgICBzZWxmLndpbmRvdy53bV9nZW9tZXRyeSgnJWR4JWQnICUgKHNlbGYuYmlnd2lkdGgsIHNlbGYuYmlnaGVpZ2h0KSkKLSAgICAgICAgICAgIHNlbGYud2luZG93LndtX21pbnNpemUoc2VsZi5taW53aWR0aCwgc2VsZi5iaWdtaW5oZWlnaHQpCi0gICAgICAgICAgICBzZWxmLmV4cGFuZGVkID0gMQotCi0gICAgICAgIGRlZiBoaWRlKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICAgICAgc2VsZi5zdG9wKCkKLSAgICAgICAgICAgIHNlbGYuY29sbGFwc2UoKQotCi0gICAgaW1wb3J0IHRraW50ZXIKLSAgICB0cnk6Ci0gICAgICAgIHJvb3QgPSB0a2ludGVyLlRrKCkKLSAgICAgICAgIyBUayB3aWxsIGNyYXNoIGlmIHB5dGhvbncuZXhlIGhhcyBhbiBYUCAubWFuaWZlc3QKLSAgICAgICAgIyBmaWxlIGFuZCB0aGUgcm9vdCBoYXMgaXMgbm90IGRlc3Ryb3llZCBleHBsaWNpdGx5LgotICAgICAgICAjIElmIHRoZSBwcm9ibGVtIGlzIGV2ZXIgZml4ZWQgaW4gVGssIHRoZSBleHBsaWNpdAotICAgICAgICAjIGRlc3Ryb3kgY2FuIGdvLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBndWkgPSBHVUkocm9vdCkKLSAgICAgICAgICAgIHJvb3QubWFpbmxvb3AoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgcm9vdC5kZXN0cm95KCkKLSAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHBhc3MKLQotCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBlbmhhbmNlZCBXZWIgYnJvd3NlciBpbnRlcmZhY2UKIAogZGVmIF9zdGFydF9zZXJ2ZXIodXJsaGFuZGxlciwgcG9ydCk6CkBAIC0yNzk2LDE1ICsyNTMzLDEyIEBACiAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCAnLicpCiAKICAgICB0cnk6Ci0gICAgICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KHN5cy5hcmd2WzE6XSwgJ2JnazpwOncnKQorICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChzeXMuYXJndlsxOl0sICdiazpwOncnKQogICAgICAgICB3cml0aW5nID0gRmFsc2UKICAgICAgICAgc3RhcnRfc2VydmVyID0gRmFsc2UKICAgICAgICAgb3Blbl9icm93c2VyID0gRmFsc2UKICAgICAgICAgcG9ydCA9IE5vbmUKICAgICAgICAgZm9yIG9wdCwgdmFsIGluIG9wdHM6Ci0gICAgICAgICAgICBpZiBvcHQgPT0gJy1nJzoKLSAgICAgICAgICAgICAgICBndWkoKQotICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgaWYgb3B0ID09ICctYic6CiAgICAgICAgICAgICAgICAgc3RhcnRfc2VydmVyID0gVHJ1ZQogICAgICAgICAgICAgICAgIG9wZW5fYnJvd3NlciA9IFRydWUKQEAgLTI4MTcsOCArMjU1MSw4IEBACiAgICAgICAgICAgICBpZiBvcHQgPT0gJy13JzoKICAgICAgICAgICAgICAgICB3cml0aW5nID0gVHJ1ZQogCi0gICAgICAgIGlmIHN0YXJ0X3NlcnZlciA9PSBUcnVlOgotICAgICAgICAgICAgaWYgcG9ydCA9PSBOb25lOgorICAgICAgICBpZiBzdGFydF9zZXJ2ZXI6CisgICAgICAgICAgICBpZiBwb3J0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgcG9ydCA9IDAKICAgICAgICAgICAgIGJyb3dzZShwb3J0LCBvcGVuX2Jyb3dzZXI9b3Blbl9icm93c2VyKQogICAgICAgICAgICAgcmV0dXJuCkBAIC0yODY1LDkgKzI1OTksNiBAQAogICAgIHRvIGludGVyYWN0aXZlbHkgYnJvd3NlIGRvY3VtZW50YXRpb24uICBUaGUgLXAgb3B0aW9uIGNhbiBiZSB1c2VkIHdpdGgKICAgICB0aGUgLWIgb3B0aW9uIHRvIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgc2VydmVyIHBvcnQuCiAKLXtjbWR9IC1nCi0gICAgRGVwcmVjYXRlZC4KLQoge2NtZH0gLXcgPG5hbWU+IC4uLgogICAgIFdyaXRlIG91dCB0aGUgSFRNTCBkb2N1bWVudGF0aW9uIGZvciBhIG1vZHVsZSB0byBhIGZpbGUgaW4gdGhlIGN1cnJlbnQKICAgICBkaXJlY3RvcnkuICBJZiA8bmFtZT4gY29udGFpbnMgYSAne3NlcH0nLCBpdCBpcyB0cmVhdGVkIGFzIGEgZmlsZW5hbWU7IGlmCmRpZmYgLS1naXQgYS9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkgYi9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkKaW5kZXggMDhhOWU3Yy4uNjJhNTRhOSAxMDA2NDQKLS0tIGEvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5CisrKyBiL0xpYi9weWRvY19kYXRhL3RvcGljcy5weQpAQCAtMSwxNiArMSwxNyBAQAotIyBBdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueCBvbiBUaHUgRmViIDIzIDE4OjM3OjU0IDIwMTIKKyMgLSotIGNvZGluZzogdXRmLTggLSotCisjIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uIFNhdCBBdWcgMjUgMTI6MTI6NDUgMjAxMgogdG9waWNzID0geydhc3NlcnQnOiAnXG5UaGUgYGBhc3NlcnRgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5Bc3NlcnQgc3RhdGVtZW50cyBhcmUgYSBjb252ZW5pZW50IHdheSB0byBpbnNlcnQgZGVidWdnaW5nIGFzc2VydGlvbnNcbmludG8gYSBwcm9ncmFtOlxuXG4gICBhc3NlcnRfc3RtdCA6Oj0gImFzc2VydCIgZXhwcmVzc2lvbiBbIiwiIGV4cHJlc3Npb25dXG5cblRoZSBzaW1wbGUgZm9ybSwgYGBhc3NlcnQgZXhwcmVzc2lvbmBgLCBpcyBlcXVpdmFsZW50IHRvXG5cbiAgIGlmIF9fZGVidWdfXzpcbiAgICAgIGlmIG5vdCBleHByZXNzaW9uOiByYWlzZSBBc3NlcnRpb25FcnJvclxuXG5UaGUgZXh0ZW5kZWQgZm9ybSwgYGBhc3NlcnQgZXhwcmVzc2lvbjEsIGV4cHJlc3Npb24yYGAsIGlzIGVxdWl2YWxlbnRcbnRvXG5cbiAgIGlmIF9fZGVidWdfXzpcbiAgICAgIGlmIG5vdCBleHByZXNzaW9uMTogcmFpc2UgQXNzZXJ0aW9uRXJyb3IoZXhwcmVzc2lvbjIpXG5cblRoZXNlIGVxdWl2YWxlbmNlcyBhc3N1bWUgdGhhdCBgYF9fZGVidWdfX2BgIGFuZCBgYEFzc2VydGlvbkVycm9yYGBcbnJlZmVyIHRvIHRoZSBidWlsdC1pbiB2YXJpYWJsZXMgd2l0aCB0aG9zZSBuYW1lcy4gIEluIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiwgdGhlIGJ1aWx0LWluIHZhcmlhYmxlIGBgX19kZWJ1Z19fYGAgaXMgYGBUcnVlYGAgdW5kZXJcbm5vcm1hbCBjaXJjdW1zdGFuY2VzLCBgYEZhbHNlYGAgd2hlbiBvcHRpbWl6YXRpb24gaXMgcmVxdWVzdGVkXG4oY29tbWFuZCBsaW5lIG9wdGlvbiAtTykuICBUaGUgY3VycmVudCBjb2RlIGdlbmVyYXRvciBlbWl0cyBubyBjb2RlXG5mb3IgYW4gYXNzZXJ0IHN0YXRlbWVudCB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgYXQgY29tcGlsZVxudGltZS4gIE5vdGUgdGhhdCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBpbmNsdWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlXG5leHByZXNzaW9uIHRoYXQgZmFpbGVkIGluIHRoZSBlcnJvciBtZXNzYWdlOyBpdCB3aWxsIGJlIGRpc3BsYXllZCBhc1xucGFydCBvZiB0aGUgc3RhY2sgdHJhY2UuXG5cbkFzc2lnbm1lbnRzIHRvIGBgX19kZWJ1Z19fYGAgYXJlIGlsbGVnYWwuICBUaGUgdmFsdWUgZm9yIHRoZSBidWlsdC1pblxudmFyaWFibGUgaXMgZGV0ZXJtaW5lZCB3aGVuIHRoZSBpbnRlcnByZXRlciBzdGFydHMuXG4nLAogICdhc3NpZ25tZW50JzogJ1xuQXNzaWdubWVudCBzdGF0ZW1lbnRzXG4qKioqKioqKioqKioqKioqKioqKipcblxuQXNzaWdubWVudCBzdGF0ZW1lbnRzIGFyZSB1c2VkIHRvIChyZSliaW5kIG5hbWVzIHRvIHZhbHVlcyBhbmQgdG9cbm1vZGlmeSBhdHRyaWJ1dGVzIG9yIGl0ZW1zIG9mIG11dGFibGUgb2JqZWN0czpcblxuICAgYXNzaWdubWVudF9zdG10IDo6PSAodGFyZ2V0X2xpc3QgIj0iKSsgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICB0YXJnZXRfbGlzdCAgICAgOjo9IHRhcmdldCAoIiwiIHRhcmdldCkqIFsiLCJdXG4gICB0YXJnZXQgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgfCAiKCIgdGFyZ2V0X2xpc3QgIikiXG4gICAgICAgICAgICAgIHwgIlsiIHRhcmdldF9saXN0ICJdIlxuICAgICAgICAgICAgICB8IGF0dHJpYnV0ZXJlZlxuICAgICAgICAgICAgICB8IHN1YnNjcmlwdGlvblxuICAgICAgICAgICAgICB8IHNsaWNpbmdcbiAgICAgICAgICAgICAgfCAiKiIgdGFyZ2V0XG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3IgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhc3NpZ25tZW50IHN0YXRlbWVudCBldmFsdWF0ZXMgdGhlIGV4cHJlc3Npb24gbGlzdCAocmVtZW1iZXIgdGhhdFxudGhpcyBjYW4gYmUgYSBzaW5nbGUgZXhwcmVzc2lvbiBvciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB0aGUgbGF0dGVyXG55aWVsZGluZyBhIHR1cGxlKSBhbmQgYXNzaWducyB0aGUgc2luZ2xlIHJlc3VsdGluZyBvYmplY3QgdG8gZWFjaCBvZlxudGhlIHRhcmdldCBsaXN0cywgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuXG5Bc3NpZ25tZW50IGlzIGRlZmluZWQgcmVjdXJzaXZlbHkgZGVwZW5kaW5nIG9uIHRoZSBmb3JtIG9mIHRoZSB0YXJnZXRcbihsaXN0KS4gV2hlbiBhIHRhcmdldCBpcyBwYXJ0IG9mIGEgbXV0YWJsZSBvYmplY3QgKGFuIGF0dHJpYnV0ZVxucmVmZXJlbmNlLCBzdWJzY3JpcHRpb24gb3Igc2xpY2luZyksIHRoZSBtdXRhYmxlIG9iamVjdCBtdXN0XG51bHRpbWF0ZWx5IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQgYW5kIGRlY2lkZSBhYm91dCBpdHMgdmFsaWRpdHksIGFuZFxubWF5IHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgYXNzaWdubWVudCBpcyB1bmFjY2VwdGFibGUuICBUaGUgcnVsZXNcbm9ic2VydmVkIGJ5IHZhcmlvdXMgdHlwZXMgYW5kIHRoZSBleGNlcHRpb25zIHJhaXNlZCBhcmUgZ2l2ZW4gd2l0aCB0aGVcbmRlZmluaXRpb24gb2YgdGhlIG9iamVjdCB0eXBlcyAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlXG5oaWVyYXJjaHkqKS5cblxuQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSB0YXJnZXQgbGlzdCwgb3B0aW9uYWxseSBlbmNsb3NlZCBpblxucGFyZW50aGVzZXMgb3Igc3F1YXJlIGJyYWNrZXRzLCBpcyByZWN1cnNpdmVseSBkZWZpbmVkIGFzIGZvbGxvd3MuXG5cbiogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGEgc2luZ2xlIHRhcmdldDogVGhlIG9iamVjdCBpcyBhc3NpZ25lZCB0b1xuICB0aGF0IHRhcmdldC5cblxuKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0YXJnZXRzOiBUaGUgb2JqZWN0XG4gIG11c3QgYmUgYW4gaXRlcmFibGUgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXMgYXMgdGhlcmUgYXJlXG4gIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgdGhlIGl0ZW1zIGFyZSBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvXG4gIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG4gICogSWYgdGhlIHRhcmdldCBsaXN0IGNvbnRhaW5zIG9uZSB0YXJnZXQgcHJlZml4ZWQgd2l0aCBhbiBhc3RlcmlzayxcbiAgICBjYWxsZWQgYSAic3RhcnJlZCIgdGFyZ2V0OiBUaGUgb2JqZWN0IG11c3QgYmUgYSBzZXF1ZW5jZSB3aXRoIGF0XG4gICAgbGVhc3QgYXMgbWFueSBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIG1pbnVzXG4gICAgb25lLiAgVGhlIGZpcnN0IGl0ZW1zIG9mIHRoZSBzZXF1ZW5jZSBhcmUgYXNzaWduZWQsIGZyb20gbGVmdCB0b1xuICAgIHJpZ2h0LCB0byB0aGUgdGFyZ2V0cyBiZWZvcmUgdGhlIHN0YXJyZWQgdGFyZ2V0LiAgVGhlIGZpbmFsIGl0ZW1zXG4gICAgb2YgdGhlIHNlcXVlbmNlIGFyZSBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0cyBhZnRlciB0aGUgc3RhcnJlZFxuICAgIHRhcmdldC4gIEEgbGlzdCBvZiB0aGUgcmVtYWluaW5nIGl0ZW1zIGluIHRoZSBzZXF1ZW5jZSBpcyB0aGVuXG4gICAgYXNzaWduZWQgdG8gdGhlIHN0YXJyZWQgdGFyZ2V0ICh0aGUgbGlzdCBjYW4gYmUgZW1wdHkpLlxuXG4gICogRWxzZTogVGhlIG9iamVjdCBtdXN0IGJlIGEgc2VxdWVuY2Ugd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXNcbiAgICBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCB0aGUgaXRlbXMgYXJlXG4gICAgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy5cblxuQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSBzaW5nbGUgdGFyZ2V0IGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXNcbmZvbGxvd3MuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhbiBpZGVudGlmaWVyIChuYW1lKTpcblxuICAqIElmIHRoZSBuYW1lIGRvZXMgbm90IG9jY3VyIGluIGEgYGBnbG9iYWxgYCBvciBgYG5vbmxvY2FsYGBcbiAgICBzdGF0ZW1lbnQgaW4gdGhlIGN1cnJlbnQgY29kZSBibG9jazogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlXG4gICAgb2JqZWN0IGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZS5cblxuICAqIE90aGVyd2lzZTogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlIG9iamVjdCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZVxuICAgIG9yIHRoZSBvdXRlciBuYW1lc3BhY2UgZGV0ZXJtaW5lZCBieSBgYG5vbmxvY2FsYGAsIHJlc3BlY3RpdmVseS5cblxuICBUaGUgbmFtZSBpcyByZWJvdW5kIGlmIGl0IHdhcyBhbHJlYWR5IGJvdW5kLiAgVGhpcyBtYXkgY2F1c2UgdGhlXG4gIHJlZmVyZW5jZSBjb3VudCBmb3IgdGhlIG9iamVjdCBwcmV2aW91c2x5IGJvdW5kIHRvIHRoZSBuYW1lIHRvIHJlYWNoXG4gIHplcm8sIGNhdXNpbmcgdGhlIG9iamVjdCB0byBiZSBkZWFsbG9jYXRlZCBhbmQgaXRzIGRlc3RydWN0b3IgKGlmIGl0XG4gIGhhcyBvbmUpIHRvIGJlIGNhbGxlZC5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgdGFyZ2V0IGxpc3QgZW5jbG9zZWQgaW4gcGFyZW50aGVzZXMgb3IgaW4gc3F1YXJlXG4gIGJyYWNrZXRzOiBUaGUgb2JqZWN0IG11c3QgYmUgYW4gaXRlcmFibGUgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2ZcbiAgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgaXRzIGl0ZW1zIGFyZVxuICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYW4gYXR0cmlidXRlIHJlZmVyZW5jZTogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpblxuICB0aGUgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBhbiBvYmplY3Qgd2l0aFxuICBhc3NpZ25hYmxlIGF0dHJpYnV0ZXM7IGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCBgYFR5cGVFcnJvcmBgIGlzXG4gIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG9cbiAgdGhlIGdpdmVuIGF0dHJpYnV0ZTsgaWYgaXQgY2Fubm90IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQsIGl0IHJhaXNlc1xuICBhbiBleGNlcHRpb24gKHVzdWFsbHkgYnV0IG5vdCBuZWNlc3NhcmlseSBgYEF0dHJpYnV0ZUVycm9yYGApLlxuXG4gIE5vdGU6IElmIHRoZSBvYmplY3QgaXMgYSBjbGFzcyBpbnN0YW5jZSBhbmQgdGhlIGF0dHJpYnV0ZSByZWZlcmVuY2VcbiAgb2NjdXJzIG9uIGJvdGggc2lkZXMgb2YgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IsIHRoZSBSSFMgZXhwcmVzc2lvbixcbiAgYGBhLnhgYCBjYW4gYWNjZXNzIGVpdGhlciBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgb3IgKGlmIG5vIGluc3RhbmNlXG4gIGF0dHJpYnV0ZSBleGlzdHMpIGEgY2xhc3MgYXR0cmlidXRlLiAgVGhlIExIUyB0YXJnZXQgYGBhLnhgYCBpc1xuICBhbHdheXMgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LlxuICBUaHVzLCB0aGUgdHdvIG9jY3VycmVuY2VzIG9mIGBgYS54YGAgZG8gbm90IG5lY2Vzc2FyaWx5IHJlZmVyIHRvIHRoZVxuICBzYW1lIGF0dHJpYnV0ZTogaWYgdGhlIFJIUyBleHByZXNzaW9uIHJlZmVycyB0byBhIGNsYXNzIGF0dHJpYnV0ZSxcbiAgdGhlIExIUyBjcmVhdGVzIGEgbmV3IGluc3RhbmNlIGF0dHJpYnV0ZSBhcyB0aGUgdGFyZ2V0IG9mIHRoZVxuICBhc3NpZ25tZW50OlxuXG4gICAgIGNsYXNzIENsczpcbiAgICAgICAgIHggPSAzICAgICAgICAgICAgICMgY2xhc3MgdmFyaWFibGVcbiAgICAgaW5zdCA9IENscygpXG4gICAgIGluc3QueCA9IGluc3QueCArIDEgICAjIHdyaXRlcyBpbnN0LnggYXMgNCBsZWF2aW5nIENscy54IGFzIDNcblxuICBUaGlzIGRlc2NyaXB0aW9uIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGFwcGx5IHRvIGRlc2NyaXB0b3JcbiAgYXR0cmlidXRlcywgc3VjaCBhcyBwcm9wZXJ0aWVzIGNyZWF0ZWQgd2l0aCBgYHByb3BlcnR5KClgYC5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGVpdGhlciBhIG11dGFibGUgc2VxdWVuY2VcbiAgb2JqZWN0IChzdWNoIGFzIGEgbGlzdCkgb3IgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLlxuICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuXG4gIElmIHRoZSBwcmltYXJ5IGlzIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3QgKHN1Y2ggYXMgYSBsaXN0KSwgdGhlXG4gIHN1YnNjcmlwdCBtdXN0IHlpZWxkIGFuIGludGVnZXIuICBJZiBpdCBpcyBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlXG4gIGludGVnZXIgbGVzcyB0aGFuIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGgsIGFuZCB0aGUgc2VxdWVuY2UgaXMgYXNrZWRcbiAgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG8gaXRzIGl0ZW0gd2l0aCB0aGF0IGluZGV4LiAgSWYgdGhlXG4gIGluZGV4IGlzIG91dCBvZiByYW5nZSwgYGBJbmRleEVycm9yYGAgaXMgcmFpc2VkIChhc3NpZ25tZW50IHRvIGFcbiAgc3Vic2NyaXB0ZWQgc2VxdWVuY2UgY2Fubm90IGFkZCBuZXcgaXRlbXMgdG8gYSBsaXN0KS5cblxuICBJZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSksIHRoZVxuICBzdWJzY3JpcHQgbXVzdCBoYXZlIGEgdHlwZSBjb21wYXRpYmxlIHdpdGggdGhlIG1hcHBpbmdcJ3Mga2V5IHR5cGUsXG4gIGFuZCB0aGUgbWFwcGluZyBpcyB0aGVuIGFza2VkIHRvIGNyZWF0ZSBhIGtleS9kYXR1bSBwYWlyIHdoaWNoIG1hcHNcbiAgdGhlIHN1YnNjcmlwdCB0byB0aGUgYXNzaWduZWQgb2JqZWN0LiAgVGhpcyBjYW4gZWl0aGVyIHJlcGxhY2UgYW5cbiAgZXhpc3Rpbmcga2V5L3ZhbHVlIHBhaXIgd2l0aCB0aGUgc2FtZSBrZXkgdmFsdWUsIG9yIGluc2VydCBhIG5ld1xuICBrZXkvdmFsdWUgcGFpciAoaWYgbm8ga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUgZXhpc3RlZCkuXG5cbiAgRm9yIHVzZXItZGVmaW5lZCBvYmplY3RzLCB0aGUgYGBfX3NldGl0ZW1fXygpYGAgbWV0aG9kIGlzIGNhbGxlZFxuICB3aXRoIGFwcHJvcHJpYXRlIGFyZ3VtZW50cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc2xpY2luZzogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpbiB0aGUgcmVmZXJlbmNlXG4gIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBhIG11dGFibGUgc2VxdWVuY2Ugb2JqZWN0IChzdWNoIGFzIGFcbiAgbGlzdCkuICBUaGUgYXNzaWduZWQgb2JqZWN0IHNob3VsZCBiZSBhIHNlcXVlbmNlIG9iamVjdCBvZiB0aGUgc2FtZVxuICB0eXBlLiAgTmV4dCwgdGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZCBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkLFxuICBpbnNvZmFyIHRoZXkgYXJlIHByZXNlbnQ7IGRlZmF1bHRzIGFyZSB6ZXJvIGFuZCB0aGUgc2VxdWVuY2VcJ3NcbiAgbGVuZ3RoLiAgVGhlIGJvdW5kcyBzaG91bGQgZXZhbHVhdGUgdG8gaW50ZWdlcnMuIElmIGVpdGhlciBib3VuZCBpc1xuICBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSByZXN1bHRpbmdcbiAgYm91bmRzIGFyZSBjbGlwcGVkIHRvIGxpZSBiZXR3ZWVuIHplcm8gYW5kIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGgsXG4gIGluY2x1c2l2ZS4gIEZpbmFsbHksIHRoZSBzZXF1ZW5jZSBvYmplY3QgaXMgYXNrZWQgdG8gcmVwbGFjZSB0aGVcbiAgc2xpY2Ugd2l0aCB0aGUgaXRlbXMgb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLiAgVGhlIGxlbmd0aCBvZiB0aGVcbiAgc2xpY2UgbWF5IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBsZW5ndGggb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLFxuICB0aHVzIGNoYW5naW5nIHRoZSBsZW5ndGggb2YgdGhlIHRhcmdldCBzZXF1ZW5jZSwgaWYgdGhlIG9iamVjdFxuICBhbGxvd3MgaXQuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoZVxuc3ludGF4IGZvciB0YXJnZXRzIGlzIHRha2VuIHRvIGJlIHRoZSBzYW1lIGFzIGZvciBleHByZXNzaW9ucywgYW5kXG5pbnZhbGlkIHN5bnRheCBpcyByZWplY3RlZCBkdXJpbmcgdGhlIGNvZGUgZ2VuZXJhdGlvbiBwaGFzZSwgY2F1c2luZ1xubGVzcyBkZXRhaWxlZCBlcnJvciBtZXNzYWdlcy5cblxuV0FSTklORzogQWx0aG91Z2ggdGhlIGRlZmluaXRpb24gb2YgYXNzaWdubWVudCBpbXBsaWVzIHRoYXQgb3ZlcmxhcHNcbmJldHdlZW4gdGhlIGxlZnQtaGFuZCBzaWRlIGFuZCB0aGUgcmlnaHQtaGFuZCBzaWRlIGFyZSBcJ3NhZmVcJyAoZm9yXG5leGFtcGxlIGBgYSwgYiA9IGIsIGFgYCBzd2FwcyB0d28gdmFyaWFibGVzKSwgb3ZlcmxhcHMgKndpdGhpbiogdGhlXG5jb2xsZWN0aW9uIG9mIGFzc2lnbmVkLXRvIHZhcmlhYmxlcyBhcmUgbm90IHNhZmUhICBGb3IgaW5zdGFuY2UsIHRoZVxuZm9sbG93aW5nIHByb2dyYW0gcHJpbnRzIGBgWzAsIDJdYGA6XG5cbiAgIHggPSBbMCwgMV1cbiAgIGkgPSAwXG4gICBpLCB4W2ldID0gMSwgMlxuICAgcHJpbnQoeClcblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMzIqKiAtIEV4dGVuZGVkIEl0ZXJhYmxlIFVucGFja2luZ1xuICAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBgYCp0YXJnZXRgYCBmZWF0dXJlLlxuXG5cbkF1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsIG9mIGFcbmJpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuXG4gICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4gICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3IgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSBgYHggKz0gMWBgIGNhbiBiZSByZXdyaXR0ZW4gYXNcbmBgeCA9IHggKyAxYGAgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCBlZmZlY3QuIEluXG50aGUgYXVnbWVudGVkIHZlcnNpb24sIGBgeGBgIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW5cbnBvc3NpYmxlLCB0aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0XG5yYXRoZXIgdGhhbiBjcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsXG50aGUgb2xkIG9iamVjdCBpcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5XaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyBpbiBhXG5zaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG5zdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gU2ltaWxhcmx5LFxud2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgYmluYXJ5XG5vcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBub3JtYWxcbmJpbmFyeSBvcGVyYXRpb25zLlxuXG5Gb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lICpjYXZlYXQgYWJvdXRcbmNsYXNzIGFuZCBpbnN0YW5jZSBhdHRyaWJ1dGVzKiBhcHBsaWVzIGFzIGZvciByZWd1bGFyIGFzc2lnbm1lbnRzLlxuJywKICAnYXRvbS1pZGVudGlmaWVycyc6ICdcbklkZW50aWZpZXJzIChOYW1lcylcbioqKioqKioqKioqKioqKioqKipcblxuQW4gaWRlbnRpZmllciBvY2N1cnJpbmcgYXMgYW4gYXRvbSBpcyBhIG5hbWUuICBTZWUgc2VjdGlvblxuKklkZW50aWZpZXJzIGFuZCBrZXl3b3JkcyogZm9yIGxleGljYWwgZGVmaW5pdGlvbiBhbmQgc2VjdGlvbiAqTmFtaW5nXG5hbmQgYmluZGluZyogZm9yIGRvY3VtZW50YXRpb24gb2YgbmFtaW5nIGFuZCBiaW5kaW5nLlxuXG5XaGVuIHRoZSBuYW1lIGlzIGJvdW5kIHRvIGFuIG9iamVjdCwgZXZhbHVhdGlvbiBvZiB0aGUgYXRvbSB5aWVsZHNcbnRoYXQgb2JqZWN0LiBXaGVuIGEgbmFtZSBpcyBub3QgYm91bmQsIGFuIGF0dGVtcHQgdG8gZXZhbHVhdGUgaXRcbnJhaXNlcyBhIGBgTmFtZUVycm9yYGAgZXhjZXB0aW9uLlxuXG4qKlByaXZhdGUgbmFtZSBtYW5nbGluZzoqKiBXaGVuIGFuIGlkZW50aWZpZXIgdGhhdCB0ZXh0dWFsbHkgb2NjdXJzIGluXG5hIGNsYXNzIGRlZmluaXRpb24gYmVnaW5zIHdpdGggdHdvIG9yIG1vcmUgdW5kZXJzY29yZSBjaGFyYWN0ZXJzIGFuZFxuZG9lcyBub3QgZW5kIGluIHR3byBvciBtb3JlIHVuZGVyc2NvcmVzLCBpdCBpcyBjb25zaWRlcmVkIGEgKnByaXZhdGVcbm5hbWUqIG9mIHRoYXQgY2xhc3MuIFByaXZhdGUgbmFtZXMgYXJlIHRyYW5zZm9ybWVkIHRvIGEgbG9uZ2VyIGZvcm1cbmJlZm9yZSBjb2RlIGlzIGdlbmVyYXRlZCBmb3IgdGhlbS4gIFRoZSB0cmFuc2Zvcm1hdGlvbiBpbnNlcnRzIHRoZVxuY2xhc3MgbmFtZSBpbiBmcm9udCBvZiB0aGUgbmFtZSwgd2l0aCBsZWFkaW5nIHVuZGVyc2NvcmVzIHJlbW92ZWQsIGFuZFxuYSBzaW5nbGUgdW5kZXJzY29yZSBpbnNlcnRlZCBpbiBmcm9udCBvZiB0aGUgY2xhc3MgbmFtZS4gIEZvciBleGFtcGxlLFxudGhlIGlkZW50aWZpZXIgYGBfX3NwYW1gYCBvY2N1cnJpbmcgaW4gYSBjbGFzcyBuYW1lZCBgYEhhbWBgIHdpbGwgYmVcbnRyYW5zZm9ybWVkIHRvIGBgX0hhbV9fc3BhbWBgLiAgVGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyBpbmRlcGVuZGVudCBvZlxudGhlIHN5bnRhY3RpY2FsIGNvbnRleHQgaW4gd2hpY2ggdGhlIGlkZW50aWZpZXIgaXMgdXNlZC4gIElmIHRoZVxudHJhbnNmb3JtZWQgbmFtZSBpcyBleHRyZW1lbHkgbG9uZyAobG9uZ2VyIHRoYW4gMjU1IGNoYXJhY3RlcnMpLFxuaW1wbGVtZW50YXRpb24gZGVmaW5lZCB0cnVuY2F0aW9uIG1heSBoYXBwZW4uICBJZiB0aGUgY2xhc3MgbmFtZVxuY29uc2lzdHMgb25seSBvZiB1bmRlcnNjb3Jlcywgbm8gdHJhbnNmb3JtYXRpb24gaXMgZG9uZS5cbicsCiAgJ2F0b20tbGl0ZXJhbHMnOiAiXG5MaXRlcmFsc1xuKioqKioqKipcblxuUHl0aG9uIHN1cHBvcnRzIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgYW5kIHZhcmlvdXMgbnVtZXJpY1xubGl0ZXJhbHM6XG5cbiAgIGxpdGVyYWwgOjo9IHN0cmluZ2xpdGVyYWwgfCBieXRlc2xpdGVyYWxcbiAgICAgICAgICAgICAgIHwgaW50ZWdlciB8IGZsb2F0bnVtYmVyIHwgaW1hZ251bWJlclxuXG5FdmFsdWF0aW9uIG9mIGEgbGl0ZXJhbCB5aWVsZHMgYW4gb2JqZWN0IG9mIHRoZSBnaXZlbiB0eXBlIChzdHJpbmcsXG5ieXRlcywgaW50ZWdlciwgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBjb21wbGV4IG51bWJlcikgd2l0aCB0aGUgZ2l2ZW5cbnZhbHVlLiAgVGhlIHZhbHVlIG1heSBiZSBhcHByb3hpbWF0ZWQgaW4gdGhlIGNhc2Ugb2YgZmxvYXRpbmcgcG9pbnRcbmFuZCBpbWFnaW5hcnkgKGNvbXBsZXgpIGxpdGVyYWxzLiAgU2VlIHNlY3Rpb24gKkxpdGVyYWxzKiBmb3IgZGV0YWlscy5cblxuQWxsIGxpdGVyYWxzIGNvcnJlc3BvbmQgdG8gaW1tdXRhYmxlIGRhdGEgdHlwZXMsIGFuZCBoZW5jZSB0aGVcbm9iamVjdCdzIGlkZW50aXR5IGlzIGxlc3MgaW1wb3J0YW50IHRoYW4gaXRzIHZhbHVlLiAgTXVsdGlwbGVcbmV2YWx1YXRpb25zIG9mIGxpdGVyYWxzIHdpdGggdGhlIHNhbWUgdmFsdWUgKGVpdGhlciB0aGUgc2FtZVxub2NjdXJyZW5jZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IG9yIGEgZGlmZmVyZW50IG9jY3VycmVuY2UpIG1heSBvYnRhaW5cbnRoZSBzYW1lIG9iamVjdCBvciBhIGRpZmZlcmVudCBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZS5cbiIsCi0gJ2F0dHJpYnV0ZS1hY2Nlc3MnOiAnXG5DdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlIG1lYW5pbmcgb2ZcbmF0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgYGB4Lm5hbWVgYClcbmZvciBjbGFzcyBpbnN0YW5jZXMuXG5cbm9iamVjdC5fX2dldGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgbG9va3VwIGhhcyBub3QgZm91bmQgdGhlIGF0dHJpYnV0ZSBpbiB0aGVcbiAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG5vciBpcyBpdCBmb3VuZFxuICAgaW4gdGhlIGNsYXNzIHRyZWUgZm9yIGBgc2VsZmBgKS4gIGBgbmFtZWBgIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZS5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlXG4gICBhbiBgYEF0dHJpYnV0ZUVycm9yYGAgZXhjZXB0aW9uLlxuXG4gICBOb3RlIHRoYXQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aHJvdWdoIHRoZSBub3JtYWwgbWVjaGFuaXNtLFxuICAgYGBfX2dldGF0dHJfXygpYGAgaXMgbm90IGNhbGxlZC4gIChUaGlzIGlzIGFuIGludGVudGlvbmFsIGFzeW1tZXRyeVxuICAgYmV0d2VlbiBgYF9fZ2V0YXR0cl9fKClgYCBhbmQgYGBfX3NldGF0dHJfXygpYGAuKSBUaGlzIGlzIGRvbmUgYm90aFxuICAgZm9yIGVmZmljaWVuY3kgcmVhc29ucyBhbmQgYmVjYXVzZSBvdGhlcndpc2UgYGBfX2dldGF0dHJfXygpYGBcbiAgIHdvdWxkIGhhdmUgbm8gd2F5IHRvIGFjY2VzcyBvdGhlciBhdHRyaWJ1dGVzIG9mIHRoZSBpbnN0YW5jZS4gIE5vdGVcbiAgIHRoYXQgYXQgbGVhc3QgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgeW91IGNhbiBmYWtlIHRvdGFsIGNvbnRyb2wgYnlcbiAgIG5vdCBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlIGRpY3Rpb25hcnkgKGJ1dFxuICAgaW5zdGVhZCBpbnNlcnRpbmcgdGhlbSBpbiBhbm90aGVyIG9iamVjdCkuICBTZWUgdGhlXG4gICBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgZ2V0IHRvdGFsXG4gICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cblxub2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzIGZvclxuICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lc1xuICAgYGBfX2dldGF0dHJfXygpYGAsIHRoZSBsYXR0ZXIgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzc1xuICAgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBlaXRoZXIgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW5cbiAgIGBgQXR0cmlidXRlRXJyb3JgYC4gVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKVxuICAgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uIEluIG9yZGVyXG4gICB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gaW4gdGhpcyBtZXRob2QsIGl0cyBpbXBsZW1lbnRhdGlvblxuICAgc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUgdG9cbiAgIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCBuZWVkcywgZm9yIGV4YW1wbGUsXG4gICBgYG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpYGAuXG5cbiAgIE5vdGU6IFRoaXMgbWV0aG9kIG1heSBzdGlsbCBiZSBieXBhc3NlZCB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbCBtZXRob2RzXG4gICAgIGFzIHRoZSByZXN1bHQgb2YgaW1wbGljaXQgaW52b2NhdGlvbiB2aWEgbGFuZ3VhZ2Ugc3ludGF4IG9yXG4gICAgIGJ1aWx0LWluIGZ1bmN0aW9ucy4gU2VlICpTcGVjaWFsIG1ldGhvZCBsb29rdXAqLlxuXG5vYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBhc3NpZ25tZW50IGlzIGF0dGVtcHRlZC4gIFRoaXMgaXMgY2FsbGVkXG4gICBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgbWVjaGFuaXNtIChpLmUuIHN0b3JlIHRoZSB2YWx1ZSBpbiB0aGVcbiAgIGluc3RhbmNlIGRpY3Rpb25hcnkpLiAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAqdmFsdWUqIGlzIHRoZVxuICAgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gaXQuXG5cbiAgIElmIGBgX19zZXRhdHRyX18oKWBgIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGl0XG4gICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lLCBmb3IgZXhhbXBsZSxcbiAgIGBgb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKWBgLlxuXG5vYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgTGlrZSBgYF9fc2V0YXR0cl9fKClgYCBidXQgZm9yIGF0dHJpYnV0ZSBkZWxldGlvbiBpbnN0ZWFkIG9mXG4gICBhc3NpZ25tZW50LiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBpZiBgYGRlbCBvYmoubmFtZWBgIGlzXG4gICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuXG5vYmplY3QuX19kaXJfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiBgYGRpcigpYGAgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuICBBIGxpc3QgbXVzdCBiZVxuICAgcmV0dXJuZWQuXG5cblxuSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzXG49PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgd2hlbiBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3NcbmNvbnRhaW5pbmcgdGhlIG1ldGhvZCAoYSBzby1jYWxsZWQgKmRlc2NyaXB0b3IqIGNsYXNzKSBhcHBlYXJzIGluIGFuXG4qb3duZXIqIGNsYXNzICh0aGUgZGVzY3JpcHRvciBtdXN0IGJlIGluIGVpdGhlciB0aGUgb3duZXJcJ3MgY2xhc3NcbmRpY3Rpb25hcnkgb3IgaW4gdGhlIGNsYXNzIGRpY3Rpb25hcnkgZm9yIG9uZSBvZiBpdHMgcGFyZW50cykuICBJbiB0aGVcbmV4YW1wbGVzIGJlbG93LCAidGhlIGF0dHJpYnV0ZSIgcmVmZXJzIHRvIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpc1xudGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzXCcgYGBfX2RpY3RfX2BgLlxuXG5vYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG5cbiAgIENhbGxlZCB0byBnZXQgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgb3duZXIgY2xhc3MgKGNsYXNzIGF0dHJpYnV0ZVxuICAgYWNjZXNzKSBvciBvZiBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIChpbnN0YW5jZSBhdHRyaWJ1dGVcbiAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgKmluc3RhbmNlKiBpcyB0aGVcbiAgIGluc3RhbmNlIHRoYXQgdGhlIGF0dHJpYnV0ZSB3YXMgYWNjZXNzZWQgdGhyb3VnaCwgb3IgYGBOb25lYGAgd2hlblxuICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyBtZXRob2Qgc2hvdWxkXG4gICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICBgYEF0dHJpYnV0ZUVycm9yYGAgZXhjZXB0aW9uLlxuXG5vYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBzZXQgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZSBvd25lclxuICAgY2xhc3MgdG8gYSBuZXcgdmFsdWUsICp2YWx1ZSouXG5cbm9iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuXG4gICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGVcbiAgIG93bmVyIGNsYXNzLlxuXG5cbkludm9raW5nIERlc2NyaXB0b3JzXG49PT09PT09PT09PT09PT09PT09PVxuXG5JbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICJiaW5kaW5nXG5iZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnkgbWV0aG9kc1xuaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICBgYF9fZ2V0X18oKWBgLCBgYF9fc2V0X18oKWBgLCBhbmRcbmBgX19kZWxldGVfXygpYGAuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciBhbiBvYmplY3QsXG5pdCBpcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cblxuVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCBzZXQsIG9yIGRlbGV0ZVxudGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdFwncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsIGBgYS54YGAgaGFzIGFcbmxvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoIGBgYS5fX2RpY3RfX1tcJ3hcJ11gYCwgdGhlblxuYGB0eXBlKGEpLl9fZGljdF9fW1wneFwnXWBgLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzZXMgb2ZcbmBgdHlwZShhKWBgIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cblxuSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mIHRoZVxuZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kXG5pbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiB0aGVcbnByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSBkZWZpbmVkIGFuZFxuaG93IHRoZXkgd2VyZSBjYWxsZWQuXG5cblRoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgYGBhLnhgYC5cbkhvdyB0aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiBgYGFgYDpcblxuRGlyZWN0IENhbGxcbiAgIFRoZSBzaW1wbGVzdCBhbmQgbGVhc3QgY29tbW9uIGNhbGwgaXMgd2hlbiB1c2VyIGNvZGUgZGlyZWN0bHlcbiAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgYGB4Ll9fZ2V0X18oYSlgYC5cblxuSW5zdGFuY2UgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsIGBgYS54YGAgaXMgdHJhbnNmb3JtZWQgaW50byB0aGVcbiAgIGNhbGw6IGBgdHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKWBgLlxuXG5DbGFzcyBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGEgY2xhc3MsIGBgQS54YGAgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgY2FsbDpcbiAgIGBgQS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhOb25lLCBBKWBgLlxuXG5TdXBlciBCaW5kaW5nXG4gICBJZiBgYGFgYCBpcyBhbiBpbnN0YW5jZSBvZiBgYHN1cGVyYGAsIHRoZW4gdGhlIGJpbmRpbmcgYGBzdXBlcihCLFxuICAgb2JqKS5tKClgYCBzZWFyY2hlcyBgYG9iai5fX2NsYXNzX18uX19tcm9fX2BgIGZvciB0aGUgYmFzZSBjbGFzc1xuICAgYGBBYGAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIGBgQmBgIGFuZCB0aGVuIGludm9rZXMgdGhlIGRlc2NyaXB0b3JcbiAgIHdpdGggdGhlIGNhbGw6IGBgQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pYGAuXG5cbkZvciBpbnN0YW5jZSBiaW5kaW5ncywgdGhlIHByZWNlZGVuY2Ugb2YgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGRlcGVuZHNcbm9uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBIGRlc2NyaXB0b3IgY2FuIGRlZmluZVxuYW55IGNvbWJpbmF0aW9uIG9mIGBgX19nZXRfXygpYGAsIGBgX19zZXRfXygpYGAgYW5kIGBgX19kZWxldGVfXygpYGAuXG5JZiBpdCBkb2VzIG5vdCBkZWZpbmUgYGBfX2dldF9fKClgYCwgdGhlbiBhY2Nlc3NpbmcgdGhlIGF0dHJpYnV0ZSB3aWxsXG5yZXR1cm4gdGhlIGRlc2NyaXB0b3Igb2JqZWN0IGl0c2VsZiB1bmxlc3MgdGhlcmUgaXMgYSB2YWx1ZSBpbiB0aGVcbm9iamVjdFwncyBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyBgYF9fc2V0X18oKWBgXG5hbmQvb3IgYGBfX2RlbGV0ZV9fKClgYCwgaXQgaXMgYSBkYXRhIGRlc2NyaXB0b3I7IGlmIGl0IGRlZmluZXNcbm5laXRoZXIsIGl0IGlzIGEgbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzXG5kZWZpbmUgYm90aCBgYF9fZ2V0X18oKWBgIGFuZCBgYF9fc2V0X18oKWBgLCB3aGlsZSBub24tZGF0YVxuZGVzY3JpcHRvcnMgaGF2ZSBqdXN0IHRoZSBgYF9fZ2V0X18oKWBgIG1ldGhvZC4gIERhdGEgZGVzY3JpcHRvcnMgd2l0aFxuYGBfX3NldF9fKClgYCBhbmQgYGBfX2dldF9fKClgYCBkZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvblxuaW4gYW4gaW5zdGFuY2UgZGljdGlvbmFyeS4gIEluIGNvbnRyYXN0LCBub24tZGF0YSBkZXNjcmlwdG9ycyBjYW4gYmVcbm92ZXJyaWRkZW4gYnkgaW5zdGFuY2VzLlxuXG5QeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nIGBgc3RhdGljbWV0aG9kKClgYCBhbmQgYGBjbGFzc21ldGhvZCgpYGApXG5hcmUgaW1wbGVtZW50ZWQgYXMgbm9uLWRhdGEgZGVzY3JpcHRvcnMuICBBY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhblxucmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsIGluc3RhbmNlcyB0b1xuYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2xhc3MuXG5cblRoZSBgYHByb3BlcnR5KClgYCBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgZGVzY3JpcHRvci5cbkFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBhIHByb3BlcnR5LlxuXG5cbl9fc2xvdHNfX1xuPT09PT09PT09XG5cbkJ5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciBhdHRyaWJ1dGVcbnN0b3JhZ2UuICBUaGlzIHdhc3RlcyBzcGFjZSBmb3Igb2JqZWN0cyBoYXZpbmcgdmVyeSBmZXcgaW5zdGFuY2VcbnZhcmlhYmxlcy4gIFRoZSBzcGFjZSBjb25zdW1wdGlvbiBjYW4gYmVjb21lIGFjdXRlIHdoZW4gY3JlYXRpbmcgbGFyZ2Vcbm51bWJlcnMgb2YgaW5zdGFuY2VzLlxuXG5UaGUgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyAqX19zbG90c19fKiBpbiBhIGNsYXNzXG5kZWZpbml0aW9uLiBUaGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gdGFrZXMgYSBzZXF1ZW5jZSBvZiBpbnN0YW5jZVxudmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoIGluc3RhbmNlIHRvIGhvbGQgYVxudmFsdWUgZm9yIGVhY2ggdmFyaWFibGUuICBTcGFjZSBpcyBzYXZlZCBiZWNhdXNlICpfX2RpY3RfXyogaXMgbm90XG5jcmVhdGVkIGZvciBlYWNoIGluc3RhbmNlLlxuXG5vYmplY3QuX19zbG90c19fXG5cbiAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCBpdGVyYWJsZSwgb3Igc2VxdWVuY2VcbiAgIG9mIHN0cmluZ3Mgd2l0aCB2YXJpYWJsZSBuYW1lcyB1c2VkIGJ5IGluc3RhbmNlcy4gIElmIGRlZmluZWQgaW4gYVxuICAgY2xhc3MsICpfX3Nsb3RzX18qIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgZGVjbGFyZWQgdmFyaWFibGVzIGFuZFxuICAgcHJldmVudHMgdGhlIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qIGZvclxuICAgZWFjaCBpbnN0YW5jZS5cblxuXG5Ob3RlcyBvbiB1c2luZyAqX19zbG90c19fKlxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosIHRoZSAqX19kaWN0X18qXG4gIGF0dHJpYnV0ZSBvZiB0aGF0IGNsYXNzIHdpbGwgYWx3YXlzIGJlIGFjY2Vzc2libGUsIHNvIGEgKl9fc2xvdHNfXypcbiAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG5cbiogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgYXNzaWduZWQgbmV3XG4gIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIHRoZSAqX19zbG90c19fKiBkZWZpbml0aW9uLiAgQXR0ZW1wdHMgdG9cbiAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzIGBgQXR0cmlidXRlRXJyb3JgYC4gSWZcbiAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiBhZGRcbiAgYGBcJ19fZGljdF9fXCdgYCB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXypcbiAgZGVjbGFyYXRpb24uXG5cbiogV2l0aG91dCBhICpfX3dlYWtyZWZfXyogdmFyaWFibGUgZm9yIGVhY2ggaW5zdGFuY2UsIGNsYXNzZXMgZGVmaW5pbmdcbiAgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvIGl0cyBpbnN0YW5jZXMuIElmIHdlYWtcbiAgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuIGFkZCBgYFwnX193ZWFrcmVmX19cJ2BgIHRvIHRoZVxuICBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbi5cblxuKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5IGNyZWF0aW5nXG4gIGRlc2NyaXB0b3JzICgqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKikgZm9yIGVhY2ggdmFyaWFibGUgbmFtZS4gIEFzXG4gIGEgcmVzdWx0LCBjbGFzcyBhdHRyaWJ1dGVzIGNhbm5vdCBiZSB1c2VkIHRvIHNldCBkZWZhdWx0IHZhbHVlcyBmb3JcbiAgaW5zdGFuY2UgdmFyaWFibGVzIGRlZmluZWQgYnkgKl9fc2xvdHNfXyo7IG90aGVyd2lzZSwgdGhlIGNsYXNzXG4gIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cblxuKiBUaGUgYWN0aW9uIG9mIGEgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gaXMgbGltaXRlZCB0byB0aGUgY2xhc3NcbiAgd2hlcmUgaXQgaXMgZGVmaW5lZC4gIEFzIGEgcmVzdWx0LCBzdWJjbGFzc2VzIHdpbGwgaGF2ZSBhICpfX2RpY3RfXypcbiAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSBjb250YWluIG5hbWVzXG4gIG9mIGFueSAqYWRkaXRpb25hbCogc2xvdHMpLlxuXG4qIElmIGEgY2xhc3MgZGVmaW5lcyBhIHNsb3QgYWxzbyBkZWZpbmVkIGluIGEgYmFzZSBjbGFzcywgdGhlIGluc3RhbmNlXG4gIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyBpbmFjY2Vzc2libGUgKGV4Y2VwdCBieVxuICByZXRyaWV2aW5nIGl0cyBkZXNjcmlwdG9yIGRpcmVjdGx5IGZyb20gdGhlIGJhc2UgY2xhc3MpLiBUaGlzXG4gIHJlbmRlcnMgdGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0gdW5kZWZpbmVkLiAgSW4gdGhlIGZ1dHVyZSwgYVxuICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuXG4qIE5vbmVtcHR5ICpfX3Nsb3RzX18qIGRvZXMgbm90IHdvcmsgZm9yIGNsYXNzZXMgZGVyaXZlZCBmcm9tXG4gICJ2YXJpYWJsZS1sZW5ndGgiIGJ1aWx0LWluIHR5cGVzIHN1Y2ggYXMgYGBpbnRgYCwgYGBzdHJgYCBhbmRcbiAgYGB0dXBsZWBgLlxuXG4qIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAqX19zbG90c19fKi4gTWFwcGluZ3MgbWF5XG4gIGFsc28gYmUgdXNlZDsgaG93ZXZlciwgaW4gdGhlIGZ1dHVyZSwgc3BlY2lhbCBtZWFuaW5nIG1heSBiZVxuICBhc3NpZ25lZCB0byB0aGUgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBrZXkuXG5cbiogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlIHRoZSBzYW1lXG4gICpfX3Nsb3RzX18qLlxuJywKKyAnYXR0cmlidXRlLWFjY2Vzcyc6ICdcbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3NcbioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiBgYHgubmFtZWBgKVxuZm9yIGNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgYGBzZWxmYGApLiAgYGBuYW1lYGAgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2VcbiAgIGFuIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICBgYF9fZ2V0YXR0cl9fKClgYCBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuIGBgX19nZXRhdHRyX18oKWBgIGFuZCBgYF9fc2V0YXR0cl9fKClgYC4pIFRoaXMgaXMgZG9uZSBib3RoXG4gICBmb3IgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSBgYF9fZ2V0YXR0cl9fKClgYFxuICAgd291bGQgaGF2ZSBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZVxuICAgdGhhdCBhdCBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieVxuICAgbm90IGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzXG4gICBgYF9fZ2V0YXR0cl9fKClgYCwgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzXG4gICBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIGVpdGhlciBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgLiBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpXG4gICBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi4gSW4gb3JkZXJcbiAgIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpbiB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uXG4gICBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0b1xuICAgYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3IgZXhhbXBsZSxcbiAgIGBgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlgYC5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHNcbiAgICAgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXggb3JcbiAgICAgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgYGBfX3NldGF0dHJfXygpYGAgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpYGAuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlIGBgX19zZXRhdHRyX18oKWBgIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmIGBgZGVsIG9iai5uYW1lYGAgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIGBgZGlyKClgYCBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gQSBzZXF1ZW5jZSBtdXN0IGJlXG4gICByZXR1cm5lZC4gYGBkaXIoKWBgIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhIGxpc3QgYW5kXG4gICBzb3J0cyBpdC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyBgYF9fZGljdF9fYGAuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciBgYE5vbmVgYCB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogIGBgX19nZXRfXygpYGAsIGBgX19zZXRfXygpYGAsIGFuZFxuYGBfX2RlbGV0ZV9fKClgYC4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCxcbml0IGlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgYGBhLnhgYCBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggYGBhLl9fZGljdF9fW1wneFwnXWBgLCB0aGVuXG5gYHR5cGUoYSkuX19kaWN0X19bXCd4XCddYGAsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuYGB0eXBlKGEpYGAgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC5cblxuVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCBgYGEueGBgLlxuSG93IHRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uIGBgYWBgOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICBgYHguX19nZXRfXyhhKWBgLlxuXG5JbnN0YW5jZSBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgYGBhLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogYGB0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpYGAuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgYGBBLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBjYWxsOlxuICAgYGBBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpYGAuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmIGBgYWBgIGlzIGFuIGluc3RhbmNlIG9mIGBgc3VwZXJgYCwgdGhlbiB0aGUgYmluZGluZyBgYHN1cGVyKEIsXG4gICBvYmopLm0oKWBgIHNlYXJjaGVzIGBgb2JqLl9fY2xhc3NfXy5fX21yb19fYGAgZm9yIHRoZSBiYXNlIGNsYXNzXG4gICBgYEFgYCBpbW1lZGlhdGVseSBwcmVjZWRpbmcgYGBCYGAgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvclxuICAgd2l0aCB0aGUgY2FsbDogYGBBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXylgYC5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCBhbmQgYGBfX2RlbGV0ZV9fKClgYC5cbklmIGl0IGRvZXMgbm90IGRlZmluZSBgYF9fZ2V0X18oKWBgLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGxcbnJldHVybiB0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZVxub2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzIGBgX19zZXRfXygpYGBcbmFuZC9vciBgYF9fZGVsZXRlX18oKWBgLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lc1xubmVpdGhlciwgaXQgaXMgYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnNcbmRlZmluZSBib3RoIGBgX19nZXRfXygpYGAgYW5kIGBgX19zZXRfXygpYGAsIHdoaWxlIG5vbi1kYXRhXG5kZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlIGBgX19nZXRfXygpYGAgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoXG5gYF9fc2V0X18oKWBgIGFuZCBgYF9fZ2V0X18oKWBgIGRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uXG5pbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW4gY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZVxub3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgYGBzdGF0aWNtZXRob2QoKWBgIGFuZCBgYGNsYXNzbWV0aG9kKClgYClcbmFyZSBpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlIGBgcHJvcGVydHkoKWBgIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG49PT09PT09PT1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgSWYgZGVmaW5lZCBpbiBhXG4gICBjbGFzcywgKl9fc2xvdHNfXyogcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kXG4gICBwcmV2ZW50cyB0aGUgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yXG4gICBlYWNoIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgYGBBdHRyaWJ1dGVFcnJvcmBgLiBJZlxuICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuICBgYFwnX19kaWN0X19cJ2BgIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3NlcyBkZWZpbmluZ1xuICAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzIGluc3RhbmNlcy4gSWYgd2Vha1xuICByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkIGBgXCdfX3dlYWtyZWZfX1wnYGAgdG8gdGhlXG4gIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGUgaW5zdGFuY2VcbiAgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZSAoZXhjZXB0IGJ5XG4gIHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuIFRoaXNcbiAgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyBgYGludGBgLCBgYHN0cmBgIGFuZFxuICBgYHR1cGxlYGAuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5ncyBtYXlcbiAgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG4nLAogICdhdHRyaWJ1dGUtcmVmZXJlbmNlcyc6ICdcbkF0dHJpYnV0ZSByZWZlcmVuY2VzXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BbiBhdHRyaWJ1dGUgcmVmZXJlbmNlIGlzIGEgcHJpbWFyeSBmb2xsb3dlZCBieSBhIHBlcmlvZCBhbmQgYSBuYW1lOlxuXG4gICBhdHRyaWJ1dGVyZWYgOjo9IHByaW1hcnkgIi4iIGlkZW50aWZpZXJcblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3Qgb2YgYSB0eXBlIHRoYXQgc3VwcG9ydHNcbmF0dHJpYnV0ZSByZWZlcmVuY2VzLCB3aGljaCBtb3N0IG9iamVjdHMgZG8uICBUaGlzIG9iamVjdCBpcyB0aGVuXG5hc2tlZCB0byBwcm9kdWNlIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpcyB0aGUgaWRlbnRpZmllciAod2hpY2ggY2FuXG5iZSBjdXN0b21pemVkIGJ5IG92ZXJyaWRpbmcgdGhlIGBgX19nZXRhdHRyX18oKWBgIG1ldGhvZCkuICBJZiB0aGlzXG5hdHRyaWJ1dGUgaXMgbm90IGF2YWlsYWJsZSwgdGhlIGV4Y2VwdGlvbiBgYEF0dHJpYnV0ZUVycm9yYGAgaXNcbnJhaXNlZC4gIE90aGVyd2lzZSwgdGhlIHR5cGUgYW5kIHZhbHVlIG9mIHRoZSBvYmplY3QgcHJvZHVjZWQgaXNcbmRldGVybWluZWQgYnkgdGhlIG9iamVjdC4gIE11bHRpcGxlIGV2YWx1YXRpb25zIG9mIHRoZSBzYW1lIGF0dHJpYnV0ZVxucmVmZXJlbmNlIG1heSB5aWVsZCBkaWZmZXJlbnQgb2JqZWN0cy5cbicsCiAgJ2F1Z2Fzc2lnbic6ICdcbkF1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsIG9mIGFcbmJpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuXG4gICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4gICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3IgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSBgYHggKz0gMWBgIGNhbiBiZSByZXdyaXR0ZW4gYXNcbmBgeCA9IHggKyAxYGAgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCBlZmZlY3QuIEluXG50aGUgYXVnbWVudGVkIHZlcnNpb24sIGBgeGBgIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW5cbnBvc3NpYmxlLCB0aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0XG5yYXRoZXIgdGhhbiBjcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsXG50aGUgb2xkIG9iamVjdCBpcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5XaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyBpbiBhXG5zaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG5zdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gU2ltaWxhcmx5LFxud2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgYmluYXJ5XG5vcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBub3JtYWxcbmJpbmFyeSBvcGVyYXRpb25zLlxuXG5Gb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lICpjYXZlYXQgYWJvdXRcbmNsYXNzIGFuZCBpbnN0YW5jZSBhdHRyaWJ1dGVzKiBhcHBsaWVzIGFzIGZvciByZWd1bGFyIGFzc2lnbm1lbnRzLlxuJywKLSAnYmluYXJ5JzogJ1xuQmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyBoYXZlIHRoZSBjb252ZW50aW9uYWwgcHJpb3JpdHlcbmxldmVscy4gIE5vdGUgdGhhdCBzb21lIG9mIHRoZXNlIG9wZXJhdGlvbnMgYWxzbyBhcHBseSB0byBjZXJ0YWluIG5vbi1cbm51bWVyaWMgdHlwZXMuICBBcGFydCBmcm9tIHRoZSBwb3dlciBvcGVyYXRvciwgdGhlcmUgYXJlIG9ubHkgdHdvXG5sZXZlbHMsIG9uZSBmb3IgbXVsdGlwbGljYXRpdmUgb3BlcmF0b3JzIGFuZCBvbmUgZm9yIGFkZGl0aXZlXG5vcGVyYXRvcnM6XG5cbiAgIG1fZXhwciA6Oj0gdV9leHByIHwgbV9leHByICIqIiB1X2V4cHIgfCBtX2V4cHIgIi8vIiB1X2V4cHIgfCBtX2V4cHIgIi8iIHVfZXhwclxuICAgICAgICAgICAgICB8IG1fZXhwciAiJSIgdV9leHByXG4gICBhX2V4cHIgOjo9IG1fZXhwciB8IGFfZXhwciAiKyIgbV9leHByIHwgYV9leHByICItIiBtX2V4cHJcblxuVGhlIGBgKmBgIChtdWx0aXBsaWNhdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBwcm9kdWN0IG9mIGl0c1xuYXJndW1lbnRzLiAgVGhlIGFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMsIG9yIG9uZSBhcmd1bWVudFxubXVzdCBiZSBhbiBpbnRlZ2VyIGFuZCB0aGUgb3RoZXIgbXVzdCBiZSBhIHNlcXVlbmNlLiBJbiB0aGUgZm9ybWVyXG5jYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUgYW5kIHRoZW4gbXVsdGlwbGllZFxudG9nZXRoZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHNlcXVlbmNlIHJlcGV0aXRpb24gaXMgcGVyZm9ybWVkOyBhXG5uZWdhdGl2ZSByZXBldGl0aW9uIGZhY3RvciB5aWVsZHMgYW4gZW1wdHkgc2VxdWVuY2UuXG5cblRoZSBgYC9gYCAoZGl2aXNpb24pIGFuZCBgYC8vYGAgKGZsb29yIGRpdmlzaW9uKSBvcGVyYXRvcnMgeWllbGQgdGhlXG5xdW90aWVudCBvZiB0aGVpciBhcmd1bWVudHMuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0XG5jb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gSW50ZWdlciBkaXZpc2lvbiB5aWVsZHMgYSBmbG9hdCwgd2hpbGVcbmZsb29yIGRpdmlzaW9uIG9mIGludGVnZXJzIHJlc3VsdHMgaW4gYW4gaW50ZWdlcjsgdGhlIHJlc3VsdCBpcyB0aGF0XG5vZiBtYXRoZW1hdGljYWwgZGl2aXNpb24gd2l0aCB0aGUgXCdmbG9vclwnIGZ1bmN0aW9uIGFwcGxpZWQgdG8gdGhlXG5yZXN1bHQuICBEaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyB0aGUgYGBaZXJvRGl2aXNpb25FcnJvcmBgIGV4Y2VwdGlvbi5cblxuVGhlIGBgJWBgIChtb2R1bG8pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcmVtYWluZGVyIGZyb20gdGhlIGRpdmlzaW9uIG9mXG50aGUgZmlyc3QgYXJndW1lbnQgYnkgdGhlIHNlY29uZC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbmNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgQSB6ZXJvIHJpZ2h0IGFyZ3VtZW50IHJhaXNlcyB0aGVcbmBgWmVyb0RpdmlzaW9uRXJyb3JgYCBleGNlcHRpb24uICBUaGUgYXJndW1lbnRzIG1heSBiZSBmbG9hdGluZyBwb2ludFxubnVtYmVycywgZS5nLiwgYGAzLjE0JTAuN2BgIGVxdWFscyBgYDAuMzRgYCAoc2luY2UgYGAzLjE0YGAgZXF1YWxzXG5gYDQqMC43ICsgMC4zNGBgLikgIFRoZSBtb2R1bG8gb3BlcmF0b3IgYWx3YXlzIHlpZWxkcyBhIHJlc3VsdCB3aXRoXG50aGUgc2FtZSBzaWduIGFzIGl0cyBzZWNvbmQgb3BlcmFuZCAob3IgemVybyk7IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZlxudGhlIHJlc3VsdCBpcyBzdHJpY3RseSBzbWFsbGVyIHRoYW4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmRcbm9wZXJhbmQgWzFdLlxuXG5UaGUgZmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRvcnMgYXJlIGNvbm5lY3RlZCBieSB0aGUgZm9sbG93aW5nXG5pZGVudGl0eTogYGB4ID09ICh4Ly95KSp5ICsgKHgleSlgYC4gIEZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gYXJlXG5hbHNvIGNvbm5lY3RlZCB3aXRoIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYGRpdm1vZCgpYGA6IGBgZGl2bW9kKHgsIHkpXG49PSAoeC8veSwgeCV5KWBgLiBbMl0uXG5cbkluIGFkZGl0aW9uIHRvIHBlcmZvcm1pbmcgdGhlIG1vZHVsbyBvcGVyYXRpb24gb24gbnVtYmVycywgdGhlIGBgJWBgXG5vcGVyYXRvciBpcyBhbHNvIG92ZXJsb2FkZWQgYnkgc3RyaW5nIG9iamVjdHMgdG8gcGVyZm9ybSBvbGQtc3R5bGVcbnN0cmluZyBmb3JtYXR0aW5nIChhbHNvIGtub3duIGFzIGludGVycG9sYXRpb24pLiAgVGhlIHN5bnRheCBmb3JcbnN0cmluZyBmb3JtYXR0aW5nIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlLFxuc2VjdGlvbiAqT2xkIFN0cmluZyBGb3JtYXR0aW5nIE9wZXJhdGlvbnMqLlxuXG5UaGUgZmxvb3IgZGl2aXNpb24gb3BlcmF0b3IsIHRoZSBtb2R1bG8gb3BlcmF0b3IsIGFuZCB0aGUgYGBkaXZtb2QoKWBgXG5mdW5jdGlvbiBhcmUgbm90IGRlZmluZWQgZm9yIGNvbXBsZXggbnVtYmVycy4gIEluc3RlYWQsIGNvbnZlcnQgdG8gYVxuZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHVzaW5nIHRoZSBgYGFicygpYGAgZnVuY3Rpb24gaWYgYXBwcm9wcmlhdGUuXG5cblRoZSBgYCtgYCAoYWRkaXRpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgc3VtIG9mIGl0cyBhcmd1bWVudHMuICBUaGVcbmFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMgb3IgYm90aCBzZXF1ZW5jZXMgb2YgdGhlIHNhbWVcbnR5cGUuICBJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZSBudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZVxuYW5kIHRoZW4gYWRkZWQgdG9nZXRoZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzZXF1ZW5jZXMgYXJlXG5jb25jYXRlbmF0ZWQuXG5cblRoZSBgYC1gYCAoc3VidHJhY3Rpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgZGlmZmVyZW5jZSBvZiBpdHNcbmFyZ3VtZW50cy4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uXG50eXBlLlxuJywKKyAnYmluYXJ5JzogJ1xuQmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyBoYXZlIHRoZSBjb252ZW50aW9uYWwgcHJpb3JpdHlcbmxldmVscy4gIE5vdGUgdGhhdCBzb21lIG9mIHRoZXNlIG9wZXJhdGlvbnMgYWxzbyBhcHBseSB0byBjZXJ0YWluIG5vbi1cbm51bWVyaWMgdHlwZXMuICBBcGFydCBmcm9tIHRoZSBwb3dlciBvcGVyYXRvciwgdGhlcmUgYXJlIG9ubHkgdHdvXG5sZXZlbHMsIG9uZSBmb3IgbXVsdGlwbGljYXRpdmUgb3BlcmF0b3JzIGFuZCBvbmUgZm9yIGFkZGl0aXZlXG5vcGVyYXRvcnM6XG5cbiAgIG1fZXhwciA6Oj0gdV9leHByIHwgbV9leHByICIqIiB1X2V4cHIgfCBtX2V4cHIgIi8vIiB1X2V4cHIgfCBtX2V4cHIgIi8iIHVfZXhwclxuICAgICAgICAgICAgICB8IG1fZXhwciAiJSIgdV9leHByXG4gICBhX2V4cHIgOjo9IG1fZXhwciB8IGFfZXhwciAiKyIgbV9leHByIHwgYV9leHByICItIiBtX2V4cHJcblxuVGhlIGBgKmBgIChtdWx0aXBsaWNhdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBwcm9kdWN0IG9mIGl0c1xuYXJndW1lbnRzLiAgVGhlIGFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMsIG9yIG9uZSBhcmd1bWVudFxubXVzdCBiZSBhbiBpbnRlZ2VyIGFuZCB0aGUgb3RoZXIgbXVzdCBiZSBhIHNlcXVlbmNlLiBJbiB0aGUgZm9ybWVyXG5jYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUgYW5kIHRoZW4gbXVsdGlwbGllZFxudG9nZXRoZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHNlcXVlbmNlIHJlcGV0aXRpb24gaXMgcGVyZm9ybWVkOyBhXG5uZWdhdGl2ZSByZXBldGl0aW9uIGZhY3RvciB5aWVsZHMgYW4gZW1wdHkgc2VxdWVuY2UuXG5cblRoZSBgYC9gYCAoZGl2aXNpb24pIGFuZCBgYC8vYGAgKGZsb29yIGRpdmlzaW9uKSBvcGVyYXRvcnMgeWllbGQgdGhlXG5xdW90aWVudCBvZiB0aGVpciBhcmd1bWVudHMuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0XG5jb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gSW50ZWdlciBkaXZpc2lvbiB5aWVsZHMgYSBmbG9hdCwgd2hpbGVcbmZsb29yIGRpdmlzaW9uIG9mIGludGVnZXJzIHJlc3VsdHMgaW4gYW4gaW50ZWdlcjsgdGhlIHJlc3VsdCBpcyB0aGF0XG5vZiBtYXRoZW1hdGljYWwgZGl2aXNpb24gd2l0aCB0aGUgXCdmbG9vclwnIGZ1bmN0aW9uIGFwcGxpZWQgdG8gdGhlXG5yZXN1bHQuICBEaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyB0aGUgYGBaZXJvRGl2aXNpb25FcnJvcmBgIGV4Y2VwdGlvbi5cblxuVGhlIGBgJWBgIChtb2R1bG8pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcmVtYWluZGVyIGZyb20gdGhlIGRpdmlzaW9uIG9mXG50aGUgZmlyc3QgYXJndW1lbnQgYnkgdGhlIHNlY29uZC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbmNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgQSB6ZXJvIHJpZ2h0IGFyZ3VtZW50IHJhaXNlcyB0aGVcbmBgWmVyb0RpdmlzaW9uRXJyb3JgYCBleGNlcHRpb24uICBUaGUgYXJndW1lbnRzIG1heSBiZSBmbG9hdGluZyBwb2ludFxubnVtYmVycywgZS5nLiwgYGAzLjE0JTAuN2BgIGVxdWFscyBgYDAuMzRgYCAoc2luY2UgYGAzLjE0YGAgZXF1YWxzXG5gYDQqMC43ICsgMC4zNGBgLikgIFRoZSBtb2R1bG8gb3BlcmF0b3IgYWx3YXlzIHlpZWxkcyBhIHJlc3VsdCB3aXRoXG50aGUgc2FtZSBzaWduIGFzIGl0cyBzZWNvbmQgb3BlcmFuZCAob3IgemVybyk7IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZlxudGhlIHJlc3VsdCBpcyBzdHJpY3RseSBzbWFsbGVyIHRoYW4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmRcbm9wZXJhbmQgWzFdLlxuXG5UaGUgZmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRvcnMgYXJlIGNvbm5lY3RlZCBieSB0aGUgZm9sbG93aW5nXG5pZGVudGl0eTogYGB4ID09ICh4Ly95KSp5ICsgKHgleSlgYC4gIEZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gYXJlXG5hbHNvIGNvbm5lY3RlZCB3aXRoIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYGRpdm1vZCgpYGA6IGBgZGl2bW9kKHgsIHkpXG49PSAoeC8veSwgeCV5KWBgLiBbMl0uXG5cbkluIGFkZGl0aW9uIHRvIHBlcmZvcm1pbmcgdGhlIG1vZHVsbyBvcGVyYXRpb24gb24gbnVtYmVycywgdGhlIGBgJWBgXG5vcGVyYXRvciBpcyBhbHNvIG92ZXJsb2FkZWQgYnkgc3RyaW5nIG9iamVjdHMgdG8gcGVyZm9ybSBvbGQtc3R5bGVcbnN0cmluZyBmb3JtYXR0aW5nIChhbHNvIGtub3duIGFzIGludGVycG9sYXRpb24pLiAgVGhlIHN5bnRheCBmb3JcbnN0cmluZyBmb3JtYXR0aW5nIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlLFxuc2VjdGlvbiAqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKi5cblxuVGhlIGZsb29yIGRpdmlzaW9uIG9wZXJhdG9yLCB0aGUgbW9kdWxvIG9wZXJhdG9yLCBhbmQgdGhlIGBgZGl2bW9kKClgYFxuZnVuY3Rpb24gYXJlIG5vdCBkZWZpbmVkIGZvciBjb21wbGV4IG51bWJlcnMuICBJbnN0ZWFkLCBjb252ZXJ0IHRvIGFcbmZsb2F0aW5nIHBvaW50IG51bWJlciB1c2luZyB0aGUgYGBhYnMoKWBgIGZ1bmN0aW9uIGlmIGFwcHJvcHJpYXRlLlxuXG5UaGUgYGArYGAgKGFkZGl0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHN1bSBvZiBpdHMgYXJndW1lbnRzLiAgVGhlXG5hcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzIG9yIGJvdGggc2VxdWVuY2VzIG9mIHRoZSBzYW1lXG50eXBlLiAgSW4gdGhlIGZvcm1lciBjYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGVcbmFuZCB0aGVuIGFkZGVkIHRvZ2V0aGVyLiAgSW4gdGhlIGxhdHRlciBjYXNlLCB0aGUgc2VxdWVuY2VzIGFyZVxuY29uY2F0ZW5hdGVkLlxuXG5UaGUgYGAtYGAgKHN1YnRyYWN0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIGRpZmZlcmVuY2Ugb2YgaXRzXG5hcmd1bWVudHMuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0IGNvbnZlcnRlZCB0byBhIGNvbW1vblxudHlwZS5cbicsCiAgJ2JpdHdpc2UnOiAnXG5CaW5hcnkgYml0d2lzZSBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkVhY2ggb2YgdGhlIHRocmVlIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXMgYSBkaWZmZXJlbnQgcHJpb3JpdHkgbGV2ZWw6XG5cbiAgIGFuZF9leHByIDo6PSBzaGlmdF9leHByIHwgYW5kX2V4cHIgIiYiIHNoaWZ0X2V4cHJcbiAgIHhvcl9leHByIDo6PSBhbmRfZXhwciB8IHhvcl9leHByICJeIiBhbmRfZXhwclxuICAgb3JfZXhwciAgOjo9IHhvcl9leHByIHwgb3JfZXhwciAifCIgeG9yX2V4cHJcblxuVGhlIGBgJmBgIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBBTkQgb2YgaXRzIGFyZ3VtZW50cywgd2hpY2ggbXVzdFxuYmUgaW50ZWdlcnMuXG5cblRoZSBgYF5gYCBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgWE9SIChleGNsdXNpdmUgT1IpIG9mIGl0c1xuYXJndW1lbnRzLCB3aGljaCBtdXN0IGJlIGludGVnZXJzLlxuXG5UaGUgYGB8YGAgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIChpbmNsdXNpdmUpIE9SIG9mIGl0cyBhcmd1bWVudHMsXG53aGljaCBtdXN0IGJlIGludGVnZXJzLlxuJywKICAnYmx0aW4tY29kZS1vYmplY3RzJzogJ1xuQ29kZSBPYmplY3RzXG4qKioqKioqKioqKipcblxuQ29kZSBvYmplY3RzIGFyZSB1c2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiB0byByZXByZXNlbnQgInBzZXVkby1cbmNvbXBpbGVkIiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlIHN1Y2ggYXMgYSBmdW5jdGlvbiBib2R5LiBUaGV5IGRpZmZlclxuZnJvbSBmdW5jdGlvbiBvYmplY3RzIGJlY2F1c2UgdGhleSBkb25cJ3QgY29udGFpbiBhIHJlZmVyZW5jZSB0byB0aGVpclxuZ2xvYmFsIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4gIENvZGUgb2JqZWN0cyBhcmUgcmV0dXJuZWQgYnkgdGhlIGJ1aWx0LVxuaW4gYGBjb21waWxlKClgYCBmdW5jdGlvbiBhbmQgY2FuIGJlIGV4dHJhY3RlZCBmcm9tIGZ1bmN0aW9uIG9iamVjdHNcbnRocm91Z2ggdGhlaXIgYGBfX2NvZGVfX2BgIGF0dHJpYnV0ZS4gU2VlIGFsc28gdGhlIGBgY29kZWBgIG1vZHVsZS5cblxuQSBjb2RlIG9iamVjdCBjYW4gYmUgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkIGJ5IHBhc3NpbmcgaXQgKGluc3RlYWQgb2YgYVxuc291cmNlIHN0cmluZykgdG8gdGhlIGBgZXhlYygpYGAgb3IgYGBldmFsKClgYCAgYnVpbHQtaW4gZnVuY3Rpb25zLlxuXG5TZWUgKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAotICdibHRpbi1lbGxpcHNpcy1vYmplY3QnOiAnXG5UaGUgRWxsaXBzaXMgT2JqZWN0XG4qKioqKioqKioqKioqKioqKioqXG5cblRoaXMgb2JqZWN0IGlzIGNvbW1vbmx5IHVzZWQgYnkgc2xpY2luZyAoc2VlICpTbGljaW5ncyopLiAgSXQgc3VwcG9ydHNcbm5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIGVsbGlwc2lzIG9iamVjdCwgbmFtZWRcbmBgRWxsaXBzaXNgYCAoYSBidWlsdC1pbiBuYW1lKS5cblxuSXQgaXMgd3JpdHRlbiBhcyBgYEVsbGlwc2lzYGAgb3IgYGAuLi5gYC5cbicsCi0gJ2JsdGluLW51bGwtb2JqZWN0JzogIlxuVGhlIE51bGwgT2JqZWN0XG4qKioqKioqKioqKioqKipcblxuVGhpcyBvYmplY3QgaXMgcmV0dXJuZWQgYnkgZnVuY3Rpb25zIHRoYXQgZG9uJ3QgZXhwbGljaXRseSByZXR1cm4gYVxudmFsdWUuICBJdCBzdXBwb3J0cyBubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5IG9uZSBudWxsXG5vYmplY3QsIG5hbWVkIGBgTm9uZWBgIChhIGJ1aWx0LWluIG5hbWUpLlxuXG5JdCBpcyB3cml0dGVuIGFzIGBgTm9uZWBgLlxuIiwKKyAnYmx0aW4tZWxsaXBzaXMtb2JqZWN0JzogJ1xuVGhlIEVsbGlwc2lzIE9iamVjdFxuKioqKioqKioqKioqKioqKioqKlxuXG5UaGlzIG9iamVjdCBpcyBjb21tb25seSB1c2VkIGJ5IHNsaWNpbmcgKHNlZSAqU2xpY2luZ3MqKS4gIEl0IHN1cHBvcnRzXG5ubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5IG9uZSBlbGxpcHNpcyBvYmplY3QsIG5hbWVkXG5gYEVsbGlwc2lzYGAgKGEgYnVpbHQtaW4gbmFtZSkuICBgYHR5cGUoRWxsaXBzaXMpKClgYCBwcm9kdWNlcyB0aGVcbmBgRWxsaXBzaXNgYCBzaW5nbGV0b24uXG5cbkl0IGlzIHdyaXR0ZW4gYXMgYGBFbGxpcHNpc2BgIG9yIGBgLi4uYGAuXG4nLAorICdibHRpbi1udWxsLW9iamVjdCc6ICJcblRoZSBOdWxsIE9iamVjdFxuKioqKioqKioqKioqKioqXG5cblRoaXMgb2JqZWN0IGlzIHJldHVybmVkIGJ5IGZ1bmN0aW9ucyB0aGF0IGRvbid0IGV4cGxpY2l0bHkgcmV0dXJuIGFcbnZhbHVlLiAgSXQgc3VwcG9ydHMgbm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgbnVsbFxub2JqZWN0LCBuYW1lZCBgYE5vbmVgYCAoYSBidWlsdC1pbiBuYW1lKS4gIGBgdHlwZShOb25lKSgpYGAgcHJvZHVjZXNcbnRoZSBzYW1lIHNpbmdsZXRvbi5cblxuSXQgaXMgd3JpdHRlbiBhcyBgYE5vbmVgYC5cbiIsCiAgJ2JsdGluLXR5cGUtb2JqZWN0cyc6ICJcblR5cGUgT2JqZWN0c1xuKioqKioqKioqKioqXG5cblR5cGUgb2JqZWN0cyByZXByZXNlbnQgdGhlIHZhcmlvdXMgb2JqZWN0IHR5cGVzLiAgQW4gb2JqZWN0J3MgdHlwZSBpc1xuYWNjZXNzZWQgYnkgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgdHlwZSgpYGAuICBUaGVyZSBhcmUgbm8gc3BlY2lhbFxub3BlcmF0aW9ucyBvbiB0eXBlcy4gIFRoZSBzdGFuZGFyZCBtb2R1bGUgYGB0eXBlc2BgIGRlZmluZXMgbmFtZXMgZm9yXG5hbGwgc3RhbmRhcmQgYnVpbHQtaW4gdHlwZXMuXG5cblR5cGVzIGFyZSB3cml0dGVuIGxpa2UgdGhpczogYGA8Y2xhc3MgJ2ludCc+YGAuXG4iLAogICdib29sZWFucyc6ICdcbkJvb2xlYW4gb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqXG5cbiAgIG9yX3Rlc3QgIDo6PSBhbmRfdGVzdCB8IG9yX3Rlc3QgIm9yIiBhbmRfdGVzdFxuICAgYW5kX3Rlc3QgOjo9IG5vdF90ZXN0IHwgYW5kX3Rlc3QgImFuZCIgbm90X3Rlc3RcbiAgIG5vdF90ZXN0IDo6PSBjb21wYXJpc29uIHwgIm5vdCIgbm90X3Rlc3RcblxuSW4gdGhlIGNvbnRleHQgb2YgQm9vbGVhbiBvcGVyYXRpb25zLCBhbmQgYWxzbyB3aGVuIGV4cHJlc3Npb25zIGFyZVxudXNlZCBieSBjb250cm9sIGZsb3cgc3RhdGVtZW50cywgdGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIGludGVycHJldGVkXG5hcyBmYWxzZTogYGBGYWxzZWBgLCBgYE5vbmVgYCwgbnVtZXJpYyB6ZXJvIG9mIGFsbCB0eXBlcywgYW5kIGVtcHR5XG5zdHJpbmdzIGFuZCBjb250YWluZXJzIChpbmNsdWRpbmcgc3RyaW5ncywgdHVwbGVzLCBsaXN0cyxcbmRpY3Rpb25hcmllcywgc2V0cyBhbmQgZnJvemVuc2V0cykuICBBbGwgb3RoZXIgdmFsdWVzIGFyZSBpbnRlcnByZXRlZFxuYXMgdHJ1ZS4gIFVzZXItZGVmaW5lZCBvYmplY3RzIGNhbiBjdXN0b21pemUgdGhlaXIgdHJ1dGggdmFsdWUgYnlcbnByb3ZpZGluZyBhIGBgX19ib29sX18oKWBgIG1ldGhvZC5cblxuVGhlIG9wZXJhdG9yIGBgbm90YGAgeWllbGRzIGBgVHJ1ZWBgIGlmIGl0cyBhcmd1bWVudCBpcyBmYWxzZSxcbmBgRmFsc2VgYCBvdGhlcndpc2UuXG5cblRoZSBleHByZXNzaW9uIGBgeCBhbmQgeWBgIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyBmYWxzZSwgaXRzXG52YWx1ZSBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlXG5pcyByZXR1cm5lZC5cblxuVGhlIGV4cHJlc3Npb24gYGB4IG9yIHlgYCBmaXJzdCBldmFsdWF0ZXMgKngqOyBpZiAqeCogaXMgdHJ1ZSwgaXRzXG52YWx1ZSBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlXG5pcyByZXR1cm5lZC5cblxuKE5vdGUgdGhhdCBuZWl0aGVyIGBgYW5kYGAgbm9yIGBgb3JgYCByZXN0cmljdCB0aGUgdmFsdWUgYW5kIHR5cGUgdGhleVxucmV0dXJuIHRvIGBgRmFsc2VgYCBhbmQgYGBUcnVlYGAsIGJ1dCByYXRoZXIgcmV0dXJuIHRoZSBsYXN0IGV2YWx1YXRlZFxuYXJndW1lbnQuICBUaGlzIGlzIHNvbWV0aW1lcyB1c2VmdWwsIGUuZy4sIGlmIGBgc2BgIGlzIGEgc3RyaW5nIHRoYXRcbnNob3VsZCBiZSByZXBsYWNlZCBieSBhIGRlZmF1bHQgdmFsdWUgaWYgaXQgaXMgZW1wdHksIHRoZSBleHByZXNzaW9uXG5gYHMgb3IgXCdmb29cJ2BgIHlpZWxkcyB0aGUgZGVzaXJlZCB2YWx1ZS4gIEJlY2F1c2UgYGBub3RgYCBoYXMgdG9cbmludmVudCBhIHZhbHVlIGFueXdheSwgaXQgZG9lcyBub3QgYm90aGVyIHRvIHJldHVybiBhIHZhbHVlIG9mIHRoZVxuc2FtZSB0eXBlIGFzIGl0cyBhcmd1bWVudCwgc28gZS5nLiwgYGBub3QgXCdmb29cJ2BgIHlpZWxkcyBgYEZhbHNlYGAsXG5ub3QgYGBcJ1wnYGAuKVxuJywKICAnYnJlYWsnOiAnXG5UaGUgYGBicmVha2BgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgYnJlYWtfc3RtdCA6Oj0gImJyZWFrIlxuXG5gYGJyZWFrYGAgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSBgYGZvcmBgIG9yXG5gYHdoaWxlYGAgbG9vcCwgYnV0IG5vdCBuZXN0ZWQgaW4gYSBmdW5jdGlvbiBvciBjbGFzcyBkZWZpbml0aW9uXG53aXRoaW4gdGhhdCBsb29wLlxuXG5JdCB0ZXJtaW5hdGVzIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBsb29wLCBza2lwcGluZyB0aGUgb3B0aW9uYWxcbmBgZWxzZWBgIGNsYXVzZSBpZiB0aGUgbG9vcCBoYXMgb25lLlxuXG5JZiBhIGBgZm9yYGAgbG9vcCBpcyB0ZXJtaW5hdGVkIGJ5IGBgYnJlYWtgYCwgdGhlIGxvb3AgY29udHJvbCB0YXJnZXRcbmtlZXBzIGl0cyBjdXJyZW50IHZhbHVlLlxuXG5XaGVuIGBgYnJlYWtgYCBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSBgYHRyeWBgIHN0YXRlbWVudCB3aXRoIGFcbmBgZmluYWxseWBgIGNsYXVzZSwgdGhhdCBgYGZpbmFsbHlgYCBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseVxubGVhdmluZyB0aGUgbG9vcC5cbicsCkBAIC0xOCwxMyArMTksMTMgQEAKICAnY2FsbHMnOiAnXG5DYWxsc1xuKioqKipcblxuQSBjYWxsIGNhbGxzIGEgY2FsbGFibGUgb2JqZWN0IChlLmcuLCBhIGZ1bmN0aW9uKSB3aXRoIGEgcG9zc2libHlcbmVtcHR5IHNlcmllcyBvZiBhcmd1bWVudHM6XG5cbiAgIGNhbGwgICAgICAgICAgICAgICAgIDo6PSBwcmltYXJ5ICIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXSB8IGNvbXByZWhlbnNpb25dICIpIlxuICAgYXJndW1lbnRfbGlzdCAgICAgICAgOjo9IHBvc2l0aW9uYWxfYXJndW1lbnRzIFsiLCIga2V5d29yZF9hcmd1bWVudHNdXG4gICAgICAgICAgICAgICAgICAgICAgIFsiLCIgIioiIGV4cHJlc3Npb25dIFsiLCIga2V5d29yZF9hcmd1bWVudHNdXG4gICAgICAgICAgICAgICAgICAgICAgIFsiLCIgIioqIiBleHByZXNzaW9uXVxuICAgICAgICAgICAgICAgICAgICAgfCBrZXl3b3JkX2FyZ3VtZW50cyBbIiwiICIqIiBleHByZXNzaW9uXVxuICAgICAgICAgICAgICAgICAgICAgICBbIiwiIGtleXdvcmRfYXJndW1lbnRzXSBbIiwiICIqKiIgZXhwcmVzc2lvbl1cbiAgICAgICAgICAgICAgICAgICAgIHwgIioiIGV4cHJlc3Npb24gWyIsIiBrZXl3b3JkX2FyZ3VtZW50c10gWyIsIiAiKioiIGV4cHJlc3Npb25dXG4gICAgICAgICAgICAgICAgICAgICB8ICIqKiIgZXhwcmVzc2lvblxuICAgcG9zaXRpb25hbF9hcmd1bWVudHMgOjo9IGV4cHJlc3Npb24gKCIsIiBleHByZXNzaW9uKSpcbiAgIGtleXdvcmRfYXJndW1lbnRzICAgIDo6PSBrZXl3b3JkX2l0ZW0gKCIsIiBrZXl3b3JkX2l0ZW0pKlxuICAga2V5d29yZF9pdGVtICAgICAgICAgOjo9IGlkZW50aWZpZXIgIj0iIGV4cHJlc3Npb25cblxuQSB0cmFpbGluZyBjb21tYSBtYXkgYmUgcHJlc2VudCBhZnRlciB0aGUgcG9zaXRpb25hbCBhbmQga2V5d29yZFxuYXJndW1lbnRzIGJ1dCBkb2VzIG5vdCBhZmZlY3QgdGhlIHNlbWFudGljcy5cblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhIGNhbGxhYmxlIG9iamVjdCAodXNlci1kZWZpbmVkXG5mdW5jdGlvbnMsIGJ1aWx0LWluIGZ1bmN0aW9ucywgbWV0aG9kcyBvZiBidWlsdC1pbiBvYmplY3RzLCBjbGFzc1xub2JqZWN0cywgbWV0aG9kcyBvZiBjbGFzcyBpbnN0YW5jZXMsIGFuZCBhbGwgb2JqZWN0cyBoYXZpbmcgYVxuYGBfX2NhbGxfXygpYGAgbWV0aG9kIGFyZSBjYWxsYWJsZSkuICBBbGwgYXJndW1lbnQgZXhwcmVzc2lvbnMgYXJlXG5ldmFsdWF0ZWQgYmVmb3JlIHRoZSBjYWxsIGlzIGF0dGVtcHRlZC4gIFBsZWFzZSByZWZlciB0byBzZWN0aW9uXG4qRnVuY3Rpb24gZGVmaW5pdGlvbnMqIGZvciB0aGUgc3ludGF4IG9mIGZvcm1hbCBwYXJhbWV0ZXIgbGlzdHMuXG5cbklmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwcmVzZW50LCB0aGV5IGFyZSBmaXJzdCBjb252ZXJ0ZWQgdG9cbnBvc2l0aW9uYWwgYXJndW1lbnRzLCBhcyBmb2xsb3dzLiAgRmlyc3QsIGEgbGlzdCBvZiB1bmZpbGxlZCBzbG90cyBpc1xuY3JlYXRlZCBmb3IgdGhlIGZvcm1hbCBwYXJhbWV0ZXJzLiAgSWYgdGhlcmUgYXJlIE4gcG9zaXRpb25hbFxuYXJndW1lbnRzLCB0aGV5IGFyZSBwbGFjZWQgaW4gdGhlIGZpcnN0IE4gc2xvdHMuICBOZXh0LCBmb3IgZWFjaFxua2V5d29yZCBhcmd1bWVudCwgdGhlIGlkZW50aWZpZXIgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlXG5jb3JyZXNwb25kaW5nIHNsb3QgKGlmIHRoZSBpZGVudGlmaWVyIGlzIHRoZSBzYW1lIGFzIHRoZSBmaXJzdCBmb3JtYWxcbnBhcmFtZXRlciBuYW1lLCB0aGUgZmlyc3Qgc2xvdCBpcyB1c2VkLCBhbmQgc28gb24pLiAgSWYgdGhlIHNsb3QgaXNcbmFscmVhZHkgZmlsbGVkLCBhIGBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZC4gT3RoZXJ3aXNlLCB0aGVcbnZhbHVlIG9mIHRoZSBhcmd1bWVudCBpcyBwbGFjZWQgaW4gdGhlIHNsb3QsIGZpbGxpbmcgaXQgKGV2ZW4gaWYgdGhlXG5leHByZXNzaW9uIGlzIGBgTm9uZWBgLCBpdCBmaWxscyB0aGUgc2xvdCkuICBXaGVuIGFsbCBhcmd1bWVudHMgaGF2ZVxuYmVlbiBwcm9jZXNzZWQsIHRoZSBzbG90cyB0aGF0IGFyZSBzdGlsbCB1bmZpbGxlZCBhcmUgZmlsbGVkIHdpdGggdGhlXG5jb3JyZXNwb25kaW5nIGRlZmF1bHQgdmFsdWUgZnJvbSB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIChEZWZhdWx0XG52YWx1ZXMgYXJlIGNhbGN1bGF0ZWQsIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQ7IHRodXMsIGFcbm11dGFibGUgb2JqZWN0IHN1Y2ggYXMgYSBsaXN0IG9yIGRpY3Rpb25hcnkgdXNlZCBhcyBkZWZhdWx0IHZhbHVlIHdpbGxcbmJlIHNoYXJlZCBieSBhbGwgY2FsbHMgdGhhdCBkb25cJ3Qgc3BlY2lmeSBhbiBhcmd1bWVudCB2YWx1ZSBmb3IgdGhlXG5jb3JyZXNwb25kaW5nIHNsb3Q7IHRoaXMgc2hvdWxkIHVzdWFsbHkgYmUgYXZvaWRlZC4pICBJZiB0aGVyZSBhcmUgYW55XG51bmZpbGxlZCBzbG90cyBmb3Igd2hpY2ggbm8gZGVmYXVsdCB2YWx1ZSBpcyBzcGVjaWZpZWQsIGFcbmBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZC4gIE90aGVyd2lzZSwgdGhlIGxpc3Qgb2YgZmlsbGVkXG5zbG90cyBpcyB1c2VkIGFzIHRoZSBhcmd1bWVudCBsaXN0IGZvciB0aGUgY2FsbC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBBbiBpbXBsZW1lbnRhdGlvbiBtYXkgcHJvdmlkZVxuYnVpbHQtaW4gZnVuY3Rpb25zIHdob3NlIHBvc2l0aW9uYWwgcGFyYW1ldGVycyBkbyBub3QgaGF2ZSBuYW1lcywgZXZlblxuaWYgdGhleSBhcmUgXCduYW1lZFwnIGZvciB0aGUgcHVycG9zZSBvZiBkb2N1bWVudGF0aW9uLCBhbmQgd2hpY2hcbnRoZXJlZm9yZSBjYW5ub3QgYmUgc3VwcGxpZWQgYnkga2V5d29yZC4gIEluIENQeXRob24sIHRoaXMgaXMgdGhlIGNhc2VcbmZvciBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgaW4gQyB0aGF0IHVzZSBgYFB5QXJnX1BhcnNlVHVwbGUoKWBgIHRvXG5wYXJzZSB0aGVpciBhcmd1bWVudHMuXG5cbklmIHRoZXJlIGFyZSBtb3JlIHBvc2l0aW9uYWwgYXJndW1lbnRzIHRoYW4gdGhlcmUgYXJlIGZvcm1hbCBwYXJhbWV0ZXJcbnNsb3RzLCBhIGBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsIHBhcmFtZXRlclxudXNpbmcgdGhlIHN5bnRheCBgYCppZGVudGlmaWVyYGAgaXMgcHJlc2VudDsgaW4gdGhpcyBjYXNlLCB0aGF0IGZvcm1hbFxucGFyYW1ldGVyIHJlY2VpdmVzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgZXhjZXNzIHBvc2l0aW9uYWwgYXJndW1lbnRzXG4ob3IgYW4gZW1wdHkgdHVwbGUgaWYgdGhlcmUgd2VyZSBubyBleGNlc3MgcG9zaXRpb25hbCBhcmd1bWVudHMpLlxuXG5JZiBhbnkga2V5d29yZCBhcmd1bWVudCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgZm9ybWFsIHBhcmFtZXRlclxubmFtZSwgYSBgYFR5cGVFcnJvcmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCBwYXJhbWV0ZXJcbnVzaW5nIHRoZSBzeW50YXggYGAqKmlkZW50aWZpZXJgYCBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXRcbmZvcm1hbCBwYXJhbWV0ZXIgcmVjZWl2ZXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBrZXl3b3JkXG5hcmd1bWVudHMgKHVzaW5nIHRoZSBrZXl3b3JkcyBhcyBrZXlzIGFuZCB0aGUgYXJndW1lbnQgdmFsdWVzIGFzXG5jb3JyZXNwb25kaW5nIHZhbHVlcyksIG9yIGEgKG5ldykgZW1wdHkgZGljdGlvbmFyeSBpZiB0aGVyZSB3ZXJlIG5vXG5leGNlc3Mga2V5d29yZCBhcmd1bWVudHMuXG5cbklmIHRoZSBzeW50YXggYGAqZXhwcmVzc2lvbmBgIGFwcGVhcnMgaW4gdGhlIGZ1bmN0aW9uIGNhbGwsXG5gYGV4cHJlc3Npb25gYCBtdXN0IGV2YWx1YXRlIHRvIGFuIGl0ZXJhYmxlLiAgRWxlbWVudHMgZnJvbSB0aGlzXG5pdGVyYWJsZSBhcmUgdHJlYXRlZCBhcyBpZiB0aGV5IHdlcmUgYWRkaXRpb25hbCBwb3NpdGlvbmFsIGFyZ3VtZW50cztcbmlmIHRoZXJlIGFyZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyAqeDEqLCAuLi4sICp4TiosIGFuZCBgYGV4cHJlc3Npb25gYFxuZXZhbHVhdGVzIHRvIGEgc2VxdWVuY2UgKnkxKiwgLi4uLCAqeU0qLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYSBjYWxsXG53aXRoIE0rTiBwb3NpdGlvbmFsIGFyZ3VtZW50cyAqeDEqLCAuLi4sICp4TiosICp5MSosIC4uLiwgKnlNKi5cblxuQSBjb25zZXF1ZW5jZSBvZiB0aGlzIGlzIHRoYXQgYWx0aG91Z2ggdGhlIGBgKmV4cHJlc3Npb25gYCBzeW50YXggbWF5XG5hcHBlYXIgKmFmdGVyKiBzb21lIGtleXdvcmQgYXJndW1lbnRzLCBpdCBpcyBwcm9jZXNzZWQgKmJlZm9yZSogdGhlXG5rZXl3b3JkIGFyZ3VtZW50cyAoYW5kIHRoZSBgYCoqZXhwcmVzc2lvbmBgIGFyZ3VtZW50LCBpZiBhbnkgLS0gc2VlXG5iZWxvdykuICBTbzpcblxuICAgPj4+IGRlZiBmKGEsIGIpOlxuICAgLi4uICBwcmludChhLCBiKVxuICAgLi4uXG4gICA+Pj4gZihiPTEsICooMiwpKVxuICAgMiAxXG4gICA+Pj4gZihhPTEsICooMiwpKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/XG4gICBUeXBlRXJyb3I6IGYoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50IFwnYVwnXG4gICA+Pj4gZigxLCAqKDIsKSlcbiAgIDEgMlxuXG5JdCBpcyB1bnVzdWFsIGZvciBib3RoIGtleXdvcmQgYXJndW1lbnRzIGFuZCB0aGUgYGAqZXhwcmVzc2lvbmBgXG5zeW50YXggdG8gYmUgdXNlZCBpbiB0aGUgc2FtZSBjYWxsLCBzbyBpbiBwcmFjdGljZSB0aGlzIGNvbmZ1c2lvbiBkb2VzXG5ub3QgYXJpc2UuXG5cbklmIHRoZSBzeW50YXggYGAqKmV4cHJlc3Npb25gYCBhcHBlYXJzIGluIHRoZSBmdW5jdGlvbiBjYWxsLFxuYGBleHByZXNzaW9uYGAgbXVzdCBldmFsdWF0ZSB0byBhIG1hcHBpbmcsIHRoZSBjb250ZW50cyBvZiB3aGljaCBhcmVcbnRyZWF0ZWQgYXMgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cy4gIEluIHRoZSBjYXNlIG9mIGEga2V5d29yZFxuYXBwZWFyaW5nIGluIGJvdGggYGBleHByZXNzaW9uYGAgYW5kIGFzIGFuIGV4cGxpY2l0IGtleXdvcmQgYXJndW1lbnQsXG5hIGBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZC5cblxuRm9ybWFsIHBhcmFtZXRlcnMgdXNpbmcgdGhlIHN5bnRheCBgYCppZGVudGlmaWVyYGAgb3IgYGAqKmlkZW50aWZpZXJgYFxuY2Fubm90IGJlIHVzZWQgYXMgcG9zaXRpb25hbCBhcmd1bWVudCBzbG90cyBvciBhcyBrZXl3b3JkIGFyZ3VtZW50XG5uYW1lcy5cblxuQSBjYWxsIGFsd2F5cyByZXR1cm5zIHNvbWUgdmFsdWUsIHBvc3NpYmx5IGBgTm9uZWBgLCB1bmxlc3MgaXQgcmFpc2VzXG5hbiBleGNlcHRpb24uICBIb3cgdGhpcyB2YWx1ZSBpcyBjb21wdXRlZCBkZXBlbmRzIG9uIHRoZSB0eXBlIG9mIHRoZVxuY2FsbGFibGUgb2JqZWN0LlxuXG5JZiBpdCBpcy0tLVxuXG5hIHVzZXItZGVmaW5lZCBmdW5jdGlvbjpcbiAgIFRoZSBjb2RlIGJsb2NrIGZvciB0aGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQsIHBhc3NpbmcgaXQgdGhlXG4gICBhcmd1bWVudCBsaXN0LiAgVGhlIGZpcnN0IHRoaW5nIHRoZSBjb2RlIGJsb2NrIHdpbGwgZG8gaXMgYmluZCB0aGVcbiAgIGZvcm1hbCBwYXJhbWV0ZXJzIHRvIHRoZSBhcmd1bWVudHM7IHRoaXMgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb25cbiAgICpGdW5jdGlvbiBkZWZpbml0aW9ucyouICBXaGVuIHRoZSBjb2RlIGJsb2NrIGV4ZWN1dGVzIGEgYGByZXR1cm5gYFxuICAgc3RhdGVtZW50LCB0aGlzIHNwZWNpZmllcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiBjYWxsLlxuXG5hIGJ1aWx0LWluIGZ1bmN0aW9uIG9yIG1ldGhvZDpcbiAgIFRoZSByZXN1bHQgaXMgdXAgdG8gdGhlIGludGVycHJldGVyOyBzZWUgKkJ1aWx0LWluIEZ1bmN0aW9ucyogZm9yXG4gICB0aGUgZGVzY3JpcHRpb25zIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcy5cblxuYSBjbGFzcyBvYmplY3Q6XG4gICBBIG5ldyBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIGlzIHJldHVybmVkLlxuXG5hIGNsYXNzIGluc3RhbmNlIG1ldGhvZDpcbiAgIFRoZSBjb3JyZXNwb25kaW5nIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBpcyBjYWxsZWQsIHdpdGggYW4gYXJndW1lbnRcbiAgIGxpc3QgdGhhdCBpcyBvbmUgbG9uZ2VyIHRoYW4gdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGNhbGw6IHRoZVxuICAgaW5zdGFuY2UgYmVjb21lcyB0aGUgZmlyc3QgYXJndW1lbnQuXG5cbmEgY2xhc3MgaW5zdGFuY2U6XG4gICBUaGUgY2xhc3MgbXVzdCBkZWZpbmUgYSBgYF9fY2FsbF9fKClgYCBtZXRob2Q7IHRoZSBlZmZlY3QgaXMgdGhlblxuICAgdGhlIHNhbWUgYXMgaWYgdGhhdCBtZXRob2Qgd2FzIGNhbGxlZC5cbicsCiAgJ2NsYXNzJzogJ1xuQ2xhc3MgZGVmaW5pdGlvbnNcbioqKioqKioqKioqKioqKioqXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkXG50eXBlIGhpZXJhcmNoeSopOlxuXG4gICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiIHN1aXRlXG4gICBpbmhlcml0YW5jZSA6Oj0gIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiXG4gICBjbGFzc25hbWUgICA6Oj0gaWRlbnRpZmllclxuXG5BIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgbGlzdFxudXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgKkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uKlxuZm9yIG1vcmUgYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYVxuY2xhc3Mgb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiBpbmhlcml0YW5jZVxubGlzdCBpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzIGBgb2JqZWN0YGA7IGhlbmNlLFxuXG4gICBjbGFzcyBGb286XG4gICAgICAgcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbyhvYmplY3QpOlxuICAgICAgIHBhc3NcblxuVGhlIGNsYXNzXCdzIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgaW4gYSBuZXcgZXhlY3V0aW9uIGZyYW1lIChzZWVcbipOYW1pbmcgYW5kIGJpbmRpbmcqKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgdGhlXG5vcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zIG1vc3RseVxuZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3NcJ3Mgc3VpdGUgZmluaXNoZXMgZXhlY3V0aW9uLCBpdHNcbmV4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSBBXG5jbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciB0aGUgYmFzZVxuY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LlxuVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG5uYW1lc3BhY2UuXG5cbkNsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgKm1ldGFjbGFzc2VzKi5cblxuQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgZnVuY3Rpb25zLFxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBjbGFzcyBGb286IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb286IHBhc3NcbiAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcblxuVGhlIGV2YWx1YXRpb24gcnVsZXMgZm9yIHRoZSBkZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIHRoZSBzYW1lIGFzIGZvclxuZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzIG9iamVjdCwgd2hpY2ggaXMgdGhlblxuYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZVxuY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlIGF0dHJpYnV0ZXNcbmNhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCBgYHNlbGYubmFtZSA9IHZhbHVlYGAuICBCb3RoIGNsYXNzIGFuZFxuaW5zdGFuY2UgYXR0cmlidXRlcyBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBub3RhdGlvblxuImBgc2VsZi5uYW1lYGAiLCBhbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlXG53aXRoIHRoZSBzYW1lIG5hbWUgd2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gIENsYXNzIGF0dHJpYnV0ZXMgY2FuIGJlXG51c2VkIGFzIGRlZmF1bHRzIGZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXNcbnRoZXJlIGNhbiBsZWFkIHRvIHVuZXhwZWN0ZWQgcmVzdWx0cy4gICpEZXNjcmlwdG9ycyogY2FuIGJlIHVzZWQgdG9cbmNyZWF0ZSBpbnN0YW5jZSB2YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAtIENsYXNzXG4gICBEZWNvcmF0b3JzXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gVGhlIGV4Y2VwdGlvbiBpcyBwcm9wYWdhdGVkIHRvIHRoZSBpbnZvY2F0aW9uIHN0YWNrIHVubGVzcyB0aGVyZVxuICAgIGlzIGEgYGBmaW5hbGx5YGAgY2xhdXNlIHdoaWNoIGhhcHBlbnMgdG8gcmFpc2UgYW5vdGhlciBleGNlcHRpb24uXG4gICAgVGhhdCBuZXcgZXhjZXB0aW9uIGNhdXNlcyB0aGUgb2xkIG9uZSB0byBiZSBsb3N0LlxuXG5bMl0gQ3VycmVudGx5LCBjb250cm9sICJmbG93cyBvZmYgdGhlIGVuZCIgZXhjZXB0IGluIHRoZSBjYXNlIG9mIGFuXG4gICAgZXhjZXB0aW9uIG9yIHRoZSBleGVjdXRpb24gb2YgYSBgYHJldHVybmBgLCBgYGNvbnRpbnVlYGAsIG9yXG4gICAgYGBicmVha2BgIHN0YXRlbWVudC5cblxuWzNdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGZ1bmN0aW9uXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBmdW5jdGlvblwncyBgYF9fZG9jX19gYCBhdHRyaWJ1dGUgYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBmdW5jdGlvblwncyAqZG9jc3RyaW5nKi5cblxuWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGNsYXNzXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBuYW1lc3BhY2VcJ3MgYGBfX2RvY19fYGAgaXRlbSBhbmRcbiAgICB0aGVyZWZvcmUgdGhlIGNsYXNzXCdzICpkb2NzdHJpbmcqLlxuJywKICAnY29tcGFyaXNvbnMnOiAnXG5Db21wYXJpc29uc1xuKioqKioqKioqKipcblxuVW5saWtlIEMsIGFsbCBjb21wYXJpc29uIG9wZXJhdGlvbnMgaW4gUHl0aG9uIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHksXG53aGljaCBpcyBsb3dlciB0aGFuIHRoYXQgb2YgYW55IGFyaXRobWV0aWMsIHNoaWZ0aW5nIG9yIGJpdHdpc2Vcbm9wZXJhdGlvbi4gIEFsc28gdW5saWtlIEMsIGV4cHJlc3Npb25zIGxpa2UgYGBhIDwgYiA8IGNgYCBoYXZlIHRoZVxuaW50ZXJwcmV0YXRpb24gdGhhdCBpcyBjb252ZW50aW9uYWwgaW4gbWF0aGVtYXRpY3M6XG5cbiAgIGNvbXBhcmlzb24gICAgOjo9IG9yX2V4cHIgKCBjb21wX29wZXJhdG9yIG9yX2V4cHIgKSpcbiAgIGNvbXBfb3BlcmF0b3IgOjo9ICI8IiB8ICI+IiB8ICI9PSIgfCAiPj0iIHwgIjw9IiB8ICIhPSJcbiAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG5cbkNvbXBhcmlzb25zIHlpZWxkIGJvb2xlYW4gdmFsdWVzOiBgYFRydWVgYCBvciBgYEZhbHNlYGAuXG5cbkNvbXBhcmlzb25zIGNhbiBiZSBjaGFpbmVkIGFyYml0cmFyaWx5LCBlLmcuLCBgYHggPCB5IDw9IHpgYCBpc1xuZXF1aXZhbGVudCB0byBgYHggPCB5IGFuZCB5IDw9IHpgYCwgZXhjZXB0IHRoYXQgYGB5YGAgaXMgZXZhbHVhdGVkXG5vbmx5IG9uY2UgKGJ1dCBpbiBib3RoIGNhc2VzIGBgemBgIGlzIG5vdCBldmFsdWF0ZWQgYXQgYWxsIHdoZW4gYGB4IDxcbnlgYCBpcyBmb3VuZCB0byBiZSBmYWxzZSkuXG5cbkZvcm1hbGx5LCBpZiAqYSosICpiKiwgKmMqLCAuLi4sICp5KiwgKnoqIGFyZSBleHByZXNzaW9ucyBhbmQgKm9wMSosXG4qb3AyKiwgLi4uLCAqb3BOKiBhcmUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIHRoZW4gYGBhIG9wMSBiIG9wMiBjIC4uLiB5XG5vcE4gemBgIGlzIGVxdWl2YWxlbnQgdG8gYGBhIG9wMSBiIGFuZCBiIG9wMiBjIGFuZCAuLi4geSBvcE4gemBgLFxuZXhjZXB0IHRoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG5cbk5vdGUgdGhhdCBgYGEgb3AxIGIgb3AyIGNgYCBkb2VzblwndCBpbXBseSBhbnkga2luZCBvZiBjb21wYXJpc29uXG5iZXR3ZWVuICphKiBhbmQgKmMqLCBzbyB0aGF0LCBlLmcuLCBgYHggPCB5ID4gemBgIGlzIHBlcmZlY3RseSBsZWdhbFxuKHRob3VnaCBwZXJoYXBzIG5vdCBwcmV0dHkpLlxuXG5UaGUgb3BlcmF0b3JzIGBgPGBgLCBgYD5gYCwgYGA9PWBgLCBgYD49YGAsIGBgPD1gYCwgYW5kIGBgIT1gYCBjb21wYXJlXG50aGUgdmFsdWVzIG9mIHR3byBvYmplY3RzLiAgVGhlIG9iamVjdHMgbmVlZCBub3QgaGF2ZSB0aGUgc2FtZSB0eXBlLlxuSWYgYm90aCBhcmUgbnVtYmVycywgdGhleSBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuICBPdGhlcndpc2UsXG50aGUgYGA9PWBgIGFuZCBgYCE9YGAgb3BlcmF0b3JzICphbHdheXMqIGNvbnNpZGVyIG9iamVjdHMgb2YgZGlmZmVyZW50XG50eXBlcyB0byBiZSB1bmVxdWFsLCB3aGlsZSB0aGUgYGA8YGAsIGBgPmBgLCBgYD49YGAgYW5kIGBgPD1gYFxub3BlcmF0b3JzIHJhaXNlIGEgYGBUeXBlRXJyb3JgYCB3aGVuIGNvbXBhcmluZyBvYmplY3RzIG9mIGRpZmZlcmVudFxudHlwZXMgdGhhdCBkbyBub3QgaW1wbGVtZW50IHRoZXNlIG9wZXJhdG9ycyBmb3IgdGhlIGdpdmVuIHBhaXIgb2ZcbnR5cGVzLiAgWW91IGNhbiBjb250cm9sIGNvbXBhcmlzb24gYmVoYXZpb3Igb2Ygb2JqZWN0cyBvZiBub24tYnVpbHQtaW5cbnR5cGVzIGJ5IGRlZmluaW5nIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGxpa2UgYGBfX2d0X18oKWBgLCBkZXNjcmliZWRcbmluIHNlY3Rpb24gKkJhc2ljIGN1c3RvbWl6YXRpb24qLlxuXG5Db21wYXJpc29uIG9mIG9iamVjdHMgb2YgdGhlIHNhbWUgdHlwZSBkZXBlbmRzIG9uIHRoZSB0eXBlOlxuXG4qIE51bWJlcnMgYXJlIGNvbXBhcmVkIGFyaXRobWV0aWNhbGx5LlxuXG4qIFRoZSB2YWx1ZXMgYGBmbG9hdChcJ05hTlwnKWBgIGFuZCBgYERlY2ltYWwoXCdOYU5cJylgYCBhcmUgc3BlY2lhbC4gVGhlXG4gIGFyZSBpZGVudGljYWwgdG8gdGhlbXNlbHZlcywgYGB4IGlzIHhgYCBidXQgYXJlIG5vdCBlcXVhbCB0b1xuICB0aGVtc2VsdmVzLCBgYHggIT0geGBgLiAgQWRkaXRpb25hbGx5LCBjb21wYXJpbmcgYW55IHZhbHVlIHRvIGFcbiAgbm90LWEtbnVtYmVyIHZhbHVlIHdpbGwgcmV0dXJuIGBgRmFsc2VgYC4gIEZvciBleGFtcGxlLCBib3RoIGBgMyA8XG4gIGZsb2F0KFwnTmFOXCcpYGAgYW5kIGBgZmxvYXQoXCdOYU5cJykgPCAzYGAgd2lsbCByZXR1cm4gYGBGYWxzZWBgLlxuXG4qIEJ5dGVzIG9iamVjdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljXG4gIHZhbHVlcyBvZiB0aGVpciBlbGVtZW50cy5cblxuKiBTdHJpbmdzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgbnVtZXJpYyBlcXVpdmFsZW50c1xuICAodGhlIHJlc3VsdCBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBvcmQoKWBgKSBvZiB0aGVpciBjaGFyYWN0ZXJzLlxuICBbM10gU3RyaW5nIGFuZCBieXRlcyBvYmplY3QgY2FuXCd0IGJlIGNvbXBhcmVkIVxuXG4qIFR1cGxlcyBhbmQgbGlzdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIGNvbXBhcmlzb24gb2ZcbiAgY29ycmVzcG9uZGluZyBlbGVtZW50cy4gIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBlYWNoXG4gIGVsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUgdHdvIHNlcXVlbmNlcyBtdXN0IGJlIG9mIHRoZSBzYW1lXG4gIHR5cGUgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLlxuXG4gIElmIG5vdCBlcXVhbCwgdGhlIHNlcXVlbmNlcyBhcmUgb3JkZXJlZCB0aGUgc2FtZSBhcyB0aGVpciBmaXJzdFxuICBkaWZmZXJpbmcgZWxlbWVudHMuICBGb3IgZXhhbXBsZSwgYGBbMSwyLHhdIDw9IFsxLDIseV1gYCBoYXMgdGhlXG4gIHNhbWUgdmFsdWUgYXMgYGB4IDw9IHlgYC4gIElmIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZG9lcyBub3RcbiAgZXhpc3QsIHRoZSBzaG9ydGVyIHNlcXVlbmNlIGlzIG9yZGVyZWQgZmlyc3QgKGZvciBleGFtcGxlLCBgYFsxLDJdIDxcbiAgWzEsMiwzXWBgKS5cblxuKiBNYXBwaW5ncyAoZGljdGlvbmFyaWVzKSBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXkgaGF2ZSB0aGVcbiAgc2FtZSBgYChrZXksIHZhbHVlKWBgIHBhaXJzLiBPcmRlciBjb21wYXJpc29ucyBgYChcJzxcJywgXCc8PVwnLCBcJz49XCcsXG4gIFwnPlwnKWBgIHJhaXNlIGBgVHlwZUVycm9yYGAuXG5cbiogU2V0cyBhbmQgZnJvemVuc2V0cyBkZWZpbmUgY29tcGFyaXNvbiBvcGVyYXRvcnMgdG8gbWVhbiBzdWJzZXQgYW5kXG4gIHN1cGVyc2V0IHRlc3RzLiAgVGhvc2UgcmVsYXRpb25zIGRvIG5vdCBkZWZpbmUgdG90YWwgb3JkZXJpbmdzICh0aGVcbiAgdHdvIHNldHMgYGB7MSwyfWBgIGFuZCB7MiwzfSBhcmUgbm90IGVxdWFsLCBub3Igc3Vic2V0cyBvZiBvbmVcbiAgYW5vdGhlciwgbm9yIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlcikuICBBY2NvcmRpbmdseSwgc2V0cyBhcmUgbm90XG4gIGFwcHJvcHJpYXRlIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlcGVuZCBvbiB0b3RhbCBvcmRlcmluZy5cbiAgRm9yIGV4YW1wbGUsIGBgbWluKClgYCwgYGBtYXgoKWBgLCBhbmQgYGBzb3J0ZWQoKWBgIHByb2R1Y2VcbiAgdW5kZWZpbmVkIHJlc3VsdHMgZ2l2ZW4gYSBsaXN0IG9mIHNldHMgYXMgaW5wdXRzLlxuXG4qIE1vc3Qgb3RoZXIgb2JqZWN0cyBvZiBidWlsdC1pbiB0eXBlcyBjb21wYXJlIHVuZXF1YWwgdW5sZXNzIHRoZXkgYXJlXG4gIHRoZSBzYW1lIG9iamVjdDsgdGhlIGNob2ljZSB3aGV0aGVyIG9uZSBvYmplY3QgaXMgY29uc2lkZXJlZCBzbWFsbGVyXG4gIG9yIGxhcmdlciB0aGFuIGFub3RoZXIgb25lIGlzIG1hZGUgYXJiaXRyYXJpbHkgYnV0IGNvbnNpc3RlbnRseVxuICB3aXRoaW4gb25lIGV4ZWN1dGlvbiBvZiBhIHByb2dyYW0uXG5cbkNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0aGUgZGlmZmVyaW5nIHR5cGVzIGRlcGVuZHMgb24gd2hldGhlciBlaXRoZXJcbm9mIHRoZSB0eXBlcyBwcm92aWRlIGV4cGxpY2l0IHN1cHBvcnQgZm9yIHRoZSBjb21wYXJpc29uLiAgTW9zdFxubnVtZXJpYyB0eXBlcyBjYW4gYmUgY29tcGFyZWQgd2l0aCBvbmUgYW5vdGhlciwgYnV0IGNvbXBhcmlzb25zIG9mXG5gYGZsb2F0YGAgYW5kIGBgRGVjaW1hbGBgIGFyZSBub3Qgc3VwcG9ydGVkIHRvIGF2b2lkIHRoZSBpbmV2aXRhYmxlXG5jb25mdXNpb24gYXJpc2luZyBmcm9tIHJlcHJlc2VudGF0aW9uIGlzc3VlcyBzdWNoIGFzIGBgZmxvYXQoXCcxLjFcJylgYFxuYmVpbmcgaW5leGFjdGx5IHJlcHJlc2VudGVkIGFuZCB0aGVyZWZvcmUgbm90IGV4YWN0bHkgZXF1YWwgdG9cbmBgRGVjaW1hbChcJzEuMVwnKWBgIHdoaWNoIGlzLiAgV2hlbiBjcm9zcy10eXBlIGNvbXBhcmlzb24gaXMgbm90XG5zdXBwb3J0ZWQsIHRoZSBjb21wYXJpc29uIG1ldGhvZCByZXR1cm5zIGBgTm90SW1wbGVtZW50ZWRgYC4gIFRoaXMgY2FuXG5jcmVhdGUgdGhlIGlsbHVzaW9uIG9mIG5vbi10cmFuc2l0aXZpdHkgYmV0d2VlbiBzdXBwb3J0ZWQgY3Jvc3MtdHlwZVxuY29tcGFyaXNvbnMgYW5kIHVuc3VwcG9ydGVkIGNvbXBhcmlzb25zLiAgRm9yIGV4YW1wbGUsIGBgRGVjaW1hbCgyKSA9PVxuMmBgIGFuZCBgYDIgPT0gZmxvYXQoMilgYCBidXQgYGBEZWNpbWFsKDIpICE9IGZsb2F0KDIpYGAuXG5cblRoZSBvcGVyYXRvcnMgYGBpbmBgIGFuZCBgYG5vdCBpbmBgIHRlc3QgZm9yIG1lbWJlcnNoaXAuICBgYHggaW4gc2BgXG5ldmFsdWF0ZXMgdG8gdHJ1ZSBpZiAqeCogaXMgYSBtZW1iZXIgb2YgKnMqLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLiAgYGB4XG5ub3QgaW4gc2BgIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mIGBgeCBpbiBzYGAuICBBbGwgYnVpbHQtaW4gc2VxdWVuY2VzXG5hbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCBgYGluYGBcbnRlc3RzIHdoZXRoZXIgYSB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXNcbnN1Y2ggYXMgbGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBvciBjb2xsZWN0aW9ucy5kZXF1ZSwgdGhlXG5leHByZXNzaW9uIGBgeCBpbiB5YGAgaXMgZXF1aXZhbGVudCB0byBgYGFueSh4IGlzIGUgb3IgeCA9PSBlIGZvciBlIGluXG55KWBgLlxuXG5Gb3IgdGhlIHN0cmluZyBhbmQgYnl0ZXMgdHlwZXMsIGBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCpcbmlzIGEgc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyBgYHkuZmluZCh4KSAhPSAtMWBgLlxuRW1wdHkgc3RyaW5ncyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgYSBzdWJzdHJpbmcgb2YgYW55IG90aGVyXG5zdHJpbmcsIHNvIGBgIiIgaW4gImFiYyJgYCB3aWxsIHJldHVybiBgYFRydWVgYC5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgYGBfX2NvbnRhaW5zX18oKWBgIG1ldGhvZCxcbmBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiBgYHkuX19jb250YWluc19fKHgpYGAgaXMgdHJ1ZS5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgYGBfX2NvbnRhaW5zX18oKWBgIGJ1dCBkb1xuZGVmaW5lIGBgX19pdGVyX18oKWBgLCBgYHggaW4geWBgIGlzIHRydWUgaWYgc29tZSB2YWx1ZSBgYHpgYCB3aXRoIGBgeFxuPT0gemBgIGlzIHByb2R1Y2VkIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGBgeWBgLiAgSWYgYW4gZXhjZXB0aW9uIGlzXG5yYWlzZWQgZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmIGBgaW5gYCByYWlzZWQgdGhhdCBleGNlcHRpb24uXG5cbkxhc3RseSwgdGhlIG9sZC1zdHlsZSBpdGVyYXRpb24gcHJvdG9jb2wgaXMgdHJpZWQ6IGlmIGEgY2xhc3MgZGVmaW5lc1xuYGBfX2dldGl0ZW1fXygpYGAsIGBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyBhIG5vbi1cbm5lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCBgYHggPT0geVtpXWBgLCBhbmQgYWxsIGxvd2VyXG5pbnRlZ2VyIGluZGljZXMgZG8gbm90IHJhaXNlIGBgSW5kZXhFcnJvcmBgIGV4Y2VwdGlvbi4gIChJZiBhbnkgb3RoZXJcbmV4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmIGBgaW5gYCByYWlzZWQgdGhhdCBleGNlcHRpb24pLlxuXG5UaGUgb3BlcmF0b3IgYGBub3QgaW5gYCBpcyBkZWZpbmVkIHRvIGhhdmUgdGhlIGludmVyc2UgdHJ1ZSB2YWx1ZSBvZlxuYGBpbmBgLlxuXG5UaGUgb3BlcmF0b3JzIGBgaXNgYCBhbmQgYGBpcyBub3RgYCB0ZXN0IGZvciBvYmplY3QgaWRlbnRpdHk6IGBgeCBpc1xueWBgIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgKngqIGFuZCAqeSogYXJlIHRoZSBzYW1lIG9iamVjdC4gIGBgeCBpc1xubm90IHlgYCB5aWVsZHMgdGhlIGludmVyc2UgdHJ1dGggdmFsdWUuIFs0XVxuJywKLSAnY29tcG91bmQnOiAnXG5Db21wb3VuZCBzdGF0ZW1lbnRzXG4qKioqKioqKioqKioqKioqKioqXG5cbkNvbXBvdW5kIHN0YXRlbWVudHMgY29udGFpbiAoZ3JvdXBzIG9mKSBvdGhlciBzdGF0ZW1lbnRzOyB0aGV5IGFmZmVjdFxub3IgY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRob3NlIG90aGVyIHN0YXRlbWVudHMgaW4gc29tZSB3YXkuICBJblxuZ2VuZXJhbCwgY29tcG91bmQgc3RhdGVtZW50cyBzcGFuIG11bHRpcGxlIGxpbmVzLCBhbHRob3VnaCBpbiBzaW1wbGVcbmluY2FybmF0aW9ucyBhIHdob2xlIGNvbXBvdW5kIHN0YXRlbWVudCBtYXkgYmUgY29udGFpbmVkIGluIG9uZSBsaW5lLlxuXG5UaGUgYGBpZmBgLCBgYHdoaWxlYGAgYW5kIGBgZm9yYGAgc3RhdGVtZW50cyBpbXBsZW1lbnQgdHJhZGl0aW9uYWxcbmNvbnRyb2wgZmxvdyBjb25zdHJ1Y3RzLiAgYGB0cnlgYCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vclxuY2xlYW51cCBjb2RlIGZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHMsIHdoaWxlIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnRcbmFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIGluaXRpYWxpemF0aW9uIGFuZCBmaW5hbGl6YXRpb24gY29kZSBhcm91bmQgYVxuYmxvY2sgb2YgY29kZS4gIEZ1bmN0aW9uIGFuZCBjbGFzcyBkZWZpbml0aW9ucyBhcmUgYWxzbyBzeW50YWN0aWNhbGx5XG5jb21wb3VuZCBzdGF0ZW1lbnRzLlxuXG5Db21wb3VuZCBzdGF0ZW1lbnRzIGNvbnNpc3Qgb2Ygb25lIG9yIG1vcmUgXCdjbGF1c2VzLlwnICBBIGNsYXVzZVxuY29uc2lzdHMgb2YgYSBoZWFkZXIgYW5kIGEgXCdzdWl0ZS5cJyAgVGhlIGNsYXVzZSBoZWFkZXJzIG9mIGFcbnBhcnRpY3VsYXIgY29tcG91bmQgc3RhdGVtZW50IGFyZSBhbGwgYXQgdGhlIHNhbWUgaW5kZW50YXRpb24gbGV2ZWwuXG5FYWNoIGNsYXVzZSBoZWFkZXIgYmVnaW5zIHdpdGggYSB1bmlxdWVseSBpZGVudGlmeWluZyBrZXl3b3JkIGFuZCBlbmRzXG53aXRoIGEgY29sb24uICBBIHN1aXRlIGlzIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cyBjb250cm9sbGVkIGJ5IGFcbmNsYXVzZS4gIEEgc3VpdGUgY2FuIGJlIG9uZSBvciBtb3JlIHNlbWljb2xvbi1zZXBhcmF0ZWQgc2ltcGxlXG5zdGF0ZW1lbnRzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGhlYWRlciwgZm9sbG93aW5nIHRoZSBoZWFkZXJcJ3NcbmNvbG9uLCBvciBpdCBjYW4gYmUgb25lIG9yIG1vcmUgaW5kZW50ZWQgc3RhdGVtZW50cyBvbiBzdWJzZXF1ZW50XG5saW5lcy4gIE9ubHkgdGhlIGxhdHRlciBmb3JtIG9mIHN1aXRlIGNhbiBjb250YWluIG5lc3RlZCBjb21wb3VuZFxuc3RhdGVtZW50czsgdGhlIGZvbGxvd2luZyBpcyBpbGxlZ2FsLCBtb3N0bHkgYmVjYXVzZSBpdCB3b3VsZG5cJ3QgYmVcbmNsZWFyIHRvIHdoaWNoIGBgaWZgYCBjbGF1c2UgYSBmb2xsb3dpbmcgYGBlbHNlYGAgY2xhdXNlIHdvdWxkIGJlbG9uZzpcblxuICAgaWYgdGVzdDE6IGlmIHRlc3QyOiBwcmludCh4KVxuXG5BbHNvIG5vdGUgdGhhdCB0aGUgc2VtaWNvbG9uIGJpbmRzIHRpZ2h0ZXIgdGhhbiB0aGUgY29sb24gaW4gdGhpc1xuY29udGV4dCwgc28gdGhhdCBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGVpdGhlciBhbGwgb3Igbm9uZSBvZiB0aGVcbmBgcHJpbnQoKWBgIGNhbGxzIGFyZSBleGVjdXRlZDpcblxuICAgaWYgeCA8IHkgPCB6OiBwcmludCh4KTsgcHJpbnQoeSk7IHByaW50KHopXG5cblN1bW1hcml6aW5nOlxuXG4gICBjb21wb3VuZF9zdG10IDo6PSBpZl9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHdoaWxlX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgZm9yX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgdHJ5X3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgd2l0aF9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IGZ1bmNkZWZcbiAgICAgICAgICAgICAgICAgICAgIHwgY2xhc3NkZWZcbiAgIHN1aXRlICAgICAgICAgOjo9IHN0bXRfbGlzdCBORVdMSU5FIHwgTkVXTElORSBJTkRFTlQgc3RhdGVtZW50KyBERURFTlRcbiAgIHN0YXRlbWVudCAgICAgOjo9IHN0bXRfbGlzdCBORVdMSU5FIHwgY29tcG91bmRfc3RtdFxuICAgc3RtdF9saXN0ICAgICA6Oj0gc2ltcGxlX3N0bXQgKCI7IiBzaW1wbGVfc3RtdCkqIFsiOyJdXG5cbk5vdGUgdGhhdCBzdGF0ZW1lbnRzIGFsd2F5cyBlbmQgaW4gYSBgYE5FV0xJTkVgYCBwb3NzaWJseSBmb2xsb3dlZCBieVxuYSBgYERFREVOVGBgLiAgQWxzbyBub3RlIHRoYXQgb3B0aW9uYWwgY29udGludWF0aW9uIGNsYXVzZXMgYWx3YXlzXG5iZWdpbiB3aXRoIGEga2V5d29yZCB0aGF0IGNhbm5vdCBzdGFydCBhIHN0YXRlbWVudCwgdGh1cyB0aGVyZSBhcmUgbm9cbmFtYmlndWl0aWVzICh0aGUgXCdkYW5nbGluZyBgYGVsc2VgYFwnIHByb2JsZW0gaXMgc29sdmVkIGluIFB5dGhvbiBieVxucmVxdWlyaW5nIG5lc3RlZCBgYGlmYGAgc3RhdGVtZW50cyB0byBiZSBpbmRlbnRlZCkuXG5cblRoZSBmb3JtYXR0aW5nIG9mIHRoZSBncmFtbWFyIHJ1bGVzIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgcGxhY2VzXG5lYWNoIGNsYXVzZSBvbiBhIHNlcGFyYXRlIGxpbmUgZm9yIGNsYXJpdHkuXG5cblxuVGhlIGBgaWZgYCBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYGlmYGAgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgYGBpZmBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSBgYGVsc2VgYCBjbGF1c2UsIGlmXG5wcmVzZW50LCBpcyBleGVjdXRlZC5cblxuXG5UaGUgYGB3aGlsZWBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGBgd2hpbGVgYCBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgYXMgYW5cbmV4cHJlc3Npb24gaXMgdHJ1ZTpcblxuICAgd2hpbGVfc3RtdCA6Oj0gIndoaWxlIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoaXMgcmVwZWF0ZWRseSB0ZXN0cyB0aGUgZXhwcmVzc2lvbiBhbmQsIGlmIGl0IGlzIHRydWUsIGV4ZWN1dGVzIHRoZVxuZmlyc3Qgc3VpdGU7IGlmIHRoZSBleHByZXNzaW9uIGlzIGZhbHNlICh3aGljaCBtYXkgYmUgdGhlIGZpcnN0IHRpbWVcbml0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSBgYGVsc2VgYCBjbGF1c2UsIGlmIHByZXNlbnQsIGlzXG5leGVjdXRlZCBhbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSBgYGJyZWFrYGAgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgYGBlbHNlYGAgY2xhdXNlXCdzIHN1aXRlLiAgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZFxuZ29lcyBiYWNrIHRvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG5cblxuVGhlIGBgZm9yYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGBgZm9yYGAgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhXG5zZXF1ZW5jZSAoc3VjaCBhcyBhIHN0cmluZywgdHVwbGUgb3IgbGlzdCkgb3Igb3RoZXIgaXRlcmFibGUgb2JqZWN0OlxuXG4gICBmb3Jfc3RtdCA6Oj0gImZvciIgdGFyZ2V0X2xpc3QgImluIiBleHByZXNzaW9uX2xpc3QgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoZSBleHByZXNzaW9uIGxpc3QgaXMgZXZhbHVhdGVkIG9uY2U7IGl0IHNob3VsZCB5aWVsZCBhbiBpdGVyYWJsZVxub2JqZWN0LiAgQW4gaXRlcmF0b3IgaXMgY3JlYXRlZCBmb3IgdGhlIHJlc3VsdCBvZiB0aGVcbmBgZXhwcmVzc2lvbl9saXN0YGAuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoIGl0ZW1cbnByb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIG9mIGFzY2VuZGluZyBpbmRpY2VzLiAgRWFjaFxuaXRlbSBpbiB0dXJuIGlzIGFzc2lnbmVkIHRvIHRoZSB0YXJnZXQgbGlzdCB1c2luZyB0aGUgc3RhbmRhcmQgcnVsZXNcbmZvciBhc3NpZ25tZW50cyAoc2VlICpBc3NpZ25tZW50IHN0YXRlbWVudHMqKSwgYW5kIHRoZW4gdGhlIHN1aXRlIGlzXG5leGVjdXRlZC4gIFdoZW4gdGhlIGl0ZW1zIGFyZSBleGhhdXN0ZWQgKHdoaWNoIGlzIGltbWVkaWF0ZWx5IHdoZW4gdGhlXG5zZXF1ZW5jZSBpcyBlbXB0eSBvciBhbiBpdGVyYXRvciByYWlzZXMgYSBgYFN0b3BJdGVyYXRpb25gYFxuZXhjZXB0aW9uKSwgdGhlIHN1aXRlIGluIHRoZSBgYGVsc2VgYCBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLFxuYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG5cbkEgYGBicmVha2BgIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlIGBgZWxzZWBgIGNsYXVzZVwncyBzdWl0ZS4gIEEgYGBjb250aW51ZWBgXG5zdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmRcbmNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0IGl0ZW0sIG9yIHdpdGggdGhlIGBgZWxzZWBgIGNsYXVzZSBpZiB0aGVyZSB3YXNcbm5vIG5leHQgaXRlbS5cblxuVGhlIHN1aXRlIG1heSBhc3NpZ24gdG8gdGhlIHZhcmlhYmxlKHMpIGluIHRoZSB0YXJnZXQgbGlzdDsgdGhpcyBkb2VzXG5ub3QgYWZmZWN0IHRoZSBuZXh0IGl0ZW0gYXNzaWduZWQgdG8gaXQuXG5cbk5hbWVzIGluIHRoZSB0YXJnZXQgbGlzdCBhcmUgbm90IGRlbGV0ZWQgd2hlbiB0aGUgbG9vcCBpcyBmaW5pc2hlZCxcbmJ1dCBpZiB0aGUgc2VxdWVuY2UgaXMgZW1wdHksIGl0IHdpbGwgbm90IGhhdmUgYmVlbiBhc3NpZ25lZCB0byBhdCBhbGxcbmJ5IHRoZSBsb29wLiAgSGludDogdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgcmFuZ2UoKWBgIHJldHVybnMgYW5cbml0ZXJhdG9yIG9mIGludGVnZXJzIHN1aXRhYmxlIHRvIGVtdWxhdGUgdGhlIGVmZmVjdCBvZiBQYXNjYWxcJ3MgYGBmb3JcbmkgOj0gYSB0byBiIGRvYGA7IGUuZy4sIGBgbGlzdChyYW5nZSgzKSlgYCByZXR1cm5zIHRoZSBsaXN0IGBgWzAsIDEsXG4yXWBgLlxuXG5Ob3RlOiBUaGVyZSBpcyBhIHN1YnRsZXR5IHdoZW4gdGhlIHNlcXVlbmNlIGlzIGJlaW5nIG1vZGlmaWVkIGJ5IHRoZSBsb29wXG4gICh0aGlzIGNhbiBvbmx5IG9jY3VyIGZvciBtdXRhYmxlIHNlcXVlbmNlcywgaS5lLiBsaXN0cykuICBBblxuICBpbnRlcm5hbCBjb3VudGVyIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBpdGVtIGlzIHVzZWQgbmV4dCxcbiAgYW5kIHRoaXMgaXMgaW5jcmVtZW50ZWQgb24gZWFjaCBpdGVyYXRpb24uICBXaGVuIHRoaXMgY291bnRlciBoYXNcbiAgcmVhY2hlZCB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSB0aGUgbG9vcCB0ZXJtaW5hdGVzLiAgVGhpcyBtZWFuc1xuICB0aGF0IGlmIHRoZSBzdWl0ZSBkZWxldGVzIHRoZSBjdXJyZW50IChvciBhIHByZXZpb3VzKSBpdGVtIGZyb20gdGhlXG4gIHNlcXVlbmNlLCB0aGUgbmV4dCBpdGVtIHdpbGwgYmUgc2tpcHBlZCAoc2luY2UgaXQgZ2V0cyB0aGUgaW5kZXggb2ZcbiAgdGhlIGN1cnJlbnQgaXRlbSB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHRyZWF0ZWQpLiAgTGlrZXdpc2UsIGlmIHRoZVxuICBzdWl0ZSBpbnNlcnRzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlIGJlZm9yZSB0aGUgY3VycmVudCBpdGVtLCB0aGVcbiAgY3VycmVudCBpdGVtIHdpbGwgYmUgdHJlYXRlZCBhZ2FpbiB0aGUgbmV4dCB0aW1lIHRocm91Z2ggdGhlIGxvb3AuXG4gIFRoaXMgY2FuIGxlYWQgdG8gbmFzdHkgYnVncyB0aGF0IGNhbiBiZSBhdm9pZGVkIGJ5IG1ha2luZyBhXG4gIHRlbXBvcmFyeSBjb3B5IHVzaW5nIGEgc2xpY2Ugb2YgdGhlIHdob2xlIHNlcXVlbmNlLCBlLmcuLFxuXG4gICAgIGZvciB4IGluIGFbOl06XG4gICAgICAgICBpZiB4IDwgMDogYS5yZW1vdmUoeClcblxuXG5UaGUgYGB0cnlgYCBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGB0cnlgYCBzdGF0ZW1lbnQgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgY2xlYW51cCBjb2RlXG5mb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuXG4gICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgKCJleGNlcHQiIFtleHByZXNzaW9uIFsiYXMiIHRhcmdldF1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlIGBgZXhjZXB0YGAgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuXG5ubyBleGNlcHRpb24gb2NjdXJzIGluIHRoZSBgYHRyeWBgIGNsYXVzZSwgbm8gZXhjZXB0aW9uIGhhbmRsZXIgaXNcbmV4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIGBgdHJ5YGAgc3VpdGUsIGEgc2VhcmNoIGZvclxuYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHRcbmNsYXVzZXMgaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBblxuZXhwcmVzc2lvbi1sZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlc1xuYW55IGV4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdFxuZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGVcbnJlc3VsdGluZyBvYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpc1xuY29tcGF0aWJsZSB3aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZVxuZXhjZXB0aW9uIG9iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlXG5leGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgYGB0cnlgYCBzdGF0ZW1lbnRcbnJhaXNlZCB0aGUgZXhjZXB0aW9uKS5cblxuV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbnRoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSBgYGFzYGAga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCBjbGF1c2UsXG5pZiBwcmVzZW50LCBhbmQgdGhlIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG5jbGF1c2VzIG11c3QgaGF2ZSBhbiBleGVjdXRhYmxlIGJsb2NrLiAgV2hlbiB0aGUgZW5kIG9mIHRoaXMgYmxvY2sgaXNcbnJlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgc3RhdGVtZW50LlxuKFRoaXMgbWVhbnMgdGhhdCBpZiB0d28gbmVzdGVkIGhhbmRsZXJzIGV4aXN0IGZvciB0aGUgc2FtZSBleGNlcHRpb24sXG5hbmQgdGhlIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIHRyeSBjbGF1c2Ugb2YgdGhlIGlubmVyIGhhbmRsZXIsIHRoZVxub3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG5cbldoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGFzc2lnbmVkIHVzaW5nIGBgYXMgdGFyZ2V0YGAsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlIGBgc3lzYGAgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzIHZpYVxuYGBzeXMuZXhjX2luZm8oKWBgLiBgYHN5cy5leGNfaW5mbygpYGAgcmV0dXJucyBhIDMtdHVwbGUgY29uc2lzdGluZyBvZlxudGhlIGV4Y2VwdGlvbiBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSBhbmQgYSB0cmFjZWJhY2sgb2JqZWN0XG4oc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopIGlkZW50aWZ5aW5nIHRoZSBwb2ludCBpblxudGhlIHByb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gIGBgc3lzLmV4Y19pbmZvKClgYCB2YWx1ZXNcbmFyZSByZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgYGBlbHNlYGAgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3Mgb2ZmXG50aGUgZW5kIG9mIHRoZSBgYHRyeWBgIGNsYXVzZS4gWzJdIEV4Y2VwdGlvbnMgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZVxuYXJlIG5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgYGBleGNlcHRgYCBjbGF1c2VzLlxuXG5JZiBgYGZpbmFsbHlgYCBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgVGhlXG5gYHRyeWBgIGNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSBgYGV4Y2VwdGBgIGFuZCBgYGVsc2VgYFxuY2xhdXNlcy4gIElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gYW55IG9mIHRoZSBjbGF1c2VzIGFuZCBpcyBub3RcbmhhbmRsZWQsIHRoZSBleGNlcHRpb24gaXMgdGVtcG9yYXJpbHkgc2F2ZWQuIFRoZSBgYGZpbmFsbHlgYCBjbGF1c2UgaXNcbmV4ZWN1dGVkLiAgSWYgdGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24sIGl0IGlzIHJlLXJhaXNlZCBhdCB0aGUgZW5kXG5vZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlLiBJZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlIHJhaXNlcyBhbm90aGVyXG5leGNlcHRpb24gb3IgZXhlY3V0ZXMgYSBgYHJldHVybmBgIG9yIGBgYnJlYWtgYCBzdGF0ZW1lbnQsIHRoZSBzYXZlZFxuZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gIFRoZSBleGNlcHRpb25cbmluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nIGV4ZWN1dGlvbiBvZiB0aGVcbmBgZmluYWxseWBgIGNsYXVzZS5cblxuV2hlbiBhIGBgcmV0dXJuYGAsIGBgYnJlYWtgYCBvciBgYGNvbnRpbnVlYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluXG50aGUgYGB0cnlgYCBzdWl0ZSBvZiBhIGBgdHJ5YGAuLi5gYGZpbmFsbHlgYCBzdGF0ZW1lbnQsIHRoZVxuYGBmaW5hbGx5YGAgY2xhdXNlIGlzIGFsc28gZXhlY3V0ZWQgXCdvbiB0aGUgd2F5IG91dC5cJyBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGlzIGlsbGVnYWwgaW4gdGhlIGBgZmluYWxseWBgIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYVxucHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZVxubGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5BZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbipFeGNlcHRpb25zKiwgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSBgYHJhaXNlYGAgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuXG5UaGUgYGB3aXRoYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb25cbmBgdHJ5YGAuLi5gYGV4Y2VwdGBgLi4uYGBmaW5hbGx5YGAgdXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkXG5mb3IgY29udmVuaWVudCByZXVzZS5cblxuICAgd2l0aF9zdG10IDo6PSAid2l0aCIgd2l0aF9pdGVtICgiLCIgd2l0aF9pdGVtKSogIjoiIHN1aXRlXG4gICB3aXRoX2l0ZW0gOjo9IGV4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XVxuXG5UaGUgZXhlY3V0aW9uIG9mIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgYGB3aXRoX2l0ZW1gYClcbiAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG5cbjIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2V4aXRfXygpYGAgaXMgbG9hZGVkIGZvciBsYXRlciB1c2UuXG5cbjMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2VudGVyX18oKWBgIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlIGBgd2l0aGBgIHN0YXRlbWVudCwgdGhlIHJldHVyblxuICAgdmFsdWUgZnJvbSBgYF9fZW50ZXJfXygpYGAgaXMgYXNzaWduZWQgdG8gaXQuXG5cbiAgIE5vdGU6IFRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSBgYF9fZW50ZXJfXygpYGBcbiAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiBgYF9fZXhpdF9fKClgYCB3aWxsIGFsd2F5c1xuICAgICBiZSBjYWxsZWQuIFRodXMsIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFzc2lnbm1lbnQgdG8gdGhlXG4gICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3Igb2NjdXJyaW5nXG4gICAgIHdpdGhpbiB0aGUgc3VpdGUgd291bGQgYmUuIFNlZSBzdGVwIDYgYmVsb3cuXG5cbjUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cblxuNi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyBgYF9fZXhpdF9fKClgYCBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gYGBfX2V4aXRfXygpYGAuIE90aGVyd2lzZSxcbiAgIHRocmVlIGBgTm9uZWBgIGFyZ3VtZW50cyBhcmUgc3VwcGxpZWQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24sIGFuZCB0aGUgcmV0dXJuIHZhbHVlXG4gICBmcm9tIHRoZSBgYF9fZXhpdF9fKClgYCBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzXG4gICByZXJhaXNlZC4gIElmIHRoZSByZXR1cm4gdmFsdWUgd2FzIHRydWUsIHRoZSBleGNlcHRpb24gaXNcbiAgIHN1cHByZXNzZWQsIGFuZCBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmdcbiAgIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tIGBgX19leGl0X18oKWBgIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gcHJvY2VlZHNcbiAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG5cbldpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG5tdWx0aXBsZSBgYHdpdGhgYCBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuXG4gICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbiAgICAgICBzdWl0ZVxuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIHdpdGggQSgpIGFzIGE6XG4gICAgICAgd2l0aCBCKCkgYXMgYjpcbiAgICAgICAgICAgc3VpdGVcblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBleHByZXNzaW9ucy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cblxuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFtwYXJhbWV0ZXJfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICAoICAiKiIgW3BhcmFtZXRlcl0gKCIsIiBkZWZwYXJhbWV0ZXIpKlxuICAgICAgICAgICAgICAgICAgICAgIFssICIqKiIgcGFyYW1ldGVyXVxuICAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB8IGRlZnBhcmFtZXRlciBbIiwiXSApXG4gICBwYXJhbWV0ZXIgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4gICBkZWZwYXJhbWV0ZXIgICA6Oj0gcGFyYW1ldGVyIFsiPSIgZXhwcmVzc2lvbl1cbiAgIGZ1bmNuYW1lICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0cyBleGVjdXRpb24gYmluZHNcbnRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uIG9iamVjdFxuKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gIFRoaXNcbmZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgbmFtZXNwYWNlXG5hcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBiZSB1c2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC5cblxuVGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZG9lcyBub3QgZXhlY3V0ZSB0aGUgZnVuY3Rpb24gYm9keTsgdGhpcyBnZXRzXG5leGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBtYXkgYmUgd3JhcHBlZCBieSBvbmUgb3IgbW9yZSAqZGVjb3JhdG9yKlxuZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzXG5kZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIFRoZVxucmVzdWx0IG11c3QgYmUgYSBjYWxsYWJsZSwgd2hpY2ggaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlvbiBvYmplY3RcbmFzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlIGZ1bmN0aW9uIG5hbWVcbmluc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgaW5cbm5lc3RlZCBmYXNoaW9uLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGRlZiBmdW5jKCk6IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBkZWYgZnVuYygpOiBwYXNzXG4gICBmdW5jID0gZjEoYXJnKShmMihmdW5jKSlcblxuV2hlbiBvbmUgb3IgbW9yZSBwYXJhbWV0ZXJzIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogYGA9YGBcbipleHByZXNzaW9uKiwgdGhlIGZ1bmN0aW9uIGlzIHNhaWQgdG8gaGF2ZSAiZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzLiJcbkZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiYGAqYGAiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS1cbnRoaXMgaXMgYSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gdGhhdCBpcyBub3QgZXhwcmVzc2VkIGJ5IHRoZSBncmFtbWFyLlxuXG4qKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb25cbmlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgb25jZSwgd2hlblxudGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtY29tcHV0ZWQiIHZhbHVlIGlzXG51c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgd2hlbiBhXG5kZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoIGFzIGEgbGlzdCBvciBhIGRpY3Rpb25hcnk6XG5pZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieSBhcHBlbmRpbmcgYW4gaXRlbSB0byBhXG5saXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLiBUaGlzIGlzIGdlbmVyYWxseSBub3RcbndoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8gdXNlIGBgTm9uZWBgIGFzIHRoZVxuZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiJgYCppZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nXG5hbnkgZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZlxudGhlIGZvcm0gImBgKippZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3XG5kaWN0aW9uYXJ5IHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEgbmV3XG5lbXB0eSBkaWN0aW9uYXJ5LiBQYXJhbWV0ZXJzIGFmdGVyICJgYCpgYCIgb3IgImBgKmlkZW50aWZpZXJgYCIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gImBgOiBleHByZXNzaW9uYGAiXG5mb2xsb3dpbmcgdGhlIHBhcmFtZXRlciBuYW1lLiAgQW55IHBhcmFtZXRlciBtYXkgaGF2ZSBhbiBhbm5vdGF0aW9uXG5ldmVuIHRob3NlIG9mIHRoZSBmb3JtIGBgKmlkZW50aWZpZXJgYCBvciBgYCoqaWRlbnRpZmllcmBgLiAgRnVuY3Rpb25zXG5tYXkgaGF2ZSAicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICJgYC0+IGV4cHJlc3Npb25gYCIgYWZ0ZXIgdGhlXG5wYXJhbWV0ZXIgbGlzdC4gIFRoZXNlIGFubm90YXRpb25zIGNhbiBiZSBhbnkgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb25cbmFuZCBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuXG5Bbm5vdGF0aW9ucyBtYXkgYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW5cbnRoZSBzb3VyY2UgY29kZS4gIFRoZSBwcmVzZW5jZSBvZiBhbm5vdGF0aW9ucyBkb2VzIG5vdCBjaGFuZ2UgdGhlXG5zZW1hbnRpY3Mgb2YgYSBmdW5jdGlvbi4gIFRoZSBhbm5vdGF0aW9uIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGFzXG52YWx1ZXMgb2YgYSBkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzXCcgbmFtZXMgaW4gdGhlXG5gYF9fYW5ub3RhdGlvbnNfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGEgZm9ybXMsXG5kZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYSBmb3JtIGlzIG1lcmVseSBhXG5zaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uOyBhIGZ1bmN0aW9uIGRlZmluZWQgaW5cbmEgImBgZGVmYGAiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvciBhc3NpZ25lZCB0byBhbm90aGVyIG5hbWVcbmp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGEgZm9ybS4gIFRoZSAiYGBkZWZgYCIgZm9ybSBpc1xuYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSBpdCBhbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZVxuc3RhdGVtZW50cyBhbmQgYW5ub3RhdGlvbnMuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIEZ1bmN0aW9ucyBhcmUgZmlyc3QtY2xhc3Mgb2JqZWN0cy4gIEEgImBgZGVmYGAiXG5mb3JtIGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIGxvY2FsIGZ1bmN0aW9uXG50aGF0IGNhbiBiZSByZXR1cm5lZCBvciBwYXNzZWQgYXJvdW5kLiAgRnJlZSB2YXJpYWJsZXMgdXNlZCBpbiB0aGVcbm5lc3RlZCBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlIGZ1bmN0aW9uXG5jb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiAqTmFtaW5nIGFuZCBiaW5kaW5nKiBmb3IgZGV0YWlscy5cblxuXG5DbGFzcyBkZWZpbml0aW9uc1xuPT09PT09PT09PT09PT09PT1cblxuQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmRcbnR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAiOiIgc3VpdGVcbiAgIGluaGVyaXRhbmNlIDo6PSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSJcbiAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSBsaXN0XG51c3VhbGx5IGdpdmVzIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMgKHNlZSAqQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb24qXG5mb3IgbW9yZSBhZHZhbmNlZCB1c2VzKSwgc28gZWFjaCBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBldmFsdWF0ZSB0byBhXG5jbGFzcyBvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlXG5saXN0IGluaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgYGBvYmplY3RgYDsgaGVuY2UsXG5cbiAgIGNsYXNzIEZvbzpcbiAgICAgICBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vKG9iamVjdCk6XG4gICAgICAgcGFzc1xuXG5UaGUgY2xhc3NcJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb24gZnJhbWUgKHNlZVxuKk5hbWluZyBhbmQgYmluZGluZyopLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWwgbmFtZXNwYWNlIGFuZCB0aGVcbm9yaWdpbmFsIGdsb2JhbCBuYW1lc3BhY2UuIChVc3VhbGx5LCB0aGUgc3VpdGUgY29udGFpbnMgbW9zdGx5XG5mdW5jdGlvbiBkZWZpbml0aW9ucy4pICBXaGVuIHRoZSBjbGFzc1wncyBzdWl0ZSBmaW5pc2hlcyBleGVjdXRpb24sIGl0c1xuZXhlY3V0aW9uIGZyYW1lIGlzIGRpc2NhcmRlZCBidXQgaXRzIGxvY2FsIG5hbWVzcGFjZSBpcyBzYXZlZC4gWzRdIEFcbmNsYXNzIG9iamVjdCBpcyB0aGVuIGNyZWF0ZWQgdXNpbmcgdGhlIGluaGVyaXRhbmNlIGxpc3QgZm9yIHRoZSBiYXNlXG5jbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnkuXG5UaGUgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGlzIGNsYXNzIG9iamVjdCBpbiB0aGUgb3JpZ2luYWwgbG9jYWxcbm5hbWVzcGFjZS5cblxuQ2xhc3MgY3JlYXRpb24gY2FuIGJlIGN1c3RvbWl6ZWQgaGVhdmlseSB1c2luZyAqbWV0YWNsYXNzZXMqLlxuXG5DbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyBmdW5jdGlvbnMsXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGNsYXNzIEZvbzogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbzogcGFzc1xuICAgRm9vID0gZjEoYXJnKShmMihGb28pKVxuXG5UaGUgZXZhbHVhdGlvbiBydWxlcyBmb3IgdGhlIGRlY29yYXRvciBleHByZXNzaW9ucyBhcmUgdGhlIHNhbWUgYXMgZm9yXG5mdW5jdGlvbiBkZWNvcmF0b3JzLiAgVGhlIHJlc3VsdCBtdXN0IGJlIGEgY2xhc3Mgb2JqZWN0LCB3aGljaCBpcyB0aGVuXG5ib3VuZCB0byB0aGUgY2xhc3MgbmFtZS5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogVmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gYXJlXG5jbGFzcyBhdHRyaWJ1dGVzOyB0aGV5IGFyZSBzaGFyZWQgYnkgaW5zdGFuY2VzLiAgSW5zdGFuY2UgYXR0cmlidXRlc1xuY2FuIGJlIHNldCBpbiBhIG1ldGhvZCB3aXRoIGBgc2VsZi5uYW1lID0gdmFsdWVgYC4gIEJvdGggY2xhc3MgYW5kXG5pbnN0YW5jZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIG5vdGF0aW9uXG4iYGBzZWxmLm5hbWVgYCIsIGFuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGVcbndpdGggdGhlIHNhbWUgbmFtZSB3aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmVcbnVzZWQgYXMgZGVmYXVsdHMgZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlc1xudGhlcmUgY2FuIGxlYWQgdG8gdW5leHBlY3RlZCByZXN1bHRzLiAgKkRlc2NyaXB0b3JzKiBjYW4gYmUgdXNlZCB0b1xuY3JlYXRlIGluc3RhbmNlIHZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqIC0gQ2xhc3NcbiAgIERlY29yYXRvcnNcblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBUaGUgZXhjZXB0aW9uIGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGludm9jYXRpb24gc3RhY2sgdW5sZXNzIHRoZXJlXG4gICAgaXMgYSBgYGZpbmFsbHlgYCBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyIGV4Y2VwdGlvbi5cbiAgICBUaGF0IG5ldyBleGNlcHRpb24gY2F1c2VzIHRoZSBvbGQgb25lIHRvIGJlIGxvc3QuXG5cblsyXSBDdXJyZW50bHksIGNvbnRyb2wgImZsb3dzIG9mZiB0aGUgZW5kIiBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgYW5cbiAgICBleGNlcHRpb24gb3IgdGhlIGV4ZWN1dGlvbiBvZiBhIGBgcmV0dXJuYGAsIGBgY29udGludWVgYCwgb3JcbiAgICBgYGJyZWFrYGAgc3RhdGVtZW50LlxuXG5bM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgZnVuY3Rpb25cbiAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGZ1bmN0aW9uXCdzIGBgX19kb2NfX2BgIGF0dHJpYnV0ZSBhbmRcbiAgICB0aGVyZWZvcmUgdGhlIGZ1bmN0aW9uXCdzICpkb2NzdHJpbmcqLlxuXG5bNF0gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgY2xhc3NcbiAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG5hbWVzcGFjZVwncyBgYF9fZG9jX19gYCBpdGVtIGFuZFxuICAgIHRoZXJlZm9yZSB0aGUgY2xhc3NcJ3MgKmRvY3N0cmluZyouXG4nLAorICdjb21wb3VuZCc6ICdcbkNvbXBvdW5kIHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKipcblxuQ29tcG91bmQgc3RhdGVtZW50cyBjb250YWluIChncm91cHMgb2YpIG90aGVyIHN0YXRlbWVudHM7IHRoZXkgYWZmZWN0XG5vciBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhvc2Ugb3RoZXIgc3RhdGVtZW50cyBpbiBzb21lIHdheS4gIEluXG5nZW5lcmFsLCBjb21wb3VuZCBzdGF0ZW1lbnRzIHNwYW4gbXVsdGlwbGUgbGluZXMsIGFsdGhvdWdoIGluIHNpbXBsZVxuaW5jYXJuYXRpb25zIGEgd2hvbGUgY29tcG91bmQgc3RhdGVtZW50IG1heSBiZSBjb250YWluZWQgaW4gb25lIGxpbmUuXG5cblRoZSBgYGlmYGAsIGBgd2hpbGVgYCBhbmQgYGBmb3JgYCBzdGF0ZW1lbnRzIGltcGxlbWVudCB0cmFkaXRpb25hbFxuY29udHJvbCBmbG93IGNvbnN0cnVjdHMuICBgYHRyeWBgIHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yXG5jbGVhbnVwIGNvZGUgZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cywgd2hpbGUgdGhlIGBgd2l0aGBgIHN0YXRlbWVudFxuYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgaW5pdGlhbGl6YXRpb24gYW5kIGZpbmFsaXphdGlvbiBjb2RlIGFyb3VuZCBhXG5ibG9jayBvZiBjb2RlLiAgRnVuY3Rpb24gYW5kIGNsYXNzIGRlZmluaXRpb25zIGFyZSBhbHNvIHN5bnRhY3RpY2FsbHlcbmNvbXBvdW5kIHN0YXRlbWVudHMuXG5cbkNvbXBvdW5kIHN0YXRlbWVudHMgY29uc2lzdCBvZiBvbmUgb3IgbW9yZSBcJ2NsYXVzZXMuXCcgIEEgY2xhdXNlXG5jb25zaXN0cyBvZiBhIGhlYWRlciBhbmQgYSBcJ3N1aXRlLlwnICBUaGUgY2xhdXNlIGhlYWRlcnMgb2YgYVxucGFydGljdWxhciBjb21wb3VuZCBzdGF0ZW1lbnQgYXJlIGFsbCBhdCB0aGUgc2FtZSBpbmRlbnRhdGlvbiBsZXZlbC5cbkVhY2ggY2xhdXNlIGhlYWRlciBiZWdpbnMgd2l0aCBhIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIGtleXdvcmQgYW5kIGVuZHNcbndpdGggYSBjb2xvbi4gIEEgc3VpdGUgaXMgYSBncm91cCBvZiBzdGF0ZW1lbnRzIGNvbnRyb2xsZWQgYnkgYVxuY2xhdXNlLiAgQSBzdWl0ZSBjYW4gYmUgb25lIG9yIG1vcmUgc2VtaWNvbG9uLXNlcGFyYXRlZCBzaW1wbGVcbnN0YXRlbWVudHMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgaGVhZGVyLCBmb2xsb3dpbmcgdGhlIGhlYWRlclwnc1xuY29sb24sIG9yIGl0IGNhbiBiZSBvbmUgb3IgbW9yZSBpbmRlbnRlZCBzdGF0ZW1lbnRzIG9uIHN1YnNlcXVlbnRcbmxpbmVzLiAgT25seSB0aGUgbGF0dGVyIGZvcm0gb2Ygc3VpdGUgY2FuIGNvbnRhaW4gbmVzdGVkIGNvbXBvdW5kXG5zdGF0ZW1lbnRzOyB0aGUgZm9sbG93aW5nIGlzIGlsbGVnYWwsIG1vc3RseSBiZWNhdXNlIGl0IHdvdWxkblwndCBiZVxuY2xlYXIgdG8gd2hpY2ggYGBpZmBgIGNsYXVzZSBhIGZvbGxvd2luZyBgYGVsc2VgYCBjbGF1c2Ugd291bGQgYmVsb25nOlxuXG4gICBpZiB0ZXN0MTogaWYgdGVzdDI6IHByaW50KHgpXG5cbkFsc28gbm90ZSB0aGF0IHRoZSBzZW1pY29sb24gYmluZHMgdGlnaHRlciB0aGFuIHRoZSBjb2xvbiBpbiB0aGlzXG5jb250ZXh0LCBzbyB0aGF0IGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgZWl0aGVyIGFsbCBvciBub25lIG9mIHRoZVxuYGBwcmludCgpYGAgY2FsbHMgYXJlIGV4ZWN1dGVkOlxuXG4gICBpZiB4IDwgeSA8IHo6IHByaW50KHgpOyBwcmludCh5KTsgcHJpbnQoeilcblxuU3VtbWFyaXppbmc6XG5cbiAgIGNvbXBvdW5kX3N0bXQgOjo9IGlmX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgd2hpbGVfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmb3Jfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB0cnlfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aXRoX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgZnVuY2RlZlxuICAgICAgICAgICAgICAgICAgICAgfCBjbGFzc2RlZlxuICAgc3VpdGUgICAgICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBORVdMSU5FIElOREVOVCBzdGF0ZW1lbnQrIERFREVOVFxuICAgc3RhdGVtZW50ICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBjb21wb3VuZF9zdG10XG4gICBzdG10X2xpc3QgICAgIDo6PSBzaW1wbGVfc3RtdCAoIjsiIHNpbXBsZV9zdG10KSogWyI7Il1cblxuTm90ZSB0aGF0IHN0YXRlbWVudHMgYWx3YXlzIGVuZCBpbiBhIGBgTkVXTElORWBgIHBvc3NpYmx5IGZvbGxvd2VkIGJ5XG5hIGBgREVERU5UYGAuICBBbHNvIG5vdGUgdGhhdCBvcHRpb25hbCBjb250aW51YXRpb24gY2xhdXNlcyBhbHdheXNcbmJlZ2luIHdpdGggYSBrZXl3b3JkIHRoYXQgY2Fubm90IHN0YXJ0IGEgc3RhdGVtZW50LCB0aHVzIHRoZXJlIGFyZSBub1xuYW1iaWd1aXRpZXMgKHRoZSBcJ2RhbmdsaW5nIGBgZWxzZWBgXCcgcHJvYmxlbSBpcyBzb2x2ZWQgaW4gUHl0aG9uIGJ5XG5yZXF1aXJpbmcgbmVzdGVkIGBgaWZgYCBzdGF0ZW1lbnRzIHRvIGJlIGluZGVudGVkKS5cblxuVGhlIGZvcm1hdHRpbmcgb2YgdGhlIGdyYW1tYXIgcnVsZXMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucyBwbGFjZXNcbmVhY2ggY2xhdXNlIG9uIGEgc2VwYXJhdGUgbGluZSBmb3IgY2xhcml0eS5cblxuXG5UaGUgYGBpZmBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGBgaWZgYCBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gb3BlcmF0aW9ucypcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSBgYGlmYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG5JZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuXG5cblRoZSBgYHdoaWxlYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGB3aGlsZWBgIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyBhblxuZXhwcmVzc2lvbiBpcyB0cnVlOlxuXG4gICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgZXhlY3V0ZXMgdGhlXG5maXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgdGltZVxuaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXNcbmV4ZWN1dGVkIGFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BIGBgYnJlYWtgYCBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSBgYGVsc2VgYCBjbGF1c2VcJ3Mgc3VpdGUuICBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kXG5nb2VzIGJhY2sgdG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cblxuXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGFcbnNlcXVlbmNlIChzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuYGBleHByZXNzaW9uX2xpc3RgYC4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggaXRlbVxucHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgb2YgYXNjZW5kaW5nIGluZGljZXMuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzIChzZWUgKkFzc2lnbm1lbnQgc3RhdGVtZW50cyopLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbmV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhIGBgU3RvcEl0ZXJhdGlvbmBgXG5leGNlcHRpb24pLCB0aGUgc3VpdGUgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsXG5hbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSBgYGJyZWFrYGAgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgYGBlbHNlYGAgY2xhdXNlXCdzIHN1aXRlLiAgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZFxuY29udGludWVzIHdpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgYGBlbHNlYGAgY2xhdXNlIGlmIHRoZXJlIHdhc1xubm8gbmV4dCBpdGVtLlxuXG5UaGUgc3VpdGUgbWF5IGFzc2lnbiB0byB0aGUgdmFyaWFibGUocykgaW4gdGhlIHRhcmdldCBsaXN0OyB0aGlzIGRvZXNcbm5vdCBhZmZlY3QgdGhlIG5leHQgaXRlbSBhc3NpZ25lZCB0byBpdC5cblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgaXQgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0IGFsbFxuYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGByYW5nZSgpYGAgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyBgYGZvclxuaSA6PSBhIHRvIGIgZG9gYDsgZS5nLiwgYGBsaXN0KHJhbmdlKDMpKWBgIHJldHVybnMgdGhlIGxpc3QgYGBbMCwgMSxcbjJdYGAuXG5cbk5vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlIGxvb3BcbiAgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuXG5cblRoZSBgYHRyeWBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYHRyeWBgIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XV0gIjoiIHN1aXRlKStcbiAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4gICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuXG5UaGUgYGBleGNlcHRgYCBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuIFdoZW5cbm5vIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIGBgdHJ5YGAgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgYGB0cnlgYCBzdWl0ZSwgYSBzZWFyY2ggZm9yXG5hbiBleGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdFxuY2xhdXNlcyBpbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuXG5leHByZXNzaW9uLWxlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzXG5hbnkgZXhjZXB0aW9uLiAgRm9yIGFuIGV4Y2VwdCBjbGF1c2Ugd2l0aCBhbiBleHByZXNzaW9uLCB0aGF0XG5leHByZXNzaW9uIGlzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZVxucmVzdWx0aW5nIG9iamVjdCBpcyAiY29tcGF0aWJsZSIgd2l0aCB0aGUgZXhjZXB0aW9uLiAgQW4gb2JqZWN0IGlzXG5jb21wYXRpYmxlIHdpdGggYW4gZXhjZXB0aW9uIGlmIGl0IGlzIHRoZSBjbGFzcyBvciBhIGJhc2UgY2xhc3Mgb2YgdGhlXG5leGNlcHRpb24gb2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGVcbmV4Y2VwdGlvbi5cblxuSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uIHN0YWNrLlxuWzFdXG5cbklmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG5yYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgYW5kXG5hIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxudGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSBgYHRyeWBgIHN0YXRlbWVudFxucmFpc2VkIHRoZSBleGNlcHRpb24pLlxuXG5XaGVuIGEgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBpcyBmb3VuZCwgdGhlIGV4Y2VwdGlvbiBpcyBhc3NpZ25lZCB0b1xudGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlIGBgYXNgYCBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSxcbmlmIHByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgYGBhcyB0YXJnZXRgYCwgaXQgaXMgY2xlYXJlZFxuYXQgdGhlIGVuZCBvZiB0aGUgZXhjZXB0IGNsYXVzZS4gIFRoaXMgaXMgYXMgaWZcblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICBmb29cblxud2FzIHRyYW5zbGF0ZWQgdG9cblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIGZvb1xuICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgIGRlbCBOXG5cblRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gYmVcbmFibGUgdG8gcmVmZXIgdG8gaXQgYWZ0ZXIgdGhlIGV4Y2VwdCBjbGF1c2UuICBFeGNlcHRpb25zIGFyZSBjbGVhcmVkXG5iZWNhdXNlIHdpdGggdGhlIHRyYWNlYmFjayBhdHRhY2hlZCB0byB0aGVtLCB0aGV5IGZvcm0gYSByZWZlcmVuY2VcbmN5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSBhbGl2ZVxudW50aWwgdGhlIG5leHQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy5cblxuQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG5leGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgYGBzeXNgYCBtb2R1bGUgYW5kIGNhbiBiZSBhY2Nlc3MgdmlhXG5gYHN5cy5leGNfaW5mbygpYGAuIGBgc3lzLmV4Y19pbmZvKClgYCByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mXG50aGUgZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3RcbihzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluXG50aGUgcHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgYGBzeXMuZXhjX2luZm8oKWBgIHZhbHVlc1xuYXJlIHJlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuIHJldHVybmluZ1xuZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG5cblRoZSBvcHRpb25hbCBgYGVsc2VgYCBjbGF1c2UgaXMgZXhlY3V0ZWQgaWYgYW5kIHdoZW4gY29udHJvbCBmbG93cyBvZmZcbnRoZSBlbmQgb2YgdGhlIGBgdHJ5YGAgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgYGBlbHNlYGAgY2xhdXNlXG5hcmUgbm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyBgYGV4Y2VwdGBgIGNsYXVzZXMuXG5cbklmIGBgZmluYWxseWBgIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGVcbmBgdHJ5YGAgY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55IGBgZXhjZXB0YGAgYW5kIGBgZWxzZWBgXG5jbGF1c2VzLiAgSWYgYW4gZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdFxuaGFuZGxlZCwgdGhlIGV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlIGBgZmluYWxseWBgIGNsYXVzZSBpc1xuZXhlY3V0ZWQuICBJZiB0aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiBvciBgYGJyZWFrYGAgc3RhdGVtZW50LCBpdCBpc1xucmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlIGBgZmluYWxseWBgIGNsYXVzZS4gSWYgdGhlIGBgZmluYWxseWBgXG5jbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uIHRoZSBzYXZlZCBleGNlcHRpb24gaXMgc2V0IGFzIHRoZVxuY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbjsgaWYgdGhlIGBgZmluYWxseWBgIGNsYXVzZSBleGVjdXRlcyBhXG5gYHJldHVybmBgIHN0YXRlbWVudCwgdGhlIHNhdmVkIGV4Y2VwdGlvbiBpcyBkaXNjYXJkZWQ6XG5cbiAgIGRlZiBmKCk6XG4gICAgICAgdHJ5OlxuICAgICAgICAgICAxLzBcbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICByZXR1cm4gNDJcblxuICAgPj4+IGYoKVxuICAgNDJcblxuVGhlIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtIGR1cmluZ1xuZXhlY3V0aW9uIG9mIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuXG5cbldoZW4gYSBgYHJldHVybmBgLCBgYGJyZWFrYGAgb3IgYGBjb250aW51ZWBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpblxudGhlIGBgdHJ5YGAgc3VpdGUgb2YgYSBgYHRyeWBgLi4uYGBmaW5hbGx5YGAgc3RhdGVtZW50LCB0aGVcbmBgZmluYWxseWBgIGNsYXVzZSBpcyBhbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBpcyBpbGxlZ2FsIGluIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGFcbnByb2JsZW0gd2l0aCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmVcbmxpZnRlZCBpbiB0aGUgZnV0dXJlKS5cblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgYGByYWlzZWBgIHN0YXRlbWVudCB0b1xuZ2VuZXJhdGUgZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlIHN0YXRlbWVudCouXG5cblxuVGhlIGBgd2l0aGBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGB3aXRoYGAgc3RhdGVtZW50IGlzIHVzZWQgdG8gd3JhcCB0aGUgZXhlY3V0aW9uIG9mIGEgYmxvY2sgd2l0aFxubWV0aG9kcyBkZWZpbmVkIGJ5IGEgY29udGV4dCBtYW5hZ2VyIChzZWUgc2VjdGlvbiAqV2l0aCBTdGF0ZW1lbnRcbkNvbnRleHQgTWFuYWdlcnMqKS4gVGhpcyBhbGxvd3MgY29tbW9uXG5gYHRyeWBgLi4uYGBleGNlcHRgYC4uLmBgZmluYWxseWBgIHVzYWdlIHBhdHRlcm5zIHRvIGJlIGVuY2Fwc3VsYXRlZFxuZm9yIGNvbnZlbmllbnQgcmV1c2UuXG5cbiAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuICAgd2l0aF9pdGVtIDo6PSBleHByZXNzaW9uIFsiYXMiIHRhcmdldF1cblxuVGhlIGV4ZWN1dGlvbiBvZiB0aGUgYGB3aXRoYGAgc3RhdGVtZW50IHdpdGggb25lICJpdGVtIiBwcm9jZWVkcyBhc1xuZm9sbG93czpcblxuMS4gVGhlIGNvbnRleHQgZXhwcmVzc2lvbiAodGhlIGV4cHJlc3Npb24gZ2l2ZW4gaW4gdGhlIGBgd2l0aF9pdGVtYGApXG4gICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuXG4yLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzIGBgX19leGl0X18oKWBgIGlzIGxvYWRlZCBmb3IgbGF0ZXIgdXNlLlxuXG4zLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzIGBgX19lbnRlcl9fKClgYCBtZXRob2QgaXMgaW52b2tlZC5cblxuNC4gSWYgYSB0YXJnZXQgd2FzIGluY2x1ZGVkIGluIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbiAgIHZhbHVlIGZyb20gYGBfX2VudGVyX18oKWBgIGlzIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBOb3RlOiBUaGUgYGB3aXRoYGAgc3RhdGVtZW50IGd1YXJhbnRlZXMgdGhhdCBpZiB0aGUgYGBfX2VudGVyX18oKWBgXG4gICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gYGBfX2V4aXRfXygpYGAgd2lsbCBhbHdheXNcbiAgICAgYmUgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvIHRoZVxuICAgICB0YXJnZXQgbGlzdCwgaXQgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGFuIGVycm9yIG9jY3VycmluZ1xuICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuXG41LiBUaGUgc3VpdGUgaXMgZXhlY3V0ZWQuXG5cbjYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2V4aXRfXygpYGAgbWV0aG9kIGlzIGludm9rZWQuICBJZiBhblxuICAgZXhjZXB0aW9uIGNhdXNlZCB0aGUgc3VpdGUgdG8gYmUgZXhpdGVkLCBpdHMgdHlwZSwgdmFsdWUsIGFuZFxuICAgdHJhY2ViYWNrIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvIGBgX19leGl0X18oKWBgLiBPdGhlcndpc2UsXG4gICB0aHJlZSBgYE5vbmVgYCBhcmd1bWVudHMgYXJlIHN1cHBsaWVkLlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiB2YWx1ZVxuICAgZnJvbSB0aGUgYGBfX2V4aXRfXygpYGAgbWV0aG9kIHdhcyBmYWxzZSwgdGhlIGV4Y2VwdGlvbiBpc1xuICAgcmVyYWlzZWQuICBJZiB0aGUgcmV0dXJuIHZhbHVlIHdhcyB0cnVlLCB0aGUgZXhjZXB0aW9uIGlzXG4gICBzdXBwcmVzc2VkLCBhbmQgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoIHRoZSBzdGF0ZW1lbnQgZm9sbG93aW5nXG4gICB0aGUgYGB3aXRoYGAgc3RhdGVtZW50LlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBmb3IgYW55IHJlYXNvbiBvdGhlciB0aGFuIGFuIGV4Y2VwdGlvbiwgdGhlXG4gICByZXR1cm4gdmFsdWUgZnJvbSBgYF9fZXhpdF9fKClgYCBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uIHByb2NlZWRzXG4gICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuXG5XaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyBpZlxubXVsdGlwbGUgYGB3aXRoYGAgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcblxuICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4gICAgICAgc3VpdGVcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICB3aXRoIEEoKSBhcyBhOlxuICAgICAgIHdpdGggQigpIGFzIGI6XG4gICAgICAgICAgIHN1aXRlXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgZXhwcmVzc2lvbnMuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuICAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvblxuICAgICAgYGB3aXRoYGAgc3RhdGVtZW50LlxuXG5cbkZ1bmN0aW9uIGRlZmluaXRpb25zXG49PT09PT09PT09PT09PT09PT09PVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGZ1bmNkZWYgICAgICAgIDo6PSBbZGVjb3JhdG9yc10gImRlZiIgZnVuY25hbWUgIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuICAgZGVjb3JhdG9ycyAgICAgOjo9IGRlY29yYXRvcitcbiAgIGRlY29yYXRvciAgICAgIDo6PSAiQCIgZG90dGVkX25hbWUgWyIoIiBbcGFyYW1ldGVyX2xpc3QgWyIsIl1dICIpIl0gTkVXTElORVxuICAgZG90dGVkX25hbWUgICAgOjo9IGlkZW50aWZpZXIgKCIuIiBpZGVudGlmaWVyKSpcbiAgIHBhcmFtZXRlcl9saXN0IDo6PSAoZGVmcGFyYW1ldGVyICIsIikqXG4gICAgICAgICAgICAgICAgICAgICAgKCAgIioiIFtwYXJhbWV0ZXJdICgiLCIgZGVmcGFyYW1ldGVyKSpcbiAgICAgICAgICAgICAgICAgICAgICBbLCAiKioiIHBhcmFtZXRlcl1cbiAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgfCBkZWZwYXJhbWV0ZXIgWyIsIl0gKVxuICAgcGFyYW1ldGVyICAgICAgOjo9IGlkZW50aWZpZXIgWyI6IiBleHByZXNzaW9uXVxuICAgZGVmcGFyYW1ldGVyICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4gICBmdW5jbmFtZSAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgZXhlY3V0aW9uIGJpbmRzXG50aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UgdG8gYSBmdW5jdGlvbiBvYmplY3RcbihhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG5mdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZ2xvYmFsIG5hbWVzcGFjZVxuYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG5cblRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGRvZXMgbm90IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGJvZHk7IHRoaXMgZ2V0c1xuZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuIFszXVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbmV4cHJlc3Npb25zLiBEZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBpc1xuZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICBUaGVcbnJlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gb2JqZWN0XG5hcyB0aGUgb25seSBhcmd1bWVudC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIGJvdW5kIHRvIHRoZSBmdW5jdGlvbiBuYW1lXG5pbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkIGluXG5uZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZVxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBkZWYgZnVuYygpOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgZGVmIGZ1bmMoKTogcGFzc1xuICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG5cbldoZW4gb25lIG9yIG1vcmUgcGFyYW1ldGVycyBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqIGBgPWBgXG4qZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcy4iXG5Gb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nIGFyZ3VtZW50IG1heVxuYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyXCdzIGRlZmF1bHQgdmFsdWUgaXNcbnN1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xucGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgImBgKmBgIiBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgLS0tXG50aGlzIGlzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgZ3JhbW1hci5cblxuKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uXG5pcyBleGVjdXRlZC4qKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIG9uY2UsIHdoZW5cbnRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAicHJlLWNvbXB1dGVkIiB2YWx1ZSBpc1xudXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHdoZW4gYVxuZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCBhcyBhIGxpc3Qgb3IgYSBkaWN0aW9uYXJ5OlxuaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgKGUuZy4gYnkgYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYVxubGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCBtb2RpZmllZC4gVGhpcyBpcyBnZW5lcmFsbHkgbm90XG53aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIHVzZSBgYE5vbmVgYCBhcyB0aGVcbmRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbiwgZS5nLjpcblxuICAgZGVmIHdoYXRzX29uX3RoZV90ZWxseShwZW5ndWluPU5vbmUpOlxuICAgICAgIGlmIHBlbmd1aW4gaXMgTm9uZTpcbiAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4gICAgICAgcGVuZ3Vpbi5hcHBlbmQoInByb3BlcnR5IG9mIHRoZSB6b28iKVxuICAgICAgIHJldHVybiBwZW5ndWluXG5cbkZ1bmN0aW9uIGNhbGwgc2VtYW50aWNzIGFyZSBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gc2VjdGlvblxuKkNhbGxzKi4gQSBmdW5jdGlvbiBjYWxsIGFsd2F5cyBhc3NpZ25zIHZhbHVlcyB0byBhbGwgcGFyYW1ldGVyc1xubWVudGlvbmVkIGluIHRoZSBwYXJhbWV0ZXIgbGlzdCwgZWl0aGVyIGZyb20gcG9zaXRpb24gYXJndW1lbnRzLCBmcm9tXG5rZXl3b3JkIGFyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtXG4iYGAqaWRlbnRpZmllcmBgIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlIHJlY2VpdmluZ1xuYW55IGV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWZcbnRoZSBmb3JtICJgYCoqaWRlbnRpZmllcmBgIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ld1xuZGljdGlvbmFyeSByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhIG5ld1xuZW1wdHkgZGljdGlvbmFyeS4gUGFyYW1ldGVycyBhZnRlciAiYGAqYGAiIG9yICJgYCppZGVudGlmaWVyYGAiIGFyZVxua2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgYXJndW1lbnRzLlxuXG5QYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICJgYDogZXhwcmVzc2lvbmBgIlxuZm9sbG93aW5nIHRoZSBwYXJhbWV0ZXIgbmFtZS4gIEFueSBwYXJhbWV0ZXIgbWF5IGhhdmUgYW4gYW5ub3RhdGlvblxuZXZlbiB0aG9zZSBvZiB0aGUgZm9ybSBgYCppZGVudGlmaWVyYGAgb3IgYGAqKmlkZW50aWZpZXJgYC4gIEZ1bmN0aW9uc1xubWF5IGhhdmUgInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiYGAtPiBleHByZXNzaW9uYGAiIGFmdGVyIHRoZVxucGFyYW1ldGVyIGxpc3QuICBUaGVzZSBhbm5vdGF0aW9ucyBjYW4gYmUgYW55IHZhbGlkIFB5dGhvbiBleHByZXNzaW9uXG5hbmQgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLlxuQW5ub3RhdGlvbnMgbWF5IGJlIGV2YWx1YXRlZCBpbiBhIGRpZmZlcmVudCBvcmRlciB0aGFuIHRoZXkgYXBwZWFyIGluXG50aGUgc291cmNlIGNvZGUuICBUaGUgcHJlc2VuY2Ugb2YgYW5ub3RhdGlvbnMgZG9lcyBub3QgY2hhbmdlIHRoZVxuc2VtYW50aWNzIG9mIGEgZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhc1xudmFsdWVzIG9mIGEgZGljdGlvbmFyeSBrZXllZCBieSB0aGUgcGFyYW1ldGVyc1wnIG5hbWVzIGluIHRoZVxuYGBfX2Fubm90YXRpb25zX19gYCBhdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC5cblxuSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgYW5vbnltb3VzIGZ1bmN0aW9ucyAoZnVuY3Rpb25zIG5vdCBib3VuZFxudG8gYSBuYW1lKSwgZm9yIGltbWVkaWF0ZSB1c2UgaW4gZXhwcmVzc2lvbnMuICBUaGlzIHVzZXMgbGFtYmRhIGZvcm1zLFxuZGVzY3JpYmVkIGluIHNlY3Rpb24gKkxhbWJkYXMqLiAgTm90ZSB0aGF0IHRoZSBsYW1iZGEgZm9ybSBpcyBtZXJlbHkgYVxuc2hvcnRoYW5kIGZvciBhIHNpbXBsaWZpZWQgZnVuY3Rpb24gZGVmaW5pdGlvbjsgYSBmdW5jdGlvbiBkZWZpbmVkIGluXG5hICJgYGRlZmBgIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgb3IgYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lXG5qdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgbGFtYmRhIGZvcm0uICBUaGUgImBgZGVmYGAiIGZvcm0gaXNcbmFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgaXQgYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgbXVsdGlwbGVcbnN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICJgYGRlZmBgIlxuZm9ybSBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbCBmdW5jdGlvblxudGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzIHVzZWQgaW4gdGhlXG5uZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSBmdW5jdGlvblxuY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gKk5hbWluZyBhbmQgYmluZGluZyogZm9yIGRldGFpbHMuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuICAgICAgVGhlIG9yaWdpbmFsIHNwZWNpZmljYXRpb24gZm9yIGZ1bmN0aW9uIGFubm90YXRpb25zLlxuXG5cbkNsYXNzIGRlZmluaXRpb25zXG49PT09PT09PT09PT09PT09PVxuXG5BIGNsYXNzIGRlZmluaXRpb24gZGVmaW5lcyBhIGNsYXNzIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZFxudHlwZSBoaWVyYXJjaHkqKTpcblxuICAgY2xhc3NkZWYgICAgOjo9IFtkZWNvcmF0b3JzXSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICI6IiBzdWl0ZVxuICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIlxuICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcblxuQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgVGhlIGluaGVyaXRhbmNlIGxpc3RcbnVzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlICpDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvbipcbmZvciBtb3JlIGFkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkIGV2YWx1YXRlIHRvIGFcbmNsYXNzIG9iamVjdCB3aGljaCBhbGxvd3Mgc3ViY2xhc3NpbmcuICBDbGFzc2VzIHdpdGhvdXQgYW4gaW5oZXJpdGFuY2Vcbmxpc3QgaW5oZXJpdCwgYnkgZGVmYXVsdCwgZnJvbSB0aGUgYmFzZSBjbGFzcyBgYG9iamVjdGBgOyBoZW5jZSxcblxuICAgY2xhc3MgRm9vOlxuICAgICAgIHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb28ob2JqZWN0KTpcbiAgICAgICBwYXNzXG5cblRoZSBjbGFzc1wncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAoc2VlXG4qTmFtaW5nIGFuZCBiaW5kaW5nKiksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kIHRoZVxub3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbmZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzXCdzIHN1aXRlIGZpbmlzaGVzIGV4ZWN1dGlvbiwgaXRzXG5leGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiBbNF0gQVxuY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlIGJhc2VcbmNsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeS5cblRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbFxubmFtZXNwYWNlLlxuXG5DbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nICptZXRhY2xhc3NlcyouXG5cbkNsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nIGZ1bmN0aW9ucyxcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgY2xhc3MgRm9vOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vOiBwYXNzXG4gICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG5cblRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3JcbmZ1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IG11c3QgYmUgYSBjbGFzcyBvYmplY3QsIHdoaWNoIGlzIHRoZW5cbmJvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmVcbmNsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSBhdHRyaWJ1dGVzXG5jYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggYGBzZWxmLm5hbWUgPSB2YWx1ZWBgLiAgQm90aCBjbGFzcyBhbmRcbmluc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb25cbiJgYHNlbGYubmFtZWBgIiwgYW5kIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBoaWRlcyBhIGNsYXNzIGF0dHJpYnV0ZVxud2l0aCB0aGUgc2FtZSBuYW1lIHdoZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZVxudXNlZCBhcyBkZWZhdWx0cyBmb3IgaW5zdGFuY2UgYXR0cmlidXRlcywgYnV0IHVzaW5nIG11dGFibGUgdmFsdWVzXG50aGVyZSBjYW4gbGVhZCB0byB1bmV4cGVjdGVkIHJlc3VsdHMuICAqRGVzY3JpcHRvcnMqIGNhbiBiZSB1c2VkIHRvXG5jcmVhdGUgaW5zdGFuY2UgdmFyaWFibGVzIHdpdGggZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLSBDbGFzc1xuICAgRGVjb3JhdG9yc1xuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3MgdGhlcmVcbiAgICBpcyBhIGBgZmluYWxseWBgIGNsYXVzZSB3aGljaCBoYXBwZW5zIHRvIHJhaXNlIGFub3RoZXIgZXhjZXB0aW9uLlxuICAgIFRoYXQgbmV3IGV4Y2VwdGlvbiBjYXVzZXMgdGhlIG9sZCBvbmUgdG8gYmUgbG9zdC5cblxuWzJdIEN1cnJlbnRseSwgY29udHJvbCAiZmxvd3Mgb2ZmIHRoZSBlbmQiIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhblxuICAgIGV4Y2VwdGlvbiBvciB0aGUgZXhlY3V0aW9uIG9mIGEgYGByZXR1cm5gYCwgYGBjb250aW51ZWBgLCBvclxuICAgIGBgYnJlYWtgYCBzdGF0ZW1lbnQuXG5cblszXSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBmdW5jdGlvblxuICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgZnVuY3Rpb25cJ3MgYGBfX2RvY19fYGAgYXR0cmlidXRlIGFuZFxuICAgIHRoZXJlZm9yZSB0aGUgZnVuY3Rpb25cJ3MgKmRvY3N0cmluZyouXG5cbls0XSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBjbGFzc1xuICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgbmFtZXNwYWNlXCdzIGBgX19kb2NfX2BgIGl0ZW0gYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBjbGFzc1wncyAqZG9jc3RyaW5nKi5cbicsCiAgJ2NvbnRleHQtbWFuYWdlcnMnOiAnXG5XaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkEgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSBjb250ZXh0IHRvXG5iZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhIGBgd2l0aGBgIHN0YXRlbWVudC4gVGhlIGNvbnRleHRcbm1hbmFnZXIgaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWVcbmNvbnRleHQgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZVxubm9ybWFsbHkgaW52b2tlZCB1c2luZyB0aGUgYGB3aXRoYGAgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvblxuKlRoZSB3aXRoIHN0YXRlbWVudCopLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpclxubWV0aG9kcy5cblxuVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kIHJlc3RvcmluZyB2YXJpb3VzXG5raW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG5maWxlcywgZXRjLlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgTWFuYWdlciBUeXBlcyouXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgYGB3aXRoYGBcbiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2RcJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSB0YXJnZXQocylcbiAgIHNwZWNpZmllZCBpbiB0aGUgYGBhc2BgIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG5cbm9iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG5cbiAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgcGFyYW1ldGVyc1xuICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSBleGl0ZWQuIElmIHRoZVxuICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgYXJndW1lbnRzIHdpbGxcbiAgIGJlIGBgTm9uZWBgLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCBgYF9fZXhpdF9fKClgYCBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgcGFzc2VkLWluXG4gICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlclwncyByZXNwb25zaWJpbGl0eS5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG4nLAogICdjb250aW51ZSc6ICdcblRoZSBgYGNvbnRpbnVlYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBjb250aW51ZV9zdG10IDo6PSAiY29udGludWUiXG5cbmBgY29udGludWVgYCBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhIGBgZm9yYGAgb3JcbmBgd2hpbGVgYCBsb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gb3JcbmBgZmluYWxseWBgIGNsYXVzZSB3aXRoaW4gdGhhdCBsb29wLiAgSXQgY29udGludWVzIHdpdGggdGhlIG5leHQgY3ljbGVcbm9mIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBsb29wLlxuXG5XaGVuIGBgY29udGludWVgYCBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSBgYHRyeWBgIHN0YXRlbWVudCB3aXRoIGFcbmBgZmluYWxseWBgIGNsYXVzZSwgdGhhdCBgYGZpbmFsbHlgYCBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseVxuc3RhcnRpbmcgdGhlIG5leHQgbG9vcCBjeWNsZS5cbicsCiAgJ2NvbnZlcnNpb25zJzogJ1xuQXJpdGhtZXRpYyBjb252ZXJzaW9uc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5XaGVuIGEgZGVzY3JpcHRpb24gb2YgYW4gYXJpdGhtZXRpYyBvcGVyYXRvciBiZWxvdyB1c2VzIHRoZSBwaHJhc2VcbiJ0aGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLCIgdGhpcyBtZWFuc1xudGhhdCB0aGUgb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGJ1aWx0LWluIHR5cGVzIHdvcmtzIHRoYXQgd2F5OlxuXG4qIElmIGVpdGhlciBhcmd1bWVudCBpcyBhIGNvbXBsZXggbnVtYmVyLCB0aGUgb3RoZXIgaXMgY29udmVydGVkIHRvXG4gIGNvbXBsZXg7XG5cbiogb3RoZXJ3aXNlLCBpZiBlaXRoZXIgYXJndW1lbnQgaXMgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIHRoZSBvdGhlclxuICBpcyBjb252ZXJ0ZWQgdG8gZmxvYXRpbmcgcG9pbnQ7XG5cbiogb3RoZXJ3aXNlLCBib3RoIG11c3QgYmUgaW50ZWdlcnMgYW5kIG5vIGNvbnZlcnNpb24gaXMgbmVjZXNzYXJ5LlxuXG5Tb21lIGFkZGl0aW9uYWwgcnVsZXMgYXBwbHkgZm9yIGNlcnRhaW4gb3BlcmF0b3JzIChlLmcuLCBhIHN0cmluZyBsZWZ0XG5hcmd1bWVudCB0byB0aGUgXCclXCcgb3BlcmF0b3IpLiAgRXh0ZW5zaW9ucyBtdXN0IGRlZmluZSB0aGVpciBvd25cbmNvbnZlcnNpb24gYmVoYXZpb3IuXG4nLAotICdjdXN0b21pemF0aW9uJzogJ1xuQmFzaWMgY3VzdG9taXphdGlvblxuKioqKioqKioqKioqKioqKioqKlxuXG5vYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuXG4gICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgYGBfX25ld19fKClgYCBpcyBhXG4gICBzdGF0aWMgbWV0aG9kIChzcGVjaWFsLWNhc2VkIHNvIHlvdSBuZWVkIG5vdCBkZWNsYXJlIGl0IGFzIHN1Y2gpXG4gICB0aGF0IHRha2VzIHRoZSBjbGFzcyBvZiB3aGljaCBhbiBpbnN0YW5jZSB3YXMgcmVxdWVzdGVkIGFzIGl0c1xuICAgZmlyc3QgYXJndW1lbnQuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhvc2UgcGFzc2VkIHRvIHRoZVxuICAgb2JqZWN0IGNvbnN0cnVjdG9yIGV4cHJlc3Npb24gKHRoZSBjYWxsIHRvIHRoZSBjbGFzcykuICBUaGUgcmV0dXJuXG4gICB2YWx1ZSBvZiBgYF9fbmV3X18oKWBgIHNob3VsZCBiZSB0aGUgbmV3IG9iamVjdCBpbnN0YW5jZSAodXN1YWxseVxuICAgYW4gaW5zdGFuY2Ugb2YgKmNscyopLlxuXG4gICBUeXBpY2FsIGltcGxlbWVudGF0aW9ucyBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIGJ5XG4gICBpbnZva2luZyB0aGUgc3VwZXJjbGFzc1wncyBgYF9fbmV3X18oKWBgIG1ldGhvZCB1c2luZ1xuICAgYGBzdXBlcihjdXJyZW50Y2xhc3MsIGNscykuX19uZXdfXyhjbHNbLCAuLi5dKWBgIHdpdGggYXBwcm9wcmlhdGVcbiAgIGFyZ3VtZW50cyBhbmQgdGhlbiBtb2RpZnlpbmcgdGhlIG5ld2x5LWNyZWF0ZWQgaW5zdGFuY2UgYXNcbiAgIG5lY2Vzc2FyeSBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuXG4gICBJZiBgYF9fbmV3X18oKWBgIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlIG5ld1xuICAgaW5zdGFuY2VcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4gICBgYF9faW5pdF9fKHNlbGZbLCAuLi5dKWBgLCB3aGVyZSAqc2VsZiogaXMgdGhlIG5ldyBpbnN0YW5jZSBhbmQgdGhlXG4gICByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyB3ZXJlIHBhc3NlZCB0byBgYF9fbmV3X18oKWBgLlxuXG4gICBJZiBgYF9fbmV3X18oKWBgIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBub3QgYmUgaW52b2tlZC5cblxuICAgYGBfX25ld19fKClgYCBpcyBpbnRlbmRlZCBtYWlubHkgdG8gYWxsb3cgc3ViY2xhc3NlcyBvZiBpbW11dGFibGVcbiAgIHR5cGVzIChsaWtlIGludCwgc3RyLCBvciB0dXBsZSkgdG8gY3VzdG9taXplIGluc3RhbmNlIGNyZWF0aW9uLiAgSXRcbiAgIGlzIGFsc28gY29tbW9ubHkgb3ZlcnJpZGRlbiBpbiBjdXN0b20gbWV0YWNsYXNzZXMgaW4gb3JkZXIgdG9cbiAgIGN1c3RvbWl6ZSBjbGFzcyBjcmVhdGlvbi5cblxub2JqZWN0Ll9faW5pdF9fKHNlbGZbLCAuLi5dKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgY3JlYXRlZC4gIFRoZSBhcmd1bWVudHMgYXJlIHRob3NlXG4gICBwYXNzZWQgdG8gdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGV4cHJlc3Npb24uICBJZiBhIGJhc2UgY2xhc3MgaGFzIGFuXG4gICBgYF9faW5pdF9fKClgYCBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCxcbiAgIGlmIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciBpbml0aWFsaXphdGlvbiBvZlxuICAgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2U7IGZvciBleGFtcGxlOlxuICAgYGBCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKWBgLiAgQXMgYSBzcGVjaWFsIGNvbnN0cmFpbnRcbiAgIG9uIGNvbnN0cnVjdG9ycywgbm8gdmFsdWUgbWF5IGJlIHJldHVybmVkOyBkb2luZyBzbyB3aWxsIGNhdXNlIGFcbiAgIGBgVHlwZUVycm9yYGAgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG5cbm9iamVjdC5fX2RlbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzIGlzIGFsc29cbiAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgYGBfX2RlbF9fKClgYCBtZXRob2QsXG4gICB0aGUgZGVyaXZlZCBjbGFzc1wncyBgYF9fZGVsX18oKWBgIG1ldGhvZCwgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHlcbiAgIGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciBkZWxldGlvbiBvZiB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZVxuICAgaW5zdGFuY2UuICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgKHRob3VnaCBub3QgcmVjb21tZW5kZWQhKSBmb3JcbiAgIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCB0byBwb3N0cG9uZSBkZXN0cnVjdGlvbiBvZiB0aGUgaW5zdGFuY2UgYnlcbiAgIGNyZWF0aW5nIGEgbmV3IHJlZmVyZW5jZSB0byBpdC4gIEl0IG1heSB0aGVuIGJlIGNhbGxlZCBhdCBhIGxhdGVyXG4gICB0aW1lIHdoZW4gdGhpcyBuZXcgcmVmZXJlbmNlIGlzIGRlbGV0ZWQuICBJdCBpcyBub3QgZ3VhcmFudGVlZCB0aGF0XG4gICBgYF9fZGVsX18oKWBgIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsIGV4aXN0IHdoZW5cbiAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cblxuICAgTm90ZTogYGBkZWwgeGBgIGRvZXNuXCd0IGRpcmVjdGx5IGNhbGwgYGB4Ll9fZGVsX18oKWBgIC0tLSB0aGUgZm9ybWVyXG4gICAgIGRlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgYGB4YGAgYnkgb25lLCBhbmQgdGhlIGxhdHRlclxuICAgICBpcyBvbmx5IGNhbGxlZCB3aGVuIGBgeGBgXCdzIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8uICBTb21lXG4gICAgIGNvbW1vbiBzaXR1YXRpb25zIHRoYXQgbWF5IHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhblxuICAgICBvYmplY3QgZnJvbSBnb2luZyB0byB6ZXJvIGluY2x1ZGU6IGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlblxuICAgICBvYmplY3RzIChlLmcuLCBhIGRvdWJseS1saW5rZWQgbGlzdCBvciBhIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgd2l0aFxuICAgICBwYXJlbnQgYW5kIGNoaWxkIHBvaW50ZXJzKTsgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGVcbiAgICAgc3RhY2sgZnJhbWUgb2YgYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24gKHRoZSB0cmFjZWJhY2tcbiAgICAgc3RvcmVkIGluIGBgc3lzLmV4Y19pbmZvKClbMl1gYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpOyBvclxuICAgICBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayBmcmFtZSB0aGF0IHJhaXNlZCBhblxuICAgICB1bmhhbmRsZWQgZXhjZXB0aW9uIGluIGludGVyYWN0aXZlIG1vZGUgKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4gICAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gIFRoZSBmaXJzdFxuICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyB0aGUgY3ljbGVzO1xuICAgICB0aGUgbGF0dGVyIHR3byBzaXR1YXRpb25zIGNhbiBiZSByZXNvbHZlZCBieSBzdG9yaW5nIGBgTm9uZWBgIGluXG4gICAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAuIENpcmN1bGFyIHJlZmVyZW5jZXMgd2hpY2ggYXJlIGdhcmJhZ2UgYXJlXG4gICAgIGRldGVjdGVkIHdoZW4gdGhlIG9wdGlvbiBjeWNsZSBkZXRlY3RvciBpcyBlbmFibGVkIChpdFwncyBvbiBieVxuICAgICBkZWZhdWx0KSwgYnV0IGNhbiBvbmx5IGJlIGNsZWFuZWQgdXAgaWYgdGhlcmUgYXJlIG5vIFB5dGhvbi1cbiAgICAgbGV2ZWwgYGBfX2RlbF9fKClgYCBtZXRob2RzIGludm9sdmVkLiBSZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvblxuICAgICBmb3IgdGhlIGBgZ2NgYCBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93XG4gICAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgaGFuZGxlZCBieSB0aGUgY3ljbGUgZGV0ZWN0b3IsXG4gICAgIHBhcnRpY3VsYXJseSB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGBgZ2FyYmFnZWBgIHZhbHVlLlxuXG4gICBXYXJuaW5nOiBEdWUgdG8gdGhlIHByZWNhcmlvdXMgY2lyY3Vtc3RhbmNlcyB1bmRlciB3aGljaCBgYF9fZGVsX18oKWBgXG4gICAgIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciBkdXJpbmcgdGhlaXIgZXhlY3V0aW9uXG4gICAgIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG8gYGBzeXMuc3RkZXJyYGAgaW5zdGVhZC5cbiAgICAgQWxzbywgd2hlbiBgYF9fZGVsX18oKWBgIGlzIGludm9rZWQgaW4gcmVzcG9uc2UgdG8gYSBtb2R1bGUgYmVpbmdcbiAgICAgZGVsZXRlZCAoZS5nLiwgd2hlbiBleGVjdXRpb24gb2YgdGhlIHByb2dyYW0gaXMgZG9uZSksIG90aGVyXG4gICAgIGdsb2JhbHMgcmVmZXJlbmNlZCBieSB0aGUgYGBfX2RlbF9fKClgYCBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZVxuICAgICBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgdG9ybiBkb3duIChlLmcuIHRoZVxuICAgICBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgRm9yIHRoaXMgcmVhc29uLCBgYF9fZGVsX18oKWBgXG4gICAgIG1ldGhvZHMgc2hvdWxkIGRvIHRoZSBhYnNvbHV0ZSBtaW5pbXVtIG5lZWRlZCB0byBtYWludGFpblxuICAgICBleHRlcm5hbCBpbnZhcmlhbnRzLiAgU3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDEuNSwgUHl0aG9uXG4gICAgIGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggYSBzaW5nbGVcbiAgICAgdW5kZXJzY29yZSBhcmUgZGVsZXRlZCBmcm9tIHRoZWlyIG1vZHVsZSBiZWZvcmUgb3RoZXIgZ2xvYmFscyBhcmVcbiAgICAgZGVsZXRlZDsgaWYgbm8gb3RoZXIgcmVmZXJlbmNlcyB0byBzdWNoIGdsb2JhbHMgZXhpc3QsIHRoaXMgbWF5XG4gICAgIGhlbHAgaW4gYXNzdXJpbmcgdGhhdCBpbXBvcnRlZCBtb2R1bGVzIGFyZSBzdGlsbCBhdmFpbGFibGUgYXQgdGhlXG4gICAgIHRpbWUgd2hlbiB0aGUgYGBfX2RlbF9fKClgYCBtZXRob2QgaXMgY2FsbGVkLlxuXG5vYmplY3QuX19yZXByX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYHJlcHIoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlXG4gICAib2ZmaWNpYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgcG9zc2libGUsXG4gICB0aGlzIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlIHVzZWRcbiAgIHRvIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiBhcHByb3ByaWF0ZVxuICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSBmb3JtXG4gICBgYDwuLi5zb21lIHVzZWZ1bCBkZXNjcmlwdGlvbi4uLj5gYCBzaG91bGQgYmUgcmV0dXJuZWQuIFRoZSByZXR1cm5cbiAgIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LiBJZiBhIGNsYXNzIGRlZmluZXMgYGBfX3JlcHJfXygpYGBcbiAgIGJ1dCBub3QgYGBfX3N0cl9fKClgYCwgdGhlbiBgYF9fcmVwcl9fKClgYCBpcyBhbHNvIHVzZWQgd2hlbiBhblxuICAgImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MgaXNcbiAgIHJlcXVpcmVkLlxuXG4gICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZVxuICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG5cbm9iamVjdC5fX3N0cl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgYGBzdHIoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uIGFuZCBieSB0aGUgYGBwcmludCgpYGBcbiAgIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlICJpbmZvcm1hbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuXG4gICBvYmplY3QuICBUaGlzIGRpZmZlcnMgZnJvbSBgYF9fcmVwcl9fKClgYCBpbiB0aGF0IGl0IGRvZXMgbm90IGhhdmVcbiAgIHRvIGJlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb246IGEgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2VcbiAgIHJlcHJlc2VudGF0aW9uIG1heSBiZSB1c2VkIGluc3RlYWQuIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhXG4gICBzdHJpbmcgb2JqZWN0LlxuXG5vYmplY3QuX19ieXRlc19fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBgYGJ5dGVzKClgYCB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgYGBieXRlc2BgIG9iamVjdC5cblxub2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpXG5cbiAgIENhbGxlZCBieSB0aGUgYGBmb3JtYXQoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uIChhbmQgYnkgZXh0ZW5zaW9uLCB0aGVcbiAgIGBgZm9ybWF0KClgYCBtZXRob2Qgb2YgY2xhc3MgYGBzdHJgYCkgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiBUaGUgYGBmb3JtYXRfc3BlY2BgIGFyZ3VtZW50IGlzXG4gICBhIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9uc1xuICAgZGVzaXJlZC4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXMgdXBcbiAgIHRvIHRoZSB0eXBlIGltcGxlbWVudGluZyBgYF9fZm9ybWF0X18oKWBgLCBob3dldmVyIG1vc3QgY2xhc3Nlc1xuICAgd2lsbCBlaXRoZXIgZGVsZWdhdGUgZm9ybWF0dGluZyB0byBvbmUgb2YgdGhlIGJ1aWx0LWluIHR5cGVzLCBvclxuICAgdXNlIGEgc2ltaWxhciBmb3JtYXR0aW5nIG9wdGlvbiBzeW50YXguXG5cbiAgIFNlZSAqRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSogZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlXG4gICBzdGFuZGFyZCBmb3JtYXR0aW5nIHN5bnRheC5cblxuICAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC5cblxub2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2xlX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19lcV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2d0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19nZV9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLiBUaGVcbiAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gb3BlcmF0b3Igc3ltYm9scyBhbmQgbWV0aG9kIG5hbWVzIGlzIGFzXG4gICBmb2xsb3dzOiBgYHg8eWBgIGNhbGxzIGBgeC5fX2x0X18oeSlgYCwgYGB4PD15YGAgY2FsbHNcbiAgIGBgeC5fX2xlX18oeSlgYCwgYGB4PT15YGAgY2FsbHMgYGB4Ll9fZXFfXyh5KWBgLCBgYHghPXlgYCBjYWxsc1xuICAgYGB4Ll9fbmVfXyh5KWBgLCBgYHg+eWBgIGNhbGxzIGBgeC5fX2d0X18oeSlgYCwgYW5kIGBgeD49eWBgIGNhbGxzXG4gICBgYHguX19nZV9fKHkpYGAuXG5cbiAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b25cbiAgIGBgTm90SW1wbGVtZW50ZWRgYCBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYVxuICAgZ2l2ZW4gcGFpciBvZiBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sIGBgRmFsc2VgYCBhbmQgYGBUcnVlYGAgYXJlXG4gICByZXR1cm5lZCBmb3IgYSBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuXG4gICByZXR1cm4gYW55IHZhbHVlLCBzbyBpZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBpcyB1c2VkIGluIGFcbiAgIEJvb2xlYW4gY29udGV4dCAoZS5nLiwgaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiBgYGlmYGAgc3RhdGVtZW50KSxcbiAgIFB5dGhvbiB3aWxsIGNhbGwgYGBib29sKClgYCBvbiB0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIGlmIHRoZSByZXN1bHRcbiAgIGlzIHRydWUgb3IgZmFsc2UuXG5cbiAgIFRoZXJlIGFyZSBubyBpbXBsaWVkIHJlbGF0aW9uc2hpcHMgYW1vbmcgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzLlxuICAgVGhlIHRydXRoIG9mIGBgeD09eWBgIGRvZXMgbm90IGltcGx5IHRoYXQgYGB4IT15YGAgaXMgZmFsc2UuXG4gICBBY2NvcmRpbmdseSwgd2hlbiBkZWZpbmluZyBgYF9fZXFfXygpYGAsIG9uZSBzaG91bGQgYWxzbyBkZWZpbmVcbiAgIGBgX19uZV9fKClgYCBzbyB0aGF0IHRoZSBvcGVyYXRvcnMgd2lsbCBiZWhhdmUgYXMgZXhwZWN0ZWQuICBTZWVcbiAgIHRoZSBwYXJhZ3JhcGggb24gYGBfX2hhc2hfXygpYGAgZm9yIHNvbWUgaW1wb3J0YW50IG5vdGVzIG9uXG4gICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gY29tcGFyaXNvblxuICAgb3BlcmF0aW9ucyBhbmQgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG5cbiAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgKHRvIGJlIHVzZWRcbiAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCB0aGUgcmlnaHRcbiAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsIGBgX19sdF9fKClgYCBhbmQgYGBfX2d0X18oKWBgIGFyZSBlYWNoXG4gICBvdGhlclwncyByZWZsZWN0aW9uLCBgYF9fbGVfXygpYGAgYW5kIGBgX19nZV9fKClgYCBhcmUgZWFjaCBvdGhlclwnc1xuICAgcmVmbGVjdGlvbiwgYW5kIGBgX19lcV9fKClgYCBhbmQgYGBfX25lX18oKWBgIGFyZSB0aGVpciBvd25cbiAgIHJlZmxlY3Rpb24uXG5cbiAgIEFyZ3VtZW50cyB0byByaWNoIGNvbXBhcmlzb24gbWV0aG9kcyBhcmUgbmV2ZXIgY29lcmNlZC5cblxuICAgVG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBvcmRlcmluZyBvcGVyYXRpb25zIGZyb20gYSBzaW5nbGUgcm9vdFxuICAgb3BlcmF0aW9uLCBzZWUgYGBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKWBgLlxuXG5vYmplY3QuX19oYXNoX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uIGBgaGFzaCgpYGAgYW5kIGZvciBvcGVyYXRpb25zIG9uXG4gICBtZW1iZXJzIG9mIGhhc2hlZCBjb2xsZWN0aW9ucyBpbmNsdWRpbmcgYGBzZXRgYCwgYGBmcm96ZW5zZXRgYCwgYW5kXG4gICBgYGRpY3RgYC4gIGBgX19oYXNoX18oKWBgIHNob3VsZCByZXR1cm4gYW4gaW50ZWdlci4gIFRoZSBvbmx5XG4gICByZXF1aXJlZCBwcm9wZXJ0eSBpcyB0aGF0IG9iamVjdHMgd2hpY2ggY29tcGFyZSBlcXVhbCBoYXZlIHRoZSBzYW1lXG4gICBoYXNoIHZhbHVlOyBpdCBpcyBhZHZpc2VkIHRvIHNvbWVob3cgbWl4IHRvZ2V0aGVyIChlLmcuIHVzaW5nXG4gICBleGNsdXNpdmUgb3IpIHRoZSBoYXNoIHZhbHVlcyBmb3IgdGhlIGNvbXBvbmVudHMgb2YgdGhlIG9iamVjdCB0aGF0XG4gICBhbHNvIHBsYXkgYSBwYXJ0IGluIGNvbXBhcmlzb24gb2Ygb2JqZWN0cy5cblxuICAgSWYgYSBjbGFzcyBkb2VzIG5vdCBkZWZpbmUgYW4gYGBfX2VxX18oKWBgIG1ldGhvZCBpdCBzaG91bGQgbm90XG4gICBkZWZpbmUgYSBgYF9faGFzaF9fKClgYCBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzXG4gICBgYF9fZXFfXygpYGAgYnV0IG5vdCBgYF9faGFzaF9fKClgYCwgaXRzIGluc3RhbmNlcyB3aWxsIG5vdCBiZVxuICAgdXNhYmxlIGFzIGl0ZW1zIGluIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzXG4gICBtdXRhYmxlIG9iamVjdHMgYW5kIGltcGxlbWVudHMgYW4gYGBfX2VxX18oKWBgIG1ldGhvZCwgaXQgc2hvdWxkXG4gICBub3QgaW1wbGVtZW50IGBgX19oYXNoX18oKWBgLCBzaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgaGFzaGFibGVcbiAgIGNvbGxlY3Rpb25zIHJlcXVpcmVzIHRoYXQgYSBrZXlcJ3MgaGFzaCB2YWx1ZSBpcyBpbW11dGFibGUgKGlmIHRoZVxuICAgb2JqZWN0XCdzIGhhc2ggdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgd3JvbmcgaGFzaCBidWNrZXQpLlxuXG4gICBVc2VyLWRlZmluZWQgY2xhc3NlcyBoYXZlIGBgX19lcV9fKClgYCBhbmQgYGBfX2hhc2hfXygpYGAgbWV0aG9kc1xuICAgYnkgZGVmYXVsdDsgd2l0aCB0aGVtLCBhbGwgb2JqZWN0cyBjb21wYXJlIHVuZXF1YWwgKGV4Y2VwdCB3aXRoXG4gICB0aGVtc2VsdmVzKSBhbmQgYGB4Ll9faGFzaF9fKClgYCByZXR1cm5zIGBgaWQoeClgYC5cblxuICAgQ2xhc3NlcyB3aGljaCBpbmhlcml0IGEgYGBfX2hhc2hfXygpYGAgbWV0aG9kIGZyb20gYSBwYXJlbnQgY2xhc3NcbiAgIGJ1dCBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgYGBfX2VxX18oKWBgIHN1Y2ggdGhhdCB0aGUgaGFzaCB2YWx1ZVxuICAgcmV0dXJuZWQgaXMgbm8gbG9uZ2VyIGFwcHJvcHJpYXRlIChlLmcuIGJ5IHN3aXRjaGluZyB0byBhIHZhbHVlLVxuICAgYmFzZWQgY29uY2VwdCBvZiBlcXVhbGl0eSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGlkZW50aXR5IGJhc2VkXG4gICBlcXVhbGl0eSkgY2FuIGV4cGxpY2l0bHkgZmxhZyB0aGVtc2VsdmVzIGFzIGJlaW5nIHVuaGFzaGFibGUgYnlcbiAgIHNldHRpbmcgYGBfX2hhc2hfXyA9IE5vbmVgYCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4gRG9pbmcgc28gbWVhbnNcbiAgIHRoYXQgbm90IG9ubHkgd2lsbCBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzIHJhaXNlIGFuIGFwcHJvcHJpYXRlXG4gICBgYFR5cGVFcnJvcmBgIHdoZW4gYSBwcm9ncmFtIGF0dGVtcHRzIHRvIHJldHJpZXZlIHRoZWlyIGhhc2ggdmFsdWUsXG4gICBidXQgdGhleSB3aWxsIGFsc28gYmUgY29ycmVjdGx5IGlkZW50aWZpZWQgYXMgdW5oYXNoYWJsZSB3aGVuXG4gICBjaGVja2luZyBgYGlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSlgYCAodW5saWtlIGNsYXNzZXNcbiAgIHdoaWNoIGRlZmluZSB0aGVpciBvd24gYGBfX2hhc2hfXygpYGAgdG8gZXhwbGljaXRseSByYWlzZVxuICAgYGBUeXBlRXJyb3JgYCkuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBvdmVycmlkZXMgYGBfX2VxX18oKWBgIG5lZWRzIHRvIHJldGFpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mIGBgX19oYXNoX18oKWBgIGZyb20gYSBwYXJlbnQgY2xhc3MsIHRoZVxuICAgaW50ZXJwcmV0ZXIgbXVzdCBiZSB0b2xkIHRoaXMgZXhwbGljaXRseSBieSBzZXR0aW5nIGBgX19oYXNoX18gPVxuICAgPFBhcmVudENsYXNzPi5fX2hhc2hfX2BgLiBPdGhlcndpc2UgdGhlIGluaGVyaXRhbmNlIG9mXG4gICBgYF9faGFzaF9fKClgYCB3aWxsIGJlIGJsb2NrZWQsIGp1c3QgYXMgaWYgYGBfX2hhc2hfX2BgIGhhZCBiZWVuXG4gICBleHBsaWNpdGx5IHNldCB0byBgYE5vbmVgYC5cblxuICAgU2VlIGFsc28gdGhlICotUiogY29tbWFuZC1saW5lIG9wdGlvbi5cblxub2JqZWN0Ll9fYm9vbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdHJ1dGggdmFsdWUgdGVzdGluZyBhbmQgdGhlIGJ1aWx0LWluIG9wZXJhdGlvblxuICAgYGBib29sKClgYDsgc2hvdWxkIHJldHVybiBgYEZhbHNlYGAgb3IgYGBUcnVlYGAuICBXaGVuIHRoaXMgbWV0aG9kXG4gICBpcyBub3QgZGVmaW5lZCwgYGBfX2xlbl9fKClgYCBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCB0aGVcbiAgIG9iamVjdCBpcyBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiAgSWYgYSBjbGFzc1xuICAgZGVmaW5lcyBuZWl0aGVyIGBgX19sZW5fXygpYGAgbm9yIGBgX19ib29sX18oKWBgLCBhbGwgaXRzIGluc3RhbmNlc1xuICAgYXJlIGNvbnNpZGVyZWQgdHJ1ZS5cbicsCi0gJ2RlYnVnZ2VyJzogJ1xuYGBwZGJgYCAtLS0gVGhlIFB5dGhvbiBEZWJ1Z2dlclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgbW9kdWxlIGBgcGRiYGAgZGVmaW5lcyBhbiBpbnRlcmFjdGl2ZSBzb3VyY2UgY29kZSBkZWJ1Z2dlciBmb3JcblB5dGhvbiBwcm9ncmFtcy4gIEl0IHN1cHBvcnRzIHNldHRpbmcgKGNvbmRpdGlvbmFsKSBicmVha3BvaW50cyBhbmRcbnNpbmdsZSBzdGVwcGluZyBhdCB0aGUgc291cmNlIGxpbmUgbGV2ZWwsIGluc3BlY3Rpb24gb2Ygc3RhY2sgZnJhbWVzLFxuc291cmNlIGNvZGUgbGlzdGluZywgYW5kIGV2YWx1YXRpb24gb2YgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlIGluIHRoZVxuY29udGV4dCBvZiBhbnkgc3RhY2sgZnJhbWUuICBJdCBhbHNvIHN1cHBvcnRzIHBvc3QtbW9ydGVtIGRlYnVnZ2luZ1xuYW5kIGNhbiBiZSBjYWxsZWQgdW5kZXIgcHJvZ3JhbSBjb250cm9sLlxuXG5UaGUgZGVidWdnZXIgaXMgZXh0ZW5zaWJsZSAtLSBpdCBpcyBhY3R1YWxseSBkZWZpbmVkIGFzIHRoZSBjbGFzc1xuYGBQZGJgYC4gVGhpcyBpcyBjdXJyZW50bHkgdW5kb2N1bWVudGVkIGJ1dCBlYXNpbHkgdW5kZXJzdG9vZCBieVxucmVhZGluZyB0aGUgc291cmNlLiAgVGhlIGV4dGVuc2lvbiBpbnRlcmZhY2UgdXNlcyB0aGUgbW9kdWxlcyBgYGJkYmBgXG5hbmQgYGBjbWRgYC5cblxuVGhlIGRlYnVnZ2VyXCdzIHByb21wdCBpcyBgYChQZGIpYGAuIFR5cGljYWwgdXNhZ2UgdG8gcnVuIGEgcHJvZ3JhbVxudW5kZXIgY29udHJvbCBvZiB0aGUgZGVidWdnZXIgaXM6XG5cbiAgID4+PiBpbXBvcnQgcGRiXG4gICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4gICA+Pj4gcGRiLnJ1bihcJ215bW9kdWxlLnRlc3QoKVwnKVxuICAgPiA8c3RyaW5nPigwKT8oKVxuICAgKFBkYikgY29udGludWVcbiAgID4gPHN0cmluZz4oMSk/KClcbiAgIChQZGIpIGNvbnRpbnVlXG4gICBOYW1lRXJyb3I6IFwnc3BhbVwnXG4gICA+IDxzdHJpbmc+KDEpPygpXG4gICAoUGRiKVxuXG5gYHBkYi5weWBgIGNhbiBhbHNvIGJlIGludm9rZWQgYXMgYSBzY3JpcHQgdG8gZGVidWcgb3RoZXIgc2NyaXB0cy5cbkZvciBleGFtcGxlOlxuXG4gICBweXRob24zIC1tIHBkYiBteXNjcmlwdC5weVxuXG5XaGVuIGludm9rZWQgYXMgYSBzY3JpcHQsIHBkYiB3aWxsIGF1dG9tYXRpY2FsbHkgZW50ZXIgcG9zdC1tb3J0ZW1cbmRlYnVnZ2luZyBpZiB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZCBleGl0cyBhYm5vcm1hbGx5LiAgQWZ0ZXIgcG9zdC1cbm1vcnRlbSBkZWJ1Z2dpbmcgKG9yIGFmdGVyIG5vcm1hbCBleGl0IG9mIHRoZSBwcm9ncmFtKSwgcGRiIHdpbGxcbnJlc3RhcnQgdGhlIHByb2dyYW0uICBBdXRvbWF0aWMgcmVzdGFydGluZyBwcmVzZXJ2ZXMgcGRiXCdzIHN0YXRlIChzdWNoXG5hcyBicmVha3BvaW50cykgYW5kIGluIG1vc3QgY2FzZXMgaXMgbW9yZSB1c2VmdWwgdGhhbiBxdWl0dGluZyB0aGVcbmRlYnVnZ2VyIHVwb24gcHJvZ3JhbVwncyBleGl0LlxuXG5OZXcgaW4gdmVyc2lvbiAzLjI6IGBgcGRiLnB5YGAgbm93IGFjY2VwdHMgYSBgYC1jYGAgb3B0aW9uIHRoYXRcbmV4ZWN1dGVzIGNvbW1hbmRzIGFzIGlmIGdpdmVuIGluIGEgYGAucGRicmNgYCBmaWxlLCBzZWUgKkRlYnVnZ2VyXG5Db21tYW5kcyouXG5cblRoZSB0eXBpY2FsIHVzYWdlIHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyIGZyb20gYSBydW5uaW5nIHByb2dyYW0gaXNcbnRvIGluc2VydFxuXG4gICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKClcblxuYXQgdGhlIGxvY2F0aW9uIHlvdSB3YW50IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyLiAgWW91IGNhbiB0aGVuXG5zdGVwIHRocm91Z2ggdGhlIGNvZGUgZm9sbG93aW5nIHRoaXMgc3RhdGVtZW50LCBhbmQgY29udGludWUgcnVubmluZ1xud2l0aG91dCB0aGUgZGVidWdnZXIgdXNpbmcgdGhlIGBgY29udGludWVgYCBjb21tYW5kLlxuXG5UaGUgdHlwaWNhbCB1c2FnZSB0byBpbnNwZWN0IGEgY3Jhc2hlZCBwcm9ncmFtIGlzOlxuXG4gICA+Pj4gaW1wb3J0IHBkYlxuICAgPj4+IGltcG9ydCBteW1vZHVsZVxuICAgPj4+IG15bW9kdWxlLnRlc3QoKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/XG4gICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDQsIGluIHRlc3RcbiAgICAgICB0ZXN0MigpXG4gICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDMsIGluIHRlc3QyXG4gICAgICAgcHJpbnQoc3BhbSlcbiAgIE5hbWVFcnJvcjogc3BhbVxuICAgPj4+IHBkYi5wbSgpXG4gICA+IC4vbXltb2R1bGUucHkoMyl0ZXN0MigpXG4gICAtPiBwcmludChzcGFtKVxuICAgKFBkYilcblxuVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOyBlYWNoIGVudGVycyB0aGUgZGVidWdnZXJcbmluIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHdheTpcblxucGRiLnJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG5cbiAgIEV4ZWN1dGUgdGhlICpzdGF0ZW1lbnQqIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgb2JqZWN0KSB1bmRlclxuICAgZGVidWdnZXIgY29udHJvbC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFycyBiZWZvcmUgYW55IGNvZGUgaXNcbiAgIGV4ZWN1dGVkOyB5b3UgY2FuIHNldCBicmVha3BvaW50cyBhbmQgdHlwZSBgYGNvbnRpbnVlYGAsIG9yIHlvdSBjYW5cbiAgIHN0ZXAgdGhyb3VnaCB0aGUgc3RhdGVtZW50IHVzaW5nIGBgc3RlcGBgIG9yIGBgbmV4dGBgIChhbGwgdGhlc2VcbiAgIGNvbW1hbmRzIGFyZSBleHBsYWluZWQgYmVsb3cpLiAgVGhlIG9wdGlvbmFsICpnbG9iYWxzKiBhbmQgKmxvY2FscypcbiAgIGFyZ3VtZW50cyBzcGVjaWZ5IHRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCB0aGUgY29kZSBpcyBleGVjdXRlZDsgYnlcbiAgIGRlZmF1bHQgdGhlIGRpY3Rpb25hcnkgb2YgdGhlIG1vZHVsZSBgYF9fbWFpbl9fYGAgaXMgdXNlZC4gIChTZWVcbiAgIHRoZSBleHBsYW5hdGlvbiBvZiB0aGUgYnVpbHQtaW4gYGBleGVjKClgYCBvciBgYGV2YWwoKWBgXG4gICBmdW5jdGlvbnMuKVxuXG5wZGIucnVuZXZhbChleHByZXNzaW9uLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuXG4gICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgb2JqZWN0KVxuICAgdW5kZXIgZGVidWdnZXIgY29udHJvbC4gIFdoZW4gYGBydW5ldmFsKClgYCByZXR1cm5zLCBpdCByZXR1cm5zIHRoZVxuICAgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24uICBPdGhlcndpc2UgdGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvXG4gICBgYHJ1bigpYGAuXG5cbnBkYi5ydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuXG4gICBDYWxsIHRoZSAqZnVuY3Rpb24qIChhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QsIG5vdCBhIHN0cmluZylcbiAgIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4gIFdoZW4gYGBydW5jYWxsKClgYCByZXR1cm5zLCBpdCByZXR1cm5zXG4gICB3aGF0ZXZlciB0aGUgZnVuY3Rpb24gY2FsbCByZXR1cm5lZC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFyc1xuICAgYXMgc29vbiBhcyB0aGUgZnVuY3Rpb24gaXMgZW50ZXJlZC5cblxucGRiLnNldF90cmFjZSgpXG5cbiAgIEVudGVyIHRoZSBkZWJ1Z2dlciBhdCB0aGUgY2FsbGluZyBzdGFjayBmcmFtZS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICBoYXJkLWNvZGUgYSBicmVha3BvaW50IGF0IGEgZ2l2ZW4gcG9pbnQgaW4gYSBwcm9ncmFtLCBldmVuIGlmIHRoZVxuICAgY29kZSBpcyBub3Qgb3RoZXJ3aXNlIGJlaW5nIGRlYnVnZ2VkIChlLmcuIHdoZW4gYW4gYXNzZXJ0aW9uXG4gICBmYWlscykuXG5cbnBkYi5wb3N0X21vcnRlbSh0cmFjZWJhY2s9Tm9uZSlcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSBnaXZlbiAqdHJhY2ViYWNrKiBvYmplY3QuICBJZiBub1xuICAgKnRyYWNlYmFjayogaXMgZ2l2ZW4sIGl0IHVzZXMgdGhlIG9uZSBvZiB0aGUgZXhjZXB0aW9uIHRoYXQgaXNcbiAgIGN1cnJlbnRseSBiZWluZyBoYW5kbGVkIChhbiBleGNlcHRpb24gbXVzdCBiZSBiZWluZyBoYW5kbGVkIGlmIHRoZVxuICAgZGVmYXVsdCBpcyB0byBiZSB1c2VkKS5cblxucGRiLnBtKClcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSB0cmFjZWJhY2sgZm91bmQgaW5cbiAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAuXG5cblRoZSBgYHJ1bipgYCBmdW5jdGlvbnMgYW5kIGBgc2V0X3RyYWNlKClgYCBhcmUgYWxpYXNlcyBmb3Jcbmluc3RhbnRpYXRpbmcgdGhlIGBgUGRiYGAgY2xhc3MgYW5kIGNhbGxpbmcgdGhlIG1ldGhvZCBvZiB0aGUgc2FtZVxubmFtZS4gIElmIHlvdSB3YW50IHRvIGFjY2VzcyBmdXJ0aGVyIGZlYXR1cmVzLCB5b3UgaGF2ZSB0byBkbyB0aGlzXG55b3Vyc2VsZjpcblxuY2xhc3MgY2xhc3MgcGRiLlBkYihjb21wbGV0ZWtleT1cJ3RhYlwnLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLCBub3NpZ2ludD1GYWxzZSlcblxuICAgYGBQZGJgYCBpcyB0aGUgZGVidWdnZXIgY2xhc3MuXG5cbiAgIFRoZSAqY29tcGxldGVrZXkqLCAqc3RkaW4qIGFuZCAqc3Rkb3V0KiBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGVcbiAgIHVuZGVybHlpbmcgYGBjbWQuQ21kYGAgY2xhc3M7IHNlZSB0aGUgZGVzY3JpcHRpb24gdGhlcmUuXG5cbiAgIFRoZSAqc2tpcCogYXJndW1lbnQsIGlmIGdpdmVuLCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mIGdsb2Itc3R5bGVcbiAgIG1vZHVsZSBuYW1lIHBhdHRlcm5zLiAgVGhlIGRlYnVnZ2VyIHdpbGwgbm90IHN0ZXAgaW50byBmcmFtZXMgdGhhdFxuICAgb3JpZ2luYXRlIGluIGEgbW9kdWxlIHRoYXQgbWF0Y2hlcyBvbmUgb2YgdGhlc2UgcGF0dGVybnMuIFsxXVxuXG4gICBCeSBkZWZhdWx0LCBQZGIgc2V0cyBhIGhhbmRsZXIgZm9yIHRoZSBTSUdJTlQgc2lnbmFsICh3aGljaCBpcyBzZW50XG4gICB3aGVuIHRoZSB1c2VyIHByZXNzZXMgQ3RybC1DIG9uIHRoZSBjb25zb2xlKSB3aGVuIHlvdSBnaXZlIGFcbiAgIGBgY29udGludWVgYCBjb21tYW5kLiBUaGlzIGFsbG93cyB5b3UgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXJcbiAgIGFnYWluIGJ5IHByZXNzaW5nIEN0cmwtQy4gIElmIHlvdSB3YW50IFBkYiBub3QgdG8gdG91Y2ggdGhlIFNJR0lOVFxuICAgaGFuZGxlciwgc2V0ICpub3NpZ2ludCogdG90IHRydWUuXG5cbiAgIEV4YW1wbGUgY2FsbCB0byBlbmFibGUgdHJhY2luZyB3aXRoICpza2lwKjpcblxuICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVtcJ2RqYW5nby4qXCddKS5zZXRfdHJhY2UoKVxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjE6IFRoZSAqc2tpcCogYXJndW1lbnQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlICpub3NpZ2ludCogYXJndW1lbnQuICBQcmV2aW91c2x5LCBhIFNJR0lOVFxuICAgaGFuZGxlciB3YXMgbmV2ZXIgc2V0IGJ5IFBkYi5cblxuICAgcnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbiAgIHJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbiAgIHJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG4gICBzZXRfdHJhY2UoKVxuXG4gICAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBmdW5jdGlvbnMgZXhwbGFpbmVkIGFib3ZlLlxuXG5cbkRlYnVnZ2VyIENvbW1hbmRzXG49PT09PT09PT09PT09PT09PVxuXG5UaGUgY29tbWFuZHMgcmVjb2duaXplZCBieSB0aGUgZGVidWdnZXIgYXJlIGxpc3RlZCBiZWxvdy4gIE1vc3RcbmNvbW1hbmRzIGNhbiBiZSBhYmJyZXZpYXRlZCB0byBvbmUgb3IgdHdvIGxldHRlcnMgYXMgaW5kaWNhdGVkOyBlLmcuXG5gYGgoZWxwKWBgIG1lYW5zIHRoYXQgZWl0aGVyIGBgaGBgIG9yIGBgaGVscGBgIGNhbiBiZSB1c2VkIHRvIGVudGVyXG50aGUgaGVscCBjb21tYW5kIChidXQgbm90IGBgaGVgYCBvciBgYGhlbGBgLCBub3IgYGBIYGAgb3IgYGBIZWxwYGAgb3JcbmBgSEVMUGBgKS4gIEFyZ3VtZW50cyB0byBjb21tYW5kcyBtdXN0IGJlIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlXG4oc3BhY2VzIG9yIHRhYnMpLiAgT3B0aW9uYWwgYXJndW1lbnRzIGFyZSBlbmNsb3NlZCBpbiBzcXVhcmUgYnJhY2tldHNcbihgYFtdYGApIGluIHRoZSBjb21tYW5kIHN5bnRheDsgdGhlIHNxdWFyZSBicmFja2V0cyBtdXN0IG5vdCBiZSB0eXBlZC5cbkFsdGVybmF0aXZlcyBpbiB0aGUgY29tbWFuZCBzeW50YXggYXJlIHNlcGFyYXRlZCBieSBhIHZlcnRpY2FsIGJhclxuKGBgfGBgKS5cblxuRW50ZXJpbmcgYSBibGFuayBsaW5lIHJlcGVhdHMgdGhlIGxhc3QgY29tbWFuZCBlbnRlcmVkLiAgRXhjZXB0aW9uOiBpZlxudGhlIGxhc3QgY29tbWFuZCB3YXMgYSBgYGxpc3RgYCBjb21tYW5kLCB0aGUgbmV4dCAxMSBsaW5lcyBhcmUgbGlzdGVkLlxuXG5Db21tYW5kcyB0aGF0IHRoZSBkZWJ1Z2dlciBkb2VzblwndCByZWNvZ25pemUgYXJlIGFzc3VtZWQgdG8gYmUgUHl0aG9uXG5zdGF0ZW1lbnRzIGFuZCBhcmUgZXhlY3V0ZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHByb2dyYW0gYmVpbmdcbmRlYnVnZ2VkLiAgUHl0aG9uIHN0YXRlbWVudHMgY2FuIGFsc28gYmUgcHJlZml4ZWQgd2l0aCBhbiBleGNsYW1hdGlvblxucG9pbnQgKGBgIWBgKS4gIFRoaXMgaXMgYSBwb3dlcmZ1bCB3YXkgdG8gaW5zcGVjdCB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQ7IGl0IGlzIGV2ZW4gcG9zc2libGUgdG8gY2hhbmdlIGEgdmFyaWFibGUgb3IgY2FsbCBhIGZ1bmN0aW9uLlxuV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHN1Y2ggYSBzdGF0ZW1lbnQsIHRoZSBleGNlcHRpb24gbmFtZSBpc1xucHJpbnRlZCBidXQgdGhlIGRlYnVnZ2VyXCdzIHN0YXRlIGlzIG5vdCBjaGFuZ2VkLlxuXG5UaGUgZGVidWdnZXIgc3VwcG9ydHMgKmFsaWFzZXMqLiAgQWxpYXNlcyBjYW4gaGF2ZSBwYXJhbWV0ZXJzIHdoaWNoXG5hbGxvd3Mgb25lIGEgY2VydGFpbiBsZXZlbCBvZiBhZGFwdGFiaWxpdHkgdG8gdGhlIGNvbnRleHQgdW5kZXJcbmV4YW1pbmF0aW9uLlxuXG5NdWx0aXBsZSBjb21tYW5kcyBtYXkgYmUgZW50ZXJlZCBvbiBhIHNpbmdsZSBsaW5lLCBzZXBhcmF0ZWQgYnlcbmBgOztgYC4gIChBIHNpbmdsZSBgYDtgYCBpcyBub3QgdXNlZCBhcyBpdCBpcyB0aGUgc2VwYXJhdG9yIGZvclxubXVsdGlwbGUgY29tbWFuZHMgaW4gYSBsaW5lIHRoYXQgaXMgcGFzc2VkIHRvIHRoZSBQeXRob24gcGFyc2VyLikgIE5vXG5pbnRlbGxpZ2VuY2UgaXMgYXBwbGllZCB0byBzZXBhcmF0aW5nIHRoZSBjb21tYW5kczsgdGhlIGlucHV0IGlzIHNwbGl0XG5hdCB0aGUgZmlyc3QgYGA7O2BgIHBhaXIsIGV2ZW4gaWYgaXQgaXMgaW4gdGhlIG1pZGRsZSBvZiBhIHF1b3RlZFxuc3RyaW5nLlxuXG5JZiBhIGZpbGUgYGAucGRicmNgYCBleGlzdHMgaW4gdGhlIHVzZXJcJ3MgaG9tZSBkaXJlY3Rvcnkgb3IgaW4gdGhlXG5jdXJyZW50IGRpcmVjdG9yeSwgaXQgaXMgcmVhZCBpbiBhbmQgZXhlY3V0ZWQgYXMgaWYgaXQgaGFkIGJlZW4gdHlwZWRcbmF0IHRoZSBkZWJ1Z2dlciBwcm9tcHQuICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGFsaWFzZXMuICBJZlxuYm90aCBmaWxlcyBleGlzdCwgdGhlIG9uZSBpbiB0aGUgaG9tZSBkaXJlY3RvcnkgaXMgcmVhZCBmaXJzdCBhbmRcbmFsaWFzZXMgZGVmaW5lZCB0aGVyZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgbG9jYWwgZmlsZS5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogYGAucGRicmNgYCBjYW4gbm93IGNvbnRhaW4gY29tbWFuZHMgdGhhdFxuY29udGludWUgZGVidWdnaW5nLCBzdWNoIGFzIGBgY29udGludWVgYCBvciBgYG5leHRgYC4gIFByZXZpb3VzbHksXG50aGVzZSBjb21tYW5kcyBoYWQgbm8gZWZmZWN0LlxuXG5oKGVscCkgW2NvbW1hbmRdXG5cbiAgIFdpdGhvdXQgYXJndW1lbnQsIHByaW50IHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBjb21tYW5kcy4gIFdpdGggYVxuICAgKmNvbW1hbmQqIGFzIGFyZ3VtZW50LCBwcmludCBoZWxwIGFib3V0IHRoYXQgY29tbWFuZC4gIGBgaGVscCBwZGJgYFxuICAgZGlzcGxheXMgdGhlIGZ1bGwgZG9jdW1lbnRhdGlvbiAodGhlIGRvY3N0cmluZyBvZiB0aGUgYGBwZGJgYFxuICAgbW9kdWxlKS4gIFNpbmNlIHRoZSAqY29tbWFuZCogYXJndW1lbnQgbXVzdCBiZSBhbiBpZGVudGlmaWVyLFxuICAgYGBoZWxwIGV4ZWNgYCBtdXN0IGJlIGVudGVyZWQgdG8gZ2V0IGhlbHAgb24gdGhlIGBgIWBgIGNvbW1hbmQuXG5cbncoaGVyZSlcblxuICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlIGJvdHRvbS4gIEFuXG4gICBhcnJvdyBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgZnJhbWUsIHdoaWNoIGRldGVybWluZXMgdGhlIGNvbnRleHQgb2ZcbiAgIG1vc3QgY29tbWFuZHMuXG5cbmQob3duKSBbY291bnRdXG5cbiAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyBkb3duIGluIHRoZVxuICAgc3RhY2sgdHJhY2UgKHRvIGEgbmV3ZXIgZnJhbWUpLlxuXG51KHApIFtjb3VudF1cblxuICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIHVwIGluIHRoZSBzdGFja1xuICAgdHJhY2UgKHRvIGFuIG9sZGVyIGZyYW1lKS5cblxuYihyZWFrKSBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG5cbiAgIFdpdGggYSAqbGluZW5vKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgdGhlcmUgaW4gdGhlIGN1cnJlbnQgZmlsZS5cbiAgIFdpdGggYSAqZnVuY3Rpb24qIGFyZ3VtZW50LCBzZXQgYSBicmVhayBhdCB0aGUgZmlyc3QgZXhlY3V0YWJsZVxuICAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIG1heSBiZSBwcmVmaXhlZFxuICAgd2l0aCBhIGZpbGVuYW1lIGFuZCBhIGNvbG9uLCB0byBzcGVjaWZ5IGEgYnJlYWtwb2ludCBpbiBhbm90aGVyXG4gICBmaWxlIChwcm9iYWJseSBvbmUgdGhhdCBoYXNuXCd0IGJlZW4gbG9hZGVkIHlldCkuICBUaGUgZmlsZSBpc1xuICAgc2VhcmNoZWQgb24gYGBzeXMucGF0aGBgLiAgTm90ZSB0aGF0IGVhY2ggYnJlYWtwb2ludCBpcyBhc3NpZ25lZCBhXG4gICBudW1iZXIgdG8gd2hpY2ggYWxsIHRoZSBvdGhlciBicmVha3BvaW50IGNvbW1hbmRzIHJlZmVyLlxuXG4gICBJZiBhIHNlY29uZCBhcmd1bWVudCBpcyBwcmVzZW50LCBpdCBpcyBhbiBleHByZXNzaW9uIHdoaWNoIG11c3RcbiAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuXG5cbiAgIFdpdGhvdXQgYXJndW1lbnQsIGxpc3QgYWxsIGJyZWFrcywgaW5jbHVkaW5nIGZvciBlYWNoIGJyZWFrcG9pbnQsXG4gICB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYnJlYWtwb2ludCBoYXMgYmVlbiBoaXQsIHRoZSBjdXJyZW50XG4gICBpZ25vcmUgY291bnQsIGFuZCB0aGUgYXNzb2NpYXRlZCBjb25kaXRpb24gaWYgYW55LlxuXG50YnJlYWsgWyhbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dXVxuXG4gICBUZW1wb3JhcnkgYnJlYWtwb2ludCwgd2hpY2ggaXMgcmVtb3ZlZCBhdXRvbWF0aWNhbGx5IHdoZW4gaXQgaXNcbiAgIGZpcnN0IGhpdC4gVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIGBgYnJlYWtgYC5cblxuY2woZWFyKSBbZmlsZW5hbWU6bGluZW5vIHwgYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIFdpdGggYSAqZmlsZW5hbWU6bGluZW5vKiBhcmd1bWVudCwgY2xlYXIgYWxsIHRoZSBicmVha3BvaW50cyBhdFxuICAgdGhpcyBsaW5lLiBXaXRoIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgYnJlYWtwb2ludCBudW1iZXJzLCBjbGVhclxuICAgdGhvc2UgYnJlYWtwb2ludHMuIFdpdGhvdXQgYXJndW1lbnQsIGNsZWFyIGFsbCBicmVha3MgKGJ1dCBmaXJzdFxuICAgYXNrIGNvbmZpcm1hdGlvbikuXG5cbmRpc2FibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBEaXNhYmxlIHRoZSBicmVha3BvaW50cyBnaXZlbiBhcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mXG4gICBicmVha3BvaW50IG51bWJlcnMuICBEaXNhYmxpbmcgYSBicmVha3BvaW50IG1lYW5zIGl0IGNhbm5vdCBjYXVzZVxuICAgdGhlIHByb2dyYW0gdG8gc3RvcCBleGVjdXRpb24sIGJ1dCB1bmxpa2UgY2xlYXJpbmcgYSBicmVha3BvaW50LCBpdFxuICAgcmVtYWlucyBpbiB0aGUgbGlzdCBvZiBicmVha3BvaW50cyBhbmQgY2FuIGJlIChyZS0pZW5hYmxlZC5cblxuZW5hYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgRW5hYmxlIHRoZSBicmVha3BvaW50cyBzcGVjaWZpZWQuXG5cbmlnbm9yZSBicG51bWJlciBbY291bnRdXG5cbiAgIFNldCB0aGUgaWdub3JlIGNvdW50IGZvciB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBudW1iZXIuICBJZiBjb3VudCBpc1xuICAgb21pdHRlZCwgdGhlIGlnbm9yZSBjb3VudCBpcyBzZXQgdG8gMC4gIEEgYnJlYWtwb2ludCBiZWNvbWVzIGFjdGl2ZVxuICAgd2hlbiB0aGUgaWdub3JlIGNvdW50IGlzIHplcm8uICBXaGVuIG5vbi16ZXJvLCB0aGUgY291bnQgaXNcbiAgIGRlY3JlbWVudGVkIGVhY2ggdGltZSB0aGUgYnJlYWtwb2ludCBpcyByZWFjaGVkIGFuZCB0aGUgYnJlYWtwb2ludFxuICAgaXMgbm90IGRpc2FibGVkIGFuZCBhbnkgYXNzb2NpYXRlZCBjb25kaXRpb24gZXZhbHVhdGVzIHRvIHRydWUuXG5cbmNvbmRpdGlvbiBicG51bWJlciBbY29uZGl0aW9uXVxuXG4gICBTZXQgYSBuZXcgKmNvbmRpdGlvbiogZm9yIHRoZSBicmVha3BvaW50LCBhbiBleHByZXNzaW9uIHdoaWNoIG11c3RcbiAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuICBJZiAqY29uZGl0aW9uKlxuICAgaXMgYWJzZW50LCBhbnkgZXhpc3RpbmcgY29uZGl0aW9uIGlzIHJlbW92ZWQ7IGkuZS4sIHRoZSBicmVha3BvaW50XG4gICBpcyBtYWRlIHVuY29uZGl0aW9uYWwuXG5cbmNvbW1hbmRzIFticG51bWJlcl1cblxuICAgU3BlY2lmeSBhIGxpc3Qgb2YgY29tbWFuZHMgZm9yIGJyZWFrcG9pbnQgbnVtYmVyICpicG51bWJlciouICBUaGVcbiAgIGNvbW1hbmRzIHRoZW1zZWx2ZXMgYXBwZWFyIG9uIHRoZSBmb2xsb3dpbmcgbGluZXMuICBUeXBlIGEgbGluZVxuICAgY29udGFpbmluZyBqdXN0IGBgZW5kYGAgdG8gdGVybWluYXRlIHRoZSBjb21tYW5kcy4gQW4gZXhhbXBsZTpcblxuICAgICAgKFBkYikgY29tbWFuZHMgMVxuICAgICAgKGNvbSkgcHJpbnQgc29tZV92YXJpYWJsZVxuICAgICAgKGNvbSkgZW5kXG4gICAgICAoUGRiKVxuXG4gICBUbyByZW1vdmUgYWxsIGNvbW1hbmRzIGZyb20gYSBicmVha3BvaW50LCB0eXBlIGNvbW1hbmRzIGFuZCBmb2xsb3dcbiAgIGl0IGltbWVkaWF0ZWx5IHdpdGggYGBlbmRgYDsgdGhhdCBpcywgZ2l2ZSBubyBjb21tYW5kcy5cblxuICAgV2l0aCBubyAqYnBudW1iZXIqIGFyZ3VtZW50LCBjb21tYW5kcyByZWZlcnMgdG8gdGhlIGxhc3QgYnJlYWtwb2ludFxuICAgc2V0LlxuXG4gICBZb3UgY2FuIHVzZSBicmVha3BvaW50IGNvbW1hbmRzIHRvIHN0YXJ0IHlvdXIgcHJvZ3JhbSB1cCBhZ2Fpbi5cbiAgIFNpbXBseSB1c2UgdGhlIGNvbnRpbnVlIGNvbW1hbmQsIG9yIHN0ZXAsIG9yIGFueSBvdGhlciBjb21tYW5kIHRoYXRcbiAgIHJlc3VtZXMgZXhlY3V0aW9uLlxuXG4gICBTcGVjaWZ5aW5nIGFueSBjb21tYW5kIHJlc3VtaW5nIGV4ZWN1dGlvbiAoY3VycmVudGx5IGNvbnRpbnVlLFxuICAgc3RlcCwgbmV4dCwgcmV0dXJuLCBqdW1wLCBxdWl0IGFuZCB0aGVpciBhYmJyZXZpYXRpb25zKSB0ZXJtaW5hdGVzXG4gICB0aGUgY29tbWFuZCBsaXN0IChhcyBpZiB0aGF0IGNvbW1hbmQgd2FzIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5XG4gICBlbmQpLiBUaGlzIGlzIGJlY2F1c2UgYW55IHRpbWUgeW91IHJlc3VtZSBleGVjdXRpb24gKGV2ZW4gd2l0aCBhXG4gICBzaW1wbGUgbmV4dCBvciBzdGVwKSwgeW91IG1heSBlbmNvdW50ZXIgYW5vdGhlciBicmVha3BvaW50LS13aGljaFxuICAgY291bGQgaGF2ZSBpdHMgb3duIGNvbW1hbmQgbGlzdCwgbGVhZGluZyB0byBhbWJpZ3VpdGllcyBhYm91dCB3aGljaFxuICAgbGlzdCB0byBleGVjdXRlLlxuXG4gICBJZiB5b3UgdXNlIHRoZSBcJ3NpbGVudFwnIGNvbW1hbmQgaW4gdGhlIGNvbW1hbmQgbGlzdCwgdGhlIHVzdWFsXG4gICBtZXNzYWdlIGFib3V0IHN0b3BwaW5nIGF0IGEgYnJlYWtwb2ludCBpcyBub3QgcHJpbnRlZC4gIFRoaXMgbWF5IGJlXG4gICBkZXNpcmFibGUgZm9yIGJyZWFrcG9pbnRzIHRoYXQgYXJlIHRvIHByaW50IGEgc3BlY2lmaWMgbWVzc2FnZSBhbmRcbiAgIHRoZW4gY29udGludWUuICBJZiBub25lIG9mIHRoZSBvdGhlciBjb21tYW5kcyBwcmludCBhbnl0aGluZywgeW91XG4gICBzZWUgbm8gc2lnbiB0aGF0IHRoZSBicmVha3BvaW50IHdhcyByZWFjaGVkLlxuXG5zKHRlcClcblxuICAgRXhlY3V0ZSB0aGUgY3VycmVudCBsaW5lLCBzdG9wIGF0IHRoZSBmaXJzdCBwb3NzaWJsZSBvY2Nhc2lvblxuICAgKGVpdGhlciBpbiBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIG9yIG9uIHRoZSBuZXh0IGxpbmUgaW4gdGhlXG4gICBjdXJyZW50IGZ1bmN0aW9uKS5cblxubihleHQpXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGlzXG4gICByZWFjaGVkIG9yIGl0IHJldHVybnMuICAoVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBgYG5leHRgYCBhbmRcbiAgIGBgc3RlcGBgIGlzIHRoYXQgYGBzdGVwYGAgc3RvcHMgaW5zaWRlIGEgY2FsbGVkIGZ1bmN0aW9uLCB3aGlsZVxuICAgYGBuZXh0YGAgZXhlY3V0ZXMgY2FsbGVkIGZ1bmN0aW9ucyBhdCAobmVhcmx5KSBmdWxsIHNwZWVkLCBvbmx5XG4gICBzdG9wcGluZyBhdCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uLilcblxudW50KGlsKSBbbGluZW5vXVxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGxpbmUgd2l0aCBhIG51bWJlclxuICAgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IG9uZSBpcyByZWFjaGVkLlxuXG4gICBXaXRoIGEgbGluZSBudW1iZXIsIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCBhIGxpbmUgd2l0aCBhIG51bWJlclxuICAgZ3JlYXRlciBvciBlcXVhbCB0byB0aGF0IGlzIHJlYWNoZWQuICBJbiBib3RoIGNhc2VzLCBhbHNvIHN0b3Agd2hlblxuICAgdGhlIGN1cnJlbnQgZnJhbWUgcmV0dXJucy5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogQWxsb3cgZ2l2aW5nIGFuIGV4cGxpY2l0IGxpbmUgbnVtYmVyLlxuXG5yKGV0dXJuKVxuXG4gICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGN1cnJlbnQgZnVuY3Rpb24gcmV0dXJucy5cblxuYyhvbnQoaW51ZSkpXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiwgb25seSBzdG9wIHdoZW4gYSBicmVha3BvaW50IGlzIGVuY291bnRlcmVkLlxuXG5qKHVtcCkgbGluZW5vXG5cbiAgIFNldCB0aGUgbmV4dCBsaW5lIHRoYXQgd2lsbCBiZSBleGVjdXRlZC4gIE9ubHkgYXZhaWxhYmxlIGluIHRoZVxuICAgYm90dG9tLW1vc3QgZnJhbWUuICBUaGlzIGxldHMgeW91IGp1bXAgYmFjayBhbmQgZXhlY3V0ZSBjb2RlIGFnYWluLFxuICAgb3IganVtcCBmb3J3YXJkIHRvIHNraXAgY29kZSB0aGF0IHlvdSBkb25cJ3Qgd2FudCB0byBydW4uXG5cbiAgIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IG5vdCBhbGwganVtcHMgYXJlIGFsbG93ZWQgLS0gZm9yIGluc3RhbmNlXG4gICBpdCBpcyBub3QgcG9zc2libGUgdG8ganVtcCBpbnRvIHRoZSBtaWRkbGUgb2YgYSBgYGZvcmBgIGxvb3Agb3Igb3V0XG4gICBvZiBhIGBgZmluYWxseWBgIGNsYXVzZS5cblxubChpc3QpIFtmaXJzdFssIGxhc3RdXVxuXG4gICBMaXN0IHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmaWxlLiAgV2l0aG91dCBhcmd1bWVudHMsIGxpc3QgMTFcbiAgIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lIG9yIGNvbnRpbnVlIHRoZSBwcmV2aW91cyBsaXN0aW5nLlxuICAgV2l0aCBgYC5gYCBhcyBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBhcm91bmQgdGhlIGN1cnJlbnQgbGluZS5cbiAgIFdpdGggb25lIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCBhdCB0aGF0IGxpbmUuICBXaXRoIHR3b1xuICAgYXJndW1lbnRzLCBsaXN0IHRoZSBnaXZlbiByYW5nZTsgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBsZXNzXG4gICB0aGFuIHRoZSBmaXJzdCwgaXQgaXMgaW50ZXJwcmV0ZWQgYXMgYSBjb3VudC5cblxuICAgVGhlIGN1cnJlbnQgbGluZSBpbiB0aGUgY3VycmVudCBmcmFtZSBpcyBpbmRpY2F0ZWQgYnkgYGAtPmBgLiAgSWZcbiAgIGFuIGV4Y2VwdGlvbiBpcyBiZWluZyBkZWJ1Z2dlZCwgdGhlIGxpbmUgd2hlcmUgdGhlIGV4Y2VwdGlvbiB3YXNcbiAgIG9yaWdpbmFsbHkgcmFpc2VkIG9yIHByb3BhZ2F0ZWQgaXMgaW5kaWNhdGVkIGJ5IGBgPj5gYCwgaWYgaXRcbiAgIGRpZmZlcnMgZnJvbSB0aGUgY3VycmVudCBsaW5lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSBgYD4+YGAgbWFya2VyLlxuXG5sbCB8IGxvbmdsaXN0XG5cbiAgIExpc3QgYWxsIHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmdW5jdGlvbiBvciBmcmFtZS5cbiAgIEludGVyZXN0aW5nIGxpbmVzIGFyZSBtYXJrZWQgYXMgZm9yIGBgbGlzdGBgLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmEocmdzKVxuXG4gICBQcmludCB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY3VycmVudCBmdW5jdGlvbi5cblxucChyaW50KSBleHByZXNzaW9uXG5cbiAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogaW4gdGhlIGN1cnJlbnQgY29udGV4dCBhbmQgcHJpbnQgaXRzXG4gICB2YWx1ZS5cblxucHAgZXhwcmVzc2lvblxuXG4gICBMaWtlIHRoZSBgYHByaW50YGAgY29tbWFuZCwgZXhjZXB0IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpc1xuICAgcHJldHR5LXByaW50ZWQgdXNpbmcgdGhlIGBgcHByaW50YGAgbW9kdWxlLlxuXG53aGF0aXMgZXhwcmVzc2lvblxuXG4gICBQcmludCB0aGUgdHlwZSBvZiB0aGUgKmV4cHJlc3Npb24qLlxuXG5zb3VyY2UgZXhwcmVzc2lvblxuXG4gICBUcnkgdG8gZ2V0IHNvdXJjZSBjb2RlIGZvciB0aGUgZ2l2ZW4gb2JqZWN0IGFuZCBkaXNwbGF5IGl0LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmRpc3BsYXkgW2V4cHJlc3Npb25dXG5cbiAgIERpc3BsYXkgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlmIGl0IGNoYW5nZWQsIGVhY2ggdGltZVxuICAgZXhlY3V0aW9uIHN0b3BzIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuXG4gICBXaXRob3V0IGV4cHJlc3Npb24sIGxpc3QgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSBjdXJyZW50XG4gICBmcmFtZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG51bmRpc3BsYXkgW2V4cHJlc3Npb25dXG5cbiAgIERvIG5vdCBkaXNwbGF5IHRoZSBleHByZXNzaW9uIGFueSBtb3JlIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuICAgV2l0aG91dCBleHByZXNzaW9uLCBjbGVhciBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlIGN1cnJlbnRcbiAgIGZyYW1lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmludGVyYWN0XG5cbiAgIFN0YXJ0IGFuIGludGVyYXRpdmUgaW50ZXJwcmV0ZXIgKHVzaW5nIHRoZSBgYGNvZGVgYCBtb2R1bGUpIHdob3NlXG4gICBnbG9iYWwgbmFtZXNwYWNlIGNvbnRhaW5zIGFsbCB0aGUgKGdsb2JhbCBhbmQgbG9jYWwpIG5hbWVzIGZvdW5kIGluXG4gICB0aGUgY3VycmVudCBzY29wZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5hbGlhcyBbbmFtZSBbY29tbWFuZF1dXG5cbiAgIENyZWF0ZSBhbiBhbGlhcyBjYWxsZWQgKm5hbWUqIHRoYXQgZXhlY3V0ZXMgKmNvbW1hbmQqLiAgVGhlIGNvbW1hbmRcbiAgIG11c3QgKm5vdCogYmUgZW5jbG9zZWQgaW4gcXVvdGVzLiAgUmVwbGFjZWFibGUgcGFyYW1ldGVycyBjYW4gYmVcbiAgIGluZGljYXRlZCBieSBgYCUxYGAsIGBgJTJgYCwgYW5kIHNvIG9uLCB3aGlsZSBgYCUqYGAgaXMgcmVwbGFjZWQgYnlcbiAgIGFsbCB0aGUgcGFyYW1ldGVycy4gSWYgbm8gY29tbWFuZCBpcyBnaXZlbiwgdGhlIGN1cnJlbnQgYWxpYXMgZm9yXG4gICAqbmFtZSogaXMgc2hvd24uIElmIG5vIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIGFsbCBhbGlhc2VzIGFyZSBsaXN0ZWQuXG5cbiAgIEFsaWFzZXMgbWF5IGJlIG5lc3RlZCBhbmQgY2FuIGNvbnRhaW4gYW55dGhpbmcgdGhhdCBjYW4gYmUgbGVnYWxseVxuICAgdHlwZWQgYXQgdGhlIHBkYiBwcm9tcHQuICBOb3RlIHRoYXQgaW50ZXJuYWwgcGRiIGNvbW1hbmRzICpjYW4qIGJlXG4gICBvdmVycmlkZGVuIGJ5IGFsaWFzZXMuICBTdWNoIGEgY29tbWFuZCBpcyB0aGVuIGhpZGRlbiB1bnRpbCB0aGVcbiAgIGFsaWFzIGlzIHJlbW92ZWQuICBBbGlhc2luZyBpcyByZWN1cnNpdmVseSBhcHBsaWVkIHRvIHRoZSBmaXJzdFxuICAgd29yZCBvZiB0aGUgY29tbWFuZCBsaW5lOyBhbGwgb3RoZXIgd29yZHMgaW4gdGhlIGxpbmUgYXJlIGxlZnRcbiAgIGFsb25lLlxuXG4gICBBcyBhbiBleGFtcGxlLCBoZXJlIGFyZSB0d28gdXNlZnVsIGFsaWFzZXMgKGVzcGVjaWFsbHkgd2hlbiBwbGFjZWRcbiAgIGluIHRoZSBgYC5wZGJyY2BgIGZpbGUpOlxuXG4gICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyAodXNhZ2UgInBpIGNsYXNzSW5zdCIpXG4gICAgICBhbGlhcyBwaSBmb3IgayBpbiAlMS5fX2RpY3RfXy5rZXlzKCk6IHByaW50KCIlMS4iLGssIj0iLCUxLl9fZGljdF9fW2tdKVxuICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgaW4gc2VsZlxuICAgICAgYWxpYXMgcHMgcGkgc2VsZlxuXG51bmFsaWFzIG5hbWVcblxuICAgRGVsZXRlIHRoZSBzcGVjaWZpZWQgYWxpYXMuXG5cbiEgc3RhdGVtZW50XG5cbiAgIEV4ZWN1dGUgdGhlIChvbmUtbGluZSkgKnN0YXRlbWVudCogaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnRcbiAgIHN0YWNrIGZyYW1lLiBUaGUgZXhjbGFtYXRpb24gcG9pbnQgY2FuIGJlIG9taXR0ZWQgdW5sZXNzIHRoZSBmaXJzdFxuICAgd29yZCBvZiB0aGUgc3RhdGVtZW50IHJlc2VtYmxlcyBhIGRlYnVnZ2VyIGNvbW1hbmQuICBUbyBzZXQgYVxuICAgZ2xvYmFsIHZhcmlhYmxlLCB5b3UgY2FuIHByZWZpeCB0aGUgYXNzaWdubWVudCBjb21tYW5kIHdpdGggYVxuICAgYGBnbG9iYWxgYCBzdGF0ZW1lbnQgb24gdGhlIHNhbWUgbGluZSwgZS5nLjpcblxuICAgICAgKFBkYikgZ2xvYmFsIGxpc3Rfb3B0aW9uczsgbGlzdF9vcHRpb25zID0gW1wnLWxcJ11cbiAgICAgIChQZGIpXG5cbnJ1biBbYXJncyAuLi5dXG5yZXN0YXJ0IFthcmdzIC4uLl1cblxuICAgUmVzdGFydCB0aGUgZGVidWdnZWQgUHl0aG9uIHByb2dyYW0uICBJZiBhbiBhcmd1bWVudCBpcyBzdXBwbGllZCxcbiAgIGl0IGlzIHNwbGl0IHdpdGggYGBzaGxleGBgIGFuZCB0aGUgcmVzdWx0IGlzIHVzZWQgYXMgdGhlIG5ld1xuICAgYGBzeXMuYXJndmBgLiBIaXN0b3J5LCBicmVha3BvaW50cywgYWN0aW9ucyBhbmQgZGVidWdnZXIgb3B0aW9uc1xuICAgYXJlIHByZXNlcnZlZC4gYGByZXN0YXJ0YGAgaXMgYW4gYWxpYXMgZm9yIGBgcnVuYGAuXG5cbnEodWl0KVxuXG4gICBRdWl0IGZyb20gdGhlIGRlYnVnZ2VyLiAgVGhlIHByb2dyYW0gYmVpbmcgZXhlY3V0ZWQgaXMgYWJvcnRlZC5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBXaGV0aGVyIGEgZnJhbWUgaXMgY29uc2lkZXJlZCB0byBvcmlnaW5hdGUgaW4gYSBjZXJ0YWluIG1vZHVsZSBpc1xuICAgIGRldGVybWluZWQgYnkgdGhlIGBgX19uYW1lX19gYCBpbiB0aGUgZnJhbWUgZ2xvYmFscy5cbicsCi0gJ2RlbCc6ICdcblRoZSBgYGRlbGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGRlbF9zdG10IDo6PSAiZGVsIiB0YXJnZXRfbGlzdFxuXG5EZWxldGlvbiBpcyByZWN1cnNpdmVseSBkZWZpbmVkIHZlcnkgc2ltaWxhciB0byB0aGUgd2F5IGFzc2lnbm1lbnQgaXNcbmRlZmluZWQuIFJhdGhlciB0aGFuIHNwZWxsaW5nIGl0IG91dCBpbiBmdWxsIGRldGFpbHMsIGhlcmUgYXJlIHNvbWVcbmhpbnRzLlxuXG5EZWxldGlvbiBvZiBhIHRhcmdldCBsaXN0IHJlY3Vyc2l2ZWx5IGRlbGV0ZXMgZWFjaCB0YXJnZXQsIGZyb20gbGVmdFxudG8gcmlnaHQuXG5cbkRlbGV0aW9uIG9mIGEgbmFtZSByZW1vdmVzIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBmcm9tIHRoZSBsb2NhbCBvclxuZ2xvYmFsIG5hbWVzcGFjZSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5hbWUgb2NjdXJzIGluIGEgYGBnbG9iYWxgYFxuc3RhdGVtZW50IGluIHRoZSBzYW1lIGNvZGUgYmxvY2suICBJZiB0aGUgbmFtZSBpcyB1bmJvdW5kLCBhXG5gYE5hbWVFcnJvcmBgIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC5cblxuRGVsZXRpb24gb2YgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHN1YnNjcmlwdGlvbnMgYW5kIHNsaWNpbmdzIGlzIHBhc3NlZFxudG8gdGhlIHByaW1hcnkgb2JqZWN0IGludm9sdmVkOyBkZWxldGlvbiBvZiBhIHNsaWNpbmcgaXMgaW4gZ2VuZXJhbFxuZXF1aXZhbGVudCB0byBhc3NpZ25tZW50IG9mIGFuIGVtcHR5IHNsaWNlIG9mIHRoZSByaWdodCB0eXBlIChidXQgZXZlblxudGhpcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBzbGljZWQgb2JqZWN0KS5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMi5cbicsCisgJ2N1c3RvbWl6YXRpb24nOiAnXG5CYXNpYyBjdXN0b21pemF0aW9uXG4qKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICBgYF9fbmV3X18oKWBgIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mIGBgX19uZXdfXygpYGAgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5XG4gICBhbiBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIHVzaW5nXG4gICBgYHN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pYGAgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgIGBgX19pbml0X18oc2VsZlssIC4uLl0pYGAsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICBgYF9fbmV3X18oKWBgIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjcmVhdGVkLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgIGBgX19pbml0X18oKWBgIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kLFxuICAgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mXG4gICB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICBgYEJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pYGAuICBBcyBhIHNwZWNpYWwgY29uc3RyYWludFxuICAgb24gY29uc3RydWN0b3JzLCBubyB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQ7IGRvaW5nIHNvIHdpbGwgY2F1c2UgYVxuICAgYGBUeXBlRXJyb3JgYCB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSBgYF9fZGVsX18oKWBgIG1ldGhvZCxcbiAgIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19kZWxfXygpYGAgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseVxuICAgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlXG4gICBpbnN0YW5jZS4gIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvclxuICAgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiBgYGRlbCB4YGAgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCBgYHguX19kZWxfXygpYGAgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciBgYHhgYCBieSBvbmUsIGFuZCB0aGUgbGF0dGVyXG4gICAgIGlzIG9ubHkgY2FsbGVkIHdoZW4gYGB4YGBcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWVcbiAgICAgY29tbW9uIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuXG4gICAgIG9iamVjdCBmcm9tIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuXG4gICAgIG9iamVjdHMgKGUuZy4sIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoXG4gICAgIHBhcmVudCBhbmQgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZVxuICAgICBzdGFjayBmcmFtZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFja1xuICAgICBzdG9yZWQgaW4gYGBzeXMuZXhjX2luZm8oKVsyXWBgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yXG4gICAgIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuXG4gICAgIHVuaGFuZGxlZCBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBsYXR0ZXIgdHdvIHNpdHVhdGlvbnMgY2FuIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgYGBOb25lYGAgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC4gQ2lyY3VsYXIgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmVcbiAgICAgZGV0ZWN0ZWQgd2hlbiB0aGUgb3B0aW9uIGN5Y2xlIGRldGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5XG4gICAgIGRlZmF1bHQpLCBidXQgY2FuIG9ubHkgYmUgY2xlYW5lZCB1cCBpZiB0aGVyZSBhcmUgbm8gUHl0aG9uLVxuICAgICBsZXZlbCBgYF9fZGVsX18oKWBgIG1ldGhvZHMgaW52b2x2ZWQuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uXG4gICAgIGZvciB0aGUgYGBnY2BgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjeWNsZSBkZXRlY3RvcixcbiAgICAgcGFydGljdWxhcmx5IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBnYXJiYWdlYGAgdmFsdWUuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZyB0aGVpciBleGVjdXRpb25cbiAgICAgYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0byBgYHN5cy5zdGRlcnJgYCBpbnN0ZWFkLlxuICAgICBBbHNvLCB3aGVuIGBgX19kZWxfXygpYGAgaXMgaW52b2tlZCBpbiByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZ1xuICAgICBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXJcbiAgICAgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlXG4gICAgIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyB0b3JuIGRvd24gKGUuZy4gdGhlXG4gICAgIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpcyByZWFzb24sIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkIHRvIG1haW50YWluXG4gICAgIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LCBQeXRob25cbiAgICAgZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgcmVwcigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGVcbiAgICJvZmZpY2lhbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSxcbiAgIHRoaXMgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZFxuICAgdG8gcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgIGBgPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPmBgIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyBgYF9fcmVwcl9fKClgYFxuICAgYnV0IG5vdCBgYF9fc3RyX18oKWBgLCB0aGVuIGBgX19yZXByX18oKWBgIGlzIGFsc28gdXNlZCB3aGVuIGFuXG4gICAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpc1xuICAgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYHN0cigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gYW5kIGJ5IHRoZSBgYHByaW50KClgYFxuICAgZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gIFRoaXMgZGlmZmVycyBmcm9tIGBgX19yZXByX18oKWBgIGluIHRoYXQgaXQgZG9lcyBub3QgaGF2ZVxuICAgdG8gYmUgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYSBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZVxuICAgcmVwcmVzZW50YXRpb24gbWF5IGJlIHVzZWQgaW5zdGVhZC4gVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGFcbiAgIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGBgYnl0ZXMoKWBgIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSBgYGJ5dGVzYGAgb2JqZWN0LlxuXG5vYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYGZvcm1hdCgpYGAgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgYGBmb3JtYXQoKWBgIG1ldGhvZCBvZiBjbGFzcyBgYHN0cmBgKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXNcbiAgIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpcyB1cFxuICAgdG8gdGhlIHR5cGUgaW1wbGVtZW50aW5nIGBgX19mb3JtYXRfXygpYGAsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzXG4gICB3aWxsIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yXG4gICB1c2UgYSBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG5vYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgaXMgYXNcbiAgIGZvbGxvd3M6IGBgeDx5YGAgY2FsbHMgYGB4Ll9fbHRfXyh5KWBgLCBgYHg8PXlgYCBjYWxsc1xuICAgYGB4Ll9fbGVfXyh5KWBgLCBgYHg9PXlgYCBjYWxscyBgYHguX19lcV9fKHkpYGAsIGBgeCE9eWBgIGNhbGxzXG4gICBgYHguX19uZV9fKHkpYGAsIGBgeD55YGAgY2FsbHMgYGB4Ll9fZ3RfXyh5KWBgLCBhbmQgYGB4Pj15YGAgY2FsbHNcbiAgIGBgeC5fX2dlX18oeSlgYC5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvblxuICAgYGBOb3RJbXBsZW1lbnRlZGBgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhXG4gICBnaXZlbiBwYWlyIG9mIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgYGBGYWxzZWBgIGFuZCBgYFRydWVgYCBhcmVcbiAgIHJldHVybmVkIGZvciBhIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW5cbiAgIHJldHVybiBhbnkgdmFsdWUsIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYVxuICAgQm9vbGVhbiBjb250ZXh0IChlLmcuLCBpbiB0aGUgY29uZGl0aW9uIG9mIGFuIGBgaWZgYCBzdGF0ZW1lbnQpLFxuICAgUHl0aG9uIHdpbGwgY2FsbCBgYGJvb2woKWBgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdFxuICAgaXMgdHJ1ZSBvciBmYWxzZS5cblxuICAgVGhlcmUgYXJlIG5vIGltcGxpZWQgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMuXG4gICBUaGUgdHJ1dGggb2YgYGB4PT15YGAgZG9lcyBub3QgaW1wbHkgdGhhdCBgYHghPXlgYCBpcyBmYWxzZS5cbiAgIEFjY29yZGluZ2x5LCB3aGVuIGRlZmluaW5nIGBgX19lcV9fKClgYCwgb25lIHNob3VsZCBhbHNvIGRlZmluZVxuICAgYGBfX25lX18oKWBgIHNvIHRoYXQgdGhlIG9wZXJhdG9ycyB3aWxsIGJlaGF2ZSBhcyBleHBlY3RlZC4gIFNlZVxuICAgdGhlIHBhcmFncmFwaCBvbiBgYF9faGFzaF9fKClgYCBmb3Igc29tZSBpbXBvcnRhbnQgbm90ZXMgb25cbiAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uXG4gICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cblxuICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAodG8gYmUgdXNlZFxuICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0IHRoZSByaWdodFxuICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgYGBfX2x0X18oKWBgIGFuZCBgYF9fZ3RfXygpYGAgYXJlIGVhY2hcbiAgIG90aGVyXCdzIHJlZmxlY3Rpb24sIGBgX19sZV9fKClgYCBhbmQgYGBfX2dlX18oKWBgIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCBhbmQgYGBfX2VxX18oKWBgIGFuZCBgYF9fbmVfXygpYGAgYXJlIHRoZWlyIG93blxuICAgcmVmbGVjdGlvbi5cblxuICAgQXJndW1lbnRzIHRvIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGFyZSBuZXZlciBjb2VyY2VkLlxuXG4gICBUbyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290XG4gICBvcGVyYXRpb24sIHNlZSBgYGZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpYGAuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gYGBoYXNoKClgYCBhbmQgZm9yIG9wZXJhdGlvbnMgb25cbiAgIG1lbWJlcnMgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyBgYHNldGBgLCBgYGZyb3plbnNldGBgLCBhbmRcbiAgIGBgZGljdGBgLiAgYGBfX2hhc2hfXygpYGAgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHlcbiAgIHJlcXVpcmVkIHByb3BlcnR5IGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWVcbiAgIGhhc2ggdmFsdWU7IGl0IGlzIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmdcbiAgIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2ggdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXRcbiAgIGFsc28gcGxheSBhIHBhcnQgaW4gY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiBgYF9fZXFfXygpYGAgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhIGBgX19oYXNoX18oKWBgIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXNcbiAgIGBgX19lcV9fKClgYCBidXQgbm90IGBgX19oYXNoX18oKWBgLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlXG4gICB1c2FibGUgYXMgaXRlbXMgaW4gaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG11dGFibGUgb2JqZWN0cyBhbmQgaW1wbGVtZW50cyBhbiBgYF9fZXFfXygpYGAgbWV0aG9kLCBpdCBzaG91bGRcbiAgIG5vdCBpbXBsZW1lbnQgYGBfX2hhc2hfXygpYGAsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZVxuICAgY29sbGVjdGlvbnMgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlXG4gICBvYmplY3RcJ3MgaGFzaCB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgYGBfX2VxX18oKWBgIGFuZCBgYF9faGFzaF9fKClgYCBtZXRob2RzXG4gICBieSBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGhcbiAgIHRoZW1zZWx2ZXMpIGFuZCBgYHguX19oYXNoX18oKWBgIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdmFsdWUgc3VjaFxuICAgdGhhdCBgYHggPT0geWBgIGltcGxpZXMgYm90aCB0aGF0IGBgeCBpcyB5YGAgYW5kIGBgaGFzaCh4KSA9PVxuICAgaGFzaCh5KWBgLlxuXG4gICBDbGFzc2VzIHdoaWNoIGluaGVyaXQgYSBgYF9faGFzaF9fKClgYCBtZXRob2QgZnJvbSBhIHBhcmVudCBjbGFzc1xuICAgYnV0IGNoYW5nZSB0aGUgbWVhbmluZyBvZiBgYF9fZXFfXygpYGAgc3VjaCB0aGF0IHRoZSBoYXNoIHZhbHVlXG4gICByZXR1cm5lZCBpcyBubyBsb25nZXIgYXBwcm9wcmlhdGUgKGUuZy4gYnkgc3dpdGNoaW5nIHRvIGEgdmFsdWUtXG4gICBiYXNlZCBjb25jZXB0IG9mIGVxdWFsaXR5IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgaWRlbnRpdHkgYmFzZWRcbiAgIGVxdWFsaXR5KSBjYW4gZXhwbGljaXRseSBmbGFnIHRoZW1zZWx2ZXMgYXMgYmVpbmcgdW5oYXNoYWJsZSBieVxuICAgc2V0dGluZyBgYF9faGFzaF9fID0gTm9uZWBgIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLiBEb2luZyBzbyBtZWFuc1xuICAgdGhhdCBub3Qgb25seSB3aWxsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MgcmFpc2UgYW4gYXBwcm9wcmlhdGVcbiAgIGBgVHlwZUVycm9yYGAgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSxcbiAgIGJ1dCB0aGV5IHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhcyB1bmhhc2hhYmxlIHdoZW5cbiAgIGNoZWNraW5nIGBgaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKWBgICh1bmxpa2UgY2xhc3Nlc1xuICAgd2hpY2ggZGVmaW5lIHRoZWlyIG93biBgYF9faGFzaF9fKClgYCB0byBleHBsaWNpdGx5IHJhaXNlXG4gICBgYFR5cGVFcnJvcmBgKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyBgYF9fZXFfXygpYGAgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgYGBfX2hhc2hfXygpYGAgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlXG4gICBpbnRlcnByZXRlciBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgYGBfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fYGAuIE90aGVyd2lzZSB0aGUgaW5oZXJpdGFuY2Ugb2ZcbiAgIGBgX19oYXNoX18oKWBgIHdpbGwgYmUgYmxvY2tlZCwganVzdCBhcyBpZiBgYF9faGFzaF9fYGAgaGFkIGJlZW5cbiAgIGV4cGxpY2l0bHkgc2V0IHRvIGBgTm9uZWBgLlxuXG4gICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgYGBfX2hhc2hfXygpYGAgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lXG4gICAgIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSByYW5kb20gdmFsdWUuXG4gICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvblxuICAgICBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZlxuICAgICBQeXRob24uVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhIGRlbmlhbC1cbiAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZVxuICAgICB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBpbnNlcnRpb24sIE8obl4yKSBjb21wbGV4aXR5LlxuICAgICBTZWUgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvclxuICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiBvcmRlciBvZlxuICAgICBkaWN0cywgc2V0cyBhbmQgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyIG1hZGUgZ3VhcmFudGVlc1xuICAgICBhYm91dCB0aGlzIG9yZGVyaW5nIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuIDMyLWJpdCBhbmRcbiAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gYGBQWVRIT05IQVNIU0VFRGBgLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICBgYGJvb2woKWBgOyBzaG91bGQgcmV0dXJuIGBgRmFsc2VgYCBvciBgYFRydWVgYC4gIFdoZW4gdGhpcyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCBgYF9fbGVuX18oKWBgIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZVxuICAgb2JqZWN0IGlzIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzXG4gICBkZWZpbmVzIG5laXRoZXIgYGBfX2xlbl9fKClgYCBub3IgYGBfX2Jvb2xfXygpYGAsIGFsbCBpdHMgaW5zdGFuY2VzXG4gICBhcmUgY29uc2lkZXJlZCB0cnVlLlxuJywKKyAnZGVidWdnZXInOiAnXG5gYHBkYmBgIC0tLSBUaGUgUHl0aG9uIERlYnVnZ2VyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBtb2R1bGUgYGBwZGJgYCBkZWZpbmVzIGFuIGludGVyYWN0aXZlIHNvdXJjZSBjb2RlIGRlYnVnZ2VyIGZvclxuUHl0aG9uIHByb2dyYW1zLiAgSXQgc3VwcG9ydHMgc2V0dGluZyAoY29uZGl0aW9uYWwpIGJyZWFrcG9pbnRzIGFuZFxuc2luZ2xlIHN0ZXBwaW5nIGF0IHRoZSBzb3VyY2UgbGluZSBsZXZlbCwgaW5zcGVjdGlvbiBvZiBzdGFjayBmcmFtZXMsXG5zb3VyY2UgY29kZSBsaXN0aW5nLCBhbmQgZXZhbHVhdGlvbiBvZiBhcmJpdHJhcnkgUHl0aG9uIGNvZGUgaW4gdGhlXG5jb250ZXh0IG9mIGFueSBzdGFjayBmcmFtZS4gIEl0IGFsc28gc3VwcG9ydHMgcG9zdC1tb3J0ZW0gZGVidWdnaW5nXG5hbmQgY2FuIGJlIGNhbGxlZCB1bmRlciBwcm9ncmFtIGNvbnRyb2wuXG5cblRoZSBkZWJ1Z2dlciBpcyBleHRlbnNpYmxlIC0tIGl0IGlzIGFjdHVhbGx5IGRlZmluZWQgYXMgdGhlIGNsYXNzXG5gYFBkYmBgLiBUaGlzIGlzIGN1cnJlbnRseSB1bmRvY3VtZW50ZWQgYnV0IGVhc2lseSB1bmRlcnN0b29kIGJ5XG5yZWFkaW5nIHRoZSBzb3VyY2UuICBUaGUgZXh0ZW5zaW9uIGludGVyZmFjZSB1c2VzIHRoZSBtb2R1bGVzIGBgYmRiYGBcbmFuZCBgYGNtZGBgLlxuXG5UaGUgZGVidWdnZXJcJ3MgcHJvbXB0IGlzIGBgKFBkYilgYC4gVHlwaWNhbCB1c2FnZSB0byBydW4gYSBwcm9ncmFtXG51bmRlciBjb250cm9sIG9mIHRoZSBkZWJ1Z2dlciBpczpcblxuICAgPj4+IGltcG9ydCBwZGJcbiAgID4+PiBpbXBvcnQgbXltb2R1bGVcbiAgID4+PiBwZGIucnVuKFwnbXltb2R1bGUudGVzdCgpXCcpXG4gICA+IDxzdHJpbmc+KDApPygpXG4gICAoUGRiKSBjb250aW51ZVxuICAgPiA8c3RyaW5nPigxKT8oKVxuICAgKFBkYikgY29udGludWVcbiAgIE5hbWVFcnJvcjogXCdzcGFtXCdcbiAgID4gPHN0cmluZz4oMSk/KClcbiAgIChQZGIpXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFRhYi1jb21wbGV0aW9uIHZpYSB0aGUgYGByZWFkbGluZWBgIG1vZHVsZSBpc1xuYXZhaWxhYmxlIGZvciBjb21tYW5kcyBhbmQgY29tbWFuZCBhcmd1bWVudHMsIGUuZy4gdGhlIGN1cnJlbnQgZ2xvYmFsXG5hbmQgbG9jYWwgbmFtZXMgYXJlIG9mZmVyZWQgYXMgYXJndW1lbnRzIG9mIHRoZSBgYHByaW50YGAgY29tbWFuZC5cblxuYGBwZGIucHlgYCBjYW4gYWxzbyBiZSBpbnZva2VkIGFzIGEgc2NyaXB0IHRvIGRlYnVnIG90aGVyIHNjcmlwdHMuXG5Gb3IgZXhhbXBsZTpcblxuICAgcHl0aG9uMyAtbSBwZGIgbXlzY3JpcHQucHlcblxuV2hlbiBpbnZva2VkIGFzIGEgc2NyaXB0LCBwZGIgd2lsbCBhdXRvbWF0aWNhbGx5IGVudGVyIHBvc3QtbW9ydGVtXG5kZWJ1Z2dpbmcgaWYgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQgZXhpdHMgYWJub3JtYWxseS4gIEFmdGVyIHBvc3QtXG5tb3J0ZW0gZGVidWdnaW5nIChvciBhZnRlciBub3JtYWwgZXhpdCBvZiB0aGUgcHJvZ3JhbSksIHBkYiB3aWxsXG5yZXN0YXJ0IHRoZSBwcm9ncmFtLiAgQXV0b21hdGljIHJlc3RhcnRpbmcgcHJlc2VydmVzIHBkYlwncyBzdGF0ZSAoc3VjaFxuYXMgYnJlYWtwb2ludHMpIGFuZCBpbiBtb3N0IGNhc2VzIGlzIG1vcmUgdXNlZnVsIHRoYW4gcXVpdHRpbmcgdGhlXG5kZWJ1Z2dlciB1cG9uIHByb2dyYW1cJ3MgZXhpdC5cblxuTmV3IGluIHZlcnNpb24gMy4yOiBgYHBkYi5weWBgIG5vdyBhY2NlcHRzIGEgYGAtY2BgIG9wdGlvbiB0aGF0XG5leGVjdXRlcyBjb21tYW5kcyBhcyBpZiBnaXZlbiBpbiBhIGBgLnBkYnJjYGAgZmlsZSwgc2VlICpEZWJ1Z2dlclxuQ29tbWFuZHMqLlxuXG5UaGUgdHlwaWNhbCB1c2FnZSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlciBmcm9tIGEgcnVubmluZyBwcm9ncmFtIGlzXG50byBpbnNlcnRcblxuICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpXG5cbmF0IHRoZSBsb2NhdGlvbiB5b3Ugd2FudCB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlci4gIFlvdSBjYW4gdGhlblxuc3RlcCB0aHJvdWdoIHRoZSBjb2RlIGZvbGxvd2luZyB0aGlzIHN0YXRlbWVudCwgYW5kIGNvbnRpbnVlIHJ1bm5pbmdcbndpdGhvdXQgdGhlIGRlYnVnZ2VyIHVzaW5nIHRoZSBgYGNvbnRpbnVlYGAgY29tbWFuZC5cblxuVGhlIHR5cGljYWwgdXNhZ2UgdG8gaW5zcGVjdCBhIGNyYXNoZWQgcHJvZ3JhbSBpczpcblxuICAgPj4+IGltcG9ydCBwZGJcbiAgID4+PiBpbXBvcnQgbXltb2R1bGVcbiAgID4+PiBteW1vZHVsZS50ZXN0KClcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gP1xuICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSA0LCBpbiB0ZXN0XG4gICAgICAgdGVzdDIoKVxuICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSAzLCBpbiB0ZXN0MlxuICAgICAgIHByaW50KHNwYW0pXG4gICBOYW1lRXJyb3I6IHNwYW1cbiAgID4+PiBwZGIucG0oKVxuICAgPiAuL215bW9kdWxlLnB5KDMpdGVzdDIoKVxuICAgLT4gcHJpbnQoc3BhbSlcbiAgIChQZGIpXG5cblRoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczsgZWFjaCBlbnRlcnMgdGhlIGRlYnVnZ2VyXG5pbiBhIHNsaWdodGx5IGRpZmZlcmVudCB3YXk6XG5cbnBkYi5ydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuXG4gICBFeGVjdXRlIHRoZSAqc3RhdGVtZW50KiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlIG9iamVjdCkgdW5kZXJcbiAgIGRlYnVnZ2VyIGNvbnRyb2wuICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnMgYmVmb3JlIGFueSBjb2RlIGlzXG4gICBleGVjdXRlZDsgeW91IGNhbiBzZXQgYnJlYWtwb2ludHMgYW5kIHR5cGUgYGBjb250aW51ZWBgLCBvciB5b3UgY2FuXG4gICBzdGVwIHRocm91Z2ggdGhlIHN0YXRlbWVudCB1c2luZyBgYHN0ZXBgYCBvciBgYG5leHRgYCAoYWxsIHRoZXNlXG4gICBjb21tYW5kcyBhcmUgZXhwbGFpbmVkIGJlbG93KS4gIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogYW5kICpsb2NhbHMqXG4gICBhcmd1bWVudHMgc3BlY2lmeSB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhlIGNvZGUgaXMgZXhlY3V0ZWQ7IGJ5XG4gICBkZWZhdWx0IHRoZSBkaWN0aW9uYXJ5IG9mIHRoZSBtb2R1bGUgYGBfX21haW5fX2BgIGlzIHVzZWQuICAoU2VlXG4gICB0aGUgZXhwbGFuYXRpb24gb2YgdGhlIGJ1aWx0LWluIGBgZXhlYygpYGAgb3IgYGBldmFsKClgYFxuICAgZnVuY3Rpb25zLilcblxucGRiLnJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcblxuICAgRXZhbHVhdGUgdGhlICpleHByZXNzaW9uKiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlIG9iamVjdClcbiAgIHVuZGVyIGRlYnVnZ2VyIGNvbnRyb2wuICBXaGVuIGBgcnVuZXZhbCgpYGAgcmV0dXJucywgaXQgcmV0dXJucyB0aGVcbiAgIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uLiAgT3RoZXJ3aXNlIHRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0b1xuICAgYGBydW4oKWBgLlxuXG5wZGIucnVuY2FsbChmdW5jdGlvbiwgKmFyZ3MsICoqa3dkcylcblxuICAgQ2FsbCB0aGUgKmZ1bmN0aW9uKiAoYSBmdW5jdGlvbiBvciBtZXRob2Qgb2JqZWN0LCBub3QgYSBzdHJpbmcpXG4gICB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuICBXaGVuIGBgcnVuY2FsbCgpYGAgcmV0dXJucywgaXQgcmV0dXJuc1xuICAgd2hhdGV2ZXIgdGhlIGZ1bmN0aW9uIGNhbGwgcmV0dXJuZWQuICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnNcbiAgIGFzIHNvb24gYXMgdGhlIGZ1bmN0aW9uIGlzIGVudGVyZWQuXG5cbnBkYi5zZXRfdHJhY2UoKVxuXG4gICBFbnRlciB0aGUgZGVidWdnZXIgYXQgdGhlIGNhbGxpbmcgc3RhY2sgZnJhbWUuICBUaGlzIGlzIHVzZWZ1bCB0b1xuICAgaGFyZC1jb2RlIGEgYnJlYWtwb2ludCBhdCBhIGdpdmVuIHBvaW50IGluIGEgcHJvZ3JhbSwgZXZlbiBpZiB0aGVcbiAgIGNvZGUgaXMgbm90IG90aGVyd2lzZSBiZWluZyBkZWJ1Z2dlZCAoZS5nLiB3aGVuIGFuIGFzc2VydGlvblxuICAgZmFpbHMpLlxuXG5wZGIucG9zdF9tb3J0ZW0odHJhY2ViYWNrPU5vbmUpXG5cbiAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgZ2l2ZW4gKnRyYWNlYmFjayogb2JqZWN0LiAgSWYgbm9cbiAgICp0cmFjZWJhY2sqIGlzIGdpdmVuLCBpdCB1c2VzIHRoZSBvbmUgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0IGlzXG4gICBjdXJyZW50bHkgYmVpbmcgaGFuZGxlZCAoYW4gZXhjZXB0aW9uIG11c3QgYmUgYmVpbmcgaGFuZGxlZCBpZiB0aGVcbiAgIGRlZmF1bHQgaXMgdG8gYmUgdXNlZCkuXG5cbnBkYi5wbSgpXG5cbiAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgdHJhY2ViYWNrIGZvdW5kIGluXG4gICBgYHN5cy5sYXN0X3RyYWNlYmFja2BgLlxuXG5UaGUgYGBydW4qYGAgZnVuY3Rpb25zIGFuZCBgYHNldF90cmFjZSgpYGAgYXJlIGFsaWFzZXMgZm9yXG5pbnN0YW50aWF0aW5nIHRoZSBgYFBkYmBgIGNsYXNzIGFuZCBjYWxsaW5nIHRoZSBtZXRob2Qgb2YgdGhlIHNhbWVcbm5hbWUuICBJZiB5b3Ugd2FudCB0byBhY2Nlc3MgZnVydGhlciBmZWF0dXJlcywgeW91IGhhdmUgdG8gZG8gdGhpc1xueW91cnNlbGY6XG5cbmNsYXNzIGNsYXNzIHBkYi5QZGIoY29tcGxldGVrZXk9XCd0YWJcJywgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHNraXA9Tm9uZSwgbm9zaWdpbnQ9RmFsc2UpXG5cbiAgIGBgUGRiYGAgaXMgdGhlIGRlYnVnZ2VyIGNsYXNzLlxuXG4gICBUaGUgKmNvbXBsZXRla2V5KiwgKnN0ZGluKiBhbmQgKnN0ZG91dCogYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlXG4gICB1bmRlcmx5aW5nIGBgY21kLkNtZGBgIGNsYXNzOyBzZWUgdGhlIGRlc2NyaXB0aW9uIHRoZXJlLlxuXG4gICBUaGUgKnNraXAqIGFyZ3VtZW50LCBpZiBnaXZlbiwgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiBnbG9iLXN0eWxlXG4gICBtb2R1bGUgbmFtZSBwYXR0ZXJucy4gIFRoZSBkZWJ1Z2dlciB3aWxsIG5vdCBzdGVwIGludG8gZnJhbWVzIHRoYXRcbiAgIG9yaWdpbmF0ZSBpbiBhIG1vZHVsZSB0aGF0IG1hdGNoZXMgb25lIG9mIHRoZXNlIHBhdHRlcm5zLiBbMV1cblxuICAgQnkgZGVmYXVsdCwgUGRiIHNldHMgYSBoYW5kbGVyIGZvciB0aGUgU0lHSU5UIHNpZ25hbCAod2hpY2ggaXMgc2VudFxuICAgd2hlbiB0aGUgdXNlciBwcmVzc2VzIEN0cmwtQyBvbiB0aGUgY29uc29sZSkgd2hlbiB5b3UgZ2l2ZSBhXG4gICBgYGNvbnRpbnVlYGAgY29tbWFuZC4gVGhpcyBhbGxvd3MgeW91IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyXG4gICBhZ2FpbiBieSBwcmVzc2luZyBDdHJsLUMuICBJZiB5b3Ugd2FudCBQZGIgbm90IHRvIHRvdWNoIHRoZSBTSUdJTlRcbiAgIGhhbmRsZXIsIHNldCAqbm9zaWdpbnQqIHRvdCB0cnVlLlxuXG4gICBFeGFtcGxlIGNhbGwgdG8gZW5hYmxlIHRyYWNpbmcgd2l0aCAqc2tpcCo6XG5cbiAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bXCdkamFuZ28uKlwnXSkuc2V0X3RyYWNlKClcblxuICAgTmV3IGluIHZlcnNpb24gMy4xOiBUaGUgKnNraXAqIGFyZ3VtZW50LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSAqbm9zaWdpbnQqIGFyZ3VtZW50LiAgUHJldmlvdXNseSwgYSBTSUdJTlRcbiAgIGhhbmRsZXIgd2FzIG5ldmVyIHNldCBieSBQZGIuXG5cbiAgIHJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuICAgc2V0X3RyYWNlKClcblxuICAgICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgZnVuY3Rpb25zIGV4cGxhaW5lZCBhYm92ZS5cblxuXG5EZWJ1Z2dlciBDb21tYW5kc1xuPT09PT09PT09PT09PT09PT1cblxuVGhlIGNvbW1hbmRzIHJlY29nbml6ZWQgYnkgdGhlIGRlYnVnZ2VyIGFyZSBsaXN0ZWQgYmVsb3cuICBNb3N0XG5jb21tYW5kcyBjYW4gYmUgYWJicmV2aWF0ZWQgdG8gb25lIG9yIHR3byBsZXR0ZXJzIGFzIGluZGljYXRlZDsgZS5nLlxuYGBoKGVscClgYCBtZWFucyB0aGF0IGVpdGhlciBgYGhgYCBvciBgYGhlbHBgYCBjYW4gYmUgdXNlZCB0byBlbnRlclxudGhlIGhlbHAgY29tbWFuZCAoYnV0IG5vdCBgYGhlYGAgb3IgYGBoZWxgYCwgbm9yIGBgSGBgIG9yIGBgSGVscGBgIG9yXG5gYEhFTFBgYCkuICBBcmd1bWVudHMgdG8gY29tbWFuZHMgbXVzdCBiZSBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZVxuKHNwYWNlcyBvciB0YWJzKS4gIE9wdGlvbmFsIGFyZ3VtZW50cyBhcmUgZW5jbG9zZWQgaW4gc3F1YXJlIGJyYWNrZXRzXG4oYGBbXWBgKSBpbiB0aGUgY29tbWFuZCBzeW50YXg7IHRoZSBzcXVhcmUgYnJhY2tldHMgbXVzdCBub3QgYmUgdHlwZWQuXG5BbHRlcm5hdGl2ZXMgaW4gdGhlIGNvbW1hbmQgc3ludGF4IGFyZSBzZXBhcmF0ZWQgYnkgYSB2ZXJ0aWNhbCBiYXJcbihgYHxgYCkuXG5cbkVudGVyaW5nIGEgYmxhbmsgbGluZSByZXBlYXRzIHRoZSBsYXN0IGNvbW1hbmQgZW50ZXJlZC4gIEV4Y2VwdGlvbjogaWZcbnRoZSBsYXN0IGNvbW1hbmQgd2FzIGEgYGBsaXN0YGAgY29tbWFuZCwgdGhlIG5leHQgMTEgbGluZXMgYXJlIGxpc3RlZC5cblxuQ29tbWFuZHMgdGhhdCB0aGUgZGVidWdnZXIgZG9lc25cJ3QgcmVjb2duaXplIGFyZSBhc3N1bWVkIHRvIGJlIFB5dGhvblxuc3RhdGVtZW50cyBhbmQgYXJlIGV4ZWN1dGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBwcm9ncmFtIGJlaW5nXG5kZWJ1Z2dlZC4gIFB5dGhvbiBzdGF0ZW1lbnRzIGNhbiBhbHNvIGJlIHByZWZpeGVkIHdpdGggYW4gZXhjbGFtYXRpb25cbnBvaW50IChgYCFgYCkuICBUaGlzIGlzIGEgcG93ZXJmdWwgd2F5IHRvIGluc3BlY3QgdGhlIHByb2dyYW0gYmVpbmdcbmRlYnVnZ2VkOyBpdCBpcyBldmVuIHBvc3NpYmxlIHRvIGNoYW5nZSBhIHZhcmlhYmxlIG9yIGNhbGwgYSBmdW5jdGlvbi5cbldoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiBzdWNoIGEgc3RhdGVtZW50LCB0aGUgZXhjZXB0aW9uIG5hbWUgaXNcbnByaW50ZWQgYnV0IHRoZSBkZWJ1Z2dlclwncyBzdGF0ZSBpcyBub3QgY2hhbmdlZC5cblxuVGhlIGRlYnVnZ2VyIHN1cHBvcnRzICphbGlhc2VzKi4gIEFsaWFzZXMgY2FuIGhhdmUgcGFyYW1ldGVycyB3aGljaFxuYWxsb3dzIG9uZSBhIGNlcnRhaW4gbGV2ZWwgb2YgYWRhcHRhYmlsaXR5IHRvIHRoZSBjb250ZXh0IHVuZGVyXG5leGFtaW5hdGlvbi5cblxuTXVsdGlwbGUgY29tbWFuZHMgbWF5IGJlIGVudGVyZWQgb24gYSBzaW5nbGUgbGluZSwgc2VwYXJhdGVkIGJ5XG5gYDs7YGAuICAoQSBzaW5nbGUgYGA7YGAgaXMgbm90IHVzZWQgYXMgaXQgaXMgdGhlIHNlcGFyYXRvciBmb3Jcbm11bHRpcGxlIGNvbW1hbmRzIGluIGEgbGluZSB0aGF0IGlzIHBhc3NlZCB0byB0aGUgUHl0aG9uIHBhcnNlci4pICBOb1xuaW50ZWxsaWdlbmNlIGlzIGFwcGxpZWQgdG8gc2VwYXJhdGluZyB0aGUgY29tbWFuZHM7IHRoZSBpbnB1dCBpcyBzcGxpdFxuYXQgdGhlIGZpcnN0IGBgOztgYCBwYWlyLCBldmVuIGlmIGl0IGlzIGluIHRoZSBtaWRkbGUgb2YgYSBxdW90ZWRcbnN0cmluZy5cblxuSWYgYSBmaWxlIGBgLnBkYnJjYGAgZXhpc3RzIGluIHRoZSB1c2VyXCdzIGhvbWUgZGlyZWN0b3J5IG9yIGluIHRoZVxuY3VycmVudCBkaXJlY3RvcnksIGl0IGlzIHJlYWQgaW4gYW5kIGV4ZWN1dGVkIGFzIGlmIGl0IGhhZCBiZWVuIHR5cGVkXG5hdCB0aGUgZGVidWdnZXIgcHJvbXB0LiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBhbGlhc2VzLiAgSWZcbmJvdGggZmlsZXMgZXhpc3QsIHRoZSBvbmUgaW4gdGhlIGhvbWUgZGlyZWN0b3J5IGlzIHJlYWQgZmlyc3QgYW5kXG5hbGlhc2VzIGRlZmluZWQgdGhlcmUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGxvY2FsIGZpbGUuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IGBgLnBkYnJjYGAgY2FuIG5vdyBjb250YWluIGNvbW1hbmRzIHRoYXRcbmNvbnRpbnVlIGRlYnVnZ2luZywgc3VjaCBhcyBgYGNvbnRpbnVlYGAgb3IgYGBuZXh0YGAuICBQcmV2aW91c2x5LFxudGhlc2UgY29tbWFuZHMgaGFkIG5vIGVmZmVjdC5cblxuaChlbHApIFtjb21tYW5kXVxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBwcmludCB0aGUgbGlzdCBvZiBhdmFpbGFibGUgY29tbWFuZHMuICBXaXRoIGFcbiAgICpjb21tYW5kKiBhcyBhcmd1bWVudCwgcHJpbnQgaGVscCBhYm91dCB0aGF0IGNvbW1hbmQuICBgYGhlbHAgcGRiYGBcbiAgIGRpc3BsYXlzIHRoZSBmdWxsIGRvY3VtZW50YXRpb24gKHRoZSBkb2NzdHJpbmcgb2YgdGhlIGBgcGRiYGBcbiAgIG1vZHVsZSkuICBTaW5jZSB0aGUgKmNvbW1hbmQqIGFyZ3VtZW50IG11c3QgYmUgYW4gaWRlbnRpZmllcixcbiAgIGBgaGVscCBleGVjYGAgbXVzdCBiZSBlbnRlcmVkIHRvIGdldCBoZWxwIG9uIHRoZSBgYCFgYCBjb21tYW5kLlxuXG53KGhlcmUpXG5cbiAgIFByaW50IGEgc3RhY2sgdHJhY2UsIHdpdGggdGhlIG1vc3QgcmVjZW50IGZyYW1lIGF0IHRoZSBib3R0b20uICBBblxuICAgYXJyb3cgaW5kaWNhdGVzIHRoZSBjdXJyZW50IGZyYW1lLCB3aGljaCBkZXRlcm1pbmVzIHRoZSBjb250ZXh0IG9mXG4gICBtb3N0IGNvbW1hbmRzLlxuXG5kKG93bikgW2NvdW50XVxuXG4gICBNb3ZlIHRoZSBjdXJyZW50IGZyYW1lICpjb3VudCogKGRlZmF1bHQgb25lKSBsZXZlbHMgZG93biBpbiB0aGVcbiAgIHN0YWNrIHRyYWNlICh0byBhIG5ld2VyIGZyYW1lKS5cblxudShwKSBbY291bnRdXG5cbiAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyB1cCBpbiB0aGUgc3RhY2tcbiAgIHRyYWNlICh0byBhbiBvbGRlciBmcmFtZSkuXG5cbmIocmVhaykgWyhbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dXVxuXG4gICBXaXRoIGEgKmxpbmVubyogYXJndW1lbnQsIHNldCBhIGJyZWFrIHRoZXJlIGluIHRoZSBjdXJyZW50IGZpbGUuXG4gICBXaXRoIGEgKmZ1bmN0aW9uKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgYXQgdGhlIGZpcnN0IGV4ZWN1dGFibGVcbiAgIHN0YXRlbWVudCB3aXRoaW4gdGhhdCBmdW5jdGlvbi4gIFRoZSBsaW5lIG51bWJlciBtYXkgYmUgcHJlZml4ZWRcbiAgIHdpdGggYSBmaWxlbmFtZSBhbmQgYSBjb2xvbiwgdG8gc3BlY2lmeSBhIGJyZWFrcG9pbnQgaW4gYW5vdGhlclxuICAgZmlsZSAocHJvYmFibHkgb25lIHRoYXQgaGFzblwndCBiZWVuIGxvYWRlZCB5ZXQpLiAgVGhlIGZpbGUgaXNcbiAgIHNlYXJjaGVkIG9uIGBgc3lzLnBhdGhgYC4gIE5vdGUgdGhhdCBlYWNoIGJyZWFrcG9pbnQgaXMgYXNzaWduZWQgYVxuICAgbnVtYmVyIHRvIHdoaWNoIGFsbCB0aGUgb3RoZXIgYnJlYWtwb2ludCBjb21tYW5kcyByZWZlci5cblxuICAgSWYgYSBzZWNvbmQgYXJndW1lbnQgaXMgcHJlc2VudCwgaXQgaXMgYW4gZXhwcmVzc2lvbiB3aGljaCBtdXN0XG4gICBldmFsdWF0ZSB0byB0cnVlIGJlZm9yZSB0aGUgYnJlYWtwb2ludCBpcyBob25vcmVkLlxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBsaXN0IGFsbCBicmVha3MsIGluY2x1ZGluZyBmb3IgZWFjaCBicmVha3BvaW50LFxuICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGJyZWFrcG9pbnQgaGFzIGJlZW4gaGl0LCB0aGUgY3VycmVudFxuICAgaWdub3JlIGNvdW50LCBhbmQgdGhlIGFzc29jaWF0ZWQgY29uZGl0aW9uIGlmIGFueS5cblxudGJyZWFrIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cblxuICAgVGVtcG9yYXJ5IGJyZWFrcG9pbnQsIHdoaWNoIGlzIHJlbW92ZWQgYXV0b21hdGljYWxseSB3aGVuIGl0IGlzXG4gICBmaXJzdCBoaXQuIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciBgYGJyZWFrYGAuXG5cbmNsKGVhcikgW2ZpbGVuYW1lOmxpbmVubyB8IGJwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBXaXRoIGEgKmZpbGVuYW1lOmxpbmVubyogYXJndW1lbnQsIGNsZWFyIGFsbCB0aGUgYnJlYWtwb2ludHMgYXRcbiAgIHRoaXMgbGluZS4gV2l0aCBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGJyZWFrcG9pbnQgbnVtYmVycywgY2xlYXJcbiAgIHRob3NlIGJyZWFrcG9pbnRzLiBXaXRob3V0IGFyZ3VtZW50LCBjbGVhciBhbGwgYnJlYWtzIChidXQgZmlyc3RcbiAgIGFzayBjb25maXJtYXRpb24pLlxuXG5kaXNhYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgRGlzYWJsZSB0aGUgYnJlYWtwb2ludHMgZ2l2ZW4gYXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZlxuICAgYnJlYWtwb2ludCBudW1iZXJzLiAgRGlzYWJsaW5nIGEgYnJlYWtwb2ludCBtZWFucyBpdCBjYW5ub3QgY2F1c2VcbiAgIHRoZSBwcm9ncmFtIHRvIHN0b3AgZXhlY3V0aW9uLCBidXQgdW5saWtlIGNsZWFyaW5nIGEgYnJlYWtwb2ludCwgaXRcbiAgIHJlbWFpbnMgaW4gdGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgYW5kIGNhbiBiZSAocmUtKWVuYWJsZWQuXG5cbmVuYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIEVuYWJsZSB0aGUgYnJlYWtwb2ludHMgc3BlY2lmaWVkLlxuXG5pZ25vcmUgYnBudW1iZXIgW2NvdW50XVxuXG4gICBTZXQgdGhlIGlnbm9yZSBjb3VudCBmb3IgdGhlIGdpdmVuIGJyZWFrcG9pbnQgbnVtYmVyLiAgSWYgY291bnQgaXNcbiAgIG9taXR0ZWQsIHRoZSBpZ25vcmUgY291bnQgaXMgc2V0IHRvIDAuICBBIGJyZWFrcG9pbnQgYmVjb21lcyBhY3RpdmVcbiAgIHdoZW4gdGhlIGlnbm9yZSBjb3VudCBpcyB6ZXJvLiAgV2hlbiBub24temVybywgdGhlIGNvdW50IGlzXG4gICBkZWNyZW1lbnRlZCBlYWNoIHRpbWUgdGhlIGJyZWFrcG9pbnQgaXMgcmVhY2hlZCBhbmQgdGhlIGJyZWFrcG9pbnRcbiAgIGlzIG5vdCBkaXNhYmxlZCBhbmQgYW55IGFzc29jaWF0ZWQgY29uZGl0aW9uIGV2YWx1YXRlcyB0byB0cnVlLlxuXG5jb25kaXRpb24gYnBudW1iZXIgW2NvbmRpdGlvbl1cblxuICAgU2V0IGEgbmV3ICpjb25kaXRpb24qIGZvciB0aGUgYnJlYWtwb2ludCwgYW4gZXhwcmVzc2lvbiB3aGljaCBtdXN0XG4gICBldmFsdWF0ZSB0byB0cnVlIGJlZm9yZSB0aGUgYnJlYWtwb2ludCBpcyBob25vcmVkLiAgSWYgKmNvbmRpdGlvbipcbiAgIGlzIGFic2VudCwgYW55IGV4aXN0aW5nIGNvbmRpdGlvbiBpcyByZW1vdmVkOyBpLmUuLCB0aGUgYnJlYWtwb2ludFxuICAgaXMgbWFkZSB1bmNvbmRpdGlvbmFsLlxuXG5jb21tYW5kcyBbYnBudW1iZXJdXG5cbiAgIFNwZWNpZnkgYSBsaXN0IG9mIGNvbW1hbmRzIGZvciBicmVha3BvaW50IG51bWJlciAqYnBudW1iZXIqLiAgVGhlXG4gICBjb21tYW5kcyB0aGVtc2VsdmVzIGFwcGVhciBvbiB0aGUgZm9sbG93aW5nIGxpbmVzLiAgVHlwZSBhIGxpbmVcbiAgIGNvbnRhaW5pbmcganVzdCBgYGVuZGBgIHRvIHRlcm1pbmF0ZSB0aGUgY29tbWFuZHMuIEFuIGV4YW1wbGU6XG5cbiAgICAgIChQZGIpIGNvbW1hbmRzIDFcbiAgICAgIChjb20pIHByaW50IHNvbWVfdmFyaWFibGVcbiAgICAgIChjb20pIGVuZFxuICAgICAgKFBkYilcblxuICAgVG8gcmVtb3ZlIGFsbCBjb21tYW5kcyBmcm9tIGEgYnJlYWtwb2ludCwgdHlwZSBjb21tYW5kcyBhbmQgZm9sbG93XG4gICBpdCBpbW1lZGlhdGVseSB3aXRoIGBgZW5kYGA7IHRoYXQgaXMsIGdpdmUgbm8gY29tbWFuZHMuXG5cbiAgIFdpdGggbm8gKmJwbnVtYmVyKiBhcmd1bWVudCwgY29tbWFuZHMgcmVmZXJzIHRvIHRoZSBsYXN0IGJyZWFrcG9pbnRcbiAgIHNldC5cblxuICAgWW91IGNhbiB1c2UgYnJlYWtwb2ludCBjb21tYW5kcyB0byBzdGFydCB5b3VyIHByb2dyYW0gdXAgYWdhaW4uXG4gICBTaW1wbHkgdXNlIHRoZSBjb250aW51ZSBjb21tYW5kLCBvciBzdGVwLCBvciBhbnkgb3RoZXIgY29tbWFuZCB0aGF0XG4gICByZXN1bWVzIGV4ZWN1dGlvbi5cblxuICAgU3BlY2lmeWluZyBhbnkgY29tbWFuZCByZXN1bWluZyBleGVjdXRpb24gKGN1cnJlbnRseSBjb250aW51ZSxcbiAgIHN0ZXAsIG5leHQsIHJldHVybiwganVtcCwgcXVpdCBhbmQgdGhlaXIgYWJicmV2aWF0aW9ucykgdGVybWluYXRlc1xuICAgdGhlIGNvbW1hbmQgbGlzdCAoYXMgaWYgdGhhdCBjb21tYW5kIHdhcyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieVxuICAgZW5kKS4gVGhpcyBpcyBiZWNhdXNlIGFueSB0aW1lIHlvdSByZXN1bWUgZXhlY3V0aW9uIChldmVuIHdpdGggYVxuICAgc2ltcGxlIG5leHQgb3Igc3RlcCksIHlvdSBtYXkgZW5jb3VudGVyIGFub3RoZXIgYnJlYWtwb2ludC0td2hpY2hcbiAgIGNvdWxkIGhhdmUgaXRzIG93biBjb21tYW5kIGxpc3QsIGxlYWRpbmcgdG8gYW1iaWd1aXRpZXMgYWJvdXQgd2hpY2hcbiAgIGxpc3QgdG8gZXhlY3V0ZS5cblxuICAgSWYgeW91IHVzZSB0aGUgXCdzaWxlbnRcJyBjb21tYW5kIGluIHRoZSBjb21tYW5kIGxpc3QsIHRoZSB1c3VhbFxuICAgbWVzc2FnZSBhYm91dCBzdG9wcGluZyBhdCBhIGJyZWFrcG9pbnQgaXMgbm90IHByaW50ZWQuICBUaGlzIG1heSBiZVxuICAgZGVzaXJhYmxlIGZvciBicmVha3BvaW50cyB0aGF0IGFyZSB0byBwcmludCBhIHNwZWNpZmljIG1lc3NhZ2UgYW5kXG4gICB0aGVuIGNvbnRpbnVlLiAgSWYgbm9uZSBvZiB0aGUgb3RoZXIgY29tbWFuZHMgcHJpbnQgYW55dGhpbmcsIHlvdVxuICAgc2VlIG5vIHNpZ24gdGhhdCB0aGUgYnJlYWtwb2ludCB3YXMgcmVhY2hlZC5cblxucyh0ZXApXG5cbiAgIEV4ZWN1dGUgdGhlIGN1cnJlbnQgbGluZSwgc3RvcCBhdCB0aGUgZmlyc3QgcG9zc2libGUgb2NjYXNpb25cbiAgIChlaXRoZXIgaW4gYSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBvciBvbiB0aGUgbmV4dCBsaW5lIGluIHRoZVxuICAgY3VycmVudCBmdW5jdGlvbikuXG5cbm4oZXh0KVxuXG4gICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCBmdW5jdGlvbiBpc1xuICAgcmVhY2hlZCBvciBpdCByZXR1cm5zLiAgKFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYGBuZXh0YGAgYW5kXG4gICBgYHN0ZXBgYCBpcyB0aGF0IGBgc3RlcGBgIHN0b3BzIGluc2lkZSBhIGNhbGxlZCBmdW5jdGlvbiwgd2hpbGVcbiAgIGBgbmV4dGBgIGV4ZWN1dGVzIGNhbGxlZCBmdW5jdGlvbnMgYXQgKG5lYXJseSkgZnVsbCBzcGVlZCwgb25seVxuICAgc3RvcHBpbmcgYXQgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCBmdW5jdGlvbi4pXG5cbnVudChpbCkgW2xpbmVub11cblxuICAgV2l0aG91dCBhcmd1bWVudCwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBsaW5lIHdpdGggYSBudW1iZXJcbiAgIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUgaXMgcmVhY2hlZC5cblxuICAgV2l0aCBhIGxpbmUgbnVtYmVyLCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgYSBsaW5lIHdpdGggYSBudW1iZXJcbiAgIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhhdCBpcyByZWFjaGVkLiAgSW4gYm90aCBjYXNlcywgYWxzbyBzdG9wIHdoZW5cbiAgIHRoZSBjdXJyZW50IGZyYW1lIHJldHVybnMuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IEFsbG93IGdpdmluZyBhbiBleHBsaWNpdCBsaW5lIG51bWJlci5cblxucihldHVybilcblxuICAgQ29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBjdXJyZW50IGZ1bmN0aW9uIHJldHVybnMuXG5cbmMob250KGludWUpKVxuXG4gICBDb250aW51ZSBleGVjdXRpb24sIG9ubHkgc3RvcCB3aGVuIGEgYnJlYWtwb2ludCBpcyBlbmNvdW50ZXJlZC5cblxuaih1bXApIGxpbmVub1xuXG4gICBTZXQgdGhlIG5leHQgbGluZSB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQuICBPbmx5IGF2YWlsYWJsZSBpbiB0aGVcbiAgIGJvdHRvbS1tb3N0IGZyYW1lLiAgVGhpcyBsZXRzIHlvdSBqdW1wIGJhY2sgYW5kIGV4ZWN1dGUgY29kZSBhZ2FpbixcbiAgIG9yIGp1bXAgZm9yd2FyZCB0byBza2lwIGNvZGUgdGhhdCB5b3UgZG9uXCd0IHdhbnQgdG8gcnVuLlxuXG4gICBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBub3QgYWxsIGp1bXBzIGFyZSBhbGxvd2VkIC0tIGZvciBpbnN0YW5jZVxuICAgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGp1bXAgaW50byB0aGUgbWlkZGxlIG9mIGEgYGBmb3JgYCBsb29wIG9yIG91dFxuICAgb2YgYSBgYGZpbmFsbHlgYCBjbGF1c2UuXG5cbmwoaXN0KSBbZmlyc3RbLCBsYXN0XV1cblxuICAgTGlzdCBzb3VyY2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZmlsZS4gIFdpdGhvdXQgYXJndW1lbnRzLCBsaXN0IDExXG4gICBsaW5lcyBhcm91bmQgdGhlIGN1cnJlbnQgbGluZSBvciBjb250aW51ZSB0aGUgcHJldmlvdXMgbGlzdGluZy5cbiAgIFdpdGggYGAuYGAgYXMgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUuXG4gICBXaXRoIG9uZSBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBhcm91bmQgYXQgdGhhdCBsaW5lLiAgV2l0aCB0d29cbiAgIGFyZ3VtZW50cywgbGlzdCB0aGUgZ2l2ZW4gcmFuZ2U7IGlmIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbGVzc1xuICAgdGhhbiB0aGUgZmlyc3QsIGl0IGlzIGludGVycHJldGVkIGFzIGEgY291bnQuXG5cbiAgIFRoZSBjdXJyZW50IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnJhbWUgaXMgaW5kaWNhdGVkIGJ5IGBgLT5gYC4gIElmXG4gICBhbiBleGNlcHRpb24gaXMgYmVpbmcgZGVidWdnZWQsIHRoZSBsaW5lIHdoZXJlIHRoZSBleGNlcHRpb24gd2FzXG4gICBvcmlnaW5hbGx5IHJhaXNlZCBvciBwcm9wYWdhdGVkIGlzIGluZGljYXRlZCBieSBgYD4+YGAsIGlmIGl0XG4gICBkaWZmZXJzIGZyb20gdGhlIGN1cnJlbnQgbGluZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yOiBUaGUgYGA+PmBgIG1hcmtlci5cblxubGwgfCBsb25nbGlzdFxuXG4gICBMaXN0IGFsbCBzb3VyY2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZnVuY3Rpb24gb3IgZnJhbWUuXG4gICBJbnRlcmVzdGluZyBsaW5lcyBhcmUgbWFya2VkIGFzIGZvciBgYGxpc3RgYC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5hKHJncylcblxuICAgUHJpbnQgdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGN1cnJlbnQgZnVuY3Rpb24uXG5cbnAocmludCkgZXhwcmVzc2lvblxuXG4gICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIGluIHRoZSBjdXJyZW50IGNvbnRleHQgYW5kIHByaW50IGl0c1xuICAgdmFsdWUuXG5cbnBwIGV4cHJlc3Npb25cblxuICAgTGlrZSB0aGUgYGBwcmludGBgIGNvbW1hbmQsIGV4Y2VwdCB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaXNcbiAgIHByZXR0eS1wcmludGVkIHVzaW5nIHRoZSBgYHBwcmludGBgIG1vZHVsZS5cblxud2hhdGlzIGV4cHJlc3Npb25cblxuICAgUHJpbnQgdGhlIHR5cGUgb2YgdGhlICpleHByZXNzaW9uKi5cblxuc291cmNlIGV4cHJlc3Npb25cblxuICAgVHJ5IHRvIGdldCBzb3VyY2UgY29kZSBmb3IgdGhlIGdpdmVuIG9iamVjdCBhbmQgZGlzcGxheSBpdC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5kaXNwbGF5IFtleHByZXNzaW9uXVxuXG4gICBEaXNwbGF5IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpZiBpdCBjaGFuZ2VkLCBlYWNoIHRpbWVcbiAgIGV4ZWN1dGlvbiBzdG9wcyBpbiB0aGUgY3VycmVudCBmcmFtZS5cblxuICAgV2l0aG91dCBleHByZXNzaW9uLCBsaXN0IGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgY3VycmVudFxuICAgZnJhbWUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxudW5kaXNwbGF5IFtleHByZXNzaW9uXVxuXG4gICBEbyBub3QgZGlzcGxheSB0aGUgZXhwcmVzc2lvbiBhbnkgbW9yZSBpbiB0aGUgY3VycmVudCBmcmFtZS5cbiAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgY2xlYXIgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSBjdXJyZW50XG4gICBmcmFtZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5pbnRlcmFjdFxuXG4gICBTdGFydCBhbiBpbnRlcmF0aXZlIGludGVycHJldGVyICh1c2luZyB0aGUgYGBjb2RlYGAgbW9kdWxlKSB3aG9zZVxuICAgZ2xvYmFsIG5hbWVzcGFjZSBjb250YWlucyBhbGwgdGhlIChnbG9iYWwgYW5kIGxvY2FsKSBuYW1lcyBmb3VuZCBpblxuICAgdGhlIGN1cnJlbnQgc2NvcGUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuYWxpYXMgW25hbWUgW2NvbW1hbmRdXVxuXG4gICBDcmVhdGUgYW4gYWxpYXMgY2FsbGVkICpuYW1lKiB0aGF0IGV4ZWN1dGVzICpjb21tYW5kKi4gIFRoZSBjb21tYW5kXG4gICBtdXN0ICpub3QqIGJlIGVuY2xvc2VkIGluIHF1b3Rlcy4gIFJlcGxhY2VhYmxlIHBhcmFtZXRlcnMgY2FuIGJlXG4gICBpbmRpY2F0ZWQgYnkgYGAlMWBgLCBgYCUyYGAsIGFuZCBzbyBvbiwgd2hpbGUgYGAlKmBgIGlzIHJlcGxhY2VkIGJ5XG4gICBhbGwgdGhlIHBhcmFtZXRlcnMuIElmIG5vIGNvbW1hbmQgaXMgZ2l2ZW4sIHRoZSBjdXJyZW50IGFsaWFzIGZvclxuICAgKm5hbWUqIGlzIHNob3duLiBJZiBubyBhcmd1bWVudHMgYXJlIGdpdmVuLCBhbGwgYWxpYXNlcyBhcmUgbGlzdGVkLlxuXG4gICBBbGlhc2VzIG1heSBiZSBuZXN0ZWQgYW5kIGNhbiBjb250YWluIGFueXRoaW5nIHRoYXQgY2FuIGJlIGxlZ2FsbHlcbiAgIHR5cGVkIGF0IHRoZSBwZGIgcHJvbXB0LiAgTm90ZSB0aGF0IGludGVybmFsIHBkYiBjb21tYW5kcyAqY2FuKiBiZVxuICAgb3ZlcnJpZGRlbiBieSBhbGlhc2VzLiAgU3VjaCBhIGNvbW1hbmQgaXMgdGhlbiBoaWRkZW4gdW50aWwgdGhlXG4gICBhbGlhcyBpcyByZW1vdmVkLiAgQWxpYXNpbmcgaXMgcmVjdXJzaXZlbHkgYXBwbGllZCB0byB0aGUgZmlyc3RcbiAgIHdvcmQgb2YgdGhlIGNvbW1hbmQgbGluZTsgYWxsIG90aGVyIHdvcmRzIGluIHRoZSBsaW5lIGFyZSBsZWZ0XG4gICBhbG9uZS5cblxuICAgQXMgYW4gZXhhbXBsZSwgaGVyZSBhcmUgdHdvIHVzZWZ1bCBhbGlhc2VzIChlc3BlY2lhbGx5IHdoZW4gcGxhY2VkXG4gICBpbiB0aGUgYGAucGRicmNgYCBmaWxlKTpcblxuICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgKHVzYWdlICJwaSBjbGFzc0luc3QiKVxuICAgICAgYWxpYXMgcGkgZm9yIGsgaW4gJTEuX19kaWN0X18ua2V5cygpOiBwcmludCgiJTEuIixrLCI9IiwlMS5fX2RpY3RfX1trXSlcbiAgICAgICMgUHJpbnQgaW5zdGFuY2UgdmFyaWFibGVzIGluIHNlbGZcbiAgICAgIGFsaWFzIHBzIHBpIHNlbGZcblxudW5hbGlhcyBuYW1lXG5cbiAgIERlbGV0ZSB0aGUgc3BlY2lmaWVkIGFsaWFzLlxuXG4hIHN0YXRlbWVudFxuXG4gICBFeGVjdXRlIHRoZSAob25lLWxpbmUpICpzdGF0ZW1lbnQqIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50XG4gICBzdGFjayBmcmFtZS4gVGhlIGV4Y2xhbWF0aW9uIHBvaW50IGNhbiBiZSBvbWl0dGVkIHVubGVzcyB0aGUgZmlyc3RcbiAgIHdvcmQgb2YgdGhlIHN0YXRlbWVudCByZXNlbWJsZXMgYSBkZWJ1Z2dlciBjb21tYW5kLiAgVG8gc2V0IGFcbiAgIGdsb2JhbCB2YXJpYWJsZSwgeW91IGNhbiBwcmVmaXggdGhlIGFzc2lnbm1lbnQgY29tbWFuZCB3aXRoIGFcbiAgIGBgZ2xvYmFsYGAgc3RhdGVtZW50IG9uIHRoZSBzYW1lIGxpbmUsIGUuZy46XG5cbiAgICAgIChQZGIpIGdsb2JhbCBsaXN0X29wdGlvbnM7IGxpc3Rfb3B0aW9ucyA9IFtcJy1sXCddXG4gICAgICAoUGRiKVxuXG5ydW4gW2FyZ3MgLi4uXVxucmVzdGFydCBbYXJncyAuLi5dXG5cbiAgIFJlc3RhcnQgdGhlIGRlYnVnZ2VkIFB5dGhvbiBwcm9ncmFtLiAgSWYgYW4gYXJndW1lbnQgaXMgc3VwcGxpZWQsXG4gICBpdCBpcyBzcGxpdCB3aXRoIGBgc2hsZXhgYCBhbmQgdGhlIHJlc3VsdCBpcyB1c2VkIGFzIHRoZSBuZXdcbiAgIGBgc3lzLmFyZ3ZgYC4gSGlzdG9yeSwgYnJlYWtwb2ludHMsIGFjdGlvbnMgYW5kIGRlYnVnZ2VyIG9wdGlvbnNcbiAgIGFyZSBwcmVzZXJ2ZWQuIGBgcmVzdGFydGBgIGlzIGFuIGFsaWFzIGZvciBgYHJ1bmBgLlxuXG5xKHVpdClcblxuICAgUXVpdCBmcm9tIHRoZSBkZWJ1Z2dlci4gIFRoZSBwcm9ncmFtIGJlaW5nIGV4ZWN1dGVkIGlzIGFib3J0ZWQuXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gV2hldGhlciBhIGZyYW1lIGlzIGNvbnNpZGVyZWQgdG8gb3JpZ2luYXRlIGluIGEgY2VydGFpbiBtb2R1bGUgaXNcbiAgICBkZXRlcm1pbmVkIGJ5IHRoZSBgYF9fbmFtZV9fYGAgaW4gdGhlIGZyYW1lIGdsb2JhbHMuXG4nLAorICdkZWwnOiAnXG5UaGUgYGBkZWxgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBkZWxfc3RtdCA6Oj0gImRlbCIgdGFyZ2V0X2xpc3RcblxuRGVsZXRpb24gaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCB2ZXJ5IHNpbWlsYXIgdG8gdGhlIHdheSBhc3NpZ25tZW50IGlzXG5kZWZpbmVkLiBSYXRoZXIgdGhhbiBzcGVsbGluZyBpdCBvdXQgaW4gZnVsbCBkZXRhaWxzLCBoZXJlIGFyZSBzb21lXG5oaW50cy5cblxuRGVsZXRpb24gb2YgYSB0YXJnZXQgbGlzdCByZWN1cnNpdmVseSBkZWxldGVzIGVhY2ggdGFyZ2V0LCBmcm9tIGxlZnRcbnRvIHJpZ2h0LlxuXG5EZWxldGlvbiBvZiBhIG5hbWUgcmVtb3ZlcyB0aGUgYmluZGluZyBvZiB0aGF0IG5hbWUgZnJvbSB0aGUgbG9jYWwgb3Jcbmdsb2JhbCBuYW1lc3BhY2UsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBuYW1lIG9jY3VycyBpbiBhIGBgZ2xvYmFsYGBcbnN0YXRlbWVudCBpbiB0aGUgc2FtZSBjb2RlIGJsb2NrLiAgSWYgdGhlIG5hbWUgaXMgdW5ib3VuZCwgYVxuYGBOYW1lRXJyb3JgYCBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuXG5cbkRlbGV0aW9uIG9mIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCBzdWJzY3JpcHRpb25zIGFuZCBzbGljaW5ncyBpcyBwYXNzZWRcbnRvIHRoZSBwcmltYXJ5IG9iamVjdCBpbnZvbHZlZDsgZGVsZXRpb24gb2YgYSBzbGljaW5nIGlzIGluIGdlbmVyYWxcbmVxdWl2YWxlbnQgdG8gYXNzaWdubWVudCBvZiBhbiBlbXB0eSBzbGljZSBvZiB0aGUgcmlnaHQgdHlwZSAoYnV0IGV2ZW5cbnRoaXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgc2xpY2VkIG9iamVjdCkuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IFByZXZpb3VzbHkgaXQgd2FzIGlsbGVnYWwgdG8gZGVsZXRlIGEgbmFtZVxuZnJvbSB0aGUgbG9jYWwgbmFtZXNwYWNlIGlmIGl0IG9jY3VycyBhcyBhIGZyZWUgdmFyaWFibGUgaW4gYSBuZXN0ZWRcbmJsb2NrLlxuJywKICAnZGljdCc6ICdcbkRpY3Rpb25hcnkgZGlzcGxheXNcbioqKioqKioqKioqKioqKioqKipcblxuQSBkaWN0aW9uYXJ5IGRpc3BsYXkgaXMgYSBwb3NzaWJseSBlbXB0eSBzZXJpZXMgb2Yga2V5L2RhdHVtIHBhaXJzXG5lbmNsb3NlZCBpbiBjdXJseSBicmFjZXM6XG5cbiAgIGRpY3RfZGlzcGxheSAgICAgICA6Oj0gInsiIFtrZXlfZGF0dW1fbGlzdCB8IGRpY3RfY29tcHJlaGVuc2lvbl0gIn0iXG4gICBrZXlfZGF0dW1fbGlzdCAgICAgOjo9IGtleV9kYXR1bSAoIiwiIGtleV9kYXR1bSkqIFsiLCJdXG4gICBrZXlfZGF0dW0gICAgICAgICAgOjo9IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb25cbiAgIGRpY3RfY29tcHJlaGVuc2lvbiA6Oj0gZXhwcmVzc2lvbiAiOiIgZXhwcmVzc2lvbiBjb21wX2ZvclxuXG5BIGRpY3Rpb25hcnkgZGlzcGxheSB5aWVsZHMgYSBuZXcgZGljdGlvbmFyeSBvYmplY3QuXG5cbklmIGEgY29tbWEtc2VwYXJhdGVkIHNlcXVlbmNlIG9mIGtleS9kYXR1bSBwYWlycyBpcyBnaXZlbiwgdGhleSBhcmVcbmV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgdG8gZGVmaW5lIHRoZSBlbnRyaWVzIG9mIHRoZSBkaWN0aW9uYXJ5OlxuZWFjaCBrZXkgb2JqZWN0IGlzIHVzZWQgYXMgYSBrZXkgaW50byB0aGUgZGljdGlvbmFyeSB0byBzdG9yZSB0aGVcbmNvcnJlc3BvbmRpbmcgZGF0dW0uICBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiBzcGVjaWZ5IHRoZSBzYW1lIGtleVxubXVsdGlwbGUgdGltZXMgaW4gdGhlIGtleS9kYXR1bSBsaXN0LCBhbmQgdGhlIGZpbmFsIGRpY3Rpb25hcnlcJ3MgdmFsdWVcbmZvciB0aGF0IGtleSB3aWxsIGJlIHRoZSBsYXN0IG9uZSBnaXZlbi5cblxuQSBkaWN0IGNvbXByZWhlbnNpb24sIGluIGNvbnRyYXN0IHRvIGxpc3QgYW5kIHNldCBjb21wcmVoZW5zaW9ucyxcbm5lZWRzIHR3byBleHByZXNzaW9ucyBzZXBhcmF0ZWQgd2l0aCBhIGNvbG9uIGZvbGxvd2VkIGJ5IHRoZSB1c3VhbFxuImZvciIgYW5kICJpZiIgY2xhdXNlcy4gV2hlbiB0aGUgY29tcHJlaGVuc2lvbiBpcyBydW4sIHRoZSByZXN1bHRpbmdcbmtleSBhbmQgdmFsdWUgZWxlbWVudHMgYXJlIGluc2VydGVkIGluIHRoZSBuZXcgZGljdGlvbmFyeSBpbiB0aGUgb3JkZXJcbnRoZXkgYXJlIHByb2R1Y2VkLlxuXG5SZXN0cmljdGlvbnMgb24gdGhlIHR5cGVzIG9mIHRoZSBrZXkgdmFsdWVzIGFyZSBsaXN0ZWQgZWFybGllciBpblxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Ki4gIChUbyBzdW1tYXJpemUsIHRoZSBrZXkgdHlwZVxuc2hvdWxkIGJlICpoYXNoYWJsZSosIHdoaWNoIGV4Y2x1ZGVzIGFsbCBtdXRhYmxlIG9iamVjdHMuKSAgQ2xhc2hlc1xuYmV0d2VlbiBkdXBsaWNhdGUga2V5cyBhcmUgbm90IGRldGVjdGVkOyB0aGUgbGFzdCBkYXR1bSAodGV4dHVhbGx5XG5yaWdodG1vc3QgaW4gdGhlIGRpc3BsYXkpIHN0b3JlZCBmb3IgYSBnaXZlbiBrZXkgdmFsdWUgcHJldmFpbHMuXG4nLAogICdkeW5hbWljLWZlYXR1cmVzJzogJ1xuSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuSWYgdGhlIHdpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gYGBpbXBvcnQgKmBgIC0tLSBpcyB1c2VkIGluIGFcbmZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gY29udGFpbnMgb3IgaXMgYSBuZXN0ZWQgYmxvY2sgd2l0aCBmcmVlXG52YXJpYWJsZXMsIHRoZSBjb21waWxlciB3aWxsIHJhaXNlIGEgYGBTeW50YXhFcnJvcmBgLlxuXG5UaGUgYGBldmFsKClgYCBhbmQgYGBleGVjKClgYCBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsXG5lbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbFxuYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkXG5pbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICBbMV1cblRoZSBgYGV4ZWMoKWBgIGFuZCBgYGV2YWwoKWBgIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xub3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlIGlzXG5zcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nLAogICdlbHNlJzogJ1xuVGhlIGBgaWZgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYGlmYGAgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgYGBpZmBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSBgYGVsc2VgYCBjbGF1c2UsIGlmXG5wcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCkBAIC0zMywxNCArMzQsMTQgQEAKICAnZXhwcmxpc3RzJzogJ1xuRXhwcmVzc2lvbiBsaXN0c1xuKioqKioqKioqKioqKioqKlxuXG4gICBleHByZXNzaW9uX2xpc3QgOjo9IGV4cHJlc3Npb24gKCAiLCIgZXhwcmVzc2lvbiApKiBbIiwiXVxuXG5BbiBleHByZXNzaW9uIGxpc3QgY29udGFpbmluZyBhdCBsZWFzdCBvbmUgY29tbWEgeWllbGRzIGEgdHVwbGUuICBUaGVcbmxlbmd0aCBvZiB0aGUgdHVwbGUgaXMgdGhlIG51bWJlciBvZiBleHByZXNzaW9ucyBpbiB0aGUgbGlzdC4gIFRoZVxuZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG5cblRoZSB0cmFpbGluZyBjb21tYSBpcyByZXF1aXJlZCBvbmx5IHRvIGNyZWF0ZSBhIHNpbmdsZSB0dXBsZSAoYS5rLmEuIGFcbipzaW5nbGV0b24qKTsgaXQgaXMgb3B0aW9uYWwgaW4gYWxsIG90aGVyIGNhc2VzLiAgQSBzaW5nbGUgZXhwcmVzc2lvblxud2l0aG91dCBhIHRyYWlsaW5nIGNvbW1hIGRvZXNuXCd0IGNyZWF0ZSBhIHR1cGxlLCBidXQgcmF0aGVyIHlpZWxkcyB0aGVcbnZhbHVlIG9mIHRoYXQgZXhwcmVzc2lvbi4gKFRvIGNyZWF0ZSBhbiBlbXB0eSB0dXBsZSwgdXNlIGFuIGVtcHR5IHBhaXJcbm9mIHBhcmVudGhlc2VzOiBgYCgpYGAuKVxuJywKICAnZmxvYXRpbmcnOiAnXG5GbG9hdGluZyBwb2ludCBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqKioqKipcblxuRmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWxcbmRlZmluaXRpb25zOlxuXG4gICBmbG9hdG51bWJlciAgIDo6PSBwb2ludGZsb2F0IHwgZXhwb25lbnRmbG9hdFxuICAgcG9pbnRmbG9hdCAgICA6Oj0gW2ludHBhcnRdIGZyYWN0aW9uIHwgaW50cGFydCAiLiJcbiAgIGV4cG9uZW50ZmxvYXQgOjo9IChpbnRwYXJ0IHwgcG9pbnRmbG9hdCkgZXhwb25lbnRcbiAgIGludHBhcnQgICAgICAgOjo9IGRpZ2l0K1xuICAgZnJhY3Rpb24gICAgICA6Oj0gIi4iIGRpZ2l0K1xuICAgZXhwb25lbnQgICAgICA6Oj0gKCJlIiB8ICJFIikgWyIrIiB8ICItIl0gZGlnaXQrXG5cbk5vdGUgdGhhdCB0aGUgaW50ZWdlciBhbmQgZXhwb25lbnQgcGFydHMgYXJlIGFsd2F5cyBpbnRlcnByZXRlZCB1c2luZ1xucmFkaXggMTAuIEZvciBleGFtcGxlLCBgYDA3N2UwMTBgYCBpcyBsZWdhbCwgYW5kIGRlbm90ZXMgdGhlIHNhbWVcbm51bWJlciBhcyBgYDc3ZTEwYGAuIFRoZSBhbGxvd2VkIHJhbmdlIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzIGlzXG5pbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuIFNvbWUgZXhhbXBsZXMgb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHM6XG5cbiAgIDMuMTQgICAgMTAuICAgIC4wMDEgICAgMWUxMDAgICAgMy4xNGUtMTAgICAgMGUwXG5cbk5vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSBgYC0xYGBcbmlzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yIGBgLWBgIGFuZCB0aGVcbmxpdGVyYWwgYGAxYGAuXG4nLAogICdmb3InOiAnXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGFcbnNlcXVlbmNlIChzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuYGBleHByZXNzaW9uX2xpc3RgYC4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggaXRlbVxucHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgb2YgYXNjZW5kaW5nIGluZGljZXMuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzIChzZWUgKkFzc2lnbm1lbnQgc3RhdGVtZW50cyopLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbmV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhIGBgU3RvcEl0ZXJhdGlvbmBgXG5leGNlcHRpb24pLCB0aGUgc3VpdGUgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsXG5hbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSBgYGJyZWFrYGAgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgYGBlbHNlYGAgY2xhdXNlXCdzIHN1aXRlLiAgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZFxuY29udGludWVzIHdpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgYGBlbHNlYGAgY2xhdXNlIGlmIHRoZXJlIHdhc1xubm8gbmV4dCBpdGVtLlxuXG5UaGUgc3VpdGUgbWF5IGFzc2lnbiB0byB0aGUgdmFyaWFibGUocykgaW4gdGhlIHRhcmdldCBsaXN0OyB0aGlzIGRvZXNcbm5vdCBhZmZlY3QgdGhlIG5leHQgaXRlbSBhc3NpZ25lZCB0byBpdC5cblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgaXQgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0IGFsbFxuYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGByYW5nZSgpYGAgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyBgYGZvclxuaSA6PSBhIHRvIGIgZG9gYDsgZS5nLiwgYGBsaXN0KHJhbmdlKDMpKWBgIHJldHVybnMgdGhlIGxpc3QgYGBbMCwgMSxcbjJdYGAuXG5cbk5vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlIGxvb3BcbiAgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuJywKLSAnZm9ybWF0c3RyaW5ncyc6ICdcbkZvcm1hdCBTdHJpbmcgU3ludGF4XG4qKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGBzdHIuZm9ybWF0KClgYCBtZXRob2QgYW5kIHRoZSBgYEZvcm1hdHRlcmBgIGNsYXNzIHNoYXJlIHRoZSBzYW1lXG5zeW50YXggZm9yIGZvcm1hdCBzdHJpbmdzIChhbHRob3VnaCBpbiB0aGUgY2FzZSBvZiBgYEZvcm1hdHRlcmBgLFxuc3ViY2xhc3NlcyBjYW4gZGVmaW5lIHRoZWlyIG93biBmb3JtYXQgc3RyaW5nIHN5bnRheCkuXG5cbkZvcm1hdCBzdHJpbmdzIGNvbnRhaW4gInJlcGxhY2VtZW50IGZpZWxkcyIgc3Vycm91bmRlZCBieSBjdXJseSBicmFjZXNcbmBge31gYC4gQW55dGhpbmcgdGhhdCBpcyBub3QgY29udGFpbmVkIGluIGJyYWNlcyBpcyBjb25zaWRlcmVkIGxpdGVyYWxcbnRleHQsIHdoaWNoIGlzIGNvcGllZCB1bmNoYW5nZWQgdG8gdGhlIG91dHB1dC4gIElmIHlvdSBuZWVkIHRvIGluY2x1ZGVcbmEgYnJhY2UgY2hhcmFjdGVyIGluIHRoZSBsaXRlcmFsIHRleHQsIGl0IGNhbiBiZSBlc2NhcGVkIGJ5IGRvdWJsaW5nOlxuYGB7e2BgIGFuZCBgYH19YGAuXG5cblRoZSBncmFtbWFyIGZvciBhIHJlcGxhY2VtZW50IGZpZWxkIGlzIGFzIGZvbGxvd3M6XG5cbiAgICAgIHJlcGxhY2VtZW50X2ZpZWxkIDo6PSAieyIgW2ZpZWxkX25hbWVdIFsiISIgY29udmVyc2lvbl0gWyI6IiBmb3JtYXRfc3BlY10gIn0iXG4gICAgICBmaWVsZF9uYW1lICAgICAgICA6Oj0gYXJnX25hbWUgKCIuIiBhdHRyaWJ1dGVfbmFtZSB8ICJbIiBlbGVtZW50X2luZGV4ICJdIikqXG4gICAgICBhcmdfbmFtZSAgICAgICAgICA6Oj0gW2lkZW50aWZpZXIgfCBpbnRlZ2VyXVxuICAgICAgYXR0cmlidXRlX25hbWUgICAgOjo9IGlkZW50aWZpZXJcbiAgICAgIGVsZW1lbnRfaW5kZXggICAgIDo6PSBpbnRlZ2VyIHwgaW5kZXhfc3RyaW5nXG4gICAgICBpbmRleF9zdHJpbmcgICAgICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXSI+ICtcbiAgICAgIGNvbnZlcnNpb24gICAgICAgIDo6PSAiciIgfCAicyIgfCAiYSJcbiAgICAgIGZvcm1hdF9zcGVjICAgICAgIDo6PSA8ZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24+XG5cbkluIGxlc3MgZm9ybWFsIHRlcm1zLCB0aGUgcmVwbGFjZW1lbnQgZmllbGQgY2FuIHN0YXJ0IHdpdGggYVxuKmZpZWxkX25hbWUqIHRoYXQgc3BlY2lmaWVzIHRoZSBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdG8gYmUgZm9ybWF0dGVkXG5hbmQgaW5zZXJ0ZWQgaW50byB0aGUgb3V0cHV0IGluc3RlYWQgb2YgdGhlIHJlcGxhY2VtZW50IGZpZWxkLiBUaGVcbipmaWVsZF9uYW1lKiBpcyBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgICpjb252ZXJzaW9uKiBmaWVsZCwgd2hpY2ggaXNcbnByZWNlZGVkIGJ5IGFuIGV4Y2xhbWF0aW9uIHBvaW50IGBgXCchXCdgYCwgYW5kIGEgKmZvcm1hdF9zcGVjKiwgd2hpY2hcbmlzIHByZWNlZGVkIGJ5IGEgY29sb24gYGBcJzpcJ2BgLiAgVGhlc2Ugc3BlY2lmeSBhIG5vbi1kZWZhdWx0IGZvcm1hdFxuZm9yIHRoZSByZXBsYWNlbWVudCB2YWx1ZS5cblxuU2VlIGFsc28gdGhlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBzZWN0aW9uLlxuXG5UaGUgKmZpZWxkX25hbWUqIGl0c2VsZiBiZWdpbnMgd2l0aCBhbiAqYXJnX25hbWUqIHRoYXQgaXMgZWl0aGVyIGFcbm51bWJlciBvciBhIGtleXdvcmQuICBJZiBpdFwncyBhIG51bWJlciwgaXQgcmVmZXJzIHRvIGEgcG9zaXRpb25hbFxuYXJndW1lbnQsIGFuZCBpZiBpdFwncyBhIGtleXdvcmQsIGl0IHJlZmVycyB0byBhIG5hbWVkIGtleXdvcmRcbmFyZ3VtZW50LiAgSWYgdGhlIG51bWVyaWNhbCBhcmdfbmFtZXMgaW4gYSBmb3JtYXQgc3RyaW5nIGFyZSAwLCAxLCAyLFxuLi4uIGluIHNlcXVlbmNlLCB0aGV5IGNhbiBhbGwgYmUgb21pdHRlZCAobm90IGp1c3Qgc29tZSkgYW5kIHRoZVxubnVtYmVycyAwLCAxLCAyLCAuLi4gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGluc2VydGVkIGluIHRoYXQgb3JkZXIuXG5CZWNhdXNlICphcmdfbmFtZSogaXMgbm90IHF1b3RlLWRlbGltaXRlZCwgaXQgaXMgbm90IHBvc3NpYmxlIHRvXG5zcGVjaWZ5IGFyYml0cmFyeSBkaWN0aW9uYXJ5IGtleXMgKGUuZy4sIHRoZSBzdHJpbmdzIGBgXCcxMFwnYGAgb3JcbmBgXCc6LV1cJ2BgKSB3aXRoaW4gYSBmb3JtYXQgc3RyaW5nLiBUaGUgKmFyZ19uYW1lKiBjYW4gYmUgZm9sbG93ZWQgYnlcbmFueSBudW1iZXIgb2YgaW5kZXggb3IgYXR0cmlidXRlIGV4cHJlc3Npb25zLiBBbiBleHByZXNzaW9uIG9mIHRoZVxuZm9ybSBgYFwnLm5hbWVcJ2BgIHNlbGVjdHMgdGhlIG5hbWVkIGF0dHJpYnV0ZSB1c2luZyBgYGdldGF0dHIoKWBgLFxud2hpbGUgYW4gZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSBgYFwnW2luZGV4XVwnYGAgZG9lcyBhbiBpbmRleCBsb29rdXBcbnVzaW5nIGBgX19nZXRpdGVtX18oKWBgLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBUaGUgcG9zaXRpb25hbCBhcmd1bWVudCBzcGVjaWZpZXJzIGNhbiBiZVxub21pdHRlZCwgc28gYGBcJ3t9IHt9XCdgYCBpcyBlcXVpdmFsZW50IHRvIGBgXCd7MH0gezF9XCdgYC5cblxuU29tZSBzaW1wbGUgZm9ybWF0IHN0cmluZyBleGFtcGxlczpcblxuICAgIkZpcnN0LCB0aG91IHNoYWx0IGNvdW50IHRvIHswfSIgIyBSZWZlcmVuY2VzIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnRcbiAgICJCcmluZyBtZSBhIHt9IiAgICAgICAgICAgICAgICAgICMgSW1wbGljaXRseSByZWZlcmVuY2VzIHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAiRnJvbSB7fSB0byB7fSIgICAgICAgICAgICAgICAgICAjIFNhbWUgYXMgIkZyb20gezB9IHRvIHsxfSJcbiAgICJNeSBxdWVzdCBpcyB7bmFtZX0iICAgICAgICAgICAgICMgUmVmZXJlbmNlcyBrZXl3b3JkIGFyZ3VtZW50IFwnbmFtZVwnXG4gICAiV2VpZ2h0IGluIHRvbnMgezAud2VpZ2h0fSIgICAgICAjIFwnd2VpZ2h0XCcgYXR0cmlidXRlIG9mIGZpcnN0IHBvc2l0aW9uYWwgYXJnXG4gICAiVW5pdHMgZGVzdHJveWVkOiB7cGxheWVyc1swXX0iICAjIEZpcnN0IGVsZW1lbnQgb2Yga2V5d29yZCBhcmd1bWVudCBcJ3BsYXllcnNcJy5cblxuVGhlICpjb252ZXJzaW9uKiBmaWVsZCBjYXVzZXMgYSB0eXBlIGNvZXJjaW9uIGJlZm9yZSBmb3JtYXR0aW5nLlxuTm9ybWFsbHksIHRoZSBqb2Igb2YgZm9ybWF0dGluZyBhIHZhbHVlIGlzIGRvbmUgYnkgdGhlXG5gYF9fZm9ybWF0X18oKWBgIG1ldGhvZCBvZiB0aGUgdmFsdWUgaXRzZWxmLiAgSG93ZXZlciwgaW4gc29tZSBjYXNlc1xuaXQgaXMgZGVzaXJhYmxlIHRvIGZvcmNlIGEgdHlwZSB0byBiZSBmb3JtYXR0ZWQgYXMgYSBzdHJpbmcsXG5vdmVycmlkaW5nIGl0cyBvd24gZGVmaW5pdGlvbiBvZiBmb3JtYXR0aW5nLiAgQnkgY29udmVydGluZyB0aGUgdmFsdWVcbnRvIGEgc3RyaW5nIGJlZm9yZSBjYWxsaW5nIGBgX19mb3JtYXRfXygpYGAsIHRoZSBub3JtYWwgZm9ybWF0dGluZ1xubG9naWMgaXMgYnlwYXNzZWQuXG5cblRocmVlIGNvbnZlcnNpb24gZmxhZ3MgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQ6IGBgXCchc1wnYGAgd2hpY2ggY2FsbHNcbmBgc3RyKClgYCBvbiB0aGUgdmFsdWUsIGBgXCchclwnYGAgd2hpY2ggY2FsbHMgYGByZXByKClgYCBhbmQgYGBcJyFhXCdgYFxud2hpY2ggY2FsbHMgYGBhc2NpaSgpYGAuXG5cblNvbWUgZXhhbXBsZXM6XG5cbiAgICJIYXJvbGRcJ3MgYSBjbGV2ZXIgezAhc30iICAgICAgICAjIENhbGxzIHN0cigpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuICAgIkJyaW5nIG91dCB0aGUgaG9seSB7bmFtZSFyfSIgICAgIyBDYWxscyByZXByKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG4gICAiTW9yZSB7IWF9IiAgICAgICAgICAgICAgICAgICAgICAjIENhbGxzIGFzY2lpKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG5cblRoZSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNvbnRhaW5zIGEgc3BlY2lmaWNhdGlvbiBvZiBob3cgdGhlIHZhbHVlXG5zaG91bGQgYmUgcHJlc2VudGVkLCBpbmNsdWRpbmcgc3VjaCBkZXRhaWxzIGFzIGZpZWxkIHdpZHRoLCBhbGlnbm1lbnQsXG5wYWRkaW5nLCBkZWNpbWFsIHByZWNpc2lvbiBhbmQgc28gb24uICBFYWNoIHZhbHVlIHR5cGUgY2FuIGRlZmluZSBpdHNcbm93biAiZm9ybWF0dGluZyBtaW5pLWxhbmd1YWdlIiBvciBpbnRlcnByZXRhdGlvbiBvZiB0aGUgKmZvcm1hdF9zcGVjKi5cblxuTW9zdCBidWlsdC1pbiB0eXBlcyBzdXBwb3J0IGEgY29tbW9uIGZvcm1hdHRpbmcgbWluaS1sYW5ndWFnZSwgd2hpY2hcbmlzIGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uLlxuXG5BICpmb3JtYXRfc3BlYyogZmllbGQgY2FuIGFsc28gaW5jbHVkZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzXG53aXRoaW4gaXQuIFRoZXNlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHMgY2FuIGNvbnRhaW4gb25seSBhIGZpZWxkXG5uYW1lOyBjb252ZXJzaW9uIGZsYWdzIGFuZCBmb3JtYXQgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBhbGxvd2VkLiAgVGhlXG5yZXBsYWNlbWVudCBmaWVsZHMgd2l0aGluIHRoZSBmb3JtYXRfc3BlYyBhcmUgc3Vic3RpdHV0ZWQgYmVmb3JlIHRoZVxuKmZvcm1hdF9zcGVjKiBzdHJpbmcgaXMgaW50ZXJwcmV0ZWQuIFRoaXMgYWxsb3dzIHRoZSBmb3JtYXR0aW5nIG9mIGFcbnZhbHVlIHRvIGJlIGR5bmFtaWNhbGx5IHNwZWNpZmllZC5cblxuU2VlIHRoZSAqRm9ybWF0IGV4YW1wbGVzKiBzZWN0aW9uIGZvciBzb21lIGV4YW1wbGVzLlxuXG5cbkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2Vcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIkZvcm1hdCBzcGVjaWZpY2F0aW9ucyIgYXJlIHVzZWQgd2l0aGluIHJlcGxhY2VtZW50IGZpZWxkcyBjb250YWluZWRcbndpdGhpbiBhIGZvcm1hdCBzdHJpbmcgdG8gZGVmaW5lIGhvdyBpbmRpdmlkdWFsIHZhbHVlcyBhcmUgcHJlc2VudGVkXG4oc2VlICpGb3JtYXQgU3RyaW5nIFN5bnRheCopLiAgVGhleSBjYW4gYWxzbyBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlXG5idWlsdC1pbiBgYGZvcm1hdCgpYGAgZnVuY3Rpb24uICBFYWNoIGZvcm1hdHRhYmxlIHR5cGUgbWF5IGRlZmluZSBob3dcbnRoZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiBpcyB0byBiZSBpbnRlcnByZXRlZC5cblxuTW9zdCBidWlsdC1pbiB0eXBlcyBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBvcHRpb25zIGZvciBmb3JtYXRcbnNwZWNpZmljYXRpb25zLCBhbHRob3VnaCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgYXJlIG9ubHlcbnN1cHBvcnRlZCBieSB0aGUgbnVtZXJpYyB0eXBlcy5cblxuQSBnZW5lcmFsIGNvbnZlbnRpb24gaXMgdGhhdCBhbiBlbXB0eSBmb3JtYXQgc3RyaW5nIChgYCIiYGApIHByb2R1Y2VzXG50aGUgc2FtZSByZXN1bHQgYXMgaWYgeW91IGhhZCBjYWxsZWQgYGBzdHIoKWBgIG9uIHRoZSB2YWx1ZS4gQSBub24tXG5lbXB0eSBmb3JtYXQgc3RyaW5nIHR5cGljYWxseSBtb2RpZmllcyB0aGUgcmVzdWx0LlxuXG5UaGUgZ2VuZXJhbCBmb3JtIG9mIGEgKnN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIqIGlzOlxuXG4gICBmb3JtYXRfc3BlYyA6Oj0gW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVt3aWR0aF1bLF1bLnByZWNpc2lvbl1bdHlwZV1cbiAgIGZpbGwgICAgICAgIDo6PSA8YSBjaGFyYWN0ZXIgb3RoZXIgdGhhbiBcJ31cJz5cbiAgIGFsaWduICAgICAgIDo6PSAiPCIgfCAiPiIgfCAiPSIgfCAiXiJcbiAgIHNpZ24gICAgICAgIDo6PSAiKyIgfCAiLSIgfCAiICJcbiAgIHdpZHRoICAgICAgIDo6PSBpbnRlZ2VyXG4gICBwcmVjaXNpb24gICA6Oj0gaW50ZWdlclxuICAgdHlwZSAgICAgICAgOjo9ICJiIiB8ICJjIiB8ICJkIiB8ICJlIiB8ICJFIiB8ICJmIiB8ICJGIiB8ICJnIiB8ICJHIiB8ICJuIiB8ICJvIiB8ICJzIiB8ICJ4IiB8ICJYIiB8ICIlIlxuXG5UaGUgKmZpbGwqIGNoYXJhY3RlciBjYW4gYmUgYW55IGNoYXJhY3RlciBvdGhlciB0aGFuIFwne1wnIG9yIFwnfVwnLiAgVGhlXG5wcmVzZW5jZSBvZiBhIGZpbGwgY2hhcmFjdGVyIGlzIHNpZ25hbGVkIGJ5IHRoZSBjaGFyYWN0ZXIgZm9sbG93aW5nXG5pdCwgd2hpY2ggbXVzdCBiZSBvbmUgb2YgdGhlIGFsaWdubWVudCBvcHRpb25zLiAgSWYgdGhlIHNlY29uZFxuY2hhcmFjdGVyIG9mICpmb3JtYXRfc3BlYyogaXMgbm90IGEgdmFsaWQgYWxpZ25tZW50IG9wdGlvbiwgdGhlbiBpdCBpc1xuYXNzdW1lZCB0aGF0IGJvdGggdGhlIGZpbGwgY2hhcmFjdGVyIGFuZCB0aGUgYWxpZ25tZW50IG9wdGlvbiBhcmVcbmFic2VudC5cblxuVGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYWxpZ25tZW50IG9wdGlvbnMgaXMgYXMgZm9sbG93czpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3B0aW9uICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCBgYFwnPFwnYGAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgbGVmdC1hbGlnbmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbW9zdCBvYmplY3RzKS4gICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCc+XCdgYCAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSByaWdodC1hbGlnbmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBudW1iZXJzKS4gICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJz1cJ2BgICAgfCBGb3JjZXMgdGhlIHBhZGRpbmcgdG8gYmUgcGxhY2VkIGFmdGVyIHRoZSBzaWduIChpZiBhbnkpICAgIHxcbiAgIHwgICAgICAgICAgIHwgYnV0IGJlZm9yZSB0aGUgZGlnaXRzLiAgVGhpcyBpcyB1c2VkIGZvciBwcmludGluZyBmaWVsZHMgICB8XG4gICB8ICAgICAgICAgICB8IGluIHRoZSBmb3JtIFwnKzAwMDAwMDEyMFwnLiBUaGlzIGFsaWdubWVudCBvcHRpb24gaXMgb25seSAgICB8XG4gICB8ICAgICAgICAgICB8IHZhbGlkIGZvciBudW1lcmljIHR5cGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ15cJ2BgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGNlbnRlcmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlIHRoYXQgdW5sZXNzIGEgbWluaW11bSBmaWVsZCB3aWR0aCBpcyBkZWZpbmVkLCB0aGUgZmllbGQgd2lkdGhcbndpbGwgYWx3YXlzIGJlIHRoZSBzYW1lIHNpemUgYXMgdGhlIGRhdGEgdG8gZmlsbCBpdCwgc28gdGhhdCB0aGVcbmFsaWdubWVudCBvcHRpb24gaGFzIG5vIG1lYW5pbmcgaW4gdGhpcyBjYXNlLlxuXG5UaGUgKnNpZ24qIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBudW1iZXIgdHlwZXMsIGFuZCBjYW4gYmUgb25lIG9mXG50aGUgZm9sbG93aW5nOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBPcHRpb24gICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCcrXCdgYCAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkIGZvciBib3RoIHBvc2l0aXZlIGFzICB8XG4gICB8ICAgICAgICAgICB8IHdlbGwgYXMgbmVnYXRpdmUgbnVtYmVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJy1cJ2BgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgb25seSBmb3IgbmVnYXRpdmUgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVycyAodGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvcikuICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBzcGFjZSAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIGxlYWRpbmcgc3BhY2Ugc2hvdWxkIGJlIHVzZWQgb24gcG9zaXRpdmUgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVycywgYW5kIGEgbWludXMgc2lnbiBvbiBuZWdhdGl2ZSBudW1iZXJzLiAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5UaGUgYGBcJyNcJ2BgIG9wdGlvbiBjYXVzZXMgdGhlICJhbHRlcm5hdGUgZm9ybSIgdG8gYmUgdXNlZCBmb3IgdGhlXG5jb252ZXJzaW9uLiAgVGhlIGFsdGVybmF0ZSBmb3JtIGlzIGRlZmluZWQgZGlmZmVyZW50bHkgZm9yIGRpZmZlcmVudFxudHlwZXMuICBUaGlzIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBpbnRlZ2VyLCBmbG9hdCwgY29tcGxleCBhbmRcbkRlY2ltYWwgdHlwZXMuIEZvciBpbnRlZ2Vycywgd2hlbiBiaW5hcnksIG9jdGFsLCBvciBoZXhhZGVjaW1hbCBvdXRwdXRcbmlzIHVzZWQsIHRoaXMgb3B0aW9uIGFkZHMgdGhlIHByZWZpeCByZXNwZWN0aXZlIGBgXCcwYlwnYGAsIGBgXCcwb1wnYGAsIG9yXG5gYFwnMHhcJ2BgIHRvIHRoZSBvdXRwdXQgdmFsdWUuIEZvciBmbG9hdHMsIGNvbXBsZXggYW5kIERlY2ltYWwgdGhlXG5hbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCBvZiB0aGUgY29udmVyc2lvbiB0byBhbHdheXMgY29udGFpbiBhXG5kZWNpbWFsLXBvaW50IGNoYXJhY3RlciwgZXZlbiBpZiBubyBkaWdpdHMgZm9sbG93IGl0LiBOb3JtYWxseSwgYVxuZGVjaW1hbC1wb2ludCBjaGFyYWN0ZXIgYXBwZWFycyBpbiB0aGUgcmVzdWx0IG9mIHRoZXNlIGNvbnZlcnNpb25zXG5vbmx5IGlmIGEgZGlnaXQgZm9sbG93cyBpdC4gSW4gYWRkaXRpb24sIGZvciBgYFwnZ1wnYGAgYW5kIGBgXCdHXCdgYFxuY29udmVyc2lvbnMsIHRyYWlsaW5nIHplcm9zIGFyZSBub3QgcmVtb3ZlZCBmcm9tIHRoZSByZXN1bHQuXG5cblRoZSBgYFwnLFwnYGAgb3B0aW9uIHNpZ25hbHMgdGhlIHVzZSBvZiBhIGNvbW1hIGZvciBhIHRob3VzYW5kc1xuc2VwYXJhdG9yLiBGb3IgYSBsb2NhbGUgYXdhcmUgc2VwYXJhdG9yLCB1c2UgdGhlIGBgXCduXCdgYCBpbnRlZ2VyXG5wcmVzZW50YXRpb24gdHlwZSBpbnN0ZWFkLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBBZGRlZCB0aGUgYGBcJyxcJ2BgIG9wdGlvbiAoc2VlIGFsc28gKipQRVBcbjM3OCoqKS5cblxuKndpZHRoKiBpcyBhIGRlY2ltYWwgaW50ZWdlciBkZWZpbmluZyB0aGUgbWluaW11bSBmaWVsZCB3aWR0aC4gIElmIG5vdFxuc3BlY2lmaWVkLCB0aGVuIHRoZSBmaWVsZCB3aWR0aCB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIGNvbnRlbnQuXG5cbklmIHRoZSAqd2lkdGgqIGZpZWxkIGlzIHByZWNlZGVkIGJ5IGEgemVybyAoYGBcJzBcJ2BgKSBjaGFyYWN0ZXIsIHRoaXNcbmVuYWJsZXMgemVyby1wYWRkaW5nLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGFuICphbGlnbm1lbnQqIHR5cGUgb2ZcbmBgXCc9XCdgYCBhbmQgYSAqZmlsbCogY2hhcmFjdGVyIG9mIGBgXCcwXCdgYC5cblxuVGhlICpwcmVjaXNpb24qIGlzIGEgZGVjaW1hbCBudW1iZXIgaW5kaWNhdGluZyBob3cgbWFueSBkaWdpdHMgc2hvdWxkXG5iZSBkaXNwbGF5ZWQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQgZm9yIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWVcbmZvcm1hdHRlZCB3aXRoIGBgXCdmXCdgYCBhbmQgYGBcJ0ZcJ2BgLCBvciBiZWZvcmUgYW5kIGFmdGVyIHRoZSBkZWNpbWFsXG5wb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZSBmb3JtYXR0ZWQgd2l0aCBgYFwnZ1wnYGAgb3IgYGBcJ0dcJ2BgLlxuRm9yIG5vbi1udW1iZXIgdHlwZXMgdGhlIGZpZWxkIGluZGljYXRlcyB0aGUgbWF4aW11bSBmaWVsZCBzaXplIC0gaW5cbm90aGVyIHdvcmRzLCBob3cgbWFueSBjaGFyYWN0ZXJzIHdpbGwgYmUgdXNlZCBmcm9tIHRoZSBmaWVsZCBjb250ZW50LlxuVGhlICpwcmVjaXNpb24qIGlzIG5vdCBhbGxvd2VkIGZvciBpbnRlZ2VyIHZhbHVlcy5cblxuRmluYWxseSwgdGhlICp0eXBlKiBkZXRlcm1pbmVzIGhvdyB0aGUgZGF0YSBzaG91bGQgYmUgcHJlc2VudGVkLlxuXG5UaGUgYXZhaWxhYmxlIHN0cmluZyBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCdzXCdgYCAgIHwgU3RyaW5nIGZvcm1hdC4gVGhpcyBpcyB0aGUgZGVmYXVsdCB0eXBlIGZvciBzdHJpbmdzIGFuZCAgICB8XG4gICB8ICAgICAgICAgICB8IG1heSBiZSBvbWl0dGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgYGBcJ3NcJ2BgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cblRoZSBhdmFpbGFibGUgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCdiXCdgYCAgIHwgQmluYXJ5IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMi4gICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnY1wnYGAgICB8IENoYXJhY3Rlci4gQ29udmVydHMgdGhlIGludGVnZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgICAgICAgfFxuICAgfCAgICAgICAgICAgfCB1bmljb2RlIGNoYXJhY3RlciBiZWZvcmUgcHJpbnRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdkXCdgYCAgIHwgRGVjaW1hbCBJbnRlZ2VyLiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAxMC4gICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnb1wnYGAgICB8IE9jdGFsIGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgOC4gICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ3hcJ2BgICAgfCBIZXggZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAxNiwgdXNpbmcgbG93ZXItICAgIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlIDkuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnWFwnYGAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDE2LCB1c2luZyB1cHBlci0gICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCduXCdgYCAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzIGBgXCdkXCdgYCwgZXhjZXB0IHRoYXQgaXQgdXNlcyAgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlIGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlciBzZXBhcmF0b3IgY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgYGBcJ2RcJ2BgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbkluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSBwcmVzZW50YXRpb24gdHlwZXMsIGludGVnZXJzIGNhbiBiZSBmb3JtYXR0ZWRcbndpdGggdGhlIGZsb2F0aW5nIHBvaW50IHByZXNlbnRhdGlvbiB0eXBlcyBsaXN0ZWQgYmVsb3cgKGV4Y2VwdFxuYGBcJ25cJ2BgIGFuZCBOb25lKS4gV2hlbiBkb2luZyBzbywgYGBmbG9hdCgpYGAgaXMgdXNlZCB0byBjb252ZXJ0IHRoZVxuaW50ZWdlciB0byBhIGZsb2F0aW5nIHBvaW50IG51bWJlciBiZWZvcmUgZm9ybWF0dGluZy5cblxuVGhlIGF2YWlsYWJsZSBwcmVzZW50YXRpb24gdHlwZXMgZm9yIGZsb2F0aW5nIHBvaW50IGFuZCBkZWNpbWFsIHZhbHVlc1xuYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCdlXCdgYCAgIHwgRXhwb25lbnQgbm90YXRpb24uIFByaW50cyB0aGUgbnVtYmVyIGluIHNjaWVudGlmaWMgICAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG5vdGF0aW9uIHVzaW5nIHRoZSBsZXR0ZXIgXCdlXCcgdG8gaW5kaWNhdGUgdGhlIGV4cG9uZW50LiAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnRVwnYGAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBTYW1lIGFzIGBgXCdlXCdgYCBleGNlcHQgaXQgdXNlcyBhbiB1cHBlciB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgXCdFXCcgYXMgdGhlIHNlcGFyYXRvciBjaGFyYWN0ZXIuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnZlwnYGAgICB8IEZpeGVkIHBvaW50LiBEaXNwbGF5cyB0aGUgbnVtYmVyIGFzIGEgZml4ZWQtcG9pbnQgbnVtYmVyLiAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ0ZcJ2BgICAgfCBGaXhlZCBwb2ludC4gU2FtZSBhcyBgYFwnZlwnYGAsIGJ1dCBjb252ZXJ0cyBgYG5hbmBgIHRvICAgICAgfFxuICAgfCAgICAgICAgICAgfCBgYE5BTmBgIGFuZCBgYGluZmBgIHRvIGBgSU5GYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdnXCdgYCAgIHwgR2VuZXJhbCBmb3JtYXQuICBGb3IgYSBnaXZlbiBwcmVjaXNpb24gYGBwID49IDFgYCwgdGhpcyAgICB8XG4gICB8ICAgICAgICAgICB8IHJvdW5kcyB0aGUgbnVtYmVyIHRvIGBgcGBgIHNpZ25pZmljYW50IGRpZ2l0cyBhbmQgdGhlbiAgICAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXRzIHRoZSByZXN1bHQgaW4gZWl0aGVyIGZpeGVkLXBvaW50IGZvcm1hdCBvciBpbiAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2NpZW50aWZpYyBub3RhdGlvbiwgZGVwZW5kaW5nIG9uIGl0cyBtYWduaXR1ZGUuICBUaGUgICAgICB8XG4gICB8ICAgICAgICAgICB8IHByZWNpc2UgcnVsZXMgYXJlIGFzIGZvbGxvd3M6IHN1cHBvc2UgdGhhdCB0aGUgcmVzdWx0ICAgICAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSBgYFwnZVwnYGAgYW5kIHByZWNpc2lvbiAgICAgfFxuICAgfCAgICAgICAgICAgfCBgYHAtMWBgIHdvdWxkIGhhdmUgZXhwb25lbnQgYGBleHBgYC4gIFRoZW4gaWYgYGAtNCA8PSBleHAgIHxcbiAgIHwgICAgICAgICAgIHwgPCBwYGAsIHRoZSBudW1iZXIgaXMgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgICAgICB8XG4gICB8ICAgICAgICAgICB8IGBgXCdmXCdgYCBhbmQgcHJlY2lzaW9uIGBgcC0xLWV4cGBgLiBPdGhlcndpc2UsIHRoZSBudW1iZXIgICB8XG4gICB8ICAgICAgICAgICB8IGlzIGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlIGBgXCdlXCdgYCBhbmQgcHJlY2lzaW9uICB8XG4gICB8ICAgICAgICAgICB8IGBgcC0xYGAuIEluIGJvdGggY2FzZXMgaW5zaWduaWZpY2FudCB0cmFpbGluZyB6ZXJvcyBhcmUgICAgfFxuICAgfCAgICAgICAgICAgfCByZW1vdmVkIGZyb20gdGhlIHNpZ25pZmljYW5kLCBhbmQgdGhlIGRlY2ltYWwgcG9pbnQgaXMgICAgIHxcbiAgIHwgICAgICAgICAgIHwgYWxzbyByZW1vdmVkIGlmIHRoZXJlIGFyZSBubyByZW1haW5pbmcgZGlnaXRzIGZvbGxvd2luZyAgICB8XG4gICB8ICAgICAgICAgICB8IGl0LiAgUG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGluZmluaXR5LCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgfFxuICAgfCAgICAgICAgICAgfCB6ZXJvLCBhbmQgbmFucywgYXJlIGZvcm1hdHRlZCBhcyBgYGluZmBgLCBgYC1pbmZgYCwgYGAwYGAsIHxcbiAgIHwgICAgICAgICAgIHwgYGAtMGBgIGFuZCBgYG5hbmBgIHJlc3BlY3RpdmVseSwgcmVnYXJkbGVzcyBvZiB0aGUgICAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHByZWNpc2lvbi4gIEEgcHJlY2lzaW9uIG9mIGBgMGBgIGlzIHRyZWF0ZWQgYXMgZXF1aXZhbGVudCAgfFxuICAgfCAgICAgICAgICAgfCB0byBhIHByZWNpc2lvbiBvZiBgYDFgYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdHXCdgYCAgIHwgR2VuZXJhbCBmb3JtYXQuIFNhbWUgYXMgYGBcJ2dcJ2BgIGV4Y2VwdCBzd2l0Y2hlcyB0byBgYFwnRVwnYGAgfFxuICAgfCAgICAgICAgICAgfCBpZiB0aGUgbnVtYmVyIGdldHMgdG9vIGxhcmdlLiBUaGUgcmVwcmVzZW50YXRpb25zIG9mICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgaW5maW5pdHkgYW5kIE5hTiBhcmUgdXBwZXJjYXNlZCwgdG9vLiAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnblwnYGAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyBgYFwnZ1wnYGAsIGV4Y2VwdCB0aGF0IGl0IHVzZXMgICB8XG4gICB8ICAgICAgICAgICB8IHRoZSBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgYXBwcm9wcmlhdGUgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXIgc2VwYXJhdG9yIGNoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCclXCdgYCAgIHwgUGVyY2VudGFnZS4gTXVsdGlwbGllcyB0aGUgbnVtYmVyIGJ5IDEwMCBhbmQgZGlzcGxheXMgaW4gICB8XG4gICB8ICAgICAgICAgICB8IGZpeGVkIChgYFwnZlwnYGApIGZvcm1hdCwgZm9sbG93ZWQgYnkgYSBwZXJjZW50IHNpZ24uICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBTaW1pbGFyIHRvIGBgXCdnXCdgYCwgZXhjZXB0IHdpdGggYXQgbGVhc3Qgb25lIGRpZ2l0IHBhc3QgICAgfFxuICAgfCAgICAgICAgICAgfCB0aGUgZGVjaW1hbCBwb2ludCBhbmQgYSBkZWZhdWx0IHByZWNpc2lvbiBvZiAxMi4gVGhpcyBpcyAgIHxcbiAgIHwgICAgICAgICAgIHwgaW50ZW5kZWQgdG8gbWF0Y2ggYGBzdHIoKWBgLCBleGNlcHQgeW91IGNhbiBhZGQgdGhlIG90aGVyICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdCBtb2RpZmllcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuXG5Gb3JtYXQgZXhhbXBsZXNcbj09PT09PT09PT09PT09PVxuXG5UaGlzIHNlY3Rpb24gY29udGFpbnMgZXhhbXBsZXMgb2YgdGhlIG5ldyBmb3JtYXQgc3ludGF4IGFuZCBjb21wYXJpc29uXG53aXRoIHRoZSBvbGQgYGAlYGAtZm9ybWF0dGluZy5cblxuSW4gbW9zdCBvZiB0aGUgY2FzZXMgdGhlIHN5bnRheCBpcyBzaW1pbGFyIHRvIHRoZSBvbGRcbmBgJWBgLWZvcm1hdHRpbmcsIHdpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSBgYHt9YGAgYW5kIHdpdGggYGA6YGAgdXNlZFxuaW5zdGVhZCBvZiBgYCVgYC4gRm9yIGV4YW1wbGUsIGBgXCclMDMuMmZcJ2BgIGNhbiBiZSB0cmFuc2xhdGVkIHRvXG5gYFwnezowMy4yZn1cJ2BgLlxuXG5UaGUgbmV3IGZvcm1hdCBzeW50YXggYWxzbyBzdXBwb3J0cyBuZXcgYW5kIGRpZmZlcmVudCBvcHRpb25zLCBzaG93blxuaW4gdGhlIGZvbGxvdyBleGFtcGxlcy5cblxuQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBwb3NpdGlvbjpcblxuICAgPj4+IFwnezB9LCB7MX0sIHsyfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdhLCBiLCBjXCdcbiAgID4+PiBcJ3t9LCB7fSwge31cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJykgICMgMy4xKyBvbmx5XG4gICBcJ2EsIGIsIGNcJ1xuICAgPj4+IFwnezJ9LCB7MX0sIHswfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdjLCBiLCBhXCdcbiAgID4+PiBcJ3syfSwgezF9LCB7MH1cJy5mb3JtYXQoKlwnYWJjXCcpICAgICAgIyB1bnBhY2tpbmcgYXJndW1lbnQgc2VxdWVuY2VcbiAgIFwnYywgYiwgYVwnXG4gICA+Pj4gXCd7MH17MX17MH1cJy5mb3JtYXQoXCdhYnJhXCcsIFwnY2FkXCcpICAgIyBhcmd1bWVudHNcJyBpbmRpY2VzIGNhbiBiZSByZXBlYXRlZFxuICAgXCdhYnJhY2FkYWJyYVwnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHMgYnkgbmFtZTpcblxuICAgPj4+IFwnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sIHtsb25naXR1ZGV9XCcuZm9ybWF0KGxhdGl0dWRlPVwnMzcuMjROXCcsIGxvbmdpdHVkZT1cJy0xMTUuODFXXCcpXG4gICBcJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXXCdcbiAgID4+PiBjb29yZCA9IHtcJ2xhdGl0dWRlXCc6IFwnMzcuMjROXCcsIFwnbG9uZ2l0dWRlXCc6IFwnLTExNS44MVdcJ31cbiAgID4+PiBcJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCB7bG9uZ2l0dWRlfVwnLmZvcm1hdCgqKmNvb3JkKVxuICAgXCdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxV1wnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHNcJyBhdHRyaWJ1dGVzOlxuXG4gICA+Pj4gYyA9IDMtNWpcbiAgID4+PiAoXCdUaGUgY29tcGxleCBudW1iZXIgezB9IGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsIHBhcnQgezAucmVhbH0gXCdcbiAgIC4uLiAgXCdhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IHswLmltYWd9LlwnKS5mb3JtYXQoYylcbiAgIFwnVGhlIGNvbXBsZXggbnVtYmVyICgzLTVqKSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCBwYXJ0IDMuMCBhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IC01LjAuXCdcbiAgID4+PiBjbGFzcyBQb2ludDpcbiAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgsIHkpOlxuICAgLi4uICAgICAgICAgc2VsZi54LCBzZWxmLnkgPSB4LCB5XG4gICAuLi4gICAgIGRlZiBfX3N0cl9fKHNlbGYpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwnUG9pbnQoe3NlbGYueH0sIHtzZWxmLnl9KVwnLmZvcm1hdChzZWxmPXNlbGYpXG4gICAuLi5cbiAgID4+PiBzdHIoUG9pbnQoNCwgMikpXG4gICBcJ1BvaW50KDQsIDIpXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50c1wnIGl0ZW1zOlxuXG4gICA+Pj4gY29vcmQgPSAoMywgNSlcbiAgID4+PiBcJ1g6IHswWzBdfTsgIFk6IHswWzFdfVwnLmZvcm1hdChjb29yZClcbiAgIFwnWDogMzsgIFk6IDVcJ1xuXG5SZXBsYWNpbmcgYGAlc2BgIGFuZCBgYCVyYGA6XG5cbiAgID4+PiAicmVwcigpIHNob3dzIHF1b3RlczogeyFyfTsgc3RyKCkgZG9lc25cJ3Q6IHshc30iLmZvcm1hdChcJ3Rlc3QxXCcsIFwndGVzdDJcJylcbiAgICJyZXByKCkgc2hvd3MgcXVvdGVzOiBcJ3Rlc3QxXCc7IHN0cigpIGRvZXNuXCd0OiB0ZXN0MiJcblxuQWxpZ25pbmcgdGhlIHRleHQgYW5kIHNwZWNpZnlpbmcgYSB3aWR0aDpcblxuICAgPj4+IFwnezo8MzB9XCcuZm9ybWF0KFwnbGVmdCBhbGlnbmVkXCcpXG4gICBcJ2xlZnQgYWxpZ25lZCAgICAgICAgICAgICAgICAgIFwnXG4gICA+Pj4gXCd7Oj4zMH1cJy5mb3JtYXQoXCdyaWdodCBhbGlnbmVkXCcpXG4gICBcJyAgICAgICAgICAgICAgICAgcmlnaHQgYWxpZ25lZFwnXG4gICA+Pj4gXCd7Ol4zMH1cJy5mb3JtYXQoXCdjZW50ZXJlZFwnKVxuICAgXCcgICAgICAgICAgIGNlbnRlcmVkICAgICAgICAgICBcJ1xuICAgPj4+IFwnezoqXjMwfVwnLmZvcm1hdChcJ2NlbnRlcmVkXCcpICAjIHVzZSBcJypcJyBhcyBhIGZpbGwgY2hhclxuICAgXCcqKioqKioqKioqKmNlbnRlcmVkKioqKioqKioqKipcJ1xuXG5SZXBsYWNpbmcgYGAlK2ZgYCwgYGAlLWZgYCwgYW5kIGBgJSBmYGAgYW5kIHNwZWNpZnlpbmcgYSBzaWduOlxuXG4gICA+Pj4gXCd7OitmfTsgezorZn1cJy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgaXQgYWx3YXlzXG4gICBcJyszLjE0MDAwMDsgLTMuMTQwMDAwXCdcbiAgID4+PiBcJ3s6IGZ9OyB7OiBmfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBhIHNwYWNlIGZvciBwb3NpdGl2ZSBudW1iZXJzXG4gICBcJyAzLjE0MDAwMDsgLTMuMTQwMDAwXCdcbiAgID4+PiBcJ3s6LWZ9OyB7Oi1mfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBvbmx5IHRoZSBtaW51cyAtLSBzYW1lIGFzIFwnezpmfTsgezpmfVwnXG4gICBcJzMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuXG5SZXBsYWNpbmcgYGAleGBgIGFuZCBgYCVvYGAgYW5kIGNvbnZlcnRpbmcgdGhlIHZhbHVlIHRvIGRpZmZlcmVudFxuYmFzZXM6XG5cbiAgID4+PiAjIGZvcm1hdCBhbHNvIHN1cHBvcnRzIGJpbmFyeSBudW1iZXJzXG4gICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOnh9OyAgb2N0OiB7MDpvfTsgIGJpbjogezA6Yn0iLmZvcm1hdCg0MilcbiAgIFwnaW50OiA0MjsgIGhleDogMmE7ICBvY3Q6IDUyOyAgYmluOiAxMDEwMTBcJ1xuICAgPj4+ICMgd2l0aCAweCwgMG8sIG9yIDBiIGFzIHByZWZpeDpcbiAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6I3h9OyAgb2N0OiB7MDojb307ICBiaW46IHswOiNifSIuZm9ybWF0KDQyKVxuICAgXCdpbnQ6IDQyOyAgaGV4OiAweDJhOyAgb2N0OiAwbzUyOyAgYmluOiAwYjEwMTAxMFwnXG5cblVzaW5nIHRoZSBjb21tYSBhcyBhIHRob3VzYW5kcyBzZXBhcmF0b3I6XG5cbiAgID4+PiBcJ3s6LH1cJy5mb3JtYXQoMTIzNDU2Nzg5MClcbiAgIFwnMSwyMzQsNTY3LDg5MFwnXG5cbkV4cHJlc3NpbmcgYSBwZXJjZW50YWdlOlxuXG4gICA+Pj4gcG9pbnRzID0gMTlcbiAgID4+PiB0b3RhbCA9IDIyXG4gICA+Pj4gXCdDb3JyZWN0IGFuc3dlcnM6IHs6LjIlfVwnLmZvcm1hdChwb2ludHMvdG90YWwpXG4gICBcJ0NvcnJlY3QgYW5zd2VyczogODYuMzYlXCdcblxuVXNpbmcgdHlwZS1zcGVjaWZpYyBmb3JtYXR0aW5nOlxuXG4gICA+Pj4gaW1wb3J0IGRhdGV0aW1lXG4gICA+Pj4gZCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTAsIDcsIDQsIDEyLCAxNSwgNTgpXG4gICA+Pj4gXCd7OiVZLSVtLSVkICVIOiVNOiVTfVwnLmZvcm1hdChkKVxuICAgXCcyMDEwLTA3LTA0IDEyOjE1OjU4XCdcblxuTmVzdGluZyBhcmd1bWVudHMgYW5kIG1vcmUgY29tcGxleCBleGFtcGxlczpcblxuICAgPj4+IGZvciBhbGlnbiwgdGV4dCBpbiB6aXAoXCc8Xj5cJywgW1wnbGVmdFwnLCBcJ2NlbnRlclwnLCBcJ3JpZ2h0XCddKTpcbiAgIC4uLiAgICAgXCd7MDp7ZmlsbH17YWxpZ259MTZ9XCcuZm9ybWF0KHRleHQsIGZpbGw9YWxpZ24sIGFsaWduPWFsaWduKVxuICAgLi4uXG4gICBcJ2xlZnQ8PDw8PDw8PDw8PDxcJ1xuICAgXCdeXl5eXmNlbnRlcl5eXl5eXCdcbiAgIFwnPj4+Pj4+Pj4+Pj5yaWdodFwnXG4gICA+Pj5cbiAgID4+PiBvY3RldHMgPSBbMTkyLCAxNjgsIDAsIDFdXG4gICA+Pj4gXCd7OjAyWH17OjAyWH17OjAyWH17OjAyWH1cJy5mb3JtYXQoKm9jdGV0cylcbiAgIFwnQzBBODAwMDFcJ1xuICAgPj4+IGludChfLCAxNilcbiAgIDMyMzIyMzU1MjFcbiAgID4+PlxuICAgPj4+IHdpZHRoID0gNVxuICAgPj4+IGZvciBudW0gaW4gcmFuZ2UoNSwxMik6XG4gICAuLi4gICAgIGZvciBiYXNlIGluIFwnZFhvYlwnOlxuICAgLi4uICAgICAgICAgcHJpbnQoXCd7MDp7d2lkdGh9e2Jhc2V9fVwnLmZvcm1hdChudW0sIGJhc2U9YmFzZSwgd2lkdGg9d2lkdGgpLCBlbmQ9XCcgXCcpXG4gICAuLi4gICAgIHByaW50KClcbiAgIC4uLlxuICAgICAgIDUgICAgIDUgICAgIDUgICAxMDFcbiAgICAgICA2ICAgICA2ICAgICA2ICAgMTEwXG4gICAgICAgNyAgICAgNyAgICAgNyAgIDExMVxuICAgICAgIDggICAgIDggICAgMTAgIDEwMDBcbiAgICAgICA5ICAgICA5ICAgIDExICAxMDAxXG4gICAgICAxMCAgICAgQSAgICAxMiAgMTAxMFxuICAgICAgMTEgICAgIEIgICAgMTMgIDEwMTFcbicsCi0gJ2Z1bmN0aW9uJzogJ1xuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbioqKioqKioqKioqKioqKioqKioqXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFtwYXJhbWV0ZXJfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICAoICAiKiIgW3BhcmFtZXRlcl0gKCIsIiBkZWZwYXJhbWV0ZXIpKlxuICAgICAgICAgICAgICAgICAgICAgIFssICIqKiIgcGFyYW1ldGVyXVxuICAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB8IGRlZnBhcmFtZXRlciBbIiwiXSApXG4gICBwYXJhbWV0ZXIgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4gICBkZWZwYXJhbWV0ZXIgICA6Oj0gcGFyYW1ldGVyIFsiPSIgZXhwcmVzc2lvbl1cbiAgIGZ1bmNuYW1lICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0cyBleGVjdXRpb24gYmluZHNcbnRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uIG9iamVjdFxuKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gIFRoaXNcbmZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgbmFtZXNwYWNlXG5hcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBiZSB1c2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC5cblxuVGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZG9lcyBub3QgZXhlY3V0ZSB0aGUgZnVuY3Rpb24gYm9keTsgdGhpcyBnZXRzXG5leGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBtYXkgYmUgd3JhcHBlZCBieSBvbmUgb3IgbW9yZSAqZGVjb3JhdG9yKlxuZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzXG5kZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIFRoZVxucmVzdWx0IG11c3QgYmUgYSBjYWxsYWJsZSwgd2hpY2ggaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlvbiBvYmplY3RcbmFzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlIGZ1bmN0aW9uIG5hbWVcbmluc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgaW5cbm5lc3RlZCBmYXNoaW9uLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGRlZiBmdW5jKCk6IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBkZWYgZnVuYygpOiBwYXNzXG4gICBmdW5jID0gZjEoYXJnKShmMihmdW5jKSlcblxuV2hlbiBvbmUgb3IgbW9yZSBwYXJhbWV0ZXJzIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogYGA9YGBcbipleHByZXNzaW9uKiwgdGhlIGZ1bmN0aW9uIGlzIHNhaWQgdG8gaGF2ZSAiZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzLiJcbkZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiYGAqYGAiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS1cbnRoaXMgaXMgYSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gdGhhdCBpcyBub3QgZXhwcmVzc2VkIGJ5IHRoZSBncmFtbWFyLlxuXG4qKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb25cbmlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgb25jZSwgd2hlblxudGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtY29tcHV0ZWQiIHZhbHVlIGlzXG51c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgd2hlbiBhXG5kZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoIGFzIGEgbGlzdCBvciBhIGRpY3Rpb25hcnk6XG5pZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieSBhcHBlbmRpbmcgYW4gaXRlbSB0byBhXG5saXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLiBUaGlzIGlzIGdlbmVyYWxseSBub3RcbndoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8gdXNlIGBgTm9uZWBgIGFzIHRoZVxuZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiJgYCppZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nXG5hbnkgZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZlxudGhlIGZvcm0gImBgKippZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3XG5kaWN0aW9uYXJ5IHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEgbmV3XG5lbXB0eSBkaWN0aW9uYXJ5LiBQYXJhbWV0ZXJzIGFmdGVyICJgYCpgYCIgb3IgImBgKmlkZW50aWZpZXJgYCIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gImBgOiBleHByZXNzaW9uYGAiXG5mb2xsb3dpbmcgdGhlIHBhcmFtZXRlciBuYW1lLiAgQW55IHBhcmFtZXRlciBtYXkgaGF2ZSBhbiBhbm5vdGF0aW9uXG5ldmVuIHRob3NlIG9mIHRoZSBmb3JtIGBgKmlkZW50aWZpZXJgYCBvciBgYCoqaWRlbnRpZmllcmBgLiAgRnVuY3Rpb25zXG5tYXkgaGF2ZSAicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICJgYC0+IGV4cHJlc3Npb25gYCIgYWZ0ZXIgdGhlXG5wYXJhbWV0ZXIgbGlzdC4gIFRoZXNlIGFubm90YXRpb25zIGNhbiBiZSBhbnkgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb25cbmFuZCBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuXG5Bbm5vdGF0aW9ucyBtYXkgYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW5cbnRoZSBzb3VyY2UgY29kZS4gIFRoZSBwcmVzZW5jZSBvZiBhbm5vdGF0aW9ucyBkb2VzIG5vdCBjaGFuZ2UgdGhlXG5zZW1hbnRpY3Mgb2YgYSBmdW5jdGlvbi4gIFRoZSBhbm5vdGF0aW9uIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGFzXG52YWx1ZXMgb2YgYSBkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzXCcgbmFtZXMgaW4gdGhlXG5gYF9fYW5ub3RhdGlvbnNfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGEgZm9ybXMsXG5kZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYSBmb3JtIGlzIG1lcmVseSBhXG5zaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uOyBhIGZ1bmN0aW9uIGRlZmluZWQgaW5cbmEgImBgZGVmYGAiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvciBhc3NpZ25lZCB0byBhbm90aGVyIG5hbWVcbmp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGEgZm9ybS4gIFRoZSAiYGBkZWZgYCIgZm9ybSBpc1xuYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSBpdCBhbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZVxuc3RhdGVtZW50cyBhbmQgYW5ub3RhdGlvbnMuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIEZ1bmN0aW9ucyBhcmUgZmlyc3QtY2xhc3Mgb2JqZWN0cy4gIEEgImBgZGVmYGAiXG5mb3JtIGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIGxvY2FsIGZ1bmN0aW9uXG50aGF0IGNhbiBiZSByZXR1cm5lZCBvciBwYXNzZWQgYXJvdW5kLiAgRnJlZSB2YXJpYWJsZXMgdXNlZCBpbiB0aGVcbm5lc3RlZCBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlIGZ1bmN0aW9uXG5jb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiAqTmFtaW5nIGFuZCBiaW5kaW5nKiBmb3IgZGV0YWlscy5cbicsCisgJ2Zvcm1hdHN0cmluZ3MnOiAnXG5Gb3JtYXQgU3RyaW5nIFN5bnRheFxuKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGBgc3RyLmZvcm1hdCgpYGAgbWV0aG9kIGFuZCB0aGUgYGBGb3JtYXR0ZXJgYCBjbGFzcyBzaGFyZSB0aGUgc2FtZVxuc3ludGF4IGZvciBmb3JtYXQgc3RyaW5ncyAoYWx0aG91Z2ggaW4gdGhlIGNhc2Ugb2YgYGBGb3JtYXR0ZXJgYCxcbnN1YmNsYXNzZXMgY2FuIGRlZmluZSB0aGVpciBvd24gZm9ybWF0IHN0cmluZyBzeW50YXgpLlxuXG5Gb3JtYXQgc3RyaW5ncyBjb250YWluICJyZXBsYWNlbWVudCBmaWVsZHMiIHN1cnJvdW5kZWQgYnkgY3VybHkgYnJhY2VzXG5gYHt9YGAuIEFueXRoaW5nIHRoYXQgaXMgbm90IGNvbnRhaW5lZCBpbiBicmFjZXMgaXMgY29uc2lkZXJlZCBsaXRlcmFsXG50ZXh0LCB3aGljaCBpcyBjb3BpZWQgdW5jaGFuZ2VkIHRvIHRoZSBvdXRwdXQuICBJZiB5b3UgbmVlZCB0byBpbmNsdWRlXG5hIGJyYWNlIGNoYXJhY3RlciBpbiB0aGUgbGl0ZXJhbCB0ZXh0LCBpdCBjYW4gYmUgZXNjYXBlZCBieSBkb3VibGluZzpcbmBge3tgYCBhbmQgYGB9fWBgLlxuXG5UaGUgZ3JhbW1hciBmb3IgYSByZXBsYWNlbWVudCBmaWVsZCBpcyBhcyBmb2xsb3dzOlxuXG4gICAgICByZXBsYWNlbWVudF9maWVsZCA6Oj0gInsiIFtmaWVsZF9uYW1lXSBbIiEiIGNvbnZlcnNpb25dIFsiOiIgZm9ybWF0X3NwZWNdICJ9IlxuICAgICAgZmllbGRfbmFtZSAgICAgICAgOjo9IGFyZ19uYW1lICgiLiIgYXR0cmlidXRlX25hbWUgfCAiWyIgZWxlbWVudF9pbmRleCAiXSIpKlxuICAgICAgYXJnX25hbWUgICAgICAgICAgOjo9IFtpZGVudGlmaWVyIHwgaW50ZWdlcl1cbiAgICAgIGF0dHJpYnV0ZV9uYW1lICAgIDo6PSBpZGVudGlmaWVyXG4gICAgICBlbGVtZW50X2luZGV4ICAgICA6Oj0gaW50ZWdlciB8IGluZGV4X3N0cmluZ1xuICAgICAgaW5kZXhfc3RyaW5nICAgICAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIl0iPiArXG4gICAgICBjb252ZXJzaW9uICAgICAgICA6Oj0gInIiIHwgInMiIHwgImEiXG4gICAgICBmb3JtYXRfc3BlYyAgICAgICA6Oj0gPGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uPlxuXG5JbiBsZXNzIGZvcm1hbCB0ZXJtcywgdGhlIHJlcGxhY2VtZW50IGZpZWxkIGNhbiBzdGFydCB3aXRoIGFcbipmaWVsZF9uYW1lKiB0aGF0IHNwZWNpZmllcyB0aGUgb2JqZWN0IHdob3NlIHZhbHVlIGlzIHRvIGJlIGZvcm1hdHRlZFxuYW5kIGluc2VydGVkIGludG8gdGhlIG91dHB1dCBpbnN0ZWFkIG9mIHRoZSByZXBsYWNlbWVudCBmaWVsZC4gVGhlXG4qZmllbGRfbmFtZSogaXMgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhICAqY29udmVyc2lvbiogZmllbGQsIHdoaWNoIGlzXG5wcmVjZWRlZCBieSBhbiBleGNsYW1hdGlvbiBwb2ludCBgYFwnIVwnYGAsIGFuZCBhICpmb3JtYXRfc3BlYyosIHdoaWNoXG5pcyBwcmVjZWRlZCBieSBhIGNvbG9uIGBgXCc6XCdgYC4gIFRoZXNlIHNwZWNpZnkgYSBub24tZGVmYXVsdCBmb3JtYXRcbmZvciB0aGUgcmVwbGFjZW1lbnQgdmFsdWUuXG5cblNlZSBhbHNvIHRoZSAqRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSogc2VjdGlvbi5cblxuVGhlICpmaWVsZF9uYW1lKiBpdHNlbGYgYmVnaW5zIHdpdGggYW4gKmFyZ19uYW1lKiB0aGF0IGlzIGVpdGhlciBhXG5udW1iZXIgb3IgYSBrZXl3b3JkLiAgSWYgaXRcJ3MgYSBudW1iZXIsIGl0IHJlZmVycyB0byBhIHBvc2l0aW9uYWxcbmFyZ3VtZW50LCBhbmQgaWYgaXRcJ3MgYSBrZXl3b3JkLCBpdCByZWZlcnMgdG8gYSBuYW1lZCBrZXl3b3JkXG5hcmd1bWVudC4gIElmIHRoZSBudW1lcmljYWwgYXJnX25hbWVzIGluIGEgZm9ybWF0IHN0cmluZyBhcmUgMCwgMSwgMixcbi4uLiBpbiBzZXF1ZW5jZSwgdGhleSBjYW4gYWxsIGJlIG9taXR0ZWQgKG5vdCBqdXN0IHNvbWUpIGFuZCB0aGVcbm51bWJlcnMgMCwgMSwgMiwgLi4uIHdpbGwgYmUgYXV0b21hdGljYWxseSBpbnNlcnRlZCBpbiB0aGF0IG9yZGVyLlxuQmVjYXVzZSAqYXJnX25hbWUqIGlzIG5vdCBxdW90ZS1kZWxpbWl0ZWQsIGl0IGlzIG5vdCBwb3NzaWJsZSB0b1xuc3BlY2lmeSBhcmJpdHJhcnkgZGljdGlvbmFyeSBrZXlzIChlLmcuLCB0aGUgc3RyaW5ncyBgYFwnMTBcJ2BgIG9yXG5gYFwnOi1dXCdgYCkgd2l0aGluIGEgZm9ybWF0IHN0cmluZy4gVGhlICphcmdfbmFtZSogY2FuIGJlIGZvbGxvd2VkIGJ5XG5hbnkgbnVtYmVyIG9mIGluZGV4IG9yIGF0dHJpYnV0ZSBleHByZXNzaW9ucy4gQW4gZXhwcmVzc2lvbiBvZiB0aGVcbmZvcm0gYGBcJy5uYW1lXCdgYCBzZWxlY3RzIHRoZSBuYW1lZCBhdHRyaWJ1dGUgdXNpbmcgYGBnZXRhdHRyKClgYCxcbndoaWxlIGFuIGV4cHJlc3Npb24gb2YgdGhlIGZvcm0gYGBcJ1tpbmRleF1cJ2BgIGRvZXMgYW4gaW5kZXggbG9va3VwXG51c2luZyBgYF9fZ2V0aXRlbV9fKClgYC5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogVGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgc3BlY2lmaWVycyBjYW4gYmVcbm9taXR0ZWQsIHNvIGBgXCd7fSB7fVwnYGAgaXMgZXF1aXZhbGVudCB0byBgYFwnezB9IHsxfVwnYGAuXG5cblNvbWUgc2ltcGxlIGZvcm1hdCBzdHJpbmcgZXhhbXBsZXM6XG5cbiAgICJGaXJzdCwgdGhvdSBzaGFsdCBjb3VudCB0byB7MH0iICMgUmVmZXJlbmNlcyBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAiQnJpbmcgbWUgYSB7fSIgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0bHkgcmVmZXJlbmNlcyB0aGUgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgIkZyb20ge30gdG8ge30iICAgICAgICAgICAgICAgICAgIyBTYW1lIGFzICJGcm9tIHswfSB0byB7MX0iXG4gICAiTXkgcXVlc3QgaXMge25hbWV9IiAgICAgICAgICAgICAjIFJlZmVyZW5jZXMga2V5d29yZCBhcmd1bWVudCBcJ25hbWVcJ1xuICAgIldlaWdodCBpbiB0b25zIHswLndlaWdodH0iICAgICAgIyBcJ3dlaWdodFwnIGF0dHJpYnV0ZSBvZiBmaXJzdCBwb3NpdGlvbmFsIGFyZ1xuICAgIlVuaXRzIGRlc3Ryb3llZDoge3BsYXllcnNbMF19IiAgIyBGaXJzdCBlbGVtZW50IG9mIGtleXdvcmQgYXJndW1lbnQgXCdwbGF5ZXJzXCcuXG5cblRoZSAqY29udmVyc2lvbiogZmllbGQgY2F1c2VzIGEgdHlwZSBjb2VyY2lvbiBiZWZvcmUgZm9ybWF0dGluZy5cbk5vcm1hbGx5LCB0aGUgam9iIG9mIGZvcm1hdHRpbmcgYSB2YWx1ZSBpcyBkb25lIGJ5IHRoZVxuYGBfX2Zvcm1hdF9fKClgYCBtZXRob2Qgb2YgdGhlIHZhbHVlIGl0c2VsZi4gIEhvd2V2ZXIsIGluIHNvbWUgY2FzZXNcbml0IGlzIGRlc2lyYWJsZSB0byBmb3JjZSBhIHR5cGUgdG8gYmUgZm9ybWF0dGVkIGFzIGEgc3RyaW5nLFxub3ZlcnJpZGluZyBpdHMgb3duIGRlZmluaXRpb24gb2YgZm9ybWF0dGluZy4gIEJ5IGNvbnZlcnRpbmcgdGhlIHZhbHVlXG50byBhIHN0cmluZyBiZWZvcmUgY2FsbGluZyBgYF9fZm9ybWF0X18oKWBgLCB0aGUgbm9ybWFsIGZvcm1hdHRpbmdcbmxvZ2ljIGlzIGJ5cGFzc2VkLlxuXG5UaHJlZSBjb252ZXJzaW9uIGZsYWdzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkOiBgYFwnIXNcJ2BgIHdoaWNoIGNhbGxzXG5gYHN0cigpYGAgb24gdGhlIHZhbHVlLCBgYFwnIXJcJ2BgIHdoaWNoIGNhbGxzIGBgcmVwcigpYGAgYW5kIGBgXCchYVwnYGBcbndoaWNoIGNhbGxzIGBgYXNjaWkoKWBgLlxuXG5Tb21lIGV4YW1wbGVzOlxuXG4gICAiSGFyb2xkXCdzIGEgY2xldmVyIHswIXN9IiAgICAgICAgIyBDYWxscyBzdHIoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcbiAgICJCcmluZyBvdXQgdGhlIGhvbHkge25hbWUhcn0iICAgICMgQ2FsbHMgcmVwcigpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuICAgIk1vcmUgeyFhfSIgICAgICAgICAgICAgICAgICAgICAgIyBDYWxscyBhc2NpaSgpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuXG5UaGUgKmZvcm1hdF9zcGVjKiBmaWVsZCBjb250YWlucyBhIHNwZWNpZmljYXRpb24gb2YgaG93IHRoZSB2YWx1ZVxuc2hvdWxkIGJlIHByZXNlbnRlZCwgaW5jbHVkaW5nIHN1Y2ggZGV0YWlscyBhcyBmaWVsZCB3aWR0aCwgYWxpZ25tZW50LFxucGFkZGluZywgZGVjaW1hbCBwcmVjaXNpb24gYW5kIHNvIG9uLiAgRWFjaCB2YWx1ZSB0eXBlIGNhbiBkZWZpbmUgaXRzXG5vd24gImZvcm1hdHRpbmcgbWluaS1sYW5ndWFnZSIgb3IgaW50ZXJwcmV0YXRpb24gb2YgdGhlICpmb3JtYXRfc3BlYyouXG5cbk1vc3QgYnVpbHQtaW4gdHlwZXMgc3VwcG9ydCBhIGNvbW1vbiBmb3JtYXR0aW5nIG1pbmktbGFuZ3VhZ2UsIHdoaWNoXG5pcyBkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbi5cblxuQSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNhbiBhbHNvIGluY2x1ZGUgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkc1xud2l0aGluIGl0LiBUaGVzZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzIGNhbiBjb250YWluIG9ubHkgYSBmaWVsZFxubmFtZTsgY29udmVyc2lvbiBmbGFncyBhbmQgZm9ybWF0IHNwZWNpZmljYXRpb25zIGFyZSBub3QgYWxsb3dlZC4gIFRoZVxucmVwbGFjZW1lbnQgZmllbGRzIHdpdGhpbiB0aGUgZm9ybWF0X3NwZWMgYXJlIHN1YnN0aXR1dGVkIGJlZm9yZSB0aGVcbipmb3JtYXRfc3BlYyogc3RyaW5nIGlzIGludGVycHJldGVkLiBUaGlzIGFsbG93cyB0aGUgZm9ybWF0dGluZyBvZiBhXG52YWx1ZSB0byBiZSBkeW5hbWljYWxseSBzcGVjaWZpZWQuXG5cblNlZSB0aGUgKkZvcm1hdCBleGFtcGxlcyogc2VjdGlvbiBmb3Igc29tZSBleGFtcGxlcy5cblxuXG5Gb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiJGb3JtYXQgc3BlY2lmaWNhdGlvbnMiIGFyZSB1c2VkIHdpdGhpbiByZXBsYWNlbWVudCBmaWVsZHMgY29udGFpbmVkXG53aXRoaW4gYSBmb3JtYXQgc3RyaW5nIHRvIGRlZmluZSBob3cgaW5kaXZpZHVhbCB2YWx1ZXMgYXJlIHByZXNlbnRlZFxuKHNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqKS4gIFRoZXkgY2FuIGFsc28gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZVxuYnVpbHQtaW4gYGBmb3JtYXQoKWBgIGZ1bmN0aW9uLiAgRWFjaCBmb3JtYXR0YWJsZSB0eXBlIG1heSBkZWZpbmUgaG93XG50aGUgZm9ybWF0IHNwZWNpZmljYXRpb24gaXMgdG8gYmUgaW50ZXJwcmV0ZWQuXG5cbk1vc3QgYnVpbHQtaW4gdHlwZXMgaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBmb3IgZm9ybWF0XG5zcGVjaWZpY2F0aW9ucywgYWx0aG91Z2ggc29tZSBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zIGFyZSBvbmx5XG5zdXBwb3J0ZWQgYnkgdGhlIG51bWVyaWMgdHlwZXMuXG5cbkEgZ2VuZXJhbCBjb252ZW50aW9uIGlzIHRoYXQgYW4gZW1wdHkgZm9ybWF0IHN0cmluZyAoYGAiImBgKSBwcm9kdWNlc1xudGhlIHNhbWUgcmVzdWx0IGFzIGlmIHlvdSBoYWQgY2FsbGVkIGBgc3RyKClgYCBvbiB0aGUgdmFsdWUuIEEgbm9uLVxuZW1wdHkgZm9ybWF0IHN0cmluZyB0eXBpY2FsbHkgbW9kaWZpZXMgdGhlIHJlc3VsdC5cblxuVGhlIGdlbmVyYWwgZm9ybSBvZiBhICpzdGFuZGFyZCBmb3JtYXQgc3BlY2lmaWVyKiBpczpcblxuICAgZm9ybWF0X3NwZWMgOjo9IFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW3R5cGVdXG4gICBmaWxsICAgICAgICA6Oj0gPGEgY2hhcmFjdGVyIG90aGVyIHRoYW4gXCd7XCcgb3IgXCd9XCc+XG4gICBhbGlnbiAgICAgICA6Oj0gIjwiIHwgIj4iIHwgIj0iIHwgIl4iXG4gICBzaWduICAgICAgICA6Oj0gIisiIHwgIi0iIHwgIiAiXG4gICB3aWR0aCAgICAgICA6Oj0gaW50ZWdlclxuICAgcHJlY2lzaW9uICAgOjo9IGludGVnZXJcbiAgIHR5cGUgICAgICAgIDo6PSAiYiIgfCAiYyIgfCAiZCIgfCAiZSIgfCAiRSIgfCAiZiIgfCAiRiIgfCAiZyIgfCAiRyIgfCAibiIgfCAibyIgfCAicyIgfCAieCIgfCAiWCIgfCAiJSJcblxuVGhlICpmaWxsKiBjaGFyYWN0ZXIgY2FuIGJlIGFueSBjaGFyYWN0ZXIgb3RoZXIgdGhhbiBcJ3tcJyBvciBcJ31cJy4gIFRoZVxucHJlc2VuY2Ugb2YgYSBmaWxsIGNoYXJhY3RlciBpcyBzaWduYWxlZCBieSB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZ1xuaXQsIHdoaWNoIG11c3QgYmUgb25lIG9mIHRoZSBhbGlnbm1lbnQgb3B0aW9ucy4gIElmIHRoZSBzZWNvbmRcbmNoYXJhY3RlciBvZiAqZm9ybWF0X3NwZWMqIGlzIG5vdCBhIHZhbGlkIGFsaWdubWVudCBvcHRpb24sIHRoZW4gaXQgaXNcbmFzc3VtZWQgdGhhdCBib3RoIHRoZSBmaWxsIGNoYXJhY3RlciBhbmQgdGhlIGFsaWdubWVudCBvcHRpb24gYXJlXG5hYnNlbnQuXG5cblRoZSBtZWFuaW5nIG9mIHRoZSB2YXJpb3VzIGFsaWdubWVudCBvcHRpb25zIGlzIGFzIGZvbGxvd3M6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wdGlvbiAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJzxcJ2BgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGxlZnQtYWxpZ25lZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UgKHRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIG1vc3Qgb2JqZWN0cykuICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnPlwnYGAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgcmlnaHQtYWxpZ25lZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbnVtYmVycykuICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCc9XCdgYCAgIHwgRm9yY2VzIHRoZSBwYWRkaW5nIHRvIGJlIHBsYWNlZCBhZnRlciB0aGUgc2lnbiAoaWYgYW55KSAgICB8XG4gICB8ICAgICAgICAgICB8IGJ1dCBiZWZvcmUgdGhlIGRpZ2l0cy4gIFRoaXMgaXMgdXNlZCBmb3IgcHJpbnRpbmcgZmllbGRzICAgfFxuICAgfCAgICAgICAgICAgfCBpbiB0aGUgZm9ybSBcJyswMDAwMDAxMjBcJy4gVGhpcyBhbGlnbm1lbnQgb3B0aW9uIGlzIG9ubHkgICAgfFxuICAgfCAgICAgICAgICAgfCB2YWxpZCBmb3IgbnVtZXJpYyB0eXBlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdeXCdgYCAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBjZW50ZXJlZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZSB0aGF0IHVubGVzcyBhIG1pbmltdW0gZmllbGQgd2lkdGggaXMgZGVmaW5lZCwgdGhlIGZpZWxkIHdpZHRoXG53aWxsIGFsd2F5cyBiZSB0aGUgc2FtZSBzaXplIGFzIHRoZSBkYXRhIHRvIGZpbGwgaXQsIHNvIHRoYXQgdGhlXG5hbGlnbm1lbnQgb3B0aW9uIGhhcyBubyBtZWFuaW5nIGluIHRoaXMgY2FzZS5cblxuVGhlICpzaWduKiBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgbnVtYmVyIHR5cGVzLCBhbmQgY2FuIGJlIG9uZSBvZlxudGhlIGZvbGxvd2luZzpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3B0aW9uICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCBgYFwnK1wnYGAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCBmb3IgYm90aCBwb3NpdGl2ZSBhcyAgfFxuICAgfCAgICAgICAgICAgfCB3ZWxsIGFzIG5lZ2F0aXZlIG51bWJlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCctXCdgYCAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkIG9ubHkgZm9yIG5lZ2F0aXZlICAgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlcnMgKHRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IpLiAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgc3BhY2UgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBsZWFkaW5nIHNwYWNlIHNob3VsZCBiZSB1c2VkIG9uIHBvc2l0aXZlICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlcnMsIGFuZCBhIG1pbnVzIHNpZ24gb24gbmVnYXRpdmUgbnVtYmVycy4gICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuVGhlIGBgXCcjXCdgYCBvcHRpb24gY2F1c2VzIHRoZSAiYWx0ZXJuYXRlIGZvcm0iIHRvIGJlIHVzZWQgZm9yIHRoZVxuY29udmVyc2lvbi4gIFRoZSBhbHRlcm5hdGUgZm9ybSBpcyBkZWZpbmVkIGRpZmZlcmVudGx5IGZvciBkaWZmZXJlbnRcbnR5cGVzLiAgVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgaW50ZWdlciwgZmxvYXQsIGNvbXBsZXggYW5kXG5EZWNpbWFsIHR5cGVzLiBGb3IgaW50ZWdlcnMsIHdoZW4gYmluYXJ5LCBvY3RhbCwgb3IgaGV4YWRlY2ltYWwgb3V0cHV0XG5pcyB1c2VkLCB0aGlzIG9wdGlvbiBhZGRzIHRoZSBwcmVmaXggcmVzcGVjdGl2ZSBgYFwnMGJcJ2BgLCBgYFwnMG9cJ2BgLCBvclxuYGBcJzB4XCdgYCB0byB0aGUgb3V0cHV0IHZhbHVlLiBGb3IgZmxvYXRzLCBjb21wbGV4IGFuZCBEZWNpbWFsIHRoZVxuYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIHRoZSByZXN1bHQgb2YgdGhlIGNvbnZlcnNpb24gdG8gYWx3YXlzIGNvbnRhaW4gYVxuZGVjaW1hbC1wb2ludCBjaGFyYWN0ZXIsIGV2ZW4gaWYgbm8gZGlnaXRzIGZvbGxvdyBpdC4gTm9ybWFsbHksIGFcbmRlY2ltYWwtcG9pbnQgY2hhcmFjdGVyIGFwcGVhcnMgaW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjb252ZXJzaW9uc1xub25seSBpZiBhIGRpZ2l0IGZvbGxvd3MgaXQuIEluIGFkZGl0aW9uLCBmb3IgYGBcJ2dcJ2BgIGFuZCBgYFwnR1wnYGBcbmNvbnZlcnNpb25zLCB0cmFpbGluZyB6ZXJvcyBhcmUgbm90IHJlbW92ZWQgZnJvbSB0aGUgcmVzdWx0LlxuXG5UaGUgYGBcJyxcJ2BgIG9wdGlvbiBzaWduYWxzIHRoZSB1c2Ugb2YgYSBjb21tYSBmb3IgYSB0aG91c2FuZHNcbnNlcGFyYXRvci4gRm9yIGEgbG9jYWxlIGF3YXJlIHNlcGFyYXRvciwgdXNlIHRoZSBgYFwnblwnYGAgaW50ZWdlclxucHJlc2VudGF0aW9uIHR5cGUgaW5zdGVhZC5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogQWRkZWQgdGhlIGBgXCcsXCdgYCBvcHRpb24gKHNlZSBhbHNvICoqUEVQXG4zNzgqKikuXG5cbip3aWR0aCogaXMgYSBkZWNpbWFsIGludGVnZXIgZGVmaW5pbmcgdGhlIG1pbmltdW0gZmllbGQgd2lkdGguICBJZiBub3RcbnNwZWNpZmllZCwgdGhlbiB0aGUgZmllbGQgd2lkdGggd2lsbCBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjb250ZW50LlxuXG5QcmVjZWRpbmcgdGhlICp3aWR0aCogZmllbGQgYnkgYSB6ZXJvIChgYFwnMFwnYGApIGNoYXJhY3RlciBlbmFibGVzXG5zaWduLWF3YXJlIHplcm8tcGFkZGluZyBmb3IgbnVtZXJpYyB0eXBlcy4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBhXG4qZmlsbCogY2hhcmFjdGVyIG9mIGBgXCcwXCdgYCB3aXRoIGFuICphbGlnbm1lbnQqIHR5cGUgb2YgYGBcJz1cJ2BgLlxuXG5UaGUgKnByZWNpc2lvbiogaXMgYSBkZWNpbWFsIG51bWJlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpZ2l0cyBzaG91bGRcbmJlIGRpc3BsYXllZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZVxuZm9ybWF0dGVkIHdpdGggYGBcJ2ZcJ2BgIGFuZCBgYFwnRlwnYGAsIG9yIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGRlY2ltYWxcbnBvaW50IGZvciBhIGZsb2F0aW5nIHBvaW50IHZhbHVlIGZvcm1hdHRlZCB3aXRoIGBgXCdnXCdgYCBvciBgYFwnR1wnYGAuXG5Gb3Igbm9uLW51bWJlciB0eXBlcyB0aGUgZmllbGQgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGZpZWxkIHNpemUgLSBpblxub3RoZXIgd29yZHMsIGhvdyBtYW55IGNoYXJhY3RlcnMgd2lsbCBiZSB1c2VkIGZyb20gdGhlIGZpZWxkIGNvbnRlbnQuXG5UaGUgKnByZWNpc2lvbiogaXMgbm90IGFsbG93ZWQgZm9yIGludGVnZXIgdmFsdWVzLlxuXG5GaW5hbGx5LCB0aGUgKnR5cGUqIGRldGVybWluZXMgaG93IHRoZSBkYXRhIHNob3VsZCBiZSBwcmVzZW50ZWQuXG5cblRoZSBhdmFpbGFibGUgc3RyaW5nIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ3NcJ2BgICAgfCBTdHJpbmcgZm9ybWF0LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHR5cGUgZm9yIHN0cmluZ3MgYW5kICAgIHxcbiAgIHwgICAgICAgICAgIHwgbWF5IGJlIG9taXR0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyBgYFwnc1wnYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuVGhlIGF2YWlsYWJsZSBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ2JcJ2BgICAgfCBCaW5hcnkgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAyLiAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdjXCdgYCAgIHwgQ2hhcmFjdGVyLiBDb252ZXJ0cyB0aGUgaW50ZWdlciB0byB0aGUgY29ycmVzcG9uZGluZyAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHVuaWNvZGUgY2hhcmFjdGVyIGJlZm9yZSBwcmludGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ2RcJ2BgICAgfCBEZWNpbWFsIEludGVnZXIuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDEwLiAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdvXCdgYCAgIHwgT2N0YWwgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSA4LiAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwneFwnYGAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDE2LCB1c2luZyBsb3dlci0gICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdYXCdgYCAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMTYsIHVzaW5nIHVwcGVyLSAgICB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSA5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ25cJ2BgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgYGBcJ2RcJ2BgLCBleGNlcHQgdGhhdCBpdCB1c2VzICAgfFxuICAgfCAgICAgICAgICAgfCB0aGUgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlIGFwcHJvcHJpYXRlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVyIHNlcGFyYXRvciBjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyBgYFwnZFwnYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIHByZXNlbnRhdGlvbiB0eXBlcywgaW50ZWdlcnMgY2FuIGJlIGZvcm1hdHRlZFxud2l0aCB0aGUgZmxvYXRpbmcgcG9pbnQgcHJlc2VudGF0aW9uIHR5cGVzIGxpc3RlZCBiZWxvdyAoZXhjZXB0XG5gYFwnblwnYGAgYW5kIE5vbmUpLiBXaGVuIGRvaW5nIHNvLCBgYGZsb2F0KClgYCBpcyB1c2VkIHRvIGNvbnZlcnQgdGhlXG5pbnRlZ2VyIHRvIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGJlZm9yZSBmb3JtYXR0aW5nLlxuXG5UaGUgYXZhaWxhYmxlIHByZXNlbnRhdGlvbiB0eXBlcyBmb3IgZmxvYXRpbmcgcG9pbnQgYW5kIGRlY2ltYWwgdmFsdWVzXG5hcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ2VcJ2BgICAgfCBFeHBvbmVudCBub3RhdGlvbi4gUHJpbnRzIHRoZSBudW1iZXIgaW4gc2NpZW50aWZpYyAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbm90YXRpb24gdXNpbmcgdGhlIGxldHRlciBcJ2VcJyB0byBpbmRpY2F0ZSB0aGUgZXhwb25lbnQuICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdFXCdgYCAgIHwgRXhwb25lbnQgbm90YXRpb24uIFNhbWUgYXMgYGBcJ2VcJ2BgIGV4Y2VwdCBpdCB1c2VzIGFuIHVwcGVyIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBcJ0VcJyBhcyB0aGUgc2VwYXJhdG9yIGNoYXJhY3Rlci4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdmXCdgYCAgIHwgRml4ZWQgcG9pbnQuIERpc3BsYXlzIHRoZSBudW1iZXIgYXMgYSBmaXhlZC1wb2ludCBudW1iZXIuICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnRlwnYGAgICB8IEZpeGVkIHBvaW50LiBTYW1lIGFzIGBgXCdmXCdgYCwgYnV0IGNvbnZlcnRzIGBgbmFuYGAgdG8gICAgICB8XG4gICB8ICAgICAgICAgICB8IGBgTkFOYGAgYW5kIGBgaW5mYGAgdG8gYGBJTkZgYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ2dcJ2BgICAgfCBHZW5lcmFsIGZvcm1hdC4gIEZvciBhIGdpdmVuIHByZWNpc2lvbiBgYHAgPj0gMWBgLCB0aGlzICAgIHxcbiAgIHwgICAgICAgICAgIHwgcm91bmRzIHRoZSBudW1iZXIgdG8gYGBwYGAgc2lnbmlmaWNhbnQgZGlnaXRzIGFuZCB0aGVuICAgICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdHMgdGhlIHJlc3VsdCBpbiBlaXRoZXIgZml4ZWQtcG9pbnQgZm9ybWF0IG9yIGluICAgICAgfFxuICAgfCAgICAgICAgICAgfCBzY2llbnRpZmljIG5vdGF0aW9uLCBkZXBlbmRpbmcgb24gaXRzIG1hZ25pdHVkZS4gIFRoZSAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcHJlY2lzZSBydWxlcyBhcmUgYXMgZm9sbG93czogc3VwcG9zZSB0aGF0IHRoZSByZXN1bHQgICAgICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlIGBgXCdlXCdgYCBhbmQgcHJlY2lzaW9uICAgICB8XG4gICB8ICAgICAgICAgICB8IGBgcC0xYGAgd291bGQgaGF2ZSBleHBvbmVudCBgYGV4cGBgLiAgVGhlbiBpZiBgYC00IDw9IGV4cCAgfFxuICAgfCAgICAgICAgICAgfCA8IHBgYCwgdGhlIG51bWJlciBpcyBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgYGBcJ2ZcJ2BgIGFuZCBwcmVjaXNpb24gYGBwLTEtZXhwYGAuIE90aGVyd2lzZSwgdGhlIG51bWJlciAgIHxcbiAgIHwgICAgICAgICAgIHwgaXMgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgYGBcJ2VcJ2BgIGFuZCBwcmVjaXNpb24gIHxcbiAgIHwgICAgICAgICAgIHwgYGBwLTFgYC4gSW4gYm90aCBjYXNlcyBpbnNpZ25pZmljYW50IHRyYWlsaW5nIHplcm9zIGFyZSAgICB8XG4gICB8ICAgICAgICAgICB8IHJlbW92ZWQgZnJvbSB0aGUgc2lnbmlmaWNhbmQsIGFuZCB0aGUgZGVjaW1hbCBwb2ludCBpcyAgICAgfFxuICAgfCAgICAgICAgICAgfCBhbHNvIHJlbW92ZWQgaWYgdGhlcmUgYXJlIG5vIHJlbWFpbmluZyBkaWdpdHMgZm9sbG93aW5nICAgIHxcbiAgIHwgICAgICAgICAgIHwgaXQuICBQb3NpdGl2ZSBhbmQgbmVnYXRpdmUgaW5maW5pdHksIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSB8XG4gICB8ICAgICAgICAgICB8IHplcm8sIGFuZCBuYW5zLCBhcmUgZm9ybWF0dGVkIGFzIGBgaW5mYGAsIGBgLWluZmBgLCBgYDBgYCwgfFxuICAgfCAgICAgICAgICAgfCBgYC0wYGAgYW5kIGBgbmFuYGAgcmVzcGVjdGl2ZWx5LCByZWdhcmRsZXNzIG9mIHRoZSAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcHJlY2lzaW9uLiAgQSBwcmVjaXNpb24gb2YgYGAwYGAgaXMgdHJlYXRlZCBhcyBlcXVpdmFsZW50ICB8XG4gICB8ICAgICAgICAgICB8IHRvIGEgcHJlY2lzaW9uIG9mIGBgMWBgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ0dcJ2BgICAgfCBHZW5lcmFsIGZvcm1hdC4gU2FtZSBhcyBgYFwnZ1wnYGAgZXhjZXB0IHN3aXRjaGVzIHRvIGBgXCdFXCdgYCB8XG4gICB8ICAgICAgICAgICB8IGlmIHRoZSBudW1iZXIgZ2V0cyB0b28gbGFyZ2UuIFRoZSByZXByZXNlbnRhdGlvbnMgb2YgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBpbmZpbml0eSBhbmQgTmFOIGFyZSB1cHBlcmNhc2VkLCB0b28uICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCduXCdgYCAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzIGBgXCdnXCdgYCwgZXhjZXB0IHRoYXQgaXQgdXNlcyAgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlIGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlciBzZXBhcmF0b3IgY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJyVcJ2BgICAgfCBQZXJjZW50YWdlLiBNdWx0aXBsaWVzIHRoZSBudW1iZXIgYnkgMTAwIGFuZCBkaXNwbGF5cyBpbiAgIHxcbiAgIHwgICAgICAgICAgIHwgZml4ZWQgKGBgXCdmXCdgYCkgZm9ybWF0LCBmb2xsb3dlZCBieSBhIHBlcmNlbnQgc2lnbi4gICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE5vbmUgICAgICB8IFNpbWlsYXIgdG8gYGBcJ2dcJ2BgLCBleGNlcHQgd2l0aCBhdCBsZWFzdCBvbmUgZGlnaXQgcGFzdCAgICB8XG4gICB8ICAgICAgICAgICB8IHRoZSBkZWNpbWFsIHBvaW50IGFuZCBhIGRlZmF1bHQgcHJlY2lzaW9uIG9mIDEyLiBUaGlzIGlzICAgfFxuICAgfCAgICAgICAgICAgfCBpbnRlbmRlZCB0byBtYXRjaCBgYHN0cigpYGAsIGV4Y2VwdCB5b3UgY2FuIGFkZCB0aGUgb3RoZXIgIHxcbiAgIHwgICAgICAgICAgIHwgZm9ybWF0IG1vZGlmaWVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5cbkZvcm1hdCBleGFtcGxlc1xuPT09PT09PT09PT09PT09XG5cblRoaXMgc2VjdGlvbiBjb250YWlucyBleGFtcGxlcyBvZiB0aGUgbmV3IGZvcm1hdCBzeW50YXggYW5kIGNvbXBhcmlzb25cbndpdGggdGhlIG9sZCBgYCVgYC1mb3JtYXR0aW5nLlxuXG5JbiBtb3N0IG9mIHRoZSBjYXNlcyB0aGUgc3ludGF4IGlzIHNpbWlsYXIgdG8gdGhlIG9sZFxuYGAlYGAtZm9ybWF0dGluZywgd2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlIGBge31gYCBhbmQgd2l0aCBgYDpgYCB1c2VkXG5pbnN0ZWFkIG9mIGBgJWBgLiBGb3IgZXhhbXBsZSwgYGBcJyUwMy4yZlwnYGAgY2FuIGJlIHRyYW5zbGF0ZWQgdG9cbmBgXCd7OjAzLjJmfVwnYGAuXG5cblRoZSBuZXcgZm9ybWF0IHN5bnRheCBhbHNvIHN1cHBvcnRzIG5ldyBhbmQgZGlmZmVyZW50IG9wdGlvbnMsIHNob3duXG5pbiB0aGUgZm9sbG93IGV4YW1wbGVzLlxuXG5BY2Nlc3NpbmcgYXJndW1lbnRzIGJ5IHBvc2l0aW9uOlxuXG4gICA+Pj4gXCd7MH0sIHsxfSwgezJ9XCcuZm9ybWF0KFwnYVwnLCBcJ2JcJywgXCdjXCcpXG4gICBcJ2EsIGIsIGNcJ1xuICAgPj4+IFwne30sIHt9LCB7fVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKSAgIyAzLjErIG9ubHlcbiAgIFwnYSwgYiwgY1wnXG4gICA+Pj4gXCd7Mn0sIHsxfSwgezB9XCcuZm9ybWF0KFwnYVwnLCBcJ2JcJywgXCdjXCcpXG4gICBcJ2MsIGIsIGFcJ1xuICAgPj4+IFwnezJ9LCB7MX0sIHswfVwnLmZvcm1hdCgqXCdhYmNcJykgICAgICAjIHVucGFja2luZyBhcmd1bWVudCBzZXF1ZW5jZVxuICAgXCdjLCBiLCBhXCdcbiAgID4+PiBcJ3swfXsxfXswfVwnLmZvcm1hdChcJ2FicmFcJywgXCdjYWRcJykgICAjIGFyZ3VtZW50c1wnIGluZGljZXMgY2FuIGJlIHJlcGVhdGVkXG4gICBcJ2FicmFjYWRhYnJhXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBuYW1lOlxuXG4gICA+Pj4gXCdDb29yZGluYXRlczoge2xhdGl0dWRlfSwge2xvbmdpdHVkZX1cJy5mb3JtYXQobGF0aXR1ZGU9XCczNy4yNE5cJywgbG9uZ2l0dWRlPVwnLTExNS44MVdcJylcbiAgIFwnQ29vcmRpbmF0ZXM6IDM3LjI0TiwgLTExNS44MVdcJ1xuICAgPj4+IGNvb3JkID0ge1wnbGF0aXR1ZGVcJzogXCczNy4yNE5cJywgXCdsb25naXR1ZGVcJzogXCctMTE1LjgxV1wnfVxuICAgPj4+IFwnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sIHtsb25naXR1ZGV9XCcuZm9ybWF0KCoqY29vcmQpXG4gICBcJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50c1wnIGF0dHJpYnV0ZXM6XG5cbiAgID4+PiBjID0gMy01alxuICAgPj4+IChcJ1RoZSBjb21wbGV4IG51bWJlciB7MH0gaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgcGFydCB7MC5yZWFsfSBcJ1xuICAgLi4uICBcJ2FuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgezAuaW1hZ30uXCcpLmZvcm1hdChjKVxuICAgXCdUaGUgY29tcGxleCBudW1iZXIgKDMtNWopIGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsIHBhcnQgMy4wIGFuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgLTUuMC5cJ1xuICAgPj4+IGNsYXNzIFBvaW50OlxuICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZiwgeCwgeSk6XG4gICAuLi4gICAgICAgICBzZWxmLngsIHNlbGYueSA9IHgsIHlcbiAgIC4uLiAgICAgZGVmIF9fc3RyX18oc2VsZik6XG4gICAuLi4gICAgICAgICByZXR1cm4gXCdQb2ludCh7c2VsZi54fSwge3NlbGYueX0pXCcuZm9ybWF0KHNlbGY9c2VsZilcbiAgIC4uLlxuICAgPj4+IHN0cihQb2ludCg0LCAyKSlcbiAgIFwnUG9pbnQoNCwgMilcJ1xuXG5BY2Nlc3NpbmcgYXJndW1lbnRzXCcgaXRlbXM6XG5cbiAgID4+PiBjb29yZCA9ICgzLCA1KVxuICAgPj4+IFwnWDogezBbMF19OyAgWTogezBbMV19XCcuZm9ybWF0KGNvb3JkKVxuICAgXCdYOiAzOyAgWTogNVwnXG5cblJlcGxhY2luZyBgYCVzYGAgYW5kIGBgJXJgYDpcblxuICAgPj4+ICJyZXByKCkgc2hvd3MgcXVvdGVzOiB7IXJ9OyBzdHIoKSBkb2VzblwndDogeyFzfSIuZm9ybWF0KFwndGVzdDFcJywgXCd0ZXN0MlwnKVxuICAgInJlcHIoKSBzaG93cyBxdW90ZXM6IFwndGVzdDFcJzsgc3RyKCkgZG9lc25cJ3Q6IHRlc3QyIlxuXG5BbGlnbmluZyB0aGUgdGV4dCBhbmQgc3BlY2lmeWluZyBhIHdpZHRoOlxuXG4gICA+Pj4gXCd7OjwzMH1cJy5mb3JtYXQoXCdsZWZ0IGFsaWduZWRcJylcbiAgIFwnbGVmdCBhbGlnbmVkICAgICAgICAgICAgICAgICAgXCdcbiAgID4+PiBcJ3s6PjMwfVwnLmZvcm1hdChcJ3JpZ2h0IGFsaWduZWRcJylcbiAgIFwnICAgICAgICAgICAgICAgICByaWdodCBhbGlnbmVkXCdcbiAgID4+PiBcJ3s6XjMwfVwnLmZvcm1hdChcJ2NlbnRlcmVkXCcpXG4gICBcJyAgICAgICAgICAgY2VudGVyZWQgICAgICAgICAgIFwnXG4gICA+Pj4gXCd7OipeMzB9XCcuZm9ybWF0KFwnY2VudGVyZWRcJykgICMgdXNlIFwnKlwnIGFzIGEgZmlsbCBjaGFyXG4gICBcJyoqKioqKioqKioqY2VudGVyZWQqKioqKioqKioqKlwnXG5cblJlcGxhY2luZyBgYCUrZmBgLCBgYCUtZmBgLCBhbmQgYGAlIGZgYCBhbmQgc3BlY2lmeWluZyBhIHNpZ246XG5cbiAgID4+PiBcJ3s6K2Z9OyB7OitmfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBpdCBhbHdheXNcbiAgIFwnKzMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuICAgPj4+IFwnezogZn07IHs6IGZ9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGEgc3BhY2UgZm9yIHBvc2l0aXZlIG51bWJlcnNcbiAgIFwnIDMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuICAgPj4+IFwnezotZn07IHs6LWZ9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IG9ubHkgdGhlIG1pbnVzIC0tIHNhbWUgYXMgXCd7OmZ9OyB7OmZ9XCdcbiAgIFwnMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG5cblJlcGxhY2luZyBgYCV4YGAgYW5kIGBgJW9gYCBhbmQgY29udmVydGluZyB0aGUgdmFsdWUgdG8gZGlmZmVyZW50XG5iYXNlczpcblxuICAgPj4+ICMgZm9ybWF0IGFsc28gc3VwcG9ydHMgYmluYXJ5IG51bWJlcnNcbiAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6eH07ICBvY3Q6IHswOm99OyAgYmluOiB7MDpifSIuZm9ybWF0KDQyKVxuICAgXCdpbnQ6IDQyOyAgaGV4OiAyYTsgIG9jdDogNTI7ICBiaW46IDEwMTAxMFwnXG4gICA+Pj4gIyB3aXRoIDB4LCAwbywgb3IgMGIgYXMgcHJlZml4OlxuICAgPj4+ICJpbnQ6IHswOmR9OyAgaGV4OiB7MDojeH07ICBvY3Q6IHswOiNvfTsgIGJpbjogezA6I2J9Ii5mb3JtYXQoNDIpXG4gICBcJ2ludDogNDI7ICBoZXg6IDB4MmE7ICBvY3Q6IDBvNTI7ICBiaW46IDBiMTAxMDEwXCdcblxuVXNpbmcgdGhlIGNvbW1hIGFzIGEgdGhvdXNhbmRzIHNlcGFyYXRvcjpcblxuICAgPj4+IFwnezosfVwnLmZvcm1hdCgxMjM0NTY3ODkwKVxuICAgXCcxLDIzNCw1NjcsODkwXCdcblxuRXhwcmVzc2luZyBhIHBlcmNlbnRhZ2U6XG5cbiAgID4+PiBwb2ludHMgPSAxOVxuICAgPj4+IHRvdGFsID0gMjJcbiAgID4+PiBcJ0NvcnJlY3QgYW5zd2VyczogezouMiV9XCcuZm9ybWF0KHBvaW50cy90b3RhbClcbiAgIFwnQ29ycmVjdCBhbnN3ZXJzOiA4Ni4zNiVcJ1xuXG5Vc2luZyB0eXBlLXNwZWNpZmljIGZvcm1hdHRpbmc6XG5cbiAgID4+PiBpbXBvcnQgZGF0ZXRpbWVcbiAgID4+PiBkID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMCwgNywgNCwgMTIsIDE1LCA1OClcbiAgID4+PiBcJ3s6JVktJW0tJWQgJUg6JU06JVN9XCcuZm9ybWF0KGQpXG4gICBcJzIwMTAtMDctMDQgMTI6MTU6NThcJ1xuXG5OZXN0aW5nIGFyZ3VtZW50cyBhbmQgbW9yZSBjb21wbGV4IGV4YW1wbGVzOlxuXG4gICA+Pj4gZm9yIGFsaWduLCB0ZXh0IGluIHppcChcJzxePlwnLCBbXCdsZWZ0XCcsIFwnY2VudGVyXCcsIFwncmlnaHRcJ10pOlxuICAgLi4uICAgICBcJ3swOntmaWxsfXthbGlnbn0xNn1cJy5mb3JtYXQodGV4dCwgZmlsbD1hbGlnbiwgYWxpZ249YWxpZ24pXG4gICAuLi5cbiAgIFwnbGVmdDw8PDw8PDw8PDw8PFwnXG4gICBcJ15eXl5eY2VudGVyXl5eXl5cJ1xuICAgXCc+Pj4+Pj4+Pj4+PnJpZ2h0XCdcbiAgID4+PlxuICAgPj4+IG9jdGV0cyA9IFsxOTIsIDE2OCwgMCwgMV1cbiAgID4+PiBcJ3s6MDJYfXs6MDJYfXs6MDJYfXs6MDJYfVwnLmZvcm1hdCgqb2N0ZXRzKVxuICAgXCdDMEE4MDAwMVwnXG4gICA+Pj4gaW50KF8sIDE2KVxuICAgMzIzMjIzNTUyMVxuICAgPj4+XG4gICA+Pj4gd2lkdGggPSA1XG4gICA+Pj4gZm9yIG51bSBpbiByYW5nZSg1LDEyKTpcbiAgIC4uLiAgICAgZm9yIGJhc2UgaW4gXCdkWG9iXCc6XG4gICAuLi4gICAgICAgICBwcmludChcJ3swOnt3aWR0aH17YmFzZX19XCcuZm9ybWF0KG51bSwgYmFzZT1iYXNlLCB3aWR0aD13aWR0aCksIGVuZD1cJyBcJylcbiAgIC4uLiAgICAgcHJpbnQoKVxuICAgLi4uXG4gICAgICAgNSAgICAgNSAgICAgNSAgIDEwMVxuICAgICAgIDYgICAgIDYgICAgIDYgICAxMTBcbiAgICAgICA3ICAgICA3ICAgICA3ICAgMTExXG4gICAgICAgOCAgICAgOCAgICAxMCAgMTAwMFxuICAgICAgIDkgICAgIDkgICAgMTEgIDEwMDFcbiAgICAgIDEwICAgICBBICAgIDEyICAxMDEwXG4gICAgICAxMSAgICAgQiAgICAxMyAgMTAxMVxuJywKKyAnZnVuY3Rpb24nOiAnXG5GdW5jdGlvbiBkZWZpbml0aW9uc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IChzZWVcbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopOlxuXG4gICBmdW5jZGVmICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIiBbIi0+IiBleHByZXNzaW9uXSAiOiIgc3VpdGVcbiAgIGRlY29yYXRvcnMgICAgIDo6PSBkZWNvcmF0b3IrXG4gICBkZWNvcmF0b3IgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgW3BhcmFtZXRlcl9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbiAgIGRvdHRlZF9uYW1lICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4gICBwYXJhbWV0ZXJfbGlzdCA6Oj0gKGRlZnBhcmFtZXRlciAiLCIpKlxuICAgICAgICAgICAgICAgICAgICAgICggICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqXG4gICAgICAgICAgICAgICAgICAgICAgWywgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlIHBhcmFtZXRlcnMgaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiBgYD1gYFxuKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuIlxuRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyBhcmd1bWVudCBtYXlcbmJlIG9taXR0ZWQgZnJvbSBhIGNhbGwsIGluIHdoaWNoIGNhc2UgdGhlIHBhcmFtZXRlclwncyBkZWZhdWx0IHZhbHVlIGlzXG5zdWJzdGl0dXRlZC4gIElmIGEgcGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQgdmFsdWUsIGFsbCBmb2xsb3dpbmdcbnBhcmFtZXRlcnMgdXAgdW50aWwgdGhlICJgYCpgYCIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLVxudGhpcyBpcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG5cbioqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvblxuaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBvbmNlLCB3aGVuXG50aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1jb21wdXRlZCIgdmFsdWUgaXNcbnVzZWQgZm9yIGVhY2ggY2FsbC4gIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB3aGVuIGFcbmRlZmF1bHQgcGFyYW1ldGVyIGlzIGEgbXV0YWJsZSBvYmplY3QsIHN1Y2ggYXMgYSBsaXN0IG9yIGEgZGljdGlvbmFyeTpcbmlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuIGJ5IGFwcGVuZGluZyBhbiBpdGVtIHRvIGFcbmxpc3QpLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgbW9kaWZpZWQuIFRoaXMgaXMgZ2VuZXJhbGx5IG5vdFxud2hhdCB3YXMgaW50ZW5kZWQuICBBIHdheSBhcm91bmQgdGhpcyBpcyB0byB1c2UgYGBOb25lYGAgYXMgdGhlXG5kZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb24sIGUuZy46XG5cbiAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbiAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4gICAgICAgICAgIHBlbmd1aW4gPSBbXVxuICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbiAgICAgICByZXR1cm4gcGVuZ3VpblxuXG5GdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb25cbipDYWxscyouIEEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnNcbm1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbVxua2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybVxuImBgKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZSByZWNlaXZpbmdcbmFueSBleGNlc3MgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4gIElmXG50aGUgZm9ybSAiYGAqKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXdcbmRpY3Rpb25hcnkgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXdcbmVtcHR5IGRpY3Rpb25hcnkuIFBhcmFtZXRlcnMgYWZ0ZXIgImBgKmBgIiBvciAiYGAqaWRlbnRpZmllcmBgIiBhcmVcbmtleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZCBtYXkgb25seSBiZSBwYXNzZWQgdXNlZCBrZXl3b3JkIGFyZ3VtZW50cy5cblxuUGFyYW1ldGVycyBtYXkgaGF2ZSBhbm5vdGF0aW9ucyBvZiB0aGUgZm9ybSAiYGA6IGV4cHJlc3Npb25gYCJcbmZvbGxvd2luZyB0aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb25cbmV2ZW4gdGhvc2Ugb2YgdGhlIGZvcm0gYGAqaWRlbnRpZmllcmBgIG9yIGBgKippZGVudGlmaWVyYGAuICBGdW5jdGlvbnNcbm1heSBoYXZlICJyZXR1cm4iIGFubm90YXRpb24gb2YgdGhlIGZvcm0gImBgLT4gZXhwcmVzc2lvbmBgIiBhZnRlciB0aGVcbnBhcmFtZXRlciBsaXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvblxuYW5kIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC5cbkFubm90YXRpb25zIG1heSBiZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpblxudGhlIHNvdXJjZSBjb2RlLiAgVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGVcbnNlbWFudGljcyBvZiBhIGZ1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXNcbnZhbHVlcyBvZiBhIGRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnNcJyBuYW1lcyBpbiB0aGVcbmBgX19hbm5vdGF0aW9uc19fYGAgYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG5cbkl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgYm91bmRcbnRvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYSBmb3JtcyxcbmRlc2NyaWJlZCBpbiBzZWN0aW9uICpMYW1iZGFzKi4gIE5vdGUgdGhhdCB0aGUgbGFtYmRhIGZvcm0gaXMgbWVyZWx5IGFcbnNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uIGRlZmluaXRpb247IGEgZnVuY3Rpb24gZGVmaW5lZCBpblxuYSAiYGBkZWZgYCIgc3RhdGVtZW50IGNhbiBiZSBwYXNzZWQgYXJvdW5kIG9yIGFzc2lnbmVkIHRvIGFub3RoZXIgbmFtZVxuanVzdCBsaWtlIGEgZnVuY3Rpb24gZGVmaW5lZCBieSBhIGxhbWJkYSBmb3JtLiAgVGhlICJgYGRlZmBgIiBmb3JtIGlzXG5hY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlIGl0IGFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlXG5zdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiYGBkZWZgYCJcbmZvcm0gZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWwgZnVuY3Rpb25cbnRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkIGluIHRoZVxubmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbmNvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uICpOYW1pbmcgYW5kIGJpbmRpbmcqIGZvciBkZXRhaWxzLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzEwNyoqIC0gRnVuY3Rpb24gQW5ub3RhdGlvbnNcbiAgICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cbicsCiAgJ2dsb2JhbCc6ICdcblRoZSBgYGdsb2JhbGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGdsb2JhbF9zdG10IDo6PSAiZ2xvYmFsIiBpZGVudGlmaWVyICgiLCIgaWRlbnRpZmllcikqXG5cblRoZSBgYGdsb2JhbGBgIHN0YXRlbWVudCBpcyBhIGRlY2xhcmF0aW9uIHdoaWNoIGhvbGRzIGZvciB0aGUgZW50aXJlXG5jdXJyZW50IGNvZGUgYmxvY2suICBJdCBtZWFucyB0aGF0IHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgYXJlIHRvIGJlXG5pbnRlcnByZXRlZCBhcyBnbG9iYWxzLiAgSXQgd291bGQgYmUgaW1wb3NzaWJsZSB0byBhc3NpZ24gdG8gYSBnbG9iYWxcbnZhcmlhYmxlIHdpdGhvdXQgYGBnbG9iYWxgYCwgYWx0aG91Z2ggZnJlZSB2YXJpYWJsZXMgbWF5IHJlZmVyIHRvXG5nbG9iYWxzIHdpdGhvdXQgYmVpbmcgZGVjbGFyZWQgZ2xvYmFsLlxuXG5OYW1lcyBsaXN0ZWQgaW4gYSBgYGdsb2JhbGBgIHN0YXRlbWVudCBtdXN0IG5vdCBiZSB1c2VkIGluIHRoZSBzYW1lXG5jb2RlIGJsb2NrIHRleHR1YWxseSBwcmVjZWRpbmcgdGhhdCBgYGdsb2JhbGBgIHN0YXRlbWVudC5cblxuTmFtZXMgbGlzdGVkIGluIGEgYGBnbG9iYWxgYCBzdGF0ZW1lbnQgbXVzdCBub3QgYmUgZGVmaW5lZCBhcyBmb3JtYWxcbnBhcmFtZXRlcnMgb3IgaW4gYSBgYGZvcmBgIGxvb3AgY29udHJvbCB0YXJnZXQsIGBgY2xhc3NgYCBkZWZpbml0aW9uLFxuZnVuY3Rpb24gZGVmaW5pdGlvbiwgb3IgYGBpbXBvcnRgYCBzdGF0ZW1lbnQuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3RcbmVuZm9yY2UgdGhlIGxhdHRlciB0d28gcmVzdHJpY3Rpb25zLCBidXQgcHJvZ3JhbXMgc2hvdWxkIG5vdCBhYnVzZVxudGhpcyBmcmVlZG9tLCBhcyBmdXR1cmUgaW1wbGVtZW50YXRpb25zIG1heSBlbmZvcmNlIHRoZW0gb3Igc2lsZW50bHlcbmNoYW5nZSB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbS5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogdGhlIGBgZ2xvYmFsYGAgaXMgYSBkaXJlY3RpdmUgdG8gdGhlIHBhcnNlci5cbkl0IGFwcGxpZXMgb25seSB0byBjb2RlIHBhcnNlZCBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSBgYGdsb2JhbGBgXG5zdGF0ZW1lbnQuIEluIHBhcnRpY3VsYXIsIGEgYGBnbG9iYWxgYCBzdGF0ZW1lbnQgY29udGFpbmVkIGluIGEgc3RyaW5nXG5vciBjb2RlIG9iamVjdCBzdXBwbGllZCB0byB0aGUgYnVpbHQtaW4gYGBleGVjKClgYCBmdW5jdGlvbiBkb2VzIG5vdFxuYWZmZWN0IHRoZSBjb2RlIGJsb2NrICpjb250YWluaW5nKiB0aGUgZnVuY3Rpb24gY2FsbCwgYW5kIGNvZGVcbmNvbnRhaW5lZCBpbiBzdWNoIGEgc3RyaW5nIGlzIHVuYWZmZWN0ZWQgYnkgYGBnbG9iYWxgYCBzdGF0ZW1lbnRzIGluXG50aGUgY29kZSBjb250YWluaW5nIHRoZSBmdW5jdGlvbiBjYWxsLiAgVGhlIHNhbWUgYXBwbGllcyB0byB0aGVcbmBgZXZhbCgpYGAgYW5kIGBgY29tcGlsZSgpYGAgZnVuY3Rpb25zLlxuJywKICAnaWQtY2xhc3Nlcyc6ICdcblJlc2VydmVkIGNsYXNzZXMgb2YgaWRlbnRpZmllcnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQ2VydGFpbiBjbGFzc2VzIG9mIGlkZW50aWZpZXJzIChiZXNpZGVzIGtleXdvcmRzKSBoYXZlIHNwZWNpYWxcbm1lYW5pbmdzLiAgVGhlc2UgY2xhc3NlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgcGF0dGVybnMgb2YgbGVhZGluZyBhbmRcbnRyYWlsaW5nIHVuZGVyc2NvcmUgY2hhcmFjdGVyczpcblxuYGBfKmBgXG4gICBOb3QgaW1wb3J0ZWQgYnkgYGBmcm9tIG1vZHVsZSBpbXBvcnQgKmBgLiAgVGhlIHNwZWNpYWwgaWRlbnRpZmllclxuICAgYGBfYGAgaXMgdXNlZCBpbiB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgdG8gc3RvcmUgdGhlIHJlc3VsdCBvZlxuICAgdGhlIGxhc3QgZXZhbHVhdGlvbjsgaXQgaXMgc3RvcmVkIGluIHRoZSBgYGJ1aWx0aW5zYGAgbW9kdWxlLiAgV2hlblxuICAgbm90IGluIGludGVyYWN0aXZlIG1vZGUsIGBgX2BgIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYW5kIGlzIG5vdFxuICAgZGVmaW5lZC4gU2VlIHNlY3Rpb24gKlRoZSBpbXBvcnQgc3RhdGVtZW50Ki5cblxuICAgTm90ZTogVGhlIG5hbWUgYGBfYGAgaXMgb2Z0ZW4gdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoXG4gICAgIGludGVybmF0aW9uYWxpemF0aW9uOyByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlXG4gICAgIGBgZ2V0dGV4dGBgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGNvbnZlbnRpb24uXG5cbmBgX18qX19gYFxuICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSBpbnRlcnByZXRlclxuICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gIEN1cnJlbnRcbiAgIHN5c3RlbSBuYW1lcyBhcmUgZGlzY3Vzc2VkIGluIHRoZSAqU3BlY2lhbCBtZXRob2QgbmFtZXMqIHNlY3Rpb25cbiAgIGFuZCBlbHNld2hlcmUuICBNb3JlIHdpbGwgbGlrZWx5IGJlIGRlZmluZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mXG4gICBQeXRob24uICAqQW55KiB1c2Ugb2YgYGBfXypfX2BgIG5hbWVzLCBpbiBhbnkgY29udGV4dCwgdGhhdCBkb2VzXG4gICBub3QgZm9sbG93IGV4cGxpY2l0bHkgZG9jdW1lbnRlZCB1c2UsIGlzIHN1YmplY3QgdG8gYnJlYWthZ2VcbiAgIHdpdGhvdXQgd2FybmluZy5cblxuYGBfXypgYFxuICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCB3aXRoaW4gdGhlXG4gICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgbWFuZ2xlZCBmb3JtXG4gICB0byBoZWxwIGF2b2lkIG5hbWUgY2xhc2hlcyBiZXR3ZWVuICJwcml2YXRlIiBhdHRyaWJ1dGVzIG9mIGJhc2UgYW5kXG4gICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uICpJZGVudGlmaWVycyAoTmFtZXMpKi5cbicsCiAgJ2lkZW50aWZpZXJzJzogJ1xuSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzXG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuSWRlbnRpZmllcnMgKGFsc28gcmVmZXJyZWQgdG8gYXMgKm5hbWVzKikgYXJlIGRlc2NyaWJlZCBieSB0aGVcbmZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zLlxuXG5UaGUgc3ludGF4IG9mIGlkZW50aWZpZXJzIGluIFB5dGhvbiBpcyBiYXNlZCBvbiB0aGUgVW5pY29kZSBzdGFuZGFyZFxuYW5uZXggVUFYLTMxLCB3aXRoIGVsYWJvcmF0aW9uIGFuZCBjaGFuZ2VzIGFzIGRlZmluZWQgYmVsb3c7IHNlZSBhbHNvXG4qKlBFUCAzMTMxKiogZm9yIGZ1cnRoZXIgZGV0YWlscy5cblxuV2l0aGluIHRoZSBBU0NJSSByYW5nZSAoVSswMDAxLi5VKzAwN0YpLCB0aGUgdmFsaWQgY2hhcmFjdGVycyBmb3JcbmlkZW50aWZpZXJzIGFyZSB0aGUgc2FtZSBhcyBpbiBQeXRob24gMi54OiB0aGUgdXBwZXJjYXNlIGFuZCBsb3dlcmNhc2VcbmxldHRlcnMgYGBBYGAgdGhyb3VnaCBgYFpgYCwgdGhlIHVuZGVyc2NvcmUgYGBfYGAgYW5kLCBleGNlcHQgZm9yIHRoZVxuZmlyc3QgY2hhcmFjdGVyLCB0aGUgZGlnaXRzIGBgMGBgIHRocm91Z2ggYGA5YGAuXG5cblB5dGhvbiAzLjAgaW50cm9kdWNlcyBhZGRpdGlvbmFsIGNoYXJhY3RlcnMgZnJvbSBvdXRzaWRlIHRoZSBBU0NJSVxucmFuZ2UgKHNlZSAqKlBFUCAzMTMxKiopLiAgRm9yIHRoZXNlIGNoYXJhY3RlcnMsIHRoZSBjbGFzc2lmaWNhdGlvblxudXNlcyB0aGUgdmVyc2lvbiBvZiB0aGUgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgYXMgaW5jbHVkZWQgaW4gdGhlXG5gYHVuaWNvZGVkYXRhYGAgbW9kdWxlLlxuXG5JZGVudGlmaWVycyBhcmUgdW5saW1pdGVkIGluIGxlbmd0aC4gIENhc2UgaXMgc2lnbmlmaWNhbnQuXG5cbiAgIGlkZW50aWZpZXIgICA6Oj0geGlkX3N0YXJ0IHhpZF9jb250aW51ZSpcbiAgIGlkX3N0YXJ0ICAgICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGdlbmVyYWwgY2F0ZWdvcmllcyBMdSwgTGwsIEx0LCBMbSwgTG8sIE5sLCB0aGUgdW5kZXJzY29yZSwgYW5kIGNoYXJhY3RlcnMgd2l0aCB0aGUgT3RoZXJfSURfU3RhcnQgcHJvcGVydHk+XG4gICBpZF9jb250aW51ZSAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCwgcGx1cyBjaGFyYWN0ZXJzIGluIHRoZSBjYXRlZ29yaWVzIE1uLCBNYywgTmQsIFBjIGFuZCBvdGhlcnMgd2l0aCB0aGUgT3RoZXJfSURfQ29udGludWUgcHJvcGVydHk+XG4gICB4aWRfc3RhcnQgICAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCB3aG9zZSBORktDIG5vcm1hbGl6YXRpb24gaXMgaW4gImlkX3N0YXJ0IHhpZF9jb250aW51ZSoiPlxuICAgeGlkX2NvbnRpbnVlIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfY29udGludWUgd2hvc2UgTkZLQyBub3JtYWxpemF0aW9uIGlzIGluICJpZF9jb250aW51ZSoiPlxuXG5UaGUgVW5pY29kZSBjYXRlZ29yeSBjb2RlcyBtZW50aW9uZWQgYWJvdmUgc3RhbmQgZm9yOlxuXG4qICpMdSogLSB1cHBlcmNhc2UgbGV0dGVyc1xuXG4qICpMbCogLSBsb3dlcmNhc2UgbGV0dGVyc1xuXG4qICpMdCogLSB0aXRsZWNhc2UgbGV0dGVyc1xuXG4qICpMbSogLSBtb2RpZmllciBsZXR0ZXJzXG5cbiogKkxvKiAtIG90aGVyIGxldHRlcnNcblxuKiAqTmwqIC0gbGV0dGVyIG51bWJlcnNcblxuKiAqTW4qIC0gbm9uc3BhY2luZyBtYXJrc1xuXG4qICpNYyogLSBzcGFjaW5nIGNvbWJpbmluZyBtYXJrc1xuXG4qICpOZCogLSBkZWNpbWFsIG51bWJlcnNcblxuKiAqUGMqIC0gY29ubmVjdG9yIHB1bmN0dWF0aW9uc1xuXG4qICpPdGhlcl9JRF9TdGFydCogLSBleHBsaWNpdCBsaXN0IG9mIGNoYXJhY3RlcnMgaW4gUHJvcExpc3QudHh0IHRvXG4gIHN1cHBvcnQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblxuKiAqT3RoZXJfSURfQ29udGludWUqIC0gbGlrZXdpc2VcblxuQWxsIGlkZW50aWZpZXJzIGFyZSBjb252ZXJ0ZWQgaW50byB0aGUgbm9ybWFsIGZvcm0gTkZLQyB3aGlsZSBwYXJzaW5nO1xuY29tcGFyaXNvbiBvZiBpZGVudGlmaWVycyBpcyBiYXNlZCBvbiBORktDLlxuXG5BIG5vbi1ub3JtYXRpdmUgSFRNTCBmaWxlIGxpc3RpbmcgYWxsIHZhbGlkIGlkZW50aWZpZXIgY2hhcmFjdGVycyBmb3JcblVuaWNvZGUgNC4xIGNhbiBiZSBmb3VuZCBhdCBodHRwOi8vd3d3LmRjbC5ocGkudW5pLVxucG90c2RhbS5kZS9ob21lL2xvZXdpcy90YWJsZS0zMTMxLmh0bWwuXG5cblxuS2V5d29yZHNcbj09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgaWRlbnRpZmllcnMgYXJlIHVzZWQgYXMgcmVzZXJ2ZWQgd29yZHMsIG9yICprZXl3b3Jkcyogb2ZcbnRoZSBsYW5ndWFnZSwgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIG9yZGluYXJ5IGlkZW50aWZpZXJzLiAgVGhleSBtdXN0XG5iZSBzcGVsbGVkIGV4YWN0bHkgYXMgd3JpdHRlbiBoZXJlOlxuXG4gICBGYWxzZSAgICAgIGNsYXNzICAgICAgZmluYWxseSAgICBpcyAgICAgICAgIHJldHVyblxuICAgTm9uZSAgICAgICBjb250aW51ZSAgIGZvciAgICAgICAgbGFtYmRhICAgICB0cnlcbiAgIFRydWUgICAgICAgZGVmICAgICAgICBmcm9tICAgICAgIG5vbmxvY2FsICAgd2hpbGVcbiAgIGFuZCAgICAgICAgZGVsICAgICAgICBnbG9iYWwgICAgIG5vdCAgICAgICAgd2l0aFxuICAgYXMgICAgICAgICBlbGlmICAgICAgIGlmICAgICAgICAgb3IgICAgICAgICB5aWVsZFxuICAgYXNzZXJ0ICAgICBlbHNlICAgICAgIGltcG9ydCAgICAgcGFzc1xuICAgYnJlYWsgICAgICBleGNlcHQgICAgIGluICAgICAgICAgcmFpc2VcblxuXG5SZXNlcnZlZCBjbGFzc2VzIG9mIGlkZW50aWZpZXJzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkNlcnRhaW4gY2xhc3NlcyBvZiBpZGVudGlmaWVycyAoYmVzaWRlcyBrZXl3b3JkcykgaGF2ZSBzcGVjaWFsXG5tZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mIGxlYWRpbmcgYW5kXG50cmFpbGluZyB1bmRlcnNjb3JlIGNoYXJhY3RlcnM6XG5cbmBgXypgYFxuICAgTm90IGltcG9ydGVkIGJ5IGBgZnJvbSBtb2R1bGUgaW1wb3J0ICpgYC4gIFRoZSBzcGVjaWFsIGlkZW50aWZpZXJcbiAgIGBgX2BgIGlzIHVzZWQgaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIHRvIHN0b3JlIHRoZSByZXN1bHQgb2ZcbiAgIHRoZSBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgYGBidWlsdGluc2BgIG1vZHVsZS4gIFdoZW5cbiAgIG5vdCBpbiBpbnRlcmFjdGl2ZSBtb2RlLCBgYF9gYCBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGFuZCBpcyBub3RcbiAgIGRlZmluZWQuIFNlZSBzZWN0aW9uICpUaGUgaW1wb3J0IHN0YXRlbWVudCouXG5cbiAgIE5vdGU6IFRoZSBuYW1lIGBgX2BgIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuICAgICBpbnRlcm5hdGlvbmFsaXphdGlvbjsgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZVxuICAgICBgYGdldHRleHRgYCBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyBjb252ZW50aW9uLlxuXG5gYF9fKl9fYGBcbiAgIFN5c3RlbS1kZWZpbmVkIG5hbWVzLiBUaGVzZSBuYW1lcyBhcmUgZGVmaW5lZCBieSB0aGUgaW50ZXJwcmV0ZXJcbiAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24gKGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSkuICBDdXJyZW50XG4gICBzeXN0ZW0gbmFtZXMgYXJlIGRpc2N1c3NlZCBpbiB0aGUgKlNwZWNpYWwgbWV0aG9kIG5hbWVzKiBzZWN0aW9uXG4gICBhbmQgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZlxuICAgUHl0aG9uLiAgKkFueSogdXNlIG9mIGBgX18qX19gYCBuYW1lcywgaW4gYW55IGNvbnRleHQsIHRoYXQgZG9lc1xuICAgbm90IGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlXG4gICB3aXRob3V0IHdhcm5pbmcuXG5cbmBgX18qYGBcbiAgIENsYXNzLXByaXZhdGUgbmFtZXMuICBOYW1lcyBpbiB0aGlzIGNhdGVnb3J5LCB3aGVuIHVzZWQgd2l0aGluIHRoZVxuICAgY29udGV4dCBvZiBhIGNsYXNzIGRlZmluaXRpb24sIGFyZSByZS13cml0dGVuIHRvIHVzZSBhIG1hbmdsZWQgZm9ybVxuICAgdG8gaGVscCBhdm9pZCBuYW1lIGNsYXNoZXMgYmV0d2VlbiAicHJpdmF0ZSIgYXR0cmlidXRlcyBvZiBiYXNlIGFuZFxuICAgZGVyaXZlZCBjbGFzc2VzLiBTZWUgc2VjdGlvbiAqSWRlbnRpZmllcnMgKE5hbWVzKSouXG4nLAogICdpZic6ICdcblRoZSBgYGlmYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGBpZmBgIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG5cbiAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4gICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zIG9uZVxuYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiAqQm9vbGVhbiBvcGVyYXRpb25zKlxuZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4oYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlIGBgaWZgYCBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgYGBlbHNlYGAgY2xhdXNlLCBpZlxucHJlc2VudCwgaXMgZXhlY3V0ZWQuXG4nLAogICdpbWFnaW5hcnknOiAnXG5JbWFnaW5hcnkgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKlxuXG5JbWFnaW5hcnkgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIGltYWdudW1iZXIgOjo9IChmbG9hdG51bWJlciB8IGludHBhcnQpICgiaiIgfCAiSiIpXG5cbkFuIGltYWdpbmFyeSBsaXRlcmFsIHlpZWxkcyBhIGNvbXBsZXggbnVtYmVyIHdpdGggYSByZWFsIHBhcnQgb2YgMC4wLlxuQ29tcGxleCBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBhcyBhIHBhaXIgb2YgZmxvYXRpbmcgcG9pbnQgbnVtYmVyc1xuYW5kIGhhdmUgdGhlIHNhbWUgcmVzdHJpY3Rpb25zIG9uIHRoZWlyIHJhbmdlLiAgVG8gY3JlYXRlIGEgY29tcGxleFxubnVtYmVyIHdpdGggYSBub256ZXJvIHJlYWwgcGFydCwgYWRkIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvIGl0LFxuZS5nLiwgYGAoMys0ailgYC4gIFNvbWUgZXhhbXBsZXMgb2YgaW1hZ2luYXJ5IGxpdGVyYWxzOlxuXG4gICAzLjE0aiAgIDEwLmogICAgMTBqICAgICAuMDAxaiAgIDFlMTAwaiAgMy4xNGUtMTBqXG4nLAotICdpbXBvcnQnOiAnXG5UaGUgYGBpbXBvcnRgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBpbXBvcnRfc3RtdCAgICAgOjo9ICJpbXBvcnQiIG1vZHVsZSBbImFzIiBuYW1lXSAoICIsIiBtb2R1bGUgWyJhcyIgbmFtZV0gKSpcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgaWRlbnRpZmllciBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSpcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgIigiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqIFsiLCJdICIpIlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIG1vZHVsZSAiaW1wb3J0IiAiKiJcbiAgIG1vZHVsZSAgICAgICAgICA6Oj0gKGlkZW50aWZpZXIgIi4iKSogaWRlbnRpZmllclxuICAgcmVsYXRpdmVfbW9kdWxlIDo6PSAiLiIqIG1vZHVsZSB8ICIuIitcbiAgIG5hbWUgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5JbXBvcnQgc3RhdGVtZW50cyBhcmUgZXhlY3V0ZWQgaW4gdHdvIHN0ZXBzOiAoMSkgZmluZCBhIG1vZHVsZSwgYW5kXG5pbml0aWFsaXplIGl0IGlmIG5lY2Vzc2FyeTsgKDIpIGRlZmluZSBhIG5hbWUgb3IgbmFtZXMgaW4gdGhlIGxvY2FsXG5uYW1lc3BhY2UgKG9mIHRoZSBzY29wZSB3aGVyZSB0aGUgYGBpbXBvcnRgYCBzdGF0ZW1lbnQgb2NjdXJzKS4gVGhlXG5zdGF0ZW1lbnQgY29tZXMgaW4gdHdvIGZvcm1zIGRpZmZlcmluZyBvbiB3aGV0aGVyIGl0IHVzZXMgdGhlIGBgZnJvbWBgXG5rZXl3b3JkLiBUaGUgZmlyc3QgZm9ybSAod2l0aG91dCBgYGZyb21gYCkgcmVwZWF0cyB0aGVzZSBzdGVwcyBmb3JcbmVhY2ggaWRlbnRpZmllciBpbiB0aGUgbGlzdC4gVGhlIGZvcm0gd2l0aCBgYGZyb21gYCBwZXJmb3JtcyBzdGVwICgxKVxub25jZSwgYW5kIHRoZW4gcGVyZm9ybXMgc3RlcCAoMikgcmVwZWF0ZWRseS4gRm9yIGEgcmVmZXJlbmNlXG5pbXBsZW1lbnRhdGlvbiBvZiBzdGVwICgxKSwgc2VlIHRoZSBgYGltcG9ydGxpYmBgIG1vZHVsZS5cblxuVG8gdW5kZXJzdGFuZCBob3cgc3RlcCAoMSkgb2NjdXJzLCBvbmUgbXVzdCBmaXJzdCB1bmRlcnN0YW5kIGhvd1xuUHl0aG9uIGhhbmRsZXMgaGllcmFyY2hpY2FsIG5hbWluZyBvZiBtb2R1bGVzLiBUbyBoZWxwIG9yZ2FuaXplXG5tb2R1bGVzIGFuZCBwcm92aWRlIGEgaGllcmFyY2h5IGluIG5hbWluZywgUHl0aG9uIGhhcyBhIGNvbmNlcHQgb2ZcbnBhY2thZ2VzLiBBIHBhY2thZ2UgY2FuIGNvbnRhaW4gb3RoZXIgcGFja2FnZXMgYW5kIG1vZHVsZXMgd2hpbGVcbm1vZHVsZXMgY2Fubm90IGNvbnRhaW4gb3RoZXIgbW9kdWxlcyBvciBwYWNrYWdlcy4gRnJvbSBhIGZpbGUgc3lzdGVtXG5wZXJzcGVjdGl2ZSwgcGFja2FnZXMgYXJlIGRpcmVjdG9yaWVzIGFuZCBtb2R1bGVzIGFyZSBmaWxlcy4gVGhlXG5vcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBwYWNrYWdlcyBpcyBzdGlsbCBhdmFpbGFibGUgdG8gcmVhZCxcbmFsdGhvdWdoIG1pbm9yIGRldGFpbHMgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSB3cml0aW5nIG9mIHRoYXRcbmRvY3VtZW50LlxuXG5PbmNlIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgaXMga25vd24gKHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLCB0aGVcbnRlcm0gIm1vZHVsZSIgd2lsbCByZWZlciB0byBib3RoIHBhY2thZ2VzIGFuZCBtb2R1bGVzKSwgc2VhcmNoaW5nIGZvclxudGhlIG1vZHVsZSBvciBwYWNrYWdlIGNhbiBiZWdpbi4gVGhlIGZpcnN0IHBsYWNlIGNoZWNrZWQgaXNcbmBgc3lzLm1vZHVsZXNgYCwgdGhlIGNhY2hlIG9mIGFsbCBtb2R1bGVzIHRoYXQgaGF2ZSBiZWVuIGltcG9ydGVkXG5wcmV2aW91c2x5LiBJZiB0aGUgbW9kdWxlIGlzIGZvdW5kIHRoZXJlIHRoZW4gaXQgaXMgdXNlZCBpbiBzdGVwICgyKVxub2YgaW1wb3J0IHVubGVzcyBgYE5vbmVgYCBpcyBmb3VuZCBpbiBgYHN5cy5tb2R1bGVzYGAsIGluIHdoaWNoIGNhc2VcbmBgSW1wb3J0RXJyb3JgYCBpcyByYWlzZWQuXG5cbklmIHRoZSBtb2R1bGUgaXMgbm90IGZvdW5kIGluIHRoZSBjYWNoZSwgdGhlbiBgYHN5cy5tZXRhX3BhdGhgYCBpc1xuc2VhcmNoZWQgKHRoZSBzcGVjaWZpY2F0aW9uIGZvciBgYHN5cy5tZXRhX3BhdGhgYCBjYW4gYmUgZm91bmQgaW5cbioqUEVQIDMwMioqKS4gVGhlIG9iamVjdCBpcyBhIGxpc3Qgb2YgKmZpbmRlciogb2JqZWN0cyB3aGljaCBhcmVcbnF1ZXJpZWQgaW4gb3JkZXIgYXMgdG8gd2hldGhlciB0aGV5IGtub3cgaG93IHRvIGxvYWQgdGhlIG1vZHVsZSBieVxuY2FsbGluZyB0aGVpciBgYGZpbmRfbW9kdWxlKClgYCBtZXRob2Qgd2l0aCB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlLiBJZlxudGhlIG1vZHVsZSBoYXBwZW5zIHRvIGJlIGNvbnRhaW5lZCB3aXRoaW4gYSBwYWNrYWdlIChhcyBkZW5vdGVkIGJ5IHRoZVxuZXhpc3RlbmNlIG9mIGEgZG90IGluIHRoZSBuYW1lKSwgdGhlbiBhIHNlY29uZCBhcmd1bWVudCB0b1xuYGBmaW5kX21vZHVsZSgpYGAgaXMgZ2l2ZW4gYXMgdGhlIHZhbHVlIG9mIHRoZSBgYF9fcGF0aF9fYGAgYXR0cmlidXRlXG5mcm9tIHRoZSBwYXJlbnQgcGFja2FnZSAoZXZlcnl0aGluZyB1cCB0byB0aGUgbGFzdCBkb3QgaW4gdGhlIG5hbWUgb2ZcbnRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQpLiBJZiBhIGZpbmRlciBjYW4gZmluZCB0aGUgbW9kdWxlIGl0IHJldHVybnNcbmEgKmxvYWRlciogKGRpc2N1c3NlZCBsYXRlcikgb3IgcmV0dXJucyBgYE5vbmVgYC5cblxuSWYgbm9uZSBvZiB0aGUgZmluZGVycyBvbiBgYHN5cy5tZXRhX3BhdGhgYCBhcmUgYWJsZSB0byBmaW5kIHRoZVxubW9kdWxlIHRoZW4gc29tZSBpbXBsaWNpdGx5IGRlZmluZWQgZmluZGVycyBhcmUgcXVlcmllZC5cbkltcGxlbWVudGF0aW9ucyBvZiBQeXRob24gdmFyeSBpbiB3aGF0IGltcGxpY2l0IG1ldGEgcGF0aCBmaW5kZXJzIGFyZVxuZGVmaW5lZC4gVGhlIG9uZSB0aGV5IGFsbCBkbyBkZWZpbmUsIHRob3VnaCwgaXMgb25lIHRoYXQgaGFuZGxlc1xuYGBzeXMucGF0aF9ob29rc2BgLCBgYHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYGAsIGFuZCBgYHN5cy5wYXRoYGAuXG5cblRoZSBpbXBsaWNpdCBmaW5kZXIgc2VhcmNoZXMgZm9yIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGluIHRoZSAicGF0aHMiXG5zcGVjaWZpZWQgaW4gb25lIG9mIHR3byBwbGFjZXMgKCJwYXRocyIgZG8gbm90IGhhdmUgdG8gYmUgZmlsZSBzeXN0ZW1cbnBhdGhzKS4gSWYgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyBzdXBwb3NlZCB0byBiZSBjb250YWluZWRcbndpdGhpbiBhIHBhY2thZ2UgdGhlbiB0aGUgc2Vjb25kIGFyZ3VtZW50IHBhc3NlZCB0byBgYGZpbmRfbW9kdWxlKClgYCxcbmBgX19wYXRoX19gYCBvbiB0aGUgcGFyZW50IHBhY2thZ2UsIGlzIHVzZWQgYXMgdGhlIHNvdXJjZSBvZiBwYXRocy4gSWZcbnRoZSBtb2R1bGUgaXMgbm90IGNvbnRhaW5lZCBpbiBhIHBhY2thZ2UgdGhlbiBgYHN5cy5wYXRoYGAgaXMgdXNlZCBhc1xudGhlIHNvdXJjZSBvZiBwYXRocy5cblxuT25jZSB0aGUgc291cmNlIG9mIHBhdGhzIGlzIGNob3NlbiBpdCBpcyBpdGVyYXRlZCBvdmVyIHRvIGZpbmQgYVxuZmluZGVyIHRoYXQgY2FuIGhhbmRsZSB0aGF0IHBhdGguIFRoZSBkaWN0IGF0XG5gYHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYGAgY2FjaGVzIGZpbmRlcnMgZm9yIHBhdGhzIGFuZCBpcyBjaGVja2VkXG5mb3IgYSBmaW5kZXIuIElmIHRoZSBwYXRoIGRvZXMgbm90IGhhdmUgYSBmaW5kZXIgY2FjaGVkIHRoZW5cbmBgc3lzLnBhdGhfaG9va3NgYCBpcyBzZWFyY2hlZCBieSBjYWxsaW5nIGVhY2ggb2JqZWN0IGluIHRoZSBsaXN0IHdpdGhcbmEgc2luZ2xlIGFyZ3VtZW50IG9mIHRoZSBwYXRoLCByZXR1cm5pbmcgYSBmaW5kZXIgb3IgcmFpc2VzXG5gYEltcG9ydEVycm9yYGAuIElmIGEgZmluZGVyIGlzIHJldHVybmVkIHRoZW4gaXQgaXMgY2FjaGVkIGluXG5gYHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYGAgYW5kIHRoZW4gdXNlZCBmb3IgdGhhdCBwYXRoIGVudHJ5LiBJZiBub1xuZmluZGVyIGNhbiBiZSBmb3VuZCBidXQgdGhlIHBhdGggZXhpc3RzIHRoZW4gYSB2YWx1ZSBvZiBgYE5vbmVgYCBpc1xuc3RvcmVkIGluIGBgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgYCB0byBzaWduaWZ5IHRoYXQgYW4gaW1wbGljaXQsXG5maWxlLWJhc2VkIGZpbmRlciB0aGF0IGhhbmRsZXMgbW9kdWxlcyBzdG9yZWQgYXMgaW5kaXZpZHVhbCBmaWxlc1xuc2hvdWxkIGJlIHVzZWQgZm9yIHRoYXQgcGF0aC4gSWYgdGhlIHBhdGggZG9lcyBub3QgZXhpc3QgdGhlbiBhIGZpbmRlclxud2hpY2ggYWx3YXlzIHJldHVybnMgYGBOb25lYGAgaXMgcGxhY2VkIGluIHRoZSBjYWNoZSBmb3IgdGhlIHBhdGguXG5cbklmIG5vIGZpbmRlciBjYW4gZmluZCB0aGUgbW9kdWxlIHRoZW4gYGBJbXBvcnRFcnJvcmBgIGlzIHJhaXNlZC5cbk90aGVyd2lzZSBzb21lIGZpbmRlciByZXR1cm5lZCBhIGxvYWRlciB3aG9zZSBgYGxvYWRfbW9kdWxlKClgYCBtZXRob2RcbmlzIGNhbGxlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdG8gbG9hZCAoc2VlICoqUEVQIDMwMioqIGZvciB0aGVcbm9yaWdpbmFsIGRlZmluaXRpb24gb2YgbG9hZGVycykuIEEgbG9hZGVyIGhhcyBzZXZlcmFsIHJlc3BvbnNpYmlsaXRpZXNcbnRvIHBlcmZvcm0gb24gYSBtb2R1bGUgaXQgbG9hZHMuIEZpcnN0LCBpZiB0aGUgbW9kdWxlIGFscmVhZHkgZXhpc3RzXG5pbiBgYHN5cy5tb2R1bGVzYGAgKGEgcG9zc2liaWxpdHkgaWYgdGhlIGxvYWRlciBpcyBjYWxsZWQgb3V0c2lkZSBvZlxudGhlIGltcG9ydCBtYWNoaW5lcnkpIHRoZW4gaXQgaXMgdG8gdXNlIHRoYXQgbW9kdWxlIGZvciBpbml0aWFsaXphdGlvblxuYW5kIG5vdCBhIG5ldyBtb2R1bGUuIEJ1dCBpZiB0aGUgbW9kdWxlIGRvZXMgbm90IGV4aXN0IGluXG5gYHN5cy5tb2R1bGVzYGAgdGhlbiBpdCBpcyB0byBiZSBhZGRlZCB0byB0aGF0IGRpY3QgYmVmb3JlXG5pbml0aWFsaXphdGlvbiBiZWdpbnMuIElmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgbG9hZGluZyBvZiB0aGUgbW9kdWxlXG5hbmQgaXQgd2FzIGFkZGVkIHRvIGBgc3lzLm1vZHVsZXNgYCBpdCBpcyB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRpY3QuXG5JZiBhbiBlcnJvciBvY2N1cnMgYnV0IHRoZSBtb2R1bGUgd2FzIGFscmVhZHkgaW4gYGBzeXMubW9kdWxlc2BgIGl0IGlzXG5sZWZ0IGluIHRoZSBkaWN0LlxuXG5UaGUgbG9hZGVyIG11c3Qgc2V0IHNldmVyYWwgYXR0cmlidXRlcyBvbiB0aGUgbW9kdWxlLiBgYF9fbmFtZV9fYGAgaXNcbnRvIGJlIHNldCB0byB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlLiBgYF9fZmlsZV9fYGAgaXMgdG8gYmUgdGhlICJwYXRoIlxudG8gdGhlIGZpbGUgdW5sZXNzIHRoZSBtb2R1bGUgaXMgYnVpbHQtaW4gKGFuZCB0aHVzIGxpc3RlZCBpblxuYGBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXNgYCkgaW4gd2hpY2ggY2FzZSB0aGUgYXR0cmlidXRlIGlzIG5vdCBzZXQuXG5JZiB3aGF0IGlzIGJlaW5nIGltcG9ydGVkIGlzIGEgcGFja2FnZSB0aGVuIGBgX19wYXRoX19gYCBpcyB0byBiZSBzZXRcbnRvIGEgbGlzdCBvZiBwYXRocyB0byBiZSBzZWFyY2hlZCB3aGVuIGxvb2tpbmcgZm9yIG1vZHVsZXMgYW5kXG5wYWNrYWdlcyBjb250YWluZWQgd2l0aGluIHRoZSBwYWNrYWdlIGJlaW5nIGltcG9ydGVkLiBgYF9fcGFja2FnZV9fYGBcbmlzIG9wdGlvbmFsIGJ1dCBzaG91bGQgYmUgc2V0IHRvIHRoZSBuYW1lIG9mIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGVcbm1vZHVsZSBvciBwYWNrYWdlICh0aGUgZW1wdHkgc3RyaW5nIGlzIHVzZWQgZm9yIG1vZHVsZSBub3QgY29udGFpbmVkXG5pbiBhIHBhY2thZ2UpLiBgYF9fbG9hZGVyX19gYCBpcyBhbHNvIG9wdGlvbmFsIGJ1dCBzaG91bGQgYmUgc2V0IHRvXG50aGUgbG9hZGVyIG9iamVjdCB0aGF0IGlzIGxvYWRpbmcgdGhlIG1vZHVsZS5cblxuSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBsb2FkaW5nIHRoZW4gdGhlIGxvYWRlciByYWlzZXNcbmBgSW1wb3J0RXJyb3JgYCBpZiBzb21lIG90aGVyIGV4Y2VwdGlvbiBpcyBub3QgYWxyZWFkeSBiZWluZ1xucHJvcGFnYXRlZC4gT3RoZXJ3aXNlIHRoZSBsb2FkZXIgcmV0dXJucyB0aGUgbW9kdWxlIHRoYXQgd2FzIGxvYWRlZFxuYW5kIGluaXRpYWxpemVkLlxuXG5XaGVuIHN0ZXAgKDEpIGZpbmlzaGVzIHdpdGhvdXQgcmFpc2luZyBhbiBleGNlcHRpb24sIHN0ZXAgKDIpIGNhblxuYmVnaW4uXG5cblRoZSBmaXJzdCBmb3JtIG9mIGBgaW1wb3J0YGAgc3RhdGVtZW50IGJpbmRzIHRoZSBtb2R1bGUgbmFtZSBpbiB0aGVcbmxvY2FsIG5hbWVzcGFjZSB0byB0aGUgbW9kdWxlIG9iamVjdCwgYW5kIHRoZW4gZ29lcyBvbiB0byBpbXBvcnQgdGhlXG5uZXh0IGlkZW50aWZpZXIsIGlmIGFueS4gIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBmb2xsb3dlZCBieSBgYGFzYGAsXG50aGUgbmFtZSBmb2xsb3dpbmcgYGBhc2BgIGlzIHVzZWQgYXMgdGhlIGxvY2FsIG5hbWUgZm9yIHRoZSBtb2R1bGUuXG5cblRoZSBgYGZyb21gYCBmb3JtIGRvZXMgbm90IGJpbmQgdGhlIG1vZHVsZSBuYW1lOiBpdCBnb2VzIHRocm91Z2ggdGhlXG5saXN0IG9mIGlkZW50aWZpZXJzLCBsb29rcyBlYWNoIG9uZSBvZiB0aGVtIHVwIGluIHRoZSBtb2R1bGUgZm91bmQgaW5cbnN0ZXAgKDEpLCBhbmQgYmluZHMgdGhlIG5hbWUgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSB0byB0aGUgb2JqZWN0IHRodXNcbmZvdW5kLiAgQXMgd2l0aCB0aGUgZmlyc3QgZm9ybSBvZiBgYGltcG9ydGBgLCBhbiBhbHRlcm5hdGUgbG9jYWwgbmFtZVxuY2FuIGJlIHN1cHBsaWVkIGJ5IHNwZWNpZnlpbmcgImBgYXNgYCBsb2NhbG5hbWUiLiAgSWYgYSBuYW1lIGlzIG5vdFxuZm91bmQsIGBgSW1wb3J0RXJyb3JgYCBpcyByYWlzZWQuICBJZiB0aGUgbGlzdCBvZiBpZGVudGlmaWVycyBpc1xucmVwbGFjZWQgYnkgYSBzdGFyIChgYFwnKlwnYGApLCBhbGwgcHVibGljIG5hbWVzIGRlZmluZWQgaW4gdGhlIG1vZHVsZVxuYXJlIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2Ugb2YgdGhlIGBgaW1wb3J0YGAgc3RhdGVtZW50LlxuXG5UaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGVcbm1vZHVsZVwncyBuYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0XG5tdXN0IGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieVxudGhhdCBtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpY1xuYW5kIGFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmIGBgX19hbGxfX2BgIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mXG5wdWJsaWMgbmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIHdoaWNoXG5kbyBub3QgYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoYGBcJ19cJ2BgKS4gYGBfX2FsbF9fYGBcbnNob3VsZCBjb250YWluIHRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWRcbmFjY2lkZW50YWxseSBleHBvcnRpbmcgaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhc1xubGlicmFyeSBtb2R1bGVzIHdoaWNoIHdlcmUgaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLlxuXG5UaGUgYGBmcm9tYGAgZm9ybSB3aXRoIGBgKmBgIG1heSBvbmx5IG9jY3VyIGluIGEgbW9kdWxlIHNjb3BlLiAgVGhlXG53aWxkIGNhcmQgZm9ybSBvZiBpbXBvcnQgLS0tIGBgaW1wb3J0ICpgYCAtLS0gaXMgb25seSBhbGxvd2VkIGF0IHRoZVxubW9kdWxlIGxldmVsLiBBdHRlbXB0aW5nIHRvIHVzZSBpdCBpbiBjbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9uc1xud2lsbCByYWlzZSBhIGBgU3ludGF4RXJyb3JgYC5cblxuV2hlbiBzcGVjaWZ5aW5nIHdoYXQgbW9kdWxlIHRvIGltcG9ydCB5b3UgZG8gbm90IGhhdmUgdG8gc3BlY2lmeSB0aGVcbmFic29sdXRlIG5hbWUgb2YgdGhlIG1vZHVsZS4gV2hlbiBhIG1vZHVsZSBvciBwYWNrYWdlIGlzIGNvbnRhaW5lZFxud2l0aGluIGFub3RoZXIgcGFja2FnZSBpdCBpcyBwb3NzaWJsZSB0byBtYWtlIGEgcmVsYXRpdmUgaW1wb3J0IHdpdGhpblxudGhlIHNhbWUgdG9wIHBhY2thZ2Ugd2l0aG91dCBoYXZpbmcgdG8gbWVudGlvbiB0aGUgcGFja2FnZSBuYW1lLiBCeVxudXNpbmcgbGVhZGluZyBkb3RzIGluIHRoZSBzcGVjaWZpZWQgbW9kdWxlIG9yIHBhY2thZ2UgYWZ0ZXIgYGBmcm9tYGBcbnlvdSBjYW4gc3BlY2lmeSBob3cgaGlnaCB0byB0cmF2ZXJzZSB1cCB0aGUgY3VycmVudCBwYWNrYWdlIGhpZXJhcmNoeVxud2l0aG91dCBzcGVjaWZ5aW5nIGV4YWN0IG5hbWVzLiBPbmUgbGVhZGluZyBkb3QgbWVhbnMgdGhlIGN1cnJlbnRcbnBhY2thZ2Ugd2hlcmUgdGhlIG1vZHVsZSBtYWtpbmcgdGhlIGltcG9ydCBleGlzdHMuIFR3byBkb3RzIG1lYW5zIHVwXG5vbmUgcGFja2FnZSBsZXZlbC4gVGhyZWUgZG90cyBpcyB1cCB0d28gbGV2ZWxzLCBldGMuIFNvIGlmIHlvdSBleGVjdXRlXG5gYGZyb20gLiBpbXBvcnQgbW9kYGAgZnJvbSBhIG1vZHVsZSBpbiB0aGUgYGBwa2dgYCBwYWNrYWdlIHRoZW4geW91XG53aWxsIGVuZCB1cCBpbXBvcnRpbmcgYGBwa2cubW9kYGAuIElmIHlvdSBleGVjdXRlIGBgZnJvbSAuLnN1YnBrZzJcbmltcG9ydCBtb2RgYCBmcm9tIHdpdGhpbiBgYHBrZy5zdWJwa2cxYGAgeW91IHdpbGwgaW1wb3J0XG5gYHBrZy5zdWJwa2cyLm1vZGBgLiBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgcmVsYXRpdmUgaW1wb3J0cyBpc1xuY29udGFpbmVkIHdpdGhpbiAqKlBFUCAzMjgqKi5cblxuYGBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpYGAgaXMgcHJvdmlkZWQgdG8gc3VwcG9ydCBhcHBsaWNhdGlvbnMgdGhhdFxuZGV0ZXJtaW5lIHdoaWNoIG1vZHVsZXMgbmVlZCB0byBiZSBsb2FkZWQgZHluYW1pY2FsbHkuXG5cblxuRnV0dXJlIHN0YXRlbWVudHNcbj09PT09PT09PT09PT09PT09XG5cbkEgKmZ1dHVyZSBzdGF0ZW1lbnQqIGlzIGEgZGlyZWN0aXZlIHRvIHRoZSBjb21waWxlciB0aGF0IGEgcGFydGljdWxhclxubW9kdWxlIHNob3VsZCBiZSBjb21waWxlZCB1c2luZyBzeW50YXggb3Igc2VtYW50aWNzIHRoYXQgd2lsbCBiZVxuYXZhaWxhYmxlIGluIGEgc3BlY2lmaWVkIGZ1dHVyZSByZWxlYXNlIG9mIFB5dGhvbi4gIFRoZSBmdXR1cmVcbnN0YXRlbWVudCBpcyBpbnRlbmRlZCB0byBlYXNlIG1pZ3JhdGlvbiB0byBmdXR1cmUgdmVyc2lvbnMgb2YgUHl0aG9uXG50aGF0IGludHJvZHVjZSBpbmNvbXBhdGlibGUgY2hhbmdlcyB0byB0aGUgbGFuZ3VhZ2UuICBJdCBhbGxvd3MgdXNlIG9mXG50aGUgbmV3IGZlYXR1cmVzIG9uIGEgcGVyLW1vZHVsZSBiYXNpcyBiZWZvcmUgdGhlIHJlbGVhc2UgaW4gd2hpY2ggdGhlXG5mZWF0dXJlIGJlY29tZXMgc3RhbmRhcmQuXG5cbiAgIGZ1dHVyZV9zdGF0ZW1lbnQgOjo9ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgZmVhdHVyZSBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSpcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiAiKCIgZmVhdHVyZSBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSogWyIsIl0gIikiXG4gICBmZWF0dXJlICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4gICBuYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnV0dXJlIHN0YXRlbWVudCBtdXN0IGFwcGVhciBuZWFyIHRoZSB0b3Agb2YgdGhlIG1vZHVsZS4gIFRoZSBvbmx5XG5saW5lcyB0aGF0IGNhbiBhcHBlYXIgYmVmb3JlIGEgZnV0dXJlIHN0YXRlbWVudCBhcmU6XG5cbiogdGhlIG1vZHVsZSBkb2NzdHJpbmcgKGlmIGFueSksXG5cbiogY29tbWVudHMsXG5cbiogYmxhbmsgbGluZXMsIGFuZFxuXG4qIG90aGVyIGZ1dHVyZSBzdGF0ZW1lbnRzLlxuXG5UaGUgZmVhdHVyZXMgcmVjb2duaXplZCBieSBQeXRob24gMy4wIGFyZSBgYGFic29sdXRlX2ltcG9ydGBgLFxuYGBkaXZpc2lvbmBgLCBgYGdlbmVyYXRvcnNgYCwgYGB1bmljb2RlX2xpdGVyYWxzYGAsXG5gYHByaW50X2Z1bmN0aW9uYGAsIGBgbmVzdGVkX3Njb3Blc2BgIGFuZCBgYHdpdGhfc3RhdGVtZW50YGAuICBUaGV5XG5hcmUgYWxsIHJlZHVuZGFudCBiZWNhdXNlIHRoZXkgYXJlIGFsd2F5cyBlbmFibGVkLCBhbmQgb25seSBrZXB0IGZvclxuYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCBpcyByZWNvZ25pemVkIGFuZCB0cmVhdGVkIHNwZWNpYWxseSBhdCBjb21waWxlXG50aW1lOiBDaGFuZ2VzIHRvIHRoZSBzZW1hbnRpY3Mgb2YgY29yZSBjb25zdHJ1Y3RzIGFyZSBvZnRlblxuaW1wbGVtZW50ZWQgYnkgZ2VuZXJhdGluZyBkaWZmZXJlbnQgY29kZS4gIEl0IG1heSBldmVuIGJlIHRoZSBjYXNlXG50aGF0IGEgbmV3IGZlYXR1cmUgaW50cm9kdWNlcyBuZXcgaW5jb21wYXRpYmxlIHN5bnRheCAoc3VjaCBhcyBhIG5ld1xucmVzZXJ2ZWQgd29yZCksIGluIHdoaWNoIGNhc2UgdGhlIGNvbXBpbGVyIG1heSBuZWVkIHRvIHBhcnNlIHRoZVxubW9kdWxlIGRpZmZlcmVudGx5LiAgU3VjaCBkZWNpc2lvbnMgY2Fubm90IGJlIHB1c2hlZCBvZmYgdW50aWxcbnJ1bnRpbWUuXG5cbkZvciBhbnkgZ2l2ZW4gcmVsZWFzZSwgdGhlIGNvbXBpbGVyIGtub3dzIHdoaWNoIGZlYXR1cmUgbmFtZXMgaGF2ZVxuYmVlbiBkZWZpbmVkLCBhbmQgcmFpc2VzIGEgY29tcGlsZS10aW1lIGVycm9yIGlmIGEgZnV0dXJlIHN0YXRlbWVudFxuY29udGFpbnMgYSBmZWF0dXJlIG5vdCBrbm93biB0byBpdC5cblxuVGhlIGRpcmVjdCBydW50aW1lIHNlbWFudGljcyBhcmUgdGhlIHNhbWUgYXMgZm9yIGFueSBpbXBvcnQgc3RhdGVtZW50OlxudGhlcmUgaXMgYSBzdGFuZGFyZCBtb2R1bGUgYGBfX2Z1dHVyZV9fYGAsIGRlc2NyaWJlZCBsYXRlciwgYW5kIGl0XG53aWxsIGJlIGltcG9ydGVkIGluIHRoZSB1c3VhbCB3YXkgYXQgdGhlIHRpbWUgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQgaXNcbmV4ZWN1dGVkLlxuXG5UaGUgaW50ZXJlc3RpbmcgcnVudGltZSBzZW1hbnRpY3MgZGVwZW5kIG9uIHRoZSBzcGVjaWZpYyBmZWF0dXJlXG5lbmFibGVkIGJ5IHRoZSBmdXR1cmUgc3RhdGVtZW50LlxuXG5Ob3RlIHRoYXQgdGhlcmUgaXMgbm90aGluZyBzcGVjaWFsIGFib3V0IHRoZSBzdGF0ZW1lbnQ6XG5cbiAgIGltcG9ydCBfX2Z1dHVyZV9fIFthcyBuYW1lXVxuXG5UaGF0IGlzIG5vdCBhIGZ1dHVyZSBzdGF0ZW1lbnQ7IGl0XCdzIGFuIG9yZGluYXJ5IGltcG9ydCBzdGF0ZW1lbnQgd2l0aFxubm8gc3BlY2lhbCBzZW1hbnRpY3Mgb3Igc3ludGF4IHJlc3RyaWN0aW9ucy5cblxuQ29kZSBjb21waWxlZCBieSBjYWxscyB0byB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zIGBgZXhlYygpYGAgYW5kXG5gYGNvbXBpbGUoKWBgIHRoYXQgb2NjdXIgaW4gYSBtb2R1bGUgYGBNYGAgY29udGFpbmluZyBhIGZ1dHVyZVxuc3RhdGVtZW50IHdpbGwsIGJ5IGRlZmF1bHQsIHVzZSB0aGUgbmV3IHN5bnRheCBvciBzZW1hbnRpY3MgYXNzb2NpYXRlZFxud2l0aCB0aGUgZnV0dXJlIHN0YXRlbWVudC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgYnkgb3B0aW9uYWxcbmFyZ3VtZW50cyB0byBgYGNvbXBpbGUoKWBgIC0tLSBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhhdCBmdW5jdGlvblxuZm9yIGRldGFpbHMuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCB0eXBlZCBhdCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciBwcm9tcHQgd2lsbFxudGFrZSBlZmZlY3QgZm9yIHRoZSByZXN0IG9mIHRoZSBpbnRlcnByZXRlciBzZXNzaW9uLiAgSWYgYW5cbmludGVycHJldGVyIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgKi1pKiBvcHRpb24sIGlzIHBhc3NlZCBhIHNjcmlwdCBuYW1lXG50byBleGVjdXRlLCBhbmQgdGhlIHNjcmlwdCBpbmNsdWRlcyBhIGZ1dHVyZSBzdGF0ZW1lbnQsIGl0IHdpbGwgYmUgaW5cbmVmZmVjdCBpbiB0aGUgaW50ZXJhY3RpdmUgc2Vzc2lvbiBzdGFydGVkIGFmdGVyIHRoZSBzY3JpcHQgaXNcbmV4ZWN1dGVkLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMjM2KiogLSBCYWNrIHRvIHRoZSBfX2Z1dHVyZV9fXG4gICAgICBUaGUgb3JpZ2luYWwgcHJvcG9zYWwgZm9yIHRoZSBfX2Z1dHVyZV9fIG1lY2hhbmlzbS5cbicsCisgJ2ltcG9ydCc6ICdcblRoZSBgYGltcG9ydGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGltcG9ydF9zdG10ICAgICA6Oj0gImltcG9ydCIgbW9kdWxlIFsiYXMiIG5hbWVdICggIiwiIG1vZHVsZSBbImFzIiBuYW1lXSApKlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIHJlbGF0aXZlX21vZHVsZSAiaW1wb3J0IiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIHJlbGF0aXZlX21vZHVsZSAiaW1wb3J0IiAiKCIgaWRlbnRpZmllciBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSogWyIsIl0gIikiXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgbW9kdWxlICJpbXBvcnQiICIqIlxuICAgbW9kdWxlICAgICAgICAgIDo6PSAoaWRlbnRpZmllciAiLiIpKiBpZGVudGlmaWVyXG4gICByZWxhdGl2ZV9tb2R1bGUgOjo9ICIuIiogbW9kdWxlIHwgIi4iK1xuICAgbmFtZSAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG5cblRoZSBiYXNpYyBpbXBvcnQgc3RhdGVtZW50IChubyBgYGZyb21gYCBjbGF1c2UpIGlzIGV4ZWN1dGVkIGluIHR3b1xuc3RlcHM6XG5cbjEuIGZpbmQgYSBtb2R1bGUsIGxvYWRpbmcgYW5kIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3NhcnlcblxuMi4gZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGUgd2hlcmVcbiAgIHRoZSBgYGltcG9ydGBgIHN0YXRlbWVudCBvY2N1cnMuXG5cbldoZW4gdGhlIHN0YXRlbWVudCBjb250YWlucyBtdWx0aXBsZSBjbGF1c2VzIChzZXBhcmF0ZWQgYnkgY29tbWFzKSB0aGVcbnR3byBzdGVwcyBhcmUgY2FycmllZCBvdXQgc2VwYXJhdGVseSBmb3IgZWFjaCBjbGF1c2UsIGp1c3QgYXMgdGhvdWdoXG50aGUgY2xhdXNlcyBoYWQgYmVlbiBzZXBhcmF0ZWQgb3V0IGludG8gaW5kaXZpZGl1YWwgaW1wb3J0IHN0YXRlbWVudHMuXG5cblRoZSBkZXRhaWxzIG9mIHRoZSBmaXJzdCBzdGVwLCBmaW5kaW5nIGFuZCBsb2FkaW5nIG1vZHVsZXMgaXNcbmRlc2NyaWJlZCBpbiBncmVhdGVyIGRldGFpbCBpbiB0aGUgc2VjdGlvbiBvbiB0aGUgKmltcG9ydCBzeXN0ZW0qLFxud2hpY2ggYWxzbyBkZXNjcmliZXMgdGhlIHZhcmlvdXMgdHlwZXMgb2YgcGFja2FnZXMgYW5kIG1vZHVsZXMgdGhhdFxuY2FuIGJlIGltcG9ydGVkLCBhcyB3ZWxsIGFzIGFsbCB0aGUgaG9va3MgdGhhdCBjYW4gYmUgdXNlZCB0b1xuY3VzdG9taXplIHRoZSBpbXBvcnQgc3lzdGVtLiBOb3RlIHRoYXQgZmFpbHVyZXMgaW4gdGhpcyBzdGVwIG1heVxuaW5kaWNhdGUgZWl0aGVyIHRoYXQgdGhlIG1vZHVsZSBjb3VsZCBub3QgYmUgbG9jYXRlZCwgKm9yKiB0aGF0IGFuXG5lcnJvciBvY2N1cnJlZCB3aGlsZSBpbml0aWFsaXppbmcgdGhlIG1vZHVsZSwgd2hpY2ggaW5jbHVkZXMgZXhlY3V0aW9uXG5vZiB0aGUgbW9kdWxlXCdzIGNvZGUuXG5cbklmIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGlzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHksIGl0IHdpbGwgYmUgbWFkZVxuYXZhaWxhYmxlIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgaW4gb25lIG9mIHRocmVlIHdheXM6XG5cbiogSWYgdGhlIG1vZHVsZSBuYW1lIGlzIGZvbGxvd2VkIGJ5IGBgYXNgYCwgdGhlbiB0aGUgbmFtZSBmb2xsb3dpbmdcbiAgYGBhc2BgIGlzIGJvdW5kIGRpcmVjdGx5IHRvIHRoZSBpbXBvcnRlZCBtb2R1bGUuXG5cbiogSWYgbm8gb3RoZXIgbmFtZSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzIGFcbiAgdG9wIGxldmVsIG1vZHVsZSwgdGhlIG1vZHVsZVwncyBuYW1lIGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2VcbiAgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGltcG9ydGVkIG1vZHVsZVxuXG4qIElmIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgKm5vdCogYSB0b3AgbGV2ZWwgbW9kdWxlLCB0aGVuIHRoZVxuICBuYW1lIG9mIHRoZSB0b3AgbGV2ZWwgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUgaXMgYm91bmQgaW5cbiAgdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyBhIHJlZmVyZW5jZSB0byB0aGUgdG9wIGxldmVsIHBhY2thZ2UuIFRoZVxuICBpbXBvcnRlZCBtb2R1bGUgbXVzdCBiZSBhY2Nlc3NlZCB1c2luZyBpdHMgZnVsbCBxdWFsaWZpZWQgbmFtZVxuICByYXRoZXIgdGhhbiBkaXJlY3RseVxuXG5UaGUgYGBmcm9tYGAgZm9ybSB1c2VzIGEgc2xpZ2h0bHkgbW9yZSBjb21wbGV4IHByb2Nlc3M6XG5cbjEuIGZpbmQgdGhlIG1vZHVsZSBzcGVjaWZpZWQgaW4gdGhlIGBgZnJvbWBgIGNsYXVzZSBsb2FkaW5nIGFuZFxuICAgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeTtcblxuMi4gZm9yIGVhY2ggb2YgdGhlIGlkZW50aWZpZXJzIHNwZWNpZmllZCBpbiB0aGUgYGBpbXBvcnRgYCBjbGF1c2VzOlxuXG4gICAxLiBjaGVjayBpZiB0aGUgaW1wb3J0ZWQgbW9kdWxlIGhhcyBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lXG5cbiAgIDIuIGlmIG5vdCwgYXR0ZW1wdCB0byBpbXBvcnQgYSBzdWJtb2R1bGUgd2l0aCB0aGF0IG5hbWUgYW5kIHRoZW5cbiAgICAgIGNoZWNrIHRoZSBpbXBvcnRlZCBtb2R1bGUgYWdhaW4gZm9yIHRoYXQgYXR0cmlidXRlXG5cbiAgIDMuIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kLCBgYEltcG9ydEVycm9yYGAgaXMgcmFpc2VkLlxuXG4gICA0LiBvdGhlcndpc2UsIGEgcmVmZXJlbmNlIHRvIHRoYXQgdmFsdWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsXG4gICAgICBuYW1lc3BhY2UsIHVzaW5nIHRoZSBuYW1lIGluIHRoZSBgYGFzYGAgY2xhdXNlIGlmIGl0IGlzIHByZXNlbnQsXG4gICAgICBvdGhlcndpc2UgdXNpbmcgdGhlIGF0dHJpYnV0ZSBuYW1lXG5cbkV4YW1wbGVzOlxuXG4gICBpbXBvcnQgZm9vICAgICAgICAgICAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgYm91bmQgbG9jYWxseVxuICAgaW1wb3J0IGZvby5iYXIuYmF6ICAgICAgICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCwgZm9vIGJvdW5kIGxvY2FsbHlcbiAgIGltcG9ydCBmb28uYmFyLmJheiBhcyBmYmIgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzIGZiYlxuICAgZnJvbSBmb28uYmFyIGltcG9ydCBiYXogICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgYmF6XG4gICBmcm9tIGZvbyBpbXBvcnQgYXR0ciAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgZm9vLmF0dHIgYm91bmQgYXMgYXR0clxuXG5JZiB0aGUgbGlzdCBvZiBpZGVudGlmaWVycyBpcyByZXBsYWNlZCBieSBhIHN0YXIgKGBgXCcqXCdgYCksIGFsbCBwdWJsaWNcbm5hbWVzIGRlZmluZWQgaW4gdGhlIG1vZHVsZSBhcmUgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlXG5zY29wZSB3aGVyZSB0aGUgYGBpbXBvcnRgYCBzdGF0ZW1lbnQgb2NjdXJzLlxuXG5UaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGVcbm1vZHVsZVwncyBuYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0XG5tdXN0IGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieVxudGhhdCBtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpY1xuYW5kIGFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmIGBgX19hbGxfX2BgIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mXG5wdWJsaWMgbmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIHdoaWNoXG5kbyBub3QgYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoYGBcJ19cJ2BgKS4gIGBgX19hbGxfX2BgXG5zaG91bGQgY29udGFpbiB0aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkIHRvIGF2b2lkXG5hY2NpZGVudGFsbHkgZXhwb3J0aW5nIGl0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXNcbmxpYnJhcnkgbW9kdWxlcyB3aGljaCB3ZXJlIGltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS5cblxuVGhlIGBgZnJvbWBgIGZvcm0gd2l0aCBgYCpgYCBtYXkgb25seSBvY2N1ciBpbiBhIG1vZHVsZSBzY29wZS5cbkF0dGVtcHRpbmcgdG8gdXNlIGl0IGluIGNsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb25zIHdpbGwgcmFpc2UgYVxuYGBTeW50YXhFcnJvcmBgLlxuXG5UaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGVcbm1vZHVsZVwncyBuYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0XG5tdXN0IGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieVxudGhhdCBtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpY1xuYW5kIGFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmIGBgX19hbGxfX2BgIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mXG5wdWJsaWMgbmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIHdoaWNoXG5kbyBub3QgYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoYGBcJ19cJ2BgKS4gIGBgX19hbGxfX2BgXG5zaG91bGQgY29udGFpbiB0aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkIHRvIGF2b2lkXG5hY2NpZGVudGFsbHkgZXhwb3J0aW5nIGl0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXNcbmxpYnJhcnkgbW9kdWxlcyB3aGljaCB3ZXJlIGltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS5cblxuVGhlIGBgZnJvbWBgIGZvcm0gd2l0aCBgYCpgYCBtYXkgb25seSBvY2N1ciBpbiBhIG1vZHVsZSBzY29wZS4gIFRoZVxud2lsZCBjYXJkIGZvcm0gb2YgaW1wb3J0IC0tLSBgYGltcG9ydCAqYGAgLS0tIGlzIG9ubHkgYWxsb3dlZCBhdCB0aGVcbm1vZHVsZSBsZXZlbC4gQXR0ZW1wdGluZyB0byB1c2UgaXQgaW4gY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbnNcbndpbGwgcmFpc2UgYSBgYFN5bnRheEVycm9yYGAuXG5cbldoZW4gc3BlY2lmeWluZyB3aGF0IG1vZHVsZSB0byBpbXBvcnQgeW91IGRvIG5vdCBoYXZlIHRvIHNwZWNpZnkgdGhlXG5hYnNvbHV0ZSBuYW1lIG9mIHRoZSBtb2R1bGUuIFdoZW4gYSBtb2R1bGUgb3IgcGFja2FnZSBpcyBjb250YWluZWRcbndpdGhpbiBhbm90aGVyIHBhY2thZ2UgaXQgaXMgcG9zc2libGUgdG8gbWFrZSBhIHJlbGF0aXZlIGltcG9ydCB3aXRoaW5cbnRoZSBzYW1lIHRvcCBwYWNrYWdlIHdpdGhvdXQgaGF2aW5nIHRvIG1lbnRpb24gdGhlIHBhY2thZ2UgbmFtZS4gQnlcbnVzaW5nIGxlYWRpbmcgZG90cyBpbiB0aGUgc3BlY2lmaWVkIG1vZHVsZSBvciBwYWNrYWdlIGFmdGVyIGBgZnJvbWBgXG55b3UgY2FuIHNwZWNpZnkgaG93IGhpZ2ggdG8gdHJhdmVyc2UgdXAgdGhlIGN1cnJlbnQgcGFja2FnZSBoaWVyYXJjaHlcbndpdGhvdXQgc3BlY2lmeWluZyBleGFjdCBuYW1lcy4gT25lIGxlYWRpbmcgZG90IG1lYW5zIHRoZSBjdXJyZW50XG5wYWNrYWdlIHdoZXJlIHRoZSBtb2R1bGUgbWFraW5nIHRoZSBpbXBvcnQgZXhpc3RzLiBUd28gZG90cyBtZWFucyB1cFxub25lIHBhY2thZ2UgbGV2ZWwuIFRocmVlIGRvdHMgaXMgdXAgdHdvIGxldmVscywgZXRjLiBTbyBpZiB5b3UgZXhlY3V0ZVxuYGBmcm9tIC4gaW1wb3J0IG1vZGBgIGZyb20gYSBtb2R1bGUgaW4gdGhlIGBgcGtnYGAgcGFja2FnZSB0aGVuIHlvdVxud2lsbCBlbmQgdXAgaW1wb3J0aW5nIGBgcGtnLm1vZGBgLiBJZiB5b3UgZXhlY3V0ZSBgYGZyb20gLi5zdWJwa2cyXG5pbXBvcnQgbW9kYGAgZnJvbSB3aXRoaW4gYGBwa2cuc3VicGtnMWBgIHlvdSB3aWxsIGltcG9ydFxuYGBwa2cuc3VicGtnMi5tb2RgYC4gVGhlIHNwZWNpZmljYXRpb24gZm9yIHJlbGF0aXZlIGltcG9ydHMgaXNcbmNvbnRhaW5lZCB3aXRoaW4gKipQRVAgMzI4KiouXG5cbmBgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKWBgIGlzIHByb3ZpZGVkIHRvIHN1cHBvcnQgYXBwbGljYXRpb25zIHRoYXRcbmRldGVybWluZSB3aGljaCBtb2R1bGVzIG5lZWQgdG8gYmUgbG9hZGVkIGR5bmFtaWNhbGx5LlxuXG5cbkZ1dHVyZSBzdGF0ZW1lbnRzXG49PT09PT09PT09PT09PT09PVxuXG5BICpmdXR1cmUgc3RhdGVtZW50KiBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgY29tcGlsZXIgdGhhdCBhIHBhcnRpY3VsYXJcbm1vZHVsZSBzaG91bGQgYmUgY29tcGlsZWQgdXNpbmcgc3ludGF4IG9yIHNlbWFudGljcyB0aGF0IHdpbGwgYmVcbmF2YWlsYWJsZSBpbiBhIHNwZWNpZmllZCBmdXR1cmUgcmVsZWFzZSBvZiBQeXRob24uICBUaGUgZnV0dXJlXG5zdGF0ZW1lbnQgaXMgaW50ZW5kZWQgdG8gZWFzZSBtaWdyYXRpb24gdG8gZnV0dXJlIHZlcnNpb25zIG9mIFB5dGhvblxudGhhdCBpbnRyb2R1Y2UgaW5jb21wYXRpYmxlIGNoYW5nZXMgdG8gdGhlIGxhbmd1YWdlLiAgSXQgYWxsb3dzIHVzZSBvZlxudGhlIG5ldyBmZWF0dXJlcyBvbiBhIHBlci1tb2R1bGUgYmFzaXMgYmVmb3JlIHRoZSByZWxlYXNlIGluIHdoaWNoIHRoZVxuZmVhdHVyZSBiZWNvbWVzIHN0YW5kYXJkLlxuXG4gICBmdXR1cmVfc3RhdGVtZW50IDo6PSAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiIGZlYXR1cmUgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgZmVhdHVyZSBbImFzIiBuYW1lXSkqXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgIigiIGZlYXR1cmUgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgZmVhdHVyZSBbImFzIiBuYW1lXSkqIFsiLCJdICIpIlxuICAgZmVhdHVyZSAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuICAgbmFtZSAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgbXVzdCBhcHBlYXIgbmVhciB0aGUgdG9wIG9mIHRoZSBtb2R1bGUuICBUaGUgb25seVxubGluZXMgdGhhdCBjYW4gYXBwZWFyIGJlZm9yZSBhIGZ1dHVyZSBzdGF0ZW1lbnQgYXJlOlxuXG4qIHRoZSBtb2R1bGUgZG9jc3RyaW5nIChpZiBhbnkpLFxuXG4qIGNvbW1lbnRzLFxuXG4qIGJsYW5rIGxpbmVzLCBhbmRcblxuKiBvdGhlciBmdXR1cmUgc3RhdGVtZW50cy5cblxuVGhlIGZlYXR1cmVzIHJlY29nbml6ZWQgYnkgUHl0aG9uIDMuMCBhcmUgYGBhYnNvbHV0ZV9pbXBvcnRgYCxcbmBgZGl2aXNpb25gYCwgYGBnZW5lcmF0b3JzYGAsIGBgdW5pY29kZV9saXRlcmFsc2BgLFxuYGBwcmludF9mdW5jdGlvbmBgLCBgYG5lc3RlZF9zY29wZXNgYCBhbmQgYGB3aXRoX3N0YXRlbWVudGBgLiAgVGhleVxuYXJlIGFsbCByZWR1bmRhbnQgYmVjYXVzZSB0aGV5IGFyZSBhbHdheXMgZW5hYmxlZCwgYW5kIG9ubHkga2VwdCBmb3JcbmJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgaXMgcmVjb2duaXplZCBhbmQgdHJlYXRlZCBzcGVjaWFsbHkgYXQgY29tcGlsZVxudGltZTogQ2hhbmdlcyB0byB0aGUgc2VtYW50aWNzIG9mIGNvcmUgY29uc3RydWN0cyBhcmUgb2Z0ZW5cbmltcGxlbWVudGVkIGJ5IGdlbmVyYXRpbmcgZGlmZmVyZW50IGNvZGUuICBJdCBtYXkgZXZlbiBiZSB0aGUgY2FzZVxudGhhdCBhIG5ldyBmZWF0dXJlIGludHJvZHVjZXMgbmV3IGluY29tcGF0aWJsZSBzeW50YXggKHN1Y2ggYXMgYSBuZXdcbnJlc2VydmVkIHdvcmQpLCBpbiB3aGljaCBjYXNlIHRoZSBjb21waWxlciBtYXkgbmVlZCB0byBwYXJzZSB0aGVcbm1vZHVsZSBkaWZmZXJlbnRseS4gIFN1Y2ggZGVjaXNpb25zIGNhbm5vdCBiZSBwdXNoZWQgb2ZmIHVudGlsXG5ydW50aW1lLlxuXG5Gb3IgYW55IGdpdmVuIHJlbGVhc2UsIHRoZSBjb21waWxlciBrbm93cyB3aGljaCBmZWF0dXJlIG5hbWVzIGhhdmVcbmJlZW4gZGVmaW5lZCwgYW5kIHJhaXNlcyBhIGNvbXBpbGUtdGltZSBlcnJvciBpZiBhIGZ1dHVyZSBzdGF0ZW1lbnRcbmNvbnRhaW5zIGEgZmVhdHVyZSBub3Qga25vd24gdG8gaXQuXG5cblRoZSBkaXJlY3QgcnVudGltZSBzZW1hbnRpY3MgYXJlIHRoZSBzYW1lIGFzIGZvciBhbnkgaW1wb3J0IHN0YXRlbWVudDpcbnRoZXJlIGlzIGEgc3RhbmRhcmQgbW9kdWxlIGBgX19mdXR1cmVfX2BgLCBkZXNjcmliZWQgbGF0ZXIsIGFuZCBpdFxud2lsbCBiZSBpbXBvcnRlZCBpbiB0aGUgdXN1YWwgd2F5IGF0IHRoZSB0aW1lIHRoZSBmdXR1cmUgc3RhdGVtZW50IGlzXG5leGVjdXRlZC5cblxuVGhlIGludGVyZXN0aW5nIHJ1bnRpbWUgc2VtYW50aWNzIGRlcGVuZCBvbiB0aGUgc3BlY2lmaWMgZmVhdHVyZVxuZW5hYmxlZCBieSB0aGUgZnV0dXJlIHN0YXRlbWVudC5cblxuTm90ZSB0aGF0IHRoZXJlIGlzIG5vdGhpbmcgc3BlY2lhbCBhYm91dCB0aGUgc3RhdGVtZW50OlxuXG4gICBpbXBvcnQgX19mdXR1cmVfXyBbYXMgbmFtZV1cblxuVGhhdCBpcyBub3QgYSBmdXR1cmUgc3RhdGVtZW50OyBpdFwncyBhbiBvcmRpbmFyeSBpbXBvcnQgc3RhdGVtZW50IHdpdGhcbm5vIHNwZWNpYWwgc2VtYW50aWNzIG9yIHN5bnRheCByZXN0cmljdGlvbnMuXG5cbkNvZGUgY29tcGlsZWQgYnkgY2FsbHMgdG8gdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGV4ZWMoKWBgIGFuZFxuYGBjb21waWxlKClgYCB0aGF0IG9jY3VyIGluIGEgbW9kdWxlIGBgTWBgIGNvbnRhaW5pbmcgYSBmdXR1cmVcbnN0YXRlbWVudCB3aWxsLCBieSBkZWZhdWx0LCB1c2UgdGhlIG5ldyBzeW50YXggb3Igc2VtYW50aWNzIGFzc29jaWF0ZWRcbndpdGggdGhlIGZ1dHVyZSBzdGF0ZW1lbnQuICBUaGlzIGNhbiBiZSBjb250cm9sbGVkIGJ5IG9wdGlvbmFsXG5hcmd1bWVudHMgdG8gYGBjb21waWxlKClgYCAtLS0gc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb25cbmZvciBkZXRhaWxzLlxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgdHlwZWQgYXQgYW4gaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgcHJvbXB0IHdpbGxcbnRha2UgZWZmZWN0IGZvciB0aGUgcmVzdCBvZiB0aGUgaW50ZXJwcmV0ZXIgc2Vzc2lvbi4gIElmIGFuXG5pbnRlcnByZXRlciBpcyBzdGFydGVkIHdpdGggdGhlICotaSogb3B0aW9uLCBpcyBwYXNzZWQgYSBzY3JpcHQgbmFtZVxudG8gZXhlY3V0ZSwgYW5kIHRoZSBzY3JpcHQgaW5jbHVkZXMgYSBmdXR1cmUgc3RhdGVtZW50LCBpdCB3aWxsIGJlIGluXG5lZmZlY3QgaW4gdGhlIGludGVyYWN0aXZlIHNlc3Npb24gc3RhcnRlZCBhZnRlciB0aGUgc2NyaXB0IGlzXG5leGVjdXRlZC5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDIzNioqIC0gQmFjayB0byB0aGUgX19mdXR1cmVfX1xuICAgICAgVGhlIG9yaWdpbmFsIHByb3Bvc2FsIGZvciB0aGUgX19mdXR1cmVfXyBtZWNoYW5pc20uXG4nLAogICdpbic6ICdcbkNvbXBhcmlzb25zXG4qKioqKioqKioqKlxuXG5Vbmxpa2UgQywgYWxsIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBpbiBQeXRob24gaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSxcbndoaWNoIGlzIGxvd2VyIHRoYW4gdGhhdCBvZiBhbnkgYXJpdGhtZXRpYywgc2hpZnRpbmcgb3IgYml0d2lzZVxub3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSBgYGEgPCBiIDwgY2BgIGhhdmUgdGhlXG5pbnRlcnByZXRhdGlvbiB0aGF0IGlzIGNvbnZlbnRpb25hbCBpbiBtYXRoZW1hdGljczpcblxuICAgY29tcGFyaXNvbiAgICA6Oj0gb3JfZXhwciAoIGNvbXBfb3BlcmF0b3Igb3JfZXhwciApKlxuICAgY29tcF9vcGVyYXRvciA6Oj0gIjwiIHwgIj4iIHwgIj09IiB8ICI+PSIgfCAiPD0iIHwgIiE9IlxuICAgICAgICAgICAgICAgICAgICAgfCAiaXMiIFsibm90Il0gfCBbIm5vdCJdICJpbiJcblxuQ29tcGFyaXNvbnMgeWllbGQgYm9vbGVhbiB2YWx1ZXM6IGBgVHJ1ZWBgIG9yIGBgRmFsc2VgYC5cblxuQ29tcGFyaXNvbnMgY2FuIGJlIGNoYWluZWQgYXJiaXRyYXJpbHksIGUuZy4sIGBgeCA8IHkgPD0gemBgIGlzXG5lcXVpdmFsZW50IHRvIGBgeCA8IHkgYW5kIHkgPD0gemBgLCBleGNlcHQgdGhhdCBgYHlgYCBpcyBldmFsdWF0ZWRcbm9ubHkgb25jZSAoYnV0IGluIGJvdGggY2FzZXMgYGB6YGAgaXMgbm90IGV2YWx1YXRlZCBhdCBhbGwgd2hlbiBgYHggPFxueWBgIGlzIGZvdW5kIHRvIGJlIGZhbHNlKS5cblxuRm9ybWFsbHksIGlmICphKiwgKmIqLCAqYyosIC4uLiwgKnkqLCAqeiogYXJlIGV4cHJlc3Npb25zIGFuZCAqb3AxKixcbipvcDIqLCAuLi4sICpvcE4qIGFyZSBjb21wYXJpc29uIG9wZXJhdG9ycywgdGhlbiBgYGEgb3AxIGIgb3AyIGMgLi4uIHlcbm9wTiB6YGAgaXMgZXF1aXZhbGVudCB0byBgYGEgb3AxIGIgYW5kIGIgb3AyIGMgYW5kIC4uLiB5IG9wTiB6YGAsXG5leGNlcHQgdGhhdCBlYWNoIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGF0IG1vc3Qgb25jZS5cblxuTm90ZSB0aGF0IGBgYSBvcDEgYiBvcDIgY2BgIGRvZXNuXCd0IGltcGx5IGFueSBraW5kIG9mIGNvbXBhcmlzb25cbmJldHdlZW4gKmEqIGFuZCAqYyosIHNvIHRoYXQsIGUuZy4sIGBgeCA8IHkgPiB6YGAgaXMgcGVyZmVjdGx5IGxlZ2FsXG4odGhvdWdoIHBlcmhhcHMgbm90IHByZXR0eSkuXG5cblRoZSBvcGVyYXRvcnMgYGA8YGAsIGBgPmBgLCBgYD09YGAsIGBgPj1gYCwgYGA8PWBgLCBhbmQgYGAhPWBgIGNvbXBhcmVcbnRoZSB2YWx1ZXMgb2YgdHdvIG9iamVjdHMuICBUaGUgb2JqZWN0cyBuZWVkIG5vdCBoYXZlIHRoZSBzYW1lIHR5cGUuXG5JZiBib3RoIGFyZSBudW1iZXJzLCB0aGV5IGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIE90aGVyd2lzZSxcbnRoZSBgYD09YGAgYW5kIGBgIT1gYCBvcGVyYXRvcnMgKmFsd2F5cyogY29uc2lkZXIgb2JqZWN0cyBvZiBkaWZmZXJlbnRcbnR5cGVzIHRvIGJlIHVuZXF1YWwsIHdoaWxlIHRoZSBgYDxgYCwgYGA+YGAsIGBgPj1gYCBhbmQgYGA8PWBgXG5vcGVyYXRvcnMgcmFpc2UgYSBgYFR5cGVFcnJvcmBgIHdoZW4gY29tcGFyaW5nIG9iamVjdHMgb2YgZGlmZmVyZW50XG50eXBlcyB0aGF0IGRvIG5vdCBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0b3JzIGZvciB0aGUgZ2l2ZW4gcGFpciBvZlxudHlwZXMuICBZb3UgY2FuIGNvbnRyb2wgY29tcGFyaXNvbiBiZWhhdmlvciBvZiBvYmplY3RzIG9mIG5vbi1idWlsdC1pblxudHlwZXMgYnkgZGVmaW5pbmcgcmljaCBjb21wYXJpc29uIG1ldGhvZHMgbGlrZSBgYF9fZ3RfXygpYGAsIGRlc2NyaWJlZFxuaW4gc2VjdGlvbiAqQmFzaWMgY3VzdG9taXphdGlvbiouXG5cbkNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0aGUgc2FtZSB0eXBlIGRlcGVuZHMgb24gdGhlIHR5cGU6XG5cbiogTnVtYmVycyBhcmUgY29tcGFyZWQgYXJpdGhtZXRpY2FsbHkuXG5cbiogVGhlIHZhbHVlcyBgYGZsb2F0KFwnTmFOXCcpYGAgYW5kIGBgRGVjaW1hbChcJ05hTlwnKWBgIGFyZSBzcGVjaWFsLiBUaGVcbiAgYXJlIGlkZW50aWNhbCB0byB0aGVtc2VsdmVzLCBgYHggaXMgeGBgIGJ1dCBhcmUgbm90IGVxdWFsIHRvXG4gIHRoZW1zZWx2ZXMsIGBgeCAhPSB4YGAuICBBZGRpdGlvbmFsbHksIGNvbXBhcmluZyBhbnkgdmFsdWUgdG8gYVxuICBub3QtYS1udW1iZXIgdmFsdWUgd2lsbCByZXR1cm4gYGBGYWxzZWBgLiAgRm9yIGV4YW1wbGUsIGJvdGggYGAzIDxcbiAgZmxvYXQoXCdOYU5cJylgYCBhbmQgYGBmbG9hdChcJ05hTlwnKSA8IDNgYCB3aWxsIHJldHVybiBgYEZhbHNlYGAuXG5cbiogQnl0ZXMgb2JqZWN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWNcbiAgdmFsdWVzIG9mIHRoZWlyIGVsZW1lbnRzLlxuXG4qIFN0cmluZ3MgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljIGVxdWl2YWxlbnRzXG4gICh0aGUgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYG9yZCgpYGApIG9mIHRoZWlyIGNoYXJhY3RlcnMuXG4gIFszXSBTdHJpbmcgYW5kIGJ5dGVzIG9iamVjdCBjYW5cJ3QgYmUgY29tcGFyZWQhXG5cbiogVHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgY29tcGFyaXNvbiBvZlxuICBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLiAgVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGVhY2hcbiAgZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWVcbiAgdHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguXG5cbiAgSWYgbm90IGVxdWFsLCB0aGUgc2VxdWVuY2VzIGFyZSBvcmRlcmVkIHRoZSBzYW1lIGFzIHRoZWlyIGZpcnN0XG4gIGRpZmZlcmluZyBlbGVtZW50cy4gIEZvciBleGFtcGxlLCBgYFsxLDIseF0gPD0gWzEsMix5XWBgIGhhcyB0aGVcbiAgc2FtZSB2YWx1ZSBhcyBgYHggPD0geWBgLiAgSWYgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBkb2VzIG5vdFxuICBleGlzdCwgdGhlIHNob3J0ZXIgc2VxdWVuY2UgaXMgb3JkZXJlZCBmaXJzdCAoZm9yIGV4YW1wbGUsIGBgWzEsMl0gPFxuICBbMSwyLDNdYGApLlxuXG4qIE1hcHBpbmdzIChkaWN0aW9uYXJpZXMpIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSBoYXZlIHRoZVxuICBzYW1lIGBgKGtleSwgdmFsdWUpYGAgcGFpcnMuIE9yZGVyIGNvbXBhcmlzb25zIGBgKFwnPFwnLCBcJzw9XCcsIFwnPj1cJyxcbiAgXCc+XCcpYGAgcmFpc2UgYGBUeXBlRXJyb3JgYC5cblxuKiBTZXRzIGFuZCBmcm96ZW5zZXRzIGRlZmluZSBjb21wYXJpc29uIG9wZXJhdG9ycyB0byBtZWFuIHN1YnNldCBhbmRcbiAgc3VwZXJzZXQgdGVzdHMuICBUaG9zZSByZWxhdGlvbnMgZG8gbm90IGRlZmluZSB0b3RhbCBvcmRlcmluZ3MgKHRoZVxuICB0d28gc2V0cyBgYHsxLDJ9YGAgYW5kIHsyLDN9IGFyZSBub3QgZXF1YWwsIG5vciBzdWJzZXRzIG9mIG9uZVxuICBhbm90aGVyLCBub3Igc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyKS4gIEFjY29yZGluZ2x5LCBzZXRzIGFyZSBub3RcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVwZW5kIG9uIHRvdGFsIG9yZGVyaW5nLlxuICBGb3IgZXhhbXBsZSwgYGBtaW4oKWBgLCBgYG1heCgpYGAsIGFuZCBgYHNvcnRlZCgpYGAgcHJvZHVjZVxuICB1bmRlZmluZWQgcmVzdWx0cyBnaXZlbiBhIGxpc3Qgb2Ygc2V0cyBhcyBpbnB1dHMuXG5cbiogTW9zdCBvdGhlciBvYmplY3RzIG9mIGJ1aWx0LWluIHR5cGVzIGNvbXBhcmUgdW5lcXVhbCB1bmxlc3MgdGhleSBhcmVcbiAgdGhlIHNhbWUgb2JqZWN0OyB0aGUgY2hvaWNlIHdoZXRoZXIgb25lIG9iamVjdCBpcyBjb25zaWRlcmVkIHNtYWxsZXJcbiAgb3IgbGFyZ2VyIHRoYW4gYW5vdGhlciBvbmUgaXMgbWFkZSBhcmJpdHJhcmlseSBidXQgY29uc2lzdGVudGx5XG4gIHdpdGhpbiBvbmUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbS5cblxuQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIHRoZSBkaWZmZXJpbmcgdHlwZXMgZGVwZW5kcyBvbiB3aGV0aGVyIGVpdGhlclxub2YgdGhlIHR5cGVzIHByb3ZpZGUgZXhwbGljaXQgc3VwcG9ydCBmb3IgdGhlIGNvbXBhcmlzb24uICBNb3N0XG5udW1lcmljIHR5cGVzIGNhbiBiZSBjb21wYXJlZCB3aXRoIG9uZSBhbm90aGVyLCBidXQgY29tcGFyaXNvbnMgb2ZcbmBgZmxvYXRgYCBhbmQgYGBEZWNpbWFsYGAgYXJlIG5vdCBzdXBwb3J0ZWQgdG8gYXZvaWQgdGhlIGluZXZpdGFibGVcbmNvbmZ1c2lvbiBhcmlzaW5nIGZyb20gcmVwcmVzZW50YXRpb24gaXNzdWVzIHN1Y2ggYXMgYGBmbG9hdChcJzEuMVwnKWBgXG5iZWluZyBpbmV4YWN0bHkgcmVwcmVzZW50ZWQgYW5kIHRoZXJlZm9yZSBub3QgZXhhY3RseSBlcXVhbCB0b1xuYGBEZWNpbWFsKFwnMS4xXCcpYGAgd2hpY2ggaXMuICBXaGVuIGNyb3NzLXR5cGUgY29tcGFyaXNvbiBpcyBub3RcbnN1cHBvcnRlZCwgdGhlIGNvbXBhcmlzb24gbWV0aG9kIHJldHVybnMgYGBOb3RJbXBsZW1lbnRlZGBgLiAgVGhpcyBjYW5cbmNyZWF0ZSB0aGUgaWxsdXNpb24gb2Ygbm9uLXRyYW5zaXRpdml0eSBiZXR3ZWVuIHN1cHBvcnRlZCBjcm9zcy10eXBlXG5jb21wYXJpc29ucyBhbmQgdW5zdXBwb3J0ZWQgY29tcGFyaXNvbnMuICBGb3IgZXhhbXBsZSwgYGBEZWNpbWFsKDIpID09XG4yYGAgYW5kIGBgMiA9PSBmbG9hdCgyKWBgIGJ1dCBgYERlY2ltYWwoMikgIT0gZmxvYXQoMilgYC5cblxuVGhlIG9wZXJhdG9ycyBgYGluYGAgYW5kIGBgbm90IGluYGAgdGVzdCBmb3IgbWVtYmVyc2hpcC4gIGBgeCBpbiBzYGBcbmV2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSBvdGhlcndpc2UuICBgYHhcbm5vdCBpbiBzYGAgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgYGB4IGluIHNgYC4gIEFsbCBidWlsdC1pbiBzZXF1ZW5jZXNcbmFuZCBzZXQgdHlwZXMgc3VwcG9ydCB0aGlzIGFzIHdlbGwgYXMgZGljdGlvbmFyeSwgZm9yIHdoaWNoIGBgaW5gYFxudGVzdHMgd2hldGhlciBhIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlc1xuc3VjaCBhcyBsaXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbmV4cHJlc3Npb24gYGB4IGluIHlgYCBpcyBlcXVpdmFsZW50IHRvIGBgYW55KHggaXMgZSBvciB4ID09IGUgZm9yIGUgaW5cbnkpYGAuXG5cbkZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KlxuaXMgYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzIGBgeS5maW5kKHgpICE9IC0xYGAuXG5FbXB0eSBzdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXJcbnN0cmluZywgc28gYGAiIiBpbiAiYWJjImBgIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZGVmaW5lIHRoZSBgYF9fY29udGFpbnNfXygpYGAgbWV0aG9kLFxuYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIGBgeS5fX2NvbnRhaW5zX18oeClgYCBpcyB0cnVlLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZG8gbm90IGRlZmluZSBgYF9fY29udGFpbnNfXygpYGAgYnV0IGRvXG5kZWZpbmUgYGBfX2l0ZXJfXygpYGAsIGBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBzb21lIHZhbHVlIGBgemBgIHdpdGggYGB4XG49PSB6YGAgaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgYGB5YGAuICBJZiBhbiBleGNlcHRpb24gaXNcbnJhaXNlZCBkdXJpbmcgdGhlIGl0ZXJhdGlvbiwgaXQgaXMgYXMgaWYgYGBpbmBgIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cblxuTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyBkZWZpbmVzXG5gYF9fZ2V0aXRlbV9fKClgYCwgYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGlzIGEgbm9uLVxubmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0IGBgeCA9PSB5W2ldYGAsIGFuZCBhbGwgbG93ZXJcbmludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgYGBJbmRleEVycm9yYGAgZXhjZXB0aW9uLiAgKElmIGFueSBvdGhlclxuZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgYGBpbmBgIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbikuXG5cblRoZSBvcGVyYXRvciBgYG5vdCBpbmBgIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlIHZhbHVlIG9mXG5gYGluYGAuXG5cblRoZSBvcGVyYXRvcnMgYGBpc2BgIGFuZCBgYGlzIG5vdGBgIHRlc3QgZm9yIG9iamVjdCBpZGVudGl0eTogYGB4IGlzXG55YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogYW5kICp5KiBhcmUgdGhlIHNhbWUgb2JqZWN0LiAgYGB4IGlzXG5ub3QgeWBgIHlpZWxkcyB0aGUgaW52ZXJzZSB0cnV0aCB2YWx1ZS4gWzRdXG4nLAogICdpbnRlZ2Vycyc6ICdcbkludGVnZXIgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKipcblxuSW50ZWdlciBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9uczpcblxuICAgaW50ZWdlciAgICAgICAgOjo9IGRlY2ltYWxpbnRlZ2VyIHwgb2N0aW50ZWdlciB8IGhleGludGVnZXIgfCBiaW5pbnRlZ2VyXG4gICBkZWNpbWFsaW50ZWdlciA6Oj0gbm9uemVyb2RpZ2l0IGRpZ2l0KiB8ICIwIitcbiAgIG5vbnplcm9kaWdpdCAgIDo6PSAiMSIuLi4iOSJcbiAgIGRpZ2l0ICAgICAgICAgIDo6PSAiMCIuLi4iOSJcbiAgIG9jdGludGVnZXIgICAgIDo6PSAiMCIgKCJvIiB8ICJPIikgb2N0ZGlnaXQrXG4gICBoZXhpbnRlZ2VyICAgICA6Oj0gIjAiICgieCIgfCAiWCIpIGhleGRpZ2l0K1xuICAgYmluaW50ZWdlciAgICAgOjo9ICIwIiAoImIiIHwgIkIiKSBiaW5kaWdpdCtcbiAgIG9jdGRpZ2l0ICAgICAgIDo6PSAiMCIuLi4iNyJcbiAgIGhleGRpZ2l0ICAgICAgIDo6PSBkaWdpdCB8ICJhIi4uLiJmIiB8ICJBIi4uLiJGIlxuICAgYmluZGlnaXQgICAgICAgOjo9ICIwIiB8ICIxIlxuXG5UaGVyZSBpcyBubyBsaW1pdCBmb3IgdGhlIGxlbmd0aCBvZiBpbnRlZ2VyIGxpdGVyYWxzIGFwYXJ0IGZyb20gd2hhdFxuY2FuIGJlIHN0b3JlZCBpbiBhdmFpbGFibGUgbWVtb3J5LlxuXG5Ob3RlIHRoYXQgbGVhZGluZyB6ZXJvcyBpbiBhIG5vbi16ZXJvIGRlY2ltYWwgbnVtYmVyIGFyZSBub3QgYWxsb3dlZC5cblRoaXMgaXMgZm9yIGRpc2FtYmlndWF0aW9uIHdpdGggQy1zdHlsZSBvY3RhbCBsaXRlcmFscywgd2hpY2ggUHl0aG9uXG51c2VkIGJlZm9yZSB2ZXJzaW9uIDMuMC5cblxuU29tZSBleGFtcGxlcyBvZiBpbnRlZ2VyIGxpdGVyYWxzOlxuXG4gICA3ICAgICAyMTQ3NDgzNjQ3ICAgICAgICAgICAgICAgICAgICAgICAgMG8xNzcgICAgMGIxMDAxMTAxMTFcbiAgIDMgICAgIDc5MjI4MTYyNTE0MjY0MzM3NTkzNTQzOTUwMzM2ICAgICAwbzM3NyAgICAweDEwMDAwMDAwMFxuICAgICAgICAgNzkyMjgxNjI1MTQyNjQzMzc1OTM1NDM5NTAzMzYgICAgICAgICAgICAgIDB4ZGVhZGJlZWZcbicsCiAgJ2xhbWJkYSc6ICdcbkxhbWJkYXNcbioqKioqKipcblxuICAgbGFtYmRhX2Zvcm0gICAgICAgIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiBleHByZXNzaW9uXG4gICBsYW1iZGFfZm9ybV9ub2NvbmQgOjo9ICJsYW1iZGEiIFtwYXJhbWV0ZXJfbGlzdF06IGV4cHJlc3Npb25fbm9jb25kXG5cbkxhbWJkYSBmb3JtcyAobGFtYmRhIGV4cHJlc3Npb25zKSBoYXZlIHRoZSBzYW1lIHN5bnRhY3RpYyBwb3NpdGlvbiBhc1xuZXhwcmVzc2lvbnMuICBUaGV5IGFyZSBhIHNob3J0aGFuZCB0byBjcmVhdGUgYW5vbnltb3VzIGZ1bmN0aW9uczsgdGhlXG5leHByZXNzaW9uIGBgbGFtYmRhIGFyZ3VtZW50czogZXhwcmVzc2lvbmBgIHlpZWxkcyBhIGZ1bmN0aW9uIG9iamVjdC5cblRoZSB1bm5hbWVkIG9iamVjdCBiZWhhdmVzIGxpa2UgYSBmdW5jdGlvbiBvYmplY3QgZGVmaW5lZCB3aXRoXG5cbiAgIGRlZiA8bGFtYmRhPihhcmd1bWVudHMpOlxuICAgICAgIHJldHVybiBleHByZXNzaW9uXG5cblNlZSBzZWN0aW9uICpGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIHRoZSBzeW50YXggb2YgcGFyYW1ldGVyIGxpc3RzLlxuTm90ZSB0aGF0IGZ1bmN0aW9ucyBjcmVhdGVkIHdpdGggbGFtYmRhIGZvcm1zIGNhbm5vdCBjb250YWluXG5zdGF0ZW1lbnRzIG9yIGFubm90YXRpb25zLlxuJywKQEAgLTQ5LDMwICs1MCwzMCBAQAogICdub25sb2NhbCc6ICdcblRoZSBgYG5vbmxvY2FsYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBub25sb2NhbF9zdG10IDo6PSAibm9ubG9jYWwiIGlkZW50aWZpZXIgKCIsIiBpZGVudGlmaWVyKSpcblxuVGhlIGBgbm9ubG9jYWxgYCBzdGF0ZW1lbnQgY2F1c2VzIHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgdG8gcmVmZXIgdG9cbnByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZS4gIFRoaXMgaXNcbmltcG9ydGFudCBiZWNhdXNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBiaW5kaW5nIGlzIHRvIHNlYXJjaCB0aGVcbmxvY2FsIG5hbWVzcGFjZSBmaXJzdC4gIFRoZSBzdGF0ZW1lbnQgYWxsb3dzIGVuY2Fwc3VsYXRlZCBjb2RlIHRvXG5yZWJpbmQgdmFyaWFibGVzIG91dHNpZGUgb2YgdGhlIGxvY2FsIHNjb3BlIGJlc2lkZXMgdGhlIGdsb2JhbFxuKG1vZHVsZSkgc2NvcGUuXG5cbk5hbWVzIGxpc3RlZCBpbiBhIGBgbm9ubG9jYWxgYCBzdGF0ZW1lbnQsIHVubGlrZSB0byB0aG9zZSBsaXN0ZWQgaW4gYVxuYGBnbG9iYWxgYCBzdGF0ZW1lbnQsIG11c3QgcmVmZXIgdG8gcHJlLWV4aXN0aW5nIGJpbmRpbmdzIGluIGFuXG5lbmNsb3Npbmcgc2NvcGUgKHRoZSBzY29wZSBpbiB3aGljaCBhIG5ldyBiaW5kaW5nIHNob3VsZCBiZSBjcmVhdGVkXG5jYW5ub3QgYmUgZGV0ZXJtaW5lZCB1bmFtYmlndW91c2x5KS5cblxuTmFtZXMgbGlzdGVkIGluIGEgYGBub25sb2NhbGBgIHN0YXRlbWVudCBtdXN0IG5vdCBjb2xsaWRlIHdpdGggcHJlLVxuZXhpc3RpbmcgYmluZGluZ3MgaW4gdGhlIGxvY2FsIHNjb3BlLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzEwNCoqIC0gQWNjZXNzIHRvIE5hbWVzIGluIE91dGVyIFNjb3Blc1xuICAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBgYG5vbmxvY2FsYGAgc3RhdGVtZW50LlxuJywKICAnbnVtYmVycyc6ICJcbk51bWVyaWMgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIG51bWVyaWMgbGl0ZXJhbHM6IGludGVnZXJzLCBmbG9hdGluZyBwb2ludFxubnVtYmVycywgYW5kIGltYWdpbmFyeSBudW1iZXJzLiAgVGhlcmUgYXJlIG5vIGNvbXBsZXggbGl0ZXJhbHNcbihjb21wbGV4IG51bWJlcnMgY2FuIGJlIGZvcm1lZCBieSBhZGRpbmcgYSByZWFsIG51bWJlciBhbmQgYW5cbmltYWdpbmFyeSBudW1iZXIpLlxuXG5Ob3RlIHRoYXQgbnVtZXJpYyBsaXRlcmFscyBkbyBub3QgaW5jbHVkZSBhIHNpZ247IGEgcGhyYXNlIGxpa2UgYGAtMWBgXG5pcyBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciAnYGAtYGAnIGFuZFxudGhlIGxpdGVyYWwgYGAxYGAuXG4iLAogICdudW1lcmljLXR5cGVzJzogIlxuRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgb2JqZWN0cy5cbk1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlXG5wYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yXG5ub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuXG5vYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKGBgK2BgLCBgYC1gYCwgYGAqYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgLFxuICAgYGBkaXZtb2QoKWBgLCBgYHBvdygpYGAsIGBgKipgYCwgYGA8PGBgLCBgYD4+YGAsIGBgJmBgLCBgYF5gYCxcbiAgIGBgfGBgKS4gIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4ICsgeWBgLCB3aGVyZVxuICAgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX2FkZF9fKClgYCBtZXRob2QsXG4gICBgYHguX19hZGRfXyh5KWBgIGlzIGNhbGxlZC4gIFRoZSBgYF9fZGl2bW9kX18oKWBgIG1ldGhvZCBzaG91bGQgYmVcbiAgIHRoZSBlcXVpdmFsZW50IHRvIHVzaW5nIGBgX19mbG9vcmRpdl9fKClgYCBhbmQgYGBfX21vZF9fKClgYDsgaXRcbiAgIHNob3VsZCBub3QgYmUgcmVsYXRlZCB0byBgYF9fdHJ1ZWRpdl9fKClgYC4gIE5vdGUgdGhhdFxuICAgYGBfX3Bvd19fKClgYCBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHQgYW4gb3B0aW9uYWwgdGhpcmRcbiAgIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluIGBgcG93KClgYCBmdW5jdGlvblxuICAgaXMgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiBgYE5vdEltcGxlbWVudGVkYGAuXG5cbm9iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsXG4gICBgYGRpdm1vZCgpYGAsIGBgcG93KClgYCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLFxuICAgYGB8YGApIHdpdGggcmVmbGVjdGVkIChzd2FwcGVkKSBvcGVyYW5kcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5XG4gICBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nXG4gICBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLiBbMl0gIEZvclxuICAgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGBgeCAtIHlgYCwgd2hlcmUgKnkqIGlzIGFuXG4gICBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19yc3ViX18oKWBgIG1ldGhvZCxcbiAgIGBgeS5fX3JzdWJfXyh4KWBgIGlzIGNhbGxlZCBpZiBgYHguX19zdWJfXyh5KWBgIHJldHVybnNcbiAgICpOb3RJbXBsZW1lbnRlZCouXG5cbiAgIE5vdGUgdGhhdCB0ZXJuYXJ5IGBgcG93KClgYCB3aWxsIG5vdCB0cnkgY2FsbGluZyBgYF9fcnBvd19fKClgYFxuICAgKHRoZSBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cblxuICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmQncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZCdzXG4gICAgIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCBtZXRob2QgZm9yIHRoZVxuICAgICBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgbGVmdCBvcGVyYW5kJ3NcbiAgICAgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyBzdWJjbGFzc2VzIHRvXG4gICAgIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9ycycgb3BlcmF0aW9ucy5cblxub2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgYXJpdGhtZXRpY1xuICAgYXNzaWdubWVudHMgKGBgKz1gYCwgYGAtPWBgLCBgYCo9YGAsIGBgLz1gYCwgYGAvLz1gYCwgYGAlPWBgLFxuICAgYGAqKj1gYCwgYGA8PD1gYCwgYGA+Pj1gYCwgYGAmPWBgLCBgYF49YGAsIGBgfD1gYCkuICBUaGVzZSBtZXRob2RzXG4gICBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmRcbiAgIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsXG4gICAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWRcbiAgIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBleGVjdXRlIHRoZSBzdGF0ZW1lbnQgYGB4ICs9IHlgYCwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGFcbiAgIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9faWFkZF9fKHkpYGAgaXNcbiAgIGNhbGxlZC4gIElmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgZG9lcyBub3QgZGVmaW5lIGFcbiAgIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9fYWRkX18oeSlgYCBhbmQgYGB5Ll9fcmFkZF9fKHgpYGAgYXJlXG4gICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mIGBgeCArIHlgYC5cblxub2JqZWN0Ll9fbmVnX18oc2VsZilcbm9iamVjdC5fX3Bvc19fKHNlbGYpXG5vYmplY3QuX19hYnNfXyhzZWxmKVxub2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIChgYC1gYCwgYGArYGAsXG4gICBgYGFicygpYGAgYW5kIGBgfmBgKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGNvbXBsZXgoKWBgLFxuICAgYGBpbnQoKWBgLCBgYGZsb2F0KClgYCBhbmQgYGByb3VuZCgpYGAuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2ZcbiAgIHRoZSBhcHByb3ByaWF0ZSB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYGBvcGVyYXRvci5pbmRleCgpYGAuICBBbHNvIGNhbGxlZCB3aGVuZXZlclxuICAgUHl0aG9uIG5lZWRzIGFuIGludGVnZXIgb2JqZWN0IChzdWNoIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZVxuICAgYnVpbHQtaW4gYGBiaW4oKWBgLCBgYGhleCgpYGAgYW5kIGBgb2N0KClgYCBmdW5jdGlvbnMpLiBNdXN0IHJldHVyblxuICAgYW4gaW50ZWdlci5cbiIsCi0gJ29iamVjdHMnOiAnXG5PYmplY3RzLCB2YWx1ZXMgYW5kIHR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cbipPYmplY3RzKiBhcmUgUHl0aG9uXCdzIGFic3RyYWN0aW9uIGZvciBkYXRhLiAgQWxsIGRhdGEgaW4gYSBQeXRob25cbnByb2dyYW0gaXMgcmVwcmVzZW50ZWQgYnkgb2JqZWN0cyBvciBieSByZWxhdGlvbnMgYmV0d2VlbiBvYmplY3RzLiAoSW5cbmEgc2Vuc2UsIGFuZCBpbiBjb25mb3JtYW5jZSB0byBWb24gTmV1bWFublwncyBtb2RlbCBvZiBhICJzdG9yZWRcbnByb2dyYW0gY29tcHV0ZXIsIiBjb2RlIGlzIGFsc28gcmVwcmVzZW50ZWQgYnkgb2JqZWN0cy4pXG5cbkV2ZXJ5IG9iamVjdCBoYXMgYW4gaWRlbnRpdHksIGEgdHlwZSBhbmQgYSB2YWx1ZS4gIEFuIG9iamVjdFwnc1xuKmlkZW50aXR5KiBuZXZlciBjaGFuZ2VzIG9uY2UgaXQgaGFzIGJlZW4gY3JlYXRlZDsgeW91IG1heSB0aGluayBvZiBpdFxuYXMgdGhlIG9iamVjdFwncyBhZGRyZXNzIGluIG1lbW9yeS4gIFRoZSBcJ2BgaXNgYFwnIG9wZXJhdG9yIGNvbXBhcmVzIHRoZVxuaWRlbnRpdHkgb2YgdHdvIG9iamVjdHM7IHRoZSBgYGlkKClgYCBmdW5jdGlvbiByZXR1cm5zIGFuIGludGVnZXJcbnJlcHJlc2VudGluZyBpdHMgaWRlbnRpdHkgKGN1cnJlbnRseSBpbXBsZW1lbnRlZCBhcyBpdHMgYWRkcmVzcykuIEFuXG5vYmplY3RcJ3MgKnR5cGUqIGlzIGFsc28gdW5jaGFuZ2VhYmxlLiBbMV0gQW4gb2JqZWN0XCdzIHR5cGUgZGV0ZXJtaW5lc1xudGhlIG9wZXJhdGlvbnMgdGhhdCB0aGUgb2JqZWN0IHN1cHBvcnRzIChlLmcuLCAiZG9lcyBpdCBoYXZlIGFcbmxlbmd0aD8iKSBhbmQgYWxzbyBkZWZpbmVzIHRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yIG9iamVjdHMgb2YgdGhhdFxudHlwZS4gIFRoZSBgYHR5cGUoKWBgIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0XCdzIHR5cGUgKHdoaWNoIGlzIGFuXG5vYmplY3QgaXRzZWxmKS4gIFRoZSAqdmFsdWUqIG9mIHNvbWUgb2JqZWN0cyBjYW4gY2hhbmdlLiAgT2JqZWN0c1xud2hvc2UgdmFsdWUgY2FuIGNoYW5nZSBhcmUgc2FpZCB0byBiZSAqbXV0YWJsZSo7IG9iamVjdHMgd2hvc2UgdmFsdWVcbmlzIHVuY2hhbmdlYWJsZSBvbmNlIHRoZXkgYXJlIGNyZWF0ZWQgYXJlIGNhbGxlZCAqaW1tdXRhYmxlKi4gKFRoZVxudmFsdWUgb2YgYW4gaW1tdXRhYmxlIGNvbnRhaW5lciBvYmplY3QgdGhhdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhXG5tdXRhYmxlIG9iamVjdCBjYW4gY2hhbmdlIHdoZW4gdGhlIGxhdHRlclwncyB2YWx1ZSBpcyBjaGFuZ2VkOyBob3dldmVyXG50aGUgY29udGFpbmVyIGlzIHN0aWxsIGNvbnNpZGVyZWQgaW1tdXRhYmxlLCBiZWNhdXNlIHRoZSBjb2xsZWN0aW9uIG9mXG5vYmplY3RzIGl0IGNvbnRhaW5zIGNhbm5vdCBiZSBjaGFuZ2VkLiAgU28sIGltbXV0YWJpbGl0eSBpcyBub3RcbnN0cmljdGx5IHRoZSBzYW1lIGFzIGhhdmluZyBhbiB1bmNoYW5nZWFibGUgdmFsdWUsIGl0IGlzIG1vcmUgc3VidGxlLilcbkFuIG9iamVjdFwncyBtdXRhYmlsaXR5IGlzIGRldGVybWluZWQgYnkgaXRzIHR5cGU7IGZvciBpbnN0YW5jZSxcbm51bWJlcnMsIHN0cmluZ3MgYW5kIHR1cGxlcyBhcmUgaW1tdXRhYmxlLCB3aGlsZSBkaWN0aW9uYXJpZXMgYW5kXG5saXN0cyBhcmUgbXV0YWJsZS5cblxuT2JqZWN0cyBhcmUgbmV2ZXIgZXhwbGljaXRseSBkZXN0cm95ZWQ7IGhvd2V2ZXIsIHdoZW4gdGhleSBiZWNvbWVcbnVucmVhY2hhYmxlIHRoZXkgbWF5IGJlIGdhcmJhZ2UtY29sbGVjdGVkLiAgQW4gaW1wbGVtZW50YXRpb24gaXNcbmFsbG93ZWQgdG8gcG9zdHBvbmUgZ2FyYmFnZSBjb2xsZWN0aW9uIG9yIG9taXQgaXQgYWx0b2dldGhlciAtLS0gaXQgaXNcbmEgbWF0dGVyIG9mIGltcGxlbWVudGF0aW9uIHF1YWxpdHkgaG93IGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xuaW1wbGVtZW50ZWQsIGFzIGxvbmcgYXMgbm8gb2JqZWN0cyBhcmUgY29sbGVjdGVkIHRoYXQgYXJlIHN0aWxsXG5yZWFjaGFibGUuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQ1B5dGhvbiBjdXJyZW50bHkgdXNlcyBhIHJlZmVyZW5jZS1cbmNvdW50aW5nIHNjaGVtZSB3aXRoIChvcHRpb25hbCkgZGVsYXllZCBkZXRlY3Rpb24gb2YgY3ljbGljYWxseSBsaW5rZWRcbmdhcmJhZ2UsIHdoaWNoIGNvbGxlY3RzIG1vc3Qgb2JqZWN0cyBhcyBzb29uIGFzIHRoZXkgYmVjb21lXG51bnJlYWNoYWJsZSwgYnV0IGlzIG5vdCBndWFyYW50ZWVkIHRvIGNvbGxlY3QgZ2FyYmFnZSBjb250YWluaW5nXG5jaXJjdWxhciByZWZlcmVuY2VzLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBgYGdjYGAgbW9kdWxlIGZvclxuaW5mb3JtYXRpb24gb24gY29udHJvbGxpbmcgdGhlIGNvbGxlY3Rpb24gb2YgY3ljbGljIGdhcmJhZ2UuIE90aGVyXG5pbXBsZW1lbnRhdGlvbnMgYWN0IGRpZmZlcmVudGx5IGFuZCBDUHl0aG9uIG1heSBjaGFuZ2UuIERvIG5vdCBkZXBlbmRcbm9uIGltbWVkaWF0ZSBmaW5hbGl6YXRpb24gb2Ygb2JqZWN0cyB3aGVuIHRoZXkgYmVjb21lIHVucmVhY2hhYmxlIChleDpcbmFsd2F5cyBjbG9zZSBmaWxlcykuXG5cbk5vdGUgdGhhdCB0aGUgdXNlIG9mIHRoZSBpbXBsZW1lbnRhdGlvblwncyB0cmFjaW5nIG9yIGRlYnVnZ2luZ1xuZmFjaWxpdGllcyBtYXkga2VlcCBvYmplY3RzIGFsaXZlIHRoYXQgd291bGQgbm9ybWFsbHkgYmUgY29sbGVjdGFibGUuXG5BbHNvIG5vdGUgdGhhdCBjYXRjaGluZyBhbiBleGNlcHRpb24gd2l0aCBhIFwnYGB0cnlgYC4uLmBgZXhjZXB0YGBcJ1xuc3RhdGVtZW50IG1heSBrZWVwIG9iamVjdHMgYWxpdmUuXG5cblNvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gImV4dGVybmFsIiByZXNvdXJjZXMgc3VjaCBhcyBvcGVuXG5maWxlcyBvciB3aW5kb3dzLiAgSXQgaXMgdW5kZXJzdG9vZCB0aGF0IHRoZXNlIHJlc291cmNlcyBhcmUgZnJlZWRcbndoZW4gdGhlIG9iamVjdCBpcyBnYXJiYWdlLWNvbGxlY3RlZCwgYnV0IHNpbmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xubm90IGd1YXJhbnRlZWQgdG8gaGFwcGVuLCBzdWNoIG9iamVjdHMgYWxzbyBwcm92aWRlIGFuIGV4cGxpY2l0IHdheSB0b1xucmVsZWFzZSB0aGUgZXh0ZXJuYWwgcmVzb3VyY2UsIHVzdWFsbHkgYSBgYGNsb3NlKClgYCBtZXRob2QuIFByb2dyYW1zXG5hcmUgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gZXhwbGljaXRseSBjbG9zZSBzdWNoIG9iamVjdHMuICBUaGVcblwnYGB0cnlgYC4uLmBgZmluYWxseWBgXCcgc3RhdGVtZW50IGFuZCB0aGUgXCdgYHdpdGhgYFwnIHN0YXRlbWVudCBwcm92aWRlXG5jb252ZW5pZW50IHdheXMgdG8gZG8gdGhpcy5cblxuU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzOyB0aGVzZSBhcmUgY2FsbGVkXG4qY29udGFpbmVycyouIEV4YW1wbGVzIG9mIGNvbnRhaW5lcnMgYXJlIHR1cGxlcywgbGlzdHMgYW5kXG5kaWN0aW9uYXJpZXMuICBUaGUgcmVmZXJlbmNlcyBhcmUgcGFydCBvZiBhIGNvbnRhaW5lclwncyB2YWx1ZS4gIEluXG5tb3N0IGNhc2VzLCB3aGVuIHdlIHRhbGsgYWJvdXQgdGhlIHZhbHVlIG9mIGEgY29udGFpbmVyLCB3ZSBpbXBseSB0aGVcbnZhbHVlcywgbm90IHRoZSBpZGVudGl0aWVzIG9mIHRoZSBjb250YWluZWQgb2JqZWN0czsgaG93ZXZlciwgd2hlbiB3ZVxudGFsayBhYm91dCB0aGUgbXV0YWJpbGl0eSBvZiBhIGNvbnRhaW5lciwgb25seSB0aGUgaWRlbnRpdGllcyBvZiB0aGVcbmltbWVkaWF0ZWx5IGNvbnRhaW5lZCBvYmplY3RzIGFyZSBpbXBsaWVkLiAgU28sIGlmIGFuIGltbXV0YWJsZVxuY29udGFpbmVyIChsaWtlIGEgdHVwbGUpIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgbXV0YWJsZSBvYmplY3QsIGl0c1xudmFsdWUgY2hhbmdlcyBpZiB0aGF0IG11dGFibGUgb2JqZWN0IGlzIGNoYW5nZWQuXG5cblR5cGVzIGFmZmVjdCBhbG1vc3QgYWxsIGFzcGVjdHMgb2Ygb2JqZWN0IGJlaGF2aW9yLiAgRXZlbiB0aGVcbmltcG9ydGFuY2Ugb2Ygb2JqZWN0IGlkZW50aXR5IGlzIGFmZmVjdGVkIGluIHNvbWUgc2Vuc2U6IGZvciBpbW11dGFibGVcbnR5cGVzLCBvcGVyYXRpb25zIHRoYXQgY29tcHV0ZSBuZXcgdmFsdWVzIG1heSBhY3R1YWxseSByZXR1cm4gYVxucmVmZXJlbmNlIHRvIGFueSBleGlzdGluZyBvYmplY3Qgd2l0aCB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSwgd2hpbGVcbmZvciBtdXRhYmxlIG9iamVjdHMgdGhpcyBpcyBub3QgYWxsb3dlZC4gIEUuZy4sIGFmdGVyIGBgYSA9IDE7IGIgPVxuMWBgLCBgYGFgYCBhbmQgYGBiYGAgbWF5IG9yIG1heSBub3QgcmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0IHdpdGggdGhlXG52YWx1ZSBvbmUsIGRlcGVuZGluZyBvbiB0aGUgaW1wbGVtZW50YXRpb24sIGJ1dCBhZnRlciBgYGMgPSBbXTsgZCA9XG5bXWBgLCBgYGNgYCBhbmQgYGBkYGAgYXJlIGd1YXJhbnRlZWQgdG8gcmVmZXIgdG8gdHdvIGRpZmZlcmVudCxcbnVuaXF1ZSwgbmV3bHkgY3JlYXRlZCBlbXB0eSBsaXN0cy4gKE5vdGUgdGhhdCBgYGMgPSBkID0gW11gYCBhc3NpZ25zXG50aGUgc2FtZSBvYmplY3QgdG8gYm90aCBgYGNgYCBhbmQgYGBkYGAuKVxuJywKKyAnb2JqZWN0cyc6ICdcbk9iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuKk9iamVjdHMqIGFyZSBQeXRob25cJ3MgYWJzdHJhY3Rpb24gZm9yIGRhdGEuICBBbGwgZGF0YSBpbiBhIFB5dGhvblxucHJvZ3JhbSBpcyByZXByZXNlbnRlZCBieSBvYmplY3RzIG9yIGJ5IHJlbGF0aW9ucyBiZXR3ZWVuIG9iamVjdHMuIChJblxuYSBzZW5zZSwgYW5kIGluIGNvbmZvcm1hbmNlIHRvIFZvbiBOZXVtYW5uXCdzIG1vZGVsIG9mIGEgInN0b3JlZFxucHJvZ3JhbSBjb21wdXRlciwiIGNvZGUgaXMgYWxzbyByZXByZXNlbnRlZCBieSBvYmplY3RzLilcblxuRXZlcnkgb2JqZWN0IGhhcyBhbiBpZGVudGl0eSwgYSB0eXBlIGFuZCBhIHZhbHVlLiAgQW4gb2JqZWN0XCdzXG4qaWRlbnRpdHkqIG5ldmVyIGNoYW5nZXMgb25jZSBpdCBoYXMgYmVlbiBjcmVhdGVkOyB5b3UgbWF5IHRoaW5rIG9mIGl0XG5hcyB0aGUgb2JqZWN0XCdzIGFkZHJlc3MgaW4gbWVtb3J5LiAgVGhlIFwnYGBpc2BgXCcgb3BlcmF0b3IgY29tcGFyZXMgdGhlXG5pZGVudGl0eSBvZiB0d28gb2JqZWN0czsgdGhlIGBgaWQoKWBgIGZ1bmN0aW9uIHJldHVybnMgYW4gaW50ZWdlclxucmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eS5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBGb3IgQ1B5dGhvbiwgYGBpZCh4KWBgIGlzIHRoZVxubWVtb3J5IGFkZHJlc3Mgd2hlcmUgYGB4YGAgaXMgc3RvcmVkLlxuXG5BbiBvYmplY3RcJ3MgdHlwZSBkZXRlcm1pbmVzIHRoZSBvcGVyYXRpb25zIHRoYXQgdGhlIG9iamVjdCBzdXBwb3J0c1xuKGUuZy4sICJkb2VzIGl0IGhhdmUgYSBsZW5ndGg/IikgYW5kIGFsc28gZGVmaW5lcyB0aGUgcG9zc2libGUgdmFsdWVzXG5mb3Igb2JqZWN0cyBvZiB0aGF0IHR5cGUuICBUaGUgYGB0eXBlKClgYCBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdFwnc1xudHlwZSAod2hpY2ggaXMgYW4gb2JqZWN0IGl0c2VsZikuICBMaWtlIGl0cyBpZGVudGl0eSwgYW4gb2JqZWN0XCdzXG4qdHlwZSogaXMgYWxzbyB1bmNoYW5nZWFibGUuIFsxXVxuXG5UaGUgKnZhbHVlKiBvZiBzb21lIG9iamVjdHMgY2FuIGNoYW5nZS4gIE9iamVjdHMgd2hvc2UgdmFsdWUgY2FuXG5jaGFuZ2UgYXJlIHNhaWQgdG8gYmUgKm11dGFibGUqOyBvYmplY3RzIHdob3NlIHZhbHVlIGlzIHVuY2hhbmdlYWJsZVxub25jZSB0aGV5IGFyZSBjcmVhdGVkIGFyZSBjYWxsZWQgKmltbXV0YWJsZSouIChUaGUgdmFsdWUgb2YgYW5cbmltbXV0YWJsZSBjb250YWluZXIgb2JqZWN0IHRoYXQgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlXG5vYmplY3QgY2FuIGNoYW5nZSB3aGVuIHRoZSBsYXR0ZXJcJ3MgdmFsdWUgaXMgY2hhbmdlZDsgaG93ZXZlciB0aGVcbmNvbnRhaW5lciBpcyBzdGlsbCBjb25zaWRlcmVkIGltbXV0YWJsZSwgYmVjYXVzZSB0aGUgY29sbGVjdGlvbiBvZlxub2JqZWN0cyBpdCBjb250YWlucyBjYW5ub3QgYmUgY2hhbmdlZC4gIFNvLCBpbW11dGFiaWxpdHkgaXMgbm90XG5zdHJpY3RseSB0aGUgc2FtZSBhcyBoYXZpbmcgYW4gdW5jaGFuZ2VhYmxlIHZhbHVlLCBpdCBpcyBtb3JlIHN1YnRsZS4pXG5BbiBvYmplY3RcJ3MgbXV0YWJpbGl0eSBpcyBkZXRlcm1pbmVkIGJ5IGl0cyB0eXBlOyBmb3IgaW5zdGFuY2UsXG5udW1iZXJzLCBzdHJpbmdzIGFuZCB0dXBsZXMgYXJlIGltbXV0YWJsZSwgd2hpbGUgZGljdGlvbmFyaWVzIGFuZFxubGlzdHMgYXJlIG11dGFibGUuXG5cbk9iamVjdHMgYXJlIG5ldmVyIGV4cGxpY2l0bHkgZGVzdHJveWVkOyBob3dldmVyLCB3aGVuIHRoZXkgYmVjb21lXG51bnJlYWNoYWJsZSB0aGV5IG1heSBiZSBnYXJiYWdlLWNvbGxlY3RlZC4gIEFuIGltcGxlbWVudGF0aW9uIGlzXG5hbGxvd2VkIHRvIHBvc3Rwb25lIGdhcmJhZ2UgY29sbGVjdGlvbiBvciBvbWl0IGl0IGFsdG9nZXRoZXIgLS0tIGl0IGlzXG5hIG1hdHRlciBvZiBpbXBsZW1lbnRhdGlvbiBxdWFsaXR5IGhvdyBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbmltcGxlbWVudGVkLCBhcyBsb25nIGFzIG5vIG9iamVjdHMgYXJlIGNvbGxlY3RlZCB0aGF0IGFyZSBzdGlsbFxucmVhY2hhYmxlLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIENQeXRob24gY3VycmVudGx5IHVzZXMgYSByZWZlcmVuY2UtXG5jb3VudGluZyBzY2hlbWUgd2l0aCAob3B0aW9uYWwpIGRlbGF5ZWQgZGV0ZWN0aW9uIG9mIGN5Y2xpY2FsbHkgbGlua2VkXG5nYXJiYWdlLCB3aGljaCBjb2xsZWN0cyBtb3N0IG9iamVjdHMgYXMgc29vbiBhcyB0aGV5IGJlY29tZVxudW5yZWFjaGFibGUsIGJ1dCBpcyBub3QgZ3VhcmFudGVlZCB0byBjb2xsZWN0IGdhcmJhZ2UgY29udGFpbmluZ1xuY2lyY3VsYXIgcmVmZXJlbmNlcy4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgYGBnY2BgIG1vZHVsZSBmb3JcbmluZm9ybWF0aW9uIG9uIGNvbnRyb2xsaW5nIHRoZSBjb2xsZWN0aW9uIG9mIGN5Y2xpYyBnYXJiYWdlLiBPdGhlclxuaW1wbGVtZW50YXRpb25zIGFjdCBkaWZmZXJlbnRseSBhbmQgQ1B5dGhvbiBtYXkgY2hhbmdlLiBEbyBub3QgZGVwZW5kXG5vbiBpbW1lZGlhdGUgZmluYWxpemF0aW9uIG9mIG9iamVjdHMgd2hlbiB0aGV5IGJlY29tZSB1bnJlYWNoYWJsZSAoZXg6XG5hbHdheXMgY2xvc2UgZmlsZXMpLlxuXG5Ob3RlIHRoYXQgdGhlIHVzZSBvZiB0aGUgaW1wbGVtZW50YXRpb25cJ3MgdHJhY2luZyBvciBkZWJ1Z2dpbmdcbmZhY2lsaXRpZXMgbWF5IGtlZXAgb2JqZWN0cyBhbGl2ZSB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIGNvbGxlY3RhYmxlLlxuQWxzbyBub3RlIHRoYXQgY2F0Y2hpbmcgYW4gZXhjZXB0aW9uIHdpdGggYSBcJ2BgdHJ5YGAuLi5gYGV4Y2VwdGBgXCdcbnN0YXRlbWVudCBtYXkga2VlcCBvYmplY3RzIGFsaXZlLlxuXG5Tb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvICJleHRlcm5hbCIgcmVzb3VyY2VzIHN1Y2ggYXMgb3BlblxuZmlsZXMgb3Igd2luZG93cy4gIEl0IGlzIHVuZGVyc3Rvb2QgdGhhdCB0aGVzZSByZXNvdXJjZXMgYXJlIGZyZWVkXG53aGVuIHRoZSBvYmplY3QgaXMgZ2FyYmFnZS1jb2xsZWN0ZWQsIGJ1dCBzaW5jZSBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbm5vdCBndWFyYW50ZWVkIHRvIGhhcHBlbiwgc3VjaCBvYmplY3RzIGFsc28gcHJvdmlkZSBhbiBleHBsaWNpdCB3YXkgdG9cbnJlbGVhc2UgdGhlIGV4dGVybmFsIHJlc291cmNlLCB1c3VhbGx5IGEgYGBjbG9zZSgpYGAgbWV0aG9kLiBQcm9ncmFtc1xuYXJlIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIGV4cGxpY2l0bHkgY2xvc2Ugc3VjaCBvYmplY3RzLiAgVGhlXG5cJ2BgdHJ5YGAuLi5gYGZpbmFsbHlgYFwnIHN0YXRlbWVudCBhbmQgdGhlIFwnYGB3aXRoYGBcJyBzdGF0ZW1lbnQgcHJvdmlkZVxuY29udmVuaWVudCB3YXlzIHRvIGRvIHRoaXMuXG5cblNvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gb3RoZXIgb2JqZWN0czsgdGhlc2UgYXJlIGNhbGxlZFxuKmNvbnRhaW5lcnMqLiBFeGFtcGxlcyBvZiBjb250YWluZXJzIGFyZSB0dXBsZXMsIGxpc3RzIGFuZFxuZGljdGlvbmFyaWVzLiAgVGhlIHJlZmVyZW5jZXMgYXJlIHBhcnQgb2YgYSBjb250YWluZXJcJ3MgdmFsdWUuICBJblxubW9zdCBjYXNlcywgd2hlbiB3ZSB0YWxrIGFib3V0IHRoZSB2YWx1ZSBvZiBhIGNvbnRhaW5lciwgd2UgaW1wbHkgdGhlXG52YWx1ZXMsIG5vdCB0aGUgaWRlbnRpdGllcyBvZiB0aGUgY29udGFpbmVkIG9iamVjdHM7IGhvd2V2ZXIsIHdoZW4gd2VcbnRhbGsgYWJvdXQgdGhlIG11dGFiaWxpdHkgb2YgYSBjb250YWluZXIsIG9ubHkgdGhlIGlkZW50aXRpZXMgb2YgdGhlXG5pbW1lZGlhdGVseSBjb250YWluZWQgb2JqZWN0cyBhcmUgaW1wbGllZC4gIFNvLCBpZiBhbiBpbW11dGFibGVcbmNvbnRhaW5lciAobGlrZSBhIHR1cGxlKSBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhIG11dGFibGUgb2JqZWN0LCBpdHNcbnZhbHVlIGNoYW5nZXMgaWYgdGhhdCBtdXRhYmxlIG9iamVjdCBpcyBjaGFuZ2VkLlxuXG5UeXBlcyBhZmZlY3QgYWxtb3N0IGFsbCBhc3BlY3RzIG9mIG9iamVjdCBiZWhhdmlvci4gIEV2ZW4gdGhlXG5pbXBvcnRhbmNlIG9mIG9iamVjdCBpZGVudGl0eSBpcyBhZmZlY3RlZCBpbiBzb21lIHNlbnNlOiBmb3IgaW1tdXRhYmxlXG50eXBlcywgb3BlcmF0aW9ucyB0aGF0IGNvbXB1dGUgbmV3IHZhbHVlcyBtYXkgYWN0dWFsbHkgcmV0dXJuIGFcbnJlZmVyZW5jZSB0byBhbnkgZXhpc3Rpbmcgb2JqZWN0IHdpdGggdGhlIHNhbWUgdHlwZSBhbmQgdmFsdWUsIHdoaWxlXG5mb3IgbXV0YWJsZSBvYmplY3RzIHRoaXMgaXMgbm90IGFsbG93ZWQuICBFLmcuLCBhZnRlciBgYGEgPSAxOyBiID1cbjFgYCwgYGBhYGAgYW5kIGBgYmBgIG1heSBvciBtYXkgbm90IHJlZmVyIHRvIHRoZSBzYW1lIG9iamVjdCB3aXRoIHRoZVxudmFsdWUgb25lLCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uLCBidXQgYWZ0ZXIgYGBjID0gW107IGQgPVxuW11gYCwgYGBjYGAgYW5kIGBgZGBgIGFyZSBndWFyYW50ZWVkIHRvIHJlZmVyIHRvIHR3byBkaWZmZXJlbnQsXG51bmlxdWUsIG5ld2x5IGNyZWF0ZWQgZW1wdHkgbGlzdHMuIChOb3RlIHRoYXQgYGBjID0gZCA9IFtdYGAgYXNzaWduc1xudGhlIHNhbWUgb2JqZWN0IHRvIGJvdGggYGBjYGAgYW5kIGBgZGBgLilcbicsCiAgJ29wZXJhdG9yLXN1bW1hcnknOiAnXG5TdW1tYXJ5XG4qKioqKioqXG5cblRoZSBmb2xsb3dpbmcgdGFibGUgc3VtbWFyaXplcyB0aGUgb3BlcmF0b3IgcHJlY2VkZW5jZXMgaW4gUHl0aG9uLFxuZnJvbSBsb3dlc3QgcHJlY2VkZW5jZSAobGVhc3QgYmluZGluZykgdG8gaGlnaGVzdCBwcmVjZWRlbmNlIChtb3N0XG5iaW5kaW5nKS4gIE9wZXJhdG9ycyBpbiB0aGUgc2FtZSBib3ggaGF2ZSB0aGUgc2FtZSBwcmVjZWRlbmNlLiAgVW5sZXNzXG50aGUgc3ludGF4IGlzIGV4cGxpY2l0bHkgZ2l2ZW4sIG9wZXJhdG9ycyBhcmUgYmluYXJ5LiAgT3BlcmF0b3JzIGluXG50aGUgc2FtZSBib3ggZ3JvdXAgbGVmdCB0byByaWdodCAoZXhjZXB0IGZvciBjb21wYXJpc29ucywgaW5jbHVkaW5nXG50ZXN0cywgd2hpY2ggYWxsIGhhdmUgdGhlIHNhbWUgcHJlY2VkZW5jZSBhbmQgY2hhaW4gZnJvbSBsZWZ0IHRvIHJpZ2h0XG4tLS0gc2VlIHNlY3Rpb24gKkNvbXBhcmlzb25zKiAtLS0gYW5kIGV4cG9uZW50aWF0aW9uLCB3aGljaCBncm91cHNcbmZyb20gcmlnaHQgdG8gbGVmdCkuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbnwgYGBsYW1iZGFgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMYW1iZGEgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBpZmBgIC0tIGBgZWxzZWBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb25kaXRpb25hbCBleHByZXNzaW9uICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBvcmBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBhbmRgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBub3RgYCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIE5PVCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBpbmBgLCBgYG5vdGBgIGBgaW5gYCwgYGBpc2BgLCBgYGlzIG5vdGBgLCAgICAgfCBDb21wYXJpc29ucywgaW5jbHVkaW5nIG1lbWJlcnNoaXAgICAgIHxcbnwgYGA8YGAsIGBgPD1gYCwgYGA+YGAsIGBgPj1gYCwgYGAhPWBgLCBgYD09YGAgICAgfCB0ZXN0cyBhbmQgaWRlbnRpdHkgdGVzdHMsICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGB8YGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBeYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIFhPUiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAmYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGA8PGBgLCBgYD4+YGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaGlmdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGArYGAsIGBgLWBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24gICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAqYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgICAgICAgICAgICAgICAgICAgICAgfCBNdWx0aXBsaWNhdGlvbiwgZGl2aXNpb24sIHJlbWFpbmRlciAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbNV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAreGBgLCBgYC14YGAsIGBgfnhgYCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQb3NpdGl2ZSwgbmVnYXRpdmUsIGJpdHdpc2UgTk9UICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAqKmBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFeHBvbmVudGlhdGlvbiBbNl0gICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGB4W2luZGV4XWBgLCBgYHhbaW5kZXg6aW5kZXhdYGAsICAgICAgICAgICAgICAgfCBTdWJzY3JpcHRpb24sIHNsaWNpbmcsIGNhbGwsICAgICAgICAgIHxcbnwgYGB4KGFyZ3VtZW50cy4uLilgYCwgYGB4LmF0dHJpYnV0ZWBgICAgICAgICAgICAgfCBhdHRyaWJ1dGUgcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAoZXhwcmVzc2lvbnMuLi4pYGAsIGBgW2V4cHJlc3Npb25zLi4uXWBgLCAgICAgfCBCaW5kaW5nIG9yIHR1cGxlIGRpc3BsYXksIGxpc3QgICAgICAgIHxcbnwgYGB7a2V5OmRhdHVtLi4ufWBgLCBgYHtleHByZXNzaW9ucy4uLn1gYCAgICAgICAgfCBkaXNwbGF5LCBkaWN0aW9uYXJ5IGRpc3BsYXksIHNldCAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaXNwbGF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBXaGlsZSBgYGFicyh4JXkpIDwgYWJzKHkpYGAgaXMgdHJ1ZSBtYXRoZW1hdGljYWxseSwgZm9yIGZsb2F0cyBpdFxuICAgIG1heSBub3QgYmUgdHJ1ZSBudW1lcmljYWxseSBkdWUgdG8gcm91bmRvZmYuICBGb3IgZXhhbXBsZSwgYW5kXG4gICAgYXNzdW1pbmcgYSBwbGF0Zm9ybSBvbiB3aGljaCBhIFB5dGhvbiBmbG9hdCBpcyBhbiBJRUVFIDc1NCBkb3VibGUtXG4gICAgcHJlY2lzaW9uIG51bWJlciwgaW4gb3JkZXIgdGhhdCBgYC0xZS0xMDAgJSAxZTEwMGBgIGhhdmUgdGhlIHNhbWVcbiAgICBzaWduIGFzIGBgMWUxMDBgYCwgdGhlIGNvbXB1dGVkIHJlc3VsdCBpcyBgYC0xZS0xMDAgKyAxZTEwMGBgLFxuICAgIHdoaWNoIGlzIG51bWVyaWNhbGx5IGV4YWN0bHkgZXF1YWwgdG8gYGAxZTEwMGBgLiAgVGhlIGZ1bmN0aW9uXG4gICAgYGBtYXRoLmZtb2QoKWBgIHJldHVybnMgYSByZXN1bHQgd2hvc2Ugc2lnbiBtYXRjaGVzIHRoZSBzaWduIG9mXG4gICAgdGhlIGZpcnN0IGFyZ3VtZW50IGluc3RlYWQsIGFuZCBzbyByZXR1cm5zIGBgLTFlLTEwMGBgIGluIHRoaXNcbiAgICBjYXNlLiBXaGljaCBhcHByb2FjaCBpcyBtb3JlIGFwcHJvcHJpYXRlIGRlcGVuZHMgb24gdGhlXG4gICAgYXBwbGljYXRpb24uXG5cblsyXSBJZiB4IGlzIHZlcnkgY2xvc2UgdG8gYW4gZXhhY3QgaW50ZWdlciBtdWx0aXBsZSBvZiB5LCBpdFwnc1xuICAgIHBvc3NpYmxlIGZvciBgYHgvL3lgYCB0byBiZSBvbmUgbGFyZ2VyIHRoYW4gYGAoeC14JXkpLy95YGAgZHVlIHRvXG4gICAgcm91bmRpbmcuICBJbiBzdWNoIGNhc2VzLCBQeXRob24gcmV0dXJucyB0aGUgbGF0dGVyIHJlc3VsdCwgaW5cbiAgICBvcmRlciB0byBwcmVzZXJ2ZSB0aGF0IGBgZGl2bW9kKHgseSlbMF0gKiB5ICsgeCAlIHlgYCBiZSB2ZXJ5XG4gICAgY2xvc2UgdG8gYGB4YGAuXG5cblszXSBXaGlsZSBjb21wYXJpc29ucyBiZXR3ZWVuIHN0cmluZ3MgbWFrZSBzZW5zZSBhdCB0aGUgYnl0ZSBsZXZlbCxcbiAgICB0aGV5IG1heSBiZSBjb3VudGVyLWludHVpdGl2ZSB0byB1c2Vycy4gIEZvciBleGFtcGxlLCB0aGUgc3RyaW5nc1xuICAgIGBgIlxcdTAwQzciYGAgYW5kIGBgIlxcdTAzMjdcXHUwMDQzImBgIGNvbXBhcmUgZGlmZmVyZW50bHksIGV2ZW5cbiAgICB0aG91Z2ggdGhleSBib3RoIHJlcHJlc2VudCB0aGUgc2FtZSB1bmljb2RlIGNoYXJhY3RlciAoTEFUSU5cbiAgICBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSkuICBUbyBjb21wYXJlIHN0cmluZ3MgaW4gYSBodW1hblxuICAgIHJlY29nbml6YWJsZSB3YXksIGNvbXBhcmUgdXNpbmcgYGB1bmljb2RlZGF0YS5ub3JtYWxpemUoKWBgLlxuXG5bNF0gRHVlIHRvIGF1dG9tYXRpYyBnYXJiYWdlLWNvbGxlY3Rpb24sIGZyZWUgbGlzdHMsIGFuZCB0aGUgZHluYW1pY1xuICAgIG5hdHVyZSBvZiBkZXNjcmlwdG9ycywgeW91IG1heSBub3RpY2Ugc2VlbWluZ2x5IHVudXN1YWwgYmVoYXZpb3VyXG4gICAgaW4gY2VydGFpbiB1c2VzIG9mIHRoZSBgYGlzYGAgb3BlcmF0b3IsIGxpa2UgdGhvc2UgaW52b2x2aW5nXG4gICAgY29tcGFyaXNvbnMgYmV0d2VlbiBpbnN0YW5jZSBtZXRob2RzLCBvciBjb25zdGFudHMuICBDaGVjayB0aGVpclxuICAgIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mby5cblxuWzVdIFRoZSBgYCVgYCBvcGVyYXRvciBpcyBhbHNvIHVzZWQgZm9yIHN0cmluZyBmb3JtYXR0aW5nOyB0aGUgc2FtZVxuICAgIHByZWNlZGVuY2UgYXBwbGllcy5cblxuWzZdIFRoZSBwb3dlciBvcGVyYXRvciBgYCoqYGAgYmluZHMgbGVzcyB0aWdodGx5IHRoYW4gYW4gYXJpdGhtZXRpYyBvclxuICAgIGJpdHdpc2UgdW5hcnkgb3BlcmF0b3Igb24gaXRzIHJpZ2h0LCB0aGF0IGlzLCBgYDIqKi0xYGAgaXNcbiAgICBgYDAuNWBgLlxuJywKICAncGFzcyc6ICdcblRoZSBgYHBhc3NgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKipcblxuICAgcGFzc19zdG10IDo6PSAicGFzcyJcblxuYGBwYXNzYGAgaXMgYSBudWxsIG9wZXJhdGlvbiAtLS0gd2hlbiBpdCBpcyBleGVjdXRlZCwgbm90aGluZyBoYXBwZW5zLlxuSXQgaXMgdXNlZnVsIGFzIGEgcGxhY2Vob2xkZXIgd2hlbiBhIHN0YXRlbWVudCBpcyByZXF1aXJlZFxuc3ludGFjdGljYWxseSwgYnV0IG5vIGNvZGUgbmVlZHMgdG8gYmUgZXhlY3V0ZWQsIGZvciBleGFtcGxlOlxuXG4gICBkZWYgZihhcmcpOiBwYXNzICAgICMgYSBmdW5jdGlvbiB0aGF0IGRvZXMgbm90aGluZyAoeWV0KVxuXG4gICBjbGFzcyBDOiBwYXNzICAgICAgICMgYSBjbGFzcyB3aXRoIG5vIG1ldGhvZHMgKHlldClcbicsCiAgJ3Bvd2VyJzogJ1xuVGhlIHBvd2VyIG9wZXJhdG9yXG4qKioqKioqKioqKioqKioqKipcblxuVGhlIHBvd2VyIG9wZXJhdG9yIGJpbmRzIG1vcmUgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHNcbmxlZnQ7IGl0IGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHMgcmlnaHQuICBUaGVcbnN5bnRheCBpczpcblxuICAgcG93ZXIgOjo9IHByaW1hcnkgWyIqKiIgdV9leHByXVxuXG5UaHVzLCBpbiBhbiB1bnBhcmVudGhlc2l6ZWQgc2VxdWVuY2Ugb2YgcG93ZXIgYW5kIHVuYXJ5IG9wZXJhdG9ycywgdGhlXG5vcGVyYXRvcnMgYXJlIGV2YWx1YXRlZCBmcm9tIHJpZ2h0IHRvIGxlZnQgKHRoaXMgZG9lcyBub3QgY29uc3RyYWluXG50aGUgZXZhbHVhdGlvbiBvcmRlciBmb3IgdGhlIG9wZXJhbmRzKTogYGAtMSoqMmBgIHJlc3VsdHMgaW4gYGAtMWBgLlxuXG5UaGUgcG93ZXIgb3BlcmF0b3IgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUgYnVpbHQtaW4gYGBwb3coKWBgXG5mdW5jdGlvbiwgd2hlbiBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiBpdCB5aWVsZHMgaXRzIGxlZnQgYXJndW1lbnRcbnJhaXNlZCB0byB0aGUgcG93ZXIgb2YgaXRzIHJpZ2h0IGFyZ3VtZW50LiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZVxuZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIGFuZCB0aGUgcmVzdWx0IGlzIG9mIHRoYXQgdHlwZS5cblxuRm9yIGludCBvcGVyYW5kcywgdGhlIHJlc3VsdCBoYXMgdGhlIHNhbWUgdHlwZSBhcyB0aGUgb3BlcmFuZHMgdW5sZXNzXG50aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG5lZ2F0aXZlOyBpbiB0aGF0IGNhc2UsIGFsbCBhcmd1bWVudHMgYXJlXG5jb252ZXJ0ZWQgdG8gZmxvYXQgYW5kIGEgZmxvYXQgcmVzdWx0IGlzIGRlbGl2ZXJlZC4gRm9yIGV4YW1wbGUsXG5gYDEwKioyYGAgcmV0dXJucyBgYDEwMGBgLCBidXQgYGAxMCoqLTJgYCByZXR1cm5zIGBgMC4wMWBgLlxuXG5SYWlzaW5nIGBgMC4wYGAgdG8gYSBuZWdhdGl2ZSBwb3dlciByZXN1bHRzIGluIGFcbmBgWmVyb0RpdmlzaW9uRXJyb3JgYC4gUmFpc2luZyBhIG5lZ2F0aXZlIG51bWJlciB0byBhIGZyYWN0aW9uYWwgcG93ZXJcbnJlc3VsdHMgaW4gYSBgYGNvbXBsZXhgYCBudW1iZXIuIChJbiBlYXJsaWVyIHZlcnNpb25zIGl0IHJhaXNlZCBhXG5gYFZhbHVlRXJyb3JgYC4pXG4nLAogICdyYWlzZSc6ICdcblRoZSBgYHJhaXNlYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICByYWlzZV9zdG10IDo6PSAicmFpc2UiIFtleHByZXNzaW9uIFsiZnJvbSIgZXhwcmVzc2lvbl1dXG5cbklmIG5vIGV4cHJlc3Npb25zIGFyZSBwcmVzZW50LCBgYHJhaXNlYGAgcmUtcmFpc2VzIHRoZSBsYXN0IGV4Y2VwdGlvblxudGhhdCB3YXMgYWN0aXZlIGluIHRoZSBjdXJyZW50IHNjb3BlLiAgSWYgbm8gZXhjZXB0aW9uIGlzIGFjdGl2ZSBpblxudGhlIGN1cnJlbnQgc2NvcGUsIGEgYGBSdW50aW1lRXJyb3JgYCBleGNlcHRpb24gaXMgcmFpc2VkIGluZGljYXRpbmdcbnRoYXQgdGhpcyBpcyBhbiBlcnJvci5cblxuT3RoZXJ3aXNlLCBgYHJhaXNlYGAgZXZhbHVhdGVzIHRoZSBmaXJzdCBleHByZXNzaW9uIGFzIHRoZSBleGNlcHRpb25cbm9iamVjdC4gIEl0IG11c3QgYmUgZWl0aGVyIGEgc3ViY2xhc3Mgb3IgYW4gaW5zdGFuY2Ugb2ZcbmBgQmFzZUV4Y2VwdGlvbmBgLiBJZiBpdCBpcyBhIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIHdpbGwgYmVcbm9idGFpbmVkIHdoZW4gbmVlZGVkIGJ5IGluc3RhbnRpYXRpbmcgdGhlIGNsYXNzIHdpdGggbm8gYXJndW1lbnRzLlxuXG5UaGUgKnR5cGUqIG9mIHRoZSBleGNlcHRpb24gaXMgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZVwncyBjbGFzcywgdGhlXG4qdmFsdWUqIGlzIHRoZSBpbnN0YW5jZSBpdHNlbGYuXG5cbkEgdHJhY2ViYWNrIG9iamVjdCBpcyBub3JtYWxseSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBhbiBleGNlcHRpb25cbmlzIHJhaXNlZCBhbmQgYXR0YWNoZWQgdG8gaXQgYXMgdGhlIGBgX190cmFjZWJhY2tfX2BgIGF0dHJpYnV0ZSwgd2hpY2hcbmlzIHdyaXRhYmxlLiBZb3UgY2FuIGNyZWF0ZSBhbiBleGNlcHRpb24gYW5kIHNldCB5b3VyIG93biB0cmFjZWJhY2sgaW5cbm9uZSBzdGVwIHVzaW5nIHRoZSBgYHdpdGhfdHJhY2ViYWNrKClgYCBleGNlcHRpb24gbWV0aG9kICh3aGljaFxucmV0dXJucyB0aGUgc2FtZSBleGNlcHRpb24gaW5zdGFuY2UsIHdpdGggaXRzIHRyYWNlYmFjayBzZXQgdG8gaXRzXG5hcmd1bWVudCksIGxpa2Ugc286XG5cbiAgIHJhaXNlIEV4Y2VwdGlvbigiZm9vIG9jY3VycmVkIikud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrb2JqKVxuXG5UaGUgYGBmcm9tYGAgY2xhdXNlIGlzIHVzZWQgZm9yIGV4Y2VwdGlvbiBjaGFpbmluZzogaWYgZ2l2ZW4sIHRoZVxuc2Vjb25kICpleHByZXNzaW9uKiBtdXN0IGJlIGFub3RoZXIgZXhjZXB0aW9uIGNsYXNzIG9yIGluc3RhbmNlLCB3aGljaFxud2lsbCB0aGVuIGJlIGF0dGFjaGVkIHRvIHRoZSByYWlzZWQgZXhjZXB0aW9uIGFzIHRoZSBgYF9fY2F1c2VfX2BgXG5hdHRyaWJ1dGUgKHdoaWNoIGlzIHdyaXRhYmxlKS4gIElmIHRoZSByYWlzZWQgZXhjZXB0aW9uIGlzIG5vdFxuaGFuZGxlZCwgYm90aCBleGNlcHRpb25zIHdpbGwgYmUgcHJpbnRlZDpcblxuICAgPj4+IHRyeTpcbiAgIC4uLiAgICAgcHJpbnQoMSAvIDApXG4gICAuLi4gZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6XG4gICAuLi4gICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiU29tZXRoaW5nIGJhZCBoYXBwZW5lZCIpIGZyb20gZXhjXG4gICAuLi5cbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMiwgaW4gPG1vZHVsZT5cbiAgIFplcm9EaXZpc2lvbkVycm9yOiBpbnQgZGl2aXNpb24gb3IgbW9kdWxvIGJ5IHplcm9cblxuICAgVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSBvZiB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjpcblxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA0LCBpbiA8bW9kdWxlPlxuICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG5cbkEgc2ltaWxhciBtZWNoYW5pc20gd29ya3MgaW1wbGljaXRseSBpZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGluc2lkZVxuYW4gZXhjZXB0aW9uIGhhbmRsZXI6IHRoZSBwcmV2aW91cyBleGNlcHRpb24gaXMgdGhlbiBhdHRhY2hlZCBhcyB0aGVcbm5ldyBleGNlcHRpb25cJ3MgYGBfX2NvbnRleHRfX2BgIGF0dHJpYnV0ZTpcblxuICAgPj4+IHRyeTpcbiAgIC4uLiAgICAgcHJpbnQoMSAvIDApXG4gICAuLi4gZXhjZXB0OlxuICAgLi4uICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlNvbWV0aGluZyBiYWQgaGFwcGVuZWQiKVxuICAgLi4uXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDIsIGluIDxtb2R1bGU+XG4gICBaZXJvRGl2aXNpb25FcnJvcjogaW50IGRpdmlzaW9uIG9yIG1vZHVsbyBieSB6ZXJvXG5cbiAgIER1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDpcblxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA0LCBpbiA8bW9kdWxlPlxuICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gYWJvdXQgaGFuZGxpbmcgZXhjZXB0aW9ucyBpcyBpbiBzZWN0aW9uXG4qVGhlIHRyeSBzdGF0ZW1lbnQqLlxuJywKLSAncmV0dXJuJzogJ1xuVGhlIGBgcmV0dXJuYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgcmV0dXJuX3N0bXQgOjo9ICJyZXR1cm4iIFtleHByZXNzaW9uX2xpc3RdXG5cbmBgcmV0dXJuYGAgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSBmdW5jdGlvblxuZGVmaW5pdGlvbiwgbm90IHdpdGhpbiBhIG5lc3RlZCBjbGFzcyBkZWZpbml0aW9uLlxuXG5JZiBhbiBleHByZXNzaW9uIGxpc3QgaXMgcHJlc2VudCwgaXQgaXMgZXZhbHVhdGVkLCBlbHNlIGBgTm9uZWBgIGlzXG5zdWJzdGl0dXRlZC5cblxuYGByZXR1cm5gYCBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gY2FsbCB3aXRoIHRoZSBleHByZXNzaW9uIGxpc3RcbihvciBgYE5vbmVgYCkgYXMgcmV0dXJuIHZhbHVlLlxuXG5XaGVuIGBgcmV0dXJuYGAgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgYGB0cnlgYCBzdGF0ZW1lbnQgd2l0aCBhXG5gYGZpbmFsbHlgYCBjbGF1c2UsIHRoYXQgYGBmaW5hbGx5YGAgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHlcbmxlYXZpbmcgdGhlIGZ1bmN0aW9uLlxuXG5JbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlIGBgcmV0dXJuYGAgc3RhdGVtZW50IGlzIG5vdCBhbGxvd2VkIHRvXG5pbmNsdWRlIGFuIGBgZXhwcmVzc2lvbl9saXN0YGAuICBJbiB0aGF0IGNvbnRleHQsIGEgYmFyZSBgYHJldHVybmBgXG5pbmRpY2F0ZXMgdGhhdCB0aGUgZ2VuZXJhdG9yIGlzIGRvbmUgYW5kIHdpbGwgY2F1c2UgYGBTdG9wSXRlcmF0aW9uYGBcbnRvIGJlIHJhaXNlZC5cbicsCisgJ3JldHVybic6ICdcblRoZSBgYHJldHVybmBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHJldHVybl9zdG10IDo6PSAicmV0dXJuIiBbZXhwcmVzc2lvbl9saXN0XVxuXG5gYHJldHVybmBgIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgZnVuY3Rpb25cbmRlZmluaXRpb24sIG5vdCB3aXRoaW4gYSBuZXN0ZWQgY2xhc3MgZGVmaW5pdGlvbi5cblxuSWYgYW4gZXhwcmVzc2lvbiBsaXN0IGlzIHByZXNlbnQsIGl0IGlzIGV2YWx1YXRlZCwgZWxzZSBgYE5vbmVgYCBpc1xuc3Vic3RpdHV0ZWQuXG5cbmBgcmV0dXJuYGAgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGNhbGwgd2l0aCB0aGUgZXhwcmVzc2lvbiBsaXN0XG4ob3IgYGBOb25lYGApIGFzIHJldHVybiB2YWx1ZS5cblxuV2hlbiBgYHJldHVybmBgIHBhc3NlcyBjb250cm9sIG91dCBvZiBhIGBgdHJ5YGAgc3RhdGVtZW50IHdpdGggYVxuYGBmaW5hbGx5YGAgY2xhdXNlLCB0aGF0IGBgZmluYWxseWBgIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5XG5sZWF2aW5nIHRoZSBmdW5jdGlvbi5cblxuSW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24sIHRoZSBgYHJldHVybmBgIHN0YXRlbWVudCBpbmRpY2F0ZXMgdGhhdCB0aGVcbmdlbmVyYXRvciBpcyBkb25lIGFuZCB3aWxsIGNhdXNlIGBgU3RvcEl0ZXJhdGlvbmBgIHRvIGJlIHJhaXNlZC4gVGhlXG5yZXR1cm5lZCB2YWx1ZSAoaWYgYW55KSBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIGNvbnN0cnVjdFxuYGBTdG9wSXRlcmF0aW9uYGAgYW5kIGJlY29tZXMgdGhlIGBgU3RvcEl0ZXJhdGlvbi52YWx1ZWBgIGF0dHJpYnV0ZS5cbicsCiAgJ3NlcXVlbmNlLXR5cGVzJzogIlxuRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciBvYmplY3RzLlxuQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSBvciBtYXBwaW5nc1xuKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyB3ZWxsLiAgVGhlXG5maXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgdG9cbmVtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCB0aGVcbmFsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCBgYDAgPD0gayA8IE5gYFxud2hlcmUgKk4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlLCBvciBzbGljZSBvYmplY3RzLCB3aGljaFxuZGVmaW5lIGEgcmFuZ2Ugb2YgaXRlbXMuICBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgcHJvdmlkZVxudGhlIG1ldGhvZHMgYGBrZXlzKClgYCwgYGB2YWx1ZXMoKWBgLCBgYGl0ZW1zKClgYCwgYGBnZXQoKWBgLFxuYGBjbGVhcigpYGAsIGBgc2V0ZGVmYXVsdCgpYGAsIGBgcG9wKClgYCwgYGBwb3BpdGVtKClgYCwgYGBjb3B5KClgYCxcbmFuZCBgYHVwZGF0ZSgpYGAgYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uJ3Mgc3RhbmRhcmRcbmRpY3Rpb25hcnkgb2JqZWN0cy4gIFRoZSBgYGNvbGxlY3Rpb25zYGAgbW9kdWxlIHByb3ZpZGVzIGFcbmBgTXV0YWJsZU1hcHBpbmdgYCBhYnN0cmFjdCBiYXNlIGNsYXNzIHRvIGhlbHAgY3JlYXRlIHRob3NlIG1ldGhvZHNcbmZyb20gYSBiYXNlIHNldCBvZiBgYF9fZ2V0aXRlbV9fKClgYCwgYGBfX3NldGl0ZW1fXygpYGAsXG5gYF9fZGVsaXRlbV9fKClgYCwgYW5kIGBga2V5cygpYGAuIE11dGFibGUgc2VxdWVuY2VzIHNob3VsZCBwcm92aWRlXG5tZXRob2RzIGBgYXBwZW5kKClgYCwgYGBjb3VudCgpYGAsIGBgaW5kZXgoKWBgLCBgYGV4dGVuZCgpYGAsXG5gYGluc2VydCgpYGAsIGBgcG9wKClgYCwgYGByZW1vdmUoKWBgLCBgYHJldmVyc2UoKWBgIGFuZCBgYHNvcnQoKWBgLFxubGlrZSBQeXRob24gc3RhbmRhcmQgbGlzdCBvYmplY3RzLiAgRmluYWxseSwgc2VxdWVuY2UgdHlwZXMgc2hvdWxkXG5pbXBsZW1lbnQgYWRkaXRpb24gKG1lYW5pbmcgY29uY2F0ZW5hdGlvbikgYW5kIG11bHRpcGxpY2F0aW9uIChtZWFuaW5nXG5yZXBldGl0aW9uKSBieSBkZWZpbmluZyB0aGUgbWV0aG9kcyBgYF9fYWRkX18oKWBgLCBgYF9fcmFkZF9fKClgYCxcbmBgX19pYWRkX18oKWBgLCBgYF9fbXVsX18oKWBgLCBgYF9fcm11bF9fKClgYCBhbmQgYGBfX2ltdWxfXygpYGBcbmRlc2NyaWJlZCBiZWxvdzsgdGhleSBzaG91bGQgbm90IGRlZmluZSBvdGhlciBudW1lcmljYWwgb3BlcmF0b3JzLiAgSXRcbmlzIHJlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGVcbmBgX19jb250YWluc19fKClgYCBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgYGBpbmBgXG5vcGVyYXRvcjsgZm9yIG1hcHBpbmdzLCBgYGluYGAgc2hvdWxkIHNlYXJjaCB0aGUgbWFwcGluZydzIGtleXM7IGZvclxuc2VxdWVuY2VzLCBpdCBzaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXJcbnJlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGVcbmBgX19pdGVyX18oKWBgIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlXG5jb250YWluZXI7IGZvciBtYXBwaW5ncywgYGBfX2l0ZXJfXygpYGAgc2hvdWxkIGJlIHRoZSBzYW1lIGFzXG5gYGtleXMoKWBgOyBmb3Igc2VxdWVuY2VzLCBpdCBzaG91bGQgaXRlcmF0ZSB0aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgbGVuKClgYC4gIFNob3VsZCByZXR1cm5cbiAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciBgYD49YGAgMC4gIEFsc28sIGFuIG9iamVjdFxuICAgdGhhdCBkb2Vzbid0IGRlZmluZSBhIGBgX19ib29sX18oKWBgIG1ldGhvZCBhbmQgd2hvc2UgYGBfX2xlbl9fKClgYFxuICAgbWV0aG9kIHJldHVybnMgemVybyBpcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlIGluIGEgQm9vbGVhbiBjb250ZXh0LlxuXG5Ob3RlOiBTbGljaW5nIGlzIGRvbmUgZXhjbHVzaXZlbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRocmVlIG1ldGhvZHMuICBBXG4gIGNhbGwgbGlrZVxuXG4gICAgIGFbMToyXSA9IGJcblxuICBpcyB0cmFuc2xhdGVkIHRvXG5cbiAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG5cbiAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiB3aXRoXG4gIGBgTm9uZWBgLlxuXG5vYmplY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGV2YWx1YXRpb24gb2YgYGBzZWxmW2tleV1gYC4gRm9yIHNlcXVlbmNlXG4gICB0eXBlcywgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLlxuICAgTm90ZSB0aGF0IHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZVxuICAgY2xhc3Mgd2lzaGVzIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGVcbiAgIGBgX19nZXRpdGVtX18oKWBgIG1ldGhvZC4gSWYgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLFxuICAgYGBUeXBlRXJyb3JgYCBtYXkgYmUgcmFpc2VkOyBpZiBvZiBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZlxuICAgaW5kZXhlcyBmb3IgdGhlIHNlcXVlbmNlIChhZnRlciBhbnkgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZlxuICAgbmVnYXRpdmUgdmFsdWVzKSwgYGBJbmRleEVycm9yYGAgc2hvdWxkIGJlIHJhaXNlZC4gRm9yIG1hcHBpbmdcbiAgIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlIGNvbnRhaW5lciksIGBgS2V5RXJyb3JgYFxuICAgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogYGBmb3JgYCBsb29wcyBleHBlY3QgdGhhdCBhbiBgYEluZGV4RXJyb3JgYCB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgY2hhbmdlcyB0byB0aGUgdmFsdWVzIGZvciBrZXlzLCBvciBpZiBuZXcga2V5c1xuICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSByZXBsYWNlZC4gIFRoZVxuICAgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZSByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3JcbiAgIHRoZSBgYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzXG4gICBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZXF1ZW5jZS4gIFRoZSBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlXG4gICByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3IgdGhlIGBgX19nZXRpdGVtX18oKWBgXG4gICBtZXRob2QuXG5cbm9iamVjdC5fX2l0ZXJfXyhzZWxmKVxuXG4gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCBmb3IgYSBjb250YWluZXIuXG4gICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0IGNhbiBpdGVyYXRlXG4gICBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyLiAgRm9yIG1hcHBpbmdzLCBpdCBzaG91bGRcbiAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLCBhbmQgc2hvdWxkIGFsc28gYmUgbWFkZVxuICAgYXZhaWxhYmxlIGFzIHRoZSBtZXRob2QgYGBrZXlzKClgYC5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlICpJdGVyYXRvciBUeXBlcyouXG5cbm9iamVjdC5fX3JldmVyc2VkX18oc2VsZilcblxuICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgYGByZXZlcnNlZCgpYGAgYnVpbHQtaW4gdG8gaW1wbGVtZW50XG4gICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXRcbiAgIGl0ZXJhdGVzIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIgaW4gcmV2ZXJzZSBvcmRlci5cblxuICAgSWYgdGhlIGBgX19yZXZlcnNlZF9fKClgYCBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGVcbiAgIGBgcmV2ZXJzZWQoKWBgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZVxuICAgcHJvdG9jb2wgKGBgX19sZW5fXygpYGAgYW5kIGBgX19nZXRpdGVtX18oKWBgKS4gIE9iamVjdHMgdGhhdFxuICAgc3VwcG9ydCB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgc2hvdWxkIG9ubHkgcHJvdmlkZVxuICAgYGBfX3JldmVyc2VkX18oKWBgIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBpc1xuICAgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5IGBgcmV2ZXJzZWQoKWBgLlxuXG5UaGUgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycyAoYGBpbmBgIGFuZCBgYG5vdCBpbmBgKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvbid0IGRlZmluZSBgYF9fY29udGFpbnNfXygpYGAsIHRoZSBtZW1iZXJzaGlwXG4gICB0ZXN0IGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgYGBfX2l0ZXJfXygpYGAsIHRoZW4gdGhlIG9sZFxuICAgc2VxdWVuY2UgaXRlcmF0aW9uIHByb3RvY29sIHZpYSBgYF9fZ2V0aXRlbV9fKClgYCwgc2VlICp0aGlzXG4gICBzZWN0aW9uIGluIHRoZSBsYW5ndWFnZSByZWZlcmVuY2UqLlxuIiwKICAnc2hpZnRpbmcnOiAnXG5TaGlmdGluZyBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSBzaGlmdGluZyBvcGVyYXRpb25zIGhhdmUgbG93ZXIgcHJpb3JpdHkgdGhhbiB0aGUgYXJpdGhtZXRpY1xub3BlcmF0aW9uczpcblxuICAgc2hpZnRfZXhwciA6Oj0gYV9leHByIHwgc2hpZnRfZXhwciAoICI8PCIgfCAiPj4iICkgYV9leHByXG5cblRoZXNlIG9wZXJhdG9ycyBhY2NlcHQgaW50ZWdlcnMgYXMgYXJndW1lbnRzLiAgVGhleSBzaGlmdCB0aGUgZmlyc3RcbmFyZ3VtZW50IHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IGJ5IHRoZSBudW1iZXIgb2YgYml0cyBnaXZlbiBieSB0aGVcbnNlY29uZCBhcmd1bWVudC5cblxuQSByaWdodCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIGRpdmlzaW9uIGJ5IGBgcG93KDIsbilgYC4gIEFcbmxlZnQgc2hpZnQgYnkgKm4qIGJpdHMgaXMgZGVmaW5lZCBhcyBtdWx0aXBsaWNhdGlvbiB3aXRoIGBgcG93KDIsbilgYC5cblxuTm90ZTogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoZSByaWdodC1oYW5kIG9wZXJhbmQgaXMgcmVxdWlyZWQgdG9cbiAgYmUgYXQgbW9zdCBgYHN5cy5tYXhzaXplYGAuICBJZiB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kIGlzIGxhcmdlclxuICB0aGFuIGBgc3lzLm1heHNpemVgYCBhbiBgYE92ZXJmbG93RXJyb3JgYCBleGNlcHRpb24gaXMgcmFpc2VkLlxuJywKICAnc2xpY2luZ3MnOiAnXG5TbGljaW5nc1xuKioqKioqKipcblxuQSBzbGljaW5nIHNlbGVjdHMgYSByYW5nZSBvZiBpdGVtcyBpbiBhIHNlcXVlbmNlIG9iamVjdCAoZS5nLiwgYVxuc3RyaW5nLCB0dXBsZSBvciBsaXN0KS4gIFNsaWNpbmdzIG1heSBiZSB1c2VkIGFzIGV4cHJlc3Npb25zIG9yIGFzXG50YXJnZXRzIGluIGFzc2lnbm1lbnQgb3IgYGBkZWxgYCBzdGF0ZW1lbnRzLiAgVGhlIHN5bnRheCBmb3IgYVxuc2xpY2luZzpcblxuICAgc2xpY2luZyAgICAgIDo6PSBwcmltYXJ5ICJbIiBzbGljZV9saXN0ICJdIlxuICAgc2xpY2VfbGlzdCAgIDo6PSBzbGljZV9pdGVtICgiLCIgc2xpY2VfaXRlbSkqIFsiLCJdXG4gICBzbGljZV9pdGVtICAgOjo9IGV4cHJlc3Npb24gfCBwcm9wZXJfc2xpY2VcbiAgIHByb3Blcl9zbGljZSA6Oj0gW2xvd2VyX2JvdW5kXSAiOiIgW3VwcGVyX2JvdW5kXSBbICI6IiBbc3RyaWRlXSBdXG4gICBsb3dlcl9ib3VuZCAgOjo9IGV4cHJlc3Npb25cbiAgIHVwcGVyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuICAgc3RyaWRlICAgICAgIDo6PSBleHByZXNzaW9uXG5cblRoZXJlIGlzIGFtYmlndWl0eSBpbiB0aGUgZm9ybWFsIHN5bnRheCBoZXJlOiBhbnl0aGluZyB0aGF0IGxvb2tzIGxpa2VcbmFuIGV4cHJlc3Npb24gbGlzdCBhbHNvIGxvb2tzIGxpa2UgYSBzbGljZSBsaXN0LCBzbyBhbnkgc3Vic2NyaXB0aW9uXG5jYW4gYmUgaW50ZXJwcmV0ZWQgYXMgYSBzbGljaW5nLiAgUmF0aGVyIHRoYW4gZnVydGhlciBjb21wbGljYXRpbmcgdGhlXG5zeW50YXgsIHRoaXMgaXMgZGlzYW1iaWd1YXRlZCBieSBkZWZpbmluZyB0aGF0IGluIHRoaXMgY2FzZSB0aGVcbmludGVycHJldGF0aW9uIGFzIGEgc3Vic2NyaXB0aW9uIHRha2VzIHByaW9yaXR5IG92ZXIgdGhlXG5pbnRlcnByZXRhdGlvbiBhcyBhIHNsaWNpbmcgKHRoaXMgaXMgdGhlIGNhc2UgaWYgdGhlIHNsaWNlIGxpc3RcbmNvbnRhaW5zIG5vIHByb3BlciBzbGljZSkuXG5cblRoZSBzZW1hbnRpY3MgZm9yIGEgc2xpY2luZyBhcmUgYXMgZm9sbG93cy4gIFRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGVcbnRvIGEgbWFwcGluZyBvYmplY3QsIGFuZCBpdCBpcyBpbmRleGVkICh1c2luZyB0aGUgc2FtZVxuYGBfX2dldGl0ZW1fXygpYGAgbWV0aG9kIGFzIG5vcm1hbCBzdWJzY3JpcHRpb24pIHdpdGggYSBrZXkgdGhhdCBpc1xuY29uc3RydWN0ZWQgZnJvbSB0aGUgc2xpY2UgbGlzdCwgYXMgZm9sbG93cy4gIElmIHRoZSBzbGljZSBsaXN0XG5jb250YWlucyBhdCBsZWFzdCBvbmUgY29tbWEsIHRoZSBrZXkgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZVxuY29udmVyc2lvbiBvZiB0aGUgc2xpY2UgaXRlbXM7IG90aGVyd2lzZSwgdGhlIGNvbnZlcnNpb24gb2YgdGhlIGxvbmVcbnNsaWNlIGl0ZW0gaXMgdGhlIGtleS4gIFRoZSBjb252ZXJzaW9uIG9mIGEgc2xpY2UgaXRlbSB0aGF0IGlzIGFuXG5leHByZXNzaW9uIGlzIHRoYXQgZXhwcmVzc2lvbi4gIFRoZSBjb252ZXJzaW9uIG9mIGEgcHJvcGVyIHNsaWNlIGlzIGFcbnNsaWNlIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopIHdob3NlXG5gYHN0YXJ0YGAsIGBgc3RvcGBgIGFuZCBgYHN0ZXBgYCBhdHRyaWJ1dGVzIGFyZSB0aGUgdmFsdWVzIG9mIHRoZVxuZXhwcmVzc2lvbnMgZ2l2ZW4gYXMgbG93ZXIgYm91bmQsIHVwcGVyIGJvdW5kIGFuZCBzdHJpZGUsXG5yZXNwZWN0aXZlbHksIHN1YnN0aXR1dGluZyBgYE5vbmVgYCBmb3IgbWlzc2luZyBleHByZXNzaW9ucy5cbicsCi0gJ3NwZWNpYWxhdHRycyc6ICdcblNwZWNpYWwgQXR0cmlidXRlc1xuKioqKioqKioqKioqKioqKioqXG5cblRoZSBpbXBsZW1lbnRhdGlvbiBhZGRzIGEgZmV3IHNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXMgdG8gc2V2ZXJhbFxub2JqZWN0IHR5cGVzLCB3aGVyZSB0aGV5IGFyZSByZWxldmFudC4gIFNvbWUgb2YgdGhlc2UgYXJlIG5vdCByZXBvcnRlZFxuYnkgdGhlIGBgZGlyKClgYCBidWlsdC1pbiBmdW5jdGlvbi5cblxub2JqZWN0Ll9fZGljdF9fXG5cbiAgIEEgZGljdGlvbmFyeSBvciBvdGhlciBtYXBwaW5nIG9iamVjdCB1c2VkIHRvIHN0b3JlIGFuIG9iamVjdFwnc1xuICAgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzLlxuXG5pbnN0YW5jZS5fX2NsYXNzX19cblxuICAgVGhlIGNsYXNzIHRvIHdoaWNoIGEgY2xhc3MgaW5zdGFuY2UgYmVsb25ncy5cblxuY2xhc3MuX19iYXNlc19fXG5cbiAgIFRoZSB0dXBsZSBvZiBiYXNlIGNsYXNzZXMgb2YgYSBjbGFzcyBvYmplY3QuXG5cbmNsYXNzLl9fbmFtZV9fXG5cbiAgIFRoZSBuYW1lIG9mIHRoZSBjbGFzcyBvciB0eXBlLlxuXG5jbGFzcy5fX21yb19fXG5cbiAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkIHdoZW5cbiAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG5cbmNsYXNzLm1ybygpXG5cbiAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSB0aGVcbiAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkIGF0IGNsYXNzXG4gICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gYGBfX21yb19fYGAuXG5cbmNsYXNzLl9fc3ViY2xhc3Nlc19fKClcblxuICAgRWFjaCBjbGFzcyBrZWVwcyBhIGxpc3Qgb2Ygd2VhayByZWZlcmVuY2VzIHRvIGl0cyBpbW1lZGlhdGVcbiAgIHN1YmNsYXNzZXMuICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhvc2UgcmVmZXJlbmNlc1xuICAgc3RpbGwgYWxpdmUuIEV4YW1wbGU6XG5cbiAgICAgID4+PiBpbnQuX19zdWJjbGFzc2VzX18oKVxuICAgICAgWzxjbGFzcyBcJ2Jvb2xcJz5dXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGVzZSBzcGVjaWFsIG1ldGhvZHMgbWF5IGJlIGZvdW5kIGluXG4gICAgdGhlIFB5dGhvbiBSZWZlcmVuY2UgTWFudWFsICgqQmFzaWMgY3VzdG9taXphdGlvbiopLlxuXG5bMl0gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGxpc3QgYGBbMSwgMl1gYCBpcyBjb25zaWRlcmVkIGVxdWFsIHRvXG4gICAgYGBbMS4wLCAyLjBdYGAsIGFuZCBzaW1pbGFybHkgZm9yIHR1cGxlcy5cblxuWzNdIFRoZXkgbXVzdCBoYXZlIHNpbmNlIHRoZSBwYXJzZXIgY2FuXCd0IHRlbGwgdGhlIHR5cGUgb2YgdGhlXG4gICAgb3BlcmFuZHMuXG5cbls0XSBDYXNlZCBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHkgYmVpbmdcbiAgICBvbmUgb2YgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCAiTGwiIChMZXR0ZXIsIGxvd2VyY2FzZSksIG9yICJMdCJcbiAgICAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG5bNV0gVG8gZm9ybWF0IG9ubHkgYSB0dXBsZSB5b3Ugc2hvdWxkIHRoZXJlZm9yZSBwcm92aWRlIGEgc2luZ2xldG9uXG4gICAgdHVwbGUgd2hvc2Ugb25seSBlbGVtZW50IGlzIHRoZSB0dXBsZSB0byBiZSBmb3JtYXR0ZWQuXG4nLAotICdzcGVjaWFsbmFtZXMnOiAnXG5TcGVjaWFsIG1ldGhvZCBuYW1lc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBjbGFzcyBjYW4gaW1wbGVtZW50IGNlcnRhaW4gb3BlcmF0aW9ucyB0aGF0IGFyZSBpbnZva2VkIGJ5IHNwZWNpYWxcbnN5bnRheCAoc3VjaCBhcyBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3Igc3Vic2NyaXB0aW5nIGFuZCBzbGljaW5nKSBieVxuZGVmaW5pbmcgbWV0aG9kcyB3aXRoIHNwZWNpYWwgbmFtZXMuIFRoaXMgaXMgUHl0aG9uXCdzIGFwcHJvYWNoIHRvXG4qb3BlcmF0b3Igb3ZlcmxvYWRpbmcqLCBhbGxvd2luZyBjbGFzc2VzIHRvIGRlZmluZSB0aGVpciBvd24gYmVoYXZpb3JcbndpdGggcmVzcGVjdCB0byBsYW5ndWFnZSBvcGVyYXRvcnMuICBGb3IgaW5zdGFuY2UsIGlmIGEgY2xhc3MgZGVmaW5lc1xuYSBtZXRob2QgbmFtZWQgYGBfX2dldGl0ZW1fXygpYGAsIGFuZCBgYHhgYCBpcyBhbiBpbnN0YW5jZSBvZiB0aGlzXG5jbGFzcywgdGhlbiBgYHhbaV1gYCBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gYGB0eXBlKHgpLl9fZ2V0aXRlbV9fKHgsXG5pKWBgLiAgRXhjZXB0IHdoZXJlIG1lbnRpb25lZCwgYXR0ZW1wdHMgdG8gZXhlY3V0ZSBhbiBvcGVyYXRpb24gcmFpc2VcbmFuIGV4Y2VwdGlvbiB3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICh0eXBpY2FsbHlcbmBgQXR0cmlidXRlRXJyb3JgYCBvciBgYFR5cGVFcnJvcmBgKS5cblxuV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpc1xuaW1wb3J0YW50IHRoYXQgdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdFxubWFrZXMgc2Vuc2UgZm9yIHRoZSBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZVxuc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwgb2YgaW5kaXZpZHVhbCBlbGVtZW50cywgYnV0XG5leHRyYWN0aW5nIGEgc2xpY2UgbWF5IG5vdCBtYWtlIHNlbnNlLiAgKE9uZSBleGFtcGxlIG9mIHRoaXMgaXMgdGhlXG5gYE5vZGVMaXN0YGAgaW50ZXJmYWNlIGluIHRoZSBXM0NcJ3MgRG9jdW1lbnQgT2JqZWN0IE1vZGVsLilcblxuXG5CYXNpYyBjdXN0b21pemF0aW9uXG49PT09PT09PT09PT09PT09PT09XG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICBgYF9fbmV3X18oKWBgIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mIGBgX19uZXdfXygpYGAgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5XG4gICBhbiBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIHVzaW5nXG4gICBgYHN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pYGAgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgIGBgX19pbml0X18oc2VsZlssIC4uLl0pYGAsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICBgYF9fbmV3X18oKWBgIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjcmVhdGVkLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgIGBgX19pbml0X18oKWBgIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kLFxuICAgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mXG4gICB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICBgYEJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pYGAuICBBcyBhIHNwZWNpYWwgY29uc3RyYWludFxuICAgb24gY29uc3RydWN0b3JzLCBubyB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQ7IGRvaW5nIHNvIHdpbGwgY2F1c2UgYVxuICAgYGBUeXBlRXJyb3JgYCB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSBgYF9fZGVsX18oKWBgIG1ldGhvZCxcbiAgIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19kZWxfXygpYGAgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseVxuICAgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlXG4gICBpbnN0YW5jZS4gIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvclxuICAgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiBgYGRlbCB4YGAgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCBgYHguX19kZWxfXygpYGAgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciBgYHhgYCBieSBvbmUsIGFuZCB0aGUgbGF0dGVyXG4gICAgIGlzIG9ubHkgY2FsbGVkIHdoZW4gYGB4YGBcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWVcbiAgICAgY29tbW9uIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuXG4gICAgIG9iamVjdCBmcm9tIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuXG4gICAgIG9iamVjdHMgKGUuZy4sIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoXG4gICAgIHBhcmVudCBhbmQgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZVxuICAgICBzdGFjayBmcmFtZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFja1xuICAgICBzdG9yZWQgaW4gYGBzeXMuZXhjX2luZm8oKVsyXWBgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yXG4gICAgIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuXG4gICAgIHVuaGFuZGxlZCBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBsYXR0ZXIgdHdvIHNpdHVhdGlvbnMgY2FuIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgYGBOb25lYGAgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC4gQ2lyY3VsYXIgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmVcbiAgICAgZGV0ZWN0ZWQgd2hlbiB0aGUgb3B0aW9uIGN5Y2xlIGRldGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5XG4gICAgIGRlZmF1bHQpLCBidXQgY2FuIG9ubHkgYmUgY2xlYW5lZCB1cCBpZiB0aGVyZSBhcmUgbm8gUHl0aG9uLVxuICAgICBsZXZlbCBgYF9fZGVsX18oKWBgIG1ldGhvZHMgaW52b2x2ZWQuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uXG4gICAgIGZvciB0aGUgYGBnY2BgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjeWNsZSBkZXRlY3RvcixcbiAgICAgcGFydGljdWxhcmx5IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBnYXJiYWdlYGAgdmFsdWUuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZyB0aGVpciBleGVjdXRpb25cbiAgICAgYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0byBgYHN5cy5zdGRlcnJgYCBpbnN0ZWFkLlxuICAgICBBbHNvLCB3aGVuIGBgX19kZWxfXygpYGAgaXMgaW52b2tlZCBpbiByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZ1xuICAgICBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXJcbiAgICAgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlXG4gICAgIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyB0b3JuIGRvd24gKGUuZy4gdGhlXG4gICAgIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpcyByZWFzb24sIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkIHRvIG1haW50YWluXG4gICAgIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LCBQeXRob25cbiAgICAgZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgcmVwcigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGVcbiAgICJvZmZpY2lhbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSxcbiAgIHRoaXMgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZFxuICAgdG8gcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgIGBgPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPmBgIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyBgYF9fcmVwcl9fKClgYFxuICAgYnV0IG5vdCBgYF9fc3RyX18oKWBgLCB0aGVuIGBgX19yZXByX18oKWBgIGlzIGFsc28gdXNlZCB3aGVuIGFuXG4gICAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpc1xuICAgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYHN0cigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gYW5kIGJ5IHRoZSBgYHByaW50KClgYFxuICAgZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gIFRoaXMgZGlmZmVycyBmcm9tIGBgX19yZXByX18oKWBgIGluIHRoYXQgaXQgZG9lcyBub3QgaGF2ZVxuICAgdG8gYmUgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYSBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZVxuICAgcmVwcmVzZW50YXRpb24gbWF5IGJlIHVzZWQgaW5zdGVhZC4gVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGFcbiAgIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGBgYnl0ZXMoKWBgIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSBgYGJ5dGVzYGAgb2JqZWN0LlxuXG5vYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYGZvcm1hdCgpYGAgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgYGBmb3JtYXQoKWBgIG1ldGhvZCBvZiBjbGFzcyBgYHN0cmBgKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXNcbiAgIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpcyB1cFxuICAgdG8gdGhlIHR5cGUgaW1wbGVtZW50aW5nIGBgX19mb3JtYXRfXygpYGAsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzXG4gICB3aWxsIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yXG4gICB1c2UgYSBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG5vYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgaXMgYXNcbiAgIGZvbGxvd3M6IGBgeDx5YGAgY2FsbHMgYGB4Ll9fbHRfXyh5KWBgLCBgYHg8PXlgYCBjYWxsc1xuICAgYGB4Ll9fbGVfXyh5KWBgLCBgYHg9PXlgYCBjYWxscyBgYHguX19lcV9fKHkpYGAsIGBgeCE9eWBgIGNhbGxzXG4gICBgYHguX19uZV9fKHkpYGAsIGBgeD55YGAgY2FsbHMgYGB4Ll9fZ3RfXyh5KWBgLCBhbmQgYGB4Pj15YGAgY2FsbHNcbiAgIGBgeC5fX2dlX18oeSlgYC5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvblxuICAgYGBOb3RJbXBsZW1lbnRlZGBgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhXG4gICBnaXZlbiBwYWlyIG9mIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgYGBGYWxzZWBgIGFuZCBgYFRydWVgYCBhcmVcbiAgIHJldHVybmVkIGZvciBhIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW5cbiAgIHJldHVybiBhbnkgdmFsdWUsIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYVxuICAgQm9vbGVhbiBjb250ZXh0IChlLmcuLCBpbiB0aGUgY29uZGl0aW9uIG9mIGFuIGBgaWZgYCBzdGF0ZW1lbnQpLFxuICAgUHl0aG9uIHdpbGwgY2FsbCBgYGJvb2woKWBgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdFxuICAgaXMgdHJ1ZSBvciBmYWxzZS5cblxuICAgVGhlcmUgYXJlIG5vIGltcGxpZWQgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMuXG4gICBUaGUgdHJ1dGggb2YgYGB4PT15YGAgZG9lcyBub3QgaW1wbHkgdGhhdCBgYHghPXlgYCBpcyBmYWxzZS5cbiAgIEFjY29yZGluZ2x5LCB3aGVuIGRlZmluaW5nIGBgX19lcV9fKClgYCwgb25lIHNob3VsZCBhbHNvIGRlZmluZVxuICAgYGBfX25lX18oKWBgIHNvIHRoYXQgdGhlIG9wZXJhdG9ycyB3aWxsIGJlaGF2ZSBhcyBleHBlY3RlZC4gIFNlZVxuICAgdGhlIHBhcmFncmFwaCBvbiBgYF9faGFzaF9fKClgYCBmb3Igc29tZSBpbXBvcnRhbnQgbm90ZXMgb25cbiAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uXG4gICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cblxuICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAodG8gYmUgdXNlZFxuICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0IHRoZSByaWdodFxuICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgYGBfX2x0X18oKWBgIGFuZCBgYF9fZ3RfXygpYGAgYXJlIGVhY2hcbiAgIG90aGVyXCdzIHJlZmxlY3Rpb24sIGBgX19sZV9fKClgYCBhbmQgYGBfX2dlX18oKWBgIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCBhbmQgYGBfX2VxX18oKWBgIGFuZCBgYF9fbmVfXygpYGAgYXJlIHRoZWlyIG93blxuICAgcmVmbGVjdGlvbi5cblxuICAgQXJndW1lbnRzIHRvIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGFyZSBuZXZlciBjb2VyY2VkLlxuXG4gICBUbyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290XG4gICBvcGVyYXRpb24sIHNlZSBgYGZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpYGAuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gYGBoYXNoKClgYCBhbmQgZm9yIG9wZXJhdGlvbnMgb25cbiAgIG1lbWJlcnMgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyBgYHNldGBgLCBgYGZyb3plbnNldGBgLCBhbmRcbiAgIGBgZGljdGBgLiAgYGBfX2hhc2hfXygpYGAgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHlcbiAgIHJlcXVpcmVkIHByb3BlcnR5IGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWVcbiAgIGhhc2ggdmFsdWU7IGl0IGlzIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmdcbiAgIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2ggdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXRcbiAgIGFsc28gcGxheSBhIHBhcnQgaW4gY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiBgYF9fZXFfXygpYGAgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhIGBgX19oYXNoX18oKWBgIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXNcbiAgIGBgX19lcV9fKClgYCBidXQgbm90IGBgX19oYXNoX18oKWBgLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlXG4gICB1c2FibGUgYXMgaXRlbXMgaW4gaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG11dGFibGUgb2JqZWN0cyBhbmQgaW1wbGVtZW50cyBhbiBgYF9fZXFfXygpYGAgbWV0aG9kLCBpdCBzaG91bGRcbiAgIG5vdCBpbXBsZW1lbnQgYGBfX2hhc2hfXygpYGAsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZVxuICAgY29sbGVjdGlvbnMgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlXG4gICBvYmplY3RcJ3MgaGFzaCB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgYGBfX2VxX18oKWBgIGFuZCBgYF9faGFzaF9fKClgYCBtZXRob2RzXG4gICBieSBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGhcbiAgIHRoZW1zZWx2ZXMpIGFuZCBgYHguX19oYXNoX18oKWBgIHJldHVybnMgYGBpZCh4KWBgLlxuXG4gICBDbGFzc2VzIHdoaWNoIGluaGVyaXQgYSBgYF9faGFzaF9fKClgYCBtZXRob2QgZnJvbSBhIHBhcmVudCBjbGFzc1xuICAgYnV0IGNoYW5nZSB0aGUgbWVhbmluZyBvZiBgYF9fZXFfXygpYGAgc3VjaCB0aGF0IHRoZSBoYXNoIHZhbHVlXG4gICByZXR1cm5lZCBpcyBubyBsb25nZXIgYXBwcm9wcmlhdGUgKGUuZy4gYnkgc3dpdGNoaW5nIHRvIGEgdmFsdWUtXG4gICBiYXNlZCBjb25jZXB0IG9mIGVxdWFsaXR5IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgaWRlbnRpdHkgYmFzZWRcbiAgIGVxdWFsaXR5KSBjYW4gZXhwbGljaXRseSBmbGFnIHRoZW1zZWx2ZXMgYXMgYmVpbmcgdW5oYXNoYWJsZSBieVxuICAgc2V0dGluZyBgYF9faGFzaF9fID0gTm9uZWBgIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLiBEb2luZyBzbyBtZWFuc1xuICAgdGhhdCBub3Qgb25seSB3aWxsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MgcmFpc2UgYW4gYXBwcm9wcmlhdGVcbiAgIGBgVHlwZUVycm9yYGAgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSxcbiAgIGJ1dCB0aGV5IHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhcyB1bmhhc2hhYmxlIHdoZW5cbiAgIGNoZWNraW5nIGBgaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKWBgICh1bmxpa2UgY2xhc3Nlc1xuICAgd2hpY2ggZGVmaW5lIHRoZWlyIG93biBgYF9faGFzaF9fKClgYCB0byBleHBsaWNpdGx5IHJhaXNlXG4gICBgYFR5cGVFcnJvcmBgKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyBgYF9fZXFfXygpYGAgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgYGBfX2hhc2hfXygpYGAgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlXG4gICBpbnRlcnByZXRlciBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgYGBfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fYGAuIE90aGVyd2lzZSB0aGUgaW5oZXJpdGFuY2Ugb2ZcbiAgIGBgX19oYXNoX18oKWBgIHdpbGwgYmUgYmxvY2tlZCwganVzdCBhcyBpZiBgYF9faGFzaF9fYGAgaGFkIGJlZW5cbiAgIGV4cGxpY2l0bHkgc2V0IHRvIGBgTm9uZWBgLlxuXG4gICBTZWUgYWxzbyB0aGUgKi1SKiBjb21tYW5kLWxpbmUgb3B0aW9uLlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICBgYGJvb2woKWBgOyBzaG91bGQgcmV0dXJuIGBgRmFsc2VgYCBvciBgYFRydWVgYC4gIFdoZW4gdGhpcyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCBgYF9fbGVuX18oKWBgIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZVxuICAgb2JqZWN0IGlzIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzXG4gICBkZWZpbmVzIG5laXRoZXIgYGBfX2xlbl9fKClgYCBub3IgYGBfX2Jvb2xfXygpYGAsIGFsbCBpdHMgaW5zdGFuY2VzXG4gICBhcmUgY29uc2lkZXJlZCB0cnVlLlxuXG5cbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiBgYHgubmFtZWBgKVxuZm9yIGNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgYGBzZWxmYGApLiAgYGBuYW1lYGAgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2VcbiAgIGFuIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICBgYF9fZ2V0YXR0cl9fKClgYCBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuIGBgX19nZXRhdHRyX18oKWBgIGFuZCBgYF9fc2V0YXR0cl9fKClgYC4pIFRoaXMgaXMgZG9uZSBib3RoXG4gICBmb3IgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSBgYF9fZ2V0YXR0cl9fKClgYFxuICAgd291bGQgaGF2ZSBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZVxuICAgdGhhdCBhdCBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieVxuICAgbm90IGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzXG4gICBgYF9fZ2V0YXR0cl9fKClgYCwgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzXG4gICBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIGVpdGhlciBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgLiBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpXG4gICBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi4gSW4gb3JkZXJcbiAgIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpbiB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uXG4gICBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0b1xuICAgYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3IgZXhhbXBsZSxcbiAgIGBgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlgYC5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHNcbiAgICAgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXggb3JcbiAgICAgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgYGBfX3NldGF0dHJfXygpYGAgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpYGAuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlIGBgX19zZXRhdHRyX18oKWBgIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmIGBgZGVsIG9iai5uYW1lYGAgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIGBgZGlyKClgYCBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gIEEgbGlzdCBtdXN0IGJlXG4gICByZXR1cm5lZC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyBgYF9fZGljdF9fYGAuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciBgYE5vbmVgYCB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogIGBgX19nZXRfXygpYGAsIGBgX19zZXRfXygpYGAsIGFuZFxuYGBfX2RlbGV0ZV9fKClgYC4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCxcbml0IGlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgYGBhLnhgYCBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggYGBhLl9fZGljdF9fW1wneFwnXWBgLCB0aGVuXG5gYHR5cGUoYSkuX19kaWN0X19bXCd4XCddYGAsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuYGB0eXBlKGEpYGAgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC5cblxuVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCBgYGEueGBgLlxuSG93IHRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uIGBgYWBgOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICBgYHguX19nZXRfXyhhKWBgLlxuXG5JbnN0YW5jZSBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgYGBhLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogYGB0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpYGAuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgYGBBLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBjYWxsOlxuICAgYGBBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpYGAuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmIGBgYWBgIGlzIGFuIGluc3RhbmNlIG9mIGBgc3VwZXJgYCwgdGhlbiB0aGUgYmluZGluZyBgYHN1cGVyKEIsXG4gICBvYmopLm0oKWBgIHNlYXJjaGVzIGBgb2JqLl9fY2xhc3NfXy5fX21yb19fYGAgZm9yIHRoZSBiYXNlIGNsYXNzXG4gICBgYEFgYCBpbW1lZGlhdGVseSBwcmVjZWRpbmcgYGBCYGAgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvclxuICAgd2l0aCB0aGUgY2FsbDogYGBBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXylgYC5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCBhbmQgYGBfX2RlbGV0ZV9fKClgYC5cbklmIGl0IGRvZXMgbm90IGRlZmluZSBgYF9fZ2V0X18oKWBgLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGxcbnJldHVybiB0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZVxub2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzIGBgX19zZXRfXygpYGBcbmFuZC9vciBgYF9fZGVsZXRlX18oKWBgLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lc1xubmVpdGhlciwgaXQgaXMgYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnNcbmRlZmluZSBib3RoIGBgX19nZXRfXygpYGAgYW5kIGBgX19zZXRfXygpYGAsIHdoaWxlIG5vbi1kYXRhXG5kZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlIGBgX19nZXRfXygpYGAgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoXG5gYF9fc2V0X18oKWBgIGFuZCBgYF9fZ2V0X18oKWBgIGRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uXG5pbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW4gY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZVxub3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgYGBzdGF0aWNtZXRob2QoKWBgIGFuZCBgYGNsYXNzbWV0aG9kKClgYClcbmFyZSBpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlIGBgcHJvcGVydHkoKWBgIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG4tLS0tLS0tLS1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgSWYgZGVmaW5lZCBpbiBhXG4gICBjbGFzcywgKl9fc2xvdHNfXyogcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kXG4gICBwcmV2ZW50cyB0aGUgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yXG4gICBlYWNoIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+flxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgYGBBdHRyaWJ1dGVFcnJvcmBgLiBJZlxuICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuICBgYFwnX19kaWN0X19cJ2BgIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3NlcyBkZWZpbmluZ1xuICAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzIGluc3RhbmNlcy4gSWYgd2Vha1xuICByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkIGBgXCdfX3dlYWtyZWZfX1wnYGAgdG8gdGhlXG4gIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGUgaW5zdGFuY2VcbiAgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZSAoZXhjZXB0IGJ5XG4gIHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuIFRoaXNcbiAgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyBgYGludGBgLCBgYHN0cmBgIGFuZFxuICBgYHR1cGxlYGAuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5ncyBtYXlcbiAgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG5cblxuQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkJ5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nIGBgdHlwZSgpYGAuIEEgY2xhc3NcbmRlZmluaXRpb24gaXMgcmVhZCBpbnRvIGEgc2VwYXJhdGUgbmFtZXNwYWNlIGFuZCB0aGUgdmFsdWUgb2YgY2xhc3Ncbm5hbWUgaXMgYm91bmQgdG8gdGhlIHJlc3VsdCBvZiBgYHR5cGUobmFtZSwgYmFzZXMsIGRpY3QpYGAuXG5cbldoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gaXMgcmVhZCwgaWYgYSBjYWxsYWJsZSBgYG1ldGFjbGFzc2BgIGtleXdvcmRcbmFyZ3VtZW50IGlzIHBhc3NlZCBhZnRlciB0aGUgYmFzZXMgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24sIHRoZVxuY2FsbGFibGUgZ2l2ZW4gd2lsbCBiZSBjYWxsZWQgaW5zdGVhZCBvZiBgYHR5cGUoKWBgLiAgSWYgb3RoZXIga2V5d29yZFxuYXJndW1lbnRzIGFyZSBwYXNzZWQsIHRoZXkgd2lsbCBhbHNvIGJlIHBhc3NlZCB0byB0aGUgbWV0YWNsYXNzLiAgVGhpc1xuYWxsb3dzIGNsYXNzZXMgb3IgZnVuY3Rpb25zIHRvIGJlIHdyaXR0ZW4gd2hpY2ggbW9uaXRvciBvciBhbHRlciB0aGVcbmNsYXNzIGNyZWF0aW9uIHByb2Nlc3M6XG5cbiogTW9kaWZ5aW5nIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IHByaW9yIHRvIHRoZSBjbGFzcyBiZWluZyBjcmVhdGVkLlxuXG4qIFJldHVybmluZyBhbiBpbnN0YW5jZSBvZiBhbm90aGVyIGNsYXNzIC0tIGVzc2VudGlhbGx5IHBlcmZvcm1pbmcgdGhlXG4gIHJvbGUgb2YgYSBmYWN0b3J5IGZ1bmN0aW9uLlxuXG5UaGVzZSBzdGVwcyB3aWxsIGhhdmUgdG8gYmUgcGVyZm9ybWVkIGluIHRoZSBtZXRhY2xhc3NcJ3MgYGBfX25ld19fKClgYFxubWV0aG9kIC0tIGBgdHlwZS5fX25ld19fKClgYCBjYW4gdGhlbiBiZSBjYWxsZWQgZnJvbSB0aGlzIG1ldGhvZCB0b1xuY3JlYXRlIGEgY2xhc3Mgd2l0aCBkaWZmZXJlbnQgcHJvcGVydGllcy4gIFRoaXMgZXhhbXBsZSBhZGRzIGEgbmV3XG5lbGVtZW50IHRvIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGJlZm9yZSBjcmVhdGluZyB0aGUgY2xhc3M6XG5cbiAgIGNsYXNzIG1ldGFjbHModHlwZSk6XG4gICAgICAgZGVmIF9fbmV3X18obWNzLCBuYW1lLCBiYXNlcywgZGljdCk6XG4gICAgICAgICAgIGRpY3RbXCdmb29cJ10gPSBcJ21ldGFjbHMgd2FzIGhlcmVcJ1xuICAgICAgICAgICByZXR1cm4gdHlwZS5fX25ld19fKG1jcywgbmFtZSwgYmFzZXMsIGRpY3QpXG5cbllvdSBjYW4gb2YgY291cnNlIGFsc28gb3ZlcnJpZGUgb3RoZXIgY2xhc3MgbWV0aG9kcyAob3IgYWRkIG5ld1xubWV0aG9kcyk7IGZvciBleGFtcGxlIGRlZmluaW5nIGEgY3VzdG9tIGBgX19jYWxsX18oKWBgIG1ldGhvZCBpbiB0aGVcbm1ldGFjbGFzcyBhbGxvd3MgY3VzdG9tIGJlaGF2aW9yIHdoZW4gdGhlIGNsYXNzIGlzIGNhbGxlZCwgZS5nLiBub3RcbmFsd2F5cyBjcmVhdGluZyBhIG5ldyBpbnN0YW5jZS5cblxuSWYgdGhlIG1ldGFjbGFzcyBoYXMgYSBgYF9fcHJlcGFyZV9fKClgYCBhdHRyaWJ1dGUgKHVzdWFsbHlcbmltcGxlbWVudGVkIGFzIGEgY2xhc3Mgb3Igc3RhdGljIG1ldGhvZCksIGl0IGlzIGNhbGxlZCBiZWZvcmUgdGhlXG5jbGFzcyBib2R5IGlzIGV2YWx1YXRlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyBhbmQgYSB0dXBsZSBvZiBpdHNcbmJhc2VzIGZvciBhcmd1bWVudHMuICBJdCBzaG91bGQgcmV0dXJuIGFuIG9iamVjdCB0aGF0IHN1cHBvcnRzIHRoZVxubWFwcGluZyBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgdG8gc3RvcmUgdGhlIG5hbWVzcGFjZSBvZiB0aGVcbmNsYXNzLiAgVGhlIGRlZmF1bHQgaXMgYSBwbGFpbiBkaWN0aW9uYXJ5LiAgVGhpcyBjb3VsZCBiZSB1c2VkLCBmb3JcbmV4YW1wbGUsIHRvIGtlZXAgdHJhY2sgb2YgdGhlIG9yZGVyIHRoYXQgY2xhc3MgYXR0cmlidXRlcyBhcmUgZGVjbGFyZWRcbmluIGJ5IHJldHVybmluZyBhbiBvcmRlcmVkIGRpY3Rpb25hcnkuXG5cblRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZCBieSB0aGUgZm9sbG93aW5nIHByZWNlZGVuY2VcbnJ1bGVzOlxuXG4qIElmIHRoZSBgYG1ldGFjbGFzc2BgIGtleXdvcmQgYXJndW1lbnQgaXMgcGFzc2VkIHdpdGggdGhlIGJhc2VzLCBpdFxuICBpcyB1c2VkLlxuXG4qIE90aGVyd2lzZSwgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGJhc2UgY2xhc3MsIGl0cyBtZXRhY2xhc3MgaXNcbiAgdXNlZC5cblxuKiBPdGhlcndpc2UsIHRoZSBkZWZhdWx0IG1ldGFjbGFzcyAoYGB0eXBlYGApIGlzIHVzZWQuXG5cblRoZSBwb3RlbnRpYWwgdXNlcyBmb3IgbWV0YWNsYXNzZXMgYXJlIGJvdW5kbGVzcy4gU29tZSBpZGVhcyB0aGF0IGhhdmVcbmJlZW4gZXhwbG9yZWQgaW5jbHVkaW5nIGxvZ2dpbmcsIGludGVyZmFjZSBjaGVja2luZywgYXV0b21hdGljXG5kZWxlZ2F0aW9uLCBhdXRvbWF0aWMgcHJvcGVydHkgY3JlYXRpb24sIHByb3hpZXMsIGZyYW1ld29ya3MsIGFuZFxuYXV0b21hdGljIHJlc291cmNlIGxvY2tpbmcvc3luY2hyb25pemF0aW9uLlxuXG5IZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBtZXRhY2xhc3MgdGhhdCB1c2VzIGFuXG5gYGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YGAgdG8gcmVtZW1iZXIgdGhlIG9yZGVyIHRoYXQgY2xhc3MgbWVtYmVyc1xud2VyZSBkZWZpbmVkOlxuXG4gICBjbGFzcyBPcmRlcmVkQ2xhc3ModHlwZSk6XG5cbiAgICAgICAgQGNsYXNzbWV0aG9kXG4gICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKTpcbiAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KClcblxuICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBjbGFzc2RpY3QpOlxuICAgICAgICAgICByZXN1bHQgPSB0eXBlLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgZGljdChjbGFzc2RpY3QpKVxuICAgICAgICAgICByZXN1bHQubWVtYmVycyA9IHR1cGxlKGNsYXNzZGljdClcbiAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuXG4gICBjbGFzcyBBKG1ldGFjbGFzcz1PcmRlcmVkQ2xhc3MpOlxuICAgICAgIGRlZiBvbmUoc2VsZik6IHBhc3NcbiAgICAgICBkZWYgdHdvKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIHRocmVlKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIGZvdXIoc2VsZik6IHBhc3NcblxuICAgPj4+IEEubWVtYmVyc1xuICAgKFwnX19tb2R1bGVfX1wnLCBcJ29uZVwnLCBcJ3R3b1wnLCBcJ3RocmVlXCcsIFwnZm91clwnKVxuXG5XaGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIGZvciAqQSogZ2V0cyBleGVjdXRlZCwgdGhlIHByb2Nlc3MgYmVnaW5zXG53aXRoIGNhbGxpbmcgdGhlIG1ldGFjbGFzc1wncyBgYF9fcHJlcGFyZV9fKClgYCBtZXRob2Qgd2hpY2ggcmV0dXJucyBhblxuZW1wdHkgYGBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdGBgLiAgVGhhdCBtYXBwaW5nIHJlY29yZHMgdGhlIG1ldGhvZHNcbmFuZCBhdHRyaWJ1dGVzIG9mICpBKiBhcyB0aGV5IGFyZSBkZWZpbmVkIHdpdGhpbiB0aGUgYm9keSBvZiB0aGUgY2xhc3NcbnN0YXRlbWVudC4gT25jZSB0aG9zZSBkZWZpbml0aW9ucyBhcmUgZXhlY3V0ZWQsIHRoZSBvcmRlcmVkIGRpY3Rpb25hcnlcbmlzIGZ1bGx5IHBvcHVsYXRlZCBhbmQgdGhlIG1ldGFjbGFzc1wncyBgYF9fbmV3X18oKWBgIG1ldGhvZCBnZXRzXG5pbnZva2VkLiAgVGhhdCBtZXRob2QgYnVpbGRzIHRoZSBuZXcgdHlwZSBhbmQgaXQgc2F2ZXMgdGhlIG9yZGVyZWRcbmRpY3Rpb25hcnkga2V5cyBpbiBhbiBhdHRyaWJ1dGUgY2FsbGVkIGBgbWVtYmVyc2BgLlxuXG5cbkN1c3RvbWl6aW5nIGluc3RhbmNlIGFuZCBzdWJjbGFzcyBjaGVja3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZVxuYGBpc2luc3RhbmNlKClgYCBhbmQgYGBpc3N1YmNsYXNzKClgYCBidWlsdC1pbiBmdW5jdGlvbnMuXG5cbkluIHBhcnRpY3VsYXIsIHRoZSBtZXRhY2xhc3MgYGBhYmMuQUJDTWV0YWBgIGltcGxlbWVudHMgdGhlc2UgbWV0aG9kc1xuaW4gb3JkZXIgdG8gYWxsb3cgdGhlIGFkZGl0aW9uIG9mIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoQUJDcykgYXNcbiJ2aXJ0dWFsIGJhc2UgY2xhc3NlcyIgdG8gYW55IGNsYXNzIG9yIHR5cGUgKGluY2x1ZGluZyBidWlsdC1pblxudHlwZXMpLCBpbmNsdWRpbmcgb3RoZXIgQUJDcy5cblxuY2xhc3MuX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIFJldHVybiB0cnVlIGlmICppbnN0YW5jZSogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgaW5zdGFuY2Ugb2YgKmNsYXNzKi4gSWYgZGVmaW5lZCwgY2FsbGVkIHRvIGltcGxlbWVudFxuICAgYGBpc2luc3RhbmNlKGluc3RhbmNlLCBjbGFzcylgYC5cblxuY2xhc3MuX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgc3ViY2xhc3MpXG5cbiAgIFJldHVybiB0cnVlIGlmICpzdWJjbGFzcyogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgc3ViY2xhc3Mgb2YgKmNsYXNzKi4gIElmIGRlZmluZWQsIGNhbGxlZCB0byBpbXBsZW1lbnRcbiAgIGBgaXNzdWJjbGFzcyhzdWJjbGFzcywgY2xhc3MpYGAuXG5cbk5vdGUgdGhhdCB0aGVzZSBtZXRob2RzIGFyZSBsb29rZWQgdXAgb24gdGhlIHR5cGUgKG1ldGFjbGFzcykgb2YgYVxuY2xhc3MuICBUaGV5IGNhbm5vdCBiZSBkZWZpbmVkIGFzIGNsYXNzIG1ldGhvZHMgaW4gdGhlIGFjdHVhbCBjbGFzcy5cblRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBsb29rdXAgb2Ygc3BlY2lhbCBtZXRob2RzIHRoYXQgYXJlIGNhbGxlZFxub24gaW5zdGFuY2VzLCBvbmx5IGluIHRoaXMgY2FzZSB0aGUgaW5zdGFuY2UgaXMgaXRzZWxmIGEgY2xhc3MuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTE5KiogLSBJbnRyb2R1Y2luZyBBYnN0cmFjdCBCYXNlIENsYXNzZXNcbiAgICAgIEluY2x1ZGVzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBjdXN0b21pemluZyBgYGlzaW5zdGFuY2UoKWBgIGFuZFxuICAgICAgYGBpc3N1YmNsYXNzKClgYCBiZWhhdmlvciB0aHJvdWdoIGBgX19pbnN0YW5jZWNoZWNrX18oKWBgIGFuZFxuICAgICAgYGBfX3N1YmNsYXNzY2hlY2tfXygpYGAsIHdpdGggbW90aXZhdGlvbiBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5XG4gICAgICBpbiB0aGUgY29udGV4dCBvZiBhZGRpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChzZWUgdGhlIGBgYWJjYGBcbiAgICAgIG1vZHVsZSkgdG8gdGhlIGxhbmd1YWdlLlxuXG5cbkVtdWxhdGluZyBjYWxsYWJsZSBvYmplY3RzXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19jYWxsX18oc2VsZlssIGFyZ3MuLi5dKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgdGhpcyBtZXRob2RcbiAgIGlzIGRlZmluZWQsIGBgeChhcmcxLCBhcmcyLCAuLi4pYGAgaXMgYSBzaG9ydGhhbmQgZm9yXG4gICBgYHguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKWBgLlxuXG5cbkVtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgb2JqZWN0cy5cbkNvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgb3IgbWFwcGluZ3NcbihsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgd2VsbC4gIFRoZVxuZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yIHRvXG5lbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgdGhlXG5hbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggYGAwIDw9IGsgPCBOYGBcbndoZXJlICpOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgd2hpY2hcbmRlZmluZSBhIHJhbmdlIG9mIGl0ZW1zLiAgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0aGF0IG1hcHBpbmdzIHByb3ZpZGVcbnRoZSBtZXRob2RzIGBga2V5cygpYGAsIGBgdmFsdWVzKClgYCwgYGBpdGVtcygpYGAsIGBgZ2V0KClgYCxcbmBgY2xlYXIoKWBgLCBgYHNldGRlZmF1bHQoKWBgLCBgYHBvcCgpYGAsIGBgcG9waXRlbSgpYGAsIGBgY29weSgpYGAsXG5hbmQgYGB1cGRhdGUoKWBgIGJlaGF2aW5nIHNpbWlsYXIgdG8gdGhvc2UgZm9yIFB5dGhvblwncyBzdGFuZGFyZFxuZGljdGlvbmFyeSBvYmplY3RzLiAgVGhlIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUgcHJvdmlkZXMgYVxuYGBNdXRhYmxlTWFwcGluZ2BgIGFic3RyYWN0IGJhc2UgY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kc1xuZnJvbSBhIGJhc2Ugc2V0IG9mIGBgX19nZXRpdGVtX18oKWBgLCBgYF9fc2V0aXRlbV9fKClgYCxcbmBgX19kZWxpdGVtX18oKWBgLCBhbmQgYGBrZXlzKClgYC4gTXV0YWJsZSBzZXF1ZW5jZXMgc2hvdWxkIHByb3ZpZGVcbm1ldGhvZHMgYGBhcHBlbmQoKWBgLCBgYGNvdW50KClgYCwgYGBpbmRleCgpYGAsIGBgZXh0ZW5kKClgYCxcbmBgaW5zZXJ0KClgYCwgYGBwb3AoKWBgLCBgYHJlbW92ZSgpYGAsIGBgcmV2ZXJzZSgpYGAgYW5kIGBgc29ydCgpYGAsXG5saWtlIFB5dGhvbiBzdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGRcbmltcGxlbWVudCBhZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzIGBgX19hZGRfXygpYGAsIGBgX19yYWRkX18oKWBgLFxuYGBfX2lhZGRfXygpYGAsIGBgX19tdWxfXygpYGAsIGBgX19ybXVsX18oKWBgIGFuZCBgYF9faW11bF9fKClgYFxuZGVzY3JpYmVkIGJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdFxuaXMgcmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuYGBfX2NvbnRhaW5zX18oKWBgIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSBgYGluYGBcbm9wZXJhdG9yOyBmb3IgbWFwcGluZ3MsIGBgaW5gYCBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvclxuc2VxdWVuY2VzLCBpdCBzaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXJcbnJlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGVcbmBgX19pdGVyX18oKWBgIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlXG5jb250YWluZXI7IGZvciBtYXBwaW5ncywgYGBfX2l0ZXJfXygpYGAgc2hvdWxkIGJlIHRoZSBzYW1lIGFzXG5gYGtleXMoKWBgOyBmb3Igc2VxdWVuY2VzLCBpdCBzaG91bGQgaXRlcmF0ZSB0aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgbGVuKClgYC4gIFNob3VsZCByZXR1cm5cbiAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciBgYD49YGAgMC4gIEFsc28sIGFuIG9iamVjdFxuICAgdGhhdCBkb2VzblwndCBkZWZpbmUgYSBgYF9fYm9vbF9fKClgYCBtZXRob2QgYW5kIHdob3NlIGBgX19sZW5fXygpYGBcbiAgIG1ldGhvZCByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gY29udGV4dC5cblxuTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyB0aHJlZSBtZXRob2RzLiAgQVxuICBjYWxsIGxpa2VcblxuICAgICBhWzE6Ml0gPSBiXG5cbiAgaXMgdHJhbnNsYXRlZCB0b1xuXG4gICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuXG4gIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gd2l0aFxuICBgYE5vbmVgYC5cblxub2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mIGBgc2VsZltrZXldYGAuIEZvciBzZXF1ZW5jZVxuICAgdHlwZXMsIHRoZSBhY2NlcHRlZCBrZXlzIHNob3VsZCBiZSBpbnRlZ2VycyBhbmQgc2xpY2Ugb2JqZWN0cy5cbiAgIE5vdGUgdGhhdCB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGVcbiAgIGNsYXNzIHdpc2hlcyB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlXG4gICBgYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QuIElmICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSxcbiAgIGBgVHlwZUVycm9yYGAgbWF5IGJlIHJhaXNlZDsgaWYgb2YgYSB2YWx1ZSBvdXRzaWRlIHRoZSBzZXQgb2ZcbiAgIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAoYWZ0ZXIgYW55IHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2ZcbiAgIG5lZ2F0aXZlIHZhbHVlcyksIGBgSW5kZXhFcnJvcmBgIHNob3VsZCBiZSByYWlzZWQuIEZvciBtYXBwaW5nXG4gICB0eXBlcywgaWYgKmtleSogaXMgbWlzc2luZyAobm90IGluIHRoZSBjb250YWluZXIpLCBgYEtleUVycm9yYGBcbiAgIHNob3VsZCBiZSByYWlzZWQuXG5cbiAgIE5vdGU6IGBgZm9yYGAgbG9vcHMgZXhwZWN0IHRoYXQgYW4gYGBJbmRleEVycm9yYGAgd2lsbCBiZSByYWlzZWQgZm9yXG4gICAgIGlsbGVnYWwgaW5kZXhlcyB0byBhbGxvdyBwcm9wZXIgZGV0ZWN0aW9uIG9mIHRoZSBlbmQgb2YgdGhlXG4gICAgIHNlcXVlbmNlLlxuXG5vYmplY3QuX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBhc3NpZ25tZW50IHRvIGBgc2VsZltrZXldYGAuICBTYW1lIG5vdGUgYXMgZm9yXG4gICBgYF9fZ2V0aXRlbV9fKClgYC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgaWYgbmV3IGtleXNcbiAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgcmVwbGFjZWQuICBUaGVcbiAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yXG4gICB0aGUgYGBfX2dldGl0ZW1fXygpYGAgbWV0aG9kLlxuXG5vYmplY3QuX19kZWxpdGVtX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGRlbGV0aW9uIG9mIGBgc2VsZltrZXldYGAuICBTYW1lIG5vdGUgYXMgZm9yXG4gICBgYF9fZ2V0aXRlbV9fKClgYC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50c1xuICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZVxuICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSBgYF9fZ2V0aXRlbV9fKClgYFxuICAgbWV0aG9kLlxuXG5vYmplY3QuX19pdGVyX18oc2VsZilcblxuICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yIGEgY29udGFpbmVyLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCBjYW4gaXRlcmF0ZVxuICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgaXQgc2hvdWxkXG4gICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lciwgYW5kIHNob3VsZCBhbHNvIGJlIG1hZGVcbiAgIGF2YWlsYWJsZSBhcyB0aGUgbWV0aG9kIGBga2V5cygpYGAuXG5cbiAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSBhcmVcbiAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaXRlcmF0b3JcbiAgIG9iamVjdHMsIHNlZSAqSXRlcmF0b3IgVHlwZXMqLlxuXG5vYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG5cbiAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlIGBgcmV2ZXJzZWQoKWBgIGJ1aWx0LWluIHRvIGltcGxlbWVudFxuICAgcmV2ZXJzZSBpdGVyYXRpb24uICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0XG4gICBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyIGluIHJldmVyc2Ugb3JkZXIuXG5cbiAgIElmIHRoZSBgYF9fcmV2ZXJzZWRfXygpYGAgbWV0aG9kIGlzIG5vdCBwcm92aWRlZCwgdGhlXG4gICBgYHJldmVyc2VkKClgYCBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2VcbiAgIHByb3RvY29sIChgYF9fbGVuX18oKWBgIGFuZCBgYF9fZ2V0aXRlbV9fKClgYCkuICBPYmplY3RzIHRoYXRcbiAgIHN1cHBvcnQgdGhlIHNlcXVlbmNlIHByb3RvY29sIHNob3VsZCBvbmx5IHByb3ZpZGVcbiAgIGBgX19yZXZlcnNlZF9fKClgYCBpZiB0aGV5IGNhbiBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIHRoYXQgaXNcbiAgIG1vcmUgZWZmaWNpZW50IHRoYW4gdGhlIG9uZSBwcm92aWRlZCBieSBgYHJldmVyc2VkKClgYC5cblxuVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKGBgaW5gYCBhbmQgYGBub3QgaW5gYCkgYXJlIG5vcm1hbGx5XG5pbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgY29udGFpbmVyXG5vYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSBlZmZpY2llbnRcbmltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhIHNlcXVlbmNlLlxuXG5vYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCByZXR1cm4gdHJ1ZVxuICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgb2JqZWN0cywgdGhpc1xuICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSB2YWx1ZXMgb3JcbiAgIHRoZSBrZXktaXRlbSBwYWlycy5cblxuICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lIGBgX19jb250YWluc19fKClgYCwgdGhlIG1lbWJlcnNoaXBcbiAgIHRlc3QgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSBgYF9faXRlcl9fKClgYCwgdGhlbiB0aGUgb2xkXG4gICBzZXF1ZW5jZSBpdGVyYXRpb24gcHJvdG9jb2wgdmlhIGBgX19nZXRpdGVtX18oKWBgLCBzZWUgKnRoaXNcbiAgIHNlY3Rpb24gaW4gdGhlIGxhbmd1YWdlIHJlZmVyZW5jZSouXG5cblxuRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgb2JqZWN0cy5cbk1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlXG5wYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yXG5ub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuXG5vYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKGBgK2BgLCBgYC1gYCwgYGAqYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgLFxuICAgYGBkaXZtb2QoKWBgLCBgYHBvdygpYGAsIGBgKipgYCwgYGA8PGBgLCBgYD4+YGAsIGBgJmBgLCBgYF5gYCxcbiAgIGBgfGBgKS4gIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4ICsgeWBgLCB3aGVyZVxuICAgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX2FkZF9fKClgYCBtZXRob2QsXG4gICBgYHguX19hZGRfXyh5KWBgIGlzIGNhbGxlZC4gIFRoZSBgYF9fZGl2bW9kX18oKWBgIG1ldGhvZCBzaG91bGQgYmVcbiAgIHRoZSBlcXVpdmFsZW50IHRvIHVzaW5nIGBgX19mbG9vcmRpdl9fKClgYCBhbmQgYGBfX21vZF9fKClgYDsgaXRcbiAgIHNob3VsZCBub3QgYmUgcmVsYXRlZCB0byBgYF9fdHJ1ZWRpdl9fKClgYC4gIE5vdGUgdGhhdFxuICAgYGBfX3Bvd19fKClgYCBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHQgYW4gb3B0aW9uYWwgdGhpcmRcbiAgIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluIGBgcG93KClgYCBmdW5jdGlvblxuICAgaXMgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiBgYE5vdEltcGxlbWVudGVkYGAuXG5cbm9iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsXG4gICBgYGRpdm1vZCgpYGAsIGBgcG93KClgYCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLFxuICAgYGB8YGApIHdpdGggcmVmbGVjdGVkIChzd2FwcGVkKSBvcGVyYW5kcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5XG4gICBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nXG4gICBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLiBbMl0gIEZvclxuICAgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGBgeCAtIHlgYCwgd2hlcmUgKnkqIGlzIGFuXG4gICBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19yc3ViX18oKWBgIG1ldGhvZCxcbiAgIGBgeS5fX3JzdWJfXyh4KWBgIGlzIGNhbGxlZCBpZiBgYHguX19zdWJfXyh5KWBgIHJldHVybnNcbiAgICpOb3RJbXBsZW1lbnRlZCouXG5cbiAgIE5vdGUgdGhhdCB0ZXJuYXJ5IGBgcG93KClgYCB3aWxsIG5vdCB0cnkgY2FsbGluZyBgYF9fcnBvd19fKClgYFxuICAgKHRoZSBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cblxuICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSBsZWZ0IG9wZXJhbmRcJ3NcbiAgICAgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgcmVmbGVjdGVkIG1ldGhvZCBmb3IgdGhlXG4gICAgIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBsZWZ0IG9wZXJhbmRcJ3NcbiAgICAgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyBzdWJjbGFzc2VzIHRvXG4gICAgIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9yc1wnIG9wZXJhdGlvbnMuXG5cbm9iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkIGFyaXRobWV0aWNcbiAgIGFzc2lnbm1lbnRzIChgYCs9YGAsIGBgLT1gYCwgYGAqPWBgLCBgYC89YGAsIGBgLy89YGAsIGBgJT1gYCxcbiAgIGBgKio9YGAsIGBgPDw9YGAsIGBgPj49YGAsIGBgJj1gYCwgYGBePWBgLCBgYHw9YGApLiAgVGhlc2UgbWV0aG9kc1xuICAgc2hvdWxkIGF0dGVtcHQgdG8gZG8gdGhlIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kXG4gICByZXR1cm4gdGhlIHJlc3VsdCAod2hpY2ggY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLFxuICAgKnNlbGYqKS4gIElmIGEgc3BlY2lmaWMgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkXG4gICBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gdGhlIG5vcm1hbCBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCB0b1xuICAgZXhlY3V0ZSB0aGUgc3RhdGVtZW50IGBgeCArPSB5YGAsIHdoZXJlICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhXG4gICBjbGFzcyB0aGF0IGhhcyBhbiBgYF9faWFkZF9fKClgYCBtZXRob2QsIGBgeC5fX2lhZGRfXyh5KWBgIGlzXG4gICBjYWxsZWQuICBJZiAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGRvZXMgbm90IGRlZmluZSBhXG4gICBgYF9faWFkZF9fKClgYCBtZXRob2QsIGBgeC5fX2FkZF9fKHkpYGAgYW5kIGBgeS5fX3JhZGRfXyh4KWBgIGFyZVxuICAgY29uc2lkZXJlZCwgYXMgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiBgYHggKyB5YGAuXG5cbm9iamVjdC5fX25lZ19fKHNlbGYpXG5vYmplY3QuX19wb3NfXyhzZWxmKVxub2JqZWN0Ll9fYWJzX18oc2VsZilcbm9iamVjdC5fX2ludmVydF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoYGAtYGAsIGBgK2BgLFxuICAgYGBhYnMoKWBgIGFuZCBgYH5gYCkuXG5cbm9iamVjdC5fX2NvbXBsZXhfXyhzZWxmKVxub2JqZWN0Ll9faW50X18oc2VsZilcbm9iamVjdC5fX2Zsb2F0X18oc2VsZilcbm9iamVjdC5fX3JvdW5kX18oc2VsZlssIG5dKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgYGBjb21wbGV4KClgYCxcbiAgIGBgaW50KClgYCwgYGBmbG9hdCgpYGAgYW5kIGBgcm91bmQoKWBgLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mXG4gICB0aGUgYXBwcm9wcmlhdGUgdHlwZS5cblxub2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGBgb3BlcmF0b3IuaW5kZXgoKWBgLiAgQWxzbyBjYWxsZWQgd2hlbmV2ZXJcbiAgIFB5dGhvbiBuZWVkcyBhbiBpbnRlZ2VyIG9iamVjdCAoc3VjaCBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGVcbiAgIGJ1aWx0LWluIGBgYmluKClgYCwgYGBoZXgoKWBgIGFuZCBgYG9jdCgpYGAgZnVuY3Rpb25zKS4gTXVzdCByZXR1cm5cbiAgIGFuIGludGVnZXIuXG5cblxuV2l0aCBTdGF0ZW1lbnQgQ29udGV4dCBNYW5hZ2Vyc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5BICpjb250ZXh0IG1hbmFnZXIqIGlzIGFuIG9iamVjdCB0aGF0IGRlZmluZXMgdGhlIHJ1bnRpbWUgY29udGV4dCB0b1xuYmUgZXN0YWJsaXNoZWQgd2hlbiBleGVjdXRpbmcgYSBgYHdpdGhgYCBzdGF0ZW1lbnQuIFRoZSBjb250ZXh0XG5tYW5hZ2VyIGhhbmRsZXMgdGhlIGVudHJ5IGludG8sIGFuZCB0aGUgZXhpdCBmcm9tLCB0aGUgZGVzaXJlZCBydW50aW1lXG5jb250ZXh0IGZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCBtYW5hZ2VycyBhcmVcbm5vcm1hbGx5IGludm9rZWQgdXNpbmcgdGhlIGBgd2l0aGBgIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb25cbipUaGUgd2l0aCBzdGF0ZW1lbnQqKSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgdGhlaXJcbm1ldGhvZHMuXG5cblR5cGljYWwgdXNlcyBvZiBjb250ZXh0IG1hbmFnZXJzIGluY2x1ZGUgc2F2aW5nIGFuZCByZXN0b3JpbmcgdmFyaW91c1xua2luZHMgb2YgZ2xvYmFsIHN0YXRlLCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgcmVzb3VyY2VzLCBjbG9zaW5nIG9wZW5lZFxuZmlsZXMsIGV0Yy5cblxuRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29udGV4dCBtYW5hZ2Vycywgc2VlICpDb250ZXh0IE1hbmFnZXIgVHlwZXMqLlxuXG5vYmplY3QuX19lbnRlcl9fKHNlbGYpXG5cbiAgIEVudGVyIHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlIGBgd2l0aGBgXG4gICBzdGF0ZW1lbnQgd2lsbCBiaW5kIHRoaXMgbWV0aG9kXCdzIHJldHVybiB2YWx1ZSB0byB0aGUgdGFyZ2V0KHMpXG4gICBzcGVjaWZpZWQgaW4gdGhlIGBgYXNgYCBjbGF1c2Ugb2YgdGhlIHN0YXRlbWVudCwgaWYgYW55LlxuXG5vYmplY3QuX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuXG4gICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlIHBhcmFtZXRlcnNcbiAgIGRlc2NyaWJlIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhlIGNvbnRleHQgdG8gYmUgZXhpdGVkLiBJZiB0aGVcbiAgIGNvbnRleHQgd2FzIGV4aXRlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiwgYWxsIHRocmVlIGFyZ3VtZW50cyB3aWxsXG4gICBiZSBgYE5vbmVgYC5cblxuICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgdG8gc3VwcHJlc3MgdGhlXG4gICBleGNlcHRpb24gKGkuZS4sIHByZXZlbnQgaXQgZnJvbSBiZWluZyBwcm9wYWdhdGVkKSwgaXQgc2hvdWxkXG4gICByZXR1cm4gYSB0cnVlIHZhbHVlLiBPdGhlcndpc2UsIHRoZSBleGNlcHRpb24gd2lsbCBiZSBwcm9jZXNzZWRcbiAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuXG4gICBOb3RlIHRoYXQgYGBfX2V4aXRfXygpYGAgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlIHBhc3NlZC1pblxuICAgZXhjZXB0aW9uOyB0aGlzIGlzIHRoZSBjYWxsZXJcJ3MgcmVzcG9uc2liaWxpdHkuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuICAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvblxuICAgICAgYGB3aXRoYGAgc3RhdGVtZW50LlxuXG5cblNwZWNpYWwgbWV0aG9kIGxvb2t1cFxuPT09PT09PT09PT09PT09PT09PT09XG5cbkZvciBjdXN0b20gY2xhc3NlcywgaW1wbGljaXQgaW52b2NhdGlvbnMgb2Ygc3BlY2lhbCBtZXRob2RzIGFyZSBvbmx5XG5ndWFyYW50ZWVkIHRvIHdvcmsgY29ycmVjdGx5IGlmIGRlZmluZWQgb24gYW4gb2JqZWN0XCdzIHR5cGUsIG5vdCBpblxudGhlIG9iamVjdFwncyBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgVGhhdCBiZWhhdmlvdXIgaXMgdGhlIHJlYXNvbiB3aHlcbnRoZSBmb2xsb3dpbmcgY29kZSByYWlzZXMgYW4gZXhjZXB0aW9uOlxuXG4gICA+Pj4gY2xhc3MgQzpcbiAgIC4uLiAgICAgcGFzc1xuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXyA9IGxhbWJkYTogNVxuICAgPj4+IGxlbihjKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgVHlwZUVycm9yOiBvYmplY3Qgb2YgdHlwZSBcJ0NcJyBoYXMgbm8gbGVuKClcblxuVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBiZWhhdmlvdXIgbGllcyB3aXRoIGEgbnVtYmVyIG9mIHNwZWNpYWxcbm1ldGhvZHMgc3VjaCBhcyBgYF9faGFzaF9fKClgYCBhbmQgYGBfX3JlcHJfXygpYGAgdGhhdCBhcmUgaW1wbGVtZW50ZWRcbmJ5IGFsbCBvYmplY3RzLCBpbmNsdWRpbmcgdHlwZSBvYmplY3RzLiBJZiB0aGUgaW1wbGljaXQgbG9va3VwIG9mXG50aGVzZSBtZXRob2RzIHVzZWQgdGhlIGNvbnZlbnRpb25hbCBsb29rdXAgcHJvY2VzcywgdGhleSB3b3VsZCBmYWlsXG53aGVuIGludm9rZWQgb24gdGhlIHR5cGUgb2JqZWN0IGl0c2VsZjpcblxuICAgPj4+IDEgLl9faGFzaF9fKCkgPT0gaGFzaCgxKVxuICAgVHJ1ZVxuICAgPj4+IGludC5fX2hhc2hfXygpID09IGhhc2goaW50KVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgVHlwZUVycm9yOiBkZXNjcmlwdG9yIFwnX19oYXNoX19cJyBvZiBcJ2ludFwnIG9iamVjdCBuZWVkcyBhbiBhcmd1bWVudFxuXG5JbmNvcnJlY3RseSBhdHRlbXB0aW5nIHRvIGludm9rZSBhbiB1bmJvdW5kIG1ldGhvZCBvZiBhIGNsYXNzIGluIHRoaXNcbndheSBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgXCdtZXRhY2xhc3MgY29uZnVzaW9uXCcsIGFuZCBpcyBhdm9pZGVkXG5ieSBieXBhc3NpbmcgdGhlIGluc3RhbmNlIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHM6XG5cbiAgID4+PiB0eXBlKDEpLl9faGFzaF9fKDEpID09IGhhc2goMSlcbiAgIFRydWVcbiAgID4+PiB0eXBlKGludCkuX19oYXNoX18oaW50KSA9PSBoYXNoKGludClcbiAgIFRydWVcblxuSW4gYWRkaXRpb24gdG8gYnlwYXNzaW5nIGFueSBpbnN0YW5jZSBhdHRyaWJ1dGVzIGluIHRoZSBpbnRlcmVzdCBvZlxuY29ycmVjdG5lc3MsIGltcGxpY2l0IHNwZWNpYWwgbWV0aG9kIGxvb2t1cCBnZW5lcmFsbHkgYWxzbyBieXBhc3Nlc1xudGhlIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWV0aG9kIGV2ZW4gb2YgdGhlIG9iamVjdFwncyBtZXRhY2xhc3M6XG5cbiAgID4+PiBjbGFzcyBNZXRhKHR5cGUpOlxuICAgLi4uICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbiAgIC4uLiAgICAgICBwcmludCgiTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbiAgIC4uLiAgICAgICByZXR1cm4gdHlwZS5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gY2xhc3MgQyhvYmplY3QsIG1ldGFjbGFzcz1NZXRhKTpcbiAgIC4uLiAgICAgZGVmIF9fbGVuX18oc2VsZik6XG4gICAuLi4gICAgICAgICByZXR1cm4gMTBcbiAgIC4uLiAgICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgICAgcHJpbnQoIkNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbiAgIC4uLiAgICAgICAgIHJldHVybiBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXygqYXJncylcbiAgIC4uLlxuICAgPj4+IGMgPSBDKClcbiAgID4+PiBjLl9fbGVuX18oKSAgICAgICAgICAgICAgICAgIyBFeHBsaWNpdCBsb29rdXAgdmlhIGluc3RhbmNlXG4gICBDbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZFxuICAgMTBcbiAgID4+PiB0eXBlKGMpLl9fbGVuX18oYykgICAgICAgICAgIyBFeHBsaWNpdCBsb29rdXAgdmlhIHR5cGVcbiAgIE1ldGFjbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZFxuICAgMTBcbiAgID4+PiBsZW4oYykgICAgICAgICAgICAgICAgICAgICAgIyBJbXBsaWNpdCBsb29rdXBcbiAgIDEwXG5cbkJ5cGFzc2luZyB0aGUgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBtYWNoaW5lcnkgaW4gdGhpcyBmYXNoaW9uXG5wcm92aWRlcyBzaWduaWZpY2FudCBzY29wZSBmb3Igc3BlZWQgb3B0aW1pc2F0aW9ucyB3aXRoaW4gdGhlXG5pbnRlcnByZXRlciwgYXQgdGhlIGNvc3Qgb2Ygc29tZSBmbGV4aWJpbGl0eSBpbiB0aGUgaGFuZGxpbmcgb2ZcbnNwZWNpYWwgbWV0aG9kcyAodGhlIHNwZWNpYWwgbWV0aG9kICptdXN0KiBiZSBzZXQgb24gdGhlIGNsYXNzIG9iamVjdFxuaXRzZWxmIGluIG9yZGVyIHRvIGJlIGNvbnNpc3RlbnRseSBpbnZva2VkIGJ5IHRoZSBpbnRlcnByZXRlcikuXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gSXQgKmlzKiBwb3NzaWJsZSBpbiBzb21lIGNhc2VzIHRvIGNoYW5nZSBhbiBvYmplY3RcJ3MgdHlwZSwgdW5kZXJcbiAgICBjZXJ0YWluIGNvbnRyb2xsZWQgY29uZGl0aW9ucy4gSXQgZ2VuZXJhbGx5IGlzblwndCBhIGdvb2QgaWRlYVxuICAgIHRob3VnaCwgc2luY2UgaXQgY2FuIGxlYWQgdG8gc29tZSB2ZXJ5IHN0cmFuZ2UgYmVoYXZpb3VyIGlmIGl0IGlzXG4gICAgaGFuZGxlZCBpbmNvcnJlY3RseS5cblxuWzJdIEZvciBvcGVyYW5kcyBvZiB0aGUgc2FtZSB0eXBlLCBpdCBpcyBhc3N1bWVkIHRoYXQgaWYgdGhlIG5vbi1cbiAgICByZWZsZWN0ZWQgbWV0aG9kIChzdWNoIGFzIGBgX19hZGRfXygpYGApIGZhaWxzIHRoZSBvcGVyYXRpb24gaXNcbiAgICBub3Qgc3VwcG9ydGVkLCB3aGljaCBpcyB3aHkgdGhlIHJlZmxlY3RlZCBtZXRob2QgaXMgbm90IGNhbGxlZC5cbicsCi0gJ3N0cmluZy1tZXRob2RzJzogJ1xuU3RyaW5nIE1ldGhvZHNcbioqKioqKioqKioqKioqXG5cblN0cmluZyBvYmplY3RzIHN1cHBvcnQgdGhlIG1ldGhvZHMgbGlzdGVkIGJlbG93LlxuXG5JbiBhZGRpdGlvbiwgUHl0aG9uXCdzIHN0cmluZ3Mgc3VwcG9ydCB0aGUgc2VxdWVuY2UgdHlwZSBtZXRob2RzXG5kZXNjcmliZWQgaW4gdGhlICpTZXF1ZW5jZSBUeXBlcyAtLS0gc3RyLCBieXRlcywgYnl0ZWFycmF5LCBsaXN0LFxudHVwbGUsIHJhbmdlKiBzZWN0aW9uLiBUbyBvdXRwdXQgZm9ybWF0dGVkIHN0cmluZ3MsIHNlZSB0aGUgKlN0cmluZ1xuRm9ybWF0dGluZyogc2VjdGlvbi4gQWxzbywgc2VlIHRoZSBgYHJlYGAgbW9kdWxlIGZvciBzdHJpbmcgZnVuY3Rpb25zXG5iYXNlZCBvbiByZWd1bGFyIGV4cHJlc3Npb25zLlxuXG5zdHIuY2FwaXRhbGl6ZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGl0cyBmaXJzdCBjaGFyYWN0ZXIgY2FwaXRhbGl6ZWRcbiAgIGFuZCB0aGUgcmVzdCBsb3dlcmNhc2VkLlxuXG5zdHIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIFBhZGRpbmcgaXMgZG9uZVxuICAgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGEgc3BhY2UpLlxuXG5zdHIuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyAqc3ViKlxuICAgaW4gdGhlIHJhbmdlIFsqc3RhcnQqLCAqZW5kKl0uICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmRcbiAgICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblxuc3RyLmVuY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpXG5cbiAgIFJldHVybiBhbiBlbmNvZGVkIHZlcnNpb24gb2YgdGhlIHN0cmluZyBhcyBhIGJ5dGVzIG9iamVjdC4gRGVmYXVsdFxuICAgZW5jb2RpbmcgaXMgYGBcJ3V0Zi04XCdgYC4gKmVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudFxuICAgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBUaGUgZGVmYXVsdCBmb3IgKmVycm9ycyogaXMgYGBcJ3N0cmljdFwnYGAsXG4gICBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgYGBVbmljb2RlRXJyb3JgYC4gT3RoZXJcbiAgIHBvc3NpYmxlIHZhbHVlcyBhcmUgYGBcJ2lnbm9yZVwnYGAsIGBgXCdyZXBsYWNlXCdgYCxcbiAgIGBgXCd4bWxjaGFycmVmcmVwbGFjZVwnYGAsIGBgXCdiYWNrc2xhc2hyZXBsYWNlXCdgYCBhbmQgYW55IG90aGVyIG5hbWVcbiAgIHJlZ2lzdGVyZWQgdmlhIGBgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKClgYCwgc2VlIHNlY3Rpb24gKkNvZGVjIEJhc2VcbiAgIENsYXNzZXMqLiBGb3IgYSBsaXN0IG9mIHBvc3NpYmxlIGVuY29kaW5ncywgc2VlIHNlY3Rpb24gKlN0YW5kYXJkXG4gICBFbmNvZGluZ3MqLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBrZXl3b3JkIGFyZ3VtZW50cyBhZGRlZC5cblxuc3RyLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkICpzdWZmaXgqLFxuICAgb3RoZXJ3aXNlIHJldHVybiBgYEZhbHNlYGAuICAqc3VmZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mXG4gICBzdWZmaXhlcyB0byBsb29rIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBiZWdpbm5pbmcgYXRcbiAgIHRoYXQgcG9zaXRpb24uICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi5cblxuc3RyLmV4cGFuZHRhYnMoW3RhYnNpemVdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgYWxsIHRhYiBjaGFyYWN0ZXJzIGFyZSByZXBsYWNlZFxuICAgYnkgemVybyBvciBtb3JlIHNwYWNlcywgZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50IGNvbHVtbiBhbmQgdGhlXG4gICBnaXZlbiB0YWIgc2l6ZS4gIFRoZSBjb2x1bW4gbnVtYmVyIGlzIHJlc2V0IHRvIHplcm8gYWZ0ZXIgZWFjaFxuICAgbmV3bGluZSBvY2N1cnJpbmcgaW4gdGhlIHN0cmluZy4gSWYgKnRhYnNpemUqIGlzIG5vdCBnaXZlbiwgYSB0YWJcbiAgIHNpemUgb2YgYGA4YGAgY2hhcmFjdGVycyBpcyBhc3N1bWVkLiAgVGhpcyBkb2VzblwndCB1bmRlcnN0YW5kIG90aGVyXG4gICBub24tcHJpbnRpbmcgY2hhcmFjdGVycyBvciBlc2NhcGUgc2VxdWVuY2VzLlxuXG5zdHIuZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgaW4gdGhlIHNsaWNlIGBgc1tzdGFydDplbmRdYGAuXG4gICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlXG4gICBub3RhdGlvbi4gIFJldHVybiBgYC0xYGAgaWYgKnN1YiogaXMgbm90IGZvdW5kLlxuXG4gICBOb3RlOiBUaGUgYGBmaW5kKClgYCBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgb25seSBpZiB5b3UgbmVlZCB0byBrbm93IHRoZVxuICAgICBwb3NpdGlvbiBvZiAqc3ViKi4gIFRvIGNoZWNrIGlmICpzdWIqIGlzIGEgc3Vic3RyaW5nIG9yIG5vdCwgdXNlXG4gICAgIHRoZSBgYGluYGAgb3BlcmF0b3I6XG5cbiAgICAgICAgPj4+IFwnUHlcJyBpbiBcJ1B5dGhvblwnXG4gICAgICAgIFRydWVcblxuc3RyLmZvcm1hdCgqYXJncywgKiprd2FyZ3MpXG5cbiAgIFBlcmZvcm0gYSBzdHJpbmcgZm9ybWF0dGluZyBvcGVyYXRpb24uICBUaGUgc3RyaW5nIG9uIHdoaWNoIHRoaXNcbiAgIG1ldGhvZCBpcyBjYWxsZWQgY2FuIGNvbnRhaW4gbGl0ZXJhbCB0ZXh0IG9yIHJlcGxhY2VtZW50IGZpZWxkc1xuICAgZGVsaW1pdGVkIGJ5IGJyYWNlcyBgYHt9YGAuICBFYWNoIHJlcGxhY2VtZW50IGZpZWxkIGNvbnRhaW5zIGVpdGhlclxuICAgdGhlIG51bWVyaWMgaW5kZXggb2YgYSBwb3NpdGlvbmFsIGFyZ3VtZW50LCBvciB0aGUgbmFtZSBvZiBhXG4gICBrZXl3b3JkIGFyZ3VtZW50LiAgUmV0dXJucyBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBlYWNoXG4gICByZXBsYWNlbWVudCBmaWVsZCBpcyByZXBsYWNlZCB3aXRoIHRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlXG4gICBjb3JyZXNwb25kaW5nIGFyZ3VtZW50LlxuXG4gICA+Pj4gIlRoZSBzdW0gb2YgMSArIDIgaXMgezB9Ii5mb3JtYXQoMSsyKVxuICAgXCdUaGUgc3VtIG9mIDEgKyAyIGlzIDNcJ1xuXG4gICBTZWUgKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgdmFyaW91c1xuICAgZm9ybWF0dGluZyBvcHRpb25zIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiBmb3JtYXQgc3RyaW5ncy5cblxuc3RyLmZvcm1hdF9tYXAobWFwcGluZylcblxuICAgU2ltaWxhciB0byBgYHN0ci5mb3JtYXQoKiptYXBwaW5nKWBgLCBleGNlcHQgdGhhdCBgYG1hcHBpbmdgYCBpc1xuICAgdXNlZCBkaXJlY3RseSBhbmQgbm90IGNvcGllZCB0byBhIGBgZGljdGBgIC4gIFRoaXMgaXMgdXNlZnVsIGlmIGZvclxuICAgZXhhbXBsZSBgYG1hcHBpbmdgYCBpcyBhIGRpY3Qgc3ViY2xhc3M6XG5cbiAgID4+PiBjbGFzcyBEZWZhdWx0KGRpY3QpOlxuICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBrZXlcbiAgIC4uLlxuICAgPj4+IFwne25hbWV9IHdhcyBib3JuIGluIHtjb3VudHJ5fVwnLmZvcm1hdF9tYXAoRGVmYXVsdChuYW1lPVwnR3VpZG9cJykpXG4gICBcJ0d1aWRvIHdhcyBib3JuIGluIGNvdW50cnlcJ1xuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbnN0ci5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBMaWtlIGBgZmluZCgpYGAsIGJ1dCByYWlzZSBgYFZhbHVlRXJyb3JgYCB3aGVuIHRoZSBzdWJzdHJpbmcgaXMgbm90XG4gICBmb3VuZC5cblxuc3RyLmlzYWxudW0oKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBhbHBoYW51bWVyaWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBIGNoYXJhY3RlclxuICAgYGBjYGAgaXMgYWxwaGFudW1lcmljIGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJldHVybnMgYGBUcnVlYGA6XG4gICBgYGMuaXNhbHBoYSgpYGAsIGBgYy5pc2RlY2ltYWwoKWBgLCBgYGMuaXNkaWdpdCgpYGAsIG9yXG4gICBgYGMuaXNudW1lcmljKClgYC5cblxuc3RyLmlzYWxwaGEoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBhbHBoYWJldGljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQWxwaGFiZXRpY1xuICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuICAgZGF0YWJhc2UgYXMgIkxldHRlciIsIGkuZS4sIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSBwcm9wZXJ0eVxuICAgYmVpbmcgb25lIG9mICJMbSIsICJMdCIsICJMdSIsICJMbCIsIG9yICJMbyIuICBOb3RlIHRoYXQgdGhpcyBpc1xuICAgZGlmZmVyZW50IGZyb20gdGhlICJBbHBoYWJldGljIiBwcm9wZXJ0eSBkZWZpbmVkIGluIHRoZSBVbmljb2RlXG4gICBTdGFuZGFyZC5cblxuc3RyLmlzZGVjaW1hbCgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRlY2ltYWwgY2hhcmFjdGVyc1xuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gRGVjaW1hbFxuICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgZnJvbSBnZW5lcmFsIGNhdGVnb3J5ICJOZCIuIFRoaXMgY2F0ZWdvcnlcbiAgIGluY2x1ZGVzIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyB0aGF0IGNhbiBiZSB1c2VkIHRvXG4gICBmb3JtIGRlY2ltYWwtcmFkaXggbnVtYmVycywgZS5nLiBVKzA2NjAsIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPLlxuXG5zdHIuaXNkaWdpdCgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRpZ2l0cyBhbmQgdGhlcmUgaXNcbiAgIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIERpZ2l0cyBpbmNsdWRlIGRlY2ltYWxcbiAgIGNoYXJhY3RlcnMgYW5kIGRpZ2l0cyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGluZywgc3VjaCBhcyB0aGVcbiAgIGNvbXBhdGliaWxpdHkgc3VwZXJzY3JpcHQgZGlnaXRzLiAgRm9ybWFsbHksIGEgZGlnaXQgaXMgYSBjaGFyYWN0ZXJcbiAgIHRoYXQgaGFzIHRoZSBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQgb3JcbiAgIE51bWVyaWNfVHlwZT1EZWNpbWFsLlxuXG5zdHIuaXNpZGVudGlmaWVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGlkZW50aWZpZXIgYWNjb3JkaW5nIHRvIHRoZVxuICAgbGFuZ3VhZ2UgZGVmaW5pdGlvbiwgc2VjdGlvbiAqSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzKi5cblxuc3RyLmlzbG93ZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgbG93ZXJjYXNlXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXNudW1lcmljKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgbnVtZXJpYyBjaGFyYWN0ZXJzLFxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gTnVtZXJpY1xuICAgY2hhcmFjdGVycyBpbmNsdWRlIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyB0aGF0IGhhdmVcbiAgIHRoZSBVbmljb2RlIG51bWVyaWMgdmFsdWUgcHJvcGVydHksIGUuZy4gVSsyMTU1LCBWVUxHQVIgRlJBQ1RJT05cbiAgIE9ORSBGSUZUSC4gIEZvcm1hbGx5LCBudW1lcmljIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggdGhlXG4gICBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQsIE51bWVyaWNfVHlwZT1EZWNpbWFsIG9yXG4gICBOdW1lcmljX1R5cGU9TnVtZXJpYy5cblxuc3RyLmlzcHJpbnRhYmxlKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgcHJpbnRhYmxlIG9yIHRoZVxuICAgc3RyaW5nIGlzIGVtcHR5LCBmYWxzZSBvdGhlcndpc2UuICBOb25wcmludGFibGUgY2hhcmFjdGVycyBhcmVcbiAgIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UgYXNcbiAgICJPdGhlciIgb3IgIlNlcGFyYXRvciIsIGV4Y2VwdGluZyB0aGUgQVNDSUkgc3BhY2UgKDB4MjApIHdoaWNoIGlzXG4gICBjb25zaWRlcmVkIHByaW50YWJsZS4gIChOb3RlIHRoYXQgcHJpbnRhYmxlIGNoYXJhY3RlcnMgaW4gdGhpc1xuICAgY29udGV4dCBhcmUgdGhvc2Ugd2hpY2ggc2hvdWxkIG5vdCBiZSBlc2NhcGVkIHdoZW4gYGByZXByKClgYCBpc1xuICAgaW52b2tlZCBvbiBhIHN0cmluZy4gIEl0IGhhcyBubyBiZWFyaW5nIG9uIHRoZSBoYW5kbGluZyBvZiBzdHJpbmdzXG4gICB3cml0dGVuIHRvIGBgc3lzLnN0ZG91dGBgIG9yIGBgc3lzLnN0ZGVycmBgLilcblxuc3RyLmlzc3BhY2UoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSBhcmUgb25seSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZ1xuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIFdoaXRlc3BhY2VcbiAgIGNoYXJhY3RlcnMgIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiT3RoZXIiIG9yICJTZXBhcmF0b3IiIGFuZCB0aG9zZSB3aXRoIGJpZGlyZWN0aW9uYWxcbiAgIHByb3BlcnR5IGJlaW5nIG9uZSBvZiAiV1MiLCAiQiIsIG9yICJTIi5cblxuc3RyLmlzdGl0bGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdGl0bGVjYXNlZCBzdHJpbmcgYW5kIHRoZXJlIGlzIGF0XG4gICBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmb3IgZXhhbXBsZSB1cHBlcmNhc2UgY2hhcmFjdGVycyBtYXkgb25seVxuICAgZm9sbG93IHVuY2FzZWQgY2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlIGNoYXJhY3RlcnMgb25seSBjYXNlZCBvbmVzLlxuICAgUmV0dXJuIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmlzdXBwZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgdXBwZXJjYXNlXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuam9pbihpdGVyYWJsZSlcblxuICAgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmdzIGluIHRoZVxuICAgKml0ZXJhYmxlKiAqaXRlcmFibGUqLiAgQSBgYFR5cGVFcnJvcmBgIHdpbGwgYmUgcmFpc2VkIGlmIHRoZXJlIGFyZVxuICAgYW55IG5vbi1zdHJpbmcgdmFsdWVzIGluICppdGVyYWJsZSosIGluY2x1ZGluZyBgYGJ5dGVzYGAgb2JqZWN0cy5cbiAgIFRoZSBzZXBhcmF0b3IgYmV0d2VlbiBlbGVtZW50cyBpcyB0aGUgc3RyaW5nIHByb3ZpZGluZyB0aGlzIG1ldGhvZC5cblxuc3RyLmxqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gdGhlIHN0cmluZyBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYVxuICAgc3BhY2UpLiAgVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gYGBsZW4ocylgYC5cblxuc3RyLmxvd2VyKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCBjaGFyYWN0ZXJzIFs0XVxuICAgY29udmVydGVkIHRvIGxvd2VyY2FzZS5cblxuc3RyLmxzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBsZWFkaW5nIGNoYXJhY3RlcnMgcmVtb3ZlZC4gIFRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0byBiZVxuICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgcHJlZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLmxzdHJpcCgpXG4gICBcJ3NwYWNpb3VzICAgXCdcbiAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLmxzdHJpcChcJ2Ntb3d6LlwnKVxuICAgXCdleGFtcGxlLmNvbVwnXG5cbnN0YXRpYyBzdHIubWFrZXRyYW5zKHhbLCB5Wywgel1dKVxuXG4gICBUaGlzIHN0YXRpYyBtZXRob2QgcmV0dXJucyBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSBmb3JcbiAgIGBgc3RyLnRyYW5zbGF0ZSgpYGAuXG5cbiAgIElmIHRoZXJlIGlzIG9ubHkgb25lIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgZGljdGlvbmFyeSBtYXBwaW5nXG4gICBVbmljb2RlIG9yZGluYWxzIChpbnRlZ2Vycykgb3IgY2hhcmFjdGVycyAoc3RyaW5ncyBvZiBsZW5ndGggMSkgdG9cbiAgIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3MgKG9mIGFyYml0cmFyeSBsZW5ndGhzKSBvciBOb25lLlxuICAgQ2hhcmFjdGVyIGtleXMgd2lsbCB0aGVuIGJlIGNvbnZlcnRlZCB0byBvcmRpbmFscy5cblxuICAgSWYgdGhlcmUgYXJlIHR3byBhcmd1bWVudHMsIHRoZXkgbXVzdCBiZSBzdHJpbmdzIG9mIGVxdWFsIGxlbmd0aCxcbiAgIGFuZCBpbiB0aGUgcmVzdWx0aW5nIGRpY3Rpb25hcnksIGVhY2ggY2hhcmFjdGVyIGluIHggd2lsbCBiZSBtYXBwZWRcbiAgIHRvIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4geS4gIElmIHRoZXJlIGlzIGEgdGhpcmRcbiAgIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgc3RyaW5nLCB3aG9zZSBjaGFyYWN0ZXJzIHdpbGwgYmUgbWFwcGVkIHRvXG4gICBOb25lIGluIHRoZSByZXN1bHQuXG5cbnN0ci5wYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBzdHJpbmcgaXRzZWxmLCBmb2xsb3dlZCBieVxuICAgdHdvIGVtcHR5IHN0cmluZ3MuXG5cbnN0ci5yZXBsYWNlKG9sZCwgbmV3WywgY291bnRdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpvbGQqXG4gICByZXBsYWNlZCBieSAqbmV3Ki4gIElmIHRoZSBvcHRpb25hbCBhcmd1bWVudCAqY291bnQqIGlzIGdpdmVuLCBvbmx5XG4gICB0aGUgZmlyc3QgKmNvdW50KiBvY2N1cnJlbmNlcyBhcmUgcmVwbGFjZWQuXG5cbnN0ci5yZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgKnN1YiogaXNcbiAgIGZvdW5kLCBzdWNoIHRoYXQgKnN1YiogaXMgY29udGFpbmVkIHdpdGhpbiBgYHNbc3RhcnQ6ZW5kXWBgLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gYGAtMWBgIG9uIGZhaWx1cmUuXG5cbnN0ci5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgTGlrZSBgYHJmaW5kKClgYCBidXQgcmFpc2VzIGBgVmFsdWVFcnJvcmBgIHdoZW4gdGhlIHN1YnN0cmluZyAqc3ViKlxuICAgaXMgbm90IGZvdW5kLlxuXG5zdHIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYVxuICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byBgYGxlbihzKWBgLlxuXG5zdHIucnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiBhXG4gICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3JcbiAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0d28gZW1wdHkgc3RyaW5ncywgZm9sbG93ZWQgYnlcbiAgIHRoZSBzdHJpbmcgaXRzZWxmLlxuXG5zdHIucnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KiBzcGxpdHNcbiAgIGFyZSBkb25lLCB0aGUgKnJpZ2h0bW9zdCogb25lcy4gIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3JcbiAgIGBgTm9uZWBgLCBhbnkgd2hpdGVzcGFjZSBzdHJpbmcgaXMgYSBzZXBhcmF0b3IuICBFeGNlcHQgZm9yXG4gICBzcGxpdHRpbmcgZnJvbSB0aGUgcmlnaHQsIGBgcnNwbGl0KClgYCBiZWhhdmVzIGxpa2UgYGBzcGxpdCgpYGBcbiAgIHdoaWNoIGlzIGRlc2NyaWJlZCBpbiBkZXRhaWwgYmVsb3cuXG5cbnN0ci5yc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG9cbiAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSBzdWZmaXg7IHJhdGhlcixcbiAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcucnN0cmlwKClcbiAgIFwnICAgc3BhY2lvdXNcJ1xuICAgPj4+IFwnbWlzc2lzc2lwcGlcJy5yc3RyaXAoXCdpcHpcJylcbiAgIFwnbWlzc2lzc1wnXG5cbnN0ci5zcGxpdChbc2VwWywgbWF4c3BsaXRdXSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlXG4gICBkZWxpbWl0ZXIgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqXG4gICBzcGxpdHMgYXJlIGRvbmUgKHRodXMsIHRoZSBsaXN0IHdpbGwgaGF2ZSBhdCBtb3N0IGBgbWF4c3BsaXQrMWBgXG4gICBlbGVtZW50cykuICBJZiAqbWF4c3BsaXQqIGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gdGhlcmUgaXMgbm8gbGltaXRcbiAgIG9uIHRoZSBudW1iZXIgb2Ygc3BsaXRzIChhbGwgcG9zc2libGUgc3BsaXRzIGFyZSBtYWRlKS5cblxuICAgSWYgKnNlcCogaXMgZ2l2ZW4sIGNvbnNlY3V0aXZlIGRlbGltaXRlcnMgYXJlIG5vdCBncm91cGVkIHRvZ2V0aGVyXG4gICBhbmQgYXJlIGRlZW1lZCB0byBkZWxpbWl0IGVtcHR5IHN0cmluZ3MgKGZvciBleGFtcGxlLFxuICAgYGBcJzEsLDJcJy5zcGxpdChcJyxcJylgYCByZXR1cm5zIGBgW1wnMVwnLCBcJ1wnLCBcJzJcJ11gYCkuICBUaGUgKnNlcCpcbiAgIGFyZ3VtZW50IG1heSBjb25zaXN0IG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLFxuICAgYGBcJzE8PjI8PjNcJy5zcGxpdChcJzw+XCcpYGAgcmV0dXJucyBgYFtcJzFcJywgXCcyXCcsIFwnM1wnXWBgKS4gU3BsaXR0aW5nXG4gICBhbiBlbXB0eSBzdHJpbmcgd2l0aCBhIHNwZWNpZmllZCBzZXBhcmF0b3IgcmV0dXJucyBgYFtcJ1wnXWBgLlxuXG4gICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzIGBgTm9uZWBgLCBhIGRpZmZlcmVudCBzcGxpdHRpbmdcbiAgIGFsZ29yaXRobSBpcyBhcHBsaWVkOiBydW5zIG9mIGNvbnNlY3V0aXZlIHdoaXRlc3BhY2UgYXJlIHJlZ2FyZGVkXG4gICBhcyBhIHNpbmdsZSBzZXBhcmF0b3IsIGFuZCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBubyBlbXB0eSBzdHJpbmdzXG4gICBhdCB0aGUgc3RhcnQgb3IgZW5kIGlmIHRoZSBzdHJpbmcgaGFzIGxlYWRpbmcgb3IgdHJhaWxpbmdcbiAgIHdoaXRlc3BhY2UuICBDb25zZXF1ZW50bHksIHNwbGl0dGluZyBhbiBlbXB0eSBzdHJpbmcgb3IgYSBzdHJpbmdcbiAgIGNvbnNpc3Rpbmcgb2YganVzdCB3aGl0ZXNwYWNlIHdpdGggYSBgYE5vbmVgYCBzZXBhcmF0b3IgcmV0dXJuc1xuICAgYGBbXWBgLlxuXG4gICBGb3IgZXhhbXBsZSwgYGBcJyAxICAyICAgMyAgXCcuc3BsaXQoKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnMlwnLCBcJzNcJ11gYCxcbiAgIGFuZCBgYFwnICAxICAyICAgMyAgXCcuc3BsaXQoTm9uZSwgMSlgYCByZXR1cm5zIGBgW1wnMVwnLCBcJzIgICAzICBcJ11gYC5cblxuc3RyLnNwbGl0bGluZXMoW2tlZXBlbmRzXSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIHN0cmluZywgYnJlYWtpbmcgYXQgbGluZVxuICAgYm91bmRhcmllcy4gIExpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0XG4gICB1bmxlc3MgKmtlZXBlbmRzKiBpcyBnaXZlbiBhbmQgdHJ1ZS5cblxuc3RyLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgKnByZWZpeCosIG90aGVyd2lzZVxuICAgcmV0dXJuIGBgRmFsc2VgYC4gKnByZWZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBwcmVmaXhlcyB0byBsb29rXG4gICBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3Qgc3RyaW5nIGJlZ2lubmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIHN0cmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi5cblxuc3RyLnN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZ1xuICAgY2hhcmFjdGVycyByZW1vdmVkLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZVxuICAgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmUgcmVtb3ZlZC4gSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHJlbW92aW5nIHdoaXRlc3BhY2UuIFRoZSAqY2hhcnMqXG4gICBhcmd1bWVudCBpcyBub3QgYSBwcmVmaXggb3Igc3VmZml4OyByYXRoZXIsIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzXG4gICB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnN0cmlwKClcbiAgIFwnc3BhY2lvdXNcJ1xuICAgPj4+IFwnd3d3LmV4YW1wbGUuY29tXCcuc3RyaXAoXCdjbW93ei5cJylcbiAgIFwnZXhhbXBsZVwnXG5cbnN0ci5zd2FwY2FzZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIGNvbnZlcnRlZCB0b1xuICAgbG93ZXJjYXNlIGFuZCB2aWNlIHZlcnNhLlxuXG5zdHIudGl0bGUoKVxuXG4gICBSZXR1cm4gYSB0aXRsZWNhc2VkIHZlcnNpb24gb2YgdGhlIHN0cmluZyB3aGVyZSB3b3JkcyBzdGFydCB3aXRoIGFuXG4gICB1cHBlcmNhc2UgY2hhcmFjdGVyIGFuZCB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIGxvd2VyY2FzZS5cblxuICAgVGhlIGFsZ29yaXRobSB1c2VzIGEgc2ltcGxlIGxhbmd1YWdlLWluZGVwZW5kZW50IGRlZmluaXRpb24gb2YgYVxuICAgd29yZCBhcyBncm91cHMgb2YgY29uc2VjdXRpdmUgbGV0dGVycy4gIFRoZSBkZWZpbml0aW9uIHdvcmtzIGluXG4gICBtYW55IGNvbnRleHRzIGJ1dCBpdCBtZWFucyB0aGF0IGFwb3N0cm9waGVzIGluIGNvbnRyYWN0aW9ucyBhbmRcbiAgIHBvc3Nlc3NpdmVzIGZvcm0gd29yZCBib3VuZGFyaWVzLCB3aGljaCBtYXkgbm90IGJlIHRoZSBkZXNpcmVkXG4gICByZXN1bHQ6XG5cbiAgICAgID4+PiAidGhleVwncmUgYmlsbFwncyBmcmllbmRzIGZyb20gdGhlIFVLIi50aXRsZSgpXG4gICAgICAiVGhleVwnUmUgQmlsbFwnUyBGcmllbmRzIEZyb20gVGhlIFVrIlxuXG4gICBBIHdvcmthcm91bmQgZm9yIGFwb3N0cm9waGVzIGNhbiBiZSBjb25zdHJ1Y3RlZCB1c2luZyByZWd1bGFyXG4gICBleHByZXNzaW9uczpcblxuICAgICAgPj4+IGltcG9ydCByZVxuICAgICAgPj4+IGRlZiB0aXRsZWNhc2Uocyk6XG4gICAgICAgICAgICAgIHJldHVybiByZS5zdWIociJbQS1aYS16XSsoXCdbQS1aYS16XSspPyIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIG1vOiBtby5ncm91cCgwKVswXS51cHBlcigpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vLmdyb3VwKDApWzE6XS5sb3dlcigpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMpXG5cbiAgICAgID4+PiB0aXRsZWNhc2UoInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcy4iKVxuICAgICAgIlRoZXlcJ3JlIEJpbGxcJ3MgRnJpZW5kcy4iXG5cbnN0ci50cmFuc2xhdGUobWFwKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSAqcyogd2hlcmUgYWxsIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIG1hcHBlZFxuICAgdGhyb3VnaCB0aGUgKm1hcCogd2hpY2ggbXVzdCBiZSBhIGRpY3Rpb25hcnkgb2YgVW5pY29kZSBvcmRpbmFsc1xuICAgKGludGVnZXJzKSB0byBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIG9yIGBgTm9uZWBgLiAgVW5tYXBwZWRcbiAgIGNoYXJhY3RlcnMgYXJlIGxlZnQgdW50b3VjaGVkLiBDaGFyYWN0ZXJzIG1hcHBlZCB0byBgYE5vbmVgYCBhcmVcbiAgIGRlbGV0ZWQuXG5cbiAgIFlvdSBjYW4gdXNlIGBgc3RyLm1ha2V0cmFucygpYGAgdG8gY3JlYXRlIGEgdHJhbnNsYXRpb24gbWFwIGZyb21cbiAgIGNoYXJhY3Rlci10by1jaGFyYWN0ZXIgbWFwcGluZ3MgaW4gZGlmZmVyZW50IGZvcm1hdHMuXG5cbiAgIE5vdGU6IEFuIGV2ZW4gbW9yZSBmbGV4aWJsZSBhcHByb2FjaCBpcyB0byBjcmVhdGUgYSBjdXN0b20gY2hhcmFjdGVyXG4gICAgIG1hcHBpbmcgY29kZWMgdXNpbmcgdGhlIGBgY29kZWNzYGAgbW9kdWxlIChzZWVcbiAgICAgYGBlbmNvZGluZ3MuY3AxMjUxYGAgZm9yIGFuIGV4YW1wbGUpLlxuXG5zdHIudXBwZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLiAgTm90ZSB0aGF0IGBgc3RyLnVwcGVyKCkuaXN1cHBlcigpYGAgbWlnaHRcbiAgIGJlIGBgRmFsc2VgYCBpZiBgYHNgYCBjb250YWlucyB1bmNhc2VkIGNoYXJhY3RlcnMgb3IgaWYgdGhlIFVuaWNvZGVcbiAgIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyKHMpIGlzIG5vdCAiTHUiIChMZXR0ZXIsXG4gICB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbnN0ci56ZmlsbCh3aWR0aClcblxuICAgUmV0dXJuIHRoZSBudW1lcmljIHN0cmluZyBsZWZ0IGZpbGxlZCB3aXRoIHplcm9zIGluIGEgc3RyaW5nIG9mXG4gICBsZW5ndGggKndpZHRoKi4gIEEgc2lnbiBwcmVmaXggaXMgaGFuZGxlZCBjb3JyZWN0bHkuICBUaGUgb3JpZ2luYWxcbiAgIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgYGxlbihzKWBgLlxuJywKLSAnc3RyaW5ncyc6ICdcblN0cmluZyBhbmQgQnl0ZXMgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuU3RyaW5nIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBzdHJpbmdsaXRlcmFsICAgOjo9IFtzdHJpbmdwcmVmaXhdKHNob3J0c3RyaW5nIHwgbG9uZ3N0cmluZylcbiAgIHN0cmluZ3ByZWZpeCAgICA6Oj0gInIiIHwgIlIiXG4gICBzaG9ydHN0cmluZyAgICAgOjo9ICJcJyIgc2hvcnRzdHJpbmdpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRzdHJpbmdpdGVtKiBcJyJcJ1xuICAgbG9uZ3N0cmluZyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nc3RyaW5naXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdzdHJpbmdpdGVtKiBcJyIiIlwnXG4gICBzaG9ydHN0cmluZ2l0ZW0gOjo9IHNob3J0c3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuICAgbG9uZ3N0cmluZ2l0ZW0gIDo6PSBsb25nc3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuICAgc2hvcnRzdHJpbmdjaGFyIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nc3RyaW5nY2hhciAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbiAgIHN0cmluZ2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IHNvdXJjZSBjaGFyYWN0ZXI+XG5cbiAgIGJ5dGVzbGl0ZXJhbCAgIDo6PSBieXRlc3ByZWZpeChzaG9ydGJ5dGVzIHwgbG9uZ2J5dGVzKVxuICAgYnl0ZXNwcmVmaXggICAgOjo9ICJiIiB8ICJCIiB8ICJiciIgfCAiQnIiIHwgImJSIiB8ICJCUiJcbiAgIHNob3J0Ynl0ZXMgICAgIDo6PSAiXCciIHNob3J0Ynl0ZXNpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRieXRlc2l0ZW0qIFwnIlwnXG4gICBsb25nYnl0ZXMgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ2J5dGVzaXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdieXRlc2l0ZW0qIFwnIiIiXCdcbiAgIHNob3J0Ynl0ZXNpdGVtIDo6PSBzaG9ydGJ5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBsb25nYnl0ZXNpdGVtICA6Oj0gbG9uZ2J5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBzaG9ydGJ5dGVzY2hhciA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nYnl0ZXNjaGFyICA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCI+XG4gICBieXRlc2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IEFTQ0lJIGNoYXJhY3Rlcj5cblxuT25lIHN5bnRhY3RpYyByZXN0cmljdGlvbiBub3QgaW5kaWNhdGVkIGJ5IHRoZXNlIHByb2R1Y3Rpb25zIGlzIHRoYXRcbndoaXRlc3BhY2UgaXMgbm90IGFsbG93ZWQgYmV0d2VlbiB0aGUgYGBzdHJpbmdwcmVmaXhgYCBvclxuYGBieXRlc3ByZWZpeGBgIGFuZCB0aGUgcmVzdCBvZiB0aGUgbGl0ZXJhbC4gVGhlIHNvdXJjZSBjaGFyYWN0ZXIgc2V0XG5pcyBkZWZpbmVkIGJ5IHRoZSBlbmNvZGluZyBkZWNsYXJhdGlvbjsgaXQgaXMgVVRGLTggaWYgbm8gZW5jb2RpbmdcbmRlY2xhcmF0aW9uIGlzIGdpdmVuIGluIHRoZSBzb3VyY2UgZmlsZTsgc2VlIHNlY3Rpb24gKkVuY29kaW5nXG5kZWNsYXJhdGlvbnMqLlxuXG5JbiBwbGFpbiBFbmdsaXNoOiBCb3RoIHR5cGVzIG9mIGxpdGVyYWxzIGNhbiBiZSBlbmNsb3NlZCBpbiBtYXRjaGluZ1xuc2luZ2xlIHF1b3RlcyAoYGBcJ2BgKSBvciBkb3VibGUgcXVvdGVzIChgYCJgYCkuICBUaGV5IGNhbiBhbHNvIGJlXG5lbmNsb3NlZCBpbiBtYXRjaGluZyBncm91cHMgb2YgdGhyZWUgc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMgKHRoZXNlXG5hcmUgZ2VuZXJhbGx5IHJlZmVycmVkIHRvIGFzICp0cmlwbGUtcXVvdGVkIHN0cmluZ3MqKS4gIFRoZSBiYWNrc2xhc2hcbihgYFxcYGApIGNoYXJhY3RlciBpcyB1c2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgb3RoZXJ3aXNlIGhhdmUgYVxuc3BlY2lhbCBtZWFuaW5nLCBzdWNoIGFzIG5ld2xpbmUsIGJhY2tzbGFzaCBpdHNlbGYsIG9yIHRoZSBxdW90ZVxuY2hhcmFjdGVyLlxuXG5CeXRlcyBsaXRlcmFscyBhcmUgYWx3YXlzIHByZWZpeGVkIHdpdGggYGBcJ2JcJ2BgIG9yIGBgXCdCXCdgYDsgdGhleVxucHJvZHVjZSBhbiBpbnN0YW5jZSBvZiB0aGUgYGBieXRlc2BgIHR5cGUgaW5zdGVhZCBvZiB0aGUgYGBzdHJgYCB0eXBlLlxuVGhleSBtYXkgb25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnM7IGJ5dGVzIHdpdGggYSBudW1lcmljIHZhbHVlIG9mXG4xMjggb3IgZ3JlYXRlciBtdXN0IGJlIGV4cHJlc3NlZCB3aXRoIGVzY2FwZXMuXG5cbkJvdGggc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBtYXkgb3B0aW9uYWxseSBiZSBwcmVmaXhlZCB3aXRoIGFcbmxldHRlciBgYFwnclwnYGAgb3IgYGBcJ1JcJ2BgOyBzdWNoIHN0cmluZ3MgYXJlIGNhbGxlZCAqcmF3IHN0cmluZ3MqIGFuZFxudHJlYXQgYmFja3NsYXNoZXMgYXMgbGl0ZXJhbCBjaGFyYWN0ZXJzLiAgQXMgYSByZXN1bHQsIGluIHN0cmluZ1xubGl0ZXJhbHMsIGBgXCdcXFVcJ2BgIGFuZCBgYFwnXFx1XCdgYCBlc2NhcGVzIGluIHJhdyBzdHJpbmdzIGFyZSBub3QgdHJlYXRlZFxuc3BlY2lhbGx5LlxuXG5JbiB0cmlwbGUtcXVvdGVkIHN0cmluZ3MsIHVuZXNjYXBlZCBuZXdsaW5lcyBhbmQgcXVvdGVzIGFyZSBhbGxvd2VkXG4oYW5kIGFyZSByZXRhaW5lZCksIGV4Y2VwdCB0aGF0IHRocmVlIHVuZXNjYXBlZCBxdW90ZXMgaW4gYSByb3dcbnRlcm1pbmF0ZSB0aGUgc3RyaW5nLiAgKEEgInF1b3RlIiBpcyB0aGUgY2hhcmFjdGVyIHVzZWQgdG8gb3BlbiB0aGVcbnN0cmluZywgaS5lLiBlaXRoZXIgYGBcJ2BgIG9yIGBgImBgLilcblxuVW5sZXNzIGFuIGBgXCdyXCdgYCBvciBgYFwnUlwnYGAgcHJlZml4IGlzIHByZXNlbnQsIGVzY2FwZSBzZXF1ZW5jZXMgaW5cbnN0cmluZ3MgYXJlIGludGVycHJldGVkIGFjY29yZGluZyB0byBydWxlcyBzaW1pbGFyIHRvIHRob3NlIHVzZWQgYnlcblN0YW5kYXJkIEMuICBUaGUgcmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZTpcblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgfFxuKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xufCBgYFxcbmV3bGluZWBgICAgICAgfCBCYWNrc2xhc2ggYW5kIG5ld2xpbmUgaWdub3JlZCAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXFxcYGAgICAgICAgICAgICB8IEJhY2tzbGFzaCAoYGBcXGBgKSAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXFwnYGAgICAgICAgICAgICB8IFNpbmdsZSBxdW90ZSAoYGBcJ2BgKSAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXCJgYCAgICAgICAgICAgIHwgRG91YmxlIHF1b3RlIChgYCJgYCkgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxhYGAgICAgICAgICAgICB8IEFTQ0lJIEJlbGwgKEJFTCkgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcYmBgICAgICAgICAgICAgfCBBU0NJSSBCYWNrc3BhY2UgKEJTKSAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXGZgYCAgICAgICAgICAgIHwgQVNDSUkgRm9ybWZlZWQgKEZGKSAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxuYGAgICAgICAgICAgICB8IEFTQ0lJIExpbmVmZWVkIChMRikgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxccmBgICAgICAgICAgICAgfCBBU0NJSSBDYXJyaWFnZSBSZXR1cm4gKENSKSAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHRgYCAgICAgICAgICAgIHwgQVNDSUkgSG9yaXpvbnRhbCBUYWIgKFRBQikgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFx2YGAgICAgICAgICAgICB8IEFTQ0lJIFZlcnRpY2FsIFRhYiAoVlQpICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcb29vYGAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBvY3RhbCB2YWx1ZSAqb29vKiAgfCAoMSwzKSAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHhoaGBgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggaGV4IHZhbHVlICpoaCogICAgIHwgKDIsMykgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG5cbkVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZyBsaXRlcmFscyBhcmU6XG5cbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgRXNjYXBlIFNlcXVlbmNlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgIHxcbis9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbnwgYGBcXE57bmFtZX1gYCAgICAgIHwgQ2hhcmFjdGVyIG5hbWVkICpuYW1lKiBpbiB0aGUgICAgIHwgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgVW5pY29kZSBkYXRhYmFzZSAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFx1eHh4eGBgICAgICAgICB8IENoYXJhY3RlciB3aXRoIDE2LWJpdCBoZXggdmFsdWUgICB8ICg0KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8ICp4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcVXh4eHh4eHh4YGAgICAgfCBDaGFyYWN0ZXIgd2l0aCAzMi1iaXQgaGV4IHZhbHVlICAgfCAoNSkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCAqeHh4eHh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuIEFzIGluIFN0YW5kYXJkIEMsIHVwIHRvIHRocmVlIG9jdGFsIGRpZ2l0cyBhcmUgYWNjZXB0ZWQuXG5cbjIuIFVubGlrZSBpbiBTdGFuZGFyZCBDLCBleGFjdGx5IHR3byBoZXggZGlnaXRzIGFyZSByZXF1aXJlZC5cblxuMy4gSW4gYSBieXRlcyBsaXRlcmFsLCBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgZXNjYXBlcyBkZW5vdGUgdGhlIGJ5dGVcbiAgIHdpdGggdGhlIGdpdmVuIHZhbHVlLiBJbiBhIHN0cmluZyBsaXRlcmFsLCB0aGVzZSBlc2NhcGVzIGRlbm90ZSBhXG4gICBVbmljb2RlIGNoYXJhY3RlciB3aXRoIHRoZSBnaXZlbiB2YWx1ZS5cblxuNC4gSW5kaXZpZHVhbCBjb2RlIHVuaXRzIHdoaWNoIGZvcm0gcGFydHMgb2YgYSBzdXJyb2dhdGUgcGFpciBjYW4gYmVcbiAgIGVuY29kZWQgdXNpbmcgdGhpcyBlc2NhcGUgc2VxdWVuY2UuICBFeGFjdGx5IGZvdXIgaGV4IGRpZ2l0cyBhcmVcbiAgIHJlcXVpcmVkLlxuXG41LiBBbnkgVW5pY29kZSBjaGFyYWN0ZXIgY2FuIGJlIGVuY29kZWQgdGhpcyB3YXksIGJ1dCBjaGFyYWN0ZXJzXG4gICBvdXRzaWRlIHRoZSBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUgKEJNUCkgd2lsbCBiZSBlbmNvZGVkIHVzaW5nIGFcbiAgIHN1cnJvZ2F0ZSBwYWlyIGlmIFB5dGhvbiBpcyBjb21waWxlZCB0byB1c2UgMTYtYml0IGNvZGUgdW5pdHMgKHRoZVxuICAgZGVmYXVsdCkuICBFeGFjdGx5IGVpZ2h0IGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG5Vbmxpa2UgU3RhbmRhcmQgQywgYWxsIHVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBsZWZ0IGluIHRoZVxuc3RyaW5nIHVuY2hhbmdlZCwgaS5lLiwgKnRoZSBiYWNrc2xhc2ggaXMgbGVmdCBpbiB0aGUgc3RyaW5nKi4gIChUaGlzXG5iZWhhdmlvciBpcyB1c2VmdWwgd2hlbiBkZWJ1Z2dpbmc6IGlmIGFuIGVzY2FwZSBzZXF1ZW5jZSBpcyBtaXN0eXBlZCxcbnRoZSByZXN1bHRpbmcgb3V0cHV0IGlzIG1vcmUgZWFzaWx5IHJlY29nbml6ZWQgYXMgYnJva2VuLikgIEl0IGlzIGFsc29cbmltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIGVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZ1xubGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3IgYnl0ZXNcbmxpdGVyYWxzLlxuXG5FdmVuIGluIGEgcmF3IHN0cmluZywgc3RyaW5nIHF1b3RlcyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLFxuYnV0IHRoZSBiYWNrc2xhc2ggcmVtYWlucyBpbiB0aGUgc3RyaW5nOyBmb3IgZXhhbXBsZSwgYGByIlxcIiJgYCBpcyBhXG52YWxpZCBzdHJpbmcgbGl0ZXJhbCBjb25zaXN0aW5nIG9mIHR3byBjaGFyYWN0ZXJzOiBhIGJhY2tzbGFzaCBhbmQgYVxuZG91YmxlIHF1b3RlOyBgYHIiXFwiYGAgaXMgbm90IGEgdmFsaWQgc3RyaW5nIGxpdGVyYWwgKGV2ZW4gYSByYXdcbnN0cmluZyBjYW5ub3QgZW5kIGluIGFuIG9kZCBudW1iZXIgb2YgYmFja3NsYXNoZXMpLiAgU3BlY2lmaWNhbGx5LCAqYVxucmF3IHN0cmluZyBjYW5ub3QgZW5kIGluIGEgc2luZ2xlIGJhY2tzbGFzaCogKHNpbmNlIHRoZSBiYWNrc2xhc2hcbndvdWxkIGVzY2FwZSB0aGUgZm9sbG93aW5nIHF1b3RlIGNoYXJhY3RlcikuICBOb3RlIGFsc28gdGhhdCBhIHNpbmdsZVxuYmFja3NsYXNoIGZvbGxvd2VkIGJ5IGEgbmV3bGluZSBpcyBpbnRlcnByZXRlZCBhcyB0aG9zZSB0d28gY2hhcmFjdGVyc1xuYXMgcGFydCBvZiB0aGUgc3RyaW5nLCAqbm90KiBhcyBhIGxpbmUgY29udGludWF0aW9uLlxuJywKKyAnc3BlY2lhbGF0dHJzJzogJ1xuU3BlY2lhbCBBdHRyaWJ1dGVzXG4qKioqKioqKioqKioqKioqKipcblxuVGhlIGltcGxlbWVudGF0aW9uIGFkZHMgYSBmZXcgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlcyB0byBzZXZlcmFsXG5vYmplY3QgdHlwZXMsIHdoZXJlIHRoZXkgYXJlIHJlbGV2YW50LiAgU29tZSBvZiB0aGVzZSBhcmUgbm90IHJlcG9ydGVkXG5ieSB0aGUgYGBkaXIoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uLlxuXG5vYmplY3QuX19kaWN0X19cblxuICAgQSBkaWN0aW9uYXJ5IG9yIG90aGVyIG1hcHBpbmcgb2JqZWN0IHVzZWQgdG8gc3RvcmUgYW4gb2JqZWN0XCdzXG4gICAod3JpdGFibGUpIGF0dHJpYnV0ZXMuXG5cbmluc3RhbmNlLl9fY2xhc3NfX1xuXG4gICBUaGUgY2xhc3MgdG8gd2hpY2ggYSBjbGFzcyBpbnN0YW5jZSBiZWxvbmdzLlxuXG5jbGFzcy5fX2Jhc2VzX19cblxuICAgVGhlIHR1cGxlIG9mIGJhc2UgY2xhc3NlcyBvZiBhIGNsYXNzIG9iamVjdC5cblxuY2xhc3MuX19uYW1lX19cblxuICAgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIG9yIHR5cGUuXG5cbmNsYXNzLl9fcXVhbG5hbWVfX1xuXG4gICBUaGUgKnF1YWxpZmllZCBuYW1lKiBvZiB0aGUgY2xhc3Mgb3IgdHlwZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zLlxuXG5jbGFzcy5fX21yb19fXG5cbiAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkIHdoZW5cbiAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG5cbmNsYXNzLm1ybygpXG5cbiAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSB0aGVcbiAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkIGF0IGNsYXNzXG4gICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gYGBfX21yb19fYGAuXG5cbmNsYXNzLl9fc3ViY2xhc3Nlc19fKClcblxuICAgRWFjaCBjbGFzcyBrZWVwcyBhIGxpc3Qgb2Ygd2VhayByZWZlcmVuY2VzIHRvIGl0cyBpbW1lZGlhdGVcbiAgIHN1YmNsYXNzZXMuICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhvc2UgcmVmZXJlbmNlc1xuICAgc3RpbGwgYWxpdmUuIEV4YW1wbGU6XG5cbiAgICAgID4+PiBpbnQuX19zdWJjbGFzc2VzX18oKVxuICAgICAgWzxjbGFzcyBcJ2Jvb2xcJz5dXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGVzZSBzcGVjaWFsIG1ldGhvZHMgbWF5IGJlIGZvdW5kIGluXG4gICAgdGhlIFB5dGhvbiBSZWZlcmVuY2UgTWFudWFsICgqQmFzaWMgY3VzdG9taXphdGlvbiopLlxuXG5bMl0gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGxpc3QgYGBbMSwgMl1gYCBpcyBjb25zaWRlcmVkIGVxdWFsIHRvXG4gICAgYGBbMS4wLCAyLjBdYGAsIGFuZCBzaW1pbGFybHkgZm9yIHR1cGxlcy5cblxuWzNdIFRoZXkgbXVzdCBoYXZlIHNpbmNlIHRoZSBwYXJzZXIgY2FuXCd0IHRlbGwgdGhlIHR5cGUgb2YgdGhlXG4gICAgb3BlcmFuZHMuXG5cbls0XSBDYXNlZCBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHkgYmVpbmdcbiAgICBvbmUgb2YgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCAiTGwiIChMZXR0ZXIsIGxvd2VyY2FzZSksIG9yICJMdCJcbiAgICAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG5bNV0gVG8gZm9ybWF0IG9ubHkgYSB0dXBsZSB5b3Ugc2hvdWxkIHRoZXJlZm9yZSBwcm92aWRlIGEgc2luZ2xldG9uXG4gICAgdHVwbGUgd2hvc2Ugb25seSBlbGVtZW50IGlzIHRoZSB0dXBsZSB0byBiZSBmb3JtYXR0ZWQuXG4nLAorICdzcGVjaWFsbmFtZXMnOiAnXG5TcGVjaWFsIG1ldGhvZCBuYW1lc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBjbGFzcyBjYW4gaW1wbGVtZW50IGNlcnRhaW4gb3BlcmF0aW9ucyB0aGF0IGFyZSBpbnZva2VkIGJ5IHNwZWNpYWxcbnN5bnRheCAoc3VjaCBhcyBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3Igc3Vic2NyaXB0aW5nIGFuZCBzbGljaW5nKSBieVxuZGVmaW5pbmcgbWV0aG9kcyB3aXRoIHNwZWNpYWwgbmFtZXMuIFRoaXMgaXMgUHl0aG9uXCdzIGFwcHJvYWNoIHRvXG4qb3BlcmF0b3Igb3ZlcmxvYWRpbmcqLCBhbGxvd2luZyBjbGFzc2VzIHRvIGRlZmluZSB0aGVpciBvd24gYmVoYXZpb3JcbndpdGggcmVzcGVjdCB0byBsYW5ndWFnZSBvcGVyYXRvcnMuICBGb3IgaW5zdGFuY2UsIGlmIGEgY2xhc3MgZGVmaW5lc1xuYSBtZXRob2QgbmFtZWQgYGBfX2dldGl0ZW1fXygpYGAsIGFuZCBgYHhgYCBpcyBhbiBpbnN0YW5jZSBvZiB0aGlzXG5jbGFzcywgdGhlbiBgYHhbaV1gYCBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gYGB0eXBlKHgpLl9fZ2V0aXRlbV9fKHgsXG5pKWBgLiAgRXhjZXB0IHdoZXJlIG1lbnRpb25lZCwgYXR0ZW1wdHMgdG8gZXhlY3V0ZSBhbiBvcGVyYXRpb24gcmFpc2VcbmFuIGV4Y2VwdGlvbiB3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICh0eXBpY2FsbHlcbmBgQXR0cmlidXRlRXJyb3JgYCBvciBgYFR5cGVFcnJvcmBgKS5cblxuV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpc1xuaW1wb3J0YW50IHRoYXQgdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdFxubWFrZXMgc2Vuc2UgZm9yIHRoZSBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZVxuc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwgb2YgaW5kaXZpZHVhbCBlbGVtZW50cywgYnV0XG5leHRyYWN0aW5nIGEgc2xpY2UgbWF5IG5vdCBtYWtlIHNlbnNlLiAgKE9uZSBleGFtcGxlIG9mIHRoaXMgaXMgdGhlXG5gYE5vZGVMaXN0YGAgaW50ZXJmYWNlIGluIHRoZSBXM0NcJ3MgRG9jdW1lbnQgT2JqZWN0IE1vZGVsLilcblxuXG5CYXNpYyBjdXN0b21pemF0aW9uXG49PT09PT09PT09PT09PT09PT09XG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICBgYF9fbmV3X18oKWBgIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mIGBgX19uZXdfXygpYGAgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5XG4gICBhbiBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIHVzaW5nXG4gICBgYHN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pYGAgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgIGBgX19pbml0X18oc2VsZlssIC4uLl0pYGAsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICBgYF9fbmV3X18oKWBgIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjcmVhdGVkLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgIGBgX19pbml0X18oKWBgIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kLFxuICAgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mXG4gICB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICBgYEJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pYGAuICBBcyBhIHNwZWNpYWwgY29uc3RyYWludFxuICAgb24gY29uc3RydWN0b3JzLCBubyB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQ7IGRvaW5nIHNvIHdpbGwgY2F1c2UgYVxuICAgYGBUeXBlRXJyb3JgYCB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSBgYF9fZGVsX18oKWBgIG1ldGhvZCxcbiAgIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19kZWxfXygpYGAgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseVxuICAgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlXG4gICBpbnN0YW5jZS4gIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvclxuICAgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiBgYGRlbCB4YGAgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCBgYHguX19kZWxfXygpYGAgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciBgYHhgYCBieSBvbmUsIGFuZCB0aGUgbGF0dGVyXG4gICAgIGlzIG9ubHkgY2FsbGVkIHdoZW4gYGB4YGBcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWVcbiAgICAgY29tbW9uIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuXG4gICAgIG9iamVjdCBmcm9tIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuXG4gICAgIG9iamVjdHMgKGUuZy4sIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoXG4gICAgIHBhcmVudCBhbmQgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZVxuICAgICBzdGFjayBmcmFtZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFja1xuICAgICBzdG9yZWQgaW4gYGBzeXMuZXhjX2luZm8oKVsyXWBgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yXG4gICAgIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuXG4gICAgIHVuaGFuZGxlZCBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBsYXR0ZXIgdHdvIHNpdHVhdGlvbnMgY2FuIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgYGBOb25lYGAgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC4gQ2lyY3VsYXIgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmVcbiAgICAgZGV0ZWN0ZWQgd2hlbiB0aGUgb3B0aW9uIGN5Y2xlIGRldGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5XG4gICAgIGRlZmF1bHQpLCBidXQgY2FuIG9ubHkgYmUgY2xlYW5lZCB1cCBpZiB0aGVyZSBhcmUgbm8gUHl0aG9uLVxuICAgICBsZXZlbCBgYF9fZGVsX18oKWBgIG1ldGhvZHMgaW52b2x2ZWQuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uXG4gICAgIGZvciB0aGUgYGBnY2BgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjeWNsZSBkZXRlY3RvcixcbiAgICAgcGFydGljdWxhcmx5IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBnYXJiYWdlYGAgdmFsdWUuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZyB0aGVpciBleGVjdXRpb25cbiAgICAgYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0byBgYHN5cy5zdGRlcnJgYCBpbnN0ZWFkLlxuICAgICBBbHNvLCB3aGVuIGBgX19kZWxfXygpYGAgaXMgaW52b2tlZCBpbiByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZ1xuICAgICBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXJcbiAgICAgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlXG4gICAgIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyB0b3JuIGRvd24gKGUuZy4gdGhlXG4gICAgIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpcyByZWFzb24sIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkIHRvIG1haW50YWluXG4gICAgIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LCBQeXRob25cbiAgICAgZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgcmVwcigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGVcbiAgICJvZmZpY2lhbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSxcbiAgIHRoaXMgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZFxuICAgdG8gcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgIGBgPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPmBgIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyBgYF9fcmVwcl9fKClgYFxuICAgYnV0IG5vdCBgYF9fc3RyX18oKWBgLCB0aGVuIGBgX19yZXByX18oKWBgIGlzIGFsc28gdXNlZCB3aGVuIGFuXG4gICAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpc1xuICAgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYHN0cigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gYW5kIGJ5IHRoZSBgYHByaW50KClgYFxuICAgZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gIFRoaXMgZGlmZmVycyBmcm9tIGBgX19yZXByX18oKWBgIGluIHRoYXQgaXQgZG9lcyBub3QgaGF2ZVxuICAgdG8gYmUgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYSBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZVxuICAgcmVwcmVzZW50YXRpb24gbWF5IGJlIHVzZWQgaW5zdGVhZC4gVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGFcbiAgIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGBgYnl0ZXMoKWBgIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSBgYGJ5dGVzYGAgb2JqZWN0LlxuXG5vYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYGZvcm1hdCgpYGAgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgYGBmb3JtYXQoKWBgIG1ldGhvZCBvZiBjbGFzcyBgYHN0cmBgKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXNcbiAgIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpcyB1cFxuICAgdG8gdGhlIHR5cGUgaW1wbGVtZW50aW5nIGBgX19mb3JtYXRfXygpYGAsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzXG4gICB3aWxsIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yXG4gICB1c2UgYSBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG5vYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgaXMgYXNcbiAgIGZvbGxvd3M6IGBgeDx5YGAgY2FsbHMgYGB4Ll9fbHRfXyh5KWBgLCBgYHg8PXlgYCBjYWxsc1xuICAgYGB4Ll9fbGVfXyh5KWBgLCBgYHg9PXlgYCBjYWxscyBgYHguX19lcV9fKHkpYGAsIGBgeCE9eWBgIGNhbGxzXG4gICBgYHguX19uZV9fKHkpYGAsIGBgeD55YGAgY2FsbHMgYGB4Ll9fZ3RfXyh5KWBgLCBhbmQgYGB4Pj15YGAgY2FsbHNcbiAgIGBgeC5fX2dlX18oeSlgYC5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvblxuICAgYGBOb3RJbXBsZW1lbnRlZGBgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhXG4gICBnaXZlbiBwYWlyIG9mIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgYGBGYWxzZWBgIGFuZCBgYFRydWVgYCBhcmVcbiAgIHJldHVybmVkIGZvciBhIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW5cbiAgIHJldHVybiBhbnkgdmFsdWUsIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYVxuICAgQm9vbGVhbiBjb250ZXh0IChlLmcuLCBpbiB0aGUgY29uZGl0aW9uIG9mIGFuIGBgaWZgYCBzdGF0ZW1lbnQpLFxuICAgUHl0aG9uIHdpbGwgY2FsbCBgYGJvb2woKWBgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdFxuICAgaXMgdHJ1ZSBvciBmYWxzZS5cblxuICAgVGhlcmUgYXJlIG5vIGltcGxpZWQgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMuXG4gICBUaGUgdHJ1dGggb2YgYGB4PT15YGAgZG9lcyBub3QgaW1wbHkgdGhhdCBgYHghPXlgYCBpcyBmYWxzZS5cbiAgIEFjY29yZGluZ2x5LCB3aGVuIGRlZmluaW5nIGBgX19lcV9fKClgYCwgb25lIHNob3VsZCBhbHNvIGRlZmluZVxuICAgYGBfX25lX18oKWBgIHNvIHRoYXQgdGhlIG9wZXJhdG9ycyB3aWxsIGJlaGF2ZSBhcyBleHBlY3RlZC4gIFNlZVxuICAgdGhlIHBhcmFncmFwaCBvbiBgYF9faGFzaF9fKClgYCBmb3Igc29tZSBpbXBvcnRhbnQgbm90ZXMgb25cbiAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uXG4gICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cblxuICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAodG8gYmUgdXNlZFxuICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0IHRoZSByaWdodFxuICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgYGBfX2x0X18oKWBgIGFuZCBgYF9fZ3RfXygpYGAgYXJlIGVhY2hcbiAgIG90aGVyXCdzIHJlZmxlY3Rpb24sIGBgX19sZV9fKClgYCBhbmQgYGBfX2dlX18oKWBgIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCBhbmQgYGBfX2VxX18oKWBgIGFuZCBgYF9fbmVfXygpYGAgYXJlIHRoZWlyIG93blxuICAgcmVmbGVjdGlvbi5cblxuICAgQXJndW1lbnRzIHRvIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGFyZSBuZXZlciBjb2VyY2VkLlxuXG4gICBUbyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290XG4gICBvcGVyYXRpb24sIHNlZSBgYGZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpYGAuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gYGBoYXNoKClgYCBhbmQgZm9yIG9wZXJhdGlvbnMgb25cbiAgIG1lbWJlcnMgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyBgYHNldGBgLCBgYGZyb3plbnNldGBgLCBhbmRcbiAgIGBgZGljdGBgLiAgYGBfX2hhc2hfXygpYGAgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHlcbiAgIHJlcXVpcmVkIHByb3BlcnR5IGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWVcbiAgIGhhc2ggdmFsdWU7IGl0IGlzIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmdcbiAgIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2ggdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXRcbiAgIGFsc28gcGxheSBhIHBhcnQgaW4gY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiBgYF9fZXFfXygpYGAgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhIGBgX19oYXNoX18oKWBgIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXNcbiAgIGBgX19lcV9fKClgYCBidXQgbm90IGBgX19oYXNoX18oKWBgLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlXG4gICB1c2FibGUgYXMgaXRlbXMgaW4gaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG11dGFibGUgb2JqZWN0cyBhbmQgaW1wbGVtZW50cyBhbiBgYF9fZXFfXygpYGAgbWV0aG9kLCBpdCBzaG91bGRcbiAgIG5vdCBpbXBsZW1lbnQgYGBfX2hhc2hfXygpYGAsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZVxuICAgY29sbGVjdGlvbnMgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlXG4gICBvYmplY3RcJ3MgaGFzaCB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgYGBfX2VxX18oKWBgIGFuZCBgYF9faGFzaF9fKClgYCBtZXRob2RzXG4gICBieSBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGhcbiAgIHRoZW1zZWx2ZXMpIGFuZCBgYHguX19oYXNoX18oKWBgIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdmFsdWUgc3VjaFxuICAgdGhhdCBgYHggPT0geWBgIGltcGxpZXMgYm90aCB0aGF0IGBgeCBpcyB5YGAgYW5kIGBgaGFzaCh4KSA9PVxuICAgaGFzaCh5KWBgLlxuXG4gICBDbGFzc2VzIHdoaWNoIGluaGVyaXQgYSBgYF9faGFzaF9fKClgYCBtZXRob2QgZnJvbSBhIHBhcmVudCBjbGFzc1xuICAgYnV0IGNoYW5nZSB0aGUgbWVhbmluZyBvZiBgYF9fZXFfXygpYGAgc3VjaCB0aGF0IHRoZSBoYXNoIHZhbHVlXG4gICByZXR1cm5lZCBpcyBubyBsb25nZXIgYXBwcm9wcmlhdGUgKGUuZy4gYnkgc3dpdGNoaW5nIHRvIGEgdmFsdWUtXG4gICBiYXNlZCBjb25jZXB0IG9mIGVxdWFsaXR5IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgaWRlbnRpdHkgYmFzZWRcbiAgIGVxdWFsaXR5KSBjYW4gZXhwbGljaXRseSBmbGFnIHRoZW1zZWx2ZXMgYXMgYmVpbmcgdW5oYXNoYWJsZSBieVxuICAgc2V0dGluZyBgYF9faGFzaF9fID0gTm9uZWBgIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLiBEb2luZyBzbyBtZWFuc1xuICAgdGhhdCBub3Qgb25seSB3aWxsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MgcmFpc2UgYW4gYXBwcm9wcmlhdGVcbiAgIGBgVHlwZUVycm9yYGAgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSxcbiAgIGJ1dCB0aGV5IHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhcyB1bmhhc2hhYmxlIHdoZW5cbiAgIGNoZWNraW5nIGBgaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKWBgICh1bmxpa2UgY2xhc3Nlc1xuICAgd2hpY2ggZGVmaW5lIHRoZWlyIG93biBgYF9faGFzaF9fKClgYCB0byBleHBsaWNpdGx5IHJhaXNlXG4gICBgYFR5cGVFcnJvcmBgKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyBgYF9fZXFfXygpYGAgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgYGBfX2hhc2hfXygpYGAgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlXG4gICBpbnRlcnByZXRlciBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgYGBfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fYGAuIE90aGVyd2lzZSB0aGUgaW5oZXJpdGFuY2Ugb2ZcbiAgIGBgX19oYXNoX18oKWBgIHdpbGwgYmUgYmxvY2tlZCwganVzdCBhcyBpZiBgYF9faGFzaF9fYGAgaGFkIGJlZW5cbiAgIGV4cGxpY2l0bHkgc2V0IHRvIGBgTm9uZWBgLlxuXG4gICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgYGBfX2hhc2hfXygpYGAgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lXG4gICAgIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSByYW5kb20gdmFsdWUuXG4gICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvblxuICAgICBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZlxuICAgICBQeXRob24uVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhIGRlbmlhbC1cbiAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZVxuICAgICB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBpbnNlcnRpb24sIE8obl4yKSBjb21wbGV4aXR5LlxuICAgICBTZWUgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvclxuICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiBvcmRlciBvZlxuICAgICBkaWN0cywgc2V0cyBhbmQgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyIG1hZGUgZ3VhcmFudGVlc1xuICAgICBhYm91dCB0aGlzIG9yZGVyaW5nIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuIDMyLWJpdCBhbmRcbiAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gYGBQWVRIT05IQVNIU0VFRGBgLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICBgYGJvb2woKWBgOyBzaG91bGQgcmV0dXJuIGBgRmFsc2VgYCBvciBgYFRydWVgYC4gIFdoZW4gdGhpcyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCBgYF9fbGVuX18oKWBgIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZVxuICAgb2JqZWN0IGlzIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzXG4gICBkZWZpbmVzIG5laXRoZXIgYGBfX2xlbl9fKClgYCBub3IgYGBfX2Jvb2xfXygpYGAsIGFsbCBpdHMgaW5zdGFuY2VzXG4gICBhcmUgY29uc2lkZXJlZCB0cnVlLlxuXG5cbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiBgYHgubmFtZWBgKVxuZm9yIGNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgYGBzZWxmYGApLiAgYGBuYW1lYGAgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2VcbiAgIGFuIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICBgYF9fZ2V0YXR0cl9fKClgYCBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuIGBgX19nZXRhdHRyX18oKWBgIGFuZCBgYF9fc2V0YXR0cl9fKClgYC4pIFRoaXMgaXMgZG9uZSBib3RoXG4gICBmb3IgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSBgYF9fZ2V0YXR0cl9fKClgYFxuICAgd291bGQgaGF2ZSBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZVxuICAgdGhhdCBhdCBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieVxuICAgbm90IGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzXG4gICBgYF9fZ2V0YXR0cl9fKClgYCwgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzXG4gICBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIGVpdGhlciBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgLiBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpXG4gICBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi4gSW4gb3JkZXJcbiAgIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpbiB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uXG4gICBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0b1xuICAgYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3IgZXhhbXBsZSxcbiAgIGBgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlgYC5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHNcbiAgICAgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXggb3JcbiAgICAgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgYGBfX3NldGF0dHJfXygpYGAgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpYGAuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlIGBgX19zZXRhdHRyX18oKWBgIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmIGBgZGVsIG9iai5uYW1lYGAgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIGBgZGlyKClgYCBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gQSBzZXF1ZW5jZSBtdXN0IGJlXG4gICByZXR1cm5lZC4gYGBkaXIoKWBgIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhIGxpc3QgYW5kXG4gICBzb3J0cyBpdC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyBgYF9fZGljdF9fYGAuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciBgYE5vbmVgYCB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogIGBgX19nZXRfXygpYGAsIGBgX19zZXRfXygpYGAsIGFuZFxuYGBfX2RlbGV0ZV9fKClgYC4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCxcbml0IGlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgYGBhLnhgYCBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggYGBhLl9fZGljdF9fW1wneFwnXWBgLCB0aGVuXG5gYHR5cGUoYSkuX19kaWN0X19bXCd4XCddYGAsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuYGB0eXBlKGEpYGAgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC5cblxuVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCBgYGEueGBgLlxuSG93IHRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uIGBgYWBgOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICBgYHguX19nZXRfXyhhKWBgLlxuXG5JbnN0YW5jZSBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgYGBhLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogYGB0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpYGAuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgYGBBLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBjYWxsOlxuICAgYGBBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpYGAuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmIGBgYWBgIGlzIGFuIGluc3RhbmNlIG9mIGBgc3VwZXJgYCwgdGhlbiB0aGUgYmluZGluZyBgYHN1cGVyKEIsXG4gICBvYmopLm0oKWBgIHNlYXJjaGVzIGBgb2JqLl9fY2xhc3NfXy5fX21yb19fYGAgZm9yIHRoZSBiYXNlIGNsYXNzXG4gICBgYEFgYCBpbW1lZGlhdGVseSBwcmVjZWRpbmcgYGBCYGAgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvclxuICAgd2l0aCB0aGUgY2FsbDogYGBBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXylgYC5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCBhbmQgYGBfX2RlbGV0ZV9fKClgYC5cbklmIGl0IGRvZXMgbm90IGRlZmluZSBgYF9fZ2V0X18oKWBgLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGxcbnJldHVybiB0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZVxub2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzIGBgX19zZXRfXygpYGBcbmFuZC9vciBgYF9fZGVsZXRlX18oKWBgLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lc1xubmVpdGhlciwgaXQgaXMgYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnNcbmRlZmluZSBib3RoIGBgX19nZXRfXygpYGAgYW5kIGBgX19zZXRfXygpYGAsIHdoaWxlIG5vbi1kYXRhXG5kZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlIGBgX19nZXRfXygpYGAgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoXG5gYF9fc2V0X18oKWBgIGFuZCBgYF9fZ2V0X18oKWBgIGRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uXG5pbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW4gY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZVxub3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgYGBzdGF0aWNtZXRob2QoKWBgIGFuZCBgYGNsYXNzbWV0aG9kKClgYClcbmFyZSBpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlIGBgcHJvcGVydHkoKWBgIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG4tLS0tLS0tLS1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgSWYgZGVmaW5lZCBpbiBhXG4gICBjbGFzcywgKl9fc2xvdHNfXyogcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kXG4gICBwcmV2ZW50cyB0aGUgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yXG4gICBlYWNoIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+flxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgYGBBdHRyaWJ1dGVFcnJvcmBgLiBJZlxuICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuICBgYFwnX19kaWN0X19cJ2BgIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3NlcyBkZWZpbmluZ1xuICAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzIGluc3RhbmNlcy4gSWYgd2Vha1xuICByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkIGBgXCdfX3dlYWtyZWZfX1wnYGAgdG8gdGhlXG4gIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGUgaW5zdGFuY2VcbiAgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZSAoZXhjZXB0IGJ5XG4gIHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuIFRoaXNcbiAgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyBgYGludGBgLCBgYHN0cmBgIGFuZFxuICBgYHR1cGxlYGAuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5ncyBtYXlcbiAgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG5cblxuQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkJ5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nIGBgdHlwZSgpYGAuIFRoZSBjbGFzcyBib2R5XG5pcyBleGVjdXRlZCBpbiBhIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIGxvY2FsbHkgdG9cbnRoZSByZXN1bHQgb2YgYGB0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpYGAuXG5cblRoZSBjbGFzcyBjcmVhdGlvbiBwcm9jZXNzIGNhbiBiZSBjdXN0b21pc2VkIGJ5IHBhc3NpbmcgdGhlXG5gYG1ldGFjbGFzc2BgIGtleXdvcmQgYXJndW1lbnQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gbGluZSwgb3IgYnlcbmluaGVyaXRpbmcgZnJvbSBhbiBleGlzdGluZyBjbGFzcyB0aGF0IGluY2x1ZGVkIHN1Y2ggYW4gYXJndW1lbnQuIEluXG50aGUgZm9sbG93aW5nIGV4YW1wbGUsIGJvdGggYGBNeUNsYXNzYGAgYW5kIGBgTXlTdWJjbGFzc2BgIGFyZVxuaW5zdGFuY2VzIG9mIGBgTWV0YWBgOlxuXG4gICBjbGFzcyBNZXRhKHR5cGUpOlxuICAgICAgIHBhc3NcblxuICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TWV0YSk6XG4gICAgICAgcGFzc1xuXG4gICBjbGFzcyBNeVN1YmNsYXNzKE15Q2xhc3MpOlxuICAgICAgIHBhc3NcblxuQW55IG90aGVyIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvblxuYXJlIHBhc3NlZCB0aHJvdWdoIHRvIGFsbCBtZXRhY2xhc3Mgb3BlcmF0aW9ucyBkZXNjcmliZWQgYmVsb3cuXG5cbldoZW4gYSBjbGFzcyBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLCB0aGUgZm9sbG93aW5nIHN0ZXBzIG9jY3VyOlxuXG4qIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZFxuXG4qIHRoZSBjbGFzcyBuYW1lc3BhY2UgaXMgcHJlcGFyZWRcblxuKiB0aGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZFxuXG4qIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZFxuXG5cbkRldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3Ncbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBmb3IgYSBjbGFzcyBkZWZpbml0aW9uIGlzIGRldGVybWluZWQgYXNcbmZvbGxvd3M6XG5cbiogaWYgbm8gYmFzZXMgYW5kIG5vIGV4cGxpY2l0IG1ldGFjbGFzcyBhcmUgZ2l2ZW4sIHRoZW4gYGB0eXBlKClgYCBpc1xuICB1c2VkXG5cbiogaWYgYW4gZXhwbGljaXQgbWV0YWNsYXNzIGlzIGdpdmVuIGFuZCBpdCBpcyAqbm90KiBhbiBpbnN0YW5jZSBvZlxuICBgYHR5cGUoKWBgLCB0aGVuIGl0IGlzIHVzZWQgZGlyZWN0bHkgYXMgdGhlIG1ldGFjbGFzc1xuXG4qIGlmIGFuIGluc3RhbmNlIG9mIGBgdHlwZSgpYGAgaXMgZ2l2ZW4gYXMgdGhlIGV4cGxpY2l0IG1ldGFjbGFzcywgb3JcbiAgYmFzZXMgYXJlIGRlZmluZWQsIHRoZW4gdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgdXNlZFxuXG5UaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBzZWxlY3RlZCBmcm9tIHRoZSBleHBsaWNpdGx5IHNwZWNpZmllZFxubWV0YWNsYXNzIChpZiBhbnkpIGFuZCB0aGUgbWV0YWNsYXNzZXMgKGkuZS4gYGB0eXBlKGNscylgYCkgb2YgYWxsXG5zcGVjaWZpZWQgYmFzZSBjbGFzc2VzLiBUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBvbmUgd2hpY2ggaXMgYVxuc3VidHlwZSBvZiAqYWxsKiBvZiB0aGVzZSBjYW5kaWRhdGUgbWV0YWNsYXNzZXMuIElmIG5vbmUgb2YgdGhlXG5jYW5kaWRhdGUgbWV0YWNsYXNzZXMgbWVldHMgdGhhdCBjcml0ZXJpb24sIHRoZW4gdGhlIGNsYXNzIGRlZmluaXRpb25cbndpbGwgZmFpbCB3aXRoIGBgVHlwZUVycm9yYGAuXG5cblxuUHJlcGFyaW5nIHRoZSBjbGFzcyBuYW1lc3BhY2Vcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbk9uY2UgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBoYXMgYmVlbiBpZGVudGlmaWVkLCB0aGVuIHRoZSBjbGFzc1xubmFtZXNwYWNlIGlzIHByZXBhcmVkLiBJZiB0aGUgbWV0YWNsYXNzIGhhcyBhIGBgX19wcmVwYXJlX19gYFxuYXR0cmlidXRlLCBpdCBpcyBjYWxsZWQgYXMgYGBuYW1lc3BhY2UgPSBtZXRhY2xhc3MuX19wcmVwYXJlX18obmFtZSxcbmJhc2VzLCAqKmt3ZHMpYGAgKHdoZXJlIHRoZSBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLCBpZiBhbnksIGNvbWVcbmZyb20gdGhlIGNsYXNzIGRlZmluaXRpb24pLlxuXG5JZiB0aGUgbWV0YWNsYXNzIGhhcyBubyBgYF9fcHJlcGFyZV9fYGAgYXR0cmlidXRlLCB0aGVuIHRoZSBjbGFzc1xubmFtZXNwYWNlIGlzIGluaXRpYWxpc2VkIGFzIGFuIGVtcHR5IGBgZGljdCgpYGAgaW5zdGFuY2UuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMzAwMFxuICAgICAgSW50cm9kdWNlZCB0aGUgYGBfX3ByZXBhcmVfX2BgIG5hbWVzcGFjZSBob29rXG5cblxuRXhlY3V0aW5nIHRoZSBjbGFzcyBib2R5XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWQgKGFwcHJveGltYXRlbHkpIGFzIGBgZXhlYyhib2R5LCBnbG9iYWxzKCksXG5uYW1lc3BhY2UpYGAuIFRoZSBrZXkgZGlmZmVyZW5jZSBmcm9tIGEgbm9ybWFsIGNhbGwgdG8gYGBleGVjKClgYCBpc1xudGhhdCBsZXhpY2FsIHNjb3BpbmcgYWxsb3dzIHRoZSBjbGFzcyBib2R5IChpbmNsdWRpbmcgYW55IG1ldGhvZHMpIHRvXG5yZWZlcmVuY2UgbmFtZXMgZnJvbSB0aGUgY3VycmVudCBhbmQgb3V0ZXIgc2NvcGVzIHdoZW4gdGhlIGNsYXNzXG5kZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgYSBmdW5jdGlvbi5cblxuSG93ZXZlciwgZXZlbiB3aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgdGhlIGZ1bmN0aW9uLFxubWV0aG9kcyBkZWZpbmVkIGluc2lkZSB0aGUgY2xhc3Mgc3RpbGwgY2Fubm90IHNlZSBuYW1lcyBkZWZpbmVkIGF0IHRoZVxuY2xhc3Mgc2NvcGUuIENsYXNzIHZhcmlhYmxlcyBtdXN0IGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGZpcnN0XG5wYXJhbWV0ZXIgb2YgaW5zdGFuY2Ugb3IgY2xhc3MgbWV0aG9kcywgYW5kIGNhbm5vdCBiZSBhY2Nlc3NlZCBhdCBhbGxcbmZyb20gc3RhdGljIG1ldGhvZHMuXG5cblxuQ3JlYXRpbmcgdGhlIGNsYXNzIG9iamVjdFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5PbmNlIHRoZSBjbGFzcyBuYW1lc3BhY2UgaGFzIGJlZW4gcG9wdWxhdGVkIGJ5IGV4ZWN1dGluZyB0aGUgY2xhc3NcbmJvZHksIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCBieSBjYWxsaW5nIGBgbWV0YWNsYXNzKG5hbWUsIGJhc2VzLFxubmFtZXNwYWNlLCAqKmt3ZHMpYGAgKHRoZSBhZGRpdGlvbmFsIGtleXdvcmRzIHBhc3NlZCBoZXJlIGFyZSB0aGUgc2FtZVxuYXMgdGhvc2UgcGFzc2VkIHRvIGBgX19wcmVwYXJlX19gYCkuXG5cblRoaXMgY2xhc3Mgb2JqZWN0IGlzIHRoZSBvbmUgdGhhdCB3aWxsIGJlIHJlZmVyZW5jZWQgYnkgdGhlIHplcm8tXG5hcmd1bWVudCBmb3JtIG9mIGBgc3VwZXIoKWBgLiBgYF9fY2xhc3NfX2BgIGlzIGFuIGltcGxpY2l0IGNsb3N1cmVcbnJlZmVyZW5jZSBjcmVhdGVkIGJ5IHRoZSBjb21waWxlciBpZiBhbnkgbWV0aG9kcyBpbiBhIGNsYXNzIGJvZHkgcmVmZXJcbnRvIGVpdGhlciBgYF9fY2xhc3NfX2BgIG9yIGBgc3VwZXJgYC4gVGhpcyBhbGxvd3MgdGhlIHplcm8gYXJndW1lbnRcbmZvcm0gb2YgYGBzdXBlcigpYGAgdG8gY29ycmVjdGx5IGlkZW50aWZ5IHRoZSBjbGFzcyBiZWluZyBkZWZpbmVkXG5iYXNlZCBvbiBsZXhpY2FsIHNjb3BpbmcsIHdoaWxlIHRoZSBjbGFzcyBvciBpbnN0YW5jZSB0aGF0IHdhcyB1c2VkIHRvXG5tYWtlIHRoZSBjdXJyZW50IGNhbGwgaXMgaWRlbnRpZmllZCBiYXNlZCBvbiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkXG50byB0aGUgbWV0aG9kLlxuXG5BZnRlciB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGlzIHBhc3NlZCB0byB0aGUgY2xhc3NcbmRlY29yYXRvcnMgaW5jbHVkZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gKGlmIGFueSkgYW5kIHRoZSByZXN1bHRpbmdcbm9iamVjdCBpcyBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIHRoZSBkZWZpbmVkIGNsYXNzLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzEzNSoqIC0gTmV3IHN1cGVyXG4gICAgICBEZXNjcmliZXMgdGhlIGltcGxpY2l0IGBgX19jbGFzc19fYGAgY2xvc3VyZSByZWZlcmVuY2VcblxuXG5NZXRhY2xhc3MgZXhhbXBsZVxuLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIHBvdGVudGlhbCB1c2VzIGZvciBtZXRhY2xhc3NlcyBhcmUgYm91bmRsZXNzLiBTb21lIGlkZWFzIHRoYXQgaGF2ZVxuYmVlbiBleHBsb3JlZCBpbmNsdWRlIGxvZ2dpbmcsIGludGVyZmFjZSBjaGVja2luZywgYXV0b21hdGljXG5kZWxlZ2F0aW9uLCBhdXRvbWF0aWMgcHJvcGVydHkgY3JlYXRpb24sIHByb3hpZXMsIGZyYW1ld29ya3MsIGFuZFxuYXV0b21hdGljIHJlc291cmNlIGxvY2tpbmcvc3luY2hyb25pemF0aW9uLlxuXG5IZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBtZXRhY2xhc3MgdGhhdCB1c2VzIGFuXG5gYGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YGAgdG8gcmVtZW1iZXIgdGhlIG9yZGVyIHRoYXQgY2xhc3MgbWVtYmVyc1xud2VyZSBkZWZpbmVkOlxuXG4gICBjbGFzcyBPcmRlcmVkQ2xhc3ModHlwZSk6XG5cbiAgICAgICAgQGNsYXNzbWV0aG9kXG4gICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKTpcbiAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KClcblxuICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsICoqa3dkcyk6XG4gICAgICAgICAgIHJlc3VsdCA9IHR5cGUuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBkaWN0KG5hbWVzcGFjZSkpXG4gICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUobmFtZXNwYWNlKVxuICAgICAgICAgICByZXR1cm4gcmVzdWx0XG5cbiAgIGNsYXNzIEEobWV0YWNsYXNzPU9yZGVyZWRDbGFzcyk6XG4gICAgICAgZGVmIG9uZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0d28oc2VsZik6IHBhc3NcbiAgICAgICBkZWYgdGhyZWUoc2VsZik6IHBhc3NcbiAgICAgICBkZWYgZm91cihzZWxmKTogcGFzc1xuXG4gICA+Pj4gQS5tZW1iZXJzXG4gICAoXCdfX21vZHVsZV9fXCcsIFwnb25lXCcsIFwndHdvXCcsIFwndGhyZWVcJywgXCdmb3VyXCcpXG5cbldoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gZm9yICpBKiBnZXRzIGV4ZWN1dGVkLCB0aGUgcHJvY2VzcyBiZWdpbnNcbndpdGggY2FsbGluZyB0aGUgbWV0YWNsYXNzXCdzIGBgX19wcmVwYXJlX18oKWBgIG1ldGhvZCB3aGljaCByZXR1cm5zIGFuXG5lbXB0eSBgYGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YGAuICBUaGF0IG1hcHBpbmcgcmVjb3JkcyB0aGUgbWV0aG9kc1xuYW5kIGF0dHJpYnV0ZXMgb2YgKkEqIGFzIHRoZXkgYXJlIGRlZmluZWQgd2l0aGluIHRoZSBib2R5IG9mIHRoZSBjbGFzc1xuc3RhdGVtZW50LiBPbmNlIHRob3NlIGRlZmluaXRpb25zIGFyZSBleGVjdXRlZCwgdGhlIG9yZGVyZWQgZGljdGlvbmFyeVxuaXMgZnVsbHkgcG9wdWxhdGVkIGFuZCB0aGUgbWV0YWNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIGdldHNcbmludm9rZWQuICBUaGF0IG1ldGhvZCBidWlsZHMgdGhlIG5ldyB0eXBlIGFuZCBpdCBzYXZlcyB0aGUgb3JkZXJlZFxuZGljdGlvbmFyeSBrZXlzIGluIGFuIGF0dHJpYnV0ZSBjYWxsZWQgYGBtZW1iZXJzYGAuXG5cblxuQ3VzdG9taXppbmcgaW5zdGFuY2UgYW5kIHN1YmNsYXNzIGNoZWNrc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlXG5gYGlzaW5zdGFuY2UoKWBgIGFuZCBgYGlzc3ViY2xhc3MoKWBgIGJ1aWx0LWluIGZ1bmN0aW9ucy5cblxuSW4gcGFydGljdWxhciwgdGhlIG1ldGFjbGFzcyBgYGFiYy5BQkNNZXRhYGAgaW1wbGVtZW50cyB0aGVzZSBtZXRob2RzXG5pbiBvcmRlciB0byBhbGxvdyB0aGUgYWRkaXRpb24gb2YgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChBQkNzKSBhc1xuInZpcnR1YWwgYmFzZSBjbGFzc2VzIiB0byBhbnkgY2xhc3Mgb3IgdHlwZSAoaW5jbHVkaW5nIGJ1aWx0LWluXG50eXBlcyksIGluY2x1ZGluZyBvdGhlciBBQkNzLlxuXG5jbGFzcy5fX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgUmV0dXJuIHRydWUgaWYgKmluc3RhbmNlKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3Qgb3JcbiAgIGluZGlyZWN0KSBpbnN0YW5jZSBvZiAqY2xhc3MqLiBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICBgYGlzaW5zdGFuY2UoaW5zdGFuY2UsIGNsYXNzKWBgLlxuXG5jbGFzcy5fX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBzdWJjbGFzcylcblxuICAgUmV0dXJuIHRydWUgaWYgKnN1YmNsYXNzKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3Qgb3JcbiAgIGluZGlyZWN0KSBzdWJjbGFzcyBvZiAqY2xhc3MqLiAgSWYgZGVmaW5lZCwgY2FsbGVkIHRvIGltcGxlbWVudFxuICAgYGBpc3N1YmNsYXNzKHN1YmNsYXNzLCBjbGFzcylgYC5cblxuTm90ZSB0aGF0IHRoZXNlIG1ldGhvZHMgYXJlIGxvb2tlZCB1cCBvbiB0aGUgdHlwZSAobWV0YWNsYXNzKSBvZiBhXG5jbGFzcy4gIFRoZXkgY2Fubm90IGJlIGRlZmluZWQgYXMgY2xhc3MgbWV0aG9kcyBpbiB0aGUgYWN0dWFsIGNsYXNzLlxuVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGxvb2t1cCBvZiBzcGVjaWFsIG1ldGhvZHMgdGhhdCBhcmUgY2FsbGVkXG5vbiBpbnN0YW5jZXMsIG9ubHkgaW4gdGhpcyBjYXNlIHRoZSBpbnN0YW5jZSBpcyBpdHNlbGYgYSBjbGFzcy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMTkqKiAtIEludHJvZHVjaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3Nlc1xuICAgICAgSW5jbHVkZXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIGN1c3RvbWl6aW5nIGBgaXNpbnN0YW5jZSgpYGAgYW5kXG4gICAgICBgYGlzc3ViY2xhc3MoKWBgIGJlaGF2aW9yIHRocm91Z2ggYGBfX2luc3RhbmNlY2hlY2tfXygpYGAgYW5kXG4gICAgICBgYF9fc3ViY2xhc3NjaGVja19fKClgYCwgd2l0aCBtb3RpdmF0aW9uIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHlcbiAgICAgIGluIHRoZSBjb250ZXh0IG9mIGFkZGluZyBBYnN0cmFjdCBCYXNlIENsYXNzZXMgKHNlZSB0aGUgYGBhYmNgYFxuICAgICAgbW9kdWxlKSB0byB0aGUgbGFuZ3VhZ2UuXG5cblxuRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbm9iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyAiY2FsbGVkIiBhcyBhIGZ1bmN0aW9uOyBpZiB0aGlzIG1ldGhvZFxuICAgaXMgZGVmaW5lZCwgYGB4KGFyZzEsIGFyZzIsIC4uLilgYCBpcyBhIHNob3J0aGFuZCBmb3JcbiAgIGBgeC5fX2NhbGxfXyhhcmcxLCBhcmcyLCAuLi4pYGAuXG5cblxuRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciBvYmplY3RzLlxuQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSBvciBtYXBwaW5nc1xuKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyB3ZWxsLiAgVGhlXG5maXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgdG9cbmVtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCB0aGVcbmFsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCBgYDAgPD0gayA8IE5gYFxud2hlcmUgKk4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlLCBvciBzbGljZSBvYmplY3RzLCB3aGljaFxuZGVmaW5lIGEgcmFuZ2Ugb2YgaXRlbXMuICBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgcHJvdmlkZVxudGhlIG1ldGhvZHMgYGBrZXlzKClgYCwgYGB2YWx1ZXMoKWBgLCBgYGl0ZW1zKClgYCwgYGBnZXQoKWBgLFxuYGBjbGVhcigpYGAsIGBgc2V0ZGVmYXVsdCgpYGAsIGBgcG9wKClgYCwgYGBwb3BpdGVtKClgYCwgYGBjb3B5KClgYCxcbmFuZCBgYHVwZGF0ZSgpYGAgYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uXCdzIHN0YW5kYXJkXG5kaWN0aW9uYXJ5IG9iamVjdHMuICBUaGUgYGBjb2xsZWN0aW9uc2BgIG1vZHVsZSBwcm92aWRlcyBhXG5gYE11dGFibGVNYXBwaW5nYGAgYWJzdHJhY3QgYmFzZSBjbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzXG5mcm9tIGEgYmFzZSBzZXQgb2YgYGBfX2dldGl0ZW1fXygpYGAsIGBgX19zZXRpdGVtX18oKWBgLFxuYGBfX2RlbGl0ZW1fXygpYGAsIGFuZCBgYGtleXMoKWBgLiBNdXRhYmxlIHNlcXVlbmNlcyBzaG91bGQgcHJvdmlkZVxubWV0aG9kcyBgYGFwcGVuZCgpYGAsIGBgY291bnQoKWBgLCBgYGluZGV4KClgYCwgYGBleHRlbmQoKWBgLFxuYGBpbnNlcnQoKWBgLCBgYHBvcCgpYGAsIGBgcmVtb3ZlKClgYCwgYGByZXZlcnNlKClgYCBhbmQgYGBzb3J0KClgYCxcbmxpa2UgUHl0aG9uIHN0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZFxuaW1wbGVtZW50IGFkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAobWVhbmluZ1xucmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgYGBfX2FkZF9fKClgYCwgYGBfX3JhZGRfXygpYGAsXG5gYF9faWFkZF9fKClgYCwgYGBfX211bF9fKClgYCwgYGBfX3JtdWxfXygpYGAgYW5kIGBgX19pbXVsX18oKWBgXG5kZXNjcmliZWQgYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0XG5pcyByZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG5gYF9fY29udGFpbnNfXygpYGAgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCB1c2Ugb2YgdGhlIGBgaW5gYFxub3BlcmF0b3I7IGZvciBtYXBwaW5ncywgYGBpbmBgIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmdcJ3Mga2V5czsgZm9yXG5zZXF1ZW5jZXMsIGl0IHNob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlclxucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuYGBfX2l0ZXJfXygpYGAgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGVcbmNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCBgYF9faXRlcl9fKClgYCBzaG91bGQgYmUgdGhlIHNhbWUgYXNcbmBga2V5cygpYGA7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlIHRocm91Z2ggdGhlIHZhbHVlcy5cblxub2JqZWN0Ll9fbGVuX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgLiAgU2hvdWxkIHJldHVyblxuICAgdGhlIGxlbmd0aCBvZiB0aGUgb2JqZWN0LCBhbiBpbnRlZ2VyIGBgPj1gYCAwLiAgQWxzbywgYW4gb2JqZWN0XG4gICB0aGF0IGRvZXNuXCd0IGRlZmluZSBhIGBgX19ib29sX18oKWBgIG1ldGhvZCBhbmQgd2hvc2UgYGBfX2xlbl9fKClgYFxuICAgbWV0aG9kIHJldHVybnMgemVybyBpcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlIGluIGEgQm9vbGVhbiBjb250ZXh0LlxuXG5Ob3RlOiBTbGljaW5nIGlzIGRvbmUgZXhjbHVzaXZlbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRocmVlIG1ldGhvZHMuICBBXG4gIGNhbGwgbGlrZVxuXG4gICAgIGFbMToyXSA9IGJcblxuICBpcyB0cmFuc2xhdGVkIHRvXG5cbiAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG5cbiAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiB3aXRoXG4gIGBgTm9uZWBgLlxuXG5vYmplY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGV2YWx1YXRpb24gb2YgYGBzZWxmW2tleV1gYC4gRm9yIHNlcXVlbmNlXG4gICB0eXBlcywgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLlxuICAgTm90ZSB0aGF0IHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZVxuICAgY2xhc3Mgd2lzaGVzIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGVcbiAgIGBgX19nZXRpdGVtX18oKWBgIG1ldGhvZC4gSWYgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLFxuICAgYGBUeXBlRXJyb3JgYCBtYXkgYmUgcmFpc2VkOyBpZiBvZiBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZlxuICAgaW5kZXhlcyBmb3IgdGhlIHNlcXVlbmNlIChhZnRlciBhbnkgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZlxuICAgbmVnYXRpdmUgdmFsdWVzKSwgYGBJbmRleEVycm9yYGAgc2hvdWxkIGJlIHJhaXNlZC4gRm9yIG1hcHBpbmdcbiAgIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlIGNvbnRhaW5lciksIGBgS2V5RXJyb3JgYFxuICAgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogYGBmb3JgYCBsb29wcyBleHBlY3QgdGhhdCBhbiBgYEluZGV4RXJyb3JgYCB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgY2hhbmdlcyB0byB0aGUgdmFsdWVzIGZvciBrZXlzLCBvciBpZiBuZXcga2V5c1xuICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSByZXBsYWNlZC4gIFRoZVxuICAgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZSByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3JcbiAgIHRoZSBgYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzXG4gICBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZXF1ZW5jZS4gIFRoZSBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlXG4gICByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3IgdGhlIGBgX19nZXRpdGVtX18oKWBgXG4gICBtZXRob2QuXG5cbm9iamVjdC5fX2l0ZXJfXyhzZWxmKVxuXG4gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCBmb3IgYSBjb250YWluZXIuXG4gICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0IGNhbiBpdGVyYXRlXG4gICBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyLiAgRm9yIG1hcHBpbmdzLCBpdCBzaG91bGRcbiAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLCBhbmQgc2hvdWxkIGFsc28gYmUgbWFkZVxuICAgYXZhaWxhYmxlIGFzIHRoZSBtZXRob2QgYGBrZXlzKClgYC5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlICpJdGVyYXRvciBUeXBlcyouXG5cbm9iamVjdC5fX3JldmVyc2VkX18oc2VsZilcblxuICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgYGByZXZlcnNlZCgpYGAgYnVpbHQtaW4gdG8gaW1wbGVtZW50XG4gICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXRcbiAgIGl0ZXJhdGVzIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIgaW4gcmV2ZXJzZSBvcmRlci5cblxuICAgSWYgdGhlIGBgX19yZXZlcnNlZF9fKClgYCBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGVcbiAgIGBgcmV2ZXJzZWQoKWBgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZVxuICAgcHJvdG9jb2wgKGBgX19sZW5fXygpYGAgYW5kIGBgX19nZXRpdGVtX18oKWBgKS4gIE9iamVjdHMgdGhhdFxuICAgc3VwcG9ydCB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgc2hvdWxkIG9ubHkgcHJvdmlkZVxuICAgYGBfX3JldmVyc2VkX18oKWBgIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBpc1xuICAgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5IGBgcmV2ZXJzZWQoKWBgLlxuXG5UaGUgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycyAoYGBpbmBgIGFuZCBgYG5vdCBpbmBgKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgYGBfX2NvbnRhaW5zX18oKWBgLCB0aGUgbWVtYmVyc2hpcFxuICAgdGVzdCBmaXJzdCB0cmllcyBpdGVyYXRpb24gdmlhIGBgX19pdGVyX18oKWBgLCB0aGVuIHRoZSBvbGRcbiAgIHNlcXVlbmNlIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgYGBfX2dldGl0ZW1fXygpYGAsIHNlZSAqdGhpc1xuICAgc2VjdGlvbiBpbiB0aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlKi5cblxuXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsXG4gICBgYGRpdm1vZCgpYGAsIGBgcG93KClgYCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLFxuICAgYGB8YGApLiAgRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBgYHggKyB5YGAsIHdoZXJlXG4gICAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiBgYF9fYWRkX18oKWBgIG1ldGhvZCxcbiAgIGBgeC5fX2FkZF9fKHkpYGAgaXMgY2FsbGVkLiAgVGhlIGBgX19kaXZtb2RfXygpYGAgbWV0aG9kIHNob3VsZCBiZVxuICAgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmcgYGBfX2Zsb29yZGl2X18oKWBgIGFuZCBgYF9fbW9kX18oKWBgOyBpdFxuICAgc2hvdWxkIG5vdCBiZSByZWxhdGVkIHRvIGBgX190cnVlZGl2X18oKWBgLiAgTm90ZSB0aGF0XG4gICBgYF9fcG93X18oKWBgIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdCBhbiBvcHRpb25hbCB0aGlyZFxuICAgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW4gYGBwb3coKWBgIGZ1bmN0aW9uXG4gICBpcyB0byBiZSBzdXBwb3J0ZWQuXG5cbiAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiB3aXRoIHRoZVxuICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuIGBgTm90SW1wbGVtZW50ZWRgYC5cblxub2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zIChgYCtgYCwgYGAtYGAsIGBgKmBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCxcbiAgIGBgZGl2bW9kKClgYCwgYGBwb3coKWBgLCBgYCoqYGAsIGBgPDxgYCwgYGA+PmBgLCBgYCZgYCwgYGBeYGAsXG4gICBgYHxgYCkgd2l0aCByZWZsZWN0ZWQgKHN3YXBwZWQpIG9wZXJhbmRzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHlcbiAgIGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmdcbiAgIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMuIFsyXSAgRm9yXG4gICBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4IC0geWBgLCB3aGVyZSAqeSogaXMgYW5cbiAgIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX3JzdWJfXygpYGAgbWV0aG9kLFxuICAgYGB5Ll9fcnN1Yl9fKHgpYGAgaXMgY2FsbGVkIGlmIGBgeC5fX3N1Yl9fKHkpYGAgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgYGBwb3coKWBgIHdpbGwgbm90IHRyeSBjYWxsaW5nIGBgX19ycG93X18oKWBgXG4gICAodGhlIGNvZXJjaW9uIHJ1bGVzIHdvdWxkIGJlY29tZSB0b28gY29tcGxpY2F0ZWQpLlxuXG4gICBOb3RlOiBJZiB0aGUgcmlnaHQgb3BlcmFuZFwncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZFwnc1xuICAgICB0eXBlIGFuZCB0aGF0IHN1YmNsYXNzIHByb3ZpZGVzIHRoZSByZWZsZWN0ZWQgbWV0aG9kIGZvciB0aGVcbiAgICAgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGxlZnQgb3BlcmFuZFwnc1xuICAgICBub24tcmVmbGVjdGVkIG1ldGhvZC4gIFRoaXMgYmVoYXZpb3IgYWxsb3dzIHN1YmNsYXNzZXMgdG9cbiAgICAgb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzXCcgb3BlcmF0aW9ucy5cblxub2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgYXJpdGhtZXRpY1xuICAgYXNzaWdubWVudHMgKGBgKz1gYCwgYGAtPWBgLCBgYCo9YGAsIGBgLz1gYCwgYGAvLz1gYCwgYGAlPWBgLFxuICAgYGAqKj1gYCwgYGA8PD1gYCwgYGA+Pj1gYCwgYGAmPWBgLCBgYF49YGAsIGBgfD1gYCkuICBUaGVzZSBtZXRob2RzXG4gICBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmRcbiAgIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsXG4gICAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWRcbiAgIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBleGVjdXRlIHRoZSBzdGF0ZW1lbnQgYGB4ICs9IHlgYCwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGFcbiAgIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9faWFkZF9fKHkpYGAgaXNcbiAgIGNhbGxlZC4gIElmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgZG9lcyBub3QgZGVmaW5lIGFcbiAgIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9fYWRkX18oeSlgYCBhbmQgYGB5Ll9fcmFkZF9fKHgpYGAgYXJlXG4gICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mIGBgeCArIHlgYC5cblxub2JqZWN0Ll9fbmVnX18oc2VsZilcbm9iamVjdC5fX3Bvc19fKHNlbGYpXG5vYmplY3QuX19hYnNfXyhzZWxmKVxub2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIChgYC1gYCwgYGArYGAsXG4gICBgYGFicygpYGAgYW5kIGBgfmBgKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGNvbXBsZXgoKWBgLFxuICAgYGBpbnQoKWBgLCBgYGZsb2F0KClgYCBhbmQgYGByb3VuZCgpYGAuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2ZcbiAgIHRoZSBhcHByb3ByaWF0ZSB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYGBvcGVyYXRvci5pbmRleCgpYGAuICBBbHNvIGNhbGxlZCB3aGVuZXZlclxuICAgUHl0aG9uIG5lZWRzIGFuIGludGVnZXIgb2JqZWN0IChzdWNoIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZVxuICAgYnVpbHQtaW4gYGBiaW4oKWBgLCBgYGhleCgpYGAgYW5kIGBgb2N0KClgYCBmdW5jdGlvbnMpLiBNdXN0IHJldHVyblxuICAgYW4gaW50ZWdlci5cblxuXG5XaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkEgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSBjb250ZXh0IHRvXG5iZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhIGBgd2l0aGBgIHN0YXRlbWVudC4gVGhlIGNvbnRleHRcbm1hbmFnZXIgaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWVcbmNvbnRleHQgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZVxubm9ybWFsbHkgaW52b2tlZCB1c2luZyB0aGUgYGB3aXRoYGAgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvblxuKlRoZSB3aXRoIHN0YXRlbWVudCopLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpclxubWV0aG9kcy5cblxuVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kIHJlc3RvcmluZyB2YXJpb3VzXG5raW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG5maWxlcywgZXRjLlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgTWFuYWdlciBUeXBlcyouXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgYGB3aXRoYGBcbiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2RcJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSB0YXJnZXQocylcbiAgIHNwZWNpZmllZCBpbiB0aGUgYGBhc2BgIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG5cbm9iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG5cbiAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgcGFyYW1ldGVyc1xuICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSBleGl0ZWQuIElmIHRoZVxuICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgYXJndW1lbnRzIHdpbGxcbiAgIGJlIGBgTm9uZWBgLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCBgYF9fZXhpdF9fKClgYCBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgcGFzc2VkLWluXG4gICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlclwncyByZXNwb25zaWJpbGl0eS5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cblxuU3BlY2lhbCBtZXRob2QgbG9va3VwXG49PT09PT09PT09PT09PT09PT09PT1cblxuRm9yIGN1c3RvbSBjbGFzc2VzLCBpbXBsaWNpdCBpbnZvY2F0aW9ucyBvZiBzcGVjaWFsIG1ldGhvZHMgYXJlIG9ubHlcbmd1YXJhbnRlZWQgdG8gd29yayBjb3JyZWN0bHkgaWYgZGVmaW5lZCBvbiBhbiBvYmplY3RcJ3MgdHlwZSwgbm90IGluXG50aGUgb2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBUaGF0IGJlaGF2aW91ciBpcyB0aGUgcmVhc29uIHdoeVxudGhlIGZvbGxvd2luZyBjb2RlIHJhaXNlcyBhbiBleGNlcHRpb246XG5cbiAgID4+PiBjbGFzcyBDOlxuICAgLi4uICAgICBwYXNzXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5fX2xlbl9fID0gbGFtYmRhOiA1XG4gICA+Pj4gbGVuKGMpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IG9iamVjdCBvZiB0eXBlIFwnQ1wnIGhhcyBubyBsZW4oKVxuXG5UaGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGJlaGF2aW91ciBsaWVzIHdpdGggYSBudW1iZXIgb2Ygc3BlY2lhbFxubWV0aG9kcyBzdWNoIGFzIGBgX19oYXNoX18oKWBgIGFuZCBgYF9fcmVwcl9fKClgYCB0aGF0IGFyZSBpbXBsZW1lbnRlZFxuYnkgYWxsIG9iamVjdHMsIGluY2x1ZGluZyB0eXBlIG9iamVjdHMuIElmIHRoZSBpbXBsaWNpdCBsb29rdXAgb2ZcbnRoZXNlIG1ldGhvZHMgdXNlZCB0aGUgY29udmVudGlvbmFsIGxvb2t1cCBwcm9jZXNzLCB0aGV5IHdvdWxkIGZhaWxcbndoZW4gaW52b2tlZCBvbiB0aGUgdHlwZSBvYmplY3QgaXRzZWxmOlxuXG4gICA+Pj4gMSAuX19oYXNoX18oKSA9PSBoYXNoKDEpXG4gICBUcnVlXG4gICA+Pj4gaW50Ll9faGFzaF9fKCkgPT0gaGFzaChpbnQpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IGRlc2NyaXB0b3IgXCdfX2hhc2hfX1wnIG9mIFwnaW50XCcgb2JqZWN0IG5lZWRzIGFuIGFyZ3VtZW50XG5cbkluY29ycmVjdGx5IGF0dGVtcHRpbmcgdG8gaW52b2tlIGFuIHVuYm91bmQgbWV0aG9kIG9mIGEgY2xhc3MgaW4gdGhpc1xud2F5IGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBcJ21ldGFjbGFzcyBjb25mdXNpb25cJywgYW5kIGlzIGF2b2lkZWRcbmJ5IGJ5cGFzc2luZyB0aGUgaW5zdGFuY2Ugd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kczpcblxuICAgPj4+IHR5cGUoMSkuX19oYXNoX18oMSkgPT0gaGFzaCgxKVxuICAgVHJ1ZVxuICAgPj4+IHR5cGUoaW50KS5fX2hhc2hfXyhpbnQpID09IGhhc2goaW50KVxuICAgVHJ1ZVxuXG5JbiBhZGRpdGlvbiB0byBieXBhc3NpbmcgYW55IGluc3RhbmNlIGF0dHJpYnV0ZXMgaW4gdGhlIGludGVyZXN0IG9mXG5jb3JyZWN0bmVzcywgaW1wbGljaXQgc3BlY2lhbCBtZXRob2QgbG9va3VwIGdlbmVyYWxseSBhbHNvIGJ5cGFzc2VzXG50aGUgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBtZXRob2QgZXZlbiBvZiB0aGUgb2JqZWN0XCdzIG1ldGFjbGFzczpcblxuICAgPj4+IGNsYXNzIE1ldGEodHlwZSk6XG4gICAuLi4gICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgIHByaW50KCJNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgIHJldHVybiB0eXBlLl9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4gICAuLi5cbiAgID4+PiBjbGFzcyBDKG9iamVjdCwgbWV0YWNsYXNzPU1ldGEpOlxuICAgLi4uICAgICBkZWYgX19sZW5fXyhzZWxmKTpcbiAgIC4uLiAgICAgICAgIHJldHVybiAxMFxuICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4gICAuLi4gICAgICAgICBwcmludCgiQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXygpICAgICAgICAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgaW5zdGFuY2VcbiAgIENsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IHR5cGUoYykuX19sZW5fXyhjKSAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgdHlwZVxuICAgTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IGxlbihjKSAgICAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0IGxvb2t1cFxuICAgMTBcblxuQnlwYXNzaW5nIHRoZSBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIG1hY2hpbmVyeSBpbiB0aGlzIGZhc2hpb25cbnByb3ZpZGVzIHNpZ25pZmljYW50IHNjb3BlIGZvciBzcGVlZCBvcHRpbWlzYXRpb25zIHdpdGhpbiB0aGVcbmludGVycHJldGVyLCBhdCB0aGUgY29zdCBvZiBzb21lIGZsZXhpYmlsaXR5IGluIHRoZSBoYW5kbGluZyBvZlxuc3BlY2lhbCBtZXRob2RzICh0aGUgc3BlY2lhbCBtZXRob2QgKm11c3QqIGJlIHNldCBvbiB0aGUgY2xhc3Mgb2JqZWN0XG5pdHNlbGYgaW4gb3JkZXIgdG8gYmUgY29uc2lzdGVudGx5IGludm9rZWQgYnkgdGhlIGludGVycHJldGVyKS5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBJdCAqaXMqIHBvc3NpYmxlIGluIHNvbWUgY2FzZXMgdG8gY2hhbmdlIGFuIG9iamVjdFwncyB0eXBlLCB1bmRlclxuICAgIGNlcnRhaW4gY29udHJvbGxlZCBjb25kaXRpb25zLiBJdCBnZW5lcmFsbHkgaXNuXCd0IGEgZ29vZCBpZGVhXG4gICAgdGhvdWdoLCBzaW5jZSBpdCBjYW4gbGVhZCB0byBzb21lIHZlcnkgc3RyYW5nZSBiZWhhdmlvdXIgaWYgaXQgaXNcbiAgICBoYW5kbGVkIGluY29ycmVjdGx5LlxuXG5bMl0gRm9yIG9wZXJhbmRzIG9mIHRoZSBzYW1lIHR5cGUsIGl0IGlzIGFzc3VtZWQgdGhhdCBpZiB0aGUgbm9uLVxuICAgIHJlZmxlY3RlZCBtZXRob2QgKHN1Y2ggYXMgYGBfX2FkZF9fKClgYCkgZmFpbHMgdGhlIG9wZXJhdGlvbiBpc1xuICAgIG5vdCBzdXBwb3J0ZWQsIHdoaWNoIGlzIHdoeSB0aGUgcmVmbGVjdGVkIG1ldGhvZCBpcyBub3QgY2FsbGVkLlxuJywKKyAnc3RyaW5nLW1ldGhvZHMnOiAnXG5TdHJpbmcgTWV0aG9kc1xuKioqKioqKioqKioqKipcblxuU3RyaW5ncyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zLCBhbG9uZyB3aXRoXG50aGUgYWRkaXRpb25hbCBtZXRob2RzIGRlc2NyaWJlZCBiZWxvdy5cblxuU3RyaW5ncyBhbHNvIHN1cHBvcnQgdHdvIHN0eWxlcyBvZiBzdHJpbmcgZm9ybWF0dGluZywgb25lIHByb3ZpZGluZyBhXG5sYXJnZSBkZWdyZWUgb2YgZmxleGliaWxpdHkgYW5kIGN1c3RvbWl6YXRpb24gKHNlZSBgYHN0ci5mb3JtYXQoKWBgLFxuKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBhbmQgKlN0cmluZyBGb3JtYXR0aW5nKikgYW5kIHRoZSBvdGhlciBiYXNlZCBvblxuQyBgYHByaW50ZmBgIHN0eWxlIGZvcm1hdHRpbmcgdGhhdCBoYW5kbGVzIGEgbmFycm93ZXIgcmFuZ2Ugb2YgdHlwZXNcbmFuZCBpcyBzbGlnaHRseSBoYXJkZXIgdG8gdXNlIGNvcnJlY3RseSwgYnV0IGlzIG9mdGVuIGZhc3RlciBmb3IgdGhlXG5jYXNlcyBpdCBjYW4gaGFuZGxlICgqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKikuXG5cblRoZSAqVGV4dCBQcm9jZXNzaW5nIFNlcnZpY2VzKiBzZWN0aW9uIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGNvdmVyc1xuYSBudW1iZXIgb2Ygb3RoZXIgbW9kdWxlcyB0aGF0IHByb3ZpZGUgdmFyaW91cyB0ZXh0IHJlbGF0ZWQgdXRpbGl0aWVzXG4oaW5jbHVkaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiBzdXBwb3J0IGluIHRoZSBgYHJlYGAgbW9kdWxlKS5cblxuc3RyLmNhcGl0YWxpemUoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBpdHMgZmlyc3QgY2hhcmFjdGVyIGNhcGl0YWxpemVkXG4gICBhbmQgdGhlIHJlc3QgbG93ZXJjYXNlZC5cblxuc3RyLmNhc2Vmb2xkKClcblxuICAgUmV0dXJuIGEgY2FzZWZvbGRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuIENhc2Vmb2xkZWQgc3RyaW5ncyBtYXkgYmVcbiAgIHVzZWQgZm9yIGNhc2VsZXNzIG1hdGNoaW5nLlxuXG4gICBDYXNlZm9sZGluZyBpcyBzaW1pbGFyIHRvIGxvd2VyY2FzaW5nIGJ1dCBtb3JlIGFnZ3Jlc3NpdmUgYmVjYXVzZVxuICAgaXQgaXMgaW50ZW5kZWQgdG8gcmVtb3ZlIGFsbCBjYXNlIGRpc3RpbmN0aW9ucyBpbiBhIHN0cmluZy4gRm9yXG4gICBleGFtcGxlLCB0aGUgR2VybWFuIGxvd2VyY2FzZSBsZXR0ZXIgYGBcJ1x4YzNceDlmXCdgYCBpcyBlcXVpdmFsZW50IHRvXG4gICBgYCJzcyJgYC4gU2luY2UgaXQgaXMgYWxyZWFkeSBsb3dlcmNhc2UsIGBgbG93ZXIoKWBgIHdvdWxkIGRvXG4gICBub3RoaW5nIHRvIGBgXCdceGMzXHg5ZlwnYGA7IGBgY2FzZWZvbGQoKWBgIGNvbnZlcnRzIGl0IHRvIGBgInNzImBgLlxuXG4gICBUaGUgY2FzZWZvbGRpbmcgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlXG4gICBVbmljb2RlIFN0YW5kYXJkLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjMuXG5cbnN0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gUGFkZGluZyBpcyBkb25lXG4gICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYSBzcGFjZSkuXG5cbnN0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpzdWIqXG4gICBpbiB0aGUgcmFuZ2UgWypzdGFydCosICplbmQqXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZFxuICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXG5zdHIuZW5jb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcblxuICAgUmV0dXJuIGFuIGVuY29kZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGFzIGEgYnl0ZXMgb2JqZWN0LiBEZWZhdWx0XG4gICBlbmNvZGluZyBpcyBgYFwndXRmLThcJ2BgLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50XG4gICBlcnJvciBoYW5kbGluZyBzY2hlbWUuIFRoZSBkZWZhdWx0IGZvciAqZXJyb3JzKiBpcyBgYFwnc3RyaWN0XCdgYCxcbiAgIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSBgYFVuaWNvZGVFcnJvcmBgLiBPdGhlclxuICAgcG9zc2libGUgdmFsdWVzIGFyZSBgYFwnaWdub3JlXCdgYCwgYGBcJ3JlcGxhY2VcJ2BgLFxuICAgYGBcJ3htbGNoYXJyZWZyZXBsYWNlXCdgYCwgYGBcJ2JhY2tzbGFzaHJlcGxhY2VcJ2BgIGFuZCBhbnkgb3RoZXIgbmFtZVxuICAgcmVnaXN0ZXJlZCB2aWEgYGBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKWBgLCBzZWUgc2VjdGlvbiAqQ29kZWMgQmFzZVxuICAgQ2xhc3NlcyouIEZvciBhIGxpc3Qgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmRcbiAgIEVuY29kaW5ncyouXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzIGFkZGVkLlxuXG5zdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgKnN1ZmZpeCosXG4gICBvdGhlcndpc2UgcmV0dXJuIGBgRmFsc2VgYC4gICpzdWZmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2ZcbiAgIHN1ZmZpeGVzIHRvIGxvb2sgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IGJlZ2lubmluZyBhdFxuICAgdGhhdCBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLlxuXG5zdHIuZXhwYW5kdGFicyhbdGFic2l6ZV0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIHJlcGxhY2VkXG4gICBieSB6ZXJvIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgY29sdW1uIGFuZCB0aGVcbiAgIGdpdmVuIHRhYiBzaXplLiAgVGhlIGNvbHVtbiBudW1iZXIgaXMgcmVzZXQgdG8gemVybyBhZnRlciBlYWNoXG4gICBuZXdsaW5lIG9jY3VycmluZyBpbiB0aGUgc3RyaW5nLiBJZiAqdGFic2l6ZSogaXMgbm90IGdpdmVuLCBhIHRhYlxuICAgc2l6ZSBvZiBgYDhgYCBjaGFyYWN0ZXJzIGlzIGFzc3VtZWQuICBUaGlzIGRvZXNuXCd0IHVuZGVyc3RhbmQgb3RoZXJcbiAgIG5vbi1wcmludGluZyBjaGFyYWN0ZXJzIG9yIGVzY2FwZSBzZXF1ZW5jZXMuXG5cbnN0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCBpbiB0aGUgc2xpY2UgYGBzW3N0YXJ0OmVuZF1gYC5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuIGBgLTFgYCBpZiAqc3ViKiBpcyBub3QgZm91bmQuXG5cbiAgIE5vdGU6IFRoZSBgYGZpbmQoKWBgIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBvbmx5IGlmIHlvdSBuZWVkIHRvIGtub3cgdGhlXG4gICAgIHBvc2l0aW9uIG9mICpzdWIqLiAgVG8gY2hlY2sgaWYgKnN1YiogaXMgYSBzdWJzdHJpbmcgb3Igbm90LCB1c2VcbiAgICAgdGhlIGBgaW5gYCBvcGVyYXRvcjpcblxuICAgICAgICA+Pj4gXCdQeVwnIGluIFwnUHl0aG9uXCdcbiAgICAgICAgVHJ1ZVxuXG5zdHIuZm9ybWF0KCphcmdzLCAqKmt3YXJncylcblxuICAgUGVyZm9ybSBhIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbi4gIFRoZSBzdHJpbmcgb24gd2hpY2ggdGhpc1xuICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgcmVwbGFjZW1lbnQgZmllbGRzXG4gICBkZWxpbWl0ZWQgYnkgYnJhY2VzIGBge31gYC4gIEVhY2ggcmVwbGFjZW1lbnQgZmllbGQgY29udGFpbnMgZWl0aGVyXG4gICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lIG9mIGFcbiAgIGtleXdvcmQgYXJndW1lbnQuICBSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGVhY2hcbiAgIHJlcGxhY2VtZW50IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGVcbiAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG5cbiAgID4+PiAiVGhlIHN1bSBvZiAxICsgMiBpcyB7MH0iLmZvcm1hdCgxKzIpXG4gICBcJ1RoZSBzdW0gb2YgMSArIDIgaXMgM1wnXG5cbiAgIFNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSB2YXJpb3VzXG4gICBmb3JtYXR0aW5nIG9wdGlvbnMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGluIGZvcm1hdCBzdHJpbmdzLlxuXG5zdHIuZm9ybWF0X21hcChtYXBwaW5nKVxuXG4gICBTaW1pbGFyIHRvIGBgc3RyLmZvcm1hdCgqKm1hcHBpbmcpYGAsIGV4Y2VwdCB0aGF0IGBgbWFwcGluZ2BgIGlzXG4gICB1c2VkIGRpcmVjdGx5IGFuZCBub3QgY29waWVkIHRvIGEgYGBkaWN0YGAgLiAgVGhpcyBpcyB1c2VmdWwgaWYgZm9yXG4gICBleGFtcGxlIGBgbWFwcGluZ2BgIGlzIGEgZGljdCBzdWJjbGFzczpcblxuICAgPj4+IGNsYXNzIERlZmF1bHQoZGljdCk6XG4gICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIGtleVxuICAgLi4uXG4gICA+Pj4gXCd7bmFtZX0gd2FzIGJvcm4gaW4ge2NvdW50cnl9XCcuZm9ybWF0X21hcChEZWZhdWx0KG5hbWU9XCdHdWlkb1wnKSlcbiAgIFwnR3VpZG8gd2FzIGJvcm4gaW4gY291bnRyeVwnXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgYGBmaW5kKClgYCwgYnV0IHJhaXNlIGBgVmFsdWVFcnJvcmBgIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3RcbiAgIGZvdW5kLlxuXG5zdHIuaXNhbG51bSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhbnVtZXJpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEEgY2hhcmFjdGVyXG4gICBgYGNgYCBpcyBhbHBoYW51bWVyaWMgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgcmV0dXJucyBgYFRydWVgYDpcbiAgIGBgYy5pc2FscGhhKClgYCwgYGBjLmlzZGVjaW1hbCgpYGAsIGBgYy5pc2RpZ2l0KClgYCwgb3JcbiAgIGBgYy5pc251bWVyaWMoKWBgLlxuXG5zdHIuaXNhbHBoYSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhYmV0aWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBbHBoYWJldGljXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiTGV0dGVyIiwgaS5lLiwgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5IHByb3BlcnR5XG4gICBiZWluZyBvbmUgb2YgIkxtIiwgIkx0IiwgIkx1IiwgIkxsIiwgb3IgIkxvIi4gIE5vdGUgdGhhdCB0aGlzIGlzXG4gICBkaWZmZXJlbnQgZnJvbSB0aGUgIkFscGhhYmV0aWMiIHByb3BlcnR5IGRlZmluZWQgaW4gdGhlIFVuaWNvZGVcbiAgIFN0YW5kYXJkLlxuXG5zdHIuaXNkZWNpbWFsKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGVjaW1hbCBjaGFyYWN0ZXJzXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBEZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBmcm9tIGdlbmVyYWwgY2F0ZWdvcnkgIk5kIi4gVGhpcyBjYXRlZ29yeVxuICAgaW5jbHVkZXMgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG9cbiAgIGZvcm0gZGVjaW1hbC1yYWRpeCBudW1iZXJzLCBlLmcuIFUrMDY2MCwgQVJBQklDLUlORElDIERJR0lUIFpFUk8uXG5cbnN0ci5pc2RpZ2l0KClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGlnaXRzIGFuZCB0aGVyZSBpc1xuICAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgRGlnaXRzIGluY2x1ZGUgZGVjaW1hbFxuICAgY2hhcmFjdGVycyBhbmQgZGlnaXRzIHRoYXQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLCBzdWNoIGFzIHRoZVxuICAgY29tcGF0aWJpbGl0eSBzdXBlcnNjcmlwdCBkaWdpdHMuICBGb3JtYWxseSwgYSBkaWdpdCBpcyBhIGNoYXJhY3RlclxuICAgdGhhdCBoYXMgdGhlIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCBvclxuICAgTnVtZXJpY19UeXBlPURlY2ltYWwuXG5cbnN0ci5pc2lkZW50aWZpZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgaWRlbnRpZmllciBhY2NvcmRpbmcgdG8gdGhlXG4gICBsYW5ndWFnZSBkZWZpbml0aW9uLCBzZWN0aW9uICpJZGVudGlmaWVycyBhbmQga2V5d29yZHMqLlxuXG5zdHIuaXNsb3dlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSBsb3dlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc251bWVyaWMoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBudW1lcmljIGNoYXJhY3RlcnMsXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBOdW1lcmljXG4gICBjaGFyYWN0ZXJzIGluY2x1ZGUgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgaGF2ZVxuICAgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSBwcm9wZXJ0eSwgZS5nLiBVKzIxNTUsIFZVTEdBUiBGUkFDVElPTlxuICAgT05FIEZJRlRILiAgRm9ybWFsbHksIG51bWVyaWMgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCB0aGVcbiAgIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCwgTnVtZXJpY19UeXBlPURlY2ltYWwgb3JcbiAgIE51bWVyaWNfVHlwZT1OdW1lcmljLlxuXG5zdHIuaXNwcmludGFibGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBwcmludGFibGUgb3IgdGhlXG4gICBzdHJpbmcgaXMgZW1wdHksIGZhbHNlIG90aGVyd2lzZS4gIE5vbnByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZVxuICAgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZSBhc1xuICAgIk90aGVyIiBvciAiU2VwYXJhdG9yIiwgZXhjZXB0aW5nIHRoZSBBU0NJSSBzcGFjZSAoMHgyMCkgd2hpY2ggaXNcbiAgIGNvbnNpZGVyZWQgcHJpbnRhYmxlLiAgKE5vdGUgdGhhdCBwcmludGFibGUgY2hhcmFjdGVycyBpbiB0aGlzXG4gICBjb250ZXh0IGFyZSB0aG9zZSB3aGljaCBzaG91bGQgbm90IGJlIGVzY2FwZWQgd2hlbiBgYHJlcHIoKWBgIGlzXG4gICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nIG9mIHN0cmluZ3NcbiAgIHdyaXR0ZW4gdG8gYGBzeXMuc3Rkb3V0YGAgb3IgYGBzeXMuc3RkZXJyYGAuKVxuXG5zdHIuaXNzcGFjZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZXJlIGFyZSBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgV2hpdGVzcGFjZVxuICAgY2hhcmFjdGVycyAgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJPdGhlciIgb3IgIlNlcGFyYXRvciIgYW5kIHRob3NlIHdpdGggYmlkaXJlY3Rpb25hbFxuICAgcHJvcGVydHkgYmVpbmcgb25lIG9mICJXUyIsICJCIiwgb3IgIlMiLlxuXG5zdHIuaXN0aXRsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB0aXRsZWNhc2VkIHN0cmluZyBhbmQgdGhlcmUgaXMgYXRcbiAgIGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZvciBleGFtcGxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIG1heSBvbmx5XG4gICBmb2xsb3cgdW5jYXNlZCBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2UgY2hhcmFjdGVycyBvbmx5IGNhc2VkIG9uZXMuXG4gICBSZXR1cm4gZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXN1cHBlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSB1cHBlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5qb2luKGl0ZXJhYmxlKVxuXG4gICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZ3MgaW4gdGhlXG4gICAqaXRlcmFibGUqICppdGVyYWJsZSouICBBIGBgVHlwZUVycm9yYGAgd2lsbCBiZSByYWlzZWQgaWYgdGhlcmUgYXJlXG4gICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nIGBgYnl0ZXNgYCBvYmplY3RzLlxuICAgVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcgcHJvdmlkaW5nIHRoaXMgbWV0aG9kLlxuXG5zdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhXG4gICBzcGFjZSkuICBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byBgYGxlbihzKWBgLlxuXG5zdHIubG93ZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLlxuXG4gICBUaGUgbG93ZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGVcbiAgIFVuaWNvZGUgU3RhbmRhcmQuXG5cbnN0ci5sc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggbGVhZGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHByZWZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5sc3RyaXAoKVxuICAgXCdzcGFjaW91cyAgIFwnXG4gICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5sc3RyaXAoXCdjbW93ei5cJylcbiAgIFwnZXhhbXBsZS5jb21cJ1xuXG5zdGF0aWMgc3RyLm1ha2V0cmFucyh4WywgeVssIHpdXSlcblxuICAgVGhpcyBzdGF0aWMgbWV0aG9kIHJldHVybnMgYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgZm9yXG4gICBgYHN0ci50cmFuc2xhdGUoKWBgLlxuXG4gICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgbWFwcGluZ1xuICAgVW5pY29kZSBvcmRpbmFscyAoaW50ZWdlcnMpIG9yIGNoYXJhY3RlcnMgKHN0cmluZ3Mgb2YgbGVuZ3RoIDEpIHRvXG4gICBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIChvZiBhcmJpdHJhcnkgbGVuZ3Rocykgb3IgTm9uZS5cbiAgIENoYXJhY3RlciBrZXlzIHdpbGwgdGhlbiBiZSBjb252ZXJ0ZWQgdG8gb3JkaW5hbHMuXG5cbiAgIElmIHRoZXJlIGFyZSB0d28gYXJndW1lbnRzLCB0aGV5IG11c3QgYmUgc3RyaW5ncyBvZiBlcXVhbCBsZW5ndGgsXG4gICBhbmQgaW4gdGhlIHJlc3VsdGluZyBkaWN0aW9uYXJ5LCBlYWNoIGNoYXJhY3RlciBpbiB4IHdpbGwgYmUgbWFwcGVkXG4gICB0byB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGluIHkuICBJZiB0aGVyZSBpcyBhIHRoaXJkXG4gICBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIHN0cmluZywgd2hvc2UgY2hhcmFjdGVycyB3aWxsIGJlIG1hcHBlZCB0b1xuICAgTm9uZSBpbiB0aGUgcmVzdWx0LlxuXG5zdHIucGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiBhXG4gICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3JcbiAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgc3RyaW5nIGl0c2VsZiwgZm9sbG93ZWQgYnlcbiAgIHR3byBlbXB0eSBzdHJpbmdzLlxuXG5zdHIucmVwbGFjZShvbGQsIG5ld1ssIGNvdW50XSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyAqb2xkKlxuICAgcmVwbGFjZWQgYnkgKm5ldyouICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmNvdW50KiBpcyBnaXZlbiwgb25seVxuICAgdGhlIGZpcnN0ICpjb3VudCogb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkLlxuXG5zdHIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCB3aXRoaW4gYGBzW3N0YXJ0OmVuZF1gYC5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuIGBgLTFgYCBvbiBmYWlsdXJlLlxuXG5zdHIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgYGByZmluZCgpYGAgYnV0IHJhaXNlcyBgYFZhbHVlRXJyb3JgYCB3aGVuIHRoZSBzdWJzdHJpbmcgKnN1YipcbiAgIGlzIG5vdCBmb3VuZC5cblxuc3RyLnJqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gdGhlIHN0cmluZyByaWdodCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouXG4gICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFcbiAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gYGBsZW4ocylgYC5cblxuc3RyLnJwYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IHN0cmluZ3MsIGZvbGxvd2VkIGJ5XG4gICB0aGUgc3RyaW5nIGl0c2VsZi5cblxuc3RyLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0c1xuICAgYXJlIGRvbmUsIHRoZSAqcmlnaHRtb3N0KiBvbmVzLiAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvclxuICAgYGBOb25lYGAsIGFueSB3aGl0ZXNwYWNlIHN0cmluZyBpcyBhIHNlcGFyYXRvci4gIEV4Y2VwdCBmb3JcbiAgIHNwbGl0dGluZyBmcm9tIHRoZSByaWdodCwgYGByc3BsaXQoKWBgIGJlaGF2ZXMgbGlrZSBgYHNwbGl0KClgYFxuICAgd2hpY2ggaXMgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cblxuc3RyLnJzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0cmFpbGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHN1ZmZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5yc3RyaXAoKVxuICAgXCcgICBzcGFjaW91c1wnXG4gICA+Pj4gXCdtaXNzaXNzaXBwaVwnLnJzdHJpcChcJ2lwelwnKVxuICAgXCdtaXNzaXNzXCdcblxuc3RyLnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlXG4gICBkZWxpbWl0ZXIgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqXG4gICBzcGxpdHMgYXJlIGRvbmUgKHRodXMsIHRoZSBsaXN0IHdpbGwgaGF2ZSBhdCBtb3N0IGBgbWF4c3BsaXQrMWBgXG4gICBlbGVtZW50cykuICBJZiAqbWF4c3BsaXQqIGlzIG5vdCBzcGVjaWZpZWQgb3IgYGAtMWBgLCB0aGVuIHRoZXJlIGlzXG4gICBubyBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHNwbGl0cyAoYWxsIHBvc3NpYmxlIHNwbGl0cyBhcmUgbWFkZSkuXG5cbiAgIElmICpzZXAqIGlzIGdpdmVuLCBjb25zZWN1dGl2ZSBkZWxpbWl0ZXJzIGFyZSBub3QgZ3JvdXBlZCB0b2dldGhlclxuICAgYW5kIGFyZSBkZWVtZWQgdG8gZGVsaW1pdCBlbXB0eSBzdHJpbmdzIChmb3IgZXhhbXBsZSxcbiAgIGBgXCcxLCwyXCcuc3BsaXQoXCcsXCcpYGAgcmV0dXJucyBgYFtcJzFcJywgXCdcJywgXCcyXCddYGApLiAgVGhlICpzZXAqXG4gICBhcmd1bWVudCBtYXkgY29uc2lzdCBvZiBtdWx0aXBsZSBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSxcbiAgIGBgXCcxPD4yPD4zXCcuc3BsaXQoXCc8PlwnKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnMlwnLCBcJzNcJ11gYCkuIFNwbGl0dGluZ1xuICAgYW4gZW1wdHkgc3RyaW5nIHdpdGggYSBzcGVjaWZpZWQgc2VwYXJhdG9yIHJldHVybnMgYGBbXCdcJ11gYC5cblxuICAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvciBpcyBgYE5vbmVgYCwgYSBkaWZmZXJlbnQgc3BsaXR0aW5nXG4gICBhbGdvcml0aG0gaXMgYXBwbGllZDogcnVucyBvZiBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlIGFyZSByZWdhcmRlZFxuICAgYXMgYSBzaW5nbGUgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gbm8gZW1wdHkgc3RyaW5nc1xuICAgYXQgdGhlIHN0YXJ0IG9yIGVuZCBpZiB0aGUgc3RyaW5nIGhhcyBsZWFkaW5nIG9yIHRyYWlsaW5nXG4gICB3aGl0ZXNwYWNlLiAgQ29uc2VxdWVudGx5LCBzcGxpdHRpbmcgYW4gZW1wdHkgc3RyaW5nIG9yIGEgc3RyaW5nXG4gICBjb25zaXN0aW5nIG9mIGp1c3Qgd2hpdGVzcGFjZSB3aXRoIGEgYGBOb25lYGAgc2VwYXJhdG9yIHJldHVybnNcbiAgIGBgW11gYC5cblxuICAgRm9yIGV4YW1wbGUsIGBgXCcgMSAgMiAgIDMgIFwnLnNwbGl0KClgYCByZXR1cm5zIGBgW1wnMVwnLCBcJzJcJywgXCczXCddYGAsXG4gICBhbmQgYGBcJyAgMSAgMiAgIDMgIFwnLnNwbGl0KE5vbmUsIDEpYGAgcmV0dXJucyBgYFtcJzFcJywgXCcyICAgMyAgXCddYGAuXG5cbnN0ci5zcGxpdGxpbmVzKFtrZWVwZW5kc10pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBzdHJpbmcsIGJyZWFraW5nIGF0IGxpbmVcbiAgIGJvdW5kYXJpZXMuIFRoaXMgbWV0aG9kIHVzZXMgdGhlICp1bml2ZXJzYWwgbmV3bGluZXMqIGFwcHJvYWNoIHRvXG4gICBzcGxpdHRpbmcgbGluZXMuIExpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0XG4gICB1bmxlc3MgKmtlZXBlbmRzKiBpcyBnaXZlbiBhbmQgdHJ1ZS5cblxuICAgRm9yIGV4YW1wbGUsIGBgXCdhYiBjXFxuXFxuZGUgZmdcXHJrbFxcclxcblwnLnNwbGl0bGluZXMoKWBgIHJldHVybnNcbiAgIGBgW1wnYWIgY1wnLCBcJ1wnLCBcJ2RlIGZnXCcsIFwna2xcJ11gYCwgd2hpbGUgdGhlIHNhbWUgY2FsbCB3aXRoXG4gICBgYHNwbGl0bGluZXMoVHJ1ZSlgYCByZXR1cm5zIGBgW1wnYWIgY1xcblwnLCBcJ1xcblwnLCBcJ2RlIGZnXFxyXCcsXG4gICBcJ2tsXFxyXFxuXCddYGAuXG5cbiAgIFVubGlrZSBgYHNwbGl0KClgYCB3aGVuIGEgZGVsaW1pdGVyIHN0cmluZyAqc2VwKiBpcyBnaXZlbiwgdGhpc1xuICAgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgbGlzdCBmb3IgdGhlIGVtcHR5IHN0cmluZywgYW5kIGEgdGVybWluYWxcbiAgIGxpbmUgYnJlYWsgZG9lcyBub3QgcmVzdWx0IGluIGFuIGV4dHJhIGxpbmUuXG5cbnN0ci5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiBgYFRydWVgYCBpZiBzdHJpbmcgc3RhcnRzIHdpdGggdGhlICpwcmVmaXgqLCBvdGhlcndpc2VcbiAgIHJldHVybiBgYEZhbHNlYGAuICpwcmVmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgcHJlZml4ZXMgdG8gbG9va1xuICAgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IHN0cmluZyBiZWdpbm5pbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBzdHJpbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uXG5cbnN0ci5zdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmdcbiAgIGNoYXJhY3RlcnMgcmVtb3ZlZC4gVGhlICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGVcbiAgIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlIHJlbW92ZWQuIElmIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0byByZW1vdmluZyB3aGl0ZXNwYWNlLiBUaGUgKmNoYXJzKlxuICAgYXJndW1lbnQgaXMgbm90IGEgcHJlZml4IG9yIHN1ZmZpeDsgcmF0aGVyLCBhbGwgY29tYmluYXRpb25zIG9mIGl0c1xuICAgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5zdHJpcCgpXG4gICBcJ3NwYWNpb3VzXCdcbiAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLnN0cmlwKFwnY21vd3ouXCcpXG4gICBcJ2V4YW1wbGVcJ1xuXG5zdHIuc3dhcGNhc2UoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG9cbiAgIGxvd2VyY2FzZSBhbmQgdmljZSB2ZXJzYS4gTm90ZSB0aGF0IGl0IGlzIG5vdCBuZWNlc3NhcmlseSB0cnVlIHRoYXRcbiAgIGBgcy5zd2FwY2FzZSgpLnN3YXBjYXNlKCkgPT0gc2BgLlxuXG5zdHIudGl0bGUoKVxuXG4gICBSZXR1cm4gYSB0aXRsZWNhc2VkIHZlcnNpb24gb2YgdGhlIHN0cmluZyB3aGVyZSB3b3JkcyBzdGFydCB3aXRoIGFuXG4gICB1cHBlcmNhc2UgY2hhcmFjdGVyIGFuZCB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIGxvd2VyY2FzZS5cblxuICAgVGhlIGFsZ29yaXRobSB1c2VzIGEgc2ltcGxlIGxhbmd1YWdlLWluZGVwZW5kZW50IGRlZmluaXRpb24gb2YgYVxuICAgd29yZCBhcyBncm91cHMgb2YgY29uc2VjdXRpdmUgbGV0dGVycy4gIFRoZSBkZWZpbml0aW9uIHdvcmtzIGluXG4gICBtYW55IGNvbnRleHRzIGJ1dCBpdCBtZWFucyB0aGF0IGFwb3N0cm9waGVzIGluIGNvbnRyYWN0aW9ucyBhbmRcbiAgIHBvc3Nlc3NpdmVzIGZvcm0gd29yZCBib3VuZGFyaWVzLCB3aGljaCBtYXkgbm90IGJlIHRoZSBkZXNpcmVkXG4gICByZXN1bHQ6XG5cbiAgICAgID4+PiAidGhleVwncmUgYmlsbFwncyBmcmllbmRzIGZyb20gdGhlIFVLIi50aXRsZSgpXG4gICAgICAiVGhleVwnUmUgQmlsbFwnUyBGcmllbmRzIEZyb20gVGhlIFVrIlxuXG4gICBBIHdvcmthcm91bmQgZm9yIGFwb3N0cm9waGVzIGNhbiBiZSBjb25zdHJ1Y3RlZCB1c2luZyByZWd1bGFyXG4gICBleHByZXNzaW9uczpcblxuICAgICAgPj4+IGltcG9ydCByZVxuICAgICAgPj4+IGRlZiB0aXRsZWNhc2Uocyk6XG4gICAgICAgICAgICAgIHJldHVybiByZS5zdWIociJbQS1aYS16XSsoXCdbQS1aYS16XSspPyIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIG1vOiBtby5ncm91cCgwKVswXS51cHBlcigpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vLmdyb3VwKDApWzE6XS5sb3dlcigpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMpXG5cbiAgICAgID4+PiB0aXRsZWNhc2UoInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcy4iKVxuICAgICAgIlRoZXlcJ3JlIEJpbGxcJ3MgRnJpZW5kcy4iXG5cbnN0ci50cmFuc2xhdGUobWFwKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSAqcyogd2hlcmUgYWxsIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIG1hcHBlZFxuICAgdGhyb3VnaCB0aGUgKm1hcCogd2hpY2ggbXVzdCBiZSBhIGRpY3Rpb25hcnkgb2YgVW5pY29kZSBvcmRpbmFsc1xuICAgKGludGVnZXJzKSB0byBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIG9yIGBgTm9uZWBgLiAgVW5tYXBwZWRcbiAgIGNoYXJhY3RlcnMgYXJlIGxlZnQgdW50b3VjaGVkLiBDaGFyYWN0ZXJzIG1hcHBlZCB0byBgYE5vbmVgYCBhcmVcbiAgIGRlbGV0ZWQuXG5cbiAgIFlvdSBjYW4gdXNlIGBgc3RyLm1ha2V0cmFucygpYGAgdG8gY3JlYXRlIGEgdHJhbnNsYXRpb24gbWFwIGZyb21cbiAgIGNoYXJhY3Rlci10by1jaGFyYWN0ZXIgbWFwcGluZ3MgaW4gZGlmZmVyZW50IGZvcm1hdHMuXG5cbiAgIE5vdGU6IEFuIGV2ZW4gbW9yZSBmbGV4aWJsZSBhcHByb2FjaCBpcyB0byBjcmVhdGUgYSBjdXN0b20gY2hhcmFjdGVyXG4gICAgIG1hcHBpbmcgY29kZWMgdXNpbmcgdGhlIGBgY29kZWNzYGAgbW9kdWxlIChzZWVcbiAgICAgYGBlbmNvZGluZ3MuY3AxMjUxYGAgZm9yIGFuIGV4YW1wbGUpLlxuXG5zdHIudXBwZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLiAgTm90ZSB0aGF0IGBgc3RyLnVwcGVyKCkuaXN1cHBlcigpYGAgbWlnaHRcbiAgIGJlIGBgRmFsc2VgYCBpZiBgYHNgYCBjb250YWlucyB1bmNhc2VkIGNoYXJhY3RlcnMgb3IgaWYgdGhlIFVuaWNvZGVcbiAgIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyKHMpIGlzIG5vdCAiTHUiIChMZXR0ZXIsXG4gICB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbiAgIFRoZSB1cHBlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuc3RyLnpmaWxsKHdpZHRoKVxuXG4gICBSZXR1cm4gdGhlIG51bWVyaWMgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggemVyb3MgaW4gYSBzdHJpbmcgb2ZcbiAgIGxlbmd0aCAqd2lkdGgqLiAgQSBzaWduIHByZWZpeCBpcyBoYW5kbGVkIGNvcnJlY3RseS4gIFRoZSBvcmlnaW5hbFxuICAgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG4nLAorICdzdHJpbmdzJzogJ1xuU3RyaW5nIGFuZCBCeXRlcyBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5TdHJpbmcgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIHN0cmluZ2xpdGVyYWwgICA6Oj0gW3N0cmluZ3ByZWZpeF0oc2hvcnRzdHJpbmcgfCBsb25nc3RyaW5nKVxuICAgc3RyaW5ncHJlZml4ICAgIDo6PSAiciIgfCAidSIgfCAiUiIgfCAiVSJcbiAgIHNob3J0c3RyaW5nICAgICA6Oj0gIlwnIiBzaG9ydHN0cmluZ2l0ZW0qICJcJyIgfCBcJyJcJyBzaG9ydHN0cmluZ2l0ZW0qIFwnIlwnXG4gICBsb25nc3RyaW5nICAgICAgOjo9ICJcJ1wnXCciIGxvbmdzdHJpbmdpdGVtKiAiXCdcJ1wnIiB8IFwnIiIiXCcgbG9uZ3N0cmluZ2l0ZW0qIFwnIiIiXCdcbiAgIHNob3J0c3RyaW5naXRlbSA6Oj0gc2hvcnRzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4gICBsb25nc3RyaW5naXRlbSAgOjo9IGxvbmdzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4gICBzaG9ydHN0cmluZ2NoYXIgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIiBvciBuZXdsaW5lIG9yIHRoZSBxdW90ZT5cbiAgIGxvbmdzdHJpbmdjaGFyICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuICAgc3RyaW5nZXNjYXBlc2VxIDo6PSAiXFwiIDxhbnkgc291cmNlIGNoYXJhY3Rlcj5cblxuICAgYnl0ZXNsaXRlcmFsICAgOjo9IGJ5dGVzcHJlZml4KHNob3J0Ynl0ZXMgfCBsb25nYnl0ZXMpXG4gICBieXRlc3ByZWZpeCAgICA6Oj0gImIiIHwgIkIiIHwgImJyIiB8ICJCciIgfCAiYlIiIHwgIkJSIiB8ICJyYiIgfCAickIiIHwgIlJiIiB8ICJSQiJcbiAgIHNob3J0Ynl0ZXMgICAgIDo6PSAiXCciIHNob3J0Ynl0ZXNpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRieXRlc2l0ZW0qIFwnIlwnXG4gICBsb25nYnl0ZXMgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ2J5dGVzaXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdieXRlc2l0ZW0qIFwnIiIiXCdcbiAgIHNob3J0Ynl0ZXNpdGVtIDo6PSBzaG9ydGJ5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBsb25nYnl0ZXNpdGVtICA6Oj0gbG9uZ2J5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBzaG9ydGJ5dGVzY2hhciA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nYnl0ZXNjaGFyICA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCI+XG4gICBieXRlc2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IEFTQ0lJIGNoYXJhY3Rlcj5cblxuT25lIHN5bnRhY3RpYyByZXN0cmljdGlvbiBub3QgaW5kaWNhdGVkIGJ5IHRoZXNlIHByb2R1Y3Rpb25zIGlzIHRoYXRcbndoaXRlc3BhY2UgaXMgbm90IGFsbG93ZWQgYmV0d2VlbiB0aGUgYGBzdHJpbmdwcmVmaXhgYCBvclxuYGBieXRlc3ByZWZpeGBgIGFuZCB0aGUgcmVzdCBvZiB0aGUgbGl0ZXJhbC4gVGhlIHNvdXJjZSBjaGFyYWN0ZXIgc2V0XG5pcyBkZWZpbmVkIGJ5IHRoZSBlbmNvZGluZyBkZWNsYXJhdGlvbjsgaXQgaXMgVVRGLTggaWYgbm8gZW5jb2RpbmdcbmRlY2xhcmF0aW9uIGlzIGdpdmVuIGluIHRoZSBzb3VyY2UgZmlsZTsgc2VlIHNlY3Rpb24gKkVuY29kaW5nXG5kZWNsYXJhdGlvbnMqLlxuXG5JbiBwbGFpbiBFbmdsaXNoOiBCb3RoIHR5cGVzIG9mIGxpdGVyYWxzIGNhbiBiZSBlbmNsb3NlZCBpbiBtYXRjaGluZ1xuc2luZ2xlIHF1b3RlcyAoYGBcJ2BgKSBvciBkb3VibGUgcXVvdGVzIChgYCJgYCkuICBUaGV5IGNhbiBhbHNvIGJlXG5lbmNsb3NlZCBpbiBtYXRjaGluZyBncm91cHMgb2YgdGhyZWUgc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMgKHRoZXNlXG5hcmUgZ2VuZXJhbGx5IHJlZmVycmVkIHRvIGFzICp0cmlwbGUtcXVvdGVkIHN0cmluZ3MqKS4gIFRoZSBiYWNrc2xhc2hcbihgYFxcYGApIGNoYXJhY3RlciBpcyB1c2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgb3RoZXJ3aXNlIGhhdmUgYVxuc3BlY2lhbCBtZWFuaW5nLCBzdWNoIGFzIG5ld2xpbmUsIGJhY2tzbGFzaCBpdHNlbGYsIG9yIHRoZSBxdW90ZVxuY2hhcmFjdGVyLlxuXG5CeXRlcyBsaXRlcmFscyBhcmUgYWx3YXlzIHByZWZpeGVkIHdpdGggYGBcJ2JcJ2BgIG9yIGBgXCdCXCdgYDsgdGhleVxucHJvZHVjZSBhbiBpbnN0YW5jZSBvZiB0aGUgYGBieXRlc2BgIHR5cGUgaW5zdGVhZCBvZiB0aGUgYGBzdHJgYCB0eXBlLlxuVGhleSBtYXkgb25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnM7IGJ5dGVzIHdpdGggYSBudW1lcmljIHZhbHVlIG9mXG4xMjggb3IgZ3JlYXRlciBtdXN0IGJlIGV4cHJlc3NlZCB3aXRoIGVzY2FwZXMuXG5cbkFzIG9mIFB5dGhvbiAzLjMgaXQgaXMgcG9zc2libGUgYWdhaW4gdG8gcHJlZml4IHVuaWNvZGUgc3RyaW5ncyB3aXRoIGFcbmBgdWBgIHByZWZpeCB0byBzaW1wbGlmeSBtYWludGVuYW5jZSBvZiBkdWFsIDIueCBhbmQgMy54IGNvZGViYXNlcy5cblxuQm90aCBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIG1heSBvcHRpb25hbGx5IGJlIHByZWZpeGVkIHdpdGggYVxubGV0dGVyIGBgXCdyXCdgYCBvciBgYFwnUlwnYGA7IHN1Y2ggc3RyaW5ncyBhcmUgY2FsbGVkICpyYXcgc3RyaW5ncyogYW5kXG50cmVhdCBiYWNrc2xhc2hlcyBhcyBsaXRlcmFsIGNoYXJhY3RlcnMuICBBcyBhIHJlc3VsdCwgaW4gc3RyaW5nXG5saXRlcmFscywgYGBcJ1xcVVwnYGAgYW5kIGBgXCdcXHVcJ2BgIGVzY2FwZXMgaW4gcmF3IHN0cmluZ3MgYXJlIG5vdCB0cmVhdGVkXG5zcGVjaWFsbHkuIEdpdmVuIHRoYXQgUHl0aG9uIDIueFwncyByYXcgdW5pY29kZSBsaXRlcmFscyBiZWhhdmVcbmRpZmZlcmVudGx5IHRoYW4gUHl0aG9uIDMueFwncyB0aGUgYGBcJ3VyXCdgYCBzeW50YXggaXMgbm90IHN1cHBvcnRlZC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiBUaGUgYGBcJ3JiXCdgYCBwcmVmaXggb2YgcmF3IGJ5dGVzIGxpdGVyYWxzIGhhc1xuICAgYmVlbiBhZGRlZCBhcyBhIHN5bm9ueW0gb2YgYGBcJ2JyXCdgYC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciB0aGUgdW5pY29kZSBsZWdhY3kgbGl0ZXJhbFxuICAgKGBgdVwndmFsdWVcJ2BgKSB3YXMgcmVpbnRyb2R1Y2VkIHRvIHNpbXBsaWZ5IHRoZSBtYWludGVuYW5jZSBvZiBkdWFsXG4gICBQeXRob24gMi54IGFuZCAzLnggY29kZWJhc2VzLiBTZWUgKipQRVAgNDE0KiogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cbkluIHRyaXBsZS1xdW90ZWQgc3RyaW5ncywgdW5lc2NhcGVkIG5ld2xpbmVzIGFuZCBxdW90ZXMgYXJlIGFsbG93ZWRcbihhbmQgYXJlIHJldGFpbmVkKSwgZXhjZXB0IHRoYXQgdGhyZWUgdW5lc2NhcGVkIHF1b3RlcyBpbiBhIHJvd1xudGVybWluYXRlIHRoZSBzdHJpbmcuICAoQSAicXVvdGUiIGlzIHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBvcGVuIHRoZVxuc3RyaW5nLCBpLmUuIGVpdGhlciBgYFwnYGAgb3IgYGAiYGAuKVxuXG5Vbmxlc3MgYW4gYGBcJ3JcJ2BgIG9yIGBgXCdSXCdgYCBwcmVmaXggaXMgcHJlc2VudCwgZXNjYXBlIHNlcXVlbmNlcyBpblxuc3RyaW5ncyBhcmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIHJ1bGVzIHNpbWlsYXIgdG8gdGhvc2UgdXNlZCBieVxuU3RhbmRhcmQgQy4gIFRoZSByZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlOlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICB8XG4rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG58IGBgXFxuZXdsaW5lYGAgICAgICB8IEJhY2tzbGFzaCBhbmQgbmV3bGluZSBpZ25vcmVkICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcXFxgYCAgICAgICAgICAgIHwgQmFja3NsYXNoIChgYFxcYGApICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcXCdgYCAgICAgICAgICAgIHwgU2luZ2xlIHF1b3RlIChgYFwnYGApICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcImBgICAgICAgICAgICAgfCBEb3VibGUgcXVvdGUgKGBgImBgKSAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXGFgYCAgICAgICAgICAgIHwgQVNDSUkgQmVsbCAoQkVMKSAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxiYGAgICAgICAgICAgICB8IEFTQ0lJIEJhY2tzcGFjZSAoQlMpICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcZmBgICAgICAgICAgICAgfCBBU0NJSSBGb3JtZmVlZCAoRkYpICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXG5gYCAgICAgICAgICAgIHwgQVNDSUkgTGluZWZlZWQgKExGKSAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxyYGAgICAgICAgICAgICB8IEFTQ0lJIENhcnJpYWdlIFJldHVybiAoQ1IpICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcdGBgICAgICAgICAgICAgfCBBU0NJSSBIb3Jpem9udGFsIFRhYiAoVEFCKSAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHZgYCAgICAgICAgICAgIHwgQVNDSUkgVmVydGljYWwgVGFiIChWVCkgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxvb29gYCAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIG9jdGFsIHZhbHVlICpvb28qICB8ICgxLDMpICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxceGhoYGAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBoZXggdmFsdWUgKmhoKiAgICAgfCAoMiwzKSAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcblxuRXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nIGxpdGVyYWxzIGFyZTpcblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgfFxuKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xufCBgYFxcTntuYW1lfWBgICAgICAgfCBDaGFyYWN0ZXIgbmFtZWQgKm5hbWUqIGluIHRoZSAgICAgfCAoNCkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCBVbmljb2RlIGRhdGFiYXNlICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHV4eHh4YGAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMTYtYml0IGhleCB2YWx1ZSAgIHwgKDUpICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgKnh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxVeHh4eHh4eHhgYCAgICB8IENoYXJhY3RlciB3aXRoIDMyLWJpdCBoZXggdmFsdWUgICB8ICg2KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8ICp4eHh4eHh4eCogICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gQXMgaW4gU3RhbmRhcmQgQywgdXAgdG8gdGhyZWUgb2N0YWwgZGlnaXRzIGFyZSBhY2NlcHRlZC5cblxuMi4gVW5saWtlIGluIFN0YW5kYXJkIEMsIGV4YWN0bHkgdHdvIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG4zLiBJbiBhIGJ5dGVzIGxpdGVyYWwsIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBlc2NhcGVzIGRlbm90ZSB0aGUgYnl0ZVxuICAgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuIEluIGEgc3RyaW5nIGxpdGVyYWwsIHRoZXNlIGVzY2FwZXMgZGVub3RlIGFcbiAgIFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggdGhlIGdpdmVuIHZhbHVlLlxuXG40LiBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciBuYW1lIGFsaWFzZXMgWzFdIGhhcyBiZWVuXG4gICBhZGRlZC5cblxuNS4gSW5kaXZpZHVhbCBjb2RlIHVuaXRzIHdoaWNoIGZvcm0gcGFydHMgb2YgYSBzdXJyb2dhdGUgcGFpciBjYW4gYmVcbiAgIGVuY29kZWQgdXNpbmcgdGhpcyBlc2NhcGUgc2VxdWVuY2UuICBFeGFjdGx5IGZvdXIgaGV4IGRpZ2l0cyBhcmVcbiAgIHJlcXVpcmVkLlxuXG42LiBBbnkgVW5pY29kZSBjaGFyYWN0ZXIgY2FuIGJlIGVuY29kZWQgdGhpcyB3YXksIGJ1dCBjaGFyYWN0ZXJzXG4gICBvdXRzaWRlIHRoZSBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUgKEJNUCkgd2lsbCBiZSBlbmNvZGVkIHVzaW5nIGFcbiAgIHN1cnJvZ2F0ZSBwYWlyIGlmIFB5dGhvbiBpcyBjb21waWxlZCB0byB1c2UgMTYtYml0IGNvZGUgdW5pdHMgKHRoZVxuICAgZGVmYXVsdCkuICBFeGFjdGx5IGVpZ2h0IGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG5Vbmxpa2UgU3RhbmRhcmQgQywgYWxsIHVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBsZWZ0IGluIHRoZVxuc3RyaW5nIHVuY2hhbmdlZCwgaS5lLiwgKnRoZSBiYWNrc2xhc2ggaXMgbGVmdCBpbiB0aGUgc3RyaW5nKi4gIChUaGlzXG5iZWhhdmlvciBpcyB1c2VmdWwgd2hlbiBkZWJ1Z2dpbmc6IGlmIGFuIGVzY2FwZSBzZXF1ZW5jZSBpcyBtaXN0eXBlZCxcbnRoZSByZXN1bHRpbmcgb3V0cHV0IGlzIG1vcmUgZWFzaWx5IHJlY29nbml6ZWQgYXMgYnJva2VuLikgIEl0IGlzIGFsc29cbmltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIGVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZ1xubGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3IgYnl0ZXNcbmxpdGVyYWxzLlxuXG5FdmVuIGluIGEgcmF3IHN0cmluZywgc3RyaW5nIHF1b3RlcyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLFxuYnV0IHRoZSBiYWNrc2xhc2ggcmVtYWlucyBpbiB0aGUgc3RyaW5nOyBmb3IgZXhhbXBsZSwgYGByIlxcIiJgYCBpcyBhXG52YWxpZCBzdHJpbmcgbGl0ZXJhbCBjb25zaXN0aW5nIG9mIHR3byBjaGFyYWN0ZXJzOiBhIGJhY2tzbGFzaCBhbmQgYVxuZG91YmxlIHF1b3RlOyBgYHIiXFwiYGAgaXMgbm90IGEgdmFsaWQgc3RyaW5nIGxpdGVyYWwgKGV2ZW4gYSByYXdcbnN0cmluZyBjYW5ub3QgZW5kIGluIGFuIG9kZCBudW1iZXIgb2YgYmFja3NsYXNoZXMpLiAgU3BlY2lmaWNhbGx5LCAqYVxucmF3IHN0cmluZyBjYW5ub3QgZW5kIGluIGEgc2luZ2xlIGJhY2tzbGFzaCogKHNpbmNlIHRoZSBiYWNrc2xhc2hcbndvdWxkIGVzY2FwZSB0aGUgZm9sbG93aW5nIHF1b3RlIGNoYXJhY3RlcikuICBOb3RlIGFsc28gdGhhdCBhIHNpbmdsZVxuYmFja3NsYXNoIGZvbGxvd2VkIGJ5IGEgbmV3bGluZSBpcyBpbnRlcnByZXRlZCBhcyB0aG9zZSB0d28gY2hhcmFjdGVyc1xuYXMgcGFydCBvZiB0aGUgc3RyaW5nLCAqbm90KiBhcyBhIGxpbmUgY29udGludWF0aW9uLlxuJywKICAnc3Vic2NyaXB0aW9ucyc6ICdcblN1YnNjcmlwdGlvbnNcbioqKioqKioqKioqKipcblxuQSBzdWJzY3JpcHRpb24gc2VsZWN0cyBhbiBpdGVtIG9mIGEgc2VxdWVuY2UgKHN0cmluZywgdHVwbGUgb3IgbGlzdClcbm9yIG1hcHBpbmcgKGRpY3Rpb25hcnkpIG9iamVjdDpcblxuICAgc3Vic2NyaXB0aW9uIDo6PSBwcmltYXJ5ICJbIiBleHByZXNzaW9uX2xpc3QgIl0iXG5cblRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYW4gb2JqZWN0IHRoYXQgc3VwcG9ydHMgc3Vic2NyaXB0aW9uLFxuZS5nLiBhIGxpc3Qgb3IgZGljdGlvbmFyeS4gIFVzZXItZGVmaW5lZCBvYmplY3RzIGNhbiBzdXBwb3J0XG5zdWJzY3JpcHRpb24gYnkgZGVmaW5pbmcgYSBgYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QuXG5cbkZvciBidWlsdC1pbiBvYmplY3RzLCB0aGVyZSBhcmUgdHdvIHR5cGVzIG9mIG9iamVjdHMgdGhhdCBzdXBwb3J0XG5zdWJzY3JpcHRpb246XG5cbklmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZywgdGhlIGV4cHJlc3Npb24gbGlzdCBtdXN0IGV2YWx1YXRlIHRvIGFuXG5vYmplY3Qgd2hvc2UgdmFsdWUgaXMgb25lIG9mIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nLCBhbmQgdGhlXG5zdWJzY3JpcHRpb24gc2VsZWN0cyB0aGUgdmFsdWUgaW4gdGhlIG1hcHBpbmcgdGhhdCBjb3JyZXNwb25kcyB0byB0aGF0XG5rZXkuICAoVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBhIHR1cGxlIGV4Y2VwdCBpZiBpdCBoYXMgZXhhY3RseSBvbmVcbml0ZW0uKVxuXG5JZiB0aGUgcHJpbWFyeSBpcyBhIHNlcXVlbmNlLCB0aGUgZXhwcmVzc2lvbiAobGlzdCkgbXVzdCBldmFsdWF0ZSB0b1xuYW4gaW50ZWdlciBvciBhIHNsaWNlIChhcyBkaXNjdXNzZWQgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uKS5cblxuVGhlIGZvcm1hbCBzeW50YXggbWFrZXMgbm8gc3BlY2lhbCBwcm92aXNpb24gZm9yIG5lZ2F0aXZlIGluZGljZXMgaW5cbnNlcXVlbmNlczsgaG93ZXZlciwgYnVpbHQtaW4gc2VxdWVuY2VzIGFsbCBwcm92aWRlIGEgYGBfX2dldGl0ZW1fXygpYGBcbm1ldGhvZCB0aGF0IGludGVycHJldHMgbmVnYXRpdmUgaW5kaWNlcyBieSBhZGRpbmcgdGhlIGxlbmd0aCBvZiB0aGVcbnNlcXVlbmNlIHRvIHRoZSBpbmRleCAoc28gdGhhdCBgYHhbLTFdYGAgc2VsZWN0cyB0aGUgbGFzdCBpdGVtIG9mXG5gYHhgYCkuICBUaGUgcmVzdWx0aW5nIHZhbHVlIG11c3QgYmUgYSBub25uZWdhdGl2ZSBpbnRlZ2VyIGxlc3MgdGhhblxudGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgc2VxdWVuY2UsIGFuZCB0aGUgc3Vic2NyaXB0aW9uIHNlbGVjdHMgdGhlXG5pdGVtIHdob3NlIGluZGV4IGlzIHRoYXQgdmFsdWUgKGNvdW50aW5nIGZyb20gemVybykuIFNpbmNlIHRoZSBzdXBwb3J0XG5mb3IgbmVnYXRpdmUgaW5kaWNlcyBhbmQgc2xpY2luZyBvY2N1cnMgaW4gdGhlIG9iamVjdFwnc1xuYGBfX2dldGl0ZW1fXygpYGAgbWV0aG9kLCBzdWJjbGFzc2VzIG92ZXJyaWRpbmcgdGhpcyBtZXRob2Qgd2lsbCBuZWVkXG50byBleHBsaWNpdGx5IGFkZCB0aGF0IHN1cHBvcnQuXG5cbkEgc3RyaW5nXCdzIGl0ZW1zIGFyZSBjaGFyYWN0ZXJzLiAgQSBjaGFyYWN0ZXIgaXMgbm90IGEgc2VwYXJhdGUgZGF0YVxudHlwZSBidXQgYSBzdHJpbmcgb2YgZXhhY3RseSBvbmUgY2hhcmFjdGVyLlxuJywKICAndHJ1dGgnOiAiXG5UcnV0aCBWYWx1ZSBUZXN0aW5nXG4qKioqKioqKioqKioqKioqKioqXG5cbkFueSBvYmplY3QgY2FuIGJlIHRlc3RlZCBmb3IgdHJ1dGggdmFsdWUsIGZvciB1c2UgaW4gYW4gYGBpZmBgIG9yXG5gYHdoaWxlYGAgY29uZGl0aW9uIG9yIGFzIG9wZXJhbmQgb2YgdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyBiZWxvdy4gVGhlXG5mb2xsb3dpbmcgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGZhbHNlOlxuXG4qIGBgTm9uZWBgXG5cbiogYGBGYWxzZWBgXG5cbiogemVybyBvZiBhbnkgbnVtZXJpYyB0eXBlLCBmb3IgZXhhbXBsZSwgYGAwYGAsIGBgMC4wYGAsIGBgMGpgYC5cblxuKiBhbnkgZW1wdHkgc2VxdWVuY2UsIGZvciBleGFtcGxlLCBgYCcnYGAsIGBgKClgYCwgYGBbXWBgLlxuXG4qIGFueSBlbXB0eSBtYXBwaW5nLCBmb3IgZXhhbXBsZSwgYGB7fWBgLlxuXG4qIGluc3RhbmNlcyBvZiB1c2VyLWRlZmluZWQgY2xhc3NlcywgaWYgdGhlIGNsYXNzIGRlZmluZXMgYVxuICBgYF9fYm9vbF9fKClgYCBvciBgYF9fbGVuX18oKWBgIG1ldGhvZCwgd2hlbiB0aGF0IG1ldGhvZCByZXR1cm5zIHRoZVxuICBpbnRlZ2VyIHplcm8gb3IgYGBib29sYGAgdmFsdWUgYGBGYWxzZWBgLiBbMV1cblxuQWxsIG90aGVyIHZhbHVlcyBhcmUgY29uc2lkZXJlZCB0cnVlIC0tLSBzbyBvYmplY3RzIG9mIG1hbnkgdHlwZXMgYXJlXG5hbHdheXMgdHJ1ZS5cblxuT3BlcmF0aW9ucyBhbmQgYnVpbHQtaW4gZnVuY3Rpb25zIHRoYXQgaGF2ZSBhIEJvb2xlYW4gcmVzdWx0IGFsd2F5c1xucmV0dXJuIGBgMGBgIG9yIGBgRmFsc2VgYCBmb3IgZmFsc2UgYW5kIGBgMWBgIG9yIGBgVHJ1ZWBgIGZvciB0cnVlLFxudW5sZXNzIG90aGVyd2lzZSBzdGF0ZWQuIChJbXBvcnRhbnQgZXhjZXB0aW9uOiB0aGUgQm9vbGVhbiBvcGVyYXRpb25zXG5gYG9yYGAgYW5kIGBgYW5kYGAgYWx3YXlzIHJldHVybiBvbmUgb2YgdGhlaXIgb3BlcmFuZHMuKVxuIiwKLSAndHJ5JzogJ1xuVGhlIGBgdHJ5YGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGBgdHJ5YGAgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgY29kZVxuZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50czpcblxuICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbiAgIHRyeTFfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXSAiOiIgc3VpdGUpK1xuICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbiAgICAgICAgICAgICAgICAgWyJmaW5hbGx5IiAiOiIgc3VpdGVdXG4gICB0cnkyX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAiZmluYWxseSIgIjoiIHN1aXRlXG5cblRoZSBgYGV4Y2VwdGBgIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlblxubm8gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgYGB0cnlgYCBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG5leGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSBgYHRyeWBgIHN1aXRlLCBhIHNlYXJjaCBmb3JcbmFuIGV4Y2VwdGlvbiBoYW5kbGVyIGlzIHN0YXJ0ZWQuICBUaGlzIHNlYXJjaCBpbnNwZWN0cyB0aGUgZXhjZXB0XG5jbGF1c2VzIGluIHR1cm4gdW50aWwgb25lIGlzIGZvdW5kIHRoYXQgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLiAgQW5cbmV4cHJlc3Npb24tbGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXNcbmFueSBleGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXRcbmV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlXG5yZXN1bHRpbmcgb2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXNcbmNvbXBhdGlibGUgd2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGVcbmV4Y2VwdGlvbiBvYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZVxuZXhjZXB0aW9uLlxuXG5JZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNvbnRpbnVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb24gdGhlIGludm9jYXRpb24gc3RhY2suXG5bMV1cblxuSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCBjbGF1c2VcbnJhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBvcmlnaW5hbCBzZWFyY2ggZm9yIGEgaGFuZGxlciBpcyBjYW5jZWxlZCBhbmRcbmEgc2VhcmNoIHN0YXJ0cyBmb3IgdGhlIG5ldyBleGNlcHRpb24gaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uXG50aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlIGBgdHJ5YGAgc3RhdGVtZW50XG5yYWlzZWQgdGhlIGV4Y2VwdGlvbikuXG5cbldoZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzIGFzc2lnbmVkIHRvXG50aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgYGBhc2BgIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLFxuaWYgcHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdFxuY2xhdXNlcyBtdXN0IGhhdmUgYW4gZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzIGJsb2NrIGlzXG5yZWFjaGVkLCBleGVjdXRpb24gY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5IHN0YXRlbWVudC5cbihUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgZXhjZXB0aW9uLFxuYW5kIHRoZSBleGNlcHRpb24gb2NjdXJzIGluIHRoZSB0cnkgY2xhdXNlIG9mIHRoZSBpbm5lciBoYW5kbGVyLCB0aGVcbm91dGVyIGhhbmRsZXIgd2lsbCBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24uKVxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyBgYGFzIHRhcmdldGBgLCBpdCBpcyBjbGVhcmVkXG5hdCB0aGUgZW5kIG9mIHRoZSBleGNlcHQgY2xhdXNlLiAgVGhpcyBpcyBhcyBpZlxuXG4gICBleGNlcHQgRSBhcyBOOlxuICAgICAgIGZvb1xuXG53YXMgdHJhbnNsYXRlZCB0b1xuXG4gICBleGNlcHQgRSBhcyBOOlxuICAgICAgIHRyeTpcbiAgICAgICAgICAgZm9vXG4gICAgICAgZmluYWxseTpcbiAgICAgICAgICAgZGVsIE5cblxuVGhpcyBtZWFucyB0aGUgZXhjZXB0aW9uIG11c3QgYmUgYXNzaWduZWQgdG8gYSBkaWZmZXJlbnQgbmFtZSB0byBiZVxuYWJsZSB0byByZWZlciB0byBpdCBhZnRlciB0aGUgZXhjZXB0IGNsYXVzZS4gIEV4Y2VwdGlvbnMgYXJlIGNsZWFyZWRcbmJlY2F1c2Ugd2l0aCB0aGUgdHJhY2ViYWNrIGF0dGFjaGVkIHRvIHRoZW0sIHRoZXkgZm9ybSBhIHJlZmVyZW5jZVxuY3ljbGUgd2l0aCB0aGUgc3RhY2sgZnJhbWUsIGtlZXBpbmcgYWxsIGxvY2FscyBpbiB0aGF0IGZyYW1lIGFsaXZlXG51bnRpbCB0aGUgbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gb2NjdXJzLlxuXG5CZWZvcmUgYW4gZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZCwgZGV0YWlscyBhYm91dCB0aGVcbmV4Y2VwdGlvbiBhcmUgc3RvcmVkIGluIHRoZSBgYHN5c2BgIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2VzcyB2aWFcbmBgc3lzLmV4Y19pbmZvKClgYC4gYGBzeXMuZXhjX2luZm8oKWBgIHJldHVybnMgYSAzLXR1cGxlIGNvbnNpc3Rpbmcgb2ZcbnRoZSBleGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdFxuKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKSBpZGVudGlmeWluZyB0aGUgcG9pbnQgaW5cbnRoZSBwcm9ncmFtIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuICBgYHN5cy5leGNfaW5mbygpYGAgdmFsdWVzXG5hcmUgcmVzdG9yZWQgdG8gdGhlaXIgcHJldmlvdXMgdmFsdWVzIChiZWZvcmUgdGhlIGNhbGwpIHdoZW4gcmV0dXJuaW5nXG5mcm9tIGEgZnVuY3Rpb24gdGhhdCBoYW5kbGVkIGFuIGV4Y2VwdGlvbi5cblxuVGhlIG9wdGlvbmFsIGBgZWxzZWBgIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgYGB0cnlgYCBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSBgYGVsc2VgYCBjbGF1c2VcbmFyZSBub3QgaGFuZGxlZCBieSB0aGUgcHJlY2VkaW5nIGBgZXhjZXB0YGAgY2xhdXNlcy5cblxuSWYgYGBmaW5hbGx5YGAgaXMgcHJlc2VudCwgaXQgc3BlY2lmaWVzIGEgXCdjbGVhbnVwXCcgaGFuZGxlci4gIFRoZVxuYGB0cnlgYCBjbGF1c2UgaXMgZXhlY3V0ZWQsIGluY2x1ZGluZyBhbnkgYGBleGNlcHRgYCBhbmQgYGBlbHNlYGBcbmNsYXVzZXMuICBJZiBhbiBleGNlcHRpb24gb2NjdXJzIGluIGFueSBvZiB0aGUgY2xhdXNlcyBhbmQgaXMgbm90XG5oYW5kbGVkLCB0aGUgZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgYGBmaW5hbGx5YGAgY2xhdXNlIGlzXG5leGVjdXRlZC4gIElmIHRoZXJlIGlzIGEgc2F2ZWQgZXhjZXB0aW9uLCBpdCBpcyByZS1yYWlzZWQgYXQgdGhlIGVuZFxub2YgdGhlIGBgZmluYWxseWBgIGNsYXVzZS4gSWYgdGhlIGBgZmluYWxseWBgIGNsYXVzZSByYWlzZXMgYW5vdGhlclxuZXhjZXB0aW9uIG9yIGV4ZWN1dGVzIGEgYGByZXR1cm5gYCBvciBgYGJyZWFrYGAgc3RhdGVtZW50LCB0aGUgc2F2ZWRcbmV4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uICBUaGUgZXhjZXB0aW9uXG5pbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtIGR1cmluZyBleGVjdXRpb24gb2YgdGhlXG5gYGZpbmFsbHlgYCBjbGF1c2UuXG5cbldoZW4gYSBgYHJldHVybmBgLCBgYGJyZWFrYGAgb3IgYGBjb250aW51ZWBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpblxudGhlIGBgdHJ5YGAgc3VpdGUgb2YgYSBgYHRyeWBgLi4uYGBmaW5hbGx5YGAgc3RhdGVtZW50LCB0aGVcbmBgZmluYWxseWBgIGNsYXVzZSBpcyBhbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBpcyBpbGxlZ2FsIGluIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGFcbnByb2JsZW0gd2l0aCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmVcbmxpZnRlZCBpbiB0aGUgZnV0dXJlKS5cblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgYGByYWlzZWBgIHN0YXRlbWVudCB0b1xuZ2VuZXJhdGUgZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlIHN0YXRlbWVudCouXG4nLAotICd0eXBlcyc6ICdcblRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkJlbG93IGlzIGEgbGlzdCBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgYnVpbHQgaW50byBQeXRob24uICBFeHRlbnNpb25cbm1vZHVsZXMgKHdyaXR0ZW4gaW4gQywgSmF2YSwgb3Igb3RoZXIgbGFuZ3VhZ2VzLCBkZXBlbmRpbmcgb24gdGhlXG5pbXBsZW1lbnRhdGlvbikgY2FuIGRlZmluZSBhZGRpdGlvbmFsIHR5cGVzLiAgRnV0dXJlIHZlcnNpb25zIG9mXG5QeXRob24gbWF5IGFkZCB0eXBlcyB0byB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4sIHJhdGlvbmFsIG51bWJlcnMsXG5lZmZpY2llbnRseSBzdG9yZWQgYXJyYXlzIG9mIGludGVnZXJzLCBldGMuKSwgYWx0aG91Z2ggc3VjaCBhZGRpdGlvbnNcbndpbGwgb2Z0ZW4gYmUgcHJvdmlkZWQgdmlhIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGluc3RlYWQuXG5cblNvbWUgb2YgdGhlIHR5cGUgZGVzY3JpcHRpb25zIGJlbG93IGNvbnRhaW4gYSBwYXJhZ3JhcGggbGlzdGluZ1xuXCdzcGVjaWFsIGF0dHJpYnV0ZXMuXCcgIFRoZXNlIGFyZSBhdHRyaWJ1dGVzIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlXG5pbXBsZW1lbnRhdGlvbiBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IgZ2VuZXJhbCB1c2UuICBUaGVpciBkZWZpbml0aW9uXG5tYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG5cbk5vbmVcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZSBgYE5vbmVgYC5cbiAgIEl0IGlzIHVzZWQgdG8gc2lnbmlmeSB0aGUgYWJzZW5jZSBvZiBhIHZhbHVlIGluIG1hbnkgc2l0dWF0aW9ucyxcbiAgIGUuZy4sIGl0IGlzIHJldHVybmVkIGZyb20gZnVuY3Rpb25zIHRoYXQgZG9uXCd0IGV4cGxpY2l0bHkgcmV0dXJuXG4gICBhbnl0aGluZy4gSXRzIHRydXRoIHZhbHVlIGlzIGZhbHNlLlxuXG5Ob3RJbXBsZW1lbnRlZFxuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lXG4gICBgYE5vdEltcGxlbWVudGVkYGAuIE51bWVyaWMgbWV0aG9kcyBhbmQgcmljaCBjb21wYXJpc29uIG1ldGhvZHMgbWF5XG4gICByZXR1cm4gdGhpcyB2YWx1ZSBpZiB0aGV5IGRvIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgdGhlXG4gICBvcGVyYW5kcyBwcm92aWRlZC4gIChUaGUgaW50ZXJwcmV0ZXIgd2lsbCB0aGVuIHRyeSB0aGUgcmVmbGVjdGVkXG4gICBvcGVyYXRpb24sIG9yIHNvbWUgb3RoZXIgZmFsbGJhY2ssIGRlcGVuZGluZyBvbiB0aGUgb3BlcmF0b3IuKSAgSXRzXG4gICB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuXG5FbGxpcHNpc1xuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBsaXRlcmFsIGBgLi4uYGAgb3IgdGhlXG4gICBidWlsdC1pbiBuYW1lIGBgRWxsaXBzaXNgYC4gIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuXG5gYG51bWJlcnMuTnVtYmVyYGBcbiAgIFRoZXNlIGFyZSBjcmVhdGVkIGJ5IG51bWVyaWMgbGl0ZXJhbHMgYW5kIHJldHVybmVkIGFzIHJlc3VsdHMgYnlcbiAgIGFyaXRobWV0aWMgb3BlcmF0b3JzIGFuZCBhcml0aG1ldGljIGJ1aWx0LWluIGZ1bmN0aW9ucy4gIE51bWVyaWNcbiAgIG9iamVjdHMgYXJlIGltbXV0YWJsZTsgb25jZSBjcmVhdGVkIHRoZWlyIHZhbHVlIG5ldmVyIGNoYW5nZXMuXG4gICBQeXRob24gbnVtYmVycyBhcmUgb2YgY291cnNlIHN0cm9uZ2x5IHJlbGF0ZWQgdG8gbWF0aGVtYXRpY2FsXG4gICBudW1iZXJzLCBidXQgc3ViamVjdCB0byB0aGUgbGltaXRhdGlvbnMgb2YgbnVtZXJpY2FsIHJlcHJlc2VudGF0aW9uXG4gICBpbiBjb21wdXRlcnMuXG5cbiAgIFB5dGhvbiBkaXN0aW5ndWlzaGVzIGJldHdlZW4gaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIGFuZFxuICAgY29tcGxleCBudW1iZXJzOlxuXG4gICBgYG51bWJlcnMuSW50ZWdyYWxgYFxuICAgICAgVGhlc2UgcmVwcmVzZW50IGVsZW1lbnRzIGZyb20gdGhlIG1hdGhlbWF0aWNhbCBzZXQgb2YgaW50ZWdlcnNcbiAgICAgIChwb3NpdGl2ZSBhbmQgbmVnYXRpdmUpLlxuXG4gICAgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGludGVnZXJzOlxuXG4gICAgICBJbnRlZ2VycyAoYGBpbnRgYClcblxuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IG51bWJlcnMgaW4gYW4gdW5saW1pdGVkIHJhbmdlLCBzdWJqZWN0IHRvXG4gICAgICAgICBhdmFpbGFibGUgKHZpcnR1YWwpIG1lbW9yeSBvbmx5LiAgRm9yIHRoZSBwdXJwb3NlIG9mIHNoaWZ0XG4gICAgICAgICBhbmQgbWFzayBvcGVyYXRpb25zLCBhIGJpbmFyeSByZXByZXNlbnRhdGlvbiBpcyBhc3N1bWVkLCBhbmRcbiAgICAgICAgIG5lZ2F0aXZlIG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGluIGEgdmFyaWFudCBvZiAyXCdzXG4gICAgICAgICBjb21wbGVtZW50IHdoaWNoIGdpdmVzIHRoZSBpbGx1c2lvbiBvZiBhbiBpbmZpbml0ZSBzdHJpbmcgb2ZcbiAgICAgICAgIHNpZ24gYml0cyBleHRlbmRpbmcgdG8gdGhlIGxlZnQuXG5cbiAgICAgIEJvb2xlYW5zIChgYGJvb2xgYClcbiAgICAgICAgIFRoZXNlIHJlcHJlc2VudCB0aGUgdHJ1dGggdmFsdWVzIEZhbHNlIGFuZCBUcnVlLiAgVGhlIHR3b1xuICAgICAgICAgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIHZhbHVlcyBGYWxzZSBhbmQgVHJ1ZSBhcmUgdGhlIG9ubHlcbiAgICAgICAgIEJvb2xlYW4gb2JqZWN0cy4gVGhlIEJvb2xlYW4gdHlwZSBpcyBhIHN1YnR5cGUgb2YgdGhlIGludGVnZXJcbiAgICAgICAgIHR5cGUsIGFuZCBCb29sZWFuIHZhbHVlcyBiZWhhdmUgbGlrZSB0aGUgdmFsdWVzIDAgYW5kIDEsXG4gICAgICAgICByZXNwZWN0aXZlbHksIGluIGFsbW9zdCBhbGwgY29udGV4dHMsIHRoZSBleGNlcHRpb24gYmVpbmdcbiAgICAgICAgIHRoYXQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcsIHRoZSBzdHJpbmdzIGBgIkZhbHNlImBgIG9yXG4gICAgICAgICBgYCJUcnVlImBgIGFyZSByZXR1cm5lZCwgcmVzcGVjdGl2ZWx5LlxuXG4gICAgICBUaGUgcnVsZXMgZm9yIGludGVnZXIgcmVwcmVzZW50YXRpb24gYXJlIGludGVuZGVkIHRvIGdpdmUgdGhlXG4gICAgICBtb3N0IG1lYW5pbmdmdWwgaW50ZXJwcmV0YXRpb24gb2Ygc2hpZnQgYW5kIG1hc2sgb3BlcmF0aW9uc1xuICAgICAgaW52b2x2aW5nIG5lZ2F0aXZlIGludGVnZXJzLlxuXG4gICBgYG51bWJlcnMuUmVhbGBgIChgYGZsb2F0YGApXG4gICAgICBUaGVzZSByZXByZXNlbnQgbWFjaGluZS1sZXZlbCBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50XG4gICAgICBudW1iZXJzLiBZb3UgYXJlIGF0IHRoZSBtZXJjeSBvZiB0aGUgdW5kZXJseWluZyBtYWNoaW5lXG4gICAgICBhcmNoaXRlY3R1cmUgKGFuZCBDIG9yIEphdmEgaW1wbGVtZW50YXRpb24pIGZvciB0aGUgYWNjZXB0ZWRcbiAgICAgIHJhbmdlIGFuZCBoYW5kbGluZyBvZiBvdmVyZmxvdy4gUHl0aG9uIGRvZXMgbm90IHN1cHBvcnQgc2luZ2xlLVxuICAgICAgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnM7IHRoZSBzYXZpbmdzIGluIHByb2Nlc3NvciBhbmRcbiAgICAgIG1lbW9yeSB1c2FnZSB0aGF0IGFyZSB1c3VhbGx5IHRoZSByZWFzb24gZm9yIHVzaW5nIHRoZXNlIGlzXG4gICAgICBkd2FyZmVkIGJ5IHRoZSBvdmVyaGVhZCBvZiB1c2luZyBvYmplY3RzIGluIFB5dGhvbiwgc28gdGhlcmUgaXNcbiAgICAgIG5vIHJlYXNvbiB0byBjb21wbGljYXRlIHRoZSBsYW5ndWFnZSB3aXRoIHR3byBraW5kcyBvZiBmbG9hdGluZ1xuICAgICAgcG9pbnQgbnVtYmVycy5cblxuICAgYGBudW1iZXJzLkNvbXBsZXhgYCAoYGBjb21wbGV4YGApXG4gICAgICBUaGVzZSByZXByZXNlbnQgY29tcGxleCBudW1iZXJzIGFzIGEgcGFpciBvZiBtYWNoaW5lLWxldmVsXG4gICAgICBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICBUaGUgc2FtZSBjYXZlYXRzIGFwcGx5XG4gICAgICBhcyBmb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gVGhlIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cyBvZiBhXG4gICAgICBjb21wbGV4IG51bWJlciBgYHpgYCBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIHJlYWQtb25seVxuICAgICAgYXR0cmlidXRlcyBgYHoucmVhbGBgIGFuZCBgYHouaW1hZ2BgLlxuXG5TZXF1ZW5jZXNcbiAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgb3JkZXJlZCBzZXRzIGluZGV4ZWQgYnkgbm9uLW5lZ2F0aXZlXG4gICBudW1iZXJzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgIHJldHVybnMgdGhlIG51bWJlciBvZlxuICAgaXRlbXMgb2YgYSBzZXF1ZW5jZS4gV2hlbiB0aGUgbGVuZ3RoIG9mIGEgc2VxdWVuY2UgaXMgKm4qLCB0aGVcbiAgIGluZGV4IHNldCBjb250YWlucyB0aGUgbnVtYmVycyAwLCAxLCAuLi4sICpuKi0xLiAgSXRlbSAqaSogb2ZcbiAgIHNlcXVlbmNlICphKiBpcyBzZWxlY3RlZCBieSBgYGFbaV1gYC5cblxuICAgU2VxdWVuY2VzIGFsc28gc3VwcG9ydCBzbGljaW5nOiBgYGFbaTpqXWBgIHNlbGVjdHMgYWxsIGl0ZW1zIHdpdGhcbiAgIGluZGV4ICprKiBzdWNoIHRoYXQgKmkqIGBgPD1gYCAqayogYGA8YGAgKmoqLiAgV2hlbiB1c2VkIGFzIGFuXG4gICBleHByZXNzaW9uLCBhIHNsaWNlIGlzIGEgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZS4gIFRoaXMgaW1wbGllc1xuICAgdGhhdCB0aGUgaW5kZXggc2V0IGlzIHJlbnVtYmVyZWQgc28gdGhhdCBpdCBzdGFydHMgYXQgMC5cblxuICAgU29tZSBzZXF1ZW5jZXMgYWxzbyBzdXBwb3J0ICJleHRlbmRlZCBzbGljaW5nIiB3aXRoIGEgdGhpcmQgInN0ZXAiXG4gICBwYXJhbWV0ZXI6IGBgYVtpOmo6a11gYCBzZWxlY3RzIGFsbCBpdGVtcyBvZiAqYSogd2l0aCBpbmRleCAqeCpcbiAgIHdoZXJlIGBgeCA9IGkgKyBuKmtgYCwgKm4qIGBgPj1gYCBgYDBgYCBhbmQgKmkqIGBgPD1gYCAqeCogYGA8YGBcbiAgICpqKi5cblxuICAgU2VxdWVuY2VzIGFyZSBkaXN0aW5ndWlzaGVkIGFjY29yZGluZyB0byB0aGVpciBtdXRhYmlsaXR5OlxuXG4gICBJbW11dGFibGUgc2VxdWVuY2VzXG4gICAgICBBbiBvYmplY3Qgb2YgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGUgY2Fubm90IGNoYW5nZSBvbmNlIGl0IGlzXG4gICAgICBjcmVhdGVkLiAgKElmIHRoZSBvYmplY3QgY29udGFpbnMgcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzLFxuICAgICAgdGhlc2Ugb3RoZXIgb2JqZWN0cyBtYXkgYmUgbXV0YWJsZSBhbmQgbWF5IGJlIGNoYW5nZWQ7IGhvd2V2ZXIsXG4gICAgICB0aGUgY29sbGVjdGlvbiBvZiBvYmplY3RzIGRpcmVjdGx5IHJlZmVyZW5jZWQgYnkgYW4gaW1tdXRhYmxlXG4gICAgICBvYmplY3QgY2Fubm90IGNoYW5nZS4pXG5cbiAgICAgIFRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXM6XG5cbiAgICAgIFN0cmluZ3NcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHN0cmluZyBvYmplY3QgYXJlIFVuaWNvZGUgY29kZSB1bml0cy4gIEFcbiAgICAgICAgIFVuaWNvZGUgY29kZSB1bml0IGlzIHJlcHJlc2VudGVkIGJ5IGEgc3RyaW5nIG9iamVjdCBvZiBvbmVcbiAgICAgICAgIGl0ZW0gYW5kIGNhbiBob2xkIGVpdGhlciBhIDE2LWJpdCBvciAzMi1iaXQgdmFsdWVcbiAgICAgICAgIHJlcHJlc2VudGluZyBhIFVuaWNvZGUgb3JkaW5hbCAodGhlIG1heGltdW0gdmFsdWUgZm9yIHRoZVxuICAgICAgICAgb3JkaW5hbCBpcyBnaXZlbiBpbiBgYHN5cy5tYXh1bmljb2RlYGAsIGFuZCBkZXBlbmRzIG9uIGhvd1xuICAgICAgICAgUHl0aG9uIGlzIGNvbmZpZ3VyZWQgYXQgY29tcGlsZSB0aW1lKS4gIFN1cnJvZ2F0ZSBwYWlycyBtYXlcbiAgICAgICAgIGJlIHByZXNlbnQgaW4gdGhlIFVuaWNvZGUgb2JqZWN0LCBhbmQgd2lsbCBiZSByZXBvcnRlZCBhcyB0d29cbiAgICAgICAgIHNlcGFyYXRlIGl0ZW1zLiAgVGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGNocigpYGAgYW5kXG4gICAgICAgICBgYG9yZCgpYGAgY29udmVydCBiZXR3ZWVuIGNvZGUgdW5pdHMgYW5kIG5vbm5lZ2F0aXZlIGludGVnZXJzXG4gICAgICAgICByZXByZXNlbnRpbmcgdGhlIFVuaWNvZGUgb3JkaW5hbHMgYXMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZVxuICAgICAgICAgU3RhbmRhcmQgMy4wLiBDb252ZXJzaW9uIGZyb20gYW5kIHRvIG90aGVyIGVuY29kaW5ncyBhcmVcbiAgICAgICAgIHBvc3NpYmxlIHRocm91Z2ggdGhlIHN0cmluZyBtZXRob2QgYGBlbmNvZGUoKWBgLlxuXG4gICAgICBUdXBsZXNcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHR1cGxlIGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuIFR1cGxlcyBvZlxuICAgICAgICAgdHdvIG9yIG1vcmUgaXRlbXMgYXJlIGZvcm1lZCBieSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMgb2ZcbiAgICAgICAgIGV4cHJlc3Npb25zLiAgQSB0dXBsZSBvZiBvbmUgaXRlbSAoYSBcJ3NpbmdsZXRvblwnKSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhZmZpeGluZyBhIGNvbW1hIHRvIGFuIGV4cHJlc3Npb24gKGFuIGV4cHJlc3Npb24gYnlcbiAgICAgICAgIGl0c2VsZiBkb2VzIG5vdCBjcmVhdGUgYSB0dXBsZSwgc2luY2UgcGFyZW50aGVzZXMgbXVzdCBiZVxuICAgICAgICAgdXNhYmxlIGZvciBncm91cGluZyBvZiBleHByZXNzaW9ucykuICBBbiBlbXB0eSB0dXBsZSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhbiBlbXB0eSBwYWlyIG9mIHBhcmVudGhlc2VzLlxuXG4gICAgICBCeXRlc1xuICAgICAgICAgQSBieXRlcyBvYmplY3QgaXMgYW4gaW1tdXRhYmxlIGFycmF5LiAgVGhlIGl0ZW1zIGFyZSA4LWJpdFxuICAgICAgICAgYnl0ZXMsIHJlcHJlc2VudGVkIGJ5IGludGVnZXJzIGluIHRoZSByYW5nZSAwIDw9IHggPCAyNTYuXG4gICAgICAgICBCeXRlcyBsaXRlcmFscyAobGlrZSBgYGJcJ2FiY1wnYGAgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgICAgICAgYGBieXRlcygpYGAgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGJ5dGVzIG9iamVjdHMuICBBbHNvLFxuICAgICAgICAgYnl0ZXMgb2JqZWN0cyBjYW4gYmUgZGVjb2RlZCB0byBzdHJpbmdzIHZpYSB0aGUgYGBkZWNvZGUoKWBgXG4gICAgICAgICBtZXRob2QuXG5cbiAgIE11dGFibGUgc2VxdWVuY2VzXG4gICAgICBNdXRhYmxlIHNlcXVlbmNlcyBjYW4gYmUgY2hhbmdlZCBhZnRlciB0aGV5IGFyZSBjcmVhdGVkLiAgVGhlXG4gICAgICBzdWJzY3JpcHRpb24gYW5kIHNsaWNpbmcgbm90YXRpb25zIGNhbiBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgb2ZcbiAgICAgIGFzc2lnbm1lbnQgYW5kIGBgZGVsYGAgKGRlbGV0ZSkgc3RhdGVtZW50cy5cblxuICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG5cbiAgICAgIExpc3RzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyBhcmVcbiAgICAgICAgIGZvcm1lZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgaW5cbiAgICAgICAgIHNxdWFyZSBicmFja2V0cy4gKE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gc3BlY2lhbCBjYXNlcyBuZWVkZWRcbiAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG5cbiAgICAgIEJ5dGUgQXJyYXlzXG4gICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkIGJ5XG4gICAgICAgICB0aGUgYnVpbHQtaW4gYGBieXRlYXJyYXkoKWBgIGNvbnN0cnVjdG9yLiAgQXNpZGUgZnJvbSBiZWluZ1xuICAgICAgICAgbXV0YWJsZSAoYW5kIGhlbmNlIHVuaGFzaGFibGUpLCBieXRlIGFycmF5cyBvdGhlcndpc2UgcHJvdmlkZVxuICAgICAgICAgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZCBmdW5jdGlvbmFsaXR5IGFzIGltbXV0YWJsZSBieXRlc1xuICAgICAgICAgb2JqZWN0cy5cblxuICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGUgYGBhcnJheWBgIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgZXhhbXBsZSBvZlxuICAgICAgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsIGFzIGRvZXMgdGhlIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUuXG5cblNldCB0eXBlc1xuICAgVGhlc2UgcmVwcmVzZW50IHVub3JkZXJlZCwgZmluaXRlIHNldHMgb2YgdW5pcXVlLCBpbW11dGFibGVcbiAgIG9iamVjdHMuIEFzIHN1Y2gsIHRoZXkgY2Fubm90IGJlIGluZGV4ZWQgYnkgYW55IHN1YnNjcmlwdC4gSG93ZXZlcixcbiAgIHRoZXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgXG4gICByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBzZXQuIENvbW1vbiB1c2VzIGZvciBzZXRzIGFyZSBmYXN0XG4gICBtZW1iZXJzaGlwIHRlc3RpbmcsIHJlbW92aW5nIGR1cGxpY2F0ZXMgZnJvbSBhIHNlcXVlbmNlLCBhbmRcbiAgIGNvbXB1dGluZyBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBzdWNoIGFzIGludGVyc2VjdGlvbiwgdW5pb24sXG4gICBkaWZmZXJlbmNlLCBhbmQgc3ltbWV0cmljIGRpZmZlcmVuY2UuXG5cbiAgIEZvciBzZXQgZWxlbWVudHMsIHRoZSBzYW1lIGltbXV0YWJpbGl0eSBydWxlcyBhcHBseSBhcyBmb3JcbiAgIGRpY3Rpb25hcnkga2V5cy4gTm90ZSB0aGF0IG51bWVyaWMgdHlwZXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzIGZvclxuICAgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCBgYDFgYCBhbmRcbiAgIGBgMS4wYGApLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG5cbiAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBzZXQgdHlwZXM6XG5cbiAgIFNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhIG11dGFibGUgc2V0LiBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgYGBzZXQoKWBgIGNvbnN0cnVjdG9yIGFuZCBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyBieSBzZXZlcmFsXG4gICAgICBtZXRob2RzLCBzdWNoIGFzIGBgYWRkKClgYC5cblxuICAgRnJvemVuIHNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhbiBpbW11dGFibGUgc2V0LiAgVGhleSBhcmUgY3JlYXRlZCBieSB0aGVcbiAgICAgIGJ1aWx0LWluIGBgZnJvemVuc2V0KClgYCBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzXG4gICAgICBpbW11dGFibGUgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2ZcbiAgICAgIGFub3RoZXIgc2V0LCBvciBhcyBhIGRpY3Rpb25hcnkga2V5LlxuXG5NYXBwaW5nc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBhcmJpdHJhcnkgaW5kZXhcbiAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gYGBhW2tdYGAgc2VsZWN0cyB0aGUgaXRlbSBpbmRleGVkIGJ5XG4gICBgYGtgYCBmcm9tIHRoZSBtYXBwaW5nIGBgYWBgOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZFxuICAgYXMgdGhlIHRhcmdldCBvZiBhc3NpZ25tZW50cyBvciBgYGRlbGBgIHN0YXRlbWVudHMuIFRoZSBidWlsdC1pblxuICAgZnVuY3Rpb24gYGBsZW4oKWBgIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIG1hcHBpbmcuXG5cbiAgIFRoZXJlIGlzIGN1cnJlbnRseSBhIHNpbmdsZSBpbnRyaW5zaWMgbWFwcGluZyB0eXBlOlxuXG4gICBEaWN0aW9uYXJpZXNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgbmVhcmx5XG4gICAgICBhcmJpdHJhcnkgdmFsdWVzLiAgVGhlIG9ubHkgdHlwZXMgb2YgdmFsdWVzIG5vdCBhY2NlcHRhYmxlIGFzXG4gICAgICBrZXlzIGFyZSB2YWx1ZXMgY29udGFpbmluZyBsaXN0cyBvciBkaWN0aW9uYXJpZXMgb3Igb3RoZXJcbiAgICAgIG11dGFibGUgdHlwZXMgdGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgb2JqZWN0XG4gICAgICBpZGVudGl0eSwgdGhlIHJlYXNvbiBiZWluZyB0aGF0IHRoZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2ZcbiAgICAgIGRpY3Rpb25hcmllcyByZXF1aXJlcyBhIGtleVwncyBoYXNoIHZhbHVlIHRvIHJlbWFpbiBjb25zdGFudC5cbiAgICAgIE51bWVyaWMgdHlwZXMgdXNlZCBmb3Iga2V5cyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWNcbiAgICAgIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sIGBgMWBgIGFuZFxuICAgICAgYGAxLjBgYCkgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0byBpbmRleCB0aGUgc2FtZVxuICAgICAgZGljdGlvbmFyeSBlbnRyeS5cblxuICAgICAgRGljdGlvbmFyaWVzIGFyZSBtdXRhYmxlOyB0aGV5IGNhbiBiZSBjcmVhdGVkIGJ5IHRoZSBgYHsuLi59YGBcbiAgICAgIG5vdGF0aW9uIChzZWUgc2VjdGlvbiAqRGljdGlvbmFyeSBkaXNwbGF5cyopLlxuXG4gICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZXMgYGBkYm0ubmRibWBgIGFuZCBgYGRibS5nbnVgYCBwcm92aWRlXG4gICAgICBhZGRpdGlvbmFsIGV4YW1wbGVzIG9mIG1hcHBpbmcgdHlwZXMsIGFzIGRvZXMgdGhlXG4gICAgICBgYGNvbGxlY3Rpb25zYGAgbW9kdWxlLlxuXG5DYWxsYWJsZSB0eXBlc1xuICAgVGhlc2UgYXJlIHRoZSB0eXBlcyB0byB3aGljaCB0aGUgZnVuY3Rpb24gY2FsbCBvcGVyYXRpb24gKHNlZVxuICAgc2VjdGlvbiAqQ2FsbHMqKSBjYW4gYmUgYXBwbGllZDpcblxuICAgVXNlci1kZWZpbmVkIGZ1bmN0aW9uc1xuICAgICAgQSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGlzIGNyZWF0ZWQgYnkgYSBmdW5jdGlvblxuICAgICAgZGVmaW5pdGlvbiAoc2VlIHNlY3Rpb24gKkZ1bmN0aW9uIGRlZmluaXRpb25zKikuICBJdCBzaG91bGQgYmVcbiAgICAgIGNhbGxlZCB3aXRoIGFuIGFyZ3VtZW50IGxpc3QgY29udGFpbmluZyB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXNcbiAgICAgIGFzIHRoZSBmdW5jdGlvblwncyBmb3JtYWwgcGFyYW1ldGVyIGxpc3QuXG5cbiAgICAgIFNwZWNpYWwgYXR0cmlidXRlczpcblxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgQXR0cmlidXRlICAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArPT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09K1xuICAgICAgfCBgYF9fZG9jX19gYCAgICAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzIGRvY3VtZW50YXRpb24gICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcsIG9yIGBgTm9uZWBgIGlmICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdW5hdmFpbGFibGUgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19uYW1lX19gYCAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgbmFtZSAgICAgICAgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19tb2R1bGVfX2BgICAgICAgICAgICAgfCBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb24gd2FzIGRlZmluZWQgaW4sIG9yICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgTm9uZWBgIGlmIHVuYXZhaWxhYmxlLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fZGVmYXVsdHNfX2BgICAgICAgICAgIHwgQSB0dXBsZSBjb250YWluaW5nIGRlZmF1bHQgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50IHZhbHVlcyBmb3IgdGhvc2UgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudHMgdGhhdCBoYXZlIGRlZmF1bHRzLCAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgYGBOb25lYGAgaWYgbm8gYXJndW1lbnRzICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGhhdmUgYSBkZWZhdWx0IHZhbHVlICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fY29kZV9fYGAgICAgICAgICAgICAgIHwgVGhlIGNvZGUgb2JqZWN0IHJlcHJlc2VudGluZyAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoZSBjb21waWxlZCBmdW5jdGlvbiBib2R5LiAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fZ2xvYmFsc19fYGAgICAgICAgICAgIHwgQSByZWZlcmVuY2UgdG8gdGhlIGRpY3Rpb25hcnkgICB8IFJlYWQtb25seSAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoYXQgaG9sZHMgdGhlIGZ1bmN0aW9uXCdzICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2xvYmFsIHZhcmlhYmxlcyAtLS0gdGhlIGdsb2JhbCB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlIGluICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGljaCB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWQuIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2RpY3RfX2BgICAgICAgICAgICAgICB8IFRoZSBuYW1lc3BhY2Ugc3VwcG9ydGluZyAgICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmJpdHJhcnkgZnVuY3Rpb24gYXR0cmlidXRlcy4gIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2Nsb3N1cmVfX2BgICAgICAgICAgICB8IGBgTm9uZWBgIG9yIGEgdHVwbGUgb2YgY2VsbHMgICAgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGNvbnRhaW4gYmluZGluZ3MgZm9yIHRoZSAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb25cJ3MgZnJlZSB2YXJpYWJsZXMuICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fYW5ub3RhdGlvbnNfX2BgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgYW5ub3RhdGlvbnMgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mIHBhcmFtZXRlcnMuICBUaGUga2V5cyBvZiB0aGUgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaWN0IGFyZSB0aGUgcGFyYW1ldGVyIG5hbWVzLCAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgYGBcJ3JldHVyblwnYGAgZm9yIHRoZSByZXR1cm4gIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5ub3RhdGlvbiwgaWYgcHJvdmlkZWQuICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19rd2RlZmF1bHRzX19gYCAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBkZWZhdWx0cyBmb3IgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG5cbiAgICAgIE1vc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgbGFiZWxsZWQgIldyaXRhYmxlIiBjaGVjayB0aGUgdHlwZSBvZiB0aGVcbiAgICAgIGFzc2lnbmVkIHZhbHVlLlxuXG4gICAgICBGdW5jdGlvbiBvYmplY3RzIGFsc28gc3VwcG9ydCBnZXR0aW5nIGFuZCBzZXR0aW5nIGFyYml0cmFyeVxuICAgICAgYXR0cmlidXRlcywgd2hpY2ggY2FuIGJlIHVzZWQsIGZvciBleGFtcGxlLCB0byBhdHRhY2ggbWV0YWRhdGFcbiAgICAgIHRvIGZ1bmN0aW9ucy4gIFJlZ3VsYXIgYXR0cmlidXRlIGRvdC1ub3RhdGlvbiBpcyB1c2VkIHRvIGdldCBhbmRcbiAgICAgIHNldCBzdWNoIGF0dHJpYnV0ZXMuICpOb3RlIHRoYXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb25seVxuICAgICAgc3VwcG9ydHMgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiBGdW5jdGlvblxuICAgICAgYXR0cmlidXRlcyBvbiBidWlsdC1pbiBmdW5jdGlvbnMgbWF5IGJlIHN1cHBvcnRlZCBpbiB0aGVcbiAgICAgIGZ1dHVyZS4qXG5cbiAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgYSBmdW5jdGlvblwncyBkZWZpbml0aW9uIGNhbiBiZVxuICAgICAgcmV0cmlldmVkIGZyb20gaXRzIGNvZGUgb2JqZWN0OyBzZWUgdGhlIGRlc2NyaXB0aW9uIG9mIGludGVybmFsXG4gICAgICB0eXBlcyBiZWxvdy5cblxuICAgSW5zdGFuY2UgbWV0aG9kc1xuICAgICAgQW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBjb21iaW5lcyBhIGNsYXNzLCBhIGNsYXNzIGluc3RhbmNlIGFuZFxuICAgICAgYW55IGNhbGxhYmxlIG9iamVjdCAobm9ybWFsbHkgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24pLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYF9fc2VsZl9fYGAgaXMgdGhlIGNsYXNzIGluc3RhbmNlXG4gICAgICBvYmplY3QsIGBgX19mdW5jX19gYCBpcyB0aGUgZnVuY3Rpb24gb2JqZWN0OyBgYF9fZG9jX19gYCBpcyB0aGVcbiAgICAgIG1ldGhvZFwncyBkb2N1bWVudGF0aW9uIChzYW1lIGFzIGBgX19mdW5jX18uX19kb2NfX2BgKTtcbiAgICAgIGBgX19uYW1lX19gYCBpcyB0aGUgbWV0aG9kIG5hbWUgKHNhbWUgYXMgYGBfX2Z1bmNfXy5fX25hbWVfX2BgKTtcbiAgICAgIGBgX19tb2R1bGVfX2BgIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIG1ldGhvZCB3YXMgZGVmaW5lZFxuICAgICAgaW4sIG9yIGBgTm9uZWBgIGlmIHVuYXZhaWxhYmxlLlxuXG4gICAgICBNZXRob2RzIGFsc28gc3VwcG9ydCBhY2Nlc3NpbmcgKGJ1dCBub3Qgc2V0dGluZykgdGhlIGFyYml0cmFyeVxuICAgICAgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0cyBtYXkgYmUgY3JlYXRlZCB3aGVuIGdldHRpbmcgYW5cbiAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIChwZXJoYXBzIHZpYSBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzKSwgaWZcbiAgICAgIHRoYXQgYXR0cmlidXRlIGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBvciBhIGNsYXNzXG4gICAgICBtZXRob2Qgb2JqZWN0LlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgdXNlci1cbiAgICAgIGRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGZyb20gYSBjbGFzcyB2aWEgb25lIG9mIGl0cyBpbnN0YW5jZXMsXG4gICAgICBpdHMgYGBfX3NlbGZfX2BgIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UsIGFuZCB0aGUgbWV0aG9kXG4gICAgICBvYmplY3QgaXMgc2FpZCB0byBiZSBib3VuZC4gIFRoZSBuZXcgbWV0aG9kXCdzIGBgX19mdW5jX19gYFxuICAgICAgYXR0cmlidXRlIGlzIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFdoZW4gYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmdcbiAgICAgIGFub3RoZXIgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIHRoZSBiZWhhdmlvdXIgaXNcbiAgICAgIHRoZSBzYW1lIGFzIGZvciBhIGZ1bmN0aW9uIG9iamVjdCwgZXhjZXB0IHRoYXQgdGhlIGBgX19mdW5jX19gYFxuICAgICAgYXR0cmlidXRlIG9mIHRoZSBuZXcgaW5zdGFuY2UgaXMgbm90IHRoZSBvcmlnaW5hbCBtZXRob2Qgb2JqZWN0XG4gICAgICBidXQgaXRzIGBgX19mdW5jX19gYCBhdHRyaWJ1dGUuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSBjbGFzc1xuICAgICAgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIGl0cyBgYF9fc2VsZl9fYGBcbiAgICAgIGF0dHJpYnV0ZSBpcyB0aGUgY2xhc3MgaXRzZWxmLCBhbmQgaXRzIGBgX19mdW5jX19gYCBhdHRyaWJ1dGUgaXNcbiAgICAgIHRoZSBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY2FsbGVkLCB0aGUgdW5kZXJseWluZ1xuICAgICAgZnVuY3Rpb24gKGBgX19mdW5jX19gYCkgaXMgY2FsbGVkLCBpbnNlcnRpbmcgdGhlIGNsYXNzIGluc3RhbmNlXG4gICAgICAoYGBfX3NlbGZfX2BgKSBpbiBmcm9udCBvZiB0aGUgYXJndW1lbnQgbGlzdC4gIEZvciBpbnN0YW5jZSxcbiAgICAgIHdoZW4gYGBDYGAgaXMgYSBjbGFzcyB3aGljaCBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb25cbiAgICAgIGBgZigpYGAsIGFuZCBgYHhgYCBpcyBhbiBpbnN0YW5jZSBvZiBgYENgYCwgY2FsbGluZyBgYHguZigxKWBgXG4gICAgICBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgYGBDLmYoeCwgMSlgYC5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGRlcml2ZWQgZnJvbSBhIGNsYXNzIG1ldGhvZFxuICAgICAgb2JqZWN0LCB0aGUgImNsYXNzIGluc3RhbmNlIiBzdG9yZWQgaW4gYGBfX3NlbGZfX2BgIHdpbGxcbiAgICAgIGFjdHVhbGx5IGJlIHRoZSBjbGFzcyBpdHNlbGYsIHNvIHRoYXQgY2FsbGluZyBlaXRoZXIgYGB4LmYoMSlgYFxuICAgICAgb3IgYGBDLmYoMSlgYCBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgYGBmKEMsMSlgYCB3aGVyZSBgYGZgYCBpc1xuICAgICAgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24uXG5cbiAgICAgIE5vdGUgdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24gZnJvbSBmdW5jdGlvbiBvYmplY3QgdG8gaW5zdGFuY2VcbiAgICAgIG1ldGhvZCBvYmplY3QgaGFwcGVucyBlYWNoIHRpbWUgdGhlIGF0dHJpYnV0ZSBpcyByZXRyaWV2ZWQgZnJvbVxuICAgICAgdGhlIGluc3RhbmNlLiAgSW4gc29tZSBjYXNlcywgYSBmcnVpdGZ1bCBvcHRpbWl6YXRpb24gaXMgdG9cbiAgICAgIGFzc2lnbiB0aGUgYXR0cmlidXRlIHRvIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNhbGwgdGhhdCBsb2NhbFxuICAgICAgdmFyaWFibGUuIEFsc28gbm90aWNlIHRoYXQgdGhpcyB0cmFuc2Zvcm1hdGlvbiBvbmx5IGhhcHBlbnMgZm9yXG4gICAgICB1c2VyLWRlZmluZWQgZnVuY3Rpb25zOyBvdGhlciBjYWxsYWJsZSBvYmplY3RzIChhbmQgYWxsIG5vbi1cbiAgICAgIGNhbGxhYmxlIG9iamVjdHMpIGFyZSByZXRyaWV2ZWQgd2l0aG91dCB0cmFuc2Zvcm1hdGlvbi4gIEl0IGlzXG4gICAgICBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyB3aGljaCBhcmVcbiAgICAgIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyBpbnN0YW5jZSBhcmUgbm90IGNvbnZlcnRlZCB0byBib3VuZFxuICAgICAgbWV0aG9kczsgdGhpcyAqb25seSogaGFwcGVucyB3aGVuIHRoZSBmdW5jdGlvbiBpcyBhbiBhdHRyaWJ1dGVcbiAgICAgIG9mIHRoZSBjbGFzcy5cblxuICAgR2VuZXJhdG9yIGZ1bmN0aW9uc1xuICAgICAgQSBmdW5jdGlvbiBvciBtZXRob2Qgd2hpY2ggdXNlcyB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudCAoc2VlXG4gICAgICBzZWN0aW9uICpUaGUgeWllbGQgc3RhdGVtZW50KikgaXMgY2FsbGVkIGEgKmdlbmVyYXRvciBmdW5jdGlvbiouXG4gICAgICBTdWNoIGEgZnVuY3Rpb24sIHdoZW4gY2FsbGVkLCBhbHdheXMgcmV0dXJucyBhbiBpdGVyYXRvciBvYmplY3RcbiAgICAgIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGV4ZWN1dGUgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uOiAgY2FsbGluZ1xuICAgICAgdGhlIGl0ZXJhdG9yXCdzIGBgX19uZXh0X18oKWBgIG1ldGhvZCB3aWxsIGNhdXNlIHRoZSBmdW5jdGlvbiB0b1xuICAgICAgZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50LlxuICAgICAgV2hlbiB0aGUgZnVuY3Rpb24gZXhlY3V0ZXMgYSBgYHJldHVybmBgIHN0YXRlbWVudCBvciBmYWxscyBvZmZcbiAgICAgIHRoZSBlbmQsIGEgYGBTdG9wSXRlcmF0aW9uYGAgZXhjZXB0aW9uIGlzIHJhaXNlZCBhbmQgdGhlXG4gICAgICBpdGVyYXRvciB3aWxsIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzZXQgb2YgdmFsdWVzIHRvIGJlXG4gICAgICByZXR1cm5lZC5cblxuICAgQnVpbHQtaW4gZnVuY3Rpb25zXG4gICAgICBBIGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGEgQyBmdW5jdGlvbi5cbiAgICAgIEV4YW1wbGVzIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhcmUgYGBsZW4oKWBgIGFuZCBgYG1hdGguc2luKClgYFxuICAgICAgKGBgbWF0aGBgIGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gbW9kdWxlKS4gVGhlIG51bWJlciBhbmQgdHlwZSBvZlxuICAgICAgdGhlIGFyZ3VtZW50cyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgQyBmdW5jdGlvbi4gU3BlY2lhbCByZWFkLVxuICAgICAgb25seSBhdHRyaWJ1dGVzOiBgYF9fZG9jX19gYCBpcyB0aGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvblxuICAgICAgc3RyaW5nLCBvciBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZTsgYGBfX25hbWVfX2BgIGlzIHRoZVxuICAgICAgZnVuY3Rpb25cJ3MgbmFtZTsgYGBfX3NlbGZfX2BgIGlzIHNldCB0byBgYE5vbmVgYCAoYnV0IHNlZSB0aGVcbiAgICAgIG5leHQgaXRlbSk7IGBgX19tb2R1bGVfX2BgIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlXG4gICAgICBmdW5jdGlvbiB3YXMgZGVmaW5lZCBpbiBvciBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZS5cblxuICAgQnVpbHQtaW4gbWV0aG9kc1xuICAgICAgVGhpcyBpcyByZWFsbHkgYSBkaWZmZXJlbnQgZGlzZ3Vpc2Ugb2YgYSBidWlsdC1pbiBmdW5jdGlvbiwgdGhpc1xuICAgICAgdGltZSBjb250YWluaW5nIGFuIG9iamVjdCBwYXNzZWQgdG8gdGhlIEMgZnVuY3Rpb24gYXMgYW5cbiAgICAgIGltcGxpY2l0IGV4dHJhIGFyZ3VtZW50LiAgQW4gZXhhbXBsZSBvZiBhIGJ1aWx0LWluIG1ldGhvZCBpc1xuICAgICAgYGBhbGlzdC5hcHBlbmQoKWBgLCBhc3N1bWluZyAqYWxpc3QqIGlzIGEgbGlzdCBvYmplY3QuIEluIHRoaXNcbiAgICAgIGNhc2UsIHRoZSBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGUgYGBfX3NlbGZfX2BgIGlzIHNldCB0byB0aGVcbiAgICAgIG9iamVjdCBkZW5vdGVkIGJ5ICphbGlzdCouXG5cbiAgIENsYXNzZXNcbiAgICAgIENsYXNzZXMgYXJlIGNhbGxhYmxlLiAgVGhlc2Ugb2JqZWN0cyBub3JtYWxseSBhY3QgYXMgZmFjdG9yaWVzXG4gICAgICBmb3IgbmV3IGluc3RhbmNlcyBvZiB0aGVtc2VsdmVzLCBidXQgdmFyaWF0aW9ucyBhcmUgcG9zc2libGUgZm9yXG4gICAgICBjbGFzcyB0eXBlcyB0aGF0IG92ZXJyaWRlIGBgX19uZXdfXygpYGAuICBUaGUgYXJndW1lbnRzIG9mIHRoZVxuICAgICAgY2FsbCBhcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAgYW5kLCBpbiB0aGUgdHlwaWNhbCBjYXNlLCB0b1xuICAgICAgYGBfX2luaXRfXygpYGAgdG8gaW5pdGlhbGl6ZSB0aGUgbmV3IGluc3RhbmNlLlxuXG4gICBDbGFzcyBJbnN0YW5jZXNcbiAgICAgIEluc3RhbmNlcyBvZiBhcmJpdHJhcnkgY2xhc3NlcyBjYW4gYmUgbWFkZSBjYWxsYWJsZSBieSBkZWZpbmluZ1xuICAgICAgYSBgYF9fY2FsbF9fKClgYCBtZXRob2QgaW4gdGhlaXIgY2xhc3MuXG5cbk1vZHVsZXNcbiAgIE1vZHVsZXMgYXJlIGltcG9ydGVkIGJ5IHRoZSBgYGltcG9ydGBgIHN0YXRlbWVudCAoc2VlIHNlY3Rpb24gKlRoZVxuICAgaW1wb3J0IHN0YXRlbWVudCopLiBBIG1vZHVsZSBvYmplY3QgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGJ5XG4gICBhIGRpY3Rpb25hcnkgb2JqZWN0ICh0aGlzIGlzIHRoZSBkaWN0aW9uYXJ5IHJlZmVyZW5jZWQgYnkgdGhlXG4gICBfX2dsb2JhbHNfXyBhdHRyaWJ1dGUgb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSkuXG4gICBBdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgdHJhbnNsYXRlZCB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSxcbiAgIGUuZy4sIGBgbS54YGAgaXMgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXWBgLiBBIG1vZHVsZSBvYmplY3RcbiAgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGUgb2JqZWN0IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlXG4gICAoc2luY2UgaXQgaXNuXCd0IG5lZWRlZCBvbmNlIHRoZSBpbml0aWFsaXphdGlvbiBpcyBkb25lKS5cblxuICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlXCdzIG5hbWVzcGFjZSBkaWN0aW9uYXJ5LFxuICAgZS5nLiwgYGBtLnggPSAxYGAgaXMgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXSA9IDFgYC5cblxuICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiBgYF9fZGljdF9fYGAgaXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2VcbiAgIGFzIGEgZGljdGlvbmFyeSBvYmplY3QuXG5cbiAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQmVjYXVzZSBvZiB0aGUgd2F5IENQeXRob25cbiAgIGNsZWFycyBtb2R1bGUgZGljdGlvbmFyaWVzLCB0aGUgbW9kdWxlIGRpY3Rpb25hcnkgd2lsbCBiZSBjbGVhcmVkXG4gICB3aGVuIHRoZSBtb2R1bGUgZmFsbHMgb3V0IG9mIHNjb3BlIGV2ZW4gaWYgdGhlIGRpY3Rpb25hcnkgc3RpbGwgaGFzXG4gICBsaXZlIHJlZmVyZW5jZXMuICBUbyBhdm9pZCB0aGlzLCBjb3B5IHRoZSBkaWN0aW9uYXJ5IG9yIGtlZXAgdGhlXG4gICBtb2R1bGUgYXJvdW5kIHdoaWxlIHVzaW5nIGl0cyBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuXG4gICBQcmVkZWZpbmVkICh3cml0YWJsZSkgYXR0cmlidXRlczogYGBfX25hbWVfX2BgIGlzIHRoZSBtb2R1bGVcJ3NcbiAgIG5hbWU7IGBgX19kb2NfX2BgIGlzIHRoZSBtb2R1bGVcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIGBgTm9uZWBgXG4gICBpZiB1bmF2YWlsYWJsZTsgYGBfX2ZpbGVfX2BgIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoXG4gICB0aGUgbW9kdWxlIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZVxuICAgYGBfX2ZpbGVfX2BgIGF0dHJpYnV0ZSBpcyBub3QgcHJlc2VudCBmb3IgQyBtb2R1bGVzIHRoYXQgYXJlXG4gICBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yIGV4dGVuc2lvbiBtb2R1bGVzXG4gICBsb2FkZWQgZHluYW1pY2FsbHkgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LCBpdCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlXG4gICBzaGFyZWQgbGlicmFyeSBmaWxlLlxuXG5DdXN0b20gY2xhc3Nlc1xuICAgQ3VzdG9tIGNsYXNzIHR5cGVzIGFyZSB0eXBpY2FsbHkgY3JlYXRlZCBieSBjbGFzcyBkZWZpbml0aW9ucyAoc2VlXG4gICBzZWN0aW9uICpDbGFzcyBkZWZpbml0aW9ucyopLiAgQSBjbGFzcyBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWRcbiAgIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QuIENsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSB0cmFuc2xhdGVkXG4gICB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgYGBDLnhgYCBpcyB0cmFuc2xhdGVkIHRvXG4gICBgYEMuX19kaWN0X19bIngiXWBgIChhbHRob3VnaCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgaG9va3Mgd2hpY2hcbiAgIGFsbG93IGZvciBvdGhlciBtZWFucyBvZiBsb2NhdGluZyBhdHRyaWJ1dGVzKS4gV2hlbiB0aGUgYXR0cmlidXRlXG4gICBuYW1lIGlzIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGF0dHJpYnV0ZSBzZWFyY2ggY29udGludWVzIGluIHRoZSBiYXNlXG4gICBjbGFzc2VzLiBUaGlzIHNlYXJjaCBvZiB0aGUgYmFzZSBjbGFzc2VzIHVzZXMgdGhlIEMzIG1ldGhvZFxuICAgcmVzb2x1dGlvbiBvcmRlciB3aGljaCBiZWhhdmVzIGNvcnJlY3RseSBldmVuIGluIHRoZSBwcmVzZW5jZSBvZlxuICAgXCdkaWFtb25kXCcgaW5oZXJpdGFuY2Ugc3RydWN0dXJlcyB3aGVyZSB0aGVyZSBhcmUgbXVsdGlwbGVcbiAgIGluaGVyaXRhbmNlIHBhdGhzIGxlYWRpbmcgYmFjayB0byBhIGNvbW1vbiBhbmNlc3Rvci4gQWRkaXRpb25hbFxuICAgZGV0YWlscyBvbiB0aGUgQzMgTVJPIHVzZWQgYnkgUHl0aG9uIGNhbiBiZSBmb3VuZCBpbiB0aGVcbiAgIGRvY3VtZW50YXRpb24gYWNjb21wYW55aW5nIHRoZSAyLjMgcmVsZWFzZSBhdFxuICAgaHR0cDovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLzIuMy9tcm8vLlxuXG4gICBXaGVuIGEgY2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZSAoZm9yIGNsYXNzIGBgQ2BgLCBzYXkpIHdvdWxkIHlpZWxkXG4gICBhIGNsYXNzIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kXG4gICBvYmplY3Qgd2hvc2UgYGBfX3NlbGZfX2BgIGF0dHJpYnV0ZXMgaXMgYGBDYGAuICBXaGVuIGl0IHdvdWxkIHlpZWxkXG4gICBhIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBvYmplY3Qgd3JhcHBlZFxuICAgYnkgdGhlIHN0YXRpYyBtZXRob2Qgb2JqZWN0LiBTZWUgc2VjdGlvbiAqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKlxuICAgZm9yIGFub3RoZXIgd2F5IGluIHdoaWNoIGF0dHJpYnV0ZXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBtYXlcbiAgIGRpZmZlciBmcm9tIHRob3NlIGFjdHVhbGx5IGNvbnRhaW5lZCBpbiBpdHMgYGBfX2RpY3RfX2BgLlxuXG4gICBDbGFzcyBhdHRyaWJ1dGUgYXNzaWdubWVudHMgdXBkYXRlIHRoZSBjbGFzc1wncyBkaWN0aW9uYXJ5LCBuZXZlclxuICAgdGhlIGRpY3Rpb25hcnkgb2YgYSBiYXNlIGNsYXNzLlxuXG4gICBBIGNsYXNzIG9iamVjdCBjYW4gYmUgY2FsbGVkIChzZWUgYWJvdmUpIHRvIHlpZWxkIGEgY2xhc3MgaW5zdGFuY2VcbiAgIChzZWUgYmVsb3cpLlxuXG4gICBTcGVjaWFsIGF0dHJpYnV0ZXM6IGBgX19uYW1lX19gYCBpcyB0aGUgY2xhc3MgbmFtZTsgYGBfX21vZHVsZV9fYGBcbiAgIGlzIHRoZSBtb2R1bGUgbmFtZSBpbiB3aGljaCB0aGUgY2xhc3Mgd2FzIGRlZmluZWQ7IGBgX19kaWN0X19gYCBpc1xuICAgdGhlIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgY2xhc3NcJ3MgbmFtZXNwYWNlOyBgYF9fYmFzZXNfX2BgIGlzIGFcbiAgIHR1cGxlIChwb3NzaWJseSBlbXB0eSBvciBhIHNpbmdsZXRvbikgY29udGFpbmluZyB0aGUgYmFzZSBjbGFzc2VzLFxuICAgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9jY3VycmVuY2UgaW4gdGhlIGJhc2UgY2xhc3MgbGlzdDtcbiAgIGBgX19kb2NfX2BgIGlzIHRoZSBjbGFzc1wncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgTm9uZSBpZlxuICAgdW5kZWZpbmVkLlxuXG5DbGFzcyBpbnN0YW5jZXNcbiAgIEEgY2xhc3MgaW5zdGFuY2UgaXMgY3JlYXRlZCBieSBjYWxsaW5nIGEgY2xhc3Mgb2JqZWN0IChzZWUgYWJvdmUpLlxuICAgQSBjbGFzcyBpbnN0YW5jZSBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYXMgYSBkaWN0aW9uYXJ5IHdoaWNoXG4gICBpcyB0aGUgZmlyc3QgcGxhY2UgaW4gd2hpY2ggYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHNlYXJjaGVkLlxuICAgV2hlbiBhbiBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kIHRoZXJlLCBhbmQgdGhlIGluc3RhbmNlXCdzIGNsYXNzIGhhc1xuICAgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZSwgdGhlIHNlYXJjaCBjb250aW51ZXMgd2l0aCB0aGUgY2xhc3NcbiAgIGF0dHJpYnV0ZXMuICBJZiBhIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aGF0IGlzIGEgdXNlci1kZWZpbmVkXG4gICBmdW5jdGlvbiBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdFxuICAgd2hvc2UgYGBfX3NlbGZfX2BgIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UuICBTdGF0aWMgbWV0aG9kIGFuZFxuICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGFsc28gdHJhbnNmb3JtZWQ7IHNlZSBhYm92ZSB1bmRlclxuICAgIkNsYXNzZXMiLiAgU2VlIHNlY3Rpb24gKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyogZm9yIGFub3RoZXIgd2F5XG4gICBpbiB3aGljaCBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgcmV0cmlldmVkIHZpYSBpdHMgaW5zdGFuY2VzIG1heVxuICAgZGlmZmVyIGZyb20gdGhlIG9iamVjdHMgYWN0dWFsbHkgc3RvcmVkIGluIHRoZSBjbGFzc1wnc1xuICAgYGBfX2RpY3RfX2BgLiAgSWYgbm8gY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kLCBhbmQgdGhlIG9iamVjdFwnc1xuICAgY2xhc3MgaGFzIGEgYGBfX2dldGF0dHJfXygpYGAgbWV0aG9kLCB0aGF0IGlzIGNhbGxlZCB0byBzYXRpc2Z5IHRoZVxuICAgbG9va3VwLlxuXG4gICBBdHRyaWJ1dGUgYXNzaWdubWVudHMgYW5kIGRlbGV0aW9ucyB1cGRhdGUgdGhlIGluc3RhbmNlXCdzXG4gICBkaWN0aW9uYXJ5LCBuZXZlciBhIGNsYXNzXCdzIGRpY3Rpb25hcnkuICBJZiB0aGUgY2xhc3MgaGFzIGFcbiAgIGBgX19zZXRhdHRyX18oKWBgIG9yIGBgX19kZWxhdHRyX18oKWBgIG1ldGhvZCwgdGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdXBkYXRpbmcgdGhlIGluc3RhbmNlIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG5cbiAgIENsYXNzIGluc3RhbmNlcyBjYW4gcHJldGVuZCB0byBiZSBudW1iZXJzLCBzZXF1ZW5jZXMsIG9yIG1hcHBpbmdzXG4gICBpZiB0aGV5IGhhdmUgbWV0aG9kcyB3aXRoIGNlcnRhaW4gc3BlY2lhbCBuYW1lcy4gIFNlZSBzZWN0aW9uXG4gICAqU3BlY2lhbCBtZXRob2QgbmFtZXMqLlxuXG4gICBTcGVjaWFsIGF0dHJpYnV0ZXM6IGBgX19kaWN0X19gYCBpcyB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnk7XG4gICBgYF9fY2xhc3NfX2BgIGlzIHRoZSBpbnN0YW5jZVwncyBjbGFzcy5cblxuSS9PIG9iamVjdHMgKGFsc28ga25vd24gYXMgZmlsZSBvYmplY3RzKVxuICAgQSAqZmlsZSBvYmplY3QqIHJlcHJlc2VudHMgYW4gb3BlbiBmaWxlLiAgVmFyaW91cyBzaG9ydGN1dHMgYXJlXG4gICBhdmFpbGFibGUgdG8gY3JlYXRlIGZpbGUgb2JqZWN0czogdGhlIGBgb3BlbigpYGAgYnVpbHQtaW4gZnVuY3Rpb24sXG4gICBhbmQgYWxzbyBgYG9zLnBvcGVuKClgYCwgYGBvcy5mZG9wZW4oKWBgLCBhbmQgdGhlIGBgbWFrZWZpbGUoKWBgXG4gICBtZXRob2Qgb2Ygc29ja2V0IG9iamVjdHMgKGFuZCBwZXJoYXBzIGJ5IG90aGVyIGZ1bmN0aW9ucyBvciBtZXRob2RzXG4gICBwcm92aWRlZCBieSBleHRlbnNpb24gbW9kdWxlcykuXG5cbiAgIFRoZSBvYmplY3RzIGBgc3lzLnN0ZGluYGAsIGBgc3lzLnN0ZG91dGBgIGFuZCBgYHN5cy5zdGRlcnJgYCBhcmVcbiAgIGluaXRpYWxpemVkIHRvIGZpbGUgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnRlcnByZXRlclwnc1xuICAgc3RhbmRhcmQgaW5wdXQsIG91dHB1dCBhbmQgZXJyb3Igc3RyZWFtczsgdGhleSBhcmUgYWxsIG9wZW4gaW4gdGV4dFxuICAgbW9kZSBhbmQgdGhlcmVmb3JlIGZvbGxvdyB0aGUgaW50ZXJmYWNlIGRlZmluZWQgYnkgdGhlXG4gICBgYGlvLlRleHRJT0Jhc2VgYCBhYnN0cmFjdCBjbGFzcy5cblxuSW50ZXJuYWwgdHlwZXNcbiAgIEEgZmV3IHR5cGVzIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgaW50ZXJwcmV0ZXIgYXJlIGV4cG9zZWQgdG8gdGhlXG4gICB1c2VyLiBUaGVpciBkZWZpbml0aW9ucyBtYXkgY2hhbmdlIHdpdGggZnV0dXJlIHZlcnNpb25zIG9mIHRoZVxuICAgaW50ZXJwcmV0ZXIsIGJ1dCB0aGV5IGFyZSBtZW50aW9uZWQgaGVyZSBmb3IgY29tcGxldGVuZXNzLlxuXG4gICBDb2RlIG9iamVjdHNcbiAgICAgIENvZGUgb2JqZWN0cyByZXByZXNlbnQgKmJ5dGUtY29tcGlsZWQqIGV4ZWN1dGFibGUgUHl0aG9uIGNvZGUsXG4gICAgICBvciAqYnl0ZWNvZGUqLiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEgY29kZSBvYmplY3QgYW5kIGFcbiAgICAgIGZ1bmN0aW9uIG9iamVjdCBpcyB0aGF0IHRoZSBmdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYW4gZXhwbGljaXRcbiAgICAgIHJlZmVyZW5jZSB0byB0aGUgZnVuY3Rpb25cJ3MgZ2xvYmFscyAodGhlIG1vZHVsZSBpbiB3aGljaCBpdCB3YXNcbiAgICAgIGRlZmluZWQpLCB3aGlsZSBhIGNvZGUgb2JqZWN0IGNvbnRhaW5zIG5vIGNvbnRleHQ7IGFsc28gdGhlXG4gICAgICBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBmdW5jdGlvbiBvYmplY3QsIG5vdFxuICAgICAgaW4gdGhlIGNvZGUgb2JqZWN0IChiZWNhdXNlIHRoZXkgcmVwcmVzZW50IHZhbHVlcyBjYWxjdWxhdGVkIGF0XG4gICAgICBydW4tdGltZSkuICBVbmxpa2UgZnVuY3Rpb24gb2JqZWN0cywgY29kZSBvYmplY3RzIGFyZSBpbW11dGFibGVcbiAgICAgIGFuZCBjb250YWluIG5vIHJlZmVyZW5jZXMgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIHRvIG11dGFibGVcbiAgICAgIG9iamVjdHMuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6IGBgY29fbmFtZWBgIGdpdmVzIHRoZSBmdW5jdGlvblxuICAgICAgbmFtZTsgYGBjb19hcmdjb3VudGBgIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHNcbiAgICAgIChpbmNsdWRpbmcgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2YWx1ZXMpOyBgYGNvX25sb2NhbHNgYCBpcyB0aGVcbiAgICAgIG51bWJlciBvZiBsb2NhbCB2YXJpYWJsZXMgdXNlZCBieSB0aGUgZnVuY3Rpb24gKGluY2x1ZGluZ1xuICAgICAgYXJndW1lbnRzKTsgYGBjb192YXJuYW1lc2BgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2ZcbiAgICAgIHRoZSBsb2NhbCB2YXJpYWJsZXMgKHN0YXJ0aW5nIHdpdGggdGhlIGFyZ3VtZW50IG5hbWVzKTtcbiAgICAgIGBgY29fY2VsbHZhcnNgYCBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGxvY2FsXG4gICAgICB2YXJpYWJsZXMgdGhhdCBhcmUgcmVmZXJlbmNlZCBieSBuZXN0ZWQgZnVuY3Rpb25zO1xuICAgICAgYGBjb19mcmVldmFyc2BgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgZnJlZVxuICAgICAgdmFyaWFibGVzOyBgYGNvX2NvZGVgYCBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHNlcXVlbmNlIG9mXG4gICAgICBieXRlY29kZSBpbnN0cnVjdGlvbnM7IGBgY29fY29uc3RzYGAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZVxuICAgICAgbGl0ZXJhbHMgdXNlZCBieSB0aGUgYnl0ZWNvZGU7IGBgY29fbmFtZXNgYCBpcyBhIHR1cGxlXG4gICAgICBjb250YWluaW5nIHRoZSBuYW1lcyB1c2VkIGJ5IHRoZSBieXRlY29kZTsgYGBjb19maWxlbmFtZWBgIGlzXG4gICAgICB0aGUgZmlsZW5hbWUgZnJvbSB3aGljaCB0aGUgY29kZSB3YXMgY29tcGlsZWQ7XG4gICAgICBgYGNvX2ZpcnN0bGluZW5vYGAgaXMgdGhlIGZpcnN0IGxpbmUgbnVtYmVyIG9mIHRoZSBmdW5jdGlvbjtcbiAgICAgIGBgY29fbG5vdGFiYGAgaXMgYSBzdHJpbmcgZW5jb2RpbmcgdGhlIG1hcHBpbmcgZnJvbSBieXRlY29kZVxuICAgICAgb2Zmc2V0cyB0byBsaW5lIG51bWJlcnMgKGZvciBkZXRhaWxzIHNlZSB0aGUgc291cmNlIGNvZGUgb2YgdGhlXG4gICAgICBpbnRlcnByZXRlcik7IGBgY29fc3RhY2tzaXplYGAgaXMgdGhlIHJlcXVpcmVkIHN0YWNrIHNpemVcbiAgICAgIChpbmNsdWRpbmcgbG9jYWwgdmFyaWFibGVzKTsgYGBjb19mbGFnc2BgIGlzIGFuIGludGVnZXIgZW5jb2RpbmdcbiAgICAgIGEgbnVtYmVyIG9mIGZsYWdzIGZvciB0aGUgaW50ZXJwcmV0ZXIuXG5cbiAgICAgIFRoZSBmb2xsb3dpbmcgZmxhZyBiaXRzIGFyZSBkZWZpbmVkIGZvciBgYGNvX2ZsYWdzYGA6IGJpdFxuICAgICAgYGAweDA0YGAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSBgYCphcmd1bWVudHNgYCBzeW50YXhcbiAgICAgIHRvIGFjY2VwdCBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzOyBiaXRcbiAgICAgIGBgMHgwOGBgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgYGAqKmtleXdvcmRzYGAgc3ludGF4XG4gICAgICB0byBhY2NlcHQgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzOyBiaXQgYGAweDIwYGAgaXMgc2V0IGlmXG4gICAgICB0aGUgZnVuY3Rpb24gaXMgYSBnZW5lcmF0b3IuXG5cbiAgICAgIEZ1dHVyZSBmZWF0dXJlIGRlY2xhcmF0aW9ucyAoYGBmcm9tIF9fZnV0dXJlX18gaW1wb3J0XG4gICAgICBkaXZpc2lvbmBgKSBhbHNvIHVzZSBiaXRzIGluIGBgY29fZmxhZ3NgYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGFcbiAgICAgIGNvZGUgb2JqZWN0IHdhcyBjb21waWxlZCB3aXRoIGEgcGFydGljdWxhciBmZWF0dXJlIGVuYWJsZWQ6IGJpdFxuICAgICAgYGAweDIwMDBgYCBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIHdhcyBjb21waWxlZCB3aXRoIGZ1dHVyZVxuICAgICAgZGl2aXNpb24gZW5hYmxlZDsgYml0cyBgYDB4MTBgYCBhbmQgYGAweDEwMDBgYCB3ZXJlIHVzZWQgaW5cbiAgICAgIGVhcmxpZXIgdmVyc2lvbnMgb2YgUHl0aG9uLlxuXG4gICAgICBPdGhlciBiaXRzIGluIGBgY29fZmxhZ3NgYCBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzZS5cblxuICAgICAgSWYgYSBjb2RlIG9iamVjdCByZXByZXNlbnRzIGEgZnVuY3Rpb24sIHRoZSBmaXJzdCBpdGVtIGluXG4gICAgICBgYGNvX2NvbnN0c2BgIGlzIHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBvZiB0aGUgZnVuY3Rpb24sIG9yXG4gICAgICBgYE5vbmVgYCBpZiB1bmRlZmluZWQuXG5cbiAgIEZyYW1lIG9iamVjdHNcbiAgICAgIEZyYW1lIG9iamVjdHMgcmVwcmVzZW50IGV4ZWN1dGlvbiBmcmFtZXMuICBUaGV5IG1heSBvY2N1ciBpblxuICAgICAgdHJhY2ViYWNrIG9iamVjdHMgKHNlZSBiZWxvdykuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6IGBgZl9iYWNrYGAgaXMgdG8gdGhlIHByZXZpb3VzXG4gICAgICBzdGFjayBmcmFtZSAodG93YXJkcyB0aGUgY2FsbGVyKSwgb3IgYGBOb25lYGAgaWYgdGhpcyBpcyB0aGVcbiAgICAgIGJvdHRvbSBzdGFjayBmcmFtZTsgYGBmX2NvZGVgYCBpcyB0aGUgY29kZSBvYmplY3QgYmVpbmcgZXhlY3V0ZWRcbiAgICAgIGluIHRoaXMgZnJhbWU7IGBgZl9sb2NhbHNgYCBpcyB0aGUgZGljdGlvbmFyeSB1c2VkIHRvIGxvb2sgdXBcbiAgICAgIGxvY2FsIHZhcmlhYmxlczsgYGBmX2dsb2JhbHNgYCBpcyB1c2VkIGZvciBnbG9iYWwgdmFyaWFibGVzO1xuICAgICAgYGBmX2J1aWx0aW5zYGAgaXMgdXNlZCBmb3IgYnVpbHQtaW4gKGludHJpbnNpYykgbmFtZXM7XG4gICAgICBgYGZfbGFzdGlgYCBnaXZlcyB0aGUgcHJlY2lzZSBpbnN0cnVjdGlvbiAodGhpcyBpcyBhbiBpbmRleCBpbnRvXG4gICAgICB0aGUgYnl0ZWNvZGUgc3RyaW5nIG9mIHRoZSBjb2RlIG9iamVjdCkuXG5cbiAgICAgIFNwZWNpYWwgd3JpdGFibGUgYXR0cmlidXRlczogYGBmX3RyYWNlYGAsIGlmIG5vdCBgYE5vbmVgYCwgaXMgYVxuICAgICAgZnVuY3Rpb24gY2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBjb2RlIGxpbmUgKHRoaXMgaXNcbiAgICAgIHVzZWQgYnkgdGhlIGRlYnVnZ2VyKTsgYGBmX2xpbmVub2BgIGlzIHRoZSBjdXJyZW50IGxpbmUgbnVtYmVyXG4gICAgICBvZiB0aGUgZnJhbWUgLS0tIHdyaXRpbmcgdG8gdGhpcyBmcm9tIHdpdGhpbiBhIHRyYWNlIGZ1bmN0aW9uXG4gICAgICBqdW1wcyB0byB0aGUgZ2l2ZW4gbGluZSAob25seSBmb3IgdGhlIGJvdHRvbS1tb3N0IGZyYW1lKS4gIEFcbiAgICAgIGRlYnVnZ2VyIGNhbiBpbXBsZW1lbnQgYSBKdW1wIGNvbW1hbmQgKGFrYSBTZXQgTmV4dCBTdGF0ZW1lbnQpXG4gICAgICBieSB3cml0aW5nIHRvIGZfbGluZW5vLlxuXG4gICBUcmFjZWJhY2sgb2JqZWN0c1xuICAgICAgVHJhY2ViYWNrIG9iamVjdHMgcmVwcmVzZW50IGEgc3RhY2sgdHJhY2Ugb2YgYW4gZXhjZXB0aW9uLiAgQVxuICAgICAgdHJhY2ViYWNrIG9iamVjdCBpcyBjcmVhdGVkIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3Vycy4gIFdoZW4gdGhlXG4gICAgICBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIHVud2luZHMgdGhlIGV4ZWN1dGlvbiBzdGFjaywgYXRcbiAgICAgIGVhY2ggdW53b3VuZCBsZXZlbCBhIHRyYWNlYmFjayBvYmplY3QgaXMgaW5zZXJ0ZWQgaW4gZnJvbnQgb2ZcbiAgICAgIHRoZSBjdXJyZW50IHRyYWNlYmFjay4gIFdoZW4gYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgZW50ZXJlZCxcbiAgICAgIHRoZSBzdGFjayB0cmFjZSBpcyBtYWRlIGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbS4gKFNlZSBzZWN0aW9uXG4gICAgICAqVGhlIHRyeSBzdGF0ZW1lbnQqLikgSXQgaXMgYWNjZXNzaWJsZSBhcyB0aGUgdGhpcmQgaXRlbSBvZiB0aGVcbiAgICAgIHR1cGxlIHJldHVybmVkIGJ5IGBgc3lzLmV4Y19pbmZvKClgYC4gV2hlbiB0aGUgcHJvZ3JhbSBjb250YWluc1xuICAgICAgbm8gc3VpdGFibGUgaGFuZGxlciwgdGhlIHN0YWNrIHRyYWNlIGlzIHdyaXR0ZW4gKG5pY2VseVxuICAgICAgZm9ybWF0dGVkKSB0byB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtOyBpZiB0aGUgaW50ZXJwcmV0ZXIgaXNcbiAgICAgIGludGVyYWN0aXZlLCBpdCBpcyBhbHNvIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSB1c2VyIGFzXG4gICAgICBgYHN5cy5sYXN0X3RyYWNlYmFja2BgLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYHRiX25leHRgYCBpcyB0aGUgbmV4dCBsZXZlbCBpblxuICAgICAgdGhlIHN0YWNrIHRyYWNlICh0b3dhcmRzIHRoZSBmcmFtZSB3aGVyZSB0aGUgZXhjZXB0aW9uXG4gICAgICBvY2N1cnJlZCksIG9yIGBgTm9uZWBgIGlmIHRoZXJlIGlzIG5vIG5leHQgbGV2ZWw7IGBgdGJfZnJhbWVgYFxuICAgICAgcG9pbnRzIHRvIHRoZSBleGVjdXRpb24gZnJhbWUgb2YgdGhlIGN1cnJlbnQgbGV2ZWw7XG4gICAgICBgYHRiX2xpbmVub2BgIGdpdmVzIHRoZSBsaW5lIG51bWJlciB3aGVyZSB0aGUgZXhjZXB0aW9uXG4gICAgICBvY2N1cnJlZDsgYGB0Yl9sYXN0aWBgIGluZGljYXRlcyB0aGUgcHJlY2lzZSBpbnN0cnVjdGlvbi4gIFRoZVxuICAgICAgbGluZSBudW1iZXIgYW5kIGxhc3QgaW5zdHJ1Y3Rpb24gaW4gdGhlIHRyYWNlYmFjayBtYXkgZGlmZmVyXG4gICAgICBmcm9tIHRoZSBsaW5lIG51bWJlciBvZiBpdHMgZnJhbWUgb2JqZWN0IGlmIHRoZSBleGNlcHRpb25cbiAgICAgIG9jY3VycmVkIGluIGEgYGB0cnlgYCBzdGF0ZW1lbnQgd2l0aCBubyBtYXRjaGluZyBleGNlcHQgY2xhdXNlXG4gICAgICBvciB3aXRoIGEgZmluYWxseSBjbGF1c2UuXG5cbiAgIFNsaWNlIG9iamVjdHNcbiAgICAgIFNsaWNlIG9iamVjdHMgYXJlIHVzZWQgdG8gcmVwcmVzZW50IHNsaWNlcyBmb3IgYGBfX2dldGl0ZW1fXygpYGBcbiAgICAgIG1ldGhvZHMuICBUaGV5IGFyZSBhbHNvIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluIGBgc2xpY2UoKWBgXG4gICAgICBmdW5jdGlvbi5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBzdGFydGBgIGlzIHRoZSBsb3dlciBib3VuZDtcbiAgICAgIGBgc3RvcGBgIGlzIHRoZSB1cHBlciBib3VuZDsgYGBzdGVwYGAgaXMgdGhlIHN0ZXAgdmFsdWU7IGVhY2ggaXNcbiAgICAgIGBgTm9uZWBgIGlmIG9taXR0ZWQuIFRoZXNlIGF0dHJpYnV0ZXMgY2FuIGhhdmUgYW55IHR5cGUuXG5cbiAgICAgIFNsaWNlIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuXG4gICAgICBzbGljZS5pbmRpY2VzKHNlbGYsIGxlbmd0aClcblxuICAgICAgICAgVGhpcyBtZXRob2QgdGFrZXMgYSBzaW5nbGUgaW50ZWdlciBhcmd1bWVudCAqbGVuZ3RoKiBhbmRcbiAgICAgICAgIGNvbXB1dGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzbGljZSB0aGF0IHRoZSBzbGljZSBvYmplY3RcbiAgICAgICAgIHdvdWxkIGRlc2NyaWJlIGlmIGFwcGxpZWQgdG8gYSBzZXF1ZW5jZSBvZiAqbGVuZ3RoKiBpdGVtcy5cbiAgICAgICAgIEl0IHJldHVybnMgYSB0dXBsZSBvZiB0aHJlZSBpbnRlZ2VyczsgcmVzcGVjdGl2ZWx5IHRoZXNlIGFyZVxuICAgICAgICAgdGhlICpzdGFydCogYW5kICpzdG9wKiBpbmRpY2VzIGFuZCB0aGUgKnN0ZXAqIG9yIHN0cmlkZVxuICAgICAgICAgbGVuZ3RoIG9mIHRoZSBzbGljZS4gTWlzc2luZyBvciBvdXQtb2YtYm91bmRzIGluZGljZXMgYXJlXG4gICAgICAgICBoYW5kbGVkIGluIGEgbWFubmVyIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIHNsaWNlcy5cblxuICAgU3RhdGljIG1ldGhvZCBvYmplY3RzXG4gICAgICBTdGF0aWMgbWV0aG9kIG9iamVjdHMgcHJvdmlkZSBhIHdheSBvZiBkZWZlYXRpbmcgdGhlXG4gICAgICB0cmFuc2Zvcm1hdGlvbiBvZiBmdW5jdGlvbiBvYmplY3RzIHRvIG1ldGhvZCBvYmplY3RzIGRlc2NyaWJlZFxuICAgICAgYWJvdmUuIEEgc3RhdGljIG1ldGhvZCBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhbnkgb3RoZXJcbiAgICAgIG9iamVjdCwgdXN1YWxseSBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0LiBXaGVuIGEgc3RhdGljXG4gICAgICBtZXRob2Qgb2JqZWN0IGlzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3Mgb3IgYSBjbGFzcyBpbnN0YW5jZSwgdGhlXG4gICAgICBvYmplY3QgYWN0dWFsbHkgcmV0dXJuZWQgaXMgdGhlIHdyYXBwZWQgb2JqZWN0LCB3aGljaCBpcyBub3RcbiAgICAgIHN1YmplY3QgdG8gYW55IGZ1cnRoZXIgdHJhbnNmb3JtYXRpb24uIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmVcbiAgICAgIG5vdCB0aGVtc2VsdmVzIGNhbGxhYmxlLCBhbHRob3VnaCB0aGUgb2JqZWN0cyB0aGV5IHdyYXAgdXN1YWxseVxuICAgICAgYXJlLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4gICAgICBgYHN0YXRpY21ldGhvZCgpYGAgY29uc3RydWN0b3IuXG5cbiAgIENsYXNzIG1ldGhvZCBvYmplY3RzXG4gICAgICBBIGNsYXNzIG1ldGhvZCBvYmplY3QsIGxpa2UgYSBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXMgYSB3cmFwcGVyXG4gICAgICBhcm91bmQgYW5vdGhlciBvYmplY3QgdGhhdCBhbHRlcnMgdGhlIHdheSBpbiB3aGljaCB0aGF0IG9iamVjdFxuICAgICAgaXMgcmV0cmlldmVkIGZyb20gY2xhc3NlcyBhbmQgY2xhc3MgaW5zdGFuY2VzLiBUaGUgYmVoYXZpb3VyIG9mXG4gICAgICBjbGFzcyBtZXRob2Qgb2JqZWN0cyB1cG9uIHN1Y2ggcmV0cmlldmFsIGlzIGRlc2NyaWJlZCBhYm92ZSxcbiAgICAgIHVuZGVyICJVc2VyLWRlZmluZWQgbWV0aG9kcyIuIENsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBjcmVhdGVkXG4gICAgICBieSB0aGUgYnVpbHQtaW4gYGBjbGFzc21ldGhvZCgpYGAgY29uc3RydWN0b3IuXG4nLAorICd0cnknOiAnXG5UaGUgYGB0cnlgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGB0cnlgYCBzdGF0ZW1lbnQgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgY2xlYW51cCBjb2RlXG5mb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuXG4gICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgKCJleGNlcHQiIFtleHByZXNzaW9uIFsiYXMiIHRhcmdldF1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlIGBgZXhjZXB0YGAgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuXG5ubyBleGNlcHRpb24gb2NjdXJzIGluIHRoZSBgYHRyeWBgIGNsYXVzZSwgbm8gZXhjZXB0aW9uIGhhbmRsZXIgaXNcbmV4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIGBgdHJ5YGAgc3VpdGUsIGEgc2VhcmNoIGZvclxuYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHRcbmNsYXVzZXMgaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBblxuZXhwcmVzc2lvbi1sZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlc1xuYW55IGV4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdFxuZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGVcbnJlc3VsdGluZyBvYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpc1xuY29tcGF0aWJsZSB3aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZVxuZXhjZXB0aW9uIG9iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlXG5leGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgYGB0cnlgYCBzdGF0ZW1lbnRcbnJhaXNlZCB0aGUgZXhjZXB0aW9uKS5cblxuV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbnRoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSBgYGFzYGAga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCBjbGF1c2UsXG5pZiBwcmVzZW50LCBhbmQgdGhlIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG5jbGF1c2VzIG11c3QgaGF2ZSBhbiBleGVjdXRhYmxlIGJsb2NrLiAgV2hlbiB0aGUgZW5kIG9mIHRoaXMgYmxvY2sgaXNcbnJlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgc3RhdGVtZW50LlxuKFRoaXMgbWVhbnMgdGhhdCBpZiB0d28gbmVzdGVkIGhhbmRsZXJzIGV4aXN0IGZvciB0aGUgc2FtZSBleGNlcHRpb24sXG5hbmQgdGhlIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIHRyeSBjbGF1c2Ugb2YgdGhlIGlubmVyIGhhbmRsZXIsIHRoZVxub3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG5cbldoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGFzc2lnbmVkIHVzaW5nIGBgYXMgdGFyZ2V0YGAsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlIGBgc3lzYGAgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzIHZpYVxuYGBzeXMuZXhjX2luZm8oKWBgLiBgYHN5cy5leGNfaW5mbygpYGAgcmV0dXJucyBhIDMtdHVwbGUgY29uc2lzdGluZyBvZlxudGhlIGV4Y2VwdGlvbiBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSBhbmQgYSB0cmFjZWJhY2sgb2JqZWN0XG4oc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopIGlkZW50aWZ5aW5nIHRoZSBwb2ludCBpblxudGhlIHByb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gIGBgc3lzLmV4Y19pbmZvKClgYCB2YWx1ZXNcbmFyZSByZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgYGBlbHNlYGAgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3Mgb2ZmXG50aGUgZW5kIG9mIHRoZSBgYHRyeWBgIGNsYXVzZS4gWzJdIEV4Y2VwdGlvbnMgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZVxuYXJlIG5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgYGBleGNlcHRgYCBjbGF1c2VzLlxuXG5JZiBgYGZpbmFsbHlgYCBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgVGhlXG5gYHRyeWBgIGNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSBgYGV4Y2VwdGBgIGFuZCBgYGVsc2VgYFxuY2xhdXNlcy4gIElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gYW55IG9mIHRoZSBjbGF1c2VzIGFuZCBpcyBub3RcbmhhbmRsZWQsIHRoZSBleGNlcHRpb24gaXMgdGVtcG9yYXJpbHkgc2F2ZWQuIFRoZSBgYGZpbmFsbHlgYCBjbGF1c2UgaXNcbmV4ZWN1dGVkLiAgSWYgdGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gb3IgYGBicmVha2BgIHN0YXRlbWVudCwgaXQgaXNcbnJlLXJhaXNlZCBhdCB0aGUgZW5kIG9mIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuIElmIHRoZSBgYGZpbmFsbHlgYFxuY2xhdXNlIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlvbiB0aGUgc2F2ZWQgZXhjZXB0aW9uIGlzIHNldCBhcyB0aGVcbmNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb247IGlmIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UgZXhlY3V0ZXMgYVxuYGByZXR1cm5gYCBzdGF0ZW1lbnQsIHRoZSBzYXZlZCBleGNlcHRpb24gaXMgZGlzY2FyZGVkOlxuXG4gICBkZWYgZigpOlxuICAgICAgIHRyeTpcbiAgICAgICAgICAgMS8wXG4gICAgICAgZmluYWxseTpcbiAgICAgICAgICAgcmV0dXJuIDQyXG5cbiAgID4+PiBmKClcbiAgIDQyXG5cblRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSBkdXJpbmdcbmV4ZWN1dGlvbiBvZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlLlxuXG5XaGVuIGEgYGByZXR1cm5gYCwgYGBicmVha2BgIG9yIGBgY29udGludWVgYCBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgaW5cbnRoZSBgYHRyeWBgIHN1aXRlIG9mIGEgYGB0cnlgYC4uLmBgZmluYWxseWBgIHN0YXRlbWVudCwgdGhlXG5gYGZpbmFsbHlgYCBjbGF1c2UgaXMgYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgYGBjb250aW51ZWBgXG5zdGF0ZW1lbnQgaXMgaWxsZWdhbCBpbiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlLiAoVGhlIHJlYXNvbiBpcyBhXG5wcm9ibGVtIHdpdGggdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gLS0tIHRoaXMgcmVzdHJpY3Rpb24gbWF5IGJlXG5saWZ0ZWQgaW4gdGhlIGZ1dHVyZSkuXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlIGBgcmFpc2VgYCBzdGF0ZW1lbnQgdG9cbmdlbmVyYXRlIGV4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuJywKKyAndHlwZXMnOiAnXG5UaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHlcbioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5CZWxvdyBpcyBhIGxpc3Qgb2YgdGhlIHR5cGVzIHRoYXQgYXJlIGJ1aWx0IGludG8gUHl0aG9uLiAgRXh0ZW5zaW9uXG5tb2R1bGVzICh3cml0dGVuIGluIEMsIEphdmEsIG9yIG90aGVyIGxhbmd1YWdlcywgZGVwZW5kaW5nIG9uIHRoZVxuaW1wbGVtZW50YXRpb24pIGNhbiBkZWZpbmUgYWRkaXRpb25hbCB0eXBlcy4gIEZ1dHVyZSB2ZXJzaW9ucyBvZlxuUHl0aG9uIG1heSBhZGQgdHlwZXMgdG8gdGhlIHR5cGUgaGllcmFyY2h5IChlLmcuLCByYXRpb25hbCBudW1iZXJzLFxuZWZmaWNpZW50bHkgc3RvcmVkIGFycmF5cyBvZiBpbnRlZ2VycywgZXRjLiksIGFsdGhvdWdoIHN1Y2ggYWRkaXRpb25zXG53aWxsIG9mdGVuIGJlIHByb3ZpZGVkIHZpYSB0aGUgc3RhbmRhcmQgbGlicmFyeSBpbnN0ZWFkLlxuXG5Tb21lIG9mIHRoZSB0eXBlIGRlc2NyaXB0aW9ucyBiZWxvdyBjb250YWluIGEgcGFyYWdyYXBoIGxpc3Rpbmdcblwnc3BlY2lhbCBhdHRyaWJ1dGVzLlwnICBUaGVzZSBhcmUgYXR0cmlidXRlcyB0aGF0IHByb3ZpZGUgYWNjZXNzIHRvIHRoZVxuaW1wbGVtZW50YXRpb24gYW5kIGFyZSBub3QgaW50ZW5kZWQgZm9yIGdlbmVyYWwgdXNlLiAgVGhlaXIgZGVmaW5pdGlvblxubWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLlxuXG5Ob25lXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGJ1aWx0LWluIG5hbWUgYGBOb25lYGAuXG4gICBJdCBpcyB1c2VkIHRvIHNpZ25pZnkgdGhlIGFic2VuY2Ugb2YgYSB2YWx1ZSBpbiBtYW55IHNpdHVhdGlvbnMsXG4gICBlLmcuLCBpdCBpcyByZXR1cm5lZCBmcm9tIGZ1bmN0aW9ucyB0aGF0IGRvblwndCBleHBsaWNpdGx5IHJldHVyblxuICAgYW55dGhpbmcuIEl0cyB0cnV0aCB2YWx1ZSBpcyBmYWxzZS5cblxuTm90SW1wbGVtZW50ZWRcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZVxuICAgYGBOb3RJbXBsZW1lbnRlZGBgLiBOdW1lcmljIG1ldGhvZHMgYW5kIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIG1heVxuICAgcmV0dXJuIHRoaXMgdmFsdWUgaWYgdGhleSBkbyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIHRoZVxuICAgb3BlcmFuZHMgcHJvdmlkZWQuICAoVGhlIGludGVycHJldGVyIHdpbGwgdGhlbiB0cnkgdGhlIHJlZmxlY3RlZFxuICAgb3BlcmF0aW9uLCBvciBzb21lIG90aGVyIGZhbGxiYWNrLCBkZXBlbmRpbmcgb24gdGhlIG9wZXJhdG9yLikgIEl0c1xuICAgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cblxuRWxsaXBzaXNcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgbGl0ZXJhbCBgYC4uLmBgIG9yIHRoZVxuICAgYnVpbHQtaW4gbmFtZSBgYEVsbGlwc2lzYGAuICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cblxuYGBudW1iZXJzLk51bWJlcmBgXG4gICBUaGVzZSBhcmUgY3JlYXRlZCBieSBudW1lcmljIGxpdGVyYWxzIGFuZCByZXR1cm5lZCBhcyByZXN1bHRzIGJ5XG4gICBhcml0aG1ldGljIG9wZXJhdG9ycyBhbmQgYXJpdGhtZXRpYyBidWlsdC1pbiBmdW5jdGlvbnMuICBOdW1lcmljXG4gICBvYmplY3RzIGFyZSBpbW11dGFibGU7IG9uY2UgY3JlYXRlZCB0aGVpciB2YWx1ZSBuZXZlciBjaGFuZ2VzLlxuICAgUHl0aG9uIG51bWJlcnMgYXJlIG9mIGNvdXJzZSBzdHJvbmdseSByZWxhdGVkIHRvIG1hdGhlbWF0aWNhbFxuICAgbnVtYmVycywgYnV0IHN1YmplY3QgdG8gdGhlIGxpbWl0YXRpb25zIG9mIG51bWVyaWNhbCByZXByZXNlbnRhdGlvblxuICAgaW4gY29tcHV0ZXJzLlxuXG4gICBQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGludGVnZXJzLCBmbG9hdGluZyBwb2ludCBudW1iZXJzLCBhbmRcbiAgIGNvbXBsZXggbnVtYmVyczpcblxuICAgYGBudW1iZXJzLkludGVncmFsYGBcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBlbGVtZW50cyBmcm9tIHRoZSBtYXRoZW1hdGljYWwgc2V0IG9mIGludGVnZXJzXG4gICAgICAocG9zaXRpdmUgYW5kIG5lZ2F0aXZlKS5cblxuICAgICAgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBpbnRlZ2VyczpcblxuICAgICAgSW50ZWdlcnMgKGBgaW50YGApXG5cbiAgICAgICAgIFRoZXNlIHJlcHJlc2VudCBudW1iZXJzIGluIGFuIHVubGltaXRlZCByYW5nZSwgc3ViamVjdCB0b1xuICAgICAgICAgYXZhaWxhYmxlICh2aXJ0dWFsKSBtZW1vcnkgb25seS4gIEZvciB0aGUgcHVycG9zZSBvZiBzaGlmdFxuICAgICAgICAgYW5kIG1hc2sgb3BlcmF0aW9ucywgYSBiaW5hcnkgcmVwcmVzZW50YXRpb24gaXMgYXNzdW1lZCwgYW5kXG4gICAgICAgICBuZWdhdGl2ZSBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBpbiBhIHZhcmlhbnQgb2YgMlwnc1xuICAgICAgICAgY29tcGxlbWVudCB3aGljaCBnaXZlcyB0aGUgaWxsdXNpb24gb2YgYW4gaW5maW5pdGUgc3RyaW5nIG9mXG4gICAgICAgICBzaWduIGJpdHMgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0LlxuXG4gICAgICBCb29sZWFucyAoYGBib29sYGApXG4gICAgICAgICBUaGVzZSByZXByZXNlbnQgdGhlIHRydXRoIHZhbHVlcyBGYWxzZSBhbmQgVHJ1ZS4gIFRoZSB0d29cbiAgICAgICAgIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZXMgRmFsc2UgYW5kIFRydWUgYXJlIHRoZSBvbmx5XG4gICAgICAgICBCb29sZWFuIG9iamVjdHMuIFRoZSBCb29sZWFuIHR5cGUgaXMgYSBzdWJ0eXBlIG9mIHRoZSBpbnRlZ2VyXG4gICAgICAgICB0eXBlLCBhbmQgQm9vbGVhbiB2YWx1ZXMgYmVoYXZlIGxpa2UgdGhlIHZhbHVlcyAwIGFuZCAxLFxuICAgICAgICAgcmVzcGVjdGl2ZWx5LCBpbiBhbG1vc3QgYWxsIGNvbnRleHRzLCB0aGUgZXhjZXB0aW9uIGJlaW5nXG4gICAgICAgICB0aGF0IHdoZW4gY29udmVydGVkIHRvIGEgc3RyaW5nLCB0aGUgc3RyaW5ncyBgYCJGYWxzZSJgYCBvclxuICAgICAgICAgYGAiVHJ1ZSJgYCBhcmUgcmV0dXJuZWQsIHJlc3BlY3RpdmVseS5cblxuICAgICAgVGhlIHJ1bGVzIGZvciBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIGFyZSBpbnRlbmRlZCB0byBnaXZlIHRoZVxuICAgICAgbW9zdCBtZWFuaW5nZnVsIGludGVycHJldGF0aW9uIG9mIHNoaWZ0IGFuZCBtYXNrIG9wZXJhdGlvbnNcbiAgICAgIGludm9sdmluZyBuZWdhdGl2ZSBpbnRlZ2Vycy5cblxuICAgYGBudW1iZXJzLlJlYWxgYCAoYGBmbG9hdGBgKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IG1hY2hpbmUtbGV2ZWwgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludFxuICAgICAgbnVtYmVycy4gWW91IGFyZSBhdCB0aGUgbWVyY3kgb2YgdGhlIHVuZGVybHlpbmcgbWFjaGluZVxuICAgICAgYXJjaGl0ZWN0dXJlIChhbmQgQyBvciBKYXZhIGltcGxlbWVudGF0aW9uKSBmb3IgdGhlIGFjY2VwdGVkXG4gICAgICByYW5nZSBhbmQgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cuIFB5dGhvbiBkb2VzIG5vdCBzdXBwb3J0IHNpbmdsZS1cbiAgICAgIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzOyB0aGUgc2F2aW5ncyBpbiBwcm9jZXNzb3IgYW5kXG4gICAgICBtZW1vcnkgdXNhZ2UgdGhhdCBhcmUgdXN1YWxseSB0aGUgcmVhc29uIGZvciB1c2luZyB0aGVzZSBpc1xuICAgICAgZHdhcmZlZCBieSB0aGUgb3ZlcmhlYWQgb2YgdXNpbmcgb2JqZWN0cyBpbiBQeXRob24sIHNvIHRoZXJlIGlzXG4gICAgICBubyByZWFzb24gdG8gY29tcGxpY2F0ZSB0aGUgbGFuZ3VhZ2Ugd2l0aCB0d28ga2luZHMgb2YgZmxvYXRpbmdcbiAgICAgIHBvaW50IG51bWJlcnMuXG5cbiAgIGBgbnVtYmVycy5Db21wbGV4YGAgKGBgY29tcGxleGBgKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IGNvbXBsZXggbnVtYmVycyBhcyBhIHBhaXIgb2YgbWFjaGluZS1sZXZlbFxuICAgICAgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAgVGhlIHNhbWUgY2F2ZWF0cyBhcHBseVxuICAgICAgYXMgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIFRoZSByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgb2YgYVxuICAgICAgY29tcGxleCBudW1iZXIgYGB6YGAgY2FuIGJlIHJldHJpZXZlZCB0aHJvdWdoIHRoZSByZWFkLW9ubHlcbiAgICAgIGF0dHJpYnV0ZXMgYGB6LnJlYWxgYCBhbmQgYGB6LmltYWdgYC5cblxuU2VxdWVuY2VzXG4gICBUaGVzZSByZXByZXNlbnQgZmluaXRlIG9yZGVyZWQgc2V0cyBpbmRleGVkIGJ5IG5vbi1uZWdhdGl2ZVxuICAgbnVtYmVycy4gVGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgbGVuKClgYCByZXR1cm5zIHRoZSBudW1iZXIgb2ZcbiAgIGl0ZW1zIG9mIGEgc2VxdWVuY2UuIFdoZW4gdGhlIGxlbmd0aCBvZiBhIHNlcXVlbmNlIGlzICpuKiwgdGhlXG4gICBpbmRleCBzZXQgY29udGFpbnMgdGhlIG51bWJlcnMgMCwgMSwgLi4uLCAqbiotMS4gIEl0ZW0gKmkqIG9mXG4gICBzZXF1ZW5jZSAqYSogaXMgc2VsZWN0ZWQgYnkgYGBhW2ldYGAuXG5cbiAgIFNlcXVlbmNlcyBhbHNvIHN1cHBvcnQgc2xpY2luZzogYGBhW2k6al1gYCBzZWxlY3RzIGFsbCBpdGVtcyB3aXRoXG4gICBpbmRleCAqayogc3VjaCB0aGF0ICppKiBgYDw9YGAgKmsqIGBgPGBgICpqKi4gIFdoZW4gdXNlZCBhcyBhblxuICAgZXhwcmVzc2lvbiwgYSBzbGljZSBpcyBhIHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUuICBUaGlzIGltcGxpZXNcbiAgIHRoYXQgdGhlIGluZGV4IHNldCBpcyByZW51bWJlcmVkIHNvIHRoYXQgaXQgc3RhcnRzIGF0IDAuXG5cbiAgIFNvbWUgc2VxdWVuY2VzIGFsc28gc3VwcG9ydCAiZXh0ZW5kZWQgc2xpY2luZyIgd2l0aCBhIHRoaXJkICJzdGVwIlxuICAgcGFyYW1ldGVyOiBgYGFbaTpqOmtdYGAgc2VsZWN0cyBhbGwgaXRlbXMgb2YgKmEqIHdpdGggaW5kZXggKngqXG4gICB3aGVyZSBgYHggPSBpICsgbiprYGAsICpuKiBgYD49YGAgYGAwYGAgYW5kICppKiBgYDw9YGAgKngqIGBgPGBgXG4gICAqaiouXG5cbiAgIFNlcXVlbmNlcyBhcmUgZGlzdGluZ3Vpc2hlZCBhY2NvcmRpbmcgdG8gdGhlaXIgbXV0YWJpbGl0eTpcblxuICAgSW1tdXRhYmxlIHNlcXVlbmNlc1xuICAgICAgQW4gb2JqZWN0IG9mIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlIGNhbm5vdCBjaGFuZ2Ugb25jZSBpdCBpc1xuICAgICAgY3JlYXRlZC4gIChJZiB0aGUgb2JqZWN0IGNvbnRhaW5zIHJlZmVyZW5jZXMgdG8gb3RoZXIgb2JqZWN0cyxcbiAgICAgIHRoZXNlIG90aGVyIG9iamVjdHMgbWF5IGJlIG11dGFibGUgYW5kIG1heSBiZSBjaGFuZ2VkOyBob3dldmVyLFxuICAgICAgdGhlIGNvbGxlY3Rpb24gb2Ygb2JqZWN0cyBkaXJlY3RseSByZWZlcmVuY2VkIGJ5IGFuIGltbXV0YWJsZVxuICAgICAgb2JqZWN0IGNhbm5vdCBjaGFuZ2UuKVxuXG4gICAgICBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzOlxuXG4gICAgICBTdHJpbmdzXG4gICAgICAgICBBIHN0cmluZyBpcyBhIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGF0IHJlcHJlc2VudCBVbmljb2RlXG4gICAgICAgICBjb2RlcG9pbnRzLiBBbGwgdGhlIGNvZGVwb2ludHMgaW4gcmFuZ2UgYGBVKzAwMDAgLSBVKzEwRkZGRmBgXG4gICAgICAgICBjYW4gYmUgcmVwcmVzZW50ZWQgaW4gYSBzdHJpbmcuICBQeXRob24gZG9lc25cJ3QgaGF2ZSBhXG4gICAgICAgICBgYGNocmBgIHR5cGUsIGFuZCBldmVyeSBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZyBpc1xuICAgICAgICAgcmVwcmVzZW50ZWQgYXMgYSBzdHJpbmcgb2JqZWN0IHdpdGggbGVuZ3RoIGBgMWBgLiAgVGhlIGJ1aWx0LVxuICAgICAgICAgaW4gZnVuY3Rpb24gYGBvcmQoKWBgIGNvbnZlcnRzIGEgY2hhcmFjdGVyIHRvIGl0cyBjb2RlcG9pbnRcbiAgICAgICAgIChhcyBhbiBpbnRlZ2VyKTsgYGBjaHIoKWBgIGNvbnZlcnRzIGFuIGludGVnZXIgaW4gcmFuZ2UgYGAwIC1cbiAgICAgICAgIDEwRkZGRmBgIHRvIHRoZSBjb3JyZXNwb25kaW5nIGNoYXJhY3Rlci4gYGBzdHIuZW5jb2RlKClgYCBjYW5cbiAgICAgICAgIGJlIHVzZWQgdG8gY29udmVydCBhIGBgc3RyYGAgdG8gYGBieXRlc2BgIHVzaW5nIHRoZSBnaXZlblxuICAgICAgICAgZW5jb2RpbmcsIGFuZCBgYGJ5dGVzLmRlY29kZSgpYGAgY2FuIGJlIHVzZWQgdG8gYWNoaWV2ZSB0aGVcbiAgICAgICAgIG9wcG9zaXRlLlxuXG4gICAgICBUdXBsZXNcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHR1cGxlIGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuIFR1cGxlcyBvZlxuICAgICAgICAgdHdvIG9yIG1vcmUgaXRlbXMgYXJlIGZvcm1lZCBieSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMgb2ZcbiAgICAgICAgIGV4cHJlc3Npb25zLiAgQSB0dXBsZSBvZiBvbmUgaXRlbSAoYSBcJ3NpbmdsZXRvblwnKSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhZmZpeGluZyBhIGNvbW1hIHRvIGFuIGV4cHJlc3Npb24gKGFuIGV4cHJlc3Npb24gYnlcbiAgICAgICAgIGl0c2VsZiBkb2VzIG5vdCBjcmVhdGUgYSB0dXBsZSwgc2luY2UgcGFyZW50aGVzZXMgbXVzdCBiZVxuICAgICAgICAgdXNhYmxlIGZvciBncm91cGluZyBvZiBleHByZXNzaW9ucykuICBBbiBlbXB0eSB0dXBsZSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhbiBlbXB0eSBwYWlyIG9mIHBhcmVudGhlc2VzLlxuXG4gICAgICBCeXRlc1xuICAgICAgICAgQSBieXRlcyBvYmplY3QgaXMgYW4gaW1tdXRhYmxlIGFycmF5LiAgVGhlIGl0ZW1zIGFyZSA4LWJpdFxuICAgICAgICAgYnl0ZXMsIHJlcHJlc2VudGVkIGJ5IGludGVnZXJzIGluIHRoZSByYW5nZSAwIDw9IHggPCAyNTYuXG4gICAgICAgICBCeXRlcyBsaXRlcmFscyAobGlrZSBgYGJcJ2FiY1wnYGAgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgICAgICAgYGBieXRlcygpYGAgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGJ5dGVzIG9iamVjdHMuICBBbHNvLFxuICAgICAgICAgYnl0ZXMgb2JqZWN0cyBjYW4gYmUgZGVjb2RlZCB0byBzdHJpbmdzIHZpYSB0aGUgYGBkZWNvZGUoKWBgXG4gICAgICAgICBtZXRob2QuXG5cbiAgIE11dGFibGUgc2VxdWVuY2VzXG4gICAgICBNdXRhYmxlIHNlcXVlbmNlcyBjYW4gYmUgY2hhbmdlZCBhZnRlciB0aGV5IGFyZSBjcmVhdGVkLiAgVGhlXG4gICAgICBzdWJzY3JpcHRpb24gYW5kIHNsaWNpbmcgbm90YXRpb25zIGNhbiBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgb2ZcbiAgICAgIGFzc2lnbm1lbnQgYW5kIGBgZGVsYGAgKGRlbGV0ZSkgc3RhdGVtZW50cy5cblxuICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG5cbiAgICAgIExpc3RzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyBhcmVcbiAgICAgICAgIGZvcm1lZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgaW5cbiAgICAgICAgIHNxdWFyZSBicmFja2V0cy4gKE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gc3BlY2lhbCBjYXNlcyBuZWVkZWRcbiAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG5cbiAgICAgIEJ5dGUgQXJyYXlzXG4gICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkIGJ5XG4gICAgICAgICB0aGUgYnVpbHQtaW4gYGBieXRlYXJyYXkoKWBgIGNvbnN0cnVjdG9yLiAgQXNpZGUgZnJvbSBiZWluZ1xuICAgICAgICAgbXV0YWJsZSAoYW5kIGhlbmNlIHVuaGFzaGFibGUpLCBieXRlIGFycmF5cyBvdGhlcndpc2UgcHJvdmlkZVxuICAgICAgICAgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZCBmdW5jdGlvbmFsaXR5IGFzIGltbXV0YWJsZSBieXRlc1xuICAgICAgICAgb2JqZWN0cy5cblxuICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGUgYGBhcnJheWBgIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgZXhhbXBsZSBvZlxuICAgICAgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsIGFzIGRvZXMgdGhlIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUuXG5cblNldCB0eXBlc1xuICAgVGhlc2UgcmVwcmVzZW50IHVub3JkZXJlZCwgZmluaXRlIHNldHMgb2YgdW5pcXVlLCBpbW11dGFibGVcbiAgIG9iamVjdHMuIEFzIHN1Y2gsIHRoZXkgY2Fubm90IGJlIGluZGV4ZWQgYnkgYW55IHN1YnNjcmlwdC4gSG93ZXZlcixcbiAgIHRoZXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgXG4gICByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBzZXQuIENvbW1vbiB1c2VzIGZvciBzZXRzIGFyZSBmYXN0XG4gICBtZW1iZXJzaGlwIHRlc3RpbmcsIHJlbW92aW5nIGR1cGxpY2F0ZXMgZnJvbSBhIHNlcXVlbmNlLCBhbmRcbiAgIGNvbXB1dGluZyBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBzdWNoIGFzIGludGVyc2VjdGlvbiwgdW5pb24sXG4gICBkaWZmZXJlbmNlLCBhbmQgc3ltbWV0cmljIGRpZmZlcmVuY2UuXG5cbiAgIEZvciBzZXQgZWxlbWVudHMsIHRoZSBzYW1lIGltbXV0YWJpbGl0eSBydWxlcyBhcHBseSBhcyBmb3JcbiAgIGRpY3Rpb25hcnkga2V5cy4gTm90ZSB0aGF0IG51bWVyaWMgdHlwZXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzIGZvclxuICAgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCBgYDFgYCBhbmRcbiAgIGBgMS4wYGApLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG5cbiAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBzZXQgdHlwZXM6XG5cbiAgIFNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhIG11dGFibGUgc2V0LiBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgYGBzZXQoKWBgIGNvbnN0cnVjdG9yIGFuZCBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyBieSBzZXZlcmFsXG4gICAgICBtZXRob2RzLCBzdWNoIGFzIGBgYWRkKClgYC5cblxuICAgRnJvemVuIHNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhbiBpbW11dGFibGUgc2V0LiAgVGhleSBhcmUgY3JlYXRlZCBieSB0aGVcbiAgICAgIGJ1aWx0LWluIGBgZnJvemVuc2V0KClgYCBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzXG4gICAgICBpbW11dGFibGUgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2ZcbiAgICAgIGFub3RoZXIgc2V0LCBvciBhcyBhIGRpY3Rpb25hcnkga2V5LlxuXG5NYXBwaW5nc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBhcmJpdHJhcnkgaW5kZXhcbiAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gYGBhW2tdYGAgc2VsZWN0cyB0aGUgaXRlbSBpbmRleGVkIGJ5XG4gICBgYGtgYCBmcm9tIHRoZSBtYXBwaW5nIGBgYWBgOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZFxuICAgYXMgdGhlIHRhcmdldCBvZiBhc3NpZ25tZW50cyBvciBgYGRlbGBgIHN0YXRlbWVudHMuIFRoZSBidWlsdC1pblxuICAgZnVuY3Rpb24gYGBsZW4oKWBgIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIG1hcHBpbmcuXG5cbiAgIFRoZXJlIGlzIGN1cnJlbnRseSBhIHNpbmdsZSBpbnRyaW5zaWMgbWFwcGluZyB0eXBlOlxuXG4gICBEaWN0aW9uYXJpZXNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgbmVhcmx5XG4gICAgICBhcmJpdHJhcnkgdmFsdWVzLiAgVGhlIG9ubHkgdHlwZXMgb2YgdmFsdWVzIG5vdCBhY2NlcHRhYmxlIGFzXG4gICAgICBrZXlzIGFyZSB2YWx1ZXMgY29udGFpbmluZyBsaXN0cyBvciBkaWN0aW9uYXJpZXMgb3Igb3RoZXJcbiAgICAgIG11dGFibGUgdHlwZXMgdGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgb2JqZWN0XG4gICAgICBpZGVudGl0eSwgdGhlIHJlYXNvbiBiZWluZyB0aGF0IHRoZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2ZcbiAgICAgIGRpY3Rpb25hcmllcyByZXF1aXJlcyBhIGtleVwncyBoYXNoIHZhbHVlIHRvIHJlbWFpbiBjb25zdGFudC5cbiAgICAgIE51bWVyaWMgdHlwZXMgdXNlZCBmb3Iga2V5cyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWNcbiAgICAgIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sIGBgMWBgIGFuZFxuICAgICAgYGAxLjBgYCkgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0byBpbmRleCB0aGUgc2FtZVxuICAgICAgZGljdGlvbmFyeSBlbnRyeS5cblxuICAgICAgRGljdGlvbmFyaWVzIGFyZSBtdXRhYmxlOyB0aGV5IGNhbiBiZSBjcmVhdGVkIGJ5IHRoZSBgYHsuLi59YGBcbiAgICAgIG5vdGF0aW9uIChzZWUgc2VjdGlvbiAqRGljdGlvbmFyeSBkaXNwbGF5cyopLlxuXG4gICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZXMgYGBkYm0ubmRibWBgIGFuZCBgYGRibS5nbnVgYCBwcm92aWRlXG4gICAgICBhZGRpdGlvbmFsIGV4YW1wbGVzIG9mIG1hcHBpbmcgdHlwZXMsIGFzIGRvZXMgdGhlXG4gICAgICBgYGNvbGxlY3Rpb25zYGAgbW9kdWxlLlxuXG5DYWxsYWJsZSB0eXBlc1xuICAgVGhlc2UgYXJlIHRoZSB0eXBlcyB0byB3aGljaCB0aGUgZnVuY3Rpb24gY2FsbCBvcGVyYXRpb24gKHNlZVxuICAgc2VjdGlvbiAqQ2FsbHMqKSBjYW4gYmUgYXBwbGllZDpcblxuICAgVXNlci1kZWZpbmVkIGZ1bmN0aW9uc1xuICAgICAgQSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGlzIGNyZWF0ZWQgYnkgYSBmdW5jdGlvblxuICAgICAgZGVmaW5pdGlvbiAoc2VlIHNlY3Rpb24gKkZ1bmN0aW9uIGRlZmluaXRpb25zKikuICBJdCBzaG91bGQgYmVcbiAgICAgIGNhbGxlZCB3aXRoIGFuIGFyZ3VtZW50IGxpc3QgY29udGFpbmluZyB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXNcbiAgICAgIGFzIHRoZSBmdW5jdGlvblwncyBmb3JtYWwgcGFyYW1ldGVyIGxpc3QuXG5cbiAgICAgIFNwZWNpYWwgYXR0cmlidXRlczpcblxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgQXR0cmlidXRlICAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArPT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09K1xuICAgICAgfCBgYF9fZG9jX19gYCAgICAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzIGRvY3VtZW50YXRpb24gICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcsIG9yIGBgTm9uZWBgIGlmICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdW5hdmFpbGFibGUgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19uYW1lX19gYCAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgbmFtZSAgICAgICAgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19xdWFsbmFtZV9fYGAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgKnF1YWxpZmllZCBuYW1lKiB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldyBpbiB2ZXJzaW9uIDMuMy4gICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fbW9kdWxlX19gYCAgICAgICAgICAgIHwgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluLCBvciAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZS4gICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2RlZmF1bHRzX19gYCAgICAgICAgICB8IEEgdHVwbGUgY29udGFpbmluZyBkZWZhdWx0ICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudCB2YWx1ZXMgZm9yIHRob3NlICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnRzIHRoYXQgaGF2ZSBkZWZhdWx0cywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yIGBgTm9uZWBgIGlmIG5vIGFyZ3VtZW50cyAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2NvZGVfX2BgICAgICAgICAgICAgICB8IFRoZSBjb2RlIG9iamVjdCByZXByZXNlbnRpbmcgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29tcGlsZWQgZnVuY3Rpb24gYm9keS4gICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2dsb2JhbHNfX2BgICAgICAgICAgICB8IEEgcmVmZXJlbmNlIHRvIHRoZSBkaWN0aW9uYXJ5ICAgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGhvbGRzIHRoZSBmdW5jdGlvblwncyAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdsb2JhbCB2YXJpYWJsZXMgLS0tIHRoZSBnbG9iYWwgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZSBpbiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hpY2ggdGhlIGZ1bmN0aW9uIHdhcyBkZWZpbmVkLiB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19kaWN0X19gYCAgICAgICAgICAgICAgfCBUaGUgbmFtZXNwYWNlIHN1cHBvcnRpbmcgICAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJiaXRyYXJ5IGZ1bmN0aW9uIGF0dHJpYnV0ZXMuICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19jbG9zdXJlX19gYCAgICAgICAgICAgfCBgYE5vbmVgYCBvciBhIHR1cGxlIG9mIGNlbGxzICAgIHwgUmVhZC1vbmx5ICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhhdCBjb250YWluIGJpbmRpbmdzIGZvciB0aGUgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uXCdzIGZyZWUgdmFyaWFibGVzLiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2Fubm90YXRpb25zX19gYCAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGFubm90YXRpb25zICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZiBwYXJhbWV0ZXJzLiAgVGhlIGtleXMgb2YgdGhlIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGljdCBhcmUgdGhlIHBhcmFtZXRlciBuYW1lcywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yIGBgXCdyZXR1cm5cJ2BgIGZvciB0aGUgcmV0dXJuICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFubm90YXRpb24sIGlmIHByb3ZpZGVkLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fa3dkZWZhdWx0c19fYGAgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgZGVmYXVsdHMgZm9yICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmQtb25seSBwYXJhbWV0ZXJzLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuXG4gICAgICBNb3N0IG9mIHRoZSBhdHRyaWJ1dGVzIGxhYmVsbGVkICJXcml0YWJsZSIgY2hlY2sgdGhlIHR5cGUgb2YgdGhlXG4gICAgICBhc3NpZ25lZCB2YWx1ZS5cblxuICAgICAgRnVuY3Rpb24gb2JqZWN0cyBhbHNvIHN1cHBvcnQgZ2V0dGluZyBhbmQgc2V0dGluZyBhcmJpdHJhcnlcbiAgICAgIGF0dHJpYnV0ZXMsIHdoaWNoIGNhbiBiZSB1c2VkLCBmb3IgZXhhbXBsZSwgdG8gYXR0YWNoIG1ldGFkYXRhXG4gICAgICB0byBmdW5jdGlvbnMuICBSZWd1bGFyIGF0dHJpYnV0ZSBkb3Qtbm90YXRpb24gaXMgdXNlZCB0byBnZXQgYW5kXG4gICAgICBzZXQgc3VjaCBhdHRyaWJ1dGVzLiAqTm90ZSB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9ubHlcbiAgICAgIHN1cHBvcnRzIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gRnVuY3Rpb25cbiAgICAgIGF0dHJpYnV0ZXMgb24gYnVpbHQtaW4gZnVuY3Rpb25zIG1heSBiZSBzdXBwb3J0ZWQgaW4gdGhlXG4gICAgICBmdXR1cmUuKlxuXG4gICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGEgZnVuY3Rpb25cJ3MgZGVmaW5pdGlvbiBjYW4gYmVcbiAgICAgIHJldHJpZXZlZCBmcm9tIGl0cyBjb2RlIG9iamVjdDsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBpbnRlcm5hbFxuICAgICAgdHlwZXMgYmVsb3cuXG5cbiAgIEluc3RhbmNlIG1ldGhvZHNcbiAgICAgIEFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgY29tYmluZXMgYSBjbGFzcywgYSBjbGFzcyBpbnN0YW5jZSBhbmRcbiAgICAgIGFueSBjYWxsYWJsZSBvYmplY3QgKG5vcm1hbGx5IGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uKS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBfX3NlbGZfX2BgIGlzIHRoZSBjbGFzcyBpbnN0YW5jZVxuICAgICAgb2JqZWN0LCBgYF9fZnVuY19fYGAgaXMgdGhlIGZ1bmN0aW9uIG9iamVjdDsgYGBfX2RvY19fYGAgaXMgdGhlXG4gICAgICBtZXRob2RcJ3MgZG9jdW1lbnRhdGlvbiAoc2FtZSBhcyBgYF9fZnVuY19fLl9fZG9jX19gYCk7XG4gICAgICBgYF9fbmFtZV9fYGAgaXMgdGhlIG1ldGhvZCBuYW1lIChzYW1lIGFzIGBgX19mdW5jX18uX19uYW1lX19gYCk7XG4gICAgICBgYF9fbW9kdWxlX19gYCBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBtZXRob2Qgd2FzIGRlZmluZWRcbiAgICAgIGluLCBvciBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZS5cblxuICAgICAgTWV0aG9kcyBhbHNvIHN1cHBvcnQgYWNjZXNzaW5nIChidXQgbm90IHNldHRpbmcpIHRoZSBhcmJpdHJhcnlcbiAgICAgIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0LlxuXG4gICAgICBVc2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdHMgbWF5IGJlIGNyZWF0ZWQgd2hlbiBnZXR0aW5nIGFuXG4gICAgICBhdHRyaWJ1dGUgb2YgYSBjbGFzcyAocGVyaGFwcyB2aWEgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyksIGlmXG4gICAgICB0aGF0IGF0dHJpYnV0ZSBpcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3Qgb3IgYSBjbGFzc1xuICAgICAgbWV0aG9kIG9iamVjdC5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZyBhIHVzZXItXG4gICAgICBkZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBmcm9tIGEgY2xhc3MgdmlhIG9uZSBvZiBpdHMgaW5zdGFuY2VzLFxuICAgICAgaXRzIGBgX19zZWxmX19gYCBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLCBhbmQgdGhlIG1ldGhvZFxuICAgICAgb2JqZWN0IGlzIHNhaWQgdG8gYmUgYm91bmQuICBUaGUgbmV3IG1ldGhvZFwncyBgYF9fZnVuY19fYGBcbiAgICAgIGF0dHJpYnV0ZSBpcyB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gb2JqZWN0LlxuXG4gICAgICBXaGVuIGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nXG4gICAgICBhbm90aGVyIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCB0aGUgYmVoYXZpb3VyIGlzXG4gICAgICB0aGUgc2FtZSBhcyBmb3IgYSBmdW5jdGlvbiBvYmplY3QsIGV4Y2VwdCB0aGF0IHRoZSBgYF9fZnVuY19fYGBcbiAgICAgIGF0dHJpYnV0ZSBvZiB0aGUgbmV3IGluc3RhbmNlIGlzIG5vdCB0aGUgb3JpZ2luYWwgbWV0aG9kIG9iamVjdFxuICAgICAgYnV0IGl0cyBgYF9fZnVuY19fYGAgYXR0cmlidXRlLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgY2xhc3NcbiAgICAgIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCBpdHMgYGBfX3NlbGZfX2BgXG4gICAgICBhdHRyaWJ1dGUgaXMgdGhlIGNsYXNzIGl0c2VsZiwgYW5kIGl0cyBgYF9fZnVuY19fYGAgYXR0cmlidXRlIGlzXG4gICAgICB0aGUgZnVuY3Rpb24gb2JqZWN0IHVuZGVybHlpbmcgdGhlIGNsYXNzIG1ldGhvZC5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNhbGxlZCwgdGhlIHVuZGVybHlpbmdcbiAgICAgIGZ1bmN0aW9uIChgYF9fZnVuY19fYGApIGlzIGNhbGxlZCwgaW5zZXJ0aW5nIHRoZSBjbGFzcyBpbnN0YW5jZVxuICAgICAgKGBgX19zZWxmX19gYCkgaW4gZnJvbnQgb2YgdGhlIGFyZ3VtZW50IGxpc3QuICBGb3IgaW5zdGFuY2UsXG4gICAgICB3aGVuIGBgQ2BgIGlzIGEgY2xhc3Mgd2hpY2ggY29udGFpbnMgYSBkZWZpbml0aW9uIGZvciBhIGZ1bmN0aW9uXG4gICAgICBgYGYoKWBgLCBhbmQgYGB4YGAgaXMgYW4gaW5zdGFuY2Ugb2YgYGBDYGAsIGNhbGxpbmcgYGB4LmYoMSlgYFxuICAgICAgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIGBgQy5mKHgsIDEpYGAuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBkZXJpdmVkIGZyb20gYSBjbGFzcyBtZXRob2RcbiAgICAgIG9iamVjdCwgdGhlICJjbGFzcyBpbnN0YW5jZSIgc3RvcmVkIGluIGBgX19zZWxmX19gYCB3aWxsXG4gICAgICBhY3R1YWxseSBiZSB0aGUgY2xhc3MgaXRzZWxmLCBzbyB0aGF0IGNhbGxpbmcgZWl0aGVyIGBgeC5mKDEpYGBcbiAgICAgIG9yIGBgQy5mKDEpYGAgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIGBgZihDLDEpYGAgd2hlcmUgYGBmYGAgaXNcbiAgICAgIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uLlxuXG4gICAgICBOb3RlIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gZnVuY3Rpb24gb2JqZWN0IHRvIGluc3RhbmNlXG4gICAgICBtZXRob2Qgb2JqZWN0IGhhcHBlbnMgZWFjaCB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgcmV0cmlldmVkIGZyb21cbiAgICAgIHRoZSBpbnN0YW5jZS4gIEluIHNvbWUgY2FzZXMsIGEgZnJ1aXRmdWwgb3B0aW1pemF0aW9uIGlzIHRvXG4gICAgICBhc3NpZ24gdGhlIGF0dHJpYnV0ZSB0byBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjYWxsIHRoYXQgbG9jYWxcbiAgICAgIHZhcmlhYmxlLiBBbHNvIG5vdGljZSB0aGF0IHRoaXMgdHJhbnNmb3JtYXRpb24gb25seSBoYXBwZW5zIGZvclxuICAgICAgdXNlci1kZWZpbmVkIGZ1bmN0aW9uczsgb3RoZXIgY2FsbGFibGUgb2JqZWN0cyAoYW5kIGFsbCBub24tXG4gICAgICBjYWxsYWJsZSBvYmplY3RzKSBhcmUgcmV0cmlldmVkIHdpdGhvdXQgdHJhbnNmb3JtYXRpb24uICBJdCBpc1xuICAgICAgYWxzbyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgd2hpY2ggYXJlXG4gICAgICBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgaW5zdGFuY2UgYXJlIG5vdCBjb252ZXJ0ZWQgdG8gYm91bmRcbiAgICAgIG1ldGhvZHM7IHRoaXMgKm9ubHkqIGhhcHBlbnMgd2hlbiB0aGUgZnVuY3Rpb24gaXMgYW4gYXR0cmlidXRlXG4gICAgICBvZiB0aGUgY2xhc3MuXG5cbiAgIEdlbmVyYXRvciBmdW5jdGlvbnNcbiAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIHVzZXMgdGhlIGBgeWllbGRgYCBzdGF0ZW1lbnQgKHNlZVxuICAgICAgc2VjdGlvbiAqVGhlIHlpZWxkIHN0YXRlbWVudCopIGlzIGNhbGxlZCBhICpnZW5lcmF0b3IgZnVuY3Rpb24qLlxuICAgICAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCwgYWx3YXlzIHJldHVybnMgYW4gaXRlcmF0b3Igb2JqZWN0XG4gICAgICB3aGljaCBjYW4gYmUgdXNlZCB0byBleGVjdXRlIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbjogIGNhbGxpbmdcbiAgICAgIHRoZSBpdGVyYXRvclwncyBgYF9fbmV4dF9fKClgYCBtZXRob2Qgd2lsbCBjYXVzZSB0aGUgZnVuY3Rpb24gdG9cbiAgICAgIGV4ZWN1dGUgdW50aWwgaXQgcHJvdmlkZXMgYSB2YWx1ZSB1c2luZyB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudC5cbiAgICAgIFdoZW4gdGhlIGZ1bmN0aW9uIGV4ZWN1dGVzIGEgYGByZXR1cm5gYCBzdGF0ZW1lbnQgb3IgZmFsbHMgb2ZmXG4gICAgICB0aGUgZW5kLCBhIGBgU3RvcEl0ZXJhdGlvbmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kIHRoZVxuICAgICAgaXRlcmF0b3Igd2lsbCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mIHZhbHVlcyB0byBiZVxuICAgICAgcmV0dXJuZWQuXG5cbiAgIEJ1aWx0LWluIGZ1bmN0aW9uc1xuICAgICAgQSBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhIEMgZnVuY3Rpb24uXG4gICAgICBFeGFtcGxlcyBvZiBidWlsdC1pbiBmdW5jdGlvbnMgYXJlIGBgbGVuKClgYCBhbmQgYGBtYXRoLnNpbigpYGBcbiAgICAgIChgYG1hdGhgYCBpcyBhIHN0YW5kYXJkIGJ1aWx0LWluIG1vZHVsZSkuIFRoZSBudW1iZXIgYW5kIHR5cGUgb2ZcbiAgICAgIHRoZSBhcmd1bWVudHMgYXJlIGRldGVybWluZWQgYnkgdGhlIEMgZnVuY3Rpb24uIFNwZWNpYWwgcmVhZC1cbiAgICAgIG9ubHkgYXR0cmlidXRlczogYGBfX2RvY19fYGAgaXMgdGhlIGZ1bmN0aW9uXCdzIGRvY3VtZW50YXRpb25cbiAgICAgIHN0cmluZywgb3IgYGBOb25lYGAgaWYgdW5hdmFpbGFibGU7IGBgX19uYW1lX19gYCBpcyB0aGVcbiAgICAgIGZ1bmN0aW9uXCdzIG5hbWU7IGBgX19zZWxmX19gYCBpcyBzZXQgdG8gYGBOb25lYGAgKGJ1dCBzZWUgdGhlXG4gICAgICBuZXh0IGl0ZW0pOyBgYF9fbW9kdWxlX19gYCBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZVxuICAgICAgZnVuY3Rpb24gd2FzIGRlZmluZWQgaW4gb3IgYGBOb25lYGAgaWYgdW5hdmFpbGFibGUuXG5cbiAgIEJ1aWx0LWluIG1ldGhvZHNcbiAgICAgIFRoaXMgaXMgcmVhbGx5IGEgZGlmZmVyZW50IGRpc2d1aXNlIG9mIGEgYnVpbHQtaW4gZnVuY3Rpb24sIHRoaXNcbiAgICAgIHRpbWUgY29udGFpbmluZyBhbiBvYmplY3QgcGFzc2VkIHRvIHRoZSBDIGZ1bmN0aW9uIGFzIGFuXG4gICAgICBpbXBsaWNpdCBleHRyYSBhcmd1bWVudC4gIEFuIGV4YW1wbGUgb2YgYSBidWlsdC1pbiBtZXRob2QgaXNcbiAgICAgIGBgYWxpc3QuYXBwZW5kKClgYCwgYXNzdW1pbmcgKmFsaXN0KiBpcyBhIGxpc3Qgb2JqZWN0LiBJbiB0aGlzXG4gICAgICBjYXNlLCB0aGUgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlIGBgX19zZWxmX19gYCBpcyBzZXQgdG8gdGhlXG4gICAgICBvYmplY3QgZGVub3RlZCBieSAqYWxpc3QqLlxuXG4gICBDbGFzc2VzXG4gICAgICBDbGFzc2VzIGFyZSBjYWxsYWJsZS4gIFRoZXNlIG9iamVjdHMgbm9ybWFsbHkgYWN0IGFzIGZhY3Rvcmllc1xuICAgICAgZm9yIG5ldyBpbnN0YW5jZXMgb2YgdGhlbXNlbHZlcywgYnV0IHZhcmlhdGlvbnMgYXJlIHBvc3NpYmxlIGZvclxuICAgICAgY2xhc3MgdHlwZXMgdGhhdCBvdmVycmlkZSBgYF9fbmV3X18oKWBgLiAgVGhlIGFyZ3VtZW50cyBvZiB0aGVcbiAgICAgIGNhbGwgYXJlIHBhc3NlZCB0byBgYF9fbmV3X18oKWBgIGFuZCwgaW4gdGhlIHR5cGljYWwgY2FzZSwgdG9cbiAgICAgIGBgX19pbml0X18oKWBgIHRvIGluaXRpYWxpemUgdGhlIG5ldyBpbnN0YW5jZS5cblxuICAgQ2xhc3MgSW5zdGFuY2VzXG4gICAgICBJbnN0YW5jZXMgb2YgYXJiaXRyYXJ5IGNsYXNzZXMgY2FuIGJlIG1hZGUgY2FsbGFibGUgYnkgZGVmaW5pbmdcbiAgICAgIGEgYGBfX2NhbGxfXygpYGAgbWV0aG9kIGluIHRoZWlyIGNsYXNzLlxuXG5Nb2R1bGVzXG4gICBNb2R1bGVzIGFyZSBhIGJhc2ljIG9yZ2FuaXphdGlvbmFsIHVuaXQgb2YgUHl0aG9uIGNvZGUsIGFuZCBhcmVcbiAgIGNyZWF0ZWQgYnkgdGhlICppbXBvcnQgc3lzdGVtKiBhcyBpbnZva2VkIGVpdGhlciBieSB0aGUgYGBpbXBvcnRgYFxuICAgc3RhdGVtZW50IChzZWUgYGBpbXBvcnRgYCksIG9yIGJ5IGNhbGxpbmcgZnVuY3Rpb25zIHN1Y2ggYXNcbiAgIGBgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKWBgIGFuZCBidWlsdC1pbiBgYF9faW1wb3J0X18oKWBgLiAgQVxuICAgbW9kdWxlIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdFxuICAgKHRoaXMgaXMgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZCBieSB0aGUgYGBfX2dsb2JhbHNfX2BgIGF0dHJpYnV0ZVxuICAgb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSkuICBBdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmVcbiAgIHRyYW5zbGF0ZWQgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sIGBgbS54YGAgaXNcbiAgIGVxdWl2YWxlbnQgdG8gYGBtLl9fZGljdF9fWyJ4Il1gYC4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW5cbiAgIHRoZSBjb2RlIG9iamVjdCB1c2VkIHRvIGluaXRpYWxpemUgdGhlIG1vZHVsZSAoc2luY2UgaXQgaXNuXCd0XG4gICBuZWVkZWQgb25jZSB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSkuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2UgZGljdGlvbmFyeSxcbiAgIGUuZy4sIGBgbS54ID0gMWBgIGlzIGVxdWl2YWxlbnQgdG8gYGBtLl9fZGljdF9fWyJ4Il0gPSAxYGAuXG5cbiAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZTogYGBfX2RpY3RfX2BgIGlzIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlXG4gICBhcyBhIGRpY3Rpb25hcnkgb2JqZWN0LlxuXG4gICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEJlY2F1c2Ugb2YgdGhlIHdheSBDUHl0aG9uXG4gICBjbGVhcnMgbW9kdWxlIGRpY3Rpb25hcmllcywgdGhlIG1vZHVsZSBkaWN0aW9uYXJ5IHdpbGwgYmUgY2xlYXJlZFxuICAgd2hlbiB0aGUgbW9kdWxlIGZhbGxzIG91dCBvZiBzY29wZSBldmVuIGlmIHRoZSBkaWN0aW9uYXJ5IHN0aWxsIGhhc1xuICAgbGl2ZSByZWZlcmVuY2VzLiAgVG8gYXZvaWQgdGhpcywgY29weSB0aGUgZGljdGlvbmFyeSBvciBrZWVwIHRoZVxuICAgbW9kdWxlIGFyb3VuZCB3aGlsZSB1c2luZyBpdHMgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6IGBgX19uYW1lX19gYCBpcyB0aGUgbW9kdWxlXCdzXG4gICBuYW1lOyBgYF9fZG9jX19gYCBpcyB0aGUgbW9kdWxlXCdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBgYE5vbmVgYFxuICAgaWYgdW5hdmFpbGFibGU7IGBgX19maWxlX19gYCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaFxuICAgdGhlIG1vZHVsZSB3YXMgbG9hZGVkLCBpZiBpdCB3YXMgbG9hZGVkIGZyb20gYSBmaWxlLiBUaGVcbiAgIGBgX19maWxlX19gYCBhdHRyaWJ1dGUgbWF5IGJlIG1pc3NpbmcgZm9yIGNlcnRhaW4gdHlwZXMgb2YgbW9kdWxlcyxcbiAgIHN1Y2ggYXMgQyBtb2R1bGVzIHRoYXQgYXJlIHN0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlIGludGVycHJldGVyO1xuICAgZm9yIGV4dGVuc2lvbiBtb2R1bGVzIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0XG4gICBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGZpbGUuXG5cbkN1c3RvbSBjbGFzc2VzXG4gICBDdXN0b20gY2xhc3MgdHlwZXMgYXJlIHR5cGljYWxseSBjcmVhdGVkIGJ5IGNsYXNzIGRlZmluaXRpb25zIChzZWVcbiAgIHNlY3Rpb24gKkNsYXNzIGRlZmluaXRpb25zKikuICBBIGNsYXNzIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZFxuICAgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdC4gQ2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHRyYW5zbGF0ZWRcbiAgIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCBgYEMueGBgIGlzIHRyYW5zbGF0ZWQgdG9cbiAgIGBgQy5fX2RpY3RfX1sieCJdYGAgKGFsdGhvdWdoIHRoZXJlIGFyZSBhIG51bWJlciBvZiBob29rcyB3aGljaFxuICAgYWxsb3cgZm9yIG90aGVyIG1lYW5zIG9mIGxvY2F0aW5nIGF0dHJpYnV0ZXMpLiBXaGVuIHRoZSBhdHRyaWJ1dGVcbiAgIG5hbWUgaXMgbm90IGZvdW5kIHRoZXJlLCB0aGUgYXR0cmlidXRlIHNlYXJjaCBjb250aW51ZXMgaW4gdGhlIGJhc2VcbiAgIGNsYXNzZXMuIFRoaXMgc2VhcmNoIG9mIHRoZSBiYXNlIGNsYXNzZXMgdXNlcyB0aGUgQzMgbWV0aG9kXG4gICByZXNvbHV0aW9uIG9yZGVyIHdoaWNoIGJlaGF2ZXMgY29ycmVjdGx5IGV2ZW4gaW4gdGhlIHByZXNlbmNlIG9mXG4gICBcJ2RpYW1vbmRcJyBpbmhlcml0YW5jZSBzdHJ1Y3R1cmVzIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZVxuICAgaW5oZXJpdGFuY2UgcGF0aHMgbGVhZGluZyBiYWNrIHRvIGEgY29tbW9uIGFuY2VzdG9yLiBBZGRpdGlvbmFsXG4gICBkZXRhaWxzIG9uIHRoZSBDMyBNUk8gdXNlZCBieSBQeXRob24gY2FuIGJlIGZvdW5kIGluIHRoZVxuICAgZG9jdW1lbnRhdGlvbiBhY2NvbXBhbnlpbmcgdGhlIDIuMyByZWxlYXNlIGF0XG4gICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvcmVsZWFzZXMvMi4zL21yby8uXG5cbiAgIFdoZW4gYSBjbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlIChmb3IgY2xhc3MgYGBDYGAsIHNheSkgd291bGQgeWllbGRcbiAgIGEgY2xhc3MgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2RcbiAgIG9iamVjdCB3aG9zZSBgYF9fc2VsZl9fYGAgYXR0cmlidXRlcyBpcyBgYENgYC4gIFdoZW4gaXQgd291bGQgeWllbGRcbiAgIGEgc3RhdGljIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG9iamVjdCB3cmFwcGVkXG4gICBieSB0aGUgc3RhdGljIG1ldGhvZCBvYmplY3QuIFNlZSBzZWN0aW9uICpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqXG4gICBmb3IgYW5vdGhlciB3YXkgaW4gd2hpY2ggYXR0cmlidXRlcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG1heVxuICAgZGlmZmVyIGZyb20gdGhvc2UgYWN0dWFsbHkgY29udGFpbmVkIGluIGl0cyBgYF9fZGljdF9fYGAuXG5cbiAgIENsYXNzIGF0dHJpYnV0ZSBhc3NpZ25tZW50cyB1cGRhdGUgdGhlIGNsYXNzXCdzIGRpY3Rpb25hcnksIG5ldmVyXG4gICB0aGUgZGljdGlvbmFyeSBvZiBhIGJhc2UgY2xhc3MuXG5cbiAgIEEgY2xhc3Mgb2JqZWN0IGNhbiBiZSBjYWxsZWQgKHNlZSBhYm92ZSkgdG8geWllbGQgYSBjbGFzcyBpbnN0YW5jZVxuICAgKHNlZSBiZWxvdykuXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogYGBfX25hbWVfX2BgIGlzIHRoZSBjbGFzcyBuYW1lOyBgYF9fbW9kdWxlX19gYFxuICAgaXMgdGhlIG1vZHVsZSBuYW1lIGluIHdoaWNoIHRoZSBjbGFzcyB3YXMgZGVmaW5lZDsgYGBfX2RpY3RfX2BgIGlzXG4gICB0aGUgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzc1wncyBuYW1lc3BhY2U7IGBgX19iYXNlc19fYGAgaXMgYVxuICAgdHVwbGUgKHBvc3NpYmx5IGVtcHR5IG9yIGEgc2luZ2xldG9uKSBjb250YWluaW5nIHRoZSBiYXNlIGNsYXNzZXMsXG4gICBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgb2NjdXJyZW5jZSBpbiB0aGUgYmFzZSBjbGFzcyBsaXN0O1xuICAgYGBfX2RvY19fYGAgaXMgdGhlIGNsYXNzXCdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBOb25lIGlmXG4gICB1bmRlZmluZWQuXG5cbkNsYXNzIGluc3RhbmNlc1xuICAgQSBjbGFzcyBpbnN0YW5jZSBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgYSBjbGFzcyBvYmplY3QgKHNlZSBhYm92ZSkuXG4gICBBIGNsYXNzIGluc3RhbmNlIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBhcyBhIGRpY3Rpb25hcnkgd2hpY2hcbiAgIGlzIHRoZSBmaXJzdCBwbGFjZSBpbiB3aGljaCBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgc2VhcmNoZWQuXG4gICBXaGVuIGFuIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQgdGhlcmUsIGFuZCB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MgaGFzXG4gICBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lLCB0aGUgc2VhcmNoIGNvbnRpbnVlcyB3aXRoIHRoZSBjbGFzc1xuICAgYXR0cmlidXRlcy4gIElmIGEgY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kIHRoYXQgaXMgYSB1c2VyLWRlZmluZWRcbiAgIGZ1bmN0aW9uIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0XG4gICB3aG9zZSBgYF9fc2VsZl9fYGAgYXR0cmlidXRlIGlzIHRoZSBpbnN0YW5jZS4gIFN0YXRpYyBtZXRob2QgYW5kXG4gICBjbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgYWxzbyB0cmFuc2Zvcm1lZDsgc2VlIGFib3ZlIHVuZGVyXG4gICAiQ2xhc3NlcyIuICBTZWUgc2VjdGlvbiAqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKiBmb3IgYW5vdGhlciB3YXlcbiAgIGluIHdoaWNoIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyByZXRyaWV2ZWQgdmlhIGl0cyBpbnN0YW5jZXMgbWF5XG4gICBkaWZmZXIgZnJvbSB0aGUgb2JqZWN0cyBhY3R1YWxseSBzdG9yZWQgaW4gdGhlIGNsYXNzXCdzXG4gICBgYF9fZGljdF9fYGAuICBJZiBubyBjbGFzcyBhdHRyaWJ1dGUgaXMgZm91bmQsIGFuZCB0aGUgb2JqZWN0XCdzXG4gICBjbGFzcyBoYXMgYSBgYF9fZ2V0YXR0cl9fKClgYCBtZXRob2QsIHRoYXQgaXMgY2FsbGVkIHRvIHNhdGlzZnkgdGhlXG4gICBsb29rdXAuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50cyBhbmQgZGVsZXRpb25zIHVwZGF0ZSB0aGUgaW5zdGFuY2VcJ3NcbiAgIGRpY3Rpb25hcnksIG5ldmVyIGEgY2xhc3NcJ3MgZGljdGlvbmFyeS4gIElmIHRoZSBjbGFzcyBoYXMgYVxuICAgYGBfX3NldGF0dHJfXygpYGAgb3IgYGBfX2RlbGF0dHJfXygpYGAgbWV0aG9kLCB0aGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB1cGRhdGluZyB0aGUgaW5zdGFuY2UgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgQ2xhc3MgaW5zdGFuY2VzIGNhbiBwcmV0ZW5kIHRvIGJlIG51bWJlcnMsIHNlcXVlbmNlcywgb3IgbWFwcGluZ3NcbiAgIGlmIHRoZXkgaGF2ZSBtZXRob2RzIHdpdGggY2VydGFpbiBzcGVjaWFsIG5hbWVzLiAgU2VlIHNlY3Rpb25cbiAgICpTcGVjaWFsIG1ldGhvZCBuYW1lcyouXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogYGBfX2RpY3RfX2BgIGlzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeTtcbiAgIGBgX19jbGFzc19fYGAgaXMgdGhlIGluc3RhbmNlXCdzIGNsYXNzLlxuXG5JL08gb2JqZWN0cyAoYWxzbyBrbm93biBhcyBmaWxlIG9iamVjdHMpXG4gICBBICpmaWxlIG9iamVjdCogcmVwcmVzZW50cyBhbiBvcGVuIGZpbGUuICBWYXJpb3VzIHNob3J0Y3V0cyBhcmVcbiAgIGF2YWlsYWJsZSB0byBjcmVhdGUgZmlsZSBvYmplY3RzOiB0aGUgYGBvcGVuKClgYCBidWlsdC1pbiBmdW5jdGlvbixcbiAgIGFuZCBhbHNvIGBgb3MucG9wZW4oKWBgLCBgYG9zLmZkb3BlbigpYGAsIGFuZCB0aGUgYGBtYWtlZmlsZSgpYGBcbiAgIG1ldGhvZCBvZiBzb2NrZXQgb2JqZWN0cyAoYW5kIHBlcmhhcHMgYnkgb3RoZXIgZnVuY3Rpb25zIG9yIG1ldGhvZHNcbiAgIHByb3ZpZGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzKS5cblxuICAgVGhlIG9iamVjdHMgYGBzeXMuc3RkaW5gYCwgYGBzeXMuc3Rkb3V0YGAgYW5kIGBgc3lzLnN0ZGVycmBgIGFyZVxuICAgaW5pdGlhbGl6ZWQgdG8gZmlsZSBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVycHJldGVyXCdzXG4gICBzdGFuZGFyZCBpbnB1dCwgb3V0cHV0IGFuZCBlcnJvciBzdHJlYW1zOyB0aGV5IGFyZSBhbGwgb3BlbiBpbiB0ZXh0XG4gICBtb2RlIGFuZCB0aGVyZWZvcmUgZm9sbG93IHRoZSBpbnRlcmZhY2UgZGVmaW5lZCBieSB0aGVcbiAgIGBgaW8uVGV4dElPQmFzZWBgIGFic3RyYWN0IGNsYXNzLlxuXG5JbnRlcm5hbCB0eXBlc1xuICAgQSBmZXcgdHlwZXMgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBpbnRlcnByZXRlciBhcmUgZXhwb3NlZCB0byB0aGVcbiAgIHVzZXIuIFRoZWlyIGRlZmluaXRpb25zIG1heSBjaGFuZ2Ugd2l0aCBmdXR1cmUgdmVyc2lvbnMgb2YgdGhlXG4gICBpbnRlcnByZXRlciwgYnV0IHRoZXkgYXJlIG1lbnRpb25lZCBoZXJlIGZvciBjb21wbGV0ZW5lc3MuXG5cbiAgIENvZGUgb2JqZWN0c1xuICAgICAgQ29kZSBvYmplY3RzIHJlcHJlc2VudCAqYnl0ZS1jb21waWxlZCogZXhlY3V0YWJsZSBQeXRob24gY29kZSxcbiAgICAgIG9yICpieXRlY29kZSouIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYSBjb2RlIG9iamVjdCBhbmQgYVxuICAgICAgZnVuY3Rpb24gb2JqZWN0IGlzIHRoYXQgdGhlIGZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhbiBleHBsaWNpdFxuICAgICAgcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvblwncyBnbG9iYWxzICh0aGUgbW9kdWxlIGluIHdoaWNoIGl0IHdhc1xuICAgICAgZGVmaW5lZCksIHdoaWxlIGEgY29kZSBvYmplY3QgY29udGFpbnMgbm8gY29udGV4dDsgYWxzbyB0aGVcbiAgICAgIGRlZmF1bHQgYXJndW1lbnQgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGZ1bmN0aW9uIG9iamVjdCwgbm90XG4gICAgICBpbiB0aGUgY29kZSBvYmplY3QgKGJlY2F1c2UgdGhleSByZXByZXNlbnQgdmFsdWVzIGNhbGN1bGF0ZWQgYXRcbiAgICAgIHJ1bi10aW1lKS4gIFVubGlrZSBmdW5jdGlvbiBvYmplY3RzLCBjb2RlIG9iamVjdHMgYXJlIGltbXV0YWJsZVxuICAgICAgYW5kIGNvbnRhaW4gbm8gcmVmZXJlbmNlcyAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgdG8gbXV0YWJsZVxuICAgICAgb2JqZWN0cy5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBjb19uYW1lYGAgZ2l2ZXMgdGhlIGZ1bmN0aW9uXG4gICAgICBuYW1lOyBgYGNvX2FyZ2NvdW50YGAgaXMgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50c1xuICAgICAgKGluY2x1ZGluZyBhcmd1bWVudHMgd2l0aCBkZWZhdWx0IHZhbHVlcyk7IGBgY29fbmxvY2Fsc2BgIGlzIHRoZVxuICAgICAgbnVtYmVyIG9mIGxvY2FsIHZhcmlhYmxlcyB1c2VkIGJ5IHRoZSBmdW5jdGlvbiAoaW5jbHVkaW5nXG4gICAgICBhcmd1bWVudHMpOyBgYGNvX3Zhcm5hbWVzYGAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZlxuICAgICAgdGhlIGxvY2FsIHZhcmlhYmxlcyAoc3RhcnRpbmcgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMpO1xuICAgICAgYGBjb19jZWxsdmFyc2BgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgbG9jYWxcbiAgICAgIHZhcmlhYmxlcyB0aGF0IGFyZSByZWZlcmVuY2VkIGJ5IG5lc3RlZCBmdW5jdGlvbnM7XG4gICAgICBgYGNvX2ZyZWV2YXJzYGAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBmcmVlXG4gICAgICB2YXJpYWJsZXM7IGBgY29fY29kZWBgIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgc2VxdWVuY2Ugb2ZcbiAgICAgIGJ5dGVjb2RlIGluc3RydWN0aW9uczsgYGBjb19jb25zdHNgYCBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlXG4gICAgICBsaXRlcmFscyB1c2VkIGJ5IHRoZSBieXRlY29kZTsgYGBjb19uYW1lc2BgIGlzIGEgdHVwbGVcbiAgICAgIGNvbnRhaW5pbmcgdGhlIG5hbWVzIHVzZWQgYnkgdGhlIGJ5dGVjb2RlOyBgYGNvX2ZpbGVuYW1lYGAgaXNcbiAgICAgIHRoZSBmaWxlbmFtZSBmcm9tIHdoaWNoIHRoZSBjb2RlIHdhcyBjb21waWxlZDtcbiAgICAgIGBgY29fZmlyc3RsaW5lbm9gYCBpcyB0aGUgZmlyc3QgbGluZSBudW1iZXIgb2YgdGhlIGZ1bmN0aW9uO1xuICAgICAgYGBjb19sbm90YWJgYCBpcyBhIHN0cmluZyBlbmNvZGluZyB0aGUgbWFwcGluZyBmcm9tIGJ5dGVjb2RlXG4gICAgICBvZmZzZXRzIHRvIGxpbmUgbnVtYmVycyAoZm9yIGRldGFpbHMgc2VlIHRoZSBzb3VyY2UgY29kZSBvZiB0aGVcbiAgICAgIGludGVycHJldGVyKTsgYGBjb19zdGFja3NpemVgYCBpcyB0aGUgcmVxdWlyZWQgc3RhY2sgc2l6ZVxuICAgICAgKGluY2x1ZGluZyBsb2NhbCB2YXJpYWJsZXMpOyBgYGNvX2ZsYWdzYGAgaXMgYW4gaW50ZWdlciBlbmNvZGluZ1xuICAgICAgYSBudW1iZXIgb2YgZmxhZ3MgZm9yIHRoZSBpbnRlcnByZXRlci5cblxuICAgICAgVGhlIGZvbGxvd2luZyBmbGFnIGJpdHMgYXJlIGRlZmluZWQgZm9yIGBgY29fZmxhZ3NgYDogYml0XG4gICAgICBgYDB4MDRgYCBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlIGBgKmFyZ3VtZW50c2BgIHN5bnRheFxuICAgICAgdG8gYWNjZXB0IGFuIGFyYml0cmFyeSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHM7IGJpdFxuICAgICAgYGAweDA4YGAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSBgYCoqa2V5d29yZHNgYCBzeW50YXhcbiAgICAgIHRvIGFjY2VwdCBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHM7IGJpdCBgYDB4MjBgYCBpcyBzZXQgaWZcbiAgICAgIHRoZSBmdW5jdGlvbiBpcyBhIGdlbmVyYXRvci5cblxuICAgICAgRnV0dXJlIGZlYXR1cmUgZGVjbGFyYXRpb25zIChgYGZyb20gX19mdXR1cmVfXyBpbXBvcnRcbiAgICAgIGRpdmlzaW9uYGApIGFsc28gdXNlIGJpdHMgaW4gYGBjb19mbGFnc2BgIHRvIGluZGljYXRlIHdoZXRoZXIgYVxuICAgICAgY29kZSBvYmplY3Qgd2FzIGNvbXBpbGVkIHdpdGggYSBwYXJ0aWN1bGFyIGZlYXR1cmUgZW5hYmxlZDogYml0XG4gICAgICBgYDB4MjAwMGBgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gd2FzIGNvbXBpbGVkIHdpdGggZnV0dXJlXG4gICAgICBkaXZpc2lvbiBlbmFibGVkOyBiaXRzIGBgMHgxMGBgIGFuZCBgYDB4MTAwMGBgIHdlcmUgdXNlZCBpblxuICAgICAgZWFybGllciB2ZXJzaW9ucyBvZiBQeXRob24uXG5cbiAgICAgIE90aGVyIGJpdHMgaW4gYGBjb19mbGFnc2BgIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlLlxuXG4gICAgICBJZiBhIGNvZGUgb2JqZWN0IHJlcHJlc2VudHMgYSBmdW5jdGlvbiwgdGhlIGZpcnN0IGl0ZW0gaW5cbiAgICAgIGBgY29fY29uc3RzYGAgaXMgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIG9mIHRoZSBmdW5jdGlvbiwgb3JcbiAgICAgIGBgTm9uZWBgIGlmIHVuZGVmaW5lZC5cblxuICAgRnJhbWUgb2JqZWN0c1xuICAgICAgRnJhbWUgb2JqZWN0cyByZXByZXNlbnQgZXhlY3V0aW9uIGZyYW1lcy4gIFRoZXkgbWF5IG9jY3VyIGluXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0cyAoc2VlIGJlbG93KS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBmX2JhY2tgYCBpcyB0byB0aGUgcHJldmlvdXNcbiAgICAgIHN0YWNrIGZyYW1lICh0b3dhcmRzIHRoZSBjYWxsZXIpLCBvciBgYE5vbmVgYCBpZiB0aGlzIGlzIHRoZVxuICAgICAgYm90dG9tIHN0YWNrIGZyYW1lOyBgYGZfY29kZWBgIGlzIHRoZSBjb2RlIG9iamVjdCBiZWluZyBleGVjdXRlZFxuICAgICAgaW4gdGhpcyBmcmFtZTsgYGBmX2xvY2Fsc2BgIGlzIHRoZSBkaWN0aW9uYXJ5IHVzZWQgdG8gbG9vayB1cFxuICAgICAgbG9jYWwgdmFyaWFibGVzOyBgYGZfZ2xvYmFsc2BgIGlzIHVzZWQgZm9yIGdsb2JhbCB2YXJpYWJsZXM7XG4gICAgICBgYGZfYnVpbHRpbnNgYCBpcyB1c2VkIGZvciBidWlsdC1pbiAoaW50cmluc2ljKSBuYW1lcztcbiAgICAgIGBgZl9sYXN0aWBgIGdpdmVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uICh0aGlzIGlzIGFuIGluZGV4IGludG9cbiAgICAgIHRoZSBieXRlY29kZSBzdHJpbmcgb2YgdGhlIGNvZGUgb2JqZWN0KS5cblxuICAgICAgU3BlY2lhbCB3cml0YWJsZSBhdHRyaWJ1dGVzOiBgYGZfdHJhY2VgYCwgaWYgbm90IGBgTm9uZWBgLCBpcyBhXG4gICAgICBmdW5jdGlvbiBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGNvZGUgbGluZSAodGhpcyBpc1xuICAgICAgdXNlZCBieSB0aGUgZGVidWdnZXIpOyBgYGZfbGluZW5vYGAgaXMgdGhlIGN1cnJlbnQgbGluZSBudW1iZXJcbiAgICAgIG9mIHRoZSBmcmFtZSAtLS0gd3JpdGluZyB0byB0aGlzIGZyb20gd2l0aGluIGEgdHJhY2UgZnVuY3Rpb25cbiAgICAgIGp1bXBzIHRvIHRoZSBnaXZlbiBsaW5lIChvbmx5IGZvciB0aGUgYm90dG9tLW1vc3QgZnJhbWUpLiAgQVxuICAgICAgZGVidWdnZXIgY2FuIGltcGxlbWVudCBhIEp1bXAgY29tbWFuZCAoYWthIFNldCBOZXh0IFN0YXRlbWVudClcbiAgICAgIGJ5IHdyaXRpbmcgdG8gZl9saW5lbm8uXG5cbiAgIFRyYWNlYmFjayBvYmplY3RzXG4gICAgICBUcmFjZWJhY2sgb2JqZWN0cyByZXByZXNlbnQgYSBzdGFjayB0cmFjZSBvZiBhbiBleGNlcHRpb24uICBBXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0IGlzIGNyZWF0ZWQgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzLiAgV2hlbiB0aGVcbiAgICAgIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdW53aW5kcyB0aGUgZXhlY3V0aW9uIHN0YWNrLCBhdFxuICAgICAgZWFjaCB1bndvdW5kIGxldmVsIGEgdHJhY2ViYWNrIG9iamVjdCBpcyBpbnNlcnRlZCBpbiBmcm9udCBvZlxuICAgICAgdGhlIGN1cnJlbnQgdHJhY2ViYWNrLiAgV2hlbiBhbiBleGNlcHRpb24gaGFuZGxlciBpcyBlbnRlcmVkLFxuICAgICAgdGhlIHN0YWNrIHRyYWNlIGlzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtLiAoU2VlIHNlY3Rpb25cbiAgICAgICpUaGUgdHJ5IHN0YXRlbWVudCouKSBJdCBpcyBhY2Nlc3NpYmxlIGFzIHRoZSB0aGlyZCBpdGVtIG9mIHRoZVxuICAgICAgdHVwbGUgcmV0dXJuZWQgYnkgYGBzeXMuZXhjX2luZm8oKWBgLiBXaGVuIHRoZSBwcm9ncmFtIGNvbnRhaW5zXG4gICAgICBubyBzdWl0YWJsZSBoYW5kbGVyLCB0aGUgc3RhY2sgdHJhY2UgaXMgd3JpdHRlbiAobmljZWx5XG4gICAgICBmb3JtYXR0ZWQpIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW07IGlmIHRoZSBpbnRlcnByZXRlciBpc1xuICAgICAgaW50ZXJhY3RpdmUsIGl0IGlzIGFsc28gbWFkZSBhdmFpbGFibGUgdG8gdGhlIHVzZXIgYXNcbiAgICAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6IGBgdGJfbmV4dGBgIGlzIHRoZSBuZXh0IGxldmVsIGluXG4gICAgICB0aGUgc3RhY2sgdHJhY2UgKHRvd2FyZHMgdGhlIGZyYW1lIHdoZXJlIHRoZSBleGNlcHRpb25cbiAgICAgIG9jY3VycmVkKSwgb3IgYGBOb25lYGAgaWYgdGhlcmUgaXMgbm8gbmV4dCBsZXZlbDsgYGB0Yl9mcmFtZWBgXG4gICAgICBwb2ludHMgdG8gdGhlIGV4ZWN1dGlvbiBmcmFtZSBvZiB0aGUgY3VycmVudCBsZXZlbDtcbiAgICAgIGBgdGJfbGluZW5vYGAgZ2l2ZXMgdGhlIGxpbmUgbnVtYmVyIHdoZXJlIHRoZSBleGNlcHRpb25cbiAgICAgIG9jY3VycmVkOyBgYHRiX2xhc3RpYGAgaW5kaWNhdGVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uLiAgVGhlXG4gICAgICBsaW5lIG51bWJlciBhbmQgbGFzdCBpbnN0cnVjdGlvbiBpbiB0aGUgdHJhY2ViYWNrIG1heSBkaWZmZXJcbiAgICAgIGZyb20gdGhlIGxpbmUgbnVtYmVyIG9mIGl0cyBmcmFtZSBvYmplY3QgaWYgdGhlIGV4Y2VwdGlvblxuICAgICAgb2NjdXJyZWQgaW4gYSBgYHRyeWBgIHN0YXRlbWVudCB3aXRoIG5vIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2VcbiAgICAgIG9yIHdpdGggYSBmaW5hbGx5IGNsYXVzZS5cblxuICAgU2xpY2Ugb2JqZWN0c1xuICAgICAgU2xpY2Ugb2JqZWN0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgc2xpY2VzIGZvciBgYF9fZ2V0aXRlbV9fKClgYFxuICAgICAgbWV0aG9kcy4gIFRoZXkgYXJlIGFsc28gY3JlYXRlZCBieSB0aGUgYnVpbHQtaW4gYGBzbGljZSgpYGBcbiAgICAgIGZ1bmN0aW9uLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYHN0YXJ0YGAgaXMgdGhlIGxvd2VyIGJvdW5kO1xuICAgICAgYGBzdG9wYGAgaXMgdGhlIHVwcGVyIGJvdW5kOyBgYHN0ZXBgYCBpcyB0aGUgc3RlcCB2YWx1ZTsgZWFjaCBpc1xuICAgICAgYGBOb25lYGAgaWYgb21pdHRlZC4gVGhlc2UgYXR0cmlidXRlcyBjYW4gaGF2ZSBhbnkgdHlwZS5cblxuICAgICAgU2xpY2Ugb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG5cbiAgICAgIHNsaWNlLmluZGljZXMoc2VsZiwgbGVuZ3RoKVxuXG4gICAgICAgICBUaGlzIG1ldGhvZCB0YWtlcyBhIHNpbmdsZSBpbnRlZ2VyIGFyZ3VtZW50ICpsZW5ndGgqIGFuZFxuICAgICAgICAgY29tcHV0ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNsaWNlIHRoYXQgdGhlIHNsaWNlIG9iamVjdFxuICAgICAgICAgd291bGQgZGVzY3JpYmUgaWYgYXBwbGllZCB0byBhIHNlcXVlbmNlIG9mICpsZW5ndGgqIGl0ZW1zLlxuICAgICAgICAgSXQgcmV0dXJucyBhIHR1cGxlIG9mIHRocmVlIGludGVnZXJzOyByZXNwZWN0aXZlbHkgdGhlc2UgYXJlXG4gICAgICAgICB0aGUgKnN0YXJ0KiBhbmQgKnN0b3AqIGluZGljZXMgYW5kIHRoZSAqc3RlcCogb3Igc3RyaWRlXG4gICAgICAgICBsZW5ndGggb2YgdGhlIHNsaWNlLiBNaXNzaW5nIG9yIG91dC1vZi1ib3VuZHMgaW5kaWNlcyBhcmVcbiAgICAgICAgIGhhbmRsZWQgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHJlZ3VsYXIgc2xpY2VzLlxuXG4gICBTdGF0aWMgbWV0aG9kIG9iamVjdHNcbiAgICAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBwcm92aWRlIGEgd2F5IG9mIGRlZmVhdGluZyB0aGVcbiAgICAgIHRyYW5zZm9ybWF0aW9uIG9mIGZ1bmN0aW9uIG9iamVjdHMgdG8gbWV0aG9kIG9iamVjdHMgZGVzY3JpYmVkXG4gICAgICBhYm92ZS4gQSBzdGF0aWMgbWV0aG9kIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGFueSBvdGhlclxuICAgICAgb2JqZWN0LCB1c3VhbGx5IGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QuIFdoZW4gYSBzdGF0aWNcbiAgICAgIG1ldGhvZCBvYmplY3QgaXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBvciBhIGNsYXNzIGluc3RhbmNlLCB0aGVcbiAgICAgIG9iamVjdCBhY3R1YWxseSByZXR1cm5lZCBpcyB0aGUgd3JhcHBlZCBvYmplY3QsIHdoaWNoIGlzIG5vdFxuICAgICAgc3ViamVjdCB0byBhbnkgZnVydGhlciB0cmFuc2Zvcm1hdGlvbi4gU3RhdGljIG1ldGhvZCBvYmplY3RzIGFyZVxuICAgICAgbm90IHRoZW1zZWx2ZXMgY2FsbGFibGUsIGFsdGhvdWdoIHRoZSBvYmplY3RzIHRoZXkgd3JhcCB1c3VhbGx5XG4gICAgICBhcmUuIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZCBieSB0aGUgYnVpbHQtaW5cbiAgICAgIGBgc3RhdGljbWV0aG9kKClgYCBjb25zdHJ1Y3Rvci5cblxuICAgQ2xhc3MgbWV0aG9kIG9iamVjdHNcbiAgICAgIEEgY2xhc3MgbWV0aG9kIG9iamVjdCwgbGlrZSBhIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpcyBhIHdyYXBwZXJcbiAgICAgIGFyb3VuZCBhbm90aGVyIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgd2F5IGluIHdoaWNoIHRoYXQgb2JqZWN0XG4gICAgICBpcyByZXRyaWV2ZWQgZnJvbSBjbGFzc2VzIGFuZCBjbGFzcyBpbnN0YW5jZXMuIFRoZSBiZWhhdmlvdXIgb2ZcbiAgICAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIHVwb24gc3VjaCByZXRyaWV2YWwgaXMgZGVzY3JpYmVkIGFib3ZlLFxuICAgICAgdW5kZXIgIlVzZXItZGVmaW5lZCBtZXRob2RzIi4gQ2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWRcbiAgICAgIGJ5IHRoZSBidWlsdC1pbiBgYGNsYXNzbWV0aG9kKClgYCBjb25zdHJ1Y3Rvci5cbicsCiAgJ3R5cGVzZnVuY3Rpb25zJzogJ1xuRnVuY3Rpb25zXG4qKioqKioqKipcblxuRnVuY3Rpb24gb2JqZWN0cyBhcmUgY3JlYXRlZCBieSBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIFRoZSBvbmx5XG5vcGVyYXRpb24gb24gYSBmdW5jdGlvbiBvYmplY3QgaXMgdG8gY2FsbCBpdDogYGBmdW5jKGFyZ3VtZW50LWxpc3QpYGAuXG5cblRoZXJlIGFyZSByZWFsbHkgdHdvIGZsYXZvcnMgb2YgZnVuY3Rpb24gb2JqZWN0czogYnVpbHQtaW4gZnVuY3Rpb25zXG5hbmQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gIEJvdGggc3VwcG9ydCB0aGUgc2FtZSBvcGVyYXRpb24gKHRvIGNhbGxcbnRoZSBmdW5jdGlvbiksIGJ1dCB0aGUgaW1wbGVtZW50YXRpb24gaXMgZGlmZmVyZW50LCBoZW5jZSB0aGVcbmRpZmZlcmVudCBvYmplY3QgdHlwZXMuXG5cblNlZSAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJywKLSAndHlwZXNtYXBwaW5nJzogJ1xuTWFwcGluZyBUeXBlcyAtLS0gYGBkaWN0YGBcbioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkEgKm1hcHBpbmcqIG9iamVjdCBtYXBzICpoYXNoYWJsZSogdmFsdWVzIHRvIGFyYml0cmFyeSBvYmplY3RzLlxuTWFwcGluZ3MgYXJlIG11dGFibGUgb2JqZWN0cy4gIFRoZXJlIGlzIGN1cnJlbnRseSBvbmx5IG9uZSBzdGFuZGFyZFxubWFwcGluZyB0eXBlLCB0aGUgKmRpY3Rpb25hcnkqLiAgKEZvciBvdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHRcbmluIGBgbGlzdGBgLCBgYHNldGBgLCBhbmQgYGB0dXBsZWBgIGNsYXNzZXMsIGFuZCB0aGUgYGBjb2xsZWN0aW9uc2BgXG5tb2R1bGUuKVxuXG5BIGRpY3Rpb25hcnlcJ3Mga2V5cyBhcmUgKmFsbW9zdCogYXJiaXRyYXJ5IHZhbHVlcy4gIFZhbHVlcyB0aGF0IGFyZVxubm90ICpoYXNoYWJsZSosIHRoYXQgaXMsIHZhbHVlcyBjb250YWluaW5nIGxpc3RzLCBkaWN0aW9uYXJpZXMgb3Jcbm90aGVyIG11dGFibGUgdHlwZXMgKHRoYXQgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlIHJhdGhlciB0aGFuIGJ5IG9iamVjdFxuaWRlbnRpdHkpIG1heSBub3QgYmUgdXNlZCBhcyBrZXlzLiAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXlcbnRoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbFxuKHN1Y2ggYXMgYGAxYGAgYW5kIGBgMS4wYGApIHRoZW4gdGhleSBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgdG9cbmluZGV4IHRoZSBzYW1lIGRpY3Rpb25hcnkgZW50cnkuICAoTm90ZSBob3dldmVyLCB0aGF0IHNpbmNlIGNvbXB1dGVyc1xuc3RvcmUgZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhcyBhcHByb3hpbWF0aW9ucyBpdCBpcyB1c3VhbGx5IHVud2lzZSB0b1xudXNlIHRoZW0gYXMgZGljdGlvbmFyeSBrZXlzLilcblxuRGljdGlvbmFyaWVzIGNhbiBiZSBjcmVhdGVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZlxuYGBrZXk6IHZhbHVlYGAgcGFpcnMgd2l0aGluIGJyYWNlcywgZm9yIGV4YW1wbGU6IGBge1wnamFja1wnOiA0MDk4LFxuXCdzam9lcmRcJzogNDEyN31gYCBvciBgYHs0MDk4OiBcJ2phY2tcJywgNDEyNzogXCdzam9lcmRcJ31gYCwgb3IgYnkgdGhlXG5gYGRpY3RgYCBjb25zdHJ1Y3Rvci5cblxuY2xhc3MgY2xhc3MgZGljdChbYXJnXSlcblxuICAgUmV0dXJuIGEgbmV3IGRpY3Rpb25hcnkgaW5pdGlhbGl6ZWQgZnJvbSBhbiBvcHRpb25hbCBwb3NpdGlvbmFsXG4gICBhcmd1bWVudCBvciBmcm9tIGEgc2V0IG9mIGtleXdvcmQgYXJndW1lbnRzLiAgSWYgbm8gYXJndW1lbnRzIGFyZVxuICAgZ2l2ZW4sIHJldHVybiBhIG5ldyBlbXB0eSBkaWN0aW9uYXJ5LiAgSWYgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRcbiAgICphcmcqIGlzIGEgbWFwcGluZyBvYmplY3QsIHJldHVybiBhIGRpY3Rpb25hcnkgbWFwcGluZyB0aGUgc2FtZVxuICAga2V5cyB0byB0aGUgc2FtZSB2YWx1ZXMgYXMgZG9lcyB0aGUgbWFwcGluZyBvYmplY3QuICBPdGhlcndpc2UgdGhlXG4gICBwb3NpdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYSBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0c1xuICAgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvciBvYmplY3QuICBUaGUgZWxlbWVudHMgb2YgdGhlIGFyZ3VtZW50XG4gICBtdXN0IGVhY2ggYWxzbyBiZSBvZiBvbmUgb2YgdGhvc2Uga2luZHMsIGFuZCBlYWNoIG11c3QgaW4gdHVyblxuICAgY29udGFpbiBleGFjdGx5IHR3byBvYmplY3RzLiAgVGhlIGZpcnN0IGlzIHVzZWQgYXMgYSBrZXkgaW4gdGhlIG5ld1xuICAgZGljdGlvbmFyeSwgYW5kIHRoZSBzZWNvbmQgYXMgdGhlIGtleVwncyB2YWx1ZS4gIElmIGEgZ2l2ZW4ga2V5IGlzXG4gICBzZWVuIG1vcmUgdGhhbiBvbmNlLCB0aGUgbGFzdCB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggaXQgaXMgcmV0YWluZWRcbiAgIGluIHRoZSBuZXcgZGljdGlvbmFyeS5cblxuICAgSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIGdpdmVuLCB0aGUga2V5d29yZHMgdGhlbXNlbHZlcyB3aXRoIHRoZWlyXG4gICBhc3NvY2lhdGVkIHZhbHVlcyBhcmUgYWRkZWQgYXMgaXRlbXMgdG8gdGhlIGRpY3Rpb25hcnkuICBJZiBhIGtleVxuICAgaXMgc3BlY2lmaWVkIGJvdGggaW4gdGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgYW5kIGFzIGEga2V5d29yZFxuICAgYXJndW1lbnQsIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGtleXdvcmQgaXMgcmV0YWluZWQgaW4gdGhlXG4gICBkaWN0aW9uYXJ5LiAgRm9yIGV4YW1wbGUsIHRoZXNlIGFsbCByZXR1cm4gYSBkaWN0aW9uYXJ5IGVxdWFsIHRvXG4gICBgYHsib25lIjogMSwgInR3byI6IDJ9YGA6XG5cbiAgICogYGBkaWN0KG9uZT0xLCB0d289MilgYFxuXG4gICAqIGBgZGljdCh7XCdvbmVcJzogMSwgXCd0d29cJzogMn0pYGBcblxuICAgKiBgYGRpY3QoemlwKChcJ29uZVwnLCBcJ3R3b1wnKSwgKDEsIDIpKSlgYFxuXG4gICAqIGBgZGljdChbW1wndHdvXCcsIDJdLCBbXCdvbmVcJywgMV1dKWBgXG5cbiAgIFRoZSBmaXJzdCBleGFtcGxlIG9ubHkgd29ya3MgZm9yIGtleXMgdGhhdCBhcmUgdmFsaWQgUHl0aG9uXG4gICBpZGVudGlmaWVyczsgdGhlIG90aGVycyB3b3JrIHdpdGggYW55IHZhbGlkIGtleXMuXG5cbiAgIFRoZXNlIGFyZSB0aGUgb3BlcmF0aW9ucyB0aGF0IGRpY3Rpb25hcmllcyBzdXBwb3J0IChhbmQgdGhlcmVmb3JlLFxuICAgY3VzdG9tIG1hcHBpbmcgdHlwZXMgc2hvdWxkIHN1cHBvcnQgdG9vKTpcblxuICAgbGVuKGQpXG5cbiAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBkaWN0aW9uYXJ5ICpkKi5cblxuICAgZFtrZXldXG5cbiAgICAgIFJldHVybiB0aGUgaXRlbSBvZiAqZCogd2l0aCBrZXkgKmtleSouICBSYWlzZXMgYSBgYEtleUVycm9yYGAgaWZcbiAgICAgICprZXkqIGlzIG5vdCBpbiB0aGUgbWFwLlxuXG4gICAgICBJZiBhIHN1YmNsYXNzIG9mIGRpY3QgZGVmaW5lcyBhIG1ldGhvZCBgYF9fbWlzc2luZ19fKClgYCwgaWYgdGhlXG4gICAgICBrZXkgKmtleSogaXMgbm90IHByZXNlbnQsIHRoZSBgYGRba2V5XWBgIG9wZXJhdGlvbiBjYWxscyB0aGF0XG4gICAgICBtZXRob2Qgd2l0aCB0aGUga2V5ICprZXkqIGFzIGFyZ3VtZW50LiAgVGhlIGBgZFtrZXldYGAgb3BlcmF0aW9uXG4gICAgICB0aGVuIHJldHVybnMgb3IgcmFpc2VzIHdoYXRldmVyIGlzIHJldHVybmVkIG9yIHJhaXNlZCBieSB0aGVcbiAgICAgIGBgX19taXNzaW5nX18oa2V5KWBgIGNhbGwgaWYgdGhlIGtleSBpcyBub3QgcHJlc2VudC4gTm8gb3RoZXJcbiAgICAgIG9wZXJhdGlvbnMgb3IgbWV0aG9kcyBpbnZva2UgYGBfX21pc3NpbmdfXygpYGAuIElmXG4gICAgICBgYF9fbWlzc2luZ19fKClgYCBpcyBub3QgZGVmaW5lZCwgYGBLZXlFcnJvcmBgIGlzIHJhaXNlZC5cbiAgICAgIGBgX19taXNzaW5nX18oKWBgIG11c3QgYmUgYSBtZXRob2Q7IGl0IGNhbm5vdCBiZSBhbiBpbnN0YW5jZVxuICAgICAgdmFyaWFibGU6XG5cbiAgICAgICAgID4+PiBjbGFzcyBDb3VudGVyKGRpY3QpOlxuICAgICAgICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgICAgICAgIC4uLiAgICAgICAgIHJldHVybiAwXG4gICAgICAgICA+Pj4gYyA9IENvdW50ZXIoKVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDBcbiAgICAgICAgID4+PiBjW1wncmVkXCddICs9IDFcbiAgICAgICAgID4+PiBjW1wncmVkXCddXG4gICAgICAgICAxXG5cbiAgICAgIFNlZSBgYGNvbGxlY3Rpb25zLkNvdW50ZXJgYCBmb3IgYSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvblxuICAgICAgaW5jbHVkaW5nIG90aGVyIG1ldGhvZHMgaGVscGZ1bCBmb3IgYWNjdW11bGF0aW5nIGFuZCBtYW5hZ2luZ1xuICAgICAgdGFsbGllcy5cblxuICAgZFtrZXldID0gdmFsdWVcblxuICAgICAgU2V0IGBgZFtrZXldYGAgdG8gKnZhbHVlKi5cblxuICAgZGVsIGRba2V5XVxuXG4gICAgICBSZW1vdmUgYGBkW2tleV1gYCBmcm9tICpkKi4gIFJhaXNlcyBhIGBgS2V5RXJyb3JgYCBpZiAqa2V5KiBpc1xuICAgICAgbm90IGluIHRoZSBtYXAuXG5cbiAgIGtleSBpbiBkXG5cbiAgICAgIFJldHVybiBgYFRydWVgYCBpZiAqZCogaGFzIGEga2V5ICprZXkqLCBlbHNlIGBgRmFsc2VgYC5cblxuICAga2V5IG5vdCBpbiBkXG5cbiAgICAgIEVxdWl2YWxlbnQgdG8gYGBub3Qga2V5IGluIGRgYC5cblxuICAgaXRlcihkKVxuXG4gICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cyBvZiB0aGUgZGljdGlvbmFyeS4gIFRoaXMgaXMgYVxuICAgICAgc2hvcnRjdXQgZm9yIGBgaXRlcihkLmtleXMoKSlgYC5cblxuICAgY2xlYXIoKVxuXG4gICAgICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNvcHkoKVxuXG4gICAgICBSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNsYXNzbWV0aG9kIGZyb21rZXlzKHNlcVssIHZhbHVlXSlcblxuICAgICAgQ3JlYXRlIGEgbmV3IGRpY3Rpb25hcnkgd2l0aCBrZXlzIGZyb20gKnNlcSogYW5kIHZhbHVlcyBzZXQgdG9cbiAgICAgICp2YWx1ZSouXG5cbiAgICAgIGBgZnJvbWtleXMoKWBgIGlzIGEgY2xhc3MgbWV0aG9kIHRoYXQgcmV0dXJucyBhIG5ldyBkaWN0aW9uYXJ5LlxuICAgICAgKnZhbHVlKiBkZWZhdWx0cyB0byBgYE5vbmVgYC5cblxuICAgZ2V0KGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBSZXR1cm4gdGhlIHZhbHVlIGZvciAqa2V5KiBpZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgZWxzZVxuICAgICAgKmRlZmF1bHQqLiBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0byBgYE5vbmVgYCxcbiAgICAgIHNvIHRoYXQgdGhpcyBtZXRob2QgbmV2ZXIgcmFpc2VzIGEgYGBLZXlFcnJvcmBgLlxuXG4gICBpdGVtcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIGl0ZW1zIChgYChrZXksIHZhbHVlKWBgXG4gICAgICBwYWlycykuICBTZWUgYmVsb3cgZm9yIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLlxuXG4gICBrZXlzKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3Mga2V5cy4gIFNlZSBiZWxvdyBmb3JcbiAgICAgIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLlxuXG4gICBwb3Aoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZW1vdmUgaXQgYW5kIHJldHVybiBpdHMgdmFsdWUsXG4gICAgICBlbHNlIHJldHVybiAqZGVmYXVsdCouICBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuIGFuZCAqa2V5KiBpc1xuICAgICAgbm90IGluIHRoZSBkaWN0aW9uYXJ5LCBhIGBgS2V5RXJyb3JgYCBpcyByYWlzZWQuXG5cbiAgIHBvcGl0ZW0oKVxuXG4gICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBhcmJpdHJhcnkgYGAoa2V5LCB2YWx1ZSlgYCBwYWlyIGZyb20gdGhlXG4gICAgICBkaWN0aW9uYXJ5LlxuXG4gICAgICBgYHBvcGl0ZW0oKWBgIGlzIHVzZWZ1bCB0byBkZXN0cnVjdGl2ZWx5IGl0ZXJhdGUgb3ZlciBhXG4gICAgICBkaWN0aW9uYXJ5LCBhcyBvZnRlbiB1c2VkIGluIHNldCBhbGdvcml0aG1zLiAgSWYgdGhlIGRpY3Rpb25hcnlcbiAgICAgIGlzIGVtcHR5LCBjYWxsaW5nIGBgcG9waXRlbSgpYGAgcmFpc2VzIGEgYGBLZXlFcnJvcmBgLlxuXG4gICBzZXRkZWZhdWx0KGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBJZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgcmV0dXJuIGl0cyB2YWx1ZS4gIElmIG5vdCwgaW5zZXJ0XG4gICAgICAqa2V5KiB3aXRoIGEgdmFsdWUgb2YgKmRlZmF1bHQqIGFuZCByZXR1cm4gKmRlZmF1bHQqLiAgKmRlZmF1bHQqXG4gICAgICBkZWZhdWx0cyB0byBgYE5vbmVgYC5cblxuICAgdXBkYXRlKFtvdGhlcl0pXG5cbiAgICAgIFVwZGF0ZSB0aGUgZGljdGlvbmFyeSB3aXRoIHRoZSBrZXkvdmFsdWUgcGFpcnMgZnJvbSAqb3RoZXIqLFxuICAgICAgb3ZlcndyaXRpbmcgZXhpc3Rpbmcga2V5cy4gIFJldHVybiBgYE5vbmVgYC5cblxuICAgICAgYGB1cGRhdGUoKWBgIGFjY2VwdHMgZWl0aGVyIGFub3RoZXIgZGljdGlvbmFyeSBvYmplY3Qgb3IgYW5cbiAgICAgIGl0ZXJhYmxlIG9mIGtleS92YWx1ZSBwYWlycyAoYXMgdHVwbGVzIG9yIG90aGVyIGl0ZXJhYmxlcyBvZlxuICAgICAgbGVuZ3RoIHR3bykuICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLCB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgdGhlbiB1cGRhdGVkIHdpdGggdGhvc2Uga2V5L3ZhbHVlIHBhaXJzOiBgYGQudXBkYXRlKHJlZD0xLFxuICAgICAgYmx1ZT0yKWBgLlxuXG4gICB2YWx1ZXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyB2YWx1ZXMuICBTZWUgYmVsb3cgZm9yXG4gICAgICBkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cy5cblxuXG5EaWN0aW9uYXJ5IHZpZXcgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9iamVjdHMgcmV0dXJuZWQgYnkgYGBkaWN0LmtleXMoKWBgLCBgYGRpY3QudmFsdWVzKClgYCBhbmRcbmBgZGljdC5pdGVtcygpYGAgYXJlICp2aWV3IG9iamVjdHMqLiAgVGhleSBwcm92aWRlIGEgZHluYW1pYyB2aWV3IG9uXG50aGUgZGljdGlvbmFyeVwncyBlbnRyaWVzLCB3aGljaCBtZWFucyB0aGF0IHdoZW4gdGhlIGRpY3Rpb25hcnlcbmNoYW5nZXMsIHRoZSB2aWV3IHJlZmxlY3RzIHRoZXNlIGNoYW5nZXMuXG5cbkRpY3Rpb25hcnkgdmlld3MgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgdG8geWllbGQgdGhlaXIgcmVzcGVjdGl2ZSBkYXRhLFxuYW5kIHN1cHBvcnQgbWVtYmVyc2hpcCB0ZXN0czpcblxubGVuKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG5pdGVyKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cywgdmFsdWVzIG9yIGl0ZW1zIChyZXByZXNlbnRlZCBhc1xuICAgdHVwbGVzIG9mIGBgKGtleSwgdmFsdWUpYGApIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG4gICBLZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gYW4gYXJiaXRyYXJ5IG9yZGVyIHdoaWNoIGlzXG4gICBub24tcmFuZG9tLCB2YXJpZXMgYWNyb3NzIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMsIGFuZCBkZXBlbmRzIG9uXG4gICB0aGUgZGljdGlvbmFyeVwncyBoaXN0b3J5IG9mIGluc2VydGlvbnMgYW5kIGRlbGV0aW9ucy4gSWYga2V5cyxcbiAgIHZhbHVlcyBhbmQgaXRlbXMgdmlld3MgYXJlIGl0ZXJhdGVkIG92ZXIgd2l0aCBubyBpbnRlcnZlbmluZ1xuICAgbW9kaWZpY2F0aW9ucyB0byB0aGUgZGljdGlvbmFyeSwgdGhlIG9yZGVyIG9mIGl0ZW1zIHdpbGwgZGlyZWN0bHlcbiAgIGNvcnJlc3BvbmQuICBUaGlzIGFsbG93cyB0aGUgY3JlYXRpb24gb2YgYGAodmFsdWUsIGtleSlgYCBwYWlyc1xuICAgdXNpbmcgYGB6aXAoKWBgOiBgYHBhaXJzID0gemlwKGQudmFsdWVzKCksIGQua2V5cygpKWBgLiAgQW5vdGhlclxuICAgd2F5IHRvIGNyZWF0ZSB0aGUgc2FtZSBsaXN0IGlzIGBgcGFpcnMgPSBbKHYsIGspIGZvciAoaywgdikgaW5cbiAgIGQuaXRlbXMoKV1gYC5cblxuICAgSXRlcmF0aW5nIHZpZXdzIHdoaWxlIGFkZGluZyBvciBkZWxldGluZyBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5XG4gICBtYXkgcmFpc2UgYSBgYFJ1bnRpbWVFcnJvcmBgIG9yIGZhaWwgdG8gaXRlcmF0ZSBvdmVyIGFsbCBlbnRyaWVzLlxuXG54IGluIGRpY3R2aWV3XG5cbiAgIFJldHVybiBgYFRydWVgYCBpZiAqeCogaXMgaW4gdGhlIHVuZGVybHlpbmcgZGljdGlvbmFyeVwncyBrZXlzLFxuICAgdmFsdWVzIG9yIGl0ZW1zIChpbiB0aGUgbGF0dGVyIGNhc2UsICp4KiBzaG91bGQgYmUgYSBgYChrZXksXG4gICB2YWx1ZSlgYCB0dXBsZSkuXG5cbktleXMgdmlld3MgYXJlIHNldC1saWtlIHNpbmNlIHRoZWlyIGVudHJpZXMgYXJlIHVuaXF1ZSBhbmQgaGFzaGFibGUuXG5JZiBhbGwgdmFsdWVzIGFyZSBoYXNoYWJsZSwgc28gdGhhdCBgYChrZXksIHZhbHVlKWBgIHBhaXJzIGFyZSB1bmlxdWVcbmFuZCBoYXNoYWJsZSwgdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgKFZhbHVlcyB2aWV3cyBhcmVcbm5vdCB0cmVhdGVkIGFzIHNldC1saWtlIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgbm90IHVuaXF1ZS4pXG5Gb3Igc2V0LWxpa2Ugdmlld3MsIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgYWJzdHJhY3RcbmJhc2UgY2xhc3MgYGBjb2xsZWN0aW9ucy5TZXRgYCBhcmUgYXZhaWxhYmxlIChmb3IgZXhhbXBsZSwgYGA9PWBgLFxuYGA8YGAsIG9yIGBgXmBgKS5cblxuQW4gZXhhbXBsZSBvZiBkaWN0aW9uYXJ5IHZpZXcgdXNhZ2U6XG5cbiAgID4+PiBkaXNoZXMgPSB7XCdlZ2dzXCc6IDIsIFwnc2F1c2FnZVwnOiAxLCBcJ2JhY29uXCc6IDEsIFwnc3BhbVwnOiA1MDB9XG4gICA+Pj4ga2V5cyA9IGRpc2hlcy5rZXlzKClcbiAgID4+PiB2YWx1ZXMgPSBkaXNoZXMudmFsdWVzKClcblxuICAgPj4+ICMgaXRlcmF0aW9uXG4gICA+Pj4gbiA9IDBcbiAgID4+PiBmb3IgdmFsIGluIHZhbHVlczpcbiAgIC4uLiAgICAgbiArPSB2YWxcbiAgID4+PiBwcmludChuKVxuICAgNTA0XG5cbiAgID4+PiAjIGtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiB0aGUgc2FtZSBvcmRlclxuICAgPj4+IGxpc3Qoa2V5cylcbiAgIFtcJ2VnZ3NcJywgXCdiYWNvblwnLCBcJ3NhdXNhZ2VcJywgXCdzcGFtXCddXG4gICA+Pj4gbGlzdCh2YWx1ZXMpXG4gICBbMiwgMSwgMSwgNTAwXVxuXG4gICA+Pj4gIyB2aWV3IG9iamVjdHMgYXJlIGR5bmFtaWMgYW5kIHJlZmxlY3QgZGljdCBjaGFuZ2VzXG4gICA+Pj4gZGVsIGRpc2hlc1tcJ2VnZ3NcJ11cbiAgID4+PiBkZWwgZGlzaGVzW1wnc2F1c2FnZVwnXVxuICAgPj4+IGxpc3Qoa2V5cylcbiAgIFtcJ3NwYW1cJywgXCdiYWNvblwnXVxuXG4gICA+Pj4gIyBzZXQgb3BlcmF0aW9uc1xuICAgPj4+IGtleXMgJiB7XCdlZ2dzXCcsIFwnYmFjb25cJywgXCdzYWxhZFwnfVxuICAge1wnYmFjb25cJ31cbiAgID4+PiBrZXlzIF4ge1wnc2F1c2FnZVwnLCBcJ2p1aWNlXCd9XG4gICB7XCdqdWljZVwnLCBcJ3NhdXNhZ2VcJywgXCdiYWNvblwnLCBcJ3NwYW1cJ31cbicsCisgJ3R5cGVzbWFwcGluZyc6ICdcbk1hcHBpbmcgVHlwZXMgLS0tIGBgZGljdGBgXG4qKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BICptYXBwaW5nKiBvYmplY3QgbWFwcyAqaGFzaGFibGUqIHZhbHVlcyB0byBhcmJpdHJhcnkgb2JqZWN0cy5cbk1hcHBpbmdzIGFyZSBtdXRhYmxlIG9iamVjdHMuICBUaGVyZSBpcyBjdXJyZW50bHkgb25seSBvbmUgc3RhbmRhcmRcbm1hcHBpbmcgdHlwZSwgdGhlICpkaWN0aW9uYXJ5Ki4gIChGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0LVxuaW4gYGBsaXN0YGAsIGBgc2V0YGAsIGFuZCBgYHR1cGxlYGAgY2xhc3NlcywgYW5kIHRoZSBgYGNvbGxlY3Rpb25zYGBcbm1vZHVsZS4pXG5cbkEgZGljdGlvbmFyeVwncyBrZXlzIGFyZSAqYWxtb3N0KiBhcmJpdHJhcnkgdmFsdWVzLiAgVmFsdWVzIHRoYXQgYXJlXG5ub3QgKmhhc2hhYmxlKiwgdGhhdCBpcywgdmFsdWVzIGNvbnRhaW5pbmcgbGlzdHMsIGRpY3Rpb25hcmllcyBvclxub3RoZXIgbXV0YWJsZSB0eXBlcyAodGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgb2JqZWN0XG5pZGVudGl0eSkgbWF5IG5vdCBiZSB1c2VkIGFzIGtleXMuICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yIGtleXMgb2JleVxudGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsXG4oc3VjaCBhcyBgYDFgYCBhbmQgYGAxLjBgYCkgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0b1xuaW5kZXggdGhlIHNhbWUgZGljdGlvbmFyeSBlbnRyeS4gIChOb3RlIGhvd2V2ZXIsIHRoYXQgc2luY2UgY29tcHV0ZXJzXG5zdG9yZSBmbG9hdGluZy1wb2ludCBudW1iZXJzIGFzIGFwcHJveGltYXRpb25zIGl0IGlzIHVzdWFsbHkgdW53aXNlIHRvXG51c2UgdGhlbSBhcyBkaWN0aW9uYXJ5IGtleXMuKVxuXG5EaWN0aW9uYXJpZXMgY2FuIGJlIGNyZWF0ZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mXG5gYGtleTogdmFsdWVgYCBwYWlycyB3aXRoaW4gYnJhY2VzLCBmb3IgZXhhbXBsZTogYGB7XCdqYWNrXCc6IDQwOTgsXG5cJ3Nqb2VyZFwnOiA0MTI3fWBgIG9yIGBgezQwOTg6IFwnamFja1wnLCA0MTI3OiBcJ3Nqb2VyZFwnfWBgLCBvciBieSB0aGVcbmBgZGljdGBgIGNvbnN0cnVjdG9yLlxuXG5jbGFzcyBjbGFzcyBkaWN0KFthcmddKVxuXG4gICBSZXR1cm4gYSBuZXcgZGljdGlvbmFyeSBpbml0aWFsaXplZCBmcm9tIGFuIG9wdGlvbmFsIHBvc2l0aW9uYWxcbiAgIGFyZ3VtZW50IG9yIGZyb20gYSBzZXQgb2Yga2V5d29yZCBhcmd1bWVudHMuICBJZiBubyBhcmd1bWVudHMgYXJlXG4gICBnaXZlbiwgcmV0dXJuIGEgbmV3IGVtcHR5IGRpY3Rpb25hcnkuICBJZiB0aGUgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgKmFyZyogaXMgYSBtYXBwaW5nIG9iamVjdCwgcmV0dXJuIGEgZGljdGlvbmFyeSBtYXBwaW5nIHRoZSBzYW1lXG4gICBrZXlzIHRvIHRoZSBzYW1lIHZhbHVlcyBhcyBkb2VzIHRoZSBtYXBwaW5nIG9iamVjdC4gIE90aGVyd2lzZSB0aGVcbiAgIHBvc2l0aW9uYWwgYXJndW1lbnQgbXVzdCBiZSBhIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzXG4gICBpdGVyYXRpb24sIG9yIGFuIGl0ZXJhdG9yIG9iamVjdC4gIFRoZSBlbGVtZW50cyBvZiB0aGUgYXJndW1lbnRcbiAgIG11c3QgZWFjaCBhbHNvIGJlIG9mIG9uZSBvZiB0aG9zZSBraW5kcywgYW5kIGVhY2ggbXVzdCBpbiB0dXJuXG4gICBjb250YWluIGV4YWN0bHkgdHdvIG9iamVjdHMuICBUaGUgZmlyc3QgaXMgdXNlZCBhcyBhIGtleSBpbiB0aGUgbmV3XG4gICBkaWN0aW9uYXJ5LCBhbmQgdGhlIHNlY29uZCBhcyB0aGUga2V5XCdzIHZhbHVlLiAgSWYgYSBnaXZlbiBrZXkgaXNcbiAgIHNlZW4gbW9yZSB0aGFuIG9uY2UsIHRoZSBsYXN0IHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBpdCBpcyByZXRhaW5lZFxuICAgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LlxuXG4gICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIHRoZSBrZXl3b3JkcyB0aGVtc2VsdmVzIHdpdGggdGhlaXJcbiAgIGFzc29jaWF0ZWQgdmFsdWVzIGFyZSBhZGRlZCBhcyBpdGVtcyB0byB0aGUgZGljdGlvbmFyeS4gIElmIGEga2V5XG4gICBpcyBzcGVjaWZpZWQgYm90aCBpbiB0aGUgcG9zaXRpb25hbCBhcmd1bWVudCBhbmQgYXMgYSBrZXl3b3JkXG4gICBhcmd1bWVudCwgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5d29yZCBpcyByZXRhaW5lZCBpbiB0aGVcbiAgIGRpY3Rpb25hcnkuICBGb3IgZXhhbXBsZSwgdGhlc2UgYWxsIHJldHVybiBhIGRpY3Rpb25hcnkgZXF1YWwgdG9cbiAgIGBgeyJvbmUiOiAxLCAidHdvIjogMn1gYDpcblxuICAgKiBgYGRpY3Qob25lPTEsIHR3bz0yKWBgXG5cbiAgICogYGBkaWN0KHtcJ29uZVwnOiAxLCBcJ3R3b1wnOiAyfSlgYFxuXG4gICAqIGBgZGljdCh6aXAoKFwnb25lXCcsIFwndHdvXCcpLCAoMSwgMikpKWBgXG5cbiAgICogYGBkaWN0KFtbXCd0d29cJywgMl0sIFtcJ29uZVwnLCAxXV0pYGBcblxuICAgVGhlIGZpcnN0IGV4YW1wbGUgb25seSB3b3JrcyBmb3Iga2V5cyB0aGF0IGFyZSB2YWxpZCBQeXRob25cbiAgIGlkZW50aWZpZXJzOyB0aGUgb3RoZXJzIHdvcmsgd2l0aCBhbnkgdmFsaWQga2V5cy5cblxuICAgVGhlc2UgYXJlIHRoZSBvcGVyYXRpb25zIHRoYXQgZGljdGlvbmFyaWVzIHN1cHBvcnQgKGFuZCB0aGVyZWZvcmUsXG4gICBjdXN0b20gbWFwcGluZyB0eXBlcyBzaG91bGQgc3VwcG9ydCB0b28pOlxuXG4gICBsZW4oZClcblxuICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGRpY3Rpb25hcnkgKmQqLlxuXG4gICBkW2tleV1cblxuICAgICAgUmV0dXJuIHRoZSBpdGVtIG9mICpkKiB3aXRoIGtleSAqa2V5Ki4gIFJhaXNlcyBhIGBgS2V5RXJyb3JgYCBpZlxuICAgICAgKmtleSogaXMgbm90IGluIHRoZSBtYXAuXG5cbiAgICAgIElmIGEgc3ViY2xhc3Mgb2YgZGljdCBkZWZpbmVzIGEgbWV0aG9kIGBgX19taXNzaW5nX18oKWBgLCBpZiB0aGVcbiAgICAgIGtleSAqa2V5KiBpcyBub3QgcHJlc2VudCwgdGhlIGBgZFtrZXldYGAgb3BlcmF0aW9uIGNhbGxzIHRoYXRcbiAgICAgIG1ldGhvZCB3aXRoIHRoZSBrZXkgKmtleSogYXMgYXJndW1lbnQuICBUaGUgYGBkW2tleV1gYCBvcGVyYXRpb25cbiAgICAgIHRoZW4gcmV0dXJucyBvciByYWlzZXMgd2hhdGV2ZXIgaXMgcmV0dXJuZWQgb3IgcmFpc2VkIGJ5IHRoZVxuICAgICAgYGBfX21pc3NpbmdfXyhrZXkpYGAgY2FsbCBpZiB0aGUga2V5IGlzIG5vdCBwcmVzZW50LiBObyBvdGhlclxuICAgICAgb3BlcmF0aW9ucyBvciBtZXRob2RzIGludm9rZSBgYF9fbWlzc2luZ19fKClgYC4gSWZcbiAgICAgIGBgX19taXNzaW5nX18oKWBgIGlzIG5vdCBkZWZpbmVkLCBgYEtleUVycm9yYGAgaXMgcmFpc2VkLlxuICAgICAgYGBfX21pc3NpbmdfXygpYGAgbXVzdCBiZSBhIG1ldGhvZDsgaXQgY2Fubm90IGJlIGFuIGluc3RhbmNlXG4gICAgICB2YXJpYWJsZTpcblxuICAgICAgICAgPj4+IGNsYXNzIENvdW50ZXIoZGljdCk6XG4gICAgICAgICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgICAgICAgLi4uICAgICAgICAgcmV0dXJuIDBcbiAgICAgICAgID4+PiBjID0gQ291bnRlcigpXG4gICAgICAgICA+Pj4gY1tcJ3JlZFwnXVxuICAgICAgICAgMFxuICAgICAgICAgPj4+IGNbXCdyZWRcJ10gKz0gMVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDFcblxuICAgICAgU2VlIGBgY29sbGVjdGlvbnMuQ291bnRlcmBgIGZvciBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uXG4gICAgICBpbmNsdWRpbmcgb3RoZXIgbWV0aG9kcyBoZWxwZnVsIGZvciBhY2N1bXVsYXRpbmcgYW5kIG1hbmFnaW5nXG4gICAgICB0YWxsaWVzLlxuXG4gICBkW2tleV0gPSB2YWx1ZVxuXG4gICAgICBTZXQgYGBkW2tleV1gYCB0byAqdmFsdWUqLlxuXG4gICBkZWwgZFtrZXldXG5cbiAgICAgIFJlbW92ZSBgYGRba2V5XWBgIGZyb20gKmQqLiAgUmFpc2VzIGEgYGBLZXlFcnJvcmBgIGlmICprZXkqIGlzXG4gICAgICBub3QgaW4gdGhlIG1hcC5cblxuICAga2V5IGluIGRcblxuICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpkKiBoYXMgYSBrZXkgKmtleSosIGVsc2UgYGBGYWxzZWBgLlxuXG4gICBrZXkgbm90IGluIGRcblxuICAgICAgRXF1aXZhbGVudCB0byBgYG5vdCBrZXkgaW4gZGBgLlxuXG4gICBpdGVyKGQpXG5cbiAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzIG9mIHRoZSBkaWN0aW9uYXJ5LiAgVGhpcyBpcyBhXG4gICAgICBzaG9ydGN1dCBmb3IgYGBpdGVyKGQua2V5cygpKWBgLlxuXG4gICBjbGVhcigpXG5cbiAgICAgIFJlbW92ZSBhbGwgaXRlbXMgZnJvbSB0aGUgZGljdGlvbmFyeS5cblxuICAgY29weSgpXG5cbiAgICAgIFJldHVybiBhIHNoYWxsb3cgY29weSBvZiB0aGUgZGljdGlvbmFyeS5cblxuICAgY2xhc3NtZXRob2QgZnJvbWtleXMoc2VxWywgdmFsdWVdKVxuXG4gICAgICBDcmVhdGUgYSBuZXcgZGljdGlvbmFyeSB3aXRoIGtleXMgZnJvbSAqc2VxKiBhbmQgdmFsdWVzIHNldCB0b1xuICAgICAgKnZhbHVlKi5cblxuICAgICAgYGBmcm9ta2V5cygpYGAgaXMgYSBjbGFzcyBtZXRob2QgdGhhdCByZXR1cm5zIGEgbmV3IGRpY3Rpb25hcnkuXG4gICAgICAqdmFsdWUqIGRlZmF1bHRzIHRvIGBgTm9uZWBgLlxuXG4gICBnZXQoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIFJldHVybiB0aGUgdmFsdWUgZm9yICprZXkqIGlmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCBlbHNlXG4gICAgICAqZGVmYXVsdCouIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvIGBgTm9uZWBgLFxuICAgICAgc28gdGhhdCB0aGlzIG1ldGhvZCBuZXZlciByYWlzZXMgYSBgYEtleUVycm9yYGAuXG5cbiAgIGl0ZW1zKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3MgaXRlbXMgKGBgKGtleSwgdmFsdWUpYGBcbiAgICAgIHBhaXJzKS4gU2VlIHRoZSAqZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMqLlxuXG4gICBrZXlzKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3Mga2V5cy4gIFNlZSB0aGVcbiAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cbiAgIHBvcChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJlbW92ZSBpdCBhbmQgcmV0dXJuIGl0cyB2YWx1ZSxcbiAgICAgIGVsc2UgcmV0dXJuICpkZWZhdWx0Ki4gIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4gYW5kICprZXkqIGlzXG4gICAgICBub3QgaW4gdGhlIGRpY3Rpb25hcnksIGEgYGBLZXlFcnJvcmBgIGlzIHJhaXNlZC5cblxuICAgcG9waXRlbSgpXG5cbiAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGFyYml0cmFyeSBgYChrZXksIHZhbHVlKWBgIHBhaXIgZnJvbSB0aGVcbiAgICAgIGRpY3Rpb25hcnkuXG5cbiAgICAgIGBgcG9waXRlbSgpYGAgaXMgdXNlZnVsIHRvIGRlc3RydWN0aXZlbHkgaXRlcmF0ZSBvdmVyIGFcbiAgICAgIGRpY3Rpb25hcnksIGFzIG9mdGVuIHVzZWQgaW4gc2V0IGFsZ29yaXRobXMuICBJZiB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgZW1wdHksIGNhbGxpbmcgYGBwb3BpdGVtKClgYCByYWlzZXMgYSBgYEtleUVycm9yYGAuXG5cbiAgIHNldGRlZmF1bHQoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZXR1cm4gaXRzIHZhbHVlLiAgSWYgbm90LCBpbnNlcnRcbiAgICAgICprZXkqIHdpdGggYSB2YWx1ZSBvZiAqZGVmYXVsdCogYW5kIHJldHVybiAqZGVmYXVsdCouICAqZGVmYXVsdCpcbiAgICAgIGRlZmF1bHRzIHRvIGBgTm9uZWBgLlxuXG4gICB1cGRhdGUoW290aGVyXSlcblxuICAgICAgVXBkYXRlIHRoZSBkaWN0aW9uYXJ5IHdpdGggdGhlIGtleS92YWx1ZSBwYWlycyBmcm9tICpvdGhlciosXG4gICAgICBvdmVyd3JpdGluZyBleGlzdGluZyBrZXlzLiAgUmV0dXJuIGBgTm9uZWBgLlxuXG4gICAgICBgYHVwZGF0ZSgpYGAgYWNjZXB0cyBlaXRoZXIgYW5vdGhlciBkaWN0aW9uYXJ5IG9iamVjdCBvciBhblxuICAgICAgaXRlcmFibGUgb2Yga2V5L3ZhbHVlIHBhaXJzIChhcyB0dXBsZXMgb3Igb3RoZXIgaXRlcmFibGVzIG9mXG4gICAgICBsZW5ndGggdHdvKS4gIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQsIHRoZSBkaWN0aW9uYXJ5XG4gICAgICBpcyB0aGVuIHVwZGF0ZWQgd2l0aCB0aG9zZSBrZXkvdmFsdWUgcGFpcnM6IGBgZC51cGRhdGUocmVkPTEsXG4gICAgICBibHVlPTIpYGAuXG5cbiAgIHZhbHVlcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIHZhbHVlcy4gIFNlZSB0aGVcbiAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cblNlZSBhbHNvOlxuXG4gICBgYHR5cGVzLk1hcHBpbmdQcm94eVR5cGVgYCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSByZWFkLW9ubHkgdmlld1xuICAgb2YgYSBgYGRpY3RgYC5cblxuXG5EaWN0aW9uYXJ5IHZpZXcgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9iamVjdHMgcmV0dXJuZWQgYnkgYGBkaWN0LmtleXMoKWBgLCBgYGRpY3QudmFsdWVzKClgYCBhbmRcbmBgZGljdC5pdGVtcygpYGAgYXJlICp2aWV3IG9iamVjdHMqLiAgVGhleSBwcm92aWRlIGEgZHluYW1pYyB2aWV3IG9uXG50aGUgZGljdGlvbmFyeVwncyBlbnRyaWVzLCB3aGljaCBtZWFucyB0aGF0IHdoZW4gdGhlIGRpY3Rpb25hcnlcbmNoYW5nZXMsIHRoZSB2aWV3IHJlZmxlY3RzIHRoZXNlIGNoYW5nZXMuXG5cbkRpY3Rpb25hcnkgdmlld3MgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgdG8geWllbGQgdGhlaXIgcmVzcGVjdGl2ZSBkYXRhLFxuYW5kIHN1cHBvcnQgbWVtYmVyc2hpcCB0ZXN0czpcblxubGVuKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG5pdGVyKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cywgdmFsdWVzIG9yIGl0ZW1zIChyZXByZXNlbnRlZCBhc1xuICAgdHVwbGVzIG9mIGBgKGtleSwgdmFsdWUpYGApIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG4gICBLZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gYW4gYXJiaXRyYXJ5IG9yZGVyIHdoaWNoIGlzXG4gICBub24tcmFuZG9tLCB2YXJpZXMgYWNyb3NzIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMsIGFuZCBkZXBlbmRzIG9uXG4gICB0aGUgZGljdGlvbmFyeVwncyBoaXN0b3J5IG9mIGluc2VydGlvbnMgYW5kIGRlbGV0aW9ucy4gSWYga2V5cyxcbiAgIHZhbHVlcyBhbmQgaXRlbXMgdmlld3MgYXJlIGl0ZXJhdGVkIG92ZXIgd2l0aCBubyBpbnRlcnZlbmluZ1xuICAgbW9kaWZpY2F0aW9ucyB0byB0aGUgZGljdGlvbmFyeSwgdGhlIG9yZGVyIG9mIGl0ZW1zIHdpbGwgZGlyZWN0bHlcbiAgIGNvcnJlc3BvbmQuICBUaGlzIGFsbG93cyB0aGUgY3JlYXRpb24gb2YgYGAodmFsdWUsIGtleSlgYCBwYWlyc1xuICAgdXNpbmcgYGB6aXAoKWBgOiBgYHBhaXJzID0gemlwKGQudmFsdWVzKCksIGQua2V5cygpKWBgLiAgQW5vdGhlclxuICAgd2F5IHRvIGNyZWF0ZSB0aGUgc2FtZSBsaXN0IGlzIGBgcGFpcnMgPSBbKHYsIGspIGZvciAoaywgdikgaW5cbiAgIGQuaXRlbXMoKV1gYC5cblxuICAgSXRlcmF0aW5nIHZpZXdzIHdoaWxlIGFkZGluZyBvciBkZWxldGluZyBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5XG4gICBtYXkgcmFpc2UgYSBgYFJ1bnRpbWVFcnJvcmBgIG9yIGZhaWwgdG8gaXRlcmF0ZSBvdmVyIGFsbCBlbnRyaWVzLlxuXG54IGluIGRpY3R2aWV3XG5cbiAgIFJldHVybiBgYFRydWVgYCBpZiAqeCogaXMgaW4gdGhlIHVuZGVybHlpbmcgZGljdGlvbmFyeVwncyBrZXlzLFxuICAgdmFsdWVzIG9yIGl0ZW1zIChpbiB0aGUgbGF0dGVyIGNhc2UsICp4KiBzaG91bGQgYmUgYSBgYChrZXksXG4gICB2YWx1ZSlgYCB0dXBsZSkuXG5cbktleXMgdmlld3MgYXJlIHNldC1saWtlIHNpbmNlIHRoZWlyIGVudHJpZXMgYXJlIHVuaXF1ZSBhbmQgaGFzaGFibGUuXG5JZiBhbGwgdmFsdWVzIGFyZSBoYXNoYWJsZSwgc28gdGhhdCBgYChrZXksIHZhbHVlKWBgIHBhaXJzIGFyZSB1bmlxdWVcbmFuZCBoYXNoYWJsZSwgdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgKFZhbHVlcyB2aWV3cyBhcmVcbm5vdCB0cmVhdGVkIGFzIHNldC1saWtlIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgbm90IHVuaXF1ZS4pXG5Gb3Igc2V0LWxpa2Ugdmlld3MsIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgYWJzdHJhY3RcbmJhc2UgY2xhc3MgYGBjb2xsZWN0aW9ucy5hYmMuU2V0YGAgYXJlIGF2YWlsYWJsZSAoZm9yIGV4YW1wbGUsIGBgPT1gYCxcbmBgPGBgLCBvciBgYF5gYCkuXG5cbkFuIGV4YW1wbGUgb2YgZGljdGlvbmFyeSB2aWV3IHVzYWdlOlxuXG4gICA+Pj4gZGlzaGVzID0ge1wnZWdnc1wnOiAyLCBcJ3NhdXNhZ2VcJzogMSwgXCdiYWNvblwnOiAxLCBcJ3NwYW1cJzogNTAwfVxuICAgPj4+IGtleXMgPSBkaXNoZXMua2V5cygpXG4gICA+Pj4gdmFsdWVzID0gZGlzaGVzLnZhbHVlcygpXG5cbiAgID4+PiAjIGl0ZXJhdGlvblxuICAgPj4+IG4gPSAwXG4gICA+Pj4gZm9yIHZhbCBpbiB2YWx1ZXM6XG4gICAuLi4gICAgIG4gKz0gdmFsXG4gICA+Pj4gcHJpbnQobilcbiAgIDUwNFxuXG4gICA+Pj4gIyBrZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gdGhlIHNhbWUgb3JkZXJcbiAgID4+PiBsaXN0KGtleXMpXG4gICBbXCdlZ2dzXCcsIFwnYmFjb25cJywgXCdzYXVzYWdlXCcsIFwnc3BhbVwnXVxuICAgPj4+IGxpc3QodmFsdWVzKVxuICAgWzIsIDEsIDEsIDUwMF1cblxuICAgPj4+ICMgdmlldyBvYmplY3RzIGFyZSBkeW5hbWljIGFuZCByZWZsZWN0IGRpY3QgY2hhbmdlc1xuICAgPj4+IGRlbCBkaXNoZXNbXCdlZ2dzXCddXG4gICA+Pj4gZGVsIGRpc2hlc1tcJ3NhdXNhZ2VcJ11cbiAgID4+PiBsaXN0KGtleXMpXG4gICBbXCdzcGFtXCcsIFwnYmFjb25cJ11cblxuICAgPj4+ICMgc2V0IG9wZXJhdGlvbnNcbiAgID4+PiBrZXlzICYge1wnZWdnc1wnLCBcJ2JhY29uXCcsIFwnc2FsYWRcJ31cbiAgIHtcJ2JhY29uXCd9XG4gICA+Pj4ga2V5cyBeIHtcJ3NhdXNhZ2VcJywgXCdqdWljZVwnfVxuICAge1wnanVpY2VcJywgXCdzYXVzYWdlXCcsIFwnYmFjb25cJywgXCdzcGFtXCd9XG4nLAogICd0eXBlc21ldGhvZHMnOiAiXG5NZXRob2RzXG4qKioqKioqXG5cbk1ldGhvZHMgYXJlIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsZWQgdXNpbmcgdGhlIGF0dHJpYnV0ZSBub3RhdGlvbi5cblRoZXJlIGFyZSB0d28gZmxhdm9yczogYnVpbHQtaW4gbWV0aG9kcyAoc3VjaCBhcyBgYGFwcGVuZCgpYGAgb25cbmxpc3RzKSBhbmQgY2xhc3MgaW5zdGFuY2UgbWV0aG9kcy4gIEJ1aWx0LWluIG1ldGhvZHMgYXJlIGRlc2NyaWJlZFxud2l0aCB0aGUgdHlwZXMgdGhhdCBzdXBwb3J0IHRoZW0uXG5cbklmIHlvdSBhY2Nlc3MgYSBtZXRob2QgKGEgZnVuY3Rpb24gZGVmaW5lZCBpbiBhIGNsYXNzIG5hbWVzcGFjZSlcbnRocm91Z2ggYW4gaW5zdGFuY2UsIHlvdSBnZXQgYSBzcGVjaWFsIG9iamVjdDogYSAqYm91bmQgbWV0aG9kKiAoYWxzb1xuY2FsbGVkICppbnN0YW5jZSBtZXRob2QqKSBvYmplY3QuIFdoZW4gY2FsbGVkLCBpdCB3aWxsIGFkZCB0aGVcbmBgc2VsZmBgIGFyZ3VtZW50IHRvIHRoZSBhcmd1bWVudCBsaXN0LiAgQm91bmQgbWV0aG9kcyBoYXZlIHR3b1xuc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBtLl9fc2VsZl9fYGAgaXMgdGhlIG9iamVjdCBvbiB3aGljaFxudGhlIG1ldGhvZCBvcGVyYXRlcywgYW5kIGBgbS5fX2Z1bmNfX2BgIGlzIHRoZSBmdW5jdGlvbiBpbXBsZW1lbnRpbmdcbnRoZSBtZXRob2QuICBDYWxsaW5nIGBgbShhcmctMSwgYXJnLTIsIC4uLiwgYXJnLW4pYGAgaXMgY29tcGxldGVseVxuZXF1aXZhbGVudCB0byBjYWxsaW5nIGBgbS5fX2Z1bmNfXyhtLl9fc2VsZl9fLCBhcmctMSwgYXJnLTIsIC4uLixcbmFyZy1uKWBgLlxuXG5MaWtlIGZ1bmN0aW9uIG9iamVjdHMsIGJvdW5kIG1ldGhvZCBvYmplY3RzIHN1cHBvcnQgZ2V0dGluZyBhcmJpdHJhcnlcbmF0dHJpYnV0ZXMuICBIb3dldmVyLCBzaW5jZSBtZXRob2QgYXR0cmlidXRlcyBhcmUgYWN0dWFsbHkgc3RvcmVkIG9uXG50aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QgKGBgbWV0aC5fX2Z1bmNfX2BgKSwgc2V0dGluZyBtZXRob2RcbmF0dHJpYnV0ZXMgb24gYm91bmQgbWV0aG9kcyBpcyBkaXNhbGxvd2VkLiAgQXR0ZW1wdGluZyB0byBzZXQgYSBtZXRob2RcbmF0dHJpYnV0ZSByZXN1bHRzIGluIGEgYGBUeXBlRXJyb3JgYCBiZWluZyByYWlzZWQuICBJbiBvcmRlciB0byBzZXQgYVxubWV0aG9kIGF0dHJpYnV0ZSwgeW91IG5lZWQgdG8gZXhwbGljaXRseSBzZXQgaXQgb24gdGhlIHVuZGVybHlpbmdcbmZ1bmN0aW9uIG9iamVjdDpcblxuICAgY2xhc3MgQzpcbiAgICAgICBkZWYgbWV0aG9kKHNlbGYpOlxuICAgICAgICAgICBwYXNzXG5cbiAgIGMgPSBDKClcbiAgIGMubWV0aG9kLl9fZnVuY19fLndob2FtaSA9ICdteSBuYW1lIGlzIGMnXG5cblNlZSAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIsCiAgJ3R5cGVzbW9kdWxlcyc6ICJcbk1vZHVsZXNcbioqKioqKipcblxuVGhlIG9ubHkgc3BlY2lhbCBvcGVyYXRpb24gb24gYSBtb2R1bGUgaXMgYXR0cmlidXRlIGFjY2VzczpcbmBgbS5uYW1lYGAsIHdoZXJlICptKiBpcyBhIG1vZHVsZSBhbmQgKm5hbWUqIGFjY2Vzc2VzIGEgbmFtZSBkZWZpbmVkXG5pbiAqbSoncyBzeW1ib2wgdGFibGUuIE1vZHVsZSBhdHRyaWJ1dGVzIGNhbiBiZSBhc3NpZ25lZCB0by4gIChOb3RlXG50aGF0IHRoZSBgYGltcG9ydGBgIHN0YXRlbWVudCBpcyBub3QsIHN0cmljdGx5IHNwZWFraW5nLCBhbiBvcGVyYXRpb25cbm9uIGEgbW9kdWxlIG9iamVjdDsgYGBpbXBvcnQgZm9vYGAgZG9lcyBub3QgcmVxdWlyZSBhIG1vZHVsZSBvYmplY3Rcbm5hbWVkICpmb28qIHRvIGV4aXN0LCByYXRoZXIgaXQgcmVxdWlyZXMgYW4gKGV4dGVybmFsKSAqZGVmaW5pdGlvbipcbmZvciBhIG1vZHVsZSBuYW1lZCAqZm9vKiBzb21ld2hlcmUuKVxuXG5BIHNwZWNpYWwgYXR0cmlidXRlIG9mIGV2ZXJ5IG1vZHVsZSBpcyBgYF9fZGljdF9fYGAuIFRoaXMgaXMgdGhlXG5kaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIG1vZHVsZSdzIHN5bWJvbCB0YWJsZS4gTW9kaWZ5aW5nIHRoaXNcbmRpY3Rpb25hcnkgd2lsbCBhY3R1YWxseSBjaGFuZ2UgdGhlIG1vZHVsZSdzIHN5bWJvbCB0YWJsZSwgYnV0IGRpcmVjdFxuYXNzaWdubWVudCB0byB0aGUgYGBfX2RpY3RfX2BgIGF0dHJpYnV0ZSBpcyBub3QgcG9zc2libGUgKHlvdSBjYW5cbndyaXRlIGBgbS5fX2RpY3RfX1snYSddID0gMWBgLCB3aGljaCBkZWZpbmVzIGBgbS5hYGAgdG8gYmUgYGAxYGAsIGJ1dFxueW91IGNhbid0IHdyaXRlIGBgbS5fX2RpY3RfXyA9IHt9YGApLiAgTW9kaWZ5aW5nIGBgX19kaWN0X19gYCBkaXJlY3RseVxuaXMgbm90IHJlY29tbWVuZGVkLlxuXG5Nb2R1bGVzIGJ1aWx0IGludG8gdGhlIGludGVycHJldGVyIGFyZSB3cml0dGVuIGxpa2UgdGhpczogYGA8bW9kdWxlXG4nc3lzJyAoYnVpbHQtaW4pPmBgLiAgSWYgbG9hZGVkIGZyb20gYSBmaWxlLCB0aGV5IGFyZSB3cml0dGVuIGFzXG5gYDxtb2R1bGUgJ29zJyBmcm9tICcvdXNyL2xvY2FsL2xpYi9weXRob25YLlkvb3MucHljJz5gYC5cbiIsCi0gJ3R5cGVzc2VxJzogJ1xuU2VxdWVuY2UgVHlwZXMgLS0tIGBgc3RyYGAsIGBgYnl0ZXNgYCwgYGBieXRlYXJyYXlgYCwgYGBsaXN0YGAsIGBgdHVwbGVgYCwgYGByYW5nZWBgXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHNpeCBzZXF1ZW5jZSB0eXBlczogc3RyaW5ncywgYnl0ZSBzZXF1ZW5jZXMgKGBgYnl0ZXNgYFxub2JqZWN0cyksIGJ5dGUgYXJyYXlzIChgYGJ5dGVhcnJheWBgIG9iamVjdHMpLCBsaXN0cywgdHVwbGVzLCBhbmRcbnJhbmdlIG9iamVjdHMuICBGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0IGluIGBgZGljdGBgIGFuZFxuYGBzZXRgYCBjbGFzc2VzLCBhbmQgdGhlIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUuXG5cblN0cmluZ3MgY29udGFpbiBVbmljb2RlIGNoYXJhY3RlcnMuICBUaGVpciBsaXRlcmFscyBhcmUgd3JpdHRlbiBpblxuc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXM6IGBgXCd4eXp6eVwnYGAsIGBgImZyb2JvenoiYGAuICBTZWUgKlN0cmluZyBhbmRcbkJ5dGVzIGxpdGVyYWxzKiBmb3IgbW9yZSBhYm91dCBzdHJpbmcgbGl0ZXJhbHMuICBJbiBhZGRpdGlvbiB0byB0aGVcbmZ1bmN0aW9uYWxpdHkgZGVzY3JpYmVkIGhlcmUsIHRoZXJlIGFyZSBhbHNvIHN0cmluZy1zcGVjaWZpYyBtZXRob2RzXG5kZXNjcmliZWQgaW4gdGhlICpTdHJpbmcgTWV0aG9kcyogc2VjdGlvbi5cblxuQnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIGNvbnRhaW4gc2luZ2xlIGJ5dGVzIC0tIHRoZSBmb3JtZXIgaXNcbmltbXV0YWJsZSB3aGlsZSB0aGUgbGF0dGVyIGlzIGEgbXV0YWJsZSBzZXF1ZW5jZS4gIEJ5dGVzIG9iamVjdHMgY2FuXG5iZSBjb25zdHJ1Y3RlZCB0aGUgY29uc3RydWN0b3IsIGBgYnl0ZXMoKWBgLCBhbmQgZnJvbSBsaXRlcmFsczsgdXNlIGFcbmBgYmBgIHByZWZpeCB3aXRoIG5vcm1hbCBzdHJpbmcgc3ludGF4OiBgYGJcJ3h5enp5XCdgYC4gIFRvIGNvbnN0cnVjdFxuYnl0ZSBhcnJheXMsIHVzZSB0aGUgYGBieXRlYXJyYXkoKWBgIGZ1bmN0aW9uLlxuXG5XaGlsZSBzdHJpbmcgb2JqZWN0cyBhcmUgc2VxdWVuY2VzIG9mIGNoYXJhY3RlcnMgKHJlcHJlc2VudGVkIGJ5XG5zdHJpbmdzIG9mIGxlbmd0aCAxKSwgYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIGFyZSBzZXF1ZW5jZXMgb2ZcbippbnRlZ2VycyogKGJldHdlZW4gMCBhbmQgMjU1KSwgcmVwcmVzZW50aW5nIHRoZSBBU0NJSSB2YWx1ZSBvZiBzaW5nbGVcbmJ5dGVzLiAgVGhhdCBtZWFucyB0aGF0IGZvciBhIGJ5dGVzIG9yIGJ5dGVhcnJheSBvYmplY3QgKmIqLCBgYGJbMF1gYFxud2lsbCBiZSBhbiBpbnRlZ2VyLCB3aGlsZSBgYGJbMDoxXWBgIHdpbGwgYmUgYSBieXRlcyBvciBieXRlYXJyYXlcbm9iamVjdCBvZiBsZW5ndGggMS4gIFRoZSByZXByZXNlbnRhdGlvbiBvZiBieXRlcyBvYmplY3RzIHVzZXMgdGhlXG5saXRlcmFsIGZvcm1hdCAoYGBiXCcuLi5cJ2BgKSBzaW5jZSBpdCBpcyBnZW5lcmFsbHkgbW9yZSB1c2VmdWwgdGhhblxuZS5nLiBgYGJ5dGVzKFs1MCwgMTksIDEwMF0pYGAuICBZb3UgY2FuIGFsd2F5cyBjb252ZXJ0IGEgYnl0ZXMgb2JqZWN0XG5pbnRvIGEgbGlzdCBvZiBpbnRlZ2VycyB1c2luZyBgYGxpc3QoYilgYC5cblxuQWxzbywgd2hpbGUgaW4gcHJldmlvdXMgUHl0aG9uIHZlcnNpb25zLCBieXRlIHN0cmluZ3MgYW5kIFVuaWNvZGVcbnN0cmluZ3MgY291bGQgYmUgZXhjaGFuZ2VkIGZvciBlYWNoIG90aGVyIHJhdGhlciBmcmVlbHkgKGJhcnJpbmdcbmVuY29kaW5nIGlzc3VlcyksIHN0cmluZ3MgYW5kIGJ5dGVzIGFyZSBub3cgY29tcGxldGVseSBzZXBhcmF0ZVxuY29uY2VwdHMuICBUaGVyZVwncyBubyBpbXBsaWNpdCBlbi0vZGVjb2RpbmcgaWYgeW91IHBhc3MgYW4gb2JqZWN0IG9mXG50aGUgd3JvbmcgdHlwZS4gIEEgc3RyaW5nIGFsd2F5cyBjb21wYXJlcyB1bmVxdWFsIHRvIGEgYnl0ZXMgb3JcbmJ5dGVhcnJheSBvYmplY3QuXG5cbkxpc3RzIGFyZSBjb25zdHJ1Y3RlZCB3aXRoIHNxdWFyZSBicmFja2V0cywgc2VwYXJhdGluZyBpdGVtcyB3aXRoXG5jb21tYXM6IGBgW2EsIGIsIGNdYGAuICBUdXBsZXMgYXJlIGNvbnN0cnVjdGVkIGJ5IHRoZSBjb21tYSBvcGVyYXRvclxuKG5vdCB3aXRoaW4gc3F1YXJlIGJyYWNrZXRzKSwgd2l0aCBvciB3aXRob3V0IGVuY2xvc2luZyBwYXJlbnRoZXNlcyxcbmJ1dCBhbiBlbXB0eSB0dXBsZSBtdXN0IGhhdmUgdGhlIGVuY2xvc2luZyBwYXJlbnRoZXNlcywgc3VjaCBhcyBgYGEsXG5iLCBjYGAgb3IgYGAoKWBgLiAgQSBzaW5nbGUgaXRlbSB0dXBsZSBtdXN0IGhhdmUgYSB0cmFpbGluZyBjb21tYSxcbnN1Y2ggYXMgYGAoZCwpYGAuXG5cbk9iamVjdHMgb2YgdHlwZSByYW5nZSBhcmUgY3JlYXRlZCB1c2luZyB0aGUgYGByYW5nZSgpYGAgZnVuY3Rpb24uXG5UaGV5IGRvblwndCBzdXBwb3J0IGNvbmNhdGVuYXRpb24gb3IgcmVwZXRpdGlvbiwgYW5kIHVzaW5nIGBgbWluKClgYCBvclxuYGBtYXgoKWBgIG9uIHRoZW0gaXMgaW5lZmZpY2llbnQuXG5cbk1vc3Qgc2VxdWVuY2UgdHlwZXMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG9wZXJhdGlvbnMuICBUaGUgYGBpbmBgIGFuZFxuYGBub3QgaW5gYCBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdGllcyBhcyB0aGUgY29tcGFyaXNvblxub3BlcmF0aW9ucy4gIFRoZSBgYCtgYCBhbmQgYGAqYGAgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGFzXG50aGUgY29ycmVzcG9uZGluZyBudW1lcmljIG9wZXJhdGlvbnMuIFszXSBBZGRpdGlvbmFsIG1ldGhvZHMgYXJlXG5wcm92aWRlZCBmb3IgKk11dGFibGUgU2VxdWVuY2UgVHlwZXMqLlxuXG5UaGlzIHRhYmxlIGxpc3RzIHRoZSBzZXF1ZW5jZSBvcGVyYXRpb25zIHNvcnRlZCBpbiBhc2NlbmRpbmcgcHJpb3JpdHlcbihvcGVyYXRpb25zIGluIHRoZSBzYW1lIGJveCBoYXZlIHRoZSBzYW1lIHByaW9yaXR5KS4gIEluIHRoZSB0YWJsZSxcbipzKiBhbmQgKnQqIGFyZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZTsgKm4qLCAqaSosICpqKiBhbmQgKmsqIGFyZVxuaW50ZWdlcnMuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PStcbnwgYGB4IGluIHNgYCAgICAgICAgIHwgYGBUcnVlYGAgaWYgYW4gaXRlbSBvZiAqcyogaXMgICAgfCAoMSkgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlIGBgRmFsc2VgYCAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGB4IG5vdCBpbiBzYGAgICAgIHwgYGBGYWxzZWBgIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICAgfCAoMSkgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlIGBgVHJ1ZWBgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzICsgdGBgICAgICAgICAgIHwgdGhlIGNvbmNhdGVuYXRpb24gb2YgKnMqIGFuZCAqdCogfCAoNikgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzICogbiwgbiAqIHNgYCAgIHwgKm4qIHNoYWxsb3cgY29waWVzIG9mICpzKiAgICAgICAgfCAoMikgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgY29uY2F0ZW5hdGVkICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzW2ldYGAgICAgICAgICAgIHwgKmkqdGggaXRlbSBvZiAqcyosIG9yaWdpbiAwICAgICAgfCAoMykgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzW2k6al1gYCAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgfCAoMykoNCkgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzW2k6ajprXWBgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgfCAoMykoNSkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgd2l0aCBzdGVwICprKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBsZW4ocylgYCAgICAgICAgIHwgbGVuZ3RoIG9mICpzKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBtaW4ocylgYCAgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBtYXgocylgYCAgICAgICAgIHwgbGFyZ2VzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzLmluZGV4KGkpYGAgICAgIHwgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VyZW5jZSBvZiAgfCAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgKmkqIGluICpzKiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzLmNvdW50KGkpYGAgICAgIHwgdG90YWwgbnVtYmVyIG9mIG9jY3VyZW5jZXMgb2YgICAgfCAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgKmkqIGluICpzKiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcblxuU2VxdWVuY2UgdHlwZXMgYWxzbyBzdXBwb3J0IGNvbXBhcmlzb25zLiAgSW4gcGFydGljdWxhciwgdHVwbGVzIGFuZFxubGlzdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IGJ5IGNvbXBhcmluZyBjb3JyZXNwb25kaW5nXG5lbGVtZW50cy4gIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBldmVyeSBlbGVtZW50IG11c3RcbmNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWUgdHlwZSBhbmQgaGF2ZVxudGhlIHNhbWUgbGVuZ3RoLiAgKEZvciBmdWxsIGRldGFpbHMgc2VlICpDb21wYXJpc29ucyogaW4gdGhlIGxhbmd1YWdlXG5yZWZlcmVuY2UuKVxuXG5Ob3RlczpcblxuMS4gV2hlbiAqcyogaXMgYSBzdHJpbmcgb2JqZWN0LCB0aGUgYGBpbmBgIGFuZCBgYG5vdCBpbmBgIG9wZXJhdGlvbnNcbiAgIGFjdCBsaWtlIGEgc3Vic3RyaW5nIHRlc3QuXG5cbjIuIFZhbHVlcyBvZiAqbiogbGVzcyB0aGFuIGBgMGBgIGFyZSB0cmVhdGVkIGFzIGBgMGBgICh3aGljaCB5aWVsZHMgYW5cbiAgIGVtcHR5IHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUgYXMgKnMqKS4gIE5vdGUgYWxzbyB0aGF0IHRoZSBjb3BpZXNcbiAgIGFyZSBzaGFsbG93OyBuZXN0ZWQgc3RydWN0dXJlcyBhcmUgbm90IGNvcGllZC4gIFRoaXMgb2Z0ZW4gaGF1bnRzXG4gICBuZXcgUHl0aG9uIHByb2dyYW1tZXJzOyBjb25zaWRlcjpcblxuICAgPj4+IGxpc3RzID0gW1tdXSAqIDNcbiAgID4+PiBsaXN0c1xuICAgW1tdLCBbXSwgW11dXG4gICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpXG4gICA+Pj4gbGlzdHNcbiAgIFtbM10sIFszXSwgWzNdXVxuXG4gICBXaGF0IGhhcyBoYXBwZW5lZCBpcyB0aGF0IGBgW1tdXWBgIGlzIGEgb25lLWVsZW1lbnQgbGlzdCBjb250YWluaW5nXG4gICBhbiBlbXB0eSBsaXN0LCBzbyBhbGwgdGhyZWUgZWxlbWVudHMgb2YgYGBbW11dICogM2BgIGFyZSAocG9pbnRlcnNcbiAgIHRvKSB0aGlzIHNpbmdsZSBlbXB0eSBsaXN0LiAgTW9kaWZ5aW5nIGFueSBvZiB0aGUgZWxlbWVudHMgb2ZcbiAgIGBgbGlzdHNgYCBtb2RpZmllcyB0aGlzIHNpbmdsZSBsaXN0LiBZb3UgY2FuIGNyZWF0ZSBhIGxpc3Qgb2ZcbiAgIGRpZmZlcmVudCBsaXN0cyB0aGlzIHdheTpcblxuICAgPj4+IGxpc3RzID0gW1tdIGZvciBpIGluIHJhbmdlKDMpXVxuICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuICAgPj4+IGxpc3RzWzFdLmFwcGVuZCg1KVxuICAgPj4+IGxpc3RzWzJdLmFwcGVuZCg3KVxuICAgPj4+IGxpc3RzXG4gICBbWzNdLCBbNV0sIFs3XV1cblxuMy4gSWYgKmkqIG9yICpqKiBpcyBuZWdhdGl2ZSwgdGhlIGluZGV4IGlzIHJlbGF0aXZlIHRvIHRoZSBlbmQgb2YgdGhlXG4gICBzdHJpbmc6IGBgbGVuKHMpICsgaWBgIG9yIGBgbGVuKHMpICsgamBgIGlzIHN1YnN0aXR1dGVkLiAgQnV0IG5vdGVcbiAgIHRoYXQgYGAtMGBgIGlzIHN0aWxsIGBgMGBgLlxuXG40LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyBkZWZpbmVkIGFzIHRoZSBzZXF1ZW5jZSBvZlxuICAgaXRlbXMgd2l0aCBpbmRleCAqayogc3VjaCB0aGF0IGBgaSA8PSBrIDwgamBgLiAgSWYgKmkqIG9yICpqKiBpc1xuICAgZ3JlYXRlciB0aGFuIGBgbGVuKHMpYGAsIHVzZSBgYGxlbihzKWBgLiAgSWYgKmkqIGlzIG9taXR0ZWQgb3JcbiAgIGBgTm9uZWBgLCB1c2UgYGAwYGAuICBJZiAqaiogaXMgb21pdHRlZCBvciBgYE5vbmVgYCwgdXNlXG4gICBgYGxlbihzKWBgLiAgSWYgKmkqIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAqaiosIHRoZSBzbGljZSBpc1xuICAgZW1wdHkuXG5cbjUuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIHdpdGggc3RlcCAqayogaXMgZGVmaW5lZCBhcyB0aGVcbiAgIHNlcXVlbmNlIG9mIGl0ZW1zIHdpdGggaW5kZXggIGBgeCA9IGkgKyBuKmtgYCBzdWNoIHRoYXQgYGAwIDw9IG4gPFxuICAgKGotaSkva2BgLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBpbmRpY2VzIGFyZSBgYGlgYCwgYGBpK2tgYCxcbiAgIGBgaSsyKmtgYCwgYGBpKzMqa2BgIGFuZCBzbyBvbiwgc3RvcHBpbmcgd2hlbiAqaiogaXMgcmVhY2hlZCAoYnV0XG4gICBuZXZlciBpbmNsdWRpbmcgKmoqKS4gIElmICppKiBvciAqaiogaXMgZ3JlYXRlciB0aGFuIGBgbGVuKHMpYGAsXG4gICB1c2UgYGBsZW4ocylgYC4gIElmICppKiBvciAqaiogYXJlIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZXkgYmVjb21lXG4gICAiZW5kIiB2YWx1ZXMgKHdoaWNoIGVuZCBkZXBlbmRzIG9uIHRoZSBzaWduIG9mICprKikuICBOb3RlLCAqaypcbiAgIGNhbm5vdCBiZSB6ZXJvLiBJZiAqayogaXMgYGBOb25lYGAsIGl0IGlzIHRyZWF0ZWQgbGlrZSBgYDFgYC5cblxuNi4gQ29uY2F0ZW5hdGluZyBpbW11dGFibGUgc3RyaW5ncyBhbHdheXMgcmVzdWx0cyBpbiBhIG5ldyBvYmplY3QuXG4gICBUaGlzIG1lYW5zIHRoYXQgYnVpbGRpbmcgdXAgYSBzdHJpbmcgYnkgcmVwZWF0ZWQgY29uY2F0ZW5hdGlvbiB3aWxsXG4gICBoYXZlIGEgcXVhZHJhdGljIHJ1bnRpbWUgY29zdCBpbiB0aGUgdG90YWwgc3RyaW5nIGxlbmd0aC4gIFRvIGdldCBhXG4gICBsaW5lYXIgcnVudGltZSBjb3N0LCB5b3UgbXVzdCBzd2l0Y2ggdG8gb25lIG9mIHRoZSBhbHRlcm5hdGl2ZXNcbiAgIGJlbG93OlxuXG4gICAqIGlmIGNvbmNhdGVuYXRpbmcgYGBzdHJgYCBvYmplY3RzLCB5b3UgY2FuIGJ1aWxkIGEgbGlzdCBhbmQgdXNlXG4gICAgIGBgc3RyLmpvaW4oKWBgIGF0IHRoZSBlbmQ7XG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyBgYGJ5dGVzYGAgb2JqZWN0cywgeW91IGNhbiBzaW1pbGFybHkgdXNlXG4gICAgIGBgYnl0ZXMuam9pbigpYGAsIG9yIHlvdSBjYW4gZG8gaW4tcGxhY2UgY29uY2F0ZW5hdGlvbiB3aXRoIGFcbiAgICAgYGBieXRlYXJyYXlgYCBvYmplY3QuICBgYGJ5dGVhcnJheWBgIG9iamVjdHMgYXJlIG11dGFibGUgYW5kIGhhdmVcbiAgICAgYW4gZWZmaWNpZW50IG92ZXJhbGxvY2F0aW9uIG1lY2hhbmlzbS5cblxuXG5TdHJpbmcgTWV0aG9kc1xuPT09PT09PT09PT09PT1cblxuU3RyaW5nIG9iamVjdHMgc3VwcG9ydCB0aGUgbWV0aG9kcyBsaXN0ZWQgYmVsb3cuXG5cbkluIGFkZGl0aW9uLCBQeXRob25cJ3Mgc3RyaW5ncyBzdXBwb3J0IHRoZSBzZXF1ZW5jZSB0eXBlIG1ldGhvZHNcbmRlc2NyaWJlZCBpbiB0aGUgKlNlcXVlbmNlIFR5cGVzIC0tLSBzdHIsIGJ5dGVzLCBieXRlYXJyYXksIGxpc3QsXG50dXBsZSwgcmFuZ2UqIHNlY3Rpb24uIFRvIG91dHB1dCBmb3JtYXR0ZWQgc3RyaW5ncywgc2VlIHRoZSAqU3RyaW5nXG5Gb3JtYXR0aW5nKiBzZWN0aW9uLiBBbHNvLCBzZWUgdGhlIGBgcmVgYCBtb2R1bGUgZm9yIHN0cmluZyBmdW5jdGlvbnNcbmJhc2VkIG9uIHJlZ3VsYXIgZXhwcmVzc2lvbnMuXG5cbnN0ci5jYXBpdGFsaXplKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggaXRzIGZpcnN0IGNoYXJhY3RlciBjYXBpdGFsaXplZFxuICAgYW5kIHRoZSByZXN0IGxvd2VyY2FzZWQuXG5cbnN0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gUGFkZGluZyBpcyBkb25lXG4gICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYSBzcGFjZSkuXG5cbnN0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpzdWIqXG4gICBpbiB0aGUgcmFuZ2UgWypzdGFydCosICplbmQqXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZFxuICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXG5zdHIuZW5jb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcblxuICAgUmV0dXJuIGFuIGVuY29kZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGFzIGEgYnl0ZXMgb2JqZWN0LiBEZWZhdWx0XG4gICBlbmNvZGluZyBpcyBgYFwndXRmLThcJ2BgLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50XG4gICBlcnJvciBoYW5kbGluZyBzY2hlbWUuIFRoZSBkZWZhdWx0IGZvciAqZXJyb3JzKiBpcyBgYFwnc3RyaWN0XCdgYCxcbiAgIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSBgYFVuaWNvZGVFcnJvcmBgLiBPdGhlclxuICAgcG9zc2libGUgdmFsdWVzIGFyZSBgYFwnaWdub3JlXCdgYCwgYGBcJ3JlcGxhY2VcJ2BgLFxuICAgYGBcJ3htbGNoYXJyZWZyZXBsYWNlXCdgYCwgYGBcJ2JhY2tzbGFzaHJlcGxhY2VcJ2BgIGFuZCBhbnkgb3RoZXIgbmFtZVxuICAgcmVnaXN0ZXJlZCB2aWEgYGBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKWBgLCBzZWUgc2VjdGlvbiAqQ29kZWMgQmFzZVxuICAgQ2xhc3NlcyouIEZvciBhIGxpc3Qgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmRcbiAgIEVuY29kaW5ncyouXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzIGFkZGVkLlxuXG5zdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgKnN1ZmZpeCosXG4gICBvdGhlcndpc2UgcmV0dXJuIGBgRmFsc2VgYC4gICpzdWZmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2ZcbiAgIHN1ZmZpeGVzIHRvIGxvb2sgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IGJlZ2lubmluZyBhdFxuICAgdGhhdCBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLlxuXG5zdHIuZXhwYW5kdGFicyhbdGFic2l6ZV0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIHJlcGxhY2VkXG4gICBieSB6ZXJvIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgY29sdW1uIGFuZCB0aGVcbiAgIGdpdmVuIHRhYiBzaXplLiAgVGhlIGNvbHVtbiBudW1iZXIgaXMgcmVzZXQgdG8gemVybyBhZnRlciBlYWNoXG4gICBuZXdsaW5lIG9jY3VycmluZyBpbiB0aGUgc3RyaW5nLiBJZiAqdGFic2l6ZSogaXMgbm90IGdpdmVuLCBhIHRhYlxuICAgc2l6ZSBvZiBgYDhgYCBjaGFyYWN0ZXJzIGlzIGFzc3VtZWQuICBUaGlzIGRvZXNuXCd0IHVuZGVyc3RhbmQgb3RoZXJcbiAgIG5vbi1wcmludGluZyBjaGFyYWN0ZXJzIG9yIGVzY2FwZSBzZXF1ZW5jZXMuXG5cbnN0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCBpbiB0aGUgc2xpY2UgYGBzW3N0YXJ0OmVuZF1gYC5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuIGBgLTFgYCBpZiAqc3ViKiBpcyBub3QgZm91bmQuXG5cbiAgIE5vdGU6IFRoZSBgYGZpbmQoKWBgIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBvbmx5IGlmIHlvdSBuZWVkIHRvIGtub3cgdGhlXG4gICAgIHBvc2l0aW9uIG9mICpzdWIqLiAgVG8gY2hlY2sgaWYgKnN1YiogaXMgYSBzdWJzdHJpbmcgb3Igbm90LCB1c2VcbiAgICAgdGhlIGBgaW5gYCBvcGVyYXRvcjpcblxuICAgICAgICA+Pj4gXCdQeVwnIGluIFwnUHl0aG9uXCdcbiAgICAgICAgVHJ1ZVxuXG5zdHIuZm9ybWF0KCphcmdzLCAqKmt3YXJncylcblxuICAgUGVyZm9ybSBhIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbi4gIFRoZSBzdHJpbmcgb24gd2hpY2ggdGhpc1xuICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgcmVwbGFjZW1lbnQgZmllbGRzXG4gICBkZWxpbWl0ZWQgYnkgYnJhY2VzIGBge31gYC4gIEVhY2ggcmVwbGFjZW1lbnQgZmllbGQgY29udGFpbnMgZWl0aGVyXG4gICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lIG9mIGFcbiAgIGtleXdvcmQgYXJndW1lbnQuICBSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGVhY2hcbiAgIHJlcGxhY2VtZW50IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGVcbiAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG5cbiAgID4+PiAiVGhlIHN1bSBvZiAxICsgMiBpcyB7MH0iLmZvcm1hdCgxKzIpXG4gICBcJ1RoZSBzdW0gb2YgMSArIDIgaXMgM1wnXG5cbiAgIFNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSB2YXJpb3VzXG4gICBmb3JtYXR0aW5nIG9wdGlvbnMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGluIGZvcm1hdCBzdHJpbmdzLlxuXG5zdHIuZm9ybWF0X21hcChtYXBwaW5nKVxuXG4gICBTaW1pbGFyIHRvIGBgc3RyLmZvcm1hdCgqKm1hcHBpbmcpYGAsIGV4Y2VwdCB0aGF0IGBgbWFwcGluZ2BgIGlzXG4gICB1c2VkIGRpcmVjdGx5IGFuZCBub3QgY29waWVkIHRvIGEgYGBkaWN0YGAgLiAgVGhpcyBpcyB1c2VmdWwgaWYgZm9yXG4gICBleGFtcGxlIGBgbWFwcGluZ2BgIGlzIGEgZGljdCBzdWJjbGFzczpcblxuICAgPj4+IGNsYXNzIERlZmF1bHQoZGljdCk6XG4gICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIGtleVxuICAgLi4uXG4gICA+Pj4gXCd7bmFtZX0gd2FzIGJvcm4gaW4ge2NvdW50cnl9XCcuZm9ybWF0X21hcChEZWZhdWx0KG5hbWU9XCdHdWlkb1wnKSlcbiAgIFwnR3VpZG8gd2FzIGJvcm4gaW4gY291bnRyeVwnXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgYGBmaW5kKClgYCwgYnV0IHJhaXNlIGBgVmFsdWVFcnJvcmBgIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3RcbiAgIGZvdW5kLlxuXG5zdHIuaXNhbG51bSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhbnVtZXJpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEEgY2hhcmFjdGVyXG4gICBgYGNgYCBpcyBhbHBoYW51bWVyaWMgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgcmV0dXJucyBgYFRydWVgYDpcbiAgIGBgYy5pc2FscGhhKClgYCwgYGBjLmlzZGVjaW1hbCgpYGAsIGBgYy5pc2RpZ2l0KClgYCwgb3JcbiAgIGBgYy5pc251bWVyaWMoKWBgLlxuXG5zdHIuaXNhbHBoYSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhYmV0aWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBbHBoYWJldGljXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiTGV0dGVyIiwgaS5lLiwgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5IHByb3BlcnR5XG4gICBiZWluZyBvbmUgb2YgIkxtIiwgIkx0IiwgIkx1IiwgIkxsIiwgb3IgIkxvIi4gIE5vdGUgdGhhdCB0aGlzIGlzXG4gICBkaWZmZXJlbnQgZnJvbSB0aGUgIkFscGhhYmV0aWMiIHByb3BlcnR5IGRlZmluZWQgaW4gdGhlIFVuaWNvZGVcbiAgIFN0YW5kYXJkLlxuXG5zdHIuaXNkZWNpbWFsKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGVjaW1hbCBjaGFyYWN0ZXJzXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBEZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBmcm9tIGdlbmVyYWwgY2F0ZWdvcnkgIk5kIi4gVGhpcyBjYXRlZ29yeVxuICAgaW5jbHVkZXMgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG9cbiAgIGZvcm0gZGVjaW1hbC1yYWRpeCBudW1iZXJzLCBlLmcuIFUrMDY2MCwgQVJBQklDLUlORElDIERJR0lUIFpFUk8uXG5cbnN0ci5pc2RpZ2l0KClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGlnaXRzIGFuZCB0aGVyZSBpc1xuICAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgRGlnaXRzIGluY2x1ZGUgZGVjaW1hbFxuICAgY2hhcmFjdGVycyBhbmQgZGlnaXRzIHRoYXQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLCBzdWNoIGFzIHRoZVxuICAgY29tcGF0aWJpbGl0eSBzdXBlcnNjcmlwdCBkaWdpdHMuICBGb3JtYWxseSwgYSBkaWdpdCBpcyBhIGNoYXJhY3RlclxuICAgdGhhdCBoYXMgdGhlIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCBvclxuICAgTnVtZXJpY19UeXBlPURlY2ltYWwuXG5cbnN0ci5pc2lkZW50aWZpZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgaWRlbnRpZmllciBhY2NvcmRpbmcgdG8gdGhlXG4gICBsYW5ndWFnZSBkZWZpbml0aW9uLCBzZWN0aW9uICpJZGVudGlmaWVycyBhbmQga2V5d29yZHMqLlxuXG5zdHIuaXNsb3dlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSBsb3dlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc251bWVyaWMoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBudW1lcmljIGNoYXJhY3RlcnMsXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBOdW1lcmljXG4gICBjaGFyYWN0ZXJzIGluY2x1ZGUgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgaGF2ZVxuICAgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSBwcm9wZXJ0eSwgZS5nLiBVKzIxNTUsIFZVTEdBUiBGUkFDVElPTlxuICAgT05FIEZJRlRILiAgRm9ybWFsbHksIG51bWVyaWMgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCB0aGVcbiAgIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCwgTnVtZXJpY19UeXBlPURlY2ltYWwgb3JcbiAgIE51bWVyaWNfVHlwZT1OdW1lcmljLlxuXG5zdHIuaXNwcmludGFibGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBwcmludGFibGUgb3IgdGhlXG4gICBzdHJpbmcgaXMgZW1wdHksIGZhbHNlIG90aGVyd2lzZS4gIE5vbnByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZVxuICAgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZSBhc1xuICAgIk90aGVyIiBvciAiU2VwYXJhdG9yIiwgZXhjZXB0aW5nIHRoZSBBU0NJSSBzcGFjZSAoMHgyMCkgd2hpY2ggaXNcbiAgIGNvbnNpZGVyZWQgcHJpbnRhYmxlLiAgKE5vdGUgdGhhdCBwcmludGFibGUgY2hhcmFjdGVycyBpbiB0aGlzXG4gICBjb250ZXh0IGFyZSB0aG9zZSB3aGljaCBzaG91bGQgbm90IGJlIGVzY2FwZWQgd2hlbiBgYHJlcHIoKWBgIGlzXG4gICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nIG9mIHN0cmluZ3NcbiAgIHdyaXR0ZW4gdG8gYGBzeXMuc3Rkb3V0YGAgb3IgYGBzeXMuc3RkZXJyYGAuKVxuXG5zdHIuaXNzcGFjZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZXJlIGFyZSBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgV2hpdGVzcGFjZVxuICAgY2hhcmFjdGVycyAgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJPdGhlciIgb3IgIlNlcGFyYXRvciIgYW5kIHRob3NlIHdpdGggYmlkaXJlY3Rpb25hbFxuICAgcHJvcGVydHkgYmVpbmcgb25lIG9mICJXUyIsICJCIiwgb3IgIlMiLlxuXG5zdHIuaXN0aXRsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB0aXRsZWNhc2VkIHN0cmluZyBhbmQgdGhlcmUgaXMgYXRcbiAgIGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZvciBleGFtcGxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIG1heSBvbmx5XG4gICBmb2xsb3cgdW5jYXNlZCBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2UgY2hhcmFjdGVycyBvbmx5IGNhc2VkIG9uZXMuXG4gICBSZXR1cm4gZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXN1cHBlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSB1cHBlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5qb2luKGl0ZXJhYmxlKVxuXG4gICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZ3MgaW4gdGhlXG4gICAqaXRlcmFibGUqICppdGVyYWJsZSouICBBIGBgVHlwZUVycm9yYGAgd2lsbCBiZSByYWlzZWQgaWYgdGhlcmUgYXJlXG4gICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nIGBgYnl0ZXNgYCBvYmplY3RzLlxuICAgVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcgcHJvdmlkaW5nIHRoaXMgbWV0aG9kLlxuXG5zdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhXG4gICBzcGFjZSkuICBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byBgYGxlbihzKWBgLlxuXG5zdHIubG93ZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLlxuXG5zdHIubHN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGxlYWRpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG9cbiAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSBwcmVmaXg7IHJhdGhlcixcbiAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcubHN0cmlwKClcbiAgIFwnc3BhY2lvdXMgICBcJ1xuICAgPj4+IFwnd3d3LmV4YW1wbGUuY29tXCcubHN0cmlwKFwnY21vd3ouXCcpXG4gICBcJ2V4YW1wbGUuY29tXCdcblxuc3RhdGljIHN0ci5tYWtldHJhbnMoeFssIHlbLCB6XV0pXG5cbiAgIFRoaXMgc3RhdGljIG1ldGhvZCByZXR1cm5zIGEgdHJhbnNsYXRpb24gdGFibGUgdXNhYmxlIGZvclxuICAgYGBzdHIudHJhbnNsYXRlKClgYC5cblxuICAgSWYgdGhlcmUgaXMgb25seSBvbmUgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBkaWN0aW9uYXJ5IG1hcHBpbmdcbiAgIFVuaWNvZGUgb3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIChzdHJpbmdzIG9mIGxlbmd0aCAxKSB0b1xuICAgVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyAob2YgYXJiaXRyYXJ5IGxlbmd0aHMpIG9yIE5vbmUuXG4gICBDaGFyYWN0ZXIga2V5cyB3aWxsIHRoZW4gYmUgY29udmVydGVkIHRvIG9yZGluYWxzLlxuXG4gICBJZiB0aGVyZSBhcmUgdHdvIGFyZ3VtZW50cywgdGhleSBtdXN0IGJlIHN0cmluZ3Mgb2YgZXF1YWwgbGVuZ3RoLFxuICAgYW5kIGluIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeSwgZWFjaCBjaGFyYWN0ZXIgaW4geCB3aWxsIGJlIG1hcHBlZFxuICAgdG8gdGhlIGNoYXJhY3RlciBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB5LiAgSWYgdGhlcmUgaXMgYSB0aGlyZFxuICAgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG9cbiAgIE5vbmUgaW4gdGhlIHJlc3VsdC5cblxuc3RyLnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBpdHNlbGYsIGZvbGxvd2VkIGJ5XG4gICB0d28gZW1wdHkgc3RyaW5ncy5cblxuc3RyLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKm9sZCpcbiAgIHJlcGxhY2VkIGJ5ICpuZXcqLiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpjb3VudCogaXMgZ2l2ZW4sIG9ubHlcbiAgIHRoZSBmaXJzdCAqY291bnQqIG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC5cblxuc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgd2l0aGluIGBgc1tzdGFydDplbmRdYGAuXG4gICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlXG4gICBub3RhdGlvbi4gIFJldHVybiBgYC0xYGAgb24gZmFpbHVyZS5cblxuc3RyLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBMaWtlIGBgcmZpbmQoKWBgIGJ1dCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiB0aGUgc3Vic3RyaW5nICpzdWIqXG4gICBpcyBub3QgZm91bmQuXG5cbnN0ci5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIHRoZSBzdHJpbmcgcmlnaHQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhXG4gICBzcGFjZSkuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3JcbiAgIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG5cbnN0ci5ycGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieVxuICAgdGhlIHN0cmluZyBpdHNlbGYuXG5cbnN0ci5yc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0c1xuICAgYXJlIGRvbmUsIHRoZSAqcmlnaHRtb3N0KiBvbmVzLiAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvclxuICAgYGBOb25lYGAsIGFueSB3aGl0ZXNwYWNlIHN0cmluZyBpcyBhIHNlcGFyYXRvci4gIEV4Y2VwdCBmb3JcbiAgIHNwbGl0dGluZyBmcm9tIHRoZSByaWdodCwgYGByc3BsaXQoKWBgIGJlaGF2ZXMgbGlrZSBgYHNwbGl0KClgYFxuICAgd2hpY2ggaXMgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cblxuc3RyLnJzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0cmFpbGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHN1ZmZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5yc3RyaXAoKVxuICAgXCcgICBzcGFjaW91c1wnXG4gICA+Pj4gXCdtaXNzaXNzaXBwaVwnLnJzdHJpcChcJ2lwelwnKVxuICAgXCdtaXNzaXNzXCdcblxuc3RyLnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuICBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCpcbiAgIHNwbGl0cyBhcmUgZG9uZSAodGh1cywgdGhlIGxpc3Qgd2lsbCBoYXZlIGF0IG1vc3QgYGBtYXhzcGxpdCsxYGBcbiAgIGVsZW1lbnRzKS4gIElmICptYXhzcGxpdCogaXMgbm90IHNwZWNpZmllZCwgdGhlbiB0aGVyZSBpcyBubyBsaW1pdFxuICAgb24gdGhlIG51bWJlciBvZiBzcGxpdHMgKGFsbCBwb3NzaWJsZSBzcGxpdHMgYXJlIG1hZGUpLlxuXG4gICBJZiAqc2VwKiBpcyBnaXZlbiwgY29uc2VjdXRpdmUgZGVsaW1pdGVycyBhcmUgbm90IGdyb3VwZWQgdG9nZXRoZXJcbiAgIGFuZCBhcmUgZGVlbWVkIHRvIGRlbGltaXQgZW1wdHkgc3RyaW5ncyAoZm9yIGV4YW1wbGUsXG4gICBgYFwnMSwsMlwnLnNwbGl0KFwnLFwnKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnXCcsIFwnMlwnXWBgKS4gIFRoZSAqc2VwKlxuICAgYXJndW1lbnQgbWF5IGNvbnNpc3Qgb2YgbXVsdGlwbGUgY2hhcmFjdGVycyAoZm9yIGV4YW1wbGUsXG4gICBgYFwnMTw+Mjw+M1wnLnNwbGl0KFwnPD5cJylgYCByZXR1cm5zIGBgW1wnMVwnLCBcJzJcJywgXCczXCddYGApLiBTcGxpdHRpbmdcbiAgIGFuIGVtcHR5IHN0cmluZyB3aXRoIGEgc3BlY2lmaWVkIHNlcGFyYXRvciByZXR1cm5zIGBgW1wnXCddYGAuXG5cbiAgIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgYGBOb25lYGAsIGEgZGlmZmVyZW50IHNwbGl0dGluZ1xuICAgYWxnb3JpdGhtIGlzIGFwcGxpZWQ6IHJ1bnMgb2YgY29uc2VjdXRpdmUgd2hpdGVzcGFjZSBhcmUgcmVnYXJkZWRcbiAgIGFzIGEgc2luZ2xlIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG5vIGVtcHR5IHN0cmluZ3NcbiAgIGF0IHRoZSBzdGFydCBvciBlbmQgaWYgdGhlIHN0cmluZyBoYXMgbGVhZGluZyBvciB0cmFpbGluZ1xuICAgd2hpdGVzcGFjZS4gIENvbnNlcXVlbnRseSwgc3BsaXR0aW5nIGFuIGVtcHR5IHN0cmluZyBvciBhIHN0cmluZ1xuICAgY29uc2lzdGluZyBvZiBqdXN0IHdoaXRlc3BhY2Ugd2l0aCBhIGBgTm9uZWBgIHNlcGFyYXRvciByZXR1cm5zXG4gICBgYFtdYGAuXG5cbiAgIEZvciBleGFtcGxlLCBgYFwnIDEgIDIgICAzICBcJy5zcGxpdCgpYGAgcmV0dXJucyBgYFtcJzFcJywgXCcyXCcsIFwnM1wnXWBgLFxuICAgYW5kIGBgXCcgIDEgIDIgICAzICBcJy5zcGxpdChOb25lLCAxKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnMiAgIDMgIFwnXWBgLlxuXG5zdHIuc3BsaXRsaW5lcyhba2VlcGVuZHNdKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiB0aGUgc3RyaW5nLCBicmVha2luZyBhdCBsaW5lXG4gICBib3VuZGFyaWVzLiAgTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIGxpc3RcbiAgIHVubGVzcyAqa2VlcGVuZHMqIGlzIGdpdmVuIGFuZCB0cnVlLlxuXG5zdHIuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gYGBUcnVlYGAgaWYgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSAqcHJlZml4Kiwgb3RoZXJ3aXNlXG4gICByZXR1cm4gYGBGYWxzZWBgLiAqcHJlZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHByZWZpeGVzIHRvIGxvb2tcbiAgIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBzdHJpbmcgYmVnaW5uaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLiAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgc3RyaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLlxuXG5zdHIuc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nXG4gICBjaGFyYWN0ZXJzIHJlbW92ZWQuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlXG4gICBzZXQgb2YgY2hhcmFjdGVycyB0byBiZSByZW1vdmVkLiBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGVcbiAgICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG8gcmVtb3Zpbmcgd2hpdGVzcGFjZS4gVGhlICpjaGFycypcbiAgIGFyZ3VtZW50IGlzIG5vdCBhIHByZWZpeCBvciBzdWZmaXg7IHJhdGhlciwgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHNcbiAgIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcuc3RyaXAoKVxuICAgXCdzcGFjaW91c1wnXG4gICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5zdHJpcChcJ2Ntb3d6LlwnKVxuICAgXCdleGFtcGxlXCdcblxuc3RyLnN3YXBjYXNlKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdXBwZXJjYXNlIGNoYXJhY3RlcnMgY29udmVydGVkIHRvXG4gICBsb3dlcmNhc2UgYW5kIHZpY2UgdmVyc2EuXG5cbnN0ci50aXRsZSgpXG5cbiAgIFJldHVybiBhIHRpdGxlY2FzZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHdoZXJlIHdvcmRzIHN0YXJ0IHdpdGggYW5cbiAgIHVwcGVyY2FzZSBjaGFyYWN0ZXIgYW5kIHRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbG93ZXJjYXNlLlxuXG4gICBUaGUgYWxnb3JpdGhtIHVzZXMgYSBzaW1wbGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgZGVmaW5pdGlvbiBvZiBhXG4gICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlIGRlZmluaXRpb24gd29ya3MgaW5cbiAgIG1hbnkgY29udGV4dHMgYnV0IGl0IG1lYW5zIHRoYXQgYXBvc3Ryb3BoZXMgaW4gY29udHJhY3Rpb25zIGFuZFxuICAgcG9zc2Vzc2l2ZXMgZm9ybSB3b3JkIGJvdW5kYXJpZXMsIHdoaWNoIG1heSBub3QgYmUgdGhlIGRlc2lyZWRcbiAgIHJlc3VsdDpcblxuICAgICAgPj4+ICJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMgZnJvbSB0aGUgVUsiLnRpdGxlKClcbiAgICAgICJUaGV5XCdSZSBCaWxsXCdTIEZyaWVuZHMgRnJvbSBUaGUgVWsiXG5cbiAgIEEgd29ya2Fyb3VuZCBmb3IgYXBvc3Ryb3BoZXMgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nIHJlZ3VsYXJcbiAgIGV4cHJlc3Npb25zOlxuXG4gICAgICA+Pj4gaW1wb3J0IHJlXG4gICAgICA+Pj4gZGVmIHRpdGxlY2FzZShzKTpcbiAgICAgICAgICAgICAgcmV0dXJuIHJlLnN1YihyIltBLVphLXpdKyhcJ1tBLVphLXpdKyk/IixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgbW86IG1vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW8uZ3JvdXAoMClbMTpdLmxvd2VyKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcylcblxuICAgICAgPj4+IHRpdGxlY2FzZSgidGhleVwncmUgYmlsbFwncyBmcmllbmRzLiIpXG4gICAgICAiVGhleVwncmUgQmlsbFwncyBGcmllbmRzLiJcblxuc3RyLnRyYW5zbGF0ZShtYXApXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlICpzKiB3aGVyZSBhbGwgY2hhcmFjdGVycyBoYXZlIGJlZW4gbWFwcGVkXG4gICB0aHJvdWdoIHRoZSAqbWFwKiB3aGljaCBtdXN0IGJlIGEgZGljdGlvbmFyeSBvZiBVbmljb2RlIG9yZGluYWxzXG4gICAoaW50ZWdlcnMpIHRvIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3Mgb3IgYGBOb25lYGAuICBVbm1hcHBlZFxuICAgY2hhcmFjdGVycyBhcmUgbGVmdCB1bnRvdWNoZWQuIENoYXJhY3RlcnMgbWFwcGVkIHRvIGBgTm9uZWBgIGFyZVxuICAgZGVsZXRlZC5cblxuICAgWW91IGNhbiB1c2UgYGBzdHIubWFrZXRyYW5zKClgYCB0byBjcmVhdGUgYSB0cmFuc2xhdGlvbiBtYXAgZnJvbVxuICAgY2hhcmFjdGVyLXRvLWNoYXJhY3RlciBtYXBwaW5ncyBpbiBkaWZmZXJlbnQgZm9ybWF0cy5cblxuICAgTm90ZTogQW4gZXZlbiBtb3JlIGZsZXhpYmxlIGFwcHJvYWNoIGlzIHRvIGNyZWF0ZSBhIGN1c3RvbSBjaGFyYWN0ZXJcbiAgICAgbWFwcGluZyBjb2RlYyB1c2luZyB0aGUgYGBjb2RlY3NgYCBtb2R1bGUgKHNlZVxuICAgICBgYGVuY29kaW5ncy5jcDEyNTFgYCBmb3IgYW4gZXhhbXBsZSkuXG5cbnN0ci51cHBlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuICBOb3RlIHRoYXQgYGBzdHIudXBwZXIoKS5pc3VwcGVyKClgYCBtaWdodFxuICAgYmUgYGBGYWxzZWBgIGlmIGBgc2BgIGNvbnRhaW5zIHVuY2FzZWQgY2hhcmFjdGVycyBvciBpZiB0aGUgVW5pY29kZVxuICAgY2F0ZWdvcnkgb2YgdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgKExldHRlcixcbiAgIHVwcGVyY2FzZSksIGJ1dCBlLmcuICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cblxuc3RyLnpmaWxsKHdpZHRoKVxuXG4gICBSZXR1cm4gdGhlIG51bWVyaWMgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggemVyb3MgaW4gYSBzdHJpbmcgb2ZcbiAgIGxlbmd0aCAqd2lkdGgqLiAgQSBzaWduIHByZWZpeCBpcyBoYW5kbGVkIGNvcnJlY3RseS4gIFRoZSBvcmlnaW5hbFxuICAgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG5cblxuT2xkIFN0cmluZyBGb3JtYXR0aW5nIE9wZXJhdGlvbnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbk5vdGU6IFRoZSBmb3JtYXR0aW5nIG9wZXJhdGlvbnMgZGVzY3JpYmVkIGhlcmUgYXJlIG9ic29sZXRlIGFuZCBtYXkgZ29cbiAgYXdheSBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgUHl0aG9uLiAgVXNlIHRoZSBuZXcgKlN0cmluZyBGb3JtYXR0aW5nKlxuICBpbiBuZXcgY29kZS5cblxuU3RyaW5nIG9iamVjdHMgaGF2ZSBvbmUgdW5pcXVlIGJ1aWx0LWluIG9wZXJhdGlvbjogdGhlIGBgJWBgIG9wZXJhdG9yXG4obW9kdWxvKS4gVGhpcyBpcyBhbHNvIGtub3duIGFzIHRoZSBzdHJpbmcgKmZvcm1hdHRpbmcqIG9yXG4qaW50ZXJwb2xhdGlvbiogb3BlcmF0b3IuIEdpdmVuIGBgZm9ybWF0ICUgdmFsdWVzYGAgKHdoZXJlICpmb3JtYXQqIGlzXG5hIHN0cmluZyksIGBgJWBgIGNvbnZlcnNpb24gc3BlY2lmaWNhdGlvbnMgaW4gKmZvcm1hdCogYXJlIHJlcGxhY2VkXG53aXRoIHplcm8gb3IgbW9yZSBlbGVtZW50cyBvZiAqdmFsdWVzKi4gVGhlIGVmZmVjdCBpcyBzaW1pbGFyIHRvIHRoZVxudXNpbmcgYGBzcHJpbnRmKClgYCBpbiB0aGUgQyBsYW5ndWFnZS5cblxuSWYgKmZvcm1hdCogcmVxdWlyZXMgYSBzaW5nbGUgYXJndW1lbnQsICp2YWx1ZXMqIG1heSBiZSBhIHNpbmdsZSBub24tXG50dXBsZSBvYmplY3QuIFs1XSAgT3RoZXJ3aXNlLCAqdmFsdWVzKiBtdXN0IGJlIGEgdHVwbGUgd2l0aCBleGFjdGx5XG50aGUgbnVtYmVyIG9mIGl0ZW1zIHNwZWNpZmllZCBieSB0aGUgZm9ybWF0IHN0cmluZywgb3IgYSBzaW5nbGVcbm1hcHBpbmcgb2JqZWN0IChmb3IgZXhhbXBsZSwgYSBkaWN0aW9uYXJ5KS5cblxuQSBjb252ZXJzaW9uIHNwZWNpZmllciBjb250YWlucyB0d28gb3IgbW9yZSBjaGFyYWN0ZXJzIGFuZCBoYXMgdGhlXG5mb2xsb3dpbmcgY29tcG9uZW50cywgd2hpY2ggbXVzdCBvY2N1ciBpbiB0aGlzIG9yZGVyOlxuXG4xLiBUaGUgYGBcJyVcJ2BgIGNoYXJhY3Rlciwgd2hpY2ggbWFya3MgdGhlIHN0YXJ0IG9mIHRoZSBzcGVjaWZpZXIuXG5cbjIuIE1hcHBpbmcga2V5IChvcHRpb25hbCksIGNvbnNpc3Rpbmcgb2YgYSBwYXJlbnRoZXNpc2VkIHNlcXVlbmNlIG9mXG4gICBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSwgYGAoc29tZW5hbWUpYGApLlxuXG4zLiBDb252ZXJzaW9uIGZsYWdzIChvcHRpb25hbCksIHdoaWNoIGFmZmVjdCB0aGUgcmVzdWx0IG9mIHNvbWVcbiAgIGNvbnZlcnNpb24gdHlwZXMuXG5cbjQuIE1pbmltdW0gZmllbGQgd2lkdGggKG9wdGlvbmFsKS4gIElmIHNwZWNpZmllZCBhcyBhbiBgYFwnKlwnYGBcbiAgIChhc3RlcmlzayksIHRoZSBhY3R1YWwgd2lkdGggaXMgcmVhZCBmcm9tIHRoZSBuZXh0IGVsZW1lbnQgb2YgdGhlXG4gICB0dXBsZSBpbiAqdmFsdWVzKiwgYW5kIHRoZSBvYmplY3QgdG8gY29udmVydCBjb21lcyBhZnRlciB0aGVcbiAgIG1pbmltdW0gZmllbGQgd2lkdGggYW5kIG9wdGlvbmFsIHByZWNpc2lvbi5cblxuNS4gUHJlY2lzaW9uIChvcHRpb25hbCksIGdpdmVuIGFzIGEgYGBcJy5cJ2BgIChkb3QpIGZvbGxvd2VkIGJ5IHRoZVxuICAgcHJlY2lzaW9uLiAgSWYgc3BlY2lmaWVkIGFzIGBgXCcqXCdgYCAoYW4gYXN0ZXJpc2spLCB0aGUgYWN0dWFsXG4gICBwcmVjaXNpb24gaXMgcmVhZCBmcm9tIHRoZSBuZXh0IGVsZW1lbnQgb2YgdGhlIHR1cGxlIGluICp2YWx1ZXMqLFxuICAgYW5kIHRoZSB2YWx1ZSB0byBjb252ZXJ0IGNvbWVzIGFmdGVyIHRoZSBwcmVjaXNpb24uXG5cbjYuIExlbmd0aCBtb2RpZmllciAob3B0aW9uYWwpLlxuXG43LiBDb252ZXJzaW9uIHR5cGUuXG5cbldoZW4gdGhlIHJpZ2h0IGFyZ3VtZW50IGlzIGEgZGljdGlvbmFyeSAob3Igb3RoZXIgbWFwcGluZyB0eXBlKSwgdGhlblxudGhlIGZvcm1hdHMgaW4gdGhlIHN0cmluZyAqbXVzdCogaW5jbHVkZSBhIHBhcmVudGhlc2lzZWQgbWFwcGluZyBrZXlcbmludG8gdGhhdCBkaWN0aW9uYXJ5IGluc2VydGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBgYFwnJVwnYGAgY2hhcmFjdGVyLlxuVGhlIG1hcHBpbmcga2V5IHNlbGVjdHMgdGhlIHZhbHVlIHRvIGJlIGZvcm1hdHRlZCBmcm9tIHRoZSBtYXBwaW5nLlxuRm9yIGV4YW1wbGU6XG5cbj4+PiBwcmludChcJyUobGFuZ3VhZ2UpcyBoYXMgJShudW1iZXIpMDNkIHF1b3RlIHR5cGVzLlwnICVcbi4uLiAgICAgICB7XCdsYW5ndWFnZVwnOiAiUHl0aG9uIiwgIm51bWJlciI6IDJ9KVxuUHl0aG9uIGhhcyAwMDIgcXVvdGUgdHlwZXMuXG5cbkluIHRoaXMgY2FzZSBubyBgYCpgYCBzcGVjaWZpZXJzIG1heSBvY2N1ciBpbiBhIGZvcm1hdCAoc2luY2UgdGhleVxucmVxdWlyZSBhIHNlcXVlbnRpYWwgcGFyYW1ldGVyIGxpc3QpLlxuXG5UaGUgY29udmVyc2lvbiBmbGFnIGNoYXJhY3RlcnMgYXJlOlxuXG4rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IEZsYWcgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG58IGBgXCcjXCdgYCAgIHwgVGhlIHZhbHVlIGNvbnZlcnNpb24gd2lsbCB1c2UgdGhlICJhbHRlcm5hdGUgZm9ybSIgKHdoZXJlIGRlZmluZWQgICAgIHxcbnwgICAgICAgICAgIHwgYmVsb3cpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBcJzBcJ2BgICAgfCBUaGUgY29udmVyc2lvbiB3aWxsIGJlIHplcm8gcGFkZGVkIGZvciBudW1lcmljIHZhbHVlcy4gICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYFwnLVwnYGAgICB8IFRoZSBjb252ZXJ0ZWQgdmFsdWUgaXMgbGVmdCBhZGp1c3RlZCAob3ZlcnJpZGVzIHRoZSBgYFwnMFwnYGAgICAgICAgICAgIHxcbnwgICAgICAgICAgIHwgY29udmVyc2lvbiBpZiBib3RoIGFyZSBnaXZlbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBcJyBcJ2BgICAgfCAoYSBzcGFjZSkgQSBibGFuayBzaG91bGQgYmUgbGVmdCBiZWZvcmUgYSBwb3NpdGl2ZSBudW1iZXIgKG9yIGVtcHR5ICAgfFxufCAgICAgICAgICAgfCBzdHJpbmcpIHByb2R1Y2VkIGJ5IGEgc2lnbmVkIGNvbnZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYFwnK1wnYGAgICB8IEEgc2lnbiBjaGFyYWN0ZXIgKGBgXCcrXCdgYCBvciBgYFwnLVwnYGApIHdpbGwgcHJlY2VkZSB0aGUgY29udmVyc2lvbiAgICAgfFxufCAgICAgICAgICAgfCAob3ZlcnJpZGVzIGEgInNwYWNlIiBmbGFnKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5BIGxlbmd0aCBtb2RpZmllciAoYGBoYGAsIGBgbGBgLCBvciBgYExgYCkgbWF5IGJlIHByZXNlbnQsIGJ1dCBpc1xuaWdub3JlZCBhcyBpdCBpcyBub3QgbmVjZXNzYXJ5IGZvciBQeXRob24gLS0gc28gZS5nLiBgYCVsZGBgIGlzXG5pZGVudGljYWwgdG8gYGAlZGBgLlxuXG5UaGUgY29udmVyc2lvbiB0eXBlcyBhcmU6XG5cbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgQ29udmVyc2lvbiAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgIHxcbis9PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbnwgYGBcJ2RcJ2BgICAgICAgfCBTaWduZWQgaW50ZWdlciBkZWNpbWFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnaVwnYGAgICAgICB8IFNpZ25lZCBpbnRlZ2VyIGRlY2ltYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdvXCdgYCAgICAgIHwgU2lnbmVkIG9jdGFsIHZhbHVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoMSkgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ3VcJ2BgICAgICAgfCBPYnNvbGV0ZSB0eXBlIC0tIGl0IGlzIGlkZW50aWNhbCB0byBgYFwnZFwnYGAuICAgICAgICAgIHwgKDcpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCd4XCdgYCAgICAgIHwgU2lnbmVkIGhleGFkZWNpbWFsIChsb3dlcmNhc2UpLiAgICAgICAgICAgICAgICAgICAgICAgfCAoMikgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ1hcJ2BgICAgICAgfCBTaWduZWQgaGV4YWRlY2ltYWwgKHVwcGVyY2FzZSkuICAgICAgICAgICAgICAgICAgICAgICB8ICgyKSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnZVwnYGAgICAgICB8IEZsb2F0aW5nIHBvaW50IGV4cG9uZW50aWFsIGZvcm1hdCAobG93ZXJjYXNlKS4gICAgICAgIHwgKDMpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdFXCdgYCAgICAgIHwgRmxvYXRpbmcgcG9pbnQgZXhwb25lbnRpYWwgZm9ybWF0ICh1cHBlcmNhc2UpLiAgICAgICAgfCAoMykgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ2ZcJ2BgICAgICAgfCBGbG9hdGluZyBwb2ludCBkZWNpbWFsIGZvcm1hdC4gICAgICAgICAgICAgICAgICAgICAgICB8ICgzKSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnRlwnYGAgICAgICB8IEZsb2F0aW5nIHBvaW50IGRlY2ltYWwgZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICAgIHwgKDMpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdnXCdgYCAgICAgIHwgRmxvYXRpbmcgcG9pbnQgZm9ybWF0LiBVc2VzIGxvd2VyY2FzZSBleHBvbmVudGlhbCAgICAgfCAoNCkgICAgIHxcbnwgICAgICAgICAgICAgIHwgZm9ybWF0IGlmIGV4cG9uZW50IGlzIGxlc3MgdGhhbiAtNCBvciBub3QgbGVzcyB0aGFuICAgfCAgICAgICAgIHxcbnwgICAgICAgICAgICAgIHwgcHJlY2lzaW9uLCBkZWNpbWFsIGZvcm1hdCBvdGhlcndpc2UuICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ0dcJ2BgICAgICAgfCBGbG9hdGluZyBwb2ludCBmb3JtYXQuIFVzZXMgdXBwZXJjYXNlIGV4cG9uZW50aWFsICAgICB8ICg0KSAgICAgfFxufCAgICAgICAgICAgICAgfCBmb3JtYXQgaWYgZXhwb25lbnQgaXMgbGVzcyB0aGFuIC00IG9yIG5vdCBsZXNzIHRoYW4gICB8ICAgICAgICAgfFxufCAgICAgICAgICAgICAgfCBwcmVjaXNpb24sIGRlY2ltYWwgZm9ybWF0IG90aGVyd2lzZS4gICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnY1wnYGAgICAgICB8IFNpbmdsZSBjaGFyYWN0ZXIgKGFjY2VwdHMgaW50ZWdlciBvciBzaW5nbGUgY2hhcmFjdGVyIHwgICAgICAgICB8XG58ICAgICAgICAgICAgICB8IHN0cmluZykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdyXCdgYCAgICAgIHwgU3RyaW5nIChjb252ZXJ0cyBhbnkgUHl0aG9uIG9iamVjdCB1c2luZyBgYHJlcHIoKWBgKS4gfCAoNSkgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ3NcJ2BgICAgICAgfCBTdHJpbmcgKGNvbnZlcnRzIGFueSBQeXRob24gb2JqZWN0IHVzaW5nIGBgc3RyKClgYCkuICB8ICg1KSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnYVwnYGAgICAgICB8IFN0cmluZyAoY29udmVydHMgYW55IFB5dGhvbiBvYmplY3QgdXNpbmcgICAgICAgICAgICAgIHwgKDUpICAgICB8XG58ICAgICAgICAgICAgICB8IGBgYXNjaWkoKWBgKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCclXCdgYCAgICAgIHwgTm8gYXJndW1lbnQgaXMgY29udmVydGVkLCByZXN1bHRzIGluIGEgYGBcJyVcJ2BgICAgICAgICB8ICAgICAgICAgfFxufCAgICAgICAgICAgICAgfCBjaGFyYWN0ZXIgaW4gdGhlIHJlc3VsdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gVGhlIGFsdGVybmF0ZSBmb3JtIGNhdXNlcyBhIGxlYWRpbmcgemVybyAoYGBcJzBcJ2BgKSB0byBiZSBpbnNlcnRlZFxuICAgYmV0d2VlbiBsZWZ0LWhhbmQgcGFkZGluZyBhbmQgdGhlIGZvcm1hdHRpbmcgb2YgdGhlIG51bWJlciBpZiB0aGVcbiAgIGxlYWRpbmcgY2hhcmFjdGVyIG9mIHRoZSByZXN1bHQgaXMgbm90IGFscmVhZHkgYSB6ZXJvLlxuXG4yLiBUaGUgYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIGEgbGVhZGluZyBgYFwnMHhcJ2BgIG9yIGBgXCcwWFwnYGAgKGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGUgYGBcJ3hcJ2BgIG9yIGBgXCdYXCdgYCBmb3JtYXQgd2FzIHVzZWQpIHRvIGJlIGluc2VydGVkXG4gICBiZXR3ZWVuIGxlZnQtaGFuZCBwYWRkaW5nIGFuZCB0aGUgZm9ybWF0dGluZyBvZiB0aGUgbnVtYmVyIGlmIHRoZVxuICAgbGVhZGluZyBjaGFyYWN0ZXIgb2YgdGhlIHJlc3VsdCBpcyBub3QgYWxyZWFkeSBhIHplcm8uXG5cbjMuIFRoZSBhbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCB0byBhbHdheXMgY29udGFpbiBhIGRlY2ltYWxcbiAgIHBvaW50LCBldmVuIGlmIG5vIGRpZ2l0cyBmb2xsb3cgaXQuXG5cbiAgIFRoZSBwcmVjaXNpb24gZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbFxuICAgcG9pbnQgYW5kIGRlZmF1bHRzIHRvIDYuXG5cbjQuIFRoZSBhbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCB0byBhbHdheXMgY29udGFpbiBhIGRlY2ltYWxcbiAgIHBvaW50LCBhbmQgdHJhaWxpbmcgemVyb2VzIGFyZSBub3QgcmVtb3ZlZCBhcyB0aGV5IHdvdWxkIG90aGVyd2lzZVxuICAgYmUuXG5cbiAgIFRoZSBwcmVjaXNpb24gZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cyBiZWZvcmVcbiAgIGFuZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBhbmQgZGVmYXVsdHMgdG8gNi5cblxuNS4gSWYgcHJlY2lzaW9uIGlzIGBgTmBgLCB0aGUgb3V0cHV0IGlzIHRydW5jYXRlZCB0byBgYE5gYCBjaGFyYWN0ZXJzLlxuXG4xLiBTZWUgKipQRVAgMjM3KiouXG5cblNpbmNlIFB5dGhvbiBzdHJpbmdzIGhhdmUgYW4gZXhwbGljaXQgbGVuZ3RoLCBgYCVzYGAgY29udmVyc2lvbnMgZG9cbm5vdCBhc3N1bWUgdGhhdCBgYFwnXFwwXCdgYCBpcyB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IGBgJWZgYCBjb252ZXJzaW9ucyBmb3IgbnVtYmVycyB3aG9zZSBhYnNvbHV0ZVxudmFsdWUgaXMgb3ZlciAxZTUwIGFyZSBubyBsb25nZXIgcmVwbGFjZWQgYnkgYGAlZ2BgIGNvbnZlcnNpb25zLlxuXG5BZGRpdGlvbmFsIHN0cmluZyBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIGluIHN0YW5kYXJkIG1vZHVsZXNcbmBgc3RyaW5nYGAgYW5kIGBgcmVgYC5cblxuXG5SYW5nZSBUeXBlXG49PT09PT09PT09XG5cblRoZSBgYHJhbmdlYGAgdHlwZSBpcyBhbiBpbW11dGFibGUgc2VxdWVuY2Ugd2hpY2ggaXMgY29tbW9ubHkgdXNlZCBmb3Jcbmxvb3BpbmcuICBUaGUgYWR2YW50YWdlIG9mIHRoZSBgYHJhbmdlYGAgdHlwZSBpcyB0aGF0IGFuIGBgcmFuZ2VgYFxub2JqZWN0IHdpbGwgYWx3YXlzIHRha2UgdGhlIHNhbWUgYW1vdW50IG9mIG1lbW9yeSwgbm8gbWF0dGVyIHRoZSBzaXplXG5vZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cy5cblxuUmFuZ2Ugb2JqZWN0cyBoYXZlIHJlbGF0aXZlbHkgbGl0dGxlIGJlaGF2aW9yOiB0aGV5IHN1cHBvcnQgaW5kZXhpbmcsXG5jb250YWlucywgaXRlcmF0aW9uLCB0aGUgYGBsZW4oKWBgIGZ1bmN0aW9uLCBhbmQgdGhlIGZvbGxvd2luZ1xubWV0aG9kczpcblxucmFuZ2UuY291bnQoeClcblxuICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgKmkqXCdzIGZvciB3aGljaCBgYHNbaV0gPT0geGBgLlxuXG4gICAgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbnJhbmdlLmluZGV4KHgpXG5cbiAgIFJldHVybiB0aGUgc21hbGxlc3QgKmkqIHN1Y2ggdGhhdCBgYHNbaV0gPT0geGBgLiAgUmFpc2VzXG4gICBgYFZhbHVlRXJyb3JgYCB3aGVuICp4KiBpcyBub3QgaW4gdGhlIHJhbmdlLlxuXG4gICAgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cblxuTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuPT09PT09PT09PT09PT09PT09PT09PVxuXG5MaXN0IGFuZCBieXRlYXJyYXkgb2JqZWN0cyBzdXBwb3J0IGFkZGl0aW9uYWwgb3BlcmF0aW9ucyB0aGF0IGFsbG93XG5pbi1wbGFjZSBtb2RpZmljYXRpb24gb2YgdGhlIG9iamVjdC4gIE90aGVyIG11dGFibGUgc2VxdWVuY2UgdHlwZXNcbih3aGVuIGFkZGVkIHRvIHRoZSBsYW5ndWFnZSkgc2hvdWxkIGFsc28gc3VwcG9ydCB0aGVzZSBvcGVyYXRpb25zLlxuU3RyaW5ncyBhbmQgdHVwbGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2UgdHlwZXM6IHN1Y2ggb2JqZWN0cyBjYW5ub3RcbmJlIG1vZGlmaWVkIG9uY2UgY3JlYXRlZC4gVGhlIGZvbGxvd2luZyBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIG9uXG5tdXRhYmxlIHNlcXVlbmNlIHR5cGVzICh3aGVyZSAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCkuXG5cbk5vdGUgdGhhdCB3aGlsZSBsaXN0cyBhbGxvdyB0aGVpciBpdGVtcyB0byBiZSBvZiBhbnkgdHlwZSwgYnl0ZWFycmF5XG5vYmplY3QgIml0ZW1zIiBhcmUgYWxsIGludGVnZXJzIGluIHRoZSByYW5nZSAwIDw9IHggPCAyNTYuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PStcbnwgYGBzW2ldID0geGBgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzW2k6al0gPSB0YGAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGRlbCBzW2k6al1gYCAgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmpdID0gW11gYCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzW2k6ajprXSA9IHRgYCAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mIGBgc1tpOmo6a11gYCBhcmUgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBkZWwgc1tpOmo6a11gYCAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbaTpqOmtdYGAgZnJvbSB0aGUgbGlzdCAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmFwcGVuZCh4KWBgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbbGVuKHMpOmxlbihzKV0gPSAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbeF1gYCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmV4dGVuZCh4KWBgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbbGVuKHMpOmxlbihzKV0gPSB4YGAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jb3VudCh4KWBgICAgICAgICAgICAgICAgICB8IHJldHVybiBudW1iZXIgb2YgKmkqXCdzIGZvciB3aGljaCB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpXSA9PSB4YGAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5kZXgoeFssIGlbLCBqXV0pYGAgICAgICAgfCByZXR1cm4gc21hbGxlc3QgKmsqIHN1Y2ggdGhhdCAgICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1trXSA9PSB4YGAgYW5kIGBgaSA8PSBrIDwgamBgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5zZXJ0KGksIHgpYGAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmldID0gW3hdYGAgICAgICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLnBvcChbaV0pYGAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHggPSBzW2ldOyBkZWwgc1tpXTsgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXR1cm4geGBgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLnJlbW92ZSh4KWBgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYGRlbCBzW3MuaW5kZXgoeCldYGAgICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZXZlcnNlKClgYCAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICAgIHwgKDYpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5zb3J0KFtrZXlbLCByZXZlcnNlXV0pYGAgICB8IHNvcnQgdGhlIGl0ZW1zIG9mICpzKiBpbiBwbGFjZSAgIHwgKDYpLCAoNyksICg4KSAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy5cblxuMi4gKngqIGNhbiBiZSBhbnkgaXRlcmFibGUgb2JqZWN0LlxuXG4zLiBSYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi4gV2hlbiBhIG5lZ2F0aXZlXG4gICBpbmRleCBpcyBwYXNzZWQgYXMgdGhlIHNlY29uZCBvciB0aGlyZCBwYXJhbWV0ZXIgdG8gdGhlIGBgaW5kZXgoKWBgXG4gICBtZXRob2QsIHRoZSBzZXF1ZW5jZSBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZSBpbmRpY2VzLiAgSWYgaXRcbiAgIGlzIHN0aWxsIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgZm9yIHNsaWNlIGluZGljZXMuXG5cbjQuIFdoZW4gYSBuZWdhdGl2ZSBpbmRleCBpcyBwYXNzZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlciB0byB0aGVcbiAgIGBgaW5zZXJ0KClgYCBtZXRob2QsIHRoZSBzZXF1ZW5jZSBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZVxuICAgaW5kaWNlcy4gIElmIGl0IGlzIHN0aWxsIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgZm9yXG4gICBzbGljZSBpbmRpY2VzLlxuXG41LiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvIGBgLTFgYCwgc28gdGhhdCBieSBkZWZhdWx0XG4gICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuXG42LiBUaGUgYGBzb3J0KClgYCBhbmQgYGByZXZlcnNlKClgYCBtZXRob2RzIG1vZGlmeSB0aGUgc2VxdWVuY2UgaW5cbiAgIHBsYWNlIGZvciBlY29ub215IG9mIHNwYWNlIHdoZW4gc29ydGluZyBvciByZXZlcnNpbmcgYSBsYXJnZVxuICAgc2VxdWVuY2UuICBUbyByZW1pbmQgeW91IHRoYXQgdGhleSBvcGVyYXRlIGJ5IHNpZGUgZWZmZWN0LCB0aGV5XG4gICBkb25cJ3QgcmV0dXJuIHRoZSBzb3J0ZWQgb3IgcmV2ZXJzZWQgc2VxdWVuY2UuXG5cbjcuIFRoZSBgYHNvcnQoKWBgIG1ldGhvZCB0YWtlcyBvcHRpb25hbCBhcmd1bWVudHMgZm9yIGNvbnRyb2xsaW5nIHRoZVxuICAgY29tcGFyaXNvbnMuICBFYWNoIG11c3QgYmUgc3BlY2lmaWVkIGFzIGEga2V5d29yZCBhcmd1bWVudC5cblxuICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0byBleHRyYWN0XG4gICBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQ6IGBga2V5PXN0ci5sb3dlcmBgLiAgVGhlXG4gICBkZWZhdWx0IHZhbHVlIGlzIGBgTm9uZWBgLiBVc2UgYGBmdW5jdG9vbHMuY21wX3RvX2tleSgpYGAgdG9cbiAgIGNvbnZlcnQgYW4gb2xkLXN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uXG5cbiAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gdGhlIGxpc3RcbiAgIGVsZW1lbnRzIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuXG5cbiAgIFRoZSBgYHNvcnQoKWBgIG1ldGhvZCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4gIEEgc29ydCBpcyBzdGFibGVcbiAgIGlmIGl0IGd1YXJhbnRlZXMgbm90IHRvIGNoYW5nZSB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgZWxlbWVudHMgdGhhdFxuICAgY29tcGFyZSBlcXVhbCAtLS0gdGhpcyBpcyBoZWxwZnVsIGZvciBzb3J0aW5nIGluIG11bHRpcGxlIHBhc3Nlc1xuICAgKGZvciBleGFtcGxlLCBzb3J0IGJ5IGRlcGFydG1lbnQsIHRoZW4gYnkgc2FsYXJ5IGdyYWRlKS5cblxuICAgKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBXaGlsZSBhIGxpc3QgaXMgYmVpbmcgc29ydGVkLFxuICAgdGhlIGVmZmVjdCBvZiBhdHRlbXB0aW5nIHRvIG11dGF0ZSwgb3IgZXZlbiBpbnNwZWN0LCB0aGUgbGlzdCBpc1xuICAgdW5kZWZpbmVkLiAgVGhlIEMgaW1wbGVtZW50YXRpb24gb2YgUHl0aG9uIG1ha2VzIHRoZSBsaXN0IGFwcGVhclxuICAgZW1wdHkgZm9yIHRoZSBkdXJhdGlvbiwgYW5kIHJhaXNlcyBgYFZhbHVlRXJyb3JgYCBpZiBpdCBjYW4gZGV0ZWN0XG4gICB0aGF0IHRoZSBsaXN0IGhhcyBiZWVuIG11dGF0ZWQgZHVyaW5nIGEgc29ydC5cblxuOC4gYGBzb3J0KClgYCBpcyBub3Qgc3VwcG9ydGVkIGJ5IGBgYnl0ZWFycmF5YGAgb2JqZWN0cy5cblxuXG5CeXRlcyBhbmQgQnl0ZSBBcnJheSBNZXRob2RzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cywgYmVpbmcgInN0cmluZ3Mgb2YgYnl0ZXMiLCBoYXZlIGFsbFxubWV0aG9kcyBmb3VuZCBvbiBzdHJpbmdzLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgYGBlbmNvZGUoKWBgLFxuYGBmb3JtYXQoKWBgIGFuZCBgYGlzaWRlbnRpZmllcigpYGAsIHdoaWNoIGRvIG5vdCBtYWtlIHNlbnNlIHdpdGhcbnRoZXNlIHR5cGVzLiAgRm9yIGNvbnZlcnRpbmcgdGhlIG9iamVjdHMgdG8gc3RyaW5ncywgdGhleSBoYXZlIGFcbmBgZGVjb2RlKClgYCBtZXRob2QuXG5cbldoZXJldmVyIG9uZSBvZiB0aGVzZSBtZXRob2RzIG5lZWRzIHRvIGludGVycHJldCB0aGUgYnl0ZXMgYXNcbmNoYXJhY3RlcnMgKGUuZy4gdGhlIGBgaXMuLi4oKWBgIG1ldGhvZHMpLCB0aGUgQVNDSUkgY2hhcmFjdGVyIHNldCBpc1xuYXNzdW1lZC5cblxuTm90ZTogVGhlIG1ldGhvZHMgb24gYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIGRvblwndCBhY2NlcHQgc3RyaW5ncyBhc1xuICB0aGVpciBhcmd1bWVudHMsIGp1c3QgYXMgdGhlIG1ldGhvZHMgb24gc3RyaW5ncyBkb25cJ3QgYWNjZXB0IGJ5dGVzXG4gIGFzIHRoZWlyIGFyZ3VtZW50cy4gIEZvciBleGFtcGxlLCB5b3UgaGF2ZSB0byB3cml0ZVxuXG4gICAgIGEgPSAiYWJjIlxuICAgICBiID0gYS5yZXBsYWNlKCJhIiwgImYiKVxuXG4gIGFuZFxuXG4gICAgIGEgPSBiImFiYyJcbiAgICAgYiA9IGEucmVwbGFjZShiImEiLCBiImYiKVxuXG5ieXRlcy5kZWNvZGUoZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSJzdHJpY3QiKVxuYnl0ZWFycmF5LmRlY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpXG5cbiAgIFJldHVybiBhIHN0cmluZyBkZWNvZGVkIGZyb20gdGhlIGdpdmVuIGJ5dGVzLiAgRGVmYXVsdCBlbmNvZGluZyBpc1xuICAgYGBcJ3V0Zi04XCdgYC4gKmVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudCBlcnJvclxuICAgaGFuZGxpbmcgc2NoZW1lLiAgVGhlIGRlZmF1bHQgZm9yICplcnJvcnMqIGlzIGBgXCdzdHJpY3RcJ2BgLCBtZWFuaW5nXG4gICB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhIGBgVW5pY29kZUVycm9yYGAuICBPdGhlciBwb3NzaWJsZVxuICAgdmFsdWVzIGFyZSBgYFwnaWdub3JlXCdgYCwgYGBcJ3JlcGxhY2VcJ2BgIGFuZCBhbnkgb3RoZXIgbmFtZVxuICAgcmVnaXN0ZXJlZCB2aWEgYGBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKWBgLCBzZWUgc2VjdGlvbiAqQ29kZWMgQmFzZVxuICAgQ2xhc3NlcyouIEZvciBhIGxpc3Qgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmRcbiAgIEVuY29kaW5ncyouXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IEFkZGVkIHN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzLlxuXG5UaGUgYnl0ZXMgYW5kIGJ5dGVhcnJheSB0eXBlcyBoYXZlIGFuIGFkZGl0aW9uYWwgY2xhc3MgbWV0aG9kOlxuXG5jbGFzc21ldGhvZCBieXRlcy5mcm9taGV4KHN0cmluZylcbmNsYXNzbWV0aG9kIGJ5dGVhcnJheS5mcm9taGV4KHN0cmluZylcblxuICAgVGhpcyBgYGJ5dGVzYGAgY2xhc3MgbWV0aG9kIHJldHVybnMgYSBieXRlcyBvciBieXRlYXJyYXkgb2JqZWN0LFxuICAgZGVjb2RpbmcgdGhlIGdpdmVuIHN0cmluZyBvYmplY3QuICBUaGUgc3RyaW5nIG11c3QgY29udGFpbiB0d29cbiAgIGhleGFkZWNpbWFsIGRpZ2l0cyBwZXIgYnl0ZSwgc3BhY2VzIGFyZSBpZ25vcmVkLlxuXG4gICA+Pj4gYnl0ZXMuZnJvbWhleChcJ2YwIGYxZjIgIFwnKVxuICAgYlwnXFx4ZjBcXHhmMVxceGYyXCdcblxuVGhlIG1ha2V0cmFucyBhbmQgdHJhbnNsYXRlIG1ldGhvZHMgZGlmZmVyIGluIHNlbWFudGljcyBmcm9tIHRoZVxudmVyc2lvbnMgYXZhaWxhYmxlIG9uIHN0cmluZ3M6XG5cbmJ5dGVzLnRyYW5zbGF0ZSh0YWJsZVssIGRlbGV0ZV0pXG5ieXRlYXJyYXkudHJhbnNsYXRlKHRhYmxlWywgZGVsZXRlXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCB3aGVyZSBhbGwgYnl0ZXNcbiAgIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmRlbGV0ZSogYXJlIHJlbW92ZWQsIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBieXRlcyBoYXZlIGJlZW4gbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uXG4gICB0YWJsZSwgd2hpY2ggbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBvZiBsZW5ndGggMjU2LlxuXG4gICBZb3UgY2FuIHVzZSB0aGUgYGBieXRlcy5tYWtldHJhbnMoKWBgIG1ldGhvZCB0byBjcmVhdGUgYVxuICAgdHJhbnNsYXRpb24gdGFibGUuXG5cbiAgIFNldCB0aGUgKnRhYmxlKiBhcmd1bWVudCB0byBgYE5vbmVgYCBmb3IgdHJhbnNsYXRpb25zIHRoYXQgb25seVxuICAgZGVsZXRlIGNoYXJhY3RlcnM6XG5cbiAgICAgID4+PiBiXCdyZWFkIHRoaXMgc2hvcnQgdGV4dFwnLnRyYW5zbGF0ZShOb25lLCBiXCdhZWlvdVwnKVxuICAgICAgYlwncmQgdGhzIHNocnQgdHh0XCdcblxuc3RhdGljIGJ5dGVzLm1ha2V0cmFucyhmcm9tLCB0bylcbnN0YXRpYyBieXRlYXJyYXkubWFrZXRyYW5zKGZyb20sIHRvKVxuXG4gICBUaGlzIHN0YXRpYyBtZXRob2QgcmV0dXJucyBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSBmb3JcbiAgIGBgYnl0ZXMudHJhbnNsYXRlKClgYCB0aGF0IHdpbGwgbWFwIGVhY2ggY2hhcmFjdGVyIGluICpmcm9tKiBpbnRvXG4gICB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGluICp0byo7ICpmcm9tKiBhbmQgKnRvKiBtdXN0IGJlXG4gICBieXRlcyBvYmplY3RzIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4xLlxuJywKLSAndHlwZXNzZXEtbXV0YWJsZSc6ICdcbk11dGFibGUgU2VxdWVuY2UgVHlwZXNcbioqKioqKioqKioqKioqKioqKioqKipcblxuTGlzdCBhbmQgYnl0ZWFycmF5IG9iamVjdHMgc3VwcG9ydCBhZGRpdGlvbmFsIG9wZXJhdGlvbnMgdGhhdCBhbGxvd1xuaW4tcGxhY2UgbW9kaWZpY2F0aW9uIG9mIHRoZSBvYmplY3QuICBPdGhlciBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzXG4od2hlbiBhZGRlZCB0byB0aGUgbGFuZ3VhZ2UpIHNob3VsZCBhbHNvIHN1cHBvcnQgdGhlc2Ugb3BlcmF0aW9ucy5cblN0cmluZ3MgYW5kIHR1cGxlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzOiBzdWNoIG9iamVjdHMgY2Fubm90XG5iZSBtb2RpZmllZCBvbmNlIGNyZWF0ZWQuIFRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucyBhcmUgZGVmaW5lZCBvblxubXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyAod2hlcmUgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QpLlxuXG5Ob3RlIHRoYXQgd2hpbGUgbGlzdHMgYWxsb3cgdGhlaXIgaXRlbXMgdG8gYmUgb2YgYW55IHR5cGUsIGJ5dGVhcnJheVxub2JqZWN0ICJpdGVtcyIgYXJlIGFsbCBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgMjU2LlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG58IGBgc1tpXSA9IHhgYCAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgc1tpOmpdID0gdGBgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBkZWwgc1tpOmpdYGAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbaTpqXSA9IFtdYGAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgc1tpOmo6a10gPSB0YGAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiBgYHNbaTpqOmtdYGAgYXJlIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgZGVsIHNbaTpqOmtdYGAgICAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzIG9mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2k6ajprXWBgIGZyb20gdGhlIGxpc3QgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5hcHBlbmQoeClgYCAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2xlbihzKTpsZW4ocyldID0gICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW3hdYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5leHRlbmQoeClgYCAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2xlbihzKTpsZW4ocyldID0geGBgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuY291bnQoeClgYCAgICAgICAgICAgICAgICAgfCByZXR1cm4gbnVtYmVyIG9mICppKlwncyBmb3Igd2hpY2ggfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbaV0gPT0geGBgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmluZGV4KHhbLCBpWywgal1dKWBgICAgICAgIHwgcmV0dXJuIHNtYWxsZXN0ICprKiBzdWNoIHRoYXQgICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNba10gPT0geGBgIGFuZCBgYGkgPD0gayA8IGpgYCB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmluc2VydChpLCB4KWBgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbaTppXSA9IFt4XWBgICAgICAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5wb3AoW2ldKWBgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGB4ID0gc1tpXTsgZGVsIHNbaV07ICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmV0dXJuIHhgYCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZW1vdmUoeClgYCAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBkZWwgc1tzLmluZGV4KHgpXWBgICAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmV2ZXJzZSgpYGAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgKnMqIGluICAgICB8ICg2KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuc29ydChba2V5WywgcmV2ZXJzZV1dKWBgICAgfCBzb3J0IHRoZSBpdGVtcyBvZiAqcyogaW4gcGxhY2UgICB8ICg2KSwgKDcpLCAoOCkgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyByZXBsYWNpbmcuXG5cbjIuICp4KiBjYW4gYmUgYW55IGl0ZXJhYmxlIG9iamVjdC5cblxuMy4gUmFpc2VzIGBgVmFsdWVFcnJvcmBgIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouIFdoZW4gYSBuZWdhdGl2ZVxuICAgaW5kZXggaXMgcGFzc2VkIGFzIHRoZSBzZWNvbmQgb3IgdGhpcmQgcGFyYW1ldGVyIHRvIHRoZSBgYGluZGV4KClgYFxuICAgbWV0aG9kLCB0aGUgc2VxdWVuY2UgbGVuZ3RoIGlzIGFkZGVkLCBhcyBmb3Igc2xpY2UgaW5kaWNlcy4gIElmIGl0XG4gICBpcyBzdGlsbCBuZWdhdGl2ZSwgaXQgaXMgdHJ1bmNhdGVkIHRvIHplcm8sIGFzIGZvciBzbGljZSBpbmRpY2VzLlxuXG40LiBXaGVuIGEgbmVnYXRpdmUgaW5kZXggaXMgcGFzc2VkIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8gdGhlXG4gICBgYGluc2VydCgpYGAgbWV0aG9kLCB0aGUgc2VxdWVuY2UgbGVuZ3RoIGlzIGFkZGVkLCBhcyBmb3Igc2xpY2VcbiAgIGluZGljZXMuICBJZiBpdCBpcyBzdGlsbCBuZWdhdGl2ZSwgaXQgaXMgdHJ1bmNhdGVkIHRvIHplcm8sIGFzIGZvclxuICAgc2xpY2UgaW5kaWNlcy5cblxuNS4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byBgYC0xYGAsIHNvIHRoYXQgYnkgZGVmYXVsdFxuICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cblxuNi4gVGhlIGBgc29ydCgpYGAgYW5kIGBgcmV2ZXJzZSgpYGAgbWV0aG9kcyBtb2RpZnkgdGhlIHNlcXVlbmNlIGluXG4gICBwbGFjZSBmb3IgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHNvcnRpbmcgb3IgcmV2ZXJzaW5nIGEgbGFyZ2VcbiAgIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHlvdSB0aGF0IHRoZXkgb3BlcmF0ZSBieSBzaWRlIGVmZmVjdCwgdGhleVxuICAgZG9uXCd0IHJldHVybiB0aGUgc29ydGVkIG9yIHJldmVyc2VkIHNlcXVlbmNlLlxuXG43LiBUaGUgYGBzb3J0KClgYCBtZXRob2QgdGFrZXMgb3B0aW9uYWwgYXJndW1lbnRzIGZvciBjb250cm9sbGluZyB0aGVcbiAgIGNvbXBhcmlzb25zLiAgRWFjaCBtdXN0IGJlIHNwZWNpZmllZCBhcyBhIGtleXdvcmQgYXJndW1lbnQuXG5cbiAgICprZXkqIHNwZWNpZmllcyBhIGZ1bmN0aW9uIG9mIG9uZSBhcmd1bWVudCB0aGF0IGlzIHVzZWQgdG8gZXh0cmFjdFxuICAgYSBjb21wYXJpc29uIGtleSBmcm9tIGVhY2ggbGlzdCBlbGVtZW50OiBgYGtleT1zdHIubG93ZXJgYC4gIFRoZVxuICAgZGVmYXVsdCB2YWx1ZSBpcyBgYE5vbmVgYC4gVXNlIGBgZnVuY3Rvb2xzLmNtcF90b19rZXkoKWBgIHRvXG4gICBjb252ZXJ0IGFuIG9sZC1zdHlsZSAqY21wKiBmdW5jdGlvbiB0byBhICprZXkqIGZ1bmN0aW9uLlxuXG4gICAqcmV2ZXJzZSogaXMgYSBib29sZWFuIHZhbHVlLiAgSWYgc2V0IHRvIGBgVHJ1ZWBgLCB0aGVuIHRoZSBsaXN0XG4gICBlbGVtZW50cyBhcmUgc29ydGVkIGFzIGlmIGVhY2ggY29tcGFyaXNvbiB3ZXJlIHJldmVyc2VkLlxuXG4gICBUaGUgYGBzb3J0KClgYCBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBIHNvcnQgaXMgc3RhYmxlXG4gICBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIGVsZW1lbnRzIHRoYXRcbiAgIGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3Igc29ydGluZyBpbiBtdWx0aXBsZSBwYXNzZXNcbiAgIChmb3IgZXhhbXBsZSwgc29ydCBieSBkZXBhcnRtZW50LCB0aGVuIGJ5IHNhbGFyeSBncmFkZSkuXG5cbiAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogV2hpbGUgYSBsaXN0IGlzIGJlaW5nIHNvcnRlZCxcbiAgIHRoZSBlZmZlY3Qgb2YgYXR0ZW1wdGluZyB0byBtdXRhdGUsIG9yIGV2ZW4gaW5zcGVjdCwgdGhlIGxpc3QgaXNcbiAgIHVuZGVmaW5lZC4gIFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBtYWtlcyB0aGUgbGlzdCBhcHBlYXJcbiAgIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgaWYgaXQgY2FuIGRldGVjdFxuICAgdGhhdCB0aGUgbGlzdCBoYXMgYmVlbiBtdXRhdGVkIGR1cmluZyBhIHNvcnQuXG5cbjguIGBgc29ydCgpYGAgaXMgbm90IHN1cHBvcnRlZCBieSBgYGJ5dGVhcnJheWBgIG9iamVjdHMuXG4nLAorICd0eXBlc3NlcSc6ICdcblNlcXVlbmNlIFR5cGVzIC0tLSBgYGxpc3RgYCwgYGB0dXBsZWBgLCBgYHJhbmdlYGBcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHRocmVlIGJhc2ljIHNlcXVlbmNlIHR5cGVzOiBsaXN0cywgdHVwbGVzLCBhbmQgcmFuZ2Vcbm9iamVjdHMuIEFkZGl0aW9uYWwgc2VxdWVuY2UgdHlwZXMgdGFpbG9yZWQgZm9yIHByb2Nlc3Npbmcgb2YgKmJpbmFyeVxuZGF0YSogYW5kICp0ZXh0IHN0cmluZ3MqIGFyZSBkZXNjcmliZWQgaW4gZGVkaWNhdGVkIHNlY3Rpb25zLlxuXG5cbkNvbW1vbiBTZXF1ZW5jZSBPcGVyYXRpb25zXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBzdXBwb3J0ZWQgYnkgbW9zdCBzZXF1ZW5jZVxudHlwZXMsIGJvdGggbXV0YWJsZSBhbmQgaW1tdXRhYmxlLiBUaGUgYGBjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2VgYFxuQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2Vcbm9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlIHR5cGVzLlxuXG5UaGlzIHRhYmxlIGxpc3RzIHRoZSBzZXF1ZW5jZSBvcGVyYXRpb25zIHNvcnRlZCBpbiBhc2NlbmRpbmcgcHJpb3JpdHlcbihvcGVyYXRpb25zIGluIHRoZSBzYW1lIGJveCBoYXZlIHRoZSBzYW1lIHByaW9yaXR5KS4gIEluIHRoZSB0YWJsZSxcbipzKiBhbmQgKnQqIGFyZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSwgKm4qLCAqaSosICpqKiBhbmQgKmsqIGFyZVxuaW50ZWdlcnMgYW5kICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgbWVldHMgYW55IHR5cGUgYW5kIHZhbHVlXG5yZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyouXG5cblRoZSBgYGluYGAgYW5kIGBgbm90IGluYGAgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXRpZXMgYXMgdGhlXG5jb21wYXJpc29uIG9wZXJhdGlvbnMuIFRoZSBgYCtgYCAoY29uY2F0ZW5hdGlvbikgYW5kIGBgKmBgXG4ocmVwZXRpdGlvbikgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGFzIHRoZSBjb3JyZXNwb25kaW5nXG5udW1lcmljIG9wZXJhdGlvbnMuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PStcbnwgYGB4IGluIHNgYCAgICAgICAgICAgICAgICAgfCBgYFRydWVgYCBpZiBhbiBpdGVtIG9mICpzKiBpcyAgICB8ICgxKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSBgYEZhbHNlYGAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGB4IG5vdCBpbiBzYGAgICAgICAgICAgICAgfCBgYEZhbHNlYGAgaWYgYW4gaXRlbSBvZiAqcyogaXMgICB8ICgxKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSBgYFRydWVgYCAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzICsgdGBgICAgICAgICAgICAgICAgICAgfCB0aGUgY29uY2F0ZW5hdGlvbiBvZiAqcyogYW5kICp0KiB8ICg2KSg3KSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgcyAqIG5gYCBvciBgYG4gKiBzYGAgICAgIHwgKm4qIHNoYWxsb3cgY29waWVzIG9mICpzKiAgICAgICAgfCAoMikoNykgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjb25jYXRlbmF0ZWQgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgc1tpXWBgICAgICAgICAgICAgICAgICAgIHwgKmkqdGggaXRlbSBvZiAqcyosIG9yaWdpbiAwICAgICAgfCAoMykgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqXWBgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgIHwgKDMpKDQpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzW2k6ajprXWBgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICB8ICgzKSg1KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdpdGggc3RlcCAqayogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBsZW4ocylgYCAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgKnMqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgbWluKHMpYGAgICAgICAgICAgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYG1heChzKWBgICAgICAgICAgICAgICAgICB8IGxhcmdlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzLmluZGV4KHhbLCBpWywgal1dKWBgICAgfCBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mICB8ICg4KSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiBpbiAqcyogKGF0IG9yIGFmdGVyIGluZGV4ICAgIHwgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKmkqIGFuZCBiZWZvcmUgaW5kZXggKmoqKSAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHMuY291bnQoeClgYCAgICAgICAgICAgICB8IHRvdGFsIG51bWJlciBvZiBvY2N1cmVuY2VzIG9mICAgIHwgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuXG5TZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSBhbHNvIHN1cHBvcnQgY29tcGFyaXNvbnMuICBJbiBwYXJ0aWN1bGFyLFxudHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgY29tcGFyaW5nXG5jb3JyZXNwb25kaW5nIGVsZW1lbnRzLiBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgZXZlcnlcbmVsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUgdHdvIHNlcXVlbmNlcyBtdXN0IGJlIG9mIHRoZSBzYW1lXG50eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4gIChGb3IgZnVsbCBkZXRhaWxzIHNlZSAqQ29tcGFyaXNvbnMqIGluXG50aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlLilcblxuTm90ZXM6XG5cbjEuIFdoaWxlIHRoZSBgYGluYGAgYW5kIGBgbm90IGluYGAgb3BlcmF0aW9ucyBhcmUgdXNlZCBvbmx5IGZvciBzaW1wbGVcbiAgIGNvbnRhaW5tZW50IHRlc3RpbmcgaW4gdGhlIGdlbmVyYWwgY2FzZSwgc29tZSBzcGVjaWFsaXNlZCBzZXF1ZW5jZXNcbiAgIChzdWNoIGFzIGBgc3RyYGAsIGBgYnl0ZXNgYCBhbmQgYGBieXRlYXJyYXlgYCkgYWxzbyB1c2UgdGhlbSBmb3JcbiAgIHN1YnNlcXVlbmNlIHRlc3Rpbmc6XG5cbiAgICAgID4+PiAiZ2ciIGluICJlZ2dzIlxuICAgICAgVHJ1ZVxuXG4yLiBWYWx1ZXMgb2YgKm4qIGxlc3MgdGhhbiBgYDBgYCBhcmUgdHJlYXRlZCBhcyBgYDBgYCAod2hpY2ggeWllbGRzIGFuXG4gICBlbXB0eSBzZXF1ZW5jZSBvZiB0aGUgc2FtZSB0eXBlIGFzICpzKikuICBOb3RlIGFsc28gdGhhdCB0aGUgY29waWVzXG4gICBhcmUgc2hhbGxvdzsgbmVzdGVkIHN0cnVjdHVyZXMgYXJlIG5vdCBjb3BpZWQuICBUaGlzIG9mdGVuIGhhdW50c1xuICAgbmV3IFB5dGhvbiBwcm9ncmFtbWVyczsgY29uc2lkZXI6XG5cbiAgICAgID4+PiBsaXN0cyA9IFtbXV0gKiAzXG4gICAgICA+Pj4gbGlzdHNcbiAgICAgIFtbXSwgW10sIFtdXVxuICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuICAgICAgPj4+IGxpc3RzXG4gICAgICBbWzNdLCBbM10sIFszXV1cblxuICAgV2hhdCBoYXMgaGFwcGVuZWQgaXMgdGhhdCBgYFtbXV1gYCBpcyBhIG9uZS1lbGVtZW50IGxpc3QgY29udGFpbmluZ1xuICAgYW4gZW1wdHkgbGlzdCwgc28gYWxsIHRocmVlIGVsZW1lbnRzIG9mIGBgW1tdXSAqIDNgYCBhcmUgKHBvaW50ZXJzXG4gICB0bykgdGhpcyBzaW5nbGUgZW1wdHkgbGlzdC4gIE1vZGlmeWluZyBhbnkgb2YgdGhlIGVsZW1lbnRzIG9mXG4gICBgYGxpc3RzYGAgbW9kaWZpZXMgdGhpcyBzaW5nbGUgbGlzdC4gWW91IGNhbiBjcmVhdGUgYSBsaXN0IG9mXG4gICBkaWZmZXJlbnQgbGlzdHMgdGhpcyB3YXk6XG5cbiAgICAgID4+PiBsaXN0cyA9IFtbXSBmb3IgaSBpbiByYW5nZSgzKV1cbiAgICAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbiAgICAgID4+PiBsaXN0c1sxXS5hcHBlbmQoNSlcbiAgICAgID4+PiBsaXN0c1syXS5hcHBlbmQoNylcbiAgICAgID4+PiBsaXN0c1xuICAgICAgW1szXSwgWzVdLCBbN11dXG5cbjMuIElmICppKiBvciAqaiogaXMgbmVnYXRpdmUsIHRoZSBpbmRleCBpcyByZWxhdGl2ZSB0byB0aGUgZW5kIG9mIHRoZVxuICAgc3RyaW5nOiBgYGxlbihzKSArIGlgYCBvciBgYGxlbihzKSArIGpgYCBpcyBzdWJzdGl0dXRlZC4gIEJ1dCBub3RlXG4gICB0aGF0IGBgLTBgYCBpcyBzdGlsbCBgYDBgYC5cblxuNC4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgZGVmaW5lZCBhcyB0aGUgc2VxdWVuY2Ugb2ZcbiAgIGl0ZW1zIHdpdGggaW5kZXggKmsqIHN1Y2ggdGhhdCBgYGkgPD0gayA8IGpgYC4gIElmICppKiBvciAqaiogaXNcbiAgIGdyZWF0ZXIgdGhhbiBgYGxlbihzKWBgLCB1c2UgYGBsZW4ocylgYC4gIElmICppKiBpcyBvbWl0dGVkIG9yXG4gICBgYE5vbmVgYCwgdXNlIGBgMGBgLiAgSWYgKmoqIGlzIG9taXR0ZWQgb3IgYGBOb25lYGAsIHVzZVxuICAgYGBsZW4ocylgYC4gIElmICppKiBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gKmoqLCB0aGUgc2xpY2UgaXNcbiAgIGVtcHR5LlxuXG41LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiB3aXRoIHN0ZXAgKmsqIGlzIGRlZmluZWQgYXMgdGhlXG4gICBzZXF1ZW5jZSBvZiBpdGVtcyB3aXRoIGluZGV4ICBgYHggPSBpICsgbiprYGAgc3VjaCB0aGF0IGBgMCA8PSBuIDxcbiAgIChqLWkpL2tgYC4gIEluIG90aGVyIHdvcmRzLCB0aGUgaW5kaWNlcyBhcmUgYGBpYGAsIGBgaStrYGAsXG4gICBgYGkrMiprYGAsIGBgaSszKmtgYCBhbmQgc28gb24sIHN0b3BwaW5nIHdoZW4gKmoqIGlzIHJlYWNoZWQgKGJ1dFxuICAgbmV2ZXIgaW5jbHVkaW5nICpqKikuICBJZiAqaSogb3IgKmoqIGlzIGdyZWF0ZXIgdGhhbiBgYGxlbihzKWBgLFxuICAgdXNlIGBgbGVuKHMpYGAuICBJZiAqaSogb3IgKmoqIGFyZSBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGV5IGJlY29tZVxuICAgImVuZCIgdmFsdWVzICh3aGljaCBlbmQgZGVwZW5kcyBvbiB0aGUgc2lnbiBvZiAqayopLiAgTm90ZSwgKmsqXG4gICBjYW5ub3QgYmUgemVyby4gSWYgKmsqIGlzIGBgTm9uZWBgLCBpdCBpcyB0cmVhdGVkIGxpa2UgYGAxYGAuXG5cbjYuIENvbmNhdGVuYXRpbmcgaW1tdXRhYmxlIHNlcXVlbmNlcyBhbHdheXMgcmVzdWx0cyBpbiBhIG5ldyBvYmplY3QuXG4gICBUaGlzIG1lYW5zIHRoYXQgYnVpbGRpbmcgdXAgYSBzZXF1ZW5jZSBieSByZXBlYXRlZCBjb25jYXRlbmF0aW9uXG4gICB3aWxsIGhhdmUgYSBxdWFkcmF0aWMgcnVudGltZSBjb3N0IGluIHRoZSB0b3RhbCBzZXF1ZW5jZSBsZW5ndGguXG4gICBUbyBnZXQgYSBsaW5lYXIgcnVudGltZSBjb3N0LCB5b3UgbXVzdCBzd2l0Y2ggdG8gb25lIG9mIHRoZVxuICAgYWx0ZXJuYXRpdmVzIGJlbG93OlxuXG4gICAqIGlmIGNvbmNhdGVuYXRpbmcgYGBzdHJgYCBvYmplY3RzLCB5b3UgY2FuIGJ1aWxkIGEgbGlzdCBhbmQgdXNlXG4gICAgIGBgc3RyLmpvaW4oKWBgIGF0IHRoZSBlbmQgb3IgZWxzZSB3cml0ZSB0byBhIGBgaW8uU3RyaW5nSU9gYFxuICAgICBpbnN0YW5jZSBhbmQgcmV0cmlldmUgaXRzIHZhbHVlIHdoZW4gY29tcGxldGVcblxuICAgKiBpZiBjb25jYXRlbmF0aW5nIGBgYnl0ZXNgYCBvYmplY3RzLCB5b3UgY2FuIHNpbWlsYXJseSB1c2VcbiAgICAgYGBieXRlcy5qb2luKClgYCBvciBgYGlvLkJ5dGVzSU9gYCwgb3IgeW91IGNhbiBkbyBpbi1wbGFjZVxuICAgICBjb25jYXRlbmF0aW9uIHdpdGggYSBgYGJ5dGVhcnJheWBgIG9iamVjdC4gIGBgYnl0ZWFycmF5YGAgb2JqZWN0c1xuICAgICBhcmUgbXV0YWJsZSBhbmQgaGF2ZSBhbiBlZmZpY2llbnQgb3ZlcmFsbG9jYXRpb24gbWVjaGFuaXNtXG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyBgYHR1cGxlYGAgb2JqZWN0cywgZXh0ZW5kIGEgYGBsaXN0YGAgaW5zdGVhZFxuXG4gICAqIGZvciBvdGhlciB0eXBlcywgaW52ZXN0aWdhdGUgdGhlIHJlbGV2YW50IGNsYXNzIGRvY3VtZW50YXRpb25cblxuNy4gU29tZSBzZXF1ZW5jZSB0eXBlcyAoc3VjaCBhcyBgYHJhbmdlYGApIG9ubHkgc3VwcG9ydCBpdGVtIHNlcXVlbmNlc1xuICAgdGhhdCBmb2xsb3cgc3BlY2lmaWMgcGF0dGVybnMsIGFuZCBoZW5jZSBkb25cJ3Qgc3VwcG9ydCBzZXF1ZW5jZVxuICAgY29uY2F0ZW5hdGlvbiBvciByZXBldGl0aW9uLlxuXG44LiBgYGluZGV4YGAgcmFpc2VzIGBgVmFsdWVFcnJvcmBgIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouIFdoZW5cbiAgIHN1cHBvcnRlZCwgdGhlIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHRoZSBpbmRleCBtZXRob2QgYWxsb3dcbiAgIGVmZmljaWVudCBzZWFyY2hpbmcgb2Ygc3Vic2VjdGlvbnMgb2YgdGhlIHNlcXVlbmNlLiBQYXNzaW5nIHRoZVxuICAgZXh0cmEgYXJndW1lbnRzIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byB1c2luZyBgYHNbaTpqXS5pbmRleCh4KWBgLFxuICAgb25seSB3aXRob3V0IGNvcHlpbmcgYW55IGRhdGEgYW5kIHdpdGggdGhlIHJldHVybmVkIGluZGV4IGJlaW5nXG4gICByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlcXVlbmNlIHJhdGhlciB0aGFuIHRoZSBzdGFydCBvZiB0aGVcbiAgIHNsaWNlLlxuXG5cbkltbXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvbmx5IG9wZXJhdGlvbiB0aGF0IGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBnZW5lcmFsbHkgaW1wbGVtZW50XG50aGF0IGlzIG5vdCBhbHNvIGltcGxlbWVudGVkIGJ5IG11dGFibGUgc2VxdWVuY2UgdHlwZXMgaXMgc3VwcG9ydCBmb3JcbnRoZSBgYGhhc2goKWBgIGJ1aWx0LWluLlxuXG5UaGlzIHN1cHBvcnQgYWxsb3dzIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHN1Y2ggYXMgYGB0dXBsZWBgIGluc3RhbmNlcyxcbnRvIGJlIHVzZWQgYXMgYGBkaWN0YGAga2V5cyBhbmQgc3RvcmVkIGluIGBgc2V0YGAgYW5kIGBgZnJvemVuc2V0YGBcbmluc3RhbmNlcy5cblxuQXR0ZW1wdGluZyB0byBoYXNoIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHVuaGFzaGFibGVcbnZhbHVlcyB3aWxsIHJlc3VsdCBpbiBgYFR5cGVFcnJvcmBgLlxuXG5cbk11dGFibGUgU2VxdWVuY2UgVHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlIHNlcXVlbmNlXG50eXBlcy4gVGhlIGBgY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZWBgIEFCQyBpcyBwcm92aWRlZCB0byBtYWtlXG5pdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uIGN1c3RvbSBzZXF1ZW5jZVxudHlwZXMuXG5cbkluIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsICp0KiBpcyBhbnlcbml0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZSBhbmRcbnZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsIGBgYnl0ZWFycmF5YGAgb25seVxuYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uIGBgMCA8PSB4IDw9IDI1NWBgKS5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xufCBgYHNbaV0gPSB4YGAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgYnkgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqXSA9IHRgYCAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXRlcmFibGUgKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgZGVsIHNbaTpqXWBgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2k6al0gPSBbXWBgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqOmtdID0gdGBgICAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgYGBzW2k6ajprXWBgIGFyZSB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICp0KiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGRlbCBzW2k6ajprXWBgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyBvZiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmo6a11gYCBmcm9tIHRoZSBsaXN0ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuYXBwZW5kKHgpYGAgICAgICAgICAgICAgICAgfCBhcHBlbmRzICp4KiB0byB0aGUgZW5kIG9mIHRoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlcXVlbmNlIChzYW1lIGFzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2xlbihzKTpsZW4ocyldID0gW3hdYGApICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jbGVhcigpYGAgICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zIGZyb20gYGBzYGAgICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBkZWwgc1s6XWBgKSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jb3B5KClgYCAgICAgICAgICAgICAgICAgICB8IGNyZWF0ZXMgYSBzaGFsbG93IGNvcHkgb2YgYGBzYGAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBzWzpdYGApICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5leHRlbmQodClgYCAgICAgICAgICAgICAgICB8IGV4dGVuZHMgKnMqIHdpdGggdGhlIGNvbnRlbnRzIG9mIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKnQqIChzYW1lIGFzIGBgc1tsZW4ocyk6bGVuKHMpXSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA9IHRgYCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmluc2VydChpLCB4KWBgICAgICAgICAgICAgIHwgaW5zZXJ0cyAqeCogaW50byAqcyogYXQgdGhlICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCBnaXZlbiBieSAqaSogKHNhbWUgYXMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmldID0gW3hdYGApICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucG9wKFtpXSlgYCAgICAgICAgICAgICAgICAgfCByZXRyaWV2ZXMgdGhlIGl0ZW0gYXQgKmkqIGFuZCAgICB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsc28gcmVtb3ZlcyBpdCBmcm9tICpzKiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmVtb3ZlKHgpYGAgICAgICAgICAgICAgICAgfCByZW1vdmUgdGhlIGZpcnN0IGl0ZW0gZnJvbSAqcyogICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoZXJlIGBgc1tpXSA9PSB4YGAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmV2ZXJzZSgpYGAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgKnMqIGluICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy5cblxuMi4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byBgYC0xYGAsIHNvIHRoYXQgYnkgZGVmYXVsdFxuICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cblxuMy4gYGByZW1vdmVgYCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi5cblxuNC4gVGhlIGBgcmV2ZXJzZSgpYGAgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teVxuICAgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2VycyB0aGF0IGl0XG4gICBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSByZXZlcnNlZCBzZXF1ZW5jZS5cblxuNS4gYGBjbGVhcigpYGAgYW5kIGBgY29weSgpYGAgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZVxuICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb25cJ3Qgc3VwcG9ydCBzbGljaW5nXG4gICBvcGVyYXRpb25zIChzdWNoIGFzIGBgZGljdGBgIGFuZCBgYHNldGBgKVxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjM6IGBgY2xlYXIoKWBgIGFuZCBgYGNvcHkoKWBgIG1ldGhvZHMuXG5cblxuTGlzdHNcbj09PT09XG5cbkxpc3RzIGFyZSBtdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgb2ZcbmhvbW9nZW5lb3VzIGl0ZW1zICh3aGVyZSB0aGUgcHJlY2lzZSBkZWdyZWUgb2Ygc2ltaWxhcml0eSB3aWxsIHZhcnkgYnlcbmFwcGxpY2F0aW9uKS5cblxuY2xhc3MgY2xhc3MgbGlzdChbaXRlcmFibGVdKVxuXG4gICBMaXN0cyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gc2V2ZXJhbCB3YXlzOlxuXG4gICAqIFVzaW5nIGEgcGFpciBvZiBzcXVhcmUgYnJhY2tldHMgdG8gZGVub3RlIHRoZSBlbXB0eSBsaXN0OiBgYFtdYGBcblxuICAgKiBVc2luZyBzcXVhcmUgYnJhY2tldHMsIHNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6IGBgW2FdYGAsXG4gICAgIGBgW2EsIGIsIGNdYGBcblxuICAgKiBVc2luZyBhIGxpc3QgY29tcHJlaGVuc2lvbjogYGBbeCBmb3IgeCBpbiBpdGVyYWJsZV1gYFxuXG4gICAqIFVzaW5nIHRoZSB0eXBlIGNvbnN0cnVjdG9yOiBgYGxpc3QoKWBgIG9yIGBgbGlzdChpdGVyYWJsZSlgYFxuXG4gICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgbGlzdCB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZVxuICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqXCdzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGFcbiAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3JcbiAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIGxpc3QsIGEgY29weSBpcyBtYWRlIGFuZFxuICAgcmV0dXJuZWQsIHNpbWlsYXIgdG8gYGBpdGVyYWJsZVs6XWBgLiBGb3IgZXhhbXBsZSwgYGBsaXN0KFwnYWJjXCcpYGBcbiAgIHJldHVybnMgYGBbXCdhXCcsIFwnYlwnLCBcJ2NcJ11gYCBhbmQgYGBsaXN0KCAoMSwgMiwgMykgKWBgIHJldHVybnMgYGBbMSxcbiAgIDIsIDNdYGAuIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ld1xuICAgZW1wdHkgbGlzdCwgYGBbXWBgLlxuXG4gICBNYW55IG90aGVyIG9wZXJhdGlvbnMgYWxzbyBwcm9kdWNlIGxpc3RzLCBpbmNsdWRpbmcgdGhlXG4gICBgYHNvcnRlZCgpYGAgYnVpbHQtaW4uXG5cbiAgIExpc3RzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIGFuZCAqbXV0YWJsZSogc2VxdWVuY2VcbiAgIG9wZXJhdGlvbnMuIExpc3RzIGFsc28gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgbWV0aG9kOlxuXG4gICBzb3J0KCosIGtleT1Ob25lLCByZXZlcnNlPU5vbmUpXG5cbiAgICAgIFRoaXMgbWV0aG9kIHNvcnRzIHRoZSBsaXN0IGluIHBsYWNlLCB1c2luZyBvbmx5IGBgPGBgXG4gICAgICBjb21wYXJpc29ucyBiZXR3ZWVuIGl0ZW1zLiBFeGNlcHRpb25zIGFyZSBub3Qgc3VwcHJlc3NlZCAtIGlmXG4gICAgICBhbnkgY29tcGFyaXNvbiBvcGVyYXRpb25zIGZhaWwsIHRoZSBlbnRpcmUgc29ydCBvcGVyYXRpb24gd2lsbFxuICAgICAgZmFpbCAoYW5kIHRoZSBsaXN0IHdpbGwgbGlrZWx5IGJlIGxlZnQgaW4gYSBwYXJ0aWFsbHkgbW9kaWZpZWRcbiAgICAgIHN0YXRlKS5cblxuICAgICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0b1xuICAgICAgZXh0cmFjdCBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQgKGZvciBleGFtcGxlLFxuICAgICAgYGBrZXk9c3RyLmxvd2VyYGApLiBUaGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBpdGVtIGluIHRoZVxuICAgICAgbGlzdCBpcyBjYWxjdWxhdGVkIG9uY2UgYW5kIHRoZW4gdXNlZCBmb3IgdGhlIGVudGlyZSBzb3J0aW5nXG4gICAgICBwcm9jZXNzLiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBgYE5vbmVgYCBtZWFucyB0aGF0IGxpc3QgaXRlbXMgYXJlXG4gICAgICBzb3J0ZWQgZGlyZWN0bHkgd2l0aG91dCBjYWxjdWxhdGluZyBhIHNlcGFyYXRlIGtleSB2YWx1ZS5cblxuICAgICAgVGhlIGBgZnVuY3Rvb2xzLmNtcF90b19rZXkoKWBgIHV0aWxpdHkgaXMgYXZhaWxhYmxlIHRvIGNvbnZlcnQgYVxuICAgICAgMi54IHN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uXG5cbiAgICAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gdGhlIGxpc3RcbiAgICAgIGVsZW1lbnRzIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuXG5cbiAgICAgIFRoaXMgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teSBvZiBzcGFjZVxuICAgICAgd2hlbiBzb3J0aW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgdXNlcnMgdGhhdCBpdCBvcGVyYXRlc1xuICAgICAgYnkgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgc29ydGVkIHNlcXVlbmNlICh1c2VcbiAgICAgIGBgc29ydGVkKClgYCB0byBleHBsaWNpdGx5IHJlcXVlc3QgYSBuZXcgc29ydGVkIGxpc3QgaW5zdGFuY2UpLlxuXG4gICAgICBUaGUgYGBzb3J0KClgYCBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBIHNvcnQgaXNcbiAgICAgIHN0YWJsZSBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIG9mXG4gICAgICBlbGVtZW50cyB0aGF0IGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3Igc29ydGluZyBpblxuICAgICAgbXVsdGlwbGUgcGFzc2VzIChmb3IgZXhhbXBsZSwgc29ydCBieSBkZXBhcnRtZW50LCB0aGVuIGJ5IHNhbGFyeVxuICAgICAgZ3JhZGUpLlxuXG4gICAgICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFdoaWxlIGEgbGlzdCBpcyBiZWluZyBzb3J0ZWQsXG4gICAgICB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuIGluc3BlY3QsIHRoZSBsaXN0IGlzXG4gICAgICB1bmRlZmluZWQuICBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gbWFrZXMgdGhlIGxpc3QgYXBwZWFyXG4gICAgICBlbXB0eSBmb3IgdGhlIGR1cmF0aW9uLCBhbmQgcmFpc2VzIGBgVmFsdWVFcnJvcmBgIGlmIGl0IGNhblxuICAgICAgZGV0ZWN0IHRoYXQgdGhlIGxpc3QgaGFzIGJlZW4gbXV0YXRlZCBkdXJpbmcgYSBzb3J0LlxuXG5cblR1cGxlc1xuPT09PT09XG5cblR1cGxlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgb2ZcbmhldGVyb2dlbmVvdXMgZGF0YSAoc3VjaCBhcyB0aGUgMi10dXBsZXMgcHJvZHVjZWQgYnkgdGhlXG5gYGVudW1lcmF0ZSgpYGAgYnVpbHQtaW4pLiBUdXBsZXMgYXJlIGFsc28gdXNlZCBmb3IgY2FzZXMgd2hlcmUgYW5cbmltbXV0YWJsZSBzZXF1ZW5jZSBvZiBob21vZ2VuZW91cyBkYXRhIGlzIG5lZWRlZCAoc3VjaCBhcyBhbGxvd2luZ1xuc3RvcmFnZSBpbiBhIGBgc2V0YGAgb3IgYGBkaWN0YGAgaW5zdGFuY2UpLlxuXG5jbGFzcyBjbGFzcyB0dXBsZShbaXRlcmFibGVdKVxuXG4gICBUdXBsZXMgbWF5IGJlIGNvbnN0cnVjdGVkIGluIGEgbnVtYmVyIG9mIHdheXM6XG5cbiAgICogVXNpbmcgYSBwYWlyIG9mIHBhcmVudGhlc2VzIHRvIGRlbm90ZSB0aGUgZW1wdHkgdHVwbGU6IGBgKClgYFxuXG4gICAqIFVzaW5nIGEgdHJhaWxpbmcgY29tbWEgZm9yIGEgc2luZ2xldG9uIHR1cGxlOiBgYGEsYGAgb3IgYGAoYSwpYGBcblxuICAgKiBTZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiBgYGEsIGIsIGNgYCBvciBgYChhLCBiLCBjKWBgXG5cbiAgICogVXNpbmcgdGhlIGBgdHVwbGUoKWBgIGJ1aWx0LWluOiBgYHR1cGxlKClgYCBvclxuICAgICBgYHR1cGxlKGl0ZXJhYmxlKWBgXG5cbiAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSB0dXBsZSB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZVxuICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqXCdzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGFcbiAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3JcbiAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIHR1cGxlLCBpdCBpcyByZXR1cm5lZFxuICAgdW5jaGFuZ2VkLiBGb3IgZXhhbXBsZSwgYGB0dXBsZShcJ2FiY1wnKWBgIHJldHVybnMgYGAoXCdhXCcsIFwnYlwnLFxuICAgXCdjXCcpYGAgYW5kIGBgdHVwbGUoIFsxLCAyLCAzXSApYGAgcmV0dXJucyBgYCgxLCAyLCAzKWBgLiBJZiBub1xuICAgYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3IGVtcHR5IHR1cGxlLFxuICAgYGAoKWBgLlxuXG4gICBOb3RlIHRoYXQgaXQgaXMgYWN0dWFsbHkgdGhlIGNvbW1hIHdoaWNoIG1ha2VzIGEgdHVwbGUsIG5vdCB0aGVcbiAgIHBhcmVudGhlc2VzLiBUaGUgcGFyZW50aGVzZXMgYXJlIG9wdGlvbmFsLCBleGNlcHQgaW4gdGhlIGVtcHR5XG4gICB0dXBsZSBjYXNlLCBvciB3aGVuIHRoZXkgYXJlIG5lZWRlZCB0byBhdm9pZCBzeW50YWN0aWMgYW1iaWd1aXR5LlxuICAgRm9yIGV4YW1wbGUsIGBgZihhLCBiLCBjKWBgIGlzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIHRocmVlXG4gICBhcmd1bWVudHMsIHdoaWxlIGBgZigoYSwgYiwgYykpYGAgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSAzLXR1cGxlXG4gICBhcyB0aGUgc29sZSBhcmd1bWVudC5cblxuICAgVHVwbGVzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIHNlcXVlbmNlIG9wZXJhdGlvbnMuXG5cbkZvciBoZXRlcm9nZW5lb3VzIGNvbGxlY3Rpb25zIG9mIGRhdGEgd2hlcmUgYWNjZXNzIGJ5IG5hbWUgaXMgY2xlYXJlclxudGhhbiBhY2Nlc3MgYnkgaW5kZXgsIGBgY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpYGAgbWF5IGJlIGEgbW9yZVxuYXBwcm9wcmlhdGUgY2hvaWNlIHRoYW4gYSBzaW1wbGUgdHVwbGUgb2JqZWN0LlxuXG5cblJhbmdlc1xuPT09PT09XG5cblRoZSBgYHJhbmdlYGAgdHlwZSByZXByZXNlbnRzIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSBvZiBudW1iZXJzIGFuZCBpc1xuY29tbW9ubHkgdXNlZCBmb3IgbG9vcGluZyBhIHNwZWNpZmljIG51bWJlciBvZiB0aW1lcyBpbiBgYGZvcmBgIGxvb3BzLlxuXG5jbGFzcyBjbGFzcyByYW5nZShbc3RhcnRdLCBzdG9wWywgc3RlcF0pXG5cbiAgIFRoZSBhcmd1bWVudHMgdG8gdGhlIHJhbmdlIGNvbnN0cnVjdG9yIG11c3QgYmUgaW50ZWdlcnMgKGVpdGhlclxuICAgYnVpbHQtaW4gYGBpbnRgYCBvciBhbnkgb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgYGBfX2luZGV4X19gYFxuICAgc3BlY2lhbCBtZXRob2QpLiAgSWYgdGhlICpzdGVwKiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0b1xuICAgYGAxYGAuIElmIHRoZSAqc3RhcnQqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGBgMGBgLiBJZlxuICAgKnN0ZXAqIGlzIHplcm8sIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZC5cblxuICAgRm9yIGEgcG9zaXRpdmUgKnN0ZXAqLCB0aGUgY29udGVudHMgb2YgYSByYW5nZSBgYHJgYCBhcmUgZGV0ZXJtaW5lZFxuICAgYnkgdGhlIGZvcm11bGEgYGByW2ldID0gc3RhcnQgKyBzdGVwKmlgYCB3aGVyZSBgYGkgPj0gMGBgIGFuZFxuICAgYGByW2ldIDwgc3RvcGBgLlxuXG4gICBGb3IgYSBuZWdhdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiB0aGUgcmFuZ2UgYXJlIHN0aWxsXG4gICBkZXRlcm1pbmVkIGJ5IHRoZSBmb3JtdWxhIGBgcltpXSA9IHN0YXJ0ICsgc3RlcCppYGAsIGJ1dCB0aGVcbiAgIGNvbnN0cmFpbnRzIGFyZSBgYGkgPj0gMGBgIGFuZCBgYHJbaV0gPiBzdG9wYGAuXG5cbiAgIEEgcmFuZ2Ugb2JqZWN0IHdpbGwgYmUgZW1wdHkgaWYgYGByWzBdYGAgZG9lcyBub3QgbWVhbnQgdGhlIHZhbHVlXG4gICBjb25zdHJhaW50LiBSYW5nZXMgZG8gc3VwcG9ydCBuZWdhdGl2ZSBpbmRpY2VzLCBidXQgdGhlc2UgYXJlXG4gICBpbnRlcnByZXRlZCBhcyBpbmRleGluZyBmcm9tIHRoZSBlbmQgb2YgdGhlIHNlcXVlbmNlIGRldGVybWluZWQgYnlcbiAgIHRoZSBwb3NpdGl2ZSBpbmRpY2VzLlxuXG4gICBSYW5nZXMgY29udGFpbmluZyBhYnNvbHV0ZSB2YWx1ZXMgbGFyZ2VyIHRoYW4gYGBzeXMubWF4c2l6ZWBgIGFyZVxuICAgcGVybWl0dGVkIGJ1dCBzb21lIGZlYXR1cmVzIChzdWNoIGFzIGBgbGVuKClgYCkgbWF5IHJhaXNlXG4gICBgYE92ZXJmbG93RXJyb3JgYC5cblxuICAgUmFuZ2UgZXhhbXBsZXM6XG5cbiAgICAgID4+PiBsaXN0KHJhbmdlKDEwKSlcbiAgICAgIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMTEpKVxuICAgICAgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMzAsIDUpKVxuICAgICAgWzAsIDUsIDEwLCAxNSwgMjAsIDI1XVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMTAsIDMpKVxuICAgICAgWzAsIDMsIDYsIDldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAtMTAsIC0xKSlcbiAgICAgIFswLCAtMSwgLTIsIC0zLCAtNCwgLTUsIC02LCAtNywgLTgsIC05XVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMCkpXG4gICAgICBbXVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMCkpXG4gICAgICBbXVxuXG4gICBSYW5nZXMgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogc2VxdWVuY2Ugb3BlcmF0aW9ucyBleGNlcHRcbiAgIGNvbmNhdGVuYXRpb24gYW5kIHJlcGV0aXRpb24gKGR1ZSB0byB0aGUgZmFjdCB0aGF0IHJhbmdlIG9iamVjdHNcbiAgIGNhbiBvbmx5IHJlcHJlc2VudCBzZXF1ZW5jZXMgdGhhdCBmb2xsb3cgYSBzdHJpY3QgcGF0dGVybiBhbmRcbiAgIHJlcGV0aXRpb24gYW5kIGNvbmNhdGVuYXRpb24gd2lsbCB1c3VhbGx5IHZpb2xhdGUgdGhhdCBwYXR0ZXJuKS5cblxuVGhlIGFkdmFudGFnZSBvZiB0aGUgYGByYW5nZWBgIHR5cGUgb3ZlciBhIHJlZ3VsYXIgYGBsaXN0YGAgb3JcbmBgdHVwbGVgYCBpcyB0aGF0IGEgYGByYW5nZWBgIG9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lIChzbWFsbClcbmFtb3VudCBvZiBtZW1vcnksIG5vIG1hdHRlciB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cyAoYXMgaXRcbm9ubHkgc3RvcmVzIHRoZSBgYHN0YXJ0YGAsIGBgc3RvcGBgIGFuZCBgYHN0ZXBgYCB2YWx1ZXMsIGNhbGN1bGF0aW5nXG5pbmRpdmlkdWFsIGl0ZW1zIGFuZCBzdWJyYW5nZXMgYXMgbmVlZGVkKS5cblxuUmFuZ2Ugb2JqZWN0cyBpbXBsZW1lbnQgdGhlIGBgY29sbGVjdGlvbnMuU2VxdWVuY2VgYCBBQkMsIGFuZCBwcm92aWRlXG5mZWF0dXJlcyBzdWNoIGFzIGNvbnRhaW5tZW50IHRlc3RzLCBlbGVtZW50IGluZGV4IGxvb2t1cCwgc2xpY2luZyBhbmRcbnN1cHBvcnQgZm9yIG5lZ2F0aXZlIGluZGljZXMgKHNlZSAqU2VxdWVuY2UgVHlwZXMgLS0tIGxpc3QsIHR1cGxlLFxucmFuZ2UqKTpcblxuPj4+IHIgPSByYW5nZSgwLCAyMCwgMilcbj4+PiByXG5yYW5nZSgwLCAyMCwgMilcbj4+PiAxMSBpbiByXG5GYWxzZVxuPj4+IDEwIGluIHJcblRydWVcbj4+PiByLmluZGV4KDEwKVxuNVxuPj4+IHJbNV1cbjEwXG4+Pj4gcls6NV1cbnJhbmdlKDAsIDEwLCAyKVxuPj4+IHJbLTFdXG4xOFxuXG5UZXN0aW5nIHJhbmdlIG9iamVjdHMgZm9yIGVxdWFsaXR5IHdpdGggYGA9PWBgIGFuZCBgYCE9YGAgY29tcGFyZXNcbnRoZW0gYXMgc2VxdWVuY2VzLiAgVGhhdCBpcywgdHdvIHJhbmdlIG9iamVjdHMgYXJlIGNvbnNpZGVyZWQgZXF1YWwgaWZcbnRoZXkgcmVwcmVzZW50IHRoZSBzYW1lIHNlcXVlbmNlIG9mIHZhbHVlcy4gIChOb3RlIHRoYXQgdHdvIHJhbmdlXG5vYmplY3RzIHRoYXQgY29tcGFyZSBlcXVhbCBtaWdodCBoYXZlIGRpZmZlcmVudCBgYHN0YXJ0YGAsIGBgc3RvcGBgXG5hbmQgYGBzdGVwYGAgYXR0cmlidXRlcywgZm9yIGV4YW1wbGUgYGByYW5nZSgwKSA9PSByYW5nZSgyLCAxLCAzKWBgIG9yXG5gYHJhbmdlKDAsIDMsIDIpID09IHJhbmdlKDAsIDQsIDIpYGAuKVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBJbXBsZW1lbnQgdGhlIFNlcXVlbmNlIEFCQy4gU3VwcG9ydCBzbGljaW5nXG5hbmQgbmVnYXRpdmUgaW5kaWNlcy4gVGVzdCBgYGludGBgIG9iamVjdHMgZm9yIG1lbWJlcnNoaXAgaW4gY29uc3RhbnRcbnRpbWUgaW5zdGVhZCBvZiBpdGVyYXRpbmcgdGhyb3VnaCBhbGwgaXRlbXMuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IERlZmluZSBcJz09XCcgYW5kIFwnIT1cJyB0byBjb21wYXJlIHJhbmdlIG9iamVjdHNcbmJhc2VkIG9uIHRoZSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhleSBkZWZpbmUgKGluc3RlYWQgb2YgY29tcGFyaW5nXG5iYXNlZCBvbiBvYmplY3QgaWRlbnRpdHkpLlxuXG5OZXcgaW4gdmVyc2lvbiAzLjM6IFRoZSBgYHN0YXJ0YGAsIGBgc3RvcGBgIGFuZCBgYHN0ZXBgYCBhdHRyaWJ1dGVzLlxuJywKKyAndHlwZXNzZXEtbXV0YWJsZSc6ICJcbk11dGFibGUgU2VxdWVuY2UgVHlwZXNcbioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlIHNlcXVlbmNlXG50eXBlcy4gVGhlIGBgY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZWBgIEFCQyBpcyBwcm92aWRlZCB0byBtYWtlXG5pdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uIGN1c3RvbSBzZXF1ZW5jZVxudHlwZXMuXG5cbkluIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsICp0KiBpcyBhbnlcbml0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZSBhbmRcbnZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsIGBgYnl0ZWFycmF5YGAgb25seVxuYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uIGBgMCA8PSB4IDw9IDI1NWBgKS5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xufCBgYHNbaV0gPSB4YGAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgYnkgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqXSA9IHRgYCAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXRlcmFibGUgKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgZGVsIHNbaTpqXWBgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2k6al0gPSBbXWBgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqOmtdID0gdGBgICAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgYGBzW2k6ajprXWBgIGFyZSB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICp0KiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGRlbCBzW2k6ajprXWBgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyBvZiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmo6a11gYCBmcm9tIHRoZSBsaXN0ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuYXBwZW5kKHgpYGAgICAgICAgICAgICAgICAgfCBhcHBlbmRzICp4KiB0byB0aGUgZW5kIG9mIHRoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlcXVlbmNlIChzYW1lIGFzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2xlbihzKTpsZW4ocyldID0gW3hdYGApICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jbGVhcigpYGAgICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zIGZyb20gYGBzYGAgICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBkZWwgc1s6XWBgKSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jb3B5KClgYCAgICAgICAgICAgICAgICAgICB8IGNyZWF0ZXMgYSBzaGFsbG93IGNvcHkgb2YgYGBzYGAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBzWzpdYGApICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5leHRlbmQodClgYCAgICAgICAgICAgICAgICB8IGV4dGVuZHMgKnMqIHdpdGggdGhlIGNvbnRlbnRzIG9mIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKnQqIChzYW1lIGFzIGBgc1tsZW4ocyk6bGVuKHMpXSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA9IHRgYCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmluc2VydChpLCB4KWBgICAgICAgICAgICAgIHwgaW5zZXJ0cyAqeCogaW50byAqcyogYXQgdGhlICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCBnaXZlbiBieSAqaSogKHNhbWUgYXMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmldID0gW3hdYGApICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucG9wKFtpXSlgYCAgICAgICAgICAgICAgICAgfCByZXRyaWV2ZXMgdGhlIGl0ZW0gYXQgKmkqIGFuZCAgICB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsc28gcmVtb3ZlcyBpdCBmcm9tICpzKiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmVtb3ZlKHgpYGAgICAgICAgICAgICAgICAgfCByZW1vdmUgdGhlIGZpcnN0IGl0ZW0gZnJvbSAqcyogICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoZXJlIGBgc1tpXSA9PSB4YGAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmV2ZXJzZSgpYGAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgKnMqIGluICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy5cblxuMi4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byBgYC0xYGAsIHNvIHRoYXQgYnkgZGVmYXVsdFxuICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cblxuMy4gYGByZW1vdmVgYCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi5cblxuNC4gVGhlIGBgcmV2ZXJzZSgpYGAgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teVxuICAgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2VycyB0aGF0IGl0XG4gICBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSByZXZlcnNlZCBzZXF1ZW5jZS5cblxuNS4gYGBjbGVhcigpYGAgYW5kIGBgY29weSgpYGAgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZVxuICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb24ndCBzdXBwb3J0IHNsaWNpbmdcbiAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgYGBkaWN0YGAgYW5kIGBgc2V0YGApXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogYGBjbGVhcigpYGAgYW5kIGBgY29weSgpYGAgbWV0aG9kcy5cbiIsCiAgJ3VuYXJ5JzogJ1xuVW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQWxsIHVuYXJ5IGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5OlxuXG4gICB1X2V4cHIgOjo9IHBvd2VyIHwgIi0iIHVfZXhwciB8ICIrIiB1X2V4cHIgfCAifiIgdV9leHByXG5cblRoZSB1bmFyeSBgYC1gYCAobWludXMpIG9wZXJhdG9yIHlpZWxkcyB0aGUgbmVnYXRpb24gb2YgaXRzIG51bWVyaWNcbmFyZ3VtZW50LlxuXG5UaGUgdW5hcnkgYGArYGAgKHBsdXMpIG9wZXJhdG9yIHlpZWxkcyBpdHMgbnVtZXJpYyBhcmd1bWVudCB1bmNoYW5nZWQuXG5cblRoZSB1bmFyeSBgYH5gYCAoaW52ZXJ0KSBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mIGl0c1xuaW50ZWdlciBhcmd1bWVudC4gIFRoZSBiaXR3aXNlIGludmVyc2lvbiBvZiBgYHhgYCBpcyBkZWZpbmVkIGFzXG5gYC0oeCsxKWBgLiAgSXQgb25seSBhcHBsaWVzIHRvIGludGVncmFsIG51bWJlcnMuXG5cbkluIGFsbCB0aHJlZSBjYXNlcywgaWYgdGhlIGFyZ3VtZW50IGRvZXMgbm90IGhhdmUgdGhlIHByb3BlciB0eXBlLCBhXG5gYFR5cGVFcnJvcmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nLAogICd3aGlsZSc6ICdcblRoZSBgYHdoaWxlYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGB3aGlsZWBgIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyBhblxuZXhwcmVzc2lvbiBpcyB0cnVlOlxuXG4gICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgZXhlY3V0ZXMgdGhlXG5maXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgdGltZVxuaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXNcbmV4ZWN1dGVkIGFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BIGBgYnJlYWtgYCBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSBgYGVsc2VgYCBjbGF1c2VcJ3Mgc3VpdGUuICBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kXG5nb2VzIGJhY2sgdG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cbicsCiAgJ3dpdGgnOiAnXG5UaGUgYGB3aXRoYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb25cbmBgdHJ5YGAuLi5gYGV4Y2VwdGBgLi4uYGBmaW5hbGx5YGAgdXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkXG5mb3IgY29udmVuaWVudCByZXVzZS5cblxuICAgd2l0aF9zdG10IDo6PSAid2l0aCIgd2l0aF9pdGVtICgiLCIgd2l0aF9pdGVtKSogIjoiIHN1aXRlXG4gICB3aXRoX2l0ZW0gOjo9IGV4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XVxuXG5UaGUgZXhlY3V0aW9uIG9mIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgYGB3aXRoX2l0ZW1gYClcbiAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG5cbjIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2V4aXRfXygpYGAgaXMgbG9hZGVkIGZvciBsYXRlciB1c2UuXG5cbjMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2VudGVyX18oKWBgIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlIGBgd2l0aGBgIHN0YXRlbWVudCwgdGhlIHJldHVyblxuICAgdmFsdWUgZnJvbSBgYF9fZW50ZXJfXygpYGAgaXMgYXNzaWduZWQgdG8gaXQuXG5cbiAgIE5vdGU6IFRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSBgYF9fZW50ZXJfXygpYGBcbiAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiBgYF9fZXhpdF9fKClgYCB3aWxsIGFsd2F5c1xuICAgICBiZSBjYWxsZWQuIFRodXMsIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFzc2lnbm1lbnQgdG8gdGhlXG4gICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3Igb2NjdXJyaW5nXG4gICAgIHdpdGhpbiB0aGUgc3VpdGUgd291bGQgYmUuIFNlZSBzdGVwIDYgYmVsb3cuXG5cbjUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cblxuNi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyBgYF9fZXhpdF9fKClgYCBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gYGBfX2V4aXRfXygpYGAuIE90aGVyd2lzZSxcbiAgIHRocmVlIGBgTm9uZWBgIGFyZ3VtZW50cyBhcmUgc3VwcGxpZWQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24sIGFuZCB0aGUgcmV0dXJuIHZhbHVlXG4gICBmcm9tIHRoZSBgYF9fZXhpdF9fKClgYCBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzXG4gICByZXJhaXNlZC4gIElmIHRoZSByZXR1cm4gdmFsdWUgd2FzIHRydWUsIHRoZSBleGNlcHRpb24gaXNcbiAgIHN1cHByZXNzZWQsIGFuZCBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmdcbiAgIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tIGBgX19leGl0X18oKWBgIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gcHJvY2VlZHNcbiAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG5cbldpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG5tdWx0aXBsZSBgYHdpdGhgYCBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuXG4gICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbiAgICAgICBzdWl0ZVxuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIHdpdGggQSgpIGFzIGE6XG4gICAgICAgd2l0aCBCKCkgYXMgYjpcbiAgICAgICAgICAgc3VpdGVcblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBleHByZXNzaW9ucy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG4nLAotICd5aWVsZCc6ICdcblRoZSBgYHlpZWxkYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICB5aWVsZF9zdG10IDo6PSB5aWVsZF9leHByZXNzaW9uXG5cblRoZSBgYHlpZWxkYGAgc3RhdGVtZW50IGlzIG9ubHkgdXNlZCB3aGVuIGRlZmluaW5nIGEgZ2VuZXJhdG9yXG5mdW5jdGlvbiwgYW5kIGlzIG9ubHkgdXNlZCBpbiB0aGUgYm9keSBvZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLlxuVXNpbmcgYSBgYHlpZWxkYGAgc3RhdGVtZW50IGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBzdWZmaWNpZW50IHRvXG5jYXVzZSB0aGF0IGRlZmluaXRpb24gdG8gY3JlYXRlIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGluc3RlYWQgb2YgYVxubm9ybWFsIGZ1bmN0aW9uLiBXaGVuIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCwgaXQgcmV0dXJucyBhblxuaXRlcmF0b3Iga25vd24gYXMgYSBnZW5lcmF0b3IgaXRlcmF0b3IsIG9yIG1vcmUgY29tbW9ubHksIGEgZ2VuZXJhdG9yLlxuVGhlIGJvZHkgb2YgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiBpcyBleGVjdXRlZCBieSBjYWxsaW5nIHRoZVxuYGBuZXh0KClgYCBmdW5jdGlvbiBvbiB0aGUgZ2VuZXJhdG9yIHJlcGVhdGVkbHkgdW50aWwgaXQgcmFpc2VzIGFuXG5leGNlcHRpb24uXG5cbldoZW4gYSBgYHlpZWxkYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkLCB0aGUgc3RhdGUgb2YgdGhlIGdlbmVyYXRvciBpc1xuZnJvemVuIGFuZCB0aGUgdmFsdWUgb2YgYGBleHByZXNzaW9uX2xpc3RgYCBpcyByZXR1cm5lZCB0b1xuYGBuZXh0KClgYFwncyBjYWxsZXIuICBCeSAiZnJvemVuIiB3ZSBtZWFuIHRoYXQgYWxsIGxvY2FsIHN0YXRlIGlzXG5yZXRhaW5lZCwgaW5jbHVkaW5nIHRoZSBjdXJyZW50IGJpbmRpbmdzIG9mIGxvY2FsIHZhcmlhYmxlcywgdGhlXG5pbnN0cnVjdGlvbiBwb2ludGVyLCBhbmQgdGhlIGludGVybmFsIGV2YWx1YXRpb24gc3RhY2s6IGVub3VnaFxuaW5mb3JtYXRpb24gaXMgc2F2ZWQgc28gdGhhdCB0aGUgbmV4dCB0aW1lIGBgbmV4dCgpYGAgaXMgaW52b2tlZCwgdGhlXG5mdW5jdGlvbiBjYW4gcHJvY2VlZCBleGFjdGx5IGFzIGlmIHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50IHdlcmUganVzdFxuYW5vdGhlciBleHRlcm5hbCBjYWxsLlxuXG5UaGUgYGB5aWVsZGBgIHN0YXRlbWVudCBpcyBhbGxvd2VkIGluIHRoZSBgYHRyeWBgIGNsYXVzZSBvZiBhIGBgdHJ5YGBcbi4uLiAgYGBmaW5hbGx5YGAgY29uc3RydWN0LiAgSWYgdGhlIGdlbmVyYXRvciBpcyBub3QgcmVzdW1lZCBiZWZvcmUgaXRcbmlzIGZpbmFsaXplZCAoYnkgcmVhY2hpbmcgYSB6ZXJvIHJlZmVyZW5jZSBjb3VudCBvciBieSBiZWluZyBnYXJiYWdlXG5jb2xsZWN0ZWQpLCB0aGUgZ2VuZXJhdG9yLWl0ZXJhdG9yXCdzIGBgY2xvc2UoKWBgIG1ldGhvZCB3aWxsIGJlXG5jYWxsZWQsIGFsbG93aW5nIGFueSBwZW5kaW5nIGBgZmluYWxseWBgIGNsYXVzZXMgdG8gZXhlY3V0ZS5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAyNTUqKiAtIFNpbXBsZSBHZW5lcmF0b3JzXG4gICAgICBUaGUgcHJvcG9zYWwgZm9yIGFkZGluZyBnZW5lcmF0b3JzIGFuZCB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudFxuICAgICAgdG8gUHl0aG9uLlxuXG4gICAqKlBFUCAwMzQyKiogLSBDb3JvdXRpbmVzIHZpYSBFbmhhbmNlZCBHZW5lcmF0b3JzXG4gICAgICBUaGUgcHJvcG9zYWwgdGhhdCwgYW1vbmcgb3RoZXIgZ2VuZXJhdG9yIGVuaGFuY2VtZW50cywgcHJvcG9zZWRcbiAgICAgIGFsbG93aW5nIGBgeWllbGRgYCB0byBhcHBlYXIgaW5zaWRlIGEgYGB0cnlgYCAuLi4gYGBmaW5hbGx5YGBcbiAgICAgIGJsb2NrLlxuJ30KKyAneWllbGQnOiAnXG5UaGUgYGB5aWVsZGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgeWllbGRfc3RtdCA6Oj0geWllbGRfZXhwcmVzc2lvblxuXG5UaGUgYGB5aWVsZGBgIHN0YXRlbWVudCBpcyBvbmx5IHVzZWQgd2hlbiBkZWZpbmluZyBhIGdlbmVyYXRvclxuZnVuY3Rpb24sIGFuZCBpcyBvbmx5IHVzZWQgaW4gdGhlIGJvZHkgb2YgdGhlIGdlbmVyYXRvciBmdW5jdGlvbi5cblVzaW5nIGEgYGB5aWVsZGBgIHN0YXRlbWVudCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgc3VmZmljaWVudCB0b1xuY2F1c2UgdGhhdCBkZWZpbml0aW9uIHRvIGNyZWF0ZSBhIGdlbmVyYXRvciBmdW5jdGlvbiBpbnN0ZWFkIG9mIGFcbm5vcm1hbCBmdW5jdGlvbi5cblxuV2hlbiBhIGdlbmVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQsIGl0IHJldHVybnMgYW4gaXRlcmF0b3Iga25vd24gYXMgYVxuZ2VuZXJhdG9yIGl0ZXJhdG9yLCBvciBtb3JlIGNvbW1vbmx5LCBhIGdlbmVyYXRvci4gIFRoZSBib2R5IG9mIHRoZVxuZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGJ5IGNhbGxpbmcgdGhlIGBgbmV4dCgpYGAgZnVuY3Rpb24gb25cbnRoZSBnZW5lcmF0b3IgcmVwZWF0ZWRseSB1bnRpbCBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuXG5XaGVuIGEgYGB5aWVsZGBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCwgdGhlIHN0YXRlIG9mIHRoZSBnZW5lcmF0b3IgaXNcbmZyb3plbiBhbmQgdGhlIHZhbHVlIG9mIGBgZXhwcmVzc2lvbl9saXN0YGAgaXMgcmV0dXJuZWQgdG9cbmBgbmV4dCgpYGBcJ3MgY2FsbGVyLiAgQnkgImZyb3plbiIgd2UgbWVhbiB0aGF0IGFsbCBsb2NhbCBzdGF0ZSBpc1xucmV0YWluZWQsIGluY2x1ZGluZyB0aGUgY3VycmVudCBiaW5kaW5ncyBvZiBsb2NhbCB2YXJpYWJsZXMsIHRoZVxuaW5zdHJ1Y3Rpb24gcG9pbnRlciwgYW5kIHRoZSBpbnRlcm5hbCBldmFsdWF0aW9uIHN0YWNrOiBlbm91Z2hcbmluZm9ybWF0aW9uIGlzIHNhdmVkIHNvIHRoYXQgdGhlIG5leHQgdGltZSBgYG5leHQoKWBgIGlzIGludm9rZWQsIHRoZVxuZnVuY3Rpb24gY2FuIHByb2NlZWQgZXhhY3RseSBhcyBpZiB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudCB3ZXJlIGp1c3RcbmFub3RoZXIgZXh0ZXJuYWwgY2FsbC5cblxuVGhlIGBgeWllbGRgYCBzdGF0ZW1lbnQgaXMgYWxsb3dlZCBpbiB0aGUgYGB0cnlgYCBjbGF1c2Ugb2YgYSBgYHRyeWBgXG4uLi4gIGBgZmluYWxseWBgIGNvbnN0cnVjdC4gIElmIHRoZSBnZW5lcmF0b3IgaXMgbm90IHJlc3VtZWQgYmVmb3JlIGl0XG5pcyBmaW5hbGl6ZWQgKGJ5IHJlYWNoaW5nIGEgemVybyByZWZlcmVuY2UgY291bnQgb3IgYnkgYmVpbmcgZ2FyYmFnZVxuY29sbGVjdGVkKSwgdGhlIGdlbmVyYXRvci1pdGVyYXRvclwncyBgYGNsb3NlKClgYCBtZXRob2Qgd2lsbCBiZVxuY2FsbGVkLCBhbGxvd2luZyBhbnkgcGVuZGluZyBgYGZpbmFsbHlgYCBjbGF1c2VzIHRvIGV4ZWN1dGUuXG5cbldoZW4gYGB5aWVsZCBmcm9tIDxleHByPmBgIGlzIHVzZWQsIGl0IHRyZWF0cyB0aGUgc3VwcGxpZWQgZXhwcmVzc2lvblxuYXMgYSBzdWJpdGVyYXRvciwgcHJvZHVjaW5nIHZhbHVlcyBmcm9tIGl0IHVudGlsIHRoZSB1bmRlcmx5aW5nXG5pdGVyYXRvciBpcyBleGhhdXN0ZWQuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEFkZGVkIGBgeWllbGQgZnJvbSA8ZXhwcj5gYCB0byBkZWxlZ2F0ZVxuICAgY29udHJvbCBmbG93IHRvIGEgc3ViaXRlcmF0b3JcblxuRm9yIGZ1bGwgZGV0YWlscyBvZiBgYHlpZWxkYGAgc2VtYW50aWNzLCByZWZlciB0byB0aGUgKllpZWxkXG5leHByZXNzaW9ucyogc2VjdGlvbi5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAyNTUqKiAtIFNpbXBsZSBHZW5lcmF0b3JzXG4gICAgICBUaGUgcHJvcG9zYWwgZm9yIGFkZGluZyBnZW5lcmF0b3JzIGFuZCB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudFxuICAgICAgdG8gUHl0aG9uLlxuXG4gICAqKlBFUCAwMzQyKiogLSBDb3JvdXRpbmVzIHZpYSBFbmhhbmNlZCBHZW5lcmF0b3JzXG4gICAgICBUaGUgcHJvcG9zYWwgdG8gZW5oYW5jZSB0aGUgQVBJIGFuZCBzeW50YXggb2YgZ2VuZXJhdG9ycywgbWFraW5nXG4gICAgICB0aGVtIHVzYWJsZSBhcyBzaW1wbGUgY29yb3V0aW5lcy5cblxuICAgKipQRVAgMDM4MCoqIC0gU3ludGF4IGZvciBEZWxlZ2F0aW5nIHRvIGEgU3ViZ2VuZXJhdG9yXG4gICAgICBUaGUgcHJvcG9zYWwgdG8gaW50cm9kdWNlIHRoZSBgYHlpZWxkX2Zyb21gYCBzeW50YXgsIG1ha2luZ1xuICAgICAgZGVsZWdhdGlvbiB0byBzdWItZ2VuZXJhdG9ycyBlYXN5LlxuJ30KZGlmZiAtLWdpdCBhL0xpYi9xdWV1ZS5weSBiL0xpYi9xdWV1ZS5weQppbmRleCBiZWU3ZWQ0Li5jMzI5NmZlIDEwMDY0NAotLS0gYS9MaWIvcXVldWUucHkKKysrIGIvTGliL3F1ZXVlLnB5CkBAIC0xLDQ5ICsxLDU3IEBACi0iIiJBIG11bHRpLXByb2R1Y2VyLCBtdWx0aS1jb25zdW1lciBxdWV1ZS4iIiIKKycnJ0EgbXVsdGktcHJvZHVjZXIsIG11bHRpLWNvbnN1bWVyIHF1ZXVlLicnJwogCi1mcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKIHRyeToKLSAgICBpbXBvcnQgdGhyZWFkaW5nIGFzIF90aHJlYWRpbmcKKyAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgaW1wb3J0IGR1bW15X3RocmVhZGluZyBhcyBfdGhyZWFkaW5nCisgICAgaW1wb3J0IGR1bW15X3RocmVhZGluZyBhcyB0aHJlYWRpbmcKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCi1pbXBvcnQgaGVhcHEKK2Zyb20gaGVhcHEgaW1wb3J0IGhlYXBwdXNoLCBoZWFwcG9wCit0cnk6CisgICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgdGltZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gdGltZSBpbXBvcnQgdGltZQogCiBfX2FsbF9fID0gWydFbXB0eScsICdGdWxsJywgJ1F1ZXVlJywgJ1ByaW9yaXR5UXVldWUnLCAnTGlmb1F1ZXVlJ10KIAogY2xhc3MgRW1wdHkoRXhjZXB0aW9uKToKLSAgICAiRXhjZXB0aW9uIHJhaXNlZCBieSBRdWV1ZS5nZXQoYmxvY2s9MCkvZ2V0X25vd2FpdCgpLiIKKyAgICAnRXhjZXB0aW9uIHJhaXNlZCBieSBRdWV1ZS5nZXQoYmxvY2s9MCkvZ2V0X25vd2FpdCgpLicKICAgICBwYXNzCiAKIGNsYXNzIEZ1bGwoRXhjZXB0aW9uKToKLSAgICAiRXhjZXB0aW9uIHJhaXNlZCBieSBRdWV1ZS5wdXQoYmxvY2s9MCkvcHV0X25vd2FpdCgpLiIKKyAgICAnRXhjZXB0aW9uIHJhaXNlZCBieSBRdWV1ZS5wdXQoYmxvY2s9MCkvcHV0X25vd2FpdCgpLicKICAgICBwYXNzCiAKIGNsYXNzIFF1ZXVlOgotICAgICIiIkNyZWF0ZSBhIHF1ZXVlIG9iamVjdCB3aXRoIGEgZ2l2ZW4gbWF4aW11bSBzaXplLgorICAgICcnJ0NyZWF0ZSBhIHF1ZXVlIG9iamVjdCB3aXRoIGEgZ2l2ZW4gbWF4aW11bSBzaXplLgogCiAgICAgSWYgbWF4c2l6ZSBpcyA8PSAwLCB0aGUgcXVldWUgc2l6ZSBpcyBpbmZpbml0ZS4KLSAgICAiIiIKKyAgICAnJycKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXhzaXplPTApOgogICAgICAgICBzZWxmLm1heHNpemUgPSBtYXhzaXplCiAgICAgICAgIHNlbGYuX2luaXQobWF4c2l6ZSkKKwogICAgICAgICAjIG11dGV4IG11c3QgYmUgaGVsZCB3aGVuZXZlciB0aGUgcXVldWUgaXMgbXV0YXRpbmcuICBBbGwgbWV0aG9kcwogICAgICAgICAjIHRoYXQgYWNxdWlyZSBtdXRleCBtdXN0IHJlbGVhc2UgaXQgYmVmb3JlIHJldHVybmluZy4gIG11dGV4CiAgICAgICAgICMgaXMgc2hhcmVkIGJldHdlZW4gdGhlIHRocmVlIGNvbmRpdGlvbnMsIHNvIGFjcXVpcmluZyBhbmQKICAgICAgICAgIyByZWxlYXNpbmcgdGhlIGNvbmRpdGlvbnMgYWxzbyBhY3F1aXJlcyBhbmQgcmVsZWFzZXMgbXV0ZXguCi0gICAgICAgIHNlbGYubXV0ZXggPSBfdGhyZWFkaW5nLkxvY2soKQorICAgICAgICBzZWxmLm11dGV4ID0gdGhyZWFkaW5nLkxvY2soKQorCiAgICAgICAgICMgTm90aWZ5IG5vdF9lbXB0eSB3aGVuZXZlciBhbiBpdGVtIGlzIGFkZGVkIHRvIHRoZSBxdWV1ZTsgYQogICAgICAgICAjIHRocmVhZCB3YWl0aW5nIHRvIGdldCBpcyBub3RpZmllZCB0aGVuLgotICAgICAgICBzZWxmLm5vdF9lbXB0eSA9IF90aHJlYWRpbmcuQ29uZGl0aW9uKHNlbGYubXV0ZXgpCisgICAgICAgIHNlbGYubm90X2VtcHR5ID0gdGhyZWFkaW5nLkNvbmRpdGlvbihzZWxmLm11dGV4KQorCiAgICAgICAgICMgTm90aWZ5IG5vdF9mdWxsIHdoZW5ldmVyIGFuIGl0ZW0gaXMgcmVtb3ZlZCBmcm9tIHRoZSBxdWV1ZTsKICAgICAgICAgIyBhIHRocmVhZCB3YWl0aW5nIHRvIHB1dCBpcyBub3RpZmllZCB0aGVuLgotICAgICAgICBzZWxmLm5vdF9mdWxsID0gX3RocmVhZGluZy5Db25kaXRpb24oc2VsZi5tdXRleCkKKyAgICAgICAgc2VsZi5ub3RfZnVsbCA9IHRocmVhZGluZy5Db25kaXRpb24oc2VsZi5tdXRleCkKKwogICAgICAgICAjIE5vdGlmeSBhbGxfdGFza3NfZG9uZSB3aGVuZXZlciB0aGUgbnVtYmVyIG9mIHVuZmluaXNoZWQgdGFza3MKICAgICAgICAgIyBkcm9wcyB0byB6ZXJvOyB0aHJlYWQgd2FpdGluZyB0byBqb2luKCkgaXMgbm90aWZpZWQgdG8gcmVzdW1lCi0gICAgICAgIHNlbGYuYWxsX3Rhc2tzX2RvbmUgPSBfdGhyZWFkaW5nLkNvbmRpdGlvbihzZWxmLm11dGV4KQorICAgICAgICBzZWxmLmFsbF90YXNrc19kb25lID0gdGhyZWFkaW5nLkNvbmRpdGlvbihzZWxmLm11dGV4KQogICAgICAgICBzZWxmLnVuZmluaXNoZWRfdGFza3MgPSAwCiAKICAgICBkZWYgdGFza19kb25lKHNlbGYpOgotICAgICAgICAiIiJJbmRpY2F0ZSB0aGF0IGEgZm9ybWVybHkgZW5xdWV1ZWQgdGFzayBpcyBjb21wbGV0ZS4KKyAgICAgICAgJycnSW5kaWNhdGUgdGhhdCBhIGZvcm1lcmx5IGVucXVldWVkIHRhc2sgaXMgY29tcGxldGUuCiAKICAgICAgICAgVXNlZCBieSBRdWV1ZSBjb25zdW1lciB0aHJlYWRzLiAgRm9yIGVhY2ggZ2V0KCkgdXNlZCB0byBmZXRjaCBhIHRhc2ssCiAgICAgICAgIGEgc3Vic2VxdWVudCBjYWxsIHRvIHRhc2tfZG9uZSgpIHRlbGxzIHRoZSBxdWV1ZSB0aGF0IHRoZSBwcm9jZXNzaW5nCkBAIC01NSw0MyArNjMsMzUgQEAKIAogICAgICAgICBSYWlzZXMgYSBWYWx1ZUVycm9yIGlmIGNhbGxlZCBtb3JlIHRpbWVzIHRoYW4gdGhlcmUgd2VyZSBpdGVtcwogICAgICAgICBwbGFjZWQgaW4gdGhlIHF1ZXVlLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5hbGxfdGFza3NfZG9uZS5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICAnJycKKyAgICAgICAgd2l0aCBzZWxmLmFsbF90YXNrc19kb25lOgogICAgICAgICAgICAgdW5maW5pc2hlZCA9IHNlbGYudW5maW5pc2hlZF90YXNrcyAtIDEKICAgICAgICAgICAgIGlmIHVuZmluaXNoZWQgPD0gMDoKICAgICAgICAgICAgICAgICBpZiB1bmZpbmlzaGVkIDwgMDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigndGFza19kb25lKCkgY2FsbGVkIHRvbyBtYW55IHRpbWVzJykKICAgICAgICAgICAgICAgICBzZWxmLmFsbF90YXNrc19kb25lLm5vdGlmeV9hbGwoKQogICAgICAgICAgICAgc2VsZi51bmZpbmlzaGVkX3Rhc2tzID0gdW5maW5pc2hlZAotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5hbGxfdGFza3NfZG9uZS5yZWxlYXNlKCkKIAogICAgIGRlZiBqb2luKHNlbGYpOgotICAgICAgICAiIiJCbG9ja3MgdW50aWwgYWxsIGl0ZW1zIGluIHRoZSBRdWV1ZSBoYXZlIGJlZW4gZ290dGVuIGFuZCBwcm9jZXNzZWQuCisgICAgICAgICcnJ0Jsb2NrcyB1bnRpbCBhbGwgaXRlbXMgaW4gdGhlIFF1ZXVlIGhhdmUgYmVlbiBnb3R0ZW4gYW5kIHByb2Nlc3NlZC4KIAogICAgICAgICBUaGUgY291bnQgb2YgdW5maW5pc2hlZCB0YXNrcyBnb2VzIHVwIHdoZW5ldmVyIGFuIGl0ZW0gaXMgYWRkZWQgdG8gdGhlCiAgICAgICAgIHF1ZXVlLiBUaGUgY291bnQgZ29lcyBkb3duIHdoZW5ldmVyIGEgY29uc3VtZXIgdGhyZWFkIGNhbGxzIHRhc2tfZG9uZSgpCiAgICAgICAgIHRvIGluZGljYXRlIHRoZSBpdGVtIHdhcyByZXRyaWV2ZWQgYW5kIGFsbCB3b3JrIG9uIGl0IGlzIGNvbXBsZXRlLgogCiAgICAgICAgIFdoZW4gdGhlIGNvdW50IG9mIHVuZmluaXNoZWQgdGFza3MgZHJvcHMgdG8gemVybywgam9pbigpIHVuYmxvY2tzLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5hbGxfdGFza3NfZG9uZS5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICAnJycKKyAgICAgICAgd2l0aCBzZWxmLmFsbF90YXNrc19kb25lOgogICAgICAgICAgICAgd2hpbGUgc2VsZi51bmZpbmlzaGVkX3Rhc2tzOgogICAgICAgICAgICAgICAgIHNlbGYuYWxsX3Rhc2tzX2RvbmUud2FpdCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLmFsbF90YXNrc19kb25lLnJlbGVhc2UoKQogCiAgICAgZGVmIHFzaXplKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGFwcHJveGltYXRlIHNpemUgb2YgdGhlIHF1ZXVlIChub3QgcmVsaWFibGUhKS4iIiIKLSAgICAgICAgc2VsZi5tdXRleC5hY3F1aXJlKCkKLSAgICAgICAgbiA9IHNlbGYuX3FzaXplKCkKLSAgICAgICAgc2VsZi5tdXRleC5yZWxlYXNlKCkKLSAgICAgICAgcmV0dXJuIG4KKyAgICAgICAgJycnUmV0dXJuIHRoZSBhcHByb3hpbWF0ZSBzaXplIG9mIHRoZSBxdWV1ZSAobm90IHJlbGlhYmxlISkuJycnCisgICAgICAgIHdpdGggc2VsZi5tdXRleDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9xc2l6ZSgpCiAKICAgICBkZWYgZW1wdHkoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eSwgRmFsc2Ugb3RoZXJ3aXNlIChub3QgcmVsaWFibGUhKS4KKyAgICAgICAgJycnUmV0dXJuIFRydWUgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LCBGYWxzZSBvdGhlcndpc2UgKG5vdCByZWxpYWJsZSEpLgogCiAgICAgICAgIFRoaXMgbWV0aG9kIGlzIGxpa2VseSB0byBiZSByZW1vdmVkIGF0IHNvbWUgcG9pbnQuICBVc2UgcXNpemUoKSA9PSAwCiAgICAgICAgIGFzIGEgZGlyZWN0IHN1YnN0aXR1dGUsIGJ1dCBiZSBhd2FyZSB0aGF0IGVpdGhlciBhcHByb2FjaCByaXNrcyBhIHJhY2UKQEAgLTEwMCwyOSArMTAwLDIzIEBACiAKICAgICAgICAgVG8gY3JlYXRlIGNvZGUgdGhhdCBuZWVkcyB0byB3YWl0IGZvciBhbGwgcXVldWVkIHRhc2tzIHRvIGJlCiAgICAgICAgIGNvbXBsZXRlZCwgdGhlIHByZWZlcnJlZCB0ZWNobmlxdWUgaXMgdG8gdXNlIHRoZSBqb2luKCkgbWV0aG9kLgotCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLm11dGV4LmFjcXVpcmUoKQotICAgICAgICBuID0gbm90IHNlbGYuX3FzaXplKCkKLSAgICAgICAgc2VsZi5tdXRleC5yZWxlYXNlKCkKLSAgICAgICAgcmV0dXJuIG4KKyAgICAgICAgJycnCisgICAgICAgIHdpdGggc2VsZi5tdXRleDoKKyAgICAgICAgICAgIHJldHVybiBub3Qgc2VsZi5fcXNpemUoKQogCiAgICAgZGVmIGZ1bGwoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBxdWV1ZSBpcyBmdWxsLCBGYWxzZSBvdGhlcndpc2UgKG5vdCByZWxpYWJsZSEpLgorICAgICAgICAnJydSZXR1cm4gVHJ1ZSBpZiB0aGUgcXVldWUgaXMgZnVsbCwgRmFsc2Ugb3RoZXJ3aXNlIChub3QgcmVsaWFibGUhKS4KIAogICAgICAgICBUaGlzIG1ldGhvZCBpcyBsaWtlbHkgdG8gYmUgcmVtb3ZlZCBhdCBzb21lIHBvaW50LiAgVXNlIHFzaXplKCkgPj0gbgogICAgICAgICBhcyBhIGRpcmVjdCBzdWJzdGl0dXRlLCBidXQgYmUgYXdhcmUgdGhhdCBlaXRoZXIgYXBwcm9hY2ggcmlza3MgYSByYWNlCiAgICAgICAgIGNvbmRpdGlvbiB3aGVyZSBhIHF1ZXVlIGNhbiBzaHJpbmsgYmVmb3JlIHRoZSByZXN1bHQgb2YgZnVsbCgpIG9yCiAgICAgICAgIHFzaXplKCkgY2FuIGJlIHVzZWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYubXV0ZXguYWNxdWlyZSgpCi0gICAgICAgIG4gPSAwIDwgc2VsZi5tYXhzaXplIDw9IHNlbGYuX3FzaXplKCkKLSAgICAgICAgc2VsZi5tdXRleC5yZWxlYXNlKCkKLSAgICAgICAgcmV0dXJuIG4KKyAgICAgICAgJycnCisgICAgICAgIHdpdGggc2VsZi5tdXRleDoKKyAgICAgICAgICAgIHJldHVybiAwIDwgc2VsZi5tYXhzaXplIDw9IHNlbGYuX3FzaXplKCkKIAogICAgIGRlZiBwdXQoc2VsZiwgaXRlbSwgYmxvY2s9VHJ1ZSwgdGltZW91dD1Ob25lKToKLSAgICAgICAgIiIiUHV0IGFuIGl0ZW0gaW50byB0aGUgcXVldWUuCisgICAgICAgICcnJ1B1dCBhbiBpdGVtIGludG8gdGhlIHF1ZXVlLgogCiAgICAgICAgIElmIG9wdGlvbmFsIGFyZ3MgJ2Jsb2NrJyBpcyB0cnVlIGFuZCAndGltZW91dCcgaXMgTm9uZSAodGhlIGRlZmF1bHQpLAogICAgICAgICBibG9jayBpZiBuZWNlc3NhcnkgdW50aWwgYSBmcmVlIHNsb3QgaXMgYXZhaWxhYmxlLiBJZiAndGltZW91dCcgaXMKQEAgLTEzMSw5ICsxMjUsOCBAQAogICAgICAgICBPdGhlcndpc2UgKCdibG9jaycgaXMgZmFsc2UpLCBwdXQgYW4gaXRlbSBvbiB0aGUgcXVldWUgaWYgYSBmcmVlIHNsb3QKICAgICAgICAgaXMgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLCBlbHNlIHJhaXNlIHRoZSBGdWxsIGV4Y2VwdGlvbiAoJ3RpbWVvdXQnCiAgICAgICAgIGlzIGlnbm9yZWQgaW4gdGhhdCBjYXNlKS4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYubm90X2Z1bGwuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgJycnCisgICAgICAgIHdpdGggc2VsZi5ub3RfZnVsbDoKICAgICAgICAgICAgIGlmIHNlbGYubWF4c2l6ZSA+IDA6CiAgICAgICAgICAgICAgICAgaWYgbm90IGJsb2NrOgogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9xc2l6ZSgpID49IHNlbGYubWF4c2l6ZToKQEAgLTE0NCwyOCArMTM3LDE4IEBACiAgICAgICAgICAgICAgICAgZWxpZiB0aW1lb3V0IDwgMDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJ3RpbWVvdXQnIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIiKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dAorICAgICAgICAgICAgICAgICAgICBlbmR0aW1lID0gdGltZSgpICsgdGltZW91dAogICAgICAgICAgICAgICAgICAgICB3aGlsZSBzZWxmLl9xc2l6ZSgpID49IHNlbGYubWF4c2l6ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IGVuZHRpbWUgLSBfdGltZSgpCisgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgPSBlbmR0aW1lIC0gdGltZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiByZW1haW5pbmcgPD0gMC4wOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEZ1bGwKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubm90X2Z1bGwud2FpdChyZW1haW5pbmcpCiAgICAgICAgICAgICBzZWxmLl9wdXQoaXRlbSkKICAgICAgICAgICAgIHNlbGYudW5maW5pc2hlZF90YXNrcyArPSAxCiAgICAgICAgICAgICBzZWxmLm5vdF9lbXB0eS5ub3RpZnkoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5ub3RfZnVsbC5yZWxlYXNlKCkKLQotICAgIGRlZiBwdXRfbm93YWl0KHNlbGYsIGl0ZW0pOgotICAgICAgICAiIiJQdXQgYW4gaXRlbSBpbnRvIHRoZSBxdWV1ZSB3aXRob3V0IGJsb2NraW5nLgotCi0gICAgICAgIE9ubHkgZW5xdWV1ZSB0aGUgaXRlbSBpZiBhIGZyZWUgc2xvdCBpcyBpbW1lZGlhdGVseSBhdmFpbGFibGUuCi0gICAgICAgIE90aGVyd2lzZSByYWlzZSB0aGUgRnVsbCBleGNlcHRpb24uCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5wdXQoaXRlbSwgRmFsc2UpCiAKICAgICBkZWYgZ2V0KHNlbGYsIGJsb2NrPVRydWUsIHRpbWVvdXQ9Tm9uZSk6Ci0gICAgICAgICIiIlJlbW92ZSBhbmQgcmV0dXJuIGFuIGl0ZW0gZnJvbSB0aGUgcXVldWUuCisgICAgICAgICcnJ1JlbW92ZSBhbmQgcmV0dXJuIGFuIGl0ZW0gZnJvbSB0aGUgcXVldWUuCiAKICAgICAgICAgSWYgb3B0aW9uYWwgYXJncyAnYmxvY2snIGlzIHRydWUgYW5kICd0aW1lb3V0JyBpcyBOb25lICh0aGUgZGVmYXVsdCksCiAgICAgICAgIGJsb2NrIGlmIG5lY2Vzc2FyeSB1bnRpbCBhbiBpdGVtIGlzIGF2YWlsYWJsZS4gSWYgJ3RpbWVvdXQnIGlzCkBAIC0xNzQsOSArMTU3LDggQEAKICAgICAgICAgT3RoZXJ3aXNlICgnYmxvY2snIGlzIGZhbHNlKSwgcmV0dXJuIGFuIGl0ZW0gaWYgb25lIGlzIGltbWVkaWF0ZWx5CiAgICAgICAgIGF2YWlsYWJsZSwgZWxzZSByYWlzZSB0aGUgRW1wdHkgZXhjZXB0aW9uICgndGltZW91dCcgaXMgaWdub3JlZAogICAgICAgICBpbiB0aGF0IGNhc2UpLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5ub3RfZW1wdHkuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgJycnCisgICAgICAgIHdpdGggc2VsZi5ub3RfZW1wdHk6CiAgICAgICAgICAgICBpZiBub3QgYmxvY2s6CiAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX3FzaXplKCk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVtcHR5CkBAIC0xODYsMjUgKzE2OCwzMSBAQAogICAgICAgICAgICAgZWxpZiB0aW1lb3V0IDwgMDoKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIndGltZW91dCcgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciIpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dAorICAgICAgICAgICAgICAgIGVuZHRpbWUgPSB0aW1lKCkgKyB0aW1lb3V0CiAgICAgICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX3FzaXplKCk6Ci0gICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IGVuZHRpbWUgLSBfdGltZSgpCisgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IGVuZHRpbWUgLSB0aW1lKCkKICAgICAgICAgICAgICAgICAgICAgaWYgcmVtYWluaW5nIDw9IDAuMDoKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVtcHR5CiAgICAgICAgICAgICAgICAgICAgIHNlbGYubm90X2VtcHR5LndhaXQocmVtYWluaW5nKQogICAgICAgICAgICAgaXRlbSA9IHNlbGYuX2dldCgpCiAgICAgICAgICAgICBzZWxmLm5vdF9mdWxsLm5vdGlmeSgpCiAgICAgICAgICAgICByZXR1cm4gaXRlbQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5ub3RfZW1wdHkucmVsZWFzZSgpCisKKyAgICBkZWYgcHV0X25vd2FpdChzZWxmLCBpdGVtKToKKyAgICAgICAgJycnUHV0IGFuIGl0ZW0gaW50byB0aGUgcXVldWUgd2l0aG91dCBibG9ja2luZy4KKworICAgICAgICBPbmx5IGVucXVldWUgdGhlIGl0ZW0gaWYgYSBmcmVlIHNsb3QgaXMgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLgorICAgICAgICBPdGhlcndpc2UgcmFpc2UgdGhlIEZ1bGwgZXhjZXB0aW9uLgorICAgICAgICAnJycKKyAgICAgICAgcmV0dXJuIHNlbGYucHV0KGl0ZW0sIGJsb2NrPUZhbHNlKQogCiAgICAgZGVmIGdldF9ub3dhaXQoc2VsZik6Ci0gICAgICAgICIiIlJlbW92ZSBhbmQgcmV0dXJuIGFuIGl0ZW0gZnJvbSB0aGUgcXVldWUgd2l0aG91dCBibG9ja2luZy4KKyAgICAgICAgJycnUmVtb3ZlIGFuZCByZXR1cm4gYW4gaXRlbSBmcm9tIHRoZSBxdWV1ZSB3aXRob3V0IGJsb2NraW5nLgogCiAgICAgICAgIE9ubHkgZ2V0IGFuIGl0ZW0gaWYgb25lIGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4gT3RoZXJ3aXNlCiAgICAgICAgIHJhaXNlIHRoZSBFbXB0eSBleGNlcHRpb24uCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5nZXQoRmFsc2UpCisgICAgICAgICcnJworICAgICAgICByZXR1cm4gc2VsZi5nZXQoYmxvY2s9RmFsc2UpCiAKICAgICAjIE92ZXJyaWRlIHRoZXNlIG1ldGhvZHMgdG8gaW1wbGVtZW50IG90aGVyIHF1ZXVlIG9yZ2FuaXphdGlvbnMKICAgICAjIChlLmcuIHN0YWNrIG9yIHByaW9yaXR5IHF1ZXVlKS4KQEAgLTIxNCw3ICsyMDIsNyBAQAogICAgIGRlZiBfaW5pdChzZWxmLCBtYXhzaXplKToKICAgICAgICAgc2VsZi5xdWV1ZSA9IGRlcXVlKCkKIAotICAgIGRlZiBfcXNpemUoc2VsZiwgbGVuPWxlbik6CisgICAgZGVmIF9xc2l6ZShzZWxmKToKICAgICAgICAgcmV0dXJuIGxlbihzZWxmLnF1ZXVlKQogCiAgICAgIyBQdXQgYSBuZXcgaXRlbSBpbiB0aGUgcXVldWUKQEAgLTIzNSwxMyArMjIzLDEzIEBACiAgICAgZGVmIF9pbml0KHNlbGYsIG1heHNpemUpOgogICAgICAgICBzZWxmLnF1ZXVlID0gW10KIAotICAgIGRlZiBfcXNpemUoc2VsZiwgbGVuPWxlbik6CisgICAgZGVmIF9xc2l6ZShzZWxmKToKICAgICAgICAgcmV0dXJuIGxlbihzZWxmLnF1ZXVlKQogCi0gICAgZGVmIF9wdXQoc2VsZiwgaXRlbSwgaGVhcHB1c2g9aGVhcHEuaGVhcHB1c2gpOgorICAgIGRlZiBfcHV0KHNlbGYsIGl0ZW0pOgogICAgICAgICBoZWFwcHVzaChzZWxmLnF1ZXVlLCBpdGVtKQogCi0gICAgZGVmIF9nZXQoc2VsZiwgaGVhcHBvcD1oZWFwcS5oZWFwcG9wKToKKyAgICBkZWYgX2dldChzZWxmKToKICAgICAgICAgcmV0dXJuIGhlYXBwb3Aoc2VsZi5xdWV1ZSkKIAogCkBAIC0yNTEsNyArMjM5LDcgQEAKICAgICBkZWYgX2luaXQoc2VsZiwgbWF4c2l6ZSk6CiAgICAgICAgIHNlbGYucXVldWUgPSBbXQogCi0gICAgZGVmIF9xc2l6ZShzZWxmLCBsZW49bGVuKToKKyAgICBkZWYgX3FzaXplKHNlbGYpOgogICAgICAgICByZXR1cm4gbGVuKHNlbGYucXVldWUpCiAKICAgICBkZWYgX3B1dChzZWxmLCBpdGVtKToKZGlmZiAtLWdpdCBhL0xpYi9yYW5kb20ucHkgYi9MaWIvcmFuZG9tLnB5CmluZGV4IDkxYmU1YWQuLjdkOGQ0ZjMgMTAwNjQ0Ci0tLSBhL0xpYi9yYW5kb20ucHkKKysrIGIvTGliL3JhbmRvbS5weQpAQCAtNDEsNyArNDEsNyBAQAogZnJvbSBtYXRoIGltcG9ydCBsb2cgYXMgX2xvZywgZXhwIGFzIF9leHAsIHBpIGFzIF9waSwgZSBhcyBfZSwgY2VpbCBhcyBfY2VpbAogZnJvbSBtYXRoIGltcG9ydCBzcXJ0IGFzIF9zcXJ0LCBhY29zIGFzIF9hY29zLCBjb3MgYXMgX2Nvcywgc2luIGFzIF9zaW4KIGZyb20gb3MgaW1wb3J0IHVyYW5kb20gYXMgX3VyYW5kb20KLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFNldCBhcyBfU2V0LCBTZXF1ZW5jZSBhcyBfU2VxdWVuY2UKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTZXQgYXMgX1NldCwgU2VxdWVuY2UgYXMgX1NlcXVlbmNlCiBmcm9tIGhhc2hsaWIgaW1wb3J0IHNoYTUxMiBhcyBfc2hhNTEyCiAKIF9fYWxsX18gPSBbIlJhbmRvbSIsInNlZWQiLCJyYW5kb20iLCJ1bmlmb3JtIiwicmFuZGludCIsImNob2ljZSIsInNhbXBsZSIsCmRpZmYgLS1naXQgYS9MaWIvcmUucHkgYi9MaWIvcmUucHkKaW5kZXggODVjNWE1Ny4uOTUyYjYwZiAxMDA2NDQKLS0tIGEvTGliL3JlLnB5CisrKyBiL0xpYi9yZS5weQpAQCAtMjE1LDcgKzIxNSw3IEBACiAKIGRlZiBwdXJnZSgpOgogICAgICJDbGVhciB0aGUgcmVndWxhciBleHByZXNzaW9uIGNhY2hlcyIKLSAgICBfY29tcGlsZV90eXBlZC5jYWNoZV9jbGVhcigpCisgICAgX2NvbXBpbGUuY2FjaGVfY2xlYXIoKQogICAgIF9jb21waWxlX3JlcGwuY2FjaGVfY2xlYXIoKQogCiBkZWYgdGVtcGxhdGUocGF0dGVybiwgZmxhZ3M9MCk6CkBAIC0yMjMsMTIgKzIyMywxNCBAQAogICAgIHJldHVybiBfY29tcGlsZShwYXR0ZXJuLCBmbGFnc3xUKQogCiBfYWxwaGFudW1fc3RyID0gZnJvemVuc2V0KAotICAgICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OTAiKQorICAgICJfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkwIikKIF9hbHBoYW51bV9ieXRlcyA9IGZyb3plbnNldCgKLSAgICBiImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNDU2Nzg5MCIpCisgICAgYiJfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkwIikKIAogZGVmIGVzY2FwZShwYXR0ZXJuKToKLSAgICAiRXNjYXBlIGFsbCBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgaW4gcGF0dGVybi4iCisgICAgIiIiCisgICAgRXNjYXBlIGFsbCB0aGUgY2hhcmFjdGVycyBpbiBwYXR0ZXJuIGV4Y2VwdCBBU0NJSSBsZXR0ZXJzLCBudW1iZXJzIGFuZCAnXycuCisgICAgIiIiCiAgICAgaWYgaXNpbnN0YW5jZShwYXR0ZXJuLCBzdHIpOgogICAgICAgICBhbHBoYW51bSA9IF9hbHBoYW51bV9zdHIKICAgICAgICAgcyA9IGxpc3QocGF0dGVybikKQEAgLTI1OSwxMSArMjYxLDggQEAKIAogX3BhdHRlcm5fdHlwZSA9IHR5cGUoc3JlX2NvbXBpbGUuY29tcGlsZSgiIiwgMCkpCiAKK0BmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9NTEyLCB0eXBlZD1UcnVlKQogZGVmIF9jb21waWxlKHBhdHRlcm4sIGZsYWdzKToKLSAgICByZXR1cm4gX2NvbXBpbGVfdHlwZWQodHlwZShwYXR0ZXJuKSwgcGF0dGVybiwgZmxhZ3MpCi0KLUBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9NTAwKQotZGVmIF9jb21waWxlX3R5cGVkKHRleHRfYnl0ZXNfdHlwZSwgcGF0dGVybiwgZmxhZ3MpOgogICAgICMgaW50ZXJuYWw6IGNvbXBpbGUgcGF0dGVybgogICAgIGlmIGlzaW5zdGFuY2UocGF0dGVybiwgX3BhdHRlcm5fdHlwZSk6CiAgICAgICAgIGlmIGZsYWdzOgpAQCAtMjc0LDcgKzI3Myw3IEBACiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBzdHJpbmcgb3IgY29tcGlsZWQgcGF0dGVybiIpCiAgICAgcmV0dXJuIHNyZV9jb21waWxlLmNvbXBpbGUocGF0dGVybiwgZmxhZ3MpCiAKLUBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9NTAwKQorQGZ1bmN0b29scy5scnVfY2FjaGUobWF4c2l6ZT01MTIpCiBkZWYgX2NvbXBpbGVfcmVwbChyZXBsLCBwYXR0ZXJuKToKICAgICAjIGludGVybmFsOiBjb21waWxlIHJlcGxhY2VtZW50IHBhdHRlcm4KICAgICByZXR1cm4gc3JlX3BhcnNlLnBhcnNlX3RlbXBsYXRlKHJlcGwsIHBhdHRlcm4pCmRpZmYgLS1naXQgYS9MaWIvcnVucHkucHkgYi9MaWIvcnVucHkucHkKaW5kZXggYTE0YTYyZS4uMzljMGU5ZiAxMDA2NDQKLS0tIGEvTGliL3J1bnB5LnB5CisrKyBiL0xpYi9ydW5weS5weQpAQCAtOSwxMyArOSwxMiBAQAogIyBXcml0dGVuIGJ5IE5pY2sgQ29naGxhbiA8bmNvZ2hsYW4gYXQgZ21haWwuY29tPgogIyAgICB0byBpbXBsZW1lbnQgUEVQIDMzOCAoRXhlY3V0aW5nIE1vZHVsZXMgYXMgU2NyaXB0cykKIAorCitpbXBvcnQgb3MKIGltcG9ydCBzeXMKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5ICMgaW1wb3J0bGliIGZpcnN0IHNvIHdlIGNhbiB0ZXN0ICMxNTM4NiB2aWEgLW0KIGltcG9ydCBpbXAKLWZyb20gcGtndXRpbCBpbXBvcnQgcmVhZF9jb2RlCi10cnk6Ci0gICAgZnJvbSBpbXAgaW1wb3J0IGdldF9sb2FkZXIKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBmcm9tIHBrZ3V0aWwgaW1wb3J0IGdldF9sb2FkZXIKK2Zyb20gcGtndXRpbCBpbXBvcnQgcmVhZF9jb2RlLCBnZXRfbG9hZGVyLCBnZXRfaW1wb3J0ZXIKIAogX19hbGxfXyA9IFsKICAgICAicnVuX21vZHVsZSIsICJydW5fcGF0aCIsCkBAIC05NSw3ICs5NCw3IEBACiAgICAgZm9yIGF0dHIgaW4gKCJnZXRfZmlsZW5hbWUiLCAiX2dldF9maWxlbmFtZSIpOgogICAgICAgICBtZXRoID0gZ2V0YXR0cihsb2FkZXIsIGF0dHIsIE5vbmUpCiAgICAgICAgIGlmIG1ldGggaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gbWV0aChtb2RfbmFtZSkKKyAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmFic3BhdGgobWV0aChtb2RfbmFtZSkpCiAgICAgcmV0dXJuIE5vbmUKIAogIyBIZWxwZXIgdG8gZ2V0IHRoZSBsb2FkZXIsIGNvZGUgYW5kIGZpbGVuYW1lIGZvciBhIG1vZHVsZQpAQCAtMTgxLDQ3ICsxODAsMjMgQEAKIGRlZiBfZ2V0X21haW5fbW9kdWxlX2RldGFpbHMoKToKICAgICAjIEhlbHBlciB0aGF0IGdpdmVzIGEgbmljZXIgZXJyb3IgbWVzc2FnZSB3aGVuIGF0dGVtcHRpbmcgdG8KICAgICAjIGV4ZWN1dGUgYSB6aXBmaWxlIG9yIGRpcmVjdG9yeSBieSBpbnZva2luZyBfX21haW5fXy5weQorICAgICMgQWxzbyBtb3ZlcyB0aGUgc3RhbmRhcmQgX19tYWluX18gb3V0IG9mIHRoZSB3YXkgc28gdGhhdCB0aGUKKyAgICAjIHByZWV4aXN0aW5nIF9fbG9hZGVyX18gZW50cnkgZG9lc24ndCBjYXVzZSBpc3N1ZXMKICAgICBtYWluX25hbWUgPSAiX19tYWluX18iCisgICAgc2F2ZWRfbWFpbiA9IHN5cy5tb2R1bGVzW21haW5fbmFtZV0KKyAgICBkZWwgc3lzLm1vZHVsZXNbbWFpbl9uYW1lXQogICAgIHRyeToKICAgICAgICAgcmV0dXJuIF9nZXRfbW9kdWxlX2RldGFpbHMobWFpbl9uYW1lKQogICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBleGM6CiAgICAgICAgIGlmIG1haW5fbmFtZSBpbiBzdHIoZXhjKToKICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJjYW4ndCBmaW5kICVyIG1vZHVsZSBpbiAlciIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1haW5fbmFtZSwgc3lzLnBhdGhbMF0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1haW5fbmFtZSwgc3lzLnBhdGhbMF0pKSBmcm9tIGV4YwogICAgICAgICByYWlzZQorICAgIGZpbmFsbHk6CisgICAgICAgIHN5cy5tb2R1bGVzW21haW5fbmFtZV0gPSBzYXZlZF9tYWluCiAKIAotIyBYWFggKG5jb2dobGFuKTogUGVyaGFwcyBleHBvc2UgdGhlIEMgQVBJIGZ1bmN0aW9uCi0jIGFzIGltcC5nZXRfaW1wb3J0ZXIgaW5zdGVhZCBvZiByZWltcGxlbWVudGluZyBpdCBpbiBQeXRob24/Ci1kZWYgX2dldF9pbXBvcnRlcihwYXRoX25hbWUpOgotICAgICIiIlB5dGhvbiB2ZXJzaW9uIG9mIFB5SW1wb3J0X0dldEltcG9ydGVyIEMgQVBJIGZ1bmN0aW9uIiIiCi0gICAgY2FjaGUgPSBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZQotICAgIHRyeToKLSAgICAgICAgaW1wb3J0ZXIgPSBjYWNoZVtwYXRoX25hbWVdCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAjIE5vdCB5ZXQgY2FjaGVkLiBGbGFnIGFzIHVzaW5nIHRoZQotICAgICAgICAjIHN0YW5kYXJkIG1hY2hpbmVyeSB1bnRpbCB3ZSBmaW5pc2gKLSAgICAgICAgIyBjaGVja2luZyB0aGUgaG9va3MKLSAgICAgICAgY2FjaGVbcGF0aF9uYW1lXSA9IE5vbmUKLSAgICAgICAgZm9yIGhvb2sgaW4gc3lzLnBhdGhfaG9va3M6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaW1wb3J0ZXIgPSBob29rKHBhdGhfbmFtZSkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgVGhlIGZvbGxvd2luZyBjaGVjayBsb29rcyBhIGJpdCBvZGQuIFRoZSB0cmljayBpcyB0aGF0Ci0gICAgICAgICAgICAjIE51bGxJbXBvcnRlciByYWlzZXMgSW1wb3J0RXJyb3IgaWYgdGhlIHN1cHBsaWVkIHBhdGggaXMgYQotICAgICAgICAgICAgIyAqdmFsaWQqIGRpcmVjdG9yeSBlbnRyeSAoYW5kIGhlbmNlIGFibGUgdG8gYmUgaGFuZGxlZAotICAgICAgICAgICAgIyBieSB0aGUgc3RhbmRhcmQgaW1wb3J0IG1hY2hpbmVyeSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpbXBvcnRlciA9IGltcC5OdWxsSW1wb3J0ZXIocGF0aF9uYW1lKQotICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGNhY2hlW3BhdGhfbmFtZV0gPSBpbXBvcnRlcgotICAgIHJldHVybiBpbXBvcnRlcgotCi1kZWYgX2dldF9jb2RlX2Zyb21fZmlsZShmbmFtZSk6CitkZWYgX2dldF9jb2RlX2Zyb21fZmlsZShydW5fbmFtZSwgZm5hbWUpOgogICAgICMgQ2hlY2sgZm9yIGEgY29tcGlsZWQgZmlsZSBmaXJzdAogICAgIHdpdGggb3BlbihmbmFtZSwgInJiIikgYXMgZjoKICAgICAgICAgY29kZSA9IHJlYWRfY29kZShmKQpAQCAtMjI5LDcgKzIwNCwxMCBAQAogICAgICAgICAjIFRoYXQgZGlkbid0IHdvcmssIHNvIHRyeSBpdCBhcyBub3JtYWwgc291cmNlIGNvZGUKICAgICAgICAgd2l0aCBvcGVuKGZuYW1lLCAicmIiKSBhcyBmOgogICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoZi5yZWFkKCksIGZuYW1lLCAnZXhlYycpCi0gICAgcmV0dXJuIGNvZGUKKyAgICAgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcihydW5fbmFtZSwgZm5hbWUpCisgICAgZWxzZToKKyAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcihydW5fbmFtZSwgZm5hbWUpCisgICAgcmV0dXJuIGNvZGUsIGxvYWRlcgogCiBkZWYgcnVuX3BhdGgocGF0aF9uYW1lLCBpbml0X2dsb2JhbHM9Tm9uZSwgcnVuX25hbWU9Tm9uZSk6CiAgICAgIiIiRXhlY3V0ZSBjb2RlIGxvY2F0ZWQgYXQgdGhlIHNwZWNpZmllZCBmaWxlc3lzdGVtIGxvY2F0aW9uCkBAIC0yNDQsMTMgKzIyMiwxMyBAQAogICAgIGlmIHJ1bl9uYW1lIGlzIE5vbmU6CiAgICAgICAgIHJ1bl9uYW1lID0gIjxydW5fcGF0aD4iCiAgICAgcGtnX25hbWUgPSBydW5fbmFtZS5ycGFydGl0aW9uKCIuIilbMF0KLSAgICBpbXBvcnRlciA9IF9nZXRfaW1wb3J0ZXIocGF0aF9uYW1lKQotICAgIGlmIGlzaW5zdGFuY2UoaW1wb3J0ZXIsIGltcC5OdWxsSW1wb3J0ZXIpOgorICAgIGltcG9ydGVyID0gZ2V0X2ltcG9ydGVyKHBhdGhfbmFtZSkKKyAgICBpZiBpc2luc3RhbmNlKGltcG9ydGVyLCAodHlwZShOb25lKSwgaW1wLk51bGxJbXBvcnRlcikpOgogICAgICAgICAjIE5vdCBhIHZhbGlkIHN5cy5wYXRoIGVudHJ5LCBzbyBydW4gdGhlIGNvZGUgZGlyZWN0bHkKICAgICAgICAgIyBleGVjZmlsZSgpIGRvZXNuJ3QgaGVscCBhcyB3ZSB3YW50IHRvIGFsbG93IGNvbXBpbGVkIGZpbGVzCi0gICAgICAgIGNvZGUgPSBfZ2V0X2NvZGVfZnJvbV9maWxlKHBhdGhfbmFtZSkKKyAgICAgICAgY29kZSwgbW9kX2xvYWRlciA9IF9nZXRfY29kZV9mcm9tX2ZpbGUocnVuX25hbWUsIHBhdGhfbmFtZSkKICAgICAgICAgcmV0dXJuIF9ydW5fbW9kdWxlX2NvZGUoY29kZSwgaW5pdF9nbG9iYWxzLCBydW5fbmFtZSwgcGF0aF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dfbmFtZT1wa2dfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kX2xvYWRlciwgcGtnX25hbWUpCiAgICAgZWxzZToKICAgICAgICAgIyBJbXBvcnRlciBpcyBkZWZpbmVkIGZvciBwYXRoLCBzbyBhZGQgaXQgdG8KICAgICAgICAgIyB0aGUgc3RhcnQgb2Ygc3lzLnBhdGgKQEAgLTI2MiwxMyArMjQwLDcgQEAKICAgICAgICAgICAgICMgaGF2ZSBubyBjaG9pY2UgYW5kIHdlIGhhdmUgdG8gcmVtb3ZlIGl0IGV2ZW4gd2hpbGUgd2UgcmVhZCB0aGUKICAgICAgICAgICAgICMgY29kZS4gSWYgd2UgZG9uJ3QgZG8gdGhpcywgYSBfX2xvYWRlcl9fIGF0dHJpYnV0ZSBpbiB0aGUKICAgICAgICAgICAgICMgZXhpc3RpbmcgX19tYWluX18gbW9kdWxlIG1heSBwcmV2ZW50IGxvY2F0aW9uIG9mIHRoZSBuZXcgbW9kdWxlLgotICAgICAgICAgICAgbWFpbl9uYW1lID0gIl9fbWFpbl9fIgotICAgICAgICAgICAgc2F2ZWRfbWFpbiA9IHN5cy5tb2R1bGVzW21haW5fbmFtZV0KLSAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1ttYWluX25hbWVdCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbW9kX25hbWUsIGxvYWRlciwgY29kZSwgZm5hbWUgPSBfZ2V0X21haW5fbW9kdWxlX2RldGFpbHMoKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzeXMubW9kdWxlc1ttYWluX25hbWVdID0gc2F2ZWRfbWFpbgorICAgICAgICAgICAgbW9kX25hbWUsIGxvYWRlciwgY29kZSwgZm5hbWUgPSBfZ2V0X21haW5fbW9kdWxlX2RldGFpbHMoKQogICAgICAgICAgICAgd2l0aCBfVGVtcE1vZHVsZShydW5fbmFtZSkgYXMgdGVtcF9tb2R1bGUsIFwKICAgICAgICAgICAgICAgICAgX01vZGlmaWVkQXJndjAocGF0aF9uYW1lKToKICAgICAgICAgICAgICAgICBtb2RfZ2xvYmFscyA9IHRlbXBfbW9kdWxlLm1vZHVsZS5fX2RpY3RfXwpkaWZmIC0tZ2l0IGEvTGliL3NjaGVkLnB5IGIvTGliL3NjaGVkLnB5CmluZGV4IGExMTk4OTIuLmNjZjhjZTkgMTAwNjQ0Ci0tLSBhL0xpYi9zY2hlZC5weQorKysgYi9MaWIvc2NoZWQucHkKQEAgLTEzLDEyICsxMywxMiBAQAogZnVuY3Rpb24gaXMgYWxsb3dlZCB0byBtb2RpZnkgdGhlIHF1ZXVlLiAgVGltZSBjYW4gYmUgZXhwcmVzc2VkIGFzCiBpbnRlZ2VycyBvciBmbG9hdGluZyBwb2ludCBudW1iZXJzLCBhcyBsb25nIGFzIGl0IGlzIGNvbnNpc3RlbnQuCiAKLUV2ZW50cyBhcmUgc3BlY2lmaWVkIGJ5IHR1cGxlcyAodGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQpLgorRXZlbnRzIGFyZSBzcGVjaWZpZWQgYnkgdHVwbGVzICh0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCwga3dhcmdzKS4KIEFzIGluIFVOSVgsIGxvd2VyIHByaW9yaXR5IG51bWJlcnMgbWVhbiBoaWdoZXIgcHJpb3JpdHk7IGluIHRoaXMKIHdheSB0aGUgcXVldWUgY2FuIGJlIG1haW50YWluZWQgYXMgYSBwcmlvcml0eSBxdWV1ZS4gIEV4ZWN1dGlvbiBvZiB0aGUKIGV2ZW50IG1lYW5zIGNhbGxpbmcgdGhlIGFjdGlvbiBmdW5jdGlvbiwgcGFzc2luZyBpdCB0aGUgYXJndW1lbnQKIHNlcXVlbmNlIGluICJhcmd1bWVudCIgKHJlbWVtYmVyIHRoYXQgaW4gUHl0aG9uLCBtdWx0aXBsZSBmdW5jdGlvbgotYXJndW1lbnRzIGFyZSBiZSBwYWNrZWQgaW4gYSBzZXF1ZW5jZSkuCithcmd1bWVudHMgYXJlIGJlIHBhY2tlZCBpbiBhIHNlcXVlbmNlKSBhbmQga2V5d29yZCBwYXJhbWV0ZXJzIGluICJrd2FyZ3MiLgogVGhlIGFjdGlvbiBmdW5jdGlvbiBtYXkgYmUgYW4gaW5zdGFuY2UgbWV0aG9kIHNvIGl0CiBoYXMgYW5vdGhlciB3YXkgdG8gcmVmZXJlbmNlIHByaXZhdGUgZGF0YSAoYmVzaWRlcyBnbG9iYWwgdmFyaWFibGVzKS4KICIiIgpAQCAtMjgsMTIgKzI4LDIxIEBACiAjIFhYWCBpbnN0ZWFkIG9mIGhhdmluZyB0byBkZWZpbmUgYSBtb2R1bGUgb3IgY2xhc3MganVzdCB0byBob2xkCiAjIFhYWCB0aGUgZ2xvYmFsIHN0YXRlIG9mIHlvdXIgcGFydGljdWxhciB0aW1lIGFuZCBkZWxheSBmdW5jdGlvbnMuCiAKK2ltcG9ydCB0aW1lCiBpbXBvcnQgaGVhcHEKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaW1wb3J0IGR1bW15X3RocmVhZGluZyBhcyB0aHJlYWRpbmcKK3RyeToKKyAgICBmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZQogCiBfX2FsbF9fID0gWyJzY2hlZHVsZXIiXQogCi1jbGFzcyBFdmVudChuYW1lZHR1cGxlKCdFdmVudCcsICd0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCcpKToKK2NsYXNzIEV2ZW50KG5hbWVkdHVwbGUoJ0V2ZW50JywgJ3RpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50LCBrd2FyZ3MnKSk6CiAgICAgZGVmIF9fZXFfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpID09IChvLnRpbWUsIG8ucHJpb3JpdHkpCiAgICAgZGVmIF9fbmVfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpICE9IChvLnRpbWUsIG8ucHJpb3JpdHkpCiAgICAgZGVmIF9fbHRfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpIDwgIChvLnRpbWUsIG8ucHJpb3JpdHkpCkBAIC00MSwzMyArNTAsNDEgQEAKICAgICBkZWYgX19ndF9fKHMsIG8pOiByZXR1cm4gKHMudGltZSwgcy5wcmlvcml0eSkgPiAgKG8udGltZSwgby5wcmlvcml0eSkKICAgICBkZWYgX19nZV9fKHMsIG8pOiByZXR1cm4gKHMudGltZSwgcy5wcmlvcml0eSkgPj0gKG8udGltZSwgby5wcmlvcml0eSkKIAorX3NlbnRpbmVsID0gb2JqZWN0KCkKKwogY2xhc3Mgc2NoZWR1bGVyOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0aW1lZnVuYywgZGVsYXlmdW5jKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0aW1lZnVuYz1fdGltZSwgZGVsYXlmdW5jPXRpbWUuc2xlZXApOgogICAgICAgICAiIiJJbml0aWFsaXplIGEgbmV3IGluc3RhbmNlLCBwYXNzaW5nIHRoZSB0aW1lIGFuZCBkZWxheQogICAgICAgICBmdW5jdGlvbnMiIiIKICAgICAgICAgc2VsZi5fcXVldWUgPSBbXQorICAgICAgICBzZWxmLl9sb2NrID0gdGhyZWFkaW5nLlJMb2NrKCkKICAgICAgICAgc2VsZi50aW1lZnVuYyA9IHRpbWVmdW5jCiAgICAgICAgIHNlbGYuZGVsYXlmdW5jID0gZGVsYXlmdW5jCiAKLSAgICBkZWYgZW50ZXJhYnMoc2VsZiwgdGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQpOgorICAgIGRlZiBlbnRlcmFicyhzZWxmLCB0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudD0oKSwga3dhcmdzPV9zZW50aW5lbCk6CiAgICAgICAgICIiIkVudGVyIGEgbmV3IGV2ZW50IGluIHRoZSBxdWV1ZSBhdCBhbiBhYnNvbHV0ZSB0aW1lLgogCiAgICAgICAgIFJldHVybnMgYW4gSUQgZm9yIHRoZSBldmVudCB3aGljaCBjYW4gYmUgdXNlZCB0byByZW1vdmUgaXQsCiAgICAgICAgIGlmIG5lY2Vzc2FyeS4KIAogICAgICAgICAiIiIKLSAgICAgICAgZXZlbnQgPSBFdmVudCh0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCkKLSAgICAgICAgaGVhcHEuaGVhcHB1c2goc2VsZi5fcXVldWUsIGV2ZW50KQotICAgICAgICByZXR1cm4gZXZlbnQgIyBUaGUgSUQKKyAgICAgICAgaWYga3dhcmdzIGlzIF9zZW50aW5lbDoKKyAgICAgICAgICAgIGt3YXJncyA9IHt9CisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIGV2ZW50ID0gRXZlbnQodGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQsIGt3YXJncykKKyAgICAgICAgICAgIGhlYXBxLmhlYXBwdXNoKHNlbGYuX3F1ZXVlLCBldmVudCkKKyAgICAgICAgICAgIHJldHVybiBldmVudCAjIFRoZSBJRAogCi0gICAgZGVmIGVudGVyKHNlbGYsIGRlbGF5LCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCk6CisgICAgZGVmIGVudGVyKHNlbGYsIGRlbGF5LCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudD0oKSwga3dhcmdzPV9zZW50aW5lbCk6CiAgICAgICAgICIiIkEgdmFyaWFudCB0aGF0IHNwZWNpZmllcyB0aGUgdGltZSBhcyBhIHJlbGF0aXZlIHRpbWUuCiAKICAgICAgICAgVGhpcyBpcyBhY3R1YWxseSB0aGUgbW9yZSBjb21tb25seSB1c2VkIGludGVyZmFjZS4KIAogICAgICAgICAiIiIKLSAgICAgICAgdGltZSA9IHNlbGYudGltZWZ1bmMoKSArIGRlbGF5Ci0gICAgICAgIHJldHVybiBzZWxmLmVudGVyYWJzKHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50KQorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICB0aW1lID0gc2VsZi50aW1lZnVuYygpICsgZGVsYXkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmVudGVyYWJzKHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50LCBrd2FyZ3MpCiAKICAgICBkZWYgY2FuY2VsKHNlbGYsIGV2ZW50KToKICAgICAgICAgIiIiUmVtb3ZlIGFuIGV2ZW50IGZyb20gdGhlIHF1ZXVlLgpAQCAtNzYsMTUgKzkzLDIwIEBACiAgICAgICAgIElmIHRoZSBldmVudCBpcyBub3QgaW4gdGhlIHF1ZXVlLCB0aGlzIHJhaXNlcyBWYWx1ZUVycm9yLgogCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLl9xdWV1ZS5yZW1vdmUoZXZlbnQpCi0gICAgICAgIGhlYXBxLmhlYXBpZnkoc2VsZi5fcXVldWUpCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHNlbGYuX3F1ZXVlLnJlbW92ZShldmVudCkKKyAgICAgICAgICAgIGhlYXBxLmhlYXBpZnkoc2VsZi5fcXVldWUpCiAKICAgICBkZWYgZW1wdHkoc2VsZik6CiAgICAgICAgICIiIkNoZWNrIHdoZXRoZXIgdGhlIHF1ZXVlIGlzIGVtcHR5LiIiIgotICAgICAgICByZXR1cm4gbm90IHNlbGYuX3F1ZXVlCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHJldHVybiBub3Qgc2VsZi5fcXVldWUKIAotICAgIGRlZiBydW4oc2VsZik6CisgICAgZGVmIHJ1bihzZWxmLCBibG9ja2luZz1UcnVlKToKICAgICAgICAgIiIiRXhlY3V0ZSBldmVudHMgdW50aWwgdGhlIHF1ZXVlIGlzIGVtcHR5LgorICAgICAgICBJZiBibG9ja2luZyBpcyBGYWxzZSBleGVjdXRlcyB0aGUgc2NoZWR1bGVkIGV2ZW50cyBkdWUgdG8KKyAgICAgICAgZXhwaXJlIHNvb25lc3QgKGlmIGFueSkgYW5kIHRoZW4gcmV0dXJuIHRoZSBkZWFkbGluZSBvZiB0aGUKKyAgICAgICAgbmV4dCBzY2hlZHVsZWQgY2FsbCBpbiB0aGUgc2NoZWR1bGVyLgogCiAgICAgICAgIFdoZW4gdGhlcmUgaXMgYSBwb3NpdGl2ZSBkZWxheSB1bnRpbCB0aGUgZmlyc3QgZXZlbnQsIHRoZQogICAgICAgICBkZWxheSBmdW5jdGlvbiBpcyBjYWxsZWQgYW5kIHRoZSBldmVudCBpcyBsZWZ0IGluIHRoZSBxdWV1ZTsKQEAgLTEwNiwzNSArMTI4LDQxIEBACiAgICAgICAgICIiIgogICAgICAgICAjIGxvY2FsaXplIHZhcmlhYmxlIGFjY2VzcyB0byBtaW5pbWl6ZSBvdmVyaGVhZAogICAgICAgICAjIGFuZCB0byBpbXByb3ZlIHRocmVhZCBzYWZldHkKKyAgICAgICAgbG9jayA9IHNlbGYuX2xvY2sKICAgICAgICAgcSA9IHNlbGYuX3F1ZXVlCiAgICAgICAgIGRlbGF5ZnVuYyA9IHNlbGYuZGVsYXlmdW5jCiAgICAgICAgIHRpbWVmdW5jID0gc2VsZi50aW1lZnVuYwogICAgICAgICBwb3AgPSBoZWFwcS5oZWFwcG9wCi0gICAgICAgIHdoaWxlIHE6Ci0gICAgICAgICAgICB0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCA9IGNoZWNrZWRfZXZlbnQgPSBxWzBdCi0gICAgICAgICAgICBub3cgPSB0aW1lZnVuYygpCi0gICAgICAgICAgICBpZiBub3cgPCB0aW1lOgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgd2l0aCBsb2NrOgorICAgICAgICAgICAgICAgIGlmIG5vdCBxOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50LCBrd2FyZ3MgPSBxWzBdCisgICAgICAgICAgICAgICAgbm93ID0gdGltZWZ1bmMoKQorICAgICAgICAgICAgICAgIGlmIHRpbWUgPiBub3c6CisgICAgICAgICAgICAgICAgICAgIGRlbGF5ID0gVHJ1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGRlbGF5ID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgcG9wKHEpCisgICAgICAgICAgICBpZiBkZWxheToKKyAgICAgICAgICAgICAgICBpZiBub3QgYmxvY2tpbmc6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aW1lIC0gbm93CiAgICAgICAgICAgICAgICAgZGVsYXlmdW5jKHRpbWUgLSBub3cpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGV2ZW50ID0gcG9wKHEpCi0gICAgICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgZXZlbnQgd2FzIG5vdCByZW1vdmVkIG9yIGFsdGVyZWQKLSAgICAgICAgICAgICAgICAjIGJ5IGFub3RoZXIgdGhyZWFkIGFmdGVyIHdlIGxhc3QgbG9va2VkIGF0IHFbMF0uCi0gICAgICAgICAgICAgICAgaWYgZXZlbnQgaXMgY2hlY2tlZF9ldmVudDoKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uKCphcmd1bWVudCkKLSAgICAgICAgICAgICAgICAgICAgZGVsYXlmdW5jKDApICAgIyBMZXQgb3RoZXIgdGhyZWFkcyBydW4KLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBoZWFwcS5oZWFwcHVzaChxLCBldmVudCkKKyAgICAgICAgICAgICAgICBhY3Rpb24oKmFyZ3VtZW50LCAqKmt3YXJncykKKyAgICAgICAgICAgICAgICBkZWxheWZ1bmMoMCkgICAjIExldCBvdGhlciB0aHJlYWRzIHJ1bgogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHF1ZXVlKHNlbGYpOgogICAgICAgICAiIiJBbiBvcmRlcmVkIGxpc3Qgb2YgdXBjb21pbmcgZXZlbnRzLgogCiAgICAgICAgIEV2ZW50cyBhcmUgbmFtZWQgdHVwbGVzIHdpdGggZmllbGRzIGZvcjoKLSAgICAgICAgICAgIHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50cworICAgICAgICAgICAgdGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnRzLCBrd2FyZ3MKIAogICAgICAgICAiIiIKICAgICAgICAgIyBVc2UgaGVhcHEgdG8gc29ydCB0aGUgcXVldWUgcmF0aGVyIHRoYW4gdXNpbmcgJ3NvcnRlZChzZWxmLl9xdWV1ZSknLgogICAgICAgICAjIFdpdGggaGVhcHEsIHR3byBldmVudHMgc2NoZWR1bGVkIGF0IHRoZSBzYW1lIHRpbWUgd2lsbCBzaG93IGluCiAgICAgICAgICMgdGhlIGFjdHVhbCBvcmRlciB0aGV5IHdvdWxkIGJlIHJldHJpZXZlZC4KLSAgICAgICAgZXZlbnRzID0gc2VsZi5fcXVldWVbOl0KLSAgICAgICAgcmV0dXJuIG1hcChoZWFwcS5oZWFwcG9wLCBbZXZlbnRzXSpsZW4oZXZlbnRzKSkKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgZXZlbnRzID0gc2VsZi5fcXVldWVbOl0KKyAgICAgICAgICAgIHJldHVybiBtYXAoaGVhcHEuaGVhcHBvcCwgW2V2ZW50c10qbGVuKGV2ZW50cykpCmRpZmYgLS1naXQgYS9MaWIvc2hsZXgucHkgYi9MaWIvc2hsZXgucHkKaW5kZXggM2VkZDNkYi4uNjlmM2I0NSAxMDA2NDQKLS0tIGEvTGliL3NobGV4LnB5CisrKyBiL0xpYi9zaGxleC5weQpAQCAtNiwxMyArNiwxNCBAQAogIyBQb3NpeCBjb21wbGlhbmNlLCBzcGxpdCgpLCBzdHJpbmcgYXJndW1lbnRzLCBhbmQKICMgaXRlcmF0b3IgaW50ZXJmYWNlIGJ5IEd1c3Rhdm8gTmllbWV5ZXIsIEFwcmlsIDIwMDMuCiAKLWltcG9ydCBvcy5wYXRoCitpbXBvcnQgb3MKK2ltcG9ydCByZQogaW1wb3J0IHN5cwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIAotX19hbGxfXyA9IFsic2hsZXgiLCAic3BsaXQiXQorX19hbGxfXyA9IFsic2hsZXgiLCAic3BsaXQiLCAicXVvdGUiXQogCiBjbGFzcyBzaGxleDoKICAgICAiQSBsZXhpY2FsIGFuYWx5emVyIGNsYXNzIGZvciBzaW1wbGUgc2hlbGwtbGlrZSBzeW50YXhlcy4iCkBAIC0yNzQsNiArMjc1LDIxIEBACiAgICAgICAgIGxleC5jb21tZW50ZXJzID0gJycKICAgICByZXR1cm4gbGlzdChsZXgpCiAKKworX2ZpbmRfdW5zYWZlID0gcmUuY29tcGlsZShyJ1teXHdAJSs9OiwuLy1dJywgcmUuQVNDSUkpLnNlYXJjaAorCitkZWYgcXVvdGUocyk6CisgICAgIiIiUmV0dXJuIGEgc2hlbGwtZXNjYXBlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgKnMqLiIiIgorICAgIGlmIG5vdCBzOgorICAgICAgICByZXR1cm4gIicnIgorICAgIGlmIF9maW5kX3Vuc2FmZShzKSBpcyBOb25lOgorICAgICAgICByZXR1cm4gcworCisgICAgIyB1c2Ugc2luZ2xlIHF1b3RlcywgYW5kIHB1dCBzaW5nbGUgcXVvdGVzIGludG8gZG91YmxlIHF1b3RlcworICAgICMgdGhlIHN0cmluZyAkJ2IgaXMgdGhlbiBxdW90ZWQgYXMgJyQnIiciJ2InCisgICAgcmV0dXJuICInIiArIHMucmVwbGFjZSgiJyIsICInXCInXCInIikgKyAiJyIKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGlmIGxlbihzeXMuYXJndikgPT0gMToKICAgICAgICAgbGV4ZXIgPSBzaGxleCgpCmRpZmYgLS1naXQgYS9MaWIvc2h1dGlsLnB5IGIvTGliL3NodXRpbC5weQppbmRleCBlZjI5YWUyLi5hMTg4NDA4IDEwMDY0NAotLS0gYS9MaWIvc2h1dGlsLnB5CisrKyBiL0xpYi9zaHV0aWwucHkKQEAgLTE1LDYgKzE1LDcgQEAKIAogdHJ5OgogICAgIGltcG9ydCBiejIKKyAgICBkZWwgYnoyCiAgICAgX0JaMl9TVVBQT1JURUQgPSBUcnVlCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgX0JaMl9TVVBQT1JURUQgPSBGYWxzZQpAQCAtMzQsNyArMzUsOSBAQAogICAgICAgICAgICAiRXhlY0Vycm9yIiwgIm1ha2VfYXJjaGl2ZSIsICJnZXRfYXJjaGl2ZV9mb3JtYXRzIiwKICAgICAgICAgICAgInJlZ2lzdGVyX2FyY2hpdmVfZm9ybWF0IiwgInVucmVnaXN0ZXJfYXJjaGl2ZV9mb3JtYXQiLAogICAgICAgICAgICAiZ2V0X3VucGFja19mb3JtYXRzIiwgInJlZ2lzdGVyX3VucGFja19mb3JtYXQiLAotICAgICAgICAgICAidW5yZWdpc3Rlcl91bnBhY2tfZm9ybWF0IiwgInVucGFja19hcmNoaXZlIiwgImlnbm9yZV9wYXR0ZXJucyJdCisgICAgICAgICAgICJ1bnJlZ2lzdGVyX3VucGFja19mb3JtYXQiLCAidW5wYWNrX2FyY2hpdmUiLAorICAgICAgICAgICAiaWdub3JlX3BhdHRlcm5zIiwgImNob3duIiwgIndoaWNoIl0KKyAgICAgICAgICAgIyBkaXNrX3VzYWdlIGlzIGFkZGVkIGxhdGVyLCBpZiBhdmFpbGFibGUgb24gdGhlIHBsYXRmb3JtCiAKIGNsYXNzIEVycm9yKEVudmlyb25tZW50RXJyb3IpOgogICAgIHBhc3MKQEAgLTc5LDggKzgyLDEzIEBACiAgICAgcmV0dXJuIChvcy5wYXRoLm5vcm1jYXNlKG9zLnBhdGguYWJzcGF0aChzcmMpKSA9PQogICAgICAgICAgICAgb3MucGF0aC5ub3JtY2FzZShvcy5wYXRoLmFic3BhdGgoZHN0KSkpCiAKLWRlZiBjb3B5ZmlsZShzcmMsIGRzdCk6Ci0gICAgIiIiQ29weSBkYXRhIGZyb20gc3JjIHRvIGRzdCIiIgorZGVmIGNvcHlmaWxlKHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSk6CisgICAgIiIiQ29weSBkYXRhIGZyb20gc3JjIHRvIGRzdC4KKworICAgIElmIGZvbGxvd19zeW1saW5rcyBpcyBub3Qgc2V0IGFuZCBzcmMgaXMgYSBzeW1ib2xpYyBsaW5rLCBhIG5ldworICAgIHN5bWxpbmsgd2lsbCBiZSBjcmVhdGVkIGluc3RlYWQgb2YgY29weWluZyB0aGUgZmlsZSBpdCBwb2ludHMgdG8uCisKKyAgICAiIiIKICAgICBpZiBfc2FtZWZpbGUoc3JjLCBkc3QpOgogICAgICAgICByYWlzZSBFcnJvcigiYCVzYCBhbmQgYCVzYCBhcmUgdGhlIHNhbWUgZmlsZSIgJSAoc3JjLCBkc3QpKQogCkBAIC05NSw1NiArMTAzLDE0NiBAQAogICAgICAgICAgICAgaWYgc3RhdC5TX0lTRklGTyhzdC5zdF9tb2RlKToKICAgICAgICAgICAgICAgICByYWlzZSBTcGVjaWFsRmlsZUVycm9yKCJgJXNgIGlzIGEgbmFtZWQgcGlwZSIgJSBmbikKIAotICAgIHdpdGggb3BlbihzcmMsICdyYicpIGFzIGZzcmM6Ci0gICAgICAgIHdpdGggb3Blbihkc3QsICd3YicpIGFzIGZkc3Q6Ci0gICAgICAgICAgICBjb3B5ZmlsZW9iaihmc3JjLCBmZHN0KQorICAgIGlmIG5vdCBmb2xsb3dfc3ltbGlua3MgYW5kIG9zLnBhdGguaXNsaW5rKHNyYyk6CisgICAgICAgIG9zLnN5bWxpbmsob3MucmVhZGxpbmsoc3JjKSwgZHN0KQorICAgIGVsc2U6CisgICAgICAgIHdpdGggb3BlbihzcmMsICdyYicpIGFzIGZzcmM6CisgICAgICAgICAgICB3aXRoIG9wZW4oZHN0LCAnd2InKSBhcyBmZHN0OgorICAgICAgICAgICAgICAgIGNvcHlmaWxlb2JqKGZzcmMsIGZkc3QpCisgICAgcmV0dXJuIGRzdAogCi1kZWYgY29weW1vZGUoc3JjLCBkc3QpOgotICAgICIiIkNvcHkgbW9kZSBiaXRzIGZyb20gc3JjIHRvIGRzdCIiIgotICAgIGlmIGhhc2F0dHIob3MsICdjaG1vZCcpOgotICAgICAgICBzdCA9IG9zLnN0YXQoc3JjKQotICAgICAgICBtb2RlID0gc3RhdC5TX0lNT0RFKHN0LnN0X21vZGUpCi0gICAgICAgIG9zLmNobW9kKGRzdCwgbW9kZSkKK2RlZiBjb3B5bW9kZShzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOgorICAgICIiIkNvcHkgbW9kZSBiaXRzIGZyb20gc3JjIHRvIGRzdC4KIAotZGVmIGNvcHlzdGF0KHNyYywgZHN0KToKLSAgICAiIiJDb3B5IGFsbCBzdGF0IGluZm8gKG1vZGUgYml0cywgYXRpbWUsIG10aW1lLCBmbGFncykgZnJvbSBzcmMgdG8gZHN0IiIiCi0gICAgc3QgPSBvcy5zdGF0KHNyYykKLSAgICBtb2RlID0gc3RhdC5TX0lNT0RFKHN0LnN0X21vZGUpCi0gICAgaWYgaGFzYXR0cihvcywgJ3V0aW1lJyk6Ci0gICAgICAgIG9zLnV0aW1lKGRzdCwgKHN0LnN0X2F0aW1lLCBzdC5zdF9tdGltZSkpCi0gICAgaWYgaGFzYXR0cihvcywgJ2NobW9kJyk6Ci0gICAgICAgIG9zLmNobW9kKGRzdCwgbW9kZSkKLSAgICBpZiBoYXNhdHRyKG9zLCAnY2hmbGFncycpIGFuZCBoYXNhdHRyKHN0LCAnc3RfZmxhZ3MnKToKKyAgICBJZiBmb2xsb3dfc3ltbGlua3MgaXMgbm90IHNldCwgc3ltbGlua3MgYXJlbid0IGZvbGxvd2VkIGlmIGFuZCBvbmx5CisgICAgaWYgYm90aCBgc3JjYCBhbmQgYGRzdGAgYXJlIHN5bWxpbmtzLiAgSWYgYGxjaG1vZGAgaXNuJ3QgYXZhaWxhYmxlCisgICAgKGUuZy4gTGludXgpIHRoaXMgbWV0aG9kIGRvZXMgbm90aGluZy4KKworICAgICIiIgorICAgIGlmIG5vdCBmb2xsb3dfc3ltbGlua3MgYW5kIG9zLnBhdGguaXNsaW5rKHNyYykgYW5kIG9zLnBhdGguaXNsaW5rKGRzdCk6CisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2htb2QnKToKKyAgICAgICAgICAgIHN0YXRfZnVuYywgY2htb2RfZnVuYyA9IG9zLmxzdGF0LCBvcy5sY2htb2QKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybgorICAgIGVsaWYgaGFzYXR0cihvcywgJ2NobW9kJyk6CisgICAgICAgIHN0YXRfZnVuYywgY2htb2RfZnVuYyA9IG9zLnN0YXQsIG9zLmNobW9kCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuCisKKyAgICBzdCA9IHN0YXRfZnVuYyhzcmMpCisgICAgY2htb2RfZnVuYyhkc3QsIHN0YXQuU19JTU9ERShzdC5zdF9tb2RlKSkKKworaWYgaGFzYXR0cihvcywgJ2xpc3R4YXR0cicpOgorICAgIGRlZiBfY29weXhhdHRyKHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSk6CisgICAgICAgICIiIkNvcHkgZXh0ZW5kZWQgZmlsZXN5c3RlbSBhdHRyaWJ1dGVzIGZyb20gYHNyY2AgdG8gYGRzdGAuCisKKyAgICAgICAgT3ZlcndyaXRlIGV4aXN0aW5nIGF0dHJpYnV0ZXMuCisKKyAgICAgICAgSWYgYGZvbGxvd19zeW1saW5rc2AgaXMgZmFsc2UsIHN5bWxpbmtzIHdvbid0IGJlIGZvbGxvd2VkLgorCisgICAgICAgICIiIgorCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLmNoZmxhZ3MoZHN0LCBzdC5zdF9mbGFncykKKyAgICAgICAgICAgIG5hbWVzID0gb3MubGlzdHhhdHRyKHNyYywgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcykKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gbm90IGluIChlcnJuby5FTk9UU1VQLCBlcnJuby5FTk9EQVRBKToKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHZhbHVlID0gb3MuZ2V0eGF0dHIoc3JjLCBuYW1lLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQorICAgICAgICAgICAgICAgIG9zLnNldHhhdHRyKGRzdCwgbmFtZSwgdmFsdWUsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gbm90IGluIChlcnJuby5FUEVSTSwgZXJybm8uRU5PVFNVUCwgZXJybm8uRU5PREFUQSk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCitlbHNlOgorICAgIGRlZiBfY29weXhhdHRyKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHBhc3MKKworZGVmIGNvcHlzdGF0KHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSk6CisgICAgIiIiQ29weSBhbGwgc3RhdCBpbmZvIChtb2RlIGJpdHMsIGF0aW1lLCBtdGltZSwgZmxhZ3MpIGZyb20gc3JjIHRvIGRzdC4KKworICAgIElmIHRoZSBvcHRpb25hbCBmbGFnIGBmb2xsb3dfc3ltbGlua3NgIGlzIG5vdCBzZXQsIHN5bWxpbmtzIGFyZW4ndCBmb2xsb3dlZCBpZiBhbmQKKyAgICBvbmx5IGlmIGJvdGggYHNyY2AgYW5kIGBkc3RgIGFyZSBzeW1saW5rcy4KKworICAgICIiIgorICAgIGRlZiBfbm9wKCphcmdzLCBucz1Ob25lLCBmb2xsb3dfc3ltbGlua3M9Tm9uZSk6CisgICAgICAgIHBhc3MKKworICAgICMgZm9sbG93IHN5bWxpbmtzIChha2EgZG9uJ3Qgbm90IGZvbGxvdyBzeW1saW5rcykKKyAgICBmb2xsb3cgPSBmb2xsb3dfc3ltbGlua3Mgb3Igbm90IChvcy5wYXRoLmlzbGluayhzcmMpIGFuZCBvcy5wYXRoLmlzbGluayhkc3QpKQorICAgIGlmIGZvbGxvdzoKKyAgICAgICAgIyB1c2UgdGhlIHJlYWwgZnVuY3Rpb24gaWYgaXQgZXhpc3RzCisgICAgICAgIGRlZiBsb29rdXAobmFtZSk6CisgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihvcywgbmFtZSwgX25vcCkKKyAgICBlbHNlOgorICAgICAgICAjIHVzZSB0aGUgcmVhbCBmdW5jdGlvbiBvbmx5IGlmIGl0IGV4aXN0cworICAgICAgICAjICphbmQqIGl0IHN1cHBvcnRzIGZvbGxvd19zeW1saW5rcworICAgICAgICBkZWYgbG9va3VwKG5hbWUpOgorICAgICAgICAgICAgZm4gPSBnZXRhdHRyKG9zLCBuYW1lLCBfbm9wKQorICAgICAgICAgICAgaWYgZm4gaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzOgorICAgICAgICAgICAgICAgIHJldHVybiBmbgorICAgICAgICAgICAgcmV0dXJuIF9ub3AKKworICAgIHN0ID0gbG9va3VwKCJzdGF0Iikoc3JjLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93KQorICAgIG1vZGUgPSBzdGF0LlNfSU1PREUoc3Quc3RfbW9kZSkKKyAgICBsb29rdXAoInV0aW1lIikoZHN0LCBucz0oc3Quc3RfYXRpbWVfbnMsIHN0LnN0X210aW1lX25zKSwKKyAgICAgICAgZm9sbG93X3N5bWxpbmtzPWZvbGxvdykKKyAgICB0cnk6CisgICAgICAgIGxvb2t1cCgiY2htb2QiKShkc3QsIG1vZGUsIGZvbGxvd19zeW1saW5rcz1mb2xsb3cpCisgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CisgICAgICAgICMgaWYgd2UgZ290IGEgTm90SW1wbGVtZW50ZWRFcnJvciwgaXQncyBiZWNhdXNlCisgICAgICAgICMgICAqIGZvbGxvd19zeW1saW5rcz1GYWxzZSwKKyAgICAgICAgIyAgICogbGNob3duKCkgaXMgdW5hdmFpbGFibGUsIGFuZAorICAgICAgICAjICAgKiBlaXRoZXIKKyAgICAgICAgIyAgICAgICAqIGZjaG93bmF0KCkgaXMgdW52YWlsYWJsZSBvcgorICAgICAgICAjICAgICAgICogZmNob3duYXQoKSBkb2Vzbid0IGltcGxlbWVudCBBVF9TWU1MSU5LX05PRk9MTE9XLgorICAgICAgICAjICAgICAgICAgKGl0IHJldHVybmVkIEVOT1NVUC4pCisgICAgICAgICMgdGhlcmVmb3JlIHdlJ3JlIG91dCBvZiBvcHRpb25zLS13ZSBzaW1wbHkgY2Fubm90IGNob3duIHRoZQorICAgICAgICAjIHN5bWxpbmsuICBnaXZlIHVwLCBzdXBwcmVzcyB0aGUgZXJyb3IuCisgICAgICAgICMgKHdoaWNoIGlzIHdoYXQgc2h1dGlsIGFsd2F5cyBkaWQgaW4gdGhpcyBjaXJjdW1zdGFuY2UuKQorICAgICAgICBwYXNzCisgICAgaWYgaGFzYXR0cihzdCwgJ3N0X2ZsYWdzJyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGxvb2t1cCgiY2hmbGFncyIpKGRzdCwgc3Quc3RfZmxhZ3MsIGZvbGxvd19zeW1saW5rcz1mb2xsb3cpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIHdoeToKICAgICAgICAgICAgIGZvciBlcnIgaW4gJ0VPUE5PVFNVUFAnLCAnRU5PVFNVUCc6CiAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihlcnJubywgZXJyKSBhbmQgd2h5LmVycm5vID09IGdldGF0dHIoZXJybm8sIGVycik6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlCisgICAgX2NvcHl4YXR0cihzcmMsIGRzdCwgZm9sbG93X3N5bWxpbmtzPWZvbGxvdykKIAotZGVmIGNvcHkoc3JjLCBkc3QpOgotICAgICIiIkNvcHkgZGF0YSBhbmQgbW9kZSBiaXRzICgiY3Agc3JjIGRzdCIpLgorZGVmIGNvcHkoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKToKKyAgICAiIiJDb3B5IGRhdGEgYW5kIG1vZGUgYml0cyAoImNwIHNyYyBkc3QiKS4gUmV0dXJuIHRoZSBmaWxlJ3MgZGVzdGluYXRpb24uCiAKICAgICBUaGUgZGVzdGluYXRpb24gbWF5IGJlIGEgZGlyZWN0b3J5LgogCisgICAgSWYgZm9sbG93X3N5bWxpbmtzIGlzIGZhbHNlLCBzeW1saW5rcyB3b24ndCBiZSBmb2xsb3dlZC4gVGhpcworICAgIHJlc2VtYmxlcyBHTlUncyAiY3AgLVAgc3JjIGRzdCIuCisKICAgICAiIiIKICAgICBpZiBvcy5wYXRoLmlzZGlyKGRzdCk6CiAgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihkc3QsIG9zLnBhdGguYmFzZW5hbWUoc3JjKSkKLSAgICBjb3B5ZmlsZShzcmMsIGRzdCkKLSAgICBjb3B5bW9kZShzcmMsIGRzdCkKKyAgICBjb3B5ZmlsZShzcmMsIGRzdCwgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcykKKyAgICBjb3B5bW9kZShzcmMsIGRzdCwgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcykKKyAgICByZXR1cm4gZHN0CiAKLWRlZiBjb3B5MihzcmMsIGRzdCk6Ci0gICAgIiIiQ29weSBkYXRhIGFuZCBhbGwgc3RhdCBpbmZvICgiY3AgLXAgc3JjIGRzdCIpLgorZGVmIGNvcHkyKHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSk6CisgICAgIiIiQ29weSBkYXRhIGFuZCBhbGwgc3RhdCBpbmZvICgiY3AgLXAgc3JjIGRzdCIpLiBSZXR1cm4gdGhlIGZpbGUncworICAgIGRlc3RpbmF0aW9uLiIKIAogICAgIFRoZSBkZXN0aW5hdGlvbiBtYXkgYmUgYSBkaXJlY3RvcnkuCiAKKyAgICBJZiBmb2xsb3dfc3ltbGlua3MgaXMgZmFsc2UsIHN5bWxpbmtzIHdvbid0IGJlIGZvbGxvd2VkLiBUaGlzCisgICAgcmVzZW1ibGVzIEdOVSdzICJjcCAtUCBzcmMgZHN0Ii4KKwogICAgICIiIgogICAgIGlmIG9zLnBhdGguaXNkaXIoZHN0KToKICAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKGRzdCwgb3MucGF0aC5iYXNlbmFtZShzcmMpKQotICAgIGNvcHlmaWxlKHNyYywgZHN0KQotICAgIGNvcHlzdGF0KHNyYywgZHN0KQorICAgIGNvcHlmaWxlKHNyYywgZHN0LCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQorICAgIGNvcHlzdGF0KHNyYywgZHN0LCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQorICAgIHJldHVybiBkc3QKIAogZGVmIGlnbm9yZV9wYXR0ZXJucygqcGF0dGVybnMpOgogICAgICIiIkZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgYXMgY29weXRyZWUoKSBpZ25vcmUgcGFyYW1ldGVyLgpAQCAtMjExLDcgKzMwOSwxMSBAQAogICAgICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsoc3JjbmFtZSk6CiAgICAgICAgICAgICAgICAgbGlua3RvID0gb3MucmVhZGxpbmsoc3JjbmFtZSkKICAgICAgICAgICAgICAgICBpZiBzeW1saW5rczoKKyAgICAgICAgICAgICAgICAgICAgIyBXZSBjYW4ndCBqdXN0IGxlYXZlIGl0IHRvIGBjb3B5X2Z1bmN0aW9uYCBiZWNhdXNlIGxlZ2FjeQorICAgICAgICAgICAgICAgICAgICAjIGNvZGUgd2l0aCBhIGN1c3RvbSBgY29weV9mdW5jdGlvbmAgbWF5IHJlbHkgb24gY29weXRyZWUKKyAgICAgICAgICAgICAgICAgICAgIyBkb2luZyB0aGUgcmlnaHQgdGhpbmcuCiAgICAgICAgICAgICAgICAgICAgIG9zLnN5bWxpbmsobGlua3RvLCBkc3RuYW1lKQorICAgICAgICAgICAgICAgICAgICBjb3B5c3RhdChzcmNuYW1lLCBkc3RuYW1lLCBmb2xsb3dfc3ltbGlua3M9bm90IHN5bWxpbmtzKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICMgaWdub3JlIGRhbmdsaW5nIHN5bWxpbmsgaWYgdGhlIGZsYWcgaXMgb24KICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGxpbmt0bykgYW5kIGlnbm9yZV9kYW5nbGluZ19zeW1saW5rczoKQEAgLTIzOSwyNCArMzQxLDEwIEBACiAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKChzcmMsIGRzdCwgc3RyKHdoeSkpKQogICAgIGlmIGVycm9yczoKICAgICAgICAgcmFpc2UgRXJyb3IoZXJyb3JzKQorICAgIHJldHVybiBkc3QKIAotZGVmIHJtdHJlZShwYXRoLCBpZ25vcmVfZXJyb3JzPUZhbHNlLCBvbmVycm9yPU5vbmUpOgotICAgICIiIlJlY3Vyc2l2ZWx5IGRlbGV0ZSBhIGRpcmVjdG9yeSB0cmVlLgotCi0gICAgSWYgaWdub3JlX2Vycm9ycyBpcyBzZXQsIGVycm9ycyBhcmUgaWdub3JlZDsgb3RoZXJ3aXNlLCBpZiBvbmVycm9yCi0gICAgaXMgc2V0LCBpdCBpcyBjYWxsZWQgdG8gaGFuZGxlIHRoZSBlcnJvciB3aXRoIGFyZ3VtZW50cyAoZnVuYywKLSAgICBwYXRoLCBleGNfaW5mbykgd2hlcmUgZnVuYyBpcyBvcy5saXN0ZGlyLCBvcy5yZW1vdmUsIG9yIG9zLnJtZGlyOwotICAgIHBhdGggaXMgdGhlIGFyZ3VtZW50IHRvIHRoYXQgZnVuY3Rpb24gdGhhdCBjYXVzZWQgaXQgdG8gZmFpbDsgYW5kCi0gICAgZXhjX2luZm8gaXMgYSB0dXBsZSByZXR1cm5lZCBieSBzeXMuZXhjX2luZm8oKS4gIElmIGlnbm9yZV9lcnJvcnMKLSAgICBpcyBmYWxzZSBhbmQgb25lcnJvciBpcyBOb25lLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkLgotCi0gICAgIiIiCi0gICAgaWYgaWdub3JlX2Vycm9yczoKLSAgICAgICAgZGVmIG9uZXJyb3IoKmFyZ3MpOgotICAgICAgICAgICAgcGFzcwotICAgIGVsaWYgb25lcnJvciBpcyBOb25lOgotICAgICAgICBkZWYgb25lcnJvcigqYXJncyk6Ci0gICAgICAgICAgICByYWlzZQorIyB2ZXJzaW9uIHZ1bG5lcmFibGUgdG8gcmFjZSBjb25kaXRpb25zCitkZWYgX3JtdHJlZV91bnNhZmUocGF0aCwgb25lcnJvcik6CiAgICAgdHJ5OgogICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhwYXRoKToKICAgICAgICAgICAgICMgc3ltbGlua3MgdG8gZGlyZWN0b3JpZXMgYXJlIGZvcmJpZGRlbiwgc2VlIGJ1ZyAjMTY2OQpAQCAtMjY4LDcgKzM1Niw3IEBACiAgICAgbmFtZXMgPSBbXQogICAgIHRyeToKICAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKHBhdGgpCi0gICAgZXhjZXB0IG9zLmVycm9yIGFzIGVycjoKKyAgICBleGNlcHQgb3MuZXJyb3I6CiAgICAgICAgIG9uZXJyb3Iob3MubGlzdGRpciwgcGF0aCwgc3lzLmV4Y19pbmZvKCkpCiAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CiAgICAgICAgIGZ1bGxuYW1lID0gb3MucGF0aC5qb2luKHBhdGgsIG5hbWUpCkBAIC0yNzcsMTcgKzM2NSwxMjEgQEAKICAgICAgICAgZXhjZXB0IG9zLmVycm9yOgogICAgICAgICAgICAgbW9kZSA9IDAKICAgICAgICAgaWYgc3RhdC5TX0lTRElSKG1vZGUpOgotICAgICAgICAgICAgcm10cmVlKGZ1bGxuYW1lLCBpZ25vcmVfZXJyb3JzLCBvbmVycm9yKQorICAgICAgICAgICAgX3JtdHJlZV91bnNhZmUoZnVsbG5hbWUsIG9uZXJyb3IpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgb3MucmVtb3ZlKGZ1bGxuYW1lKQotICAgICAgICAgICAgZXhjZXB0IG9zLmVycm9yIGFzIGVycjoKLSAgICAgICAgICAgICAgICBvbmVycm9yKG9zLnJlbW92ZSwgZnVsbG5hbWUsIHN5cy5leGNfaW5mbygpKQorICAgICAgICAgICAgICAgIG9zLnVubGluayhmdWxsbmFtZSkKKyAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgICAgICAgICBvbmVycm9yKG9zLnVubGluaywgZnVsbG5hbWUsIHN5cy5leGNfaW5mbygpKQogICAgIHRyeToKICAgICAgICAgb3Mucm1kaXIocGF0aCkKICAgICBleGNlcHQgb3MuZXJyb3I6CiAgICAgICAgIG9uZXJyb3Iob3Mucm1kaXIsIHBhdGgsIHN5cy5leGNfaW5mbygpKQogCisjIFZlcnNpb24gdXNpbmcgZmQtYmFzZWQgQVBJcyB0byBwcm90ZWN0IGFnYWluc3QgcmFjZXMKK2RlZiBfcm10cmVlX3NhZmVfZmQodG9wZmQsIHBhdGgsIG9uZXJyb3IpOgorICAgIG5hbWVzID0gW10KKyAgICB0cnk6CisgICAgICAgIG5hbWVzID0gb3MubGlzdGRpcih0b3BmZCkKKyAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgIGVyci5maWxlbmFtZSA9IHBhdGgKKyAgICAgICAgb25lcnJvcihvcy5saXN0ZGlyLCBwYXRoLCBzeXMuZXhjX2luZm8oKSkKKyAgICBmb3IgbmFtZSBpbiBuYW1lczoKKyAgICAgICAgZnVsbG5hbWUgPSBvcy5wYXRoLmpvaW4ocGF0aCwgbmFtZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3JpZ19zdCA9IG9zLnN0YXQobmFtZSwgZGlyX2ZkPXRvcGZkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgICAgICBtb2RlID0gb3JpZ19zdC5zdF9tb2RlCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgbW9kZSA9IDAKKyAgICAgICAgaWYgc3RhdC5TX0lTRElSKG1vZGUpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRpcmZkID0gb3Mub3BlbihuYW1lLCBvcy5PX1JET05MWSwgZGlyX2ZkPXRvcGZkKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgb25lcnJvcihvcy5vcGVuLCBmdWxsbmFtZSwgc3lzLmV4Y19pbmZvKCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5zYW1lc3RhdChvcmlnX3N0LCBvcy5mc3RhdChkaXJmZCkpOgorICAgICAgICAgICAgICAgICAgICAgICAgX3JtdHJlZV9zYWZlX2ZkKGRpcmZkLCBmdWxsbmFtZSwgb25lcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5ybWRpcihuYW1lLCBkaXJfZmQ9dG9wZmQpCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmVycm9yKG9zLnJtZGlyLCBmdWxsbmFtZSwgc3lzLmV4Y19pbmZvKCkpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGNhbiBvbmx5IGhhcHBlbiBpZiBzb21lb25lIHJlcGxhY2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhIGRpcmVjdG9yeSB3aXRoIGEgc3ltbGluayBhZnRlciB0aGUgY2FsbCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc3RhdC5TX0lTRElSIGFib3ZlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoIkNhbm5vdCBjYWxsIHJtdHJlZSBvbiBhIHN5bWJvbGljICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5rIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZXJyb3Iob3MucGF0aC5pc2xpbmssIGZ1bGxuYW1lLCBzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShkaXJmZCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsobmFtZSwgZGlyX2ZkPXRvcGZkKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgb25lcnJvcihvcy51bmxpbmssIGZ1bGxuYW1lLCBzeXMuZXhjX2luZm8oKSkKKworX3VzZV9mZF9mdW5jdGlvbnMgPSAoe29zLm9wZW4sIG9zLnN0YXQsIG9zLnVubGluaywgb3Mucm1kaXJ9IDw9CisgICAgICAgICAgICAgICAgICAgICBvcy5zdXBwb3J0c19kaXJfZmQgYW5kCisgICAgICAgICAgICAgICAgICAgICBvcy5saXN0ZGlyIGluIG9zLnN1cHBvcnRzX2ZkIGFuZAorICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdCBpbiBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3MpCisKK2RlZiBybXRyZWUocGF0aCwgaWdub3JlX2Vycm9ycz1GYWxzZSwgb25lcnJvcj1Ob25lKToKKyAgICAiIiJSZWN1cnNpdmVseSBkZWxldGUgYSBkaXJlY3RvcnkgdHJlZS4KKworICAgIElmIGlnbm9yZV9lcnJvcnMgaXMgc2V0LCBlcnJvcnMgYXJlIGlnbm9yZWQ7IG90aGVyd2lzZSwgaWYgb25lcnJvcgorICAgIGlzIHNldCwgaXQgaXMgY2FsbGVkIHRvIGhhbmRsZSB0aGUgZXJyb3Igd2l0aCBhcmd1bWVudHMgKGZ1bmMsCisgICAgcGF0aCwgZXhjX2luZm8pIHdoZXJlIGZ1bmMgaXMgcGxhdGZvcm0gYW5kIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudDsKKyAgICBwYXRoIGlzIHRoZSBhcmd1bWVudCB0byB0aGF0IGZ1bmN0aW9uIHRoYXQgY2F1c2VkIGl0IHRvIGZhaWw7IGFuZAorICAgIGV4Y19pbmZvIGlzIGEgdHVwbGUgcmV0dXJuZWQgYnkgc3lzLmV4Y19pbmZvKCkuICBJZiBpZ25vcmVfZXJyb3JzCisgICAgaXMgZmFsc2UgYW5kIG9uZXJyb3IgaXMgTm9uZSwgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4KKworICAgICIiIgorICAgIGlmIGlnbm9yZV9lcnJvcnM6CisgICAgICAgIGRlZiBvbmVycm9yKCphcmdzKToKKyAgICAgICAgICAgIHBhc3MKKyAgICBlbGlmIG9uZXJyb3IgaXMgTm9uZToKKyAgICAgICAgZGVmIG9uZXJyb3IoKmFyZ3MpOgorICAgICAgICAgICAgcmFpc2UKKyAgICBpZiBfdXNlX2ZkX2Z1bmN0aW9uczoKKyAgICAgICAgIyBXaGlsZSB0aGUgdW5zYWZlIHJtdHJlZSB3b3JrcyBmaW5lIG9uIGJ5dGVzLCB0aGUgZmQgYmFzZWQgZG9lcyBub3QuCisgICAgICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgorICAgICAgICAgICAgcGF0aCA9IG9zLmZzZGVjb2RlKHBhdGgpCisgICAgICAgICMgTm90ZTogVG8gZ3VhcmQgYWdhaW5zdCBzeW1saW5rIHJhY2VzLCB3ZSB1c2UgdGhlIHN0YW5kYXJkCisgICAgICAgICMgbHN0YXQoKS9vcGVuKCkvZnN0YXQoKSB0cmljay4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3JpZ19zdCA9IG9zLmxzdGF0KHBhdGgpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBvbmVycm9yKG9zLmxzdGF0LCBwYXRoLCBzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmZCA9IG9zLm9wZW4ocGF0aCwgb3MuT19SRE9OTFkpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBvbmVycm9yKG9zLmxzdGF0LCBwYXRoLCBzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBvcy5wYXRoLnNhbWVzdGF0KG9yaWdfc3QsIG9zLmZzdGF0KGZkKSk6CisgICAgICAgICAgICAgICAgX3JtdHJlZV9zYWZlX2ZkKGZkLCBwYXRoLCBvbmVycm9yKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3Mucm1kaXIocGF0aCkKKyAgICAgICAgICAgICAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICAgICAgICAgICAgICAgIG9uZXJyb3Iob3Mucm1kaXIsIHBhdGgsIHN5cy5leGNfaW5mbygpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgc3ltbGlua3MgdG8gZGlyZWN0b3JpZXMgYXJlIGZvcmJpZGRlbiwgc2VlIGJ1ZyAjMTY2OQorICAgICAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJDYW5ub3QgY2FsbCBybXRyZWUgb24gYSBzeW1ib2xpYyBsaW5rIikKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgb25lcnJvcihvcy5wYXRoLmlzbGluaywgcGF0aCwgc3lzLmV4Y19pbmZvKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gX3JtdHJlZV91bnNhZmUocGF0aCwgb25lcnJvcikKKworIyBBbGxvdyBpbnRyb3NwZWN0aW9uIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBoYXJkZW5pbmcgYWdhaW5zdCBzeW1saW5rCisjIGF0dGFja3MgaXMgc3VwcG9ydGVkIG9uIHRoZSBjdXJyZW50IHBsYXRmb3JtCitybXRyZWUuYXZvaWRzX3N5bWxpbmtfYXR0YWNrcyA9IF91c2VfZmRfZnVuY3Rpb25zCiAKIGRlZiBfYmFzZW5hbWUocGF0aCk6CiAgICAgIyBBIGJhc2VuYW1lKCkgdmFyaWFudCB3aGljaCBmaXJzdCBzdHJpcHMgdGhlIHRyYWlsaW5nIHNsYXNoLCBpZiBwcmVzZW50LgpAQCAtMjk2LDcgKzQ4OCw4IEBACiAKIGRlZiBtb3ZlKHNyYywgZHN0KToKICAgICAiIiJSZWN1cnNpdmVseSBtb3ZlIGEgZmlsZSBvciBkaXJlY3RvcnkgdG8gYW5vdGhlciBsb2NhdGlvbi4gVGhpcyBpcwotICAgIHNpbWlsYXIgdG8gdGhlIFVuaXggIm12IiBjb21tYW5kLgorICAgIHNpbWlsYXIgdG8gdGhlIFVuaXggIm12IiBjb21tYW5kLiBSZXR1cm4gdGhlIGZpbGUgb3IgZGlyZWN0b3J5J3MKKyAgICBkZXN0aW5hdGlvbi4KIAogICAgIElmIHRoZSBkZXN0aW5hdGlvbiBpcyBhIGRpcmVjdG9yeSBvciBhIHN5bWxpbmsgdG8gYSBkaXJlY3RvcnksIHRoZSBzb3VyY2UKICAgICBpcyBtb3ZlZCBpbnNpZGUgdGhlIGRpcmVjdG9yeS4gVGhlIGRlc3RpbmF0aW9uIHBhdGggbXVzdCBub3QgYWxyZWFkeQpAQCAtMzA2LDcgKzQ5OSwxMCBAQAogICAgIG92ZXJ3cml0dGVuIGRlcGVuZGluZyBvbiBvcy5yZW5hbWUoKSBzZW1hbnRpY3MuCiAKICAgICBJZiB0aGUgZGVzdGluYXRpb24gaXMgb24gb3VyIGN1cnJlbnQgZmlsZXN5c3RlbSwgdGhlbiByZW5hbWUoKSBpcyB1c2VkLgotICAgIE90aGVyd2lzZSwgc3JjIGlzIGNvcGllZCB0byB0aGUgZGVzdGluYXRpb24gYW5kIHRoZW4gcmVtb3ZlZC4KKyAgICBPdGhlcndpc2UsIHNyYyBpcyBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uIGFuZCB0aGVuIHJlbW92ZWQuIFN5bWxpbmtzIGFyZQorICAgIHJlY3JlYXRlZCB1bmRlciB0aGUgbmV3IG5hbWUgaWYgb3MucmVuYW1lKCkgZmFpbHMgYmVjYXVzZSBvZiBjcm9zcworICAgIGZpbGVzeXN0ZW0gcmVuYW1lcy4KKwogICAgIEEgbG90IG1vcmUgY291bGQgYmUgZG9uZSBoZXJlLi4uICBBIGxvb2sgYXQgYSBtdi5jIHNob3dzIGEgbG90IG9mCiAgICAgdGhlIGlzc3VlcyB0aGlzIGltcGxlbWVudGF0aW9uIGdsb3NzZXMgb3Zlci4KIApAQCAtMzI0LDggKzUyMCwxMiBAQAogICAgICAgICAgICAgcmFpc2UgRXJyb3IoIkRlc3RpbmF0aW9uIHBhdGggJyVzJyBhbHJlYWR5IGV4aXN0cyIgJSByZWFsX2RzdCkKICAgICB0cnk6CiAgICAgICAgIG9zLnJlbmFtZShzcmMsIHJlYWxfZHN0KQotICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKLSAgICAgICAgaWYgb3MucGF0aC5pc2RpcihzcmMpOgorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhzcmMpOgorICAgICAgICAgICAgbGlua3RvID0gb3MucmVhZGxpbmsoc3JjKQorICAgICAgICAgICAgb3Muc3ltbGluayhsaW5rdG8sIHJlYWxfZHN0KQorICAgICAgICAgICAgb3MudW5saW5rKHNyYykKKyAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKHNyYyk6CiAgICAgICAgICAgICBpZiBfZGVzdGluc3JjKHNyYywgZHN0KToKICAgICAgICAgICAgICAgICByYWlzZSBFcnJvcigiQ2Fubm90IG1vdmUgYSBkaXJlY3RvcnkgJyVzJyBpbnRvIGl0c2VsZiAnJXMnLiIgJSAoc3JjLCBkc3QpKQogICAgICAgICAgICAgY29weXRyZWUoc3JjLCByZWFsX2RzdCwgc3ltbGlua3M9VHJ1ZSkKQEAgLTMzMyw2ICs1MzMsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY29weTIoc3JjLCByZWFsX2RzdCkKICAgICAgICAgICAgIG9zLnVubGluayhzcmMpCisgICAgcmV0dXJuIHJlYWxfZHN0CiAKIGRlZiBfZGVzdGluc3JjKHNyYywgZHN0KToKICAgICBzcmMgPSBhYnNwYXRoKHNyYykKQEAgLTM5MSw3ICs1OTIsNyBAQAogICAgICAgICBjb21wcmVzc19leHRbJ2J6aXAyJ10gPSAnLmJ6MicKIAogICAgICMgZmxhZ3MgZm9yIGNvbXByZXNzaW9uIHByb2dyYW0sIGVhY2ggZWxlbWVudCBvZiBsaXN0IHdpbGwgYmUgYW4gYXJndW1lbnQKLSAgICBpZiBjb21wcmVzcyBpcyBub3QgTm9uZSBhbmQgY29tcHJlc3Mgbm90IGluIGNvbXByZXNzX2V4dC5rZXlzKCk6CisgICAgaWYgY29tcHJlc3MgaXMgbm90IE5vbmUgYW5kIGNvbXByZXNzIG5vdCBpbiBjb21wcmVzc19leHQ6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJhZCB2YWx1ZSBmb3IgJ2NvbXByZXNzJywgb3IgY29tcHJlc3Npb24gZm9ybWF0IG5vdCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnRlZCA6IHswfSIuZm9ybWF0KGNvbXByZXNzKSkKIApAQCAtNDk2LDcgKzY5Nyw3IEBACiBfQVJDSElWRV9GT1JNQVRTID0gewogICAgICdnenRhcic6IChfbWFrZV90YXJiYWxsLCBbKCdjb21wcmVzcycsICdnemlwJyldLCAiZ3ppcCdlZCB0YXItZmlsZSIpLAogICAgICd0YXInOiAgIChfbWFrZV90YXJiYWxsLCBbKCdjb21wcmVzcycsIE5vbmUpXSwgInVuY29tcHJlc3NlZCB0YXIgZmlsZSIpLAotICAgICd6aXAnOiAgIChfbWFrZV96aXBmaWxlLCBbXSwiWklQIGZpbGUiKQorICAgICd6aXAnOiAgIChfbWFrZV96aXBmaWxlLCBbXSwgIlpJUCBmaWxlIikKICAgICB9CiAKIGlmIF9CWjJfU1VQUE9SVEVEOgpAQCAtNTI5LDcgKzczMCw3IEBACiAgICAgaWYgbm90IGlzaW5zdGFuY2UoZXh0cmFfYXJncywgKHR1cGxlLCBsaXN0KSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZXh0cmFfYXJncyBuZWVkcyB0byBiZSBhIHNlcXVlbmNlJykKICAgICBmb3IgZWxlbWVudCBpbiBleHRyYV9hcmdzOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlbGVtZW50LCAodHVwbGUsIGxpc3QpKSBvciBsZW4oZWxlbWVudCkgIT0yIDoKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZWxlbWVudCwgKHR1cGxlLCBsaXN0KSkgb3IgbGVuKGVsZW1lbnQpICE9MjoKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZXh0cmFfYXJncyBlbGVtZW50cyBhcmUgOiAoYXJnX25hbWUsIHZhbHVlKScpCiAKICAgICBfQVJDSElWRV9GT1JNQVRTW25hbWVdID0gKGZ1bmN0aW9uLCBleHRyYV9hcmdzLCBkZXNjcmlwdGlvbikKQEAgLTY4MSw3ICs4ODIsNyBAQAogICAgICAgICAgICAgaWYgbm90IG5hbWUuZW5kc3dpdGgoJy8nKToKICAgICAgICAgICAgICAgICAjIGZpbGUKICAgICAgICAgICAgICAgICBkYXRhID0gemlwLnJlYWQoaW5mby5maWxlbmFtZSkKLSAgICAgICAgICAgICAgICBmID0gb3Blbih0YXJnZXQsJ3diJykKKyAgICAgICAgICAgICAgICBmID0gb3Blbih0YXJnZXQsICd3YicpCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGRhdGEpCiAgICAgICAgICAgICAgICAgZmluYWxseToKQEAgLTc1NSwzICs5NTYsMTcwIEBACiAgICAgICAgIGZ1bmMgPSBfVU5QQUNLX0ZPUk1BVFNbZm9ybWF0XVsxXQogICAgICAgICBrd2FyZ3MgPSBkaWN0KF9VTlBBQ0tfRk9STUFUU1tmb3JtYXRdWzJdKQogICAgICAgICBmdW5jKGZpbGVuYW1lLCBleHRyYWN0X2RpciwgKiprd2FyZ3MpCisKKworaWYgaGFzYXR0cihvcywgJ3N0YXR2ZnMnKToKKworICAgIF9fYWxsX18uYXBwZW5kKCdkaXNrX3VzYWdlJykKKyAgICBfbnR1cGxlX2Rpc2t1c2FnZSA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoJ3VzYWdlJywgJ3RvdGFsIHVzZWQgZnJlZScpCisKKyAgICBkZWYgZGlza191c2FnZShwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIGRpc2sgdXNhZ2Ugc3RhdGlzdGljcyBhYm91dCB0aGUgZ2l2ZW4gcGF0aC4KKworICAgICAgICBSZXR1cm5lZCB2YWx1ZSBpcyBhIG5hbWVkIHR1cGxlIHdpdGggYXR0cmlidXRlcyAndG90YWwnLCAndXNlZCcgYW5kCisgICAgICAgICdmcmVlJywgd2hpY2ggYXJlIHRoZSBhbW91bnQgb2YgdG90YWwsIHVzZWQgYW5kIGZyZWUgc3BhY2UsIGluIGJ5dGVzLgorICAgICAgICAiIiIKKyAgICAgICAgc3QgPSBvcy5zdGF0dmZzKHBhdGgpCisgICAgICAgIGZyZWUgPSBzdC5mX2JhdmFpbCAqIHN0LmZfZnJzaXplCisgICAgICAgIHRvdGFsID0gc3QuZl9ibG9ja3MgKiBzdC5mX2Zyc2l6ZQorICAgICAgICB1c2VkID0gKHN0LmZfYmxvY2tzIC0gc3QuZl9iZnJlZSkgKiBzdC5mX2Zyc2l6ZQorICAgICAgICByZXR1cm4gX250dXBsZV9kaXNrdXNhZ2UodG90YWwsIHVzZWQsIGZyZWUpCisKK2VsaWYgb3MubmFtZSA9PSAnbnQnOgorCisgICAgaW1wb3J0IG50CisgICAgX19hbGxfXy5hcHBlbmQoJ2Rpc2tfdXNhZ2UnKQorICAgIF9udHVwbGVfZGlza3VzYWdlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgndXNhZ2UnLCAndG90YWwgdXNlZCBmcmVlJykKKworICAgIGRlZiBkaXNrX3VzYWdlKHBhdGgpOgorICAgICAgICAiIiJSZXR1cm4gZGlzayB1c2FnZSBzdGF0aXN0aWNzIGFib3V0IHRoZSBnaXZlbiBwYXRoLgorCisgICAgICAgIFJldHVybmVkIHZhbHVzIGlzIGEgbmFtZWQgdHVwbGUgd2l0aCBhdHRyaWJ1dGVzICd0b3RhbCcsICd1c2VkJyBhbmQKKyAgICAgICAgJ2ZyZWUnLCB3aGljaCBhcmUgdGhlIGFtb3VudCBvZiB0b3RhbCwgdXNlZCBhbmQgZnJlZSBzcGFjZSwgaW4gYnl0ZXMuCisgICAgICAgICIiIgorICAgICAgICB0b3RhbCwgZnJlZSA9IG50Ll9nZXRkaXNrdXNhZ2UocGF0aCkKKyAgICAgICAgdXNlZCA9IHRvdGFsIC0gZnJlZQorICAgICAgICByZXR1cm4gX250dXBsZV9kaXNrdXNhZ2UodG90YWwsIHVzZWQsIGZyZWUpCisKKworZGVmIGNob3duKHBhdGgsIHVzZXI9Tm9uZSwgZ3JvdXA9Tm9uZSk6CisgICAgIiIiQ2hhbmdlIG93bmVyIHVzZXIgYW5kIGdyb3VwIG9mIHRoZSBnaXZlbiBwYXRoLgorCisgICAgdXNlciBhbmQgZ3JvdXAgY2FuIGJlIHRoZSB1aWQvZ2lkIG9yIHRoZSB1c2VyL2dyb3VwIG5hbWVzLCBhbmQgaW4gdGhhdCBjYXNlLAorICAgIHRoZXkgYXJlIGNvbnZlcnRlZCB0byB0aGVpciByZXNwZWN0aXZlIHVpZC9naWQuCisgICAgIiIiCisKKyAgICBpZiB1c2VyIGlzIE5vbmUgYW5kIGdyb3VwIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVzZXIgYW5kL29yIGdyb3VwIG11c3QgYmUgc2V0IikKKworICAgIF91c2VyID0gdXNlcgorICAgIF9ncm91cCA9IGdyb3VwCisKKyAgICAjIC0xIG1lYW5zIGRvbid0IGNoYW5nZSBpdAorICAgIGlmIHVzZXIgaXMgTm9uZToKKyAgICAgICAgX3VzZXIgPSAtMQorICAgICMgdXNlciBjYW4gZWl0aGVyIGJlIGFuIGludCAodGhlIHVpZCkgb3IgYSBzdHJpbmcgKHRoZSBzeXN0ZW0gdXNlcm5hbWUpCisgICAgZWxpZiBpc2luc3RhbmNlKHVzZXIsIHN0cik6CisgICAgICAgIF91c2VyID0gX2dldF91aWQodXNlcikKKyAgICAgICAgaWYgX3VzZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIExvb2t1cEVycm9yKCJubyBzdWNoIHVzZXI6IHshcn0iLmZvcm1hdCh1c2VyKSkKKworICAgIGlmIGdyb3VwIGlzIE5vbmU6CisgICAgICAgIF9ncm91cCA9IC0xCisgICAgZWxpZiBub3QgaXNpbnN0YW5jZShncm91cCwgaW50KToKKyAgICAgICAgX2dyb3VwID0gX2dldF9naWQoZ3JvdXApCisgICAgICAgIGlmIF9ncm91cCBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgTG9va3VwRXJyb3IoIm5vIHN1Y2ggZ3JvdXA6IHshcn0iLmZvcm1hdChncm91cCkpCisKKyAgICBvcy5jaG93bihwYXRoLCBfdXNlciwgX2dyb3VwKQorCitkZWYgZ2V0X3Rlcm1pbmFsX3NpemUoZmFsbGJhY2s9KDgwLCAyNCkpOgorICAgICIiIkdldCB0aGUgc2l6ZSBvZiB0aGUgdGVybWluYWwgd2luZG93LgorCisgICAgRm9yIGVhY2ggb2YgdGhlIHR3byBkaW1lbnNpb25zLCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUsIENPTFVNTlMKKyAgICBhbmQgTElORVMgcmVzcGVjdGl2ZWx5LCBpcyBjaGVja2VkLiBJZiB0aGUgdmFyaWFibGUgaXMgZGVmaW5lZCBhbmQKKyAgICB0aGUgdmFsdWUgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBpdCBpcyB1c2VkLgorCisgICAgV2hlbiBDT0xVTU5TIG9yIExJTkVTIGlzIG5vdCBkZWZpbmVkLCB3aGljaCBpcyB0aGUgY29tbW9uIGNhc2UsCisgICAgdGhlIHRlcm1pbmFsIGNvbm5lY3RlZCB0byBzeXMuX19zdGRvdXRfXyBpcyBxdWVyaWVkCisgICAgYnkgaW52b2tpbmcgb3MuZ2V0X3Rlcm1pbmFsX3NpemUuCisKKyAgICBJZiB0aGUgdGVybWluYWwgc2l6ZSBjYW5ub3QgYmUgc3VjY2Vzc2Z1bGx5IHF1ZXJpZWQsIGVpdGhlciBiZWNhdXNlCisgICAgdGhlIHN5c3RlbSBkb2Vzbid0IHN1cHBvcnQgcXVlcnlpbmcsIG9yIGJlY2F1c2Ugd2UgYXJlIG5vdAorICAgIGNvbm5lY3RlZCB0byBhIHRlcm1pbmFsLCB0aGUgdmFsdWUgZ2l2ZW4gaW4gZmFsbGJhY2sgcGFyYW1ldGVyCisgICAgaXMgdXNlZC4gRmFsbGJhY2sgZGVmYXVsdHMgdG8gKDgwLCAyNCkgd2hpY2ggaXMgdGhlIGRlZmF1bHQKKyAgICBzaXplIHVzZWQgYnkgbWFueSB0ZXJtaW5hbCBlbXVsYXRvcnMuCisKKyAgICBUaGUgdmFsdWUgcmV0dXJuZWQgaXMgYSBuYW1lZCB0dXBsZSBvZiB0eXBlIG9zLnRlcm1pbmFsX3NpemUuCisgICAgIiIiCisgICAgIyBjb2x1bW5zLCBsaW5lcyBhcmUgdGhlIHdvcmtpbmcgdmFsdWVzCisgICAgdHJ5OgorICAgICAgICBjb2x1bW5zID0gaW50KG9zLmVudmlyb25bJ0NPTFVNTlMnXSkKKyAgICBleGNlcHQgKEtleUVycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgY29sdW1ucyA9IDAKKworICAgIHRyeToKKyAgICAgICAgbGluZXMgPSBpbnQob3MuZW52aXJvblsnTElORVMnXSkKKyAgICBleGNlcHQgKEtleUVycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgbGluZXMgPSAwCisKKyAgICAjIG9ubHkgcXVlcnkgaWYgbmVjZXNzYXJ5CisgICAgaWYgY29sdW1ucyA8PSAwIG9yIGxpbmVzIDw9IDA6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNpemUgPSBvcy5nZXRfdGVybWluYWxfc2l6ZShzeXMuX19zdGRvdXRfXy5maWxlbm8oKSkKKyAgICAgICAgZXhjZXB0IChOYW1lRXJyb3IsIE9TRXJyb3IpOgorICAgICAgICAgICAgc2l6ZSA9IG9zLnRlcm1pbmFsX3NpemUoZmFsbGJhY2spCisgICAgICAgIGlmIGNvbHVtbnMgPD0gMDoKKyAgICAgICAgICAgIGNvbHVtbnMgPSBzaXplLmNvbHVtbnMKKyAgICAgICAgaWYgbGluZXMgPD0gMDoKKyAgICAgICAgICAgIGxpbmVzID0gc2l6ZS5saW5lcworCisgICAgcmV0dXJuIG9zLnRlcm1pbmFsX3NpemUoKGNvbHVtbnMsIGxpbmVzKSkKKworZGVmIHdoaWNoKGNtZCwgbW9kZT1vcy5GX09LIHwgb3MuWF9PSywgcGF0aD1Ob25lKToKKyAgICAiIiJHaXZlbiBhIGNvbW1hbmQsIG1vZGUsIGFuZCBhIFBBVEggc3RyaW5nLCByZXR1cm4gdGhlIHBhdGggd2hpY2gKKyAgICBjb25mb3JtcyB0byB0aGUgZ2l2ZW4gbW9kZSBvbiB0aGUgUEFUSCwgb3IgTm9uZSBpZiB0aGVyZSBpcyBubyBzdWNoCisgICAgZmlsZS4KKworICAgIGBtb2RlYCBkZWZhdWx0cyB0byBvcy5GX09LIHwgb3MuWF9PSy4gYHBhdGhgIGRlZmF1bHRzIHRvIHRoZSByZXN1bHQKKyAgICBvZiBvcy5lbnZpcm9uLmdldCgiUEFUSCIpLCBvciBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIGEgY3VzdG9tIHNlYXJjaAorICAgIHBhdGguCisKKyAgICAiIiIKKyAgICAjIENoZWNrIHRoYXQgYSBnaXZlbiBmaWxlIGNhbiBiZSBhY2Nlc3NlZCB3aXRoIHRoZSBjb3JyZWN0IG1vZGUuCisgICAgIyBBZGRpdGlvbmFsbHkgY2hlY2sgdGhhdCBgZmlsZWAgaXMgbm90IGEgZGlyZWN0b3J5LCBhcyBvbiBXaW5kb3dzCisgICAgIyBkaXJlY3RvcmllcyBwYXNzIHRoZSBvcy5hY2Nlc3MgY2hlY2suCisgICAgZGVmIF9hY2Nlc3NfY2hlY2soZm4sIG1vZGUpOgorICAgICAgICByZXR1cm4gKG9zLnBhdGguZXhpc3RzKGZuKSBhbmQgb3MuYWNjZXNzKGZuLCBtb2RlKQorICAgICAgICAgICAgICAgIGFuZCBub3Qgb3MucGF0aC5pc2RpcihmbikpCisKKyAgICAjIElmIHdlJ3JlIGdpdmVuIGEgcGF0aCB3aXRoIGEgZGlyZWN0b3J5IHBhcnQsIGxvb2sgaXQgdXAgZGlyZWN0bHkgcmF0aGVyCisgICAgIyB0aGFuIHJlZmVycmluZyB0byBQQVRIIGRpcmVjdG9yaWVzLiBUaGlzIGluY2x1ZGVzIGNoZWNraW5nIHJlbGF0aXZlIHRvIHRoZQorICAgICMgY3VycmVudCBkaXJlY3RvcnksIGUuZy4gLi9zY3JpcHQKKyAgICBpZiBvcy5wYXRoLmRpcm5hbWUoY21kKToKKyAgICAgICAgaWYgX2FjY2Vzc19jaGVjayhjbWQsIG1vZGUpOgorICAgICAgICAgICAgcmV0dXJuIGNtZAorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgcGF0aCA9IChwYXRoIG9yIG9zLmVudmlyb24uZ2V0KCJQQVRIIiwgb3MuZGVmcGF0aCkpLnNwbGl0KG9zLnBhdGhzZXApCisKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKKyAgICAgICAgIyBUaGUgY3VycmVudCBkaXJlY3RvcnkgdGFrZXMgcHJlY2VkZW5jZSBvbiBXaW5kb3dzLgorICAgICAgICBpZiBub3Qgb3MuY3VyZGlyIGluIHBhdGg6CisgICAgICAgICAgICBwYXRoLmluc2VydCgwLCBvcy5jdXJkaXIpCisKKyAgICAgICAgIyBQQVRIRVhUIGlzIG5lY2Vzc2FyeSB0byBjaGVjayBvbiBXaW5kb3dzLgorICAgICAgICBwYXRoZXh0ID0gb3MuZW52aXJvbi5nZXQoIlBBVEhFWFQiLCAiIikuc3BsaXQob3MucGF0aHNlcCkKKyAgICAgICAgIyBTZWUgaWYgdGhlIGdpdmVuIGZpbGUgbWF0Y2hlcyBhbnkgb2YgdGhlIGV4cGVjdGVkIHBhdGggZXh0ZW5zaW9ucy4KKyAgICAgICAgIyBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gc2hvcnQgY2lyY3VpdCB3aGVuIGdpdmVuICJweXRob24uZXhlIi4KKyAgICAgICAgIyBJZiBpdCBkb2VzIG1hdGNoLCBvbmx5IHRlc3QgdGhhdCBvbmUsIG90aGVyd2lzZSB3ZSBoYXZlIHRvIHRyeQorICAgICAgICAjIG90aGVycy4KKyAgICAgICAgaWYgYW55KGNtZC5sb3dlcigpLmVuZHN3aXRoKGV4dC5sb3dlcigpKSBmb3IgZXh0IGluIHBhdGhleHQpOgorICAgICAgICAgICAgZmlsZXMgPSBbY21kXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmlsZXMgPSBbY21kICsgZXh0IGZvciBleHQgaW4gcGF0aGV4dF0KKyAgICBlbHNlOgorICAgICAgICAjIE9uIG90aGVyIHBsYXRmb3JtcyB5b3UgZG9uJ3QgaGF2ZSB0aGluZ3MgbGlrZSBQQVRIRVhUIHRvIHRlbGwgeW91CisgICAgICAgICMgd2hhdCBmaWxlIHN1ZmZpeGVzIGFyZSBleGVjdXRhYmxlLCBzbyBqdXN0IHBhc3Mgb24gY21kIGFzLWlzLgorICAgICAgICBmaWxlcyA9IFtjbWRdCisKKyAgICBzZWVuID0gc2V0KCkKKyAgICBmb3IgZGlyIGluIHBhdGg6CisgICAgICAgIG5vcm1kaXIgPSBvcy5wYXRoLm5vcm1jYXNlKGRpcikKKyAgICAgICAgaWYgbm90IG5vcm1kaXIgaW4gc2VlbjoKKyAgICAgICAgICAgIHNlZW4uYWRkKG5vcm1kaXIpCisgICAgICAgICAgICBmb3IgdGhlZmlsZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKGRpciwgdGhlZmlsZSkKKyAgICAgICAgICAgICAgICBpZiBfYWNjZXNzX2NoZWNrKG5hbWUsIG1vZGUpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZQorICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9MaWIvc2l0ZS5weSBiL0xpYi9zaXRlLnB5CmluZGV4IGEyYzBiZWMuLmI3NTEwMDYgMTAwNjQ0Ci0tLSBhL0xpYi9zaXRlLnB5CisrKyBiL0xpYi9zaXRlLnB5CkBAIC0xMyw2ICsxMywxOSBAQAogcmVzdWx0aW5nIGRpcmVjdG9yaWVzLCBpZiB0aGV5IGV4aXN0LCBhcmUgYXBwZW5kZWQgdG8gc3lzLnBhdGgsIGFuZAogYWxzbyBpbnNwZWN0ZWQgZm9yIHBhdGggY29uZmlndXJhdGlvbiBmaWxlcy4KIAorSWYgYSBmaWxlIG5hbWVkICJweXZlbnYuY2ZnIiBleGlzdHMgb25lIGRpcmVjdG9yeSBhYm92ZSBzeXMuZXhlY3V0YWJsZSwKK3N5cy5wcmVmaXggYW5kIHN5cy5leGVjX3ByZWZpeCBhcmUgc2V0IHRvIHRoYXQgZGlyZWN0b3J5IGFuZAoraXQgaXMgYWxzbyBjaGVja2VkIGZvciBzaXRlLXBhY2thZ2VzIGFuZCBzaXRlLXB5dGhvbiAoc3lzLmJhc2VfcHJlZml4IGFuZAorc3lzLmJhc2VfZXhlY19wcmVmaXggd2lsbCBhbHdheXMgYmUgdGhlICJyZWFsIiBwcmVmaXhlcyBvZiB0aGUgUHl0aG9uCitpbnN0YWxsYXRpb24pLiBJZiAicHl2ZW52LmNmZyIgKGEgYm9vdHN0cmFwIGNvbmZpZ3VyYXRpb24gZmlsZSkgY29udGFpbnMKK3RoZSBrZXkgImluY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXMiIHNldCB0byBhbnl0aGluZyBvdGhlciB0aGFuICJmYWxzZSIKKyhjYXNlLWluc2Vuc2l0aXZlKSwgdGhlIHN5c3RlbS1sZXZlbCBwcmVmaXhlcyB3aWxsIHN0aWxsIGFsc28gYmUKK3NlYXJjaGVkIGZvciBzaXRlLXBhY2thZ2VzOyBvdGhlcndpc2UgdGhleSB3b24ndC4KKworQWxsIG9mIHRoZSByZXN1bHRpbmcgc2l0ZS1zcGVjaWZpYyBkaXJlY3RvcmllcywgaWYgdGhleSBleGlzdCwgYXJlCithcHBlbmRlZCB0byBzeXMucGF0aCwgYW5kIGFsc28gaW5zcGVjdGVkIGZvciBwYXRoIGNvbmZpZ3VyYXRpb24KK2ZpbGVzLgorCiBBIHBhdGggY29uZmlndXJhdGlvbiBmaWxlIGlzIGEgZmlsZSB3aG9zZSBuYW1lIGhhcyB0aGUgZm9ybQogPHBhY2thZ2U+LnB0aDsgaXRzIGNvbnRlbnRzIGFyZSBhZGRpdGlvbmFsIGRpcmVjdG9yaWVzIChvbmUgcGVyIGxpbmUpCiB0byBiZSBhZGRlZCB0byBzeXMucGF0aC4gIE5vbi1leGlzdGluZyBkaXJlY3RvcmllcyAob3IKQEAgLTU0LDggKzY3LDggQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCitpbXBvcnQgcmUKIGltcG9ydCBidWlsdGlucwotaW1wb3J0IHRyYWNlYmFjawogCiAjIFByZWZpeGVzIGZvciBzaXRlLXBhY2thZ2VzOyBhZGQgYWRkaXRpb25hbCBwcmVmaXhlcyBsaWtlIC91c3IvbG9jYWwgaGVyZQogUFJFRklYRVMgPSBbc3lzLnByZWZpeCwgc3lzLmV4ZWNfcHJlZml4XQpAQCAtODIsNyArOTUsOCBAQAogZGVmIGFic19wYXRocygpOgogICAgICIiIlNldCBhbGwgbW9kdWxlIF9fZmlsZV9fIGFuZCBfX2NhY2hlZF9fIGF0dHJpYnV0ZXMgdG8gYW4gYWJzb2x1dGUgcGF0aCIiIgogICAgIGZvciBtIGluIHNldChzeXMubW9kdWxlcy52YWx1ZXMoKSk6Ci0gICAgICAgIGlmIGhhc2F0dHIobSwgJ19fbG9hZGVyX18nKToKKyAgICAgICAgaWYgKGdldGF0dHIoZ2V0YXR0cihtLCAnX19sb2FkZXJfXycsIE5vbmUpLCAnX19tb2R1bGVfXycsIE5vbmUpICE9CisgICAgICAgICAgICAgICAgJ19mcm96ZW5faW1wb3J0bGliJyk6CiAgICAgICAgICAgICBjb250aW51ZSAgICMgZG9uJ3QgbWVzcyB3aXRoIGEgUEVQIDMwMi1zdXBwbGllZCBfX2ZpbGVfXwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBtLl9fZmlsZV9fID0gb3MucGF0aC5hYnNwYXRoKG0uX19maWxlX18pCkBAIC0xMzgsNyArMTUyLDcgQEAKICAgICAgICAgcmVzZXQgPSAwCiAgICAgZnVsbG5hbWUgPSBvcy5wYXRoLmpvaW4oc2l0ZWRpciwgbmFtZSkKICAgICB0cnk6Ci0gICAgICAgIGYgPSBvcGVuKGZ1bGxuYW1lLCAiclUiKQorICAgICAgICBmID0gb3BlbihmdWxsbmFtZSwgInIiKQogICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICByZXR1cm4KICAgICB3aXRoIGY6CkBAIC0xNTQsOSArMTY4LDEwIEBACiAgICAgICAgICAgICAgICAgaWYgbm90IGRpcmNhc2UgaW4ga25vd25fcGF0aHMgYW5kIG9zLnBhdGguZXhpc3RzKGRpcik6CiAgICAgICAgICAgICAgICAgICAgIHN5cy5wYXRoLmFwcGVuZChkaXIpCiAgICAgICAgICAgICAgICAgICAgIGtub3duX3BhdGhzLmFkZChkaXJjYXNlKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgIHByaW50KCJFcnJvciBwcm9jZXNzaW5nIGxpbmUgezpkfSBvZiB7fTpcbiIuZm9ybWF0KG4rMSwgZnVsbG5hbWUpLAogICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCiAgICAgICAgICAgICAgICAgZm9yIHJlY29yZCBpbiB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCkpOgogICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiByZWNvcmQuc3BsaXRsaW5lcygpOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJyAgJytsaW5lLCBmaWxlPXN5cy5zdGRlcnIpCkBAIC0xNzgsNiArMTkzLDcgQEAKICAgICBzaXRlZGlyLCBzaXRlZGlyY2FzZSA9IG1ha2VwYXRoKHNpdGVkaXIpCiAgICAgaWYgbm90IHNpdGVkaXJjYXNlIGluIGtub3duX3BhdGhzOgogICAgICAgICBzeXMucGF0aC5hcHBlbmQoc2l0ZWRpcikgICAgICAgICMgQWRkIHBhdGggY29tcG9uZW50CisgICAgICAgIGtub3duX3BhdGhzLmFkZChzaXRlZGlyY2FzZSkKICAgICB0cnk6CiAgICAgICAgIG5hbWVzID0gb3MubGlzdGRpcihzaXRlZGlyKQogICAgIGV4Y2VwdCBvcy5lcnJvcjoKQEAgLTI0MSw3ICsyNTcsNiBAQAogICAgICAgICByZXR1cm4gVVNFUl9TSVRFCiAKICAgICBmcm9tIHN5c2NvbmZpZyBpbXBvcnQgZ2V0X3BhdGgKLSAgICBpbXBvcnQgb3MKIAogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9jb25maWdfdmFyCkBAIC0yNjYsMTggKzI4MSwyMSBAQAogICAgICAgICBhZGRzaXRlZGlyKHVzZXJfc2l0ZSwga25vd25fcGF0aHMpCiAgICAgcmV0dXJuIGtub3duX3BhdGhzCiAKLWRlZiBnZXRzaXRlcGFja2FnZXMoKToKK2RlZiBnZXRzaXRlcGFja2FnZXMocHJlZml4ZXM9Tm9uZSk6CiAgICAgIiIiUmV0dXJucyBhIGxpc3QgY29udGFpbmluZyBhbGwgZ2xvYmFsIHNpdGUtcGFja2FnZXMgZGlyZWN0b3JpZXMKICAgICAoYW5kIHBvc3NpYmx5IHNpdGUtcHl0aG9uKS4KIAotICAgIEZvciBlYWNoIGRpcmVjdG9yeSBwcmVzZW50IGluIHRoZSBnbG9iYWwgYGBQUkVGSVhFU2BgLCB0aGlzIGZ1bmN0aW9uCi0gICAgd2lsbCBmaW5kIGl0cyBgc2l0ZS1wYWNrYWdlc2Agc3ViZGlyZWN0b3J5IGRlcGVuZGluZyBvbiB0aGUgc3lzdGVtCi0gICAgZW52aXJvbm1lbnQsIGFuZCB3aWxsIHJldHVybiBhIGxpc3Qgb2YgZnVsbCBwYXRocy4KKyAgICBGb3IgZWFjaCBkaXJlY3RvcnkgcHJlc2VudCBpbiBgYHByZWZpeGVzYGAgKG9yIHRoZSBnbG9iYWwgYGBQUkVGSVhFU2BgKSwKKyAgICB0aGlzIGZ1bmN0aW9uIHdpbGwgZmluZCBpdHMgYHNpdGUtcGFja2FnZXNgIHN1YmRpcmVjdG9yeSBkZXBlbmRpbmcgb24gdGhlCisgICAgc3lzdGVtIGVudmlyb25tZW50LCBhbmQgd2lsbCByZXR1cm4gYSBsaXN0IG9mIGZ1bGwgcGF0aHMuCiAgICAgIiIiCiAgICAgc2l0ZXBhY2thZ2VzID0gW10KICAgICBzZWVuID0gc2V0KCkKIAotICAgIGZvciBwcmVmaXggaW4gUFJFRklYRVM6CisgICAgaWYgcHJlZml4ZXMgaXMgTm9uZToKKyAgICAgICAgcHJlZml4ZXMgPSBQUkVGSVhFUworCisgICAgZm9yIHByZWZpeCBpbiBwcmVmaXhlczoKICAgICAgICAgaWYgbm90IHByZWZpeCBvciBwcmVmaXggaW4gc2VlbjoKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHNlZW4uYWRkKHByZWZpeCkKQEAgLTMwMyw5ICszMjEsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy52ZXJzaW9uWzozXSwgInNpdGUtcGFja2FnZXMiKSkKICAgICByZXR1cm4gc2l0ZXBhY2thZ2VzCiAKLWRlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMpOgorZGVmIGFkZHNpdGVwYWNrYWdlcyhrbm93bl9wYXRocywgcHJlZml4ZXM9Tm9uZSk6CiAgICAgIiIiQWRkIHNpdGUtcGFja2FnZXMgKGFuZCBwb3NzaWJseSBzaXRlLXB5dGhvbikgdG8gc3lzLnBhdGgiIiIKLSAgICBmb3Igc2l0ZWRpciBpbiBnZXRzaXRlcGFja2FnZXMoKToKKyAgICBmb3Igc2l0ZWRpciBpbiBnZXRzaXRlcGFja2FnZXMocHJlZml4ZXMpOgogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHNpdGVkaXIpOgogICAgICAgICAgICAgYWRkc2l0ZWRpcihzaXRlZGlyLCBrbm93bl9wYXRocykKIApAQCAtMzg1LDcgKzQwMyw3IEBACiAgICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4gc2VsZi5fX2ZpbGVzOgogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGRpciwgZmlsZW5hbWUpCiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBmcCA9IG9wZW4oZmlsZW5hbWUsICJyVSIpCisgICAgICAgICAgICAgICAgICAgIGZwID0gb3BlbihmaWxlbmFtZSwgInIiKQogICAgICAgICAgICAgICAgICAgICBkYXRhID0gZnAucmVhZCgpCiAgICAgICAgICAgICAgICAgICAgIGZwLmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTQ3NSw2ICs0OTMsNTkgQEAKICAgICAgICAgICAgICAgICBlbmNvZGluZ3MuYWxpYXNlcy5hbGlhc2VzW2VuY10gPSAnbWJjcycKIAogCitDT05GSUdfTElORSA9IHJlLmNvbXBpbGUocideKD9QPGtleT4oXHd8Wy1fXSkrKVxzKj1ccyooP1A8dmFsdWU+LiopXHMqJCcpCisKK2RlZiB2ZW52KGtub3duX3BhdGhzKToKKyAgICBnbG9iYWwgUFJFRklYRVMsIEVOQUJMRV9VU0VSX1NJVEUKKworICAgIGVudiA9IG9zLmVudmlyb24KKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kICdfX1BZVkVOVl9MQVVOQ0hFUl9fJyBpbiBlbnY6CisgICAgICAgIGV4ZWN1dGFibGUgPSBvcy5lbnZpcm9uWydfX1BZVkVOVl9MQVVOQ0hFUl9fJ10KKyAgICBlbHNlOgorICAgICAgICBleGVjdXRhYmxlID0gc3lzLmV4ZWN1dGFibGUKKyAgICBleGVfZGlyLCBfID0gb3MucGF0aC5zcGxpdChvcy5wYXRoLmFic3BhdGgoZXhlY3V0YWJsZSkpCisgICAgc2l0ZV9wcmVmaXggPSBvcy5wYXRoLmRpcm5hbWUoZXhlX2RpcikKKyAgICBzeXMuX2hvbWUgPSBOb25lCisgICAgY29uZl9iYXNlbmFtZSA9ICdweXZlbnYuY2ZnJworICAgIGNhbmRpZGF0ZV9jb25mcyA9IFsKKyAgICAgICAgY29uZmZpbGUgZm9yIGNvbmZmaWxlIGluICgKKyAgICAgICAgICAgIG9zLnBhdGguam9pbihleGVfZGlyLCBjb25mX2Jhc2VuYW1lKSwKKyAgICAgICAgICAgIG9zLnBhdGguam9pbihzaXRlX3ByZWZpeCwgY29uZl9iYXNlbmFtZSkKKyAgICAgICAgICAgICkKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoY29uZmZpbGUpCisgICAgICAgIF0KKworICAgIGlmIGNhbmRpZGF0ZV9jb25mczoKKyAgICAgICAgdmlydHVhbF9jb25mID0gY2FuZGlkYXRlX2NvbmZzWzBdCisgICAgICAgIHN5c3RlbV9zaXRlID0gInRydWUiCisgICAgICAgIHdpdGggb3Blbih2aXJ0dWFsX2NvbmYpIGFzIGY6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBtID0gQ09ORklHX0xJTkUubWF0Y2gobGluZSkKKyAgICAgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgICAgICBkID0gbS5ncm91cGRpY3QoKQorICAgICAgICAgICAgICAgICAgICBrZXksIHZhbHVlID0gZFsna2V5J10ubG93ZXIoKSwgZFsndmFsdWUnXQorICAgICAgICAgICAgICAgICAgICBpZiBrZXkgPT0gJ2luY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXMnOgorICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtX3NpdGUgPSB2YWx1ZS5sb3dlcigpCisgICAgICAgICAgICAgICAgICAgIGVsaWYga2V5ID09ICdob21lJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5faG9tZSA9IHZhbHVlCisKKyAgICAgICAgc3lzLnByZWZpeCA9IHN5cy5leGVjX3ByZWZpeCA9IHNpdGVfcHJlZml4CisKKyAgICAgICAgIyBEb2luZyB0aGlzIGhlcmUgZW5zdXJlcyB2ZW52IHRha2VzIHByZWNlZGVuY2Ugb3ZlciB1c2VyLXNpdGUKKyAgICAgICAgYWRkc2l0ZXBhY2thZ2VzKGtub3duX3BhdGhzLCBbc3lzLnByZWZpeF0pCisKKyAgICAgICAgIyBhZGRzaXRlcGFja2FnZXMgd2lsbCBwcm9jZXNzIHNpdGVfcHJlZml4IGFnYWluIGlmIGl0cyBpbiBQUkVGSVhFUywKKyAgICAgICAgIyBidXQgdGhhdCdzIG9rOyBrbm93bl9wYXRocyB3aWxsIHByZXZlbnQgYW55dGhpbmcgYmVpbmcgYWRkZWQgdHdpY2UKKyAgICAgICAgaWYgc3lzdGVtX3NpdGUgPT0gInRydWUiOgorICAgICAgICAgICAgUFJFRklYRVMuaW5zZXJ0KDAsIHN5cy5wcmVmaXgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBQUkVGSVhFUyA9IFtzeXMucHJlZml4XQorICAgICAgICAgICAgRU5BQkxFX1VTRVJfU0lURSA9IEZhbHNlCisKKyAgICByZXR1cm4ga25vd25fcGF0aHMKKworCiBkZWYgZXhlY3NpdGVjdXN0b21pemUoKToKICAgICAiIiJSdW4gY3VzdG9tIHNpdGUgc3BlY2lmaWMgY29kZSwgaWYgYXZhaWxhYmxlLiIiIgogICAgIHRyeToKQEAgLTUwOCwxMCArNTc5LDE2IEBACiAKIAogZGVmIG1haW4oKToKKyAgICAiIiJBZGQgc3RhbmRhcmQgc2l0ZS1zcGVjaWZpYyBkaXJlY3RvcmllcyB0byB0aGUgbW9kdWxlIHNlYXJjaCBwYXRoLgorCisgICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXV0b21hdGljYWxseSB3aGVuIHRoaXMgbW9kdWxlIGlzIGltcG9ydGVkLAorICAgIHVubGVzcyB0aGUgcHl0aG9uIGludGVycHJldGVyIHdhcyBzdGFydGVkIHdpdGggdGhlIC1TIGZsYWcuCisgICAgIiIiCiAgICAgZ2xvYmFsIEVOQUJMRV9VU0VSX1NJVEUKIAogICAgIGFic19wYXRocygpCiAgICAga25vd25fcGF0aHMgPSByZW1vdmVkdXBwYXRocygpCisgICAga25vd25fcGF0aHMgPSB2ZW52KGtub3duX3BhdGhzKQogICAgIGlmIEVOQUJMRV9VU0VSX1NJVEUgaXMgTm9uZToKICAgICAgICAgRU5BQkxFX1VTRVJfU0lURSA9IGNoZWNrX2VuYWJsZXVzZXJzaXRlKCkKICAgICBrbm93bl9wYXRocyA9IGFkZHVzZXJzaXRlcGFja2FnZXMoa25vd25fcGF0aHMpCkBAIC01MjYsNyArNjAzLDEwIEBACiAgICAgaWYgRU5BQkxFX1VTRVJfU0lURToKICAgICAgICAgZXhlY3VzZXJjdXN0b21pemUoKQogCi1tYWluKCkKKyMgUHJldmVudCBlZGl0aW9uIG9mIHN5cy5wYXRoIHdoZW4gcHl0aG9uIHdhcyBzdGFydGVkIHdpdGggLVMgYW5kCisjIHNpdGUgaXMgaW1wb3J0ZWQgbGF0ZXIuCitpZiBub3Qgc3lzLmZsYWdzLm5vX3NpdGU6CisgICAgbWFpbigpCiAKIGRlZiBfc2NyaXB0KCk6CiAgICAgaGVscCA9ICIiIlwKZGlmZiAtLWdpdCBhL0xpYi9zbXRwZC5weSBiL0xpYi9zbXRwZC5weQppbmRleCA4Y2Q0MDVjLi43NzhkNmQ2IDEwMDc1NQotLS0gYS9MaWIvc210cGQucHkKKysrIGIvTGliL3NtdHBkLnB5CkBAIC0xLDUgKzEsNSBAQAogIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKLSIiIkFuIFJGQyAyODIxIHNtdHAgcHJveHkuCisiIiJBbiBSRkMgNTMyMSBzbXRwIHByb3h5LgogCiBVc2FnZTogJShwcm9ncmFtKXMgW29wdGlvbnNdIFtsb2NhbGhvc3Q6bG9jYWxwb3J0IFtyZW1vdGVob3N0OnJlbW90ZXBvcnRdXQogCkBAIC0yMCw2ICsyMCwxMSBAQAogICAgICAgICBVc2UgYGNsYXNzbmFtZScgYXMgdGhlIGNvbmNyZXRlIFNNVFAgcHJveHkgY2xhc3MuICBVc2VzIGBQdXJlUHJveHknIGJ5CiAgICAgICAgIGRlZmF1bHQuCiAKKyAgICAtLXNpemUgbGltaXQKKyAgICAtcyBsaW1pdAorICAgICAgICBSZXN0cmljdCB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgaW5jb21pbmcgbWVzc2FnZSB0byAibGltaXQiIG51bWJlciBvZgorICAgICAgICBieXRlcyB2aWEgdGhlIFJGQyAxODcwIFNJWkUgZXh0ZW5zaW9uLiAgRGVmYXVsdHMgdG8gMzM1NTQ0MzIgYnl0ZXMuCisKICAgICAtLWRlYnVnCiAgICAgLWQKICAgICAgICAgVHVybiBvbiBkZWJ1Z2dpbmcgcHJpbnRzLgpAQCAtMzUsMTAgKzQwLDkgQEAKIGFuZCBpZiByZW1vdGVwb3J0IGlzIG5vdCBnaXZlbiwgdGhlbiAyNSBpcyB1c2VkLgogIiIiCiAKLQwKICMgT3ZlcnZpZXc6CiAjCi0jIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZSBtaW5pbWFsIFNNVFAgcHJvdG9jb2wgYXMgZGVmaW5lZCBpbiBSRkMgODIxLiAgSXQKKyMgVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIG1pbmltYWwgU01UUCBwcm90b2NvbCBhcyBkZWZpbmVkIGluIFJGQyA1MzIxLiAgSXQKICMgaGFzIGEgaGllcmFyY2h5IG9mIGNsYXNzZXMgd2hpY2ggaW1wbGVtZW50IHRoZSBiYWNrZW5kIGZ1bmN0aW9uYWxpdHkgZm9yIHRoZQogIyBzbXRwZC4gIEEgbnVtYmVyIG9mIGNsYXNzZXMgYXJlIHByb3ZpZGVkOgogIwpAQCAtNjYsNyArNzAsNyBAQAogIwogIyAtIHN1cHBvcnQgbWFpbGJveCBkZWxpdmVyeQogIyAtIGFsaWFzIGZpbGVzCi0jIC0gRVNNVFAKKyMgLSBIYW5kbGUgbW9yZSBFU01UUCBleHRlbnNpb25zCiAjIC0gaGFuZGxlIGVycm9yIGNvZGVzIGZyb20gdGhlIGJhY2tlbmQgc210cGQKIAogaW1wb3J0IHN5cwpAQCAtNzcsMTIgKzgxLDE0IEBACiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgYXN5bmNvcmUKIGltcG9ydCBhc3luY2hhdAoraW1wb3J0IGNvbGxlY3Rpb25zCiBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCitmcm9tIGVtYWlsLl9oZWFkZXJfdmFsdWVfcGFyc2VyIGltcG9ydCBnZXRfYWRkcl9zcGVjLCBnZXRfYW5nbGVfYWRkcgogCiBfX2FsbF9fID0gWyJTTVRQU2VydmVyIiwiRGVidWdnaW5nU2VydmVyIiwiUHVyZVByb3h5IiwiTWFpbG1hblByb3h5Il0KIAogcHJvZ3JhbSA9IHN5cy5hcmd2WzBdCi1fX3ZlcnNpb25fXyA9ICdQeXRob24gU01UUCBwcm94eSB2ZXJzaW9uIDAuMicKK19fdmVyc2lvbl9fID0gJ1B5dGhvbiBTTVRQIHByb3h5IHZlcnNpb24gMC4zJwogCiAKIGNsYXNzIERldm51bGw6CkBAIC05NCw5ICsxMDAsOSBAQAogTkVXTElORSA9ICdcbicKIEVNUFRZU1RSSU5HID0gJycKIENPTU1BU1BBQ0UgPSAnLCAnCitEQVRBX1NJWkVfREVGQVVMVCA9IDMzNTU0NDMyCiAKIAotDAogZGVmIHVzYWdlKGNvZGUsIG1zZz0nJyk6CiAgICAgcHJpbnQoX19kb2NfXyAlIGdsb2JhbHMoKSwgZmlsZT1zeXMuc3RkZXJyKQogICAgIGlmIG1zZzoKQEAgLTEwNCwxOSArMTEwLDIzIEBACiAgICAgc3lzLmV4aXQoY29kZSkKIAogCi0MCiBjbGFzcyBTTVRQQ2hhbm5lbChhc3luY2hhdC5hc3luY19jaGF0KToKICAgICBDT01NQU5EID0gMAogICAgIERBVEEgPSAxCiAKLSAgICBkYXRhX3NpemVfbGltaXQgPSAzMzU1NDQzMgogICAgIGNvbW1hbmRfc2l6ZV9saW1pdCA9IDUxMgorICAgIGNvbW1hbmRfc2l6ZV9saW1pdHMgPSBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdChsYW1iZGEgeD1jb21tYW5kX3NpemVfbGltaXQ6IHgpCisgICAgY29tbWFuZF9zaXplX2xpbWl0cy51cGRhdGUoeworICAgICAgICAnTUFJTCc6IGNvbW1hbmRfc2l6ZV9saW1pdCArIDI2LAorICAgICAgICB9KQorICAgIG1heF9jb21tYW5kX3NpemVfbGltaXQgPSBtYXgoY29tbWFuZF9zaXplX2xpbWl0cy52YWx1ZXMoKSkKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXJ2ZXIsIGNvbm4sIGFkZHIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRhdGFfc2l6ZV9saW1pdD1EQVRBX1NJWkVfREVGQVVMVCk6CiAgICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQuX19pbml0X18oc2VsZiwgY29ubikKICAgICAgICAgc2VsZi5zbXRwX3NlcnZlciA9IHNlcnZlcgogICAgICAgICBzZWxmLmNvbm4gPSBjb25uCiAgICAgICAgIHNlbGYuYWRkciA9IGFkZHIKKyAgICAgICAgc2VsZi5kYXRhX3NpemVfbGltaXQgPSBkYXRhX3NpemVfbGltaXQKICAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcyA9IFtdCiAgICAgICAgIHNlbGYuc210cF9zdGF0ZSA9IHNlbGYuQ09NTUFORAogICAgICAgICBzZWxmLnNlZW5fZ3JlZXRpbmcgPSAnJwpAQCAtMTM3LDEyNyArMTQ3LDEyOCBAQAogICAgICAgICBwcmludCgnUGVlcjonLCByZXByKHNlbGYucGVlciksIGZpbGU9REVCVUdTVFJFQU0pCiAgICAgICAgIHNlbGYucHVzaCgnMjIwICVzICVzJyAlIChzZWxmLmZxZG4sIF9fdmVyc2lvbl9fKSkKICAgICAgICAgc2VsZi5zZXRfdGVybWluYXRvcihiJ1xyXG4nKQorICAgICAgICBzZWxmLmV4dGVuZGVkX3NtdHAgPSBGYWxzZQogCiAgICAgIyBwcm9wZXJ0aWVzIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eQogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBfX3NlcnZlcihzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fc2VydmVyIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdzbXRwX3NlcnZlcicgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAidXNlICdzbXRwX3NlcnZlcicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYuc210cF9zZXJ2ZXIKICAgICBAX19zZXJ2ZXIuc2V0dGVyCiAgICAgZGVmIF9fc2VydmVyKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX3NlcnZlciBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAnc210cF9zZXJ2ZXInIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInNldCAnc210cF9zZXJ2ZXInIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYuc210cF9zZXJ2ZXIgPSB2YWx1ZQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fbGluZShzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fbGluZSBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInVzZSAncmVjZWl2ZWRfbGluZXMnIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAncmVjZWl2ZWRfbGluZXMnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLnJlY2VpdmVkX2xpbmVzCiAgICAgQF9fbGluZS5zZXR0ZXIKICAgICBkZWYgX19saW5lKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX2xpbmUgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJzZXQgJ3JlY2VpdmVkX2xpbmVzJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ3JlY2VpdmVkX2xpbmVzJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzID0gdmFsdWUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBfX3N0YXRlKHNlbGYpOgogICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19zdGF0ZSBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInVzZSAnc210cF9zdGF0ZScgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAidXNlICdzbXRwX3N0YXRlJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5zbXRwX3N0YXRlCiAgICAgQF9fc3RhdGUuc2V0dGVyCiAgICAgZGVmIF9fc3RhdGUoc2VsZiwgdmFsdWUpOgogICAgICAgICB3YXJuKCJTZXR0aW5nIF9fc3RhdGUgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJzZXQgJ3NtdHBfc3RhdGUnIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInNldCAnc210cF9zdGF0ZScgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5zbXRwX3N0YXRlID0gdmFsdWUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBfX2dyZWV0aW5nKHNlbGYpOgogICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19ncmVldGluZyBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInVzZSAnc2Vlbl9ncmVldGluZycgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAidXNlICdzZWVuX2dyZWV0aW5nJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5zZWVuX2dyZWV0aW5nCiAgICAgQF9fZ3JlZXRpbmcuc2V0dGVyCiAgICAgZGVmIF9fZ3JlZXRpbmcoc2VsZiwgdmFsdWUpOgogICAgICAgICB3YXJuKCJTZXR0aW5nIF9fZ3JlZXRpbmcgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJzZXQgJ3NlZW5fZ3JlZXRpbmcnIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInNldCAnc2Vlbl9ncmVldGluZycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5zZWVuX2dyZWV0aW5nID0gdmFsdWUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBfX21haWxmcm9tKHNlbGYpOgogICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19tYWlsZnJvbSBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInVzZSAnbWFpbGZyb20nIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAnbWFpbGZyb20nIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLm1haWxmcm9tCiAgICAgQF9fbWFpbGZyb20uc2V0dGVyCiAgICAgZGVmIF9fbWFpbGZyb20oc2VsZiwgdmFsdWUpOgogICAgICAgICB3YXJuKCJTZXR0aW5nIF9fbWFpbGZyb20gYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJzZXQgJ21haWxmcm9tJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ21haWxmcm9tJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLm1haWxmcm9tID0gdmFsdWUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBfX3JjcHR0b3Moc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX3JjcHR0b3MgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ3JjcHR0b3MnIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAncmNwdHRvcycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYucmNwdHRvcwogICAgIEBfX3JjcHR0b3Muc2V0dGVyCiAgICAgZGVmIF9fcmNwdHRvcyhzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19yY3B0dG9zIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdyY3B0dG9zJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ3JjcHR0b3MnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYucmNwdHRvcyA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19kYXRhKHNlbGYpOgogICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19kYXRhIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdyZWNlaXZlZF9kYXRhJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ3JlY2VpdmVkX2RhdGEnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLnJlY2VpdmVkX2RhdGEKICAgICBAX19kYXRhLnNldHRlcgogICAgIGRlZiBfX2RhdGEoc2VsZiwgdmFsdWUpOgogICAgICAgICB3YXJuKCJTZXR0aW5nIF9fZGF0YSBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAncmVjZWl2ZWRfZGF0YScgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdyZWNlaXZlZF9kYXRhJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLnJlY2VpdmVkX2RhdGEgPSB2YWx1ZQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fZnFkbihzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fZnFkbiBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInVzZSAnZnFkbicgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAidXNlICdmcWRuJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5mcWRuCiAgICAgQF9fZnFkbi5zZXR0ZXIKICAgICBkZWYgX19mcWRuKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX2ZxZG4gYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJzZXQgJ2ZxZG4nIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInNldCAnZnFkbicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5mcWRuID0gdmFsdWUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBfX3BlZXIoc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX3BlZXIgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ3BlZXInIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAncGVlcicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYucGVlcgogICAgIEBfX3BlZXIuc2V0dGVyCiAgICAgZGVmIF9fcGVlcihzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19wZWVyIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdwZWVyJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ3BlZXInIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYucGVlciA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19jb25uKHNlbGYpOgogICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19jb25uIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdjb25uJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ2Nvbm4nIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLmNvbm4KICAgICBAX19jb25uLnNldHRlcgogICAgIGRlZiBfX2Nvbm4oc2VsZiwgdmFsdWUpOgogICAgICAgICB3YXJuKCJTZXR0aW5nIF9fY29ubiBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAnY29ubicgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdjb25uJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLmNvbm4gPSB2YWx1ZQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fYWRkcihzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fYWRkciBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInVzZSAnYWRkcicgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAidXNlICdhZGRyJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5hZGRyCiAgICAgQF9fYWRkci5zZXR0ZXIKICAgICBkZWYgX19hZGRyKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX2FkZHIgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJzZXQgJ2FkZHInIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInNldCAnYWRkcicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5hZGRyID0gdmFsdWUKIAogICAgICMgT3ZlcnJpZGVzIGJhc2UgY2xhc3MgZm9yIGNvbnZlbmllbmNlCkBAIC0yNjgsMTQgKzI3OSwxNCBAQAogICAgIGRlZiBjb2xsZWN0X2luY29taW5nX2RhdGEoc2VsZiwgZGF0YSk6CiAgICAgICAgIGxpbWl0ID0gTm9uZQogICAgICAgICBpZiBzZWxmLnNtdHBfc3RhdGUgPT0gc2VsZi5DT01NQU5EOgotICAgICAgICAgICAgbGltaXQgPSBzZWxmLmNvbW1hbmRfc2l6ZV9saW1pdAorICAgICAgICAgICAgbGltaXQgPSBzZWxmLm1heF9jb21tYW5kX3NpemVfbGltaXQKICAgICAgICAgZWxpZiBzZWxmLnNtdHBfc3RhdGUgPT0gc2VsZi5EQVRBOgogICAgICAgICAgICAgbGltaXQgPSBzZWxmLmRhdGFfc2l6ZV9saW1pdAogICAgICAgICBpZiBsaW1pdCBhbmQgc2VsZi5udW1fYnl0ZXMgPiBsaW1pdDoKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBlbGlmIGxpbWl0OgogICAgICAgICAgICAgc2VsZi5udW1fYnl0ZXMgKz0gbGVuKGRhdGEpCi0gICAgICAgIHNlbGYucmVjZWl2ZWRfbGluZXMuYXBwZW5kKHN0cihkYXRhLCAidXRmOCIpKQorICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzLmFwcGVuZChzdHIoZGF0YSwgInV0Zi04IikpCiAKICAgICAjIEltcGxlbWVudGF0aW9uIG9mIGJhc2UgY2xhc3MgYWJzdHJhY3QgbWV0aG9kCiAgICAgZGVmIGZvdW5kX3Rlcm1pbmF0b3Ioc2VsZik6CkBAIC0yODMsMTEgKzI5NCw3IEBACiAgICAgICAgIHByaW50KCdEYXRhOicsIHJlcHIobGluZSksIGZpbGU9REVCVUdTVFJFQU0pCiAgICAgICAgIHNlbGYucmVjZWl2ZWRfbGluZXMgPSBbXQogICAgICAgICBpZiBzZWxmLnNtdHBfc3RhdGUgPT0gc2VsZi5DT01NQU5EOgotICAgICAgICAgICAgaWYgc2VsZi5udW1fYnl0ZXMgPiBzZWxmLmNvbW1hbmRfc2l6ZV9saW1pdDoKLSAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMCBFcnJvcjogbGluZSB0b28gbG9uZycpCi0gICAgICAgICAgICAgICAgc2VsZi5udW1fYnl0ZXMgPSAwCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKKyAgICAgICAgICAgIHN6LCBzZWxmLm51bV9ieXRlcyA9IHNlbGYubnVtX2J5dGVzLCAwCiAgICAgICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMCBFcnJvcjogYmFkIHN5bnRheCcpCiAgICAgICAgICAgICAgICAgcmV0dXJuCkBAIC0yOTksOSArMzA2LDE0IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGNvbW1hbmQgPSBsaW5lWzppXS51cHBlcigpCiAgICAgICAgICAgICAgICAgYXJnID0gbGluZVtpKzE6XS5zdHJpcCgpCisgICAgICAgICAgICBtYXhfc3ogPSAoc2VsZi5jb21tYW5kX3NpemVfbGltaXRzW2NvbW1hbmRdCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmV4dGVuZGVkX3NtdHAgZWxzZSBzZWxmLmNvbW1hbmRfc2l6ZV9saW1pdCkKKyAgICAgICAgICAgIGlmIHN6ID4gbWF4X3N6OgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAwIEVycm9yOiBsaW5lIHRvbyBsb25nJykKKyAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIoc2VsZiwgJ3NtdHBfJyArIGNvbW1hbmQsIE5vbmUpCiAgICAgICAgICAgICBpZiBub3QgbWV0aG9kOgotICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAyIEVycm9yOiBjb21tYW5kICIlcyIgbm90IGltcGxlbWVudGVkJyAlIGNvbW1hbmQpCisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDAgRXJyb3I6IGNvbW1hbmQgIiVzIiBub3QgcmVjb2duaXplZCcgJSBjb21tYW5kKQogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgbWV0aG9kKGFyZykKICAgICAgICAgICAgIHJldHVybgpAQCAtMzEwLDEyICszMjIsMTIgQEAKICAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzQ1MSBJbnRlcm5hbCBjb25mdXNpb24nKQogICAgICAgICAgICAgICAgIHNlbGYubnVtX2J5dGVzID0gMAogICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgaWYgc2VsZi5udW1fYnl0ZXMgPiBzZWxmLmRhdGFfc2l6ZV9saW1pdDoKKyAgICAgICAgICAgIGlmIHNlbGYuZGF0YV9zaXplX2xpbWl0IGFuZCBzZWxmLm51bV9ieXRlcyA+IHNlbGYuZGF0YV9zaXplX2xpbWl0OgogICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTUyIEVycm9yOiBUb28gbXVjaCBtYWlsIGRhdGEnKQogICAgICAgICAgICAgICAgIHNlbGYubnVtX2J5dGVzID0gMAogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgIyBSZW1vdmUgZXh0cmFuZW91cyBjYXJyaWFnZSByZXR1cm5zIGFuZCBkZS10cmFuc3BhcmVuY3kgYWNjb3JkaW5nCi0gICAgICAgICAgICAjIHRvIFJGQyA4MjEsIFNlY3Rpb24gNC41LjIuCisgICAgICAgICAgICAjIHRvIFJGQyA1MzIxLCBTZWN0aW9uIDQuNS4yLgogICAgICAgICAgICAgZGF0YSA9IFtdCiAgICAgICAgICAgICBmb3IgdGV4dCBpbiBsaW5lLnNwbGl0KCdcclxuJyk6CiAgICAgICAgICAgICAgICAgaWYgdGV4dCBhbmQgdGV4dFswXSA9PSAnLic6CkBAIC0zMzMsNyArMzQ1LDcgQEAKICAgICAgICAgICAgIHNlbGYubnVtX2J5dGVzID0gMAogICAgICAgICAgICAgc2VsZi5zZXRfdGVybWluYXRvcihiJ1xyXG4nKQogICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBPaycpCisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgT0snKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLnB1c2goc3RhdHVzKQogCkBAIC0zNDYsNTggKzM1OCwxODggQEAKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIER1cGxpY2F0ZSBIRUxPL0VITE8nKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5zZWVuX2dyZWV0aW5nID0gYXJnCisgICAgICAgICAgICBzZWxmLmV4dGVuZGVkX3NtdHAgPSBGYWxzZQogICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgJXMnICUgc2VsZi5mcWRuKQogCisgICAgZGVmIHNtdHBfRUhMTyhzZWxmLCBhcmcpOgorICAgICAgICBpZiBub3QgYXJnOgorICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDEgU3ludGF4OiBFSExPIGhvc3RuYW1lJykKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBzZWxmLnNlZW5fZ3JlZXRpbmc6CisgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBEdXBsaWNhdGUgSEVMTy9FSExPJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9IGFyZworICAgICAgICAgICAgc2VsZi5leHRlbmRlZF9zbXRwID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAtJXMnICUgc2VsZi5mcWRuKQorICAgICAgICAgICAgaWYgc2VsZi5kYXRhX3NpemVfbGltaXQ6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAtU0laRSAlcycgJSBzZWxmLmRhdGFfc2l6ZV9saW1pdCkKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIEhFTFAnKQorCiAgICAgZGVmIHNtdHBfTk9PUChzZWxmLCBhcmcpOgogICAgICAgICBpZiBhcmc6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTeW50YXg6IE5PT1AnKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgT2snKQorICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgT0snKQogCiAgICAgZGVmIHNtdHBfUVVJVChzZWxmLCBhcmcpOgogICAgICAgICAjIGFyZ3MgaXMgaWdub3JlZAogICAgICAgICBzZWxmLnB1c2goJzIyMSBCeWUnKQogICAgICAgICBzZWxmLmNsb3NlX3doZW5fZG9uZSgpCiAKLSAgICAjIGZhY3RvcmVkCi0gICAgZGVmIF9fZ2V0YWRkcihzZWxmLCBrZXl3b3JkLCBhcmcpOgotICAgICAgICBhZGRyZXNzID0gTm9uZQorICAgIGRlZiBfc3RyaXBfY29tbWFuZF9rZXl3b3JkKHNlbGYsIGtleXdvcmQsIGFyZyk6CiAgICAgICAgIGtleWxlbiA9IGxlbihrZXl3b3JkKQogICAgICAgICBpZiBhcmdbOmtleWxlbl0udXBwZXIoKSA9PSBrZXl3b3JkOgotICAgICAgICAgICAgYWRkcmVzcyA9IGFyZ1trZXlsZW46XS5zdHJpcCgpCi0gICAgICAgICAgICBpZiBub3QgYWRkcmVzczoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbGlmIGFkZHJlc3NbMF0gPT0gJzwnIGFuZCBhZGRyZXNzWy0xXSA9PSAnPicgYW5kIGFkZHJlc3MgIT0gJzw+JzoKLSAgICAgICAgICAgICAgICAjIEFkZHJlc3NlcyBjYW4gYmUgaW4gdGhlIGZvcm0gPHBlcnNvbkBkb20uY29tPiBidXQgd2F0Y2ggb3V0Ci0gICAgICAgICAgICAgICAgIyBmb3IgbnVsbCBhZGRyZXNzLCBlLmcuIDw+Ci0gICAgICAgICAgICAgICAgYWRkcmVzcyA9IGFkZHJlc3NbMTotMV0KLSAgICAgICAgcmV0dXJuIGFkZHJlc3MKKyAgICAgICAgICAgIHJldHVybiBhcmdba2V5bGVuOl0uc3RyaXAoKQorICAgICAgICByZXR1cm4gJycKKworICAgIGRlZiBfZ2V0YWRkcihzZWxmLCBhcmcpOgorICAgICAgICBpZiBub3QgYXJnOgorICAgICAgICAgICAgcmV0dXJuICcnLCAnJworICAgICAgICBpZiBhcmcubHN0cmlwKCkuc3RhcnRzd2l0aCgnPCcpOgorICAgICAgICAgICAgYWRkcmVzcywgcmVzdCA9IGdldF9hbmdsZV9hZGRyKGFyZykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFkZHJlc3MsIHJlc3QgPSBnZXRfYWRkcl9zcGVjKGFyZykKKyAgICAgICAgaWYgbm90IGFkZHJlc3M6CisgICAgICAgICAgICByZXR1cm4gYWRkcmVzcywgcmVzdAorICAgICAgICByZXR1cm4gYWRkcmVzcy5hZGRyX3NwZWMsIHJlc3QKKworICAgIGRlZiBfZ2V0cGFyYW1zKHNlbGYsIHBhcmFtcyk6CisgICAgICAgICMgUmV0dXJuIGFueSBwYXJhbWV0ZXJzIHRoYXQgYXBwZWFyIHRvIGJlIHN5bnRhY3RpY2FsbHkgdmFsaWQgYWNjb3JkaW5nCisgICAgICAgICMgdG8gUkZDIDE4NjksIGlnbm9yZSBhbGwgb3RoZXJzLiAgKFBvc3RlbCBydWxlOiBhY2NlcHQgd2hhdCB3ZSBjYW4uKQorICAgICAgICBwYXJhbXMgPSBbcGFyYW0uc3BsaXQoJz0nLCAxKSBmb3IgcGFyYW0gaW4gcGFyYW1zLnNwbGl0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJz0nIGluIHBhcmFtXQorICAgICAgICByZXR1cm4ge2s6IHYgZm9yIGssIHYgaW4gcGFyYW1zIGlmIGsuaXNhbG51bSgpfQorCisgICAgZGVmIHNtdHBfSEVMUChzZWxmLCBhcmcpOgorICAgICAgICBpZiBhcmc6CisgICAgICAgICAgICBleHRlbmRlZCA9ICcgW1NQIDxtYWlsIHBhcmFtZXRlcnNdJworICAgICAgICAgICAgbGNfYXJnID0gYXJnLnVwcGVyKCkKKyAgICAgICAgICAgIGlmIGxjX2FyZyA9PSAnRUhMTyc6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgU3ludGF4OiBFSExPIGhvc3RuYW1lJykKKyAgICAgICAgICAgIGVsaWYgbGNfYXJnID09ICdIRUxPJzoKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBTeW50YXg6IEhFTE8gaG9zdG5hbWUnKQorICAgICAgICAgICAgZWxpZiBsY19hcmcgPT0gJ01BSUwnOgorICAgICAgICAgICAgICAgIG1zZyA9ICcyNTAgU3ludGF4OiBNQUlMIEZST006IDxhZGRyZXNzPicKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmV4dGVuZGVkX3NtdHA6CisgICAgICAgICAgICAgICAgICAgIG1zZyArPSBleHRlbmRlZAorICAgICAgICAgICAgICAgIHNlbGYucHVzaChtc2cpCisgICAgICAgICAgICBlbGlmIGxjX2FyZyA9PSAnUkNQVCc6CisgICAgICAgICAgICAgICAgbXNnID0gJzI1MCBTeW50YXg6IFJDUFQgVE86IDxhZGRyZXNzPicKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmV4dGVuZGVkX3NtdHA6CisgICAgICAgICAgICAgICAgICAgIG1zZyArPSBleHRlbmRlZAorICAgICAgICAgICAgICAgIHNlbGYucHVzaChtc2cpCisgICAgICAgICAgICBlbGlmIGxjX2FyZyA9PSAnREFUQSc6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgU3ludGF4OiBEQVRBJykKKyAgICAgICAgICAgIGVsaWYgbGNfYXJnID09ICdSU0VUJzoKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBTeW50YXg6IFJTRVQnKQorICAgICAgICAgICAgZWxpZiBsY19hcmcgPT0gJ05PT1AnOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogTk9PUCcpCisgICAgICAgICAgICBlbGlmIGxjX2FyZyA9PSAnUVVJVCc6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgU3ludGF4OiBRVUlUJykKKyAgICAgICAgICAgIGVsaWYgbGNfYXJnID09ICdWUkZZJzoKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBTeW50YXg6IFZSRlkgPGFkZHJlc3M+JykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDEgU3VwcG9ydGVkIGNvbW1hbmRzOiBFSExPIEhFTE8gTUFJTCBSQ1BUICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0RBVEEgUlNFVCBOT09QIFFVSVQgVlJGWScpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBTdXBwb3J0ZWQgY29tbWFuZHM6IEVITE8gSEVMTyBNQUlMIFJDUFQgREFUQSAnCisgICAgICAgICAgICAgICAgICAgICAgJ1JTRVQgTk9PUCBRVUlUIFZSRlknKQorCisgICAgZGVmIHNtdHBfVlJGWShzZWxmLCBhcmcpOgorICAgICAgICBpZiBhcmc6CisgICAgICAgICAgICBhZGRyZXNzLCBwYXJhbXMgPSBzZWxmLl9nZXRhZGRyKGFyZykKKyAgICAgICAgICAgIGlmIGFkZHJlc3M6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTIgQ2Fubm90IFZSRlkgdXNlciwgYnV0IHdpbGwgYWNjZXB0IG1lc3NhZ2UgJworICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5kIGF0dGVtcHQgZGVsaXZlcnknKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMiBDb3VsZCBub3QgVlJGWSAlcycgJSBhcmcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTeW50YXg6IFZSRlkgPGFkZHJlc3M+JykKIAogICAgIGRlZiBzbXRwX01BSUwoc2VsZiwgYXJnKToKKyAgICAgICAgaWYgbm90IHNlbGYuc2Vlbl9ncmVldGluZzoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIEVycm9yOiBzZW5kIEhFTE8gZmlyc3QnKTsKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBwcmludCgnPT09PiBNQUlMJywgYXJnLCBmaWxlPURFQlVHU1RSRUFNKQotICAgICAgICBhZGRyZXNzID0gc2VsZi5fX2dldGFkZHIoJ0ZST006JywgYXJnKSBpZiBhcmcgZWxzZSBOb25lCisgICAgICAgIHN5bnRheGVyciA9ICc1MDEgU3ludGF4OiBNQUlMIEZST006IDxhZGRyZXNzPicKKyAgICAgICAgaWYgc2VsZi5leHRlbmRlZF9zbXRwOgorICAgICAgICAgICAgc3ludGF4ZXJyICs9ICcgW1NQIDxtYWlsLXBhcmFtZXRlcnM+XScKKyAgICAgICAgaWYgYXJnIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGFyZyA9IHNlbGYuX3N0cmlwX2NvbW1hbmRfa2V5d29yZCgnRlJPTTonLCBhcmcpCisgICAgICAgIGFkZHJlc3MsIHBhcmFtcyA9IHNlbGYuX2dldGFkZHIoYXJnKQogICAgICAgICBpZiBub3QgYWRkcmVzczoKLSAgICAgICAgICAgIHNlbGYucHVzaCgnNTAxIFN5bnRheDogTUFJTCBGUk9NOjxhZGRyZXNzPicpCisgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIG5vdCBzZWxmLmV4dGVuZGVkX3NtdHAgYW5kIHBhcmFtczoKKyAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgbm90IGFkZHJlc3M6CisgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIHNlbGYubWFpbGZyb206CiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBFcnJvcjogbmVzdGVkIE1BSUwgY29tbWFuZCcpCiAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgcGFyYW1zID0gc2VsZi5fZ2V0cGFyYW1zKHBhcmFtcy51cHBlcigpKQorICAgICAgICBpZiBwYXJhbXMgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2l6ZSA9IHBhcmFtcy5wb3AoJ1NJWkUnLCBOb25lKQorICAgICAgICBpZiBzaXplOgorICAgICAgICAgICAgaWYgbm90IHNpemUuaXNkaWdpdCgpOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBlbGlmIHNlbGYuZGF0YV9zaXplX2xpbWl0IGFuZCBpbnQoc2l6ZSkgPiBzZWxmLmRhdGFfc2l6ZV9saW1pdDoKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzU1MiBFcnJvcjogbWVzc2FnZSBzaXplIGV4Y2VlZHMgZml4ZWQgbWF4aW11bSBtZXNzYWdlIHNpemUnKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBsZW4ocGFyYW1zLmtleXMoKSkgPiAwOgorICAgICAgICAgICAgc2VsZi5wdXNoKCc1NTUgTUFJTCBGUk9NIHBhcmFtZXRlcnMgbm90IHJlY29nbml6ZWQgb3Igbm90IGltcGxlbWVudGVkJykKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLm1haWxmcm9tID0gYWRkcmVzcwogICAgICAgICBwcmludCgnc2VuZGVyOicsIHNlbGYubWFpbGZyb20sIGZpbGU9REVCVUdTVFJFQU0pCi0gICAgICAgIHNlbGYucHVzaCgnMjUwIE9rJykKKyAgICAgICAgc2VsZi5wdXNoKCcyNTAgT0snKQogCiAgICAgZGVmIHNtdHBfUkNQVChzZWxmLCBhcmcpOgorICAgICAgICBpZiBub3Qgc2VsZi5zZWVuX2dyZWV0aW5nOgorICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRXJyb3I6IHNlbmQgSEVMTyBmaXJzdCcpOworICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHByaW50KCc9PT0+IFJDUFQnLCBhcmcsIGZpbGU9REVCVUdTVFJFQU0pCiAgICAgICAgIGlmIG5vdCBzZWxmLm1haWxmcm9tOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRXJyb3I6IG5lZWQgTUFJTCBjb21tYW5kJykKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBhZGRyZXNzID0gc2VsZi5fX2dldGFkZHIoJ1RPOicsIGFyZykgaWYgYXJnIGVsc2UgTm9uZQorICAgICAgICBzeW50YXhlcnIgPSAnNTAxIFN5bnRheDogUkNQVCBUTzogPGFkZHJlc3M+JworICAgICAgICBpZiBzZWxmLmV4dGVuZGVkX3NtdHA6CisgICAgICAgICAgICBzeW50YXhlcnIgKz0gJyBbU1AgPG1haWwtcGFyYW1ldGVycz5dJworICAgICAgICBpZiBhcmcgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgYXJnID0gc2VsZi5fc3RyaXBfY29tbWFuZF9rZXl3b3JkKCdUTzonLCBhcmcpCisgICAgICAgIGFkZHJlc3MsIHBhcmFtcyA9IHNlbGYuX2dldGFkZHIoYXJnKQorICAgICAgICBpZiBub3QgYWRkcmVzczoKKyAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgcGFyYW1zOgorICAgICAgICAgICAgaWYgc2VsZi5leHRlbmRlZF9zbXRwOgorICAgICAgICAgICAgICAgIHBhcmFtcyA9IHNlbGYuX2dldHBhcmFtcyhwYXJhbXMudXBwZXIoKSkKKyAgICAgICAgICAgICAgICBpZiBwYXJhbXMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIG5vdCBhZGRyZXNzOgorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBwYXJhbXMgYW5kIGxlbihwYXJhbXMua2V5cygpKSA+IDA6CisgICAgICAgICAgICBzZWxmLnB1c2goJzU1NSBSQ1BUIFRPIHBhcmFtZXRlcnMgbm90IHJlY29nbml6ZWQgb3Igbm90IGltcGxlbWVudGVkJykKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBub3QgYWRkcmVzczoKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAxIFN5bnRheDogUkNQVCBUTzogPGFkZHJlc3M+JykKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLnJjcHR0b3MuYXBwZW5kKGFkZHJlc3MpCiAgICAgICAgIHByaW50KCdyZWNpcHM6Jywgc2VsZi5yY3B0dG9zLCBmaWxlPURFQlVHU1RSRUFNKQotICAgICAgICBzZWxmLnB1c2goJzI1MCBPaycpCisgICAgICAgIHNlbGYucHVzaCgnMjUwIE9LJykKIAogICAgIGRlZiBzbXRwX1JTRVQoc2VsZiwgYXJnKToKICAgICAgICAgaWYgYXJnOgpAQCAtNDA4LDkgKzU1MCwxMiBAQAogICAgICAgICBzZWxmLnJjcHR0b3MgPSBbXQogICAgICAgICBzZWxmLnJlY2VpdmVkX2RhdGEgPSAnJwogICAgICAgICBzZWxmLnNtdHBfc3RhdGUgPSBzZWxmLkNPTU1BTkQKLSAgICAgICAgc2VsZi5wdXNoKCcyNTAgT2snKQorICAgICAgICBzZWxmLnB1c2goJzI1MCBPSycpCiAKICAgICBkZWYgc210cF9EQVRBKHNlbGYsIGFyZyk6CisgICAgICAgIGlmIG5vdCBzZWxmLnNlZW5fZ3JlZXRpbmc6CisgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBFcnJvcjogc2VuZCBIRUxPIGZpcnN0Jyk7CisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgbm90IHNlbGYucmNwdHRvczoKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIEVycm9yOiBuZWVkIFJDUFQgY29tbWFuZCcpCiAgICAgICAgICAgICByZXR1cm4KQEAgLTQyMSwxNSArNTY2LDIwIEBACiAgICAgICAgIHNlbGYuc2V0X3Rlcm1pbmF0b3IoYidcclxuLlxyXG4nKQogICAgICAgICBzZWxmLnB1c2goJzM1NCBFbmQgZGF0YSB3aXRoIDxDUj48TEY+LjxDUj48TEY+JykKIAorICAgICMgQ29tbWFuZHMgdGhhdCBoYXZlIG5vdCBiZWVuIGltcGxlbWVudGVkCisgICAgZGVmIHNtdHBfRVhQTihzZWxmLCBhcmcpOgorICAgICAgICBzZWxmLnB1c2goJzUwMiBFWFBOIG5vdCBpbXBsZW1lbnRlZCcpCiAKLQwKKwogY2xhc3MgU01UUFNlcnZlcihhc3luY29yZS5kaXNwYXRjaGVyKToKICAgICAjIFNNVFBDaGFubmVsIGNsYXNzIHRvIHVzZSBmb3IgbWFuYWdpbmcgY2xpZW50IGNvbm5lY3Rpb25zCiAgICAgY2hhbm5lbF9jbGFzcyA9IFNNVFBDaGFubmVsCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9jYWxhZGRyLCByZW1vdGVhZGRyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9jYWxhZGRyLCByZW1vdGVhZGRyLAorICAgICAgICAgICAgICAgICBkYXRhX3NpemVfbGltaXQ9REFUQV9TSVpFX0RFRkFVTFQpOgogICAgICAgICBzZWxmLl9sb2NhbGFkZHIgPSBsb2NhbGFkZHIKICAgICAgICAgc2VsZi5fcmVtb3RlYWRkciA9IHJlbW90ZWFkZHIKKyAgICAgICAgc2VsZi5kYXRhX3NpemVfbGltaXQgPSBkYXRhX3NpemVfbGltaXQKICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKQEAgLTQ0Nyw3ICs1OTcsNyBAQAogCiAgICAgZGVmIGhhbmRsZV9hY2NlcHRlZChzZWxmLCBjb25uLCBhZGRyKToKICAgICAgICAgcHJpbnQoJ0luY29taW5nIGNvbm5lY3Rpb24gZnJvbSAlcycgJSByZXByKGFkZHIpLCBmaWxlPURFQlVHU1RSRUFNKQotICAgICAgICBjaGFubmVsID0gc2VsZi5jaGFubmVsX2NsYXNzKHNlbGYsIGNvbm4sIGFkZHIpCisgICAgICAgIGNoYW5uZWwgPSBzZWxmLmNoYW5uZWxfY2xhc3Moc2VsZiwgY29ubiwgYWRkciwgc2VsZi5kYXRhX3NpemVfbGltaXQpCiAKICAgICAjIEFQSSBmb3IgImRvaW5nIHNvbWV0aGluZyB1c2VmdWwgd2l0aCB0aGUgbWVzc2FnZSIKICAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKQEAgLTQ3NSw3ICs2MjUsNiBAQAogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKIAotDAogY2xhc3MgRGVidWdnaW5nU2VydmVyKFNNVFBTZXJ2ZXIpOgogICAgICMgRG8gc29tZXRoaW5nIHdpdGggdGhlIGdhdGhlcmVkIG1lc3NhZ2UKICAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKQEAgLTQ5MSw3ICs2NDAsNiBAQAogICAgICAgICBwcmludCgnLS0tLS0tLS0tLS0tIEVORCBNRVNTQUdFIC0tLS0tLS0tLS0tLScpCiAKIAotDAogY2xhc3MgUHVyZVByb3h5KFNNVFBTZXJ2ZXIpOgogICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEpOgogICAgICAgICBsaW5lcyA9IGRhdGEuc3BsaXQoJ1xuJykKQEAgLTUzMiw3ICs2ODAsNiBAQAogICAgICAgICByZXR1cm4gcmVmdXNlZAogCiAKLQwKIGNsYXNzIE1haWxtYW5Qcm94eShQdXJlUHJveHkpOgogICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEpOgogICAgICAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwpAQCAtNjExLDE5ICs3NTgsMTggQEAKICAgICAgICAgICAgICAgICBtc2cuRW5xdWV1ZShtbGlzdCwgdG9yZXF1ZXN0PTEpCiAKIAotDAogY2xhc3MgT3B0aW9uczoKICAgICBzZXR1aWQgPSAxCiAgICAgY2xhc3NuYW1lID0gJ1B1cmVQcm94eScKKyAgICBzaXplX2xpbWl0ID0gTm9uZQogCiAKLQwKIGRlZiBwYXJzZWFyZ3MoKToKICAgICBnbG9iYWwgREVCVUdTVFJFQU0KICAgICB0cnk6CiAgICAgICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KAotICAgICAgICAgICAgc3lzLmFyZ3ZbMTpdLCAnblZoYzpkJywKLSAgICAgICAgICAgIFsnY2xhc3M9JywgJ25vc2V0dWlkJywgJ3ZlcnNpb24nLCAnaGVscCcsICdkZWJ1ZyddKQorICAgICAgICAgICAgc3lzLmFyZ3ZbMTpdLCAnblZoYzpzOmQnLAorICAgICAgICAgICAgWydjbGFzcz0nLCAnbm9zZXR1aWQnLCAndmVyc2lvbicsICdoZWxwJywgJ3NpemU9JywgJ2RlYnVnJ10pCiAgICAgZXhjZXB0IGdldG9wdC5lcnJvciBhcyBlOgogICAgICAgICB1c2FnZSgxLCBlKQogCkBAIC02NDAsNiArNzg2LDEzIEBACiAgICAgICAgICAgICBvcHRpb25zLmNsYXNzbmFtZSA9IGFyZwogICAgICAgICBlbGlmIG9wdCBpbiAoJy1kJywgJy0tZGVidWcnKToKICAgICAgICAgICAgIERFQlVHU1RSRUFNID0gc3lzLnN0ZGVycgorICAgICAgICBlbGlmIG9wdCBpbiAoJy1zJywgJy0tc2l6ZScpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGludF9zaXplID0gaW50KGFyZykKKyAgICAgICAgICAgICAgICBvcHRpb25zLnNpemVfbGltaXQgPSBpbnRfc2l6ZQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHByaW50KCdJbnZhbGlkIHNpemU6ICcgKyBhcmcsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQogCiAgICAgIyBwYXJzZSB0aGUgcmVzdCBvZiB0aGUgYXJndW1lbnRzCiAgICAgaWYgbGVuKGFyZ3MpIDwgMToKQEAgLTY3NCw3ICs4MjcsNiBAQAogICAgIHJldHVybiBvcHRpb25zCiAKIAotDAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBvcHRpb25zID0gcGFyc2VhcmdzKCkKICAgICAjIEJlY29tZSBub2JvZHkKQEAgLTY4Nyw3ICs4MzksOCBAQAogICAgICAgICBpbXBvcnQgX19tYWluX18gYXMgbW9kCiAgICAgY2xhc3NfID0gZ2V0YXR0cihtb2QsIGNsYXNzbmFtZSkKICAgICBwcm94eSA9IGNsYXNzXygob3B0aW9ucy5sb2NhbGhvc3QsIG9wdGlvbnMubG9jYWxwb3J0KSwKLSAgICAgICAgICAgICAgICAgICAob3B0aW9ucy5yZW1vdGVob3N0LCBvcHRpb25zLnJlbW90ZXBvcnQpKQorICAgICAgICAgICAgICAgICAgIChvcHRpb25zLnJlbW90ZWhvc3QsIG9wdGlvbnMucmVtb3RlcG9ydCksCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5zaXplX2xpbWl0KQogICAgIGlmIG9wdGlvbnMuc2V0dWlkOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpbXBvcnQgcHdkCmRpZmYgLS1naXQgYS9MaWIvc210cGxpYi5weSBiL0xpYi9zbXRwbGliLnB5CmluZGV4IGUwNmE5YmUuLmM5NDlkNzcgMTAwNjQ0Ci0tLSBhL0xpYi9zbXRwbGliLnB5CisrKyBiL0xpYi9zbXRwbGliLnB5CkBAIC0xMzMsMjQgKzEzMywxOCBAQAogICAgIGNvbWJpbmF0aW9uIHByb3ZpZGVkLgogICAgICIiIgogCi1kZWYgcXVvdGVhZGRyKGFkZHIpOgorZGVmIHF1b3RlYWRkcihhZGRyc3RyaW5nKToKICAgICAiIiJRdW90ZSBhIHN1YnNldCBvZiB0aGUgZW1haWwgYWRkcmVzc2VzIGRlZmluZWQgYnkgUkZDIDgyMS4KIAogICAgIFNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSBhbnl0aGluZyBlbWFpbC51dGlscy5wYXJzZWFkZHIgY2FuIGhhbmRsZS4KICAgICAiIiIKLSAgICBtID0gKE5vbmUsIE5vbmUpCi0gICAgdHJ5OgotICAgICAgICBtID0gZW1haWwudXRpbHMucGFyc2VhZGRyKGFkZHIpWzFdCi0gICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICBwYXNzCi0gICAgaWYgbSA9PSAoTm9uZSwgTm9uZSk6ICAjIEluZGljYXRlcyBwYXJzZSBmYWlsdXJlIG9yIEF0dHJpYnV0ZUVycm9yCi0gICAgICAgICMgc29tZXRoaW5nIHdlaXJkIGhlcmUuLiBwdW50IC1kZG0KLSAgICAgICAgcmV0dXJuICI8JXM+IiAlIGFkZHIKLSAgICBlbGlmIG0gaXMgTm9uZToKLSAgICAgICAgIyB0aGUgc2VuZGVyIHdhbnRzIGFuIGVtcHR5IHJldHVybiBhZGRyZXNzCi0gICAgICAgIHJldHVybiAiPD4iCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuICI8JXM+IiAlIG0KKyAgICBkaXNwbGF5bmFtZSwgYWRkciA9IGVtYWlsLnV0aWxzLnBhcnNlYWRkcihhZGRyc3RyaW5nKQorICAgIGlmIChkaXNwbGF5bmFtZSwgYWRkcikgPT0gKCcnLCAnJyk6CisgICAgICAgICMgcGFyc2VhZGRyIGNvdWxkbid0IHBhcnNlIGl0LCB1c2UgaXQgYXMgaXMgYW5kIGhvcGUgZm9yIHRoZSBiZXN0LgorICAgICAgICBpZiBhZGRyc3RyaW5nLnN0cmlwKCkuc3RhcnRzd2l0aCgnPCcpOgorICAgICAgICAgICAgcmV0dXJuIGFkZHJzdHJpbmcKKyAgICAgICAgcmV0dXJuICI8JXM+IiAlIGFkZHJzdHJpbmcKKyAgICByZXR1cm4gIjwlcz4iICUgYWRkcgogCiBkZWYgX2FkZHJfb25seShhZGRyc3RyaW5nKToKICAgICBkaXNwbGF5bmFtZSwgYWRkciA9IGVtYWlsLnV0aWxzLnBhcnNlYWRkcihhZGRyc3RyaW5nKQpAQCAtMTgwLDI3ICsxNzQsNiBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIF9oYXZlX3NzbCA9IEZhbHNlCiBlbHNlOgotICAgIGNsYXNzIFNTTEZha2VGaWxlOgotICAgICAgICAiIiJBIGZha2UgZmlsZSBsaWtlIG9iamVjdCB0aGF0IHJlYWxseSB3cmFwcyBhIFNTTE9iamVjdC4KLQotICAgICAgICBJdCBvbmx5IHN1cHBvcnRzIHdoYXQgaXMgbmVlZGVkIGluIHNtdHBsaWIuCi0gICAgICAgICIiIgotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgc3Nsb2JqKToKLSAgICAgICAgICAgIHNlbGYuc3Nsb2JqID0gc3Nsb2JqCi0KLSAgICAgICAgZGVmIHJlYWRsaW5lKHNlbGYpOgotICAgICAgICAgICAgc3RyID0gYiIiCi0gICAgICAgICAgICBjaHIgPSBOb25lCi0gICAgICAgICAgICB3aGlsZSBjaHIgIT0gYiJcbiI6Ci0gICAgICAgICAgICAgICAgY2hyID0gc2VsZi5zc2xvYmoucmVhZCgxKQotICAgICAgICAgICAgICAgIGlmIG5vdCBjaHI6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgc3RyICs9IGNocgotICAgICAgICAgICAgcmV0dXJuIHN0cgotCi0gICAgICAgIGRlZiBjbG9zZShzZWxmKToKLSAgICAgICAgICAgIHBhc3MKLQogICAgIF9oYXZlX3NzbCA9IFRydWUKIAogCkBAIC0yNDIsNyArMjE1LDggQEAKICAgICBkZWZhdWx0X3BvcnQgPSBTTVRQX1BPUlQKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCBwb3J0PTAsIGxvY2FsX2hvc3RuYW1lPU5vbmUsCi0gICAgICAgICAgICAgICAgIHRpbWVvdXQ9c29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VUKToKKyAgICAgICAgICAgICAgICAgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsCisgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzPU5vbmUpOgogICAgICAgICAiIiJJbml0aWFsaXplIGEgbmV3IGluc3RhbmNlLgogCiAgICAgICAgIElmIHNwZWNpZmllZCwgYGhvc3QnIGlzIHRoZSBuYW1lIG9mIHRoZSByZW1vdGUgaG9zdCB0byB3aGljaCB0bwpAQCAtMjUwLDExICsyMjQsMTYgQEAKICAgICAgICAgQnkgZGVmYXVsdCwgc210cGxpYi5TTVRQX1BPUlQgaXMgdXNlZC4gIEFuIFNNVFBDb25uZWN0RXJyb3IgaXMgcmFpc2VkCiAgICAgICAgIGlmIHRoZSBzcGVjaWZpZWQgYGhvc3QnIGRvZXNuJ3QgcmVzcG9uZCBjb3JyZWN0bHkuICBJZiBzcGVjaWZpZWQsCiAgICAgICAgIGBsb2NhbF9ob3N0bmFtZWAgaXMgdXNlZCBhcyB0aGUgRlFETiBvZiB0aGUgbG9jYWwgaG9zdC4gIEJ5IGRlZmF1bHQsCi0gICAgICAgIHRoZSBsb2NhbCBob3N0bmFtZSBpcyBmb3VuZCB1c2luZyBzb2NrZXQuZ2V0ZnFkbigpLgorICAgICAgICB0aGUgbG9jYWwgaG9zdG5hbWUgaXMgZm91bmQgdXNpbmcgc29ja2V0LmdldGZxZG4oKS4gVGhlCisgICAgICAgIGBzb3VyY2VfYWRkcmVzc2AgcGFyYW1ldGVyIHRha2VzIGEgMi10dXBsZSAoaG9zdCwgcG9ydCkgZm9yIHRoZSBzb2NrZXQKKyAgICAgICAgdG8gYmluZCB0byBhcyBpdHMgc291cmNlIGFkZHJlc3MgYmVmb3JlIGNvbm5lY3RpbmcuIElmIHRoZSBob3N0IGlzICcnCisgICAgICAgIGFuZCBwb3J0IGlzIDAsIHRoZSBPUyBkZWZhdWx0IGJlaGF2aW9yIHdpbGwgYmUgdXNlZC4KIAogICAgICAgICAiIiIKICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAogICAgICAgICBzZWxmLmVzbXRwX2ZlYXR1cmVzID0ge30KKyAgICAgICAgc2VsZi5zb3VyY2VfYWRkcmVzcyA9IHNvdXJjZV9hZGRyZXNzCisKICAgICAgICAgaWYgaG9zdDoKICAgICAgICAgICAgIChjb2RlLCBtc2cpID0gc2VsZi5jb25uZWN0KGhvc3QsIHBvcnQpCiAgICAgICAgICAgICBpZiBjb2RlICE9IDIyMDoKQEAgLTI3Nyw2ICsyNTYsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgIHNlbGYubG9jYWxfaG9zdG5hbWUgPSAnWyVzXScgJSBhZGRyCiAKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29kZSwgbWVzc2FnZSA9IHNlbGYuZG9jbWQoIlFVSVQiKQorICAgICAgICAgICAgaWYgY29kZSAhPSAyMjE6CisgICAgICAgICAgICAgICAgcmFpc2UgU01UUFJlc3BvbnNlRXhjZXB0aW9uKGNvZGUsIG1lc3NhZ2UpCisgICAgICAgIGV4Y2VwdCBTTVRQU2VydmVyRGlzY29ubmVjdGVkOgorICAgICAgICAgICAgcGFzcworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisKICAgICBkZWYgc2V0X2RlYnVnbGV2ZWwoc2VsZiwgZGVidWdsZXZlbCk6CiAgICAgICAgICIiIlNldCB0aGUgZGVidWcgb3V0cHV0IGxldmVsLgogCkBAIC0yOTAsMTAgKzI4MiwxMiBAQAogICAgICAgICAjIFRoaXMgbWFrZXMgaXQgc2ltcGxlciBmb3IgU01UUF9TU0wgdG8gdXNlIHRoZSBTTVRQIGNvbm5lY3QgY29kZQogICAgICAgICAjIGFuZCBqdXN0IGFsdGVyIHRoZSBzb2NrZXQgY29ubmVjdGlvbiBiaXQuCiAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6Ci0gICAgICAgICAgICBwcmludCgnY29ubmVjdDonLCAoaG9zdCwgcG9ydCksIGZpbGU9c3RkZXJyKQotICAgICAgICByZXR1cm4gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChob3N0LCBwb3J0KSwgdGltZW91dCkKKyAgICAgICAgICAgIHByaW50KCdjb25uZWN0OiB0bycsIChob3N0LCBwb3J0KSwgc2VsZi5zb3VyY2VfYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3RkZXJyKQorICAgICAgICByZXR1cm4gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChob3N0LCBwb3J0KSwgdGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNvdXJjZV9hZGRyZXNzKQogCi0gICAgZGVmIGNvbm5lY3Qoc2VsZiwgaG9zdD0nbG9jYWxob3N0JywgcG9ydD0wKToKKyAgICBkZWYgY29ubmVjdChzZWxmLCBob3N0PSdsb2NhbGhvc3QnLCBwb3J0PTAsIHNvdXJjZV9hZGRyZXNzPU5vbmUpOgogICAgICAgICAiIiJDb25uZWN0IHRvIGEgaG9zdCBvbiBhIGdpdmVuIHBvcnQuCiAKICAgICAgICAgSWYgdGhlIGhvc3RuYW1lIGVuZHMgd2l0aCBhIGNvbG9uIChgOicpIGZvbGxvd2VkIGJ5IGEgbnVtYmVyLCBhbmQKQEAgLTMwNCw2ICsyOTgsMTAgQEAKICAgICAgICAgc3BlY2lmaWVkIGR1cmluZyBpbnN0YW50aWF0aW9uLgogCiAgICAgICAgICIiIgorCisgICAgICAgIGlmIHNvdXJjZV9hZGRyZXNzOgorICAgICAgICAgICAgc2VsZi5zb3VyY2VfYWRkcmVzcyA9IHNvdXJjZV9hZGRyZXNzCisKICAgICAgICAgaWYgbm90IHBvcnQgYW5kIChob3N0LmZpbmQoJzonKSA9PSBob3N0LnJmaW5kKCc6JykpOgogICAgICAgICAgICAgaSA9IGhvc3QucmZpbmQoJzonKQogICAgICAgICAgICAgaWYgaSA+PSAwOgpAQCAtMzE3LDYgKzMxNSw3IEBACiAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CiAgICAgICAgICAgICBwcmludCgnY29ubmVjdDonLCAoaG9zdCwgcG9ydCksIGZpbGU9c3RkZXJyKQogICAgICAgICBzZWxmLnNvY2sgPSBzZWxmLl9nZXRfc29ja2V0KGhvc3QsIHBvcnQsIHNlbGYudGltZW91dCkKKyAgICAgICAgc2VsZi5maWxlID0gTm9uZQogICAgICAgICAoY29kZSwgbXNnKSA9IHNlbGYuZ2V0cmVwbHkoKQogICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgogICAgICAgICAgICAgcHJpbnQoImNvbm5lY3Q6IiwgbXNnLCBmaWxlPXN0ZGVycikKQEAgLTM4OCw3ICszODcsOCBAQAogCiAgICAgICAgIGVycm1zZyA9IGIiXG4iLmpvaW4ocmVzcCkKICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgIHByaW50KCdyZXBseTogcmV0Y29kZSAoJXMpOyBNc2c6ICVzJyAlIChlcnJjb2RlLCBlcnJtc2cpLCBmaWxlPXN0ZGVycikKKyAgICAgICAgICAgIHByaW50KCdyZXBseTogcmV0Y29kZSAoJXMpOyBNc2c6ICVzJyAlIChlcnJjb2RlLCBlcnJtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3RkZXJyKQogICAgICAgICByZXR1cm4gZXJyY29kZSwgZXJybXNnCiAKICAgICBkZWYgZG9jbWQoc2VsZiwgY21kLCBhcmdzPSIiKToKQEAgLTYzMiw3ICs2MzIsNyBAQAogICAgICAgICAjIFdlIGNvdWxkIG5vdCBsb2dpbiBzdWNlc3NmdWxseS4gUmV0dXJuIHJlc3VsdCBvZiBsYXN0IGF0dGVtcHQuCiAgICAgICAgIHJhaXNlIFNNVFBBdXRoZW50aWNhdGlvbkVycm9yKGNvZGUsIHJlc3ApCiAKLSAgICBkZWYgc3RhcnR0bHMoc2VsZiwga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lKToKKyAgICBkZWYgc3RhcnR0bHMoc2VsZiwga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLCBjb250ZXh0PU5vbmUpOgogICAgICAgICAiIiJQdXRzIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBTTVRQIHNlcnZlciBpbnRvIFRMUyBtb2RlLgogCiAgICAgICAgIElmIHRoZXJlIGhhcyBiZWVuIG5vIHByZXZpb3VzIEVITE8gb3IgSEVMTyBjb21tYW5kIHRoaXMgc2Vzc2lvbiwgdGhpcwpAQCAtNjU2LDggKzY1NiwxNyBAQAogICAgICAgICBpZiByZXNwID09IDIyMDoKICAgICAgICAgICAgIGlmIG5vdCBfaGF2ZV9zc2w6CiAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJObyBTU0wgc3VwcG9ydCBpbmNsdWRlZCBpbiB0aGlzIFB5dGhvbiIpCi0gICAgICAgICAgICBzZWxmLnNvY2sgPSBzc2wud3JhcF9zb2NrZXQoc2VsZi5zb2NrLCBrZXlmaWxlLCBjZXJ0ZmlsZSkKLSAgICAgICAgICAgIHNlbGYuZmlsZSA9IFNTTEZha2VGaWxlKHNlbGYuc29jaykKKyAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGtleWZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQga2V5ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQorICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5zb2NrID0gY29udGV4dC53cmFwX3NvY2tldChzZWxmLnNvY2spCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuc29jayA9IHNzbC53cmFwX3NvY2tldChzZWxmLnNvY2ssIGtleWZpbGUsIGNlcnRmaWxlKQorICAgICAgICAgICAgc2VsZi5maWxlID0gTm9uZQogICAgICAgICAgICAgIyBSRkMgMzIwNzoKICAgICAgICAgICAgICMgVGhlIGNsaWVudCBNVVNUIGRpc2NhcmQgYW55IGtub3dsZWRnZSBvYnRhaW5lZCBmcm9tCiAgICAgICAgICAgICAjIHRoZSBzZXJ2ZXIsIHN1Y2ggYXMgdGhlIGxpc3Qgb2YgU01UUCBzZXJ2aWNlIGV4dGVuc2lvbnMsCkBAIC03ODYsNyArNzk1LDggQEAKICAgICAgICAgIyBUT0RPIGltcGxlbWVudCBoZXVyaXN0aWNzIHRvIGd1ZXNzIHRoZSBjb3JyZWN0IFJlc2VudC0qIGJsb2NrIHdpdGggYW4KICAgICAgICAgIyBvcHRpb24gYWxsb3dpbmcgdGhlIHVzZXIgdG8gZW5hYmxlIHRoZSBoZXVyaXN0aWNzLiAgKEl0IHNob3VsZCBiZQogICAgICAgICAjIHBvc3NpYmxlIHRvIGd1ZXNzIGNvcnJlY3RseSBhbG1vc3QgYWxsIG9mIHRoZSB0aW1lLikKLSAgICAgICAgcmVzZW50ID1tc2cuZ2V0X2FsbCgnUmVzZW50LURhdGUnKQorCisgICAgICAgIHJlc2VudCA9IG1zZy5nZXRfYWxsKCdSZXNlbnQtRGF0ZScpCiAgICAgICAgIGlmIHJlc2VudCBpcyBOb25lOgogICAgICAgICAgICAgaGVhZGVyX3ByZWZpeCA9ICcnCiAgICAgICAgIGVsaWYgbGVuKHJlc2VudCkgPT0gMToKQEAgLTc5NSwxMyArODA1LDEzIEBACiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtZXNzYWdlIGhhcyBtb3JlIHRoYW4gb25lICdSZXNlbnQtJyBoZWFkZXIgYmxvY2siKQogICAgICAgICBpZiBmcm9tX2FkZHIgaXMgTm9uZToKICAgICAgICAgICAgICMgUHJlZmVyIHRoZSBzZW5kZXIgZmllbGQgcGVyIFJGQyAyODIyOjMuNi4yLgotICAgICAgICAgICAgZnJvbV9hZGRyID0gKG1zZ1toZWFkZXJfcHJlZml4KydTZW5kZXInXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlcl9wcmVmaXgrJ1NlbmRlcicpIGluIG1zZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBtc2dbaGVhZGVyX3ByZWZpeCsnRnJvbSddKQorICAgICAgICAgICAgZnJvbV9hZGRyID0gKG1zZ1toZWFkZXJfcHJlZml4ICsgJ1NlbmRlciddCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGVhZGVyX3ByZWZpeCArICdTZW5kZXInKSBpbiBtc2cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbXNnW2hlYWRlcl9wcmVmaXggKyAnRnJvbSddKQogICAgICAgICBpZiB0b19hZGRycyBpcyBOb25lOgotICAgICAgICAgICAgYWRkcl9maWVsZHMgPSBbZiBmb3IgZiBpbiAobXNnW2hlYWRlcl9wcmVmaXgrJ1RvJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dbaGVhZGVyX3ByZWZpeCsnQmNjJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dbaGVhZGVyX3ByZWZpeCsnQ2MnXSkgaWYgZiBpcyBub3QgTm9uZV0KKyAgICAgICAgICAgIGFkZHJfZmllbGRzID0gW2YgZm9yIGYgaW4gKG1zZ1toZWFkZXJfcHJlZml4ICsgJ1RvJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dbaGVhZGVyX3ByZWZpeCArICdCY2MnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ1toZWFkZXJfcHJlZml4ICsgJ0NjJ10pIGlmIGYgaXMgbm90IE5vbmVdCiAgICAgICAgICAgICB0b19hZGRycyA9IFthWzFdIGZvciBhIGluIGVtYWlsLnV0aWxzLmdldGFkZHJlc3NlcyhhZGRyX2ZpZWxkcyldCiAgICAgICAgICMgTWFrZSBhIGxvY2FsIGNvcHkgc28gd2UgY2FuIGRlbGV0ZSB0aGUgYmNjIGhlYWRlcnMuCiAgICAgICAgIG1zZ19jb3B5ID0gY29weS5jb3B5KG1zZykKQEAgLTgzNSwyNiArODQ1LDQxIEBACiAgICAgICAgICIiIiBUaGlzIGlzIGEgc3ViY2xhc3MgZGVyaXZlZCBmcm9tIFNNVFAgdGhhdCBjb25uZWN0cyBvdmVyIGFuIFNTTCBlbmNyeXB0ZWQKICAgICAgICAgc29ja2V0ICh0byB1c2UgdGhpcyBjbGFzcyB5b3UgbmVlZCBhIHNvY2tldCBtb2R1bGUgdGhhdCB3YXMgY29tcGlsZWQgd2l0aCBTU0wKICAgICAgICAgc3VwcG9ydCkuIElmIGhvc3QgaXMgbm90IHNwZWNpZmllZCwgJycgKHRoZSBsb2NhbCBob3N0KSBpcyB1c2VkLiBJZiBwb3J0IGlzCi0gICAgICAgIG9taXR0ZWQsIHRoZSBzdGFuZGFyZCBTTVRQLW92ZXItU1NMIHBvcnQgKDQ2NSkgaXMgdXNlZC4ga2V5ZmlsZSBhbmQgY2VydGZpbGUKKyAgICAgICAgb21pdHRlZCwgdGhlIHN0YW5kYXJkIFNNVFAtb3Zlci1TU0wgcG9ydCAoNDY1KSBpcyB1c2VkLiBUaGUgb3B0aW9uYWwKKyAgICAgICAgc291cmNlX2FkZHJlc3MgdGFrZXMgYSB0d28tdHVwbGUgKGhvc3QscG9ydCkgZm9yIHNvY2tldCB0byBiaW5kIHRvLiBrZXlmaWxlIGFuZCBjZXJ0ZmlsZQogICAgICAgICBhcmUgYWxzbyBvcHRpb25hbCAtIHRoZXkgY2FuIGNvbnRhaW4gYSBQRU0gZm9ybWF0dGVkIHByaXZhdGUga2V5IGFuZAotICAgICAgICBjZXJ0aWZpY2F0ZSBjaGFpbiBmaWxlIGZvciB0aGUgU1NMIGNvbm5lY3Rpb24uCisgICAgICAgIGNlcnRpZmljYXRlIGNoYWluIGZpbGUgZm9yIHRoZSBTU0wgY29ubmVjdGlvbi4gY29udGV4dCBhbHNvIG9wdGlvbmFsLCBjYW4gY29udGFpbgorICAgICAgICBhIFNTTENvbnRleHQsIGFuZCBpcyBhbiBhbHRlcm5hdGl2ZSB0byBrZXlmaWxlIGFuZCBjZXJ0ZmlsZTsgSWYgaXQgaXMgc3BlY2lmaWVkIGJvdGgKKyAgICAgICAga2V5ZmlsZSBhbmQgY2VydGZpbGUgbXVzdCBiZSBOb25lLgogICAgICAgICAiIiIKIAogICAgICAgICBkZWZhdWx0X3BvcnQgPSBTTVRQX1NTTF9QT1JUCiAKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9JycsIHBvcnQ9MCwgbG9jYWxfaG9zdG5hbWU9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9c29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VUKToKKyAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9c29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VULAorICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9Tm9uZSwgY29udGV4dD1Ob25lKToKKyAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGtleWZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQga2V5ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQorICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKICAgICAgICAgICAgIHNlbGYua2V5ZmlsZSA9IGtleWZpbGUKICAgICAgICAgICAgIHNlbGYuY2VydGZpbGUgPSBjZXJ0ZmlsZQotICAgICAgICAgICAgU01UUC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0LCBsb2NhbF9ob3N0bmFtZSwgdGltZW91dCkKKyAgICAgICAgICAgIHNlbGYuY29udGV4dCA9IGNvbnRleHQKKyAgICAgICAgICAgIFNNVFAuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCwgbG9jYWxfaG9zdG5hbWUsIHRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzKQogCiAgICAgICAgIGRlZiBfZ2V0X3NvY2tldChzZWxmLCBob3N0LCBwb3J0LCB0aW1lb3V0KToKICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CiAgICAgICAgICAgICAgICAgcHJpbnQoJ2Nvbm5lY3Q6JywgKGhvc3QsIHBvcnQpLCBmaWxlPXN0ZGVycikKLSAgICAgICAgICAgIG5ld19zb2NrZXQgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGhvc3QsIHBvcnQpLCB0aW1lb3V0KQotICAgICAgICAgICAgbmV3X3NvY2tldCA9IHNzbC53cmFwX3NvY2tldChuZXdfc29ja2V0LCBzZWxmLmtleWZpbGUsIHNlbGYuY2VydGZpbGUpCi0gICAgICAgICAgICBzZWxmLmZpbGUgPSBTU0xGYWtlRmlsZShuZXdfc29ja2V0KQorICAgICAgICAgICAgbmV3X3NvY2tldCA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIHRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MpCisgICAgICAgICAgICBpZiBzZWxmLmNvbnRleHQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgbmV3X3NvY2tldCA9IHNlbGYuY29udGV4dC53cmFwX3NvY2tldChuZXdfc29ja2V0KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuZXdfc29ja2V0ID0gc3NsLndyYXBfc29ja2V0KG5ld19zb2NrZXQsIHNlbGYua2V5ZmlsZSwgc2VsZi5jZXJ0ZmlsZSkKICAgICAgICAgICAgIHJldHVybiBuZXdfc29ja2V0CiAKICAgICBfX2FsbF9fLmFwcGVuZCgiU01UUF9TU0wiKQpAQCAtODc5LDE4ICs5MDQsMjEgQEAKIAogICAgIGVobG9fbXNnID0gImxobG8iCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nJywgcG9ydD1MTVRQX1BPUlQsIGxvY2FsX2hvc3RuYW1lPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCBwb3J0PUxNVFBfUE9SVCwgbG9jYWxfaG9zdG5hbWU9Tm9uZSwKKyAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzPU5vbmUpOgogICAgICAgICAiIiJJbml0aWFsaXplIGEgbmV3IGluc3RhbmNlLiIiIgotICAgICAgICBTTVRQLl9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQsIGxvY2FsX2hvc3RuYW1lKQorICAgICAgICBTTVRQLl9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQsIGxvY2FsX2hvc3RuYW1lPWxvY2FsX2hvc3RuYW1lLAorICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzPXNvdXJjZV9hZGRyZXNzKQogCi0gICAgZGVmIGNvbm5lY3Qoc2VsZiwgaG9zdD0nbG9jYWxob3N0JywgcG9ydD0wKToKKyAgICBkZWYgY29ubmVjdChzZWxmLCBob3N0PSdsb2NhbGhvc3QnLCBwb3J0PTAsIHNvdXJjZV9hZGRyZXNzPU5vbmUpOgogICAgICAgICAiIiJDb25uZWN0IHRvIHRoZSBMTVRQIGRhZW1vbiwgb24gZWl0aGVyIGEgVW5peCBvciBhIFRDUCBzb2NrZXQuIiIiCiAgICAgICAgIGlmIGhvc3RbMF0gIT0gJy8nOgotICAgICAgICAgICAgcmV0dXJuIFNNVFAuY29ubmVjdChzZWxmLCBob3N0LCBwb3J0KQorICAgICAgICAgICAgcmV0dXJuIFNNVFAuY29ubmVjdChzZWxmLCBob3N0LCBwb3J0LCBzb3VyY2VfYWRkcmVzcz1zb3VyY2VfYWRkcmVzcykKIAogICAgICAgICAjIEhhbmRsZSBVbml4LWRvbWFpbiBzb2NrZXRzLgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICBzZWxmLmZpbGUgPSBOb25lCiAgICAgICAgICAgICBzZWxmLnNvY2suY29ubmVjdChob3N0KQogICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgogICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKZGlmZiAtLWdpdCBhL0xpYi9zb2NrZXQucHkgYi9MaWIvc29ja2V0LnB5CmluZGV4IGVhNTZhNjcuLmQ0ZjFiNjUgMTAwNjQ0Ci0tLSBhL0xpYi9zb2NrZXQucHkKKysrIGIvTGliL3NvY2tldC5weQpAQCAtMTIsNiArMTIsNyBAQAogc29ja2V0KCkgLS0gY3JlYXRlIGEgbmV3IHNvY2tldCBvYmplY3QKIHNvY2tldHBhaXIoKSAtLSBjcmVhdGUgYSBwYWlyIG9mIG5ldyBzb2NrZXQgb2JqZWN0cyBbKl0KIGZyb21mZCgpIC0tIGNyZWF0ZSBhIHNvY2tldCBvYmplY3QgZnJvbSBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBbKl0KK2Zyb21zaGFyZSgpIC0tIGNyZWF0ZSBhIHNvY2tldCBvYmplY3QgZnJvbSBkYXRhIHJlY2VpdmVkIGZyb20gc29ja2V0LnNoYXJlKCkgWypdCiBnZXRob3N0bmFtZSgpIC0tIHJldHVybiB0aGUgY3VycmVudCBob3N0bmFtZQogZ2V0aG9zdGJ5bmFtZSgpIC0tIG1hcCBhIGhvc3RuYW1lIHRvIGl0cyBJUCBudW1iZXIKIGdldGhvc3RieWFkZHIoKSAtLSBtYXAgYW4gSVAgbnVtYmVyIG9yIGhvc3RuYW1lIHRvIEROUyBpbmZvCkBAIC01Myw3ICs1NCw2IEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZXJybm8gPSBOb25lCiBFQkFERiA9IGdldGF0dHIoZXJybm8sICdFQkFERicsIDkpCi1FSU5UUiA9IGdldGF0dHIoZXJybm8sICdFSU5UUicsIDQpCiBFQUdBSU4gPSBnZXRhdHRyKGVycm5vLCAnRUFHQUlOJywgMTEpCiBFV09VTERCTE9DSyA9IGdldGF0dHIoZXJybm8sICdFV09VTERCTE9DSycsIDExKQogCkBAIC0xMTIsNiArMTEyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc1s3Ol0pCiAgICAgICAgIHJldHVybiBzCiAKKyAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbm5vdCBzZXJpYWxpemUgc29ja2V0IG9iamVjdCIpCisKICAgICBkZWYgZHVwKHNlbGYpOgogICAgICAgICAiIiJkdXAoKSAtPiBzb2NrZXQgb2JqZWN0CiAKQEAgLTIwNyw3ICsyMTAsNiBAQAogICAgICAgICBzZWxmLl9jbG9zZWQgPSBUcnVlCiAgICAgICAgIHJldHVybiBzdXBlcigpLmRldGFjaCgpCiAKLQogZGVmIGZyb21mZChmZCwgZmFtaWx5LCB0eXBlLCBwcm90bz0wKToKICAgICAiIiIgZnJvbWZkKGZkLCBmYW1pbHksIHR5cGVbLCBwcm90b10pIC0+IHNvY2tldCBvYmplY3QKIApAQCAtMjE3LDYgKzIxOSwxNCBAQAogICAgIG5mZCA9IGR1cChmZCkKICAgICByZXR1cm4gc29ja2V0KGZhbWlseSwgdHlwZSwgcHJvdG8sIG5mZCkKIAoraWYgaGFzYXR0cihfc29ja2V0LnNvY2tldCwgInNoYXJlIik6CisgICAgZGVmIGZyb21zaGFyZShpbmZvKToKKyAgICAgICAgIiIiIGZyb21zaGFyZShpbmZvKSAtPiBzb2NrZXQgb2JqZWN0CisKKyAgICAgICAgQ3JlYXRlIGEgc29ja2V0IG9iamVjdCBmcm9tIGEgdGhlIGJ5dGVzIG9iamVjdCByZXR1cm5lZCBieQorICAgICAgICBzb2NrZXQuc2hhcmUocGlkKS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzb2NrZXQoMCwgMCwgMCwgaW5mbykKIAogaWYgaGFzYXR0cihfc29ja2V0LCAic29ja2V0cGFpciIpOgogCkBAIC0yODgsMTEgKzI5OCwxMCBAQAogICAgICAgICAgICAgZXhjZXB0IHRpbWVvdXQ6CiAgICAgICAgICAgICAgICAgc2VsZi5fdGltZW91dF9vY2N1cnJlZCA9IFRydWUKICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CisgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGV4Y2VwdCBlcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIG4gPSBlLmFyZ3NbMF0KLSAgICAgICAgICAgICAgICBpZiBuID09IEVJTlRSOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIG4gaW4gX2Jsb2NraW5nX2Vycm5vczoKKyAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gaW4gX2Jsb2NraW5nX2Vycm5vczoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgICAgICByYWlzZQogCmRpZmYgLS1naXQgYS9MaWIvc29ja2V0c2VydmVyLnB5IGIvTGliL3NvY2tldHNlcnZlci5weQppbmRleCA4ZjgwYTdkLi44MzMyZmRmIDEwMDY0NAotLS0gYS9MaWIvc29ja2V0c2VydmVyLnB5CisrKyBiL0xpYi9zb2NrZXRzZXJ2ZXIucHkKQEAgLTE1Myw4ICsxNTMsOCBAQAogICAgIHdoaWxlIFRydWU6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzKQotICAgICAgICBleGNlcHQgKE9TRXJyb3IsIHNlbGVjdC5lcnJvcikgYXMgZToKLSAgICAgICAgICAgIGlmIGUuYXJnc1swXSAhPSBlcnJuby5FSU5UUjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUlOVFI6CiAgICAgICAgICAgICAgICAgcmFpc2UKIAogY2xhc3MgQmFzZVNlcnZlcjoKQEAgLTE4MCw2ICsxODAsNyBAQAogICAgIC0gcHJvY2Vzc19yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQogICAgIC0gc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQogICAgIC0gY2xvc2VfcmVxdWVzdChyZXF1ZXN0KQorICAgIC0gc2VydmljZV9hY3Rpb25zKCkKICAgICAtIGhhbmRsZV9lcnJvcigpCiAKICAgICBNZXRob2RzIGZvciBkZXJpdmVkIGNsYXNzZXM6CkBAIC0yMzYsNiArMjM3LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxfaW50ZXJ2YWwpCiAgICAgICAgICAgICAgICAgaWYgc2VsZiBpbiByOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfcmVxdWVzdF9ub2Jsb2NrKCkKKworICAgICAgICAgICAgICAgIHNlbGYuc2VydmljZV9hY3Rpb25zKCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuX19zaHV0ZG93bl9yZXF1ZXN0ID0gRmFsc2UKICAgICAgICAgICAgIHNlbGYuX19pc19zaHV0X2Rvd24uc2V0KCkKQEAgLTI1MCw2ICsyNTMsMTQgQEAKICAgICAgICAgc2VsZi5fX3NodXRkb3duX3JlcXVlc3QgPSBUcnVlCiAgICAgICAgIHNlbGYuX19pc19zaHV0X2Rvd24ud2FpdCgpCiAKKyAgICBkZWYgc2VydmljZV9hY3Rpb25zKHNlbGYpOgorICAgICAgICAiIiJDYWxsZWQgYnkgdGhlIHNlcnZlX2ZvcmV2ZXIoKSBsb29wLgorCisgICAgICAgIE1heSBiZSBvdmVycmlkZGVuIGJ5IGEgc3ViY2xhc3MgLyBNaXhpbiB0byBpbXBsZW1lbnQgYW55IGNvZGUgdGhhdAorICAgICAgICBuZWVkcyB0byBiZSBydW4gZHVyaW5nIHRoZSBsb29wLgorICAgICAgICAiIiIKKyAgICAgICAgcGFzcworCiAgICAgIyBUaGUgZGlzdGluY3Rpb24gYmV0d2VlbiBoYW5kbGluZywgZ2V0dGluZywgcHJvY2Vzc2luZyBhbmQKICAgICAjIGZpbmlzaGluZyBhIHJlcXVlc3QgaXMgZmFpcmx5IGFyYml0cmFyeS4gIFJlbWVtYmVyOgogICAgICMKQEAgLTU1MCw5ICs1NjEsMTUgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCiAKKyAgICBkZWYgc2VydmljZV9hY3Rpb25zKHNlbGYpOgorICAgICAgICAiIiJDb2xsZWN0IHRoZSB6b21iaWUgY2hpbGQgcHJvY2Vzc2VzIHJlZ3VsYXJseSBpbiB0aGUgRm9ya2luZ01peEluLgorCisgICAgICAgIHNlcnZpY2VfYWN0aW9ucyBpcyBjYWxsZWQgaW4gdGhlIEJhc2VTZXJ2ZXIncyBzZXJ2ZV9mb3J2ZXIgbG9vcC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCisKICAgICBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKICAgICAgICAgIiIiRm9yayBhIG5ldyBzdWJwcm9jZXNzIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QuIiIiCi0gICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCiAgICAgICAgIHBpZCA9IG9zLmZvcmsoKQogICAgICAgICBpZiBwaWQ6CiAgICAgICAgICAgICAjIFBhcmVudCBwcm9jZXNzCkBAIC01NjAsNiArNTc3LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbiA9IFtdCiAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5hcHBlbmQocGlkKQogICAgICAgICAgICAgc2VsZi5jbG9zZV9yZXF1ZXN0KHJlcXVlc3QpCisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgQ2hpbGQgcHJvY2Vzcy4KICAgICAgICAgICAgICMgVGhpcyBtdXN0IG5ldmVyIHJldHVybiwgaGVuY2Ugb3MuX2V4aXQoKSEKZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkgYi9MaWIvc3FsaXRlMy90ZXN0L2RiYXBpLnB5CmluZGV4IDIwMmJkMzguLmI3ZWMxYWQgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weQpAQCAtMSw0ICsxLDQgQEAKLSMtKi0gY29kaW5nOiBJU08tODg1OS0xIC0qLQorIy0qLSBjb2Rpbmc6IGlzby04ODU5LTEgLSotCiAjIHB5c3FsaXRlMi90ZXN0L2RiYXBpLnB5OiB0ZXN0cyBmb3IgREItQVBJIGNvbXBsaWFuY2UKICMKICMgQ29weXJpZ2h0IChDKSAyMDA0LTIwMTAgR2VyaGFyZCBI5HJpbmcgPGdoQGdoYWVyaW5nLmRlPgpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC9mYWN0b3J5LnB5IGIvTGliL3NxbGl0ZTMvdGVzdC9mYWN0b3J5LnB5CmluZGV4IDdmNmYzNDcuLjllODMzYWUgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvZmFjdG9yeS5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L2ZhY3RvcnkucHkKQEAgLTEsNCArMSw0IEBACi0jLSotIGNvZGluZzogSVNPLTg4NTktMSAtKi0KKyMtKi0gY29kaW5nOiBpc28tODg1OS0xIC0qLQogIyBweXNxbGl0ZTIvdGVzdC9mYWN0b3J5LnB5OiB0ZXN0cyBmb3IgdGhlIHZhcmlvdXMgZmFjdG9yaWVzIGluIHB5c3FsaXRlCiAjCiAjIENvcHlyaWdodCAoQykgMjAwNS0yMDA3IEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KQEAgLTE3OCw2ICsxNzgsOCBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUocm93WzBdLmVuZHN3aXRoKCJyZWljaCIpLCAiY29sdW1uIG11c3QgY29udGFpbiBvcmlnaW5hbCBkYXRhIikKIAogICAgIGRlZiBDaGVja09wdGltaXplZFVuaWNvZGUoc2VsZik6CisgICAgICAgICMgSW4gcHkzaywgc3RyIG9iamVjdHMgYXJlIGFsd2F5cyByZXR1cm5lZCB3aGVuIHRleHRfZmFjdG9yeQorICAgICAgICAjIGlzIE9wdGltaXplZFVuaWNvZGUKICAgICAgICAgc2VsZi5jb24udGV4dF9mYWN0b3J5ID0gc3FsaXRlLk9wdGltaXplZFVuaWNvZGUKICAgICAgICAgYXVzdHJpYSA9ICLWc3RlcnJlaWNoIgogICAgICAgICBnZXJtYW55ID0gIkRldXRjaGxhbmQiCmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L2hvb2tzLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC9ob29rcy5weQppbmRleCA5NTQ0MTQ5Li4wODdlZGIwIDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L2hvb2tzLnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvaG9va3MucHkKQEAgLTEsNCArMSw0IEBACi0jLSotIGNvZGluZzogSVNPLTg4NTktMSAtKi0KKyMtKi0gY29kaW5nOiBpc28tODg1OS0xIC0qLQogIyBweXNxbGl0ZTIvdGVzdC9ob29rcy5weTogdGVzdHMgZm9yIHZhcmlvdXMgU1FMaXRlLXNwZWNpZmljIGhvb2tzCiAjCiAjIENvcHlyaWdodCAoQykgMjAwNi0yMDA3IEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KQEAgLTE5NSwxMCArMTk1LDYwIEBACiAgICAgICAgIGNvbi5leGVjdXRlKCJzZWxlY3QgMSB1bmlvbiBzZWxlY3QgMiB1bmlvbiBzZWxlY3QgMyIpLmZldGNoYWxsKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3Rpb24sIDAsICJwcm9ncmVzcyBoYW5kbGVyIHdhcyBub3QgY2xlYXJlZCIpCiAKK2NsYXNzIFRyYWNlQ2FsbGJhY2tUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIENoZWNrVHJhY2VDYWxsYmFja1VzZWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIHRyYWNlIGNhbGxiYWNrIGlzIGludm9rZWQgb25jZSBpdCBpcyBzZXQuCisgICAgICAgICIiIgorICAgICAgICBjb24gPSBzcWxpdGUuY29ubmVjdCgiOm1lbW9yeToiKQorICAgICAgICB0cmFjZWRfc3RhdGVtZW50cyA9IFtdCisgICAgICAgIGRlZiB0cmFjZShzdGF0ZW1lbnQpOgorICAgICAgICAgICAgdHJhY2VkX3N0YXRlbWVudHMuYXBwZW5kKHN0YXRlbWVudCkKKyAgICAgICAgY29uLnNldF90cmFjZV9jYWxsYmFjayh0cmFjZSkKKyAgICAgICAgY29uLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSBmb28oYSwgYikiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodHJhY2VkX3N0YXRlbWVudHMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkoImNyZWF0ZSB0YWJsZSBmb28iIGluIHN0bXQgZm9yIHN0bXQgaW4gdHJhY2VkX3N0YXRlbWVudHMpKQorCisgICAgZGVmIENoZWNrQ2xlYXJUcmFjZUNhbGxiYWNrKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHNldHRpbmcgdGhlIHRyYWNlIGNhbGxiYWNrIHRvIE5vbmUgY2xlYXJzIHRoZSBwcmV2aW91c2x5IHNldCBjYWxsYmFjay4KKyAgICAgICAgIiIiCisgICAgICAgIGNvbiA9IHNxbGl0ZS5jb25uZWN0KCI6bWVtb3J5OiIpCisgICAgICAgIHRyYWNlZF9zdGF0ZW1lbnRzID0gW10KKyAgICAgICAgZGVmIHRyYWNlKHN0YXRlbWVudCk6CisgICAgICAgICAgICB0cmFjZWRfc3RhdGVtZW50cy5hcHBlbmQoc3RhdGVtZW50KQorICAgICAgICBjb24uc2V0X3RyYWNlX2NhbGxiYWNrKHRyYWNlKQorICAgICAgICBjb24uc2V0X3RyYWNlX2NhbGxiYWNrKE5vbmUpCisgICAgICAgIGNvbi5leGVjdXRlKCJjcmVhdGUgdGFibGUgZm9vKGEsIGIpIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0cmFjZWRfc3RhdGVtZW50cywgInRyYWNlIGNhbGxiYWNrIHdhcyBub3QgY2xlYXJlZCIpCisKKyAgICBkZWYgQ2hlY2tVbmljb2RlQ29udGVudChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgc3RhdGVtZW50IGNhbiBjb250YWluIHVuaWNvZGUgbGl0ZXJhbHMuCisgICAgICAgICIiIgorICAgICAgICB1bmljb2RlX3ZhbHVlID0gJ1x4ZjZceGU0XHhmY1x4ZDZceGM0XHhkY1x4ZGZcdTIwYWMnCisgICAgICAgIGNvbiA9IHNxbGl0ZS5jb25uZWN0KCI6bWVtb3J5OiIpCisgICAgICAgIHRyYWNlZF9zdGF0ZW1lbnRzID0gW10KKyAgICAgICAgZGVmIHRyYWNlKHN0YXRlbWVudCk6CisgICAgICAgICAgICB0cmFjZWRfc3RhdGVtZW50cy5hcHBlbmQoc3RhdGVtZW50KQorICAgICAgICBjb24uc2V0X3RyYWNlX2NhbGxiYWNrKHRyYWNlKQorICAgICAgICBjb24uZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIGZvbyh4KSIpCisgICAgICAgICMgQ2FuJ3QgZXhlY3V0ZSBib3VuZCBwYXJhbWV0ZXJzIGFzIHRoZWlyIHZhbHVlcyBkb24ndCBhcHBlYXIKKyAgICAgICAgIyBpbiB0cmFjZWQgc3RhdGVtZW50cyBiZWZvcmUgU1FMaXRlIDMuNi4yMQorICAgICAgICAjIChjZi4gaHR0cDovL3d3dy5zcWxpdGUub3JnL2RyYWZ0L3JlbGVhc2Vsb2cvM182XzIxLmh0bWwpCisgICAgICAgIGNvbi5leGVjdXRlKCdpbnNlcnQgaW50byBmb28oeCkgdmFsdWVzICgiJXMiKScgJSB1bmljb2RlX3ZhbHVlKQorICAgICAgICBjb24uY29tbWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFueSh1bmljb2RlX3ZhbHVlIGluIHN0bXQgZm9yIHN0bXQgaW4gdHJhY2VkX3N0YXRlbWVudHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIlVuaWNvZGUgZGF0YSAlcyBnYXJibGVkIGluIHRyYWNlIGNhbGxiYWNrOiAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICUgKGFzY2lpKHVuaWNvZGVfdmFsdWUpLCAnLCAnLmpvaW4obWFwKGFzY2lpLCB0cmFjZWRfc3RhdGVtZW50cykpKSkKKworCisKIGRlZiBzdWl0ZSgpOgogICAgIGNvbGxhdGlvbl9zdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShDb2xsYXRpb25UZXN0cywgIkNoZWNrIikKICAgICBwcm9ncmVzc19zdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShQcm9ncmVzc1Rlc3RzLCAiQ2hlY2siKQotICAgIHJldHVybiB1bml0dGVzdC5UZXN0U3VpdGUoKGNvbGxhdGlvbl9zdWl0ZSwgcHJvZ3Jlc3Nfc3VpdGUpKQorICAgIHRyYWNlX3N1aXRlID0gdW5pdHRlc3QubWFrZVN1aXRlKFRyYWNlQ2FsbGJhY2tUZXN0cywgIkNoZWNrIikKKyAgICByZXR1cm4gdW5pdHRlc3QuVGVzdFN1aXRlKChjb2xsYXRpb25fc3VpdGUsIHByb2dyZXNzX3N1aXRlLCB0cmFjZV9zdWl0ZSkpCiAKIGRlZiB0ZXN0KCk6CiAgICAgcnVubmVyID0gdW5pdHRlc3QuVGV4dFRlc3RSdW5uZXIoKQpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkgYi9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weQppbmRleCA3MGU5NmExLi5mZWI0ZmExIDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weQpAQCAtMSw0ICsxLDQgQEAKLSMtKi0gY29kaW5nOiBJU08tODg1OS0xIC0qLQorIy0qLSBjb2Rpbmc6IGlzby04ODU5LTEgLSotCiAjIHB5c3FsaXRlMi90ZXN0L3RyYW5zYWN0aW9ucy5weTogdGVzdHMgdHJhbnNhY3Rpb25zCiAjCiAjIENvcHlyaWdodCAoQykgMjAwNS0yMDA3IEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvdHlwZXMucHkgYi9MaWIvc3FsaXRlMy90ZXN0L3R5cGVzLnB5CmluZGV4IDI5NDEzZTEuLjNiNGNiNmQgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvdHlwZXMucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC90eXBlcy5weQpAQCAtMSw0ICsxLDQgQEAKLSMtKi0gY29kaW5nOiBJU08tODg1OS0xIC0qLQorIy0qLSBjb2Rpbmc6IGlzby04ODU5LTEgLSotCiAjIHB5c3FsaXRlMi90ZXN0L3R5cGVzLnB5OiB0ZXN0cyBmb3IgdHlwZSBjb252ZXJzaW9uIGFuZCBkZXRlY3Rpb24KICMKICMgQ29weXJpZ2h0IChDKSAyMDA1IEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KQEAgLTg1LDcgKzg1LDcgQEAKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3ZhbCwgYnl0ZXMpOgogICAgICAgICAgICAgICAgICMgc3FsaXRlMyBhbHdheXMgY2FsbHMgX19pbml0X18gd2l0aCBhIGJ5dGVzIGNyZWF0ZWQgZnJvbSBhCiAgICAgICAgICAgICAgICAgIyBVVEYtOCBzdHJpbmcgd2hlbiBfX2NvbmZvcm1fXyB3YXMgdXNlZCB0byBzdG9yZSB0aGUgb2JqZWN0LgotICAgICAgICAgICAgICAgIF92YWwgPSBfdmFsLmRlY29kZSgndXRmOCcpCisgICAgICAgICAgICAgICAgX3ZhbCA9IF92YWwuZGVjb2RlKCd1dGYtOCcpCiAgICAgICAgICAgICBzZWxmLnZhbCA9IF92YWwKIAogICAgICAgICBkZWYgX19jbXBfXyhzZWxmLCBvdGhlcik6CmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L3VzZXJmdW5jdGlvbnMucHkgYi9MaWIvc3FsaXRlMy90ZXN0L3VzZXJmdW5jdGlvbnMucHkKaW5kZXggOWE2YTgyOC4uNjllMmVjMiAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC91c2VyZnVuY3Rpb25zLnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvdXNlcmZ1bmN0aW9ucy5weQpAQCAtMSw0ICsxLDQgQEAKLSMtKi0gY29kaW5nOiBJU08tODg1OS0xIC0qLQorIy0qLSBjb2Rpbmc6IGlzby04ODU5LTEgLSotCiAjIHB5c3FsaXRlMi90ZXN0L3VzZXJmdW5jdGlvbnMucHk6IHRlc3RzIGZvciB1c2VyLWRlZmluZWQgZnVuY3Rpb25zIGFuZAogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdGVzLgogIwpkaWZmIC0tZ2l0IGEvTGliL3NyZV9jb21waWxlLnB5IGIvTGliL3NyZV9jb21waWxlLnB5CmluZGV4IDQ2ZWFjOWMuLjkwZTNhMjUgMTAwNjQ0Ci0tLSBhL0xpYi9zcmVfY29tcGlsZS5weQorKysgYi9MaWIvc3JlX2NvbXBpbGUucHkKQEAgLTMxOSwxMSArMzE5LDEzIEBACiAgICAgICAgICAgICAgICAgIyBYWFg6IGNvdWxkIGV4cGFuZCBjYXRlZ29yeQogICAgICAgICAgICAgICAgIHJldHVybiBjaGFyc2V0ICMgY2Fubm90IGNvbXByZXNzCiAgICAgZXhjZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgICMgbm9uLUJNUCBjaGFyYWN0ZXJzCisgICAgICAgICMgbm9uLUJNUCBjaGFyYWN0ZXJzOyBYWFggbm93IHRoZXkgc2hvdWxkIHdvcmsKICAgICAgICAgcmV0dXJuIGNoYXJzZXQKICAgICBpZiBuZWdhdGU6CiAgICAgICAgIGlmIHN5cy5tYXh1bmljb2RlICE9IDY1NTM1OgogICAgICAgICAgICAgIyBYWFg6IG5lZ2F0aW9uIGRvZXMgbm90IHdvcmsgd2l0aCBiaWcgY2hhcnNldHMKKyAgICAgICAgICAgICMgWFhYMjogbm93IHRoZXkgc2hvdWxkIHdvcmssIGJ1dCByZW1vdmluZyB0aGlzIHdpbGwgbWFrZSB0aGUKKyAgICAgICAgICAgICMgY2hhcm1hcCAxNyB0aW1lcyBiaWdnZXIKICAgICAgICAgICAgIHJldHVybiBjaGFyc2V0CiAgICAgICAgIGZvciBpIGluIHJhbmdlKDY1NTM2KToKICAgICAgICAgICAgIGNoYXJtYXBbaV0gPSBub3QgY2hhcm1hcFtpXQpkaWZmIC0tZ2l0IGEvTGliL3NyZV9wYXJzZS5weSBiL0xpYi9zcmVfcGFyc2UucHkKaW5kZXggMDQ1YTVlYi4uYjE5NWZkMCAxMDA2NDQKLS0tIGEvTGliL3NyZV9wYXJzZS5weQorKysgYi9MaWIvc3JlX3BhcnNlLnB5CkBAIC0xNzgsNiArMTc4LDcgQEAKIAogY2xhc3MgVG9rZW5pemVyOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJpbmcpOgorICAgICAgICBzZWxmLmlzdGV4dCA9IGlzaW5zdGFuY2Uoc3RyaW5nLCBzdHIpCiAgICAgICAgIHNlbGYuc3RyaW5nID0gc3RyaW5nCiAgICAgICAgIHNlbGYuaW5kZXggPSAwCiAgICAgICAgIHNlbGYuX19uZXh0KCkKQEAgLTE4OCwxNCArMTg5LDE0IEBACiAgICAgICAgIGNoYXIgPSBzZWxmLnN0cmluZ1tzZWxmLmluZGV4OnNlbGYuaW5kZXgrMV0KICAgICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIHRoZSBzdHI4LCBzaW5jZSBpbmRleGluZyByZXR1cm5zIGEgaW50ZWdlcgogICAgICAgICAjIFhYWCBUaGlzIGlzIG9ubHkgbmVlZGVkIGZvciB0ZXN0X2J1Z185MjYwNzUgaW4gdGVzdF9yZS5weQotICAgICAgICBpZiBjaGFyIGFuZCBpc2luc3RhbmNlKGNoYXIsIGJ5dGVzKToKKyAgICAgICAgaWYgY2hhciBhbmQgbm90IHNlbGYuaXN0ZXh0OgogICAgICAgICAgICAgY2hhciA9IGNocihjaGFyWzBdKQogICAgICAgICBpZiBjaGFyID09ICJcXCI6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgYyA9IHNlbGYuc3RyaW5nW3NlbGYuaW5kZXggKyAxXQogICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImJvZ3VzIGVzY2FwZSAoZW5kIG9mIGxpbmUpIikKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5zdHJpbmcsIGJ5dGVzKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzdGV4dDoKICAgICAgICAgICAgICAgICBjID0gY2hyKGMpCiAgICAgICAgICAgICBjaGFyID0gY2hhciArIGMKICAgICAgICAgc2VsZi5pbmRleCA9IHNlbGYuaW5kZXggKyBsZW4oY2hhcikKQEAgLTIxMCw2ICsyMTEsMTUgQEAKICAgICAgICAgdGhpcyA9IHNlbGYubmV4dAogICAgICAgICBzZWxmLl9fbmV4dCgpCiAgICAgICAgIHJldHVybiB0aGlzCisgICAgZGVmIGdldHdoaWxlKHNlbGYsIG4sIGNoYXJzZXQpOgorICAgICAgICByZXN1bHQgPSAnJworICAgICAgICBmb3IgXyBpbiByYW5nZShuKToKKyAgICAgICAgICAgIGMgPSBzZWxmLm5leHQKKyAgICAgICAgICAgIGlmIGMgbm90IGluIGNoYXJzZXQ6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHJlc3VsdCArPSBjCisgICAgICAgICAgICBzZWxmLl9fbmV4dCgpCisgICAgICAgIHJldHVybiByZXN1bHQKICAgICBkZWYgdGVsbChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuaW5kZXgsIHNlbGYubmV4dAogICAgIGRlZiBzZWVrKHNlbGYsIGluZGV4KToKQEAgLTI0MiwyMCArMjUyLDMwIEBACiAgICAgICAgIGMgPSBlc2NhcGVbMToyXQogICAgICAgICBpZiBjID09ICJ4IjoKICAgICAgICAgICAgICMgaGV4YWRlY2ltYWwgZXNjYXBlIChleGFjdGx5IHR3byBkaWdpdHMpCi0gICAgICAgICAgICB3aGlsZSBzb3VyY2UubmV4dCBpbiBIRVhESUdJVFMgYW5kIGxlbihlc2NhcGUpIDwgNDoKLSAgICAgICAgICAgICAgICBlc2NhcGUgPSBlc2NhcGUgKyBzb3VyY2UuZ2V0KCkKLSAgICAgICAgICAgIGVzY2FwZSA9IGVzY2FwZVsyOl0KLSAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDI6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImJvZ3VzIGVzY2FwZTogJXMiICUgcmVwcigiXFwiICsgZXNjYXBlKSkKLSAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlLCAxNikgJiAweGZmCisgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDIsIEhFWERJR0lUUykKKyAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMjpdLCAxNikgJiAweGZmCisgICAgICAgIGVsaWYgYyA9PSAidSIgYW5kIHNvdXJjZS5pc3RleHQ6CisgICAgICAgICAgICAjIHVuaWNvZGUgZXNjYXBlIChleGFjdGx5IGZvdXIgZGlnaXRzKQorICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSg0LCBIRVhESUdJVFMpCisgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA2OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzI6XSwgMTYpCisgICAgICAgIGVsaWYgYyA9PSAiVSIgYW5kIHNvdXJjZS5pc3RleHQ6CisgICAgICAgICAgICAjIHVuaWNvZGUgZXNjYXBlIChleGFjdGx5IGVpZ2h0IGRpZ2l0cykKKyAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoOCwgSEVYRElHSVRTKQorICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gMTA6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICAgICAgYyA9IGludChlc2NhcGVbMjpdLCAxNikKKyAgICAgICAgICAgIGNocihjKSAjIHJhaXNlIFZhbHVlRXJyb3IgZm9yIGludmFsaWQgY29kZQorICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGMKICAgICAgICAgZWxpZiBjIGluIE9DVERJR0lUUzoKICAgICAgICAgICAgICMgb2N0YWwgZXNjYXBlICh1cCB0byB0aHJlZSBkaWdpdHMpCi0gICAgICAgICAgICB3aGlsZSBzb3VyY2UubmV4dCBpbiBPQ1RESUdJVFMgYW5kIGxlbihlc2NhcGUpIDwgNDoKLSAgICAgICAgICAgICAgICBlc2NhcGUgPSBlc2NhcGUgKyBzb3VyY2UuZ2V0KCkKLSAgICAgICAgICAgIGVzY2FwZSA9IGVzY2FwZVsxOl0KLSAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlLCA4KSAmIDB4ZmYKKyAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoMiwgT0NURElHSVRTKQorICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMTpdLCA4KSAmIDB4ZmYKICAgICAgICAgZWxpZiBjIGluIERJR0lUUzoKLSAgICAgICAgICAgIHJhaXNlIGVycm9yKCJib2d1cyBlc2NhcGU6ICVzIiAlIHJlcHIoZXNjYXBlKSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgaWYgbGVuKGVzY2FwZSkgPT0gMjoKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBvcmQoZXNjYXBlWzFdKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgpAQCAtMjc0LDE1ICsyOTQsMjcgQEAKICAgICAgICAgYyA9IGVzY2FwZVsxOjJdCiAgICAgICAgIGlmIGMgPT0gIngiOgogICAgICAgICAgICAgIyBoZXhhZGVjaW1hbCBlc2NhcGUKLSAgICAgICAgICAgIHdoaWxlIHNvdXJjZS5uZXh0IGluIEhFWERJR0lUUyBhbmQgbGVuKGVzY2FwZSkgPCA0OgotICAgICAgICAgICAgICAgIGVzY2FwZSA9IGVzY2FwZSArIHNvdXJjZS5nZXQoKQorICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSgyLCBIRVhESUdJVFMpCiAgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA0OgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzI6XSwgMTYpICYgMHhmZgorICAgICAgICBlbGlmIGMgPT0gInUiIGFuZCBzb3VyY2UuaXN0ZXh0OgorICAgICAgICAgICAgIyB1bmljb2RlIGVzY2FwZSAoZXhhY3RseSBmb3VyIGRpZ2l0cykKKyAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoNCwgSEVYRElHSVRTKQorICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gNjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsyOl0sIDE2KQorICAgICAgICBlbGlmIGMgPT0gIlUiIGFuZCBzb3VyY2UuaXN0ZXh0OgorICAgICAgICAgICAgIyB1bmljb2RlIGVzY2FwZSAoZXhhY3RseSBlaWdodCBkaWdpdHMpCisgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDgsIEhFWERJR0lUUykKKyAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDEwOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgIGMgPSBpbnQoZXNjYXBlWzI6XSwgMTYpCisgICAgICAgICAgICBjaHIoYykgIyByYWlzZSBWYWx1ZUVycm9yIGZvciBpbnZhbGlkIGNvZGUKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBjCiAgICAgICAgIGVsaWYgYyA9PSAiMCI6CiAgICAgICAgICAgICAjIG9jdGFsIGVzY2FwZQotICAgICAgICAgICAgd2hpbGUgc291cmNlLm5leHQgaW4gT0NURElHSVRTIGFuZCBsZW4oZXNjYXBlKSA8IDQ6Ci0gICAgICAgICAgICAgICAgZXNjYXBlID0gZXNjYXBlICsgc291cmNlLmdldCgpCisgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDIsIE9DVERJR0lUUykKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzE6XSwgOCkgJiAweGZmCiAgICAgICAgIGVsaWYgYyBpbiBESUdJVFM6CiAgICAgICAgICAgICAjIG9jdGFsIGVzY2FwZSAqb3IqIGRlY2ltYWwgZ3JvdXAgcmVmZXJlbmNlIChzaWdoKQpAQCAtODAyLDcgKzgzNCw3IEBACiAgICAgZWxzZToKICAgICAgICAgIyBUaGUgdG9rZW5pemVyIGltcGxpY2l0bHkgZGVjb2RlcyBieXRlcyBvYmplY3RzIGFzIGxhdGluLTEsIHdlIG11c3QKICAgICAgICAgIyB0aGVyZWZvcmUgcmUtZW5jb2RlIHRoZSBmaW5hbCByZXByZXNlbnRhdGlvbi4KLSAgICAgICAgZW5jb2RlID0gbGFtYmRhIHg6IHguZW5jb2RlKCdsYXRpbjEnKQorICAgICAgICBlbmNvZGUgPSBsYW1iZGEgeDogeC5lbmNvZGUoJ2xhdGluLTEnKQogICAgIGZvciBjLCBzIGluIHA6CiAgICAgICAgIGlmIGMgaXMgTUFSSzoKICAgICAgICAgICAgIGdyb3Vwc2FwcGVuZCgoaSwgcykpCmRpZmYgLS1naXQgYS9MaWIvc3NsLnB5IGIvTGliL3NzbC5weQppbmRleCBlOTAxYjY0Li42ZmY1YzUzIDEwMDY0NAotLS0gYS9MaWIvc3NsLnB5CisrKyBiL0xpYi9zc2wucHkKQEAgLTYwLDEwICs2MCwyNSBAQAogaW1wb3J0IF9zc2wgICAgICAgICAgICAgIyBpZiB3ZSBjYW4ndCBpbXBvcnQgaXQsIGxldCB0aGUgZXJyb3IgcHJvcGFnYXRlCiAKIGZyb20gX3NzbCBpbXBvcnQgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiwgT1BFTlNTTF9WRVJTSU9OX0lORk8sIE9QRU5TU0xfVkVSU0lPTgotZnJvbSBfc3NsIGltcG9ydCBfU1NMQ29udGV4dCwgU1NMRXJyb3IKK2Zyb20gX3NzbCBpbXBvcnQgX1NTTENvbnRleHQKK2Zyb20gX3NzbCBpbXBvcnQgKAorICAgIFNTTEVycm9yLCBTU0xaZXJvUmV0dXJuRXJyb3IsIFNTTFdhbnRSZWFkRXJyb3IsIFNTTFdhbnRXcml0ZUVycm9yLAorICAgIFNTTFN5c2NhbGxFcnJvciwgU1NMRU9GRXJyb3IsCisgICAgKQogZnJvbSBfc3NsIGltcG9ydCBDRVJUX05PTkUsIENFUlRfT1BUSU9OQUwsIENFUlRfUkVRVUlSRUQKLWZyb20gX3NzbCBpbXBvcnQgT1BfQUxMLCBPUF9OT19TU0x2MiwgT1BfTk9fU1NMdjMsIE9QX05PX1RMU3YxCi1mcm9tIF9zc2wgaW1wb3J0IFJBTkRfc3RhdHVzLCBSQU5EX2VnZCwgUkFORF9hZGQKK2Zyb20gX3NzbCBpbXBvcnQgKAorICAgIE9QX0FMTCwgT1BfTk9fU1NMdjIsIE9QX05PX1NTTHYzLCBPUF9OT19UTFN2MSwKKyAgICBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UsIE9QX1NJTkdMRV9ESF9VU0UKKyAgICApCit0cnk6CisgICAgZnJvbSBfc3NsIGltcG9ydCBPUF9OT19DT01QUkVTU0lPTgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK3RyeToKKyAgICBmcm9tIF9zc2wgaW1wb3J0IE9QX1NJTkdMRV9FQ0RIX1VTRQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK2Zyb20gX3NzbCBpbXBvcnQgUkFORF9zdGF0dXMsIFJBTkRfZWdkLCBSQU5EX2FkZCwgUkFORF9ieXRlcywgUkFORF9wc2V1ZG9fYnl0ZXMKIGZyb20gX3NzbCBpbXBvcnQgKAogICAgIFNTTF9FUlJPUl9aRVJPX1JFVFVSTiwKICAgICBTU0xfRVJST1JfV0FOVF9SRUFELApAQCAtNzUsOCArOTAsOSBAQAogICAgIFNTTF9FUlJPUl9FT0YsCiAgICAgU1NMX0VSUk9SX0lOVkFMSURfRVJST1JfQ09ERSwKICAgICApCi1mcm9tIF9zc2wgaW1wb3J0IEhBU19TTkkKLWZyb20gX3NzbCBpbXBvcnQgUFJPVE9DT0xfU1NMdjMsIFBST1RPQ09MX1NTTHYyMywgUFJPVE9DT0xfVExTdjEKK2Zyb20gX3NzbCBpbXBvcnQgSEFTX1NOSSwgSEFTX0VDREgsIEhBU19OUE4KK2Zyb20gX3NzbCBpbXBvcnQgKFBST1RPQ09MX1NTTHYzLCBQUk9UT0NPTF9TU0x2MjMsCisgICAgICAgICAgICAgICAgICBQUk9UT0NPTF9UTFN2MSkKIGZyb20gX3NzbCBpbXBvcnQgX09QRU5TU0xfQVBJX1ZFUlNJT04KIAogX1BST1RPQ09MX05BTUVTID0gewpAQCAtOTQsMTEgKzExMCwxNiBAQAogCiBmcm9tIHNvY2tldCBpbXBvcnQgZ2V0bmFtZWluZm8gYXMgX2dldG5hbWVpbmZvCiBmcm9tIHNvY2tldCBpbXBvcnQgZXJyb3IgYXMgc29ja2V0X2Vycm9yCi1mcm9tIHNvY2tldCBpbXBvcnQgc29ja2V0LCBBRl9JTkVULCBTT0NLX1NUUkVBTQorZnJvbSBzb2NrZXQgaW1wb3J0IHNvY2tldCwgQUZfSU5FVCwgU09DS19TVFJFQU0sIGNyZWF0ZV9jb25uZWN0aW9uCiBpbXBvcnQgYmFzZTY0ICAgICAgICAjIGZvciBERVItdG8tUEVNIHRyYW5zbGF0aW9uCiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgZXJybm8KIAoraWYgX3NzbC5IQVNfVExTX1VOSVFVRToKKyAgICBDSEFOTkVMX0JJTkRJTkdfVFlQRVMgPSBbJ3Rscy11bmlxdWUnXQorZWxzZToKKyAgICBDSEFOTkVMX0JJTkRJTkdfVFlQRVMgPSBbXQorCiAjIERpc2FibGUgd2VhayBvciBpbnNlY3VyZSBjaXBoZXJzIGJ5IGRlZmF1bHQKICMgKE9wZW5TU0wncyBkZWZhdWx0IHNldHRpbmcgaXMgJ0RFRkFVTFQ6IWFOVUxMOiFlTlVMTCcpCiBfREVGQVVMVF9DSVBIRVJTID0gJ0RFRkFVTFQ6IWFOVUxMOiFlTlVMTDohTE9XOiFFWFBPUlQ6IVNTTHYyJwpAQCAtMTg4LDYgKzIwOSwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zZXJ2ZXJfaG9zdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ9c2VsZikKIAorICAgIGRlZiBzZXRfbnBuX3Byb3RvY29scyhzZWxmLCBucG5fcHJvdG9jb2xzKToKKyAgICAgICAgcHJvdG9zID0gYnl0ZWFycmF5KCkKKyAgICAgICAgZm9yIHByb3RvY29sIGluIG5wbl9wcm90b2NvbHM6CisgICAgICAgICAgICBiID0gYnl0ZXMocHJvdG9jb2wsICdhc2NpaScpCisgICAgICAgICAgICBpZiBsZW4oYikgPT0gMCBvciBsZW4oYikgPiAyNTU6CisgICAgICAgICAgICAgICAgcmFpc2UgU1NMRXJyb3IoJ05QTiBwcm90b2NvbHMgbXVzdCBiZSAxIHRvIDI1NSBpbiBsZW5ndGgnKQorICAgICAgICAgICAgcHJvdG9zLmFwcGVuZChsZW4oYikpCisgICAgICAgICAgICBwcm90b3MuZXh0ZW5kKGIpCisKKyAgICAgICAgc2VsZi5fc2V0X25wbl9wcm90b2NvbHMocHJvdG9zKQorCiAKIGNsYXNzIFNTTFNvY2tldChzb2NrZXQpOgogICAgICIiIlRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIHN1YnR5cGUgb2Ygc29ja2V0LnNvY2tldCB0aGF0IHdyYXBzCkBAIC0xOTksNyArMjMxLDcgQEAKICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249UFJPVE9DT0xfU1NMdjIzLCBjYV9jZXJ0cz1Ob25lLAogICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1UcnVlLAogICAgICAgICAgICAgICAgICBmYW1pbHk9QUZfSU5FVCwgdHlwZT1TT0NLX1NUUkVBTSwgcHJvdG89MCwgZmlsZW5vPU5vbmUsCi0gICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsIGNpcGhlcnM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9VHJ1ZSwgbnBuX3Byb3RvY29scz1Ob25lLCBjaXBoZXJzPU5vbmUsCiAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lLAogICAgICAgICAgICAgICAgICBfY29udGV4dD1Ob25lKToKIApAQCAtMjE5LDYgKzI1MSw4IEBACiAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYV9jZXJ0cykKICAgICAgICAgICAgIGlmIGNlcnRmaWxlOgogICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGZpbGUsIGtleWZpbGUpCisgICAgICAgICAgICBpZiBucG5fcHJvdG9jb2xzOgorICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5zZXRfbnBuX3Byb3RvY29scyhucG5fcHJvdG9jb2xzKQogICAgICAgICAgICAgaWYgY2lwaGVyczoKICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQuc2V0X2NpcGhlcnMoY2lwaGVycykKICAgICAgICAgICAgIHNlbGYua2V5ZmlsZSA9IGtleWZpbGUKQEAgLTMxOSw2ICszNTMsMTMgQEAKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnBlZXJfY2VydGlmaWNhdGUoYmluYXJ5X2Zvcm0pCiAKKyAgICBkZWYgc2VsZWN0ZWRfbnBuX3Byb3RvY29sKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIGlmIG5vdCBzZWxmLl9zc2xvYmogb3Igbm90IF9zc2wuSEFTX05QTjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpCisKICAgICBkZWYgY2lwaGVyKHNlbGYpOgogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9zc2xvYmo6CkBAIC0zMjYsNiArMzY3LDEzIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLmNpcGhlcigpCiAKKyAgICBkZWYgY29tcHJlc3Npb24oc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgaWYgbm90IHNlbGYuX3NzbG9iajoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLmNvbXByZXNzaW9uKCkKKwogICAgIGRlZiBzZW5kKHNlbGYsIGRhdGEsIGZsYWdzPTApOgogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgIGlmIHNlbGYuX3NzbG9iajoKQEAgLTM1OCw2ICs0MDYsMTIgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzb2NrZXQuc2VuZHRvKHNlbGYsIGRhdGEsIGZsYWdzX29yX2FkZHIsIGFkZHIpCiAKKyAgICBkZWYgc2VuZG1zZyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIEVuc3VyZSBwcm9ncmFtcyBkb24ndCBzZW5kIGRhdGEgdW5lbmNyeXB0ZWQgaWYgdGhleSB0cnkgdG8KKyAgICAgICAgIyB1c2UgdGhpcyBtZXRob2QuCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInNlbmRtc2cgbm90IGFsbG93ZWQgb24gaW5zdGFuY2VzIG9mICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18pCisKICAgICBkZWYgc2VuZGFsbChzZWxmLCBkYXRhLCBmbGFncz0wKToKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgICBpZiBzZWxmLl9zc2xvYmo6CkBAIC00MTYsNiArNDcwLDE0IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc29ja2V0LnJlY3Zmcm9tX2ludG8oc2VsZiwgYnVmZmVyLCBuYnl0ZXMsIGZsYWdzKQogCisgICAgZGVmIHJlY3Ztc2coc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigicmVjdm1zZyBub3QgYWxsb3dlZCBvbiBpbnN0YW5jZXMgb2YgJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXykKKworICAgIGRlZiByZWN2bXNnX2ludG8oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigicmVjdm1zZ19pbnRvIG5vdCBhbGxvd2VkIG9uIGluc3RhbmNlcyBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIiAlIHNlbGYuX19jbGFzc19fKQorCiAgICAgZGVmIHBlbmRpbmcoc2VsZik6CiAgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICAgaWYgc2VsZi5fc3Nsb2JqOgpAQCAtNDk3LDE2ICs1NTksMjggQEAKICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9VHJ1ZSkKICAgICAgICAgcmV0dXJuIG5ld3NvY2ssIGFkZHIKIAotICAgIGRlZiBfX2RlbF9fKHNlbGYpOgotICAgICAgICAjIHN5cy5zdGRlcnIud3JpdGUoIl9fZGVsX18gb24gJXNcbiIgJSByZXByKHNlbGYpKQotICAgICAgICBzZWxmLl9yZWFsX2Nsb3NlKCkKKyAgICBkZWYgZ2V0X2NoYW5uZWxfYmluZGluZyhzZWxmLCBjYl90eXBlPSJ0bHMtdW5pcXVlIik6CisgICAgICAgICIiIkdldCBjaGFubmVsIGJpbmRpbmcgZGF0YSBmb3IgY3VycmVudCBjb25uZWN0aW9uLiAgUmFpc2UgVmFsdWVFcnJvcgorICAgICAgICBpZiB0aGUgcmVxdWVzdGVkIGBjYl90eXBlYCBpcyBub3Qgc3VwcG9ydGVkLiAgUmV0dXJuIGJ5dGVzIG9mIHRoZSBkYXRhCisgICAgICAgIG9yIE5vbmUgaWYgdGhlIGRhdGEgaXMgbm90IGF2YWlsYWJsZSAoZS5nLiBiZWZvcmUgdGhlIGhhbmRzaGFrZSkuCisgICAgICAgICIiIgorICAgICAgICBpZiBjYl90eXBlIG5vdCBpbiBDSEFOTkVMX0JJTkRJTkdfVFlQRVM6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbnN1cHBvcnRlZCBjaGFubmVsIGJpbmRpbmcgdHlwZSIpCisgICAgICAgIGlmIGNiX3R5cGUgIT0gInRscy11bmlxdWUiOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiezB9IGNoYW5uZWwgYmluZGluZyB0eXBlIG5vdCBpbXBsZW1lbnRlZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KGNiX3R5cGUpKQorICAgICAgICBpZiBzZWxmLl9zc2xvYmogaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmoudGxzX3VuaXF1ZV9jYigpCiAKIAogZGVmIHdyYXBfc29ja2V0KHNvY2ssIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSwKICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1GYWxzZSwgY2VydF9yZXFzPUNFUlRfTk9ORSwKICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1QUk9UT0NPTF9TU0x2MjMsIGNhX2NlcnRzPU5vbmUsCiAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9VHJ1ZSwKLSAgICAgICAgICAgICAgICBzdXBwcmVzc19yYWdnZWRfZW9mcz1UcnVlLCBjaXBoZXJzPU5vbmUpOgorICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsCisgICAgICAgICAgICAgICAgY2lwaGVycz1Ob25lKToKIAogICAgIHJldHVybiBTU0xTb2NrZXQoc29jaz1zb2NrLCBrZXlmaWxlPWtleWZpbGUsIGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9c2VydmVyX3NpZGUsIGNlcnRfcmVxcz1jZXJ0X3JlcXMsCkBAIC01NjEsOSArNjM1LDkgQEAKICAgICAgICAgY2VydF9yZXFzID0gQ0VSVF9SRVFVSVJFRAogICAgIGVsc2U6CiAgICAgICAgIGNlcnRfcmVxcyA9IENFUlRfTk9ORQotICAgIHMgPSB3cmFwX3NvY2tldChzb2NrZXQoKSwgc3NsX3ZlcnNpb249c3NsX3ZlcnNpb24sCisgICAgcyA9IGNyZWF0ZV9jb25uZWN0aW9uKGFkZHIpCisgICAgcyA9IHdyYXBfc29ja2V0KHMsIHNzbF92ZXJzaW9uPXNzbF92ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9Y2VydF9yZXFzLCBjYV9jZXJ0cz1jYV9jZXJ0cykKLSAgICBzLmNvbm5lY3QoYWRkcikKICAgICBkZXJjZXJ0ID0gcy5nZXRwZWVyY2VydChUcnVlKQogICAgIHMuY2xvc2UoKQogICAgIHJldHVybiBERVJfY2VydF90b19QRU1fY2VydChkZXJjZXJ0KQpkaWZmIC0tZ2l0IGEvTGliL3N0YXQucHkgYi9MaWIvc3RhdC5weQppbmRleCA3OGNjZDVlLi43MDRhZGZlIDEwMDY0NAotLS0gYS9MaWIvc3RhdC5weQorKysgYi9MaWIvc3RhdC5weQpAQCAtMTksNzggKzE5LDEzMSBAQAogIyBFeHRyYWN0IGJpdHMgZnJvbSB0aGUgbW9kZQogCiBkZWYgU19JTU9ERShtb2RlKToKKyAgICAiIiJSZXR1cm4gdGhlIHBvcnRpb24gb2YgdGhlIGZpbGUncyBtb2RlIHRoYXQgY2FuIGJlIHNldCBieQorICAgIG9zLmNobW9kKCkuCisgICAgIiIiCiAgICAgcmV0dXJuIG1vZGUgJiAwbzc3NzcKIAogZGVmIFNfSUZNVChtb2RlKToKKyAgICAiIiJSZXR1cm4gdGhlIHBvcnRpb24gb2YgdGhlIGZpbGUncyBtb2RlIHRoYXQgZGVzY3JpYmVzIHRoZQorICAgIGZpbGUgdHlwZS4KKyAgICAiIiIKICAgICByZXR1cm4gbW9kZSAmIDBvMTcwMDAwCiAKICMgQ29uc3RhbnRzIHVzZWQgYXMgU19JRk1UKCkgZm9yIHZhcmlvdXMgZmlsZSB0eXBlcwogIyAobm90IGFsbCBhcmUgaW1wbGVtZW50ZWQgb24gYWxsIHN5c3RlbXMpCiAKLVNfSUZESVIgID0gMG8wNDAwMDAKLVNfSUZDSFIgID0gMG8wMjAwMDAKLVNfSUZCTEsgID0gMG8wNjAwMDAKLVNfSUZSRUcgID0gMG8xMDAwMDAKLVNfSUZJRk8gID0gMG8wMTAwMDAKLVNfSUZMTksgID0gMG8xMjAwMDAKLVNfSUZTT0NLID0gMG8xNDAwMDAKK1NfSUZESVIgID0gMG8wNDAwMDAgICMgZGlyZWN0b3J5CitTX0lGQ0hSICA9IDBvMDIwMDAwICAjIGNoYXJhY3RlciBkZXZpY2UKK1NfSUZCTEsgID0gMG8wNjAwMDAgICMgYmxvY2sgZGV2aWNlCitTX0lGUkVHICA9IDBvMTAwMDAwICAjIHJlZ3VsYXIgZmlsZQorU19JRklGTyAgPSAwbzAxMDAwMCAgIyBmaWZvIChuYW1lZCBwaXBlKQorU19JRkxOSyAgPSAwbzEyMDAwMCAgIyBzeW1ib2xpYyBsaW5rCitTX0lGU09DSyA9IDBvMTQwMDAwICAjIHNvY2tldCBmaWxlCiAKICMgRnVuY3Rpb25zIHRvIHRlc3QgZm9yIGVhY2ggZmlsZSB0eXBlCiAKIGRlZiBTX0lTRElSKG1vZGUpOgorICAgICIiIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIGRpcmVjdG9yeS4iIiIKICAgICByZXR1cm4gU19JRk1UKG1vZGUpID09IFNfSUZESVIKIAogZGVmIFNfSVNDSFIobW9kZSk6CisgICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgY2hhcmFjdGVyIHNwZWNpYWwgZGV2aWNlIGZpbGUuIiIiCiAgICAgcmV0dXJuIFNfSUZNVChtb2RlKSA9PSBTX0lGQ0hSCiAKIGRlZiBTX0lTQkxLKG1vZGUpOgorICAgICIiIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIGJsb2NrIHNwZWNpYWwgZGV2aWNlIGZpbGUuIiIiCiAgICAgcmV0dXJuIFNfSUZNVChtb2RlKSA9PSBTX0lGQkxLCiAKIGRlZiBTX0lTUkVHKG1vZGUpOgorICAgICIiIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIHJlZ3VsYXIgZmlsZS4iIiIKICAgICByZXR1cm4gU19JRk1UKG1vZGUpID09IFNfSUZSRUcKIAogZGVmIFNfSVNGSUZPKG1vZGUpOgorICAgICIiIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIEZJRk8gKG5hbWVkIHBpcGUpLiIiIgogICAgIHJldHVybiBTX0lGTVQobW9kZSkgPT0gU19JRklGTwogCiBkZWYgU19JU0xOSyhtb2RlKToKKyAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBtb2RlIGlzIGZyb20gYSBzeW1ib2xpYyBsaW5rLiIiIgogICAgIHJldHVybiBTX0lGTVQobW9kZSkgPT0gU19JRkxOSwogCiBkZWYgU19JU1NPQ0sobW9kZSk6CisgICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgc29ja2V0LiIiIgogICAgIHJldHVybiBTX0lGTVQobW9kZSkgPT0gU19JRlNPQ0sKIAogIyBOYW1lcyBmb3IgcGVybWlzc2lvbiBiaXRzCiAKLVNfSVNVSUQgPSAwbzQwMDAKLVNfSVNHSUQgPSAwbzIwMDAKLVNfRU5GTVQgPSBTX0lTR0lECi1TX0lTVlRYID0gMG8xMDAwCi1TX0lSRUFEID0gMG8wNDAwCi1TX0lXUklURSA9IDBvMDIwMAotU19JRVhFQyA9IDBvMDEwMAotU19JUldYVSA9IDBvMDcwMAotU19JUlVTUiA9IDBvMDQwMAotU19JV1VTUiA9IDBvMDIwMAotU19JWFVTUiA9IDBvMDEwMAotU19JUldYRyA9IDBvMDA3MAotU19JUkdSUCA9IDBvMDA0MAotU19JV0dSUCA9IDBvMDAyMAotU19JWEdSUCA9IDBvMDAxMAotU19JUldYTyA9IDBvMDAwNwotU19JUk9USCA9IDBvMDAwNAotU19JV09USCA9IDBvMDAwMgotU19JWE9USCA9IDBvMDAwMQorU19JU1VJRCA9IDBvNDAwMCAgIyBzZXQgVUlEIGJpdAorU19JU0dJRCA9IDBvMjAwMCAgIyBzZXQgR0lEIGJpdAorU19FTkZNVCA9IFNfSVNHSUQgIyBmaWxlIGxvY2tpbmcgZW5mb3JjZW1lbnQKK1NfSVNWVFggPSAwbzEwMDAgICMgc3RpY2t5IGJpdAorU19JUkVBRCA9IDBvMDQwMCAgIyBVbml4IFY3IHN5bm9ueW0gZm9yIFNfSVJVU1IKK1NfSVdSSVRFID0gMG8wMjAwICMgVW5peCBWNyBzeW5vbnltIGZvciBTX0lXVVNSCitTX0lFWEVDID0gMG8wMTAwICAjIFVuaXggVjcgc3lub255bSBmb3IgU19JWFVTUgorU19JUldYVSA9IDBvMDcwMCAgIyBtYXNrIGZvciBvd25lciBwZXJtaXNzaW9ucworU19JUlVTUiA9IDBvMDQwMCAgIyByZWFkIGJ5IG93bmVyCitTX0lXVVNSID0gMG8wMjAwICAjIHdyaXRlIGJ5IG93bmVyCitTX0lYVVNSID0gMG8wMTAwICAjIGV4ZWN1dGUgYnkgb3duZXIKK1NfSVJXWEcgPSAwbzAwNzAgICMgbWFzayBmb3IgZ3JvdXAgcGVybWlzc2lvbnMKK1NfSVJHUlAgPSAwbzAwNDAgICMgcmVhZCBieSBncm91cAorU19JV0dSUCA9IDBvMDAyMCAgIyB3cml0ZSBieSBncm91cAorU19JWEdSUCA9IDBvMDAxMCAgIyBleGVjdXRlIGJ5IGdyb3VwCitTX0lSV1hPID0gMG8wMDA3ICAjIG1hc2sgZm9yIG90aGVycyAobm90IGluIGdyb3VwKSBwZXJtaXNzaW9ucworU19JUk9USCA9IDBvMDAwNCAgIyByZWFkIGJ5IG90aGVycworU19JV09USCA9IDBvMDAwMiAgIyB3cml0ZSBieSBvdGhlcnMKK1NfSVhPVEggPSAwbzAwMDEgICMgZXhlY3V0ZSBieSBvdGhlcnMKIAogIyBOYW1lcyBmb3IgZmlsZSBmbGFncwogCi1VRl9OT0RVTVAgICAgPSAweDAwMDAwMDAxCi1VRl9JTU1VVEFCTEUgPSAweDAwMDAwMDAyCi1VRl9BUFBFTkQgICAgPSAweDAwMDAwMDA0Ci1VRl9PUEFRVUUgICAgPSAweDAwMDAwMDA4Ci1VRl9OT1VOTElOSyAgPSAweDAwMDAwMDEwCi1VRl9DT01QUkVTU0VEID0gMHgwMDAwMDAyMCAgIyBPUyBYOiBmaWxlIGlzIGhmcy1jb21wcmVzc2VkCi1VRl9ISURERU4gICAgPSAweDAwMDA4MDAwICAgIyBPUyBYOiBmaWxlIHNob3VsZCBub3QgYmUgZGlzcGxheWVkCi1TRl9BUkNISVZFRCAgPSAweDAwMDEwMDAwCi1TRl9JTU1VVEFCTEUgPSAweDAwMDIwMDAwCi1TRl9BUFBFTkQgICAgPSAweDAwMDQwMDAwCi1TRl9OT1VOTElOSyAgPSAweDAwMTAwMDAwCi1TRl9TTkFQU0hPVCAgPSAweDAwMjAwMDAwCitVRl9OT0RVTVAgICAgPSAweDAwMDAwMDAxICAjIGRvIG5vdCBkdW1wIGZpbGUKK1VGX0lNTVVUQUJMRSA9IDB4MDAwMDAwMDIgICMgZmlsZSBtYXkgbm90IGJlIGNoYW5nZWQKK1VGX0FQUEVORCAgICA9IDB4MDAwMDAwMDQgICMgZmlsZSBtYXkgb25seSBiZSBhcHBlbmRlZCB0bworVUZfT1BBUVVFICAgID0gMHgwMDAwMDAwOCAgIyBkaXJlY3RvcnkgaXMgb3BhcXVlIHdoZW4gdmlld2VkIHRocm91Z2ggYSB1bmlvbiBzdGFjaworVUZfTk9VTkxJTksgID0gMHgwMDAwMDAxMCAgIyBmaWxlIG1heSBub3QgYmUgcmVuYW1lZCBvciBkZWxldGVkCitVRl9DT01QUkVTU0VEID0gMHgwMDAwMDAyMCAjIE9TIFg6IGZpbGUgaXMgaGZzLWNvbXByZXNzZWQKK1VGX0hJRERFTiAgICA9IDB4MDAwMDgwMDAgICMgT1MgWDogZmlsZSBzaG91bGQgbm90IGJlIGRpc3BsYXllZAorU0ZfQVJDSElWRUQgID0gMHgwMDAxMDAwMCAgIyBmaWxlIG1heSBiZSBhcmNoaXZlZAorU0ZfSU1NVVRBQkxFID0gMHgwMDAyMDAwMCAgIyBmaWxlIG1heSBub3QgYmUgY2hhbmdlZAorU0ZfQVBQRU5EICAgID0gMHgwMDA0MDAwMCAgIyBmaWxlIG1heSBvbmx5IGJlIGFwcGVuZGVkIHRvCitTRl9OT1VOTElOSyAgPSAweDAwMTAwMDAwICAjIGZpbGUgbWF5IG5vdCBiZSByZW5hbWVkIG9yIGRlbGV0ZWQKK1NGX1NOQVBTSE9UICA9IDB4MDAyMDAwMDAgICMgZmlsZSBpcyBhIHNuYXBzaG90IGZpbGUKKworCitfZmlsZW1vZGVfdGFibGUgPSAoCisgICAgKChTX0lGTE5LLCAgICAgICAgICJsIiksCisgICAgIChTX0lGUkVHLCAgICAgICAgICItIiksCisgICAgIChTX0lGQkxLLCAgICAgICAgICJiIiksCisgICAgIChTX0lGRElSLCAgICAgICAgICJkIiksCisgICAgIChTX0lGQ0hSLCAgICAgICAgICJjIiksCisgICAgIChTX0lGSUZPLCAgICAgICAgICJwIikpLAorCisgICAgKChTX0lSVVNSLCAgICAgICAgICJyIiksKSwKKyAgICAoKFNfSVdVU1IsICAgICAgICAgInciKSwpLAorICAgICgoU19JWFVTUnxTX0lTVUlELCAicyIpLAorICAgICAoU19JU1VJRCwgICAgICAgICAiUyIpLAorICAgICAoU19JWFVTUiwgICAgICAgICAieCIpKSwKKworICAgICgoU19JUkdSUCwgICAgICAgICAiciIpLCksCisgICAgKChTX0lXR1JQLCAgICAgICAgICJ3IiksKSwKKyAgICAoKFNfSVhHUlB8U19JU0dJRCwgInMiKSwKKyAgICAgKFNfSVNHSUQsICAgICAgICAgIlMiKSwKKyAgICAgKFNfSVhHUlAsICAgICAgICAgIngiKSksCisKKyAgICAoKFNfSVJPVEgsICAgICAgICAgInIiKSwpLAorICAgICgoU19JV09USCwgICAgICAgICAidyIpLCksCisgICAgKChTX0lYT1RIfFNfSVNWVFgsICJ0IiksCisgICAgIChTX0lTVlRYLCAgICAgICAgICJUIiksCisgICAgIChTX0lYT1RILCAgICAgICAgICJ4IikpCispCisKK2RlZiBmaWxlbW9kZShtb2RlKToKKyAgICAiIiJDb252ZXJ0IGEgZmlsZSdzIG1vZGUgdG8gYSBzdHJpbmcgb2YgdGhlIGZvcm0gJy1yd3hyd3hyd3gnLiIiIgorICAgIHBlcm0gPSBbXQorICAgIGZvciB0YWJsZSBpbiBfZmlsZW1vZGVfdGFibGU6CisgICAgICAgIGZvciBiaXQsIGNoYXIgaW4gdGFibGU6CisgICAgICAgICAgICBpZiBtb2RlICYgYml0ID09IGJpdDoKKyAgICAgICAgICAgICAgICBwZXJtLmFwcGVuZChjaGFyKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwZXJtLmFwcGVuZCgiLSIpCisgICAgcmV0dXJuICIiLmpvaW4ocGVybSkKZGlmZiAtLWdpdCBhL0xpYi9zdHJpbmcucHkgYi9MaWIvc3RyaW5nLnB5CmluZGV4IDBmNGVkZTIuLmI1N2M3OWIgMTAwNjQ0Ci0tLSBhL0xpYi9zdHJpbmcucHkKKysrIGIvTGliL3N0cmluZy5weQpAQCAtNDYsMjMgKzQ2LDcgQEAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIGltcG9ydCByZSBhcyBfcmUKLQotY2xhc3MgX211bHRpbWFwOgotICAgICIiIkhlbHBlciBjbGFzcyBmb3IgY29tYmluaW5nIG11bHRpcGxlIG1hcHBpbmdzLgotCi0gICAgVXNlZCBieSAue3NhZmVfLH1zdWJzdGl0dXRlKCkgdG8gY29tYmluZSB0aGUgbWFwcGluZyBhbmQga2V5d29yZAotICAgIGFyZ3VtZW50cy4KLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcHJpbWFyeSwgc2Vjb25kYXJ5KToKLSAgICAgICAgc2VsZi5fcHJpbWFyeSA9IHByaW1hcnkKLSAgICAgICAgc2VsZi5fc2Vjb25kYXJ5ID0gc2Vjb25kYXJ5Ci0KLSAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3ByaW1hcnlba2V5XQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fc2Vjb25kYXJ5W2tleV0KLQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQ2hhaW5NYXAKIAogY2xhc3MgX1RlbXBsYXRlTWV0YWNsYXNzKHR5cGUpOgogICAgIHBhdHRlcm4gPSByIiIiCkBAIC0xMDAsNyArODQsNyBAQAogCiAgICAgZGVmIF9pbnZhbGlkKHNlbGYsIG1vKToKICAgICAgICAgaSA9IG1vLnN0YXJ0KCdpbnZhbGlkJykKLSAgICAgICAgbGluZXMgPSBzZWxmLnRlbXBsYXRlWzppXS5zcGxpdGxpbmVzKFRydWUpCisgICAgICAgIGxpbmVzID0gc2VsZi50ZW1wbGF0ZVs6aV0uc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICBpZiBub3QgbGluZXM6CiAgICAgICAgICAgICBjb2xubyA9IDEKICAgICAgICAgICAgIGxpbmVubyA9IDEKQEAgLTExNiw3ICsxMDAsNyBAQAogICAgICAgICBpZiBub3QgYXJnczoKICAgICAgICAgICAgIG1hcHBpbmcgPSBrd3MKICAgICAgICAgZWxpZiBrd3M6Ci0gICAgICAgICAgICBtYXBwaW5nID0gX211bHRpbWFwKGt3cywgYXJnc1swXSkKKyAgICAgICAgICAgIG1hcHBpbmcgPSBDaGFpbk1hcChrd3MsIGFyZ3NbMF0pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtYXBwaW5nID0gYXJnc1swXQogICAgICAgICAjIEhlbHBlciBmdW5jdGlvbiBmb3IgLnN1YigpCkBAIC0xNDIsNyArMTI2LDcgQEAKICAgICAgICAgaWYgbm90IGFyZ3M6CiAgICAgICAgICAgICBtYXBwaW5nID0ga3dzCiAgICAgICAgIGVsaWYga3dzOgotICAgICAgICAgICAgbWFwcGluZyA9IF9tdWx0aW1hcChrd3MsIGFyZ3NbMF0pCisgICAgICAgICAgICBtYXBwaW5nID0gQ2hhaW5NYXAoa3dzLCBhcmdzWzBdKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbWFwcGluZyA9IGFyZ3NbMF0KICAgICAgICAgIyBIZWxwZXIgZnVuY3Rpb24gZm9yIC5zdWIoKQpkaWZmIC0tZ2l0IGEvTGliL3N1YnByb2Nlc3MucHkgYi9MaWIvc3VicHJvY2Vzcy5weQppbmRleCAxYTIxNDU1Li5hYTNlMjE3IDEwMDY0NAotLS0gYS9MaWIvc3VicHJvY2Vzcy5weQorKysgYi9MaWIvc3VicHJvY2Vzcy5weQpAQCAtMTkxLDggKzE5MSwxMCBAQAogCiBBIFZhbHVlRXJyb3Igd2lsbCBiZSByYWlzZWQgaWYgUG9wZW4gaXMgY2FsbGVkIHdpdGggaW52YWxpZCBhcmd1bWVudHMuCiAKLWNoZWNrX2NhbGwoKSBhbmQgY2hlY2tfb3V0cHV0KCkgd2lsbCByYWlzZSBDYWxsZWRQcm9jZXNzRXJyb3IsIGlmIHRoZQotY2FsbGVkIHByb2Nlc3MgcmV0dXJucyBhIG5vbi16ZXJvIHJldHVybiBjb2RlLgorRXhjZXB0aW9ucyBkZWZpbmVkIHdpdGhpbiB0aGlzIG1vZHVsZSBpbmhlcml0IGZyb20gU3VicHJvY2Vzc0Vycm9yLgorY2hlY2tfY2FsbCgpIGFuZCBjaGVja19vdXRwdXQoKSB3aWxsIHJhaXNlIENhbGxlZFByb2Nlc3NFcnJvciBpZiB0aGUKK2NhbGxlZCBwcm9jZXNzIHJldHVybnMgYSBub24temVybyByZXR1cm4gY29kZS4gIFRpbWVvdXRFeHBpcmVkCitiZSByYWlzZWQgaWYgYSB0aW1lb3V0IHdhcyBzcGVjaWZpZWQgYW5kIGV4cGlyZWQuCiAKIAogU2VjdXJpdHkKQEAgLTM0MCwxNSArMzQyLDIzIEBACiAKIGltcG9ydCBpbwogaW1wb3J0IG9zCitpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IGdjCiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGVycm5vCit0cnk6CisgICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKIAogIyBFeGNlcHRpb24gY2xhc3NlcyB1c2VkIGJ5IHRoaXMgbW9kdWxlLgotY2xhc3MgQ2FsbGVkUHJvY2Vzc0Vycm9yKEV4Y2VwdGlvbik6CitjbGFzcyBTdWJwcm9jZXNzRXJyb3IoRXhjZXB0aW9uKTogcGFzcworCisKK2NsYXNzIENhbGxlZFByb2Nlc3NFcnJvcihTdWJwcm9jZXNzRXJyb3IpOgogICAgICIiIlRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIGEgcHJvY2VzcyBydW4gYnkgY2hlY2tfY2FsbCgpIG9yCiAgICAgY2hlY2tfb3V0cHV0KCkgcmV0dXJucyBhIG5vbi16ZXJvIGV4aXQgc3RhdHVzLgogICAgIFRoZSBleGl0IHN0YXR1cyB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgcmV0dXJuY29kZSBhdHRyaWJ1dGU7CkBAIC0zNjIsMTAgKzM3MiwyNCBAQAogICAgICAgICByZXR1cm4gIkNvbW1hbmQgJyVzJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAlZCIgJSAoc2VsZi5jbWQsIHNlbGYucmV0dXJuY29kZSkKIAogCitjbGFzcyBUaW1lb3V0RXhwaXJlZChTdWJwcm9jZXNzRXJyb3IpOgorICAgICIiIlRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIHRoZSB0aW1lb3V0IGV4cGlyZXMgd2hpbGUgd2FpdGluZyBmb3IgYQorICAgIGNoaWxkIHByb2Nlc3MuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNtZCwgdGltZW91dCwgb3V0cHV0PU5vbmUpOgorICAgICAgICBzZWxmLmNtZCA9IGNtZAorICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CisgICAgICAgIHNlbGYub3V0cHV0ID0gb3V0cHV0CisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICgiQ29tbWFuZCAnJXMnIHRpbWVkIG91dCBhZnRlciAlcyBzZWNvbmRzIiAlCisgICAgICAgICAgICAgICAgKHNlbGYuY21kLCBzZWxmLnRpbWVvdXQpKQorCisKIGlmIG1zd2luZG93czoKICAgICBpbXBvcnQgdGhyZWFkaW5nCiAgICAgaW1wb3J0IG1zdmNydAotICAgIGltcG9ydCBfc3VicHJvY2VzcworICAgIGltcG9ydCBfd2luYXBpCiAgICAgY2xhc3MgU1RBUlRVUElORk86CiAgICAgICAgIGR3RmxhZ3MgPSAwCiAgICAgICAgIGhTdGRJbnB1dCA9IE5vbmUKQEAgLTM3Nyw1MyArNDAxLDQ5IEBACiBlbHNlOgogICAgIGltcG9ydCBzZWxlY3QKICAgICBfaGFzX3BvbGwgPSBoYXNhdHRyKHNlbGVjdCwgJ3BvbGwnKQotICAgIGltcG9ydCBmY250bAotICAgIGltcG9ydCBwaWNrbGUKLQotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IF9wb3NpeHN1YnByb2Nlc3MKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIF9wb3NpeHN1YnByb2Nlc3MgPSBOb25lCi0gICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSBfcG9zaXhzdWJwcm9jZXNzIG1vZHVsZSBpcyBub3QgYmVpbmcgdXNlZC4gIgotICAgICAgICAgICAgICAgICAgICAgICJDaGlsZCBwcm9jZXNzIHJlbGlhYmlsaXR5IG1heSBzdWZmZXIgaWYgeW91ciAiCi0gICAgICAgICAgICAgICAgICAgICAgInByb2dyYW0gdXNlcyB0aHJlYWRzLiIsIFJ1bnRpbWVXYXJuaW5nKQorICAgIGltcG9ydCBfcG9zaXhzdWJwcm9jZXNzCisgICAgX2NyZWF0ZV9waXBlID0gX3Bvc2l4c3VicHJvY2Vzcy5jbG9leGVjX3BpcGUKIAogICAgICMgV2hlbiBzZWxlY3Qgb3IgcG9sbCBoYXMgaW5kaWNhdGVkIHRoYXQgdGhlIGZpbGUgaXMgd3JpdGFibGUsCiAgICAgIyB3ZSBjYW4gd3JpdGUgdXAgdG8gX1BJUEVfQlVGIGJ5dGVzIHdpdGhvdXQgcmlzayBvZiBibG9ja2luZy4KICAgICAjIFBPU0lYIGRlZmluZXMgUElQRV9CVUYgYXMgPj0gNTEyLgogICAgIF9QSVBFX0JVRiA9IGdldGF0dHIoc2VsZWN0LCAnUElQRV9CVUYnLCA1MTIpCiAKLSAgICBfRkRfQ0xPRVhFQyA9IGdldGF0dHIoZmNudGwsICdGRF9DTE9FWEVDJywgMSkKLQotICAgIGRlZiBfc2V0X2Nsb2V4ZWMoZmQsIGNsb2V4ZWMpOgotICAgICAgICBvbGQgPSBmY250bC5mY250bChmZCwgZmNudGwuRl9HRVRGRCkKLSAgICAgICAgaWYgY2xvZXhlYzoKLSAgICAgICAgICAgIGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX1NFVEZELCBvbGQgfCBfRkRfQ0xPRVhFQykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX1NFVEZELCBvbGQgJiB+X0ZEX0NMT0VYRUMpCi0KLSAgICBpZiBfcG9zaXhzdWJwcm9jZXNzOgotICAgICAgICBfY3JlYXRlX3BpcGUgPSBfcG9zaXhzdWJwcm9jZXNzLmNsb2V4ZWNfcGlwZQotICAgIGVsc2U6Ci0gICAgICAgIGRlZiBfY3JlYXRlX3BpcGUoKToKLSAgICAgICAgICAgIGZkcyA9IG9zLnBpcGUoKQotICAgICAgICAgICAgX3NldF9jbG9leGVjKGZkc1swXSwgVHJ1ZSkKLSAgICAgICAgICAgIF9zZXRfY2xvZXhlYyhmZHNbMV0sIFRydWUpCi0gICAgICAgICAgICByZXR1cm4gZmRzCiAKIF9fYWxsX18gPSBbIlBvcGVuIiwgIlBJUEUiLCAiU1RET1VUIiwgImNhbGwiLCAiY2hlY2tfY2FsbCIsICJnZXRzdGF0dXNvdXRwdXQiLAotICAgICAgICAgICAiZ2V0b3V0cHV0IiwgImNoZWNrX291dHB1dCIsICJDYWxsZWRQcm9jZXNzRXJyb3IiXQorICAgICAgICAgICAiZ2V0b3V0cHV0IiwgImNoZWNrX291dHB1dCIsICJDYWxsZWRQcm9jZXNzRXJyb3IiLCAiREVWTlVMTCJdCiAKIGlmIG1zd2luZG93czoKLSAgICBmcm9tIF9zdWJwcm9jZXNzIGltcG9ydCAoQ1JFQVRFX05FV19DT05TT0xFLCBDUkVBVEVfTkVXX1BST0NFU1NfR1JPVVAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNURF9JTlBVVF9IQU5ETEUsIFNURF9PVVRQVVRfSEFORExFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVERfRVJST1JfSEFORExFLCBTV19ISURFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFSVEZfVVNFU1RESEFORExFUywgU1RBUlRGX1VTRVNIT1dXSU5ET1cpCisgICAgZnJvbSBfd2luYXBpIGltcG9ydCAoQ1JFQVRFX05FV19DT05TT0xFLCBDUkVBVEVfTkVXX1BST0NFU1NfR1JPVVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgU1REX0lOUFVUX0hBTkRMRSwgU1REX09VVFBVVF9IQU5ETEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgU1REX0VSUk9SX0hBTkRMRSwgU1dfSElERSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBTVEFSVEZfVVNFU1RESEFORExFUywgU1RBUlRGX1VTRVNIT1dXSU5ET1cpCiAKICAgICBfX2FsbF9fLmV4dGVuZChbIkNSRUFURV9ORVdfQ09OU09MRSIsICJDUkVBVEVfTkVXX1BST0NFU1NfR1JPVVAiLAogICAgICAgICAgICAgICAgICAgICAiU1REX0lOUFVUX0hBTkRMRSIsICJTVERfT1VUUFVUX0hBTkRMRSIsCiAgICAgICAgICAgICAgICAgICAgICJTVERfRVJST1JfSEFORExFIiwgIlNXX0hJREUiLAogICAgICAgICAgICAgICAgICAgICAiU1RBUlRGX1VTRVNUREhBTkRMRVMiLCAiU1RBUlRGX1VTRVNIT1dXSU5ET1ciXSkKKworICAgIGNsYXNzIEhhbmRsZShpbnQpOgorICAgICAgICBjbG9zZWQgPSBGYWxzZQorCisgICAgICAgIGRlZiBDbG9zZShzZWxmLCBDbG9zZUhhbmRsZT1fd2luYXBpLkNsb3NlSGFuZGxlKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKKyAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShzZWxmKQorCisgICAgICAgIGRlZiBEZXRhY2goc2VsZik6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgcmV0dXJuIGludChzZWxmKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYWxyZWFkeSBjbG9zZWQiKQorCisgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiAiSGFuZGxlKCVkKSIgJSBpbnQoc2VsZikKKworICAgICAgICBfX2RlbF9fID0gQ2xvc2UKKyAgICAgICAgX19zdHJfXyA9IF9fcmVwcl9fCisKIHRyeToKICAgICBNQVhGRCA9IG9zLnN5c2NvbmYoIlNDX09QRU5fTUFYIikKIGV4Y2VwdDoKQEAgLTQ0OCwyNyArNDY4LDYzIEBACiAKIFBJUEUgPSAtMQogU1RET1VUID0gLTIKK0RFVk5VTEwgPSAtMwogCiAKIGRlZiBfZWludHJfcmV0cnlfY2FsbChmdW5jLCAqYXJncyk6CiAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MpCi0gICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgSU9FcnJvcikgYXMgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRUlOVFI6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgorICAgICAgICAgICAgY29udGludWUKIAogCi1kZWYgY2FsbCgqcG9wZW5hcmdzLCAqKmt3YXJncyk6Ci0gICAgIiIiUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMuICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlLCB0aGVuCi0gICAgcmV0dXJuIHRoZSByZXR1cm5jb2RlIGF0dHJpYnV0ZS4KKyMgWFhYIFRoaXMgZnVuY3Rpb24gaXMgb25seSB1c2VkIGJ5IG11bHRpcHJvY2Vzc2luZyBhbmQgdGhlIHRlc3Qgc3VpdGUsCisjIGJ1dCBpdCdzIGhlcmUgc28gdGhhdCBpdCBjYW4gYmUgaW1wb3J0ZWQgd2hlbiBQeXRob24gaXMgY29tcGlsZWQgd2l0aG91dAorIyB0aHJlYWRzLgorCitkZWYgX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpOgorICAgICIiIlJldHVybiBhIGxpc3Qgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyByZXByb2R1Y2luZyB0aGUgY3VycmVudAorICAgIHNldHRpbmdzIGluIHN5cy5mbGFncyBhbmQgc3lzLndhcm5vcHRpb25zLiIiIgorICAgIGZsYWdfb3B0X21hcCA9IHsKKyAgICAgICAgJ2RlYnVnJzogJ2QnLAorICAgICAgICAjICdpbnNwZWN0JzogJ2knLAorICAgICAgICAjICdpbnRlcmFjdGl2ZSc6ICdpJywKKyAgICAgICAgJ29wdGltaXplJzogJ08nLAorICAgICAgICAnZG9udF93cml0ZV9ieXRlY29kZSc6ICdCJywKKyAgICAgICAgJ25vX3VzZXJfc2l0ZSc6ICdzJywKKyAgICAgICAgJ25vX3NpdGUnOiAnUycsCisgICAgICAgICdpZ25vcmVfZW52aXJvbm1lbnQnOiAnRScsCisgICAgICAgICd2ZXJib3NlJzogJ3YnLAorICAgICAgICAnYnl0ZXNfd2FybmluZyc6ICdiJywKKyAgICAgICAgJ3F1aWV0JzogJ3EnLAorICAgICAgICAnaGFzaF9yYW5kb21pemF0aW9uJzogJ1InLAorICAgIH0KKyAgICBhcmdzID0gW10KKyAgICBmb3IgZmxhZywgb3B0IGluIGZsYWdfb3B0X21hcC5pdGVtcygpOgorICAgICAgICB2ID0gZ2V0YXR0cihzeXMuZmxhZ3MsIGZsYWcpCisgICAgICAgIGlmIHYgPiAwOgorICAgICAgICAgICAgYXJncy5hcHBlbmQoJy0nICsgb3B0ICogdikKKyAgICBmb3Igb3B0IGluIHN5cy53YXJub3B0aW9uczoKKyAgICAgICAgYXJncy5hcHBlbmQoJy1XJyArIG9wdCkKKyAgICByZXR1cm4gYXJncworCisKK2RlZiBjYWxsKCpwb3BlbmFyZ3MsIHRpbWVvdXQ9Tm9uZSwgKiprd2FyZ3MpOgorICAgICIiIlJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzLiAgV2FpdCBmb3IgY29tbWFuZCB0byBjb21wbGV0ZSBvcgorICAgIHRpbWVvdXQsIHRoZW4gcmV0dXJuIHRoZSByZXR1cm5jb2RlIGF0dHJpYnV0ZS4KIAogICAgIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciB0aGUgUG9wZW4gY29uc3RydWN0b3IuICBFeGFtcGxlOgogCiAgICAgcmV0Y29kZSA9IGNhbGwoWyJscyIsICItbCJdKQogICAgICIiIgotICAgIHJldHVybiBQb3BlbigqcG9wZW5hcmdzLCAqKmt3YXJncykud2FpdCgpCisgICAgd2l0aCBQb3BlbigqcG9wZW5hcmdzLCAqKmt3YXJncykgYXMgcDoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHAud2FpdCh0aW1lb3V0PXRpbWVvdXQpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHAua2lsbCgpCisgICAgICAgICAgICBwLndhaXQoKQorICAgICAgICAgICAgcmFpc2UKIAogCiBkZWYgY2hlY2tfY2FsbCgqcG9wZW5hcmdzLCAqKmt3YXJncyk6CkBAIC00NzcsNyArNTMzLDcgQEAKICAgICBDYWxsZWRQcm9jZXNzRXJyb3IuICBUaGUgQ2FsbGVkUHJvY2Vzc0Vycm9yIG9iamVjdCB3aWxsIGhhdmUgdGhlCiAgICAgcmV0dXJuIGNvZGUgaW4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlLgogCi0gICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSBQb3BlbiBjb25zdHJ1Y3Rvci4gIEV4YW1wbGU6CisgICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSBjYWxsIGZ1bmN0aW9uLiAgRXhhbXBsZToKIAogICAgIGNoZWNrX2NhbGwoWyJscyIsICItbCJdKQogICAgICIiIgpAQCAtNDkwLDcgKzU0Niw3IEBACiAgICAgcmV0dXJuIDAKIAogCi1kZWYgY2hlY2tfb3V0cHV0KCpwb3BlbmFyZ3MsICoqa3dhcmdzKToKK2RlZiBjaGVja19vdXRwdXQoKnBvcGVuYXJncywgdGltZW91dD1Ob25lLCAqKmt3YXJncyk6CiAgICAgciIiIlJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzIGFuZCByZXR1cm4gaXRzIG91dHB1dCBhcyBhIGJ5dGUgc3RyaW5nLgogCiAgICAgSWYgdGhlIGV4aXQgY29kZSB3YXMgbm9uLXplcm8gaXQgcmFpc2VzIGEgQ2FsbGVkUHJvY2Vzc0Vycm9yLiAgVGhlCkBAIC01MTIsMTQgKzU2OCwyMCBAQAogICAgICIiIgogICAgIGlmICdzdGRvdXQnIGluIGt3YXJnczoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignc3Rkb3V0IGFyZ3VtZW50IG5vdCBhbGxvd2VkLCBpdCB3aWxsIGJlIG92ZXJyaWRkZW4uJykKLSAgICBwcm9jZXNzID0gUG9wZW4oKnBvcGVuYXJncywgc3Rkb3V0PVBJUEUsICoqa3dhcmdzKQotICAgIG91dHB1dCwgdW51c2VkX2VyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQotICAgIHJldGNvZGUgPSBwcm9jZXNzLnBvbGwoKQotICAgIGlmIHJldGNvZGU6Ci0gICAgICAgIGNtZCA9IGt3YXJncy5nZXQoImFyZ3MiKQotICAgICAgICBpZiBjbWQgaXMgTm9uZToKLSAgICAgICAgICAgIGNtZCA9IHBvcGVuYXJnc1swXQotICAgICAgICByYWlzZSBDYWxsZWRQcm9jZXNzRXJyb3IocmV0Y29kZSwgY21kLCBvdXRwdXQ9b3V0cHV0KQorICAgIHdpdGggUG9wZW4oKnBvcGVuYXJncywgc3Rkb3V0PVBJUEUsICoqa3dhcmdzKSBhcyBwcm9jZXNzOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvdXRwdXQsIHVudXNlZF9lcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKHRpbWVvdXQ9dGltZW91dCkKKyAgICAgICAgZXhjZXB0IFRpbWVvdXRFeHBpcmVkOgorICAgICAgICAgICAgcHJvY2Vzcy5raWxsKCkKKyAgICAgICAgICAgIG91dHB1dCwgdW51c2VkX2VyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQocHJvY2Vzcy5hcmdzLCB0aW1lb3V0LCBvdXRwdXQ9b3V0cHV0KQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBwcm9jZXNzLmtpbGwoKQorICAgICAgICAgICAgcHJvY2Vzcy53YWl0KCkKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHJldGNvZGUgPSBwcm9jZXNzLnBvbGwoKQorICAgICAgICBpZiByZXRjb2RlOgorICAgICAgICAgICAgcmFpc2UgQ2FsbGVkUHJvY2Vzc0Vycm9yKHJldGNvZGUsIHByb2Nlc3MuYXJncywgb3V0cHV0PW91dHB1dCkKICAgICByZXR1cm4gb3V0cHV0CiAKIApAQCAtNjE0LDExICs2NzYsMTkgQEAKICAgICA+Pj4gc3VicHJvY2Vzcy5nZXRzdGF0dXNvdXRwdXQoJy9iaW4vanVuaycpCiAgICAgKDI1NiwgJ3NoOiAvYmluL2p1bms6IG5vdCBmb3VuZCcpCiAgICAgIiIiCi0gICAgcGlwZSA9IG9zLnBvcGVuKCd7ICcgKyBjbWQgKyAnOyB9IDI+JjEnLCAncicpCi0gICAgdGV4dCA9IHBpcGUucmVhZCgpCi0gICAgc3RzID0gcGlwZS5jbG9zZSgpCi0gICAgaWYgc3RzIGlzIE5vbmU6IHN0cyA9IDAKLSAgICBpZiB0ZXh0Wy0xOl0gPT0gJ1xuJzogdGV4dCA9IHRleHRbOi0xXQorICAgIHdpdGggb3MucG9wZW4oJ3sgJyArIGNtZCArICc7IH0gMj4mMScsICdyJykgYXMgcGlwZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGV4dCA9IHBpcGUucmVhZCgpCisgICAgICAgICAgICBzdHMgPSBwaXBlLmNsb3NlKCkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcHJvY2VzcyA9IHBpcGUuX3Byb2MKKyAgICAgICAgICAgIHByb2Nlc3Mua2lsbCgpCisgICAgICAgICAgICBwcm9jZXNzLndhaXQoKQorICAgICAgICAgICAgcmFpc2UKKyAgICBpZiBzdHMgaXMgTm9uZToKKyAgICAgICAgc3RzID0gMAorICAgIGlmIHRleHRbLTE6XSA9PSAnXG4nOgorICAgICAgICB0ZXh0ID0gdGV4dFs6LTFdCiAgICAgcmV0dXJuIHN0cywgdGV4dAogCiAKQEAgLTY1MCw2ICs3MjAsOCBAQAogICAgICAgICBfY2xlYW51cCgpCiAKICAgICAgICAgc2VsZi5fY2hpbGRfY3JlYXRlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuX2lucHV0ID0gTm9uZQorICAgICAgICBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQgPSBGYWxzZQogICAgICAgICBpZiBidWZzaXplIGlzIE5vbmU6CiAgICAgICAgICAgICBidWZzaXplID0gMCAgIyBSZXN0b3JlIGRlZmF1bHQKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYnVmc2l6ZSwgaW50KToKQEAgLTY4NCw2ICs3NTYsNyBAQAogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNyZWF0aW9uZmxhZ3MgaXMgb25seSBzdXBwb3J0ZWQgb24gV2luZG93cyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm1zIikKIAorICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCiAgICAgICAgIHNlbGYuc3RkaW4gPSBOb25lCiAgICAgICAgIHNlbGYuc3Rkb3V0ID0gTm9uZQogICAgICAgICBzZWxmLnN0ZGVyciA9IE5vbmUKQEAgLTcyNCw3ICs3OTcsNyBAQAogCiAgICAgICAgIGlmIHAyY3dyaXRlICE9IC0xOgogICAgICAgICAgICAgc2VsZi5zdGRpbiA9IGlvLm9wZW4ocDJjd3JpdGUsICd3YicsIGJ1ZnNpemUpCi0gICAgICAgICAgICBpZiBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lczoKKyAgICAgICAgICAgIGlmIHVuaXZlcnNhbF9uZXdsaW5lczoKICAgICAgICAgICAgICAgICBzZWxmLnN0ZGluID0gaW8uVGV4dElPV3JhcHBlcihzZWxmLnN0ZGluLCB3cml0ZV90aHJvdWdoPVRydWUpCiAgICAgICAgIGlmIGMycHJlYWQgIT0gLTE6CiAgICAgICAgICAgICBzZWxmLnN0ZG91dCA9IGlvLm9wZW4oYzJwcmVhZCwgJ3JiJywgYnVmc2l6ZSkKQEAgLTczNyw3ICs4MTAsNyBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGVfY2hpbGQoYXJncywgZXhlY3V0YWJsZSwgcHJlZXhlY19mbiwgY2xvc2VfZmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsIHVuaXZlcnNhbF9uZXdsaW5lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc19mZHMsIGN3ZCwgZW52LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbywgY3JlYXRpb25mbGFncywgc2hlbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMnByZWFkLCBjMnB3cml0ZSwKQEAgLTc5OCwxOSArODcxLDI4IEBACiAgICAgICAgICAgICAjIENoaWxkIGlzIHN0aWxsIHJ1bm5pbmcsIGtlZXAgdXMgYWxpdmUgdW50aWwgd2UgY2FuIHdhaXQgb24gaXQuCiAgICAgICAgICAgICBfYWN0aXZlLmFwcGVuZChzZWxmKQogCisgICAgZGVmIF9nZXRfZGV2bnVsbChzZWxmKToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgJ19kZXZudWxsJyk6CisgICAgICAgICAgICBzZWxmLl9kZXZudWxsID0gb3Mub3Blbihvcy5kZXZudWxsLCBvcy5PX1JEV1IpCisgICAgICAgIHJldHVybiBzZWxmLl9kZXZudWxsCiAKLSAgICBkZWYgY29tbXVuaWNhdGUoc2VsZiwgaW5wdXQ9Tm9uZSk6CisgICAgZGVmIGNvbW11bmljYXRlKHNlbGYsIGlucHV0PU5vbmUsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgICIiIkludGVyYWN0IHdpdGggcHJvY2VzczogU2VuZCBkYXRhIHRvIHN0ZGluLiAgUmVhZCBkYXRhIGZyb20KICAgICAgICAgc3Rkb3V0IGFuZCBzdGRlcnIsIHVudGlsIGVuZC1vZi1maWxlIGlzIHJlYWNoZWQuICBXYWl0IGZvcgotICAgICAgICBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFRoZSBvcHRpb25hbCBpbnB1dCBhcmd1bWVudCBzaG91bGQgYmUgYQotICAgICAgICBzdHJpbmcgdG8gYmUgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IgTm9uZSwgaWYgbm8gZGF0YQorICAgICAgICBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFRoZSBvcHRpb25hbCBpbnB1dCBhcmd1bWVudCBzaG91bGQgYmUKKyAgICAgICAgYnl0ZXMgdG8gYmUgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IgTm9uZSwgaWYgbm8gZGF0YQogICAgICAgICBzaG91bGQgYmUgc2VudCB0byB0aGUgY2hpbGQuCiAKICAgICAgICAgY29tbXVuaWNhdGUoKSByZXR1cm5zIGEgdHVwbGUgKHN0ZG91dCwgc3RkZXJyKS4iIiIKIAotICAgICAgICAjIE9wdGltaXphdGlvbjogSWYgd2UgYXJlIG9ubHkgdXNpbmcgb25lIHBpcGUsIG9yIG5vIHBpcGUgYXQKLSAgICAgICAgIyBhbGwsIHVzaW5nIHNlbGVjdCgpIG9yIHRocmVhZHMgaXMgdW5uZWNlc3NhcnkuCi0gICAgICAgIGlmIFtzZWxmLnN0ZGluLCBzZWxmLnN0ZG91dCwgc2VsZi5zdGRlcnJdLmNvdW50KE5vbmUpID49IDI6CisgICAgICAgIGlmIHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZCBhbmQgaW5wdXQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW5ub3Qgc2VuZCBpbnB1dCBhZnRlciBzdGFydGluZyBjb21tdW5pY2F0aW9uIikKKworICAgICAgICAjIE9wdGltaXphdGlvbjogSWYgd2UgYXJlIG5vdCB3b3JyaWVkIGFib3V0IHRpbWVvdXRzLCB3ZSBoYXZlbid0CisgICAgICAgICMgc3RhcnRlZCBjb21tdW5pY2F0aW5nLCBhbmQgd2UgaGF2ZSBvbmUgb3IgemVybyBwaXBlcywgdXNpbmcgc2VsZWN0KCkKKyAgICAgICAgIyBvciB0aHJlYWRzIGlzIHVubmVjZXNzYXJ5LgorICAgICAgICBpZiAodGltZW91dCBpcyBOb25lIGFuZCBub3Qgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkIGFuZAorICAgICAgICAgICAgW3NlbGYuc3RkaW4sIHNlbGYuc3Rkb3V0LCBzZWxmLnN0ZGVycl0uY291bnQoTm9uZSkgPj0gMik6CiAgICAgICAgICAgICBzdGRvdXQgPSBOb25lCiAgICAgICAgICAgICBzdGRlcnIgPSBOb25lCiAgICAgICAgICAgICBpZiBzZWxmLnN0ZGluOgpAQCAtODI4LDE1ICs5MTAsNDIgQEAKICAgICAgICAgICAgICAgICBzdGRlcnIgPSBfZWludHJfcmV0cnlfY2FsbChzZWxmLnN0ZGVyci5yZWFkKQogICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLmNsb3NlKCkKICAgICAgICAgICAgIHNlbGYud2FpdCgpCi0gICAgICAgICAgICByZXR1cm4gKHN0ZG91dCwgc3RkZXJyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBlbmR0aW1lID0gX3RpbWUoKSArIHRpbWVvdXQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZW5kdGltZSA9IE5vbmUKIAotICAgICAgICByZXR1cm4gc2VsZi5fY29tbXVuaWNhdGUoaW5wdXQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBzZWxmLl9jb21tdW5pY2F0ZShpbnB1dCwgZW5kdGltZSwgdGltZW91dCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkID0gVHJ1ZQorCisgICAgICAgICAgICBzdHMgPSBzZWxmLndhaXQodGltZW91dD1zZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKSkKKworICAgICAgICByZXR1cm4gKHN0ZG91dCwgc3RkZXJyKQogCiAKICAgICBkZWYgcG9sbChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2ludGVybmFsX3BvbGwoKQogCiAKKyAgICBkZWYgX3JlbWFpbmluZ190aW1lKHNlbGYsIGVuZHRpbWUpOgorICAgICAgICAiIiJDb252ZW5pZW5jZSBmb3IgX2NvbW11bmljYXRlIHdoZW4gY29tcHV0aW5nIHRpbWVvdXRzLiIiIgorICAgICAgICBpZiBlbmR0aW1lIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGVuZHRpbWUgLSBfdGltZSgpCisKKworICAgIGRlZiBfY2hlY2tfdGltZW91dChzZWxmLCBlbmR0aW1lLCBvcmlnX3RpbWVvdXQpOgorICAgICAgICAiIiJDb252ZW5pZW5jZSBmb3IgY2hlY2tpbmcgaWYgYSB0aW1lb3V0IGhhcyBleHBpcmVkLiIiIgorICAgICAgICBpZiBlbmR0aW1lIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgX3RpbWUoKSA+IGVuZHRpbWU6CisgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIG9yaWdfdGltZW91dCkKKworCiAgICAgaWYgbXN3aW5kb3dzOgogICAgICAgICAjCiAgICAgICAgICMgV2luZG93cyBtZXRob2RzCkBAIC04NTMsMTEgKzk2MiwxNiBAQAogICAgICAgICAgICAgZXJycmVhZCwgZXJyd3JpdGUgPSAtMSwgLTEKIAogICAgICAgICAgICAgaWYgc3RkaW4gaXMgTm9uZToKLSAgICAgICAgICAgICAgICBwMmNyZWFkID0gX3N1YnByb2Nlc3MuR2V0U3RkSGFuZGxlKF9zdWJwcm9jZXNzLlNURF9JTlBVVF9IQU5ETEUpCisgICAgICAgICAgICAgICAgcDJjcmVhZCA9IF93aW5hcGkuR2V0U3RkSGFuZGxlKF93aW5hcGkuU1REX0lOUFVUX0hBTkRMRSkKICAgICAgICAgICAgICAgICBpZiBwMmNyZWFkIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHAyY3JlYWQsIF8gPSBfc3VicHJvY2Vzcy5DcmVhdGVQaXBlKE5vbmUsIDApCisgICAgICAgICAgICAgICAgICAgIHAyY3JlYWQsIF8gPSBfd2luYXBpLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCA9IEhhbmRsZShwMmNyZWFkKQorICAgICAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKF8pCiAgICAgICAgICAgICBlbGlmIHN0ZGluID09IFBJUEU6Ci0gICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUgPSBfc3VicHJvY2Vzcy5DcmVhdGVQaXBlKE5vbmUsIDApCisgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUgPSBfd2luYXBpLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICBwMmNyZWFkLCBwMmN3cml0ZSA9IEhhbmRsZShwMmNyZWFkKSwgSGFuZGxlKHAyY3dyaXRlKQorICAgICAgICAgICAgZWxpZiBzdGRpbiA9PSBERVZOVUxMOgorICAgICAgICAgICAgICAgIHAyY3JlYWQgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzZWxmLl9nZXRfZGV2bnVsbCgpKQogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZGluLCBpbnQpOgogICAgICAgICAgICAgICAgIHAyY3JlYWQgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzdGRpbikKICAgICAgICAgICAgIGVsc2U6CkBAIC04NjYsMTEgKzk4MCwxNiBAQAogICAgICAgICAgICAgcDJjcmVhZCA9IHNlbGYuX21ha2VfaW5oZXJpdGFibGUocDJjcmVhZCkKIAogICAgICAgICAgICAgaWYgc3Rkb3V0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgYzJwd3JpdGUgPSBfc3VicHJvY2Vzcy5HZXRTdGRIYW5kbGUoX3N1YnByb2Nlc3MuU1REX09VVFBVVF9IQU5ETEUpCisgICAgICAgICAgICAgICAgYzJwd3JpdGUgPSBfd2luYXBpLkdldFN0ZEhhbmRsZShfd2luYXBpLlNURF9PVVRQVVRfSEFORExFKQogICAgICAgICAgICAgICAgIGlmIGMycHdyaXRlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIF8sIGMycHdyaXRlID0gX3N1YnByb2Nlc3MuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgICAgICBfLCBjMnB3cml0ZSA9IF93aW5hcGkuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IEhhbmRsZShjMnB3cml0ZSkKKyAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShfKQogICAgICAgICAgICAgZWxpZiBzdGRvdXQgPT0gUElQRToKLSAgICAgICAgICAgICAgICBjMnByZWFkLCBjMnB3cml0ZSA9IF9zdWJwcm9jZXNzLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICBjMnByZWFkLCBjMnB3cml0ZSA9IF93aW5hcGkuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlID0gSGFuZGxlKGMycHJlYWQpLCBIYW5kbGUoYzJwd3JpdGUpCisgICAgICAgICAgICBlbGlmIHN0ZG91dCA9PSBERVZOVUxMOgorICAgICAgICAgICAgICAgIGMycHdyaXRlID0gbXN2Y3J0LmdldF9vc2ZoYW5kbGUoc2VsZi5fZ2V0X2Rldm51bGwoKSkKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzdGRvdXQsIGludCk6CiAgICAgICAgICAgICAgICAgYzJwd3JpdGUgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzdGRvdXQpCiAgICAgICAgICAgICBlbHNlOgpAQCAtODc5LDEzICs5OTgsMTggQEAKICAgICAgICAgICAgIGMycHdyaXRlID0gc2VsZi5fbWFrZV9pbmhlcml0YWJsZShjMnB3cml0ZSkKIAogICAgICAgICAgICAgaWYgc3RkZXJyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBfc3VicHJvY2Vzcy5HZXRTdGRIYW5kbGUoX3N1YnByb2Nlc3MuU1REX0VSUk9SX0hBTkRMRSkKKyAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IF93aW5hcGkuR2V0U3RkSGFuZGxlKF93aW5hcGkuU1REX0VSUk9SX0hBTkRMRSkKICAgICAgICAgICAgICAgICBpZiBlcnJ3cml0ZSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBfLCBlcnJ3cml0ZSA9IF9zdWJwcm9jZXNzLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICAgICAgXywgZXJyd3JpdGUgPSBfd2luYXBpLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBIYW5kbGUoZXJyd3JpdGUpCisgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoXykKICAgICAgICAgICAgIGVsaWYgc3RkZXJyID09IFBJUEU6Ci0gICAgICAgICAgICAgICAgZXJycmVhZCwgZXJyd3JpdGUgPSBfc3VicHJvY2Vzcy5DcmVhdGVQaXBlKE5vbmUsIDApCisgICAgICAgICAgICAgICAgZXJycmVhZCwgZXJyd3JpdGUgPSBfd2luYXBpLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSA9IEhhbmRsZShlcnJyZWFkKSwgSGFuZGxlKGVycndyaXRlKQogICAgICAgICAgICAgZWxpZiBzdGRlcnIgPT0gU1RET1VUOgogICAgICAgICAgICAgICAgIGVycndyaXRlID0gYzJwd3JpdGUKKyAgICAgICAgICAgIGVsaWYgc3RkZXJyID09IERFVk5VTEw6CisgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzZWxmLl9nZXRfZGV2bnVsbCgpKQogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZGVyciwgaW50KToKICAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IG1zdmNydC5nZXRfb3NmaGFuZGxlKHN0ZGVycikKICAgICAgICAgICAgIGVsc2U6CkBAIC05MDAsMjAgKzEwMjQsMjIgQEAKIAogICAgICAgICBkZWYgX21ha2VfaW5oZXJpdGFibGUoc2VsZiwgaGFuZGxlKToKICAgICAgICAgICAgICIiIlJldHVybiBhIGR1cGxpY2F0ZSBvZiBoYW5kbGUsIHdoaWNoIGlzIGluaGVyaXRhYmxlIiIiCi0gICAgICAgICAgICByZXR1cm4gX3N1YnByb2Nlc3MuRHVwbGljYXRlSGFuZGxlKF9zdWJwcm9jZXNzLkdldEN1cnJlbnRQcm9jZXNzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSwgX3N1YnByb2Nlc3MuR2V0Q3VycmVudFByb2Nlc3MoKSwgMCwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3N1YnByb2Nlc3MuRFVQTElDQVRFX1NBTUVfQUNDRVNTKQorICAgICAgICAgICAgaCA9IF93aW5hcGkuRHVwbGljYXRlSGFuZGxlKAorICAgICAgICAgICAgICAgIF93aW5hcGkuR2V0Q3VycmVudFByb2Nlc3MoKSwgaGFuZGxlLAorICAgICAgICAgICAgICAgIF93aW5hcGkuR2V0Q3VycmVudFByb2Nlc3MoKSwgMCwgMSwKKyAgICAgICAgICAgICAgICBfd2luYXBpLkRVUExJQ0FURV9TQU1FX0FDQ0VTUykKKyAgICAgICAgICAgIHJldHVybiBIYW5kbGUoaCkKIAogCiAgICAgICAgIGRlZiBfZmluZF93OXhwb3BlbihzZWxmKToKICAgICAgICAgICAgICIiIkZpbmQgYW5kIHJldHVybiBhYnNvbHV0IHBhdGggdG8gdzl4cG9wZW4uZXhlIiIiCiAgICAgICAgICAgICB3OXhwb3BlbiA9IG9zLnBhdGguam9pbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoX3N1YnByb2Nlc3MuR2V0TW9kdWxlRmlsZU5hbWUoMCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZGlybmFtZShfd2luYXBpLkdldE1vZHVsZUZpbGVOYW1lKDApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3OXhwb3Blbi5leGUiKQogICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHc5eHBvcGVuKToKICAgICAgICAgICAgICAgICAjIEVlZWsgLSBmaWxlLW5vdC1mb3VuZCAtIHBvc3NpYmx5IGFuIGVtYmVkZGluZwogICAgICAgICAgICAgICAgICMgc2l0dWF0aW9uIC0gc2VlIGlmIHdlIGNhbiBsb2NhdGUgaXQgaW4gc3lzLmV4ZWNfcHJlZml4Ci0gICAgICAgICAgICAgICAgdzl4cG9wZW4gPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHN5cy5leGVjX3ByZWZpeCksCisgICAgICAgICAgICAgICAgdzl4cG9wZW4gPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHN5cy5iYXNlX2V4ZWNfcHJlZml4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidzl4cG9wZW4uZXhlIikKICAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModzl4cG9wZW4pOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNhbm5vdCBsb2NhdGUgdzl4cG9wZW4uZXhlLCB3aGljaCBpcyAiCkBAIC05MjMsNyArMTA0OSw3IEBACiAKIAogICAgICAgICBkZWYgX2V4ZWN1dGVfY2hpbGQoc2VsZiwgYXJncywgZXhlY3V0YWJsZSwgcHJlZXhlY19mbiwgY2xvc2VfZmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc19mZHMsIGN3ZCwgZW52LCB1bml2ZXJzYWxfbmV3bGluZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbywgY3JlYXRpb25mbGFncywgc2hlbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMmNyZWFkLCBwMmN3cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlLApAQCAtOTQwLDE3ICsxMDY2LDE3IEBACiAgICAgICAgICAgICBpZiBzdGFydHVwaW5mbyBpcyBOb25lOgogICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvID0gU1RBUlRVUElORk8oKQogICAgICAgICAgICAgaWYgLTEgbm90IGluIChwMmNyZWFkLCBjMnB3cml0ZSwgZXJyd3JpdGUpOgotICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLmR3RmxhZ3MgfD0gX3N1YnByb2Nlc3MuU1RBUlRGX1VTRVNUREhBTkRMRVMKKyAgICAgICAgICAgICAgICBzdGFydHVwaW5mby5kd0ZsYWdzIHw9IF93aW5hcGkuU1RBUlRGX1VTRVNUREhBTkRMRVMKICAgICAgICAgICAgICAgICBzdGFydHVwaW5mby5oU3RkSW5wdXQgPSBwMmNyZWFkCiAgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8uaFN0ZE91dHB1dCA9IGMycHdyaXRlCiAgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8uaFN0ZEVycm9yID0gZXJyd3JpdGUKIAogICAgICAgICAgICAgaWYgc2hlbGw6Ci0gICAgICAgICAgICAgICAgc3RhcnR1cGluZm8uZHdGbGFncyB8PSBfc3VicHJvY2Vzcy5TVEFSVEZfVVNFU0hPV1dJTkRPVwotICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLndTaG93V2luZG93ID0gX3N1YnByb2Nlc3MuU1dfSElERQorICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLmR3RmxhZ3MgfD0gX3dpbmFwaS5TVEFSVEZfVVNFU0hPV1dJTkRPVworICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLndTaG93V2luZG93ID0gX3dpbmFwaS5TV19ISURFCiAgICAgICAgICAgICAgICAgY29tc3BlYyA9IG9zLmVudmlyb24uZ2V0KCJDT01TUEVDIiwgImNtZC5leGUiKQogICAgICAgICAgICAgICAgIGFyZ3MgPSAne30gL2MgInt9IicuZm9ybWF0IChjb21zcGVjLCBhcmdzKQotICAgICAgICAgICAgICAgIGlmIChfc3VicHJvY2Vzcy5HZXRWZXJzaW9uKCkgPj0gMHg4MDAwMDAwMCBvcgorICAgICAgICAgICAgICAgIGlmIChfd2luYXBpLkdldFZlcnNpb24oKSA+PSAweDgwMDAwMDAwIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKGNvbXNwZWMpLmxvd2VyKCkgPT0gImNvbW1hbmQuY29tIik6CiAgICAgICAgICAgICAgICAgICAgICMgV2luOXgsIG9yIHVzaW5nIGNvbW1hbmQuY29tIG9uIE5ULiBXZSBuZWVkIHRvCiAgICAgICAgICAgICAgICAgICAgICMgdXNlIHRoZSB3OXhwb3BlbiBpbnRlcm1lZGlhdGUgcHJvZ3JhbS4gRm9yIG1vcmUKQEAgLTk2NCwxMSArMTA5MCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAjIHVzZSBhdCB4eHgiIGFuZCBhIGhvcGVmdWwgd2FybmluZyBhYm91dCB0aGUKICAgICAgICAgICAgICAgICAgICAgIyBzdGFiaWxpdHkgb2YgeW91ciBzeXN0ZW0uICBDb3N0IGlzIEN0cmwrQyB3b24ndAogICAgICAgICAgICAgICAgICAgICAjIGtpbGwgY2hpbGRyZW4uCi0gICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uZmxhZ3MgfD0gX3N1YnByb2Nlc3MuQ1JFQVRFX05FV19DT05TT0xFCisgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uZmxhZ3MgfD0gX3dpbmFwaS5DUkVBVEVfTkVXX0NPTlNPTEUKIAogICAgICAgICAgICAgIyBTdGFydCB0aGUgcHJvY2VzcwogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGhwLCBodCwgcGlkLCB0aWQgPSBfc3VicHJvY2Vzcy5DcmVhdGVQcm9jZXNzKGV4ZWN1dGFibGUsIGFyZ3MsCisgICAgICAgICAgICAgICAgaHAsIGh0LCBwaWQsIHRpZCA9IF93aW5hcGkuQ3JlYXRlUHJvY2VzcyhleGVjdXRhYmxlLCBhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vIHNwZWNpYWwgc2VjdXJpdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KG5vdCBjbG9zZV9mZHMpLApAQCAtOTk1LDE3ICsxMTIxLDE5IEBACiAgICAgICAgICAgICAgICAgICAgIGMycHdyaXRlLkNsb3NlKCkKICAgICAgICAgICAgICAgICBpZiBlcnJ3cml0ZSAhPSAtMToKICAgICAgICAgICAgICAgICAgICAgZXJyd3JpdGUuQ2xvc2UoKQorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ19kZXZudWxsJyk6CisgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKHNlbGYuX2Rldm51bGwpCiAKICAgICAgICAgICAgICMgUmV0YWluIHRoZSBwcm9jZXNzIGhhbmRsZSwgYnV0IGNsb3NlIHRoZSB0aHJlYWQgaGFuZGxlCiAgICAgICAgICAgICBzZWxmLl9jaGlsZF9jcmVhdGVkID0gVHJ1ZQotICAgICAgICAgICAgc2VsZi5faGFuZGxlID0gaHAKKyAgICAgICAgICAgIHNlbGYuX2hhbmRsZSA9IEhhbmRsZShocCkKICAgICAgICAgICAgIHNlbGYucGlkID0gcGlkCi0gICAgICAgICAgICBodC5DbG9zZSgpCisgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKGh0KQogCiAgICAgICAgIGRlZiBfaW50ZXJuYWxfcG9sbChzZWxmLCBfZGVhZHN0YXRlPU5vbmUsCi0gICAgICAgICAgICAgICAgX1dhaXRGb3JTaW5nbGVPYmplY3Q9X3N1YnByb2Nlc3MuV2FpdEZvclNpbmdsZU9iamVjdCwKLSAgICAgICAgICAgICAgICBfV0FJVF9PQkpFQ1RfMD1fc3VicHJvY2Vzcy5XQUlUX09CSkVDVF8wLAotICAgICAgICAgICAgICAgIF9HZXRFeGl0Q29kZVByb2Nlc3M9X3N1YnByb2Nlc3MuR2V0RXhpdENvZGVQcm9jZXNzKToKKyAgICAgICAgICAgICAgICBfV2FpdEZvclNpbmdsZU9iamVjdD1fd2luYXBpLldhaXRGb3JTaW5nbGVPYmplY3QsCisgICAgICAgICAgICAgICAgX1dBSVRfT0JKRUNUXzA9X3dpbmFwaS5XQUlUX09CSkVDVF8wLAorICAgICAgICAgICAgICAgIF9HZXRFeGl0Q29kZVByb2Nlc3M9X3dpbmFwaS5HZXRFeGl0Q29kZVByb2Nlc3MpOgogICAgICAgICAgICAgIiIiQ2hlY2sgaWYgY2hpbGQgcHJvY2VzcyBoYXMgdGVybWluYXRlZC4gIFJldHVybnMgcmV0dXJuY29kZQogICAgICAgICAgICAgYXR0cmlidXRlLgogCkBAIC0xMDE5LDEzICsxMTQ3LDIxIEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5jb2RlCiAKIAotICAgICAgICBkZWYgd2FpdChzZWxmKToKKyAgICAgICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lLCBlbmR0aW1lPU5vbmUpOgogICAgICAgICAgICAgIiIiV2FpdCBmb3IgY2hpbGQgcHJvY2VzcyB0byB0ZXJtaW5hdGUuICBSZXR1cm5zIHJldHVybmNvZGUKICAgICAgICAgICAgIGF0dHJpYnV0ZS4iIiIKKyAgICAgICAgICAgIGlmIGVuZHRpbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IHNlbGYuX3JlbWFpbmluZ190aW1lKGVuZHRpbWUpCisgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgdGltZW91dF9taWxsaXMgPSBfd2luYXBpLklORklOSVRFCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRpbWVvdXRfbWlsbGlzID0gaW50KHRpbWVvdXQgKiAxMDAwKQogICAgICAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgX3N1YnByb2Nlc3MuV2FpdEZvclNpbmdsZU9iamVjdChzZWxmLl9oYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc3VicHJvY2Vzcy5JTkZJTklURSkKLSAgICAgICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBfc3VicHJvY2Vzcy5HZXRFeGl0Q29kZVByb2Nlc3Moc2VsZi5faGFuZGxlKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IF93aW5hcGkuV2FpdEZvclNpbmdsZU9iamVjdChzZWxmLl9oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9taWxsaXMpCisgICAgICAgICAgICAgICAgaWYgcmVzdWx0ID09IF93aW5hcGkuV0FJVF9USU1FT1VUOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIHRpbWVvdXQpCisgICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gX3dpbmFwaS5HZXRFeGl0Q29kZVByb2Nlc3Moc2VsZi5faGFuZGxlKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQogCiAKQEAgLTEwMzQsMjIgKzExNzAsMjMgQEAKICAgICAgICAgICAgIGZoLmNsb3NlKCkKIAogCi0gICAgICAgIGRlZiBfY29tbXVuaWNhdGUoc2VsZiwgaW5wdXQpOgotICAgICAgICAgICAgc3Rkb3V0ID0gTm9uZSAjIFJldHVybgotICAgICAgICAgICAgc3RkZXJyID0gTm9uZSAjIFJldHVybgotCi0gICAgICAgICAgICBpZiBzZWxmLnN0ZG91dDoKLSAgICAgICAgICAgICAgICBzdGRvdXQgPSBbXQotICAgICAgICAgICAgICAgIHN0ZG91dF90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLl9yZWFkZXJ0aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5zdGRvdXQsIHN0ZG91dCkpCi0gICAgICAgICAgICAgICAgc3Rkb3V0X3RocmVhZC5kYWVtb24gPSBUcnVlCi0gICAgICAgICAgICAgICAgc3Rkb3V0X3RocmVhZC5zdGFydCgpCi0gICAgICAgICAgICBpZiBzZWxmLnN0ZGVycjoKLSAgICAgICAgICAgICAgICBzdGRlcnIgPSBbXQotICAgICAgICAgICAgICAgIHN0ZGVycl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLl9yZWFkZXJ0aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5zdGRlcnIsIHN0ZGVycikpCi0gICAgICAgICAgICAgICAgc3RkZXJyX3RocmVhZC5kYWVtb24gPSBUcnVlCi0gICAgICAgICAgICAgICAgc3RkZXJyX3RocmVhZC5zdGFydCgpCisgICAgICAgIGRlZiBfY29tbXVuaWNhdGUoc2VsZiwgaW5wdXQsIGVuZHRpbWUsIG9yaWdfdGltZW91dCk6CisgICAgICAgICAgICAjIFN0YXJ0IHJlYWRlciB0aHJlYWRzIGZlZWRpbmcgaW50byBhIGxpc3QgaGFuZ2luZyBvZmYgb2YgdGhpcworICAgICAgICAgICAgIyBvYmplY3QsIHVubGVzcyB0aGV5J3ZlIGFscmVhZHkgYmVlbiBzdGFydGVkLgorICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQgYW5kIG5vdCBoYXNhdHRyKHNlbGYsICJfc3Rkb3V0X2J1ZmYiKToKKyAgICAgICAgICAgICAgICBzZWxmLl9zdGRvdXRfYnVmZiA9IFtdCisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXRfdGhyZWFkID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5fcmVhZGVydGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLnN0ZG91dCwgc2VsZi5fc3Rkb3V0X2J1ZmYpKQorICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0X3RocmVhZC5kYWVtb24gPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXRfdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgICAgIGlmIHNlbGYuc3RkZXJyIGFuZCBub3QgaGFzYXR0cihzZWxmLCAiX3N0ZGVycl9idWZmIik6CisgICAgICAgICAgICAgICAgc2VsZi5fc3RkZXJyX2J1ZmYgPSBbXQorICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyX3RocmVhZCA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuX3JlYWRlcnRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5zdGRlcnIsIHNlbGYuX3N0ZGVycl9idWZmKSkKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZGVycl90aHJlYWQuZGFlbW9uID0gVHJ1ZQorICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyX3RocmVhZC5zdGFydCgpCiAKICAgICAgICAgICAgIGlmIHNlbGYuc3RkaW46CiAgICAgICAgICAgICAgICAgaWYgaW5wdXQgaXMgbm90IE5vbmU6CkBAIC0xMDYwLDEwICsxMTk3LDI4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICBzZWxmLnN0ZGluLmNsb3NlKCkKIAorICAgICAgICAgICAgIyBXYWl0IGZvciB0aGUgcmVhZGVyIHRocmVhZHMsIG9yIHRpbWUgb3V0LiAgSWYgd2UgdGltZSBvdXQsIHRoZQorICAgICAgICAgICAgIyB0aHJlYWRzIHJlbWFpbiByZWFkaW5nIGFuZCB0aGUgZmRzIGxlZnQgb3BlbiBpbiBjYXNlIHRoZSB1c2VyCisgICAgICAgICAgICAjIGNhbGxzIGNvbW11bmljYXRlIGFnYWluLgorICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXRfdGhyZWFkLmpvaW4oc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXRfdGhyZWFkLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgb3JpZ190aW1lb3V0KQorICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnJfdGhyZWFkLmpvaW4oc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnJfdGhyZWFkLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgb3JpZ190aW1lb3V0KQorCisgICAgICAgICAgICAjIENvbGxlY3QgdGhlIG91dHB1dCBmcm9tIGFuZCBjbG9zZSBib3RoIHBpcGVzLCBub3cgdGhhdCB3ZSBrbm93CisgICAgICAgICAgICAjIGJvdGggaGF2ZSBiZWVuIHJlYWQgc3VjY2Vzc2Z1bGx5LgorICAgICAgICAgICAgc3Rkb3V0ID0gTm9uZQorICAgICAgICAgICAgc3RkZXJyID0gTm9uZQogICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQ6Ci0gICAgICAgICAgICAgICAgc3Rkb3V0X3RocmVhZC5qb2luKCkKKyAgICAgICAgICAgICAgICBzdGRvdXQgPSBzZWxmLl9zdGRvdXRfYnVmZgorICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0LmNsb3NlKCkKICAgICAgICAgICAgIGlmIHNlbGYuc3RkZXJyOgotICAgICAgICAgICAgICAgIHN0ZGVycl90aHJlYWQuam9pbigpCisgICAgICAgICAgICAgICAgc3RkZXJyID0gc2VsZi5fc3RkZXJyX2J1ZmYKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyci5jbG9zZSgpCiAKICAgICAgICAgICAgICMgQWxsIGRhdGEgZXhjaGFuZ2VkLiAgVHJhbnNsYXRlIGxpc3RzIGludG8gc3RyaW5ncy4KICAgICAgICAgICAgIGlmIHN0ZG91dCBpcyBub3QgTm9uZToKQEAgLTEwNzEsNyArMTIyNiw2IEBACiAgICAgICAgICAgICBpZiBzdGRlcnIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc3RkZXJyID0gc3RkZXJyWzBdCiAKLSAgICAgICAgICAgIHNlbGYud2FpdCgpCiAgICAgICAgICAgICByZXR1cm4gKHN0ZG91dCwgc3RkZXJyKQogCiAgICAgICAgIGRlZiBzZW5kX3NpZ25hbChzZWxmLCBzaWcpOgpAQCAtMTA5MCwxNCArMTI0NCwxMiBAQAogICAgICAgICAgICAgIiIiVGVybWluYXRlcyB0aGUgcHJvY2VzcwogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgX3N1YnByb2Nlc3MuVGVybWluYXRlUHJvY2VzcyhzZWxmLl9oYW5kbGUsIDEpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIF93aW5hcGkuVGVybWluYXRlUHJvY2VzcyhzZWxmLl9oYW5kbGUsIDEpCisgICAgICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgICAgICMgRVJST1JfQUNDRVNTX0RFTklFRCAod2luZXJyb3IgNSkgaXMgcmVjZWl2ZWQgd2hlbiB0aGUKICAgICAgICAgICAgICAgICAjIHByb2Nlc3MgYWxyZWFkeSBkaWVkLgotICAgICAgICAgICAgICAgIGlmIGUud2luZXJyb3IgIT0gNToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICAgICByYyA9IF9zdWJwcm9jZXNzLkdldEV4aXRDb2RlUHJvY2VzcyhzZWxmLl9oYW5kbGUpCi0gICAgICAgICAgICAgICAgaWYgcmMgPT0gX3N1YnByb2Nlc3MuU1RJTExfQUNUSVZFOgorICAgICAgICAgICAgICAgIHJjID0gX3dpbmFwaS5HZXRFeGl0Q29kZVByb2Nlc3Moc2VsZi5faGFuZGxlKQorICAgICAgICAgICAgICAgIGlmIHJjID09IF93aW5hcGkuU1RJTExfQUNUSVZFOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IHJjCiAKQEAgLTExMTksNiArMTI3MSw4IEBACiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZWxpZiBzdGRpbiA9PSBQSVBFOgogICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlID0gX2NyZWF0ZV9waXBlKCkKKyAgICAgICAgICAgIGVsaWYgc3RkaW4gPT0gREVWTlVMTDoKKyAgICAgICAgICAgICAgICBwMmNyZWFkID0gc2VsZi5fZ2V0X2Rldm51bGwoKQogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZGluLCBpbnQpOgogICAgICAgICAgICAgICAgIHAyY3JlYWQgPSBzdGRpbgogICAgICAgICAgICAgZWxzZToKQEAgLTExMjksNiArMTI4Myw4IEBACiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZWxpZiBzdGRvdXQgPT0gUElQRToKICAgICAgICAgICAgICAgICBjMnByZWFkLCBjMnB3cml0ZSA9IF9jcmVhdGVfcGlwZSgpCisgICAgICAgICAgICBlbGlmIHN0ZG91dCA9PSBERVZOVUxMOgorICAgICAgICAgICAgICAgIGMycHdyaXRlID0gc2VsZi5fZ2V0X2Rldm51bGwoKQogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZG91dCwgaW50KToKICAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IHN0ZG91dAogICAgICAgICAgICAgZWxzZToKQEAgLTExNDEsNiArMTI5Nyw4IEBACiAgICAgICAgICAgICAgICAgZXJycmVhZCwgZXJyd3JpdGUgPSBfY3JlYXRlX3BpcGUoKQogICAgICAgICAgICAgZWxpZiBzdGRlcnIgPT0gU1RET1VUOgogICAgICAgICAgICAgICAgIGVycndyaXRlID0gYzJwd3JpdGUKKyAgICAgICAgICAgIGVsaWYgc3RkZXJyID09IERFVk5VTEw6CisgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBzZWxmLl9nZXRfZGV2bnVsbCgpCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3RkZXJyLCBpbnQpOgogICAgICAgICAgICAgICAgIGVycndyaXRlID0gc3RkZXJyCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTE2Myw3ICsxMzIxLDcgQEAKIAogCiAgICAgICAgIGRlZiBfZXhlY3V0ZV9jaGlsZChzZWxmLCBhcmdzLCBleGVjdXRhYmxlLCBwcmVleGVjX2ZuLCBjbG9zZV9mZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsIHVuaXZlcnNhbF9uZXdsaW5lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NfZmRzLCBjd2QsIGVudiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLCBjcmVhdGlvbmZsYWdzLCBzaGVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJwcmVhZCwgYzJwd3JpdGUsCkBAIC0xMTcxLDcgKzEzMjksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdG9yZV9zaWduYWxzLCBzdGFydF9uZXdfc2Vzc2lvbik6CiAgICAgICAgICAgICAiIiJFeGVjdXRlIHByb2dyYW0gKFBPU0lYIHZlcnNpb24pIiIiCiAKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJncywgc3RyKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJncywgKHN0ciwgYnl0ZXMpKToKICAgICAgICAgICAgICAgICBhcmdzID0gW2FyZ3NdCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGFyZ3MgPSBsaXN0KGFyZ3MpCkBAIC0xMTkxLDE1MyArMTM0OSwzNCBAQAogICAgICAgICAgICAgZXJycGlwZV9yZWFkLCBlcnJwaXBlX3dyaXRlID0gX2NyZWF0ZV9waXBlKCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgV2UgbXVzdCBhdm9pZCBjb21wbGV4IHdvcmsgdGhhdCBjb3VsZCBpbnZvbHZlCisgICAgICAgICAgICAgICAgICAgICMgbWFsbG9jIG9yIGZyZWUgaW4gdGhlIGNoaWxkIHByb2Nlc3MgdG8gYXZvaWQKKyAgICAgICAgICAgICAgICAgICAgIyBwb3RlbnRpYWwgZGVhZGxvY2tzLCB0aHVzIHdlIGRvIGFsbCB0aGlzIGhlcmUuCisgICAgICAgICAgICAgICAgICAgICMgYW5kIHBhc3MgaXQgdG8gZm9ya19leGVjKCkKIAotICAgICAgICAgICAgICAgICAgICBpZiBfcG9zaXhzdWJwcm9jZXNzOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBtdXN0IGF2b2lkIGNvbXBsZXggd29yayB0aGF0IGNvdWxkIGludm9sdmUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgbWFsbG9jIG9yIGZyZWUgaW4gdGhlIGNoaWxkIHByb2Nlc3MgdG8gYXZvaWQKLSAgICAgICAgICAgICAgICAgICAgICAgICMgcG90ZW50aWFsIGRlYWRsb2NrcywgdGh1cyB3ZSBkbyBhbGwgdGhpcyBoZXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgIyBhbmQgcGFzcyBpdCB0byBmb3JrX2V4ZWMoKQotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBlbnYgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52X2xpc3QgPSBbb3MuZnNlbmNvZGUoaykgKyBiJz0nICsgb3MuZnNlbmNvZGUodikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBlbnYuaXRlbXMoKV0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52X2xpc3QgPSBOb25lICAjIFVzZSBleGVjdiBpbnN0ZWFkIG9mIGV4ZWN2ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBvcy5mc2VuY29kZShleGVjdXRhYmxlKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5kaXJuYW1lKGV4ZWN1dGFibGUpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVfbGlzdCA9IChleGVjdXRhYmxlLCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW9yIG9mIG9zLl9leGVjdnBlKCkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZV9saXN0ID0gdHVwbGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihvcy5mc2VuY29kZShkaXIpLCBleGVjdXRhYmxlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZGlyIGluIG9zLmdldF9leGVjX3BhdGgoZW52KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZkc190b19rZWVwID0gc2V0KHBhc3NfZmRzKQotICAgICAgICAgICAgICAgICAgICAgICAgZmRzX3RvX2tlZXAuYWRkKGVycnBpcGVfd3JpdGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBpZCA9IF9wb3NpeHN1YnByb2Nlc3MuZm9ya19leGVjKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCBleGVjdXRhYmxlX2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2Zkcywgc29ydGVkKGZkc190b19rZWVwKSwgY3dkLCBlbnZfbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUsIGMycHJlYWQsIGMycHdyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJycGlwZV9yZWFkLCBlcnJwaXBlX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0b3JlX3NpZ25hbHMsIHN0YXJ0X25ld19zZXNzaW9uLCBwcmVleGVjX2ZuKQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2hpbGRfY3JlYXRlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgaWYgZW52IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgZW52X2xpc3QgPSBbb3MuZnNlbmNvZGUoaykgKyBiJz0nICsgb3MuZnNlbmNvZGUodikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIGVudi5pdGVtcygpXQogICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBQdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbjogSXQgaXMgbm90IHRocmVhZCBzYWZlLgotICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGltcGxlbWVudGF0aW9uIG1heSBkZWFkbG9jayBpbiB0aGUgY2hpbGQgaWYgeW91cgotICAgICAgICAgICAgICAgICAgICAgICAgIyBwYXJlbnQgcHJvY2VzcyBoYXMgYW55IG90aGVyIHRocmVhZHMgcnVubmluZy4KLQotICAgICAgICAgICAgICAgICAgICAgICAgZ2Nfd2FzX2VuYWJsZWQgPSBnYy5pc2VuYWJsZWQoKQotICAgICAgICAgICAgICAgICAgICAgICAgIyBEaXNhYmxlIGdjIHRvIGF2b2lkIGJ1ZyB3aGVyZSBnYyAtPiBmaWxlX2RlYWxsb2MgLT4KLSAgICAgICAgICAgICAgICAgICAgICAgICMgd3JpdGUgdG8gc3RkZXJyIC0+IGhhbmcuICBTZWUgaXNzdWUxMzM2Ci0gICAgICAgICAgICAgICAgICAgICAgICBnYy5kaXNhYmxlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBpZCA9IG9zLmZvcmsoKQotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGdjX3dhc19lbmFibGVkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYy5lbmFibGUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jaGlsZF9jcmVhdGVkID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5waWQgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENoaWxkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhY2hlZF9wcmVleGVjID0gRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2xvc2UgcGFyZW50J3MgcGlwZSBlbmRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHAyY3dyaXRlICE9IC0xOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UocDJjd3JpdGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGMycHJlYWQgIT0gLTE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShjMnByZWFkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnJyZWFkICE9IC0xOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZXJycmVhZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZXJycGlwZV9yZWFkKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgV2hlbiBkdXBpbmcgZmRzLCBpZiB0aGVyZSBhcmlzZXMgYSBzaXR1YXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aGVyZSBvbmUgb2YgdGhlIGZkcyBpcyBlaXRoZXIgMCwgMSBvciAyLCBpdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlzIHBvc3NpYmxlIHRoYXQgaXQgaXMgb3ZlcndyaXR0ZW4gKCMxMjYwNykuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGMycHdyaXRlID09IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IG9zLmR1cChjMnB3cml0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXJyd3JpdGUgPT0gMCBvciBlcnJ3cml0ZSA9PSAxOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBvcy5kdXAoZXJyd3JpdGUpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBEdXAgZmRzIGZvciBjaGlsZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYgX2R1cDIoYSwgYik6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGR1cDIoKSByZW1vdmVzIHRoZSBDTE9FWEVDIGZsYWcgYnV0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdlIG11c3QgZG8gaXQgb3Vyc2VsdmVzIGlmIGR1cDIoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3b3VsZCBiZSBhIG5vLW9wIChpc3N1ZSAjMTA4MDYpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYSA9PSBiOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZXRfY2xvZXhlYyhhLCBGYWxzZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgYSAhPSAtMToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5kdXAyKGEsIGIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kdXAyKHAyY3JlYWQsIDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kdXAyKGMycHdyaXRlLCAxKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZHVwMihlcnJ3cml0ZSwgMikKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENsb3NlIHBpcGUgZmRzLiAgTWFrZSBzdXJlIHdlIGRvbid0IGNsb3NlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNhbWUgZmQgbW9yZSB0aGFuIG9uY2UsIG9yIHN0YW5kYXJkIGZkcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VkID0gc2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGZkIGluIFtwMmNyZWFkLCBjMnB3cml0ZSwgZXJyd3JpdGVdOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmQgPiAyIGFuZCBmZCBub3QgaW4gY2xvc2VkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlZC5hZGQoZmQpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDbG9zZSBhbGwgb3RoZXIgZmRzLCBpZiBhc2tlZCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2xvc2VfZmRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRzX3RvX2tlZXAgPSBzZXQocGFzc19mZHMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZHNfdG9fa2VlcC5hZGQoZXJycGlwZV93cml0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2ZkcyhmZHNfdG9fa2VlcCkKLQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGN3ZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNoZGlyKGN3ZCkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgYSBjb3B5IG9mIFB5dGhvbi9weXRob25ydW4uYwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIF9QeV9SZXN0b3JlU2lnbmFscygpLiAgSWYgdGhhdCB3ZXJlIGV4cG9zZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcyBhIHN5cy5fcHlfcmVzdG9yZXNpZ25hbHMgZnVuYyBpdCB3b3VsZCBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJldHRlci4uIGJ1dCB0aGlzIHB1cmUgcHl0aG9uIGltcGxlbWVudGF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaXNuJ3QgbGlrZWx5IHRvIGJlIHVzZWQgbXVjaCBhbnltb3JlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiByZXN0b3JlX3NpZ25hbHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxzID0gKCdTSUdQSVBFJywgJ1NJR1hGWicsICdTSUdYRlNaJykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzaWcgaW4gc2lnbmFsczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHNpZ25hbCwgc2lnKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChnZXRhdHRyKHNpZ25hbCwgc2lnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWwuU0lHX0RGTCkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdGFydF9uZXdfc2Vzc2lvbiBhbmQgaGFzYXR0cihvcywgJ3NldHNpZCcpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc2V0c2lkKCkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFjaGVkX3ByZWV4ZWMgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHByZWV4ZWNfZm46Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVleGVjX2ZuKCkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlbnYgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmV4ZWN2cChleGVjdXRhYmxlLCBhcmdzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuZXhlY3ZwZShleGVjdXRhYmxlLCBhcmdzLCBlbnYpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y190eXBlLCBleGNfdmFsdWUgPSBzeXMuZXhjX2luZm8oKVs6Ml0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXhjX3ZhbHVlLCBPU0Vycm9yKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJub19udW0gPSBleGNfdmFsdWUuZXJybm8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybm9fbnVtID0gMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlYWNoZWRfcHJlZXhlYzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNfdmFsdWUgPSAibm9leGVjIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICclczoleDolcycgJSAoZXhjX3R5cGUuX19uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJub19udW0sIGV4Y192YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLmVuY29kZShlcnJvcnM9InN1cnJvZ2F0ZXBhc3MiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mud3JpdGUoZXJycGlwZV93cml0ZSwgbWVzc2FnZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgV2UgTVVTVCBub3QgYWxsb3cgYW55dGhpbmcgb2RkIGhhcHBlbmluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhYm92ZSB0byBwcmV2ZW50IHVzIGZyb20gZXhpdGluZyBiZWxvdy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBleGl0Y29kZSB3b24ndCBiZSByZXBvcnRlZCB0byBhcHBsaWNhdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNvIGl0IHJlYWxseSBkb2Vzbid0IG1hdHRlciB3aGF0IHdlIHJldHVybi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5fZXhpdCgyNTUpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICMgUGFyZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBnY193YXNfZW5hYmxlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYy5lbmFibGUoKQorICAgICAgICAgICAgICAgICAgICAgICAgZW52X2xpc3QgPSBOb25lICAjIFVzZSBleGVjdiBpbnN0ZWFkIG9mIGV4ZWN2ZS4KKyAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9IG9zLmZzZW5jb2RlKGV4ZWN1dGFibGUpCisgICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZGlybmFtZShleGVjdXRhYmxlKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVfbGlzdCA9IChleGVjdXRhYmxlLCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiBvcy5fZXhlY3ZwZSgpLgorICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZV9saXN0ID0gdHVwbGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKG9zLmZzZW5jb2RlKGRpciksIGV4ZWN1dGFibGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGRpciBpbiBvcy5nZXRfZXhlY19wYXRoKGVudikpCisgICAgICAgICAgICAgICAgICAgIGZkc190b19rZWVwID0gc2V0KHBhc3NfZmRzKQorICAgICAgICAgICAgICAgICAgICBmZHNfdG9fa2VlcC5hZGQoZXJycGlwZV93cml0ZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5waWQgPSBfcG9zaXhzdWJwcm9jZXNzLmZvcmtfZXhlYygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCBleGVjdXRhYmxlX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfZmRzLCBzb3J0ZWQoZmRzX3RvX2tlZXApLCBjd2QsIGVudl9saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlLCBjMnByZWFkLCBjMnB3cml0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJwaXBlX3JlYWQsIGVycnBpcGVfd3JpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdG9yZV9zaWduYWxzLCBzdGFydF9uZXdfc2Vzc2lvbiwgcHJlZXhlY19mbikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2hpbGRfY3JlYXRlZCA9IFRydWUKICAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgICAjIGJlIHN1cmUgdGhlIEZEIGlzIGNsb3NlZCBubyBtYXR0ZXIgd2hhdAogICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShlcnJwaXBlX3dyaXRlKQpAQCAtMTM0OCw2ICsxMzg3LDggQEAKICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoYzJwd3JpdGUpCiAgICAgICAgICAgICAgICAgaWYgZXJyd3JpdGUgIT0gLTEgYW5kIGVycnJlYWQgIT0gLTE6CiAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGVycndyaXRlKQorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ19kZXZudWxsJyk6CisgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKHNlbGYuX2Rldm51bGwpCiAKICAgICAgICAgICAgICAgICAjIFdhaXQgZm9yIGV4ZWMgdG8gZmFpbCBvciBzdWNjZWVkOyBwb3NzaWJseSByYWlzaW5nIGFuCiAgICAgICAgICAgICAgICAgIyBleGNlcHRpb24gKGxpbWl0ZWQgaW4gc2l6ZSkKQEAgLTE0MzcsMjkgKzE0NzgsNjEgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHVybmNvZGUKIAogCi0gICAgICAgIGRlZiB3YWl0KHNlbGYpOgorICAgICAgICBkZWYgX3RyeV93YWl0KHNlbGYsIHdhaXRfZmxhZ3MpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIChwaWQsIHN0cykgPSBfZWludHJfcmV0cnlfY2FsbChvcy53YWl0cGlkLCBzZWxmLnBpZCwgd2FpdF9mbGFncykKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQ0hJTEQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgIyBUaGlzIGhhcHBlbnMgaWYgU0lHQ0xEIGlzIHNldCB0byBiZSBpZ25vcmVkIG9yIHdhaXRpbmcKKyAgICAgICAgICAgICAgICAjIGZvciBjaGlsZCBwcm9jZXNzZXMgaGFzIG90aGVyd2lzZSBiZWVuIGRpc2FibGVkIGZvciBvdXIKKyAgICAgICAgICAgICAgICAjIHByb2Nlc3MuICBUaGlzIGNoaWxkIGlzIGRlYWQsIHdlIGNhbid0IGdldCB0aGUgc3RhdHVzLgorICAgICAgICAgICAgICAgIHBpZCA9IHNlbGYucGlkCisgICAgICAgICAgICAgICAgc3RzID0gMAorICAgICAgICAgICAgcmV0dXJuIChwaWQsIHN0cykKKworCisgICAgICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSwgZW5kdGltZT1Ob25lKToKICAgICAgICAgICAgICIiIldhaXQgZm9yIGNoaWxkIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgUmV0dXJucyByZXR1cm5jb2RlCiAgICAgICAgICAgICBhdHRyaWJ1dGUuIiIiCi0gICAgICAgICAgICB3aGlsZSBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHBpZCwgc3RzID0gX2VpbnRyX3JldHJ5X2NhbGwob3Mud2FpdHBpZCwgc2VsZi5waWQsIDApCi0gICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQ0hJTEQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaGFwcGVucyBpZiBTSUdDTEQgaXMgc2V0IHRvIGJlIGlnbm9yZWQgb3Igd2FpdGluZwotICAgICAgICAgICAgICAgICAgICAjIGZvciBjaGlsZCBwcm9jZXNzZXMgaGFzIG90aGVyd2lzZSBiZWVuIGRpc2FibGVkIGZvciBvdXIKLSAgICAgICAgICAgICAgICAgICAgIyBwcm9jZXNzLiAgVGhpcyBjaGlsZCBpcyBkZWFkLCB3ZSBjYW4ndCBnZXQgdGhlIHN0YXR1cy4KLSAgICAgICAgICAgICAgICAgICAgcGlkID0gc2VsZi5waWQKLSAgICAgICAgICAgICAgICAgICAgc3RzID0gMAotICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhlIHBpZCBhbmQgbG9vcCBhcyB3YWl0cGlkIGhhcyBiZWVuIGtub3duIHRvIHJldHVybgotICAgICAgICAgICAgICAgICMgMCBldmVuIHdpdGhvdXQgV05PSEFORyBpbiBvZGQgc2l0dWF0aW9ucy4gIGlzc3VlMTQzOTYuCi0gICAgICAgICAgICAgICAgaWYgcGlkID09IHNlbGYucGlkOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfZXhpdHN0YXR1cyhzdHMpCisgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQorCisgICAgICAgICAgICAjIGVuZHRpbWUgaXMgcHJlZmVycmVkIHRvIHRpbWVvdXQuICB0aW1lb3V0IGlzIG9ubHkgdXNlZCBmb3IKKyAgICAgICAgICAgICMgcHJpbnRpbmcuCisgICAgICAgICAgICBpZiBlbmR0aW1lIGlzIG5vdCBOb25lIG9yIHRpbWVvdXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgZW5kdGltZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBlbmR0aW1lID0gX3RpbWUoKSArIHRpbWVvdXQKKyAgICAgICAgICAgICAgICBlbGlmIHRpbWVvdXQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IHNlbGYuX3JlbWFpbmluZ190aW1lKGVuZHRpbWUpCisKKyAgICAgICAgICAgIGlmIGVuZHRpbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIyBFbnRlciBhIGJ1c3kgbG9vcCBpZiB3ZSBoYXZlIGEgdGltZW91dC4gIFRoaXMgYnVzeSBsb29wIHdhcworICAgICAgICAgICAgICAgICMgY3JpYmJlZCBmcm9tIExpYi90aHJlYWRpbmcucHkgaW4gVGhyZWFkLndhaXQoKSBhdCByNzEwNjUuCisgICAgICAgICAgICAgICAgZGVsYXkgPSAwLjAwMDUgIyA1MDAgdXMgLT4gaW5pdGlhbCBkZWxheSBvZiAxIG1zCisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgKHBpZCwgc3RzKSA9IHNlbGYuX3RyeV93YWl0KG9zLldOT0hBTkcpCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBwaWQgPT0gc2VsZi5waWQgb3IgcGlkID09IDAKKyAgICAgICAgICAgICAgICAgICAgaWYgcGlkID09IHNlbGYucGlkOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX2V4aXRzdGF0dXMoc3RzKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nID0gc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgcmVtYWluaW5nIDw9IDA6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIHRpbWVvdXQpCisgICAgICAgICAgICAgICAgICAgIGRlbGF5ID0gbWluKGRlbGF5ICogMiwgcmVtYWluaW5nLCAuMDUpCisgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoZGVsYXkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdoaWxlIHNlbGYucmV0dXJuY29kZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAocGlkLCBzdHMpID0gc2VsZi5fdHJ5X3dhaXQoMCkKKyAgICAgICAgICAgICAgICAgICAgIyBDaGVjayB0aGUgcGlkIGFuZCBsb29wIGFzIHdhaXRwaWQgaGFzIGJlZW4ga25vd24gdG8gcmV0dXJuCisgICAgICAgICAgICAgICAgICAgICMgMCBldmVuIHdpdGhvdXQgV05PSEFORyBpbiBvZGQgc2l0dWF0aW9ucy4gIGlzc3VlMTQzOTYuCisgICAgICAgICAgICAgICAgICAgIGlmIHBpZCA9PSBzZWxmLnBpZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9leGl0c3RhdHVzKHN0cykKICAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHVybmNvZGUKIAogCi0gICAgICAgIGRlZiBfY29tbXVuaWNhdGUoc2VsZiwgaW5wdXQpOgotICAgICAgICAgICAgaWYgc2VsZi5zdGRpbjoKKyAgICAgICAgZGVmIF9jb21tdW5pY2F0ZShzZWxmLCBpbnB1dCwgZW5kdGltZSwgb3JpZ190aW1lb3V0KToKKyAgICAgICAgICAgIGlmIHNlbGYuc3RkaW4gYW5kIG5vdCBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQ6CiAgICAgICAgICAgICAgICAgIyBGbHVzaCBzdGRpbyBidWZmZXIuICBUaGlzIG1pZ2h0IGJsb2NrLCBpZiB0aGUgdXNlciBoYXMKICAgICAgICAgICAgICAgICAjIGJlZW4gd3JpdGluZyB0byAuc3RkaW4gaW4gYW4gdW5jb250cm9sbGVkIGZhc2hpb24uCiAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5mbHVzaCgpCkBAIC0xNDY3LDkgKzE1NDAsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5jbG9zZSgpCiAKICAgICAgICAgICAgIGlmIF9oYXNfcG9sbDoKLSAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX2NvbW11bmljYXRlX3dpdGhfcG9sbChpbnB1dCkKKyAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX2NvbW11bmljYXRlX3dpdGhfcG9sbChpbnB1dCwgZW5kdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnX3RpbWVvdXQpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gc2VsZi5fY29tbXVuaWNhdGVfd2l0aF9zZWxlY3QoaW5wdXQpCisgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBzZWxmLl9jb21tdW5pY2F0ZV93aXRoX3NlbGVjdChpbnB1dCwgZW5kdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdfdGltZW91dCkKKworICAgICAgICAgICAgc2VsZi53YWl0KHRpbWVvdXQ9c2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkpCiAKICAgICAgICAgICAgICMgQWxsIGRhdGEgZXhjaGFuZ2VkLiAgVHJhbnNsYXRlIGxpc3RzIGludG8gc3RyaW5ncy4KICAgICAgICAgICAgIGlmIHN0ZG91dCBpcyBub3QgTm9uZToKQEAgLTE0ODcsNjkgKzE1NjQsOTIgQEAKICAgICAgICAgICAgICAgICAgICAgc3RkZXJyID0gc2VsZi5fdHJhbnNsYXRlX25ld2xpbmVzKHN0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLmVuY29kaW5nKQogCi0gICAgICAgICAgICBzZWxmLndhaXQoKQogICAgICAgICAgICAgcmV0dXJuIChzdGRvdXQsIHN0ZGVycikKIAogCi0gICAgICAgIGRlZiBfY29tbXVuaWNhdGVfd2l0aF9wb2xsKHNlbGYsIGlucHV0KToKKyAgICAgICAgZGVmIF9zYXZlX2lucHV0KHNlbGYsIGlucHV0KToKKyAgICAgICAgICAgICMgVGhpcyBtZXRob2QgaXMgY2FsbGVkIGZyb20gdGhlIF9jb21tdW5pY2F0ZV93aXRoXyooKSBtZXRob2RzCisgICAgICAgICAgICAjIHNvIHRoYXQgaWYgd2UgdGltZSBvdXQgd2hpbGUgY29tbXVuaWNhdGluZywgd2UgY2FuIGNvbnRpbnVlCisgICAgICAgICAgICAjIHNlbmRpbmcgaW5wdXQgaWYgd2UgcmV0cnkuCisgICAgICAgICAgICBpZiBzZWxmLnN0ZGluIGFuZCBzZWxmLl9pbnB1dCBpcyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0X29mZnNldCA9IDAKKyAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dCA9IGlucHV0CisgICAgICAgICAgICAgICAgaWYgc2VsZi51bml2ZXJzYWxfbmV3bGluZXMgYW5kIGlucHV0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dCA9IHNlbGYuX2lucHV0LmVuY29kZShzZWxmLnN0ZGluLmVuY29kaW5nKQorCisKKyAgICAgICAgZGVmIF9jb21tdW5pY2F0ZV93aXRoX3BvbGwoc2VsZiwgaW5wdXQsIGVuZHRpbWUsIG9yaWdfdGltZW91dCk6CiAgICAgICAgICAgICBzdGRvdXQgPSBOb25lICMgUmV0dXJuCiAgICAgICAgICAgICBzdGRlcnIgPSBOb25lICMgUmV0dXJuCi0gICAgICAgICAgICBmZDJmaWxlID0ge30KLSAgICAgICAgICAgIGZkMm91dHB1dCA9IHt9CisKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5fZmQyZmlsZSA9IHt9CiAKICAgICAgICAgICAgIHBvbGxlciA9IHNlbGVjdC5wb2xsKCkKICAgICAgICAgICAgIGRlZiByZWdpc3Rlcl9hbmRfYXBwZW5kKGZpbGVfb2JqLCBldmVudG1hc2spOgogICAgICAgICAgICAgICAgIHBvbGxlci5yZWdpc3RlcihmaWxlX29iai5maWxlbm8oKSwgZXZlbnRtYXNrKQotICAgICAgICAgICAgICAgIGZkMmZpbGVbZmlsZV9vYmouZmlsZW5vKCldID0gZmlsZV9vYmoKKyAgICAgICAgICAgICAgICBzZWxmLl9mZDJmaWxlW2ZpbGVfb2JqLmZpbGVubygpXSA9IGZpbGVfb2JqCiAKICAgICAgICAgICAgIGRlZiBjbG9zZV91bnJlZ2lzdGVyX2FuZF9yZW1vdmUoZmQpOgogICAgICAgICAgICAgICAgIHBvbGxlci51bnJlZ2lzdGVyKGZkKQotICAgICAgICAgICAgICAgIGZkMmZpbGVbZmRdLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBmZDJmaWxlLnBvcChmZCkKKyAgICAgICAgICAgICAgICBzZWxmLl9mZDJmaWxlW2ZkXS5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fZmQyZmlsZS5wb3AoZmQpCiAKICAgICAgICAgICAgIGlmIHNlbGYuc3RkaW4gYW5kIGlucHV0OgogICAgICAgICAgICAgICAgIHJlZ2lzdGVyX2FuZF9hcHBlbmQoc2VsZi5zdGRpbiwgc2VsZWN0LlBPTExPVVQpCiAKKyAgICAgICAgICAgICMgT25seSBjcmVhdGUgdGhpcyBtYXBwaW5nIGlmIHdlIGhhdmVuJ3QgYWxyZWFkeS4KKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5fZmQyb3V0cHV0ID0ge30KKyAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmQyb3V0cHV0W3NlbGYuc3Rkb3V0LmZpbGVubygpXSA9IFtdCisgICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZkMm91dHB1dFtzZWxmLnN0ZGVyci5maWxlbm8oKV0gPSBbXQorCiAgICAgICAgICAgICBzZWxlY3RfUE9MTElOX1BPTExQUkkgPSBzZWxlY3QuUE9MTElOIHwgc2VsZWN0LlBPTExQUkkKICAgICAgICAgICAgIGlmIHNlbGYuc3Rkb3V0OgogICAgICAgICAgICAgICAgIHJlZ2lzdGVyX2FuZF9hcHBlbmQoc2VsZi5zdGRvdXQsIHNlbGVjdF9QT0xMSU5fUE9MTFBSSSkKLSAgICAgICAgICAgICAgICBmZDJvdXRwdXRbc2VsZi5zdGRvdXQuZmlsZW5vKCldID0gc3Rkb3V0ID0gW10KKyAgICAgICAgICAgICAgICBzdGRvdXQgPSBzZWxmLl9mZDJvdXRwdXRbc2VsZi5zdGRvdXQuZmlsZW5vKCldCiAgICAgICAgICAgICBpZiBzZWxmLnN0ZGVycjoKICAgICAgICAgICAgICAgICByZWdpc3Rlcl9hbmRfYXBwZW5kKHNlbGYuc3RkZXJyLCBzZWxlY3RfUE9MTElOX1BPTExQUkkpCi0gICAgICAgICAgICAgICAgZmQyb3V0cHV0W3NlbGYuc3RkZXJyLmZpbGVubygpXSA9IHN0ZGVyciA9IFtdCisgICAgICAgICAgICAgICAgc3RkZXJyID0gc2VsZi5fZmQyb3V0cHV0W3NlbGYuc3RkZXJyLmZpbGVubygpXQogCi0gICAgICAgICAgICBpbnB1dF9vZmZzZXQgPSAwCi0gICAgICAgICAgICBpZiBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lcyBhbmQgaXNpbnN0YW5jZShpbnB1dCwgc3RyKToKLSAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0LmVuY29kZShzZWxmLnN0ZGluLmVuY29kaW5nKQotICAgICAgICAgICAgd2hpbGUgZmQyZmlsZToKKyAgICAgICAgICAgIHNlbGYuX3NhdmVfaW5wdXQoaW5wdXQpCisKKyAgICAgICAgICAgIHdoaWxlIHNlbGYuX2ZkMmZpbGU6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IHNlbGYuX3JlbWFpbmluZ190aW1lKGVuZHRpbWUpCisgICAgICAgICAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZSBhbmQgdGltZW91dCA8IDA6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgb3JpZ190aW1lb3V0KQogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcmVhZHkgPSBwb2xsZXIucG9sbCgpCisgICAgICAgICAgICAgICAgICAgIHJlYWR5ID0gcG9sbGVyLnBvbGwodGltZW91dCkKICAgICAgICAgICAgICAgICBleGNlcHQgc2VsZWN0LmVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgIGlmIGUuYXJnc1swXSA9PSBlcnJuby5FSU5UUjoKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfdGltZW91dChlbmR0aW1lLCBvcmlnX3RpbWVvdXQpCiAKICAgICAgICAgICAgICAgICAjIFhYWCBSZXdyaXRlIHRoZXNlIHRvIHVzZSBub24tYmxvY2tpbmcgSS9PIG9uIHRoZQogICAgICAgICAgICAgICAgICMgZmlsZSBvYmplY3RzOyB0aGV5IGFyZSBubyBsb25nZXIgdXNpbmcgQyBzdGRpbyEKIAogICAgICAgICAgICAgICAgIGZvciBmZCwgbW9kZSBpbiByZWFkeToKICAgICAgICAgICAgICAgICAgICAgaWYgbW9kZSAmIHNlbGVjdC5QT0xMT1VUOgotICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBpbnB1dFtpbnB1dF9vZmZzZXQgOiBpbnB1dF9vZmZzZXQgKyBfUElQRV9CVUZdCisgICAgICAgICAgICAgICAgICAgICAgICBjaHVuayA9IHNlbGYuX2lucHV0W3NlbGYuX2lucHV0X29mZnNldCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0X29mZnNldCArIF9QSVBFX0JVRl0KICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9vZmZzZXQgKz0gb3Mud3JpdGUoZmQsIGNodW5rKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0X29mZnNldCArPSBvcy53cml0ZShmZCwgY2h1bmspCiAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRVBJUEU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX3VucmVnaXN0ZXJfYW5kX3JlbW92ZShmZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpbnB1dF9vZmZzZXQgPj0gbGVuKGlucHV0KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9pbnB1dF9vZmZzZXQgPj0gbGVuKHNlbGYuX2lucHV0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfdW5yZWdpc3Rlcl9hbmRfcmVtb3ZlKGZkKQogICAgICAgICAgICAgICAgICAgICBlbGlmIG1vZGUgJiBzZWxlY3RfUE9MTElOX1BPTExQUkk6CiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gb3MucmVhZChmZCwgNDA5NikKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX3VucmVnaXN0ZXJfYW5kX3JlbW92ZShmZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZkMm91dHB1dFtmZF0uYXBwZW5kKGRhdGEpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mZDJvdXRwdXRbZmRdLmFwcGVuZChkYXRhKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBJZ25vcmUgaGFuZyB1cCBvciBlcnJvcnMuCiAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV91bnJlZ2lzdGVyX2FuZF9yZW1vdmUoZmQpCkBAIC0xNTU3LDYzICsxNjU3LDgzIEBACiAgICAgICAgICAgICByZXR1cm4gKHN0ZG91dCwgc3RkZXJyKQogCiAKLSAgICAgICAgZGVmIF9jb21tdW5pY2F0ZV93aXRoX3NlbGVjdChzZWxmLCBpbnB1dCk6Ci0gICAgICAgICAgICByZWFkX3NldCA9IFtdCi0gICAgICAgICAgICB3cml0ZV9zZXQgPSBbXQorICAgICAgICBkZWYgX2NvbW11bmljYXRlX3dpdGhfc2VsZWN0KHNlbGYsIGlucHV0LCBlbmR0aW1lLCBvcmlnX3RpbWVvdXQpOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZDoKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX3NldCA9IFtdCisgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfc2V0ID0gW10KKyAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZGluIGFuZCBpbnB1dDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfc2V0LmFwcGVuZChzZWxmLnN0ZGluKQorICAgICAgICAgICAgICAgIGlmIHNlbGYuc3Rkb3V0OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX3NldC5hcHBlbmQoc2VsZi5zdGRvdXQpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfc2V0LmFwcGVuZChzZWxmLnN0ZGVycikKKworICAgICAgICAgICAgc2VsZi5fc2F2ZV9pbnB1dChpbnB1dCkKKwogICAgICAgICAgICAgc3Rkb3V0ID0gTm9uZSAjIFJldHVybgogICAgICAgICAgICAgc3RkZXJyID0gTm9uZSAjIFJldHVybgogCi0gICAgICAgICAgICBpZiBzZWxmLnN0ZGluIGFuZCBpbnB1dDoKLSAgICAgICAgICAgICAgICB3cml0ZV9zZXQuYXBwZW5kKHNlbGYuc3RkaW4pCiAgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dDoKLSAgICAgICAgICAgICAgICByZWFkX3NldC5hcHBlbmQoc2VsZi5zdGRvdXQpCi0gICAgICAgICAgICAgICAgc3Rkb3V0ID0gW10KKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zdGRvdXRfYnVmZiA9IFtdCisgICAgICAgICAgICAgICAgc3Rkb3V0ID0gc2VsZi5fc3Rkb3V0X2J1ZmYKICAgICAgICAgICAgIGlmIHNlbGYuc3RkZXJyOgotICAgICAgICAgICAgICAgIHJlYWRfc2V0LmFwcGVuZChzZWxmLnN0ZGVycikKLSAgICAgICAgICAgICAgICBzdGRlcnIgPSBbXQorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0ZGVycl9idWZmID0gW10KKyAgICAgICAgICAgICAgICBzdGRlcnIgPSBzZWxmLl9zdGRlcnJfYnVmZgogCi0gICAgICAgICAgICBpbnB1dF9vZmZzZXQgPSAwCi0gICAgICAgICAgICBpZiBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lcyBhbmQgaXNpbnN0YW5jZShpbnB1dCwgc3RyKToKLSAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0LmVuY29kZShzZWxmLnN0ZGluLmVuY29kaW5nKQotICAgICAgICAgICAgd2hpbGUgcmVhZF9zZXQgb3Igd3JpdGVfc2V0OgorICAgICAgICAgICAgd2hpbGUgc2VsZi5fcmVhZF9zZXQgb3Igc2VsZi5fd3JpdGVfc2V0OgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKQorICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmUgYW5kIHRpbWVvdXQgPCAwOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIG9yaWdfdGltZW91dCkKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJsaXN0LCB3bGlzdCwgeGxpc3QgPSBzZWxlY3Quc2VsZWN0KHJlYWRfc2V0LCB3cml0ZV9zZXQsIFtdKQorICAgICAgICAgICAgICAgICAgICAocmxpc3QsIHdsaXN0LCB4bGlzdCkgPSBcCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KHNlbGYuX3JlYWRfc2V0LCBzZWxmLl93cml0ZV9zZXQsIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0KQogICAgICAgICAgICAgICAgIGV4Y2VwdCBzZWxlY3QuZXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdID09IGVycm5vLkVJTlRSOgogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKIAorICAgICAgICAgICAgICAgICMgQWNjb3JkaW5nIHRvIHRoZSBkb2NzLCByZXR1cm5pbmcgdGhyZWUgZW1wdHkgbGlzdHMgaW5kaWNhdGVzCisgICAgICAgICAgICAgICAgIyB0aGF0IHRoZSB0aW1lb3V0IGV4cGlyZWQuCisgICAgICAgICAgICAgICAgaWYgbm90IChybGlzdCBvciB3bGlzdCBvciB4bGlzdCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgb3JpZ190aW1lb3V0KQorICAgICAgICAgICAgICAgICMgV2UgYWxzbyBjaGVjayB3aGF0IHRpbWUgaXQgaXMgb3Vyc2VsdmVzIGZvciBnb29kIG1lYXN1cmUuCisgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfdGltZW91dChlbmR0aW1lLCBvcmlnX3RpbWVvdXQpCisKICAgICAgICAgICAgICAgICAjIFhYWCBSZXdyaXRlIHRoZXNlIHRvIHVzZSBub24tYmxvY2tpbmcgSS9PIG9uIHRoZQogICAgICAgICAgICAgICAgICMgZmlsZSBvYmplY3RzOyB0aGV5IGFyZSBubyBsb25nZXIgdXNpbmcgQyBzdGRpbyEKIAogICAgICAgICAgICAgICAgIGlmIHNlbGYuc3RkaW4gaW4gd2xpc3Q6Ci0gICAgICAgICAgICAgICAgICAgIGNodW5rID0gaW5wdXRbaW5wdXRfb2Zmc2V0IDogaW5wdXRfb2Zmc2V0ICsgX1BJUEVfQlVGXQorICAgICAgICAgICAgICAgICAgICBjaHVuayA9IHNlbGYuX2lucHV0W3NlbGYuX2lucHV0X29mZnNldCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXRfb2Zmc2V0ICsgX1BJUEVfQlVGXQogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc193cml0dGVuID0gb3Mud3JpdGUoc2VsZi5zdGRpbi5maWxlbm8oKSwgY2h1bmspCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVQSVBFOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4uY2xvc2UoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlX3NldC5yZW1vdmUoc2VsZi5zdGRpbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9zZXQucmVtb3ZlKHNlbGYuc3RkaW4pCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9vZmZzZXQgKz0gYnl0ZXNfd3JpdHRlbgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaW5wdXRfb2Zmc2V0ID49IGxlbihpbnB1dCk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dF9vZmZzZXQgKz0gYnl0ZXNfd3JpdHRlbgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5faW5wdXRfb2Zmc2V0ID49IGxlbihzZWxmLl9pbnB1dCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVfc2V0LnJlbW92ZShzZWxmLnN0ZGluKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3NldC5yZW1vdmUoc2VsZi5zdGRpbikKIAogICAgICAgICAgICAgICAgIGlmIHNlbGYuc3Rkb3V0IGluIHJsaXN0OgogICAgICAgICAgICAgICAgICAgICBkYXRhID0gb3MucmVhZChzZWxmLnN0ZG91dC5maWxlbm8oKSwgMTAyNCkKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dC5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NldC5yZW1vdmUoc2VsZi5zdGRvdXQpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX3NldC5yZW1vdmUoc2VsZi5zdGRvdXQpCiAgICAgICAgICAgICAgICAgICAgIHN0ZG91dC5hcHBlbmQoZGF0YSkKIAogICAgICAgICAgICAgICAgIGlmIHNlbGYuc3RkZXJyIGluIHJsaXN0OgogICAgICAgICAgICAgICAgICAgICBkYXRhID0gb3MucmVhZChzZWxmLnN0ZGVyci5maWxlbm8oKSwgMTAyNCkKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyci5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NldC5yZW1vdmUoc2VsZi5zdGRlcnIpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX3NldC5yZW1vdmUoc2VsZi5zdGRlcnIpCiAgICAgICAgICAgICAgICAgICAgIHN0ZGVyci5hcHBlbmQoZGF0YSkKIAogICAgICAgICAgICAgcmV0dXJuIChzdGRvdXQsIHN0ZGVycikKQEAgLTE2MzMsNjggKzE3NTMsMyBAQAogICAgICAgICAgICAgIiIiS2lsbCB0aGUgcHJvY2VzcyB3aXRoIFNJR0tJTEwKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgc2VsZi5zZW5kX3NpZ25hbChzaWduYWwuU0lHS0lMTCkKLQotCi1kZWYgX2RlbW9fcG9zaXgoKToKLSAgICAjCi0gICAgIyBFeGFtcGxlIDE6IFNpbXBsZSByZWRpcmVjdGlvbjogR2V0IHByb2Nlc3MgbGlzdAotICAgICMKLSAgICBwbGlzdCA9IFBvcGVuKFsicHMiXSwgc3Rkb3V0PVBJUEUpLmNvbW11bmljYXRlKClbMF0KLSAgICBwcmludCgiUHJvY2VzcyBsaXN0OiIpCi0gICAgcHJpbnQocGxpc3QpCi0KLSAgICAjCi0gICAgIyBFeGFtcGxlIDI6IENoYW5nZSB1aWQgYmVmb3JlIGV4ZWN1dGluZyBjaGlsZAotICAgICMKLSAgICBpZiBvcy5nZXR1aWQoKSA9PSAwOgotICAgICAgICBwID0gUG9wZW4oWyJpZCJdLCBwcmVleGVjX2ZuPWxhbWJkYTogb3Muc2V0dWlkKDEwMCkpCi0gICAgICAgIHAud2FpdCgpCi0KLSAgICAjCi0gICAgIyBFeGFtcGxlIDM6IENvbm5lY3Rpbmcgc2V2ZXJhbCBzdWJwcm9jZXNzZXMKLSAgICAjCi0gICAgcHJpbnQoIkxvb2tpbmcgZm9yICdoZGEnLi4uIikKLSAgICBwMSA9IFBvcGVuKFsiZG1lc2ciXSwgc3Rkb3V0PVBJUEUpCi0gICAgcDIgPSBQb3BlbihbImdyZXAiLCAiaGRhIl0sIHN0ZGluPXAxLnN0ZG91dCwgc3Rkb3V0PVBJUEUpCi0gICAgcHJpbnQocmVwcihwMi5jb21tdW5pY2F0ZSgpWzBdKSkKLQotICAgICMKLSAgICAjIEV4YW1wbGUgNDogQ2F0Y2ggZXhlY3V0aW9uIGVycm9yCi0gICAgIwotICAgIHByaW50KCkKLSAgICBwcmludCgiVHJ5aW5nIGEgd2VpcmQgZmlsZS4uLiIpCi0gICAgdHJ5OgotICAgICAgICBwcmludChQb3BlbihbIi90aGlzL3BhdGgvZG9lcy9ub3QvZXhpc3QiXSkuY29tbXVuaWNhdGUoKSkKLSAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVOT0VOVDoKLSAgICAgICAgICAgIHByaW50KCJUaGUgZmlsZSBkaWRuJ3QgZXhpc3QuICBJIHRob3VnaHQgc28uLi4iKQotICAgICAgICAgICAgcHJpbnQoIkNoaWxkIHRyYWNlYmFjazoiKQotICAgICAgICAgICAgcHJpbnQoZS5jaGlsZF90cmFjZWJhY2spCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgiRXJyb3IiLCBlLmVycm5vKQotICAgIGVsc2U6Ci0gICAgICAgIHByaW50KCJHb3NoLiAgTm8gZXJyb3IuIiwgZmlsZT1zeXMuc3RkZXJyKQotCi0KLWRlZiBfZGVtb193aW5kb3dzKCk6Ci0gICAgIwotICAgICMgRXhhbXBsZSAxOiBDb25uZWN0aW5nIHNldmVyYWwgc3VicHJvY2Vzc2VzCi0gICAgIwotICAgIHByaW50KCJMb29raW5nIGZvciAnUFJPTVBUJyBpbiBzZXQgb3V0cHV0Li4uIikKLSAgICBwMSA9IFBvcGVuKCJzZXQiLCBzdGRvdXQ9UElQRSwgc2hlbGw9VHJ1ZSkKLSAgICBwMiA9IFBvcGVuKCdmaW5kICJQUk9NUFQiJywgc3RkaW49cDEuc3Rkb3V0LCBzdGRvdXQ9UElQRSkKLSAgICBwcmludChyZXByKHAyLmNvbW11bmljYXRlKClbMF0pKQotCi0gICAgIwotICAgICMgRXhhbXBsZSAyOiBTaW1wbGUgZXhlY3V0aW9uIG9mIHByb2dyYW0KLSAgICAjCi0gICAgcHJpbnQoIkV4ZWN1dGluZyBjYWxjLi4uIikKLSAgICBwID0gUG9wZW4oImNhbGMiKQotICAgIHAud2FpdCgpCi0KLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBpZiBtc3dpbmRvd3M6Ci0gICAgICAgIF9kZW1vX3dpbmRvd3MoKQotICAgIGVsc2U6Ci0gICAgICAgIF9kZW1vX3Bvc2l4KCkKZGlmZiAtLWdpdCBhL0xpYi9zeW1ib2wucHkgYi9MaWIvc3ltYm9sLnB5CmluZGV4IDY3OWU1YzguLjM0MTQzYjUgMTAwNzU1Ci0tLSBhL0xpYi9zeW1ib2wucHkKKysrIGIvTGliL3N5bWJvbC5weQpAQCAtOTEsNiArOTEsNyBAQAogY29tcF9pZiA9IDMzNAogZW5jb2RpbmdfZGVjbCA9IDMzNQogeWllbGRfZXhwciA9IDMzNgoreWllbGRfYXJnID0gMzM3CiAjLS1lbmQgY29uc3RhbnRzLS0KIAogc3ltX25hbWUgPSB7fQpAQCAtMTA0LDcgKzEwNSw3IEBACiAgICAgaW1wb3J0IHRva2VuCiAgICAgaWYgbGVuKHN5cy5hcmd2KSA9PSAxOgogICAgICAgICBzeXMuYXJndiA9IHN5cy5hcmd2ICsgWyJJbmNsdWRlL2dyYW1pbml0LmgiLCAiTGliL3N5bWJvbC5weSJdCi0gICAgdG9rZW4ubWFpbigpCisgICAgdG9rZW4uX21haW4oKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3N5c2NvbmZpZy5weSBiL0xpYi9zeXNjb25maWcucHkKaW5kZXggMjUzZTJlZi4uNzFkYTFkYiAxMDA2NDQKLS0tIGEvTGliL3N5c2NvbmZpZy5weQorKysgYi9MaWIvc3lzY29uZmlnLnB5CkBAIC0xLDggKzEsOCBAQAotIiIiUHJvdmlkZSBhY2Nlc3MgdG8gUHl0aG9uJ3MgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4KKyIiIkFjY2VzcyB0byBQeXRob24ncyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLiIiIgogCi0iIiIKLWltcG9ydCBzeXMKIGltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCiBmcm9tIG9zLnBhdGggaW1wb3J0IHBhcmRpciwgcmVhbHBhdGgKIAogX19hbGxfXyA9IFsKQEAgLTE3LDUwICsxNyw1MCBAQAogICAgICdnZXRfcHl0aG9uX3ZlcnNpb24nLAogICAgICdnZXRfc2NoZW1lX25hbWVzJywKICAgICAncGFyc2VfY29uZmlnX2gnLAotICAgIF0KK10KIAogX0lOU1RBTExfU0NIRU1FUyA9IHsKICAgICAncG9zaXhfcHJlZml4JzogewotICAgICAgICAnc3RkbGliJzogJ3tiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKKyAgICAgICAgJ3N0ZGxpYic6ICd7aW5zdGFsbGVkX2Jhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogICAgICAgICAncGxhdHN0ZGxpYic6ICd7cGxhdGJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgJ3BsYXRsaWInOiAne3BsYXRiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAogICAgICAgICAnaW5jbHVkZSc6Ci0gICAgICAgICAgICAne2Jhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9e2FiaWZsYWdzfScsCisgICAgICAgICAgICAne2luc3RhbGxlZF9iYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fXthYmlmbGFnc30nLAogICAgICAgICAncGxhdGluY2x1ZGUnOgotICAgICAgICAgICAgJ3twbGF0YmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH17YWJpZmxhZ3N9JywKKyAgICAgICAgICAgICd7aW5zdGFsbGVkX3BsYXRiYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fXthYmlmbGFnc30nLAogICAgICAgICAnc2NyaXB0cyc6ICd7YmFzZX0vYmluJywKICAgICAgICAgJ2RhdGEnOiAne2Jhc2V9JywKICAgICAgICAgfSwKICAgICAncG9zaXhfaG9tZSc6IHsKLSAgICAgICAgJ3N0ZGxpYic6ICd7YmFzZX0vbGliL3B5dGhvbicsCisgICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS9saWIvcHl0aG9uJywKICAgICAgICAgJ3BsYXRzdGRsaWInOiAne2Jhc2V9L2xpYi9weXRob24nLAogICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vbGliL3B5dGhvbicsCiAgICAgICAgICdwbGF0bGliJzogJ3tiYXNlfS9saWIvcHl0aG9uJywKLSAgICAgICAgJ2luY2x1ZGUnOiAne2Jhc2V9L2luY2x1ZGUvcHl0aG9uJywKLSAgICAgICAgJ3BsYXRpbmNsdWRlJzogJ3tiYXNlfS9pbmNsdWRlL3B5dGhvbicsCisgICAgICAgICdpbmNsdWRlJzogJ3tpbnN0YWxsZWRfYmFzZX0vaW5jbHVkZS9weXRob24nLAorICAgICAgICAncGxhdGluY2x1ZGUnOiAne2luc3RhbGxlZF9iYXNlfS9pbmNsdWRlL3B5dGhvbicsCiAgICAgICAgICdzY3JpcHRzJzogJ3tiYXNlfS9iaW4nLAotICAgICAgICAnZGF0YScgICA6ICd7YmFzZX0nLAorICAgICAgICAnZGF0YSc6ICd7YmFzZX0nLAogICAgICAgICB9LAogICAgICdudCc6IHsKLSAgICAgICAgJ3N0ZGxpYic6ICd7YmFzZX0vTGliJywKKyAgICAgICAgJ3N0ZGxpYic6ICd7aW5zdGFsbGVkX2Jhc2V9L0xpYicsCiAgICAgICAgICdwbGF0c3RkbGliJzogJ3tiYXNlfS9MaWInLAogICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vTGliL3NpdGUtcGFja2FnZXMnLAogICAgICAgICAncGxhdGxpYic6ICd7YmFzZX0vTGliL3NpdGUtcGFja2FnZXMnLAotICAgICAgICAnaW5jbHVkZSc6ICd7YmFzZX0vSW5jbHVkZScsCi0gICAgICAgICdwbGF0aW5jbHVkZSc6ICd7YmFzZX0vSW5jbHVkZScsCisgICAgICAgICdpbmNsdWRlJzogJ3tpbnN0YWxsZWRfYmFzZX0vSW5jbHVkZScsCisgICAgICAgICdwbGF0aW5jbHVkZSc6ICd7aW5zdGFsbGVkX2Jhc2V9L0luY2x1ZGUnLAogICAgICAgICAnc2NyaXB0cyc6ICd7YmFzZX0vU2NyaXB0cycsCi0gICAgICAgICdkYXRhJyAgIDogJ3tiYXNlfScsCisgICAgICAgICdkYXRhJzogJ3tiYXNlfScsCiAgICAgICAgIH0sCiAgICAgJ29zMic6IHsKLSAgICAgICAgJ3N0ZGxpYic6ICd7YmFzZX0vTGliJywKKyAgICAgICAgJ3N0ZGxpYic6ICd7aW5zdGFsbGVkX2Jhc2V9L0xpYicsCiAgICAgICAgICdwbGF0c3RkbGliJzogJ3tiYXNlfS9MaWInLAogICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vTGliL3NpdGUtcGFja2FnZXMnLAogICAgICAgICAncGxhdGxpYic6ICd7YmFzZX0vTGliL3NpdGUtcGFja2FnZXMnLAotICAgICAgICAnaW5jbHVkZSc6ICd7YmFzZX0vSW5jbHVkZScsCi0gICAgICAgICdwbGF0aW5jbHVkZSc6ICd7YmFzZX0vSW5jbHVkZScsCisgICAgICAgICdpbmNsdWRlJzogJ3tpbnN0YWxsZWRfYmFzZX0vSW5jbHVkZScsCisgICAgICAgICdwbGF0aW5jbHVkZSc6ICd7aW5zdGFsbGVkX2Jhc2V9L0luY2x1ZGUnLAogICAgICAgICAnc2NyaXB0cyc6ICd7YmFzZX0vU2NyaXB0cycsCi0gICAgICAgICdkYXRhJyAgIDogJ3tiYXNlfScsCisgICAgICAgICdkYXRhJzogJ3tiYXNlfScsCiAgICAgICAgIH0sCiAgICAgJ29zMl9ob21lJzogewogICAgICAgICAnc3RkbGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCkBAIC02OSw3ICs2OSw3IEBACiAgICAgICAgICdwbGF0bGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgJ2luY2x1ZGUnOiAne3VzZXJiYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCiAgICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vYmluJywKLSAgICAgICAgJ2RhdGEnICAgOiAne3VzZXJiYXNlfScsCisgICAgICAgICdkYXRhJzogJ3t1c2VyYmFzZX0nLAogICAgICAgICB9LAogICAgICdudF91c2VyJzogewogICAgICAgICAnc3RkbGliJzogJ3t1c2VyYmFzZX0vUHl0aG9ue3B5X3ZlcnNpb25fbm9kb3R9JywKQEAgLTc4LDcgKzc4LDcgQEAKICAgICAgICAgJ3BsYXRsaWInOiAne3VzZXJiYXNlfS9QeXRob257cHlfdmVyc2lvbl9ub2RvdH0vc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICdpbmNsdWRlJzogJ3t1c2VyYmFzZX0vUHl0aG9ue3B5X3ZlcnNpb25fbm9kb3R9L0luY2x1ZGUnLAogICAgICAgICAnc2NyaXB0cyc6ICd7dXNlcmJhc2V9L1NjcmlwdHMnLAotICAgICAgICAnZGF0YScgICA6ICd7dXNlcmJhc2V9JywKKyAgICAgICAgJ2RhdGEnOiAne3VzZXJiYXNlfScsCiAgICAgICAgIH0sCiAgICAgJ3Bvc2l4X3VzZXInOiB7CiAgICAgICAgICdzdGRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKQEAgLTg3LDcgKzg3LDcgQEAKICAgICAgICAgJ3BsYXRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAogICAgICAgICAnaW5jbHVkZSc6ICd7dXNlcmJhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKICAgICAgICAgJ3NjcmlwdHMnOiAne3VzZXJiYXNlfS9iaW4nLAotICAgICAgICAnZGF0YScgICA6ICd7dXNlcmJhc2V9JywKKyAgICAgICAgJ2RhdGEnOiAne3VzZXJiYXNlfScsCiAgICAgICAgIH0sCiAgICAgJ29zeF9mcmFtZXdvcmtfdXNlcic6IHsKICAgICAgICAgJ3N0ZGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob24nLApAQCAtOTYsMjAgKzk2LDI2IEBACiAgICAgICAgICdwbGF0bGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbi9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgJ2luY2x1ZGUnOiAne3VzZXJiYXNlfS9pbmNsdWRlJywKICAgICAgICAgJ3NjcmlwdHMnOiAne3VzZXJiYXNlfS9iaW4nLAotICAgICAgICAnZGF0YScgICA6ICd7dXNlcmJhc2V9JywKKyAgICAgICAgJ2RhdGEnOiAne3VzZXJiYXNlfScsCiAgICAgICAgIH0sCiAgICAgfQogCiBfU0NIRU1FX0tFWVMgPSAoJ3N0ZGxpYicsICdwbGF0c3RkbGliJywgJ3B1cmVsaWInLCAncGxhdGxpYicsICdpbmNsdWRlJywKICAgICAgICAgICAgICAgICAnc2NyaXB0cycsICdkYXRhJykKKworICMgRklYTUUgZG9uJ3QgcmVseSBvbiBzeXMudmVyc2lvbiBoZXJlLCBpdHMgZm9ybWF0IGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbAorICMgb2YgQ1B5dGhvbiwgdXNlIHN5cy52ZXJzaW9uX2luZm8gb3Igc3lzLmhleHZlcnNpb24KIF9QWV9WRVJTSU9OID0gc3lzLnZlcnNpb24uc3BsaXQoKVswXQogX1BZX1ZFUlNJT05fU0hPUlQgPSBzeXMudmVyc2lvbls6M10KIF9QWV9WRVJTSU9OX1NIT1JUX05PX0RPVCA9IF9QWV9WRVJTSU9OWzBdICsgX1BZX1ZFUlNJT05bMl0KIF9QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5wcmVmaXgpCitfQkFTRV9QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5iYXNlX3ByZWZpeCkKIF9FWEVDX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmV4ZWNfcHJlZml4KQorX0JBU0VfRVhFQ19QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5iYXNlX2V4ZWNfcHJlZml4KQogX0NPTkZJR19WQVJTID0gTm9uZQogX1VTRVJfQkFTRSA9IE5vbmUKIAorCiBkZWYgX3NhZmVfcmVhbHBhdGgocGF0aCk6CiAgICAgdHJ5OgogICAgICAgICByZXR1cm4gcmVhbHBhdGgocGF0aCkKQEAgLTEzMiwxOSArMTM4LDM1IEBACiBpZiBvcy5uYW1lID09ICJudCIgYW5kICJcXHBjYnVpbGRcXGFtZDY0IiBpbiBfUFJPSkVDVF9CQVNFWy0xNDpdLmxvd2VyKCk6CiAgICAgX1BST0pFQ1RfQkFTRSA9IF9zYWZlX3JlYWxwYXRoKG9zLnBhdGguam9pbihfUFJPSkVDVF9CQVNFLCBwYXJkaXIsIHBhcmRpcikpCiAKLWRlZiBpc19weXRob25fYnVpbGQoKToKKyMgc2V0IGZvciBjcm9zcyBidWlsZHMKK2lmICJfUFlUSE9OX1BST0pFQ1RfQkFTRSIgaW4gb3MuZW52aXJvbjoKKyAgICBfUFJPSkVDVF9CQVNFID0gX3NhZmVfcmVhbHBhdGgob3MuZW52aXJvblsiX1BZVEhPTl9QUk9KRUNUX0JBU0UiXSkKKworZGVmIF9pc19weXRob25fc291cmNlX2RpcihkKToKICAgICBmb3IgZm4gaW4gKCJTZXR1cC5kaXN0IiwgIlNldHVwLmxvY2FsIik6Ci0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihfUFJPSkVDVF9CQVNFLCAiTW9kdWxlcyIsIGZuKSk6CisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkLCAiTW9kdWxlcyIsIGZuKSk6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgIHJldHVybiBGYWxzZQogCi1fUFlUSE9OX0JVSUxEID0gaXNfcHl0aG9uX2J1aWxkKCkKK19zeXNfaG9tZSA9IGdldGF0dHIoc3lzLCAnX2hvbWUnLCBOb25lKQoraWYgX3N5c19ob21lIGFuZCBvcy5uYW1lID09ICdudCcgYW5kIFwKKyAgICBfc3lzX2hvbWUubG93ZXIoKS5lbmRzd2l0aCgoJ3BjYnVpbGQnLCAncGNidWlsZFxcYW1kNjQnKSk6CisgICAgX3N5c19ob21lID0gb3MucGF0aC5kaXJuYW1lKF9zeXNfaG9tZSkKKyAgICBpZiBfc3lzX2hvbWUuZW5kc3dpdGgoJ3BjYnVpbGQnKTogICAjIG11c3QgYmUgYW1kNjQKKyAgICAgICAgX3N5c19ob21lID0gb3MucGF0aC5kaXJuYW1lKF9zeXNfaG9tZSkKK2RlZiBpc19weXRob25fYnVpbGQoY2hlY2tfaG9tZT1GYWxzZSk6CisgICAgaWYgY2hlY2tfaG9tZSBhbmQgX3N5c19ob21lOgorICAgICAgICByZXR1cm4gX2lzX3B5dGhvbl9zb3VyY2VfZGlyKF9zeXNfaG9tZSkKKyAgICByZXR1cm4gX2lzX3B5dGhvbl9zb3VyY2VfZGlyKF9QUk9KRUNUX0JBU0UpCisKK19QWVRIT05fQlVJTEQgPSBpc19weXRob25fYnVpbGQoVHJ1ZSkKIAogaWYgX1BZVEhPTl9CVUlMRDoKICAgICBmb3Igc2NoZW1lIGluICgncG9zaXhfcHJlZml4JywgJ3Bvc2l4X2hvbWUnKToKICAgICAgICAgX0lOU1RBTExfU0NIRU1FU1tzY2hlbWVdWydpbmNsdWRlJ10gPSAne3NyY2Rpcn0vSW5jbHVkZScKICAgICAgICAgX0lOU1RBTExfU0NIRU1FU1tzY2hlbWVdWydwbGF0aW5jbHVkZSddID0gJ3twcm9qZWN0YmFzZX0vLicKIAorCiBkZWYgX3N1YnN0X3ZhcnMocywgbG9jYWxfdmFycyk6CiAgICAgdHJ5OgogICAgICAgICByZXR1cm4gcy5mb3JtYXQoKipsb2NhbF92YXJzKQpAQCAtMTYxLDYgKzE4Myw3IEBACiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICB0YXJnZXRfZGljdFtrZXldID0gdmFsdWUKIAorCiBkZWYgX2V4cGFuZF92YXJzKHNjaGVtZSwgdmFycyk6CiAgICAgcmVzID0ge30KICAgICBpZiB2YXJzIGlzIE5vbmU6CkBAIC0xNzMsMjkgKzE5Niw0MSBAQAogICAgICAgICByZXNba2V5XSA9IG9zLnBhdGgubm9ybXBhdGgoX3N1YnN0X3ZhcnModmFsdWUsIHZhcnMpKQogICAgIHJldHVybiByZXMKIAorCiBkZWYgX2dldF9kZWZhdWx0X3NjaGVtZSgpOgogICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKICAgICAgICAgIyB0aGUgZGVmYXVsdCBzY2hlbWUgZm9yIHBvc2l4IGlzIHBvc2l4X3ByZWZpeAogICAgICAgICByZXR1cm4gJ3Bvc2l4X3ByZWZpeCcKICAgICByZXR1cm4gb3MubmFtZQogCisKIGRlZiBfZ2V0dXNlcmJhc2UoKToKICAgICBlbnZfYmFzZSA9IG9zLmVudmlyb24uZ2V0KCJQWVRIT05VU0VSQkFTRSIsIE5vbmUpCisKICAgICBkZWYgam9pbnVzZXIoKmFyZ3MpOgogICAgICAgICByZXR1cm4gb3MucGF0aC5leHBhbmR1c2VyKG9zLnBhdGguam9pbigqYXJncykpCiAKICAgICAjIHdoYXQgYWJvdXQgJ29zMmVteCcsICdyaXNjb3MnID8KICAgICBpZiBvcy5uYW1lID09ICJudCI6CiAgICAgICAgIGJhc2UgPSBvcy5lbnZpcm9uLmdldCgiQVBQREFUQSIpIG9yICJ+IgotICAgICAgICByZXR1cm4gZW52X2Jhc2UgaWYgZW52X2Jhc2UgZWxzZSBqb2ludXNlcihiYXNlLCAiUHl0aG9uIikKKyAgICAgICAgaWYgZW52X2Jhc2U6CisgICAgICAgICAgICByZXR1cm4gZW52X2Jhc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBqb2ludXNlcihiYXNlLCAiUHl0aG9uIikKIAogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIjoKICAgICAgICAgZnJhbWV3b3JrID0gZ2V0X2NvbmZpZ192YXIoIlBZVEhPTkZSQU1FV09SSyIpCiAgICAgICAgIGlmIGZyYW1ld29yazoKLSAgICAgICAgICAgIHJldHVybiBlbnZfYmFzZSBpZiBlbnZfYmFzZSBlbHNlIGpvaW51c2VyKCJ+IiwgIkxpYnJhcnkiLCBmcmFtZXdvcmssICIlZC4lZCIlKAotICAgICAgICAgICAgICAgIHN5cy52ZXJzaW9uX2luZm9bOjJdKSkKKyAgICAgICAgICAgIGlmIGVudl9iYXNlOgorICAgICAgICAgICAgICAgIHJldHVybiBlbnZfYmFzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gam9pbnVzZXIoIn4iLCAiTGlicmFyeSIsIGZyYW1ld29yaywgIiVkLiVkIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy52ZXJzaW9uX2luZm9bOjJdKQogCi0gICAgcmV0dXJuIGVudl9iYXNlIGlmIGVudl9iYXNlIGVsc2Ugam9pbnVzZXIoIn4iLCAiLmxvY2FsIikKKyAgICBpZiBlbnZfYmFzZToKKyAgICAgICAgcmV0dXJuIGVudl9iYXNlCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGpvaW51c2VyKCJ+IiwgIi5sb2NhbCIpCiAKIAogZGVmIF9wYXJzZV9tYWtlZmlsZShmaWxlbmFtZSwgdmFycz1Ob25lKToKQEAgLTIwNSw3ICsyNDAsNiBAQAogICAgIG9wdGlvbmFsIGRpY3Rpb25hcnkgaXMgcGFzc2VkIGluIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQsIGl0IGlzCiAgICAgdXNlZCBpbnN0ZWFkIG9mIGEgbmV3IGRpY3Rpb25hcnkuCiAgICAgIiIiCi0gICAgaW1wb3J0IHJlCiAgICAgIyBSZWdleGVzIG5lZWRlZCBmb3IgcGFyc2luZyBNYWtlZmlsZSAoYW5kIHNpbWlsYXIgc3ludGF4ZXMsCiAgICAgIyBsaWtlIG9sZC1zdHlsZSBTZXR1cCBmaWxlcykuCiAgICAgX3ZhcmlhYmxlX3J4ID0gcmUuY29tcGlsZSgiKFthLXpBLVpdW2EtekEtWjAtOV9dKylccyo9XHMqKC4qKSIpCkBAIC0yNjcsNyArMzAxLDggQEAKICAgICAgICAgICAgICAgICAgICAgaXRlbSA9IG9zLmVudmlyb25bbl0KIAogICAgICAgICAgICAgICAgIGVsaWYgbiBpbiByZW5hbWVkX3ZhcmlhYmxlczoKLSAgICAgICAgICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdQWV8nKSBhbmQgbmFtZVszOl0gaW4gcmVuYW1lZF92YXJpYWJsZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIChuYW1lLnN0YXJ0c3dpdGgoJ1BZXycpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZVszOl0gaW4gcmVuYW1lZF92YXJpYWJsZXMpOgogICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9ICIiCiAKICAgICAgICAgICAgICAgICAgICAgZWxpZiAnUFlfJyArIG4gaW4gbm90ZG9uZToKQEAgLTMwMCw3ICszMzUsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIGRvbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmVbbmFtZV0gPSB2YWx1ZQogCi0KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBib2d1cyB2YXJpYWJsZSByZWZlcmVuY2UgKGUuZy4gInByZWZpeD0kL29wdC9weXRob24iKTsKICAgICAgICAgICAgICAgICAjIGp1c3QgZHJvcCBpdCBzaW5jZSB3ZSBjYW4ndCBkZWFsCkBAIC0zMjAsMTQgKzM1NCwxNyBAQAogZGVmIGdldF9tYWtlZmlsZV9maWxlbmFtZSgpOgogICAgICIiIlJldHVybiB0aGUgcGF0aCBvZiB0aGUgTWFrZWZpbGUuIiIiCiAgICAgaWYgX1BZVEhPTl9CVUlMRDoKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihfUFJPSkVDVF9CQVNFLCAiTWFrZWZpbGUiKQotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oZ2V0X3BhdGgoJ3N0ZGxpYicpLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmZpZy17fXt9Jy5mb3JtYXQoX1BZX1ZFUlNJT05fU0hPUlQsIHN5cy5hYmlmbGFncyksCi0gICAgICAgICAgICAgICAgICAgICAgICAnTWFrZWZpbGUnKQorICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKF9zeXNfaG9tZSBvciBfUFJPSkVDVF9CQVNFLCAiTWFrZWZpbGUiKQorICAgIGlmIGhhc2F0dHIoc3lzLCAnYWJpZmxhZ3MnKToKKyAgICAgICAgY29uZmlnX2Rpcl9uYW1lID0gJ2NvbmZpZy0lcyVzJyAlIChfUFlfVkVSU0lPTl9TSE9SVCwgc3lzLmFiaWZsYWdzKQorICAgIGVsc2U6CisgICAgICAgIGNvbmZpZ19kaXJfbmFtZSA9ICdjb25maWcnCisgICAgcmV0dXJuIG9zLnBhdGguam9pbihnZXRfcGF0aCgnc3RkbGliJyksIGNvbmZpZ19kaXJfbmFtZSwgJ01ha2VmaWxlJykKIAotCi1kZWYgX2luaXRfcG9zaXgodmFycyk6Ci0gICAgIiIiSW5pdGlhbGl6ZSB0aGUgbW9kdWxlIGFzIGFwcHJvcHJpYXRlIGZvciBQT1NJWCBzeXN0ZW1zLiIiIgorZGVmIF9nZW5lcmF0ZV9wb3NpeF92YXJzKCk6CisgICAgIiIiR2VuZXJhdGUgdGhlIFB5dGhvbiBtb2R1bGUgY29udGFpbmluZyBidWlsZC10aW1lIHZhcmlhYmxlcy4iIiIKKyAgICBpbXBvcnQgcHByaW50CisgICAgdmFycyA9IHt9CiAgICAgIyBsb2FkIHRoZSBpbnN0YWxsZWQgTWFrZWZpbGU6CiAgICAgbWFrZWZpbGUgPSBnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKQogICAgIHRyeToKQEAgLTM1Myw2ICszOTAsNDYgQEAKICAgICBpZiBfUFlUSE9OX0JVSUxEOgogICAgICAgICB2YXJzWydMRFNIQVJFRCddID0gdmFyc1snQkxEU0hBUkVEJ10KIAorICAgICMgVGhlcmUncyBhIGNoaWNrZW4tYW5kLWVnZyBzaXR1YXRpb24gb24gT1MgWCB3aXRoIHJlZ2FyZHMgdG8gdGhlCisgICAgIyBfc3lzY29uZmlnZGF0YSBtb2R1bGUgYWZ0ZXIgdGhlIGNoYW5nZXMgaW50cm9kdWNlZCBieSAjMTUyOTg6CisgICAgIyBnZXRfY29uZmlnX3ZhcnMoKSBpcyBjYWxsZWQgYnkgZ2V0X3BsYXRmb3JtKCkgYXMgcGFydCBvZiB0aGUKKyAgICAjIGBtYWtlIHB5YnVpbGRkaXIudHh0YCB0YXJnZXQgLS0gd2hpY2ggaXMgYSBwcmVjdXJzb3IgdG8gdGhlCisgICAgIyBfc3lzY29uZmlnZGF0YS5weSBtb2R1bGUgYmVpbmcgY29uc3RydWN0ZWQuICBVbmZvcnR1bmF0ZWx5LAorICAgICMgZ2V0X2NvbmZpZ192YXJzKCkgZXZlbnR1YWxseSBjYWxscyBfaW5pdF9wb3NpeCgpLCB3aGljaCBhdHRlbXB0cworICAgICMgdG8gaW1wb3J0IF9zeXNjb25maWdkYXRhLCB3aGljaCB3ZSB3b24ndCBoYXZlIGJ1aWx0IHlldC4gIEluIG9yZGVyCisgICAgIyBmb3IgX2luaXRfcG9zaXgoKSB0byB3b3JrLCBpZiB3ZSdyZSBvbiBEYXJ3aW4sIGp1c3QgbW9jayB1cCB0aGUKKyAgICAjIF9zeXNjb25maWdkYXRhIG1vZHVsZSBtYW51YWxseSBhbmQgcG9wdWxhdGUgaXQgd2l0aCB0aGUgYnVpbGQgdmFycy4KKyAgICAjIFRoaXMgaXMgbW9yZSB0aGFuIHN1ZmZpY2llbnQgZm9yIGVuc3VyaW5nIHRoZSBzdWJzZXF1ZW50IGNhbGwgdG8KKyAgICAjIGdldF9wbGF0Zm9ybSgpIHN1Y2NlZWRzLgorICAgIG5hbWUgPSAnX3N5c2NvbmZpZ2RhdGEnCisgICAgaWYgJ2RhcndpbicgaW4gc3lzLnBsYXRmb3JtOgorICAgICAgICBpbXBvcnQgaW1wCisgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKG5hbWUpCisgICAgICAgIG1vZHVsZS5idWlsZF90aW1lX3ZhcnMgPSB2YXJzCisgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCisKKyAgICBweWJ1aWxkZGlyID0gJ2J1aWxkL2xpYi4lcy0lcycgJSAoZ2V0X3BsYXRmb3JtKCksIHN5cy52ZXJzaW9uWzozXSkKKyAgICBpZiBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKKyAgICAgICAgcHlidWlsZGRpciArPSAnLXB5ZGVidWcnCisgICAgb3MubWFrZWRpcnMocHlidWlsZGRpciwgZXhpc3Rfb2s9VHJ1ZSkKKyAgICBkZXN0ZmlsZSA9IG9zLnBhdGguam9pbihweWJ1aWxkZGlyLCBuYW1lICsgJy5weScpCisKKyAgICB3aXRoIG9wZW4oZGVzdGZpbGUsICd3JywgZW5jb2Rpbmc9J3V0ZjgnKSBhcyBmOgorICAgICAgICBmLndyaXRlKCcjIHN5c3RlbSBjb25maWd1cmF0aW9uIGdlbmVyYXRlZCBhbmQgdXNlZCBieScKKyAgICAgICAgICAgICAgICAnIHRoZSBzeXNjb25maWcgbW9kdWxlXG4nKQorICAgICAgICBmLndyaXRlKCdidWlsZF90aW1lX3ZhcnMgPSAnKQorICAgICAgICBwcHJpbnQucHByaW50KHZhcnMsIHN0cmVhbT1mKQorCisgICAgIyBDcmVhdGUgZmlsZSB1c2VkIGZvciBzeXMucGF0aCBmaXh1cCAtLSBzZWUgTW9kdWxlcy9nZXRwYXRoLmMKKyAgICB3aXRoIG9wZW4oJ3B5YnVpbGRkaXIudHh0JywgJ3cnLCBlbmNvZGluZz0nYXNjaWknKSBhcyBmOgorICAgICAgICBmLndyaXRlKHB5YnVpbGRkaXIpCisKK2RlZiBfaW5pdF9wb3NpeCh2YXJzKToKKyAgICAiIiJJbml0aWFsaXplIHRoZSBtb2R1bGUgYXMgYXBwcm9wcmlhdGUgZm9yIFBPU0lYIHN5c3RlbXMuIiIiCisgICAgIyBfc3lzY29uZmlnZGF0YSBpcyBnZW5lcmF0ZWQgYXQgYnVpbGQgdGltZSwgc2VlIF9nZW5lcmF0ZV9wb3NpeF92YXJzKCkKKyAgICBmcm9tIF9zeXNjb25maWdkYXRhIGltcG9ydCBidWlsZF90aW1lX3ZhcnMKKyAgICB2YXJzLnVwZGF0ZShidWlsZF90aW1lX3ZhcnMpCisKIGRlZiBfaW5pdF9ub25fcG9zaXgodmFycyk6CiAgICAgIiIiSW5pdGlhbGl6ZSB0aGUgbW9kdWxlIGFzIGFwcHJvcHJpYXRlIGZvciBOVCIiIgogICAgICMgc2V0IGJhc2ljIGluc3RhbGwgZGlyZWN0b3JpZXMKQEAgLTM3Niw3ICs0NTMsNiBAQAogICAgIG9wdGlvbmFsIGRpY3Rpb25hcnkgaXMgcGFzc2VkIGluIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQsIGl0IGlzCiAgICAgdXNlZCBpbnN0ZWFkIG9mIGEgbmV3IGRpY3Rpb25hcnkuCiAgICAgIiIiCi0gICAgaW1wb3J0IHJlCiAgICAgaWYgdmFycyBpcyBOb25lOgogICAgICAgICB2YXJzID0ge30KICAgICBkZWZpbmVfcnggPSByZS5jb21waWxlKCIjZGVmaW5lIChbQS1aXVtBLVphLXowLTlfXSspICguKilcbiIpCkBAIC0zODksOCArNDY1LDEwIEBACiAgICAgICAgIG0gPSBkZWZpbmVfcngubWF0Y2gobGluZSkKICAgICAgICAgaWYgbToKICAgICAgICAgICAgIG4sIHYgPSBtLmdyb3VwKDEsIDIpCi0gICAgICAgICAgICB0cnk6IHYgPSBpbnQodikKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOiBwYXNzCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdiA9IGludCh2KQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgdmFyc1tuXSA9IHYKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG0gPSB1bmRlZl9yeC5tYXRjaChsaW5lKQpAQCAtMzk4LDI3ICs0NzYsMjkgQEAKICAgICAgICAgICAgICAgICB2YXJzW20uZ3JvdXAoMSldID0gMAogICAgIHJldHVybiB2YXJzCiAKKwogZGVmIGdldF9jb25maWdfaF9maWxlbmFtZSgpOgogICAgICIiIlJldHVybiB0aGUgcGF0aCBvZiBweWNvbmZpZy5oLiIiIgogICAgIGlmIF9QWVRIT05fQlVJTEQ6CiAgICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKLSAgICAgICAgICAgIGluY19kaXIgPSBvcy5wYXRoLmpvaW4oX1BST0pFQ1RfQkFTRSwgIlBDIikKKyAgICAgICAgICAgIGluY19kaXIgPSBvcy5wYXRoLmpvaW4oX3N5c19ob21lIG9yIF9QUk9KRUNUX0JBU0UsICJQQyIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpbmNfZGlyID0gX1BST0pFQ1RfQkFTRQorICAgICAgICAgICAgaW5jX2RpciA9IF9zeXNfaG9tZSBvciBfUFJPSkVDVF9CQVNFCiAgICAgZWxzZToKICAgICAgICAgaW5jX2RpciA9IGdldF9wYXRoKCdwbGF0aW5jbHVkZScpCiAgICAgcmV0dXJuIG9zLnBhdGguam9pbihpbmNfZGlyLCAncHljb25maWcuaCcpCiAKKwogZGVmIGdldF9zY2hlbWVfbmFtZXMoKToKICAgICAiIiJSZXR1cm4gYSB0dXBsZSBjb250YWluaW5nIHRoZSBzY2hlbWVzIG5hbWVzLiIiIgotICAgIHNjaGVtZXMgPSBsaXN0KF9JTlNUQUxMX1NDSEVNRVMua2V5cygpKQotICAgIHNjaGVtZXMuc29ydCgpCi0gICAgcmV0dXJuIHR1cGxlKHNjaGVtZXMpCisgICAgcmV0dXJuIHR1cGxlKHNvcnRlZChfSU5TVEFMTF9TQ0hFTUVTKSkKKwogCiBkZWYgZ2V0X3BhdGhfbmFtZXMoKToKICAgICAiIiJSZXR1cm4gYSB0dXBsZSBjb250YWluaW5nIHRoZSBwYXRocyBuYW1lcy4iIiIKICAgICByZXR1cm4gX1NDSEVNRV9LRVlTCiAKKwogZGVmIGdldF9wYXRocyhzY2hlbWU9X2dldF9kZWZhdWx0X3NjaGVtZSgpLCB2YXJzPU5vbmUsIGV4cGFuZD1UcnVlKToKICAgICAiIiJSZXR1cm4gYSBtYXBwaW5nIGNvbnRhaW5pbmcgYW4gaW5zdGFsbCBzY2hlbWUuCiAKQEAgLTQzMCw2ICs1MTAsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBfSU5TVEFMTF9TQ0hFTUVTW3NjaGVtZV0KIAorCiBkZWYgZ2V0X3BhdGgobmFtZSwgc2NoZW1lPV9nZXRfZGVmYXVsdF9zY2hlbWUoKSwgdmFycz1Ob25lLCBleHBhbmQ9VHJ1ZSk6CiAgICAgIiIiUmV0dXJuIGEgcGF0aCBjb3JyZXNwb25kaW5nIHRvIHRoZSBzY2hlbWUuCiAKQEAgLTQzNywxNyArNTE4LDE3IEBACiAgICAgIiIiCiAgICAgcmV0dXJuIGdldF9wYXRocyhzY2hlbWUsIHZhcnMsIGV4cGFuZClbbmFtZV0KIAorCiBkZWYgZ2V0X2NvbmZpZ192YXJzKCphcmdzKToKICAgICAiIiJXaXRoIG5vIGFyZ3VtZW50cywgcmV0dXJuIGEgZGljdGlvbmFyeSBvZiBhbGwgY29uZmlndXJhdGlvbgogICAgIHZhcmlhYmxlcyByZWxldmFudCBmb3IgdGhlIGN1cnJlbnQgcGxhdGZvcm0uCiAKICAgICBPbiBVbml4LCB0aGlzIG1lYW5zIGV2ZXJ5IHZhcmlhYmxlIGRlZmluZWQgaW4gUHl0aG9uJ3MgaW5zdGFsbGVkIE1ha2VmaWxlOwotICAgIE9uIFdpbmRvd3MgYW5kIE1hYyBPUyBpdCdzIGEgbXVjaCBzbWFsbGVyIHNldC4KKyAgICBPbiBXaW5kb3dzIGl0J3MgYSBtdWNoIHNtYWxsZXIgc2V0LgogCiAgICAgV2l0aCBhcmd1bWVudHMsIHJldHVybiBhIGxpc3Qgb2YgdmFsdWVzIHRoYXQgcmVzdWx0IGZyb20gbG9va2luZyB1cAogICAgIGVhY2ggYXJndW1lbnQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgZGljdGlvbmFyeS4KICAgICAiIiIKLSAgICBpbXBvcnQgcmUKICAgICBnbG9iYWwgX0NPTkZJR19WQVJTCiAgICAgaWYgX0NPTkZJR19WQVJTIGlzIE5vbmU6CiAgICAgICAgIF9DT05GSUdfVkFSUyA9IHt9CkBAIC00NTksNyArNTQwLDkgQEAKICAgICAgICAgX0NPTkZJR19WQVJTWydweV92ZXJzaW9uJ10gPSBfUFlfVkVSU0lPTgogICAgICAgICBfQ09ORklHX1ZBUlNbJ3B5X3ZlcnNpb25fc2hvcnQnXSA9IF9QWV9WRVJTSU9OX1NIT1JUCiAgICAgICAgIF9DT05GSUdfVkFSU1sncHlfdmVyc2lvbl9ub2RvdCddID0gX1BZX1ZFUlNJT05bMF0gKyBfUFlfVkVSU0lPTlsyXQorICAgICAgICBfQ09ORklHX1ZBUlNbJ2luc3RhbGxlZF9iYXNlJ10gPSBfQkFTRV9QUkVGSVgKICAgICAgICAgX0NPTkZJR19WQVJTWydiYXNlJ10gPSBfUFJFRklYCisgICAgICAgIF9DT05GSUdfVkFSU1snaW5zdGFsbGVkX3BsYXRiYXNlJ10gPSBfQkFTRV9FWEVDX1BSRUZJWAogICAgICAgICBfQ09ORklHX1ZBUlNbJ3BsYXRiYXNlJ10gPSBfRVhFQ19QUkVGSVgKICAgICAgICAgX0NPTkZJR19WQVJTWydwcm9qZWN0YmFzZSddID0gX1BST0pFQ1RfQkFTRQogICAgICAgICB0cnk6CkBAIC00NzcsMjkgKzU2MCwyMiBAQAogICAgICAgICAjIHRoZSBpbml0LWZ1bmN0aW9uLgogICAgICAgICBfQ09ORklHX1ZBUlNbJ3VzZXJiYXNlJ10gPSBfZ2V0dXNlcmJhc2UoKQogCi0gICAgICAgIGlmICdzcmNkaXInIG5vdCBpbiBfQ09ORklHX1ZBUlM6Ci0gICAgICAgICAgICBfQ09ORklHX1ZBUlNbJ3NyY2RpciddID0gX1BST0pFQ1RfQkFTRQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgX0NPTkZJR19WQVJTWydzcmNkaXInXSA9IF9zYWZlX3JlYWxwYXRoKF9DT05GSUdfVkFSU1snc3JjZGlyJ10pCi0KLQotICAgICAgICAjIENvbnZlcnQgc3JjZGlyIGludG8gYW4gYWJzb2x1dGUgcGF0aCBpZiBpdCBhcHBlYXJzIG5lY2Vzc2FyeS4KLSAgICAgICAgIyBOb3JtYWxseSBpdCBpcyByZWxhdGl2ZSB0byB0aGUgYnVpbGQgZGlyZWN0b3J5LiAgSG93ZXZlciwgZHVyaW5nCi0gICAgICAgICMgdGVzdGluZywgZm9yIGV4YW1wbGUsIHdlIG1pZ2h0IGJlIHJ1bm5pbmcgYSBub24taW5zdGFsbGVkIHB5dGhvbgotICAgICAgICAjIGZyb20gYSBkaWZmZXJlbnQgZGlyZWN0b3J5LgotICAgICAgICBpZiBfUFlUSE9OX0JVSUxEIGFuZCBvcy5uYW1lID09ICJwb3NpeCI6Ci0gICAgICAgICAgICBiYXNlID0gX1BST0pFQ1RfQkFTRQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGN3ZCA9IG9zLmdldGN3ZCgpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICBjd2QgPSBOb25lCi0gICAgICAgICAgICBpZiAobm90IG9zLnBhdGguaXNhYnMoX0NPTkZJR19WQVJTWydzcmNkaXInXSkgYW5kCi0gICAgICAgICAgICAgICAgYmFzZSAhPSBjd2QpOgotICAgICAgICAgICAgICAgICMgc3JjZGlyIGlzIHJlbGF0aXZlIGFuZCB3ZSBhcmUgbm90IGluIHRoZSBzYW1lIGRpcmVjdG9yeQotICAgICAgICAgICAgICAgICMgYXMgdGhlIGV4ZWN1dGFibGUuIEFzc3VtZSBleGVjdXRhYmxlIGlzIGluIHRoZSBidWlsZAotICAgICAgICAgICAgICAgICMgZGlyZWN0b3J5IGFuZCBtYWtlIHNyY2RpciBhYnNvbHV0ZS4KLSAgICAgICAgICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4oYmFzZSwgX0NPTkZJR19WQVJTWydzcmNkaXInXSkKLSAgICAgICAgICAgICAgICBfQ09ORklHX1ZBUlNbJ3NyY2RpciddID0gb3MucGF0aC5ub3JtcGF0aChzcmNkaXIpCisgICAgICAgICMgQWx3YXlzIGNvbnZlcnQgc3JjZGlyIHRvIGFuIGFic29sdXRlIHBhdGgKKyAgICAgICAgc3JjZGlyID0gX0NPTkZJR19WQVJTLmdldCgnc3JjZGlyJywgX1BST0pFQ1RfQkFTRSkKKyAgICAgICAgaWYgb3MubmFtZSA9PSAncG9zaXgnOgorICAgICAgICAgICAgaWYgX1BZVEhPTl9CVUlMRDoKKyAgICAgICAgICAgICAgICAjIElmIHNyY2RpciBpcyBhIHJlbGF0aXZlIHBhdGggKHR5cGljYWxseSAnLicgb3IgJy4uJykKKyAgICAgICAgICAgICAgICAjIHRoZW4gaXQgc2hvdWxkIGJlIGludGVycHJldGVkIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAjIGNvbnRhaW5pbmcgTWFrZWZpbGUuCisgICAgICAgICAgICAgICAgYmFzZSA9IG9zLnBhdGguZGlybmFtZShnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKSkKKyAgICAgICAgICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4oYmFzZSwgc3JjZGlyKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIHNyY2RpciBpcyBub3QgbWVhbmluZ2Z1bCBzaW5jZSB0aGUgaW5zdGFsbGF0aW9uIGlzCisgICAgICAgICAgICAgICAgIyBzcHJlYWQgYWJvdXQgdGhlIGZpbGVzeXN0ZW0uICBXZSBjaG9vc2UgdGhlCisgICAgICAgICAgICAgICAgIyBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgTWFrZWZpbGUgc2luY2Ugd2Uga25vdyBpdAorICAgICAgICAgICAgICAgICMgZXhpc3RzLgorICAgICAgICAgICAgICAgIHNyY2RpciA9IG9zLnBhdGguZGlybmFtZShnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKSkKKyAgICAgICAgX0NPTkZJR19WQVJTWydzcmNkaXInXSA9IF9zYWZlX3JlYWxwYXRoKHNyY2RpcikKIAogICAgICAgICAjIE9TIFggcGxhdGZvcm1zIHJlcXVpcmUgc3BlY2lhbCBjdXN0b21pemF0aW9uIHRvIGhhbmRsZQogICAgICAgICAjIG11bHRpLWFyY2hpdGVjdHVyZSwgbXVsdGktb3MtdmVyc2lvbiBpbnN0YWxsZXJzCkBAIC01MTUsNiArNTkxLDcgQEAKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gX0NPTkZJR19WQVJTCiAKKwogZGVmIGdldF9jb25maWdfdmFyKG5hbWUpOgogICAgICIiIlJldHVybiB0aGUgdmFsdWUgb2YgYSBzaW5nbGUgdmFyaWFibGUgdXNpbmcgdGhlIGRpY3Rpb25hcnkgcmV0dXJuZWQgYnkKICAgICAnZ2V0X2NvbmZpZ192YXJzKCknLgpAQCAtNTIzLDYgKzYwMCw3IEBACiAgICAgIiIiCiAgICAgcmV0dXJuIGdldF9jb25maWdfdmFycygpLmdldChuYW1lKQogCisKIGRlZiBnZXRfcGxhdGZvcm0oKToKICAgICAiIiJSZXR1cm4gYSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSBjdXJyZW50IHBsYXRmb3JtLgogCkBAIC01NDgsNyArNjI2LDYgQEAKIAogICAgIEZvciBvdGhlciBub24tUE9TSVggcGxhdGZvcm1zLCBjdXJyZW50bHkganVzdCByZXR1cm5zICdzeXMucGxhdGZvcm0nLgogICAgICIiIgotICAgIGltcG9ydCByZQogICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKICAgICAgICAgIyBzbmlmZiBzeXMudmVyc2lvbiBmb3IgYXJjaGl0ZWN0dXJlLgogICAgICAgICBwcmVmaXggPSAiIGJpdCAoIgpAQCAtNTY0LDEwICs2NDEsMTMgQEAKICAgICAgICAgcmV0dXJuIHN5cy5wbGF0Zm9ybQogCiAgICAgaWYgb3MubmFtZSAhPSAicG9zaXgiIG9yIG5vdCBoYXNhdHRyKG9zLCAndW5hbWUnKToKLSAgICAgICAgIyBYWFggd2hhdCBhYm91dCB0aGUgYXJjaGl0ZWN0dXJlPyBOVCBpcyBJbnRlbCBvciBBbHBoYSwKLSAgICAgICAgIyBNYWMgT1MgaXMgTTY4ayBvciBQUEMsIGV0Yy4KKyAgICAgICAgIyBYWFggd2hhdCBhYm91dCB0aGUgYXJjaGl0ZWN0dXJlPyBOVCBpcyBJbnRlbCBvciBBbHBoYQogICAgICAgICByZXR1cm4gc3lzLnBsYXRmb3JtCiAKKyAgICAjIFNldCBmb3IgY3Jvc3MgYnVpbGRzIGV4cGxpY2l0bHkKKyAgICBpZiAiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIiBpbiBvcy5lbnZpcm9uOgorICAgICAgICByZXR1cm4gb3MuZW52aXJvblsiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIl0KKwogICAgICMgVHJ5IHRvIGRpc3Rpbmd1aXNoIHZhcmlvdXMgZmxhdm91cnMgb2YgVW5peAogICAgIG9zbmFtZSwgaG9zdCwgcmVsZWFzZSwgdmVyc2lvbiwgbWFjaGluZSA9IG9zLnVuYW1lKCkKIApAQCAtNTk4LDcgKzY3OCw3IEBACiAgICAgICAgIHJldHVybiAiJXMtJXMuJXMiICUgKG9zbmFtZSwgdmVyc2lvbiwgcmVsZWFzZSkKICAgICBlbGlmIG9zbmFtZVs6Nl0gPT0gImN5Z3dpbiI6CiAgICAgICAgIG9zbmFtZSA9ICJjeWd3aW4iCi0gICAgICAgIHJlbF9yZSA9IHJlLmNvbXBpbGUgKHInW1xkLl0rJykKKyAgICAgICAgcmVsX3JlID0gcmUuY29tcGlsZShyJ1tcZC5dKycpCiAgICAgICAgIG0gPSByZWxfcmUubWF0Y2gocmVsZWFzZSkKICAgICAgICAgaWYgbToKICAgICAgICAgICAgIHJlbGVhc2UgPSBtLmdyb3VwKCkKQEAgLTYxNCwyMSArNjk0LDI3IEBACiBkZWYgZ2V0X3B5dGhvbl92ZXJzaW9uKCk6CiAgICAgcmV0dXJuIF9QWV9WRVJTSU9OX1NIT1JUCiAKKwogZGVmIF9wcmludF9kaWN0KHRpdGxlLCBkYXRhKToKICAgICBmb3IgaW5kZXgsIChrZXksIHZhbHVlKSBpbiBlbnVtZXJhdGUoc29ydGVkKGRhdGEuaXRlbXMoKSkpOgogICAgICAgICBpZiBpbmRleCA9PSAwOgotICAgICAgICAgICAgcHJpbnQoJ3swfTogJy5mb3JtYXQodGl0bGUpKQotICAgICAgICBwcmludCgnXHR7MH0gPSAiezF9IicuZm9ybWF0KGtleSwgdmFsdWUpKQorICAgICAgICAgICAgcHJpbnQoJyVzOiAnICUgKHRpdGxlKSkKKyAgICAgICAgcHJpbnQoJ1x0JXMgPSAiJXMiJyAlIChrZXksIHZhbHVlKSkKKwogCiBkZWYgX21haW4oKToKICAgICAiIiJEaXNwbGF5IGFsbCBpbmZvcm1hdGlvbiBzeXNjb25maWcgZGV0YWlucy4iIiIKLSAgICBwcmludCgnUGxhdGZvcm06ICJ7MH0iJy5mb3JtYXQoZ2V0X3BsYXRmb3JtKCkpKQotICAgIHByaW50KCdQeXRob24gdmVyc2lvbjogInswfSInLmZvcm1hdChnZXRfcHl0aG9uX3ZlcnNpb24oKSkpCi0gICAgcHJpbnQoJ0N1cnJlbnQgaW5zdGFsbGF0aW9uIHNjaGVtZTogInswfSInLmZvcm1hdChfZ2V0X2RlZmF1bHRfc2NoZW1lKCkpKQotICAgIHByaW50KCcnKQorICAgIGlmICctLWdlbmVyYXRlLXBvc2l4LXZhcnMnIGluIHN5cy5hcmd2OgorICAgICAgICBfZ2VuZXJhdGVfcG9zaXhfdmFycygpCisgICAgICAgIHJldHVybgorICAgIHByaW50KCdQbGF0Zm9ybTogIiVzIicgJSBnZXRfcGxhdGZvcm0oKSkKKyAgICBwcmludCgnUHl0aG9uIHZlcnNpb246ICIlcyInICUgZ2V0X3B5dGhvbl92ZXJzaW9uKCkpCisgICAgcHJpbnQoJ0N1cnJlbnQgaW5zdGFsbGF0aW9uIHNjaGVtZTogIiVzIicgJSBfZ2V0X2RlZmF1bHRfc2NoZW1lKCkpCisgICAgcHJpbnQoKQogICAgIF9wcmludF9kaWN0KCdQYXRocycsIGdldF9wYXRocygpKQotICAgIHByaW50KCcnKQorICAgIHByaW50KCkKICAgICBfcHJpbnRfZGljdCgnVmFyaWFibGVzJywgZ2V0X2NvbmZpZ192YXJzKCkpCiAKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGFyZmlsZS5weSBiL0xpYi90YXJmaWxlLnB5CmluZGV4IDU0ZDBlMGUuLjExYjRiNjggMTAwNjQ0Ci0tLSBhL0xpYi90YXJmaWxlLnB5CisrKyBiL0xpYi90YXJmaWxlLnB5CkBAIC0yOSw4ICsyOSw2IEBACiAiIiJSZWFkIGZyb20gYW5kIHdyaXRlIHRvIHRhciBmb3JtYXQgYXJjaGl2ZXMuCiAiIiIKIAotX192ZXJzaW9uX18gPSAiJFJldmlzaW9uJCIKLQogdmVyc2lvbiAgICAgPSAiMC45LjAiCiBfX2F1dGhvcl9fICA9ICJMYXJzIEd1c3RcdTAwZTRiZWwgKGxhcnNAZ3VzdGFlYmVsLmRlKSIKIF9fZGF0ZV9fICAgID0gIiREYXRlOiAyMDExLTAyLTI1IDE3OjQyOjAxICswMjAwIChGcmksIDI1IEZlYiAyMDExKSAkIgpAQCAtNDIsOSArNDAsOSBAQAogIy0tLS0tLS0tLQogaW1wb3J0IHN5cwogaW1wb3J0IG9zCitpbXBvcnQgaW8KIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzdGF0Ci1pbXBvcnQgZXJybm8KIGltcG9ydCB0aW1lCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgY29weQpAQCAtMjQ3LDggKzI0NSw4IEBACiAgICAgICAgdGhlIGhpZ2ggYml0IHNldC4gU28gd2UgY2FsY3VsYXRlIHR3byBjaGVja3N1bXMsIHVuc2lnbmVkIGFuZAogICAgICAgIHNpZ25lZC4KICAgICAiIiIKLSAgICB1bnNpZ25lZF9jaGtzdW0gPSAyNTYgKyBzdW0oc3RydWN0LnVucGFjaygiMTQ4QiIsIGJ1Zls6MTQ4XSkgKyBzdHJ1Y3QudW5wYWNrKCIzNTZCIiwgYnVmWzE1Njo1MTJdKSkKLSAgICBzaWduZWRfY2hrc3VtID0gMjU2ICsgc3VtKHN0cnVjdC51bnBhY2soIjE0OGIiLCBidWZbOjE0OF0pICsgc3RydWN0LnVucGFjaygiMzU2YiIsIGJ1ZlsxNTY6NTEyXSkpCisgICAgdW5zaWduZWRfY2hrc3VtID0gMjU2ICsgc3VtKHN0cnVjdC51bnBhY2tfZnJvbSgiMTQ4Qjh4MzU2QiIsIGJ1ZikpCisgICAgc2lnbmVkX2Noa3N1bSA9IDI1NiArIHN1bShzdHJ1Y3QudW5wYWNrX2Zyb20oIjE0OGI4eDM1NmIiLCBidWYpKQogICAgIHJldHVybiB1bnNpZ25lZF9jaGtzdW0sIHNpZ25lZF9jaGtzdW0KIAogZGVmIGNvcHlmaWxlb2JqKHNyYywgZHN0LCBsZW5ndGg9Tm9uZSk6CkBAIC0yNzYsNDcgKzI3NCwxMyBAQAogICAgICAgICBkc3Qud3JpdGUoYnVmKQogICAgIHJldHVybgogCi1maWxlbW9kZV90YWJsZSA9ICgKLSAgICAoKFNfSUZMTkssICAgICAgImwiKSwKLSAgICAgKFNfSUZSRUcsICAgICAgIi0iKSwKLSAgICAgKFNfSUZCTEssICAgICAgImIiKSwKLSAgICAgKFNfSUZESVIsICAgICAgImQiKSwKLSAgICAgKFNfSUZDSFIsICAgICAgImMiKSwKLSAgICAgKFNfSUZJRk8sICAgICAgInAiKSksCi0KLSAgICAoKFRVUkVBRCwgICAgICAgInIiKSwpLAotICAgICgoVFVXUklURSwgICAgICAidyIpLCksCi0gICAgKChUVUVYRUN8VFNVSUQsICJzIiksCi0gICAgIChUU1VJRCwgICAgICAgICJTIiksCi0gICAgIChUVUVYRUMsICAgICAgICJ4IikpLAotCi0gICAgKChUR1JFQUQsICAgICAgICJyIiksKSwKLSAgICAoKFRHV1JJVEUsICAgICAgInciKSwpLAotICAgICgoVEdFWEVDfFRTR0lELCAicyIpLAotICAgICAoVFNHSUQsICAgICAgICAiUyIpLAotICAgICAoVEdFWEVDLCAgICAgICAieCIpKSwKLQotICAgICgoVE9SRUFELCAgICAgICAiciIpLCksCi0gICAgKChUT1dSSVRFLCAgICAgICJ3IiksKSwKLSAgICAoKFRPRVhFQ3xUU1ZUWCwgInQiKSwKLSAgICAgKFRTVlRYLCAgICAgICAgIlQiKSwKLSAgICAgKFRPRVhFQywgICAgICAgIngiKSkKLSkKLQogZGVmIGZpbGVtb2RlKG1vZGUpOgotICAgICIiIkNvbnZlcnQgYSBmaWxlJ3MgbW9kZSB0byBhIHN0cmluZyBvZiB0aGUgZm9ybQotICAgICAgIC1yd3hyd3hyd3guCi0gICAgICAgVXNlZCBieSBUYXJGaWxlLmxpc3QoKQotICAgICIiIgotICAgIHBlcm0gPSBbXQotICAgIGZvciB0YWJsZSBpbiBmaWxlbW9kZV90YWJsZToKLSAgICAgICAgZm9yIGJpdCwgY2hhciBpbiB0YWJsZToKLSAgICAgICAgICAgIGlmIG1vZGUgJiBiaXQgPT0gYml0OgotICAgICAgICAgICAgICAgIHBlcm0uYXBwZW5kKGNoYXIpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBlcm0uYXBwZW5kKCItIikKLSAgICByZXR1cm4gIiIuam9pbihwZXJtKQorICAgICIiIkRlcHJlY2F0ZWQgaW4gdGhpcyBsb2NhdGlvbjsgdXNlIHN0YXQuZmlsZW1vZGUuIiIiCisgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgd2FybmluZ3Mud2FybigiZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBzdGF0LmZpbGVtb2RlIiwKKyAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICByZXR1cm4gc3RhdC5maWxlbW9kZShtb2RlKQorCiAKIGNsYXNzIFRhckVycm9yKEV4Y2VwdGlvbik6CiAgICAgIiIiQmFzZSBleGNlcHRpb24uIiIiCkBAIC00MjMsMTAgKzM4NywxMSBAQAogICAgICAgICAgICAgICAgIHNlbGYuY3JjID0gemxpYi5jcmMzMihiIiIpCiAgICAgICAgICAgICAgICAgaWYgbW9kZSA9PSAiciI6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2luaXRfcmVhZF9neigpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhjZXB0aW9uID0gemxpYi5lcnJvcgogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2luaXRfd3JpdGVfZ3ooKQogCi0gICAgICAgICAgICBpZiBjb21wdHlwZSA9PSAiYnoyIjoKKyAgICAgICAgICAgIGVsaWYgY29tcHR5cGUgPT0gImJ6MiI6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBpbXBvcnQgYnoyCiAgICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtNDM0LDggKzM5OSwyNSBAQAogICAgICAgICAgICAgICAgIGlmIG1vZGUgPT0gInIiOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmRidWYgPSBiIiIKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbXAgPSBiejIuQloyRGVjb21wcmVzc29yKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5leGNlcHRpb24gPSBJT0Vycm9yCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbXAgPSBiejIuQloyQ29tcHJlc3NvcigpCisKKyAgICAgICAgICAgIGVsaWYgY29tcHR5cGUgPT0gInh6IjoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBsem1hCisgICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBDb21wcmVzc2lvbkVycm9yKCJsem1hIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlIikKKyAgICAgICAgICAgICAgICBpZiBtb2RlID09ICJyIjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYnVmID0gYiIiCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY21wID0gbHptYS5MWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5leGNlcHRpb24gPSBsem1hLkxaTUFFcnJvcgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY21wID0gbHptYS5MWk1BQ29tcHJlc3NvcigpCisKKyAgICAgICAgICAgIGVsaWYgY29tcHR5cGUgIT0gInRhciI6CisgICAgICAgICAgICAgICAgcmFpc2UgQ29tcHJlc3Npb25FcnJvcigidW5rbm93biBjb21wcmVzc2lvbiB0eXBlICVyIiAlIGNvbXB0eXBlKQorCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9leHRmaWxlb2JqOgogICAgICAgICAgICAgICAgIHNlbGYuZmlsZW9iai5jbG9zZSgpCkBAIC01ODcsNyArNTY5LDcgQEAKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGJ1ZiA9IHNlbGYuY21wLmRlY29tcHJlc3MoYnVmKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICBleGNlcHQgc2VsZi5leGNlcHRpb246CiAgICAgICAgICAgICAgICAgcmFpc2UgUmVhZEVycm9yKCJpbnZhbGlkIGNvbXByZXNzZWQgZGF0YSIpCiAgICAgICAgICAgICBzZWxmLmRidWYgKz0gYnVmCiAgICAgICAgICAgICBjICs9IGxlbihidWYpCkBAIC02MjUsNzYgKzYwNywxOSBAQAogICAgICAgICByZXR1cm4gc2VsZi5idWYKIAogICAgIGRlZiBnZXRjb21wdHlwZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5idWYuc3RhcnRzd2l0aChiIlwwMzdcMjEzXDAxMCIpOgorICAgICAgICBpZiBzZWxmLmJ1Zi5zdGFydHN3aXRoKGIiXHgxZlx4OGJceDA4Iik6CiAgICAgICAgICAgICByZXR1cm4gImd6IgotICAgICAgICBpZiBzZWxmLmJ1ZlswOjNdID09IGIiQlpoIiBhbmQgc2VsZi5idWZbNDoxMF0gPT0gYiIxQVkmU1kiOgorICAgICAgICBlbGlmIHNlbGYuYnVmWzA6M10gPT0gYiJCWmgiIGFuZCBzZWxmLmJ1Zls0OjEwXSA9PSBiIjFBWSZTWSI6CiAgICAgICAgICAgICByZXR1cm4gImJ6MiIKLSAgICAgICAgcmV0dXJuICJ0YXIiCisgICAgICAgIGVsaWYgc2VsZi5idWYuc3RhcnRzd2l0aCgoYiJceDVkXHgwMFx4MDBceDgwIiwgYiJceGZkN3pYWiIpKToKKyAgICAgICAgICAgIHJldHVybiAieHoiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gInRhciIKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgc2VsZi5maWxlb2JqLmNsb3NlKCkKICMgY2xhc3MgU3RyZWFtUHJveHkKIAotY2xhc3MgX0JaMlByb3h5KG9iamVjdCk6Ci0gICAgIiIiU21hbGwgcHJveHkgY2xhc3MgdGhhdCBlbmFibGVzIGV4dGVybmFsIGZpbGUgb2JqZWN0Ci0gICAgICAgc3VwcG9ydCBmb3IgInI6YnoyIiBhbmQgInc6YnoyIiBtb2Rlcy4gVGhpcyBpcyBhY3R1YWxseQotICAgICAgIGEgd29ya2Fyb3VuZCBmb3IgYSBsaW1pdGF0aW9uIGluIGJ6MiBtb2R1bGUncyBCWjJGaWxlCi0gICAgICAgY2xhc3Mgd2hpY2ggKHVubGlrZSBnemlwLkd6aXBGaWxlKSBoYXMgbm8gc3VwcG9ydCBmb3IKLSAgICAgICBhIGZpbGUgb2JqZWN0IGFyZ3VtZW50LgotICAgICIiIgotCi0gICAgYmxvY2tzaXplID0gMTYgKiAxMDI0Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW9iaiwgbW9kZSk6Ci0gICAgICAgIHNlbGYuZmlsZW9iaiA9IGZpbGVvYmoKLSAgICAgICAgc2VsZi5tb2RlID0gbW9kZQotICAgICAgICBzZWxmLm5hbWUgPSBnZXRhdHRyKHNlbGYuZmlsZW9iaiwgIm5hbWUiLCBOb25lKQotICAgICAgICBzZWxmLmluaXQoKQotCi0gICAgZGVmIGluaXQoc2VsZik6Ci0gICAgICAgIGltcG9ydCBiejIKLSAgICAgICAgc2VsZi5wb3MgPSAwCi0gICAgICAgIGlmIHNlbGYubW9kZSA9PSAiciI6Ci0gICAgICAgICAgICBzZWxmLmJ6Mm9iaiA9IGJ6Mi5CWjJEZWNvbXByZXNzb3IoKQotICAgICAgICAgICAgc2VsZi5maWxlb2JqLnNlZWsoMCkKLSAgICAgICAgICAgIHNlbGYuYnVmID0gYiIiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmJ6Mm9iaiA9IGJ6Mi5CWjJDb21wcmVzc29yKCkKLQotICAgIGRlZiByZWFkKHNlbGYsIHNpemUpOgotICAgICAgICB4ID0gbGVuKHNlbGYuYnVmKQotICAgICAgICB3aGlsZSB4IDwgc2l6ZToKLSAgICAgICAgICAgIHJhdyA9IHNlbGYuZmlsZW9iai5yZWFkKHNlbGYuYmxvY2tzaXplKQotICAgICAgICAgICAgaWYgbm90IHJhdzoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZGF0YSA9IHNlbGYuYnoyb2JqLmRlY29tcHJlc3MocmF3KQotICAgICAgICAgICAgc2VsZi5idWYgKz0gZGF0YQotICAgICAgICAgICAgeCArPSBsZW4oZGF0YSkKLQotICAgICAgICBidWYgPSBzZWxmLmJ1Zls6c2l6ZV0KLSAgICAgICAgc2VsZi5idWYgPSBzZWxmLmJ1ZltzaXplOl0KLSAgICAgICAgc2VsZi5wb3MgKz0gbGVuKGJ1ZikKLSAgICAgICAgcmV0dXJuIGJ1ZgotCi0gICAgZGVmIHNlZWsoc2VsZiwgcG9zKToKLSAgICAgICAgaWYgcG9zIDwgc2VsZi5wb3M6Ci0gICAgICAgICAgICBzZWxmLmluaXQoKQotICAgICAgICBzZWxmLnJlYWQocG9zIC0gc2VsZi5wb3MpCi0KLSAgICBkZWYgdGVsbChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYucG9zCi0KLSAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYucG9zICs9IGxlbihkYXRhKQotICAgICAgICByYXcgPSBzZWxmLmJ6Mm9iai5jb21wcmVzcyhkYXRhKQotICAgICAgICBzZWxmLmZpbGVvYmoud3JpdGUocmF3KQotCi0gICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLm1vZGUgPT0gInciOgotICAgICAgICAgICAgcmF3ID0gc2VsZi5iejJvYmouZmx1c2goKQotICAgICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKHJhdykKLSMgY2xhc3MgX0JaMlByb3h5Ci0KICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRXh0cmFjdGlvbiBmaWxlIG9iamVjdAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzA5LDYgKzYzNCw4IEBACiAgICAgICAgIHNlbGYub2Zmc2V0ID0gb2Zmc2V0CiAgICAgICAgIHNlbGYuc2l6ZSA9IHNpemUKICAgICAgICAgc2VsZi5wb3NpdGlvbiA9IDAKKyAgICAgICAgc2VsZi5uYW1lID0gZ2V0YXR0cihmaWxlb2JqLCAibmFtZSIsIE5vbmUpCisgICAgICAgIHNlbGYuY2xvc2VkID0gRmFsc2UKIAogICAgICAgICBpZiBibG9ja2luZm8gaXMgTm9uZToKICAgICAgICAgICAgIGJsb2NraW5mbyA9IFsoMCwgc2l6ZSldCkBAIC03MjcsMTAgKzY1NCwxNiBAQAogICAgICAgICBpZiBsYXN0cG9zIDwgc2VsZi5zaXplOgogICAgICAgICAgICAgc2VsZi5tYXAuYXBwZW5kKChGYWxzZSwgbGFzdHBvcywgc2VsZi5zaXplLCBOb25lKSkKIAorICAgIGRlZiBmbHVzaChzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgIGRlZiBzZWVrYWJsZShzZWxmKToKLSAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZi5maWxlb2JqLCAic2Vla2FibGUiKToKLSAgICAgICAgICAgICMgWFhYIGd6aXAuR3ppcEZpbGUgYW5kIGJ6Mi5CWjJGaWxlCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gc2VsZi5maWxlb2JqLnNlZWthYmxlKCkKIAogICAgIGRlZiB0ZWxsKHNlbGYpOgpAQCAtNzM4LDEwICs2NzEsMjEgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnBvc2l0aW9uCiAKLSAgICBkZWYgc2VlayhzZWxmLCBwb3NpdGlvbik6CisgICAgZGVmIHNlZWsoc2VsZiwgcG9zaXRpb24sIHdoZW5jZT1pby5TRUVLX1NFVCk6CiAgICAgICAgICIiIlNlZWsgdG8gYSBwb3NpdGlvbiBpbiB0aGUgZmlsZS4KICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYucG9zaXRpb24gPSBwb3NpdGlvbgorICAgICAgICBpZiB3aGVuY2UgPT0gaW8uU0VFS19TRVQ6CisgICAgICAgICAgICBzZWxmLnBvc2l0aW9uID0gbWluKG1heChwb3NpdGlvbiwgMCksIHNlbGYuc2l6ZSkKKyAgICAgICAgZWxpZiB3aGVuY2UgPT0gaW8uU0VFS19DVVI6CisgICAgICAgICAgICBpZiBwb3NpdGlvbiA8IDA6CisgICAgICAgICAgICAgICAgc2VsZi5wb3NpdGlvbiA9IG1heChzZWxmLnBvc2l0aW9uICsgcG9zaXRpb24sIDApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYucG9zaXRpb24gPSBtaW4oc2VsZi5wb3NpdGlvbiArIHBvc2l0aW9uLCBzZWxmLnNpemUpCisgICAgICAgIGVsaWYgd2hlbmNlID09IGlvLlNFRUtfRU5EOgorICAgICAgICAgICAgc2VsZi5wb3NpdGlvbiA9IG1heChtaW4oc2VsZi5zaXplICsgcG9zaXRpb24sIHNlbGYuc2l6ZSksIDApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIGFyZ3VtZW50IikKKyAgICAgICAgcmV0dXJuIHNlbGYucG9zaXRpb24KIAogICAgIGRlZiByZWFkKHNlbGYsIHNpemU9Tm9uZSk6CiAgICAgICAgICIiIlJlYWQgZGF0YSBmcm9tIHRoZSBmaWxlLgpAQCAtNzcwLDE0NSArNzE0LDIyIEBACiAgICAgICAgICAgICBzaXplIC09IGxlbmd0aAogICAgICAgICAgICAgc2VsZi5wb3NpdGlvbiArPSBsZW5ndGgKICAgICAgICAgcmV0dXJuIGJ1ZgotI2NsYXNzIF9GaWxlSW5GaWxlCiAKLQotY2xhc3MgRXhGaWxlT2JqZWN0KG9iamVjdCk6Ci0gICAgIiIiRmlsZS1saWtlIG9iamVjdCBmb3IgcmVhZGluZyBhbiBhcmNoaXZlIG1lbWJlci4KLSAgICAgICBJcyByZXR1cm5lZCBieSBUYXJGaWxlLmV4dHJhY3RmaWxlKCkuCi0gICAgIiIiCi0gICAgYmxvY2tzaXplID0gMTAyNAotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhcmZpbGUsIHRhcmluZm8pOgotICAgICAgICBzZWxmLmZpbGVvYmogPSBfRmlsZUluRmlsZSh0YXJmaWxlLmZpbGVvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmluZm8ub2Zmc2V0X2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmluZm8uc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyaW5mby5zcGFyc2UpCi0gICAgICAgIHNlbGYubmFtZSA9IHRhcmluZm8ubmFtZQotICAgICAgICBzZWxmLm1vZGUgPSAiciIKLSAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxzZQotICAgICAgICBzZWxmLnNpemUgPSB0YXJpbmZvLnNpemUKLQotICAgICAgICBzZWxmLnBvc2l0aW9uID0gMAotICAgICAgICBzZWxmLmJ1ZmZlciA9IGIiIgotCi0gICAgZGVmIHJlYWRhYmxlKHNlbGYpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIHdyaXRhYmxlKHNlbGYpOgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBzZWVrYWJsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZmlsZW9iai5zZWVrYWJsZSgpCi0KLSAgICBkZWYgcmVhZChzZWxmLCBzaXplPU5vbmUpOgotICAgICAgICAiIiJSZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcyBmcm9tIHRoZSBmaWxlLiBJZiBzaXplIGlzIG5vdAotICAgICAgICAgICBwcmVzZW50IG9yIE5vbmUsIHJlYWQgYWxsIGRhdGEgdW50aWwgRU9GIGlzIHJlYWNoZWQuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKQotCi0gICAgICAgIGJ1ZiA9IGIiIgotICAgICAgICBpZiBzZWxmLmJ1ZmZlcjoKLSAgICAgICAgICAgIGlmIHNpemUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBidWYgPSBzZWxmLmJ1ZmZlcgotICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gYiIiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGJ1ZiA9IHNlbGYuYnVmZmVyWzpzaXplXQotICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gc2VsZi5idWZmZXJbc2l6ZTpdCi0KLSAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgotICAgICAgICAgICAgYnVmICs9IHNlbGYuZmlsZW9iai5yZWFkKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJ1ZiArPSBzZWxmLmZpbGVvYmoucmVhZChzaXplIC0gbGVuKGJ1ZikpCi0KLSAgICAgICAgc2VsZi5wb3NpdGlvbiArPSBsZW4oYnVmKQotICAgICAgICByZXR1cm4gYnVmCi0KLSAgICAjIFhYWCBUZXh0SU9XcmFwcGVyIHVzZXMgdGhlIHJlYWQxKCkgbWV0aG9kLgotICAgIHJlYWQxID0gcmVhZAotCi0gICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9LTEpOgotICAgICAgICAiIiJSZWFkIG9uZSBlbnRpcmUgbGluZSBmcm9tIHRoZSBmaWxlLiBJZiBzaXplIGlzIHByZXNlbnQKLSAgICAgICAgICAgYW5kIG5vbi1uZWdhdGl2ZSwgcmV0dXJuIGEgc3RyaW5nIHdpdGggYXQgbW9zdCB0aGF0Ci0gICAgICAgICAgIHNpemUsIHdoaWNoIG1heSBiZSBhbiBpbmNvbXBsZXRlIGxpbmUuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKQotCi0gICAgICAgIHBvcyA9IHNlbGYuYnVmZmVyLmZpbmQoYiJcbiIpICsgMQotICAgICAgICBpZiBwb3MgPT0gMDoKLSAgICAgICAgICAgICMgbm8gbmV3bGluZSBmb3VuZC4KLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgYnVmID0gc2VsZi5maWxlb2JqLnJlYWQoc2VsZi5ibG9ja3NpemUpCi0gICAgICAgICAgICAgICAgc2VsZi5idWZmZXIgKz0gYnVmCi0gICAgICAgICAgICAgICAgaWYgbm90IGJ1ZiBvciBiIlxuIiBpbiBidWY6Ci0gICAgICAgICAgICAgICAgICAgIHBvcyA9IHNlbGYuYnVmZmVyLmZpbmQoYiJcbiIpICsgMQotICAgICAgICAgICAgICAgICAgICBpZiBwb3MgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gbmV3bGluZSBmb3VuZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGxlbihzZWxmLmJ1ZmZlcikKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBpZiBzaXplICE9IC0xOgotICAgICAgICAgICAgcG9zID0gbWluKHNpemUsIHBvcykKLQotICAgICAgICBidWYgPSBzZWxmLmJ1ZmZlcls6cG9zXQotICAgICAgICBzZWxmLmJ1ZmZlciA9IHNlbGYuYnVmZmVyW3BvczpdCi0gICAgICAgIHNlbGYucG9zaXRpb24gKz0gbGVuKGJ1ZikKLSAgICAgICAgcmV0dXJuIGJ1ZgotCi0gICAgZGVmIHJlYWRsaW5lcyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCB3aXRoIGFsbCByZW1haW5pbmcgbGluZXMuCi0gICAgICAgICIiIgotICAgICAgICByZXN1bHQgPSBbXQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgbGluZSA9IHNlbGYucmVhZGxpbmUoKQotICAgICAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxpbmUpCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiB0ZWxsKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbi4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCi0KLSAgICAgICAgcmV0dXJuIHNlbGYucG9zaXRpb24KLQotICAgIGRlZiBzZWVrKHNlbGYsIHBvcywgd2hlbmNlPW9zLlNFRUtfU0VUKToKLSAgICAgICAgIiIiU2VlayB0byBhIHBvc2l0aW9uIGluIHRoZSBmaWxlLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIikKLQotICAgICAgICBpZiB3aGVuY2UgPT0gb3MuU0VFS19TRVQ6Ci0gICAgICAgICAgICBzZWxmLnBvc2l0aW9uID0gbWluKG1heChwb3MsIDApLCBzZWxmLnNpemUpCi0gICAgICAgIGVsaWYgd2hlbmNlID09IG9zLlNFRUtfQ1VSOgotICAgICAgICAgICAgaWYgcG9zIDwgMDoKLSAgICAgICAgICAgICAgICBzZWxmLnBvc2l0aW9uID0gbWF4KHNlbGYucG9zaXRpb24gKyBwb3MsIDApCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYucG9zaXRpb24gPSBtaW4oc2VsZi5wb3NpdGlvbiArIHBvcywgc2VsZi5zaXplKQotICAgICAgICBlbGlmIHdoZW5jZSA9PSBvcy5TRUVLX0VORDoKLSAgICAgICAgICAgIHNlbGYucG9zaXRpb24gPSBtYXgobWluKHNlbGYuc2l6ZSArIHBvcywgc2VsZi5zaXplKSwgMCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgYXJndW1lbnQiKQotCi0gICAgICAgIHNlbGYuYnVmZmVyID0gYiIiCi0gICAgICAgIHNlbGYuZmlsZW9iai5zZWVrKHNlbGYucG9zaXRpb24pCisgICAgZGVmIHJlYWRpbnRvKHNlbGYsIGIpOgorICAgICAgICBidWYgPSBzZWxmLnJlYWQobGVuKGIpKQorICAgICAgICBiWzpsZW4oYnVmKV0gPSBidWYKKyAgICAgICAgcmV0dXJuIGxlbihidWYpCiAKICAgICBkZWYgY2xvc2Uoc2VsZik6Ci0gICAgICAgICIiIkNsb3NlIHRoZSBmaWxlIG9iamVjdC4KLSAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQorI2NsYXNzIF9GaWxlSW5GaWxlCiAKLSAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgICIiIkdldCBhbiBpdGVyYXRvciBvdmVyIHRoZSBmaWxlJ3MgbGluZXMuCi0gICAgICAgICIiIgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgbGluZSA9IHNlbGYucmVhZGxpbmUoKQotICAgICAgICAgICAgaWYgbm90IGxpbmU6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHlpZWxkIGxpbmUKK2NsYXNzIEV4RmlsZU9iamVjdChpby5CdWZmZXJlZFJlYWRlcik6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGFyZmlsZSwgdGFyaW5mbyk6CisgICAgICAgIGZpbGVvYmogPSBfRmlsZUluRmlsZSh0YXJmaWxlLmZpbGVvYmosIHRhcmluZm8ub2Zmc2V0X2RhdGEsCisgICAgICAgICAgICAgICAgdGFyaW5mby5zaXplLCB0YXJpbmZvLnNwYXJzZSkKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhmaWxlb2JqKQogI2NsYXNzIEV4RmlsZU9iamVjdAogCiAjLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMDg3LDcgKzkwOCw3IEBACiAgICAgZGVmIGNyZWF0ZV9wYXhfZ2xvYmFsX2hlYWRlcihjbHMsIHBheF9oZWFkZXJzKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBvYmplY3QgYXMgYSBwYXggZ2xvYmFsIGhlYWRlciBibG9jayBzZXF1ZW5jZS4KICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBjbHMuX2NyZWF0ZV9wYXhfZ2VuZXJpY19oZWFkZXIocGF4X2hlYWRlcnMsIFhHTFRZUEUsICJ1dGY4IikKKyAgICAgICAgcmV0dXJuIGNscy5fY3JlYXRlX3BheF9nZW5lcmljX2hlYWRlcihwYXhfaGVhZGVycywgWEdMVFlQRSwgInV0Zi04IikKIAogICAgIGRlZiBfcG9zaXhfc3BsaXRfbmFtZShzZWxmLCBuYW1lKToKICAgICAgICAgIiIiU3BsaXQgYSBuYW1lIGxvbmdlciB0aGFuIDEwMCBjaGFycyBpbnRvIGEgcHJlZml4CkBAIC0xMTcwLDcgKzk5MSw3IEBACiAgICAgICAgIGJpbmFyeSA9IEZhbHNlCiAgICAgICAgIGZvciBrZXl3b3JkLCB2YWx1ZSBpbiBwYXhfaGVhZGVycy5pdGVtcygpOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHZhbHVlLmVuY29kZSgidXRmOCIsICJzdHJpY3QiKQorICAgICAgICAgICAgICAgIHZhbHVlLmVuY29kZSgidXRmLTgiLCAic3RyaWN0IikKICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICAgICAgYmluYXJ5ID0gVHJ1ZQogICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0xMTgxLDEzICsxMDAyLDEzIEBACiAgICAgICAgICAgICByZWNvcmRzICs9IGIiMjEgaGRyY2hhcnNldD1CSU5BUllcbiIKIAogICAgICAgICBmb3Iga2V5d29yZCwgdmFsdWUgaW4gcGF4X2hlYWRlcnMuaXRlbXMoKToKLSAgICAgICAgICAgIGtleXdvcmQgPSBrZXl3b3JkLmVuY29kZSgidXRmOCIpCisgICAgICAgICAgICBrZXl3b3JkID0ga2V5d29yZC5lbmNvZGUoInV0Zi04IikKICAgICAgICAgICAgIGlmIGJpbmFyeToKICAgICAgICAgICAgICAgICAjIFRyeSB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBieXRlIHJlcHJlc2VudGF0aW9uIG9mIGB2YWx1ZScuCiAgICAgICAgICAgICAgICAgIyBOZWVkbGVzcyB0byBzYXksIHRoYXQgdGhlIGVuY29kaW5nIG11c3QgbWF0Y2ggdGhlIHN0cmluZy4KICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmVuY29kZShlbmNvZGluZywgInN1cnJvZ2F0ZWVzY2FwZSIpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuZW5jb2RlKCJ1dGY4IikKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmVuY29kZSgidXRmLTgiKQogCiAgICAgICAgICAgICBsID0gbGVuKGtleXdvcmQpICsgbGVuKHZhbHVlKSArIDMgICAjICcgJyArICc9JyArICdcbicKICAgICAgICAgICAgIG4gPSBwID0gMApAQCAtMTM5Niw3ICsxMjE3LDcgQEAKICAgICAgICAgIyB0aGUgdHJhbnNsYXRpb24gdG8gVVRGLTggZmFpbHMuCiAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKGJyIlxkKyBoZHJjaGFyc2V0PShbXlxuXSspXG4iLCBidWYpCiAgICAgICAgIGlmIG1hdGNoIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcGF4X2hlYWRlcnNbImhkcmNoYXJzZXQiXSA9IG1hdGNoLmdyb3VwKDEpLmRlY29kZSgidXRmOCIpCisgICAgICAgICAgICBwYXhfaGVhZGVyc1siaGRyY2hhcnNldCJdID0gbWF0Y2guZ3JvdXAoMSkuZGVjb2RlKCJ1dGYtOCIpCiAKICAgICAgICAgIyBGb3IgdGhlIHRpbWUgYmVpbmcsIHdlIGRvbid0IGNhcmUgYWJvdXQgYW55dGhpbmcgb3RoZXIgdGhhbiAiQklOQVJZIi4KICAgICAgICAgIyBUaGUgb25seSBvdGhlciB2YWx1ZSB0aGF0IGlzIGN1cnJlbnRseSBhbGxvd2VkIGJ5IHRoZSBzdGFuZGFyZCBpcwpAQCAtMTQwNSw3ICsxMjI2LDcgQEAKICAgICAgICAgaWYgaGRyY2hhcnNldCA9PSAiQklOQVJZIjoKICAgICAgICAgICAgIGVuY29kaW5nID0gdGFyZmlsZS5lbmNvZGluZwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZW5jb2RpbmcgPSAidXRmOCIKKyAgICAgICAgICAgIGVuY29kaW5nID0gInV0Zi04IgogCiAgICAgICAgICMgUGFyc2UgcGF4IGhlYWRlciBpbmZvcm1hdGlvbi4gQSByZWNvcmQgbG9va3MgbGlrZSB0aGF0OgogICAgICAgICAjICIlZCAlcz0lc1xuIiAlIChsZW5ndGgsIGtleXdvcmQsIHZhbHVlKS4gbGVuZ3RoIGlzIHRoZSBzaXplCkBAIC0xNDIyLDIwICsxMjQzLDIwIEBACiAgICAgICAgICAgICBsZW5ndGggPSBpbnQobGVuZ3RoKQogICAgICAgICAgICAgdmFsdWUgPSBidWZbbWF0Y2guZW5kKDIpICsgMTptYXRjaC5zdGFydCgxKSArIGxlbmd0aCAtIDFdCiAKLSAgICAgICAgICAgICMgTm9ybWFsbHksIHdlIGNvdWxkIGp1c3QgdXNlICJ1dGY4IiBhcyB0aGUgZW5jb2RpbmcgYW5kICJzdHJpY3QiCisgICAgICAgICAgICAjIE5vcm1hbGx5LCB3ZSBjb3VsZCBqdXN0IHVzZSAidXRmLTgiIGFzIHRoZSBlbmNvZGluZyBhbmQgInN0cmljdCIKICAgICAgICAgICAgICMgYXMgdGhlIGVycm9yIGhhbmRsZXIsIGJ1dCB3ZSBiZXR0ZXIgbm90IHRha2UgdGhlIHJpc2suIEZvcgogICAgICAgICAgICAgIyBleGFtcGxlLCBHTlUgdGFyIDw9IDEuMjMgaXMga25vd24gdG8gc3RvcmUgZmlsZW5hbWVzIGl0IGNhbm5vdAogICAgICAgICAgICAgIyB0cmFuc2xhdGUgdG8gVVRGLTggYXMgcmF3IHN0cmluZ3MgKHVuZm9ydHVuYXRlbHkgd2l0aG91dCBhCiAgICAgICAgICAgICAjIGhkcmNoYXJzZXQ9QklOQVJZIGhlYWRlcikuCiAgICAgICAgICAgICAjIFdlIGZpcnN0IHRyeSB0aGUgc3RyaWN0IHN0YW5kYXJkIGVuY29kaW5nLCBhbmQgaWYgdGhhdCBmYWlscyB3ZQogICAgICAgICAgICAgIyBmYWxsIGJhY2sgb24gdGhlIHVzZXIncyBlbmNvZGluZyBhbmQgZXJyb3IgaGFuZGxlci4KLSAgICAgICAgICAgIGtleXdvcmQgPSBzZWxmLl9kZWNvZGVfcGF4X2ZpZWxkKGtleXdvcmQsICJ1dGY4IiwgInV0ZjgiLAorICAgICAgICAgICAga2V5d29yZCA9IHNlbGYuX2RlY29kZV9wYXhfZmllbGQoa2V5d29yZCwgInV0Zi04IiwgInV0Zi04IiwKICAgICAgICAgICAgICAgICAgICAgdGFyZmlsZS5lcnJvcnMpCiAgICAgICAgICAgICBpZiBrZXl3b3JkIGluIFBBWF9OQU1FX0ZJRUxEUzoKICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuX2RlY29kZV9wYXhfZmllbGQodmFsdWUsIGVuY29kaW5nLCB0YXJmaWxlLmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgdGFyZmlsZS5lcnJvcnMpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fZGVjb2RlX3BheF9maWVsZCh2YWx1ZSwgInV0ZjgiLCAidXRmOCIsCisgICAgICAgICAgICAgICAgdmFsdWUgPSBzZWxmLl9kZWNvZGVfcGF4X2ZpZWxkKHZhbHVlLCAidXRmLTgiLCAidXRmLTgiLAogICAgICAgICAgICAgICAgICAgICAgICAgdGFyZmlsZS5lcnJvcnMpCiAKICAgICAgICAgICAgIHBheF9oZWFkZXJzW2tleXdvcmRdID0gdmFsdWUKQEAgLTE1OTUsNyArMTQxNiw3IEBACiAKICAgICB0YXJpbmZvID0gVGFySW5mbyAgICAgICAgICAgIyBUaGUgZGVmYXVsdCBUYXJJbmZvIGNsYXNzIHRvIHVzZS4KIAotICAgIGZpbGVvYmplY3QgPSBFeEZpbGVPYmplY3QgICAjIFRoZSBkZWZhdWx0IEV4RmlsZU9iamVjdCBjbGFzcyB0byB1c2UuCisgICAgZmlsZW9iamVjdCA9IEV4RmlsZU9iamVjdCAgICMgVGhlIGZpbGUtb2JqZWN0IGZvciBleHRyYWN0ZmlsZSgpLgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU9Tm9uZSwgbW9kZT0iciIsIGZpbGVvYmo9Tm9uZSwgZm9ybWF0PU5vbmUsCiAgICAgICAgICAgICB0YXJpbmZvPU5vbmUsIGRlcmVmZXJlbmNlPU5vbmUsIGlnbm9yZV96ZXJvcz1Ob25lLCBlbmNvZGluZz1Ob25lLApAQCAtMTcxNCwxOCArMTUzNSwyMiBAQAogICAgICAgICAgICAncjonICAgICAgICAgb3BlbiBmb3IgcmVhZGluZyBleGNsdXNpdmVseSB1bmNvbXByZXNzZWQKICAgICAgICAgICAgJ3I6Z3onICAgICAgIG9wZW4gZm9yIHJlYWRpbmcgd2l0aCBnemlwIGNvbXByZXNzaW9uCiAgICAgICAgICAgICdyOmJ6MicgICAgICBvcGVuIGZvciByZWFkaW5nIHdpdGggYnppcDIgY29tcHJlc3Npb24KKyAgICAgICAgICAgJ3I6eHonICAgICAgIG9wZW4gZm9yIHJlYWRpbmcgd2l0aCBsem1hIGNvbXByZXNzaW9uCiAgICAgICAgICAgICdhJyBvciAnYTonICBvcGVuIGZvciBhcHBlbmRpbmcsIGNyZWF0aW5nIHRoZSBmaWxlIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAndycgb3IgJ3c6JyAgb3BlbiBmb3Igd3JpdGluZyB3aXRob3V0IGNvbXByZXNzaW9uCiAgICAgICAgICAgICd3Omd6JyAgICAgICBvcGVuIGZvciB3cml0aW5nIHdpdGggZ3ppcCBjb21wcmVzc2lvbgogICAgICAgICAgICAndzpiejInICAgICAgb3BlbiBmb3Igd3JpdGluZyB3aXRoIGJ6aXAyIGNvbXByZXNzaW9uCisgICAgICAgICAgICd3Onh6JyAgICAgICBvcGVuIGZvciB3cml0aW5nIHdpdGggbHptYSBjb21wcmVzc2lvbgogCiAgICAgICAgICAgICdyfConICAgICAgICBvcGVuIGEgc3RyZWFtIG9mIHRhciBibG9ja3Mgd2l0aCB0cmFuc3BhcmVudCBjb21wcmVzc2lvbgogICAgICAgICAgICAncnwnICAgICAgICAgb3BlbiBhbiB1bmNvbXByZXNzZWQgc3RyZWFtIG9mIHRhciBibG9ja3MgZm9yIHJlYWRpbmcKICAgICAgICAgICAgJ3J8Z3onICAgICAgIG9wZW4gYSBnemlwIGNvbXByZXNzZWQgc3RyZWFtIG9mIHRhciBibG9ja3MKICAgICAgICAgICAgJ3J8YnoyJyAgICAgIG9wZW4gYSBiemlwMiBjb21wcmVzc2VkIHN0cmVhbSBvZiB0YXIgYmxvY2tzCisgICAgICAgICAgICdyfHh6JyAgICAgICBvcGVuIGFuIGx6bWEgY29tcHJlc3NlZCBzdHJlYW0gb2YgdGFyIGJsb2NrcwogICAgICAgICAgICAnd3wnICAgICAgICAgb3BlbiBhbiB1bmNvbXByZXNzZWQgc3RyZWFtIGZvciB3cml0aW5nCiAgICAgICAgICAgICd3fGd6JyAgICAgICBvcGVuIGEgZ3ppcCBjb21wcmVzc2VkIHN0cmVhbSBmb3Igd3JpdGluZwogICAgICAgICAgICAnd3xiejInICAgICAgb3BlbiBhIGJ6aXAyIGNvbXByZXNzZWQgc3RyZWFtIGZvciB3cml0aW5nCisgICAgICAgICAgICd3fHh6JyAgICAgICBvcGVuIGFuIGx6bWEgY29tcHJlc3NlZCBzdHJlYW0gZm9yIHdyaXRpbmcKICAgICAgICAgIiIiCiAKICAgICAgICAgaWYgbm90IG5hbWUgYW5kIG5vdCBmaWxlb2JqOgpAQCAtMTgzMiwxMCArMTY1Nyw4IEBACiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgIHJhaXNlIENvbXByZXNzaW9uRXJyb3IoImJ6MiBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSIpCiAKLSAgICAgICAgaWYgZmlsZW9iaiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGZpbGVvYmogPSBfQloyUHJveHkoZmlsZW9iaiwgbW9kZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZpbGVvYmogPSBiejIuQloyRmlsZShuYW1lLCBtb2RlLCBjb21wcmVzc2xldmVsPWNvbXByZXNzbGV2ZWwpCisgICAgICAgIGZpbGVvYmogPSBiejIuQloyRmlsZShmaWxlb2JqIG9yIG5hbWUsIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2xldmVsPWNvbXByZXNzbGV2ZWwpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdCA9IGNscy50YXJvcGVuKG5hbWUsIG1vZGUsIGZpbGVvYmosICoqa3dhcmdzKQpAQCAtMTg0NSwxMSArMTY2OCwzNSBAQAogICAgICAgICB0Ll9leHRmaWxlb2JqID0gRmFsc2UKICAgICAgICAgcmV0dXJuIHQKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB4em9wZW4oY2xzLCBuYW1lLCBtb2RlPSJyIiwgZmlsZW9iaj1Ob25lLCBwcmVzZXQ9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICAiIiJPcGVuIGx6bWEgY29tcHJlc3NlZCB0YXIgYXJjaGl2ZSBuYW1lIGZvciByZWFkaW5nIG9yIHdyaXRpbmcuCisgICAgICAgICAgIEFwcGVuZGluZyBpcyBub3QgYWxsb3dlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJ3Iik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtb2RlIG11c3QgYmUgJ3InIG9yICd3JyIpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IGx6bWEKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgcmFpc2UgQ29tcHJlc3Npb25FcnJvcigibHptYSBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSIpCisKKyAgICAgICAgZmlsZW9iaiA9IGx6bWEuTFpNQUZpbGUoZmlsZW9iaiBvciBuYW1lLCBtb2RlLCBwcmVzZXQ9cHJlc2V0KQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHQgPSBjbHMudGFyb3BlbihuYW1lLCBtb2RlLCBmaWxlb2JqLCAqKmt3YXJncykKKyAgICAgICAgZXhjZXB0IChsem1hLkxaTUFFcnJvciwgRU9GRXJyb3IpOgorICAgICAgICAgICAgZmlsZW9iai5jbG9zZSgpCisgICAgICAgICAgICByYWlzZSBSZWFkRXJyb3IoIm5vdCBhbiBsem1hIGZpbGUiKQorICAgICAgICB0Ll9leHRmaWxlb2JqID0gRmFsc2UKKyAgICAgICAgcmV0dXJuIHQKKwogICAgICMgQWxsICpvcGVuKCkgbWV0aG9kcyBhcmUgcmVnaXN0ZXJlZCBoZXJlLgogICAgIE9QRU5fTUVUSCA9IHsKICAgICAgICAgInRhciI6ICJ0YXJvcGVuIiwgICAjIHVuY29tcHJlc3NlZCB0YXIKICAgICAgICAgImd6IjogICJnem9wZW4iLCAgICAjIGd6aXAgY29tcHJlc3NlZCB0YXIKLSAgICAgICAgImJ6MiI6ICJiejJvcGVuIiAgICAjIGJ6aXAyIGNvbXByZXNzZWQgdGFyCisgICAgICAgICJiejIiOiAiYnoyb3BlbiIsICAgIyBiemlwMiBjb21wcmVzc2VkIHRhcgorICAgICAgICAieHoiOiAgInh6b3BlbiIgICAgICMgbHptYSBjb21wcmVzc2VkIHRhcgogICAgIH0KIAogICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjAwOSw3ICsxODU2LDcgQEAKIAogICAgICAgICBmb3IgdGFyaW5mbyBpbiBzZWxmOgogICAgICAgICAgICAgaWYgdmVyYm9zZToKLSAgICAgICAgICAgICAgICBwcmludChmaWxlbW9kZSh0YXJpbmZvLm1vZGUpLCBlbmQ9JyAnKQorICAgICAgICAgICAgICAgIHByaW50KHN0YXQuZmlsZW1vZGUodGFyaW5mby5tb2RlKSwgZW5kPScgJykKICAgICAgICAgICAgICAgICBwcmludCgiJXMvJXMiICUgKHRhcmluZm8udW5hbWUgb3IgdGFyaW5mby51aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJpbmZvLmduYW1lIG9yIHRhcmluZm8uZ2lkKSwgZW5kPScgJykKICAgICAgICAgICAgICAgICBpZiB0YXJpbmZvLmlzY2hyKCkgb3IgdGFyaW5mby5pc2JsaygpOgpAQCAtMjE5MSwxMiArMjAzOCw5IEBACiAKICAgICBkZWYgZXh0cmFjdGZpbGUoc2VsZiwgbWVtYmVyKToKICAgICAgICAgIiIiRXh0cmFjdCBhIG1lbWJlciBmcm9tIHRoZSBhcmNoaXZlIGFzIGEgZmlsZSBvYmplY3QuIGBtZW1iZXInIG1heSBiZQotICAgICAgICAgICBhIGZpbGVuYW1lIG9yIGEgVGFySW5mbyBvYmplY3QuIElmIGBtZW1iZXInIGlzIGEgcmVndWxhciBmaWxlLCBhCi0gICAgICAgICAgIGZpbGUtbGlrZSBvYmplY3QgaXMgcmV0dXJuZWQuIElmIGBtZW1iZXInIGlzIGEgbGluaywgYSBmaWxlLWxpa2UKLSAgICAgICAgICAgb2JqZWN0IGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIGxpbmsncyB0YXJnZXQuIElmIGBtZW1iZXInIGlzIG5vbmUgb2YKLSAgICAgICAgICAgdGhlIGFib3ZlLCBOb25lIGlzIHJldHVybmVkLgotICAgICAgICAgICBUaGUgZmlsZS1saWtlIG9iamVjdCBpcyByZWFkLW9ubHkgYW5kIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcKLSAgICAgICAgICAgbWV0aG9kczogcmVhZCgpLCByZWFkbGluZSgpLCByZWFkbGluZXMoKSwgc2VlaygpIGFuZCB0ZWxsKCkKKyAgICAgICAgICAgYSBmaWxlbmFtZSBvciBhIFRhckluZm8gb2JqZWN0LiBJZiBgbWVtYmVyJyBpcyBhIHJlZ3VsYXIgZmlsZSBvciBhCisgICAgICAgICAgIGxpbmssIGFuIGlvLkJ1ZmZlcmVkUmVhZGVyIG9iamVjdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLCBOb25lIGlzCisgICAgICAgICAgIHJldHVybmVkLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fY2hlY2soInIiKQogCkBAIC0yMjA1LDEyICsyMDQ5LDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRhcmluZm8gPSBtZW1iZXIKIAotICAgICAgICBpZiB0YXJpbmZvLmlzcmVnKCk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5maWxlb2JqZWN0KHNlbGYsIHRhcmluZm8pCi0KLSAgICAgICAgZWxpZiB0YXJpbmZvLnR5cGUgbm90IGluIFNVUFBPUlRFRF9UWVBFUzoKLSAgICAgICAgICAgICMgSWYgYSBtZW1iZXIncyB0eXBlIGlzIHVua25vd24sIGl0IGlzIHRyZWF0ZWQgYXMgYQotICAgICAgICAgICAgIyByZWd1bGFyIGZpbGUuCisgICAgICAgIGlmIHRhcmluZm8uaXNyZWcoKSBvciB0YXJpbmZvLnR5cGUgbm90IGluIFNVUFBPUlRFRF9UWVBFUzoKKyAgICAgICAgICAgICMgTWVtYmVycyB3aXRoIHVua25vd24gdHlwZXMgYXJlIHRyZWF0ZWQgYXMgcmVndWxhciBmaWxlcy4KICAgICAgICAgICAgIHJldHVybiBzZWxmLmZpbGVvYmplY3Qoc2VsZiwgdGFyaW5mbykKIAogICAgICAgICBlbGlmIHRhcmluZm8uaXNsbmsoKSBvciB0YXJpbmZvLmlzc3ltKCk6CkBAIC0yMjgyLDkgKzIxMjIsOCBAQAogICAgICAgICAgICAgIyBVc2UgYSBzYWZlIG1vZGUgZm9yIHRoZSBkaXJlY3RvcnksIHRoZSByZWFsIG1vZGUgaXMgc2V0CiAgICAgICAgICAgICAjIGxhdGVyIGluIF9leHRyYWN0X21lbWJlcigpLgogICAgICAgICAgICAgb3MubWtkaXIodGFyZ2V0cGF0aCwgMG83MDApCi0gICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yIGFzIGU6Ci0gICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVFWElTVDoKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgcGFzcwogCiAgICAgZGVmIG1ha2VmaWxlKHNlbGYsIHRhcmluZm8sIHRhcmdldHBhdGgpOgogICAgICAgICAiIiJNYWtlIGEgZmlsZSBjYWxsZWQgdGFyZ2V0cGF0aC4KZGlmZiAtLWdpdCBhL0xpYi90ZW1wZmlsZS5weSBiL0xpYi90ZW1wZmlsZS5weQppbmRleCBiOTBlODI2Li40YWFkN2I1IDEwMDY0NAotLS0gYS9MaWIvdGVtcGZpbGUucHkKKysrIGIvTGliL3RlbXBmaWxlLnB5CkBAIC0xMCw4ICsxMCw2IEBACiAKICAgVE1QX01BWCAgLSBtYXhpbXVtIG51bWJlciBvZiBuYW1lcyB0aGF0IHdpbGwgYmUgdHJpZWQgYmVmb3JlCiAgICAgICAgICAgICAgZ2l2aW5nIHVwLgotICB0ZW1wbGF0ZSAtIHRoZSBkZWZhdWx0IHByZWZpeCBmb3IgYWxsIHRlbXBvcmFyeSBuYW1lcy4KLSAgICAgICAgICAgICBZb3UgbWF5IGNoYW5nZSB0aGlzIHRvIGNvbnRyb2wgdGhlIGRlZmF1bHQgcHJlZml4LgogICB0ZW1wZGlyICAtIElmIHRoaXMgaXMgc2V0IHRvIGEgc3RyaW5nIGJlZm9yZSB0aGUgZmlyc3QgdXNlIG9mCiAgICAgICAgICAgICAgYW55IHJvdXRpbmUgZnJvbSB0aGlzIG1vZHVsZSwgaXQgd2lsbCBiZSBjb25zaWRlcmVkIGFzCiAgICAgICAgICAgICAgYW5vdGhlciBjYW5kaWRhdGUgbG9jYXRpb24gdG8gc3RvcmUgdGVtcG9yYXJ5IGZpbGVzLgpAQCAtNDUsNyArNDMsNyBAQAogICAgIGRlZiBfc2V0X2Nsb2V4ZWMoZmQpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmbGFncyA9IF9mY250bC5mY250bChmZCwgX2ZjbnRsLkZfR0VURkQsIDApCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgZmxhZ3MgcmVhZCBzdWNjZXNzZnVsbHksIG1vZGlmeQpAQCAtNzQsNiArNzIsOCBAQAogZWxzZToKICAgICBUTVBfTUFYID0gMTAwMDAKIAorIyBBbHRob3VnaCBpdCBkb2VzIG5vdCBoYXZlIGFuIHVuZGVyc2NvcmUgZm9yIGhpc3RvcmljYWwgcmVhc29ucywgdGhpcworIyB2YXJpYWJsZSBpcyBhbiBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgKHNlZSBpc3N1ZSAxMDM1NCkuCiB0ZW1wbGF0ZSA9ICJ0bXAiCiAKICMgSW50ZXJuYWwgcm91dGluZXMuCkBAIC04NSwxOSArODUsMTYgQEAKIGVsaWYgaGFzYXR0cihfb3MsICJzdGF0Iik6CiAgICAgX3N0YXQgPSBfb3Muc3RhdAogZWxzZToKLSAgICAjIEZhbGxiYWNrLiAgQWxsIHdlIG5lZWQgaXMgc29tZXRoaW5nIHRoYXQgcmFpc2VzIG9zLmVycm9yIGlmIHRoZQorICAgICMgRmFsbGJhY2suICBBbGwgd2UgbmVlZCBpcyBzb21ldGhpbmcgdGhhdCByYWlzZXMgT1NFcnJvciBpZiB0aGUKICAgICAjIGZpbGUgZG9lc24ndCBleGlzdC4KICAgICBkZWYgX3N0YXQoZm4pOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmID0gb3BlbihmbikKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBfb3MuZXJyb3IKKyAgICAgICAgZiA9IG9wZW4oZm4pCiAgICAgICAgIGYuY2xvc2UoKQogCiBkZWYgX2V4aXN0cyhmbik6CiAgICAgdHJ5OgogICAgICAgICBfc3RhdChmbikKLSAgICBleGNlcHQgX29zLmVycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICByZXR1cm4gRmFsc2UKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gVHJ1ZQpAQCAtMTQ5LDcgKzE0Niw3IEBACiAgICAgIyBBcyBhIGxhc3QgcmVzb3J0LCB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiAgICAgdHJ5OgogICAgICAgICBkaXJsaXN0LmFwcGVuZChfb3MuZ2V0Y3dkKCkpCi0gICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgX29zLmVycm9yKToKKyAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKICAgICAgICAgZGlybGlzdC5hcHBlbmQoX29zLmN1cmRpcikKIAogICAgIHJldHVybiBkaXJsaXN0CkBAIC0xODQsMTIgKzE4MSwxMyBAQAogICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgIF9vcy51bmxpbmsoZmlsZW5hbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGRpcgotICAgICAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBJT0Vycm9yKSBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuYXJnc1swXSAhPSBfZXJybm8uRUVYSVNUOgotICAgICAgICAgICAgICAgICAgICBicmVhayAjIG5vIHBvaW50IHRyeWluZyBtb3JlIG5hbWVzIGluIHRoaXMgZGlyZWN0b3J5CisgICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICByYWlzZSBJT0Vycm9yKF9lcnJuby5FTk9FTlQsCi0gICAgICAgICAgICAgICAgICAiTm8gdXNhYmxlIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm91bmQgaW4gJXMiICUgZGlybGlzdCkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIGJyZWFrICAgIyBubyBwb2ludCB0cnlpbmcgbW9yZSBuYW1lcyBpbiB0aGlzIGRpcmVjdG9yeQorICAgIHJhaXNlIEZpbGVOb3RGb3VuZEVycm9yKF9lcnJuby5FTk9FTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHVzYWJsZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvdW5kIGluICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlybGlzdCkKIAogX25hbWVfc2VxdWVuY2UgPSBOb25lCiAKQEAgLTIxOSwxMiArMjE3LDExIEBACiAgICAgICAgICAgICBmZCA9IF9vcy5vcGVuKGZpbGUsIGZsYWdzLCAwbzYwMCkKICAgICAgICAgICAgIF9zZXRfY2xvZXhlYyhmZCkKICAgICAgICAgICAgIHJldHVybiAoZmQsIF9vcy5wYXRoLmFic3BhdGgoZmlsZSkpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBpZiBlLmVycm5vID09IF9lcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICAgICAgY29udGludWUgIyB0cnkgYWdhaW4KLSAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CisgICAgICAgICAgICBjb250aW51ZSAgICAjIHRyeSBhZ2FpbgogCi0gICAgcmFpc2UgSU9FcnJvcihfZXJybm8uRUVYSVNULCAiTm8gdXNhYmxlIHRlbXBvcmFyeSBmaWxlIG5hbWUgZm91bmQiKQorICAgIHJhaXNlIEZpbGVFeGlzdHNFcnJvcihfZXJybm8uRUVYSVNULAorICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gdXNhYmxlIHRlbXBvcmFyeSBmaWxlIG5hbWUgZm91bmQiKQogCiAKICMgVXNlciB2aXNpYmxlIGludGVyZmFjZXMuCkBAIC0zMDgsMTIgKzMwNSwxMSBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBfb3MubWtkaXIoZmlsZSwgMG83MDApCiAgICAgICAgICAgICByZXR1cm4gZmlsZQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBfZXJybm8uRUVYSVNUOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlICMgdHJ5IGFnYWluCi0gICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgY29udGludWUgICAgIyB0cnkgYWdhaW4KIAotICAgIHJhaXNlIElPRXJyb3IoX2Vycm5vLkVFWElTVCwgIk5vIHVzYWJsZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IG5hbWUgZm91bmQiKQorICAgIHJhaXNlIEZpbGVFeGlzdHNFcnJvcihfZXJybm8uRUVYSVNULAorICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gdXNhYmxlIHRlbXBvcmFyeSBkaXJlY3RvcnkgbmFtZSBmb3VuZCIpCiAKIGRlZiBta3RlbXAoc3VmZml4PSIiLCBwcmVmaXg9dGVtcGxhdGUsIGRpcj1Ob25lKToKICAgICAiIiJVc2VyLWNhbGxhYmxlIGZ1bmN0aW9uIHRvIHJldHVybiBhIHVuaXF1ZSB0ZW1wb3JhcnkgZmlsZSBuYW1lLiAgVGhlCkBAIC0zNDIsNyArMzM4LDggQEAKICAgICAgICAgaWYgbm90IF9leGlzdHMoZmlsZSk6CiAgICAgICAgICAgICByZXR1cm4gZmlsZQogCi0gICAgcmFpc2UgSU9FcnJvcihfZXJybm8uRUVYSVNULCAiTm8gdXNhYmxlIHRlbXBvcmFyeSBmaWxlbmFtZSBmb3VuZCIpCisgICAgcmFpc2UgRmlsZUV4aXN0c0Vycm9yKF9lcnJuby5FRVhJU1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJObyB1c2FibGUgdGVtcG9yYXJ5IGZpbGVuYW1lIGZvdW5kIikKIAogCiBjbGFzcyBfVGVtcG9yYXJ5RmlsZVdyYXBwZXI6CkBAIC02MDgsOCArNjA1LDEzIEBACiAgICAgZGVmIHRlbGwoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9maWxlLnRlbGwoKQogCi0gICAgZGVmIHRydW5jYXRlKHNlbGYpOgotICAgICAgICBzZWxmLl9maWxlLnRydW5jYXRlKCkKKyAgICBkZWYgdHJ1bmNhdGUoc2VsZiwgc2l6ZT1Ob25lKToKKyAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fZmlsZS50cnVuY2F0ZSgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBzaXplID4gc2VsZi5fbWF4X3NpemU6CisgICAgICAgICAgICAgICAgc2VsZi5yb2xsb3ZlcigpCisgICAgICAgICAgICBzZWxmLl9maWxlLnRydW5jYXRlKHNpemUpCiAKICAgICBkZWYgd3JpdGUoc2VsZiwgcyk6CiAgICAgICAgIGZpbGUgPSBzZWxmLl9maWxlCkBAIC02ODIsNyArNjg0LDcgQEAKICAgICBfaXNsaW5rID0gc3RhdGljbWV0aG9kKF9vcy5wYXRoLmlzbGluaykKICAgICBfcmVtb3ZlID0gc3RhdGljbWV0aG9kKF9vcy5yZW1vdmUpCiAgICAgX3JtZGlyID0gc3RhdGljbWV0aG9kKF9vcy5ybWRpcikKLSAgICBfb3NfZXJyb3IgPSBfb3MuZXJyb3IKKyAgICBfb3NfZXJyb3IgPSBPU0Vycm9yCiAgICAgX3dhcm4gPSBfd2FybmluZ3Mud2FybgogCiAgICAgZGVmIF9ybXRyZWUoc2VsZiwgcGF0aCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9idWZmZXJfdGVzdHMucHkgYi9MaWIvdGVzdC9idWZmZXJfdGVzdHMucHkKaW5kZXggNmQyMGY3ZC4uY2Y1NGMyOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvYnVmZmVyX3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L2J1ZmZlcl90ZXN0cy5weQpAQCAtMjAwLDcgKzIwMCwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFyc2hhbChiJ2FiY1xuZGVmXHJcbmdoaVxuXHInKS5zcGxpdGxpbmVzKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2InJywgYidhYmMnLCBiJ2RlZicsIGInZ2hpJywgYicnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hcnNoYWwoYidcbmFiY1xuZGVmXHJcbmdoaVxuXHInKS5zcGxpdGxpbmVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2InJywgYidhYmMnLCBiJ2RlZicsIGInZ2hpJywgYicnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hcnNoYWwoYidcbmFiY1xuZGVmXHJcbmdoaVxuXHInKS5zcGxpdGxpbmVzKEZhbHNlKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbYidcbicsIGInYWJjXG4nLCBiJ2RlZlxyXG4nLCBiJ2doaVxuJywgYidcciddLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFyc2hhbChiJ1xuYWJjXG5kZWZcclxuZ2hpXG5ccicpLnNwbGl0bGluZXMoMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXJzaGFsKGInXG5hYmNcbmRlZlxyXG5naGlcblxyJykuc3BsaXRsaW5lcyhUcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbYicnLCBiJ2FiYycsIGInZGVmJywgYidnaGknLCBiJyddLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFyc2hhbChiJ1xuYWJjXG5kZWZcclxuZ2hpXG5ccicpLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtiJ1xuJywgYidhYmNcbicsIGInZGVmXHJcbicsIGInZ2hpXG4nLCBiJ1xyJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXJzaGFsKGInXG5hYmNcbmRlZlxyXG5naGlcblxyJykuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSkKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubWFyc2hhbChiJ2FiYycpLnNwbGl0bGluZXMsIDQyLCA0MikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NyYXNoZXJzL1JFQURNRSBiL0xpYi90ZXN0L2NyYXNoZXJzL1JFQURNRQppbmRleCAyYTczZTFiLi4wMjU5YTA2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9jcmFzaGVycy9SRUFETUUKKysrIGIvTGliL3Rlc3QvY3Jhc2hlcnMvUkVBRE1FCkBAIC0xNCwzICsxNCw3IEBACiBPbmNlIHRoZSBjcmFzaCBpcyBmaXhlZCwgdGhlIHRlc3QgY2FzZSBzaG91bGQgYmUgbW92ZWQgaW50byBhbiBhcHByb3ByaWF0ZSB0ZXN0CiAoZXZlbiBpZiBpdCB3YXMgb3JpZ2luYWxseSBmcm9tIHRoZSB0ZXN0IHN1aXRlKS4gIFRoaXMgZW5zdXJlcyB0aGUgcmVncmVzc2lvbgogZG9lc24ndCBoYXBwZW4gYWdhaW4uICBBbmQgaWYgaXQgZG9lcywgaXQgc2hvdWxkIGJlIGVhc2llciB0byB0cmFjayBkb3duLgorCitBbHNvIHNlZSBMaWIvdGVzdF9jcmFzaGVycy5weSB3aGljaCBleGVyY2lzZXMgdGhlIGNyYXNoZXJzIGluIHRoaXMgZGlyZWN0b3J5LgorSW4gcGFydGljdWxhciwgbWFrZSBzdXJlIHRvIGFkZCBhbnkgbmV3IGluZmluaXRlIGxvb3AgY3Jhc2hlcnMgdG8gdGhlIGJsYWNrCitsaXN0IHNvIGl0IGRvZXNuJ3QgdHJ5IHRvIHJ1biB0aGVtLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY3Jhc2hlcnMvYm9ycm93ZWRfcmVmXzEucHkgYi9MaWIvdGVzdC9jcmFzaGVycy9ib3Jyb3dlZF9yZWZfMS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjgyZjQ2NC4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9jcmFzaGVycy9ib3Jyb3dlZF9yZWZfMS5weQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLSIiIgotX1B5VHlwZV9Mb29rdXAoKSByZXR1cm5zIGEgYm9ycm93ZWQgcmVmZXJlbmNlLgotVGhpcyBhdHRhY2tzIHRoZSBjYWxsIGluIGRpY3RvYmplY3QuYy4KLSIiIgotCi1jbGFzcyBBKG9iamVjdCk6Ci0gICAgcGFzcwotCi1jbGFzcyBCKG9iamVjdCk6Ci0gICAgZGVmIF9fZGVsX18oc2VsZik6Ci0gICAgICAgIHByaW50KCdoaScpCi0gICAgICAgIGRlbCBELl9fbWlzc2luZ19fCi0KLWNsYXNzIEQoZGljdCk6Ci0gICAgY2xhc3MgX19taXNzaW5nX186Ci0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncyk6Ci0gICAgICAgICAgICBwYXNzCi0KLQotZCA9IEQoKQotYSA9IEEoKQotYS5jeWNsZSA9IGEKLWEub3RoZXIgPSBCKCkKLWRlbCBhCi0KLXByZXYgPSBOb25lCi13aGlsZSAxOgotICAgIGRbNV0KLSAgICBwcmV2ID0gKHByZXYsKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY3Jhc2hlcnMvYm9ycm93ZWRfcmVmXzIucHkgYi9MaWIvdGVzdC9jcmFzaGVycy9ib3Jyb3dlZF9yZWZfMi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmU0MDNlYi4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9jcmFzaGVycy9ib3Jyb3dlZF9yZWZfMi5weQorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLSIiIgotX1B5VHlwZV9Mb29rdXAoKSByZXR1cm5zIGEgYm9ycm93ZWQgcmVmZXJlbmNlLgotVGhpcyBhdHRhY2tzIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyKCkuCi0KLU5CLiBvbiBteSBtYWNoaW5lIHRoaXMgY3Jhc2hlcyBpbiAyLjUgZGVidWcgYnV0IG5vdCByZWxlYXNlLgotIiIiCi0KLWNsYXNzIEEob2JqZWN0KToKLSAgICBwYXNzCi0KLWNsYXNzIEIob2JqZWN0KToKLSAgICBkZWYgX19kZWxfXyhzZWxmKToKLSAgICAgICAgcHJpbnQoImhpIikKLSAgICAgICAgZGVsIEMuZAotCi1jbGFzcyBEKG9iamVjdCk6Ci0gICAgZGVmIF9fc2V0X18oc2VsZiwgb2JqLCB2YWx1ZSk6Ci0gICAgICAgIHNlbGYuaGVsbG8gPSA0MgotCi1jbGFzcyBDKG9iamVjdCk6Ci0gICAgZCA9IEQoKQotCi0gICAgZGVmIGcoKToKLSAgICAgICAgcGFzcwotCi0KLWMgPSBDKCkKLWEgPSBBKCkKLWEuY3ljbGUgPSBhCi1hLm90aGVyID0gQigpCi0KLWxzdCA9IFtOb25lXSAqIDEwMDAwMDAKLWkgPSAwCi1kZWwgYQotd2hpbGUgMToKLSAgICBjLmQgPSA0MiAgICAgICAgICMgc2VnZmF1bHRzIGluIFB5TWV0aG9kX05ldyhfX2Z1bmNfXz1ELl9fc2V0X18sIF9fc2VsZl9fPWQpCi0gICAgbHN0W2ldID0gYy5nICAgICAjIGNvbnN1bWUgdGhlIGZyZWUgbGlzdCBvZiBpbnN0YW5jZW1ldGhvZCBvYmplY3RzCi0gICAgaSArPSAxCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jcmFzaGVycy9jb21waWxlcl9yZWN1cnNpb24ucHkgYi9MaWIvdGVzdC9jcmFzaGVycy9jb21waWxlcl9yZWN1cnNpb24ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NTRiZGQuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvY3Jhc2hlcnMvY29tcGlsZXJfcmVjdXJzaW9uLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0iIiIKLVRoZSBjb21waWxlciAoPj0gMi41KSByZWN1cnNlcyBoYXBwaWx5LgotIiIiCi0KLWNvbXBpbGUoJygpJyo5Kio1LCAnPycsICdleGVjJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NyYXNoZXJzL2xvb3NpbmdfbXJvX3JlZi5weSBiL0xpYi90ZXN0L2NyYXNoZXJzL2xvb3NpbmdfbXJvX3JlZi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNiY2QzMi4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9jcmFzaGVycy9sb29zaW5nX21yb19yZWYucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0iIiIKLVRoZXJlIGlzIGEgd2F5IHRvIHB1dCBrZXlzIG9mIGFueSB0eXBlIGluIGEgdHlwZSdzIGRpY3Rpb25hcnkuCi1JIHRoaW5rIHRoaXMgYWxsb3dzIHZhcmlvdXMga2luZHMgb2YgY3Jhc2hlcywgYnV0IHNvIGZhciBJIGhhdmUgb25seQotZm91bmQgYSBjb252b2x1dGVkIGF0dGFjayBvZiBfUHlUeXBlX0xvb2t1cCgpLCB3aGljaCB1c2VzIHRoZSBtcm8gb2YgdGhlCi10eXBlIHdpdGhvdXQgaG9sZGluZyBhIHN0cm9uZyByZWZlcmVuY2UgdG8gaXQuICBQcm9iYWJseSB3b3JrcyB3aXRoCi1zdXBlci5fX2dldGF0dHJpYnV0ZV9fKCkgdG9vLCB3aGljaCB1c2VzIHRoZSBzYW1lIGtpbmQgb2YgY29kZS4KLSIiIgotCi1jbGFzcyBNeUtleShvYmplY3QpOgotICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGhhc2goJ215a2V5JykKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICAjIHRoZSBmb2xsb3dpbmcgbGluZSBkZWNyZWZzIHRoZSBwcmV2aW91cyBYLl9fbXJvX18KLSAgICAgICAgWC5fX2Jhc2VzX18gPSAoQmFzZTIsKQotICAgICAgICAjIHRyYXNoIGFsbCB0dXBsZXMgb2YgbGVuZ3RoIDMsIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpdGVtcyBvZgotICAgICAgICAjIHRoZSBwcmV2aW91cyBYLl9fbXJvX18gYXJlIHJlYWxseSBnYXJiYWdlCi0gICAgICAgIHogPSBbXQotICAgICAgICBmb3IgaSBpbiByYW5nZSgxMDAwKToKLSAgICAgICAgICAgIHouYXBwZW5kKChpLCBOb25lLCBOb25lKSkKLSAgICAgICAgcmV0dXJuIDAKLQotCi1jbGFzcyBCYXNlKG9iamVjdCk6Ci0gICAgbXlrZXkgPSAnZnJvbSBCYXNlJwotCi1jbGFzcyBCYXNlMihvYmplY3QpOgotICAgIG15a2V5ID0gJ2Zyb20gQmFzZTInCi0KLSMgeW91IGNhbid0IGFkZCBhIG5vbi1zdHJpbmcga2V5IHRvIFguX19kaWN0X18sIGJ1dCBpdCBjYW4gYmUKLSMgdGhlcmUgZnJvbSB0aGUgYmVnaW5uaW5nIDotKQotWCA9IHR5cGUoJ1gnLCAoQmFzZSwpLCB7TXlLZXkoKTogNX0pCi0KLXByaW50KFgubXlrZXkpCi0jIEkgZ2V0IGEgc2VnZmF1bHQsIG9yIGEgc2xpZ2h0bHkgd3JvbmcgYXNzZXJ0aW9uIGVycm9yIGluIGEgZGVidWcgYnVpbGQuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jcmFzaGVycy9uYXN0eV9lcV92c19kaWN0LnB5IGIvTGliL3Rlc3QvY3Jhc2hlcnMvbmFzdHlfZXFfdnNfZGljdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVmN2NhZi4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9jcmFzaGVycy9uYXN0eV9lcV92c19kaWN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotIyBmcm9tIGh0dHA6Ly9tYWlsLnB5dGhvbi5vcmcvcGlwZXJtYWlsL3B5dGhvbi1kZXYvMjAwMS1KdW5lLzAxNTIzOS5odG1sCi0KLSMgaWYgeW91IGtlZXAgY2hhbmdpbmcgYSBkaWN0aW9uYXJ5IHdoaWxlIGxvb2tpbmcgdXAgYSBrZXksIHlvdSBjYW4KLSMgcHJvdm9rZSBhbiBpbmZpbml0ZSByZWN1cnNpb24gaW4gQwotCi0jIEF0IHRoZSB0aW1lIG5laXRoZXIgVGltIG5vciBNaWNoYWVsIGNvdWxkIGJlIGJvdGhlcmVkIHRvIHRoaW5rIG9mIGEKLSMgd2F5IHRvIGZpeCBpdC4KLQotY2xhc3MgWXVjazoKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuaSA9IDAKLQotICAgIGRlZiBtYWtlX2Rhbmdlcm91cyhzZWxmKToKLSAgICAgICAgc2VsZi5pID0gMQotCi0gICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICAjIGRpcmVjdCB0byBzbG90IDQgaW4gdGFibGUgb2Ygc2l6ZSA4OyBzbG90IDEyIHdoZW4gc2l6ZSAxNgotICAgICAgICByZXR1cm4gNCArIDgKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBpZiBzZWxmLmkgPT0gMDoKLSAgICAgICAgICAgICMgbGVhdmUgZGljdCBhbG9uZQotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbGlmIHNlbGYuaSA9PSAxOgotICAgICAgICAgICAgIyBmaWRkbGUgdG8gMTYgc2xvdHMKLSAgICAgICAgICAgIHNlbGYuX19maWxsX2RpY3QoNikKLSAgICAgICAgICAgIHNlbGYuaSA9IDIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgZmlkZGxlIHRvIDggc2xvdHMKLSAgICAgICAgICAgIHNlbGYuX19maWxsX2RpY3QoNCkKLSAgICAgICAgICAgIHNlbGYuaSA9IDEKLQotICAgICAgICByZXR1cm4gMQotCi0gICAgZGVmIF9fZmlsbF9kaWN0KHNlbGYsIG4pOgotICAgICAgICBzZWxmLmkgPSAwCi0gICAgICAgIGRpY3QuY2xlYXIoKQotICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKLSAgICAgICAgICAgIGRpY3RbaV0gPSBpCi0gICAgICAgIGRpY3Rbc2VsZl0gPSAiT0shIgotCi15ID0gWXVjaygpCi1kaWN0ID0ge3k6ICJPSyEifQotCi16ID0gWXVjaygpCi15Lm1ha2VfZGFuZ2Vyb3VzKCkKLXByaW50KGRpY3Rbel0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jcmFzaGVycy9yZWN1cnNpb25fbGltaXRfdG9vX2hpZ2gucHkgYi9MaWIvdGVzdC9jcmFzaGVycy9yZWN1cnNpb25fbGltaXRfdG9vX2hpZ2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjNjQ5MzYuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvY3Jhc2hlcnMvcmVjdXJzaW9uX2xpbWl0X3Rvb19oaWdoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotIyBUaGUgZm9sbG93aW5nIGV4YW1wbGUgbWF5IGNyYXNoIG9yIG5vdCBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgotIyBFLmcuIG9uIDMyLWJpdCBJbnRlbCBMaW51eCBpbiBhICJzdGFuZGFyZCIgY29uZmlndXJhdGlvbiBpdCBzZWVtcyB0bwotIyBjcmFzaCBvbiBQeXRob24gMi41IChidXQgbm90IDIuNCBub3IgMi4zKS4gIE9uIFdpbmRvd3MgdGhlIGltcG9ydAotIyBldmVudHVhbGx5IGZhaWxzIHRvIGZpbmQgdGhlIG1vZHVsZSwgcG9zc2libHkgYmVjYXVzZSB3ZSBydW4gb3V0IG9mCi0jIGZpbGUgaGFuZGxlcy4KLQotIyBUaGUgcG9pbnQgb2YgdGhpcyBleGFtcGxlIGlzIHRvIHNob3cgdGhhdCBzeXMuc2V0cmVjdXJzaW9ubGltaXQoKSBpcyBhCi0jIGhhY2ssIGFuZCBub3QgYSByb2J1c3Qgc29sdXRpb24uICBUaGlzIGV4YW1wbGUgc2ltcGx5IGV4ZXJjaXNlcyBhIHBhdGgKLSMgd2hlcmUgaXQgdGFrZXMgbWFueSBDLWxldmVsIHJlY3Vyc2lvbnMsIGNvbnN1bWluZyBhIGxvdCBvZiBzdGFjawotIyBzcGFjZSwgZm9yIGVhY2ggUHl0aG9uLWxldmVsIHJlY3Vyc2lvbi4gIFNvIDEwMDAgdGltZXMgdGhpcyBhbW91bnQgb2YKLSMgc3RhY2sgc3BhY2UgbWF5IGJlIHRvbyBtdWNoIGZvciBzdGFuZGFyZCBwbGF0Zm9ybXMgYWxyZWFkeS4KLQotaW1wb3J0IHN5cwotaWYgJ3JlY3Vyc2lvbl9saW1pdF90b29faGlnaCcgaW4gc3lzLm1vZHVsZXM6Ci0gICAgZGVsIHN5cy5tb2R1bGVzWydyZWN1cnNpb25fbGltaXRfdG9vX2hpZ2gnXQotaW1wb3J0IHJlY3Vyc2lvbl9saW1pdF90b29faGlnaApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZGF0ZXRpbWV0ZXN0ZXIucHkgYi9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQppbmRleCBiYjE4NjMwLi45MzFlZjZmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQorKysgYi9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQpAQCAtOTc5LDcgKzk3OSw3IEBACiAgICAgICAgICMgZXhlbXB0IHN1Y2ggcGxhdGZvcm1zIChwcm92aWRlZCB0aGV5IHJldHVybiByZWFzb25hYmxlCiAgICAgICAgICMgcmVzdWx0cyEpLgogICAgICAgICBmb3IgaW5zYW5lIGluIC0xZTIwMCwgMWUyMDA6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAsCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNhbmUpCiAKICAgICBkZWYgdGVzdF90b2RheShzZWxmKToKQEAgLTEyOTEsMTIgKzEyOTEsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYudGhlY2xhc3MubWluKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi50aGVjbGFzcy5tYXgpCiAKLSAgICBkZWYgdGVzdF9zdHJmdGltZV9vdXRfb2ZfcmFuZ2Uoc2VsZik6Ci0gICAgICAgICMgRm9yIG5hc3R5IHRlY2huaWNhbCByZWFzb25zLCB3ZSBjYW4ndCBoYW5kbGUgeWVhcnMgYmVmb3JlIDEwMDAuCi0gICAgICAgIGNscyA9IHNlbGYudGhlY2xhc3MKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbHMoMTAwMCwgMSwgMSkuc3RyZnRpbWUoIiVZIiksICIxMDAwIikKLSAgICAgICAgZm9yIHkgaW4gMSwgNDksIDUxLCA5OSwgMTAwLCA5OTk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjbHMoeSwgMSwgMSkuc3RyZnRpbWUsICIlWSIpCisgICAgZGVmIHRlc3Rfc3RyZnRpbWVfeTJrKHNlbGYpOgorICAgICAgICBmb3IgeSBpbiAoMSwgNDksIDcwLCA5OSwgMTAwLCA5OTksIDEwMDAsIDE5NzApOgorICAgICAgICAgICAgZCA9IHNlbGYudGhlY2xhc3MoeSwgMSwgMSkKKyAgICAgICAgICAgICMgSXNzdWUgMTMzMDU6ICBGb3IgeWVhcnMgPCAxMDAwLCB0aGUgdmFsdWUgaXMgbm90IGFsd2F5cworICAgICAgICAgICAgIyBwYWRkZWQgdG8gNCBkaWdpdHMgYWNyb3NzIHBsYXRmb3Jtcy4gIFRoZSBDIHN0YW5kYXJkCisgICAgICAgICAgICAjIGFzc3VtZXMgeWVhciA+PSAxOTAwLCBzbyBpdCBkb2VzIG5vdCBzcGVjaWZ5IHRoZSBudW1iZXIKKyAgICAgICAgICAgICMgb2YgZGlnaXRzLgorICAgICAgICAgICAgaWYgZC5zdHJmdGltZSgiJVkiKSAhPSAnJTA0ZCcgJSB5OgorICAgICAgICAgICAgICAgICMgWWVhciA0MiByZXR1cm5zICc0MicsIG5vdCBwYWRkZWQKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuc3RyZnRpbWUoIiVZIiksICclZCcgJSB5KQorICAgICAgICAgICAgICAgICMgJzAwNDInIGlzIG9idGFpbmVkIGFueXdheQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5zdHJmdGltZSgiJTRZIiksICclMDRkJyAlIHkpCiAKICAgICBkZWYgdGVzdF9yZXBsYWNlKHNlbGYpOgogICAgICAgICBjbHMgPSBzZWxmLnRoZWNsYXNzCkBAIC0xNzMxLDEzICsxNzM3LDc0IEBACiAgICAgICAgIGdvdCA9IHNlbGYudGhlY2xhc3MudXRjZnJvbXRpbWVzdGFtcCh0cykKICAgICAgICAgc2VsZi52ZXJpZnlfZmllbGRfZXF1YWxpdHkoZXhwZWN0ZWQsIGdvdCkKIAorICAgICMgUnVuIHdpdGggVVMtc3R5bGUgRFNUIHJ1bGVzOiBEU1QgYmVnaW5zIDIgYS5tLiBvbiBzZWNvbmQgU3VuZGF5IGluCisgICAgIyBNYXJjaCAoTTMuMi4wKSBhbmQgZW5kcyAyIGEubS4gb24gZmlyc3QgU3VuZGF5IGluIE5vdmVtYmVyIChNMTEuMS4wKS4KKyAgICBAc3VwcG9ydC5ydW5fd2l0aF90eignRVNUKzA1RURULE0zLjIuMCxNMTEuMS4wJykKKyAgICBkZWYgdGVzdF90aW1lc3RhbXBfbmFpdmUoc2VsZik6CisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDE5NzAsIDEsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC50aW1lc3RhbXAoKSwgMTgwMDAuMCkKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMTk3MCwgMSwgMSwgMSwgMiwgMywgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnRpbWVzdGFtcCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDE4MDAwLjAgKyAzNjAwICsgMio2MCArIDMgKyA0KjFlLTYpCisgICAgICAgICMgTWlzc2luZyBob3VyIG1heSBwcm9kdWNlIHBsYXRmb3JtLWRlcGVuZGVudCByZXN1bHQKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMjAxMiwgMywgMTEsIDIsIDMwKQorICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCh0LnRpbWVzdGFtcCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICBbdCAtIHRpbWVkZWx0YShob3Vycz0xKSwgdCArIHRpbWVkZWx0YShob3Vycz0xKV0pCisgICAgICAgICMgQW1iaWd1b3VzIGhvdXIgZGVmYXVsdHMgdG8gRFNUCisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDIwMTIsIDExLCA0LCAxLCAzMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAodC50aW1lc3RhbXAoKSksIHQpCisKKyAgICAgICAgIyBUaW1lc3RhbXAgbWF5IHJhaXNlIGFuIG92ZXJmbG93IGVycm9yIG9uIHNvbWUgcGxhdGZvcm1zCisgICAgICAgIGZvciB0IGluIFtzZWxmLnRoZWNsYXNzKDEsMSwxKSwgc2VsZi50aGVjbGFzcyg5OTk5LDEyLDEyKV06CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcyA9IHQudGltZXN0YW1wKCkKKyAgICAgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAocyksIHQpCisKKyAgICBkZWYgdGVzdF90aW1lc3RhbXBfYXdhcmUoc2VsZik6CisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDE5NzAsIDEsIDEsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC50aW1lc3RhbXAoKSwgMC4wKQorICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxOTcwLCAxLCAxLCAxLCAyLCAzLCA0LCB0emluZm89dGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQudGltZXN0YW1wKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgMzYwMCArIDIqNjAgKyAzICsgNCoxZS02KQorICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxOTcwLCAxLCAxLCAxLCAyLCAzLCA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm89dGltZXpvbmUodGltZWRlbHRhKGhvdXJzPS01KSwgJ0VTVCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQudGltZXN0YW1wKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgMTgwMDAgKyAzNjAwICsgMio2MCArIDMgKyA0KjFlLTYpCiAgICAgZGVmIHRlc3RfbWljcm9zZWNvbmRfcm91bmRpbmcoc2VsZik6Ci0gICAgICAgICMgVGVzdCB3aGV0aGVyIGZyb210aW1lc3RhbXAgInJvdW5kcyB1cCIgZmxvYXRzIHRoYXQgYXJlIGxlc3MKLSAgICAgICAgIyB0aGFuIDEvMiBtaWNyb3NlY29uZCBzbWFsbGVyIHRoYW4gYW4gaW50ZWdlci4KICAgICAgICAgZm9yIGZ0cyBpbiBbc2VsZi50aGVjbGFzcy5mcm9tdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICBzZWxmLnRoZWNsYXNzLnV0Y2Zyb210aW1lc3RhbXBdOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdHMoMC45OTk5OTk5KSwgZnRzKDEpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdHMoMC45OTk5OTk0OSkubWljcm9zZWNvbmQsIDk5OTk5OSkKKyAgICAgICAgICAgIHplcm8gPSBmdHMoMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemVyby5zZWNvbmQsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHplcm8ubWljcm9zZWNvbmQsIDApCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbWludXNfb25lID0gZnRzKC0xZS02KQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgIyBsb2NhbHRpbWUoLTEpIGFuZCBnbXRpbWUoLTEpIGlzIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93cworICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtaW51c19vbmUuc2Vjb25kLCA1OSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pbnVzX29uZS5taWNyb3NlY29uZCwgOTk5OTk5KQorCisgICAgICAgICAgICAgICAgdCA9IGZ0cygtMWUtOCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsIG1pbnVzX29uZSkKKyAgICAgICAgICAgICAgICB0ID0gZnRzKC05ZS03KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgbWludXNfb25lKQorICAgICAgICAgICAgICAgIHQgPSBmdHMoLTFlLTcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCBtaW51c19vbmUpCisKKyAgICAgICAgICAgIHQgPSBmdHMoMWUtNykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgemVybykKKyAgICAgICAgICAgIHQgPSBmdHMoOWUtNykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgemVybykKKyAgICAgICAgICAgIHQgPSBmdHMoMC45OTk5OTk0OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5zZWNvbmQsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQubWljcm9zZWNvbmQsIDk5OTk5OSkKKyAgICAgICAgICAgIHQgPSBmdHMoMC45OTk5OTk5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnNlY29uZCwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5taWNyb3NlY29uZCwgOTk5OTk5KQogCiAgICAgZGVmIHRlc3RfaW5zYW5lX2Zyb210aW1lc3RhbXAoc2VsZik6CiAgICAgICAgICMgSXQncyBwb3NzaWJsZSB0aGF0IHNvbWUgcGxhdGZvcm0gbWFwcyB0aW1lX3QgdG8gZG91YmxlLApAQCAtMTc0NSw3ICsxODEyLDcgQEAKICAgICAgICAgIyBleGVtcHQgc3VjaCBwbGF0Zm9ybXMgKHByb3ZpZGVkIHRoZXkgcmV0dXJuIHJlYXNvbmFibGUKICAgICAgICAgIyByZXN1bHRzISkuCiAgICAgICAgIGZvciBpbnNhbmUgaW4gLTFlMjAwLCAxZTIwMDoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2FuZSkKIAogICAgIGRlZiB0ZXN0X2luc2FuZV91dGNmcm9tdGltZXN0YW1wKHNlbGYpOgpAQCAtMTc1NCw3ICsxODIxLDcgQEAKICAgICAgICAgIyBleGVtcHQgc3VjaCBwbGF0Zm9ybXMgKHByb3ZpZGVkIHRoZXkgcmV0dXJuIHJlYXNvbmFibGUKICAgICAgICAgIyByZXN1bHRzISkuCiAgICAgICAgIGZvciBpbnNhbmUgaW4gLTFlMjAwLCAxZTIwMDoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudGhlY2xhc3MudXRjZnJvbXRpbWVzdGFtcCwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNlbGYudGhlY2xhc3MudXRjZnJvbXRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2FuZSkKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luZG93cyBkb2Vzbid0IGFjY2VwdCBuZWdhdGl2ZSB0aW1lc3RhbXBzIikKICAgICBkZWYgdGVzdF9uZWdhdGl2ZV9mbG9hdF9mcm9tdGltZXN0YW1wKHNlbGYpOgpAQCAtMTkwNyw3ICsxOTc0LDcgQEAKICAgICAgICAgIyBzaW1wbHkgY2FuJ3QgYmUgYXBwbGllZCB0byBhIG5haXZlIG9iamVjdC4KICAgICAgICAgZHQgPSBzZWxmLnRoZWNsYXNzLm5vdygpCiAgICAgICAgIGYgPSBGaXhlZE9mZnNldCg0NCwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZHQuYXN0aW1lem9uZSkgIyBub3QgZW5vdWdoIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZHQuYXN0aW1lem9uZSkgIyBuYWl2ZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGR0LmFzdGltZXpvbmUsIGYsIGYpICMgdG9vIG1hbnkgYXJncwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGR0LmFzdGltZXpvbmUsIGR0KSAjIGFyZyB3cm9uZyB0eXBlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGR0LmFzdGltZXpvbmUsIGYpICMgbmFpdmUKQEAgLTI0NzksNyArMjU0Niw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MiwgdDMpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiB0NCA9PSB0NSkgIyBtaXhlZCB0ei1hd2FyZSAmIG5haXZlCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodDQsIHQ1KSAjIG1peGVkIHR6LWF3YXJlICYgbmFpdmUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IHQ0IDwgdDUpICMgbWl4ZWQgdHotYXdhcmUgJiBuYWl2ZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogdDUgPCB0NCkgIyBtaXhlZCB0ei1hd2FyZSAmIG5haXZlCiAKQEAgLTI2MzEsNyArMjY5OCw3IEBACiAgICAgICAgIHQyID0gdDIucmVwbGFjZSh0emluZm89Rml4ZWRPZmZzZXQoTm9uZSwgIiIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKICAgICAgICAgdDIgPSB0Mi5yZXBsYWNlKHR6aW5mbz1GaXhlZE9mZnNldCgwLCAiIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiB0MSA9PSB0MikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0MSwgdDIpCiAKICAgICAgICAgIyBJbiB0aW1lIHcvIGlkZW50aWNhbCB0emluZm8gb2JqZWN0cywgdXRjb2Zmc2V0IGlzIGlnbm9yZWQuCiAgICAgICAgIGNsYXNzIFZhcmllcyh0emluZm8pOgpAQCAtMjczNiwxNiArMjgwMywxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWljcm9zZWNvbmQ9MSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQxID4gdDIpCiAKLSAgICAgICAgIyBNYWtlIHQyIG5haXZlIGFuZCBpdCBzaG91bGQgZmFpbC4KKyAgICAgICAgIyBNYWtlIHQyIG5haXZlIGFuZCBpdCBzaG91bGQgZGlmZmVyLgogICAgICAgICB0MiA9IHNlbGYudGhlY2xhc3MubWluCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiB0MSA9PSB0MikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0MSwgdDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDIsIHQyKQogCiAgICAgICAgICMgSXQncyBhbHNvIG5haXZlIGlmIGl0IGhhcyB0emluZm8gYnV0IHR6aW5mby51dGNvZmZzZXQoKSBpcyBOb25lLgogICAgICAgICBjbGFzcyBOYWl2ZSh0emluZm8pOgogICAgICAgICAgICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6IHJldHVybiBOb25lCiAgICAgICAgIHQyID0gc2VsZi50aGVjbGFzcyg1LCA2LCA3LCB0emluZm89TmFpdmUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IHQxID09IHQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHQxLCB0MikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MiwgdDIpCiAKICAgICAgICAgIyBPVE9ILCBpdCdzIE9LIHRvIGNvbXBhcmUgdHdvIG9mIHRoZXNlIG1peGluZyB0aGUgdHdvIHdheXMgb2YgYmVpbmcKQEAgLTMxODgsOCArMzI1NSw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkdC50emluZm8gaXMgZjQ0bSkKICAgICAgICAgIyBSZXBsYWNpbmcgd2l0aCBkZWdlbmVyYXRlIHR6aW5mbyByYWlzZXMgYW4gZXhjZXB0aW9uLgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkdC5hc3RpbWV6b25lLCBmbm9uZSkKLSAgICAgICAgIyBEaXR0byB3aXRoIE5vbmUgdHouCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZHQuYXN0aW1lem9uZSwgTm9uZSkKICAgICAgICAgIyBSZXBsYWNpbmcgd2l0aCBzYW1lIHR6aW5mbyBtYWtlcyBubyBjaGFuZ2UuCiAgICAgICAgIHggPSBkdC5hc3RpbWV6b25lKGR0LnR6aW5mbykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHgudHppbmZvIGlzIGY0NG0pCkBAIC0zMjA5LDYgKzMyNzQsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdvdC50emluZm8gaXMgZXhwZWN0ZWQudHppbmZvKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdvdCwgZXhwZWN0ZWQpCiAKKyAgICBAc3VwcG9ydC5ydW5fd2l0aF90eignVVRDJykKKyAgICBkZWYgdGVzdF9hc3RpbWV6b25lX2RlZmF1bHRfdXRjKHNlbGYpOgorICAgICAgICBkdCA9IHNlbGYudGhlY2xhc3Mubm93KHRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5hc3RpbWV6b25lKE5vbmUpLCBkdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5hc3RpbWV6b25lKCksIGR0KQorCisgICAgIyBOb3RlIHRoYXQgb2Zmc2V0IGluIFRaIHZhcmlhYmxlIGhhcyB0aGUgb3Bwb3NpdGUgc2lnbiB0byB0aGF0CisgICAgIyBwcm9kdWNlZCBieSAleiBkaXJlY3RpdmUuCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfYXN0aW1lem9uZV9kZWZhdWx0X2Vhc3Rlcm4oc2VsZik6CisgICAgICAgIGR0ID0gc2VsZi50aGVjbGFzcygyMDEyLCAxMSwgNCwgNiwgMzAsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIGxvY2FsID0gZHQuYXN0aW1lem9uZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQsIGxvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsLnN0cmZ0aW1lKCIleiAlWiIpLCAiLTA1MDAgRVNUIikKKyAgICAgICAgZHQgPSBzZWxmLnRoZWNsYXNzKDIwMTIsIDExLCA0LCA1LCAzMCwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICAgICAgbG9jYWwgPSBkdC5hc3RpbWV6b25lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdCwgbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWwuc3RyZnRpbWUoIiV6ICVaIiksICItMDQwMCBFRFQiKQorCiAgICAgZGVmIHRlc3RfYXdhcmVfc3VidHJhY3Qoc2VsZik6CiAgICAgICAgIGNscyA9IHNlbGYudGhlY2xhc3MKIApAQCAtMzI2Miw3ICszMzQ2LDcgQEAKICAgICAgICAgdDIgPSB0Mi5yZXBsYWNlKHR6aW5mbz1GaXhlZE9mZnNldChOb25lLCAiIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQogICAgICAgICB0MiA9IHQyLnJlcGxhY2UodHppbmZvPUZpeGVkT2Zmc2V0KDAsICIiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IHQxID09IHQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHQxLCB0MikKIAogICAgICAgICAjIEluIGRhdGV0aW1lIHcvIGlkZW50aWNhbCB0emluZm8gb2JqZWN0cywgdXRjb2Zmc2V0IGlzIGlnbm9yZWQuCiAgICAgICAgIGNsYXNzIFZhcmllcyh0emluZm8pOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZGVjaW1hbHRlc3RkYXRhL2V4dHJhLmRlY1Rlc3QgYi9MaWIvdGVzdC9kZWNpbWFsdGVzdGRhdGEvZXh0cmEuZGVjVGVzdAppbmRleCBmZThiNzdhLi5iNjMwZDhlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9kZWNpbWFsdGVzdGRhdGEvZXh0cmEuZGVjVGVzdAorKysgYi9MaWIvdGVzdC9kZWNpbWFsdGVzdGRhdGEvZXh0cmEuZGVjVGVzdApAQCAtMjIyLDEyICsyMjIsMjUgQEAKIGV4dHIxNzAxIHBvd2VyIDEwMC4wIC01NTcuNzFlLTc0Mjg4ODg4OCAtPiAxLjAwMDAwMDAwMDAwMDAwMCBJbmV4YWN0IFJvdW5kZWQKIGV4dHIxNzAyIHBvd2VyIDEwIDFlLTEwMCAtPiAxLjAwMDAwMDAwMDAwMDAwMCBJbmV4YWN0IFJvdW5kZWQKIAorLS0gQW5vdGhlciBvbmUgKHNlZSBpc3N1ZSAjMTIwODApLiAgVGhhbmtzIGFnYWluIHRvIFN0ZWZhbiBLcmFoLgorZXh0cjE3MDMgcG93ZXIgNCAtMS4yZS05OTk5OTk5OTkgLT4gMS4wMDAwMDAwMDAwMDAwMDAgSW5leGFjdCBSb3VuZGVkCisKIC0tIEEgY291cGxlIG9mIGludGVyZXN0aW5nIGV4YWN0IGNhc2VzIGZvciBwb3dlci4gIE5vdGUgdGhhdCB0aGUgc3BlY2lmaWNhdGlvbgogLS0gcmVxdWlyZXMgdGhlc2UgdG8gYmUgcmVwb3J0ZWQgYXMgSW5leGFjdC4KIGV4dHIxNzEwIHBvd2VyIDFlMzc1IDU2ZS0zIC0+IDEuMDAwMDAwMDAwMDAwMDAwRSsyMSBJbmV4YWN0IFJvdW5kZWQKIGV4dHIxNzExIHBvd2VyIDEwMDAwIDAuNzUgLT4gMTAwMC4wMDAwMDAwMDAwMDAgSW5leGFjdCBSb3VuZGVkCiBleHRyMTcxMiBwb3dlciAxZS0yNCAwLjg3NSAtPiAxLjAwMDAwMDAwMDAwMDAwMEUtMjEgSW5leGFjdCBSb3VuZGVkCiAKKy0tIFNvbWUgbW9yZSBleGFjdCBjYXNlcywgZXhlcmNpc2luZyBwb3dlciB3aXRoIG5lZ2F0aXZlIHNlY29uZCBhcmd1bWVudC4KK2V4dHIxNzIwIHBvd2VyIDQwMCAtMC41IC0+IDAuMDUwMDAwMDAwMDAwMDAwMDAgSW5leGFjdCBSb3VuZGVkCitleHRyMTcyMSBwb3dlciA0MDk2IC0wLjc1IC0+IDAuMDAxOTUzMTI1MDAwMDAwMDAwIEluZXhhY3QgUm91bmRlZAorZXh0cjE3MjIgcG93ZXIgNjI1ZTQgLTAuMjUgLT4gMC4wMjAwMDAwMDAwMDAwMDAwMCBJbmV4YWN0IFJvdW5kZWQKKworLS0gTm9uZXhhY3QgY2FzZXMsIHRvIGV4ZXJjaXNlIHNvbWUgb2YgdGhlIGVhcmx5IGV4aXQgY29uZGl0aW9ucyBmcm9tCistLSBfcG93ZXJfZXhhY3QuCitleHRyMTczMCBwb3dlciAyMDQ4IC0wLjc1IC0+IDAuMDAzMjg0NzUxNjIyMDg0ODIyIEluZXhhY3QgUm91bmRlZAorCisKIC0tIFRlc3RzIGZvciB0aGUgaXNfKiBib29sZWFuIG9wZXJhdGlvbnMKIHByZWNpc2lvbjogOQogbWF4RXhwb25lbnQ6IDk5OQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZGg1MTIucGVtIGIvTGliL3Rlc3QvZGg1MTIucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMGQxNmMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kaDUxMi5wZW0KQEAgLTAsMCArMSw5IEBACistLS0tLUJFR0lOIERIIFBBUkFNRVRFUlMtLS0tLQorTUVZQ1FRRDFLdjg4NGJFcFFCZ1JqWHlFcHdweTFvYkVBeG5JQnlsNnlwVU0yWmFmcTlBS1VKc0NSdE1JUFdhaworWFVHZm5IeTlpVXNpR1NhNnE2SmV3MVhwS2dWZkFnRUMKKy0tLS0tRU5EIERIIFBBUkFNRVRFUlMtLS0tLQorCitUaGVzZSBhcmUgdGhlIDUxMiBiaXQgREggcGFyYW1ldGVycyBmcm9tICJBc3NpZ25lZCBOdW1iZXIgZm9yIFNLSVAgUHJvdG9jb2xzIgorKGh0dHA6Ly93d3cuc2tpcC12cG4ub3JnL3NwZWMvbnVtYmVycy5odG1sKS4KK1NlZSB0aGVyZSBmb3IgaG93IHRoZXkgd2VyZSBnZW5lcmF0ZWQuCitOb3RlIHRoYXQgZyBpcyBub3QgYSBnZW5lcmF0b3IsIGJ1dCB0aGlzIGlzIG5vdCBhIHByb2JsZW0gc2luY2UgcCBpcyBhIHNhZmUgcHJpbWUuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dCBiL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CmluZGV4IDUwMzdiMzMuLjFjMWY2OWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CisrKyBiL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CkBAIC0xMSwxMSArMTEsNiBAQAogICAgICAgKy0tIEFzc2VydGlvbkVycm9yCiAgICAgICArLS0gQXR0cmlidXRlRXJyb3IKICAgICAgICstLSBCdWZmZXJFcnJvcgotICAgICAgKy0tIEVudmlyb25tZW50RXJyb3IKLSAgICAgIHwgICAgKy0tIElPRXJyb3IKLSAgICAgIHwgICAgKy0tIE9TRXJyb3IKLSAgICAgIHwgICAgICAgICArLS0gV2luZG93c0Vycm9yIChXaW5kb3dzKQotICAgICAgfCAgICAgICAgICstLSBWTVNFcnJvciAoVk1TKQogICAgICAgKy0tIEVPRkVycm9yCiAgICAgICArLS0gSW1wb3J0RXJyb3IKICAgICAgICstLSBMb29rdXBFcnJvcgpAQCAtMjQsNiArMTksMjIgQEAKICAgICAgICstLSBNZW1vcnlFcnJvcgogICAgICAgKy0tIE5hbWVFcnJvcgogICAgICAgfCAgICArLS0gVW5ib3VuZExvY2FsRXJyb3IKKyAgICAgICstLSBPU0Vycm9yCisgICAgICB8ICAgICstLSBCbG9ja2luZ0lPRXJyb3IKKyAgICAgIHwgICAgKy0tIENoaWxkUHJvY2Vzc0Vycm9yCisgICAgICB8ICAgICstLSBDb25uZWN0aW9uRXJyb3IKKyAgICAgIHwgICAgfCAgICArLS0gQnJva2VuUGlwZUVycm9yCisgICAgICB8ICAgIHwgICAgKy0tIENvbm5lY3Rpb25BYm9ydGVkRXJyb3IKKyAgICAgIHwgICAgfCAgICArLS0gQ29ubmVjdGlvblJlZnVzZWRFcnJvcgorICAgICAgfCAgICB8ICAgICstLSBDb25uZWN0aW9uUmVzZXRFcnJvcgorICAgICAgfCAgICArLS0gRmlsZUV4aXN0c0Vycm9yCisgICAgICB8ICAgICstLSBGaWxlTm90Rm91bmRFcnJvcgorICAgICAgfCAgICArLS0gSW50ZXJydXB0ZWRFcnJvcgorICAgICAgfCAgICArLS0gSXNBRGlyZWN0b3J5RXJyb3IKKyAgICAgIHwgICAgKy0tIE5vdEFEaXJlY3RvcnlFcnJvcgorICAgICAgfCAgICArLS0gUGVybWlzc2lvbkVycm9yCisgICAgICB8ICAgICstLSBQcm9jZXNzTG9va3VwRXJyb3IKKyAgICAgIHwgICAgKy0tIFRpbWVvdXRFcnJvcgogICAgICAgKy0tIFJlZmVyZW5jZUVycm9yCiAgICAgICArLS0gUnVudGltZUVycm9yCiAgICAgICB8ICAgICstLSBOb3RJbXBsZW1lbnRlZEVycm9yCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9mb3JrX3dhaXQucHkgYi9MaWIvdGVzdC9mb3JrX3dhaXQucHkKaW5kZXggMWNhYWIxYy4uODg1MjdkZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvZm9ya193YWl0LnB5CisrKyBiL0xpYi90ZXN0L2Zvcmtfd2FpdC5weQpAQCAtNDMsNiArNDMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwaWQsIGNwaWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCAiY2F1c2UgPSAlZCwgZXhpdCA9ICVkIiAlIChzdGF0dXMmMHhmZiwgc3RhdHVzPj44KSkKIAorICAgIEBzdXBwb3J0LnJlYXBfdGhyZWFkcwogICAgIGRlZiB0ZXN0X3dhaXQoc2VsZik6CiAgICAgICAgIGZvciBpIGluIHJhbmdlKE5VTV9USFJFQURTKToKICAgICAgICAgICAgIF90aHJlYWQuc3RhcnRfbmV3KHNlbGYuZiwgKGksKSkKQEAgLTY5LDcgKzcwLDggQEAKICAgICAgICAgICAgIG9zLl9leGl0KG4pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIFBhcmVudAotICAgICAgICAgICAgc2VsZi53YWl0X2ltcGwoY3BpZCkKLSAgICAgICAgICAgICMgVGVsbCB0aHJlYWRzIHRvIGRpZQotICAgICAgICAgICAgc2VsZi5zdG9wID0gMQotICAgICAgICAgICAgdGltZS5zbGVlcCgyKlNIT1JUU0xFRVApICMgV2FpdCBmb3IgdGhyZWFkcyB0byBkaWUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLndhaXRfaW1wbChjcGlkKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAjIFRlbGwgdGhyZWFkcyB0byBkaWUKKyAgICAgICAgICAgICAgICBzZWxmLnN0b3AgPSAxCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1dHVyZTEucHkgYi9MaWIvdGVzdC9mdXR1cmVfdGVzdDEucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfZnV0dXJlMS5weQpyZW5hbWUgdG8gTGliL3Rlc3QvZnV0dXJlX3Rlc3QxLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1dHVyZTIucHkgYi9MaWIvdGVzdC9mdXR1cmVfdGVzdDIucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfZnV0dXJlMi5weQpyZW5hbWUgdG8gTGliL3Rlc3QvZnV0dXJlX3Rlc3QyLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9qc29uX3Rlc3RzL3Rlc3RfZHVtcC5weSBiL0xpYi90ZXN0L2pzb25fdGVzdHMvdGVzdF9kdW1wLnB5CmluZGV4IGZlZTk3MmUuLjIzN2VlMzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2pzb25fdGVzdHMvdGVzdF9kdW1wLnB5CisrKyBiL0xpYi90ZXN0L2pzb25fdGVzdHMvdGVzdF9kdW1wLnB5CkBAIC0xLDYgKzEsNyBAQAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIGZyb20gdGVzdC5qc29uX3Rlc3RzIGltcG9ydCBQeVRlc3QsIENUZXN0CiAKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBiaWdtZW10ZXN0LCBfMUcKIAogY2xhc3MgVGVzdER1bXA6CiAgICAgZGVmIHRlc3RfZHVtcChzZWxmKToKQEAgLTI5LDQgKzMwLDIwIEBACiAKIAogY2xhc3MgVGVzdFB5RHVtcChUZXN0RHVtcCwgUHlUZXN0KTogcGFzcwotY2xhc3MgVGVzdENEdW1wKFRlc3REdW1wLCBDVGVzdCk6IHBhc3MKKworY2xhc3MgVGVzdENEdW1wKFRlc3REdW1wLCBDVGVzdCk6CisKKyAgICAjIFRoZSBzaXplIHJlcXVpcmVtZW50IGhlcmUgaXMgaG9wZWZ1bGx5IG92ZXItZXN0aW1hdGVkIChhY3R1YWwKKyAgICAjIG1lbW9yeSBjb25zdW1wdGlvbiBkZXBlbmRpbmcgb24gaW1wbGVtZW50YXRpb24gZGV0YWlscywgYW5kIGFsc28KKyAgICAjIHN5c3RlbSBtZW1vcnkgbWFuYWdlbWVudCwgc2luY2UgdGhpcyBtYXkgYWxsb2NhdGUgYSBsb3Qgb2YKKyAgICAjIHNtYWxsIG9iamVjdHMpLgorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMUcsIG1lbXVzZT0xKQorICAgIGRlZiB0ZXN0X2xhcmdlX2xpc3Qoc2VsZiwgc2l6ZSk6CisgICAgICAgIE4gPSBpbnQoMzAgKiAxMDI0ICogMTAyNCAqIChzaXplIC8gXzFHKSkKKyAgICAgICAgbCA9IFsxXSAqIE4KKyAgICAgICAgZW5jb2RlZCA9IHNlbGYuZHVtcHMobCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZW5jb2RlZCksIE4gKiAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZWRbOjFdLCAiWyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlZFstMjpdLCAiMV0iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZWRbMTotMl0sICIxLCAiICogKE4gLSAxKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2pzb25fdGVzdHMvdGVzdF9zY2Fuc3RyaW5nLnB5IGIvTGliL3Rlc3QvanNvbl90ZXN0cy90ZXN0X3NjYW5zdHJpbmcucHkKaW5kZXggZjgyY2RlZS4uNDI2YzhkZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvanNvbl90ZXN0cy90ZXN0X3NjYW5zdHJpbmcucHkKKysrIGIvTGliL3Rlc3QvanNvbl90ZXN0cy90ZXN0X3NjYW5zdHJpbmcucHkKQEAgLTksMTQgKzksOSBAQAogICAgICAgICAgICAgc2NhbnN0cmluZygnInpcXHVkODM0XFx1ZGQyMHgiJywgMSwgVHJ1ZSksCiAgICAgICAgICAgICAoJ3pcVTAwMDFkMTIweCcsIDE2KSkKIAotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA9PSA2NTUzNToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgc2NhbnN0cmluZygnInpcVTAwMDFkMTIweCInLCAxLCBUcnVlKSwKLSAgICAgICAgICAgICAgICAoJ3pcVTAwMDFkMTIweCcsIDYpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBzY2Fuc3RyaW5nKCcielxVMDAwMWQxMjB4IicsIDEsIFRydWUpLAotICAgICAgICAgICAgICAgICgnelxVMDAwMWQxMjB4JywgNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzY2Fuc3RyaW5nKCcielxVMDAwMWQxMjB4IicsIDEsIFRydWUpLAorICAgICAgICAgICAgKCd6XFUwMDAxZDEyMHgnLCA1KSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgc2NhbnN0cmluZygnIlxcdTAwN2IiJywgMSwgVHJ1ZSksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9rZXljZXJ0LnBhc3N3ZC5wZW0gYi9MaWIvdGVzdC9rZXljZXJ0LnBhc3N3ZC5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkwNTc0OAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2tleWNlcnQucGFzc3dkLnBlbQpAQCAtMCwwICsxLDMzIEBACistLS0tLUJFR0lOIFJTQSBQUklWQVRFIEtFWS0tLS0tCitQcm9jLVR5cGU6IDQsRU5DUllQVEVECitERUstSW5mbzogREVTLUVERTMtQ0JDLDFBOEQ5RDJBMDJFQzY5OEEKKwora0pZYmZaOEwwc2ZlOU90eTNndzBhbG9Oblk1RThmZWdSZlFMWmxOb3hUbDZqTnQwbkl3SThrREozNkNaZ1I5YwordTNGREptL0txcmZVb3o4dlcrcUVuV2hTRzdRUFgyd1dHUEhkNEs5NFl6L0ZnclJ6WjBEb0s3WHhYcTlnT3RWQQorQVZHUWhuejMycCs2V2hmR3NDcjlBclhFd1JaclRrL0Z2ekVQYVU1Zkhjb1Nrck5WQUdYOElwU1ZrU0R3RURRcgorR3YxNytjZms5OVVWMU9DemE2eUtIb0ZrVHRyQytQWlU3MUxvbUJhYml2UzJPYzRCOWhZdVNSMmhGMDF3VEhQKworWWxXTmFnWk9PVnROejRvS0s5eDllTlFwbWZRWFF2UFBUZnVzZXhLSWJLZlpyTXZKb3hjbTFnZmNaMEgvd0s2UAorNndtWFNHMzVxTU9PenRDWk50cGVyanMxd3pFQlh6bnlLOFFtTGNBSkJqa2ZhckFCSlg5dkJFelpWME9VS2h5Kworbm9PUkZ3SFRsbHBoYm15ZExodTZlaExVWk1IUGh6QVM1VU43c3J0cFNOODFlZXJETXkwUk1VQXdBNy9Qb2ZYMQorOTRNZTg1UThqUDBQQzlFVGRzSmNQcUx6QVBFVEVZdTBFTGV3S1JjcmR5V2krdGxMRnJwRTVLVC9zNWVjYmw5bAorN0I2MVU0S2ZkMVBJWGMvc2lJTmhVM0EzYllLKzg0NVl5VUFyVU9uS2Yxa0VveDdwMVJwRDd5RnFWVDA0bFJUbworY2liTktBVEJ1c1hTdUJycDJHNkdOdWhXRU9TYWZXQ0tKUUF6Z0NZSXA2WlRWMmtoaE1VR3BwYy8ySDNDRjZjTworelgwS3RsUFZaQzdoTGtCNkhUOFN4WVV3RjF6cVdZNysvWFBQZGMzN01lRVo4N1EzVXVad3FPUkxZK1owaHBndAorTDVKWEJDb2tsWmhDQWFOMkdxd0ZMWHRHaVJTUkZHWTd4WEloYkRUbEU2NVd2MVdHR2dETE1LR0UxZ096M3lBbworMmpqRzEreUFISlVkRTY5WFRGSFNxU2t2YWxvQTFXMDNMZE1YWjlWdVFKL3lTWENpZTZBQkFRPT0KKy0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUNWRENDQWIyZ0F3SUJBZ0lKQU5mSE9Ca1pyOEpPTUEwR0NTcUdTSWIzRFFFQkJRVUFNRjh4Q3pBSkJnTlYKK0JBWVRBbGhaTVJjd0ZRWURWUVFIRXc1RFlYTjBiR1VnUVc1MGFISmhlREVqTUNFR0ExVUVDaE1hVUhsMGFHOXUKK0lGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkREFlRncweE1ERXcKK01EZ3lNekF4TlRaYUZ3MHlNREV3TURVeU16QXhOVFphTUY4eEN6QUpCZ05WQkFZVEFsaFpNUmN3RlFZRFZRUUgKK0V3NURZWE4wYkdVZ1FXNTBhSEpoZURFak1DRUdBMVVFQ2hNYVVIbDBhRzl1SUZOdlpuUjNZWEpsSUVadmRXNWsKK1lYUnBiMjR4RWpBUUJnTlZCQU1UQ1d4dlkyRnNhRzl6ZERDQm56QU5CZ2txaGtpRzl3MEJBUUVGQUFPQmpRQXcKK2dZa0NnWUVBMjF2VDVpc3E3RjY4YW1ZdXVOcFNGbEtEUHJNVUNhNFlXWXFaUnQyT1orLzNOS2FaMnhBaVN3cjcKKzZNclFGNzB0NW5MYlNQcHFFNSs1VnJTNThTWStnL3NYTGlGZDZBcGxIMXdKWndoNzhEb2ZiRllYVWdna3RGTXQKK3BUeWlYOGp0UDY2YmtjUGtEQURBMDg5UkkxVFFSNkNhK243SEZhN2MxZmFiVlY2aTN6a0NBd0VBQWFNWU1CWXcKK0ZBWURWUjBSQkEwd0M0SUpiRzlqWVd4b2IzTjBNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0R0JBSFBjdFFCRVE0d2QKK0JKNitKY3BJcmFvcExuOEJHaGJqTldqNDBtbVJxV0IvTkFXRjZNNW5lN0twR0F1N3RMZUc0aGIxekxhbGRLOEcKK2x4eTJHUFNSRjZMRlM0OGRwRWoySGJNdjJudnY2eHhhbERNSjkrRGljV2dBS1RRNmJjWDJqM0dVa0NSMGcvVDEKK0NSbE5CQUFsdmhLek83Q2xwZjlsMFlLQkVmcmFKQnlYCistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5IGIvTGliL3Rlc3QvbGlzdF90ZXN0cy5weQppbmRleCBiZTA1NGVhLi40MmUxMThiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L2xpc3RfdGVzdHMucHkKQEAgLTQxOCw2ICs0MTgsNDcgQEAKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHUucmV2ZXJzZSwgNDIpCiAKKyAgICBkZWYgdGVzdF9jbGVhcihzZWxmKToKKyAgICAgICAgdSA9IHNlbGYudHlwZTJ0ZXN0KFsyLCAzLCA0XSkKKyAgICAgICAgdS5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgW10pCisKKyAgICAgICAgdSA9IHNlbGYudHlwZTJ0ZXN0KFtdKQorICAgICAgICB1LmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBbXSkKKworICAgICAgICB1ID0gc2VsZi50eXBlMnRlc3QoW10pCisgICAgICAgIHUuYXBwZW5kKDEpCisgICAgICAgIHUuY2xlYXIoKQorICAgICAgICB1LmFwcGVuZCgyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIFsyXSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHUuY2xlYXIsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICB1ID0gc2VsZi50eXBlMnRlc3QoWzEsIDIsIDNdKQorICAgICAgICB2ID0gdS5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBbMSwgMiwgM10pCisKKyAgICAgICAgdSA9IHNlbGYudHlwZTJ0ZXN0KFtdKQorICAgICAgICB2ID0gdS5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBbXSkKKworICAgICAgICAjIHRlc3QgdGhhdCBpdCdzIGluZGVlZCBhIGNvcHkgYW5kIG5vdCBhIHJlZmVyZW5jZQorICAgICAgICB1ID0gc2VsZi50eXBlMnRlc3QoWydhJywgJ2InXSkKKyAgICAgICAgdiA9IHUuY29weSgpCisgICAgICAgIHYuYXBwZW5kKCdpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBbJ2EnLCAnYiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHUgKyBbJ2knXSkKKworICAgICAgICAjIHRlc3QgdGhhdCBpdCdzIGEgc2hhbGxvdywgbm90IGEgZGVlcCBjb3B5CisgICAgICAgIHUgPSBzZWxmLnR5cGUydGVzdChbMSwgMiwgWzMsIDRdLCA1XSkKKyAgICAgICAgdiA9IHUuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgdikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh2WzNdLCB1WzNdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdS5jb3B5LCBOb25lKQorCiAgICAgZGVmIHRlc3Rfc29ydChzZWxmKToKICAgICAgICAgdSA9IHNlbGYudHlwZTJ0ZXN0KFsxLCAwXSkKICAgICAgICAgdS5zb3J0KCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkgYi9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5CmluZGV4IDA5NGNjN2EuLmJmYmY0NGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkKKysrIGIvTGliL3Rlc3QvbG9ja190ZXN0cy5weQpAQCAtNCw3ICs0LDcgQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKLWZyb20gX3RocmVhZCBpbXBvcnQgc3RhcnRfbmV3X3RocmVhZCwgZ2V0X2lkZW50LCBUSU1FT1VUX01BWAorZnJvbSBfdGhyZWFkIGltcG9ydCBzdGFydF9uZXdfdGhyZWFkLCBUSU1FT1VUX01BWAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHVuaXR0ZXN0CiAKQEAgLTMxLDcgKzMxLDcgQEAKICAgICAgICAgc2VsZi5maW5pc2hlZCA9IFtdCiAgICAgICAgIHNlbGYuX2Nhbl9leGl0ID0gbm90IHdhaXRfYmVmb3JlX2V4aXQKICAgICAgICAgZGVmIHRhc2soKToKLSAgICAgICAgICAgIHRpZCA9IGdldF9pZGVudCgpCisgICAgICAgICAgICB0aWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKICAgICAgICAgICAgIHNlbGYuc3RhcnRlZC5hcHBlbmQodGlkKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGYoKQpAQCAtMjU1LDYgKzI1NSwxOCBAQAogICAgICAgICBsb2NrLnJlbGVhc2UoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGxvY2sucmVsZWFzZSkKIAorICAgIGRlZiB0ZXN0X3JlbGVhc2Vfc2F2ZV91bmFjcXVpcmVkKHNlbGYpOgorICAgICAgICAjIENhbm5vdCBfcmVsZWFzZV9zYXZlIGFuIHVuYWNxdWlyZWQgbG9jaworICAgICAgICBsb2NrID0gc2VsZi5sb2NrdHlwZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgbG9jay5fcmVsZWFzZV9zYXZlKQorICAgICAgICBsb2NrLmFjcXVpcmUoKQorICAgICAgICBsb2NrLmFjcXVpcmUoKQorICAgICAgICBsb2NrLnJlbGVhc2UoKQorICAgICAgICBsb2NrLmFjcXVpcmUoKQorICAgICAgICBsb2NrLnJlbGVhc2UoKQorICAgICAgICBsb2NrLnJlbGVhc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGxvY2suX3JlbGVhc2Vfc2F2ZSkKKwogICAgIGRlZiB0ZXN0X2RpZmZlcmVudF90aHJlYWQoc2VsZik6CiAgICAgICAgICMgQ2Fubm90IHJlbGVhc2UgZnJvbSBhIGRpZmZlcmVudCB0aHJlYWQKICAgICAgICAgbG9jayA9IHNlbGYubG9ja3R5cGUoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbWFpbGNhcC50eHQgYi9MaWIvdGVzdC9tYWlsY2FwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjExMzVkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbWFpbGNhcC50eHQKQEAgLTAsMCArMSwzOSBAQAorIyBNYWlsY2FwIGZpbGUgZm9yIHRlc3RfbWFpbGNhcDsgYmFzZWQgb24gUkZDIDE1MjQKKyMgUmVmZXJyZWQgdG8gYnkgdGVzdF9tYWlsY2FwLnB5CisKKyMKKyMgVGhpcyBpcyBhIGNvbW1lbnQuCisjCisKK2FwcGxpY2F0aW9uL2ZyYW1lOyBzaG93ZnJhbWUgJXM7IHByaW50PSJjYXQgJXMgfCBscCIKK2FwcGxpY2F0aW9uL3Bvc3RzY3JpcHQ7IHBzLXRvLXRlcm1pbmFsICVzO1wKKyAgICBuZWVkc3Rlcm1pbmFsCithcHBsaWNhdGlvbi9wb3N0c2NyaXB0OyBwcy10by10ZXJtaW5hbCAlczsgXAorICAgIGNvbXBvc2U9aWRyYXcgJXMKK2FwcGxpY2F0aW9uL3gtZHZpOyB4ZHZpICVzCithcHBsaWNhdGlvbi94LW1vdmllOyBtb3ZpZXBsYXllciAlczsgY29tcG9zZT1tb3ZpZW1ha2VyICVzOyBcCisgICAgICAgZGVzY3JpcHRpb249Ik1vdmllIjsgXAorICAgICAgIHgxMS1iaXRtYXA9Ii91c3IvbGliL1ptYWlsL2JpdG1hcHMvbW92aWUueGJtIgorYXBwbGljYXRpb24vKjsgZWNobyAiVGhpcyBpcyBcIiV0XCIgYnV0IFwKKyAgICAgICBpcyA1MCBcJSBHcmVlayB0byBtZSIgXDsgY2F0ICVzOyBjb3Bpb3Vzb3V0cHV0CisKK2F1ZGlvL2Jhc2ljOyBzaG93YXVkaW8gJXM7IGNvbXBvc2U9YXVkaW9jb21wb3NlICVzOyBlZGl0PWF1ZGlvY29tcG9zZSAlcztcCitkZXNjcmlwdGlvbj0iQW4gYXVkaW8gZnJhZ21lbnQiCithdWRpby8qIDsgL3Vzci9sb2NhbC9iaW4vc2hvd2F1ZGlvICV0CisKK2ltYWdlL3JnYjsgZGlzcGxheSAlcworI2ltYWdlL2dpZjsgZGlzcGxheSAlcworaW1hZ2UveC14d2luZG93ZHVtcDsgZGlzcGxheSAlcworCisjIFRoZSBjb250aW51YXRpb24gY2hhciBzaG91bGRuJ3QgXAorIyBtYWtlIGEgZGlmZmVyZW5jZSBpbiBhIGNvbW1lbnQuCisKK21lc3NhZ2UvZXh0ZXJuYWwtYm9keTsgc2hvd2V4dGVybmFsICVzICV7YWNjZXNzLXR5cGV9ICV7bmFtZX0gJXtzaXRlfSBcCisgICAgJXtkaXJlY3Rvcnl9ICV7bW9kZX0gJXtzZXJ2ZXJ9OyBuZWVkc3Rlcm1pbmFsOyBjb21wb3NldHlwZWQgPSBleHRjb21wb3NlICVzOyBcCisgICAgZGVzY3JpcHRpb249IkEgcmVmZXJlbmNlIHRvIGRhdGEgc3RvcmVkIGluIGFuIGV4dGVybmFsIGxvY2F0aW9uIgorCit0ZXh0L3JpY2h0ZXh0OyBzaG93bm9uYXNjaWkgaXNvLTg4NTktOCAtZSByaWNodGV4dCAtcCAlczsgdGVzdD10ZXN0ICJgZWNobyBcCisgICAgJXtjaGFyc2V0fSB8IHRyICdbQS1aXScgJ1thLXpdJ2AiICA9IGlzby04ODU5LTg7IGNvcGlvdXNvdXRwdXQKKwordmlkZW8vbXBlZzsgbXBlZ19wbGF5ICVzCit2aWRlby8qOyBhbmltYXRlICVzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9tYXRoX3Rlc3RjYXNlcy50eHQgYi9MaWIvdGVzdC9tYXRoX3Rlc3RjYXNlcy50eHQKaW5kZXggNWUyNDMzNS4uOTU4NTE4OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbWF0aF90ZXN0Y2FzZXMudHh0CisrKyBiL0xpYi90ZXN0L21hdGhfdGVzdGNhc2VzLnR4dApAQCAtNTE3LDMgKzUxNywxMTcgQEAKIAogLS0gd2Vha2VyIHZlcnNpb24gb2YgZXhwbTEwMzAyCiBleHBtMTAzMDcgZXhwbTEgNzA5LjUgLT4gMS4zNTQ5ODYzMTkzMTQ2MzI4ZSszMDgKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gbG9nMjogbG9nIHRvIGJhc2UgMiAtLQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistLSBzcGVjaWFsIHZhbHVlcworbG9nMjAwMDAgbG9nMiAwLjAgLT4gLWluZiAgICAgICAgICAgICAgIGRpdmlkZS1ieS16ZXJvCitsb2cyMDAwMSBsb2cyIC0wLjAgLT4gLWluZiAgICAgICAgICAgICAgZGl2aWRlLWJ5LXplcm8KK2xvZzIwMDAyIGxvZzIgaW5mIC0+IGluZgorbG9nMjAwMDMgbG9nMiAtaW5mIC0+IG5hbiAgICAgICAgICAgICAgIGludmFsaWQKK2xvZzIwMDA0IGxvZzIgbmFuIC0+IG5hbgorCistLSBleGFjdCB2YWx1ZSBhdCAxLjAKK2xvZzIwMDEwIGxvZzIgMS4wIC0+IDAuMAorCistLSBuZWdhdGl2ZXMKK2xvZzIwMDIwIGxvZzIgLTVlLTMyNCAtPiBuYW4gICAgICAgICAgICBpbnZhbGlkCitsb2cyMDAyMSBsb2cyIC0xLjAgLT4gbmFuICAgICAgICAgICAgICAgaW52YWxpZAorbG9nMjAwMjIgbG9nMiAtMS43ZS0zMDggLT4gbmFuICAgICAgICAgIGludmFsaWQKKworLS0gZXhhY3QgdmFsdWVzIGF0IHBvd2VycyBvZiAyCitsb2cyMDEwMCBsb2cyIDIuMCAtPiAxLjAKK2xvZzIwMTAxIGxvZzIgNC4wIC0+IDIuMAorbG9nMjAxMDIgbG9nMiA4LjAgLT4gMy4wCitsb2cyMDEwMyBsb2cyIDE2LjAgLT4gNC4wCitsb2cyMDEwNCBsb2cyIDMyLjAgLT4gNS4wCitsb2cyMDEwNSBsb2cyIDY0LjAgLT4gNi4wCitsb2cyMDEwNiBsb2cyIDEyOC4wIC0+IDcuMAorbG9nMjAxMDcgbG9nMiAyNTYuMCAtPiA4LjAKK2xvZzIwMTA4IGxvZzIgNTEyLjAgLT4gOS4wCitsb2cyMDEwOSBsb2cyIDEwMjQuMCAtPiAxMC4wCitsb2cyMDExMCBsb2cyIDIwNDguMCAtPiAxMS4wCisKK2xvZzIwMjAwIGxvZzIgMC41IC0+IC0xLjAKK2xvZzIwMjAxIGxvZzIgMC4yNSAtPiAtMi4wCitsb2cyMDIwMiBsb2cyIDAuMTI1IC0+IC0zLjAKK2xvZzIwMjAzIGxvZzIgMC4wNjI1IC0+IC00LjAKKworLS0gdmFsdWVzIGNsb3NlIHRvIDEuMAorbG9nMjAzMDAgbG9nMiAxLjAwMDAwMDAwMDAwMDAwMDIgLT4gMy4yMDM0MjY1MDM4MTQ5MTcxZS0xNgorbG9nMjAzMDEgbG9nMiAxLjAwMDAwMDAwMDEgLT4gMS40NDI2OTUxNjAxODU5NTE2ZS0xMAorbG9nMjAzMDIgbG9nMiAxLjAwMDAxIC0+IDEuNDQyNjg3ODI3NDcxMjk5N2UtNQorCitsb2cyMDMxMCBsb2cyIDAuOTk5OTk5OTk5OTk5OTk5OSAtPiAtMS42MDE3MTMyNTE5MDc0NTg4ZS0xNgorbG9nMjAzMTEgbG9nMiAwLjk5OTk5OTk5OTkgLT4gLTEuNDQyNjk1MTYwMzMwMjIxMGUtMTAKK2xvZzIwMzEyIGxvZzIgMC45OTk5OSAtPiAtMS40NDI3MDIyNTQ0MDU2OTIyZS01CisKKy0tIHRpbnkgdmFsdWVzCitsb2cyMDQwMCBsb2cyIDVlLTMyNCAtPiAtMTA3NC4wCitsb2cyMDQwMSBsb2cyIDFlLTMyMyAtPiAtMTA3My4wCitsb2cyMDQwMiBsb2cyIDEuNWUtMzIzIC0+IC0xMDcyLjQxNTAzNzQ5OTI3ODkKK2xvZzIwNDAzIGxvZzIgMmUtMzIzIC0+IC0xMDcyLjAKKworbG9nMjA0MTAgbG9nMiAxZS0zMDggLT4gLTEwMjMuMTUzODUzMjI1MzA3NgorbG9nMjA0MTEgbG9nMiAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOCAtPiAtMTAyMi4wCitsb2cyMDQxMiBsb2cyIDQuNDUwMTQ3NzE3MDE0NDAyOGUtMzA4IC0+IC0xMDIxLjAKK2xvZzIwNDEzIGxvZzIgMWUtMzA3IC0+IC0xMDE5LjgzMTkyNTEzMDQyMDIKKworLS0gaHVnZSB2YWx1ZXMKK2xvZzIwNTAwIGxvZzIgMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDggLT4gMTAyNC4wCitsb2cyMDUwMSBsb2cyIDEuN2UrMzA4IC0+IDEwMjMuOTE5Mzg3OTcxNjcwNgorbG9nMjA1MDIgbG9nMiA4Ljk4ODQ2NTY3NDMxMTU3OTVlKzMwNyAtPiAxMDIzLjAKKworLS0gc2VsZWN0aW9uIG9mIHJhbmRvbSB2YWx1ZXMKK2xvZzIwNjAwIGxvZzIgLTcuMjE3NDMyNDg0MTAzOTgzOGUrMjg5IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjAxIGxvZzIgLTIuODYxMzE5NzM0MDg5NjE3ZSsyNjUgLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjAyIGxvZzIgLTQuMzUwNzY0Njg5NDAwODk2MmUrMjU3IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjAzIGxvZzIgLTYuNjcxNzI2NTMwNzUyMDIyNGUrMjM0IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjA0IGxvZzIgLTMuOTExODAyMzc4NjYxOTI5NGUrMjI5IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjA1IGxvZzIgLTEuNTQ3ODIyMTMwMjUwNTE2MWUrMjA2IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjA2IGxvZzIgLTEuNDM4MDQ4NTEzMTM2NDYwMmUrMjAwIC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjA3IGxvZzIgLTMuNzIzNTE5ODczMDM4MjY0NWUrMTg1IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjA4IGxvZzIgLTEuMDQ3MjI0MjIzNTA5NTcyNGUrMTg0IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjA5IGxvZzIgLTUuMDE0MTc4MTk1NjE2Mzg4NGUrMTYwIC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjEwIGxvZzIgLTIuMTE1Nzk1ODAzMTE2MDMyNGUrMTI0IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjExIGxvZzIgLTcuOTY3NzU1ODYxMjU2NzcxOGUrOTAgLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjEyIGxvZzIgLTUuNTU1MzkwNjE5NDA2MzczMmUrNDUgLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjEzIGxvZzIgLTE2NTczOTAwOTUyNjA3Ljk1MyAtPiBuYW4gICAgICAgIGludmFsaWQKK2xvZzIwNjE0IGxvZzIgLTM3MTk4MzcxMDE5Ljg4ODYxOCAtPiBuYW4gICAgICAgIGludmFsaWQKK2xvZzIwNjE1IGxvZzIgLTYuMDcyNzExNTEyMTQyMjY3NGUtMzIgLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjE2IGxvZzIgLTIuNTQwNjg0MTY1NjUyNjA1N2UtMzggLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjE3IGxvZzIgLTQuOTA1Njc2NjcwMzI2NzY1N2UtNDMgLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjE4IGxvZzIgLTIuMTY0Njc4NjA3NTIyODMwNWUtNzEgLT4gbmFuICAgIGludmFsaWQKK2xvZzIwNjE5IGxvZzIgLTIuNDcwODI2NzkwNDg4NTczZS03OCAtPiBuYW4gICAgIGludmFsaWQKK2xvZzIwNjIwIGxvZzIgLTMuODY2MTcwOTMwMzQ4OTA2NGUtMTY1IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjIxIGxvZzIgLTEuMDUxNjQ5Njk3NjY0OTk4NmUtMTgyIC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjIyIGxvZzIgLTEuNTkzNTQ1ODYxNDMxNzk5NmUtMjU1IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjIzIGxvZzIgLTIuODc1MDk3NzI2NzMzNjY1NGUtMjkzIC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjI0IGxvZzIgLTcuNjA3OTQ2Njc5NDczMjU4NWUtMjk2IC0+IG5hbiAgIGludmFsaWQKK2xvZzIwNjI1IGxvZzIgMy4yMDczMjUzNTM5OTg4NTQ1ZS0zMDcgLT4gLTEwMTguMTUwNTU0NDIwOTIxMworbG9nMjA2MjYgbG9nMiAxLjY3NDkzNzg4NTQ3MjI0OWUtMjQ0IC0+IC04MDkuODA2MzQ3NTU3ODMxMjYKK2xvZzIwNjI3IGxvZzIgMS4wOTExMjU5MDQ0OTMxMjgzZS0yMTQgLT4gLTcxMC43NjY3OTQ3MjI3NDIxMworbG9nMjA2MjggbG9nMiAyLjAyNzUzNzI2MjQ4MDk3MDllLTE1NCAtPiAtNTEwLjU1NzE5ODE4MzgzMjcyCitsb2cyMDYyOSBsb2cyIDcuMzkyNjA4NzM2OTYzMTg0MWUtMTE1IC0+IC0zNzkuMTM1NjQ3MzUzMTIyOTIKK2xvZzIwNjMwIGxvZzIgMS4zNDgwMTk4MjA2MzQyNDIzZS04NiAtPiAtMjg1LjI1NDk3NDQ1MDk0NDM2Citsb2cyMDYzMSBsb2cyIDguOTkyNzM4NDY1NTcxOTk0N2UtODMgLT4gLTI3Mi41NTEyNzEzNjQwMTYzNworbG9nMjA2MzIgbG9nMiAzLjE0NTIzOTg3MTM1OTc0ODdlLTYwIC0+IC0xOTcuNjYyNTE1NjQ0OTY4NzUKK2xvZzIwNjMzIGxvZzIgNy4wNzA2NTczMjE1NDU3MzUxZS01NSAtPiAtMTc5Ljg4NDIwMDg3NzgyMjE3Citsb2cyMDYzNCBsb2cyIDMuMTI1ODI4NTM5MDczMTY2OWUtNDkgLT4gLTE2MS4xMzAyMzgwMDUwNTY1MworbG9nMjA2MzUgbG9nMiA4LjIyNTMwNDY2Mjc4Mjk5NDJlLTQxIC0+IC0xMzMuMTU4OTgyNzczNTU4NzkKK2xvZzIwNjM2IGxvZzIgNy44NjkxMzY3Mzk3NTE5ODk3ZSs0OSAtPiAxNjUuNzUwNjgyMDI3MzI0MTkKK2xvZzIwNjM3IGxvZzIgMi45OTIwNTYxOTgzOTI1MDEzZSs2NCAtPiAyMTQuMTg0NTM1MzQ1NzM3NTcKK2xvZzIwNjM4IGxvZzIgNC43ODI3MjU0NTUzOTQ2ODQxZSs3NyAtPiAyNTguMDQ2Mjk2Mjg0NDU2NzMKK2xvZzIwNjM5IGxvZzIgMy4xOTAzNTY2NDk2NDgxODY4ZSsxMDUgLT4gMzUwLjQ3NjE2NzY3NDkxMTY2Citsb2cyMDY0MCBsb2cyIDUuNjE5NTA4MjQ0OTUwMjQxOWUrMTEzIC0+IDM3Ny44NjgzMTg2MTAwODI1MAorbG9nMjA2NDEgbG9nMiA5Ljk2MjU2NTgyNTA2NTEwNDdlKzEyNSAtPiA0MTguNTU3NTI5MjEyMjg3NTMKK2xvZzIwNjQyIGxvZzIgMi43MzU4OTQ1MjIwOTYxNTMyZSsxNDUgLT4gNDgzLjEzMTU4NjM2OTIzNDEzCitsb2cyMDY0MyBsb2cyIDIuNzg1ODQyMzg3OTI2OTMxZSsxNzQgLT4gNTc5LjQ5MzYwMjE0ODYwMjgwCitsb2cyMDY0NCBsb2cyIDIuNDE2OTE3MjUwNzI1Mjc1MWUrMTkzIC0+IDY0Mi40MDUyOTAzOTI4OTY1MgorbG9nMjA2NDUgbG9nMiAzLjE2ODkwOTEyMDYzOTU2MzJlKzIwNSAtPiA2ODIuNjU5MjQ1NzM3OTgzOTUKK2xvZzIwNjQ2IGxvZzIgMi41MzU5OTU1OTIzNjUzOTFlKzIwOCAtPiA2OTIuMzAzNTk1OTc0NjA0NjAKK2xvZzIwNjQ3IGxvZzIgNi4yMDExMjM2NTY2MDg5OTE2ZSsyMzMgLT4gNzc2LjY0MTc3NTc2NzMwOTEzCitsb2cyMDY0OCBsb2cyIDIuMTg0MzI3NDgyMDY3NzYzMmUrMjUzIC0+IDg0MS41NzQ5OTcxNzI4OTY0NworbG9nMjA2NDkgbG9nMiA4Ljc0OTM5MzEwNjM0NzQ3OTFlKzI5NyAtPiA5ODkuNzQxODI3MTMwNzM5ODEKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L21lbW9yeV93YXRjaGRvZy5weSBiL0xpYi90ZXN0L21lbW9yeV93YXRjaGRvZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGNjYThkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbWVtb3J5X3dhdGNoZG9nLnB5CkBAIC0wLDAgKzEsMjggQEAKKyIiIk1lbW9yeSB3YXRjaGRvZzogcGVyaW9kaWNhbGx5IHJlYWQgdGhlIG1lbW9yeSB1c2FnZSBvZiB0aGUgbWFpbiB0ZXN0IHByb2Nlc3MKK2FuZCBwcmludCBpdCBvdXQsIHVudGlsIHRlcm1pbmF0ZWQuIiIiCisjIHN0ZGluIHNob3VsZCByZWZlciB0byB0aGUgcHJvY2VzcycgL3Byb2MvPFBJRD4vc3RhdG06IHdlIGRvbid0IHBhc3MgdGhlCisjIHByb2Nlc3MnIFBJRCB0byBhdm9pZCBhIHJhY2UgY29uZGl0aW9uIGluIGNhc2Ugb2YgLSB1bmxpa2VseSAtIFBJRCByZWN5Y2xpbmcuCisjIElmIHRoZSBwcm9jZXNzIGNyYXNoZXMsIHJlYWRpbmcgZnJvbSB0aGUgL3Byb2MgZW50cnkgd2lsbCBmYWlsIHdpdGggRVNSQ0guCisKKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQorCisKK3RyeToKKyAgICBwYWdlX3NpemUgPSBvcy5zeXNjb25mKCdTQ19QQUdFU0laRScpCitleGNlcHQgKFZhbHVlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICB0cnk6CisgICAgICAgIHBhZ2Vfc2l6ZSA9IG9zLnN5c2NvbmYoJ1NDX1BBR0VfU0laRScpCisgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgIHBhZ2Vfc2l6ZSA9IDQwOTYKKword2hpbGUgVHJ1ZToKKyAgICBzeXMuc3RkaW4uc2VlaygwKQorICAgIHN0YXRtID0gc3lzLnN0ZGluLnJlYWQoKQorICAgIGRhdGEgPSBpbnQoc3RhdG0uc3BsaXQoKVs1XSkKKyAgICBzeXMuc3Rkb3V0LndyaXRlKCIgLi4uIHByb2Nlc3MgZGF0YSBzaXplOiB7ZGF0YTouMWZ9R1xuIgorICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChkYXRhPWRhdGEgKiBwYWdlX3NpemUgLyAoMTAyNCAqKiAzKSkpCisgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisgICAgdGltZS5zbGVlcCgxKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbW9ja19zb2NrZXQucHkgYi9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQppbmRleCA4MDM2OTMyLi5kMDllNzhjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQorKysgYi9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQpAQCAtMTA2LDcgKzEwNiw4IEBACiAgICAgcmV0dXJuIE1vY2tTb2NrZXQoKQogCiAKLWRlZiBjcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzLCB0aW1lb3V0PXNvY2tldF9tb2R1bGUuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQpOgorZGVmIGNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MsIHRpbWVvdXQ9c29ja2V0X21vZHVsZS5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKKyAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lKToKICAgICB0cnk6CiAgICAgICAgIGludF9wb3J0ID0gaW50KGFkZHJlc3NbMV0pCiAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQucHkgYi9MaWIvdGVzdC9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvbXVsdGlieXRlY29kZWNfc3VwcG9ydC5weQppbmRleCBlZjYzYjY5Li4yNmJhYzdiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQucHkKKysrIGIvTGliL3Rlc3QvbXVsdGlieXRlY29kZWNfc3VwcG9ydC5weQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbjMKICMKLSMgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LnB5CisjIG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQucHkKICMgICBDb21tb24gVW5pdHRlc3QgUm91dGluZXMgZm9yIENKSyBjb2RlY3MKICMKIApAQCAtMTA4LDEyICsxMDgsMTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmVuY29kZShzaW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdC54bWxjaGFybmFtZXJlcGxhY2UiKVswXSwgc291dCkKIAorICAgIGRlZiB0ZXN0X2NhbGxiYWNrX3JldHVybnNfYnl0ZXMoc2VsZik6CisgICAgICAgIGRlZiBteXJlcGxhY2UoZXhjKToKKyAgICAgICAgICAgIHJldHVybiAoYiIxMjM0IiwgZXhjLmVuZCkKKyAgICAgICAgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCJ0ZXN0LmNqa3Rlc3QiLCBteXJlcGxhY2UpCisgICAgICAgIGVuYyA9IHNlbGYuZW5jb2RlKCJhYmMiICsgc2VsZi51bm1hcHBlZHVuaWNvZGUgKyAiZGVmIiwgInRlc3QuY2prdGVzdCIpWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jLCBiImFiYzEyMzRkZWYiKQorCiAgICAgZGVmIHRlc3RfY2FsbGJhY2tfd3Jvbmdfb2JqZWN0cyhzZWxmKToKICAgICAgICAgZGVmIG15cmVwbGFjZShleGMpOgogICAgICAgICAgICAgcmV0dXJuIChyZXQsIGV4Yy5lbmQpCiAgICAgICAgIGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigidGVzdC5jamt0ZXN0IiwgbXlyZXBsYWNlKQogCi0gICAgICAgIGZvciByZXQgaW4gKFsxLCAyLCAzXSwgW10sIE5vbmUsIG9iamVjdCgpLCBiJ3N0cmluZycsIGInJyk6CisgICAgICAgIGZvciByZXQgaW4gKFsxLCAyLCAzXSwgW10sIE5vbmUsIG9iamVjdCgpKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5lbmNvZGUsIHNlbGYudW5tYXBwZWR1bmljb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QuY2prdGVzdCcpCiAKQEAgLTI2NCwyMSArMjcxLDYgQEAKIAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3N0cmVhbS5nZXR2YWx1ZSgpLCBzZWxmLnRzdHJpbmdbMF0pCiAKLWlmIGxlbignXFUwMDAxMjM0NScpID09IDI6ICMgdWNzMiBidWlsZAotICAgIF91bmljaHIgPSBjaHIKLSAgICBkZWYgY2hyKHYpOgotICAgICAgICBpZiB2ID49IDB4MTAwMDA6Ci0gICAgICAgICAgICByZXR1cm4gX3VuaWNocigweGQ4MDAgKyAoKHYgLSAweDEwMDAwKSA+PiAxMCkpICsgXAotICAgICAgICAgICAgICAgICAgIF91bmljaHIoMHhkYzAwICsgKCh2IC0gMHgxMDAwMCkgJiAweDNmZikpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gX3VuaWNocih2KQotICAgIF9vcmQgPSBvcmQKLSAgICBkZWYgb3JkKGMpOgotICAgICAgICBpZiBsZW4oYykgPT0gMjoKLSAgICAgICAgICAgIHJldHVybiAweDEwMDAwICsgKChfb3JkKGNbMF0pIC0gMHhkODAwKSA8PCAxMCkgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChvcmQoY1sxXSkgLSAweGRjMDApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gX29yZChjKQogCiBjbGFzcyBUZXN0QmFzZV9NYXBwaW5nKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBwYXNzX2VuY3Rlc3QgPSBbXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvYm90aF9wb3J0aW9ucy9mb28vb25lLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvYm90aF9wb3J0aW9ucy9mb28vb25lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwODBmNmYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zL2Zvby9vbmUucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdib3RoX3BvcnRpb25zIGZvbyBvbmUnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zL2Zvby90d28ucHkgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zL2Zvby90d28ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEzMWQzZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL2JvdGhfcG9ydGlvbnMvZm9vL3R3by5weQpAQCAtMCwwICsxIEBACithdHRyID0gJ2JvdGhfcG9ydGlvbnMgZm9vIHR3bycKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL21pc3NpbmdfZGlyZWN0b3J5LnppcCBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL21pc3NpbmdfZGlyZWN0b3J5LnppcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzZhOTEwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvbWlzc2luZ19kaXJlY3RvcnkuemlwCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL21vZHVsZV9hbmRfbmFtZXNwYWNlX3BhY2thZ2UvYV90ZXN0LnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvbW9kdWxlX2FuZF9uYW1lc3BhY2VfcGFja2FnZS9hX3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNjYmVkYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL21vZHVsZV9hbmRfbmFtZXNwYWNlX3BhY2thZ2UvYV90ZXN0LnB5CkBAIC0wLDAgKzEgQEAKK2F0dHIgPSAnaW4gbW9kdWxlJwpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvX19pbml0X18ucHkgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9tb2R1bGVfYW5kX25hbWVzcGFjZV9wYWNrYWdlL2FfdGVzdC9lbXB0eQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIExpYi9lbWFpbC90ZXN0L19faW5pdF9fLnB5CmNvcHkgdG8gTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvbW9kdWxlX2FuZF9uYW1lc3BhY2VfcGFja2FnZS9hX3Rlc3QvZW1wdHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL25lc3RlZF9wb3J0aW9uMS56aXAgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9uZXN0ZWRfcG9ydGlvbjEuemlwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMjI0MDYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9uZXN0ZWRfcG9ydGlvbjEuemlwCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L19faW5pdF9fLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3Mvbm90X2FfbmFtZXNwYWNlX3BrZy9mb28vX19pbml0X18ucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L19faW5pdF9fLnB5CnJlbmFtZSB0byBMaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ub3RfYV9uYW1lc3BhY2VfcGtnL2Zvby9fX2luaXRfXy5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3Mvbm90X2FfbmFtZXNwYWNlX3BrZy9mb28vb25lLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3Mvbm90X2FfbmFtZXNwYWNlX3BrZy9mb28vb25lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ZjVjODMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ub3RfYV9uYW1lc3BhY2VfcGtnL2Zvby9vbmUucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwb3J0aW9uMSBmb28gb25lJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcG9ydGlvbjEvZm9vL29uZS5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24xL2Zvby9vbmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhmNWM4MwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24xL2Zvby9vbmUucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwb3J0aW9uMSBmb28gb25lJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcG9ydGlvbjIvZm9vL3R3by5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24yL2Zvby90d28ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA5MmUxZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24yL2Zvby90d28ucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwb3J0aW9uMiBmb28gdHdvJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDEvcGFyZW50L2NoaWxkL29uZS5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QxL3BhcmVudC9jaGlsZC9vbmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc3NmZjZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QxL3BhcmVudC9jaGlsZC9vbmUucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwYXJlbnQgY2hpbGQgb25lJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDIvcGFyZW50L2NoaWxkL3R3by5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QyL3BhcmVudC9jaGlsZC90d28ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIwMzdiYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QyL3BhcmVudC9jaGlsZC90d28ucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwYXJlbnQgY2hpbGQgdHdvJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDMvcGFyZW50L2NoaWxkL3RocmVlLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDMvcGFyZW50L2NoaWxkL3RocmVlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4YWJmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0My9wYXJlbnQvY2hpbGQvdGhyZWUucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwYXJlbnQgY2hpbGQgdGhyZWUnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy90b3BfbGV2ZWxfcG9ydGlvbjEuemlwIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvdG9wX2xldmVsX3BvcnRpb24xLnppcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjg2NmM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvdG9wX2xldmVsX3BvcnRpb24xLnppcApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkgYi9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkKaW5kZXggMWNlMDFjMy4uNWQxMjM3NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5CisrKyBiL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weQpAQCAtNCwxMCArNCwxMSBAQAogaW1wb3J0IHBpY2tsZXRvb2xzCiBpbXBvcnQgc3lzCiBpbXBvcnQgY29weXJlZworaW1wb3J0IHdlYWtyZWYKIGZyb20gaHR0cC5jb29raWVzIGltcG9ydCBTaW1wbGVDb29raWUKIAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0ICgKLSAgICBUZXN0RmFpbGVkLCBURVNURk4sIHJ1bl93aXRoX2xvY2FsZSwKKyAgICBUZXN0RmFpbGVkLCBURVNURk4sIHJ1bl93aXRoX2xvY2FsZSwgbm9fdHJhY2luZywKICAgICBfMkcsIF80RywgYmlnbWVtdGVzdCwKICAgICApCiAKQEAgLTE4LDcgKzE5LDcgQEAKICMga2luZCBvZiBvdXRlciBsb29wLgogcHJvdG9jb2xzID0gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKQogCi1jaGFyYWN0ZXJfc2l6ZSA9IDQgaWYgc3lzLm1heHVuaWNvZGUgPiAweEZGRkYgZWxzZSAyCithc2NpaV9jaGFyX3NpemUgPSAxCiAKIAogIyBSZXR1cm4gVHJ1ZSBpZiBvcGNvZGUgY29kZSBhcHBlYXJzIGluIHRoZSBwaWNrbGUsIGVsc2UgRmFsc2UuCkBAIC03NDcsNiArNzQ4LDE4IEBACiAgICAgICAgICAgICAgICAgdSA9IHNlbGYubG9hZHMocykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsIHUpCiAKKyAgICBkZWYgdGVzdF9lbGxpcHNpcyhzZWxmKToKKyAgICAgICAgZm9yIHByb3RvIGluIHByb3RvY29sczoKKyAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKC4uLiwgcHJvdG8pCisgICAgICAgICAgICB1ID0gc2VsZi5sb2FkcyhzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCguLi4sIHUpCisKKyAgICBkZWYgdGVzdF9ub3RpbXBsZW1lbnRlZChzZWxmKToKKyAgICAgICAgZm9yIHByb3RvIGluIHByb3RvY29sczoKKyAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKE5vdEltcGxlbWVudGVkLCBwcm90bykKKyAgICAgICAgICAgIHUgPSBzZWxmLmxvYWRzKHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vdEltcGxlbWVudGVkLCB1KQorCiAgICAgIyBUZXN0cyBmb3IgcHJvdG9jb2wgMgogCiAgICAgZGVmIHRlc3RfcHJvdG8oc2VsZik6CkBAIC04ODAsNiArODkzLDI1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCKHgpLCBCKHkpLCBkZXRhaWwpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4Ll9fZGljdF9fLCB5Ll9fZGljdF9fLCBkZXRhaWwpCiAKKyAgICBkZWYgdGVzdF9uZXdvYmpfcHJveGllcyhzZWxmKToKKyAgICAgICAgIyBORVdPQkogc2hvdWxkIHVzZSB0aGUgX19jbGFzc19fIHJhdGhlciB0aGFuIHRoZSByYXcgdHlwZQorICAgICAgICBjbGFzc2VzID0gbXljbGFzc2VzWzpdCisgICAgICAgICMgQ2Fubm90IGNyZWF0ZSB3ZWFrcHJveGllcyB0byB0aGVzZSBjbGFzc2VzCisgICAgICAgIGZvciBjIGluIChNeUludCwgTXlUdXBsZSk6CisgICAgICAgICAgICBjbGFzc2VzLnJlbW92ZShjKQorICAgICAgICBmb3IgcHJvdG8gaW4gcHJvdG9jb2xzOgorICAgICAgICAgICAgZm9yIEMgaW4gY2xhc3NlczoKKyAgICAgICAgICAgICAgICBCID0gQy5fX2Jhc2VfXworICAgICAgICAgICAgICAgIHggPSBDKEMuc2FtcGxlKQorICAgICAgICAgICAgICAgIHguZm9vID0gNDIKKyAgICAgICAgICAgICAgICBwID0gd2Vha3JlZi5wcm94eSh4KQorICAgICAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKHAsIHByb3RvKQorICAgICAgICAgICAgICAgIHkgPSBzZWxmLmxvYWRzKHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHkpLCB0eXBlKHgpKSAgIyByYXRoZXIgdGhhbiB0eXBlKHApCisgICAgICAgICAgICAgICAgZGV0YWlsID0gKHByb3RvLCBDLCBCLCB4LCB5LCB0eXBlKHkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQih4KSwgQih5KSwgZGV0YWlsKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fX2RpY3RfXywgeS5fX2RpY3RfXywgZGV0YWlsKQorCiAgICAgIyBSZWdpc3RlciBhIHR5cGUgd2l0aCBjb3B5cmVnLCB3aXRoIGV4dGVuc2lvbiBjb2RlIGV4dGNvZGUuICBQaWNrbGUKICAgICAjIGFuIG9iamVjdCBvZiB0aGF0IHR5cGUuICBDaGVjayB0aGF0IHRoZSByZXN1bHRpbmcgcGlja2xlIHVzZXMgb3Bjb2RlCiAgICAgIyAoRVhUWzEyNF0pIHVuZGVyIHByb3RvIDIsIGFuZCBub3QgaW4gcHJvdG8gMS4KQEAgLTEwNDAsMTMgKzEwNzIsMTMgQEAKICAgICAgICAgICAgIHkgPSBzZWxmLmxvYWRzKHMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHkuX3JlZHVjZV9jYWxsZWQsIDEpCiAKKyAgICBAbm9fdHJhY2luZwogICAgIGRlZiB0ZXN0X2JhZF9nZXRhdHRyKHNlbGYpOgogICAgICAgICB4ID0gQmFkR2V0YXR0cigpCiAgICAgICAgIGZvciBwcm90byBpbiAwLCAxOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzZWxmLmR1bXBzLCB4LCBwcm90bykKICAgICAgICAgIyBwcm90b2NvbCAyIGRvbid0IHJhaXNlIGEgUnVudGltZUVycm9yLgogICAgICAgICBkID0gc2VsZi5kdW1wcyh4LCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHNlbGYubG9hZHMsIGQpCiAKICAgICBkZWYgdGVzdF9yZWR1Y2VfYmFkX2l0ZXJhdG9yKHNlbGYpOgogICAgICAgICAjIElzc3VlNDE3NjogY3Jhc2ggd2hlbiA0dGggYW5kIDV0aCBpdGVtcyBvZiBfX3JlZHVjZV9fKCkKQEAgLTExMzYsNiArMTE2OCwxNSBAQAogICAgICAgICBlbXB0eSA9IHNlbGYubG9hZHMoYidceDgwXHgwM1VceDAwcVx4MDAuJywgZW5jb2Rpbmc9J2tvaTgtcicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW1wdHksICcnKQogCisgICAgZGVmIHRlc3RfaW50X3BpY2tsaW5nX2VmZmljaWVuY3koc2VsZik6CisgICAgICAgICMgVGVzdCBjb21wYWNpdHkgb2YgaW50IHJlcHJlc2VudGF0aW9uIChzZWUgaXNzdWUgIzEyNzQ0KQorICAgICAgICBmb3IgcHJvdG8gaW4gcHJvdG9jb2xzOgorICAgICAgICAgICAgc2l6ZXMgPSBbbGVuKHNlbGYuZHVtcHMoMioqbiwgcHJvdG8pKSBmb3IgbiBpbiByYW5nZSg3MCldCisgICAgICAgICAgICAjIHRoZSBzaXplIGZ1bmN0aW9uIGlzIG1vbm90b25pYworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoc2l6ZXMpLCBzaXplcykKKyAgICAgICAgICAgIGlmIHByb3RvID49IDI6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoc2l6ZXNbLTFdLCAxNCkKKwogICAgIGRlZiBjaGVja19uZWdhdGl2ZV8zMmJfYmluWFhYKHNlbGYsIGR1bXBlZCk6CiAgICAgICAgIGlmIHN5cy5tYXhzaXplID4gMioqMzI6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJ0ZXN0IGlzIG9ubHkgbWVhbmluZ2Z1bCBvbiAzMi1iaXQgYnVpbGRzIikKQEAgLTEyMTcsNyArMTI1OCw3IEBACiAgICAgIyBBbGwgcHJvdG9jb2xzIHVzZSAxLWJ5dGUgcGVyIHByaW50YWJsZSBBU0NJSSBjaGFyYWN0ZXI7IHdlIGFkZCBhbm90aGVyCiAgICAgIyBieXRlIGJlY2F1c2UgdGhlIGVuY29kZWQgZm9ybSBoYXMgdG8gYmUgY29waWVkIGludG8gdGhlIGludGVybmFsIGJ1ZmZlci4KIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MiArIGNoYXJhY3Rlcl9zaXplLCBkcnlfcnVuPUZhbHNlKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MiArIGFzY2lpX2NoYXJfc2l6ZSwgZHJ5X3J1bj1GYWxzZSkKICAgICBkZWYgdGVzdF9odWdlX3N0cl8zMmIoc2VsZiwgc2l6ZSk6CiAgICAgICAgIGRhdGEgPSAiYWJjZCIgKiAoc2l6ZSAvLyA0KQogICAgICAgICB0cnk6CkBAIC0xMjM0LDcgKzEyNzUsNyBAQAogICAgICMgQklOVU5JQ09ERSAocHJvdG9jb2xzIDEsIDIgYW5kIDMpIGNhbm5vdCBjYXJyeSBtb3JlIHRoYW4KICAgICAjIDIqKjMyIC0gMSBieXRlcyBvZiB1dGYtOCBlbmNvZGVkIHVuaWNvZGUuCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RywgbWVtdXNlPTEgKyBjaGFyYWN0ZXJfc2l6ZSwgZHJ5X3J1bj1GYWxzZSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RywgbWVtdXNlPTEgKyBhc2NpaV9jaGFyX3NpemUsIGRyeV9ydW49RmFsc2UpCiAgICAgZGVmIHRlc3RfaHVnZV9zdHJfNjRiKHNlbGYsIHNpemUpOgogICAgICAgICBkYXRhID0gImEiICogc2l6ZQogICAgICAgICB0cnk6CkBAIC0xNTc4LDYgKzE2MTksMTA1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bnBpY2tsZXIubG9hZCgpLCBkYXRhKQogCiAKKyMgVGVzdHMgZm9yIGRpc3BhdGNoX3RhYmxlIGF0dHJpYnV0ZQorCitSRURVQ0VfQSA9ICdyZWR1Y2VfQScKKworY2xhc3MgQUFBKG9iamVjdCk6CisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiBzdHIsIChSRURVQ0VfQSwpCisKK2NsYXNzIEJCQihvYmplY3QpOgorICAgIHBhc3MKKworY2xhc3MgQWJzdHJhY3REaXNwYXRjaFRhYmxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZGVmYXVsdF9kaXNwYXRjaF90YWJsZShzZWxmKToKKyAgICAgICAgIyBObyBkaXNwYXRjaF90YWJsZSBhdHRyaWJ1dGUgYnkgZGVmYXVsdAorICAgICAgICBmID0gaW8uQnl0ZXNJTygpCisgICAgICAgIHAgPSBzZWxmLnBpY2tsZXJfY2xhc3MoZiwgMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBwLmRpc3BhdGNoX3RhYmxlCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihwLCAnZGlzcGF0Y2hfdGFibGUnKSkKKworICAgIGRlZiB0ZXN0X2NsYXNzX2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICAjIEEgZGlzcGF0Y2hfdGFibGUgYXR0cmlidXRlIGNhbiBiZSBzcGVjaWZpZWQgY2xhc3Mtd2lkZQorICAgICAgICBkdCA9IHNlbGYuZ2V0X2Rpc3BhdGNoX3RhYmxlKCkKKworICAgICAgICBjbGFzcyBNeVBpY2tsZXIoc2VsZi5waWNrbGVyX2NsYXNzKToKKyAgICAgICAgICAgIGRpc3BhdGNoX3RhYmxlID0gZHQKKworICAgICAgICBkZWYgZHVtcHMob2JqLCBwcm90b2NvbD1Ob25lKToKKyAgICAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgICAgIHAgPSBNeVBpY2tsZXIoZiwgcHJvdG9jb2wpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZGlzcGF0Y2hfdGFibGUsIGR0KQorICAgICAgICAgICAgcC5kdW1wKG9iaikKKyAgICAgICAgICAgIHJldHVybiBmLmdldHZhbHVlKCkKKworICAgICAgICBzZWxmLl90ZXN0X2Rpc3BhdGNoX3RhYmxlKGR1bXBzLCBkdCkKKworICAgIGRlZiB0ZXN0X2luc3RhbmNlX2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICAjIEEgZGlzcGF0Y2hfdGFibGUgYXR0cmlidXRlIGNhbiBhbHNvIGJlIHNwZWNpZmllZCBpbnN0YW5jZS13aWRlCisgICAgICAgIGR0ID0gc2VsZi5nZXRfZGlzcGF0Y2hfdGFibGUoKQorCisgICAgICAgIGRlZiBkdW1wcyhvYmosIHByb3RvY29sPU5vbmUpOgorICAgICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICAgICAgcCA9IHNlbGYucGlja2xlcl9jbGFzcyhmLCBwcm90b2NvbCkKKyAgICAgICAgICAgIHAuZGlzcGF0Y2hfdGFibGUgPSBkdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmRpc3BhdGNoX3RhYmxlLCBkdCkKKyAgICAgICAgICAgIHAuZHVtcChvYmopCisgICAgICAgICAgICByZXR1cm4gZi5nZXR2YWx1ZSgpCisKKyAgICAgICAgc2VsZi5fdGVzdF9kaXNwYXRjaF90YWJsZShkdW1wcywgZHQpCisKKyAgICBkZWYgX3Rlc3RfZGlzcGF0Y2hfdGFibGUoc2VsZiwgZHVtcHMsIGRpc3BhdGNoX3RhYmxlKToKKyAgICAgICAgZGVmIGN1c3RvbV9sb2FkX2R1bXAob2JqKToKKyAgICAgICAgICAgIHJldHVybiBwaWNrbGUubG9hZHMoZHVtcHMob2JqLCAwKSkKKworICAgICAgICBkZWYgZGVmYXVsdF9sb2FkX2R1bXAob2JqKToKKyAgICAgICAgICAgIHJldHVybiBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKG9iaiwgMCkpCisKKyAgICAgICAgIyBwaWNrbGluZyBjb21wbGV4IG51bWJlcnMgdXNpbmcgcHJvdG9jb2wgMCByZWxpZXMgb24gY29weXJlZworICAgICAgICAjIHNvIGNoZWNrIHBpY2tsaW5nIGEgY29tcGxleCBudW1iZXIgc3RpbGwgd29ya3MKKyAgICAgICAgeiA9IDEgKyAyagorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoeiksIHopCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdF9sb2FkX2R1bXAoeiksIHopCisKKyAgICAgICAgIyBtb2RpZnkgcGlja2xpbmcgb2YgY29tcGxleAorICAgICAgICBSRURVQ0VfMSA9ICdyZWR1Y2VfMScKKyAgICAgICAgZGVmIHJlZHVjZV8xKG9iaik6CisgICAgICAgICAgICByZXR1cm4gc3RyLCAoUkVEVUNFXzEsKQorICAgICAgICBkaXNwYXRjaF90YWJsZVtjb21wbGV4XSA9IHJlZHVjZV8xCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VzdG9tX2xvYWRfZHVtcCh6KSwgUkVEVUNFXzEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdF9sb2FkX2R1bXAoeiksIHopCisKKyAgICAgICAgIyBjaGVjayBwaWNrbGFiaWxpdHkgb2YgQUFBIGFuZCBCQkIKKyAgICAgICAgYSA9IEFBQSgpCisgICAgICAgIGIgPSBCQkIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoYSksIFJFRFVDRV9BKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY3VzdG9tX2xvYWRfZHVtcChiKSwgQkJCKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHRfbG9hZF9kdW1wKGEpLCBSRURVQ0VfQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRlZmF1bHRfbG9hZF9kdW1wKGIpLCBCQkIpCisKKyAgICAgICAgIyBtb2RpZnkgcGlja2xpbmcgb2YgQkJCCisgICAgICAgIGRpc3BhdGNoX3RhYmxlW0JCQl0gPSByZWR1Y2VfMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoYSksIFJFRFVDRV9BKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoYiksIFJFRFVDRV8xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHRfbG9hZF9kdW1wKGEpLCBSRURVQ0VfQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRlZmF1bHRfbG9hZF9kdW1wKGIpLCBCQkIpCisKKyAgICAgICAgIyByZXZlcnQgcGlja2xpbmcgb2YgQkJCIGFuZCBtb2RpZnkgcGlja2xpbmcgb2YgQUFBCisgICAgICAgIFJFRFVDRV8yID0gJ3JlZHVjZV8yJworICAgICAgICBkZWYgcmVkdWNlXzIob2JqKToKKyAgICAgICAgICAgIHJldHVybiBzdHIsIChSRURVQ0VfMiwpCisgICAgICAgIGRpc3BhdGNoX3RhYmxlW0FBQV0gPSByZWR1Y2VfMgorICAgICAgICBkZWwgZGlzcGF0Y2hfdGFibGVbQkJCXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoYSksIFJFRFVDRV8yKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY3VzdG9tX2xvYWRfZHVtcChiKSwgQkJCKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHRfbG9hZF9kdW1wKGEpLCBSRURVQ0VfQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRlZmF1bHRfbG9hZF9kdW1wKGIpLCBCQkIpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICAjIFByaW50IHNvbWUgc3R1ZmYgdGhhdCBjYW4gYmUgdXNlZCB0byByZXdyaXRlIERBVEF7MCwxLDJ9CiAgICAgZnJvbSBwaWNrbGV0b29scyBpbXBvcnQgZGlzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9yZWdydGVzdC5weSBiL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CmluZGV4IDg0YmViOGQuLjYzNjI4MmUgMTAwNzU1Ci0tLSBhL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CisrKyBiL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CkBAIC0yMCw2ICsyMCwxMSBAQAogT3B0aW9uczoKIAogLWgvLS1oZWxwICAgICAgIC0tIHByaW50IHRoaXMgdGV4dCBhbmQgZXhpdAorLS10aW1lb3V0IFRJTUVPVVQKKyAgICAgICAgICAgICAgICAtLSBkdW1wIHRoZSB0cmFjZWJhY2sgYW5kIGV4aXQgaWYgYSB0ZXN0IHRha2VzIG1vcmUKKyAgICAgICAgICAgICAgICAgICB0aGFuIFRJTUVPVVQgc2Vjb25kczsgZGlzYWJsZWQgaWYgVElNRU9VVCBpcyBuZWdhdGl2ZQorICAgICAgICAgICAgICAgICAgIG9yIGVxdWFscyB0byB6ZXJvCistLXdhaXQgICAgICAgICAgLS0gd2FpdCBmb3IgdXNlciBpbnB1dCwgZS5nLiwgYWxsb3cgYSBkZWJ1Z2dlciB0byBiZSBhdHRhY2hlZAogCiBWZXJib3NpdHkKIApAQCAtNDQsNiArNDksOSBAQAogICAgICAgICAgICAgICAgIC0tIHNwZWNpZnkgd2hpY2ggc3BlY2lhbCByZXNvdXJjZSBpbnRlbnNpdmUgdGVzdHMgdG8gcnVuCiAtTS8tLW1lbWxpbWl0IExJTUlUCiAgICAgICAgICAgICAgICAgLS0gcnVuIHZlcnkgbGFyZ2UgbWVtb3J5LWNvbnN1bWluZyB0ZXN0cworICAgLS10ZXN0ZGlyIERJUgorICAgICAgICAgICAgICAgIC0tIGV4ZWN1dGUgdGVzdCBmaWxlcyBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSAoaW5zdGVhZAorICAgICAgICAgICAgICAgICAgIG9mIHRoZSBQeXRob24gc3RkbGliIHRlc3Qgc3VpdGUpCiAKIFNwZWNpYWwgcnVucwogCkBAIC0xMjUsNiArMTMzLDggQEAKIAogICAgIGFsbCAtICAgICAgIEVuYWJsZSBhbGwgc3BlY2lhbCByZXNvdXJjZXMuCiAKKyAgICBub25lIC0gICAgICBEaXNhYmxlIGFsbCBzcGVjaWFsIHJlc291cmNlcyAodGhpcyBpcyB0aGUgZGVmYXVsdCkuCisKICAgICBhdWRpbyAtICAgICBUZXN0cyB0aGF0IHVzZSB0aGUgYXVkaW8gZGV2aWNlLiAgKFRoZXJlIGFyZSBrbm93bgogICAgICAgICAgICAgICAgIGNhc2VzIG9mIGJyb2tlbiBhdWRpbyBkcml2ZXJzIHRoYXQgY2FuIGNyYXNoIFB5dGhvbiBvcgogICAgICAgICAgICAgICAgIGV2ZW4gdGhlIExpbnV4IGtlcm5lbC4pCkBAIC0xNTUsOCArMTY1LDExIEBACiBvcHRpb24gJy11YWxsLC1ndWknLgogIiIiCiAKKyMgV2UgaW1wb3J0IGltcG9ydGxpYiAqQVNBUCogaW4gb3JkZXIgdG8gdGVzdCAjMTUzODYKK2ltcG9ydCBpbXBvcnRsaWIKKwogaW1wb3J0IGJ1aWx0aW5zCi1pbXBvcnQgZXJybm8KK2ltcG9ydCBmYXVsdGhhbmRsZXIKIGltcG9ydCBnZXRvcHQKIGltcG9ydCBpbwogaW1wb3J0IGpzb24KQEAgLTE2Niw2ICsxNzksNyBAQAogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHJlCiBpbXBvcnQgc2h1dGlsCitpbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3lzCiBpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgdGVtcGZpbGUKQEAgLTIyNSw2ICsyMzksNyBAQAogU0tJUFBFRCA9IC0yCiBSRVNPVVJDRV9ERU5JRUQgPSAtMwogSU5URVJSVVBURUQgPSAtNAorQ0hJTERfRVJST1IgPSAtNSAgICMgZXJyb3IgaW4gYSBjaGlsZCBwcm9jZXNzCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCkBAIC0yNjgsNiArMjgzLDE4IEBACiAgICAgb24gdGhlIGNvbW1hbmQgbGluZS4KICAgICAiIiIKIAorICAgICMgRGlzcGxheSB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBmYXRhbCBlcnJvcnMgKGUuZy4gc2VnZmF1bHQpCisgICAgZmF1bHRoYW5kbGVyLmVuYWJsZShhbGxfdGhyZWFkcz1UcnVlKQorCisgICAgIyBEaXNwbGF5IHRoZSBQeXRob24gdHJhY2ViYWNrIG9uIFNJR0FMUk0gb3IgU0lHVVNSMSBzaWduYWwKKyAgICBzaWduYWxzID0gW10KKyAgICBpZiBoYXNhdHRyKHNpZ25hbCwgJ1NJR0FMUk0nKToKKyAgICAgICAgc2lnbmFscy5hcHBlbmQoc2lnbmFsLlNJR0FMUk0pCisgICAgaWYgaGFzYXR0cihzaWduYWwsICdTSUdVU1IxJyk6CisgICAgICAgIHNpZ25hbHMuYXBwZW5kKHNpZ25hbC5TSUdVU1IxKQorICAgIGZvciBzaWdudW0gaW4gc2lnbmFsczoKKyAgICAgICAgZmF1bHRoYW5kbGVyLnJlZ2lzdGVyKHNpZ251bSwgY2hhaW49VHJ1ZSkKKwogICAgIHJlcGxhY2Vfc3Rkb3V0KCkKIAogICAgIHN1cHBvcnQucmVjb3JkX29yaWdpbmFsX3N0ZG91dChzeXMuc3Rkb3V0KQpAQCAtMjc4LDcgKzMwNSw4IEBACiAgICAgICAgICAgICAgJ3VzZT0nLCAndGhyZXNob2xkPScsICdjb3ZlcmRpcj0nLCAnbm9jb3ZlcmRpcicsCiAgICAgICAgICAgICAgJ3J1bmxlYWtzJywgJ2h1bnRybGVha3M9JywgJ21lbWxpbWl0PScsICdyYW5kc2VlZD0nLAogICAgICAgICAgICAgICdtdWx0aXByb2Nlc3M9JywgJ2NvdmVyYWdlJywgJ3NsYXZlYXJncz0nLCAnZm9yZXZlcicsICdkZWJ1ZycsCi0gICAgICAgICAgICAgJ3N0YXJ0PScsICdub3dpbmRvd3MnLCAnaGVhZGVyJywgJ2ZhaWxmYXN0JywgJ21hdGNoPSddKQorICAgICAgICAgICAgICdzdGFydD0nLCAnbm93aW5kb3dzJywgJ2hlYWRlcicsICd0ZXN0ZGlyPScsICd0aW1lb3V0PScsICd3YWl0JywKKyAgICAgICAgICAgICAnZmFpbGZhc3QnLCAnbWF0Y2g9J10pCiAgICAgZXhjZXB0IGdldG9wdC5lcnJvciBhcyBtc2c6CiAgICAgICAgIHVzYWdlKG1zZykKIApAQCAtMjg5LDYgKzMxNyw3IEBACiAgICAgICAgIHVzZV9yZXNvdXJjZXMgPSBbXQogICAgIGRlYnVnID0gRmFsc2UKICAgICBzdGFydCA9IE5vbmUKKyAgICB0aW1lb3V0ID0gTm9uZQogICAgIGZvciBvLCBhIGluIG9wdHM6CiAgICAgICAgIGlmIG8gaW4gKCctaCcsICctLWhlbHAnKToKICAgICAgICAgICAgIHByaW50KF9fZG9jX18pCkBAIC0zMzIsNyArMzYxLDkgQEAKICAgICAgICAgZWxpZiBvIGluICgnLVQnLCAnLS1jb3ZlcmFnZScpOgogICAgICAgICAgICAgdHJhY2UgPSBUcnVlCiAgICAgICAgIGVsaWYgbyBpbiAoJy1EJywgJy0tY292ZXJkaXInKToKLSAgICAgICAgICAgIGNvdmVyZGlyID0gb3MucGF0aC5qb2luKG9zLmdldGN3ZCgpLCBhKQorICAgICAgICAgICAgIyBDV0QgaXMgcmVwbGFjZWQgd2l0aCBhIHRlbXBvcmFyeSBkaXIgYmVmb3JlIGNhbGxpbmcgbWFpbigpLCBzbyB3ZQorICAgICAgICAgICAgIyBuZWVkICBqb2luIGl0IHdpdGggdGhlIHNhdmVkIENXRCBzbyBpdCBnb2VzIHdoZXJlIHRoZSB1c2VyIGV4cGVjdHMuCisgICAgICAgICAgICBjb3ZlcmRpciA9IG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCBhKQogICAgICAgICBlbGlmIG8gaW4gKCctTicsICctLW5vY292ZXJkaXInKToKICAgICAgICAgICAgIGNvdmVyZGlyID0gTm9uZQogICAgICAgICBlbGlmIG8gaW4gKCctUicsICctLWh1bnRybGVha3MnKToKQEAgLTM1MCw5ICszODEsOSBAQAogICAgICAgICAgICAgICAgIGh1bnRybGVha3NbMV0gPSBpbnQoaHVudHJsZWFrc1sxXSkKICAgICAgICAgICAgIGlmIGxlbihodW50cmxlYWtzKSA9PSAyIG9yIG5vdCBodW50cmxlYWtzWzJdOgogICAgICAgICAgICAgICAgIGh1bnRybGVha3NbMjpdID0gWyJyZWZsb2cudHh0Il0KLSAgICAgICAgICAgICMgQXZvaWQgZmFsc2UgcG9zaXRpdmVzIGR1ZSB0byB0aGUgY2hhcmFjdGVyIGNhY2hlIGluCi0gICAgICAgICAgICAjIHN0cmluZ29iamVjdC5jIGZpbGxpbmcgc2xvd2x5IHdpdGggcmFuZG9tIGRhdGEKLSAgICAgICAgICAgIHdhcm1fY2hhcl9jYWNoZSgpCisgICAgICAgICAgICAjIEF2b2lkIGZhbHNlIHBvc2l0aXZlcyBkdWUgdG8gdmFyaW91cyBjYWNoZXMKKyAgICAgICAgICAgICMgZmlsbGluZyBzbG93bHkgd2l0aCByYW5kb20gZGF0YToKKyAgICAgICAgICAgIHdhcm1fY2FjaGVzKCkKICAgICAgICAgZWxpZiBvIGluICgnLU0nLCAnLS1tZW1saW1pdCcpOgogICAgICAgICAgICAgc3VwcG9ydC5zZXRfbWVtbGltaXQoYSkKICAgICAgICAgZWxpZiBvIGluICgnLXUnLCAnLS11c2UnKToKQEAgLTM2MSw2ICszOTIsOSBAQAogICAgICAgICAgICAgICAgIGlmIHIgPT0gJ2FsbCc6CiAgICAgICAgICAgICAgICAgICAgIHVzZV9yZXNvdXJjZXNbOl0gPSBSRVNPVVJDRV9OQU1FUwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIHIgPT0gJ25vbmUnOgorICAgICAgICAgICAgICAgICAgICBkZWwgdXNlX3Jlc291cmNlc1s6XQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIHJlbW92ZSA9IEZhbHNlCiAgICAgICAgICAgICAgICAgaWYgclswXSA9PSAnLSc6CiAgICAgICAgICAgICAgICAgICAgIHJlbW92ZSA9IFRydWUKQEAgLTM5MSwxOCArNDI1LDQ1IEBACiAgICAgICAgICAgICBmb3JldmVyID0gVHJ1ZQogICAgICAgICBlbGlmIG8gaW4gKCctaicsICctLW11bHRpcHJvY2VzcycpOgogICAgICAgICAgICAgdXNlX21wID0gaW50KGEpCisgICAgICAgICAgICBpZiB1c2VfbXAgPD0gMDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKKyAgICAgICAgICAgICAgICAgICAgIyBVc2UgYWxsIGNvcmVzICsgZXh0cmFzIGZvciB0ZXN0cyB0aGF0IGxpa2UgdG8gc2xlZXAKKyAgICAgICAgICAgICAgICAgICAgdXNlX21wID0gMiArIG11bHRpcHJvY2Vzc2luZy5jcHVfY291bnQoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIE5vdEltcGxlbWVudGVkRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICB1c2VfbXAgPSAzCisgICAgICAgICAgICBpZiB1c2VfbXAgPT0gMToKKyAgICAgICAgICAgICAgICB1c2VfbXAgPSBOb25lCiAgICAgICAgIGVsaWYgbyA9PSAnLS1oZWFkZXInOgogICAgICAgICAgICAgaGVhZGVyID0gVHJ1ZQogICAgICAgICBlbGlmIG8gPT0gJy0tc2xhdmVhcmdzJzoKICAgICAgICAgICAgIGFyZ3MsIGt3YXJncyA9IGpzb24ubG9hZHMoYSkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0KCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBJTlRFUlJVUFRFRCwgJycKICAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gSU5URVJSVVBURUQsIGUuX19jbGFzc19fLl9fbmFtZV9fCisgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gQ0hJTERfRVJST1IsIHN0cihlKQogICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAgICAgICAgICAgICBwcmludCgpICAgIyBGb3JjZSBhIG5ld2xpbmUgKGp1c3QgaW4gY2FzZSkKICAgICAgICAgICAgIHByaW50KGpzb24uZHVtcHMocmVzdWx0KSkKICAgICAgICAgICAgIHN5cy5leGl0KDApCisgICAgICAgIGVsaWYgbyA9PSAnLS10ZXN0ZGlyJzoKKyAgICAgICAgICAgICMgQ1dEIGlzIHJlcGxhY2VkIHdpdGggYSB0ZW1wb3JhcnkgZGlyIGJlZm9yZSBjYWxsaW5nIG1haW4oKSwgc28gd2UKKyAgICAgICAgICAgICMgam9pbiBpdCB3aXRoIHRoZSBzYXZlZCBDV0Qgc28gaXQgZW5kcyB1cCB3aGVyZSB0aGUgdXNlciBleHBlY3RzLgorICAgICAgICAgICAgdGVzdGRpciA9IG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCBhKQorICAgICAgICBlbGlmIG8gPT0gJy0tdGltZW91dCc6CisgICAgICAgICAgICBpZiBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrc19sYXRlcicpOgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBmbG9hdChhKQorICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgPD0gMDoKKyAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IE5vbmUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJpbnQoIldhcm5pbmc6IFRoZSB0aW1lb3V0IG9wdGlvbiByZXF1aXJlcyAiCisgICAgICAgICAgICAgICAgICAgICAgImZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja3NfbGF0ZXIiKQorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBOb25lCisgICAgICAgIGVsaWYgbyA9PSAnLS13YWl0JzoKKyAgICAgICAgICAgIGlucHV0KCJQcmVzcyBhbnkga2V5IHRvIGNvbnRpbnVlLi4uIikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHByaW50KCgiTm8gaGFuZGxlciBmb3Igb3B0aW9uIHt9LiAgUGxlYXNlIHJlcG9ydCB0aGlzIGFzIGEgYnVnICIKICAgICAgICAgICAgICAgICAgICAiYXQgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy4iKS5mb3JtYXQobyksIGZpbGU9c3lzLnN0ZGVycikKQEAgLTQ4MSw3ICs1NDIsMTMgQEAKICAgICAgICAgcHJpbnQoIj09ICAiLCBvcy5nZXRjd2QoKSkKICAgICAgICAgcHJpbnQoIlRlc3Rpbmcgd2l0aCBmbGFnczoiLCBzeXMuZmxhZ3MpCiAKLSAgICBhbGx0ZXN0cyA9IGZpbmR0ZXN0cyh0ZXN0ZGlyLCBzdGR0ZXN0cywgbm90dGVzdHMpCisgICAgIyBpZiB0ZXN0ZGlyIGlzIHNldCwgdGhlbiB3ZSBhcmUgbm90IHJ1bm5pbmcgdGhlIHB5dGhvbiB0ZXN0cyBzdWl0ZSwgc28KKyAgICAjIGRvbid0IGFkZCBkZWZhdWx0IHRlc3RzIHRvIGJlIGV4ZWN1dGVkIG9yIHNraXBwZWQgKHBhc3MgZW1wdHkgdmFsdWVzKQorICAgIGlmIHRlc3RkaXI6CisgICAgICAgIGFsbHRlc3RzID0gZmluZHRlc3RzKHRlc3RkaXIsIGxpc3QoKSwgc2V0KCkpCisgICAgZWxzZToKKyAgICAgICAgYWxsdGVzdHMgPSBmaW5kdGVzdHModGVzdGRpciwgc3RkdGVzdHMsIG5vdHRlc3RzKQorCiAgICAgc2VsZWN0ZWQgPSB0ZXN0cyBvciBhcmdzIG9yIGFsbHRlc3RzCiAgICAgaWYgc2luZ2xlOgogICAgICAgICBzZWxlY3RlZCA9IHNlbGVjdGVkWzoxXQpAQCAtNTAxLDcgKzU2OCw3IEBACiAgICAgICAgIHJhbmRvbS5zaHVmZmxlKHNlbGVjdGVkKQogICAgIGlmIHRyYWNlOgogICAgICAgICBpbXBvcnQgdHJhY2UsIHRlbXBmaWxlCi0gICAgICAgIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5wcmVmaXgsIHN5cy5leGVjX3ByZWZpeCwKKyAgICAgICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGZpbGUuZ2V0dGVtcGRpcigpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2U9RmFsc2UsIGNvdW50PVRydWUpCiAKQEAgLTU2Niw3ICs2MzMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3QsIHZlcmJvc2UsIHF1aWV0KSwKICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QoaHVudHJsZWFrcz1odW50cmxlYWtzLCB1c2VfcmVzb3VyY2VzPXVzZV9yZXNvdXJjZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnPWRlYnVnLCBvdXRwdXRfb25fZmFpbHVyZT12ZXJib3NlMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGZhc3Q9ZmFpbGZhc3QsIG1hdGNoX3Rlc3RzPW1hdGNoX3Rlc3RzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXRpbWVvdXQsIGZhaWxmYXN0PWZhaWxmYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF90ZXN0cz1tYXRjaF90ZXN0cykKICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAjIC1FIGlzIG5lZWRlZCBieSBzb21lIHRlc3RzLCBlLmcuIHRlc3RfaW1wb3J0CiAgICAgICAgICAgICAgICAgICAgICMgUnVubmluZyB0aGUgY2hpbGQgZnJvbSB0aGUgc2FtZSB3b3JraW5nIGRpcmVjdG9yeSBlbnN1cmVzCkBAIC01NzgsMTAgKzY0NiwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9mZHM9KG9zLm5hbWUgIT0gJ250JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1zdXBwb3J0LlNBVkVEQ1dEKQogICAgICAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgICAgICAgICAgcmV0Y29kZSA9IHBvcGVuLndhaXQoKQogICAgICAgICAgICAgICAgICAgICAjIFN0cmlwIGxhc3QgcmVmY291bnQgb3V0cHV0IGxpbmUgaWYgaXQgZXhpc3RzLCBzaW5jZSBpdAogICAgICAgICAgICAgICAgICAgICAjIGNvbWVzIGZyb20gdGhlIHNodXRkb3duIG9mIHRoZSBpbnRlcnByZXRlciBpbiB0aGUgc3ViY29tbWFuZC4KICAgICAgICAgICAgICAgICAgICAgc3RkZXJyID0gZGVidWdfb3V0cHV0X3BhdC5zdWIoIiIsIHN0ZGVycikKICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0LCBfLCByZXN1bHQgPSBzdGRvdXQuc3RyaXAoKS5ycGFydGl0aW9uKCJcbiIpCisgICAgICAgICAgICAgICAgICAgIGlmIHJldGNvZGUgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChDSElMRF9FUlJPUiwgIkV4aXQgY29kZSAlcyIgJSByZXRjb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LnB1dCgodGVzdCwgc3Rkb3V0LnJzdHJpcCgpLCBzdGRlcnIucnN0cmlwKCksIHJlc3VsdCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dC5wdXQoKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCkBAIC02MTQsOCArNjg3LDkgQEAKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKICAgICAgICAgICAgICAgICBpZiByZXN1bHRbMF0gPT0gSU5URVJSVVBURUQ6Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydCByZXN1bHRbMV0gPT0gJ0tleWJvYXJkSW50ZXJydXB0JwotICAgICAgICAgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdCAgICMgV2hhdCBlbHNlPworICAgICAgICAgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAorICAgICAgICAgICAgICAgIGlmIHJlc3VsdFswXSA9PSBDSElMRF9FUlJPUjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDaGlsZCBlcnJvciBvbiB7fToge30iLmZvcm1hdCh0ZXN0LCByZXN1bHRbMV0pKQogICAgICAgICAgICAgICAgIHRlc3RfaW5kZXggKz0gMQogICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IFRydWUKQEAgLTYzMiwxMyArNzA2LDE0IEBACiAgICAgICAgICAgICBpZiB0cmFjZToKICAgICAgICAgICAgICAgICAjIElmIHdlJ3JlIHRyYWNpbmcgY29kZSBjb3ZlcmFnZSwgdGhlbiB3ZSBkb24ndCBleGl0IHdpdGggc3RhdHVzCiAgICAgICAgICAgICAgICAgIyBpZiBvbiBhIGZhbHNlIHJldHVybiB2YWx1ZSBmcm9tIG1haW4uCi0gICAgICAgICAgICAgICAgdHJhY2VyLnJ1bmN0eCgncnVudGVzdCh0ZXN0LCB2ZXJib3NlLCBxdWlldCknLAorICAgICAgICAgICAgICAgIHRyYWNlci5ydW5jdHgoJ3J1bnRlc3QodGVzdCwgdmVyYm9zZSwgcXVpZXQsIHRpbWVvdXQ9dGltZW91dCknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscz1nbG9iYWxzKCksIGxvY2Fscz12YXJzKCkpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdCh0ZXN0LCB2ZXJib3NlLCBxdWlldCwgaHVudHJsZWFrcywgZGVidWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X29uX2ZhaWx1cmU9dmVyYm9zZTMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGZhc3Q9ZmFpbGZhc3QsIG1hdGNoX3Rlc3RzPW1hdGNoX3Rlc3RzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9dGltZW91dCwgZmFpbGZhc3Q9ZmFpbGZhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfdGVzdHM9bWF0Y2hfdGVzdHMpCiAgICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVfcmVzdWx0KHRlc3QsIHJlc3VsdCkKICAgICAgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdGVkID0gVHJ1ZQpAQCAtNzA5LDcgKzc4NCw3IEBACiAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB2ZXJib3NlID0gVHJ1ZQotICAgICAgICAgICAgICAgIG9rID0gcnVudGVzdCh0ZXN0LCBUcnVlLCBxdWlldCwgaHVudHJsZWFrcywgZGVidWcpCisgICAgICAgICAgICAgICAgb2sgPSBydW50ZXN0KHRlc3QsIFRydWUsIHF1aWV0LCBodW50cmxlYWtzLCBkZWJ1ZywgdGltZW91dD10aW1lb3V0KQogICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICAgICAgICMgcHJpbnQgYSBuZXdsaW5lIHNlcGFyYXRlIGZyb20gdGhlIF5DCiAgICAgICAgICAgICAgICAgcHJpbnQoKQpAQCAtNzM0LDYgKzgwOSw4IEBACiAgICAgc3lzLmV4aXQobGVuKGJhZCkgPiAwIG9yIGludGVycnVwdGVkKQogCiAKKyMgc21hbGwgc2V0IG9mIHRlc3RzIHRvIGRldGVybWluZSBpZiB3ZSBoYXZlIGEgYmFzaWNhbGx5IGZ1bmN0aW9uaW5nIGludGVycHJldGVyCisjIChpLmUuIGlmIGFueSBvZiB0aGVzZSBmYWlsLCB0aGVuIGFueXRoaW5nIGVsc2UgaXMgbGlrZWx5IHRvIGZvbGxvdykKIFNURFRFU1RTID0gWwogICAgICd0ZXN0X2dyYW1tYXInLAogICAgICd0ZXN0X29wY29kZXMnLApAQCAtNzQ0LDEyICs4MjEsMTEgQEAKICAgICAndGVzdF91bml0dGVzdCcsCiAgICAgJ3Rlc3RfZG9jdGVzdCcsCiAgICAgJ3Rlc3RfZG9jdGVzdDInLAorICAgICd0ZXN0X3N1cHBvcnQnCiBdCiAKLU5PVFRFU1RTID0gewotICAgICd0ZXN0X2Z1dHVyZTEnLAotICAgICd0ZXN0X2Z1dHVyZTInLAotfQorIyBzZXQgb2YgdGVzdHMgdGhhdCB3ZSBkb24ndCB3YW50IHRvIGJlIGV4ZWN1dGVkIHdoZW4gdXNpbmcgcmVncnRlc3QKK05PVFRFU1RTID0gc2V0KCkKIAogZGVmIGZpbmR0ZXN0cyh0ZXN0ZGlyPU5vbmUsIHN0ZHRlc3RzPVNURFRFU1RTLCBub3R0ZXN0cz1OT1RURVNUUyk6CiAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXBwbGljYWJsZSB0ZXN0IG1vZHVsZXMuIiIiCkBAIC03NTgsOSArODM0LDkgQEAKICAgICB0ZXN0cyA9IFtdCiAgICAgb3RoZXJzID0gc2V0KHN0ZHRlc3RzKSB8IG5vdHRlc3RzCiAgICAgZm9yIG5hbWUgaW4gbmFtZXM6Ci0gICAgICAgIG1vZG5hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKLSAgICAgICAgaWYgbW9kbmFtZVs6NV0gPT0gInRlc3RfIiBhbmQgZXh0ID09ICIucHkiIGFuZCBtb2RuYW1lIG5vdCBpbiBvdGhlcnM6Ci0gICAgICAgICAgICB0ZXN0cy5hcHBlbmQobW9kbmFtZSkKKyAgICAgICAgbW9kLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpCisgICAgICAgIGlmIG1vZFs6NV0gPT0gInRlc3RfIiBhbmQgZXh0IGluICgiLnB5IiwgIiIpIGFuZCBtb2Qgbm90IGluIG90aGVyczoKKyAgICAgICAgICAgIHRlc3RzLmFwcGVuZChtb2QpCiAgICAgcmV0dXJuIHN0ZHRlc3RzICsgc29ydGVkKHRlc3RzKQogCiAjIFdlIGRvIG5vdCB1c2UgYSBnZW5lcmF0b3Igc28gbXVsdGlwbGUgdGhyZWFkcyBjYW4gY2FsbCBuZXh0KCkuCkBAIC03ODUsMTcgKzg2MSwxNCBAQAogZGVmIHJlcGxhY2Vfc3Rkb3V0KCk6CiAgICAgIiIiU2V0IHN0ZG91dCBlbmNvZGVyIGVycm9yIGhhbmRsZXIgdG8gYmFja3NsYXNocmVwbGFjZSAoYXMgc3RkZXJyIGVycm9yCiAgICAgaGFuZGxlcikgdG8gYXZvaWQgVW5pY29kZUVuY29kZUVycm9yIHdoZW4gcHJpbnRpbmcgYSB0cmFjZWJhY2siIiIKLSAgICBpZiBvcy5uYW1lID09ICJudCI6Ci0gICAgICAgICMgUmVwbGFjZSBzeXMuc3Rkb3V0IGJyZWFrcyB0aGUgc3Rkb3V0IG5ld2xpbmVzIG9uIFdpbmRvd3M6IGlzc3VlICM4NTMzCi0gICAgICAgIHJldHVybgotCiAgICAgaW1wb3J0IGF0ZXhpdAogCiAgICAgc3Rkb3V0ID0gc3lzLnN0ZG91dAogICAgIHN5cy5zdGRvdXQgPSBvcGVuKHN0ZG91dC5maWxlbm8oKSwgJ3cnLAogICAgICAgICBlbmNvZGluZz1zdGRvdXQuZW5jb2RpbmcsCiAgICAgICAgIGVycm9ycz0iYmFja3NsYXNocmVwbGFjZSIsCi0gICAgICAgIGNsb3NlZmQ9RmFsc2UpCisgICAgICAgIGNsb3NlZmQ9RmFsc2UsCisgICAgICAgIG5ld2xpbmU9J1xuJykKIAogICAgIGRlZiByZXN0b3JlX3N0ZG91dCgpOgogICAgICAgICBzeXMuc3Rkb3V0LmNsb3NlKCkKQEAgLTgwNCw3ICs4NzcsOCBAQAogCiBkZWYgcnVudGVzdCh0ZXN0LCB2ZXJib3NlLCBxdWlldCwKICAgICAgICAgICAgIGh1bnRybGVha3M9RmFsc2UsIGRlYnVnPUZhbHNlLCB1c2VfcmVzb3VyY2VzPU5vbmUsCi0gICAgICAgICAgICBvdXRwdXRfb25fZmFpbHVyZT1GYWxzZSwgZmFpbGZhc3Q9RmFsc2UsIG1hdGNoX3Rlc3RzPU5vbmUpOgorICAgICAgICAgICAgb3V0cHV0X29uX2ZhaWx1cmU9RmFsc2UsIGZhaWxmYXN0PUZhbHNlLCBtYXRjaF90ZXN0cz1Ob25lLAorICAgICAgICAgICAgdGltZW91dD1Ob25lKToKICAgICAiIiJSdW4gYSBzaW5nbGUgdGVzdC4KIAogICAgIHRlc3QgLS0gdGhlIG5hbWUgb2YgdGhlIHRlc3QKQEAgLTgxNCw2ICs4ODgsOCBAQAogICAgIGh1bnRybGVha3MgLS0gcnVuIG11bHRpcGxlIHRpbWVzIHRvIHRlc3QgZm9yIGxlYWtzOyByZXF1aXJlcyBhIGRlYnVnCiAgICAgICAgICAgICAgICAgICBidWlsZDsgYSB0cmlwbGUgY29ycmVzcG9uZGluZyB0byAtUidzIHRocmVlIGFyZ3VtZW50cwogICAgIG91dHB1dF9vbl9mYWlsdXJlIC0tIGlmIHRydWUsIGRpc3BsYXkgdGVzdCBvdXRwdXQgb24gZmFpbHVyZQorICAgIHRpbWVvdXQgLS0gZHVtcCB0aGUgdHJhY2ViYWNrIGFuZCBleGl0IGlmIGEgdGVzdCB0YWtlcyBtb3JlIHRoYW4KKyAgICAgICAgICAgICAgIHRpbWVvdXQgc2Vjb25kcwogCiAgICAgUmV0dXJucyBvbmUgb2YgdGhlIHRlc3QgcmVzdWx0IGNvbnN0YW50czoKICAgICAgICAgSU5URVJSVVBURUQgICAgICBLZXlib2FyZEludGVycnVwdCB3aGVuIHJ1biB1bmRlciAtagpAQCAtODI2LDYgKzkwMiw5IEBACiAKICAgICBpZiB1c2VfcmVzb3VyY2VzIGlzIG5vdCBOb25lOgogICAgICAgICBzdXBwb3J0LnVzZV9yZXNvdXJjZXMgPSB1c2VfcmVzb3VyY2VzCisgICAgdXNlX3RpbWVvdXQgPSAodGltZW91dCBpcyBub3QgTm9uZSkKKyAgICBpZiB1c2VfdGltZW91dDoKKyAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrc19sYXRlcih0aW1lb3V0LCBleGl0PVRydWUpCiAgICAgdHJ5OgogICAgICAgICBzdXBwb3J0Lm1hdGNoX3Rlc3RzID0gbWF0Y2hfdGVzdHMKICAgICAgICAgaWYgZmFpbGZhc3Q6CkBAIC04NjQsNiArOTQzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheV9mYWlsdXJlPW5vdCB2ZXJib3NlKQogICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgZmluYWxseToKKyAgICAgICAgaWYgdXNlX3RpbWVvdXQ6CisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJhY2ViYWNrc19sYXRlcigpCiAgICAgICAgIGNsZWFudXBfdGVzdF9kcm9wcGluZ3ModGVzdCwgdmVyYm9zZSkKIHJ1bnRlc3Quc3RyaW5naW8gPSBOb25lCiAKQEAgLTkwOSwxMCArOTkwLDEwIEBACiAgICAgcmVzb3VyY2VzID0gKCdzeXMuYXJndicsICdjd2QnLCAnc3lzLnN0ZGluJywgJ3N5cy5zdGRvdXQnLCAnc3lzLnN0ZGVycicsCiAgICAgICAgICAgICAgICAgICdvcy5lbnZpcm9uJywgJ3N5cy5wYXRoJywgJ3N5cy5wYXRoX2hvb2tzJywgJ19faW1wb3J0X18nLAogICAgICAgICAgICAgICAgICAnd2FybmluZ3MuZmlsdGVycycsICdhc3luY29yZS5zb2NrZXRfbWFwJywKLSAgICAgICAgICAgICAgICAgJ2xvZ2dpbmcuX2hhbmRsZXJzJywgJ2xvZ2dpbmcuX2hhbmRsZXJMaXN0JywKLSAgICAgICAgICAgICAgICAgJ3NodXRpbC5hcmNoaXZlX2Zvcm1hdHMnLCAnc2h1dGlsLnVucGFja19mb3JtYXRzJywKKyAgICAgICAgICAgICAgICAgJ2xvZ2dpbmcuX2hhbmRsZXJzJywgJ2xvZ2dpbmcuX2hhbmRsZXJMaXN0JywgJ3N5cy5nZXR0cmFjZScsCiAgICAgICAgICAgICAgICAgICdzeXMud2Fybm9wdGlvbnMnLCAndGhyZWFkaW5nLl9kYW5nbGluZycsCiAgICAgICAgICAgICAgICAgICdtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcnLAorICAgICAgICAgICAgICAgICAnc3lzY29uZmlnLl9DT05GSUdfVkFSUycsICdzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUycsCiAgICAgICAgICAgICAgICAgICdzdXBwb3J0LlRFU1RGTicsCiAgICAgICAgICAgICAgICAgKQogCkBAIC05NjEsNiArMTA0MiwxMSBAQAogICAgICAgICBzeXMucGF0aF9ob29rcyA9IHNhdmVkX2hvb2tzWzFdCiAgICAgICAgIHN5cy5wYXRoX2hvb2tzWzpdID0gc2F2ZWRfaG9va3NbMl0KIAorICAgIGRlZiBnZXRfc3lzX2dldHRyYWNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc3lzLmdldHRyYWNlKCkKKyAgICBkZWYgcmVzdG9yZV9zeXNfZ2V0dHJhY2Uoc2VsZiwgdHJhY2VfZnhuKToKKyAgICAgICAgc3lzLnNldHRyYWNlKHRyYWNlX2Z4bikKKwogICAgIGRlZiBnZXRfX19pbXBvcnRfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIGJ1aWx0aW5zLl9faW1wb3J0X18KICAgICBkZWYgcmVzdG9yZV9fX2ltcG9ydF9fKHNlbGYsIGltcG9ydF8pOgpAQCAtMTA0NCw2ICsxMTMwLDI0IEBACiAgICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy5jbGVhcigpCiAgICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy51cGRhdGUoc2F2ZWQpCiAKKyAgICBkZWYgZ2V0X3N5c2NvbmZpZ19fQ09ORklHX1ZBUlMoc2VsZik6CisgICAgICAgICMgbWFrZSBzdXJlIHRoZSBkaWN0IGlzIGluaXRpYWxpemVkCisgICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigncHJlZml4JykKKyAgICAgICAgcmV0dXJuIChpZChzeXNjb25maWcuX0NPTkZJR19WQVJTKSwgc3lzY29uZmlnLl9DT05GSUdfVkFSUywKKyAgICAgICAgICAgICAgICBkaWN0KHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpKQorICAgIGRlZiByZXN0b3JlX3N5c2NvbmZpZ19fQ09ORklHX1ZBUlMoc2VsZiwgc2F2ZWQpOgorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gc2F2ZWRbMV0KKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy5jbGVhcigpCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMudXBkYXRlKHNhdmVkWzJdKQorCisgICAgZGVmIGdldF9zeXNjb25maWdfX0lOU1RBTExfU0NIRU1FUyhzZWxmKToKKyAgICAgICAgcmV0dXJuIChpZChzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUyksIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLAorICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLmNvcHkoKSkKKyAgICBkZWYgcmVzdG9yZV9zeXNjb25maWdfX0lOU1RBTExfU0NIRU1FUyhzZWxmLCBzYXZlZCk6CisgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTID0gc2F2ZWRbMV0KKyAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMuY2xlYXIoKQorICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUy51cGRhdGUoc2F2ZWRbMl0pCisKICAgICBkZWYgZ2V0X3N1cHBvcnRfVEVTVEZOKHNlbGYpOgogICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzdXBwb3J0LlRFU1RGTik6CiAgICAgICAgICAgICByZXN1bHQgPSAnZicKQEAgLTExMDgsMTQgKzEyMTIsMTUgQEAKICAgICAgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQogICAgICAgICAgICAgdGhlX3BhY2thZ2UgPSBfX2ltcG9ydF9fKGFic3Rlc3QsIGdsb2JhbHMoKSwgbG9jYWxzKCksIFtdKQogICAgICAgICAgICAgdGhlX21vZHVsZSA9IGdldGF0dHIodGhlX3BhY2thZ2UsIHRlc3QpCi0gICAgICAgICAgICAjIE9sZCB0ZXN0cyBydW4gdG8gY29tcGxldGlvbiBzaW1wbHkgYXMgYSBzaWRlLWVmZmVjdCBvZgotICAgICAgICAgICAgIyBiZWluZyBpbXBvcnRlZC4gIEZvciB0ZXN0cyBiYXNlZCBvbiB1bml0dGVzdCBvciBkb2N0ZXN0LAotICAgICAgICAgICAgIyBleHBsaWNpdGx5IGludm9rZSB0aGVpciB0ZXN0X21haW4oKSBmdW5jdGlvbiAoaWYgaXQgZXhpc3RzKS4KLSAgICAgICAgICAgIGluZGlyZWN0X3Rlc3QgPSBnZXRhdHRyKHRoZV9tb2R1bGUsICJ0ZXN0X21haW4iLCBOb25lKQotICAgICAgICAgICAgaWYgaW5kaXJlY3RfdGVzdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBpbmRpcmVjdF90ZXN0KCkKKyAgICAgICAgICAgICMgSWYgdGhlIHRlc3QgaGFzIGEgdGVzdF9tYWluLCB0aGF0IHdpbGwgcnVuIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICAgICAgIyB0ZXN0cy4gIElmIG5vdCwgdXNlIG5vcm1hbCB1bml0dGVzdCB0ZXN0IGxvYWRpbmcuCisgICAgICAgICAgICB0ZXN0X3J1bm5lciA9IGdldGF0dHIodGhlX21vZHVsZSwgInRlc3RfbWFpbiIsIE5vbmUpCisgICAgICAgICAgICBpZiB0ZXN0X3J1bm5lciBpcyBOb25lOgorICAgICAgICAgICAgICAgIHRlc3RzID0gdW5pdHRlc3QuVGVzdExvYWRlcigpLmxvYWRUZXN0c0Zyb21Nb2R1bGUodGhlX21vZHVsZSkKKyAgICAgICAgICAgICAgICB0ZXN0X3J1bm5lciA9IGxhbWJkYTogc3VwcG9ydC5ydW5fdW5pdHRlc3QodGVzdHMpCisgICAgICAgICAgICB0ZXN0X3J1bm5lcigpCiAgICAgICAgICAgICBpZiBodW50cmxlYWtzOgotICAgICAgICAgICAgICAgIHJlZmxlYWsgPSBkYXNoX1IodGhlX21vZHVsZSwgdGVzdCwgaW5kaXJlY3RfdGVzdCwKKyAgICAgICAgICAgICAgICByZWZsZWFrID0gZGFzaF9SKHRoZV9tb2R1bGUsIHRlc3QsIHRlc3RfcnVubmVyLAogICAgICAgICAgICAgICAgICAgICBodW50cmxlYWtzKQogICAgICAgICAgICAgdGVzdF90aW1lID0gdGltZS50aW1lKCkgLSBzdGFydF90aW1lCiAgICAgZXhjZXB0IHN1cHBvcnQuUmVzb3VyY2VEZW5pZWQgYXMgbXNnOgpAQCAtMTE5OCw3ICsxMzAzLDggQEAKICAgICAgICAgRmFsc2UgaWYgdGhlIHRlc3QgZGlkbid0IGxlYWsgcmVmZXJlbmNlczsgVHJ1ZSBpZiB3ZSBkZXRlY3RlZCByZWZsZWFrcy4KICAgICAiIiIKICAgICAjIFRoaXMgY29kZSBpcyBoYWNraXNoIGFuZCBpbmVsZWdhbnQsIGJ1dCBpdCBzZWVtcyB0byBkbyB0aGUgam9iLgotICAgIGltcG9ydCBjb3B5cmVnLCBfYWJjb2xsCisgICAgaW1wb3J0IGNvcHlyZWcKKyAgICBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCiAKICAgICBpZiBub3QgaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50Jyk6CiAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVHJhY2tpbmcgcmVmZXJlbmNlIGxlYWtzIHJlcXVpcmVzIGEgZGVidWcgYnVpbGQgIgpAQCAtMTIxNSw3ICsxMzIxLDcgQEAKICAgICBlbHNlOgogICAgICAgICB6ZGMgPSB6aXBpbXBvcnQuX3ppcF9kaXJlY3RvcnlfY2FjaGUuY29weSgpCiAgICAgYWJjcyA9IHt9Ci0gICAgZm9yIGFiYyBpbiBbZ2V0YXR0cihfYWJjb2xsLCBhKSBmb3IgYSBpbiBfYWJjb2xsLl9fYWxsX19dOgorICAgIGZvciBhYmMgaW4gW2dldGF0dHIoY29sbGVjdGlvbnMuYWJjLCBhKSBmb3IgYSBpbiBjb2xsZWN0aW9ucy5hYmMuX19hbGxfX106CiAgICAgICAgIGlmIG5vdCBpc2Fic3RyYWN0KGFiYyk6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBmb3Igb2JqIGluIGFiYy5fX3N1YmNsYXNzZXNfXygpICsgW2FiY106CkBAIC0xMjYxLDcgKzEzNjcsNyBAQAogICAgIGltcG9ydCBnYywgY29weXJlZwogICAgIGltcG9ydCBfc3RycHRpbWUsIGxpbmVjYWNoZQogICAgIGltcG9ydCB1cmxsaWIucGFyc2UsIHVybGxpYi5yZXF1ZXN0LCBtaW1ldHlwZXMsIGRvY3Rlc3QKLSAgICBpbXBvcnQgc3RydWN0LCBmaWxlY21wLCBfYWJjb2xsCisgICAgaW1wb3J0IHN0cnVjdCwgZmlsZWNtcCwgY29sbGVjdGlvbnMuYWJjCiAgICAgZnJvbSBkaXN0dXRpbHMuZGlyX3V0aWwgaW1wb3J0IF9wYXRoX2NyZWF0ZWQKICAgICBmcm9tIHdlYWtyZWYgaW1wb3J0IFdlYWtTZXQKIApAQCAtMTI4OCw3ICsxMzk0LDcgQEAKICAgICBzeXMuX2NsZWFyX3R5cGVfY2FjaGUoKQogCiAgICAgIyBDbGVhciBBQkMgcmVnaXN0cmllcywgcmVzdG9yaW5nIHByZXZpb3VzbHkgc2F2ZWQgQUJDIHJlZ2lzdHJpZXMuCi0gICAgZm9yIGFiYyBpbiBbZ2V0YXR0cihfYWJjb2xsLCBhKSBmb3IgYSBpbiBfYWJjb2xsLl9fYWxsX19dOgorICAgIGZvciBhYmMgaW4gW2dldGF0dHIoY29sbGVjdGlvbnMuYWJjLCBhKSBmb3IgYSBpbiBjb2xsZWN0aW9ucy5hYmMuX19hbGxfX106CiAgICAgICAgIGlmIG5vdCBpc2Fic3RyYWN0KGFiYyk6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBmb3Igb2JqIGluIGFiYy5fX3N1YmNsYXNzZXNfXygpICsgW2FiY106CkBAIC0xMzI0LDEwICsxNDMwLDE1IEBACiAgICAgIyBDb2xsZWN0IGN5Y2xpYyB0cmFzaC4KICAgICBnYy5jb2xsZWN0KCkKIAotZGVmIHdhcm1fY2hhcl9jYWNoZSgpOgorZGVmIHdhcm1fY2FjaGVzKCk6CisgICAgIyBjaGFyIGNhY2hlCiAgICAgcyA9IGJ5dGVzKHJhbmdlKDI1NikpCiAgICAgZm9yIGkgaW4gcmFuZ2UoMjU2KToKICAgICAgICAgc1tpOmkrMV0KKyAgICAjIHVuaWNvZGUgY2FjaGUKKyAgICB4ID0gW2NocihpKSBmb3IgaSBpbiByYW5nZSgyNTYpXQorICAgICMgaW50IGNhY2hlCisgICAgeCA9IGxpc3QocmFuZ2UoLTUsIDI1NykpCiAKIGRlZiBmaW5kdGVzdGRpcihwYXRoPU5vbmUpOgogICAgIHJldHVybiBwYXRoIG9yIG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3Igb3MuY3VyZGlyCkBAIC0xMzc0LDEzICsxNDg1LDE0IEBACiAjIFRlc3RzIHRoYXQgYXJlIGV4cGVjdGVkIHRvIGJlIHNraXBwZWQgZXZlcnl3aGVyZSBleGNlcHQgb24gb25lIHBsYXRmb3JtCiAjIGFyZSBhbHNvIGhhbmRsZWQgc2VwYXJhdGVseS4KIAotX2V4cGVjdGF0aW9ucyA9IHsKLSAgICAnd2luMzInOgorX2V4cGVjdGF0aW9ucyA9ICgKKyAgICAoJ3dpbjMyJywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfX2xvY2FsZQogICAgICAgICB0ZXN0X2NyeXB0CiAgICAgICAgIHRlc3RfY3Vyc2VzCiAgICAgICAgIHRlc3RfZGJtCisgICAgICAgIHRlc3RfZGV2cG9sbAogICAgICAgICB0ZXN0X2ZjbnRsCiAgICAgICAgIHRlc3RfZm9yazEKICAgICAgICAgdGVzdF9lcG9sbApAQCAtMTQwMywxNSArMTUxNSwxNiBAQAogICAgICAgICB0ZXN0X3RocmVhZHNpZ25hbHMKICAgICAgICAgdGVzdF93YWl0MwogICAgICAgICB0ZXN0X3dhaXQ0Ci0gICAgICAgICIiIiwKLSAgICAnbGludXgyJzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ2xpbnV4JywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfY3Vyc2VzCisgICAgICAgIHRlc3RfZGV2cG9sbAogICAgICAgICB0ZXN0X2xhcmdlZmlsZQogICAgICAgICB0ZXN0X2txdWV1ZQogICAgICAgICB0ZXN0X29zc2F1ZGlvZGV2Ci0gICAgICAgICIiIiwKLSAgICAndW5peHdhcmU3JzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ3VuaXh3YXJlJywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfZXBvbGwKICAgICAgICAgdGVzdF9sYXJnZWZpbGUKQEAgLTE0MjEsOCArMTUzNCw4IEBACiAgICAgICAgIHRlc3RfcHlleHBhdAogICAgICAgICB0ZXN0X3NheAogICAgICAgICB0ZXN0X3N1bmRyeQotICAgICAgICAiIiIsCi0gICAgJ29wZW51bml4OCc6CisgICAgICAgICIiIiksCisgICAgKCdvcGVudW5peCcsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2Vwb2xsCiAgICAgICAgIHRlc3RfbGFyZ2VmaWxlCkBAIC0xNDMyLDggKzE1NDUsOCBAQAogICAgICAgICB0ZXN0X3B5ZXhwYXQKICAgICAgICAgdGVzdF9zYXgKICAgICAgICAgdGVzdF9zdW5kcnkKLSAgICAgICAgIiIiLAotICAgICdzY29fc3YzJzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ3Njb19zdicsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2FzeW5jaGF0CiAgICAgICAgIHRlc3RfZm9yazEKQEAgLTE0NTIsMTEgKzE1NjUsMTIgQEAKICAgICAgICAgdGVzdF90aHJlYWRlZF9pbXBvcnQKICAgICAgICAgdGVzdF90aHJlYWRlZHRlbXBmaWxlCiAgICAgICAgIHRlc3RfdGhyZWFkaW5nCi0gICAgICAgICIiIiwKLSAgICAnZGFyd2luJzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ2RhcndpbicsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X19sb2NhbGUKICAgICAgICAgdGVzdF9jdXJzZXMKKyAgICAgICAgdGVzdF9kZXZwb2xsCiAgICAgICAgIHRlc3RfZXBvbGwKICAgICAgICAgdGVzdF9kYm1fZ251CiAgICAgICAgIHRlc3RfZ2RiCkBAIC0xNDY1LDggKzE1NzksOCBAQAogICAgICAgICB0ZXN0X21pbmlkb20KICAgICAgICAgdGVzdF9vc3NhdWRpb2RldgogICAgICAgICB0ZXN0X3BvbGwKLSAgICAgICAgIiIiLAotICAgICdzdW5vczUnOgorICAgICAgICAiIiIpLAorICAgICgnc3Vub3MnLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9jdXJzZXMKICAgICAgICAgdGVzdF9kYm0KQEAgLTE0NzcsOCArMTU5MSw4IEBACiAgICAgICAgIHRlc3Rfb3BlbnB0eQogICAgICAgICB0ZXN0X3ppcGZpbGUKICAgICAgICAgdGVzdF96bGliCi0gICAgICAgICIiIiwKLSAgICAnaHAtdXgxMSc6CisgICAgICAgICIiIiksCisgICAgKCdocC11eCcsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2N1cnNlcwogICAgICAgICB0ZXN0X2Vwb2xsCkBAIC0xNDkzLDExICsxNjA3LDEyIEBACiAgICAgICAgIHRlc3Rfc2F4CiAgICAgICAgIHRlc3RfemlwZmlsZQogICAgICAgICB0ZXN0X3psaWIKLSAgICAgICAgIiIiLAotICAgICdjeWd3aW4nOgorICAgICAgICAiIiIpLAorICAgICgnY3lnd2luJywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfY3Vyc2VzCiAgICAgICAgIHRlc3RfZGJtCisgICAgICAgIHRlc3RfZGV2cG9sbAogICAgICAgICB0ZXN0X2Vwb2xsCiAgICAgICAgIHRlc3RfaW9jdGwKICAgICAgICAgdGVzdF9rcXVldWUKQEAgLTE1MDUsOCArMTYyMCw4IEBACiAgICAgICAgIHRlc3RfbG9jYWxlCiAgICAgICAgIHRlc3Rfb3NzYXVkaW9kZXYKICAgICAgICAgdGVzdF9zb2NrZXRzZXJ2ZXIKLSAgICAgICAgIiIiLAotICAgICdvczJlbXgnOgorICAgICAgICAiIiIpLAorICAgICgnb3MyZW14JywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfYXVkaW9vcAogICAgICAgICB0ZXN0X2N1cnNlcwpAQCAtMTUxOSw5ICsxNjM0LDEwIEBACiAgICAgICAgIHRlc3RfcHR5CiAgICAgICAgIHRlc3RfcmVzb3VyY2UKICAgICAgICAgdGVzdF9zaWduYWwKLSAgICAgICAgIiIiLAotICAgICdmcmVlYnNkNCc6CisgICAgICAgICIiIiksCisgICAgKCdmcmVlYnNkJywKICAgICAgICAgIiIiCisgICAgICAgIHRlc3RfZGV2cG9sbAogICAgICAgICB0ZXN0X2Vwb2xsCiAgICAgICAgIHRlc3RfZGJtX2dudQogICAgICAgICB0ZXN0X2xvY2FsZQpAQCAtMTUzNiw4ICsxNjUyLDggQEAKICAgICAgICAgdGVzdF90aW1lb3V0CiAgICAgICAgIHRlc3RfdXJsbGlibmV0CiAgICAgICAgIHRlc3RfbXVsdGlwcm9jZXNzaW5nCi0gICAgICAgICIiIiwKLSAgICAnYWl4NSc6CisgICAgICAgICIiIiksCisgICAgKCdhaXgnLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9iejIKICAgICAgICAgdGVzdF9lcG9sbApAQCAtMTU1MSwxMCArMTY2NywxMSBAQAogICAgICAgICB0ZXN0X3R0a190ZXh0b25seQogICAgICAgICB0ZXN0X3ppcGltcG9ydAogICAgICAgICB0ZXN0X3psaWIKLSAgICAgICAgIiIiLAotICAgICdvcGVuYnNkMyc6CisgICAgICAgICIiIiksCisgICAgKCdvcGVuYnNkJywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfY3R5cGVzCisgICAgICAgIHRlc3RfZGV2cG9sbAogICAgICAgICB0ZXN0X2Vwb2xsCiAgICAgICAgIHRlc3RfZGJtX2dudQogICAgICAgICB0ZXN0X2xvY2FsZQpAQCAtMTU2NiwxMSArMTY4MywxMiBAQAogICAgICAgICB0ZXN0X3R0a19ndWlvbmx5CiAgICAgICAgIHRlc3RfdHRrX3RleHRvbmx5CiAgICAgICAgIHRlc3RfbXVsdGlwcm9jZXNzaW5nCi0gICAgICAgICIiIiwKLSAgICAnbmV0YnNkMyc6CisgICAgICAgICIiIiksCisgICAgKCduZXRic2QnLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9jdHlwZXMKICAgICAgICAgdGVzdF9jdXJzZXMKKyAgICAgICAgdGVzdF9kZXZwb2xsCiAgICAgICAgIHRlc3RfZXBvbGwKICAgICAgICAgdGVzdF9kYm1fZ251CiAgICAgICAgIHRlc3RfbG9jYWxlCkBAIC0xNTgxLDEyICsxNjk5LDggQEAKICAgICAgICAgdGVzdF90dGtfZ3Vpb25seQogICAgICAgICB0ZXN0X3R0a190ZXh0b25seQogICAgICAgICB0ZXN0X211bHRpcHJvY2Vzc2luZwotICAgICAgICAiIiIsCi19Ci1fZXhwZWN0YXRpb25zWydmcmVlYnNkNSddID0gX2V4cGVjdGF0aW9uc1snZnJlZWJzZDQnXQotX2V4cGVjdGF0aW9uc1snZnJlZWJzZDYnXSA9IF9leHBlY3RhdGlvbnNbJ2ZyZWVic2Q0J10KLV9leHBlY3RhdGlvbnNbJ2ZyZWVic2Q3J10gPSBfZXhwZWN0YXRpb25zWydmcmVlYnNkNCddCi1fZXhwZWN0YXRpb25zWydmcmVlYnNkOCddID0gX2V4cGVjdGF0aW9uc1snZnJlZWJzZDQnXQorICAgICAgICAiIiIpLAorKQogCiBjbGFzcyBfRXhwZWN0ZWRTa2lwczoKICAgICBkZWYgX19pbml0X18oc2VsZik6CkBAIC0xNTk0LDkgKzE3MDgsMTMgQEAKICAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3RpbWVvdXQKIAogICAgICAgICBzZWxmLnZhbGlkID0gRmFsc2UKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluIF9leHBlY3RhdGlvbnM6Ci0gICAgICAgICAgICBzID0gX2V4cGVjdGF0aW9uc1tzeXMucGxhdGZvcm1dCi0gICAgICAgICAgICBzZWxmLmV4cGVjdGVkID0gc2V0KHMuc3BsaXQoKSkKKyAgICAgICAgZXhwZWN0ZWQgPSBOb25lCisgICAgICAgIGZvciBpdGVtIGluIF9leHBlY3RhdGlvbnM6CisgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aChpdGVtWzBdKToKKyAgICAgICAgICAgICAgICBleHBlY3RlZCA9IGl0ZW1bMV0KKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBpZiBleHBlY3RlZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWQgPSBzZXQoZXhwZWN0ZWQuc3BsaXQoKSkKIAogICAgICAgICAgICAgIyBUaGVzZSBhcmUgYnJva2VuIHRlc3RzLCBmb3Igbm93IHNraXBwZWQgb24gZXZlcnkgcGxhdGZvcm0uCiAgICAgICAgICAgICAjIFhYWCBGaXggdGhlc2UhCkBAIC0xNjU2LDkgKzE3NzQsOCBAQAogICAgICAgICBURU1QRElSID0gb3MucGF0aC5hYnNwYXRoKFRFTVBESVIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLm1rZGlyKFRFTVBESVIpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVFWElTVDoKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgcGFzcwogCiAgICAgIyBEZWZpbmUgYSB3cml0YWJsZSB0ZW1wIGRpciB0aGF0IHdpbGwgYmUgdXNlZCBhcyBjd2Qgd2hpbGUgcnVubmluZwogICAgICMgdGhlIHRlc3RzLiBUaGUgbmFtZSBvZiB0aGUgZGlyIGluY2x1ZGVzIHRoZSBwaWQgdG8gYWxsb3cgcGFyYWxsZWwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3JlcGVyZi5weSBiL0xpYi90ZXN0L3JlcGVyZi5weQppbmRleCA3YzY4MjM0Li5lOTNiYWNkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9yZXBlcmYucHkKKysrIGIvTGliL3Rlc3QvcmVwZXJmLnB5CkBAIC05LDEzICs5LDEzIEBACiAgICAgdGltZWZ1bmMoMTAsIHAuZmluZGFsbCwgcykKIAogZGVmIHRpbWVmdW5jKG4sIGZ1bmMsICphcmdzLCAqKmt3KToKLSAgICB0MCA9IHRpbWUuY2xvY2soKQorICAgIHQwID0gdGltZS5wZXJmX2NvdW50ZXIoKQogICAgIHRyeToKICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6CiAgICAgICAgICAgICByZXN1bHQgPSBmdW5jKCphcmdzLCAqKmt3KQogICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgZmluYWxseToKLSAgICAgICAgdDEgPSB0aW1lLmNsb2NrKCkKKyAgICAgICAgdDEgPSB0aW1lLnBlcmZfY291bnRlcigpCiAgICAgICAgIGlmIG4gPiAxOgogICAgICAgICAgICAgcHJpbnQobiwgInRpbWVzIiwgZW5kPScgJykKICAgICAgICAgcHJpbnQoZnVuYy5fX25hbWVfXywgIiUuM2YiICUgKHQxLXQwKSwgIkNQVSBzZWNvbmRzIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NjcmlwdF9oZWxwZXIucHkgYi9MaWIvdGVzdC9zY3JpcHRfaGVscGVyLnB5CmluZGV4IGJhNDQ2Y2QuLmIwOWY0YmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NjcmlwdF9oZWxwZXIucHkKKysrIGIvTGliL3Rlc3Qvc2NyaXB0X2hlbHBlci5weQpAQCAtMSw2ICsxLDcgQEAKICMgQ29tbW9uIHV0aWxpdHkgZnVuY3Rpb25zIHVzZWQgYnkgdmFyaW91cyBzY3JpcHQgZXhlY3V0aW9uIHRlc3RzCiAjICBlLmcuIHRlc3RfY21kX2xpbmUsIHRlc3RfY21kX2xpbmVfc2NyaXB0IGFuZCB0ZXN0X3J1bnB5CiAKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKQEAgLTU5LDExICs2MCwxMiBAQAogICAgICIiIgogICAgIHJldHVybiBfYXNzZXJ0X3B5dGhvbihGYWxzZSwgKmFyZ3MsICoqZW52X3ZhcnMpCiAKLWRlZiBzcGF3bl9weXRob24oKmFyZ3MpOgorZGVmIHNwYXduX3B5dGhvbigqYXJncywgKiprdyk6CiAgICAgY21kX2xpbmUgPSBbc3lzLmV4ZWN1dGFibGUsICctRSddCiAgICAgY21kX2xpbmUuZXh0ZW5kKGFyZ3MpCiAgICAgcmV0dXJuIHN1YnByb2Nlc3MuUG9wZW4oY21kX2xpbmUsIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3cpCiAKIGRlZiBraWxsX3B5dGhvbihwKToKICAgICBwLnN0ZGluLmNsb3NlKCkKQEAgLTkyLDYgKzk0LDcgQEAKICAgICBzY3JpcHRfZmlsZSA9IG9wZW4oc2NyaXB0X25hbWUsICd3JywgZW5jb2Rpbmc9J3V0Zi04JykKICAgICBzY3JpcHRfZmlsZS53cml0ZShzb3VyY2UpCiAgICAgc2NyaXB0X2ZpbGUuY2xvc2UoKQorICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgcmV0dXJuIHNjcmlwdF9uYW1lCiAKIGRlZiBtYWtlX3ppcF9zY3JpcHQoemlwX2RpciwgemlwX2Jhc2VuYW1lLCBzY3JpcHRfbmFtZSwgbmFtZV9pbl96aXA9Tm9uZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zZXFfdGVzdHMucHkgYi9MaWIvdGVzdC9zZXFfdGVzdHMucHkKaW5kZXggZjY1NWMyOS4uZjE4NWE4MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc2VxX3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L3NlcV90ZXN0cy5weQpAQCAtNCw2ICs0LDcgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCitpbXBvcnQgcGlja2xlCiAKICMgVmFyaW91cyBpdGVyYWJsZXMKICMgVGhpcyBpcyB1c2VkIGZvciBjaGVja2luZyB0aGUgY29uc3RydWN0b3IgKGhlcmUgYW5kIGluIHRlc3RfZGVxdWUucHkpCkBAIC0zODgsMyArMzg5LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmluZGV4KDAsIC00KnN5cy5tYXhzaXplLCA0KnN5cy5tYXhzaXplKSwgMikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYS5pbmRleCwgMCwgNCpzeXMubWF4c2l6ZSwtNCpzeXMubWF4c2l6ZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYS5pbmRleCwgMiwgMCwgLTEwKQorCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBsc3QgPSBzZWxmLnR5cGUydGVzdChbNCwgNSwgNiwgN10pCisgICAgICAgIGxzdDIgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGxzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0MiwgbHN0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGxzdDIpLCBpZChsc3QpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc29ydHBlcmYucHkgYi9MaWIvdGVzdC9zb3J0cGVyZi5weQppbmRleCAwY2U4OGRlLi5hZjdjMGI0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zb3J0cGVyZi5weQorKysgYi9MaWIvdGVzdC9zb3J0cGVyZi5weQpAQCAtNTcsOSArNTcsOSBAQAogICAgIHN5cy5zdGRvdXQuZmx1c2goKQogCiBkZWYgZG9pdChMKToKLSAgICB0MCA9IHRpbWUuY2xvY2soKQorICAgIHQwID0gdGltZS5wZXJmX2NvdW50ZXIoKQogICAgIEwuc29ydCgpCi0gICAgdDEgPSB0aW1lLmNsb2NrKCkKKyAgICB0MSA9IHRpbWUucGVyZl9jb3VudGVyKCkKICAgICBwcmludCgiJTYuMmYiICUgKHQxLXQwKSwgZW5kPScgJykKICAgICBmbHVzaCgpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NzbF9rZXkucGFzc3dkLnBlbSBiL0xpYi90ZXN0L3NzbF9rZXkucGFzc3dkLnBlbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTI0NjcyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3Qvc3NsX2tleS5wYXNzd2QucGVtCkBAIC0wLDAgKzEsMTggQEAKKy0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0KK1Byb2MtVHlwZTogNCxFTkNSWVBURUQKK0RFSy1JbmZvOiBERVMtRURFMy1DQkMsMUE4RDlEMkEwMkVDNjk4QQorCitrSlliZlo4TDBzZmU5T3R5M2d3MGFsb05uWTVFOGZlZ1JmUUxabE5veFRsNmpOdDBuSXdJOGtESjM2Q1pnUjljCit1M0ZESm0vS3FyZlVvejh2VytxRW5XaFNHN1FQWDJ3V0dQSGQ0Szk0WXovRmdyUnpaMERvSzdYeFhxOWdPdFZBCitBVkdRaG56MzJwKzZXaGZHc0NyOUFyWEV3UlpyVGsvRnZ6RVBhVTVmSGNvU2tyTlZBR1g4SXBTVmtTRHdFRFFyCitHdjE3K2Nmazk5VVYxT0N6YTZ5S0hvRmtUdHJDK1BaVTcxTG9tQmFiaXZTMk9jNEI5aFl1U1IyaEYwMXdUSFArCitZbFdOYWdaT09WdE56NG9LSzl4OWVOUXBtZlFYUXZQUFRmdXNleEtJYktmWnJNdkpveGNtMWdmY1owSC93SzZQCis2d21YU0czNXFNT096dENaTnRwZXJqczF3ekVCWHpueUs4UW1MY0FKQmprZmFyQUJKWDl2QkV6WlYwT1VLaHkrCitub09SRndIVGxscGhibXlkTGh1NmVoTFVaTUhQaHpBUzVVTjdzcnRwU044MWVlckRNeTBSTVVBd0E3L1BvZlgxCis5NE1lODVROGpQMFBDOUVUZHNKY1BxTHpBUEVURVl1MEVMZXdLUmNyZHlXaSt0bExGcnBFNUtUL3M1ZWNibDlsCis3QjYxVTRLZmQxUElYYy9zaUlOaFUzQTNiWUsrODQ1WXlVQXJVT25LZjFrRW94N3AxUnBEN3lGcVZUMDRsUlRvCitjaWJOS0FUQnVzWFN1QnJwMkc2R051aFdFT1NhZldDS0pRQXpnQ1lJcDZaVFYya2hoTVVHcHBjLzJIM0NGNmNPCit6WDBLdGxQVlpDN2hMa0I2SFQ4U3hZVXdGMXpxV1k3Ky9YUFBkYzM3TWVFWjg3UTNVdVp3cU9STFkrWjBocGd0CitMNUpYQkNva2xaaENBYU4yR3F3RkxYdEdpUlNSRkdZN3hYSWhiRFRsRTY1V3YxV0dHZ0RMTUtHRTFnT3ozeUFvCisyampHMSt5QUhKVWRFNjlYVEZIU3FTa3ZhbG9BMVcwM0xkTVhaOVZ1UUoveVNYQ2llNkFCQVE9PQorLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NzbF9zZXJ2ZXJzLnB5IGIvTGliL3Rlc3Qvc3NsX3NlcnZlcnMucHkKaW5kZXggNzdjMDU0Mi4uODY4NjE1MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc3NsX3NlcnZlcnMucHkKKysrIGIvTGliL3Rlc3Qvc3NsX3NlcnZlcnMucHkKQEAgLTk0LDcgKzk0LDEyIEBACiAgICAgICAgICIiIlNlcnZlIGEgR0VUIHJlcXVlc3QuIiIiCiAgICAgICAgIHNvY2sgPSBzZWxmLnJmaWxlLnJhdy5fc29jawogICAgICAgICBjb250ZXh0ID0gc29jay5jb250ZXh0Ci0gICAgICAgIGJvZHkgPSBwcHJpbnQucGZvcm1hdChjb250ZXh0LnNlc3Npb25fc3RhdHMoKSkKKyAgICAgICAgc3RhdHMgPSB7CisgICAgICAgICAgICAnc2Vzc2lvbl9jYWNoZSc6IGNvbnRleHQuc2Vzc2lvbl9zdGF0cygpLAorICAgICAgICAgICAgJ2NpcGhlcic6IHNvY2suY2lwaGVyKCksCisgICAgICAgICAgICAnY29tcHJlc3Npb24nOiBzb2NrLmNvbXByZXNzaW9uKCksCisgICAgICAgICAgICB9CisgICAgICAgIGJvZHkgPSBwcHJpbnQucGZvcm1hdChzdGF0cykKICAgICAgICAgYm9keSA9IGJvZHkuZW5jb2RlKCd1dGYtOCcpCiAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSgyMDApCiAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkNvbnRlbnQtdHlwZSIsICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IikKQEAgLTE3Miw2ICsxNzcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfZmFsc2UnLCBoZWxwPSdiZSBsZXNzIHZlcmJvc2UnKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1zJywgJy0tc3RhdHMnLCBkZXN0PSd1c2Vfc3RhdHNfaGFuZGxlcicsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBoZWxwPSdhbHdheXMgcmV0dXJuIHN0YXRzIHBhZ2UnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tY3VydmUtbmFtZScsIGRlc3Q9J2N1cnZlX25hbWUnLCB0eXBlPXN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmUnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nY3VydmUgbmFtZSBmb3IgRUMtYmFzZWQgRGlmZmllLUhlbGxtYW4nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZGgnLCBkZXN0PSdkaF9maWxlJywgdHlwZT1zdHIsIGFjdGlvbj0nc3RvcmUnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUEVNIGZpbGUgY29udGFpbmluZyBESCBwYXJhbWV0ZXJzJykKICAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCiAgICAgc3VwcG9ydC52ZXJib3NlID0gYXJncy52ZXJib3NlCkBAIC0xODIsNiArMTkyLDEwIEBACiAgICAgICAgIGhhbmRsZXJfY2xhc3Mucm9vdCA9IG9zLmdldGN3ZCgpCiAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICBpZiBhcmdzLmN1cnZlX25hbWU6CisgICAgICAgIGNvbnRleHQuc2V0X2VjZGhfY3VydmUoYXJncy5jdXJ2ZV9uYW1lKQorICAgIGlmIGFyZ3MuZGhfZmlsZToKKyAgICAgICAgY29udGV4dC5sb2FkX2RoX3BhcmFtcyhhcmdzLmRoX2ZpbGUpCiAKICAgICBzZXJ2ZXIgPSBIVFRQU1NlcnZlcigoIiIsIGFyZ3MucG9ydCksIGhhbmRsZXJfY2xhc3MsIGNvbnRleHQpCiAgICAgaWYgYXJncy52ZXJib3NlOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc3RyaW5nX3Rlc3RzLnB5IGIvTGliL3Rlc3Qvc3RyaW5nX3Rlc3RzLnB5CmluZGV4IDY3OTIxNzkuLjM4NWIwMzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3N0cmluZ190ZXN0cy5weQorKysgYi9MaWIvdGVzdC9zdHJpbmdfdGVzdHMucHkKQEAgLTIwLDcgKzIwLDcgQEAKICAgICBkZWYgX19pbml0X18oc2VsZik6IHNlbGYuc2VxID0gWydhJywgJ2InLCAnYyddCiAgICAgZGVmIF9fbGVuX18oc2VsZik6IHJldHVybiA4CiAKLWNsYXNzIEJhc2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIEJhc2VUZXN0OgogICAgICMgVGhlc2UgdGVzdHMgYXJlIGZvciBidWZmZXJzIG9mIHZhbHVlcyAoYnl0ZXMpIGFuZCBub3QKICAgICAjIHNwZWNpZmljIHRvIGNoYXJhY3RlciBpbnRlcnByZXRhdGlvbiwgdXNlZCBmb3IgYnl0ZXMgb2JqZWN0cwogICAgICMgYW5kIHZhcmlvdXMgc3RyaW5nIGltcGxlbWVudGF0aW9ucwpAQCAtMjksNiArMjksMTEgQEAKICAgICAjIENoYW5nZSBpbiBzdWJjbGFzc2VzIHRvIGNoYW5nZSB0aGUgYmVoYXZpb3VyIG9mIGZpeHRlc3R0eXBlKCkKICAgICB0eXBlMnRlc3QgPSBOb25lCiAKKyAgICAjIFdoZXRoZXIgdGhlICJjb250YWluZWQgaXRlbXMiIG9mIHRoZSBjb250YWluZXIgYXJlIGludGVnZXJzIGluCisgICAgIyByYW5nZSgwLCAyNTYpIChpLmUuIGJ5dGVzLCBieXRlYXJyYXkpIG9yIHN0cmluZ3Mgb2YgbGVuZ3RoIDEKKyAgICAjIChzdHIpCisgICAgY29udGFpbnNfYnl0ZXMgPSBGYWxzZQorCiAgICAgIyBBbGwgdGVzdHMgcGFzcyB0aGVpciBhcmd1bWVudHMgdG8gdGhlIHRlc3RpbmcgbWV0aG9kcwogICAgICMgYXMgc3RyIG9iamVjdHMuIGZpeHRlc3R0eXBlKCkgY2FuIGJlIHVzZWQgdG8gcHJvcGFnYXRlCiAgICAgIyB0aGVzZSBhcmd1bWVudHMgdG8gdGhlIGFwcHJvcHJpYXRlIHR5cGUKQEAgLTQ4LDExICs1MywxMiBAQAogICAgICAgICAgICAgcmV0dXJuIG9iagogCiAgICAgIyBjaGVjayB0aGF0IG9iai5tZXRob2QoKmFyZ3MpIHJldHVybnMgcmVzdWx0Ci0gICAgZGVmIGNoZWNrZXF1YWwoc2VsZiwgcmVzdWx0LCBvYmosIG1ldGhvZG5hbWUsICphcmdzKToKKyAgICBkZWYgY2hlY2tlcXVhbChzZWxmLCByZXN1bHQsIG9iaiwgbWV0aG9kbmFtZSwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgcmVzdWx0ID0gc2VsZi5maXh0eXBlKHJlc3VsdCkKICAgICAgICAgb2JqID0gc2VsZi5maXh0eXBlKG9iaikKICAgICAgICAgYXJncyA9IHNlbGYuZml4dHlwZShhcmdzKQotICAgICAgICByZWFscmVzdWx0ID0gZ2V0YXR0cihvYmosIG1ldGhvZG5hbWUpKCphcmdzKQorICAgICAgICBrd2FyZ3MgPSB7azogc2VsZi5maXh0eXBlKHYpIGZvciBrLHYgaW4ga3dhcmdzLml0ZW1zKCl9CisgICAgICAgIHJlYWxyZXN1bHQgPSBnZXRhdHRyKG9iaiwgbWV0aG9kbmFtZSkoKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgcmVzdWx0LAogICAgICAgICAgICAgcmVhbHJlc3VsdApAQCAtMTE3LDcgKzEyMywxMSBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMCwgJycsICdjb3VudCcsICd4eCcsIHN5cy5tYXhzaXplLCAwKQogCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnY291bnQnKQotICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ2NvdW50JywgNDIpCisKKyAgICAgICAgaWYgc2VsZi5jb250YWluc19ieXRlczoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgwLCAnaGVsbG8nLCAnY291bnQnLCA0MikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnY291bnQnLCA0MikKIAogICAgICAgICAjIEZvciBhIHZhcmlldHkgb2YgY29tYmluYXRpb25zLAogICAgICAgICAjICAgIHZlcmlmeSB0aGF0IHN0ci5jb3VudCgpIG1hdGNoZXMgYW4gZXF1aXZhbGVudCBmdW5jdGlvbgpAQCAtMTYzLDcgKzE3MywxMSBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoIDIsICdycmFycnJycnJycnJhJywgJ2ZpbmQnLCAnYScsIE5vbmUsIDYpCiAKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdmaW5kJykKLSAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdmaW5kJywgNDIpCisKKyAgICAgICAgaWYgc2VsZi5jb250YWluc19ieXRlczoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ2hlbGxvJywgJ2ZpbmQnLCA0MikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnZmluZCcsIDQyKQogCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgwLCAnJywgJ2ZpbmQnLCAnJykKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnJywgJ2ZpbmQnLCAnJywgMSwgMSkKQEAgLTIxNyw3ICsyMzEsMTEgQEAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKCAyLCAncnJhcnJycnJycnJyYScsICdyZmluZCcsICdhJywgTm9uZSwgNikKIAogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ3JmaW5kJykKLSAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdyZmluZCcsIDQyKQorCisgICAgICAgIGlmIHNlbGYuY29udGFpbnNfYnl0ZXM6CisgICAgICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdoZWxsbycsICdyZmluZCcsIDQyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdyZmluZCcsIDQyKQogCiAgICAgICAgICMgRm9yIGEgdmFyaWV0eSBvZiBjb21iaW5hdGlvbnMsCiAgICAgICAgICMgICAgdmVyaWZ5IHRoYXQgc3RyLnJmaW5kKCkgbWF0Y2hlcyBfX2NvbnRhaW5zX18KQEAgLTI0NSw2ICsyNjMsOSBAQAogICAgICAgICAjIGlzc3VlIDc0NTgKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnYWInLCAncmZpbmQnLCAneHh4Jywgc3lzLm1heHNpemUgKyAxLCAwKQogCisgICAgICAgICMgaXNzdWUgIzE1NTM0CisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgwLCAnPC4uLi4uLlx1MDQzYy4uLicsICJyZmluZCIsICI8IikKKwogICAgIGRlZiB0ZXN0X2luZGV4KHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMCwgJ2FiY2RlZmdoaWFiYycsICdpbmRleCcsICcnKQogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMywgJ2FiY2RlZmdoaWFiYycsICdpbmRleCcsICdkZWYnKQpAQCAtMjY0LDcgKzI4NSwxMSBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoIDIsICdycmFycnJycnJycnJhJywgJ2luZGV4JywgJ2EnLCBOb25lLCA2KQogCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnaW5kZXgnKQotICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ2luZGV4JywgNDIpCisKKyAgICAgICAgaWYgc2VsZi5jb250YWluc19ieXRlczoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVmFsdWVFcnJvciwgJ2hlbGxvJywgJ2luZGV4JywgNDIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ2luZGV4JywgNDIpCiAKICAgICBkZWYgdGVzdF9yaW5kZXgoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgxMiwgJ2FiY2RlZmdoaWFiYycsICdyaW5kZXgnLCAnJykKQEAgLTI4Niw3ICszMTEsMTEgQEAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKCAyLCAncnJhcnJycnJycnJyYScsICdyaW5kZXgnLCAnYScsIE5vbmUsIDYpCiAKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdyaW5kZXgnKQotICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ3JpbmRleCcsIDQyKQorCisgICAgICAgIGlmIHNlbGYuY29udGFpbnNfYnl0ZXM6CisgICAgICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFZhbHVlRXJyb3IsICdoZWxsbycsICdyaW5kZXgnLCA0MikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAncmluZGV4JywgNDIpCiAKICAgICBkZWYgdGVzdF9sb3dlcihzZWxmKToKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKCdoZWxsbycsICdIZUxMbycsICdsb3dlcicpCkBAIC0zNjQsNiArMzkzLDE3IEBACiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2EnXSoxOCArIFsnYUJMQUhhJ10sICgnYUJMQUgnKjIwKVs6LTRdLAogICAgICAgICAgICAgICAgICAgICAgICAgJ3NwbGl0JywgJ0JMQUgnLCAxOCkKIAorICAgICAgICAjIHdpdGgga2V5d29yZCBhcmdzCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2EnLCAnYicsICdjJywgJ2QnXSwgJ2F8YnxjfGQnLCAnc3BsaXQnLCBzZXA9J3wnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhJywgJ2J8Y3xkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYXxifGN8ZCcsICdzcGxpdCcsICd8JywgbWF4c3BsaXQ9MSkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYScsICdifGN8ZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2F8YnxjfGQnLCAnc3BsaXQnLCBzZXA9J3wnLCBtYXhzcGxpdD0xKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhJywgJ2J8Y3xkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYXxifGN8ZCcsICdzcGxpdCcsIG1heHNwbGl0PTEsIHNlcD0nfCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2EnLCAnYiBjIGQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdhIGIgYyBkJywgJ3NwbGl0JywgbWF4c3BsaXQ9MSkKKwogICAgICAgICAjIGFyZ3VtZW50IHR5cGUKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdzcGxpdCcsIDQyLCA0MiwgNDIpCiAKQEAgLTQyMSw2ICs0NjEsMTcgQEAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYUJMQUhhJ10gKyBbJ2EnXSoxOCwgKCdhQkxBSCcqMjApWzotNF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAncnNwbGl0JywgJ0JMQUgnLCAxOCkKIAorICAgICAgICAjIHdpdGgga2V5d29yZCBhcmdzCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2EnLCAnYicsICdjJywgJ2QnXSwgJ2F8YnxjfGQnLCAncnNwbGl0Jywgc2VwPSd8JykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYXxifGMnLCAnZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2F8YnxjfGQnLCAncnNwbGl0JywgJ3wnLCBtYXhzcGxpdD0xKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhfGJ8YycsICdkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYXxifGN8ZCcsICdyc3BsaXQnLCBzZXA9J3wnLCBtYXhzcGxpdD0xKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhfGJ8YycsICdkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYXxifGN8ZCcsICdyc3BsaXQnLCBtYXhzcGxpdD0xLCBzZXA9J3wnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhIGIgYycsICdkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYSBiIGMgZCcsICdyc3BsaXQnLCBtYXhzcGxpdD0xKQorCiAgICAgICAgICMgYXJndW1lbnQgdHlwZQogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ3JzcGxpdCcsIDQyLCA0MiwgNDIpCiAKQEAgLTU1MCw2ICs2MDEsOCBAQAogICAgICAgICBFUSgiUmV5S0tqYXZpayIsICJSZXlramF2aWsiLCAicmVwbGFjZSIsICJrIiwgIktLIiwgMSkKICAgICAgICAgRVEoIlJleWtqYXZpayIsICJSZXlramF2aWsiLCAicmVwbGFjZSIsICJrIiwgIktLIiwgMCkKICAgICAgICAgRVEoIkEtLS0tQi0tLS1DLS0tLSIsICJBLkIuQy4iLCAicmVwbGFjZSIsICIuIiwgIi0tLS0iKQorICAgICAgICAjIGlzc3VlICMxNTUzNAorICAgICAgICBFUSgnLi4uXHUwNDNjLi4uLi4uJmx0OycsICcuLi5cdTA0M2MuLi4uLi48JywgInJlcGxhY2UiLCAiPCIsICImbHQ7IikKIAogICAgICAgICBFUSgiUmV5a2phdmlrIiwgIlJleWtqYXZpayIsICJyZXBsYWNlIiwgInEiLCAiS0siKQogCkBAIC02NDQsNyArNjk3LDcgQEAKIAogICAgICAgICAjIGNoZWNrIHRoYXQgdGl0bGVjYXNlZCBjaGFycyBhcmUgbG93ZXJlZCBjb3JyZWN0bHkKICAgICAgICAgIyBcdTFmZmMgaXMgdGhlIHRpdGxlY2FzZWQgY2hhcgotICAgICAgICBzZWxmLmNoZWNrZXF1YWwoJ1x1MWZmY1x1MWZmM1x1MWZmM1x1MWZmMycsCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgnXHUwM2E5XHUwMzk5XHUxZmYzXHUxZmYzXHUxZmYzJywKICAgICAgICAgICAgICAgICAgICAgICAgICdcdTFmZjNcdTFmZjNcdTFmZmNcdTFmZmMnLCAnY2FwaXRhbGl6ZScpCiAgICAgICAgICMgY2hlY2sgd2l0aCBjYXNlZCBub24tbGV0dGVyIGNoYXJzCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgnXHUyNGM1XHUyNGU4XHUyNGUzXHUyNGQ3XHUyNGRlXHUyNGRkJywKQEAgLTkwOSw3ICs5NjIsMTQgQEAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYWJjJywgJ2RlZicsICdnaGknXSwgImFiY1xuZGVmXHJcbmdoaVxuIiwgJ3NwbGl0bGluZXMnKQogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhYmMnLCAnZGVmJywgJ2doaScsICcnXSwgImFiY1xuZGVmXHJcbmdoaVxuXHIiLCAnc3BsaXRsaW5lcycpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJycsICdhYmMnLCAnZGVmJywgJ2doaScsICcnXSwgIlxuYWJjXG5kZWZcclxuZ2hpXG5cciIsICdzcGxpdGxpbmVzJykKLSAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnXG4nLCAnYWJjXG4nLCAnZGVmXHJcbicsICdnaGlcbicsICdcciddLCAiXG5hYmNcbmRlZlxyXG5naGlcblxyIiwgJ3NwbGl0bGluZXMnLCAxKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWycnLCAnYWJjJywgJ2RlZicsICdnaGknLCAnJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAiXG5hYmNcbmRlZlxyXG5naGlcblxyIiwgJ3NwbGl0bGluZXMnLCBGYWxzZSkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnXG4nLCAnYWJjXG4nLCAnZGVmXHJcbicsICdnaGlcbicsICdcciddLAorICAgICAgICAgICAgICAgICAgICAgICAgIlxuYWJjXG5kZWZcclxuZ2hpXG5cciIsICdzcGxpdGxpbmVzJywgVHJ1ZSkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnJywgJ2FiYycsICdkZWYnLCAnZ2hpJywgJyddLCAiXG5hYmNcbmRlZlxyXG5naGlcblxyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzcGxpdGxpbmVzJywga2VlcGVuZHM9RmFsc2UpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ1xuJywgJ2FiY1xuJywgJ2RlZlxyXG4nLCAnZ2hpXG4nLCAnXHInXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJcbmFiY1xuZGVmXHJcbmdoaVxuXHIiLCAnc3BsaXRsaW5lcycsIGtlZXBlbmRzPVRydWUpCiAKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdhYmMnLCAnc3BsaXRsaW5lcycsIDQyLCA0MikKIApAQCAtMTE0Myw2ICsxMjAzLDEwIEBACiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnJTEwLipmJywgJ19fbW9kX18nLCAoJ2ZvbycsIDQyLikpCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVmFsdWVFcnJvciwgJyUxMCcsICdfX21vZF9fJywgKDQyLCkpCiAKKyAgICAgICAgIyBPdXRyYWdlb3VzbHkgbGFyZ2Ugd2lkdGggb3IgcHJlY2lzaW9uIHNob3VsZCByYWlzZSBWYWx1ZUVycm9yLgorICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFZhbHVlRXJyb3IsICclJSVkZicgJSAoMioqNjQpLCAnX19tb2RfXycsICgzLjIpKQorICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFZhbHVlRXJyb3IsICclJS4lZGYnICUgKDIqKjY0KSwgJ19fbW9kX18nLCAoMy4yKSkKKwogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKE92ZXJmbG93RXJyb3IsICclKnMnLCAnX19tb2RfXycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF90ZXN0Y2FwaS5QWV9TU0laRV9UX01BWCArIDEsICcnKSkKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhPdmVyZmxvd0Vycm9yLCAnJS4qZicsICdfX21vZF9fJywKQEAgLTEyNzEsNiArMTMzNSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCByJ15lbmRzd2l0aFwoJywgcy5lbmRzd2l0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwgTm9uZSwgTm9uZSwgTm9uZSkKIAorICAgICAgICAjIGlzc3VlICMxNTUzNAorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMTAsICIuLi5cdTA0M2MuLi4uLi48IiwgImZpbmQiLCAiPCIpCisKIAogY2xhc3MgTWl4aW5TdHJVbmljb2RlVGVzdDoKICAgICAjIEFkZGl0aW9uYWwgdGVzdHMgdGhhdCBvbmx5IHdvcmsgd2l0aCBzdHIgYW5kIHVuaWNvZGUuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zdXBwb3J0LnB5IGIvTGliL3Rlc3Qvc3VwcG9ydC5weQppbmRleCBkZGRhMzgwLi4xOTk4OWFjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zdXBwb3J0LnB5CisrKyBiL0xpYi90ZXN0L3N1cHBvcnQucHkKQEAgLTE1LDcgKzE1LDcgQEAKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgaW1wb3J0bGliCi1pbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKIGltcG9ydCByZQogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBpbXAKQEAgLTM3LDI2ICszNyw0MSBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIG11bHRpcHJvY2Vzc2luZyA9IE5vbmUKIAordHJ5OgorICAgIGltcG9ydCB6bGliCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgemxpYiA9IE5vbmUKKwordHJ5OgorICAgIGltcG9ydCBiejIKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBiejIgPSBOb25lCisKK3RyeToKKyAgICBpbXBvcnQgbHptYQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGx6bWEgPSBOb25lCiAKIF9fYWxsX18gPSBbCi0gICAgIkVycm9yIiwgIlRlc3RGYWlsZWQiLCAiUmVzb3VyY2VEZW5pZWQiLCAiaW1wb3J0X21vZHVsZSIsCi0gICAgInZlcmJvc2UiLCAidXNlX3Jlc291cmNlcyIsICJtYXhfbWVtdXNlIiwgInJlY29yZF9vcmlnaW5hbF9zdGRvdXQiLAorICAgICJFcnJvciIsICJUZXN0RmFpbGVkIiwgIlJlc291cmNlRGVuaWVkIiwgImltcG9ydF9tb2R1bGUiLCAidmVyYm9zZSIsCisgICAgInVzZV9yZXNvdXJjZXMiLCAibWF4X21lbXVzZSIsICJyZWNvcmRfb3JpZ2luYWxfc3Rkb3V0IiwKICAgICAiZ2V0X29yaWdpbmFsX3N0ZG91dCIsICJ1bmxvYWQiLCAidW5saW5rIiwgInJtdHJlZSIsICJmb3JnZXQiLAotICAgICJpc19yZXNvdXJjZV9lbmFibGVkIiwgInJlcXVpcmVzIiwgInJlcXVpcmVzX21hY192ZXIiLAotICAgICJmaW5kX3VudXNlZF9wb3J0IiwgImJpbmRfcG9ydCIsCi0gICAgImZjbXAiLCAiaXNfanl0aG9uIiwgIlRFU1RGTiIsICJIT1NUIiwgIkZVWloiLCAiU0FWRURDV0QiLCAidGVtcF9jd2QiLAotICAgICJmaW5kZmlsZSIsICJzb3J0ZGljdCIsICJjaGVja19zeW50YXhfZXJyb3IiLCAib3Blbl91cmxyZXNvdXJjZSIsCi0gICAgImNoZWNrX3dhcm5pbmdzIiwgIkNsZWFuSW1wb3J0IiwgIkVudmlyb25tZW50VmFyR3VhcmQiLAotICAgICJUcmFuc2llbnRSZXNvdXJjZSIsICJjYXB0dXJlZF9vdXRwdXQiLCAiY2FwdHVyZWRfc3Rkb3V0IiwKLSAgICAiY2FwdHVyZWRfc3RkaW4iLCAiY2FwdHVyZWRfc3RkZXJyIiwKLSAgICAidGltZV9vdXQiLCAic29ja2V0X3BlZXJfcmVzZXQiLCAiaW9lcnJvcl9wZWVyX3Jlc2V0IiwKLSAgICAicnVuX3dpdGhfbG9jYWxlIiwgJ3RlbXBfdW1hc2snLCAidHJhbnNpZW50X2ludGVybmV0IiwKLSAgICAic2V0X21lbWxpbWl0IiwgImJpZ21lbXRlc3QiLCAiYmlnYWRkcnNwYWNldGVzdCIsICJCYXNpY1Rlc3RSdW5uZXIiLAotICAgICJydW5fdW5pdHRlc3QiLCAicnVuX2RvY3Rlc3QiLCAidGhyZWFkaW5nX3NldHVwIiwgInRocmVhZGluZ19jbGVhbnVwIiwKLSAgICAicmVhcF9jaGlsZHJlbiIsICJjcHl0aG9uX29ubHkiLCAiY2hlY2tfaW1wbF9kZXRhaWwiLCAiZ2V0X2F0dHJpYnV0ZSIsCi0gICAgInN3YXBfaXRlbSIsICJzd2FwX2F0dHIiLCAicmVxdWlyZXNfSUVFRV83NTQiLAorICAgICJpc19yZXNvdXJjZV9lbmFibGVkIiwgInJlcXVpcmVzIiwgInJlcXVpcmVzX2ZyZWVic2RfdmVyc2lvbiIsCisgICAgInJlcXVpcmVzX2xpbnV4X3ZlcnNpb24iLCAicmVxdWlyZXNfbWFjX3ZlciIsICJmaW5kX3VudXNlZF9wb3J0IiwKKyAgICAiYmluZF9wb3J0IiwgIklQVjZfRU5BQkxFRCIsICJpc19qeXRob24iLCAiVEVTVEZOIiwgIkhPU1QiLCAiU0FWRURDV0QiLAorICAgICJ0ZW1wX2N3ZCIsICJmaW5kZmlsZSIsICJjcmVhdGVfZW1wdHlfZmlsZSIsICJzb3J0ZGljdCIsCisgICAgImNoZWNrX3N5bnRheF9lcnJvciIsICJvcGVuX3VybHJlc291cmNlIiwgImNoZWNrX3dhcm5pbmdzIiwgIkNsZWFuSW1wb3J0IiwKKyAgICAiRW52aXJvbm1lbnRWYXJHdWFyZCIsICJUcmFuc2llbnRSZXNvdXJjZSIsICJjYXB0dXJlZF9zdGRvdXQiLAorICAgICJjYXB0dXJlZF9zdGRpbiIsICJjYXB0dXJlZF9zdGRlcnIiLCAidGltZV9vdXQiLCAic29ja2V0X3BlZXJfcmVzZXQiLAorICAgICJpb2Vycm9yX3BlZXJfcmVzZXQiLCAicnVuX3dpdGhfbG9jYWxlIiwgJ3RlbXBfdW1hc2snLAorICAgICJ0cmFuc2llbnRfaW50ZXJuZXQiLCAic2V0X21lbWxpbWl0IiwgImJpZ21lbXRlc3QiLCAiYmlnYWRkcnNwYWNldGVzdCIsCisgICAgIkJhc2ljVGVzdFJ1bm5lciIsICJydW5fdW5pdHRlc3QiLCAicnVuX2RvY3Rlc3QiLCAidGhyZWFkaW5nX3NldHVwIiwKKyAgICAidGhyZWFkaW5nX2NsZWFudXAiLCAicmVhcF9jaGlsZHJlbiIsICJjcHl0aG9uX29ubHkiLCAiY2hlY2tfaW1wbF9kZXRhaWwiLAorICAgICJnZXRfYXR0cmlidXRlIiwgInN3YXBfaXRlbSIsICJzd2FwX2F0dHIiLCAicmVxdWlyZXNfSUVFRV83NTQiLAogICAgICJUZXN0SGFuZGxlciIsICJNYXRjaGVyIiwgImNhbl9zeW1saW5rIiwgInNraXBfdW5sZXNzX3N5bWxpbmsiLAotICAgICJpbXBvcnRfZnJlc2hfbW9kdWxlIiwgImZhaWxmYXN0IiwgInJ1bl93aXRoX3R6IiwgInN1cHByZXNzX2NyYXNoX3BvcHVwIiwKKyAgICAic2tpcF91bmxlc3NfeGF0dHIiLCAiaW1wb3J0X2ZyZXNoX21vZHVsZSIsICJyZXF1aXJlc196bGliIiwKKyAgICAiUElQRV9NQVhfU0laRSIsICJmYWlsZmFzdCIsICJhbnRpY2lwYXRlX2ZhaWx1cmUiLCAicnVuX3dpdGhfdHoiLAorICAgICJyZXF1aXJlc19iejIiLCAicmVxdWlyZXNfbHptYSIsICJzdXBwcmVzc19jcmFzaF9wb3B1cCIsCiAgICAgXQogCiBjbGFzcyBFcnJvcihFeGNlcHRpb24pOgpAQCAtMTI3LDYgKzE0MiwxNyBAQAogICAgIHJldHVybiBzYXZlZAogCiAKK2RlZiBhbnRpY2lwYXRlX2ZhaWx1cmUoY29uZGl0aW9uKToKKyAgICAiIiJEZWNvcmF0b3IgdG8gbWFyayBhIHRlc3QgdGhhdCBpcyBrbm93biB0byBiZSBicm9rZW4gaW4gc29tZSBjYXNlcworCisgICAgICAgQW55IHVzZSBvZiB0aGlzIGRlY29yYXRvciBzaG91bGQgaGF2ZSBhIGNvbW1lbnQgaWRlbnRpZnlpbmcgdGhlCisgICAgICAgYXNzb2NpYXRlZCB0cmFja2VyIGlzc3VlLgorICAgICIiIgorICAgIGlmIGNvbmRpdGlvbjoKKyAgICAgICAgcmV0dXJuIHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgIHJldHVybiBsYW1iZGEgZjogZgorCisKIGRlZiBpbXBvcnRfZnJlc2hfbW9kdWxlKG5hbWUsIGZyZXNoPSgpLCBibG9ja2VkPSgpLCBkZXByZWNhdGVkPUZhbHNlKToKICAgICAiIiJJbXBvcnRzIGFuZCByZXR1cm5zIGEgbW9kdWxlLCBkZWxpYmVyYXRlbHkgYnlwYXNzaW5nIHRoZSBzeXMubW9kdWxlcyBjYWNoZQogICAgIGFuZCBpbXBvcnRpbmcgYSBmcmVzaCBjb3B5IG9mIHRoZSBtb2R1bGUuIE9uY2UgdGhlIGltcG9ydCBpcyBjb21wbGV0ZSwKQEAgLTE3MCw4ICsxOTYsNyBAQAogICAgIHRyeToKICAgICAgICAgYXR0cmlidXRlID0gZ2V0YXR0cihvYmosIG5hbWUpCiAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgibW9kdWxlICVzIGhhcyBubyBhdHRyaWJ1dGUgJXMiICUgKAotICAgICAgICAgICAgb2JqLl9fbmFtZV9fLCBuYW1lKSkKKyAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIm9iamVjdCAlciBoYXMgbm8gYXR0cmlidXRlICVyIiAlIChvYmosIG5hbWUpKQogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBhdHRyaWJ1dGUKIApAQCAtMjc2LDggKzMwMSw3IEBACiAgICAgdHJ5OgogICAgICAgICBfcm10cmVlKHBhdGgpCiAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6Ci0gICAgICAgICMgVW5peCByZXR1cm5zIEVOT0VOVCwgV2luZG93cyByZXR1cm5zIEVTUkNILgotICAgICAgICBpZiBlcnJvci5lcnJubyBub3QgaW4gKGVycm5vLkVOT0VOVCwgZXJybm8uRVNSQ0gpOgorICAgICAgICBpZiBlcnJvci5lcnJubyAhPSBlcnJuby5FTk9FTlQ6CiAgICAgICAgICAgICByYWlzZQogCiBkZWYgbWFrZV9sZWdhY3lfcHljKHNvdXJjZSk6CkBAIC0zNjIsOSArMzg2LDUyIEBACiAgICAgICAgIHJldHVybgogICAgIGlmIG5vdCBpc19yZXNvdXJjZV9lbmFibGVkKHJlc291cmNlKToKICAgICAgICAgaWYgbXNnIGlzIE5vbmU6Ci0gICAgICAgICAgICBtc2cgPSAiVXNlIG9mIHRoZSBgJXMnIHJlc291cmNlIG5vdCBlbmFibGVkIiAlIHJlc291cmNlCisgICAgICAgICAgICBtc2cgPSAiVXNlIG9mIHRoZSAlciByZXNvdXJjZSBub3QgZW5hYmxlZCIgJSByZXNvdXJjZQogICAgICAgICByYWlzZSBSZXNvdXJjZURlbmllZChtc2cpCiAKK2RlZiBfcmVxdWlyZXNfdW5peF92ZXJzaW9uKHN5c25hbWUsIG1pbl92ZXJzaW9uKToKKyAgICAiIiJEZWNvcmF0b3IgcmFpc2luZyBTa2lwVGVzdCBpZiB0aGUgT1MgaXMgYHN5c25hbWVgIGFuZCB0aGUgdmVyc2lvbiBpcyBsZXNzCisgICAgdGhhbiBgbWluX3ZlcnNpb25gLgorCisgICAgRm9yIGV4YW1wbGUsIEBfcmVxdWlyZXNfdW5peF92ZXJzaW9uKCdGcmVlQlNEJywgKDcsIDIpKSByYWlzZXMgU2tpcFRlc3QgaWYKKyAgICB0aGUgRnJlZUJTRCB2ZXJzaW9uIGlzIGxlc3MgdGhhbiA3LjIuCisgICAgIiIiCisgICAgZGVmIGRlY29yYXRvcihmdW5jKToKKyAgICAgICAgQGZ1bmN0b29scy53cmFwcyhmdW5jKQorICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprdyk6CisgICAgICAgICAgICBpZiBwbGF0Zm9ybS5zeXN0ZW0oKSA9PSBzeXNuYW1lOgorICAgICAgICAgICAgICAgIHZlcnNpb25fdHh0ID0gcGxhdGZvcm0ucmVsZWFzZSgpLnNwbGl0KCctJywgMSlbMF0KKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gPSB0dXBsZShtYXAoaW50LCB2ZXJzaW9uX3R4dC5zcGxpdCgnLicpKSkKKyAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIHZlcnNpb24gPCBtaW5fdmVyc2lvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbl92ZXJzaW9uX3R4dCA9ICcuJy5qb2luKG1hcChzdHIsIG1pbl92ZXJzaW9uKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyB2ZXJzaW9uICVzIG9yIGhpZ2hlciByZXF1aXJlZCwgbm90ICVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHN5c25hbWUsIG1pbl92ZXJzaW9uX3R4dCwgdmVyc2lvbl90eHQpKQorICAgICAgICByZXR1cm4gd3JhcHBlcgorICAgIHJldHVybiBkZWNvcmF0b3IKKworZGVmIHJlcXVpcmVzX2ZyZWVic2RfdmVyc2lvbigqbWluX3ZlcnNpb24pOgorICAgICIiIkRlY29yYXRvciByYWlzaW5nIFNraXBUZXN0IGlmIHRoZSBPUyBpcyBGcmVlQlNEIGFuZCB0aGUgRnJlZUJTRCB2ZXJzaW9uIGlzCisgICAgbGVzcyB0aGFuIGBtaW5fdmVyc2lvbmAuCisKKyAgICBGb3IgZXhhbXBsZSwgQHJlcXVpcmVzX2ZyZWVic2RfdmVyc2lvbig3LCAyKSByYWlzZXMgU2tpcFRlc3QgaWYgdGhlIEZyZWVCU0QKKyAgICB2ZXJzaW9uIGlzIGxlc3MgdGhhbiA3LjIuCisgICAgIiIiCisgICAgcmV0dXJuIF9yZXF1aXJlc191bml4X3ZlcnNpb24oJ0ZyZWVCU0QnLCBtaW5fdmVyc2lvbikKKworZGVmIHJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oKm1pbl92ZXJzaW9uKToKKyAgICAiIiJEZWNvcmF0b3IgcmFpc2luZyBTa2lwVGVzdCBpZiB0aGUgT1MgaXMgTGludXggYW5kIHRoZSBMaW51eCB2ZXJzaW9uIGlzCisgICAgbGVzcyB0aGFuIGBtaW5fdmVyc2lvbmAuCisKKyAgICBGb3IgZXhhbXBsZSwgQHJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oMiwgNiwgMzIpIHJhaXNlcyBTa2lwVGVzdCBpZiB0aGUgTGludXgKKyAgICB2ZXJzaW9uIGlzIGxlc3MgdGhhbiAyLjYuMzIuCisgICAgIiIiCisgICAgcmV0dXJuIF9yZXF1aXJlc191bml4X3ZlcnNpb24oJ0xpbnV4JywgbWluX3ZlcnNpb24pCisKIGRlZiByZXF1aXJlc19tYWNfdmVyKCptaW5fdmVyc2lvbik6CiAgICAgIiIiRGVjb3JhdG9yIHJhaXNpbmcgU2tpcFRlc3QgaWYgdGhlIE9TIGlzIE1hYyBPUyBYIGFuZCB0aGUgT1MgWAogICAgIHZlcnNpb24gaWYgbGVzcyB0aGFuIG1pbl92ZXJzaW9uLgpAQCAtMzkyLDYgKzQ1OSw3IEBACiAgICAgICAgIHJldHVybiB3cmFwcGVyCiAgICAgcmV0dXJuIGRlY29yYXRvcgogCisKIEhPU1QgPSAnbG9jYWxob3N0JwogCiBkZWYgZmluZF91bnVzZWRfcG9ydChmYW1pbHk9c29ja2V0LkFGX0lORVQsIHNvY2t0eXBlPXNvY2tldC5TT0NLX1NUUkVBTSk6CkBAIC00ODcsMjkgKzU1NSw0MSBAQAogICAgIHBvcnQgPSBzb2NrLmdldHNvY2tuYW1lKClbMV0KICAgICByZXR1cm4gcG9ydAogCi1GVVpaID0gMWUtNgotCi1kZWYgZmNtcCh4LCB5KTogIyBmdXp6eSBjb21wYXJpc29uIGZ1bmN0aW9uCi0gICAgaWYgaXNpbnN0YW5jZSh4LCBmbG9hdCkgb3IgaXNpbnN0YW5jZSh5LCBmbG9hdCk6CitkZWYgX2lzX2lwdjZfZW5hYmxlZCgpOgorICAgICIiIkNoZWNrIHdoZXRoZXIgSVB2NiBpcyBlbmFibGVkIG9uIHRoaXMgaG9zdC4iIiIKKyAgICBpZiBzb2NrZXQuaGFzX2lwdjY6CisgICAgICAgIHNvY2sgPSBOb25lCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGZ1enogPSAoYWJzKHgpICsgYWJzKHkpKSAqIEZVWloKLSAgICAgICAgICAgIGlmIGFicyh4LXkpIDw9IGZ1eno6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQ2LCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICBzb2NrLmJpbmQoKCc6OjEnLCAwKSkKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGV4Y2VwdCAoc29ja2V0LmVycm9yLCBzb2NrZXQuZ2FpZXJyb3IpOgogICAgICAgICAgICAgcGFzcwotICAgIGVsaWYgdHlwZSh4KSA9PSB0eXBlKHkpIGFuZCBpc2luc3RhbmNlKHgsICh0dXBsZSwgbGlzdCkpOgotICAgICAgICBmb3IgaSBpbiByYW5nZShtaW4obGVuKHgpLCBsZW4oeSkpKToKLSAgICAgICAgICAgIG91dGNvbWUgPSBmY21wKHhbaV0sIHlbaV0pCi0gICAgICAgICAgICBpZiBvdXRjb21lICE9IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG91dGNvbWUKLSAgICAgICAgcmV0dXJuIChsZW4oeCkgPiBsZW4oeSkpIC0gKGxlbih4KSA8IGxlbih5KSkKLSAgICByZXR1cm4gKHggPiB5KSAtICh4IDwgeSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIHNvY2s6CisgICAgICAgICAgICAgICAgc29jay5jbG9zZSgpCisgICAgcmV0dXJuIEZhbHNlCisKK0lQVjZfRU5BQkxFRCA9IF9pc19pcHY2X2VuYWJsZWQoKQorCisKKyMgQSBjb25zdGFudCBsaWtlbHkgbGFyZ2VyIHRoYW4gdGhlIHVuZGVybHlpbmcgT1MgcGlwZSBidWZmZXIgc2l6ZS4KKyMgV2luZG93cyBsaW1pdCBzZWVtcyB0byBiZSBhcm91bmQgNTEyQiwgYW5kIG1vc3QgVW5peCBrZXJuZWxzIGhhdmUgYSA2NEsgcGlwZQorIyBidWZmZXIgc2l6ZTogdGFrZSAxTSB0byBiZSBzdXJlLgorUElQRV9NQVhfU0laRSA9IDEwMjQgKiAxMDI0CisKIAogIyBkZWNvcmF0b3IgZm9yIHNraXBwaW5nIHRlc3RzIG9uIG5vbi1JRUVFIDc1NCBwbGF0Zm9ybXMKIHJlcXVpcmVzX0lFRUVfNzU0ID0gdW5pdHRlc3Quc2tpcFVubGVzcygKICAgICBmbG9hdC5fX2dldGZvcm1hdF9fKCJkb3VibGUiKS5zdGFydHN3aXRoKCJJRUVFIiksCiAgICAgInRlc3QgcmVxdWlyZXMgSUVFRSA3NTQgZG91YmxlcyIpCiAKK3JlcXVpcmVzX3psaWIgPSB1bml0dGVzdC5za2lwVW5sZXNzKHpsaWIsICdyZXF1aXJlcyB6bGliJykKKworcmVxdWlyZXNfYnoyID0gdW5pdHRlc3Quc2tpcFVubGVzcyhiejIsICdyZXF1aXJlcyBiejInKQorCityZXF1aXJlc19sem1hID0gdW5pdHRlc3Quc2tpcFVubGVzcyhsem1hLCAncmVxdWlyZXMgbHptYScpCisKIGlzX2p5dGhvbiA9IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdqYXZhJykKIAogIyBGaWxlbmFtZSB1c2VkIGZvciB0ZXN0aW5nCkBAIC02ODgsMTQgKzc2OCwxNSBAQAogICAgICAgICAgICAgcm10cmVlKG5hbWUpCiAKIAotQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKLWRlZiB0ZW1wX3VtYXNrKHVtYXNrKToKLSAgICAiIiJDb250ZXh0IG1hbmFnZXIgdGhhdCB0ZW1wb3JhcmlseSBzZXRzIHRoZSBwcm9jZXNzIHVtYXNrLiIiIgotICAgIG9sZG1hc2sgPSBvcy51bWFzayh1bWFzaykKLSAgICB0cnk6Ci0gICAgICAgIHlpZWxkCi0gICAgZmluYWxseToKLSAgICAgICAgb3MudW1hc2sob2xkbWFzaykKK2lmIGhhc2F0dHIob3MsICJ1bWFzayIpOgorICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIHRlbXBfdW1hc2sodW1hc2spOgorICAgICAgICAiIiJDb250ZXh0IG1hbmFnZXIgdGhhdCB0ZW1wb3JhcmlseSBzZXRzIHRoZSBwcm9jZXNzIHVtYXNrLiIiIgorICAgICAgICBvbGRtYXNrID0gb3MudW1hc2sodW1hc2spCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy51bWFzayhvbGRtYXNrKQogCiAKIGRlZiBmaW5kZmlsZShmaWxlLCBoZXJlPV9fZmlsZV9fLCBzdWJkaXI9Tm9uZSk6CkBAIC03MTMsNiArNzk0LDExIEBACiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGZuKTogcmV0dXJuIGZuCiAgICAgcmV0dXJuIGZpbGUKIAorZGVmIGNyZWF0ZV9lbXB0eV9maWxlKGZpbGVuYW1lKToKKyAgICAiIiJDcmVhdGUgYW4gZW1wdHkgZmlsZS4gSWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMsIHRydW5jYXRlIGl0LiIiIgorICAgIGZkID0gb3Mub3BlbihmaWxlbmFtZSwgb3MuT19XUk9OTFkgfCBvcy5PX0NSRUFUIHwgb3MuT19UUlVOQykKKyAgICBvcy5jbG9zZShmZCkKKwogZGVmIHNvcnRkaWN0KGRpY3QpOgogICAgICJMaWtlIHJlcHIoZGljdCksIGJ1dCBpbiBzb3J0ZWQgb3JkZXIuIgogICAgIGl0ZW1zID0gc29ydGVkKGRpY3QuaXRlbXMoKSkKQEAgLTc3Nyw3ICs4NjMsNyBAQAogICAgIGYgPSBjaGVja192YWxpZF9maWxlKGZuKQogICAgIGlmIGYgaXMgbm90IE5vbmU6CiAgICAgICAgIHJldHVybiBmCi0gICAgcmFpc2UgVGVzdEZhaWxlZCgnaW52YWxpZCByZXNvdXJjZSAiJXMiJyAlIGZuKQorICAgIHJhaXNlIFRlc3RGYWlsZWQoJ2ludmFsaWQgcmVzb3VyY2UgJXInICUgZm4pCiAKIAogY2xhc3MgV2FybmluZ3NSZWNvcmRlcihvYmplY3QpOgpAQCAtODk4LDcgKzk4NCw3IEBACiAgICAgICAgIHN5cy5tb2R1bGVzLnVwZGF0ZShzZWxmLm9yaWdpbmFsX21vZHVsZXMpCiAKIAotY2xhc3MgRW52aXJvbm1lbnRWYXJHdWFyZChjb2xsZWN0aW9ucy5NdXRhYmxlTWFwcGluZyk6CitjbGFzcyBFbnZpcm9ubWVudFZhckd1YXJkKGNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlTWFwcGluZyk6CiAKICAgICAiIiJDbGFzcyB0byBoZWxwIHByb3RlY3QgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHByb3Blcmx5LiAgQ2FuIGJlIHVzZWQgYXMKICAgICBhIGNvbnRleHQgbWFuYWdlci4iIiIKQEAgLTEwMjksNyArMTExNSw3IEBACiAgICAgICAgICgnV1NBTk9fREFUQScsIDExMDA0KSwKICAgICBdCiAKLSAgICBkZW5pZWQgPSBSZXNvdXJjZURlbmllZCgiUmVzb3VyY2UgJyVzJyBpcyBub3QgYXZhaWxhYmxlIiAlIHJlc291cmNlX25hbWUpCisgICAgZGVuaWVkID0gUmVzb3VyY2VEZW5pZWQoIlJlc291cmNlICVyIGlzIG5vdCBhdmFpbGFibGUiICUgcmVzb3VyY2VfbmFtZSkKICAgICBjYXB0dXJlZF9lcnJub3MgPSBlcnJub3MKICAgICBnYWlfZXJybm9zID0gW10KICAgICBpZiBub3QgY2FwdHVyZWRfZXJybm9zOgpAQCAtMTExOCw2ICsxMjA0LDE2IEBACiAgICAgZ2MuY29sbGVjdCgpCiAgICAgZ2MuY29sbGVjdCgpCiAKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgZGlzYWJsZV9nYygpOgorICAgIGhhdmVfZ2MgPSBnYy5pc2VuYWJsZWQoKQorICAgIGdjLmRpc2FibGUoKQorICAgIHRyeToKKyAgICAgICAgeWllbGQKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiBoYXZlX2djOgorICAgICAgICAgICAgZ2MuZW5hYmxlKCkKKwogCiBkZWYgcHl0aG9uX2lzX29wdGltaXplZCgpOgogICAgICIiIkZpbmQgaWYgUHl0aG9uIHdhcyBidWlsdCB3aXRoIG9wdGltaXphdGlvbnMuIiIiCkBAIC0xMTI2LDE5ICsxMjIyLDIxIEBACiAgICAgZm9yIG9wdCBpbiBjZmxhZ3Muc3BsaXQoKToKICAgICAgICAgaWYgb3B0LnN0YXJ0c3dpdGgoJy1PJyk6CiAgICAgICAgICAgICBmaW5hbF9vcHQgPSBvcHQKLSAgICByZXR1cm4gZmluYWxfb3B0IGFuZCBmaW5hbF9vcHQgIT0gJy1PMCcKKyAgICByZXR1cm4gZmluYWxfb3B0ICE9ICcnIGFuZCBmaW5hbF9vcHQgIT0gJy1PMCcKIAogCi1faGVhZGVyID0gJzJQJworX2hlYWRlciA9ICduUCcKK19hbGlnbiA9ICcwbicKIGlmIGhhc2F0dHIoc3lzLCAiZ2V0dG90YWxyZWZjb3VudCIpOgogICAgIF9oZWFkZXIgPSAnMlAnICsgX2hlYWRlcgotX3ZoZWFkZXIgPSBfaGVhZGVyICsgJ1AnCisgICAgX2FsaWduID0gJzBQJworX3ZoZWFkZXIgPSBfaGVhZGVyICsgJ24nCiAKIGRlZiBjYWxjb2Jqc2l6ZShmbXQpOgotICAgIHJldHVybiBzdHJ1Y3QuY2FsY3NpemUoX2hlYWRlciArIGZtdCArICcwUCcpCisgICAgcmV0dXJuIHN0cnVjdC5jYWxjc2l6ZShfaGVhZGVyICsgZm10ICsgX2FsaWduKQogCiBkZWYgY2FsY3ZvYmpzaXplKGZtdCk6Ci0gICAgcmV0dXJuIHN0cnVjdC5jYWxjc2l6ZShfdmhlYWRlciArIGZtdCArICcwUCcpCisgICAgcmV0dXJuIHN0cnVjdC5jYWxjc2l6ZShfdmhlYWRlciArIGZtdCArIF9hbGlnbikKIAogCiBfVFBGTEFHU19IQVZFX0dDID0gMTw8MTQKQEAgLTEyMTIsNyArMTMxMCw3IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MsICoqa3dkcykKICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgaWYgb3JpZ190eiA9PSBOb25lOgorICAgICAgICAgICAgICAgIGlmIG9yaWdfdHogaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgZGVsIG9zLmVudmlyb25bJ1RaJ10KICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWydUWiddID0gb3JpZ190egpAQCAtMTI1Nyw0MSArMTM1NSwzNSBAQAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdNZW1vcnkgbGltaXQgJXIgdG9vIGxvdyB0byBiZSB1c2VmdWwnICUgKGxpbWl0LCkpCiAgICAgbWF4X21lbXVzZSA9IG1lbWxpbWl0CiAKLWRlZiBfbWVtb3J5X3dhdGNoZG9nKHN0YXJ0X2V2dCwgZmluaXNoX2V2dCwgcGVyaW9kPTEwLjApOgotICAgICIiIkEgZnVuY3Rpb24gd2hpY2ggcGVyaW9kaWNhbGx5IHdhdGNoZXMgdGhlIHByb2Nlc3MnIG1lbW9yeSBjb25zdW1wdGlvbgorY2xhc3MgX01lbW9yeVdhdGNoZG9nOgorICAgICIiIkFuIG9iamVjdCB3aGljaCBwZXJpb2RpY2FsbHkgd2F0Y2hlcyB0aGUgcHJvY2VzcycgbWVtb3J5IGNvbnN1bXB0aW9uCiAgICAgYW5kIHByaW50cyBpdCBvdXQuCiAgICAgIiIiCi0gICAgIyBYWFg6IGJlY2F1c2Ugb2YgdGhlIEdJTCwgYW5kIGJlY2F1c2UgdGhlIHZlcnkgbG9uZyBvcGVyYXRpb25zIHRlc3RlZAotICAgICMgaW4gbW9zdCBiaWdtZW0gdGVzdHMgYXJlIHVuaW50ZXJydXB0aWJsZSwgdGhlIGxvb3AgYmVsb3cgZ2V0cyB3b2tlbiB1cAotICAgICMgbXVjaCBsZXNzIG9mdGVuIHRoYW4gZXhwZWN0ZWQuCi0gICAgIyBUaGUgcG9sbGluZyBjb2RlIHNob3VsZCBiZSByZXdyaXR0ZW4gaW4gcmF3IEMsIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMLAotICAgICMgYW5kIHB1c2ggcmVzdWx0cyBvbnRvIGFuIGFub255bW91cyBwaXBlLgotICAgIHRyeToKLSAgICAgICAgcGFnZV9zaXplID0gb3Muc3lzY29uZignU0NfUEFHRVNJWkUnKQotICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgQXR0cmlidXRlRXJyb3IpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnByb2NmaWxlID0gJy9wcm9jL3twaWR9L3N0YXRtJy5mb3JtYXQocGlkPW9zLmdldHBpZCgpKQorICAgICAgICBzZWxmLnN0YXJ0ZWQgPSBGYWxzZQorCisgICAgZGVmIHN0YXJ0KHNlbGYpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwYWdlX3NpemUgPSBvcy5zeXNjb25mKCdTQ19QQUdFX1NJWkUnKQotICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKLSAgICAgICAgICAgIHBhZ2Vfc2l6ZSA9IDQwOTYKLSAgICBwcm9jZmlsZSA9ICcvcHJvYy97cGlkfS9zdGF0bScuZm9ybWF0KHBpZD1vcy5nZXRwaWQoKSkKLSAgICB0cnk6Ci0gICAgICAgIGYgPSBvcGVuKHByb2NmaWxlLCAncmInKQotICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6Ci0gICAgICAgIHdhcm5pbmdzLndhcm4oJy9wcm9jIG5vdCBhdmFpbGFibGUgZm9yIHN0YXRzOiB7fScuZm9ybWF0KGUpLAotICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nKQotICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgcmV0dXJuCi0gICAgd2l0aCBmOgotICAgICAgICBzdGFydF9ldnQuc2V0KCkKLSAgICAgICAgb2xkX2RhdGEgPSAtMQotICAgICAgICB3aGlsZSBub3QgZmluaXNoX2V2dC53YWl0KHBlcmlvZCk6Ci0gICAgICAgICAgICBmLnNlZWsoMCkKLSAgICAgICAgICAgIHN0YXRtID0gZi5yZWFkKCkuZGVjb2RlKCdhc2NpaScpCi0gICAgICAgICAgICBkYXRhID0gaW50KHN0YXRtLnNwbGl0KClbNV0pCi0gICAgICAgICAgICBpZiBkYXRhICE9IG9sZF9kYXRhOgotICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gZGF0YQotICAgICAgICAgICAgICAgIHByaW50KCIgLi4uIHByb2Nlc3MgZGF0YSBzaXplOiB7ZGF0YTouMWZ9RyIKLSAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChkYXRhPWRhdGEgKiBwYWdlX3NpemUgLyAoMTAyNCAqKiAzKSkpCisgICAgICAgICAgICBmID0gb3BlbihzZWxmLnByb2NmaWxlLCAncicpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCcvcHJvYyBub3QgYXZhaWxhYmxlIGZvciBzdGF0czoge30nLmZvcm1hdChlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUnVudGltZVdhcm5pbmcpCisgICAgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHdhdGNoZG9nX3NjcmlwdCA9IGZpbmRmaWxlKCJtZW1vcnlfd2F0Y2hkb2cucHkiKQorICAgICAgICBzZWxmLm1lbV93YXRjaGRvZyA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCB3YXRjaGRvZ19zY3JpcHRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49Ziwgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuc3RhcnRlZCA9IFRydWUKKworICAgIGRlZiBzdG9wKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnN0YXJ0ZWQ6CisgICAgICAgICAgICBzZWxmLm1lbV93YXRjaGRvZy50ZXJtaW5hdGUoKQorICAgICAgICAgICAgc2VsZi5tZW1fd2F0Y2hkb2cud2FpdCgpCisKIAogZGVmIGJpZ21lbXRlc3Qoc2l6ZSwgbWVtdXNlLCBkcnlfcnVuPVRydWUpOgogICAgICIiIkRlY29yYXRvciBmb3IgYmlnbWVtIHRlc3RzLgpAQCAtMTMxOCwyNyArMTQxMCwyMCBAQAogICAgICAgICAgICAgICAgICAgICAibm90IGVub3VnaCBtZW1vcnk6ICUuMWZHIG1pbmltdW0gbmVlZGVkIgogICAgICAgICAgICAgICAgICAgICAlIChzaXplICogbWVtdXNlIC8gKDEwMjQgKiogMykpKQogCi0gICAgICAgICAgICBpZiByZWFsX21heF9tZW11c2UgYW5kIHZlcmJvc2UgYW5kIHRocmVhZGluZzoKKyAgICAgICAgICAgIGlmIHJlYWxfbWF4X21lbXVzZSBhbmQgdmVyYm9zZToKICAgICAgICAgICAgICAgICBwcmludCgpCiAgICAgICAgICAgICAgICAgcHJpbnQoIiAuLi4gZXhwZWN0ZWQgcGVhayBtZW1vcnkgdXNlOiB7cGVhazouMWZ9RyIKICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHBlYWs9c2l6ZSAqIG1lbXVzZSAvICgxMDI0ICoqIDMpKSkKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgICAgICAgICBzdGFydF9ldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQotICAgICAgICAgICAgICAgIGZpbmlzaF9ldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQotICAgICAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1fbWVtb3J5X3dhdGNoZG9nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHN0YXJ0X2V2dCwgZmluaXNoX2V2dCwgMC41KSkKLSAgICAgICAgICAgICAgICB0LmRhZW1vbiA9IFRydWUKLSAgICAgICAgICAgICAgICB0LnN0YXJ0KCkKLSAgICAgICAgICAgICAgICBzdGFydF9ldnQuc2V0KCkKKyAgICAgICAgICAgICAgICB3YXRjaGRvZyA9IF9NZW1vcnlXYXRjaGRvZygpCisgICAgICAgICAgICAgICAgd2F0Y2hkb2cuc3RhcnQoKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0ID0gTm9uZQorICAgICAgICAgICAgICAgIHdhdGNoZG9nID0gTm9uZQogCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGYoc2VsZiwgbWF4c2l6ZSkKICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgaWYgdDoKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoX2V2dC5zZXQoKQotICAgICAgICAgICAgICAgICAgICB0LmpvaW4oKQorICAgICAgICAgICAgICAgIGlmIHdhdGNoZG9nOgorICAgICAgICAgICAgICAgICAgICB3YXRjaGRvZy5zdG9wKCkKIAogICAgICAgICB3cmFwcGVyLnNpemUgPSBzaXplCiAgICAgICAgIHdyYXBwZXIubWVtdXNlID0gbWVtdXNlCkBAIC0xNDIwLDYgKzE1MDUsMzMgQEAKICAgICByZXR1cm4gZ3VhcmRzLmdldChwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRpb24oKS5sb3dlcigpLCBkZWZhdWx0KQogCiAKK2RlZiBub190cmFjaW5nKGZ1bmMpOgorICAgICIiIkRlY29yYXRvciB0byB0ZW1wb3JhcmlseSB0dXJuIG9mZiB0cmFjaW5nIGZvciB0aGUgZHVyYXRpb24gb2YgYSB0ZXN0LiIiIgorICAgIGlmIG5vdCBoYXNhdHRyKHN5cywgJ2dldHRyYWNlJyk6CisgICAgICAgIHJldHVybiBmdW5jCisgICAgZWxzZToKKyAgICAgICAgQGZ1bmN0b29scy53cmFwcyhmdW5jKQorICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgb3JpZ2luYWxfdHJhY2UgPSBzeXMuZ2V0dHJhY2UoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN5cy5zZXR0cmFjZShOb25lKQorICAgICAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc3lzLnNldHRyYWNlKG9yaWdpbmFsX3RyYWNlKQorICAgICAgICByZXR1cm4gd3JhcHBlcgorCisKK2RlZiByZWZjb3VudF90ZXN0KHRlc3QpOgorICAgICIiIkRlY29yYXRvciBmb3IgdGVzdHMgd2hpY2ggaW52b2x2ZSByZWZlcmVuY2UgY291bnRpbmcuCisKKyAgICBUbyBzdGFydCwgdGhlIGRlY29yYXRvciBkb2VzIG5vdCBydW4gdGhlIHRlc3QgaWYgaXMgbm90IHJ1biBieSBDUHl0aG9uLgorICAgIEFmdGVyIHRoYXQsIGFueSB0cmFjZSBmdW5jdGlvbiBpcyB1bnNldCBkdXJpbmcgdGhlIHRlc3QgdG8gcHJldmVudAorICAgIHVuZXhwZWN0ZWQgcmVmY291bnRzIGNhdXNlZCBieSB0aGUgdHJhY2UgZnVuY3Rpb24uCisKKyAgICAiIiIKKyAgICByZXR1cm4gbm9fdHJhY2luZyhjcHl0aG9uX29ubHkodGVzdCkpCisKKwogZGVmIF9maWx0ZXJfc3VpdGUoc3VpdGUsIHByZWQpOgogICAgICIiIlJlY3Vyc2l2ZWx5IGZpbHRlciB0ZXN0IGNhc2VzIGluIGEgc3VpdGUgYmFzZWQgb24gYSBwcmVkaWNhdGUuIiIiCiAgICAgbmV3dGVzdHMgPSBbXQpAQCAtMTQzMiw3ICsxNTQ0LDYgQEAKICAgICAgICAgICAgICAgICBuZXd0ZXN0cy5hcHBlbmQodGVzdCkKICAgICBzdWl0ZS5fdGVzdHMgPSBuZXd0ZXN0cwogCi0KIGRlZiBfcnVuX3N1aXRlKHN1aXRlKToKICAgICAiIiJSdW4gdGVzdHMgZnJvbSBhIHVuaXR0ZXN0LlRlc3RTdWl0ZS1kZXJpdmVkIGNsYXNzLiIiIgogICAgIGlmIHZlcmJvc2U6CkBAIC0xNDkxLDcgKzE2MDIsNyBAQAogIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIGRvY3Rlc3QgZHJpdmVyLgogCi1kZWYgcnVuX2RvY3Rlc3QobW9kdWxlLCB2ZXJib3NpdHk9Tm9uZSk6CitkZWYgcnVuX2RvY3Rlc3QobW9kdWxlLCB2ZXJib3NpdHk9Tm9uZSwgb3B0aW9uZmxhZ3M9MCk6CiAgICAgIiIiUnVuIGRvY3Rlc3Qgb24gdGhlIGdpdmVuIG1vZHVsZS4gIFJldHVybiAoI2ZhaWx1cmVzLCAjdGVzdHMpLgogCiAgICAgSWYgb3B0aW9uYWwgYXJndW1lbnQgdmVyYm9zaXR5IGlzIG5vdCBzcGVjaWZpZWQgKG9yIGlzIE5vbmUpLCBwYXNzCkBAIC0xNTA2LDcgKzE2MTcsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHZlcmJvc2l0eSA9IE5vbmUKIAotICAgIGYsIHQgPSBkb2N0ZXN0LnRlc3Rtb2QobW9kdWxlLCB2ZXJib3NlPXZlcmJvc2l0eSkKKyAgICBmLCB0ID0gZG9jdGVzdC50ZXN0bW9kKG1vZHVsZSwgdmVyYm9zZT12ZXJib3NpdHksIG9wdGlvbmZsYWdzPW9wdGlvbmZsYWdzKQogICAgIGlmIGY6CiAgICAgICAgIHJhaXNlIFRlc3RGYWlsZWQoIiVkIG9mICVkIGRvY3Rlc3RzIGZhaWxlZCIgJSAoZiwgdCkpCiAgICAgaWYgdmVyYm9zZToKQEAgLTE2NjQsMjggKzE3NzUsMTMgQEAKICAgICBUaGlzIHdpbGwgdHlwaWNhbGx5IGJlIHJ1biBvbiB0aGUgcmVzdWx0IG9mIHRoZSBjb21tdW5pY2F0ZSgpIG1ldGhvZAogICAgIG9mIGEgc3VicHJvY2Vzcy5Qb3BlbiBvYmplY3QuCiAgICAgIiIiCi0gICAgc3RkZXJyID0gcmUuc3ViKGJyIlxbXGQrIHJlZnNcXVxyP1xuPyQiLCBiIiIsIHN0ZGVycikuc3RyaXAoKQorICAgIHN0ZGVyciA9IHJlLnN1YihiciJcW1xkKyByZWZzXF1ccj9cbj8iLCBiIiIsIHN0ZGVycikuc3RyaXAoKQogICAgIHJldHVybiBzdGRlcnIKIAogZGVmIGFyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpOgogICAgICIiIlJldHVybiBhIGxpc3Qgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyByZXByb2R1Y2luZyB0aGUgY3VycmVudAotICAgIHNldHRpbmdzIGluIHN5cy5mbGFncy4iIiIKLSAgICBmbGFnX29wdF9tYXAgPSB7Ci0gICAgICAgICdieXRlc193YXJuaW5nJzogJ2InLAotICAgICAgICAnZG9udF93cml0ZV9ieXRlY29kZSc6ICdCJywKLSAgICAgICAgJ2hhc2hfcmFuZG9taXphdGlvbic6ICdSJywKLSAgICAgICAgJ2lnbm9yZV9lbnZpcm9ubWVudCc6ICdFJywKLSAgICAgICAgJ25vX3VzZXJfc2l0ZSc6ICdzJywKLSAgICAgICAgJ25vX3NpdGUnOiAnUycsCi0gICAgICAgICdvcHRpbWl6ZSc6ICdPJywKLSAgICAgICAgJ3ZlcmJvc2UnOiAndicsCi0gICAgfQotICAgIGFyZ3MgPSBbXQotICAgIGZvciBmbGFnLCBvcHQgaW4gZmxhZ19vcHRfbWFwLml0ZW1zKCk6Ci0gICAgICAgIHYgPSBnZXRhdHRyKHN5cy5mbGFncywgZmxhZykKLSAgICAgICAgaWYgdiA+IDA6Ci0gICAgICAgICAgICBhcmdzLmFwcGVuZCgnLScgKyBvcHQgKiB2KQotICAgIHJldHVybiBhcmdzCisgICAgc2V0dGluZ3MgaW4gc3lzLmZsYWdzIGFuZCBzeXMud2Fybm9wdGlvbnMuIiIiCisgICAgcmV0dXJuIHN1YnByb2Nlc3MuX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCiAKICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgU3VwcG9ydCBmb3IgYXNzZXJ0aW9ucyBhYm91dCBsb2dnaW5nLgpAQCAtMTc3NSw2ICsxODcxLDQwIEBACiAgICAgbXNnID0gIlJlcXVpcmVzIGZ1bmN0aW9uYWwgc3ltbGluayBpbXBsZW1lbnRhdGlvbiIKICAgICByZXR1cm4gdGVzdCBpZiBvayBlbHNlIHVuaXR0ZXN0LnNraXAobXNnKSh0ZXN0KQogCitfY2FuX3hhdHRyID0gTm9uZQorZGVmIGNhbl94YXR0cigpOgorICAgIGdsb2JhbCBfY2FuX3hhdHRyCisgICAgaWYgX2Nhbl94YXR0ciBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIF9jYW5feGF0dHIKKyAgICBpZiBub3QgaGFzYXR0cihvcywgInNldHhhdHRyIik6CisgICAgICAgIGNhbiA9IEZhbHNlCisgICAgZWxzZToKKyAgICAgICAgdG1wX2ZwLCB0bXBfbmFtZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgVEVTVEZOICYgdGVtcGZpbGUgbWF5IHVzZSBkaWZmZXJlbnQgZmlsZSBzeXN0ZW1zIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgIyBkaWZmZXJlbnQgY2FwYWJpbGl0aWVzCisgICAgICAgICAgICAgICAgICAgIG9zLnNldHhhdHRyKHRtcF9mcCwgYiJ1c2VyLnRlc3QiLCBiIiIpCisgICAgICAgICAgICAgICAgICAgIG9zLnNldHhhdHRyKGZwLmZpbGVubygpLCBiInVzZXIudGVzdCIsIGIiIikKKyAgICAgICAgICAgICAgICAgICAgIyBLZXJuZWxzIDwgMi42LjM5IGRvbid0IHJlc3BlY3Qgc2V0eGF0dHIgZmxhZ3MuCisgICAgICAgICAgICAgICAgICAgIGtlcm5lbF92ZXJzaW9uID0gcGxhdGZvcm0ucmVsZWFzZSgpCisgICAgICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaCgiMi42LihcZHsxLDJ9KSIsIGtlcm5lbF92ZXJzaW9uKQorICAgICAgICAgICAgICAgICAgICBjYW4gPSBtIGlzIE5vbmUgb3IgaW50KG0uZ3JvdXAoMSkpID49IDM5CisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNhbiA9IEZhbHNlCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQorICAgICAgICAgICAgdW5saW5rKHRtcF9uYW1lKQorICAgIF9jYW5feGF0dHIgPSBjYW4KKyAgICByZXR1cm4gY2FuCisKK2RlZiBza2lwX3VubGVzc194YXR0cih0ZXN0KToKKyAgICAiIiJTa2lwIGRlY29yYXRvciBmb3IgdGVzdHMgdGhhdCByZXF1aXJlIGZ1bmN0aW9uYWwgZXh0ZW5kZWQgYXR0cmlidXRlcyIiIgorICAgIG9rID0gY2FuX3hhdHRyKCkKKyAgICBtc2cgPSAibm8gbm9uLWJyb2tlbiBleHRlbmRlZCBhdHRyaWJ1dGUgc3VwcG9ydCIKKyAgICByZXR1cm4gdGVzdCBpZiBvayBlbHNlIHVuaXR0ZXN0LnNraXAobXNnKSh0ZXN0KQorCiAKIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKICAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9fbG9jYWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9fbG9jYWxlLnB5CmluZGV4IDNmYWRiNTcuLjQyMzFmMzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfX2xvY2FsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X19sb2NhbGUucHkKQEAgLTEsMjMgKzEsMjUgQEAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIGZyb20gX2xvY2FsZSBpbXBvcnQgKHNldGxvY2FsZSwgTENfQUxMLCBMQ19DVFlQRSwgTENfTlVNRVJJQywgbG9jYWxlY29udiwgRXJyb3IpCiB0cnk6CiAgICAgZnJvbSBfbG9jYWxlIGltcG9ydCAoUkFESVhDSEFSLCBUSE9VU0VQLCBubF9sYW5naW5mbykKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBubF9sYW5naW5mbyA9IE5vbmUKIAotaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgY29kZWNzCitpbXBvcnQgbG9jYWxlCiBpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKIGZyb20gcGxhdGZvcm0gaW1wb3J0IHVuYW1lCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKLWlmIHVuYW1lKClbMF0gPT0gIkRhcndpbiI6Ci0gICAgbWFqLCBtaW4sIG1pYyA9IFtpbnQocGFydCkgZm9yIHBhcnQgaW4gdW5hbWUoKVsyXS5zcGxpdCgiLiIpXQoraWYgdW5hbWUoKS5zeXN0ZW0gPT0gIkRhcndpbiI6CisgICAgbWFqLCBtaW4sIG1pYyA9IFtpbnQocGFydCkgZm9yIHBhcnQgaW4gdW5hbWUoKS5yZWxlYXNlLnNwbGl0KCIuIildCiAgICAgaWYgKG1haiwgbWluLCBtaWMpIDwgKDgsIDAsIDApOgogICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgibG9jYWxlIHN1cHBvcnQgYnJva2VuIGZvciBPUyBYIDwgMTAuNCIpCiAKIGNhbmRpZGF0ZV9sb2NhbGVzID0gWydlc19VWScsICdmcl9GUicsICdmaV9GSScsICdlc19DTycsICdwdF9QVCcsICdpdF9JVCcsCiAgICAgJ2V0X0VFJywgJ2VzX1BZJywgJ25vX05PJywgJ25sX05MJywgJ2x2X0xWJywgJ2VsX0dSJywgJ2JlX0JZJywgJ2ZyX0JFJywKICAgICAncm9fUk8nLCAncnVfVUEnLCAncnVfUlUnLCAnZXNfVkUnLCAnY2FfRVMnLCAnc2VfTk8nLCAnZXNfRUMnLCAnaWRfSUQnLAotICAgICdrYV9HRScsICdlc19DTCcsICdodV9IVScsICd3YV9CRScsICdsdF9MVCcsICdzbF9TSScsICdocl9IUicsICdlc19BUicsCisgICAgJ2thX0dFJywgJ2VzX0NMJywgJ3dhX0JFJywgJ2h1X0hVJywgJ2x0X0xUJywgJ3NsX1NJJywgJ2hyX0hSJywgJ2VzX0FSJywKICAgICAnZXNfRVMnLCAnb2NfRlInLCAnZ2xfRVMnLCAnYmdfQkcnLCAnaXNfSVMnLCAnbWtfTUsnLCAnZGVfQVQnLCAncHRfQlInLAogICAgICdkYV9ESycsICdubl9OTycsICdjc19DWicsICdkZV9MVScsICdlc19CTycsICdzcV9BTCcsICdza19TSycsICdmcl9DSCcsCiAgICAgJ2RlX0RFJywgJ3NyX1lVJywgJ2JyX0ZSJywgJ25sX0JFJywgJ3N2X0ZJJywgJ3BsX1BMJywgJ2ZyX0NBJywgJ2ZvX0ZPJywKQEAgLTI1LDYgKzI3LDMxIEBACiAgICAgJ2V1X0VTJywgJ3ZpX1ZOJywgJ2FmX1pBJywgJ25iX05PJywgJ2VuX0RLJywgJ3RnX1RKJywgJ2VuX1VTJywKICAgICAnZXNfRVMuSVNPODg1OS0xJywgJ2ZyX0ZSLklTTzg4NTktMTUnLCAncnVfUlUuS09JOC1SJywgJ2tvX0tSLmV1Y0tSJ10KIAorIyBJc3N1ZSAjMTM0NDE6IFNraXAgc29tZSBsb2NhbGVzIChlLmcuIGNzX0NaIGFuZCBodV9IVSkgb24gU29sYXJpcyB0bworIyB3b3JrYXJvdW5kIGEgbWJzdG93Y3MoKSBidWcuIEZvciBleGFtcGxlLCBvbiBTb2xhcmlzLCB0aGUgaHVfSFUgbG9jYWxlIHVzZXMKKyMgdGhlIGxvY2FsZSBlbmNvZGluZyBJU08tODg1OS0yLCB0aGUgdGhvdXNhdWRzIHNlcGFyYXRvciBpcyBiJ1x4QTAnIGFuZCBpdCBpcworIyBkZWNvZGVkIGFzIFUrMzAwMDAwMjAgKGFuIGludmFsaWQgY2hhcmFjdGVyKSBieSBtYnN0b3djcygpLgoraWYgc3lzLnBsYXRmb3JtID09ICdzdW5vczUnOgorICAgIG9sZF9sb2NhbGUgPSBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19BTEwpCisgICAgdHJ5OgorICAgICAgICBsb2NhbGVzID0gW10KKyAgICAgICAgZm9yIGxvYyBpbiBjYW5kaWRhdGVfbG9jYWxlczoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19BTEwsIGxvYykKKyAgICAgICAgICAgIGV4Y2VwdCBFcnJvcjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZW5jb2RpbmcgPSBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbG9jYWxlY29udigpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKKyAgICAgICAgICAgICAgICBwcmludCgiV0FSTklORzogU2tpcCBsb2NhbGUgJXMgKGVuY29kaW5nICVzKTogWyVzXSAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAlIChsb2MsIGVuY29kaW5nLCB0eXBlKGVyciksIGVycikpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxvY2FsZXMuYXBwZW5kKGxvYykKKyAgICAgICAgY2FuZGlkYXRlX2xvY2FsZXMgPSBsb2NhbGVzCisgICAgZmluYWxseToKKyAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQUxMLCBvbGRfbG9jYWxlKQorCiAjIFdvcmthcm91bmQgZm9yIE1TVkM2KGRlYnVnKSBjcmFzaCBidWcKIGlmICJNU0Mgdi4xMjAwIiBpbiBzeXMudmVyc2lvbjoKICAgICBkZWYgYWNjZXB0KGxvYyk6CkBAIC04Niw5ICsxMTMsMTAgQEAKICAgICAgICAgICAgICAgICBzZXRsb2NhbGUoTENfQ1RZUEUsIGxvYykKICAgICAgICAgICAgIGV4Y2VwdCBFcnJvcjoKICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZm9ybWF0dGluZyA9IGxvY2FsZWNvbnYoKQogICAgICAgICAgICAgZm9yIGxjIGluICgiZGVjaW1hbF9wb2ludCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAidGhvdXNhbmRzX3NlcCIpOgotICAgICAgICAgICAgICAgIHNlbGYubnVtZXJpY190ZXN0ZXIoJ2xvY2FsZWNvbnYnLCBsb2NhbGVjb252KClbbGNdLCBsYywgbG9jKQorICAgICAgICAgICAgICAgIHNlbGYubnVtZXJpY190ZXN0ZXIoJ2xvY2FsZWNvbnYnLCBmb3JtYXR0aW5nW2xjXSwgbGMsIGxvYykKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG5sX2xhbmdpbmZvLCAibmxfbGFuZ2luZm8gaXMgbm90IGF2YWlsYWJsZSIpCiAgICAgZGVmIHRlc3RfbGNfbnVtZXJpY19iYXNpYyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYWJjLnB5IGIvTGliL3Rlc3QvdGVzdF9hYmMucHkKaW5kZXggZDg2Zjk3Yy4uNjUzYzk1NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hYmMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hYmMucHkKQEAgLTEwLDE0ICsxMCw3IEBACiBmcm9tIGluc3BlY3QgaW1wb3J0IGlzYWJzdHJhY3QKIAogCi1jbGFzcyBUZXN0QUJDKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgIGRlZiB0ZXN0X2Fic3RyYWN0bWV0aG9kX2Jhc2ljcyhzZWxmKToKLSAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAotICAgICAgICBkZWYgZm9vKHNlbGYpOiBwYXNzCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb28uX19pc2Fic3RyYWN0bWV0aG9kX18pCi0gICAgICAgIGRlZiBiYXIoc2VsZik6IHBhc3MKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGJhciwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIikpCitjbGFzcyBUZXN0TGVnYWN5QVBJKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2Fic3RyYWN0cHJvcGVydHlfYmFzaWNzKHNlbGYpOgogICAgICAgICBAYWJjLmFic3RyYWN0cHJvcGVydHkKQEAgLTI5LDEwICsyMiwxMiBAQAogICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CiAgICAgICAgICAgICBAYWJjLmFic3RyYWN0cHJvcGVydHkKICAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHJldHVybiAzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQykKICAgICAgICAgY2xhc3MgRChDKToKICAgICAgICAgICAgIEBwcm9wZXJ0eQogICAgICAgICAgICAgZGVmIGZvbyhzZWxmKTogcmV0dXJuIHN1cGVyKCkuZm9vCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgpLmZvbywgMykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnZXRhdHRyKEQuZm9vLCAiX19pc2Fic3RyYWN0bWV0aG9kX18iLCBGYWxzZSkpCiAKICAgICBkZWYgdGVzdF9hYnN0cmFjdGNsYXNzbWV0aG9kX2Jhc2ljcyhzZWxmKToKICAgICAgICAgQGFiYy5hYnN0cmFjdGNsYXNzbWV0aG9kCkBAIC00MCw3ICszNSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb28uX19pc2Fic3RyYWN0bWV0aG9kX18pCiAgICAgICAgIEBjbGFzc21ldGhvZAogICAgICAgICBkZWYgYmFyKGNscyk6IHBhc3MKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGJhciwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2V0YXR0cihiYXIsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIsIEZhbHNlKSkKIAogICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CiAgICAgICAgICAgICBAYWJjLmFic3RyYWN0Y2xhc3NtZXRob2QKQEAgLTU4LDcgKzUzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvby5fX2lzYWJzdHJhY3RtZXRob2RfXykKICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgYmFyKCk6IHBhc3MKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGJhciwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2V0YXR0cihiYXIsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIsIEZhbHNlKSkKIAogICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CiAgICAgICAgICAgICBAYWJjLmFic3RyYWN0c3RhdGljbWV0aG9kCkBAIC05OCw2ICs5MywxNjMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRikgICMgYmVjYXVzZSBiYXIgaXMgYWJzdHJhY3Qgbm93CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNhYnN0cmFjdChGKSkKIAorCitjbGFzcyBUZXN0QUJDKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2Fic3RyYWN0bWV0aG9kX2Jhc2ljcyhzZWxmKToKKyAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICBkZWYgZm9vKHNlbGYpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb28uX19pc2Fic3RyYWN0bWV0aG9kX18pCisgICAgICAgIGRlZiBiYXIoc2VsZik6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGJhciwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIikpCisKKyAgICBkZWYgdGVzdF9hYnN0cmFjdHByb3BlcnR5X2Jhc2ljcyhzZWxmKToKKyAgICAgICAgQHByb3BlcnR5CisgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgZGVmIGZvbyhzZWxmKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydFRydWUoZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fKQorICAgICAgICBkZWYgYmFyKHNlbGYpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2V0YXR0cihiYXIsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIsIEZhbHNlKSkKKworICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CisgICAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHJldHVybiAzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQykKKyAgICAgICAgY2xhc3MgRChDKToKKyAgICAgICAgICAgIEBDLmZvby5nZXR0ZXIKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHJldHVybiBzdXBlcigpLmZvbworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoKS5mb28sIDMpCisKKyAgICBkZWYgdGVzdF9hYnN0cmFjdGNsYXNzbWV0aG9kX2Jhc2ljcyhzZWxmKToKKyAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgZGVmIGZvbyhjbHMpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb28uX19pc2Fic3RyYWN0bWV0aG9kX18pCisgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICBkZWYgYmFyKGNscyk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnZXRhdHRyKGJhciwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIiwgRmFsc2UpKQorCisgICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICAgICAgZGVmIGZvbyhjbHMpOiByZXR1cm4gY2xzLl9fbmFtZV9fCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQykKKyAgICAgICAgY2xhc3MgRChDKToKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIGZvbyhjbHMpOiByZXR1cm4gc3VwZXIoKS5mb28oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQuZm9vKCksICdEJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCkuZm9vKCksICdEJykKKworICAgIGRlZiB0ZXN0X2Fic3RyYWN0c3RhdGljbWV0aG9kX2Jhc2ljcyhzZWxmKToKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgIGRlZiBmb28oKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydFRydWUoZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fKQorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBiYXIoKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdldGF0dHIoYmFyLCAiX19pc2Fic3RyYWN0bWV0aG9kX18iLCBGYWxzZSkpCisKKyAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgorICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICAgICAgZGVmIGZvbygpOiByZXR1cm4gMworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEMpCisgICAgICAgIGNsYXNzIEQoQyk6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKCk6IHJldHVybiA0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRC5mb28oKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCkuZm9vKCksIDQpCisKKyAgICBkZWYgdGVzdF9hYnN0cmFjdG1ldGhvZF9pbnRlZ3JhdGlvbihzZWxmKToKKyAgICAgICAgZm9yIGFic3RyYWN0dGhpbmcgaW4gW2FiYy5hYnN0cmFjdG1ldGhvZCwgYWJjLmFic3RyYWN0cHJvcGVydHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYmMuYWJzdHJhY3RjbGFzc21ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFiYy5hYnN0cmFjdHN0YXRpY21ldGhvZF06CisgICAgICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CisgICAgICAgICAgICAgICAgQGFic3RyYWN0dGhpbmcKKyAgICAgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiBwYXNzICAjIGFic3RyYWN0CisgICAgICAgICAgICAgICAgZGVmIGJhcihzZWxmKTogcGFzcyAgIyBjb25jcmV0ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fYWJzdHJhY3RtZXRob2RzX18sIHsiZm9vIn0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEMpICAjIGJlY2F1c2UgZm9vIGlzIGFic3RyYWN0CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNhYnN0cmFjdChDKSkKKyAgICAgICAgICAgIGNsYXNzIEQoQyk6CisgICAgICAgICAgICAgICAgZGVmIGJhcihzZWxmKTogcGFzcyAgIyBjb25jcmV0ZSBvdmVycmlkZSBvZiBjb25jcmV0ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChELl9fYWJzdHJhY3RtZXRob2RzX18sIHsiZm9vIn0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQpICAjIGJlY2F1c2UgZm9vIGlzIHN0aWxsIGFic3RyYWN0CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNhYnN0cmFjdChEKSkKKyAgICAgICAgICAgIGNsYXNzIEUoRCk6CisgICAgICAgICAgICAgICAgZGVmIGZvbyhzZWxmKTogcGFzcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFLl9fYWJzdHJhY3RtZXRob2RzX18sIHNldCgpKQorICAgICAgICAgICAgRSgpICAjIG5vdyBmb28gaXMgY29uY3JldGUsIHRvbworICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2Fic3RyYWN0KEUpKQorICAgICAgICAgICAgY2xhc3MgRihFKToKKyAgICAgICAgICAgICAgICBAYWJzdHJhY3R0aGluZworICAgICAgICAgICAgICAgIGRlZiBiYXIoc2VsZik6IHBhc3MgICMgYWJzdHJhY3Qgb3ZlcnJpZGUgb2YgY29uY3JldGUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRi5fX2Fic3RyYWN0bWV0aG9kc19fLCB7ImJhciJ9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBGKSAgIyBiZWNhdXNlIGJhciBpcyBhYnN0cmFjdCBub3cKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2Fic3RyYWN0KEYpKQorCisgICAgZGVmIHRlc3RfZGVzY3JpcHRvcnNfd2l0aF9hYnN0cmFjdG1ldGhvZChzZWxmKToKKyAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgorICAgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiByZXR1cm4gMworICAgICAgICAgICAgQGZvby5zZXR0ZXIKKyAgICAgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZiwgdmFsKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEMpCisgICAgICAgIGNsYXNzIEQoQyk6CisgICAgICAgICAgICBAQy5mb28uZ2V0dGVyCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiByZXR1cm4gc3VwZXIoKS5mb28KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKQorICAgICAgICBjbGFzcyBFKEQpOgorICAgICAgICAgICAgQEQuZm9vLnNldHRlcgorICAgICAgICAgICAgZGVmIGZvbyhzZWxmLCB2YWwpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRSgpLmZvbywgMykKKyAgICAgICAgIyBjaGVjayB0aGF0IHRoZSBwcm9wZXJ0eSdzIF9faXNhYnN0cmFjdG1ldGhvZF9fIGRlc2NyaXB0b3IgZG9lcyB0aGUKKyAgICAgICAgIyByaWdodCB0aGluZyB3aGVuIHByZXNlbnRlZCB3aXRoIGEgdmFsdWUgdGhhdCBmYWlscyB0cnV0aCB0ZXN0aW5nOgorICAgICAgICBjbGFzcyBOb3RCb29sKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19ub256ZXJvX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigpCisgICAgICAgICAgICBfX2xlbl9fID0gX19ub256ZXJvX18KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIEYoQyk6CisgICAgICAgICAgICAgICAgZGVmIGJhcihzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGJhci5fX2lzYWJzdHJhY3RtZXRob2RfXyA9IE5vdEJvb2woKQorICAgICAgICAgICAgICAgIGZvbyA9IHByb3BlcnR5KGJhcikKKworCisgICAgZGVmIHRlc3RfY3VzdG9tZGVzY3JpcHRvcnNfd2l0aF9hYnN0cmFjdG1ldGhvZChzZWxmKToKKyAgICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmZ2V0LCBmc2V0PU5vbmUpOgorICAgICAgICAgICAgICAgIHNlbGYuX2ZnZXQgPSBmZ2V0CisgICAgICAgICAgICAgICAgc2VsZi5fZnNldCA9IGZzZXQKKyAgICAgICAgICAgIGRlZiBnZXR0ZXIoc2VsZiwgY2FsbGFibGUpOgorICAgICAgICAgICAgICAgIHJldHVybiBEZXNjcmlwdG9yKGNhbGxhYmxlLCBzZWxmLl9mZ2V0KQorICAgICAgICAgICAgZGVmIHNldHRlcihzZWxmLCBjYWxsYWJsZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIERlc2NyaXB0b3Ioc2VsZi5fZmdldCwgY2FsbGFibGUpCisgICAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICAgIGRlZiBfX2lzYWJzdHJhY3RtZXRob2RfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gKGdldGF0dHIoc2VsZi5fZmdldCwgJ19faXNhYnN0cmFjdG1ldGhvZF9fJywgRmFsc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBvciBnZXRhdHRyKHNlbGYuX2ZzZXQsICdfX2lzYWJzdHJhY3RtZXRob2RfXycsIEZhbHNlKSkKKyAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgorICAgICAgICAgICAgQERlc2NyaXB0b3IKKyAgICAgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHJldHVybiAzCisgICAgICAgICAgICBAZm9vLnNldHRlcgorICAgICAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICAgICAgZGVmIGZvbyhzZWxmLCB2YWwpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQykKKyAgICAgICAgY2xhc3MgRChDKToKKyAgICAgICAgICAgIEBDLmZvby5nZXR0ZXIKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHJldHVybiBzdXBlcigpLmZvbworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQpCisgICAgICAgIGNsYXNzIEUoRCk6CisgICAgICAgICAgICBARC5mb28uc2V0dGVyCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYsIHZhbCk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShFLmZvby5fX2lzYWJzdHJhY3RtZXRob2RfXykKKwogICAgIGRlZiB0ZXN0X21ldGFjbGFzc19hYmMoc2VsZik6CiAgICAgICAgICMgTWV0YWNsYXNzZXMgY2FuIGJlIEFCQ3MsIHRvby4KICAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgpAQCAtMTIxLDExICsyNzMsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKEIsIChBLCkpKQogICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoYiwgQSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGIsIChBLCkpCi0gICAgICAgIEEucmVnaXN0ZXIoQikKKyAgICAgICAgQjEgPSBBLnJlZ2lzdGVyKEIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEIsIEEpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhCLCAoQSwpKSkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGIsIEEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShiLCAoQSwpKQorICAgICAgICBzZWxmLmFzc2VydElzKEIxLCBCKQogICAgICAgICBjbGFzcyBDKEIpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBjID0gQygpCkBAIC0xMzQsNiArMjg3LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjLCBBKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYywgKEEsKSkKIAorICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX2FzX2NsYXNzX2RlY28oc2VsZik6CisgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgQEEucmVnaXN0ZXIKKyAgICAgICAgY2xhc3MgQihvYmplY3QpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBiID0gQigpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEIsIEEpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhCLCAoQSwpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGIsIEEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShiLCAoQSwpKQorICAgICAgICBAQS5yZWdpc3RlcgorICAgICAgICBjbGFzcyBDKEIpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBjID0gQygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEMsIEEpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDLCAoQSwpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGMsIEEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjLCAoQSwpKQorICAgICAgICBzZWxmLmFzc2VydElzKEMsIEEucmVnaXN0ZXIoQykpCisKICAgICBkZWYgdGVzdF9pc2luc3RhbmNlX2ludmFsaWRhdGlvbihzZWxmKToKICAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgogICAgICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hYnN0cmFjdF9udW1iZXJzLnB5IGIvTGliL3Rlc3QvdGVzdF9hYnN0cmFjdF9udW1iZXJzLnB5CmluZGV4IDJhMzk2Y2QuLjI1M2U2ZjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYWJzdHJhY3RfbnVtYmVycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Fic3RyYWN0X251bWJlcnMucHkKQEAgLTE0LDYgKzE0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg3LCBpbnQoNykucmVhbCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBpbnQoNykuaW1hZykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg3LCBpbnQoNykuY29uanVnYXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTcsIGludCgtNykuY29uanVnYXRlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNywgaW50KDcpLm51bWVyYXRvcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBpbnQoNykuZGVub21pbmF0b3IpCiAKQEAgLTI0LDYgKzI1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg3LjMsIGZsb2F0KDcuMykucmVhbCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBmbG9hdCg3LjMpLmltYWcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNy4zLCBmbG9hdCg3LjMpLmNvbmp1Z2F0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC03LjMsIGZsb2F0KC03LjMpLmNvbmp1Z2F0ZSgpKQogCiAgICAgZGVmIHRlc3RfY29tcGxleChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKGNvbXBsZXgsIFJlYWwpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9haWZjLnB5IGIvTGliL3Rlc3QvdGVzdF9haWZjLnB5CmluZGV4IDBiMTlhZjYuLjljMGU3YjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYWlmYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FpZmMucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUsIHJ1bl91bml0dGVzdCwgVEVTVEZOLCBjYXB0dXJlZF9zdGRvdXQsIHVubGluaworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlLCBydW5fdW5pdHRlc3QsIFRFU1RGTiwgdW5saW5rCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwogaW1wb3J0IGlvCkBAIC0yMTQsMTEgKzIxNCw4IEBACiAgICAgICAgIGIgKz0gYidDT01NJyArIHN0cnVjdC5wYWNrKCc+TGhsaGhMTCcsIDE4LCAwLCAwLCAwLCAwLCAwLCAwKQogICAgICAgICBiICs9IGInU1NORCcgKyBzdHJ1Y3QucGFjaygnPkwnLCA4KSArIGInXHgwMCcgKiA4CiAgICAgICAgIGIgKz0gYidNQVJLJyArIHN0cnVjdC5wYWNrKCc+TGhCJywgMywgMSwgMSkKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoVXNlcldhcm5pbmcpOgogICAgICAgICAgICAgZiA9IGFpZmMub3Blbihpby5CeXRlc0lPKGIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgcy5nZXR2YWx1ZSgpLAotICAgICAgICAgICAgJ1dhcm5pbmc6IE1BUksgY2h1bmsgY29udGFpbnMgb25seSAwIG1hcmtlcnMgaW5zdGVhZCBvZiAxXG4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZ2V0bWFya2VycygpLCBOb25lKQogCiAgICAgZGVmIHRlc3RfcmVhZF9jb21tX2tsdWRnZV9jb21wbmFtZV9ldmVuKHNlbGYpOgpAQCAtMjI2LDkgKzIyMyw4IEBACiAgICAgICAgIGIgKz0gYidDT01NJyArIHN0cnVjdC5wYWNrKCc+TGhsaGhMTCcsIDE4LCAwLCAwLCAwLCAwLCAwLCAwKQogICAgICAgICBiICs9IGInTk9ORScgKyBzdHJ1Y3QucGFjaygnQicsIDQpICsgYidldmVuJyArIGInXHgwMCcKICAgICAgICAgYiArPSBiJ1NTTkQnICsgc3RydWN0LnBhY2soJz5MJywgOCkgKyBiJ1x4MDAnICogOAotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHM6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhVc2VyV2FybmluZyk6CiAgICAgICAgICAgICBmID0gYWlmYy5vcGVuKGlvLkJ5dGVzSU8oYikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCAnV2FybmluZzogYmFkIENPTU0gY2h1bmsgc2l6ZVxuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmdldGNvbXBuYW1lKCksIGInZXZlbicpCiAKICAgICBkZWYgdGVzdF9yZWFkX2NvbW1fa2x1ZGdlX2NvbXBuYW1lX29kZChzZWxmKToKQEAgLTIzNiw5ICsyMzIsOCBAQAogICAgICAgICBiICs9IGInQ09NTScgKyBzdHJ1Y3QucGFjaygnPkxobGhoTEwnLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCkKICAgICAgICAgYiArPSBiJ05PTkUnICsgc3RydWN0LnBhY2soJ0InLCAzKSArIGInb2RkJwogICAgICAgICBiICs9IGInU1NORCcgKyBzdHJ1Y3QucGFjaygnPkwnLCA4KSArIGInXHgwMCcgKiA4Ci0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFVzZXJXYXJuaW5nKToKICAgICAgICAgICAgIGYgPSBhaWZjLm9wZW4oaW8uQnl0ZXNJTyhiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksICdXYXJuaW5nOiBiYWQgQ09NTSBjaHVuayBzaXplXG4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZ2V0Y29tcG5hbWUoKSwgYidvZGQnKQogCiAgICAgZGVmIHRlc3Rfd3JpdGVfcGFyYW1zX3JhaXNlcyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkgYi9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5CmluZGV4IDIyYzI2Y2MuLmMwNmM5NDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weQpAQCAtMTMyMywyMCArMTMyMywyMSBAQAogY2xhc3MgVGVzdFBhcnNlckRlZmF1bHQ0MihQYXJzZXJUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBhY3Rpb25zIHdpdGggYSBwYXJzZXItbGV2ZWwgZGVmYXVsdCBvZiA0MiIiIgogCi0gICAgcGFyc2VyX3NpZ25hdHVyZSA9IFNpZyhhcmd1bWVudF9kZWZhdWx0PTQyLCB2ZXJzaW9uPScxLjAnKQorICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcoYXJndW1lbnRfZGVmYXVsdD00MikKICAgICBhcmd1bWVudF9zaWduYXR1cmVzID0gWworICAgICAgICBTaWcoJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JzEuMCcpLAogICAgICAgICBTaWcoJ2ZvbycsIG5hcmdzPSc/JyksCiAgICAgICAgIFNpZygnYmFyJywgbmFyZ3M9JyonKSwKICAgICAgICAgU2lnKCctLWJheicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpLAogICAgIF0KICAgICBmYWlsdXJlcyA9IFsnLXgnXQogICAgIHN1Y2Nlc3NlcyA9IFsKLSAgICAgICAgKCcnLCBOUyhmb289NDIsIGJhcj00MiwgYmF6PTQyKSksCi0gICAgICAgICgnYScsIE5TKGZvbz0nYScsIGJhcj00MiwgYmF6PTQyKSksCi0gICAgICAgICgnYSBiJywgTlMoZm9vPSdhJywgYmFyPVsnYiddLCBiYXo9NDIpKSwKLSAgICAgICAgKCctLWJheicsIE5TKGZvbz00MiwgYmFyPTQyLCBiYXo9VHJ1ZSkpLAotICAgICAgICAoJ2EgLS1iYXonLCBOUyhmb289J2EnLCBiYXI9NDIsIGJhej1UcnVlKSksCi0gICAgICAgICgnLS1iYXogYSBiJywgTlMoZm9vPSdhJywgYmFyPVsnYiddLCBiYXo9VHJ1ZSkpLAorICAgICAgICAoJycsIE5TKGZvbz00MiwgYmFyPTQyLCBiYXo9NDIsIHZlcnNpb249NDIpKSwKKyAgICAgICAgKCdhJywgTlMoZm9vPSdhJywgYmFyPTQyLCBiYXo9NDIsIHZlcnNpb249NDIpKSwKKyAgICAgICAgKCdhIGInLCBOUyhmb289J2EnLCBiYXI9WydiJ10sIGJhej00MiwgdmVyc2lvbj00MikpLAorICAgICAgICAoJy0tYmF6JywgTlMoZm9vPTQyLCBiYXI9NDIsIGJhej1UcnVlLCB2ZXJzaW9uPTQyKSksCisgICAgICAgICgnYSAtLWJheicsIE5TKGZvbz0nYScsIGJhcj00MiwgYmF6PVRydWUsIHZlcnNpb249NDIpKSwKKyAgICAgICAgKCctLWJheiBhIGInLCBOUyhmb289J2EnLCBiYXI9WydiJ10sIGJhej1UcnVlLCB2ZXJzaW9uPTQyKSksCiAgICAgXQogCiAKQEAgLTI5MjcsMTAgKzI5MjgsOSBAQAogICAgICAgICAgICAgICAgIHBhcnNlcl90ZXh0ID0gc2ZpbGUuZ2V0dmFsdWUoKQogICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3QodGVzdGVyLCBwYXJzZXJfdGV4dCkKIAotICAgICAgICAjIGFkZCB0ZXN0cyBmb3Ige2Zvcm1hdCxwcmludH1fe3VzYWdlLGhlbHAsdmVyc2lvbn0KKyAgICAgICAgIyBhZGQgdGVzdHMgZm9yIHtmb3JtYXQscHJpbnR9X3t1c2FnZSxoZWxwfQogICAgICAgICBmb3IgZnVuY19zdWZmaXgsIHN0ZF9uYW1lIGluIFsoJ3VzYWdlJywgJ3N0ZG91dCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2hlbHAnLCAnc3Rkb3V0JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgndmVyc2lvbicsICdzdGRlcnInKV06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnaGVscCcsICdzdGRvdXQnKV06CiAgICAgICAgICAgICBBZGRUZXN0cyhjbHMsIGZ1bmNfc3VmZml4LCBzdGRfbmFtZSkKIAogYmFzZXMgPSBUZXN0Q2FzZSwKQEAgLTI5NDEsOCArMjk0MSw5IEBACiAgICAgIiIiTWFrZSBzdXJlIHRoYXQgYXJndW1lbnQgaGVscCBhbGlnbnMgd2hlbiBvcHRpb25zIGFyZSBsb25nZXIiIiIKIAogICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcocHJvZz0nUFJPRycsIGRlc2NyaXB0aW9uPSdERVNDUklQVElPTicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBlcGlsb2c9J0VQSUxPRycsIHZlcnNpb249JzAuMScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlcGlsb2c9J0VQSUxPRycpCiAgICAgYXJndW1lbnRfc2lnbmF0dXJlcyA9IFsKKyAgICAgICAgU2lnKCctdicsICctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPScwLjEnKSwKICAgICAgICAgU2lnKCcteCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGhlbHA9J1ggSEVMUCcpLAogICAgICAgICBTaWcoJy0teScsIGhlbHA9J1kgSEVMUCcpLAogICAgICAgICBTaWcoJ2ZvbycsIGhlbHA9J0ZPTyBIRUxQJyksCkBAIC0yOTc3LDggKzI5NzgsOSBAQAogICAgICIiIk1ha2Ugc3VyZSB0aGF0IGFyZ3VtZW50IGhlbHAgYWxpZ25zIHdoZW4gb3B0aW9ucyBhcmUgbG9uZ2VyIiIiCiAKICAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHByb2c9J1BST0cnLCBkZXNjcmlwdGlvbj0nREVTQ1JJUFRJT04nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZXBpbG9nPSdFUElMT0cnLCB2ZXJzaW9uPScwLjEnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXBpbG9nPSdFUElMT0cnKQogICAgIGFyZ3VtZW50X3NpZ25hdHVyZXMgPSBbCisgICAgICAgIFNpZygnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMC4xJyksCiAgICAgICAgIFNpZygnLXgnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBoZWxwPSdYIEhFTFAnKSwKICAgICAgICAgU2lnKCctLXknLCBoZWxwPSdZIEhFTFAnKSwKICAgICAgICAgU2lnKCdmb28nLCBoZWxwPSdGT08gSEVMUCcpLApAQCAtMzE0NSw5ICszMTQ3LDkgQEAKIGNsYXNzIFRlc3RIZWxwV3JhcHBpbmdMb25nTmFtZXMoSGVscFRlc3RDYXNlKToKICAgICAiIiJNYWtlIHN1cmUgdGhhdCB0ZXh0IGFmdGVyIGxvbmcgbmFtZXMgc3RhcnRzIG9uIHRoZSBuZXh0IGxpbmUiIiIKIAotICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcodXNhZ2U9J1VTQUdFJywgZGVzY3JpcHRpb249ICdEIEQnICogMzAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPSdWIFYnKjMwKQorICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcodXNhZ2U9J1VTQUdFJywgZGVzY3JpcHRpb249ICdEIEQnICogMzApCiAgICAgYXJndW1lbnRfc2lnbmF0dXJlcyA9IFsKKyAgICAgICAgU2lnKCctdicsICctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPSdWIFYnICogMzApLAogICAgICAgICBTaWcoJy14JywgbWV0YXZhcj0nWCcgKiAyNSwgaGVscD0nWEggWEgnICogMjApLAogICAgICAgICBTaWcoJ3knLCBtZXRhdmFyPSd5JyAqIDI1LCBoZWxwPSdZSCBZSCcgKiAyMCksCiAgICAgXQpAQCAtMzc1MCw4ICszNzUyLDkgQEAKIGNsYXNzIFRlc3RIZWxwVmVyc2lvbk9wdGlvbmFsKEhlbHBUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB0aGF0IHRoZSAtLXZlcnNpb24gYXJndW1lbnQgY2FuIGJlIHN1cHByZXNzZWQgaGVscCBtZXNzYWdlcyIiIgogCi0gICAgcGFyc2VyX3NpZ25hdHVyZSA9IFNpZyhwcm9nPSdQUk9HJywgdmVyc2lvbj0nMS4wJykKKyAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHByb2c9J1BST0cnKQogICAgIGFyZ3VtZW50X3NpZ25hdHVyZXMgPSBbCisgICAgICAgIFNpZygnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMS4wJyksCiAgICAgICAgIFNpZygnLS1mb28nLCBoZWxwPSdmb28gaGVscCcpLAogICAgICAgICBTaWcoJ3NwYW0nLCBoZWxwPSdzcGFtIGhlbHAnKSwKICAgICBdCkBAIC0zOTg0LDggKzM5ODcsOCBAQAogY2xhc3MgVGVzdEhlbHBTdWJwYXJzZXJzT3JkZXJpbmcoSGVscFRlc3RDYXNlKToKICAgICAiIiJUZXN0IG9yZGVyaW5nIG9mIHN1YmNvbW1hbmRzIGluIGhlbHAgbWF0Y2hlcyB0aGUgY29kZSIiIgogICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcocHJvZz0nUFJPRycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nZGlzcGxheSBzb21lIHN1YmNvbW1hbmRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb249JzAuMScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nZGlzcGxheSBzb21lIHN1YmNvbW1hbmRzJykKKyAgICBhcmd1bWVudF9zaWduYXR1cmVzID0gW1NpZygnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMC4xJyldCiAKICAgICBzdWJwYXJzZXJzX3NpZ25hdHVyZXMgPSBbU2lnKG5hbWU9bmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gKCdhJywgJ2InLCAnYycsICdkJywgJ2UnKV0KQEAgLTQwMTMsOCArNDAxNiw4IEBACiBjbGFzcyBUZXN0SGVscFN1YnBhcnNlcnNXaXRoSGVscE9yZGVyaW5nKEhlbHBUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBvcmRlcmluZyBvZiBzdWJjb21tYW5kcyBpbiBoZWxwIG1hdGNoZXMgdGhlIGNvZGUiIiIKICAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHByb2c9J1BST0cnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J2Rpc3BsYXkgc29tZSBzdWJjb21tYW5kcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPScwLjEnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J2Rpc3BsYXkgc29tZSBzdWJjb21tYW5kcycpCisgICAgYXJndW1lbnRfc2lnbmF0dXJlcyA9IFtTaWcoJy12JywgJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JzAuMScpXQogCiAgICAgc3ViY29tbWFuZF9kYXRhID0gKCgnYScsICdhIHN1YmNvbW1hbmQgaGVscCcpLAogICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAnYiBzdWJjb21tYW5kIGhlbHAnKSwKQEAgLTQwNTIsNiArNDA1NSwzNyBAQAogICAgICAgICAnJycKIAogCisKK2NsYXNzIFRlc3RIZWxwTWV0YXZhclR5cGVGb3JtYXR0ZXIoSGVscFRlc3RDYXNlKToKKyAgICAiIiIiIiIKKworICAgIGRlZiBjdXN0b21fdHlwZShzdHJpbmcpOgorICAgICAgICByZXR1cm4gc3RyaW5nCisKKyAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHByb2c9J1BST0cnLCBkZXNjcmlwdGlvbj0nZGVzY3JpcHRpb24nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyX2NsYXNzPWFyZ3BhcnNlLk1ldGF2YXJUeXBlSGVscEZvcm1hdHRlcikKKyAgICBhcmd1bWVudF9zaWduYXR1cmVzID0gW1NpZygnYScsIHR5cGU9aW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZygnLWInLCB0eXBlPWN1c3RvbV90eXBlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZygnLWMnLCB0eXBlPWZsb2F0LCBtZXRhdmFyPSdTT01FIEZMT0FUJyldCisgICAgYXJndW1lbnRfZ3JvdXBfc2lnbmF0dXJlcyA9IFtdCisgICAgdXNhZ2UgPSAnJydcCisgICAgICAgIHVzYWdlOiBQUk9HIFstaF0gWy1iIGN1c3RvbV90eXBlXSBbLWMgU09NRSBGTE9BVF0gaW50CisgICAgICAgICcnJworICAgIGhlbHAgPSB1c2FnZSArICcnJ1wKKworICAgICAgICBkZXNjcmlwdGlvbgorCisgICAgICAgIHBvc2l0aW9uYWwgYXJndW1lbnRzOgorICAgICAgICAgIGludAorCisgICAgICAgIG9wdGlvbmFsIGFyZ3VtZW50czoKKyAgICAgICAgICAtaCwgLS1oZWxwICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorICAgICAgICAgIC1iIGN1c3RvbV90eXBlCisgICAgICAgICAgLWMgU09NRSBGTE9BVAorICAgICAgICAnJycKKyAgICB2ZXJzaW9uID0gJycKKworCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgT3B0aW9uYWwvUG9zaXRpb25hbCBjb25zdHJ1Y3RvciB0ZXN0cwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC00MjgwLDMyICs0MzE0LDI4IEBACiAgICAgICAgICAgICBwYXJzZXIuZm9ybWF0X2hlbHAoKSwKICAgICAgICAgICAgIHNlbGYuX2dldF9lcnJvcihwYXJzZXIucGFyc2VfYXJncywgYXJnc19zdHIuc3BsaXQoKSkuc3Rkb3V0KQogCi0gICAgZGVmIGFzc2VydFByaW50VmVyc2lvbkV4aXQoc2VsZiwgcGFyc2VyLCBhcmdzX3N0cik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBwYXJzZXIuZm9ybWF0X3ZlcnNpb24oKSwKLSAgICAgICAgICAgIHNlbGYuX2dldF9lcnJvcihwYXJzZXIucGFyc2VfYXJncywgYXJnc19zdHIuc3BsaXQoKSkuc3RkZXJyKQotCiAgICAgZGVmIGFzc2VydEFyZ3VtZW50UGFyc2VyRXJyb3Ioc2VsZiwgcGFyc2VyLCAqYXJncyk6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IsIHBhcnNlci5wYXJzZV9hcmdzLCBhcmdzKQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbihzZWxmKToKLSAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIodmVyc2lvbj0nMS4wJykKKyAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIoKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdicsICctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPScxLjAnKQogICAgICAgICBzZWxmLmFzc2VydFByaW50SGVscEV4aXQocGFyc2VyLCAnLWgnKQogICAgICAgICBzZWxmLmFzc2VydFByaW50SGVscEV4aXQocGFyc2VyLCAnLS1oZWxwJykKLSAgICAgICAgc2VsZi5hc3NlcnRQcmludFZlcnNpb25FeGl0KHBhcnNlciwgJy12JykKLSAgICAgICAgc2VsZi5hc3NlcnRQcmludFZlcnNpb25FeGl0KHBhcnNlciwgJy0tdmVyc2lvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBwYXJzZXIsICdmb3JtYXRfdmVyc2lvbicpCiAKICAgICBkZWYgdGVzdF92ZXJzaW9uX2Zvcm1hdChzZWxmKToKLSAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nUFBQJywgdmVyc2lvbj0nJShwcm9nKXMgMy41JykKKyAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nUFBQJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nJShwcm9nKXMgMy41JykKICAgICAgICAgbXNnID0gc2VsZi5fZ2V0X2Vycm9yKHBhcnNlci5wYXJzZV9hcmdzLCBbJy12J10pLnN0ZGVycgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQUFAgMy41XG4nLCBtc2cpCiAKICAgICBkZWYgdGVzdF92ZXJzaW9uX25vX2hlbHAoc2VsZik6Ci0gICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKGFkZF9oZWxwPUZhbHNlLCB2ZXJzaW9uPScxLjAnKQorICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcihhZGRfaGVscD1GYWxzZSkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMS4wJykKICAgICAgICAgc2VsZi5hc3NlcnRBcmd1bWVudFBhcnNlckVycm9yKHBhcnNlciwgJy1oJykKICAgICAgICAgc2VsZi5hc3NlcnRBcmd1bWVudFBhcnNlckVycm9yKHBhcnNlciwgJy0taGVscCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRWZXJzaW9uRXhpdChwYXJzZXIsICctdicpCi0gICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRWZXJzaW9uRXhpdChwYXJzZXIsICctLXZlcnNpb24nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgcGFyc2VyLCAnZm9ybWF0X3ZlcnNpb24nKQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbl9hY3Rpb24oc2VsZik6CiAgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHByb2c9J1hYWCcpCkBAIC00MzI1LDEyICs0MzU1LDEzIEBACiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy14JywgYWN0aW9uPSdoZWxwJykKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXknLCBhY3Rpb249J3ZlcnNpb24nKQogICAgICAgICBzZWxmLmFzc2VydFByaW50SGVscEV4aXQocGFyc2VyLCAnLXgnKQotICAgICAgICBzZWxmLmFzc2VydFByaW50VmVyc2lvbkV4aXQocGFyc2VyLCAnLXknKQogICAgICAgICBzZWxmLmFzc2VydEFyZ3VtZW50UGFyc2VyRXJyb3IocGFyc2VyLCAnLXYnKQogICAgICAgICBzZWxmLmFzc2VydEFyZ3VtZW50UGFyc2VyRXJyb3IocGFyc2VyLCAnLS12ZXJzaW9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIHBhcnNlciwgJ2Zvcm1hdF92ZXJzaW9uJykKIAogICAgIGRlZiB0ZXN0X2hlbHBfdmVyc2lvbl9leHRyYV9hcmd1bWVudHMoc2VsZik6Ci0gICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHZlcnNpb249JzEuMCcpCisgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKCkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMS4wJykKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXgnLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCd5JykKIApAQCAtNDM0Miw4ICs0MzczLDcgQEAKICAgICAgICAgICAgICAgICBmb3JtYXQgPSAnJXMgJSVzICVzJyAlIChwcmVmaXgsIHN1ZmZpeCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRIZWxwRXhpdChwYXJzZXIsIGZvcm1hdCAlICctaCcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFByaW50SGVscEV4aXQocGFyc2VyLCBmb3JtYXQgJSAnLS1oZWxwJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRWZXJzaW9uRXhpdChwYXJzZXIsIGZvcm1hdCAlICctdicpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFByaW50VmVyc2lvbkV4aXQocGFyc2VyLCBmb3JtYXQgJSAnLS12ZXJzaW9uJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBwYXJzZXIsICdmb3JtYXRfdmVyc2lvbicpCiAKIAogIyA9PT09PT09PT09PT09PT09PT09PT09CkBAIC00Mzk4LDcgKzQ0MjgsNyBAQAogICAgICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihwcm9nPSdQUk9HJykKICAgICAgICAgc3RyaW5nID0gKAogICAgICAgICAgICAgIkFyZ3VtZW50UGFyc2VyKHByb2c9J1BST0cnLCB1c2FnZT1Ob25lLCBkZXNjcmlwdGlvbj1Ob25lLCAiCi0gICAgICAgICAgICAidmVyc2lvbj1Ob25lLCBmb3JtYXR0ZXJfY2xhc3M9JXIsIGNvbmZsaWN0X2hhbmRsZXI9J2Vycm9yJywgIgorICAgICAgICAgICAgImZvcm1hdHRlcl9jbGFzcz0lciwgY29uZmxpY3RfaGFuZGxlcj0nZXJyb3InLCAiCiAgICAgICAgICAgICAiYWRkX2hlbHA9VHJ1ZSkiICUgYXJncGFyc2UuSGVscEZvcm1hdHRlcikKICAgICAgICAgc2VsZi5hc3NlcnRTdHJpbmdFcXVhbChwYXJzZXIsIHN0cmluZykKIApAQCAtNDQ0Miw3ICs0NDcyLDcgQEAKICAgICBkZWYgX3Rlc3RfbW9kdWxlX2VuY29kaW5nKHNlbGYsIHBhdGgpOgogICAgICAgICBwYXRoLCBfID0gb3MucGF0aC5zcGxpdGV4dChwYXRoKQogICAgICAgICBwYXRoICs9ICIucHkiCi0gICAgICAgIHdpdGggY29kZWNzLm9wZW4ocGF0aCwgJ3InLCAndXRmOCcpIGFzIGY6CisgICAgICAgIHdpdGggY29kZWNzLm9wZW4ocGF0aCwgJ3InLCAndXRmLTgnKSBhcyBmOgogICAgICAgICAgICAgZi5yZWFkKCkKIAogICAgIGRlZiB0ZXN0X2FyZ3BhcnNlX21vZHVsZV9lbmNvZGluZyhzZWxmKToKQEAgLTQ0ODQsNiArNDUxNCw2NyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mYWlsKCkKIAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09CisjIE1lc3NhZ2VDb250ZW50RXJyb3IgdGVzdHMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PQorCitjbGFzcyBUZXN0TWVzc2FnZUNvbnRlbnRFcnJvcihUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9taXNzaW5nX2FyZ3VtZW50X25hbWVfaW5fbWVzc2FnZShzZWxmKToKKyAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nUFJPRycsIHVzYWdlPScnKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdyZXFfcG9zJywgdHlwZT1zdHIpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1yZXFfb3B0JywgdHlwZT1pbnQsIHJlcXVpcmVkPVRydWUpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ25lZWRfb25lJywgdHlwZT1zdHIsIG5hcmdzPScrJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcGFyc2VyLnBhcnNlX2FyZ3MoW10pCisgICAgICAgIG1zZyA9IHN0cihjbS5leGNlcHRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobXNnLCAncmVxX3BvcycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobXNnLCAncmVxX29wdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobXNnLCAnbmVlZF9vbmUnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcGFyc2VyLnBhcnNlX2FyZ3MoWydteVhhcmd1bWVudCddKQorICAgICAgICBtc2cgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG1zZywgJ3JlcV9wb3MnKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ3JlcV9vcHQnKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ25lZWRfb25lJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHBhcnNlci5wYXJzZV9hcmdzKFsnbXlYYXJndW1lbnQnLCAnLXJlcV9vcHQ9MSddKQorICAgICAgICBtc2cgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG1zZywgJ3JlcV9wb3MnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG1zZywgJ3JlcV9vcHQnKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ25lZWRfb25lJykKKworICAgIGRlZiB0ZXN0X29wdGlvbmFsX29wdGlvbmFsX25vdF9pbl9tZXNzYWdlKHNlbGYpOgorICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcihwcm9nPSdQUk9HJywgdXNhZ2U9JycpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3JlcV9wb3MnLCB0eXBlPXN0cikKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1yZXFfb3B0JywgdHlwZT1pbnQsIHJlcXVpcmVkPVRydWUpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tb3B0X29wdCcsIHR5cGU9Ym9vbCwgbmFyZ3M9Jz8nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9VHJ1ZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHBhcnNlci5wYXJzZV9hcmdzKFtdKQorICAgICAgICBtc2cgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ3JlcV9wb3MnKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ3JlcV9vcHQnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG1zZywgJ29wdF9vcHQnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcGFyc2VyLnBhcnNlX2FyZ3MoWyctLXJlcV9vcHQ9MSddKQorICAgICAgICBtc2cgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ3JlcV9wb3MnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG1zZywgJ3JlcV9vcHQnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG1zZywgJ29wdF9vcHQnKQorCisgICAgZGVmIHRlc3Rfb3B0aW9uYWxfcG9zaXRpb25hbF9ub3RfaW5fbWVzc2FnZShzZWxmKToKKyAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nUFJPRycsIHVzYWdlPScnKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdyZXFfcG9zJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnb3B0aW9uYWxfcG9zaXRpb25hbCcsIG5hcmdzPSc/JywgZGVmYXVsdD0nZWdncycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXJndW1lbnRQYXJzZXJFcnJvcikgYXMgY206CisgICAgICAgICAgICBwYXJzZXIucGFyc2VfYXJncyhbXSkKKyAgICAgICAgbXNnID0gc3RyKGNtLmV4Y2VwdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtc2csICdyZXFfcG9zJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihtc2csICdvcHRpb25hbF9wb3NpdGlvbmFsJykKKworCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBDaGVjayB0aGF0IHRoZSB0eXBlIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IG9uY2UKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC00NzgyLDEzICs0ODczLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoaXRlbXMpLCBzb3J0ZWQoYXJncGFyc2UuX19hbGxfXykpCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICAjIHNpbGVuY2Ugd2FybmluZ3MgYWJvdXQgdmVyc2lvbiBhcmd1bWVudCAtIHRoZXNlIGFyZSBleHBlY3RlZAotICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygKLSAgICAgICAgICAgICgnVGhlICJ2ZXJzaW9uIiBhcmd1bWVudCB0byBBcmd1bWVudFBhcnNlciBpcyBkZXByZWNhdGVkLicsCi0gICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKSwKLSAgICAgICAgICAgICgnVGhlIChmb3JtYXR8cHJpbnQpX3ZlcnNpb24gbWV0aG9kIGlzIGRlcHJlY2F0ZWQnLAotICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykpOgotICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKICAgICAjIFJlbW92ZSBnbG9iYWwgcmVmZXJlbmNlcyB0byBhdm9pZCBsb29raW5nIGxpa2Ugd2UgaGF2ZSByZWZsZWFrcy4KICAgICBSRmlsZS5zZWVuID0ge30KICAgICBXRmlsZS5zZWVuID0gc2V0KCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkgYi9MaWIvdGVzdC90ZXN0X2FycmF5LnB5CmluZGV4IGUyNmU5YWQuLmYyMWI2OWYgMTAwNzU1Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hcnJheS5weQpAQCAtMTYsNiArMTYsMTYgQEAKIGltcG9ydCBhcnJheQogZnJvbSBhcnJheSBpbXBvcnQgX2FycmF5X3JlY29uc3RydWN0b3IgYXMgYXJyYXlfcmVjb25zdHJ1Y3RvcgogCit0cnk6CisgICAgIyBUcnkgdG8gZGV0ZXJtaW5lIGF2YWlsYWJpbGl0eSBvZiBsb25nIGxvbmcgaW5kZXBlbmRlbnRseQorICAgICMgb2YgdGhlIGFycmF5IG1vZHVsZSB1bmRlciB0ZXN0CisgICAgc3RydWN0LmNhbGNzaXplKCdAcScpCisgICAgaGF2ZV9sb25nX2xvbmcgPSBUcnVlCitleGNlcHQgc3RydWN0LmVycm9yOgorICAgIGhhdmVfbG9uZ19sb25nID0gRmFsc2UKKworc2l6ZW9mX3djaGFyID0gYXJyYXkuYXJyYXkoJ3UnKS5pdGVtc2l6ZQorCiAKIGNsYXNzIEFycmF5U3ViY2xhc3MoYXJyYXkuYXJyYXkpOgogICAgIHBhc3MKQEAgLTI0LDggKzM0LDkgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZWNvZGUsIG5ld2FyZz1Ob25lKToKICAgICAgICAgYXJyYXkuYXJyYXkuX19pbml0X18oc2VsZikKIAotdGVzdHMgPSBbXSAjIGxpc3QgdG8gYWNjdW11bGF0ZSBhbGwgdGVzdHMKIHR5cGVjb2RlcyA9ICJ1YkJoSGlJbExmZCIKK2lmIGhhdmVfbG9uZ19sb25nOgorICAgIHR5cGVjb2RlcyArPSAncVEnCiAKIGNsYXNzIEJhZENvbnN0cnVjdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTM1LDcgKzQ2LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBhcnJheS5hcnJheSwgJ3h4JykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYXJyYXkuYXJyYXksICd4JykKIAotdGVzdHMuYXBwZW5kKEJhZENvbnN0cnVjdG9yVGVzdCkKIAogIyBNYWNoaW5lIGZvcm1hdCBjb2Rlcy4KICMKQEAgLTE2NSwxMCArMTc1LDcgQEAKICAgICAgICAgICAgICAgICBtc2c9InswIXJ9ICE9IHsxIXJ9OyB0ZXN0Y2FzZT17MiFyfSIuZm9ybWF0KGEsIGIsIHRlc3RjYXNlKSkKIAogCi10ZXN0cy5hcHBlbmQoQXJyYXlSZWNvbnN0cnVjdG9yVGVzdCkKLQotCi1jbGFzcyBCYXNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBCYXNlVGVzdDoKICAgICAjIFJlcXVpcmVkIGNsYXNzIGF0dHJpYnV0ZXMgKHByb3ZpZGVkIGJ5IHN1YmNsYXNzZXMKICAgICAjIHR5cGVjb2RlOiB0aGUgdHlwZWNvZGUgdG8gdGVzdAogICAgICMgZXhhbXBsZTogYW4gaW5pdGlhbGl6ZXIgdXNhYmxlIGluIHRoZSBjb25zdHJ1Y3RvciBmb3IgdGhpcyB0eXBlCkBAIC0yMDksMTAgKzIxNiwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpWzFdLCBsZW4oYSkpCiAKICAgICBkZWYgdGVzdF9ieXRlc3dhcChzZWxmKToKLSAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIHNlbGYuZXhhbXBsZSkKKyAgICAgICAgaWYgc2VsZi50eXBlY29kZSA9PSAndSc6CisgICAgICAgICAgICBleGFtcGxlID0gJ1xVMDAxMDAxMDAnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleGFtcGxlID0gc2VsZi5leGFtcGxlCisgICAgICAgIGEgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCBleGFtcGxlKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGEuYnl0ZXN3YXAsIDQyKQogICAgICAgICBpZiBhLml0ZW1zaXplIGluICgxLCAyLCA0LCA4KToKLSAgICAgICAgICAgIGIgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCBzZWxmLmV4YW1wbGUpCisgICAgICAgICAgICBiID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSwgZXhhbXBsZSkKICAgICAgICAgICAgIGIuYnl0ZXN3YXAoKQogICAgICAgICAgICAgaWYgYS5pdGVtc2l6ZT09MToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGIpCkBAIC0yNzIsNiArMjgzLDIwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEueCwgYi54KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGEpLCB0eXBlKGIpKQogCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xlKHNlbGYpOgorICAgICAgICBkYXRhID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSwgc2VsZi5leGFtcGxlKQorICAgICAgICBvcmdpdCA9IGl0ZXIoZGF0YSkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhvcmdpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKG9yZ2l0KSwgdHlwZShpdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGxpc3QoZGF0YSkpCisKKyAgICAgICAgaWYgbGVuKGRhdGEpOgorICAgICAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgICAgIG5leHQoaXQpCisgICAgICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgbGlzdChkYXRhKVsxOl0pCisKICAgICBkZWYgdGVzdF9pbnNlcnQoc2VsZik6CiAgICAgICAgIGEgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCBzZWxmLmV4YW1wbGUpCiAgICAgICAgIGEuaW5zZXJ0KDAsIHNlbGYuZXhhbXBsZVswXSkKQEAgLTk5MSwxNCArMTAxNiwxNCBAQAogICAgIEBzdXBwb3J0LmNweXRob25fb25seQogICAgIGRlZiB0ZXN0X3NpemVvZl93aXRoX2J1ZmZlcihzZWxmKToKICAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIHNlbGYuZXhhbXBsZSkKLSAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGN2b2Jqc2l6ZSgnNFBpJykKKyAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGN2b2Jqc2l6ZSgnUG4yUGknKQogICAgICAgICBidWZmZXJfc2l6ZSA9IGEuYnVmZmVyX2luZm8oKVsxXSAqIGEuaXRlbXNpemUKICAgICAgICAgc3VwcG9ydC5jaGVja19zaXplb2Yoc2VsZiwgYSwgYmFzZXNpemUgKyBidWZmZXJfc2l6ZSkKIAogICAgIEBzdXBwb3J0LmNweXRob25fb25seQogICAgIGRlZiB0ZXN0X3NpemVvZl93aXRob3V0X2J1ZmZlcihzZWxmKToKICAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUpCi0gICAgICAgIGJhc2VzaXplID0gc3VwcG9ydC5jYWxjdm9ianNpemUoJzRQaScpCisgICAgICAgIGJhc2VzaXplID0gc3VwcG9ydC5jYWxjdm9ianNpemUoJ1BuMlBpJykKICAgICAgICAgc3VwcG9ydC5jaGVja19zaXplb2Yoc2VsZiwgYSwgYmFzZXNpemUpCiAKIApAQCAtMTAwOSw3ICsxMDM0LDcgQEAKICAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIHNlbGYuZXhhbXBsZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBhLl9fc2V0aXRlbV9fLCAwLCBzZWxmLmV4YW1wbGVbOjJdKQogCi1jbGFzcyBVbmljb2RlVGVzdChTdHJpbmdUZXN0KToKK2NsYXNzIFVuaWNvZGVUZXN0KFN0cmluZ1Rlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlY29kZSA9ICd1JwogICAgIGV4YW1wbGUgPSAnXHgwMVx1MjYzYVx4MDBcdWZlZmYnCiAgICAgc21hbGxlcmV4YW1wbGUgPSAnXHgwMVx1MjYzYVx4MDBcdWZlZmUnCkBAIC0xMDI3LDYgKzEwNTIsNyBAQAogICAgICAgICBhLmZyb211bmljb2RlKCdceDExYWJjXHhmZlx1MTIzNCcpCiAgICAgICAgIHMgPSBhLnRvdW5pY29kZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgJ1x4YTBceGMyXHUxMjM0IFx4MTFhYmNceGZmXHUxMjM0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLml0ZW1zaXplLCBzaXplb2Zfd2NoYXIpCiAKICAgICAgICAgcyA9ICdceDAwPSJcJ2FcXGJceDgwXHhmZlx1MDAwMFx1MDAwMVx1MTIzNCcKICAgICAgICAgYSA9IGFycmF5LmFycmF5KCd1JywgcykKQEAgLTEwMzYsNyArMTA2MiwxNyBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYS5mcm9tdW5pY29kZSkKIAotdGVzdHMuYXBwZW5kKFVuaWNvZGVUZXN0KQorICAgIGRlZiB0ZXN0X2lzc3VlMTcyMjMoc2VsZik6CisgICAgICAgICMgdGhpcyB1c2VkIHRvIGNyYXNoCisgICAgICAgIGlmIHNpemVvZl93Y2hhciA9PSA0OgorICAgICAgICAgICAgIyBVK0ZGRkZGRkZGIGlzIGFuIGludmFsaWQgY29kZSBwb2ludCBpbiBVbmljb2RlIDYuMAorICAgICAgICAgICAgaW52YWxpZF9zdHIgPSBiJ1x4ZmZceGZmXHhmZlx4ZmYnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgpIGNhbm5vdCBmYWlsIHdpdGggMTYtYml0IHdjaGFyX3QKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInNwZWNpZmljIHRvIDMyLWJpdCB3Y2hhcl90IikKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCd1JywgaW52YWxpZF9zdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGEudG91bmljb2RlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzdHIsIGEpCiAKIGNsYXNzIE51bWJlclRlc3QoQmFzZVRlc3QpOgogCkBAIC0xMTc4LDQ1ICsxMjE0LDQ3IEBACiAgICAgICAgICkKIAogCi1jbGFzcyBCeXRlVGVzdChTaWduZWROdW1iZXJUZXN0KToKK2NsYXNzIEJ5dGVUZXN0KFNpZ25lZE51bWJlclRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlY29kZSA9ICdiJwogICAgIG1pbml0ZW1zaXplID0gMQotdGVzdHMuYXBwZW5kKEJ5dGVUZXN0KQogCi1jbGFzcyBVbnNpZ25lZEJ5dGVUZXN0KFVuc2lnbmVkTnVtYmVyVGVzdCk6CitjbGFzcyBVbnNpZ25lZEJ5dGVUZXN0KFVuc2lnbmVkTnVtYmVyVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHR5cGVjb2RlID0gJ0InCiAgICAgbWluaXRlbXNpemUgPSAxCi10ZXN0cy5hcHBlbmQoVW5zaWduZWRCeXRlVGVzdCkKIAotY2xhc3MgU2hvcnRUZXN0KFNpZ25lZE51bWJlclRlc3QpOgorY2xhc3MgU2hvcnRUZXN0KFNpZ25lZE51bWJlclRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlY29kZSA9ICdoJwogICAgIG1pbml0ZW1zaXplID0gMgotdGVzdHMuYXBwZW5kKFNob3J0VGVzdCkKIAotY2xhc3MgVW5zaWduZWRTaG9ydFRlc3QoVW5zaWduZWROdW1iZXJUZXN0KToKK2NsYXNzIFVuc2lnbmVkU2hvcnRUZXN0KFVuc2lnbmVkTnVtYmVyVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHR5cGVjb2RlID0gJ0gnCiAgICAgbWluaXRlbXNpemUgPSAyCi10ZXN0cy5hcHBlbmQoVW5zaWduZWRTaG9ydFRlc3QpCiAKLWNsYXNzIEludFRlc3QoU2lnbmVkTnVtYmVyVGVzdCk6CitjbGFzcyBJbnRUZXN0KFNpZ25lZE51bWJlclRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlY29kZSA9ICdpJwogICAgIG1pbml0ZW1zaXplID0gMgotdGVzdHMuYXBwZW5kKEludFRlc3QpCiAKLWNsYXNzIFVuc2lnbmVkSW50VGVzdChVbnNpZ25lZE51bWJlclRlc3QpOgorY2xhc3MgVW5zaWduZWRJbnRUZXN0KFVuc2lnbmVkTnVtYmVyVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHR5cGVjb2RlID0gJ0knCiAgICAgbWluaXRlbXNpemUgPSAyCi10ZXN0cy5hcHBlbmQoVW5zaWduZWRJbnRUZXN0KQogCi1jbGFzcyBMb25nVGVzdChTaWduZWROdW1iZXJUZXN0KToKK2NsYXNzIExvbmdUZXN0KFNpZ25lZE51bWJlclRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlY29kZSA9ICdsJwogICAgIG1pbml0ZW1zaXplID0gNAotdGVzdHMuYXBwZW5kKExvbmdUZXN0KQogCi1jbGFzcyBVbnNpZ25lZExvbmdUZXN0KFVuc2lnbmVkTnVtYmVyVGVzdCk6CitjbGFzcyBVbnNpZ25lZExvbmdUZXN0KFVuc2lnbmVkTnVtYmVyVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHR5cGVjb2RlID0gJ0wnCiAgICAgbWluaXRlbXNpemUgPSA0Ci10ZXN0cy5hcHBlbmQoVW5zaWduZWRMb25nVGVzdCkKKworQHVuaXR0ZXN0LnNraXBJZihub3QgaGF2ZV9sb25nX2xvbmcsICduZWVkIGxvbmcgbG9uZyBzdXBwb3J0JykKK2NsYXNzIExvbmdMb25nVGVzdChTaWduZWROdW1iZXJUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgdHlwZWNvZGUgPSAncScKKyAgICBtaW5pdGVtc2l6ZSA9IDgKKworQHVuaXR0ZXN0LnNraXBJZihub3QgaGF2ZV9sb25nX2xvbmcsICduZWVkIGxvbmcgbG9uZyBzdXBwb3J0JykKK2NsYXNzIFVuc2lnbmVkTG9uZ0xvbmdUZXN0KFVuc2lnbmVkTnVtYmVyVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHR5cGVjb2RlID0gJ1EnCisgICAgbWluaXRlbXNpemUgPSA4CiAKIGNsYXNzIEZQVGVzdChOdW1iZXJUZXN0KToKICAgICBleGFtcGxlID0gWy00Mi4wLCAwLCA0MiwgMWU1LCAtMWUxMF0KQEAgLTEyNDMsMTIgKzEyODEsMTEgQEAKICAgICAgICAgICAgIGIuYnl0ZXN3YXAoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBiKQogCi1jbGFzcyBGbG9hdFRlc3QoRlBUZXN0KToKK2NsYXNzIEZsb2F0VGVzdChGUFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlY29kZSA9ICdmJwogICAgIG1pbml0ZW1zaXplID0gNAotdGVzdHMuYXBwZW5kKEZsb2F0VGVzdCkKIAotY2xhc3MgRG91YmxlVGVzdChGUFRlc3QpOgorY2xhc3MgRG91YmxlVGVzdChGUFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlY29kZSA9ICdkJwogICAgIG1pbml0ZW1zaXplID0gOAogCkBAIC0xMjY5LDIyICsxMzA2LDYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiQXJyYXkgb2Ygc2l6ZSA+IG1heHNpemUgY3JlYXRlZCAtIE1lbW9yeUVycm9yIGV4cGVjdGVkIikKIAotdGVzdHMuYXBwZW5kKERvdWJsZVRlc3QpCi0KLWRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBpbXBvcnQgc3lzCi0KLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdHMpCi0KLSAgICAjIHZlcmlmeSByZWZlcmVuY2UgY291bnRpbmcKLSAgICBpZiB2ZXJib3NlIGFuZCBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKLSAgICAgICAgaW1wb3J0IGdjCi0gICAgICAgIGNvdW50cyA9IFtOb25lXSAqIDUKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGNvdW50cykpOgotICAgICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RzKQotICAgICAgICAgICAgZ2MuY29sbGVjdCgpCi0gICAgICAgICAgICBjb3VudHNbaV0gPSBzeXMuZ2V0dG90YWxyZWZjb3VudCgpCi0gICAgICAgIHByaW50KGNvdW50cykKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4odmVyYm9zZT1UcnVlKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3QucHkgYi9MaWIvdGVzdC90ZXN0X2FzdC5weQppbmRleCAyODg3MDkyLi5kYzI0MTI2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FzdC5weQpAQCAtMSw2ICsxLDEwIEBACi1pbXBvcnQgc3lzLCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAogaW1wb3J0IGFzdAoraW1wb3J0IHdlYWtyZWYKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGRlZiB0b190dXBsZSh0KToKICAgICBpZiB0IGlzIE5vbmUgb3IgaXNpbnN0YW5jZSh0LCAoc3RyLCBpbnQsIGNvbXBsZXgpKToKQEAgLTUyLDYgKzU2LDkgQEAKICAgICAid2hpbGUgdjpwYXNzIiwKICAgICAjIElmCiAgICAgImlmIHY6cGFzcyIsCisgICAgIyBXaXRoCisgICAgIndpdGggeCBhcyB5OiBwYXNzIiwKKyAgICAid2l0aCB4IGFzIHksIHogYXMgcTogcGFzcyIsCiAgICAgIyBSYWlzZQogICAgICJyYWlzZSBFeGNlcHRpb24oJ3N0cmluZycpIiwKICAgICAjIFRyeUV4Y2VwdApAQCAtMTkxLDYgKzE5OCw5IEBACiAgICAgZGVmIHRlc3RfQVNUX29iamVjdHMoc2VsZik6CiAgICAgICAgIHggPSBhc3QuQVNUKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4Ll9maWVsZHMsICgpKQorICAgICAgICB4LmZvb2JhciA9IDQyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5mb29iYXIsIDQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguX19kaWN0X19bImZvb2JhciJdLCA0MikKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKICAgICAgICAgICAgIHgudmFyYXJnCkBAIC0xOTksNiArMjA5LDE3IEBACiAgICAgICAgICAgICAjICJfYXN0LkFTVCBjb25zdHJ1Y3RvciB0YWtlcyAwIHBvc2l0aW9uYWwgYXJndW1lbnRzIgogICAgICAgICAgICAgYXN0LkFTVCgyKQogCisgICAgZGVmIHRlc3RfQVNUX2dhcmJhZ2VfY29sbGVjdGlvbihzZWxmKToKKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYSA9IGFzdC5BU1QoKQorICAgICAgICBhLnggPSBYKCkKKyAgICAgICAgYS54LmEgPSBhCisgICAgICAgIHJlZiA9IHdlYWtyZWYucmVmKGEueCkKKyAgICAgICAgZGVsIGEKKyAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVmKCkpCisKICAgICBkZWYgdGVzdF9zbmlwcGV0cyhzZWxmKToKICAgICAgICAgZm9yIGlucHV0LCBvdXRwdXQsIGtpbmQgaW4gKChleGVjX3Rlc3RzLCBleGVjX3Jlc3VsdHMsICJleGVjIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2luZ2xlX3Rlc3RzLCBzaW5nbGVfcmVzdWx0cywgInNpbmdsZSIpLApAQCAtMzc4LDYgKzM5OSwxNCBAQAogICAgICAgICAgICAgY29tcGlsZShtLCAiPHRlc3Q+IiwgImV4ZWMiKQogICAgICAgICBzZWxmLmFzc2VydEluKCJzdHJpbmcgbXVzdCBiZSBvZiB0eXBlIHN0ciIsIHN0cihjbS5leGNlcHRpb24pKQogCisgICAgZGVmIHRlc3RfZW1wdHlfeWllbGRfZnJvbShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAxNjU0NjogeWllbGQgZnJvbSB2YWx1ZSBpcyBub3Qgb3B0aW9uYWwuCisgICAgICAgIGVtcHR5X3lpZWxkX2Zyb20gPSBhc3QucGFyc2UoImRlZiBmKCk6XG4geWllbGQgZnJvbSBnKCkiKQorICAgICAgICBlbXB0eV95aWVsZF9mcm9tLmJvZHlbMF0uYm9keVswXS52YWx1ZS52YWx1ZSA9IE5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGNvbXBpbGUoZW1wdHlfeWllbGRfZnJvbSwgIjx0ZXN0PiIsICJleGVjIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiZmllbGQgdmFsdWUgaXMgcmVxdWlyZWQiLCBzdHIoY20uZXhjZXB0aW9uKSkKKwogCiBjbGFzcyBBU1RIZWxwZXJzX1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0zOTAsNyArNDE5LDkgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgMS8wCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgYXN0LnBhcnNlLCByIidcVSciKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICBhc3QubGl0ZXJhbF9ldmFsKHIiJ1xVJyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShlLmV4Y2VwdGlvbi5fX2NvbnRleHRfXykKIAogICAgIGRlZiB0ZXN0X2R1bXAoc2VsZik6CiAgICAgICAgIG5vZGUgPSBhc3QucGFyc2UoJ3NwYW0oZWdncywgImFuZCBjaGVlc2UiKScpCkBAIC01MDQsOCArNTM1LDQxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCJpbnZhbGlkIGludGVnZXIgdmFsdWU6IE5vbmUiLCBzdHIoY20uZXhjZXB0aW9uKSkKIAogCitjbGFzcyBBU1RWYWxpZGF0b3JUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgbW9kKHNlbGYsIG1vZCwgbXNnPU5vbmUsIG1vZGU9ImV4ZWMiLCAqLCBleGM9VmFsdWVFcnJvcik6CisgICAgICAgIG1vZC5saW5lbm8gPSBtb2QuY29sX29mZnNldCA9IDAKKyAgICAgICAgYXN0LmZpeF9taXNzaW5nX2xvY2F0aW9ucyhtb2QpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXhjKSBhcyBjbToKKyAgICAgICAgICAgIGNvbXBpbGUobW9kLCAiPHRlc3Q+IiwgbW9kZSkKKyAgICAgICAgaWYgbXNnIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihtc2csIHN0cihjbS5leGNlcHRpb24pKQorCisgICAgZGVmIGV4cHIoc2VsZiwgbm9kZSwgbXNnPU5vbmUsICosIGV4Yz1WYWx1ZUVycm9yKToKKyAgICAgICAgbW9kID0gYXN0Lk1vZHVsZShbYXN0LkV4cHIobm9kZSldKQorICAgICAgICBzZWxmLm1vZChtb2QsIG1zZywgZXhjPWV4YykKKworICAgIGRlZiBzdG10KHNlbGYsIHN0bXQsIG1zZz1Ob25lKToKKyAgICAgICAgbW9kID0gYXN0Lk1vZHVsZShbc3RtdF0pCisgICAgICAgIHNlbGYubW9kKG1vZCwgbXNnKQorCisgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgorICAgICAgICBtID0gYXN0LkludGVyYWN0aXZlKFthc3QuRXhwcihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSldKQorICAgICAgICBzZWxmLm1vZChtLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIsICJzaW5nbGUiKQorICAgICAgICBtID0gYXN0LkV4cHJlc3Npb24oYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpCisgICAgICAgIHNlbGYubW9kKG0sICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IiwgImV2YWwiKQorCisgICAgZGVmIF9jaGVja19hcmd1bWVudHMoc2VsZiwgZmFjLCBjaGVjayk6CisgICAgICAgIGRlZiBhcmd1bWVudHMoYXJncz1Ob25lLCB2YXJhcmc9Tm9uZSwgdmFyYXJnYW5ub3RhdGlvbj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGt3b25seWFyZ3M9Tm9uZSwga3dhcmc9Tm9uZSwga3dhcmdhbm5vdGF0aW9uPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdHM9Tm9uZSwga3dfZGVmYXVsdHM9Tm9uZSk6CisgICAgICAgICAgICBpZiBhcmdzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYXJncyA9IFtdCisgICAgICAgICAgICBpZiBrd29ubHlhcmdzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAga3dvbmx5YXJncyA9IFtdCisgICAgICAgICAgICBpZiBkZWZhdWx0cyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGRlZmF1bHRzID0gW10KKyAgICAgICAgICAgIGlmIGt3X2RlZmF1bHRzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAga3dfZGVmYXVsdHMgPSBbXQorICAgICAgICAgICAgYXJncyA9IGFzdC5hcmd1bWVudHMoYXJncywgdmFyYXJnLCB2YXJhcmdhbm5vdGF0aW9uLCBrd29ubHlhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmcsIGt3YXJnYW5ub3RhdGlvbiwgZGVmYXVsdHMsIGt3X2RlZmF1bHRzKQorICAgICAgICAgICAgcmV0dXJuIGZhYyhhcmdzKQorICAgICAgICBhcmdzID0gW2FzdC5hcmcoIngiLCBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSldCisgICAgICAgIGNoZWNrKGFyZ3VtZW50cyhhcmdzPWFyZ3MpLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGNoZWNrKGFyZ3VtZW50cyh2YXJhcmdhbm5vdGF0aW9uPWFzdC5OdW0oMykpLAorICAgICAgICAgICAgICAidmFyYXJnYW5ub3RhdGlvbiBidXQgbm8gdmFyYXJnIikKKyAgICAgICAgY2hlY2soYXJndW1lbnRzKHZhcmFyZ2Fubm90YXRpb249YXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIHZhcmFyZz0ieCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgY2hlY2soYXJndW1lbnRzKGt3b25seWFyZ3M9YXJncyksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgY2hlY2soYXJndW1lbnRzKGt3YXJnYW5ub3RhdGlvbj1hc3QuTnVtKDQyKSksCisgICAgICAgICAgICAgICAgICAgICAgICJrd2FyZ2Fubm90YXRpb24gYnV0IG5vIGt3YXJnIikKKyAgICAgICAgY2hlY2soYXJndW1lbnRzKGt3YXJnYW5ub3RhdGlvbj1hc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmc9IngiKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBjaGVjayhhcmd1bWVudHMoZGVmYXVsdHM9W2FzdC5OdW0oMyldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIm1vcmUgcG9zaXRpb25hbCBkZWZhdWx0cyB0aGFuIGFyZ3MiKQorICAgICAgICBjaGVjayhhcmd1bWVudHMoa3dfZGVmYXVsdHM9W2FzdC5OdW0oNCldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgImxlbmd0aCBvZiBrd29ubHlhcmdzIGlzIG5vdCB0aGUgc2FtZSBhcyBrd19kZWZhdWx0cyIpCisgICAgICAgIGFyZ3MgPSBbYXN0LmFyZygieCIsIGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSkpXQorICAgICAgICBjaGVjayhhcmd1bWVudHMoYXJncz1hcmdzLCBkZWZhdWx0cz1bYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBhcmdzID0gW2FzdC5hcmcoImEiLCBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpKSwKKyAgICAgICAgICAgICAgICBhc3QuYXJnKCJiIiwgYXN0Lk5hbWUoInkiLCBhc3QuTG9hZCgpKSldCisgICAgICAgIGNoZWNrKGFyZ3VtZW50cyhrd29ubHlhcmdzPWFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGt3X2RlZmF1bHRzPVtOb25lLCBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9mdW5jZGVmKHNlbGYpOgorICAgICAgICBhID0gYXN0LmFyZ3VtZW50cyhbXSwgTm9uZSwgTm9uZSwgW10sIE5vbmUsIE5vbmUsIFtdLCBbXSkKKyAgICAgICAgZiA9IGFzdC5GdW5jdGlvbkRlZigieCIsIGEsIFtdLCBbXSwgTm9uZSkKKyAgICAgICAgc2VsZi5zdG10KGYsICJlbXB0eSBib2R5IG9uIEZ1bmN0aW9uRGVmIikKKyAgICAgICAgZiA9IGFzdC5GdW5jdGlvbkRlZigieCIsIGEsIFthc3QuUGFzcygpXSwgW2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lKQorICAgICAgICBzZWxmLnN0bXQoZiwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBmID0gYXN0LkZ1bmN0aW9uRGVmKCJ4IiwgYSwgW2FzdC5QYXNzKCldLCBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSkKKyAgICAgICAgc2VsZi5zdG10KGYsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgZGVmIGZhYyhhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBhc3QuRnVuY3Rpb25EZWYoIngiLCBhcmdzLCBbYXN0LlBhc3MoKV0sIFtdLCBOb25lKQorICAgICAgICBzZWxmLl9jaGVja19hcmd1bWVudHMoZmFjLCBzZWxmLnN0bXQpCisKKyAgICBkZWYgdGVzdF9jbGFzc2RlZihzZWxmKToKKyAgICAgICAgZGVmIGNscyhiYXNlcz1Ob25lLCBrZXl3b3Jkcz1Ob25lLCBzdGFyYXJncz1Ob25lLCBrd2FyZ3M9Tm9uZSwKKyAgICAgICAgICAgICAgICBib2R5PU5vbmUsIGRlY29yYXRvcl9saXN0PU5vbmUpOgorICAgICAgICAgICAgaWYgYmFzZXMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBiYXNlcyA9IFtdCisgICAgICAgICAgICBpZiBrZXl3b3JkcyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGtleXdvcmRzID0gW10KKyAgICAgICAgICAgIGlmIGJvZHkgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBib2R5ID0gW2FzdC5QYXNzKCldCisgICAgICAgICAgICBpZiBkZWNvcmF0b3JfbGlzdCBpcyBOb25lOgorICAgICAgICAgICAgICAgIGRlY29yYXRvcl9saXN0ID0gW10KKyAgICAgICAgICAgIHJldHVybiBhc3QuQ2xhc3NEZWYoIm15Y2xhc3MiLCBiYXNlcywga2V5d29yZHMsIHN0YXJhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3MsIGJvZHksIGRlY29yYXRvcl9saXN0KQorICAgICAgICBzZWxmLnN0bXQoY2xzKGJhc2VzPVthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0pLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBzZWxmLnN0bXQoY2xzKGtleXdvcmRzPVthc3Qua2V5d29yZCgieCIsIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKV0pLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBzZWxmLnN0bXQoY2xzKHN0YXJhcmdzPWFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgc2VsZi5zdG10KGNscyhrd2FyZ3M9YXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBzZWxmLnN0bXQoY2xzKGJvZHk9W10pLCAiZW1wdHkgYm9keSBvbiBDbGFzc0RlZiIpCisgICAgICAgIHNlbGYuc3RtdChjbHMoYm9keT1bTm9uZV0pLCAiTm9uZSBkaXNhbGxvd2VkIikKKyAgICAgICAgc2VsZi5zdG10KGNscyhkZWNvcmF0b3JfbGlzdD1bYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2RlbGV0ZShzZWxmKToKKyAgICAgICAgc2VsZi5zdG10KGFzdC5EZWxldGUoW10pLCAiZW1wdHkgdGFyZ2V0cyBvbiBEZWxldGUiKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkRlbGV0ZShbTm9uZV0pLCAiTm9uZSBkaXNhbGxvd2VkIikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5EZWxldGUoW2FzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSldKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgRGVsIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfYXNzaWduKHNlbGYpOgorICAgICAgICBzZWxmLnN0bXQoYXN0LkFzc2lnbihbXSwgYXN0Lk51bSgzKSksICJlbXB0eSB0YXJnZXRzIG9uIEFzc2lnbiIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuQXNzaWduKFtOb25lXSwgYXN0Lk51bSgzKSksICJOb25lIGRpc2FsbG93ZWQiKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkFzc2lnbihbYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKV0sIGFzdC5OdW0oMykpLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBTdG9yZSBjb250ZXh0IikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Bc3NpZ24oW2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInkiLCBhc3QuU3RvcmUoKSkpLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfYXVnYXNzaWduKHNlbGYpOgorICAgICAgICBhdWcgPSBhc3QuQXVnQXNzaWduKGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksIGFzdC5BZGQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieSIsIGFzdC5Mb2FkKCkpKQorICAgICAgICBzZWxmLnN0bXQoYXVnLCAibXVzdCBoYXZlIFN0b3JlIGNvbnRleHQiKQorICAgICAgICBhdWcgPSBhc3QuQXVnQXNzaWduKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBhc3QuQWRkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInkiLCBhc3QuU3RvcmUoKSkpCisgICAgICAgIHNlbGYuc3RtdChhdWcsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2ZvcihzZWxmKToKKyAgICAgICAgeCA9IGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpCisgICAgICAgIHkgPSBhc3QuTmFtZSgieSIsIGFzdC5Mb2FkKCkpCisgICAgICAgIHAgPSBhc3QuUGFzcygpCisgICAgICAgIHNlbGYuc3RtdChhc3QuRm9yKHgsIHksIFtdLCBbXSksICJlbXB0eSBib2R5IG9uIEZvciIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuRm9yKGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksIHksIFtwXSwgW10pLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBTdG9yZSBjb250ZXh0IikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Gb3IoeCwgYXN0Lk5hbWUoInkiLCBhc3QuU3RvcmUoKSksIFtwXSwgW10pLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBlID0gYXN0LkV4cHIoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpCisgICAgICAgIHNlbGYuc3RtdChhc3QuRm9yKHgsIHksIFtlXSwgW10pLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuRm9yKHgsIHksIFtwXSwgW2VdKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3Rfd2hpbGUoc2VsZik6CisgICAgICAgIHNlbGYuc3RtdChhc3QuV2hpbGUoYXN0Lk51bSgzKSwgW10sIFtdKSwgImVtcHR5IGJvZHkgb24gV2hpbGUiKQorICAgICAgICBzZWxmLnN0bXQoYXN0LldoaWxlKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBbYXN0LlBhc3MoKV0sIFtdKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5XaGlsZShhc3QuTnVtKDMpLCBbYXN0LlBhc3MoKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthc3QuRXhwcihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfaWYoc2VsZik6CisgICAgICAgIHNlbGYuc3RtdChhc3QuSWYoYXN0Lk51bSgzKSwgW10sIFtdKSwgImVtcHR5IGJvZHkgb24gSWYiKQorICAgICAgICBpID0gYXN0LklmKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBbYXN0LlBhc3MoKV0sIFtdKQorICAgICAgICBzZWxmLnN0bXQoaSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBpID0gYXN0LklmKGFzdC5OdW0oMyksIFthc3QuRXhwcihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSldLCBbXSkKKyAgICAgICAgc2VsZi5zdG10KGksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgaSA9IGFzdC5JZihhc3QuTnVtKDMpLCBbYXN0LlBhc3MoKV0sCisgICAgICAgICAgICAgICAgICAgW2FzdC5FeHByKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKV0pCisgICAgICAgIHNlbGYuc3RtdChpLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF93aXRoKHNlbGYpOgorICAgICAgICBwID0gYXN0LlBhc3MoKQorICAgICAgICBzZWxmLnN0bXQoYXN0LldpdGgoW10sIFtwXSksICJlbXB0eSBpdGVtcyBvbiBXaXRoIikKKyAgICAgICAgaSA9IGFzdC53aXRoaXRlbShhc3QuTnVtKDMpLCBOb25lKQorICAgICAgICBzZWxmLnN0bXQoYXN0LldpdGgoW2ldLCBbXSksICJlbXB0eSBib2R5IG9uIFdpdGgiKQorICAgICAgICBpID0gYXN0LndpdGhpdGVtKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBOb25lKQorICAgICAgICBzZWxmLnN0bXQoYXN0LldpdGgoW2ldLCBbcF0pLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGkgPSBhc3Qud2l0aGl0ZW0oYXN0Lk51bSgzKSwgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSkKKyAgICAgICAgc2VsZi5zdG10KGFzdC5XaXRoKFtpXSwgW3BdKSwgIm11c3QgaGF2ZSBTdG9yZSBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X3JhaXNlKHNlbGYpOgorICAgICAgICByID0gYXN0LlJhaXNlKE5vbmUsIGFzdC5OdW0oMykpCisgICAgICAgIHNlbGYuc3RtdChyLCAiUmFpc2Ugd2l0aCBjYXVzZSBidXQgbm8gZXhjZXB0aW9uIikKKyAgICAgICAgciA9IGFzdC5SYWlzZShhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgTm9uZSkKKyAgICAgICAgc2VsZi5zdG10KHIsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgciA9IGFzdC5SYWlzZShhc3QuTnVtKDQpLCBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSkKKyAgICAgICAgc2VsZi5zdG10KHIsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X3RyeShzZWxmKToKKyAgICAgICAgcCA9IGFzdC5QYXNzKCkKKyAgICAgICAgdCA9IGFzdC5UcnkoW10sIFtdLCBbXSwgW3BdKQorICAgICAgICBzZWxmLnN0bXQodCwgImVtcHR5IGJvZHkgb24gVHJ5IikKKyAgICAgICAgdCA9IGFzdC5UcnkoW2FzdC5FeHByKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKV0sIFtdLCBbXSwgW3BdKQorICAgICAgICBzZWxmLnN0bXQodCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICB0ID0gYXN0LlRyeShbcF0sIFtdLCBbXSwgW10pCisgICAgICAgIHNlbGYuc3RtdCh0LCAiVHJ5IGhhcyBuZWl0aGVyIGV4Y2VwdCBoYW5kbGVycyBub3IgZmluYWxib2R5IikKKyAgICAgICAgdCA9IGFzdC5UcnkoW3BdLCBbXSwgW3BdLCBbcF0pCisgICAgICAgIHNlbGYuc3RtdCh0LCAiVHJ5IGhhcyBvcmVsc2UgYnV0IG5vIGV4Y2VwdCBoYW5kbGVycyIpCisgICAgICAgIHQgPSBhc3QuVHJ5KFtwXSwgW2FzdC5FeGNlcHRIYW5kbGVyKE5vbmUsICJ4IiwgW10pXSwgW10sIFtdKQorICAgICAgICBzZWxmLnN0bXQodCwgImVtcHR5IGJvZHkgb24gRXhjZXB0SGFuZGxlciIpCisgICAgICAgIGUgPSBbYXN0LkV4Y2VwdEhhbmRsZXIoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksICJ5IiwgW3BdKV0KKyAgICAgICAgc2VsZi5zdG10KGFzdC5UcnkoW3BdLCBlLCBbXSwgW10pLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGUgPSBbYXN0LkV4Y2VwdEhhbmRsZXIoTm9uZSwgIngiLCBbcF0pXQorICAgICAgICB0ID0gYXN0LlRyeShbcF0sIGUsIFthc3QuRXhwcihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSldLCBbcF0pCisgICAgICAgIHNlbGYuc3RtdCh0LCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHQgPSBhc3QuVHJ5KFtwXSwgZSwgW3BdLCBbYXN0LkV4cHIoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXSkKKyAgICAgICAgc2VsZi5zdG10KHQsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2Fzc2VydChzZWxmKToKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Bc3NlcnQoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIE5vbmUpLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBhc3NydCA9IGFzdC5Bc3NlcnQoYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ5IiwgYXN0LlN0b3JlKCkpKQorICAgICAgICBzZWxmLnN0bXQoYXNzcnQsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2ltcG9ydChzZWxmKToKKyAgICAgICAgc2VsZi5zdG10KGFzdC5JbXBvcnQoW10pLCAiZW1wdHkgbmFtZXMgb24gSW1wb3J0IikKKworICAgIGRlZiB0ZXN0X2ltcG9ydGZyb20oc2VsZik6CisgICAgICAgIGltcCA9IGFzdC5JbXBvcnRGcm9tKE5vbmUsIFthc3QuYWxpYXMoIngiLCBOb25lKV0sIC00MikKKyAgICAgICAgc2VsZi5zdG10KGltcCwgImxldmVsIGxlc3MgdGhhbiAtMSIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuSW1wb3J0RnJvbShOb25lLCBbXSwgMCksICJlbXB0eSBuYW1lcyBvbiBJbXBvcnRGcm9tIikKKworICAgIGRlZiB0ZXN0X2dsb2JhbChzZWxmKToKKyAgICAgICAgc2VsZi5zdG10KGFzdC5HbG9iYWwoW10pLCAiZW1wdHkgbmFtZXMgb24gR2xvYmFsIikKKworICAgIGRlZiB0ZXN0X25vbmxvY2FsKHNlbGYpOgorICAgICAgICBzZWxmLnN0bXQoYXN0Lk5vbmxvY2FsKFtdKSwgImVtcHR5IG5hbWVzIG9uIE5vbmxvY2FsIikKKworICAgIGRlZiB0ZXN0X2V4cHIoc2VsZik6CisgICAgICAgIGUgPSBhc3QuRXhwcihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSkKKyAgICAgICAgc2VsZi5zdG10KGUsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2Jvb2xvcChzZWxmKToKKyAgICAgICAgYiA9IGFzdC5Cb29sT3AoYXN0LkFuZCgpLCBbXSkKKyAgICAgICAgc2VsZi5leHByKGIsICJsZXNzIHRoYW4gMiB2YWx1ZXMiKQorICAgICAgICBiID0gYXN0LkJvb2xPcChhc3QuQW5kKCksIFthc3QuTnVtKDMpXSkKKyAgICAgICAgc2VsZi5leHByKGIsICJsZXNzIHRoYW4gMiB2YWx1ZXMiKQorICAgICAgICBiID0gYXN0LkJvb2xPcChhc3QuQW5kKCksIFthc3QuTnVtKDQpLCBOb25lXSkKKyAgICAgICAgc2VsZi5leHByKGIsICJOb25lIGRpc2FsbG93ZWQiKQorICAgICAgICBiID0gYXN0LkJvb2xPcChhc3QuQW5kKCksIFthc3QuTnVtKDQpLCBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0pCisgICAgICAgIHNlbGYuZXhwcihiLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF91bmFyeW9wKHNlbGYpOgorICAgICAgICB1ID0gYXN0LlVuYXJ5T3AoYXN0Lk5vdCgpLCBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSkKKyAgICAgICAgc2VsZi5leHByKHUsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2xhbWJkYShzZWxmKToKKyAgICAgICAgYSA9IGFzdC5hcmd1bWVudHMoW10sIE5vbmUsIE5vbmUsIFtdLCBOb25lLCBOb25lLCBbXSwgW10pCisgICAgICAgIHNlbGYuZXhwcihhc3QuTGFtYmRhKGEsIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgZGVmIGZhYyhhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBhc3QuTGFtYmRhKGFyZ3MsIGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSkpCisgICAgICAgIHNlbGYuX2NoZWNrX2FyZ3VtZW50cyhmYWMsIHNlbGYuZXhwcikKKworICAgIGRlZiB0ZXN0X2lmZXhwKHNlbGYpOgorICAgICAgICBsID0gYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKQorICAgICAgICBzID0gYXN0Lk5hbWUoInkiLCBhc3QuU3RvcmUoKSkKKyAgICAgICAgZm9yIGFyZ3MgaW4gKHMsIGwsIGwpLCAobCwgcywgbCksIChsLCBsLCBzKToKKyAgICAgICAgICAgIHNlbGYuZXhwcihhc3QuSWZFeHAoKmFyZ3MpLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9kaWN0KHNlbGYpOgorICAgICAgICBkID0gYXN0LkRpY3QoW10sIFthc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpXSkKKyAgICAgICAgc2VsZi5leHByKGQsICJzYW1lIG51bWJlciBvZiBrZXlzIGFzIHZhbHVlcyIpCisgICAgICAgIGQgPSBhc3QuRGljdChbTm9uZV0sIFthc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpXSkKKyAgICAgICAgc2VsZi5leHByKGQsICJOb25lIGRpc2FsbG93ZWQiKQorICAgICAgICBkID0gYXN0LkRpY3QoW2FzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSldLCBbTm9uZV0pCisgICAgICAgIHNlbGYuZXhwcihkLCAiTm9uZSBkaXNhbGxvd2VkIikKKworICAgIGRlZiB0ZXN0X3NldChzZWxmKToKKyAgICAgICAgc2VsZi5leHByKGFzdC5TZXQoW05vbmVdKSwgIk5vbmUgZGlzYWxsb3dlZCIpCisgICAgICAgIHMgPSBhc3QuU2V0KFthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0pCisgICAgICAgIHNlbGYuZXhwcihzLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgX2NoZWNrX2NvbXByZWhlbnNpb24oc2VsZiwgZmFjKToKKyAgICAgICAgc2VsZi5leHByKGZhYyhbXSksICJjb21wcmVoZW5zaW9uIHdpdGggbm8gZ2VuZXJhdG9ycyIpCisgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbihhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwgW10pCisgICAgICAgIHNlbGYuZXhwcihmYWMoW2ddKSwgIm11c3QgaGF2ZSBTdG9yZSBjb250ZXh0IikKKyAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIFtdKQorICAgICAgICBzZWxmLmV4cHIoZmFjKFtnXSksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgeCA9IGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpCisgICAgICAgIHkgPSBhc3QuTmFtZSgieSIsIGFzdC5Mb2FkKCkpCisgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbih4LCB5LCBbTm9uZV0pCisgICAgICAgIHNlbGYuZXhwcihmYWMoW2ddKSwgIk5vbmUgZGlzYWxsb3dlZCIpCisgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbih4LCB5LCBbYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldKQorICAgICAgICBzZWxmLmV4cHIoZmFjKFtnXSksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiBfc2ltcGxlX2NvbXAoc2VsZiwgZmFjKToKKyAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwgW10pCisgICAgICAgIHNlbGYuZXhwcihmYWMoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIFtnXSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGRlZiB3cmFwKGdlbnMpOgorICAgICAgICAgICAgcmV0dXJuIGZhYyhhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgZ2VucykKKyAgICAgICAgc2VsZi5fY2hlY2tfY29tcHJlaGVuc2lvbih3cmFwKQorCisgICAgZGVmIHRlc3RfbGlzdGNvbXAoc2VsZik6CisgICAgICAgIHNlbGYuX3NpbXBsZV9jb21wKGFzdC5MaXN0Q29tcCkKKworICAgIGRlZiB0ZXN0X3NldGNvbXAoc2VsZik6CisgICAgICAgIHNlbGYuX3NpbXBsZV9jb21wKGFzdC5TZXRDb21wKQorCisgICAgZGVmIHRlc3RfZ2VuZXJhdG9yZXhwKHNlbGYpOgorICAgICAgICBzZWxmLl9zaW1wbGVfY29tcChhc3QuR2VuZXJhdG9yRXhwKQorCisgICAgZGVmIHRlc3RfZGljdGNvbXAoc2VsZik6CisgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbihhc3QuTmFtZSgieSIsIGFzdC5TdG9yZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJwIiwgYXN0LkxvYWQoKSksIFtdKQorICAgICAgICBjID0gYXN0LkRpY3RDb21wKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ5IiwgYXN0LkxvYWQoKSksIFtnXSkKKyAgICAgICAgc2VsZi5leHByKGMsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgYyA9IGFzdC5EaWN0Q29tcChhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ5IiwgYXN0LlN0b3JlKCkpLCBbZ10pCisgICAgICAgIHNlbGYuZXhwcihjLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGRlZiBmYWN0b3J5KGNvbXBzKToKKyAgICAgICAgICAgIGsgPSBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpCisgICAgICAgICAgICB2ID0gYXN0Lk5hbWUoInkiLCBhc3QuTG9hZCgpKQorICAgICAgICAgICAgcmV0dXJuIGFzdC5EaWN0Q29tcChrLCB2LCBjb21wcykKKyAgICAgICAgc2VsZi5fY2hlY2tfY29tcHJlaGVuc2lvbihmYWN0b3J5KQorCisgICAgZGVmIHRlc3RfeWllbGQoc2VsZik6CisgICAgICAgIHNlbGYuZXhwcihhc3QuWWllbGQoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpLCAibXVzdCBoYXZlIExvYWQiKQorICAgICAgICBzZWxmLmV4cHIoYXN0LllpZWxkRnJvbShhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSksICJtdXN0IGhhdmUgTG9hZCIpCisKKyAgICBkZWYgdGVzdF9jb21wYXJlKHNlbGYpOgorICAgICAgICBsZWZ0ID0gYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKQorICAgICAgICBjb21wID0gYXN0LkNvbXBhcmUobGVmdCwgW2FzdC5JbigpXSwgW10pCisgICAgICAgIHNlbGYuZXhwcihjb21wLCAibm8gY29tcGFyYXRvcnMiKQorICAgICAgICBjb21wID0gYXN0LkNvbXBhcmUobGVmdCwgW2FzdC5JbigpXSwgW2FzdC5OdW0oNCksIGFzdC5OdW0oNSldKQorICAgICAgICBzZWxmLmV4cHIoY29tcCwgImRpZmZlcmVudCBudW1iZXIgb2YgY29tcGFyYXRvcnMgYW5kIG9wZXJhbmRzIikKKyAgICAgICAgY29tcCA9IGFzdC5Db21wYXJlKGFzdC5OdW0oImJsYWgiKSwgW2FzdC5JbigpXSwgW2xlZnRdKQorICAgICAgICBzZWxmLmV4cHIoY29tcCwgIm5vbi1udW1lcmljIiwgZXhjPVR5cGVFcnJvcikKKyAgICAgICAgY29tcCA9IGFzdC5Db21wYXJlKGxlZnQsIFthc3QuSW4oKV0sIFthc3QuTnVtKCJibGFoIildKQorICAgICAgICBzZWxmLmV4cHIoY29tcCwgIm5vbi1udW1lcmljIiwgZXhjPVR5cGVFcnJvcikKKworICAgIGRlZiB0ZXN0X2NhbGwoc2VsZik6CisgICAgICAgIGZ1bmMgPSBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpCisgICAgICAgIGFyZ3MgPSBbYXN0Lk5hbWUoInkiLCBhc3QuTG9hZCgpKV0KKyAgICAgICAga2V5d29yZHMgPSBbYXN0LmtleXdvcmQoInciLCBhc3QuTmFtZSgieiIsIGFzdC5Mb2FkKCkpKV0KKyAgICAgICAgc3RhcmFyZyA9IGFzdC5OYW1lKCJwIiwgYXN0LkxvYWQoKSkKKyAgICAgICAga3dhcmcgPSBhc3QuTmFtZSgicSIsIGFzdC5Mb2FkKCkpCisgICAgICAgIGNhbGwgPSBhc3QuQ2FsbChhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgYXJncywga2V5d29yZHMsIHN0YXJhcmcsCisgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZykKKyAgICAgICAgc2VsZi5leHByKGNhbGwsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGZ1bmMsIFtOb25lXSwga2V5d29yZHMsIHN0YXJhcmcsIGt3YXJnKQorICAgICAgICBzZWxmLmV4cHIoY2FsbCwgIk5vbmUgZGlzYWxsb3dlZCIpCisgICAgICAgIGJhZF9rZXl3b3JkcyA9IFthc3Qua2V5d29yZCgidyIsIGFzdC5OYW1lKCJ6IiwgYXN0LlN0b3JlKCkpKV0KKyAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGZ1bmMsIGFyZ3MsIGJhZF9rZXl3b3Jkcywgc3RhcmFyZywga3dhcmcpCisgICAgICAgIHNlbGYuZXhwcihjYWxsLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGNhbGwgPSBhc3QuQ2FsbChmdW5jLCBhcmdzLCBrZXl3b3JkcywgYXN0Lk5hbWUoInoiLCBhc3QuU3RvcmUoKSksIGt3YXJnKQorICAgICAgICBzZWxmLmV4cHIoY2FsbCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBjYWxsID0gYXN0LkNhbGwoZnVuYywgYXJncywga2V5d29yZHMsIHN0YXJhcmcsCisgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgidyIsIGFzdC5TdG9yZSgpKSkKKyAgICAgICAgc2VsZi5leHByKGNhbGwsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X251bShzZWxmKToKKyAgICAgICAgY2xhc3Mgc3ViaW50KGludCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGNsYXNzIHN1YmZsb2F0KGZsb2F0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY2xhc3Mgc3ViY29tcGxleChjb21wbGV4KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZm9yIG9iaiBpbiAiMCIsICJoZWxsbyIsIHN1YmludCgpLCBzdWJmbG9hdCgpLCBzdWJjb21wbGV4KCk6CisgICAgICAgICAgICBzZWxmLmV4cHIoYXN0Lk51bShvYmopLCAibm9uLW51bWVyaWMiLCBleGM9VHlwZUVycm9yKQorCisgICAgZGVmIHRlc3RfYXR0cmlidXRlKHNlbGYpOgorICAgICAgICBhdHRyID0gYXN0LkF0dHJpYnV0ZShhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgInkiLCBhc3QuTG9hZCgpKQorICAgICAgICBzZWxmLmV4cHIoYXR0ciwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3Rfc3Vic2NyaXB0KHNlbGYpOgorICAgICAgICBzdWIgPSBhc3QuU3Vic2NyaXB0KGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBhc3QuSW5kZXgoYXN0Lk51bSgzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0LkxvYWQoKSkKKyAgICAgICAgc2VsZi5leHByKHN1YiwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICB4ID0gYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKQorICAgICAgICBzdWIgPSBhc3QuU3Vic2NyaXB0KHgsIGFzdC5JbmRleChhc3QuTmFtZSgieSIsIGFzdC5TdG9yZSgpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0LkxvYWQoKSkKKyAgICAgICAgc2VsZi5leHByKHN1YiwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBzID0gYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkKKyAgICAgICAgZm9yIGFyZ3MgaW4gKHMsIE5vbmUsIE5vbmUpLCAoTm9uZSwgcywgTm9uZSksIChOb25lLCBOb25lLCBzKToKKyAgICAgICAgICAgIHNsID0gYXN0LlNsaWNlKCphcmdzKQorICAgICAgICAgICAgc2VsZi5leHByKGFzdC5TdWJzY3JpcHQoeCwgc2wsIGFzdC5Mb2FkKCkpLAorICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgc2wgPSBhc3QuRXh0U2xpY2UoW10pCisgICAgICAgIHNlbGYuZXhwcihhc3QuU3Vic2NyaXB0KHgsIHNsLCBhc3QuTG9hZCgpKSwgImVtcHR5IGRpbXMgb24gRXh0U2xpY2UiKQorICAgICAgICBzbCA9IGFzdC5FeHRTbGljZShbYXN0LkluZGV4KHMpXSkKKyAgICAgICAgc2VsZi5leHByKGFzdC5TdWJzY3JpcHQoeCwgc2wsIGFzdC5Mb2FkKCkpLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9zdGFycmVkKHNlbGYpOgorICAgICAgICBsZWZ0ID0gYXN0Lkxpc3QoW2FzdC5TdGFycmVkKGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksIGFzdC5TdG9yZSgpKV0sCisgICAgICAgICAgICAgICAgICAgICAgICBhc3QuU3RvcmUoKSkKKyAgICAgICAgYXNzaWduID0gYXN0LkFzc2lnbihbbGVmdF0sIGFzdC5OdW0oNCkpCisgICAgICAgIHNlbGYuc3RtdChhc3NpZ24sICJtdXN0IGhhdmUgU3RvcmUgY29udGV4dCIpCisKKyAgICBkZWYgX3NlcXVlbmNlKHNlbGYsIGZhYyk6CisgICAgICAgIHNlbGYuZXhwcihmYWMoW05vbmVdLCBhc3QuTG9hZCgpKSwgIk5vbmUgZGlzYWxsb3dlZCIpCisgICAgICAgIHNlbGYuZXhwcihmYWMoW2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSwgYXN0LkxvYWQoKSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9saXN0KHNlbGYpOgorICAgICAgICBzZWxmLl9zZXF1ZW5jZShhc3QuTGlzdCkKKworICAgIGRlZiB0ZXN0X3R1cGxlKHNlbGYpOgorICAgICAgICBzZWxmLl9zZXF1ZW5jZShhc3QuVHVwbGUpCisKKyAgICBkZWYgdGVzdF9zdGRsaWJfdmFsaWRhdGVzKHNlbGYpOgorICAgICAgICBzdGRsaWIgPSBvcy5wYXRoLmRpcm5hbWUoYXN0Ll9fZmlsZV9fKQorICAgICAgICB0ZXN0cyA9IFtmbiBmb3IgZm4gaW4gb3MubGlzdGRpcihzdGRsaWIpIGlmIGZuLmVuZHN3aXRoKCIucHkiKV0KKyAgICAgICAgdGVzdHMuZXh0ZW5kKFsidGVzdC90ZXN0X2dyYW1tYXIucHkiLCAidGVzdC90ZXN0X3VucGFja19leC5weSJdKQorICAgICAgICBmb3IgbW9kdWxlIGluIHRlc3RzOgorICAgICAgICAgICAgZm4gPSBvcy5wYXRoLmpvaW4oc3RkbGliLCBtb2R1bGUpCisgICAgICAgICAgICB3aXRoIG9wZW4oZm4sICJyIiwgZW5jb2Rpbmc9InV0Zi04IikgYXMgZnA6CisgICAgICAgICAgICAgICAgc291cmNlID0gZnAucmVhZCgpCisgICAgICAgICAgICBtb2QgPSBhc3QucGFyc2Uoc291cmNlKQorICAgICAgICAgICAgY29tcGlsZShtb2QsIGZuLCAiZXhlYyIpCisKKwogZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEFTVF9UZXN0cywgQVNUSGVscGVyc19UZXN0KQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEFTVF9UZXN0cywgQVNUSGVscGVyc19UZXN0LCBBU1RWYWxpZGF0b3JUZXN0cykKIAogZGVmIG1haW4oKToKICAgICBpZiBfX25hbWVfXyAhPSAnX19tYWluX18nOgpAQCAtNTM5LDkgKzk3NSwxMSBAQAogKCdNb2R1bGUnLCBbKCdGb3InLCAoMSwgMCksICgnTmFtZScsICgxLCA0KSwgJ3YnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDkpLCAndicsICgnTG9hZCcsKSksIFsoJ1Bhc3MnLCAoMSwgMTEpKV0sIFtdKV0pLAogKCdNb2R1bGUnLCBbKCdXaGlsZScsICgxLCAwKSwgKCdOYW1lJywgKDEsIDYpLCAndicsICgnTG9hZCcsKSksIFsoJ1Bhc3MnLCAoMSwgOCkpXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ0lmJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMyksICd2JywgKCdMb2FkJywpKSwgWygnUGFzcycsICgxLCA1KSldLCBbXSldKSwKKygnTW9kdWxlJywgWygnV2l0aCcsICgxLCAwKSwgWygnd2l0aGl0ZW0nLCAoJ05hbWUnLCAoMSwgNSksICd4JywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDEwKSwgJ3knLCAoJ1N0b3JlJywpKSldLCBbKCdQYXNzJywgKDEsIDEzKSldKV0pLAorKCdNb2R1bGUnLCBbKCdXaXRoJywgKDEsIDApLCBbKCd3aXRoaXRlbScsICgnTmFtZScsICgxLCA1KSwgJ3gnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgMTApLCAneScsICgnU3RvcmUnLCkpKSwgKCd3aXRoaXRlbScsICgnTmFtZScsICgxLCAxMyksICd6JywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDE4KSwgJ3EnLCAoJ1N0b3JlJywpKSldLCBbKCdQYXNzJywgKDEsIDIxKSldKV0pLAogKCdNb2R1bGUnLCBbKCdSYWlzZScsICgxLCAwKSwgKCdDYWxsJywgKDEsIDYpLCAoJ05hbWUnLCAoMSwgNiksICdFeGNlcHRpb24nLCAoJ0xvYWQnLCkpLCBbKCdTdHInLCAoMSwgMTYpLCAnc3RyaW5nJyldLCBbXSwgTm9uZSwgTm9uZSksIE5vbmUpXSksCi0oJ01vZHVsZScsIFsoJ1RyeUV4Y2VwdCcsICgxLCAwKSwgWygnUGFzcycsICgyLCAyKSldLCBbKCdFeGNlcHRIYW5kbGVyJywgKDMsIDApLCAoJ05hbWUnLCAoMywgNyksICdFeGNlcHRpb24nLCAoJ0xvYWQnLCkpLCBOb25lLCBbKCdQYXNzJywgKDQsIDIpKV0pXSwgW10pXSksCi0oJ01vZHVsZScsIFsoJ1RyeUZpbmFsbHknLCAoMSwgMCksIFsoJ1Bhc3MnLCAoMiwgMikpXSwgWygnUGFzcycsICg0LCAyKSldKV0pLAorKCdNb2R1bGUnLCBbKCdUcnknLCAoMSwgMCksIFsoJ1Bhc3MnLCAoMiwgMikpXSwgWygnRXhjZXB0SGFuZGxlcicsICgzLCAwKSwgKCdOYW1lJywgKDMsIDcpLCAnRXhjZXB0aW9uJywgKCdMb2FkJywpKSwgTm9uZSwgWygnUGFzcycsICg0LCAyKSldKV0sIFtdLCBbXSldKSwKKygnTW9kdWxlJywgWygnVHJ5JywgKDEsIDApLCBbKCdQYXNzJywgKDIsIDIpKV0sIFtdLCBbXSwgWygnUGFzcycsICg0LCAyKSldKV0pLAogKCdNb2R1bGUnLCBbKCdBc3NlcnQnLCAoMSwgMCksICgnTmFtZScsICgxLCA3KSwgJ3YnLCAoJ0xvYWQnLCkpLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdJbXBvcnQnLCAoMSwgMCksIFsoJ2FsaWFzJywgJ3N5cycsIE5vbmUpXSldKSwKICgnTW9kdWxlJywgWygnSW1wb3J0RnJvbScsICgxLCAwKSwgJ3N5cycsIFsoJ2FsaWFzJywgJ3YnLCBOb25lKV0sIDApXSksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5IGIvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weQppbmRleCA4OTg5YTYzLi44NzhiMjZjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkKQEAgLTIxLDYgKzIxLDggQEAKIAogSE9TVCA9IHN1cHBvcnQuSE9TVAogCitIQVNfVU5JWF9TT0NLRVRTID0gaGFzYXR0cihzb2NrZXQsICdBRl9VTklYJykKKwogY2xhc3MgZHVtbXlzb2NrZXQ6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLmNsb3NlZCA9IEZhbHNlCkBAIC03MiwxNSArNzQsMTYgQEAKICAgICAgICAgcGFzcwogICAgIGVsc2U6CiAgICAgICAgIG4gPSAyMDAKLSAgICAgICAgd2hpbGUgbiA+IDA6Ci0gICAgICAgICAgICByLCB3LCBlID0gc2VsZWN0LnNlbGVjdChbY29ubl0sIFtdLCBbXSkKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICB3aGlsZSBuID4gMCBhbmQgdGltZS50aW1lKCkgLSBzdGFydCA8IDMuMDoKKyAgICAgICAgICAgIHIsIHcsIGUgPSBzZWxlY3Quc2VsZWN0KFtjb25uXSwgW10sIFtdLCAwLjEpCiAgICAgICAgICAgICBpZiByOgorICAgICAgICAgICAgICAgIG4gLT0gMQogICAgICAgICAgICAgICAgIGRhdGEgPSBjb25uLnJlY3YoMTApCiAgICAgICAgICAgICAgICAgIyBrZWVwIGV2ZXJ5dGhpbmcgZXhjZXB0IGZvciB0aGUgbmV3bGluZSB0ZXJtaW5hdG9yCiAgICAgICAgICAgICAgICAgYnVmLndyaXRlKGRhdGEucmVwbGFjZShiJ1xuJywgYicnKSkKICAgICAgICAgICAgICAgICBpZiBiJ1xuJyBpbiBkYXRhOgogICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgbiAtPSAxCiAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDEpCiAKICAgICAgICAgY29ubi5jbG9zZSgpCkBAIC04OCw2ICs5MSwxMyBAQAogICAgICAgICBzZXJ2LmNsb3NlKCkKICAgICAgICAgZXZ0LnNldCgpCiAKK2RlZiBiaW5kX2FmX2F3YXJlKHNvY2ssIGFkZHIpOgorICAgICIiIkhlbHBlciBmdW5jdGlvbiB0byBiaW5kIGEgc29ja2V0IGFjY29yZGluZyB0byBpdHMgZmFtaWx5LiIiIgorICAgIGlmIEhBU19VTklYX1NPQ0tFVFMgYW5kIHNvY2suZmFtaWx5ID09IHNvY2tldC5BRl9VTklYOgorICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgcGF0aCBkb2Vzbid0IGV4aXN0LgorICAgICAgICB1bmxpbmsoYWRkcikKKyAgICBzb2NrLmJpbmQoYWRkcikKKwogCiBjbGFzcyBIZWxwZXJGdW5jdGlvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9yZWFkd3JpdGVleGMoc2VsZik6CkBAIC0zNTMsNyArMzYzLDcgQEAKICAgICBAc3VwcG9ydC5yZWFwX3RocmVhZHMKICAgICBkZWYgdGVzdF9zZW5kKHNlbGYpOgogICAgICAgICBldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQotICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldCgpCiAgICAgICAgIHNvY2suc2V0dGltZW91dCgzKQogICAgICAgICBwb3J0ID0gc3VwcG9ydC5iaW5kX3BvcnQoc29jaykKIApAQCAtMzY4LDcgKzM3OCw3IEBACiAKICAgICAgICAgICAgIGRhdGEgPSBiIlN1cHBvc2UgdGhlcmUgaXNuJ3QgYSAxNi10b24gd2VpZ2h0PyIKICAgICAgICAgICAgIGQgPSBkaXNwYXRjaGVyd2l0aHNlbmRfbm9yZWFkKCkKLSAgICAgICAgICAgIGQuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgZC5jcmVhdGVfc29ja2V0KCkKICAgICAgICAgICAgIGQuY29ubmVjdCgoSE9TVCwgcG9ydCkpCiAKICAgICAgICAgICAgICMgZ2l2ZSB0aW1lIGZvciBzb2NrZXQgdG8gY29ubmVjdApAQCAtNDY4LDIyICs0NzgsMjIgQEAKICAgICAgICAgcmFpc2UKIAogCi1jbGFzcyBUQ1BTZXJ2ZXIoYXN5bmNvcmUuZGlzcGF0Y2hlcik6CitjbGFzcyBCYXNlU2VydmVyKGFzeW5jb3JlLmRpc3BhdGNoZXIpOgogICAgICIiIkEgc2VydmVyIHdoaWNoIGxpc3RlbnMgb24gYW4gYWRkcmVzcyBhbmQgZGlzcGF0Y2hlcyB0aGUKICAgICBjb25uZWN0aW9uIHRvIGEgaGFuZGxlci4KICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoYW5kbGVyPUJhc2VUZXN0SGFuZGxlciwgaG9zdD1IT1NULCBwb3J0PTApOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmYW1pbHksIGFkZHIsIGhhbmRsZXI9QmFzZVRlc3RIYW5kbGVyKToKICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KGZhbWlseSkKICAgICAgICAgc2VsZi5zZXRfcmV1c2VfYWRkcigpCi0gICAgICAgIHNlbGYuYmluZCgoaG9zdCwgcG9ydCkpCisgICAgICAgIGJpbmRfYWZfYXdhcmUoc2VsZi5zb2NrZXQsIGFkZHIpCiAgICAgICAgIHNlbGYubGlzdGVuKDUpCiAgICAgICAgIHNlbGYuaGFuZGxlciA9IGhhbmRsZXIKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBhZGRyZXNzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKVs6Ml0KKyAgICAgICAgcmV0dXJuIHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKCkKIAogICAgIGRlZiBoYW5kbGVfYWNjZXB0ZWQoc2VsZiwgc29jaywgYWRkcik6CiAgICAgICAgIHNlbGYuaGFuZGxlcihzb2NrKQpAQCAtNDk0LDE2ICs1MDQsMTYgQEAKIAogY2xhc3MgQmFzZUNsaWVudChCYXNlVGVzdEhhbmRsZXIpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmYW1pbHksIGFkZHJlc3MpOgogICAgICAgICBCYXNlVGVzdEhhbmRsZXIuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChmYW1pbHkpCiAgICAgICAgIHNlbGYuY29ubmVjdChhZGRyZXNzKQogCiAgICAgZGVmIGhhbmRsZV9jb25uZWN0KHNlbGYpOgogICAgICAgICBwYXNzCiAKIAotY2xhc3MgQmFzZVRlc3RBUEkodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgQmFzZVRlc3RBUEk6CiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbCgpCkBAIC01MjYsOCArNTM2LDggQEAKICAgICAgICAgICAgIGRlZiBoYW5kbGVfY29ubmVjdChzZWxmKToKICAgICAgICAgICAgICAgICBzZWxmLmZsYWcgPSBUcnVlCiAKLSAgICAgICAgc2VydmVyID0gVENQU2VydmVyKCkKLSAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZXJ2ZXIuYWRkcmVzcykKKyAgICAgICAgc2VydmVyID0gQmFzZVNlcnZlcihzZWxmLmZhbWlseSwgc2VsZi5hZGRyKQorICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKICAgICAgICAgc2VsZi5sb29wX3dhaXRpbmdfZm9yX2ZsYWcoY2xpZW50KQogCiAgICAgZGVmIHRlc3RfaGFuZGxlX2FjY2VwdChzZWxmKToKQEAgLTUzNSwxOCArNTQ1LDE4IEBACiAKICAgICAgICAgY2xhc3MgVGVzdExpc3RlbmVyKEJhc2VUZXN0SGFuZGxlcik6CiAKLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmYW1pbHksIGFkZHIpOgogICAgICAgICAgICAgICAgIEJhc2VUZXN0SGFuZGxlci5fX2luaXRfXyhzZWxmKQotICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQotICAgICAgICAgICAgICAgIHNlbGYuYmluZCgoSE9TVCwgMCkpCisgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KGZhbWlseSkKKyAgICAgICAgICAgICAgICBiaW5kX2FmX2F3YXJlKHNlbGYuc29ja2V0LCBhZGRyKQogICAgICAgICAgICAgICAgIHNlbGYubGlzdGVuKDUpCi0gICAgICAgICAgICAgICAgc2VsZi5hZGRyZXNzID0gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKVs6Ml0KKyAgICAgICAgICAgICAgICBzZWxmLmFkZHJlc3MgPSBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpCiAKICAgICAgICAgICAgIGRlZiBoYW5kbGVfYWNjZXB0KHNlbGYpOgogICAgICAgICAgICAgICAgIHNlbGYuZmxhZyA9IFRydWUKIAotICAgICAgICBzZXJ2ZXIgPSBUZXN0TGlzdGVuZXIoKQotICAgICAgICBjbGllbnQgPSBCYXNlQ2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBUZXN0TGlzdGVuZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkcikKKyAgICAgICAgY2xpZW50ID0gQmFzZUNsaWVudChzZWxmLmZhbWlseSwgc2VydmVyLmFkZHJlc3MpCiAgICAgICAgIHNlbGYubG9vcF93YWl0aW5nX2Zvcl9mbGFnKHNlcnZlcikKIAogICAgIGRlZiB0ZXN0X2hhbmRsZV9hY2NlcHRlZChzZWxmKToKQEAgLTU1NCwxMiArNTY0LDEyIEBACiAKICAgICAgICAgY2xhc3MgVGVzdExpc3RlbmVyKEJhc2VUZXN0SGFuZGxlcik6CiAKLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmYW1pbHksIGFkZHIpOgogICAgICAgICAgICAgICAgIEJhc2VUZXN0SGFuZGxlci5fX2luaXRfXyhzZWxmKQotICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQotICAgICAgICAgICAgICAgIHNlbGYuYmluZCgoSE9TVCwgMCkpCisgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KGZhbWlseSkKKyAgICAgICAgICAgICAgICBiaW5kX2FmX2F3YXJlKHNlbGYuc29ja2V0LCBhZGRyKQogICAgICAgICAgICAgICAgIHNlbGYubGlzdGVuKDUpCi0gICAgICAgICAgICAgICAgc2VsZi5hZGRyZXNzID0gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKVs6Ml0KKyAgICAgICAgICAgICAgICBzZWxmLmFkZHJlc3MgPSBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpCiAKICAgICAgICAgICAgIGRlZiBoYW5kbGVfYWNjZXB0KHNlbGYpOgogICAgICAgICAgICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXIuaGFuZGxlX2FjY2VwdChzZWxmKQpAQCAtNTY4LDggKzU3OCw4IEBACiAgICAgICAgICAgICAgICAgc29jay5jbG9zZSgpCiAgICAgICAgICAgICAgICAgc2VsZi5mbGFnID0gVHJ1ZQogCi0gICAgICAgIHNlcnZlciA9IFRlc3RMaXN0ZW5lcigpCi0gICAgICAgIGNsaWVudCA9IEJhc2VDbGllbnQoc2VydmVyLmFkZHJlc3MpCisgICAgICAgIHNlcnZlciA9IFRlc3RMaXN0ZW5lcihzZWxmLmZhbWlseSwgc2VsZi5hZGRyKQorICAgICAgICBjbGllbnQgPSBCYXNlQ2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKICAgICAgICAgc2VsZi5sb29wX3dhaXRpbmdfZm9yX2ZsYWcoc2VydmVyKQogCiAKQEAgLTU4NSw4ICs1OTUsOCBAQAogICAgICAgICAgICAgICAgIEJhc2VUZXN0SGFuZGxlci5fX2luaXRfXyhzZWxmLCBjb25uKQogICAgICAgICAgICAgICAgIHNlbGYuc2VuZChiJ3gnICogMTAyNCkKIAotICAgICAgICBzZXJ2ZXIgPSBUQ1BTZXJ2ZXIoVGVzdEhhbmRsZXIpCi0gICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VydmVyLmFkZHJlc3MpCisgICAgICAgIHNlcnZlciA9IEJhc2VTZXJ2ZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkciwgVGVzdEhhbmRsZXIpCisgICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VsZi5mYW1pbHksIHNlcnZlci5hZGRyZXNzKQogICAgICAgICBzZWxmLmxvb3Bfd2FpdGluZ19mb3JfZmxhZyhjbGllbnQpCiAKICAgICBkZWYgdGVzdF9oYW5kbGVfd3JpdGUoc2VsZik6CkBAIC01OTYsOCArNjA2LDggQEAKICAgICAgICAgICAgIGRlZiBoYW5kbGVfd3JpdGUoc2VsZik6CiAgICAgICAgICAgICAgICAgc2VsZi5mbGFnID0gVHJ1ZQogCi0gICAgICAgIHNlcnZlciA9IFRDUFNlcnZlcigpCi0gICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VydmVyLmFkZHJlc3MpCisgICAgICAgIHNlcnZlciA9IEJhc2VTZXJ2ZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkcikKKyAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZWxmLmZhbWlseSwgc2VydmVyLmFkZHJlc3MpCiAgICAgICAgIHNlbGYubG9vcF93YWl0aW5nX2Zvcl9mbGFnKGNsaWVudCkKIAogICAgIGRlZiB0ZXN0X2hhbmRsZV9jbG9zZShzZWxmKToKQEAgLTYyMCw4ICs2MzAsNDAgQEAKICAgICAgICAgICAgICAgICBCYXNlVGVzdEhhbmRsZXIuX19pbml0X18oc2VsZiwgY29ubikKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAotICAgICAgICBzZXJ2ZXIgPSBUQ1BTZXJ2ZXIoVGVzdEhhbmRsZXIpCi0gICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VydmVyLmFkZHJlc3MpCisgICAgICAgIHNlcnZlciA9IEJhc2VTZXJ2ZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkciwgVGVzdEhhbmRsZXIpCisgICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VsZi5mYW1pbHksIHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZWxmLmxvb3Bfd2FpdGluZ19mb3JfZmxhZyhjbGllbnQpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfY2xvc2VfYWZ0ZXJfY29ubl9icm9rZW4oc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBFQ09OTlJFU0VUL0VQSVBFIGlzIGNvcnJlY3RseSBoYW5kbGVkIChpc3N1ZXMgIzU2NjEgYW5kCisgICAgICAgICMgIzExMjY1KS4KKworICAgICAgICBkYXRhID0gYidcMCcgKiAxMjgKKworICAgICAgICBjbGFzcyBUZXN0Q2xpZW50KEJhc2VDbGllbnQpOgorCisgICAgICAgICAgICBkZWYgaGFuZGxlX3dyaXRlKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuc2VuZChkYXRhKQorCisgICAgICAgICAgICBkZWYgaGFuZGxlX2Nsb3NlKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuZmxhZyA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKworICAgICAgICAgICAgZGVmIGhhbmRsZV9leHB0KHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuZmxhZyA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKworICAgICAgICBjbGFzcyBUZXN0SGFuZGxlcihCYXNlVGVzdEhhbmRsZXIpOgorCisgICAgICAgICAgICBkZWYgaGFuZGxlX3JlYWQoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5yZWN2KGxlbihkYXRhKSkKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKworICAgICAgICAgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHNlcnZlciA9IEJhc2VTZXJ2ZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkciwgVGVzdEhhbmRsZXIpCisgICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VsZi5mYW1pbHksIHNlcnZlci5hZGRyZXNzKQogICAgICAgICBzZWxmLmxvb3Bfd2FpdGluZ19mb3JfZmxhZyhjbGllbnQpCiAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJzdW5vcyIpLApAQCAtNjMwLDkgKzY3MiwxMiBAQAogICAgICAgICAjIE1ha2Ugc3VyZSBoYW5kbGVfZXhwdCBpcyBjYWxsZWQgb24gT09CIGRhdGEgcmVjZWl2ZWQuCiAgICAgICAgICMgTm90ZTogdGhpcyBtaWdodCBmYWlsIG9uIHNvbWUgcGxhdGZvcm1zIGFzIE9PQiBkYXRhIGlzCiAgICAgICAgICMgdGVudW91c2x5IHN1cHBvcnRlZCBhbmQgcmFyZWx5IHVzZWQuCisgICAgICAgIGlmIEhBU19VTklYX1NPQ0tFVFMgYW5kIHNlbGYuZmFtaWx5ID09IHNvY2tldC5BRl9VTklYOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiTm90IGFwcGxpY2FibGUgdG8gQUZfVU5JWCBzb2NrZXRzLiIpCiAKICAgICAgICAgY2xhc3MgVGVzdENsaWVudChCYXNlQ2xpZW50KToKICAgICAgICAgICAgIGRlZiBoYW5kbGVfZXhwdChzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5yZWN2KDEwMjQsIHNvY2tldC5NU0dfT09CKQogICAgICAgICAgICAgICAgIHNlbGYuZmxhZyA9IFRydWUKIAogICAgICAgICBjbGFzcyBUZXN0SGFuZGxlcihCYXNlVGVzdEhhbmRsZXIpOgpAQCAtNjQwLDggKzY4NSw4IEBACiAgICAgICAgICAgICAgICAgQmFzZVRlc3RIYW5kbGVyLl9faW5pdF9fKHNlbGYsIGNvbm4pCiAgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQuc2VuZChieXRlcyhjaHIoMjQ0KSwgJ2xhdGluLTEnKSwgc29ja2V0Lk1TR19PT0IpCiAKLSAgICAgICAgc2VydmVyID0gVENQU2VydmVyKFRlc3RIYW5kbGVyKQotICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIsIFRlc3RIYW5kbGVyKQorICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKICAgICAgICAgc2VsZi5sb29wX3dhaXRpbmdfZm9yX2ZsYWcoY2xpZW50KQogCiAgICAgZGVmIHRlc3RfaGFuZGxlX2Vycm9yKHNlbGYpOgpAQCAtNjU4LDEzICs3MDMsMTMgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oImV4Y2VwdGlvbiBub3QgcmFpc2VkIikKIAotICAgICAgICBzZXJ2ZXIgPSBUQ1BTZXJ2ZXIoKQotICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIpCisgICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VsZi5mYW1pbHksIHNlcnZlci5hZGRyZXNzKQogICAgICAgICBzZWxmLmxvb3Bfd2FpdGluZ19mb3JfZmxhZyhjbGllbnQpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0aW9uX2F0dHJpYnV0ZXMoc2VsZik6Ci0gICAgICAgIHNlcnZlciA9IFRDUFNlcnZlcigpCi0gICAgICAgIGNsaWVudCA9IEJhc2VDbGllbnQoc2VydmVyLmFkZHJlc3MpCisgICAgICAgIHNlcnZlciA9IEJhc2VTZXJ2ZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkcikKKyAgICAgICAgY2xpZW50ID0gQmFzZUNsaWVudChzZWxmLmZhbWlseSwgc2VydmVyLmFkZHJlc3MpCiAKICAgICAgICAgIyB3ZSBzdGFydCBkaXNjb25uZWN0ZWQKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZXJ2ZXIuY29ubmVjdGVkKQpAQCAtNjk0LDI1ICs3MzksMjkgQEAKIAogICAgIGRlZiB0ZXN0X2NyZWF0ZV9zb2NrZXQoc2VsZik6CiAgICAgICAgIHMgPSBhc3luY29yZS5kaXNwYXRjaGVyKCkKLSAgICAgICAgcy5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5zb2NrZXQuZmFtaWx5LCBzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgcy5jcmVhdGVfc29ja2V0KHNlbGYuZmFtaWx5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc29ja2V0LmZhbWlseSwgc2VsZi5mYW1pbHkpCiAgICAgICAgIFNPQ0tfTk9OQkxPQ0sgPSBnZXRhdHRyKHNvY2tldCwgJ1NPQ0tfTk9OQkxPQ0snLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc29ja2V0LnR5cGUsIHNvY2tldC5TT0NLX1NUUkVBTSB8IFNPQ0tfTk9OQkxPQ0spCiAKICAgICBkZWYgdGVzdF9iaW5kKHNlbGYpOgorICAgICAgICBpZiBIQVNfVU5JWF9TT0NLRVRTIGFuZCBzZWxmLmZhbWlseSA9PSBzb2NrZXQuQUZfVU5JWDoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIk5vdCBhcHBsaWNhYmxlIHRvIEFGX1VOSVggc29ja2V0cy4iKQogICAgICAgICBzMSA9IGFzeW5jb3JlLmRpc3BhdGNoZXIoKQotICAgICAgICBzMS5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCi0gICAgICAgIHMxLmJpbmQoKEhPU1QsIDApKQorICAgICAgICBzMS5jcmVhdGVfc29ja2V0KHNlbGYuZmFtaWx5KQorICAgICAgICBzMS5iaW5kKHNlbGYuYWRkcikKICAgICAgICAgczEubGlzdGVuKDUpCiAgICAgICAgIHBvcnQgPSBzMS5zb2NrZXQuZ2V0c29ja25hbWUoKVsxXQogCiAgICAgICAgIHMyID0gYXN5bmNvcmUuZGlzcGF0Y2hlcigpCi0gICAgICAgIHMyLmNyZWF0ZV9zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgczIuY3JlYXRlX3NvY2tldChzZWxmLmZhbWlseSkKICAgICAgICAgIyBFQUREUklOVVNFIGluZGljYXRlcyB0aGUgc29ja2V0IHdhcyBjb3JyZWN0bHkgYm91bmQKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzMi5iaW5kLCAoSE9TVCwgcG9ydCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgczIuYmluZCwgKHNlbGYuYWRkclswXSwgcG9ydCkpCiAKICAgICBkZWYgdGVzdF9zZXRfcmV1c2VfYWRkcihzZWxmKToKLSAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBpZiBIQVNfVU5JWF9TT0NLRVRTIGFuZCBzZWxmLmZhbWlseSA9PSBzb2NrZXQuQUZfVU5JWDoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIk5vdCBhcHBsaWNhYmxlIHRvIEFGX1VOSVggc29ja2V0cy4iKQorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzZWxmLmZhbWlseSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc29jay5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fUkVVU0VBRERSLCAxKQogICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgpAQCAtNzIwLDExICs3NjksMTEgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgaWYgU09fUkVVU0VBRERSIHN1Y2NlZWRlZCBmb3Igc29jayB3ZSBleHBlY3QgYXN5bmNvcmUKICAgICAgICAgICAgICMgdG8gZG8gdGhlIHNhbWUKLSAgICAgICAgICAgIHMgPSBhc3luY29yZS5kaXNwYXRjaGVyKHNvY2tldC5zb2NrZXQoKSkKKyAgICAgICAgICAgIHMgPSBhc3luY29yZS5kaXNwYXRjaGVyKHNvY2tldC5zb2NrZXQoc2VsZi5mYW1pbHkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzLnNvY2tldC5nZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TT19SRVVTRUFERFIpKQogICAgICAgICAgICAgcy5zb2NrZXQuY2xvc2UoKQotICAgICAgICAgICAgcy5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICBzLmNyZWF0ZV9zb2NrZXQoc2VsZi5mYW1pbHkpCiAgICAgICAgICAgICBzLnNldF9yZXVzZV9hZGRyKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLnNvY2tldC5nZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TT19SRVVTRUFERFIpKQpAQCAtNzM1LDEzICs3ODQsMTQgQEAKICAgICBAc3VwcG9ydC5yZWFwX3RocmVhZHMKICAgICBkZWYgdGVzdF9xdWlja19jb25uZWN0KHNlbGYpOgogICAgICAgICAjIHNlZTogaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEwMzQwCi0gICAgICAgIHNlcnZlciA9IFRDUFNlcnZlcigpCi0gICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1sYW1iZGE6IGFzeW5jb3JlLmxvb3AodGltZW91dD0wLjEsIGNvdW50PTUwMCkpCi0gICAgICAgIHQuc3RhcnQoKQotICAgICAgICBzZWxmLmFkZENsZWFudXAodC5qb2luKQorICAgICAgICBpZiBzZWxmLmZhbWlseSBpbiAoc29ja2V0LkFGX0lORVQsIGdldGF0dHIoc29ja2V0LCAiQUZfSU5FVDYiLCBvYmplY3QoKSkpOgorICAgICAgICAgICAgc2VydmVyID0gQmFzZVNlcnZlcihzZWxmLmZhbWlseSwgc2VsZi5hZGRyKQorICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWxhbWJkYTogYXN5bmNvcmUubG9vcCh0aW1lb3V0PTAuMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ9NTAwKSkKKyAgICAgICAgICAgIHQuc3RhcnQoKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHQuam9pbikKIAotICAgICAgICBmb3IgeCBpbiByYW5nZSgyMCk6Ci0gICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc2VsZi5mYW1pbHksIHNvY2tldC5TT0NLX1NUUkVBTSkKICAgICAgICAgICAgIHMuc2V0dGltZW91dCguMikKICAgICAgICAgICAgIHMuc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX0xJTkdFUiwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QucGFjaygnaWknLCAxLCAwKSkKQEAgLTc1MiwxOSArODAyLDQ1IEBACiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIHMuY2xvc2UoKQogCi1jbGFzcyBUZXN0QVBJX1VzZVNlbGVjdChCYXNlVGVzdEFQSSk6CitjbGFzcyBUZXN0QVBJX1VzZUlQdjRTb2NrZXRzKEJhc2VUZXN0QVBJKToKKyAgICBmYW1pbHkgPSBzb2NrZXQuQUZfSU5FVAorICAgIGFkZHIgPSAoSE9TVCwgMCkKKworQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5JUFY2X0VOQUJMRUQsICdJUHY2IHN1cHBvcnQgcmVxdWlyZWQnKQorY2xhc3MgVGVzdEFQSV9Vc2VJUHY2U29ja2V0cyhCYXNlVGVzdEFQSSk6CisgICAgZmFtaWx5ID0gc29ja2V0LkFGX0lORVQ2CisgICAgYWRkciA9ICgnOjoxJywgMCkKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFTX1VOSVhfU09DS0VUUywgJ1VuaXggc29ja2V0cyByZXF1aXJlZCcpCitjbGFzcyBUZXN0QVBJX1VzZVVuaXhTb2NrZXRzKEJhc2VUZXN0QVBJKToKKyAgICBpZiBIQVNfVU5JWF9TT0NLRVRTOgorICAgICAgICBmYW1pbHkgPSBzb2NrZXQuQUZfVU5JWAorICAgIGFkZHIgPSBzdXBwb3J0LlRFU1RGTgorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICB1bmxpbmsoc2VsZi5hZGRyKQorICAgICAgICBCYXNlVGVzdEFQSS50ZWFyRG93bihzZWxmKQorCitjbGFzcyBUZXN0QVBJX1VzZUlQdjRTZWxlY3QoVGVzdEFQSV9Vc2VJUHY0U29ja2V0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHVzZV9wb2xsID0gRmFsc2UKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzZWxlY3QsICdwb2xsJyksICdzZWxlY3QucG9sbCByZXF1aXJlZCcpCi1jbGFzcyBUZXN0QVBJX1VzZVBvbGwoQmFzZVRlc3RBUEkpOgorY2xhc3MgVGVzdEFQSV9Vc2VJUHY0UG9sbChUZXN0QVBJX1VzZUlQdjRTb2NrZXRzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdXNlX3BvbGwgPSBUcnVlCiAKK2NsYXNzIFRlc3RBUElfVXNlSVB2NlNlbGVjdChUZXN0QVBJX1VzZUlQdjZTb2NrZXRzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgdXNlX3BvbGwgPSBGYWxzZQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdHMgPSBbSGVscGVyRnVuY3Rpb25UZXN0cywgRGlzcGF0Y2hlclRlc3RzLCBEaXNwYXRjaGVyV2l0aFNlbmRUZXN0cywKLSAgICAgICAgICAgICBEaXNwYXRjaGVyV2l0aFNlbmRUZXN0c19Vc2VQb2xsLCBUZXN0QVBJX1VzZVNlbGVjdCwKLSAgICAgICAgICAgICBUZXN0QVBJX1VzZVBvbGwsIEZpbGVXcmFwcGVyVGVzdF0KLSAgICBydW5fdW5pdHRlc3QoKnRlc3RzKQorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzZWxlY3QsICdwb2xsJyksICdzZWxlY3QucG9sbCByZXF1aXJlZCcpCitjbGFzcyBUZXN0QVBJX1VzZUlQdjZQb2xsKFRlc3RBUElfVXNlSVB2NlNvY2tldHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICB1c2VfcG9sbCA9IFRydWUKKworY2xhc3MgVGVzdEFQSV9Vc2VVbml4U29ja2V0c1NlbGVjdChUZXN0QVBJX1VzZVVuaXhTb2NrZXRzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgdXNlX3BvbGwgPSBGYWxzZQorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNlbGVjdCwgJ3BvbGwnKSwgJ3NlbGVjdC5wb2xsIHJlcXVpcmVkJykKK2NsYXNzIFRlc3RBUElfVXNlVW5peFNvY2tldHNQb2xsKFRlc3RBUElfVXNlVW5peFNvY2tldHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICB1c2VfcG9sbCA9IFRydWUKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iYXNlNjQucHkgYi9MaWIvdGVzdC90ZXN0X2Jhc2U2NC5weQppbmRleCBjYTk0NTA0Li4yNTY5NDc2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Jhc2U2NC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Jhc2U2NC5weQpAQCAtMTAzLDQ0ICsxMDMsNTMgQEAKIAogICAgIGRlZiB0ZXN0X2I2NGRlY29kZShzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCi0gICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoYiJkM2QzTG5CNWRHaHZiaTV2Y21jPSIpLCBiInd3dy5weXRob24ub3JnIikKLSAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShiJ0FBPT0nKSwgYidceDAwJykKLSAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShiIllRPT0iKSwgYiJhIikKLSAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShiIllXST0iKSwgYiJhYiIpCi0gICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoYiJZV0pqIiksIGIiYWJjIikKLSAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShiIllXSmpaR1ZtWjJocGFtdHNiVzV2Y0hGeWMzUjFkbmQ0ZVhwQlFrTkUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYiJSVVpIU0VsS1MweE5UazlRVVZKVFZGVldWMWhaV2pBeE1qTTBcbk5UIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIiWTNPRGtoUUNNd1hpWXFLQ2s3T2p3K0xDNGdXMTE3ZlE9PSIpLAotICAgICAgICAgICBiImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IgotICAgICAgICAgICBiIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIgotICAgICAgICAgICBiIjAxMjM0NTY3ODkhQCMwXiYqKCk7Ojw+LC4gW117fSIpCi0gICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoYicnKSwgYicnKQorCisgICAgICAgIHRlc3RzID0ge2IiZDNkM0xuQjVkR2h2Ymk1dmNtYz0iOiBiInd3dy5weXRob24ub3JnIiwKKyAgICAgICAgICAgICAgICAgYidBQT09JzogYidceDAwJywKKyAgICAgICAgICAgICAgICAgYiJZUT09IjogYiJhIiwKKyAgICAgICAgICAgICAgICAgYiJZV0k9IjogYiJhYiIsCisgICAgICAgICAgICAgICAgIGIiWVdKaiI6IGIiYWJjIiwKKyAgICAgICAgICAgICAgICAgYiJZV0pqWkdWbVoyaHBhbXRzYlc1dmNIRnljM1IxZG5kNGVYcEJRa05FIgorICAgICAgICAgICAgICAgICBiIlJVWkhTRWxLUzB4TlRrOVFVVkpUVkZWV1YxaFpXakF4TWpNMFxuTlQiCisgICAgICAgICAgICAgICAgIGIiWTNPRGtoUUNNd1hpWXFLQ2s3T2p3K0xDNGdXMTE3ZlE9PSI6CisKKyAgICAgICAgICAgICAgICAgYiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIKKyAgICAgICAgICAgICAgICAgYiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKKyAgICAgICAgICAgICAgICAgYiIwMTIzNDU2Nzg5IUAjMF4mKigpOzo8PiwuIFtde30iLAorICAgICAgICAgICAgICAgICBiJyc6IGInJywKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICBmb3IgZGF0YSwgcmVzIGluIHRlc3RzLml0ZW1zKCk6CisgICAgICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGRhdGEpLCByZXMpCisgICAgICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGRhdGEuZGVjb2RlKCdhc2NpaScpKSwgcmVzKQorCiAgICAgICAgICMgVGVzdCB3aXRoIGFyYml0cmFyeSBhbHRlcm5hdGl2ZSBjaGFyYWN0ZXJzCi0gICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoYicwMWEqYiRjZCcsIGFsdGNoYXJzPWInKiQnKSwgYidceGQzVlx4YmVvXHhmN1x4MWQnKQotICAgICAgICAjIENoZWNrIGlmIHBhc3NpbmcgYSBzdHIgb2JqZWN0IHJhaXNlcyBhbiBlcnJvcgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5iNjRkZWNvZGUsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5iNjRkZWNvZGUsIGIiIiwgYWx0Y2hhcnM9IiIpCisgICAgICAgIHRlc3RzX2FsdGNoYXJzID0geyhiJzAxYSpiJGNkJywgYicqJCcpOiBiJ1x4ZDNWXHhiZW9ceGY3XHgxZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgZm9yIChkYXRhLCBhbHRjaGFycyksIHJlcyBpbiB0ZXN0c19hbHRjaGFycy5pdGVtcygpOgorICAgICAgICAgICAgZGF0YV9zdHIgPSBkYXRhLmRlY29kZSgnYXNjaWknKQorICAgICAgICAgICAgYWx0Y2hhcnNfc3RyID0gYWx0Y2hhcnMuZGVjb2RlKCdhc2NpaScpCisKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoZGF0YSwgYWx0Y2hhcnM9YWx0Y2hhcnMpLCByZXMpCisgICAgICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGRhdGFfc3RyLCBhbHRjaGFycz1hbHRjaGFycyksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoZGF0YSwgYWx0Y2hhcnM9YWx0Y2hhcnNfc3RyKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShkYXRhX3N0ciwgYWx0Y2hhcnM9YWx0Y2hhcnNfc3RyKSwgcmVzKQorCiAgICAgICAgICMgVGVzdCBzdGFuZGFyZCBhbHBoYWJldAotICAgICAgICBlcShiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlKGIiZDNkM0xuQjVkR2h2Ymk1dmNtYz0iKSwgYiJ3d3cucHl0aG9uLm9yZyIpCi0gICAgICAgIGVxKGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUoYiJZUT09IiksIGIiYSIpCi0gICAgICAgIGVxKGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUoYiJZV0k9IiksIGIiYWIiKQotICAgICAgICBlcShiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlKGIiWVdKaiIpLCBiImFiYyIpCi0gICAgICAgIGVxKGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUoYiIiKSwgYiIiKQotICAgICAgICBlcShiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlKGIiWVdKalpHVm1aMmhwYW10c2JXNXZjSEZ5YzNSMWRuZDRlWHBCUWtORSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIlJVWkhTRWxLUzB4TlRrOVFVVkpUVkZWV1YxaFpXakF4TWpNME5UIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIiWTNPRGtoUUNNd1hpWXFLQ2s3T2p3K0xDNGdXMTE3ZlE9PSIpLAotICAgICAgICAgICBiImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IgotICAgICAgICAgICBiIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIgotICAgICAgICAgICBiIjAxMjM0NTY3ODkhQCMwXiYqKCk7Ojw+LC4gW117fSIpCi0gICAgICAgICMgQ2hlY2sgaWYgcGFzc2luZyBhIHN0ciBvYmplY3QgcmFpc2VzIGFuIGVycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZSwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZSwgYiIiLCBhbHRjaGFycz0iIikKKyAgICAgICAgZm9yIGRhdGEsIHJlcyBpbiB0ZXN0cy5pdGVtcygpOgorICAgICAgICAgICAgZXEoYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZShkYXRhKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZShkYXRhLmRlY29kZSgnYXNjaWknKSksIHJlcykKKwogICAgICAgICAjIFRlc3Qgd2l0aCAnVVJMIHNhZmUnIGFsdGVybmF0aXZlIGNoYXJhY3RlcnMKLSAgICAgICAgZXEoYmFzZTY0LnVybHNhZmVfYjY0ZGVjb2RlKGInMDFhLWJfY2QnKSwgYidceGQzVlx4YmVvXHhmN1x4MWQnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC51cmxzYWZlX2I2NGRlY29kZSwgIiIpCisgICAgICAgIHRlc3RzX3VybHNhZmUgPSB7YicwMWEtYl9jZCc6IGInXHhkM1ZceGJlb1x4ZjdceDFkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJyc6IGInJywKKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgIGZvciBkYXRhLCByZXMgaW4gdGVzdHNfdXJsc2FmZS5pdGVtcygpOgorICAgICAgICAgICAgZXEoYmFzZTY0LnVybHNhZmVfYjY0ZGVjb2RlKGRhdGEpLCByZXMpCisgICAgICAgICAgICBlcShiYXNlNjQudXJsc2FmZV9iNjRkZWNvZGUoZGF0YS5kZWNvZGUoJ2FzY2lpJykpLCByZXMpCiAKICAgICBkZWYgdGVzdF9iNjRkZWNvZGVfcGFkZGluZ19lcnJvcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IsIGJhc2U2NC5iNjRkZWNvZGUsIGInYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IsIGJhc2U2NC5iNjRkZWNvZGUsICdhYmMnKQogCiAgICAgZGVmIHRlc3RfYjY0ZGVjb2RlX2ludmFsaWRfY2hhcnMoc2VsZik6CiAgICAgICAgICMgaXNzdWUgMTQ2NjA2NTogVGVzdCBzb21lIGludmFsaWQgY2hhcmFjdGVycy4KQEAgLTE1NSw4ICsxNjQsMTEgQEAKICAgICAgICAgICAgICAgICAgKGInWVdKalxuWVdJPScsIGInYWJjYWInKSkKICAgICAgICAgZm9yIGJzdHIsIHJlcyBpbiB0ZXN0czoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmFzZTY0LmI2NGRlY29kZShic3RyKSwgcmVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYXNlNjQuYjY0ZGVjb2RlKGJzdHIuZGVjb2RlKCdhc2NpaScpKSwgcmVzKQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiaW5hc2NpaS5FcnJvcik6CiAgICAgICAgICAgICAgICAgYmFzZTY0LmI2NGRlY29kZShic3RyLCB2YWxpZGF0ZT1UcnVlKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiaW5hc2NpaS5FcnJvcik6CisgICAgICAgICAgICAgICAgYmFzZTY0LmI2NGRlY29kZShic3RyLmRlY29kZSgnYXNjaWknKSwgdmFsaWRhdGU9VHJ1ZSkKIAogICAgIGRlZiB0ZXN0X2IzMmVuY29kZShzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCkBAIC0xNzEsNDAgKzE4Myw2MyBAQAogCiAgICAgZGVmIHRlc3RfYjMyZGVjb2RlKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJycpLCBiJycpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidBQT09PT09PScpLCBiJ1x4MDAnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTUU9PT09PT0nKSwgYidhJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01GUkE9PT09JyksIGInYWInKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTUZSR0c9PT0nKSwgYidhYmMnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTUZSR0daQT0nKSwgYidhYmNkJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01GUkdHWkRGJyksIGInYWJjZGUnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5iMzJkZWNvZGUsICIiKQorICAgICAgICB0ZXN0cyA9IHtiJyc6IGInJywKKyAgICAgICAgICAgICAgICAgYidBQT09PT09PSc6IGInXHgwMCcsCisgICAgICAgICAgICAgICAgIGInTUU9PT09PT0nOiBiJ2EnLAorICAgICAgICAgICAgICAgICBiJ01GUkE9PT09JzogYidhYicsCisgICAgICAgICAgICAgICAgIGInTUZSR0c9PT0nOiBiJ2FiYycsCisgICAgICAgICAgICAgICAgIGInTUZSR0daQT0nOiBiJ2FiY2QnLAorICAgICAgICAgICAgICAgICBiJ01GUkdHWkRGJzogYidhYmNkZScsCisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgZm9yIGRhdGEsIHJlcyBpbiB0ZXN0cy5pdGVtcygpOgorICAgICAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShkYXRhKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShkYXRhLmRlY29kZSgnYXNjaWknKSksIHJlcykKIAogICAgIGRlZiB0ZXN0X2IzMmRlY29kZV9jYXNlZm9sZChzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYicnLCBUcnVlKSwgYicnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTUU9PT09PT0nLCBUcnVlKSwgYidhJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01GUkE9PT09JywgVHJ1ZSksIGInYWInKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTUZSR0c9PT0nLCBUcnVlKSwgYidhYmMnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTUZSR0daQT0nLCBUcnVlKSwgYidhYmNkJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01GUkdHWkRGJywgVHJ1ZSksIGInYWJjZGUnKQotICAgICAgICAjIExvd2VyIGNhc2VzCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidtZT09PT09PScsIFRydWUpLCBiJ2EnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInbWZyYT09PT0nLCBUcnVlKSwgYidhYicpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidtZnJnZz09PScsIFRydWUpLCBiJ2FiYycpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidtZnJnZ3phPScsIFRydWUpLCBiJ2FiY2QnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInbWZyZ2d6ZGYnLCBUcnVlKSwgYidhYmNkZScpCi0gICAgICAgICMgRXhwZWN0ZWQgZXhjZXB0aW9ucworICAgICAgICB0ZXN0cyA9IHtiJyc6IGInJywKKyAgICAgICAgICAgICAgICAgYidNRT09PT09PSc6IGInYScsCisgICAgICAgICAgICAgICAgIGInTUZSQT09PT0nOiBiJ2FiJywKKyAgICAgICAgICAgICAgICAgYidNRlJHRz09PSc6IGInYWJjJywKKyAgICAgICAgICAgICAgICAgYidNRlJHR1pBPSc6IGInYWJjZCcsCisgICAgICAgICAgICAgICAgIGInTUZSR0daREYnOiBiJ2FiY2RlJywKKyAgICAgICAgICAgICAgICAgIyBMb3dlciBjYXNlcworICAgICAgICAgICAgICAgICBiJ21lPT09PT09JzogYidhJywKKyAgICAgICAgICAgICAgICAgYidtZnJhPT09PSc6IGInYWInLAorICAgICAgICAgICAgICAgICBiJ21mcmdnPT09JzogYidhYmMnLAorICAgICAgICAgICAgICAgICBiJ21mcmdnemE9JzogYidhYmNkJywKKyAgICAgICAgICAgICAgICAgYidtZnJnZ3pkZic6IGInYWJjZGUnLAorICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgZm9yIGRhdGEsIHJlcyBpbiB0ZXN0cy5pdGVtcygpOgorICAgICAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShkYXRhLCBUcnVlKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShkYXRhLmRlY29kZSgnYXNjaWknKSwgVHJ1ZSksIHJlcykKKwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5iMzJkZWNvZGUsIGInbWU9PT09PT0nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5iMzJkZWNvZGUsICdtZT09PT09PScpCisKICAgICAgICAgIyBNYXBwaW5nIHplcm8gYW5kIG9uZQogICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTUxPMjM0NTYnKSwgYidiXHhkZFx4YWRceGYzXHhiZScpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNMTAyMzQ1NicsIG1hcDAxPWInTCcpLCBiJ2JceGRkXHhhZFx4ZjNceGJlJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ00xMDIzNDU2JywgbWFwMDE9YidJJyksIGInYlx4MWRceGFkXHhmM1x4YmUnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5iMzJkZWNvZGUsIGIiIiwgbWFwMDE9IiIpCisgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoJ01MTzIzNDU2JyksIGInYlx4ZGRceGFkXHhmM1x4YmUnKQorCisgICAgICAgIG1hcF90ZXN0cyA9IHsoYidNMTAyMzQ1NicsIGInTCcpOiBiJ2JceGRkXHhhZFx4ZjNceGJlJywKKyAgICAgICAgICAgICAgICAgICAgIChiJ00xMDIzNDU2JywgYidJJyk6IGInYlx4MWRceGFkXHhmM1x4YmUnLAorICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICBmb3IgKGRhdGEsIG1hcDAxKSwgcmVzIGluIG1hcF90ZXN0cy5pdGVtcygpOgorICAgICAgICAgICAgZGF0YV9zdHIgPSBkYXRhLmRlY29kZSgnYXNjaWknKQorICAgICAgICAgICAgbWFwMDFfc3RyID0gbWFwMDEuZGVjb2RlKCdhc2NpaScpCisKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoZGF0YSwgbWFwMDE9bWFwMDEpLCByZXMpCisgICAgICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGRhdGFfc3RyLCBtYXAwMT1tYXAwMSksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoZGF0YSwgbWFwMDE9bWFwMDFfc3RyKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShkYXRhX3N0ciwgbWFwMDE9bWFwMDFfc3RyKSwgcmVzKQogCiAgICAgZGVmIHRlc3RfYjMyZGVjb2RlX2Vycm9yKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhiaW5hc2NpaS5FcnJvciwgYmFzZTY0LmIzMmRlY29kZSwgYidhYmMnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhiaW5hc2NpaS5FcnJvciwgYmFzZTY0LmIzMmRlY29kZSwgYidBQkNERUY9PScpCisgICAgICAgIGZvciBkYXRhIGluIFtiJ2FiYycsIGInQUJDREVGPT0nXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IpOgorICAgICAgICAgICAgICAgIGJhc2U2NC5iMzJkZWNvZGUoZGF0YSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IpOgorICAgICAgICAgICAgICAgIGJhc2U2NC5iMzJkZWNvZGUoZGF0YS5kZWNvZGUoJ2FzY2lpJykpCiAKICAgICBkZWYgdGVzdF9iMTZlbmNvZGUoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbApAQCAtMjE1LDEyICsyNTAsMjQgQEAKICAgICBkZWYgdGVzdF9iMTZkZWNvZGUoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBlcShiYXNlNjQuYjE2ZGVjb2RlKGInMDEwMkFCQ0RFRicpLCBiJ1x4MDFceDAyXHhhYlx4Y2RceGVmJykKKyAgICAgICAgZXEoYmFzZTY0LmIxNmRlY29kZSgnMDEwMkFCQ0RFRicpLCBiJ1x4MDFceDAyXHhhYlx4Y2RceGVmJykKICAgICAgICAgZXEoYmFzZTY0LmIxNmRlY29kZShiJzAwJyksIGInXHgwMCcpCisgICAgICAgIGVxKGJhc2U2NC5iMTZkZWNvZGUoJzAwJyksIGInXHgwMCcpCiAgICAgICAgICMgTG93ZXIgY2FzZSBpcyBub3QgYWxsb3dlZCB3aXRob3V0IGEgZmxhZwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhiaW5hc2NpaS5FcnJvciwgYmFzZTY0LmIxNmRlY29kZSwgYicwMTAyYWJjZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IsIGJhc2U2NC5iMTZkZWNvZGUsICcwMTAyYWJjZGVmJykKICAgICAgICAgIyBDYXNlIGZvbGQKICAgICAgICAgZXEoYmFzZTY0LmIxNmRlY29kZShiJzAxMDJhYmNkZWYnLCBUcnVlKSwgYidceDAxXHgwMlx4YWJceGNkXHhlZicpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmFzZTY0LmIxNmRlY29kZSwgIiIpCisgICAgICAgIGVxKGJhc2U2NC5iMTZkZWNvZGUoJzAxMDJhYmNkZWYnLCBUcnVlKSwgYidceDAxXHgwMlx4YWJceGNkXHhlZicpCisKKyAgICBkZWYgdGVzdF9kZWNvZGVfbm9uYXNjaWlfc3RyKHNlbGYpOgorICAgICAgICBkZWNvZGVfZnVuY3MgPSAoYmFzZTY0LmI2NGRlY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBiYXNlNjQudXJsc2FmZV9iNjRkZWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBiYXNlNjQuYjMyZGVjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0LmIxNmRlY29kZSkKKyAgICAgICAgZm9yIGYgaW4gZGVjb2RlX2Z1bmNzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZiwgJ3dpdGggbm9uLWFzY2lpIFx4Y2InKQogCiAgICAgZGVmIHRlc3RfRXJyb3JIZXJpdGFnZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoYmluYXNjaWkuRXJyb3IsIFZhbHVlRXJyb3IpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkgYi9MaWIvdGVzdC90ZXN0X2JpZ21lbS5weQppbmRleCBmM2M2ZWJiLi4wZTU0NTk1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2JpZ21lbS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2JpZ21lbS5weQpAQCAtMSwzICsxLDEzIEBACisiIiJCaWdtZW0gdGVzdHMgLSB0ZXN0cyBmb3IgdGhlIDMyLWJpdCBib3VuZGFyeSBpbiBjb250YWluZXJzLgorCitUaGVzZSB0ZXN0cyB0cnkgdG8gZXhlcmNpc2UgdGhlIDMyLWJpdCBib3VuZGFyeSB0aGF0IGlzIHNvbWV0aW1lcywgaWYKK3JhcmVseSwgZXhjZWVkZWQgaW4gcHJhY3RpY2UsIGJ1dCBhbG1vc3QgbmV2ZXIgdGVzdGVkLiAgVGhleSBhcmUgcmVhbGx5IG9ubHkKK21lYW5pbmdmdWwgb24gNjQtYml0IGJ1aWxkcyBvbiBtYWNoaW5lcyB3aXRoIGEgKmxvdCogb2YgbWVtb3J5LCBidXQgdGhlCit0ZXN0cyBhcmUgYWx3YXlzIHJ1biwgdXN1YWxseSB3aXRoIHZlcnkgbG93IG1lbW9yeSBsaW1pdHMgdG8gbWFrZSBzdXJlIHRoZQordGVzdHMgdGhlbXNlbHZlcyBkb24ndCBzdWZmZXIgZnJvbSBiaXRyb3QuICBUbyBydW4gdGhlbSBmb3IgcmVhbCwgcGFzcyBhCitoaWdoIG1lbW9yeSBsaW1pdCB0byByZWdydGVzdCwgd2l0aCB0aGUgLU0gb3B0aW9uLgorIiIiCisKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGJpZ21lbXRlc3QsIF8xRywgXzJHLCBfNEcKIApAQCAtNiwyMCArMTYsMzUgQEAKIGltcG9ydCBzeXMKIGltcG9ydCBmdW5jdG9vbHMKIAorIyBUaGVzZSB0ZXN0cyBhbGwgdXNlIG9uZSBvZiB0aGUgYmlnbWVtdGVzdCBkZWNvcmF0b3JzIHRvIGluZGljYXRlIGhvdyBtdWNoCisjIG1lbW9yeSB0aGV5IHVzZSBhbmQgaG93IG11Y2ggbWVtb3J5IHRoZXkgbmVlZCB0byBiZSBldmVuIG1lYW5pbmdmdWwuICBUaGUKKyMgZGVjb3JhdG9ycyB0YWtlIHR3byBhcmd1bWVudHM6IGEgJ21lbXVzZScgaW5kaWNhdG9yIGRlY2xhcmluZworIyAoYXBwcm94aW1hdGUpIGJ5dGVzIHBlciBzaXplLXVuaXQgdGhlIHRlc3Qgd2lsbCB1c2UgKGF0IHBlYWsgdXNhZ2UpLCBhbmQgYQorIyAnbWluc2l6ZScgaW5kaWNhdG9yIGRlY2xhcmluZyBhIG1pbmltdW0gKnVzZWZ1bCogc2l6ZS4gIEEgdGVzdCB0aGF0CisjIGFsbG9jYXRlcyBhIGJ5dGVzdHJpbmcgdG8gdGVzdCB2YXJpb3VzIG9wZXJhdGlvbnMgbmVhciB0aGUgZW5kIHdpbGwgaGF2ZSBhCisjIG1pbnNpemUgb2YgYXQgbGVhc3QgMkdiIChvciBpdCB3b3VsZG4ndCByZWFjaCB0aGUgMzItYml0IGxpbWl0LCBzbyB0aGUKKyMgdGVzdCB3b3VsZG4ndCBiZSB2ZXJ5IHVzZWZ1bCkgYW5kIGEgbWVtdXNlIG9mIDEgKG9uZSBieXRlIHBlciBzaXplLXVuaXQsCisjIGlmIGl0IGFsbG9jYXRlcyBvbmx5IG9uZSBiaWcgc3RyaW5nIGF0IGEgdGltZS4pCisjCisjIFdoZW4gcnVuIHdpdGggYSBtZW1vcnkgbGltaXQgc2V0LCBib3RoIGRlY29yYXRvcnMgc2tpcCB0ZXN0cyB0aGF0IG5lZWQKKyMgbW9yZSBtZW1vcnkgdGhhbiBhdmFpbGFibGUgdG8gYmUgbWVhbmluZ2Z1bC4gIFRoZSBwcmVjaXNpb25iaWdtZW10ZXN0IHdpbGwKKyMgYWx3YXlzIHBhc3MgbWluc2l6ZSBhcyBzaXplLCBldmVuIGlmIHRoZXJlIGlzIG11Y2ggbW9yZSBtZW1vcnkgYXZhaWxhYmxlLgorIyBUaGUgYmlnbWVtdGVzdCBkZWNvcmF0b3Igd2lsbCBzY2FsZSBzaXplIHVwd2FyZCB0byBmaWxsIGF2YWlsYWJsZSBtZW1vcnkuCisjCiAjIEJpZ21lbSB0ZXN0aW5nIGhvdXNlcnVsZXM6CiAjCiAjICAtIFRyeSBub3QgdG8gYWxsb2NhdGUgdG9vIG1hbnkgbGFyZ2Ugb2JqZWN0cy4gSXQncyBva2F5IHRvIHJlbHkgb24KLSMgICAgcmVmY291bnRpbmcgc2VtYW50aWNzLCBidXQgZG9uJ3QgZm9yZ2V0IHRoYXQgJ3MgPSBjcmVhdGVfbGFyZ2VzdHJpbmcoKScKKyMgICAgcmVmY291bnRpbmcgc2VtYW50aWNzLCBhbmQgZG9uJ3QgZm9yZ2V0IHRoYXQgJ3MgPSBjcmVhdGVfbGFyZ2VzdHJpbmcoKScKICMgICAgZG9lc24ndCByZWxlYXNlIHRoZSBvbGQgJ3MnIChpZiBpdCBleGlzdHMpIHVudGlsIHdlbGwgYWZ0ZXIgaXRzIG5ldwogIyAgICB2YWx1ZSBoYXMgYmVlbiBjcmVhdGVkLiBVc2UgJ2RlbCBzJyBiZWZvcmUgdGhlIGNyZWF0ZV9sYXJnZXN0cmluZyBjYWxsLgogIwotIyAgLSBEbyAqbm90KiBjb21wYXJlIGxhcmdlIG9iamVjdHMgdXNpbmcgYXNzZXJ0RXF1YWwgb3Igc2ltaWxhci4gSXQncyBhCi0jICAgIGxlbmd0aHkgb3BlcmF0aW9uIGFuZCB0aGUgZXJyb3JtZXNzYWdlIHdpbGwgYmUgdXR0ZXJseSB1c2VsZXNzIGR1ZSB0bwotIyAgICBpdHMgc2l6ZS4gVG8gbWFrZSBzdXJlIHdoZXRoZXIgYSByZXN1bHQgaGFzIHRoZSByaWdodCBjb250ZW50cywgYmV0dGVyCi0jICAgIHRvIHVzZSB0aGUgc3RyaXAgb3IgY291bnQgbWV0aG9kcywgb3IgY29tcGFyZSBtZWFuaW5nZnVsIHNsaWNlcy4KKyMgIC0gRG8gKm5vdCogY29tcGFyZSBsYXJnZSBvYmplY3RzIHVzaW5nIGFzc2VydEVxdWFsLCBhc3NlcnRJbiBvciBzaW1pbGFyLgorIyAgICBJdCdzIGEgbGVuZ3RoeSBvcGVyYXRpb24gYW5kIHRoZSBlcnJvcm1lc3NhZ2Ugd2lsbCBiZSB1dHRlcmx5IHVzZWxlc3MKKyMgICAgZHVlIHRvIGl0cyBzaXplLiAgVG8gbWFrZSBzdXJlIHdoZXRoZXIgYSByZXN1bHQgaGFzIHRoZSByaWdodCBjb250ZW50cywKKyMgICAgYmV0dGVyIHRvIHVzZSB0aGUgc3RyaXAgb3IgY291bnQgbWV0aG9kcywgb3IgY29tcGFyZSBtZWFuaW5nZnVsIHNsaWNlcy4KICMKICMgIC0gRG9uJ3QgZm9yZ2V0IHRvIHRlc3QgZm9yIGxhcmdlIGluZGljZXMsIG9mZnNldHMgYW5kIHJlc3VsdHMgYW5kIHN1Y2gsCi0jICAgIGluIGFkZGl0aW9uIHRvIGxhcmdlIHNpemVzLgorIyAgICBpbiBhZGRpdGlvbiB0byBsYXJnZSBzaXplcy4gQW55dGhpbmcgdGhhdCBwcm9iZXMgdGhlIDMyLWJpdCBib3VuZGFyeS4KICMKICMgIC0gV2hlbiByZXBlYXRpbmcgYW4gb2JqZWN0IChzYXksIGEgc3Vic3RyaW5nLCBvciBhIHNtYWxsIGxpc3QpIHRvIGNyZWF0ZQogIyAgICBhIGxhcmdlIG9iamVjdCwgbWFrZSB0aGUgc3Vib2JqZWN0IG9mIGEgbGVuZ3RoIHRoYXQgaXMgbm90IGEgcG93ZXIgb2YKQEAgLTM3LDEzICs2MiwxNCBAQAogIyBmYWlsIGFzIHdlbGwuIEkgZG8gbm90IGtub3cgd2hldGhlciBpdCBpcyBkdWUgdG8gbWVtb3J5IGZyYWdtZW50YXRpb24KICMgaXNzdWVzLCBvciBvdGhlciBzcGVjaWZpY3Mgb2YgdGhlIHBsYXRmb3JtIG1hbGxvYygpIHJvdXRpbmUuCiAKLWNoYXJhY3Rlcl9zaXplID0gNCBpZiBzeXMubWF4dW5pY29kZSA+IDB4RkZGRiBlbHNlIDIKK2FzY2lpX2NoYXJfc2l6ZSA9IDEKK3VjczJfY2hhcl9zaXplID0gMgordWNzNF9jaGFyX3NpemUgPSA0CiAKIAogY2xhc3MgQmFzZVN0clRlc3Q6CiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIpCi0gICAgZGVmIHRlc3RfY2FwaXRhbGl6ZShzZWxmLCBzaXplKToKKyAgICBkZWYgX3Rlc3RfY2FwaXRhbGl6ZShzZWxmLCBzaXplKToKICAgICAgICAgXyA9IHNlbGYuZnJvbV9sYXRpbjEKICAgICAgICAgU1VCU1RSID0gc2VsZi5mcm9tX2xhdGluMSgnIGFiYyBkZWYgZ2hpJykKICAgICAgICAgcyA9IF8oJy0nKSAqIHNpemUgKyBTVUJTVFIKQEAgLTkyLDcgKzExOCw3IEBACiAgICAgICAgIF8gPSBzZWxmLmZyb21fbGF0aW4xCiAgICAgICAgIHMgPSBfKCctJykgKiBzaXplCiAgICAgICAgIHRhYnNpemUgPSA4Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5leHBhbmR0YWJzKCksIHMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmV4cGFuZHRhYnMoKSA9PSBzKQogICAgICAgICBkZWwgcwogICAgICAgICBzbGVuLCByZW1haW5kZXIgPSBkaXZtb2Qoc2l6ZSwgdGFic2l6ZSkKICAgICAgICAgcyA9IF8oJyAgICAgICBcdCcpICogc2xlbgpAQCAtMzQ3LDcgKzM3Myw3IEBACiAgICAgIyBzdWZmZXIgZm9yIHRoZSBsaXN0IHNpemUuIChPdGhlcndpc2UsIGl0J2QgY29zdCBhbm90aGVyIDQ4IHRpbWVzCiAgICAgIyBzaXplIGluIGJ5dGVzISkgTmV2ZXJ0aGVsZXNzLCBhIGxpc3Qgb2Ygc2l6ZSB0YWtlcwogICAgICMgOCpzaXplIGJ5dGVzLgotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgNSwgbWVtdXNlPTEwKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgNSwgbWVtdXNlPTIgKiBhc2NpaV9jaGFyX3NpemUgKyA4KQogICAgIGRlZiB0ZXN0X3NwbGl0X2xhcmdlKHNlbGYsIHNpemUpOgogICAgICAgICBfID0gc2VsZi5mcm9tX2xhdGluMQogICAgICAgICBzID0gXygnIGEnKSAqIHNpemUgKyBfKCcgJykKQEAgLTM2Niw5ICszOTIsOSBAQAogICAgICAgICAjIHRha2UgdXAgYW4gaW5vcmRpbmF0ZSBhbW91bnQgb2YgbWVtb3J5CiAgICAgICAgIGNodW5rc2l6ZSA9IGludChzaXplICoqIDAuNSArIDIpIC8vIDIKICAgICAgICAgU1VCU1RSID0gXygnICcpICogY2h1bmtzaXplICsgXygnXG4nKSArIF8oJyAnKSAqIGNodW5rc2l6ZSArIF8oJ1xyXG4nKQotICAgICAgICBzID0gU1VCU1RSICogY2h1bmtzaXplCisgICAgICAgIHMgPSBTVUJTVFIgKiAoY2h1bmtzaXplICogMikKICAgICAgICAgbCA9IHMuc3BsaXRsaW5lcygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGwpLCBjaHVua3NpemUgKiAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsKSwgY2h1bmtzaXplICogNCkKICAgICAgICAgZXhwZWN0ZWQgPSBfKCcgJykgKiBjaHVua3NpemUKICAgICAgICAgZm9yIGl0ZW0gaW4gbDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXRlbSwgZXhwZWN0ZWQpCkBAIC0zOTQsOCArNDIwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocyksIHNpemUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5zdHJpcCgpLCBTVUJTVFIuc3RyaXAoKSkKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MikKLSAgICBkZWYgdGVzdF9zd2FwY2FzZShzZWxmLCBzaXplKToKKyAgICBkZWYgX3Rlc3Rfc3dhcGNhc2Uoc2VsZiwgc2l6ZSk6CiAgICAgICAgIF8gPSBzZWxmLmZyb21fbGF0aW4xCiAgICAgICAgIFNVQlNUUiA9IF8oImFCY0RlRkcxMi4nXHhhOVx4MDAiKQogICAgICAgICBzdWJsZW4gPSBsZW4oU1VCU1RSKQpAQCAtNDA2LDggKzQzMSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1s6c3VibGVuICogM10sIFNVQlNUUi5zd2FwY2FzZSgpICogMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWy1zdWJsZW4gKiAzOl0sIFNVQlNUUi5zd2FwY2FzZSgpICogMykKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MikKLSAgICBkZWYgdGVzdF90aXRsZShzZWxmLCBzaXplKToKKyAgICBkZWYgX3Rlc3RfdGl0bGUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIF8gPSBzZWxmLmZyb21fbGF0aW4xCiAgICAgICAgIFNVQlNUUiA9IF8oJ1NwYWFIQWFhQWFoYW0nKQogICAgICAgICBzID0gU1VCU1RSICogKHNpemUgLy8gbGVuKFNVQlNUUikgKyAyKQpAQCAtNDE5LDE0ICs0NDMsNyBAQAogICAgIGRlZiB0ZXN0X3RyYW5zbGF0ZShzZWxmLCBzaXplKToKICAgICAgICAgXyA9IHNlbGYuZnJvbV9sYXRpbjEKICAgICAgICAgU1VCU1RSID0gXygnYVp6LnouQWF6LicpCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoU1VCU1RSLCBzdHIpOgotICAgICAgICAgICAgdHJhbnMgPSB7Ci0gICAgICAgICAgICAgICAgb3JkKF8oJy4nKSk6IF8oJy0nKSwKLSAgICAgICAgICAgICAgICBvcmQoXygnYScpKTogXygnIScpLAotICAgICAgICAgICAgICAgIG9yZChfKCdaJykpOiBfKCckJyksCi0gICAgICAgICAgICB9Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0cmFucyA9IGJ5dGVzLm1ha2V0cmFucyhiJy5hWicsIGInLSEkJykKKyAgICAgICAgdHJhbnMgPSBieXRlcy5tYWtldHJhbnMoYicuYVonLCBiJy0hJCcpCiAgICAgICAgIHN1YmxlbiA9IGxlbihTVUJTVFIpCiAgICAgICAgIHJlcGVhdHMgPSBzaXplIC8vIHN1YmxlbiArIDIKICAgICAgICAgcyA9IFNVQlNUUiAqIHJlcGVhdHMKQEAgLTUxOSwxOSArNTM2LDE5IEBACiAgICAgICAgIGVkZ2UgPSBfKCctJykgKiAoc2l6ZSAvLyAyKQogICAgICAgICBzID0gXygnJykuam9pbihbZWRnZSwgU1VCU1RSLCBlZGdlXSkKICAgICAgICAgZGVsIGVkZ2UKLSAgICAgICAgc2VsZi5hc3NlcnRJbihTVUJTVFIsIHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oU1VCU1RSICogMiwgcykKLSAgICAgICAgc2VsZi5hc3NlcnRJbihfKCctJyksIHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oXygnYScpLCBzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoU1VCU1RSIGluIHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoU1VCU1RSICogMiBpbiBzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoXygnLScpIGluIHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoXygnYScpIGluIHMpCiAgICAgICAgIHMgKz0gXygnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oXygnYScpLCBzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoXygnYScpIGluIHMpCiAKICAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9MikKICAgICBkZWYgdGVzdF9jb21wYXJlKHNlbGYsIHNpemUpOgogICAgICAgICBfID0gc2VsZi5mcm9tX2xhdGluMQogICAgICAgICBzMSA9IF8oJy0nKSAqIHNpemUKICAgICAgICAgczIgPSBfKCctJykgKiBzaXplCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoczEsIHMyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoczEgPT0gczIpCiAgICAgICAgIGRlbCBzMgogICAgICAgICBzMiA9IHMxICsgXygnYScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoczEgPT0gczIpCkBAIC01NTIsNyArNTY5LDcgQEAKICAgICAgICAgaDEgPSBoYXNoKHMpCiAgICAgICAgIGRlbCBzCiAgICAgICAgIHMgPSBfKCdceDAwJykgKiAoc2l6ZSArIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaDEgPT0gaGFzaChzKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChoMSwgaGFzaChzKSkKIAogCiBjbGFzcyBTdHJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBCYXNlU3RyVGVzdCk6CkBAIC01NjMsNyArNTgwLDYgQEAKICAgICBkZWYgYmFzaWNfZW5jb2RlX3Rlc3Qoc2VsZiwgc2l6ZSwgZW5jLCBjPScuJywgZXhwZWN0ZWRzaXplPU5vbmUpOgogICAgICAgICBpZiBleHBlY3RlZHNpemUgaXMgTm9uZToKICAgICAgICAgICAgIGV4cGVjdGVkc2l6ZSA9IHNpemUKLQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzID0gYyAqIHNpemUKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHMuZW5jb2RlKGVuYykpLCBleHBlY3RlZHNpemUpCkBAIC01ODIsNDggKzU5OCw2NCBAQAogICAgICAgICAgICAgICAgIG1lbXVzZSA9IG1ldGgubWVtdXNlCiAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIG1ldGgubWVtdXNlID0gY2hhcmFjdGVyX3NpemUgKiBtZW11c2UKKyAgICAgICAgICAgIG1ldGgubWVtdXNlID0gYXNjaWlfY2hhcl9zaXplICogbWVtdXNlCiAgICAgICAgICAgICBzZWxmLl9hZGp1c3RlZFtuYW1lXSA9IG1lbXVzZQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBmb3IgbmFtZSwgbWVtdXNlIGluIHNlbGYuX2FkanVzdGVkLml0ZW1zKCk6CiAgICAgICAgICAgICBnZXRhdHRyKHR5cGUoc2VsZiksIG5hbWUpLm1lbXVzZSA9IG1lbXVzZQogCi0gICAgIyB0aGUgdXRmOCBlbmNvZGVyIHByZWFsbG9jYXRlcyBiaWcgdGltZSAoNHggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzKQotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMiwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICsgNCkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPXVjczRfY2hhcl9zaXplICogMykKKyAgICBkZWYgdGVzdF9jYXBpdGFsaXplKHNlbGYsIHNpemUpOgorICAgICAgICBzZWxmLl90ZXN0X2NhcGl0YWxpemUoc2l6ZSkKKworICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9dWNzNF9jaGFyX3NpemUgKiAzKQorICAgIGRlZiB0ZXN0X3RpdGxlKHNlbGYsIHNpemUpOgorICAgICAgICBzZWxmLl90ZXN0X3RpdGxlKHNpemUpCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPXVjczRfY2hhcl9zaXplICogMykKKyAgICBkZWYgdGVzdF9zd2FwY2FzZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF9zd2FwY2FzZShzaXplKQorCisgICAgIyBNYW55IGNvZGVjcyBjb252ZXJ0IHRvIHRoZSBsZWdhY3kgcmVwcmVzZW50YXRpb24gZmlyc3QsIGV4cGxhaW5pbmcKKyAgICAjIHdoeSB3ZSBhZGQgJ3VjczRfY2hhcl9zaXplJyB0byB0aGUgJ21lbXVzZScgYmVsb3cuCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDIsIG1lbXVzZT1hc2NpaV9jaGFyX3NpemUgKyAxKQogICAgIGRlZiB0ZXN0X2VuY29kZShzZWxmLCBzaXplKToKICAgICAgICAgcmV0dXJuIHNlbGYuYmFzaWNfZW5jb2RlX3Rlc3Qoc2l6ZSwgJ3V0Zi04JykKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHIC8vIDYgKyAyLCBtZW11c2U9Y2hhcmFjdGVyX3NpemUgKyAxKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHIC8vIDYgKyAyLCBtZW11c2U9YXNjaWlfY2hhcl9zaXplICsgdWNzNF9jaGFyX3NpemUgKyAxKQogICAgIGRlZiB0ZXN0X2VuY29kZV9yYXdfdW5pY29kZV9lc2NhcGUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJldHVybiBzZWxmLmJhc2ljX2VuY29kZV90ZXN0KHNpemUsICdyYXdfdW5pY29kZV9lc2NhcGUnKQogICAgICAgICBleGNlcHQgTWVtb3J5RXJyb3I6CiAgICAgICAgICAgICBwYXNzICMgYWNjZXB0YWJsZSBvbiAzMi1iaXQKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHIC8vIDUgKyA3MCwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICsgMSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RyAvLyA1ICsgNzAsIG1lbXVzZT1hc2NpaV9jaGFyX3NpemUgKyB1Y3M0X2NoYXJfc2l6ZSArIDEpCiAgICAgZGVmIHRlc3RfZW5jb2RlX3V0Zjcoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJldHVybiBzZWxmLmJhc2ljX2VuY29kZV90ZXN0KHNpemUsICd1dGY3JykKICAgICAgICAgZXhjZXB0IE1lbW9yeUVycm9yOgogICAgICAgICAgICAgcGFzcyAjIGFjY2VwdGFibGUgb24gMzItYml0CiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RyAvLyA0ICsgNSwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICsgNCkKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RyAvLyA0ICsgNSwgbWVtdXNlPWFzY2lpX2NoYXJfc2l6ZSArIHVjczRfY2hhcl9zaXplICsgNCkKICAgICBkZWYgdGVzdF9lbmNvZGVfdXRmMzIoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmJhc2ljX2VuY29kZV90ZXN0KHNpemUsICd1dGYzMicsIGV4cGVjdGVkc2l6ZT00KnNpemUrNCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmJhc2ljX2VuY29kZV90ZXN0KHNpemUsICd1dGYzMicsIGV4cGVjdGVkc2l6ZT00ICogc2l6ZSArIDQpCiAgICAgICAgIGV4Y2VwdCBNZW1vcnlFcnJvcjoKICAgICAgICAgICAgIHBhc3MgIyBhY2NlcHRhYmxlIG9uIDMyLWJpdAogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgLSAxLCBtZW11c2U9Y2hhcmFjdGVyX3NpemUgKyAxKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC0gMSwgbWVtdXNlPWFzY2lpX2NoYXJfc2l6ZSArIDEpCiAgICAgZGVmIHRlc3RfZW5jb2RlX2FzY2lpKHNlbGYsIHNpemUpOgogICAgICAgICByZXR1cm4gc2VsZi5iYXNpY19lbmNvZGVfdGVzdChzaXplLCAnYXNjaWknLCBjPSdBJykKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMTAsIG1lbXVzZT1jaGFyYWN0ZXJfc2l6ZSAqIDIpCisgICAgIyBzdHIgJSAoLi4uKSB1c2VzIGEgUHlfVUNTNCBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24KKworICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMTAsIG1lbXVzZT1hc2NpaV9jaGFyX3NpemUgKiAyICsgdWNzNF9jaGFyX3NpemUpCiAgICAgZGVmIHRlc3RfZm9ybWF0KHNlbGYsIHNpemUpOgogICAgICAgICBzID0gJy0nICogc2l6ZQogICAgICAgICBzZiA9ICclcycgJSAocywpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgc2YpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzID09IHNmKQogICAgICAgICBkZWwgc2YKICAgICAgICAgc2YgPSAnLi4lcy4uJyAlIChzLCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2YpLCBsZW4ocykgKyA0KQpAQCAtNjQwLDcgKzY3Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5jb3VudCgnLicpLCAzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoJy0nKSwgc2l6ZSAqIDIpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9Y2hhcmFjdGVyX3NpemUgKiAyKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMTAsIG1lbXVzZT1hc2NpaV9jaGFyX3NpemUgKiAyKQogICAgIGRlZiB0ZXN0X3JlcHJfc21hbGwoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHMgPSAnLScgKiBzaXplCiAgICAgICAgIHMgPSByZXByKHMpCkBAIC02NjEsNyArNjkzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KCdcXCcpLCBzaXplKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoJzAnKSwgc2l6ZSAqIDIpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9Y2hhcmFjdGVyX3NpemUgKiA1KQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMTAsIG1lbXVzZT1hc2NpaV9jaGFyX3NpemUgKiA1KQogICAgIGRlZiB0ZXN0X3JlcHJfbGFyZ2Uoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHMgPSAnXHgwMCcgKiBzaXplCiAgICAgICAgIHMgPSByZXByKHMpCkBAIC02NzEsNyArNzAzLDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5jb3VudCgnXFwnKSwgc2l6ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KCcwJyksIHNpemUgKiAyKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgLy8gNSArIDEsIG1lbXVzZT1jaGFyYWN0ZXJfc2l6ZSAqIDcpCisgICAgIyBhc2NpaSgpIGNhbGxzIGVuY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpLCB3aGljaCBpdHNlbGYKKyAgICAjIGNyZWF0ZXMgYSB0ZW1wb3JhcnkgUHlfVU5JQ09ERSByZXByZXNlbnRhdGlvbiBpbiBhZGRpdGlvbiB0byB0aGUKKyAgICAjIG9yaWdpbmFsIChQeV9VQ1MyKSBvbmUKKyAgICAjIFRoZXJlJ3MgYWxzbyBzb21lIG92ZXJhbGxvY2F0aW9uIHdoZW4gcmVzaXppbmcgdGhlIGFzY2lpKCkgcmVzdWx0CisgICAgIyB0aGF0IGlzbid0IHRha2VuIGludG8gYWNjb3VudCBoZXJlLgorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC8vIDUgKyAxLCBtZW11c2U9dWNzMl9jaGFyX3NpemUgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWNzNF9jaGFyX3NpemUgKyBhc2NpaV9jaGFyX3NpemUgKiA2KQogICAgIGRlZiB0ZXN0X3VuaWNvZGVfcmVwcihzZWxmLCBzaXplKToKICAgICAgICAgIyBVc2UgYW4gYXNzaWduZWQsIGJ1dCBub3QgcHJpbnRhYmxlIGNvZGUgcG9pbnQuCiAgICAgICAgICMgSXQgaXMgaW4gdGhlIHJhbmdlIG9mIHRoZSBsb3cgc3Vycm9nYXRlcyBcdURDMDAtXHVERkZGLgpAQCAtNjg2LDkgKzcyNCw3IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICByID0gcyA9IE5vbmUKIAotICAgICMgVGhlIGNoYXJhY3RlciB0YWtlcyA0IGJ5dGVzIGV2ZW4gaW4gVUNTLTIgYnVpbGRzIGJlY2F1c2UgaXQgd2lsbAotICAgICMgYmUgZGVjb21wb3NlZCBpbnRvIHN1cnJvZ2F0ZXMuCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgLy8gNSArIDEsIG1lbXVzZT00ICsgY2hhcmFjdGVyX3NpemUgKiA5KQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC8vIDUgKyAxLCBtZW11c2U9dWNzNF9jaGFyX3NpemUgKiAyICsgYXNjaWlfY2hhcl9zaXplICogMTApCiAgICAgZGVmIHRlc3RfdW5pY29kZV9yZXByX3dpZGUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIGNoYXIgPSAiXFUwMDAxRENCQSIKICAgICAgICAgcyA9IGNoYXIgKiBzaXplCkBAIC03MDEsMzkgKzczNyw3NiBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgciA9IHMgPSBOb25lCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RyAvLyA1LCBtZW11c2U9Y2hhcmFjdGVyX3NpemUgKiAoNiArIDEpKQotICAgIGRlZiBfdGVzdF91bmljb2RlX3JlcHJfb3ZlcmZsb3coc2VsZiwgc2l6ZSk6Ci0gICAgICAgICMgWFhYIG5vdCBzdXJlIHdoYXQgdGhpcyB0ZXN0IGlzIGFib3V0Ci0gICAgICAgIGNoYXIgPSAiXHVEQ0JBIgotICAgICAgICBzID0gY2hhciAqIHNpemUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgciA9IHJlcHIocykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzID09IGV2YWwocikpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICByID0gcyA9IE5vbmUKKyAgICAjIFRoZSBvcmlnaW5hbCB0ZXN0X3RyYW5zbGF0ZSBpcyBvdmVycmlkZW4gaGVyZSwgc28gYXMgdG8gZ2V0IHRoZQorICAgICMgY29ycmVjdCBzaXplIGVzdGltYXRlOiBzdHIudHJhbnNsYXRlKCkgdXNlcyBhbiBpbnRlcm1lZGlhdGUgUHlfVUNTNAorICAgICMgcmVwcmVzZW50YXRpb24uCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPWFzY2lpX2NoYXJfc2l6ZSAqIDIgKyB1Y3M0X2NoYXJfc2l6ZSkKKyAgICBkZWYgdGVzdF90cmFuc2xhdGUoc2VsZiwgc2l6ZSk6CisgICAgICAgIF8gPSBzZWxmLmZyb21fbGF0aW4xCisgICAgICAgIFNVQlNUUiA9IF8oJ2Faei56LkFhei4nKQorICAgICAgICB0cmFucyA9IHsKKyAgICAgICAgICAgIG9yZChfKCcuJykpOiBfKCctJyksCisgICAgICAgICAgICBvcmQoXygnYScpKTogXygnIScpLAorICAgICAgICAgICAgb3JkKF8oJ1onKSk6IF8oJyQnKSwKKyAgICAgICAgfQorICAgICAgICBzdWJsZW4gPSBsZW4oU1VCU1RSKQorICAgICAgICByZXBlYXRzID0gc2l6ZSAvLyBzdWJsZW4gKyAyCisgICAgICAgIHMgPSBTVUJTVFIgKiByZXBlYXRzCisgICAgICAgIHMgPSBzLnRyYW5zbGF0ZSh0cmFucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocyksIHJlcGVhdHMgKiBzdWJsZW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1s6c3VibGVuXSwgU1VCU1RSLnRyYW5zbGF0ZSh0cmFucykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1stc3VibGVuOl0sIFNVQlNUUi50cmFuc2xhdGUodHJhbnMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoXygnLicpKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KF8oJyEnKSksIHJlcGVhdHMgKiAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoXygneicpKSwgcmVwZWF0cyAqIDMpCiAKIAogY2xhc3MgQnl0ZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBCYXNlU3RyVGVzdCk6CiAKICAgICBkZWYgZnJvbV9sYXRpbjEoc2VsZiwgcyk6Ci0gICAgICAgIHJldHVybiBzLmVuY29kZSgibGF0aW4xIikKKyAgICAgICAgcmV0dXJuIHMuZW5jb2RlKCJsYXRpbi0xIikKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMiwgbWVtdXNlPTEgKyBjaGFyYWN0ZXJfc2l6ZSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDIsIG1lbXVzZT0xICsgYXNjaWlfY2hhcl9zaXplKQogICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmLCBzaXplKToKICAgICAgICAgcyA9IHNlbGYuZnJvbV9sYXRpbjEoJy4nKSAqIHNpemUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocy5kZWNvZGUoJ3V0Zi04JykpLCBzaXplKQogCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0yKQorICAgIGRlZiB0ZXN0X2NhcGl0YWxpemUoc2VsZiwgc2l6ZSk6CisgICAgICAgIHNlbGYuX3Rlc3RfY2FwaXRhbGl6ZShzaXplKQorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0yKQorICAgIGRlZiB0ZXN0X3RpdGxlKHNlbGYsIHNpemUpOgorICAgICAgICBzZWxmLl90ZXN0X3RpdGxlKHNpemUpCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIpCisgICAgZGVmIHRlc3Rfc3dhcGNhc2Uoc2VsZiwgc2l6ZSk6CisgICAgICAgIHNlbGYuX3Rlc3Rfc3dhcGNhc2Uoc2l6ZSkKKwogCiBjbGFzcyBCeXRlYXJyYXlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBCYXNlU3RyVGVzdCk6CiAKICAgICBkZWYgZnJvbV9sYXRpbjEoc2VsZiwgcyk6Ci0gICAgICAgIHJldHVybiBieXRlYXJyYXkocy5lbmNvZGUoImxhdGluMSIpKQorICAgICAgICByZXR1cm4gYnl0ZWFycmF5KHMuZW5jb2RlKCJsYXRpbi0xIikpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDIsIG1lbXVzZT0xICsgY2hhcmFjdGVyX3NpemUpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9MSArIGFzY2lpX2NoYXJfc2l6ZSkKICAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHMgPSBzZWxmLmZyb21fbGF0aW4xKCcuJykgKiBzaXplCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHMuZGVjb2RlKCd1dGYtOCcpKSwgc2l6ZSkKIAorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdF9jYXBpdGFsaXplKHNlbGYsIHNpemUpOgorICAgICAgICBzZWxmLl90ZXN0X2NhcGl0YWxpemUoc2l6ZSkKKworICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdF90aXRsZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF90aXRsZShzaXplKQorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0yKQorICAgIGRlZiB0ZXN0X3N3YXBjYXNlKHNlbGYsIHNpemUpOgorICAgICAgICBzZWxmLl90ZXN0X3N3YXBjYXNlKHNpemUpCisKICAgICB0ZXN0X2hhc2ggPSBOb25lCiAgICAgdGVzdF9zcGxpdF9sYXJnZSA9IE5vbmUKIApAQCAtNzUyLDcgKzgyNSw3IEBACiAgICAgZGVmIHRlc3RfY29tcGFyZShzZWxmLCBzaXplKToKICAgICAgICAgdDEgPSAoJycsKSAqIHNpemUKICAgICAgICAgdDIgPSAoJycsKSAqIHNpemUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MSwgdDIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0MSA9PSB0MikKICAgICAgICAgZGVsIHQyCiAgICAgICAgIHQyID0gKCcnLCkgKiAoc2l6ZSArIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodDEgPT0gdDIpCkBAIC03ODMsOSArODU2LDkgQEAKICAgICBkZWYgdGVzdF9jb250YWlucyhzZWxmLCBzaXplKToKICAgICAgICAgdCA9ICgxLCAyLCAzLCA0LCA1KSAqIHNpemUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odCksIHNpemUgKiA1KQotICAgICAgICBzZWxmLmFzc2VydEluKDUsIHQpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oKDEsIDIsIDMsIDQsIDUpLCB0KQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKDAsIHQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSg1IGluIHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKDEsIDIsIDMsIDQsIDUpIGluIHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoMCBpbiB0KQogCiAgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAxMCwgbWVtdXNlPTgpCiAgICAgZGVmIHRlc3RfaGFzaChzZWxmLCBzaXplKToKQEAgLTg2OSwxMSArOTQyLDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1stNTpdLCAnMCwgMCknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoJzAnKSwgc2l6ZSkKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC8vIDMgKyAyLCBtZW11c2U9OCArIDMgKiBjaGFyYWN0ZXJfc2l6ZSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAvLyAzICsgMiwgbWVtdXNlPTggKyAzICogYXNjaWlfY2hhcl9zaXplKQogICAgIGRlZiB0ZXN0X3JlcHJfc21hbGwoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHJldHVybiBzZWxmLmJhc2ljX3Rlc3RfcmVwcihzaXplKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9OCArIDMgKiBjaGFyYWN0ZXJfc2l6ZSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDIsIG1lbXVzZT04ICsgMyAqIGFzY2lpX2NoYXJfc2l6ZSkKICAgICBkZWYgdGVzdF9yZXByX2xhcmdlKHNlbGYsIHNpemUpOgogICAgICAgICByZXR1cm4gc2VsZi5iYXNpY190ZXN0X3JlcHIoc2l6ZSkKIApAQCAtODg4LDcgKzk2MSw3IEBACiAgICAgZGVmIHRlc3RfY29tcGFyZShzZWxmLCBzaXplKToKICAgICAgICAgbDEgPSBbJyddICogc2l6ZQogICAgICAgICBsMiA9IFsnJ10gKiBzaXplCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobDEsIGwyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobDEgPT0gbDIpCiAgICAgICAgIGRlbCBsMgogICAgICAgICBsMiA9IFsnJ10gKiAoc2l6ZSArIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobDEgPT0gbDIpCkBAIC05MzQsOSArMTAwNyw5IEBACiAgICAgZGVmIHRlc3RfY29udGFpbnMoc2VsZiwgc2l6ZSk6CiAgICAgICAgIGwgPSBbMSwgMiwgMywgNCwgNV0gKiBzaXplCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGwpLCBzaXplICogNSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbig1LCBsKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKFsxLCAyLCAzLCA0LCA1XSwgbCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbigwLCBsKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoNSBpbiBsKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFsxLCAyLCAzLCA0LCA1XSBpbiBsKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDAgaW4gbCkKIAogICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMTAsIG1lbXVzZT04KQogICAgIGRlZiB0ZXN0X2hhc2goc2VsZiwgc2l6ZSk6CkBAIC0xMDQ0LDExICsxMTE3LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1stNTpdLCAnMCwgMF0nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoJzAnKSwgc2l6ZSkKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC8vIDMgKyAyLCBtZW11c2U9OCArIDMgKiBjaGFyYWN0ZXJfc2l6ZSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAvLyAzICsgMiwgbWVtdXNlPTggKyAzICogYXNjaWlfY2hhcl9zaXplKQogICAgIGRlZiB0ZXN0X3JlcHJfc21hbGwoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHJldHVybiBzZWxmLmJhc2ljX3Rlc3RfcmVwcihzaXplKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9OCArIDMgKiBjaGFyYWN0ZXJfc2l6ZSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDIsIG1lbXVzZT04ICsgMyAqIGFzY2lpX2NoYXJfc2l6ZSkKICAgICBkZWYgdGVzdF9yZXByX2xhcmdlKHNlbGYsIHNpemUpOgogICAgICAgICByZXR1cm4gc2VsZi5iYXNpY190ZXN0X3JlcHIoc2l6ZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weSBiL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkKaW5kZXggMWU5ZTg4OC4uMDRkOGY5ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5CkBAIC0yMDgsOSArMjA4LDkgQEAKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgie30oeyFyfSkgcmFpc2VzIHshcn0iLmZvcm1hdChmdW5jLCBlbXB0eSwgZXJyKSkKIAotICAgIGRlZiB0ZXN0X3VuaWNvZGVfc3RyaW5ncyhzZWxmKToKLSAgICAgICAgIyBVbmljb2RlIHN0cmluZ3MgYXJlIG5vdCBhY2NlcHRlZC4KLSAgICAgICAgZm9yIGZ1bmMgaW4gYWxsX2Z1bmN0aW9uczoKKyAgICBkZWYgdGVzdF91bmljb2RlX2IyYShzZWxmKToKKyAgICAgICAgIyBVbmljb2RlIHN0cmluZ3MgYXJlIG5vdCBhY2NlcHRlZCBieSBiMmFfKiBmdW5jdGlvbnMuCisgICAgICAgIGZvciBmdW5jIGluIHNldChhbGxfZnVuY3Rpb25zKSAtIHNldChhMmJfZnVuY3Rpb25zKSB8IHsncmxlZGVjb2RlX2hxeCd9OgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXR0cihiaW5hc2NpaSwgZnVuYyksICJ0ZXN0IikKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgpAQCAtMjE4LDYgKzIxOCwzNCBAQAogICAgICAgICAjIGNyY19ocXggbmVlZHMgMiBhcmd1bWVudHMKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiaW5hc2NpaS5jcmNfaHF4LCAidGVzdCIsIDApCiAKKyAgICBkZWYgdGVzdF91bmljb2RlX2EyYihzZWxmKToKKyAgICAgICAgIyBVbmljb2RlIHN0cmluZ3MgYXJlIGFjY2VwdGVkIGJ5IGEyYl8qIGZ1bmN0aW9ucy4KKyAgICAgICAgTUFYX0FMTCA9IDQ1CisgICAgICAgIHJhdyA9IHNlbGYucmF3ZGF0YVs6TUFYX0FMTF0KKyAgICAgICAgZm9yIGZhLCBmYiBpbiB6aXAoYTJiX2Z1bmN0aW9ucywgYjJhX2Z1bmN0aW9ucyk6CisgICAgICAgICAgICBpZiBmYSA9PSAncmxlZGVjb2RlX2hxeCc6CisgICAgICAgICAgICAgICAgIyBUYWtlcyBub24tQVNDSUkgZGF0YQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBhMmIgPSBnZXRhdHRyKGJpbmFzY2lpLCBmYSkKKyAgICAgICAgICAgIGIyYSA9IGdldGF0dHIoYmluYXNjaWksIGZiKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGEgPSBiMmEoc2VsZi50eXBlMnRlc3QocmF3KSkKKyAgICAgICAgICAgICAgICBiaW5hcnlfcmVzID0gYTJiKGEpCisgICAgICAgICAgICAgICAgYSA9IGEuZGVjb2RlKCdhc2NpaScpCisgICAgICAgICAgICAgICAgcmVzID0gYTJiKGEpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoInt9L3t9IGNvbnZlcnNpb24gcmFpc2VzIHshcn0iLmZvcm1hdChmYiwgZmEsIGVycikpCisgICAgICAgICAgICBpZiBmYiA9PSAnYjJhX2hxeCc6CisgICAgICAgICAgICAgICAgIyBiMmFfaHF4IHJldHVybnMgYSB0dXBsZQorICAgICAgICAgICAgICAgIHJlcywgXyA9IHJlcworICAgICAgICAgICAgICAgIGJpbmFyeV9yZXMsIF8gPSBiaW5hcnlfcmVzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgcmF3LCAie30ve30gY29udmVyc2lvbjogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieyFyfSAhPSB7IXJ9Ii5mb3JtYXQoZmIsIGZhLCByZXMsIHJhdykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgYmluYXJ5X3JlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyZXMsIGJ5dGVzKQorICAgICAgICAgICAgIyBub24tQVNDSUkgc3RyaW5nCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBhMmIsICJceDgwIikKKwogCiBjbGFzcyBBcnJheUJpbkFTQ0lJVGVzdChCaW5BU0NJSVRlc3QpOgogICAgIGRlZiB0eXBlMnRlc3Qoc2VsZiwgcyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Jpc2VjdC5weSBiL0xpYi90ZXN0L3Rlc3RfYmlzZWN0LnB5CmluZGV4IGY5NWVkNjMuLjdiOWJkMTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYmlzZWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmlzZWN0LnB5CkBAIC0zLDI1ICszLDggQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlckxpc3QKIAotIyBXZSBkbyBhIGJpdCBvZiB0cmlja2VyeSBoZXJlIHRvIGJlIGFibGUgdG8gdGVzdCBib3RoIHRoZSBDIGltcGxlbWVudGF0aW9uCi0jIGFuZCB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2R1bGUuCi0KLSMgTWFrZSBpdCBpbXBvc3NpYmxlIHRvIGltcG9ydCB0aGUgQyBpbXBsZW1lbnRhdGlvbiBhbnltb3JlLgotc3lzLm1vZHVsZXNbJ19iaXNlY3QnXSA9IDAKLSMgV2UgbXVzdCBhbHNvIGhhbmRsZSB0aGUgY2FzZSB0aGF0IGJpc2VjdCB3YXMgaW1wb3J0ZWQgYmVmb3JlLgotaWYgJ2Jpc2VjdCcgaW4gc3lzLm1vZHVsZXM6Ci0gICAgZGVsIHN5cy5tb2R1bGVzWydiaXNlY3QnXQotCi0jIE5vdyB3ZSBjYW4gaW1wb3J0IHRoZSBtb2R1bGUgYW5kIGdldCB0aGUgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24uCi1pbXBvcnQgYmlzZWN0IGFzIHB5X2Jpc2VjdAotCi0jIFJlc3RvcmUgZXZlcnl0aGluZyB0byBub3JtYWwuCi1kZWwgc3lzLm1vZHVsZXNbJ19iaXNlY3QnXQotZGVsIHN5cy5tb2R1bGVzWydiaXNlY3QnXQotCi0jIFRoaXMgaXMgbm93IHRoZSBtb2R1bGUgd2l0aCB0aGUgQyBpbXBsZW1lbnRhdGlvbi4KLWltcG9ydCBiaXNlY3QgYXMgY19iaXNlY3QKLQorcHlfYmlzZWN0ID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCdiaXNlY3QnLCBibG9ja2VkPVsnX2Jpc2VjdCddKQorY19iaXNlY3QgPSBzdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoJ2Jpc2VjdCcsIGZyZXNoPVsnX2Jpc2VjdCddKQogCiBjbGFzcyBSYW5nZShvYmplY3QpOgogICAgICIiIkEgdHJpdmlhbCByYW5nZSgpLWxpa2Ugb2JqZWN0IHdpdGhvdXQgYW55IGludGVnZXIgd2lkdGggbGltaXRhdGlvbnMuIiIiCkBAIC00NSw5ICsyOCw3IEBACiAgICAgICAgIHNlbGYubGFzdF9pbnNlcnQgPSBpZHgsIGl0ZW0KIAogCi1jbGFzcyBUZXN0QmlzZWN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBtb2R1bGUgPSBOb25lCi0KK2NsYXNzIFRlc3RCaXNlY3Q6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnByZWNvbXB1dGVkQ2FzZXMgPSBbCiAgICAgICAgICAgICAoc2VsZi5tb2R1bGUuYmlzZWN0X3JpZ2h0LCBbXSwgMSwgMCksCkBAIC0yMTgsMTcgKzE5OSwxNSBAQAogICAgICAgICBzZWxmLm1vZHVsZS5pbnNvcnQoYT1kYXRhLCB4PTI1LCBsbz0xLCBoaT0zKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIFsxMCwgMjAsIDI1LCAyNSwgMjUsIDMwLCA0MCwgNTBdKQogCi1jbGFzcyBUZXN0QmlzZWN0UHl0aG9uKFRlc3RCaXNlY3QpOgorY2xhc3MgVGVzdEJpc2VjdFB5dGhvbihUZXN0QmlzZWN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gcHlfYmlzZWN0CiAKLWNsYXNzIFRlc3RCaXNlY3RDKFRlc3RCaXNlY3QpOgorY2xhc3MgVGVzdEJpc2VjdEMoVGVzdEJpc2VjdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIG1vZHVsZSA9IGNfYmlzZWN0CiAKICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotY2xhc3MgVGVzdEluc29ydCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgbW9kdWxlID0gTm9uZQotCitjbGFzcyBUZXN0SW5zb3J0OgogICAgIGRlZiB0ZXN0X3ZzQnVpbHRpblNvcnQoc2VsZiwgbj01MDApOgogICAgICAgICBmcm9tIHJhbmRvbSBpbXBvcnQgY2hvaWNlCiAgICAgICAgIGZvciBpbnNvcnRlZCBpbiAobGlzdCgpLCBVc2VyTGlzdCgpKToKQEAgLTI1NSwxNSArMjM0LDE0IEBACiAgICAgICAgIHNlbGYubW9kdWxlLmluc29ydF9yaWdodChsc3QsIDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWzUsIDEwXSwgbHN0LmRhdGEpCiAKLWNsYXNzIFRlc3RJbnNvcnRQeXRob24oVGVzdEluc29ydCk6CitjbGFzcyBUZXN0SW5zb3J0UHl0aG9uKFRlc3RJbnNvcnQsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBweV9iaXNlY3QKIAotY2xhc3MgVGVzdEluc29ydEMoVGVzdEluc29ydCk6CitjbGFzcyBUZXN0SW5zb3J0QyhUZXN0SW5zb3J0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gY19iaXNlY3QKIAogIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi0KIGNsYXNzIExlbk9ubHk6CiAgICAgIkR1bW15IHNlcXVlbmNlIGNsYXNzIGRlZmluaW5nIF9fbGVuX18gYnV0IG5vdCBfX2dldGl0ZW1fXy4iCiAgICAgZGVmIF9fbGVuX18oc2VsZik6CkBAIC0yODQsOSArMjYyLDcgQEAKICAgICBfX2VxX18gPSBfX2x0X18KICAgICBfX25lX18gPSBfX2x0X18KIAotY2xhc3MgVGVzdEVycm9ySGFuZGxpbmcodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIG1vZHVsZSA9IE5vbmUKLQorY2xhc3MgVGVzdEVycm9ySGFuZGxpbmc6CiAgICAgZGVmIHRlc3Rfbm9uX3NlcXVlbmNlKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoc2VsZi5tb2R1bGUuYmlzZWN0X2xlZnQsIHNlbGYubW9kdWxlLmJpc2VjdF9yaWdodCwKICAgICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlLmluc29ydF9sZWZ0LCBzZWxmLm1vZHVsZS5pbnNvcnRfcmlnaHQpOgpAQCAtMzEzLDU4ICsyODksNDAgQEAKICAgICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlLmluc29ydF9sZWZ0LCBzZWxmLm1vZHVsZS5pbnNvcnRfcmlnaHQpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLCAxMCkKIAotY2xhc3MgVGVzdEVycm9ySGFuZGxpbmdQeXRob24oVGVzdEVycm9ySGFuZGxpbmcpOgorY2xhc3MgVGVzdEVycm9ySGFuZGxpbmdQeXRob24oVGVzdEVycm9ySGFuZGxpbmcsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBweV9iaXNlY3QKIAotY2xhc3MgVGVzdEVycm9ySGFuZGxpbmdDKFRlc3RFcnJvckhhbmRsaW5nKToKK2NsYXNzIFRlc3RFcnJvckhhbmRsaW5nQyhUZXN0RXJyb3JIYW5kbGluZywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIG1vZHVsZSA9IGNfYmlzZWN0CiAKICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotbGlicmVmdGVzdCA9ICIiIgotRXhhbXBsZSBmcm9tIHRoZSBMaWJyYXJ5IFJlZmVyZW5jZTogIERvYy9saWJyYXJ5L2Jpc2VjdC5yc3QKK2NsYXNzIFRlc3REb2NFeGFtcGxlOgorICAgIGRlZiB0ZXN0X2dyYWRlcyhzZWxmKToKKyAgICAgICAgZGVmIGdyYWRlKHNjb3JlLCBicmVha3BvaW50cz1bNjAsIDcwLCA4MCwgOTBdLCBncmFkZXM9J0ZEQ0JBJyk6CisgICAgICAgICAgICBpID0gc2VsZi5tb2R1bGUuYmlzZWN0KGJyZWFrcG9pbnRzLCBzY29yZSkKKyAgICAgICAgICAgIHJldHVybiBncmFkZXNbaV0KIAotVGhlIGJpc2VjdCgpIGZ1bmN0aW9uIGlzIGdlbmVyYWxseSB1c2VmdWwgZm9yIGNhdGVnb3JpemluZyBudW1lcmljIGRhdGEuCi1UaGlzIGV4YW1wbGUgdXNlcyBiaXNlY3QoKSB0byBsb29rIHVwIGEgbGV0dGVyIGdyYWRlIGZvciBhbiBleGFtIHRvdGFsCi0oc2F5KSBiYXNlZCBvbiBhIHNldCBvZiBvcmRlcmVkIG51bWVyaWMgYnJlYWtwb2ludHM6IDg1IGFuZCB1cCBpcyBhbiBgQScsCi03NS4uODQgaXMgYSBgQicsIGV0Yy4KKyAgICAgICAgcmVzdWx0ID0gW2dyYWRlKHNjb3JlKSBmb3Igc2NvcmUgaW4gWzMzLCA5OSwgNzcsIDcwLCA4OSwgOTAsIDEwMF1dCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBbJ0YnLCAnQScsICdDJywgJ0MnLCAnQicsICdBJywgJ0EnXSkKIAotICAgID4+PiBncmFkZXMgPSAiRkVEQ0JBIgotICAgID4+PiBicmVha3BvaW50cyA9IFszMCwgNDQsIDY2LCA3NSwgODVdCi0gICAgPj4+IGZyb20gYmlzZWN0IGltcG9ydCBiaXNlY3QKLSAgICA+Pj4gZGVmIGdyYWRlKHRvdGFsKToKLSAgICAuLi4gICAgICAgICAgIHJldHVybiBncmFkZXNbYmlzZWN0KGJyZWFrcG9pbnRzLCB0b3RhbCldCi0gICAgLi4uCi0gICAgPj4+IGdyYWRlKDY2KQotICAgICdDJwotICAgID4+PiBsaXN0KG1hcChncmFkZSwgWzMzLCA5OSwgNzcsIDQ0LCAxMiwgODhdKSkKLSAgICBbJ0UnLCAnQScsICdCJywgJ0QnLCAnRicsICdBJ10KKyAgICBkZWYgdGVzdF9jb2xvcnMoc2VsZik6CisgICAgICAgIGRhdGEgPSBbKCdyZWQnLCA1KSwgKCdibHVlJywgMSksICgneWVsbG93JywgOCksICgnYmxhY2snLCAwKV0KKyAgICAgICAgZGF0YS5zb3J0KGtleT1sYW1iZGEgcjogclsxXSkKKyAgICAgICAga2V5cyA9IFtyWzFdIGZvciByIGluIGRhdGFdCisgICAgICAgIGJpc2VjdF9sZWZ0ID0gc2VsZi5tb2R1bGUuYmlzZWN0X2xlZnQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhW2Jpc2VjdF9sZWZ0KGtleXMsIDApXSwgKCdibGFjaycsIDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFbYmlzZWN0X2xlZnQoa2V5cywgMSldLCAoJ2JsdWUnLCAxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhW2Jpc2VjdF9sZWZ0KGtleXMsIDUpXSwgKCdyZWQnLCA1KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhW2Jpc2VjdF9sZWZ0KGtleXMsIDgpXSwgKCd5ZWxsb3cnLCA4KSkKIAotIiIiCitjbGFzcyBUZXN0RG9jRXhhbXBsZVB5dGhvbihUZXN0RG9jRXhhbXBsZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vZHVsZSA9IHB5X2Jpc2VjdAorCitjbGFzcyBUZXN0RG9jRXhhbXBsZUMoVGVzdERvY0V4YW1wbGUsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBtb2R1bGUgPSBjX2Jpc2VjdAogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLV9fdGVzdF9fID0geydsaWJyZWZ0ZXN0JyA6IGxpYnJlZnRlc3R9Ci0KLWRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfYmlzZWN0Ci0KLSAgICB0ZXN0X2NsYXNzZXMgPSBbVGVzdEJpc2VjdFB5dGhvbiwgVGVzdEJpc2VjdEMsCi0gICAgICAgICAgICAgICAgICAgIFRlc3RJbnNvcnRQeXRob24sIFRlc3RJbnNvcnRDLAotICAgICAgICAgICAgICAgICAgICBUZXN0RXJyb3JIYW5kbGluZ1B5dGhvbiwgVGVzdEVycm9ySGFuZGxpbmdDXQotCi0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKLSAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHRlc3RfYmlzZWN0LCB2ZXJib3NlKQotCi0gICAgIyB2ZXJpZnkgcmVmZXJlbmNlIGNvdW50aW5nCi0gICAgaWYgdmVyYm9zZSBhbmQgaGFzYXR0cihzeXMsICJnZXR0b3RhbHJlZmNvdW50Iik6Ci0gICAgICAgIGltcG9ydCBnYwotICAgICAgICBjb3VudHMgPSBbTm9uZV0gKiA1Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihjb3VudHMpKToKLSAgICAgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCi0gICAgICAgICAgICBnYy5jb2xsZWN0KCkKLSAgICAgICAgICAgIGNvdW50c1tpXSA9IHN5cy5nZXR0b3RhbHJlZmNvdW50KCkKLSAgICAgICAgcHJpbnQoY291bnRzKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbih2ZXJib3NlPVRydWUpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Jvb2wucHkgYi9MaWIvdGVzdC90ZXN0X2Jvb2wucHkKaW5kZXggYjI5Njg3MC4uNGJhYjI4YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ib29sLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYm9vbC5weQpAQCAtMzMwLDYgKzMzMCwxNiBAQAogICAgICAgICAgICAgICAgIGV4Y2VwdCAoRXhjZXB0aW9uKSBhcyBlX2xlbjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZV9ib29sKSwgc3RyKGVfbGVuKSkKIAorICAgIGRlZiB0ZXN0X3JlYWxfYW5kX2ltYWcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZS5yZWFsLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUuaW1hZywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKFRydWUucmVhbCksIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKFRydWUuaW1hZyksIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZS5yZWFsLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLmltYWcsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShGYWxzZS5yZWFsKSwgaW50KQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoRmFsc2UuaW1hZyksIGludCkKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEJvb2xUZXN0KQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weSBiL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0N2UyYTIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weQpAQCAtMCwwICsxLDQyOTEgQEAKKyMKKyMgVGhlIG5kYXJyYXkgb2JqZWN0IGZyb20gX3Rlc3RidWZmZXIuYyBpcyBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIG9mCisjIGEgUEVQLTMxMTggYnVmZmVyIHByb3ZpZGVyLiBJdCBpcyBpbmRlcGVuZGVudCBmcm9tIE51bVB5J3MgbmRhcnJheQorIyBhbmQgdGhlIHRlc3RzIGRvbid0IHJlcXVpcmUgTnVtUHkuCisjCisjIElmIE51bVB5IGlzIHByZXNlbnQsIHNvbWUgdGVzdHMgY2hlY2sgYm90aCBuZGFycmF5IGltcGxlbWVudGF0aW9ucworIyBhZ2FpbnN0IGVhY2ggb3RoZXIuCisjCisjIE1vc3QgbmRhcnJheSB0ZXN0cyBhbHNvIGNoZWNrIHRoYXQgbWVtb3J5dmlldyhuZGFycmF5KSBiZWhhdmVzIGluCisjIHRoZSBzYW1lIHdheSBhcyB0aGUgb3JpZ2luYWwuIFRodXMsIGEgc3Vic3RhbnRpYWwgcGFydCBvZiB0aGUKKyMgbWVtb3J5dmlldyB0ZXN0cyBpcyBub3cgaW4gdGhpcyBtb2R1bGUuCisjCisKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcGVybXV0YXRpb25zLCBwcm9kdWN0Citmcm9tIHJhbmRvbSBpbXBvcnQgcmFuZHJhbmdlLCBzYW1wbGUsIGNob2ljZQorZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9jb25maWdfdmFyCitpbXBvcnQgd2FybmluZ3MKK2ltcG9ydCBzeXMsIGFycmF5LCBpbworZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCitmcm9tIGZyYWN0aW9ucyBpbXBvcnQgRnJhY3Rpb24KKwordHJ5OgorICAgIGZyb20gX3Rlc3RidWZmZXIgaW1wb3J0ICoKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBuZGFycmF5ID0gTm9uZQorCit0cnk6CisgICAgaW1wb3J0IHN0cnVjdAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHN0cnVjdCA9IE5vbmUKKwordHJ5OgorICAgIGltcG9ydCBjdHlwZXMKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBjdHlwZXMgPSBOb25lCisKK3RyeToKKyAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgIGZyb20gbnVtcHkgaW1wb3J0IG5kYXJyYXkgYXMgbnVtcHlfYXJyYXkKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBudW1weV9hcnJheSA9IE5vbmUKKworCitTSE9SVF9URVNUID0gVHJ1ZQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICAgICAgUmFuZG9tIGxpc3RzIGJ5IGZvcm1hdCBzcGVjaWZpZXIKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIE5hdGl2ZSBmb3JtYXQgY2hhcnMgYW5kIHRoZWlyIHJhbmdlcy4KK05BVElWRSA9IHsKKyAgICAnPyc6MCwgJ2MnOjAsICdiJzowLCAnQic6MCwKKyAgICAnaCc6MCwgJ0gnOjAsICdpJzowLCAnSSc6MCwKKyAgICAnbCc6MCwgJ0wnOjAsICduJzowLCAnTic6MCwKKyAgICAnZic6MCwgJ2QnOjAsICdQJzowCit9CisKKyMgTnVtUHkgZG9lcyBub3QgaGF2ZSAnbicgb3IgJ04nOgoraWYgbnVtcHlfYXJyYXk6CisgICAgZGVsIE5BVElWRVsnbiddCisgICAgZGVsIE5BVElWRVsnTiddCisKK2lmIHN0cnVjdDoKKyAgICB0cnk6CisgICAgICAgICMgQWRkICJxUSIgaWYgcHJlc2VudCBpbiBuYXRpdmUgbW9kZS4KKyAgICAgICAgc3RydWN0LnBhY2soJ1EnLCAyKio2NC0xKQorICAgICAgICBOQVRJVkVbJ3EnXSA9IDAKKyAgICAgICAgTkFUSVZFWydRJ10gPSAwCisgICAgZXhjZXB0IHN0cnVjdC5lcnJvcjoKKyAgICAgICAgcGFzcworCisjIFN0YW5kYXJkIGZvcm1hdCBjaGFycyBhbmQgdGhlaXIgcmFuZ2VzLgorU1RBTkRBUkQgPSB7CisgICAgJz8nOigwLCAyKSwgICAgICAgICAgICAnYyc6KDAsIDE8PDgpLAorICAgICdiJzooLSgxPDw3KSwgMTw8NyksICAgJ0InOigwLCAxPDw4KSwKKyAgICAnaCc6KC0oMTw8MTUpLCAxPDwxNSksICdIJzooMCwgMTw8MTYpLAorICAgICdpJzooLSgxPDwzMSksIDE8PDMxKSwgJ0knOigwLCAxPDwzMiksCisgICAgJ2wnOigtKDE8PDMxKSwgMTw8MzEpLCAnTCc6KDAsIDE8PDMyKSwKKyAgICAncSc6KC0oMTw8NjMpLCAxPDw2MyksICdRJzooMCwgMTw8NjQpLAorICAgICdmJzooLSgxPDw2MyksIDE8PDYzKSwgJ2QnOigtKDE8PDEwMjMpLCAxPDwxMDIzKQorfQorCitkZWYgbmF0aXZlX3R5cGVfcmFuZ2UoZm10KToKKyAgICAiIiJSZXR1cm4gcmFuZ2Ugb2YgYSBuYXRpdmUgdHlwZS4iIiIKKyAgICBpZiBmbXQgPT0gJ2MnOgorICAgICAgICBsaCA9ICgwLCAyNTYpCisgICAgZWxpZiBmbXQgPT0gJz8nOgorICAgICAgICBsaCA9ICgwLCAyKQorICAgIGVsaWYgZm10ID09ICdmJzoKKyAgICAgICAgbGggPSAoLSgxPDw2MyksIDE8PDYzKQorICAgIGVsaWYgZm10ID09ICdkJzoKKyAgICAgICAgbGggPSAoLSgxPDwxMDIzKSwgMTw8MTAyMykKKyAgICBlbHNlOgorICAgICAgICBmb3IgZXhwIGluICgxMjgsIDEyNywgNjQsIDYzLCAzMiwgMzEsIDE2LCAxNSwgOCwgNyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3RydWN0LnBhY2soZm10LCAoMTw8ZXhwKS0xKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBleGNlcHQgc3RydWN0LmVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbGggPSAoLSgxPDxleHApLCAxPDxleHApIGlmIGV4cCAmIDEgZWxzZSAoMCwgMTw8ZXhwKQorICAgIHJldHVybiBsaAorCitmbXRkaWN0ID0geworICAgICcnOk5BVElWRSwKKyAgICAnQCc6TkFUSVZFLAorICAgICc8JzpTVEFOREFSRCwKKyAgICAnPic6U1RBTkRBUkQsCisgICAgJz0nOlNUQU5EQVJELAorICAgICchJzpTVEFOREFSRAorfQorCitpZiBzdHJ1Y3Q6CisgICAgZm9yIGZtdCBpbiBmbXRkaWN0WydAJ106CisgICAgICAgIGZtdGRpY3RbJ0AnXVtmbXRdID0gbmF0aXZlX3R5cGVfcmFuZ2UoZm10KQorCitNRU1PUllWSUVXID0gTkFUSVZFLmNvcHkoKQorQVJSQVkgPSBOQVRJVkUuY29weSgpCitmb3IgayBpbiBOQVRJVkU6CisgICAgaWYgbm90IGsgaW4gImJCaEhpSWxMZmQiOgorICAgICAgICBkZWwgQVJSQVlba10KKworQllURUZNVCA9IE5BVElWRS5jb3B5KCkKK2ZvciBrIGluIE5BVElWRToKKyAgICBpZiBub3QgayBpbiAiQmJjIjoKKyAgICAgICAgZGVsIEJZVEVGTVRba10KKworZm10ZGljdFsnbSddICA9IE1FTU9SWVZJRVcKK2ZtdGRpY3RbJ0BtJ10gPSBNRU1PUllWSUVXCitmbXRkaWN0WydhJ10gID0gQVJSQVkKK2ZtdGRpY3RbJ2InXSAgPSBCWVRFRk1UCitmbXRkaWN0WydAYiddICA9IEJZVEVGTVQKKworIyBDYXBhYmlsaXRpZXMgb2YgdGhlIHRlc3Qgb2JqZWN0czoKK01PREUgPSAwCitNVUxUID0gMQorY2FwID0geyAgICAgICAgICMgZm9ybWF0IGNoYXJzICAgICAgICAgICAgICAgICAgIyBtdWx0aXBsaWVyCisgICduZGFycmF5JzogICAgKFsnJywgJ0AnLCAnPCcsICc+JywgJz0nLCAnISddLCBbJycsICcxJywgJzInLCAnMyddKSwKKyAgJ2FycmF5JzogICAgICAoWydhJ10sICAgICAgICAgICAgICAgICAgICAgICAgIFsnJ10pLAorICAnbnVtcHknOiAgICAgIChbJyddLCAgICAgICAgICAgICAgICAgICAgICAgICAgWycnXSksCisgICdtZW1vcnl2aWV3JzogKFsnQG0nLCAnbSddLCAgICAgICAgICAgICAgICAgICBbJyddKSwKKyAgJ2J5dGVmbXQnOiAgICAoWydAYicsICdiJ10sICAgICAgICAgICAgICAgICAgIFsnJ10pLAorfQorCitkZWYgcmFuZHJhbmdlX2ZtdChtb2RlLCBjaGFyLCBvYmopOgorICAgICIiIlJldHVybiByYW5kb20gaXRlbSBmb3IgYSB0eXBlIHNwZWNpZmllZCBieSBhIG1vZGUgYW5kIGEgc2luZ2xlCisgICAgICAgZm9ybWF0IGNoYXJhY3Rlci4iIiIKKyAgICB4ID0gcmFuZHJhbmdlKCpmbXRkaWN0W21vZGVdW2NoYXJdKQorICAgIGlmIGNoYXIgPT0gJ2MnOgorICAgICAgICB4ID0gYnl0ZXMoY2hyKHgpLCAnbGF0aW4xJykKKyAgICBpZiBjaGFyID09ICc/JzoKKyAgICAgICAgeCA9IGJvb2woeCkKKyAgICBpZiBjaGFyID09ICdmJyBvciBjaGFyID09ICdkJzoKKyAgICAgICAgeCA9IHN0cnVjdC5wYWNrKGNoYXIsIHgpCisgICAgICAgIHggPSBzdHJ1Y3QudW5wYWNrKGNoYXIsIHgpWzBdCisgICAgaWYgb2JqID09ICdudW1weScgYW5kIHggPT0gYidceDAwJzoKKyAgICAgICAgIyBodHRwOi8vcHJvamVjdHMuc2NpcHkub3JnL251bXB5L3RpY2tldC8xOTI1CisgICAgICAgIHggPSBiJ1x4MDEnCisgICAgcmV0dXJuIHgKKworZGVmIGdlbl9pdGVtKGZtdCwgb2JqKToKKyAgICAiIiJSZXR1cm4gc2luZ2xlIHJhbmRvbSBpdGVtLiIiIgorICAgIG1vZGUsIGNoYXJzID0gZm10LnNwbGl0KCcjJykKKyAgICB4ID0gW10KKyAgICBmb3IgYyBpbiBjaGFyczoKKyAgICAgICAgeC5hcHBlbmQocmFuZHJhbmdlX2ZtdChtb2RlLCBjLCBvYmopKQorICAgIHJldHVybiB4WzBdIGlmIGxlbih4KSA9PSAxIGVsc2UgdHVwbGUoeCkKKworZGVmIGdlbl9pdGVtcyhuLCBmbXQsIG9iaik6CisgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiByYW5kb20gaXRlbXMgKG9yIGEgc2NhbGFyKS4iIiIKKyAgICBpZiBuID09IDA6CisgICAgICAgIHJldHVybiBnZW5faXRlbShmbXQsIG9iaikKKyAgICBsc3QgPSBbMF0gKiBuCisgICAgZm9yIGkgaW4gcmFuZ2Uobik6CisgICAgICAgIGxzdFtpXSA9IGdlbl9pdGVtKGZtdCwgb2JqKQorICAgIHJldHVybiBsc3QKKworZGVmIHN0cnVjdF9pdGVtcyhuLCBvYmopOgorICAgIG1vZGUgPSBjaG9pY2UoY2FwW29ial1bTU9ERV0pCisgICAgeGZtdCA9IG1vZGUgKyAnIycKKyAgICBmbXQgPSBtb2RlLnN0cmlwKCdhbWInKQorICAgIG5tZW1iID0gcmFuZHJhbmdlKDIsIDEwKSAjIG51bWJlciBvZiBzdHJ1Y3QgbWVtYmVycworICAgIGZvciBfIGluIHJhbmdlKG5tZW1iKToKKyAgICAgICAgY2hhciA9IGNob2ljZSh0dXBsZShmbXRkaWN0W21vZGVdKSkKKyAgICAgICAgbXVsdGlwbGllciA9IGNob2ljZShjYXBbb2JqXVtNVUxUXSkKKyAgICAgICAgeGZtdCArPSAoY2hhciAqIGludChtdWx0aXBsaWVyIGlmIG11bHRpcGxpZXIgZWxzZSAxKSkKKyAgICAgICAgZm10ICs9IChtdWx0aXBsaWVyICsgY2hhcikKKyAgICBpdGVtcyA9IGdlbl9pdGVtcyhuLCB4Zm10LCBvYmopCisgICAgaXRlbSA9IGdlbl9pdGVtKHhmbXQsIG9iaikKKyAgICByZXR1cm4gZm10LCBpdGVtcywgaXRlbQorCitkZWYgcmFuZGl0ZW1zKG4sIG9iaj0nbmRhcnJheScsIG1vZGU9Tm9uZSwgY2hhcj1Ob25lKToKKyAgICAiIiJSZXR1cm4gcmFuZG9tIGZvcm1hdCwgaXRlbXMsIGl0ZW0uIiIiCisgICAgaWYgbW9kZSBpcyBOb25lOgorICAgICAgICBtb2RlID0gY2hvaWNlKGNhcFtvYmpdW01PREVdKQorICAgIGlmIGNoYXIgaXMgTm9uZToKKyAgICAgICAgY2hhciA9IGNob2ljZSh0dXBsZShmbXRkaWN0W21vZGVdKSkKKyAgICBtdWx0aXBsaWVyID0gY2hvaWNlKGNhcFtvYmpdW01VTFRdKQorICAgIGZtdCA9IG1vZGUgKyAnIycgKyBjaGFyICogaW50KG11bHRpcGxpZXIgaWYgbXVsdGlwbGllciBlbHNlIDEpCisgICAgaXRlbXMgPSBnZW5faXRlbXMobiwgZm10LCBvYmopCisgICAgaXRlbSA9IGdlbl9pdGVtKGZtdCwgb2JqKQorICAgIGZtdCA9IG1vZGUuc3RyaXAoJ2FtYicpICsgbXVsdGlwbGllciArIGNoYXIKKyAgICByZXR1cm4gZm10LCBpdGVtcywgaXRlbQorCitkZWYgaXRlcl9tb2RlKG4sIG9iaj0nbmRhcnJheScpOgorICAgICIiIkl0ZXJhdGUgdGhyb3VnaCBzdXBwb3J0ZWQgbW9kZS9jaGFyIGNvbWJpbmF0aW9ucy4iIiIKKyAgICBmb3IgbW9kZSBpbiBjYXBbb2JqXVtNT0RFXToKKyAgICAgICAgZm9yIGNoYXIgaW4gZm10ZGljdFttb2RlXToKKyAgICAgICAgICAgIHlpZWxkIHJhbmRpdGVtcyhuLCBvYmosIG1vZGUsIGNoYXIpCisKK2RlZiBpdGVyX2Zvcm1hdChuaXRlbXMsIHRlc3RvYmo9J25kYXJyYXknKToKKyAgICAiIiJZaWVsZCAoZm9ybWF0LCBpdGVtcywgaXRlbSkgZm9yIGFsbCBwb3NzaWJsZSBtb2RlcyBhbmQgZm9ybWF0CisgICAgICAgY2hhcmFjdGVycyBwbHVzIG9uZSByYW5kb20gY29tcG91bmQgZm9ybWF0IHN0cmluZy4iIiIKKyAgICBmb3IgdCBpbiBpdGVyX21vZGUobml0ZW1zLCB0ZXN0b2JqKToKKyAgICAgICAgeWllbGQgdAorICAgIGlmIHRlc3RvYmogIT0gJ25kYXJyYXknOgorICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisgICAgeWllbGQgc3RydWN0X2l0ZW1zKG5pdGVtcywgdGVzdG9iaikKKworCitkZWYgaXNfYnl0ZV9mb3JtYXQoZm10KToKKyAgICByZXR1cm4gJ2MnIGluIGZtdCBvciAnYicgaW4gZm10IG9yICdCJyBpbiBmbXQKKworZGVmIGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgIiIiZm9ybWF0IHN1aXRhYmxlIGZvciBtZW1vcnl2aWV3IiIiCisgICAgeCA9IGxlbihmbXQpCisgICAgcmV0dXJuICgoeCA9PSAxIG9yICh4ID09IDIgYW5kIGZtdFswXSA9PSAnQCcpKSBhbmQKKyAgICAgICAgICAgIGZtdFt4LTFdIGluIE1FTU9SWVZJRVcpCisKK05PTl9CWVRFX0ZPUk1BVCA9IFtjIGZvciBjIGluIGZtdGRpY3RbJ0AnXSBpZiBub3QgaXNfYnl0ZV9mb3JtYXQoYyldCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgIE11bHRpLWRpbWVuc2lvbmFsIHRvbGlzdCgpLCBzbGljaW5nIGFuZCBzbGljZSBhc3NpZ25tZW50cworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2RlZiBhdG9tcChsc3QpOgorICAgICIiIlR1cGxlIGl0ZW1zIChyZXByZXNlbnRpbmcgc3RydWN0cykgYXJlIHJlZ2FyZGVkIGFzIGF0b21zLiIiIgorICAgIHJldHVybiBub3QgaXNpbnN0YW5jZShsc3QsIGxpc3QpCisKK2RlZiBsaXN0cChsc3QpOgorICAgIHJldHVybiBpc2luc3RhbmNlKGxzdCwgbGlzdCkKKworZGVmIHByb2QobHN0KToKKyAgICAiIiJQcm9kdWN0IG9mIGxpc3QgZWxlbWVudHMuIiIiCisgICAgaWYgbGVuKGxzdCkgPT0gMDoKKyAgICAgICAgcmV0dXJuIDAKKyAgICB4ID0gbHN0WzBdCisgICAgZm9yIHYgaW4gbHN0WzE6XToKKyAgICAgICAgeCAqPSB2CisgICAgcmV0dXJuIHgKKworZGVmIHN0cmlkZXNfZnJvbV9zaGFwZShuZGltLCBzaGFwZSwgaXRlbXNpemUsIGxheW91dCk6CisgICAgIiIiQ2FsY3VsYXRlIHN0cmlkZXMgb2YgYSBjb250aWd1b3VzIGFycmF5LiBMYXlvdXQgaXMgJ0MnIG9yCisgICAgICAgJ0YnIChGb3J0cmFuKS4iIiIKKyAgICBpZiBuZGltID09IDA6CisgICAgICAgIHJldHVybiAoKQorICAgIGlmIGxheW91dCA9PSAnQyc6CisgICAgICAgIHN0cmlkZXMgPSBsaXN0KHNoYXBlWzE6XSkgKyBbaXRlbXNpemVdCisgICAgICAgIGZvciBpIGluIHJhbmdlKG5kaW0tMiwgLTEsIC0xKToKKyAgICAgICAgICAgIHN0cmlkZXNbaV0gKj0gc3RyaWRlc1tpKzFdCisgICAgZWxzZToKKyAgICAgICAgc3RyaWRlcyA9IFtpdGVtc2l6ZV0gKyBsaXN0KHNoYXBlWzotMV0pCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIG5kaW0pOgorICAgICAgICAgICAgc3RyaWRlc1tpXSAqPSBzdHJpZGVzW2ktMV0KKyAgICByZXR1cm4gc3RyaWRlcworCitkZWYgX2NhKGl0ZW1zLCBzKToKKyAgICAiIiJDb252ZXJ0IGZsYXQgaXRlbSBsaXN0IHRvIHRoZSBuZXN0ZWQgbGlzdCByZXByZXNlbnRhdGlvbiBvZiBhCisgICAgICAgbXVsdGlkaW1lbnNpb25hbCBDIGFycmF5IHdpdGggc2hhcGUgJ3MnLiIiIgorICAgIGlmIGF0b21wKGl0ZW1zKToKKyAgICAgICAgcmV0dXJuIGl0ZW1zCisgICAgaWYgbGVuKHMpID09IDA6CisgICAgICAgIHJldHVybiBpdGVtc1swXQorICAgIGxzdCA9IFswXSAqIHNbMF0KKyAgICBzdHJpZGUgPSBsZW4oaXRlbXMpIC8vIHNbMF0gaWYgc1swXSBlbHNlIDAKKyAgICBmb3IgaSBpbiByYW5nZShzWzBdKToKKyAgICAgICAgc3RhcnQgPSBpKnN0cmlkZQorICAgICAgICBsc3RbaV0gPSBfY2EoaXRlbXNbc3RhcnQ6c3RhcnQrc3RyaWRlXSwgc1sxOl0pCisgICAgcmV0dXJuIGxzdAorCitkZWYgX2ZhKGl0ZW1zLCBzKToKKyAgICAiIiJDb252ZXJ0IGZsYXQgaXRlbSBsaXN0IHRvIHRoZSBuZXN0ZWQgbGlzdCByZXByZXNlbnRhdGlvbiBvZiBhCisgICAgICAgbXVsdGlkaW1lbnNpb25hbCBGb3J0cmFuIGFycmF5IHdpdGggc2hhcGUgJ3MnLiIiIgorICAgIGlmIGF0b21wKGl0ZW1zKToKKyAgICAgICAgcmV0dXJuIGl0ZW1zCisgICAgaWYgbGVuKHMpID09IDA6CisgICAgICAgIHJldHVybiBpdGVtc1swXQorICAgIGxzdCA9IFswXSAqIHNbMF0KKyAgICBzdHJpZGUgPSBzWzBdCisgICAgZm9yIGkgaW4gcmFuZ2Uoc1swXSk6CisgICAgICAgIGxzdFtpXSA9IF9mYShpdGVtc1tpOjpzdHJpZGVdLCBzWzE6XSkKKyAgICByZXR1cm4gbHN0CisKK2RlZiBjYXJyYXkoaXRlbXMsIHNoYXBlKToKKyAgICBpZiBsaXN0cChpdGVtcykgYW5kIG5vdCAwIGluIHNoYXBlIGFuZCBwcm9kKHNoYXBlKSAhPSBsZW4oaXRlbXMpOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwcm9kKHNoYXBlKSAhPSBsZW4oaXRlbXMpIikKKyAgICByZXR1cm4gX2NhKGl0ZW1zLCBzaGFwZSkKKworZGVmIGZhcnJheShpdGVtcywgc2hhcGUpOgorICAgIGlmIGxpc3RwKGl0ZW1zKSBhbmQgbm90IDAgaW4gc2hhcGUgYW5kIHByb2Qoc2hhcGUpICE9IGxlbihpdGVtcyk6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInByb2Qoc2hhcGUpICE9IGxlbihpdGVtcykiKQorICAgIHJldHVybiBfZmEoaXRlbXMsIHNoYXBlKQorCitkZWYgaW5kaWNlcyhzaGFwZSk6CisgICAgIiIiR2VuZXJhdGUgYWxsIHBvc3NpYmxlIHR1cGxlcyBvZiBpbmRpY2VzLiIiIgorICAgIGl0ZXJhYmxlcyA9IFtyYW5nZSh2KSBmb3IgdiBpbiBzaGFwZV0KKyAgICByZXR1cm4gcHJvZHVjdCgqaXRlcmFibGVzKQorCitkZWYgZ2V0aW5kZXgobmRpbSwgaW5kLCBzdHJpZGVzKToKKyAgICAiIiJDb252ZXJ0IG11bHRpLWRpbWVuc2lvbmFsIGluZGV4IHRvIHRoZSBwb3NpdGlvbiBpbiB0aGUgZmxhdCBsaXN0LiIiIgorICAgIHJldCA9IDAKKyAgICBmb3IgaSBpbiByYW5nZShuZGltKToKKyAgICAgICAgcmV0ICs9IHN0cmlkZXNbaV0gKiBpbmRbaV0KKyAgICByZXR1cm4gcmV0CisKK2RlZiB0cmFuc3Bvc2Uoc3JjLCBzaGFwZSk6CisgICAgIiIiVHJhbnNwb3NlIGZsYXQgaXRlbSBsaXN0IHRoYXQgaXMgcmVnYXJkZWQgYXMgYSBtdWx0aS1kaW1lbnNpb25hbAorICAgICAgIG1hdHJpeCBkZWZpbmVkIGJ5IHNoYXBlOiBkZXN0Li4uW2tdW2pdW2ldID0gc3JjW2ldW2pdW2tdLi4uICAiIiIKKyAgICBpZiBub3Qgc2hhcGU6CisgICAgICAgIHJldHVybiBzcmMKKyAgICBuZGltID0gbGVuKHNoYXBlKQorICAgIHNzdHJpZGVzID0gc3RyaWRlc19mcm9tX3NoYXBlKG5kaW0sIHNoYXBlLCAxLCAnQycpCisgICAgZHN0cmlkZXMgPSBzdHJpZGVzX2Zyb21fc2hhcGUobmRpbSwgc2hhcGVbOjotMV0sIDEsICdDJykKKyAgICBkZXN0ID0gWzBdICogbGVuKHNyYykKKyAgICBmb3IgaW5kIGluIGluZGljZXMoc2hhcGUpOgorICAgICAgICBmciA9IGdldGluZGV4KG5kaW0sIGluZCwgc3N0cmlkZXMpCisgICAgICAgIHRvID0gZ2V0aW5kZXgobmRpbSwgaW5kWzo6LTFdLCBkc3RyaWRlcykKKyAgICAgICAgZGVzdFt0b10gPSBzcmNbZnJdCisgICAgcmV0dXJuIGRlc3QKKworZGVmIF9mbGF0dGVuKGxzdCk6CisgICAgIiIiZmxhdHRlbiBsaXN0IiIiCisgICAgaWYgbHN0ID09IFtdOgorICAgICAgICByZXR1cm4gbHN0CisgICAgaWYgYXRvbXAobHN0KToKKyAgICAgICAgcmV0dXJuIFtsc3RdCisgICAgcmV0dXJuIF9mbGF0dGVuKGxzdFswXSkgKyBfZmxhdHRlbihsc3RbMTpdKQorCitkZWYgZmxhdHRlbihsc3QpOgorICAgICIiImZsYXR0ZW4gbGlzdCBvciByZXR1cm4gc2NhbGFyIiIiCisgICAgaWYgYXRvbXAobHN0KTogIyBzY2FsYXIKKyAgICAgICAgcmV0dXJuIGxzdAorICAgIHJldHVybiBfZmxhdHRlbihsc3QpCisKK2RlZiBzbGljZV9zaGFwZShsc3QsIHNsaWNlcyk6CisgICAgIiIiR2V0IHRoZSBzaGFwZSBvZiBsc3QgYWZ0ZXIgc2xpY2luZzogc2xpY2VzIGlzIGEgbGlzdCBvZiBzbGljZQorICAgICAgIG9iamVjdHMuIiIiCisgICAgaWYgYXRvbXAobHN0KToKKyAgICAgICAgcmV0dXJuIFtdCisgICAgcmV0dXJuIFtsZW4obHN0W3NsaWNlc1swXV0pXSArIHNsaWNlX3NoYXBlKGxzdFswXSwgc2xpY2VzWzE6XSkKKworZGVmIG11bHRpc2xpY2UobHN0LCBzbGljZXMpOgorICAgICIiIk11bHRpLWRpbWVuc2lvbmFsIHNsaWNpbmc6IHNsaWNlcyBpcyBhIGxpc3Qgb2Ygc2xpY2Ugb2JqZWN0cy4iIiIKKyAgICBpZiBhdG9tcChsc3QpOgorICAgICAgICByZXR1cm4gbHN0CisgICAgcmV0dXJuIFttdWx0aXNsaWNlKHN1YmxzdCwgc2xpY2VzWzE6XSkgZm9yIHN1YmxzdCBpbiBsc3Rbc2xpY2VzWzBdXV0KKworZGVmIG1fYXNzaWduKGxsc3QsIHJsc3QsIGxzbGljZXMsIHJzbGljZXMpOgorICAgICIiIk11bHRpLWRpbWVuc2lvbmFsIHNsaWNlIGFzc2lnbm1lbnQ6IGxsc3QgYW5kIHJsc3QgYXJlIHRoZSBvcGVyYW5kcywKKyAgICAgICBsc2xpY2VzIGFuZCByc2xpY2VzIGFyZSBsaXN0cyBvZiBzbGljZSBvYmplY3RzLiBsbHN0IGFuZCBybHN0IG11c3QKKyAgICAgICBoYXZlIHRoZSBzYW1lIHN0cnVjdHVyZS4KKworICAgICAgIEZvciBhIHR3by1kaW1lbnNpb25hbCBleGFtcGxlLCB0aGlzIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiBQeXRob246CisKKyAgICAgICAgIGxsc3RbMDozOjIsIDA6MzoyXSA9IHJsc3RbMTozOjEsIDE6MzoxXQorCisgICAgICAgSW5zdGVhZCB3ZSB3cml0ZToKKworICAgICAgICAgbHNsaWNlcyA9IFtzbGljZSgwLDMsMiksIHNsaWNlKDAsMywyKV0KKyAgICAgICAgIHJzbGljZXMgPSBbc2xpY2UoMSwzLDEpLCBzbGljZSgxLDMsMSldCisgICAgICAgICBtdWx0aXNsaWNlX2Fzc2lnbihsbHN0LCBybHN0LCBsc2xpY2VzLCByc2xpY2VzKQorICAgICIiIgorICAgIGlmIGF0b21wKHJsc3QpOgorICAgICAgICByZXR1cm4gcmxzdAorICAgIHJsc3QgPSBbbV9hc3NpZ24obCwgciwgbHNsaWNlc1sxOl0sIHJzbGljZXNbMTpdKQorICAgICAgICAgICAgZm9yIGwsIHIgaW4gemlwKGxsc3RbbHNsaWNlc1swXV0sIHJsc3RbcnNsaWNlc1swXV0pXQorICAgIGxsc3RbbHNsaWNlc1swXV0gPSBybHN0CisgICAgcmV0dXJuIGxsc3QKKworZGVmIGNtcF9zdHJ1Y3R1cmUobGxzdCwgcmxzdCwgbHNsaWNlcywgcnNsaWNlcyk6CisgICAgIiIiQ29tcGFyZSB0aGUgc3RydWN0dXJlIG9mIGxsc3RbbHNsaWNlc10gYW5kIHJsc3RbcnNsaWNlc10uIiIiCisgICAgbHNoYXBlID0gc2xpY2Vfc2hhcGUobGxzdCwgbHNsaWNlcykKKyAgICByc2hhcGUgPSBzbGljZV9zaGFwZShybHN0LCByc2xpY2VzKQorICAgIGlmIChsZW4obHNoYXBlKSAhPSBsZW4ocnNoYXBlKSk6CisgICAgICAgIHJldHVybiAtMQorICAgIGZvciBpIGluIHJhbmdlKGxlbihsc2hhcGUpKToKKyAgICAgICAgaWYgbHNoYXBlW2ldICE9IHJzaGFwZVtpXToKKyAgICAgICAgICAgIHJldHVybiAtMQorICAgICAgICBpZiBsc2hhcGVbaV0gPT0gMDoKKyAgICAgICAgICAgIHJldHVybiAwCisgICAgcmV0dXJuIDAKKworZGVmIG11bHRpc2xpY2VfYXNzaWduKGxsc3QsIHJsc3QsIGxzbGljZXMsIHJzbGljZXMpOgorICAgICIiIlJldHVybiBsbHN0IGFmdGVyIGFzc2lnbmluZzogbGxzdFtsc2xpY2VzXSA9IHJsc3RbcnNsaWNlc10iIiIKKyAgICBpZiBjbXBfc3RydWN0dXJlKGxsc3QsIHJsc3QsIGxzbGljZXMsIHJzbGljZXMpIDwgMDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibHZhbHVlIGFuZCBydmFsdWUgaGF2ZSBkaWZmZXJlbnQgc3RydWN0dXJlcyIpCisgICAgcmV0dXJuIG1fYXNzaWduKGxsc3QsIHJsc3QsIGxzbGljZXMsIHJzbGljZXMpCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5kb20gc3RydWN0dXJlcworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMKKyMgUEVQLTMxMTggaXMgdmVyeSBwZXJtaXNzaXZlIHdpdGggcmVzcGVjdCB0byB0aGUgY29udGVudHMgb2YgYQorIyBQeV9idWZmZXIuIEluIHBhcnRpY3VsYXI6CisjCisjICAgLSBzaGFwZSBjYW4gYmUgemVybworIyAgIC0gc3RyaWRlcyBjYW4gYmUgYW55IGludGVnZXIsIGluY2x1ZGluZyB6ZXJvCisjICAgLSBvZmZzZXQgY2FuIHBvaW50IHRvIGFueSBsb2NhdGlvbiBpbiB0aGUgdW5kZXJseWluZworIyAgICAgbWVtb3J5IGJsb2NrLCBwcm92aWRlZCB0aGF0IGl0IGlzIGEgbXVsdGlwbGUgb2YKKyMgICAgIGl0ZW1zaXplLgorIworIyBUaGUgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiB0ZXN0IGFuZCB2ZXJpZnkgcmFuZG9tIHN0cnVjdHVyZXMKKyMgaW4gZnVsbCBnZW5lcmFsaXR5LiBBIHN0cnVjdHVyZSBpcyB2YWxpZCBpZmYgaXQgZml0cyBpbiB0aGUKKyMgdW5kZXJseWluZyBtZW1vcnkgYmxvY2suCisjCisjIFRoZSBzdHJ1Y3R1cmUgJ3QnIChzaG9ydCBmb3IgJ3R1cGxlJykgaXMgZnVsbHkgZGVmaW5lZCBieToKKyMKKyMgICB0ID0gKG1lbWxlbiwgaXRlbXNpemUsIG5kaW0sIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQpCisjCisKK2RlZiB2ZXJpZnlfc3RydWN0dXJlKG1lbWxlbiwgaXRlbXNpemUsIG5kaW0sIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQpOgorICAgICIiIlZlcmlmeSB0aGF0IHRoZSBwYXJhbWV0ZXJzIHJlcHJlc2VudCBhIHZhbGlkIGFycmF5IHdpdGhpbgorICAgICAgIHRoZSBib3VuZHMgb2YgdGhlIGFsbG9jYXRlZCBtZW1vcnk6CisgICAgICAgICAgIGNoYXIgKm1lbTogc3RhcnQgb2YgdGhlIHBoeXNpY2FsIG1lbW9yeSBibG9jaworICAgICAgICAgICBtZW1sZW46IGxlbmd0aCBvZiB0aGUgcGh5c2ljYWwgbWVtb3J5IGJsb2NrCisgICAgICAgICAgIG9mZnNldDogKGNoYXIgKilidWYgLSBtZW0KKyAgICAiIiIKKyAgICBpZiBvZmZzZXQgJSBpdGVtc2l6ZToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgaWYgb2Zmc2V0IDwgMCBvciBvZmZzZXQraXRlbXNpemUgPiBtZW1sZW46CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGlmIGFueSh2ICUgaXRlbXNpemUgZm9yIHYgaW4gc3RyaWRlcyk6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgaWYgbmRpbSA8PSAwOgorICAgICAgICByZXR1cm4gbmRpbSA9PSAwIGFuZCBub3Qgc2hhcGUgYW5kIG5vdCBzdHJpZGVzCisgICAgaWYgMCBpbiBzaGFwZToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGltaW4gPSBzdW0oc3RyaWRlc1tqXSooc2hhcGVbal0tMSkgZm9yIGogaW4gcmFuZ2UobmRpbSkKKyAgICAgICAgICAgICAgIGlmIHN0cmlkZXNbal0gPD0gMCkKKyAgICBpbWF4ID0gc3VtKHN0cmlkZXNbal0qKHNoYXBlW2pdLTEpIGZvciBqIGluIHJhbmdlKG5kaW0pCisgICAgICAgICAgICAgICBpZiBzdHJpZGVzW2pdID4gMCkKKworICAgIHJldHVybiAwIDw9IG9mZnNldCtpbWluIGFuZCBvZmZzZXQraW1heCtpdGVtc2l6ZSA8PSBtZW1sZW4KKworZGVmIGdldF9pdGVtKGxzdCwgaW5kaWNlcyk6CisgICAgZm9yIGkgaW4gaW5kaWNlczoKKyAgICAgICAgbHN0ID0gbHN0W2ldCisgICAgcmV0dXJuIGxzdAorCitkZWYgbWVtb3J5X2luZGV4KGluZGljZXMsIHQpOgorICAgICIiIkxvY2F0aW9uIG9mIGFuIGl0ZW0gaW4gdGhlIHVuZGVybHlpbmcgbWVtb3J5LiIiIgorICAgIG1lbWxlbiwgaXRlbXNpemUsIG5kaW0sIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQgPSB0CisgICAgcCA9IG9mZnNldAorICAgIGZvciBpIGluIHJhbmdlKG5kaW0pOgorICAgICAgICBwICs9IHN0cmlkZXNbaV0qaW5kaWNlc1tpXQorICAgIHJldHVybiBwCisKK2RlZiBpc19vdmVybGFwcGluZyh0KToKKyAgICAiIiJUaGUgc3RydWN0dXJlICd0JyBpcyBvdmVybGFwcGluZyBpZiBhdCBsZWFzdCBvbmUgbWVtb3J5IGxvY2F0aW9uCisgICAgICAgaXMgdmlzaXRlZCB0d2ljZSB3aGlsZSBpdGVyYXRpbmcgdGhyb3VnaCBhbGwgcG9zc2libGUgdHVwbGVzIG9mCisgICAgICAgaW5kaWNlcy4iIiIKKyAgICBtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0ID0gdAorICAgIHZpc2l0ZWQgPSAxPDxtZW1sZW4KKyAgICBmb3IgaW5kIGluIGluZGljZXMoc2hhcGUpOgorICAgICAgICBpID0gbWVtb3J5X2luZGV4KGluZCwgdCkKKyAgICAgICAgYml0ID0gMTw8aQorICAgICAgICBpZiB2aXNpdGVkICYgYml0OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgdmlzaXRlZCB8PSBiaXQKKyAgICByZXR1cm4gRmFsc2UKKworZGVmIHJhbmRfc3RydWN0dXJlKGl0ZW1zaXplLCB2YWxpZCwgbWF4ZGltPTUsIG1heHNoYXBlPTE2LCBzaGFwZT0oKSk6CisgICAgIiIiUmV0dXJuIHJhbmRvbSBzdHJ1Y3R1cmU6CisgICAgICAgICAgIChtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0KQorICAgICAgIElmICd2YWxpZCcgaXMgdHJ1ZSwgdGhlIHJldHVybmVkIHN0cnVjdHVyZSBpcyB2YWxpZCwgb3RoZXJ3aXNlIGludmFsaWQuCisgICAgICAgSWYgJ3NoYXBlJyBpcyBnaXZlbiwgdXNlIHRoYXQgaW5zdGVhZCBvZiBjcmVhdGluZyBhIHJhbmRvbSBzaGFwZS4KKyAgICAiIiIKKyAgICBpZiBub3Qgc2hhcGU6CisgICAgICAgIG5kaW0gPSByYW5kcmFuZ2UobWF4ZGltKzEpCisgICAgICAgIGlmIChuZGltID09IDApOgorICAgICAgICAgICAgaWYgdmFsaWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1zaXplLCBpdGVtc2l6ZSwgbmRpbSwgKCksICgpLCAwCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5pdGVtcyA9IHJhbmRyYW5nZSgxLCAxNisxKQorICAgICAgICAgICAgICAgIG1lbWxlbiA9IG5pdGVtcyAqIGl0ZW1zaXplCisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gLWl0ZW1zaXplIGlmIHJhbmRyYW5nZSgyKSA9PSAwIGVsc2UgbWVtbGVuCisgICAgICAgICAgICAgICAgcmV0dXJuIG1lbWxlbiwgaXRlbXNpemUsIG5kaW0sICgpLCAoKSwgb2Zmc2V0CisKKyAgICAgICAgbWluc2hhcGUgPSAyCisgICAgICAgIG4gPSByYW5kcmFuZ2UoMTAwKQorICAgICAgICBpZiBuID49IDk1IGFuZCB2YWxpZDoKKyAgICAgICAgICAgIG1pbnNoYXBlID0gMAorICAgICAgICBlbGlmIG4gPj0gOTA6CisgICAgICAgICAgICBtaW5zaGFwZSA9IDEKKyAgICAgICAgc2hhcGUgPSBbMF0gKiBuZGltCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobmRpbSk6CisgICAgICAgICAgICBzaGFwZVtpXSA9IHJhbmRyYW5nZShtaW5zaGFwZSwgbWF4c2hhcGUrMSkKKyAgICBlbHNlOgorICAgICAgICBuZGltID0gbGVuKHNoYXBlKQorCisgICAgbWF4c3RyaWRlID0gNQorICAgIG4gPSByYW5kcmFuZ2UoMTAwKQorICAgIHplcm9fc3RyaWRlID0gVHJ1ZSBpZiBuID49IDk1IGFuZCBuICYgMSBlbHNlIEZhbHNlCisKKyAgICBzdHJpZGVzID0gWzBdICogbmRpbQorICAgIHN0cmlkZXNbbmRpbS0xXSA9IGl0ZW1zaXplICogcmFuZHJhbmdlKC1tYXhzdHJpZGUsIG1heHN0cmlkZSsxKQorICAgIGlmIG5vdCB6ZXJvX3N0cmlkZSBhbmQgc3RyaWRlc1tuZGltLTFdID09IDA6CisgICAgICAgIHN0cmlkZXNbbmRpbS0xXSA9IGl0ZW1zaXplCisKKyAgICBmb3IgaSBpbiByYW5nZShuZGltLTIsIC0xLCAtMSk6CisgICAgICAgIG1heHN0cmlkZSAqPSBzaGFwZVtpKzFdIGlmIHNoYXBlW2krMV0gZWxzZSAxCisgICAgICAgIGlmIHplcm9fc3RyaWRlOgorICAgICAgICAgICAgc3RyaWRlc1tpXSA9IGl0ZW1zaXplICogcmFuZHJhbmdlKC1tYXhzdHJpZGUsIG1heHN0cmlkZSsxKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3RyaWRlc1tpXSA9ICgoMSwtMSlbcmFuZHJhbmdlKDIpXSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplICogcmFuZHJhbmdlKDEsIG1heHN0cmlkZSsxKSkKKworICAgIGltaW4gPSBpbWF4ID0gMAorICAgIGlmIG5vdCAwIGluIHNoYXBlOgorICAgICAgICBpbWluID0gc3VtKHN0cmlkZXNbal0qKHNoYXBlW2pdLTEpIGZvciBqIGluIHJhbmdlKG5kaW0pCisgICAgICAgICAgICAgICAgICAgaWYgc3RyaWRlc1tqXSA8PSAwKQorICAgICAgICBpbWF4ID0gc3VtKHN0cmlkZXNbal0qKHNoYXBlW2pdLTEpIGZvciBqIGluIHJhbmdlKG5kaW0pCisgICAgICAgICAgICAgICAgICAgaWYgc3RyaWRlc1tqXSA+IDApCisKKyAgICBuaXRlbXMgPSBpbWF4IC0gaW1pbgorICAgIGlmIHZhbGlkOgorICAgICAgICBvZmZzZXQgPSAtaW1pbiAqIGl0ZW1zaXplCisgICAgICAgIG1lbWxlbiA9IG9mZnNldCArIChpbWF4KzEpICogaXRlbXNpemUKKyAgICBlbHNlOgorICAgICAgICBtZW1sZW4gPSAoLWltaW4gKyBpbWF4KSAqIGl0ZW1zaXplCisgICAgICAgIG9mZnNldCA9IC1pbWluLWl0ZW1zaXplIGlmIHJhbmRyYW5nZSgyKSA9PSAwIGVsc2UgbWVtbGVuCisgICAgcmV0dXJuIG1lbWxlbiwgaXRlbXNpemUsIG5kaW0sIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQKKworZGVmIHJhbmRzbGljZV9mcm9tX3NsaWNlbGVuKHNsaWNlbGVuLCBsaXN0bGVuKToKKyAgICAiIiJDcmVhdGUgYSByYW5kb20gc2xpY2Ugb2YgbGVuIHNsaWNlbGVuIHRoYXQgZml0cyBpbnRvIGxpc3RsZW4uIiIiCisgICAgbWF4c3RhcnQgPSBsaXN0bGVuIC0gc2xpY2VsZW4KKyAgICBzdGFydCA9IHJhbmRyYW5nZShtYXhzdGFydCsxKQorICAgIG1heHN0ZXAgPSAobGlzdGxlbiAtIHN0YXJ0KSAvLyBzbGljZWxlbiBpZiBzbGljZWxlbiBlbHNlIDEKKyAgICBzdGVwID0gcmFuZHJhbmdlKDEsIG1heHN0ZXArMSkKKyAgICBzdG9wID0gc3RhcnQgKyBzbGljZWxlbiAqIHN0ZXAKKyAgICBzID0gc2xpY2Uoc3RhcnQsIHN0b3AsIHN0ZXApCisgICAgXywgXywgXywgY29udHJvbCA9IHNsaWNlX2luZGljZXMocywgbGlzdGxlbikKKyAgICBpZiBjb250cm9sICE9IHNsaWNlbGVuOgorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKyAgICByZXR1cm4gcworCitkZWYgcmFuZHNsaWNlX2Zyb21fc2hhcGUobmRpbSwgc2hhcGUpOgorICAgICIiIkNyZWF0ZSB0d28gc2V0cyBvZiBzbGljZXMgZm9yIGFuIGFycmF5IHggd2l0aCBzaGFwZSAnc2hhcGUnCisgICAgICAgc3VjaCB0aGF0IHNoYXBlb2YoeFtsc2xpY2VzXSkgPT0gc2hhcGVvZih4W3JzbGljZXNdKS4iIiIKKyAgICBsc2xpY2VzID0gWzBdICogbmRpbQorICAgIHJzbGljZXMgPSBbMF0gKiBuZGltCisgICAgZm9yIG4gaW4gcmFuZ2UobmRpbSk6CisgICAgICAgIGwgPSBzaGFwZVtuXQorICAgICAgICBzbGljZWxlbiA9IHJhbmRyYW5nZSgxLCBsKzEpIGlmIGwgPiAwIGVsc2UgMAorICAgICAgICBsc2xpY2VzW25dID0gcmFuZHNsaWNlX2Zyb21fc2xpY2VsZW4oc2xpY2VsZW4sIGwpCisgICAgICAgIHJzbGljZXNbbl0gPSByYW5kc2xpY2VfZnJvbV9zbGljZWxlbihzbGljZWxlbiwgbCkKKyAgICByZXR1cm4gdHVwbGUobHNsaWNlcyksIHR1cGxlKHJzbGljZXMpCisKK2RlZiByYW5kX2FsaWduZWRfc2xpY2VzKG1heGRpbT01LCBtYXhzaGFwZT0xNik6CisgICAgIiIiQ3JlYXRlIChsc2hhcGUsIHJzaGFwZSwgdHVwbGUobHNsaWNlcyksIHR1cGxlKHJzbGljZXMpKSBzdWNoIHRoYXQKKyAgICAgICBzaGFwZW9mKHhbbHNsaWNlc10pID09IHNoYXBlb2YoeVtyc2xpY2VzXSksIHdoZXJlIHggaXMgYW4gYXJyYXkKKyAgICAgICB3aXRoIHNoYXBlICdsc2hhcGUnIGFuZCB5IGlzIGFuIGFycmF5IHdpdGggc2hhcGUgJ3JzaGFwZScuIiIiCisgICAgbmRpbSA9IHJhbmRyYW5nZSgxLCBtYXhkaW0rMSkKKyAgICBtaW5zaGFwZSA9IDIKKyAgICBuID0gcmFuZHJhbmdlKDEwMCkKKyAgICBpZiBuID49IDk1OgorICAgICAgICBtaW5zaGFwZSA9IDAKKyAgICBlbGlmIG4gPj0gOTA6CisgICAgICAgIG1pbnNoYXBlID0gMQorICAgIGFsbF9yYW5kb20gPSBUcnVlIGlmIHJhbmRyYW5nZSgxMDApID49IDgwIGVsc2UgRmFsc2UKKyAgICBsc2hhcGUgPSBbMF0qbmRpbTsgcnNoYXBlID0gWzBdKm5kaW0KKyAgICBsc2xpY2VzID0gWzBdKm5kaW07IHJzbGljZXMgPSBbMF0qbmRpbQorCisgICAgZm9yIG4gaW4gcmFuZ2UobmRpbSk6CisgICAgICAgIHNtYWxsID0gcmFuZHJhbmdlKG1pbnNoYXBlLCBtYXhzaGFwZSsxKQorICAgICAgICBiaWcgPSByYW5kcmFuZ2UobWluc2hhcGUsIG1heHNoYXBlKzEpCisgICAgICAgIGlmIGJpZyA8IHNtYWxsOgorICAgICAgICAgICAgYmlnLCBzbWFsbCA9IHNtYWxsLCBiaWcKKworICAgICAgICAjIENyZWF0ZSBhIHNsaWNlIHRoYXQgZml0cyB0aGUgc21hbGxlciB2YWx1ZS4KKyAgICAgICAgaWYgYWxsX3JhbmRvbToKKyAgICAgICAgICAgIHN0YXJ0ID0gcmFuZHJhbmdlKC1zbWFsbCwgc21hbGwrMSkKKyAgICAgICAgICAgIHN0b3AgPSByYW5kcmFuZ2UoLXNtYWxsLCBzbWFsbCsxKQorICAgICAgICAgICAgc3RlcCA9ICgxLC0xKVtyYW5kcmFuZ2UoMildICogcmFuZHJhbmdlKDEsIHNtYWxsKzIpCisgICAgICAgICAgICBzX3NtYWxsID0gc2xpY2Uoc3RhcnQsIHN0b3AsIHN0ZXApCisgICAgICAgICAgICBfLCBfLCBfLCBzbGljZWxlbiA9IHNsaWNlX2luZGljZXMoc19zbWFsbCwgc21hbGwpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzbGljZWxlbiA9IHJhbmRyYW5nZSgxLCBzbWFsbCsxKSBpZiBzbWFsbCA+IDAgZWxzZSAwCisgICAgICAgICAgICBzX3NtYWxsID0gcmFuZHNsaWNlX2Zyb21fc2xpY2VsZW4oc2xpY2VsZW4sIHNtYWxsKQorCisgICAgICAgICMgQ3JlYXRlIGEgc2xpY2Ugb2YgdGhlIHNhbWUgbGVuZ3RoIGZvciB0aGUgYmlnZ2VyIHZhbHVlLgorICAgICAgICBzX2JpZyA9IHJhbmRzbGljZV9mcm9tX3NsaWNlbGVuKHNsaWNlbGVuLCBiaWcpCisgICAgICAgIGlmIHJhbmRyYW5nZSgyKSA9PSAwOgorICAgICAgICAgICAgcnNoYXBlW25dLCBsc2hhcGVbbl0gPSBiaWcsIHNtYWxsCisgICAgICAgICAgICByc2xpY2VzW25dLCBsc2xpY2VzW25dID0gc19iaWcsIHNfc21hbGwKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJzaGFwZVtuXSwgbHNoYXBlW25dID0gc21hbGwsIGJpZworICAgICAgICAgICAgcnNsaWNlc1tuXSwgbHNsaWNlc1tuXSA9IHNfc21hbGwsIHNfYmlnCisKKyAgICByZXR1cm4gbHNoYXBlLCByc2hhcGUsIHR1cGxlKGxzbGljZXMpLCB0dXBsZShyc2xpY2VzKQorCitkZWYgcmFuZGl0ZW1zX2Zyb21fc3RydWN0dXJlKGZtdCwgdCk6CisgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiByYW5kb20gaXRlbXMgZm9yIHN0cnVjdHVyZSAndCcgd2l0aCBmb3JtYXQKKyAgICAgICAnZm10Y2hhcicuIiIiCisgICAgbWVtbGVuLCBpdGVtc2l6ZSwgXywgXywgXywgXyA9IHQKKyAgICByZXR1cm4gZ2VuX2l0ZW1zKG1lbWxlbi8vaXRlbXNpemUsICcjJytmbXQsICdudW1weScpCisKK2RlZiBuZGFycmF5X2Zyb21fc3RydWN0dXJlKGl0ZW1zLCBmbXQsIHQsIGZsYWdzPTApOgorICAgICIiIlJldHVybiBuZGFycmF5IGZyb20gdGhlIHR1cGxlIHJldHVybmVkIGJ5IHJhbmRfc3RydWN0dXJlKCkiIiIKKyAgICBtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0ID0gdAorICAgIHJldHVybiBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLCBmb3JtYXQ9Zm10LAorICAgICAgICAgICAgICAgICAgIG9mZnNldD1vZmZzZXQsIGZsYWdzPU5EX1dSSVRBQkxFfGZsYWdzKQorCitkZWYgbnVtcHlfYXJyYXlfZnJvbV9zdHJ1Y3R1cmUoaXRlbXMsIGZtdCwgdCk6CisgICAgIiIiUmV0dXJuIG51bXB5X2FycmF5IGZyb20gdGhlIHR1cGxlIHJldHVybmVkIGJ5IHJhbmRfc3RydWN0dXJlKCkiIiIKKyAgICBtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0ID0gdAorICAgIGJ1ZiA9IGJ5dGVhcnJheShtZW1sZW4pCisgICAgZm9yIGosIHYgaW4gZW51bWVyYXRlKGl0ZW1zKToKKyAgICAgICAgc3RydWN0LnBhY2tfaW50byhmbXQsIGJ1ZiwgaippdGVtc2l6ZSwgdikKKyAgICByZXR1cm4gbnVtcHlfYXJyYXkoYnVmZmVyPWJ1Ziwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgZHR5cGU9Zm10LCBvZmZzZXQ9b2Zmc2V0KQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5dmlldyBjYXN0cworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2RlZiBjYXN0X2l0ZW1zKGV4cG9ydGVyLCBmbXQsIGl0ZW1zaXplLCBzaGFwZT1Ob25lKToKKyAgICAiIiJJbnRlcnByZXQgdGhlIHJhdyBtZW1vcnkgb2YgJ2V4cG9ydGVyJyBhcyBhIGxpc3Qgb2YgaXRlbXMgd2l0aAorICAgICAgIHNpemUgJ2l0ZW1zaXplJy4gSWYgc2hhcGU9Tm9uZSwgdGhlIG5ldyBzdHJ1Y3R1cmUgaXMgYXNzdW1lZCB0bworICAgICAgIGJlIDEtRCB3aXRoIG4gKiBpdGVtc2l6ZSA9IGJ5dGVsZW4uIElmIHNoYXBlIGlzIGdpdmVuLCB0aGUgdXN1YWwKKyAgICAgICBjb25zdHJhaW50IGZvciBjb250aWd1b3VzIGFycmF5cyBwcm9kKHNoYXBlKSAqIGl0ZW1zaXplID0gYnl0ZWxlbgorICAgICAgIGFwcGxpZXMuIE9uIHN1Y2Nlc3MsIHJldHVybiAoaXRlbXMsIHNoYXBlKS4gSWYgdGhlIGNvbnN0cmFpbnRzCisgICAgICAgY2Fubm90IGJlIG1ldCwgcmV0dXJuIChOb25lLCBOb25lKS4gSWYgYSBjaHVuayBvZiBieXRlcyBpcyBpbnRlcnByZXRlZAorICAgICAgIGFzIE5hTiBhcyBhIHJlc3VsdCBvZiBmbG9hdCBjb252ZXJzaW9uLCByZXR1cm4gKCduYW4nLCBOb25lKS4iIiIKKyAgICBieXRlbGVuID0gZXhwb3J0ZXIubmJ5dGVzCisgICAgaWYgc2hhcGU6CisgICAgICAgIGlmIHByb2Qoc2hhcGUpICogaXRlbXNpemUgIT0gYnl0ZWxlbjoKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBzaGFwZQorICAgIGVsaWYgc2hhcGUgPT0gW106CisgICAgICAgIGlmIGV4cG9ydGVyLm5kaW0gPT0gMCBvciBpdGVtc2l6ZSAhPSBieXRlbGVuOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUsIHNoYXBlCisgICAgZWxzZToKKyAgICAgICAgbiwgciA9IGRpdm1vZChieXRlbGVuLCBpdGVtc2l6ZSkKKyAgICAgICAgc2hhcGUgPSBbbl0KKyAgICAgICAgaWYgciAhPSAwOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUsIHNoYXBlCisKKyAgICBtZW0gPSBleHBvcnRlci50b2J5dGVzKCkKKyAgICBieXRlaXRlbXMgPSBbbWVtW2k6aStpdGVtc2l6ZV0gZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKG1lbSksIGl0ZW1zaXplKV0KKworICAgIGl0ZW1zID0gW10KKyAgICBmb3IgdiBpbiBieXRlaXRlbXM6CisgICAgICAgIGl0ZW0gPSBzdHJ1Y3QudW5wYWNrKGZtdCwgdilbMF0KKyAgICAgICAgaWYgaXRlbSAhPSBpdGVtOgorICAgICAgICAgICAgcmV0dXJuICduYW4nLCBzaGFwZQorICAgICAgICBpdGVtcy5hcHBlbmQoaXRlbSkKKworICAgIHJldHVybiAoaXRlbXMsIHNoYXBlKSBpZiBzaGFwZSAhPSBbXSBlbHNlIChpdGVtc1swXSwgc2hhcGUpCisKK2RlZiBnZW5jYXN0c2hhcGVzKCk6CisgICAgIiIiR2VuZXJhdGUgc2hhcGVzIHRvIHRlc3QgY2FzdGluZy4iIiIKKyAgICBmb3IgbiBpbiByYW5nZSgzMik6CisgICAgICAgIHlpZWxkIFtuXQorICAgIG5kaW0gPSByYW5kcmFuZ2UoNCwgNikKKyAgICBtaW5zaGFwZSA9IDEgaWYgcmFuZHJhbmdlKDEwMCkgPiA4MCBlbHNlIDIKKyAgICB5aWVsZCBbcmFuZHJhbmdlKG1pbnNoYXBlLCA1KSBmb3IgXyBpbiByYW5nZShuZGltKV0KKyAgICBuZGltID0gcmFuZHJhbmdlKDIsIDQpCisgICAgbWluc2hhcGUgPSAxIGlmIHJhbmRyYW5nZSgxMDApID4gODAgZWxzZSAyCisgICAgeWllbGQgW3JhbmRyYW5nZShtaW5zaGFwZSwgNSkgZm9yIF8gaW4gcmFuZ2UobmRpbSldCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0dWFsIHRlc3RzCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworZGVmIGdlbnNsaWNlcyhuKToKKyAgICAiIiJHZW5lcmF0ZSBhbGwgcG9zc2libGUgc2xpY2VzIGZvciBhIHNpbmdsZSBkaW1lbnNpb24uIiIiCisgICAgcmV0dXJuIHByb2R1Y3QocmFuZ2UoLW4sIG4rMSksIHJhbmdlKC1uLCBuKzEpLCByYW5nZSgtbiwgbisxKSkKKworZGVmIGdlbnNsaWNlc19uZGltKG5kaW0sIHNoYXBlKToKKyAgICAiIiJHZW5lcmF0ZSBhbGwgcG9zc2libGUgc2xpY2UgdHVwbGVzIGZvciAnc2hhcGUnLiIiIgorICAgIGl0ZXJhYmxlcyA9IFtnZW5zbGljZXMoc2hhcGVbbl0pIGZvciBuIGluIHJhbmdlKG5kaW0pXQorICAgIHJldHVybiBwcm9kdWN0KCppdGVyYWJsZXMpCisKK2RlZiByc2xpY2UobiwgYWxsb3dfZW1wdHk9RmFsc2UpOgorICAgICIiIkdlbmVyYXRlIHJhbmRvbSBzbGljZSBmb3IgYSBzaW5nbGUgZGltZW5zaW9uIG9mIGxlbmd0aCBuLgorICAgICAgIElmIHplcm89VHJ1ZSwgdGhlIHNsaWNlcyBtYXkgYmUgZW1wdHksIG90aGVyd2lzZSB0aGV5IHdpbGwKKyAgICAgICBiZSBub24tZW1wdHkuIiIiCisgICAgbWlubGVuID0gMCBpZiBhbGxvd19lbXB0eSBvciBuID09IDAgZWxzZSAxCisgICAgc2xpY2VsZW4gPSByYW5kcmFuZ2UobWlubGVuLCBuKzEpCisgICAgcmV0dXJuIHJhbmRzbGljZV9mcm9tX3NsaWNlbGVuKHNsaWNlbGVuLCBuKQorCitkZWYgcnNsaWNlcyhuLCBhbGxvd19lbXB0eT1GYWxzZSk6CisgICAgIiIiR2VuZXJhdGUgcmFuZG9tIHNsaWNlcyBmb3IgYSBzaW5nbGUgZGltZW5zaW9uLiIiIgorICAgIGZvciBfIGluIHJhbmdlKDUpOgorICAgICAgICB5aWVsZCByc2xpY2UobiwgYWxsb3dfZW1wdHkpCisKK2RlZiByc2xpY2VzX25kaW0obmRpbSwgc2hhcGUsIGl0ZXJhdGlvbnM9NSk6CisgICAgIiIiR2VuZXJhdGUgcmFuZG9tIHNsaWNlIHR1cGxlcyBmb3IgJ3NoYXBlJy4iIiIKKyAgICAjIG5vbi1lbXB0eSBzbGljZXMKKyAgICBmb3IgXyBpbiByYW5nZShpdGVyYXRpb25zKToKKyAgICAgICAgeWllbGQgdHVwbGUocnNsaWNlKHNoYXBlW25dKSBmb3IgbiBpbiByYW5nZShuZGltKSkKKyAgICAjIHBvc3NpYmx5IGVtcHR5IHNsaWNlcworICAgIGZvciBfIGluIHJhbmdlKGl0ZXJhdGlvbnMpOgorICAgICAgICB5aWVsZCB0dXBsZShyc2xpY2Uoc2hhcGVbbl0sIGFsbG93X2VtcHR5PVRydWUpIGZvciBuIGluIHJhbmdlKG5kaW0pKQorICAgICMgaW52YWxpZCBzbGljZXMKKyAgICB5aWVsZCB0dXBsZShzbGljZSgwLDEsMCkgZm9yIF8gaW4gcmFuZ2UobmRpbSkpCisKK2RlZiBycGVybXV0YXRpb24oaXRlcmFibGUsIHI9Tm9uZSk6CisgICAgcG9vbCA9IHR1cGxlKGl0ZXJhYmxlKQorICAgIHIgPSBsZW4ocG9vbCkgaWYgciBpcyBOb25lIGVsc2UgcgorICAgIHlpZWxkIHR1cGxlKHNhbXBsZShwb29sLCByKSkKKworZGVmIG5kYXJyYXlfcHJpbnQobmQpOgorICAgICIiIlByaW50IG5kYXJyYXkgZm9yIGRlYnVnZ2luZy4iIiIKKyAgICB0cnk6CisgICAgICAgIHggPSBuZC50b2xpc3QoKQorICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBOb3RJbXBsZW1lbnRlZEVycm9yKToKKyAgICAgICAgeCA9IG5kLnRvYnl0ZXMoKQorICAgIGlmIGlzaW5zdGFuY2UobmQsIG5kYXJyYXkpOgorICAgICAgICBvZmZzZXQgPSBuZC5vZmZzZXQKKyAgICAgICAgZmxhZ3MgPSBuZC5mbGFncworICAgIGVsc2U6CisgICAgICAgIG9mZnNldCA9ICd1bmtub3duJworICAgICAgICBmbGFncyA9ICd1bmtub3duJworICAgIHByaW50KCJuZGFycmF5KCVzLCBzaGFwZT0lcywgc3RyaWRlcz0lcywgc3Vib2Zmc2V0cz0lcywgb2Zmc2V0PSVzLCAiCisgICAgICAgICAgImZvcm1hdD0nJXMnLCBpdGVtc2l6ZT0lcywgZmxhZ3M9JXMpIiAlCisgICAgICAgICAgKHgsIG5kLnNoYXBlLCBuZC5zdHJpZGVzLCBuZC5zdWJvZmZzZXRzLCBvZmZzZXQsCisgICAgICAgICAgIG5kLmZvcm1hdCwgbmQuaXRlbXNpemUsIGZsYWdzKSkKKyAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKworCitJVEVSQVRJT05TID0gMTAwCitNQVhESU0gPSA1CitNQVhTSEFQRSA9IDEwCisKK2lmIFNIT1JUX1RFU1Q6CisgICAgSVRFUkFUSU9OUyA9IDEwCisgICAgTUFYRElNID0gMworICAgIE1BWFNIQVBFID0gNAorICAgIGdlbnNsaWNlcyA9IHJzbGljZXMKKyAgICBnZW5zbGljZXNfbmRpbSA9IHJzbGljZXNfbmRpbQorICAgIHBlcm11dGF0aW9ucyA9IHJwZXJtdXRhdGlvbgorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN0cnVjdCwgJ3N0cnVjdCBtb2R1bGUgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHVuaXR0ZXN0LnNraXBVbmxlc3MobmRhcnJheSwgJ25kYXJyYXkgb2JqZWN0IHJlcXVpcmVkIGZvciB0aGlzIHRlc3QnKQorY2xhc3MgVGVzdEJ1ZmZlclByb3RvY29sKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIyBUaGUgc3Vib2Zmc2V0cyB0ZXN0cyBuZWVkIHNpemVvZih2b2lkICopLgorICAgICAgICBzZWxmLnNpemVvZl92b2lkX3AgPSBnZXRfc2l6ZW9mX3ZvaWRfcCgpCisKKyAgICBkZWYgdmVyaWZ5KHNlbGYsIHJlc3VsdCwgb2JqPS0xLAorICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9ezF9LCBmbXQ9LTEsIHJlYWRvbmx5PXsxfSwKKyAgICAgICAgICAgICAgICAgICAgIG5kaW09ezF9LCBzaGFwZT0tMSwgc3RyaWRlcz0tMSwKKyAgICAgICAgICAgICAgICAgICAgIGxzdD0tMSwgc2xpY2VkPUZhbHNlLCBjYXN0PUZhbHNlKToKKyAgICAgICAgIyBWZXJpZnkgYnVmZmVyIGNvbnRlbnRzIGFnYWluc3QgZXhwZWN0ZWQgdmFsdWVzLiBEZWZhdWx0IHZhbHVlcworICAgICAgICAjIGFyZSBkZWxpYmVyYXRlbHkgaW5pdGlhbGl6ZWQgdG8gaW52YWxpZCB0eXBlcy4KKyAgICAgICAgaWYgc2hhcGU6CisgICAgICAgICAgICBleHBlY3RlZF9sZW4gPSBwcm9kKHNoYXBlKSppdGVtc2l6ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbm90IGZtdDogIyBhcnJheSBoYXMgYmVlbiBpbXBsaWNpdGx5IGNhc3QgdG8gdW5zaWduZWQgYnl0ZXMKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9sZW4gPSBsZW4obHN0KQorICAgICAgICAgICAgZWxzZTogIyBuZGltID0gMAorICAgICAgICAgICAgICAgIGV4cGVjdGVkX2xlbiA9IGl0ZW1zaXplCisKKyAgICAgICAgIyBSZWNvbnN0cnVjdCBzdWJvZmZzZXRzIGZyb20gc3RyaWRlcy4gU3VwcG9ydCBmb3Igc2xpY2luZworICAgICAgICAjIGNvdWxkIGJlIGFkZGVkLCBidXQgaXMgY3VycmVudGx5IG9ubHkgbmVlZGVkIGZvciB0ZXN0X2dldGJ1ZigpLgorICAgICAgICBzdWJvZmZzZXRzID0gKCkKKyAgICAgICAgaWYgcmVzdWx0LnN1Ym9mZnNldHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobmRpbSwgMCkKKworICAgICAgICAgICAgc3Vib2Zmc2V0MCA9IDAKKyAgICAgICAgICAgIGZvciBuIGluIHJhbmdlKDEsIG5kaW0pOgorICAgICAgICAgICAgICAgIGlmIHNoYXBlW25dID09IDA6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgaWYgc3RyaWRlc1tuXSA8PSAwOgorICAgICAgICAgICAgICAgICAgICBzdWJvZmZzZXQwICs9IC1zdHJpZGVzW25dICogKHNoYXBlW25dLTEpCisKKyAgICAgICAgICAgIHN1Ym9mZnNldHMgPSBbc3Vib2Zmc2V0MF0gKyBbLTEgZm9yIHYgaW4gcmFuZ2UobmRpbS0xKV0KKworICAgICAgICAgICAgIyBOb3QgY29ycmVjdCBpZiBzbGljaW5nIGhhcyBvY2N1cnJlZCBpbiB0aGUgZmlyc3QgZGltZW5zaW9uLgorICAgICAgICAgICAgc3RyaWRlMCA9IHNlbGYuc2l6ZW9mX3ZvaWRfcAorICAgICAgICAgICAgaWYgc3RyaWRlc1swXSA8IDA6CisgICAgICAgICAgICAgICAgc3RyaWRlMCA9IC1zdHJpZGUwCisgICAgICAgICAgICBzdHJpZGVzID0gW3N0cmlkZTBdICsgbGlzdChzdHJpZGVzWzE6XSkKKworICAgICAgICBzZWxmLmFzc2VydElzKHJlc3VsdC5vYmosIG9iaikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQubmJ5dGVzLCBleHBlY3RlZF9sZW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lml0ZW1zaXplLCBpdGVtc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuZm9ybWF0LCBmbXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnJlYWRvbmx5LCByZWFkb25seSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQubmRpbSwgbmRpbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc2hhcGUsIHR1cGxlKHNoYXBlKSkKKyAgICAgICAgaWYgbm90IChzbGljZWQgYW5kIHN1Ym9mZnNldHMpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RyaWRlcywgdHVwbGUoc3RyaWRlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN1Ym9mZnNldHMsIHR1cGxlKHN1Ym9mZnNldHMpKQorCisgICAgICAgIGlmIGlzaW5zdGFuY2UocmVzdWx0LCBuZGFycmF5KSBvciBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgcmVwID0gcmVzdWx0LnRvbGlzdCgpIGlmIGZtdCBlbHNlIHJlc3VsdC50b2J5dGVzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwLCBsc3QpCisKKyAgICAgICAgaWYgbm90IGZtdDogIyBhcnJheSBoYXMgYmVlbiBjYXN0IHRvIHVuc2lnbmVkIGJ5dGVzLAorICAgICAgICAgICAgcmV0dXJuICAjIHRoZSByZW1haW5pbmcgdGVzdHMgd29uJ3Qgd29yay4KKworICAgICAgICAjIFB5QnVmZmVyX0dldFBvaW50ZXIoKSBpcyB0aGUgZGVmaW5pdGlvbiBob3cgdG8gYWNjZXNzIGFuIGl0ZW0uCisgICAgICAgICMgSWYgUHlCdWZmZXJfR2V0UG9pbnRlcihpbmRpY2VzKSBpcyBjb3JyZWN0IGZvciBhbGwgcG9zc2libGUKKyAgICAgICAgIyBjb21iaW5hdGlvbnMgb2YgaW5kaWNlcywgdGhlIGJ1ZmZlciBpcyBjb3JyZWN0LgorICAgICAgICAjCisgICAgICAgICMgQWxzbyB0ZXN0IHRvYnl0ZXMoKSBhZ2FpbnN0IHRoZSBmbGF0dGVuZWQgJ2xzdCcsIHdpdGggYWxsIGl0ZW1zCisgICAgICAgICMgcGFja2VkIHRvIGJ5dGVzLgorICAgICAgICBpZiBub3QgY2FzdDogIyBjYXN0cyBjaG9wIHVwICdsc3QnIGluIGRpZmZlcmVudCB3YXlzCisgICAgICAgICAgICBiID0gYnl0ZWFycmF5KCkKKyAgICAgICAgICAgIGJ1Zl9lcnIgPSBOb25lCisgICAgICAgICAgICBmb3IgaW5kIGluIGluZGljZXMoc2hhcGUpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaXRlbTEgPSBnZXRfcG9pbnRlcihyZXN1bHQsIGluZCkKKyAgICAgICAgICAgICAgICAgICAgaXRlbTIgPSBnZXRfaXRlbShsc3QsIGluZCkKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVtMiwgdHVwbGUpOgorICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHN0cnVjdC5wYWNrKGZtdCwgKml0ZW0yKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHN0cnVjdC5wYWNrKGZtdCwgaXRlbTIpCisgICAgICAgICAgICAgICAgICAgIGIuZXh0ZW5kKHgpCisgICAgICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlckVycm9yOgorICAgICAgICAgICAgICAgICAgICBidWZfZXJyID0gVHJ1ZSAjIHJlLWV4cG9ydGVyIGRvZXMgbm90IHByb3ZpZGUgZnVsbCBidWZmZXIKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl0ZW0xLCBpdGVtMikKKworICAgICAgICAgICAgaWYgbm90IGJ1Zl9lcnI6CisgICAgICAgICAgICAgICAgIyB0ZXN0IHRvYnl0ZXMoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnRvYnl0ZXMoKSwgYikKKworICAgICAgICAgICAgICAgICMgbHN0IDo9IGV4cGVjdGVkIG11bHRpLWRpbWVuc2lvbmFsIGxvZ2ljYWwgcmVwcmVzZW50YXRpb24KKyAgICAgICAgICAgICAgICAjIGZsYXR0ZW4obHN0KSA6PSBlbGVtZW50cyBpbiBDLW9yZGVyCisgICAgICAgICAgICAgICAgZmYgPSBmbXQgaWYgZm10IGVsc2UgJ0InCisgICAgICAgICAgICAgICAgZmxhdHRlbmVkID0gZmxhdHRlbihsc3QpCisKKyAgICAgICAgICAgICAgICAjIFJ1bGVzIGZvciAnQSc6IGlmIHRoZSBhcnJheSBpcyBhbHJlYWR5IGNvbnRpZ3VvdXMsIHJldHVybgorICAgICAgICAgICAgICAgICMgdGhlIGFycmF5IHVuYWx0ZXJlZC4gT3RoZXJ3aXNlLCByZXR1cm4gYSBjb250aWd1b3VzICdDJworICAgICAgICAgICAgICAgICMgcmVwcmVzZW50YXRpb24uCisgICAgICAgICAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgaWYgb3JkZXIgPT0gJ0YnOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzX2NvbnRpZ3VvdXMocmVzdWx0LCAnQScpIG9yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2NvbnRpZ3VvdXMocmVzdWx0LCAnQycpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRm9yIGNvbnN0cnVjdGluZyB0aGUgbmRhcnJheSwgY29udmVydCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZsYXR0ZW5lZCBsb2dpY2FsIHJlcHJlc2VudGF0aW9uIHRvIEZvcnRyYW4gb3JkZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnMgPSB0cmFuc3Bvc2UoZmxhdHRlbmVkLCBzaGFwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9IG5kYXJyYXkodHJhbnMsIHNoYXBlPXNoYXBlLCBmb3JtYXQ9ZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgICAgICAgICAgICAgIGVsc2U6ICMgJ0MnLCAnQScKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc19jb250aWd1b3VzKHJlc3VsdCwgJ0EnKSBvciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19jb250aWd1b3VzKHJlc3VsdCwgJ0YnKSBhbmQgb3JkZXIgPT0gJ0MnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhlIGZsYXR0ZW5lZCBsaXN0IGlzIGFscmVhZHkgaW4gQy1vcmRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9IG5kYXJyYXkoZmxhdHRlbmVkLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZmKQorCisgICAgICAgICAgICAgICAgICAgIGNvbnRpZyA9IGdldF9jb250aWd1b3VzKHJlc3VsdCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGlnLnRvYnl0ZXMoKSwgYikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNtcF9jb250aWcoY29udGlnLCBleHBlY3RlZCkpCisKKyAgICAgICAgICAgICAgICAgICAgaWYgbmRpbSA9PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICBubWVtYiA9IGxlbihmbGF0dGVuZWQpCisgICAgICAgICAgICAgICAgICAgIHJvID0gMCBpZiByZWFkb25seSBlbHNlIE5EX1dSSVRBQkxFCisKKyAgICAgICAgICAgICAgICAgICAgIyMjIFNlZSBjb21tZW50IGluIHRlc3RfcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMgZm9yIGFuCisgICAgICAgICAgICAgICAgICAgICMjIyBleHBsYW5hdGlvbiB3aHkgdGhlc2UgdGVzdHMgYXJlIHZhbGlkLgorCisgICAgICAgICAgICAgICAgICAgICMgVG8gJ0MnCisgICAgICAgICAgICAgICAgICAgIGNvbnRpZyA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKHJlc3VsdCwgJ0MnLCBQeUJVRl9GVUxMX1JPKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjb250aWcpLCBubWVtYiAqIGl0ZW1zaXplKQorICAgICAgICAgICAgICAgICAgICBpbml0bHN0ID0gW3N0cnVjdC51bnBhY2tfZnJvbShmbXQsIGNvbnRpZywgbippdGVtc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbiBpbiByYW5nZShubWVtYildCisgICAgICAgICAgICAgICAgICAgIGlmIGxlbihpbml0bHN0WzBdKSA9PSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGxzdCA9IFt2WzBdIGZvciB2IGluIGluaXRsc3RdCisKKyAgICAgICAgICAgICAgICAgICAgeSA9IG5kYXJyYXkoaW5pdGxzdCwgc2hhcGU9c2hhcGUsIGZsYWdzPXJvLCBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbW9yeXZpZXcoeSksIG1lbW9yeXZpZXcocmVzdWx0KSkKKworICAgICAgICAgICAgICAgICAgICAjIFRvICdGJworICAgICAgICAgICAgICAgICAgICBjb250aWcgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhyZXN1bHQsICdGJywgUHlCVUZfRlVMTF9STykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY29udGlnKSwgbm1lbWIgKiBpdGVtc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgaW5pdGxzdCA9IFtzdHJ1Y3QudW5wYWNrX2Zyb20oZm10LCBjb250aWcsIG4qaXRlbXNpemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG4gaW4gcmFuZ2Uobm1lbWIpXQorICAgICAgICAgICAgICAgICAgICBpZiBsZW4oaW5pdGxzdFswXSkgPT0gMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGluaXRsc3QgPSBbdlswXSBmb3IgdiBpbiBpbml0bHN0XQorCisgICAgICAgICAgICAgICAgICAgIHkgPSBuZGFycmF5KGluaXRsc3QsIHNoYXBlPXNoYXBlLCBmbGFncz1yb3xORF9GT1JUUkFOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbW9yeXZpZXcoeSksIG1lbW9yeXZpZXcocmVzdWx0KSkKKworICAgICAgICAgICAgICAgICAgICAjIFRvICdBJworICAgICAgICAgICAgICAgICAgICBjb250aWcgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhyZXN1bHQsICdBJywgUHlCVUZfRlVMTF9STykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY29udGlnKSwgbm1lbWIgKiBpdGVtc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgaW5pdGxzdCA9IFtzdHJ1Y3QudW5wYWNrX2Zyb20oZm10LCBjb250aWcsIG4qaXRlbXNpemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG4gaW4gcmFuZ2Uobm1lbWIpXQorICAgICAgICAgICAgICAgICAgICBpZiBsZW4oaW5pdGxzdFswXSkgPT0gMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGluaXRsc3QgPSBbdlswXSBmb3IgdiBpbiBpbml0bHN0XQorCisgICAgICAgICAgICAgICAgICAgIGYgPSBORF9GT1JUUkFOIGlmIGlzX2NvbnRpZ3VvdXMocmVzdWx0LCAnRicpIGVsc2UgMAorICAgICAgICAgICAgICAgICAgICB5ID0gbmRhcnJheShpbml0bHN0LCBzaGFwZT1zaGFwZSwgZmxhZ3M9ZnxybywgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KHJlc3VsdCkpCisKKyAgICAgICAgaWYgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhyZXN1bHQpCisgICAgICAgICAgICBleGNlcHQgQnVmZmVyRXJyb3I6ICMgcmUtZXhwb3J0ZXIgZG9lcyBub3QgcHJvdmlkZSBmdWxsIGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBleCA9IHJlc3VsdC5vYmogaWYgaXNpbnN0YW5jZShyZXN1bHQsIG1lbW9yeXZpZXcpIGVsc2UgcmVzdWx0CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG0ub2JqLCBleCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5uYnl0ZXMsIGV4cGVjdGVkX2xlbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5pdGVtc2l6ZSwgaXRlbXNpemUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZm9ybWF0LCBmbXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmVhZG9ubHksIHJlYWRvbmx5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm5kaW0sIG5kaW0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc2hhcGUsIHR1cGxlKHNoYXBlKSkKKyAgICAgICAgICAgIGlmIG5vdCAoc2xpY2VkIGFuZCBzdWJvZmZzZXRzKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc3RyaWRlcywgdHVwbGUoc3RyaWRlcykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc3Vib2Zmc2V0cywgdHVwbGUoc3Vib2Zmc2V0cykpCisKKyAgICAgICAgICAgIG4gPSAxIGlmIG5kaW0gPT0gMCBlbHNlIGxlbihsc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtKSwgbikKKworICAgICAgICAgICAgcmVwID0gcmVzdWx0LnRvbGlzdCgpIGlmIGZtdCBlbHNlIHJlc3VsdC50b2J5dGVzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwLCBsc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIHJlc3VsdCkKKworICAgIGRlZiB2ZXJpZnlfZ2V0YnVmKHNlbGYsIG9yaWdfZXgsIGV4LCByZXEsIHNsaWNlZD1GYWxzZSk6CisgICAgICAgIGRlZiBzaW1wbGVfZm10KGV4KToKKyAgICAgICAgICAgIHJldHVybiBleC5mb3JtYXQgPT0gJycgb3IgZXguZm9ybWF0ID09ICdCJworICAgICAgICBkZWYgbWF0Y2gocmVxLCBmbGFnKToKKyAgICAgICAgICAgIHJldHVybiAoKHJlcSZmbGFnKSA9PSBmbGFnKQorCisgICAgICAgIGlmICgjIHdyaXRhYmxlIHJlcXVlc3QgdG8gcmVhZC1vbmx5IGV4cG9ydGVyCisgICAgICAgICAgICAoZXgucmVhZG9ubHkgYW5kIG1hdGNoKHJlcSwgUHlCVUZfV1JJVEFCTEUpKSBvcgorICAgICAgICAgICAgIyBjYW5ub3QgbWF0Y2ggZXhwbGljaXQgY29udGlndWl0eSByZXF1ZXN0CisgICAgICAgICAgICAobWF0Y2gocmVxLCBQeUJVRl9DX0NPTlRJR1VPVVMpIGFuZCBub3QgZXguY19jb250aWd1b3VzKSBvcgorICAgICAgICAgICAgKG1hdGNoKHJlcSwgUHlCVUZfRl9DT05USUdVT1VTKSBhbmQgbm90IGV4LmZfY29udGlndW91cykgb3IKKyAgICAgICAgICAgIChtYXRjaChyZXEsIFB5QlVGX0FOWV9DT05USUdVT1VTKSBhbmQgbm90IGV4LmNvbnRpZ3VvdXMpIG9yCisgICAgICAgICAgICAjIGJ1ZmZlciBuZWVkcyBzdWJvZmZzZXRzCisgICAgICAgICAgICAobm90IG1hdGNoKHJlcSwgUHlCVUZfSU5ESVJFQ1QpIGFuZCBleC5zdWJvZmZzZXRzKSBvcgorICAgICAgICAgICAgIyBidWZmZXIgd2l0aG91dCBzdHJpZGVzIG11c3QgYmUgQy1jb250aWd1b3VzCisgICAgICAgICAgICAobm90IG1hdGNoKHJlcSwgUHlCVUZfU1RSSURFUykgYW5kIG5vdCBleC5jX2NvbnRpZ3VvdXMpIG9yCisgICAgICAgICAgICAjIFB5QlVGX1NJTVBMRXxQeUJVRl9GT1JNQVQgYW5kIFB5QlVGX1dSSVRBQkxFfFB5QlVGX0ZPUk1BVAorICAgICAgICAgICAgKG5vdCBtYXRjaChyZXEsIFB5QlVGX05EKSBhbmQgbWF0Y2gocmVxLCBQeUJVRl9GT1JNQVQpKSk6CisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZGFycmF5LCBleCwgZ2V0YnVmPXJlcSkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIGlzaW5zdGFuY2UoZXgsIG5kYXJyYXkpIG9yIGlzX21lbW9yeXZpZXdfZm9ybWF0KGV4LmZvcm1hdCk6CisgICAgICAgICAgICBsc3QgPSBleC50b2xpc3QoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfRlVMTF9STykKKyAgICAgICAgICAgIGxzdCA9IG5kLnRvbGlzdCgpCisKKyAgICAgICAgIyBUaGUgY29uc3VtZXIgbWF5IGhhdmUgcmVxdWVzdGVkIGRlZmF1bHQgdmFsdWVzIG9yIGEgTlVMTCBmb3JtYXQuCisgICAgICAgIHJvID0gMCBpZiBtYXRjaChyZXEsIFB5QlVGX1dSSVRBQkxFKSBlbHNlIGV4LnJlYWRvbmx5CisgICAgICAgIGZtdCA9IGV4LmZvcm1hdAorICAgICAgICBpdGVtc2l6ZSA9IGV4Lml0ZW1zaXplCisgICAgICAgIG5kaW0gPSBleC5uZGltCisgICAgICAgIGlmIG5vdCBtYXRjaChyZXEsIFB5QlVGX0ZPUk1BVCk6CisgICAgICAgICAgICAjIGl0ZW1zaXplIHJlZmVycyB0byB0aGUgb3JpZ2luYWwgaXRlbXNpemUgYmVmb3JlIHRoZSBjYXN0LgorICAgICAgICAgICAgIyBUaGUgZXF1YWxpdHkgcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSA9IGxlbiBzdGlsbCBob2xkcy4KKyAgICAgICAgICAgICMgVGhlIGVxdWFsaXR5IGNhbGNzaXplKGZvcm1hdCkgPSBpdGVtc2l6ZSBkb2VzIF9ub3RfIGhvbGQuCisgICAgICAgICAgICBmbXQgPSAnJworICAgICAgICAgICAgbHN0ID0gb3JpZ19leC50b2J5dGVzKCkgIyBJc3N1ZSAxMjgzNAorICAgICAgICBpZiBub3QgbWF0Y2gocmVxLCBQeUJVRl9ORCk6CisgICAgICAgICAgICBuZGltID0gMQorICAgICAgICBzaGFwZSA9IG9yaWdfZXguc2hhcGUgaWYgbWF0Y2gocmVxLCBQeUJVRl9ORCkgZWxzZSAoKQorICAgICAgICBzdHJpZGVzID0gb3JpZ19leC5zdHJpZGVzIGlmIG1hdGNoKHJlcSwgUHlCVUZfU1RSSURFUykgZWxzZSAoKQorCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPXJlcSkKKyAgICAgICAgc2VsZi52ZXJpZnkobmQsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9aXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PXJvLAorICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QsIHNsaWNlZD1zbGljZWQpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2dldGJ1ZihzZWxmKToKKyAgICAgICAgcmVxdWVzdHMgPSAoCisgICAgICAgICAgICAjIGRpc3RpbmN0IGZsYWdzCisgICAgICAgICAgICBQeUJVRl9JTkRJUkVDVCwgUHlCVUZfU1RSSURFUywgUHlCVUZfTkQsIFB5QlVGX1NJTVBMRSwKKyAgICAgICAgICAgIFB5QlVGX0NfQ09OVElHVU9VUywgUHlCVUZfRl9DT05USUdVT1VTLCBQeUJVRl9BTllfQ09OVElHVU9VUywKKyAgICAgICAgICAgICMgY29tcG91bmQgcmVxdWVzdHMKKyAgICAgICAgICAgIFB5QlVGX0ZVTEwsIFB5QlVGX0ZVTExfUk8sCisgICAgICAgICAgICBQeUJVRl9SRUNPUkRTLCBQeUJVRl9SRUNPUkRTX1JPLAorICAgICAgICAgICAgUHlCVUZfU1RSSURFRCwgUHlCVUZfU1RSSURFRF9STywKKyAgICAgICAgICAgIFB5QlVGX0NPTlRJRywgUHlCVUZfQ09OVElHX1JPLAorICAgICAgICApCisgICAgICAgICMgaXRlbXMgYW5kIGZvcm1hdAorICAgICAgICBpdGVtc19mbXQgPSAoCisgICAgICAgICAgICAoW1RydWUgaWYgeCAlIDIgZWxzZSBGYWxzZSBmb3IgeCBpbiByYW5nZSgxMildLCAnPycpLAorICAgICAgICAgICAgKFsxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMl0sICdiJyksCisgICAgICAgICAgICAoWzEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyXSwgJ0InKSwKKyAgICAgICAgICAgIChbKDIqKjMxLXgpIGlmIHggJSAyIGVsc2UgKC0yKiozMSt4KSBmb3IgeCBpbiByYW5nZSgxMildLCAnbCcpCisgICAgICAgICkKKyAgICAgICAgIyBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0CisgICAgICAgIHN0cnVjdHVyZSA9ICgKKyAgICAgICAgICAgIChbXSwgW10sIDApLAorICAgICAgICAgICAgKFsxMl0sIFtdLCAwKSwKKyAgICAgICAgICAgIChbMTJdLCBbLTFdLCAxMSksCisgICAgICAgICAgICAoWzZdLCBbMl0sIDApLAorICAgICAgICAgICAgKFs2XSwgWy0yXSwgMTEpLAorICAgICAgICAgICAgKFszLCA0XSwgW10sIDApLAorICAgICAgICAgICAgKFszLCA0XSwgWy00LCAtMV0sIDExKSwKKyAgICAgICAgICAgIChbMiwgMl0sIFs0LCAxXSwgNCksCisgICAgICAgICAgICAoWzIsIDJdLCBbLTQsIC0xXSwgOCkKKyAgICAgICAgKQorICAgICAgICAjIG5kYXJyYXkgY3JlYXRpb24gZmxhZ3MKKyAgICAgICAgbmRmbGFncyA9ICgKKyAgICAgICAgICAgIDAsIE5EX1dSSVRBQkxFLCBORF9GT1JUUkFOLCBORF9GT1JUUkFOfE5EX1dSSVRBQkxFLAorICAgICAgICAgICAgTkRfUElMLCBORF9QSUx8TkRfV1JJVEFCTEUKKyAgICAgICAgKQorICAgICAgICAjIGZsYWdzIHRoYXQgY2FuIGFjdHVhbGx5IGJlIHVzZWQgYXMgZmxhZ3MKKyAgICAgICAgcmVhbF9mbGFncyA9ICgwLCBQeUJVRl9XUklUQUJMRSwgUHlCVUZfRk9STUFULAorICAgICAgICAgICAgICAgICAgICAgIFB5QlVGX1dSSVRBQkxFfFB5QlVGX0ZPUk1BVCkKKworICAgICAgICBmb3IgaXRlbXMsIGZtdCBpbiBpdGVtc19mbXQ6CisgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisgICAgICAgICAgICBmb3Igc2hhcGUsIHN0cmlkZXMsIG9mZnNldCBpbiBzdHJ1Y3R1cmU6CisgICAgICAgICAgICAgICAgc3RyaWRlcyA9IFt2ICogaXRlbXNpemUgZm9yIHYgaW4gc3RyaWRlc10KKyAgICAgICAgICAgICAgICBvZmZzZXQgKj0gaXRlbXNpemUKKyAgICAgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gbmRmbGFnczoKKworICAgICAgICAgICAgICAgICAgICBpZiBzdHJpZGVzIGFuZCAoZmxhZ3MmTkRfRk9SVFJBTik6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2hhcGUgYW5kIChmbGFncyZORF9QSUwpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICBfaXRlbXMgPSBpdGVtcyBpZiBzaGFwZSBlbHNlIGl0ZW1zWzBdCisgICAgICAgICAgICAgICAgICAgIGV4MSA9IG5kYXJyYXkoX2l0ZW1zLCBmb3JtYXQ9Zm10LCBmbGFncz1mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLCBvZmZzZXQ9b2Zmc2V0KQorICAgICAgICAgICAgICAgICAgICBleDIgPSBleDFbOjotMl0gaWYgc2hhcGUgZWxzZSBOb25lCisKKyAgICAgICAgICAgICAgICAgICAgbTEgPSBtZW1vcnl2aWV3KGV4MSkKKyAgICAgICAgICAgICAgICAgICAgaWYgZXgyOgorICAgICAgICAgICAgICAgICAgICAgICAgbTIgPSBtZW1vcnl2aWV3KGV4MikKKyAgICAgICAgICAgICAgICAgICAgaWYgZXgxLm5kaW0gPT0gMCBvciAoZXgxLm5kaW0gPT0gMSBhbmQgc2hhcGUgYW5kIHN0cmlkZXMpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMSwgZXgxKQorICAgICAgICAgICAgICAgICAgICBpZiBleDIgYW5kIGV4Mi5uZGltID09IDEgYW5kIHNoYXBlIGFuZCBzdHJpZGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMiwgZXgyKQorCisgICAgICAgICAgICAgICAgICAgIGZvciByZXEgaW4gcmVxdWVzdHM6CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYml0cyBpbiByZWFsX2ZsYWdzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5X2dldGJ1ZihleDEsIGV4MSwgcmVxfGJpdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnlfZ2V0YnVmKGV4MSwgbTEsIHJlcXxiaXRzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGV4MjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnlfZ2V0YnVmKGV4MiwgZXgyLCByZXF8Yml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWNlZD1UcnVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeV9nZXRidWYoZXgyLCBtMiwgcmVxfGJpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGljZWQ9VHJ1ZSkKKworICAgICAgICBpdGVtcyA9IFsxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMl0KKworICAgICAgICAjIE5EX0dFVEJVRl9GQUlMCisgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzEyXSwgZmxhZ3M9TkRfR0VUQlVGX0ZBSUwpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZGFycmF5LCBleCkKKworICAgICAgICAjIFJlcXVlc3QgY29tcGxleCBzdHJ1Y3R1cmUgZnJvbSBhIHNpbXBsZSBleHBvcnRlci4gSW4gdGhpcworICAgICAgICAjIHBhcnRpY3VsYXIgY2FzZSB0aGUgdGVzdCBvYmplY3QgaXMgbm90IFBFUC0zMTE4IGNvbXBsaWFudC4KKyAgICAgICAgYmFzZSA9IG5kYXJyYXkoWzldLCBbMV0pCisgICAgICAgIGV4ID0gbmRhcnJheShiYXNlLCBnZXRidWY9UHlCVUZfU0lNUExFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgZXgsIGdldGJ1Zj1QeUJVRl9XUklUQUJMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kYXJyYXksIGV4LCBnZXRidWY9UHlCVUZfTkQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZGFycmF5LCBleCwgZ2V0YnVmPVB5QlVGX1NUUklERVMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZGFycmF5LCBleCwgZ2V0YnVmPVB5QlVGX0NfQ09OVElHVU9VUykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kYXJyYXksIGV4LCBnZXRidWY9UHlCVUZfRl9DT05USUdVT1VTKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgZXgsIGdldGJ1Zj1QeUJVRl9BTllfQ09OVElHVU9VUykKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfU0lNUExFKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9leGNlcHRpb25zKHNlbGYpOgorICAgICAgICBuZCA9IG5kYXJyYXkoWzldLCBbMV0pCisgICAgICAgIG5kbSA9IG5kYXJyYXkoWzldLCBbMV0sIGZsYWdzPU5EX1ZBUkVYUE9SVCkKKworICAgICAgICAjIEluaXRpYWxpemF0aW9uIG9mIGEgbmV3IG5kYXJyYXkgb3IgbXV0YXRpb24gb2YgYW4gZXhpc3RpbmcgYXJyYXkuCisgICAgICAgIGZvciBjIGluIChuZGFycmF5LCBuZC5wdXNoLCBuZG0ucHVzaCk6CisgICAgICAgICAgICAjIEludmFsaWQgdHlwZXMuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIHsxLDIsM30pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxLDIsJzMnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgWzEsMiwoMyw0KV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPXszfSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgWzEsMiwzXSwgc2hhcGU9WzNdLCBzdHJpZGVzPXsxfSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgWzEsMiwzXSwgc2hhcGU9WzNdLCBvZmZzZXQ9W10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxXSwgc2hhcGU9WzFdLCBmb3JtYXQ9e30pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxXSwgc2hhcGU9WzFdLCBmbGFncz17fSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgWzFdLCBzaGFwZT1bMV0sIGdldGJ1Zj17fSkKKworICAgICAgICAgICAgIyBORF9GT1JUUkFOIGZsYWcgaXMgb25seSB2YWxpZCB3aXRob3V0IHN0cmlkZXMuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxXSwgc2hhcGU9WzFdLCBzdHJpZGVzPVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisKKyAgICAgICAgICAgICMgTkRfUElMIGZsYWcgaXMgb25seSB2YWxpZCB3aXRoIG5kaW0gPiAwLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMV0sIHNoYXBlPVtdLCBmbGFncz1ORF9QSUwpCisKKyAgICAgICAgICAgICMgSW52YWxpZCBpdGVtcy4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFtdLCBzaGFwZT1bMV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbJ1hYWCddLCBzaGFwZT1bMV0sIGZvcm1hdD0iTCIpCisgICAgICAgICAgICAjIEludmFsaWQgY29tYmluYXRpb24gb2YgaXRlbXMgYW5kIGZvcm1hdC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN0cnVjdC5lcnJvciwgYywgWzEwMDBdLCBzaGFwZT1bMV0sIGZvcm1hdD0iQiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMSwoMiwzKV0sIHNoYXBlPVsyXSwgZm9ybWF0PSJCIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPVszXSwgZm9ybWF0PSJRTCIpCisKKyAgICAgICAgICAgICMgSW52YWxpZCBuZGltLgorICAgICAgICAgICAgbiA9IE5EX01BWF9ORElNKzEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxXSpuLCBzaGFwZT1bMV0qbikKKworICAgICAgICAgICAgIyBJbnZhbGlkIHNoYXBlLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzFdLCBzaGFwZT1bLTFdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsMiwzXSwgc2hhcGU9WyczJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBjLCBbMV0sIHNoYXBlPVsyKioxMjhdKQorICAgICAgICAgICAgIyBwcm9kKHNoYXBlKSAqIGl0ZW1zaXplICE9IGxlbihpdGVtcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxLDIsMyw0LDVdLCBzaGFwZT1bMiwyXSwgb2Zmc2V0PTMpCisKKyAgICAgICAgICAgICMgSW52YWxpZCBzdHJpZGVzLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsMiwzXSwgc2hhcGU9WzNdLCBzdHJpZGVzPVsnMSddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgYywgWzFdLCBzaGFwZT1bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGVzPVsyKioxMjhdKQorCisgICAgICAgICAgICAjIEludmFsaWQgY29tYmluYXRpb24gb2Ygc3RyaWRlcyBhbmQgc2hhcGUuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMSwyXSwgc2hhcGU9WzIsMV0sIHN0cmlkZXM9WzFdKQorICAgICAgICAgICAgIyBJbnZhbGlkIGNvbWJpbmF0aW9uIG9mIHN0cmlkZXMgYW5kIGZvcm1hdC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxLDIsMyw0XSwgc2hhcGU9WzJdLCBzdHJpZGVzPVszXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD0iTCIpCisKKyAgICAgICAgICAgICMgSW52YWxpZCBvZmZzZXQuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMSwyLDNdLCBzaGFwZT1bM10sIG9mZnNldD00KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsMiwzXSwgc2hhcGU9WzFdLCBvZmZzZXQ9MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD0iTCIpCisKKyAgICAgICAgICAgICMgSW52YWxpZCBmb3JtYXQuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMSwyLDNdLCBzaGFwZT1bM10sIGZvcm1hdD0iIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN0cnVjdC5lcnJvciwgYywgWygxLDIsMyldLCBzaGFwZT1bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9IkAjJCIpCisKKyAgICAgICAgICAgICMgU3RyaWRpbmcgb3V0IG9mIHRoZSBtZW1vcnkgYm91bmRzLgorICAgICAgICAgICAgaXRlbXMgPSBbMSwyLDMsNCw1LDYsNyw4LDksMTBdCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBpdGVtcywgc2hhcGU9WzIsM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGVzPVstMywgLTJdLCBvZmZzZXQ9NSkKKworICAgICAgICAgICAgIyBDb25zdHJ1Y3RpbmcgY29uc3VtZXI6IGZvcm1hdCBhcmd1bWVudCBpbnZhbGlkLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBieXRlYXJyYXkoKSwgZm9ybWF0PSJRIikKKworICAgICAgICAgICAgIyBDb25zdHJ1Y3Rpbmcgb3JpZ2luYWwgYmFzZSBvYmplY3Q6IGdldGJ1ZiBhcmd1bWVudCBpbnZhbGlkLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMV0sIHNoYXBlPVsxXSwgZ2V0YnVmPVB5QlVGX0ZVTEwpCisKKyAgICAgICAgICAgICMgU2hhcGUgYXJndW1lbnQgaXMgbWFuZGF0b3J5IGZvciBvcmlnaW5hbCBiYXNlIG9iamVjdHMuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxXSkKKworCisgICAgICAgICMgUHlCVUZfV1JJVEFCTEUgcmVxdWVzdCB0byByZWFkLW9ubHkgcHJvdmlkZXIuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZGFycmF5LCBiJzEyMycsIGdldGJ1Zj1QeUJVRl9XUklUQUJMRSkKKworICAgICAgICAjIE5EX1ZBUkVYUE9SVCBjYW4gb25seSBiZSBzcGVjaWZpZWQgZHVyaW5nIGNvbnN0cnVjdGlvbi4KKyAgICAgICAgbmQgPSBuZGFycmF5KFs5XSwgWzFdLCBmbGFncz1ORF9WQVJFWFBPUlQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kLnB1c2gsIFsxXSwgWzFdLCBmbGFncz1ORF9WQVJFWFBPUlQpCisKKyAgICAgICAgIyBJbnZhbGlkIG9wZXJhdGlvbiBmb3IgY29uc3VtZXJzOiBwdXNoL3BvcAorICAgICAgICBuZCA9IG5kYXJyYXkoYicxMjMnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmQucHVzaCwgWzFdLCBbMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZC5wb3ApCisKKyAgICAgICAgIyBORF9WQVJFWFBPUlQgbm90IHNldDogcHVzaC9wb3AgZmFpbCB3aXRoIGV4cG9ydGVkIGJ1ZmZlcnMKKyAgICAgICAgbmQgPSBuZGFycmF5KFs5XSwgWzFdKQorICAgICAgICBuZC5wdXNoKFsxXSwgWzFdKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kLnB1c2gsIFsxXSwgWzFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmQucG9wKQorICAgICAgICBtLnJlbGVhc2UoKQorICAgICAgICBuZC5wb3AoKQorCisgICAgICAgICMgU2luZ2xlIHJlbWFpbmluZyBidWZmZXI6IHBvcCBmYWlscworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmQucG9wKQorICAgICAgICBkZWwgbmQKKworICAgICAgICAjIGdldF9wb2ludGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRfcG9pbnRlciwge30sIFsxLDIsM10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0X3BvaW50ZXIsIGInMTIzJywge30pCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTAwKSksIHNoYXBlPVsxXSoxMDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9wb2ludGVyLCBuZCwgWzVdKQorCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLDRdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfcG9pbnRlciwgbmQsIFsyLDMsNF0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9wb2ludGVyLCBuZCwgWzMsM10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9wb2ludGVyLCBuZCwgWy0zLDNdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBnZXRfcG9pbnRlciwgbmQsIFsxPDw2NCwzXSkKKworICAgICAgICAjIHRvbGlzdCgpIG5lZWRzIGZvcm1hdAorICAgICAgICBleCA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzNdLCBmb3JtYXQ9J0wnKQorICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9TSU1QTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kLnRvbGlzdCkKKworICAgICAgICAjIG1lbW9yeXZpZXdfZnJvbV9idWZmZXIoKQorICAgICAgICBleDEgPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszXSwgZm9ybWF0PSdMJykKKyAgICAgICAgZXgyID0gbmRhcnJheShleDEpCisgICAgICAgIG5kID0gbmRhcnJheShleDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQubWVtb3J5dmlld19mcm9tX2J1ZmZlcikKKworICAgICAgICBuZCA9IG5kYXJyYXkoWygxLCkqMjAwXSwgc2hhcGU9WzFdLCBmb3JtYXQ9J0wnKjIwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZC5tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKQorCisgICAgICAgIG4gPSBORF9NQVhfTkRJTQorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZShuKSksIHNoYXBlPVsxXSpuKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZC5tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKQorCisgICAgICAgICMgZ2V0X2NvbnRpZ3VvdXMoKQorICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIDEsIDIsIDMsIDQsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCAieHl6IiwgJ0MnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBnZXRfY29udGlndW91cywgbmQsIDIqKjY0LCAnQycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCBQeUJVRl9SRUFELCA5NjEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCBQeUJVRl9SRUFELAorICAgICAgICAgICAgICAgICAgICAgICAgICAnXHUyMDA3JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCBQeUJVRl9SRUFELCAnWicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgMjU1LCAnQScpCisKKyAgICAgICAgIyBjbXBfY29udGlnKCkKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNtcF9jb250aWcsIDEsIDIsIDMsIDQsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY21wX2NvbnRpZywge30sIG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNtcF9jb250aWcsIG5kLCB7fSkKKworICAgICAgICAjIGlzX2NvbnRpZ3VvdXMoKQorICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXNfY29udGlndW91cywgMSwgMiwgMywgNCwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpc19jb250aWd1b3VzLCB7fSwgJ0EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlzX2NvbnRpZ3VvdXMsIG5kLCAyMDEpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2xpbmtlZF9saXN0KHNlbGYpOgorICAgICAgICBmb3IgcGVybSBpbiBwZXJtdXRhdGlvbnMocmFuZ2UoNSkpOgorICAgICAgICAgICAgbSA9IFswXSo1CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzNdLCBmbGFncz1ORF9WQVJFWFBPUlQpCisgICAgICAgICAgICBtWzBdID0gbWVtb3J5dmlldyhuZCkKKworICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgNSk6CisgICAgICAgICAgICAgICAgbmQucHVzaChbMSwyLDNdLCBzaGFwZT1bM10pCisgICAgICAgICAgICAgICAgbVtpXSA9IG1lbW9yeXZpZXcobmQpCisKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDUpOgorICAgICAgICAgICAgICAgIG1bcGVybVtpXV0ucmVsZWFzZSgpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZC5wb3ApCisgICAgICAgICAgICBkZWwgbmQKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfZm9ybWF0X3NjYWxhcihzZWxmKToKKyAgICAgICAgIyBuZGltID0gMDogc2NhbGFyCisgICAgICAgIGZvciBmbXQsIHNjYWxhciwgXyBpbiBpdGVyX2Zvcm1hdCgwKToKKyAgICAgICAgICAgIGl0ZW1zaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShzY2FsYXIsIHNoYXBlPSgpLCBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgc2VsZi52ZXJpZnkobmQsIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9aXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZGltPTAsIHNoYXBlPSgpLCBzdHJpZGVzPSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0PXNjYWxhcikKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfZm9ybWF0X3NoYXBlKHNlbGYpOgorICAgICAgICAjIG5kaW0gPSAxLCBzaGFwZSA9IFtuXQorICAgICAgICBuaXRlbXMgPSAgcmFuZHJhbmdlKDEsIDEwKQorICAgICAgICBmb3IgZm10LCBpdGVtcywgXyBpbiBpdGVyX2Zvcm1hdChuaXRlbXMpOgorICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorICAgICAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9W25pdGVtc10sIGZvcm1hdD1mbXQsIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG5kLCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1pdGVtc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPShuaXRlbXMsKSwgc3RyaWRlcz0oaXRlbXNpemUsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9aXRlbXMpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2Zvcm1hdF9zdHJpZGVzKHNlbGYpOgorICAgICAgICAjIG5kaW0gPSAxLCBzdHJpZGVzCisgICAgICAgIG5pdGVtcyA9IHJhbmRyYW5nZSgxLCAzMCkKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQobml0ZW1zKToKKyAgICAgICAgICAgIGl0ZW1zaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKyAgICAgICAgICAgIGZvciBzdGVwIGluIHJhbmdlKC01LCA1KToKKyAgICAgICAgICAgICAgICBpZiBzdGVwID09IDA6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBzaGFwZSA9IFtsZW4oaXRlbXNbOjpzdGVwXSldCisgICAgICAgICAgICAgICAgc3RyaWRlcyA9IFtzdGVwKml0ZW1zaXplXQorICAgICAgICAgICAgICAgIG9mZnNldCA9IGl0ZW1zaXplKihuaXRlbXMtMSkgaWYgc3RlcCA8IDAgZWxzZSAwCisKKyAgICAgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1mbXQsIG9mZnNldD1vZmZzZXQsIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShuZCwgb2JqPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPWl0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1pdGVtc1s6OnN0ZXBdKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9mb3J0cmFuKHNlbGYpOgorICAgICAgICBpdGVtcyA9IFsxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMl0KKyAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT0oMywgNCksIHN0cmlkZXM9KDEsIDMpKQorICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9GX0NPTlRJR1VPVVN8UHlCVUZfRk9STUFUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBmYXJyYXkoaXRlbXMsICgzLCA0KSkpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X211bHRpZGltKHNlbGYpOgorICAgICAgICBmb3IgbmRpbSBpbiByYW5nZSg1KToKKyAgICAgICAgICAgIHNoYXBlX3QgPSBbcmFuZHJhbmdlKDIsIDEwKSBmb3IgXyBpbiByYW5nZShuZGltKV0KKyAgICAgICAgICAgIG5pdGVtcyA9IHByb2Qoc2hhcGVfdCkKKyAgICAgICAgICAgIGZvciBzaGFwZSBpbiBwZXJtdXRhdGlvbnMoc2hhcGVfdCk6CisKKyAgICAgICAgICAgICAgICBmbXQsIGl0ZW1zLCBfID0gcmFuZGl0ZW1zKG5pdGVtcykKKyAgICAgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisKKyAgICAgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICAgICAgICAgIGlmIG5kaW0gPT0gMCBhbmQgZmxhZ3MgPT0gTkRfUElMOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICAjIEMgYXJyYXkKKyAgICAgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCwgZmxhZ3M9ZmxhZ3MpCisKKyAgICAgICAgICAgICAgICAgICAgc3RyaWRlcyA9IHN0cmlkZXNfZnJvbV9zaGFwZShuZGltLCBzaGFwZSwgaXRlbXNpemUsICdDJykKKyAgICAgICAgICAgICAgICAgICAgbHN0ID0gY2FycmF5KGl0ZW1zLCBzaGFwZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkobmQsIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1pdGVtc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICAgICAgICAgICAgIGlmIGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICAgICAgICAgICAgICAjIG1lbW9yeXZpZXc6IHJlY29uc3RydWN0IHN0cmlkZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQpCisgICAgICAgICAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9DT05USUdfUk98UHlCVUZfRk9STUFUKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5kLnN0cmlkZXMgPT0gKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBtdiA9IG5kLm1lbW9yeXZpZXdfZnJvbV9idWZmZXIoKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkobXYsIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9aXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICAgICAgICAgICAgICMgRm9ydHJhbiBhcnJheQorICAgICAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmb3JtYXQ9Zm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9ZmxhZ3N8TkRfRk9SVFJBTikKKworICAgICAgICAgICAgICAgICAgICBzdHJpZGVzID0gc3RyaWRlc19mcm9tX3NoYXBlKG5kaW0sIHNoYXBlLCBpdGVtc2l6ZSwgJ0YnKQorICAgICAgICAgICAgICAgICAgICBsc3QgPSBmYXJyYXkoaXRlbXMsIHNoYXBlKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShuZCwgb2JqPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPWl0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2luZGV4X2ludmFsaWQoc2VsZik6CisgICAgICAgICMgbm90IHdyaXRhYmxlCisgICAgICAgIG5kID0gbmRhcnJheShbMV0sIHNoYXBlPVsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZC5fX3NldGl0ZW1fXywgMSwgOCkKKyAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtdi5fX3NldGl0ZW1fXywgMSwgOCkKKworICAgICAgICAjIGNhbm5vdCBiZSBkZWxldGVkCisgICAgICAgIG5kID0gbmRhcnJheShbMV0sIHNoYXBlPVsxXSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQuX19kZWxpdGVtX18sIDEpCisgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXYuX19kZWxpdGVtX18sIDEpCisKKyAgICAgICAgIyBvdmVyZmxvdworICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMV0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBuZC5fX2dldGl0ZW1fXywgMTw8NjQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIG5kLl9fc2V0aXRlbV9fLCAxPDw2NCwgOCkKKyAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbXYuX19nZXRpdGVtX18sIDE8PDY0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtdi5fX3NldGl0ZW1fXywgMTw8NjQsIDgpCisKKyAgICAgICAgIyBmb3JtYXQKKyAgICAgICAgaXRlbXMgPSBbMSwyLDMsNCw1LDYsNyw4XQorICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVtsZW4oaXRlbXMpXSwgZm9ybWF0PSJCIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN0cnVjdC5lcnJvciwgbmQuX19zZXRpdGVtX18sIDIsIDMwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmQuX19zZXRpdGVtX18sIDEsICgxMDAsIDIwMCkpCisgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG12Ll9fc2V0aXRlbV9fLCAyLCAzMDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXYuX19zZXRpdGVtX18sIDEsICgxMDAsIDIwMCkpCisKKyAgICAgICAgaXRlbXMgPSBbKDEsMiksICgzLDQpLCAoNSw2KV0KKyAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bbGVuKGl0ZW1zKV0sIGZvcm1hdD0iTFEiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmQuX19zZXRpdGVtX18sIDIsIDMwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBuZC5fX3NldGl0ZW1fXywgMSwgKGInXHgwMDEnLCAyMDApKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9pbmRleF9zY2FsYXIoc2VsZik6CisgICAgICAgICMgc2NhbGFyCisgICAgICAgIG5kID0gbmRhcnJheSgxLCBzaGFwZT0oKSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisKKyAgICAgICAgeCA9IG5kWygpXTsgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgMSkKKyAgICAgICAgeCA9IG5kWy4uLl07IHNlbGYuYXNzZXJ0RXF1YWwoeC50b2xpc3QoKSwgbmQudG9saXN0KCkpCisKKyAgICAgICAgeCA9IG12WygpXTsgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgMSkKKyAgICAgICAgeCA9IG12Wy4uLl07IHNlbGYuYXNzZXJ0RXF1YWwoeC50b2xpc3QoKSwgbmQudG9saXN0KCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZC5fX2dldGl0ZW1fXywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtdi5fX2dldGl0ZW1fXywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZC5fX3NldGl0ZW1fXywgMCwgOCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtdi5fX3NldGl0ZW1fXywgMCwgOCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LnRvbGlzdCgpLCAxKQorCisgICAgICAgIG5kWygpXSA9IDk7IHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIDkpCisgICAgICAgIG12WygpXSA9IDk7IHNlbGYuYXNzZXJ0RXF1YWwobXYudG9saXN0KCksIDkpCisKKyAgICAgICAgbmRbLi4uXSA9IDU7IHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIDUpCisgICAgICAgIG12Wy4uLl0gPSA1OyBzZWxmLmFzc2VydEVxdWFsKG12LnRvbGlzdCgpLCA1KQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9pbmRleF9udWxsX3N0cmlkZXMoc2VsZik6CisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDIqNCkpLCBzaGFwZT1bMiwgNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9DT05USUcpCisKKyAgICAgICAgIyBTdWItdmlld3MgYXJlIG9ubHkgcG9zc2libGUgZm9yIGZ1bGwgZXhwb3J0ZXJzLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmQuX19nZXRpdGVtX18sIDEpCisgICAgICAgICMgU2FtZSBmb3Igc2xpY2VzLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmQuX19nZXRpdGVtX18sIHNsaWNlKDMsNSwxKSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfaW5kZXhfZ2V0aXRlbV9zaW5nbGUoc2VsZik6CisgICAgICAgICMgZ2V0aXRlbQorICAgICAgICBmb3IgZm10LCBpdGVtcywgXyBpbiBpdGVyX2Zvcm1hdCg1KToKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzVdLCBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDUpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRbaV0sIGl0ZW1zW2ldKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBuZC5fX2dldGl0ZW1fXywgLTYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBuZC5fX2dldGl0ZW1fXywgNSkKKworICAgICAgICAgICAgaWYgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDUpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12W2ldLCBpdGVtc1tpXSkKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG12Ll9fZ2V0aXRlbV9fLCAtNikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtdi5fX2dldGl0ZW1fXywgNSkKKworICAgICAgICAjIGdldGl0ZW0gd2l0aCBudWxsIHN0cmlkZXMKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQoNSk6CisgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSwgZmxhZ3M9TkRfV1JJVEFCTEUsIGZvcm1hdD1mbXQpCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9DT05USUd8UHlCVUZfRk9STUFUKQorCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgtNSwgNSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZFtpXSwgaXRlbXNbaV0pCisKKyAgICAgICAgICAgIGlmIGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICAgICAgbXYgPSBuZC5tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG12Ll9fZXFfXyhuZCksIE5vdEltcGxlbWVudGVkKQorICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKC01LCA1KToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdltpXSwgaXRlbXNbaV0pCisKKyAgICAgICAgIyBnZXRpdGVtIHdpdGggbnVsbCBmb3JtYXQKKyAgICAgICAgaXRlbXMgPSBbMSwyLDMsNCw1XQorICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSkKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfQ09OVElHX1JPKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgtNSwgNSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kW2ldLCBpdGVtc1tpXSkKKworICAgICAgICAjIGdldGl0ZW0gd2l0aCBudWxsIHNoYXBlL3N0cmlkZXMvZm9ybWF0CisgICAgICAgIGl0ZW1zID0gWzEsMiwzLDQsNV0KKyAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0pCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX1NJTVBMRSkKKworICAgICAgICBmb3IgaSBpbiByYW5nZSgtNSwgNSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kW2ldLCBpdGVtc1tpXSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfaW5kZXhfc2V0aXRlbV9zaW5nbGUoc2VsZik6CisgICAgICAgICMgYXNzaWduIHNpbmdsZSB2YWx1ZQorICAgICAgICBmb3IgZm10LCBpdGVtcywgc2luZ2xlX2l0ZW0gaW4gaXRlcl9mb3JtYXQoNSk6CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSwgZm9ybWF0PWZtdCwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSg1KToKKyAgICAgICAgICAgICAgICBpdGVtc1tpXSA9IHNpbmdsZV9pdGVtCisgICAgICAgICAgICAgICAgbmRbaV0gPSBzaW5nbGVfaXRlbQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgaXRlbXMpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG5kLl9fc2V0aXRlbV9fLCAtNiwgc2luZ2xlX2l0ZW0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBuZC5fX3NldGl0ZW1fXywgNSwgc2luZ2xlX2l0ZW0pCisKKyAgICAgICAgICAgIGlmIG5vdCBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzVdLCBmb3JtYXQ9Zm10LCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICAgICAgaXRlbXNbaV0gPSBzaW5nbGVfaXRlbQorICAgICAgICAgICAgICAgIG12W2ldID0gc2luZ2xlX2l0ZW0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYudG9saXN0KCksIGl0ZW1zKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtdi5fX3NldGl0ZW1fXywgLTYsIHNpbmdsZV9pdGVtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbXYuX19zZXRpdGVtX18sIDUsIHNpbmdsZV9pdGVtKQorCisKKyAgICAgICAgIyBhc3NpZ24gc2luZ2xlIHZhbHVlOiBsb2JqZWN0ID0gcm9iamVjdAorICAgICAgICBmb3IgZm10LCBpdGVtcywgc2luZ2xlX2l0ZW0gaW4gaXRlcl9mb3JtYXQoNSk6CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSwgZm9ybWF0PWZtdCwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgtNSwgNCk6CisgICAgICAgICAgICAgICAgaXRlbXNbaV0gPSBpdGVtc1tpKzFdCisgICAgICAgICAgICAgICAgbmRbaV0gPSBuZFtpKzFdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBpdGVtcykKKworICAgICAgICAgICAgaWYgbm90IGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0sIGZvcm1hdD1mbXQsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgtNSwgNCk6CisgICAgICAgICAgICAgICAgaXRlbXNbaV0gPSBpdGVtc1tpKzFdCisgICAgICAgICAgICAgICAgbXZbaV0gPSBtdltpKzFdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LnRvbGlzdCgpLCBpdGVtcykKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfaW5kZXhfZ2V0aXRlbV9tdWx0aWRpbShzZWxmKToKKyAgICAgICAgc2hhcGVfdCA9ICgyLCAzLCA1KQorICAgICAgICBuaXRlbXMgPSBwcm9kKHNoYXBlX3QpCisgICAgICAgIGZvciBzaGFwZSBpbiBwZXJtdXRhdGlvbnMoc2hhcGVfdCk6CisKKyAgICAgICAgICAgIGZtdCwgaXRlbXMsIF8gPSByYW5kaXRlbXMobml0ZW1zKQorCisgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICAgICAgIyBDIGFycmF5CisgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICAgICAgbHN0ID0gY2FycmF5KGl0ZW1zLCBzaGFwZSkKKworICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKC1zaGFwZVswXSwgc2hhcGVbMF0pOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdFtpXSwgbmRbaV0udG9saXN0KCkpCisgICAgICAgICAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKC1zaGFwZVsxXSwgc2hhcGVbMV0pOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3RbaV1bal0sIG5kW2ldW2pdLnRvbGlzdCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGsgaW4gcmFuZ2UoLXNoYXBlWzJdLCBzaGFwZVsyXSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3RbaV1bal1ba10sIG5kW2ldW2pdW2tdKQorCisgICAgICAgICAgICAgICAgIyBGb3J0cmFuIGFycmF5CisgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9ZmxhZ3N8TkRfRk9SVFJBTikKKyAgICAgICAgICAgICAgICBsc3QgPSBmYXJyYXkoaXRlbXMsIHNoYXBlKQorCisgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLXNoYXBlWzBdLCBzaGFwZVswXSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0W2ldLCBuZFtpXS50b2xpc3QoKSkKKyAgICAgICAgICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UoLXNoYXBlWzFdLCBzaGFwZVsxXSk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdFtpXVtqXSwgbmRbaV1bal0udG9saXN0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgayBpbiByYW5nZShzaGFwZVsyXSwgc2hhcGVbMl0pOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0W2ldW2pdW2tdLCBuZFtpXVtqXVtrXSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfc2VxdWVuY2Uoc2VsZik6CisgICAgICAgIG5kID0gbmRhcnJheSgxLCBzaGFwZT0oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAiMSBpbiBuZCIsIGxvY2FscygpKQorICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV2YWwsICIxIGluIG12IiwgbG9jYWxzKCkpCisKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQoNSk6CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSwgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgIGZvciBpLCB2IGluIGVudW1lcmF0ZShuZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBpdGVtc1tpXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodiBpbiBuZCkKKworICAgICAgICAgICAgaWYgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICAgICAgZm9yIGksIHYgaW4gZW51bWVyYXRlKG12KToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBpdGVtc1tpXSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHYgaW4gbXYpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3NsaWNlX2ludmFsaWQoc2VsZik6CisgICAgICAgIGl0ZW1zID0gWzEsMiwzLDQsNSw2LDcsOF0KKworICAgICAgICAjIHJ2YWx1ZSBpcyBub3QgYW4gZXhwb3J0ZXIKKyAgICAgICAgeGwgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtbCA9IG1lbW9yeXZpZXcoeGwpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeGwuX19zZXRpdGVtX18sIHNsaWNlKDAsOCwxKSwgaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWwuX19zZXRpdGVtX18sIHNsaWNlKDAsOCwxKSwgaXRlbXMpCisKKyAgICAgICAgIyBydmFsdWUgaXMgbm90IGEgZnVsbCBleHBvcnRlcgorICAgICAgICB4bCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgeHIgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfTkQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCB4bC5fX3NldGl0ZW1fXywgc2xpY2UoMCw4LDEpLCB4cikKKworICAgICAgICAjIHplcm8gc3RlcAorICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZm9ybWF0PSJMIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmQuX19nZXRpdGVtX18sIHNsaWNlKDAsMSwwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbXYuX19nZXRpdGVtX18sIHNsaWNlKDAsMSwwKSkKKworICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVsyLDRdLCBmb3JtYXQ9IkwiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kLl9fZ2V0aXRlbV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoc2xpY2UoMCwxLDEpLCBzbGljZSgwLDEsMCkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZC5fX2dldGl0ZW1fXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNsaWNlKDAsMSwwKSwgc2xpY2UoMCwxLDEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZC5fX2dldGl0ZW1fXywgIkAlJCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQuX19nZXRpdGVtX18sICgiQCUkIiwgc2xpY2UoMCwxLDEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZC5fX2dldGl0ZW1fXywgKHNsaWNlKDAsMSwxKSwge30pKQorCisgICAgICAgICMgbWVtb3J5dmlldzogbm90IGltcGxlbWVudGVkCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG12Ll9fZ2V0aXRlbV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoc2xpY2UoMCwxLDEpLCBzbGljZSgwLDEsMCkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG12Ll9fZ2V0aXRlbV9fLCAiQCUkIikKKworICAgICAgICAjIGRpZmZlcmluZyBmb3JtYXQKKyAgICAgICAgeGwgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iQiIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB4ciA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZm9ybWF0PSJiIikKKyAgICAgICAgbWwgPSBtZW1vcnl2aWV3KHhsKQorICAgICAgICBtciA9IG1lbW9yeXZpZXcoeHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHhsLl9fc2V0aXRlbV9fLCBzbGljZSgwLDEsMSksIHhyWzc6OF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeGwudG9saXN0KCksIGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtbC5fX3NldGl0ZW1fXywgc2xpY2UoMCwxLDEpLCBtcls3OjhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1sLnRvbGlzdCgpLCBpdGVtcykKKworICAgICAgICAjIGRpZmZlcmluZyBpdGVtc2l6ZQorICAgICAgICB4bCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZm9ybWF0PSJCIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHlyID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmb3JtYXQ9IkwiKQorICAgICAgICBtbCA9IG1lbW9yeXZpZXcoeGwpCisgICAgICAgIG1yID0gbWVtb3J5dmlldyh4cikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgeGwuX19zZXRpdGVtX18sIHNsaWNlKDAsMSwxKSwgeHJbNzo4XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4bC50b2xpc3QoKSwgaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1sLl9fc2V0aXRlbV9fLCBzbGljZSgwLDEsMSksIG1yWzc6OF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWwudG9saXN0KCksIGl0ZW1zKQorCisgICAgICAgICMgZGlmZmVyaW5nIG5kaW0KKyAgICAgICAgeGwgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bMiwgNF0sIGZvcm1hdD0iYiIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB4ciA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZm9ybWF0PSJiIikKKyAgICAgICAgbWwgPSBtZW1vcnl2aWV3KHhsKQorICAgICAgICBtciA9IG1lbW9yeXZpZXcoeHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHhsLl9fc2V0aXRlbV9fLCBzbGljZSgwLDEsMSksIHhyWzc6OF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeGwudG9saXN0KCksIFtbMSwyLDMsNF0sIFs1LDYsNyw4XV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG1sLl9fc2V0aXRlbV9fLCBzbGljZSgwLDEsMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1yWzc6OF0pCisKKyAgICAgICAgIyBkaWZmZXJpbmcgc2hhcGUKKyAgICAgICAgeGwgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iYiIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB4ciA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZm9ybWF0PSJiIikKKyAgICAgICAgbWwgPSBtZW1vcnl2aWV3KHhsKQorICAgICAgICBtciA9IG1lbW9yeXZpZXcoeHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHhsLl9fc2V0aXRlbV9fLCBzbGljZSgwLDIsMSksIHhyWzc6OF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeGwudG9saXN0KCksIGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtbC5fX3NldGl0ZW1fXywgc2xpY2UoMCwyLDEpLCBtcls3OjhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1sLnRvbGlzdCgpLCBpdGVtcykKKworICAgICAgICAjIF90ZXN0YnVmZmVyLmMgbW9kdWxlIGZ1bmN0aW9ucworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNsaWNlX2luZGljZXMsIHNsaWNlKDAsMSwyKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2xpY2VfaW5kaWNlcywgIiMjIyMjIyMjIyMjIiwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2xpY2VfaW5kaWNlcywgc2xpY2UoMCwxLDApLCA0KQorCisgICAgICAgIHggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iYiIsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LmFkZF9zdWJvZmZzZXRzKQorCisgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmb3JtYXQ9IkIiKQorICAgICAgICB4ID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX1NJTVBMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LmFkZF9zdWJvZmZzZXRzKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9zbGljZV96ZXJvX3NoYXBlKHNlbGYpOgorICAgICAgICBpdGVtcyA9IFsxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMl0KKworICAgICAgICB4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzEyXSwgZm9ybWF0PSJMIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHkgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bMTJdLCBmb3JtYXQ9IkwiKQorICAgICAgICB4WzQ6NF0gPSB5Wzk6OV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnRvbGlzdCgpLCBpdGVtcykKKworICAgICAgICBtbCA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgbXIgPSBtZW1vcnl2aWV3KHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWwsIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWwsIHkpCisgICAgICAgIG1sWzQ6NF0gPSBtcls5OjldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWwudG9saXN0KCksIGl0ZW1zKQorCisgICAgICAgIHggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bMywgNF0sIGZvcm1hdD0iTCIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB5ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzQsIDNdLCBmb3JtYXQ9IkwiKQorICAgICAgICB4WzE6MiwgMjoyXSA9IHlbMToyLCAzOjNdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC50b2xpc3QoKSwgY2FycmF5KGl0ZW1zLCBbMywgNF0pKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9zbGljZV9tdWx0aWRpbShzZWxmKToKKyAgICAgICAgc2hhcGVfdCA9ICgyLCAzLCA1KQorICAgICAgICBuZGltID0gbGVuKHNoYXBlX3QpCisgICAgICAgIG5pdGVtcyA9IHByb2Qoc2hhcGVfdCkKKyAgICAgICAgZm9yIHNoYXBlIGluIHBlcm11dGF0aW9ucyhzaGFwZV90KToKKworICAgICAgICAgICAgZm10LCBpdGVtcywgXyA9IHJhbmRpdGVtcyhuaXRlbXMpCisgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisKKyAgICAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmb3JtYXQ9Zm10LCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICBsc3QgPSBjYXJyYXkoaXRlbXMsIHNoYXBlKQorCisgICAgICAgICAgICAgICAgZm9yIHNsaWNlcyBpbiByc2xpY2VzX25kaW0obmRpbSwgc2hhcGUpOgorCisgICAgICAgICAgICAgICAgICAgIGxpc3RlcnIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNsaWNlZCA9IG11bHRpc2xpY2UobHN0LCBzbGljZXMpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgICAgIG5kZXJyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBuZHNsaWNlZCA9IG5kW3NsaWNlc10KKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgbmRlcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgICAgIGlmIG5kZXJyIG9yIGxpc3RlcnI6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG5kZXJyLCBsaXN0ZXJyKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZHNsaWNlZC50b2xpc3QoKSwgc2xpY2VkKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9zbGljZV9yZWR1bmRhbnRfc3Vib2Zmc2V0cyhzZWxmKToKKyAgICAgICAgc2hhcGVfdCA9ICgyLCAzLCA1LCAyKQorICAgICAgICBuZGltID0gbGVuKHNoYXBlX3QpCisgICAgICAgIG5pdGVtcyA9IHByb2Qoc2hhcGVfdCkKKyAgICAgICAgZm9yIHNoYXBlIGluIHBlcm11dGF0aW9ucyhzaGFwZV90KToKKworICAgICAgICAgICAgZm10LCBpdGVtcywgXyA9IHJhbmRpdGVtcyhuaXRlbXMpCisgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQpCisgICAgICAgICAgICBuZC5hZGRfc3Vib2Zmc2V0cygpCisgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgZXguYWRkX3N1Ym9mZnNldHMoKQorICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICAgICAgbHN0ID0gY2FycmF5KGl0ZW1zLCBzaGFwZSkKKworICAgICAgICAgICAgZm9yIHNsaWNlcyBpbiByc2xpY2VzX25kaW0obmRpbSwgc2hhcGUpOgorCisgICAgICAgICAgICAgICAgbGlzdGVyciA9IE5vbmUKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNsaWNlZCA9IG11bHRpc2xpY2UobHN0LCBzbGljZXMpCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICBsaXN0ZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgIG5kZXJyID0gTm9uZQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgbmRzbGljZWQgPSBuZFtzbGljZXNdCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICBuZGVyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICBpZiBuZGVyciBvciBsaXN0ZXJyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG5kZXJyLCBsaXN0ZXJyKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRzbGljZWQudG9saXN0KCksIHNsaWNlZCkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfc2xpY2VfYXNzaWduX3NpbmdsZShzZWxmKToKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQoNSk6CisgICAgICAgICAgICBmb3IgbHNsaWNlIGluIGdlbnNsaWNlcyg1KToKKyAgICAgICAgICAgICAgICBmb3IgcnNsaWNlIGluIGdlbnNsaWNlcyg1KToKKyAgICAgICAgICAgICAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorCisgICAgICAgICAgICAgICAgICAgICAgICBmID0gZmxhZ3N8TkRfV1JJVEFCTEUKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzVdLCBmb3JtYXQ9Zm10LCBmbGFncz1mKQorICAgICAgICAgICAgICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0sIGZvcm1hdD1mbXQsIGZsYWdzPWYpCisgICAgICAgICAgICAgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdGVyciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZfc3RydWN0dXJlID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgbHN0ID0gaXRlbXNbOl0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsdmFsID0gbHN0W2xzbGljZV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydmFsID0gbHN0W3JzbGljZV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3RbbHNsaWNlXSA9IGxzdFtyc2xpY2VdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZl9zdHJ1Y3R1cmUgPSBsZW4obHZhbCkgIT0gbGVuKHJ2YWwpCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0ZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICAgICAgbmRlcnIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRbbHNsaWNlXSA9IG5kW3JzbGljZV0KKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGVyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRpZmZfc3RydWN0dXJlOiAjIG5kYXJyYXkgY2Fubm90IGNoYW5nZSBzaGFwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobmRlcnIsIFZhbHVlRXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIGxzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG5kZXJyLCBsc3RlcnIpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgICAgIG12ZXJyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG12W2xzbGljZV0gPSBtdltyc2xpY2VdCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXZlcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBkaWZmX3N0cnVjdHVyZTogIyBtZW1vcnl2aWV3IGNhbm5vdCBjaGFuZ2Ugc2hhcGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG12ZXJyLCBWYWx1ZUVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LnRvbGlzdCgpLCBsc3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtdmVyciwgbHN0ZXJyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG12LCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1uZC5pdGVtc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmQubmRpbSwgc2hhcGU9bmQuc2hhcGUsIHN0cmlkZXM9bmQuc3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1uZC50b2xpc3QoKSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfc2xpY2VfYXNzaWduX211bHRpZGltKHNlbGYpOgorICAgICAgICBzaGFwZV90ID0gKDIsIDMsIDUpCisgICAgICAgIG5kaW0gPSBsZW4oc2hhcGVfdCkKKyAgICAgICAgbml0ZW1zID0gcHJvZChzaGFwZV90KQorICAgICAgICBmb3Igc2hhcGUgaW4gcGVybXV0YXRpb25zKHNoYXBlX3QpOgorCisgICAgICAgICAgICBmbXQsIGl0ZW1zLCBfID0gcmFuZGl0ZW1zKG5pdGVtcykKKworICAgICAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgICAgIGZvciBfIGluIHJhbmdlKElURVJBVElPTlMpOgorICAgICAgICAgICAgICAgICAgICBsc2xpY2VzLCByc2xpY2VzID0gcmFuZHNsaWNlX2Zyb21fc2hhcGUobmRpbSwgc2hhcGUpCisKKyAgICAgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPWZsYWdzfE5EX1dSSVRBQkxFKQorICAgICAgICAgICAgICAgICAgICBsc3QgPSBjYXJyYXkoaXRlbXMsIHNoYXBlKQorCisgICAgICAgICAgICAgICAgICAgIGxpc3RlcnIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG11bHRpc2xpY2VfYXNzaWduKGxzdCwgbHN0LCBsc2xpY2VzLCByc2xpY2VzKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICBuZGVyciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgbmRbbHNsaWNlc10gPSBuZFtyc2xpY2VzXQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBuZGVyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICAgICAgaWYgbmRlcnIgb3IgbGlzdGVycjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobmRlcnIsIGxpc3RlcnIpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCByZXN1bHQpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3JhbmRvbShzZWxmKToKKyAgICAgICAgIyBjb25zdHJ1Y3Rpb24gb2YgdmFsaWQgYXJyYXlzCisgICAgICAgIGZvciBfIGluIHJhbmdlKElURVJBVElPTlMpOgorICAgICAgICAgICAgZm9yIGZtdCBpbiBmbXRkaWN0WydAJ106CisgICAgICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorCisgICAgICAgICAgICAgICAgdCA9IHJhbmRfc3RydWN0dXJlKGl0ZW1zaXplLCBUcnVlLCBtYXhkaW09TUFYRElNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhzaGFwZT1NQVhTSEFQRSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmVyaWZ5X3N0cnVjdHVyZSgqdCkpCisgICAgICAgICAgICAgICAgaXRlbXMgPSByYW5kaXRlbXNfZnJvbV9zdHJ1Y3R1cmUoZm10LCB0KQorCisgICAgICAgICAgICAgICAgeCA9IG5kYXJyYXlfZnJvbV9zdHJ1Y3R1cmUoaXRlbXMsIGZtdCwgdCkKKyAgICAgICAgICAgICAgICB4bGlzdCA9IHgudG9saXN0KCkKKworICAgICAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyh4KQorICAgICAgICAgICAgICAgIGlmIGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICAgICAgICAgIG12bGlzdCA9IG12LnRvbGlzdCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXZsaXN0LCB4bGlzdCkKKworICAgICAgICAgICAgICAgIGlmIHRbMl0gPiAwOgorICAgICAgICAgICAgICAgICAgICAjIG5kaW0gPiAwOiB0ZXN0IGFnYWluc3Qgc3Vib2Zmc2V0cyByZXByZXNlbnRhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgeSA9IG5kYXJyYXlfZnJvbV9zdHJ1Y3R1cmUoaXRlbXMsIGZtdCwgdCwgZmxhZ3M9TkRfUElMKQorICAgICAgICAgICAgICAgICAgICB5bGlzdCA9IHkudG9saXN0KCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4bGlzdCwgeWxpc3QpCisKKyAgICAgICAgICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KHkpCisgICAgICAgICAgICAgICAgICAgIGlmIGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCB5KQorICAgICAgICAgICAgICAgICAgICAgICAgbXZsaXN0ID0gbXYudG9saXN0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXZsaXN0LCB5bGlzdCkKKworICAgICAgICAgICAgICAgIGlmIG51bXB5X2FycmF5OgorICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IHRbM10KKyAgICAgICAgICAgICAgICAgICAgaWYgMCBpbiBzaGFwZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICMgaHR0cDovL3Byb2plY3RzLnNjaXB5Lm9yZy9udW1weS90aWNrZXQvMTkxMAorICAgICAgICAgICAgICAgICAgICB6ID0gbnVtcHlfYXJyYXlfZnJvbV9zdHJ1Y3R1cmUoaXRlbXMsIGZtdCwgdCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkoeCwgb2JqPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPXouaXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09ei5uZGltLCBzaGFwZT16LnNoYXBlLCBzdHJpZGVzPXouc3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PXoudG9saXN0KCkpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3JhbmRvbV9pbnZhbGlkKHNlbGYpOgorICAgICAgICAjIGV4Y2VwdGlvbnMgZHVyaW5nIGNvbnN0cnVjdGlvbiBvZiBpbnZhbGlkIGFycmF5cworICAgICAgICBmb3IgXyBpbiByYW5nZShJVEVSQVRJT05TKToKKyAgICAgICAgICAgIGZvciBmbXQgaW4gZm10ZGljdFsnQCddOgorICAgICAgICAgICAgICAgIGl0ZW1zaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKworICAgICAgICAgICAgICAgIHQgPSByYW5kX3N0cnVjdHVyZShpdGVtc2l6ZSwgRmFsc2UsIG1heGRpbT1NQVhESU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heHNoYXBlPU1BWFNIQVBFKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodmVyaWZ5X3N0cnVjdHVyZSgqdCkpCisgICAgICAgICAgICAgICAgaXRlbXMgPSByYW5kaXRlbXNfZnJvbV9zdHJ1Y3R1cmUoZm10LCB0KQorCisgICAgICAgICAgICAgICAgbmRlcnIgPSBGYWxzZQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgeCA9IG5kYXJyYXlfZnJvbV9zdHJ1Y3R1cmUoaXRlbXMsIGZtdCwgdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIG5kZXJyID0gZS5fX2NsYXNzX18KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobmRlcnIpCisKKyAgICAgICAgICAgICAgICBpZiBudW1weV9hcnJheToKKyAgICAgICAgICAgICAgICAgICAgbnVtcHlfZXJyID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgeSA9IG51bXB5X2FycmF5X2Zyb21fc3RydWN0dXJlKGl0ZW1zLCBmbXQsIHQpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bXB5X2VyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICAgICAgaWYgMDogIyBodHRwOi8vcHJvamVjdHMuc2NpcHkub3JnL251bXB5L3RpY2tldC8xOTEwCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnVtcHlfZXJyKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9yYW5kb21fc2xpY2VfYXNzaWduKHNlbGYpOgorICAgICAgICAjIHZhbGlkIHNsaWNlIGFzc2lnbm1lbnRzCisgICAgICAgIGZvciBfIGluIHJhbmdlKElURVJBVElPTlMpOgorICAgICAgICAgICAgZm9yIGZtdCBpbiBmbXRkaWN0WydAJ106CisgICAgICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorCisgICAgICAgICAgICAgICAgbHNoYXBlLCByc2hhcGUsIGxzbGljZXMsIHJzbGljZXMgPSBcCisgICAgICAgICAgICAgICAgICAgIHJhbmRfYWxpZ25lZF9zbGljZXMobWF4ZGltPU1BWERJTSwgbWF4c2hhcGU9TUFYU0hBUEUpCisgICAgICAgICAgICAgICAgdGwgPSByYW5kX3N0cnVjdHVyZShpdGVtc2l6ZSwgVHJ1ZSwgc2hhcGU9bHNoYXBlKQorICAgICAgICAgICAgICAgIHRyID0gcmFuZF9zdHJ1Y3R1cmUoaXRlbXNpemUsIFRydWUsIHNoYXBlPXJzaGFwZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmVyaWZ5X3N0cnVjdHVyZSgqdGwpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2ZXJpZnlfc3RydWN0dXJlKCp0cikpCisgICAgICAgICAgICAgICAgbGl0ZW1zID0gcmFuZGl0ZW1zX2Zyb21fc3RydWN0dXJlKGZtdCwgdGwpCisgICAgICAgICAgICAgICAgcml0ZW1zID0gcmFuZGl0ZW1zX2Zyb21fc3RydWN0dXJlKGZtdCwgdHIpCisKKyAgICAgICAgICAgICAgICB4bCA9IG5kYXJyYXlfZnJvbV9zdHJ1Y3R1cmUobGl0ZW1zLCBmbXQsIHRsKQorICAgICAgICAgICAgICAgIHhyID0gbmRhcnJheV9mcm9tX3N0cnVjdHVyZShyaXRlbXMsIGZtdCwgdHIpCisgICAgICAgICAgICAgICAgeGxbbHNsaWNlc10gPSB4cltyc2xpY2VzXQorICAgICAgICAgICAgICAgIHhsbGlzdCA9IHhsLnRvbGlzdCgpCisgICAgICAgICAgICAgICAgeHJsaXN0ID0geHIudG9saXN0KCkKKworICAgICAgICAgICAgICAgIG1sID0gbWVtb3J5dmlldyh4bCkKKyAgICAgICAgICAgICAgICBtciA9IG1lbW9yeXZpZXcoeHIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbC50b2xpc3QoKSwgeGxsaXN0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXIudG9saXN0KCksIHhybGlzdCkKKworICAgICAgICAgICAgICAgIGlmIHRsWzJdID4gMCBhbmQgdHJbMl0gPiAwOgorICAgICAgICAgICAgICAgICAgICAjIG5kaW0gPiAwOiB0ZXN0IGFnYWluc3Qgc3Vib2Zmc2V0cyByZXByZXNlbnRhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgeWwgPSBuZGFycmF5X2Zyb21fc3RydWN0dXJlKGxpdGVtcywgZm10LCB0bCwgZmxhZ3M9TkRfUElMKQorICAgICAgICAgICAgICAgICAgICB5ciA9IG5kYXJyYXlfZnJvbV9zdHJ1Y3R1cmUocml0ZW1zLCBmbXQsIHRyLCBmbGFncz1ORF9QSUwpCisgICAgICAgICAgICAgICAgICAgIHlsW2xzbGljZXNdID0geXJbcnNsaWNlc10KKyAgICAgICAgICAgICAgICAgICAgeWxsaXN0ID0geWwudG9saXN0KCkKKyAgICAgICAgICAgICAgICAgICAgeXJsaXN0ID0geXIudG9saXN0KCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4bGxpc3QsIHlsbGlzdCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4cmxpc3QsIHlybGlzdCkKKworICAgICAgICAgICAgICAgICAgICBtbCA9IG1lbW9yeXZpZXcoeWwpCisgICAgICAgICAgICAgICAgICAgIG1yID0gbWVtb3J5dmlldyh5cikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbC50b2xpc3QoKSwgeWxsaXN0KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1yLnRvbGlzdCgpLCB5cmxpc3QpCisKKyAgICAgICAgICAgICAgICBpZiBudW1weV9hcnJheToKKyAgICAgICAgICAgICAgICAgICAgaWYgMCBpbiBsc2hhcGUgb3IgMCBpbiByc2hhcGU6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAjIGh0dHA6Ly9wcm9qZWN0cy5zY2lweS5vcmcvbnVtcHkvdGlja2V0LzE5MTAKKworICAgICAgICAgICAgICAgICAgICB6bCA9IG51bXB5X2FycmF5X2Zyb21fc3RydWN0dXJlKGxpdGVtcywgZm10LCB0bCkKKyAgICAgICAgICAgICAgICAgICAgenIgPSBudW1weV9hcnJheV9mcm9tX3N0cnVjdHVyZShyaXRlbXMsIGZtdCwgdHIpCisgICAgICAgICAgICAgICAgICAgIHpsW2xzbGljZXNdID0genJbcnNsaWNlc10KKworICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNfb3ZlcmxhcHBpbmcodGwpIGFuZCBub3QgaXNfb3ZlcmxhcHBpbmcodHIpOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBTbGljZSBhc3NpZ25tZW50IG9mIG92ZXJsYXBwaW5nIHN0cnVjdHVyZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICMgaXMgdW5kZWZpbmVkIGluIE51bVB5LgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkoeGwsIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9emwuaXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPXpsLm5kaW0sIHNoYXBlPXpsLnNoYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlcz16bC5zdHJpZGVzLCBsc3Q9emwudG9saXN0KCkpCisKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkoeHIsIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT16ci5pdGVtc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT16ci5uZGltLCBzaGFwZT16ci5zaGFwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlcz16ci5zdHJpZGVzLCBsc3Q9enIudG9saXN0KCkpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3JlX2V4cG9ydChzZWxmKToKKyAgICAgICAgaXRlbXMgPSBbMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJdCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bMyw0XSwgZmxhZ3M9TkRfUElMKQorICAgICAgICBleCA9IG5kYXJyYXkobmQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4LmZsYWdzICYgTkRfUElMKQorICAgICAgICBzZWxmLmFzc2VydElzKGV4Lm9iaiwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguc3Vib2Zmc2V0cywgKDAsIC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleC5jX2NvbnRpZ3VvdXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXguZl9jb250aWd1b3VzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4LmNvbnRpZ3VvdXMpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3plcm9fc2hhcGUoc2VsZik6CisgICAgICAgICMgemVyb3MgaW4gc2hhcGUKKyAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVswXSwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdi50b2xpc3QoKSwgW10pCisKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bMCwzLDNdLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIFtdKQorCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzMsMCwzXSwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBbW10sIFtdLCBbXV0pCisKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bMywzLDBdLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbW10sIFtdLCBbXV0sIFtbXSwgW10sIFtdXSwgW1tdLCBbXSwgW11dXSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfemVyb19zdHJpZGVzKHNlbGYpOgorICAgICAgICAjIHplcm8gc3RyaWRlcworICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bNV0sIHN0cmlkZXM9WzBdLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgWzEsIDEsIDEsIDEsIDFdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdi50b2xpc3QoKSwgWzEsIDEsIDEsIDEsIDFdKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9vZmZzZXQoc2VsZik6CisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDIwKSksIHNoYXBlPVszXSwgb2Zmc2V0PTcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQub2Zmc2V0LCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBbNyw4LDldKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKHNlbGYpOgorICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgzKSksIHNoYXBlPVszXSwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICBtID0gbmQubWVtb3J5dmlld19mcm9tX2J1ZmZlcigpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9nZXRfcG9pbnRlcihzZWxmKToKKyAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMykpLCBzaGFwZT1bM10sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZFtpXSwgZ2V0X3BvaW50ZXIobmQsIFtpXSkpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3RvbGlzdF9udWxsX3N0cmlkZXMoc2VsZik6CisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDIwKSksIHNoYXBlPVsyLDIsNV0pCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfTkR8UHlCVUZfRk9STUFUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBleC50b2xpc3QoKSkKKworICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBleC50b2xpc3QoKSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfY21wX2NvbnRpZyhzZWxmKToKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNtcF9jb250aWcoYiIxMjMiLCBiIjQ1NiIpKQorCisgICAgICAgIHggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsNF0pCisgICAgICAgIHkgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzQsM10pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY21wX2NvbnRpZyh4LCB5KSkKKworICAgICAgICB4ID0gbmRhcnJheShbMV0sIHNoYXBlPVsxXSwgZm9ybWF0PSJCIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNtcF9jb250aWcoeCwgYidceDAxJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbXBfY29udGlnKGInXHgwMScsIHgpKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9oYXNoKHNlbGYpOgorCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgnTCcsIFsxLDIsM10pCisgICAgICAgIG5kID0gbmRhcnJheShhKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBoYXNoLCBuZCkKKworICAgICAgICAjIG9uZS1kaW1lbnNpb25hbAorICAgICAgICBiID0gYnl0ZXMobGlzdChyYW5nZSgxMikpKQorCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsxMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChuZCksIGhhc2goYikpCisKKyAgICAgICAgIyBDLWNvbnRpZ3VvdXMKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsNF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChuZCksIGhhc2goYikpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsMiwyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG5kKSwgaGFzaChiKSkKKworICAgICAgICAjIEZvcnRyYW4gY29udGlndW91cworICAgICAgICBiID0gYnl0ZXModHJhbnNwb3NlKGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzQsM10pKQorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMyw0XSwgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG5kKSwgaGFzaChiKSkKKworICAgICAgICBiID0gYnl0ZXModHJhbnNwb3NlKGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzIsMywyXSkpCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsyLDMsMl0sIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChuZCksIGhhc2goYikpCisKKyAgICAgICAgIyBzdWJvZmZzZXRzCisgICAgICAgIGIgPSBieXRlcyhsaXN0KHJhbmdlKDEyKSkpCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsyLDIsM10sIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG5kKSwgaGFzaChiKSkKKworICAgICAgICAjIG5vbi1ieXRlIGZvcm1hdHMKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzIsMiwzXSwgZm9ybWF0PSdMJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG5kKSwgaGFzaChuZC50b2J5dGVzKCkpKQorCisgICAgZGVmIHRlc3RfcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMoc2VsZik6CisKKyAgICAgICAgIyBUaGUgcmVxdWVzdHMgYXJlIHVzZWQgaW4gX3Rlc3RidWZmZXIuYzpweV9idWZmZXJfdG9fY29udGlndW91cworICAgICAgICAjIHRvIGdlbmVyYXRlIGJ1ZmZlcnMgd2l0aG91dCBmdWxsIGluZm9ybWF0aW9uIGZvciB0ZXN0aW5nLgorICAgICAgICByZXF1ZXN0cyA9ICgKKyAgICAgICAgICAgICMgZGlzdGluY3QgZmxhZ3MKKyAgICAgICAgICAgIFB5QlVGX0lORElSRUNULCBQeUJVRl9TVFJJREVTLCBQeUJVRl9ORCwgUHlCVUZfU0lNUExFLAorICAgICAgICAgICAgIyBjb21wb3VuZCByZXF1ZXN0cworICAgICAgICAgICAgUHlCVUZfRlVMTCwgUHlCVUZfRlVMTF9STywKKyAgICAgICAgICAgIFB5QlVGX1JFQ09SRFMsIFB5QlVGX1JFQ09SRFNfUk8sCisgICAgICAgICAgICBQeUJVRl9TVFJJREVELCBQeUJVRl9TVFJJREVEX1JPLAorICAgICAgICAgICAgUHlCVUZfQ09OVElHLCBQeUJVRl9DT05USUdfUk8sCisgICAgICAgICkKKworICAgICAgICAjIG5vIGJ1ZmZlciBpbnRlcmZhY2UKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBweV9idWZmZXJfdG9fY29udGlndW91cywge30sICdGJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCVUZfRlVMTF9STykKKworICAgICAgICAjIHNjYWxhciwgcmVhZC1vbmx5IHJlcXVlc3QKKyAgICAgICAgbmQgPSBuZGFycmF5KDksIHNoYXBlPSgpLCBmb3JtYXQ9IkwiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIHJlcXVlc3RzOgorICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgb3JkZXIsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBuZC50b2J5dGVzKCkpCisKKyAgICAgICAgIyB6ZXJvcyBpbiBzaGFwZQorICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMF0sIGZvcm1hdD0iTCIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgZm9yIHJlcXVlc3QgaW4gcmVxdWVzdHM6CisgICAgICAgICAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCBvcmRlciwgcmVxdWVzdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInJykKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSg4KSksIHNoYXBlPVsyLCAwLCA3XSwgZm9ybWF0PSJMIiwKKyAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgZm9yIHJlcXVlc3QgaW4gcmVxdWVzdHM6CisgICAgICAgICAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCBvcmRlciwgcmVxdWVzdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInJykKKworICAgICAgICAjIyMgT25lLWRpbWVuc2lvbmFsIGFycmF5cyBhcmUgdHJpdmlhbCwgc2luY2UgRm9ydHJhbiBhbmQgQyBvcmRlcgorICAgICAgICAjIyMgYXJlIHRoZSBzYW1lLgorCisgICAgICAgICMgb25lLWRpbWVuc2lvbmFsCisgICAgICAgIGZvciBmIGluIFswLCBORF9GT1JUUkFOXToKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShbMV0sIHNoYXBlPVsxXSwgZm9ybWF0PSJoIiwgZmxhZ3M9ZnxORF9XUklUQUJMRSkKKyAgICAgICAgICAgIG5kYnl0ZXMgPSBuZC50b2J5dGVzKCkKKyAgICAgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICAgICAgZm9yIHJlcXVlc3QgaW4gcmVxdWVzdHM6CisgICAgICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgb3JkZXIsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmRieXRlcykKKworICAgICAgICAgICAgbmQgPSBuZGFycmF5KFsxLCAyLCAzXSwgc2hhcGU9WzNdLCBmb3JtYXQ9ImIiLCBmbGFncz1mfE5EX1dSSVRBQkxFKQorICAgICAgICAgICAgbmRieXRlcyA9IG5kLnRvYnl0ZXMoKQorICAgICAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgICAgICBmb3IgcmVxdWVzdCBpbiByZXF1ZXN0czoKKyAgICAgICAgICAgICAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCBvcmRlciwgcmVxdWVzdCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBuZGJ5dGVzKQorCisgICAgICAgICMgb25lLWRpbWVuc2lvbmFsLCBub24tY29udGlndW91cyBpbnB1dAorICAgICAgICBuZCA9IG5kYXJyYXkoWzEsIDIsIDNdLCBzaGFwZT1bMl0sIHN0cmlkZXM9WzJdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbmRieXRlcyA9IG5kLnRvYnl0ZXMoKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgZm9yIHJlcXVlc3QgaW4gW1B5QlVGX1NUUklERVMsIFB5QlVGX0ZVTExdOgorICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgb3JkZXIsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBuZGJ5dGVzKQorCisgICAgICAgIG5kID0gbmRbOjotMV0KKyAgICAgICAgbmRieXRlcyA9IG5kLnRvYnl0ZXMoKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgZm9yIHJlcXVlc3QgaW4gcmVxdWVzdHM6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsIG9yZGVyLCByZXF1ZXN0KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIG5kYnl0ZXMpCisKKyAgICAgICAgIyMjCisgICAgICAgICMjIyBNdWx0aS1kaW1lbnNpb25hbCBhcnJheXM6CisgICAgICAgICMjIworICAgICAgICAjIyMgVGhlIGdvYWwgaGVyZSBpcyB0byBwcmVzZXJ2ZSB0aGUgbG9naWNhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUKKyAgICAgICAgIyMjIGlucHV0IGFycmF5IGJ1dCBjaGFuZ2UgdGhlIHBoeXNpY2FsIHJlcHJlc2VudGF0aW9uIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgIyMjCisgICAgICAgICMjIyBfdGVzdGJ1ZmZlciBleGFtcGxlOgorICAgICAgICAjIyMgPT09PT09PT09PT09PT09PT09PT0KKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICBDIGlucHV0IGFycmF5OgorICAgICAgICAjIyMgICAgLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyMjICAgICAgID4+PiBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMywgNF0pCisgICAgICAgICMjIyAgICAgICA+Pj4gbmQudG9saXN0KCkKKyAgICAgICAgIyMjICAgICAgIFtbMCwgMSwgMiwgM10sCisgICAgICAgICMjIyAgICAgICAgWzQsIDUsIDYsIDddLAorICAgICAgICAjIyMgICAgICAgIFs4LCA5LCAxMCwgMTFdXQorICAgICAgICAjIyMKKyAgICAgICAgIyMjICAgIEZvcnRyYW4gb3V0cHV0OgorICAgICAgICAjIyMgICAgLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICMjIyAgICAgICA+Pj4gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsICdGJywgUHlCVUZfRlVMTF9STykKKyAgICAgICAgIyMjICAgICAgID4+PiBiJ1x4MDBceDA0XHgwOFx4MDFceDA1XHRceDAyXHgwNlxuXHgwM1x4MDdceDBiJworICAgICAgICAjIyMKKyAgICAgICAgIyMjICAgIFRoZSByZXR1cm4gdmFsdWUgY29ycmVzcG9uZHMgdG8gdGhpcyBpbnB1dCBsaXN0IGZvcgorICAgICAgICAjIyMgICAgX3Rlc3RidWZmZXIncyBuZGFycmF5OgorICAgICAgICAjIyMgICAgICAgPj4+IG5kID0gbmRhcnJheShbMCw0LDgsMSw1LDksMiw2LDEwLDMsNywxMV0sIHNoYXBlPVszLDRdLAorICAgICAgICAjIyMgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICAjIyMgICAgICAgPj4+IG5kLnRvbGlzdCgpCisgICAgICAgICMjIyAgICAgICBbWzAsIDEsIDIsIDNdLAorICAgICAgICAjIyMgICAgICAgIFs0LCA1LCA2LCA3XSwKKyAgICAgICAgIyMjICAgICAgICBbOCwgOSwgMTAsIDExXV0KKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICBUaGUgbG9naWNhbCBhcnJheSBpcyB0aGUgc2FtZSwgYnV0IHRoZSB2YWx1ZXMgaW4gbWVtb3J5IGFyZSBub3cKKyAgICAgICAgIyMjICAgIGluIEZvcnRyYW4gb3JkZXIuCisgICAgICAgICMjIworICAgICAgICAjIyMgTnVtUHkgZXhhbXBsZToKKyAgICAgICAgIyMjID09PT09PT09PT09PT09CisgICAgICAgICMjIyAgICBfdGVzdGJ1ZmZlcidzIG5kYXJyYXkgdGFrZXMgbGlzdHMgdG8gaW5pdGlhbGl6ZSB0aGUgbWVtb3J5LgorICAgICAgICAjIyMgICAgSGVyZSdzIHRoZSBzYW1lIHNlcXVlbmNlIGluIE51bVB5OgorICAgICAgICAjIyMKKyAgICAgICAgIyMjICAgIEMgaW5wdXQ6CisgICAgICAgICMjIyAgICAtLS0tLS0tLQorICAgICAgICAjIyMgICAgICAgPj4+IG5kID0gbmRhcnJheShidWZmZXI9Ynl0ZWFycmF5KGxpc3QocmFuZ2UoMTIpKSksCisgICAgICAgICMjIyAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlPVszLCA0XSwgZHR5cGU9J0InKQorICAgICAgICAjIyMgICAgICAgPj4+IG5kCisgICAgICAgICMjIyAgICAgICBhcnJheShbWyAwLCAgMSwgIDIsICAzXSwKKyAgICAgICAgIyMjICAgICAgICAgICAgICBbIDQsICA1LCAgNiwgIDddLAorICAgICAgICAjIyMgICAgICAgICAgICAgIFsgOCwgIDksIDEwLCAxMV1dLCBkdHlwZT11aW50OCkKKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICBGb3J0cmFuIG91dHB1dDoKKyAgICAgICAgIyMjICAgIC0tLS0tLS0tLS0tLS0tLQorICAgICAgICAjIyMgICAgICAgPj4+IGZvcnRyYW5fYnVmID0gbmQudG9zdHJpbmcob3JkZXI9J0YnKQorICAgICAgICAjIyMgICAgICAgPj4+IGZvcnRyYW5fYnVmCisgICAgICAgICMjIyAgICAgICBiJ1x4MDBceDA0XHgwOFx4MDFceDA1XHRceDAyXHgwNlxuXHgwM1x4MDdceDBiJworICAgICAgICAjIyMKKyAgICAgICAgIyMjICAgICAgID4+PiBuZCA9IG5kYXJyYXkoYnVmZmVyPWZvcnRyYW5fYnVmLCBzaGFwZT1bMywgNF0sCisgICAgICAgICMjIyAgICAgICAgICAgICAgICAgICAgICAgIGR0eXBlPSdCJywgb3JkZXI9J0YnKQorICAgICAgICAjIyMKKyAgICAgICAgIyMjICAgICAgID4+PiBuZAorICAgICAgICAjIyMgICAgICAgYXJyYXkoW1sgMCwgIDEsICAyLCAgM10sCisgICAgICAgICMjIyAgICAgICAgICAgICAgWyA0LCAgNSwgIDYsICA3XSwKKyAgICAgICAgIyMjICAgICAgICAgICAgICBbIDgsICA5LCAxMCwgMTFdXSwgZHR5cGU9dWludDgpCisgICAgICAgICMjIworCisgICAgICAgICMgbXVsdGktZGltZW5zaW9uYWwsIGNvbnRpZ3VvdXMgaW5wdXQKKyAgICAgICAgbHN0ID0gbGlzdChyYW5nZSgxMikpCisgICAgICAgIGZvciBmIGluIFswLCBORF9GT1JUUkFOXToKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShsc3QsIHNoYXBlPVszLCA0XSwgZmxhZ3M9ZnxORF9XUklUQUJMRSkKKyAgICAgICAgICAgIGlmIG51bXB5X2FycmF5OgorICAgICAgICAgICAgICAgIG5hID0gbnVtcHlfYXJyYXkoYnVmZmVyPWJ5dGVhcnJheShsc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGU9WzMsIDRdLCBkdHlwZT0nQicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcj0nQycgaWYgZiA9PSAwIGVsc2UgJ0YnKQorCisgICAgICAgICAgICAjICdDJyByZXF1ZXN0CisgICAgICAgICAgICBpZiBmID09IE5EX0ZPUlRSQU46ICMgJ0YnIHRvICdDJworICAgICAgICAgICAgICAgIHggPSBuZGFycmF5KHRyYW5zcG9zZShsc3QsIFs0LCAzXSksIHNoYXBlPVszLCA0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgICAgICBleHBlY3RlZCA9IHgudG9ieXRlcygpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gbmQudG9ieXRlcygpCisgICAgICAgICAgICBmb3IgcmVxdWVzdCBpbiByZXF1ZXN0czoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgJ0MnLCByZXF1ZXN0KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgZXhwZWN0ZWQpCisKKyAgICAgICAgICAgICAgICAjIENoZWNrIHRoYXQgb3V0cHV0IGNhbiBiZSB1c2VkIGFzIHRoZSBiYXNpcyBmb3IgY29uc3RydWN0aW5nCisgICAgICAgICAgICAgICAgIyBhIEMgYXJyYXkgdGhhdCBpcyBsb2dpY2FsbHkgaWRlbnRpY2FsIHRvIHRoZSBpbnB1dCBhcnJheS4KKyAgICAgICAgICAgICAgICB5ID0gbmRhcnJheShbdiBmb3IgdiBpbiBiXSwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbW9yeXZpZXcoeSksIG1lbW9yeXZpZXcobmQpKQorCisgICAgICAgICAgICAgICAgaWYgbnVtcHlfYXJyYXk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmEudG9zdHJpbmcob3JkZXI9J0MnKSkKKworICAgICAgICAgICAgIyAnRicgcmVxdWVzdAorICAgICAgICAgICAgaWYgZiA9PSAwOiAjICdDJyB0byAnRicKKyAgICAgICAgICAgICAgICB4ID0gbmRhcnJheSh0cmFuc3Bvc2UobHN0LCBbMywgNF0pLCBzaGFwZT1bNCwgM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHggPSBuZGFycmF5KGxzdCwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgIGV4cGVjdGVkID0geC50b2J5dGVzKCkKKyAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIFtQeUJVRl9GVUxMLCBQeUJVRl9GVUxMX1JPLCBQeUJVRl9JTkRJUkVDVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJVRl9TVFJJREVTLCBQeUJVRl9ORF06CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsICdGJywgcmVxdWVzdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgQnVmZmVyRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBleHBlY3RlZCkKKworICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBvdXRwdXQgY2FuIGJlIHVzZWQgYXMgdGhlIGJhc2lzIGZvciBjb25zdHJ1Y3RpbmcKKyAgICAgICAgICAgICAgICAjIGEgRm9ydHJhbiBhcnJheSB0aGF0IGlzIGxvZ2ljYWxseSBpZGVudGljYWwgdG8gdGhlIGlucHV0IGFycmF5LgorICAgICAgICAgICAgICAgIHkgPSBuZGFycmF5KFt2IGZvciB2IGluIGJdLCBzaGFwZT1bMywgNF0sIGZsYWdzPU5EX0ZPUlRSQU58TkRfV1JJVEFCTEUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KG5kKSkKKworICAgICAgICAgICAgICAgIGlmIG51bXB5X2FycmF5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIG5hLnRvc3RyaW5nKG9yZGVyPSdGJykpCisKKyAgICAgICAgICAgICMgJ0EnIHJlcXVlc3QKKyAgICAgICAgICAgIGlmIGYgPT0gTkRfRk9SVFJBTjoKKyAgICAgICAgICAgICAgICB4ID0gbmRhcnJheShsc3QsIHNoYXBlPVszLCA0XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSB4LnRvYnl0ZXMoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleHBlY3RlZCA9IG5kLnRvYnl0ZXMoKQorICAgICAgICAgICAgZm9yIHJlcXVlc3QgaW4gW1B5QlVGX0ZVTEwsIFB5QlVGX0ZVTExfUk8sIFB5QlVGX0lORElSRUNULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5QlVGX1NUUklERVMsIFB5QlVGX05EXToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgJ0EnLCByZXF1ZXN0KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgZXhwZWN0ZWQpCisKKyAgICAgICAgICAgICAgICAjIENoZWNrIHRoYXQgb3V0cHV0IGNhbiBiZSB1c2VkIGFzIHRoZSBiYXNpcyBmb3IgY29uc3RydWN0aW5nCisgICAgICAgICAgICAgICAgIyBhbiBhcnJheSB3aXRoIG9yZGVyPWYgdGhhdCBpcyBsb2dpY2FsbHkgaWRlbnRpY2FsIHRvIHRoZSBpbnB1dAorICAgICAgICAgICAgICAgICMgYXJyYXkuCisgICAgICAgICAgICAgICAgeSA9IG5kYXJyYXkoW3YgZm9yIHYgaW4gYl0sIHNoYXBlPVszLCA0XSwgZmxhZ3M9ZnxORF9XUklUQUJMRSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbW9yeXZpZXcoeSksIG1lbW9yeXZpZXcobmQpKQorCisgICAgICAgICAgICAgICAgaWYgbnVtcHlfYXJyYXk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmEudG9zdHJpbmcob3JkZXI9J0EnKSkKKworICAgICAgICAjIG11bHRpLWRpbWVuc2lvbmFsLCBub24tY29udGlndW91cyBpbnB1dAorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMywgNF0sIGZsYWdzPU5EX1dSSVRBQkxFfE5EX1BJTCkKKworICAgICAgICAjICdDJworICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsICdDJywgUHlCVUZfRlVMTF9STykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBuZC50b2J5dGVzKCkpCisgICAgICAgIHkgPSBuZGFycmF5KFt2IGZvciB2IGluIGJdLCBzaGFwZT1bMywgNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbW9yeXZpZXcoeSksIG1lbW9yeXZpZXcobmQpKQorCisgICAgICAgICMgJ0YnCisgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgJ0YnLCBQeUJVRl9GVUxMX1JPKQorICAgICAgICB4ID0gbmRhcnJheSh0cmFuc3Bvc2UobHN0LCBbMywgNF0pLCBzaGFwZT1bNCwgM10sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHgudG9ieXRlcygpKQorICAgICAgICB5ID0gbmRhcnJheShbdiBmb3IgdiBpbiBiXSwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9GT1JUUkFOfE5EX1dSSVRBQkxFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbW9yeXZpZXcoeSksIG1lbW9yeXZpZXcobmQpKQorCisgICAgICAgICMgJ0EnCisgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgJ0EnLCBQeUJVRl9GVUxMX1JPKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIG5kLnRvYnl0ZXMoKSkKKyAgICAgICAgeSA9IG5kYXJyYXkoW3YgZm9yIHYgaW4gYl0sIHNoYXBlPVszLCA0XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtb3J5dmlldyh5KSwgbWVtb3J5dmlldyhuZCkpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbnN0cnVjdGlvbihzZWxmKToKKworICAgICAgICBpdGVtc19zaGFwZSA9IFsoOSwgW10pLCAoWzEsMiwzXSwgWzNdKSwgKGxpc3QocmFuZ2UoMiozKjUpKSwgWzIsMyw1XSldCisKKyAgICAgICAgIyBOdW1QeSBzdHlsZSwgQy1jb250aWd1b3VzOgorICAgICAgICBmb3IgaXRlbXMsIHNoYXBlIGluIGl0ZW1zX3NoYXBlOgorCisgICAgICAgICAgICAjIEZyb20gUEVQLTMxMTggY29tcGxpYW50IGV4cG9ydGVyOgorICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSkKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uY19jb250aWd1b3VzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uY29udGlndW91cykKKworICAgICAgICAgICAgbmRpbSA9IGxlbihzaGFwZSkKKyAgICAgICAgICAgIHN0cmlkZXMgPSBzdHJpZGVzX2Zyb21fc2hhcGUobmRpbSwgc2hhcGUsIDEsICdDJykKKyAgICAgICAgICAgIGxzdCA9IGNhcnJheShpdGVtcywgc2hhcGUpCisKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0sIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICAgICAjIEZyb20gbWVtb3J5dmlldzoKKyAgICAgICAgICAgIG0yID0gbWVtb3J5dmlldyhtKQorICAgICAgICAgICAgc2VsZi52ZXJpZnkobTIsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICAgICAjIFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyKCk6IG5vIHN0cmlkZXMKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX0NPTlRJR19ST3xQeUJVRl9GT1JNQVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnN0cmlkZXMsICgpKQorICAgICAgICAgICAgbSA9IG5kLm1lbW9yeXZpZXdfZnJvbV9idWZmZXIoKQorICAgICAgICAgICAgc2VsZi52ZXJpZnkobSwgb2JqPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9J0InLCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAgICAgIyBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcigpOiBubyBmb3JtYXQsIHNoYXBlLCBzdHJpZGVzCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9TSU1QTEUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLmZvcm1hdCwgJycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnNoYXBlLCAoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQuc3RyaWRlcywgKCkpCisgICAgICAgICAgICBtID0gbmQubWVtb3J5dmlld19mcm9tX2J1ZmZlcigpCisKKyAgICAgICAgICAgIGxzdCA9IFtpdGVtc10gaWYgbmRpbSA9PSAwIGVsc2UgaXRlbXMKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0sIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PSdCJywgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9W2V4Lm5ieXRlc10sIHN0cmlkZXM9KDEsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisKKyAgICAgICAgIyBOdW1QeSBzdHlsZSwgRm9ydHJhbiBjb250aWd1b3VzOgorICAgICAgICBmb3IgaXRlbXMsIHNoYXBlIGluIGl0ZW1zX3NoYXBlOgorCisgICAgICAgICAgICAjIEZyb20gUEVQLTMxMTggY29tcGxpYW50IGV4cG9ydGVyOgorICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uZl9jb250aWd1b3VzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uY29udGlndW91cykKKworICAgICAgICAgICAgbmRpbSA9IGxlbihzaGFwZSkKKyAgICAgICAgICAgIHN0cmlkZXMgPSBzdHJpZGVzX2Zyb21fc2hhcGUobmRpbSwgc2hhcGUsIDEsICdGJykKKyAgICAgICAgICAgIGxzdCA9IGZhcnJheShpdGVtcywgc2hhcGUpCisKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0sIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICAgICAjIEZyb20gbWVtb3J5dmlldzoKKyAgICAgICAgICAgIG0yID0gbWVtb3J5dmlldyhtKQorICAgICAgICAgICAgc2VsZi52ZXJpZnkobTIsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICMgUElMIHN0eWxlOgorICAgICAgICBmb3IgaXRlbXMsIHNoYXBlIGluIGl0ZW1zX3NoYXBlWzE6XToKKworICAgICAgICAgICAgIyBGcm9tIFBFUC0zMTE4IGNvbXBsaWFudCBleHBvcnRlcjoKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgICAgICBuZGltID0gbGVuKHNoYXBlKQorICAgICAgICAgICAgbHN0ID0gY2FycmF5KGl0ZW1zLCBzaGFwZSkKKworICAgICAgICAgICAgc2VsZi52ZXJpZnkobSwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PSdCJywgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9ZXguc3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisKKyAgICAgICAgICAgICMgRnJvbSBtZW1vcnl2aWV3OgorICAgICAgICAgICAgbTIgPSBtZW1vcnl2aWV3KG0pCisgICAgICAgICAgICBzZWxmLnZlcmlmeShtMiwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PSdCJywgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9ZXguc3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisKKyAgICAgICAgIyBJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHM6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWVtb3J5dmlldywgYic5JywgJ3gnKQorICAgICAgICAjIE5vdCBhIGJ1ZmZlciBwcm92aWRlcjoKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtZW1vcnl2aWV3LCB7fSkKKyAgICAgICAgIyBOb24tY29tcGxpYW50IGJ1ZmZlciBwcm92aWRlcjoKKyAgICAgICAgZXggPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszXSkKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfU0lNUExFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbWVtb3J5dmlldywgbmQpCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX0NPTlRJR19ST3xQeUJVRl9GT1JNQVQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBtZW1vcnl2aWV3LCBuZCkKKworICAgICAgICAjIG5kaW0gPiA2NAorICAgICAgICBuZCA9IG5kYXJyYXkoWzFdKjEyOCwgc2hhcGU9WzFdKjEyOCwgZm9ybWF0PSdMJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWVtb3J5dmlldywgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kLm1lbW9yeXZpZXdfZnJvbV9idWZmZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfUkVBRCwgJ0MnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfY29udGlndW91cywgbmQsIFB5QlVGX1JFQUQsICdGJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kWzo6LTFdLCBQeUJVRl9SRUFELCAnQycpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2Nhc3RfemVyb19zaGFwZShzZWxmKToKKyAgICAgICAgIyBDYXN0cyBhcmUgdW5kZWZpbmVkIGlmIHNoYXBlIGNvbnRhaW5zIHplcm9zLiBUaGVzZSBhcnJheXMgYXJlCisgICAgICAgICMgcmVnYXJkZWQgYXMgQy1jb250aWd1b3VzIGJ5IE51bXB5IGFuZCBQeUJ1ZmZlcl9HZXRDb250aWd1b3VzKCksCisgICAgICAgICMgc28gdGhleSBhcmUgbm90IGNhdWdodCBieSB0aGUgdGVzdCBmb3IgQy1jb250aWd1aXR5IGluIG1lbW9yeV9jYXN0KCkuCisgICAgICAgIGl0ZW1zID0gWzEsMiwzXQorICAgICAgICBmb3Igc2hhcGUgaW4gKFswLDMsM10sIFszLDAsM10sIFswLDMsM10pOgorICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleC5jX2NvbnRpZ3VvdXMpCisgICAgICAgICAgICBtc3JjID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXNyYy5jYXN0LCAnYycpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3N0cnVjdF9tb2R1bGUoc2VsZik6CisKKyAgICAgICAgY2xhc3MgSU5UKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsKToKKyAgICAgICAgICAgICAgICBzZWxmLnZhbCA9IHZhbAorICAgICAgICAgICAgZGVmIF9faW50X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsCisKKyAgICAgICAgY2xhc3MgSURYKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsKToKKyAgICAgICAgICAgICAgICBzZWxmLnZhbCA9IHZhbAorICAgICAgICAgICAgZGVmIF9faW5kZXhfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi52YWwKKworICAgICAgICBkZWYgZigpOiByZXR1cm4gNworCisgICAgICAgIHZhbHVlcyA9IFtJTlQoOSksIElEWCg5KSwKKyAgICAgICAgICAgICAgICAgIDIuMiszaiwgRGVjaW1hbCgiLTIxLjEiKSwgMTIuMiwgRnJhY3Rpb24oNSwgMiksCisgICAgICAgICAgICAgICAgICBbMSwyLDNdLCB7NCw1LDZ9LCB7Nzo4fSwgKCksICg5LCksCisgICAgICAgICAgICAgICAgICBUcnVlLCBGYWxzZSwgTm9uZSwgTm90SW1wbGVtZW50ZWQsCisgICAgICAgICAgICAgICAgICBiJ2EnLCBiJ2FiYycsIGJ5dGVhcnJheShiJ2EnKSwgYnl0ZWFycmF5KGInYWJjJyksCisgICAgICAgICAgICAgICAgICAnYScsICdhYmMnLCByJ2EnLCByJ2FiYycsCisgICAgICAgICAgICAgICAgICBmLCBsYW1iZGEgeDogeF0KKworICAgICAgICBmb3IgZm10LCBpdGVtcywgaXRlbSBpbiBpdGVyX2Zvcm1hdCgxMCwgJ21lbW9yeXZpZXcnKToKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzEwXSwgZm9ybWF0PWZtdCwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVsxMF0sIGZvcm1hdD1mbXQsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgICAgIHN0cnVjdC5wYWNrX2ludG8oZm10LCBuZCwgMCwgaXRlbSkKKyAgICAgICAgICAgIG1bMF0gPSBpdGVtCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMF0sIG5kWzBdKQorCisgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisgICAgICAgICAgICBpZiAnUCcgaW4gZm10OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGZvciB2IGluIHZhbHVlczoKKyAgICAgICAgICAgICAgICBzdHJ1Y3RfZXJyID0gTm9uZQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0LnBhY2tfaW50byhmbXQsIG5kLCBpdGVtc2l6ZSwgdikKKyAgICAgICAgICAgICAgICBleGNlcHQgc3RydWN0LmVycm9yOgorICAgICAgICAgICAgICAgICAgICBzdHJ1Y3RfZXJyID0gc3RydWN0LmVycm9yCisKKyAgICAgICAgICAgICAgICBtdl9lcnIgPSBOb25lCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBtWzFdID0gdgorICAgICAgICAgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICAgICBtdl9lcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgaWYgc3RydWN0X2VyciBvciBtdl9lcnI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qoc3RydWN0X2VyciwgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChtdl9lcnIsIE5vbmUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzFdLCBuZFsxXSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY2FzdF96ZXJvX3N0cmlkZXMoc2VsZik6CisgICAgICAgICMgQ2FzdHMgYXJlIHVuZGVmaW5lZCBpZiBzdHJpZGVzIGNvbnRhaW5zIHplcm9zLiBUaGVzZSBhcnJheXMgYXJlCisgICAgICAgICMgKHNvbWV0aW1lcyEpIHJlZ2FyZGVkIGFzIEMtY29udGlndW91cyBieSBOdW1weSwgYnV0IG5vdCBieQorICAgICAgICAjIFB5QnVmZmVyX0dldENvbnRpZ3VvdXMoKS4KKyAgICAgICAgZXggPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszXSwgc3RyaWRlcz1bMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXguY19jb250aWd1b3VzKQorICAgICAgICBtc3JjID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtc3JjLmNhc3QsICdjJykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY2FzdF9pbnZhbGlkKHNlbGYpOgorICAgICAgICAjIGludmFsaWQgZm9ybWF0CisgICAgICAgIGZvciBzZm10IGluIE5PTl9CWVRFX0ZPUk1BVDoKKyAgICAgICAgICAgIHNmb3JtYXQgPSAnQCcgKyBzZm10IGlmIHJhbmRyYW5nZSgyKSBlbHNlIHNmbXQKKyAgICAgICAgICAgIHNzaXplID0gc3RydWN0LmNhbGNzaXplKHNmb3JtYXQpCisgICAgICAgICAgICBmb3IgZGZtdCBpbiBOT05fQllURV9GT1JNQVQ6CisgICAgICAgICAgICAgICAgZGZvcm1hdCA9ICdAJyArIGRmbXQgaWYgcmFuZHJhbmdlKDIpIGVsc2UgZGZtdAorICAgICAgICAgICAgICAgIGRzaXplID0gc3RydWN0LmNhbGNzaXplKGRmb3JtYXQpCisgICAgICAgICAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMzIpKSwgc2hhcGU9WzMyLy9zc2l6ZV0sIGZvcm1hdD1zZm9ybWF0KQorICAgICAgICAgICAgICAgIG1zcmMgPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXNyYy5jYXN0LCBkZm10LCBbMzIvL2RzaXplXSkKKworICAgICAgICBmb3Igc2ZtdCwgc2l0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KDEpOgorICAgICAgICAgICAgZXggPSBuZGFycmF5KHNpdGVtcywgc2hhcGU9WzFdLCBmb3JtYXQ9c2ZtdCkKKyAgICAgICAgICAgIG1zcmMgPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICAgICAgZm9yIGRmbXQsIF8sIF8gaW4gaXRlcl9mb3JtYXQoMSk6CisgICAgICAgICAgICAgICAgaWYgKG5vdCBpc19tZW1vcnl2aWV3X2Zvcm1hdChzZm10KSBvcgorICAgICAgICAgICAgICAgICAgICBub3QgaXNfbWVtb3J5dmlld19mb3JtYXQoZGZtdCkpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtc3JjLmNhc3QsIGRmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFszMi8vZHNpemVdKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc19ieXRlX2Zvcm1hdChzZm10KSBhbmQgbm90IGlzX2J5dGVfZm9ybWF0KGRmbXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtc3JjLmNhc3QsIGRmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMzIvL2RzaXplXSkKKworICAgICAgICAjIGludmFsaWQgc2hhcGUKKyAgICAgICAgc2l6ZV9oID0gc3RydWN0LmNhbGNzaXplKCdoJykKKyAgICAgICAgc2l6ZV9kID0gc3RydWN0LmNhbGNzaXplKCdkJykKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMioyKnNpemVfZCkpLCBzaGFwZT1bMiwyLHNpemVfZF0sIGZvcm1hdD0naCcpCisgICAgICAgIG1zcmMgPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1zcmMuY2FzdCwgc2hhcGU9WzIsMixzaXplX2hdLCBmb3JtYXQ9J2QnKQorCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyMCkpLCBzaGFwZT1bMSwyLDMsNCw1XSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgIyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLmNhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5jYXN0LCAxLCAyLCAzKQorCisgICAgICAgICMgaW5jb3JyZWN0IGRlc3QgZm9ybWF0IHR5cGUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLmNhc3QsIHt9KQorCisgICAgICAgICMgaW5jb3JyZWN0IGRlc3QgZm9ybWF0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIlgiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICJAWCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIkBYWSIpCisKKyAgICAgICAgIyBkZXN0IGZvcm1hdCBub3QgaW1wbGVtZW50ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiPUIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICIhTCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIjxQIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiPmwiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICJCSSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgInhCSSIpCisKKyAgICAgICAgIyBzcmMgZm9ybWF0IG5vdCBpbXBsZW1lbnRlZAorICAgICAgICBleCA9IG5kYXJyYXkoWygxLDIpLCAoMyw0KV0sIHNoYXBlPVsyXSwgZm9ybWF0PSJJSSIpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCA4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLnRvbGlzdCkKKworICAgICAgICAjIGluY29ycmVjdCBzaGFwZSB0eXBlCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyMCkpLCBzaGFwZT1bMSwyLDMsNCw1XSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5jYXN0LCAiQiIsIHNoYXBlPXt9KQorCisgICAgICAgICMgaW5jb3JyZWN0IHNoYXBlIGVsZW1lbnRzCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyMCkpLCBzaGFwZT1bMiozKjQqNV0pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtLmNhc3QsICJCIiwgc2hhcGU9WzIqKjY0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiQiIsIHNoYXBlPVstMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIkIiLCBzaGFwZT1bMiwzLDQsNSw2LDcsLTFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICJCIiwgc2hhcGU9WzIsMyw0LDUsNiw3LDBdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uY2FzdCwgIkIiLCBzaGFwZT1bMiwzLDQsNSw2LDcsJ3gnXSkKKworICAgICAgICAjIE4tRCAtPiBOLUQgY2FzdAorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChbOSBmb3IgXyBpbiByYW5nZSgzKjUqNyoxMSldKSwgc2hhcGU9WzMsNSw3LDExXSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5jYXN0LCAiSSIsIHNoYXBlPVsyLDMsNCw1XSkKKworICAgICAgICAjIGNhc3Qgd2l0aCBuZGltID4gNjQKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTI4KSksIHNoYXBlPVsxMjhdLCBmb3JtYXQ9J0knKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAnSScsIFsxXSoxMjgpCisKKyAgICAgICAgIyB2aWV3LT5sZW4gbm90IGEgbXVsdGlwbGUgb2YgaXRlbXNpemUKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QoWzkgZm9yIF8gaW4gcmFuZ2UoMyo1KjcqMTEpXSksIHNoYXBlPVszKjUqNyoxMV0pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uY2FzdCwgIkkiLCBzaGFwZT1bMiwzLDQsNV0pCisKKyAgICAgICAgIyBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplICE9IGJ1ZmZlciBzaXplCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KFs5IGZvciBfIGluIHJhbmdlKDMqNSo3KjExKV0pLCBzaGFwZT1bMyo1KjcqMTFdKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLmNhc3QsICJCIiwgc2hhcGU9WzIsMyw0LDVdKQorCisgICAgICAgICMgcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSBvdmVyZmxvdworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMjgpKSwgc2hhcGU9WzEyOF0sIGZvcm1hdD0nSScpCisgICAgICAgIG0xID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTI4KSksIHNoYXBlPVsxMjhdLCBmb3JtYXQ9J0InKQorICAgICAgICBtMiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIGlmIHN5cy5tYXhzaXplID09IDIqKjYzLTE6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0xLmNhc3QsICdCJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs3LCA3LCA3MywgMTI3LCAzMzcsIDkyNzM3LCA2NDk2NTddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbTEuY2FzdCwgJ0InLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzIqKjIwLCAyKioyMCwgMioqMTAsIDIqKjEwLCAyKiozXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0yLmNhc3QsICdJJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsyKioyMCwgMioqMjAsIDIqKjEwLCAyKioxMCwgMioqMV0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0xLmNhc3QsICdCJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxLCAyMTQ3NDgzNjQ3XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0xLmNhc3QsICdCJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsyKioxMCwgMioqMTAsIDIqKjUsIDIqKjUsIDIqKjFdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbTIuY2FzdCwgJ0knLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzIqKjEwLCAyKioxMCwgMioqNSwgMioqMywgMioqMV0pCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2Nhc3Qoc2VsZik6CisgICAgICAgIGJ5dGVzcGVjID0gKAorICAgICAgICAgICgnQicsIGxhbWJkYSBleDogbGlzdChleC50b2J5dGVzKCkpKSwKKyAgICAgICAgICAoJ2InLCBsYW1iZGEgZXg6IFt4LTI1NiBpZiB4ID4gMTI3IGVsc2UgeCBmb3IgeCBpbiBsaXN0KGV4LnRvYnl0ZXMoKSldKSwKKyAgICAgICAgICAoJ2MnLCBsYW1iZGEgZXg6IFtieXRlcyhjaHIoeCksICdsYXRpbi0xJykgZm9yIHggaW4gbGlzdChleC50b2J5dGVzKCkpXSksCisgICAgICAgICkKKworICAgICAgICBkZWYgaXRlcl9yb3VuZHRyaXAoZXgsIG0sIGl0ZW1zLCBmbXQpOgorICAgICAgICAgICAgc3Jjc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisgICAgICAgICAgICBmb3IgYnl0ZWZtdCwgdG9fYnl0ZWxpc3QgaW4gYnl0ZXNwZWM6CisKKyAgICAgICAgICAgICAgICBtMiA9IG0uY2FzdChieXRlZm10KQorICAgICAgICAgICAgICAgIGxzdCA9IHRvX2J5dGVsaXN0KGV4KQorICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0yLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PWJ5dGVmbXQsIHJlYWRvbmx5PTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT1bMzEqc3Jjc2l6ZV0sIHN0cmlkZXM9KDEsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0LCBjYXN0PVRydWUpCisKKyAgICAgICAgICAgICAgICBtMyA9IG0yLmNhc3QoZm10KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTMsIGV4KQorICAgICAgICAgICAgICAgIGxzdCA9IGV4LnRvbGlzdCgpCisgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkobTMsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1zcmNzaXplLCBmbXQ9Zm10LCByZWFkb25seT0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9WzMxXSwgc3RyaWRlcz0oc3Jjc2l6ZSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QsIGNhc3Q9VHJ1ZSkKKworICAgICAgICAjIGNhc3QgZnJvbSBuZGltID0gMCB0byBuZGltID0gMQorICAgICAgICBzcmNzaXplID0gc3RydWN0LmNhbGNzaXplKCdJJykKKyAgICAgICAgZXggPSBuZGFycmF5KDksIHNoYXBlPVtdLCBmb3JtYXQ9J0knKQorICAgICAgICBkZXN0aXRlbXMsIGRlc3RzaGFwZSA9IGNhc3RfaXRlbXMoZXgsICdCJywgMSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIG0yID0gbS5jYXN0KCdCJykKKyAgICAgICAgc2VsZi52ZXJpZnkobTIsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PSdCJywgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT1kZXN0c2hhcGUsIHN0cmlkZXM9KDEsKSwKKyAgICAgICAgICAgICAgICAgICAgbHN0PWRlc3RpdGVtcywgY2FzdD1UcnVlKQorCisgICAgICAgICMgY2FzdCBmcm9tIG5kaW0gPSAxIHRvIG5kaW0gPSAwCisgICAgICAgIGRlc3RzaXplID0gc3RydWN0LmNhbGNzaXplKCdJJykKKyAgICAgICAgZXggPSBuZGFycmF5KFs5XSpkZXN0c2l6ZSwgc2hhcGU9W2Rlc3RzaXplXSwgZm9ybWF0PSdCJykKKyAgICAgICAgZGVzdGl0ZW1zLCBkZXN0c2hhcGUgPSBjYXN0X2l0ZW1zKGV4LCAnSScsIGRlc3RzaXplLCBzaGFwZT1bXSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIG0yID0gbS5jYXN0KCdJJywgc2hhcGU9W10pCisgICAgICAgIHNlbGYudmVyaWZ5KG0yLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPWRlc3RzaXplLCBmbXQ9J0knLCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICBuZGltPTAsIHNoYXBlPSgpLCBzdHJpZGVzPSgpLAorICAgICAgICAgICAgICAgICAgICBsc3Q9ZGVzdGl0ZW1zLCBjYXN0PVRydWUpCisKKyAgICAgICAgIyBhcnJheS5hcnJheTogcm91bmR0cmlwIHRvL2Zyb20gYnl0ZXMKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQoMzEsICdhcnJheScpOgorICAgICAgICAgICAgZXggPSBhcnJheS5hcnJheShmbXQsIGl0ZW1zKQorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgICAgICBpdGVyX3JvdW5kdHJpcChleCwgbSwgaXRlbXMsIGZtdCkKKworICAgICAgICAjIG5kYXJyYXk6IHJvdW5kdHJpcCB0by9mcm9tIGJ5dGVzCisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KDMxLCAnbWVtb3J5dmlldycpOgorICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bMzFdLCBmb3JtYXQ9Zm10LCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICAgICAgaXRlcl9yb3VuZHRyaXAoZXgsIG0sIGl0ZW1zLCBmbXQpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2Nhc3RfMURfTkQoc2VsZik6CisgICAgICAgICMgQ2FzdCBiZXR3ZWVuIEMtY29udGlndW91cyBidWZmZXJzLiBBdCBsZWFzdCBvbmUgYnVmZmVyIG11c3QKKyAgICAgICAgIyBiZSAxRCwgYXQgbGVhc3Qgb25lIGZvcm1hdCBtdXN0IGJlICdjJywgJ2InIG9yICdCJy4KKyAgICAgICAgZm9yIF90c2hhcGUgaW4gZ2VuY2FzdHNoYXBlcygpOgorICAgICAgICAgICAgZm9yIGNoYXIgaW4gZm10ZGljdFsnQCddOgorICAgICAgICAgICAgICAgIHRmbXQgPSAoJycsICdAJylbcmFuZHJhbmdlKDIpXSArIGNoYXIKKyAgICAgICAgICAgICAgICB0c2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZSh0Zm10KQorICAgICAgICAgICAgICAgIG4gPSBwcm9kKF90c2hhcGUpICogdHNpemUKKyAgICAgICAgICAgICAgICBvYmogPSAnbWVtb3J5dmlldycgaWYgaXNfYnl0ZV9mb3JtYXQodGZtdCkgZWxzZSAnYnl0ZWZtdCcKKyAgICAgICAgICAgICAgICBmb3IgZm10LCBpdGVtcywgXyBpbiBpdGVyX2Zvcm1hdChuLCBvYmopOgorICAgICAgICAgICAgICAgICAgICBzaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKyAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBbbl0gaWYgbiA+IDAgZWxzZSBbXQorICAgICAgICAgICAgICAgICAgICB0c2hhcGUgPSBfdHNoYXBlICsgW3NpemVdCisKKyAgICAgICAgICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgICAgICAgICAgICAgdGl0ZW1zLCB0c2hhcGUgPSBjYXN0X2l0ZW1zKGV4LCB0Zm10LCB0c2l6ZSwgc2hhcGU9dHNoYXBlKQorCisgICAgICAgICAgICAgICAgICAgIGlmIHRpdGVtcyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLmNhc3QsIHRmbXQsIHRzaGFwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGlmIHRpdGVtcyA9PSAnbmFuJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICMgTmFOcyBpbiBsaXN0cyBhcmUgYSByZWNpcGUgZm9yIHRyb3VibGUuCisKKyAgICAgICAgICAgICAgICAgICAgIyAxRCAtPiBORAorICAgICAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkodGl0ZW1zLCBzaGFwZT10c2hhcGUsIGZvcm1hdD10Zm10KQorCisgICAgICAgICAgICAgICAgICAgIG0yID0gbS5jYXN0KHRmbXQsIHNoYXBlPXRzaGFwZSkKKyAgICAgICAgICAgICAgICAgICAgbmRpbSA9IGxlbih0c2hhcGUpCisgICAgICAgICAgICAgICAgICAgIHN0cmlkZXMgPSBuZC5zdHJpZGVzCisgICAgICAgICAgICAgICAgICAgIGxzdCA9IG5kLnRvbGlzdCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0yLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPXRzaXplLCBmbXQ9dGZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT10c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCwgY2FzdD1UcnVlKQorCisgICAgICAgICAgICAgICAgICAgICMgTkQgLT4gMUQKKyAgICAgICAgICAgICAgICAgICAgbTMgPSBtMi5jYXN0KGZtdCkKKyAgICAgICAgICAgICAgICAgICAgbTQgPSBtMi5jYXN0KGZtdCwgc2hhcGU9c2hhcGUpCisgICAgICAgICAgICAgICAgICAgIG5kaW0gPSBsZW4oc2hhcGUpCisgICAgICAgICAgICAgICAgICAgIHN0cmlkZXMgPSBleC5zdHJpZGVzCisgICAgICAgICAgICAgICAgICAgIGxzdCA9IGV4LnRvbGlzdCgpCisKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkobTMsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9c2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0LCBjYXN0PVRydWUpCisKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkobTQsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9c2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0LCBjYXN0PVRydWUpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3RvbGlzdChzZWxmKToKKworICAgICAgICAjIE1vc3QgdG9saXN0KCkgdGVzdHMgYXJlIGluIHNlbGYudmVyaWZ5KCkgZXRjLgorCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgnaCcsIGxpc3QocmFuZ2UoLTYsIDYpKSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIGEudG9saXN0KCkpCisKKyAgICAgICAgYSA9IGFbMjo6M10KKyAgICAgICAgbSA9IG1bMjo6M10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIGEudG9saXN0KCkpCisKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMiozKjUqNyoxMSkpLCBzaGFwZT1bMTEsMiw3LDMsNV0sIGZvcm1hdD0nTCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIGV4LnRvbGlzdCgpKQorCisgICAgICAgIGV4ID0gbmRhcnJheShbKDIsIDUpLCAoNywgMTEpXSwgc2hhcGU9WzJdLCBmb3JtYXQ9J2xoJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0udG9saXN0KQorCisgICAgICAgIGV4ID0gbmRhcnJheShbYicxMjM0NSddLCBzaGFwZT1bMV0sIGZvcm1hdD0icyIpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLnRvbGlzdCkKKworICAgICAgICBleCA9IG5kYXJyYXkoW2IiYSIsYiJiIixiImMiLGIiZCIsYiJlIixiImYiXSwgc2hhcGU9WzIsM10sIGZvcm1hdD0ncycpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLnRvbGlzdCkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfcmVwcihzZWxmKToKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYnl0ZWFycmF5KDkpKQorICAgICAgICByID0gbS5fX3JlcHJfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLnN0YXJ0c3dpdGgoIjxtZW1vcnkiKSkKKworICAgICAgICBtLnJlbGVhc2UoKQorICAgICAgICByID0gbS5fX3JlcHJfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLnN0YXJ0c3dpdGgoIjxyZWxlYXNlZCIpKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19zZXF1ZW5jZShzZWxmKToKKworICAgICAgICBmb3IgZm10IGluICgnZCcsICdmJyk6CisgICAgICAgICAgICBpbmYgPSBmbG9hdCgzZTQwMCkKKyAgICAgICAgICAgIGV4ID0gYXJyYXkuYXJyYXkoZm10LCBbMS4wLCBpbmYsIDMuMF0pCisgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oMS4wLCBtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbig1ZTcwMCwgbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oMy4wLCBtKQorCisgICAgICAgIGV4ID0gbmRhcnJheSg5LjAsIFtdLCBmb3JtYXQ9J2YnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAiOS4wIGluIG0iLCBsb2NhbHMoKSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfaW5kZXgoc2VsZik6CisKKyAgICAgICAgIyBuZGltID0gMAorICAgICAgICBleCA9IG5kYXJyYXkoMTIuNSwgc2hhcGU9W10sIGZvcm1hdD0nZCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bKCldLCAxMi41KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bLi4uXSwgbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWy4uLl0sIGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19nZXRpdGVtX18sIDApCisKKyAgICAgICAgZXggPSBuZGFycmF5KCgxLDIsMyksIHNoYXBlPVtdLCBmb3JtYXQ9J2lpaScpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAoKSkKKworICAgICAgICAjIHJhbmdlCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDcpKSwgc2hhcGU9WzddLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX2dldGl0ZW1fXywgMioqNjQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX2dldGl0ZW1fXywgMi4wKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19nZXRpdGVtX18sIDAuMCkKKworICAgICAgICAjIG91dCBvZiBib3VuZHMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX2dldGl0ZW1fXywgLTgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19nZXRpdGVtX18sIDgpCisKKyAgICAgICAgIyBOb3QgaW1wbGVtZW50ZWQ6IG11bHRpZGltZW5zaW9uYWwgc3ViLXZpZXdzCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLDRdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX2dldGl0ZW1fXywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX3NldGl0ZW1fXywgMCwgOSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX2dldGl0ZW1fXywgMCkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfYXNzaWduKHNlbGYpOgorCisgICAgICAgICMgbmRpbSA9IDAKKyAgICAgICAgZXggPSBuZGFycmF5KDEyLjUsIHNoYXBlPVtdLCBmb3JtYXQ9J2YnLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIG1bKCldID0gMjIuNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bKCldLCAyMi41KQorICAgICAgICBtWy4uLl0gPSAyMy41CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsoKV0sIDIzLjUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgMCwgMjQuNykKKworICAgICAgICAjIHJlYWQtb25seQorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSg3KSksIHNoYXBlPVs3XSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgMiwgMTApCisKKyAgICAgICAgIyByYW5nZQorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSg3KSksIHNoYXBlPVs3XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19zZXRpdGVtX18sIDIqKjY0LCA5KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sIDIuMCwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgMC4wLCAxMSkKKworICAgICAgICAjIG91dCBvZiBib3VuZHMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX3NldGl0ZW1fXywgLTgsIDIwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fc2V0aXRlbV9fLCA4LCAyNSkKKworICAgICAgICAjIHBhY2tfc2luZ2xlKCkgc3VjY2VzczoKKyAgICAgICAgZm9yIGZtdCBpbiBmbXRkaWN0WydAJ106CisgICAgICAgICAgICBpZiBmbXQgPT0gJ2MnIG9yIGZtdCA9PSAnPyc6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bM10sIGZvcm1hdD1mbXQsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgICAgICBpID0gcmFuZHJhbmdlKC0zLCAzKQorICAgICAgICAgICAgbVtpXSA9IDgKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVtpXSwgOCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVtpXSwgZXhbaV0pCisKKyAgICAgICAgZXggPSBuZGFycmF5KFtiJzEnLCBiJzInLCBiJzMnXSwgc2hhcGU9WzNdLCBmb3JtYXQ9J2MnLAorICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBtWzJdID0gYic5JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMl0sIGInOScpCisKKyAgICAgICAgZXggPSBuZGFycmF5KFtUcnVlLCBGYWxzZSwgVHJ1ZV0sIHNoYXBlPVszXSwgZm9ybWF0PSc/JywKKyAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgbVsxXSA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzFdLCBUcnVlKQorCisgICAgICAgICMgcGFja19zaW5nbGUoKSBleGNlcHRpb25zOgorICAgICAgICBuZCA9IG5kYXJyYXkoW2IneCddLCBzaGFwZT1bMV0sIGZvcm1hdD0nYycsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCAxMDApCisKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIwKSksIHNoYXBlPVsxLDIsMyw0LDVdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbTEgPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgIGZvciBmbXQsIF9yYW5nZSBpbiBmbXRkaWN0WydAJ10uaXRlbXMoKToKKyAgICAgICAgICAgIGlmIChmbXQgPT0gJz8nKTogIyBQeU9iamVjdF9Jc1RydWUoKSBhY2NlcHRzIGFueXRoaW5nCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGZtdCA9PSAnYyc6ICMgc3BlY2lhbCBjYXNlIHRlc3RlZCBhYm92ZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBtMiA9IG0xLmNhc3QoZm10KQorICAgICAgICAgICAgbG8sIGhpID0gX3JhbmdlCisgICAgICAgICAgICBpZiBmbXQgPT0gJ2QnIG9yIGZtdCA9PSAnZic6CisgICAgICAgICAgICAgICAgbG8sIGhpID0gLTIqKjEwMjQsIDIqKjEwMjQKKyAgICAgICAgICAgIGlmIGZtdCAhPSAnUCc6ICMgUHlMb25nX0FzVm9pZFB0cigpIGFjY2VwdHMgbmVnYXRpdmUgbnVtYmVycworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0yLl9fc2V0aXRlbV9fLCAwLCBsby0xKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbTIuX19zZXRpdGVtX18sIDAsICJ4eXoiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbTIuX19zZXRpdGVtX18sIDAsIGhpKQorCisgICAgICAgICMgaW52YWxpZCBpdGVtCisgICAgICAgIG0yID0gbTEuY2FzdCgnYycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0yLl9fc2V0aXRlbV9fLCAwLCBiJ1x4ZmZceGZmJykKKworICAgICAgICAjIGZvcm1hdCBub3QgaW1wbGVtZW50ZWQKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMSkpLCBzaGFwZT1bMV0sIGZvcm1hdD0ieEwiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19zZXRpdGVtX18sIDAsIDEpCisKKyAgICAgICAgZXggPSBuZGFycmF5KFtiJzEyMzQ1J10sIHNoYXBlPVsxXSwgZm9ybWF0PSJzIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCAxKQorCisgICAgICAgICMgTm90IGltcGxlbWVudGVkOiBtdWx0aWRpbWVuc2lvbmFsIHN1Yi12aWV3cworICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMyw0XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19zZXRpdGVtX18sIDAsIFsyLCAzXSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfc2xpY2Uoc2VsZik6CisKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzEyXSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgICMgemVybyBzdGVwCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uX19nZXRpdGVtX18sIHNsaWNlKDAsMiwwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5fX3NldGl0ZW1fXywgc2xpY2UoMCwyLDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlYXJyYXkoWzEsMl0pKQorCisgICAgICAgICMgaW52YWxpZCBzbGljZSBrZXkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fZ2V0aXRlbV9fLCAoKSkKKworICAgICAgICAjIG11bHRpZGltZW5zaW9uYWwgc2xpY2VzCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsxMl0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fZ2V0aXRlbV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoc2xpY2UoMCwyLDEpLCBzbGljZSgwLDIsMSkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fc2V0aXRlbV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoc2xpY2UoMCwyLDEpLCBzbGljZSgwLDIsMSkpLCBieXRlYXJyYXkoWzEsMl0pKQorCisgICAgICAgICMgaW52YWxpZCBzbGljZSB0dXBsZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19nZXRpdGVtX18sIChzbGljZSgwLDIsMSksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fc2V0aXRlbV9fLCAoc2xpY2UoMCwyLDEpLCB7fSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVhcnJheShbMSwyXSkpCisKKyAgICAgICAgIyBydmFsdWUgaXMgbm90IGFuIGV4cG9ydGVyCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgc2xpY2UoMCwxLDEpLCBbMV0pCisKKyAgICAgICAgIyBub24tY29udGlndW91cyBzbGljZSBhc3NpZ25tZW50CisgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgIGV4MSA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMTJdLCBzdHJpZGVzPVstMV0sIG9mZnNldD0xMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfV1JJVEFCTEV8ZmxhZ3MpCisgICAgICAgICAgICBleDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMjQpKSwgc2hhcGU9WzEyXSwgc3RyaWRlcz1bMl0sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgbTEgPSBtZW1vcnl2aWV3KGV4MSkKKyAgICAgICAgICAgIG0yID0gbWVtb3J5dmlldyhleDIpCisKKyAgICAgICAgICAgIGV4MVsyOjVdID0gZXgxWzI6NV0KKyAgICAgICAgICAgIG0xWzI6NV0gPSBtMlsyOjVdCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEsIGV4MSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIsIGV4MikKKworICAgICAgICAgICAgZXgxWzE6M11bOjotMV0gPSBleDJbMDoyXVs6OjFdCisgICAgICAgICAgICBtMVsxOjNdWzo6LTFdID0gbTJbMDoyXVs6OjFdCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEsIGV4MSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIsIGV4MikKKworICAgICAgICAgICAgZXgxWzQ6MTotMl1bOjotMV0gPSBleDFbMTo0OjJdWzo6MV0KKyAgICAgICAgICAgIG0xWzQ6MTotMl1bOjotMV0gPSBtMVsxOjQ6Ml1bOjoxXQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLCBleDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLCBleDIpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2FycmF5KHNlbGYpOgorCisgICAgICAgIGRlZiBjbXB0ZXN0KHRlc3RjYXNlLCBhLCBiLCBtLCBzaW5nbGVpdGVtKToKKyAgICAgICAgICAgIGZvciBpLCBfIGluIGVudW1lcmF0ZShhKToKKyAgICAgICAgICAgICAgICBhaSA9IGFbaV0KKyAgICAgICAgICAgICAgICBtaSA9IG1baV0KKyAgICAgICAgICAgICAgICB0ZXN0Y2FzZS5hc3NlcnRFcXVhbChhaSwgbWkpCisgICAgICAgICAgICAgICAgYVtpXSA9IHNpbmdsZWl0ZW0KKyAgICAgICAgICAgICAgICBpZiBzaW5nbGVpdGVtICE9IGFpOgorICAgICAgICAgICAgICAgICAgICB0ZXN0Y2FzZS5hc3NlcnROb3RFcXVhbChhLCBtKQorICAgICAgICAgICAgICAgICAgICB0ZXN0Y2FzZS5hc3NlcnROb3RFcXVhbChhLCBiKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRlc3RjYXNlLmFzc2VydEVxdWFsKGEsIG0pCisgICAgICAgICAgICAgICAgICAgIHRlc3RjYXNlLmFzc2VydEVxdWFsKGEsIGIpCisgICAgICAgICAgICAgICAgbVtpXSA9IHNpbmdsZWl0ZW0KKyAgICAgICAgICAgICAgICB0ZXN0Y2FzZS5hc3NlcnRFcXVhbChhLCBtKQorICAgICAgICAgICAgICAgIHRlc3RjYXNlLmFzc2VydEVxdWFsKGIsIG0pCisgICAgICAgICAgICAgICAgYVtpXSA9IGFpCisgICAgICAgICAgICAgICAgbVtpXSA9IG1pCisKKyAgICAgICAgZm9yIG4gaW4gcmFuZ2UoMSwgNSk6CisgICAgICAgICAgICBmb3IgZm10LCBpdGVtcywgc2luZ2xlaXRlbSBpbiBpdGVyX2Zvcm1hdChuLCAnYXJyYXknKToKKyAgICAgICAgICAgICAgICBmb3IgbHNsaWNlIGluIGdlbnNsaWNlcyhuKToKKyAgICAgICAgICAgICAgICAgICAgZm9yIHJzbGljZSBpbiBnZW5zbGljZXMobik6CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBhcnJheS5hcnJheShmbXQsIGl0ZW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGFycmF5LmFycmF5KGZtdCwgaXRlbXMpCisgICAgICAgICAgICAgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhiKQorCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIGEpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIGEudG9saXN0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9ieXRlcygpLCBhLnRvYnl0ZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0pLCBsZW4oYSkpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNtcHRlc3Qoc2VsZiwgYSwgYiwgbSwgc2luZ2xlaXRlbSkKKworICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfZXJyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZV9yZXNpemUgPSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWwgPSBhW2xzbGljZV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhciA9IGFbcnNsaWNlXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbbHNsaWNlXSA9IGFbcnNsaWNlXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVfcmVzaXplID0gbGVuKGFsKSAhPSBsZW4oYXIpCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVtsc2xpY2VdID0gbVtyc2xpY2VdCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBoYXZlX3Jlc2l6ZTogIyBtZW1vcnl2aWV3IGNhbm5vdCBjaGFuZ2Ugc2hhcGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1fZXJyLCBWYWx1ZUVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBtX2VyciBvciBhcnJheV9lcnI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtX2VyciwgYXJyYXlfZXJyKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIGEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBhLnRvbGlzdCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2J5dGVzKCksIGEudG9ieXRlcygpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtcHRlc3Qoc2VsZiwgYSwgYiwgbSwgc2luZ2xlaXRlbSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9zcGVjaWFsX2Nhc2VzKHNlbGYpOgorCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgnTCcsIFsxLCAyLCAzXSkKKyAgICAgICAgYiA9IGFycmF5LmFycmF5KCdMJywgWzEsIDIsIDddKQorCisgICAgICAgICMgT3JkZXJpbmcgY29tcGFyaXNvbnMgcmFpc2U6CisgICAgICAgIHYgPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KGIpCisgICAgICAgIGZvciBhdHRyIGluICgnX19sdF9fJywgJ19fbGVfXycsICdfX2d0X18nLCAnX19nZV9fJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGdldGF0dHIodiwgYXR0cikodyksIE5vdEltcGxlbWVudGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhnZXRhdHRyKGEsIGF0dHIpKHYpLCBOb3RJbXBsZW1lbnRlZCkKKworICAgICAgICAjIFJlbGVhc2VkIHZpZXdzIGNvbXBhcmUgZXF1YWwgdG8gdGhlbXNlbHZlczoKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgdi5yZWxlYXNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB2KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIGEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYSwgdikKKworICAgICAgICB2ID0gbWVtb3J5dmlldyhhKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhhKQorICAgICAgICB3LnJlbGVhc2UoKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgdikKKworICAgICAgICAjIE9wZXJhbmQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBidWZmZXIgcHJvdG9jb2w6CisgICAgICAgIHYgPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgWzEsIDIsIDNdKQorCisgICAgICAgICMgTmFOcworICAgICAgICBuZCA9IG5kYXJyYXkoWygwLCAwKV0sIHNoYXBlPVsxXSwgZm9ybWF0PSdsIHggZCB4JywgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG5kWzBdID0gKC0xLCBmbG9hdCgnbmFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobWVtb3J5dmlldyhuZCksIG5kKQorCisgICAgICAgICMgRGVwZW5kcyBvbiBpc3N1ZSAjMTU2MjU6IHRoZSBzdHJ1Y3QgbW9kdWxlIGRvZXMgbm90IHVuZGVyc3RhbmQgJ3UnLgorICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ3UnLCAneHl6JykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhLCB2KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIGEpCisKKyAgICAgICAgIyBTb21lIGN0eXBlcyBmb3JtYXQgc3RyaW5ncyBhcmUgdW5rbm93biB0byB0aGUgc3RydWN0IG1vZHVsZS4KKyAgICAgICAgaWYgY3R5cGVzOgorICAgICAgICAgICAgIyBmb3JtYXQ6ICJUez5sOng6Pmw6eTp9IgorICAgICAgICAgICAgY2xhc3MgQkVQb2ludChjdHlwZXMuQmlnRW5kaWFuU3RydWN0dXJlKToKKyAgICAgICAgICAgICAgICBfZmllbGRzXyA9IFsoIngiLCBjdHlwZXMuY19sb25nKSwgKCJ5IiwgY3R5cGVzLmNfbG9uZyldCisgICAgICAgICAgICBwb2ludCA9IEJFUG9pbnQoMTAwLCAyMDApCisgICAgICAgICAgICBhID0gbWVtb3J5dmlldyhwb2ludCkKKyAgICAgICAgICAgIGIgPSBtZW1vcnl2aWV3KHBvaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhLCBiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhLCBwb2ludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocG9pbnQsIGEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBhLnRvbGlzdCkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9uZGltX3plcm8oc2VsZik6CisKKyAgICAgICAgbmQxID0gbmRhcnJheSgxNzI5LCBzaGFwZT1bXSwgZm9ybWF0PSdATCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoMTcyOSwgc2hhcGU9W10sIGZvcm1hdD0nTCcsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIHYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kMiwgdikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQxLCB3KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uodi5fX25lX18odykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uody5fX25lX18odikpCisKKyAgICAgICAgd1soKV0gPSAxNzI4CisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCB2KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChuZDIsIHYpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG5kMSwgdykKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHYuX19lcV9fKHcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHcuX19lcV9fKHYpKQorCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsxMl0sIGZsYWdzPU5EX1dSSVRBQkxFfE5EX1BJTCkKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzEyXSwgZmxhZ3M9TkRfV1JJVEFCTEV8TkRfUElMKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICBtWzldID0gMTAwCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobSwgbmQpCisKKyAgICAgICAgIyBzdHJ1Y3QgbW9kdWxlOiBlcXVhbAorICAgICAgICBuZDEgPSBuZGFycmF5KCgxNzI5LCAxLjIsIGInMTIzNDUnKSwgc2hhcGU9W10sIGZvcm1hdD0nTGY1cycpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoKDE3MjksIDEuMiwgYicxMjM0NScpLCBzaGFwZT1bXSwgZm9ybWF0PSdoZjVzJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCB2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZDIsIHYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kMSwgdykKKworICAgICAgICAjIHN0cnVjdCBtb2R1bGU6IG5vdCBlcXVhbAorICAgICAgICBuZDEgPSBuZGFycmF5KCgxNzI5LCAxLjIsIGInMTIzNDUnKSwgc2hhcGU9W10sIGZvcm1hdD0nTGY1cycpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoKC0xNzI5LCAxLjIsIGInMTIzNDUnKSwgc2hhcGU9W10sIGZvcm1hdD0naGY1cycsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgdikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobmQyLCB2KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChuZDEsIHcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9uZGltX29uZShzZWxmKToKKworICAgICAgICAjIGNvbnRpZ3VvdXMKKyAgICAgICAgbmQxID0gbmRhcnJheShbLTUyOSwgNTc2LCAtNjI1LCA2NzYsIC03MjldLCBzaGFwZT1bNV0sIGZvcm1hdD0nQGgnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFstNTI5LCA1NzYsIC02MjUsIDY3NiwgNzI5XSwgc2hhcGU9WzVdLCBmb3JtYXQ9J0BoJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIGNvbnRpZ3VvdXMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbLTUyOSwgNTc2LCAtNjI1LCA2NzYsIC03MjldLCBzaGFwZT1bNV0sIGZvcm1hdD0nPGknKQorICAgICAgICBuZDIgPSBuZGFycmF5KFstNTI5LCA1NzYsIC02MjUsIDY3NiwgNzI5XSwgc2hhcGU9WzVdLCBmb3JtYXQ9Jz5oJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIG5vbi1jb250aWd1b3VzCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWy01MjksIC02MjUsIC03MjldLCBzaGFwZT1bM10sIGZvcm1hdD0nQGgnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFstNTI5LCA1NzYsIC02MjUsIDY3NiwgLTcyOV0sIHNoYXBlPVs1XSwgZm9ybWF0PSdAaCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyWzo6Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod1s6OjJdLCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgd1s6OjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZbOjotMV0sIHdbOjotMl0pCisKKyAgICAgICAgIyBub24tY29udGlndW91cywgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KFstNTI5LCAtNjI1LCAtNzI5XSwgc2hhcGU9WzNdLCBmb3JtYXQ9JyFoJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbLTUyOSwgNTc2LCAtNjI1LCA2NzYsIC03MjldLCBzaGFwZT1bNV0sIGZvcm1hdD0nPGwnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMls6OjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdbOjoyXSwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHdbOjoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Wzo6LTFdLCB3Wzo6LTJdKQorCisgICAgICAgICMgbm9uLWNvbnRpZ3VvdXMsIHN1Ym9mZnNldHMKKyAgICAgICAgbmQxID0gbmRhcnJheShbLTUyOSwgLTYyNSwgLTcyOV0sIHNoYXBlPVszXSwgZm9ybWF0PSdAaCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWy01MjksIDU3NiwgLTYyNSwgNjc2LCAtNzI5XSwgc2hhcGU9WzVdLCBmb3JtYXQ9J0BoJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9QSUwpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyWzo6Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod1s6OjJdLCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgd1s6OjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZbOjotMV0sIHdbOjotMl0pCisKKyAgICAgICAgIyBub24tY29udGlndW91cywgc3Vib2Zmc2V0cywgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KFstNTI5LCAtNjI1LCAtNzI5XSwgc2hhcGU9WzNdLCBmb3JtYXQ9J2ggIDBjJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbLTUyOSwgNTc2LCAtNjI1LCA2NzYsIC03MjldLCBzaGFwZT1bNV0sIGZvcm1hdD0nPiAgaCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfUElMKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMls6OjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdbOjoyXSwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHdbOjoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Wzo6LTFdLCB3Wzo6LTJdKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX3plcm9fc2hhcGUoc2VsZik6CisKKyAgICAgICAgIyB6ZXJvcyBpbiBzaGFwZQorICAgICAgICBuZDEgPSBuZGFycmF5KFs5MDAsIDk2MV0sIHNoYXBlPVswXSwgZm9ybWF0PSdAaCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWy05MDAsIC05NjFdLCBzaGFwZT1bMF0sIGZvcm1hdD0nQGgnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgICAgICMgemVyb3MgaW4gc2hhcGUsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbOTAwLCA5NjFdLCBzaGFwZT1bMF0sIGZvcm1hdD0nPSBoMGMnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFstOTAwLCAtOTYxXSwgc2hhcGU9WzBdLCBmb3JtYXQ9J0AgICBpJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV96ZXJvX3N0cmlkZXMoc2VsZik6CisKKyAgICAgICAgIyB6ZXJvIHN0cmlkZXMKKyAgICAgICAgbmQxID0gbmRhcnJheShbOTAwLCA5MDAsIDkwMCwgOTAwXSwgc2hhcGU9WzRdLCBmb3JtYXQ9J0BMJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbOTAwXSwgc2hhcGU9WzRdLCBzdHJpZGVzPVswXSwgZm9ybWF0PSdMJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgICAgICAjIHplcm8gc3RyaWRlcywgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KFsoOTAwLCA5MDApXSo0LCBzaGFwZT1bNF0sIGZvcm1hdD0nQCBMaScpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWyg5MDAsIDkwMCldLCBzaGFwZT1bNF0sIHN0cmlkZXM9WzBdLCBmb3JtYXQ9JyFMICBoJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9yYW5kb21fZm9ybWF0cyhzZWxmKToKKworICAgICAgICAjIHJhbmRvbSBzaW5nbGUgY2hhcmFjdGVyIG5hdGl2ZSBmb3JtYXRzCisgICAgICAgIG4gPSAxMAorICAgICAgICBmb3IgY2hhciBpbiBmbXRkaWN0WydAbSddOgorICAgICAgICAgICAgZm10LCBpdGVtcywgc2luZ2xlaXRlbSA9IHJhbmRpdGVtcyhuLCAnbWVtb3J5dmlldycsICdAJywgY2hhcikKKyAgICAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVtuXSwgZm9ybWF0PWZtdCwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKworICAgICAgICAgICAgICAgIG5kID0gbmRbOjotM10KKyAgICAgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorCisgICAgICAgICMgcmFuZG9tIGZvcm1hdHMKKyAgICAgICAgbiA9IDEwCisgICAgICAgIGZvciBfIGluIHJhbmdlKDEwMCk6CisgICAgICAgICAgICBmbXQsIGl0ZW1zLCBzaW5nbGVpdGVtID0gcmFuZGl0ZW1zKG4pCisgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bbl0sIGZvcm1hdD1mbXQsIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisKKyAgICAgICAgICAgICAgICBuZCA9IG5kWzo6LTNdCisgICAgICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9tdWx0aWRpbV9jKHNlbGYpOgorCisgICAgICAgICMgQy1jb250aWd1b3VzLCBkaWZmZXJlbnQgdmFsdWVzCisgICAgICAgIG5kMSA9IG5kYXJyYXkobGlzdChyYW5nZSgtMTUsIDE1KSksIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdAaCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgwLCAzMCkpLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nQGgnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgQy1jb250aWd1b3VzLCBkaWZmZXJlbnQgdmFsdWVzLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWygwLCAxLCAyKV0qMzAsIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSc9ZiBxIHh4TCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWygtMS4yLCAxLCAyKV0qMzAsIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSc8IGYgMlEnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgQy1jb250aWd1b3VzLCBkaWZmZXJlbnQgc2hhcGUKKyAgICAgICAgbmQxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVsyLCAzLCA1XSwgZm9ybWF0PSdMJykKKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdMJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIEMtY29udGlndW91cywgZGlmZmVyZW50IHNoYXBlLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWygwLCAxLCAyKV0qMjEsIHNoYXBlPVszLCA3XSwgZm9ybWF0PSchIGIgQiB4TCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWygwLCAxLCAyKV0qMjEsIHNoYXBlPVs3LCAzXSwgZm9ybWF0PSc9IFF4IGwgeHhMJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIEMtY29udGlndW91cywgZGlmZmVyZW50IGZvcm1hdCwgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzIsIDMsIDVdLCBmb3JtYXQ9J0wnKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzIsIDMsIDVdLCBmb3JtYXQ9J2wnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX211bHRpZGltX2ZvcnRyYW4oc2VsZik6CisKKyAgICAgICAgIyBGb3J0cmFuLWNvbnRpZ3VvdXMsIGRpZmZlcmVudCB2YWx1ZXMKKyAgICAgICAgbmQxID0gbmRhcnJheShsaXN0KHJhbmdlKC0xNSwgMTUpKSwgc2hhcGU9WzUsIDIsIDNdLCBmb3JtYXQ9J0BoJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMCwgMzApKSwgc2hhcGU9WzUsIDIsIDNdLCBmb3JtYXQ9J0BoJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgRm9ydHJhbi1jb250aWd1b3VzLCBkaWZmZXJlbnQgdmFsdWVzLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWygyKio2NC0xLCAtMSldKjYsIHNoYXBlPVsyLCAzXSwgZm9ybWF0PSc9UXEnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWygtMSwgMioqNjQtMSldKjYsIHNoYXBlPVsyLCAzXSwgZm9ybWF0PSc9cVEnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBGb3J0cmFuLWNvbnRpZ3VvdXMsIGRpZmZlcmVudCBzaGFwZQorICAgICAgICBuZDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoLTE1LCAxNSkpLCBzaGFwZT1bMiwgMywgNV0sIGZvcm1hdD0nbCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKC0xNSwgMTUpKSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2wnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBGb3J0cmFuLWNvbnRpZ3VvdXMsIGRpZmZlcmVudCBzaGFwZSwgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoLTE1LCAxNSkpLCBzaGFwZT1bMiwgMywgNV0sIGZvcm1hdD0nMGxsJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoLTE1LCAxNSkpLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nbCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIEZvcnRyYW4tY29udGlndW91cywgZGlmZmVyZW50IGZvcm1hdCwgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzUsIDIsIDNdLCBmb3JtYXQ9J0BoJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzUsIDIsIDNdLCBmb3JtYXQ9J0BiJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX211bHRpZGltX21peGVkKHNlbGYpOgorCisgICAgICAgICMgbWl4ZWQgQy9Gb3J0cmFuIGNvbnRpZ3VvdXMKKyAgICAgICAgbHN0MSA9IGxpc3QocmFuZ2UoLTE1LCAxNSkpCisgICAgICAgIGxzdDIgPSB0cmFuc3Bvc2UobHN0MSwgWzMsIDIsIDVdKQorICAgICAgICBuZDEgPSBuZGFycmF5KGxzdDEsIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdAbCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobHN0Miwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2wnLCBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgICAgICAjIG1peGVkIEMvRm9ydHJhbiBjb250aWd1b3VzLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIGxzdDEgPSBbKC0zLjMsIC0yMiwgYid4JyldKjMwCisgICAgICAgIGxzdDFbNV0gPSAoLTIuMiwgLTIyLCBiJ3gnKQorICAgICAgICBsc3QyID0gdHJhbnNwb3NlKGxzdDEsIFszLCAyLCA1XSkKKyAgICAgICAgbmQxID0gbmRhcnJheShsc3QxLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nZCBiIGMnKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxzdDIsIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdkIGggYycsIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgICAgICMgZGlmZmVyZW50IHZhbHVlcywgbm9uLWNvbnRpZ3VvdXMKKyAgICAgICAgZXgxID0gbmRhcnJheShsaXN0KHJhbmdlKDQwKSksIHNoYXBlPVs1LCA4XSwgZm9ybWF0PSdASScpCisgICAgICAgIG5kMSA9IGV4MVszOjE6LTEsIDo6LTJdCisgICAgICAgIGV4MiA9IG5kYXJyYXkobGlzdChyYW5nZSg0MCkpLCBzaGFwZT1bNSwgOF0sIGZvcm1hdD0nSScpCisgICAgICAgIG5kMiA9IGV4MlsxOjM6MSwgOjotMl0KKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIHNhbWUgdmFsdWVzLCBub24tY29udGlndW91cywgc3RydWN0IG1vZHVsZQorICAgICAgICBleDEgPSBuZGFycmF5KFsoMioqMzEtMSwgLTIqKjMxKV0qMjIsIHNoYXBlPVsxMSwgMl0sIGZvcm1hdD0nPWlpJykKKyAgICAgICAgbmQxID0gZXgxWzM6MTotMSwgOjotMl0KKyAgICAgICAgZXgyID0gbmRhcnJheShbKDIqKjMxLTEsIC0yKiozMSldKjIyLCBzaGFwZT1bMTEsIDJdLCBmb3JtYXQ9Jz5paScpCisgICAgICAgIG5kMiA9IGV4MlsxOjM6MSwgOjotMl0KKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgICAgICAjIGRpZmZlcmVudCBzaGFwZQorICAgICAgICBleDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzIsIDMsIDVdLCBmb3JtYXQ9J2InKQorICAgICAgICBuZDEgPSBleDFbMTozOiwgOjotMl0KKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdiJykKKyAgICAgICAgbmQyID0gZXgyWzE6MzosIDo6LTJdCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBkaWZmZXJlbnQgc2hhcGUsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgZXgxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVsyLCAzLCA1XSwgZm9ybWF0PSdCJykKKyAgICAgICAgbmQxID0gZXgxWzE6MzosIDo6LTJdCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nYicpCisgICAgICAgIG5kMiA9IGV4MlsxOjM6LCA6Oi0yXQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgZGlmZmVyZW50IGZvcm1hdCwgc3RydWN0IG1vZHVsZQorICAgICAgICBleDEgPSBuZGFycmF5KFsoMiwgYicxMjMnKV0qMzAsIHNoYXBlPVs1LCAzLCAyXSwgZm9ybWF0PSdiM3MnKQorICAgICAgICBuZDEgPSBleDFbMTozOiwgOjotMl0KKyAgICAgICAgbmQyID0gbmRhcnJheShbKDIsIGInMTIzJyldKjMwLCBzaGFwZT1bNSwgMywgMl0sIGZvcm1hdD0naTNzJykKKyAgICAgICAgbmQyID0gZXgyWzE6MzosIDo6LTJdCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfbXVsdGlkaW1femVyb19zaGFwZShzZWxmKToKKworICAgICAgICAjIHplcm9zIGluIHNoYXBlCisgICAgICAgIG5kMSA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMCwgMywgMl0sIGZvcm1hdD0naScpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bNSwgMCwgMl0sIGZvcm1hdD0nQGknKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgemVyb3MgaW4gc2hhcGUsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVswLCAzLCAyXSwgZm9ybWF0PSdpJykKKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVs1LCAwLCAyXSwgZm9ybWF0PSdAaScpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfbXVsdGlkaW1femVyb19zdHJpZGVzKHNlbGYpOgorCisgICAgICAgICMgemVybyBzdHJpZGVzCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWzkwMF0qODAsIHNoYXBlPVs0LCA1LCA0XSwgZm9ybWF0PSdATCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWzkwMF0sIHNoYXBlPVs0LCA1LCA0XSwgc3RyaWRlcz1bMCwgMCwgMF0sIGZvcm1hdD0nTCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi50b2xpc3QoKSwgdy50b2xpc3QoKSkKKworICAgICAgICAjIHplcm8gc3RyaWRlcywgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KFsoMSwgMildKjEwLCBzaGFwZT1bMiwgNV0sIGZvcm1hdD0nPWxRJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbKDEsIDIpXSwgc2hhcGU9WzIsIDVdLCBzdHJpZGVzPVswLCAwXSwgZm9ybWF0PSc8bFEnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX211bHRpZGltX3N1Ym9mZnNldHMoc2VsZik6CisKKyAgICAgICAgIyBzdWJvZmZzZXRzCisgICAgICAgIGV4MSA9IG5kYXJyYXkobGlzdChyYW5nZSg0MCkpLCBzaGFwZT1bNSwgOF0sIGZvcm1hdD0nQEknKQorICAgICAgICBuZDEgPSBleDFbMzoxOi0xLCA6Oi0yXQorICAgICAgICBleDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoNDApKSwgc2hhcGU9WzUsIDhdLCBmb3JtYXQ9J0knLCBmbGFncz1ORF9QSUwpCisgICAgICAgIG5kMiA9IGV4MlsxOjM6MSwgOjotMl0KKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIHN1Ym9mZnNldHMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgZXgxID0gbmRhcnJheShbKDIqKjY0LTEsIC0xKV0qNDAsIHNoYXBlPVs1LCA4XSwgZm9ybWF0PSc9UXEnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBleDFbMl1bN10gPSAoMSwgLTIpCisgICAgICAgIG5kMSA9IGV4MVszOjE6LTEsIDo6LTJdCisKKyAgICAgICAgZXgyID0gbmRhcnJheShbKDIqKjY0LTEsIC0xKV0qNDAsIHNoYXBlPVs1LCA4XSwgZm9ybWF0PSc+UXEnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1BJTHxORF9XUklUQUJMRSkKKyAgICAgICAgZXgyWzJdWzddID0gKDEsIC0yKQorICAgICAgICBuZDIgPSBleDJbMTozOjEsIDo6LTJdCisKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgICAgICAjIHN1Ym9mZnNldHMsIGRpZmZlcmVudCBzaGFwZQorICAgICAgICBleDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzIsIDMsIDVdLCBmb3JtYXQ9J2InLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgbmQxID0gZXgxWzE6MzosIDo6LTJdCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nYicpCisgICAgICAgIG5kMiA9IGV4MlsxOjM6LCA6Oi0yXQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgc3Vib2Zmc2V0cywgZGlmZmVyZW50IHNoYXBlLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIGV4MSA9IG5kYXJyYXkoWygyKio4LTEsIC0xKV0qNDAsIHNoYXBlPVsyLCAzLCA1XSwgZm9ybWF0PSdCYicsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfUElMfE5EX1dSSVRBQkxFKQorICAgICAgICBuZDEgPSBleDFbMToyOiwgOjotMl0KKworICAgICAgICBleDIgPSBuZGFycmF5KFsoMioqOC0xLCAtMSldKjQwLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nQmInKQorICAgICAgICBuZDIgPSBleDJbMToyOiwgOjotMl0KKworICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgc3Vib2Zmc2V0cywgZGlmZmVyZW50IGZvcm1hdAorICAgICAgICBleDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzUsIDMsIDJdLCBmb3JtYXQ9J2knLCBmbGFncz1ORF9QSUwpCisgICAgICAgIG5kMSA9IGV4MVsxOjM6LCA6Oi0yXQorICAgICAgICBleDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzUsIDMsIDJdLCBmb3JtYXQ9J0BJJywgZmxhZ3M9TkRfUElMKQorICAgICAgICBuZDIgPSBleDJbMTozOiwgOjotMl0KKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgICAgICAjIHN1Ym9mZnNldHMsIGRpZmZlcmVudCBmb3JtYXQsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgZXgxID0gbmRhcnJheShbKGInaGVsbG8nLCBiJycsIDEpXSoyNywgc2hhcGU9WzMsIDMsIDNdLCBmb3JtYXQ9JzVzMHNQJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9QSUx8TkRfV1JJVEFCTEUpCisgICAgICAgIGV4MVsxXVsyXVsyXSA9IChiJ3N1c2hpJywgYicnLCAxKQorICAgICAgICBuZDEgPSBleDFbMTozOiwgOjotMl0KKworICAgICAgICBleDIgPSBuZGFycmF5KFsoYidoZWxsbycsIGInJywgMSldKjI3LCBzaGFwZT1bMywgMywgM10sIGZvcm1hdD0nNXMwc1AnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1BJTHxORF9XUklUQUJMRSkKKyAgICAgICAgZXgxWzFdWzJdWzJdID0gKGInc3VzaGknLCBiJycsIDEpCisgICAgICAgIG5kMiA9IGV4MlsxOjM6LCA6Oi0yXQorCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBpbml0aWFsaXplIG1peGVkIEMvRm9ydHJhbiArIHN1Ym9mZnNldHMKKyAgICAgICAgbHN0MSA9IGxpc3QocmFuZ2UoLTE1LCAxNSkpCisgICAgICAgIGxzdDIgPSB0cmFuc3Bvc2UobHN0MSwgWzMsIDIsIDVdKQorICAgICAgICBuZDEgPSBuZGFycmF5KGxzdDEsIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdAbCcsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgbmQyID0gbmRhcnJheShsc3QyLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nbCcsIGZsYWdzPU5EX0ZPUlRSQU58TkRfUElMKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgICAgICAjIGluaXRpYWxpemUgbWl4ZWQgQy9Gb3J0cmFuICsgc3Vib2Zmc2V0cywgc3RydWN0IG1vZHVsZQorICAgICAgICBsc3QxID0gWyhiJ3Nhc2hpbWknLCBiJ3NsaWNlZCcsIDIwLjA1KV0qMzAKKyAgICAgICAgbHN0MVsxMV0gPSAoYidyYW1lbicsIGInc3BpY3knLCA5LjQ1KQorICAgICAgICBsc3QyID0gdHJhbnNwb3NlKGxzdDEsIFszLCAyLCA1XSkKKworICAgICAgICBuZDEgPSBuZGFycmF5KGxzdDEsIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSc8IDEwcCA5cCBkJywgZmxhZ3M9TkRfUElMKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxzdDIsIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSc+IDEwcCA5cCBkJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOfE5EX1BJTCkKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfbm90X2VxdWFsKHNlbGYpOgorCisgICAgICAgICMgaXRlbXMgbm90IGVxdWFsCisgICAgICAgIGZvciBieXRlb3JkZXIgaW4gWyc9JywgJzwnLCAnPicsICchJ106CisgICAgICAgICAgICB4ID0gbmRhcnJheShbMioqNjNdKjEyMCwgc2hhcGU9WzMsNSwyLDIsMl0sIGZvcm1hdD1ieXRlb3JkZXIrJ1EnKQorICAgICAgICAgICAgeSA9IG5kYXJyYXkoWzIqKjYzXSoxMjAsIHNoYXBlPVszLDUsMiwyLDJdLCBmb3JtYXQ9Ynl0ZW9yZGVyKydRJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFfE5EX0ZPUlRSQU4pCisgICAgICAgICAgICB5WzJdWzNdWzFdWzFdWzFdID0gMQorICAgICAgICAgICAgYSA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgICAgIGIgPSBtZW1vcnl2aWV3KHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGEsIGIpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGEsIHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGIsIHgpCisKKyAgICAgICAgICAgIHggPSBuZGFycmF5KFsoMioqNjMsIDIqKjMxLCAyKioxNSldKjEyMCwgc2hhcGU9WzMsNSwyLDIsMl0sCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9Ynl0ZW9yZGVyKydRTEgnKQorICAgICAgICAgICAgeSA9IG5kYXJyYXkoWygyKio2MywgMioqMzEsIDIqKjE1KV0qMTIwLCBzaGFwZT1bMyw1LDIsMiwyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1ieXRlb3JkZXIrJ1FMSCcsIGZsYWdzPU5EX1dSSVRBQkxFfE5EX0ZPUlRSQU4pCisgICAgICAgICAgICB5WzJdWzNdWzFdWzFdWzFdID0gKDEsIDEsIDEpCisgICAgICAgICAgICBhID0gbWVtb3J5dmlldyh4KQorICAgICAgICAgICAgYiA9IG1lbW9yeXZpZXcoeSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgeSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYSwgYikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYSwgeSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYiwgeCkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY2hlY2tfcmVsZWFzZWQoc2VsZik6CisKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCdkJywgWzEuMSwgMi4yLCAzLjNdKQorCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIG0ucmVsZWFzZSgpCisKKyAgICAgICAgIyBQeU1lbW9yeVZpZXdfRnJvbU9iamVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1lbW9yeXZpZXcsIG0pCisgICAgICAgICMgbWVtb3J5dmlldy5jYXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAnYycpCisgICAgICAgICMgZ2V0YnVmZmVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmRhcnJheSwgbSkKKyAgICAgICAgIyBtZW1vcnl2aWV3LnRvbGlzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0udG9saXN0KQorICAgICAgICAjIG1lbW9yeXZpZXcudG9ieXRlcygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0udG9ieXRlcykKKyAgICAgICAgIyBzZXF1ZW5jZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBldmFsLCAiMS4wIGluIG0iLCBsb2NhbHMoKSkKKyAgICAgICAgIyBzdWJzY3JpcHQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5fX2dldGl0ZW1fXywgMCkKKyAgICAgICAgIyBhc3NpZ25tZW50CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uX19zZXRpdGVtX18sIDAsIDEpCisKKyAgICAgICAgZm9yIGF0dHIgaW4gKCdvYmonLCAnbmJ5dGVzJywgJ3JlYWRvbmx5JywgJ2l0ZW1zaXplJywgJ2Zvcm1hdCcsICduZGltJywKKyAgICAgICAgICAgICAgICAgICAgICdzaGFwZScsICdzdHJpZGVzJywgJ3N1Ym9mZnNldHMnLCAnY19jb250aWd1b3VzJywKKyAgICAgICAgICAgICAgICAgICAgICdmX2NvbnRpZ3VvdXMnLCAnY29udGlndW91cycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5fX2dldGF0dHJpYnV0ZV9fLCBhdHRyKQorCisgICAgICAgICMgcmljaGNvbXBhcmUKKyAgICAgICAgYiA9IGFycmF5LmFycmF5KCdkJywgWzEuMSwgMi4yLCAzLjNdKQorICAgICAgICBtMSA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgbTIgPSBtZW1vcnl2aWV3KGIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMSwgbTIpCisgICAgICAgIG0xLnJlbGVhc2UoKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG0xLCBtMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChtMSwgYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMSwgbTEpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3RvYnl0ZXMoc2VsZik6CisgICAgICAgICMgTWFueSBpbXBsaWNpdCB0ZXN0cyBhcmUgYWxyZWFkeSBpbiBzZWxmLnZlcmlmeSgpLgorCisgICAgICAgIHQgPSAoLTUyOSwgNTc2LCAtNjI1LCA2NzYsIC03MjkpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KHQsIHNoYXBlPVs1XSwgZm9ybWF0PSdAaCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9ieXRlcygpLCBuZC50b2J5dGVzKCkpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KFt0XSwgc2hhcGU9WzFdLCBmb3JtYXQ9Jz5oUWlMbCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9ieXRlcygpLCBuZC50b2J5dGVzKCkpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KFt0IGZvciBfIGluIHJhbmdlKDEyKV0sIHNoYXBlPVsyLDIsM10sIGZvcm1hdD0nPWhRaUxsJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2J5dGVzKCksIG5kLnRvYnl0ZXMoKSkKKworICAgICAgICBuZCA9IG5kYXJyYXkoW3QgZm9yIF8gaW4gcmFuZ2UoMTIwKV0sIHNoYXBlPVs1LDIsMiwzLDJdLAorICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PSc8aFFpTGwnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvYnl0ZXMoKSwgbmQudG9ieXRlcygpKQorCisgICAgICAgICMgVW5rbm93biBmb3JtYXRzIGFyZSBoYW5kbGVkOiB0b2J5dGVzKCkgcHVyZWx5IGRlcGVuZHMgb24gaXRlbXNpemUuCisgICAgICAgIGlmIGN0eXBlczoKKyAgICAgICAgICAgICMgZm9ybWF0OiAiVHs+bDp4Oj5sOnk6fSIKKyAgICAgICAgICAgIGNsYXNzIEJFUG9pbnQoY3R5cGVzLkJpZ0VuZGlhblN0cnVjdHVyZSk6CisgICAgICAgICAgICAgICAgX2ZpZWxkc18gPSBbKCJ4IiwgY3R5cGVzLmNfbG9uZyksICgieSIsIGN0eXBlcy5jX2xvbmcpXQorICAgICAgICAgICAgcG9pbnQgPSBCRVBvaW50KDEwMCwgMjAwKQorICAgICAgICAgICAgYSA9IG1lbW9yeXZpZXcocG9pbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudG9ieXRlcygpLCBieXRlcyhwb2ludCkpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2dldF9jb250aWd1b3VzKHNlbGYpOgorICAgICAgICAjIE1hbnkgaW1wbGljaXQgdGVzdHMgYXJlIGFscmVhZHkgaW4gc2VsZi52ZXJpZnkoKS4KKworICAgICAgICAjIG5vIGJ1ZmZlciBpbnRlcmZhY2UKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRfY29udGlndW91cywge30sIFB5QlVGX1JFQUQsICdGJykKKworICAgICAgICAjIHdyaXRhYmxlIHJlcXVlc3QgdG8gcmVhZC1vbmx5IG9iamVjdAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIGIneCcsIFB5QlVGX1dSSVRFLCAnQycpCisKKyAgICAgICAgIyB3cml0YWJsZSByZXF1ZXN0IHRvIG5vbi1jb250aWd1b3VzIG9iamVjdAorICAgICAgICBuZCA9IG5kYXJyYXkoWzEsIDIsIDNdLCBzaGFwZT1bMl0sIHN0cmlkZXM9WzJdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCBQeUJVRl9XUklURSwgJ0EnKQorCisgICAgICAgICMgc2NhbGFyLCByZWFkLW9ubHkgcmVxdWVzdCBmcm9tIHJlYWQtb25seSBleHBvcnRlcgorICAgICAgICBuZCA9IG5kYXJyYXkoOSwgc2hhcGU9KCksIGZvcm1hdD0iTCIpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1JFQUQsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsoKV0sIDkpCisKKyAgICAgICAgIyBzY2FsYXIsIHJlYWQtb25seSByZXF1ZXN0IGZyb20gd3JpdGFibGUgZXhwb3J0ZXIKKyAgICAgICAgbmQgPSBuZGFycmF5KDksIHNoYXBlPSgpLCBmb3JtYXQ9IkwiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWygpXSwgOSkKKworICAgICAgICAjIHNjYWxhciwgd3JpdGFibGUgcmVxdWVzdAorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgbmRbKCldID0gOQorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9XUklURSwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWygpXSwgOSkKKworICAgICAgICAgICAgbVsoKV0gPSAxMAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWygpXSwgMTApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kWygpXSwgMTApCisKKyAgICAgICAgIyB6ZXJvcyBpbiBzaGFwZQorICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMF0sIGZvcm1hdD0iTCIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9SRUFELCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19nZXRpdGVtX18sIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBbXSkKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSg4KSksIHNoYXBlPVsyLCAwLCA3XSwgZm9ybWF0PSJMIiwKKyAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9SRUFELCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRhcnJheShtKS50b2xpc3QoKSwgW1tdLCBbXV0pCisKKyAgICAgICAgIyBvbmUtZGltZW5zaW9uYWwKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzFdLCBmb3JtYXQ9ImgiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfV1JJVEUsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2xpc3QoKSwgbmQudG9saXN0KCkpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxLCAyLCAzXSwgc2hhcGU9WzNdLCBmb3JtYXQ9ImIiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfV1JJVEUsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2xpc3QoKSwgbmQudG9saXN0KCkpCisKKyAgICAgICAgIyBvbmUtZGltZW5zaW9uYWwsIG5vbi1jb250aWd1b3VzCisgICAgICAgIG5kID0gbmRhcnJheShbMSwgMiwgM10sIHNoYXBlPVsyXSwgc3RyaWRlcz1bMl0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9SRUFELCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIG5kLnRvbGlzdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fc2V0aXRlbV9fLCAxLCAyMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxXSwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRbMV0sIDMpCisKKyAgICAgICAgbmQgPSBuZFs6Oi0xXQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9SRUFELCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIG5kLnRvbGlzdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fc2V0aXRlbV9fLCAxLCAyMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxXSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRbMV0sIDEpCisKKyAgICAgICAgIyBtdWx0aS1kaW1lbnNpb25hbCwgY29udGlndW91cyBpbnB1dAorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMywgNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfV1JJVEUsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZGFycmF5KG0pLnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCBQeUJVRl9XUklURSwgJ0YnKQorICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1JFQUQsIG9yZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kYXJyYXkobSkudG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLCA0XSwKKyAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFfE5EX0ZPUlRSQU4pCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0YnLCAnQSddOgorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9XUklURSwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kYXJyYXkobSkudG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBnZXRfY29udGlndW91cywgbmQsIFB5QlVGX1dSSVRFLCAnQycpCisgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRhcnJheShtKS50b2xpc3QoKSwgbmQudG9saXN0KCkpCisKKyAgICAgICAgIyBtdWx0aS1kaW1lbnNpb25hbCwgbm9uLWNvbnRpZ3VvdXMgaW5wdXQKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9XUklUQUJMRXxORF9QSUwpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCBQeUJVRl9XUklURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyKQorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9SRUFELCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRhcnJheShtKS50b2xpc3QoKSwgbmQudG9saXN0KCkpCisKKyAgICAgICAgIyBmbGFncworICAgICAgICBuZCA9IG5kYXJyYXkoWzEsMiwzLDQsNV0sIHNoYXBlPVszXSwgc3RyaWRlcz1bMl0pCisgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgJ0MnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobS5jX2NvbnRpZ3VvdXMpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3NlcmlhbGl6aW5nKHNlbGYpOgorCisgICAgICAgICMgQy1jb250aWd1b3VzCisgICAgICAgIHNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoJ2knKQorICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ2knLCBbMSwyLDMsNCw1XSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgYnVmID0gaW8uQnl0ZXNJTyhtKQorICAgICAgICBiID0gYnl0ZWFycmF5KDUqc2l6ZSkKKyAgICAgICAgYnVmLnJlYWRpbnRvKGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2J5dGVzKCksIGIpCisKKyAgICAgICAgIyBDLWNvbnRpZ3VvdXMsIG11bHRpLWRpbWVuc2lvbmFsCisgICAgICAgIHNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoJ0wnKQorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMiwzLDJdLCBmb3JtYXQ9IkwiKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgYnVmID0gaW8uQnl0ZXNJTyhtKQorICAgICAgICBiID0gYnl0ZWFycmF5KDIqMyoyKnNpemUpCisgICAgICAgIGJ1Zi5yZWFkaW50byhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9ieXRlcygpLCBiKQorCisgICAgICAgICMgRm9ydHJhbiBjb250aWd1b3VzLCBtdWx0aS1kaW1lbnNpb25hbAorICAgICAgICAjc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZSgnTCcpCisgICAgICAgICNuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMiwzLDJdLCBmb3JtYXQ9IkwiLAorICAgICAgICAjICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgICNtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgI2J1ZiA9IGlvLkJ5dGVzSU8obSkKKyAgICAgICAgI2IgPSBieXRlYXJyYXkoMiozKjIqc2l6ZSkKKyAgICAgICAgI2J1Zi5yZWFkaW50byhiKQorICAgICAgICAjc2VsZi5hc3NlcnRFcXVhbChtLnRvYnl0ZXMoKSwgYikKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfaGFzaChzZWxmKToKKworICAgICAgICAjIGJ5dGVzIGV4cG9ydGVyCisgICAgICAgIGIgPSBieXRlcyhsaXN0KHJhbmdlKDEyKSkpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChiKSwgaGFzaChtKSkKKworICAgICAgICAjIEMtY29udGlndW91cworICAgICAgICBtYyA9IG0uY2FzdCgnYycsIHNoYXBlPVszLDRdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobWMpLCBoYXNoKGIpKQorCisgICAgICAgICMgbm9uLWNvbnRpZ3VvdXMKKyAgICAgICAgbXggPSBtWzo6LTJdCisgICAgICAgIGIgPSBieXRlcyhsaXN0KHJhbmdlKDEyKSlbOjotMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChteCksIGhhc2goYikpCisKKyAgICAgICAgIyBGb3J0cmFuIGNvbnRpZ3VvdXMKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzMsMiw1XSwgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtKSwgaGFzaChuZCkpCisKKyAgICAgICAgIyBtdWx0aS1kaW1lbnNpb25hbCBzbGljZQorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMywyLDVdKQorICAgICAgICB4ID0gbmRbOjoyLCA6OiwgOjotMV0KKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG0pLCBoYXNoKHgpKQorCisgICAgICAgICMgbXVsdGktZGltZW5zaW9uYWwgc2xpY2Ugd2l0aCBzdWJvZmZzZXRzCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVsyLDUsM10sIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgeCA9IG5kWzo6MiwgOjosIDo6LTFdCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtKSwgaGFzaCh4KSkKKworICAgICAgICAjIGVxdWFsaXR5LWhhc2ggaW52YXJpYW50CisgICAgICAgIHggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzEyXSwgZm9ybWF0PSdCJykKKyAgICAgICAgYSA9IG1lbW9yeXZpZXcoeCkKKworICAgICAgICB5ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsxMl0sIGZvcm1hdD0nYicpCisgICAgICAgIGIgPSBtZW1vcnl2aWV3KHkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goYSksIGhhc2goYikpCisKKyAgICAgICAgIyBub24tYnl0ZSBmb3JtYXRzCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsyLDIsM10sIGZvcm1hdD0nTCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLl9faGFzaF9fKQorCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKC02LCA2KSksIHNoYXBlPVsyLDIsM10sIGZvcm1hdD0naCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLl9faGFzaF9fKQorCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsyLDIsM10sIGZvcm1hdD0nPSBMJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uX19oYXNoX18pCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoLTYsIDYpKSwgc2hhcGU9WzIsMiwzXSwgZm9ybWF0PSc8IGgnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5fX2hhc2hfXykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfcmVsZWFzZShzZWxmKToKKworICAgICAgICAjIENyZWF0ZSByZS1leHBvcnRlciBmcm9tIGdldGJ1ZmZlcihtZW1vcnl2aWV3KSwgdGhlbiByZWxlYXNlIHRoZSB2aWV3LgorICAgICAgICBhID0gYnl0ZWFycmF5KFsxLDIsM10pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIG5kID0gbmRhcnJheShtKSAjIHJlLWV4cG9ydGVyCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBtLnJlbGVhc2UpCisgICAgICAgIGRlbCBuZAorICAgICAgICBtLnJlbGVhc2UoKQorCisgICAgICAgIGEgPSBieXRlYXJyYXkoWzEsMiwzXSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgbmQxID0gbmRhcnJheShtLCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9TkRfUkVESVJFQ1QpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobmQxLCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9TkRfUkVESVJFQ1QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobmQyLm9iaiwgbSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG0ucmVsZWFzZSkKKyAgICAgICAgZGVsIG5kMSwgbmQyCisgICAgICAgIG0ucmVsZWFzZSgpCisKKyAgICAgICAgIyBjaGFpbmVkIHZpZXdzCisgICAgICAgIGEgPSBieXRlYXJyYXkoWzEsMiwzXSkKKyAgICAgICAgbTEgPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIG0yID0gbWVtb3J5dmlldyhtMSkKKyAgICAgICAgbmQgPSBuZGFycmF5KG0yKSAjIHJlLWV4cG9ydGVyCisgICAgICAgIG0xLnJlbGVhc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbTIucmVsZWFzZSkKKyAgICAgICAgZGVsIG5kCisgICAgICAgIG0yLnJlbGVhc2UoKQorCisgICAgICAgIGEgPSBieXRlYXJyYXkoWzEsMiwzXSkKKyAgICAgICAgbTEgPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIG0yID0gbWVtb3J5dmlldyhtMSkKKyAgICAgICAgbmQxID0gbmRhcnJheShtMiwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICBuZDIgPSBuZGFycmF5KG5kMSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICBzZWxmLmFzc2VydElzKG5kMi5vYmosIG0yKQorICAgICAgICBtMS5yZWxlYXNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG0yLnJlbGVhc2UpCisgICAgICAgIGRlbCBuZDEsIG5kMgorICAgICAgICBtMi5yZWxlYXNlKCkKKworICAgICAgICAjIEFsbG93IGNoYW5naW5nIGxheW91dCB3aGlsZSBidWZmZXJzIGFyZSBleHBvcnRlZC4KKyAgICAgICAgbmQgPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszXSwgZmxhZ3M9TkRfVkFSRVhQT1JUKQorICAgICAgICBtMSA9IG1lbW9yeXZpZXcobmQpCisKKyAgICAgICAgbmQucHVzaChbNCw1LDYsNyw4XSwgc2hhcGU9WzVdKSAjIG11dGF0ZSBuZAorICAgICAgICBtMiA9IG1lbW9yeXZpZXcobmQpCisKKyAgICAgICAgeCA9IG1lbW9yeXZpZXcobTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC50b2xpc3QoKSwgbTEudG9saXN0KCkpCisKKyAgICAgICAgeSA9IG1lbW9yeXZpZXcobTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeS50b2xpc3QoKSwgbTIudG9saXN0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeS50b2xpc3QoKSwgbmQudG9saXN0KCkpCisgICAgICAgIG0yLnJlbGVhc2UoKQorICAgICAgICB5LnJlbGVhc2UoKQorCisgICAgICAgIG5kLnBvcCgpICMgcG9wIHRoZSBjdXJyZW50IHZpZXcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKworICAgICAgICBkZWwgbmQKKyAgICAgICAgbTEucmVsZWFzZSgpCisgICAgICAgIHgucmVsZWFzZSgpCisKKyAgICAgICAgIyBJZiBtdWx0aXBsZSBtZW1vcnl2aWV3cyBzaGFyZSB0aGUgc2FtZSBtYW5hZ2VkIGJ1ZmZlciwgaW1wbGljaXQKKyAgICAgICAgIyByZWxlYXNlKCkgaW4gdGhlIGNvbnRleHQgbWFuYWdlcidzIF9fZXhpdF9fKCkgbWV0aG9kIHNob3VsZCBzdGlsbAorICAgICAgICAjIHdvcmsuCisgICAgICAgIGRlZiBjYXRjaDIyKGIpOgorICAgICAgICAgICAgd2l0aCBtZW1vcnl2aWV3KGIpIGFzIG0yOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICB4ID0gYnl0ZWFycmF5KGInMTIzJykKKyAgICAgICAgd2l0aCBtZW1vcnl2aWV3KHgpIGFzIG0xOgorICAgICAgICAgICAgY2F0Y2gyMihtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTFbMF0sIG9yZChiJzEnKSkKKworICAgICAgICB4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsyLDIsM10sIGZvcm1hdD0nbCcpCisgICAgICAgIHkgPSBuZGFycmF5KHgsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgeiA9IG5kYXJyYXkoeSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICBzZWxmLmFzc2VydElzKHoub2JqLCB4KQorICAgICAgICB3aXRoIG1lbW9yeXZpZXcoeikgYXMgbToKKyAgICAgICAgICAgIGNhdGNoMjIobSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVswOjFdLnRvbGlzdCgpLCBbW1swLCAxLCAyXSwgWzMsIDQsIDVdXV0pCisKKyAgICAgICAgIyBUZXN0IGdhcmJhZ2UgY29sbGVjdGlvbi4KKyAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9SRURJUkVDVCk6CisgICAgICAgICAgICB4ID0gYnl0ZWFycmF5KGInMTIzJykKKyAgICAgICAgICAgIHdpdGggbWVtb3J5dmlldyh4KSBhcyBtMToKKyAgICAgICAgICAgICAgICBkZWwgeAorICAgICAgICAgICAgICAgIHkgPSBuZGFycmF5KG0xLCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICAgICAgd2l0aCBtZW1vcnl2aWV3KHkpIGFzIG0yOgorICAgICAgICAgICAgICAgICAgICBkZWwgeQorICAgICAgICAgICAgICAgICAgICB6ID0gbmRhcnJheShtMiwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgICAgICB3aXRoIG1lbW9yeXZpZXcoeikgYXMgbTM6CisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgegorICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gyMihtMykKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoMjIobTIpCisgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaDIyKG0xKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMVswXSwgb3JkKGInMScpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMlsxXSwgb3JkKGInMicpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtM1syXSwgb3JkKGInMycpKQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIG0zCisgICAgICAgICAgICAgICAgICAgIGRlbCBtMgorICAgICAgICAgICAgICAgIGRlbCBtMQorCisgICAgICAgICAgICB4ID0gYnl0ZWFycmF5KGInMTIzJykKKyAgICAgICAgICAgIHdpdGggbWVtb3J5dmlldyh4KSBhcyBtMToKKyAgICAgICAgICAgICAgICBkZWwgeAorICAgICAgICAgICAgICAgIHkgPSBuZGFycmF5KG0xLCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICAgICAgd2l0aCBtZW1vcnl2aWV3KHkpIGFzIG0yOgorICAgICAgICAgICAgICAgICAgICBkZWwgeQorICAgICAgICAgICAgICAgICAgICB6ID0gbmRhcnJheShtMiwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgICAgICB3aXRoIG1lbW9yeXZpZXcoeikgYXMgbTM6CisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgegorICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gyMihtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoMjIobTIpCisgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaDIyKG0zKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMVswXSwgb3JkKGInMScpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMlsxXSwgb3JkKGInMicpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtM1syXSwgb3JkKGInMycpKQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIG0xLCBtMiwgbTMKKworICAgICAgICAjIG1lbW9yeXZpZXcucmVsZWFzZSgpIGZhaWxzIGlmIHRoZSB2aWV3IGhhcyBleHBvcnRlZCBidWZmZXJzLgorICAgICAgICB4ID0gYnl0ZWFycmF5KGInMTIzJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvcik6CisgICAgICAgICAgICB3aXRoIG1lbW9yeXZpZXcoeCkgYXMgbToKKyAgICAgICAgICAgICAgICBleCA9IG5kYXJyYXkobSkKKyAgICAgICAgICAgICAgICBtWzBdID09IG9yZChiJzEnKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19yZWRpcmVjdChzZWxmKToKKworICAgICAgICBuZCA9IG5kYXJyYXkoWzEuMCAqIHggZm9yIHggaW4gcmFuZ2UoMTIpXSwgc2hhcGU9WzEyXSwgZm9ybWF0PSdkJykKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCdkJywgWzEuMCAqIHggZm9yIHggaW4gcmFuZ2UoMTIpXSkKKworICAgICAgICBmb3IgeCBpbiAobmQsIGEpOgorICAgICAgICAgICAgeSA9IG5kYXJyYXkoeCwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICAgICAgeiA9IG5kYXJyYXkoeSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoeikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh5Lm9iaiwgeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoei5vYmosIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG0ub2JqLCB4KQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIHopCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxOjNdLCB4WzE6M10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMTozXSwgeVsxOjNdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzE6M10sIHpbMTozXSkKKyAgICAgICAgICAgIGRlbCB5LCB6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMTozXSwgeFsxOjNdKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19mcm9tX3N0YXRpY19leHBvcnRlcihzZWxmKToKKworICAgICAgICBmbXQgPSAnQicKKyAgICAgICAgbHN0ID0gWzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTFdCisKKyAgICAgICAgIyBleGNlcHRpb25zCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3RhdGljYXJyYXksIDEsIDIsIDMpCisKKyAgICAgICAgIyB2aWV3Lm9iaj09eAorICAgICAgICB4ID0gc3RhdGljYXJyYXkoKQorICAgICAgICB5ID0gbWVtb3J5dmlldyh4KQorICAgICAgICBzZWxmLnZlcmlmeSh5LCBvYmo9eCwKKyAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT1bMTJdLCBzdHJpZGVzPVsxXSwKKyAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5W2ldLCBpKQorICAgICAgICBkZWwgeAorICAgICAgICBkZWwgeQorCisgICAgICAgIHggPSBzdGF0aWNhcnJheSgpCisgICAgICAgIHkgPSBtZW1vcnl2aWV3KHgpCisgICAgICAgIGRlbCB5CisgICAgICAgIGRlbCB4CisKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KCkKKyAgICAgICAgeSA9IG5kYXJyYXkoeCwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8pCisgICAgICAgIHogPSBuZGFycmF5KHksIGdldGJ1Zj1QeUJVRl9GVUxMX1JPKQorICAgICAgICBtID0gbWVtb3J5dmlldyh6KQorICAgICAgICBzZWxmLmFzc2VydElzKHkub2JqLCB4KQorICAgICAgICBzZWxmLmFzc2VydElzKG0ub2JqLCB6KQorICAgICAgICBzZWxmLnZlcmlmeShtLCBvYmo9eiwKKyAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT1bMTJdLCBzdHJpZGVzPVsxXSwKKyAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKyAgICAgICAgZGVsIHgsIHksIHosIG0KKworICAgICAgICB4ID0gc3RhdGljYXJyYXkoKQorICAgICAgICB5ID0gbmRhcnJheSh4LCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9TkRfUkVESVJFQ1QpCisgICAgICAgIHogPSBuZGFycmF5KHksIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoeikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5Lm9iaiwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh6Lm9iaiwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtLm9iaiwgeCkKKyAgICAgICAgc2VsZi52ZXJpZnkobSwgb2JqPXgsCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9WzEyXSwgc3RyaWRlcz1bMV0sCisgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisgICAgICAgIGRlbCB4LCB5LCB6LCBtCisKKyAgICAgICAgIyB2aWV3Lm9iaj09TlVMTAorICAgICAgICB4ID0gc3RhdGljYXJyYXkobGVnYWN5X21vZGU9VHJ1ZSkKKyAgICAgICAgeSA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgc2VsZi52ZXJpZnkoeSwgb2JqPU5vbmUsCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9WzEyXSwgc3RyaWRlcz1bMV0sCisgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeVtpXSwgaSkKKyAgICAgICAgZGVsIHgKKyAgICAgICAgZGVsIHkKKworICAgICAgICB4ID0gc3RhdGljYXJyYXkobGVnYWN5X21vZGU9VHJ1ZSkKKyAgICAgICAgeSA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgZGVsIHkKKyAgICAgICAgZGVsIHgKKworICAgICAgICB4ID0gc3RhdGljYXJyYXkobGVnYWN5X21vZGU9VHJ1ZSkKKyAgICAgICAgeSA9IG5kYXJyYXkoeCwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8pCisgICAgICAgIHogPSBuZGFycmF5KHksIGdldGJ1Zj1QeUJVRl9GVUxMX1JPKQorICAgICAgICBtID0gbWVtb3J5dmlldyh6KQorICAgICAgICBzZWxmLmFzc2VydElzKHkub2JqLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzKG0ub2JqLCB6KQorICAgICAgICBzZWxmLnZlcmlmeShtLCBvYmo9eiwKKyAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT1bMTJdLCBzdHJpZGVzPVsxXSwKKyAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKyAgICAgICAgZGVsIHgsIHksIHosIG0KKworICAgICAgICB4ID0gc3RhdGljYXJyYXkobGVnYWN5X21vZGU9VHJ1ZSkKKyAgICAgICAgeSA9IG5kYXJyYXkoeCwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICB6ID0gbmRhcnJheSh5LCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9TkRfUkVESVJFQ1QpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KHopCisgICAgICAgICMgQ2xlYXJseSBzZXR0aW5nIHZpZXcub2JqPT1OVUxMIGlzIGluZmVyaW9yLCBzaW5jZSBpdAorICAgICAgICAjIG1lc3NlcyB1cCB0aGUgcmVkaXJlY3Rpb24gY2hhaW46CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeS5vYmosIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoei5vYmosIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5vYmosIHkpCisgICAgICAgIHNlbGYudmVyaWZ5KG0sIG9iaj15LAorICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPVsxMl0sIHN0cmlkZXM9WzFdLAorICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorICAgICAgICBkZWwgeCwgeSwgeiwgbQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19nZXRidWZmZXJfdW5kZWZpbmVkKHNlbGYpOgorCisgICAgICAgICMgZ2V0YnVmZmVycHJvYyBkb2VzIG5vdCBhZGhlcmUgdG8gdGhlIG5ldyBkb2N1bWVudGF0aW9uCisgICAgICAgIG5kID0gbmRhcnJheShbMSwyLDNdLCBbM10sIGZsYWdzPU5EX0dFVEJVRl9GQUlMfE5EX0dFVEJVRl9VTkRFRklORUQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBtZW1vcnl2aWV3LCBuZCkKKworICAgIGRlZiB0ZXN0X2lzc3VlXzczODUoc2VsZik6CisgICAgICAgIHggPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszXSwgZmxhZ3M9TkRfR0VUQlVGX0ZBSUwpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBtZW1vcnl2aWV3LCB4KQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0QnVmZmVyUHJvdG9jb2wpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9idWZpby5weSBiL0xpYi90ZXN0L3Rlc3RfYnVmaW8ucHkKaW5kZXggNWFiNmY1YS4uNjMzOGFkOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9idWZpby5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J1ZmlvLnB5CkBAIC0xMSw3ICsxMSw3IEBACiBsZW5ndGhzID0gbGlzdChyYW5nZSgxLCAyNTcpKSArIFs1MTIsIDEwMDAsIDEwMjQsIDIwNDgsIDQwOTYsIDgxOTIsIDEwMDAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYzODQsIDMyNzY4LCA2NTUzNiwgMTAwMDAwMF0KIAotY2xhc3MgQnVmZmVyU2l6ZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgQnVmZmVyU2l6ZVRlc3Q6CiAgICAgZGVmIHRyeV9vbmUoc2VsZiwgcyk6CiAgICAgICAgICMgV3JpdGUgcyArICJcbiIgKyBzIHRvIGZpbGUsIHRoZW4gb3BlbiBpdCBhbmQgZW5zdXJlIHRoYXQgc3VjY2Vzc2l2ZQogICAgICAgICAjIC5yZWFkbGluZSgpcyBkZWxpdmVyIHdoYXQgd2Ugd3JvdGUuCkBAIC02MiwxNSArNjIsMTIgQEAKICAgICAgICAgc2VsZi5kcml2ZV9vbmUoYnl0ZXMoMTAwMCkpCiAKIAotY2xhc3MgQ0J1ZmZlclNpemVUZXN0KEJ1ZmZlclNpemVUZXN0KToKK2NsYXNzIENCdWZmZXJTaXplVGVzdChCdWZmZXJTaXplVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIG9wZW4gPSBpby5vcGVuCiAKLWNsYXNzIFB5QnVmZmVyU2l6ZVRlc3QoQnVmZmVyU2l6ZVRlc3QpOgorY2xhc3MgUHlCdWZmZXJTaXplVGVzdChCdWZmZXJTaXplVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIG9wZW4gPSBzdGF0aWNtZXRob2QocHlpby5vcGVuKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChDQnVmZmVyU2l6ZVRlc3QsIFB5QnVmZmVyU2l6ZVRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weSBiL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weQppbmRleCBmNGQzNDAwLi5jMzQyYTQzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5CkBAIC0xLDE5ICsxLDIxIEBACiAjIFB5dGhvbiB0ZXN0IHNldCAtLSBidWlsdC1pbiBmdW5jdGlvbnMKIAotaW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzeXMKLWltcG9ydCB3YXJuaW5ncworaW1wb3J0IGFzdAoraW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBpbworaW1wb3J0IGxvY2FsZQogaW1wb3J0IG9zCi1pbXBvcnQgYXN0Ci1pbXBvcnQgdHlwZXMKLWltcG9ydCBidWlsdGlucworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgcmFuZG9tCitpbXBvcnQgc3lzCiBpbXBvcnQgdHJhY2ViYWNrCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmNtcCwgVEVTVEZOLCB1bmxpbmssICBydW5fdW5pdHRlc3QsIGNoZWNrX3dhcm5pbmdzCitpbXBvcnQgdHlwZXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIG9wZXJhdG9yIGltcG9ydCBuZWcKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHVubGluaywgIHJ1bl91bml0dGVzdCwgY2hlY2tfd2FybmluZ3MKIHRyeToKICAgICBpbXBvcnQgcHR5LCBzaWduYWwKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTExMCw3ICsxMTIsMzAgQEAKICAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgogCitkZWYgZmlsdGVyX2NoYXIoYXJnKToKKyAgICByZXR1cm4gb3JkKGFyZykgPiBvcmQoImQiKQorCitkZWYgbWFwX2NoYXIoYXJnKToKKyAgICByZXR1cm4gY2hyKG9yZChhcmcpKzEpCisKIGNsYXNzIEJ1aWx0aW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIEhlbHBlciB0byBjaGVjayBwaWNrbGFiaWxpdHkKKyAgICBkZWYgY2hlY2tfaXRlcl9waWNrbGUoc2VsZiwgaXQsIHNlcSk6CisgICAgICAgIGl0b3JnID0gaXQKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0b3JnKSwgdHlwZShpdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIHNlcSkKKworICAgICAgICAjdGVzdCB0aGUgaXRlcmF0b3IgYWZ0ZXIgZHJvcHBpbmcgb25lIGZyb20gaXQKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgc2VxWzE6XSkKIAogICAgIGRlZiB0ZXN0X2ltcG9ydChzZWxmKToKICAgICAgICAgX19pbXBvcnRfXygnc3lzJykKQEAgLTI1Nyw4ICsyODIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNocigweGZmKSwgJ1x4ZmYnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjaHIsIDE8PDI0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNocihzeXMubWF4dW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3RyKCgnXFxVJTA4eCcgJSAoc3lzLm1heHVuaWNvZGUpKS5lbmNvZGUoImFzY2lpIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmljb2RlLWVzY2FwZScpKQorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cignXFxVMDAxMGZmZmYnLmVuY29kZSgiYXNjaWkiKSwgJ3VuaWNvZGUtZXNjYXBlJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY2hyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNocigweDAwMDBGRkZGKSwgIlxVMDAwMEZGRkYiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNocigweDAwMDEwMDAwKSwgIlxVMDAwMTAwMDAiKQpAQCAtMzgwLDcgKzQwNCwxNSBAQAogICAgICAgICBmID0gRm9vKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpcihmKSA9PSBbImdhIiwgImthbiIsICJyb28iXSkKIAotICAgICAgICAjIGRpcihvYmpfX2Rpcl9fbm90X2xpc3QpCisgICAgICAgICMgZGlyKG9ial9fZGlyX190dXBsZSkKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19kaXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gKCJiIiwgImMiLCAiYSIpCisgICAgICAgIHJlcyA9IGRpcihGb28oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHJlcywgbGlzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcyA9PSBbImEiLCAiYiIsICJjIl0pCisKKyAgICAgICAgIyBkaXIob2JqX19kaXJfX25vdF9zZXF1ZW5jZSkKICAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgX19kaXJfXyhzZWxmKToKICAgICAgICAgICAgICAgICByZXR1cm4gNwpAQCAtMzkzLDYgKzQyNSw4IEBACiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihzeXMuZXhjX2luZm8oKVsyXSkpLCA0KQogCisgICAgICAgICMgdGVzdCB0aGF0IG9iamVjdCBoYXMgYSBfX2Rpcl9fKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoW10uX19kaXJfXygpKSwgZGlyKFtdKSkKIAogICAgIGRlZiB0ZXN0X2Rpdm1vZChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXZtb2QoMTIsIDcpLCAoMSwgNSkpCkBAIC00MDIsMTAgKzQzNiwxMyBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGl2bW9kKC1zeXMubWF4c2l6ZS0xLCAtMSksIChzeXMubWF4c2l6ZSsxLCAwKSkKIAotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGZjbXAoZGl2bW9kKDMuMjUsIDEuMCksICgzLjAsIDAuMjUpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBmY21wKGRpdm1vZCgtMy4yNSwgMS4wKSwgKC00LjAsIDAuNzUpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBmY21wKGRpdm1vZCgzLjI1LCAtMS4wKSwgKC00LjAsIC0wLjc1KSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZmNtcChkaXZtb2QoLTMuMjUsIC0xLjApLCAoMy4wLCAtMC4yNSkpKQorICAgICAgICBmb3IgbnVtLCBkZW5vbSwgZXhwX3Jlc3VsdCBpbiBbICgzLjI1LCAxLjAsICgzLjAsIDAuMjUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTMuMjUsIDEuMCwgKC00LjAsIDAuNzUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMy4yNSwgLTEuMCwgKC00LjAsIC0wLjc1KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0zLjI1LCAtMS4wLCAoMy4wLCAtMC4yNSkpXToKKyAgICAgICAgICAgIHJlc3VsdCA9IGRpdm1vZChudW0sIGRlbm9tKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChyZXN1bHRbMF0sIGV4cF9yZXN1bHRbMF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKHJlc3VsdFsxXSwgZXhwX3Jlc3VsdFsxXSkKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRpdm1vZCkKIApAQCAtNTIwLDYgKzU1NywzOSBAQAogICAgICAgICAgICAgZGVsIGxbJ19fYnVpbHRpbnNfXyddCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGcsIGwpLCAoeydhJzogMX0sIHsnYic6IDJ9KSkKIAorICAgIGRlZiB0ZXN0X2V4ZWNfZ2xvYmFscyhzZWxmKToKKyAgICAgICAgY29kZSA9IGNvbXBpbGUoInByaW50KCdIZWxsbyBXb3JsZCEnKSIsICIiLCAiZXhlYyIpCisgICAgICAgICMgbm8gYnVpbHRpbiBmdW5jdGlvbgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KE5hbWVFcnJvciwgIm5hbWUgJ3ByaW50JyBpcyBub3QgZGVmaW5lZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYywgY29kZSwgeydfX2J1aWx0aW5zX18nOiB7fX0pCisgICAgICAgICMgX19idWlsdGluc19fIG11c3QgYmUgYSBtYXBwaW5nIHR5cGUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLCBjb2RlLCB7J19fYnVpbHRpbnNfXyc6IDEyM30pCisKKyAgICAgICAgIyBubyBfX2J1aWxkX2NsYXNzX18gZnVuY3Rpb24KKyAgICAgICAgY29kZSA9IGNvbXBpbGUoImNsYXNzIEE6IHBhc3MiLCAiIiwgImV4ZWMiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KE5hbWVFcnJvciwgIl9fYnVpbGRfY2xhc3NfXyBub3QgZm91bmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMsIGNvZGUsIHsnX19idWlsdGluc19fJzoge319KQorCisgICAgICAgIGNsYXNzIGZyb3plbmRpY3RfZXJyb3IoRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBmcm96ZW5kaWN0KGRpY3QpOgorICAgICAgICAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHJhaXNlIGZyb3plbmRpY3RfZXJyb3IoImZyb3plbmRpY3QgaXMgcmVhZG9ubHkiKQorCisgICAgICAgICMgcmVhZC1vbmx5IGJ1aWx0aW5zCisgICAgICAgIGZyb3plbl9idWlsdGlucyA9IGZyb3plbmRpY3QoX19idWlsdGluc19fKQorICAgICAgICBjb2RlID0gY29tcGlsZSgiX19idWlsdGluc19fWydzdXBlcmdsb2JhbCddPTI7IHByaW50KHN1cGVyZ2xvYmFsKSIsICJ0ZXN0IiwgImV4ZWMiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhmcm96ZW5kaWN0X2Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLCBjb2RlLCB7J19fYnVpbHRpbnNfXyc6IGZyb3plbl9idWlsdGluc30pCisKKyAgICAgICAgIyByZWFkLW9ubHkgZ2xvYmFscworICAgICAgICBuYW1lc3BhY2UgPSBmcm96ZW5kaWN0KHt9KQorICAgICAgICBjb2RlID0gY29tcGlsZSgieD0xIiwgInRlc3QiLCAiZXhlYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGZyb3plbmRpY3RfZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMsIGNvZGUsIG5hbWVzcGFjZSkKKwogICAgIGRlZiB0ZXN0X2V4ZWNfcmVkaXJlY3RlZChzZWxmKToKICAgICAgICAgc2F2ZXN0ZG91dCA9IHN5cy5zdGRvdXQKICAgICAgICAgc3lzLnN0ZG91dCA9IE5vbmUgIyBXaGF0ZXZlciB0aGF0IGNhbm5vdCBmbHVzaCgpCkBAIC01NTYsNiArNjI2LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChmaWx0ZXIobGFtYmRhIHg6IHg+PTMsICgxLCAyLCAzLCA0KSkpLCBbMywgNF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwgZmlsdGVyKDQyLCAoMSwgMikpKQogCisgICAgZGVmIHRlc3RfZmlsdGVyX3BpY2tsZShzZWxmKToKKyAgICAgICAgZjEgPSBmaWx0ZXIoZmlsdGVyX2NoYXIsICJhYmNkZWFiY2RlIikKKyAgICAgICAgZjIgPSBmaWx0ZXIoZmlsdGVyX2NoYXIsICJhYmNkZWFiY2RlIikKKyAgICAgICAgc2VsZi5jaGVja19pdGVyX3BpY2tsZShmMSwgbGlzdChmMikpCisKICAgICBkZWYgdGVzdF9nZXRhdHRyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoZ2V0YXR0cihzeXMsICdzdGRvdXQnKSBpcyBzeXMuc3Rkb3V0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGF0dHIsIHN5cywgMSkKQEAgLTc0OSw2ICs4MjQsMTEgQEAKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGxpc3QsIG1hcChiYWRmdW5jLCByYW5nZSg1KSkpCiAKKyAgICBkZWYgdGVzdF9tYXBfcGlja2xlKHNlbGYpOgorICAgICAgICBtMSA9IG1hcChtYXBfY2hhciwgIklzIHRoaXMgdGhlIHJlYWwgbGlmZT8iKQorICAgICAgICBtMiA9IG1hcChtYXBfY2hhciwgIklzIHRoaXMgdGhlIHJlYWwgbGlmZT8iKQorICAgICAgICBzZWxmLmNoZWNrX2l0ZXJfcGlja2xlKG0xLCBsaXN0KG0yKSkKKwogICAgIGRlZiB0ZXN0X21heChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXgoJzEyMzEyMycpLCAnMycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF4KDEsIDIsIDMpLCAzKQpAQCAtODgyLDcgKzk2MiwyOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcC5yZWFkKDEwMDApLCAnWVlZJyoxMDApCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmcC5jbG9zZSgpCi0gICAgICAgIHVubGluayhURVNURk4pCisgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQorCisgICAgZGVmIHRlc3Rfb3Blbl9kZWZhdWx0X2VuY29kaW5nKHNlbGYpOgorICAgICAgICBvbGRfZW52aXJvbiA9IGRpY3Qob3MuZW52aXJvbikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyB0cnkgdG8gZ2V0IGEgdXNlciBwcmVmZXJyZWQgZW5jb2RpbmcgZGlmZmVyZW50IHRoYW4gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICMgbG9jYWxlIGVuY29kaW5nIHRvIGNoZWNrIHRoYXQgb3BlbigpIHVzZXMgdGhlIGN1cnJlbnQgbG9jYWxlCisgICAgICAgICAgICAjIGVuY29kaW5nIGFuZCBub3QgdGhlIHVzZXIgcHJlZmVycmVkIGVuY29kaW5nCisgICAgICAgICAgICBmb3Iga2V5IGluICgnTENfQUxMJywgJ0xBTkcnLCAnTENfQ1RZUEUnKToKKyAgICAgICAgICAgICAgICBpZiBrZXkgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICAgICAgZGVsIG9zLmVudmlyb25ba2V5XQorCisgICAgICAgICAgICBzZWxmLndyaXRlX3Rlc3RmaWxlKCkKKyAgICAgICAgICAgIGN1cnJlbnRfbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKQorICAgICAgICAgICAgZnAgPSBvcGVuKFRFU1RGTiwgJ3cnKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnAuZW5jb2RpbmcsIGN1cnJlbnRfbG9jYWxlX2VuY29kaW5nKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCisgICAgICAgICAgICAgICAgdW5saW5rKFRFU1RGTikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmVudmlyb24uY2xlYXIoKQorICAgICAgICAgICAgb3MuZW52aXJvbi51cGRhdGUob2xkX2Vudmlyb24pCiAKICAgICBkZWYgdGVzdF9vcmQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JkKCcgJyksIDMyKQpAQCAtMTA3Miw2ICsxMTc0LDggQEAKICAgICAgICAgIyBDaGVjayBzdGRpbi9zdGRvdXQgZXJyb3IgaGFuZGxlciBpcyB1c2VkIHdoZW4gaW52b2tpbmcgR05VIHJlYWRsaW5lCiAgICAgICAgIHNlbGYuY2hlY2tfaW5wdXRfdHR5KCJwcm9tcHTDqSIsIGIicXV1eFx4ZTkiLCAiYXNjaWkiKQogCisgICAgIyB0ZXN0X2ludCgpOiBzZWUgdGVzdF9pbnQucHkgZm9yIHRlc3RzIG9mIGJ1aWx0LWluIGZ1bmN0aW9uIGludCgpLgorCiAgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKCcnKSwgJ1wnXCcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoMCksICcwJykKQEAgLTEyMDAsNiArMTMwNCw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3VtLCA0MikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdW0sIFsnYScsICdiJywgJ2MnXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdW0sIFsnYScsICdiJywgJ2MnXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3VtLCBbYidhJywgYidjJ10sIGInJykKKyAgICAgICAgdmFsdWVzID0gW2J5dGVhcnJheShiJ2EnKSwgYnl0ZWFycmF5KGInYicpXQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN1bSwgdmFsdWVzLCBieXRlYXJyYXkoYicnKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdW0sIFtbMV0sIFsyXSwgWzNdXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdW0sIFt7MjozfV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3VtLCBbezI6M31dKjIsIHsyOjN9KQpAQCAtMTI4OCw2ICsxMzk1LDEzIEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsIHppcChCYWRTZXEoKSwgQmFkU2VxKCkpKQogCisgICAgZGVmIHRlc3RfemlwX3BpY2tsZShzZWxmKToKKyAgICAgICAgYSA9ICgxLCAyLCAzKQorICAgICAgICBiID0gKDQsIDUsIDYpCisgICAgICAgIHQgPSBbKDEsIDQpLCAoMiwgNSksICgzLCA2KV0KKyAgICAgICAgejEgPSB6aXAoYSwgYikKKyAgICAgICAgc2VsZi5jaGVja19pdGVyX3BpY2tsZSh6MSwgdCkKKwogICAgIGRlZiB0ZXN0X2Zvcm1hdChzZWxmKToKICAgICAgICAgIyBUZXN0IHRoZSBiYXNpYyBtYWNoaW5lcnkgb2YgdGhlIGZvcm1hdCgpIGJ1aWx0aW4uICBEb24ndCB0ZXN0CiAgICAgICAgICMgIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIHZhcmlvdXMgZm9ybWF0dGVycwpAQCAtMTM2MSwxNCArMTQ3NSwxNCBAQAogCiAgICAgICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgIyBJc3N1ZSAjNzk5NDogb2JqZWN0Ll9fZm9ybWF0X18gd2l0aCBhIG5vbi1lbXB0eSBmb3JtYXQgc3RyaW5nIGlzCi0gICAgICAgICMgIHBlbmRpbmcgZGVwcmVjYXRlZAorICAgICAgICAjICBkZXByZWNhdGVkCiAgICAgICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZm9ybWF0X3N0cmluZyhvYmosIGZtdF9zdHIsIHNob3VsZF9yYWlzZV93YXJuaW5nKToKICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJhbHdheXMiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiYWx3YXlzIiwgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgICAgIGZvcm1hdChvYmosIGZtdF9zdHIpCiAgICAgICAgICAgICBpZiBzaG91bGRfcmFpc2Vfd2FybmluZzoKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3KSwgMSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uod1swXS5tZXNzYWdlLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh3WzBdLm1lc3NhZ2UsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdvYmplY3QuX19mb3JtYXRfXyB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nJywgc3RyKHdbMF0ubWVzc2FnZSkpCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTQxMiw2ICsxNTI2LDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHgudHJhbnNsYXRlLCBiIjEiLCAxKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudHJhbnNsYXRlLCBiIjEiKjI1NiwgMSkKIAorICAgIGRlZiB0ZXN0X2NvbnN0cnVjdF9zaW5nbGV0b25zKHNlbGYpOgorICAgICAgICBmb3IgY29uc3QgaW4gTm9uZSwgRWxsaXBzaXMsIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgdHAgPSB0eXBlKGNvbnN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0cCgpLCBjb25zdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdHAsIDEsIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHRwLCBhPTEsIGI9MikKKwogY2xhc3MgVGVzdFNvcnRlZCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkgYi9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5CmluZGV4IGJhNDA5MTUuLjM1MjBlODMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ieXRlcy5weQpAQCAtMzgsNyArMzgsNyBAQAogICAgICAgICByZXR1cm4gc2VsZi52YWx1ZQogCiAKLWNsYXNzIEJhc2VCeXRlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgQmFzZUJ5dGVzVGVzdDoKIAogICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KCkKQEAgLTE4OCwyNCArMTg4LDI2IEBACiAKICAgICBkZWYgdGVzdF9lbmNvZGluZyhzZWxmKToKICAgICAgICAgc2FtcGxlID0gIkhlbGxvIHdvcmxkXG5cdTEyMzRcdTU2NzhcdTlhYmMiCi0gICAgICAgIGZvciBlbmMgaW4gKCJ1dGY4IiwgInV0ZjE2Iik6CisgICAgICAgIGZvciBlbmMgaW4gKCJ1dGYtOCIsICJ1dGYtMTYiKToKICAgICAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChzYW1wbGUsIGVuYykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgc2VsZi50eXBlMnRlc3Qoc2FtcGxlLmVuY29kZShlbmMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCBzZWxmLnR5cGUydGVzdCwgc2FtcGxlLCAibGF0aW4xIikKLSAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KHNhbXBsZSwgImxhdGluMSIsICJpZ25vcmUiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0LCBzYW1wbGUsICJsYXRpbi0xIikKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KHNhbXBsZSwgImxhdGluLTEiLCAiaWdub3JlIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBzZWxmLnR5cGUydGVzdChzYW1wbGVbOi0zXSwgInV0Zi04IikpCiAKICAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZik6CiAgICAgICAgIHNhbXBsZSA9ICJIZWxsbyB3b3JsZFxuXHUxMjM0XHU1Njc4XHU5YWJjXGRlZjBcZGVmMCIKLSAgICAgICAgZm9yIGVuYyBpbiAoInV0ZjgiLCAidXRmMTYiKToKKyAgICAgICAgZm9yIGVuYyBpbiAoInV0Zi04IiwgInV0Zi0xNiIpOgogICAgICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KHNhbXBsZSwgZW5jKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmRlY29kZShlbmMpLCBzYW1wbGUpCiAgICAgICAgIHNhbXBsZSA9ICJIZWxsbyB3b3JsZFxuXHg4MFx4ODFceGZlXHhmZiIKLSAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KHNhbXBsZSwgImxhdGluMSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgYi5kZWNvZGUsICJ1dGY4IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmRlY29kZSgidXRmOCIsICJpZ25vcmUiKSwgIkhlbGxvIHdvcmxkXG4iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZGVjb2RlKGVycm9ycz0iaWdub3JlIiwgZW5jb2Rpbmc9InV0ZjgiKSwKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KHNhbXBsZSwgImxhdGluLTEiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsIGIuZGVjb2RlLCAidXRmLTgiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZGVjb2RlKCJ1dGYtOCIsICJpZ25vcmUiKSwgIkhlbGxvIHdvcmxkXG4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZGVjb2RlKGVycm9ycz0iaWdub3JlIiwgZW5jb2Rpbmc9InV0Zi04IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIkhlbGxvIHdvcmxkXG4iKQorICAgICAgICAjIERlZmF1bHQgZW5jb2RpbmcgaXMgdXRmLTgKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChiJ1x4ZTJceDk4XHg4MycpLmRlY29kZSgpLCAnXHUyNjAzJykKIAogICAgIGRlZiB0ZXN0X2Zyb21faW50KHNlbGYpOgogICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoMCkKQEAgLTI5MSwxMCArMjkzLDI3IEBACiAKICAgICBkZWYgdGVzdF9jb3VudChzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInbWlzc2lzc2lwcGknKQorICAgICAgICBpID0gMTA1CisgICAgICAgIHAgPSAxMTIKKyAgICAgICAgdyA9IDExOQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChiJ2knKSwgNCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KGInc3MnKSwgMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KGIndycpLCAwKQogCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChpKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KHcpLCAwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChiJ2knLCA2KSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KGIncCcsIDYpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQoYidpJywgMSwgMyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChiJ3AnLCA3LCA5KSwgMSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQoaSwgNiksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChwLCA2KSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KGksIDEsIDMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQocCwgNywgOSksIDEpCisKICAgICBkZWYgdGVzdF9zdGFydHN3aXRoKHNlbGYpOgogICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidoZWxsbycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi50eXBlMnRlc3QoKS5zdGFydHN3aXRoKGIiYW55dGhpbmciKSkKQEAgLTMyNSwzNSArMzQ0LDg2IEBACiAKICAgICBkZWYgdGVzdF9maW5kKHNlbGYpOgogICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidtaXNzaXNzaXBwaScpCisgICAgICAgIGkgPSAxMDUKKyAgICAgICAgdyA9IDExOQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGInc3MnKSwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQoYidzcycsIDMpLCA1KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChiJ3NzJywgMSwgNyksIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGInc3MnLCAxLCAzKSwgLTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGIndycpLCAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQoYidtaXNzaXNzaXBwaWFuJyksIC0xKQogCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGkpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZCh3KSwgLTEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQoYidzcycsIDMpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChiJ3NzJywgMSwgNyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGInc3MnLCAxLCAzKSwgLTEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQoaSwgNiksIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGksIDEsIDMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZCh3LCAxLCAzKSwgLTEpCisKKyAgICAgICAgZm9yIGluZGV4IGluICgtMSwgMjU2LCBzeXMubWF4c2l6ZSArIDEpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBWYWx1ZUVycm9yLCByJ2J5dGUgbXVzdCBiZSBpbiByYW5nZVwoMCwgMjU2XCknLAorICAgICAgICAgICAgICAgIGIuZmluZCwgaW5kZXgpCisKICAgICBkZWYgdGVzdF9yZmluZChzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInbWlzc2lzc2lwcGknKQorICAgICAgICBpID0gMTA1CisgICAgICAgIHcgPSAxMTkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQoYidzcycpLCA1KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQoYidzcycsIDMpLCA1KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQoYidzcycsIDAsIDYpLCAyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQoYid3JyksIC0xKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQoYidtaXNzaXNzaXBwaWFuJyksIC0xKQogCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZChpKSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZCh3KSwgLTEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGInc3MnLCAzKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGInc3MnLCAwLCA2KSwgMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQoaSwgMSwgMyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZChpLCAzLCA5KSwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKHcsIDEsIDMpLCAtMSkKKwogICAgIGRlZiB0ZXN0X2luZGV4KHNlbGYpOgotICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYid3b3JsZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5pbmRleChiJ3cnKSwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmluZGV4KGInb3JsJyksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIuaW5kZXgsIGInd29ybScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIuaW5kZXgsIGInbGRvJykKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInbWlzc2lzc2lwcGknKQorICAgICAgICBpID0gMTA1CisgICAgICAgIHcgPSAxMTkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuaW5kZXgoYidzcycpLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLmluZGV4LCBiJ3cnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLmluZGV4LCBiJ21pc3Npc3NpcHBpYW4nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5pbmRleChpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5pbmRleCwgdykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuaW5kZXgoYidzcycsIDMpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuaW5kZXgoYidzcycsIDEsIDcpLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLmluZGV4LCBiJ3NzJywgMSwgMykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuaW5kZXgoaSwgNiksIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5pbmRleChpLCAxLCAzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5pbmRleCwgdywgMSwgMykKIAogICAgIGRlZiB0ZXN0X3JpbmRleChzZWxmKToKLSAgICAgICAgIyBYWFggY291bGQgYmUgbW9yZSByaWdvcm91cwotICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYid3b3JsZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yaW5kZXgoYid3JyksIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yaW5kZXgoYidvcmwnKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5yaW5kZXgsIGInd29ybScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIucmluZGV4LCBiJ2xkbycpCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ21pc3Npc3NpcHBpJykKKyAgICAgICAgaSA9IDEwNQorICAgICAgICB3ID0gMTE5CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJpbmRleChiJ3NzJyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIucmluZGV4LCBiJ3cnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLnJpbmRleCwgYidtaXNzaXNzaXBwaWFuJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGkpLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5yaW5kZXgsIHcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJpbmRleChiJ3NzJywgMyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yaW5kZXgoYidzcycsIDAsIDYpLCAyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yaW5kZXgoaSwgMSwgMyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yaW5kZXgoaSwgMywgOSksIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIucmluZGV4LCB3LCAxLCAzKQogCiAgICAgZGVmIHRlc3RfcmVwbGFjZShzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInbWlzc2lzc2lwcGknKQpAQCAtMzY1LDYgKzQzNSwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuc3BsaXQoYidpJyksIFtiJ20nLCBiJ3NzJywgYidzcycsIGIncHAnLCBiJyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuc3BsaXQoYidzcycpLCBbYidtaScsIGInaScsIGInaXBwaSddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuc3BsaXQoYid3JyksIFtiXSkKKyAgICAgICAgIyB3aXRoIGtleXdvcmQgYXJncworICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidhfGJ8Y3xkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnNwbGl0KHNlcD1iJ3wnKSwgW2InYScsIGInYicsIGInYycsIGInZCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuc3BsaXQoYid8JywgbWF4c3BsaXQ9MSksIFtiJ2EnLCBiJ2J8Y3xkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5zcGxpdChzZXA9Yid8JywgbWF4c3BsaXQ9MSksIFtiJ2EnLCBiJ2J8Y3xkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5zcGxpdChtYXhzcGxpdD0xLCBzZXA9Yid8JyksIFtiJ2EnLCBiJ2J8Y3xkJ10pCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2EgYiBjIGQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuc3BsaXQobWF4c3BsaXQ9MSksIFtiJ2EnLCBiJ2IgYyBkJ10pCiAKICAgICBkZWYgdGVzdF9zcGxpdF93aGl0ZXNwYWNlKHNlbGYpOgogICAgICAgICBmb3IgYiBpbiAoYicgIGFyZiAgYmFyZiAgJywgYidhcmZcdGJhcmYnLCBiJ2FyZlxuYmFyZicsIGInYXJmXHJiYXJmJywKQEAgLTM5Myw2ICs0NzEsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJzcGxpdChiJ2knKSwgW2InbScsIGInc3MnLCBiJ3NzJywgYidwcCcsIGInJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yc3BsaXQoYidzcycpLCBbYidtaScsIGInaScsIGInaXBwaSddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KGIndycpLCBbYl0pCisgICAgICAgICMgd2l0aCBrZXl3b3JkIGFyZ3MKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInYXxifGN8ZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yc3BsaXQoc2VwPWInfCcpLCBbYidhJywgYidiJywgYidjJywgYidkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yc3BsaXQoYid8JywgbWF4c3BsaXQ9MSksIFtiJ2F8YnxjJywgYidkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yc3BsaXQoc2VwPWInfCcsIG1heHNwbGl0PTEpLCBbYidhfGJ8YycsIGInZCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KG1heHNwbGl0PTEsIHNlcD1iJ3wnKSwgW2InYXxifGMnLCBiJ2QnXSkKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInYSBiIGMgZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yc3BsaXQobWF4c3BsaXQ9MSksIFtiJ2EgYiBjJywgYidkJ10pCiAKICAgICBkZWYgdGVzdF9yc3BsaXRfd2hpdGVzcGFjZShzZWxmKToKICAgICAgICAgZm9yIGIgaW4gKGInICBhcmYgIGJhcmYgICcsIGInYXJmXHRiYXJmJywgYidhcmZcbmJhcmYnLCBiJ2FyZlxyYmFyZicsCkBAIC00MzIsNiArNTE4LDI0IEBACiAgICAgICAgICAgICAgICAgcSA9IHBpY2tsZS5sb2FkcyhwcykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHEpCiAKKyAgICBkZWYgdGVzdF9pdGVyYXRvcl9waWNrbGluZyhzZWxmKToKKyAgICAgICAgZm9yIGIgaW4gYiIiLCBiImEiLCBiImFiYyIsIGIiXHhmZmFiXHg4MCIsIGIiXDBcMFwzNzdcMFwwIjoKKyAgICAgICAgICAgIGl0ID0gaXRvcmcgPSBpdGVyKHNlbGYudHlwZTJ0ZXN0KGIpKQorICAgICAgICAgICAgZGF0YSA9IGxpc3Qoc2VsZi50eXBlMnRlc3QoYikpCisgICAgICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgZGF0YSkKKworICAgICAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBuZXh0KGl0KQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgZGF0YVsxOl0pCisKICAgICBkZWYgdGVzdF9zdHJpcChzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInbWlzc2lzc2lwcGknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuc3RyaXAoYidpJyksIGInbWlzc2lzc2lwcCcpCkBAIC00NzMsNiArNTc3LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QoYidhYmMnKS5sc3RyaXAsICdiJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR5cGUydGVzdChiJ2FiYycpLnJzdHJpcCwgJ2InKQogCisgICAgZGVmIHRlc3RfY2VudGVyKHNlbGYpOgorICAgICAgICAjIEZpbGwgY2hhcmFjdGVyIGNhbiBiZSBlaXRoZXIgYnl0ZXMgb3IgYnl0ZWFycmF5IChpc3N1ZSAxMjM4MCkKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInYWJjJykKKyAgICAgICAgZm9yIGZpbGxfdHlwZSBpbiAoYnl0ZXMsIGJ5dGVhcnJheSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY2VudGVyKDcsIGZpbGxfdHlwZShiJy0nKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudHlwZTJ0ZXN0KGInLS1hYmMtLScpKQorCisgICAgZGVmIHRlc3RfbGp1c3Qoc2VsZik6CisgICAgICAgICMgRmlsbCBjaGFyYWN0ZXIgY2FuIGJlIGVpdGhlciBieXRlcyBvciBieXRlYXJyYXkgKGlzc3VlIDEyMzgwKQorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidhYmMnKQorICAgICAgICBmb3IgZmlsbF90eXBlIGluIChieXRlcywgYnl0ZWFycmF5KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5sanVzdCg3LCBmaWxsX3R5cGUoYictJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnR5cGUydGVzdChiJ2FiYy0tLS0nKSkKKworICAgIGRlZiB0ZXN0X3JqdXN0KHNlbGYpOgorICAgICAgICAjIEZpbGwgY2hhcmFjdGVyIGNhbiBiZSBlaXRoZXIgYnl0ZXMgb3IgYnl0ZWFycmF5IChpc3N1ZSAxMjM4MCkKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInYWJjJykKKyAgICAgICAgZm9yIGZpbGxfdHlwZSBpbiAoYnl0ZXMsIGJ5dGVhcnJheSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmp1c3QoNywgZmlsbF90eXBlKGInLScpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50eXBlMnRlc3QoYictLS0tYWJjJykpCisKICAgICBkZWYgdGVzdF9vcmQoc2VsZik6CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ1wwQVx4N2ZceDgwXHhmZicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW29yZChiW2k6aSsxXSkgZm9yIGkgaW4gcmFuZ2UobGVuKGIpKV0sCkBAIC01MjksNiArNjU0LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgYi5zdGFydHN3aXRoKGgsIE5vbmUsIC0yKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgYi5zdGFydHN3aXRoKHgsIE5vbmUsIE5vbmUpKQogCisgICAgZGVmIHRlc3RfaW50ZWdlcl9hcmd1bWVudHNfb3V0X29mX2J5dGVfcmFuZ2Uoc2VsZik6CisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2hlbGxvJykKKworICAgICAgICBmb3IgbWV0aG9kIGluIChiLmNvdW50LCBiLmZpbmQsIGIuaW5kZXgsIGIucmZpbmQsIGIucmluZGV4KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1ldGhvZCwgLTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtZXRob2QsIDI1NikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1ldGhvZCwgOTk5OSkKKwogICAgIGRlZiB0ZXN0X2ZpbmRfZXRjX3JhaXNlX2NvcnJlY3RfZXJyb3JfbWVzc2FnZXMoc2VsZik6CiAgICAgICAgICMgaXNzdWUgMTE4MjgKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInaGVsbG8nKQpAQCAtNTQ5LDcgKzY4Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsIE5vbmUsIE5vbmUsIE5vbmUpCiAKIAotY2xhc3MgQnl0ZXNUZXN0KEJhc2VCeXRlc1Rlc3QpOgorY2xhc3MgQnl0ZXNUZXN0KEJhc2VCeXRlc1Rlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlMnRlc3QgPSBieXRlcwogCiAgICAgZGVmIHRlc3RfYnVmZmVyX2lzX3JlYWRvbmx5KHNlbGYpOgpAQCAtNTY4LDYgKzcwMSwxMiBAQAogICAgICAgICAgICAgZGVmIF9fYnl0ZXNfXyhzZWxmKToKICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ5dGVzLCBBKCkpCisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBkZWYgX19ieXRlc19fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBiJ2EnCisgICAgICAgICAgICBkZWYgX19pbmRleF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiA0MgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKEEoKSksIGInYScpCiAKICAgICAjIFRlc3QgUHlCeXRlc19Gcm9tRm9ybWF0KCkKICAgICBkZWYgdGVzdF9mcm9tX2Zvcm1hdChzZWxmKToKQEAgLTU5MSw3ICs3MzAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGInczpjc3RyJykKIAogCi1jbGFzcyBCeXRlQXJyYXlUZXN0KEJhc2VCeXRlc1Rlc3QpOgorY2xhc3MgQnl0ZUFycmF5VGVzdChCYXNlQnl0ZXNUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdHlwZTJ0ZXN0ID0gYnl0ZWFycmF5CiAKICAgICBkZWYgdGVzdF9ub2hhc2goc2VsZik6CkBAIC02MzQsNiArNzczLDM5IEBACiAgICAgICAgIGIucmV2ZXJzZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYikKIAorICAgIGRlZiB0ZXN0X2NsZWFyKHNlbGYpOgorICAgICAgICBiID0gYnl0ZWFycmF5KGIncHl0aG9uJykKKyAgICAgICAgYi5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYicnKQorCisgICAgICAgIGIgPSBieXRlYXJyYXkoYicnKQorICAgICAgICBiLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJycpCisKKyAgICAgICAgYiA9IGJ5dGVhcnJheShiJycpCisgICAgICAgIGIuYXBwZW5kKG9yZCgncicpKQorICAgICAgICBiLmNsZWFyKCkKKyAgICAgICAgYi5hcHBlbmQob3JkKCdwJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidwJykKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgIGIgPSBieXRlYXJyYXkoYidhYmMnKQorICAgICAgICBiYiA9IGIuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmIsIGInYWJjJykKKworICAgICAgICBiID0gYnl0ZWFycmF5KGInJykKKyAgICAgICAgYmIgPSBiLmNvcHkoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJiLCBiJycpCisKKyAgICAgICAgIyB0ZXN0IHRoYXQgaXQncyBpbmRlZWQgYSBjb3B5IGFuZCBub3QgYSByZWZlcmVuY2UKKyAgICAgICAgYiA9IGJ5dGVhcnJheShiJ2FiYycpCisgICAgICAgIGJiID0gYi5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiYikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChiLCBiYikKKyAgICAgICAgYmIuYXBwZW5kKG9yZCgnZCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJiLCBiJ2FiY2QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInYWJjJykKKwogICAgIGRlZiB0ZXN0X3JlZ2V4cHMoc2VsZik6CiAgICAgICAgIGRlZiBieShzKToKICAgICAgICAgICAgIHJldHVybiBieXRlYXJyYXkobWFwKG9yZCwgcykpCkBAIC0xMTIyLDE0ICsxMjk0LDE2IEBACiAgICAgZGVmIHRlc3RfbG93ZXIoc2VsZik6CiAgICAgICAgIHBhc3MKIAotY2xhc3MgQnl0ZUFycmF5QXNTdHJpbmdUZXN0KEZpeGVkU3RyaW5nVGVzdCk6CitjbGFzcyBCeXRlQXJyYXlBc1N0cmluZ1Rlc3QoRml4ZWRTdHJpbmdUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdHlwZTJ0ZXN0ID0gYnl0ZWFycmF5CisgICAgY29udGFpbnNfYnl0ZXMgPSBUcnVlCiAKLWNsYXNzIEJ5dGVzQXNTdHJpbmdUZXN0KEZpeGVkU3RyaW5nVGVzdCk6CitjbGFzcyBCeXRlc0FzU3RyaW5nVGVzdChGaXhlZFN0cmluZ1Rlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlMnRlc3QgPSBieXRlcworICAgIGNvbnRhaW5zX2J5dGVzID0gVHJ1ZQogCiAKLWNsYXNzIFN1YmNsYXNzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBTdWJjbGFzc1Rlc3Q6CiAKICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Moc2VsZi5zdWJjbGFzczJ0ZXN0LCBzZWxmLnR5cGUydGVzdCkpCkBAIC0xMjAxLDcgKzEzNzUsNyBAQAogY2xhc3MgQnl0ZXNTdWJjbGFzcyhieXRlcyk6CiAgICAgcGFzcwogCi1jbGFzcyBCeXRlQXJyYXlTdWJjbGFzc1Rlc3QoU3ViY2xhc3NUZXN0KToKK2NsYXNzIEJ5dGVBcnJheVN1YmNsYXNzVGVzdChTdWJjbGFzc1Rlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlMnRlc3QgPSBieXRlYXJyYXkKICAgICBzdWJjbGFzczJ0ZXN0ID0gQnl0ZUFycmF5U3ViY2xhc3MKIApAQCAtMTIxNiwxNiArMTM5MCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIGIiYWJjZCIpCiAKIAotY2xhc3MgQnl0ZXNTdWJjbGFzc1Rlc3QoU3ViY2xhc3NUZXN0KToKK2NsYXNzIEJ5dGVzU3ViY2xhc3NUZXN0KFN1YmNsYXNzVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHR5cGUydGVzdCA9IGJ5dGVzCiAgICAgc3ViY2xhc3MydGVzdCA9IEJ5dGVzU3ViY2xhc3MKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgQnl0ZXNUZXN0LCBBc3NvcnRlZEJ5dGVzVGVzdCwgQnl0ZXNBc1N0cmluZ1Rlc3QsCi0gICAgICAgIEJ5dGVBcnJheVRlc3QsIEJ5dGVBcnJheUFzU3RyaW5nVGVzdCwgQnl0ZXNTdWJjbGFzc1Rlc3QsCi0gICAgICAgIEJ5dGVBcnJheVN1YmNsYXNzVGVzdCwgQnl0ZWFycmF5UEVQMzEzN1Rlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnoyLnB5IGIvTGliL3Rlc3QvdGVzdF9iejIucHkKaW5kZXggZmIxMDRkNy4uZGY3ZTE4YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iejIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iejIucHkKQEAgLTEsMTAgKzEsMTEgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbjMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgXzRHLCBiaWdtZW10ZXN0LCBmaW5kZmlsZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgYmlnbWVtdGVzdCwgXzRHCiAKIGltcG9ydCB1bml0dGVzdAogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogaW1wb3J0IG9zCitpbXBvcnQgcmFuZG9tCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogCkBAIC0yMSwxMyArMjIsMzkgQEAKIAogY2xhc3MgQmFzZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICJCYXNlIGZvciBvdGhlciB0ZXN0Y2FzZXMuIgotICAgIFRFWFQgPSBiJ3Jvb3Q6eDowOjA6cm9vdDovcm9vdDovYmluL2Jhc2hcbmJpbjp4OjE6MTpiaW46L2JpbjpcbmRhZW1vbjp4OjI6MjpkYWVtb246L3NiaW46XG5hZG06eDozOjQ6YWRtOi92YXIvYWRtOlxubHA6eDo0Ojc6bHA6L3Zhci9zcG9vbC9scGQ6XG5zeW5jOng6NTowOnN5bmM6L3NiaW46L2Jpbi9zeW5jXG5zaHV0ZG93bjp4OjY6MDpzaHV0ZG93bjovc2Jpbjovc2Jpbi9zaHV0ZG93blxuaGFsdDp4Ojc6MDpoYWx0Oi9zYmluOi9zYmluL2hhbHRcbm1haWw6eDo4OjEyOm1haWw6L3Zhci9zcG9vbC9tYWlsOlxubmV3czp4Ojk6MTM6bmV3czovdmFyL3Nwb29sL25ld3M6XG51dWNwOng6MTA6MTQ6dXVjcDovdmFyL3Nwb29sL3V1Y3A6XG5vcGVyYXRvcjp4OjExOjA6b3BlcmF0b3I6L3Jvb3Q6XG5nYW1lczp4OjEyOjEwMDpnYW1lczovdXNyL2dhbWVzOlxuZ29waGVyOng6MTM6MzA6Z29waGVyOi91c3IvbGliL2dvcGhlci1kYXRhOlxuZnRwOng6MTQ6NTA6RlRQIFVzZXI6L3Zhci9mdHA6L2Jpbi9iYXNoXG5ub2JvZHk6eDo2NTUzNDo2NTUzNDpOb2JvZHk6L2hvbWU6XG5wb3N0Zml4Ong6MTAwOjEwMTpwb3N0Zml4Oi92YXIvc3Bvb2wvcG9zdGZpeDpcbm5pZW1leWVyOng6NTAwOjUwMDo6L2hvbWUvbmllbWV5ZXI6L2Jpbi9iYXNoXG5wb3N0Z3Jlczp4OjEwMToxMDI6UG9zdGdyZVNRTCBTZXJ2ZXI6L3Zhci9saWIvcGdzcWw6L2Jpbi9iYXNoXG5teXNxbDp4OjEwMjoxMDM6TXlTUUwgc2VydmVyOi92YXIvbGliL215c3FsOi9iaW4vYmFzaFxud3d3Ong6MTAzOjEwNDo6L3Zhci93d3c6L2Jpbi9mYWxzZVxuJworICAgIFRFWFRfTElORVMgPSBbCisgICAgICAgIGIncm9vdDp4OjA6MDpyb290Oi9yb290Oi9iaW4vYmFzaFxuJywKKyAgICAgICAgYidiaW46eDoxOjE6YmluOi9iaW46XG4nLAorICAgICAgICBiJ2RhZW1vbjp4OjI6MjpkYWVtb246L3NiaW46XG4nLAorICAgICAgICBiJ2FkbTp4OjM6NDphZG06L3Zhci9hZG06XG4nLAorICAgICAgICBiJ2xwOng6NDo3OmxwOi92YXIvc3Bvb2wvbHBkOlxuJywKKyAgICAgICAgYidzeW5jOng6NTowOnN5bmM6L3NiaW46L2Jpbi9zeW5jXG4nLAorICAgICAgICBiJ3NodXRkb3duOng6NjowOnNodXRkb3duOi9zYmluOi9zYmluL3NodXRkb3duXG4nLAorICAgICAgICBiJ2hhbHQ6eDo3OjA6aGFsdDovc2Jpbjovc2Jpbi9oYWx0XG4nLAorICAgICAgICBiJ21haWw6eDo4OjEyOm1haWw6L3Zhci9zcG9vbC9tYWlsOlxuJywKKyAgICAgICAgYiduZXdzOng6OToxMzpuZXdzOi92YXIvc3Bvb2wvbmV3czpcbicsCisgICAgICAgIGIndXVjcDp4OjEwOjE0OnV1Y3A6L3Zhci9zcG9vbC91dWNwOlxuJywKKyAgICAgICAgYidvcGVyYXRvcjp4OjExOjA6b3BlcmF0b3I6L3Jvb3Q6XG4nLAorICAgICAgICBiJ2dhbWVzOng6MTI6MTAwOmdhbWVzOi91c3IvZ2FtZXM6XG4nLAorICAgICAgICBiJ2dvcGhlcjp4OjEzOjMwOmdvcGhlcjovdXNyL2xpYi9nb3BoZXItZGF0YTpcbicsCisgICAgICAgIGInZnRwOng6MTQ6NTA6RlRQIFVzZXI6L3Zhci9mdHA6L2Jpbi9iYXNoXG4nLAorICAgICAgICBiJ25vYm9keTp4OjY1NTM0OjY1NTM0Ok5vYm9keTovaG9tZTpcbicsCisgICAgICAgIGIncG9zdGZpeDp4OjEwMDoxMDE6cG9zdGZpeDovdmFyL3Nwb29sL3Bvc3RmaXg6XG4nLAorICAgICAgICBiJ25pZW1leWVyOng6NTAwOjUwMDo6L2hvbWUvbmllbWV5ZXI6L2Jpbi9iYXNoXG4nLAorICAgICAgICBiJ3Bvc3RncmVzOng6MTAxOjEwMjpQb3N0Z3JlU1FMIFNlcnZlcjovdmFyL2xpYi9wZ3NxbDovYmluL2Jhc2hcbicsCisgICAgICAgIGInbXlzcWw6eDoxMDI6MTAzOk15U1FMIHNlcnZlcjovdmFyL2xpYi9teXNxbDovYmluL2Jhc2hcbicsCisgICAgICAgIGInd3d3Ong6MTAzOjEwNDo6L3Zhci93d3c6L2Jpbi9mYWxzZVxuJywKKyAgICAgICAgXQorICAgIFRFWFQgPSBiJycuam9pbihURVhUX0xJTkVTKQogICAgIERBVEEgPSBiJ0JaaDkxQVkmU1kuXHhjOE5ceDE4XHgwMFx4MDE+X1x4ODBceDAwXHgxMEBceDAyXHhmZlx4ZjBceDAxXHgwN25ceDAwP1x4ZTdceGZmXHhlMDBceDAxXHg5OVx4YWFceDAwXHhjMFx4MDNGXHg4Nlx4OGMjJlx4ODNGXHg5YVx4MDNceDA2XHhhNlx4ZDBceGE2XHg5M01ceDBmUVx4YTdceGE4XHgwNlx4ODA0aGhceDEyJFx4MTFceGE0aTRceGYxNFNceGQyPFFceGI1XHgwZkhceGQzXHhkNFx4ZGRceGQ1XHg4N1x4YmJceGY4XHg5NFxyXHg4Zlx4YWZJXHgxMlx4ZTFceGM5XHhmOC9FXHgwMHB1XHg4OVx4MTJdXHhjOVx4YmJETFxuUVx4MGVcdDFceDEyXHhkZlx4YTBceGMwXHg5N1x4YWMyTzlceDg5XHgxM1x4OTRceDBlXHgxYzdceDBlZFx4OTVJXHgwY1x4YWFKXHhhNFx4MThMXHgxMFx4MDUjXHg5Y1x4YWZceGJhXHhiYy9ceDk3XHg4YSNDXHhjOFx4ZTFceDhjV1x4ZjlceGUyXHhkMFx4ZDZNXHhhN1x4OGJYYTxlXHg4NHRceGNiTFx4YjNceGE3XHhkOVx4Y2RceGQxXHhjYlx4ODQuXHhhZlx4YjNceGFiXHhhYlx4YWRgbn1ceGEwbGhcdEUsXHg4ZVpceDE1XHgxN1ZIPlx4ODhceGU1XHhjZDlnZDZceDBiXG5ceGU5XHg5Ylx4ZDVceDhhXHg5OVx4ZjdceDA4LktceDhldlx4ZmJceGY3eHdceGJiXHhkZlx4YTFceDkyXHhmMVx4ZGR8LyI7XHhhMlx4YmFceDlmXHhkNVx4YjEjQVx4YjZceGY2XHhiM29ceGM5XHhjNXlcXFx4ZWJPXHhlN1x4ODVceDlhXHhiY1x4YjZmOFx4OTUyXHhkNVx4ZDciJVx4ODk+VixceGY3XHhhNnpceGUyXHg5Zlx4YTNceGRmXHgxMVx4MTEiXHhkNkUpSVx4YTlceDEzXlx4Y2FceGYzclx4ZDBceDAzVVx4OTIyXHhmMjZceGVjXHhiNlx4ZWRceDhiXHhjM1VceDEzXHg5ZFx4YzVceDE3MFx4YTRceGZhXlx4OTJceGFjREZceDhhXHg5N1x4ZDZceDE5XHhmZVx4ZGRceGI4XHhiZFx4MWFceDlhXHgxOVx4YTNceDgwYW5rUlx4OGJceGU1XHhkODNdXHhhOVx4YzZceDA4XHg4MmZceGY2XHhiOSI2bCRceGI4akBceGMwXHg4YVx4YjBsMS4uXHhiYWtceDgzbHNceDE1XHhiY1x4ZjRceGMxXHgxM1x4YmVceGY4RVx4YjhceDlkXHJceGE4XHg5ZGtceDg0XHhkM25ceGZhXHhhY1FceDA3XHhiMSV5XHhhYXZceGI0XHgwOFx4ZTB6XHgxYlx4MTZceGY1XHgwNFx4ZTlceGNjXHhiOVx4MDh6XHgxZW43LkdceGZjXVx4YzlceDE0XHhlMUJAXHhiYiE4YCcKLSAgICBEQVRBX0NSTEYgPSBiJ0JaaDkxQVkmU1lceGFlelx4YmJOXHgwMFx4MDFIXHhkZlx4ODBceDAwXHgxMkBceDAyXHhmZlx4ZjBceDAxXHgwN25ceDAwP1x4ZTdceGZmXHhlMEBceDAxXHhiY1x4YzZgXHg4NipceDhkPU1ceGE5XHg5YVx4ODZceGQwTEBceDBmSVx4YTYhXHhhMVx4MTNceGM4XHg4OGpkaVx4OGRAXHgwM0BceDFhXHgxYVx4MGNceDBjXHg4MyBceDAwXHhjNGgyXHgxOVx4MDFceDgyRFx4ODRlXHRceGU4XHg5OVx4ODlceDE5XHgxYWhceDAwXHJceDFhXHgxMVx4YWZceDliXHgwZkdceGY1KFx4MWJceDFmP1x0XHgxMlx4Y2ZceGI1XHhmY1x4OTVFXHgwMHBzXHg4OVx4MTJeXHhhNFx4ZGRceGEyJlx4MDUoXHg4N1x4MDRceDk4XHg4OXVceGU0MCVceGI2XHgxOVwnXHg4Y1x4YzRceDg5XHhjYVx4MDdceDBlXHgxYiFceDkxVUlGVSVDXHg5OTQhRElceGQyXHhmYVx4ZjBceGYxTjhXXHhkZVx4MTNBXHhmNVx4OWNyJT9ceDlmMztJNDVBXHhkMVx4OGJUXHhiMTxsXHhiYVx4Y2JfXHhjMDB4WVx4MTdyXHgxN1x4ODhceDA4XHgwOEBceGEwXHJ5QFx4MTBceDA0JClgXHhmMlx4Y2VceDg5elx4YjBzXHhlY1x4OWIuaVdceDlkXHg4MVx4YjUtK3RceDlmXHgxYVwnXHg5N2RCXHhmNXhceGI1XHhiZS5bLlx4ZDdceDBlXHg4MVx4ZTdceDA4XHgxY05gXHg4OFx4MTBceGNhXHg4N1x4YzMhIlx4ODBceDkyUlx4YTEvXHhkMVx4YzBceGU2bWZceGFjXHhiZFx4OTlceGNjYVx4YjNceDg3ODA+XHhhNFx4YzdceDhkXHgxYVxcIlx4YWRceGExXHhhYnlCZ1x4MTVceGI5bFx4ODhceDg4XHg5MWsiXHg5NFx4YTRceGQ0XHg4OVx4YWUqXHhhNlx4MGJceDEwXHgwY1x4ZDZceGQ0bVx4ZTg2XHhlY1x4YjVqXHg4YVx4ODZqXCc7XHhjYS5ceDAxSVx4ZjJceGFhSlx4ZThceDg4XHg4Y1UrdDNceGZiXHgwY1xuXHhhMzNceDEzcjJcclx4MTZceGUwXHhiMyhceGJmXHgxZFx4ODNyXHhlN01ceGYwRFx4MTM2NVx4ZDhceDg4XHhkM1x4YTRceDkyXHhjYjJceDA2XHgwNFxcXHhjMVx4YjBceGVhLy9ceGJlayZceGQ4XHhlNit0XHhlNVx4YTFceDEzXHhhZGFceDE2XHhkZXI1InddXHhhMmlceGI3W1x4OTdSIFx4ZTJJVFx4Y2Q7Wlx4MDRkazRceGFkXHg4YVx0XHhkM1x4ODF6XHgxMFx4ZjE6XmBceGFiXHgxZlx4YzVceGRjXHg5MU5ceDE0JCtceDllXHhhZVx4ZDNceDgwJwogICAgIEVNUFRZX0RBVEEgPSBiJ0JaaDlceDE3ckU4UFx4OTBceDAwXHgwMFx4MDBceDAwJwogCi0gICAgd2l0aCBvcGVuKGZpbmRmaWxlKCJ0ZXN0YnoyX2JpZ21lbS5iejIiKSwgInJiIikgYXMgZjoKLSAgICAgICAgREFUQV9CSUdNRU0gPSBmLnJlYWQoKQorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5maWxlbmFtZSA9IFRFU1RGTgorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzZWxmLmZpbGVuYW1lKToKKyAgICAgICAgICAgIG9zLnVubGluayhzZWxmLmZpbGVuYW1lKQogCiAgICAgaWYgaGFzX2NtZGxpbmVfYnVuemlwMjoKICAgICAgICAgZGVmIGRlY29tcHJlc3Moc2VsZiwgZGF0YSk6CkBAIC00OCw5NCArNzUsMTUyIEBACiAgICAgICAgIGRlZiBkZWNvbXByZXNzKHNlbGYsIGRhdGEpOgogICAgICAgICAgICAgcmV0dXJuIGJ6Mi5kZWNvbXByZXNzKGRhdGEpCiAKLQogY2xhc3MgQloyRmlsZVRlc3QoQmFzZVRlc3QpOgogICAgICJUZXN0IEJaMkZpbGUgdHlwZSBtaXNjZWxsYW5lb3VzIG1ldGhvZHMuIgogCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmZpbGVuYW1lID0gVEVTVEZOCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHNlbGYuZmlsZW5hbWUpOgotICAgICAgICAgICAgb3MudW5saW5rKHNlbGYuZmlsZW5hbWUpCi0KLSAgICBkZWYgY3JlYXRlVGVtcEZpbGUoc2VsZiwgY3JsZj0wKToKKyAgICBkZWYgY3JlYXRlVGVtcEZpbGUoc2VsZiwgc3RyZWFtcz0xKToKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6Ci0gICAgICAgICAgICBpZiBjcmxmOgotICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLkRBVEFfQ1JMRgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5EQVRBCi0gICAgICAgICAgICBmLndyaXRlKGRhdGEpCisgICAgICAgICAgICBmLndyaXRlKHNlbGYuREFUQSAqIHN0cmVhbXMpCisKKyAgICBkZWYgdGVzdEJhZEFyZ3Moc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIEJaMkZpbGUoMTIzLjQ1NikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIEJaMkZpbGUoIi9kZXYvbnVsbCIsICJ6IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIEJaMkZpbGUoIi9kZXYvbnVsbCIsICJyeCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBCWjJGaWxlKCIvZGV2L251bGwiLCAicmJ0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIEJaMkZpbGUoIi9kZXYvbnVsbCIsIGNvbXByZXNzbGV2ZWw9MCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIEJaMkZpbGUoIi9kZXYvbnVsbCIsIGNvbXByZXNzbGV2ZWw9MTApCiAKICAgICBkZWYgdGVzdFJlYWQoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5yZWFkKCkiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkLCBOb25lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUKQogCisgICAgZGVmIHRlc3RSZWFkTXVsdGlTdHJlYW0oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz01KQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUICogNSkKKworICAgIGRlZiB0ZXN0UmVhZE1vbmtleU11bHRpU3RyZWFtKHNlbGYpOgorICAgICAgICAjIFRlc3QgQloyRmlsZS5yZWFkKCkgb24gYSBtdWx0aS1zdHJlYW0gYXJjaGl2ZSB3aGVyZSBhIHN0cmVhbQorICAgICAgICAjIGJvdW5kYXJ5IGNvaW5jaWRlcyB3aXRoIHRoZSBlbmQgb2YgdGhlIHJhdyByZWFkIGJ1ZmZlci4KKyAgICAgICAgYnVmZmVyX3NpemUgPSBiejIuX0JVRkZFUl9TSVpFCisgICAgICAgIGJ6Mi5fQlVGRkVSX1NJWkUgPSBsZW4oc2VsZi5EQVRBKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9NSkKKyAgICAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkLCBOb25lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCAqIDUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBiejIuX0JVRkZFUl9TSVpFID0gYnVmZmVyX3NpemUKKwogICAgIGRlZiB0ZXN0UmVhZDAoc2VsZik6Ci0gICAgICAgICMgVGVzdCBCQloyRmlsZS5yZWFkKDApIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgTm9uZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKDApLCBiIiIpCiAKICAgICBkZWYgdGVzdFJlYWRDaHVuazEwKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUucmVhZCgpIGluIGNodW5rcyBvZiAxMCBieXRlcyIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgdGV4dCA9IGInJwotICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgc3RyID0gYnoyZi5yZWFkKDEwKQogICAgICAgICAgICAgICAgIGlmIG5vdCBzdHI6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgdGV4dCArPSBzdHIKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgc2VsZi5URVhUKQogCisgICAgZGVmIHRlc3RSZWFkQ2h1bmsxME11bHRpU3RyZWFtKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9NSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICB0ZXh0ID0gYicnCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHN0ciA9IGJ6MmYucmVhZCgxMCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RyOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHRleHQgKz0gc3RyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIHNlbGYuVEVYVCAqIDUpCisKICAgICBkZWYgdGVzdFJlYWQxMDAoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5yZWFkKDEwMCkiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKDEwMCksIHNlbGYuVEVYVFs6MTAwXSkKIAorICAgIGRlZiB0ZXN0UGVlayhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgcGRhdGEgPSBiejJmLnBlZWsoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChsZW4ocGRhdGEpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuVEVYVC5zdGFydHN3aXRoKHBkYXRhKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCkKKworICAgIGRlZiB0ZXN0UmVhZEludG8oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIG4gPSAxMjgKKyAgICAgICAgICAgIGIgPSBieXRlYXJyYXkobikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkaW50byhiKSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgc2VsZi5URVhUWzpuXSkKKyAgICAgICAgICAgIG4gPSBsZW4oc2VsZi5URVhUKSAtIG4KKyAgICAgICAgICAgIGIgPSBieXRlYXJyYXkobGVuKHNlbGYuVEVYVCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZGludG8oYiksIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJbOm5dLCBzZWxmLlRFWFRbLW46XSkKKwogICAgIGRlZiB0ZXN0UmVhZExpbmUoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5yZWFkbGluZSgpIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZGxpbmUsIE5vbmUpCi0gICAgICAgICAgICBzaW8gPSBCeXRlc0lPKHNlbGYuVEVYVCkKLSAgICAgICAgICAgIGZvciBsaW5lIGluIHNpby5yZWFkbGluZXMoKToKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuVEVYVF9MSU5FUzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZGxpbmUoKSwgbGluZSkKKworICAgIGRlZiB0ZXN0UmVhZExpbmVNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWRsaW5lLCBOb25lKQorICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5URVhUX0xJTkVTICogNToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZGxpbmUoKSwgbGluZSkKIAogICAgIGRlZiB0ZXN0UmVhZExpbmVzKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUucmVhZGxpbmVzKCkiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkbGluZXMsIE5vbmUpCi0gICAgICAgICAgICBzaW8gPSBCeXRlc0lPKHNlbGYuVEVYVCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkbGluZXMoKSwgc2lvLnJlYWRsaW5lcygpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWRsaW5lcygpLCBzZWxmLlRFWFRfTElORVMpCisKKyAgICBkZWYgdGVzdFJlYWRMaW5lc011bHRpU3RyZWFtKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9NSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZGxpbmVzLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWRsaW5lcygpLCBzZWxmLlRFWFRfTElORVMgKiA1KQogCiAgICAgZGVmIHRlc3RJdGVyYXRvcihzZWxmKToKLSAgICAgICAgIyAiVGVzdCBpdGVyKEJaMkZpbGUpIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6Ci0gICAgICAgICAgICBzaW8gPSBCeXRlc0lPKHNlbGYuVEVYVCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdGVyKGJ6MmYpKSwgc2lvLnJlYWRsaW5lcygpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0ZXIoYnoyZikpLCBzZWxmLlRFWFRfTElORVMpCisKKyAgICBkZWYgdGVzdEl0ZXJhdG9yTXVsdGlTdHJlYW0oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz01KQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdGVyKGJ6MmYpKSwgc2VsZi5URVhUX0xJTkVTICogNSkKIAogICAgIGRlZiB0ZXN0Q2xvc2VkSXRlcmF0b3JEZWFkbG9jayhzZWxmKToKLSAgICAgICAgIyAiVGVzdCB0aGF0IGl0ZXJhdGlvbiBvbiBhIGNsb3NlZCBiejJmaWxlIHJlbGVhc2VzIHRoZSBsb2NrLiIKLSAgICAgICAgIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzMwOQorICAgICAgICAjIElzc3VlICMzMzA5OiBJdGVyYXRpb24gb24gYSBjbG9zZWQgQloyRmlsZSBzaG91bGQgcmVsZWFzZSB0aGUgbG9jay4KICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIGJ6MmYgPSBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpCiAgICAgICAgIGJ6MmYuY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLl9fbmV4dF9fKQotICAgICAgICAjIFRoaXMgY2FsbCB3aWxsIGRlYWRsb2NrIG9mIHRoZSBhYm92ZSAuX19uZXh0X18gY2FsbCBmYWlsZWQgdG8KKyAgICAgICAgIyBUaGlzIGNhbGwgd2lsbCBkZWFkbG9jayBpZiB0aGUgYWJvdmUgLl9fbmV4dF9fIGNhbGwgZmFpbGVkIHRvCiAgICAgICAgICMgcmVsZWFzZSB0aGUgbG9jay4KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi5yZWFkbGluZXMpCiAKICAgICBkZWYgdGVzdFdyaXRlKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUud3JpdGUoKSIKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUsICJ3IikgYXMgYnoyZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi53cml0ZSkKICAgICAgICAgICAgIGJ6MmYud3JpdGUoc2VsZi5URVhUKQpAQCAtMTQzLDEwICsyMjgsOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRlY29tcHJlc3MoZi5yZWFkKCkpLCBzZWxmLlRFWFQpCiAKICAgICBkZWYgdGVzdFdyaXRlQ2h1bmtzMTAoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS53cml0ZSgpIHdpdGggY2h1bmtzIG9mIDEwIGJ5dGVzIgogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSwgInciKSBhcyBiejJmOgogICAgICAgICAgICAgbiA9IDAKLSAgICAgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgIHN0ciA9IHNlbGYuVEVYVFtuKjEwOihuKzEpKjEwXQogICAgICAgICAgICAgICAgIGlmIG5vdCBzdHI6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0xNTUsMTMgKzIzOSwxOSBAQAogICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgJ3JiJykgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kZWNvbXByZXNzKGYucmVhZCgpKSwgc2VsZi5URVhUKQogCisgICAgZGVmIHRlc3RXcml0ZU5vbkRlZmF1bHRDb21wcmVzc0xldmVsKHNlbGYpOgorICAgICAgICBleHBlY3RlZCA9IGJ6Mi5jb21wcmVzcyhzZWxmLlRFWFQsIGNvbXByZXNzbGV2ZWw9NSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUsICJ3IiwgY29tcHJlc3NsZXZlbD01KSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi53cml0ZShzZWxmLlRFWFQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgZXhwZWN0ZWQpCisKICAgICBkZWYgdGVzdFdyaXRlTGluZXMoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS53cml0ZWxpbmVzKCkiCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAidyIpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYud3JpdGVsaW5lcykKLSAgICAgICAgICAgIHNpbyA9IEJ5dGVzSU8oc2VsZi5URVhUKQotICAgICAgICAgICAgYnoyZi53cml0ZWxpbmVzKHNpby5yZWFkbGluZXMoKSkKLSAgICAgICAgIyBwYXRjaCAjMTUzNTUwMAorICAgICAgICAgICAgYnoyZi53cml0ZWxpbmVzKHNlbGYuVEVYVF9MSU5FUykKKyAgICAgICAgIyBJc3N1ZSAjMTUzNTUwMDogQ2FsbGluZyB3cml0ZWxpbmVzKCkgb24gYSBjbG9zZWQgQloyRmlsZQorICAgICAgICAjIHNob3VsZCByYWlzZSBhbiBleGNlcHRpb24uCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYud3JpdGVsaW5lcywgWyJhIl0pCiAgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAncmInKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRlY29tcHJlc3MoZi5yZWFkKCkpLCBzZWxmLlRFWFQpCkBAIC0xNzQsMzkgKzI2NCw3MyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgYnoyZi53cml0ZSwgYiJhIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGJ6MmYud3JpdGVsaW5lcywgW2IiYSJdKQogCisgICAgZGVmIHRlc3RBcHBlbmQoc2VsZik6CisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAidyIpIGFzIGJ6MmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYud3JpdGUpCisgICAgICAgICAgICBiejJmLndyaXRlKHNlbGYuVEVYVCkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUsICJhIikgYXMgYnoyZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi53cml0ZSkKKyAgICAgICAgICAgIGJ6MmYud3JpdGUoc2VsZi5URVhUKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kZWNvbXByZXNzKGYucmVhZCgpKSwgc2VsZi5URVhUICogMikKKwogICAgIGRlZiB0ZXN0U2Vla0ZvcndhcmQoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5zZWVrKDE1MCwgMCkiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5zZWVrKQogICAgICAgICAgICAgYnoyZi5zZWVrKDE1MCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVFsxNTA6XSkKIAorICAgIGRlZiB0ZXN0U2Vla0ZvcndhcmRBY3Jvc3NTdHJlYW1zKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9MikKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYuc2VlaykKKyAgICAgICAgICAgIGJ6MmYuc2VlayhsZW4oc2VsZi5URVhUKSArIDE1MCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVFsxNTA6XSkKKwogICAgIGRlZiB0ZXN0U2Vla0JhY2t3YXJkcyhzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnNlZWsoLTE1MCwgMSkiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIGJ6MmYucmVhZCg1MDApCiAgICAgICAgICAgICBiejJmLnNlZWsoLTE1MCwgMSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVFs1MDAtMTUwOl0pCiAKKyAgICBkZWYgdGVzdFNlZWtCYWNrd2FyZHNBY3Jvc3NTdHJlYW1zKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9MikKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICByZWFkdG8gPSBsZW4oc2VsZi5URVhUKSArIDEwMAorICAgICAgICAgICAgd2hpbGUgcmVhZHRvID4gMDoKKyAgICAgICAgICAgICAgICByZWFkdG8gLT0gbGVuKGJ6MmYucmVhZChyZWFkdG8pKQorICAgICAgICAgICAgYnoyZi5zZWVrKC0xNTAsIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFRbMTAwLTE1MDpdICsgc2VsZi5URVhUKQorCiAgICAgZGVmIHRlc3RTZWVrQmFja3dhcmRzRnJvbUVuZChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnNlZWsoLTE1MCwgMikiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIGJ6MmYuc2VlaygtMTUwLCAyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUW2xlbihzZWxmLlRFWFQpLTE1MDpdKQogCisgICAgZGVmIHRlc3RTZWVrQmFja3dhcmRzRnJvbUVuZEFjcm9zc1N0cmVhbXMoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz0yKQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYuc2VlaygtMTAwMCwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIChzZWxmLlRFWFQgKiAyKVstMTAwMDpdKQorCiAgICAgZGVmIHRlc3RTZWVrUG9zdEVuZChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnNlZWsoMTUwMDAwKSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgYnoyZi5zZWVrKDE1MDAwMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi50ZWxsKCksIGxlbihzZWxmLlRFWFQpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgYiIiKQogCisgICAgZGVmIHRlc3RTZWVrUG9zdEVuZE11bHRpU3RyZWFtKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9NSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBiejJmLnNlZWsoMTUwMDAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnRlbGwoKSwgbGVuKHNlbGYuVEVYVCkgKiA1KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgYiIiKQorCiAgICAgZGVmIHRlc3RTZWVrUG9zdEVuZFR3aWNlKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUuc2VlaygxNTAwMDApIHR3aWNlIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBiejJmLnNlZWsoMTUwMDAwKQpAQCAtMjE0LDI3ICszMzgsMTA5IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYudGVsbCgpLCBsZW4oc2VsZi5URVhUKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIGIiIikKIAorICAgIGRlZiB0ZXN0U2Vla1Bvc3RFbmRUd2ljZU11bHRpU3RyZWFtKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9NSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBiejJmLnNlZWsoMTUwMDAwKQorICAgICAgICAgICAgYnoyZi5zZWVrKDE1MDAwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi50ZWxsKCksIGxlbihzZWxmLlRFWFQpICogNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIGIiIikKKwogICAgIGRlZiB0ZXN0U2Vla1ByZVN0YXJ0KHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUuc2VlaygtMTUwLCAwKSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgYnoyZi5zZWVrKC0xNTApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYudGVsbCgpLCAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUKQogCisgICAgZGVmIHRlc3RTZWVrUHJlU3RhcnRNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTIpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi5zZWVrKC0xNTApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYudGVsbCgpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUICogMikKKworICAgIGRlZiB0ZXN0RmlsZW5vKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICdyYicpIGFzIHJhd2Y6CisgICAgICAgICAgICBiejJmID0gQloyRmlsZShyYXdmKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5maWxlbm8oKSwgcmF3Zi5maWxlbm8oKSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYnoyZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYuZmlsZW5vKQorCisgICAgZGVmIHRlc3RTZWVrYWJsZShzZWxmKToKKyAgICAgICAgYnoyZiA9IEJaMkZpbGUoQnl0ZXNJTyhzZWxmLkRBVEEpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYnoyZi5zZWVrYWJsZSgpKQorICAgICAgICAgICAgYnoyZi5yZWFkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiejJmLnNlZWthYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBiejJmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi5zZWVrYWJsZSkKKworICAgICAgICBiejJmID0gQloyRmlsZShCeXRlc0lPKCksIG1vZGU9InciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ6MmYuc2Vla2FibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJ6MmYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLnNlZWthYmxlKQorCisgICAgICAgIHNyYyA9IEJ5dGVzSU8oc2VsZi5EQVRBKQorICAgICAgICBzcmMuc2Vla2FibGUgPSBsYW1iZGE6IEZhbHNlCisgICAgICAgIGJ6MmYgPSBCWjJGaWxlKHNyYykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiejJmLnNlZWthYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBiejJmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi5zZWVrYWJsZSkKKworICAgIGRlZiB0ZXN0UmVhZGFibGUoc2VsZik6CisgICAgICAgIGJ6MmYgPSBCWjJGaWxlKEJ5dGVzSU8oc2VsZi5EQVRBKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ6MmYucmVhZGFibGUoKSkKKyAgICAgICAgICAgIGJ6MmYucmVhZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYnoyZi5yZWFkYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYucmVhZGFibGUpCisKKyAgICAgICAgYnoyZiA9IEJaMkZpbGUoQnl0ZXNJTygpLCBtb2RlPSJ3IikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiejJmLnJlYWRhYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBiejJmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi5yZWFkYWJsZSkKKworICAgIGRlZiB0ZXN0V3JpdGFibGUoc2VsZik6CisgICAgICAgIGJ6MmYgPSBCWjJGaWxlKEJ5dGVzSU8oc2VsZi5EQVRBKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiejJmLndyaXRhYmxlKCkpCisgICAgICAgICAgICBiejJmLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiejJmLndyaXRhYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBiejJmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi53cml0YWJsZSkKKworICAgICAgICBiejJmID0gQloyRmlsZShCeXRlc0lPKCksIG1vZGU9InciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYnoyZi53cml0YWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYud3JpdGFibGUpCisKICAgICBkZWYgdGVzdE9wZW5EZWwoc2VsZik6Ci0gICAgICAgICMgIlRlc3Qgb3BlbmluZyBhbmQgZGVsZXRpbmcgYSBmaWxlIG1hbnkgdGltZXMiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICBmb3IgaSBpbiByYW5nZSgxMDAwMCk6CiAgICAgICAgICAgICBvID0gQloyRmlsZShzZWxmLmZpbGVuYW1lKQogICAgICAgICAgICAgZGVsIG8KIAogICAgIGRlZiB0ZXN0T3Blbk5vbmV4aXN0ZW50KHNlbGYpOgotICAgICAgICAjICJUZXN0IG9wZW5pbmcgYSBub25leGlzdGVudCBmaWxlIgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBCWjJGaWxlLCAiL25vbi9leGlzdGVudCIpCiAKLSAgICBkZWYgdGVzdEJ1ZzExOTEwNDMoc2VsZik6Ci0gICAgICAgICMgcmVhZGxpbmVzKCkgZm9yIGZpbGVzIGNvbnRhaW5pbmcgbm8gbmV3bGluZQorICAgIGRlZiB0ZXN0UmVhZGxpbmVzTm9OZXdsaW5lKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxMTkxMDQzOiByZWFkbGluZXMoKSBmYWlscyBvbiBhIGZpbGUgY29udGFpbmluZyBubyBuZXdsaW5lLgogICAgICAgICBkYXRhID0gYidCWmg5MUFZJlNZXHhkOWJceDg5XVx4MDBceDAwXHgwMFx4MDNceDgwXHgwNFx4MDBceDAyXHgwMFx4MGNceDAwIFx4MDAhXHg5YWgzTVx4MTM8XVx4YzlceDE0XHhlMUJDZVx4OGEldCcKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKGRhdGEpCkBAIC0yNDYsNyArNDUyLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4bGluZXMsIFtiJ1Rlc3QnXSkKIAogICAgIGRlZiB0ZXN0Q29udGV4dFByb3RvY29sKHNlbGYpOgotICAgICAgICAjIEJaMkZpbGUgc3VwcG9ydHMgdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbAogICAgICAgICBmID0gTm9uZQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSwgIndiIikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoYiJ4eHgiKQpAQCAtMjY5LDcgKzQ3NCw3IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogICAgIGRlZiB0ZXN0VGhyZWFkaW5nKHNlbGYpOgotICAgICAgICAjIFVzaW5nIGEgQloyRmlsZSBmcm9tIHNldmVyYWwgdGhyZWFkcyBkb2Vzbid0IGRlYWRsb2NrIChpc3N1ZSAjNzIwNSkuCisgICAgICAgICMgSXNzdWUgIzcyMDU6IFVzaW5nIGEgQloyRmlsZSBmcm9tIHNldmVyYWwgdGhyZWFkcyBzaG91bGRuJ3QgZGVhZGxvY2suCiAgICAgICAgIGRhdGEgPSBiIjEiICogMioqMjAKICAgICAgICAgbnRocmVhZHMgPSAxMAogICAgICAgICB3aXRoIGJ6Mi5CWjJGaWxlKHNlbGYuZmlsZW5hbWUsICd3YicpIGFzIGY6CkBAIC0yODIsNDAgKzQ4NywxMTIgQEAKICAgICAgICAgICAgIGZvciB0IGluIHRocmVhZHM6CiAgICAgICAgICAgICAgICAgdC5qb2luKCkKIAotICAgIGRlZiB0ZXN0TWl4ZWRJdGVyYXRpb25SZWFkcyhzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAjODM5NzogbWl4ZWQgaXRlcmF0aW9uIGFuZCByZWFkcyBzaG91bGQgYmUgZm9yYmlkZGVuLgotICAgICAgICB3aXRoIGJ6Mi5CWjJGaWxlKHNlbGYuZmlsZW5hbWUsICd3YicpIGFzIGY6Ci0gICAgICAgICAgICAjIFRoZSBpbnRlcm5hbCBidWZmZXIgc2l6ZSBpcyBoYXJkLXdpcmVkIHRvIDgxOTIgYnl0ZXMsIHdlIG11c3QKLSAgICAgICAgICAgICMgd3JpdGUgb3V0IG1vcmUgdGhhbiB0aGF0IGZvciB0aGUgdGVzdCB0byBzdG9wIGhhbGYgdGhyb3VnaAotICAgICAgICAgICAgIyB0aGUgYnVmZmVyLgotICAgICAgICAgICAgZi53cml0ZShzZWxmLlRFWFQgKiAxMDApCi0gICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSwgJ3JiJykgYXMgZjoKLSAgICAgICAgICAgIG5leHQoZikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZGxpbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWRsaW5lcykKKyAgICBkZWYgdGVzdFdpdGhvdXRUaHJlYWRpbmcoc2VsZik6CisgICAgICAgIGJ6MiA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgiYnoyIiwgYmxvY2tlZD0oInRocmVhZGluZyIsKSkKKyAgICAgICAgd2l0aCBiejIuQloyRmlsZShzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShiImFiYyIpCisgICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiYWJjIikKKworICAgIGRlZiB0ZXN0TWl4ZWRJdGVyYXRpb25BbmRSZWFkcyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCisgICAgICAgIGxpbmVsZW4gPSBsZW4oc2VsZi5URVhUX0xJTkVTWzBdKQorICAgICAgICBoYWxmbGVuID0gbGluZWxlbiAvLyAyCisgICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYucmVhZChoYWxmbGVuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGJ6MmYpLCBzZWxmLlRFWFRfTElORVNbMF1baGFsZmxlbjpdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUW2xpbmVsZW46XSkKKyAgICAgICAgd2l0aCBiejIuQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi5yZWFkbGluZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoYnoyZiksIHNlbGYuVEVYVF9MSU5FU1sxXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkbGluZSgpLCBzZWxmLlRFWFRfTElORVNbMl0pCisgICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYucmVhZGxpbmVzKCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgbmV4dChiejJmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWRsaW5lcygpLCBbXSkKKworICAgIGRlZiB0ZXN0TXVsdGlTdHJlYW1PcmRlcmluZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoZSBvcmRlcmluZyBvZiBzdHJlYW1zIHdoZW4gcmVhZGluZyBhIG11bHRpLXN0cmVhbSBhcmNoaXZlLgorICAgICAgICBkYXRhMSA9IGIiZm9vIiAqIDEwMDAKKyAgICAgICAgZGF0YTIgPSBiImJhciIgKiAxMDAwCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAidyIpIGFzIGJ6MmY6CisgICAgICAgICAgICBiejJmLndyaXRlKGRhdGExKQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSwgImEiKSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi53cml0ZShkYXRhMikKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBkYXRhMSArIGRhdGEyKQorCisgICAgZGVmIHRlc3RPcGVuQnl0ZXNGaWxlbmFtZShzZWxmKToKKyAgICAgICAgc3RyX2ZpbGVuYW1lID0gc2VsZi5maWxlbmFtZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBieXRlc19maWxlbmFtZSA9IHN0cl9maWxlbmFtZS5lbmNvZGUoImFzY2lpIikKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlRlbXBvcmFyeSBmaWxlIG5hbWUgbmVlZHMgdG8gYmUgQVNDSUkiKQorICAgICAgICB3aXRoIEJaMkZpbGUoYnl0ZXNfZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHNlbGYuREFUQSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKGJ5dGVzX2ZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgc2VsZi5EQVRBKQorICAgICAgICAjIFNhbml0eSBjaGVjayB0aGF0IHdlIGFyZSBhY3R1YWxseSBvcGVyYXRpbmcgb24gdGhlIHJpZ2h0IGZpbGUuCisgICAgICAgIHdpdGggQloyRmlsZShzdHJfZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLkRBVEEpCisKKworICAgICMgVGVzdHMgZm9yIGEgQloyRmlsZSB3cmFwcGluZyBhbm90aGVyIGZpbGUgb2JqZWN0OgorCisgICAgZGVmIHRlc3RSZWFkQnl0ZXNJTyhzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKHNlbGYuREFUQSkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBCWjJGaWxlKGJpbykgYXMgYnoyZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgTm9uZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJpby5jbG9zZWQpCisKKyAgICBkZWYgdGVzdFBlZWtCeXRlc0lPKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oc2VsZi5EQVRBKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIEJaMkZpbGUoYmlvKSBhcyBiejJmOgorICAgICAgICAgICAgICAgIHBkYXRhID0gYnoyZi5wZWVrKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGxlbihwZGF0YSksIDApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuVEVYVC5zdGFydHN3aXRoKHBkYXRhKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQpCisKKyAgICBkZWYgdGVzdFdyaXRlQnl0ZXNJTyhzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBCWjJGaWxlKGJpbywgInciKSBhcyBiejJmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi53cml0ZSkKKyAgICAgICAgICAgICAgICBiejJmLndyaXRlKHNlbGYuVEVYVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kZWNvbXByZXNzKGJpby5nZXR2YWx1ZSgpKSwgc2VsZi5URVhUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiaW8uY2xvc2VkKQorCisgICAgZGVmIHRlc3RTZWVrRm9yd2FyZEJ5dGVzSU8oc2VsZik6CisgICAgICAgIHdpdGggQnl0ZXNJTyhzZWxmLkRBVEEpIGFzIGJpbzoKKyAgICAgICAgICAgIHdpdGggQloyRmlsZShiaW8pIGFzIGJ6MmY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnNlZWspCisgICAgICAgICAgICAgICAgYnoyZi5zZWVrKDE1MCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFRbMTUwOl0pCisKKyAgICBkZWYgdGVzdFNlZWtCYWNrd2FyZHNCeXRlc0lPKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oc2VsZi5EQVRBKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIEJaMkZpbGUoYmlvKSBhcyBiejJmOgorICAgICAgICAgICAgICAgIGJ6MmYucmVhZCg1MDApCisgICAgICAgICAgICAgICAgYnoyZi5zZWVrKC0xNTAsIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUWzUwMC0xNTA6XSkKIAogICAgIGRlZiB0ZXN0X3JlYWRfdHJ1bmNhdGVkKHNlbGYpOgogICAgICAgICAjIERyb3AgdGhlIGVvc19tYWdpYyBmaWVsZCAoNiBieXRlcykgYW5kIENSQyAoNCBieXRlcykuCiAgICAgICAgIHRydW5jYXRlZCA9IHNlbGYuREFUQVs6LTEwXQotICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgJ3diJykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUodHJ1bmNhdGVkKQotICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgZjoKKyAgICAgICAgd2l0aCBCWjJGaWxlKEJ5dGVzSU8odHJ1bmNhdGVkKSkgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBmLnJlYWQpCi0gICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBmOgorICAgICAgICB3aXRoIEJaMkZpbGUoQnl0ZXNJTyh0cnVuY2F0ZWQpKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQobGVuKHNlbGYuVEVYVCkpLCBzZWxmLlRFWFQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFT0ZFcnJvciwgZi5yZWFkLCAxKQogICAgICAgICAjIEluY29tcGxldGUgNC1ieXRlIGZpbGUgaGVhZGVyLCBhbmQgYmxvY2sgaGVhZGVyIG9mIGF0IGxlYXN0IDE0NiBiaXRzLgogICAgICAgICBmb3IgaSBpbiByYW5nZSgyMik6Ci0gICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgJ3diJykgYXMgZjoKLSAgICAgICAgICAgICAgICBmLndyaXRlKHRydW5jYXRlZFs6aV0pCi0gICAgICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgZjoKKyAgICAgICAgICAgIHdpdGggQloyRmlsZShCeXRlc0lPKHRydW5jYXRlZFs6aV0pKSBhcyBmOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBmLnJlYWQsIDEpCiAKIAogY2xhc3MgQloyQ29tcHJlc3NvclRlc3QoQmFzZVRlc3QpOgogICAgIGRlZiB0ZXN0Q29tcHJlc3Moc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyQ29tcHJlc3Nvci5jb21wcmVzcygpL2ZsdXNoKCkiCiAgICAgICAgIGJ6MmMgPSBCWjJDb21wcmVzc29yKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJjLmNvbXByZXNzKQogICAgICAgICBkYXRhID0gYnoyYy5jb21wcmVzcyhzZWxmLlRFWFQpCkBAIC0zMjksMTEgKzYwNiwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIHNlbGYuRU1QVFlfREFUQSkKIAogICAgIGRlZiB0ZXN0Q29tcHJlc3NDaHVua3MxMChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJDb21wcmVzc29yLmNvbXByZXNzKCkvZmx1c2goKSB3aXRoIGNodW5rcyBvZiAxMCBieXRlcyIKICAgICAgICAgYnoyYyA9IEJaMkNvbXByZXNzb3IoKQogICAgICAgICBuID0gMAogICAgICAgICBkYXRhID0gYicnCi0gICAgICAgIHdoaWxlIDE6CisgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICBzdHIgPSBzZWxmLlRFWFRbbioxMDoobisxKSoxMF0KICAgICAgICAgICAgIGlmIG5vdCBzdHI6CiAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTM0MiwzNCArNjE4LDM4IEBACiAgICAgICAgIGRhdGEgKz0gYnoyYy5mbHVzaCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kZWNvbXByZXNzKGRhdGEpLCBzZWxmLlRFWFQpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RywgbWVtdXNlPTEuMjUpCi0gICAgZGVmIHRlc3RCaWdtZW0oc2VsZiwgc2l6ZSk6Ci0gICAgICAgIHRleHQgPSBiImEiICogc2l6ZQotICAgICAgICBiejJjID0gYnoyLkJaMkNvbXByZXNzb3IoKQotICAgICAgICBkYXRhID0gYnoyYy5jb21wcmVzcyh0ZXh0KSArIGJ6MmMuZmx1c2goKQotICAgICAgICBkZWwgdGV4dAotICAgICAgICB0ZXh0ID0gc2VsZi5kZWNvbXByZXNzKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRleHQpLCBzaXplKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQuc3RyaXAoYiJhIiksIGIiIikKLQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHICsgMTAwLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdENvbXByZXNzNEcoc2VsZiwgc2l6ZSk6CisgICAgICAgICMgIlRlc3QgQloyQ29tcHJlc3Nvci5jb21wcmVzcygpL2ZsdXNoKCkgd2l0aCA+NEdpQiBpbnB1dCIKKyAgICAgICAgYnoyYyA9IEJaMkNvbXByZXNzb3IoKQorICAgICAgICBkYXRhID0gYiJ4IiAqIHNpemUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29tcHJlc3NlZCA9IGJ6MmMuY29tcHJlc3MoZGF0YSkKKyAgICAgICAgICAgIGNvbXByZXNzZWQgKz0gYnoyYy5mbHVzaCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBkYXRhID0gTm9uZSAgIyBSZWxlYXNlIG1lbW9yeQorICAgICAgICBkYXRhID0gYnoyLmRlY29tcHJlc3MoY29tcHJlc3NlZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIHNpemUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhLnN0cmlwKGIieCIpKSwgMCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGRhdGEgPSBOb25lCiAKIGNsYXNzIEJaMkRlY29tcHJlc3NvclRlc3QoQmFzZVRlc3QpOgogICAgIGRlZiB0ZXN0X0NvbnN0cnVjdG9yKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEJaMkRlY29tcHJlc3NvciwgNDIpCiAKICAgICBkZWYgdGVzdERlY29tcHJlc3Moc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRGVjb21wcmVzc29yLmRlY29tcHJlc3MoKSIKICAgICAgICAgYnoyZCA9IEJaMkRlY29tcHJlc3NvcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZC5kZWNvbXByZXNzKQogICAgICAgICB0ZXh0ID0gYnoyZC5kZWNvbXByZXNzKHNlbGYuREFUQSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCBzZWxmLlRFWFQpCiAKICAgICBkZWYgdGVzdERlY29tcHJlc3NDaHVua3MxMChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJEZWNvbXByZXNzb3IuZGVjb21wcmVzcygpIHdpdGggY2h1bmtzIG9mIDEwIGJ5dGVzIgogICAgICAgICBiejJkID0gQloyRGVjb21wcmVzc29yKCkKICAgICAgICAgdGV4dCA9IGInJwogICAgICAgICBuID0gMAotICAgICAgICB3aGlsZSAxOgorICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgc3RyID0gc2VsZi5EQVRBW24qMTA6KG4rMSkqMTBdCiAgICAgICAgICAgICBpZiBub3Qgc3RyOgogICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0zNzgsNyArNjU4LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCBzZWxmLlRFWFQpCiAKICAgICBkZWYgdGVzdERlY29tcHJlc3NVbnVzZWREYXRhKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkRlY29tcHJlc3Nvci5kZWNvbXByZXNzKCkgd2l0aCB1bnVzZWQgZGF0YSIKICAgICAgICAgYnoyZCA9IEJaMkRlY29tcHJlc3NvcigpCiAgICAgICAgIHVudXNlZF9kYXRhID0gYiJ0aGlzIGlzIHVudXNlZCBkYXRhIgogICAgICAgICB0ZXh0ID0gYnoyZC5kZWNvbXByZXNzKHNlbGYuREFUQSt1bnVzZWRfZGF0YSkKQEAgLTM4NiwyNSArNjY1LDMwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZC51bnVzZWRfZGF0YSwgdW51c2VkX2RhdGEpCiAKICAgICBkZWYgdGVzdEVPRkVycm9yKHNlbGYpOgotICAgICAgICAjICJDYWxsaW5nIEJaMkRlY29tcHJlc3Nvci5kZWNvbXByZXNzKCkgYWZ0ZXIgRU9TIG11c3QgcmFpc2UgRU9GRXJyb3IiCiAgICAgICAgIGJ6MmQgPSBCWjJEZWNvbXByZXNzb3IoKQogICAgICAgICB0ZXh0ID0gYnoyZC5kZWNvbXByZXNzKHNlbGYuREFUQSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IsIGJ6MmQuZGVjb21wcmVzcywgYiJhbnl0aGluZyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBiejJkLmRlY29tcHJlc3MsIGIiIikKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHLCBtZW11c2U9MS4yNSwgZHJ5X3J1bj1GYWxzZSkKLSAgICBkZWYgdGVzdEJpZ21lbShzZWxmLCB1bnVzZWRfc2l6ZSk6Ci0gICAgICAgICMgSXNzdWUgIzE0Mzk4OiBkZWNvbXByZXNzaW9uIGZhaWxzIHdoZW4gb3V0cHV0IGRhdGEgaXMgPj0yR0IuCi0gICAgICAgIHRleHQgPSBiejIuQloyRGVjb21wcmVzc29yKCkuZGVjb21wcmVzcyhzZWxmLkRBVEFfQklHTUVNKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZXh0KSwgXzRHKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQuc3RyaXAoYiJcMCIpLCBiIiIpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgKyAxMDAsIG1lbXVzZT0zKQorICAgIGRlZiB0ZXN0RGVjb21wcmVzczRHKHNlbGYsIHNpemUpOgorICAgICAgICAjICJUZXN0IEJaMkRlY29tcHJlc3Nvci5kZWNvbXByZXNzKCkgd2l0aCA+NEdpQiBpbnB1dCIKKyAgICAgICAgYmxvY2tzaXplID0gMTAgKiAxMDI0ICogMTAyNAorICAgICAgICBibG9jayA9IHJhbmRvbS5nZXRyYW5kYml0cyhibG9ja3NpemUgKiA4KS50b19ieXRlcyhibG9ja3NpemUsICdsaXR0bGUnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBkYXRhID0gYmxvY2sgKiAoc2l6ZSAvLyBibG9ja3NpemUgKyAxKQorICAgICAgICAgICAgY29tcHJlc3NlZCA9IGJ6Mi5jb21wcmVzcyhkYXRhKQorICAgICAgICAgICAgYnoyZCA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgICAgICBkZWNvbXByZXNzZWQgPSBiejJkLmRlY29tcHJlc3MoY29tcHJlc3NlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkZWNvbXByZXNzZWQgPT0gZGF0YSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGRhdGEgPSBOb25lCisgICAgICAgICAgICBjb21wcmVzc2VkID0gTm9uZQorICAgICAgICAgICAgZGVjb21wcmVzc2VkID0gTm9uZQogCiAKLWNsYXNzIEZ1bmNUZXN0KEJhc2VUZXN0KToKLSAgICAiVGVzdCBtb2R1bGUgZnVuY3Rpb25zIgotCitjbGFzcyBDb21wcmVzc0RlY29tcHJlc3NUZXN0KEJhc2VUZXN0KToKICAgICBkZWYgdGVzdENvbXByZXNzKHNlbGYpOgotICAgICAgICAjICJUZXN0IGNvbXByZXNzKCkgZnVuY3Rpb24iCiAgICAgICAgIGRhdGEgPSBiejIuY29tcHJlc3Moc2VsZi5URVhUKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGVjb21wcmVzcyhkYXRhKSwgc2VsZi5URVhUKQogCkBAIC00MTMsMTIgKzY5NywxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIHNlbGYuRU1QVFlfREFUQSkKIAogICAgIGRlZiB0ZXN0RGVjb21wcmVzcyhzZWxmKToKLSAgICAgICAgIyAiVGVzdCBkZWNvbXByZXNzKCkgZnVuY3Rpb24iCiAgICAgICAgIHRleHQgPSBiejIuZGVjb21wcmVzcyhzZWxmLkRBVEEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgc2VsZi5URVhUKQogCiAgICAgZGVmIHRlc3REZWNvbXByZXNzRW1wdHkoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgZGVjb21wcmVzcygpIGZ1bmN0aW9uIHdpdGggZW1wdHkgc3RyaW5nIgogICAgICAgICB0ZXh0ID0gYnoyLmRlY29tcHJlc3MoYiIiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIGIiIikKIApAQCAtNDI3LDM1ICs3MDksMTE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgYicnKQogCiAgICAgZGVmIHRlc3REZWNvbXByZXNzSW5jb21wbGV0ZShzZWxmKToKLSAgICAgICAgIyAiVGVzdCBkZWNvbXByZXNzKCkgZnVuY3Rpb24gd2l0aCBpbmNvbXBsZXRlIGRhdGEiCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6Mi5kZWNvbXByZXNzLCBzZWxmLkRBVEFbOi0xMF0pCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RywgbWVtdXNlPTEuMjUpCi0gICAgZGVmIHRlc3RDb21wcmVzc0JpZ21lbShzZWxmLCBzaXplKToKLSAgICAgICAgdGV4dCA9IGIiYSIgKiBzaXplCi0gICAgICAgIGRhdGEgPSBiejIuY29tcHJlc3ModGV4dCkKLSAgICAgICAgZGVsIHRleHQKLSAgICAgICAgdGV4dCA9IHNlbGYuZGVjb21wcmVzcyhkYXRhKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZXh0KSwgc2l6ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LnN0cmlwKGIiYSIpLCBiIiIpCisgICAgZGVmIHRlc3REZWNvbXByZXNzTXVsdGlTdHJlYW0oc2VsZik6CisgICAgICAgIHRleHQgPSBiejIuZGVjb21wcmVzcyhzZWxmLkRBVEEgKiA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIHNlbGYuVEVYVCAqIDUpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RywgbWVtdXNlPTEuMjUsIGRyeV9ydW49RmFsc2UpCi0gICAgZGVmIHRlc3REZWNvbXByZXNzQmlnbWVtKHNlbGYsIHVudXNlZF9zaXplKToKLSAgICAgICAgIyBJc3N1ZSAjMTQzOTg6IGRlY29tcHJlc3Npb24gZmFpbHMgd2hlbiBvdXRwdXQgZGF0YSBpcyA+PTJHQi4KLSAgICAgICAgdGV4dCA9IGJ6Mi5kZWNvbXByZXNzKHNlbGYuREFUQV9CSUdNRU0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRleHQpLCBfNEcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dC5zdHJpcChiIlwwIiksIGIiIikKKworY2xhc3MgT3BlblRlc3QoQmFzZVRlc3QpOgorICAgIGRlZiB0ZXN0X2JpbmFyeV9tb2RlcyhzZWxmKToKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShzZWxmLlRFWFQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gYnoyLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgc2VsZi5URVhUKQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLlRFWFQpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgImFiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoc2VsZi5URVhUKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGJ6Mi5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHNlbGYuVEVYVCAqIDIpCisKKyAgICBkZWYgdGVzdF9pbXBsaWNpdF9iaW5hcnlfbW9kZXMoc2VsZik6CisgICAgICAgICMgVGVzdCBpbXBsaWNpdCBiaW5hcnkgbW9kZXMgKG5vICJiIiBvciAidCIgaW4gbW9kZSBzdHJpbmcpLgorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoc2VsZi5URVhUKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGJ6Mi5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHNlbGYuVEVYVCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAiciIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLlRFWFQpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgImEiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShzZWxmLlRFWFQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gYnoyLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgc2VsZi5URVhUICogMikKKworICAgIGRlZiB0ZXN0X3RleHRfbW9kZXMoc2VsZik6CisgICAgICAgIHRleHQgPSBzZWxmLlRFWFQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHRleHRfbmF0aXZlX2VvbCA9IHRleHQucmVwbGFjZSgiXG4iLCBvcy5saW5lc2VwKQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3dCIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHRleHQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gYnoyLmRlY29tcHJlc3MoZi5yZWFkKCkpLmRlY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHRleHRfbmF0aXZlX2VvbCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdGV4dCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAiYXQiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh0ZXh0KQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGJ6Mi5kZWNvbXByZXNzKGYucmVhZCgpKS5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB0ZXh0X25hdGl2ZV9lb2wgKiAyKQorCisgICAgZGVmIHRlc3RfZmlsZW9iaihzZWxmKToKKyAgICAgICAgd2l0aCBiejIub3BlbihCeXRlc0lPKHNlbGYuREFUQSksICJyIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHNlbGYuVEVYVCkKKyAgICAgICAgd2l0aCBiejIub3BlbihCeXRlc0lPKHNlbGYuREFUQSksICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLlRFWFQpCisgICAgICAgIHRleHQgPSBzZWxmLlRFWFQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHdpdGggYnoyLm9wZW4oQnl0ZXNJTyhzZWxmLkRBVEEpLCAicnQiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X2JhZF9wYXJhbXMoc2VsZik6CisgICAgICAgICMgVGVzdCBpbnZhbGlkIHBhcmFtZXRlciBjb21iaW5hdGlvbnMuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAid2J0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIsIGVuY29kaW5nPSJ1dGYtOCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiLCBlcnJvcnM9Imlnbm9yZSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiLCBuZXdsaW5lPSJcbiIpCisKKyAgICBkZWYgdGVzdF9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IG5vbi1kZWZhdWx0IGVuY29kaW5nLgorICAgICAgICB0ZXh0ID0gc2VsZi5URVhULmRlY29kZSgiYXNjaWkiKQorICAgICAgICB0ZXh0X25hdGl2ZV9lb2wgPSB0ZXh0LnJlcGxhY2UoIlxuIiwgb3MubGluZXNlcCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAid3QiLCBlbmNvZGluZz0idXRmLTE2LWxlIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodGV4dCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBiejIuZGVjb21wcmVzcyhmLnJlYWQoKSkuZGVjb2RlKCJ1dGYtMTYtbGUiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHRleHRfbmF0aXZlX2VvbCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiLCBlbmNvZGluZz0idXRmLTE2LWxlIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHRleHQpCisKKyAgICBkZWYgdGVzdF9lbmNvZGluZ19lcnJvcl9oYW5kbGVyKHNlbGYpOgorICAgICAgICAjIFRlc3Qgd2l0aCBub24tZGVmYXVsdCBlbmNvZGluZyBlcnJvciBoYW5kbGVyLgorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGIiZm9vXHhmZmJhciIpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInJ0IiwgZW5jb2Rpbmc9ImFzY2lpIiwgZXJyb3JzPSJpZ25vcmUiKSBcCisgICAgICAgICAgICAgICAgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICJmb29iYXIiKQorCisgICAgZGVmIHRlc3RfbmV3bGluZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHdpdGggZXhwbGljaXQgbmV3bGluZSAodW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBkaXNhYmxlZCkuCisgICAgICAgIHRleHQgPSBzZWxmLlRFWFQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInd0IiwgbmV3bGluZT0iXG4iKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh0ZXh0KQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJydCIsIG5ld2xpbmU9IlxyIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkbGluZXMoKSwgW3RleHRdKQorCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgQloyRmlsZVRlc3QsCiAgICAgICAgIEJaMkNvbXByZXNzb3JUZXN0LAogICAgICAgICBCWjJEZWNvbXByZXNzb3JUZXN0LAotICAgICAgICBGdW5jVGVzdAorICAgICAgICBDb21wcmVzc0RlY29tcHJlc3NUZXN0LAorICAgICAgICBPcGVuVGVzdCwKICAgICApCiAgICAgc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQotCi0jIHZpbTp0cz00OnN3PTQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkgYi9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5CmluZGV4IDM3YjI4MTguLjhhZGY1YmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weQpAQCAtNSw4ICs1LDE5IEBACiBmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawogaW1wb3J0IHRpbWUKIGltcG9ydCBsb2NhbGUKK2ltcG9ydCBzeXMKIGltcG9ydCBkYXRldGltZQogCityZXN1bHRfMjAwNF8wMV90ZXh0ID0gIiIiCisgICAgSmFudWFyeSAyMDA0CitNbyBUdSBXZSBUaCBGciBTYSBTdQorICAgICAgICAgIDEgIDIgIDMgIDQKKyA1ICA2ICA3ICA4ICA5IDEwIDExCisxMiAxMyAxNCAxNSAxNiAxNyAxOAorMTkgMjAgMjEgMjIgMjMgMjQgMjUKKzI2IDI3IDI4IDI5IDMwIDMxCisiIiIKKwogcmVzdWx0XzIwMDRfdGV4dCA9ICIiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDQKIApAQCAtNDYsMTEgKzU3LDExIEBACiAiIiIKIAogcmVzdWx0XzIwMDRfaHRtbCA9ICIiIgotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iYXNjaWkiPz4KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IiUoZSlzIj8+CiA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CiA8aHRtbD4KIDxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9YXNjaWkiIC8+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD0lKGUpcyIgLz4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNhbGVuZGFyLmNzcyIgLz4KIDx0aXRsZT5DYWxlbmRhciBmb3IgMjAwNDwvdGl0bGU+CiA8L2hlYWQ+CkBAIC0xNzAsNiArMTgxLDEzNSBAQAogPC9odG1sPgogIiIiCiAKK3Jlc3VsdF8yMDA0X2RheXMgPSBbCisgICAgW1tbMCwgMCwgMCwgMSwgMiwgMywgNF0sCisgICAgICBbNSwgNiwgNywgOCwgOSwgMTAsIDExXSwKKyAgICAgIFsxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOF0sCisgICAgICBbMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjVdLAorICAgICAgWzI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDBdXSwKKyAgICAgW1swLCAwLCAwLCAwLCAwLCAwLCAxXSwKKyAgICAgIFsyLCAzLCA0LCA1LCA2LCA3LCA4XSwKKyAgICAgIFs5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1XSwKKyAgICAgIFsxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMl0sCisgICAgICBbMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjldXSwKKyAgICAgW1sxLCAyLCAzLCA0LCA1LCA2LCA3XSwKKyAgICAgIFs4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTRdLAorICAgICAgWzE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxXSwKKyAgICAgIFsyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOF0sCisgICAgICBbMjksIDMwLCAzMSwgMCwgMCwgMCwgMF1dXSwKKyAgICBbW1swLCAwLCAwLCAxLCAyLCAzLCA0XSwKKyAgICAgIFs1LCA2LCA3LCA4LCA5LCAxMCwgMTFdLAorICAgICAgWzEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4XSwKKyAgICAgIFsxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNV0sCisgICAgICBbMjYsIDI3LCAyOCwgMjksIDMwLCAwLCAwXV0sCisgICAgIFtbMCwgMCwgMCwgMCwgMCwgMSwgMl0sCisgICAgICBbMywgNCwgNSwgNiwgNywgOCwgOV0sCisgICAgICBbMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTZdLAorICAgICAgWzE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzXSwKKyAgICAgIFsyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMF0sCisgICAgICBbMzEsIDAsIDAsIDAsIDAsIDAsIDBdXSwKKyAgICAgW1swLCAxLCAyLCAzLCA0LCA1LCA2XSwKKyAgICAgIFs3LCA4LCA5LCAxMCwgMTEsIDEyLCAxM10sCisgICAgICBbMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjBdLAorICAgICAgWzIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3XSwKKyAgICAgIFsyOCwgMjksIDMwLCAwLCAwLCAwLCAwXV1dLAorICAgIFtbWzAsIDAsIDAsIDEsIDIsIDMsIDRdLAorICAgICAgWzUsIDYsIDcsIDgsIDksIDEwLCAxMV0sCisgICAgICBbMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMThdLAorICAgICAgWzE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1XSwKKyAgICAgIFsyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAwXV0sCisgICAgIFtbMCwgMCwgMCwgMCwgMCwgMCwgMV0sCisgICAgICBbMiwgMywgNCwgNSwgNiwgNywgOF0sCisgICAgICBbOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNV0sCisgICAgICBbMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjJdLAorICAgICAgWzIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5XSwKKyAgICAgIFszMCwgMzEsIDAsIDAsIDAsIDAsIDBdXSwKKyAgICAgW1swLCAwLCAxLCAyLCAzLCA0LCA1XSwKKyAgICAgIFs2LCA3LCA4LCA5LCAxMCwgMTEsIDEyXSwKKyAgICAgIFsxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOV0sCisgICAgICBbMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjZdLAorICAgICAgWzI3LCAyOCwgMjksIDMwLCAwLCAwLCAwXV1dLAorICAgIFtbWzAsIDAsIDAsIDAsIDEsIDIsIDNdLAorICAgICAgWzQsIDUsIDYsIDcsIDgsIDksIDEwXSwKKyAgICAgIFsxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxN10sCisgICAgICBbMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjRdLAorICAgICAgWzI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxXV0sCisgICAgIFtbMSwgMiwgMywgNCwgNSwgNiwgN10sCisgICAgICBbOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0XSwKKyAgICAgIFsxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMV0sCisgICAgICBbMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjhdLAorICAgICAgWzI5LCAzMCwgMCwgMCwgMCwgMCwgMF1dLAorICAgICBbWzAsIDAsIDEsIDIsIDMsIDQsIDVdLAorICAgICAgWzYsIDcsIDgsIDksIDEwLCAxMSwgMTJdLAorICAgICAgWzEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5XSwKKyAgICAgIFsyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNl0sCisgICAgICBbMjcsIDI4LCAyOSwgMzAsIDMxLCAwLCAwXV1dCitdCisKK3Jlc3VsdF8yMDA0X2RhdGVzID0gXAorICAgIFtbWycxMi8yOS8wMyAxMi8zMC8wMyAxMi8zMS8wMyAwMS8wMS8wNCAwMS8wMi8wNCAwMS8wMy8wNCAwMS8wNC8wNCcsCisgICAgICAgJzAxLzA1LzA0IDAxLzA2LzA0IDAxLzA3LzA0IDAxLzA4LzA0IDAxLzA5LzA0IDAxLzEwLzA0IDAxLzExLzA0JywKKyAgICAgICAnMDEvMTIvMDQgMDEvMTMvMDQgMDEvMTQvMDQgMDEvMTUvMDQgMDEvMTYvMDQgMDEvMTcvMDQgMDEvMTgvMDQnLAorICAgICAgICcwMS8xOS8wNCAwMS8yMC8wNCAwMS8yMS8wNCAwMS8yMi8wNCAwMS8yMy8wNCAwMS8yNC8wNCAwMS8yNS8wNCcsCisgICAgICAgJzAxLzI2LzA0IDAxLzI3LzA0IDAxLzI4LzA0IDAxLzI5LzA0IDAxLzMwLzA0IDAxLzMxLzA0IDAyLzAxLzA0J10sCisgICAgICBbJzAxLzI2LzA0IDAxLzI3LzA0IDAxLzI4LzA0IDAxLzI5LzA0IDAxLzMwLzA0IDAxLzMxLzA0IDAyLzAxLzA0JywKKyAgICAgICAnMDIvMDIvMDQgMDIvMDMvMDQgMDIvMDQvMDQgMDIvMDUvMDQgMDIvMDYvMDQgMDIvMDcvMDQgMDIvMDgvMDQnLAorICAgICAgICcwMi8wOS8wNCAwMi8xMC8wNCAwMi8xMS8wNCAwMi8xMi8wNCAwMi8xMy8wNCAwMi8xNC8wNCAwMi8xNS8wNCcsCisgICAgICAgJzAyLzE2LzA0IDAyLzE3LzA0IDAyLzE4LzA0IDAyLzE5LzA0IDAyLzIwLzA0IDAyLzIxLzA0IDAyLzIyLzA0JywKKyAgICAgICAnMDIvMjMvMDQgMDIvMjQvMDQgMDIvMjUvMDQgMDIvMjYvMDQgMDIvMjcvMDQgMDIvMjgvMDQgMDIvMjkvMDQnXSwKKyAgICAgIFsnMDMvMDEvMDQgMDMvMDIvMDQgMDMvMDMvMDQgMDMvMDQvMDQgMDMvMDUvMDQgMDMvMDYvMDQgMDMvMDcvMDQnLAorICAgICAgICcwMy8wOC8wNCAwMy8wOS8wNCAwMy8xMC8wNCAwMy8xMS8wNCAwMy8xMi8wNCAwMy8xMy8wNCAwMy8xNC8wNCcsCisgICAgICAgJzAzLzE1LzA0IDAzLzE2LzA0IDAzLzE3LzA0IDAzLzE4LzA0IDAzLzE5LzA0IDAzLzIwLzA0IDAzLzIxLzA0JywKKyAgICAgICAnMDMvMjIvMDQgMDMvMjMvMDQgMDMvMjQvMDQgMDMvMjUvMDQgMDMvMjYvMDQgMDMvMjcvMDQgMDMvMjgvMDQnLAorICAgICAgICcwMy8yOS8wNCAwMy8zMC8wNCAwMy8zMS8wNCAwNC8wMS8wNCAwNC8wMi8wNCAwNC8wMy8wNCAwNC8wNC8wNCddXSwKKyAgICAgW1snMDMvMjkvMDQgMDMvMzAvMDQgMDMvMzEvMDQgMDQvMDEvMDQgMDQvMDIvMDQgMDQvMDMvMDQgMDQvMDQvMDQnLAorICAgICAgICcwNC8wNS8wNCAwNC8wNi8wNCAwNC8wNy8wNCAwNC8wOC8wNCAwNC8wOS8wNCAwNC8xMC8wNCAwNC8xMS8wNCcsCisgICAgICAgJzA0LzEyLzA0IDA0LzEzLzA0IDA0LzE0LzA0IDA0LzE1LzA0IDA0LzE2LzA0IDA0LzE3LzA0IDA0LzE4LzA0JywKKyAgICAgICAnMDQvMTkvMDQgMDQvMjAvMDQgMDQvMjEvMDQgMDQvMjIvMDQgMDQvMjMvMDQgMDQvMjQvMDQgMDQvMjUvMDQnLAorICAgICAgICcwNC8yNi8wNCAwNC8yNy8wNCAwNC8yOC8wNCAwNC8yOS8wNCAwNC8zMC8wNCAwNS8wMS8wNCAwNS8wMi8wNCddLAorICAgICAgWycwNC8yNi8wNCAwNC8yNy8wNCAwNC8yOC8wNCAwNC8yOS8wNCAwNC8zMC8wNCAwNS8wMS8wNCAwNS8wMi8wNCcsCisgICAgICAgJzA1LzAzLzA0IDA1LzA0LzA0IDA1LzA1LzA0IDA1LzA2LzA0IDA1LzA3LzA0IDA1LzA4LzA0IDA1LzA5LzA0JywKKyAgICAgICAnMDUvMTAvMDQgMDUvMTEvMDQgMDUvMTIvMDQgMDUvMTMvMDQgMDUvMTQvMDQgMDUvMTUvMDQgMDUvMTYvMDQnLAorICAgICAgICcwNS8xNy8wNCAwNS8xOC8wNCAwNS8xOS8wNCAwNS8yMC8wNCAwNS8yMS8wNCAwNS8yMi8wNCAwNS8yMy8wNCcsCisgICAgICAgJzA1LzI0LzA0IDA1LzI1LzA0IDA1LzI2LzA0IDA1LzI3LzA0IDA1LzI4LzA0IDA1LzI5LzA0IDA1LzMwLzA0JywKKyAgICAgICAnMDUvMzEvMDQgMDYvMDEvMDQgMDYvMDIvMDQgMDYvMDMvMDQgMDYvMDQvMDQgMDYvMDUvMDQgMDYvMDYvMDQnXSwKKyAgICAgIFsnMDUvMzEvMDQgMDYvMDEvMDQgMDYvMDIvMDQgMDYvMDMvMDQgMDYvMDQvMDQgMDYvMDUvMDQgMDYvMDYvMDQnLAorICAgICAgICcwNi8wNy8wNCAwNi8wOC8wNCAwNi8wOS8wNCAwNi8xMC8wNCAwNi8xMS8wNCAwNi8xMi8wNCAwNi8xMy8wNCcsCisgICAgICAgJzA2LzE0LzA0IDA2LzE1LzA0IDA2LzE2LzA0IDA2LzE3LzA0IDA2LzE4LzA0IDA2LzE5LzA0IDA2LzIwLzA0JywKKyAgICAgICAnMDYvMjEvMDQgMDYvMjIvMDQgMDYvMjMvMDQgMDYvMjQvMDQgMDYvMjUvMDQgMDYvMjYvMDQgMDYvMjcvMDQnLAorICAgICAgICcwNi8yOC8wNCAwNi8yOS8wNCAwNi8zMC8wNCAwNy8wMS8wNCAwNy8wMi8wNCAwNy8wMy8wNCAwNy8wNC8wNCddXSwKKyAgICAgW1snMDYvMjgvMDQgMDYvMjkvMDQgMDYvMzAvMDQgMDcvMDEvMDQgMDcvMDIvMDQgMDcvMDMvMDQgMDcvMDQvMDQnLAorICAgICAgICcwNy8wNS8wNCAwNy8wNi8wNCAwNy8wNy8wNCAwNy8wOC8wNCAwNy8wOS8wNCAwNy8xMC8wNCAwNy8xMS8wNCcsCisgICAgICAgJzA3LzEyLzA0IDA3LzEzLzA0IDA3LzE0LzA0IDA3LzE1LzA0IDA3LzE2LzA0IDA3LzE3LzA0IDA3LzE4LzA0JywKKyAgICAgICAnMDcvMTkvMDQgMDcvMjAvMDQgMDcvMjEvMDQgMDcvMjIvMDQgMDcvMjMvMDQgMDcvMjQvMDQgMDcvMjUvMDQnLAorICAgICAgICcwNy8yNi8wNCAwNy8yNy8wNCAwNy8yOC8wNCAwNy8yOS8wNCAwNy8zMC8wNCAwNy8zMS8wNCAwOC8wMS8wNCddLAorICAgICAgWycwNy8yNi8wNCAwNy8yNy8wNCAwNy8yOC8wNCAwNy8yOS8wNCAwNy8zMC8wNCAwNy8zMS8wNCAwOC8wMS8wNCcsCisgICAgICAgJzA4LzAyLzA0IDA4LzAzLzA0IDA4LzA0LzA0IDA4LzA1LzA0IDA4LzA2LzA0IDA4LzA3LzA0IDA4LzA4LzA0JywKKyAgICAgICAnMDgvMDkvMDQgMDgvMTAvMDQgMDgvMTEvMDQgMDgvMTIvMDQgMDgvMTMvMDQgMDgvMTQvMDQgMDgvMTUvMDQnLAorICAgICAgICcwOC8xNi8wNCAwOC8xNy8wNCAwOC8xOC8wNCAwOC8xOS8wNCAwOC8yMC8wNCAwOC8yMS8wNCAwOC8yMi8wNCcsCisgICAgICAgJzA4LzIzLzA0IDA4LzI0LzA0IDA4LzI1LzA0IDA4LzI2LzA0IDA4LzI3LzA0IDA4LzI4LzA0IDA4LzI5LzA0JywKKyAgICAgICAnMDgvMzAvMDQgMDgvMzEvMDQgMDkvMDEvMDQgMDkvMDIvMDQgMDkvMDMvMDQgMDkvMDQvMDQgMDkvMDUvMDQnXSwKKyAgICAgIFsnMDgvMzAvMDQgMDgvMzEvMDQgMDkvMDEvMDQgMDkvMDIvMDQgMDkvMDMvMDQgMDkvMDQvMDQgMDkvMDUvMDQnLAorICAgICAgICcwOS8wNi8wNCAwOS8wNy8wNCAwOS8wOC8wNCAwOS8wOS8wNCAwOS8xMC8wNCAwOS8xMS8wNCAwOS8xMi8wNCcsCisgICAgICAgJzA5LzEzLzA0IDA5LzE0LzA0IDA5LzE1LzA0IDA5LzE2LzA0IDA5LzE3LzA0IDA5LzE4LzA0IDA5LzE5LzA0JywKKyAgICAgICAnMDkvMjAvMDQgMDkvMjEvMDQgMDkvMjIvMDQgMDkvMjMvMDQgMDkvMjQvMDQgMDkvMjUvMDQgMDkvMjYvMDQnLAorICAgICAgICcwOS8yNy8wNCAwOS8yOC8wNCAwOS8yOS8wNCAwOS8zMC8wNCAxMC8wMS8wNCAxMC8wMi8wNCAxMC8wMy8wNCddXSwKKyAgICAgW1snMDkvMjcvMDQgMDkvMjgvMDQgMDkvMjkvMDQgMDkvMzAvMDQgMTAvMDEvMDQgMTAvMDIvMDQgMTAvMDMvMDQnLAorICAgICAgICcxMC8wNC8wNCAxMC8wNS8wNCAxMC8wNi8wNCAxMC8wNy8wNCAxMC8wOC8wNCAxMC8wOS8wNCAxMC8xMC8wNCcsCisgICAgICAgJzEwLzExLzA0IDEwLzEyLzA0IDEwLzEzLzA0IDEwLzE0LzA0IDEwLzE1LzA0IDEwLzE2LzA0IDEwLzE3LzA0JywKKyAgICAgICAnMTAvMTgvMDQgMTAvMTkvMDQgMTAvMjAvMDQgMTAvMjEvMDQgMTAvMjIvMDQgMTAvMjMvMDQgMTAvMjQvMDQnLAorICAgICAgICcxMC8yNS8wNCAxMC8yNi8wNCAxMC8yNy8wNCAxMC8yOC8wNCAxMC8yOS8wNCAxMC8zMC8wNCAxMC8zMS8wNCddLAorICAgICAgWycxMS8wMS8wNCAxMS8wMi8wNCAxMS8wMy8wNCAxMS8wNC8wNCAxMS8wNS8wNCAxMS8wNi8wNCAxMS8wNy8wNCcsCisgICAgICAgJzExLzA4LzA0IDExLzA5LzA0IDExLzEwLzA0IDExLzExLzA0IDExLzEyLzA0IDExLzEzLzA0IDExLzE0LzA0JywKKyAgICAgICAnMTEvMTUvMDQgMTEvMTYvMDQgMTEvMTcvMDQgMTEvMTgvMDQgMTEvMTkvMDQgMTEvMjAvMDQgMTEvMjEvMDQnLAorICAgICAgICcxMS8yMi8wNCAxMS8yMy8wNCAxMS8yNC8wNCAxMS8yNS8wNCAxMS8yNi8wNCAxMS8yNy8wNCAxMS8yOC8wNCcsCisgICAgICAgJzExLzI5LzA0IDExLzMwLzA0IDEyLzAxLzA0IDEyLzAyLzA0IDEyLzAzLzA0IDEyLzA0LzA0IDEyLzA1LzA0J10sCisgICAgICBbJzExLzI5LzA0IDExLzMwLzA0IDEyLzAxLzA0IDEyLzAyLzA0IDEyLzAzLzA0IDEyLzA0LzA0IDEyLzA1LzA0JywKKyAgICAgICAnMTIvMDYvMDQgMTIvMDcvMDQgMTIvMDgvMDQgMTIvMDkvMDQgMTIvMTAvMDQgMTIvMTEvMDQgMTIvMTIvMDQnLAorICAgICAgICcxMi8xMy8wNCAxMi8xNC8wNCAxMi8xNS8wNCAxMi8xNi8wNCAxMi8xNy8wNCAxMi8xOC8wNCAxMi8xOS8wNCcsCisgICAgICAgJzEyLzIwLzA0IDEyLzIxLzA0IDEyLzIyLzA0IDEyLzIzLzA0IDEyLzI0LzA0IDEyLzI1LzA0IDEyLzI2LzA0JywKKyAgICAgICAnMTIvMjcvMDQgMTIvMjgvMDQgMTIvMjkvMDQgMTIvMzAvMDQgMTIvMzEvMDQgMDEvMDEvMDUgMDEvMDIvMDUnXV1dCisKIAogY2xhc3MgT3V0cHV0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBub3JtYWxpemVfY2FsZW5kYXIoc2VsZiwgcyk6CkBAIC0xNzgsMTIgKzMxOCwxOSBAQAogICAgICAgICAgICAgcmV0dXJuIG5vdCBjLmlzc3BhY2UoKSBhbmQgbm90IGMuaXNkaWdpdCgpCiAKICAgICAgICAgbGluZXMgPSBbXQotICAgICAgICBmb3IgbGluZSBpbiBzLnNwbGl0bGluZXMoRmFsc2UpOgorICAgICAgICBmb3IgbGluZSBpbiBzLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpOgogICAgICAgICAgICAgIyBEcm9wIHRleHRzLCBhcyB0aGV5IGFyZSBsb2NhbGUgZGVwZW5kZW50CiAgICAgICAgICAgICBpZiBsaW5lIGFuZCBub3QgZmlsdGVyKG5laXRoZXJzcGFjZW5vcmRpZ2l0LCBsaW5lKToKICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKICAgICAgICAgcmV0dXJuIGxpbmVzCiAKKyAgICBkZWYgY2hlY2tfaHRtbGNhbGVuZGFyX2VuY29kaW5nKHNlbGYsIHJlcSwgcmVzKToKKyAgICAgICAgY2FsID0gY2FsZW5kYXIuSFRNTENhbGVuZGFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhbC5mb3JtYXR5ZWFycGFnZSgyMDA0LCBlbmNvZGluZz1yZXEpLnN0cmlwKGInIFx0XG4nKSwKKyAgICAgICAgICAgIChyZXN1bHRfMjAwNF9odG1sICUgeydlJzogcmVzfSkuc3RyaXAoJyBcdFxuJykuZW5jb2RlKHJlcykKKyAgICAgICAgKQorCiAgICAgZGVmIHRlc3Rfb3V0cHV0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgc2VsZi5ub3JtYWxpemVfY2FsZW5kYXIoY2FsZW5kYXIuY2FsZW5kYXIoMjAwNCkpLApAQCAtMTk2LDEyICszNDMsNjAgQEAKICAgICAgICAgICAgIHJlc3VsdF8yMDA0X3RleHQuc3RyaXAoKQogICAgICAgICApCiAKLSAgICBkZWYgdGVzdF9vdXRwdXRfaHRtbGNhbGVuZGFyKHNlbGYpOgotICAgICAgICBlbmNvZGluZyA9ICdhc2NpaScKLSAgICAgICAgY2FsID0gY2FsZW5kYXIuSFRNTENhbGVuZGFyKCkKKyAgICBkZWYgdGVzdF9vdXRwdXRfaHRtbGNhbGVuZGFyX2VuY29kaW5nX2FzY2lpKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2h0bWxjYWxlbmRhcl9lbmNvZGluZygnYXNjaWknLCAnYXNjaWknKQorCisgICAgZGVmIHRlc3Rfb3V0cHV0X2h0bWxjYWxlbmRhcl9lbmNvZGluZ191dGY4KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2h0bWxjYWxlbmRhcl9lbmNvZGluZygndXRmLTgnLCAndXRmLTgnKQorCisgICAgZGVmIHRlc3Rfb3V0cHV0X2h0bWxjYWxlbmRhcl9lbmNvZGluZ19kZWZhdWx0KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2h0bWxjYWxlbmRhcl9lbmNvZGluZyhOb25lLCBzeXMuZ2V0ZGVmYXVsdGVuY29kaW5nKCkpCisKKyAgICBkZWYgdGVzdF95ZWFyZGF0ZXNjYWxlbmRhcihzZWxmKToKKyAgICAgICAgZGVmIHNocmluayhjYWwpOgorICAgICAgICAgICAgcmV0dXJuIFtbWycgJy5qb2luKCd7OjAyZH0vezowMmR9L3t9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQubW9udGgsIGQuZGF5LCBzdHIoZC55ZWFyKVstMjpdKSBmb3IgZCBpbiB6KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB6IGluIHldIGZvciB5IGluIHhdIGZvciB4IGluIGNhbF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNhbC5mb3JtYXR5ZWFycGFnZSgyMDA0LCBlbmNvZGluZz1lbmNvZGluZykuc3RyaXAoYicgXHRcbicpLAotICAgICAgICAgICAgcmVzdWx0XzIwMDRfaHRtbC5zdHJpcCgnIFx0XG4nKS5lbmNvZGUoZW5jb2RpbmcpCisgICAgICAgICAgICBzaHJpbmsoY2FsZW5kYXIuQ2FsZW5kYXIoKS55ZWFyZGF0ZXNjYWxlbmRhcigyMDA0KSksCisgICAgICAgICAgICByZXN1bHRfMjAwNF9kYXRlcworICAgICAgICApCisKKyAgICBkZWYgdGVzdF95ZWFyZGF5c2NhbGVuZGFyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FsZW5kYXIuQ2FsZW5kYXIoKS55ZWFyZGF5c2NhbGVuZGFyKDIwMDQpLAorICAgICAgICAgICAgcmVzdWx0XzIwMDRfZGF5cworICAgICAgICApCisKKyAgICBkZWYgdGVzdF9mb3JtYXR3ZWVraGVhZGVyX3Nob3J0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FsZW5kYXIuVGV4dENhbGVuZGFyKCkuZm9ybWF0d2Vla2hlYWRlcigyKSwKKyAgICAgICAgICAgICdNbyBUdSBXZSBUaCBGciBTYSBTdScKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfZm9ybWF0d2Vla2hlYWRlcl9sb25nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FsZW5kYXIuVGV4dENhbGVuZGFyKCkuZm9ybWF0d2Vla2hlYWRlcig5KSwKKyAgICAgICAgICAgICcgIE1vbmRheSAgIFR1ZXNkYXkgIFdlZG5lc2RheSAgVGh1cnNkYXkgJworICAgICAgICAgICAgJyAgRnJpZGF5ICAgU2F0dXJkYXkgICBTdW5kYXkgJworICAgICAgICApCisKKyAgICBkZWYgdGVzdF9mb3JtYXRtb250aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhbGVuZGFyLlRleHRDYWxlbmRhcigpLmZvcm1hdG1vbnRoKDIwMDQsIDEpLnN0cmlwKCksCisgICAgICAgICAgICByZXN1bHRfMjAwNF8wMV90ZXh0LnN0cmlwKCkKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfZm9ybWF0bW9udGhuYW1lX3dpdGhfeWVhcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhbGVuZGFyLkhUTUxDYWxlbmRhcigpLmZvcm1hdG1vbnRobmFtZSgyMDA0LCAxLCB3aXRoeWVhcj1UcnVlKSwKKyAgICAgICAgICAgICc8dHI+PHRoIGNvbHNwYW49IjciIGNsYXNzPSJtb250aCI+SmFudWFyeSAyMDA0PC90aD48L3RyPicKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfZm9ybWF0bW9udGhuYW1lX3dpdGhvdXRfeWVhcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhbGVuZGFyLkhUTUxDYWxlbmRhcigpLmZvcm1hdG1vbnRobmFtZSgyMDA0LCAxLCB3aXRoeWVhcj1GYWxzZSksCisgICAgICAgICAgICAnPHRyPjx0aCBjb2xzcGFuPSI3IiBjbGFzcz0ibW9udGgiPkphbnVhcnk8L3RoPjwvdHI+JwogICAgICAgICApCiAKIApAQCAtMjI3LDcgKzQyMiwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGVuZGFyLmZpcnN0d2Vla2RheSgpLCBjYWxlbmRhci5NT05EQVkpCiAgICAgICAgIGNhbGVuZGFyLnNldGZpcnN0d2Vla2RheShvcmlnKQogCi0gICAgZGVmIHRlc3RfZW51bWVyYXRld2Vla2RheXMoc2VsZik6CisgICAgZGVmIHRlc3RfaWxsZWdhbF93ZWVrZGF5X3JlcG9ydGVkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoY2FsZW5kYXIuSWxsZWdhbFdlZWtkYXlFcnJvciwgJzEyMycpOgorICAgICAgICAgICAgY2FsZW5kYXIuc2V0Zmlyc3R3ZWVrZGF5KDEyMykKKworICAgIGRlZiB0ZXN0X2VudW1lcmF0ZV93ZWVrZGF5cyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgY2FsZW5kYXIuZGF5X2FiYnIuX19nZXRpdGVtX18sIC0xMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgY2FsZW5kYXIuZGF5X25hbWUuX19nZXRpdGVtX18sIDEwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihbZCBmb3IgZCBpbiBjYWxlbmRhci5kYXlfYWJicl0pLCA3KQpAQCAtMjUzLDcgKzQ1Miw3IEBACiAgICAgICAgICAgICAjIHZlcmlmeSBpdCAiYWN0cyBsaWtlIGEgc2VxdWVuY2UiIGluIHR3byBmb3JtcyBvZiBpdGVyYXRpb24KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVbOjotMV0sIGxpc3QocmV2ZXJzZWQodmFsdWUpKSkKIAotICAgIGRlZiB0ZXN0X2xvY2FsZWNhbGVuZGFycyhzZWxmKToKKyAgICBkZWYgdGVzdF9sb2NhbGVfY2FsZW5kYXJzKHNlbGYpOgogICAgICAgICAjIGVuc3VyZSB0aGF0IExvY2FsZXtUZXh0LEhUTUx9Q2FsZW5kYXIgcmVzZXRzIHRoZSBsb2NhbGUgcHJvcGVybHkKICAgICAgICAgIyAoaXQgaXMgc3RpbGwgbm90IHRocmVhZC1zYWZlIHRob3VnaCkKICAgICAgICAgb2xkX29jdG9iZXIgPSBjYWxlbmRhci5UZXh0Q2FsZW5kYXIoKS5mb3JtYXRtb250aG5hbWUoMjAxMCwgMTAsIDEwKQpAQCAtNDQ3LDYgKzY0NiwxMCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGNhbGVuZGFyLklsbGVnYWxNb250aEVycm9yKToKICAgICAgICAgICAgIGNhbGVuZGFyLm1vbnRocmFuZ2UoMjAwNCwgMTMpCiAKKyAgICBkZWYgdGVzdF9pbGxlZ2FsX21vbnRoX3JlcG9ydGVkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoY2FsZW5kYXIuSWxsZWdhbE1vbnRoRXJyb3IsICc2NScpOgorICAgICAgICAgICAgY2FsZW5kYXIubW9udGhyYW5nZSgyMDA0LCA2NSkKKwogY2xhc3MgTGVhcGRheXNUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfbm9fcmFuZ2Uoc2VsZik6CiAgICAgICAgICMgdGVzdCB3aGVuIG5vIHJhbmdlIGkuZS4gdHdvIGlkZW50aWNhbCB5ZWFycyBhcyBhcmdzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NhcGkucHkgYi9MaWIvdGVzdC90ZXN0X2NhcGkucHkKaW5kZXggMWM0YzBmOC4uZjFlYTVhOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQpAQCAtMTUsMTAgKzE1LDggQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBfcG9zaXhzdWJwcm9jZXNzID0gTm9uZQogdHJ5OgotICAgIGltcG9ydCBfdGhyZWFkCiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgotICAgIF90aHJlYWQgPSBOb25lCiAgICAgdGhyZWFkaW5nID0gTm9uZQogaW1wb3J0IF90ZXN0Y2FwaQogCkBAIC01NSwxMyArNTMsMzYgQEAKICAgICAgICAgKG91dCwgZXJyKSA9IHAuY29tbXVuaWNhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwgYicnKQogICAgICAgICAjIFRoaXMgdXNlZCB0byBjYXVzZSBhbiBpbmZpbml0ZSBsb29wLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5yc3RyaXAoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVyci5yc3RyaXAoKS5zdGFydHN3aXRoKAogICAgICAgICAgICAgICAgICAgICAgICAgIGInRmF0YWwgUHl0aG9uIGVycm9yOicKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJyBQeVRocmVhZFN0YXRlX0dldDogbm8gY3VycmVudCB0aHJlYWQnKQorICAgICAgICAgICAgICAgICAgICAgICAgIGInIFB5VGhyZWFkU3RhdGVfR2V0OiBubyBjdXJyZW50IHRocmVhZCcpKQogCiAgICAgZGVmIHRlc3RfbWVtb3J5dmlld19mcm9tX05VTExfcG9pbnRlcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgX3Rlc3RjYXBpLm1ha2VfbWVtb3J5dmlld19mcm9tX05VTExfcG9pbnRlcikKIAorICAgIGRlZiB0ZXN0X2V4Y19pbmZvKHNlbGYpOgorICAgICAgICByYWlzZWRfZXhjZXB0aW9uID0gVmFsdWVFcnJvcigiNSIpCisgICAgICAgIG5ld19leGMgPSBUeXBlRXJyb3IoIlRFU1QiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByYWlzZSByYWlzZWRfZXhjZXB0aW9uCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICAgICAgb3JpZ19zeXNfZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgb3JpZ19leGNfaW5mbyA9IF90ZXN0Y2FwaS5zZXRfZXhjX2luZm8obmV3X2V4Yy5fX2NsYXNzX18sIG5ld19leGMsIE5vbmUpCisgICAgICAgICAgICBuZXdfc3lzX2V4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgIG5ld19leGNfaW5mbyA9IF90ZXN0Y2FwaS5zZXRfZXhjX2luZm8oKm9yaWdfZXhjX2luZm8pCisgICAgICAgICAgICByZXNldF9zeXNfZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWdfZXhjX2luZm9bMV0sIGUpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U2VxdWVuY2VFcXVhbChvcmlnX2V4Y19pbmZvLCAocmFpc2VkX2V4Y2VwdGlvbi5fX2NsYXNzX18sIHJhaXNlZF9leGNlcHRpb24sIHRiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U2VxdWVuY2VFcXVhbChvcmlnX3N5c19leGNfaW5mbywgb3JpZ19leGNfaW5mbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U2VxdWVuY2VFcXVhbChyZXNldF9zeXNfZXhjX2luZm8sIG9yaWdfZXhjX2luZm8pCisgICAgICAgICAgICBzZWxmLmFzc2VydFNlcXVlbmNlRXF1YWwobmV3X2V4Y19pbmZvLCAobmV3X2V4Yy5fX2NsYXNzX18sIG5ld19leGMsIE5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRTZXF1ZW5jZUVxdWFsKG5ld19zeXNfZXhjX2luZm8sIG5ld19leGNfaW5mbykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShGYWxzZSkKKwogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKF9wb3NpeHN1YnByb2Nlc3MsICdfcG9zaXhzdWJwcm9jZXNzIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKICAgICBkZWYgdGVzdF9zZXFfYnl0ZXNfdG9fY2hhcnBfYXJyYXkoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzE1NzMyOiBjcmFzaCBpbiBfUHlTZXF1ZW5jZV9CeXRlc1RvQ2hhcnBBcnJheSgpCkBAIC0yMjQsOCArMjQ1LDg5IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBvcy5jaGRpcihvbGRjd2QpCiAKK2NsYXNzIFNraXBpdGVtVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLUB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZyBhbmQgX3RocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3Rfc2tpcGl0ZW0oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBJZiB0aGlzIHRlc3QgZmFpbGVkLCB5b3UgcHJvYmFibHkgYWRkZWQgYSBuZXcgImZvcm1hdCB1bml0IgorICAgICAgICBpbiBQeXRob24vZ2V0YXJncy5jLCBidXQgbmVnbGVjdGVkIHRvIHVwZGF0ZSBvdXIgcG9vciBmcmllbmQKKyAgICAgICAgc2tpcGl0ZW0oKSBpbiB0aGUgc2FtZSBmaWxlLiAgKElmIHNvLCBzaGFtZSBvbiB5b3UhKQorCisgICAgICAgIFdpdGggYSBmZXcgZXhjZXB0aW9ucyoqLCB0aGlzIGZ1bmN0aW9uIGJydXRlLWZvcmNlIHRlc3RzIGFsbAorICAgICAgICBwcmludGFibGUgQVNDSUkqKiogY2hhcmFjdGVycyAoMzIgdG8gMTI2IGluY2x1c2l2ZSkgYXMgZm9ybWF0IHVuaXRzLAorICAgICAgICBjaGVja2luZyB0byBzZWUgdGhhdCBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoKSByZXR1cm4gY29uc2lzdGVudAorICAgICAgICBlcnJvcnMgYm90aCB3aGVuIHRoZSB1bml0IGlzIGF0dGVtcHRlZCB0byBiZSB1c2VkIGFuZCB3aGVuIGl0IGlzCisgICAgICAgIHNraXBwZWQuICBJZiB0aGUgZm9ybWF0IHVuaXQgZG9lc24ndCBleGlzdCwgd2UnbGwgZ2V0IG9uZSBvZiB0d28KKyAgICAgICAgc3BlY2lmaWMgZXJyb3IgbWVzc2FnZXMgKG9uZSBmb3IgdXNlZCwgb25lIGZvciBza2lwcGVkKTsgaWYgaXQgZG9lcworICAgICAgICBleGlzdCB3ZSAqd29uJ3QqIGdldCB0aGF0IGVycm9yLS13ZSdsbCBnZXQgZWl0aGVyIG5vIGVycm9yIG9yIHNvbWUKKyAgICAgICAgb3RoZXIgZXJyb3IuICBJZiB3ZSBnZXQgdGhlIHNwZWNpZmljICJkb2VzIG5vdCBleGlzdCIgZXJyb3IgZm9yIG9uZQorICAgICAgICB0ZXN0IGFuZCBub3QgZm9yIHRoZSBvdGhlciwgdGhlcmUncyBhIG1pc21hdGNoLCBhbmQgdGhlIHRlc3QgZmFpbHMuCisKKyAgICAgICAgICAgKiogU29tZSBmb3JtYXQgdW5pdHMgaGF2ZSBzcGVjaWFsIGZ1bm55IHNlbWFudGljcyBhbmQgaXQgd291bGQKKyAgICAgICAgICAgICAgYmUgZGlmZmljdWx0IHRvIGFjY29tb2RhdGUgdGhlbSBoZXJlLiAgU2luY2UgdGhlc2UgYXJlIGFsbAorICAgICAgICAgICAgICB3ZWxsLWVzdGFibGlzaGVkIGFuZCBwcm9wZXJseSBza2lwcGVkIGluIHNraXBpdGVtKCkgd2UgY2FuCisgICAgICAgICAgICAgIGdldCBhd2F5IHdpdGggbm90IHRlc3RpbmcgdGhlbS0tdGhpcyB0ZXN0IGlzIHJlYWxseSBpbnRlbmRlZAorICAgICAgICAgICAgICB0byBjYXRjaCAqbmV3KiBmb3JtYXQgdW5pdHMuCisKKyAgICAgICAgICAqKiogUHl0aG9uIEMgc291cmNlIGZpbGVzIG11c3QgYmUgQVNDSUkuICBUaGVyZWZvcmUgaXQncyBpbXBvc3NpYmxlCisgICAgICAgICAgICAgIHRvIGhhdmUgbm9uLUFTQ0lJIGZvcm1hdCB1bml0cy4KKworICAgICAgICAiIiIKKyAgICAgICAgZW1wdHlfdHVwbGUgPSAoKQorICAgICAgICB0dXBsZV8xID0gKDAsKQorICAgICAgICBkaWN0X2IgPSB7J2InOjF9CisgICAgICAgIGtleXdvcmRzID0gWyJhIiwgImIiXQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDMyLCAxMjcpOgorICAgICAgICAgICAgYyA9IGNocihpKQorCisgICAgICAgICAgICAjIHNraXAgcGFyZW50aGVzZXMsIHRoZSBlcnJvciByZXBvcnRpbmcgaXMgaW5jb25zaXN0ZW50IGFib3V0IHRoZW0KKyAgICAgICAgICAgICMgc2tpcCAnZScsIGl0J3MgYWx3YXlzIGEgdHdvLWNoYXJhY3RlciBjb2RlCisgICAgICAgICAgICAjIHNraXAgJ3wnIGFuZCAnJCcsIHRoZXkgZG9uJ3QgcmVwcmVzZW50IGFyZ3VtZW50cyBhbnl3YXkKKyAgICAgICAgICAgIGlmIGMgaW4gJygpZXwkJzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIHRlc3QgdGhlIGZvcm1hdCB1bml0IHdoZW4gbm90IHNraXBwZWQKKyAgICAgICAgICAgIGZvcm1hdCA9IGMgKyAiaSIKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjIChub3RlOiB0aGUgZm9ybWF0IHN0cmluZyBtdXN0IGJlIGJ5dGVzISkKKyAgICAgICAgICAgICAgICBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzKHR1cGxlXzEsIGRpY3RfYiwKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0LmVuY29kZSgiYXNjaWkiKSwga2V5d29yZHMpCisgICAgICAgICAgICAgICAgd2hlbl9ub3Rfc2tpcHBlZCA9IEZhbHNlCisgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgcyA9ICJhcmd1bWVudCAxIG11c3QgYmUgaW1wb3NzaWJsZTxiYWQgZm9ybWF0IGNoYXI+LCBub3QgaW50IgorICAgICAgICAgICAgICAgIHdoZW5fbm90X3NraXBwZWQgPSAoc3RyKGUpID09IHMpCisgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgd2hlbl9ub3Rfc2tpcHBlZCA9IEZhbHNlCisKKyAgICAgICAgICAgICMgdGVzdCB0aGUgZm9ybWF0IHVuaXQgd2hlbiBza2lwcGVkCisgICAgICAgICAgICBvcHRpb25hbF9mb3JtYXQgPSAifCIgKyBmb3JtYXQKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzKGVtcHR5X3R1cGxlLCBkaWN0X2IsCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsX2Zvcm1hdC5lbmNvZGUoImFzY2lpIiksIGtleXdvcmRzKQorICAgICAgICAgICAgICAgIHdoZW5fc2tpcHBlZCA9IEZhbHNlCisgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgcyA9ICJpbXBvc3NpYmxlPGJhZCBmb3JtYXQgY2hhcj46ICd7fSciLmZvcm1hdChmb3JtYXQpCisgICAgICAgICAgICAgICAgd2hlbl9za2lwcGVkID0gKHN0cihlKSA9PSBzKQorCisgICAgICAgICAgICBtZXNzYWdlID0gKCJ0ZXN0X3NraXBpdGVtX3Bhcml0eTogIgorICAgICAgICAgICAgICAgICJkZXRlY3RlZCBtaXNtYXRjaCBiZXR3ZWVuIGNvbnZlcnRzaW1wbGUgYW5kIHNraXBpdGVtICIKKyAgICAgICAgICAgICAgICAiZm9yIGZvcm1hdCB1bml0ICd7fScgKHt9KSwgbm90IHNraXBwZWQge30sIHNraXBwZWQge30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgYywgaSwgd2hlbl9za2lwcGVkLCB3aGVuX25vdF9za2lwcGVkKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMod2hlbl9za2lwcGVkLCB3aGVuX25vdF9za2lwcGVkLCBtZXNzYWdlKQorCisgICAgZGVmIHRlc3RfcGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzKHNlbGYpOgorICAgICAgICAjIHBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcyBlcnJvciBoYW5kbGluZyB0ZXN0cworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICgpLCB7fSwgNDIsIFtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoKSwge30sIGInJywgNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICgpLCB7fSwgYicnLCBbJyddICogNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICgpLCB7fSwgYicnLCBbNDJdKQorCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogY2xhc3MgVGVzdFRocmVhZFN0YXRlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIEBzdXBwb3J0LnJlYXBfdGhyZWFkcwpAQCAtMjM1LDEzICszMzcsMTMgQEAKICAgICAgICAgICAgIGlkZW50cyA9IFtdCiAKICAgICAgICAgICAgIGRlZiBjYWxsYmFjaygpOgotICAgICAgICAgICAgICAgIGlkZW50cy5hcHBlbmQoX3RocmVhZC5nZXRfaWRlbnQoKSkKKyAgICAgICAgICAgICAgICBpZGVudHMuYXBwZW5kKHRocmVhZGluZy5nZXRfaWRlbnQoKSkKIAogICAgICAgICAgICAgX3Rlc3RjYXBpLl90ZXN0X3RocmVhZF9zdGF0ZShjYWxsYmFjaykKICAgICAgICAgICAgIGEgPSBiID0gY2FsbGJhY2sKICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKICAgICAgICAgICAgICMgQ2hlY2sgb3VyIG1haW4gdGhyZWFkIGlzIGluIHRoZSBsaXN0IGV4YWN0bHkgMyB0aW1lcy4KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWRlbnRzLmNvdW50KF90aHJlYWQuZ2V0X2lkZW50KCkpLCAzLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZGVudHMuY291bnQodGhyZWFkaW5nLmdldF9pZGVudCgpKSwgMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkbid0IGZpbmQgbWFpbiB0aHJlYWQgY29ycmVjdGx5IGluIHRoZSBsaXN0IikKIAogICAgICAgICB0YXJnZXQoKQpAQCAtMjUyLDcgKzM1NCw3IEBACiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChDQVBJVGVzdCwgVGVzdFBlbmRpbmdDYWxscywgVGVzdDYwMTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRW1iZWRkaW5nVGVzdCwgVGVzdFRocmVhZFN0YXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgIEVtYmVkZGluZ1Rlc3QsIFNraXBpdGVtVGVzdCwgVGVzdFRocmVhZFN0YXRlKQogCiAgICAgZm9yIG5hbWUgaW4gZGlyKF90ZXN0Y2FwaSk6CiAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgndGVzdF8nKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2dpLnB5IGIvTGliL3Rlc3QvdGVzdF9jZ2kucHkKaW5kZXggMDdlNzYwYi4uY2IyOGFhOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jZ2kucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jZ2kucHkKQEAgLTQsNiArNCw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTywgQnl0ZXNJTwogCkBAIC0xMzcsOSArMTM4LDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcykKIAogICAgIGRlZiB0ZXN0X2VzY2FwZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGVzdCAmYW1wOyBzdHJpbmciLCBjZ2kuZXNjYXBlKCJ0ZXN0ICYgc3RyaW5nIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIiZsdDt0ZXN0IHN0cmluZyZndDsiLCBjZ2kuZXNjYXBlKCI8dGVzdCBzdHJpbmc+IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIiZxdW90O3Rlc3Qgc3RyaW5nJnF1b3Q7IiwgY2dpLmVzY2FwZSgnInRlc3Qgc3RyaW5nIicsIFRydWUpKQorICAgICAgICAjIGNnaS5lc2NhcGUoKSBpcyBkZXByZWNhdGVkLgorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygnaWdub3JlJywgJ2NnaVwuZXNjYXBlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0ZXN0ICZhbXA7IHN0cmluZyIsIGNnaS5lc2NhcGUoInRlc3QgJiBzdHJpbmciKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIiZsdDt0ZXN0IHN0cmluZyZndDsiLCBjZ2kuZXNjYXBlKCI8dGVzdCBzdHJpbmc+IikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCImcXVvdDt0ZXN0IHN0cmluZyZxdW90OyIsIGNnaS5lc2NhcGUoJyJ0ZXN0IHN0cmluZyInLCBUcnVlKSkKIAogICAgIGRlZiB0ZXN0X3N0cmljdChzZWxmKToKICAgICAgICAgZm9yIG9yaWcsIGV4cGVjdCBpbiBwYXJzZV9zdHJpY3RfdGVzdF9jYXNlczoKQEAgLTE2OSw4ICsxNzQsNyBAQAogCiAgICAgZGVmIHRlc3RfbG9nKHNlbGYpOgogICAgICAgICBjZ2kubG9nKCJUZXN0aW5nIikKLSAgICAgICAgY2dpLmxvZ2ZpbGUgPSAiZmFpbC8iCi0gICAgICAgIGNnaS5pbml0bG9nKCIlcyIsICJUZXN0aW5nIGluaXRsb2ciKQorCiAgICAgICAgIGNnaS5sb2dmcCA9IFN0cmluZ0lPKCkKICAgICAgICAgY2dpLmluaXRsb2coIiVzIiwgIlRlc3RpbmcgaW5pdGxvZyAxIikKICAgICAgICAgY2dpLmxvZygiJXMiLCAiVGVzdGluZyBsb2cgMiIpCkBAIC0xNzksMTMgKzE4Myw3IEBACiAgICAgICAgICAgICBjZ2kubG9nZnAgPSBOb25lCiAgICAgICAgICAgICBjZ2kubG9nZmlsZSA9ICIvZGV2L251bGwiCiAgICAgICAgICAgICBjZ2kuaW5pdGxvZygiJXMiLCAiVGVzdGluZyBsb2cgMyIpCi0gICAgICAgICAgICBkZWYgbG9nX2NsZWFudXAoKToKLSAgICAgICAgICAgICAgICAiIiJSZXN0b3JlIHRoZSBnbG9iYWwgc3RhdGUgb2YgdGhlIGxvZyB2YXJzLiIiIgotICAgICAgICAgICAgICAgIGNnaS5sb2dmaWxlID0gJycKLSAgICAgICAgICAgICAgICBjZ2kubG9nZnAuY2xvc2UoKQotICAgICAgICAgICAgICAgIGNnaS5sb2dmcCA9IE5vbmUKLSAgICAgICAgICAgICAgICBjZ2kubG9nID0gY2dpLmluaXRsb2cKLSAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dfY2xlYW51cCkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjZ2kuY2xvc2Vsb2cpCiAgICAgICAgICAgICBjZ2kubG9nKCJUZXN0aW5nIGxvZyA0IikKIAogICAgIGRlZiB0ZXN0X2ZpZWxkc3RvcmFnZV9yZWFkbGluZShzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2dpdGIucHkgYi9MaWIvdGVzdC90ZXN0X2NnaXRiLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlMDcyYTkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2NnaXRiLnB5CkBAIC0wLDAgKzEsNzAgQEAKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUsIHRlbXBfZGlyCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzeXMKK2ltcG9ydCBjZ2l0YgorCitjbGFzcyBUZXN0Q2dpdGIodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZm9udHMoc2VsZik6CisgICAgICAgIHRleHQgPSAiSGVsbG8gUm9iYmllISIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZ2l0Yi5zbWFsbCh0ZXh0KSwgIjxzbWFsbD57fTwvc21hbGw+Ii5mb3JtYXQodGV4dCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2dpdGIuc3Ryb25nKHRleHQpLCAiPHN0cm9uZz57fTwvc3Ryb25nPiIuZm9ybWF0KHRleHQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNnaXRiLmdyZXkodGV4dCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzxmb250IGNvbG9yPSIjOTA5MDkwIj57fTwvZm9udD4nLmZvcm1hdCh0ZXh0KSkKKworICAgIGRlZiB0ZXN0X2JsYW5rcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZ2l0Yi5zbWFsbCgiIiksICIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNnaXRiLnN0cm9uZygiIiksICIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNnaXRiLmdyZXkoIiIpLCAiIikKKworICAgIGRlZiB0ZXN0X2h0bWwoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkhlbGxvIFdvcmxkIikKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgIyBJZiB0aGUgaHRtbCB3YXMgdGVtcGxhdGVkIHdlIGNvdWxkIGRvIGEgYml0IG1vcmUgaGVyZS4KKyAgICAgICAgICAgICMgQXQgbGVhc3QgY2hlY2sgdGhhdCB3ZSBnZXQgZGV0YWlscyBvbiB3aGF0IHdlIGp1c3QgcmFpc2VkLgorICAgICAgICAgICAgaHRtbCA9IGNnaXRiLmh0bWwoc3lzLmV4Y19pbmZvKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJWYWx1ZUVycm9yIiwgaHRtbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3RyKGVyciksIGh0bWwpCisKKyAgICBkZWYgdGVzdF90ZXh0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJIZWxsbyBXb3JsZCIpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIHRleHQgPSBjZ2l0Yi50ZXh0KHN5cy5leGNfaW5mbygpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiVmFsdWVFcnJvciIsIHRleHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJIZWxsbyBXb3JsZCIsIHRleHQpCisKKyAgICBkZWYgdGVzdF9zeXNob29rX25vX2xvZ2Rpcl9kZWZhdWx0X2Zvcm1hdChzZWxmKToKKyAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHRyYWNlZGlyOgorICAgICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKAorICAgICAgICAgICAgICAgICAgJy1jJywKKyAgICAgICAgICAgICAgICAgICgnaW1wb3J0IGNnaXRiOyBjZ2l0Yi5lbmFibGUobG9nZGlyPSVzKTsgJworICAgICAgICAgICAgICAgICAgICdyYWlzZSBWYWx1ZUVycm9yKCJIZWxsbyBXb3JsZCIpJykgJSByZXByKHRyYWNlZGlyKSkKKyAgICAgICAgb3V0ID0gb3V0LmRlY29kZShzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIlZhbHVlRXJyb3IiLCBvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIkhlbGxvIFdvcmxkIiwgb3V0KQorICAgICAgICAjIEJ5IGRlZmF1bHQgd2UgZW1pdCBIVE1MIG1hcmt1cC4KKyAgICAgICAgc2VsZi5hc3NlcnRJbignPHA+Jywgb3V0KQorICAgICAgICBzZWxmLmFzc2VydEluKCc8L3A+Jywgb3V0KQorCisgICAgZGVmIHRlc3Rfc3lzaG9va19ub19sb2dkaXJfdGV4dF9mb3JtYXQoc2VsZik6CisgICAgICAgICMgSXNzdWUgMTI4OTA6IHdlIHdlcmUgZW1pdHRpbmcgdGhlIDxwPiB0YWcgaW4gdGV4dCBtb2RlLgorICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgdHJhY2VkaXI6CisgICAgICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoCisgICAgICAgICAgICAgICAgICAnLWMnLAorICAgICAgICAgICAgICAgICAgKCdpbXBvcnQgY2dpdGI7IGNnaXRiLmVuYWJsZShmb3JtYXQ9InRleHQiLCBsb2dkaXI9JXMpOyAnCisgICAgICAgICAgICAgICAgICAgJ3JhaXNlIFZhbHVlRXJyb3IoIkhlbGxvIFdvcmxkIiknKSAlIHJlcHIodHJhY2VkaXIpKQorICAgICAgICBvdXQgPSBvdXQuZGVjb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiVmFsdWVFcnJvciIsIG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiSGVsbG8gV29ybGQiLCBvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJzxwPicsIG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignPC9wPicsIG91dCkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgcnVuX3VuaXR0ZXN0KFRlc3RDZ2l0YikKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWQucHkgYi9MaWIvdGVzdC90ZXN0X2NtZC5weQppbmRleCAzYTQ2MzU1Li42NjE4NTM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NtZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtZC5weQpAQCAtMjI4LDcgKzIyOCw3IEBACiAKIGRlZiB0ZXN0X2NvdmVyYWdlKGNvdmVyZGlyKToKICAgICB0cmFjZSA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgndHJhY2UnKQotICAgIHRyYWNlcj10cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMucHJlZml4LCBzeXMuZXhlY19wcmVmaXgsXSwKKyAgICB0cmFjZXI9dHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCxdLAogICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2U9MCwgY291bnQ9MSkKICAgICB0cmFjZXIucnVuKCdyZWxvYWQoY21kKTt0ZXN0X21haW4oKScpCiAgICAgcj10cmFjZXIucmVzdWx0cygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5IGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weQppbmRleCA2NzM3NWNkLi5hODlkN2U0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkKQEAgLTMyLDEyICszMiw2IEBACiAgICAgICAgIHNlbGYudmVyaWZ5X3ZhbGlkX2ZsYWcoJy1PJykKICAgICAgICAgc2VsZi52ZXJpZnlfdmFsaWRfZmxhZygnLU9PJykKIAotICAgIGRlZiB0ZXN0X3Eoc2VsZik6Ci0gICAgICAgIHNlbGYudmVyaWZ5X3ZhbGlkX2ZsYWcoJy1Rb2xkJykKLSAgICAgICAgc2VsZi52ZXJpZnlfdmFsaWRfZmxhZygnLVFuZXcnKQotICAgICAgICBzZWxmLnZlcmlmeV92YWxpZF9mbGFnKCctUXdhcm4nKQotICAgICAgICBzZWxmLnZlcmlmeV92YWxpZF9mbGFnKCctUXdhcm5hbGwnKQotCiAgICAgZGVmIHRlc3Rfc2l0ZV9mbGFnKHNlbGYpOgogICAgICAgICBzZWxmLnZlcmlmeV92YWxpZF9mbGFnKCctUycpCiAKQEAgLTE0OCw3ICsxNDIsNyBAQAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywgJ3Rlc3Qgc3BlY2lmaWMgdG8gTWFjIE9TIFgnKQogICAgIGRlZiB0ZXN0X29zeF91dGY4KHNlbGYpOgogICAgICAgICBkZWYgY2hlY2tfb3V0cHV0KHRleHQpOgotICAgICAgICAgICAgZGVjb2RlZCA9IHRleHQuZGVjb2RlKCd1dGY4JywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgICAgICAgICBkZWNvZGVkID0gdGV4dC5kZWNvZGUoJ3V0Zi04JywgJ3N1cnJvZ2F0ZWVzY2FwZScpCiAgICAgICAgICAgICBleHBlY3RlZCA9IGFzY2lpKGRlY29kZWQpLmVuY29kZSgnYXNjaWknKSArIGInXG4nCiAKICAgICAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCkBAIC0yMjAsNyArMjE0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbihwYXRoMi5lbmNvZGUoJ2FzY2lpJyksIG91dCkKIAogICAgIGRlZiB0ZXN0X2Rpc3BsYXlob29rX3VuZW5jb2RhYmxlKHNlbGYpOgotICAgICAgICBmb3IgZW5jb2RpbmcgaW4gKCdhc2NpaScsICdsYXRpbjEnLCAndXRmOCcpOgorICAgICAgICBmb3IgZW5jb2RpbmcgaW4gKCdhc2NpaScsICdsYXRpbi0xJywgJ3V0Zi04Jyk6CiAgICAgICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQogICAgICAgICAgICAgZW52WydQWVRIT05JT0VOQ09ESU5HJ10gPSBlbmNvZGluZwogICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oCkBAIC0yOTYsNyArMjkwLDcgQEAKICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJywgb3V0KQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVyci5kZWNvZGUoJ2FzY2lpJywgJ2lnbm9yZScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICdFeGNlcHRpb24gSU9FcnJvcjogLiogaWdub3JlZCcpCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4Y2VwdGlvbiBPU0Vycm9yOiAuKiBpZ25vcmVkJykKIAogICAgIGRlZiB0ZXN0X2Nsb3NlZF9zdGRvdXQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzEzNDQ0OiBpZiBzdGRvdXQgaGFzIGJlZW4gZXhwbGljaXRseSBjbG9zZWQsIHdlIHNob3VsZApAQCAtMzUwLDE0ICszNDQsMTQgQEAKICAgICAgICAgaGFzaGVzID0gW10KICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CiAgICAgICAgICAgICBjb2RlID0gJ3ByaW50KGhhc2goInNwYW0iKSknCi0gICAgICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctUicsICctYycsIGNvZGUpCisgICAgICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCAwKQogICAgICAgICAgICAgaGFzaGVzLmFwcGVuZChvdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaGFzaGVzWzBdLCBoYXNoZXNbMV0pCiAKICAgICAgICAgIyBWZXJpZnkgdGhhdCBzeXMuZmxhZ3MgY29udGFpbnMgaGFzaF9yYW5kb21pemF0aW9uCiAgICAgICAgIGNvZGUgPSAnaW1wb3J0IHN5czsgcHJpbnQoInJhbmRvbSBpcyIsIHN5cy5mbGFncy5oYXNoX3JhbmRvbWl6YXRpb24pJwotICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctUicsICctYycsIGNvZGUpCisgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ3JhbmRvbSBpcyAxJywgb3V0KQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weSBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CmluZGV4IDcwZjdkMWUuLjYwNTFlMTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CkBAIC0xLDE1ICsxLDIwIEBACiAjIHRlc3RzIGNvbW1hbmQgbGluZSBleGVjdXRpb24gb2Ygc2NyaXB0cwogCitpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQoraW1wb3J0IHppcGltcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgcHlfY29tcGlsZQogCitpbXBvcnQgdGV4dHdyYXAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0ICgKICAgICBtYWtlX3BrZywgbWFrZV9zY3JpcHQsIG1ha2VfemlwX3BrZywgbWFrZV96aXBfc2NyaXB0LAotICAgIGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZSwgdGVtcF9kaXIpCisgICAgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlLCB0ZW1wX2RpciwKKyAgICBzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uKQogCiB2ZXJib3NlID0gc3VwcG9ydC52ZXJib3NlCiAKQEAgLTMyLDYgKzM3LDkgQEAKIGFzc2VydEVxdWFsKHJlc3VsdCwgWydUb3AgbGV2ZWwgYXNzaWdubWVudCcsICdMb3dlciBsZXZlbCByZWZlcmVuY2UnXSkKICMgQ2hlY2sgcG9wdWxhdGlvbiBvZiBtYWdpYyB2YXJpYWJsZXMKIGFzc2VydEVxdWFsKF9fbmFtZV9fLCAnX19tYWluX18nKQorZnJvbSBpbXBvcnRsaWIubWFjaGluZXJ5IGltcG9ydCBCdWlsdGluSW1wb3J0ZXIKK19sb2FkZXIgPSBfX2xvYWRlcl9fIGlmIF9fbG9hZGVyX18gaXMgQnVpbHRpbkltcG9ydGVyIGVsc2UgdHlwZShfX2xvYWRlcl9fKQorcHJpbnQoJ19fbG9hZGVyX189PSVhJyAlIF9sb2FkZXIpCiBwcmludCgnX19maWxlX189PSVhJyAlIF9fZmlsZV9fKQogYXNzZXJ0RXF1YWwoX19jYWNoZWRfXywgTm9uZSkKIHByaW50KCdfX3BhY2thZ2VfXz09JXInICUgX19wYWNrYWdlX18pCkBAIC00OSwxMiArNTcsMTYgQEAKICIiIgogCiBkZWYgX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X2Jhc2VuYW1lLCBzb3VyY2U9dGVzdF9zb3VyY2UpOgotICAgIHJldHVybiBtYWtlX3NjcmlwdChzY3JpcHRfZGlyLCBzY3JpcHRfYmFzZW5hbWUsIHNvdXJjZSkKKyAgICB0b19yZXR1cm4gPSBtYWtlX3NjcmlwdChzY3JpcHRfZGlyLCBzY3JpcHRfYmFzZW5hbWUsIHNvdXJjZSkKKyAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgIHJldHVybiB0b19yZXR1cm4KIAogZGVmIF9tYWtlX3Rlc3RfemlwX3BrZyh6aXBfZGlyLCB6aXBfYmFzZW5hbWUsIHBrZ19uYW1lLCBzY3JpcHRfYmFzZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT10ZXN0X3NvdXJjZSwgZGVwdGg9MSk6Ci0gICAgcmV0dXJuIG1ha2VfemlwX3BrZyh6aXBfZGlyLCB6aXBfYmFzZW5hbWUsIHBrZ19uYW1lLCBzY3JpcHRfYmFzZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsIGRlcHRoKQorICAgIHRvX3JldHVybiA9IG1ha2VfemlwX3BrZyh6aXBfZGlyLCB6aXBfYmFzZW5hbWUsIHBrZ19uYW1lLCBzY3JpcHRfYmFzZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSwgZGVwdGgpCisgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICByZXR1cm4gdG9fcmV0dXJuCiAKICMgVGhlcmUncyBubyBlYXN5IHdheSB0byBwYXNzIHRoZSBzY3JpcHQgZGlyZWN0b3J5IGluIHRvIGdldAogIyAtbSB0byB3b3JrIChhdm9pZGluZyB0aGF0IGlzIHRoZSB3aG9sZSBwb2ludCBvZiBtYWtpbmcKQEAgLTcyLDE2ICs4NCwyMCBAQAogICAgIGVsc2U6CiAgICAgICAgIHBhdGggPSByZXByKHBhdGgpCiAgICAgc291cmNlID0gbGF1bmNoX3NvdXJjZSAlIChwYXRoLCBtb2R1bGVfbmFtZSkKLSAgICByZXR1cm4gbWFrZV9zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X2Jhc2VuYW1lLCBzb3VyY2UpCisgICAgdG9fcmV0dXJuID0gbWFrZV9zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X2Jhc2VuYW1lLCBzb3VyY2UpCisgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICByZXR1cm4gdG9fcmV0dXJuCiAKIGNsYXNzIENtZExpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgX2NoZWNrX291dHB1dChzZWxmLCBzY3JpcHRfbmFtZSwgZXhpdF9jb2RlLCBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9maWxlLCBleHBlY3RlZF9hcmd2MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGF0aDAsIGV4cGVjdGVkX3BhY2thZ2UpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9wYXRoMCwgZXhwZWN0ZWRfcGFja2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbG9hZGVyKToKICAgICAgICAgaWYgdmVyYm9zZSA+IDE6CiAgICAgICAgICAgICBwcmludCgiT3V0cHV0IGZyb20gdGVzdCBzY3JpcHQgJXI6IiAlIHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgcHJpbnQoZGF0YSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0X2NvZGUsIDApCisgICAgICAgIHByaW50ZWRfbG9hZGVyID0gJ19fbG9hZGVyX189PSVhJyAlIGV4cGVjdGVkX2xvYWRlcgogICAgICAgICBwcmludGVkX2ZpbGUgPSAnX19maWxlX189PSVhJyAlIGV4cGVjdGVkX2ZpbGUKICAgICAgICAgcHJpbnRlZF9wYWNrYWdlID0gJ19fcGFja2FnZV9fPT0lcicgJSBleHBlY3RlZF9wYWNrYWdlCiAgICAgICAgIHByaW50ZWRfYXJndjAgPSAnc3lzLmFyZ3ZbMF09PSVhJyAlIGV4cGVjdGVkX2FyZ3YwCkBAIC05Myw2ICsxMDksNyBAQAogICAgICAgICAgICAgcHJpbnQocHJpbnRlZF9wYWNrYWdlKQogICAgICAgICAgICAgcHJpbnQocHJpbnRlZF9hcmd2MCkKICAgICAgICAgICAgIHByaW50KHByaW50ZWRfY3dkKQorICAgICAgICBzZWxmLmFzc2VydEluKHByaW50ZWRfbG9hZGVyLmVuY29kZSgndXRmLTgnKSwgZGF0YSkKICAgICAgICAgc2VsZi5hc3NlcnRJbihwcmludGVkX2ZpbGUuZW5jb2RlKCd1dGYtOCcpLCBkYXRhKQogICAgICAgICBzZWxmLmFzc2VydEluKHByaW50ZWRfcGFja2FnZS5lbmNvZGUoJ3V0Zi04JyksIGRhdGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocHJpbnRlZF9hcmd2MC5lbmNvZGUoJ3V0Zi04JyksIGRhdGEpCkBAIC0xMDEsMTQgKzExOCwxNSBAQAogCiAgICAgZGVmIF9jaGVja19zY3JpcHQoc2VsZiwgc2NyaXB0X25hbWUsIGV4cGVjdGVkX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJndjAsIGV4cGVjdGVkX3BhdGgwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZSwgZXhwZWN0ZWRfbG9hZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjbWRfbGluZV9zd2l0Y2hlcyk6CiAgICAgICAgIGlmIG5vdCBfX2RlYnVnX186CiAgICAgICAgICAgICBjbWRfbGluZV9zd2l0Y2hlcyArPSAoJy0nICsgJ08nICogc3lzLmZsYWdzLm9wdGltaXplLCkKICAgICAgICAgcnVuX2FyZ3MgPSBjbWRfbGluZV9zd2l0Y2hlcyArIChzY3JpcHRfbmFtZSwpICsgdHVwbGUoZXhhbXBsZV9hcmdzKQogICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCpydW5fYXJncykKICAgICAgICAgc2VsZi5fY2hlY2tfb3V0cHV0KHNjcmlwdF9uYW1lLCByYywgb3V0ICsgZXJyLCBleHBlY3RlZF9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJndjAsIGV4cGVjdGVkX3BhdGgwLCBleHBlY3RlZF9wYWNrYWdlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJndjAsIGV4cGVjdGVkX3BhdGgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZSwgZXhwZWN0ZWRfbG9hZGVyKQogCiAgICAgZGVmIF9jaGVja19pbXBvcnRfZXJyb3Ioc2VsZiwgc2NyaXB0X25hbWUsIGV4cGVjdGVkX21zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY21kX2xpbmVfc3dpdGNoZXMpOgpAQCAtMTIwLDExICsxMzgsMzAgQEAKICAgICAgICAgICAgIHByaW50KCdFeHBlY3RlZCBvdXRwdXQ6ICVyJyAlIGV4cGVjdGVkX21zZykKICAgICAgICAgc2VsZi5hc3NlcnRJbihleHBlY3RlZF9tc2cuZW5jb2RlKCd1dGYtOCcpLCBlcnIpCiAKKyAgICBkZWYgdGVzdF9kYXNoX2NfbG9hZGVyKHNlbGYpOgorICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCItYyIsICJwcmludChfX2xvYWRlcl9fKSIpCisgICAgICAgIGV4cGVjdGVkID0gcmVwcihpbXBvcnRsaWIubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlcikuZW5jb2RlKCJ1dGYtOCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXhwZWN0ZWQsIG91dCkKKworICAgIGRlZiB0ZXN0X3N0ZGluX2xvYWRlcihzZWxmKToKKyAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB0aGVyZSdzIG5vIHdheSB0byBhdXRvbWF0aWNhbGx5IHRlc3QgdGhlIGZ1bGx5CisgICAgICAgICMgaW50ZXJhY3RpdmUgUkVQTCwgc2luY2UgdGhhdCBjb2RlIHBhdGggb25seSBnZXRzIGV4ZWN1dGVkIHdoZW4KKyAgICAgICAgIyBzdGRpbiBpcyBhbiBpbnRlcmFjdGl2ZSB0dHkuCisgICAgICAgIHAgPSBzcGF3bl9weXRob24oKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwLnN0ZGluLndyaXRlKGIicHJpbnQoX19sb2FkZXJfXylcbiIpCisgICAgICAgICAgICBwLnN0ZGluLmZsdXNoKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG91dCA9IGtpbGxfcHl0aG9uKHApCisgICAgICAgIGV4cGVjdGVkID0gcmVwcihpbXBvcnRsaWIubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlcikuZW5jb2RlKCJ1dGYtOCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXhwZWN0ZWQsIG91dCkKKwogICAgIGRlZiB0ZXN0X2Jhc2ljX3NjcmlwdChzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdzY3JpcHQnKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KHNjcmlwdF9uYW1lLCBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfZGlyLCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X3NjcmlwdF9jb21waWxlZChzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CkBAIC0xMzMsMTMgKzE3MCwxNSBAQAogICAgICAgICAgICAgb3MucmVtb3ZlKHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgcHljX2ZpbGUgPSBzdXBwb3J0Lm1ha2VfbGVnYWN5X3B5YyhzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChweWNfZmlsZSwgcHljX2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHljX2ZpbGUsIHNjcmlwdF9kaXIsIE5vbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHljX2ZpbGUsIHNjcmlwdF9kaXIsIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2RpcmVjdG9yeShzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdfX21haW5fXycpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X25hbWUsIHNjcmlwdF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgJycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5X2NvbXBpbGVkKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKQEAgLTE0OCw3ICsxODcsOCBAQAogICAgICAgICAgICAgb3MucmVtb3ZlKHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgcHljX2ZpbGUgPSBzdXBwb3J0Lm1ha2VfbGVnYWN5X3B5YyhzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChzY3JpcHRfZGlyLCBweWNfZmlsZSwgc2NyaXB0X2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfZGlyLCAnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfZGlyLCAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5X2Vycm9yKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKQEAgLTE1OSwxNCArMTk5LDE2IEBACiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnX19tYWluX18nKQogICAgICAgICAgICAgemlwX25hbWUsIHJ1bl9uYW1lID0gbWFrZV96aXBfc2NyaXB0KHNjcmlwdF9kaXIsICd0ZXN0X3ppcCcsIHNjcmlwdF9uYW1lKQotICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KHppcF9uYW1lLCBydW5fbmFtZSwgemlwX25hbWUsIHppcF9uYW1lLCAnJykKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdCh6aXBfbmFtZSwgcnVuX25hbWUsIHppcF9uYW1lLCB6aXBfbmFtZSwgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKQogCiAgICAgZGVmIHRlc3RfemlwZmlsZV9jb21waWxlZChzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdfX21haW5fXycpCiAgICAgICAgICAgICBjb21waWxlZF9uYW1lID0gcHlfY29tcGlsZS5jb21waWxlKHNjcmlwdF9uYW1lLCBkb3JhaXNlPVRydWUpCiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBtYWtlX3ppcF9zY3JpcHQoc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgY29tcGlsZWRfbmFtZSkKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdCh6aXBfbmFtZSwgcnVuX25hbWUsIHppcF9uYW1lLCB6aXBfbmFtZSwgJycpCisgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoemlwX25hbWUsIHJ1bl9uYW1lLCB6aXBfbmFtZSwgemlwX25hbWUsICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcikKIAogICAgIGRlZiB0ZXN0X3ppcGZpbGVfZXJyb3Ioc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgpAQCAtMTgxLDE5ICsyMjMsMjQgQEAKICAgICAgICAgICAgIG1ha2VfcGtnKHBrZ19kaXIpCiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHBrZ19kaXIsICdzY3JpcHQnKQogICAgICAgICAgICAgbGF1bmNoX25hbWUgPSBfbWFrZV9sYXVuY2hfc2NyaXB0KHNjcmlwdF9kaXIsICdsYXVuY2gnLCAndGVzdF9wa2cuc2NyaXB0JykKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSwgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLCBzY3JpcHRfZGlyLCAndGVzdF9wa2cnKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfaW5fcGFja2FnZV9pbl96aXBmaWxlKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IF9tYWtlX3Rlc3RfemlwX3BrZyhzY3JpcHRfZGlyLCAndGVzdF96aXAnLCAndGVzdF9wa2cnLCAnc2NyaXB0JykKICAgICAgICAgICAgIGxhdW5jaF9uYW1lID0gX21ha2VfbGF1bmNoX3NjcmlwdChzY3JpcHRfZGlyLCAnbGF1bmNoJywgJ3Rlc3RfcGtnLnNjcmlwdCcsIHppcF9uYW1lKQotICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBydW5fbmFtZSwgcnVuX25hbWUsIHppcF9uYW1lLCAndGVzdF9wa2cnKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBydW5fbmFtZSwgcnVuX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwX25hbWUsICd0ZXN0X3BrZycsIHppcGltcG9ydC56aXBpbXBvcnRlcikKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9pbl9zdWJwYWNrYWdlX2luX3ppcGZpbGUoc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgemlwX25hbWUsIHJ1bl9uYW1lID0gX21ha2VfdGVzdF96aXBfcGtnKHNjcmlwdF9kaXIsICd0ZXN0X3ppcCcsICd0ZXN0X3BrZycsICdzY3JpcHQnLCBkZXB0aD0yKQogICAgICAgICAgICAgbGF1bmNoX25hbWUgPSBfbWFrZV9sYXVuY2hfc2NyaXB0KHNjcmlwdF9kaXIsICdsYXVuY2gnLCAndGVzdF9wa2cudGVzdF9wa2cuc2NyaXB0JywgemlwX25hbWUpCi0gICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQobGF1bmNoX25hbWUsIHJ1bl9uYW1lLCBydW5fbmFtZSwgemlwX25hbWUsICd0ZXN0X3BrZy50ZXN0X3BrZycpCisgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQobGF1bmNoX25hbWUsIHJ1bl9uYW1lLCBydW5fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aXBfbmFtZSwgJ3Rlc3RfcGtnLnRlc3RfcGtnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKQEAgLTIwMiw3ICsyNDksOCBAQAogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChwa2dfZGlyLCAnX19tYWluX18nKQogICAgICAgICAgICAgbGF1bmNoX25hbWUgPSBfbWFrZV9sYXVuY2hfc2NyaXB0KHNjcmlwdF9kaXIsICdsYXVuY2gnLCAndGVzdF9wa2cnKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBzY3JpcHRfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbmFtZSwgc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbmFtZSwgc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX2NvbXBpbGVkKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKQEAgLTIxNCw3ICsyNjIsOCBAQAogICAgICAgICAgICAgcHljX2ZpbGUgPSBzdXBwb3J0Lm1ha2VfbGVnYWN5X3B5YyhzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIGxhdW5jaF9uYW1lID0gX21ha2VfbGF1bmNoX3NjcmlwdChzY3JpcHRfZGlyLCAnbGF1bmNoJywgJ3Rlc3RfcGtnJykKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSwgcHljX2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHljX2ZpbGUsIHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHljX2ZpbGUsIHNjcmlwdF9kaXIsICd0ZXN0X3BrZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2VfZXJyb3Ioc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgpAQCAtMjUxLDcgKzMwMCw4IEBACiAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSAiaW5pdF9hcmd2MD09JXIiICUgJy1tJwogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXhwZWN0ZWQuZW5jb2RlKCd1dGYtOCcpLCBvdXQpCiAgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfb3V0cHV0KHNjcmlwdF9uYW1lLCByYywgb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsICcnLCAndGVzdF9wa2cnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsICcnLCAndGVzdF9wa2cnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9pc3N1ZTgyMDJfZGFzaF9jX2ZpbGVfaWdub3JlZChzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgYSAiLWMiIGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5CkBAIC0yNzcsNyArMzI3LDggQEAKICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiZGF0YSIpCiAgICAgICAgICAgICAgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1tJywgJ290aGVyJywgKmV4YW1wbGVfYXJncykKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfb3V0cHV0KHNjcmlwdF9uYW1lLCByYywgb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsICcnLCAnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLCAnJywgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2Rhc2hfbV9lcnJvcl9jb2RlX2lzX29uZShzZWxmKToKICAgICAgICAgIyBJZiBhIG1vZHVsZSBpcyBpbnZva2VkIHdpdGggdGhlIC1tIGNvbW1hbmQgbGluZSBmbGFnCkBAIC0yOTQsNiArMzQ1LDI0IEBACiAgICAgICAgICAgICAgICAgICAgIHByaW50KG91dCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCAxKQogCisgICAgZGVmIHRlc3RfcGVwXzQwOV92ZXJiaWFnZShzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgUEVQIDQwOSBzeW50YXggcHJvcGVybHkgc3VwcHJlc3NlcworICAgICAgICAjIHRoZSBjb250ZXh0IG9mIGFuIGV4Y2VwdGlvbgorICAgICAgICBzY3JpcHQgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICByYWlzZSBOYW1lRXJyb3IgZnJvbSBOb25lCisgICAgICAgICAgICAiIiIpCisgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0Jywgc2NyaXB0KQorICAgICAgICAgICAgZXhpdGNvZGUsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKHNjcmlwdF9uYW1lKQorICAgICAgICAgICAgdGV4dCA9IHN0ZGVyci5kZWNvZGUoJ2FzY2lpJykuc3BsaXQoJ1xuJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRleHQpLCA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRleHRbMF0uc3RhcnRzd2l0aCgnVHJhY2ViYWNrJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodGV4dFsxXS5zdGFydHN3aXRoKCcgIEZpbGUgJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodGV4dFszXS5zdGFydHN3aXRoKCdOYW1lRXJyb3InKSkKKwogICAgIGRlZiB0ZXN0X25vbl9hc2NpaShzZWxmKToKICAgICAgICAgIyBNYWMgT1MgWCBkZW5pZXMgdGhlIGNyZWF0aW9uIG9mIGEgZmlsZSB3aXRoIGFuIGludmFsaWQgVVRGLTggbmFtZS4KICAgICAgICAgIyBXaW5kb3dzIGFsbG93cyB0byBjcmVhdGUgYSBuYW1lIHdpdGggYW4gYXJiaXRyYXJ5IGJ5dGVzIG5hbWUsIGJ1dApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlLnB5CmluZGV4IGUxYzdhNzguLjMzNzdhN2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGUucHkKQEAgLTE2LDcgKzE2LDcgQEAKIGZyZWV2YXJzOiAoKQogbmxvY2FsczogMgogZmxhZ3M6IDMKLWNvbnN0czogKCdOb25lJywgJzxjb2RlIG9iamVjdCBnPicpCitjb25zdHM6ICgnTm9uZScsICc8Y29kZSBvYmplY3QgZz4nLCAiJ2YuPGxvY2Fscz4uZyciKQogCiA+Pj4gZHVtcChmKDQpLl9fY29kZV9fKQogbmFtZTogZwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRlZjE3MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkKQEAgLTAsMCArMSw3MiBAQAorIlRlc3QgSW50ZXJhY3RpdmVDb25zb2xlIGFuZCBJbnRlcmFjdGl2ZUludGVycHJldGVyIGZyb20gY29kZSBtb2R1bGUiCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gY29udGV4dGxpYiBpbXBvcnQgRXhpdFN0YWNrCitmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworY29kZSA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnY29kZScpCisKKworY2xhc3MgVGVzdEludGVyYWN0aXZlQ29uc29sZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuY29uc29sZSA9IGNvZGUuSW50ZXJhY3RpdmVDb25zb2xlKCkKKyAgICAgICAgc2VsZi5tb2NrX3N5cygpCisKKyAgICBkZWYgbW9ja19zeXMoc2VsZik6CisgICAgICAgICJNb2NrIHN5c3RlbSBlbnZpcm9ubWVudCBmb3IgSW50ZXJhY3RpdmVDb25zb2xlIgorICAgICAgICAjIHVzZSBleGl0IHN0YWNrIHRvIG1hdGNoIHBhdGNoIGNvbnRleHQgbWFuYWdlcnMgdG8gYWRkQ2xlYW51cAorICAgICAgICBzdGFjayA9IEV4aXRTdGFjaygpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdGFjay5jbG9zZSkKKyAgICAgICAgc2VsZi5pbmZ1bmMgPSBzdGFjay5lbnRlcl9jb250ZXh0KG1vY2sucGF0Y2goJ2NvZGUuaW5wdXQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlPVRydWUpKQorICAgICAgICBzZWxmLnN0ZG91dCA9IHN0YWNrLmVudGVyX2NvbnRleHQobW9jay5wYXRjaCgnY29kZS5zeXMuc3Rkb3V0JykpCisgICAgICAgIHNlbGYuc3RkZXJyID0gc3RhY2suZW50ZXJfY29udGV4dChtb2NrLnBhdGNoKCdjb2RlLnN5cy5zdGRlcnInKSkKKyAgICAgICAgcHJlcGF0Y2ggPSBtb2NrLnBhdGNoKCdjb2RlLnN5cycsIHdyYXBzPWNvZGUuc3lzLCBzcGVjPWNvZGUuc3lzKQorICAgICAgICBzZWxmLnN5c21vZCA9IHN0YWNrLmVudGVyX2NvbnRleHQocHJlcGF0Y2gpCisgICAgICAgIGlmIHN5cy5leGNlcHRob29rIGlzIHN5cy5fX2V4Y2VwdGhvb2tfXzoKKyAgICAgICAgICAgIHNlbGYuc3lzbW9kLmV4Y2VwdGhvb2sgPSBzZWxmLnN5c21vZC5fX2V4Y2VwdGhvb2tfXworCisgICAgZGVmIHRlc3RfcHMxKHNlbGYpOgorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IEVPRkVycm9yKCdGaW5pc2hlZCcpCisgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zeXNtb2QucHMxLCAnPj4+ICcpCisKKyAgICBkZWYgdGVzdF9wczIoc2VsZik6CisgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gRU9GRXJyb3IoJ0ZpbmlzaGVkJykKKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnN5c21vZC5wczIsICcuLi4gJykKKworICAgIGRlZiB0ZXN0X2NvbnNvbGVfc3RkZXJyKHNlbGYpOgorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IFsiJ2FudGlvY2gnIiwgIiIsIEVPRkVycm9yKCdGaW5pc2hlZCcpXQorICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoKQorICAgICAgICBmb3IgY2FsbCBpbiBsaXN0KHNlbGYuc3Rkb3V0Lm1ldGhvZF9jYWxscyk6CisgICAgICAgICAgICBpZiAnYW50aW9jaCcgaW4gJycuam9pbihjYWxsWzFdKToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIm5vIGNvbnNvbGUgc3Rkb3V0IikKKworICAgIGRlZiB0ZXN0X3N5bnRheF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBbInVuZGVmaW5lZCIsIEVPRkVycm9yKCdGaW5pc2hlZCcpXQorICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoKQorICAgICAgICBmb3IgY2FsbCBpbiBzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHM6CisgICAgICAgICAgICBpZiAnTmFtZUVycm9yOicgaW4gJycuam9pbihjYWxsWzFdKToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIk5vIHN5bnRheCBlcnJvciBmcm9tIGNvbnNvbGUiKQorCisgICAgZGVmIHRlc3Rfc3lzZXhjZXB0aG9vayhzZWxmKToKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBbInJhaXNlIFZhbHVlRXJyb3IoJycpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVPRkVycm9yKCdGaW5pc2hlZCcpXQorICAgICAgICBob29rID0gbW9jay5Nb2NrKCkKKyAgICAgICAgc2VsZi5zeXNtb2QuZXhjZXB0aG9vayA9IGhvb2sKKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhvb2suY2FsbGVkKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0SW50ZXJhY3RpdmVDb25zb2xlKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkKaW5kZXggM2I3OGI0YS4uZmQ4ODUwNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5CkBAIC0xLDUgKzEsMTggQEAKLWltcG9ydCB0ZXN0LnN1cHBvcnQsIHVuaXR0ZXN0Ci1pbXBvcnQgc3lzLCBjb2RlY3MsIGh0bWwuZW50aXRpZXMsIHVuaWNvZGVkYXRhCitpbXBvcnQgY29kZWNzCitpbXBvcnQgaHRtbC5lbnRpdGllcworaW1wb3J0IHN5cworaW1wb3J0IHRlc3Quc3VwcG9ydAoraW1wb3J0IHVuaWNvZGVkYXRhCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncworCit0cnk6CisgICAgaW1wb3J0IGN0eXBlcworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGN0eXBlcyA9IE5vbmUKKyAgICBTSVpFT0ZfV0NIQVJfVCA9IC0xCitlbHNlOgorICAgIFNJWkVPRl9XQ0hBUl9UID0gY3R5cGVzLnNpemVvZihjdHlwZXMuY193Y2hhcikKIAogY2xhc3MgUG9zUmV0dXJuOgogICAgICMgdGhpcyBjYW4gYmUgdXNlZCBmb3IgY29uZmlndXJhYmxlIGNhbGxiYWNrcwpAQCAtMTM1LDIyICsxNDgsMTQgQEAKICAgICBkZWYgdGVzdF9iYWNrc2xhc2hlc2NhcGUoc2VsZik6CiAgICAgICAgICMgRG9lcyB0aGUgc2FtZSBhcyB0aGUgInVuaWNvZGUtZXNjYXBlIiBlbmNvZGluZywgYnV0IHdpdGggZGlmZmVyZW50CiAgICAgICAgICMgYmFzZSBlbmNvZGluZ3MuCi0gICAgICAgIHNpbiA9ICJhXHhhY1x1MTIzNFx1MjBhY1x1ODAwMCIKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPiAweGZmZmY6Ci0gICAgICAgICAgICBzaW4gKz0gY2hyKHN5cy5tYXh1bmljb2RlKQotICAgICAgICBzb3V0ID0gYiJhXFx4YWNcXHUxMjM0XFx1MjBhY1xcdTgwMDAiCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgotICAgICAgICAgICAgc291dCArPSBieXRlcygiXFxVJTA4eCIgJSBzeXMubWF4dW5pY29kZSwgImFzY2lpIikKKyAgICAgICAgc2luID0gImFceGFjXHUxMjM0XHUyMGFjXHU4MDAwXFUwMDEwZmZmZiIKKyAgICAgICAgc291dCA9IGIiYVxceGFjXFx1MTIzNFxcdTIwYWNcXHU4MDAwXFxVMDAxMGZmZmYiCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2luLmVuY29kZSgiYXNjaWkiLCAiYmFja3NsYXNocmVwbGFjZSIpLCBzb3V0KQogCi0gICAgICAgIHNvdXQgPSBiImFceGFjXFx1MTIzNFxcdTIwYWNcXHU4MDAwIgotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA+IDB4ZmZmZjoKLSAgICAgICAgICAgIHNvdXQgKz0gYnl0ZXMoIlxcVSUwOHgiICUgc3lzLm1heHVuaWNvZGUsICJhc2NpaSIpCisgICAgICAgIHNvdXQgPSBiImFceGFjXFx1MTIzNFxcdTIwYWNcXHU4MDAwXFxVMDAxMGZmZmYiCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2luLmVuY29kZSgibGF0aW4tMSIsICJiYWNrc2xhc2hyZXBsYWNlIiksIHNvdXQpCiAKLSAgICAgICAgc291dCA9IGIiYVx4YWNcXHUxMjM0XHhhNFxcdTgwMDAiCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgotICAgICAgICAgICAgc291dCArPSBieXRlcygiXFxVJTA4eCIgJSBzeXMubWF4dW5pY29kZSwgImFzY2lpIikKKyAgICAgICAgc291dCA9IGIiYVx4YWNcXHUxMjM0XHhhNFxcdTgwMDBcXFUwMDEwZmZmZiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW4uZW5jb2RlKCJpc28tODg1OS0xNSIsICJiYWNrc2xhc2hyZXBsYWNlIiksIHNvdXQpCiAKICAgICBkZWYgdGVzdF9kZWNvZGluZ19jYWxsYmFja3Moc2VsZik6CkBAIC0yMDAsMzMgKzIwNSwzNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvZGVjcy5jaGFybWFwX2VuY29kZSwgc2luLCAicmVwbGFjZSIsIGNoYXJtYXApCiAKICAgICBkZWYgdGVzdF9kZWNvZGV1bmljb2RlaW50ZXJuYWwoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgVW5pY29kZURlY29kZUVycm9yLAotICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlLAotICAgICAgICAgICAgInVuaWNvZGUtaW50ZXJuYWwiLAotICAgICAgICApCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgorICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5jaGVja193YXJuaW5ncygoJ3VuaWNvZGVfaW50ZXJuYWwgY29kZWMgaGFzIGJlZW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUsCisgICAgICAgICAgICAgICAgInVuaWNvZGUtaW50ZXJuYWwiLAorICAgICAgICAgICAgKQorICAgICAgICBpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0OgogICAgICAgICAgICAgZGVmIGhhbmRsZXJfdW5pY29kZWludGVybmFsKGV4Yyk6CiAgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZXhjLCBVbmljb2RlRGVjb2RlRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImRvbid0IGtub3cgaG93IHRvIGhhbmRsZSAlciIgJSBleGMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICgiXHgwMSIsIDEpCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlKCJ1bmljb2RlLWludGVybmFsIiwgImlnbm9yZSIpLAotICAgICAgICAgICAgICAgICJcdTAwMDAiCi0gICAgICAgICAgICApCisgICAgICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5jaGVja193YXJuaW5ncygoJ3VuaWNvZGVfaW50ZXJuYWwgY29kZWMgaGFzIGJlZW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlKCJ1bmljb2RlLWludGVybmFsIiwgImlnbm9yZSIpLAorICAgICAgICAgICAgICAgICAgICAiXHUwMDAwIgorICAgICAgICAgICAgICAgICkKIAotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUoInVuaWNvZGUtaW50ZXJuYWwiLCAicmVwbGFjZSIpLAotICAgICAgICAgICAgICAgICJcdTAwMDBcdWZmZmQiCi0gICAgICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlKCJ1bmljb2RlLWludGVybmFsIiwgInJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgIlx1MDAwMFx1ZmZmZCIKKyAgICAgICAgICAgICAgICApCiAKLSAgICAgICAgICAgIGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigidGVzdC5odWkiLCBoYW5kbGVyX3VuaWNvZGVpbnRlcm5hbCkKKyAgICAgICAgICAgICAgICBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoInRlc3QuaHVpIiwgaGFuZGxlcl91bmljb2RlaW50ZXJuYWwpCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlKCJ1bmljb2RlLWludGVybmFsIiwgInRlc3QuaHVpIiksCi0gICAgICAgICAgICAgICAgIlx1MDAwMFx1MDAwMVx1MDAwMCIKLSAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUoInVuaWNvZGUtaW50ZXJuYWwiLCAidGVzdC5odWkiKSwKKyAgICAgICAgICAgICAgICAgICAgIlx1MDAwMFx1MDAwMVx1MDAwMCIKKyAgICAgICAgICAgICAgICApCiAKICAgICBkZWYgdGVzdF9jYWxsYmFja3Moc2VsZik6CiAgICAgICAgIGRlZiBoYW5kbGVyMShleGMpOgpAQCAtMzU1LDcgKzM2NCw3IEBACiAgICAgICAgICAgICBbImFzY2lpIiwgIlx1ZmZmZngiLCAwLCAxLCAib3VjaCJdLAogICAgICAgICAgICAgIidhc2NpaScgY29kZWMgY2FuJ3QgZW5jb2RlIGNoYXJhY3RlciAnXFx1ZmZmZicgaW4gcG9zaXRpb24gMDogb3VjaCIKICAgICAgICAgKQotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA+IDB4ZmZmZjoKKyAgICAgICAgaWYgU0laRU9GX1dDSEFSX1QgPT0gNDoKICAgICAgICAgICAgIHNlbGYuY2hlY2tfZXhjZXB0aW9ub2JqZWN0YXJncygKICAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IsCiAgICAgICAgICAgICAgICAgWyJhc2NpaSIsICJcVTAwMDEwMDAweCIsIDAsIDEsICJvdWNoIl0sCkBAIC0zOTAsNyArMzk5LDcgQEAKICAgICAgICAgICAgIFsiZ1x1ZmZmZnJrIiwgMSwgMiwgIm91Y2giXSwKICAgICAgICAgICAgICJjYW4ndCB0cmFuc2xhdGUgY2hhcmFjdGVyICdcXHVmZmZmJyBpbiBwb3NpdGlvbiAxOiBvdWNoIgogICAgICAgICApCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgorICAgICAgICBpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0OgogICAgICAgICAgICAgc2VsZi5jaGVja19leGNlcHRpb25vYmplY3RhcmdzKAogICAgICAgICAgICAgICAgIFVuaWNvZGVUcmFuc2xhdGVFcnJvciwKICAgICAgICAgICAgICAgICBbImdcVTAwMDEwMDAwcmsiLCAxLCAyLCAib3VjaCJdLApAQCAtNTc3LDMxICs1ODYsMzAgQEAKICAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlx1ZmZmZiIsIDAsIDEsICJvdWNoIikpLAogICAgICAgICAgICAgKCJcXHVmZmZmIiwgMSkKICAgICAgICAgKQotICAgICAgICAjIDEgb24gVUNTLTQgYnVpbGRzLCAyIG9uIFVDUy0yCi0gICAgICAgIGxlbl93aWRlID0gbGVuKCJcVTAwMDEwMDAwIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKLSAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlxVMDAwMTAwMDAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBsZW5fd2lkZSwgIm91Y2giKSksCi0gICAgICAgICAgICAoIlxcVTAwMDEwMDAwIiwgbGVuX3dpZGUpCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKLSAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlxVMDAxMGZmZmYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBsZW5fd2lkZSwgIm91Y2giKSksCi0gICAgICAgICAgICAoIlxcVTAwMTBmZmZmIiwgbGVuX3dpZGUpCi0gICAgICAgICkKLSAgICAgICAgIyBMb25lIHN1cnJvZ2F0ZXMgKHJlZ2FyZGxlc3Mgb2YgdW5pY29kZSB3aWR0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKLSAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlx1ZDgwMCIsIDAsIDEsICJvdWNoIikpLAotICAgICAgICAgICAgKCJcXHVkODAwIiwgMSkKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAotICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCAiXHVkZmZmIiwgMCwgMSwgIm91Y2giKSksCi0gICAgICAgICAgICAoIlxcdWRmZmYiLCAxKQotICAgICAgICApCisgICAgICAgIGlmIFNJWkVPRl9XQ0hBUl9UID4gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAorICAgICAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlxVMDAwMTAwMDAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwgIm91Y2giKSksCisgICAgICAgICAgICAgICAgKCJcXFUwMDAxMDAwMCIsIDEpCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKKyAgICAgICAgICAgICAgICAgICAgVW5pY29kZUVuY29kZUVycm9yKCJhc2NpaSIsICJcVTAwMTBmZmZmIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEsICJvdWNoIikpLAorICAgICAgICAgICAgICAgICgiXFxVMDAxMGZmZmYiLCAxKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgIyBMb25lIHN1cnJvZ2F0ZXMgKHJlZ2FyZGxlc3Mgb2YgdW5pY29kZSB3aWR0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAorICAgICAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlx1ZDgwMCIsIDAsIDEsICJvdWNoIikpLAorICAgICAgICAgICAgICAgICgiXFx1ZDgwMCIsIDEpCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKKyAgICAgICAgICAgICAgICAgICAgVW5pY29kZUVuY29kZUVycm9yKCJhc2NpaSIsICJcdWRmZmYiLCAwLCAxLCAib3VjaCIpKSwKKyAgICAgICAgICAgICAgICAoIlxcdWRmZmYiLCAxKQorICAgICAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfYmFkaGFuZGxlcnJlc3VsdHMoc2VsZik6CiAgICAgICAgIHJlc3VsdHMgPSAoIDQyLCAiZm9vIiwgKDEsMiwzKSwgKCJmb28iLCAxLCAzKSwgKCJmb28iLCBOb25lKSwgKCJmb28iLCksICgiZm9vIiwgMSwgMyksICgiZm9vIiwgTm9uZSksICgiZm9vIiwpICkKQEAgLTYyMiwxMiArNjMwLDE0IEBACiAgICAgICAgICAgICAgICAgKCJ1dGYtNyIsIGIiK3gtIiksCiAgICAgICAgICAgICAgICAgKCJ1bmljb2RlLWludGVybmFsIiwgYiJceDAwIiksCiAgICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgICAgICAgICBUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgIGJ5dGVzLmRlY29kZSwKLSAgICAgICAgICAgICAgICAgICAgZW5jLAotICAgICAgICAgICAgICAgICAgICAidGVzdC5iYWRoYW5kbGVyIgotICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgorICAgICAgICAgICAgICAgICAgICAjIHVuaWNvZGUtaW50ZXJuYWwgaGFzIGJlZW4gZGVwcmVjYXRlZAorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzLmRlY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0LmJhZGhhbmRsZXIiCisgICAgICAgICAgICAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2xvb2t1cChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3Muc3RyaWN0X2Vycm9ycywgY29kZWNzLmxvb2t1cF9lcnJvcigic3RyaWN0IikpCkBAIC02NzksNyArNjg5LDcgQEAKICAgICAgICAgIyBQeXRob24vY29kZWNzLmM6OlB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnMoKQogICAgICAgICAjIGFuZCBpbmxpbmUgaW1wbGVtZW50YXRpb25zCiAgICAgICAgIHYgPSAoMSwgNSwgMTAsIDUwLCAxMDAsIDUwMCwgMTAwMCwgNTAwMCwgMTAwMDAsIDUwMDAwKQotICAgICAgICBpZiBzeXMubWF4dW5pY29kZT49MTAwMDAwOgorICAgICAgICBpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0OgogICAgICAgICAgICAgdiArPSAoMTAwMDAwLCA1MDAwMDAsIDEwMDAwMDApCiAgICAgICAgIHMgPSAiIi5qb2luKFtjaHIoeCkgZm9yIHggaW4gdl0pCiAgICAgICAgIGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigidGVzdC54bWxjaGFycmVmcmVwbGFjZSIsIGNvZGVjcy54bWxjaGFycmVmcmVwbGFjZV9lcnJvcnMpCkBAIC03NDQsNyArNzU0LDcgQEAKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFcnJvciwgY29kZWNzLmNoYXJtYXBfZGVjb2RlLCBiIlx4ZmYiLCAic3RyaWN0IiwgezB4ZmY6IE5vbmV9KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb2RlY3MuY2hhcm1hcF9kZWNvZGUsIGIiXHhmZiIsICJzdHJpY3QiLCBEKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29kZWNzLmNoYXJtYXBfZGVjb2RlLCBiIlx4ZmYiLCAic3RyaWN0IiwgezB4ZmY6IDB4MTEwMDAwfSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb2RlY3MuY2hhcm1hcF9kZWNvZGUsIGIiXHhmZiIsICJzdHJpY3QiLCB7MHhmZjogc3lzLm1heHVuaWNvZGUrMX0pCiAKICAgICBkZWYgdGVzdF9lbmNvZGVoZWxwZXIoc2VsZik6CiAgICAgICAgICMgZW5oYW5jZSBjb3ZlcmFnZSBvZjoKQEAgLTg0Myw4ICs4NTMsMTIgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkb24ndCBrbm93IGhvdyB0byBoYW5kbGUgJXIiICUgZXhjKQogICAgICAgICBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoInRlc3QucmVwbGFjaW5nIiwgcmVwbGFjaW5nKQotICAgICAgICBmb3IgKGVuY29kaW5nLCBkYXRhKSBpbiBiYWRkYXRhOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkYXRhLmRlY29kZSwgZW5jb2RpbmcsICJ0ZXN0LnJlcGxhY2luZyIpCisKKyAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKKyAgICAgICAgICAgICMgdW5pY29kZS1pbnRlcm5hbCBoYXMgYmVlbiBkZXByZWNhdGVkCisgICAgICAgICAgICBmb3IgKGVuY29kaW5nLCBkYXRhKSBpbiBiYWRkYXRhOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5kZWNvZGUoZW5jb2RpbmcsICJ0ZXN0LnJlcGxhY2luZyIpCiAKICAgICAgICAgZGVmIG11dGF0aW5nKGV4Yyk6CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV4YywgVW5pY29kZURlY29kZUVycm9yKToKQEAgLTg1NSw4ICs4NjksMTEgQEAKICAgICAgICAgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCJ0ZXN0Lm11dGF0aW5nIiwgbXV0YXRpbmcpCiAgICAgICAgICMgSWYgdGhlIGRlY29kZXIgZG9lc24ndCBwaWNrIHVwIHRoZSBtb2RpZmllZCBpbnB1dCB0aGUgZm9sbG93aW5nCiAgICAgICAgICMgd2lsbCBsZWFkIHRvIGFuIGVuZGxlc3MgbG9vcAotICAgICAgICBmb3IgKGVuY29kaW5nLCBkYXRhKSBpbiBiYWRkYXRhOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkYXRhLmRlY29kZSwgZW5jb2RpbmcsICJ0ZXN0LnJlcGxhY2luZyIpCisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAjIHVuaWNvZGUtaW50ZXJuYWwgaGFzIGJlZW4gZGVwcmVjYXRlZAorICAgICAgICAgICAgZm9yIChlbmNvZGluZywgZGF0YSkgaW4gYmFkZGF0YToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGRhdGEuZGVjb2RlKGVuY29kaW5nLCAidGVzdC5yZXBsYWNpbmciKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChDb2RlY0NhbGxiYWNrVGVzdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5CmluZGV4IGRjYTlmMTAuLmIwOGM1ZmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weQpAQCAtNSw1NCArNSw1NyBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0X0dCMjMxMih0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfR0IyMzEyKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdnYjIzMTInCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2diMjMxMicpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdnYjIzMTInKQogICAgIGNvZGVjdGVzdHMgPSAoCiAgICAgICAgICMgaW52YWxpZCBieXRlcwogICAgICAgICAoYiJhYmNceDgxXHg4MVx4YzFceGM0IiwgInN0cmljdCIsICBOb25lKSwKICAgICAgICAgKGIiYWJjXHhjOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ODFceDgxXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTgwNGEiKSwKLSAgICAgICAgKGIiYWJjXHg4MVx4ODFceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTgwNGFcdWZmZmQiKSwKKyAgICAgICAgKGIiYWJjXHg4MVx4ODFceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1ODA0YSIpLAorICAgICAgICAoYiJhYmNceDgxXHg4MVx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1ODA0YVx1ZmZmZCIpLAogICAgICAgICAoYiJhYmNceDgxXHg4MVx4YzFceGM0IiwgImlnbm9yZSIsICAiYWJjXHU4MDRhIiksCiAgICAgICAgIChiIlx4YzFceDY0IiwgInN0cmljdCIsIE5vbmUpLAogICAgICkKIAotY2xhc3MgVGVzdF9HQksodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0dCSyhtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2JrJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdnYmsnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZ2JrJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4MDRhIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4MDRhXHVmZmZkIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTgwNGEiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTgwNGFcdWZmZmQiKSwKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1ODA0YSIpLAogICAgICAgICAoYiJceDgzXHgzNFx4ODNceDMxIiwgInN0cmljdCIsIE5vbmUpLAogICAgICAgICAoIlx1MzBmYiIsICJzdHJpY3QiLCBOb25lKSwKICAgICApCiAKLWNsYXNzIFRlc3RfR0IxODAzMCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfR0IxODAzMChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2IxODAzMCcKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZ2IxODAzMCcpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdnYjE4MDMwJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4MDRhIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4MDRhXHVmZmZkIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTgwNGEiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTgwNGFcdWZmZmQiKSwKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1ODA0YSIpLAotICAgICAgICAoYiJhYmNceDg0XHgzOVx4ODRceDM5XHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTgwNGEiKSwKKyAgICAgICAgKGIiYWJjXHg4NFx4MzlceDg0XHgzOVx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkOVx1ZmZmZDlcdTgwNGEiKSwKICAgICAgICAgKCJcdTMwZmIiLCAic3RyaWN0IiwgYiJceDgxOVx4YTc5IiksCisgICAgICAgIChiImFiY1x4ODRceDMyXHg4MFx4ODBkZWYiLCAicmVwbGFjZSIsICdhYmNcdWZmZmQyXHVmZmZkXHVmZmZkZGVmJyksCisgICAgICAgIChiImFiY1x4ODFceDMwXHg4MVx4MzBkZWYiLCAic3RyaWN0IiwgJ2FiY1x4ODBkZWYnKSwKKyAgICAgICAgKGIiYWJjXHg4Nlx4MzBceDgxXHgzMGRlZiIsICJyZXBsYWNlIiwgJ2FiY1x1ZmZmZDBcdWZmZmQwZGVmJyksCiAgICAgKQogICAgIGhhc19pc28xMDY0NiA9IFRydWUKIAotY2xhc3MgVGVzdF9IWih0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfSFoobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2h6JwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdoeicpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdoeicpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyB0ZXN0ICd+XG4nICgzIGxpbmVzKQogICAgICAgICAoYidUaGlzIHNlbnRlbmNlIGlzIGluIEFTQ0lJLlxuJwpAQCAtNzQsOSArNzcsMTEgQEAKICAgICAgICAgICdcdTVkZjFcdTYyNDBcdTRlMGRcdTZiMzJcdWZmMGNcdTUyZmZcdTY1YmRcdTY1YmNcdTRlYmFcdTMwMDInCiAgICAgICAgICAnQnllLlxuJyksCiAgICAgICAgICMgaW52YWxpZCBieXRlcwotICAgICAgICAoYidhYn5jZCcsICdyZXBsYWNlJywgJ2FiXHVGRkZEZCcpLAorICAgICAgICAoYidhYn5jZCcsICdyZXBsYWNlJywgJ2FiXHVGRkZEY2QnKSwKICAgICAgICAgKGInYWJceGZmY2QnLCAncmVwbGFjZScsICdhYlx1RkZGRGNkJyksCiAgICAgICAgIChiJ2FifntceDgxXHg4MVx4NDFceDQ0fn1jZCcsICdyZXBsYWNlJywgJ2FiXHVGRkZEXHVGRkZEXHU4MDRBY2QnKSwKKyAgICAgICAgKGInYWJ+e1x4NDFceDQ0fn1jZCcsICdyZXBsYWNlJywgJ2FiXHU4MDRBY2QnKSwKKyAgICAgICAgKGIiYWJ+e1x4NzlceDc5XHg0MVx4NDR+fWNkIiwgInJlcGxhY2UiLCAiYWJcdWZmZmRcdWZmZmRcdTgwNGFjZCIpLAogICAgICkKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkKaW5kZXggY2NkYzBiNC4uMzEzNjNmNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5CkBAIC01LDE4ICs1LDE4IEBACiAjCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQKK2Zyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKLWNsYXNzIFRlc3RfQmlnNUhLU0NTKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9CaWc1SEtTQ1MobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2JpZzVoa3NjcycKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnYmlnNWhrc2NzJykKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2JpZzVoa3NjcycpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAogICAgICAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1OGIxMCIpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1OGIxMFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4YjEwIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4YjEwXHVmZmZkIiksCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdThiMTAiKSwKICAgICApCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weQppbmRleCA4YzZlOGE1Li5lNGMxODM5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5CkBAIC0zLDcgKzMsNyBAQAogIyBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgSVNPIDIwMjIgZW5jb2RpbmdzLgogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCiBDT01NT05fQ09ERUNfVEVTVFMgPSAoCkBAIC0xMywyMyArMTMsMjMgQEAKICAgICAgICAgKGInYWJceDFCJGRlZicsICdyZXBsYWNlJywgJ2FiXHVGRkZEJyksCiAgICAgKQogCi1jbGFzcyBUZXN0X0lTTzIwMjJfSlAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0lTTzIwMjJfSlAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2lzbzIwMjJfanAnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2lzbzIwMjJfanAnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaXNvMjAyMl9qcCcpCiAgICAgY29kZWN0ZXN0cyA9IENPTU1PTl9DT0RFQ19URVNUUyArICgKICAgICAgICAgKGInYWJceDFCTmRlZicsICdyZXBsYWNlJywgJ2FiXHgxQk5kZWYnKSwKICAgICApCiAKLWNsYXNzIFRlc3RfSVNPMjAyMl9KUDIodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0lTTzIwMjJfSlAyKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdpc28yMDIyX2pwXzInCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2lzbzIwMjJfanAnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaXNvMjAyMl9qcCcpCiAgICAgY29kZWN0ZXN0cyA9IENPTU1PTl9DT0RFQ19URVNUUyArICgKICAgICAgICAgKGInYWJceDFCTmRlZicsICdyZXBsYWNlJywgJ2FiZGVmJyksCiAgICAgKQogCi1jbGFzcyBUZXN0X0lTTzIwMjJfS1IodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0lTTzIwMjJfS1IobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2lzbzIwMjJfa3InCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2lzbzIwMjJfa3InKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaXNvMjAyMl9rcicpCiAgICAgY29kZWN0ZXN0cyA9IENPTU1PTl9DT0RFQ19URVNUUyArICgKICAgICAgICAgKGInYWJceDFCTmRlZicsICdyZXBsYWNlJywgJ2FiXHgxQk5kZWYnKSwKICAgICApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weQppbmRleCBmNTZhMzczLi4zMGM5ZTE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkKQEAgLTUsNjAgKzUsNjcgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdF9DUDkzMih0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfQ1A5MzIobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2NwOTMyJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdzaGlmdF9qaXMnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnc2hpZnRfamlzJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgxXHgwMFx4ODJceDg0IiwgInN0cmljdCIsICBOb25lKSwKICAgICAgICAgKGIiYWJjXHhmOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ODFceDAwXHg4Mlx4ODQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmNDQiKSwKLSAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgyXHg4NFx4ODgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmNDRcdWZmZmQiKSwKLSAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgyXHg4NCIsICJpZ25vcmUiLCAgImFiY1x1ZmY0NCIpLAorICAgICAgICAoYiJhYmNceDgxXHgwMFx4ODJceDg0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHgwMFx1ZmY0NCIpLAorICAgICAgICAoYiJhYmNceDgxXHgwMFx4ODJceDg0XHg4OCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx4MDBcdWZmNDRcdWZmZmQiKSwKKyAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgyXHg4NCIsICJpZ25vcmUiLCAgImFiY1x4MDBcdWZmNDQiKSwKKyAgICAgICAgKGIiYWJceEVCeHkiLCAicmVwbGFjZSIsICJhYlx1RkZGRHh5IiksCisgICAgICAgIChiImFiXHhGMFx4Mzl4eSIsICJyZXBsYWNlIiwgImFiXHVGRkZEOXh5IiksCisgICAgICAgIChiImFiXHhFQVx4RjB4eSIsICJyZXBsYWNlIiwgJ2FiXHVmZmZkXHVlMDM4eScpLAogICAgICAgICAjIHNqaXMgdnMgY3A5MzIKICAgICAgICAgKGIiXFxceDdlIiwgInJlcGxhY2UiLCAiXFxceDdlIiksCiAgICAgICAgIChiIlx4ODFceDVmXHg4MVx4NjFceDgxXHg3YyIsICJyZXBsYWNlIiwgIlx1ZmYzY1x1MjIyNVx1ZmYwZCIpLAogICAgICkKIAotY2xhc3MgVGVzdF9FVUNfSklTWDAyMTModGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLAorZXVjX2NvbW1vbnRlc3RzID0gKAorICAgICMgaW52YWxpZCBieXRlcworICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAorICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTc5NTYiKSwKKyAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1Nzk1Nlx1ZmZmZCIpLAorICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdTc5NTYiKSwKKyAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKKyAgICAoYiJhYmNceDhmXHg4M1x4ODMiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmZmQiKSwKKyAgICAoYiJceDgyXHhGQ3h5IiwgInJlcGxhY2UiLCAiXHVmZmZkXHVmZmZkeHkiKSwKKyAgICAoYiJceGMxXHg2NCIsICJzdHJpY3QiLCBOb25lKSwKKyAgICAoYiJceGExXHhjMCIsICJzdHJpY3QiLCAiXHVmZjNjIiksCisgICAgKGIiXHhhMVx4YzBcXCIsICJzdHJpY3QiLCAiXHVmZjNjXFwiKSwKKyAgICAoYiJceDhlWFkiLCAicmVwbGFjZSIsICJcdWZmZmRYWSIpLAorKQorCitjbGFzcyBUZXN0X0VVQ19KSVNfMjAwNChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGVuY29kaW5nID0gJ2V1Y19qaXN4MDIxMycKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZXVjX2ppc3gwMjEzJykKLSAgICBjb2RlY3Rlc3RzID0gKAotICAgICAgICAjIGludmFsaWQgYnl0ZXMKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU3OTU2IiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU3OTU2XHVmZmZkIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdTc5NTYiKSwKLSAgICAgICAgKGIiYWJjXHg4Zlx4ODNceDgzIiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkIiksCi0gICAgICAgIChiIlx4YzFceDY0IiwgInN0cmljdCIsIE5vbmUpLAotICAgICAgICAoYiJceGExXHhjMCIsICJzdHJpY3QiLCAiXHVmZjNjIiksCi0gICAgKQorICAgIGVuY29kaW5nID0gJ2V1Y19qaXNfMjAwNCcKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2V1Y19qaXN4MDIxMycpCisgICAgY29kZWN0ZXN0cyA9IGV1Y19jb21tb250ZXN0cwogICAgIHhtbGNoYXJuYW1ldGVzdCA9ICgKICAgICAgICAgIlx4YWJcdTIxMWNceGJiID0gXHUyMzI5XHUxMjM0XHUyMzJhIiwKICAgICAgICAgYiJceGE5XHhhOCZyZWFsO1x4YTlceGIyID0gJmxhbmc7JiM0NjYwOyZyYW5nOyIKICAgICApCiAKLWV1Y2pwX2NvbW1vbnRlc3RzID0gKAotICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTc5NTYiKSwKLSAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1Nzk1Nlx1ZmZmZCIpLAotICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdTc5NTYiKSwKLSAgICAoYiJhYmNceDhmXHg4M1x4ODMiLCAicmVwbGFjZSIsICJhYmNcdWZmZmQiKSwKLSAgICAoYiJceGMxXHg2NCIsICJzdHJpY3QiLCBOb25lKSwKLSkKK2NsYXNzIFRlc3RfRVVDX0pJU1gwMjEzKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZW5jb2RpbmcgPSAnZXVjX2ppc3gwMjEzJworICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZXVjX2ppc3gwMjEzJykKKyAgICBjb2RlY3Rlc3RzID0gZXVjX2NvbW1vbnRlc3RzCisgICAgeG1sY2hhcm5hbWV0ZXN0ID0gKAorICAgICAgICAiXHhhYlx1MjExY1x4YmIgPSBcdTIzMjlcdTEyMzRcdTIzMmEiLAorICAgICAgICBiIlx4YTlceGE4JnJlYWw7XHhhOVx4YjIgPSAmbGFuZzsmIzQ2NjA7JnJhbmc7IgorICAgICkKIAotY2xhc3MgVGVzdF9FVUNfSlBfQ09NUEFUKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwKK2NsYXNzIFRlc3RfRVVDX0pQX0NPTVBBVChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdldWNfanAnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2V1Y19qcCcpCi0gICAgY29kZWN0ZXN0cyA9IGV1Y2pwX2NvbW1vbnRlc3RzICsgKAotICAgICAgICAoYiJceGExXHhjMFxcIiwgInN0cmljdCIsICJcdWZmM2NcXCIpLAorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZXVjX2pwJykKKyAgICBjb2RlY3Rlc3RzID0gZXVjX2NvbW1vbnRlc3RzICsgKAogICAgICAgICAoIlx4YTUiLCAic3RyaWN0IiwgYiJceDVjIiksCiAgICAgICAgICgiXHUyMDNlIiwgInN0cmljdCIsIGIiXHg3ZSIpLAogICAgICkKQEAgLTY2LDI5ICs3Myw0OCBAQAogc2hpZnRqaXNfY29tbW9uZW5jdGVzdHMgPSAoCiAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgKGIiYWJjXHhmOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmY0NCIpLAotICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODRceDg4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZjQ0XHVmZmZkIiksCiAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NGRlZiIsICJpZ25vcmUiLCAgImFiY1x1ZmY0NGRlZiIpLAogKQogCi1jbGFzcyBUZXN0X1NKSVNfQ09NUEFUKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9TSklTX0NPTVBBVChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdzaGlmdF9qaXMnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnc2hpZnRfamlzJykKICAgICBjb2RlY3Rlc3RzID0gc2hpZnRqaXNfY29tbW9uZW5jdGVzdHMgKyAoCisgICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmNDQiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NFx4ODgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmNDRcdWZmZmQiKSwKKwogICAgICAgICAoYiJcXFx4N2UiLCAic3RyaWN0IiwgIlxcXHg3ZSIpLAogICAgICAgICAoYiJceDgxXHg1Zlx4ODFceDYxXHg4MVx4N2MiLCAic3RyaWN0IiwgIlx1ZmYzY1x1MjAxNlx1MjIxMiIpLAorICAgICAgICAoYiJhYmNceDgxXHgzOSIsICJyZXBsYWNlIiwgICJhYmNcdWZmZmQ5IiksCisgICAgICAgIChiImFiY1x4RUFceEZDIiwgInJlcGxhY2UiLCAgImFiY1x1ZmZmZFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceEZGXHg1OCIsICJyZXBsYWNlIiwgICJhYmNcdWZmZmRYIiksCiAgICAgKQogCi1jbGFzcyBUZXN0X1NKSVNYMDIxMyh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfU0pJU18yMDA0KG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBlbmNvZGluZyA9ICdzaGlmdF9qaXNfMjAwNCcKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ3NoaWZ0X2ppcycpCisgICAgY29kZWN0ZXN0cyA9IHNoaWZ0amlzX2NvbW1vbmVuY3Rlc3RzICsgKAorICAgICAgICAoYiJcXFx4N2UiLCAic3RyaWN0IiwgIlx4YTVcdTIwM2UiKSwKKyAgICAgICAgKGIiXHg4MVx4NWZceDgxXHg2MVx4ODFceDdjIiwgInN0cmljdCIsICJcXFx1MjAxNlx1MjIxMiIpLAorICAgICAgICAoYiJhYmNceEVBXHhGQyIsICJzdHJpY3QiLCAgImFiY1x1NjRiZiIpLAorICAgICAgICAoYiJceDgxXHgzOXh5IiwgInJlcGxhY2UiLCAgIlx1ZmZmZDl4eSIpLAorICAgICAgICAoYiJceEZGXHg1OHh5IiwgInJlcGxhY2UiLCAgIlx1ZmZmZFh4eSIpLAorICAgICAgICAoYiJceDgwXHg4MFx4ODJceDg0eHkiLCAicmVwbGFjZSIsICJcdWZmZmRcdWZmZmRcdWZmNDR4eSIpLAorICAgICAgICAoYiJceDgwXHg4MFx4ODJceDg0XHg4OHh5IiwgInJlcGxhY2UiLCAiXHVmZmZkXHVmZmZkXHVmZjQ0XHU1ODY0eSIpLAorICAgICAgICAoYiJceEZDXHhGQnh5IiwgInJlcGxhY2UiLCAnXHVmZmZkXHU5NWI0eScpLAorICAgICkKKyAgICB4bWxjaGFybmFtZXRlc3QgPSAoCisgICAgICAgICJceGFiXHUyMTFjXHhiYiA9IFx1MjMyOVx1MTIzNFx1MjMyYSIsCisgICAgICAgIGIiXHg4NUcmcmVhbDtceDg1USA9ICZsYW5nOyYjNDY2MDsmcmFuZzsiCisgICAgKQorCitjbGFzcyBUZXN0X1NKSVNYMDIxMyhtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzeDAyMTMnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ3NoaWZ0X2ppc3gwMjEzJykKLSAgICBjb2RlY3Rlc3RzID0gKAotICAgICAgICAjIGludmFsaWQgYnl0ZXMKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ZjgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4ODJceDg0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZjQ0IiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODRceDg4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZjQ0XHVmZmZkIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODRkZWYiLCAiaWdub3JlIiwgICJhYmNcdWZmNDRkZWYiKSwKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ3NoaWZ0X2ppc3gwMjEzJykKKyAgICBjb2RlY3Rlc3RzID0gc2hpZnRqaXNfY29tbW9uZW5jdGVzdHMgKyAoCisgICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmNDQiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NFx4ODgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmNDRcdWZmZmQiKSwKKwogICAgICAgICAjIHNqaXMgdnMgY3A5MzIKICAgICAgICAgKGIiXFxceDdlIiwgInJlcGxhY2UiLCAiXHhhNVx1MjAzZSIpLAogICAgICAgICAoYiJceDgxXHg1Zlx4ODFceDYxXHg4MVx4N2MiLCAicmVwbGFjZSIsICJceDVjXHUyMDE2XHUyMjEyIiksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weQppbmRleCBkZTRkYTdmLi40ZGQ2MDQ5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkKQEAgLTUsMzAgKzUsMzAgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdF9DUDk0OSh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfQ1A5NDkobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2NwOTQ5JwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdjcDk0OScpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdjcDk0OScpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAogICAgICAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1Yzg5NCIpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1Yzg5NFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHVjODk0IiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHVjODk0XHVmZmZkIiksCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdWM4OTQiKSwKICAgICApCiAKLWNsYXNzIFRlc3RfRVVDS1IodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0VVQ0tSKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdldWNfa3InCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2V1Y19rcicpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdldWNfa3InKQogICAgIGNvZGVjdGVzdHMgPSAoCiAgICAgICAgICMgaW52YWxpZCBieXRlcwogICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInN0cmljdCIsICBOb25lKSwKICAgICAgICAgKGIiYWJjXHhjOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWM4OTQiKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWM4OTRcdWZmZmQiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgJ2FiY1x1ZmZmZFx1ZmZmZFx1Yzg5NCcpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1Yzg5NFx1ZmZmZCIpLAogICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgImlnbm9yZSIsICAiYWJjXHVjODk0IiksCiAKICAgICAgICAgIyBjb21wb3NlZCBtYWtlLXVwIHNlcXVlbmNlIGVycm9ycwpAQCAtNDAsMjYgKzQwLDMxIEBACiAgICAgICAgIChiIlx4YTRceGQ0XHhhNFx4YjZceGE0XHhkMFx4YTQiLCAic3RyaWN0IiwgTm9uZSksCiAgICAgICAgIChiIlx4YTRceGQ0XHhhNFx4YjZceGE0XHhkMFx4YTRceGQ0IiwgInN0cmljdCIsICJcdWM0ZDQiKSwKICAgICAgICAgKGIiXHhhNFx4ZDRceGE0XHhiNlx4YTRceGQwXHhhNFx4ZDR4IiwgInN0cmljdCIsICJcdWM0ZDR4IiksCi0gICAgICAgIChiImFceGE0XHhkNFx4YTRceGI2XHhhNCIsICJyZXBsYWNlIiwgImFcdWZmZmQiKSwKKyAgICAgICAgKGIiYVx4YTRceGQ0XHhhNFx4YjZceGE0IiwgInJlcGxhY2UiLCAnYVx1ZmZmZCcpLAogICAgICAgICAoYiJceGE0XHhkNFx4YTNceGI2XHhhNFx4ZDBceGE0XHhkNCIsICJzdHJpY3QiLCBOb25lKSwKICAgICAgICAgKGIiXHhhNFx4ZDRceGE0XHhiNlx4YTNceGQwXHhhNFx4ZDQiLCAic3RyaWN0IiwgTm9uZSksCiAgICAgICAgIChiIlx4YTRceGQ0XHhhNFx4YjZceGE0XHhkMFx4YTNceGQ0IiwgInN0cmljdCIsIE5vbmUpLAotICAgICAgICAoYiJceGE0XHhkNFx4YTRceGZmXHhhNFx4ZDBceGE0XHhkNCIsICJyZXBsYWNlIiwgIlx1ZmZmZCIpLAotICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZmZceGE0XHhkNCIsICJyZXBsYWNlIiwgIlx1ZmZmZCIpLAotICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZDBceGE0XHhmZiIsICJyZXBsYWNlIiwgIlx1ZmZmZCIpLAorICAgICAgICAoYiJceGE0XHhkNFx4YTRceGZmXHhhNFx4ZDBceGE0XHhkNCIsICJyZXBsYWNlIiwgJ1x1ZmZmZFx1NmUyMVx1ZmZmZFx1MzE2MFx1ZmZmZCcpLAorICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZmZceGE0XHhkNCIsICJyZXBsYWNlIiwgJ1x1ZmZmZFx1NmUyMVx1YjU0NFx1ZmZmZFx1ZmZmZCcpLAorICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZDBceGE0XHhmZiIsICJyZXBsYWNlIiwgJ1x1ZmZmZFx1NmUyMVx1YjU0NFx1NTcyZFx1ZmZmZCcpLAorICAgICAgICAoYiJceGE0XHhkNFx4ZmZceGE0XHhkNFx4YTRceGI2XHhhNFx4ZDBceGE0XHhkNCIsICJyZXBsYWNlIiwgJ1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzRkNCcpLAogICAgICAgICAoYiJceGMxXHhjNCIsICJzdHJpY3QiLCAiXHVjODk0IiksCiAgICAgKQogCi1jbGFzcyBUZXN0X0pPSEFCKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9KT0hBQihtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnam9oYWInCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2pvaGFiJykKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2pvaGFiJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVjZDI3IiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVjZDI3XHVmZmZkIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWNkMjciKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWNkMjdcdWZmZmQiKSwKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1Y2QyNyIpLAorICAgICAgICAoYiJceEQ4YWJjIiwgInJlcGxhY2UiLCAgIlx1RkZGRGFiYyIpLAorICAgICAgICAoYiJceEQ4XHhGRmFiYyIsICJyZXBsYWNlIiwgICJcdUZGRkRcdUZGRkRhYmMiKSwKKyAgICAgICAgKGIiXHg4NGJ4eSIsICJyZXBsYWNlIiwgICJcdUZGRkRieHkiKSwKKyAgICAgICAgKGIiXHg4Q0J4eSIsICJyZXBsYWNlIiwgICJcdUZGRkRCeHkiKSwKICAgICApCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5CmluZGV4IDEyZDNjOWYuLjk2MjQ1YjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weQpAQCAtNSwxOCArNSwxOCBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0X0JpZzUodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0JpZzUobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2JpZzUnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2JpZzUnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnYmlnNScpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAogICAgICAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1OGIxMCIpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1OGIxMFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4YjEwIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4YjEwXHVmZmZkIiksCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdThiMTAiKSwKICAgICApCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2NuLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKaW5kZXggMDYzOTE5ZC4uMWE3NjFjZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKQEAgLTUsMjEgKzUsMjEgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdEdCMjMxMk1hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RHQjIzMTJNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdnYjIzMTInCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0VVQy1DTi5UWFQnCiAKLWNsYXNzIFRlc3RHQktNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0R0JLTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2JrJwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvTUFQUElOR1MvVkVORE9SUy8nIFwKICAgICAgICAgICAgICAgICAgJ01JQ1NGVC9XSU5ET1dTL0NQOTM2LlRYVCcKIAotY2xhc3MgVGVzdEdCMTgwMzBNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0R0IxODAzME1hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2IxODAzMCcKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly9zb3VyY2UuaWN1LXByb2plY3Qub3JnL3JlcG9zL2ljdS9kYXRhLycgXApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfaGsucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQppbmRleCBiYmUxZjJmLi41ZjRlN2M3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQpAQCAtNSwxMCArNSwxMCBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0QmlnNUhLU0NTTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEJpZzVIS1NDU01hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdiaWc1aGtzY3MnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0JJRzVIS1NDUy0yMDA0LlRYVCcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2pwLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKaW5kZXggNjUyYmQ4MS4uMWZkYmY2MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKQEAgLTUsMTAgKzUsMTAgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdENQOTMyTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdENQOTMyTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnY3A5MzInCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9NQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC8nIFwKQEAgLTI0LDE0ICsyNCwxNCBAQAogICAgICAgICBzdXBtYXBzLmFwcGVuZCgoYnl0ZXMoW2ldKSwgY2hyKGkrMHhmZWMwKSkpCiAKIAotY2xhc3MgVGVzdEVVQ0pQQ09NUEFUTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEVVQ0pQQ09NUEFUTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZXVjX2pwJwogICAgIG1hcGZpbGVuYW1lID0gJ0VVQy1KUC5UWFQnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0VVQy1KUC5UWFQnCiAKIAotY2xhc3MgVGVzdFNKSVNDT01QQVRNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0U0pJU0NPTVBBVE1hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzJwogICAgIG1hcGZpbGVuYW1lID0gJ1NISUZUSklTLlRYVCcKQEAgLTQ2LDE0ICs0NiwxNCBAQAogICAgICAgICAoYidceDgxXycsICdcXCcpLAogICAgIF0KIAotY2xhc3MgVGVzdEVVQ0pJU1gwMjEzTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEVVQ0pJU1gwMjEzTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZXVjX2ppc3gwMjEzJwogICAgIG1hcGZpbGVuYW1lID0gJ0VVQy1KSVNYMDIxMy5UWFQnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0VVQy1KSVNYMDIxMy5UWFQnCiAKIAotY2xhc3MgVGVzdFNKSVNYMDIxM01hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RTSklTWDAyMTNNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzeDAyMTMnCiAgICAgbWFwZmlsZW5hbWUgPSAnU0hJRlRfSklTWDAyMTMuVFhUJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfa3IucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQppbmRleCBkOTA5YzhiLi4wMzU2NDAyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQpAQCAtNSwxNyArNSwxNyBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0Q1A5NDlNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0Q1A5NDlNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdjcDk0OScKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL1ZFTkRPUlMvTUlDU0ZUJyBcCiAgICAgICAgICAgICAgICAgICcvV0lORE9XUy9DUDk0OS5UWFQnCiAKIAotY2xhc3MgVGVzdEVVQ0tSTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEVVQ0tSTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZXVjX2tyJwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3Blb3BsZS5mcmVlYnNkLm9yZy9+cGVya3kvaTE4bi9FVUMtS1IuVFhUJwpAQCAtMjUsNyArMjUsNyBAQAogICAgIHBhc3NfZGVjdGVzdCA9IFsoYidceGE0XHhkNCcsICdcdTMxNjQnKV0KIAogCi1jbGFzcyBUZXN0Sk9IQUJNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0Sk9IQUJNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdqb2hhYicKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL09CU09MRVRFL0VBU1RBU0lBLycgXApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfdHcucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQppbmRleCA2ZGI1MDkxLi40NDQ2N2UzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQpAQCAtNSwxNiArNSwxNiBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0QklHNU1hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RCSUc1TWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdiaWc1JwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvTUFQUElOR1MvT0JTT0xFVEUvJyBcCiAgICAgICAgICAgICAgICAgICdFQVNUQVNJQS9PVEhFUi9CSUc1LlRYVCcKIAotY2xhc3MgVGVzdENQOTUwTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdENQOTUwTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnY3A5NTAnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9NQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC8nIFwKQEAgLTIzLDYgKzIzLDkgQEAKICAgICAgICAgKGInXHhhMlx4Y2MnLCAnXHU1MzQxJyksCiAgICAgICAgIChiJ1x4YTJceGNlJywgJ1x1NTM0NScpLAogICAgIF0KKyAgICBjb2RlY3Rlc3RzID0gKAorICAgICAgICAoYiJceEZGeHkiLCAicmVwbGFjZSIsICAiXHVmZmZkeHkiKSwKKyAgICApCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKaW5kZXggNDM4ODZmYy4uYzY4MDg4ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKQEAgLTEsOCArMSwyNSBAQAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1pbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBfdGVzdGNhcGkKIGltcG9ydCBjb2RlY3MKK2ltcG9ydCBpbwogaW1wb3J0IGxvY2FsZQotaW1wb3J0IHN5cywgX3Rlc3RjYXBpLCBpbworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK2lmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgIFZJU1RBX09SX0xBVEVSID0gKHN5cy5nZXR3aW5kb3dzdmVyc2lvbigpLm1ham9yID49IDYpCitlbHNlOgorICAgIFZJU1RBX09SX0xBVEVSID0gRmFsc2UKKwordHJ5OgorICAgIGltcG9ydCBjdHlwZXMKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBjdHlwZXMgPSBOb25lCisgICAgU0laRU9GX1dDSEFSX1QgPSAtMQorZWxzZToKKyAgICBTSVpFT0ZfV0NIQVJfVCA9IGN0eXBlcy5zaXplb2YoY3R5cGVzLmNfd2NoYXIpCiAKIGRlZiBjb2RpbmdfY2hlY2tlcihzZWxmLCBjb2Rlcik6CiAgICAgZGVmIGNoZWNrKGlucHV0LCBleHBlY3QpOgpAQCAtNjIsNyArNzksNyBAQAogICAgICAgICAgICAgcGFydDIgPSBkLmVuY29kZSh1W2k6XSwgVHJ1ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgcGFydDErcGFydDIpCiAKLWNsYXNzIFJlYWRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBNaXhJbkNoZWNrU3RhdGVIYW5kbGluZyk6CitjbGFzcyBSZWFkVGVzdChNaXhJbkNoZWNrU3RhdGVIYW5kbGluZyk6CiAgICAgZGVmIGNoZWNrX3BhcnRpYWwoc2VsZiwgaW5wdXQsIHBhcnRpYWxyZXN1bHRzKToKICAgICAgICAgIyBnZXQgYSBTdHJlYW1SZWFkZXIgZm9yIHRoZSBlbmNvZGluZyBhbmQgZmVlZCB0aGUgYnl0ZXN0cmluZyB2ZXJzaW9uCiAgICAgICAgICMgb2YgaW5wdXQgdG8gdGhlIHJlYWRlciBieXRlIGJ5IGJ5dGUuIFJlYWQgZXZlcnl0aGluZyBhdmFpbGFibGUgZnJvbQpAQCAtMjgyLDcgKzI5OSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZGVyLnJlYWRsaW5lKCksIHM1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRlci5yZWFkbGluZSgpLCAiIikKIAotY2xhc3MgVVRGMzJUZXN0KFJlYWRUZXN0KToKK2NsYXNzIFVURjMyVGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi0zMiIKIAogICAgIHNwYW1sZSA9IChiJ1x4ZmZceGZlXHgwMFx4MDAnCkBAIC0zNzMsNyArMzkwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAxMDAwMCcgKiAxMDI0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy51dGZfMzJfZGVjb2RlKGVuY29kZWRfYmUpWzBdKQogCi1jbGFzcyBVVEYzMkxFVGVzdChSZWFkVGVzdCk6CitjbGFzcyBVVEYzMkxFVGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi0zMi1sZSIKIAogICAgIGRlZiB0ZXN0X3BhcnRpYWwoc2VsZik6CkBAIC00MTcsNyArNDM0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAxMDAwMCcgKiAxMDI0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy51dGZfMzJfbGVfZGVjb2RlKGVuY29kZWQpWzBdKQogCi1jbGFzcyBVVEYzMkJFVGVzdChSZWFkVGVzdCk6CitjbGFzcyBVVEYzMkJFVGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi0zMi1iZSIKIAogICAgIGRlZiB0ZXN0X3BhcnRpYWwoc2VsZik6CkBAIC00NjIsNyArNDc5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MudXRmXzMyX2JlX2RlY29kZShlbmNvZGVkKVswXSkKIAogCi1jbGFzcyBVVEYxNlRlc3QoUmVhZFRlc3QpOgorY2xhc3MgVVRGMTZUZXN0KFJlYWRUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTE2IgogCiAgICAgc3BhbWxlID0gYidceGZmXHhmZXNceDAwcFx4MDBhXHgwMG1ceDAwc1x4MDBwXHgwMGFceDAwbVx4MDAnCkBAIC01NDIsNyArNTU5LDcgQEAKICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgJ1UnLCBlbmNvZGluZz1zZWxmLmVuY29kaW5nKSBhcyByZWFkZXI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRlci5yZWFkKCksIHMxKQogCi1jbGFzcyBVVEYxNkxFVGVzdChSZWFkVGVzdCk6CitjbGFzcyBVVEYxNkxFVGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi0xNi1sZSIKIAogICAgIGRlZiB0ZXN0X3BhcnRpYWwoc2VsZik6CkBAIC01ODUsNyArNjAyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ1x4MDBceGQ4XHgwM1x4ZGUnLmRlY29kZShzZWxmLmVuY29kaW5nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiXFUwMDAxMDIwMyIpCiAKLWNsYXNzIFVURjE2QkVUZXN0KFJlYWRUZXN0KToKK2NsYXNzIFVURjE2QkVUZXN0KFJlYWRUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTE2LWJlIgogCiAgICAgZGVmIHRlc3RfcGFydGlhbChzZWxmKToKQEAgLTYyOCw3ICs2NDUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInXHhkOFx4MDBceGRlXHgwMycuZGVjb2RlKHNlbGYuZW5jb2RpbmcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJcVTAwMDEwMjAzIikKIAotY2xhc3MgVVRGOFRlc3QoUmVhZFRlc3QpOgorY2xhc3MgVVRGOFRlc3QoUmVhZFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICJ1dGYtOCIKIAogICAgIGRlZiB0ZXN0X3BhcnRpYWwoc2VsZik6CkBAIC02NzcsMTMgKzY5NCwxMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBiImFiY1x4ZWRceGEwXHg4MGRlZiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJhYmNceGVkXHhhMFx4ODBkZWYiLmRlY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJhYmNcdWQ4MDBkZWYiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJcVTAwMDEwZmZmXHVEODAwIi5lbmNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiIlx4ZjBceDkwXHhiZlx4YmZceGVkXHhhMFx4ODAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIuZGVjb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgIlxVMDAwMTBmZmZcdUQ4MDAiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoY29kZWNzLmxvb2t1cF9lcnJvcigic3Vycm9nYXRlcGFzcyIpKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvcik6CiAgICAgICAgICAgICBiImFiY1x4ZWRceGEwIi5kZWNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvcik6CiAgICAgICAgICAgICBiImFiY1x4ZWRceGEweiIuZGVjb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIikKIAotY2xhc3MgVVRGN1Rlc3QoUmVhZFRlc3QpOgorQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICd3aW4zMicsCisgICAgICAgICAgICAgICAgICAgICAnY3A2NTAwMSBpcyBhIFdpbmRvd3Mtb25seSBjb2RlYycpCitjbGFzcyBDUDY1MDAxVGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGVuY29kaW5nID0gImNwNjUwMDEiCisKKyAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZik6CisgICAgICAgIHRlc3RzID0gWworICAgICAgICAgICAgKCdhYmMnLCAnc3RyaWN0JywgYidhYmMnKSwKKyAgICAgICAgICAgICgnXHhlOVx1MjBhYycsICdzdHJpY3QnLCAgYidceGMzXHhhOVx4ZTJceDgyXHhhYycpLAorICAgICAgICAgICAgKCdcVTAwMTBmZmZmJywgJ3N0cmljdCcsIGInXHhmNFx4OGZceGJmXHhiZicpLAorICAgICAgICBdCisgICAgICAgIGlmIFZJU1RBX09SX0xBVEVSOgorICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKCgKKyAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdpZ25vcmUnLCBiJycpLAorICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ3JlcGxhY2UnLCBiJz8nKSwKKyAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdiYWNrc2xhc2hyZXBsYWNlJywgYidcXHVkYzgwJyksCisgICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnc3Vycm9nYXRlcGFzcycsIGInXHhlZFx4YjJceDgwJyksCisgICAgICAgICAgICApKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGVzdHMuYXBwZW5kKCgnXHVkYzgwJywgJ3N0cmljdCcsIGInXHhlZFx4YjJceDgwJykpCisgICAgICAgIGZvciB0ZXh0LCBlcnJvcnMsIGV4cGVjdGVkIGluIHRlc3RzOgorICAgICAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBlbmNvZGVkID0gdGV4dC5lbmNvZGUoJ2NwNjUwMDEnLCBlcnJvcnMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGVuY29kZSAlYSB0byBjcDY1MDAxIHdpdGggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9ycz0lcjogJXMnICUgKHRleHQsIGVycm9ycywgZXJyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZWQsIGV4cGVjdGVkLAorICAgICAgICAgICAgICAgICAgICAnJWEuZW5jb2RlKCJjcDY1MDAxIiwgJXIpPSVhICE9ICVhJworICAgICAgICAgICAgICAgICAgICAlICh0ZXh0LCBlcnJvcnMsIGVuY29kZWQsIGV4cGVjdGVkKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLAorICAgICAgICAgICAgICAgICAgICB0ZXh0LmVuY29kZSwgImNwNjUwMDEiLCBlcnJvcnMpCisKKyAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZik6CisgICAgICAgIHRlc3RzID0gWworICAgICAgICAgICAgKGInYWJjJywgJ3N0cmljdCcsICdhYmMnKSwKKyAgICAgICAgICAgIChiJ1x4YzNceGE5XHhlMlx4ODJceGFjJywgJ3N0cmljdCcsICdceGU5XHUyMGFjJyksCisgICAgICAgICAgICAoYidceGY0XHg4Zlx4YmZceGJmJywgJ3N0cmljdCcsICdcVTAwMTBmZmZmJyksCisgICAgICAgICAgICAoYidceGVmXHhiZlx4YmQnLCAnc3RyaWN0JywgJ1x1ZmZmZCcpLAorICAgICAgICAgICAgKGInW1x4YzNceGE5XScsICdzdHJpY3QnLCAnW1x4ZTldJyksCisgICAgICAgICAgICAjIGludmFsaWQgYnl0ZXMKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdpZ25vcmUnLCAnW10nKSwKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdyZXBsYWNlJywgJ1tcdWZmZmRdJyksCisgICAgICAgICAgICAoYidbXHhmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgJ1tcdWRjZmZdJyksCisgICAgICAgIF0KKyAgICAgICAgaWYgVklTVEFfT1JfTEFURVI6CisgICAgICAgICAgICB0ZXN0cy5leHRlbmQoKAorICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3N0cmljdCcsIE5vbmUpLAorICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ2lnbm9yZScsICdbXScpLAorICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3JlcGxhY2UnLCAnW1x1ZmZmZFx1ZmZmZFx1ZmZmZF0nKSwKKyAgICAgICAgICAgICkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0ZXN0cy5leHRlbmQoKAorICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3N0cmljdCcsICdbXHVkYzgwXScpLAorICAgICAgICAgICAgKSkKKyAgICAgICAgZm9yIHJhdywgZXJyb3JzLCBleHBlY3RlZCBpbiB0ZXN0czoKKyAgICAgICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZGVjb2RlZCA9IHJhdy5kZWNvZGUoJ2NwNjUwMDEnLCBlcnJvcnMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGRlY29kZSAlYSBmcm9tIGNwNjUwMDEgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3JzPSVyOiAlcycgJSAocmF3LCBlcnJvcnMsIGVycikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVkLCBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgJyVhLmRlY29kZSgiY3A2NTAwMSIsICVyKT0lYSAhPSAlYScKKyAgICAgICAgICAgICAgICAgICAgJSAocmF3LCBlcnJvcnMsIGRlY29kZWQsIGV4cGVjdGVkKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLAorICAgICAgICAgICAgICAgICAgICByYXcuZGVjb2RlLCAnY3A2NTAwMScsIGVycm9ycykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFZJU1RBX09SX0xBVEVSLCAncmVxdWlyZSBXaW5kb3dzIFZpc3RhIG9yIGxhdGVyJykKKyAgICBkZWYgdGVzdF9sb25lX3N1cnJvZ2F0ZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgIlx1ZDgwMCIuZW5jb2RlLCAiY3A2NTAwMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgYiJceGVkXHhhMFx4ODAiLmRlY29kZSwgImNwNjUwMDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKCJjcDY1MDAxIiwgImJhY2tzbGFzaHJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1tcXHVkYzgwXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoImNwNjUwMDEiLCAieG1sY2hhcnJlZnJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1smIzU2NDQ4O10nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKCJjcDY1MDAxIiwgInN1cnJvZ2F0ZWVzY2FwZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInW1x4ODBdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJpZ25vcmUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1tdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJyZXBsYWNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidbP10nKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoVklTVEFfT1JfTEFURVIsICdyZXF1aXJlIFdpbmRvd3MgVmlzdGEgb3IgbGF0ZXInKQorICAgIGRlZiB0ZXN0X3N1cnJvZ2F0ZXBhc3NfaGFuZGxlcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYWJjXHVkODAwZGVmIi5lbmNvZGUoImNwNjUwMDEiLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGIiYWJjXHhlZFx4YTBceDgwZGVmIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiImFiY1x4ZWRceGEwXHg4MGRlZiIuZGVjb2RlKCJjcDY1MDAxIiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjXHVkODAwZGVmIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiXFUwMDAxMGZmZlx1RDgwMCIuZW5jb2RlKCJjcDY1MDAxIiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiIlx4ZjBceDkwXHhiZlx4YmZceGVkXHhhMFx4ODAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIuZGVjb2RlKCJjcDY1MDAxIiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiXFUwMDAxMGZmZlx1RDgwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2RlY3MubG9va3VwX2Vycm9yKCJzdXJyb2dhdGVwYXNzIikpCisKKworCitjbGFzcyBVVEY3VGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi03IgogCiAgICAgZGVmIHRlc3RfcGFydGlhbChzZWxmKToKQEAgLTcyMiw3ICs4NDQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvZGVjcy5yZWFkYnVmZmVyX2VuY29kZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb2RlY3MucmVhZGJ1ZmZlcl9lbmNvZGUsIDQyKQogCi1jbGFzcyBVVEY4U2lnVGVzdChSZWFkVGVzdCk6CitjbGFzcyBVVEY4U2lnVGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi04LXNpZyIKIAogICAgIGRlZiB0ZXN0X3BhcnRpYWwoc2VsZik6CkBAIC05OTUsNjEgKzExMTcsODAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pLCBwdW55LmRlY29kZSgicHVueWNvZGUiKSkKIAogY2xhc3MgVW5pY29kZUludGVybmFsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoU0laRU9GX1dDSEFSX1QgPT0gNCwgJ3NwZWNpZmljIHRvIDMyLWJpdCB3Y2hhcl90JykKICAgICBkZWYgdGVzdF9idWcxMjUxMzAwKHNlbGYpOgogICAgICAgICAjIERlY29kaW5nIHdpdGggdW5pY29kZV9pbnRlcm5hbCB1c2VkIHRvIG5vdCBjb3JyZWN0bHkgaGFuZGxlICJjb2RlCiAgICAgICAgICMgcG9pbnRzIiBhYm92ZSAweDEwZmZmZiBvbiBVQ1MtNCBidWlsZHMuCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgotICAgICAgICAgICAgb2sgPSBbCi0gICAgICAgICAgICAgICAgKGIiXHgwMFx4MTBceGZmXHhmZiIsICJcVTAwMTBmZmZmIiksCi0gICAgICAgICAgICAgICAgKGIiXHgwMFx4MDBceDAxXHgwMSIsICJcVTAwMDAwMTAxIiksCi0gICAgICAgICAgICAgICAgKGIiIiwgIiIpLAotICAgICAgICAgICAgXQotICAgICAgICAgICAgbm90X29rID0gWwotICAgICAgICAgICAgICAgIGIiXHg3Zlx4ZmZceGZmXHhmZiIsCi0gICAgICAgICAgICAgICAgYiJceDgwXHgwMFx4MDBceDAwIiwKLSAgICAgICAgICAgICAgICBiIlx4ODFceDAwXHgwMFx4MDAiLAotICAgICAgICAgICAgICAgIGIiXHgwMCIsCi0gICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIsCi0gICAgICAgICAgICBdCi0gICAgICAgICAgICBmb3IgaW50ZXJuYWwsIHVuaSBpbiBvazoKLSAgICAgICAgICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICJsaXR0bGUiOgotICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbCA9IGJ5dGVzKHJldmVyc2VkKGludGVybmFsKSkKKyAgICAgICAgb2sgPSBbCisgICAgICAgICAgICAoYiJceDAwXHgxMFx4ZmZceGZmIiwgIlxVMDAxMGZmZmYiKSwKKyAgICAgICAgICAgIChiIlx4MDBceDAwXHgwMVx4MDEiLCAiXFUwMDAwMDEwMSIpLAorICAgICAgICAgICAgKGIiIiwgIiIpLAorICAgICAgICBdCisgICAgICAgIG5vdF9vayA9IFsKKyAgICAgICAgICAgIGIiXHg3Zlx4ZmZceGZmXHhmZiIsCisgICAgICAgICAgICBiIlx4ODBceDAwXHgwMFx4MDAiLAorICAgICAgICAgICAgYiJceDgxXHgwMFx4MDBceDAwIiwKKyAgICAgICAgICAgIGIiXHgwMCIsCisgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIiwKKyAgICAgICAgXQorICAgICAgICBmb3IgaW50ZXJuYWwsIHVuaSBpbiBvazoKKyAgICAgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gImxpdHRsZSI6CisgICAgICAgICAgICAgICAgaW50ZXJuYWwgPSBieXRlcyhyZXZlcnNlZChpbnRlcm5hbCkpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaSwgaW50ZXJuYWwuZGVjb2RlKCJ1bmljb2RlX2ludGVybmFsIikpCi0gICAgICAgICAgICBmb3IgaW50ZXJuYWwgaW4gbm90X29rOgotICAgICAgICAgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gImxpdHRsZSI6Ci0gICAgICAgICAgICAgICAgICAgIGludGVybmFsID0gYnl0ZXMocmV2ZXJzZWQoaW50ZXJuYWwpKQorICAgICAgICBmb3IgaW50ZXJuYWwgaW4gbm90X29rOgorICAgICAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAibGl0dGxlIjoKKyAgICAgICAgICAgICAgICBpbnRlcm5hbCA9IGJ5dGVzKHJldmVyc2VkKGludGVybmFsKSkKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJ3VuaWNvZGVfaW50ZXJuYWwgY29kZWMgaGFzIGJlZW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVwcmVjYXRlZCcsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgaW50ZXJuYWwuZGVjb2RlLAotICAgICAgICAgICAgICAgICAgICAidW5pY29kZV9pbnRlcm5hbCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVfaW50ZXJuYWwiKQorICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICJsaXR0bGUiOgorICAgICAgICAgICAgaW52YWxpZCA9IGIiXHgwMFx4MDBceDExXHgwMCIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGludmFsaWQgPSBiIlx4MDBceDExXHgwMFx4MDAiCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZC5kZWNvZGUsICJ1bmljb2RlX2ludGVybmFsIikKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludmFsaWQuZGVjb2RlKCJ1bmljb2RlX2ludGVybmFsIiwgInJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1x1ZmZmZCcpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhTSVpFT0ZfV0NIQVJfVCA9PSA0LCAnc3BlY2lmaWMgdG8gMzItYml0IHdjaGFyX3QnKQogICAgIGRlZiB0ZXN0X2RlY29kZV9lcnJvcl9hdHRyaWJ1dGVzKHNlbGYpOgotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA+IDB4ZmZmZjoKLSAgICAgICAgICAgIHRyeToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgndW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMFx4MTFceDExXHgwMCIuZGVjb2RlKCJ1bmljb2RlX2ludGVybmFsIikKLSAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZXg6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidW5pY29kZV9pbnRlcm5hbCIsIGV4LmVuY29kaW5nKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJceDAwXHgwMFx4MDBceDAwXHgwMFx4MTFceDExXHgwMCIsIGV4Lm9iamVjdCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQsIGV4LnN0YXJ0KQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOCwgZXguZW5kKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoKQorICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGV4OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidW5pY29kZV9pbnRlcm5hbCIsIGV4LmVuY29kaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIlx4MDBceDAwXHgwMFx4MDBceDAwXHgxMVx4MTFceDAwIiwgZXgub2JqZWN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBleC5zdGFydCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOCwgZXguZW5kKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFNJWkVPRl9XQ0hBUl9UID09IDQsICdzcGVjaWZpYyB0byAzMi1iaXQgd2NoYXJfdCcpCiAgICAgZGVmIHRlc3RfZGVjb2RlX2NhbGxiYWNrKHNlbGYpOgotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA+IDB4ZmZmZjoKLSAgICAgICAgICAgIGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigiVW5pY29kZUludGVybmFsVGVzdCIsIGNvZGVjcy5pZ25vcmVfZXJyb3JzKQotICAgICAgICAgICAgZGVjb2RlciA9IGNvZGVjcy5nZXRkZWNvZGVyKCJ1bmljb2RlX2ludGVybmFsIikKKyAgICAgICAgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCJVbmljb2RlSW50ZXJuYWxUZXN0IiwgY29kZWNzLmlnbm9yZV9lcnJvcnMpCisgICAgICAgIGRlY29kZXIgPSBjb2RlY3MuZ2V0ZGVjb2RlcigidW5pY29kZV9pbnRlcm5hbCIpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJ3VuaWNvZGVfaW50ZXJuYWwgY29kZWMgaGFzIGJlZW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBhYiA9ICJhYiIuZW5jb2RlKCJ1bmljb2RlX2ludGVybmFsIikuZGVjb2RlKCkKICAgICAgICAgICAgIGlnbm9yZWQgPSBkZWNvZGVyKGJ5dGVzKCIlc1x4MjJceDIyXHgyMlx4MjIlcyIgJSAoYWJbOjRdLCBhYls0Ol0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFzY2lpIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5pY29kZUludGVybmFsVGVzdCIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgiYWIiLCAxMiksIGlnbm9yZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJhYiIsIDEyKSwgaWdub3JlZCkKIAogICAgIGRlZiB0ZXN0X2VuY29kZV9sZW5ndGgoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgMzczOQotICAgICAgICBlbmNvZGVyID0gY29kZWNzLmdldGVuY29kZXIoInVuaWNvZGVfaW50ZXJuYWwiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZXIoImEiKVsxXSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVyKCJceGU5XHUwMTQyIilbMV0sIDIpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJ3VuaWNvZGVfaW50ZXJuYWwgY29kZWMgaGFzIGJlZW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICAjIElzc3VlIDM3MzkKKyAgICAgICAgICAgIGVuY29kZXIgPSBjb2RlY3MuZ2V0ZW5jb2RlcigidW5pY29kZV9pbnRlcm5hbCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZXIoImEiKVsxXSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlcigiXHhlOVx1MDE0MiIpWzFdLCAyKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLmVzY2FwZV9lbmNvZGUoYnInXHgwMCcpWzFdLCA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MuZXNjYXBlX2VuY29kZShicidceDAwJylbMV0sIDQpCiAKICMgRnJvbSBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliaWRuL2RyYWZ0LWpvc2Vmc3Nvbi1pZG4tdGVzdC12ZWN0b3JzLmh0bWwKIG5hbWVwcmVwX3Rlc3RzID0gWwpAQCAtMTM3Myw3ICsxNTE0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlZi5yZWFkKCksIGInXFxceGQ1XG5ceDAwXHgwMFx4YWUnKQogCiAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKLSAgICAgICAgZWYgPSBjb2RlY3MuRW5jb2RlZEZpbGUoZiwgJ3V0Zi04JywgJ2xhdGluMScpCisgICAgICAgIGVmID0gY29kZWNzLkVuY29kZWRGaWxlKGYsICd1dGYtOCcsICdsYXRpbi0xJykKICAgICAgICAgZWYud3JpdGUoYidceGMzXHhiYycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5nZXR2YWx1ZSgpLCBiJ1x4ZmMnKQogCkBAIC0xNTA1LDEwICsxNjQ2LDEzIEBACiAgICAgICAgICAgICBlbGlmIGVuY29kaW5nID09ICJsYXRpbl8xIjoKICAgICAgICAgICAgICAgICBuYW1lID0gImxhdGluXzEiCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kaW5nLnJlcGxhY2UoIl8iLCAiLSIpLCBuYW1lLnJlcGxhY2UoIl8iLCAiLSIpKQotICAgICAgICAgICAgKGIsIHNpemUpID0gY29kZWNzLmdldGVuY29kZXIoZW5jb2RpbmcpKHMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIGxlbihzKSwgIiVyICE9ICVyIChlbmNvZGluZz0lcikiICUgKHNpemUsIGxlbihzKSwgZW5jb2RpbmcpKQotICAgICAgICAgICAgKGNoYXJzLCBzaXplKSA9IGNvZGVjcy5nZXRkZWNvZGVyKGVuY29kaW5nKShiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFycywgcywgIiVyICE9ICVyIChlbmNvZGluZz0lcikiICUgKGNoYXJzLCBzLCBlbmNvZGluZykpCisKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgorICAgICAgICAgICAgICAgICMgdW5pY29kZS1pbnRlcm5hbCBoYXMgYmVlbiBkZXByZWNhdGVkCisgICAgICAgICAgICAgICAgKGIsIHNpemUpID0gY29kZWNzLmdldGVuY29kZXIoZW5jb2RpbmcpKHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplLCBsZW4ocyksICIlciAhPSAlciAoZW5jb2Rpbmc9JXIpIiAlIChzaXplLCBsZW4ocyksIGVuY29kaW5nKSkKKyAgICAgICAgICAgICAgICAoY2hhcnMsIHNpemUpID0gY29kZWNzLmdldGRlY29kZXIoZW5jb2RpbmcpKGIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFycywgcywgIiVyICE9ICVyIChlbmNvZGluZz0lcikiICUgKGNoYXJzLCBzLCBlbmNvZGluZykpCiAKICAgICAgICAgICAgIGlmIGVuY29kaW5nIG5vdCBpbiBicm9rZW5fdW5pY29kZV93aXRoX3N0cmVhbXM6CiAgICAgICAgICAgICAgICAgIyBjaGVjayBzdHJlYW0gcmVhZGVyL3dyaXRlcgpAQCAtMTYxMiw3ICsxNzU2LDkgQEAKICAgICBkZWYgdGVzdF9iYWRfZW5jb2RlX2FyZ3Moc2VsZik6CiAgICAgICAgIGZvciBlbmNvZGluZyBpbiBhbGxfdW5pY29kZV9lbmNvZGluZ3M6CiAgICAgICAgICAgICBlbmNvZGVyID0gY29kZWNzLmdldGVuY29kZXIoZW5jb2RpbmcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGVuY29kZXIpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICAjIHVuaWNvZGUtaW50ZXJuYWwgaGFzIGJlZW4gZGVwcmVjYXRlZAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZW5jb2RlcikKIAogICAgIGRlZiB0ZXN0X2VuY29kaW5nX21hcF90eXBlX2luaXRpYWxpemVkKHNlbGYpOgogICAgICAgICBmcm9tIGVuY29kaW5ncyBpbXBvcnQgY3AxMTQwCkBAIC0xNjM1LDYgKzE3ODEsMTEgQEAKICAgICAgICAgICAgICgiYWJjIiwgMykKICAgICAgICAgKQogCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoYiJceDAwXHgwMVx4MDIiLCAic3RyaWN0IiwgIlxVMDAxMEZGRkZiYyIpLAorICAgICAgICAgICAgKCJcVTAwMTBGRkZGYmMiLCAzKQorICAgICAgICApCisKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLAogICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlLCBiIlx4MDBceDAxXHgwMiIsICJzdHJpY3QiLCAiYWIiCiAgICAgICAgICkKQEAgLTE3NzIsOSArMTkyMywxNSBAQAogICAgICAgICAgICAgKCJcVTAwMTBGRkZGYmMiLCAzKQogICAgICAgICApCiAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNvZGVjcy5jaGFybWFwX2RlY29kZShiIlx4MDBceDAxXHgwMiIsICJzdHJpY3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswOiBzeXMubWF4dW5pY29kZSwgMTogYiwgMjogY30pLAorICAgICAgICAgICAgKGNocihzeXMubWF4dW5pY29kZSkgKyAiYmMiLCAzKQorICAgICAgICApCisKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLAogICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlLCBiIlx4MDBceDAxXHgwMiIsICJzdHJpY3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7MDogMHgxMTAwMDAsIDE6IGIsIDI6IGN9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswOiBzeXMubWF4dW5pY29kZSArIDEsIDE6IGIsIDI6IGN9CiAgICAgICAgICkKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsCkBAIC0xODU1LDYgKzIwMTIsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MucmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZShyIlx1MTIzNCIpLCAoIlx1MTIzNCIsIDYpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlKGJyIlx1MTIzNCIpLCAoIlx1MTIzNCIsIDYpKQogCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgY29kZWNzLnVuaWNvZGVfZXNjYXBlX2RlY29kZSwgYnIiXFUwMDExMDAwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLnVuaWNvZGVfZXNjYXBlX2RlY29kZShyIlxVMDAxMTAwMDAiLCAicmVwbGFjZSIpLCAoIlx1ZmZmZCIsIDEwKSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsIGNvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlLCBiciJcVTAwMTEwMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MucmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZShyIlxVMDAxMTAwMDAiLCAicmVwbGFjZSIpLCAoIlx1ZmZmZCIsIDEwKSkKKwogCiBjbGFzcyBVbmljb2RlRXNjYXBlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZW1wdHkoc2VsZik6CkBAIC0yMDE0LDcgKzIxNzcsNyBAQAogCiAgICAgZGVmIHRlc3RfbGF0aW4xKHNlbGYpOgogICAgICAgICAjIElzc3VlNjM3MwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJcdWRjZTRcdWRjZWJcdWRjZWZcdWRjZjZcdWRjZmMiLmVuY29kZSgibGF0aW4xIiwgInN1cnJvZ2F0ZWVzY2FwZSIpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJcdWRjZTRcdWRjZWJcdWRjZWZcdWRjZjZcdWRjZmMiLmVuY29kZSgibGF0aW4tMSIsICJzdXJyb2dhdGVlc2NhcGUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBiIlx4ZTRceGViXHhlZlx4ZjZceGZjIikKIAogCkBAIC0yMTIzLDM5ICsyMjg2LDE1NCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3V0LCBiIlx4ODAiKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgVVRGMzJUZXN0LAotICAgICAgICBVVEYzMkxFVGVzdCwKLSAgICAgICAgVVRGMzJCRVRlc3QsCi0gICAgICAgIFVURjE2VGVzdCwKLSAgICAgICAgVVRGMTZMRVRlc3QsCi0gICAgICAgIFVURjE2QkVUZXN0LAotICAgICAgICBVVEY4VGVzdCwKLSAgICAgICAgVVRGOFNpZ1Rlc3QsCi0gICAgICAgIEVzY2FwZURlY29kZVRlc3QsCi0gICAgICAgIFVURjdUZXN0LAotICAgICAgICBVVEYxNkV4VGVzdCwKLSAgICAgICAgUmVhZEJ1ZmZlclRlc3QsCi0gICAgICAgIFJlY29kaW5nVGVzdCwKLSAgICAgICAgUHVueWNvZGVUZXN0LAotICAgICAgICBVbmljb2RlSW50ZXJuYWxUZXN0LAotICAgICAgICBOYW1lcHJlcFRlc3QsCi0gICAgICAgIElETkFDb2RlY1Rlc3QsCi0gICAgICAgIENvZGVjc01vZHVsZVRlc3QsCi0gICAgICAgIFN0cmVhbVJlYWRlclRlc3QsCi0gICAgICAgIEVuY29kZWRGaWxlVGVzdCwKLSAgICAgICAgQmFzaWNVbmljb2RlVGVzdCwKLSAgICAgICAgQ2hhcm1hcFRlc3QsCi0gICAgICAgIFdpdGhTdG10VGVzdCwKLSAgICAgICAgVHlwZXNUZXN0LAotICAgICAgICBVbmljb2RlRXNjYXBlVGVzdCwKLSAgICAgICAgUmF3VW5pY29kZUVzY2FwZVRlc3QsCi0gICAgICAgIFN1cnJvZ2F0ZUVzY2FwZVRlc3QsCi0gICAgICAgIEJvbVRlc3QsCi0gICAgICAgIFRyYW5zZm9ybUNvZGVjVGVzdCwKLSAgICApCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywKKyAgICAgICAgICAgICAgICAgICAgICdjb2RlIHBhZ2VzIGFyZSBzcGVjaWZpYyB0byBXaW5kb3dzJykKK2NsYXNzIENvZGVQYWdlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBDUF9VVEY4IGlzIGFscmVhZHkgdGVzdGVkIGJ5IENQNjUwMDFUZXN0CisgICAgQ1BfVVRGOCA9IDY1MDAxCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NvZGVfcGFnZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29kZWNzLmNvZGVfcGFnZV9lbmNvZGUsIC0xLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCAtMSwgYidhJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoV2luZG93c0Vycm9yLCBjb2RlY3MuY29kZV9wYWdlX2VuY29kZSwgMTIzLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFdpbmRvd3NFcnJvciwgY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIDEyMywgYidhJykKKworICAgIGRlZiB0ZXN0X2NvZGVfcGFnZV9uYW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFVuaWNvZGVFbmNvZGVFcnJvciwgJ2NwOTMyJywKKyAgICAgICAgICAgIGNvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlLCA5MzIsICdceGZmJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChVbmljb2RlRGVjb2RlRXJyb3IsICdjcDkzMicsCisgICAgICAgICAgICBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgOTMyLCBiJ1x4ODFceDAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChVbmljb2RlRGVjb2RlRXJyb3IsICdDUF9VVEY4JywKKyAgICAgICAgICAgIGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCBzZWxmLkNQX1VURjgsIGInXHhmZicpCisKKyAgICBkZWYgY2hlY2tfZGVjb2RlKHNlbGYsIGNwLCB0ZXN0cyk6CisgICAgICAgIGZvciByYXcsIGVycm9ycywgZXhwZWN0ZWQgaW4gdGVzdHM6CisgICAgICAgICAgICBpZiBleHBlY3RlZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGRlY29kZWQgPSBjb2RlY3MuY29kZV9wYWdlX2RlY29kZShjcCwgcmF3LCBlcnJvcnMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGRlY29kZSAlYSBmcm9tICJjcCVzIiB3aXRoICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvcnM9JXI6ICVzJyAlIChyYXcsIGNwLCBlcnJvcnMsIGVycikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVkWzBdLCBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgJyVhLmRlY29kZSgiY3AlcyIsICVyKT0lYSAhPSAlYScKKyAgICAgICAgICAgICAgICAgICAgJSAocmF3LCBjcCwgZXJyb3JzLCBkZWNvZGVkWzBdLCBleHBlY3RlZCkpCisgICAgICAgICAgICAgICAgIyBhc3NlcnQgMCA8PSBkZWNvZGVkWzFdIDw9IGxlbihyYXcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoZGVjb2RlZFsxXSwgMCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChkZWNvZGVkWzFdLCBsZW4ocmF3KSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLAorICAgICAgICAgICAgICAgICAgICBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgY3AsIHJhdywgZXJyb3JzKQorCisgICAgZGVmIGNoZWNrX2VuY29kZShzZWxmLCBjcCwgdGVzdHMpOgorICAgICAgICBmb3IgdGV4dCwgZXJyb3JzLCBleHBlY3RlZCBpbiB0ZXN0czoKKyAgICAgICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZW5jb2RlZCA9IGNvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlKGNwLCB0ZXh0LCBlcnJvcnMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGVuY29kZSAlYSB0byAiY3AlcyIgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3JzPSVyOiAlcycgJSAodGV4dCwgY3AsIGVycm9ycywgZXJyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZWRbMF0sIGV4cGVjdGVkLAorICAgICAgICAgICAgICAgICAgICAnJWEuZW5jb2RlKCJjcCVzIiwgJXIpPSVhICE9ICVhJworICAgICAgICAgICAgICAgICAgICAlICh0ZXh0LCBjcCwgZXJyb3JzLCBlbmNvZGVkWzBdLCBleHBlY3RlZCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVkWzFdLCBsZW4odGV4dCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgY29kZWNzLmNvZGVfcGFnZV9lbmNvZGUsIGNwLCB0ZXh0LCBlcnJvcnMpCisKKyAgICBkZWYgdGVzdF9jcDkzMihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19lbmNvZGUoOTMyLCAoCisgICAgICAgICAgICAoJ2FiYycsICdzdHJpY3QnLCBiJ2FiYycpLAorICAgICAgICAgICAgKCdcdWZmNDRcdTlhM2UnLCAnc3RyaWN0JywgYidceDgyXHg4NFx4ZTlceDgwJyksCisgICAgICAgICAgICAjIHRlc3QgZXJyb3IgaGFuZGxlcnMKKyAgICAgICAgICAgICgnXHhmZicsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgICgnW1x4ZmZdJywgJ2lnbm9yZScsIGInW10nKSwKKyAgICAgICAgICAgICgnW1x4ZmZdJywgJ3JlcGxhY2UnLCBiJ1t5XScpLAorICAgICAgICAgICAgKCdbXHUyMGFjXScsICdyZXBsYWNlJywgYidbP10nKSwKKyAgICAgICAgICAgICgnW1x4ZmZdJywgJ2JhY2tzbGFzaHJlcGxhY2UnLCBiJ1tcXHhmZl0nKSwKKyAgICAgICAgICAgICgnW1x4ZmZdJywgJ3htbGNoYXJyZWZyZXBsYWNlJywgYidbJiMyNTU7XScpLAorICAgICAgICApKQorICAgICAgICBzZWxmLmNoZWNrX2RlY29kZSg5MzIsICgKKyAgICAgICAgICAgIChiJ2FiYycsICdzdHJpY3QnLCAnYWJjJyksCisgICAgICAgICAgICAoYidceDgyXHg4NFx4ZTlceDgwJywgJ3N0cmljdCcsICdcdWZmNDRcdTlhM2UnKSwKKyAgICAgICAgICAgICMgaW52YWxpZCBieXRlcworICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3N0cmljdCcsIE5vbmUpLAorICAgICAgICAgICAgKGInW1x4ZmZdJywgJ2lnbm9yZScsICdbXScpLAorICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3JlcGxhY2UnLCAnW1x1ZmZmZF0nKSwKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdzdXJyb2dhdGVlc2NhcGUnLCAnW1x1ZGNmZl0nKSwKKyAgICAgICAgICAgIChiJ1x4ODFceDAwYWJjJywgJ3N0cmljdCcsIE5vbmUpLAorICAgICAgICAgICAgKGInXHg4MVx4MDBhYmMnLCAnaWdub3JlJywgJ1x4MDBhYmMnKSwKKyAgICAgICAgICAgIChiJ1x4ODFceDAwYWJjJywgJ3JlcGxhY2UnLCAnXHVmZmZkXHgwMGFiYycpLAorICAgICAgICApKQorCisgICAgZGVmIHRlc3RfY3AxMjUyKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2VuY29kZSgxMjUyLCAoCisgICAgICAgICAgICAoJ2FiYycsICdzdHJpY3QnLCBiJ2FiYycpLAorICAgICAgICAgICAgKCdceGU5XHUyMGFjJywgJ3N0cmljdCcsICBiJ1x4ZTlceDgwJyksCisgICAgICAgICAgICAoJ1x4ZmYnLCAnc3RyaWN0JywgYidceGZmJyksCisgICAgICAgICAgICAoJ1x1MDE0MScsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgICgnXHUwMTQxJywgJ2lnbm9yZScsIGInJyksCisgICAgICAgICAgICAoJ1x1MDE0MScsICdyZXBsYWNlJywgYidMJyksCisgICAgICAgICkpCisgICAgICAgIHNlbGYuY2hlY2tfZGVjb2RlKDEyNTIsICgKKyAgICAgICAgICAgIChiJ2FiYycsICdzdHJpY3QnLCAnYWJjJyksCisgICAgICAgICAgICAoYidceGU5XHg4MCcsICdzdHJpY3QnLCAnXHhlOVx1MjBhYycpLAorICAgICAgICAgICAgKGInXHhmZicsICdzdHJpY3QnLCAnXHhmZicpLAorICAgICAgICApKQorCisgICAgZGVmIHRlc3RfY3BfdXRmNyhzZWxmKToKKyAgICAgICAgY3AgPSA2NTAwMAorICAgICAgICBzZWxmLmNoZWNrX2VuY29kZShjcCwgKAorICAgICAgICAgICAgKCdhYmMnLCAnc3RyaWN0JywgYidhYmMnKSwKKyAgICAgICAgICAgICgnXHhlOVx1MjBhYycsICdzdHJpY3QnLCAgYicrQU9rZ3JBLScpLAorICAgICAgICAgICAgKCdcVTAwMTBmZmZmJywgJ3N0cmljdCcsICBiJysyLy9mL3ctJyksCisgICAgICAgICAgICAoJ1x1ZGM4MCcsICdzdHJpY3QnLCBiJyszSUEtJyksCisgICAgICAgICAgICAoJ1x1ZmZmZCcsICdzdHJpY3QnLCBiJysvLzAtJyksCisgICAgICAgICkpCisgICAgICAgIHNlbGYuY2hlY2tfZGVjb2RlKGNwLCAoCisgICAgICAgICAgICAoYidhYmMnLCAnc3RyaWN0JywgJ2FiYycpLAorICAgICAgICAgICAgKGInK0FPa2dyQS0nLCAnc3RyaWN0JywgJ1x4ZTlcdTIwYWMnKSwKKyAgICAgICAgICAgIChiJysyLy9mL3ctJywgJ3N0cmljdCcsICdcVTAwMTBmZmZmJyksCisgICAgICAgICAgICAoYicrM0lBLScsICdzdHJpY3QnLCAnXHVkYzgwJyksCisgICAgICAgICAgICAoYicrLy8wLScsICdzdHJpY3QnLCAnXHVmZmZkJyksCisgICAgICAgICAgICAjIGludmFsaWQgYnl0ZXMKKyAgICAgICAgICAgIChiJ1srL10nLCAnc3RyaWN0JywgJ1tdJyksCisgICAgICAgICAgICAoYidbXHhmZl0nLCAnc3RyaWN0JywgJ1tceGZmXScpLAorICAgICAgICApKQorCisgICAgZGVmIHRlc3RfbXVsdGlieXRlX2VuY29kaW5nKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2RlY29kZSg5MzIsICgKKyAgICAgICAgICAgIChiJ1x4ODRceGU5XHg4MCcsICdpZ25vcmUnLCAnXHU5YTNlJyksCisgICAgICAgICAgICAoYidceDg0XHhlOVx4ODAnLCAncmVwbGFjZScsICdcdWZmZmRcdTlhM2UnKSwKKyAgICAgICAgKSkKKyAgICAgICAgc2VsZi5jaGVja19kZWNvZGUoc2VsZi5DUF9VVEY4LCAoCisgICAgICAgICAgICAoYidceGZmXHhmNFx4OGZceGJmXHhiZicsICdpZ25vcmUnLCAnXFUwMDEwZmZmZicpLAorICAgICAgICAgICAgKGInXHhmZlx4ZjRceDhmXHhiZlx4YmYnLCAncmVwbGFjZScsICdcdWZmZmRcVTAwMTBmZmZmJyksCisgICAgICAgICkpCisgICAgICAgIGlmIFZJU1RBX09SX0xBVEVSOgorICAgICAgICAgICAgc2VsZi5jaGVja19lbmNvZGUoc2VsZi5DUF9VVEY4LCAoCisgICAgICAgICAgICAgICAgKCdbXFUwMDEwZmZmZlx1REM4MF0nLCAnaWdub3JlJywgYidbXHhmNFx4OGZceGJmXHhiZl0nKSwKKyAgICAgICAgICAgICAgICAoJ1tcVTAwMTBmZmZmXHVEQzgwXScsICdyZXBsYWNlJywgYidbXHhmNFx4OGZceGJmXHhiZj9dJyksCisgICAgICAgICAgICApKQorCisgICAgZGVmIHRlc3RfaW5jcmVtZW50YWwoc2VsZik6CisgICAgICAgIGRlY29kZWQgPSBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSg5MzIsIGInXHg4MicsICdzdHJpY3QnLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVkLCAoJycsIDApKQorCisgICAgICAgIGRlY29kZWQgPSBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSg5MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4ZTlceDgwXHhlOScsICdzdHJpY3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZCwgKCdcdTlhM2UnLCAyKSkKKworICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoOTMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidceGU5XHg4MFx4ZTlceDgwJywgJ3N0cmljdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVkLCAoJ1x1OWEzZVx1OWEzZScsIDQpKQorCisgICAgICAgIGRlY29kZWQgPSBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSg5MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiJ2FiYycsICdzdHJpY3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZCwgKCdhYmMnLCAzKSkKIAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kaW5nLnB5CmluZGV4IGY5ZGIwYjQuLmRmZDU0MzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kaW5nLnB5CkBAIC0xLDcgKzEsNiBAQAotCiBpbXBvcnQgdGVzdC5zdXBwb3J0LCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgdW5saW5rLCB1bmxvYWQKLWltcG9ydCBvcywgc3lzCitpbXBvcnQgaW1wb3J0bGliLCBvcywgc3lzCiAKIGNsYXNzIENvZGluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2JhZF9jb2Rpbmcoc2VsZik6CkBAIC00MCw2ICszOSw3IEBACiAgICAgICAgICAgICBmLndyaXRlKCInQSB2ZXJ5IGxvbmcgc3RyaW5nICVzJ1xuIiAlICgiWCIgKiAxMDAwKSkKICAgICAgICAgICAgIGYuY2xvc2UoKQogCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgX19pbXBvcnRfXyhURVNURk4pCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmLmNsb3NlKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5CmluZGV4IGIyYTVmMDUuLjg4NTBlOGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weQpAQCAtMSw2ICsxLDcgQEAKICIiIlVuaXQgdGVzdHMgZm9yIGNvbGxlY3Rpb25zLnB5LiIiIgogCiBpbXBvcnQgdW5pdHRlc3QsIGRvY3Rlc3QsIG9wZXJhdG9yCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBmb3JnZXQsIHVubGluawogaW1wb3J0IGluc3BlY3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSwgQ291bnRlciwgT3JkZXJlZERpY3QsIF9jb3VudF9lbGVtZW50cwpAQCAtMTAsMjEgKzExLDIwIEBACiBpbXBvcnQga2V5d29yZAogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBfQ2hhaW5NYXAKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBTZXQsIE11dGFibGVTZXQKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE1hcHBpbmcsIE11dGFibGVNYXBwaW5nLCBLZXlzVmlldywgSXRlbXNWaWV3LCBVc2VyRGljdAotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgU2VxdWVuY2UsIE11dGFibGVTZXF1ZW5jZQotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQnl0ZVN0cmluZworZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlckRpY3QKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IENoYWluTWFwCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvcgorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2V0LCBNdXRhYmxlU2V0Citmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTWFwcGluZywgTXV0YWJsZU1hcHBpbmcsIEtleXNWaWV3LCBJdGVtc1ZpZXcKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTZXF1ZW5jZSwgTXV0YWJsZVNlcXVlbmNlCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgQnl0ZVN0cmluZwogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIyMgX0NoYWluTWFwIChoZWxwZXIgY2xhc3MgZm9yIGNvbmZpZ3BhcnNlcikKKyMjIyBDaGFpbk1hcCAoaGVscGVyIGNsYXNzIGZvciBjb25maWdwYXJzZXIgYW5kIHRoZSBzdHJpbmcgbW9kdWxlKQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotQ2hhaW5NYXAgPSBfQ2hhaW5NYXAgICMgcmVuYW1lIHRvIGtlZXAgdGVzdCBjb2RlIGluIHN5bmMgd2l0aCAzLjMgdmVyc2lvbgotCiBjbGFzcyBUZXN0Q2hhaW5NYXAodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgpAQCAtMTI4LDYgKzEyOCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9pbnQuX19tb2R1bGVfXywgX19uYW1lX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9pbnQuX19nZXRpdGVtX18sIHR1cGxlLl9fZ2V0aXRlbV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvaW50Ll9maWVsZHMsICgneCcsICd5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NsYXNzIFBvaW50KHR1cGxlKScsIFBvaW50Ll9zb3VyY2UpCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmFtZWR0dXBsZSwgJ2FiYyUnLCAnZWZnIGdoaScpICAgICAgICMgdHlwZSBoYXMgbm9uLWFscGhhIGNoYXIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmFtZWR0dXBsZSwgJ2NsYXNzJywgJ2VmZyBnaGknKSAgICAgICMgdHlwZSBoYXMga2V5d29yZApAQCAtMzI3LDYgKzMyOCwxNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoQigxKSksICdCKHg9MSknKQogCisgICAgZGVmIHRlc3Rfc291cmNlKHNlbGYpOgorICAgICAgICAjIHZlcmlmeSB0aGF0IF9zb3VyY2UgY2FuIGJlIHJ1biB0aHJvdWdoIGV4ZWMoKQorICAgICAgICB0bXAgPSBuYW1lZHR1cGxlKCdOVENvbG9yJywgJ3JlZCBncmVlbiBibHVlJykKKyAgICAgICAgZ2xvYmFscygpLnBvcCgnTlRDb2xvcicsIE5vbmUpICAgICAgICAgICMgcmVtb3ZlIGFydGlmYWN0cyBmcm9tIG90aGVyIHRlc3RzCisgICAgICAgIGV4ZWModG1wLl9zb3VyY2UsIGdsb2JhbHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignTlRDb2xvcicsIGdsb2JhbHMoKSkKKyAgICAgICAgYyA9IE5UQ29sb3IoMTAsIDIwLCAzMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYy5yZWQsIGMuZ3JlZW4sIGMuYmx1ZSksICgxMCwgMjAsIDMwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOVENvbG9yLl9maWVsZHMsICgncmVkJywgJ2dyZWVuJywgJ2JsdWUnKSkKKyAgICAgICAgZ2xvYmFscygpLnBvcCgnTlRDb2xvcicsIE5vbmUpICAgICAgICAgICMgY2xlYW4tdXAgYWZ0ZXIgdGhpcyB0ZXN0CisKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIyBBYnN0cmFjdCBCYXNlIENsYXNzZXMKQEAgLTc2Miw2ICs3NzQsNDQgQEAKICAgICAgICAgc2VsZi52YWxpZGF0ZV9hYnN0cmFjdF9tZXRob2RzKE11dGFibGVTZXF1ZW5jZSwgJ19fY29udGFpbnNfXycsICdfX2l0ZXJfXycsCiAgICAgICAgICAgICAnX19sZW5fXycsICdfX2dldGl0ZW1fXycsICdfX3NldGl0ZW1fXycsICdfX2RlbGl0ZW1fXycsICdpbnNlcnQnKQogCisgICAgZGVmIHRlc3RfTXV0YWJsZVNlcXVlbmNlX21peGlucyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoZSBtaXhpbnMgb2YgTXV0YWJsZVNlcXVlbmNlIGJ5IGNyZWF0aW5nIGEgbWltaW5hbCBjb25jcmV0ZQorICAgICAgICAjIGNsYXNzIGluaGVyaXRlZCBmcm9tIGl0LgorICAgICAgICBjbGFzcyBNdXRhYmxlU2VxdWVuY2VTdWJjbGFzcyhNdXRhYmxlU2VxdWVuY2UpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYubHN0ID0gW10KKworICAgICAgICAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGluZGV4LCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgc2VsZi5sc3RbaW5kZXhdID0gdmFsdWUKKworICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGluZGV4KToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5sc3RbaW5kZXhdCisKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBsZW4oc2VsZi5sc3QpCisKKyAgICAgICAgICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBpbmRleCk6CisgICAgICAgICAgICAgICAgZGVsIHNlbGYubHN0W2luZGV4XQorCisgICAgICAgICAgICBkZWYgaW5zZXJ0KHNlbGYsIGluZGV4LCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgc2VsZi5sc3QuaW5zZXJ0KGluZGV4LCB2YWx1ZSkKKworICAgICAgICBtc3MgPSBNdXRhYmxlU2VxdWVuY2VTdWJjbGFzcygpCisgICAgICAgIG1zcy5hcHBlbmQoMCkKKyAgICAgICAgbXNzLmV4dGVuZCgoMSwgMiwgMywgNCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zcyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNzWzNdLCAzKQorICAgICAgICBtc3MucmV2ZXJzZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNzWzNdLCAxKQorICAgICAgICBtc3MucG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obXNzKSwgNCkKKyAgICAgICAgbXNzLnJlbW92ZSgzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtc3MpLCAzKQorICAgICAgICBtc3MgKz0gKDEwLCAyMCwgMzApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zcyksIDYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNzWy0xXSwgMzApCisgICAgICAgIG1zcy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zcyksIDApCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMgQ291bnRlcgpAQCAtOTE1LDYgKzk2NSwyNyBAQAogICAgICAgICAgICAgICAgIHNldF9yZXN1bHQgPSBzZXRvcChzZXQocC5lbGVtZW50cygpKSwgc2V0KHEuZWxlbWVudHMoKSkpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3VudGVyX3Jlc3VsdCwgZGljdC5mcm9ta2V5cyhzZXRfcmVzdWx0LCAxKSkKIAorICAgIGRlZiB0ZXN0X2lucGxhY2Vfb3BlcmF0aW9ucyhzZWxmKToKKyAgICAgICAgZWxlbWVudHMgPSAnYWJjZCcKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgICAgICAjIHRlc3QgcmFuZG9tIHBhaXJzIG9mIG11bHRpc2V0cworICAgICAgICAgICAgcCA9IENvdW50ZXIoZGljdCgoZWxlbSwgcmFuZHJhbmdlKC0yLDQpKSBmb3IgZWxlbSBpbiBlbGVtZW50cykpCisgICAgICAgICAgICBwLnVwZGF0ZShlPTEsIGY9LTEsIGc9MCkKKyAgICAgICAgICAgIHEgPSBDb3VudGVyKGRpY3QoKGVsZW0sIHJhbmRyYW5nZSgtMiw0KSkgZm9yIGVsZW0gaW4gZWxlbWVudHMpKQorICAgICAgICAgICAgcS51cGRhdGUoaD0xLCBpPS0xLCBqPTApCisgICAgICAgICAgICBmb3IgaW5wbGFjZV9vcCwgcmVndWxhcl9vcCBpbiBbCisgICAgICAgICAgICAgICAgKENvdW50ZXIuX19pYWRkX18sIENvdW50ZXIuX19hZGRfXyksCisgICAgICAgICAgICAgICAgKENvdW50ZXIuX19pc3ViX18sIENvdW50ZXIuX19zdWJfXyksCisgICAgICAgICAgICAgICAgKENvdW50ZXIuX19pb3JfXywgQ291bnRlci5fX29yX18pLAorICAgICAgICAgICAgICAgIChDb3VudGVyLl9faWFuZF9fLCBDb3VudGVyLl9fYW5kX18pLAorICAgICAgICAgICAgXToKKyAgICAgICAgICAgICAgICBjID0gcC5jb3B5KCkKKyAgICAgICAgICAgICAgICBjX2lkID0gaWQoYykKKyAgICAgICAgICAgICAgICByZWd1bGFyX3Jlc3VsdCA9IHJlZ3VsYXJfb3AoYywgcSkKKyAgICAgICAgICAgICAgICBpbnBsYWNlX3Jlc3VsdCA9IGlucGxhY2Vfb3AoYywgcSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlucGxhY2VfcmVzdWx0LCByZWd1bGFyX3Jlc3VsdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkKGlucGxhY2VfcmVzdWx0KSwgY19pZCkKKwogICAgIGRlZiB0ZXN0X3N1YnRyYWN0KHNlbGYpOgogICAgICAgICBjID0gQ291bnRlcihhPS01LCBiPTAsIGM9NSwgZD0xMCwgZT0xNSxnPTQwKQogICAgICAgICBjLnN1YnRyYWN0KGE9MSwgYj0yLCBjPS0zLCBkPTEwLCBlPTIwLCBmPTMwLCBoPS01MCkKQEAgLTkyNiw2ICs5OTcsMTEgQEAKICAgICAgICAgYy5zdWJ0cmFjdCgnYWFhYWJiY2NlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBDb3VudGVyKGE9LTEsIGI9MCwgYz0tMSwgZD0xLCBlPS0xKSkKIAorICAgIGRlZiB0ZXN0X3VuYXJ5KHNlbGYpOgorICAgICAgICBjID0gQ291bnRlcihhPS01LCBiPTAsIGM9NSwgZD0xMCwgZT0xNSxnPTQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpY3QoK2MpLCBkaWN0KGM9NSwgZD0xMCwgZT0xNSwgZz00MCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdCgtYyksIGRpY3QoYT01KSkKKwogICAgIGRlZiB0ZXN0X3JlcHJfbm9uc29ydGFibGUoc2VsZik6CiAgICAgICAgIGMgPSBDb3VudGVyKGE9MiwgYj1Ob25lKQogICAgICAgICByID0gcmVwcihjKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5CmluZGV4IDU4ZWYyOTcuLjEwNzFmNGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkKQEAgLTEsMTAgKzEsMTcgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IF9hc3QKK2ltcG9ydCB0eXBlcwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIFRlc3RTcGVjaWZpY3ModW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgZGVmIGNvbXBpbGVfc2luZ2xlKHNlbGYsIHNvdXJjZSk6CisgICAgICAgIGNvbXBpbGUoc291cmNlLCAiPHNpbmdsZT4iLCAic2luZ2xlIikKKworICAgIGRlZiBhc3NlcnRJbnZhbGlkU2luZ2xlKHNlbGYsIHNvdXJjZSk6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBzZWxmLmNvbXBpbGVfc2luZ2xlLCBzb3VyY2UpCisKICAgICBkZWYgdGVzdF9ub19lbmRpbmdfbmV3bGluZShzZWxmKToKICAgICAgICAgY29tcGlsZSgiaGkiLCAiPHRlc3Q+IiwgImV4ZWMiKQogICAgICAgICBjb21waWxlKCJoaVxyIiwgIjx0ZXN0PiIsICJleGVjIikKQEAgLTQzMyw2ICs0NDAsNjYgQEAKICAgICAgICAgYXN0LmJvZHkgPSBbX2FzdC5Cb29sT3AoKV0KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21waWxlLCBhc3QsICc8YXN0PicsICdleGVjJykKIAorICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3NhbWVfZmlsZW5hbWVfdXNlZChzZWxmKToKKyAgICAgICAgcyA9ICIiImRlZiBmKCk6IHBhc3NcbmRlZiBnKCk6IHBhc3MiIiIKKyAgICAgICAgYyA9IGNvbXBpbGUocywgIm15ZmlsZSIsICJleGVjIikKKyAgICAgICAgZm9yIG9iaiBpbiBjLmNvX2NvbnN0czoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5Db2RlVHlwZSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhvYmouY29fZmlsZW5hbWUsIGMuY29fZmlsZW5hbWUpCisKKyAgICBkZWYgdGVzdF9zaW5nbGVfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCIxICsgMiIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoIlxuMSArIDIiKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCIxICsgMlxuIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiMSArIDJcblxuIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiMSArIDJcdFx0XG4iKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCIxICsgMlx0XHRcbiAgICAgICAgIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiMSArIDIgIyBvbmUgcGx1cyB0d28iKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCIxOyAyIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiaW1wb3J0IHN5czsgc3lzIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiZGVmIGYoKTpcbiAgIHBhc3MiKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCJ3aGlsZSBGYWxzZTpcbiAgIHBhc3MiKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCJpZiB4OlxuICAgZih4KSIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoImlmIHg6XG4gICBmKHgpXG5lbHNlOlxuICAgZyh4KSIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoImNsYXNzIFQ6XG4gICBwYXNzIikKKworICAgIGRlZiB0ZXN0X2JhZF9zaW5nbGVfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEludmFsaWRTaW5nbGUoJzFcbjInKQorICAgICAgICBzZWxmLmFzc2VydEludmFsaWRTaW5nbGUoJ2RlZiBmKCk6IHBhc3MnKQorICAgICAgICBzZWxmLmFzc2VydEludmFsaWRTaW5nbGUoJ2EgPSAxM1xuYiA9IDE4NycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW52YWxpZFNpbmdsZSgnZGVsIHhcbmRlbCB5JykKKyAgICAgICAgc2VsZi5hc3NlcnRJbnZhbGlkU2luZ2xlKCdmKClcbmcoKScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW52YWxpZFNpbmdsZSgnZigpXG4jIGJsYWhcbmJsYWgoKScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW52YWxpZFNpbmdsZSgnZigpXG54eSAjIGJsYWhcbmJsYWgoKScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW52YWxpZFNpbmdsZSgneCA9IDUgIyBjb21tZW50XG54ID0gNlxuJykKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2NvbXBpbGVyX3JlY3Vyc2lvbl9saW1pdChzZWxmKToKKyAgICAgICAgIyBFeHBlY3RlZCBsaW1pdCBpcyBzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKSAqIHRoZSBzY2FsaW5nIGZhY3RvcgorICAgICAgICAjIGluIHN5bXRhYmxlLmMgKGN1cnJlbnRseSAzKQorICAgICAgICAjIFdlIGV4cGVjdCB0byBmYWlsICphdCogdGhhdCBsaW1pdCwgYmVjYXVzZSB3ZSB1c2UgdXAgc29tZSBvZgorICAgICAgICAjIHRoZSBzdGFjayBkZXB0aCBsaW1pdCBpbiB0aGUgdGVzdCBzdWl0ZSBjb2RlCisgICAgICAgICMgU28gd2UgY2hlY2sgdGhlIGV4cGVjdGVkIGxpbWl0IGFuZCA3NSUgb2YgdGhhdAorICAgICAgICAjIFhYWCAobmNvZ2hsYW4pOiBkdXBsaWNhdGluZyB0aGUgc2NhbGluZyBmYWN0b3IgaGVyZSBpcyBhIGxpdHRsZQorICAgICAgICAjIHVnbHkuIFBlcmhhcHMgaXQgc2hvdWxkIGJlIGV4cG9zZWQgc29tZXdoZXJlLi4uCisgICAgICAgIGZhaWxfZGVwdGggPSBzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKSAqIDMKKyAgICAgICAgc3VjY2Vzc19kZXB0aCA9IGludChmYWlsX2RlcHRoICogMC43NSkKKworICAgICAgICBkZWYgY2hlY2tfbGltaXQocHJlZml4LCByZXBlYXRlZCk6CisgICAgICAgICAgICBleHBlY3Rfb2sgPSBwcmVmaXggKyByZXBlYXRlZCAqIHN1Y2Nlc3NfZGVwdGgKKyAgICAgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoZXhwZWN0X29rKQorICAgICAgICAgICAgYnJva2VuID0gcHJlZml4ICsgcmVwZWF0ZWQgKiBmYWlsX2RlcHRoCisgICAgICAgICAgICBkZXRhaWxzID0gIkNvbXBpbGluZyAoeyFyfSArIHshcn0gKiB7fSkiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHJlcGVhdGVkLCBmYWlsX2RlcHRoKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG1zZz1kZXRhaWxzKToKKyAgICAgICAgICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKGJyb2tlbikKKworICAgICAgICBjaGVja19saW1pdCgiYSIsICIoKSIpCisgICAgICAgIGNoZWNrX2xpbWl0KCJhIiwgIi5iIikKKyAgICAgICAgY2hlY2tfbGltaXQoImEiLCAiWzBdIikKKyAgICAgICAgY2hlY2tfbGltaXQoImEiLCAiKmEiKQorCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0U3BlY2lmaWNzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb25jdXJyZW50X2Z1dHVyZXMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQppbmRleCAyYWZhOTM4Li42YWU0NTBkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQpAQCAtMTksNyArMTksNyBAQAogZnJvbSBjb25jdXJyZW50IGltcG9ydCBmdXR1cmVzCiBmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcy5fYmFzZSBpbXBvcnQgKAogICAgIFBFTkRJTkcsIFJVTk5JTkcsIENBTkNFTExFRCwgQ0FOQ0VMTEVEX0FORF9OT1RJRklFRCwgRklOSVNIRUQsIEZ1dHVyZSkKLWltcG9ydCBjb25jdXJyZW50LmZ1dHVyZXMucHJvY2VzcworZnJvbSBjb25jdXJyZW50LmZ1dHVyZXMucHJvY2VzcyBpbXBvcnQgQnJva2VuUHJvY2Vzc1Bvb2wKIAogCiBkZWYgY3JlYXRlX2Z1dHVyZShzdGF0ZT1QRU5ESU5HLCBleGNlcHRpb249Tm9uZSwgcmVzdWx0PU5vbmUpOgpAQCAtMzQsNyArMzQsNyBAQAogUlVOTklOR19GVVRVUkUgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPVJVTk5JTkcpCiBDQU5DRUxMRURfRlVUVVJFID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1DQU5DRUxMRUQpCiBDQU5DRUxMRURfQU5EX05PVElGSUVEX0ZVVFVSRSA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9Q0FOQ0VMTEVEX0FORF9OT1RJRklFRCkKLUVYQ0VQVElPTl9GVVRVUkUgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPUZJTklTSEVELCBleGNlcHRpb249SU9FcnJvcigpKQorRVhDRVBUSU9OX0ZVVFVSRSA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9RklOSVNIRUQsIGV4Y2VwdGlvbj1PU0Vycm9yKCkpCiBTVUNDRVNTRlVMX0ZVVFVSRSA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9RklOSVNIRUQsIHJlc3VsdD00MikKIAogCkBAIC0xNjAsNyArMTYwLDcgQEAKICAgICAgICAgcHJvY2Vzc2VzID0gc2VsZi5leGVjdXRvci5fcHJvY2Vzc2VzCiAgICAgICAgIHNlbGYuZXhlY3V0b3Iuc2h1dGRvd24oKQogCi0gICAgICAgIGZvciBwIGluIHByb2Nlc3NlczoKKyAgICAgICAgZm9yIHAgaW4gcHJvY2Vzc2VzLnZhbHVlcygpOgogICAgICAgICAgICAgcC5qb2luKCkKIAogICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcl9zaHV0ZG93bihzZWxmKToKQEAgLTE2OSw3ICsxNjksNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGUubWFwKGFicywgcmFuZ2UoLTUsIDUpKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs1LCA0LCAzLCAyLCAxLCAwLCAxLCAyLCAzLCA0XSkKIAotICAgICAgICBmb3IgcCBpbiBwcm9jZXNzZXM6CisgICAgICAgIGZvciBwIGluIHByb2Nlc3Nlcy52YWx1ZXMoKToKICAgICAgICAgICAgIHAuam9pbigpCiAKICAgICBkZWYgdGVzdF9kZWxfc2h1dGRvd24oc2VsZik6CkBAIC0xODAsNyArMTgwLDcgQEAKICAgICAgICAgZGVsIGV4ZWN1dG9yCiAKICAgICAgICAgcXVldWVfbWFuYWdlbWVudF90aHJlYWQuam9pbigpCi0gICAgICAgIGZvciBwIGluIHByb2Nlc3NlczoKKyAgICAgICAgZm9yIHAgaW4gcHJvY2Vzc2VzLnZhbHVlcygpOgogICAgICAgICAgICAgcC5qb2luKCkKIAogCkBAIC0yNjgsMTQgKzI2OCwxNCBAQAogCiAgICAgZGVmIHRlc3RfdGltZW91dChzZWxmKToKICAgICAgICAgZnV0dXJlMSA9IHNlbGYuZXhlY3V0b3Iuc3VibWl0KG11bCwgNiwgNykKLSAgICAgICAgZnV0dXJlMiA9IHNlbGYuZXhlY3V0b3Iuc3VibWl0KHRpbWUuc2xlZXAsIDMpCisgICAgICAgIGZ1dHVyZTIgPSBzZWxmLmV4ZWN1dG9yLnN1Ym1pdCh0aW1lLnNsZWVwLCA2KQogCiAgICAgICAgIGZpbmlzaGVkLCBwZW5kaW5nID0gZnV0dXJlcy53YWl0KAogICAgICAgICAgICAgICAgIFtDQU5DRUxMRURfQU5EX05PVElGSUVEX0ZVVFVSRSwKICAgICAgICAgICAgICAgICAgRVhDRVBUSU9OX0ZVVFVSRSwKICAgICAgICAgICAgICAgICAgU1VDQ0VTU0ZVTF9GVVRVUkUsCiAgICAgICAgICAgICAgICAgIGZ1dHVyZTEsIGZ1dHVyZTJdLAotICAgICAgICAgICAgICAgIHRpbWVvdXQ9MS41LAorICAgICAgICAgICAgICAgIHRpbWVvdXQ9NSwKICAgICAgICAgICAgICAgICByZXR1cm5fd2hlbj1mdXR1cmVzLkFMTF9DT01QTEVURUQpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoW0NBTkNFTExFRF9BTkRfTk9USUZJRURfRlVUVVJFLApAQCAtMzc5LDggKzM3OSw4IEBACiAgICAgICAgIHJlc3VsdHMgPSBbXQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmb3IgaSBpbiBzZWxmLmV4ZWN1dG9yLm1hcCh0aW1lLnNsZWVwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDAsIDNdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0xLjUpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDAsIDZdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD01KToKICAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChpKQogICAgICAgICBleGNlcHQgZnV0dXJlcy5UaW1lb3V0RXJyb3I6CiAgICAgICAgICAgICBwYXNzCkBAIC0zODksMTMgKzM4OSwzOCBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW05vbmUsIE5vbmVdLCByZXN1bHRzKQogCisgICAgZGVmIHRlc3Rfc2h1dGRvd25fcmFjZV9pc3N1ZTEyNDU2KHNlbGYpOgorICAgICAgICAjIElzc3VlICMxMjQ1NjogcmFjZSBjb25kaXRpb24gYXQgc2h1dGRvd24gd2hlcmUgdHJ5aW5nIHRvIHBvc3QgYQorICAgICAgICAjIHNlbnRpbmVsIGluIHRoZSBjYWxsIHF1ZXVlIGJsb2NrcyAodGhlIHF1ZXVlIGlzIGZ1bGwgd2hpbGUgcHJvY2Vzc2VzCisgICAgICAgICMgaGF2ZSBleGl0ZWQpLgorICAgICAgICBzZWxmLmV4ZWN1dG9yLm1hcChzdHIsIFsyXSAqIChzZWxmLndvcmtlcl9jb3VudCArIDEpKQorICAgICAgICBzZWxmLmV4ZWN1dG9yLnNodXRkb3duKCkKKwogCiBjbGFzcyBUaHJlYWRQb29sRXhlY3V0b3JUZXN0KFRocmVhZFBvb2xNaXhpbiwgRXhlY3V0b3JUZXN0KToKLSAgICBwYXNzCisgICAgZGVmIHRlc3RfbWFwX3N1Ym1pdHNfd2l0aG91dF9pdGVyYXRpb24oc2VsZik6CisgICAgICAgICIiIlRlc3RzIHZlcmlmeWluZyBpc3N1ZSAxMTc3Ny4iIiIKKyAgICAgICAgZmluaXNoZWQgPSBbXQorICAgICAgICBkZWYgcmVjb3JkX2ZpbmlzaGVkKG4pOgorICAgICAgICAgICAgZmluaXNoZWQuYXBwZW5kKG4pCisKKyAgICAgICAgc2VsZi5leGVjdXRvci5tYXAocmVjb3JkX2ZpbmlzaGVkLCByYW5nZSgxMCkpCisgICAgICAgIHNlbGYuZXhlY3V0b3Iuc2h1dGRvd24od2FpdD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydENvdW50RXF1YWwoZmluaXNoZWQsIHJhbmdlKDEwKSkKIAogCiBjbGFzcyBQcm9jZXNzUG9vbEV4ZWN1dG9yVGVzdChQcm9jZXNzUG9vbE1peGluLCBFeGVjdXRvclRlc3QpOgotICAgIHBhc3MKKyAgICBkZWYgdGVzdF9raWxsZWRfY2hpbGQoc2VsZik6CisgICAgICAgICMgV2hlbiBhIGNoaWxkIHByb2Nlc3MgaXMgYWJydXB0bHkgdGVybWluYXRlZCwgdGhlIHdob2xlIHBvb2wgZ2V0cworICAgICAgICAjICJicm9rZW4iLgorICAgICAgICBmdXR1cmVzID0gW3NlbGYuZXhlY3V0b3Iuc3VibWl0KHRpbWUuc2xlZXAsIDMpXQorICAgICAgICAjIEdldCBvbmUgb2YgdGhlIHByb2Nlc3NlcywgYW5kIHRlcm1pbmF0ZSAoa2lsbCkgaXQKKyAgICAgICAgcCA9IG5leHQoaXRlcihzZWxmLmV4ZWN1dG9yLl9wcm9jZXNzZXMudmFsdWVzKCkpKQorICAgICAgICBwLnRlcm1pbmF0ZSgpCisgICAgICAgIGZvciBmdXQgaW4gZnV0dXJlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJyb2tlblByb2Nlc3NQb29sLCBmdXQucmVzdWx0KQorICAgICAgICAjIFN1Ym1pdHRpbmcgb3RoZXIgam9icyBmYWlscyBhcyB3ZWxsLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCcm9rZW5Qcm9jZXNzUG9vbCwgc2VsZi5leGVjdXRvci5zdWJtaXQsIHBvdywgMiwgOCkKIAogCiBjbGFzcyBGdXR1cmVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC00OTgsNyArNTIzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAnPEZ1dHVyZSBhdCAweFswLTlhLWZdKyBzdGF0ZT1jYW5jZWxsZWQ+JykKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCgKICAgICAgICAgICAgICAgICByZXByKEVYQ0VQVElPTl9GVVRVUkUpLAotICAgICAgICAgICAgICAgICc8RnV0dXJlIGF0IDB4WzAtOWEtZl0rIHN0YXRlPWZpbmlzaGVkIHJhaXNlZCBJT0Vycm9yPicpCisgICAgICAgICAgICAgICAgJzxGdXR1cmUgYXQgMHhbMC05YS1mXSsgc3RhdGU9ZmluaXNoZWQgcmFpc2VkIE9TRXJyb3I+JykKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCgKICAgICAgICAgICAgICAgICByZXByKFNVQ0NFU1NGVUxfRlVUVVJFKSwKICAgICAgICAgICAgICAgICAnPEZ1dHVyZSBhdCAweFswLTlhLWZdKyBzdGF0ZT1maW5pc2hlZCByZXR1cm5lZCBpbnQ+JykKQEAgLTUwOSw3ICs1MzQsNyBAQAogICAgICAgICBmMiA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9UlVOTklORykKICAgICAgICAgZjMgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPUNBTkNFTExFRCkKICAgICAgICAgZjQgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPUNBTkNFTExFRF9BTkRfTk9USUZJRUQpCi0gICAgICAgIGY1ID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1GSU5JU0hFRCwgZXhjZXB0aW9uPUlPRXJyb3IoKSkKKyAgICAgICAgZjUgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPUZJTklTSEVELCBleGNlcHRpb249T1NFcnJvcigpKQogICAgICAgICBmNiA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9RklOSVNIRUQsIHJlc3VsdD01KQogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmMS5jYW5jZWwoKSkKQEAgLTU2Myw3ICs1ODgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBDQU5DRUxMRURfRlVUVVJFLnJlc3VsdCwgdGltZW91dD0wKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhmdXR1cmVzLkNhbmNlbGxlZEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICBDQU5DRUxMRURfQU5EX05PVElGSUVEX0ZVVFVSRS5yZXN1bHQsIHRpbWVvdXQ9MCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgRVhDRVBUSU9OX0ZVVFVSRS5yZXN1bHQsIHRpbWVvdXQ9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgRVhDRVBUSU9OX0ZVVFVSRS5yZXN1bHQsIHRpbWVvdXQ9MCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTVUNDRVNTRlVMX0ZVVFVSRS5yZXN1bHQodGltZW91dD0wKSwgNDIpCiAKICAgICBkZWYgdGVzdF9yZXN1bHRfd2l0aF9zdWNjZXNzKHNlbGYpOgpAQCAtNjAyLDcgKzYyNyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGZ1dHVyZXMuQ2FuY2VsbGVkRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIENBTkNFTExFRF9BTkRfTk9USUZJRURfRlVUVVJFLmV4Y2VwdGlvbiwgdGltZW91dD0wKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShFWENFUFRJT05fRlVUVVJFLmV4Y2VwdGlvbih0aW1lb3V0PTApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT0Vycm9yKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1NFcnJvcikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU1VDQ0VTU0ZVTF9GVVRVUkUuZXhjZXB0aW9uKHRpbWVvdXQ9MCksIE5vbmUpCiAKICAgICBkZWYgdGVzdF9leGNlcHRpb25fd2l0aF9zdWNjZXNzKHNlbGYpOgpAQCAtNjExLDE0ICs2MzYsMTQgQEAKICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKICAgICAgICAgICAgIHdpdGggZjEuX2NvbmRpdGlvbjoKICAgICAgICAgICAgICAgICBmMS5fc3RhdGUgPSBGSU5JU0hFRAotICAgICAgICAgICAgICAgIGYxLl9leGNlcHRpb24gPSBJT0Vycm9yKCkKKyAgICAgICAgICAgICAgICBmMS5fZXhjZXB0aW9uID0gT1NFcnJvcigpCiAgICAgICAgICAgICAgICAgZjEuX2NvbmRpdGlvbi5ub3RpZnlfYWxsKCkKIAogICAgICAgICBmMSA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9UEVORElORykKICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PW5vdGlmaWNhdGlvbikKICAgICAgICAgdC5zdGFydCgpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZjEuZXhjZXB0aW9uKHRpbWVvdXQ9NSksIElPRXJyb3IpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShmMS5leGNlcHRpb24odGltZW91dD01KSwgT1NFcnJvcikpCiAKIEB0ZXN0LnN1cHBvcnQucmVhcF90aHJlYWRzCiBkZWYgdGVzdF9tYWluKCk6CkBAIC02MzEsNyArNjU2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWRQb29sQXNDb21wbGV0ZWRUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdXR1cmVUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jZXNzUG9vbFNodXRkb3duVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWRQb29sU2h1dGRvd25UZXN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZFBvb2xTaHV0ZG93blRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgIGZpbmFsbHk6CiAgICAgICAgIHRlc3Quc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jZmdwYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X2NmZ3BhcnNlci5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKaW5kZXggY2VjOWI0NC4uZmM1NjU1MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jZmdwYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKQEAgLTMyLDcgKzMyLDcgQEAKICAgICBfX2l0ZXJfXyA9IGl0ZXJrZXlzCiAKIAotY2xhc3MgQ2ZnUGFyc2VyVGVzdENhc2VDbGFzcyh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBDZmdQYXJzZXJUZXN0Q2FzZUNsYXNzOgogICAgIGFsbG93X25vX3ZhbHVlID0gRmFsc2UKICAgICBkZWxpbWl0ZXJzID0gKCc9JywgJzonKQogICAgIGNvbW1lbnRfcHJlZml4ZXMgPSAoJzsnLCAnIycpCkBAIC04MjIsMTQgKzgyMiwyMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChjZlsnc2VjdGlvbjMnXS5rZXlzKCkpLCB7J25hbWVkJ30pCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ25hbWUzJywgY2ZbJ3NlY3Rpb24zJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2Yuc2VjdGlvbnMoKSwgWydzZWN0aW9uMScsICdzZWN0aW9uMicsICdzZWN0aW9uMyddKQorICAgICAgICBjZltzZWxmLmRlZmF1bHRfc2VjdGlvbl0gPSB7fQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChjZltzZWxmLmRlZmF1bHRfc2VjdGlvbl0ua2V5cygpKSwgc2V0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGNmWydzZWN0aW9uMSddLmtleXMoKSksIHsnbmFtZTEnfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoY2ZbJ3NlY3Rpb24yJ10ua2V5cygpKSwgeyduYW1lMjInfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoY2ZbJ3NlY3Rpb24zJ10ua2V5cygpKSwgc2V0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2Yuc2VjdGlvbnMoKSwgWydzZWN0aW9uMScsICdzZWN0aW9uMicsICdzZWN0aW9uMyddKQogCiAKLWNsYXNzIFN0cmljdFRlc3RDYXNlKEJhc2ljVGVzdENhc2UpOgorY2xhc3MgU3RyaWN0VGVzdENhc2UoQmFzaWNUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGNvbmZpZ19jbGFzcyA9IGNvbmZpZ3BhcnNlci5SYXdDb25maWdQYXJzZXIKICAgICBzdHJpY3QgPSBUcnVlCiAKIAotY2xhc3MgQ29uZmlnUGFyc2VyVGVzdENhc2UoQmFzaWNUZXN0Q2FzZSk6CitjbGFzcyBDb25maWdQYXJzZXJUZXN0Q2FzZShCYXNpY1Rlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgY29uZmlnX2NsYXNzID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcgogCiAgICAgZGVmIHRlc3RfaW50ZXJwb2xhdGlvbihzZWxmKToKQEAgLTkxOCw3ICs5MjQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjZi5hZGRfc2VjdGlvbiwgc2VsZi5kZWZhdWx0X3NlY3Rpb24pCiAKIAotY2xhc3MgQ29uZmlnUGFyc2VyVGVzdENhc2VOb0ludGVycG9sYXRpb24oQmFzaWNUZXN0Q2FzZSk6CitjbGFzcyBDb25maWdQYXJzZXJUZXN0Q2FzZU5vSW50ZXJwb2xhdGlvbihCYXNpY1Rlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgY29uZmlnX2NsYXNzID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcgogICAgIGludGVycG9sYXRpb24gPSBOb25lCiAgICAgaW5pID0gdGV4dHdyYXAuZGVkZW50KCIiIgpAQCAtOTgzLDcgKzk4OSw3IEBACiBjbGFzcyBDb25maWdQYXJzZXJUZXN0Q2FzZU5vblN0YW5kYXJkRGVmYXVsdFNlY3Rpb24oQ29uZmlnUGFyc2VyVGVzdENhc2UpOgogICAgIGRlZmF1bHRfc2VjdGlvbiA9ICdnZW5lcmFsJwogCi1jbGFzcyBNdWx0aWxpbmVWYWx1ZXNUZXN0Q2FzZShCYXNpY1Rlc3RDYXNlKToKK2NsYXNzIE11bHRpbGluZVZhbHVlc1Rlc3RDYXNlKEJhc2ljVGVzdENhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBjb25maWdfY2xhc3MgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyCiAgICAgd29uZGVyZnVsX3NwYW0gPSAoIkknbSBoYXZpbmcgc3BhbSBzcGFtIHNwYW0gc3BhbSAiCiAgICAgICAgICAgICAgICAgICAgICAgInNwYW0gc3BhbSBzcGFtIGJlYWtlZCBiZWFucyBzcGFtICIKQEAgLTEwMTEsNyArMTAxNyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZfZnJvbV9maWxlLmdldCgnc2VjdGlvbjgnLCAnbG92ZWx5X3NwYW00JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi53b25kZXJmdWxfc3BhbS5yZXBsYWNlKCdcdFxuJywgJ1xuJykpCiAKLWNsYXNzIFJhd0NvbmZpZ1BhcnNlclRlc3RDYXNlKEJhc2ljVGVzdENhc2UpOgorY2xhc3MgUmF3Q29uZmlnUGFyc2VyVGVzdENhc2UoQmFzaWNUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGNvbmZpZ19jbGFzcyA9IGNvbmZpZ3BhcnNlci5SYXdDb25maWdQYXJzZXIKIAogICAgIGRlZiB0ZXN0X2ludGVycG9sYXRpb24oc2VsZik6CkBAIC0xMDU4LDcgKzEwNjQsNyBAQAogICAgIGNvbW1lbnRfcHJlZml4ZXMgPSAoJy8vJywgJyInKQogICAgIGlubGluZV9jb21tZW50X3ByZWZpeGVzID0gKCcvLycsICciJykKIAotY2xhc3MgUmF3Q29uZmlnUGFyc2VyVGVzdFNhbWJhQ29uZihDZmdQYXJzZXJUZXN0Q2FzZUNsYXNzKToKK2NsYXNzIFJhd0NvbmZpZ1BhcnNlclRlc3RTYW1iYUNvbmYoQ2ZnUGFyc2VyVGVzdENhc2VDbGFzcywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGNvbmZpZ19jbGFzcyA9IGNvbmZpZ3BhcnNlci5SYXdDb25maWdQYXJzZXIKICAgICBjb21tZW50X3ByZWZpeGVzID0gKCcjJywgJzsnLCAnLS0tLScpCiAgICAgaW5saW5lX2NvbW1lbnRfcHJlZml4ZXMgPSAoJy8vJywpCkBAIC0xMDc4LDcgKzEwODQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmLmdldCgiZ2xvYmFsIiwgImhvc3RzIGFsbG93IiksICIxMjcuIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZi5nZXQoInRtcCIsICJlY2hvIGNvbW1hbmQiKSwgImNhdCAlczsgcm0gJXMiKQogCi1jbGFzcyBDb25maWdQYXJzZXJUZXN0Q2FzZUV4dGVuZGVkSW50ZXJwb2xhdGlvbihCYXNpY1Rlc3RDYXNlKToKK2NsYXNzIENvbmZpZ1BhcnNlclRlc3RDYXNlRXh0ZW5kZWRJbnRlcnBvbGF0aW9uKEJhc2ljVGVzdENhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBjb25maWdfY2xhc3MgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyCiAgICAgaW50ZXJwb2xhdGlvbiA9IGNvbmZpZ3BhcnNlci5FeHRlbmRlZEludGVycG9sYXRpb24oKQogICAgIGRlZmF1bHRfc2VjdGlvbiA9ICdjb21tb24nCkBAIC0xMjUyLDcgKzEyNTgsNyBAQAogY2xhc3MgQ29uZmlnUGFyc2VyVGVzdENhc2VOb1ZhbHVlKENvbmZpZ1BhcnNlclRlc3RDYXNlKToKICAgICBhbGxvd19ub192YWx1ZSA9IFRydWUKIAotY2xhc3MgQ29uZmlnUGFyc2VyVGVzdENhc2VUcmlja3lGaWxlKENmZ1BhcnNlclRlc3RDYXNlQ2xhc3MpOgorY2xhc3MgQ29uZmlnUGFyc2VyVGVzdENhc2VUcmlja3lGaWxlKENmZ1BhcnNlclRlc3RDYXNlQ2xhc3MsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBjb25maWdfY2xhc3MgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyCiAgICAgZGVsaW1pdGVycyA9IHsnPSd9CiAgICAgY29tbWVudF9wcmVmaXhlcyA9IHsnIyd9CkBAIC0xMzQ5LDcgKzEzNTUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJvNCA9IDFcblxuIikKIAogCi1jbGFzcyBDb21wYXRpYmxlVGVzdENhc2UoQ2ZnUGFyc2VyVGVzdENhc2VDbGFzcyk6CitjbGFzcyBDb21wYXRpYmxlVGVzdENhc2UoQ2ZnUGFyc2VyVGVzdENhc2VDbGFzcywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGNvbmZpZ19jbGFzcyA9IGNvbmZpZ3BhcnNlci5SYXdDb25maWdQYXJzZXIKICAgICBjb21tZW50X3ByZWZpeGVzID0gJyM7JwogICAgIGlubGluZV9jb21tZW50X3ByZWZpeGVzID0gJzsnCkBAIC0xMzcxLDcgKzEzNzcsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmLmdldCgnQ29tbWVudGVkIEJhcicsICdxdWlyaycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlzO2lzIG5vdCBhIGNvbW1lbnQnKQogCi1jbGFzcyBDb3B5VGVzdENhc2UoQmFzaWNUZXN0Q2FzZSk6CitjbGFzcyBDb3B5VGVzdENhc2UoQmFzaWNUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGNvbmZpZ19jbGFzcyA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIKIAogICAgIGRlZiBmcm9tc3RyaW5nKHNlbGYsIHN0cmluZywgZGVmYXVsdHM9Tm9uZSk6CkBAIC0xNjcxLDI2ICsxNjc3LDQxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihlMSksIHJlcHIoZTIpKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgQ29uZmlnUGFyc2VyVGVzdENhc2UsCi0gICAgICAgIENvbmZpZ1BhcnNlclRlc3RDYXNlTm9uU3RhbmRhcmREZWxpbWl0ZXJzLAotICAgICAgICBDb25maWdQYXJzZXJUZXN0Q2FzZU5vVmFsdWUsCi0gICAgICAgIENvbmZpZ1BhcnNlclRlc3RDYXNlRXh0ZW5kZWRJbnRlcnBvbGF0aW9uLAotICAgICAgICBDb25maWdQYXJzZXJUZXN0Q2FzZUxlZ2FjeUludGVycG9sYXRpb24sCi0gICAgICAgIENvbmZpZ1BhcnNlclRlc3RDYXNlTm9JbnRlcnBvbGF0aW9uLAotICAgICAgICBDb25maWdQYXJzZXJUZXN0Q2FzZVRyaWNreUZpbGUsCi0gICAgICAgIE11bHRpbGluZVZhbHVlc1Rlc3RDYXNlLAotICAgICAgICBSYXdDb25maWdQYXJzZXJUZXN0Q2FzZSwKLSAgICAgICAgUmF3Q29uZmlnUGFyc2VyVGVzdENhc2VOb25TdGFuZGFyZERlbGltaXRlcnMsCi0gICAgICAgIFJhd0NvbmZpZ1BhcnNlclRlc3RTYW1iYUNvbmYsCi0gICAgICAgIFNvcnRlZFRlc3RDYXNlLAotICAgICAgICBJc3N1ZTcwMDVUZXN0Q2FzZSwKLSAgICAgICAgU3RyaWN0VGVzdENhc2UsCi0gICAgICAgIENvbXBhdGlibGVUZXN0Q2FzZSwKLSAgICAgICAgQ29weVRlc3RDYXNlLAotICAgICAgICBDb25maWdQYXJzZXJUZXN0Q2FzZU5vblN0YW5kYXJkRGVmYXVsdFNlY3Rpb24sCi0gICAgICAgIFJlYWRGaWxlVGVzdENhc2UsCi0gICAgICAgIENvdmVyYWdlT25lSHVuZHJlZFRlc3RDYXNlLAotICAgICAgICBFeGNlcHRpb25QaWNrbGluZ1Rlc3RDYXNlLAotICAgICAgICApCitjbGFzcyBJbmxpbmVDb21tZW50U3RyaXBwaW5nVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIGZvciBpc3N1ZSAjMTQ1OTA6IENvbmZpZ1BhcnNlciBkb2Vzbid0IHN0cmlwIGlubGluZSBjb21tZW50IHdoZW4KKyAgICBkZWxpbWl0ZXIgb2NjdXJzIGVhcmxpZXIgd2l0aG91dCBwcmVjZWRpbmcgc3BhY2UuLiIiIgorCisgICAgZGVmIHRlc3Rfc3RyaXBwaW5nKHNlbGYpOgorICAgICAgICBjZmcgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyKGlubGluZV9jb21tZW50X3ByZWZpeGVzPSgnOycsICcjJywKKyAgICAgICAgICAgICAgICAnLy8nKSkKKyAgICAgICAgY2ZnLnJlYWRfc3RyaW5nKCIiIgorICAgICAgICBbc2VjdGlvbl0KKyAgICAgICAgazEgPSB2MTtzdGlsbCB2MQorICAgICAgICBrMiA9IHYyIDthIGNvbW1lbnQKKyAgICAgICAgazMgPSB2MyA7IGFsc28gYSBjb21tZW50CisgICAgICAgIGs0ID0gdjQ7c3RpbGwgdjQgO2EgY29tbWVudAorICAgICAgICBrNSA9IHY1O3N0aWxsIHY1IDsgYWxzbyBhIGNvbW1lbnQKKyAgICAgICAgazYgPSB2NjtzdGlsbCB2NjsgYW5kIHN0aWxsIHY2IDthIGNvbW1lbnQKKyAgICAgICAgazcgPSB2NztzdGlsbCB2NzsgYW5kIHN0aWxsIHY3IDsgYWxzbyBhIGNvbW1lbnQKKworICAgICAgICBbbXVsdGlwcmVmaXhdCisgICAgICAgIGsxID0gdjE7c3RpbGwgdjEgI2EgY29tbWVudCA7IHllYWgsIHByZXR0eSBtdWNoCisgICAgICAgIGsyID0gdjIgLy8gdGhpcyBhbHJlYWR5IGlzIGEgY29tbWVudCA7IGNvbnRpbnVlZAorICAgICAgICBrMyA9IHYzOyMvL3N0aWxsIHYzIyBhbmQgc3RpbGwgdjMgOyBhIGNvbW1lbnQKKyAgICAgICAgIiIiKQorICAgICAgICBzID0gY2ZnWydzZWN0aW9uJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydrMSddLCAndjE7c3RpbGwgdjEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2syJ10sICd2MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazMnXSwgJ3YzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydrNCddLCAndjQ7c3RpbGwgdjQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2s1J10sICd2NTtzdGlsbCB2NScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazYnXSwgJ3Y2O3N0aWxsIHY2OyBhbmQgc3RpbGwgdjYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2s3J10sICd2NztzdGlsbCB2NzsgYW5kIHN0aWxsIHY3JykKKyAgICAgICAgcyA9IGNmZ1snbXVsdGlwcmVmaXgnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2sxJ10sICd2MTtzdGlsbCB2MScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazInXSwgJ3YyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydrMyddLCAndjM7Iy8vc3RpbGwgdjMjIGFuZCBzdGlsbCB2MycpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weQppbmRleCA2ZTM4MzA1Li5lNTJlZDkxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5CkBAIC0zNzAsNiArMzcwLDIzMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXRlLCBbMSwgJ3NvbWV0aGluZyBlbHNlJywgOTk5XSkKIAogCitjbGFzcyBUZXN0RXhpdFN0YWNrKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X25vX3Jlc291cmNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBFeGl0U3RhY2soKToKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2NhbGxiYWNrKHNlbGYpOgorICAgICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICgoKSwge30pLAorICAgICAgICAgICAgKCgxLCksIHt9KSwKKyAgICAgICAgICAgICgoMSwyKSwge30pLAorICAgICAgICAgICAgKCgpLCBkaWN0KGV4YW1wbGU9MSkpLAorICAgICAgICAgICAgKCgxLCksIGRpY3QoZXhhbXBsZT0xKSksCisgICAgICAgICAgICAoKDEsMiksIGRpY3QoZXhhbXBsZT0xKSksCisgICAgICAgIF0KKyAgICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgZGVmIF9leGl0KCphcmdzLCAqKmt3ZHMpOgorICAgICAgICAgICAgIiIiVGVzdCBtZXRhZGF0YSBwcm9wYWdhdGlvbiIiIgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgoYXJncywga3dkcykpCisgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICBmb3IgYXJncywga3dkcyBpbiByZXZlcnNlZChleHBlY3RlZCk6CisgICAgICAgICAgICAgICAgaWYgYXJncyBhbmQga3dkczoKKyAgICAgICAgICAgICAgICAgICAgZiA9IHN0YWNrLmNhbGxiYWNrKF9leGl0LCAqYXJncywgKiprd2RzKQorICAgICAgICAgICAgICAgIGVsaWYgYXJnczoKKyAgICAgICAgICAgICAgICAgICAgZiA9IHN0YWNrLmNhbGxiYWNrKF9leGl0LCAqYXJncykKKyAgICAgICAgICAgICAgICBlbGlmIGt3ZHM6CisgICAgICAgICAgICAgICAgICAgIGYgPSBzdGFjay5jYWxsYmFjayhfZXhpdCwgKiprd2RzKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGYgPSBzdGFjay5jYWxsYmFjayhfZXhpdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGYsIF9leGl0KQorICAgICAgICAgICAgZm9yIHdyYXBwZXIgaW4gc3RhY2suX2V4aXRfY2FsbGJhY2tzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMod3JhcHBlci5fX3dyYXBwZWRfXywgX2V4aXQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3cmFwcGVyLl9fbmFtZV9fLCBfZXhpdC5fX25hbWVfXykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh3cmFwcGVyLl9fZG9jX18sIF9leGl0Ll9fZG9jX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3B1c2goc2VsZik6CisgICAgICAgIGV4Y19yYWlzZWQgPSBaZXJvRGl2aXNpb25FcnJvcgorICAgICAgICBkZWYgX2V4cGVjdF9leGMoZXhjX3R5cGUsIGV4YywgZXhjX3RiKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZXhjX3R5cGUsIGV4Y19yYWlzZWQpCisgICAgICAgIGRlZiBfc3VwcHJlc3NfZXhjKCpleGNfZGV0YWlscyk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBkZWYgX2V4cGVjdF9vayhleGNfdHlwZSwgZXhjLCBleGNfdGIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjX3R5cGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShleGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShleGNfdGIpCisgICAgICAgIGNsYXNzIEV4aXRDTShvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNoZWNrX2V4Yyk6CisgICAgICAgICAgICAgICAgc2VsZi5jaGVja19leGMgPSBjaGVja19leGMKKyAgICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJTaG91bGQgbm90IGJlIGNhbGxlZCEiKQorICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfZGV0YWlscyk6CisgICAgICAgICAgICAgICAgc2VsZi5jaGVja19leGMoKmV4Y19kZXRhaWxzKQorICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgc3RhY2sucHVzaChfZXhwZWN0X29rKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGFjay5fZXhpdF9jYWxsYmFja3NbLTFdLCBfZXhwZWN0X29rKQorICAgICAgICAgICAgY20gPSBFeGl0Q00oX2V4cGVjdF9vaykKKyAgICAgICAgICAgIHN0YWNrLnB1c2goY20pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0uX19zZWxmX18sIGNtKQorICAgICAgICAgICAgc3RhY2sucHVzaChfc3VwcHJlc3NfZXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGFjay5fZXhpdF9jYWxsYmFja3NbLTFdLCBfc3VwcHJlc3NfZXhjKQorICAgICAgICAgICAgY20gPSBFeGl0Q00oX2V4cGVjdF9leGMpCisgICAgICAgICAgICBzdGFjay5wdXNoKGNtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGFjay5fZXhpdF9jYWxsYmFja3NbLTFdLl9fc2VsZl9fLCBjbSkKKyAgICAgICAgICAgIHN0YWNrLnB1c2goX2V4cGVjdF9leGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0sIF9leHBlY3RfZXhjKQorICAgICAgICAgICAgc3RhY2sucHVzaChfZXhwZWN0X2V4YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhY2suX2V4aXRfY2FsbGJhY2tzWy0xXSwgX2V4cGVjdF9leGMpCisgICAgICAgICAgICAxLzAKKworICAgIGRlZiB0ZXN0X2VudGVyX2NvbnRleHQoc2VsZik6CisgICAgICAgIGNsYXNzIFRlc3RDTShvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKDEpCisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKDMpCisKKyAgICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgY20gPSBUZXN0Q00oKQorICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgQHN0YWNrLmNhbGxiYWNrICAjIFJlZ2lzdGVyZWQgZmlyc3QgPT4gY2xlYW5lZCB1cCBsYXN0CisgICAgICAgICAgICBkZWYgX2V4aXQoKToKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShfZXhpdCkKKyAgICAgICAgICAgIHN0YWNrLmVudGVyX2NvbnRleHQoY20pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0uX19zZWxmX18sIGNtKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgWzEsIDIsIDMsIDRdKQorCisgICAgZGVmIHRlc3RfY2xvc2Uoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICBAc3RhY2suY2FsbGJhY2sKKyAgICAgICAgICAgIGRlZiBfZXhpdCgpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKF9leGl0KQorICAgICAgICAgICAgc3RhY2suY2xvc2UoKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgWzEsIDJdKQorCisgICAgZGVmIHRlc3RfcG9wX2FsbChzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgIEBzdGFjay5jYWxsYmFjaworICAgICAgICAgICAgZGVmIF9leGl0KCk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoX2V4aXQpCisgICAgICAgICAgICBuZXdfc3RhY2sgPSBzdGFjay5wb3BfYWxsKCkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoMSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgyKQorICAgICAgICBuZXdfc3RhY2suY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgWzEsIDIsIDNdKQorCisgICAgZGVmIHRlc3RfZXhpdF9yYWlzZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgICAgIHN0YWNrLnB1c2gobGFtYmRhICpleGM6IEZhbHNlKQorICAgICAgICAgICAgICAgIDEvMAorCisgICAgZGVmIHRlc3RfZXhpdF9zdXBwcmVzcyhzZWxmKToKKyAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgIHN0YWNrLnB1c2gobGFtYmRhICpleGM6IFRydWUpCisgICAgICAgICAgICAxLzAKKworICAgIGRlZiB0ZXN0X2V4aXRfZXhjZXB0aW9uX2NoYWluaW5nX3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgIyBTYW5pdHkgY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgRXhpdFN0YWNrIGNoYWluaW5nIG1hdGNoZXMKKyAgICAgICAgIyBhY3R1YWwgbmVzdGVkIHdpdGggc3RhdGVtZW50cworICAgICAgICBjbGFzcyBSYWlzZUV4YzoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGMpOgorICAgICAgICAgICAgICAgIHNlbGYuZXhjID0gZXhjCisgICAgICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmV4YworCisgICAgICAgIGNsYXNzIFJhaXNlRXhjV2l0aENvbnRleHQ6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0ZXIsIGlubmVyKToKKyAgICAgICAgICAgICAgICBzZWxmLm91dGVyID0gb3V0ZXIKKyAgICAgICAgICAgICAgICBzZWxmLmlubmVyID0gaW5uZXIKKyAgICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5pbm5lcgorICAgICAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5vdXRlcgorCisgICAgICAgIGNsYXNzIFN1cHByZXNzRXhjOgorICAgICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfZGV0YWlscyk6CisgICAgICAgICAgICAgICAgdHlwZShzZWxmKS5zYXZlZF9kZXRhaWxzID0gZXhjX2RldGFpbHMKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggUmFpc2VFeGMoSW5kZXhFcnJvcik6CisgICAgICAgICAgICAgICAgd2l0aCBSYWlzZUV4Y1dpdGhDb250ZXh0KEtleUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHdpdGggU3VwcHJlc3NFeGMoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggUmFpc2VFeGMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgZXhjZXB0IEluZGV4RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGV4Yy5fX2NvbnRleHRfXywgS2V5RXJyb3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXhjLl9fY29udGV4dF9fLl9fY29udGV4dF9fLCBBdHRyaWJ1dGVFcnJvcikKKyAgICAgICAgICAgICMgSW5uZXIgZXhjZXB0aW9ucyB3ZXJlIHN1cHByZXNzZWQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV4Yy5fX2NvbnRleHRfXy5fX2NvbnRleHRfXy5fX2NvbnRleHRfXykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiRXhwZWN0ZWQgSW5kZXhFcnJvciwgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIikKKyAgICAgICAgIyBDaGVjayB0aGUgaW5uZXIgZXhjZXB0aW9ucworICAgICAgICBpbm5lcl9leGMgPSBTdXBwcmVzc0V4Yy5zYXZlZF9kZXRhaWxzWzFdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbm5lcl9leGMsIFZhbHVlRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbm5lcl9leGMuX19jb250ZXh0X18sIFplcm9EaXZpc2lvbkVycm9yKQorCisgICAgZGVmIHRlc3RfZXhpdF9leGNlcHRpb25fY2hhaW5pbmcoc2VsZik6CisgICAgICAgICMgRW5zdXJlIGV4Y2VwdGlvbiBjaGFpbmluZyBtYXRjaGVzIHRoZSByZWZlcmVuY2UgYmVoYXZpb3VyCisgICAgICAgIGRlZiByYWlzZV9leGMoZXhjKToKKyAgICAgICAgICAgIHJhaXNlIGV4YworCisgICAgICAgIHNhdmVkX2RldGFpbHMgPSBOb25lCisgICAgICAgIGRlZiBzdXBwcmVzc19leGMoKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgIG5vbmxvY2FsIHNhdmVkX2RldGFpbHMKKyAgICAgICAgICAgIHNhdmVkX2RldGFpbHMgPSBleGNfZGV0YWlscworICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgICAgIHN0YWNrLmNhbGxiYWNrKHJhaXNlX2V4YywgSW5kZXhFcnJvcikKKyAgICAgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhyYWlzZV9leGMsIEtleUVycm9yKQorICAgICAgICAgICAgICAgIHN0YWNrLmNhbGxiYWNrKHJhaXNlX2V4YywgQXR0cmlidXRlRXJyb3IpCisgICAgICAgICAgICAgICAgc3RhY2sucHVzaChzdXBwcmVzc19leGMpCisgICAgICAgICAgICAgICAgc3RhY2suY2FsbGJhY2socmFpc2VfZXhjLCBWYWx1ZUVycm9yKQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShleGMuX19jb250ZXh0X18sIEtleUVycm9yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGV4Yy5fX2NvbnRleHRfXy5fX2NvbnRleHRfXywgQXR0cmlidXRlRXJyb3IpCisgICAgICAgICAgICAjIElubmVyIGV4Y2VwdGlvbnMgd2VyZSBzdXBwcmVzc2VkCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShleGMuX19jb250ZXh0X18uX19jb250ZXh0X18uX19jb250ZXh0X18pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIkV4cGVjdGVkIEluZGV4RXJyb3IsIGJ1dCBubyBleGNlcHRpb24gd2FzIHJhaXNlZCIpCisgICAgICAgICMgQ2hlY2sgdGhlIGlubmVyIGV4Y2VwdGlvbnMKKyAgICAgICAgaW5uZXJfZXhjID0gc2F2ZWRfZGV0YWlsc1sxXQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5uZXJfZXhjLCBWYWx1ZUVycm9yKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5uZXJfZXhjLl9fY29udGV4dF9fLCBaZXJvRGl2aXNpb25FcnJvcikKKworICAgIGRlZiB0ZXN0X2V4aXRfZXhjZXB0aW9uX2NoYWluaW5nX3N1cHByZXNzKHNlbGYpOgorICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgc3RhY2sucHVzaChsYW1iZGEgKmV4YzogVHJ1ZSkKKyAgICAgICAgICAgIHN0YWNrLnB1c2gobGFtYmRhICpleGM6IDEvMCkKKyAgICAgICAgICAgIHN0YWNrLnB1c2gobGFtYmRhICpleGM6IHt9WzFdKQorCisgICAgZGVmIHRlc3RfZXhjZXNzaXZlX25lc3Rpbmcoc2VsZik6CisgICAgICAgICMgVGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uIHdvdWxkIGRpZSB3aXRoIFJlY3Vyc2lvbkVycm9yIGhlcmUKKyAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMDAwKToKKyAgICAgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhpbnQpCisKKyAgICBkZWYgdGVzdF9pbnN0YW5jZV9ieXBhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIEV4YW1wbGUob2JqZWN0KTogcGFzcworICAgICAgICBjbSA9IEV4YW1wbGUoKQorICAgICAgICBjbS5fX2V4aXRfXyA9IG9iamVjdCgpCisgICAgICAgIHN0YWNrID0gRXhpdFN0YWNrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHN0YWNrLmVudGVyX2NvbnRleHQsIGNtKQorICAgICAgICBzdGFjay5wdXNoKGNtKQorICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0sIGNtKQorCisKICMgVGhpcyBpcyBuZWVkZWQgdG8gbWFrZSB0aGUgdGVzdCBhY3R1YWxseSBydW4gdW5kZXIgcmVncnRlc3QucHkhCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvcHkucHkgYi9MaWIvdGVzdC90ZXN0X2NvcHkucHkKaW5kZXggYTg0YzEwOS4uYzRiYWFlNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb3B5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29weS5weQpAQCAtMTcsNyArMTcsNyBAQAogICAgICMgQXR0ZW1wdCBmdWxsIGxpbmUgY292ZXJhZ2Ugb2YgY29weS5weSBmcm9tIHRvcCB0byBib3R0b20KIAogICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbnMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb3B5LkVycm9yIGlzIGNvcHkuZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoY29weS5FcnJvciwgY29weS5lcnJvcikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoY29weS5FcnJvciwgRXhjZXB0aW9uKSkKIAogICAgICMgVGhlIGNvcHkoKSBtZXRob2QKQEAgLTU0LDIwICs1NCwyNiBAQAogICAgIGRlZiB0ZXN0X2NvcHlfcmVkdWNlX2V4KHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgX19yZWR1Y2VfZXhfXyhzZWxmLCBwcm90byk6CisgICAgICAgICAgICAgICAgYy5hcHBlbmQoMSkKICAgICAgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgotICAgICAgICAgICAgICAgIHJhaXNlIHN1cHBvcnQuVGVzdEZhaWxlZCgic2hvdWxkbid0IGNhbGwgdGhpcyIpCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJzaG91bGRuJ3QgY2FsbCB0aGlzIikKKyAgICAgICAgYyA9IFtdCiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeSA9IGNvcHkuY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgWzFdKQogCiAgICAgZGVmIHRlc3RfY29weV9yZWR1Y2Uoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICAgICAgICAgIGMuYXBwZW5kKDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuICIiCisgICAgICAgIGMgPSBbXQogICAgICAgICB4ID0gQygpCiAgICAgICAgIHkgPSBjb3B5LmNvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIFsxXSkKIAogICAgIGRlZiB0ZXN0X2NvcHlfY2FudChzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtOTEsNyArOTcsNyBAQAogICAgICAgICAgICAgICAgICAiaGVsbG8iLCAiaGVsbG9cdTEyMzQiLCBmLl9fY29kZV9fLAogICAgICAgICAgICAgICAgICBOZXdTdHlsZSwgcmFuZ2UoMTApLCBDbGFzc2ljLCBtYXhdCiAgICAgICAgIGZvciB4IGluIHRlc3RzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvcHkuY29weSh4KSBpcyB4LCByZXByKHgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhjb3B5LmNvcHkoeCksIHgpCiAKICAgICBkZWYgdGVzdF9jb3B5X2xpc3Qoc2VsZik6CiAgICAgICAgIHggPSBbMSwgMiwgM10KQEAgLTE4NSw5ICsxOTEsOSBAQAogICAgICAgICB4ID0gW3gsIHhdCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5WzBdIGlzIG5vdCB4WzBdKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeVswXSBpcyB5WzFdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeVswXSwgeFswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5WzBdLCB5WzFdKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfaXNzdWJjbGFzcyhzZWxmKToKICAgICAgICAgIyBYWFggTm90ZTogdGhlcmUncyBubyB3YXkgdG8gdGVzdCB0aGUgVHlwZUVycm9yIGNvbWluZyBvdXQgb2YKQEAgLTIyNywyMCArMjMzLDI2IEBACiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfcmVkdWNlX2V4KHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgX19yZWR1Y2VfZXhfXyhzZWxmLCBwcm90byk6CisgICAgICAgICAgICAgICAgYy5hcHBlbmQoMSkKICAgICAgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgotICAgICAgICAgICAgICAgIHJhaXNlIHN1cHBvcnQuVGVzdEZhaWxlZCgic2hvdWxkbid0IGNhbGwgdGhpcyIpCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJzaG91bGRuJ3QgY2FsbCB0aGlzIikKKyAgICAgICAgYyA9IFtdCiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIFsxXSkKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X3JlZHVjZShzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgogICAgICAgICAgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgICAgICAgICAgYy5hcHBlbmQoMSkKICAgICAgICAgICAgICAgICByZXR1cm4gIiIKKyAgICAgICAgYyA9IFtdCiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIFsxXSkKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2NhbnQoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKQEAgLTI2NCwxNCArMjc2LDE0IEBACiAgICAgICAgICAgICAgICAgICJoZWxsbyIsICJoZWxsb1x1MTIzNCIsIGYuX19jb2RlX18sCiAgICAgICAgICAgICAgICAgIE5ld1N0eWxlLCByYW5nZSgxMCksIENsYXNzaWMsIG1heF0KICAgICAgICAgZm9yIHggaW4gdGVzdHM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29weS5kZWVwY29weSh4KSBpcyB4LCByZXByKHgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhjb3B5LmRlZXBjb3B5KHgpLCB4KQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfbGlzdChzZWxmKToKICAgICAgICAgeCA9IFtbMSwgMl0sIDNdCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WzBdIGlzIG5vdCB5WzBdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeFswXSwgeVswXSkKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X3JlZmxleGl2ZV9saXN0KHNlbGYpOgogICAgICAgICB4ID0gW10KQEAgLTI3OSwxNiArMjkxLDI2IEBACiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIGZvciBvcCBpbiBjb21wYXJpc29uczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgb3AsIHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeVswXSBpcyB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeVswXSwgeSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oeSksIDEpCiAKKyAgICBkZWYgdGVzdF9kZWVwY29weV9lbXB0eV90dXBsZShzZWxmKToKKyAgICAgICAgeCA9ICgpCisgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeCwgeSkKKwogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X3R1cGxlKHNlbGYpOgogICAgICAgICB4ID0gKFsxLCAyXSwgMykKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeCBpcyBub3QgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhbMF0gaXMgbm90IHlbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4WzBdLCB5WzBdKQorCisgICAgZGVmIHRlc3RfZGVlcGNvcHlfdHVwbGVfb2ZfaW1tdXRhYmxlcyhzZWxmKToKKyAgICAgICAgeCA9ICgoMSwgMiksIDMpCisgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeCwgeSkKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X3JlZmxleGl2ZV90dXBsZShzZWxmKToKICAgICAgICAgeCA9IChbXSwpCkBAIC0yOTYsMTYgKzMxOCwxNiBAQAogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBmb3Igb3AgaW4gY29tcGFyaXNvbnM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wLCB5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHlbMF0gaXMgbm90IHhbMF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5WzBdWzBdIGlzIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5WzBdLCB4WzBdKQorICAgICAgICBzZWxmLmFzc2VydElzKHlbMF1bMF0sIHkpCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9kaWN0KHNlbGYpOgogICAgICAgICB4ID0geyJmb28iOiBbMSwgMl0sICJiYXIiOiAzfQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIG5vdCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeFsiZm9vIl0gaXMgbm90IHlbImZvbyJdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeFsiZm9vIl0sIHlbImZvbyJdKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfcmVmbGV4aXZlX2RpY3Qoc2VsZik6CiAgICAgICAgIHggPSB7fQpAQCAtMzE1LDE1ICszMzcsMzAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3AsIHksIHgpCiAgICAgICAgIGZvciBvcCBpbiBlcXVhbGl0eV9jb21wYXJpc29uczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgb3AsIHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeVsnZm9vJ10gaXMgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHlbJ2ZvbyddLCB5KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih5KSwgMSkKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2tlZXBhbGl2ZShzZWxmKToKICAgICAgICAgbWVtbyA9IHt9Ci0gICAgICAgIHggPSA0MgorICAgICAgICB4ID0gW10KICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCwgbWVtbykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1lbW9baWQoeCldIGlzIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobWVtb1tpZChtZW1vKV1bMF0sIHgpCisKKyAgICBkZWYgdGVzdF9kZWVwY29weV9kb250X21lbW9faW1tdXRhYmxlKHNlbGYpOgorICAgICAgICBtZW1vID0ge30KKyAgICAgICAgeCA9IFsxLCAyLCAzLCA0XQorICAgICAgICB5ID0gY29weS5kZWVwY29weSh4LCBtZW1vKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCisgICAgICAgICMgVGhlcmUncyB0aGUgZW50cnkgZm9yIHRoZSBuZXcgbGlzdCwgYW5kIHRoZSBrZWVwIGFsaXZlLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtZW1vKSwgMikKKworICAgICAgICBtZW1vID0ge30KKyAgICAgICAgeCA9IFsoMSwgMildCisgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgsIG1lbW8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKKyAgICAgICAgIyBUdXBsZXMgd2l0aCBpbW11dGFibGUgY29udGVudHMgYXJlIGltbXV0YWJsZSBmb3IgZGVlcGNvcHkuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1lbW8pLCAyKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfaW5zdF92YW5pbGxhKHNlbGYpOgogICAgICAgICBjbGFzcyBDOgpAQCAtMzM0LDcgKzM3MSw3IEBACiAgICAgICAgIHggPSBDKFs0Ml0pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIG5vdCB4LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LmZvbywgeC5mb28pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9pbnN0X2RlZXBjb3B5KHNlbGYpOgogICAgICAgICBjbGFzcyBDOgpAQCAtMzQ3LDggKzM4NCw4IEBACiAgICAgICAgIHggPSBDKFs0Ml0pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5LmZvbyBpcyBub3QgeC5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LmZvbywgeC5mb28pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9pbnN0X2dldGluaXRhcmdzKHNlbGYpOgogICAgICAgICBjbGFzcyBDOgpAQCAtMzYxLDggKzM5OCw4IEBACiAgICAgICAgIHggPSBDKFs0Ml0pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5LmZvbyBpcyBub3QgeC5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LmZvbywgeC5mb28pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9pbnN0X2dldHN0YXRlKHNlbGYpOgogICAgICAgICBjbGFzcyBDOgpAQCAtMzc1LDggKzQxMiw4IEBACiAgICAgICAgIHggPSBDKFs0Ml0pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5LmZvbyBpcyBub3QgeC5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LmZvbywgeC5mb28pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9pbnN0X3NldHN0YXRlKHNlbGYpOgogICAgICAgICBjbGFzcyBDOgpAQCAtMzg5LDggKzQyNiw4IEBACiAgICAgICAgIHggPSBDKFs0Ml0pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5LmZvbyBpcyBub3QgeC5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LmZvbywgeC5mb28pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9pbnN0X2dldHN0YXRlX3NldHN0YXRlKHNlbGYpOgogICAgICAgICBjbGFzcyBDOgpAQCAtNDA1LDggKzQ0Miw4IEBACiAgICAgICAgIHggPSBDKFs0Ml0pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5LmZvbyBpcyBub3QgeC5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LmZvbywgeC5mb28pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9yZWZsZXhpdmVfaW5zdChzZWxmKToKICAgICAgICAgY2xhc3MgQzoKQEAgLTQxNCw4ICs0NTEsOCBAQAogICAgICAgICB4ID0gQygpCiAgICAgICAgIHguZm9vID0geAogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5LmZvbywgeSkKIAogICAgICMgX3JlY29uc3RydWN0KCkKIApAQCAtNDI1LDkgKzQ2Miw5IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeSA9IGNvcHkuY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHksIHgpCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeSwgeCkKIAogICAgIGRlZiB0ZXN0X3JlY29uc3RydWN0X25vc3RhdGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKQEAgLTQzNiw5ICs0NzMsOSBAQAogICAgICAgICB4ID0gQygpCiAgICAgICAgIHguZm9vID0gNDIKICAgICAgICAgeSA9IGNvcHkuY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5fX2NsYXNzX18gaXMgeC5fX2NsYXNzX18pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeS5fX2NsYXNzX18sIHguX19jbGFzc19fKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5fX2NsYXNzX18gaXMgeC5fX2NsYXNzX18pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeS5fX2NsYXNzX18sIHguX19jbGFzc19fKQogCiAgICAgZGVmIHRlc3RfcmVjb25zdHJ1Y3Rfc3RhdGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKQEAgLTQ1Miw3ICs0ODksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIG5vdCB4LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LmZvbywgeC5mb28pCiAKICAgICBkZWYgdGVzdF9yZWNvbnN0cnVjdF9zdGF0ZV9zZXRzdGF0ZShzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtNDY4LDcgKzUwNSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5mb28gaXMgbm90IHguZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X3JlY29uc3RydWN0X3JlZmxleGl2ZShzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtNDc2LDggKzUxMyw4IEBACiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeC5mb28gPSB4CiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5mb28gaXMgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHkuZm9vLCB5KQogCiAgICAgIyBBZGRpdGlvbnMgZm9yIFB5dGhvbiAyLjMgYW5kIHBpY2tsZSBwcm90b2NvbCAyCiAKQEAgLTQ5MSwxMiArNTI4LDEyIEBACiAgICAgICAgIHggPSBDKFtbMSwgMl0sIDNdKQogICAgICAgICB5ID0gY29weS5jb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WzBdIGlzIHlbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh4WzBdLCB5WzBdKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIG5vdCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeFswXSBpcyBub3QgeVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4LCB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHhbMF0sIHlbMF0pCiAKICAgICBkZWYgdGVzdF9yZWR1Y2VfNXR1cGxlKHNlbGYpOgogICAgICAgICBjbGFzcyBDKGRpY3QpOgpAQCAtNTA4LDEyICs1NDUsMTIgQEAKICAgICAgICAgeCA9IEMoWygiZm9vIiwgWzEsIDJdKSwgKCJiYXIiLCAzKV0pCiAgICAgICAgIHkgPSBjb3B5LmNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeCBpcyBub3QgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhbImZvbyJdIGlzIHlbImZvbyJdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeFsiZm9vIl0sIHlbImZvbyJdKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIG5vdCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeFsiZm9vIl0gaXMgbm90IHlbImZvbyJdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeFsiZm9vIl0sIHlbImZvbyJdKQogCiAgICAgZGVmIHRlc3RfY29weV9zbG90cyhzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtNTIxLDcgKzU1OCw3IEBACiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeC5mb28gPSBbNDJdCiAgICAgICAgIHkgPSBjb3B5LmNvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguZm9vIGlzIHkuZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzKHguZm9vLCB5LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X3Nsb3RzKHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CkBAIC01MzAsNyArNTY3LDcgQEAKICAgICAgICAgeC5mb28gPSBbNDJdCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5mb28sIHkuZm9vKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeC5mb28gaXMgbm90IHkuZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHguZm9vLCB5LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2RpY3Rfc3ViY2xhc3Moc2VsZik6CiAgICAgICAgIGNsYXNzIEMoZGljdCk6CkBAIC01NDcsNyArNTg0LDcgQEAKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCB5KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguX2tleXMsIHkuX2tleXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIG5vdCB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIHkpCiAgICAgICAgIHhbJ2JhciddID0gMQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHgsIHkpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoeC5fa2V5cywgeS5fa2V5cykKQEAgLTU2MCw4ICs1OTcsOCBAQAogICAgICAgICB5ID0gY29weS5jb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdCh4KSwgbGlzdCh5KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmZvbywgeS5mb28pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WzBdIGlzIHlbMF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4LmZvbyBpcyB5LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh4WzBdLCB5WzBdKQorICAgICAgICBzZWxmLmFzc2VydElzKHguZm9vLCB5LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2xpc3Rfc3ViY2xhc3Moc2VsZik6CiAgICAgICAgIGNsYXNzIEMobGlzdCk6CkBAIC01NzEsOCArNjA4LDggQEAKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHgpLCBsaXN0KHkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZm9vLCB5LmZvbykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhbMF0gaXMgbm90IHlbMF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4LmZvbyBpcyBub3QgeS5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeFswXSwgeVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4LmZvbywgeS5mb28pCiAKICAgICBkZWYgdGVzdF9jb3B5X3R1cGxlX3N1YmNsYXNzKHNlbGYpOgogICAgICAgICBjbGFzcyBDKHR1cGxlKToKQEAgLTU4OSw4ICs2MjYsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR1cGxlKHgpLCAoWzEsIDJdLCAzKSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0dXBsZSh5KSwgKFsxLCAyXSwgMykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIG5vdCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeFswXSBpcyBub3QgeVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4LCB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHhbMF0sIHlbMF0pCiAKICAgICBkZWYgdGVzdF9nZXRzdGF0ZV9leGMoc2VsZik6CiAgICAgICAgIGNsYXNzIEV2aWxTdGF0ZShvYmplY3QpOgpAQCAtNjE4LDEwICs2NTUsMTAgQEAKICAgICAgICAgb2JqID0gQygpCiAgICAgICAgIHggPSB3ZWFrcmVmLnJlZihvYmopCiAgICAgICAgIHkgPSBfY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHksIHgpCiAgICAgICAgIGRlbCBvYmoKICAgICAgICAgeSA9IF9jb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeSwgeCkKIAogICAgIGRlZiB0ZXN0X2NvcHlfd2Vha3JlZihzZWxmKToKICAgICAgICAgc2VsZi5fY2hlY2tfd2Vha3JlZihjb3B5LmNvcHkpCkBAIC02MzcsNyArNjc0LDcgQEAKICAgICAgICAgdVthXSA9IGIKICAgICAgICAgdVtjXSA9IGQKICAgICAgICAgdiA9IGNvcHkuY29weSh1KQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHYgaXMgdSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh2LCB1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodlthXSwgYikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2W2NdLCBkKQpAQCAtNjY3LDggKzcwNCw4IEBACiAgICAgICAgIHYgPSBjb3B5LmRlZXBjb3B5KHUpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odiksIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodlthXSBpcyBiKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHZbY10gaXMgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh2W2FdLCBiKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHZbY10sIGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodlthXS5pLCBiLmkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodltjXS5pLCBkLmkpCiAgICAgICAgIGRlbCBjCkBAIC02ODcsMTIgKzcyNCwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHYpLCAyKQogICAgICAgICAoeCwgeSksICh6LCB0KSA9IHNvcnRlZCh2Lml0ZW1zKCksIGtleT1sYW1iZGEgcGFpcjogcGFpclswXS5pKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHggaXMgYSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4LCBhKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguaSwgYS5pKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBiKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHogaXMgYykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCBiKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHosIGMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoei5pLCBjLmkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0IGlzIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModCwgZCkKICAgICAgICAgZGVsIHgsIHksIHosIHQKICAgICAgICAgZGVsIGQKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odiksIDEpCkBAIC03MDUsNyArNzQyLDcgQEAKICAgICAgICAgZi5iID0gZi5tCiAgICAgICAgIGcgPSBjb3B5LmRlZXBjb3B5KGYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5tLCBnLmIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnLmIuX19zZWxmX18gaXMgZykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhnLmIuX19zZWxmX18sIGcpCiAgICAgICAgIGcuYigpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkKaW5kZXggYWUxN2MyYi4uNTY3NjY2OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5CkBAIC0xOCwxNiArMTgsMTkgQEAKICAgICBkZWYgdGVzdF9iYWRfY291bnRlcl9kdXJpbmdfZGVhbGxvYyhzZWxmKToKICAgICAgICAgaW1wb3J0IF9sc3Byb2YKICAgICAgICAgIyBNdXN0IHVzZSBhIGZpbGUgYXMgU3RyaW5nSU8gZG9lc24ndCB0cmlnZ2VyIHRoZSBidWcuCi0gICAgICAgIHdpdGggb3BlbihURVNURk4sICd3JykgYXMgZmlsZToKLSAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBmaWxlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgb2JqID0gX2xzcHJvZi5Qcm9maWxlcihsYW1iZGE6IGludCkKLSAgICAgICAgICAgICAgICBvYmouZW5hYmxlKCkKLSAgICAgICAgICAgICAgICBvYmogPSBfbHNwcm9mLlByb2ZpbGVyKDEpCi0gICAgICAgICAgICAgICAgb2JqLmRpc2FibGUoKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gc3lzLl9fc3RkZXJyX18KLSAgICAgICAgdW5saW5rKFRFU1RGTikKKyAgICAgICAgb3JpZ19zdGRlcnIgPSBzeXMuc3RkZXJyCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3JykgYXMgZmlsZToKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gZmlsZQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb2JqID0gX2xzcHJvZi5Qcm9maWxlcihsYW1iZGE6IGludCkKKyAgICAgICAgICAgICAgICAgICAgb2JqLmVuYWJsZSgpCisgICAgICAgICAgICAgICAgICAgIG9iaiA9IF9sc3Byb2YuUHJvZmlsZXIoMSkKKyAgICAgICAgICAgICAgICAgICAgb2JqLmRpc2FibGUoKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBvcmlnX3N0ZGVycgorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgdW5saW5rKFRFU1RGTikKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NyYXNoZXJzLnB5IGIvTGliL3Rlc3QvdGVzdF9jcmFzaGVycy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzZjY2JlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9jcmFzaGVycy5weQpAQCAtMCwwICsxLDM4IEBACisjIFRlc3RzIHRoYXQgdGhlIGNyYXNoZXJzIGluIHRoZSBMaWIvdGVzdC9jcmFzaGVycyBkaXJlY3RvcnkgYWN0dWFsbHkKKyMgZG8gY3Jhc2ggdGhlIGludGVycHJldGVyIGFzIGV4cGVjdGVkCisjCisjIElmIGEgY3Jhc2hlciBpcyBmaXhlZCwgaXQgc2hvdWxkIGJlIG1vdmVkIGVsc2V3aGVyZSBpbiB0aGUgdGVzdCBzdWl0ZSB0bworIyBlbnN1cmUgaXQgY29udGludWVzIHRvIHdvcmsgY29ycmVjdGx5LgorCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBnbG9iCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHRlc3Quc3VwcG9ydAorZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fZmFpbHVyZQorCitDUkFTSEVSX0RJUiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiY3Jhc2hlcnMiKQorQ1JBU0hFUl9GSUxFUyA9IG9zLnBhdGguam9pbihDUkFTSEVSX0RJUiwgIioucHkiKQorCitpbmZpbml0ZV9sb29wcyA9IFsiaW5maW5pdGVfbG9vcF9yZS5weSIsICJuYXN0eV9lcV92c19kaWN0LnB5Il0KKworY2xhc3MgQ3Jhc2hlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQHVuaXR0ZXN0LnNraXAoInRoZXNlIHRlc3RzIGFyZSB0b28gZnJhZ2lsZSIpCisgICAgQHRlc3Quc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9jcmFzaGVyc19jcmFzaChzZWxmKToKKyAgICAgICAgZm9yIGZuYW1lIGluIGdsb2IuZ2xvYihDUkFTSEVSX0ZJTEVTKToKKyAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUoZm5hbWUpIGluIGluZmluaXRlX2xvb3BzOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIFNvbWUgImNyYXNoZXJzIiBvbmx5IHRyaWdnZXIgYW4gZXhjZXB0aW9uIHJhdGhlciB0aGFuIGEKKyAgICAgICAgICAgICMgc2VnZmF1bHQuIENvbnNpZGVyIHRoYXQgYW4gYWNjZXB0YWJsZSBvdXRjb21lLgorICAgICAgICAgICAgaWYgdGVzdC5zdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICAgICAgcHJpbnQoIkNoZWNraW5nIGNyYXNoZXI6IiwgZm5hbWUpCisgICAgICAgICAgICBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoZm5hbWUpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoQ3Jhc2hlclRlc3QpCisgICAgdGVzdC5zdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NyeXB0LnB5IGIvTGliL3Rlc3QvdGVzdF9jcnlwdC5weQppbmRleCAyYWRiMjhkLi5jZmI3MzQxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NyeXB0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY3J5cHQucHkKQEAgLTEsNyArMSwxMSBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY3J5cHQgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ2NyeXB0JykKK2RlZiBzZXRVcE1vZHVsZSgpOgorICAgICMgdGhpcyBpbXBvcnQgd2lsbCByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCBpZiBfY3J5cHQgZG9lc24ndCBleGlzdCwKKyAgICAjIHNvIGl0IGhhcyB0byBiZSBkb25lIGluIHNldFVwTW9kdWxlIGZvciB0ZXN0IGRpc2NvdmVyeSB0byB3b3JrCisgICAgZ2xvYmFsIGNyeXB0CisgICAgY3J5cHQgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ2NyeXB0JykKIAogY2xhc3MgQ3J5cHRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTEwLDggKzE0LDI0IEBACiAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgIHByaW50KCdUZXN0IGVuY3J5cHRpb246ICcsIGMpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChDcnlwdFRlc3RDYXNlKQorICAgIGRlZiB0ZXN0X3NhbHQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNyeXB0Ll9zYWx0Y2hhcnMpLCA2NCkKKyAgICAgICAgZm9yIG1ldGhvZCBpbiBjcnlwdC5tZXRob2RzOgorICAgICAgICAgICAgc2FsdCA9IGNyeXB0Lm1rc2FsdChtZXRob2QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzYWx0KSwKKyAgICAgICAgICAgICAgICAgICAgbWV0aG9kLnNhbHRfY2hhcnMgKyAoMyBpZiBtZXRob2QuaWRlbnQgZWxzZSAwKSkKKworICAgIGRlZiB0ZXN0X3NhbHRlZGNyeXB0KHNlbGYpOgorICAgICAgICBmb3IgbWV0aG9kIGluIGNyeXB0Lm1ldGhvZHM6CisgICAgICAgICAgICBwdyA9IGNyeXB0LmNyeXB0KCdhc3N3b3JkJywgbWV0aG9kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocHcpLCBtZXRob2QudG90YWxfc2l6ZSkKKyAgICAgICAgICAgIHB3ID0gY3J5cHQuY3J5cHQoJ2Fzc3dvcmQnLCBjcnlwdC5ta3NhbHQobWV0aG9kKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHB3KSwgbWV0aG9kLnRvdGFsX3NpemUpCisKKyAgICBkZWYgdGVzdF9tZXRob2RzKHNlbGYpOgorICAgICAgICAjIEd1cmFudGVlIHRoYXQgTUVUSE9EX0NSWVBUIGlzIHRoZSBsYXN0IG1ldGhvZCBpbiBjcnlwdC5tZXRob2RzLgorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGNyeXB0Lm1ldGhvZHMpID49IDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3J5cHQuTUVUSE9EX0NSWVBULCBjcnlwdC5tZXRob2RzWy0xXSkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jc3YucHkgYi9MaWIvdGVzdC90ZXN0X2Nzdi5weQppbmRleCA1NTc5NmEyLi45NmY4YWE3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Nzdi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Nzdi5weQpAQCAtMTk3LDYgKzE5NywxNyBAQAogICAgICAgICAgICAgZmlsZW9iai5zZWVrKDApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVvYmoucmVhZCgpLCAiYSxiXHJcbmMsZFxyXG4iKQogCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfd3JpdGVyb3dzX2xlZ2FjeV9zdHJpbmdzKHNlbGYpOgorICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCisKKyAgICAgICAgYyA9IF90ZXN0Y2FwaS51bmljb2RlX2xlZ2FjeV9zdHJpbmcoJ2EnKQorICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoIncrIiwgbmV3bGluZT0nJykgYXMgZmlsZW9iajoKKyAgICAgICAgICAgIHdyaXRlciA9IGNzdi53cml0ZXIoZmlsZW9iaikKKyAgICAgICAgICAgIHdyaXRlci53cml0ZXJvd3MoW1tjXV0pCisgICAgICAgICAgICBmaWxlb2JqLnNlZWsoMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZW9iai5yZWFkKCksICJhXHJcbiIpCisKICAgICBkZWYgX3JlYWRfdGVzdChzZWxmLCBpbnB1dCwgZXhwZWN0LCAqKmt3YXJncyk6CiAgICAgICAgIHJlYWRlciA9IGNzdi5yZWFkZXIoaW5wdXQsICoqa3dhcmdzKQogICAgICAgICByZXN1bHQgPSBsaXN0KHJlYWRlcikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3R5cGVzLnB5IGIvTGliL3Rlc3QvdGVzdF9jdHlwZXMucHkKaW5kZXggN2Q5YWJkYy4uNDk2MzU1ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jdHlwZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jdHlwZXMucHkKQEAgLTEsMTYgKzEsMTYgQEAKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBpbXBvcnRfbW9kdWxlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZQogCiAjIFNraXAgdGVzdHMgaWYgX2N0eXBlcyBtb2R1bGUgd2FzIG5vdCBidWlsdC4KIGltcG9ydF9tb2R1bGUoJ19jdHlwZXMnKQogCiBpbXBvcnQgY3R5cGVzLnRlc3QKIAotZGVmIHRlc3RfbWFpbigpOgorZGVmIGxvYWRfdGVzdHMoKmFyZ3MpOgogICAgIHNraXBwZWQsIHRlc3RjYXNlcyA9IGN0eXBlcy50ZXN0LmdldF90ZXN0cyhjdHlwZXMudGVzdCwgInRlc3RfKi5weSIsIHZlcmJvc2l0eT0wKQogICAgIHN1aXRlcyA9IFt1bml0dGVzdC5tYWtlU3VpdGUodCkgZm9yIHQgaW4gdGVzdGNhc2VzXQotICAgIHJ1bl91bml0dGVzdCh1bml0dGVzdC5UZXN0U3VpdGUoc3VpdGVzKSkKKyAgICByZXR1cm4gdW5pdHRlc3QuVGVzdFN1aXRlKHN1aXRlcykKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jdXJzZXMucHkgYi9MaWIvdGVzdC90ZXN0X2N1cnNlcy5weQppbmRleCA1ODEyMTQ3Li5lOTU5NjIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2N1cnNlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2N1cnNlcy5weQpAQCAtMjY0LDExICsyNjQsNTMgQEAKICAgICBjdXJzZXMudW5nZXRjaCgxMDI1KQogICAgIHN0ZHNjci5nZXRrZXkoKQogCitkZWYgdGVzdF91bmdldF93Y2goc3Rkc2NyKToKKyAgICBpZiBub3QgaGFzYXR0cihjdXJzZXMsICd1bmdldF93Y2gnKToKKyAgICAgICAgcmV0dXJuCisgICAgZW5jb2RpbmcgPSBzdGRzY3IuZW5jb2RpbmcKKyAgICBmb3IgY2ggaW4gKCdhJywgJ1x4ZTknLCAnXHUyMGFjJywgJ1xVMDAxMEZGRkYnKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY2guZW5jb2RlKGVuY29kaW5nKQorICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY3Vyc2VzLnVuZ2V0X3djaChjaCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oInVuZ2V0X3djaCglYSkgZmFpbGVkIHdpdGggZW5jb2RpbmcgJXM6ICVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNoLCBzdGRzY3IuZW5jb2RpbmcsIGVycikpCisgICAgICAgIHJlYWQgPSBzdGRzY3IuZ2V0X3djaCgpCisgICAgICAgIGlmIHJlYWQgIT0gY2g6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiJXIgIT0gJXIiICUgKHJlYWQsIGNoKSkKKworICAgICAgICBjb2RlID0gb3JkKGNoKQorICAgICAgICBjdXJzZXMudW5nZXRfd2NoKGNvZGUpCisgICAgICAgIHJlYWQgPSBzdGRzY3IuZ2V0X3djaCgpCisgICAgICAgIGlmIHJlYWQgIT0gY2g6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiJXIgIT0gJXIiICUgKHJlYWQsIGNoKSkKKwogZGVmIHRlc3RfaXNzdWUxMDU3MCgpOgogICAgIGIgPSBjdXJzZXMudHBhcm0oY3Vyc2VzLnRpZ2V0c3RyKCJjdXAiKSwgNSwgMykKICAgICBhc3NlcnQgdHlwZShiKSBpcyBieXRlcwogICAgIGN1cnNlcy5wdXRwKGIpCiAKK2RlZiB0ZXN0X2VuY29kaW5nKHN0ZHNjcik6CisgICAgaW1wb3J0IGNvZGVjcworICAgIGVuY29kaW5nID0gc3Rkc2NyLmVuY29kaW5nCisgICAgY29kZWNzLmxvb2t1cChlbmNvZGluZykKKyAgICB0cnk6CisgICAgICAgIHN0ZHNjci5lbmNvZGluZyA9IDEwCisgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJUeXBlRXJyb3Igbm90IHJhaXNlZCIpCisgICAgc3Rkc2NyLmVuY29kaW5nID0gZW5jb2RpbmcKKyAgICB0cnk6CisgICAgICAgIGRlbCBzdGRzY3IuZW5jb2RpbmcKKyAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIlR5cGVFcnJvciBub3QgcmFpc2VkIikKKwogZGVmIG1haW4oc3Rkc2NyKToKICAgICBjdXJzZXMuc2F2ZXR0eSgpCiAgICAgdHJ5OgpAQCAtMjc3LDE2ICszMTksMTggQEAKICAgICAgICAgdGVzdF91c2VycHRyX3dpdGhvdXRfc2V0KHN0ZHNjcikKICAgICAgICAgdGVzdF9yZXNpemVfdGVybShzdGRzY3IpCiAgICAgICAgIHRlc3RfaXNzdWU2MjQzKHN0ZHNjcikKKyAgICAgICAgdGVzdF91bmdldF93Y2goc3Rkc2NyKQogICAgICAgICB0ZXN0X2lzc3VlMTA1NzAoKQorICAgICAgICB0ZXN0X2VuY29kaW5nKHN0ZHNjcikKICAgICBmaW5hbGx5OgogICAgICAgICBjdXJzZXMucmVzZXR0eSgpCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICBpZiBub3Qgc3lzLnN0ZG91dC5pc2F0dHkoKToKLSAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInN5cy5zdGRvdXQgaXMgbm90IGEgdHR5IikKKyAgICBpZiBub3Qgc3lzLl9fc3Rkb3V0X18uaXNhdHR5KCk6CisgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJzeXMuX19zdGRvdXRfXyBpcyBub3QgYSB0dHkiKQogICAgICMgdGVzdGluZyBzZXR1cHRlcm0oKSBpbnNpZGUgaW5pdHNjci9lbmR3aW4KICAgICAjIGNhdXNlcyB0ZXJtaW5hbCBicmVha2FnZQotICAgIGN1cnNlcy5zZXR1cHRlcm0oZmQ9c3lzLnN0ZG91dC5maWxlbm8oKSkKKyAgICBjdXJzZXMuc2V0dXB0ZXJtKGZkPXN5cy5fX3N0ZG91dF9fLmZpbGVubygpKQogICAgIHRyeToKICAgICAgICAgc3Rkc2NyID0gY3Vyc2VzLmluaXRzY3IoKQogICAgICAgICBtYWluKHN0ZHNjcikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGJtLnB5IGIvTGliL3Rlc3QvdGVzdF9kYm0ucHkKaW5kZXggMjZkNGMxNC4uNzUyZTBiNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYm0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kYm0ucHkKQEAgLTM0LDcgKzM0LDcgQEAKICAgICAgICAgdGVzdC5zdXBwb3J0LnVubGluayhmKQogCiAKLWNsYXNzIEFueURCTVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIEFueURCTVRlc3RDYXNlOgogICAgIF9kaWN0ID0geycwJzogYicnLAogICAgICAgICAgICAgICdhJzogYidQeXRob246JywKICAgICAgICAgICAgICAnYic6IGInUHJvZ3JhbW1pbmcnLApAQCAtNzEsOCArNzEsOCBAQAogICAgICAgICBmLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2FueWRibV9jcmVhdGlvbl9uX2ZpbGVfZXhpc3RzX3dpdGhfaW52YWxpZF9jb250ZW50cyhzZWxmKToKLSAgICAgICAgd2l0aCBvcGVuKF9mbmFtZSwgInciKSBhcyB3OgotICAgICAgICAgICAgcGFzcyAjIGNyZWF0ZSBhbiBlbXB0eSBmaWxlCisgICAgICAgICMgY3JlYXRlIGFuIGVtcHR5IGZpbGUKKyAgICAgICAgdGVzdC5zdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKF9mbmFtZSkKIAogICAgICAgICBmID0gZGJtLm9wZW4oX2ZuYW1lLCAnbicpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChmLmNsb3NlKQpAQCAtMTE5LDEwICsxMTksNiBAQAogCiAKIGNsYXNzIFdoaWNoREJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIyBBY3R1YWwgdGVzdCBtZXRob2RzIGFyZSBhZGRlZCB0byBuYW1lc3BhY2UgYWZ0ZXIgY2xhc3MgZGVmaW5pdGlvbi4KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MpOgotICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRfXyhzZWxmLCAqYXJncykKLQogICAgIGRlZiB0ZXN0X3doaWNoZGIoc2VsZik6CiAgICAgICAgIGZvciBtb2R1bGUgaW4gZGJtX2l0ZXJhdG9yKCk6CiAgICAgICAgICAgICAjIENoZWNrIHdoZXRoZXIgd2hpY2hkYiBjb3JyZWN0bHkgZ3Vlc3NlcyBtb2R1bGUgbmFtZQpAQCAtMTY5LDEyICsxNjUsMTYgQEAKICAgICAgICAgc2VsZi5kLmNsb3NlKCkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgY2xhc3NlcyA9IFtXaGljaERCVGVzdENhc2VdCitkZWYgbG9hZF90ZXN0cyhsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKToKKyAgICBjbGFzc2VzID0gW10KICAgICBmb3IgbW9kIGluIGRibV9pdGVyYXRvcigpOgotICAgICAgICBjbGFzc2VzLmFwcGVuZCh0eXBlKCJUZXN0Q2FzZS0iICsgbW9kLl9fbmFtZV9fLCAoQW55REJNVGVzdENhc2UsKSwKKyAgICAgICAgY2xhc3Nlcy5hcHBlbmQodHlwZSgiVGVzdENhc2UtIiArIG1vZC5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQW55REJNVGVzdENhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J21vZHVsZSc6IG1vZH0pKQotICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoKmNsYXNzZXMpCisgICAgc3VpdGVzID0gW3VuaXR0ZXN0Lm1ha2VTdWl0ZShjKSBmb3IgYyBpbiBjbGFzc2VzXQorCisgICAgdGVzdHMuYWRkVGVzdHMoc3VpdGVzKQorICAgIHJldHVybiB0ZXN0cwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RibV9kdW1iLnB5IGIvTGliL3Rlc3QvdGVzdF9kYm1fZHVtYi5weQppbmRleCA2Yjk4MWM0Li5lMjMzOTI5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RibV9kdW1iLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGJtX2R1bWIucHkKQEAgLTI5LDkgKzI5LDYgQEAKICAgICAgICAgICAgICAnXHUwMGZjJy5lbmNvZGUoJ3V0Zi04JykgOiBiJyEnLAogICAgICAgICAgICAgIH0KIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncyk6Ci0gICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlLl9faW5pdF9fKHNlbGYsICphcmdzKQotCiAgICAgZGVmIHRlc3RfZHVtYmRibV9jcmVhdGlvbihzZWxmKToKICAgICAgICAgZiA9IGR1bWJkYm0ub3BlbihfZm5hbWUsICdjJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGYua2V5cygpKSwgW10pCkBAIC0xOTUsMTEgKzE5Miw2IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBfZGVsZXRlX2ZpbGVzKCkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRyeToKLSAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoRHVtYkRCTVRlc3RDYXNlKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIF9kZWxldGVfZmlsZXMoKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RibV9nbnUucHkgYi9MaWIvdGVzdC90ZXN0X2RibV9nbnUucHkKaW5kZXggMzBhMzlmNy4uYmY2Mjk0NiAxMDA3NTUKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYm1fZ251LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGJtX2dudS5weQpAQCAtMiw3ICsyLDcgQEAKIGdkYm0gPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoImRibS5nbnUiKSAjc2tpcCBpZiBub3Qgc3VwcG9ydGVkCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIFRFU1RGTiwgcnVuX3VuaXR0ZXN0LCB1bmxpbmsKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBURVNURk4sIHVubGluawogCiAKIGZpbGVuYW1lID0gVEVTVEZOCkBAIC04MSw4ICs4MSw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzaXplMSA+IHNpemUyID49IHNpemUwKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVGVzdEdkYm0pCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGJtX25kYm0ucHkgYi9MaWIvdGVzdC90ZXN0X2RibV9uZGJtLnB5CmluZGV4IDAwZGNiZDIuLmY5ZDNiZWYgMTAwNzU1Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGJtX25kYm0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kYm1fbmRibS5weQpAQCAtMzYsOCArMzYsNSBAQAogICAgICAgICAgICAgZXhjZXB0IGVycm9yOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChEYm1UZXN0Q2FzZSkKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5IGIvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5CmluZGV4IDMwZDM5NzEuLmU4MjU2YTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkKQEAgLTE2LDcgKzE2LDcgQEAKIAogQ293bGlzaGF3J3MgdGVzdHMgY2FuIGJlIGRvd25sb2FkZWQgZnJvbToKIAotICAgd3d3Mi5odXJzbGV5LmlibS5jb20vZGVjaW1hbC9kZWN0ZXN0LnppcAorICAgaHR0cDovL3NwZWxlb3Ryb3ZlLmNvbS9kZWNpbWFsL2RlY3Rlc3QuemlwCiAKIFRoaXMgdGVzdCBtb2R1bGUgY2FuIGJlIGNhbGxlZCBmcm9tIGNvbW1hbmQgbGluZSB3aXRoIG9uZSBwYXJhbWV0ZXIgKEFyaXRobWV0aWMKIG9yIEJlaGF2aW91cikgdG8gdGVzdCBlYWNoIHBhcnQsIG9yIHdpdGhvdXQgcGFyYW1ldGVyIHRvIHRlc3QgYm90aCBwYXJ0cy4gSWYKQEAgLTMwLDM3ICszMCw4MSBAQAogaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgcGlja2xlLCBjb3B5CiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gZGVjaW1hbCBpbXBvcnQgKgogaW1wb3J0IG51bWJlcnMKK2ltcG9ydCBsb2NhbGUKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAocnVuX3VuaXR0ZXN0LCBydW5fZG9jdGVzdCwgaXNfcmVzb3VyY2VfZW5hYmxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNfSUVFRV83NTQpCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2hlY2tfd2FybmluZ3MKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoY2hlY2tfd2FybmluZ3MsIGltcG9ydF9mcmVzaF9tb2R1bGUsIFRlc3RGYWlsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl93aXRoX2xvY2FsZSwgY3B5dGhvbl9vbmx5KQogaW1wb3J0IHJhbmRvbQoraW1wb3J0IHRpbWUKK2ltcG9ydCB3YXJuaW5ncwogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCiAKLSMgVXNlZnVsIFRlc3QgQ29uc3RhbnQKLVNpZ25hbHMgPSB0dXBsZShnZXRjb250ZXh0KCkuZmxhZ3Mua2V5cygpKQogCitDID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZGVjaW1hbCcsIGZyZXNoPVsnX2RlY2ltYWwnXSkKK1AgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdkZWNpbWFsJywgYmxvY2tlZD1bJ19kZWNpbWFsJ10pCitvcmlnX3N5c19kZWNpbWFsID0gc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXQorCisjIGZyYWN0aW9ucyBtb2R1bGUgbXVzdCBpbXBvcnQgdGhlIGNvcnJlY3QgZGVjaW1hbCBtb2R1bGUuCitjZnJhY3Rpb25zID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZnJhY3Rpb25zJywgZnJlc2g9WydmcmFjdGlvbnMnXSkKK3N5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBQCitwZnJhY3Rpb25zID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZnJhY3Rpb25zJywgZnJlc2g9WydmcmFjdGlvbnMnXSkKK3N5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBDCitmcmFjdGlvbnMgPSB7QzpjZnJhY3Rpb25zLCBQOnBmcmFjdGlvbnN9CitzeXMubW9kdWxlc1snZGVjaW1hbCddID0gb3JpZ19zeXNfZGVjaW1hbAorCisKKyMgVXNlZnVsIFRlc3QgQ29uc3RhbnQKK1NpZ25hbHMgPSB7CisgIEM6IHR1cGxlKEMuZ2V0Y29udGV4dCgpLmZsYWdzLmtleXMoKSkgaWYgQyBlbHNlIE5vbmUsCisgIFA6IHR1cGxlKFAuZ2V0Y29udGV4dCgpLmZsYWdzLmtleXMoKSkKK30KICMgU2lnbmFscyBvcmRlcmVkIHdpdGggcmVzcGVjdCB0byBwcmVjZWRlbmNlOiB3aGVuIGFuIG9wZXJhdGlvbgogIyBwcm9kdWNlcyBtdWx0aXBsZSBzaWduYWxzLCBzaWduYWxzIG9jY3VycmluZyBsYXRlciBpbiB0aGUgbGlzdAogIyBzaG91bGQgYmUgaGFuZGxlZCBiZWZvcmUgdGhvc2Ugb2NjdXJyaW5nIGVhcmxpZXIgaW4gdGhlIGxpc3QuCi1PcmRlcmVkU2lnbmFscyA9IChDbGFtcGVkLCBSb3VuZGVkLCBJbmV4YWN0LCBTdWJub3JtYWwsCi0gICAgICAgICAgICAgICAgICBVbmRlcmZsb3csIE92ZXJmbG93LCBEaXZpc2lvbkJ5WmVybywgSW52YWxpZE9wZXJhdGlvbikKK09yZGVyZWRTaWduYWxzID0geworICBDOiBbQy5DbGFtcGVkLCBDLlJvdW5kZWQsIEMuSW5leGFjdCwgQy5TdWJub3JtYWwsIEMuVW5kZXJmbG93LAorICAgICAgQy5PdmVyZmxvdywgQy5EaXZpc2lvbkJ5WmVybywgQy5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgQy5GbG9hdE9wZXJhdGlvbl0gaWYgQyBlbHNlIE5vbmUsCisgIFA6IFtQLkNsYW1wZWQsIFAuUm91bmRlZCwgUC5JbmV4YWN0LCBQLlN1Ym5vcm1hbCwgUC5VbmRlcmZsb3csCisgICAgICBQLk92ZXJmbG93LCBQLkRpdmlzaW9uQnlaZXJvLCBQLkludmFsaWRPcGVyYXRpb24sCisgICAgICBQLkZsb2F0T3BlcmF0aW9uXQorfQorZGVmIGFzc2VydF9zaWduYWxzKGNscywgY29udGV4dCwgYXR0ciwgZXhwZWN0ZWQpOgorICAgIGQgPSBnZXRhdHRyKGNvbnRleHQsIGF0dHIpCisgICAgY2xzLmFzc2VydFRydWUoYWxsKGRbc10gaWYgcyBpbiBleHBlY3RlZCBlbHNlIG5vdCBkW3NdIGZvciBzIGluIGQpKQorCitST1VORF9VUCA9IFAuUk9VTkRfVVAKK1JPVU5EX0RPV04gPSBQLlJPVU5EX0RPV04KK1JPVU5EX0NFSUxJTkcgPSBQLlJPVU5EX0NFSUxJTkcKK1JPVU5EX0ZMT09SID0gUC5ST1VORF9GTE9PUgorUk9VTkRfSEFMRl9VUCA9IFAuUk9VTkRfSEFMRl9VUAorUk9VTkRfSEFMRl9ET1dOID0gUC5ST1VORF9IQUxGX0RPV04KK1JPVU5EX0hBTEZfRVZFTiA9IFAuUk9VTkRfSEFMRl9FVkVOCitST1VORF8wNVVQID0gUC5ST1VORF8wNVVQCisKK1JvdW5kaW5nTW9kZXMgPSBbCisgIFJPVU5EX1VQLCBST1VORF9ET1dOLCBST1VORF9DRUlMSU5HLCBST1VORF9GTE9PUiwKKyAgUk9VTkRfSEFMRl9VUCwgUk9VTkRfSEFMRl9ET1dOLCBST1VORF9IQUxGX0VWRU4sCisgIFJPVU5EXzA1VVAKK10KIAogIyBUZXN0cyBhcmUgYnVpbHQgYXJvdW5kIHRoZXNlIGFzc3VtZWQgY29udGV4dCBkZWZhdWx0cy4KICMgdGVzdF9tYWluKCkgcmVzdG9yZXMgdGhlIG9yaWdpbmFsIGNvbnRleHQuCi1kZWYgaW5pdCgpOgotICAgIGdsb2JhbCBPUklHSU5BTF9DT05URVhUCi0gICAgT1JJR0lOQUxfQ09OVEVYVCA9IGdldGNvbnRleHQoKS5jb3B5KCkKLSAgICBEZWZhdWx0VGVzdENvbnRleHQgPSBDb250ZXh0KAotICAgICAgICBwcmVjID0gOSwKLSAgICAgICAgcm91bmRpbmcgPSBST1VORF9IQUxGX0VWRU4sCi0gICAgICAgIHRyYXBzID0gZGljdC5mcm9ta2V5cyhTaWduYWxzLCAwKQotICAgICAgICApCi0gICAgc2V0Y29udGV4dChEZWZhdWx0VGVzdENvbnRleHQpCitPUklHSU5BTF9DT05URVhUID0geworICBDOiBDLmdldGNvbnRleHQoKS5jb3B5KCkgaWYgQyBlbHNlIE5vbmUsCisgIFA6IFAuZ2V0Y29udGV4dCgpLmNvcHkoKQorfQorZGVmIGluaXQobSk6CisgICAgaWYgbm90IG06IHJldHVybgorICAgIERlZmF1bHRUZXN0Q29udGV4dCA9IG0uQ29udGV4dCgKKyAgICAgICBwcmVjPTksIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwgdHJhcHM9ZGljdC5mcm9ta2V5cyhTaWduYWxzW21dLCAwKQorICAgICkKKyAgICBtLnNldGNvbnRleHQoRGVmYXVsdFRlc3RDb250ZXh0KQogCiBURVNUREFUQURJUiA9ICdkZWNpbWFsdGVzdGRhdGEnCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpAQCAtNzIsMTQ5ICsxMTYsMTc1IEBACiAKIHNraXBfZXhwZWN0ZWQgPSBub3Qgb3MucGF0aC5pc2RpcihkaXJlY3RvcnkpCiAKLSMgbGlzdCBvZiBpbmRpdmlkdWFsIC5kZWNUZXN0IHRlc3QgaWRzIHRoYXQgY29ycmVzcG9uZCB0byB0ZXN0cyB0aGF0Ci0jIHdlJ3JlIHNraXBwaW5nIGZvciBvbmUgcmVhc29uIG9yIGFub3RoZXIuCi1za2lwcGVkX3Rlc3RfaWRzID0gc2V0KFsKLSAgICAjIFNraXAgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgc2NhbGViIHRlc3RzLgotICAgICdzY2J4MTY0JywKLSAgICAnc2NieDE2NScsCi0KLSAgICAjIEZvciBzb21lIG9wZXJhdGlvbnMgKGN1cnJlbnRseSBleHAsIGxuLCBsb2cxMCwgcG93ZXIpLCB0aGUgZGVjTnVtYmVyCi0gICAgIyByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaW1wb3NlcyBhZGRpdGlvbmFsIHJlc3RyaWN0aW9ucyBvbiB0aGUgY29udGV4dAotICAgICMgYW5kIG9wZXJhbmRzLiAgVGhlc2UgcmVzdHJpY3Rpb25zIGFyZSBub3QgcGFydCBvZiB0aGUgc3BlY2lmaWNhdGlvbjsKLSAgICAjIGhvd2V2ZXIsIHRoZSBlZmZlY3Qgb2YgdGhlc2UgcmVzdHJpY3Rpb25zIGRvZXMgc2hvdyB1cCBpbiBzb21lIG9mIHRoZQotICAgICMgdGVzdGNhc2VzLiAgV2Ugc2tpcCB0ZXN0Y2FzZXMgdGhhdCB2aW9sYXRlIHRoZXNlIHJlc3RyaWN0aW9ucywgc2luY2UKLSAgICAjIERlY2ltYWwgYmVoYXZlcyBkaWZmZXJlbnRseSBmcm9tIGRlY051bWJlciBmb3IgdGhlc2UgdGVzdGNhc2VzIHNvIHRoZXNlCi0gICAgIyB0ZXN0Y2FzZXMgd291bGQgb3RoZXJ3aXNlIGZhaWwuCi0gICAgJ2V4cHg5MDEnLAotICAgICdleHB4OTAyJywKLSAgICAnZXhweDkwMycsCi0gICAgJ2V4cHg5MDUnLAotICAgICdsbng5MDEnLAotICAgICdsbng5MDInLAotICAgICdsbng5MDMnLAotICAgICdsbng5MDUnLAotICAgICdsb2d4OTAxJywKLSAgICAnbG9neDkwMicsCi0gICAgJ2xvZ3g5MDMnLAotICAgICdsb2d4OTA1JywKLSAgICAncG93eDExODMnLAotICAgICdwb3d4MTE4NCcsCi0gICAgJ3Bvd3g0MDAxJywKLSAgICAncG93eDQwMDInLAotICAgICdwb3d4NDAwMycsCi0gICAgJ3Bvd3g0MDA1JywKLSAgICAncG93eDQwMDgnLAotICAgICdwb3d4NDAxMCcsCi0gICAgJ3Bvd3g0MDEyJywKLSAgICAncG93eDQwMTQnLAotICAgIF0pCi0KICMgTWFrZSBzdXJlIGl0IGFjdHVhbGx5IHJhaXNlcyBlcnJvcnMgd2hlbiBub3QgZXhwZWN0ZWQgYW5kIGNhdWdodCBpbiBmbGFncwogIyBTbG93ZXIsIHNpbmNlIGl0IHJ1bnMgc29tZSB0aGluZ3Mgc2V2ZXJhbCB0aW1lcy4KIEVYVEVOREVERVJST1JURVNUID0gRmFsc2UKIAotI01hcCB0aGUgdGVzdCBjYXNlcycgZXJyb3IgbmFtZXMgdG8gdGhlIGFjdHVhbCBlcnJvcnMKLUVycm9yTmFtZXMgPSB7J2NsYW1wZWQnIDogQ2xhbXBlZCwKLSAgICAgICAgICAgICAgJ2NvbnZlcnNpb25fc3ludGF4JyA6IEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICdkaXZpc2lvbl9ieV96ZXJvJyA6IERpdmlzaW9uQnlaZXJvLAotICAgICAgICAgICAgICAnZGl2aXNpb25faW1wb3NzaWJsZScgOiBJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAnZGl2aXNpb25fdW5kZWZpbmVkJyA6IEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICdpbmV4YWN0JyA6IEluZXhhY3QsCi0gICAgICAgICAgICAgICdpbnZhbGlkX2NvbnRleHQnIDogSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgJ2ludmFsaWRfb3BlcmF0aW9uJyA6IEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICdvdmVyZmxvdycgOiBPdmVyZmxvdywKLSAgICAgICAgICAgICAgJ3JvdW5kZWQnIDogUm91bmRlZCwKLSAgICAgICAgICAgICAgJ3N1Ym5vcm1hbCcgOiBTdWJub3JtYWwsCi0gICAgICAgICAgICAgICd1bmRlcmZsb3cnIDogVW5kZXJmbG93fQorIyBUZXN0IGV4dHJhIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIEMgdmVyc2lvbiAoLURFWFRSQV9GVU5DVElPTkFMSVRZKS4KK0VYVFJBX0ZVTkNUSU9OQUxJVFkgPSBUcnVlIGlmIGhhc2F0dHIoQywgJ0RlY0NsYW1wZWQnKSBlbHNlIEZhbHNlCityZXF1aXJlc19leHRyYV9mdW5jdGlvbmFsaXR5ID0gdW5pdHRlc3Quc2tpcFVubGVzcygKKyAgRVhUUkFfRlVOQ1RJT05BTElUWSwgInRlc3QgcmVxdWlyZXMgYnVpbGQgd2l0aCAtREVYVFJBX0ZVTkNUSU9OQUxJVFkiKQorc2tpcF9pZl9leHRyYV9mdW5jdGlvbmFsaXR5ID0gdW5pdHRlc3Quc2tpcElmKAorICBFWFRSQV9GVU5DVElPTkFMSVRZLCAidGVzdCByZXF1aXJlcyByZWd1bGFyIGJ1aWxkIikKIAogCi1kZWYgTm9uZnVuY3Rpb24oKmFyZ3MpOgotICAgICIiIkRvZXNuJ3QgZG8gYW55dGhpbmcuIiIiCi0gICAgcmV0dXJuIE5vbmUKK2NsYXNzIElCTVRlc3RDYXNlcyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQ2xhc3Mgd2hpY2ggdGVzdHMgdGhlIERlY2ltYWwgY2xhc3MgYWdhaW5zdCB0aGUgSUJNIHRlc3QgY2FzZXMuIiIiCiAKLVJvdW5kaW5nRGljdCA9IHsnY2VpbGluZycgOiBST1VORF9DRUlMSU5HLCAjTWFwcyB0ZXN0LWNhc2UgbmFtZXMgdG8gcm91bmRpbmdzLgotICAgICAgICAgICAgICAgICdkb3duJyA6IFJPVU5EX0RPV04sCi0gICAgICAgICAgICAgICAgJ2Zsb29yJyA6IFJPVU5EX0ZMT09SLAotICAgICAgICAgICAgICAgICdoYWxmX2Rvd24nIDogUk9VTkRfSEFMRl9ET1dOLAotICAgICAgICAgICAgICAgICdoYWxmX2V2ZW4nIDogUk9VTkRfSEFMRl9FVkVOLAotICAgICAgICAgICAgICAgICdoYWxmX3VwJyA6IFJPVU5EX0hBTEZfVVAsCi0gICAgICAgICAgICAgICAgJ3VwJyA6IFJPVU5EX1VQLAotICAgICAgICAgICAgICAgICcwNXVwJyA6IFJPVU5EXzA1VVB9Ci0KLSMgTmFtZSBhZGFwdGVyIHRvIGJlIGFibGUgdG8gY2hhbmdlIHRoZSBEZWNpbWFsIGFuZCBDb250ZXh0Ci0jIGludGVyZmFjZSB3aXRob3V0IGNoYW5naW5nIHRoZSB0ZXN0IGZpbGVzIGZyb20gQ293bGlzaGF3Ci1uYW1lQWRhcHRlciA9IHsnYW5kJzonbG9naWNhbF9hbmQnLAotICAgICAgICAgICAgICAgJ2FwcGx5JzonX2FwcGx5JywKLSAgICAgICAgICAgICAgICdjbGFzcyc6J251bWJlcl9jbGFzcycsCi0gICAgICAgICAgICAgICAnY29tcGFyZXNpZyc6J2NvbXBhcmVfc2lnbmFsJywKLSAgICAgICAgICAgICAgICdjb21wYXJldG90YWwnOidjb21wYXJlX3RvdGFsJywKLSAgICAgICAgICAgICAgICdjb21wYXJldG90bWFnJzonY29tcGFyZV90b3RhbF9tYWcnLAotICAgICAgICAgICAgICAgJ2NvcHknOidjb3B5X2RlY2ltYWwnLAotICAgICAgICAgICAgICAgJ2NvcHlhYnMnOidjb3B5X2FicycsCi0gICAgICAgICAgICAgICAnY29weW5lZ2F0ZSc6J2NvcHlfbmVnYXRlJywKLSAgICAgICAgICAgICAgICdjb3B5c2lnbic6J2NvcHlfc2lnbicsCi0gICAgICAgICAgICAgICAnZGl2aWRlaW50JzonZGl2aWRlX2ludCcsCi0gICAgICAgICAgICAgICAnaW52ZXJ0JzonbG9naWNhbF9pbnZlcnQnLAotICAgICAgICAgICAgICAgJ2lzY2Fub25pY2FsJzonaXNfY2Fub25pY2FsJywKLSAgICAgICAgICAgICAgICdpc2Zpbml0ZSc6J2lzX2Zpbml0ZScsCi0gICAgICAgICAgICAgICAnaXNpbmZpbml0ZSc6J2lzX2luZmluaXRlJywKLSAgICAgICAgICAgICAgICdpc25hbic6J2lzX25hbicsCi0gICAgICAgICAgICAgICAnaXNub3JtYWwnOidpc19ub3JtYWwnLAotICAgICAgICAgICAgICAgJ2lzcW5hbic6J2lzX3FuYW4nLAotICAgICAgICAgICAgICAgJ2lzc2lnbmVkJzonaXNfc2lnbmVkJywKLSAgICAgICAgICAgICAgICdpc3NuYW4nOidpc19zbmFuJywKLSAgICAgICAgICAgICAgICdpc3N1Ym5vcm1hbCc6J2lzX3N1Ym5vcm1hbCcsCi0gICAgICAgICAgICAgICAnaXN6ZXJvJzonaXNfemVybycsCi0gICAgICAgICAgICAgICAnbWF4bWFnJzonbWF4X21hZycsCi0gICAgICAgICAgICAgICAnbWlubWFnJzonbWluX21hZycsCi0gICAgICAgICAgICAgICAnbmV4dG1pbnVzJzonbmV4dF9taW51cycsCi0gICAgICAgICAgICAgICAnbmV4dHBsdXMnOiduZXh0X3BsdXMnLAotICAgICAgICAgICAgICAgJ25leHR0b3dhcmQnOiduZXh0X3Rvd2FyZCcsCi0gICAgICAgICAgICAgICAnb3InOidsb2dpY2FsX29yJywKLSAgICAgICAgICAgICAgICdyZWR1Y2UnOidub3JtYWxpemUnLAotICAgICAgICAgICAgICAgJ3JlbWFpbmRlcm5lYXInOidyZW1haW5kZXJfbmVhcicsCi0gICAgICAgICAgICAgICAnc2FtZXF1YW50dW0nOidzYW1lX3F1YW50dW0nLAotICAgICAgICAgICAgICAgJ3NxdWFyZXJvb3QnOidzcXJ0JywKLSAgICAgICAgICAgICAgICd0b2VuZyc6J3RvX2VuZ19zdHJpbmcnLAotICAgICAgICAgICAgICAgJ3RvaW50ZWdyYWwnOid0b19pbnRlZ3JhbF92YWx1ZScsCi0gICAgICAgICAgICAgICAndG9pbnRlZ3JhbHgnOid0b19pbnRlZ3JhbF9leGFjdCcsCi0gICAgICAgICAgICAgICAndG9zY2knOid0b19zY2lfc3RyaW5nJywKLSAgICAgICAgICAgICAgICd4b3InOidsb2dpY2FsX3hvcicsCi0gICAgICAgICAgICAgIH0KLQotIyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyByZXR1cm4gVHJ1ZS9GYWxzZSByYXRoZXIgdGhhbiBhIERlY2ltYWwgaW5zdGFuY2UKLQotTE9HSUNBTF9GVU5DVElPTlMgPSAoCi0gICAgJ2lzX2Nhbm9uaWNhbCcsCi0gICAgJ2lzX2Zpbml0ZScsCi0gICAgJ2lzX2luZmluaXRlJywKLSAgICAnaXNfbmFuJywKLSAgICAnaXNfbm9ybWFsJywKLSAgICAnaXNfcW5hbicsCi0gICAgJ2lzX3NpZ25lZCcsCi0gICAgJ2lzX3NuYW4nLAotICAgICdpc19zdWJub3JtYWwnLAotICAgICdpc196ZXJvJywKLSAgICAnc2FtZV9xdWFudHVtJywKLSAgICApCi0KLWNsYXNzIERlY2ltYWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJDbGFzcyB3aGljaCB0ZXN0cyB0aGUgRGVjaW1hbCBjbGFzcyBhZ2FpbnN0IHRoZSB0ZXN0IGNhc2VzLgotCi0gICAgQ2hhbmdlZCBmb3IgdW5pdHRlc3QuCi0gICAgIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmNvbnRleHQgPSBDb250ZXh0KCkKKyAgICAgICAgc2VsZi5jb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQoKQorICAgICAgICBzZWxmLnJlYWRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQoKQogICAgICAgICBzZWxmLmlnbm9yZV9saXN0ID0gWycjJ10KLSAgICAgICAgIyBCYXNpY2FsbHksIGEgIyBtZWFucyByZXR1cm4gTmFOIEludmFsaWRPcGVyYXRpb24uCi0gICAgICAgICMgRGlmZmVyZW50IGZyb20gYSBzTmFOIGluIHRyaW0KIAorICAgICAgICAjIExpc3Qgb2YgaW5kaXZpZHVhbCAuZGVjVGVzdCB0ZXN0IGlkcyB0aGF0IGNvcnJlc3BvbmQgdG8gdGVzdHMgdGhhdAorICAgICAgICAjIHdlJ3JlIHNraXBwaW5nIGZvciBvbmUgcmVhc29uIG9yIGFub3RoZXIuCisgICAgICAgIHNlbGYuc2tpcHBlZF90ZXN0X2lkcyA9IHNldChbCisgICAgICAgICAgICAjIFNraXAgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgc2NhbGViIHRlc3RzLgorICAgICAgICAgICAgJ3NjYngxNjQnLAorICAgICAgICAgICAgJ3NjYngxNjUnLAorCisgICAgICAgICAgICAjIEZvciBzb21lIG9wZXJhdGlvbnMgKGN1cnJlbnRseSBleHAsIGxuLCBsb2cxMCwgcG93ZXIpLCB0aGUgZGVjTnVtYmVyCisgICAgICAgICAgICAjIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpbXBvc2VzIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIG9uIHRoZSBjb250ZXh0CisgICAgICAgICAgICAjIGFuZCBvcGVyYW5kcy4gIFRoZXNlIHJlc3RyaWN0aW9ucyBhcmUgbm90IHBhcnQgb2YgdGhlIHNwZWNpZmljYXRpb247CisgICAgICAgICAgICAjIGhvd2V2ZXIsIHRoZSBlZmZlY3Qgb2YgdGhlc2UgcmVzdHJpY3Rpb25zIGRvZXMgc2hvdyB1cCBpbiBzb21lIG9mIHRoZQorICAgICAgICAgICAgIyB0ZXN0Y2FzZXMuICBXZSBza2lwIHRlc3RjYXNlcyB0aGF0IHZpb2xhdGUgdGhlc2UgcmVzdHJpY3Rpb25zLCBzaW5jZQorICAgICAgICAgICAgIyBEZWNpbWFsIGJlaGF2ZXMgZGlmZmVyZW50bHkgZnJvbSBkZWNOdW1iZXIgZm9yIHRoZXNlIHRlc3RjYXNlcyBzbyB0aGVzZQorICAgICAgICAgICAgIyB0ZXN0Y2FzZXMgd291bGQgb3RoZXJ3aXNlIGZhaWwuCisgICAgICAgICAgICAnZXhweDkwMScsCisgICAgICAgICAgICAnZXhweDkwMicsCisgICAgICAgICAgICAnZXhweDkwMycsCisgICAgICAgICAgICAnZXhweDkwNScsCisgICAgICAgICAgICAnbG54OTAxJywKKyAgICAgICAgICAgICdsbng5MDInLAorICAgICAgICAgICAgJ2xueDkwMycsCisgICAgICAgICAgICAnbG54OTA1JywKKyAgICAgICAgICAgICdsb2d4OTAxJywKKyAgICAgICAgICAgICdsb2d4OTAyJywKKyAgICAgICAgICAgICdsb2d4OTAzJywKKyAgICAgICAgICAgICdsb2d4OTA1JywKKyAgICAgICAgICAgICdwb3d4MTE4MycsCisgICAgICAgICAgICAncG93eDExODQnLAorICAgICAgICAgICAgJ3Bvd3g0MDAxJywKKyAgICAgICAgICAgICdwb3d4NDAwMicsCisgICAgICAgICAgICAncG93eDQwMDMnLAorICAgICAgICAgICAgJ3Bvd3g0MDA1JywKKyAgICAgICAgICAgICdwb3d4NDAwOCcsCisgICAgICAgICAgICAncG93eDQwMTAnLAorICAgICAgICAgICAgJ3Bvd3g0MDEyJywKKyAgICAgICAgICAgICdwb3d4NDAxNCcsCisgICAgICAgICAgICBdKQorCisgICAgICAgIGlmIHNlbGYuZGVjaW1hbCA9PSBDOgorICAgICAgICAgICAgIyBzdGF0dXMgaGFzIGFkZGl0aW9uYWwgU3Vibm9ybWFsLCBVbmRlcmZsb3cKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZF90ZXN0X2lkcy5hZGQoJ3B3c3g4MDMnKQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncHdzeDgwNScpCisgICAgICAgICAgICAjIENvcnJlY3Qgcm91bmRpbmcgKHNraXBwZWQgZm9yIGRlY051bWJlciwgdG9vKQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncG93eDQzMDInKQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncG93eDQzMDMnKQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncG93eDQzNDInKQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncG93eDQzNDMnKQorICAgICAgICAgICAgIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlNzA0OQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncHdteDMyNScpCisgICAgICAgICAgICBzZWxmLnNraXBwZWRfdGVzdF9pZHMuYWRkKCdwd214MzI2JykKKworICAgICAgICAjIE1hcCB0ZXN0IGRpcmVjdGl2ZXMgdG8gc2V0dGVyIGZ1bmN0aW9ucy4KICAgICAgICAgc2VsZi5DaGFuZ2VEaWN0ID0geydwcmVjaXNpb24nIDogc2VsZi5jaGFuZ2VfcHJlY2lzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICdyb3VuZGluZycgOiBzZWxmLmNoYW5nZV9yb3VuZGluZ19tZXRob2QsCi0gICAgICAgICAgICAgICAgICAgICAgJ21heGV4cG9uZW50JyA6IHNlbGYuY2hhbmdlX21heF9leHBvbmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAnbWluZXhwb25lbnQnIDogc2VsZi5jaGFuZ2VfbWluX2V4cG9uZW50LAotICAgICAgICAgICAgICAgICAgICAgICdjbGFtcCcgOiBzZWxmLmNoYW5nZV9jbGFtcH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb3VuZGluZycgOiBzZWxmLmNoYW5nZV9yb3VuZGluZ19tZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4ZXhwb25lbnQnIDogc2VsZi5jaGFuZ2VfbWF4X2V4cG9uZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pbmV4cG9uZW50JyA6IHNlbGYuY2hhbmdlX21pbl9leHBvbmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGFtcCcgOiBzZWxmLmNoYW5nZV9jbGFtcH0KKworICAgICAgICAjIE5hbWUgYWRhcHRlciB0byBiZSBhYmxlIHRvIGNoYW5nZSB0aGUgRGVjaW1hbCBhbmQgQ29udGV4dAorICAgICAgICAjIGludGVyZmFjZSB3aXRob3V0IGNoYW5naW5nIHRoZSB0ZXN0IGZpbGVzIGZyb20gQ293bGlzaGF3LgorICAgICAgICBzZWxmLk5hbWVBZGFwdGVyID0geydhbmQnOidsb2dpY2FsX2FuZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FwcGx5JzonX2FwcGx5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xhc3MnOidudW1iZXJfY2xhc3MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wYXJlc2lnJzonY29tcGFyZV9zaWduYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wYXJldG90YWwnOidjb21wYXJlX3RvdGFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGFyZXRvdG1hZyc6J2NvbXBhcmVfdG90YWxfbWFnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29weSc6J2NvcHlfZGVjaW1hbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcHlhYnMnOidjb3B5X2FicycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcHluZWdhdGUnOidjb3B5X25lZ2F0ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcHlzaWduJzonY29weV9zaWduJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGl2aWRlaW50JzonZGl2aWRlX2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmVydCc6J2xvZ2ljYWxfaW52ZXJ0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNjYW5vbmljYWwnOidpc19jYW5vbmljYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc2Zpbml0ZSc6J2lzX2Zpbml0ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzaW5maW5pdGUnOidpc19pbmZpbml0ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzbmFuJzonaXNfbmFuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNub3JtYWwnOidpc19ub3JtYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc3FuYW4nOidpc19xbmFuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNzaWduZWQnOidpc19zaWduZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc3NuYW4nOidpc19zbmFuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNzdWJub3JtYWwnOidpc19zdWJub3JtYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc3plcm8nOidpc196ZXJvJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4bWFnJzonbWF4X21hZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pbm1hZyc6J21pbl9tYWcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXh0bWludXMnOiduZXh0X21pbnVzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV4dHBsdXMnOiduZXh0X3BsdXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXh0dG93YXJkJzonbmV4dF90b3dhcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcic6J2xvZ2ljYWxfb3InLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWR1Y2UnOidub3JtYWxpemUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZW1haW5kZXJuZWFyJzoncmVtYWluZGVyX25lYXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1lcXVhbnR1bSc6J3NhbWVfcXVhbnR1bScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NxdWFyZXJvb3QnOidzcXJ0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9lbmcnOid0b19lbmdfc3RyaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9pbnRlZ3JhbCc6J3RvX2ludGVncmFsX3ZhbHVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9pbnRlZ3JhbHgnOid0b19pbnRlZ3JhbF9leGFjdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rvc2NpJzondG9fc2NpX3N0cmluZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3hvcic6J2xvZ2ljYWxfeG9yJ30KKworICAgICAgICAjIE1hcCB0ZXN0LWNhc2UgbmFtZXMgdG8gcm91bmRpbmdzLgorICAgICAgICBzZWxmLlJvdW5kaW5nRGljdCA9IHsnY2VpbGluZycgOiBST1VORF9DRUlMSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG93bicgOiBST1VORF9ET1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmxvb3InIDogUk9VTkRfRkxPT1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYWxmX2Rvd24nIDogUk9VTkRfSEFMRl9ET1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFsZl9ldmVuJyA6IFJPVU5EX0hBTEZfRVZFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhbGZfdXAnIDogUk9VTkRfSEFMRl9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VwJyA6IFJPVU5EX1VQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMDV1cCcgOiBST1VORF8wNVVQfQorCisgICAgICAgICMgTWFwIHRoZSB0ZXN0IGNhc2VzJyBlcnJvciBuYW1lcyB0byB0aGUgYWN0dWFsIGVycm9ycy4KKyAgICAgICAgc2VsZi5FcnJvck5hbWVzID0geydjbGFtcGVkJyA6IHNlbGYuZGVjaW1hbC5DbGFtcGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb25fc3ludGF4JyA6IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpdmlzaW9uX2J5X3plcm8nIDogc2VsZi5kZWNpbWFsLkRpdmlzaW9uQnlaZXJvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpdmlzaW9uX2ltcG9zc2libGUnIDogc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGl2aXNpb25fdW5kZWZpbmVkJyA6IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luZXhhY3QnIDogc2VsZi5kZWNpbWFsLkluZXhhY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZF9jb250ZXh0JyA6IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWRfb3BlcmF0aW9uJyA6IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ292ZXJmbG93JyA6IHNlbGYuZGVjaW1hbC5PdmVyZmxvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb3VuZGVkJyA6IHNlbGYuZGVjaW1hbC5Sb3VuZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1Ym5vcm1hbCcgOiBzZWxmLmRlY2ltYWwuU3Vibm9ybWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyZmxvdycgOiBzZWxmLmRlY2ltYWwuVW5kZXJmbG93fQorCisgICAgICAgICMgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgcmV0dXJuIFRydWUvRmFsc2UgcmF0aGVyIHRoYW4gYQorICAgICAgICAjIERlY2ltYWwgaW5zdGFuY2UuCisgICAgICAgIHNlbGYuTG9naWNhbEZ1bmN0aW9ucyA9ICgnaXNfY2Fub25pY2FsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19maW5pdGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX2luZmluaXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19uYW4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX25vcm1hbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfcW5hbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfc2lnbmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19zbmFuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19zdWJub3JtYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX3plcm8nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbWVfcXVhbnR1bScpCisKKyAgICBkZWYgcmVhZF91bmxpbWl0ZWQoc2VsZiwgdiwgY29udGV4dCk6CisgICAgICAgICIiIldvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgMzItYml0IF9kZWNpbWFsIHZlcnNpb24uIFRoZQorICAgICAgICAgICBndWFyYW50ZWVkIG1heGltdW0gdmFsdWVzIGZvciBwcmVjLCBFbWF4IGV0Yy4gYXJlIDQyNTAwMDAwMCwKKyAgICAgICAgICAgYnV0IGhpZ2hlciB2YWx1ZXMgdXN1YWxseSB3b3JrLCBleGNlcHQgZm9yIHJhcmUgY29ybmVyIGNhc2VzLgorICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCBhbGwgb2YgdGhlIElCTSB0ZXN0cyBwYXNzIHdpdGggbWF4aW11bSB2YWx1ZXMKKyAgICAgICAgICAgb2YgMTA3MDAwMDAwMC4iIiIKKyAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEMgYW5kIHNlbGYuZGVjaW1hbC5NQVhfRU1BWCA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBzZWxmLnJlYWRjb250ZXh0Ll91bnNhZmVfc2V0cHJlYygxMDcwMDAwMDAwKQorICAgICAgICAgICAgc2VsZi5yZWFkY29udGV4dC5fdW5zYWZlX3NldGVtYXgoMTA3MDAwMDAwMCkKKyAgICAgICAgICAgIHNlbGYucmVhZGNvbnRleHQuX3Vuc2FmZV9zZXRlbWluKC0xMDcwMDAwMDAwKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVhZGNvbnRleHQuY3JlYXRlX2RlY2ltYWwodikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmRlY2ltYWwuRGVjaW1hbCh2LCBjb250ZXh0KQogCiAgICAgZGVmIGV2YWxfZmlsZShzZWxmLCBmaWxlKToKICAgICAgICAgZ2xvYmFsIHNraXBfZXhwZWN0ZWQKQEAgLTIyNyw3ICsyOTcsNyBAQAogICAgICAgICAgICAgICAgICNwcmludCBsaW5lCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICB0ID0gc2VsZi5ldmFsX2xpbmUobGluZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgRGVjaW1hbEV4Y2VwdGlvbiBhcyBleGNlcHRpb246CisgICAgICAgICAgICAgICAgZXhjZXB0IHNlbGYuZGVjaW1hbC5EZWNpbWFsRXhjZXB0aW9uIGFzIGV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgICAgI0V4Y2VwdGlvbiByYWlzZWQgd2hlcmUgdGhlcmUgc2hvdWxkbid0IGhhdmUgYmVlbiBvbmUuCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnRXhjZXB0aW9uICInK2V4Y2VwdGlvbi5fX2NsYXNzX18uX19uYW1lX18gKyAnIiByYWlzZWQgb24gbGluZSAnK2xpbmUpCiAKQEAgLTI1NCwyMyArMzI0LDIzIEBACiAgICAgZGVmIGV2YWxfZGlyZWN0aXZlKHNlbGYsIHMpOgogICAgICAgICBmdW5jdCwgdmFsdWUgPSAoeC5zdHJpcCgpLmxvd2VyKCkgZm9yIHggaW4gcy5zcGxpdCgnOicpKQogICAgICAgICBpZiBmdW5jdCA9PSAncm91bmRpbmcnOgotICAgICAgICAgICAgdmFsdWUgPSBSb3VuZGluZ0RpY3RbdmFsdWVdCisgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuUm91bmRpbmdEaWN0W3ZhbHVlXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHZhbHVlID0gaW50KHZhbHVlKQogICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogCi0gICAgICAgIGZ1bmN0ID0gc2VsZi5DaGFuZ2VEaWN0LmdldChmdW5jdCwgTm9uZnVuY3Rpb24pCisgICAgICAgIGZ1bmN0ID0gc2VsZi5DaGFuZ2VEaWN0LmdldChmdW5jdCwgKGxhbWJkYSAqYXJnczogTm9uZSkpCiAgICAgICAgIGZ1bmN0KHZhbHVlKQogCiAgICAgZGVmIGV2YWxfZXF1YXRpb24oc2VsZiwgcyk6Ci0gICAgICAgICNnbG9iYWwgREVGQVVMVF9QUkVDSVNJT04KLSAgICAgICAgI3ByaW50IERFRkFVTFRfUFJFQ0lTSU9OCiAKICAgICAgICAgaWYgbm90IFRFU1RfQUxMIGFuZCByYW5kb20ucmFuZG9tKCkgPCAwLjkwOgogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgc2VsZi5jb250ZXh0LmNsZWFyX2ZsYWdzKCkKKwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBTaWRlcyA9IHMuc3BsaXQoJy0+JykKICAgICAgICAgICAgIEwgPSBTaWRlc1swXS5zdHJpcCgpLnNwbGl0KCkKQEAgLTI4MywyNiArMzUzLDI2IEBACiAgICAgICAgICAgICBhbnMgPSBMWzBdCiAgICAgICAgICAgICBleGNlcHRpb25zID0gTFsxOl0KICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBJbmRleEVycm9yKToKLSAgICAgICAgICAgIHJhaXNlIEludmFsaWRPcGVyYXRpb24KKyAgICAgICAgICAgIHJhaXNlIHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCiAgICAgICAgIGRlZiBGaXhRdW90ZXModmFsKToKICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKCInJyIsICdTaW5nbGVRdW90ZScpLnJlcGxhY2UoJyIiJywgJ0RvdWJsZVF1b3RlJykKICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKCInIiwgJycpLnJlcGxhY2UoJyInLCAnJykKICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKCdTaW5nbGVRdW90ZScsICInIikucmVwbGFjZSgnRG91YmxlUXVvdGUnLCAnIicpCiAgICAgICAgICAgICByZXR1cm4gdmFsCiAKLSAgICAgICAgaWYgaWQgaW4gc2tpcHBlZF90ZXN0X2lkczoKKyAgICAgICAgaWYgaWQgaW4gc2VsZi5za2lwcGVkX3Rlc3RfaWRzOgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgZm5hbWUgPSBuYW1lQWRhcHRlci5nZXQoZnVuY3QsIGZ1bmN0KQorICAgICAgICBmbmFtZSA9IHNlbGYuTmFtZUFkYXB0ZXIuZ2V0KGZ1bmN0LCBmdW5jdCkKICAgICAgICAgaWYgZm5hbWUgPT0gJ3Jlc2NhbGUnOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGZ1bmN0ID0gZ2V0YXR0cihzZWxmLmNvbnRleHQsIGZuYW1lKQogICAgICAgICB2YWxzID0gW10KICAgICAgICAgY29uZ2xvbWVyYXRlID0gJycKICAgICAgICAgcXVvdGUgPSAwCi0gICAgICAgIHRoZWlyZXhjZXB0aW9ucyA9IFtFcnJvck5hbWVzW3gubG93ZXIoKV0gZm9yIHggaW4gZXhjZXB0aW9uc10KKyAgICAgICAgdGhlaXJleGNlcHRpb25zID0gW3NlbGYuRXJyb3JOYW1lc1t4Lmxvd2VyKCldIGZvciB4IGluIGV4Y2VwdGlvbnNdCiAKLSAgICAgICAgZm9yIGV4Y2VwdGlvbiBpbiBTaWduYWxzOgorICAgICAgICBmb3IgZXhjZXB0aW9uIGluIFNpZ25hbHNbc2VsZi5kZWNpbWFsXToKICAgICAgICAgICAgIHNlbGYuY29udGV4dC50cmFwc1tleGNlcHRpb25dID0gMSAjQ2F0Y2ggdGhlc2UgYnVncy4uLgogICAgICAgICBmb3IgZXhjZXB0aW9uIGluIHRoZWlyZXhjZXB0aW9uczoKICAgICAgICAgICAgIHNlbGYuY29udGV4dC50cmFwc1tleGNlcHRpb25dID0gMApAQCAtMzI0LDcgKzM5NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Qoc2VsZi5jb250ZXh0LmNyZWF0ZV9kZWNpbWFsKHYpKQogICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IGVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBTaWduYWxzIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgU2lnbmFsc1tzZWxmLmRlY2ltYWxdIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJSYWlzZWQgJXMgaW4gJXMgd2hlbiAlcyBkaXNhYmxlZCIgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLCBzLCBlcnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtMzMyLDcgKzQwMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQudHJhcHNbZXJyb3JdID0gMAogICAgICAgICAgICAgICAgIHYgPSBzZWxmLmNvbnRleHQuY3JlYXRlX2RlY2ltYWwodikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdiA9IERlY2ltYWwodiwgc2VsZi5jb250ZXh0KQorICAgICAgICAgICAgICAgIHYgPSBzZWxmLnJlYWRfdW5saW1pdGVkKHYsIHNlbGYuY29udGV4dCkKICAgICAgICAgICAgIHZhbHMuYXBwZW5kKHYpCiAKICAgICAgICAgYW5zID0gRml4UXVvdGVzKGFucykKQEAgLTM0NCw3ICs0MTQsNyBAQAogICAgICAgICAgICAgICAgICAgICBmdW5jdCgqdmFscykKICAgICAgICAgICAgICAgICBleGNlcHQgZXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBleGNlcHQgU2lnbmFscyBhcyBlOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBTaWduYWxzW3NlbGYuZGVjaW1hbF0gYXMgZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJSYWlzZWQgJXMgaW4gJXMgd2hlbiAlcyBkaXNhYmxlZCIgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZSwgcywgZXJyb3IpKQogICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0zNTIsMTQgKzQyMiwxNCBAQAogICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC50cmFwc1tlcnJvcl0gPSAwCiAKICAgICAgICAgICAgICMgYXMgYWJvdmUsIGJ1dCBhZGQgdHJhcHMgY3VtdWxhdGl2ZWx5LCB0byBjaGVjayBwcmVjZWRlbmNlCi0gICAgICAgICAgICBvcmRlcmVkX2Vycm9ycyA9IFtlIGZvciBlIGluIE9yZGVyZWRTaWduYWxzIGlmIGUgaW4gdGhlaXJleGNlcHRpb25zXQorICAgICAgICAgICAgb3JkZXJlZF9lcnJvcnMgPSBbZSBmb3IgZSBpbiBPcmRlcmVkU2lnbmFsc1tzZWxmLmRlY2ltYWxdIGlmIGUgaW4gdGhlaXJleGNlcHRpb25zXQogICAgICAgICAgICAgZm9yIGVycm9yIGluIG9yZGVyZWRfZXJyb3JzOgogICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC50cmFwc1tlcnJvcl0gPSAxCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBmdW5jdCgqdmFscykKICAgICAgICAgICAgICAgICBleGNlcHQgZXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBleGNlcHQgU2lnbmFscyBhcyBlOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBTaWduYWxzW3NlbGYuZGVjaW1hbF0gYXMgZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJSYWlzZWQgJXMgaW4gJXM7IGV4cGVjdGVkICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZShlKSwgcywgZXJyb3IpKQogICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0zNzMsNTQgKzQ0Myw2OSBAQAogICAgICAgICAgICAgcHJpbnQoIi0tIiwgc2VsZi5jb250ZXh0KQogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXN1bHQgPSBzdHIoZnVuY3QoKnZhbHMpKQotICAgICAgICAgICAgaWYgZm5hbWUgaW4gTE9HSUNBTF9GVU5DVElPTlM6CisgICAgICAgICAgICBpZiBmbmFtZSBpbiBzZWxmLkxvZ2ljYWxGdW5jdGlvbnM6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3RyKGludChldmFsKHJlc3VsdCkpKSAjICdUcnVlJywgJ0ZhbHNlJyAtPiAnMScsICcwJwotICAgICAgICBleGNlcHQgU2lnbmFscyBhcyBlcnJvcjoKKyAgICAgICAgZXhjZXB0IFNpZ25hbHNbc2VsZi5kZWNpbWFsXSBhcyBlcnJvcjoKICAgICAgICAgICAgIHNlbGYuZmFpbCgiUmFpc2VkICVzIGluICVzIiAlIChlcnJvciwgcykpCiAgICAgICAgIGV4Y2VwdDogI0NhdGNoIGFueSBlcnJvciBsb25nIGVub3VnaCB0byBzdGF0ZSB0aGUgdGVzdCBjYXNlLgogICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiIsIHMpCiAgICAgICAgICAgICByYWlzZQogCiAgICAgICAgIG15ZXhjZXB0aW9ucyA9IHNlbGYuZ2V0ZXhjZXB0aW9ucygpCi0gICAgICAgIHNlbGYuY29udGV4dC5jbGVhcl9mbGFncygpCiAKICAgICAgICAgbXlleGNlcHRpb25zLnNvcnQoa2V5PXJlcHIpCiAgICAgICAgIHRoZWlyZXhjZXB0aW9ucy5zb3J0KGtleT1yZXByKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBhbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0luY29ycmVjdCBhbnN3ZXIgZm9yICcgKyBzICsgJyAtLSBnb3QgJyArIHJlc3VsdCkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15ZXhjZXB0aW9ucywgdGhlaXJleGNlcHRpb25zLAogICAgICAgICAgICAgICAnSW5jb3JyZWN0IGZsYWdzIHNldCBpbiAnICsgcyArICcgLS0gZ290ICcgKyBzdHIobXlleGNlcHRpb25zKSkKICAgICAgICAgcmV0dXJuCiAKICAgICBkZWYgZ2V0ZXhjZXB0aW9ucyhzZWxmKToKLSAgICAgICAgcmV0dXJuIFtlIGZvciBlIGluIFNpZ25hbHMgaWYgc2VsZi5jb250ZXh0LmZsYWdzW2VdXQorICAgICAgICByZXR1cm4gW2UgZm9yIGUgaW4gU2lnbmFsc1tzZWxmLmRlY2ltYWxdIGlmIHNlbGYuY29udGV4dC5mbGFnc1tlXV0KIAogICAgIGRlZiBjaGFuZ2VfcHJlY2lzaW9uKHNlbGYsIHByZWMpOgotICAgICAgICBzZWxmLmNvbnRleHQucHJlYyA9IHByZWMKKyAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEMgYW5kIHNlbGYuZGVjaW1hbC5NQVhfUFJFQyA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBzZWxmLmNvbnRleHQuX3Vuc2FmZV9zZXRwcmVjKHByZWMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNvbnRleHQucHJlYyA9IHByZWMKICAgICBkZWYgY2hhbmdlX3JvdW5kaW5nX21ldGhvZChzZWxmLCByb3VuZGluZyk6CiAgICAgICAgIHNlbGYuY29udGV4dC5yb3VuZGluZyA9IHJvdW5kaW5nCiAgICAgZGVmIGNoYW5nZV9taW5fZXhwb25lbnQoc2VsZiwgZXhwKToKLSAgICAgICAgc2VsZi5jb250ZXh0LkVtaW4gPSBleHAKKyAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEMgYW5kIHNlbGYuZGVjaW1hbC5NQVhfUFJFQyA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBzZWxmLmNvbnRleHQuX3Vuc2FmZV9zZXRlbWluKGV4cCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY29udGV4dC5FbWluID0gZXhwCiAgICAgZGVmIGNoYW5nZV9tYXhfZXhwb25lbnQoc2VsZiwgZXhwKToKLSAgICAgICAgc2VsZi5jb250ZXh0LkVtYXggPSBleHAKKyAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEMgYW5kIHNlbGYuZGVjaW1hbC5NQVhfUFJFQyA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBzZWxmLmNvbnRleHQuX3Vuc2FmZV9zZXRlbWF4KGV4cCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY29udGV4dC5FbWF4ID0gZXhwCiAgICAgZGVmIGNoYW5nZV9jbGFtcChzZWxmLCBjbGFtcCk6CiAgICAgICAgIHNlbGYuY29udGV4dC5jbGFtcCA9IGNsYW1wCiAKLQorY2xhc3MgQ0lCTVRlc3RDYXNlcyhJQk1UZXN0Q2FzZXMpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUlCTVRlc3RDYXNlcyhJQk1UZXN0Q2FzZXMpOgorICAgIGRlY2ltYWwgPSBQCiAKICMgVGhlIGZvbGxvd2luZyBjbGFzc2VzIHRlc3QgdGhlIGJlaGF2aW91ciBvZiBEZWNpbWFsIGFjY29yZGluZyB0byBQRVAgMzI3CiAKLWNsYXNzIERlY2ltYWxFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgRXhwbGljaXRDb25zdHJ1Y3Rpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAnJydVbml0IHRlc3RzIGZvciBFeHBsaWNpdCBDb25zdHJ1Y3Rpb24gY2FzZXMgb2YgRGVjaW1hbC4nJycKIAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2VtcHR5KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCksIERlY2ltYWwoIjAiKSkKIAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2Zyb21fTm9uZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2Zyb21faW50KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICAjcG9zaXRpdmUKICAgICAgICAgZCA9IERlY2ltYWwoNDUpCkBAIC00MzgsNyArNTIzLDE4IEBACiAgICAgICAgIGQgPSBEZWNpbWFsKDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCAnMCcpCiAKKyAgICAgICAgIyBzaW5nbGUgd29yZCBsb25ncworICAgICAgICBmb3IgbiBpbiByYW5nZSgwLCAzMik6CisgICAgICAgICAgICBmb3Igc2lnbiBpbiAoLTEsIDEpOgorICAgICAgICAgICAgICAgIGZvciB4IGluIHJhbmdlKC01LCA1KToKKyAgICAgICAgICAgICAgICAgICAgaSA9IHNpZ24gKiAoMioqbiArIHgpCisgICAgICAgICAgICAgICAgICAgIGQgPSBEZWNpbWFsKGkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCBzdHIoaSkpCisKICAgICBkZWYgdGVzdF9leHBsaWNpdF9mcm9tX3N0cmluZyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CiAKICAgICAgICAgI2VtcHR5CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoJycpKSwgJ05hTicpCkBAIC00NTgsOCArNTU0LDQ0IEBACiAgICAgICAgICNsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIHBlcm1pdHRlZAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCcxLjNFNCBcbicpKSwgJzEuM0UrNCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoJyAgLTcuODknKSksICctNy44OScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoIiAgMy40NTY3OSAgIikpLCAnMy40NTY3OScpCisKKyAgICAgICAgIyB1bmljb2RlIHdoaXRlc3BhY2UKKyAgICAgICAgZm9yIGxlYWQgaW4gWyIiLCAnICcsICdcdTAwYTAnLCAnXHUyMDVmJ106CisgICAgICAgICAgICBmb3IgdHJhaWwgaW4gWyIiLCAnICcsICdcdTAwYTAnLCAnXHUyMDVmJ106CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbChsZWFkICsgJzkuMzExRSsyOCcgKyB0cmFpbCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzkuMzExRSsyOCcpCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IFRydWUKKyAgICAgICAgICAgICMgSW52YWxpZCBzdHJpbmcKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICJ4eXoiKQorICAgICAgICAgICAgIyBUd28gYXJndW1lbnRzIG1heAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEZWNpbWFsLCAiMTIzNCIsICJ4IiwgInkiKQorCisgICAgICAgICAgICAjIHNwYWNlIHdpdGhpbiB0aGUgbnVtZXJpYyBwYXJ0CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCAiMVx1MDBhMDJcdTAwYTAzIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICJcdTAwYTAxXHUwMGEwMlx1MDBhMCIpCisKKyAgICAgICAgICAgICMgdW5pY29kZSB3aGl0ZXNwYWNlCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCAiXHUwMGEwIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICJcdTAwYTBcdTAwYTAiKQorCisgICAgICAgICAgICAjIGVtYmVkZGVkIE5VTAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgIjEyXHUwMDAwMyIpCisKKyAgICBAY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfZnJvbV9sZWdhY3lfc3RyaW5ncyhzZWxmKToKKyAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgY29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0KCkKKworICAgICAgICBzID0gX3Rlc3RjYXBpLnVuaWNvZGVfbGVnYWN5X3N0cmluZygnOS45OTk5OTknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKHMpKSwgJzkuOTk5OTk5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY29udGV4dC5jcmVhdGVfZGVjaW1hbChzKSksICc5Ljk5OTk5OScpCiAKICAgICBkZWYgdGVzdF9leHBsaWNpdF9mcm9tX3R1cGxlcyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgI3plcm8KICAgICAgICAgZCA9IERlY2ltYWwoICgwLCAoMCwpLCAwKSApCkBAIC00NzcsNiArNjA5LDEwIEBACiAgICAgICAgIGQgPSBEZWNpbWFsKCAoMSwgKDQsIDMsIDQsIDksIDEsIDMsIDUsIDMsIDQpLCAtMjUpICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZCksICctNC4zNDkxMzUzNEUtMTcnKQogCisgICAgICAgICNpbmYKKyAgICAgICAgZCA9IERlY2ltYWwoICgwLCAoKSwgIkYiKSApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCAnSW5maW5pdHknKQorCiAgICAgICAgICN3cm9uZyBudW1iZXIgb2YgaXRlbXMKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRGVjaW1hbCwgKDEsICg0LCAzLCA0LCA5LCAxKSkgKQogCkBAIC00OTEsNDUgKzYyNyw2MyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsLCAoMSwgKDQsIDMsIDQsIDksIDEpLCAnMScpICkKIAogICAgICAgICAjYmFkIGNvZWZmaWNpZW50cworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsLCAoMSwgInh5eiIsIDIpICkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRGVjaW1hbCwgKDEsICg0LCAzLCA0LCBOb25lLCAxKSwgMikgKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsLCAoMSwgKDQsIC0zLCA0LCA5LCAxKSwgMikgKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsLCAoMSwgKDQsIDEwLCA0LCA5LCAxKSwgMikgKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsLCAoMSwgKDQsIDMsIDQsICdhJywgMSksIDIpICkKIAorICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2Zyb21fbGlzdChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgZCA9IERlY2ltYWwoWzAsIFswXSwgMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCAnMCcpCisKKyAgICAgICAgZCA9IERlY2ltYWwoWzEsIFs0LCAzLCA0LCA5LCAxLCAzLCA1LCAzLCA0XSwgLTI1XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZCksICctNC4zNDkxMzUzNEUtMTcnKQorCisgICAgICAgIGQgPSBEZWNpbWFsKFsxLCAoNCwgMywgNCwgOSwgMSwgMywgNSwgMywgNCksIC0yNV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCAnLTQuMzQ5MTM1MzRFLTE3JykKKworICAgICAgICBkID0gRGVjaW1hbCgoMSwgWzQsIDMsIDQsIDksIDEsIDMsIDUsIDMsIDRdLCAtMjUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihkKSwgJy00LjM0OTEzNTM0RS0xNycpCisKICAgICBkZWYgdGVzdF9leHBsaWNpdF9mcm9tX2Jvb2woc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoYm9vbChEZWNpbWFsKDApKSwgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoYm9vbChEZWNpbWFsKDEpKSwgVHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKEZhbHNlKSwgRGVjaW1hbCgwKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKFRydWUpLCBEZWNpbWFsKDEpKQogCiAgICAgZGVmIHRlc3RfZXhwbGljaXRfZnJvbV9EZWNpbWFsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICAjcG9zaXRpdmUKICAgICAgICAgZCA9IERlY2ltYWwoNDUpCiAgICAgICAgIGUgPSBEZWNpbWFsKGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnNDUnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKIAogICAgICAgICAjdmVyeSBsYXJnZSBwb3NpdGl2ZQogICAgICAgICBkID0gRGVjaW1hbCg1MDAwMDAxMjMpCiAgICAgICAgIGUgPSBEZWNpbWFsKGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnNTAwMDAwMTIzJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCiAKICAgICAgICAgI25lZ2F0aXZlCiAgICAgICAgIGQgPSBEZWNpbWFsKC00NSkKICAgICAgICAgZSA9IERlY2ltYWwoZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICctNDUnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKIAogICAgICAgICAjemVybwogICAgICAgICBkID0gRGVjaW1hbCgwKQogICAgICAgICBlID0gRGVjaW1hbChkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgJzAnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKIAogICAgIEByZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2Zyb21fZmxvYXQoc2VsZik6CisKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKICAgICAgICAgciA9IERlY2ltYWwoMC4xKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUociksIERlY2ltYWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHIpLApAQCAtNTUwLDggKzcwNCwxMSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBmbG9hdChEZWNpbWFsKHgpKSkgIyByb3VuZHRyaXAKIAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2NvbnRleHRfY3JlYXRlX2RlY2ltYWwoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgUm91bmRlZCA9IHNlbGYuZGVjaW1hbC5Sb3VuZGVkCiAKLSAgICAgICAgbmMgPSBjb3B5LmNvcHkoZ2V0Y29udGV4dCgpKQorICAgICAgICBuYyA9IGNvcHkuY29weShzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dCgpKQogICAgICAgICBuYy5wcmVjID0gMwogCiAgICAgICAgICMgZW1wdHkKQEAgLTU5Miw3ICs3NDksNzMgQEAKICAgICAgICAgZCA9IG5jLmNyZWF0ZV9kZWNpbWFsKHByZXZkZWMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCAnNS4wMEUrOCcpCiAKKyAgICAgICAgIyBtb3JlIGludGVnZXJzCisgICAgICAgIG5jLnByZWMgPSAyOAorICAgICAgICBuYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IFRydWUKKworICAgICAgICBmb3IgdiBpbiBbLTIqKjYzLTEsIC0yKio2MywgLTIqKjMxLTEsIC0yKiozMSwgMCwKKyAgICAgICAgICAgICAgICAgICAyKiozMS0xLCAyKiozMSwgMioqNjMtMSwgMioqNjNdOgorICAgICAgICAgICAgZCA9IG5jLmNyZWF0ZV9kZWNpbWFsKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShkLCBEZWNpbWFsKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KGQpLCB2KQorCisgICAgICAgIG5jLnByZWMgPSAzCisgICAgICAgIG5jLnRyYXBzW1JvdW5kZWRdID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSb3VuZGVkLCBuYy5jcmVhdGVfZGVjaW1hbCwgMTIzNCkKKworICAgICAgICAjIGZyb20gc3RyaW5nCisgICAgICAgIG5jLnByZWMgPSAyOAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbCgnMEUtMDE3JykpLCAnMEUtMTcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbCgnNDUnKSksICc0NScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKCctSW5mJykpLCAnLUluZmluaXR5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobmMuY3JlYXRlX2RlY2ltYWwoJ05hTjEyMycpKSwgJ05hTjEyMycpCisKKyAgICAgICAgIyBpbnZhbGlkIGFyZ3VtZW50cworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBuYy5jcmVhdGVfZGVjaW1hbCwgInh5eiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5jLmNyZWF0ZV9kZWNpbWFsLCAoMSwgInh5eiIsIC0yNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmMuY3JlYXRlX2RlY2ltYWwsICIxMjM0IiwgIjU2NzgiKQorCisgICAgICAgICMgdG9vIG1hbnkgTmFOIHBheWxvYWQgZGlnaXRzCisgICAgICAgIG5jLnByZWMgPSAzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG5jLmNyZWF0ZV9kZWNpbWFsLCAnTmFOMTIzNDUnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBuYy5jcmVhdGVfZGVjaW1hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgnTmFOMTIzNDUnKSkKKworICAgICAgICBuYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKCdOYU4xMjM0NScpKSwgJ05hTicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICBuYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKERlY2ltYWwoJ05hTjEyMzQ1JykpKSwgJ05hTicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2NvbnRleHRfY3JlYXRlX2Zyb21fZmxvYXQoc2VsZik6CisKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgbmMgPSBzZWxmLmRlY2ltYWwuQ29udGV4dCgpCisgICAgICAgIHIgPSBuYy5jcmVhdGVfZGVjaW1hbCgwLjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShyKSwgRGVjaW1hbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIociksICcwLjEwMDAwMDAwMDAwMDAwMDAwNTU1MTExNTEyMzEnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobmMuY3JlYXRlX2RlY2ltYWwoZmxvYXQoJ25hbicpKS5pc19xbmFuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYy5jcmVhdGVfZGVjaW1hbChmbG9hdCgnaW5mJykpLmlzX2luZmluaXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYy5jcmVhdGVfZGVjaW1hbChmbG9hdCgnLWluZicpKS5pc19pbmZpbml0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbChmbG9hdCgnbmFuJykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHIobmMuY3JlYXRlX2RlY2ltYWwoJ05hTicpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobmMuY3JlYXRlX2RlY2ltYWwoZmxvYXQoJ2luZicpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKCdJbmZpbml0eScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobmMuY3JlYXRlX2RlY2ltYWwoZmxvYXQoJy1pbmYnKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihuYy5jcmVhdGVfZGVjaW1hbCgnLUluZmluaXR5JykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbChmbG9hdCgnLTAuMCcpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKCctMCcpKSkKKyAgICAgICAgbmMucHJlYyA9IDEwMAorICAgICAgICBmb3IgaSBpbiByYW5nZSgyMDApOgorICAgICAgICAgICAgeCA9IHJhbmRvbS5leHBvdmFyaWF0ZSgwLjAxKSAqIChyYW5kb20ucmFuZG9tKCkgKiAyLjAgLSAxLjApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIGZsb2F0KG5jLmNyZWF0ZV9kZWNpbWFsKHgpKSkgIyByb3VuZHRyaXAKKwogICAgIGRlZiB0ZXN0X3VuaWNvZGVfZGlnaXRzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICB0ZXN0X3ZhbHVlcyA9IHsKICAgICAgICAgICAgICdcdWZmMTEnOiAnMScsCiAgICAgICAgICAgICAnXHUwNjYwLlx1MDY2MFx1MDY2M1x1MDY2N1x1MDY2MmUtXHUwNjYzJyA6ICcwLjAwMDAzNzInLApAQCAtNjAxLDI5ICs4MjQsNDEgQEAKICAgICAgICAgZm9yIGlucHV0LCBleHBlY3RlZCBpbiB0ZXN0X3ZhbHVlcy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbChpbnB1dCkpLCBleHBlY3RlZCkKIAorY2xhc3MgQ0V4cGxpY2l0Q29uc3RydWN0aW9uVGVzdChFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUV4cGxpY2l0Q29uc3RydWN0aW9uVGVzdChFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QpOgorICAgIGRlY2ltYWwgPSBQCiAKLWNsYXNzIERlY2ltYWxJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgSW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAnJydVbml0IHRlc3RzIGZvciBJbXBsaWNpdCBDb25zdHJ1Y3Rpb24gY2FzZXMgb2YgRGVjaW1hbC4nJycKIAogICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2Zyb21fTm9uZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAnRGVjaW1hbCg1KSArIE5vbmUnLCBnbG9iYWxzKCkpCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV2YWwsICdEZWNpbWFsKDUpICsgTm9uZScsIGxvY2FscygpKQogCiAgICAgZGVmIHRlc3RfaW1wbGljaXRfZnJvbV9pbnQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgICNub3JtYWwKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCg1KSArIDQ1KSwgJzUwJykKICAgICAgICAgI2V4Y2VlZGluZyBwcmVjaXNpb24KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDUpICsgMTIzNDU2Nzg5MDAwLCBEZWNpbWFsKDEyMzQ1Njc4OTAwMCkpCiAKICAgICBkZWYgdGVzdF9pbXBsaWNpdF9mcm9tX3N0cmluZyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAnRGVjaW1hbCg1KSArICIzIicsIGdsb2JhbHMoKSkKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgJ0RlY2ltYWwoNSkgKyAiMyInLCBsb2NhbHMoKSkKIAogICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2Zyb21fZmxvYXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgJ0RlY2ltYWwoNSkgKyAyLjInLCBnbG9iYWxzKCkpCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV2YWwsICdEZWNpbWFsKDUpICsgMi4yJywgbG9jYWxzKCkpCiAKICAgICBkZWYgdGVzdF9pbXBsaWNpdF9mcm9tX0RlY2ltYWwoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNSkgKyBEZWNpbWFsKDQ1KSwgRGVjaW1hbCg1MCkpCiAKICAgICBkZWYgdGVzdF9yb3Aoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgICMgQWxsb3cgb3RoZXIgY2xhc3NlcyB0byBiZSB0cmFpbmVkIHRvIGludGVyYWN0IHdpdGggRGVjaW1hbHMKICAgICAgICAgY2xhc3MgRToKICAgICAgICAgICAgIGRlZiBfX2Rpdm1vZF9fKHNlbGYsIG90aGVyKToKQEAgLTY3MSwxMCArOTA2LDE2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoJ0RlY2ltYWwoMTApJyArIHN5bSArICdFKCknKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzEwJyArIHJvcCArICdzdHInKQogCitjbGFzcyBDSW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0KEltcGxpY2l0Q29uc3RydWN0aW9uVGVzdCk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5SW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0KEltcGxpY2l0Q29uc3RydWN0aW9uVGVzdCk6CisgICAgZGVjaW1hbCA9IFAKIAotY2xhc3MgRGVjaW1hbEZvcm1hdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgRm9ybWF0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgJycnVW5pdCB0ZXN0cyBmb3IgdGhlIGZvcm1hdCBmdW5jdGlvbi4nJycKICAgICBkZWYgdGVzdF9mb3JtYXR0aW5nKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICAjIHRyaXBsZXMgZ2l2aW5nIGEgZm9ybWF0LCBhIERlY2ltYWwsIGFuZCB0aGUgZXhwZWN0ZWQgcmVzdWx0CiAgICAgICAgIHRlc3RfdmFsdWVzID0gWwogICAgICAgICAgICAgKCdlJywgJzBFLTE1JywgJzBlLTE1JyksCkBAIC03MzAsNiArOTcxLDcgQEAKICAgICAgICAgICAgICgnZycsICcwRS03JywgJzBlLTcnKSwKICAgICAgICAgICAgICgnZycsICctMEUyJywgJy0wZSsyJyksCiAgICAgICAgICAgICAoJy4wZycsICczLjE0MTU5MjY1JywgJzMnKSwgICMgMCBzaWcgZmlnIC0+IDEgc2lnIGZpZworICAgICAgICAgICAgKCcuMG4nLCAnMy4xNDE1OTI2NScsICczJyksICAjIHNhbWUgZm9yICduJwogICAgICAgICAgICAgKCcuMWcnLCAnMy4xNDE1OTI2NScsICczJyksCiAgICAgICAgICAgICAoJy4yZycsICczLjE0MTU5MjY1JywgJzMuMScpLAogICAgICAgICAgICAgKCcuNWcnLCAnMy4xNDE1OTI2NScsICczLjE0MTYnKSwKQEAgLTgxNCw1NiArMTA1Niw2MCBAQAogCiAgICAgICAgICAgICAjIGlzc3VlIDY4NTAKICAgICAgICAgICAgICgnYT0tNy4wJywgJzAuMTIzNDUnLCAnYWFhYTAuMScpLAotCi0gICAgICAgICAgICAjIElzc3VlIDcwOTQ6IEFsdGVybmF0ZSBmb3JtYXR0aW5nIChzcGVjaWZpZWQgYnkgIykKLSAgICAgICAgICAgICgnLjBlJywgJzEuMCcsICcxZSswJyksCi0gICAgICAgICAgICAoJyMuMGUnLCAnMS4wJywgJzEuZSswJyksCi0gICAgICAgICAgICAoJy4wZicsICcxLjAnLCAnMScpLAotICAgICAgICAgICAgKCcjLjBmJywgJzEuMCcsICcxLicpLAotICAgICAgICAgICAgKCdnJywgJzEuMScsICcxLjEnKSwKLSAgICAgICAgICAgICgnI2cnLCAnMS4xJywgJzEuMScpLAotICAgICAgICAgICAgKCcuMGcnLCAnMScsICcxJyksCi0gICAgICAgICAgICAoJyMuMGcnLCAnMScsICcxLicpLAotICAgICAgICAgICAgKCcuMCUnLCAnMS4wJywgJzEwMCUnKSwKLSAgICAgICAgICAgICgnIy4wJScsICcxLjAnLCAnMTAwLiUnKSwKICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIGZtdCwgZCwgcmVzdWx0IGluIHRlc3RfdmFsdWVzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoRGVjaW1hbChkKSwgZm10KSwgcmVzdWx0KQogCisgICAgICAgICMgYnl0ZXMgZm9ybWF0IGFyZ3VtZW50CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCgxKS5fX2Zvcm1hdF9fLCBiJy0wMjAnKQorCiAgICAgZGVmIHRlc3Rfbl9mb3JtYXQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZyb20gbG9jYWxlIGltcG9ydCBDSEFSX01BWAogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICBkZWYgbWFrZV9ncm91cGluZyhsc3QpOgorICAgICAgICAgICAgcmV0dXJuICcnLmpvaW4oW2Nocih4KSBmb3IgeCBpbiBsc3RdKSBpZiBzZWxmLmRlY2ltYWwgPT0gQyBlbHNlIGxzdAorCisgICAgICAgIGRlZiBnZXRfZm10KHgsIG92ZXJyaWRlPU5vbmUsIGZtdD0nbicpOgorICAgICAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEM6CisgICAgICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoeCkuX19mb3JtYXRfXyhmbXQsIG92ZXJyaWRlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbCh4KS5fX2Zvcm1hdF9fKGZtdCwgX2xvY2FsZWNvbnY9b3ZlcnJpZGUpCisKICAgICAgICAgIyBTZXQgdXAgc29tZSBsb2NhbGVjb252LWxpa2UgZGljdGlvbmFyaWVzCiAgICAgICAgIGVuX1VTID0gewogICAgICAgICAgICAgJ2RlY2ltYWxfcG9pbnQnIDogJy4nLAotICAgICAgICAgICAgJ2dyb3VwaW5nJyA6IFszLCAzLCAwXSwKLSAgICAgICAgICAgICd0aG91c2FuZHNfc2VwJzogJywnCisgICAgICAgICAgICAnZ3JvdXBpbmcnIDogbWFrZV9ncm91cGluZyhbMywgMywgMF0pLAorICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnIDogJywnCiAgICAgICAgICAgICB9CiAKICAgICAgICAgZnJfRlIgPSB7CiAgICAgICAgICAgICAnZGVjaW1hbF9wb2ludCcgOiAnLCcsCi0gICAgICAgICAgICAnZ3JvdXBpbmcnIDogW0NIQVJfTUFYXSwKKyAgICAgICAgICAgICdncm91cGluZycgOiBtYWtlX2dyb3VwaW5nKFtDSEFSX01BWF0pLAogICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnIDogJycKICAgICAgICAgICAgIH0KIAogICAgICAgICBydV9SVSA9IHsKICAgICAgICAgICAgICdkZWNpbWFsX3BvaW50JyA6ICcsJywKLSAgICAgICAgICAgICdncm91cGluZycgOiBbMywgMywgMF0sCisgICAgICAgICAgICAnZ3JvdXBpbmcnOiBtYWtlX2dyb3VwaW5nKFszLCAzLCAwXSksCiAgICAgICAgICAgICAndGhvdXNhbmRzX3NlcCcgOiAnICcKICAgICAgICAgICAgIH0KIAogICAgICAgICBjcmF6eSA9IHsKICAgICAgICAgICAgICdkZWNpbWFsX3BvaW50JyA6ICcmJywKLSAgICAgICAgICAgICdncm91cGluZycgOiBbMSwgNCwgMiwgQ0hBUl9NQVhdLAorICAgICAgICAgICAgJ2dyb3VwaW5nJzogbWFrZV9ncm91cGluZyhbMSwgNCwgMiwgQ0hBUl9NQVhdKSwKICAgICAgICAgICAgICd0aG91c2FuZHNfc2VwJyA6ICctJwogICAgICAgICAgICAgfQogCi0KLSAgICAgICAgZGVmIGdldF9mbXQoeCwgbG9jYWxlLCBmbXQ9J24nKToKLSAgICAgICAgICAgIHJldHVybiBEZWNpbWFsLl9fZm9ybWF0X18oRGVjaW1hbCh4KSwgZm10LCBfbG9jYWxlY29udj1sb2NhbGUpCisgICAgICAgIGRvdHNlcF93aWRlID0geworICAgICAgICAgICAgJ2RlY2ltYWxfcG9pbnQnIDogYidceGMyXHhiZicuZGVjb2RlKCd1dGYtOCcpLAorICAgICAgICAgICAgJ2dyb3VwaW5nJzogbWFrZV9ncm91cGluZyhbMywgMywgMF0pLAorICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnIDogYidceGMyXHhiNCcuZGVjb2RlKCd1dGYtOCcpCisgICAgICAgICAgICB9CiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfZm10KERlY2ltYWwoJzEyLjcnKSwgZW5fVVMpLCAnMTIuNycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X2ZtdChEZWNpbWFsKCcxMi43JyksIGZyX0ZSKSwgJzEyLDcnKQpAQCAtOTAyLDExICsxMTQ4LDM0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X2ZtdCgxMjM0NTYsIGNyYXp5LCAnMDEybicpLCAnMDAtMDEtMjM0NS02JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfZm10KDEyMzQ1NiwgY3JhenksICcwMTNuJyksICcwMDAtMDEtMjM0NS02JykKIAorICAgICAgICAjIHdpZGUgY2hhciBzZXBhcmF0b3IgYW5kIGRlY2ltYWwgcG9pbnQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfZm10KERlY2ltYWwoJy0xLjUnKSwgZG90c2VwX3dpZGUsICcwMjBuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJy0wXHUwMGI0MDAwXHUwMGI0MDAwXHUwMGI0MDAwXHUwMGI0MDAxXHUwMGJmNScpCiAKLWNsYXNzIERlY2ltYWxBcml0aG1ldGljT3BlcmF0b3JzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQHJ1bl93aXRoX2xvY2FsZSgnTENfQUxMJywgJ3BzX0FGJykKKyAgICBkZWYgdGVzdF93aWRlX2NoYXJfc2VwYXJhdG9yX2RlY2ltYWxfcG9pbnQoc2VsZik6CisgICAgICAgICMgbG9jYWxlIHdpdGggd2lkZSBjaGFyIHNlcGFyYXRvciBhbmQgZGVjaW1hbCBwb2ludAorICAgICAgICBpbXBvcnQgbG9jYWxlCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIGRlY2ltYWxfcG9pbnQgPSBsb2NhbGUubG9jYWxlY29udigpWydkZWNpbWFsX3BvaW50J10KKyAgICAgICAgdGhvdXNhbmRzX3NlcCA9IGxvY2FsZS5sb2NhbGVjb252KClbJ3Rob3VzYW5kc19zZXAnXQorICAgICAgICBpZiBkZWNpbWFsX3BvaW50ICE9ICdcdTA2NmInIG9yIHRob3VzYW5kc19zZXAgIT0gJ1x1MDY2Yyc6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdChEZWNpbWFsKCcxMDAwMDAwMDAuMTIzJyksICduJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEwMFx1MDY2YzAwMFx1MDY2YzAwMFx1MDY2YjEyMycpCisKK2NsYXNzIENGb3JtYXRUZXN0KEZvcm1hdFRlc3QpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUZvcm1hdFRlc3QoRm9ybWF0VGVzdCk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgQXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICcnJ1VuaXQgdGVzdHMgZm9yIGFsbCBhcml0aG1ldGljIG9wZXJhdG9ycywgYmluYXJ5IGFuZCB1bmFyeS4nJycKIAogICAgIGRlZiB0ZXN0X2FkZGl0aW9uKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkMSA9IERlY2ltYWwoJy0xMS4xJykKICAgICAgICAgZDIgPSBEZWNpbWFsKCcyMi4yJykKQEAgLTkzNCw2ICsxMjAzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMSwgRGVjaW1hbCgnMTYuMScpKQogCiAgICAgZGVmIHRlc3Rfc3VidHJhY3Rpb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnLTExLjEnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzIyLjInKQpAQCAtOTYxLDYgKzEyMzEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQxLCBEZWNpbWFsKCctMzguMycpKQogCiAgICAgZGVmIHRlc3RfbXVsdGlwbGljYXRpb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnLTUnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzMnKQpAQCAtOTg4LDYgKzEyNTksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQxLCBEZWNpbWFsKCctNzUnKSkKIAogICAgIGRlZiB0ZXN0X2RpdmlzaW9uKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkMSA9IERlY2ltYWwoJy01JykKICAgICAgICAgZDIgPSBEZWNpbWFsKCcyJykKQEAgLTEwMTUsNiArMTI4Nyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDEsIERlY2ltYWwoJy0wLjYyNScpKQogCiAgICAgZGVmIHRlc3RfZmxvb3JfZGl2aXNpb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnNScpCiAgICAgICAgIGQyID0gRGVjaW1hbCgnMicpCkBAIC0xMDQyLDYgKzEzMTUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQxLCBEZWNpbWFsKCcxJykpCiAKICAgICBkZWYgdGVzdF9wb3dlcmluZyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCc1JykKICAgICAgICAgZDIgPSBEZWNpbWFsKCcyJykKQEAgLTEwNjksNiArMTM0Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDEsIERlY2ltYWwoJzM5MDYyNScpKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkMSA9IERlY2ltYWwoJzUnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzInKQpAQCAtMTA5Niw2ICsxMzcxLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMSwgRGVjaW1hbCgnMScpKQogCiAgICAgZGVmIHRlc3RfZmxvb3JfZGl2X21vZHVsZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCc1JykKICAgICAgICAgZDIgPSBEZWNpbWFsKCcyJykKQEAgLTExMjIsNiArMTM5OCw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShxKSwgdHlwZShkMSkpCiAKICAgICBkZWYgdGVzdF91bmFyeV9vcGVyYXRvcnMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoK0RlY2ltYWwoNDUpLCBEZWNpbWFsKCs0NSkpICAgICAgICAgICAjICArCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLURlY2ltYWwoNDUpLCBEZWNpbWFsKC00NSkpICAgICAgICAgICAjICAtCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWJzKERlY2ltYWwoNDUpKSwgYWJzKERlY2ltYWwoLTQ1KSkpICAjIGFicwpAQCAtMTEzNCw2ICsxNDEyLDkgQEAKIAogICAgICAgICAjIGVxdWFsaXR5IGNvbXBhcmlzb25zICg9PSwgIT0pIGludm9sdmluZyBvbmx5IHF1aWV0IG5hbnMKICAgICAgICAgIyBkb24ndCBzaWduYWwsIGJ1dCByZXR1cm4gRmFsc2Ugb3IgVHJ1ZSByZXNwZWN0aXZlbHkuCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAogCiAgICAgICAgIG4gPSBEZWNpbWFsKCdOYU4nKQogICAgICAgICBzID0gRGVjaW1hbCgnc05hTicpCkBAIC0xMTc5LDUzICsxNDYwLDEyNCBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBvcCwgeCwgeSkKIAogICAgIGRlZiB0ZXN0X2NvcHlfc2lnbihzZWxmKToKLSAgICAgICAgZCA9IERlY2ltYWwoMSkuY29weV9zaWduKERlY2ltYWwoLTIpKQorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAorICAgICAgICBkID0gRGVjaW1hbCgxKS5jb3B5X3NpZ24oRGVjaW1hbCgtMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxKS5jb3B5X3NpZ24oLTIpLCBkKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoMSkuY29weV9zaWduLCAnLTInKQogCitjbGFzcyBDQXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QoQXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUFyaXRobWV0aWNPcGVyYXRvcnNUZXN0KEFyaXRobWV0aWNPcGVyYXRvcnNUZXN0KToKKyAgICBkZWNpbWFsID0gUAorCiAjIFRoZSBmb2xsb3dpbmcgYXJlIHR3byBmdW5jdGlvbnMgdXNlZCB0byB0ZXN0IHRocmVhZGluZyBpbiB0aGUgbmV4dCBjbGFzcwogCiBkZWYgdGhmdW5jMShjbHMpOgorICAgIERlY2ltYWwgPSBjbHMuZGVjaW1hbC5EZWNpbWFsCisgICAgSW52YWxpZE9wZXJhdGlvbiA9IGNscy5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICBEaXZpc2lvbkJ5WmVybyA9IGNscy5kZWNpbWFsLkRpdmlzaW9uQnlaZXJvCisgICAgT3ZlcmZsb3cgPSBjbHMuZGVjaW1hbC5PdmVyZmxvdworICAgIFVuZGVyZmxvdyA9IGNscy5kZWNpbWFsLlVuZGVyZmxvdworICAgIEluZXhhY3QgPSBjbHMuZGVjaW1hbC5JbmV4YWN0CisgICAgZ2V0Y29udGV4dCA9IGNscy5kZWNpbWFsLmdldGNvbnRleHQKKyAgICBsb2NhbGNvbnRleHQgPSBjbHMuZGVjaW1hbC5sb2NhbGNvbnRleHQKKwogICAgIGQxID0gRGVjaW1hbCgxKQogICAgIGQzID0gRGVjaW1hbCgzKQogICAgIHRlc3QxID0gZDEvZDMKLSAgICBjbHMuc3luY2hyby53YWl0KCkKLSAgICB0ZXN0MiA9IGQxL2QzCi0gICAgY2xzLmZpbmlzaDEuc2V0KCkKIAotICAgIGNscy5hc3NlcnRFcXVhbCh0ZXN0MSwgRGVjaW1hbCgnMC4zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzJykpCi0gICAgY2xzLmFzc2VydEVxdWFsKHRlc3QyLCBEZWNpbWFsKCcwLjMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMnKSkKKyAgICBjbHMuZmluaXNoMS5zZXQoKQorICAgIGNscy5zeW5jaHJvLndhaXQoKQorCisgICAgdGVzdDIgPSBkMS9kMworICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzI6CisgICAgICAgIGNscy5hc3NlcnRUcnVlKGMyLmZsYWdzW0luZXhhY3RdKQorICAgICAgICBjbHMuYXNzZXJ0UmFpc2VzKERpdmlzaW9uQnlaZXJvLCBjMi5kaXZpZGUsIGQxLCAwKQorICAgICAgICBjbHMuYXNzZXJ0VHJ1ZShjMi5mbGFnc1tEaXZpc2lvbkJ5WmVyb10pCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzM6CisgICAgICAgICAgICBjbHMuYXNzZXJ0VHJ1ZShjMy5mbGFnc1tJbmV4YWN0XSkKKyAgICAgICAgICAgIGNscy5hc3NlcnRUcnVlKGMzLmZsYWdzW0RpdmlzaW9uQnlaZXJvXSkKKyAgICAgICAgICAgIGNscy5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgYzMuY29tcGFyZSwgZDEsIERlY2ltYWwoJ3NOYU4nKSkKKyAgICAgICAgICAgIGNscy5hc3NlcnRUcnVlKGMzLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgZGVsIGMzCisgICAgICAgIGNscy5hc3NlcnRGYWxzZShjMi5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKyAgICAgICAgZGVsIGMyCisKKyAgICBjbHMuYXNzZXJ0RXF1YWwodGVzdDEsIERlY2ltYWwoJzAuMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzJykpCisgICAgY2xzLmFzc2VydEVxdWFsKHRlc3QyLCBEZWNpbWFsKCcwLjMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMycpKQorCisgICAgYzEgPSBnZXRjb250ZXh0KCkKKyAgICBjbHMuYXNzZXJ0VHJ1ZShjMS5mbGFnc1tJbmV4YWN0XSkKKyAgICBmb3Igc2lnIGluIE92ZXJmbG93LCBVbmRlcmZsb3csIERpdmlzaW9uQnlaZXJvLCBJbnZhbGlkT3BlcmF0aW9uOgorICAgICAgICBjbHMuYXNzZXJ0RmFsc2UoYzEuZmxhZ3Nbc2lnXSkKICAgICByZXR1cm4KIAogZGVmIHRoZnVuYzIoY2xzKToKKyAgICBEZWNpbWFsID0gY2xzLmRlY2ltYWwuRGVjaW1hbAorICAgIEludmFsaWRPcGVyYXRpb24gPSBjbHMuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCisgICAgRGl2aXNpb25CeVplcm8gPSBjbHMuZGVjaW1hbC5EaXZpc2lvbkJ5WmVybworICAgIE92ZXJmbG93ID0gY2xzLmRlY2ltYWwuT3ZlcmZsb3cKKyAgICBVbmRlcmZsb3cgPSBjbHMuZGVjaW1hbC5VbmRlcmZsb3cKKyAgICBJbmV4YWN0ID0gY2xzLmRlY2ltYWwuSW5leGFjdAorICAgIGdldGNvbnRleHQgPSBjbHMuZGVjaW1hbC5nZXRjb250ZXh0CisgICAgbG9jYWxjb250ZXh0ID0gY2xzLmRlY2ltYWwubG9jYWxjb250ZXh0CisKICAgICBkMSA9IERlY2ltYWwoMSkKICAgICBkMyA9IERlY2ltYWwoMykKICAgICB0ZXN0MSA9IGQxL2QzCisKICAgICB0aGlzY29udGV4dCA9IGdldGNvbnRleHQoKQogICAgIHRoaXNjb250ZXh0LnByZWMgPSAxOAogICAgIHRlc3QyID0gZDEvZDMKKworICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzI6CisgICAgICAgIGNscy5hc3NlcnRUcnVlKGMyLmZsYWdzW0luZXhhY3RdKQorICAgICAgICBjbHMuYXNzZXJ0UmFpc2VzKE92ZXJmbG93LCBjMi5tdWx0aXBseSwgRGVjaW1hbCgnMWU0MjUwMDAwMDAnKSwgOTk5KQorICAgICAgICBjbHMuYXNzZXJ0VHJ1ZShjMi5mbGFnc1tPdmVyZmxvd10pCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KHRoaXNjb250ZXh0KSBhcyBjMzoKKyAgICAgICAgICAgIGNscy5hc3NlcnRUcnVlKGMzLmZsYWdzW0luZXhhY3RdKQorICAgICAgICAgICAgY2xzLmFzc2VydEZhbHNlKGMzLmZsYWdzW092ZXJmbG93XSkKKyAgICAgICAgICAgIGMzLnRyYXBzW1VuZGVyZmxvd10gPSBUcnVlCisgICAgICAgICAgICBjbHMuYXNzZXJ0UmFpc2VzKFVuZGVyZmxvdywgYzMuZGl2aWRlLCBEZWNpbWFsKCcxZS00MjUwMDAwMDAnKSwgOTk5KQorICAgICAgICAgICAgY2xzLmFzc2VydFRydWUoYzMuZmxhZ3NbVW5kZXJmbG93XSkKKyAgICAgICAgICAgIGRlbCBjMworICAgICAgICBjbHMuYXNzZXJ0RmFsc2UoYzIuZmxhZ3NbVW5kZXJmbG93XSkKKyAgICAgICAgY2xzLmFzc2VydEZhbHNlKGMyLnRyYXBzW1VuZGVyZmxvd10pCisgICAgICAgIGRlbCBjMgorCiAgICAgY2xzLnN5bmNocm8uc2V0KCkKICAgICBjbHMuZmluaXNoMi5zZXQoKQogCi0gICAgY2xzLmFzc2VydEVxdWFsKHRlc3QxLCBEZWNpbWFsKCcwLjMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMnKSkKKyAgICBjbHMuYXNzZXJ0RXF1YWwodGVzdDEsIERlY2ltYWwoJzAuMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzJykpCiAgICAgY2xzLmFzc2VydEVxdWFsKHRlc3QyLCBEZWNpbWFsKCcwLjMzMzMzMzMzMzMzMzMzMzMzMycpKQorCisgICAgY2xzLmFzc2VydEZhbHNlKHRoaXNjb250ZXh0LnRyYXBzW1VuZGVyZmxvd10pCisgICAgY2xzLmFzc2VydFRydWUodGhpc2NvbnRleHQuZmxhZ3NbSW5leGFjdF0pCisgICAgZm9yIHNpZyBpbiBPdmVyZmxvdywgVW5kZXJmbG93LCBEaXZpc2lvbkJ5WmVybywgSW52YWxpZE9wZXJhdGlvbjoKKyAgICAgICAgY2xzLmFzc2VydEZhbHNlKHRoaXNjb250ZXh0LmZsYWdzW3NpZ10pCiAgICAgcmV0dXJuCiAKLQotY2xhc3MgRGVjaW1hbFVzZU9mQ29udGV4dFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICcnJ1VuaXQgdGVzdHMgZm9yIFVzZSBvZiBDb250ZXh0IGNhc2VzIGluIERlY2ltYWwuJycnCi0KLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCB0aHJlYWRpbmcKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHRocmVhZGluZyA9IE5vbmUKK2NsYXNzIFRocmVhZGluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICcnJ1VuaXQgdGVzdHMgZm9yIHRocmVhZCBsb2NhbCBjb250ZXh0cyBpbiBEZWNpbWFsLicnJwogCiAgICAgIyBUYWtlIGNhcmUgZXhlY3V0aW5nIHRoaXMgdGVzdCBmcm9tIElETEUsIHRoZXJlJ3MgYW4gaXNzdWUgaW4gdGhyZWFkaW5nCiAgICAgIyB0aGF0IGhhbmdzIElETEUgYW5kIEkgY291bGRuJ3QgZmluZCBpdAogCiAgICAgZGVmIHRlc3RfdGhyZWFkaW5nKHNlbGYpOgotICAgICAgICAjVGVzdCB0aGUgInRocmVhZGluZyBpc29sYXRpb24iIG9mIGEgQ29udGV4dC4KKyAgICAgICAgRGVmYXVsdENvbnRleHQgPSBzZWxmLmRlY2ltYWwuRGVmYXVsdENvbnRleHQKKworICAgICAgICBpZiBzZWxmLmRlY2ltYWwgPT0gQyBhbmQgbm90IHNlbGYuZGVjaW1hbC5IQVZFX1RIUkVBRFM6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJjb21waWxlZCB3aXRob3V0IHRocmVhZGluZyIpCisgICAgICAgICMgVGVzdCB0aGUgInRocmVhZGluZyBpc29sYXRpb24iIG9mIGEgQ29udGV4dC4gQWxzbyB0ZXN0IGNoYW5naW5nCisgICAgICAgICMgdGhlIERlZmF1bHRDb250ZXh0LCB3aGljaCBhY3RzIGFzIGEgdGVtcGxhdGUgZm9yIHRoZSB0aHJlYWQtbG9jYWwKKyAgICAgICAgIyBjb250ZXh0cy4KKyAgICAgICAgc2F2ZV9wcmVjID0gRGVmYXVsdENvbnRleHQucHJlYworICAgICAgICBzYXZlX2VtYXggPSBEZWZhdWx0Q29udGV4dC5FbWF4CisgICAgICAgIHNhdmVfZW1pbiA9IERlZmF1bHRDb250ZXh0LkVtaW4KKyAgICAgICAgRGVmYXVsdENvbnRleHQucHJlYyA9IDI0CisgICAgICAgIERlZmF1bHRDb250ZXh0LkVtYXggPSA0MjUwMDAwMDAKKyAgICAgICAgRGVmYXVsdENvbnRleHQuRW1pbiA9IC00MjUwMDAwMDAKIAogICAgICAgICBzZWxmLnN5bmNocm8gPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICBzZWxmLmZpbmlzaDEgPSB0aHJlYWRpbmcuRXZlbnQoKQpAQCAtMTIzOSwxNyArMTU5MSwyOSBAQAogCiAgICAgICAgIHNlbGYuZmluaXNoMS53YWl0KCkKICAgICAgICAgc2VsZi5maW5pc2gyLndhaXQoKQorCisgICAgICAgIGZvciBzaWcgaW4gU2lnbmFsc1tzZWxmLmRlY2ltYWxdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShEZWZhdWx0Q29udGV4dC5mbGFnc1tzaWddKQorCisgICAgICAgIERlZmF1bHRDb250ZXh0LnByZWMgPSBzYXZlX3ByZWMKKyAgICAgICAgRGVmYXVsdENvbnRleHQuRW1heCA9IHNhdmVfZW1heAorICAgICAgICBEZWZhdWx0Q29udGV4dC5FbWluID0gc2F2ZV9lbWluCiAgICAgICAgIHJldHVybgogCi0gICAgaWYgdGhyZWFkaW5nIGlzIE5vbmU6Ci0gICAgICAgIGRlbCB0ZXN0X3RocmVhZGluZworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAndGhyZWFkaW5nIHJlcXVpcmVkJykKK2NsYXNzIENUaHJlYWRpbmdUZXN0KFRocmVhZGluZ1Rlc3QpOgorICAgIGRlY2ltYWwgPSBDCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICd0aHJlYWRpbmcgcmVxdWlyZWQnKQorY2xhc3MgUHlUaHJlYWRpbmdUZXN0KFRocmVhZGluZ1Rlc3QpOgorICAgIGRlY2ltYWwgPSBQCiAKLQotY2xhc3MgRGVjaW1hbFVzYWJpbGl0eVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVXNhYmlsaXR5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgJycnVW5pdCB0ZXN0cyBmb3IgVXNhYmlsaXR5IGNhc2VzIG9mIERlY2ltYWwuJycnCiAKICAgICBkZWYgdGVzdF9jb21wYXJpc29uX29wZXJhdG9ycyhzZWxmKToKIAorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICBkYSA9IERlY2ltYWwoJzIzLjQyJykKICAgICAgICAgZGIgPSBEZWNpbWFsKCcyMy40MicpCiAgICAgICAgIGRjID0gRGVjaW1hbCgnNDUnKQpAQCAtMTI4Myw2ICsxNjQ3LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBiKQogCiAgICAgZGVmIHRlc3RfZGVjaW1hbF9mbG9hdF9jb21wYXJpc29uKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICBkYSA9IERlY2ltYWwoJzAuMjUnKQogICAgICAgICBkYiA9IERlY2ltYWwoJzMuMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhkYSwgMy4wKQpAQCAtMTI5OSw3ICsxNjY1LDcxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMy4wLCBkYikKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgwLjEsIERlY2ltYWwoJzAuMScpKQogCisgICAgZGVmIHRlc3RfZGVjaW1hbF9jb21wbGV4X2NvbXBhcmlzb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIGRhID0gRGVjaW1hbCgnMC4yNScpCisgICAgICAgIGRiID0gRGVjaW1hbCgnMy4wJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChkYSwgKDEuNSswaikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoKDEuNSswaiksIGRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhLCAoMC4yNSswaikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKDAuMjUrMGopLCBkYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoMy4wKzBqKSwgZGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGIsICgzLjArMGopKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZGIsICgzLjArMWopKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKCgzLjArMWopLCBkYikKKworICAgICAgICBzZWxmLmFzc2VydElzKGRiLl9fbHRfXygzLjArMGopLCBOb3RJbXBsZW1lbnRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhkYi5fX2xlX18oMy4wKzBqKSwgTm90SW1wbGVtZW50ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZGIuX19ndF9fKDMuMCswaiksIE5vdEltcGxlbWVudGVkKQorICAgICAgICBzZWxmLmFzc2VydElzKGRiLl9fbGVfXygzLjArMGopLCBOb3RJbXBsZW1lbnRlZCkKKworICAgIGRlZiB0ZXN0X2RlY2ltYWxfZnJhY3Rpb25fY29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgRCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIEYgPSBmcmFjdGlvbnNbc2VsZi5kZWNpbWFsXS5GcmFjdGlvbgorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKworCisgICAgICAgIGVtYXggPSBDLk1BWF9FTUFYIGlmIEMgZWxzZSA5OTk5OTk5OTkKKyAgICAgICAgZW1pbiA9IEMuTUlOX0VNSU4gaWYgQyBlbHNlIC05OTk5OTk5OTkKKyAgICAgICAgZXRpbnkgPSBDLk1JTl9FVElOWSBpZiBDIGVsc2UgLTE5OTk5OTk5OTcKKyAgICAgICAgYyA9IENvbnRleHQoRW1heD1lbWF4LCBFbWluPWVtaW4pCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoYyk6CisgICAgICAgICAgICBjLnByZWMgPSBlbWF4CisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MoRCgwKSwgRigxLDk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKEYoLTEsOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSksIEQoMCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MoRigwLDEpLCBEKCIxZSIgKyBzdHIoZXRpbnkpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhEKCItMWUiICsgc3RyKGV0aW55KSksIEYoMCwxKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhGKDAsOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSksIEQoIjFlIiArIHN0cihldGlueSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKEQoIi0xZSIgKyBzdHIoZXRpbnkpKSwgRigwLDk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMSIpLCBGKDEsMTApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGKDEsMTApLCBEKCIwLjEiKSkKKworICAgICAgICAgICAgYy5wcmVjID0gMzAwCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKEQoMSkvMywgRigxLDMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChGKDEsMyksIEQoMSkvMykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoRigxMjA5ODQyMzcsIDk5OTk5OTk5OTkpLCBEKCI5ZSIgKyBzdHIoZW1heCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoRCgiOWUiICsgc3RyKGVtYXgpKSwgRigxMjA5ODQyMzcsIDk5OTk5OTk5OTkpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoRCgnaW5mJyksIEYoOTk5OTk5OTk5OTksMTIzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihEKCdpbmYnKSwgRigtOTk5OTk5OTk5OTksMTIzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhEKCctaW5mJyksIEYoOTk5OTk5OTk5OTksMTIzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhEKCctaW5mJyksIEYoLTk5OTk5OTk5OTk5LDEyMykpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIEQoJ25hbicpLl9fZ3RfXywgRigtOSwxMjMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhOb3RJbXBsZW1lbnRlZCwgRigtOSwxMjMpLl9fbHRfXyhEKCduYW4nKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKEQoJ25hbicpLCBGKC05LDEyMykpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKEYoLTksMTIzKSwgRCgnbmFuJykpCisKICAgICBkZWYgdGVzdF9jb3B5X2FuZF9kZWVwY29weV9tZXRob2RzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICBkID0gRGVjaW1hbCgnNDMuMjQnKQogICAgICAgICBjID0gY29weS5jb3B5KGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoYyksIGlkKGQpKQpAQCAtMTMwNyw2ICsxNzM3LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZGMpLCBpZChkKSkKIAogICAgIGRlZiB0ZXN0X2hhc2hfbWV0aG9kKHNlbGYpOgorCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKICAgICAgICAgZGVmIGhhc2hpdChkKToKICAgICAgICAgICAgIGEgPSBoYXNoKGQpCiAgICAgICAgICAgICBiID0gZC5fX2hhc2hfXygpCkBAIC0xMzY3LDI0ICsxODAxLDI3IEBACiAgICAgICAgICAgICBkID0gRGVjaW1hbChzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoaXQoZiksIGhhc2hpdChkKSkKIAotICAgICAgICAjIGNoZWNrIHRoYXQgdGhlIHZhbHVlIG9mIHRoZSBoYXNoIGRvZXNuJ3QgZGVwZW5kIG9uIHRoZQotICAgICAgICAjIGN1cnJlbnQgY29udGV4dCAoaXNzdWUgIzE3NTcpCi0gICAgICAgIGMgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgb2xkX3ByZWNpc2lvbiA9IGMucHJlYwotICAgICAgICB4ID0gRGVjaW1hbCgiMTIzNDU2Nzg5LjEiKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICAjIGNoZWNrIHRoYXQgdGhlIHZhbHVlIG9mIHRoZSBoYXNoIGRvZXNuJ3QgZGVwZW5kIG9uIHRoZQorICAgICAgICAgICAgIyBjdXJyZW50IGNvbnRleHQgKGlzc3VlICMxNzU3KQorICAgICAgICAgICAgeCA9IERlY2ltYWwoIjEyMzQ1Njc4OS4xIikKIAotICAgICAgICBjLnByZWMgPSA2Ci0gICAgICAgIGgxID0gaGFzaGl0KHgpCi0gICAgICAgIGMucHJlYyA9IDEwCi0gICAgICAgIGgyID0gaGFzaGl0KHgpCi0gICAgICAgIGMucHJlYyA9IDE2Ci0gICAgICAgIGgzID0gaGFzaGl0KHgpCisgICAgICAgICAgICBjLnByZWMgPSA2CisgICAgICAgICAgICBoMSA9IGhhc2hpdCh4KQorICAgICAgICAgICAgYy5wcmVjID0gMTAKKyAgICAgICAgICAgIGgyID0gaGFzaGl0KHgpCisgICAgICAgICAgICBjLnByZWMgPSAxNgorICAgICAgICAgICAgaDMgPSBoYXNoaXQoeCkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgxLCBoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoMSwgaDMpCi0gICAgICAgIGMucHJlYyA9IG9sZF9wcmVjaXNpb24KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDEsIGgyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoMSwgaDMpCisKKyAgICAgICAgICAgIGMucHJlYyA9IDEwMDAwCisgICAgICAgICAgICB4ID0gMTEwMCAqKiAxMjQ4CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2hpdChEZWNpbWFsKHgpKSwgaGFzaGl0KHgpKQogCiAgICAgZGVmIHRlc3RfbWluX2FuZF9tYXhfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCcxNS4zMicpCiAgICAgICAgIGQyID0gRGVjaW1hbCgnMjguNScpCkBAIC0xNDA0LDYgKzE4NDEsOCBAQAogICAgICAgICBzZWxmLmFzc2VydElzKG1heChkMixsMSksIGQyKQogCiAgICAgZGVmIHRlc3RfYXNfbm9uemVybyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKICAgICAgICAgI2FzIGZhbHNlCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoRGVjaW1hbCgwKSkKICAgICAgICAgI2FzIHRydWUKQEAgLTE0MTEsNiArMTg1MCw3IEBACiAKICAgICBkZWYgdGVzdF90b3N0cmluZ19tZXRob2RzKHNlbGYpOgogICAgICAgICAjVGVzdCBzdHIgYW5kIHJlcHIgbWV0aG9kcy4KKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZCA9IERlY2ltYWwoJzE1LjMyJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZCksICcxNS4zMicpICAgICAgICAgICAgICAgIyBzdHIKQEAgLTE0MTgsNiArMTg1OCw3IEBACiAKICAgICBkZWYgdGVzdF90b251bV9tZXRob2RzKHNlbGYpOgogICAgICAgICAjVGVzdCBmbG9hdCBhbmQgaW50IG1ldGhvZHMuCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnNjYnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzE1LjMyJykKQEAgLTE0NDAsNiArMTg4MSw3IEBACiAgICAgICAgICAgICAoJy0xMS4wJywgLTExKSwKICAgICAgICAgICAgICgnMC4wJywgMCksCiAgICAgICAgICAgICAoJy0wRTMnLCAwKSwKKyAgICAgICAgICAgICgnODk4OTEyMTE3MTIzNzk4MTI3MzYuMScsIDg5ODkxMjExNzEyMzc5ODEyNzM2KSwKICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIGQsIGkgaW4gdGVzdF9wYWlyczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5mbG9vcihEZWNpbWFsKGQpKSwgaSkKQEAgLTE0NTksNiArMTkwMSw3IEBACiAgICAgICAgICAgICAoJy0xMS4wJywgLTExKSwKICAgICAgICAgICAgICgnMC4wJywgMCksCiAgICAgICAgICAgICAoJy0wRTMnLCAwKSwKKyAgICAgICAgICAgICgnODk4OTEyMTE3MTIzNzk4MTI3MzYuMScsIDg5ODkxMjExNzEyMzc5ODEyNzM3KSwKICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIGQsIGkgaW4gdGVzdF9wYWlyczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5jZWlsKERlY2ltYWwoZCkpLCBpKQpAQCAtMTUxOSwxNiArMTk2MiwyMSBAQAogICAgIGRlZiB0ZXN0X25hbl90b19mbG9hdChzZWxmKToKICAgICAgICAgIyBUZXN0IGNvbnZlcnNpb25zIG9mIGRlY2ltYWwgTkFOcyB0byBmbG9hdC4KICAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE1NTQ0CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogICAgICAgICBmb3IgcyBpbiAoJ25hbicsICduYW4xMjM0JywgJy1uYW4nLCAnLW5hbjI0NjgnKToKICAgICAgICAgICAgIGYgPSBmbG9hdChEZWNpbWFsKHMpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oZikpCisgICAgICAgICAgICBzaWduID0gbWF0aC5jb3B5c2lnbigxLjAsIGYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ24sIC0xLjAgaWYgcy5zdGFydHN3aXRoKCctJykgZWxzZSAxLjApCiAKICAgICBkZWYgdGVzdF9zbmFuX3RvX2Zsb2F0KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKICAgICAgICAgZm9yIHMgaW4gKCdzbmFuJywgJy1zbmFuJywgJ3NuYW4xMzU3JywgJy1zbmFuMTIzNCcpOgogICAgICAgICAgICAgZCA9IERlY2ltYWwocykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCBkKQogCiAgICAgZGVmIHRlc3RfZXZhbF9yb3VuZF90cmlwKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICAjd2l0aCB6ZXJvCiAgICAgICAgIGQgPSBEZWNpbWFsKCAoMCwgKDAsKSwgMCkgKQpAQCAtMTU0Nyw2ICsxOTk1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBldmFsKHJlcHIoZCkpKQogCiAgICAgZGVmIHRlc3RfYXNfdHVwbGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgICN3aXRoIHplcm8KICAgICAgICAgZCA9IERlY2ltYWwoMCkKQEAgLTE1NjAsNyArMjAwOSw4IEBACiAgICAgICAgIGQgPSBEZWNpbWFsKCItNC4zNDkxMzUzNEUtMTciKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuYXNfdHVwbGUoKSwgKDEsICg0LCAzLCA0LCA5LCAxLCAzLCA1LCAzLCA0KSwgLTI1KSApCiAKLSAgICAgICAgI2luZgorICAgICAgICAjIFRoZSAnMCcgY29lZmZpY2llbnQgaXMgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgdG8gZGVjaW1hbC5weS4KKyAgICAgICAgIyBJdCBoYXMgbm8gbWVhbmluZyBpbiB0aGUgQy12ZXJzaW9uIGFuZCBpcyBpZ25vcmVkIHRoZXJlLgogICAgICAgICBkID0gRGVjaW1hbCgiSW5maW5pdHkiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuYXNfdHVwbGUoKSwgKDAsICgwLCksICdGJykgKQogCkBAIC0xNTgwLDE0ICsyMDMwLDI0NzYgQEAKICAgICAgICAgZCA9IERlY2ltYWwoICgxLCAoKSwgJ24nKSApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5hc190dXBsZSgpLCAoMSwgKCksICduJykgKQogCi0gICAgICAgICNjb2VmZmljaWVudCBpbiBpbmZpbml0eSBzaG91bGQgYmUgaWdub3JlZAorICAgICAgICAjIEZvciBpbmZpbml0aWVzLCBkZWNpbWFsLnB5IGhhcyBhbHdheXMgc2lsZW50bHkgYWNjZXB0ZWQgYW55CisgICAgICAgICMgY29lZmZpY2llbnQgdHVwbGUuCisgICAgICAgIGQgPSBEZWNpbWFsKCAoMCwgKDAsKSwgJ0YnKSApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5hc190dXBsZSgpLCAoMCwgKDAsKSwgJ0YnKSkKICAgICAgICAgZCA9IERlY2ltYWwoICgwLCAoNCwgNSwgMywgNCksICdGJykgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuYXNfdHVwbGUoKSwgKDAsICgwLCksICdGJykpCiAgICAgICAgIGQgPSBEZWNpbWFsKCAoMSwgKDAsIDIsIDcsIDEpLCAnRicpICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmFzX3R1cGxlKCksICgxLCAoMCwpLCAnRicpKQogCi0gICAgZGVmIHRlc3RfaW1tdXRhYmlsaXR5X29wZXJhdGlvbnMoc2VsZik6Ci0gICAgICAgICMgRG8gb3BlcmF0aW9ucyBhbmQgY2hlY2sgdGhhdCBpdCBkaWRuJ3QgY2hhbmdlIGNoYW5nZSBpbnRlcm5hbCBvYmplY3RzLgorICAgIGRlZiB0ZXN0X3N1YmNsYXNzaW5nKHNlbGYpOgorICAgICAgICAjIERpZmZlcmVudCBiZWhhdmlvdXJzIHdoZW4gc3ViY2xhc3NpbmcgRGVjaW1hbAorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKworICAgICAgICBjbGFzcyBNeURlY2ltYWwoRGVjaW1hbCk6CisgICAgICAgICAgICB5ID0gTm9uZQorCisgICAgICAgIGQxID0gTXlEZWNpbWFsKDEpCisgICAgICAgIGQyID0gTXlEZWNpbWFsKDIpCisgICAgICAgIGQgPSBkMSArIGQyCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShkKSwgRGVjaW1hbCkKKworICAgICAgICBkID0gZDEubWF4KGQyKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZCksIERlY2ltYWwpCisKKyAgICAgICAgZCA9IGNvcHkuY29weShkMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGQpLCBNeURlY2ltYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZDEpCisKKyAgICAgICAgZCA9IGNvcHkuZGVlcGNvcHkoZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShkKSwgTXlEZWNpbWFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGQxKQorCisgICAgICAgICMgRGVjaW1hbChEZWNpbWFsKQorICAgICAgICBkID0gRGVjaW1hbCgnMS4wJykKKyAgICAgICAgeCA9IERlY2ltYWwoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKHgpLCBEZWNpbWFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIGQpCisKKyAgICAgICAgIyBNeURlY2ltYWwoRGVjaW1hbCkKKyAgICAgICAgbSA9IE15RGVjaW1hbChkKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobSksIE15RGVjaW1hbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBkKQorICAgICAgICBzZWxmLmFzc2VydElzKG0ueSwgTm9uZSkKKworICAgICAgICAjIERlY2ltYWwoTXlEZWNpbWFsKQorICAgICAgICB4ID0gRGVjaW1hbChtKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoeCksIERlY2ltYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgZCkKKworICAgICAgICAjIE15RGVjaW1hbChNeURlY2ltYWwpCisgICAgICAgIG0ueSA9IDkKKyAgICAgICAgeCA9IE15RGVjaW1hbChtKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoeCksIE15RGVjaW1hbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBkKQorICAgICAgICBzZWxmLmFzc2VydElzKHgueSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2NvbnRleHQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBnZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmdldGNvbnRleHQKKworICAgICAgICAjIENoZWNrIHJlc3VsdHMgd2hlbiBjb250ZXh0IGdpdmVuIGltcGxpY2l0bHkuICAoSXNzdWUgMjQ3OCkKKyAgICAgICAgYyA9IGdldGNvbnRleHQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKDApLnNxcnQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGMuc3FydChEZWNpbWFsKDApKSkpCisKKyAgICBkZWYgdGVzdF9ub25lX2FyZ3Moc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgRGl2aXNpb25CeVplcm8gPSBzZWxmLmRlY2ltYWwuRGl2aXNpb25CeVplcm8KKyAgICAgICAgT3ZlcmZsb3cgPSBzZWxmLmRlY2ltYWwuT3ZlcmZsb3cKKyAgICAgICAgVW5kZXJmbG93ID0gc2VsZi5kZWNpbWFsLlVuZGVyZmxvdworICAgICAgICBTdWJub3JtYWwgPSBzZWxmLmRlY2ltYWwuU3Vibm9ybWFsCisgICAgICAgIEluZXhhY3QgPSBzZWxmLmRlY2ltYWwuSW5leGFjdAorICAgICAgICBSb3VuZGVkID0gc2VsZi5kZWNpbWFsLlJvdW5kZWQKKyAgICAgICAgQ2xhbXBlZCA9IHNlbGYuZGVjaW1hbC5DbGFtcGVkCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoQ29udGV4dCgpKSBhcyBjOgorICAgICAgICAgICAgYy5wcmVjID0gNworICAgICAgICAgICAgYy5FbWF4ID0gOTk5CisgICAgICAgICAgICBjLkVtaW4gPSAtOTk5CisKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKCIxMTEiKQorICAgICAgICAgICAgeSA9IERlY2ltYWwoIjFlOTk5OSIpCisgICAgICAgICAgICB6ID0gRGVjaW1hbCgiMWUtOTk5OSIpCisKKyAgICAgICAgICAgICMjIyMjIFVuYXJ5IGZ1bmN0aW9ucworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih4LmV4cChjb250ZXh0PU5vbmUpKSwgJzEuNjA5NDg3RSs0OCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbmV4YWN0XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW1JvdW5kZWRdKQorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvdywgeS5leHAsIGNvbnRleHQ9Tm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW092ZXJmbG93XSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh6LmlzX25vcm1hbChjb250ZXh0PU5vbmUpLCBGYWxzZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoei5pc19zdWJub3JtYWwoY29udGV4dD1Ob25lKSwgVHJ1ZSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih4LmxuKGNvbnRleHQ9Tm9uZSkpLCAnNC43MDk1MzAnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW5leGFjdF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tSb3VuZGVkXSkKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCgtMSkubG4sIGNvbnRleHQ9Tm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHgubG9nMTAoY29udGV4dD1Ob25lKSksICcyLjA0NTMyMycpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbmV4YWN0XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW1JvdW5kZWRdKQorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKC0xKS5sb2cxMCwgY29udGV4dD1Ob25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoeC5sb2diKGNvbnRleHQ9Tm9uZSkpLCAnMicpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhEaXZpc2lvbkJ5WmVybywgRGVjaW1hbCgwKS5sb2diLCBjb250ZXh0PU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tEaXZpc2lvbkJ5WmVyb10pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoeC5sb2dpY2FsX2ludmVydChjb250ZXh0PU5vbmUpKSwgJzExMTEwMDAnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgeS5sb2dpY2FsX2ludmVydCwgY29udGV4dD1Ob25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoeS5uZXh0X21pbnVzKGNvbnRleHQ9Tm9uZSkpLCAnOS45OTk5OTlFKzk5OScpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKCdzTmFOJykubmV4dF9taW51cywgY29udGV4dD1Ob25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoeS5uZXh0X3BsdXMoY29udGV4dD1Ob25lKSksICdJbmZpbml0eScpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKCdzTmFOJykubmV4dF9wbHVzLCBjb250ZXh0PU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih6Lm5vcm1hbGl6ZShjb250ZXh0PU5vbmUpKSwgJzAnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3csIHkubm9ybWFsaXplLCBjb250ZXh0PU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tPdmVyZmxvd10pCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHoubnVtYmVyX2NsYXNzKGNvbnRleHQ9Tm9uZSkpLCAnK1N1Ym5vcm1hbCcpCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoei5zcXJ0KGNvbnRleHQ9Tm9uZSkpLCAnMEUtMTAwNScpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tDbGFtcGVkXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0luZXhhY3RdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbUm91bmRlZF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tTdWJub3JtYWxdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbVW5kZXJmbG93XSkKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3csIHkuc3FydCwgY29udGV4dD1Ob25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbT3ZlcmZsb3ddKQorCisgICAgICAgICAgICBjLmNhcGl0YWxzID0gMAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoei50b19lbmdfc3RyaW5nKGNvbnRleHQ9Tm9uZSkpLCAnMWUtOTk5OScpCisgICAgICAgICAgICBjLmNhcGl0YWxzID0gMQorCisKKyAgICAgICAgICAgICMjIyMjIEJpbmFyeSBmdW5jdGlvbnMKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgYW5zID0gc3RyKHguY29tcGFyZShEZWNpbWFsKCdOYW44OTEyODc4MjgnKSwgY29udGV4dD1Ob25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCAnTmFOMTI4NzgyOCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCB4LmNvbXBhcmUsIERlY2ltYWwoJ3NOYU4nKSwgY29udGV4dD1Ob25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgYW5zID0gc3RyKHguY29tcGFyZV9zaWduYWwoODIyNCwgY29udGV4dD1Ob25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCAnLTEnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgeC5jb21wYXJlX3NpZ25hbCwgRGVjaW1hbCgnTmFOJyksIGNvbnRleHQ9Tm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGFucyA9IHN0cih4LmxvZ2ljYWxfYW5kKDEwMSwgY29udGV4dD1Ob25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCAnMTAxJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIHgubG9naWNhbF9hbmQsIDEyMywgY29udGV4dD1Ob25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgYW5zID0gc3RyKHgubG9naWNhbF9vcigxMDEsIGNvbnRleHQ9Tm9uZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgJzExMScpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCB4LmxvZ2ljYWxfb3IsIDEyMywgY29udGV4dD1Ob25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgYW5zID0gc3RyKHgubG9naWNhbF94b3IoMTAxLCBjb250ZXh0PU5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsICcxMCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCB4LmxvZ2ljYWxfeG9yLCAxMjMsIGNvbnRleHQ9Tm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGFucyA9IHN0cih4Lm1heCgxMDEsIGNvbnRleHQ9Tm9uZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgJzExMScpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCB4Lm1heCwgRGVjaW1hbCgnc05hTicpLCBjb250ZXh0PU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBhbnMgPSBzdHIoeC5tYXhfbWFnKDEwMSwgY29udGV4dD1Ob25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCAnMTExJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIHgubWF4X21hZywgRGVjaW1hbCgnc05hTicpLCBjb250ZXh0PU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBhbnMgPSBzdHIoeC5taW4oMTAxLCBjb250ZXh0PU5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsICcxMDEnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgeC5taW4sIERlY2ltYWwoJ3NOYU4nKSwgY29udGV4dD1Ob25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgYW5zID0gc3RyKHgubWluX21hZygxMDEsIGNvbnRleHQ9Tm9uZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgJzEwMScpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCB4Lm1pbl9tYWcsIERlY2ltYWwoJ3NOYU4nKSwgY29udGV4dD1Ob25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgYW5zID0gc3RyKHgucmVtYWluZGVyX25lYXIoMTAxLCBjb250ZXh0PU5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsICcxMCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCB5LnJlbWFpbmRlcl9uZWFyLCAxMDEsIGNvbnRleHQ9Tm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGFucyA9IHN0cih4LnJvdGF0ZSgyLCBjb250ZXh0PU5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsICcxMTEwMCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCB4LnJvdGF0ZSwgMTAxLCBjb250ZXh0PU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBhbnMgPSBzdHIoeC5zY2FsZWIoNywgY29udGV4dD1Ob25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCAnMS4xMUUrOScpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCB4LnNjYWxlYiwgMTAwMDAsIGNvbnRleHQ9Tm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGFucyA9IHN0cih4LnNoaWZ0KDIsIGNvbnRleHQ9Tm9uZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgJzExMTAwJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIHguc2hpZnQsIDEwMDAwLCBjb250ZXh0PU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworCisgICAgICAgICAgICAjIyMjIyBUZXJuYXJ5IGZ1bmN0aW9ucworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBhbnMgPSBzdHIoeC5mbWEoMiwgMywgY29udGV4dD1Ob25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCAnMjI1JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93LCB4LmZtYSwgRGVjaW1hbCgnMWU5OTk5JyksIDMsIGNvbnRleHQ9Tm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW092ZXJmbG93XSkKKworCisgICAgICAgICAgICAjIyMjIyBTcGVjaWFsIGNhc2VzCisgICAgICAgICAgICBjLnJvdW5kaW5nID0gUk9VTkRfSEFMRl9FVkVOCisgICAgICAgICAgICBhbnMgPSBzdHIoRGVjaW1hbCgnMS41JykudG9faW50ZWdyYWwocm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCAnMicpCisgICAgICAgICAgICBjLnJvdW5kaW5nID0gUk9VTkRfRE9XTgorICAgICAgICAgICAgYW5zID0gc3RyKERlY2ltYWwoJzEuNScpLnRvX2ludGVncmFsKHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgJzEnKQorICAgICAgICAgICAgYW5zID0gc3RyKERlY2ltYWwoJzEuNScpLnRvX2ludGVncmFsKHJvdW5kaW5nPVJPVU5EX1VQLCBjb250ZXh0PU5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsICcyJykKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCgnc05hTicpLnRvX2ludGVncmFsLCBjb250ZXh0PU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5yb3VuZGluZyA9IFJPVU5EX0hBTEZfRVZFTgorICAgICAgICAgICAgYW5zID0gc3RyKERlY2ltYWwoJzEuNScpLnRvX2ludGVncmFsX3ZhbHVlKHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgJzInKQorICAgICAgICAgICAgYy5yb3VuZGluZyA9IFJPVU5EX0RPV04KKyAgICAgICAgICAgIGFucyA9IHN0cihEZWNpbWFsKCcxLjUnKS50b19pbnRlZ3JhbF92YWx1ZShyb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsICcxJykKKyAgICAgICAgICAgIGFucyA9IHN0cihEZWNpbWFsKCcxLjUnKS50b19pbnRlZ3JhbF92YWx1ZShyb3VuZGluZz1ST1VORF9VUCwgY29udGV4dD1Ob25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCAnMicpCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwoJ3NOYU4nKS50b19pbnRlZ3JhbF92YWx1ZSwgY29udGV4dD1Ob25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMucm91bmRpbmcgPSBST1VORF9IQUxGX0VWRU4KKyAgICAgICAgICAgIGFucyA9IHN0cihEZWNpbWFsKCcxLjUnKS50b19pbnRlZ3JhbF9leGFjdChyb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsICcyJykKKyAgICAgICAgICAgIGMucm91bmRpbmcgPSBST1VORF9ET1dOCisgICAgICAgICAgICBhbnMgPSBzdHIoRGVjaW1hbCgnMS41JykudG9faW50ZWdyYWxfZXhhY3Qocm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCAnMScpCisgICAgICAgICAgICBhbnMgPSBzdHIoRGVjaW1hbCgnMS41JykudG9faW50ZWdyYWxfZXhhY3Qocm91bmRpbmc9Uk9VTkRfVVAsIGNvbnRleHQ9Tm9uZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgJzInKQorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKCdzTmFOJykudG9faW50ZWdyYWxfZXhhY3QsIGNvbnRleHQ9Tm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLnJvdW5kaW5nID0gUk9VTkRfVVAKKyAgICAgICAgICAgIGFucyA9IHN0cihEZWNpbWFsKCcxLjUwMDAxJykucXVhbnRpemUoZXhwPURlY2ltYWwoJzFlLTMnKSwgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCAnMS41MDEnKQorICAgICAgICAgICAgYy5yb3VuZGluZyA9IFJPVU5EX0RPV04KKyAgICAgICAgICAgIGFucyA9IHN0cihEZWNpbWFsKCcxLjUwMDAxJykucXVhbnRpemUoZXhwPURlY2ltYWwoJzFlLTMnKSwgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCAnMS41MDAnKQorICAgICAgICAgICAgYW5zID0gc3RyKERlY2ltYWwoJzEuNTAwMDEnKS5xdWFudGl6ZShleHA9RGVjaW1hbCgnMWUtMycpLCByb3VuZGluZz1ST1VORF9VUCwgY29udGV4dD1Ob25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCAnMS41MDEnKQorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCB5LnF1YW50aXplLCBEZWNpbWFsKCcxZS0xMCcpLCByb3VuZGluZz1ST1VORF9VUCwgY29udGV4dD1Ob25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoQ29udGV4dCgpKSBhcyBjb250ZXh0OgorICAgICAgICAgICAgY29udGV4dC5wcmVjID0gNworICAgICAgICAgICAgY29udGV4dC5FbWF4ID0gOTk5CisgICAgICAgICAgICBjb250ZXh0LkVtaW4gPSAtOTk5CisgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dChjdHg9Tm9uZSkgYXMgYzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgNykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1heCwgOTk5KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWluLCAtOTk5KQorCisgICAgZGVmIHRlc3RfY29udmVyc2lvbnNfZnJvbV9pbnQoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBtZXRob2RzIHRha2luZyBhIHNlY29uZCBEZWNpbWFsIGFyZ3VtZW50IHdpbGwKKyAgICAgICAgIyBhbHdheXMgYWNjZXB0IGFuIGludGVnZXIgaW4gcGxhY2Ugb2YgYSBEZWNpbWFsLgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNCkuY29tcGFyZSgzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDQpLmNvbXBhcmUoRGVjaW1hbCgzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg0KS5jb21wYXJlX3NpZ25hbCgzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDQpLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNCkuY29tcGFyZV90b3RhbCgzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDQpLmNvbXBhcmVfdG90YWwoRGVjaW1hbCgzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg0KS5jb21wYXJlX3RvdGFsX21hZygzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDQpLmNvbXBhcmVfdG90YWxfbWFnKERlY2ltYWwoMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfYW5kKDEwMDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfYW5kKERlY2ltYWwoMTAwMSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfb3IoMTAwMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMDEwMSkubG9naWNhbF9vcihEZWNpbWFsKDEwMDEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX3hvcigxMDAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX3hvcihEZWNpbWFsKDEwMDEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubWF4KDEyMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg1NjcpLm1heChEZWNpbWFsKDEyMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNTY3KS5tYXhfbWFnKDEyMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg1NjcpLm1heF9tYWcoRGVjaW1hbCgxMjMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubWluKDEyMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg1NjcpLm1pbihEZWNpbWFsKDEyMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNTY3KS5taW5fbWFnKDEyMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg1NjcpLm1pbl9tYWcoRGVjaW1hbCgxMjMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubmV4dF90b3dhcmQoMTIzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDU2NykubmV4dF90b3dhcmQoRGVjaW1hbCgxMjMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEyMzQpLnF1YW50aXplKDEwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMjM0KS5xdWFudGl6ZShEZWNpbWFsKDEwMCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNzY4KS5yZW1haW5kZXJfbmVhcigxMjM0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDc2OCkucmVtYWluZGVyX25lYXIoRGVjaW1hbCgxMjM0KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMjMpLnJvdGF0ZSgxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEyMykucm90YXRlKERlY2ltYWwoMSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTIzNCkuc2FtZV9xdWFudHVtKDEwMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTIzNCkuc2FtZV9xdWFudHVtKERlY2ltYWwoMTAwMCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoJzkuMTIzJykuc2NhbGViKC0xMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoJzkuMTIzJykuc2NhbGViKERlY2ltYWwoLTEwMCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNDU2KS5zaGlmdCgtMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0NTYpLnNoaWZ0KERlY2ltYWwoLTEpKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoLTEyKS5mbWEoRGVjaW1hbCg0NSksIDY3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKC0xMikuZm1hKERlY2ltYWwoNDUpLCBEZWNpbWFsKDY3KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgtMTIpLmZtYSg0NSwgNjcpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoLTEyKS5mbWEoRGVjaW1hbCg0NSksIERlY2ltYWwoNjcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKC0xMikuZm1hKDQ1LCBEZWNpbWFsKDY3KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgtMTIpLmZtYShEZWNpbWFsKDQ1KSwgRGVjaW1hbCg2NykpKQorCitjbGFzcyBDVXNhYmlsaXR5VGVzdChVc2FiaWxpdHlUZXN0KToKKyAgICBkZWNpbWFsID0gQworY2xhc3MgUHlVc2FiaWxpdHlUZXN0KFVzYWJpbGl0eVRlc3QpOgorICAgIGRlY2ltYWwgPSBQCisKK2NsYXNzIFB5dGhvbkFQSXRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2FiYyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRGVjaW1hbCwgbnVtYmVycy5OdW1iZXIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoRGVjaW1hbCwgbnVtYmVycy5SZWFsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKERlY2ltYWwoMCksIG51bWJlcnMuTnVtYmVyKQorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoRGVjaW1hbCgwKSwgbnVtYmVycy5SZWFsKQorCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKworICAgICAgICBzYXZlZGVjaW1hbCA9IHN5cy5tb2R1bGVzWydkZWNpbWFsJ10KKworICAgICAgICAjIFJvdW5kIHRyaXAKKyAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IHNlbGYuZGVjaW1hbAorICAgICAgICBkID0gRGVjaW1hbCgnLTMuMTQxNTkwMDAwJykKKyAgICAgICAgcCA9IHBpY2tsZS5kdW1wcyhkKQorICAgICAgICBlID0gcGlja2xlLmxvYWRzKHApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZSkKKworICAgICAgICBpZiBDOgorICAgICAgICAgICAgIyBUZXN0IGludGVyY2hhbmdlYWJpbGl0eQorICAgICAgICAgICAgeCA9IEMuRGVjaW1hbCgnLTMuMTIzZTgxNzIzJykKKyAgICAgICAgICAgIHkgPSBQLkRlY2ltYWwoJy0zLjEyM2U4MTcyMycpCisKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBDCisgICAgICAgICAgICBzeCA9IHBpY2tsZS5kdW1wcyh4KQorICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IFAKKyAgICAgICAgICAgIHIgPSBwaWNrbGUubG9hZHMoc3gpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UociwgUC5EZWNpbWFsKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLCB5KQorCisgICAgICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gUAorICAgICAgICAgICAgc3kgPSBwaWNrbGUuZHVtcHMoeSkKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBDCisgICAgICAgICAgICByID0gcGlja2xlLmxvYWRzKHN5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHIsIEMuRGVjaW1hbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwociwgeCkKKworICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gc2F2ZWRlY2ltYWwKKworICAgIGRlZiB0ZXN0X2ludChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgZm9yIHggaW4gcmFuZ2UoLTI1MCwgMjUwKToKKyAgICAgICAgICAgIHMgPSAnJTAuMmYnICUgKHggLyAxMDAuMCkKKyAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgZm9yIGZsb2F0cworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoRGVjaW1hbChzKSksIGludChmbG9hdChzKSkpCisgICAgICAgICAgICAjIHNob3VsZCB3b3JrIHRoZSBzYW1lIGFzIHRvX2ludGVncmFsIGluIHRoZSBST1VORF9ET1dOIG1vZGUKKyAgICAgICAgICAgIGQgPSBEZWNpbWFsKHMpCisgICAgICAgICAgICByID0gZC50b19pbnRlZ3JhbChST1VORF9ET1dOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKGludChkKSksIHIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCBEZWNpbWFsKCctbmFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGludCwgRGVjaW1hbCgnc25hbicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBpbnQsIERlY2ltYWwoJ2luZicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBpbnQsIERlY2ltYWwoJy1pbmYnKSkKKworICAgIGRlZiB0ZXN0X3RydW5jKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKworICAgICAgICBmb3IgeCBpbiByYW5nZSgtMjUwLCAyNTApOgorICAgICAgICAgICAgcyA9ICclMC4yZicgJSAoeCAvIDEwMC4wKQorICAgICAgICAgICAgIyBzaG91bGQgd29yayB0aGUgc2FtZSBhcyBmb3IgZmxvYXRzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChEZWNpbWFsKHMpKSwgaW50KGZsb2F0KHMpKSkKKyAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgdG9faW50ZWdyYWwgaW4gdGhlIFJPVU5EX0RPV04gbW9kZQorICAgICAgICAgICAgZCA9IERlY2ltYWwocykKKyAgICAgICAgICAgIHIgPSBkLnRvX2ludGVncmFsKFJPVU5EX0RPV04pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwobWF0aC50cnVuYyhkKSksIHIpCisKKyAgICBkZWYgdGVzdF9mcm9tX2Zsb2F0KHNlbGYpOgorCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIGNsYXNzIE15RGVjaW1hbChEZWNpbWFsKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhNeURlY2ltYWwsIERlY2ltYWwpKQorCisgICAgICAgIHIgPSBNeURlY2ltYWwuZnJvbV9mbG9hdCgwLjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShyKSwgTXlEZWNpbWFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihyKSwKKyAgICAgICAgICAgICAgICAnMC4xMDAwMDAwMDAwMDAwMDAwMDU1NTExMTUxMjMxMjU3ODI3MDIxMTgxNTgzNDA0NTQxMDE1NjI1JykKKyAgICAgICAgYmlnaW50ID0gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNeURlY2ltYWwuZnJvbV9mbG9hdChiaWdpbnQpLCBNeURlY2ltYWwoYmlnaW50KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCduYW4nKSkuaXNfcW5hbigpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ2luZicpKS5pc19pbmZpbml0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJy1pbmYnKSkuaXNfaW5maW5pdGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ25hbicpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKERlY2ltYWwoJ05hTicpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ2luZicpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKERlY2ltYWwoJ0luZmluaXR5JykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihNeURlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnLWluZicpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKERlY2ltYWwoJy1JbmZpbml0eScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBNeURlY2ltYWwuZnJvbV9mbG9hdCwgJ2FiYycpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIwMCk6CisgICAgICAgICAgICB4ID0gcmFuZG9tLmV4cG92YXJpYXRlKDAuMDEpICogKHJhbmRvbS5yYW5kb20oKSAqIDIuMCAtIDEuMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgZmxvYXQoTXlEZWNpbWFsLmZyb21fZmxvYXQoeCkpKSAjIHJvdW5kdHJpcAorCisgICAgZGVmIHRlc3RfY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBJbmV4YWN0ID0gc2VsZi5kZWNpbWFsLkluZXhhY3QKKworICAgICAgICBjb250ZXh0ID0gQ29udGV4dChwcmVjPTUsIHJvdW5kaW5nPVJPVU5EX0RPV04pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQobWF0aC5waSksCisgICAgICAgICAgICBEZWNpbWFsKCczLjE0MTUnKQorICAgICAgICApCisgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KHByZWM9NSwgcm91bmRpbmc9Uk9VTkRfVVApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQobWF0aC5waSksCisgICAgICAgICAgICBEZWNpbWFsKCczLjE0MTYnKQorICAgICAgICApCisgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KHByZWM9NSwgdHJhcHM9W0luZXhhY3RdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIEluZXhhY3QsCisgICAgICAgICAgICBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQsCisgICAgICAgICAgICBtYXRoLnBpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgtMC4wKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIkRlY2ltYWwoJy0wJykiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KDEuMCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJEZWNpbWFsKCcxJykiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KDEwKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIkRlY2ltYWwoJzEwJykiKQorCisgICAgZGVmIHRlc3RfcXVhbnRpemUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCisKKyAgICAgICAgYyA9IENvbnRleHQoRW1heD05OTk5OSwgRW1pbj0tOTk5OTkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBEZWNpbWFsKCc3LjMzNScpLnF1YW50aXplKERlY2ltYWwoJy4wMScpKSwKKyAgICAgICAgICAgIERlY2ltYWwoJzcuMzQnKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBEZWNpbWFsKCc3LjMzNScpLnF1YW50aXplKERlY2ltYWwoJy4wMScpLCByb3VuZGluZz1ST1VORF9ET1dOKSwKKyAgICAgICAgICAgIERlY2ltYWwoJzcuMzMnKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgIERlY2ltYWwoIjEwZTk5OTk5IikucXVhbnRpemUsIERlY2ltYWwoJzFlMTAwMDAwJyksIGNvbnRleHQ9YworICAgICAgICApCisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gRGVjaW1hbCgiMC44NzE4MzFlODAwIikKKyAgICAgICAgeCA9IGQucXVhbnRpemUoY29udGV4dD1jLCBleHA9RGVjaW1hbCgiMWU3OTciKSwgcm91bmRpbmc9Uk9VTkRfRE9XTikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBEZWNpbWFsKCc4LjcxRSs3OTknKSkKKworICAgIGRlZiB0ZXN0X2NvbXBsZXgoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIHggPSBEZWNpbWFsKCI5LjgxODI3MzFlMTgxMjczIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnJlYWwsIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5pbWFnLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguY29uanVnYXRlKCksIHgpCisKKyAgICAgICAgeCA9IERlY2ltYWwoIjEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXgoeCksIGNvbXBsZXgoZmxvYXQoMSkpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCB4LCAncmVhbCcsIDEwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHgsICdpbWFnJywgMTAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgeCwgJ2Nvbmp1Z2F0ZScsIDEwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHgsICdfX2NvbXBsZXhfXycsIDEwMCkKKworICAgIGRlZiB0ZXN0X25hbWVkX3BhcmFtZXRlcnMoc2VsZik6CisgICAgICAgIEQgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgT3ZlcmZsb3cgPSBzZWxmLmRlY2ltYWwuT3ZlcmZsb3cKKworICAgICAgICB4YyA9IENvbnRleHQoKQorICAgICAgICB4Yy5wcmVjID0gMQorICAgICAgICB4Yy5FbWF4ID0gMQorICAgICAgICB4Yy5FbWluID0gLTEKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKDksIHhjKSwgOSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCg5LCBjb250ZXh0PXhjKSwgOSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRChjb250ZXh0PXhjLCB2YWx1ZT05KSwgOSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRChjb250ZXh0PXhjKSwgMCkKKyAgICAgICAgICAgIHhjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIEQsICJ4eXoiLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICB4Yy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoMikuZXhwKGNvbnRleHQ9eGMpLCA3KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3csIEQoOCkuZXhwLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhjLmZsYWdzW092ZXJmbG93XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5mbGFnc1tPdmVyZmxvd10pCisKKyAgICAgICAgICAgIHhjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgyKS5sbihjb250ZXh0PXhjKSwgRCgnMC43JykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEKC0xKS5sbiwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4Yy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKDApLmxvZzEwKGNvbnRleHQ9eGMpLCBEKCctaW5mJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoLTEpLm5leHRfbWludXMoY29udGV4dD14YyksIC0yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKC0xKS5uZXh0X3BsdXMoY29udGV4dD14YyksIEQoJy0wLjknKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiOS43MyIpLm5vcm1hbGl6ZShjb250ZXh0PXhjKSwgRCgnMUUrMScpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCI5OTk5IikudG9faW50ZWdyYWwoY29udGV4dD14YyksIDk5OTkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIi0yMDAwIikudG9faW50ZWdyYWxfZXhhY3QoY29udGV4dD14YyksIC0yMDAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIxMjMiKS50b19pbnRlZ3JhbF92YWx1ZShjb250ZXh0PXhjKSwgMTIzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIwLjA2MjUiKS5zcXJ0KGNvbnRleHQ9eGMpLCBEKCcwLjInKSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIwLjA2MjUiKS5jb21wYXJlKGNvbnRleHQ9eGMsIG90aGVyPTMpLCAtMSkKKyAgICAgICAgICAgIHhjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEKCIwIikuY29tcGFyZV9zaWduYWwsIEQoJ25hbicpLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIwLjAxIikubWF4KEQoJzAuMDEwMScpLCBjb250ZXh0PXhjKSwgRCgnMC4wJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMDEiKS5tYXgoRCgnMC4wMTAxJyksIGNvbnRleHQ9eGMpLCBEKCcwLjAnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiMC4yIikubWF4X21hZyhEKCctMC4zJyksIGNvbnRleHQ9eGMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEKCctMC4zJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMDIiKS5taW4oRCgnLTAuMDMnKSwgY29udGV4dD14YyksIEQoJy0wLjAnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiMC4wMiIpLm1pbl9tYWcoRCgnLTAuMDMnKSwgY29udGV4dD14YyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQoJzAuMCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIwLjIiKS5uZXh0X3Rvd2FyZChEKCctMScpLCBjb250ZXh0PXhjKSwgRCgnMC4xJykpCisgICAgICAgICAgICB4Yy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCgiMC4yIikucXVhbnRpemUsIEQoJzFlMTAnKSwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4Yy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiOS45OSIpLnJlbWFpbmRlcl9uZWFyKEQoJzEuNScpLCBjb250ZXh0PXhjKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCgnLTAuNScpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjkuOSIpLmZtYSh0aGlyZD1EKCcwLjknKSwgY29udGV4dD14Yywgb3RoZXI9NyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQoJzdFKzEnKSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmlzX2Nhbm9uaWNhbCwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5pc19maW5pdGUsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMSkuaXNfaW5maW5pdGUsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMSkuaXNfbmFuLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmlzX3FuYW4sIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMSkuaXNfc25hbiwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5pc19zaWduZWQsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMSkuaXNfemVybywgY29udGV4dD14YykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShEKCIwLjAxIikuaXNfbm9ybWFsKGNvbnRleHQ9eGMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEQoIjAuMDEiKS5pc19zdWJub3JtYWwoY29udGV4dD14YykpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5hZGp1c3RlZCwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5jb25qdWdhdGUsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMSkucmFkaXgsIGNvbnRleHQ9eGMpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgtMTExKS5sb2diKGNvbnRleHQ9eGMpLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKDApLmxvZ2ljYWxfaW52ZXJ0KGNvbnRleHQ9eGMpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCcwLjAxJykubnVtYmVyX2NsYXNzKGNvbnRleHQ9eGMpLCAnK1N1Ym5vcm1hbCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoJzAuMjEnKS50b19lbmdfc3RyaW5nKGNvbnRleHQ9eGMpLCAnMC4yMScpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgnMTEnKS5sb2dpY2FsX2FuZChEKCcxMCcpLCBjb250ZXh0PXhjKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgnMTEnKS5sb2dpY2FsX29yKEQoJzEwJyksIGNvbnRleHQ9eGMpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCcwMScpLmxvZ2ljYWxfeG9yKEQoJzEwJyksIGNvbnRleHQ9eGMpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCcyMycpLnJvdGF0ZSgxLCBjb250ZXh0PXhjKSwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgnMjMnKS5yb3RhdGUoMSwgY29udGV4dD14YyksIDMpCisgICAgICAgICAgICB4Yy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQoJzIzJykuc2NhbGViLCAxLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhjLmZsYWdzW092ZXJmbG93XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5mbGFnc1tPdmVyZmxvd10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoJzIzJykuc2hpZnQoLTEsIGNvbnRleHQ9eGMpLCAwKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQuZnJvbV9mbG9hdCwgMS4xLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDApLmFzX3R1cGxlLCBjb250ZXh0PXhjKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoMSkuY2Fub25pY2FsKCksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoIi0xIikuY29weV9hYnMsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoIi0xIikuY29weV9uZWdhdGUsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMSkuY2Fub25pY2FsLCBjb250ZXh0PSJ4IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5jYW5vbmljYWwsIHh5ej0ieCIpCisKKyAgICBkZWYgdGVzdF9leGNlcHRpb25faGllcmFyY2h5KHNlbGYpOgorCisgICAgICAgIGRlY2ltYWwgPSBzZWxmLmRlY2ltYWwKKyAgICAgICAgRGVjaW1hbEV4Y2VwdGlvbiA9IGRlY2ltYWwuRGVjaW1hbEV4Y2VwdGlvbgorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIEZsb2F0T3BlcmF0aW9uID0gZGVjaW1hbC5GbG9hdE9wZXJhdGlvbgorICAgICAgICBEaXZpc2lvbkJ5WmVybyA9IGRlY2ltYWwuRGl2aXNpb25CeVplcm8KKyAgICAgICAgT3ZlcmZsb3cgPSBkZWNpbWFsLk92ZXJmbG93CisgICAgICAgIFVuZGVyZmxvdyA9IGRlY2ltYWwuVW5kZXJmbG93CisgICAgICAgIFN1Ym5vcm1hbCA9IGRlY2ltYWwuU3Vibm9ybWFsCisgICAgICAgIEluZXhhY3QgPSBkZWNpbWFsLkluZXhhY3QKKyAgICAgICAgUm91bmRlZCA9IGRlY2ltYWwuUm91bmRlZAorICAgICAgICBDbGFtcGVkID0gZGVjaW1hbC5DbGFtcGVkCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRGVjaW1hbEV4Y2VwdGlvbiwgQXJpdGhtZXRpY0Vycm9yKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsRXhjZXB0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRmxvYXRPcGVyYXRpb24sIERlY2ltYWxFeGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhGbG9hdE9wZXJhdGlvbiwgVHlwZUVycm9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRGl2aXNpb25CeVplcm8sIERlY2ltYWxFeGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhEaXZpc2lvbkJ5WmVybywgWmVyb0RpdmlzaW9uRXJyb3IpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhPdmVyZmxvdywgUm91bmRlZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE92ZXJmbG93LCBJbmV4YWN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoT3ZlcmZsb3csIERlY2ltYWxFeGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhVbmRlcmZsb3csIEluZXhhY3QpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhVbmRlcmZsb3csIFJvdW5kZWQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhVbmRlcmZsb3csIFN1Ym5vcm1hbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFVuZGVyZmxvdywgRGVjaW1hbEV4Y2VwdGlvbikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoU3Vibm9ybWFsLCBEZWNpbWFsRXhjZXB0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoSW5leGFjdCwgRGVjaW1hbEV4Y2VwdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFJvdW5kZWQsIERlY2ltYWxFeGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDbGFtcGVkLCBEZWNpbWFsRXhjZXB0aW9uKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhkZWNpbWFsLkNvbnZlcnNpb25TeW50YXgsIEludmFsaWRPcGVyYXRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhkZWNpbWFsLkRpdmlzaW9uSW1wb3NzaWJsZSwgSW52YWxpZE9wZXJhdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGRlY2ltYWwuRGl2aXNpb25VbmRlZmluZWQsIEludmFsaWRPcGVyYXRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhkZWNpbWFsLkRpdmlzaW9uVW5kZWZpbmVkLCBaZXJvRGl2aXNpb25FcnJvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGRlY2ltYWwuSW52YWxpZENvbnRleHQsIEludmFsaWRPcGVyYXRpb24pKQorCitjbGFzcyBDUHl0aG9uQVBJdGVzdHMoUHl0aG9uQVBJdGVzdHMpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeVB5dGhvbkFQSXRlc3RzKFB5dGhvbkFQSXRlc3RzKToKKyAgICBkZWNpbWFsID0gUAorCitjbGFzcyBDb250ZXh0QVBJdGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfbm9uZV9hcmdzKHNlbGYpOgorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIERpdmlzaW9uQnlaZXJvID0gc2VsZi5kZWNpbWFsLkRpdmlzaW9uQnlaZXJvCisgICAgICAgIE92ZXJmbG93ID0gc2VsZi5kZWNpbWFsLk92ZXJmbG93CisKKyAgICAgICAgYzEgPSBDb250ZXh0KCkKKyAgICAgICAgYzIgPSBDb250ZXh0KHByZWM9Tm9uZSwgcm91bmRpbmc9Tm9uZSwgRW1heD1Ob25lLCBFbWluPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICBjYXBpdGFscz1Ob25lLCBjbGFtcD1Ob25lLCBmbGFncz1Ob25lLCB0cmFwcz1Ob25lKQorICAgICAgICBmb3IgYyBpbiBbYzEsIGMyXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCAyOCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yb3VuZGluZywgUk9VTkRfSEFMRl9FVkVOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtYXgsIDk5OTk5OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWluLCAtOTk5OTk5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNhcGl0YWxzLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNsYW1wLCAwKQorICAgICAgICAgICAgYXNzZXJ0X3NpZ25hbHMoc2VsZiwgYywgJ2ZsYWdzJywgW10pCisgICAgICAgICAgICBhc3NlcnRfc2lnbmFscyhzZWxmLCBjLCAndHJhcHMnLCBbSW52YWxpZE9wZXJhdGlvbiwgRGl2aXNpb25CeVplcm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3ZlcmZsb3ddKQorCisgICAgQGNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2Zyb21fbGVnYWN5X3N0cmluZ3Moc2VsZik6CisgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKKyAgICAgICAgYyA9IHNlbGYuZGVjaW1hbC5Db250ZXh0KCkKKworICAgICAgICBmb3Igcm5kIGluIFJvdW5kaW5nTW9kZXM6CisgICAgICAgICAgICBjLnJvdW5kaW5nID0gX3Rlc3RjYXBpLnVuaWNvZGVfbGVnYWN5X3N0cmluZyhybmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucm91bmRpbmcsIHJuZCkKKworICAgICAgICBzID0gX3Rlc3RjYXBpLnVuaWNvZGVfbGVnYWN5X3N0cmluZygnJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCAncm91bmRpbmcnLCBzKQorCisgICAgICAgIHMgPSBfdGVzdGNhcGkudW5pY29kZV9sZWdhY3lfc3RyaW5nKCdST1VORF9ceDAwVVAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsICdyb3VuZGluZycsIHMpCisKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgc2F2ZWRlY2ltYWwgPSBzeXMubW9kdWxlc1snZGVjaW1hbCddCisKKyAgICAgICAgIyBSb3VuZCB0cmlwCisgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBzZWxmLmRlY2ltYWwKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBlID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhjKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgZS5wcmVjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1pbiwgZS5FbWluKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1heCwgZS5FbWF4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucm91bmRpbmcsIGUucm91bmRpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jYXBpdGFscywgZS5jYXBpdGFscykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNsYW1wLCBlLmNsYW1wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZmxhZ3MsIGUuZmxhZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50cmFwcywgZS50cmFwcykKKworICAgICAgICAjIFRlc3QgaW50ZXJjaGFuZ2VhYmlsaXR5CisgICAgICAgIGNvbWJpbmF0aW9ucyA9IFsoQywgUCksIChQLCBDKV0gaWYgQyBlbHNlIFsoUCwgUCldCisgICAgICAgIGZvciBkdW1wZXIsIGxvYWRlciBpbiBjb21iaW5hdGlvbnM6CisgICAgICAgICAgICBmb3IgcmksIF8gaW4gZW51bWVyYXRlKFJvdW5kaW5nTW9kZXMpOgorICAgICAgICAgICAgICAgIGZvciBmaSwgXyBpbiBlbnVtZXJhdGUoT3JkZXJlZFNpZ25hbHNbZHVtcGVyXSk6CisgICAgICAgICAgICAgICAgICAgIGZvciB0aSwgXyBpbiBlbnVtZXJhdGUoT3JkZXJlZFNpZ25hbHNbZHVtcGVyXSk6CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWMgPSByYW5kb20ucmFuZHJhbmdlKDEsIDEwMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaW4gPSByYW5kb20ucmFuZHJhbmdlKC0xMDAsIDApCisgICAgICAgICAgICAgICAgICAgICAgICBlbWF4ID0gcmFuZG9tLnJhbmRyYW5nZSgxLCAxMDApCisgICAgICAgICAgICAgICAgICAgICAgICBjYXBzID0gcmFuZG9tLnJhbmRyYW5nZSgyKQorICAgICAgICAgICAgICAgICAgICAgICAgY2xhbXAgPSByYW5kb20ucmFuZHJhbmdlKDIpCisKKyAgICAgICAgICAgICAgICAgICAgICAgICMgT25lIG1vZHVsZSBkdW1wcworICAgICAgICAgICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IGR1bXBlcgorICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGR1bXBlci5Db250ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlYz1wcmVjLCBFbWluPWVtaW4sIEVtYXg9ZW1heCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kaW5nPVJvdW5kaW5nTW9kZXNbcmldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwaXRhbHM9Y2FwcywgY2xhbXA9Y2xhbXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1PcmRlcmVkU2lnbmFsc1tkdW1wZXJdWzpmaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFwcz1PcmRlcmVkU2lnbmFsc1tkdW1wZXJdWzp0aV0KKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBwaWNrbGUuZHVtcHMoYykKKworICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGUgb3RoZXIgbW9kdWxlIGxvYWRzCisgICAgICAgICAgICAgICAgICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gbG9hZGVyCisgICAgICAgICAgICAgICAgICAgICAgICBkID0gcGlja2xlLmxvYWRzKHMpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZCwgbG9hZGVyLkNvbnRleHQpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5wcmVjLCBwcmVjKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLkVtaW4sIGVtaW4pCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuRW1heCwgZW1heCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5yb3VuZGluZywgUm91bmRpbmdNb2Rlc1tyaV0pCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuY2FwaXRhbHMsIGNhcHMpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuY2xhbXAsIGNsYW1wKQorICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3NpZ25hbHMoc2VsZiwgZCwgJ2ZsYWdzJywgT3JkZXJlZFNpZ25hbHNbbG9hZGVyXVs6ZmldKQorICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3NpZ25hbHMoc2VsZiwgZCwgJ3RyYXBzJywgT3JkZXJlZFNpZ25hbHNbbG9hZGVyXVs6dGldKQorCisgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBzYXZlZGVjaW1hbAorCisgICAgZGVmIHRlc3RfZXF1YWxpdHlfd2l0aF9vdGhlcl90eXBlcyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgc2VsZi5hc3NlcnRJbihEZWNpbWFsKDEwKSwgWydhJywgMS4wLCBEZWNpbWFsKDEwKSwgKDEsMiksIHt9XSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihEZWNpbWFsKDEwKSwgWydhJywgMS4wLCAoMSwyKSwge31dKQorCisgICAgZGVmIHRlc3RfY29weShzZWxmKToKKyAgICAgICAgIyBBbGwgY29waWVzIHNob3VsZCBiZSBkZWVwCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmNvcHkoKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGMpLCBpZChkKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChjLmZsYWdzKSwgaWQoZC5mbGFncykpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoYy50cmFwcyksIGlkKGQudHJhcHMpKQorICAgICAgICBrMSA9IHNldChjLmZsYWdzLmtleXMoKSkKKyAgICAgICAgazIgPSBzZXQoZC5mbGFncy5rZXlzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoazEsIGsyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZmxhZ3MsIGQuZmxhZ3MpCisKKyAgICBkZWYgdGVzdF9fY2xhbXAoc2VsZik6CisgICAgICAgICMgSW4gUHl0aG9uIDMuMiwgdGhlIHByaXZhdGUgYXR0cmlidXRlIGBfY2xhbXBgIHdhcyBtYWRlCisgICAgICAgICMgcHVibGljIChpc3N1ZSA4NTQwKSwgd2l0aCB0aGUgb2xkIGBfY2xhbXBgIGJlY29taW5nIGEKKyAgICAgICAgIyBwcm9wZXJ0eSB3cmFwcGluZyBgY2xhbXBgLiAgRm9yIHRoZSBkdXJhdGlvbiBvZiBQeXRob24gMy4yCisgICAgICAgICMgb25seSwgdGhlIGF0dHJpYnV0ZSBzaG91bGQgYmUgZ2V0dGFibGUvc2V0dGFibGUgdmlhIGJvdGgKKyAgICAgICAgIyBgY2xhbXBgIGFuZCBgX2NsYW1wYDsgaW4gUHl0aG9uIDMuMywgYF9jbGFtcGAgc2hvdWxkIGJlCisgICAgICAgICMgcmVtb3ZlZC4KKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIGMsICdfY2xhbXAnKQorCisgICAgZGVmIHRlc3RfYWJzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5hYnMoRGVjaW1hbCgtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5hYnMoLTEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuYWJzLCAnLTEnKQorCisgICAgZGVmIHRlc3RfYWRkKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5hZGQoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFkZCgxLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFkZChEZWNpbWFsKDEpLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFkZCgxLCBEZWNpbWFsKDEpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmFkZCwgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuYWRkLCAxLCAnMScpCisKKyAgICBkZWYgdGVzdF9jb21wYXJlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5jb21wYXJlKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlKDEsIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZShEZWNpbWFsKDEpLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmUoMSwgRGVjaW1hbCgxKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlLCAnMScsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlLCAxLCAnMScpCisKKyAgICBkZWYgdGVzdF9jb21wYXJlX3NpZ25hbChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfc2lnbmFsKDEsIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgxKSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3NpZ25hbCgxLCBEZWNpbWFsKDEpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfc2lnbmFsLCAnMScsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3NpZ25hbCwgMSwgJzEnKQorCisgICAgZGVmIHRlc3RfY29tcGFyZV90b3RhbChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuY29tcGFyZV90b3RhbChEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbCgxLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWwoRGVjaW1hbCgxKSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsKDEsIERlY2ltYWwoMSkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZV90b3RhbCwgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZV90b3RhbCwgMSwgJzEnKQorCisgICAgZGVmIHRlc3RfY29tcGFyZV90b3RhbF9tYWcoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmNvbXBhcmVfdG90YWxfbWFnKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsX21hZygxLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWxfbWFnKERlY2ltYWwoMSksIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbF9tYWcoMSwgRGVjaW1hbCgxKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3RvdGFsX21hZywgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZV90b3RhbF9tYWcsIDEsICcxJykKKworICAgIGRlZiB0ZXN0X2NvcHlfYWJzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5jb3B5X2FicyhEZWNpbWFsKC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfYWJzKC0xKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfYWJzLCAnLTEnKQorCisgICAgZGVmIHRlc3RfY29weV9kZWNpbWFsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5jb3B5X2RlY2ltYWwoRGVjaW1hbCgtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X2RlY2ltYWwoLTEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29weV9kZWNpbWFsLCAnLTEnKQorCisgICAgZGVmIHRlc3RfY29weV9uZWdhdGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmNvcHlfbmVnYXRlKERlY2ltYWwoLTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9uZWdhdGUoLTEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29weV9uZWdhdGUsICctMScpCisKKyAgICBkZWYgdGVzdF9jb3B5X3NpZ24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmNvcHlfc2lnbihEZWNpbWFsKDEpLCBEZWNpbWFsKC0yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfc2lnbigxLCAtMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X3NpZ24oRGVjaW1hbCgxKSwgLTIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9zaWduKDEsIERlY2ltYWwoLTIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfc2lnbiwgJzEnLCAtMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfc2lnbiwgMSwgJy0yJykKKworICAgIGRlZiB0ZXN0X2RpdmlkZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuZGl2aWRlKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGUoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGUoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGUoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5kaXZpZGUsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdmlkZSwgMSwgJzInKQorCisgICAgZGVmIHRlc3RfZGl2aWRlX2ludChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuZGl2aWRlX2ludChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlX2ludCgxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZV9pbnQoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGVfaW50KDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2aWRlX2ludCwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2aWRlX2ludCwgMSwgJzInKQorCisgICAgZGVmIHRlc3RfZGl2bW9kKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5kaXZtb2QoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdm1vZCgxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdm1vZChEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdm1vZCgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdm1vZCwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2bW9kLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9leHAoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmV4cChEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmV4cCgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5leHAsICcxMCcpCisKKyAgICBkZWYgdGVzdF9mbWEoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmZtYShEZWNpbWFsKDIpLCBEZWNpbWFsKDMpLCBEZWNpbWFsKDQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZm1hKDIsIDMsIDQpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZm1hKERlY2ltYWwoMiksIDMsIDQpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZm1hKDIsIERlY2ltYWwoMyksIDQpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZm1hKDIsIDMsIERlY2ltYWwoNCkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZm1hKERlY2ltYWwoMiksIERlY2ltYWwoMyksIDQpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZm1hLCAnMicsIDMsIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5mbWEsIDIsICczJywgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmZtYSwgMiwgMywgJzQnKQorCisgICAgICAgICMgSXNzdWUgMTIwNzkgZm9yIENvbnRleHQuZm1hIC4uLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZm1hLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKCdJbmZpbml0eScpLCBEZWNpbWFsKDApLCAibm90IGEgZGVjaW1hbCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5mbWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMSksIERlY2ltYWwoJ3NuYW4nKSwgMS4yMjIpCisgICAgICAgICMgLi4uIGFuZCBmb3IgRGVjaW1hbC5mbWEuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCgnSW5maW5pdHknKS5mbWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMCksICJub3QgYSBkZWNpbWFsIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEZWNpbWFsKDEpLmZtYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgnc25hbicpLCAxLjIyMikKKworICAgIGRlZiB0ZXN0X2lzX2Zpbml0ZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuaXNfZmluaXRlKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfZmluaXRlKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX2Zpbml0ZSwgJzEwJykKKworICAgIGRlZiB0ZXN0X2lzX2luZmluaXRlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5pc19pbmZpbml0ZShEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX2luZmluaXRlKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX2luZmluaXRlLCAnMTAnKQorCisgICAgZGVmIHRlc3RfaXNfbmFuKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5pc19uYW4oRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19uYW4oMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfbmFuLCAnMTAnKQorCisgICAgZGVmIHRlc3RfaXNfbm9ybWFsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5pc19ub3JtYWwoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19ub3JtYWwoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfbm9ybWFsLCAnMTAnKQorCisgICAgZGVmIHRlc3RfaXNfcW5hbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuaXNfcW5hbihEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3FuYW4oMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfcW5hbiwgJzEwJykKKworICAgIGRlZiB0ZXN0X2lzX3NpZ25lZChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuaXNfc2lnbmVkKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfc2lnbmVkKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX3NpZ25lZCwgJzEwJykKKworICAgIGRlZiB0ZXN0X2lzX3NuYW4oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmlzX3NuYW4oRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19zbmFuKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX3NuYW4sICcxMCcpCisKKyAgICBkZWYgdGVzdF9pc19zdWJub3JtYWwoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmlzX3N1Ym5vcm1hbChEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3N1Ym5vcm1hbCgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19zdWJub3JtYWwsICcxMCcpCisKKyAgICBkZWYgdGVzdF9pc196ZXJvKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5pc196ZXJvKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfemVybygxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc196ZXJvLCAnMTAnKQorCisgICAgZGVmIHRlc3RfbG4oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmxuKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG4oMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG4sICcxMCcpCisKKyAgICBkZWYgdGVzdF9sb2cxMChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubG9nMTAoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2cxMCgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2cxMCwgJzEwJykKKworICAgIGRlZiB0ZXN0X2xvZ2Ioc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmxvZ2IoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2diKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2IsICcxMCcpCisKKyAgICBkZWYgdGVzdF9sb2dpY2FsX2FuZChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubG9naWNhbF9hbmQoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfYW5kKDEsIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9hbmQoRGVjaW1hbCgxKSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX2FuZCgxLCBEZWNpbWFsKDEpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfYW5kLCAnMScsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX2FuZCwgMSwgJzEnKQorCisgICAgZGVmIHRlc3RfbG9naWNhbF9pbnZlcnQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmxvZ2ljYWxfaW52ZXJ0KERlY2ltYWwoMTAwMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX2ludmVydCgxMDAwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfaW52ZXJ0LCAnMTAwMCcpCisKKyAgICBkZWYgdGVzdF9sb2dpY2FsX29yKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5sb2dpY2FsX29yKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX29yKDEsIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9vcihEZWNpbWFsKDEpLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfb3IoMSwgRGVjaW1hbCgxKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX29yLCAnMScsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX29yLCAxLCAnMScpCisKKyAgICBkZWYgdGVzdF9sb2dpY2FsX3hvcihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubG9naWNhbF94b3IoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfeG9yKDEsIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF94b3IoRGVjaW1hbCgxKSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX3hvcigxLCBEZWNpbWFsKDEpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfeG9yLCAnMScsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX3hvciwgMSwgJzEnKQorCisgICAgZGVmIHRlc3RfbWF4KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5tYXgoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heCgxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heChEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heCgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heCwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWF4LCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9tYXhfbWFnKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5tYXhfbWFnKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXhfbWFnKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWF4X21hZyhEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heF9tYWcoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5tYXhfbWFnLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5tYXhfbWFnLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9taW4oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLm1pbihEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWluLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW4sIDEsICcyJykKKworICAgIGRlZiB0ZXN0X21pbl9tYWcoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLm1pbl9tYWcoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbl9tYWcoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW5fbWFnKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluX21hZygxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1pbl9tYWcsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1pbl9tYWcsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X21pbnVzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5taW51cyhEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbnVzKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1pbnVzLCAnMTAnKQorCisgICAgZGVmIHRlc3RfbXVsdGlwbHkoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLm11bHRpcGx5KERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tdWx0aXBseSgxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm11bHRpcGx5KERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubXVsdGlwbHkoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5tdWx0aXBseSwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubXVsdGlwbHksIDEsICcyJykKKworICAgIGRlZiB0ZXN0X25leHRfbWludXMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLm5leHRfbWludXMoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X21pbnVzKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5leHRfbWludXMsICcxMCcpCisKKyAgICBkZWYgdGVzdF9uZXh0X3BsdXMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLm5leHRfcGx1cyhEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5leHRfcGx1cygxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5uZXh0X3BsdXMsICcxMCcpCisKKyAgICBkZWYgdGVzdF9uZXh0X3Rvd2FyZChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubmV4dF90b3dhcmQoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5leHRfdG93YXJkKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubmV4dF90b3dhcmQoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X3Rvd2FyZCgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5leHRfdG93YXJkLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5uZXh0X3Rvd2FyZCwgMSwgJzInKQorCisgICAgZGVmIHRlc3Rfbm9ybWFsaXplKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5ub3JtYWxpemUoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5ub3JtYWxpemUoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubm9ybWFsaXplLCAnMTAnKQorCisgICAgZGVmIHRlc3RfbnVtYmVyX2NsYXNzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubnVtYmVyX2NsYXNzKDEyMyksIGMubnVtYmVyX2NsYXNzKERlY2ltYWwoMTIzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5udW1iZXJfY2xhc3MoMCksIGMubnVtYmVyX2NsYXNzKERlY2ltYWwoMCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubnVtYmVyX2NsYXNzKC00NSksIGMubnVtYmVyX2NsYXNzKERlY2ltYWwoLTQ1KSkpCisKKyAgICBkZWYgdGVzdF9wbHVzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5wbHVzKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucGx1cygxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5wbHVzLCAnMTAnKQorCisgICAgZGVmIHRlc3RfcG93ZXIoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnBvd2VyKERlY2ltYWwoMSksIERlY2ltYWwoNCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wb3dlcigxLCA0KSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBvd2VyKERlY2ltYWwoMSksIDQpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucG93ZXIoMSwgRGVjaW1hbCg0KSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wb3dlcihEZWNpbWFsKDEpLCBEZWNpbWFsKDQpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnBvd2VyLCAnMScsIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5wb3dlciwgMSwgJzQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucG93ZXIobW9kdWxvPTUsIGI9OCwgYT0yKSwgMSkKKworICAgIGRlZiB0ZXN0X3F1YW50aXplKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5xdWFudGl6ZShEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucXVhbnRpemUoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5xdWFudGl6ZShEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnF1YW50aXplKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucXVhbnRpemUsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnF1YW50aXplLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9yZW1haW5kZXIoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnJlbWFpbmRlcihEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucmVtYWluZGVyLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5yZW1haW5kZXIsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X3JlbWFpbmRlcl9uZWFyKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5yZW1haW5kZXJfbmVhcihEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyX25lYXIoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXJfbmVhcihEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcl9uZWFyKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucmVtYWluZGVyX25lYXIsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJlbWFpbmRlcl9uZWFyLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9yb3RhdGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnJvdGF0ZShEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucm90YXRlKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucm90YXRlKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucm90YXRlKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucm90YXRlLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5yb3RhdGUsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X3NxcnQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnNxcnQoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zcXJ0KDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNxcnQsICcxMCcpCisKKyAgICBkZWYgdGVzdF9zYW1lX3F1YW50dW0oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnNhbWVfcXVhbnR1bShEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2FtZV9xdWFudHVtKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2FtZV9xdWFudHVtKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2FtZV9xdWFudHVtKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2FtZV9xdWFudHVtLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zYW1lX3F1YW50dW0sIDEsICcyJykKKworICAgIGRlZiB0ZXN0X3NjYWxlYihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuc2NhbGViKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zY2FsZWIoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zY2FsZWIoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zY2FsZWIoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zY2FsZWIsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNjYWxlYiwgMSwgJzInKQorCisgICAgZGVmIHRlc3Rfc2hpZnQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnNoaWZ0KERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zaGlmdCgxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNoaWZ0KERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2hpZnQoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zaGlmdCwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2hpZnQsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X3N1YnRyYWN0KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5zdWJ0cmFjdChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc3VidHJhY3QoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zdWJ0cmFjdChEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnN1YnRyYWN0KDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc3VidHJhY3QsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnN1YnRyYWN0LCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF90b19lbmdfc3RyaW5nKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy50b19lbmdfc3RyaW5nKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMudG9fZW5nX3N0cmluZygxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy50b19lbmdfc3RyaW5nLCAnMTAnKQorCisgICAgZGVmIHRlc3RfdG9fc2NpX3N0cmluZyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMudG9fc2NpX3N0cmluZyhEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRvX3NjaV9zdHJpbmcoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9fc2NpX3N0cmluZywgJzEwJykKKworICAgIGRlZiB0ZXN0X3RvX2ludGVncmFsX2V4YWN0KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRvX2ludGVncmFsX2V4YWN0KDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnRvX2ludGVncmFsX2V4YWN0LCAnMTAnKQorCisgICAgZGVmIHRlc3RfdG9faW50ZWdyYWxfdmFsdWUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMudG9faW50ZWdyYWxfdmFsdWUoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9faW50ZWdyYWxfdmFsdWUsICcxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy50b19pbnRlZ3JhbF92YWx1ZSwgMTAsICd4JykKKworY2xhc3MgQ0NvbnRleHRBUEl0ZXN0cyhDb250ZXh0QVBJdGVzdHMpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUNvbnRleHRBUEl0ZXN0cyhDb250ZXh0QVBJdGVzdHMpOgorICAgIGRlY2ltYWwgPSBQCisKK2NsYXNzIENvbnRleHRXaXRoU3RhdGVtZW50KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIENhbid0IGRvIHRoZXNlIGFzIGRvY3N0cmluZ3MgdW50aWwgUHl0aG9uIDIuNgorICAgICMgYXMgZG9jdGVzdCBjYW4ndCBoYW5kbGUgX19mdXR1cmVfXyBzdGF0ZW1lbnRzCisKKyAgICBkZWYgdGVzdF9sb2NhbGNvbnRleHQoc2VsZik6CisgICAgICAgICMgVXNlIGEgY29weSBvZiB0aGUgY3VycmVudCBjb250ZXh0IGluIHRoZSBibG9jaworICAgICAgICBnZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmdldGNvbnRleHQKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorCisgICAgICAgIG9yaWdfY3R4ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgZW50ZXJfY3R4OgorICAgICAgICAgICAgc2V0X2N0eCA9IGdldGNvbnRleHQoKQorICAgICAgICBmaW5hbF9jdHggPSBnZXRjb250ZXh0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhvcmlnX2N0eCwgZmluYWxfY3R4LCAnZGlkIG5vdCByZXN0b3JlIGNvbnRleHQgY29ycmVjdGx5JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChvcmlnX2N0eCwgc2V0X2N0eCwgJ2RpZCBub3QgY29weSB0aGUgY29udGV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2V0X2N0eCwgZW50ZXJfY3R4LCAnX19lbnRlcl9fIHJldHVybmVkIHdyb25nIGNvbnRleHQnKQorCisgICAgZGVmIHRlc3RfbG9jYWxjb250ZXh0YXJnKHNlbGYpOgorICAgICAgICAjIFVzZSBhIGNvcHkgb2YgdGhlIHN1cHBsaWVkIGNvbnRleHQgaW4gdGhlIGJsb2NrCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBnZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmdldGNvbnRleHQKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorCisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKyAgICAgICAgb3JpZ19jdHggPSBnZXRjb250ZXh0KCkKKyAgICAgICAgbmV3X2N0eCA9IENvbnRleHQocHJlYz00MikKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQobmV3X2N0eCkgYXMgZW50ZXJfY3R4OgorICAgICAgICAgICAgc2V0X2N0eCA9IGdldGNvbnRleHQoKQorICAgICAgICBmaW5hbF9jdHggPSBnZXRjb250ZXh0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhvcmlnX2N0eCwgZmluYWxfY3R4LCAnZGlkIG5vdCByZXN0b3JlIGNvbnRleHQgY29ycmVjdGx5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXRfY3R4LnByZWMsIG5ld19jdHgucHJlYywgJ2RpZCBub3Qgc2V0IGNvcnJlY3QgY29udGV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobmV3X2N0eCwgc2V0X2N0eCwgJ2RpZCBub3QgY29weSB0aGUgY29udGV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2V0X2N0eCwgZW50ZXJfY3R4LCAnX19lbnRlcl9fIHJldHVybmVkIHdyb25nIGNvbnRleHQnKQorCisgICAgZGVmIHRlc3RfbmVzdGVkX3dpdGhfc3RhdGVtZW50cyhzZWxmKToKKyAgICAgICAgIyBVc2UgYSBjb3B5IG9mIHRoZSBzdXBwbGllZCBjb250ZXh0IGluIHRoZSBibG9jaworICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIENsYW1wZWQgPSBzZWxmLmRlY2ltYWwuQ2xhbXBlZAorICAgICAgICBPdmVyZmxvdyA9IHNlbGYuZGVjaW1hbC5PdmVyZmxvdworCisgICAgICAgIG9yaWdfY3R4ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIG9yaWdfY3R4LmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgbmV3X2N0eCA9IENvbnRleHQoRW1heD0zODQpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzE6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMxLmZsYWdzLCBvcmlnX2N0eC5mbGFncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYzEudHJhcHMsIG9yaWdfY3R4LnRyYXBzKQorICAgICAgICAgICAgYzEudHJhcHNbQ2xhbXBlZF0gPSBUcnVlCisgICAgICAgICAgICBjMS5FbWluID0gLTM4MworICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcmlnX2N0eC5FbWluLCAtMzgzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQ2xhbXBlZCwgYzEuY3JlYXRlX2RlY2ltYWwsICcwZS05OTknKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMxLmZsYWdzW0NsYW1wZWRdKQorICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQobmV3X2N0eCkgYXMgYzI6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjMi5mbGFncywgbmV3X2N0eC5mbGFncykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMyLnRyYXBzLCBuZXdfY3R4LnRyYXBzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93LCBjMi5wb3dlciwgRGVjaW1hbCgnMy40ZTIwMCcpLCAyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYzIuZmxhZ3NbQ2xhbXBlZF0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMyLmZsYWdzW092ZXJmbG93XSkKKyAgICAgICAgICAgICAgICBkZWwgYzIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYzEuZmxhZ3NbT3ZlcmZsb3ddKQorICAgICAgICAgICAgZGVsIGMxCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3JpZ19jdHguRW1pbiwgLTM4MykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcmlnX2N0eC5mbGFnc1tDbGFtcGVkXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcmlnX2N0eC5mbGFnc1tPdmVyZmxvd10pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV3X2N0eC5mbGFnc1tDbGFtcGVkXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXdfY3R4LmZsYWdzW092ZXJmbG93XSkKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50c19nYzEoc2VsZik6CisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGMxOgorICAgICAgICAgICAgZGVsIGMxCisgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGMyOgorICAgICAgICAgICAgICAgIGRlbCBjMgorICAgICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzM6CisgICAgICAgICAgICAgICAgICAgIGRlbCBjMworICAgICAgICAgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM0OgorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIGM0CisKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudHNfZ2MyKHNlbGYpOgorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMToKKyAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KGMxKSBhcyBjMjoKKyAgICAgICAgICAgICAgICBkZWwgYzEKKyAgICAgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dChjMikgYXMgYzM6CisgICAgICAgICAgICAgICAgICAgIGRlbCBjMgorICAgICAgICAgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dChjMykgYXMgYzQ6CisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgYzMKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBjNAorCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRzX2djMyhzZWxmKToKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisgICAgICAgIHNldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuc2V0Y29udGV4dAorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzE6CisgICAgICAgICAgICBkZWwgYzEKKyAgICAgICAgICAgIG4xID0gQ29udGV4dChwcmVjPTEpCisgICAgICAgICAgICBzZXRjb250ZXh0KG4xKQorICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQobjEpIGFzIGMyOgorICAgICAgICAgICAgICAgIGRlbCBuMQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYzIucHJlYywgMSkKKyAgICAgICAgICAgICAgICBkZWwgYzIKKyAgICAgICAgICAgICAgICBuMiA9IENvbnRleHQocHJlYz0yKQorICAgICAgICAgICAgICAgIHNldGNvbnRleHQobjIpCisgICAgICAgICAgICAgICAgZGVsIG4yCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRjb250ZXh0KCkucHJlYywgMikKKyAgICAgICAgICAgICAgICBuMyA9IENvbnRleHQocHJlYz0zKQorICAgICAgICAgICAgICAgIHNldGNvbnRleHQobjMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRjb250ZXh0KCkucHJlYywgMykKKyAgICAgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dChuMykgYXMgYzM6CisgICAgICAgICAgICAgICAgICAgIGRlbCBuMworICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMzLnByZWMsIDMpCisgICAgICAgICAgICAgICAgICAgIGRlbCBjMworICAgICAgICAgICAgICAgICAgICBuNCA9IENvbnRleHQocHJlYz00KQorICAgICAgICAgICAgICAgICAgICBzZXRjb250ZXh0KG40KQorICAgICAgICAgICAgICAgICAgICBkZWwgbjQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRjb250ZXh0KCkucHJlYywgNCkKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjNDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYzQucHJlYywgNCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBjNAorCitjbGFzcyBDQ29udGV4dFdpdGhTdGF0ZW1lbnQoQ29udGV4dFdpdGhTdGF0ZW1lbnQpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUNvbnRleHRXaXRoU3RhdGVtZW50KENvbnRleHRXaXRoU3RhdGVtZW50KToKKyAgICBkZWNpbWFsID0gUAorCitjbGFzcyBDb250ZXh0RmxhZ3ModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZmxhZ3NfaXJyZWxldmFudChzZWxmKToKKyAgICAgICAgIyBjaGVjayB0aGF0IHRoZSByZXN1bHQgKG51bWVyaWMgcmVzdWx0ICsgZmxhZ3MgcmFpc2VkKSBvZiBhbgorICAgICAgICAjIGFyaXRobWV0aWMgb3BlcmF0aW9uIGRvZXNuJ3QgZGVwZW5kIG9uIHRoZSBjdXJyZW50IGZsYWdzCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgSW5leGFjdCA9IHNlbGYuZGVjaW1hbC5JbmV4YWN0CisgICAgICAgIFJvdW5kZWQgPSBzZWxmLmRlY2ltYWwuUm91bmRlZAorICAgICAgICBVbmRlcmZsb3cgPSBzZWxmLmRlY2ltYWwuVW5kZXJmbG93CisgICAgICAgIENsYW1wZWQgPSBzZWxmLmRlY2ltYWwuQ2xhbXBlZAorICAgICAgICBTdWJub3JtYWwgPSBzZWxmLmRlY2ltYWwuU3Vibm9ybWFsCisKKyAgICAgICAgZGVmIHJhaXNlX2Vycm9yKGNvbnRleHQsIGZsYWcpOgorICAgICAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEM6CisgICAgICAgICAgICAgICAgY29udGV4dC5mbGFnc1tmbGFnXSA9IFRydWUKKyAgICAgICAgICAgICAgICBpZiBjb250ZXh0LnRyYXBzW2ZsYWddOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBmbGFnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKGZsYWcpCisKKyAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz05LCBFbWluID0gLTQyNTAwMDAwMCwgRW1heCA9IDQyNTAwMDAwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCB0cmFwcz1bXSwgZmxhZ3M9W10pCisKKyAgICAgICAgIyBvcGVyYXRpb25zIHRoYXQgcmFpc2UgdmFyaW91cyBmbGFncywgaW4gdGhlIGZvcm0gKGZ1bmN0aW9uLCBhcmdsaXN0KQorICAgICAgICBvcGVyYXRpb25zID0gWworICAgICAgICAgICAgKGNvbnRleHQuX2FwcGx5LCBbRGVjaW1hbCgiMTAwRS00MjUwMDAwMTAiKV0pLAorICAgICAgICAgICAgKGNvbnRleHQuc3FydCwgW0RlY2ltYWwoMildKSwKKyAgICAgICAgICAgIChjb250ZXh0LmFkZCwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCisgICAgICAgICAgICAoY29udGV4dC5tdWx0aXBseSwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCisgICAgICAgICAgICAoY29udGV4dC5zdWJ0cmFjdCwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCisgICAgICAgICAgICBdCisKKyAgICAgICAgIyB0cnkgdmFyaW91cyBmbGFncyBpbmRpdmlkdWFsbHksIHRoZW4gYSB3aG9sZSBsb3QgYXQgb25jZQorICAgICAgICBmbGFnc2V0cyA9IFtbSW5leGFjdF0sIFtSb3VuZGVkXSwgW1VuZGVyZmxvd10sIFtDbGFtcGVkXSwgW1N1Ym5vcm1hbF0sCisgICAgICAgICAgICAgICAgICAgIFtJbmV4YWN0LCBSb3VuZGVkLCBVbmRlcmZsb3csIENsYW1wZWQsIFN1Ym5vcm1hbF1dCisKKyAgICAgICAgZm9yIGZuLCBhcmdzIGluIG9wZXJhdGlvbnM6CisgICAgICAgICAgICAjIGZpbmQgYW5zd2VyIGFuZCBmbGFncyByYWlzZWQgdXNpbmcgYSBjbGVhbiBjb250ZXh0CisgICAgICAgICAgICBjb250ZXh0LmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGFucyA9IGZuKCphcmdzKQorICAgICAgICAgICAgZmxhZ3MgPSBbayBmb3IgaywgdiBpbiBjb250ZXh0LmZsYWdzLml0ZW1zKCkgaWYgdl0KKworICAgICAgICAgICAgZm9yIGV4dHJhX2ZsYWdzIGluIGZsYWdzZXRzOgorICAgICAgICAgICAgICAgICMgc2V0IGZsYWdzLCBiZWZvcmUgY2FsbGluZyBvcGVyYXRpb24KKyAgICAgICAgICAgICAgICBjb250ZXh0LmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgICAgICBmb3IgZmxhZyBpbiBleHRyYV9mbGFnczoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2VfZXJyb3IoY29udGV4dCwgZmxhZykKKyAgICAgICAgICAgICAgICBuZXdfYW5zID0gZm4oKmFyZ3MpCisKKyAgICAgICAgICAgICAgICAjIGZsYWdzIHRoYXQgd2UgZXhwZWN0IHRvIGJlIHNldCBhZnRlciB0aGUgb3BlcmF0aW9uCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZmxhZ3MgPSBsaXN0KGZsYWdzKQorICAgICAgICAgICAgICAgIGZvciBmbGFnIGluIGV4dHJhX2ZsYWdzOgorICAgICAgICAgICAgICAgICAgICBpZiBmbGFnIG5vdCBpbiBleHBlY3RlZF9mbGFnczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZsYWdzLmFwcGVuZChmbGFnKQorICAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZsYWdzLnNvcnQoa2V5PWlkKQorCisgICAgICAgICAgICAgICAgIyBmbGFncyB3ZSBhY3R1YWxseSBnb3QKKyAgICAgICAgICAgICAgICBuZXdfZmxhZ3MgPSBbayBmb3Igayx2IGluIGNvbnRleHQuZmxhZ3MuaXRlbXMoKSBpZiB2XQorICAgICAgICAgICAgICAgIG5ld19mbGFncy5zb3J0KGtleT1pZCkKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCBuZXdfYW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiBwcm9kdWNlcyBkaWZmZXJlbnQgYW5zd2VycyBkZXBlbmRpbmcgb24gZmxhZ3Mgc2V0OiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAlcywgZ290ICVzLiIgJSAoYW5zLCBuZXdfYW5zKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19mbGFncywgZXhwZWN0ZWRfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiByYWlzZXMgZGlmZmVyZW50IGZsYWdzIGRlcGVuZGluZyBvbiBmbGFncyBzZXQ6ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAlcywgZ290ICVzIiAlIChleHBlY3RlZF9mbGFncywgbmV3X2ZsYWdzKSkKKworICAgIGRlZiB0ZXN0X2ZsYWdfY29tcGFyaXNvbnMoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBJbmV4YWN0ID0gc2VsZi5kZWNpbWFsLkluZXhhY3QKKyAgICAgICAgUm91bmRlZCA9IHNlbGYuZGVjaW1hbC5Sb3VuZGVkCisKKyAgICAgICAgYyA9IENvbnRleHQoKQorCisgICAgICAgICMgVmFsaWQgU2lnbmFsRGljdAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGMuZmxhZ3MsIGMudHJhcHMpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYy50cmFwcywgYy5mbGFncykKKworICAgICAgICBjLmZsYWdzID0gYy50cmFwcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZmxhZ3MsIGMudHJhcHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50cmFwcywgYy5mbGFncykKKworICAgICAgICBjLmZsYWdzW1JvdW5kZWRdID0gVHJ1ZQorICAgICAgICBjLnRyYXBzID0gYy5mbGFncworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZmxhZ3MsIGMudHJhcHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50cmFwcywgYy5mbGFncykKKworICAgICAgICBkID0ge30KKyAgICAgICAgZC51cGRhdGUoYy5mbGFncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBjLmZsYWdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZmxhZ3MsIGQpCisKKyAgICAgICAgZFtJbmV4YWN0XSA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChkLCBjLmZsYWdzKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGMuZmxhZ3MsIGQpCisKKyAgICAgICAgIyBJbnZhbGlkIFNpZ25hbERpY3QKKyAgICAgICAgZCA9IHtJbmV4YWN0OkZhbHNlfQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGQsIGMuZmxhZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYy5mbGFncywgZCkKKworICAgICAgICBkID0gWyJ4eXoiXQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGQsIGMuZmxhZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYy5mbGFncywgZCkKKworICAgIEByZXF1aXJlc19JRUVFXzc1NAorICAgIGRlZiB0ZXN0X2Zsb2F0X29wZXJhdGlvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIEZsb2F0T3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkZsb2F0T3BlcmF0aW9uCisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICAjIyMjIyB0cmFwIGlzIG9mZiBieSBkZWZhdWx0CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMudHJhcHNbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICAjIGltcGxpY2l0IGNvbnZlcnNpb24gc2V0cyB0aGUgZmxhZworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNy41KSwgNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jcmVhdGVfZGVjaW1hbCg3LjUpLCA3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgICMgZXhwbGljaXQgY29udmVyc2lvbiBkb2VzIG5vdCBzZXQgdGhlIGZsYWcKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgeCA9IERlY2ltYWwuZnJvbV9mbG9hdCg3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorICAgICAgICAgICAgIyBjb21wYXJpc29uIHNldHMgdGhlIGZsYWcKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHggPSBjLmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICAjIyMjIyBzZXQgdGhlIHRyYXAKKyAgICAgICAgICAgIGMudHJhcHNbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorCisgICAgICAgICAgICAjIGltcGxpY2l0IGNvbnZlcnNpb24gcmFpc2VzCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZsb2F0T3BlcmF0aW9uLCBEZWNpbWFsLCA3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmxvYXRPcGVyYXRpb24sIGMuY3JlYXRlX2RlY2ltYWwsIDcuNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICAgICAgIyBleHBsaWNpdCBjb252ZXJzaW9uIGlzIHNpbGVudAorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICB4ID0gRGVjaW1hbC5mcm9tX2Zsb2F0KDcuNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgeCA9IGMuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCg3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgZGVmIHRlc3RfZmxvYXRfY29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBGbG9hdE9wZXJhdGlvbiA9IHNlbGYuZGVjaW1hbC5GbG9hdE9wZXJhdGlvbgorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKKyAgICAgICAgZGVmIGFzc2VydF9hdHRyKGEsIGIsIGF0dHIsIGNvbnRleHQsIHNpZ25hbD1Ob25lKToKKyAgICAgICAgICAgIGNvbnRleHQuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgZiA9IGdldGF0dHIoYSwgYXR0cikKKyAgICAgICAgICAgIGlmIHNpZ25hbCA9PSBGbG9hdE9wZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzaWduYWwsIGYsIGIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZihiKSwgVHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb250ZXh0LmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICBzbWFsbF9kID0gRGVjaW1hbCgnMC4yNScpCisgICAgICAgIGJpZ19kID0gRGVjaW1hbCgnMy4wJykKKyAgICAgICAgc21hbGxfZiA9IDAuMjUKKyAgICAgICAgYmlnX2YgPSAzLjAKKworICAgICAgICB6ZXJvX2QgPSBEZWNpbWFsKCcwLjAnKQorICAgICAgICBuZWdfemVyb19kID0gRGVjaW1hbCgnLTAuMCcpCisgICAgICAgIHplcm9fZiA9IDAuMAorICAgICAgICBuZWdfemVyb19mID0gLTAuMAorCisgICAgICAgIGluZl9kID0gRGVjaW1hbCgnSW5maW5pdHknKQorICAgICAgICBuZWdfaW5mX2QgPSBEZWNpbWFsKCctSW5maW5pdHknKQorICAgICAgICBpbmZfZiA9IGZsb2F0KCdpbmYnKQorICAgICAgICBuZWdfaW5mX2YgPSBmbG9hdCgnLWluZicpCisKKyAgICAgICAgZGVmIGRvaXQoYywgc2lnbmFsPU5vbmUpOgorICAgICAgICAgICAgIyBPcmRlcgorICAgICAgICAgICAgZm9yIGF0dHIgaW4gJ19fbHRfXycsICdfX2xlX18nOgorICAgICAgICAgICAgICAgIGFzc2VydF9hdHRyKHNtYWxsX2QsIGJpZ19mLCBhdHRyLCBjLCBzaWduYWwpCisKKyAgICAgICAgICAgIGZvciBhdHRyIGluICdfX2d0X18nLCAnX19nZV9fJzoKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXR0cihiaWdfZCwgc21hbGxfZiwgYXR0ciwgYywgc2lnbmFsKQorCisgICAgICAgICAgICAjIEVxdWFsaXR5CisgICAgICAgICAgICBhc3NlcnRfYXR0cihzbWFsbF9kLCBzbWFsbF9mLCAnX19lcV9fJywgYywgTm9uZSkKKworICAgICAgICAgICAgYXNzZXJ0X2F0dHIobmVnX3plcm9fZCwgbmVnX3plcm9fZiwgJ19fZXFfXycsIGMsIE5vbmUpCisgICAgICAgICAgICBhc3NlcnRfYXR0cihuZWdfemVyb19kLCB6ZXJvX2YsICdfX2VxX18nLCBjLCBOb25lKQorCisgICAgICAgICAgICBhc3NlcnRfYXR0cih6ZXJvX2QsIG5lZ196ZXJvX2YsICdfX2VxX18nLCBjLCBOb25lKQorICAgICAgICAgICAgYXNzZXJ0X2F0dHIoemVyb19kLCB6ZXJvX2YsICdfX2VxX18nLCBjLCBOb25lKQorCisgICAgICAgICAgICBhc3NlcnRfYXR0cihuZWdfaW5mX2QsIG5lZ19pbmZfZiwgJ19fZXFfXycsIGMsIE5vbmUpCisgICAgICAgICAgICBhc3NlcnRfYXR0cihpbmZfZCwgaW5mX2YsICdfX2VxX18nLCBjLCBOb25lKQorCisgICAgICAgICAgICAjIEluZXF1YWxpdHkKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKHNtYWxsX2QsIGJpZ19mLCAnX19uZV9fJywgYywgTm9uZSkKKworICAgICAgICAgICAgYXNzZXJ0X2F0dHIoRGVjaW1hbCgnMC4xJyksIDAuMSwgJ19fbmVfXycsIGMsIE5vbmUpCisKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKG5lZ19pbmZfZCwgaW5mX2YsICdfX25lX18nLCBjLCBOb25lKQorICAgICAgICAgICAgYXNzZXJ0X2F0dHIoaW5mX2QsIG5lZ19pbmZfZiwgJ19fbmVfXycsIGMsIE5vbmUpCisKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKERlY2ltYWwoJ05hTicpLCBmbG9hdCgnbmFuJyksICdfX25lX18nLCBjLCBOb25lKQorCisgICAgICAgIGRlZiB0ZXN0X2NvbnRhaW5lcnMoYywgc2lnbmFsPU5vbmUpOgorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzID0gc2V0KFsxMDAuMCwgRGVjaW1hbCgnMTAwLjAnKV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBpZiBzaWduYWw6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc2lnbmFsLCBzb3J0ZWQsIFsxLjAsIERlY2ltYWwoJzEwLjAnKV0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHMgPSBzb3J0ZWQoWzEwLjAsIERlY2ltYWwoJzEwLjAnKV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgYiA9IDEwLjAgaW4gW0RlY2ltYWwoJzEwLjAnKSwgMS4wXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGIgPSAxMC4wIGluIHtEZWNpbWFsKCcxMC4wJyk6J2EnLCAxLjA6J2InfQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgIG5jID0gQ29udGV4dCgpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KG5jKSBhcyBjOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLnRyYXBzW0Zsb2F0T3BlcmF0aW9uXSkKKyAgICAgICAgICAgIGRvaXQoYywgc2lnbmFsPU5vbmUpCisgICAgICAgICAgICB0ZXN0X2NvbnRhaW5lcnMoYywgc2lnbmFsPU5vbmUpCisKKyAgICAgICAgICAgIGMudHJhcHNbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorICAgICAgICAgICAgZG9pdChjLCBzaWduYWw9RmxvYXRPcGVyYXRpb24pCisgICAgICAgICAgICB0ZXN0X2NvbnRhaW5lcnMoYywgc2lnbmFsPUZsb2F0T3BlcmF0aW9uKQorCisgICAgZGVmIHRlc3RfZmxvYXRfb3BlcmF0aW9uX2RlZmF1bHQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgSW5leGFjdCA9IHNlbGYuZGVjaW1hbC5JbmV4YWN0CisgICAgICAgIEZsb2F0T3BlcmF0aW9uPSBzZWxmLmRlY2ltYWwuRmxvYXRPcGVyYXRpb24KKworICAgICAgICBjb250ZXh0ID0gQ29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29udGV4dC5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29udGV4dC50cmFwc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgY29udGV4dC5jbGVhcl90cmFwcygpCisgICAgICAgIGNvbnRleHQudHJhcHNbSW5leGFjdF0gPSBUcnVlCisgICAgICAgIGNvbnRleHQudHJhcHNbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29udGV4dC50cmFwc1tGbG9hdE9wZXJhdGlvbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb250ZXh0LnRyYXBzW0luZXhhY3RdKQorCitjbGFzcyBDQ29udGV4dEZsYWdzKENvbnRleHRGbGFncyk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5Q29udGV4dEZsYWdzKENvbnRleHRGbGFncyk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgU3BlY2lhbENvbnRleHRzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRoZSBjb250ZXh0IHRlbXBsYXRlcy4iIiIKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfdGVtcGxhdGVzKHNlbGYpOgorICAgICAgICBCYXNpY0NvbnRleHQgPSBzZWxmLmRlY2ltYWwuQmFzaWNDb250ZXh0CisgICAgICAgIEV4dGVuZGVkQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5FeHRlbmRlZENvbnRleHQKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisgICAgICAgIHNldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuc2V0Y29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgRGl2aXNpb25CeVplcm8gPSBzZWxmLmRlY2ltYWwuRGl2aXNpb25CeVplcm8KKyAgICAgICAgT3ZlcmZsb3cgPSBzZWxmLmRlY2ltYWwuT3ZlcmZsb3cKKyAgICAgICAgVW5kZXJmbG93ID0gc2VsZi5kZWNpbWFsLlVuZGVyZmxvdworICAgICAgICBDbGFtcGVkID0gc2VsZi5kZWNpbWFsLkNsYW1wZWQKKworICAgICAgICBhc3NlcnRfc2lnbmFscyhzZWxmLCBCYXNpY0NvbnRleHQsICd0cmFwcycsCisgICAgICAgICAgICBbSW52YWxpZE9wZXJhdGlvbiwgRGl2aXNpb25CeVplcm8sIE92ZXJmbG93LCBVbmRlcmZsb3csIENsYW1wZWRdCisgICAgICAgICkKKworICAgICAgICBzYXZlY29udGV4dCA9IGdldGNvbnRleHQoKS5jb3B5KCkKKyAgICAgICAgYmFzaWNfY29udGV4dF9wcmVjID0gQmFzaWNDb250ZXh0LnByZWMKKyAgICAgICAgZXh0ZW5kZWRfY29udGV4dF9wcmVjID0gRXh0ZW5kZWRDb250ZXh0LnByZWMKKworICAgICAgICBleCA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgQmFzaWNDb250ZXh0LnByZWMgPSBFeHRlbmRlZENvbnRleHQucHJlYyA9IDQ0MQorICAgICAgICAgICAgZm9yIHRlbXBsYXRlIGluIEJhc2ljQ29udGV4dCwgRXh0ZW5kZWRDb250ZXh0OgorICAgICAgICAgICAgICAgIHNldGNvbnRleHQodGVtcGxhdGUpCisgICAgICAgICAgICAgICAgYyA9IGdldGNvbnRleHQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoYywgdGVtcGxhdGUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIDQ0MSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgZXggPSBlLl9fY2xhc3NfXworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgQmFzaWNDb250ZXh0LnByZWMgPSBiYXNpY19jb250ZXh0X3ByZWMKKyAgICAgICAgICAgIEV4dGVuZGVkQ29udGV4dC5wcmVjID0gZXh0ZW5kZWRfY29udGV4dF9wcmVjCisgICAgICAgICAgICBzZXRjb250ZXh0KHNhdmVjb250ZXh0KQorICAgICAgICAgICAgaWYgZXg6CisgICAgICAgICAgICAgICAgcmFpc2UgZXgKKworICAgIGRlZiB0ZXN0X2RlZmF1bHRfY29udGV4dChzZWxmKToKKyAgICAgICAgRGVmYXVsdENvbnRleHQgPSBzZWxmLmRlY2ltYWwuRGVmYXVsdENvbnRleHQKKyAgICAgICAgQmFzaWNDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkJhc2ljQ29udGV4dAorICAgICAgICBFeHRlbmRlZENvbnRleHQgPSBzZWxmLmRlY2ltYWwuRXh0ZW5kZWRDb250ZXh0CisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorICAgICAgICBzZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLnNldGNvbnRleHQKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIERpdmlzaW9uQnlaZXJvID0gc2VsZi5kZWNpbWFsLkRpdmlzaW9uQnlaZXJvCisgICAgICAgIE92ZXJmbG93ID0gc2VsZi5kZWNpbWFsLk92ZXJmbG93CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCYXNpY0NvbnRleHQucHJlYywgOSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFeHRlbmRlZENvbnRleHQucHJlYywgOSkKKworICAgICAgICBhc3NlcnRfc2lnbmFscyhzZWxmLCBEZWZhdWx0Q29udGV4dCwgJ3RyYXBzJywKKyAgICAgICAgICAgIFtJbnZhbGlkT3BlcmF0aW9uLCBEaXZpc2lvbkJ5WmVybywgT3ZlcmZsb3ddCisgICAgICAgICkKKworICAgICAgICBzYXZlY29udGV4dCA9IGdldGNvbnRleHQoKS5jb3B5KCkKKyAgICAgICAgZGVmYXVsdF9jb250ZXh0X3ByZWMgPSBEZWZhdWx0Q29udGV4dC5wcmVjCisKKyAgICAgICAgZXggPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgICAgIHNhdmVwcmVjID0gYy5wcmVjCisKKyAgICAgICAgICAgIERlZmF1bHRDb250ZXh0LnByZWMgPSA5NjEKKyAgICAgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCBzYXZlcHJlYykKKworICAgICAgICAgICAgc2V0Y29udGV4dChEZWZhdWx0Q29udGV4dCkKKyAgICAgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoYywgRGVmYXVsdENvbnRleHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgOTYxKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBleCA9IGUuX19jbGFzc19fCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBEZWZhdWx0Q29udGV4dC5wcmVjID0gZGVmYXVsdF9jb250ZXh0X3ByZWMKKyAgICAgICAgICAgIHNldGNvbnRleHQoc2F2ZWNvbnRleHQpCisgICAgICAgICAgICBpZiBleDoKKyAgICAgICAgICAgICAgICByYWlzZSBleAorCitjbGFzcyBDU3BlY2lhbENvbnRleHRzKFNwZWNpYWxDb250ZXh0cyk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5U3BlY2lhbENvbnRleHRzKFNwZWNpYWxDb250ZXh0cyk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgQ29udGV4dElucHV0VmFsaWRhdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NvbnRleHQoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBEZWZhdWx0Q29udGV4dCA9IHNlbGYuZGVjaW1hbC5EZWZhdWx0Q29udGV4dAorCisgICAgICAgIGMgPSBEZWZhdWx0Q29udGV4dC5jb3B5KCkKKworICAgICAgICAjIHByZWMsIEVtYXgKKyAgICAgICAgZm9yIGF0dHIgaW4gWydwcmVjJywgJ0VtYXgnXToKKyAgICAgICAgICAgIHNldGF0dHIoYywgYXR0ciwgOTk5OTk5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKGMsIGF0dHIpLCA5OTk5OTkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgJ3h5eicpCisKKyAgICAgICAgIyBFbWluCisgICAgICAgIHNldGF0dHIoYywgJ0VtaW4nLCAtOTk5OTk5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIoYywgJ0VtaW4nKSwgLTk5OTk5OSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgJ0VtaW4nLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsICdFbWluJywgKDEsMiwzKSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsICdyb3VuZGluZycsIC0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsICdyb3VuZGluZycsIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgJ3JvdW5kaW5nJywgMS4wKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsICdyb3VuZGluZycsICd4eXonKQorCisgICAgICAgICMgY2FwaXRhbHMsIGNsYW1wCisgICAgICAgIGZvciBhdHRyIGluIFsnY2FwaXRhbHMnLCAnY2xhbXAnXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIC0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgWzEsMiwzXSkKKworICAgICAgICAjIEludmFsaWQgYXR0cmlidXRlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBjLCAnZW1heCcsIDEwMCkKKworICAgICAgICAjIEludmFsaWQgc2lnbmFsIGRpY3QKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCAnZmxhZ3MnLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHNldGF0dHIsIGMsICdmbGFncycsIHt9KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgc2V0YXR0ciwgYywgJ3RyYXBzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeydJbnZhbGlkT3BlcmF0aW9uJzowfSkKKworICAgICAgICAjIEF0dHJpYnV0ZXMgY2Fubm90IGJlIGRlbGV0ZWQKKyAgICAgICAgZm9yIGF0dHIgaW4gWydwcmVjJywgJ0VtYXgnLCAnRW1pbicsICdyb3VuZGluZycsICdjYXBpdGFscycsICdjbGFtcCcsCisgICAgICAgICAgICAgICAgICAgICAnZmxhZ3MnLCAndHJhcHMnXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBjLl9fZGVsYXR0cl9fLCBhdHRyKQorCisgICAgICAgICMgSW52YWxpZCBhdHRyaWJ1dGVzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXR0ciwgYywgOSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCA5KQorCisgICAgICAgICMgSW52YWxpZCB2YWx1ZXMgaW4gY29uc3RydWN0b3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDb250ZXh0LCByb3VuZGluZz05OTk5OTkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQ29udGV4dCwgcm91bmRpbmc9J3h5eicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIENvbnRleHQsIGNsYW1wPTIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIENvbnRleHQsIGNhcGl0YWxzPS0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgQ29udGV4dCwgZmxhZ3M9WyJQIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBDb250ZXh0LCB0cmFwcz1bIlEiXSkKKworICAgICAgICAjIFR5cGUgZXJyb3IgaW4gY29udmVyc2lvbgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIENvbnRleHQsIGZsYWdzPSgwLDEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIENvbnRleHQsIHRyYXBzPSgxLDApKQorCitjbGFzcyBDQ29udGV4dElucHV0VmFsaWRhdGlvbihDb250ZXh0SW5wdXRWYWxpZGF0aW9uKToKKyAgICBkZWNpbWFsID0gQworY2xhc3MgUHlDb250ZXh0SW5wdXRWYWxpZGF0aW9uKENvbnRleHRJbnB1dFZhbGlkYXRpb24pOgorICAgIGRlY2ltYWwgPSBQCisKK2NsYXNzIENvbnRleHRTdWJjbGFzc2luZyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9jb250ZXh0X3N1YmNsYXNzaW5nKHNlbGYpOgorICAgICAgICBkZWNpbWFsID0gc2VsZi5kZWNpbWFsCisgICAgICAgIERlY2ltYWwgPSBkZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IGRlY2ltYWwuQ29udGV4dAorICAgICAgICBDbGFtcGVkID0gZGVjaW1hbC5DbGFtcGVkCisgICAgICAgIERpdmlzaW9uQnlaZXJvID0gZGVjaW1hbC5EaXZpc2lvbkJ5WmVybworICAgICAgICBJbmV4YWN0ID0gZGVjaW1hbC5JbmV4YWN0CisgICAgICAgIE92ZXJmbG93ID0gZGVjaW1hbC5PdmVyZmxvdworICAgICAgICBSb3VuZGVkID0gZGVjaW1hbC5Sb3VuZGVkCisgICAgICAgIFN1Ym5vcm1hbCA9IGRlY2ltYWwuU3Vibm9ybWFsCisgICAgICAgIFVuZGVyZmxvdyA9IGRlY2ltYWwuVW5kZXJmbG93CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBkZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKworICAgICAgICBjbGFzcyBNeUNvbnRleHQoQ29udGV4dCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcHJlYz1Ob25lLCByb3VuZGluZz1Ob25lLCBFbWluPU5vbmUsIEVtYXg9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXBpdGFscz1Ob25lLCBjbGFtcD1Ob25lLCBmbGFncz1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXBzPU5vbmUpOgorICAgICAgICAgICAgICAgIENvbnRleHQuX19pbml0X18oc2VsZikKKyAgICAgICAgICAgICAgICBpZiBwcmVjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnByZWMgPSBwcmVjCisgICAgICAgICAgICAgICAgaWYgcm91bmRpbmcgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucm91bmRpbmcgPSByb3VuZGluZworICAgICAgICAgICAgICAgIGlmIEVtaW4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuRW1pbiA9IEVtaW4KKyAgICAgICAgICAgICAgICBpZiBFbWF4IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLkVtYXggPSBFbWF4CisgICAgICAgICAgICAgICAgaWYgY2FwaXRhbHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMgPSBjYXBpdGFscworICAgICAgICAgICAgICAgIGlmIGNsYW1wIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYW1wID0gY2xhbXAKKyAgICAgICAgICAgICAgICBpZiBmbGFncyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmbGFncywgbGlzdCk6CisgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHt2Oih2IGluIGZsYWdzKSBmb3IgdiBpbiBPcmRlcmVkU2lnbmFsc1tkZWNpbWFsXSArIGZsYWdzfQorICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzID0gZmxhZ3MKKyAgICAgICAgICAgICAgICBpZiB0cmFwcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0cmFwcywgbGlzdCk6CisgICAgICAgICAgICAgICAgICAgICAgICB0cmFwcyA9IHt2Oih2IGluIHRyYXBzKSBmb3IgdiBpbiBPcmRlcmVkU2lnbmFsc1tkZWNpbWFsXSArIHRyYXBzfQorICAgICAgICAgICAgICAgICAgICBzZWxmLnRyYXBzID0gdHJhcHMKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBNeUNvbnRleHQoKQorICAgICAgICBmb3IgYXR0ciBpbiAoJ3ByZWMnLCAncm91bmRpbmcnLCAnRW1pbicsICdFbWF4JywgJ2NhcGl0YWxzJywgJ2NsYW1wJywKKyAgICAgICAgICAgICAgICAgICAgICdmbGFncycsICd0cmFwcycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKGMsIGF0dHIpLCBnZXRhdHRyKGQsIGF0dHIpKQorCisgICAgICAgICMgcHJlYworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBNeUNvbnRleHQsICoqeydwcmVjJzotMX0pCisgICAgICAgIGMgPSBNeUNvbnRleHQocHJlYz0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgYy5xdWFudGl6ZSwgRGVjaW1hbCgnOWUyJyksIDApCisKKyAgICAgICAgIyByb3VuZGluZworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE15Q29udGV4dCwgKip7J3JvdW5kaW5nJzonWFlaJ30pCisgICAgICAgIGMgPSBNeUNvbnRleHQocm91bmRpbmc9Uk9VTkRfRE9XTiwgcHJlYz0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucm91bmRpbmcsIFJPVU5EX0RPV04pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wbHVzKERlY2ltYWwoJzkuOScpKSwgOSkKKworICAgICAgICAjIEVtaW4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgTXlDb250ZXh0LCAqKnsnRW1pbic6NX0pCisgICAgICAgIGMgPSBNeUNvbnRleHQoRW1pbj0tMSwgcHJlYz0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1pbiwgLTEpCisgICAgICAgIHggPSBjLmFkZChEZWNpbWFsKCcxZS05OScpLCBEZWNpbWFsKCcyLjIzNGUtMjAwMCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoJzAuMCcpKQorICAgICAgICBmb3Igc2lnbmFsIGluIChJbmV4YWN0LCBVbmRlcmZsb3csIFN1Ym5vcm1hbCwgUm91bmRlZCwgQ2xhbXBlZCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tzaWduYWxdKQorCisgICAgICAgICMgRW1heAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBNeUNvbnRleHQsICoqeydFbWF4JzotMX0pCisgICAgICAgIGMgPSBNeUNvbnRleHQoRW1heD0xLCBwcmVjPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWF4LCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvdywgYy5hZGQsIERlY2ltYWwoJzFlOTknKSwgRGVjaW1hbCgnMi4yMzRlMjAwMCcpKQorICAgICAgICBpZiBzZWxmLmRlY2ltYWwgPT0gQzoKKyAgICAgICAgICAgIGZvciBzaWduYWwgaW4gKEluZXhhY3QsIE92ZXJmbG93LCBSb3VuZGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tzaWduYWxdKQorCisgICAgICAgICMgY2FwaXRhbHMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgTXlDb250ZXh0LCAqKnsnY2FwaXRhbHMnOi0xfSkKKyAgICAgICAgYyA9IE15Q29udGV4dChjYXBpdGFscz0wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2FwaXRhbHMsIDApCisgICAgICAgIHggPSBjLmNyZWF0ZV9kZWNpbWFsKCcxRTIyMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19zY2lfc3RyaW5nKHgpLCAnMWUrMjIyJykKKworICAgICAgICAjIGNsYW1wCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIE15Q29udGV4dCwgKip7J2NsYW1wJzoyfSkKKyAgICAgICAgYyA9IE15Q29udGV4dChjbGFtcD0xLCBFbWF4PTk5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2xhbXAsIDEpCisgICAgICAgIHggPSBjLnBsdXMoRGVjaW1hbCgnMWU5OScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih4KSwgJzEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRSs5OScpCisKKyAgICAgICAgIyBmbGFncworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE15Q29udGV4dCwgKip7J2ZsYWdzJzonWFlaJ30pCisgICAgICAgIGMgPSBNeUNvbnRleHQoZmxhZ3M9W1JvdW5kZWQsIERpdmlzaW9uQnlaZXJvXSkKKyAgICAgICAgZm9yIHNpZ25hbCBpbiAoUm91bmRlZCwgRGl2aXNpb25CeVplcm8pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3Nbc2lnbmFsXSkKKyAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgIGZvciBzaWduYWwgaW4gT3JkZXJlZFNpZ25hbHNbZGVjaW1hbF06CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3Nbc2lnbmFsXSkKKworICAgICAgICAjIHRyYXBzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTXlDb250ZXh0LCAqKnsndHJhcHMnOidYWVonfSkKKyAgICAgICAgYyA9IE15Q29udGV4dCh0cmFwcz1bUm91bmRlZCwgRGl2aXNpb25CeVplcm9dKQorICAgICAgICBmb3Igc2lnbmFsIGluIChSb3VuZGVkLCBEaXZpc2lvbkJ5WmVybyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy50cmFwc1tzaWduYWxdKQorICAgICAgICBjLmNsZWFyX3RyYXBzKCkKKyAgICAgICAgZm9yIHNpZ25hbCBpbiBPcmRlcmVkU2lnbmFsc1tkZWNpbWFsXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy50cmFwc1tzaWduYWxdKQorCitjbGFzcyBDQ29udGV4dFN1YmNsYXNzaW5nKENvbnRleHRTdWJjbGFzc2luZyk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5Q29udGV4dFN1YmNsYXNzaW5nKENvbnRleHRTdWJjbGFzc2luZyk6CisgICAgZGVjaW1hbCA9IFAKKworQHNraXBfaWZfZXh0cmFfZnVuY3Rpb25hbGl0eQorY2xhc3MgQ2hlY2tBdHRyaWJ1dGVzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X21vZHVsZV9hdHRyaWJ1dGVzKHNlbGYpOgorCisgICAgICAgICMgQXJjaGl0ZWN0dXJlIGRlcGVuZGVudCBjb250ZXh0IGxpbWl0cworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuTUFYX1BSRUMsIFAuTUFYX1BSRUMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5NQVhfRU1BWCwgUC5NQVhfRU1BWCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLk1JTl9FTUlOLCBQLk1JTl9FTUlOKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuTUlOX0VUSU5ZLCBQLk1JTl9FVElOWSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoQy5IQVZFX1RIUkVBRFMgaXMgVHJ1ZSBvciBDLkhBVkVfVEhSRUFEUyBpcyBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAuSEFWRV9USFJFQURTIGlzIFRydWUgb3IgUC5IQVZFX1RIUkVBRFMgaXMgRmFsc2UpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fdmVyc2lvbl9fLCBQLl9fdmVyc2lvbl9fKQorCisgICAgICAgIHggPSBkaXIoQykKKyAgICAgICAgeSA9IFtzIGZvciBzIGluIGRpcihQKSBpZiAnX18nIGluIHMgb3Igbm90IHMuc3RhcnRzd2l0aCgnXycpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh4KSAtIHNldCh5KSwgc2V0KCkpCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X2F0dHJpYnV0ZXMoc2VsZik6CisKKyAgICAgICAgeCA9IFtzIGZvciBzIGluIGRpcihDLkNvbnRleHQoKSkgaWYgJ19fJyBpbiBzIG9yIG5vdCBzLnN0YXJ0c3dpdGgoJ18nKV0KKyAgICAgICAgeSA9IFtzIGZvciBzIGluIGRpcihQLkNvbnRleHQoKSkgaWYgJ19fJyBpbiBzIG9yIG5vdCBzLnN0YXJ0c3dpdGgoJ18nKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoeCkgLSBzZXQoeSksIHNldCgpKQorCisgICAgZGVmIHRlc3RfZGVjaW1hbF9hdHRyaWJ1dGVzKHNlbGYpOgorCisgICAgICAgIHggPSBbcyBmb3IgcyBpbiBkaXIoQy5EZWNpbWFsKDkpKSBpZiAnX18nIGluIHMgb3Igbm90IHMuc3RhcnRzd2l0aCgnXycpXQorICAgICAgICB5ID0gW3MgZm9yIHMgaW4gZGlyKEMuRGVjaW1hbCg5KSkgaWYgJ19fJyBpbiBzIG9yIG5vdCBzLnN0YXJ0c3dpdGgoJ18nKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoeCkgLSBzZXQoeSksIHNldCgpKQorCitjbGFzcyBDb3ZlcmFnZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hZGp1c3RlZChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCcxMjM0ZTk5OTknKS5hZGp1c3RlZCgpLCAxMDAwMikKKyAgICAgICAgIyBYWFggcmFpc2U/CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgnbmFuJykuYWRqdXN0ZWQoKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCdpbmYnKS5hZGp1c3RlZCgpLCAwKQorCisgICAgZGVmIHRlc3RfY2Fub25pY2FsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisKKyAgICAgICAgeCA9IERlY2ltYWwoOSkuY2Fub25pY2FsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCA5KQorCisgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgeCA9IGMuY2Fub25pY2FsKERlY2ltYWwoOSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgOSkKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfcmVwcihzZWxmKToKKyAgICAgICAgYyA9IHNlbGYuZGVjaW1hbC5EZWZhdWx0Q29udGV4dC5jb3B5KCkKKworICAgICAgICBjLnByZWMgPSA0MjUwMDAwMDAKKyAgICAgICAgYy5FbWF4ID0gNDI1MDAwMDAwCisgICAgICAgIGMuRW1pbiA9IC00MjUwMDAwMDAKKyAgICAgICAgYy5yb3VuZGluZyA9IFJPVU5EX0hBTEZfRE9XTgorICAgICAgICBjLmNhcGl0YWxzID0gMAorICAgICAgICBjLmNsYW1wID0gMQorICAgICAgICBmb3Igc2lnIGluIE9yZGVyZWRTaWduYWxzW3NlbGYuZGVjaW1hbF06CisgICAgICAgICAgICBjLmZsYWdzW3NpZ10gPSBGYWxzZQorICAgICAgICAgICAgYy50cmFwc1tzaWddID0gRmFsc2UKKworICAgICAgICBzID0gYy5fX3JlcHJfXygpCisgICAgICAgIHQgPSAiQ29udGV4dChwcmVjPTQyNTAwMDAwMCwgcm91bmRpbmc9Uk9VTkRfSEFMRl9ET1dOLCAiIFwKKyAgICAgICAgICAgICJFbWluPS00MjUwMDAwMDAsIEVtYXg9NDI1MDAwMDAwLCBjYXBpdGFscz0wLCBjbGFtcD0xLCAiIFwKKyAgICAgICAgICAgICJmbGFncz1bXSwgdHJhcHM9W10pIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIHQpCisKKyAgICBkZWYgdGVzdF9pbXBsaWNpdF9jb250ZXh0KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMucHJlYyA9IDEKKyAgICAgICAgICAgIGMuRW1heCA9IDEKKyAgICAgICAgICAgIGMuRW1pbiA9IC0xCisKKyAgICAgICAgICAgICMgYWJzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFicyhEZWNpbWFsKCItMTAiKSksIDEwKQorICAgICAgICAgICAgIyBhZGQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiNyIpICsgMSwgOCkKKyAgICAgICAgICAgICMgZGl2aWRlCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEwIikgLyA1LCAyKQorICAgICAgICAgICAgIyBkaXZpZGVfaW50CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEwIikgLy8gNywgMSkKKyAgICAgICAgICAgICMgZm1hCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEuMiIpLmZtYShEZWNpbWFsKCIwLjAxIiksIDEpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhEZWNpbWFsKCJOYU4iKS5mbWEoNywgMSkuaXNfbmFuKCksIFRydWUpCisgICAgICAgICAgICAjIHRocmVlIGFyZyBwb3dlcgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3coRGVjaW1hbCgxMCksIDIsIDcpLCAyKQorICAgICAgICAgICAgIyBleHAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMS4wMSIpLmV4cCgpLCAzKQorICAgICAgICAgICAgIyBpc19ub3JtYWwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRGVjaW1hbCgiMC4wMSIpLmlzX25vcm1hbCgpLCBGYWxzZSkKKyAgICAgICAgICAgICMgaXNfc3Vibm9ybWFsCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKERlY2ltYWwoIjAuMDEiKS5pc19zdWJub3JtYWwoKSwgVHJ1ZSkKKyAgICAgICAgICAgICMgbG4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMjAiKS5sbigpLCAzKQorICAgICAgICAgICAgIyBsb2cxMAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIyMCIpLmxvZzEwKCksIDEpCisgICAgICAgICAgICAjIGxvZ2IKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiNTgwIikubG9nYigpLCAyKQorICAgICAgICAgICAgIyBsb2dpY2FsX2ludmVydAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxMCIpLmxvZ2ljYWxfaW52ZXJ0KCksIDEpCisgICAgICAgICAgICAjIG1pbnVzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC1EZWNpbWFsKCItMTAiKSwgMTApCisgICAgICAgICAgICAjIG11bHRpcGx5CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjIiKSAqIDQsIDgpCisgICAgICAgICAgICAjIG5leHRfbWludXMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMTAiKS5uZXh0X21pbnVzKCksIDkpCisgICAgICAgICAgICAjIG5leHRfcGx1cworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxMCIpLm5leHRfcGx1cygpLCBEZWNpbWFsKCcyRSsxJykpCisgICAgICAgICAgICAjIG5vcm1hbGl6ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCItMTAiKS5ub3JtYWxpemUoKSwgRGVjaW1hbCgnLTFFKzEnKSkKKyAgICAgICAgICAgICMgbnVtYmVyX2NsYXNzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEwIikubnVtYmVyX2NsYXNzKCksICcrTm9ybWFsJykKKyAgICAgICAgICAgICMgcGx1cworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgrRGVjaW1hbCgiLTEiKSwgLTEpCisgICAgICAgICAgICAjIHJlbWFpbmRlcgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxMCIpICUgNywgMykKKyAgICAgICAgICAgICMgc3VidHJhY3QKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMTAiKSAtIDcsIDMpCisgICAgICAgICAgICAjIHRvX2ludGVncmFsX2V4YWN0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEuMTIzNDUiKS50b19pbnRlZ3JhbF9leGFjdCgpLCAxKQorCisgICAgICAgICAgICAjIEJvb2xlYW4gZnVuY3Rpb25zCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRGVjaW1hbCgiMSIpLmlzX2Nhbm9uaWNhbCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERlY2ltYWwoIjEiKS5pc19maW5pdGUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShEZWNpbWFsKCIxIikuaXNfZmluaXRlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRGVjaW1hbCgic25hbiIpLmlzX3NuYW4oKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShEZWNpbWFsKCItMSIpLmlzX3NpZ25lZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERlY2ltYWwoIjAiKS5pc196ZXJvKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRGVjaW1hbCgiMCIpLmlzX3plcm8oKSkKKworICAgICAgICAjIENvcHkKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy5wcmVjID0gMTAwMDAKKyAgICAgICAgICAgIHggPSAxMjI4ICoqIDE1MjMKKyAgICAgICAgICAgIHkgPSAtRGVjaW1hbCh4KQorCisgICAgICAgICAgICB6ID0geS5jb3B5X2FicygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHosIHgpCisKKyAgICAgICAgICAgIHogPSB5LmNvcHlfbmVnYXRlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeiwgeCkKKworICAgICAgICAgICAgeiA9IHkuY29weV9zaWduKERlY2ltYWwoMSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHosIHgpCisKKyAgICBkZWYgdGVzdF9kaXZtb2Qoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBEaXZpc2lvbkJ5WmVybyA9IHNlbGYuZGVjaW1hbC5EaXZpc2lvbkJ5WmVybworCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIHEsIHIgPSBkaXZtb2QoRGVjaW1hbCgiMTA5MTI4MzcxMjkiKSwgMTAwMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocSwgRGVjaW1hbCgnMTA5MDE5MzUnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwociwgRGVjaW1hbCgnMTk0JykpCisKKyAgICAgICAgICAgIHEsIHIgPSBkaXZtb2QoRGVjaW1hbCgiTmFOIiksIDcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocS5pc19uYW4oKSBhbmQgci5pc19uYW4oKSkKKworICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IEZhbHNlCisgICAgICAgICAgICBxLCByID0gZGl2bW9kKERlY2ltYWwoIk5hTiIpLCA3KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHEuaXNfbmFuKCkgYW5kIHIuaXNfbmFuKCkpCisKKyAgICAgICAgICAgIGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSBGYWxzZQorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBxLCByID0gZGl2bW9kKERlY2ltYWwoImluZiIpLCBEZWNpbWFsKCJpbmYiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxLmlzX25hbigpIGFuZCByLmlzX25hbigpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgcSwgciA9IGRpdm1vZChEZWNpbWFsKCJpbmYiKSwgMTAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHEuaXNfaW5maW5pdGUoKSBhbmQgci5pc19uYW4oKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHEsIHIgPSBkaXZtb2QoRGVjaW1hbCgwKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxLmlzX25hbigpIGFuZCByLmlzX25hbigpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMudHJhcHNbRGl2aXNpb25CeVplcm9dID0gRmFsc2UKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgcSwgciA9IGRpdm1vZChEZWNpbWFsKDExKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxLmlzX2luZmluaXRlKCkgYW5kIHIuaXNfbmFuKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmZsYWdzW0RpdmlzaW9uQnlaZXJvXSkKKworICAgIGRlZiB0ZXN0X3Bvd2VyKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorICAgICAgICBPdmVyZmxvdyA9IHNlbGYuZGVjaW1hbC5PdmVyZmxvdworICAgICAgICBSb3VuZGVkID0gc2VsZi5kZWNpbWFsLlJvdW5kZWQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBjLnByZWMgPSAzCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMS4wIikgKiogMTAwLCBEZWNpbWFsKCcxLjAwJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tSb3VuZGVkXSkKKworICAgICAgICAgICAgYy5wcmVjID0gMQorICAgICAgICAgICAgYy5FbWF4ID0gMQorICAgICAgICAgICAgYy5FbWluID0gLTEKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgYy50cmFwc1tPdmVyZmxvd10gPSBGYWxzZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEwMDAwKSAqKiBEZWNpbWFsKCIwLjUiKSwgRGVjaW1hbCgnaW5mJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tPdmVyZmxvd10pCisKKyAgICBkZWYgdGVzdF9xdWFudGl6ZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy5wcmVjID0gMQorICAgICAgICAgICAgYy5FbWF4ID0gMQorICAgICAgICAgICAgYy5FbWluID0gLTEKKyAgICAgICAgICAgIGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSBGYWxzZQorICAgICAgICAgICAgeCA9IERlY2ltYWwoOTkpLnF1YW50aXplKERlY2ltYWwoIjFlMSIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguaXNfbmFuKCkpCisKKyAgICBkZWYgdGVzdF9yYWRpeChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorCisgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxIikucmFkaXgoKSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yYWRpeCgpLCAxMCkKKworICAgIGRlZiB0ZXN0X3JvcChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgZm9yIGF0dHIgaW4gKCdfX3JhZGRfXycsICdfX3JzdWJfXycsICdfX3JtdWxfXycsICdfX3J0cnVlZGl2X18nLAorICAgICAgICAgICAgICAgICAgICAgJ19fcmRpdm1vZF9fJywgJ19fcm1vZF9fJywgJ19fcmZsb29yZGl2X18nLCAnX19ycG93X18nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZ2V0YXR0cihEZWNpbWFsKCIxIiksIGF0dHIpKCJ4eXoiKSwgTm90SW1wbGVtZW50ZWQpCisKKyAgICBkZWYgdGVzdF9yb3VuZChzZWxmKToKKyAgICAgICAgIyBQeXRob24zIGJlaGF2aW9yOiByb3VuZCgpIHJldHVybnMgRGVjaW1hbAorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisKKyAgICAgICAgYyA9IGdldGNvbnRleHQoKQorICAgICAgICBjLnByZWMgPSAyOAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoIjkuOTkiKS5fX3JvdW5kX18oKSksICIxMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoIjkuOTllLTUiKS5fX3JvdW5kX18oKSksICIwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLl9fcm91bmRfXyg1KSksICIxLjIzNDU3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgiMS4yMzQ1IikuX19yb3VuZF9fKDEwKSksICIxLjIzNDUwMDAwMDAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCIxLjIzNDUiKS5fX3JvdW5kX18oLTEwKSksICIwRSsxMCIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEZWNpbWFsKCIxLjIzIikuX19yb3VuZF9fLCAiNSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCgiMS4yMyIpLl9fcm91bmRfXywgNSwgOCkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9kZWNpbWFsKHNlbGYpOgorICAgICAgICBjID0gc2VsZi5kZWNpbWFsLkNvbnRleHQoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLmNyZWF0ZV9kZWNpbWFsLCBbIiUiXSkKKworICAgIGRlZiB0ZXN0X2ludChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBjLnByZWMgPSA5OTk5CisgICAgICAgICAgICB4ID0gRGVjaW1hbCgxMjIxKioxMjcxKSAvIDEwKiozOTIzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludCh4KSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC50b19pbnRlZ3JhbCgpLCAyKQorCisgICAgZGVmIHRlc3RfY29weShzZWxmKToKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBjLnByZWMgPSAxMDAwMAorICAgICAgICB4ID0gLSgxMTcyICoqIDE3MTIpCisKKyAgICAgICAgeSA9IGMuY29weV9hYnMoeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCAteCkKKworICAgICAgICB5ID0gYy5jb3B5X25lZ2F0ZSh4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIC14KQorCisgICAgICAgIHkgPSBjLmNvcHlfc2lnbih4LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIC14KQorCitjbGFzcyBDQ292ZXJhZ2UoQ292ZXJhZ2UpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUNvdmVyYWdlKENvdmVyYWdlKToKKyAgICBkZWNpbWFsID0gUAorCitjbGFzcyBQeUZ1bmN0aW9uYWxpdHkodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkV4dHJhIGZ1bmN0aW9uYWxpdHkgaW4gZGVjaW1hbC5weSIiIgorCisgICAgZGVmIHRlc3RfcHlfcXVhbnRpemVfd2F0Y2hleHAoc2VsZik6CisgICAgICAgICMgd2F0Y2hleHAgZnVuY3Rpb25hbGl0eQorICAgICAgICBEZWNpbWFsID0gUC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IFAubG9jYWxjb250ZXh0CisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy5wcmVjID0gMQorICAgICAgICAgICAgYy5FbWF4ID0gMQorICAgICAgICAgICAgYy5FbWluID0gLTEKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKDk5OTk5KS5xdWFudGl6ZShEZWNpbWFsKCIxZTMiKSwgd2F0Y2hleHA9RmFsc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoJzEuMDBFKzUnKSkKKworICAgIGRlZiB0ZXN0X3B5X2FsdGVybmF0ZV9mb3JtYXR0aW5nKHNlbGYpOgorICAgICAgICAjIHRyaXBsZXMgZ2l2aW5nIGEgZm9ybWF0LCBhIERlY2ltYWwsIGFuZCB0aGUgZXhwZWN0ZWQgcmVzdWx0CisgICAgICAgIERlY2ltYWwgPSBQLkRlY2ltYWwKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gUC5sb2NhbGNvbnRleHQKKworICAgICAgICB0ZXN0X3ZhbHVlcyA9IFsKKyAgICAgICAgICAgICMgSXNzdWUgNzA5NDogQWx0ZXJuYXRlIGZvcm1hdHRpbmcgKHNwZWNpZmllZCBieSAjKQorICAgICAgICAgICAgKCcuMGUnLCAnMS4wJywgJzFlKzAnKSwKKyAgICAgICAgICAgICgnIy4wZScsICcxLjAnLCAnMS5lKzAnKSwKKyAgICAgICAgICAgICgnLjBmJywgJzEuMCcsICcxJyksCisgICAgICAgICAgICAoJyMuMGYnLCAnMS4wJywgJzEuJyksCisgICAgICAgICAgICAoJ2cnLCAnMS4xJywgJzEuMScpLAorICAgICAgICAgICAgKCcjZycsICcxLjEnLCAnMS4xJyksCisgICAgICAgICAgICAoJy4wZycsICcxJywgJzEnKSwKKyAgICAgICAgICAgICgnIy4wZycsICcxJywgJzEuJyksCisgICAgICAgICAgICAoJy4wJScsICcxLjAnLCAnMTAwJScpLAorICAgICAgICAgICAgKCcjLjAlJywgJzEuMCcsICcxMDAuJScpLAorICAgICAgICAgICAgXQorICAgICAgICBmb3IgZm10LCBkLCByZXN1bHQgaW4gdGVzdF92YWx1ZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdChEZWNpbWFsKGQpLCBmbXQpLCByZXN1bHQpCisKK2NsYXNzIFB5V2hpdGVib3godW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIldoaXRlIGJveCB0ZXN0aW5nIGZvciBkZWNpbWFsLnB5IiIiCisKKyAgICBkZWYgdGVzdF9weV9leGFjdF9wb3dlcihzZWxmKToKKyAgICAgICAgIyBSYXJlbHkgZXhlcmNpc2VkIGxpbmVzIGluIF9wb3dlcl9leGFjdC4KKyAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBQLmxvY2FsY29udGV4dAorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMucHJlYyA9IDgKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKDIqKjE2KSAqKiBEZWNpbWFsKCItMC41IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgRGVjaW1hbCgnMC4wMDM5MDYyNScpKQorCisgICAgICAgICAgICB4ID0gRGVjaW1hbCgyKioxNikgKiogRGVjaW1hbCgiLTAuNiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoJzAuMDAxMjg4NTgxOScpKQorCisgICAgICAgICAgICB4ID0gRGVjaW1hbCgiMjU2ZTciKSAqKiBEZWNpbWFsKCItMC41IikKKworICAgICAgICAgICAgeCA9IERlY2ltYWwoMTUyNTg3ODkwNjI1KSAqKiBEZWNpbWFsKCctMC4wNjI1JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgRGVjaW1hbCgiMC4yIikpCisKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKCIxNTI1ODc4OTA2MjVlNyIpICoqIERlY2ltYWwoJy0wLjA2MjUnKQorCisgICAgICAgICAgICB4ID0gRGVjaW1hbCg1KioyNjU5KSAqKiBEZWNpbWFsKCctMC4wNjI1JykKKworICAgICAgICAgICAgYy5wcmVjID0gMQorICAgICAgICAgICAgeCA9IERlY2ltYWwoIjE1MjU4Nzg5MDYyNSIpICoqIERlY2ltYWwoJy0wLjUnKQorICAgICAgICAgICAgYy5wcmVjID0gMjAxCisgICAgICAgICAgICB4ID0gRGVjaW1hbCgyKio1NzgpICoqIERlY2ltYWwoIi0wLjUiKQorCisgICAgZGVmIHRlc3RfcHlfaW1tdXRhYmlsaXR5X29wZXJhdGlvbnMoc2VsZik6CisgICAgICAgICMgRG8gb3BlcmF0aW9ucyBhbmQgY2hlY2sgdGhhdCBpdCBkaWRuJ3QgY2hhbmdlIGludGVybmFsIG9iamVjdHMuCisgICAgICAgIERlY2ltYWwgPSBQLkRlY2ltYWwKKyAgICAgICAgRGVmYXVsdENvbnRleHQgPSBQLkRlZmF1bHRDb250ZXh0CisgICAgICAgIHNldGNvbnRleHQgPSBQLnNldGNvbnRleHQKKworICAgICAgICBjID0gRGVmYXVsdENvbnRleHQuY29weSgpCisgICAgICAgIGMudHJhcHMgPSBkaWN0KChzLCAwKSBmb3IgcyBpbiBPcmRlcmVkU2lnbmFsc1tQXSkKKyAgICAgICAgc2V0Y29udGV4dChjKQogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnLTI1ZTU1JykKICAgICAgICAgYjEgPSBEZWNpbWFsKCctMjVlNTUnKQpAQCAtMTY1OSw3MTMgKzQ1NzEsODMxIEBACiAgICAgICAgIGNoZWNrU2FtZURlYygidG9fZW5nX3N0cmluZyIpCiAgICAgICAgIGNoZWNrU2FtZURlYygidG9faW50ZWdyYWwiKQogCi0gICAgZGVmIHRlc3Rfc3ViY2xhc3Npbmcoc2VsZik6Ci0gICAgICAgICMgRGlmZmVyZW50IGJlaGF2aW91cnMgd2hlbiBzdWJjbGFzc2luZyBEZWNpbWFsCisgICAgZGVmIHRlc3RfcHlfZGVjaW1hbF9pZChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbAogCi0gICAgICAgIGNsYXNzIE15RGVjaW1hbChEZWNpbWFsKToKLSAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZCA9IERlY2ltYWwoNDUpCisgICAgICAgIGUgPSBEZWNpbWFsKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnNDUnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKIAotICAgICAgICBkMSA9IE15RGVjaW1hbCgxKQotICAgICAgICBkMiA9IE15RGVjaW1hbCgyKQotICAgICAgICBkID0gZDEgKyBkMgotICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZCksIERlY2ltYWwpCisgICAgZGVmIHRlc3RfcHlfcmVzY2FsZShzZWxmKToKKyAgICAgICAgIyBDb3ZlcmFnZQorICAgICAgICBEZWNpbWFsID0gUC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IFAubG9jYWxjb250ZXh0CiAKLSAgICAgICAgZCA9IGQxLm1heChkMikKLSAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGQpLCBEZWNpbWFsKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICB4ID0gRGVjaW1hbCgiTmFOIikuX3Jlc2NhbGUoMywgUk9VTkRfVVApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeC5pc19uYW4oKSkKIAotICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2NvbnRleHQoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgcmVzdWx0cyB3aGVuIGNvbnRleHQgZ2l2ZW4gaW1wbGljaXRseS4gIChJc3N1ZSAyNDc4KQotICAgICAgICBjID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoMCkuc3FydCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoYy5zcXJ0KERlY2ltYWwoMCkpKSkKKyAgICBkZWYgdGVzdF9weV9fcm91bmQoc2VsZik6CisgICAgICAgICMgQ292ZXJhZ2UKKyAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbAogCi0gICAgZGVmIHRlc3RfY29udmVyc2lvbnNfZnJvbV9pbnQoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgdGhhdCBtZXRob2RzIHRha2luZyBhIHNlY29uZCBEZWNpbWFsIGFyZ3VtZW50IHdpbGwKLSAgICAgICAgIyBhbHdheXMgYWNjZXB0IGFuIGludGVnZXIgaW4gcGxhY2Ugb2YgYSBEZWNpbWFsLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNCkuY29tcGFyZSgzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDQpLmNvbXBhcmUoRGVjaW1hbCgzKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg0KS5jb21wYXJlX3NpZ25hbCgzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDQpLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoMykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNCkuY29tcGFyZV90b3RhbCgzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDQpLmNvbXBhcmVfdG90YWwoRGVjaW1hbCgzKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg0KS5jb21wYXJlX3RvdGFsX21hZygzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDQpLmNvbXBhcmVfdG90YWxfbWFnKERlY2ltYWwoMykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfYW5kKDEwMDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfYW5kKERlY2ltYWwoMTAwMSkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfb3IoMTAwMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMDEwMSkubG9naWNhbF9vcihEZWNpbWFsKDEwMDEpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX3hvcigxMDAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX3hvcihEZWNpbWFsKDEwMDEpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubWF4KDEyMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg1NjcpLm1heChEZWNpbWFsKDEyMykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNTY3KS5tYXhfbWFnKDEyMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg1NjcpLm1heF9tYWcoRGVjaW1hbCgxMjMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubWluKDEyMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg1NjcpLm1pbihEZWNpbWFsKDEyMykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNTY3KS5taW5fbWFnKDEyMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg1NjcpLm1pbl9tYWcoRGVjaW1hbCgxMjMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubmV4dF90b3dhcmQoMTIzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDU2NykubmV4dF90b3dhcmQoRGVjaW1hbCgxMjMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEyMzQpLnF1YW50aXplKDEwMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMjM0KS5xdWFudGl6ZShEZWNpbWFsKDEwMCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNzY4KS5yZW1haW5kZXJfbmVhcigxMjM0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDc2OCkucmVtYWluZGVyX25lYXIoRGVjaW1hbCgxMjM0KSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMjMpLnJvdGF0ZSgxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEyMykucm90YXRlKERlY2ltYWwoMSkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTIzNCkuc2FtZV9xdWFudHVtKDEwMDApLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTIzNCkuc2FtZV9xdWFudHVtKERlY2ltYWwoMTAwMCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoJzkuMTIzJykuc2NhbGViKC0xMDApLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoJzkuMTIzJykuc2NhbGViKERlY2ltYWwoLTEwMCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNDU2KS5zaGlmdCgtMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0NTYpLnNoaWZ0KERlY2ltYWwoLTEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRGVjaW1hbCgiMy4xMjM0IikuX3JvdW5kLCAwLCBST1VORF9VUCkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoLTEyKS5mbWEoRGVjaW1hbCg0NSksIDY3KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKC0xMikuZm1hKERlY2ltYWwoNDUpLCBEZWNpbWFsKDY3KSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgtMTIpLmZtYSg0NSwgNjcpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoLTEyKS5mbWEoRGVjaW1hbCg0NSksIERlY2ltYWwoNjcpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKC0xMikuZm1hKDQ1LCBEZWNpbWFsKDY3KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgtMTIpLmZtYShEZWNpbWFsKDQ1KSwgRGVjaW1hbCg2NykpKQorY2xhc3MgQ0Z1bmN0aW9uYWxpdHkodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkV4dHJhIGZ1bmN0aW9uYWxpdHkgaW4gX2RlY2ltYWwiIiIKIAorICAgIEByZXF1aXJlc19leHRyYV9mdW5jdGlvbmFsaXR5CisgICAgZGVmIHRlc3RfY19pZWVlX2NvbnRleHQoc2VsZik6CisgICAgICAgICMgaXNzdWUgODc4NjogQWRkIHN1cHBvcnQgZm9yIElFRUUgNzU0IGNvbnRleHRzIHRvIGRlY2ltYWwgbW9kdWxlLgorICAgICAgICBJRUVFQ29udGV4dCA9IEMuSUVFRUNvbnRleHQKKyAgICAgICAgREVDSU1BTDMyID0gQy5ERUNJTUFMMzIKKyAgICAgICAgREVDSU1BTDY0ID0gQy5ERUNJTUFMNjQKKyAgICAgICAgREVDSU1BTDEyOCA9IEMuREVDSU1BTDEyOAogCi1jbGFzcyBEZWNpbWFsUHl0aG9uQVBJdGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICBkZWYgYXNzZXJ0X3Jlc3Qoc2VsZiwgY29udGV4dCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRleHQuY2xhbXAsIDEpCisgICAgICAgICAgICBhc3NlcnRfc2lnbmFscyhzZWxmLCBjb250ZXh0LCAndHJhcHMnLCBbXSkKKyAgICAgICAgICAgIGFzc2VydF9zaWduYWxzKHNlbGYsIGNvbnRleHQsICdmbGFncycsIFtdKQogCi0gICAgZGVmIHRlc3RfYWJjKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhEZWNpbWFsLCBudW1iZXJzLk51bWJlcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhEZWNpbWFsLCBudW1iZXJzLlJlYWwpKQotICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRGVjaW1hbCgwKSwgbnVtYmVycy5OdW1iZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShEZWNpbWFsKDApLCBudW1iZXJzLlJlYWwpCisgICAgICAgIGMgPSBJRUVFQ29udGV4dChERUNJTUFMMzIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1heCwgOTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWluLCAtOTUpCisgICAgICAgIGFzc2VydF9yZXN0KHNlbGYsIGMpCiAKLSAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6Ci0gICAgICAgIGQgPSBEZWNpbWFsKCctMy4xNDE1OTAwMDAnKQotICAgICAgICBwID0gcGlja2xlLmR1bXBzKGQpCi0gICAgICAgIGUgPSBwaWNrbGUubG9hZHMocCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBlKQorICAgICAgICBjID0gSUVFRUNvbnRleHQoREVDSU1BTDY0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWF4LCAzODQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWluLCAtMzgzKQorICAgICAgICBhc3NlcnRfcmVzdChzZWxmLCBjKQogCi0gICAgZGVmIHRlc3RfaW50KHNlbGYpOgotICAgICAgICBmb3IgeCBpbiByYW5nZSgtMjUwLCAyNTApOgotICAgICAgICAgICAgcyA9ICclMC4yZicgJSAoeCAvIDEwMC4wKQotICAgICAgICAgICAgIyBzaG91bGQgd29yayB0aGUgc2FtZSBhcyBmb3IgZmxvYXRzCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChEZWNpbWFsKHMpKSwgaW50KGZsb2F0KHMpKSkKLSAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgdG9faW50ZWdyYWwgaW4gdGhlIFJPVU5EX0RPV04gbW9kZQotICAgICAgICAgICAgZCA9IERlY2ltYWwocykKLSAgICAgICAgICAgIHIgPSBkLnRvX2ludGVncmFsKFJPVU5EX0RPV04pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoaW50KGQpKSwgcikKKyAgICAgICAgYyA9IElFRUVDb250ZXh0KERFQ0lNQUwxMjgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCAzNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtYXgsIDYxNDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWluLCAtNjE0MykKKyAgICAgICAgYXNzZXJ0X3Jlc3Qoc2VsZiwgYykKIAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsIERlY2ltYWwoJy1uYW4nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCBEZWNpbWFsKCdzbmFuJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGludCwgRGVjaW1hbCgnaW5mJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGludCwgRGVjaW1hbCgnLWluZicpKQorICAgICAgICAjIEludmFsaWQgdmFsdWVzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIElFRUVDb250ZXh0LCAyKio2MykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgSUVFRUNvbnRleHQsIC0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBJRUVFQ29udGV4dCwgMTAyNCkKIAotICAgIGRlZiB0ZXN0X3RydW5jKHNlbGYpOgotICAgICAgICBmb3IgeCBpbiByYW5nZSgtMjUwLCAyNTApOgotICAgICAgICAgICAgcyA9ICclMC4yZicgJSAoeCAvIDEwMC4wKQotICAgICAgICAgICAgIyBzaG91bGQgd29yayB0aGUgc2FtZSBhcyBmb3IgZmxvYXRzCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChEZWNpbWFsKHMpKSwgaW50KGZsb2F0KHMpKSkKLSAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgdG9faW50ZWdyYWwgaW4gdGhlIFJPVU5EX0RPV04gbW9kZQotICAgICAgICAgICAgZCA9IERlY2ltYWwocykKLSAgICAgICAgICAgIHIgPSBkLnRvX2ludGVncmFsKFJPVU5EX0RPV04pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwobWF0aC50cnVuYyhkKSksIHIpCisgICAgQHJlcXVpcmVzX2V4dHJhX2Z1bmN0aW9uYWxpdHkKKyAgICBkZWYgdGVzdF9jX2NvbnRleHQoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBDLkNvbnRleHQKIAotICAgIGRlZiB0ZXN0X2Zyb21fZmxvYXQoc2VsZik6CisgICAgICAgIGMgPSBDb250ZXh0KGZsYWdzPUMuRGVjQ2xhbXBlZCwgdHJhcHM9Qy5EZWNSb3VuZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX2ZsYWdzLCBDLkRlY0NsYW1wZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5fdHJhcHMsIEMuRGVjUm91bmRlZCkKIAotICAgICAgICBjbGFzcyAgTXlEZWNpbWFsKERlY2ltYWwpOgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIHIgPSBNeURlY2ltYWwuZnJvbV9mbG9hdCgwLjEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShyKSwgTXlEZWNpbWFsKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihyKSwKLSAgICAgICAgICAgICAgICAnMC4xMDAwMDAwMDAwMDAwMDAwMDU1NTExMTUxMjMxMjU3ODI3MDIxMTgxNTgzNDA0NTQxMDE1NjI1JykKLSAgICAgICAgYmlnaW50ID0gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNeURlY2ltYWwuZnJvbV9mbG9hdChiaWdpbnQpLCBNeURlY2ltYWwoYmlnaW50KSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCduYW4nKSkuaXNfcW5hbigpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ2luZicpKS5pc19pbmZpbml0ZSgpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJy1pbmYnKSkuaXNfaW5maW5pdGUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ25hbicpKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3RyKERlY2ltYWwoJ05hTicpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ2luZicpKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3RyKERlY2ltYWwoJ0luZmluaXR5JykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihNeURlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnLWluZicpKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3RyKERlY2ltYWwoJy1JbmZpbml0eScpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBNeURlY2ltYWwuZnJvbV9mbG9hdCwgJ2FiYycpCi0gICAgICAgIGZvciBpIGluIHJhbmdlKDIwMCk6Ci0gICAgICAgICAgICB4ID0gcmFuZG9tLmV4cG92YXJpYXRlKDAuMDEpICogKHJhbmRvbS5yYW5kb20oKSAqIDIuMCAtIDEuMCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgZmxvYXQoTXlEZWNpbWFsLmZyb21fZmxvYXQoeCkpKSAjIHJvdW5kdHJpcAotCi0gICAgZGVmIHRlc3RfY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChzZWxmKToKLSAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz01LCByb3VuZGluZz1ST1VORF9ET1dOKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KG1hdGgucGkpLAotICAgICAgICAgICAgRGVjaW1hbCgnMy4xNDE1JykKKyAgICBAcmVxdWlyZXNfZXh0cmFfZnVuY3Rpb25hbGl0eQorICAgIGRlZiB0ZXN0X2NvbnN0YW50cyhzZWxmKToKKyAgICAgICAgIyBDb25kaXRpb24gZmxhZ3MKKyAgICAgICAgY29uZCA9ICgKKyAgICAgICAgICAgIEMuRGVjQ2xhbXBlZCwgQy5EZWNDb252ZXJzaW9uU3ludGF4LCBDLkRlY0RpdmlzaW9uQnlaZXJvLAorICAgICAgICAgICAgQy5EZWNEaXZpc2lvbkltcG9zc2libGUsIEMuRGVjRGl2aXNpb25VbmRlZmluZWQsCisgICAgICAgICAgICBDLkRlY0ZwdUVycm9yLCBDLkRlY0luZXhhY3QsIEMuRGVjSW52YWxpZENvbnRleHQsCisgICAgICAgICAgICBDLkRlY0ludmFsaWRPcGVyYXRpb24sIEMuRGVjTWFsbG9jRXJyb3IsCisgICAgICAgICAgICBDLkRlY0Zsb2F0T3BlcmF0aW9uLCBDLkRlY092ZXJmbG93LCBDLkRlY1JvdW5kZWQsCisgICAgICAgICAgICBDLkRlY1N1Ym5vcm1hbCwgQy5EZWNVbmRlcmZsb3cKICAgICAgICAgKQotICAgICAgICBjb250ZXh0ID0gQ29udGV4dChwcmVjPTUsIHJvdW5kaW5nPVJPVU5EX1VQKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KG1hdGgucGkpLAotICAgICAgICAgICAgRGVjaW1hbCgnMy4xNDE2JykKLSAgICAgICAgKQotICAgICAgICBjb250ZXh0ID0gQ29udGV4dChwcmVjPTUsIHRyYXBzPVtJbmV4YWN0XSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICBJbmV4YWN0LAotICAgICAgICAgICAgY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0LAotICAgICAgICAgICAgbWF0aC5waQotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoLTAuMCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJEZWNpbWFsKCctMCcpIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgxLjApKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRGVjaW1hbCgnMScpIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgxMCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJEZWNpbWFsKCcxMCcpIikKIAotY2xhc3MgQ29udGV4dEFQSXRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIyBJRUVFQ29udGV4dAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuREVDSU1BTDMyLCAzMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLkRFQ0lNQUw2NCwgNjQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5ERUNJTUFMMTI4LCAxMjgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5JRUVFX0NPTlRFWFRfTUFYX0JJVFMsIDUxMikKIAotICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgIyBDb25kaXRpb25zCisgICAgICAgIGZvciBpLCB2IGluIGVudW1lcmF0ZShjb25kKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMTw8aSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuRGVjSUVFRUludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgQy5EZWNDb252ZXJzaW9uU3ludGF4fAorICAgICAgICAgICAgICAgICAgICAgICAgIEMuRGVjRGl2aXNpb25JbXBvc3NpYmxlfAorICAgICAgICAgICAgICAgICAgICAgICAgIEMuRGVjRGl2aXNpb25VbmRlZmluZWR8CisgICAgICAgICAgICAgICAgICAgICAgICAgQy5EZWNGcHVFcnJvcnwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY0ludmFsaWRDb250ZXh0fAorICAgICAgICAgICAgICAgICAgICAgICAgIEMuRGVjSW52YWxpZE9wZXJhdGlvbnwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY01hbGxvY0Vycm9yKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5EZWNFcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgQy5EZWNJRUVFSW52YWxpZE9wZXJhdGlvbnwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY0RpdmlzaW9uQnlaZXJvKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5EZWNUcmFwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY0Vycm9yc3xDLkRlY092ZXJmbG93fEMuRGVjVW5kZXJmbG93KQorCitjbGFzcyBDV2hpdGVib3godW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIldoaXRlYm94IHRlc3RpbmcgZm9yIF9kZWNpbWFsIiIiCisKKyAgICBkZWYgdGVzdF9iaWdudW0oc2VsZik6CisgICAgICAgICMgTm90IGV4YWN0bHkgd2hpdGVib3gsIGJ1dCB0b28gc2xvdyB3aXRoIHB5ZGVjaW1hbC4KKworICAgICAgICBEZWNpbWFsID0gQy5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisKKyAgICAgICAgYjEgPSAxMCoqMzUKKyAgICAgICAgYjIgPSAxMCoqMzYKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy5wcmVjID0gMTAwMDAwMAorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICAgICAgYSA9IHJhbmRvbS5yYW5kcmFuZ2UoYjEsIGIyKQorICAgICAgICAgICAgICAgIGIgPSByYW5kb20ucmFuZHJhbmdlKDEwMDAsIDEyMDApCisgICAgICAgICAgICAgICAgeCA9IGEgKiogYgorICAgICAgICAgICAgICAgIHkgPSBEZWNpbWFsKGEpICoqIERlY2ltYWwoYikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NvbnN0cnVjdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDLkRlY2ltYWwsIDksICJ4eXoiKQorCisgICAgZGVmIHRlc3RfY19pbnB1dF9yZXN0cmljdGlvbihzZWxmKToKKyAgICAgICAgIyBUb28gbGFyZ2UgZm9yIF9kZWNpbWFsIHRvIGJlIGNvbnZlcnRlZCBleGFjdGx5CisgICAgICAgIERlY2ltYWwgPSBDLkRlY2ltYWwKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBDb250ZXh0ID0gQy5Db250ZXh0CisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoQ29udGV4dCgpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMWU5OTk5OTk5OTk5OTk5OTk5OTk5IikKKworICAgIGRlZiB0ZXN0X2NfY29udGV4dF9yZXByKHNlbGYpOgorICAgICAgICAjIFRoaXMgdGVzdCBpcyBfZGVjaW1hbC1vbmx5IGJlY2F1c2UgZmxhZ3MgYXJlIG5vdCBwcmludGVkCisgICAgICAgICMgaW4gdGhlIHNhbWUgb3JkZXIuCisgICAgICAgIERlZmF1bHRDb250ZXh0ID0gQy5EZWZhdWx0Q29udGV4dAorICAgICAgICBGbG9hdE9wZXJhdGlvbiA9IEMuRmxvYXRPcGVyYXRpb24KKworICAgICAgICBjID0gRGVmYXVsdENvbnRleHQuY29weSgpCisKKyAgICAgICAgYy5wcmVjID0gNDI1MDAwMDAwCisgICAgICAgIGMuRW1heCA9IDQyNTAwMDAwMAorICAgICAgICBjLkVtaW4gPSAtNDI1MDAwMDAwCisgICAgICAgIGMucm91bmRpbmcgPSBST1VORF9IQUxGX0RPV04KKyAgICAgICAgYy5jYXBpdGFscyA9IDAKKyAgICAgICAgYy5jbGFtcCA9IDEKKyAgICAgICAgZm9yIHNpZyBpbiBPcmRlcmVkU2lnbmFsc1tDXToKKyAgICAgICAgICAgIGMuZmxhZ3Nbc2lnXSA9IFRydWUKKyAgICAgICAgICAgIGMudHJhcHNbc2lnXSA9IFRydWUKKyAgICAgICAgYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0gPSBUcnVlCisgICAgICAgIGMudHJhcHNbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorCisgICAgICAgIHMgPSBjLl9fcmVwcl9fKCkKKyAgICAgICAgdCA9ICJDb250ZXh0KHByZWM9NDI1MDAwMDAwLCByb3VuZGluZz1ST1VORF9IQUxGX0RPV04sICIgXAorICAgICAgICAgICAgIkVtaW49LTQyNTAwMDAwMCwgRW1heD00MjUwMDAwMDAsIGNhcGl0YWxzPTAsIGNsYW1wPTEsICIgXAorICAgICAgICAgICAgImZsYWdzPVtDbGFtcGVkLCBJbnZhbGlkT3BlcmF0aW9uLCBEaXZpc2lvbkJ5WmVybywgSW5leGFjdCwgIiBcCisgICAgICAgICAgICAgICAgICAgIkZsb2F0T3BlcmF0aW9uLCBPdmVyZmxvdywgUm91bmRlZCwgU3Vibm9ybWFsLCBVbmRlcmZsb3ddLCAiIFwKKyAgICAgICAgICAgICJ0cmFwcz1bQ2xhbXBlZCwgSW52YWxpZE9wZXJhdGlvbiwgRGl2aXNpb25CeVplcm8sIEluZXhhY3QsICIgXAorICAgICAgICAgICAgICAgICAgICJGbG9hdE9wZXJhdGlvbiwgT3ZlcmZsb3csIFJvdW5kZWQsIFN1Ym5vcm1hbCwgVW5kZXJmbG93XSkiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgdCkKKworICAgIGRlZiB0ZXN0X2NfY29udGV4dF9lcnJvcnMoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBDLkNvbnRleHQKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBPdmVyZmxvdyA9IEMuT3ZlcmZsb3cKKyAgICAgICAgRmxvYXRPcGVyYXRpb24gPSBDLkZsb2F0T3BlcmF0aW9uCisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisgICAgICAgIGdldGNvbnRleHQgPSBDLmdldGNvbnRleHQKKyAgICAgICAgc2V0Y29udGV4dCA9IEMuc2V0Y29udGV4dAorICAgICAgICBIQVZFX0NPTkZJR182NCA9IChDLk1BWF9QUkVDID4gNDI1MDAwMDAwKQorCiAgICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYykpCi0gICAgICAgIGZvciBrIGluIHZhcnMoYyk6Ci0gICAgICAgICAgICB2MSA9IHZhcnMoYylba10KLSAgICAgICAgICAgIHYyID0gdmFycyhlKVtrXQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2MSwgdjIpCiAKLSAgICBkZWYgdGVzdF9lcXVhbGl0eV93aXRoX290aGVyX3R5cGVzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEluKERlY2ltYWwoMTApLCBbJ2EnLCAxLjAsIERlY2ltYWwoMTApLCAoMSwyKSwge31dKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKERlY2ltYWwoMTApLCBbJ2EnLCAxLjAsICgxLDIpLCB7fV0pCisgICAgICAgICMgU2lnbmFsRGljdDogaW5wdXQgdmFsaWRhdGlvbgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgYy5mbGFncy5fX3NldGl0ZW1fXywgODAxLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgYy50cmFwcy5fX3NldGl0ZW1fXywgODAxLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLmZsYWdzLl9fZGVsaXRlbV9fLCBPdmVyZmxvdykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYy50cmFwcy5fX2RlbGl0ZW1fXywgSW52YWxpZE9wZXJhdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCAnZmxhZ3MnLCBbJ3gnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCd0cmFwcycsIFsneSddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgc2V0YXR0ciwgYywgJ2ZsYWdzJywgezA6MX0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzZXRhdHRyLCBjLCAndHJhcHMnLCB7MDoxfSkKIAotICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6Ci0gICAgICAgICMgQWxsIGNvcGllcyBzaG91bGQgYmUgZGVlcAorICAgICAgICAjIFRlc3QgYXNzaWdubWVudCBmcm9tIGEgc2lnbmFsIGRpY3Qgd2l0aCB0aGUgY29ycmVjdCBsZW5ndGggYnV0CisgICAgICAgICMgb25lIGludmFsaWQga2V5LgorICAgICAgICBkID0gYy5mbGFncy5jb3B5KCkKKyAgICAgICAgZGVsIGRbRmxvYXRPcGVyYXRpb25dCisgICAgICAgIGRbIlhZWiJdID0gOTEyODM3MTkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHNldGF0dHIsIGMsICdmbGFncycsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzZXRhdHRyLCBjLCAndHJhcHMnLCBkKQorCisgICAgICAgICMgSW5wdXQgY29ybmVyIGNhc2VzCisgICAgICAgIGludF9tYXggPSAyKio2My0xIGlmIEhBVkVfQ09ORklHXzY0IGVsc2UgMioqMzEtMQorICAgICAgICBndF9tYXhfZW1heCA9IDEwKioxOCBpZiBIQVZFX0NPTkZJR182NCBlbHNlIDEwKio5CisKKyAgICAgICAgIyBwcmVjLCBFbWF4LCBFbWluCisgICAgICAgIGZvciBhdHRyIGluIFsncHJlYycsICdFbWF4J106CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBndF9tYXhfZW1heCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgJ0VtaW4nLCAtZ3RfbWF4X2VtYXgpCisKKyAgICAgICAgIyBwcmVjLCBFbWF4LCBFbWluIGluIGNvbnRleHQgY29uc3RydWN0b3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQ29udGV4dCwgcHJlYz1ndF9tYXhfZW1heCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQ29udGV4dCwgRW1heD1ndF9tYXhfZW1heCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQ29udGV4dCwgRW1pbj0tZ3RfbWF4X2VtYXgpCisKKyAgICAgICAgIyBPdmVyZmxvdyBpbiBjb252ZXJzaW9uCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIENvbnRleHQsIHByZWM9aW50X21heCsxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBDb250ZXh0LCBFbWF4PWludF9tYXgrMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgQ29udGV4dCwgRW1pbj0taW50X21heC0yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBDb250ZXh0LCBjbGFtcD1pbnRfbWF4KzEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIENvbnRleHQsIGNhcGl0YWxzPWludF9tYXgrMSkKKworICAgICAgICAjIE92ZXJmbG93RXJyb3IsIGdlbmVyYWwgVmFsdWVFcnJvcgorICAgICAgICBmb3IgYXR0ciBpbiAoJ3ByZWMnLCAnRW1pbicsICdFbWF4JywgJ2NhcGl0YWxzJywgJ2NsYW1wJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBpbnRfbWF4KzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtaW50X21heC0yKQorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgaW50X21heCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtaW50X21heC0xKQorCisgICAgICAgICMgT3ZlcmZsb3dFcnJvcjogX3Vuc2FmZV9zZXRwcmVjLCBfdW5zYWZlX3NldGVtaW4sIF91bnNhZmVfc2V0ZW1heAorICAgICAgICBpZiBDLk1BWF9QUkVDID09IDQyNTAwMDAwMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGdldGF0dHIoYywgJ191bnNhZmVfc2V0cHJlYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X21heCsxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgZ2V0YXR0cihjLCAnX3Vuc2FmZV9zZXRlbWF4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfbWF4KzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldGVtaW4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1pbnRfbWF4LTIpCisKKyAgICAgICAgIyBWYWx1ZUVycm9yOiBfdW5zYWZlX3NldHByZWMsIF91bnNhZmVfc2V0ZW1pbiwgX3Vuc2FmZV9zZXRlbWF4CisgICAgICAgIGlmIEMuTUFYX1BSRUMgPT0gNDI1MDAwMDAwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0YXR0cihjLCAnX3Vuc2FmZV9zZXRwcmVjJyksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldHByZWMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNzAwMDAwMDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldGVtYXgnKSwgLTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldGVtYXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNzAwMDAwMDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldGVtaW4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xMDcwMDAwMDAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0YXR0cihjLCAnX3Vuc2FmZV9zZXRlbWluJyksIDEpCisKKyAgICAgICAgIyBjYXBpdGFscywgY2xhbXAKKyAgICAgICAgZm9yIGF0dHIgaW4gWydjYXBpdGFscycsICdjbGFtcCddOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgLTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBbMSwyLDNdKQorICAgICAgICAgICAgaWYgSEFWRV9DT05GSUdfNjQ6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgMioqMzIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgMioqMzIrMSkKKworICAgICAgICAjIEludmFsaWQgbG9jYWwgY29udGV4dAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV4ZWMsICd3aXRoIGxvY2FsY29udGV4dCgieHl6Iik6IHBhc3MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBleGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnd2l0aCBsb2NhbGNvbnRleHQoY29udGV4dD1nZXRjb250ZXh0KCkpOiBwYXNzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxzKCkpCisKKyAgICAgICAgIyBzZXRjb250ZXh0CisgICAgICAgIHNhdmVkX2NvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRjb250ZXh0LCAieHl6IikKKyAgICAgICAgc2V0Y29udGV4dChzYXZlZF9jb250ZXh0KQorCisgICAgZGVmIHRlc3Rfcm91bmRpbmdfc3RyaW5nc19pbnRlcm5lZChzZWxmKToKKworICAgICAgICBzZWxmLmFzc2VydElzKEMuUk9VTkRfVVAsIFAuUk9VTkRfVVApCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQy5ST1VORF9ET1dOLCBQLlJPVU5EX0RPV04pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQy5ST1VORF9DRUlMSU5HLCBQLlJPVU5EX0NFSUxJTkcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQy5ST1VORF9GTE9PUiwgUC5ST1VORF9GTE9PUikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhDLlJPVU5EX0hBTEZfVVAsIFAuUk9VTkRfSEFMRl9VUCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhDLlJPVU5EX0hBTEZfRE9XTiwgUC5ST1VORF9IQUxGX0RPV04pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQy5ST1VORF9IQUxGX0VWRU4sIFAuUk9VTkRfSEFMRl9FVkVOKQorICAgICAgICBzZWxmLmFzc2VydElzKEMuUk9VTkRfMDVVUCwgUC5ST1VORF8wNVVQKQorCisgICAgQHJlcXVpcmVzX2V4dHJhX2Z1bmN0aW9uYWxpdHkKKyAgICBkZWYgdGVzdF9jX2NvbnRleHRfZXJyb3JzX2V4dHJhKHNlbGYpOgorICAgICAgICBDb250ZXh0ID0gQy5Db250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBDLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgT3ZlcmZsb3cgPSBDLk92ZXJmbG93CisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisgICAgICAgIGdldGNvbnRleHQgPSBDLmdldGNvbnRleHQKKyAgICAgICAgc2V0Y29udGV4dCA9IEMuc2V0Y29udGV4dAorICAgICAgICBIQVZFX0NPTkZJR182NCA9IChDLk1BWF9QUkVDID4gNDI1MDAwMDAwKQorCiAgICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuY29weSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoYyksIGlkKGQpKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGMuZmxhZ3MpLCBpZChkLmZsYWdzKSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChjLnRyYXBzKSwgaWQoZC50cmFwcykpCiAKLSAgICBkZWYgdGVzdF9fY2xhbXAoc2VsZik6Ci0gICAgICAgICMgSW4gUHl0aG9uIDMuMiwgdGhlIHByaXZhdGUgYXR0cmlidXRlIGBfY2xhbXBgIHdhcyBtYWRlCi0gICAgICAgICMgcHVibGljIChpc3N1ZSA4NTQwKSwgd2l0aCB0aGUgb2xkIGBfY2xhbXBgIGJlY29taW5nIGEKLSAgICAgICAgIyBwcm9wZXJ0eSB3cmFwcGluZyBgY2xhbXBgLiAgRm9yIHRoZSBkdXJhdGlvbiBvZiBQeXRob24gMy4yCi0gICAgICAgICMgb25seSwgdGhlIGF0dHJpYnV0ZSBzaG91bGQgYmUgZ2V0dGFibGUvc2V0dGFibGUgdmlhIGJvdGgKLSAgICAgICAgIyBgY2xhbXBgIGFuZCBgX2NsYW1wYDsgaW4gUHl0aG9uIDMuMywgYF9jbGFtcGAgc2hvdWxkIGJlCi0gICAgICAgICMgcmVtb3ZlZC4KLSAgICAgICAgYyA9IENvbnRleHQoY2xhbXAgPSAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2xhbXAsIDApCisgICAgICAgICMgSW5wdXQgY29ybmVyIGNhc2VzCisgICAgICAgIGludF9tYXggPSAyKio2My0xIGlmIEhBVkVfQ09ORklHXzY0IGVsc2UgMioqMzEtMQogCi0gICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKCIiLCBEZXByZWNhdGlvbldhcm5pbmcpKToKLSAgICAgICAgICAgIGMuX2NsYW1wID0gMQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2xhbXAsIDEpCi0gICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKCIiLCBEZXByZWNhdGlvbldhcm5pbmcpKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5fY2xhbXAsIDEpCisgICAgICAgICMgT3ZlcmZsb3dFcnJvciwgZ2VuZXJhbCBWYWx1ZUVycm9yCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCBpbnRfbWF4KzEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCAtaW50X21heC0yKQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCBpbnRfbWF4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgJ19hbGxjcicsIC1pbnRfbWF4LTEpCisKKyAgICAgICAgIyBPdmVyZmxvd0Vycm9yLCBnZW5lcmFsIFR5cGVFcnJvcgorICAgICAgICBmb3IgYXR0ciBpbiAoJ19mbGFncycsICdfdHJhcHMnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIGludF9tYXgrMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIC1pbnRfbWF4LTIpCisgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIGludF9tYXgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtaW50X21heC0xKQorCisgICAgICAgICMgX2FsbGNyCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgJ19hbGxjcicsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgJ19hbGxjcicsIFsxLDIsM10pCisgICAgICAgIGlmIEhBVkVfQ09ORklHXzY0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgJ19hbGxjcicsIDIqKjMyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgJ19hbGxjcicsIDIqKjMyKzEpCisKKyAgICAgICAgIyBfZmxhZ3MsIF90cmFwcworICAgICAgICBmb3IgYXR0ciBpbiBbJ19mbGFncycsICdfdHJhcHMnXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgOTk5OTk5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAneCcpCisKKyAgICBkZWYgdGVzdF9jX3ZhbGlkX2NvbnRleHQoc2VsZik6CisgICAgICAgICMgVGhlc2UgdGVzdHMgYXJlIGZvciBjb2RlIGNvdmVyYWdlIGluIF9kZWNpbWFsLgorICAgICAgICBEZWZhdWx0Q29udGV4dCA9IEMuRGVmYXVsdENvbnRleHQKKyAgICAgICAgQ2xhbXBlZCA9IEMuQ2xhbXBlZAorICAgICAgICBVbmRlcmZsb3cgPSBDLlVuZGVyZmxvdworICAgICAgICBJbmV4YWN0ID0gQy5JbmV4YWN0CisgICAgICAgIFJvdW5kZWQgPSBDLlJvdW5kZWQKKyAgICAgICAgU3Vibm9ybWFsID0gQy5TdWJub3JtYWwKKworICAgICAgICBjID0gRGVmYXVsdENvbnRleHQuY29weSgpCisKKyAgICAgICAgIyBFeGVyY2lzZSBhbGwgZ2V0dGVycyBhbmQgc2V0dGVycworICAgICAgICBjLnByZWMgPSAzNAorICAgICAgICBjLnJvdW5kaW5nID0gUk9VTkRfSEFMRl9VUAorICAgICAgICBjLkVtYXggPSAzMDAwCisgICAgICAgIGMuRW1pbiA9IC0zMDAwCisgICAgICAgIGMuY2FwaXRhbHMgPSAxCiAgICAgICAgIGMuY2xhbXAgPSAwCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIDM0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucm91bmRpbmcsIFJPVU5EX0hBTEZfVVApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWluLCAtMzAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtYXgsIDMwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jYXBpdGFscywgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNsYW1wLCAwKQotICAgICAgICB3aXRoIGNoZWNrX3dhcm5pbmdzKCgiIiwgRGVwcmVjYXRpb25XYXJuaW5nKSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX2NsYW1wLCAwKQogCi0gICAgZGVmIHRlc3RfYWJzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRXRpbnkoKSwgLTMwMzMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FdG9wKCksIDI5NjcpCisKKyAgICAgICAgIyBFeGVyY2lzZSBhbGwgdW5zYWZlIHNldHRlcnMKKyAgICAgICAgaWYgQy5NQVhfUFJFQyA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBjLl91bnNhZmVfc2V0cHJlYyg5OTk5OTk5OTkpCisgICAgICAgICAgICBjLl91bnNhZmVfc2V0ZW1heCg5OTk5OTk5OTkpCisgICAgICAgICAgICBjLl91bnNhZmVfc2V0ZW1pbigtOTk5OTk5OTk5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIDk5OTk5OTk5OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWF4LCA5OTk5OTk5OTkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1pbiwgLTk5OTk5OTk5OSkKKworICAgIEByZXF1aXJlc19leHRyYV9mdW5jdGlvbmFsaXR5CisgICAgZGVmIHRlc3RfY192YWxpZF9jb250ZXh0X2V4dHJhKHNlbGYpOgorICAgICAgICBEZWZhdWx0Q29udGV4dCA9IEMuRGVmYXVsdENvbnRleHQKKworICAgICAgICBjID0gRGVmYXVsdENvbnRleHQuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5fYWxsY3IsIDEpCisgICAgICAgIGMuX2FsbGNyID0gMAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX2FsbGNyLCAwKQorCisgICAgZGVmIHRlc3RfY19yb3VuZChzZWxmKToKKyAgICAgICAgIyBSZXN0cmljdGVkIGlucHV0LgorICAgICAgICBEZWNpbWFsID0gQy5EZWNpbWFsCisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBDLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgbG9jYWxjb250ZXh0ID0gQy5sb2NhbGNvbnRleHQKKyAgICAgICAgTUFYX0VNQVggPSBDLk1BWF9FTUFYCisgICAgICAgIE1JTl9FVElOWSA9IEMuTUlOX0VUSU5ZCisgICAgICAgIGludF9tYXggPSAyKio2My0xIGlmIEMuTUFYX1BSRUMgPiA0MjUwMDAwMDAgZWxzZSAyKiozMS0xCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwoIjEuMjMiKS5fX3JvdW5kX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtaW50X21heC0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCgiMS4yMyIpLl9fcm91bmRfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9tYXgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKCIxIikuX19yb3VuZF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KE1BWF9FTUFYKzEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQy5JbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKCIxIikuX19yb3VuZF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWludChNSU5fRVRJTlktMSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBEZWNpbWFsKCIxLjIzIikuX19yb3VuZF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWludF9tYXgtMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIERlY2ltYWwoIjEuMjMiKS5fX3JvdW5kX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfbWF4KzEpCisKKyAgICBkZWYgdGVzdF9jX2Zvcm1hdChzZWxmKToKKyAgICAgICAgIyBSZXN0cmljdGVkIGlucHV0CisgICAgICAgIERlY2ltYWwgPSBDLkRlY2ltYWwKKyAgICAgICAgSEFWRV9DT05GSUdfNjQgPSAoQy5NQVhfUFJFQyA+IDQyNTAwMDAwMCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoMSkuX19mb3JtYXRfXywgIj0xMC4xMCIsIFtdLCA5KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoMSkuX19mb3JtYXRfXywgIj0xMC4xMCIsIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCgxKS5fX2Zvcm1hdF9fLCBbXSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsKDEpLl9fZm9ybWF0X18sICI8Pj0xMC4xMCIpCisgICAgICAgIG1heHNpemUgPSAyKio2My0xIGlmIEhBVkVfQ09ORklHXzY0IGVsc2UgMioqMzEtMQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsKCIxLjIzNDU2Nzg5IikuX19mb3JtYXRfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIj0lZC4xIiAlIG1heHNpemUpCisKKyAgICBkZWYgdGVzdF9jX2ludGVncmFsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gQy5EZWNpbWFsCisgICAgICAgIEluZXhhY3QgPSBDLkluZXhhY3QKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gQy5sb2NhbGNvbnRleHQKKworICAgICAgICB4ID0gRGVjaW1hbCgxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnRvX2ludGVncmFsKCksIDEwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWwsICcxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbCwgMTAsICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsLCAxMCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudG9faW50ZWdyYWxfdmFsdWUoKSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbF92YWx1ZSwgJzEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsX3ZhbHVlLCAxMCwgJ3gnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWxfdmFsdWUsIDEwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC50b19pbnRlZ3JhbF9leGFjdCgpLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsX2V4YWN0LCAnMTAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWxfZXhhY3QsIDEwLCAneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbF9leGFjdCwgMTApCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgeCA9IERlY2ltYWwoIjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5LjkiKS50b19pbnRlZ3JhbF92YWx1ZShST1VORF9VUCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgRGVjaW1hbCgnMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJykpCisKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKCI5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OS45IikudG9faW50ZWdyYWxfZXhhY3QoUk9VTkRfVVApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoJzEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcpKQorCisgICAgICAgICAgICBjLnRyYXBzW0luZXhhY3RdID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5leGFjdCwgRGVjaW1hbCgiOTk5LjkiKS50b19pbnRlZ3JhbF9leGFjdCwgUk9VTkRfVVApCisKKyAgICBkZWYgdGVzdF9jX2Z1bmNzKHNlbGYpOgorICAgICAgICAjIEludmFsaWQgYXJndW1lbnRzCisgICAgICAgIERlY2ltYWwgPSBDLkRlY2ltYWwKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBEaXZpc2lvbkJ5WmVybyA9IEMuRGl2aXNpb25CeVplcm8KKyAgICAgICAgZ2V0Y29udGV4dCA9IEMuZ2V0Y29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgnOS45OWUxMCcpLnRvX2VuZ19zdHJpbmcoKSwgJzk5LjlFKzknKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG93LCBEZWNpbWFsKDEpLCAyLCAiMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCg5KS5udW1iZXJfY2xhc3MsICJ4IiwgInkiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoOSkuc2FtZV9xdWFudHVtLCAzLCAieCIsICJ5IikKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgIERlY2ltYWwoIjEuMjM0NTY3ODkiKS5xdWFudGl6ZSwgRGVjaW1hbCgnMWUtMTAwMDAwJyksIFtdCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgICBEZWNpbWFsKCIxLjIzNDU2Nzg5IikucXVhbnRpemUsIERlY2ltYWwoJzFlLTEwMDAwMCcpLCBnZXRjb250ZXh0KCkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgIERlY2ltYWwoIjEuMjM0NTY3ODkiKS5xdWFudGl6ZSwgRGVjaW1hbCgnMWUtMTAwMDAwJyksIDEwCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgICBEZWNpbWFsKCIxLjIzNDU2Nzg5IikucXVhbnRpemUsIERlY2ltYWwoJzFlLTEwMDAwMCcpLCBST1VORF9VUCwgMTAwMAorICAgICAgICApCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy5jbGVhcl90cmFwcygpCisKKyAgICAgICAgICAgICMgSW52YWxpZCBhcmd1bWVudHMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X3NpZ24sIERlY2ltYWwoMSksICJ4IiwgInkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNhbm9uaWNhbCwgMjAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX2Nhbm9uaWNhbCwgMjAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdm1vZCwgOSwgOCwgIngiLCAieSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2FtZV9xdWFudHVtLCA5LCAzLCAieCIsICJ5IikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYy5jYW5vbmljYWwoRGVjaW1hbCgyMDApKSksICcyMDAnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJhZGl4KCksIDEwKQorCisgICAgICAgICAgICBjLnRyYXBzW0RpdmlzaW9uQnlaZXJvXSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERpdmlzaW9uQnlaZXJvLCBEZWNpbWFsKDkpLl9fZGl2bW9kX18sIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhEaXZpc2lvbkJ5WmVybywgYy5kaXZtb2QsIDksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCg5KS5fX2Rpdm1vZF9fLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgYy5kaXZtb2QsIDksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tEaXZpc2lvbkJ5WmVyb10pCisKKyAgICAgICAgICAgIGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSBUcnVlCisgICAgICAgICAgICBjLnByZWMgPSAyCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBwb3csIERlY2ltYWwoMTAwMCksIDEsIDUwMSkKKworICAgIGRlZiB0ZXN0X3ZhX2FyZ3NfZXhjZXB0aW9ucyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IEMuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gQy5Db250ZXh0CisKKyAgICAgICAgeCA9IERlY2ltYWwoIjEwMDAxMTExMTExIikKKworICAgICAgICBmb3IgYXR0ciBpbiBbJ2V4cCcsICdpc19ub3JtYWwnLCAnaXNfc3Vibm9ybWFsJywgJ2xuJywgJ2xvZzEwJywKKyAgICAgICAgICAgICAgICAgICAgICdsb2diJywgJ2xvZ2ljYWxfaW52ZXJ0JywgJ25leHRfbWludXMnLCAnbmV4dF9wbHVzJywKKyAgICAgICAgICAgICAgICAgICAgICdub3JtYWxpemUnLCAnbnVtYmVyX2NsYXNzJywgJ3NxcnQnLCAndG9fZW5nX3N0cmluZyddOgorICAgICAgICAgICAgZnVuYyA9IGdldGF0dHIoeCwgYXR0cikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZnVuYywgY29udGV4dD0ieCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGZ1bmMsICJ4IiwgY29udGV4dD1Ob25lKQorCisgICAgICAgIGZvciBhdHRyIGluIFsnY29tcGFyZScsICdjb21wYXJlX3NpZ25hbCcsICdsb2dpY2FsX2FuZCcsCisgICAgICAgICAgICAgICAgICAgICAnbG9naWNhbF9vcicsICdtYXgnLCAnbWF4X21hZycsICdtaW4nLCAnbWluX21hZycsCisgICAgICAgICAgICAgICAgICAgICAncmVtYWluZGVyX25lYXInLCAncm90YXRlJywgJ3NjYWxlYicsICdzaGlmdCddOgorICAgICAgICAgICAgZnVuYyA9IGdldGF0dHIoeCwgYXR0cikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZnVuYywgY29udGV4dD0ieCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGZ1bmMsICJ4IiwgY29udGV4dD1Ob25lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbCwgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1bXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsLCByb3VuZGluZz17fSwgY29udGV4dD1bXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsLCBbXSwgW10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsX3ZhbHVlLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PVtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWxfdmFsdWUsIHJvdW5kaW5nPXt9LCBjb250ZXh0PVtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWxfdmFsdWUsIFtdLCBbXSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWxfZXhhY3QsIHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9W10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbF9leGFjdCwgcm91bmRpbmc9e30sIGNvbnRleHQ9W10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbF9leGFjdCwgW10sIFtdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC5mbWEsIDEsIDIsIGNvbnRleHQ9IngiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHguZm1hLCAxLCAyLCAieCIsIGNvbnRleHQ9Tm9uZSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgucXVhbnRpemUsIDEsIFtdLCBjb250ZXh0PU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC5xdWFudGl6ZSwgMSwgW10sIHJvdW5kaW5nPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC5xdWFudGl6ZSwgMSwgW10sIFtdKQorCiAgICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuYWJzKERlY2ltYWwoLTEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuYWJzKC0xKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmFicywgJy0xJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnBvd2VyLCAxLCAyLCBtb2Q9IngiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucG93ZXIsIDEsICJ4IiwgbW9kPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5wb3dlciwgIngiLCAyLCBtb2Q9Tm9uZSkKIAotICAgIGRlZiB0ZXN0X2FkZChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5hZGQoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFkZCgxLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFkZChEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFkZCgxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmFkZCwgJzEnLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuYWRkLCAxLCAnMScpCisgICAgQHJlcXVpcmVzX2V4dHJhX2Z1bmN0aW9uYWxpdHkKKyAgICBkZWYgdGVzdF9jX2NvbnRleHRfdGVtcGxhdGVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgQy5CYXNpY0NvbnRleHQuX3RyYXBzLAorICAgICAgICAgICAgQy5EZWNJRUVFSW52YWxpZE9wZXJhdGlvbnxDLkRlY0RpdmlzaW9uQnlaZXJvfEMuRGVjT3ZlcmZsb3d8CisgICAgICAgICAgICBDLkRlY1VuZGVyZmxvd3xDLkRlY0NsYW1wZWQKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgQy5EZWZhdWx0Q29udGV4dC5fdHJhcHMsCisgICAgICAgICAgICBDLkRlY0lFRUVJbnZhbGlkT3BlcmF0aW9ufEMuRGVjRGl2aXNpb25CeVplcm98Qy5EZWNPdmVyZmxvdworICAgICAgICApCiAKLSAgICBkZWYgdGVzdF9jb21wYXJlKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvbXBhcmUoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmUoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlKERlY2ltYWwoMSksIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZSgxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmUsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmUsIDEsICcxJykKKyAgICBAcmVxdWlyZXNfZXh0cmFfZnVuY3Rpb25hbGl0eQorICAgIGRlZiB0ZXN0X2Nfc2lnbmFsX2RpY3Qoc2VsZik6CiAKLSAgICBkZWYgdGVzdF9jb21wYXJlX3NpZ25hbChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV9zaWduYWwoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfc2lnbmFsKDEsIERlY2ltYWwoMSkpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZV9zaWduYWwsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfc2lnbmFsLCAxLCAnMScpCisgICAgICAgICMgU2lnbmFsRGljdCBjb3ZlcmFnZQorICAgICAgICBDb250ZXh0ID0gQy5Db250ZXh0CisgICAgICAgIERlZmF1bHRDb250ZXh0ID0gQy5EZWZhdWx0Q29udGV4dAogCi0gICAgZGVmIHRlc3RfY29tcGFyZV90b3RhbChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb21wYXJlX3RvdGFsKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsKDEsIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbChEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWwoMSwgRGVjaW1hbCgxKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3RvdGFsLCAnMScsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3RvdGFsLCAxLCAnMScpCisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBDLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgRGl2aXNpb25CeVplcm8gPSBDLkRpdmlzaW9uQnlaZXJvCisgICAgICAgIE92ZXJmbG93ID0gQy5PdmVyZmxvdworICAgICAgICBTdWJub3JtYWwgPSBDLlN1Ym5vcm1hbAorICAgICAgICBVbmRlcmZsb3cgPSBDLlVuZGVyZmxvdworICAgICAgICBSb3VuZGVkID0gQy5Sb3VuZGVkCisgICAgICAgIEluZXhhY3QgPSBDLkluZXhhY3QKKyAgICAgICAgQ2xhbXBlZCA9IEMuQ2xhbXBlZAogCi0gICAgZGVmIHRlc3RfY29tcGFyZV90b3RhbF9tYWcoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuY29tcGFyZV90b3RhbF9tYWcoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWxfbWFnKDEsIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbF9tYWcoRGVjaW1hbCgxKSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsX21hZygxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfdG90YWxfbWFnLCAnMScsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3RvdGFsX21hZywgMSwgJzEnKQorICAgICAgICBEZWNDbGFtcGVkID0gQy5EZWNDbGFtcGVkCisgICAgICAgIERlY0ludmFsaWRPcGVyYXRpb24gPSBDLkRlY0ludmFsaWRPcGVyYXRpb24KKyAgICAgICAgRGVjSUVFRUludmFsaWRPcGVyYXRpb24gPSBDLkRlY0lFRUVJbnZhbGlkT3BlcmF0aW9uCiAKLSAgICBkZWYgdGVzdF9jb3B5X2FicyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb3B5X2FicyhEZWNpbWFsKC0xKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfYWJzKC0xKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfYWJzLCAnLTEnKQorICAgICAgICBkZWYgYXNzZXJ0SXNFeGNsdXNpdmVseVNldChzaWduYWwsIHNpZ25hbF9kaWN0KToKKyAgICAgICAgICAgIGZvciBzaWcgaW4gc2lnbmFsX2RpY3Q6CisgICAgICAgICAgICAgICAgaWYgc2lnID09IHNpZ25hbDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNpZ25hbF9kaWN0W3NpZ10pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzaWduYWxfZGljdFtzaWddKQogCi0gICAgZGVmIHRlc3RfY29weV9kZWNpbWFsKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvcHlfZGVjaW1hbChEZWNpbWFsKC0xKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfZGVjaW1hbCgtMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X2RlY2ltYWwsICctMScpCisgICAgICAgIGMgPSBEZWZhdWx0Q29udGV4dC5jb3B5KCkKIAotICAgIGRlZiB0ZXN0X2NvcHlfbmVnYXRlKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvcHlfbmVnYXRlKERlY2ltYWwoLTEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9uZWdhdGUoLTEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29weV9uZWdhdGUsICctMScpCisgICAgICAgICMgU2lnbmFsIGRpY3QgbWV0aG9kcworICAgICAgICBzZWxmLmFzc2VydFRydWUoT3ZlcmZsb3cgaW4gYy50cmFwcykKKyAgICAgICAgYy5jbGVhcl90cmFwcygpCisgICAgICAgIGZvciBrIGluIGMudHJhcHMua2V5cygpOgorICAgICAgICAgICAgYy50cmFwc1trXSA9IFRydWUKKyAgICAgICAgZm9yIHYgaW4gYy50cmFwcy52YWx1ZXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2KQorICAgICAgICBjLmNsZWFyX3RyYXBzKCkKKyAgICAgICAgZm9yIGssIHYgaW4gYy50cmFwcy5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2KQogCi0gICAgZGVmIHRlc3RfY29weV9zaWduKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvcHlfc2lnbihEZWNpbWFsKDEpLCBEZWNpbWFsKC0yKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfc2lnbigxLCAtMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X3NpZ24oRGVjaW1hbCgxKSwgLTIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9zaWduKDEsIERlY2ltYWwoLTIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfc2lnbiwgJzEnLCAtMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfc2lnbiwgMSwgJy0yJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzLmdldChPdmVyZmxvdykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoYy5mbGFncy5nZXQoIngiKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZsYWdzLmdldCgieCIsICJ5IiksICJ5IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmZsYWdzLmdldCwgIngiLCAieSIsICJ6IikKIAotICAgIGRlZiB0ZXN0X2RpdmlkZShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5kaXZpZGUoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZSgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZShEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZSgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdmlkZSwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2aWRlLCAxLCAnMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGMuZmxhZ3MpLCBsZW4oYy50cmFwcykpCisgICAgICAgIHMgPSBzeXMuZ2V0c2l6ZW9mKGMuZmxhZ3MpCisgICAgICAgIHMgPSBzeXMuZ2V0c2l6ZW9mKGMudHJhcHMpCisgICAgICAgIHMgPSBjLmZsYWdzLl9fcmVwcl9fKCkKIAotICAgIGRlZiB0ZXN0X2RpdmlkZV9pbnQoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuZGl2aWRlX2ludChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlX2ludCgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZV9pbnQoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGVfaW50KDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2aWRlX2ludCwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2aWRlX2ludCwgMSwgJzInKQorICAgICAgICAjIFNldCBmbGFncy90cmFwcy4KKyAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgIGMuX2ZsYWdzID0gRGVjQ2xhbXBlZAorICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tDbGFtcGVkXSkKIAotICAgIGRlZiB0ZXN0X2Rpdm1vZChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5kaXZtb2QoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdm1vZCgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdm1vZChEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdm1vZCgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdm1vZCwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2bW9kLCAxLCAnMicpCisgICAgICAgIGMuY2xlYXJfdHJhcHMoKQorICAgICAgICBjLl90cmFwcyA9IERlY0ludmFsaWRPcGVyYXRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0pCiAKLSAgICBkZWYgdGVzdF9leHAoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuZXhwKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZXhwKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmV4cCwgJzEwJykKKyAgICAgICAgIyBTZXQgZmxhZ3MvdHJhcHMgZnJvbSBkaWN0aW9uYXJ5LgorICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgZCA9IGMuZmxhZ3MuY29weSgpCisgICAgICAgIGRbRGl2aXNpb25CeVplcm9dID0gVHJ1ZQorICAgICAgICBjLmZsYWdzID0gZAorICAgICAgICBhc3NlcnRJc0V4Y2x1c2l2ZWx5U2V0KERpdmlzaW9uQnlaZXJvLCBjLmZsYWdzKQogCi0gICAgZGVmIHRlc3RfZm1hKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmZtYShEZWNpbWFsKDIpLCBEZWNpbWFsKDMpLCBEZWNpbWFsKDQpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZm1hKDIsIDMsIDQpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZm1hKERlY2ltYWwoMiksIDMsIDQpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZm1hKDIsIERlY2ltYWwoMyksIDQpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZm1hKDIsIDMsIERlY2ltYWwoNCkpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZm1hKERlY2ltYWwoMiksIERlY2ltYWwoMyksIDQpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZm1hLCAnMicsIDMsIDQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5mbWEsIDIsICczJywgNCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmZtYSwgMiwgMywgJzQnKQorICAgICAgICBjLmNsZWFyX3RyYXBzKCkKKyAgICAgICAgZCA9IGMudHJhcHMuY29weSgpCisgICAgICAgIGRbVW5kZXJmbG93XSA9IFRydWUKKyAgICAgICAgYy50cmFwcyA9IGQKKyAgICAgICAgYXNzZXJ0SXNFeGNsdXNpdmVseVNldChVbmRlcmZsb3csIGMudHJhcHMpCiAKLSAgICBkZWYgdGVzdF9pc19maW5pdGUoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuaXNfZmluaXRlKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfZmluaXRlKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX2Zpbml0ZSwgJzEwJykKKyAgICAgICAgIyBSYW5kb20gY29uc3RydWN0b3JzCisgICAgICAgIEludFNpZ25hbHMgPSB7CisgICAgICAgICAgQ2xhbXBlZDogQy5EZWNDbGFtcGVkLAorICAgICAgICAgIFJvdW5kZWQ6IEMuRGVjUm91bmRlZCwKKyAgICAgICAgICBJbmV4YWN0OiBDLkRlY0luZXhhY3QsCisgICAgICAgICAgU3Vibm9ybWFsOiBDLkRlY1N1Ym5vcm1hbCwKKyAgICAgICAgICBVbmRlcmZsb3c6IEMuRGVjVW5kZXJmbG93LAorICAgICAgICAgIE92ZXJmbG93OiBDLkRlY092ZXJmbG93LAorICAgICAgICAgIERpdmlzaW9uQnlaZXJvOiBDLkRlY0RpdmlzaW9uQnlaZXJvLAorICAgICAgICAgIEludmFsaWRPcGVyYXRpb246IEMuRGVjSUVFRUludmFsaWRPcGVyYXRpb24KKyAgICAgICAgfQorICAgICAgICBJbnRDb25kID0gWworICAgICAgICAgIEMuRGVjRGl2aXNpb25JbXBvc3NpYmxlLCBDLkRlY0RpdmlzaW9uVW5kZWZpbmVkLCBDLkRlY0ZwdUVycm9yLAorICAgICAgICAgIEMuRGVjSW52YWxpZENvbnRleHQsIEMuRGVjSW52YWxpZE9wZXJhdGlvbiwgQy5EZWNNYWxsb2NFcnJvciwKKyAgICAgICAgICBDLkRlY0NvbnZlcnNpb25TeW50YXgsCisgICAgICAgIF0KIAotICAgIGRlZiB0ZXN0X2lzX2luZmluaXRlKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX2luZmluaXRlKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfaW5maW5pdGUoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfaW5maW5pdGUsICcxMCcpCisgICAgICAgIGxpbSA9IGxlbihPcmRlcmVkU2lnbmFsc1tDXSkKKyAgICAgICAgZm9yIHIgaW4gcmFuZ2UobGltKToKKyAgICAgICAgICAgIGZvciB0IGluIHJhbmdlKGxpbSk6CisgICAgICAgICAgICAgICAgZm9yIHJvdW5kIGluIFJvdW5kaW5nTW9kZXM6CisgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmFuZG9tLnNhbXBsZShPcmRlcmVkU2lnbmFsc1tDXSwgcikKKyAgICAgICAgICAgICAgICAgICAgdHJhcHMgPSByYW5kb20uc2FtcGxlKE9yZGVyZWRTaWduYWxzW0NdLCB0KQorICAgICAgICAgICAgICAgICAgICBwcmVjID0gcmFuZG9tLnJhbmRyYW5nZSgxLCAxMDAwMCkKKyAgICAgICAgICAgICAgICAgICAgZW1pbiA9IHJhbmRvbS5yYW5kcmFuZ2UoLTEwMDAwLCAwKQorICAgICAgICAgICAgICAgICAgICBlbWF4ID0gcmFuZG9tLnJhbmRyYW5nZSgwLCAxMDAwMCkKKyAgICAgICAgICAgICAgICAgICAgY2xhbXAgPSByYW5kb20ucmFuZHJhbmdlKDAsIDIpCisgICAgICAgICAgICAgICAgICAgIGNhcHMgPSByYW5kb20ucmFuZHJhbmdlKDAsIDIpCisgICAgICAgICAgICAgICAgICAgIGNyID0gcmFuZG9tLnJhbmRyYW5nZSgwLCAyKQorICAgICAgICAgICAgICAgICAgICBjID0gQ29udGV4dChwcmVjPXByZWMsIHJvdW5kaW5nPXJvdW5kLCBFbWluPWVtaW4sIEVtYXg9ZW1heCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwaXRhbHM9Y2FwcywgY2xhbXA9Y2xhbXAsIGZsYWdzPWxpc3QoZmxhZ3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFwcz1saXN0KHRyYXBzKSkKIAotICAgIGRlZiB0ZXN0X2lzX25hbihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5pc19uYW4oRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19uYW4oMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfbmFuLCAnMTAnKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgcHJlYykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdW5kaW5nLCByb3VuZCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtaW4sIGVtaW4pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWF4LCBlbWF4KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2FwaXRhbHMsIGNhcHMpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jbGFtcCwgY2xhbXApCiAKLSAgICBkZWYgdGVzdF9pc19ub3JtYWwoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuaXNfbm9ybWFsKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfbm9ybWFsKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX25vcm1hbCwgJzEwJykKKyAgICAgICAgICAgICAgICAgICAgZiA9IDAKKyAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gZmxhZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICBmIHw9IEludFNpZ25hbHNbeF0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLl9mbGFncywgZikKIAotICAgIGRlZiB0ZXN0X2lzX3FuYW4oc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuaXNfcW5hbihEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3FuYW4oMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfcW5hbiwgJzEwJykKKyAgICAgICAgICAgICAgICAgICAgZiA9IDAKKyAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gdHJhcHM6CisgICAgICAgICAgICAgICAgICAgICAgICBmIHw9IEludFNpZ25hbHNbeF0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLl90cmFwcywgZikKIAotICAgIGRlZiB0ZXN0X2lzX3NpZ25lZChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5pc19zaWduZWQoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19zaWduZWQoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfc2lnbmVkLCAnMTAnKQorICAgICAgICBmb3IgY29uZCBpbiBJbnRDb25kOgorICAgICAgICAgICAgYy5fZmxhZ3MgPSBjb25kCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5fZmxhZ3MmRGVjSUVFRUludmFsaWRPcGVyYXRpb24pCisgICAgICAgICAgICBhc3NlcnRJc0V4Y2x1c2l2ZWx5U2V0KEludmFsaWRPcGVyYXRpb24sIGMuZmxhZ3MpCiAKLSAgICBkZWYgdGVzdF9pc19zbmFuKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX3NuYW4oRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19zbmFuKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX3NuYW4sICcxMCcpCisgICAgICAgIGZvciBjb25kIGluIEludENvbmQ6CisgICAgICAgICAgICBjLl90cmFwcyA9IGNvbmQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLl90cmFwcyZEZWNJRUVFSW52YWxpZE9wZXJhdGlvbikKKyAgICAgICAgICAgIGFzc2VydElzRXhjbHVzaXZlbHlTZXQoSW52YWxpZE9wZXJhdGlvbiwgYy50cmFwcykKIAotICAgIGRlZiB0ZXN0X2lzX3N1Ym5vcm1hbChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19zdWJub3JtYWwoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfc3Vibm9ybWFsLCAnMTAnKQorICAgIGRlZiB0ZXN0X2ludmFsaWRfb3ZlcnJpZGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBDLkRlY2ltYWwKIAotICAgIGRlZiB0ZXN0X2lzX3plcm8oc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuaXNfemVybyhEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3plcm8oMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfemVybywgJzEwJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnJvbSBsb2NhbGUgaW1wb3J0IENIQVJfTUFYCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHJldHVybgogCi0gICAgZGVmIHRlc3RfbG4oc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubG4oRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sbigxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sbiwgJzEwJykKKyAgICAgICAgZGVmIG1ha2VfZ3JvdXBpbmcobHN0KToKKyAgICAgICAgICAgIHJldHVybiAnJy5qb2luKFtjaHIoeCkgZm9yIHggaW4gbHN0XSkKIAotICAgIGRlZiB0ZXN0X2xvZzEwKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmxvZzEwKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9nMTAoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9nMTAsICcxMCcpCisgICAgICAgIGRlZiBnZXRfZm10KHgsIG92ZXJyaWRlPU5vbmUsIGZtdD0nbicpOgorICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoeCkuX19mb3JtYXRfXyhmbXQsIG92ZXJyaWRlKQogCi0gICAgZGVmIHRlc3RfbG9nYihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5sb2diKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9nYigxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2diLCAnMTAnKQorICAgICAgICBpbnZhbGlkX2dyb3VwaW5nID0geworICAgICAgICAgICAgJ2RlY2ltYWxfcG9pbnQnIDogJywnLAorICAgICAgICAgICAgJ2dyb3VwaW5nJyA6IG1ha2VfZ3JvdXBpbmcoWzI1NSwgMjU1LCAwXSksCisgICAgICAgICAgICAndGhvdXNhbmRzX3NlcCcgOiAnLCcKKyAgICAgICAgfQorICAgICAgICBpbnZhbGlkX2RvdCA9IHsKKyAgICAgICAgICAgICdkZWNpbWFsX3BvaW50JyA6ICd4eHh4eCcsCisgICAgICAgICAgICAnZ3JvdXBpbmcnIDogbWFrZV9ncm91cGluZyhbMywgMywgMF0pLAorICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnIDogJywnCisgICAgICAgIH0KKyAgICAgICAgaW52YWxpZF9zZXAgPSB7CisgICAgICAgICAgICAnZGVjaW1hbF9wb2ludCcgOiAnLicsCisgICAgICAgICAgICAnZ3JvdXBpbmcnIDogbWFrZV9ncm91cGluZyhbMywgMywgMF0pLAorICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnIDogJ3l5eXl5JworICAgICAgICB9CiAKLSAgICBkZWYgdGVzdF9sb2dpY2FsX2FuZChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5sb2dpY2FsX2FuZChEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9hbmQoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX2FuZChEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfYW5kKDEsIERlY2ltYWwoMSkpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9hbmQsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfYW5kLCAxLCAnMScpCisgICAgICAgIGlmIENIQVJfTUFYID09IDEyNzogIyBuZWdhdGl2ZSBncm91cGluZyBpbiBvdmVycmlkZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X2ZtdCwgMTIzNDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkX2dyb3VwaW5nLCAnZycpCiAKLSAgICBkZWYgdGVzdF9sb2dpY2FsX2ludmVydChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5sb2dpY2FsX2ludmVydChEZWNpbWFsKDEwMDApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9pbnZlcnQoMTAwMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX2ludmVydCwgJzEwMDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfZm10LCAxMjM0NSwgaW52YWxpZF9kb3QsICdnJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X2ZtdCwgMTIzNDUsIGludmFsaWRfc2VwLCAnZycpCiAKLSAgICBkZWYgdGVzdF9sb2dpY2FsX29yKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmxvZ2ljYWxfb3IoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfb3IoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX29yKERlY2ltYWwoMSksIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9vcigxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfb3IsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfb3IsIDEsICcxJykKLQotICAgIGRlZiB0ZXN0X2xvZ2ljYWxfeG9yKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmxvZ2ljYWxfeG9yKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX3hvcigxLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfeG9yKERlY2ltYWwoMSksIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF94b3IoMSwgRGVjaW1hbCgxKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX3hvciwgJzEnLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF94b3IsIDEsICcxJykKLQotICAgIGRlZiB0ZXN0X21heChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5tYXgoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heCgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heChEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heCgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heCwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWF4LCAxLCAnMicpCi0KLSAgICBkZWYgdGVzdF9tYXhfbWFnKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLm1heF9tYWcoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heF9tYWcoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXhfbWFnKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWF4X21hZygxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heF9tYWcsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heF9tYWcsIDEsICcyJykKLQotICAgIGRlZiB0ZXN0X21pbihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5taW4oRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbigxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbihEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbigxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1pbiwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWluLCAxLCAnMicpCi0KLSAgICBkZWYgdGVzdF9taW5fbWFnKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLm1pbl9tYWcoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbl9tYWcoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW5fbWFnKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluX21hZygxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1pbl9tYWcsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1pbl9tYWcsIDEsICcyJykKLQotICAgIGRlZiB0ZXN0X21pbnVzKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLm1pbnVzKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWludXMoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWludXMsICcxMCcpCi0KLSAgICBkZWYgdGVzdF9tdWx0aXBseShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5tdWx0aXBseShEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubXVsdGlwbHkoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tdWx0aXBseShEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm11bHRpcGx5KDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubXVsdGlwbHksICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm11bHRpcGx5LCAxLCAnMicpCi0KLSAgICBkZWYgdGVzdF9uZXh0X21pbnVzKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLm5leHRfbWludXMoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X21pbnVzKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5leHRfbWludXMsICcxMCcpCi0KLSAgICBkZWYgdGVzdF9uZXh0X3BsdXMoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubmV4dF9wbHVzKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubmV4dF9wbHVzKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5leHRfcGx1cywgJzEwJykKLQotICAgIGRlZiB0ZXN0X25leHRfdG93YXJkKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLm5leHRfdG93YXJkKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X3Rvd2FyZCgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5leHRfdG93YXJkKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubmV4dF90b3dhcmQoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5uZXh0X3Rvd2FyZCwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubmV4dF90b3dhcmQsIDEsICcyJykKLQotICAgIGRlZiB0ZXN0X25vcm1hbGl6ZShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5ub3JtYWxpemUoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5ub3JtYWxpemUoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubm9ybWFsaXplLCAnMTAnKQotCi0gICAgZGVmIHRlc3RfbnVtYmVyX2NsYXNzKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5udW1iZXJfY2xhc3MoMTIzKSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgxMjMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm51bWJlcl9jbGFzcygwKSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgwKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5udW1iZXJfY2xhc3MoLTQ1KSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgtNDUpKSkKLQotICAgIGRlZiB0ZXN0X3Bvd2VyKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnBvd2VyKERlY2ltYWwoMSksIERlY2ltYWwoNCksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wb3dlcigxLCA0LCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBvd2VyKERlY2ltYWwoMSksIDQsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucG93ZXIoMSwgRGVjaW1hbCg0KSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wb3dlcigxLCA0LCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBvd2VyKERlY2ltYWwoMSksIERlY2ltYWwoNCksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucG93ZXIsICcxJywgNCwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnBvd2VyLCAxLCAnNCcsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5wb3dlciwgMSwgNCwgJzInKQotCi0gICAgZGVmIHRlc3RfcGx1cyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5wbHVzKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucGx1cygxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5wbHVzLCAnMTAnKQotCi0gICAgZGVmIHRlc3RfcXVhbnRpemUoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMucXVhbnRpemUoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnF1YW50aXplKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucXVhbnRpemUoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5xdWFudGl6ZSgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnF1YW50aXplLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5xdWFudGl6ZSwgMSwgJzInKQotCi0gICAgZGVmIHRlc3RfcmVtYWluZGVyKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnJlbWFpbmRlcihEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyKDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucmVtYWluZGVyLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5yZW1haW5kZXIsIDEsICcyJykKLQotICAgIGRlZiB0ZXN0X3JlbWFpbmRlcl9uZWFyKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXJfbmVhcigxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyX25lYXIoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5yZW1haW5kZXJfbmVhciwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucmVtYWluZGVyX25lYXIsIDEsICcyJykKLQotICAgIGRlZiB0ZXN0X3JvdGF0ZShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5yb3RhdGUoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZSgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZShEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZSgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJvdGF0ZSwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucm90YXRlLCAxLCAnMicpCi0KLSAgICBkZWYgdGVzdF9zcXJ0KHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnNxcnQoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zcXJ0KDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNxcnQsICcxMCcpCisgICAgZGVmIHRlc3RfZXhhY3RfY29udmVyc2lvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IEMuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gQy5JbnZhbGlkT3BlcmF0aW9uCiAKLSAgICBkZWYgdGVzdF9zYW1lX3F1YW50dW0oc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuc2FtZV9xdWFudHVtKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zYW1lX3F1YW50dW0oMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zYW1lX3F1YW50dW0oRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zYW1lX3F1YW50dW0oMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zYW1lX3F1YW50dW0sICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNhbWVfcXVhbnR1bSwgMSwgJzInKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CiAKLSAgICBkZWYgdGVzdF9zY2FsZWIoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuc2NhbGViKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zY2FsZWIoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zY2FsZWIoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zY2FsZWIoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zY2FsZWIsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNjYWxlYiwgMSwgJzInKQorICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IFRydWUKIAotICAgIGRlZiB0ZXN0X3NoaWZ0KHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnNoaWZ0KERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zaGlmdCgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNoaWZ0KERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2hpZnQoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zaGlmdCwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2hpZnQsIDEsICcyJykKKyAgICAgICAgICAgICMgQ2xhbXBlZAorICAgICAgICAgICAgeCA9ICIwZSVkIiAlIHN5cy5tYXhzaXplCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCB4KQogCi0gICAgZGVmIHRlc3Rfc3VidHJhY3Qoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuc3VidHJhY3QoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnN1YnRyYWN0KDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc3VidHJhY3QoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zdWJ0cmFjdCgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnN1YnRyYWN0LCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zdWJ0cmFjdCwgMSwgJzInKQorICAgICAgICAgICAgeCA9ICIwZSVkIiAlICgtc3lzLm1heHNpemUtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLSAgICBkZWYgdGVzdF90b19lbmdfc3RyaW5nKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnRvX2VuZ19zdHJpbmcoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19lbmdfc3RyaW5nKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnRvX2VuZ19zdHJpbmcsICcxMCcpCisgICAgICAgICAgICAjIE92ZXJmbG93CisgICAgICAgICAgICB4ID0gIjFlJWQiICUgc3lzLm1heHNpemUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLSAgICBkZWYgdGVzdF90b19zY2lfc3RyaW5nKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnRvX3NjaV9zdHJpbmcoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19zY2lfc3RyaW5nKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnRvX3NjaV9zdHJpbmcsICcxMCcpCisgICAgICAgICAgICAjIFVuZGVyZmxvdworICAgICAgICAgICAgeCA9ICIxZSVkIiAlICgtc3lzLm1heHNpemUtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLSAgICBkZWYgdGVzdF90b19pbnRlZ3JhbF9leGFjdChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRvX2ludGVncmFsX2V4YWN0KDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnRvX2ludGVncmFsX2V4YWN0LCAnMTAnKQorICAgIGRlZiB0ZXN0X2Zyb21fdHVwbGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBDLkRlY2ltYWwKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gQy5sb2NhbGNvbnRleHQKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBPdmVyZmxvdyA9IEMuT3ZlcmZsb3cKKyAgICAgICAgVW5kZXJmbG93ID0gQy5VbmRlcmZsb3cKIAotICAgIGRlZiB0ZXN0X3RvX2ludGVncmFsX3ZhbHVlKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMudG9faW50ZWdyYWxfdmFsdWUoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9faW50ZWdyYWxfdmFsdWUsICcxMCcpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKIAotY2xhc3MgV2l0aFN0YXRlbWVudFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICMgQ2FuJ3QgZG8gdGhlc2UgYXMgZG9jc3RyaW5ncyB1bnRpbCBQeXRob24gMi42Ci0gICAgIyBhcyBkb2N0ZXN0IGNhbid0IGhhbmRsZSBfX2Z1dHVyZV9fIHN0YXRlbWVudHMKKyAgICAgICAgICAgIGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSBUcnVlCisgICAgICAgICAgICBjLnRyYXBzW092ZXJmbG93XSA9IFRydWUKKyAgICAgICAgICAgIGMudHJhcHNbVW5kZXJmbG93XSA9IFRydWUKIAotICAgIGRlZiB0ZXN0X2xvY2FsY29udGV4dChzZWxmKToKLSAgICAgICAgIyBVc2UgYSBjb3B5IG9mIHRoZSBjdXJyZW50IGNvbnRleHQgaW4gdGhlIGJsb2NrCi0gICAgICAgIG9yaWdfY3R4ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgZW50ZXJfY3R4OgotICAgICAgICAgICAgc2V0X2N0eCA9IGdldGNvbnRleHQoKQotICAgICAgICBmaW5hbF9jdHggPSBnZXRjb250ZXh0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhvcmlnX2N0eCwgZmluYWxfY3R4LCAnZGlkIG5vdCByZXN0b3JlIGNvbnRleHQgY29ycmVjdGx5JykKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdChvcmlnX2N0eCwgc2V0X2N0eCwgJ2RpZCBub3QgY29weSB0aGUgY29udGV4dCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoc2V0X2N0eCwgZW50ZXJfY3R4LCAnX19lbnRlcl9fIHJldHVybmVkIHdyb25nIGNvbnRleHQnKQorICAgICAgICAgICAgIyBTU0laRV9NQVgKKyAgICAgICAgICAgIHggPSAoMSwgKCksIHN5cy5tYXhzaXplKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYy5jcmVhdGVfZGVjaW1hbCh4KSksICctMEUrOTk5OTk5JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLSAgICBkZWYgdGVzdF9sb2NhbGNvbnRleHRhcmcoc2VsZik6Ci0gICAgICAgICMgVXNlIGEgY29weSBvZiB0aGUgc3VwcGxpZWQgY29udGV4dCBpbiB0aGUgYmxvY2sKLSAgICAgICAgb3JpZ19jdHggPSBnZXRjb250ZXh0KCkKLSAgICAgICAgbmV3X2N0eCA9IENvbnRleHQocHJlYz00MikKLSAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQobmV3X2N0eCkgYXMgZW50ZXJfY3R4OgotICAgICAgICAgICAgc2V0X2N0eCA9IGdldGNvbnRleHQoKQotICAgICAgICBmaW5hbF9jdHggPSBnZXRjb250ZXh0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhvcmlnX2N0eCwgZmluYWxfY3R4LCAnZGlkIG5vdCByZXN0b3JlIGNvbnRleHQgY29ycmVjdGx5JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXRfY3R4LnByZWMsIG5ld19jdHgucHJlYywgJ2RpZCBub3Qgc2V0IGNvcnJlY3QgY29udGV4dCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobmV3X2N0eCwgc2V0X2N0eCwgJ2RpZCBub3QgY29weSB0aGUgY29udGV4dCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoc2V0X2N0eCwgZW50ZXJfY3R4LCAnX19lbnRlcl9fIHJldHVybmVkIHdyb25nIGNvbnRleHQnKQorICAgICAgICAgICAgeCA9ICgxLCAoMCwgMSwgMiksIHN5cy5tYXhzaXplKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3csIGMuY3JlYXRlX2RlY2ltYWwsIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCB4KQogCi1jbGFzcyBDb250ZXh0RmxhZ3ModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2ZsYWdzX2lycmVsZXZhbnQoc2VsZik6Ci0gICAgICAgICMgY2hlY2sgdGhhdCB0aGUgcmVzdWx0IChudW1lcmljIHJlc3VsdCArIGZsYWdzIHJhaXNlZCkgb2YgYW4KLSAgICAgICAgIyBhcml0aG1ldGljIG9wZXJhdGlvbiBkb2Vzbid0IGRlcGVuZCBvbiB0aGUgY3VycmVudCBmbGFncworICAgICAgICAgICAgIyBTU0laRV9NSU4KKyAgICAgICAgICAgIHggPSAoMSwgKCksIC1zeXMubWF4c2l6ZS0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYy5jcmVhdGVfZGVjaW1hbCh4KSksICctMEUtMTAwMDAyNicpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCB4KQogCi0gICAgICAgIGNvbnRleHQgPSBDb250ZXh0KHByZWM9OSwgRW1pbiA9IC05OTk5OTk5OTksIEVtYXggPSA5OTk5OTk5OTksCi0gICAgICAgICAgICAgICAgICAgIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwgdHJhcHM9W10sIGZsYWdzPVtdKQorICAgICAgICAgICAgeCA9ICgxLCAoMCwgMSwgMiksIC1zeXMubWF4c2l6ZS0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5kZXJmbG93LCBjLmNyZWF0ZV9kZWNpbWFsLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgeCkKIAotICAgICAgICAjIG9wZXJhdGlvbnMgdGhhdCByYWlzZSB2YXJpb3VzIGZsYWdzLCBpbiB0aGUgZm9ybSAoZnVuY3Rpb24sIGFyZ2xpc3QpCi0gICAgICAgIG9wZXJhdGlvbnMgPSBbCi0gICAgICAgICAgICAoY29udGV4dC5fYXBwbHksIFtEZWNpbWFsKCIxMDBFLTEwMDAwMDAwMDkiKV0pLAotICAgICAgICAgICAgKGNvbnRleHQuc3FydCwgW0RlY2ltYWwoMildKSwKLSAgICAgICAgICAgIChjb250ZXh0LmFkZCwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCi0gICAgICAgICAgICAoY29udGV4dC5tdWx0aXBseSwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCi0gICAgICAgICAgICAoY29udGV4dC5zdWJ0cmFjdCwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCi0gICAgICAgICAgICBdCisgICAgICAgICAgICAjIE92ZXJmbG93RXJyb3IKKyAgICAgICAgICAgIHggPSAoMSwgKCksIHN5cy5tYXhzaXplKzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBjLmNyZWF0ZV9kZWNpbWFsLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgRGVjaW1hbCwgeCkKIAotICAgICAgICAjIHRyeSB2YXJpb3VzIGZsYWdzIGluZGl2aWR1YWxseSwgdGhlbiBhIHdob2xlIGxvdCBhdCBvbmNlCi0gICAgICAgIGZsYWdzZXRzID0gW1tJbmV4YWN0XSwgW1JvdW5kZWRdLCBbVW5kZXJmbG93XSwgW0NsYW1wZWRdLCBbU3Vibm9ybWFsXSwKLSAgICAgICAgICAgICAgICAgICAgW0luZXhhY3QsIFJvdW5kZWQsIFVuZGVyZmxvdywgQ2xhbXBlZCwgU3Vibm9ybWFsXV0KKyAgICAgICAgICAgIHggPSAoMSwgKCksIC1zeXMubWF4c2l6ZS0yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgYy5jcmVhdGVfZGVjaW1hbCwgeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIERlY2ltYWwsIHgpCiAKLSAgICAgICAgZm9yIGZuLCBhcmdzIGluIG9wZXJhdGlvbnM6Ci0gICAgICAgICAgICAjIGZpbmQgYW5zd2VyIGFuZCBmbGFncyByYWlzZWQgdXNpbmcgYSBjbGVhbiBjb250ZXh0Ci0gICAgICAgICAgICBjb250ZXh0LmNsZWFyX2ZsYWdzKCkKLSAgICAgICAgICAgIGFucyA9IGZuKCphcmdzKQotICAgICAgICAgICAgZmxhZ3MgPSBbayBmb3IgaywgdiBpbiBjb250ZXh0LmZsYWdzLml0ZW1zKCkgaWYgdl0KKyAgICAgICAgICAgICMgU3BlY2lhbHMKKyAgICAgICAgICAgIHggPSAoMSwgKCksICJOIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoeCkpLCAnLXNOYU4nKQorICAgICAgICAgICAgeCA9ICgxLCAoMCwpLCAiTiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKHgpKSwgJy1zTmFOJykKKyAgICAgICAgICAgIHggPSAoMSwgKDAsIDEpLCAiTiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKHgpKSwgJy1zTmFOMScpCiAKLSAgICAgICAgICAgIGZvciBleHRyYV9mbGFncyBpbiBmbGFnc2V0czoKLSAgICAgICAgICAgICAgICAjIHNldCBmbGFncywgYmVmb3JlIGNhbGxpbmcgb3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgY29udGV4dC5jbGVhcl9mbGFncygpCi0gICAgICAgICAgICAgICAgZm9yIGZsYWcgaW4gZXh0cmFfZmxhZ3M6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKGZsYWcpCi0gICAgICAgICAgICAgICAgbmV3X2FucyA9IGZuKCphcmdzKQogCi0gICAgICAgICAgICAgICAgIyBmbGFncyB0aGF0IHdlIGV4cGVjdCB0byBiZSBzZXQgYWZ0ZXIgdGhlIG9wZXJhdGlvbgotICAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZsYWdzID0gbGlzdChmbGFncykKLSAgICAgICAgICAgICAgICBmb3IgZmxhZyBpbiBleHRyYV9mbGFnczoKLSAgICAgICAgICAgICAgICAgICAgaWYgZmxhZyBub3QgaW4gZXhwZWN0ZWRfZmxhZ3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9mbGFncy5hcHBlbmQoZmxhZykKLSAgICAgICAgICAgICAgICBleHBlY3RlZF9mbGFncy5zb3J0KGtleT1pZCkKK2FsbF90ZXN0cyA9IFsKKyAgQ0V4cGxpY2l0Q29uc3RydWN0aW9uVGVzdCwgUHlFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QsCisgIENJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QsIFB5SW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0LAorICBDRm9ybWF0VGVzdCwgICAgICAgICAgICAgICBQeUZvcm1hdFRlc3QsCisgIENBcml0aG1ldGljT3BlcmF0b3JzVGVzdCwgIFB5QXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QsCisgIENUaHJlYWRpbmdUZXN0LCAgICAgICAgICAgIFB5VGhyZWFkaW5nVGVzdCwKKyAgQ1VzYWJpbGl0eVRlc3QsICAgICAgICAgICAgUHlVc2FiaWxpdHlUZXN0LAorICBDUHl0aG9uQVBJdGVzdHMsICAgICAgICAgICBQeVB5dGhvbkFQSXRlc3RzLAorICBDQ29udGV4dEFQSXRlc3RzLCAgICAgICAgICBQeUNvbnRleHRBUEl0ZXN0cywKKyAgQ0NvbnRleHRXaXRoU3RhdGVtZW50LCAgICAgUHlDb250ZXh0V2l0aFN0YXRlbWVudCwKKyAgQ0NvbnRleHRGbGFncywgICAgICAgICAgICAgUHlDb250ZXh0RmxhZ3MsCisgIENTcGVjaWFsQ29udGV4dHMsICAgICAgICAgIFB5U3BlY2lhbENvbnRleHRzLAorICBDQ29udGV4dElucHV0VmFsaWRhdGlvbiwgICBQeUNvbnRleHRJbnB1dFZhbGlkYXRpb24sCisgIENDb250ZXh0U3ViY2xhc3NpbmcsICAgICAgIFB5Q29udGV4dFN1YmNsYXNzaW5nLAorICBDQ292ZXJhZ2UsICAgICAgICAgICAgICAgICBQeUNvdmVyYWdlLAorICBDRnVuY3Rpb25hbGl0eSwgICAgICAgICAgICBQeUZ1bmN0aW9uYWxpdHksCisgIENXaGl0ZWJveCwgICAgICAgICAgICAgICAgIFB5V2hpdGVib3gsCisgIENJQk1UZXN0Q2FzZXMsICAgICAgICAgICAgIFB5SUJNVGVzdENhc2VzLAorXQogCi0gICAgICAgICAgICAgICAgIyBmbGFncyB3ZSBhY3R1YWxseSBnb3QKLSAgICAgICAgICAgICAgICBuZXdfZmxhZ3MgPSBbayBmb3Igayx2IGluIGNvbnRleHQuZmxhZ3MuaXRlbXMoKSBpZiB2XQotICAgICAgICAgICAgICAgIG5ld19mbGFncy5zb3J0KGtleT1pZCkKKyMgRGVsZXRlIEMgdGVzdHMgaWYgX2RlY2ltYWwuc28gaXMgbm90IHByZXNlbnQuCitpZiBub3QgQzoKKyAgICBhbGxfdGVzdHMgPSBhbGxfdGVzdHNbMTo6Ml0KK2Vsc2U6CisgICAgYWxsX3Rlc3RzLmluc2VydCgwLCBDaGVja0F0dHJpYnV0ZXMpCiAKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgbmV3X2FucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYXRpb24gcHJvZHVjZXMgZGlmZmVyZW50IGFuc3dlcnMgZGVwZW5kaW5nIG9uIGZsYWdzIHNldDogIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgJXMsIGdvdCAlcy4iICUgKGFucywgbmV3X2FucykpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfZmxhZ3MsIGV4cGVjdGVkX2ZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYXRpb24gcmFpc2VzIGRpZmZlcmVudCBmbGFncyBkZXBlbmRpbmcgb24gZmxhZ3Mgc2V0OiAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgJXMsIGdvdCAlcyIgJSAoZXhwZWN0ZWRfZmxhZ3MsIG5ld19mbGFncykpCiAKIGRlZiB0ZXN0X21haW4oYXJpdGg9RmFsc2UsIHZlcmJvc2U9Tm9uZSwgdG9kb190ZXN0cz1Ob25lLCBkZWJ1Zz1Ob25lKToKICAgICAiIiIgRXhlY3V0ZSB0aGUgdGVzdHMuCkBAIC0yMzc0LDI3ICs1NDA0LDE2IEBACiAgICAgaXMgZW5hYmxlZCBpbiByZWdydGVzdC5weQogICAgICIiIgogCi0gICAgaW5pdCgpCisgICAgaW5pdChDKQorICAgIGluaXQoUCkKICAgICBnbG9iYWwgVEVTVF9BTEwsIERFQlVHCiAgICAgVEVTVF9BTEwgPSBhcml0aCBvciBpc19yZXNvdXJjZV9lbmFibGVkKCdkZWNpbWFsJykKICAgICBERUJVRyA9IGRlYnVnCiAKICAgICBpZiB0b2RvX3Rlc3RzIGlzIE5vbmU6Ci0gICAgICAgIHRlc3RfY2xhc3NlcyA9IFsKLSAgICAgICAgICAgIERlY2ltYWxFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QsCi0gICAgICAgICAgICBEZWNpbWFsSW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0LAotICAgICAgICAgICAgRGVjaW1hbEFyaXRobWV0aWNPcGVyYXRvcnNUZXN0LAotICAgICAgICAgICAgRGVjaW1hbEZvcm1hdFRlc3QsCi0gICAgICAgICAgICBEZWNpbWFsVXNlT2ZDb250ZXh0VGVzdCwKLSAgICAgICAgICAgIERlY2ltYWxVc2FiaWxpdHlUZXN0LAotICAgICAgICAgICAgRGVjaW1hbFB5dGhvbkFQSXRlc3RzLAotICAgICAgICAgICAgQ29udGV4dEFQSXRlc3RzLAotICAgICAgICAgICAgRGVjaW1hbFRlc3QsCi0gICAgICAgICAgICBXaXRoU3RhdGVtZW50VGVzdCwKLSAgICAgICAgICAgIENvbnRleHRGbGFncwotICAgICAgICBdCisgICAgICAgIHRlc3RfY2xhc3NlcyA9IGFsbF90ZXN0cwogICAgIGVsc2U6Ci0gICAgICAgIHRlc3RfY2xhc3NlcyA9IFtEZWNpbWFsVGVzdF0KKyAgICAgICAgdGVzdF9jbGFzc2VzID0gW0NJQk1UZXN0Q2FzZXMsIFB5SUJNVGVzdENhc2VzXQogCiAgICAgIyBEeW5hbWljYWxseSBidWlsZCBjdXN0b20gdGVzdCBkZWZpbml0aW9uIGZvciBlYWNoIGZpbGUgaW4gdGhlIHRlc3QKICAgICAjIGRpcmVjdG9yeSBhbmQgYWRkIHRoZSBkZWZpbml0aW9ucyB0byB0aGUgRGVjaW1hbFRlc3QgY2xhc3MuICBUaGlzCkBAIC0yNDA2LDE3ICs1NDI1LDMyIEBACiAgICAgICAgIGlmIHRvZG9fdGVzdHMgaXMgbm90IE5vbmUgYW5kIGhlYWQgbm90IGluIHRvZG9fdGVzdHM6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICB0ZXN0ZXIgPSBsYW1iZGEgc2VsZiwgZj1maWxlbmFtZTogc2VsZi5ldmFsX2ZpbGUoZGlyZWN0b3J5ICsgZikKLSAgICAgICAgc2V0YXR0cihEZWNpbWFsVGVzdCwgJ3Rlc3RfJyArIGhlYWQsIHRlc3RlcikKKyAgICAgICAgc2V0YXR0cihDSUJNVGVzdENhc2VzLCAndGVzdF8nICsgaGVhZCwgdGVzdGVyKQorICAgICAgICBzZXRhdHRyKFB5SUJNVGVzdENhc2VzLCAndGVzdF8nICsgaGVhZCwgdGVzdGVyKQogICAgICAgICBkZWwgZmlsZW5hbWUsIGhlYWQsIHRhaWwsIHRlc3RlcgogCiAKICAgICB0cnk6CiAgICAgICAgIHJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQogICAgICAgICBpZiB0b2RvX3Rlc3RzIGlzIE5vbmU6Ci0gICAgICAgICAgICBpbXBvcnQgZGVjaW1hbCBhcyBEZWNpbWFsTW9kdWxlCi0gICAgICAgICAgICBydW5fZG9jdGVzdChEZWNpbWFsTW9kdWxlLCB2ZXJib3NlKQorICAgICAgICAgICAgZnJvbSBkb2N0ZXN0IGltcG9ydCBJR05PUkVfRVhDRVBUSU9OX0RFVEFJTAorICAgICAgICAgICAgc2F2ZWRlY2ltYWwgPSBzeXMubW9kdWxlc1snZGVjaW1hbCddCisgICAgICAgICAgICBpZiBDOgorICAgICAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBDCisgICAgICAgICAgICAgICAgcnVuX2RvY3Rlc3QoQywgdmVyYm9zZSwgb3B0aW9uZmxhZ3M9SUdOT1JFX0VYQ0VQVElPTl9ERVRBSUwpCisgICAgICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gUAorICAgICAgICAgICAgcnVuX2RvY3Rlc3QoUCwgdmVyYm9zZSkKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBzYXZlZGVjaW1hbAogICAgIGZpbmFsbHk6Ci0gICAgICAgIHNldGNvbnRleHQoT1JJR0lOQUxfQ09OVEVYVCkKKyAgICAgICAgaWYgQzogQy5zZXRjb250ZXh0KE9SSUdJTkFMX0NPTlRFWFRbQ10pCisgICAgICAgIFAuc2V0Y29udGV4dChPUklHSU5BTF9DT05URVhUW1BdKQorICAgICAgICBpZiBub3QgQzoKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ0MgdGVzdHMgc2tpcHBlZDogbm8gbW9kdWxlIG5hbWVkIF9kZWNpbWFsLicsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJXYXJuaW5nKQorICAgICAgICBpZiBub3Qgb3JpZ19zeXNfZGVjaW1hbCBpcyBzeXMubW9kdWxlc1snZGVjaW1hbCddOgorICAgICAgICAgICAgcmFpc2UgVGVzdEZhaWxlZCgiSW50ZXJuYWwgZXJyb3I6IHVuYmFsYW5jZWQgbnVtYmVyIG9mIGNoYW5nZXMgdG8gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3lzLm1vZHVsZXNbJ2RlY2ltYWwnXS4iKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IG9wdHBhcnNlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5IGIvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weQppbmRleCBmMGFmZTFkLi5hODQ4N2QyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkKQEAgLTQ3Miw2ICs0NzIsMTkgQEAKICMjICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCiAjIyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZSksIGlkKGVbLTFdKSkKIAorICAgIGRlZiB0ZXN0X2l0ZXJhdG9yX3BpY2tsZShzZWxmKToKKyAgICAgICAgZGF0YSA9IGRlcXVlKHJhbmdlKDIwMCkpCisgICAgICAgIGl0ID0gaXRvcmcgPSBpdGVyKGRhdGEpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBsaXN0KGRhdGEpKQorCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIG5leHQoaXQpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGxpc3QoZGF0YSlbMTpdKQorCiAgICAgZGVmIHRlc3RfZGVlcGNvcHkoc2VsZik6CiAgICAgICAgIG11dCA9IFsxMF0KICAgICAgICAgZCA9IGRlcXVlKFttdXRdKQpAQCAtNTI0LDcgKzUzNyw3IEBACiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc2l6ZW9mKHNlbGYpOgogICAgICAgICBCTE9DS0xFTiA9IDYyCi0gICAgICAgIGJhc2VzaXplID0gc3VwcG9ydC5jYWxjb2Jqc2l6ZSgnMlA0UGxQJykKKyAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCcyUDRubFAnKQogICAgICAgICBibG9ja3NpemUgPSBzdHJ1Y3QuY2FsY3NpemUoJzJQJWRQJyAlIEJMT0NLTEVOKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iamVjdC5fX3NpemVvZl9fKGRlcXVlKCkpLCBiYXNlc2l6ZSkKICAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrX3NpemVvZgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXNjci5weSBiL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkKaW5kZXggY2RhZjdkMi4uYjVhMTBlZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXNjci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5CkBAIC02NTQsMTkgKzY1NCwxOSBAQAogICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1BTWV0YSk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydBTWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAKICAgICAgICAgY2xhc3MgQihtZXRhY2xhc3M9Qk1ldGEpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICAjIEJNZXRhLl9fbmV3X18gY2FsbHMgQU1ldGEuX19uZXdfXyB3aXRoIHN1cGVyOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk1ldGEnLCAnQU1ldGEnXSwgbmV3X2NhbGxzKQotICAgICAgICBuZXdfY2FsbHNbOl0gPSBbXQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQogCiAgICAgICAgIGNsYXNzIEMoQSwgQik6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMgVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgQk1ldGE6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTWV0YScsICdBTWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgICMgQk1ldGEuX19wcmVwYXJlX18gc2hvdWxkJ3ZlIGJlZW4gY2FsbGVkOgogICAgICAgICBzZWxmLmFzc2VydEluKCdCTWV0YV93YXNfaGVyZScsIEMuX19kaWN0X18pCiAKQEAgLTY3NCwyMCArNjc0LDIwIEBACiAgICAgICAgIGNsYXNzIEMyKEIsIEEpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk1ldGEnLCAnQU1ldGEnXSwgbmV3X2NhbGxzKQotICAgICAgICBuZXdfY2FsbHNbOl0gPSBbXQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQogICAgICAgICBzZWxmLmFzc2VydEluKCdCTWV0YV93YXNfaGVyZScsIEMyLl9fZGljdF9fKQogCiAgICAgICAgICMgQ2hlY2sgY29ycmVjdCBtZXRhY2xhc3MgY2FsY3VsYXRpb24gd2hlbiBhIG1ldGFjbGFzcyBpcyBkZWNsYXJlZDoKICAgICAgICAgY2xhc3MgRChDLCBtZXRhY2xhc3M9dHlwZSk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTWV0YScsICdBTWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgRC5fX2RpY3RfXykKIAogICAgICAgICBjbGFzcyBFKEMsIG1ldGFjbGFzcz1BTWV0YSk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTWV0YScsICdBTWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgRS5fX2RpY3RfXykKIAogICAgICAgICAjIFNwZWNpYWwgY2FzZTogdGhlIGdpdmVuIG1ldGFjbGFzcyBpc24ndCBhIGNsYXNzLApAQCAtNzI5LDMzICs3MjksMzMgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRJcyhBTm90TWV0YSwgdHlwZShBKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0FOb3RNZXRhJ10sIHByZXBhcmVfY2FsbHMpCi0gICAgICAgIHByZXBhcmVfY2FsbHNbOl0gPSBbXQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0FOb3RNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKIAogICAgICAgICBjbGFzcyBCKG1ldGFjbGFzcz1CTm90TWV0YSk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoQk5vdE1ldGEsIHR5cGUoQikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBwcmVwYXJlX2NhbGxzKQotICAgICAgICBwcmVwYXJlX2NhbGxzWzpdID0gW10KKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAKICAgICAgICAgY2xhc3MgQyhBLCBCKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShDKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIHByZXBhcmVfY2FsbHMpCi0gICAgICAgIHByZXBhcmVfY2FsbHNbOl0gPSBbXQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKIAogICAgICAgICBjbGFzcyBDMihCLCBBKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShDMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBwcmVwYXJlX2NhbGxzKQotICAgICAgICBwcmVwYXJlX2NhbGxzWzpdID0gW10KKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCiAKICAgICAgICAgIyBUaGlzIGlzIGEgVHlwZUVycm9yLCBiZWNhdXNlIG9mIGEgbWV0YWNsYXNzIGNvbmZsaWN0OgogICAgICAgICAjIEJOb3RNZXRhIGlzIG5laXRoZXIgYSBzdWJjbGFzcywgbm9yIGEgc3VwZXJjbGFzcyBvZiB0eXBlCkBAIC03NjcsMjUgKzc2NywyNSBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSwgbmV3X2NhbGxzKQotICAgICAgICBuZXdfY2FsbHNbOl0gPSBbXQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSwgcHJlcGFyZV9jYWxscykKLSAgICAgICAgcHJlcGFyZV9jYWxsc1s6XSA9IFtdCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQogCiAgICAgICAgIGNsYXNzIEYob2JqZWN0KCksIEMpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEYpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSwgbmV3X2NhbGxzKQotICAgICAgICBuZXdfY2FsbHNbOl0gPSBbXQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSwgcHJlcGFyZV9jYWxscykKLSAgICAgICAgcHJlcGFyZV9jYWxsc1s6XSA9IFtdCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQogCiAgICAgICAgIGNsYXNzIEYyKEMsIG9iamVjdCgpKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShGMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBwcmVwYXJlX2NhbGxzKQotICAgICAgICBwcmVwYXJlX2NhbGxzWzpdID0gW10KKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCiAKICAgICAgICAgIyBUeXBlRXJyb3I6IEJOb3RNZXRhIGlzIG5laXRoZXIgYQogICAgICAgICAjIHN1YmNsYXNzLCBub3IgYSBzdXBlcmNsYXNzIG9mIGludApAQCAtMTQ0NCw2ICsxNDQ0LDE0IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoImNsYXNzbWV0aG9kIHNob3VsZG4ndCBhY2NlcHQga2V5d29yZCBhcmdzIikKIAorICAgICAgICBjbSA9IGNsYXNzbWV0aG9kKGYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uX19kaWN0X18sIHt9KQorICAgICAgICBjbS54ID0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS54LCA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5fX2RpY3RfXywgeyJ4IiA6IDQyfSkKKyAgICAgICAgZGVsIGNtLngKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGNtLCAieCIpKQorCiAgICAgQHN1cHBvcnQuaW1wbF9kZXRhaWwoInRoZSBtb2R1bGUgJ3h4c3VidHlwZScgaXMgaW50ZXJuYWwiKQogICAgIGRlZiB0ZXN0X2NsYXNzbWV0aG9kc19pbl9jKHNlbGYpOgogICAgICAgICAjIFRlc3RpbmcgQy1iYXNlZCBjbGFzcyBtZXRob2RzLi4uCkBAIC0xNDkxLDYgKzE0OTksMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmdvbygxKSwgKDEsKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmZvbygxKSwgKGQsIDEpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQuZm9vKGQsIDEpLCAoZCwgMSkpCisgICAgICAgIHNtID0gc3RhdGljbWV0aG9kKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc20uX19kaWN0X18sIHt9KQorICAgICAgICBzbS54ID0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbS54LCA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbS5fX2RpY3RfXywgeyJ4IiA6IDQyfSkKKyAgICAgICAgZGVsIHNtLngKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKHNtLCAieCIpKQogCiAgICAgQHN1cHBvcnQuaW1wbF9kZXRhaWwoInRoZSBtb2R1bGUgJ3h4c3VidHlwZScgaXMgaW50ZXJuYWwiKQogICAgIGRlZiB0ZXN0X3N0YXRpY21ldGhvZHNfaW5fYyhzZWxmKToKQEAgLTE3NzEsNiArMTc4Niw3IEBACiAgICAgICAgICAgICAoIl9fZm9ybWF0X18iLCBmb3JtYXQsIGZvcm1hdF9pbXBsLCBzZXQoKSwge30pLAogICAgICAgICAgICAgKCJfX2Zsb29yX18iLCBtYXRoLmZsb29yLCB6ZXJvLCBzZXQoKSwge30pLAogICAgICAgICAgICAgKCJfX3RydW5jX18iLCBtYXRoLnRydW5jLCB6ZXJvLCBzZXQoKSwge30pLAorICAgICAgICAgICAgKCJfX3RydW5jX18iLCBpbnQsIHplcm8sIHNldCgpLCB7fSksCiAgICAgICAgICAgICAoIl9fY2VpbF9fIiwgbWF0aC5jZWlsLCB6ZXJvLCBzZXQoKSwge30pLAogICAgICAgICAgICAgKCJfX2Rpcl9fIiwgZGlyLCBlbXB0eV9zZXEsIHNldCgpLCB7fSksCiAgICAgICAgICAgICBdCkBAIC0xODE2LDEyICsxODMyLDcgQEAKICAgICAgICAgICAgIGZvciBhdHRyLCBvYmogaW4gZW52Lml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgc2V0YXR0cihYLCBhdHRyLCBvYmopCiAgICAgICAgICAgICBzZXRhdHRyKFgsIG5hbWUsIEVyckRlc2NyKCkpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcnVubmVyKFgoKSkKLSAgICAgICAgICAgIGV4Y2VwdCBNeUV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiezAhcn0gZGlkbid0IHJhaXNlIi5mb3JtYXQobmFtZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhNeUV4Y2VwdGlvbiwgcnVubmVyLCBYKCkpCiAKICAgICBkZWYgdGVzdF9zcGVjaWFscyhzZWxmKToKICAgICAgICAgIyBUZXN0aW5nIHNwZWNpYWwgb3BlcmF0b3JzLi4uCkBAIC0yMjU4LDkgKzIyNjksNiBAQAogICAgICAgICAjIFR3byBlc3NlbnRpYWxseSBmZWF0dXJlbGVzcyBvYmplY3RzLCBqdXN0IGluaGVyaXRpbmcgc3R1ZmYgZnJvbQogICAgICAgICAjIG9iamVjdC4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXIoTm90SW1wbGVtZW50ZWQpLCBkaXIoRWxsaXBzaXMpKQotICAgICAgICBpZiBzdXBwb3J0LmNoZWNrX2ltcGxfZGV0YWlsKCk6Ci0gICAgICAgICAgICAjIE5vbmUgZGlmZmVycyBpbiBQeVB5OiBpdCBoYXMgYSBfX25vbnplcm9fXwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXIoTm9uZSksIGRpcihFbGxpcHNpcykpCiAKICAgICAgICAgIyBOYXN0eSB0ZXN0IGNhc2UgZm9yIHByb3hpZWQgb2JqZWN0cwogICAgICAgICBjbGFzcyBXcmFwcGVyKG9iamVjdCk6CkBAIC00NDU2LDYgKzQ0NjQsNjIgQEAKICAgICAgICAgeC55ID0gNDIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4WyJ5Il0sIDQyKQogCisgICAgZGVmIHRlc3Rfc2xvdF9zaGFkb3dzX2NsYXNzX3ZhcmlhYmxlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgICAgICBfX3Nsb3RzX18gPSBbImZvbyJdCisgICAgICAgICAgICAgICAgZm9vID0gTm9uZQorICAgICAgICBtID0gc3RyKGNtLmV4Y2VwdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiJ2ZvbycgaW4gX19zbG90c19fIGNvbmZsaWN0cyB3aXRoIGNsYXNzIHZhcmlhYmxlIiwgbSkKKworICAgIGRlZiB0ZXN0X3NldF9kb2Moc2VsZik6CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICAiZWxlcGhhbnQiCisgICAgICAgIFguX19kb2NfXyA9ICJiYW5hbmEiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWC5fX2RvY19fLCAiYmFuYW5hIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgdHlwZShsaXN0KS5fX2RpY3RfX1siX19kb2NfXyJdLl9fc2V0X18obGlzdCwgImJsYWgiKQorICAgICAgICBzZWxmLmFzc2VydEluKCJjYW4ndCBzZXQgbGlzdC5fX2RvY19fIiwgc3RyKGNtLmV4Y2VwdGlvbikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHR5cGUoWCkuX19kaWN0X19bIl9fZG9jX18iXS5fX2RlbGV0ZV9fKFgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oImNhbid0IGRlbGV0ZSBYLl9fZG9jX18iLCBzdHIoY20uZXhjZXB0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChYLl9fZG9jX18sICJiYW5hbmEiKQorCisgICAgZGVmIHRlc3RfcXVhbG5hbWUoc2VsZik6CisgICAgICAgIGRlc2NyaXB0b3JzID0gW3N0ci5sb3dlciwgY29tcGxleC5yZWFsLCBmbG9hdC5yZWFsLCBpbnQuX19hZGRfX10KKyAgICAgICAgdHlwZXMgPSBbJ21ldGhvZCcsICdtZW1iZXInLCAnZ2V0c2V0JywgJ3dyYXBwZXInXQorCisgICAgICAgICMgbWFrZSBzdXJlIHdlIGhhdmUgYW4gZXhhbXBsZSBvZiBlYWNoIHR5cGUgb2YgZGVzY3JpcHRvcgorICAgICAgICBmb3IgZCwgbiBpbiB6aXAoZGVzY3JpcHRvcnMsIHR5cGVzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShkKS5fX25hbWVfXywgbiArICdfZGVzY3JpcHRvcicpCisKKyAgICAgICAgZm9yIGQgaW4gZGVzY3JpcHRvcnM6CisgICAgICAgICAgICBxdWFsbmFtZSA9IGQuX19vYmpjbGFzc19fLl9fcXVhbG5hbWVfXyArICcuJyArIGQuX19uYW1lX18KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5fX3F1YWxuYW1lX18sIHF1YWxuYW1lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyLmxvd2VyLl9fcXVhbG5hbWVfXywgJ3N0ci5sb3dlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxleC5yZWFsLl9fcXVhbG5hbWVfXywgJ2NvbXBsZXgucmVhbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQucmVhbC5fX3F1YWxuYW1lX18sICdmbG9hdC5yZWFsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQuX19hZGRfXy5fX3F1YWxuYW1lX18sICdpbnQuX19hZGRfXycpCisKKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgZGVsIFguX19xdWFsbmFtZV9fCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0eXBlLl9fZGljdF9fWydfX3F1YWxuYW1lX18nXS5fX3NldF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIsICdPaW5rJykKKworICAgIGRlZiB0ZXN0X3F1YWxuYW1lX2RpY3Qoc2VsZik6CisgICAgICAgIG5zID0geydfX3F1YWxuYW1lX18nOiAnc29tZS5uYW1lJ30KKyAgICAgICAgdHAgPSB0eXBlKCdGb28nLCAoKSwgbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHAuX19xdWFsbmFtZV9fLCAnc29tZS5uYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignX19xdWFsbmFtZV9fJywgdHAuX19kaWN0X18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMsIHsnX19xdWFsbmFtZV9fJzogJ3NvbWUubmFtZSd9KQorCisgICAgICAgIG5zID0geydfX3F1YWxuYW1lX18nOiAxfQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHR5cGUsICdGb28nLCAoKSwgbnMpCisKICAgICBkZWYgdGVzdF9jeWNsZV90aHJvdWdoX2RpY3Qoc2VsZik6CiAgICAgICAgICMgU2VlIGJ1ZyAjMTQ2OTYyOQogICAgICAgICBjbGFzcyBYKGRpY3QpOgpAQCAtNDQ3MSw2ICs0NTM1LDI3IEBACiAgICAgICAgIGZvciBvIGluIGdjLmdldF9vYmplY3RzKCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KHR5cGUobyksIFgpCiAKKyAgICBkZWYgdGVzdF9vYmplY3RfbmV3X2FuZF9pbml0X3dpdGhfcGFyYW1ldGVycyhzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzE2ODMzNjgKKyAgICAgICAgY2xhc3MgT3ZlcnJpZGVOZWl0aGVyOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE92ZXJyaWRlTmVpdGhlciwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBPdmVycmlkZU5laXRoZXIsIGt3PTEpCisgICAgICAgIGNsYXNzIE92ZXJyaWRlTmV3OgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBmb28sIGt3PTAsICphcmdzLCAqKmt3ZHMpOgorICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19uZXdfXyhjbHMsICphcmdzLCAqKmt3ZHMpCisgICAgICAgIGNsYXNzIE92ZXJyaWRlSW5pdDoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmb28sIGt3PTAsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgIGNsYXNzIE92ZXJyaWRlQm90aChPdmVycmlkZU5ldywgT3ZlcnJpZGVJbml0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZm9yIGNhc2UgaW4gT3ZlcnJpZGVOZXcsIE92ZXJyaWRlSW5pdCwgT3ZlcnJpZGVCb3RoOgorICAgICAgICAgICAgY2FzZSgxKQorICAgICAgICAgICAgY2FzZSgxLCBrdz0yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjYXNlLCAxLCAyLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjYXNlLCAxLCAyLCBmb289MykKKworCiBjbGFzcyBEaWN0UHJveHlUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CkBAIC00NDc4LDYgKzQ1NjMsOCBAQAogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5DID0gQwogCisgICAgQHVuaXR0ZXN0LnNraXBJZihoYXNhdHRyKHN5cywgJ2dldHRyYWNlJykgYW5kIHN5cy5nZXR0cmFjZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYWNlIGZ1bmN0aW9uIGludHJvZHVjZXMgX19sb2NhbF9fJykKICAgICBkZWYgdGVzdF9pdGVyX2tleXMoc2VsZik6CiAgICAgICAgICMgVGVzdGluZyBkaWN0LXByb3h5IGtleXMuLi4KICAgICAgICAgaXQgPSBzZWxmLkMuX19kaWN0X18ua2V5cygpCkBAIC00NDg1LDggKzQ1NzIsMTAgQEAKICAgICAgICAga2V5cyA9IGxpc3QoaXQpCiAgICAgICAgIGtleXMuc29ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5cywgWydfX2RpY3RfXycsICdfX2RvY19fJywgJ19fbW9kdWxlX18nLAotICAgICAgICAgICAgJ19fd2Vha3JlZl9fJywgJ21ldGgnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fd2Vha3JlZl9fJywgJ21ldGgnXSkKIAorICAgIEB1bml0dGVzdC5za2lwSWYoaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd0cmFjZSBmdW5jdGlvbiBpbnRyb2R1Y2VzIF9fbG9jYWxfXycpCiAgICAgZGVmIHRlc3RfaXRlcl92YWx1ZXMoc2VsZik6CiAgICAgICAgICMgVGVzdGluZyBkaWN0LXByb3h5IHZhbHVlcy4uLgogICAgICAgICBpdCA9IHNlbGYuQy5fX2RpY3RfXy52YWx1ZXMoKQpAQCAtNDQ5NCw2ICs0NTgzLDggQEAKICAgICAgICAgdmFsdWVzID0gbGlzdChpdCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odmFsdWVzKSwgNSkKIAorICAgIEB1bml0dGVzdC5za2lwSWYoaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd0cmFjZSBmdW5jdGlvbiBpbnRyb2R1Y2VzIF9fbG9jYWxfXycpCiAgICAgZGVmIHRlc3RfaXRlcl9pdGVtcyhzZWxmKToKICAgICAgICAgIyBUZXN0aW5nIGRpY3QtcHJveHkgaXRlcml0ZW1zLi4uCiAgICAgICAgIGl0ID0gc2VsZi5DLl9fZGljdF9fLml0ZW1zKCkKQEAgLTQ1MDEsNyArNDU5Miw3IEBACiAgICAgICAgIGtleXMgPSBbaXRlbVswXSBmb3IgaXRlbSBpbiBpdF0KICAgICAgICAga2V5cy5zb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXlzLCBbJ19fZGljdF9fJywgJ19fZG9jX18nLCAnX19tb2R1bGVfXycsCi0gICAgICAgICAgICAnX193ZWFrcmVmX18nLCAnbWV0aCddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX193ZWFrcmVmX18nLCAnbWV0aCddKQogCiAgICAgZGVmIHRlc3RfZGljdF90eXBlX3dpdGhfbWV0YWNsYXNzKHNlbGYpOgogICAgICAgICAjIFRlc3RpbmcgdHlwZSBvZiBfX2RpY3RfXyB3aGVuIG1ldGFjbGFzcyBzZXQuLi4KQEAgLTQ1MTUsMTkgKzQ2MDYsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKEMuX19kaWN0X18pLCB0eXBlKEIuX19kaWN0X18pKQogCiAgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKLSAgICAgICAgIyBUZXN0aW5nIGRpY3RfcHJveHkuX19yZXByX18KLSAgICAgICAgZGVmIHNvcnRlZF9kaWN0X3JlcHIocmVwcl8pOgotICAgICAgICAgICAgIyBHaXZlbiB0aGUgcmVwciBvZiBhIGRpY3QsIHNvcnQgdGhlIGtleXMKLSAgICAgICAgICAgIGFzc2VydCByZXByXy5zdGFydHN3aXRoKCd7JykKLSAgICAgICAgICAgIGFzc2VydCByZXByXy5lbmRzd2l0aCgnfScpCi0gICAgICAgICAgICBrdnMgPSByZXByX1sxOi0xXS5zcGxpdCgnLCAnKQotICAgICAgICAgICAgcmV0dXJuICd7JyArICcsICcuam9pbihzb3J0ZWQoa3ZzKSkgKyAnfScKLSAgICAgICAgZGljdF8gPSB7azogdiBmb3IgaywgdiBpbiBzZWxmLkMuX19kaWN0X18uaXRlbXMoKX0KLSAgICAgICAgcmVwcl8gPSByZXByKHNlbGYuQy5fX2RpY3RfXykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHJfLnN0YXJ0c3dpdGgoJ2RpY3RfcHJveHkoJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXByXy5lbmRzd2l0aCgnKScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZF9kaWN0X3JlcHIocmVwcl9bbGVuKCdkaWN0X3Byb3h5KCcpOi1sZW4oJyknKV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZF9kaWN0X3JlcHIoJ3shcn0nLmZvcm1hdChkaWN0XykpKQorICAgICAgICAjIFRlc3RpbmcgbWFwcGluZ3Byb3h5Ll9fcmVwcl9fLgorICAgICAgICAjIFdlIGNhbid0IGJsaW5kbHkgY29tcGFyZSB3aXRoIHRoZSByZXByIG9mIGFub3RoZXIgZGljdCBhcyBvcmRlcmluZworICAgICAgICAjIG9mIGtleXMgYW5kIHZhbHVlcyBpcyBhcmJpdHJhcnkgYW5kIG1heSBkaWZmZXIuCisgICAgICAgIHIgPSByZXByKHNlbGYuQy5fX2RpY3RfXykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuc3RhcnRzd2l0aCgnbWFwcGluZ3Byb3h5KCcpLCByKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5lbmRzd2l0aCgnKScpLCByKQorICAgICAgICBmb3IgaywgdiBpbiBzZWxmLkMuX19kaWN0X18uaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3shcn06IHshcn0nLmZvcm1hdChrLCB2KSwgcikKIAogCiBjbGFzcyBQVHlwZXNMb25nSW5pdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDU1MiwxMCArNDYzOCwzOCBAQAogICAgICAgICB0eXBlLm1ybyh0dXBsZSkKIAogCitjbGFzcyBNaXNjVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3R5cGVfbG9va3VwX21yb19yZWZlcmVuY2Uoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE0MTk5OiBfUHlUeXBlX0xvb2t1cCgpIGhhcyB0byBrZWVwIGEgc3Ryb25nIHJlZmVyZW5jZSB0bworICAgICAgICAjIHRoZSB0eXBlIE1STyBiZWNhdXNlIGl0IG1heSBiZSBtb2RpZmllZCBkdXJpbmcgdGhlIGxvb2t1cCwgaWYKKyAgICAgICAgIyBfX2Jhc2VzX18gaXMgc2V0IGR1cmluZyB0aGUgbG9va3VwIGZvciBleGFtcGxlLgorICAgICAgICBjbGFzcyBNeUtleShvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBoYXNoKCdteWtleScpCisKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIFguX19iYXNlc19fID0gKEJhc2UyLCkKKworICAgICAgICBjbGFzcyBCYXNlKG9iamVjdCk6CisgICAgICAgICAgICBteWtleSA9ICdmcm9tIEJhc2UnCisgICAgICAgICAgICBteWtleTIgPSAnZnJvbSBCYXNlJworCisgICAgICAgIGNsYXNzIEJhc2UyKG9iamVjdCk6CisgICAgICAgICAgICBteWtleSA9ICdmcm9tIEJhc2UyJworICAgICAgICAgICAgbXlrZXkyID0gJ2Zyb20gQmFzZTInCisKKyAgICAgICAgWCA9IHR5cGUoJ1gnLCAoQmFzZSwpLCB7TXlLZXkoKTogNX0pCisgICAgICAgICMgbXlrZXkgaXMgcmVhZCBmcm9tIEJhc2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChYLm15a2V5LCAnZnJvbSBCYXNlJykKKyAgICAgICAgIyBteWtleTIgaXMgcmVhZCBmcm9tIEJhc2UyIGJlY2F1c2UgTXlLZXkuX19lcV9fIGhhcyBzZXQgX19iYXNlc19fCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWC5teWtleTIsICdmcm9tIEJhc2UyJykKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgIyBSdW4gYWxsIGxvY2FsIHRlc3QgY2FzZXMsIHdpdGggUFR5cGVzTG9uZ0luaXRUZXN0IGZpcnN0LgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBUeXBlc0xvbmdJbml0VGVzdCwgT3BlcmF0b3JzVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzUHJvcGVydGllc0FuZE1ldGhvZHMsIERpY3RQcm94eVRlc3RzKQorICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzUHJvcGVydGllc0FuZE1ldGhvZHMsIERpY3RQcm94eVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgIE1pc2NUZXN0cykKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weSBiL0xpYi90ZXN0L3Rlc3RfZGVzY3J0dXQucHkKaW5kZXggMGNmMzFmNS4uNTA2ZDFhYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rlc2NydHV0LnB5CkBAIC0xNzAsNiArMTcwLDcgQEAKICAgICAgJ19fY29udGFpbnNfXycsCiAgICAgICdfX2RlbGF0dHJfXycsCiAgICAgICdfX2RlbGl0ZW1fXycsCisgICAgICdfX2Rpcl9fJywKICAgICAgJ19fZG9jX18nLAogICAgICAnX19lcV9fJywKICAgICAgJ19fZm9ybWF0X18nLApAQCAtMTk5LDYgKzIwMCw4IEBACiAgICAgICdfX3N0cl9fJywKICAgICAgJ19fc3ViY2xhc3Nob29rX18nLAogICAgICAnYXBwZW5kJywKKyAgICAgJ2NsZWFyJywKKyAgICAgJ2NvcHknLAogICAgICAnY291bnQnLAogICAgICAnZXh0ZW5kJywKICAgICAgJ2luZGV4JywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGV2cG9sbC5weSBiL0xpYi90ZXN0L3Rlc3RfZGV2cG9sbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWY0ZTE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXZwb2xsLnB5CkBAIC0wLDAgKzEsOTQgQEAKKyMgVGVzdCBjYXNlIGZvciB0aGUgc2VsZWN0LmRldnBvbGwoKSBmdW5jdGlvbgorCisjIEluaXRpYWwgdGVzdHMgYXJlIGNvcGllZCBhcyBpcyBmcm9tICJ0ZXN0X3BvbGwucHkiCisKK2ltcG9ydCBvcywgc2VsZWN0LCByYW5kb20sIHVuaXR0ZXN0LCBzeXMKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdAorCit0cnk6CisgICAgc2VsZWN0LmRldnBvbGwKK2V4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgic2VsZWN0LmRldnBvbGwgbm90IGRlZmluZWQgLS0gc2tpcHBpbmcgdGVzdF9kZXZwb2xsIikKKworCitkZWYgZmluZF9yZWFkeV9tYXRjaGluZyhyZWFkeSwgZmxhZyk6CisgICAgbWF0Y2ggPSBbXQorICAgIGZvciBmZCwgbW9kZSBpbiByZWFkeToKKyAgICAgICAgaWYgbW9kZSAmIGZsYWc6CisgICAgICAgICAgICBtYXRjaC5hcHBlbmQoZmQpCisgICAgcmV0dXJuIG1hdGNoCisKK2NsYXNzIERldlBvbGxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9kZXZwb2xsMShzZWxmKToKKyAgICAgICAgIyBCYXNpYyBmdW5jdGlvbmFsIHRlc3Qgb2YgcG9sbCBvYmplY3QKKyAgICAgICAgIyBDcmVhdGUgYSBidW5jaCBvZiBwaXBlIGFuZCB0ZXN0IHRoYXQgcG9sbCB3b3JrcyB3aXRoIHRoZW0uCisKKyAgICAgICAgcCA9IHNlbGVjdC5kZXZwb2xsKCkKKworICAgICAgICBOVU1fUElQRVMgPSAxMgorICAgICAgICBNU0cgPSBiIiBUaGlzIGlzIGEgdGVzdC4iCisgICAgICAgIE1TR19MRU4gPSBsZW4oTVNHKQorICAgICAgICByZWFkZXJzID0gW10KKyAgICAgICAgd3JpdGVycyA9IFtdCisgICAgICAgIHIydyA9IHt9CisgICAgICAgIHcyciA9IHt9CisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoTlVNX1BJUEVTKToKKyAgICAgICAgICAgIHJkLCB3ciA9IG9zLnBpcGUoKQorICAgICAgICAgICAgcC5yZWdpc3RlcihyZCkKKyAgICAgICAgICAgIHAubW9kaWZ5KHJkLCBzZWxlY3QuUE9MTElOKQorICAgICAgICAgICAgcC5yZWdpc3Rlcih3ciwgc2VsZWN0LlBPTExPVVQpCisgICAgICAgICAgICByZWFkZXJzLmFwcGVuZChyZCkKKyAgICAgICAgICAgIHdyaXRlcnMuYXBwZW5kKHdyKQorICAgICAgICAgICAgcjJ3W3JkXSA9IHdyCisgICAgICAgICAgICB3MnJbd3JdID0gcmQKKworICAgICAgICBidWZzID0gW10KKworICAgICAgICB3aGlsZSB3cml0ZXJzOgorICAgICAgICAgICAgcmVhZHkgPSBwLnBvbGwoKQorICAgICAgICAgICAgcmVhZHlfd3JpdGVycyA9IGZpbmRfcmVhZHlfbWF0Y2hpbmcocmVhZHksIHNlbGVjdC5QT0xMT1VUKQorICAgICAgICAgICAgaWYgbm90IHJlYWR5X3dyaXRlcnM6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyBwaXBlcyByZWFkeSBmb3Igd3JpdGluZyIpCisgICAgICAgICAgICB3ciA9IHJhbmRvbS5jaG9pY2UocmVhZHlfd3JpdGVycykKKyAgICAgICAgICAgIG9zLndyaXRlKHdyLCBNU0cpCisKKyAgICAgICAgICAgIHJlYWR5ID0gcC5wb2xsKCkKKyAgICAgICAgICAgIHJlYWR5X3JlYWRlcnMgPSBmaW5kX3JlYWR5X21hdGNoaW5nKHJlYWR5LCBzZWxlY3QuUE9MTElOKQorICAgICAgICAgICAgaWYgbm90IHJlYWR5X3JlYWRlcnM6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyBwaXBlcyByZWFkeSBmb3IgcmVhZGluZyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFt3MnJbd3JdXSwgcmVhZHlfcmVhZGVycykKKyAgICAgICAgICAgIHJkID0gcmVhZHlfcmVhZGVyc1swXQorICAgICAgICAgICAgYnVmID0gb3MucmVhZChyZCwgTVNHX0xFTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGJ1ZiksIE1TR19MRU4pCisgICAgICAgICAgICBidWZzLmFwcGVuZChidWYpCisgICAgICAgICAgICBvcy5jbG9zZShyMndbcmRdKSA7IG9zLmNsb3NlKHJkKQorICAgICAgICAgICAgcC51bnJlZ2lzdGVyKHIyd1tyZF0pCisgICAgICAgICAgICBwLnVucmVnaXN0ZXIocmQpCisgICAgICAgICAgICB3cml0ZXJzLnJlbW92ZShyMndbcmRdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmcywgW01TR10gKiBOVU1fUElQRVMpCisKKyAgICBkZWYgdGVzdF90aW1lb3V0X292ZXJmbG93KHNlbGYpOgorICAgICAgICBwb2xsc3RlciA9IHNlbGVjdC5kZXZwb2xsKCkKKyAgICAgICAgdywgciA9IG9zLnBpcGUoKQorICAgICAgICBwb2xsc3Rlci5yZWdpc3Rlcih3KQorCisgICAgICAgIHBvbGxzdGVyLnBvbGwoLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHBvbGxzdGVyLnBvbGwsIC0yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb2xsc3Rlci5wb2xsLCAtMSA8PCAzMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9sbHN0ZXIucG9sbCwgLTEgPDwgNjQpCisKKyAgICAgICAgcG9sbHN0ZXIucG9sbCgwKQorICAgICAgICBwb2xsc3Rlci5wb2xsKDEpCisgICAgICAgIHBvbGxzdGVyLnBvbGwoMSA8PCAzMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9sbHN0ZXIucG9sbCwgMSA8PCAzMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9sbHN0ZXIucG9sbCwgMSA8PCA2MykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9sbHN0ZXIucG9sbCwgMSA8PCA2NCkKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdChEZXZQb2xsVGVzdHMpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGljdC5weSBiL0xpYi90ZXN0L3Rlc3RfZGljdC5weQppbmRleCA5NjY2ZjlhLi5kMWYzMTkyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0LnB5CkBAIC0yLDcgKzIsOSBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGltcG9ydCBjb2xsZWN0aW9ucywgcmFuZG9tLCBzdHJpbmcKK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKIGltcG9ydCBnYywgd2Vha3JlZgoraW1wb3J0IHBpY2tsZQogCiAKIGNsYXNzIERpY3RUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTMyNyw2ICszMjksMjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoZWQyLmhhc2hfY291bnQsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaGVkMS5lcV9jb3VudCArIGhhc2hlZDIuZXFfY291bnQsIDEpCiAKKyAgICBkZWYgdGVzdF9zZXRpdGVtX2F0b21pY19hdF9yZXNpemUoc2VsZik6CisgICAgICAgIGNsYXNzIEhhc2hlZChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuaGFzaF9jb3VudCA9IDAKKyAgICAgICAgICAgICAgICBzZWxmLmVxX2NvdW50ID0gMAorICAgICAgICAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuaGFzaF9jb3VudCArPSAxCisgICAgICAgICAgICAgICAgcmV0dXJuIDQyCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICBzZWxmLmVxX2NvdW50ICs9IDEKKyAgICAgICAgICAgICAgICByZXR1cm4gaWQoc2VsZikgPT0gaWQob3RoZXIpCisgICAgICAgIGhhc2hlZDEgPSBIYXNoZWQoKQorICAgICAgICAjIDUgaXRlbXMKKyAgICAgICAgeSA9IHtoYXNoZWQxOiA1LCAwOiAwLCAxOiAxLCAyOiAyLCAzOiAzfQorICAgICAgICBoYXNoZWQyID0gSGFzaGVkKCkKKyAgICAgICAgIyA2dGggaXRlbSBmb3JjZXMgYSByZXNpemUKKyAgICAgICAgeVtoYXNoZWQyXSA9IFtdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaGVkMS5oYXNoX2NvdW50LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2hlZDIuaGFzaF9jb3VudCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoZWQxLmVxX2NvdW50ICsgaGFzaGVkMi5lcV9jb3VudCwgMSkKKwogICAgIGRlZiB0ZXN0X3BvcGl0ZW0oc2VsZik6CiAgICAgICAgICMgZGljdC5wb3BpdGVtKCkKICAgICAgICAgZm9yIGNvcHltb2RlIGluIC0xLCArMToKQEAgLTM4Nyw3ICs0MTAsNyBAQAogICAgICAgICB4LmZhaWwgPSBUcnVlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEV4YywgZC5wb3AsIHgpCiAKLSAgICBkZWYgdGVzdF9tdXRhdGluZ2l0ZXJhdGlvbihzZWxmKToKKyAgICBkZWYgdGVzdF9tdXRhdGluZ19pdGVyYXRpb24oc2VsZik6CiAgICAgICAgICMgY2hhbmdpbmcgZGljdCBzaXplIGR1cmluZyBpdGVyYXRpb24KICAgICAgICAgZCA9IHt9CiAgICAgICAgIGRbMV0gPSAxCkBAIC0zOTUsNiArNDE4LDMyIEBACiAgICAgICAgICAgICBmb3IgaSBpbiBkOgogICAgICAgICAgICAgICAgIGRbaSsxXSA9IDEKIAorICAgIGRlZiB0ZXN0X211dGF0aW5nX2xvb2t1cChzZWxmKToKKyAgICAgICAgIyBjaGFuZ2luZyBkaWN0IGR1cmluZyBhIGxvb2t1cCAoaXNzdWUgIzE0NDE3KQorICAgICAgICBjbGFzcyBOYXN0eUtleToKKyAgICAgICAgICAgIG11dGF0ZV9kaWN0ID0gTm9uZQorCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQorCisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgIyBoYXNoIGNvbGxpc2lvbiEKKyAgICAgICAgICAgICAgICByZXR1cm4gMQorCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICBpZiBOYXN0eUtleS5tdXRhdGVfZGljdDoKKyAgICAgICAgICAgICAgICAgICAgbXlkaWN0LCBrZXkgPSBOYXN0eUtleS5tdXRhdGVfZGljdAorICAgICAgICAgICAgICAgICAgICBOYXN0eUtleS5tdXRhdGVfZGljdCA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgZGVsIG15ZGljdFtrZXldCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUgPT0gb3RoZXIudmFsdWUKKworICAgICAgICBrZXkxID0gTmFzdHlLZXkoMSkKKyAgICAgICAga2V5MiA9IE5hc3R5S2V5KDIpCisgICAgICAgIGQgPSB7a2V5MTogMX0KKyAgICAgICAgTmFzdHlLZXkubXV0YXRlX2RpY3QgPSAoZCwga2V5MSkKKyAgICAgICAgZFtrZXkyXSA9IDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCB7a2V5MjogMn0pCisKICAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgogICAgICAgICBkID0ge30KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGQpLCAne30nKQpAQCAtNzg0LDYgKzgzMyw3NSBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLl90cmFja2VkKE15RGljdCgpKQogCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xpbmcoc2VsZik6CisgICAgICAgIGRhdGEgPSB7MToiYSIsIDI6ImIiLCAzOiJjIn0KKyAgICAgICAgaXQgPSBpdGVyKGRhdGEpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGl0KSwgc29ydGVkKGRhdGEpKQorCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRyb3AgPSBuZXh0KGl0KQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBkZWwgZGF0YVtkcm9wXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChpdCksIHNvcnRlZChkYXRhKSkKKworICAgIGRlZiB0ZXN0X2l0ZW1pdGVyYXRvcl9waWNrbGluZyhzZWxmKToKKyAgICAgICAgZGF0YSA9IHsxOiJhIiwgMjoiYiIsIDM6ImMifQorICAgICAgICAjIGRpY3R2aWV3cyBhcmVuJ3QgcGlja2xhYmxlLCBvbmx5IHRoZWlyIGl0ZXJhdG9ycworICAgICAgICBpdG9yZyA9IGl0ZXIoZGF0YS5pdGVtcygpKQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0b3JnKQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAjIG5vdGUgdGhhdCB0aGUgdHlwZSBvZiB0eXBlIG9mIHRoZSB1bnBpY2tsZWQgaXRlcmF0b3IKKyAgICAgICAgIyBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgdGhlIG9yaWdpbmFsLiAgSXQgaXMKKyAgICAgICAgIyBtZXJlbHkgYW4gb2JqZWN0IHN1cHBvcnRpbmcgdGhlIGl0ZXJhdG9yIHByb3RvY29sLCB5aWVsZGluZworICAgICAgICAjIHRoZSBzYW1lIG9iamVjdHMgYXMgdGhlIG9yaWdpbmFsIG9uZS4KKyAgICAgICAgIyBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoaXQsIGNvbGxlY3Rpb25zLmFiYy5JdGVyYXRvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdChpdCksIGRhdGEpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgZHJvcCA9IG5leHQoaXQpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIGRlbCBkYXRhW2Ryb3BbMF1dCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdChpdCksIGRhdGEpCisKKyAgICBkZWYgdGVzdF92YWx1ZXNpdGVyYXRvcl9waWNrbGluZyhzZWxmKToKKyAgICAgICAgZGF0YSA9IHsxOiJhIiwgMjoiYiIsIDM6ImMifQorICAgICAgICAjIGRhdGEudmFsdWVzKCkgaXNuJ3QgcGlja2xhYmxlLCBvbmx5IGl0cyBpdGVyYXRvcgorICAgICAgICBpdCA9IGl0ZXIoZGF0YS52YWx1ZXMoKSkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQobGlzdChpdCkpLCBzb3J0ZWQobGlzdChkYXRhLnZhbHVlcygpKSkpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgZHJvcCA9IG5leHQoaXQpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHZhbHVlcyA9IGxpc3QoaXQpICsgW2Ryb3BdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHZhbHVlcyksIHNvcnRlZChsaXN0KGRhdGEudmFsdWVzKCkpKSkKKworICAgIGRlZiB0ZXN0X2luc3RhbmNlX2RpY3RfZ2V0YXR0cl9zdHJfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIEZvbzoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtc2cpOgorICAgICAgICAgICAgICAgIHNlbGYubXNnID0gbXNnCisgICAgICAgIGYgPSBGb28oJzEyMycpCisgICAgICAgIGNsYXNzIF9zdHIoc3RyKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLm1zZywgZ2V0YXR0cihmLCBfc3RyKCdtc2cnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5tc2csIGYuX19kaWN0X19bX3N0cignbXNnJyldKQorCisgICAgZGVmIHRlc3Rfb2JqZWN0X3NldF9pdGVtX3NpbmdsZV9pbnN0YW5jZV9ub25fc3RyX2tleShzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vOiBwYXNzCisgICAgICAgIGYgPSBGb28oKQorICAgICAgICBmLl9fZGljdF9fWzFdID0gMQorICAgICAgICBmLmEgPSAnYScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLl9fZGljdF9fLCB7MToxLCAnYSc6J2EnfSkKIAogZnJvbSB0ZXN0IGltcG9ydCBtYXBwaW5nX3Rlc3RzCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGljdGNvbXBzLnB5IGIvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKaW5kZXggNWExOTMxOS4uM2M4Yjk1YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKQEAgLTg0LDggKzg0LDUgQEAKICAgICAgICAgICAgICAgICAgICAgImV4ZWMiKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaXMucHkgYi9MaWIvdGVzdC90ZXN0X2Rpcy5weQppbmRleCA1YzU5ZWFhLi4xYmNkNjkzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Rpcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rpcy5weQpAQCAtMSwxMSArMSwzNSBAQAogIyBNaW5pbWFsIHRlc3RzIGZvciBkaXMgbW9kdWxlCiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGNhcHR1cmVkX3N0ZG91dAoraW1wb3J0IGRpZmZsaWIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IGRpcwogaW1wb3J0IGlvCiAKK2NsYXNzIF9DOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4KToKKyAgICAgICAgc2VsZi54ID0geCA9PSAxCisKK2Rpc19jX2luc3RhbmNlX21ldGhvZCA9ICIiIlwKKyAlLTRkICAgICAgICAgMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAoeCkKKyAgICAgICAgICAgICAgMyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAgNiBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCisgICAgICAgICAgICAgIDkgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKHNlbGYpCisgICAgICAgICAgICAgMTIgU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgMTUgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgICAgICAgMTggUkVUVVJOX1ZBTFVFCisiIiIgJSAoX0MuX19pbml0X18uX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAxLCkKKworZGlzX2NfaW5zdGFuY2VfbWV0aG9kX2J5dGVzID0gIiIiXAorICAgICAgICAgIDAgTE9BRF9GQVNUICAgICAgICAgICAxICgxKQorICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAxICgxKQorICAgICAgICAgIDYgQ09NUEFSRV9PUCAgICAgICAgICAyICg9PSkKKyAgICAgICAgICA5IExPQURfRkFTVCAgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDEyIFNUT1JFX0FUVFIgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDE1IExPQURfQ09OU1QgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDE4IFJFVFVSTl9WQUxVRQorIiIiCiAKIGRlZiBfZihhKToKICAgICBwcmludChhKQpAQCAtMTQsNyArMzgsNyBAQAogZGlzX2YgPSAiIiJcCiAgJS00ZCAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKHByaW50KQogICAgICAgICAgICAgICAzIExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChhKQotICAgICAgICAgICAgICA2IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCisgICAgICAgICAgICAgIDYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEgKDEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCiAgICAgICAgICAgICAgIDkgUE9QX1RPUAogCiAgJS00ZCAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCkBAIC0yMyw2ICs0NywxNiBAQAogICAgICAgIF9mLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMikKIAogCitkaXNfZl9jb19jb2RlID0gIiIiXAorICAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAwICgwKQorICAgICAgICAgIDMgTE9BRF9GQVNUICAgICAgICAgICAwICgwKQorICAgICAgICAgIDYgQ0FMTF9GVU5DVElPTiAgICAgICAxICgxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyKQorICAgICAgICAgIDkgUE9QX1RPUAorICAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAxICgxKQorICAgICAgICAgMTMgUkVUVVJOX1ZBTFVFCisiIiIKKworCiBkZWYgYnVnNzA4OTAxKCk6CiAgICAgZm9yIHJlcyBpbiByYW5nZSgxLAogICAgICAgICAgICAgICAgICAgICAgMTApOgpAQCAtMzQsNyArNjgsNyBAQAogICAgICAgICAgICAgICA2IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQogCiAgJS00ZCAgICAgICAgIDkgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDEwKQotICAgICAgICAgICAgIDEyIENBTExfRlVOQ1RJT04gICAgICAgICAgICAyCisgICAgICAgICAgICAgMTIgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDIgKDIgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCiAgICAgICAgICAgICAgMTUgR0VUX0lURVIKICAgICAgICAgPj4gICAxNiBGT1JfSVRFUiAgICAgICAgICAgICAgICAgNiAodG8gMjUpCiAgICAgICAgICAgICAgMTkgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKHJlcykKQEAgLTEzOCwxOCArMTcyLDI3IEBACiAiIiIKIAogY2xhc3MgRGlzVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBkb19kaXNhc3NlbWJseV90ZXN0KHNlbGYsIGZ1bmMsIGV4cGVjdGVkKToKKworICAgIGRlZiBnZXRfZGlzYXNzZW1ibHkoc2VsZiwgZnVuYywgbGFzdGk9LTEsIHdyYXBwZXI9VHJ1ZSk6CiAgICAgICAgIHMgPSBpby5TdHJpbmdJTygpCiAgICAgICAgIHNhdmVfc3Rkb3V0ID0gc3lzLnN0ZG91dAogICAgICAgICBzeXMuc3Rkb3V0ID0gcwotICAgICAgICBkaXMuZGlzKGZ1bmMpCi0gICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlX3N0ZG91dAotICAgICAgICBnb3QgPSBzLmdldHZhbHVlKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgd3JhcHBlcjoKKyAgICAgICAgICAgICAgICBkaXMuZGlzKGZ1bmMpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRpcy5kaXNhc3NlbWJsZShmdW5jLCBsYXN0aSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlX3N0ZG91dAogICAgICAgICAjIFRyaW0gdHJhaWxpbmcgYmxhbmtzIChpZiBhbnkpLgotICAgICAgICBsaW5lcyA9IGdvdC5zcGxpdCgnXG4nKQotICAgICAgICBsaW5lcyA9IFtsaW5lLnJzdHJpcCgpIGZvciBsaW5lIGluIGxpbmVzXQotICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGVkLnNwbGl0KCJcbiIpCi0gICAgICAgIGltcG9ydCBkaWZmbGliCisgICAgICAgIHJldHVybiBbbGluZS5yc3RyaXAoKSBmb3IgbGluZSBpbiBzLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpXQorCisgICAgZGVmIGdldF9kaXNhc3NlbWJsZV9hc19zdHJpbmcoc2VsZiwgZnVuYywgbGFzdGk9LTEpOgorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKHNlbGYuZ2V0X2Rpc2Fzc2VtYmx5KGZ1bmMsIGxhc3RpLCBGYWxzZSkpCisKKyAgICBkZWYgZG9fZGlzYXNzZW1ibHlfdGVzdChzZWxmLCBmdW5jLCBleHBlY3RlZCk6CisgICAgICAgIGxpbmVzID0gc2VsZi5nZXRfZGlzYXNzZW1ibHkoZnVuYykKKyAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5zcGxpdGxpbmVzKCkKICAgICAgICAgaWYgZXhwZWN0ZWQgIT0gbGluZXM6CiAgICAgICAgICAgICBzZWxmLmZhaWwoCiAgICAgICAgICAgICAgICAgImV2ZW50cyBkaWQgbm90IG1hdGNoIGV4cGVjdGF0aW9uOlxuIiArCkBAIC0xNTcsNyArMjAwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcykpKQogCiAgICAgZGVmIHRlc3Rfb3BtYXAoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzLm9wbWFwWyJTVE9QX0NPREUiXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXMub3BtYXBbIk5PUCJdLCA5KQogICAgICAgICBzZWxmLmFzc2VydEluKGRpcy5vcG1hcFsiTE9BRF9DT05TVCJdLCBkaXMuaGFzY29uc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZGlzLm9wbWFwWyJTVE9SRV9OQU1FIl0sIGRpcy5oYXNuYW1lKQogCkBAIC0yMTEsNiArMjU0LDQ0IEBACiAgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChzaW1wbGVfc3RtdF9zdHIsIGRpc19zaW1wbGVfc3RtdF9zdHIpCiAgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChjb21wb3VuZF9zdG10X3N0ciwgZGlzX2NvbXBvdW5kX3N0bXRfc3RyKQogCisgICAgZGVmIHRlc3RfZGlzYXNzZW1ibGVfYnl0ZXMoc2VsZik6CisgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChfZi5fX2NvZGVfXy5jb19jb2RlLCBkaXNfZl9jb19jb2RlKQorCisgICAgZGVmIHRlc3RfZGlzYXNzZW1ibGVfbWV0aG9kKHNlbGYpOgorICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QoX0MoMSkuX19pbml0X18sIGRpc19jX2luc3RhbmNlX21ldGhvZCkKKworICAgIGRlZiB0ZXN0X2Rpc2Fzc2VtYmxlX21ldGhvZF9ieXRlcyhzZWxmKToKKyAgICAgICAgbWV0aG9kX2J5dGVjb2RlID0gX0MoMSkuX19pbml0X18uX19jb2RlX18uY29fY29kZQorICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QobWV0aG9kX2J5dGVjb2RlLCBkaXNfY19pbnN0YW5jZV9tZXRob2RfYnl0ZXMpCisKKyAgICBkZWYgdGVzdF9kaXNfbm9uZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVsIHN5cy5sYXN0X3RyYWNlYmFjaworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgZGlzLmRpcywgTm9uZSkKKworICAgIGRlZiB0ZXN0X2Rpc19vYmplY3Qoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZGlzLmRpcywgb2JqZWN0KCkpCisKKyAgICBkZWYgdGVzdF9kaXNfdHJhY2ViYWNrKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBkZWwgc3lzLmxhc3RfdHJhY2ViYWNrCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAxLzAKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgICAgIHN5cy5sYXN0X3RyYWNlYmFjayA9IHRiCisKKyAgICAgICAgdGJfZGlzID0gc2VsZi5nZXRfZGlzYXNzZW1ibGVfYXNfc3RyaW5nKHRiLnRiX2ZyYW1lLmZfY29kZSwgdGIudGJfbGFzdGkpCisgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChOb25lLCB0Yl9kaXMpCisKKyAgICBkZWYgdGVzdF9kaXNfb2JqZWN0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRpcy5kaXMsIG9iamVjdCgpKQorCiBjb2RlX2luZm9fY29kZV9pbmZvID0gIiIiXAogTmFtZTogICAgICAgICAgICAgIGNvZGVfaW5mbwogRmlsZW5hbWU6ICAgICAgICAgICguKikKQEAgLTI1OCw2ICszMzksNyBAQAogQ29uc3RhbnRzOgogICAgMDogTm9uZQogICAgMTogPGNvZGUgb2JqZWN0IGYgYXQgKC4qKSwgZmlsZSAiKC4qKSIsIGxpbmUgKC4qKT4KKyAgIDI6ICd0cmlja3kuPGxvY2Fscz4uZicKIFZhcmlhYmxlIG5hbWVzOgogICAgMDogeAogICAgMTogeQpAQCAtMzY0LDYgKzQ0NiwxMyBAQAogICAgICAgICAgICAgICAgIGRpcy5zaG93X2NvZGUoeCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0cHV0LmdldHZhbHVlKCksIGV4cGVjdGVkKyJcbiIpCiAKKyAgICBkZWYgdGVzdF9jb2RlX2luZm9fb2JqZWN0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRpcy5jb2RlX2luZm8sIG9iamVjdCgpKQorCisgICAgZGVmIHRlc3RfcHJldHR5X2ZsYWdzX25vX2ZsYWdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcy5wcmV0dHlfZmxhZ3MoMCksICcweDAnKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoRGlzVGVzdHMsIENvZGVJbmZvVGVzdHMpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weSBiL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weQppbmRleCBhNmMxN2NjLi44ZjhjN2M3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5CkBAIC01LDYgKzUsNyBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgZG9jdGVzdAogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiAKIAogIyBOT1RFOiBUaGVyZSBhcmUgc29tZSBhZGRpdGlvbmFsIHRlc3RzIHJlbGF0aW5nIHRvIGludGVyYWN0aW9uIHdpdGgKQEAgLTQzMiw3ICs0MzMsNyBAQAogICAgID4+PiB0ZXN0cyA9IGZpbmRlci5maW5kKHNhbXBsZV9mdW5jKQogCiAgICAgPj4+IHByaW50KHRlc3RzKSAgIyBkb2N0ZXN0OiArRUxMSVBTSVMKLSAgICBbPERvY1Rlc3Qgc2FtcGxlX2Z1bmMgZnJvbSAuLi46MTcgKDEgZXhhbXBsZSk+XQorICAgIFs8RG9jVGVzdCBzYW1wbGVfZnVuYyBmcm9tIC4uLjoxOCAoMSBleGFtcGxlKT5dCiAKIFRoZSBleGFjdCBuYW1lIGRlcGVuZHMgb24gaG93IHRlc3RfZG9jdGVzdCB3YXMgaW52b2tlZCwgc28gYWxsb3cgZm9yCiBsZWFkaW5nIHBhdGggY29tcG9uZW50cy4KQEAgLTE3NDUsMjI2ICsxNzQ2LDIyNyBAQAogCiAiIiIKIAotZGVmIHRlc3RfcGRiX3NldF90cmFjZSgpOgotICAgICIiIlVzaW5nIHBkYi5zZXRfdHJhY2UgZnJvbSBhIGRvY3Rlc3QuCitpZiBub3QgaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIG9yIG5vdCBzeXMuZ2V0dHJhY2UoKToKKyAgICBkZWYgdGVzdF9wZGJfc2V0X3RyYWNlKCk6CisgICAgICAgICIiIlVzaW5nIHBkYi5zZXRfdHJhY2UgZnJvbSBhIGRvY3Rlc3QuCiAKLSAgICBZb3UgY2FuIHVzZSBwZGIuc2V0X3RyYWNlIGZyb20gYSBkb2N0ZXN0LiAgVG8gZG8gc28sIHlvdSBtdXN0Ci0gICAgcmV0cmlldmUgdGhlIHNldF90cmFjZSBmdW5jdGlvbiBmcm9tIHRoZSBwZGIgbW9kdWxlIGF0IHRoZSB0aW1lCi0gICAgeW91IHVzZSBpdC4gIFRoZSBkb2N0ZXN0IG1vZHVsZSBjaGFuZ2VzIHN5cy5zdGRvdXQgc28gdGhhdCBpdCBjYW4KLSAgICBjYXB0dXJlIHByb2dyYW0gb3V0cHV0LiAgSXQgYWxzbyB0ZW1wb3JhcmlseSByZXBsYWNlcyBwZGIuc2V0X3RyYWNlCi0gICAgd2l0aCBhIHZlcnNpb24gdGhhdCByZXN0b3JlcyBzdGRvdXQuICBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgeW91IHRvCi0gICAgc2VlIGRlYnVnZ2VyIG91dHB1dC4KKyAgICAgICAgWW91IGNhbiB1c2UgcGRiLnNldF90cmFjZSBmcm9tIGEgZG9jdGVzdC4gIFRvIGRvIHNvLCB5b3UgbXVzdAorICAgICAgICByZXRyaWV2ZSB0aGUgc2V0X3RyYWNlIGZ1bmN0aW9uIGZyb20gdGhlIHBkYiBtb2R1bGUgYXQgdGhlIHRpbWUKKyAgICAgICAgeW91IHVzZSBpdC4gIFRoZSBkb2N0ZXN0IG1vZHVsZSBjaGFuZ2VzIHN5cy5zdGRvdXQgc28gdGhhdCBpdCBjYW4KKyAgICAgICAgY2FwdHVyZSBwcm9ncmFtIG91dHB1dC4gIEl0IGFsc28gdGVtcG9yYXJpbHkgcmVwbGFjZXMgcGRiLnNldF90cmFjZQorICAgICAgICB3aXRoIGEgdmVyc2lvbiB0aGF0IHJlc3RvcmVzIHN0ZG91dC4gIFRoaXMgaXMgbmVjZXNzYXJ5IGZvciB5b3UgdG8KKyAgICAgICAgc2VlIGRlYnVnZ2VyIG91dHB1dC4KIAotICAgICAgPj4+IGRvYyA9ICcnJwotICAgICAgLi4uID4+PiB4ID0gNDIKLSAgICAgIC4uLiA+Pj4gcmFpc2UgRXhjZXB0aW9uKCdjbMOpJykKLSAgICAgIC4uLiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAuLi4gRXhjZXB0aW9uOiBjbMOpCi0gICAgICAuLi4gPj4+IGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQotICAgICAgLi4uICcnJwotICAgICAgPj4+IHBhcnNlciA9IGRvY3Rlc3QuRG9jVGVzdFBhcnNlcigpCi0gICAgICA+Pj4gdGVzdCA9IHBhcnNlci5nZXRfZG9jdGVzdChkb2MsIHt9LCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQotICAgICAgPj4+IHJ1bm5lciA9IGRvY3Rlc3QuRG9jVGVzdFJ1bm5lcih2ZXJib3NlPUZhbHNlKQorICAgICAgICAgID4+PiBkb2MgPSAnJycKKyAgICAgICAgICAuLi4gPj4+IHggPSA0MgorICAgICAgICAgIC4uLiA+Pj4gcmFpc2UgRXhjZXB0aW9uKCdjbMOpJykKKyAgICAgICAgICAuLi4gVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgIC4uLiBFeGNlcHRpb246IGNsw6kKKyAgICAgICAgICAuLi4gPj4+IGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQorICAgICAgICAgIC4uLiAnJycKKyAgICAgICAgICA+Pj4gcGFyc2VyID0gZG9jdGVzdC5Eb2NUZXN0UGFyc2VyKCkKKyAgICAgICAgICA+Pj4gdGVzdCA9IHBhcnNlci5nZXRfZG9jdGVzdChkb2MsIHt9LCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQorICAgICAgICAgID4+PiBydW5uZXIgPSBkb2N0ZXN0LkRvY1Rlc3RSdW5uZXIodmVyYm9zZT1GYWxzZSkKIAotICAgIFRvIGRlbW9uc3RyYXRlIHRoaXMsIHdlJ2xsIGNyZWF0ZSBhIGZha2Ugc3RhbmRhcmQgaW5wdXQgdGhhdAotICAgIGNhcHR1cmVzIG91ciBkZWJ1Z2dlciBpbnB1dDoKKyAgICAgICAgVG8gZGVtb25zdHJhdGUgdGhpcywgd2UnbGwgY3JlYXRlIGEgZmFrZSBzdGFuZGFyZCBpbnB1dCB0aGF0CisgICAgICAgIGNhcHR1cmVzIG91ciBkZWJ1Z2dlciBpbnB1dDoKIAotICAgICAgPj4+IGltcG9ydCB0ZW1wZmlsZQotICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KLSAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKLSAgICAgIC4uLiAgICAncHJpbnQoeCknLCAgIyBwcmludCBkYXRhIGRlZmluZWQgYnkgdGhlIGV4YW1wbGUKLSAgICAgIC4uLiAgICAnY29udGludWUnLCAjIHN0b3AgZGVidWdnaW5nCi0gICAgICAuLi4gICAgJyddKQorICAgICAgICAgID4+PiBpbXBvcnQgdGVtcGZpbGUKKyAgICAgICAgICA+Pj4gcmVhbF9zdGRpbiA9IHN5cy5zdGRpbgorICAgICAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKKyAgICAgICAgICAuLi4gICAgJ3ByaW50KHgpJywgICMgcHJpbnQgZGF0YSBkZWZpbmVkIGJ5IHRoZSBleGFtcGxlCisgICAgICAgICAgLi4uICAgICdjb250aW51ZScsICMgc3RvcCBkZWJ1Z2dpbmcKKyAgICAgICAgICAuLi4gICAgJyddKQogCi0gICAgICA+Pj4gdHJ5OiBydW5uZXIucnVuKHRlc3QpCi0gICAgICAuLi4gZmluYWxseTogc3lzLnN0ZGluID0gcmVhbF9zdGRpbgotICAgICAgLS1SZXR1cm4tLQotICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsyXT4oMSk8bW9kdWxlPigpLT5Ob25lCi0gICAgICAtPiBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKLSAgICAgIChQZGIpIHByaW50KHgpCi0gICAgICA0MgotICAgICAgKFBkYikgY29udGludWUKLSAgICAgIFRlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9MykKKyAgICAgICAgICA+Pj4gdHJ5OiBydW5uZXIucnVuKHRlc3QpCisgICAgICAgICAgLi4uIGZpbmFsbHk6IHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KKyAgICAgICAgICAtLVJldHVybi0tCisgICAgICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsyXT4oMSk8bW9kdWxlPigpLT5Ob25lCisgICAgICAgICAgLT4gaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCisgICAgICAgICAgKFBkYikgcHJpbnQoeCkKKyAgICAgICAgICA0MgorICAgICAgICAgIChQZGIpIGNvbnRpbnVlCisgICAgICAgICAgVGVzdFJlc3VsdHMoZmFpbGVkPTAsIGF0dGVtcHRlZD0zKQogCi0gICAgICBZb3UgY2FuIGFsc28gcHV0IHBkYi5zZXRfdHJhY2UgaW4gYSBmdW5jdGlvbiBjYWxsZWQgZnJvbSBhIHRlc3Q6CisgICAgICAgICAgWW91IGNhbiBhbHNvIHB1dCBwZGIuc2V0X3RyYWNlIGluIGEgZnVuY3Rpb24gY2FsbGVkIGZyb20gYSB0ZXN0OgogCi0gICAgICA+Pj4gZGVmIGNhbGxzX3NldF90cmFjZSgpOgotICAgICAgLi4uICAgIHk9MgotICAgICAgLi4uICAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQorICAgICAgICAgID4+PiBkZWYgY2FsbHNfc2V0X3RyYWNlKCk6CisgICAgICAgICAgLi4uICAgIHk9MgorICAgICAgICAgIC4uLiAgICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKIAotICAgICAgPj4+IGRvYyA9ICcnJwotICAgICAgLi4uID4+PiB4PTEKLSAgICAgIC4uLiA+Pj4gY2FsbHNfc2V0X3RyYWNlKCkKLSAgICAgIC4uLiAnJycKLSAgICAgID4+PiB0ZXN0ID0gcGFyc2VyLmdldF9kb2N0ZXN0KGRvYywgZ2xvYmFscygpLCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQotICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KLSAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKLSAgICAgIC4uLiAgICAncHJpbnQoeSknLCAgIyBwcmludCBkYXRhIGRlZmluZWQgaW4gdGhlIGZ1bmN0aW9uCi0gICAgICAuLi4gICAgJ3VwJywgICAgICAgIyBvdXQgb2YgZnVuY3Rpb24KLSAgICAgIC4uLiAgICAncHJpbnQoeCknLCAgIyBwcmludCBkYXRhIGRlZmluZWQgYnkgdGhlIGV4YW1wbGUKLSAgICAgIC4uLiAgICAnY29udGludWUnLCAjIHN0b3AgZGVidWdnaW5nCi0gICAgICAuLi4gICAgJyddKQorICAgICAgICAgID4+PiBkb2MgPSAnJycKKyAgICAgICAgICAuLi4gPj4+IHg9MQorICAgICAgICAgIC4uLiA+Pj4gY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgICAuLi4gJycnCisgICAgICAgICAgPj4+IHRlc3QgPSBwYXJzZXIuZ2V0X2RvY3Rlc3QoZG9jLCBnbG9iYWxzKCksICJmb28tYmFyQGJheiIsICJmb28tYmFyQGJhei5weSIsIDApCisgICAgICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KKyAgICAgICAgICA+Pj4gc3lzLnN0ZGluID0gX0Zha2VJbnB1dChbCisgICAgICAgICAgLi4uICAgICdwcmludCh5KScsICAjIHByaW50IGRhdGEgZGVmaW5lZCBpbiB0aGUgZnVuY3Rpb24KKyAgICAgICAgICAuLi4gICAgJ3VwJywgICAgICAgIyBvdXQgb2YgZnVuY3Rpb24KKyAgICAgICAgICAuLi4gICAgJ3ByaW50KHgpJywgICMgcHJpbnQgZGF0YSBkZWZpbmVkIGJ5IHRoZSBleGFtcGxlCisgICAgICAgICAgLi4uICAgICdjb250aW51ZScsICMgc3RvcCBkZWJ1Z2dpbmcKKyAgICAgICAgICAuLi4gICAgJyddKQogCi0gICAgICA+Pj4gdHJ5OgotICAgICAgLi4uICAgICBydW5uZXIucnVuKHRlc3QpCi0gICAgICAuLi4gZmluYWxseToKLSAgICAgIC4uLiAgICAgc3lzLnN0ZGluID0gcmVhbF9zdGRpbgotICAgICAgLS1SZXR1cm4tLQotICAgICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VbOF0+KDMpY2FsbHNfc2V0X3RyYWNlKCktPk5vbmUKLSAgICAgIC0+IGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQotICAgICAgKFBkYikgcHJpbnQoeSkKLSAgICAgIDIKLSAgICAgIChQZGIpIHVwCi0gICAgICA+IDxkb2N0ZXN0IGZvby1iYXJAYmF6WzFdPigxKTxtb2R1bGU+KCkKLSAgICAgIC0+IGNhbGxzX3NldF90cmFjZSgpCi0gICAgICAoUGRiKSBwcmludCh4KQotICAgICAgMQotICAgICAgKFBkYikgY29udGludWUKLSAgICAgIFRlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9MikKKyAgICAgICAgICA+Pj4gdHJ5OgorICAgICAgICAgIC4uLiAgICAgcnVubmVyLnJ1bih0ZXN0KQorICAgICAgICAgIC4uLiBmaW5hbGx5OgorICAgICAgICAgIC4uLiAgICAgc3lzLnN0ZGluID0gcmVhbF9zdGRpbgorICAgICAgICAgIC0tUmV0dXJuLS0KKyAgICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZVs4XT4oMyljYWxsc19zZXRfdHJhY2UoKS0+Tm9uZQorICAgICAgICAgIC0+IGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQorICAgICAgICAgIChQZGIpIHByaW50KHkpCisgICAgICAgICAgMgorICAgICAgICAgIChQZGIpIHVwCisgICAgICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsxXT4oMSk8bW9kdWxlPigpCisgICAgICAgICAgLT4gY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgICAoUGRiKSBwcmludCh4KQorICAgICAgICAgIDEKKyAgICAgICAgICAoUGRiKSBjb250aW51ZQorICAgICAgICAgIFRlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9MikKIAotICAgIER1cmluZyBpbnRlcmFjdGl2ZSBkZWJ1Z2dpbmcsIHNvdXJjZSBjb2RlIGlzIHNob3duLCBldmVuIGZvcgotICAgIGRvY3Rlc3QgZXhhbXBsZXM6CisgICAgICAgIER1cmluZyBpbnRlcmFjdGl2ZSBkZWJ1Z2dpbmcsIHNvdXJjZSBjb2RlIGlzIHNob3duLCBldmVuIGZvcgorICAgICAgICBkb2N0ZXN0IGV4YW1wbGVzOgogCi0gICAgICA+Pj4gZG9jID0gJycnCi0gICAgICAuLi4gPj4+IGRlZiBmKHgpOgotICAgICAgLi4uIC4uLiAgICAgZyh4KjIpCi0gICAgICAuLi4gPj4+IGRlZiBnKHgpOgotICAgICAgLi4uIC4uLiAgICAgcHJpbnQoeCszKQotICAgICAgLi4uIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCi0gICAgICAuLi4gPj4+IGYoMykKLSAgICAgIC4uLiAnJycKLSAgICAgID4+PiB0ZXN0ID0gcGFyc2VyLmdldF9kb2N0ZXN0KGRvYywgZ2xvYmFscygpLCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQotICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KLSAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKLSAgICAgIC4uLiAgICAnbGlzdCcsICAgICAjIGxpc3Qgc291cmNlIGZyb20gZXhhbXBsZSAyCi0gICAgICAuLi4gICAgJ25leHQnLCAgICAgIyByZXR1cm4gZnJvbSBnKCkKLSAgICAgIC4uLiAgICAnbGlzdCcsICAgICAjIGxpc3Qgc291cmNlIGZyb20gZXhhbXBsZSAxCi0gICAgICAuLi4gICAgJ25leHQnLCAgICAgIyByZXR1cm4gZnJvbSBmKCkKLSAgICAgIC4uLiAgICAnbGlzdCcsICAgICAjIGxpc3Qgc291cmNlIGZyb20gZXhhbXBsZSAzCi0gICAgICAuLi4gICAgJ2NvbnRpbnVlJywgIyBzdG9wIGRlYnVnZ2luZwotICAgICAgLi4uICAgICcnXSkKLSAgICAgID4+PiB0cnk6IHJ1bm5lci5ydW4odGVzdCkKLSAgICAgIC4uLiBmaW5hbGx5OiBzeXMuc3RkaW4gPSByZWFsX3N0ZGluCi0gICAgICAuLi4gIyBkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKLSAgICAgIC0tUmV0dXJuLS0KLSAgICAgID4gPGRvY3Rlc3QgZm9vLWJhckBiYXpbMV0+KDMpZygpLT5Ob25lCi0gICAgICAtPiBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKLSAgICAgIChQZGIpIGxpc3QKLSAgICAgICAgMSAgICAgZGVmIGcoeCk6Ci0gICAgICAgIDIgICAgICAgICBwcmludCh4KzMpCi0gICAgICAgIDMgIC0+ICAgICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKLSAgICAgIFtFT0ZdCi0gICAgICAoUGRiKSBuZXh0Ci0gICAgICAtLVJldHVybi0tCi0gICAgICA+IDxkb2N0ZXN0IGZvby1iYXJAYmF6WzBdPigyKWYoKS0+Tm9uZQotICAgICAgLT4gZyh4KjIpCi0gICAgICAoUGRiKSBsaXN0Ci0gICAgICAgIDEgICAgIGRlZiBmKHgpOgotICAgICAgICAyICAtPiAgICAgZyh4KjIpCi0gICAgICBbRU9GXQotICAgICAgKFBkYikgbmV4dAotICAgICAgLS1SZXR1cm4tLQotICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsyXT4oMSk8bW9kdWxlPigpLT5Ob25lCi0gICAgICAtPiBmKDMpCi0gICAgICAoUGRiKSBsaXN0Ci0gICAgICAgIDEgIC0+IGYoMykKLSAgICAgIFtFT0ZdCi0gICAgICAoUGRiKSBjb250aW51ZQotICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAgICAgRmlsZSAiZm9vLWJhckBiYXoucHkiLCBsaW5lIDcsIGluIGZvby1iYXJAYmF6Ci0gICAgICBGYWlsZWQgZXhhbXBsZToKLSAgICAgICAgICBmKDMpCi0gICAgICBFeHBlY3RlZCBub3RoaW5nCi0gICAgICBHb3Q6Ci0gICAgICAgICAgOQotICAgICAgVGVzdFJlc3VsdHMoZmFpbGVkPTEsIGF0dGVtcHRlZD0zKQotICAgICAgIiIiCisgICAgICAgICAgPj4+IGRvYyA9ICcnJworICAgICAgICAgIC4uLiA+Pj4gZGVmIGYoeCk6CisgICAgICAgICAgLi4uIC4uLiAgICAgZyh4KjIpCisgICAgICAgICAgLi4uID4+PiBkZWYgZyh4KToKKyAgICAgICAgICAuLi4gLi4uICAgICBwcmludCh4KzMpCisgICAgICAgICAgLi4uIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCisgICAgICAgICAgLi4uID4+PiBmKDMpCisgICAgICAgICAgLi4uICcnJworICAgICAgICAgID4+PiB0ZXN0ID0gcGFyc2VyLmdldF9kb2N0ZXN0KGRvYywgZ2xvYmFscygpLCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQorICAgICAgICAgID4+PiByZWFsX3N0ZGluID0gc3lzLnN0ZGluCisgICAgICAgICAgPj4+IHN5cy5zdGRpbiA9IF9GYWtlSW5wdXQoWworICAgICAgICAgIC4uLiAgICAnbGlzdCcsICAgICAjIGxpc3Qgc291cmNlIGZyb20gZXhhbXBsZSAyCisgICAgICAgICAgLi4uICAgICduZXh0JywgICAgICMgcmV0dXJuIGZyb20gZygpCisgICAgICAgICAgLi4uICAgICdsaXN0JywgICAgICMgbGlzdCBzb3VyY2UgZnJvbSBleGFtcGxlIDEKKyAgICAgICAgICAuLi4gICAgJ25leHQnLCAgICAgIyByZXR1cm4gZnJvbSBmKCkKKyAgICAgICAgICAuLi4gICAgJ2xpc3QnLCAgICAgIyBsaXN0IHNvdXJjZSBmcm9tIGV4YW1wbGUgMworICAgICAgICAgIC4uLiAgICAnY29udGludWUnLCAjIHN0b3AgZGVidWdnaW5nCisgICAgICAgICAgLi4uICAgICcnXSkKKyAgICAgICAgICA+Pj4gdHJ5OiBydW5uZXIucnVuKHRlc3QpCisgICAgICAgICAgLi4uIGZpbmFsbHk6IHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KKyAgICAgICAgICAuLi4gIyBkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKKyAgICAgICAgICAtLVJldHVybi0tCisgICAgICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsxXT4oMylnKCktPk5vbmUKKyAgICAgICAgICAtPiBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKKyAgICAgICAgICAoUGRiKSBsaXN0CisgICAgICAgICAgICAxICAgICBkZWYgZyh4KToKKyAgICAgICAgICAgIDIgICAgICAgICBwcmludCh4KzMpCisgICAgICAgICAgICAzICAtPiAgICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCisgICAgICAgICAgW0VPRl0KKyAgICAgICAgICAoUGRiKSBuZXh0CisgICAgICAgICAgLS1SZXR1cm4tLQorICAgICAgICAgID4gPGRvY3Rlc3QgZm9vLWJhckBiYXpbMF0+KDIpZigpLT5Ob25lCisgICAgICAgICAgLT4gZyh4KjIpCisgICAgICAgICAgKFBkYikgbGlzdAorICAgICAgICAgICAgMSAgICAgZGVmIGYoeCk6CisgICAgICAgICAgICAyICAtPiAgICAgZyh4KjIpCisgICAgICAgICAgW0VPRl0KKyAgICAgICAgICAoUGRiKSBuZXh0CisgICAgICAgICAgLS1SZXR1cm4tLQorICAgICAgICAgID4gPGRvY3Rlc3QgZm9vLWJhckBiYXpbMl0+KDEpPG1vZHVsZT4oKS0+Tm9uZQorICAgICAgICAgIC0+IGYoMykKKyAgICAgICAgICAoUGRiKSBsaXN0CisgICAgICAgICAgICAxICAtPiBmKDMpCisgICAgICAgICAgW0VPRl0KKyAgICAgICAgICAoUGRiKSBjb250aW51ZQorICAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgICAgICBGaWxlICJmb28tYmFyQGJhei5weSIsIGxpbmUgNywgaW4gZm9vLWJhckBiYXoKKyAgICAgICAgICBGYWlsZWQgZXhhbXBsZToKKyAgICAgICAgICAgICAgZigzKQorICAgICAgICAgIEV4cGVjdGVkIG5vdGhpbmcKKyAgICAgICAgICBHb3Q6CisgICAgICAgICAgICAgIDkKKyAgICAgICAgICBUZXN0UmVzdWx0cyhmYWlsZWQ9MSwgYXR0ZW1wdGVkPTMpCisgICAgICAgICAgIiIiCiAKLWRlZiB0ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkKCk6Ci0gICAgIiIiVGhpcyBpbGx1c3RyYXRlcyBtb3JlLWRlbWFuZGluZyB1c2Ugb2Ygc2V0X3RyYWNlIHdpdGggbmVzdGVkIGZ1bmN0aW9ucy4KKyAgICBkZWYgdGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZCgpOgorICAgICAgICAiIiJUaGlzIGlsbHVzdHJhdGVzIG1vcmUtZGVtYW5kaW5nIHVzZSBvZiBzZXRfdHJhY2Ugd2l0aCBuZXN0ZWQgZnVuY3Rpb25zLgogCi0gICAgPj4+IGNsYXNzIEMob2JqZWN0KToKLSAgICAuLi4gICAgIGRlZiBjYWxsc19zZXRfdHJhY2Uoc2VsZik6Ci0gICAgLi4uICAgICAgICAgeSA9IDEKLSAgICAuLi4gICAgICAgICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKLSAgICAuLi4gICAgICAgICBzZWxmLmYxKCkKLSAgICAuLi4gICAgICAgICB5ID0gMgotICAgIC4uLiAgICAgZGVmIGYxKHNlbGYpOgotICAgIC4uLiAgICAgICAgIHggPSAxCi0gICAgLi4uICAgICAgICAgc2VsZi5mMigpCi0gICAgLi4uICAgICAgICAgeCA9IDIKLSAgICAuLi4gICAgIGRlZiBmMihzZWxmKToKLSAgICAuLi4gICAgICAgICB6ID0gMQotICAgIC4uLiAgICAgICAgIHogPSAyCisgICAgICAgID4+PiBjbGFzcyBDKG9iamVjdCk6CisgICAgICAgIC4uLiAgICAgZGVmIGNhbGxzX3NldF90cmFjZShzZWxmKToKKyAgICAgICAgLi4uICAgICAgICAgeSA9IDEKKyAgICAgICAgLi4uICAgICAgICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCisgICAgICAgIC4uLiAgICAgICAgIHNlbGYuZjEoKQorICAgICAgICAuLi4gICAgICAgICB5ID0gMgorICAgICAgICAuLi4gICAgIGRlZiBmMShzZWxmKToKKyAgICAgICAgLi4uICAgICAgICAgeCA9IDEKKyAgICAgICAgLi4uICAgICAgICAgc2VsZi5mMigpCisgICAgICAgIC4uLiAgICAgICAgIHggPSAyCisgICAgICAgIC4uLiAgICAgZGVmIGYyKHNlbGYpOgorICAgICAgICAuLi4gICAgICAgICB6ID0gMQorICAgICAgICAuLi4gICAgICAgICB6ID0gMgogCi0gICAgPj4+IGNhbGxzX3NldF90cmFjZSA9IEMoKS5jYWxsc19zZXRfdHJhY2UKKyAgICAgICAgPj4+IGNhbGxzX3NldF90cmFjZSA9IEMoKS5jYWxsc19zZXRfdHJhY2UKIAotICAgID4+PiBkb2MgPSAnJycKLSAgICAuLi4gPj4+IGEgPSAxCi0gICAgLi4uID4+PiBjYWxsc19zZXRfdHJhY2UoKQotICAgIC4uLiAnJycKLSAgICA+Pj4gcGFyc2VyID0gZG9jdGVzdC5Eb2NUZXN0UGFyc2VyKCkKLSAgICA+Pj4gcnVubmVyID0gZG9jdGVzdC5Eb2NUZXN0UnVubmVyKHZlcmJvc2U9RmFsc2UpCi0gICAgPj4+IHRlc3QgPSBwYXJzZXIuZ2V0X2RvY3Rlc3QoZG9jLCBnbG9iYWxzKCksICJmb28tYmFyQGJheiIsICJmb28tYmFyQGJhei5weSIsIDApCi0gICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KLSAgICA+Pj4gc3lzLnN0ZGluID0gX0Zha2VJbnB1dChbCi0gICAgLi4uICAgICdwcmludCh5KScsICAjIHByaW50IGRhdGEgZGVmaW5lZCBpbiB0aGUgZnVuY3Rpb24KLSAgICAuLi4gICAgJ3N0ZXAnLCAnc3RlcCcsICdzdGVwJywgJ3N0ZXAnLCAnc3RlcCcsICdzdGVwJywgJ3ByaW50KHopJywKLSAgICAuLi4gICAgJ3VwJywgJ3ByaW50KHgpJywKLSAgICAuLi4gICAgJ3VwJywgJ3ByaW50KHkpJywKLSAgICAuLi4gICAgJ3VwJywgJ3ByaW50KGZvbyknLAotICAgIC4uLiAgICAnY29udGludWUnLCAjIHN0b3AgZGVidWdnaW5nCi0gICAgLi4uICAgICcnXSkKKyAgICAgICAgPj4+IGRvYyA9ICcnJworICAgICAgICAuLi4gPj4+IGEgPSAxCisgICAgICAgIC4uLiA+Pj4gY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgLi4uICcnJworICAgICAgICA+Pj4gcGFyc2VyID0gZG9jdGVzdC5Eb2NUZXN0UGFyc2VyKCkKKyAgICAgICAgPj4+IHJ1bm5lciA9IGRvY3Rlc3QuRG9jVGVzdFJ1bm5lcih2ZXJib3NlPUZhbHNlKQorICAgICAgICA+Pj4gdGVzdCA9IHBhcnNlci5nZXRfZG9jdGVzdChkb2MsIGdsb2JhbHMoKSwgImZvby1iYXJAYmF6IiwgImZvby1iYXJAYmF6LnB5IiwgMCkKKyAgICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KKyAgICAgICAgPj4+IHN5cy5zdGRpbiA9IF9GYWtlSW5wdXQoWworICAgICAgICAuLi4gICAgJ3ByaW50KHkpJywgICMgcHJpbnQgZGF0YSBkZWZpbmVkIGluIHRoZSBmdW5jdGlvbgorICAgICAgICAuLi4gICAgJ3N0ZXAnLCAnc3RlcCcsICdzdGVwJywgJ3N0ZXAnLCAnc3RlcCcsICdzdGVwJywgJ3ByaW50KHopJywKKyAgICAgICAgLi4uICAgICd1cCcsICdwcmludCh4KScsCisgICAgICAgIC4uLiAgICAndXAnLCAncHJpbnQoeSknLAorICAgICAgICAuLi4gICAgJ3VwJywgJ3ByaW50KGZvbyknLAorICAgICAgICAuLi4gICAgJ2NvbnRpbnVlJywgIyBzdG9wIGRlYnVnZ2luZworICAgICAgICAuLi4gICAgJyddKQogCi0gICAgPj4+IHRyeToKLSAgICAuLi4gICAgIHJ1bm5lci5ydW4odGVzdCkKLSAgICAuLi4gZmluYWxseToKLSAgICAuLi4gICAgIHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KLSAgICAuLi4gIyBkb2N0ZXN0OiArUkVQT1JUX05ESUZGCi0gICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig1KWNhbGxzX3NldF90cmFjZSgpCi0gICAgLT4gc2VsZi5mMSgpCi0gICAgKFBkYikgcHJpbnQoeSkKLSAgICAxCi0gICAgKFBkYikgc3RlcAotICAgIC0tQ2FsbC0tCi0gICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig3KWYxKCkKLSAgICAtPiBkZWYgZjEoc2VsZik6Ci0gICAgKFBkYikgc3RlcAotICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oOClmMSgpCi0gICAgLT4geCA9IDEKLSAgICAoUGRiKSBzdGVwCi0gICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig5KWYxKCkKLSAgICAtPiBzZWxmLmYyKCkKLSAgICAoUGRiKSBzdGVwCi0gICAgLS1DYWxsLS0KLSAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDExKWYyKCkKLSAgICAtPiBkZWYgZjIoc2VsZik6Ci0gICAgKFBkYikgc3RlcAotICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oMTIpZjIoKQotICAgIC0+IHogPSAxCi0gICAgKFBkYikgc3RlcAotICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oMTMpZjIoKQotICAgIC0+IHogPSAyCi0gICAgKFBkYikgcHJpbnQoeikKLSAgICAxCi0gICAgKFBkYikgdXAKLSAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDkpZjEoKQotICAgIC0+IHNlbGYuZjIoKQotICAgIChQZGIpIHByaW50KHgpCi0gICAgMQotICAgIChQZGIpIHVwCi0gICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig1KWNhbGxzX3NldF90cmFjZSgpCi0gICAgLT4gc2VsZi5mMSgpCi0gICAgKFBkYikgcHJpbnQoeSkKLSAgICAxCi0gICAgKFBkYikgdXAKLSAgICA+IDxkb2N0ZXN0IGZvby1iYXJAYmF6WzFdPigxKTxtb2R1bGU+KCkKLSAgICAtPiBjYWxsc19zZXRfdHJhY2UoKQotICAgIChQZGIpIHByaW50KGZvbykKLSAgICAqKiogTmFtZUVycm9yOiBuYW1lICdmb28nIGlzIG5vdCBkZWZpbmVkCi0gICAgKFBkYikgY29udGludWUKLSAgICBUZXN0UmVzdWx0cyhmYWlsZWQ9MCwgYXR0ZW1wdGVkPTIpCi0iIiIKKyAgICAgICAgPj4+IHRyeToKKyAgICAgICAgLi4uICAgICBydW5uZXIucnVuKHRlc3QpCisgICAgICAgIC4uLiBmaW5hbGx5OgorICAgICAgICAuLi4gICAgIHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KKyAgICAgICAgLi4uICMgZG9jdGVzdDogK1JFUE9SVF9ORElGRgorICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDUpY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgLT4gc2VsZi5mMSgpCisgICAgICAgIChQZGIpIHByaW50KHkpCisgICAgICAgIDEKKyAgICAgICAgKFBkYikgc3RlcAorICAgICAgICAtLUNhbGwtLQorICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDcpZjEoKQorICAgICAgICAtPiBkZWYgZjEoc2VsZik6CisgICAgICAgIChQZGIpIHN0ZXAKKyAgICAgICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig4KWYxKCkKKyAgICAgICAgLT4geCA9IDEKKyAgICAgICAgKFBkYikgc3RlcAorICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDkpZjEoKQorICAgICAgICAtPiBzZWxmLmYyKCkKKyAgICAgICAgKFBkYikgc3RlcAorICAgICAgICAtLUNhbGwtLQorICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDExKWYyKCkKKyAgICAgICAgLT4gZGVmIGYyKHNlbGYpOgorICAgICAgICAoUGRiKSBzdGVwCisgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oMTIpZjIoKQorICAgICAgICAtPiB6ID0gMQorICAgICAgICAoUGRiKSBzdGVwCisgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oMTMpZjIoKQorICAgICAgICAtPiB6ID0gMgorICAgICAgICAoUGRiKSBwcmludCh6KQorICAgICAgICAxCisgICAgICAgIChQZGIpIHVwCisgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oOSlmMSgpCisgICAgICAgIC0+IHNlbGYuZjIoKQorICAgICAgICAoUGRiKSBwcmludCh4KQorICAgICAgICAxCisgICAgICAgIChQZGIpIHVwCisgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oNSljYWxsc19zZXRfdHJhY2UoKQorICAgICAgICAtPiBzZWxmLmYxKCkKKyAgICAgICAgKFBkYikgcHJpbnQoeSkKKyAgICAgICAgMQorICAgICAgICAoUGRiKSB1cAorICAgICAgICA+IDxkb2N0ZXN0IGZvby1iYXJAYmF6WzFdPigxKTxtb2R1bGU+KCkKKyAgICAgICAgLT4gY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgKFBkYikgcHJpbnQoZm9vKQorICAgICAgICAqKiogTmFtZUVycm9yOiBuYW1lICdmb28nIGlzIG5vdCBkZWZpbmVkCisgICAgICAgIChQZGIpIGNvbnRpbnVlCisgICAgICAgIFRlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9MikKKyAgICAiIiIKIAogZGVmIHRlc3RfRG9jVGVzdFN1aXRlKCk6CiAgICAgIiIiRG9jVGVzdFN1aXRlIGNyZWF0ZXMgYSB1bml0dGVzdCB0ZXN0IHN1aXRlIGZyb20gYSBkb2N0ZXN0LgpAQCAtMjU2Niw3ICsyNTY4LDcgQEAKIAogZGVmIHRlc3RfY292ZXJhZ2UoY292ZXJkaXIpOgogICAgIHRyYWNlID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0cmFjZScpCi0gICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLnByZWZpeCwgc3lzLmV4ZWNfcHJlZml4LF0sCisgICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCxdLAogICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlPTAsIGNvdW50PTEpCiAgICAgdHJhY2VyLnJ1bigndGVzdF9tYWluKCknKQogICAgIHIgPSB0cmFjZXIucmVzdWx0cygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2R1bW15X3RocmVhZC5weSBiL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkLnB5CmluZGV4IGM2MTA3OGQuLjJmYWZlMWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkLnB5CkBAIC0zNSw4ICszNSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiTG9jayBvYmplY3QgZGlkIG5vdCByZWxlYXNlIHByb3Blcmx5LiIpCiAKICAgICBkZWYgdGVzdF9pbXByb3Blcl9yZWxlYXNlKHNlbGYpOgotICAgICAgICAjTWFrZSBzdXJlIHJlbGVhc2Ugb2YgYW4gdW5sb2NrZWQgdGhyZWFkIHJhaXNlcyBfdGhyZWFkLmVycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKF90aHJlYWQuZXJyb3IsIHNlbGYubG9jay5yZWxlYXNlKQorICAgICAgICAjTWFrZSBzdXJlIHJlbGVhc2Ugb2YgYW4gdW5sb2NrZWQgdGhyZWFkIHJhaXNlcyBSdW50aW1lRXJyb3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzZWxmLmxvY2sucmVsZWFzZSkKIAogICAgIGRlZiB0ZXN0X2NvbmRfYWNxdWlyZV9zdWNjZXNzKHNlbGYpOgogICAgICAgICAjTWFrZSBzdXJlIHRoZSBjb25kaXRpb25hbCBhY3F1aXJpbmcgb2YgdGhlIGxvY2sgd29ya3MuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVlYmJhNS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNyBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbgotIyBlbWFpbCBwYWNrYWdlIHVuaXQgdGVzdHMKLQotIyBUaGUgc3BlY2lmaWMgdGVzdHMgbm93IGxpdmUgaW4gTGliL2VtYWlsL3Rlc3QKLWZyb20gZW1haWwudGVzdC50ZXN0X2VtYWlsIGltcG9ydCBzdWl0ZQotZnJvbSBlbWFpbC50ZXN0LnRlc3RfZW1haWxfY29kZWNzIGltcG9ydCBzdWl0ZSBhcyBjb2RlY3Nfc3VpdGUKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3Qoc3VpdGUoKSkKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChjb2RlY3Nfc3VpdGUoKSkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIwNmFjZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkKQEAgLTAsMCArMSwxNTAgQEAKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdGVzdC5zdXBwb3J0CitpbXBvcnQgZW1haWwKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQorZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgY29tcGF0MzIKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBfX2ZpbGVfXyBhcyBsYW5kbWFyaworCisjIFJ1biBhbGwgdGVzdHMgaW4gcGFja2FnZSBmb3IgJy1tIHVuaXR0ZXN0IHRlc3QudGVzdF9lbWFpbCcKK2RlZiBsb2FkX3Rlc3RzKGxvYWRlciwgc3RhbmRhcmRfdGVzdHMsIHBhdHRlcm4pOgorICAgIHRoaXNfZGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgIGlmIHBhdHRlcm4gaXMgTm9uZToKKyAgICAgICAgcGF0dGVybiA9ICJ0ZXN0KiIKKyAgICBwYWNrYWdlX3Rlc3RzID0gbG9hZGVyLmRpc2NvdmVyKHN0YXJ0X2Rpcj10aGlzX2RpciwgcGF0dGVybj1wYXR0ZXJuKQorICAgIHN0YW5kYXJkX3Rlc3RzLmFkZFRlc3RzKHBhY2thZ2VfdGVzdHMpCisgICAgcmV0dXJuIHN0YW5kYXJkX3Rlc3RzCisKKworIyB1c2VkIGJ5IHJlZ3J0ZXN0IGFuZCBfX21haW5fXy4KK2RlZiB0ZXN0X21haW4oKToKKyAgICBoZXJlID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgICMgVW5pdHRlc3QgbXVja3Mgd2l0aCB0aGUgcGF0aCwgc28gd2UgaGF2ZSB0byBzYXZlIGFuZCByZXN0b3JlCisgICAgIyBpdCB0byBrZWVwIHJlZ3J0ZXN0IGhhcHB5LgorICAgIHNhdmVwYXRoID0gc3lzLnBhdGhbOl0KKyAgICB0ZXN0LnN1cHBvcnQuX3J1bl9zdWl0ZSh1bml0dGVzdC5kZWZhdWx0VGVzdExvYWRlci5kaXNjb3ZlcihoZXJlKSkKKyAgICBzeXMucGF0aFs6XSA9IHNhdmVwYXRoCisKKworIyBoZWxwZXIgY29kZSB1c2VkIGJ5IGEgbnVtYmVyIG9mIHRlc3QgbW9kdWxlcy4KKworZGVmIG9wZW5maWxlKGZpbGVuYW1lLCAqYXJncywgKiprd3MpOgorICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGxhbmRtYXJrKSwgJ2RhdGEnLCBmaWxlbmFtZSkKKyAgICByZXR1cm4gb3BlbihwYXRoLCAqYXJncywgKiprd3MpCisKKworIyBCYXNlIHRlc3QgY2xhc3MKK2NsYXNzIFRlc3RFbWFpbEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgbWF4RGlmZiA9IE5vbmUKKyAgICAjIEN1cnJlbnRseSB0aGUgZGVmYXVsdCBwb2xpY3kgaXMgY29tcGF0MzIuICBCeSBzZXR0aW5nIHRoYXQgYXMgdGhlIGRlZmF1bHQKKyAgICAjIGhlcmUgd2UgbWFrZSBtaW5pbWFsIGNoYW5nZXMgaW4gdGhlIHRlc3RfZW1haWwgdGVzdHMgY29tcGFyZWQgdG8gdGhlaXIKKyAgICAjIHByZS0zLjMgc3RhdGUuCisgICAgcG9saWN5ID0gY29tcGF0MzIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3cpCisgICAgICAgIHNlbGYuYWRkVHlwZUVxdWFsaXR5RnVuYyhieXRlcywgc2VsZi5hc3NlcnRCeXRlc0VxdWFsKQorCisgICAgIyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvIG1pbmltaXplIHRlc3RfZW1haWwgdGVzdCBjaGFuZ2VzLgorICAgIG5kaWZmQXNzZXJ0RXF1YWwgPSB1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRFcXVhbAorCisgICAgZGVmIF9tc2dvYmooc2VsZiwgZmlsZW5hbWUpOgorICAgICAgICB3aXRoIG9wZW5maWxlKGZpbGVuYW1lKSBhcyBmcDoKKyAgICAgICAgICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZShmcCwgcG9saWN5PXNlbGYucG9saWN5KQorCisgICAgZGVmIF9zdHJfbXNnKHNlbGYsIHN0cmluZywgbWVzc2FnZT1NZXNzYWdlLCBwb2xpY3k9Tm9uZSk6CisgICAgICAgIGlmIHBvbGljeSBpcyBOb25lOgorICAgICAgICAgICAgcG9saWN5ID0gc2VsZi5wb2xpY3kKKyAgICAgICAgcmV0dXJuIGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoc3RyaW5nLCBtZXNzYWdlLCBwb2xpY3k9cG9saWN5KQorCisgICAgZGVmIF9ieXRlc19yZXByKHNlbGYsIGIpOgorICAgICAgICByZXR1cm4gW3JlcHIoeCkgZm9yIHggaW4gYi5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpXQorCisgICAgZGVmIGFzc2VydEJ5dGVzRXF1YWwoc2VsZiwgZmlyc3QsIHNlY29uZCwgbXNnKToKKyAgICAgICAgIiIiT3VyIGJ5dGUgc3RyaW5ncyBhcmUgcmVhbGx5IGVuY29kZWQgc3RyaW5nczsgaW1wcm92ZSBkaWZmIG91dHB1dCIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2J5dGVzX3JlcHIoZmlyc3QpLCBzZWxmLl9ieXRlc19yZXByKHNlY29uZCkpCisKKyAgICBkZWYgYXNzZXJ0RGVmZWN0c0VxdWFsKHNlbGYsIGFjdHVhbCwgZXhwZWN0ZWQpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhY3R1YWwpLCBsZW4oZXhwZWN0ZWQpLCBhY3R1YWwpCisgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihhY3R1YWwpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShhY3R1YWxbaV0sIGV4cGVjdGVkW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2l0ZW0ge30nLmZvcm1hdChpKSkKKworCitkZWYgcGFyYW1ldGVyaXplKGNscyk6CisgICAgIiIiQSB0ZXN0IG1ldGhvZCBwYXJhbWV0ZXJpemF0aW9uIGNsYXNzIGRlY29yYXRvci4KKworICAgIFBhcmFtZXRlcnMgYXJlIHNwZWNpZmllZCBhcyB0aGUgdmFsdWUgb2YgYSBjbGFzcyBhdHRyaWJ1dGUgdGhhdCBlbmRzIHdpdGgKKyAgICB0aGUgc3RyaW5nICdfcGFyYW1zJy4gIENhbGwgdGhlIHBvcnRpb24gYmVmb3JlICdfcGFyYW1zJyB0aGUgcHJlZml4LiAgVGhlbgorICAgIGEgbWV0aG9kIHRvIGJlIHBhcmFtZXRlcml6ZWQgbXVzdCBoYXZlIHRoZSBzYW1lIHByZWZpeCwgdGhlIHN0cmluZworICAgICdfYXNfJywgYW5kIGFuIGFyYml0cmFyeSBzdWZmaXguCisKKyAgICBUaGUgdmFsdWUgb2YgdGhlIF9wYXJhbXMgYXR0cmlidXRlIG1heSBiZSBlaXRoZXIgYSBkaWN0aW9uYXJ5IG9yIGEgbGlzdC4KKyAgICBUaGUgdmFsdWVzIGluIHRoZSBkaWN0aW9uYXJ5IGFuZCB0aGUgZWxlbWVudHMgb2YgdGhlIGxpc3QgbWF5IGVpdGhlciBiZQorICAgIHNpbmdsZSB2YWx1ZXMsIG9yIGEgbGlzdC4gIElmIHNpbmdsZSB2YWx1ZXMsIHRoZXkgYXJlIHR1cm5lZCBpbnRvIHNpbmdsZQorICAgIGVsZW1lbnQgdHVwbGVzLiAgSG93ZXZlciBkZXJpdmVkLCB0aGUgcmVzdWx0aW5nIHNlcXVlbmNlIGlzIHBhc3NlZCB2aWEKKyAgICAqYXJncyB0byB0aGUgcGFyYW1ldGVyaXplZCB0ZXN0IGZ1bmN0aW9uLgorCisgICAgSW4gYSBfcGFyYW1zIGRpY3Rpb2FucnksIHRoZSBrZXlzIGJlY29tZSBwYXJ0IG9mIHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQKKyAgICB0ZXN0cy4gIEluIGEgX3BhcmFtcyBsaXN0LCB0aGUgdmFsdWVzIGluIHRoZSBsaXN0IGFyZSBjb252ZXJ0ZWQgaW50byBhCisgICAgc3RyaW5nIGJ5IGpvaW5pbmcgdGhlIHN0cmluZyB2YWx1ZXMgb2YgdGhlIGVsZW1lbnRzIG9mIHRoZSB0dXBsZSBieSAnXycgYW5kCisgICAgY29udmVydGluZyBhbnkgYmxhbmtzIGludG8gJ18ncywgYW5kIHRoaXMgYmVjb21lIHBhcnQgb2YgdGhlIG5hbWUuCisgICAgVGhlICBmdWxsIG5hbWUgb2YgYSBnZW5lcmF0ZWQgdGVzdCBpcyBhICd0ZXN0XycgcHJlZml4LCB0aGUgcG9ydGlvbiBvZiB0aGUKKyAgICB0ZXN0IGZ1bmN0aW9uIG5hbWUgYWZ0ZXIgdGhlICAnX2FzXycgc2VwYXJhdG9yLCBwbHVzIGFuICdfJywgcGx1cyB0aGUgbmFtZQorICAgIGRlcml2ZWQgYXMgZXhwbGFpbmVkIGFib3ZlLgorCisgICAgRm9yIGV4YW1wbGUsIGlmIHdlIGhhdmU6CisKKyAgICAgICAgY291bnRfcGFyYW1zID0gcmFuZ2UoMikKKworICAgICAgICBkZWYgY291bnRfYXNfZm9vX2FyZyhzZWxmLCBmb28pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28rMSwgbXlmdW5jKGZvbykpCisKKyAgICB3ZSB3aWxsIGdldCBwYXJhbWV0ZXJpemVkIHRlc3QgbWV0aG9kcyBuYW1lZDoKKyAgICAgICAgdGVzdF9mb29fYXJnXzAKKyAgICAgICAgdGVzdF9mb29fYXJnXzEKKyAgICAgICAgdGVzdF9mb29fYXJnXzIKKworICAgIE9yIHdlIGNvdWxkIGhhdmU6CisKKyAgICAgICAgZXhhbXBsZV9wYXJhbXMgPSB7J2Zvbyc6ICgnYmFyJywgMSksICdiaW5nJzogKCdiYW5nJywgMil9CisKKyAgICAgICAgZGVmIGV4YW1wbGVfYXNfbXlmdW5jX2lucHV0KHNlbGYsIG5hbWUsIGNvdW50KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZStzdHIoY291bnQpLCBteWZ1bmMobmFtZSwgY291bnQpKQorCisgICAgYW5kIGdldDoKKyAgICAgICAgdGVzdF9teWZ1bmNfaW5wdXRfZm9vCisgICAgICAgIHRlc3RfbXlmdW5jX2lucHV0X2JpbmcKKworICAgIE5vdGU6IGlmIGFuZCBvbmx5IGlmIHRoZSBnZW5lcmF0ZWQgdGVzdCBuYW1lIGlzIGEgdmFsaWQgaWRlbnRpZmllciBjYW4gaXQKKyAgICBiZSB1c2VkIHRvIHNlbGVjdCB0aGUgdGVzdCBpbmRpdmlkdWFsbHkgZnJvbSB0aGUgdW5pdHRlc3QgY29tbWFuZCBsaW5lLgorCisgICAgIiIiCisgICAgcGFyYW1kaWN0cyA9IHt9CisgICAgZm9yIG5hbWUsIGF0dHIgaW4gY2xzLl9fZGljdF9fLml0ZW1zKCk6CisgICAgICAgIGlmIG5hbWUuZW5kc3dpdGgoJ19wYXJhbXMnKToKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGF0dHIsICdrZXlzJyk6CisgICAgICAgICAgICAgICAgZCA9IHt9CisgICAgICAgICAgICAgICAgZm9yIHggaW4gYXR0cjoKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoeCwgJ19faXRlcl9fJyk6CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gKHgsKQorICAgICAgICAgICAgICAgICAgICBuID0gJ18nLmpvaW4oc3RyKHYpIGZvciB2IGluIHgpLnJlcGxhY2UoJyAnLCAnXycpCisgICAgICAgICAgICAgICAgICAgIGRbbl0gPSB4CisgICAgICAgICAgICAgICAgYXR0ciA9IGQKKyAgICAgICAgICAgIHBhcmFtZGljdHNbbmFtZVs6LTddICsgJ19hc18nXSA9IGF0dHIKKyAgICB0ZXN0ZnVuY3MgPSB7fQorICAgIGZvciBuYW1lLCBhdHRyIGluIGNscy5fX2RpY3RfXy5pdGVtcygpOgorICAgICAgICBmb3IgcGFyYW1zbmFtZSwgcGFyYW1zZGljdCBpbiBwYXJhbWRpY3RzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgocGFyYW1zbmFtZSk6CisgICAgICAgICAgICAgICAgdGVzdG5hbWVyb290ID0gJ3Rlc3RfJyArIG5hbWVbbGVuKHBhcmFtc25hbWUpOl0KKyAgICAgICAgICAgICAgICBmb3IgcGFyYW1uYW1lLCBwYXJhbXMgaW4gcGFyYW1zZGljdC5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICB0ZXN0ID0gKGxhbWJkYSBzZWxmLCBuYW1lPW5hbWUsIHBhcmFtcz1wYXJhbXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKHNlbGYsIG5hbWUpKCpwYXJhbXMpKQorICAgICAgICAgICAgICAgICAgICB0ZXN0bmFtZSA9IHRlc3RuYW1lcm9vdCArICdfJyArIHBhcmFtbmFtZQorICAgICAgICAgICAgICAgICAgICB0ZXN0Ll9fbmFtZV9fID0gdGVzdG5hbWUKKyAgICAgICAgICAgICAgICAgICAgdGVzdGZ1bmNzW3Rlc3RuYW1lXSA9IHRlc3QKKyAgICBmb3Iga2V5LCB2YWx1ZSBpbiB0ZXN0ZnVuY3MuaXRlbXMoKToKKyAgICAgICAgc2V0YXR0cihjbHMsIGtleSwgdmFsdWUpCisgICAgcmV0dXJuIGNscwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX21haW5fXy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19tYWluX18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThhZjllYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19tYWluX18ucHkKQEAgLTAsMCArMSwzIEBACitmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgdGVzdF9tYWluCisKK3Rlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL1B5QmFubmVyMDQ4LmdpZiBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9QeUJhbm5lcjA0OC5naWYKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvUHlCYW5uZXIwNDguZ2lmCnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvUHlCYW5uZXIwNDguZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvYXVkaW90ZXN0LmF1IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL2F1ZGlvdGVzdC5hdQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9hdWRpb3Rlc3QuYXUKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9hdWRpb3Rlc3QuYXUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDEudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wMS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzAxLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wMS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzAyLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDIudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wMi50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDIudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wMy50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzAzLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDMudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzAzLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDQudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA0LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA1LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDUudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wNS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDUudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wNi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA2LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDYudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA2LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDcudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNy50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA3LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNy50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA4LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDgudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wOC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDgudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wOS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA5LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDkudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA5LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTAudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xMC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzEwLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xMC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzExLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTEudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xMS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTEudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xMi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEyLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTIudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEyLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTJhLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTJhLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTJhLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xMmEudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xMy50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEzLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTMudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEzLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTQudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE0LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE1LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTUudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xNS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTUudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xNi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE2LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTYudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE2LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTcudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNy50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE3LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNy50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE4LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTgudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xOC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTgudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xOS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE5LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTkudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE5LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjAudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzIwLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzIxLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjEudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yMS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjEudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yMi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzIyLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjIudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzIyLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjMudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMy50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzIzLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMy50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI0LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yNC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjQudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yNS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI1LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjUudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI1LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjYudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yNi50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI2LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yNi50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI3LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjcudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yNy50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjcudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yOC50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI4LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjgudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI4LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjkudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yOS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI5LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yOS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzMwLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzAudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zMC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzAudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zMS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzMxLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzEudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzMxLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzIudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zMi50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzMyLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zMi50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzMzLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzMudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zMy50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzMudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zNC50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM0LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzQudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM0LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzUudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zNS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM1LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zNS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM2LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzYudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zNi50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzYudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zNy50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM3LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzcudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM3LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzgudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zOC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM4LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zOC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM5LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzkudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zOS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzkudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ180MC50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQwLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDAudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQwLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDEudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180MS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQxLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180MS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQyLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDIudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ180Mi50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDIudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ180My50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQzLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDMudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQzLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDQudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180NC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQ0LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180NC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQ1LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDUudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ180NS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDUudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ180Ni50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQ2LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDYudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQ2LnR4dApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19lbmNvZGVkX3dvcmRzLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19lbmNvZGVkX3dvcmRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0Mzk1ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfX2VuY29kZWRfd29yZHMucHkKQEAgLTAsMCArMSwxODcgQEAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBlbWFpbCBpbXBvcnQgX2VuY29kZWRfd29yZHMgYXMgX2V3Citmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCisKKworY2xhc3MgVGVzdERlY29kZVEoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBkZWYgX3Rlc3Qoc2VsZiwgc291cmNlLCBleF9yZXN1bHQsIGV4X2RlZmVjdHM9W10pOgorICAgICAgICByZXN1bHQsIGRlZmVjdHMgPSBfZXcuZGVjb2RlX3Eoc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhfcmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChkZWZlY3RzLCBleF9kZWZlY3RzKQorCisgICAgZGVmIHRlc3Rfbm9fZW5jb2RlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChiJ2Zvb2JhcicsIGInZm9vYmFyJykKKworICAgIGRlZiB0ZXN0X3NwYWNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChiJ2Zvbz0yMGJhcj0yMCcsIGInZm9vIGJhciAnKQorICAgICAgICBzZWxmLl90ZXN0KGInZm9vX2Jhcl8nLCBiJ2ZvbyBiYXIgJykKKworICAgIGRlZiB0ZXN0X3J1bl9vZl9lbmNvZGVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZm9vPTIwPTIwPTIxPTJDYmFyJywgYidmb28gICEsYmFyJykKKworCitjbGFzcyBUZXN0RGVjb2RlQihUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiBfdGVzdChzZWxmLCBzb3VyY2UsIGV4X3Jlc3VsdCwgZXhfZGVmZWN0cz1bXSk6CisgICAgICAgIHJlc3VsdCwgZGVmZWN0cyA9IF9ldy5kZWNvZGVfYihzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBleF9yZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGRlZmVjdHMsIGV4X2RlZmVjdHMpCisKKyAgICBkZWYgdGVzdF9zaW1wbGUoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYidabTl2JywgYidmb28nKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19wYWRkaW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZG1rJywgYid2aScsIFtlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jaGFyYWN0ZXIoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYidkbVx4MDFrPT09JywgYid2aScsIFtlcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jaGFyYWN0ZXJfYW5kX2JhZF9wYWRkaW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZG1ceDAxaycsIGIndmknLCBbZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0XSkKKworCitjbGFzcyBUZXN0RGVjb2RlKFRlc3RFbWFpbEJhc2UpOgorCisgICAgZGVmIHRlc3Rfd3JvbmdfZm9ybWF0X2lucHV0X3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIF9ldy5kZWNvZGUoJz0/YmFkb25lPz0nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgX2V3LmRlY29kZSgnPT8nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgX2V3LmRlY29kZSgnJykKKworICAgIGRlZiBfdGVzdChzZWxmLCBzb3VyY2UsIHJlc3VsdCwgY2hhcnNldD0ndXMtYXNjaWknLCBsYW5nPScnLCBkZWZlY3RzPVtdKToKKyAgICAgICAgcmVzLCBjaGFyLCBsLCBkID0gX2V3LmRlY29kZShzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCByZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhciwgY2hhcnNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsLCBsYW5nKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChkLCBkZWZlY3RzKQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX3Eoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/cT9mb28/PScsICdmb28nKQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX2Ioc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/Yj9kbWs9Pz0nLCAndmknKQorCisgICAgZGVmIHRlc3RfcV9jYXNlX2lnbm9yZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/UT9mb28/PScsICdmb28nKQorCisgICAgZGVmIHRlc3RfYl9jYXNlX2lnbm9yZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/Qj9kbWs9Pz0nLCAndmknKQorCisgICAgZGVmIHRlc3Rfbm9uX3RyaXZpYWxfcShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnPT9sYXRpbi0xP3E/PTIwRj1mY3I9MjBFbGlzZT0yMD89JywgJyBGw7xyIEVsaXNlICcsICdsYXRpbi0xJykKKworICAgIGRlZiB0ZXN0X3FfZXNjcGFlZF9ieXRlc19wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYic9P3VzLWFzY2lpP3E/PTIwXHhBQ2Zvbz89Jy5kZWNvZGUoJ3VzLWFzY2lpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3Vycm9nYXRlZXNjYXBlJyksCisgICAgICAgICAgICAgICAgICAgJyBcdURDQUNmb28nLAorICAgICAgICAgICAgICAgICAgIGRlZmVjdHMgPSBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfYl91bmRlY29kYWJsZV9ieXRlc19pZ25vcmVkX3dpdGhfZGVmZWN0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInPT91cy1hc2NpaT9iP2RtXHhBQ2s/PScuZGVjb2RlKCd1cy1hc2NpaScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3Vycm9nYXRlZXNjYXBlJyksCisgICAgICAgICAgICAgICAgICAgJ3ZpJywKKyAgICAgICAgICAgICAgICAgICBkZWZlY3RzID0gWworICAgICAgICAgICAgICAgICAgICBlcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3QsCisgICAgICAgICAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdF0pCisKKyAgICBkZWYgdGVzdF9iX2ludmFsaWRfYnl0ZXNfaWdub3JlZF93aXRoX2RlZmVjdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnPT91cy1hc2NpaT9iP2RtXHgwMWs9PT0/PScsCisgICAgICAgICAgICAgICAgICAgJ3ZpJywKKyAgICAgICAgICAgICAgICAgICBkZWZlY3RzID0gW2Vycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdF0pCisKKyAgICBkZWYgdGVzdF9iX2ludmFsaWRfYnl0ZXNfaW5jb3JyZWN0X3BhZGRpbmcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/Yj9kbVx4MDFrPz0nLAorICAgICAgICAgICAgICAgICAgICd2aScsCisgICAgICAgICAgICAgICAgICAgZGVmZWN0cyA9IFsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0LAorICAgICAgICAgICAgICAgICAgICBlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfYl9wYWRkaW5nX2RlZmVjdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnPT91cy1hc2NpaT9iP2Rtaz89JywKKyAgICAgICAgICAgICAgICAgICAndmknLAorICAgICAgICAgICAgICAgICAgICBkZWZlY3RzID0gW2Vycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdF0pCisKKyAgICBkZWYgdGVzdF9ub25udWxsX2xhbmcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWkqaml2ZT9xP3Rlc3Q/PScsICd0ZXN0JywgbGFuZz0naml2ZScpCisKKyAgICBkZWYgdGVzdF91bmtub3duXzhiaXRfY2hhcnNldChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnPT91bmtub3duLThiaXQ/cT9mb289QUNiYXI/PScsCisgICAgICAgICAgICAgICAgICAgYidmb29ceGFjYmFyJy5kZWNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpLAorICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAndW5rbm93bi04Yml0JywKKyAgICAgICAgICAgICAgICAgICBkZWZlY3RzID0gW10pCisKKyAgICBkZWYgdGVzdF91bmtub3duX2NoYXJzZXQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/Zm9vYmFyP3E/Zm9vPUFDYmFyPz0nLAorICAgICAgICAgICAgICAgICAgIGInZm9vXHhhY2JhcicuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKSwKKyAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ2Zvb2JhcicsCisgICAgICAgICAgICAgICAgICAgIyBYWFggU2hvdWxkIHRoaXMgYmUgYSBuZXcgRGVmZWN0IGluc3RlYWQ/CisgICAgICAgICAgICAgICAgICAgZGVmZWN0cyA9IFtlcnJvcnMuQ2hhcnNldEVycm9yXSkKKworCitjbGFzcyBUZXN0RW5jb2RlUShUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiBfdGVzdChzZWxmLCBzcmMsIGV4cGVjdGVkKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlX3Eoc3JjKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9hbGxfc2FmZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChiJ2Zvb2JhcicsICdmb29iYXInKQorCisgICAgZGVmIHRlc3Rfc3BhY2VzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZm9vIGJhciAnLCAnZm9vX2Jhcl8nKQorCisgICAgZGVmIHRlc3RfcnVuX29mX2VuY29kYWJsZXMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYidmb28gICwsYmFyJywgJ2Zvb19fPTJDPTJDYmFyJykKKworCitjbGFzcyBUZXN0RW5jb2RlQihUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiB0ZXN0X3NpbXBsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlX2IoYidmb28nKSwgJ1ptOXYnKQorCisgICAgZGVmIHRlc3RfcGFkZGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlX2IoYid2aScpLCAnZG1rPScpCisKKworY2xhc3MgVGVzdEVuY29kZShUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiB0ZXN0X3Eoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V3LmVuY29kZSgnZm9vJywgJ3V0Zi04JywgJ3EnKSwgJz0/dXRmLTg/cT9mb28/PScpCisKKyAgICBkZWYgdGVzdF9iKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ldy5lbmNvZGUoJ2ZvbycsICd1dGYtOCcsICdiJyksICc9P3V0Zi04P2I/Wm05dj89JykKKworICAgIGRlZiB0ZXN0X2F1dG9fcShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlKCdmb28nLCAndXRmLTgnKSwgJz0/dXRmLTg/cT9mb28/PScpCisKKyAgICBkZWYgdGVzdF9hdXRvX3FfaWZfc2hvcnRfbW9zdGx5X3NhZmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V3LmVuY29kZSgndmkuJywgJ3V0Zi04JyksICc9P3V0Zi04P3E/dmk9MkU/PScpCisKKyAgICBkZWYgdGVzdF9hdXRvX2JfaWZfZW5vdWdoX3Vuc2FmZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlKCcuLi4uLicsICd1dGYtOCcpLCAnPT91dGYtOD9iP0xpNHVMaTQ9Pz0nKQorCisgICAgZGVmIHRlc3RfYXV0b19iX2lmX2xvbmdfdW5zYWZlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ldy5lbmNvZGUoJ3ZpLnZpLnZpLnZpLnZpLicsICd1dGYtOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3V0Zi04P2I/ZG1rdWRta3VkbWt1ZG1rdWRta3U/PScpCisKKyAgICBkZWYgdGVzdF9hdXRvX3FfaWZfbG9uZ19tb3N0bHlfc2FmZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlKCd2aSB2aSB2aS52aSAnLCAndXRmLTgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPT91dGYtOD9xP3ZpX3ZpX3ZpPTJFdmlfPz0nKQorCisgICAgZGVmIHRlc3RfdXRmOF9kZWZhdWx0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ldy5lbmNvZGUoJ2ZvbycpLCAnPT91dGYtOD9xP2Zvbz89JykKKworICAgIGRlZiB0ZXN0X2xhbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V3LmVuY29kZSgnZm9vJywgbGFuZz0naml2ZScpLCAnPT91dGYtOCpqaXZlP3E/Zm9vPz0nKQorCisgICAgZGVmIHRlc3RfdW5rbm93bl84Yml0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ldy5lbmNvZGUoJ2Zvb1x1RENBQ2JhcicsIGNoYXJzZXQ9J3Vua25vd24tOGJpdCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3Vua25vd24tOGJpdD9xP2Zvbz1BQ2Jhcj89JykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMDFlMTkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKQEAgLTAsMCArMSwyNTUyIEBACitpbXBvcnQgc3RyaW5nCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gZW1haWwgaW1wb3J0IF9oZWFkZXJfdmFsdWVfcGFyc2VyIGFzIHBhcnNlcgorZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCitmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlLCBwYXJhbWV0ZXJpemUKKworY2xhc3MgVGVzdFRva2VucyhUZXN0RW1haWxCYXNlKToKKworICAgICMgRVdXaGl0ZVNwYWNlVGVybWluYWwKKworICAgIGRlZiB0ZXN0X0VXV2hpdGVTcGFjZVRlcm1pbmFsKHNlbGYpOgorICAgICAgICB4ID0gcGFyc2VyLkVXV2hpdGVTcGFjZVRlcm1pbmFsKCcgXHQnLCAnZndzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCAnIFx0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoeCksICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudmFsdWUsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZW5jb2RlZCwgJyBcdCcpCisKKyAgICAjIFVuc3RydWN0dXJlZFRva2VuTGlzdAorCisgICAgZGVmIHRlc3RfdW5kZWNvZGFibGVfYnl0ZXNfZXJyb3JfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBiYWRzdHIgPSBiImxlIHBvdWYgY1x4YWZsZWJyZSIuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorICAgICAgICB1bnN0ID0gcGFyc2VyLmdldF91bnN0cnVjdHVyZWQoYmFkc3RyKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbCh1bnN0LmFsbF9kZWZlY3RzLCBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdKQorICAgICAgICBwYXJ0cyA9IGxpc3QodW5zdC5wYXJ0cykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwocGFydHNbMF0uYWxsX2RlZmVjdHMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChwYXJ0c1sxXS5hbGxfZGVmZWN0cywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKHBhcnRzWzJdLmFsbF9kZWZlY3RzLCBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdKQorCisKK2NsYXNzIFRlc3RQYXJzZXJNaXhpbjoKKworICAgIGRlZiBfYXNzZXJ0X3Jlc3VsdHMoc2VsZiwgdGwsIHJlc3QsIHN0cmluZywgdmFsdWUsIGRlZmVjdHMsIHJlbWFpbmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzPU5vbmUpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih0bCksIHN0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0bC52YWx1ZSwgdmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKHRsLmFsbF9kZWZlY3RzLCBkZWZlY3RzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3QsIHJlbWFpbmRlcikKKyAgICAgICAgaWYgY29tbWVudHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRsLmNvbW1lbnRzLCBjb21tZW50cykKKworICAgIGRlZiBfdGVzdF9nZXRfeChzZWxmLCBtZXRob2QsIHNvdXJjZSwgc3RyaW5nLCB2YWx1ZSwgZGVmZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyLCBjb21tZW50cz1Ob25lKToKKyAgICAgICAgdGwsIHJlc3QgPSBtZXRob2Qoc291cmNlKQorICAgICAgICBzZWxmLl9hc3NlcnRfcmVzdWx0cyh0bCwgcmVzdCwgc3RyaW5nLCB2YWx1ZSwgZGVmZWN0cywgcmVtYWluZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50cz1Ob25lKQorICAgICAgICByZXR1cm4gdGwKKworICAgIGRlZiBfdGVzdF9wYXJzZV94KHNlbGYsIG1ldGhvZCwgaW5wdXQsIHN0cmluZywgdmFsdWUsIGRlZmVjdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzPU5vbmUpOgorICAgICAgICB0bCA9IG1ldGhvZChpbnB1dCkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3Jlc3VsdHModGwsICcnLCBzdHJpbmcsIHZhbHVlLCBkZWZlY3RzLCAnJywgY29tbWVudHMpCisgICAgICAgIHJldHVybiB0bAorCisKK2NsYXNzIFRlc3RQYXJzZXIoVGVzdFBhcnNlck1peGluLCBUZXN0RW1haWxCYXNlKToKKworICAgICMgX3dzcF9zcGxpdHRlcgorCisgICAgcmZjX3ByaW50YWJsZV9hc2NpaSA9IGJ5dGVzKHJhbmdlKDMzLCAxMjcpKS5kZWNvZGUoJ2FzY2lpJykKKyAgICByZmNfYXRleHRfY2hhcnMgPSAoc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIhIyQlJlwnKistLz0/Xl9ge318fiIpCisgICAgcmZjX2R0ZXh0X2NoYXJzID0gcmZjX3ByaW50YWJsZV9hc2NpaS50cmFuc2xhdGUoc3RyLm1ha2V0cmFucygnJywnJyxyJ1xbXScpKQorCisgICAgZGVmIHRlc3RfX3dzcF9zcGxpdHRlcl9vbmVfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuX3dzcF9zcGxpdHRlcignZm9vJywgMSksIFsnZm9vJ10pCisKKyAgICBkZWYgdGVzdF9fd3NwX3NwbGl0dGVyX3R3b193b3JkcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuX3dzcF9zcGxpdHRlcignZm9vIGRlZicsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2ZvbycsICcgJywgJ2RlZiddKQorCisgICAgZGVmIHRlc3RfX3dzcF9zcGxpdHRlcl93c19ydW5zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlci5fd3NwX3NwbGl0dGVyKCdmb28gXHQgZGVmIGppaycsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnZm9vJywgJyBcdCAnLCAnZGVmIGppayddKQorCisKKyAgICAjIGdldF9md3MKKworICAgIGRlZiB0ZXN0X2dldF9md3Nfb25seShzZWxmKToKKyAgICAgICAgZndzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Z3cywgJyBcdCAgJywgJyBcdCAgJywgJyAnLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZndzLnRva2VuX3R5cGUsICdmd3MnKQorCisgICAgZGVmIHRlc3RfZ2V0X2Z3c19zcGFjZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Z3cywgJyBmb28nLCAnICcsICcgJywgW10sICdmb28nKQorCisgICAgZGVmIHRlc3RfZ2V0X2Z3c193c19ydW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9md3MsICcgXHQgZm9vICcsICcgXHQgJywgJyAnLCBbXSwgJ2ZvbyAnKQorCisgICAgIyBnZXRfZW5jb2RlZF93b3JkCisKKyAgICBkZWYgdGVzdF9nZXRfZW5jb2RlZF93b3JkX21pc3Npbmdfc3RhcnRfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZW5jb2RlZF93b3JkKCdhYmMnKQorCisgICAgZGVmIHRlc3RfZ2V0X2VuY29kZWRfd29yZF9taXNzaW5nX2VuZF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9lbmNvZGVkX3dvcmQoJz0/YWJjJykKKworICAgIGRlZiB0ZXN0X2dldF9lbmNvZGVkX3dvcmRfbWlzc2luZ19taWRkbGVfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZW5jb2RlZF93b3JkKCc9P2FiYz89JykKKworICAgIGRlZiB0ZXN0X2dldF9lbmNvZGVkX3dvcmRfdmFsaWRfZXcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9lbmNvZGVkX3dvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgJz0/dXMtYXNjaWk/cT90aGlzX2lzX2FfdGVzdD89ICBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGhpcyBpcyBhIHRlc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlzIGlzIGEgdGVzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgYmlyZCcpCisKKyAgICBkZWYgdGVzdF9nZXRfZW5jb2RlZF93b3JkX2ludGVybmFsX3NwYWNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2VuY29kZWRfd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPT91cy1hc2NpaT9xP3RoaXMgaXMgYSB0ZXN0Pz0gIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlzIGlzIGEgdGVzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXMgaXMgYSB0ZXN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgIGJpcmQnKQorCisgICAgZGVmIHRlc3RfZ2V0X2VuY29kZWRfd29yZF9nZXRzX2ZpcnN0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZW5jb2RlZF93b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/Zmlyc3Q/PSAgPT91dGYtOD9xP3NlY29uZD89JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlyc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgPT91dGYtOD9xP3NlY29uZD89JykKKworICAgIGRlZiB0ZXN0X2dldF9lbmNvZGVkX3dvcmRfZ2V0c19maXJzdF9ldmVuX2lmX25vX3NwYWNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZW5jb2RlZF93b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/Zmlyc3Q/PT0/dXRmLTg/cT9zZWNvbmQ/PScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpcnN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlyc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3V0Zi04P3E/c2Vjb25kPz0nKQorCisgICAgZGVmIHRlc3RfZ2V0X2VuY29kZWRfd29yZF9zZXRzX2V4dHJhX2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIGV3ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2VuY29kZWRfd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPT91cy1hc2NpaSpqaXZlP3E/Zmlyc3Rfc2Vjb25kPz0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCBzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCBzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV3LmVuY29kZWQsICc9P3VzLWFzY2lpKmppdmU/cT9maXJzdF9zZWNvbmQ/PScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXcuY2hhcnNldCwgJ3VzLWFzY2lpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldy5sYW5nLCAnaml2ZScpCisKKyAgICBkZWYgdGVzdF9nZXRfZW5jb2RlZF93b3JkX2xhbmdfZGVmYXVsdF9pc19ibGFuayhzZWxmKToKKyAgICAgICAgZXcgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZW5jb2RlZF93b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/Zmlyc3Rfc2Vjb25kPz0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCBzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCBzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV3LmVuY29kZWQsICc9P3VzLWFzY2lpP3E/Zmlyc3Rfc2Vjb25kPz0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV3LmNoYXJzZXQsICd1cy1hc2NpaScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXcubGFuZywgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfZW5jb2RlZF93b3JkX25vbl9wcmludGFibGVfZGVmZWN0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZW5jb2RlZF93b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/Zmlyc3RceDAyc2Vjb25kPz0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdFx4MDJzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdFx4MDJzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF9lbmNvZGVkX3dvcmRfbGVhZGluZ19pbnRlcm5hbF9zcGFjZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2VuY29kZWRfd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/PTIwZm9vPz0nLAorICAgICAgICAgICAgICAgICAgICAgICAgJyBmb28nLAorICAgICAgICAgICAgICAgICAgICAgICAgJyBmb28nLAorICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAnJykKKworICAgICMgZ2V0X3Vuc3RydWN0dXJlZAorCisgICAgZGVmIF9nZXRfdW5zdChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHRva2VuID0gcGFyc2VyLmdldF91bnN0cnVjdHVyZWQodmFsdWUpCisgICAgICAgIHJldHVybiB0b2tlbiwgJycKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfbnVsbChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJycsICcnLCAnJywgW10sICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9vbmVfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJ2ZvbycsICdmb28nLCAnZm9vJywgW10sICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9ub3JtYWxfcGhyYXNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnZm9vIGJhciBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBiYXIgYmlyZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX25vcm1hbF9waHJhc2Vfd2l0aF93aGl0ZXNwYWNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnZm9vIFx0IGJhciAgICAgIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIFx0IGJhciAgICAgIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIGJhciBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9sZWFkaW5nX3doaXRlc3BhY2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsICcgIGZvbyBiYXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICBmb28gYmFyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBmb28gYmFyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF90cmFpbGluZ193aGl0ZXNwYWNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnZm9vIGJhciAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBiYXIgICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfbGVhZGluZ19hbmRfdHJhaWxpbmdfd2hpdGVzcGFjZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJyAgZm9vIGJhciAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgZm9vIGJhciAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBmb28gYmFyICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfb25lX3ZhbGlkX2V3X25vX3dzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnPT91cy1hc2NpaT9xP2Jhcj89JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX29uZV9ld190cmFpbGluZ193cyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJz0/dXMtYXNjaWk/cT9iYXI/PSAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhciAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhciAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX29uZV92YWxpZF9ld190cmFpbGluZ190ZXh0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnPT91cy1hc2NpaT9xP2Jhcj89IGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFyIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFyIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX3BocmFzZV93aXRoX2V3X2luX21pZGRsZV9vZl90ZXh0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnZm9vID0/dXMtYXNjaWk/cT9iYXI/PSBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBiYXIgYmlyZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX3BocmFzZV93aXRoX3R3b19ldyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICdmb28gPT91cy1hc2NpaT9xP2Jhcj89ID0/dXMtYXNjaWk/cT9iaXJkPz0nLAorICAgICAgICAgICAgJ2ZvbyBiYXJiaXJkJywKKyAgICAgICAgICAgICdmb28gYmFyYmlyZCcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9waHJhc2Vfd2l0aF90d29fZXdfdHJhaWxpbmdfd3Moc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsCisgICAgICAgICAgICAnZm9vID0/dXMtYXNjaWk/cT9iYXI/PSA9P3VzLWFzY2lpP3E/YmlyZD89ICAgJywKKyAgICAgICAgICAgICdmb28gYmFyYmlyZCAgICcsCisgICAgICAgICAgICAnZm9vIGJhcmJpcmQgJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX3BocmFzZV93aXRoX2V3X3dpdGhfbGVhZGluZ193cyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICcgID0/dXMtYXNjaWk/cT9iYXI/PScsCisgICAgICAgICAgICAnICBiYXInLAorICAgICAgICAgICAgJyBiYXInLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfcGhyYXNlX3dpdGhfdHdvX2V3X2V4dHJhX3dzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LAorICAgICAgICAgICAgJ2ZvbyA9P3VzLWFzY2lpP3E/YmFyPz0gXHQgID0/dXMtYXNjaWk/cT9iaXJkPz0nLAorICAgICAgICAgICAgJ2ZvbyBiYXJiaXJkJywKKyAgICAgICAgICAgICdmb28gYmFyYmlyZCcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF90d29fZXdfZXh0cmFfd3NfdHJhaWxpbmdfdGV4dChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/dGVzdD89ICAgPT91cy1hc2NpaT9xP2Zvbz89ICB2YWwnLAorICAgICAgICAgICAgJ3Rlc3Rmb28gIHZhbCcsCisgICAgICAgICAgICAndGVzdGZvbyB2YWwnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfZXdfd2l0aF9pbnRlcm5hbF93cyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P2lzby04ODU5LTE/cT9oZWxsbz0yMHdvcmxkPz0nLAorICAgICAgICAgICAgJ2hlbGxvIHdvcmxkJywKKyAgICAgICAgICAgICdoZWxsbyB3b3JsZCcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9ld193aXRoX2ludGVybmFsX2xlYWRpbmdfd3Moc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsCisgICAgICAgICAgICAnICAgPT91cy1hc2NpaT9xPz0yMHRlc3Q/PSAgID0/dXMtYXNjaWk/cT89MjBmb28/PSAgdmFsJywKKyAgICAgICAgICAgICcgICAgdGVzdCBmb28gIHZhbCcsCisgICAgICAgICAgICAnICB0ZXN0IGZvbyB2YWwnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfaW52YWlsZF9ldyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P3Rlc3QgdmFsJywKKyAgICAgICAgICAgICc9P3Rlc3QgdmFsJywKKyAgICAgICAgICAgICc9P3Rlc3QgdmFsJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX3VuZGVjb2RhYmxlX2J5dGVzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LAorICAgICAgICAgICAgYid0ZXN0IFx4QUNmb28gIHZhbCcuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKSwKKyAgICAgICAgICAgICd0ZXN0IFx1RENBQ2ZvbyAgdmFsJywKKyAgICAgICAgICAgICd0ZXN0IFx1RENBQ2ZvbyB2YWwnLAorICAgICAgICAgICAgW2Vycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0XSwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF91bmRlY29kYWJsZV9ieXRlc19pbl9FVyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgIChiJz0/dXMtYXNjaWk/cT89MjB0ZXN0Pz0gICA9P3VzLWFzY2lpP3E/PTIwXHhBQ2Zvbz89JworICAgICAgICAgICAgICAgIGInICB2YWwnKS5kZWNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpLAorICAgICAgICAgICAgJyB0ZXN0IFx1RENBQ2ZvbyAgdmFsJywKKyAgICAgICAgICAgICcgdGVzdCBcdURDQUNmb28gdmFsJywKKyAgICAgICAgICAgIFtlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdF0qMiwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9taXNzaW5nX2Jhc2U2NF9wYWRkaW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LAorICAgICAgICAgICAgJz0/dXRmLTg/Yj9kbWs/PScsCisgICAgICAgICAgICAndmknLAorICAgICAgICAgICAgJ3ZpJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RdLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX2ludmFsaWRfYmFzZTY0X2NoYXJhY3RlcihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P3V0Zi04P2I/ZG1ceDAxaz09PT89JywKKyAgICAgICAgICAgICd2aScsCisgICAgICAgICAgICAndmknLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdF0sCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfaW52YWxpZF9iYXNlNjRfY2hhcmFjdGVyX2FuZF9iYWRfcGFkZGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P3V0Zi04P2I/ZG1ceDAxaz89JywKKyAgICAgICAgICAgICd2aScsCisgICAgICAgICAgICAndmknLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdCwKKyAgICAgICAgICAgICBlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RdLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX25vX3doaXRlc3BhY2VfYmV0d2Vlbl9ld3Moc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsCisgICAgICAgICAgICAnPT91dGYtOD9xP2Zvbz89PT91dGYtOD9xP2Jhcj89JywKKyAgICAgICAgICAgICdmb29iYXInLAorICAgICAgICAgICAgJ2Zvb2JhcicsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisKKyAgICAjIGdldF9xcF9jdGV4dAorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X29ubHkoc2VsZik6CisgICAgICAgIHB0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vYmFyJywgJ2Zvb2JhcicsICcgJywgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB0ZXh0LnRva2VuX3R5cGUsICdwdGV4dCcpCisKKyAgICBkZWYgdGVzdF9nZXRfcXBfY3RleHRfYWxsX3ByaW50YWJsZXMoc2VsZik6CisgICAgICAgIHdpdGhfcXAgPSBzZWxmLnJmY19wcmludGFibGVfYXNjaWkucmVwbGFjZSgnXFwnLCAnXFxcXCcpCisgICAgICAgIHdpdGhfcXAgPSB3aXRoX3FwLiAgcmVwbGFjZSgnKCcsIHInXCgnKQorICAgICAgICB3aXRoX3FwID0gd2l0aF9xcC5yZXBsYWNlKCcpJywgcidcKScpCisgICAgICAgIHB0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aF9xcCwgc2VsZi5yZmNfcHJpbnRhYmxlX2FzY2lpLCAnICcsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF90d29fd29yZHNfZ2V0c19maXJzdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBkZScsICdmb28nLCAnICcsIFtdLCAnIGRlJykKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF9mb2xsb3dpbmdfd3NwX3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBcdFx0ZGUnLCAnZm9vJywgJyAnLCBbXSwgJyBcdFx0ZGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X3VwX3RvX2Nsb3NlX3BhcmVuX29ubHkoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xcF9jdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28pJywgJ2ZvbycsICcgJywgW10sICcpJykKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF93c3BfYmVmb3JlX2Nsb3NlX3BhcmVuX3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyAgKScsICdmb28nLCAnICcsIFtdLCAnICApJykKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF9jbG9zZV9wYXJlbl9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyliYXInLCAnZm9vJywgJyAnLCBbXSwgJyliYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X3VwX3RvX29wZW5fcGFyZW5fb25seShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbygnLCAnZm9vJywgJyAnLCBbXSwgJygnKQorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X3dzcF9iZWZvcmVfb3Blbl9wYXJlbl9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xcF9jdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gICgnLCAnZm9vJywgJyAnLCBbXSwgJyAgKCcpCisKKyAgICBkZWYgdGVzdF9nZXRfcXBfY3RleHRfb3Blbl9wYXJlbl9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyhiYXInLCAnZm9vJywgJyAnLCBbXSwgJyhiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X25vbl9wcmludGFibGVzKHNlbGYpOgorICAgICAgICBwdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xcF9jdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb1x4MDBiYXIpJywgJ2Zvb1x4MDBiYXInLCAnICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJyknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB0ZXh0LmRlZmVjdHNbMF0ubm9uX3ByaW50YWJsZXNbMF0sICdceDAwJykKKworICAgICMgZ2V0X3Fjb250ZW50CisKKyAgICBkZWYgdGVzdF9nZXRfcWNvbnRlbnRfb25seShzZWxmKToKKyAgICAgICAgcHRleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcWNvbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb29iYXInLCAnZm9vYmFyJywgJ2Zvb2JhcicsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdGV4dC50b2tlbl90eXBlLCAncHRleHQnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Fjb250ZW50X2FsbF9wcmludGFibGVzKHNlbGYpOgorICAgICAgICB3aXRoX3FwID0gc2VsZi5yZmNfcHJpbnRhYmxlX2FzY2lpLnJlcGxhY2UoJ1xcJywgJ1xcXFwnKQorICAgICAgICB3aXRoX3FwID0gd2l0aF9xcC4gIHJlcGxhY2UoJyInLCByJ1wiJykKKyAgICAgICAgcHRleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcWNvbnRlbnQsIHdpdGhfcXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJmY19wcmludGFibGVfYXNjaWksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJmY19wcmludGFibGVfYXNjaWksIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9xY29udGVudF90d29fd29yZHNfZ2V0c19maXJzdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3Fjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBkZScsICdmb28nLCAnZm9vJywgW10sICcgZGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Fjb250ZW50X2ZvbGxvd2luZ193c3BfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcWNvbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIFx0XHRkZScsICdmb28nLCAnZm9vJywgW10sICcgXHRcdGRlJykKKworICAgIGRlZiB0ZXN0X2dldF9xY29udGVudF91cF90b19kcXVvdGVfb25seShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3Fjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyInLCAnZm9vJywgJ2ZvbycsIFtdLCAnIicpCisKKyAgICBkZWYgdGVzdF9nZXRfcWNvbnRlbnRfd3NwX2JlZm9yZV9jbG9zZV9wYXJlbl9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xY29udGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gICInLCAnZm9vJywgJ2ZvbycsIFtdLCAnICAiJykKKworICAgIGRlZiB0ZXN0X2dldF9xY29udGVudF9jbG9zZV9wYXJlbl9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3Fjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyJiYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnImJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfcWNvbnRlbnRfbm9uX3ByaW50YWJsZXMoc2VsZik6CisgICAgICAgIHB0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3Fjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vXHgwMGZnIicsICdmb29ceDAwZmcnLCAnZm9vXHgwMGZnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnIicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHRleHQuZGVmZWN0c1swXS5ub25fcHJpbnRhYmxlc1swXSwgJ1x4MDAnKQorCisgICAgIyBnZXRfYXRleHQKKworICAgIGRlZiB0ZXN0X2dldF9hdGV4dF9vbmx5KHNlbGYpOgorICAgICAgICBhdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb2JhcicsICdmb29iYXInLCAnZm9vYmFyJywgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0ZXh0LnRva2VuX3R5cGUsICdhdGV4dCcpCisKKyAgICBkZWYgdGVzdF9nZXRfYXRleHRfYWxsX2F0ZXh0KHNlbGYpOgorICAgICAgICBhdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdGV4dCwgc2VsZi5yZmNfYXRleHRfY2hhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJmY19hdGV4dF9jaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmZjX2F0ZXh0X2NoYXJzLCBbXSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfYXRleHRfdHdvX3dvcmRzX2dldHNfZmlyc3Qoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyJywgJ2ZvbycsICdmb28nLCBbXSwgJyBiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0ZXh0X2ZvbGxvd2luZ193c3BfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIFx0XHRiYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnIFx0XHRiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0ZXh0X3VwX3RvX3NwZWNpYWwoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb29AYmFyJywgJ2ZvbycsICdmb28nLCBbXSwgJ0BiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0ZXh0X25vbl9wcmludGFibGVzKHNlbGYpOgorICAgICAgICBhdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb1x4MDBiYXIoJywgJ2Zvb1x4MDBiYXInLCAnZm9vXHgwMGJhcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJygnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0ZXh0LmRlZmVjdHNbMF0ubm9uX3ByaW50YWJsZXNbMF0sICdceDAwJykKKworICAgICMgZ2V0X2JhcmVfcXVvdGVkX3N0cmluZworCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19vbmx5KHNlbGYpOgorICAgICAgICBicXMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciZm9vIicsICciZm9vIicsICdmb28nLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnFzLnRva2VuX3R5cGUsICdiYXJlLXF1b3RlZC1zdHJpbmcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19tdXN0X3N0YXJ0X3dpdGhfZHF1b3RlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nKCdmb28iJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2JhcmVfcXVvdGVkX3N0cmluZygnICAiZm9vIicpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX2ZvbGxvd2luZ193c3BfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgICciZm9vIlx0IGJhcicsICciZm9vIicsICdmb28nLCBbXSwgJ1x0IGJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX211bHRpcGxlX3dvcmRzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgICciZm9vIGJhciBtb28iJywgJyJmb28gYmFyIG1vbyInLCAnZm9vIGJhciBtb28nLCBbXSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX211bHRpcGxlX3dvcmRzX3dzcF9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9iYXJlX3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAgJyIgZm9vICBtb29cdCInLCAnIiBmb28gIG1vb1x0IicsICcgZm9vICBtb29cdCcsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9iYXJlX3F1b3RlZF9zdHJpbmdfZW5kX2RxdW90ZV9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2JhcmVfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICAnImZvbyJiYXInLCAnImZvbyInLCAnZm9vJywgW10sICdiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19xdW90ZWRfZHF1b3RlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgIHInImZvb1wiaW4iYScsIHInImZvb1wiaW4iJywgJ2ZvbyJpbicsIFtdLCAnYScpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX25vbl9wcmludGFibGVzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgICciYVx4MDFhIicsICciYVx4MDFhIicsICdhXHgwMWEnLAorICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX25vX2VuZF9kcXVvdGUoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9iYXJlX3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAgJyJmb28nLCAnImZvbyInLCAnZm9vJywKKyAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLCAnJykKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2JhcmVfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICAnImZvbyAnLCAnImZvbyAiJywgJ2ZvbyAnLAorICAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19lbXB0eV9xdW90ZXMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9iYXJlX3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnIiInLCAnIiInLCAnJywgW10sICcnKQorCisgICAgIyBnZXRfY29tbWVudAorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfb25seShzZWxmKToKKyAgICAgICAgY29tbWVudCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJyhjb21tZW50KScsICcoY29tbWVudCknLCAnICcsIFtdLCAnJywgWydjb21tZW50J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWVudC50b2tlbl90eXBlLCAnY29tbWVudCcpCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9tdXN0X3N0YXJ0X3dpdGhfcGFyZW4oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9jb21tZW50KCdmb28iJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2NvbW1lbnQoJyAgKGZvbyInKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfZm9sbG93aW5nX3dzcF9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJyhjb21tZW50KSAgXHQnLCAnKGNvbW1lbnQpJywgJyAnLCBbXSwgJyAgXHQnLCBbJ2NvbW1lbnQnXSkKKworICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X211bHRpcGxlX3dvcmRzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vIGJhcikgIFx0JywgJyhmb28gYmFyKScsICcgJywgW10sICcgIFx0JywgWydmb28gYmFyJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9tdWx0aXBsZV93b3Jkc193c3BfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoIGZvbyAgYmFyXHQgKSAgXHQnLCAnKCBmb28gIGJhclx0ICknLCAnICcsIFtdLCAnICBcdCcsCisgICAgICAgICAgICAgICAgWycgZm9vICBiYXJcdCAnXSkKKworICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X2VuZF9wYXJlbl9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCisgICAgICAgICAgICAnKGZvbyliYXInLCAnKGZvbyknLCAnICcsIFtdLCAnYmFyJywgWydmb28nXSkKKworICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X3F1b3RlZF9wYXJlbnMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJyhmb29cKSBcKFwpYmFyKScsICcoZm9vXCkgXChcKWJhciknLCAnICcsIFtdLCAnJywgWydmb28pICgpYmFyJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9ub25fcHJpbnRhYmxlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vXHg3RmJhciknLCAnKGZvb1x4N0ZiYXIpJywgJyAnLAorICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnJywgWydmb29ceDdGYmFyJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9ub19lbmRfcGFyZW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJyhmb28gYmFyJywgJyhmb28gYmFyKScsICcgJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sICcnLCBbJ2ZvbyBiYXInXSkKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCisgICAgICAgICAgICAnKGZvbyBiYXIgICcsICcoZm9vIGJhciAgKScsICcgJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sICcnLCBbJ2ZvbyBiYXIgICddKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfbmVzdGVkX2NvbW1lbnQoc2VsZik6CisgICAgICAgIGNvbW1lbnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vKGJhcikpJywgJyhmb28oYmFyKSknLCAnICcsIFtdLCAnJywgWydmb28oYmFyKSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1lbnRbMV0uY29udGVudCwgJ2JhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9uZXN0ZWRfY29tbWVudF93c3Aoc2VsZik6CisgICAgICAgIGNvbW1lbnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vICggYmFyICkgKScsICcoZm9vICggYmFyICkgKScsICcgJywgW10sICcnLCBbJ2ZvbyAoIGJhciApICddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1lbnRbMl0uY29udGVudCwgJyBiYXIgJykKKworICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X2VtcHR5X2NvbW1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJygpJywgJygpJywgJyAnLCBbXSwgJycsIFsnJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9tdWx0aXBsZV9uZXN0aW5nKHNlbGYpOgorICAgICAgICBjb21tZW50ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCisgICAgICAgICAgICAnKCgoKChmb28pKSkpKScsICcoKCgoKGZvbykpKSkpJywgJyAnLCBbXSwgJycsIFsnKCgoKGZvbykpKSknXSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNCwgMCwgLTEpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tZW50WzBdLmNvbnRlbnQsICcoJyooaS0xKSsnZm9vJysnKScqKGktMSkpCisgICAgICAgICAgICBjb21tZW50ID0gY29tbWVudFswXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1lbnQuY29udGVudCwgJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9taXNzaW5nX2VuZF9vZl9uZXN0aW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoKCgoKGZvbykpKScsICcoKCgoKGZvbykpKSkpJywgJyAnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLCAnJywgWycoKCgoZm9vKSkpKSddKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfcXNfaW5fbmVzdGVkX2NvbW1lbnQoc2VsZik6CisgICAgICAgIGNvbW1lbnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vIChiXCkpKScsICcoZm9vIChiXCkpKScsICcgJywgW10sICcnLCBbJ2ZvbyAoYlwpKSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1lbnRbMl0uY29udGVudCwgJ2IpJykKKworICAgICMgZ2V0X2Nmd3MKKworICAgIGRlZiB0ZXN0X2dldF9jZndzX29ubHlfd3Moc2VsZik6CisgICAgICAgIGNmd3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY2Z3cywKKyAgICAgICAgICAgICcgIFx0IFx0JywgJyAgXHQgXHQnLCAnICcsIFtdLCAnJywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2Z3cy50b2tlbl90eXBlLCAnY2Z3cycpCisKKyAgICBkZWYgdGVzdF9nZXRfY2Z3c19vbmx5X2NvbW1lbnQoc2VsZik6CisgICAgICAgIGNmd3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY2Z3cywKKyAgICAgICAgICAgICcoZm9vKScsICcoZm9vKScsICcgJywgW10sICcnLCBbJ2ZvbyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmd3NbMF0uY29udGVudCwgJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9nZXRfY2Z3c19vbmx5X21peGVkKHNlbGYpOgorICAgICAgICBjZndzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Nmd3MsCisgICAgICAgICAgICAnIChmb28gKSAgKCBiYXIpICcsICcgKGZvbyApICAoIGJhcikgJywgJyAnLCBbXSwgJycsCisgICAgICAgICAgICAgICAgWydmb28gJywgJyBiYXInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZndzWzFdLmNvbnRlbnQsICdmb28gJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZndzWzNdLmNvbnRlbnQsICcgYmFyJykKKworICAgIGRlZiB0ZXN0X2dldF9jZndzX2VuZHNfYXRfbm9uX2xlYWRlcihzZWxmKToKKyAgICAgICAgY2Z3cyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jZndzLAorICAgICAgICAgICAgJyhmb28pIGJhcicsICcoZm9vKSAnLCAnICcsIFtdLCAnYmFyJywgWydmb28nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZndzWzBdLmNvbnRlbnQsICdmb28nKQorCisgICAgZGVmIHRlc3RfZ2V0X2Nmd3NfZW5kc19hdF9ub25fcHJpbnRhYmxlKHNlbGYpOgorICAgICAgICBjZndzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Nmd3MsCisgICAgICAgICAgICAnKGZvbykgXHgwNycsICcoZm9vKSAnLCAnICcsIFtdLCAnXHgwNycsIFsnZm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2Z3c1swXS5jb250ZW50LCAnZm9vJykKKworICAgIGRlZiB0ZXN0X2dldF9jZndzX25vbl9wcmludGFibGVfaW5fY29tbWVudChzZWxmKToKKyAgICAgICAgY2Z3cyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jZndzLAorICAgICAgICAgICAgJyhmb28gXHgwNykgInRlc3QiJywgJyhmb28gXHgwNykgJywgJyAnLAorICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnInRlc3QiJywgWydmb28gXHgwNyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmd3NbMF0uY29udGVudCwgJ2ZvbyBceDA3JykKKworICAgIGRlZiB0ZXN0X2dldF9jZndzX2hlYWRlcl9lbmRzX2luX2NvbW1lbnQoc2VsZik6CisgICAgICAgIGNmd3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY2Z3cywKKyAgICAgICAgICAgICcgIChmb28gJywgJyAgKGZvbyApJywgJyAnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwgJycsIFsnZm9vICddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmd3NbMV0uY29udGVudCwgJ2ZvbyAnKQorCisgICAgZGVmIHRlc3RfZ2V0X2Nmd3NfbXVsdGlwbGVfbmVzdGVkX2NvbW1lbnRzKHNlbGYpOgorICAgICAgICBjZndzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Nmd3MsCisgICAgICAgICAgICAnKGZvbyAoYmFyKSkgKChhKShhKSknLCAnKGZvbyAoYmFyKSkgKChhKShhKSknLCAnICcsIFtdLAorICAgICAgICAgICAgICAgICcnLCBbJ2ZvbyAoYmFyKScsICcoYSkoYSknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZndzWzBdLmNvbW1lbnRzLCBbJ2ZvbyAoYmFyKSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmd3NbMl0uY29tbWVudHMsIFsnKGEpKGEpJ10pCisKKyAgICAjIGdldF9xdW90ZWRfc3RyaW5nCisKKyAgICBkZWYgdGVzdF9nZXRfcXVvdGVkX3N0cmluZ19vbmx5KHNlbGYpOgorICAgICAgICBxcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgJyJib2IiJywgJyJib2IiJywgJ2JvYicsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy50b2tlbl90eXBlLCAncXVvdGVkLXN0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMucXVvdGVkX3ZhbHVlLCAnImJvYiInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLmNvbnRlbnQsICdib2InKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfd2l0aF93c3Aoc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnXHQgImJvYiIgICcsICdcdCAiYm9iIiAgJywgJyBib2IgJywgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLnF1b3RlZF92YWx1ZSwgJyAiYm9iIiAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLmNvbnRlbnQsICdib2InKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfd2l0aF9jb21tZW50c19hbmRfd3NwKHNlbGYpOgorICAgICAgICBxcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgJyAoZm9vKSAiYm9iIihiYXIpJywgJyAoZm9vKSAiYm9iIihiYXIpJywgJyBib2IgJywgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzBdWzFdLmNvbnRlbnQsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzJdWzBdLmNvbnRlbnQsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLmNvbnRlbnQsICdib2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLnF1b3RlZF92YWx1ZSwgJyAiYm9iIiAnKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfd2l0aF9tdWx0aXBsZV9jb21tZW50cyhzZWxmKToKKyAgICAgICAgcXMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICcgKGZvbykgKGJhcikgImJvYiIoYmlyZCknLCAnIChmb28pIChiYXIpICJib2IiKGJpcmQpJywgJyBib2IgJywKKyAgICAgICAgICAgICAgICBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXNbMF0uY29tbWVudHMsIFsnZm9vJywgJ2JhciddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzJdLmNvbW1lbnRzLCBbJ2JpcmQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5jb250ZW50LCAnYm9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5xdW90ZWRfdmFsdWUsICcgImJvYiIgJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX25vbl9wcmludGFibGVfaW5fY29tbWVudChzZWxmKToKKyAgICAgICAgcXMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICcgKFx4MEEpICJib2IiJywgJyAoXHgwQSkgImJvYiInLCAnIGJvYicsCisgICAgICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxc1swXS5jb21tZW50cywgWydceDBBJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMuY29udGVudCwgJ2JvYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMucXVvdGVkX3ZhbHVlLCAnICJib2IiJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX25vbl9wcmludGFibGVfaW5fcWNvbnRlbnQoc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnIChhKSAiYVx4MEIiJywgJyAoYSkgImFceDBCIicsICcgYVx4MEInLAorICAgICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXNbMF0uY29tbWVudHMsIFsnYSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLmNvbnRlbnQsICdhXHgwQicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMucXVvdGVkX3ZhbHVlLCAnICJhXHgwQiInKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfaW50ZXJuYWxfd3Moc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnIChhKSAiZm9vICBiYXIgIicsICcgKGEpICJmb28gIGJhciAiJywgJyBmb28gIGJhciAnLAorICAgICAgICAgICAgICAgIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxc1swXS5jb21tZW50cywgWydhJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMuY29udGVudCwgJ2ZvbyAgYmFyICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMucXVvdGVkX3ZhbHVlLCAnICJmb28gIGJhciAiJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX2hlYWRlcl9lbmRzX2luX2NvbW1lbnQoc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnIChhKSAiYm9iIiAoYScsICcgKGEpICJib2IiIChhKScsICcgYm9iICcsCisgICAgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXNbMF0uY29tbWVudHMsIFsnYSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzJdLmNvbW1lbnRzLCBbJ2EnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5jb250ZW50LCAnYm9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5xdW90ZWRfdmFsdWUsICcgImJvYiIgJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX2hlYWRlcl9lbmRzX2luX3Fjb250ZW50KHNlbGYpOgorICAgICAgICBxcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgJyAoYSkgImJvYicsICcgKGEpICJib2IiJywgJyBib2InLAorICAgICAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzBdLmNvbW1lbnRzLCBbJ2EnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5jb250ZW50LCAnYm9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5xdW90ZWRfdmFsdWUsICcgImJvYiInKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfbm9fcXVvdGVkX3N0cmluZyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcoJyAoYWIpIHh5eicpCisKKyAgICBkZWYgdGVzdF9nZXRfcXVvdGVkX3N0cmluZ19xc19lbmRzX2F0X25vbmNmd3Moc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnXHQgImJvYiIgZmVlJywgJ1x0ICJib2IiICcsICcgYm9iICcsIFtdLCAnZmVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5jb250ZW50LCAnYm9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5xdW90ZWRfdmFsdWUsICcgImJvYiIgJykKKworICAgICMgZ2V0X2F0b20KKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX29ubHkoc2VsZik6CisgICAgICAgIGF0b20gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRvbSwKKyAgICAgICAgICAgICdib2InLCAnYm9iJywgJ2JvYicsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdG9tLnRva2VuX3R5cGUsICdhdG9tJykKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX3dpdGhfd3NwKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRvbSwKKyAgICAgICAgICAgICdcdCBib2IgICcsICdcdCBib2IgICcsICcgYm9iICcsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX3dpdGhfY29tbWVudHNfYW5kX3dzcChzZWxmKToKKyAgICAgICAgYXRvbSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdG9tLAorICAgICAgICAgICAgJyAoZm9vKSBib2IoYmFyKScsICcgKGZvbykgYm9iKGJhciknLCAnIGJvYiAnLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRvbVswXVsxXS5jb250ZW50LCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdG9tWzJdWzBdLmNvbnRlbnQsICdiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0b21fd2l0aF9tdWx0aXBsZV9jb21tZW50cyhzZWxmKToKKyAgICAgICAgYXRvbSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdG9tLAorICAgICAgICAgICAgJyAoZm9vKSAoYmFyKSBib2IoYmlyZCknLCAnIChmb28pIChiYXIpIGJvYihiaXJkKScsICcgYm9iICcsCisgICAgICAgICAgICAgICAgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0b21bMF0uY29tbWVudHMsIFsnZm9vJywgJ2JhciddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0b21bMl0uY29tbWVudHMsIFsnYmlyZCddKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0b21fbm9uX3ByaW50YWJsZV9pbl9jb21tZW50KHNlbGYpOgorICAgICAgICBhdG9tID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2F0b20sCisgICAgICAgICAgICAnIChceDBBKSBib2InLCAnIChceDBBKSBib2InLCAnIGJvYicsCisgICAgICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdG9tWzBdLmNvbW1lbnRzLCBbJ1x4MEEnXSkKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX25vbl9wcmludGFibGVfaW5fYXRleHQoc2VsZik6CisgICAgICAgIGF0b20gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRvbSwKKyAgICAgICAgICAgICcgKGEpIGFceDBCJywgJyAoYSkgYVx4MEInLCAnIGFceDBCJywKKyAgICAgICAgICAgICAgICBbZXJyb3JzLk5vblByaW50YWJsZURlZmVjdF0sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0b21bMF0uY29tbWVudHMsIFsnYSddKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0b21faGVhZGVyX2VuZHNfaW5fY29tbWVudChzZWxmKToKKyAgICAgICAgYXRvbSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdG9tLAorICAgICAgICAgICAgJyAoYSkgYm9iIChhJywgJyAoYSkgYm9iIChhKScsICcgYm9iICcsCisgICAgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRvbVswXS5jb21tZW50cywgWydhJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRvbVsyXS5jb21tZW50cywgWydhJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfYXRvbV9ub19hdG9tKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfYXRvbSgnIChhYikgJykKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX25vX2F0b21fYmVmb3JlX3NwZWNpYWwoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9hdG9tKCcgKGFiKSBAJykKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX2F0b21fZW5kc19hdF9zcGVjaWFsKHNlbGYpOgorICAgICAgICBhdG9tID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2F0b20sCisgICAgICAgICAgICAnIChmb28pIGJvYihiYXIpICBAYmFuZycsICcgKGZvbykgYm9iKGJhcikgICcsICcgYm9iICcsIFtdLCAnQGJhbmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0b21bMF0uY29tbWVudHMsIFsnZm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRvbVsyXS5jb21tZW50cywgWydiYXInXSkKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX2F0b21fZW5kc19hdF9ub25jZndzKHNlbGYpOgorICAgICAgICBhdG9tID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2F0b20sCisgICAgICAgICAgICAnYm9iICBmcmVkJywgJ2JvYiAgJywgJ2JvYiAnLCBbXSwgJ2ZyZWQnKQorCisgICAgIyBnZXRfZG90X2F0b21fdGV4dAorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX3RleHQoc2VsZik6CisgICAgICAgIGRvdF9hdG9tX3RleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG90X2F0b21fdGV4dCwKKyAgICAgICAgICAgICdmb28uYmFyLmJhbmcnLCAnZm9vLmJhci5iYW5nJywgJ2Zvby5iYXIuYmFuZycsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb3RfYXRvbV90ZXh0LnRva2VuX3R5cGUsICdkb3QtYXRvbS10ZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZG90X2F0b21fdGV4dCksIDUpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fdGV4dF9sb25lX2F0b21faXNfdmFsaWQoc2VsZik6CisgICAgICAgIGRvdF9hdG9tX3RleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG90X2F0b21fdGV4dCwKKyAgICAgICAgICAgICdmb28nLCAnZm9vJywgJ2ZvbycsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV90ZXh0X3JhaXNlc19vbl9sZWFkaW5nX2RvdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2RvdF9hdG9tX3RleHQoJy5mb28uYmFyJykKKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV90ZXh0X3JhaXNlc19vbl90cmFpbGluZ19kb3Qoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbV90ZXh0KCdmb28uYmFyLicpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fdGV4dF9yYWlzZXNfb25fbGVhZGluZ19ub25fYXRleHQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbV90ZXh0KCcgZm9vLmJhcicpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbV90ZXh0KCdAZm9vLmJhcicpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbV90ZXh0KCciZm9vLmJhciInKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX3RleHRfdHJhaWxpbmdfdGV4dF9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIGRvdF9hdG9tX3RleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG90X2F0b21fdGV4dCwKKyAgICAgICAgICAgICdmb29AYmFyJywgJ2ZvbycsICdmb28nLCBbXSwgJ0BiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX3RleHRfdHJhaWxpbmdfd3NfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBkb3RfYXRvbV90ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvdF9hdG9tX3RleHQsCisgICAgICAgICAgICAnZm9vIC5iYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnIC5iYXInKQorCisgICAgIyBnZXRfZG90X2F0b20KKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV9vbmx5KHNlbGYpOgorICAgICAgICBkb3RfYXRvbSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kb3RfYXRvbSwKKyAgICAgICAgICAgICdmb28uYmFyLmJpbmcnLCAnZm9vLmJhci5iaW5nJywgJ2Zvby5iYXIuYmluZycsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb3RfYXRvbS50b2tlbl90eXBlLCAnZG90LWF0b20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkb3RfYXRvbSksIDEpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fd2l0aF93c3Aoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kb3RfYXRvbSwKKyAgICAgICAgICAgICdcdCAgZm9vLmJhci5iaW5nICAnLCAnXHQgIGZvby5iYXIuYmluZyAgJywgJyBmb28uYmFyLmJpbmcgJywgW10sICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX3dpdGhfY29tbWVudHNfYW5kX3dzcChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvdF9hdG9tLAorICAgICAgICAgICAgJyAoc2luZykgIGZvby5iYXIuYmluZyAoaGVyZSkgJywgJyAoc2luZykgIGZvby5iYXIuYmluZyAoaGVyZSkgJywKKyAgICAgICAgICAgICAgICAnIGZvby5iYXIuYmluZyAnLCBbXSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fc3BhY2VfZW5kc19kb3RfYXRvbShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvdF9hdG9tLAorICAgICAgICAgICAgJyAoc2luZykgIGZvby5iYXIgLmJpbmcgKGhlcmUpICcsICcgKHNpbmcpICBmb28uYmFyICcsCisgICAgICAgICAgICAgICAgJyBmb28uYmFyICcsIFtdLCAnLmJpbmcgKGhlcmUpICcpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fbm9fYXRvbV9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbSgnIChmb28pICcpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fbGVhZGluZ19kb3RfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG90X2F0b20oJyAoZm9vKSAuYmFyJykKKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV90d29fZG90c19yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbSgnYmFyLi5iYW5nJykKKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV90cmFpbGluZ19kb3RfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG90X2F0b20oJyAoZm9vKSBiYXIuYmFuZy4gZm9vJykKKworICAgICMgZ2V0X3dvcmQgKGlmIHRoaXMgd2VyZSBibGFjayBib3ggd2UnZCByZXBlYXQgYWxsIHRoZSBxcy9hdG9tIHRlc3RzKQorCisgICAgZGVmIHRlc3RfZ2V0X3dvcmRfYXRvbV95aWVsZHNfYXRvbShzZWxmKToKKyAgICAgICAgd29yZCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF93b3JkLAorICAgICAgICAgICAgJyAoZm9vKSBiYXIgKGJhbmcpIDphaCcsICcgKGZvbykgYmFyIChiYW5nKSAnLCAnIGJhciAnLCBbXSwgJzphaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZC50b2tlbl90eXBlLCAnYXRvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZFswXS50b2tlbl90eXBlLCAnY2Z3cycpCisKKyAgICBkZWYgdGVzdF9nZXRfd29yZF9xc195aWVsZHNfcXMoc2VsZik6CisgICAgICAgIHdvcmQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfd29yZCwKKyAgICAgICAgICAgICciYmFyICIgKGJhbmcpIGFoJywgJyJiYXIgIiAoYmFuZykgJywgJ2JhciAgJywgW10sICdhaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZC50b2tlbl90eXBlLCAncXVvdGVkLXN0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZFswXS50b2tlbl90eXBlLCAnYmFyZS1xdW90ZWQtc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3b3JkWzBdLnZhbHVlLCAnYmFyICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZC5jb250ZW50LCAnYmFyICcpCisKKyAgICBkZWYgdGVzdF9nZXRfd29yZF9lbmRzX2F0X2RvdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3dvcmQsCisgICAgICAgICAgICAnZm9vLicsICdmb28nLCAnZm9vJywgW10sICcuJykKKworICAgICMgZ2V0X3BocmFzZQorCisgICAgZGVmIHRlc3RfZ2V0X3BocmFzZV9zaW1wbGUoc2VsZik6CisgICAgICAgIHBocmFzZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9waHJhc2UsCisgICAgICAgICAgICAnIkZyZWQgQS4gSm9obnNvbiIgaXMgaGlzIG5hbWUsIG9oLicsCisgICAgICAgICAgICAnIkZyZWQgQS4gSm9obnNvbiIgaXMgaGlzIG5hbWUnLAorICAgICAgICAgICAgJ0ZyZWQgQS4gSm9obnNvbiBpcyBoaXMgbmFtZScsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcsIG9oLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGhyYXNlLnRva2VuX3R5cGUsICdwaHJhc2UnKQorCisgICAgZGVmIHRlc3RfZ2V0X3BocmFzZV9jb21wbGV4KHNlbGYpOgorICAgICAgICBwaHJhc2UgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcGhyYXNlLAorICAgICAgICAgICAgJyAoQSkgYmlyZCAoaW4gKG15fHlvdXIpKSAiaGFuZCAgIiBpcyBtZXNzeVx0PD5cdCcsCisgICAgICAgICAgICAnIChBKSBiaXJkIChpbiAobXl8eW91cikpICJoYW5kICAiIGlzIG1lc3N5XHQnLAorICAgICAgICAgICAgJyBiaXJkIGhhbmQgICBpcyBtZXNzeSAnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnPD5cdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGhyYXNlWzBdWzBdLmNvbW1lbnRzLCBbJ0EnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwaHJhc2VbMF1bMl0uY29tbWVudHMsIFsnaW4gKG15fHlvdXIpJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfcGhyYXNlX29ic29sZXRlKHNlbGYpOgorICAgICAgICBwaHJhc2UgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcGhyYXNlLAorICAgICAgICAgICAgJ0ZyZWQgQS4od2VpcmQpLk8gSm9obnNvbicsCisgICAgICAgICAgICAnRnJlZCBBLih3ZWlyZCkuTyBKb2huc29uJywKKyAgICAgICAgICAgICdGcmVkIEEuIC5PIEpvaG5zb24nLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwaHJhc2UpLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBocmFzZVszXS5jb21tZW50cywgWyd3ZWlyZCddKQorCisgICAgZGVmIHRlc3RfZ2V0X3BocmFzZV9waGFyc2VfbXVzdF9zdGFydF93aXRoX3dvcmQoc2VsZik6CisgICAgICAgIHBocmFzZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9waHJhc2UsCisgICAgICAgICAgICAnKGV2ZW4gd2VpcmRlcikubmFtZScsCisgICAgICAgICAgICAnKGV2ZW4gd2VpcmRlcikubmFtZScsCisgICAgICAgICAgICAnIC5uYW1lJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0gKyBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBocmFzZSksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGhyYXNlWzBdLmNvbW1lbnRzLCBbJ2V2ZW4gd2VpcmRlciddKQorCisgICAgZGVmIHRlc3RfZ2V0X3BocmFzZV9lbmRpbmdfd2l0aF9vYnNvbGV0ZShzZWxmKToKKyAgICAgICAgcGhyYXNlID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3BocmFzZSwKKyAgICAgICAgICAgICdzaW1wbGUgcGhyYXNlLih3aXRoIHRyYWlsaW5nIGNvbW1lbnQpOmJvbycsCisgICAgICAgICAgICAnc2ltcGxlIHBocmFzZS4od2l0aCB0cmFpbGluZyBjb21tZW50KScsCisgICAgICAgICAgICAnc2ltcGxlIHBocmFzZS4gJywKKyAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAnOmJvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBocmFzZSksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGhyYXNlWzNdLmNvbW1lbnRzLCBbJ3dpdGggdHJhaWxpbmcgY29tbWVudCddKQorCisgICAgZGVmIGdldF9waHJhc2VfY2Z3c19vbmx5X3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X3BocmFzZSgnIChmb28pICcpCisKKyAgICAjIGdldF9sb2NhbF9wYXJ0CisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9zaW1wbGUoc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICdkaW5zZGFsZUBweXRob24ub3JnJywgJ2RpbnNkYWxlJywgJ2RpbnNkYWxlJywgW10sICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC50b2tlbl90eXBlLCAnbG9jYWwtcGFydCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfd2l0aF9kb3Qoc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICdGcmVkLkEuSm9obnNvbkBweXRob24ub3JnJywKKyAgICAgICAgICAgICdGcmVkLkEuSm9obnNvbicsCisgICAgICAgICAgICAnRnJlZC5BLkpvaG5zb24nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ0ZyZWQuQS5Kb2huc29uJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3dpdGhfd2hpdGVzcGFjZShzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyBGcmVkLkEuSm9obnNvbiAgQHB5dGhvbi5vcmcnLAorICAgICAgICAgICAgJyBGcmVkLkEuSm9obnNvbiAgJywKKyAgICAgICAgICAgICcgRnJlZC5BLkpvaG5zb24gJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdGcmVkLkEuSm9obnNvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF93aXRoX2Nmd3Moc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICcgKGZvbykgRnJlZC5BLkpvaG5zb24gKGJhciAoYmlyZCkpICBAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIChmb28pIEZyZWQuQS5Kb2huc29uIChiYXIgKGJpcmQpKSAgJywKKyAgICAgICAgICAgICcgRnJlZC5BLkpvaG5zb24gJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdGcmVkLkEuSm9obnNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydFswXVswXS5jb21tZW50cywgWydmb28nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0WzBdWzJdLmNvbW1lbnRzLCBbJ2JhciAoYmlyZCknXSkKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3NpbXBsZV9xdW90ZWQoc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICciZGluc2RhbGUiQHB5dGhvbi5vcmcnLCAnImRpbnNkYWxlIicsICciZGluc2RhbGUiJywgW10sICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC50b2tlbl90eXBlLCAnbG9jYWwtcGFydCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfd2l0aF9xdW90ZWRfZG90KHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIkZyZWQuQS5Kb2huc29uIkBweXRob24ub3JnJywKKyAgICAgICAgICAgICciRnJlZC5BLkpvaG5zb24iJywKKyAgICAgICAgICAgICciRnJlZC5BLkpvaG5zb24iJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdGcmVkLkEuSm9obnNvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9xdW90ZWRfd2l0aF93aGl0ZXNwYWNlKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnICJGcmVkIEEuIEpvaG5zb24iICBAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnICJGcmVkIEEuIEpvaG5zb24iICAnLAorICAgICAgICAgICAgJyAiRnJlZCBBLiBKb2huc29uIiAnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ0ZyZWQgQS4gSm9obnNvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9xdW90ZWRfd2l0aF9jZndzKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIChmb28pICIgRnJlZCBBLiBKb2huc29uICIgKGJhciAoYmlyZCkpICBAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIChmb28pICIgRnJlZCBBLiBKb2huc29uICIgKGJhciAoYmlyZCkpICAnLAorICAgICAgICAgICAgJyAiIEZyZWQgQS4gSm9obnNvbiAiICcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnIEZyZWQgQS4gSm9obnNvbiAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnRbMF1bMF0uY29tbWVudHMsIFsnZm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydFswXVsyXS5jb21tZW50cywgWydiYXIgKGJpcmQpJ10pCisKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3NpbXBsZV9vYnNvbGV0ZShzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJ0ZyZWQuIEEuSm9obnNvbkBweXRob24ub3JnJywKKyAgICAgICAgICAgICdGcmVkLiBBLkpvaG5zb24nLAorICAgICAgICAgICAgJ0ZyZWQuIEEuSm9obnNvbicsCisgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnRnJlZC5BLkpvaG5zb24nKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfY29tcGxleF9vYnNvbGV0ZV8xKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIChmb28gKUZyZWQgKGJhcikuKGJpcmQpIEEuKHNoZWVwKUpvaG5zb24uImFuZCAgZG9ncyAiQHB5dGhvbi5vcmcnLAorICAgICAgICAgICAgJyAoZm9vIClGcmVkIChiYXIpLihiaXJkKSBBLihzaGVlcClKb2huc29uLiJhbmQgIGRvZ3MgIicsCisgICAgICAgICAgICAnIEZyZWQgLiBBLiBKb2huc29uLmFuZCAgZG9ncyAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ0ZyZWQuQS5Kb2huc29uLmFuZCAgZG9ncyAnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfY29tcGxleF9vYnNvbGV0ZV9pbnZhbGlkKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIChmb28gKUZyZWQgKGJhcikuKGJpcmQpIEEuKHNoZWVwKUpvaG5zb24gImFuZCAgZG9ncyJAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIChmb28gKUZyZWQgKGJhcikuKGJpcmQpIEEuKHNoZWVwKUpvaG5zb24gImFuZCAgZG9ncyInLAorICAgICAgICAgICAgJyBGcmVkIC4gQS4gSm9obnNvbiBhbmQgIGRvZ3MnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdGcmVkLkEuSm9obnNvbiBhbmQgIGRvZ3MnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfbm9fcGFydF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9sb2NhbF9wYXJ0KCcgKGZvbykgJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3NwZWNpYWxfaW5zdGVhZF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9sb2NhbF9wYXJ0KCcgKGZvbykgQHB5dGhvbi5vcmcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfdHJhaWxpbmdfZG90KHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIGJvcnJpcy5AcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIGJvcnJpcy4nLAorICAgICAgICAgICAgJyBib3JyaXMuJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnYm9ycmlzLicpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF90cmFpbGluZ19kb3Rfd2l0aF93cyhzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyBib3JyaXMuIEBweXRob24ub3JnJywKKyAgICAgICAgICAgICcgYm9ycmlzLiAnLAorICAgICAgICAgICAgJyBib3JyaXMuICcsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ2JvcnJpcy4nKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfbGVhZGluZ19kb3Qoc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICcuYm9ycmlzQHB5dGhvbi5vcmcnLAorICAgICAgICAgICAgJy5ib3JyaXMnLAorICAgICAgICAgICAgJy5ib3JyaXMnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICcuYm9ycmlzJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X2xlYWRpbmdfZG90X2FmdGVyX3dzKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIC5ib3JyaXNAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIC5ib3JyaXMnLAorICAgICAgICAgICAgJyAuYm9ycmlzJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnLmJvcnJpcycpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9kb3VibGVfZG90X3JhaXNlcyhzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyBib3JyaXMuKGZvbykubmF0YXNoYUBweXRob24ub3JnJywKKyAgICAgICAgICAgICcgYm9ycmlzLihmb28pLm5hdGFzaGEnLAorICAgICAgICAgICAgJyBib3JyaXMuIC5uYXRhc2hhJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnYm9ycmlzLi5uYXRhc2hhJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3F1b3RlZF9zdHJpbmdzX2luX2F0b21fbGlzdChzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyIiZXhhbXBsZSIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJyIiZXhhbXBsZSIgZXhhbXBsZSInLAorICAgICAgICAgICAgJ2V4YW1wbGUgZXhhbXBsZScsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjMsCisgICAgICAgICAgICAnQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdleGFtcGxlIGV4YW1wbGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfdmFsaWRfYW5kX2ludmFsaWRfcXBfaW5fYXRvbV9saXN0KHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICByJyJcXCJleGFtcGxlXFwiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgIHInIlxcImV4YW1wbGVcXCIgZXhhbXBsZSInLAorICAgICAgICAgICAgcidcZXhhbXBsZVxcIGV4YW1wbGUnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSo1LAorICAgICAgICAgICAgJ0BleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCByJ1xleGFtcGxlXFwgZXhhbXBsZScpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF91bmljb2RlX2RlZmVjdChzZWxmKToKKyAgICAgICAgIyBDdXJyZW50bHkgdGhpcyBvbmx5IGhhcHBlbnMgd2hlbiBwYXJzaW5nIHVuaWNvZGUsIG5vdCB3aGVuIHBhcnNpbmcKKyAgICAgICAgIyBzdHVmZiB0aGF0IHdhcyBvcmlnaW5hbGx5IGJpbmFyeS4KKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJ2V4w6FtcGxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdleMOhbXBsZScsCisgICAgICAgICAgICAnZXjDoW1wbGUnLAorICAgICAgICAgICAgW2Vycm9ycy5Ob25BU0NJSUxvY2FsUGFydERlZmVjdF0sCisgICAgICAgICAgICAnQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdleMOhbXBsZScpCisKKyAgICAjIGdldF9kdGV4dAorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X29ubHkoc2VsZik6CisgICAgICAgIGR0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vYmFyJywgJ2Zvb2JhcicsICdmb29iYXInLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRleHQudG9rZW5fdHlwZSwgJ3B0ZXh0JykKKworICAgIGRlZiB0ZXN0X2dldF9kdGV4dF9hbGxfZHRleHQoc2VsZik6CisgICAgICAgIGR0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LCBzZWxmLnJmY19kdGV4dF9jaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmZjX2R0ZXh0X2NoYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZmNfZHRleHRfY2hhcnMsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9kdGV4dF90d29fd29yZHNfZ2V0c19maXJzdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBiYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnIGJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfZm9sbG93aW5nX3dzcF9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gXHRcdGJhcicsICdmb28nLCAnZm9vJywgW10sICcgXHRcdGJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfbm9uX3ByaW50YWJsZXMoc2VsZik6CisgICAgICAgIGR0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vXHgwMGJhcl0nLCAnZm9vXHgwMGJhcicsICdmb29ceDAwYmFyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRleHQuZGVmZWN0c1swXS5ub25fcHJpbnRhYmxlc1swXSwgJ1x4MDAnKQorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X3dpdGhfcXAoc2VsZik6CisgICAgICAgIHB0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidmb29cXVxbXFxiYXJcYlxlXGxcbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ2Zvb11bXGJhcmJlbGwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidmb29dW1xiYXJiZWxsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfdXBfdG9fY2xvc2VfYnJhY2tldF9vbmx5KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vXScsICdmb28nLCAnZm9vJywgW10sICddJykKKworICAgIGRlZiB0ZXN0X2dldF9kdGV4dF93c3BfYmVmb3JlX2Nsb3NlX2JyYWNrZXRfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vICBdJywgJ2ZvbycsICdmb28nLCBbXSwgJyAgXScpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfY2xvc2VfYnJhY2tldF9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb11iYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnXWJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfdXBfdG9fb3Blbl9icmFja2V0X29ubHkoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb29bJywgJ2ZvbycsICdmb28nLCBbXSwgJ1snKQorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X3dzcF9iZWZvcmVfb3Blbl9icmFja2V0X3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyAgWycsICdmb28nLCAnZm9vJywgW10sICcgIFsnKQorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X29wZW5fYnJhY2tldF9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb1tiYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnW2JhcicpCisKKyAgICAjIGdldF9kb21haW5fbGl0ZXJhbAorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9saXRlcmFsX29ubHkoc2VsZik6CisgICAgICAgIGRvbWFpbl9saXRlcmFsID0gZG9tYWluX2xpdGVyYWwgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluX2xpdGVyYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW5fbGl0ZXJhbC50b2tlbl90eXBlLCAnZG9tYWluLWxpdGVyYWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbl9saXRlcmFsLmRvbWFpbiwgJ1sxMjcuMC4wLjFdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW5fbGl0ZXJhbC5pcCwgJzEyNy4wLjAuMScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX2xpdGVyYWxfd2l0aF9pbnRlcm5hbF93cyhzZWxmKToKKyAgICAgICAgZG9tYWluX2xpdGVyYWwgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluX2xpdGVyYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbICAxMjcuMC4wLjFcdCBdJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1sgIDEyNy4wLjAuMVx0IF0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWyAxMjcuMC4wLjEgXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW5fbGl0ZXJhbC5kb21haW4sICdbMTI3LjAuMC4xXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9tYWluX2xpdGVyYWwuaXAsICcxMjcuMC4wLjEnKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9saXRlcmFsX3dpdGhfc3Vycm91bmRpbmdfY2Z3cyhzZWxmKToKKyAgICAgICAgZG9tYWluX2xpdGVyYWwgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluX2xpdGVyYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKVsgIDEyNy4wLjAuMV0gKGJhciknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGZvbylbICAxMjcuMC4wLjFdIChiYXIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBbIDEyNy4wLjAuMV0gJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbl9saXRlcmFsLmRvbWFpbiwgJ1sxMjcuMC4wLjFdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW5fbGl0ZXJhbC5pcCwgJzEyNy4wLjAuMScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX2xpdGVyYWxfbm9fc3RhcnRfY2hhcl9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb21haW5fbGl0ZXJhbCgnKGZvbykgJykKKworICAgIGRlZiB0ZXN0X2dldF9kb21haW5fbGl0ZXJhbF9ub19zdGFydF9jaGFyX2JlZm9yZV9zcGVjaWFsX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2RvbWFpbl9saXRlcmFsKCcoZm9vKSBAJykKKworICAgIGRlZiB0ZXN0X2dldF9kb21haW5fbGl0ZXJhbF9iYWRfZHRleHRfY2hhcl9iZWZvcmVfc3BlY2lhbF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb21haW5fbGl0ZXJhbCgnKGZvbykgW2FiY1tAJykKKworICAgICMgZ2V0X2RvbWFpbgorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9yZWd1bGFyX2RvbWFpbl9vbmx5KHNlbGYpOgorICAgICAgICBkb21haW4gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi50b2tlbl90eXBlLCAnZG9tYWluJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW4uZG9tYWluLCAnZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9kb21haW5fbGl0ZXJhbF9vbmx5KHNlbGYpOgorICAgICAgICBkb21haW4gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1sxMjcuMC4wLjFdJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWzEyNy4wLjAuMV0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi50b2tlbl90eXBlLCAnZG9tYWluJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW4uZG9tYWluLCAnWzEyNy4wLjAuMV0nKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl93aXRoX2Nmd3Moc2VsZik6CisgICAgICAgIGRvbWFpbiA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb28pIGV4YW1wbGUuY29tKGJhcilcdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb28pIGV4YW1wbGUuY29tKGJhcilcdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBleGFtcGxlLmNvbSAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi5kb21haW4sICdleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX2RvbWFpbl9saXRlcmFsX3dpdGhfY2Z3cyhzZWxmKToKKyAgICAgICAgZG9tYWluID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGZvbylbMTI3LjAuMC4xXVx0KGJhciknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKVsxMjcuMC4wLjFdXHQoYmFyKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBbMTI3LjAuMC4xXSAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi5kb21haW4sICdbMTI3LjAuMC4xXScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX2RvbWFpbl93aXRoX2Nmd3NfZW5kc19hdF9zcGVjaWFsKHNlbGYpOgorICAgICAgICBkb21haW4gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKWV4YW1wbGUuY29tXHQoYmFyKSwgbmV4dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb28pZXhhbXBsZS5jb21cdChiYXIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGV4YW1wbGUuY29tICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJywgbmV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9tYWluLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9kb21haW5fZG9tYWluX2xpdGVyYWxfd2l0aF9jZndzX2VuZHNfYXRfc3BlY2lhbChzZWxmKToKKyAgICAgICAgZG9tYWluID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGZvbylbMTI3LjAuMC4xXVx0KGJhciksIG5leHQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKVsxMjcuMC4wLjFdXHQoYmFyKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBbMTI3LjAuMC4xXSAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcsIG5leHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi5kb21haW4sICdbMTI3LjAuMC4xXScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX29ic29sZXRlKHNlbGYpOgorICAgICAgICBkb21haW4gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKSBleGFtcGxlIC4gKGJpcmQpY29tKGJhcilcdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb28pIGV4YW1wbGUgLiAoYmlyZCljb20oYmFyKVx0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGV4YW1wbGUgLiBjb20gJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW4uZG9tYWluLCAnZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9ub19ub25fY2Z3c19yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb21haW4oIiAgKGZvbylcdCIpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX25vX2F0b21fcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG9tYWluKCIgIChmb28pXHQsIGJyb2tlbiIpCisKKworICAgICMgZ2V0X2FkZHJfc3BlYworCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJfc3BlY19ub3JtYWwoc2VsZik6CisgICAgICAgIGFkZHJfc3BlYyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy50b2tlbl90eXBlLCAnYWRkci1zcGVjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcl9zcGVjX3dpdGhfZG9hbWluX2xpdGVyYWwoc2VsZik6CisgICAgICAgIGFkZHJfc3BlYyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAWzEyNy4wLjAuMV0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQFsxMjcuMC4wLjFdJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5kb21haW4sICdbMTI3LjAuMC4xXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcl9zcGVjLmFkZHJfc3BlYywgJ2RpbnNkYWxlQFsxMjcuMC4wLjFdJykKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyX3NwZWNfd2l0aF9jZndzKHNlbGYpOgorICAgICAgICBhZGRyX3NwZWMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICcoZm9vKSBkaW5zZGFsZShiYXIpQCAoYmlyZCkgZXhhbXBsZS5jb20gKGJvZyknLAorICAgICAgICAgICAgICAgICcoZm9vKSBkaW5zZGFsZShiYXIpQCAoYmlyZCkgZXhhbXBsZS5jb20gKGJvZyknLAorICAgICAgICAgICAgICAgICcgZGluc2RhbGVAZXhhbXBsZS5jb20gJywKKyAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcl9zcGVjX3dpdGhfcW91b3RlZF9zdHJpbmdfYW5kX2Nmd3Moc2VsZik6CisgICAgICAgIGFkZHJfc3BlYyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgJyhmb28pICJyb3kgYSBidWciKGJhcilAIChiaXJkKSBleGFtcGxlLmNvbSAoYm9nKScsCisgICAgICAgICAgICAgICAgJyhmb28pICJyb3kgYSBidWciKGJhcilAIChiaXJkKSBleGFtcGxlLmNvbSAoYm9nKScsCisgICAgICAgICAgICAgICAgJyAicm95IGEgYnVnIkBleGFtcGxlLmNvbSAnLAorICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5sb2NhbF9wYXJ0LCAncm95IGEgYnVnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICcicm95IGEgYnVnIkBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcl9zcGVjX2VuZHNfYXRfc3BlY2lhbChzZWxmKToKKyAgICAgICAgYWRkcl9zcGVjID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAnKGZvbykgInJveSBhIGJ1ZyIoYmFyKUAgKGJpcmQpIGV4YW1wbGUuY29tIChib2cpICwgbmV4dCcsCisgICAgICAgICAgICAgICAgJyhmb28pICJyb3kgYSBidWciKGJhcilAIChiaXJkKSBleGFtcGxlLmNvbSAoYm9nKSAnLAorICAgICAgICAgICAgICAgICcgInJveSBhIGJ1ZyJAZXhhbXBsZS5jb20gJywKKyAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAnLCBuZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMubG9jYWxfcGFydCwgJ3JveSBhIGJ1ZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcl9zcGVjLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuYWRkcl9zcGVjLCAnInJveSBhIGJ1ZyJAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJfc3BlY19xdW90ZWRfc3RyaW5nc19pbl9hdG9tX2xpc3Qoc2VsZik6CisgICAgICAgIGFkZHJfc3BlYyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyX3NwZWMsCisgICAgICAgICAgICAnIiJleGFtcGxlIiBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnIiJleGFtcGxlIiBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZXhhbXBsZSBleGFtcGxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5sb2NhbF9wYXJ0LCAnZXhhbXBsZSBleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICciZXhhbXBsZSBleGFtcGxlIkBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcl9zcGVjX2RvdF9hdG9tKHNlbGYpOgorICAgICAgICBhZGRyX3NwZWMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcl9zcGVjLAorICAgICAgICAgICAgJ3N0YXIuYS5zdGFyQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdzdGFyLmEuc3RhckBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnc3Rhci5hLnN0YXJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMubG9jYWxfcGFydCwgJ3N0YXIuYS5zdGFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICdzdGFyLmEuc3RhckBleGFtcGxlLmNvbScpCisKKyAgICAjIGdldF9vYnNfcm91dGUKKworICAgIGRlZiB0ZXN0X2dldF9vYnNfcm91dGVfc2ltcGxlKHNlbGYpOgorICAgICAgICBvYnNfcm91dGUgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfb2JzX3JvdXRlLAorICAgICAgICAgICAgJ0BleGFtcGxlLmNvbSwgQHR3by5leGFtcGxlLmNvbTonLAorICAgICAgICAgICAgJ0BleGFtcGxlLmNvbSwgQHR3by5leGFtcGxlLmNvbTonLAorICAgICAgICAgICAgJ0BleGFtcGxlLmNvbSwgQHR3by5leGFtcGxlLmNvbTonLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYnNfcm91dGUudG9rZW5fdHlwZSwgJ29icy1yb3V0ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JzX3JvdXRlLmRvbWFpbnMsIFsnZXhhbXBsZS5jb20nLCAndHdvLmV4YW1wbGUuY29tJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfb2JzX3JvdXRlX2NvbXBsZXgoc2VsZik6CisgICAgICAgIG9ic19yb3V0ZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9vYnNfcm91dGUsCisgICAgICAgICAgICAnKGZvbyksLCAoYmx1ZSlAZXhhbXBsZS5jb20gKGJhciksQHR3by4oZm9vKSBleGFtcGxlLmNvbSAoYmlyZCk6JywKKyAgICAgICAgICAgICcoZm9vKSwsIChibHVlKUBleGFtcGxlLmNvbSAoYmFyKSxAdHdvLihmb28pIGV4YW1wbGUuY29tIChiaXJkKTonLAorICAgICAgICAgICAgJyAsLCBAZXhhbXBsZS5jb20gLEB0d28uIGV4YW1wbGUuY29tIDonLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sICAjIFRoaXMgaXMgdGhlIG9icy1kb21haW4KKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9ic19yb3V0ZS50b2tlbl90eXBlLCAnb2JzLXJvdXRlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYnNfcm91dGUuZG9tYWlucywgWydleGFtcGxlLmNvbScsICd0d28uZXhhbXBsZS5jb20nXSkKKworICAgIGRlZiB0ZXN0X2dldF9vYnNfcm91dGVfbm9fcm91dGVfYmVmb3JlX2VuZF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9vYnNfcm91dGUoJyhmb28pIEBleGFtcGxlLmNvbSwnKQorCisgICAgZGVmIHRlc3RfZ2V0X29ic19yb3V0ZV9ub19yb3V0ZV9iZWZvcmVfc3BlY2lhbF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9vYnNfcm91dGUoJyhmb28pIFthYmNdLCcpCisKKyAgICBkZWYgdGVzdF9nZXRfb2JzX3JvdXRlX25vX3JvdXRlX2JlZm9yZV9zcGVjaWFsX3JhaXNlczIoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9vYnNfcm91dGUoJyhmb28pIEBleGFtcGxlLmNvbSBbYWJjXSwnKQorCisgICAgIyBnZXRfYW5nbGVfYWRkcgorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfc2ltcGxlKHNlbGYpOgorICAgICAgICBhbmdsZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIudG9rZW5fdHlwZSwgJ2FuZ2xlLWFkZHInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYW5nbGVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX2VtcHR5KHNlbGYpOgorICAgICAgICBhbmdsZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIsCisgICAgICAgICAgICAnPD4nLAorICAgICAgICAgICAgJzw+JywKKyAgICAgICAgICAgICc8PicsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci50b2tlbl90eXBlLCAnYW5nbGUtYWRkcicpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFuZ2xlX2FkZHIubG9jYWxfcGFydCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYW5nbGVfYWRkci5kb21haW4pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFuZ2xlX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5hZGRyX3NwZWMsICc8PicpCisKKyAgICBkZWYgdGVzdF9nZXRfYW5nbGVfYWRkcl93aXRoX2Nmd3Moc2VsZik6CisgICAgICAgIGFuZ2xlX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYW5nbGVfYWRkciwKKyAgICAgICAgICAgICcgKGZvbykgPGRpbnNkYWxlQGV4YW1wbGUuY29tPihiYXIpJywKKyAgICAgICAgICAgICcgKGZvbykgPGRpbnNkYWxlQGV4YW1wbGUuY29tPihiYXIpJywKKyAgICAgICAgICAgICcgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLnRva2VuX3R5cGUsICdhbmdsZS1hZGRyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFuZ2xlX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYW5nbGVfYWRkcl9xc19hbmRfZG9tYWluX2xpdGVyYWwoc2VsZik6CisgICAgICAgIGFuZ2xlX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYW5nbGVfYWRkciwKKyAgICAgICAgICAgICc8IkZyZWQgUGVyZmVjdCJAWzEyNy4wLjAuMV0+JywKKyAgICAgICAgICAgICc8IkZyZWQgUGVyZmVjdCJAWzEyNy4wLjAuMV0+JywKKyAgICAgICAgICAgICc8IkZyZWQgUGVyZmVjdCJAWzEyNy4wLjAuMV0+JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5sb2NhbF9wYXJ0LCAnRnJlZCBQZXJmZWN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmRvbWFpbiwgJ1sxMjcuMC4wLjFdJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYW5nbGVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmFkZHJfc3BlYywgJyJGcmVkIFBlcmZlY3QiQFsxMjcuMC4wLjFdJykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX2ludGVybmFsX2Nmd3Moc2VsZik6CisgICAgICAgIGFuZ2xlX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYW5nbGVfYWRkciwKKyAgICAgICAgICAgICc8KGZvbykgZGluc2RhbGVAZXhhbXBsZS5jb20oYmFyKT4nLAorICAgICAgICAgICAgJzwoZm9vKSBkaW5zZGFsZUBleGFtcGxlLmNvbShiYXIpPicsCisgICAgICAgICAgICAnPCBkaW5zZGFsZUBleGFtcGxlLmNvbSA+JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhbmdsZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfb2JzX3JvdXRlKHNlbGYpOgorICAgICAgICBhbmdsZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIsCisgICAgICAgICAgICAnKGZvbyk8QGV4YW1wbGUuY29tLCAoYmlyZCkgQHR3by5leGFtcGxlLmNvbTogZGluc2RhbGVAZXhhbXBsZS5jb20+IChiYXIpICcsCisgICAgICAgICAgICAnKGZvbyk8QGV4YW1wbGUuY29tLCAoYmlyZCkgQHR3by5leGFtcGxlLmNvbTogZGluc2RhbGVAZXhhbXBsZS5jb20+IChiYXIpICcsCisgICAgICAgICAgICAnIDxAZXhhbXBsZS5jb20sIEB0d28uZXhhbXBsZS5jb206IGRpbnNkYWxlQGV4YW1wbGUuY29tPiAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5yb3V0ZSwgWydleGFtcGxlLmNvbScsICd0d28uZXhhbXBsZS5jb20nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX21pc3NpbmdfY2xvc2luZ19hbmdsZShzZWxmKToKKyAgICAgICAgYW5nbGVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hbmdsZV9hZGRyLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhbmdsZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfbWlzc2luZ19jbG9zaW5nX2FuZ2xlX3dpdGhfY2Z3cyhzZWxmKToKKyAgICAgICAgYW5nbGVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hbmdsZV9hZGRyLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbSAoZm9vKScsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tIChmb28pPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tID4nLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYW5nbGVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX2VuZHNfYXRfc3BlY2lhbChzZWxmKToKKyAgICAgICAgYW5nbGVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hbmdsZV9hZGRyLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4gKGZvbyksIG5leHQnLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4gKGZvbyknLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4gJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJywgbmV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhbmdsZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfbm9fYW5nbGVfcmFpc2Uoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9hbmdsZV9hZGRyKCcoZm9vKSAnKQorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfbm9fYW5nbGVfYmVmb3JlX3NwZWNpYWxfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfYW5nbGVfYWRkcignKGZvbykgLCBuZXh0JykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX25vX2FuZ2xlX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIoJ2JhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfYW5nbGVfYWRkcl9zcGVjaWFsX2FmdGVyX2FuZ2xlX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIoJyhmb28pIDwsIGJhcicpCisKKyAgICAjIGdldF9kaXNwbGF5X25hbWUgIFRoaXMgaXMgcGhyYXNlIGJ1dCB3aXRoIGEgZGlmZmVyZW50IHZhbHVlLgorCisgICAgZGVmIHRlc3RfZ2V0X2Rpc3BsYXlfbmFtZV9zaW1wbGUoc2VsZik6CisgICAgICAgIGRpc3BsYXlfbmFtZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAnRnJlZCBBIEpvaG5zb24nLAorICAgICAgICAgICAgJ0ZyZWQgQSBKb2huc29uJywKKyAgICAgICAgICAgICdGcmVkIEEgSm9obnNvbicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZS50b2tlbl90eXBlLCAnZGlzcGxheS1uYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWUuZGlzcGxheV9uYW1lLCAnRnJlZCBBIEpvaG5zb24nKQorCisgICAgZGVmIHRlc3RfZ2V0X2Rpc3BsYXlfbmFtZV9jb21wbGV4MShzZWxmKToKKyAgICAgICAgZGlzcGxheV9uYW1lID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Rpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICciRnJlZCBBLiBKb2huc29uIiBpcyBoaXMgbmFtZSwgb2guJywKKyAgICAgICAgICAgICciRnJlZCBBLiBKb2huc29uIiBpcyBoaXMgbmFtZScsCisgICAgICAgICAgICAnIkZyZWQgQS4gSm9obnNvbiBpcyBoaXMgbmFtZSInLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnLCBvaC4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZS50b2tlbl90eXBlLCAnZGlzcGxheS1uYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWUuZGlzcGxheV9uYW1lLCAnRnJlZCBBLiBKb2huc29uIGlzIGhpcyBuYW1lJykKKworICAgIGRlZiB0ZXN0X2dldF9kaXNwbGF5X25hbWVfY29tcGxleDIoc2VsZik6CisgICAgICAgIGRpc3BsYXlfbmFtZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAnIChBKSBiaXJkIChpbiAobXl8eW91cikpICJoYW5kICAiIGlzIG1lc3N5XHQ8Plx0JywKKyAgICAgICAgICAgICcgKEEpIGJpcmQgKGluIChteXx5b3VyKSkgImhhbmQgICIgaXMgbWVzc3lcdCcsCisgICAgICAgICAgICAnICJiaXJkIGhhbmQgICBpcyBtZXNzeSIgJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJzw+XHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZVswXVswXS5jb21tZW50cywgWydBJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzcGxheV9uYW1lWzBdWzJdLmNvbW1lbnRzLCBbJ2luIChteXx5b3VyKSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZS5kaXNwbGF5X25hbWUsICdiaXJkIGhhbmQgICBpcyBtZXNzeScpCisKKyAgICBkZWYgdGVzdF9nZXRfZGlzcGxheV9uYW1lX29ic29sZXRlKHNlbGYpOgorICAgICAgICBkaXNwbGF5X25hbWUgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgJ0ZyZWQgQS4od2VpcmQpLk8gSm9obnNvbicsCisgICAgICAgICAgICAnRnJlZCBBLih3ZWlyZCkuTyBKb2huc29uJywKKyAgICAgICAgICAgICciRnJlZCBBLiAuTyBKb2huc29uIicsCisgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSozLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpc3BsYXlfbmFtZSksIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzcGxheV9uYW1lWzNdLmNvbW1lbnRzLCBbJ3dlaXJkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzcGxheV9uYW1lLmRpc3BsYXlfbmFtZSwgJ0ZyZWQgQS4gLk8gSm9obnNvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfZGlzcGxheV9uYW1lX3BoYXJzZV9tdXN0X3N0YXJ0X3dpdGhfd29yZChzZWxmKToKKyAgICAgICAgZGlzcGxheV9uYW1lID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Rpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICcoZXZlbiB3ZWlyZGVyKS5uYW1lJywKKyAgICAgICAgICAgICcoZXZlbiB3ZWlyZGVyKS5uYW1lJywKKyAgICAgICAgICAgICcgIi5uYW1lIicsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdICsgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXNwbGF5X25hbWUpLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZVswXS5jb21tZW50cywgWydldmVuIHdlaXJkZXInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWUuZGlzcGxheV9uYW1lLCAnLm5hbWUnKQorCisgICAgZGVmIHRlc3RfZ2V0X2Rpc3BsYXlfbmFtZV9lbmRpbmdfd2l0aF9vYnNvbGV0ZShzZWxmKToKKyAgICAgICAgZGlzcGxheV9uYW1lID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Rpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICdzaW1wbGUgcGhyYXNlLih3aXRoIHRyYWlsaW5nIGNvbW1lbnQpOmJvbycsCisgICAgICAgICAgICAnc2ltcGxlIHBocmFzZS4od2l0aCB0cmFpbGluZyBjb21tZW50KScsCisgICAgICAgICAgICAnInNpbXBsZSBwaHJhc2UuIiAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICc6Ym9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlzcGxheV9uYW1lKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWVbM10uY29tbWVudHMsIFsnd2l0aCB0cmFpbGluZyBjb21tZW50J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzcGxheV9uYW1lLmRpc3BsYXlfbmFtZSwgJ3NpbXBsZSBwaHJhc2UuJykKKworICAgICMgZ2V0X25hbWVfYWRkcgorCisgICAgZGVmIHRlc3RfZ2V0X25hbWVfYWRkcl9hbmdsZV9hZGRyX29ubHkoc2VsZik6CisgICAgICAgIG5hbWVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9uYW1lX2FkZHIsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci50b2tlbl90eXBlLCAnbmFtZS1hZGRyJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobmFtZV9hZGRyLmRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShuYW1lX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfYXRvbV9uYW1lKHNlbGYpOgorICAgICAgICBuYW1lX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbmFtZV9hZGRyLAorICAgICAgICAgICAgJ0RpbnNkYWxlIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJ0RpbnNkYWxlIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJ0RpbnNkYWxlIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIudG9rZW5fdHlwZSwgJ25hbWUtYWRkcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRpc3BsYXlfbmFtZSwgJ0RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShuYW1lX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfYXRvbV9uYW1lX3dpdGhfY2Z3cyhzZWxmKToKKyAgICAgICAgbmFtZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X25hbWVfYWRkciwKKyAgICAgICAgICAgICcoZm9vKSBEaW5zZGFsZSAoYmFyKSA8ZGluc2RhbGVAZXhhbXBsZS5jb20+IChiaXJkKScsCisgICAgICAgICAgICAnKGZvbykgRGluc2RhbGUgKGJhcikgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAoYmlyZCknLAorICAgICAgICAgICAgJyBEaW5zZGFsZSA8ZGluc2RhbGVAZXhhbXBsZS5jb20+ICcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5kaXNwbGF5X25hbWUsICdEaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobmFtZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfbmFtZV9hZGRyX25hbWVfd2l0aF9jZndzX2FuZF9kb3RzKHNlbGYpOgorICAgICAgICBuYW1lX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbmFtZV9hZGRyLAorICAgICAgICAgICAgJyhmb28pIFJveS5BLkJlYXIgKGJhcikgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAoYmlyZCknLAorICAgICAgICAgICAgJyhmb28pIFJveS5BLkJlYXIgKGJhcikgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAoYmlyZCknLAorICAgICAgICAgICAgJyAiUm95LkEuQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5kaXNwbGF5X25hbWUsICdSb3kuQS5CZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShuYW1lX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfcXNfbmFtZShzZWxmKToKKyAgICAgICAgbmFtZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X25hbWVfYWRkciwKKyAgICAgICAgICAgICciUm95LkEuQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnIlJveS5BLkJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyJSb3kuQS5CZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRpc3BsYXlfbmFtZSwgJ1JveS5BLkJlYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG5hbWVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X25hbWVfYWRkcl93aXRoX3JvdXRlKHNlbGYpOgorICAgICAgICBuYW1lX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbmFtZV9hZGRyLAorICAgICAgICAgICAgJyJSb3kuQS5CZWFyIiA8QHR3by5leGFtcGxlLmNvbTogZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgICciUm95LkEuQmVhciIgPEB0d28uZXhhbXBsZS5jb206IGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnIlJveS5BLkJlYXIiIDxAdHdvLmV4YW1wbGUuY29tOiBkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZGlzcGxheV9uYW1lLCAnUm95LkEuQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIucm91dGUsIFsndHdvLmV4YW1wbGUuY29tJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfZW5kc19hdF9zcGVjaWFsKHNlbGYpOgorICAgICAgICBuYW1lX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbmFtZV9hZGRyLAorICAgICAgICAgICAgJyJSb3kuQS5CZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCBuZXh0JywKKyAgICAgICAgICAgICciUm95LkEuQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnIlJveS5BLkJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnLCBuZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZGlzcGxheV9uYW1lLCAnUm95LkEuQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobmFtZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfbmFtZV9hZGRyX25vX2NvbnRlbnRfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfbmFtZV9hZGRyKCcgKGZvbykgJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfbm9fY29udGVudF9iZWZvcmVfc3BlY2lhbF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9uYW1lX2FkZHIoJyAoZm9vKSAsJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfbm9fYW5nbGVfYWZ0ZXJfZGlzcGxheV9uYW1lX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X25hbWVfYWRkcignZm9vIGJhcicpCisKKyAgICAjIGdldF9tYWlsYm94CisKKyAgICBkZWYgdGVzdF9nZXRfbWFpbGJveF9hZGRyX3NwZWNfb25seShzZWxmKToKKyAgICAgICAgbWFpbGJveCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9tYWlsYm94LAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LnRva2VuX3R5cGUsICdtYWlsYm94JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFpbGJveC5kaXNwbGF5X25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94LnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfYW5nbGVfYWRkcl9vbmx5KHNlbGYpOgorICAgICAgICBtYWlsYm94ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X21haWxib3gsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3gudG9rZW5fdHlwZSwgJ21haWxib3gnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94LmRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1haWxib3gucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfbWFpbGJveF9uYW1lX2FkZHIoc2VsZik6CisgICAgICAgIG1haWxib3ggPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveCwKKyAgICAgICAgICAgICciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC50b2tlbl90eXBlLCAnbWFpbGJveCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5kaXNwbGF5X25hbWUsICdSb3kgQS4gQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94LnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfZW5kc19hdF9zcGVjaWFsKHNlbGYpOgorICAgICAgICBtYWlsYm94ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X21haWxib3gsCisgICAgICAgICAgICAnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCByZXN0JywKKyAgICAgICAgICAgICciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcsIHJlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3gudG9rZW5fdHlwZSwgJ21haWxib3gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guZGlzcGxheV9uYW1lLCAnUm95IEEuIEJlYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3gubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFpbGJveC5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9tYWlsYm94X3F1b3RlZF9zdHJpbmdzX2luX2F0b21fbGlzdChzZWxmKToKKyAgICAgICAgbWFpbGJveCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9tYWlsYm94LAorICAgICAgICAgICAgJyIiZXhhbXBsZSIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJyIiZXhhbXBsZSIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ2V4YW1wbGUgZXhhbXBsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjMsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmxvY2FsX3BhcnQsICdleGFtcGxlIGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guYWRkcl9zcGVjLCAnImV4YW1wbGUgZXhhbXBsZSJAZXhhbXBsZS5jb20nKQorCisgICAgIyBnZXRfbWFpbGJveF9saXN0CisKKyAgICBkZWYgdGVzdF9nZXRfbWFpbGJveF9saXN0X3NpbmdsZV9hZGRyKHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QudG9rZW5fdHlwZSwgJ21haWxib3gtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1haWxib3hfbGlzdC5tYWlsYm94ZXMpLCAxKQorICAgICAgICBtYWlsYm94ID0gbWFpbGJveF9saXN0Lm1haWxib3hlc1swXQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94LmRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1haWxib3gucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuYWxsX21haWxib3hlcykKKworICAgIGRlZiB0ZXN0X2dldF9tYWlsYm94X2xpc3RfdHdvX3NpbXBsZV9hZGRyKHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tLCBkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbSwgZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20sIGRpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QudG9rZW5fdHlwZSwgJ21haWxib3gtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1haWxib3hfbGlzdC5tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzFdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfbGlzdF90d29fbmFtZV9hZGRyKHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWFpbGJveF9saXN0Lm1haWxib3hlcyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1swXS5hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgJ1JveSBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzFdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzFdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdGcmVkIEZsaW50c3RvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXMpCisKKyAgICBkZWYgdGVzdF9nZXRfbWFpbGJveF9saXN0X3R3b19jb21wbGV4KHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgKCcoZm9vKSAiUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4oYmFyKSwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC4oYmlyZClleGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnKGZvbykgIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+KGJhciksJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuKGJpcmQpZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJyAiUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4gLCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LiBleGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1haWxib3hfbGlzdC5tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdSb3kgQS4gQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1sxXS5hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1sxXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBGbGludHN0b25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfbGlzdF91bnBhcnNlYWJsZV9tYWlsYm94X251bGwoc2VsZik6CisgICAgICAgIG1haWxib3hfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9tYWlsYm94X2xpc3QsCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciJbXSBkaW5zZGFsZUBleGFtcGxlLmNvbSwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC4oYmlyZClleGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIltdIGRpbnNkYWxlQGV4YW1wbGUuY29tLCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LihiaXJkKWV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiW10gZGluc2RhbGVAZXhhbXBsZS5jb20sJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuIGV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICMgdGhlICdleHRyYScgdGV4dCBhZnRlciB0aGUgbG9jYWwgcGFydAorICAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICMgdGhlIGxvY2FsIHBhcnQgd2l0aCBubyBhbmdsZS1hZGRyCisgICAgICAgICAgICAgZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0LCAgIyBwZXJpb2QgaW4gZXh0cmEgdGV4dCAoZXhhbXBsZS5jb20pCisgICAgICAgICAgICAgZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwgIyAoYmlyZCkgaW4gdmFsaWQgYWRkcmVzcy4KKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsYm94X2xpc3QubWFpbGJveGVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzBdLnRva2VuX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZC1tYWlsYm94JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXNbMF0uZGlzcGxheV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzBdLmxvY2FsX3BhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAnUm95IEEuIEJlYXInKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94X2xpc3QuYWxsX21haWxib3hlc1swXS5kb21haW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgJyJSb3kgQS4gQmVhciInKQorICAgICAgICBzZWxmLmFzc2VydElzKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0Lm1haWxib3hlc1swXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzBdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdGcmVkIEZsaW50c3RvbmUnKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfbGlzdF9qdW5rX2FmdGVyX3ZhbGlkX2FkZHJlc3Moc2VsZik6CisgICAgICAgIG1haWxib3hfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9tYWlsYm94X2xpc3QsCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPkBALCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT5AQCwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+QEAsJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1haWxib3hfbGlzdC5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsYm94X2xpc3QuYWxsX21haWxib3hlcyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QuYWxsX21haWxib3hlc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAnUm95IEEuIEJlYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzBdLnRva2VuX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZC1tYWlsYm94JykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYWlsYm94X2xpc3QuYWxsX21haWxib3hlc1sxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1swXS5hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBGbGludHN0b25lJykKKworICAgIGRlZiB0ZXN0X2dldF9tYWlsYm94X2xpc3RfZW1wdHlfbGlzdF9lbGVtZW50KHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sIChiaXJkKSwsJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwgKGJpcmQpLCwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCAsLCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsYm94X2xpc3QubWFpbGJveGVzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QuYWxsX21haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QubWFpbGJveGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzBdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXNbMF0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgJ1JveSBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzFdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzFdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdGcmVkIEZsaW50c3RvbmUnKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfbGlzdF9vbmx5X2VtcHR5X2VsZW1lbnRzKHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgJyhmb28pLCwgKGJhciknLAorICAgICAgICAgICAgJyhmb28pLCwgKGJhciknLAorICAgICAgICAgICAgJyAsLCAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsYm94X2xpc3QubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QuYWxsX21haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QubWFpbGJveGVzKQorCisgICAgIyBnZXRfZ3JvdXBfbGlzdAorCisgICAgZGVmIHRlc3RfZ2V0X2dyb3VwX2xpc3RfY2Z3c19vbmx5KHNlbGYpOgorICAgICAgICBncm91cF9saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2dyb3VwX2xpc3QsCisgICAgICAgICAgICAnKGhpZGRlbik7JywKKyAgICAgICAgICAgICcoaGlkZGVuKScsCisgICAgICAgICAgICAnICcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICc7JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0LnRva2VuX3R5cGUsICdncm91cC1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXBfbGlzdC5tYWlsYm94ZXMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX2xpc3QuYWxsX21haWxib3hlcykKKworICAgIGRlZiB0ZXN0X2dldF9ncm91cF9saXN0X21haWxib3hfbGlzdChzZWxmKToKKyAgICAgICAgZ3JvdXBfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9ncm91cF9saXN0LAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUub3JnLCAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5vcmc+JywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLm9yZywgIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUub3JnPicsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5vcmcsICJGcmVkIEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLm9yZz4nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0LnRva2VuX3R5cGUsICdncm91cC1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXBfbGlzdC5tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0Lm1haWxib3hlc1sxXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZyZWQgQS4gQmVhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfbGlzdF9vYnNfZ3JvdXBfbGlzdChzZWxmKToKKyAgICAgICAgZ3JvdXBfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9ncm91cF9saXN0LAorICAgICAgICAgICAgJywgKGZvbyksLChiYXIpJywKKyAgICAgICAgICAgICcsIChmb28pLCwoYmFyKScsCisgICAgICAgICAgICAnLCAsLCAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0LnRva2VuX3R5cGUsICdncm91cC1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXBfbGlzdC5tYWlsYm94ZXMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX2xpc3QuYWxsX21haWxib3hlcykKKworICAgIGRlZiB0ZXN0X2dldF9ncm91cF9saXN0X2NvbW1lbnRfb25seV9pbnZhbGlkKHNlbGYpOgorICAgICAgICBncm91cF9saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2dyb3VwX2xpc3QsCisgICAgICAgICAgICAnKGJhciknLAorICAgICAgICAgICAgJyhiYXIpJywKKyAgICAgICAgICAgICcgJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0LnRva2VuX3R5cGUsICdncm91cC1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXBfbGlzdC5tYWlsYm94ZXMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX2xpc3QuYWxsX21haWxib3hlcykKKworICAgICMgZ2V0X2dyb3VwCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfZW1wdHkoc2VsZik6CisgICAgICAgIGdyb3VwID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2dyb3VwLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjo7JywKKyAgICAgICAgICAgICdNb250eSBQeXRob246OycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOjsnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC50b2tlbl90eXBlLCAnZ3JvdXAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLmRpc3BsYXlfbmFtZSwgJ01vbnR5IFB5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwLm1haWxib3hlcyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmFsbF9tYWlsYm94ZXMpCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfbnVsbF9hZGRyX3NwZWMoc2VsZik6CisgICAgICAgIGdyb3VwID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2dyb3VwLAorICAgICAgICAgICAgJ2ZvbzogPD47JywKKyAgICAgICAgICAgICdmb286IDw+OycsCisgICAgICAgICAgICAnZm9vOiA8PjsnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLmRpc3BsYXlfbmFtZSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwLm1haWxib3hlcyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwLmFsbF9tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLmFsbF9tYWlsYm94ZXNbMF0udmFsdWUsICc8PicpCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfY2Z3c19vbmx5KHNlbGYpOgorICAgICAgICBncm91cCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9ncm91cCwKKyAgICAgICAgICAgICdNb250eSBQeXRob246IChoaWRkZW4pOycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiAoaGlkZGVuKTsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogOycsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLnRva2VuX3R5cGUsICdncm91cCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAuZGlzcGxheV9uYW1lLCAnTW9udHkgUHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXAubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuYWxsX21haWxib3hlcykKKworICAgIGRlZiB0ZXN0X2dldF9ncm91cF9zaW5nbGVfbWFpbGJveChzZWxmKToKKyAgICAgICAgZ3JvdXAgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZ3JvdXAsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+OycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+OycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+OycsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLnRva2VuX3R5cGUsICdncm91cCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAuZGlzcGxheV9uYW1lLCAnTW9udHkgUHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXAubWFpbGJveGVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfbWl4ZWRfbGlzdChzZWxmKToKKyAgICAgICAgZ3JvdXAgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZ3JvdXAsCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyhmb28pIFJvZ2VyIDxwaW5nQGV4YW1wZWxlLmNvbT4sIHhAdGVzdC5leGFtcGxlLmNvbTsnKSwKKyAgICAgICAgICAgICgnTW9udHkgUHl0aG9uOiAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCcKKyAgICAgICAgICAgICAgICAnKGZvbykgUm9nZXIgPHBpbmdAZXhhbXBlbGUuY29tPiwgeEB0ZXN0LmV4YW1wbGUuY29tOycpLAorICAgICAgICAgICAgKCdNb250eSBQeXRob246ICJGcmVkIEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICcgUm9nZXIgPHBpbmdAZXhhbXBlbGUuY29tPiwgeEB0ZXN0LmV4YW1wbGUuY29tOycpLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC50b2tlbl90eXBlLCAnZ3JvdXAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLmRpc3BsYXlfbmFtZSwgJ01vbnR5IFB5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwLm1haWxib3hlcyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5tYWlsYm94ZXNbMV0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdSb2dlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzWzJdLmxvY2FsX3BhcnQsICd4JykKKworICAgIGRlZiB0ZXN0X2dldF9ncm91cF9vbmVfaW52YWxpZChzZWxmKToKKyAgICAgICAgZ3JvdXAgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZ3JvdXAsCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyhmb28pIFJvZ2VyIHBpbmdAZXhhbXBlbGUuY29tLCB4QHRlc3QuZXhhbXBsZS5jb207JyksCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyhmb28pIFJvZ2VyIHBpbmdAZXhhbXBlbGUuY29tLCB4QHRlc3QuZXhhbXBsZS5jb207JyksCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyBSb2dlciBwaW5nQGV4YW1wZWxlLmNvbSwgeEB0ZXN0LmV4YW1wbGUuY29tOycpLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICMgbm9uLWFuZ2xlIGFkZHIgbWFrZXMgbG9jYWwgcGFydCBpbnZhbGlkCisgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLCAgICMgYW5kIGl0cyBub3Qgb2JzLWxvY2FsIGVpdGhlcjogbm8gZG90cy4KKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLnRva2VuX3R5cGUsICdncm91cCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAuZGlzcGxheV9uYW1lLCAnTW9udHkgUHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXAubWFpbGJveGVzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXAuYWxsX21haWxib3hlcyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5tYWlsYm94ZXNbMV0ubG9jYWxfcGFydCwgJ3gnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShncm91cC5hbGxfbWFpbGJveGVzWzFdLmRpc3BsYXlfbmFtZSkKKworICAgICMgZ2V0X2FkZHJlc3MKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX3NpbXBsZShzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5kb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ21haWxib3gnKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJlc3NfY29tcGxleChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJyhmb28pICJGcmVkIEEuIEJlYXIiIDwoYmlyZClkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyhmb28pICJGcmVkIEEuIEJlYXIiIDwoYmlyZClkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyAiRnJlZCBBLiBCZWFyIiA8IGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MudG9rZW5fdHlwZSwgJ2FkZHJlc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzLm1haWxib3hlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcy5hbGxfbWFpbGJveGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ21haWxib3gnKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJlc3NfZW1wdHlfZ3JvdXAoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzcywKKyAgICAgICAgICAgICdNb250eSBQeXRob246OycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOjsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjo7JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy50b2tlbl90eXBlLCAnYWRkcmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3MubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc1swXS50b2tlbl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICdncm91cCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01vbnR5IFB5dGhvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19ncm91cChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogeEBleGFtcGxlLmNvbSwgeUBleGFtcGxlLmNvbTsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogeEBleGFtcGxlLmNvbSwgeUBleGFtcGxlLmNvbTsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogeEBleGFtcGxlLmNvbSwgeUBleGFtcGxlLmNvbTsnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyb3VwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9udHkgUHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LCAneCcpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19xdW90ZWRfbG9jYWxfcGFydChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJyJmb28gYmFyIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnImZvbyBiYXIiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICciZm9vIGJhciJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5kb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsICdtYWlsYm94JykKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2VuZHNfYXRfc3BlY2lhbChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tLCBuZXh0JywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnLCBuZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5kb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsICdtYWlsYm94JykKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2ludmFsaWRfbWFpbGJveF9pbnZhbGlkKHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJlc3MsCisgICAgICAgICAgICAncGluZyBleGFtcGxlLmNvbSwgbmV4dCcsCisgICAgICAgICAgICAncGluZyBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAncGluZyBleGFtcGxlLmNvbScsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgICMgYWRkci1zcGVjIHdpdGggbm8gZG9tYWluCisgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgICMgaW52YWxpZCBsb2NhbC1wYXJ0CisgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgICMgbWlzc2luZyAucyBpbiBsb2NhbC1wYXJ0CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgJywgbmV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy50b2tlbl90eXBlLCAnYWRkcmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3MubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5hbGxfbWFpbGJveGVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYWRkcmVzcy5hbGxfbWFpbGJveGVzWzBdLmRvbWFpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLmFsbF9tYWlsYm94ZXNbMF0ubG9jYWxfcGFydCwgJ3BpbmcgZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NbMF0udG9rZW5fdHlwZSwgJ2ludmFsaWQtbWFpbGJveCcpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19xdW90ZWRfc3RyaW5nc19pbl9hdG9tX2xpc3Qoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzcywKKyAgICAgICAgICAgICciImV4YW1wbGUiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICciImV4YW1wbGUiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdleGFtcGxlIGV4YW1wbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSozLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy5hbGxfbWFpbGJveGVzWzBdLmxvY2FsX3BhcnQsICdleGFtcGxlIGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MuYWxsX21haWxib3hlc1swXS5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy5hbGxfbWFpbGJveGVzWzBdLmFkZHJfc3BlYywgJyJleGFtcGxlIGV4YW1wbGUiQGV4YW1wbGUuY29tJykKKworCisgICAgIyBnZXRfYWRkcmVzc19saXN0CisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19saXN0X21haWxib3hlc19zaW1wbGUoc2VsZik6CisgICAgICAgIGFkZHJlc3NfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHIoeCkgZm9yIHggaW4gYWRkcmVzc19saXN0LmFkZHJlc3Nlc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0WzBdLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYWRkcmVzc19saXN0WzBdLmRpc3BsYXlfbmFtZSkKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2xpc3RfbWFpbGJveGVzX3R3b19zaW1wbGUoc2VsZik6CisgICAgICAgIGFkZHJlc3NfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QsCisgICAgICAgICAgICAnZm9vQGV4YW1wbGUuY29tLCAiRnJlZCBBLiBCYXIiIDxiYXJAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgICdmb29AZXhhbXBsZS5jb20sICJGcmVkIEEuIEJhciIgPGJhckBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJ2Zvb0BleGFtcGxlLmNvbSwgIkZyZWQgQS4gQmFyIiA8YmFyQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHIoeCkgZm9yIHggaW4gYWRkcmVzc19saXN0LmFkZHJlc3Nlc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QubWFpbGJveGVzWzFdLmRpc3BsYXlfbmFtZSwgIkZyZWQgQS4gQmFyIikKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2xpc3RfbWFpbGJveGVzX2NvbXBsZXgoc2VsZik6CisgICAgICAgIGFkZHJlc3NfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QsCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICcocGluZykgRm9vIDx4QGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJ05vYm9keSBJcy4gU3BlY2lhbCA8eUAoYmlyZClleGFtcGxlLihiYWQpY29tPicpLAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAnKHBpbmcpIEZvbyA8eEBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICdOb2JvZHkgSXMuIFNwZWNpYWwgPHlAKGJpcmQpZXhhbXBsZS4oYmFkKWNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCAnCisgICAgICAgICAgICAgICAgJ0ZvbyA8eEBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICciTm9ib2R5IElzLiBTcGVjaWFsIiA8eUBleGFtcGxlLiBjb20+JyksCisgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0LCAjIHBlcmlvZCBpbiBJcy4KKyAgICAgICAgICAgIGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sICMgY2Z3cyBpbiBkb21haW4KKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHIoeCkgZm9yIHggaW4gYWRkcmVzc19saXN0LmFkZHJlc3Nlc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS50b2tlbl90eXBlLCAnbWFpbGJveCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LmFkZHJlc3Nlc1swXS50b2tlbl90eXBlLCAnYWRkcmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1sxXS5sb2NhbF9wYXJ0LCAneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1syXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ05vYm9keSBJcy4gU3BlY2lhbCcpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19saXN0X21haWxib3hlc19pbnZhbGlkX2FkZHJlc3NlcyhzZWxmKToKKyAgICAgICAgYWRkcmVzc19saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJlc3NfbGlzdCwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCAnCisgICAgICAgICAgICAgICAgJyhwaW5nKSBGb28geEBleGFtcGxlLmNvbVtdLCcKKyAgICAgICAgICAgICAgICAnTm9ib2R5IElzLiBTcGVjaWFsIDwoYmlyZClleGFtcGxlLihiYWQpY29tPicpLAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAnKHBpbmcpIEZvbyB4QGV4YW1wbGUuY29tW10sJworICAgICAgICAgICAgICAgICdOb2JvZHkgSXMuIFNwZWNpYWwgPChiaXJkKWV4YW1wbGUuKGJhZCljb20+JyksCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICdGb28geEBleGFtcGxlLmNvbVtdLCcKKyAgICAgICAgICAgICAgICAnIk5vYm9keSBJcy4gU3BlY2lhbCIgPCBleGFtcGxlLiBjb20+JyksCisgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICMgaW52YWxpZCBhZGRyZXNzIGluIGxpc3QKKyAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgIyAnRm9vIHgnIGxvY2FsIHBhcnQgaW52YWxpZC4KKyAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgIyBNaXNzaW5nIC4gaW4gJ0ZvbyB4JyBsb2NhbCBwYXJ0CisgICAgICAgICAgICAgIGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCwgICMgcGVyaW9kIGluICdJcy4nIGRpc3AtbmFtZSBwaHJhc2UKKyAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgIyBubyBkb21haW4gcGFydCBpbiBhZGRyLXNwZWMKKyAgICAgICAgICAgICAgZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwgIyBhZGRyLXNwZWMgaGFzIGNvbW1lbnQgaW4gaXQKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5hbGxfbWFpbGJveGVzKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5hbGxfbWFpbGJveGVzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNbMF0uZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNbMF0udG9rZW5fdHlwZSwgJ21haWxib3gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0udG9rZW5fdHlwZSwgJ2FkZHJlc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMV0udG9rZW5fdHlwZSwgJ2FkZHJlc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzBdLm1haWxib3hlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMV0ubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0LmFkZHJlc3Nlc1sxXS5tYWlsYm94ZXMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgYWRkcmVzc19saXN0LmFkZHJlc3Nlc1sxXS5hbGxfbWFpbGJveGVzWzBdLmxvY2FsX3BhcnQsICdGb28geCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzJdLmFsbF9tYWlsYm94ZXNbMF0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICJOb2JvZHkgSXMuIFNwZWNpYWwiKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJlc3NfbGlzdF9ncm91cF9lbXB0eShzZWxmKToKKyAgICAgICAgYWRkcmVzc19saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJlc3NfbGlzdCwKKyAgICAgICAgICAgICdNb250eSBQeXRob246IDsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogOycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiA7JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LnRva2VuX3R5cGUsICdhZGRyZXNzLWxpc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzX2xpc3QubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5hbGxfbWFpbGJveGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzX2xpc3QuYWRkcmVzc2VzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzBdLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzBdLmRpc3BsYXlfbmFtZSwgJ01vbnR5IFB5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0ubWFpbGJveGVzKSwgMCkKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2xpc3RfZ3JvdXBfc2ltcGxlKHNlbGYpOgorICAgICAgICBhZGRyZXNzX2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzc19saXN0LAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogZGluc2RhbGVAZXhhbXBsZS5jb207JywKKyAgICAgICAgICAgICdNb250eSBQeXRob246IGRpbnNkYWxlQGV4YW1wbGUuY29tOycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiBkaW5zZGFsZUBleGFtcGxlLmNvbTsnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QudG9rZW5fdHlwZSwgJ2FkZHJlc3MtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LmFkZHJlc3Nlc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01vbnR5IFB5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LmFkZHJlc3Nlc1swXS5tYWlsYm94ZXNbMF0uZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19saXN0X2dyb3VwX2FuZF9tYWlsYm94ZXMoc2VsZik6CisgICAgICAgIGFkZHJlc3NfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QsCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogZGluc2RhbGVAZXhhbXBsZS5jb20sICJGcmVkIiA8ZmxpbnRAZXhhbXBsZS5jb20+OywgJworICAgICAgICAgICAgICAgICdBYmUgPHhAZXhhbXBsZS5jb20+LCBCZWUgPHlAZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogZGluc2RhbGVAZXhhbXBsZS5jb20sICJGcmVkIiA8ZmxpbnRAZXhhbXBsZS5jb20+OywgJworICAgICAgICAgICAgICAgICdBYmUgPHhAZXhhbXBsZS5jb20+LCBCZWUgPHlAZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogZGluc2RhbGVAZXhhbXBsZS5jb20sICJGcmVkIiA8ZmxpbnRAZXhhbXBsZS5jb20+OywgJworICAgICAgICAgICAgICAgICdBYmUgPHhAZXhhbXBsZS5jb20+LCBCZWUgPHlAZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0LmFkZHJlc3NlcyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb250eSBQeXRob24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0ubWFpbGJveGVzWzBdLmRvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0ubWFpbGJveGVzWzFdLmxvY2FsX3BhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZsaW50JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzFdLm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzJdLm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICd5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYWRkcmVzc19saXN0LmFkZHJlc3Nlc1sxXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNbMl0pKQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RfcGFyc2VfbWltZV92ZXJzaW9uKFRlc3RQYXJzZXJNaXhpbiwgVGVzdEVtYWlsQmFzZSk6CisKKyAgICBkZWYgbWltZV92ZXJzaW9uX2FzX3ZhbHVlKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRsX3N0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRsX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFqb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5vciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVjdHMpOgorICAgICAgICBtaW1lX3ZlcnNpb24gPSBzZWxmLl90ZXN0X3BhcnNlX3gocGFyc2VyLnBhcnNlX21pbWVfdmVyc2lvbiwKKyAgICAgICAgICAgIHZhbHVlLCB0bF9zdHIsIHRsX3ZhbHVlLCBkZWZlY3RzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pbWVfdmVyc2lvbi5tYWpvciwgbWFqb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWltZV92ZXJzaW9uLm1pbm9yLCBtaW5vcikKKworICAgIG1pbWVfdmVyc2lvbl9wYXJhbXMgPSB7CisKKyAgICAgICAgJ3JmY18yMDQ1XzEnOiAoCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAnUkZDXzIwNDVfMic6ICgKKyAgICAgICAgICAgICcxLjAgKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpJywKKyAgICAgICAgICAgICcxLjAgKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpJywKKyAgICAgICAgICAgICcxLjAgJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICdSRkNfMjA0NV8zJzogKAorICAgICAgICAgICAgJyhwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KSAxLjAnLAorICAgICAgICAgICAgJyhwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KSAxLjAnLAorICAgICAgICAgICAgJyAxLjAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJ1JGQ18yMDQ1XzQnOiAoCisgICAgICAgICAgICAnMS4ocHJvZHVjZWQgYnkgTWV0YVNlbmQgVngueCkwJywKKyAgICAgICAgICAgICcxLihwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KTAnLAorICAgICAgICAgICAgJzEuIDAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJ2VtcHR5JzogKAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBbZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlXSksCisKKyAgICAgICAgfQorCisKKworY2xhc3MgVGVzdEZvbGRpbmcoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBwb2xpY3kgPSBwb2xpY3kuZGVmYXVsdAorCisgICAgZGVmIF90ZXN0KHNlbGYsIHRsLCBmb2xkZWQsIHBvbGljeT1wb2xpY3kpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRsLmZvbGQocG9saWN5PXBvbGljeSksIGZvbGRlZCwgdGwucHBzdHIoKSkKKworICAgIGRlZiB0ZXN0X3NpbXBsZV91bnN0cnVjdHVyZWRfbm9fZm9sZHMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QocGFyc2VyLmdldF91bnN0cnVjdHVyZWQoIlRoaXMgaXMgYSB0ZXN0IiksCisgICAgICAgICAgICAgICAgICAgIlRoaXMgaXMgYSB0ZXN0XG4iKQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX3Vuc3RydWN0dXJlZF9mb2xkZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QocGFyc2VyLmdldF91bnN0cnVjdHVyZWQoIlRoaXMgaXMgYWxzbyBhIHRlc3QsIGJ1dCB0aGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lIHRoZXJlIGFyZSBlbm91Z2ggd29yZHMgKGFuZCBldmVuIHNvbWUgIgorICAgICAgICAgICAgICAgICAgICAgICAgInN5bWJvbHMpIHRvIG1ha2UgaXQgd3JhcDsgYXQgbGVhc3QgaW4gdGhlb3J5LiIpLAorICAgICAgICAgICAgICAgICAgICJUaGlzIGlzIGFsc28gYSB0ZXN0LCBidXQgdGhpcyB0aW1lIHRoZXJlIGFyZSBlbm91Z2ggIgorICAgICAgICAgICAgICAgICAgICAgICAgIndvcmRzIChhbmQgZXZlbiBzb21lXG4iCisgICAgICAgICAgICAgICAgICAgIiBzeW1ib2xzKSB0byBtYWtlIGl0IHdyYXA7IGF0IGxlYXN0IGluIHRoZW9yeS5cbiIpCisKKyAgICBkZWYgdGVzdF91bnN0cnVjdHVyZWRfd2l0aF91bmljb2RlX25vX2ZvbGRzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKCJow7xic2NoIGtsZWluZXIgYmVpw590IiksCisgICAgICAgICAgICAgICAgICAgIj0/dXRmLTg/cT9oPUMzPUJDYnNjaF9rbGVpbmVyX2JlaT1DMz05RnQ/PVxuIikKKworICAgIGRlZiB0ZXN0X29uZV9ld19vbl9lYWNoX29mX3R3b193cmFwcGVkX2xpbmVzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKCJNZWluIGtsZWluZXIgS2FrdHVzIGlzdCBzZWhyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaMO8YnNjaC4gIEVzIGhhdCB2aWVsZSBTdGFjaGVsbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZCBvZnQgYmVpw590IG1pY2guIiksCisgICAgICAgICAgICAgICAgICAgIk1laW4ga2xlaW5lciBLYWt0dXMgaXN0IHNlaHIgPT91dGYtOD9xP2g9QzM9QkNic2NoPTJFPz0gICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJFcyBoYXQgdmllbGUgU3RhY2hlbG5cbiIKKyAgICAgICAgICAgICAgICAgICAiIHVuZCBvZnQgPT91dGYtOD9xP2JlaT1DMz05RnQ/PSBtaWNoLlxuIikKKworICAgIGRlZiB0ZXN0X2V3c19jb21iaW5lZF9iZWZvcmVfd3JhcChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChwYXJzZXIuZ2V0X3Vuc3RydWN0dXJlZCgiTWVpbiBLYWt0dXMgaXN0IGjDvGJzY2guICAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVzIGJlacOfdCBtaWNoLiAgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbmQgdGhhdCdzIGFsbCBJJ20gc2F5aW4uIiksCisgICAgICAgICAgICAgICAgICAgIk1laW4gS2FrdHVzIGlzdCA9P3V0Zi04P3E/aD1DMz1CQ2JzY2g9MkVfX0VzX2JlaT1DMz05RnQ/PSAiCisgICAgICAgICAgICAgICAgICAgICAgICAibWljaC4gIEFuZCB0aGF0J3NcbiIKKyAgICAgICAgICAgICAgICAgICAiIGFsbCBJJ20gc2F5aW4uXG4iKQorCisgICAgIyBYWFggTmVlZCB0ZXN0IG9mIGFuIGVuY29kZWQgd29yZCBzbyBsb25nIHRoYXQgaXQgbmVlZHMgdG8gYmUgd3JhcHBlZAorCisgICAgZGVmIHRlc3Rfc2ltcGxlX2FkZHJlc3Moc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QoImFiYyA8eHl6QGV4YW1wbGUuY29tPiIpWzBdLAorICAgICAgICAgICAgICAgICAgICJhYmMgPHh5ekBleGFtcGxlLmNvbT5cbiIpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX2xpc3RfZm9sZGluZ19hdF9jb21tYXMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QoJ2FiYyA8eHl6QGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIkZyZWQgQmx1bnQiIDxzaGFycEBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyJKLlAuQ29vbCIgPGhvdEBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyJLPD55IiA8a2V5QGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRmlyZXNhbGUgPGNoZWFwQGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGVuZEBleGFtcGxlLmNvbT4nKVswXSwKKyAgICAgICAgICAgICAgICAgICAgJ2FiYyA8eHl6QGV4YW1wbGUuY29tPiwgIkZyZWQgQmx1bnQiIDxzaGFycEBleGFtcGxlLmNvbT4sXG4nCisgICAgICAgICAgICAgICAgICAgICcgIkouUC5Db29sIiA8aG90QGV4YW1wbGUuY29tPiwgIks8PnkiIDxrZXlAZXhhbXBsZS5jb20+LFxuJworICAgICAgICAgICAgICAgICAgICAnIEZpcmVzYWxlIDxjaGVhcEBleGFtcGxlLmNvbT4sIDxlbmRAZXhhbXBsZS5jb20+XG4nKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19saXN0X3dpdGhfdW5pY29kZV9uYW1lcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChwYXJzZXIuZ2V0X2FkZHJlc3NfbGlzdCgKKyAgICAgICAgICAgICdIw7xic2NoIEtha3R1cyA8YmVhdXRpZnVsQGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICdiZWnDn3QgYmVpw590IDxiaXRlckBleGFtcGxlLmNvbT4nKVswXSwKKyAgICAgICAgICAgICc9P3V0Zi04P3E/SD1DMz1CQ2JzY2g/PSBLYWt0dXMgPGJlYXV0aWZ1bEBleGFtcGxlLmNvbT4sXG4nCisgICAgICAgICAgICAgICAgJyA9P3V0Zi04P3E/YmVpPUMzPTlGdF9iZWk9QzM9OUZ0Pz0gPGJpdGVyQGV4YW1wbGUuY29tPlxuJykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfbGlzdF93aXRoX3VuaWNvZGVfbmFtZXNfaW5fcXVvdGVzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KHBhcnNlci5nZXRfYWRkcmVzc19saXN0KAorICAgICAgICAgICAgJyJIw7xic2NoIEtha3R1cyIgPGJlYXV0aWZ1bEBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAnImJlacOfdCIgYmVpw590IDxiaXRlckBleGFtcGxlLmNvbT4nKVswXSwKKyAgICAgICAgICAgICc9P3V0Zi04P3E/SD1DMz1CQ2JzY2g/PSBLYWt0dXMgPGJlYXV0aWZ1bEBleGFtcGxlLmNvbT4sXG4nCisgICAgICAgICAgICAgICAgJyA9P3V0Zi04P3E/YmVpPUMzPTlGdF9iZWk9QzM9OUZ0Pz0gPGJpdGVyQGV4YW1wbGUuY29tPlxuJykKKworICAgICMgWFhYIE5lZWQgdGVzdHMgd2l0aCBjb21tZW50cyBvbiB2YXJpb3VzIHNpZGVzIG9mIGEgdW5pY29kZSB0b2tlbiwKKyAgICAjIGFuZCB3aXRoIHVuaWNvZGUgdG9rZW5zIGluIHRoZSBjb21tZW50cy4gIFNwYWNlcyBpbnNpZGUgdGhlIHF1b3RlcworICAgICMgY3VycmVudGx5IGRvbid0IGRvIHRoZSByaWdodCB0aGluZy4KKworICAgIGRlZiB0ZXN0X2luaXRpYWxfd2hpdGVzcGFjZV9zcGxpdHRpbmcoc2VsZik6CisgICAgICAgIGJvZHkgPSBwYXJzZXIuZ2V0X3Vuc3RydWN0dXJlZCgnICAgJyArICd4Jyo3NykKKyAgICAgICAgaGVhZGVyID0gcGFyc2VyLkhlYWRlcihbCisgICAgICAgICAgICBwYXJzZXIuSGVhZGVyTGFiZWwoW3BhcnNlci5WYWx1ZVRlcm1pbmFsKCd0ZXN0OicsICdhdGV4dCcpXSksCisgICAgICAgICAgICBwYXJzZXIuQ0ZXU0xpc3QoW3BhcnNlci5XaGl0ZVNwYWNlVGVybWluYWwoJyAnLCAnZndzJyldKSwgYm9keV0pCisgICAgICAgIHNlbGYuX3Rlc3QoaGVhZGVyLCAndGVzdDogICBcbiAnICsgJ3gnKjc3ICsgJ1xuJykKKworICAgIGRlZiB0ZXN0X3doaXRlc3BhY2Vfc3BsaXR0aW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKCd4eHggICAnICsgJ3knKjc3KSwKKyAgICAgICAgICAgICAgICAgICAneHh4ICBcbiAnICsgJ3knKjc3ICsgJ1xuJykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L3Rlc3RfZW1haWxfY29kZWNzLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weQpzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsX2NvZGVjcy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weQppbmRleCBjYTg1ZjU3Li4wODkyNjlmIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsX2NvZGVjcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfYXNpYW5fY29kZWNzLnB5CkBAIC01LDcgKzUsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKLWZyb20gZW1haWwudGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCitmcm9tIHRlc3QudGVzdF9lbWFpbC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCiBmcm9tIGVtYWlsLmNoYXJzZXQgaW1wb3J0IENoYXJzZXQKIGZyb20gZW1haWwuaGVhZGVyIGltcG9ydCBIZWFkZXIsIGRlY29kZV9oZWFkZXIKIGZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQpAQCAtNDEsNyArNDEsNyBAQAogSGVsbG8gV29ybGQhID0/aXNvLTIwMjItanA/Yj9HeVJDSlU4bGJTRThKVzhoUENWckpVa2hLaHNvUWc9PT89CiAgPT9pc28tODg1OS0xP3E/R3I9RkM9REZfR290dCE/PSIiIikKICAgICAgICAgZXEoZGVjb2RlX2hlYWRlcihoLmVuY29kZSgpKSwKLSAgICAgICAgICAgWyhiJ0hlbGxvIFdvcmxkIScsIE5vbmUpLAorICAgICAgICAgICBbKGInSGVsbG8gV29ybGQhICcsIE5vbmUpLAogICAgICAgICAgICAgKGInXHgxYiRCJU8lbSE8JW8hPCVrJUkhKlx4MWIoQicsICdpc28tMjAyMi1qcCcpLAogICAgICAgICAgICAgKGInR3JceGZjXHhkZiBHb3R0IScsIGdjb2RlKV0pCiAgICAgICAgIHN1YmplY3RfYnl0ZXMgPSAoYid0ZXN0LWphIFx4YTRceGQ4XHhjNVx4ZWFceGI5XHhjNlx4YTRceGI1JwpAQCAtNzgsMTYgKzc4LDUgQEAKIAogCiAMCi1kZWYgc3VpdGUoKToKLSAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCi0gICAgc3VpdGUuYWRkVGVzdCh1bml0dGVzdC5tYWtlU3VpdGUoVGVzdEVtYWlsQXNpYW5Db2RlY3MpKQotICAgIHJldHVybiBzdWl0ZQotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVGVzdEVtYWlsQXNpYW5Db2RlY3MpCi0KLQotDAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKGRlZmF1bHRUZXN0PSdzdWl0ZScpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZGVmZWN0X2hhbmRsaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2RlZmVjdF9oYW5kbGluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDU0MzJkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2RlZmVjdF9oYW5kbGluZy5weQpAQCAtMCwwICsxLDMyMCBAQAoraW1wb3J0IHRleHR3cmFwCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBjb250ZXh0bGliCitmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKK2Zyb20gZW1haWwgaW1wb3J0IGVycm9ycworZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UKKworCitjbGFzcyBUZXN0RGVmZWN0c0Jhc2U6CisKKyAgICBwb2xpY3kgPSBwb2xpY3kuZGVmYXVsdAorICAgIHJhaXNlX2V4cGVjdGVkID0gRmFsc2UKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIF9yYWlzZV9wb2ludChzZWxmLCBkZWZlY3QpOgorICAgICAgICB5aWVsZAorCisgICAgZGVmIHRlc3Rfc2FtZV9ib3VuZGFyeV9pbm5lcl9vdXRlcihzZWxmKToKKyAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIFN1YmplY3Q6IFhYCisgICAgICAgICAgICBGcm9tOiB4eEB4eC5kaworICAgICAgICAgICAgVG86IFhYCisgICAgICAgICAgICBNaW1lLXZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC10eXBlOiBtdWx0aXBhcnQvbWl4ZWQ7CisgICAgICAgICAgICAgICBib3VuZGFyeT0iTVNfTWFjX09FXzMwNzE0Nzc4NDdfNzIwMjUyX01JTUVfUGFydCIKKworICAgICAgICAgICAgLS1NU19NYWNfT0VfMzA3MTQ3Nzg0N183MjAyNTJfTUlNRV9QYXJ0CisgICAgICAgICAgICBDb250ZW50LXR5cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2ZTsKKyAgICAgICAgICAgICAgIGJvdW5kYXJ5PSJNU19NYWNfT0VfMzA3MTQ3Nzg0N183MjAyNTJfTUlNRV9QYXJ0IgorCisgICAgICAgICAgICAtLU1TX01hY19PRV8zMDcxNDc3ODQ3XzcyMDI1Ml9NSU1FX1BhcnQKKyAgICAgICAgICAgIENvbnRlbnQtdHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0iSVNPLTg4NTktMSIKKyAgICAgICAgICAgIENvbnRlbnQtdHJhbnNmZXItZW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKKworICAgICAgICAgICAgdGV4dAorCisgICAgICAgICAgICAtLU1TX01hY19PRV8zMDcxNDc3ODQ3XzcyMDI1Ml9NSU1FX1BhcnQKKyAgICAgICAgICAgIENvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PSJJU08tODg1OS0xIgorICAgICAgICAgICAgQ29udGVudC10cmFuc2Zlci1lbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQorCisgICAgICAgICAgICA8SFRNTD48L0hUTUw+CisKKyAgICAgICAgICAgIC0tTVNfTWFjX09FXzMwNzE0Nzc4NDdfNzIwMjUyX01JTUVfUGFydC0tCisKKyAgICAgICAgICAgIC0tTVNfTWFjX09FXzMwNzE0Nzc4NDdfNzIwMjUyX01JTUVfUGFydAorICAgICAgICAgICAgQ29udGVudC10eXBlOiBpbWFnZS9naWY7IG5hbWU9Inh4LmdpZiI7CisgICAgICAgICAgICBDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50CisgICAgICAgICAgICBDb250ZW50LXRyYW5zZmVyLWVuY29kaW5nOiBiYXNlNjQKKworICAgICAgICAgICAgU29tZSByZW1vdmVkIGJhc2U2NCBlbmNvZGVkIGNoYXJzLgorCisgICAgICAgICAgICAtLU1TX01hY19PRV8zMDcxNDc3ODQ3XzcyMDI1Ml9NSU1FX1BhcnQtLQorCisgICAgICAgICAgICAiIiIpCisgICAgICAgICMgWFhYIGJldHRlciB3b3VsZCBiZSB0byBhY3R1YWxseSBkZXRlY3QgdGhlIGR1cGxpY2F0ZS4KKyAgICAgICAgd2l0aCBzZWxmLl9yYWlzZV9wb2ludChlcnJvcnMuU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgaW5uZXIgPSBtc2cuZ2V0X3BheWxvYWQoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoaW5uZXIsICdkZWZlY3RzJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuZ2V0X2RlZmVjdHMoaW5uZXIpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhpbm5lcilbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5TdGFydEJvdW5kYXJ5Tm90Rm91bmREZWZlY3QpKQorCisgICAgZGVmIHRlc3RfbXVsdGlwYXJ0X25vX2JvdW5kYXJ5KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgRGF0ZTogRnJpLCA2IEFwciAyMDAxIDA5OjIzOjA2IC0wODAwIChHTVQtMDgwMCkKKyAgICAgICAgICAgIEZyb206IGZvb2JhcgorICAgICAgICAgICAgU3ViamVjdDogYnJva2VuIG1haWwKKyAgICAgICAgICAgIE1JTUUtVmVyc2lvbjogMS4wCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9yZXBvcnQ7IHJlcG9ydC10eXBlPWRlbGl2ZXJ5LXN0YXR1czsKKworICAgICAgICAgICAgLS1KQUIwMzIyNS45ODY1Nzc3ODYvemluZmFuZGVsLmxhY2l0YS5jb20KKworICAgICAgICAgICAgT25lIHBhcnQKKworICAgICAgICAgICAgLS1KQUIwMzIyNS45ODY1Nzc3ODYvemluZmFuZGVsLmxhY2l0YS5jb20KKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXMKKworICAgICAgICAgICAgSGVhZGVyOiBBbm90aGVyIHBhcnQKKworICAgICAgICAgICAgLS1KQUIwMzIyNS45ODY1Nzc3ODYvemluZmFuZGVsLmxhY2l0YS5jb20tLQorICAgICAgICAgICAgIiIiKQorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZyhzb3VyY2UpCisgICAgICAgIGlmIHNlbGYucmFpc2VfZXhwZWN0ZWQ6IHJldHVybgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtc2cuZ2V0X3BheWxvYWQoKSwgc3RyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhtc2cpKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuTXVsdGlwYXJ0SW52YXJpYW50VmlvbGF0aW9uRGVmZWN0KSkKKworICAgIG11bHRpcGFydF9tc2cgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICBEYXRlOiBXZWQsIDE0IE5vdiAyMDA3IDEyOjU2OjIzIEdNVAorICAgICAgICBGcm9tOiBmb29AYmFyLmludmFsaWQKKyAgICAgICAgVG86IGZvb0BiYXIuaW52YWxpZAorICAgICAgICBTdWJqZWN0OiBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQgYW5kIG11bHRpcGFydAorICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsKKyAgICAgICAgICAgIGJvdW5kYXJ5PSI9PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0ie30KKworICAgICAgICAtLT09PT09PT09PT09PT09PTMzNDQ0Mzg3ODQ0NTgxMTk4NjE9PQorICAgICAgICBDb250ZW50LVR5cGU6IHRleHQvcGxhaW4KKworICAgICAgICBUZXN0IG1lc3NhZ2UKKworICAgICAgICAtLT09PT09PT09PT09PT09PTMzNDQ0Mzg3ODQ0NTgxMTk4NjE9PQorICAgICAgICBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQorICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKKworICAgICAgICBZV0pqCisKKyAgICAgICAgLS09PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0tLQorICAgICAgICAiIiIpCisKKyAgICBkZWYgdGVzdF9tdWx0aXBhcnRfaW52YWxpZF9jdGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5fcmFpc2VfcG9pbnQoCisgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRNdWx0aXBhcnRDb250ZW50VHJhbnNmZXJFbmNvZGluZ0RlZmVjdCk6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKAorICAgICAgICAgICAgICAgICAgICBzZWxmLm11bHRpcGFydF9tc2cuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgIlxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0IikpCisgICAgICAgIGlmIHNlbGYucmFpc2VfZXhwZWN0ZWQ6IHJldHVybgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmdldF9kZWZlY3RzKG1zZykpLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzBdLAorICAgICAgICAgICAgZXJyb3JzLkludmFsaWRNdWx0aXBhcnRDb250ZW50VHJhbnNmZXJFbmNvZGluZ0RlZmVjdCkKKworICAgIGRlZiB0ZXN0X211bHRpcGFydF9ub19jdGVfbm9fZGVmZWN0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZyhzZWxmLm11bHRpcGFydF9tc2cuZm9ybWF0KCcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhtc2cpKSwgMCkKKworICAgIGRlZiB0ZXN0X211bHRpcGFydF92YWxpZF9jdGVfbm9fZGVmZWN0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgZm9yIGN0ZSBpbiAoJzdiaXQnLCAnOGJpdCcsICdCSU5hcnknKToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coCisgICAgICAgICAgICAgICAgc2VsZi5tdWx0aXBhcnRfbXNnLmZvcm1hdCgiXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAiK2N0ZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmdldF9kZWZlY3RzKG1zZykpLCAwLCAiY3RlPSIrY3RlKQorCisgICAgZGVmIHRlc3RfbHlpbmdfbXVsdGlwYXJ0KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgRnJvbTogIkFsbGlzb24gRHVubGFwIiA8eHh4QGV4YW1wbGUuY29tPgorICAgICAgICAgICAgVG86IHl5eUBleGFtcGxlLmNvbQorICAgICAgICAgICAgU3ViamVjdDogNjQ0MjMKKyAgICAgICAgICAgIERhdGU6IFN1biwgMTEgSnVsIDIwMDQgMTY6MDk6MjcgLTAzMDAKKyAgICAgICAgICAgIE1JTUUtVmVyc2lvbjogMS4wCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2ZTsKKworICAgICAgICAgICAgQmxhaCBibGFoIGJsYWgKKyAgICAgICAgICAgICIiIikKKyAgICAgICAgd2l0aCBzZWxmLl9yYWlzZV9wb2ludChlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobXNnLCAnZGVmZWN0cycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmdldF9kZWZlY3RzKG1zZykpLCAyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzZWxmLmdldF9kZWZlY3RzKG1zZylbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzZWxmLmdldF9kZWZlY3RzKG1zZylbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5NdWx0aXBhcnRJbnZhcmlhbnRWaW9sYXRpb25EZWZlY3QpKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19zdGFydF9ib3VuZGFyeShzZWxmKToKKyAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT0iQUFBIgorICAgICAgICAgICAgRnJvbTogTWFpbCBEZWxpdmVyeSBTdWJzeXN0ZW0gPHh4eEBleGFtcGxlLmNvbT4KKyAgICAgICAgICAgIFRvOiB5eXlAZXhhbXBsZS5jb20KKworICAgICAgICAgICAgLS1BQUEKKworICAgICAgICAgICAgU3R1ZmYKKworICAgICAgICAgICAgLS1BQUEKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbWVzc2FnZS9yZmM4MjIKKworICAgICAgICAgICAgRnJvbTogd2VibWFzdGVyQHB5dGhvbi5vcmcKKyAgICAgICAgICAgIFRvOiB6enpAZXhhbXBsZS5jb20KKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT0iQkJCIgorCisgICAgICAgICAgICAtLUJCQi0tCisKKyAgICAgICAgICAgIC0tQUFBLS0KKworICAgICAgICAgICAgIiIiKQorICAgICAgICAjIFRoZSBtZXNzYWdlIHN0cnVjdHVyZSBpczoKKyAgICAgICAgIworICAgICAgICAjIG11bHRpcGFydC9taXhlZAorICAgICAgICAjICAgIHRleHQvcGxhaW4KKyAgICAgICAgIyAgICBtZXNzYWdlL3JmYzgyMgorICAgICAgICAjICAgICAgICBtdWx0aXBhcnQvbWl4ZWQgWypdCisgICAgICAgICMKKyAgICAgICAgIyBbKl0gVGhpcyBtZXNzYWdlIGlzIG1pc3NpbmcgaXRzIHN0YXJ0IGJvdW5kYXJ5CisgICAgICAgIHdpdGggc2VsZi5fcmFpc2VfcG9pbnQoZXJyb3JzLlN0YXJ0Qm91bmRhcnlOb3RGb3VuZERlZmVjdCk6CisgICAgICAgICAgICBvdXRlciA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgYmFkID0gb3V0ZXIuZ2V0X3BheWxvYWQoMSkuZ2V0X3BheWxvYWQoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhiYWQpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhiYWQpWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KSkKKworICAgIGRlZiB0ZXN0X2ZpcnN0X2xpbmVfaXNfY29udGludWF0aW9uX2hlYWRlcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLl9yYWlzZV9wb2ludChlcnJvcnMuRmlyc3RIZWFkZXJMaW5lSXNDb250aW51YXRpb25EZWZlY3QpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZygnIExpbmUgMVxuU3ViamVjdDogdGVzdFxuXG5ib2R5JykKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmtleXMoKSwgWydTdWJqZWN0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICdib2R5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhtc2cpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5GaXJzdEhlYWRlckxpbmVJc0NvbnRpbnVhdGlvbkRlZmVjdF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzBdLmxpbmUsICcgTGluZSAxXG4nKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19oZWFkZXJfYm9keV9zZXBhcmF0b3Ioc2VsZik6CisgICAgICAgICMgT3VyIGhldXJpc3RpYyBpZiB3ZSBzZWUgYSBsaW5lIHRoYXQgZG9lc24ndCBsb29rIGxpa2UgYSBoZWFkZXIgKG5vCisgICAgICAgICMgbGVhZGluZyB3aGl0ZXNwYWNlIGJ1dCBubyAnOicpIGlzIHRvIGFzc3VtZSB0aGF0IHRoZSBibGFuayBsaW5lIHRoYXQKKyAgICAgICAgIyBzZXBhcmF0ZXMgdGhlIGhlYWRlciBmcm9tIHRoZSBib2R5IGlzIG1pc3NpbmcsIGFuZCB0byBzdG9wIHBhcnNpbmcKKyAgICAgICAgIyBoZWFkZXJzIGFuZCBzdGFydCBwYXJzaW5nIHRoZSBib2R5LgorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5NaXNzaW5nSGVhZGVyQm9keVNlcGFyYXRvckRlZmVjdCk6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKCdTdWJqZWN0OiB0ZXN0XG5ub3QgYSBoZWFkZXJcblRvOiBhYmNcblxuYlxuJykKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmtleXMoKSwgWydTdWJqZWN0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICdub3QgYSBoZWFkZXJcblRvOiBhYmNcblxuYlxuJykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLk1pc3NpbmdIZWFkZXJCb2R5U2VwYXJhdG9yRGVmZWN0XSkKKworICAgIGRlZiB0ZXN0X2JhZF9wYWRkaW5nX2luX2Jhc2U2NF9wYXlsb2FkKHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgU3ViamVjdDogdGVzdAorICAgICAgICAgICAgTUlNRS1WZXJzaW9uOiAxLjAKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCisgICAgICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKKworICAgICAgICAgICAgZG1rCisgICAgICAgICAgICAiIiIpCisgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdCk6CisgICAgICAgICAgICBwYXlsb2FkID0gbXNnLmdldF9wYXlsb2FkKGRlY29kZT1UcnVlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBiJ3ZpJykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0XSkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfY2hhcnNfaW5fYmFzZTY0X3BheWxvYWQoc2VsZik6CisgICAgICAgIHNvdXJjZSA9IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBTdWJqZWN0OiB0ZXN0CisgICAgICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1dGYtOCIKKyAgICAgICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NAorCisgICAgICAgICAgICBkbVx4MDFrPT09CisgICAgICAgICAgICAiIiIpCisgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdCk6CisgICAgICAgICAgICBwYXlsb2FkID0gbXNnLmdldF9wYXlsb2FkKGRlY29kZT1UcnVlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBiJ3ZpJykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0XSkKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfZW5kaW5nX2JvdW5kYXJ5KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgVG86IDFAaGFycnlkb21haW40LmNvbQorICAgICAgICAgICAgU3ViamVjdDogRndkOiAxCisgICAgICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7CisgICAgICAgICAgICAgYm91bmRhcnk9Ii0tLS0tLS0tLS0tLTAwMDEwMTAyMDIwMTA4MDkwMDA0MDMwMSIKKworICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0wMDAxMDEwMjAyMDEwODA5MDAwNDAzMDEKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xCisgICAgICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0CisKKyAgICAgICAgICAgIEFsdGVybmF0aXZlIDEKKworICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0wMDAxMDEwMjAyMDEwODA5MDAwNDAzMDEKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKKyAgICAgICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKKworICAgICAgICAgICAgQWx0ZXJuYXRpdmUgMgorCisgICAgICAgICAgICAiIiIpCisgICAgICAgIHdpdGggc2VsZi5fcmFpc2VfcG9pbnQoZXJyb3JzLkNsb3NlQm91bmRhcnlOb3RGb3VuZERlZmVjdCk6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKHNvdXJjZSkKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zZy5nZXRfcGF5bG9hZCgpKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BheWxvYWQoMSkuZ2V0X3BheWxvYWQoKSwgJ0FsdGVybmF0aXZlIDJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKHNlbGYuZ2V0X2RlZmVjdHMobXNnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5DbG9zZUJvdW5kYXJ5Tm90Rm91bmREZWZlY3RdKQorCisKK2NsYXNzIFRlc3REZWZlY3REZXRlY3Rpb24oVGVzdERlZmVjdHNCYXNlLCBUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiBnZXRfZGVmZWN0cyhzZWxmLCBvYmopOgorICAgICAgICByZXR1cm4gb2JqLmRlZmVjdHMKKworCitjbGFzcyBUZXN0RGVmZWN0Q2FwdHVyZShUZXN0RGVmZWN0c0Jhc2UsIFRlc3RFbWFpbEJhc2UpOgorCisgICAgY2xhc3MgQ2FwdHVyZVBvbGljeShwb2xpY3kuRW1haWxQb2xpY3kpOgorICAgICAgICBjYXB0dXJlZCA9IE5vbmUKKyAgICAgICAgZGVmIHJlZ2lzdGVyX2RlZmVjdChzZWxmLCBvYmosIGRlZmVjdCk6CisgICAgICAgICAgICBzZWxmLmNhcHR1cmVkLmFwcGVuZChkZWZlY3QpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYucG9saWN5ID0gc2VsZi5DYXB0dXJlUG9saWN5KGNhcHR1cmVkPWxpc3QoKSkKKworICAgIGRlZiBnZXRfZGVmZWN0cyhzZWxmLCBvYmopOgorICAgICAgICByZXR1cm4gc2VsZi5wb2xpY3kuY2FwdHVyZWQKKworCitjbGFzcyBUZXN0RGVmZWN0UmFpc2luZyhUZXN0RGVmZWN0c0Jhc2UsIFRlc3RFbWFpbEJhc2UpOgorCisgICAgcG9saWN5ID0gVGVzdERlZmVjdHNCYXNlLnBvbGljeQorICAgIHBvbGljeSA9IHBvbGljeS5jbG9uZShyYWlzZV9vbl9kZWZlY3Q9VHJ1ZSkKKyAgICByYWlzZV9leHBlY3RlZCA9IFRydWUKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIF9yYWlzZV9wb2ludChzZWxmLCBkZWZlY3QpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGRlZmVjdCk6CisgICAgICAgICAgICB5aWVsZAorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2VtYWlsLnB5CnNpbWlsYXJpdHkgaW5kZXggOTIlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L3Rlc3RfZW1haWwucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQppbmRleCBhMWNlYjdmLi4yM2YwNjJmIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQpAQCAtMiwxMiArMiw5IEBACiAjIENvbnRhY3Q6IGVtYWlsLXNpZ0BweXRob24ub3JnCiAjIGVtYWlsIHBhY2thZ2UgdW5pdCB0ZXN0cwogCi1pbXBvcnQgb3MKIGltcG9ydCByZQotaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCBiYXNlNjQKLWltcG9ydCBkaWZmbGliCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZXh0d3JhcAogCkBAIC0xNSw2ICsxMiw3IEBACiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY2hhaW4KIAogaW1wb3J0IGVtYWlsCitpbXBvcnQgZW1haWwucG9saWN5CiAKIGZyb20gZW1haWwuY2hhcnNldCBpbXBvcnQgQ2hhcnNldAogZnJvbSBlbWFpbC5oZWFkZXIgaW1wb3J0IEhlYWRlciwgZGVjb2RlX2hlYWRlciwgbWFrZV9oZWFkZXIKQEAgLTM1LDQxICszMywxNCBAQAogZnJvbSBlbWFpbCBpbXBvcnQgYmFzZTY0bWltZQogZnJvbSBlbWFpbCBpbXBvcnQgcXVvcHJpbWltZQogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUsIHJ1bl91bml0dGVzdCwgdW5saW5rCi1mcm9tIGVtYWlsLnRlc3QgaW1wb3J0IF9fZmlsZV9fIGFzIGxhbmRtYXJrCi0KK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB1bmxpbmsKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBvcGVuZmlsZSwgVGVzdEVtYWlsQmFzZQogCiBOTCA9ICdcbicKIEVNUFRZU1RSSU5HID0gJycKIFNQQUNFID0gJyAnCiAKIAotCi1kZWYgb3BlbmZpbGUoZmlsZW5hbWUsICphcmdzLCAqKmt3cyk6Ci0gICAgcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUobGFuZG1hcmspLCAnZGF0YScsIGZpbGVuYW1lKQotICAgIHJldHVybiBvcGVuKHBhdGgsICphcmdzLCAqKmt3cykKLQotCi0KLSMgQmFzZSB0ZXN0IGNsYXNzCi1jbGFzcyBUZXN0RW1haWxCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgbmRpZmZBc3NlcnRFcXVhbChzZWxmLCBmaXJzdCwgc2Vjb25kKToKLSAgICAgICAgIiIiTGlrZSBhc3NlcnRFcXVhbCBleGNlcHQgdXNlIG5kaWZmIGZvciByZWFkYWJsZSBvdXRwdXQuIiIiCi0gICAgICAgIGlmIGZpcnN0ICE9IHNlY29uZDoKLSAgICAgICAgICAgIHNmaXJzdCA9IHN0cihmaXJzdCkKLSAgICAgICAgICAgIHNzZWNvbmQgPSBzdHIoc2Vjb25kKQotICAgICAgICAgICAgcmZpcnN0ID0gW3JlcHIobGluZSkgZm9yIGxpbmUgaW4gc2ZpcnN0LnNwbGl0bGluZXMoKV0KLSAgICAgICAgICAgIHJzZWNvbmQgPSBbcmVwcihsaW5lKSBmb3IgbGluZSBpbiBzc2Vjb25kLnNwbGl0bGluZXMoKV0KLSAgICAgICAgICAgIGRpZmYgPSBkaWZmbGliLm5kaWZmKHJmaXJzdCwgcnNlY29uZCkKLSAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbihOTCArIE5MLmpvaW4oZGlmZikpCi0KLSAgICBkZWYgX21zZ29iaihzZWxmLCBmaWxlbmFtZSk6Ci0gICAgICAgIHdpdGggb3BlbmZpbGUoZmluZGZpbGUoZmlsZW5hbWUpKSBhcyBmcDoKLSAgICAgICAgICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZShmcCkKLQotICAgIG1heERpZmYgPSBOb25lCi0KLQogIyBUZXN0IHZhcmlvdXMgYXNwZWN0cyBvZiB0aGUgTWVzc2FnZSBjbGFzcydzIEFQSQogY2xhc3MgVGVzdE1lc3NhZ2VBUEkoVGVzdEVtYWlsQmFzZSk6CiAgICAgZGVmIHRlc3RfZ2V0X2FsbChzZWxmKToKQEAgLTE5NCw3ICsxNjUsNyBAQAogICAgIGRlZiB0ZXN0X21lc3NhZ2VfcmZjODIyX29ubHkoc2VsZik6CiAgICAgICAgICMgSXNzdWUgNzk3MDogbWVzc2FnZS9yZmM4MjIgbm90IGluIG11bHRpcGFydCBwYXJzZWQgYnkKICAgICAgICAgIyBIZWFkZXJQYXJzZXIgY2F1c2VkIGFuIGV4Y2VwdGlvbiB3aGVuIGZsYXR0ZW5lZC4KLSAgICAgICAgd2l0aCBvcGVuZmlsZShmaW5kZmlsZSgnbXNnXzQ2LnR4dCcpKSBhcyBmcDoKKyAgICAgICAgd2l0aCBvcGVuZmlsZSgnbXNnXzQ2LnR4dCcpIGFzIGZwOgogICAgICAgICAgICAgbXNnZGF0YSA9IGZwLnJlYWQoKQogICAgICAgICBwYXJzZXIgPSBIZWFkZXJQYXJzZXIoKQogICAgICAgICBtc2cgPSBwYXJzZXIucGFyc2VzdHIobXNnZGF0YSkKQEAgLTIwMyw2ICsxNzQsMTcgQEAKICAgICAgICAgZ2VuLmZsYXR0ZW4obXNnLCBGYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuZ2V0dmFsdWUoKSwgbXNnZGF0YSkKIAorICAgIGRlZiB0ZXN0X2J5dGVfbWVzc2FnZV9yZmM4MjJfb25seShzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgbmV3IGJ5dGVzIGhlYWRlciBwYXJzZXIgYWxzbyBwYXNzZXMgdGhpcy4KKyAgICAgICAgd2l0aCBvcGVuZmlsZSgnbXNnXzQ2LnR4dCcsICdyYicpIGFzIGZwOgorICAgICAgICAgICAgbXNnZGF0YSA9IGZwLnJlYWQoKQorICAgICAgICBwYXJzZXIgPSBlbWFpbC5wYXJzZXIuQnl0ZXNIZWFkZXJQYXJzZXIoKQorICAgICAgICBtc2cgPSBwYXJzZXIucGFyc2VieXRlcyhtc2dkYXRhKQorICAgICAgICBvdXQgPSBCeXRlc0lPKCkKKyAgICAgICAgZ2VuID0gZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yKG91dCkKKyAgICAgICAgZ2VuLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dC5nZXR2YWx1ZSgpLCBtc2dkYXRhKQorCiAgICAgZGVmIHRlc3RfZ2V0X2RlY29kZWRfcGF5bG9hZChzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIG1zZyA9IHNlbGYuX21zZ29iaignbXNnXzEwLnR4dCcpCkBAIC0yNzMsNiArMjU1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVzWzBdLnN0YXJ0c3dpdGgoJ0Zyb20gJykpCiAgICAgICAgIGVxKHRleHQsIE5MLmpvaW4obGluZXNbMTpdKSkKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIuYmFkX3BhcmFtcwogICAgIGRlZiB0ZXN0X2JhZF9wYXJhbShzZWxmKToKICAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZygiQ29udGVudC1UeXBlOiBibGFyZzsgYmF6OyBib29cbiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXJhbSgnYmF6JyksICcnKQpAQCAtMzA2LDYgKzI4OSw3IEBACiAgICAgICAgIGVxKG1zZy5nZXRfcGFyYW1zKGhlYWRlcj0neC1oZWFkZXInKSwKICAgICAgICAgICAgWygnZm9vJywgJycpLCAoJ2JhcicsICdvbmUnKSwgKCdiYXonLCAndHdvJyldKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5zcGFjZXNfYXJvdW5kX3BhcmFtX2VxdWFscwogICAgIGRlZiB0ZXN0X2dldF9wYXJhbV9saWJlcmFsKHNlbGYpOgogICAgICAgICBtc2cgPSBNZXNzYWdlKCkKICAgICAgICAgbXNnWydDb250ZW50LVR5cGUnXSA9ICdDb250ZW50LVR5cGU6IE11bHRpcGFydC9taXhlZDsgYm91bmRhcnkgPSAiQ1BJTVNTTVRQQzA2cDVmM3RHIicKQEAgLTMyOCwxMCArMzEyLDEyIEBACiAgICAgICAgICMgbXNnLmdldF9wYXJhbSgid2VpcmQiKQogICAgICAgICAjIHlldC4KIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIuc3BhY2VzX2Fyb3VuZF9zZW1pcwogICAgIGRlZiB0ZXN0X2dldF9wYXJhbV9mdW5reV9jb250aW51YXRpb25fbGluZXMoc2VsZik6CiAgICAgICAgIG1zZyA9IHNlbGYuX21zZ29iaignbXNnXzIyLnR4dCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKDEpLmdldF9wYXJhbSgnbmFtZScpLCAnd2liYmxlLkpQRycpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnNlbWlzX2luc2lkZV9xdW90ZXMKICAgICBkZWYgdGVzdF9nZXRfcGFyYW1fd2l0aF9zZW1pc19pbl9xdW90ZXMoc2VsZik6CiAgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoCiAgICAgICAgICAgICAnQ29udGVudC1UeXBlOiBpbWFnZS9wanBlZzsgbmFtZT0iSmltJmFtcDsmYW1wO0ppbGwiXG4nKQpAQCAtMzM5LDYgKzMyNSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXJhbSgnbmFtZScsIHVucXVvdGU9RmFsc2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICciSmltJmFtcDsmYW1wO0ppbGwiJykKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucXVvdGVzX2luc2lkZV9yZmMyMjMxX3ZhbHVlCiAgICAgZGVmIHRlc3RfZ2V0X3BhcmFtX3dpdGhfcXVvdGVzKHNlbGYpOgogICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKAogICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZTogZm9vOyBiYXIqMD0iYmF6XFwiZm9vYmFyIjsgYmFyKjE9IlxcImJheiInKQpAQCAtNTI3LDYgKzUxNCw3IEBACiAgICAgICAgIGVxKG1zZy52YWx1ZXMoKSwgWydPbmUgSHVuZHJlZCcsICdUd2VudHknLCAnVGhyZWUnLCAnRWxldmVuJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBtc2cucmVwbGFjZV9oZWFkZXIsICdGb3VydGgnLCAnTWlzc2luZycpCiAKKyAgICAjIHRlc3RfZGVmZWN0X2hhbmRsaW5nOnRlc3RfaW52YWxpZF9jaGFyc19pbl9iYXNlNjRfcGF5bG9hZAogICAgIGRlZiB0ZXN0X2Jyb2tlbl9iYXNlNjRfcGF5bG9hZChzZWxmKToKICAgICAgICAgeCA9ICdBd0RwMFA3Ly95Nkx3S0VBY1BhLzZRPTknCiAgICAgICAgIG1zZyA9IE1lc3NhZ2UoKQpAQCAtNTM0LDcgKzUyMiwxMCBAQAogICAgICAgICBtc2dbJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnXSA9ICdiYXNlNjQnCiAgICAgICAgIG1zZy5zZXRfcGF5bG9hZCh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGF5bG9hZChkZWNvZGU9VHJ1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXMoeCwgJ3Jhdy11bmljb2RlLWVzY2FwZScpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChiJ1x4MDNceDAwXHhlOVx4ZDBceGZlXHhmZlx4ZmYuXHg4Ylx4YzAnCisgICAgICAgICAgICAgICAgICAgICAgICAgIGInXHhhMVx4MDBwXHhmNlx4YmZceGU5XHgwZicpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobXNnLmRlZmVjdHNbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3QpCiAKICAgICBkZWYgdGVzdF9icm9rZW5fdW5pY29kZV9wYXlsb2FkKHNlbGYpOgogICAgICAgICAjIFRoaXMgdGVzdCBpbXByb3ZlcyBjb3ZlcmFnZSBidXQgaXMgbm90IGEgY29tcGxpYW5jZSB0ZXN0LgpAQCAtNjMyLDYgKzYyMywxOCBAQAogICAgICAgICAgICAgYWJjCiAgICAgICAgICAgICAiIiIpKQogCisgICAgZGVmIHRlc3RfdW5pY29kZV9ib2R5X2RlZmF1bHRzX3RvX3V0ZjhfZW5jb2Rpbmcoc2VsZik6CisgICAgICAgICMgSXNzdWUgMTQyOTEKKyAgICAgICAgbSA9IE1JTUVUZXh0KCfDiSB0ZXN0YWJjXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtKSx0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1dGYtOCIKKyAgICAgICAgICAgIE1JTUUtVmVyc2lvbjogMS4wCisgICAgICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKKworICAgICAgICAgICAgdzRrZ2RHVnpkR0ZpWXdvPQorICAgICAgICAgICAgIiIiKSkKKworCiAjIFRlc3QgdGhlIGVtYWlsLmVuY29kZXJzIG1vZHVsZQogY2xhc3MgVGVzdEVuY29kZXJzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNjU3LDcgKzY2MCw3IEBACiAgICAgICAgIGVxKG1zZ1snY29udGVudC10cmFuc2Zlci1lbmNvZGluZyddLCAnN2JpdCcpCiAgICAgICAgICMgU2ltaWxhciwgYnV0IHdpdGggOGJpdCBkYXRhCiAgICAgICAgIG1zZyA9IE1JTUVUZXh0KCdoZWxsbyBceGY4IHdvcmxkJykKLSAgICAgICAgZXEobXNnWydjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJ10sICc4Yml0JykKKyAgICAgICAgZXEobXNnWydjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJ10sICdiYXNlNjQnKQogICAgICAgICAjIEFuZCBub3cgd2l0aCBhIGRpZmZlcmVudCBjaGFyc2V0CiAgICAgICAgIG1zZyA9IE1JTUVUZXh0KCdoZWxsbyBceGY4IHdvcmxkJywgX2NoYXJzZXQ9J2lzby04ODU5LTEnKQogICAgICAgICBlcShtc2dbJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnXSwgJ3F1b3RlZC1wcmludGFibGUnKQpAQCAtMTI2NCw2ICsxMjY3LDcgQEAKICAgICAgICAgICAgICA9P3V0Zi04P3E/X2ZvbGRpbmdfd2hpdGVfc3BhY2Vfd29ya3M/PSIiIikrJ1xuJykKIAogCisKICMgVGVzdCBtYW5nbGluZyBvZiAiRnJvbSAiIGxpbmVzIGluIHRoZSBib2R5IG9mIGEgbWVzc2FnZQogY2xhc3MgVGVzdEZyb21NYW5nbGluZyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMTMzNywxMyArMTM0MSw3IEBACiAjIFRlc3QgdGhlIGJhc2ljIE1JTUVBdWRpbyBjbGFzcwogY2xhc3MgVGVzdE1JTUVBdWRpbyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBwaWNrIHVwIHRoZSBhdWRpb3Rlc3QuYXUgdGhhdCBsaXZlcyBpbiBlbWFpbC90ZXN0L2RhdGEuCi0gICAgICAgICMgSW4gUHl0aG9uLCB0aGVyZSdzIGFuIGF1ZGlvdGVzdC5hdSBsaXZpbmcgaW4gTGliL3Rlc3QgYnV0IHRoYXQgaXNuJ3QKLSAgICAgICAgIyBpbmNsdWRlZCBpbiBzb21lIGJpbmFyeSBkaXN0cm9zIHRoYXQgZG9uJ3QgaW5jbHVkZSB0aGUgdGVzdAotICAgICAgICAjIHBhY2thZ2UuICBUaGUgdHJhaWxpbmcgZW1wdHkgc3RyaW5nIG9uIHRoZSAuam9pbigpIGlzIHNpZ25pZmljYW50Ci0gICAgICAgICMgc2luY2UgZmluZGZpbGUoKSB3aWxsIGRvIGEgZGlybmFtZSgpLgotICAgICAgICBkYXRhZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShsYW5kbWFyayksICdkYXRhJywgJycpCi0gICAgICAgIHdpdGggb3BlbihmaW5kZmlsZSgnYXVkaW90ZXN0LmF1JywgZGF0YWRpciksICdyYicpIGFzIGZwOgorICAgICAgICB3aXRoIG9wZW5maWxlKCdhdWRpb3Rlc3QuYXUnLCAncmInKSBhcyBmcDoKICAgICAgICAgICAgIHNlbGYuX2F1ZGlvZGF0YSA9IGZwLnJlYWQoKQogICAgICAgICBzZWxmLl9hdSA9IE1JTUVBdWRpbyhzZWxmLl9hdWRpb2RhdGEpCiAKQEAgLTE5MDQsNiArMTkwMiw3IEBACiAKICMgVGVzdCBzb21lIGJhZGx5IGZvcm1hdHRlZCBtZXNzYWdlcwogY2xhc3MgVGVzdE5vbkNvbmZvcm1hbnQoVGVzdEVtYWlsQmFzZSk6CisKICAgICBkZWYgdGVzdF9wYXJzZV9taXNzaW5nX21pbm9yX3R5cGUoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBtc2cgPSBzZWxmLl9tc2dvYmooJ21zZ18xNC50eHQnKQpAQCAtMTkxMSw2ICsxOTEwLDcgQEAKICAgICAgICAgZXEobXNnLmdldF9jb250ZW50X21haW50eXBlKCksICd0ZXh0JykKICAgICAgICAgZXEobXNnLmdldF9jb250ZW50X3N1YnR5cGUoKSwgJ3BsYWluJykKIAorICAgICMgdGVzdF9kZWZlY3RfaGFuZGxpbmcKICAgICBkZWYgdGVzdF9zYW1lX2JvdW5kYXJ5X2lubmVyX291dGVyKHNlbGYpOgogICAgICAgICB1bmxlc3MgPSBzZWxmLmFzc2VydFRydWUKICAgICAgICAgbXNnID0gc2VsZi5fbXNnb2JqKCdtc2dfMTUudHh0JykKQEAgLTE5MjEsMTUgKzE5MjEsNjIgQEAKICAgICAgICAgdW5sZXNzKGlzaW5zdGFuY2UoaW5uZXIuZGVmZWN0c1swXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLlN0YXJ0Qm91bmRhcnlOb3RGb3VuZERlZmVjdCkpCiAKKyAgICAjIHRlc3RfZGVmZWN0X2hhbmRsaW5nCiAgICAgZGVmIHRlc3RfbXVsdGlwYXJ0X25vX2JvdW5kYXJ5KHNlbGYpOgogICAgICAgICB1bmxlc3MgPSBzZWxmLmFzc2VydFRydWUKICAgICAgICAgbXNnID0gc2VsZi5fbXNnb2JqKCdtc2dfMjUudHh0JykKICAgICAgICAgdW5sZXNzKGlzaW5zdGFuY2UobXNnLmdldF9wYXlsb2FkKCksIHN0cikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zZy5kZWZlY3RzKSwgMikKLSAgICAgICAgdW5sZXNzKGlzaW5zdGFuY2UobXNnLmRlZmVjdHNbMF0sIGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QpKQorICAgICAgICB1bmxlc3MoaXNpbnN0YW5jZShtc2cuZGVmZWN0c1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLk5vQm91bmRhcnlJbk11bHRpcGFydERlZmVjdCkpCiAgICAgICAgIHVubGVzcyhpc2luc3RhbmNlKG1zZy5kZWZlY3RzWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuTXVsdGlwYXJ0SW52YXJpYW50VmlvbGF0aW9uRGVmZWN0KSkKIAorICAgIG11bHRpcGFydF9tc2cgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICBEYXRlOiBXZWQsIDE0IE5vdiAyMDA3IDEyOjU2OjIzIEdNVAorICAgICAgICBGcm9tOiBmb29AYmFyLmludmFsaWQKKyAgICAgICAgVG86IGZvb0BiYXIuaW52YWxpZAorICAgICAgICBTdWJqZWN0OiBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQgYW5kIG11bHRpcGFydAorICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsKKyAgICAgICAgICAgIGJvdW5kYXJ5PSI9PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0ie30KKworICAgICAgICAtLT09PT09PT09PT09PT09PTMzNDQ0Mzg3ODQ0NTgxMTk4NjE9PQorICAgICAgICBDb250ZW50LVR5cGU6IHRleHQvcGxhaW4KKworICAgICAgICBUZXN0IG1lc3NhZ2UKKworICAgICAgICAtLT09PT09PT09PT09PT09PTMzNDQ0Mzg3ODQ0NTgxMTk4NjE9PQorICAgICAgICBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQorICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKKworICAgICAgICBZV0pqCisKKyAgICAgICAgLS09PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0tLQorICAgICAgICAiIiIpCisKKyAgICAjIHRlc3RfZGVmZWN0X2hhbmRsaW5nCisgICAgZGVmIHRlc3RfbXVsdGlwYXJ0X2ludmFsaWRfY3RlKHNlbGYpOgorICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKAorICAgICAgICAgICAgc2VsZi5tdWx0aXBhcnRfbXNnLmZvcm1hdCgiXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obXNnLmRlZmVjdHMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobXNnLmRlZmVjdHNbMF0sCisgICAgICAgICAgICBlcnJvcnMuSW52YWxpZE11bHRpcGFydENvbnRlbnRUcmFuc2ZlckVuY29kaW5nRGVmZWN0KQorCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZworICAgIGRlZiB0ZXN0X211bHRpcGFydF9ub19jdGVfbm9fZGVmZWN0KHNlbGYpOgorICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKHNlbGYubXVsdGlwYXJ0X21zZy5mb3JtYXQoJycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtc2cuZGVmZWN0cyksIDApCisKKyAgICAjIHRlc3RfZGVmZWN0X2hhbmRsaW5nCisgICAgZGVmIHRlc3RfbXVsdGlwYXJ0X3ZhbGlkX2N0ZV9ub19kZWZlY3Qoc2VsZik6CisgICAgICAgIGZvciBjdGUgaW4gKCc3Yml0JywgJzhiaXQnLCAnQklOYXJ5Jyk6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKAorICAgICAgICAgICAgICAgIHNlbGYubXVsdGlwYXJ0X21zZy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICJcbkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHt9Ii5mb3JtYXQoY3RlKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtc2cuZGVmZWN0cyksIDApCisKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeW9wZUhlYWRlciBpbnZhbGlkXzEgYW5kIGludmFsaWRfMi4KICAgICBkZWYgdGVzdF9pbnZhbGlkX2NvbnRlbnRfdHlwZShzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIG5lcSA9IHNlbGYubmRpZmZBc3NlcnRFcXVhbApAQCAtMTk3OSwxNSArMjAyNiwxOCBAQAogY291bnRlciB0byBSRkMgMjgyMiwgdGhlcmUncyBubyBzZXBhcmF0aW5nIG5ld2xpbmUgaGVyZQogIiIiKQogCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZwogICAgIGRlZiB0ZXN0X2x5aW5nX211bHRpcGFydChzZWxmKToKICAgICAgICAgdW5sZXNzID0gc2VsZi5hc3NlcnRUcnVlCiAgICAgICAgIG1zZyA9IHNlbGYuX21zZ29iaignbXNnXzQxLnR4dCcpCiAgICAgICAgIHVubGVzcyhoYXNhdHRyKG1zZywgJ2RlZmVjdHMnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obXNnLmRlZmVjdHMpLCAyKQotICAgICAgICB1bmxlc3MoaXNpbnN0YW5jZShtc2cuZGVmZWN0c1swXSwgZXJyb3JzLk5vQm91bmRhcnlJbk11bHRpcGFydERlZmVjdCkpCisgICAgICAgIHVubGVzcyhpc2luc3RhbmNlKG1zZy5kZWZlY3RzWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KSkKICAgICAgICAgdW5sZXNzKGlzaW5zdGFuY2UobXNnLmRlZmVjdHNbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5NdWx0aXBhcnRJbnZhcmlhbnRWaW9sYXRpb25EZWZlY3QpKQogCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZwogICAgIGRlZiB0ZXN0X21pc3Npbmdfc3RhcnRfYm91bmRhcnkoc2VsZik6CiAgICAgICAgIG91dGVyID0gc2VsZi5fbXNnb2JqKCdtc2dfNDIudHh0JykKICAgICAgICAgIyBUaGUgbWVzc2FnZSBzdHJ1Y3R1cmUgaXM6CkBAIC0yMDAzLDE3ICsyMDUzLDI5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGJhZC5kZWZlY3RzWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KSkKIAorICAgICMgdGVzdF9kZWZlY3RfaGFuZGxpbmcKICAgICBkZWYgdGVzdF9maXJzdF9saW5lX2lzX2NvbnRpbnVhdGlvbl9oZWFkZXIoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAotICAgICAgICBtID0gJyBMaW5lIDFcbkxpbmUgMlxuTGluZSAzJworICAgICAgICBtID0gJyBMaW5lIDFcblN1YmplY3Q6IHRlc3RcblxuYm9keScKICAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyhtKQotICAgICAgICBlcShtc2cua2V5cygpLCBbXSkKLSAgICAgICAgZXEobXNnLmdldF9wYXlsb2FkKCksICdMaW5lIDJcbkxpbmUgMycpCisgICAgICAgIGVxKG1zZy5rZXlzKCksIFsnU3ViamVjdCddKQorICAgICAgICBlcShtc2cuZ2V0X3BheWxvYWQoKSwgJ2JvZHknKQogICAgICAgICBlcShsZW4obXNnLmRlZmVjdHMpLCAxKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtc2cuZGVmZWN0c1swXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLkZpcnN0SGVhZGVyTGluZUlzQ29udGludWF0aW9uRGVmZWN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwobXNnLmRlZmVjdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLkZpcnN0SGVhZGVyTGluZUlzQ29udGludWF0aW9uRGVmZWN0XSkKICAgICAgICAgZXEobXNnLmRlZmVjdHNbMF0ubGluZSwgJyBMaW5lIDFcbicpCiAKKyAgICAjIHRlc3RfZGVmZWN0X2hhbmRsaW5nCisgICAgZGVmIHRlc3RfbWlzc2luZ19oZWFkZXJfYm9keV9zZXBhcmF0b3Ioc2VsZik6CisgICAgICAgICMgT3VyIGhldXJpc3RpYyBpZiB3ZSBzZWUgYSBsaW5lIHRoYXQgZG9lc24ndCBsb29rIGxpa2UgYSBoZWFkZXIgKG5vCisgICAgICAgICMgbGVhZGluZyB3aGl0ZXNwYWNlIGJ1dCBubyAnOicpIGlzIHRvIGFzc3VtZSB0aGF0IHRoZSBibGFuayBsaW5lIHRoYXQKKyAgICAgICAgIyBzZXBhcmF0ZXMgdGhlIGhlYWRlciBmcm9tIHRoZSBib2R5IGlzIG1pc3NpbmcsIGFuZCB0byBzdG9wIHBhcnNpbmcKKyAgICAgICAgIyBoZWFkZXJzIGFuZCBzdGFydCBwYXJzaW5nIHRoZSBib2R5LgorICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKCdTdWJqZWN0OiB0ZXN0XG5ub3QgYSBoZWFkZXJcblRvOiBhYmNcblxuYlxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cua2V5cygpLCBbJ1N1YmplY3QnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BheWxvYWQoKSwgJ25vdCBhIGhlYWRlclxuVG86IGFiY1xuXG5iXG4nKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChtc2cuZGVmZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5NaXNzaW5nSGVhZGVyQm9keVNlcGFyYXRvckRlZmVjdF0pCiAKIAogIyBUZXN0IFJGQyAyMDQ3IGhlYWRlciBlbmNvZGluZyBhbmQgZGVjb2RpbmcKQEAgLTIwMjQsOSArMjA4Niw5IEBACiAgZm9vIGJhciA9P21hYy1pY2VsYW5kP3E/cj04QWtzbT05QXJnPThDcz89IiIiCiAgICAgICAgIGRoID0gZGVjb2RlX2hlYWRlcihzKQogICAgICAgICBlcShkaCwgWwotICAgICAgICAgICAgKGInUmU6JywgTm9uZSksCisgICAgICAgICAgICAoYidSZTogJywgTm9uZSksCiAgICAgICAgICAgICAoYidyXHg4YWtzbVx4OWFyZ1x4OGNzJywgJ21hYy1pY2VsYW5kJyksCi0gICAgICAgICAgICAoYidiYXogZm9vIGJhcicsIE5vbmUpLAorICAgICAgICAgICAgKGInIGJheiBmb28gYmFyICcsIE5vbmUpLAogICAgICAgICAgICAgKGInclx4OGFrc21ceDlhcmdceDhjcycsICdtYWMtaWNlbGFuZCcpXSkKICAgICAgICAgaGVhZGVyID0gbWFrZV9oZWFkZXIoZGgpCiAgICAgICAgIGVxKHN0cihoZWFkZXIpLApAQCAtMjAzNSwzNSArMjA5NywzNyBAQAogUmU6ID0/bWFjLWljZWxhbmQ/cT9yPThBa3NtPTlBcmc9OENzPz0gYmF6IGZvbyBiYXIgPT9tYWMtaWNlbGFuZD9xP3I9OEFrc20/PQogID0/bWFjLWljZWxhbmQ/cT89OUFyZz04Q3M/PSIiIikKIAotICAgIGRlZiB0ZXN0X3doaXRlc3BhY2VfZWF0ZXJfdW5pY29kZShzZWxmKToKKyAgICBkZWYgdGVzdF93aGl0ZXNwYWNlX2tlZXBlcl91bmljb2RlKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgcyA9ICc9P0lTTy04ODU5LTE/UT9BbmRyPUU5Pz0gUGlyYXJkIDxwaXJhcmRAZG9tLmFpbj4nCiAgICAgICAgIGRoID0gZGVjb2RlX2hlYWRlcihzKQogICAgICAgICBlcShkaCwgWyhiJ0FuZHJceGU5JywgJ2lzby04ODU5LTEnKSwKLSAgICAgICAgICAgICAgICAoYidQaXJhcmQgPHBpcmFyZEBkb20uYWluPicsIE5vbmUpXSkKKyAgICAgICAgICAgICAgICAoYicgUGlyYXJkIDxwaXJhcmRAZG9tLmFpbj4nLCBOb25lKV0pCiAgICAgICAgIGhlYWRlciA9IHN0cihtYWtlX2hlYWRlcihkaCkpCiAgICAgICAgIGVxKGhlYWRlciwgJ0FuZHJceGU5IFBpcmFyZCA8cGlyYXJkQGRvbS5haW4+JykKIAotICAgIGRlZiB0ZXN0X3doaXRlc3BhY2VfZWF0ZXJfdW5pY29kZV8yKHNlbGYpOgorICAgIGRlZiB0ZXN0X3doaXRlc3BhY2Vfa2VlcGVyX3VuaWNvZGVfMihzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIHMgPSAnVGhlID0/aXNvLTg4NTktMT9iP2NYVnBZMnNnWW5KdmQyNGdabTk0Pz0ganVtcGVkIG92ZXIgdGhlID0/aXNvLTg4NTktMT9iP2JHRjZlU0JrYjJjPT89JwogICAgICAgICBkaCA9IGRlY29kZV9oZWFkZXIocykKLSAgICAgICAgZXEoZGgsIFsoYidUaGUnLCBOb25lKSwgKGIncXVpY2sgYnJvd24gZm94JywgJ2lzby04ODU5LTEnKSwKLSAgICAgICAgICAgICAgICAoYidqdW1wZWQgb3ZlciB0aGUnLCBOb25lKSwgKGInbGF6eSBkb2cnLCAnaXNvLTg4NTktMScpXSkKKyAgICAgICAgZXEoZGgsIFsoYidUaGUgJywgTm9uZSksIChiJ3F1aWNrIGJyb3duIGZveCcsICdpc28tODg1OS0xJyksCisgICAgICAgICAgICAgICAgKGInIGp1bXBlZCBvdmVyIHRoZSAnLCBOb25lKSwgKGInbGF6eSBkb2cnLCAnaXNvLTg4NTktMScpXSkKICAgICAgICAgaHUgPSBzdHIobWFrZV9oZWFkZXIoZGgpKQogICAgICAgICBlcShodSwgJ1RoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgdGhlIGxhenkgZG9nJykKIAogICAgIGRlZiB0ZXN0X3JmYzIwNDdfbWlzc2luZ193aGl0ZXNwYWNlKHNlbGYpOgogICAgICAgICBzID0gJ1NtPT9JU08tODg1OS0xP0I/OWc9PT89cmc9P0lTTy04ODU5LTE/Qj81UT09Pz1zYm9yZCcKICAgICAgICAgZGggPSBkZWNvZGVfaGVhZGVyKHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGgsIFsocywgTm9uZSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRoLCBbKGInU20nLCBOb25lKSwgKGInXHhmNicsICdpc28tODg1OS0xJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYidyZycsIE5vbmUpLCAoYidceGU1JywgJ2lzby04ODU5LTEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiJ3Nib3JkJywgTm9uZSldKQogCiAgICAgZGVmIHRlc3RfcmZjMjA0N193aXRoX3doaXRlc3BhY2Uoc2VsZik6CiAgICAgICAgIHMgPSAnU20gPT9JU08tODg1OS0xP0I/OWc9PT89IHJnID0/SVNPLTg4NTktMT9CPzVRPT0/PSBzYm9yZCcKICAgICAgICAgZGggPSBkZWNvZGVfaGVhZGVyKHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGgsIFsoYidTbScsIE5vbmUpLCAoYidceGY2JywgJ2lzby04ODU5LTEnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiJ3JnJywgTm9uZSksIChiJ1x4ZTUnLCAnaXNvLTg4NTktMScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGInc2JvcmQnLCBOb25lKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGgsIFsoYidTbSAnLCBOb25lKSwgKGInXHhmNicsICdpc28tODg1OS0xJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYicgcmcgJywgTm9uZSksIChiJ1x4ZTUnLCAnaXNvLTg4NTktMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGInIHNib3JkJywgTm9uZSldKQogCiAgICAgZGVmIHRlc3RfcmZjMjA0N19CX2JhZF9wYWRkaW5nKHNlbGYpOgogICAgICAgICBzID0gJz0/aXNvLTg4NTktMT9CPyVzPz0nCkBAIC0yMDgxLDYgKzIxNDUsNjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfaGVhZGVyKHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgWyhiJ2FuZHJceGU5PXp6JywgJ2lzby04NjU5LTEnKV0pCiAKKyAgICBkZWYgdGVzdF9yZmMyMDQ3X3JmYzIwNDdfMShzZWxmKToKKyAgICAgICAgIyAxc3QgdGVzdGNhc2UgYXQgZW5kIG9mIHJmYzIwNDcKKyAgICAgICAgcyA9ICcoPT9JU08tODg1OS0xP1E/YT89KScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfaGVhZGVyKHMpLAorICAgICAgICAgICAgWyhiJygnLCBOb25lKSwgKGInYScsICdpc28tODg1OS0xJyksIChiJyknLCBOb25lKV0pCisKKyAgICBkZWYgdGVzdF9yZmMyMDQ3X3JmYzIwNDdfMihzZWxmKToKKyAgICAgICAgIyAybmQgdGVzdGNhc2UgYXQgZW5kIG9mIHJmYzIwNDcKKyAgICAgICAgcyA9ICcoPT9JU08tODg1OS0xP1E/YT89IGIpJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9oZWFkZXIocyksCisgICAgICAgICAgICBbKGInKCcsIE5vbmUpLCAoYidhJywgJ2lzby04ODU5LTEnKSwgKGInIGIpJywgTm9uZSldKQorCisgICAgZGVmIHRlc3RfcmZjMjA0N19yZmMyMDQ3XzMoc2VsZik6CisgICAgICAgICMgM3JkIHRlc3RjYXNlIGF0IGVuZCBvZiByZmMyMDQ3CisgICAgICAgIHMgPSAnKD0/SVNPLTg4NTktMT9RP2E/PSA9P0lTTy04ODU5LTE/UT9iPz0pJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9oZWFkZXIocyksCisgICAgICAgICAgICBbKGInKCcsIE5vbmUpLCAoYidhYicsICdpc28tODg1OS0xJyksIChiJyknLCBOb25lKV0pCisKKyAgICBkZWYgdGVzdF9yZmMyMDQ3X3JmYzIwNDdfNChzZWxmKToKKyAgICAgICAgIyA0dGggdGVzdGNhc2UgYXQgZW5kIG9mIHJmYzIwNDcKKyAgICAgICAgcyA9ICcoPT9JU08tODg1OS0xP1E/YT89ICA9P0lTTy04ODU5LTE/UT9iPz0pJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9oZWFkZXIocyksCisgICAgICAgICAgICBbKGInKCcsIE5vbmUpLCAoYidhYicsICdpc28tODg1OS0xJyksIChiJyknLCBOb25lKV0pCisKKyAgICBkZWYgdGVzdF9yZmMyMDQ3X3JmYzIwNDdfNWEoc2VsZik6CisgICAgICAgICMgNXRoIHRlc3RjYXNlIGF0IGVuZCBvZiByZmMyMDQ3IG5ld2xpbmUgaXMgXHJcbgorICAgICAgICBzID0gJyg9P0lTTy04ODU5LTE/UT9hPz1cclxuICAgID0/SVNPLTg4NTktMT9RP2I/PSknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX2hlYWRlcihzKSwKKyAgICAgICAgICAgIFsoYicoJywgTm9uZSksIChiJ2FiJywgJ2lzby04ODU5LTEnKSwgKGInKScsIE5vbmUpXSkKKworICAgIGRlZiB0ZXN0X3JmYzIwNDdfcmZjMjA0N181YihzZWxmKToKKyAgICAgICAgIyA1dGggdGVzdGNhc2UgYXQgZW5kIG9mIHJmYzIwNDcgbmV3bGluZSBpcyBcbgorICAgICAgICBzID0gJyg9P0lTTy04ODU5LTE/UT9hPz1cbiAgICA9P0lTTy04ODU5LTE/UT9iPz0pJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9oZWFkZXIocyksCisgICAgICAgICAgICBbKGInKCcsIE5vbmUpLCAoYidhYicsICdpc28tODg1OS0xJyksIChiJyknLCBOb25lKV0pCisKKyAgICBkZWYgdGVzdF9yZmMyMDQ3X3JmYzIwNDdfNihzZWxmKToKKyAgICAgICAgIyA2dGggdGVzdGNhc2UgYXQgZW5kIG9mIHJmYzIwNDcKKyAgICAgICAgcyA9ICcoPT9JU08tODg1OS0xP1E/YV9iPz0pJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9oZWFkZXIocyksCisgICAgICAgICAgICBbKGInKCcsIE5vbmUpLCAoYidhIGInLCAnaXNvLTg4NTktMScpLCAoYicpJywgTm9uZSldKQorCisgICAgZGVmIHRlc3RfcmZjMjA0N19yZmMyMDQ3Xzcoc2VsZik6CisgICAgICAgICMgN3RoIHRlc3RjYXNlIGF0IGVuZCBvZiByZmMyMDQ3CisgICAgICAgIHMgPSAnKD0/SVNPLTg4NTktMT9RP2E/PSA9P0lTTy04ODU5LTI/UT9fYj89KScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfaGVhZGVyKHMpLAorICAgICAgICAgICAgWyhiJygnLCBOb25lKSwgKGInYScsICdpc28tODg1OS0xJyksIChiJyBiJywgJ2lzby04ODU5LTInKSwKKyAgICAgICAgICAgICAoYicpJywgTm9uZSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1ha2VfaGVhZGVyKGRlY29kZV9oZWFkZXIocykpLmVuY29kZSgpLCBzLmxvd2VyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG1ha2VfaGVhZGVyKGRlY29kZV9oZWFkZXIocykpKSwgJyhhIGIpJykKKworICAgIGRlZiB0ZXN0X211bHRpbGluZV9oZWFkZXIoc2VsZik6CisgICAgICAgIHMgPSAnPT93aW5kb3dzLTEyNTI/cT89MjJNPUZDbGxlcl9UPTIyPz1cclxuIDxULk11ZWxsZXJAeHh4LmNvbT4nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX2hlYWRlcihzKSwKKyAgICAgICAgICAgIFsoYiciTVx4ZmNsbGVyIFQiJywgJ3dpbmRvd3MtMTI1MicpLAorICAgICAgICAgICAgIChiJzxULk11ZWxsZXJAeHh4LmNvbT4nLCBOb25lKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFrZV9oZWFkZXIoZGVjb2RlX2hlYWRlcihzKSkuZW5jb2RlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJycuam9pbihzLnNwbGl0bGluZXMoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG1ha2VfaGVhZGVyKGRlY29kZV9oZWFkZXIocykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnIk3DvGxsZXIgVCIgPFQuTXVlbGxlckB4eHguY29tPicpCisKIAogIyBUZXN0IHRoZSBNSU1FTWVzc2FnZSBjbGFzcwogY2xhc3MgVGVzdE1JTUVNZXNzYWdlKFRlc3RFbWFpbEJhc2UpOgpAQCAtMjYwNiw2ICsyNzMxLDEzIEBACiAgICAgICAgIGZvciBzdWJwYXJ0IGluIG1zZy53YWxrKCk6CiAgICAgICAgICAgICB1bmxlc3MoaXNpbnN0YW5jZShzdWJwYXJ0LCBNeU1lc3NhZ2UpKQogCisgICAgZGVmIHRlc3RfY3VzdG9tX21lc3NhZ2VfZG9lc19ub3RfcmVxdWlyZV9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIGNsYXNzIE15TWVzc2FnZShNZXNzYWdlKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKKyAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZygiU3ViamVjdDogdGVzdFxuXG50ZXN0IiwgTXlNZXNzYWdlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtc2csIE15TWVzc2FnZSkpCisKICAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CiAgICAgICAgIG1vZHVsZSA9IF9faW1wb3J0X18oJ2VtYWlsJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQobW9kdWxlLl9fYWxsX18pLCBbCkBAIC0yNjM2LDggKzI3NjgsMTcgQEAKICAgICAgICAgICAgIHV0aWxzLmZvcm1hdGRhdGUobm93LCBsb2NhbHRpbWU9RmFsc2UsIHVzZWdtdD1UcnVlKSwKICAgICAgICAgICAgIHRpbWUuc3RyZnRpbWUoJyVhLCAlZCAlYiAlWSAlSDolTTolUyBHTVQnLCB0aW1lLmdtdGltZShub3cpKSkKIAotICAgIGRlZiB0ZXN0X3BhcnNlZGF0ZV9ub25lKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLnBhcnNlZGF0ZSgnJyksIE5vbmUpCisgICAgIyBwYXJzZWRhdGUgYW5kIHBhcnNlZGF0ZV90eiB3aWxsIGJlY29tZSBkZXByZWNhdGVkIGludGVyZmFjZXMgc29tZWRheQorICAgIGRlZiB0ZXN0X3BhcnNlZGF0ZV9yZXR1cm5zX05vbmVfZm9yX2ludmFsaWRfc3RyaW5ncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodXRpbHMucGFyc2VkYXRlKCcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodXRpbHMucGFyc2VkYXRlX3R6KCcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodXRpbHMucGFyc2VkYXRlKCcwJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHV0aWxzLnBhcnNlZGF0ZV90eignMCcpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh1dGlscy5wYXJzZWRhdGUoJ0EgQ29tcGxldGUgV2FzdGUgb2YgVGltZScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh1dGlscy5wYXJzZWRhdGVfdHooJ0EgQ29tcGxldGUgV2FzdGUgb2YgVGltZScpKQorICAgICAgICAjIE5vdCBhIHBhcnQgb2YgdGhlIHNwZWMgYnV0LCBidXQgdGhpcyBoYXMgaGlzdG9yaWNhbGx5IHdvcmtlZDoKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodXRpbHMucGFyc2VkYXRlKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh1dGlscy5wYXJzZWRhdGVfdHooTm9uZSkpCiAKICAgICBkZWYgdGVzdF9wYXJzZWRhdGVfY29tcGFjdChzZWxmKToKICAgICAgICAgIyBUaGUgRldTIGFmdGVyIHRoZSBjb21tYSBpcyBvcHRpb25hbApAQCAtMjY2NCw2ICsyODA1LDEzIEBACiAgICAgICAgICAgICgyMDAyLCA0LCAzLCAxNCwgNTgsIDI2LCAwLCAxLCAtMSwgLTI4ODAwKSkKIAogCisgICAgZGVmIHRlc3RfcGFyc2VkYXRlX2FjY2VwdHNfdGltZV93aXRoX2RvdHMoc2VsZik6CisgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAorICAgICAgICBlcSh1dGlscy5wYXJzZWRhdGVfdHooJzUgRmViIDIwMDMgMTMuNDcuMjYgLTA4MDAnKSwKKyAgICAgICAgICAgKDIwMDMsIDIsIDUsIDEzLCA0NywgMjYsIDAsIDEsIC0xLCAtMjg4MDApKQorICAgICAgICBlcSh1dGlscy5wYXJzZWRhdGVfdHooJzUgRmViIDIwMDMgMTMuNDcgLTA4MDAnKSwKKyAgICAgICAgICAgKDIwMDMsIDIsIDUsIDEzLCA0NywgMCwgMCwgMSwgLTEsIC0yODgwMCkpCisKICAgICBkZWYgdGVzdF9wYXJzZWRhdGVfYWNjZXB0YWJsZV90b190aW1lX2Z1bmN0aW9ucyhzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIHRpbWV0dXAgPSB1dGlscy5wYXJzZWRhdGUoJzUgRmViIDIwMDMgMTM6NDc6MjYgLTA4MDAnKQpAQCAtMjcwNiw3ICsyODU0LDEwIEBACiAgICAgZGVmIHRlc3RfZXNjYXBlX2R1bXAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICB1dGlscy5mb3JtYXRhZGRyKCgnQSAoVmVyeSkgU2lsbHkgUGVyc29uJywgJ3BlcnNvbkBkb20uYWluJykpLAotICAgICAgICAgICAgciciQSBcKFZlcnlcKSBTaWxseSBQZXJzb24iIDxwZXJzb25AZG9tLmFpbj4nKQorICAgICAgICAgICAgciciQSAoVmVyeSkgU2lsbHkgUGVyc29uIiA8cGVyc29uQGRvbS5haW4+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHV0aWxzLnBhcnNlYWRkcihyJyJBIFwoVmVyeVwpIFNpbGx5IFBlcnNvbiIgPHBlcnNvbkBkb20uYWluPicpLAorICAgICAgICAgICAgKCdBIChWZXJ5KSBTaWxseSBQZXJzb24nLCAncGVyc29uQGRvbS5haW4nKSkKICAgICAgICAgYSA9IHInQSBcKFNwZWNpYWxcKSBQZXJzb24nCiAgICAgICAgIGIgPSAncGVyc29uQGRvbS5haW4nCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMucGFyc2VhZGRyKHV0aWxzLmZvcm1hdGFkZHIoKGEsIGIpKSksIChhLCBiKSkKQEAgLTI3MTksNiArMjg3MCw0NiBAQAogICAgICAgICBiID0gJ3BlcnNvbkBkb20uYWluJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLnBhcnNlYWRkcih1dGlscy5mb3JtYXRhZGRyKChhLCBiKSkpLCAoYSwgYikpCiAKKyAgICBkZWYgdGVzdF9xdW90ZXNfdW5pY29kZV9uYW1lcyhzZWxmKToKKyAgICAgICAgIyBpc3N1ZSAxNjkwNjA4LiAgZW1haWwudXRpbHMuZm9ybWF0YWRkcigpIHNob3VsZCBiZSByZmMyMDQ3IGF3YXJlLgorICAgICAgICBuYW1lID0gIkhcdTAwZTRucyBXXHUwMGZjcnN0IgorICAgICAgICBhZGRyID0gJ3BlcnNvbkBkb20uYWluJworICAgICAgICB1dGY4X2Jhc2U2NCA9ICI9P3V0Zi04P2I/U01Pa2JuTWdWOE84Y25OMD89IDxwZXJzb25AZG9tLmFpbj4iCisgICAgICAgIGxhdGluMV9xdW9wcmkgPSAiPT9pc28tODg1OS0xP3E/SD1FNG5zX1c9RkNyc3Q/PSA8cGVyc29uQGRvbS5haW4+IgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdGFkZHIoKG5hbWUsIGFkZHIpKSwgdXRmOF9iYXNlNjQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMuZm9ybWF0YWRkcigobmFtZSwgYWRkciksICdpc28tODg1OS0xJyksCisgICAgICAgICAgICBsYXRpbjFfcXVvcHJpKQorCisgICAgZGVmIHRlc3RfYWNjZXB0c19hbnlfY2hhcnNldF9saWtlX29iamVjdChzZWxmKToKKyAgICAgICAgIyBpc3N1ZSAxNjkwNjA4LiAgZW1haWwudXRpbHMuZm9ybWF0YWRkcigpIHNob3VsZCBiZSByZmMyMDQ3IGF3YXJlLgorICAgICAgICBuYW1lID0gIkhcdTAwZTRucyBXXHUwMGZjcnN0IgorICAgICAgICBhZGRyID0gJ3BlcnNvbkBkb20uYWluJworICAgICAgICB1dGY4X2Jhc2U2NCA9ICI9P3V0Zi04P2I/U01Pa2JuTWdWOE84Y25OMD89IDxwZXJzb25AZG9tLmFpbj4iCisgICAgICAgIGZvb2JhciA9ICJGT09CQVIiCisgICAgICAgIGNsYXNzIENoYXJzZXRNb2NrOgorICAgICAgICAgICAgZGVmIGhlYWRlcl9lbmNvZGUoc2VsZiwgc3RyaW5nKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZm9vYmFyCisgICAgICAgIG1vY2sgPSBDaGFyc2V0TW9jaygpCisgICAgICAgIG1vY2tfZXhwZWN0ZWQgPSAiJXMgPCVzPiIgJSAoZm9vYmFyLCBhZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdGFkZHIoKG5hbWUsIGFkZHIpLCBtb2NrKSwgbW9ja19leHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRhZGRyKChuYW1lLCBhZGRyKSwgQ2hhcnNldCgndXRmLTgnKSksCisgICAgICAgICAgICB1dGY4X2Jhc2U2NCkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfY2hhcnNldF9saWtlX29iamVjdF9yYWlzZXNfZXJyb3Ioc2VsZik6CisgICAgICAgICMgaXNzdWUgMTY5MDYwOC4gIGVtYWlsLnV0aWxzLmZvcm1hdGFkZHIoKSBzaG91bGQgYmUgcmZjMjA0NyBhd2FyZS4KKyAgICAgICAgbmFtZSA9ICJIXHUwMGU0bnMgV1x1MDBmY3JzdCIKKyAgICAgICAgYWRkciA9ICdwZXJzb25AZG9tLmFpbicKKyAgICAgICAgIyBBIG9iamVjdCB3aXRob3V0IGEgaGVhZGVyX2VuY29kZSBtZXRob2Q6CisgICAgICAgIGJhZF9jaGFyc2V0ID0gb2JqZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHV0aWxzLmZvcm1hdGFkZHIsIChuYW1lLCBhZGRyKSwKKyAgICAgICAgICAgIGJhZF9jaGFyc2V0KQorCisgICAgZGVmIHRlc3RfdW5pY29kZV9hZGRyZXNzX3JhaXNlc19lcnJvcihzZWxmKToKKyAgICAgICAgIyBpc3N1ZSAxNjkwNjA4LiAgZW1haWwudXRpbHMuZm9ybWF0YWRkcigpIHNob3VsZCBiZSByZmMyMDQ3IGF3YXJlLgorICAgICAgICBhZGRyID0gJ3BlcnNcdTAwZjZuQGRvbS5pbicKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVycm9yLCB1dGlscy5mb3JtYXRhZGRyLCAoTm9uZSwgYWRkcikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFcnJvciwgdXRpbHMuZm9ybWF0YWRkciwgKCJOYW1lIiwgYWRkcikpCisKICAgICBkZWYgdGVzdF9uYW1lX3dpdGhfZG90KHNlbGYpOgogICAgICAgICB4ID0gJ0pvaG4gWC4gRG9lIDxqeGRAZXhhbXBsZS5jb20+JwogICAgICAgICB5ID0gJyJKb2huIFguIERvZSIgPGp4ZEBleGFtcGxlLmNvbT4nCkBAIC0yNzY0LDYgKzI5NTUsMTUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoJycsICdtZXJ3b2sud29rLndva0B4YW1wbGUuY29tJyksCiAgICAgICAgICAgICB1dGlscy5wYXJzZWFkZHIoJ21lcndvay4gd29rIC4gIHdva0B4YW1wbGUuY29tJykpCiAKKyAgICBkZWYgdGVzdF9mb3JtYXRhZGRyX2RvZXNfbm90X3F1b3RlX3BhcmVuc19pbl9xdW90ZWRfc3RyaW5nKHNlbGYpOgorICAgICAgICBhZGRyID0gKCInZm9vQGV4YW1wbGUuY29tJyAoZm9vQGV4YW1wbGUuY29tKSIsCisgICAgICAgICAgICAgICAgJ2Zvb0BleGFtcGxlLmNvbScpCisgICAgICAgIGFkZHJzdHIgPSAoJyJcJ2Zvb0BleGFtcGxlLmNvbVwnICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGZvb0BleGFtcGxlLmNvbSkiIDxmb29AZXhhbXBsZS5jb20+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5wYXJzZWFkZHIoYWRkcnN0ciksIGFkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMuZm9ybWF0YWRkcihhZGRyKSwgYWRkcnN0cikKKworCiAgICAgZGVmIHRlc3RfbXVsdGlsaW5lX2Zyb21fY29tbWVudChzZWxmKToKICAgICAgICAgeCA9ICIiIlwKIEZvbwpAQCAtMzAzMyw2ICszMjMzLDcgQEAKIAogCiBjbGFzcyBUZXN0UGFyc2VycyhUZXN0RW1haWxCYXNlKToKKwogICAgIGRlZiB0ZXN0X2hlYWRlcl9wYXJzZXIoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICAjIFBhcnNlIG9ubHkgdGhlIGhlYWRlcnMgb2YgYSBjb21wbGV4IG11bHRpcGFydCBNSU1FIGRvY3VtZW50CkBAIC0zMDQ0LDYgKzMyNDUsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtc2cuaXNfbXVsdGlwYXJ0KCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1zZy5nZXRfcGF5bG9hZCgpLCBzdHIpKQogCisgICAgZGVmIHRlc3RfYnl0ZXNfaGVhZGVyX3BhcnNlcihzZWxmKToKKyAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCisgICAgICAgICMgUGFyc2Ugb25seSB0aGUgaGVhZGVycyBvZiBhIGNvbXBsZXggbXVsdGlwYXJ0IE1JTUUgZG9jdW1lbnQKKyAgICAgICAgd2l0aCBvcGVuZmlsZSgnbXNnXzAyLnR4dCcsICdyYicpIGFzIGZwOgorICAgICAgICAgICAgbXNnID0gZW1haWwucGFyc2VyLkJ5dGVzSGVhZGVyUGFyc2VyKCkucGFyc2UoZnApCisgICAgICAgIGVxKG1zZ1snZnJvbSddLCAncHBwLXJlcXVlc3RAenp6Lm9yZycpCisgICAgICAgIGVxKG1zZ1sndG8nXSwgJ3BwcEB6enoub3JnJykKKyAgICAgICAgZXEobXNnLmdldF9jb250ZW50X3R5cGUoKSwgJ211bHRpcGFydC9taXhlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobXNnLmlzX211bHRpcGFydCgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtc2cuZ2V0X3BheWxvYWQoKSwgc3RyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobXNnLmdldF9wYXlsb2FkKGRlY29kZT1UcnVlKSwgYnl0ZXMpKQorCiAgICAgZGVmIHRlc3Rfd2hpdGVzcGFjZV9jb250aW51YXRpb24oc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICAjIFRoaXMgbWVzc2FnZSBjb250YWlucyBhIGxpbmUgYWZ0ZXIgdGhlIFN1YmplY3Q6IGhlYWRlciB0aGF0IGhhcyBvbmx5CkBAIC0zMjY2LDE1ICszNDc5LDE5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKGRlY29kZT1UcnVlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdww7ZzdMOhbFxuJy5lbmNvZGUoJ3V0Zi04JykpCiAKKyAgICAjIHRlc3RfZGVmZWN0X2hhbmRsaW5nOnRlc3RfaW52YWxpZF9jaGFyc19pbl9iYXNlNjRfcGF5bG9hZAogICAgIGRlZiB0ZXN0XzhiaXRfaW5fYmFzZTY0X2JvZHkoc2VsZik6Ci0gICAgICAgICMgU3RpY2tpbmcgYW4gOGJpdCBieXRlIGluIGEgYmFzZTY0IGJsb2NrIG1ha2VzIGl0IHVuZGVjb2RhYmxlIGJ5Ci0gICAgICAgICMgbm9ybWFsIG1lYW5zLCBzbyB0aGUgYmxvY2sgaXMgcmV0dXJuZWQgdW5kZWNvZGVkLCBidXQgYXMgYnl0ZXMuCisgICAgICAgICMgSWYgd2UgZ2V0IDhiaXQgYnl0ZXMgaW4gYSBiYXNlNjQgYm9keSwgd2UgY2FuIGp1c3QgaWdub3JlIHRoZW0KKyAgICAgICAgIyBhcyBiZWluZyBvdXRzaWRlIHRoZSBiYXNlNjQgYWxwaGFiZXQgYW5kIGRlY29kZSBhbnl3YXkuICBCdXQKKyAgICAgICAgIyB3ZSByZWdpc3RlciBhIGRlZmVjdC4KICAgICAgICAgbSA9IHNlbGYuYm9keXRlc3RfbXNnLmZvcm1hdChjaGFyc2V0PSd1dGYtOCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RlPSdiYXNlNjQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlsaW5lPSdjTU8yYzNSaGJBw6E9JykuZW5jb2RlKCd1dGYtOCcpCiAgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyhtKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGF5bG9hZChkZWNvZGU9VHJ1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2NNTzJjM1JoYkHDoT1cbicuZW5jb2RlKCd1dGYtOCcpKQorICAgICAgICAgICAgICAgICAgICAgICAgICdww7ZzdGFsJy5lbmNvZGUoJ3V0Zi04JykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtc2cuZGVmZWN0c1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdCkKIAogICAgIGRlZiB0ZXN0XzhiaXRfaW5fdXVlbmNvZGVfYm9keShzZWxmKToKICAgICAgICAgIyBTdGlja2luZyBhbiA4Yml0IGJ5dGUgaW4gYSB1dWVuY29kZSBibG9jayBtYWtlcyBpdCB1bmRlY29kYWJsZSBieQpAQCAtMzM1NSw2ICszNTcyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSwgInRleHQiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfY29udGVudF9zdWJ0eXBlKCksICJwbFx1RkZGRGluIikKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIubm9uX2FzY2lpX2luX3BhcmFtcwogICAgIGRlZiB0ZXN0X2dldF9wYXJhbXNfd2l0aF84Yml0KHNlbGYpOgogICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fYnl0ZXMoCiAgICAgICAgICAgICAnWC1IZWFkZXI6IGZvbz1ceGE3bmU7IGJceGE3cj10d287IGJhej10aHJlZVxuJy5lbmNvZGUoJ2xhdGluLTEnKSkKQEAgLTMzNjQsNiArMzU4Miw3IEBACiAgICAgICAgICMgWFhYOiBzb21lZGF5IHlvdSBtaWdodCBiZSBhYmxlIHRvIGdldCAnYlx4YTdyJywgZm9yIG5vdyB5b3UgY2FuJ3QuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXJhbSgnYlx4YTdyJywgaGVhZGVyPSd4LWhlYWRlcicpLCBOb25lKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5ub25fYXNjaWlfaW5fcmZjMjIzMV92YWx1ZQogICAgIGRlZiB0ZXN0X2dldF9yZmMyMjMxX3BhcmFtc193aXRoXzhiaXQoc2VsZik6CiAgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyh0ZXh0d3JhcC5kZWRlbnQoIiIiXAogICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpOwpAQCAtMzYwOSwxMiArMzgyOCw3IEBACiAgICAgICAgIGIgPSBCeXRlc0lPKCkKICAgICAgICAgZyA9IGVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcihiLCBtYXhoZWFkZXJsZW49MCkKICAgICAgICAgZy5mbGF0dGVuKG1zZywgdW5peGZyb209dW5peGZyb20sIGxpbmVzZXA9c2VsZi5saW5lc2VwKQotICAgICAgICBzZWxmLmFzc2VydEJ5dGVTdHJpbmdzRXF1YWwoZGF0YSwgYi5nZXR2YWx1ZSgpKQotCi0gICAgZGVmIGFzc2VydEJ5dGVTdHJpbmdzRXF1YWwoc2VsZiwgc3RyMSwgc3RyMik6Ci0gICAgICAgICMgTm90IHVzaW5nIHNlbGYuYmxpbmVzZXAgaGVyZSBpcyBpbnRlbnRpb25hbC4gIFRoaXMgd2F5IHRoZSBvdXRwdXQKLSAgICAgICAgIyBpcyBtb3JlIHVzZWZ1bCB3aGVuIHRoZSBmYWlsdXJlIHJlc3VsdHMgaW4gbWl4ZWQgbGluZSBlbmRpbmdzLgotICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChzdHIxLnNwbGl0KGInXG4nKSwgc3RyMi5zcGxpdChiJ1xuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYi5nZXR2YWx1ZSgpKQogCiAKIGNsYXNzIFRlc3RCeXRlc0dlbmVyYXRvcklkZW1wb3RlbnROTChCYXNlVGVzdEJ5dGVzR2VuZXJhdG9ySWRlbXBvdGVudCwKQEAgLTQzODAsMTEgKzQ1OTQsMTEgQEAKICAgICAgICAgaCA9IG1ha2VfaGVhZGVyKGRlY29kZV9oZWFkZXIocykpCiAgICAgICAgIGVxKGguZW5jb2RlKCksIHMpCiAKLSAgICBkZWYgdGVzdF93aGl0ZXNwYWNlX2VhdGVyKHNlbGYpOgorICAgIGRlZiB0ZXN0X3doaXRlc3BhY2Vfa2VlcGVyKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgcyA9ICdTdWJqZWN0OiA9P2tvaTgtcj9iPzhOTFAxOFhTeThFZ3pzRWd4c25Pd2N6WXp0az0/PSA9P2tvaTgtcj9xPz1DQT89IHp6LicKICAgICAgICAgcGFydHMgPSBkZWNvZGVfaGVhZGVyKHMpCi0gICAgICAgIGVxKHBhcnRzLCBbKGInU3ViamVjdDonLCBOb25lKSwgKGInXHhmMFx4ZDJceGNmXHhkN1x4YzVceGQyXHhjYlx4YzEgXHhjZVx4YzEgXHhjNlx4YzlceGNlXHhjMVx4Y2NceGQ4XHhjZVx4ZDlceGNhJywgJ2tvaTgtcicpLCAoYid6ei4nLCBOb25lKV0pCisgICAgICAgIGVxKHBhcnRzLCBbKGInU3ViamVjdDogJywgTm9uZSksIChiJ1x4ZjBceGQyXHhjZlx4ZDdceGM1XHhkMlx4Y2JceGMxIFx4Y2VceGMxIFx4YzZceGM5XHhjZVx4YzFceGNjXHhkOFx4Y2VceGQ5XHhjYScsICdrb2k4LXInKSwgKGInIHp6LicsIE5vbmUpXSkKICAgICAgICAgaGRyID0gbWFrZV9oZWFkZXIocGFydHMpCiAgICAgICAgIGVxKGhkci5lbmNvZGUoKSwKICAgICAgICAgICAgJ1N1YmplY3Q6ID0/a29pOC1yP2I/OE5MUDE4WFN5OEVnenNFZ3hzbk93Y3pZenRuSz89IHp6LicpCkBAIC00NDE0LDYgKzQ2MjgsOSBAQAogCiAjIFRlc3QgUkZDIDIyMzEgaGVhZGVyIHBhcmFtZXRlcnMgKGVuL2RlKWNvZGluZwogY2xhc3MgVGVzdFJGQzIyMzEoVGVzdEVtYWlsQmFzZSk6CisKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfZW5jb2RlZF93aXRoX2RvdWJsZV9xdW90ZXMKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfc2luZ2xlX3F1b3RlX2luc2lkZV9kb3VibGVfcXVvdGVzCiAgICAgZGVmIHRlc3RfZ2V0X3BhcmFtKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgbXNnID0gc2VsZi5fbXNnb2JqKCdtc2dfMjkudHh0JykKQEAgLTQ0OTksMTEgKzQ3MTYsMTUgQEAKIC1NZQogIiIiKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX2VuY29kZWRfY2hhcnNldAorICAgICMgSSBjaGFuZ2VkIHRoZSBjaGFyc2V0IG5hbWUsIHRob3VnaCwgYmVjYXVzZSB0aGUgb25lIGluIHRoZSBmaWxlIGlzbid0CisgICAgIyBhIGxlZ2FsIGNoYXJzZXQgbmFtZS4gIFNob3VsZCBhZGQgYSB0ZXN0IGZvciBhbiBpbGxlZ2FsIGNoYXJzZXQuCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9nZXRfY29udGVudF9jaGFyc2V0KHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgbXNnID0gc2VsZi5fbXNnb2JqKCdtc2dfMzIudHh0JykKICAgICAgICAgZXEobXNnLmdldF9jb250ZW50X2NoYXJzZXQoKSwgJ3VzLWFzY2lpJykKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9lbmNvZGVkX25vX2RvdWJsZV9xdW90ZXMKICAgICBkZWYgdGVzdF9yZmMyMjMxX3BhcnNlX3JmY19xdW90aW5nKHNlbGYpOgogICAgICAgICBtID0gdGV4dHdyYXAuZGVkZW50KCcnJ1wKICAgICAgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsKQEAgLTQ1MTcsNiArNDczOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdCBub3QucGRmJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBtc2cuYXNfc3RyaW5nKCkpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfZW5jb2RlZF93aXRoX2RvdWJsZV9xdW90ZXMKICAgICBkZWYgdGVzdF9yZmMyMjMxX3BhcnNlX2V4dHJhX3F1b3Rpbmcoc2VsZik6CiAgICAgICAgIG0gPSB0ZXh0d3JhcC5kZWRlbnQoJycnXAogICAgICAgICAgICAgQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lOwpAQCAtNDUzMCw2ICs0NzUyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyBpcyBldmVuIG1vcmUgKioqZnVuKioqIGlzIGl0IG5vdC5wZGYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG1zZy5hc19zdHJpbmcoKSkKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9ub19sYW5ndWFnZV9vcl9jaGFyc2V0CisgICAgIyBidXQgbmV3IHRlc3QgdXNlcyAqMCogYmVjYXVzZSBvdGhlcndpc2UgbGFuZy9jaGFyc2V0IGlzIG5vdCB2YWxpZC4KKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfc2VnbWVudGVkX25vcm1hbF92YWx1ZXMKICAgICBkZWYgdGVzdF9yZmMyMjMxX25vX2xhbmd1YWdlX29yX2NoYXJzZXQoc2VsZik6CiAgICAgICAgIG0gPSAnJydcCiBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CkBAIC00NTQ0LDYgKzQ3NjksNyBAQAogICAgICAgICAgICAgcGFyYW0sCiAgICAgICAgICAgICAnZmlsZV9fX19DX19ET0NVTUVOVFNfMjBBTkRfMjBTRVRUSU5HU19GQUJJRU5fTE9DQUxfMjBTRVRUSU5HU19URU1QX25zbWFpbC5odG0nKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX2VuY29kZWRfbm9fY2hhcnNldAogICAgIGRlZiB0ZXN0X3JmYzIyMzFfbm9fbGFuZ3VhZ2Vfb3JfY2hhcnNldF9pbl9maWxlbmFtZShzZWxmKToKICAgICAgICAgbSA9ICcnJ1wKIENvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsKQEAgLTQ1NTYsNiArNDc4Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9maWxlbmFtZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQgbm90LnBkZicpCiAKKyAgICAjIER1cGxpY2F0ZSBvZiBwcmV2aW91cyB0ZXN0PwogICAgIGRlZiB0ZXN0X3JmYzIyMzFfbm9fbGFuZ3VhZ2Vfb3JfY2hhcnNldF9pbl9maWxlbmFtZV9lbmNvZGVkKHNlbGYpOgogICAgICAgICBtID0gJycnXAogQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lOwpAQCAtNDU2OCw2ICs0Nzk1LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X2ZpbGVuYW1lKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdCBub3QucGRmJykKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9wYXJ0bHlfZW5jb2RlZCwKKyAgICAjIGJ1dCB0aGUgdGVzdCBiZWxvdyBpcyB3cm9uZyAodGhlIGZpcnN0IHBhcnQgc2hvdWxkIGJlIGRlY29kZWQpLgogICAgIGRlZiB0ZXN0X3JmYzIyMzFfcGFydGx5X2VuY29kZWQoc2VsZik6CiAgICAgICAgIG0gPSAnJydcCiBDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmU7CkBAIC00NjE5LDYgKzQ4NDgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfY29udGVudF9jaGFyc2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdCBub3QucGRmJykKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV91bmtub3duX2NoYXJzZXRfdHJlYXRlZF9hc19hc2NpaQogICAgIGRlZiB0ZXN0X3JmYzIyMzFfYmFkX2VuY29kaW5nX2luX2ZpbGVuYW1lKHNlbGYpOgogICAgICAgICBtID0gJycnXAogQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lOwpAQCAtNDY4NSw2ICs0OTE1LDcgQEAKICAgICAgICAgZXEobGFuZ3VhZ2UsIE5vbmUpCiAgICAgICAgIGVxKHMsICJGcmFuaydzIERvY3VtZW50IikKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9zaW5nbGVfcXVvdGVfaW5zaWRlX2RvdWJsZV9xdW90ZXMKICAgICBkZWYgdGVzdF9yZmMyMjMxX3NpbmdsZV90aWNrX2luX2ZpbGVuYW1lKHNlbGYpOgogICAgICAgICBtID0gIiIiXAogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LWZvbzsgbmFtZSowPVwiRnJhbmsnc1wiOyBuYW1lKjE9XCIgRG9jdW1lbnRcIgpAQCAtNDY5NSw2ICs0OTI2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKHBhcmFtLCB0dXBsZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW0sICJGcmFuaydzIERvY3VtZW50IikKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9zaW5nbGVfcXVvdGVfaW5fdmFsdWVfd2l0aF9jaGFyc2V0X2FuZF9sYW5nCiAgICAgZGVmIHRlc3RfcmZjMjIzMV90aWNrX2F0dGFja19leHRlbmRlZChzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIG0gPSAiIiJcCkBAIC00NzA4LDYgKzQ5NDAsNyBAQAogICAgICAgICBlcShsYW5ndWFnZSwgJ2VuLXVzJykKICAgICAgICAgZXEocywgIkZyYW5rJ3MgRG9jdW1lbnQiKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX3NpbmdsZV9xdW90ZV9pbl9ub25fZW5jb2RlZF92YWx1ZQogICAgIGRlZiB0ZXN0X3JmYzIyMzFfdGlja19hdHRhY2soc2VsZik6CiAgICAgICAgIG0gPSAiIiJcCiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtZm9vOwpAQCAtNDcxOSw2ICs0OTUyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKHBhcmFtLCB0dXBsZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW0sICJ1cy1hc2NpaSdlbi11cydGcmFuaydzIERvY3VtZW50IikKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9zaW5nbGVfcXVvdGVzX2luc2lkZV9xdW90ZXMKICAgICBkZWYgdGVzdF9yZmMyMjMxX25vX2V4dGVuZGVkX3ZhbHVlcyhzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIG0gPSAiIiJcCkBAIC00NzI4LDYgKzQ5NjIsNyBAQAogICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKG0pCiAgICAgICAgIGVxKG1zZy5nZXRfcGFyYW0oJ25hbWUnKSwgIkZyYW5rJ3MgRG9jdW1lbnQiKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX2VuY29kZWRfdGhlbl91bmVuY29kZWRfc2VnbWVudHMKICAgICBkZWYgdGVzdF9yZmMyMjMxX2VuY29kZWRfdGhlbl91bmVuY29kZWRfc2VnbWVudHMoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBtID0gIiIiXApAQCAtNDc0Myw2ICs0OTc4LDggQEAKICAgICAgICAgZXEobGFuZ3VhZ2UsICdlbi11cycpCiAgICAgICAgIGVxKHMsICdNeSBEb2N1bWVudCBGb3IgWW91JykKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV91bmVuY29kZWRfdGhlbl9lbmNvZGVkX3NlZ21lbnRzCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX3F1b3RlZF91bmVuY29kZWRfdGhlbl9lbmNvZGVkX3NlZ21lbnRzCiAgICAgZGVmIHRlc3RfcmZjMjIzMV91bmVuY29kZWRfdGhlbl9lbmNvZGVkX3NlZ21lbnRzKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgbSA9ICIiIlwKQEAgLTQ3NjYsNyArNTAwMyw3IEBACiBjbGFzcyBUZXN0U2lnbmVkKFRlc3RFbWFpbEJhc2UpOgogCiAgICAgZGVmIF9tc2dfYW5kX29iaihzZWxmLCBmaWxlbmFtZSk6Ci0gICAgICAgIHdpdGggb3BlbmZpbGUoZmluZGZpbGUoZmlsZW5hbWUpKSBhcyBmcDoKKyAgICAgICAgd2l0aCBvcGVuZmlsZShmaWxlbmFtZSkgYXMgZnA6CiAgICAgICAgICAgICBvcmlnaW5hbCA9IGZwLnJlYWQoKQogICAgICAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyhvcmlnaW5hbCkKICAgICAgICAgcmV0dXJuIG9yaWdpbmFsLCBtc2cKQEAgLTQ3OTgsMjMgKzUwMzUsNSBAQAogCiAKIAotZGVmIF90ZXN0Y2xhc3NlcygpOgotICAgIG1vZCA9IHN5cy5tb2R1bGVzW19fbmFtZV9fXQotICAgIHJldHVybiBbZ2V0YXR0cihtb2QsIG5hbWUpIGZvciBuYW1lIGluIGRpcihtb2QpIGlmIG5hbWUuc3RhcnRzd2l0aCgnVGVzdCcpXQotCi0KLWRlZiBzdWl0ZSgpOgotICAgIHN1aXRlID0gdW5pdHRlc3QuVGVzdFN1aXRlKCkKLSAgICBmb3IgdGVzdGNsYXNzIGluIF90ZXN0Y2xhc3NlcygpOgotICAgICAgICBzdWl0ZS5hZGRUZXN0KHVuaXR0ZXN0Lm1ha2VTdWl0ZSh0ZXN0Y2xhc3MpKQotICAgIHJldHVybiBzdWl0ZQotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBmb3IgdGVzdGNsYXNzIGluIF90ZXN0Y2xhc3NlcygpOgotICAgICAgICBydW5fdW5pdHRlc3QodGVzdGNsYXNzKQotCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKGRlZmF1bHRUZXN0PSdzdWl0ZScpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZ2VuZXJhdG9yLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTE3NDA4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weQpAQCAtMCwwICsxLDE5OSBAQAoraW1wb3J0IGlvCitpbXBvcnQgdGV4dHdyYXAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBlbWFpbCBpbXBvcnQgbWVzc2FnZV9mcm9tX3N0cmluZywgbWVzc2FnZV9mcm9tX2J5dGVzCitmcm9tIGVtYWlsLmdlbmVyYXRvciBpbXBvcnQgR2VuZXJhdG9yLCBCeXRlc0dlbmVyYXRvcgorZnJvbSBlbWFpbCBpbXBvcnQgcG9saWN5Citmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgVGVzdEVtYWlsQmFzZSwgcGFyYW1ldGVyaXplCisKKworQHBhcmFtZXRlcml6ZQorY2xhc3MgVGVzdEdlbmVyYXRvckJhc2U6CisKKyAgICBwb2xpY3kgPSBwb2xpY3kuZGVmYXVsdAorCisgICAgZGVmIG1zZ21ha2VyKHNlbGYsIG1zZywgcG9saWN5PU5vbmUpOgorICAgICAgICBwb2xpY3kgPSBzZWxmLnBvbGljeSBpZiBwb2xpY3kgaXMgTm9uZSBlbHNlIHBvbGljeQorICAgICAgICByZXR1cm4gc2VsZi5tc2dmdW5jKG1zZywgcG9saWN5PXBvbGljeSkKKworICAgIHJlZm9sZF9sb25nX2V4cGVjdGVkID0geworICAgICAgICAwOiB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgVG86IHdob21faXRfbWF5X2NvbmNlcm5AZXhhbXBsZS5jb20KKyAgICAgICAgICAgIEZyb206IG5vYm9keV95b3Vfd2FudF90b19rbm93QGV4YW1wbGUuY29tCisgICAgICAgICAgICBTdWJqZWN0OiBXZSB0aGUgd2lsbGluZyBsZWQgYnkgdGhlIHVua25vd2luZyBhcmUgZG9pbmcgdGhlCisgICAgICAgICAgICAgaW1wb3NzaWJsZSBmb3IgdGhlIHVuZ3JhdGVmdWwuIFdlIGhhdmUgZG9uZSBzbyBtdWNoIGZvciBzbyBsb25nIHdpdGggc28gbGl0dGxlCisgICAgICAgICAgICAgd2UgYXJlIG5vdyBxdWFsaWZpZWQgdG8gZG8gYW55dGhpbmcgd2l0aCBub3RoaW5nLgorCisgICAgICAgICAgICBOb25lCisgICAgICAgICAgICAiIiIpLAorICAgICAgICAjIEZyb20gaXMgd3JhcHBlZCBiZWNhdXNlIHdyYXBwZWQgaXQgZml0cyBpbiA0MC4KKyAgICAgICAgNDA6IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBUbzogd2hvbV9pdF9tYXlfY29uY2VybkBleGFtcGxlLmNvbQorICAgICAgICAgICAgRnJvbToKKyAgICAgICAgICAgICBub2JvZHlfeW91X3dhbnRfdG9fa25vd0BleGFtcGxlLmNvbQorICAgICAgICAgICAgU3ViamVjdDogV2UgdGhlIHdpbGxpbmcgbGVkIGJ5IHRoZQorICAgICAgICAgICAgIHVua25vd2luZyBhcmUgZG9pbmcgdGhlIGltcG9zc2libGUgZm9yCisgICAgICAgICAgICAgdGhlIHVuZ3JhdGVmdWwuIFdlIGhhdmUgZG9uZSBzbyBtdWNoCisgICAgICAgICAgICAgZm9yIHNvIGxvbmcgd2l0aCBzbyBsaXR0bGUgd2UgYXJlIG5vdworICAgICAgICAgICAgIHF1YWxpZmllZCB0byBkbyBhbnl0aGluZyB3aXRoIG5vdGhpbmcuCisKKyAgICAgICAgICAgIE5vbmUKKyAgICAgICAgICAgICIiIiksCisgICAgICAgICMgTmVpdGhlciB0byBub3IgZnJvbSBmaXQgZXZlbiBpZiBwdXQgb24gYSBuZXcgbGluZSwKKyAgICAgICAgIyBzbyB3ZSBsZWF2ZSB0aGVtIHN0aWNraW5nIG91dCBvbiB0aGUgZmlyc3QgbGluZS4KKyAgICAgICAgMjA6IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBUbzogd2hvbV9pdF9tYXlfY29uY2VybkBleGFtcGxlLmNvbQorICAgICAgICAgICAgRnJvbTogbm9ib2R5X3lvdV93YW50X3RvX2tub3dAZXhhbXBsZS5jb20KKyAgICAgICAgICAgIFN1YmplY3Q6IFdlIHRoZQorICAgICAgICAgICAgIHdpbGxpbmcgbGVkIGJ5IHRoZQorICAgICAgICAgICAgIHVua25vd2luZyBhcmUgZG9pbmcKKyAgICAgICAgICAgICB0aGUgaW1wb3NzaWJsZSBmb3IKKyAgICAgICAgICAgICB0aGUgdW5ncmF0ZWZ1bC4gV2UKKyAgICAgICAgICAgICBoYXZlIGRvbmUgc28gbXVjaAorICAgICAgICAgICAgIGZvciBzbyBsb25nIHdpdGggc28KKyAgICAgICAgICAgICBsaXR0bGUgd2UgYXJlIG5vdworICAgICAgICAgICAgIHF1YWxpZmllZCB0byBkbworICAgICAgICAgICAgIGFueXRoaW5nIHdpdGgKKyAgICAgICAgICAgICBub3RoaW5nLgorCisgICAgICAgICAgICBOb25lCisgICAgICAgICAgICAiIiIpLAorICAgICAgICB9CisgICAgcmVmb2xkX2xvbmdfZXhwZWN0ZWRbMTAwXSA9IHJlZm9sZF9sb25nX2V4cGVjdGVkWzBdCisKKyAgICByZWZvbGRfYWxsX2V4cGVjdGVkID0gcmVmb2xkX2xvbmdfZXhwZWN0ZWQuY29weSgpCisgICAgcmVmb2xkX2FsbF9leHBlY3RlZFswXSA9ICgKKyAgICAgICAgICAgICJUbzogd2hvbV9pdF9tYXlfY29uY2VybkBleGFtcGxlLmNvbVxuIgorICAgICAgICAgICAgIkZyb206IG5vYm9keV95b3Vfd2FudF90b19rbm93QGV4YW1wbGUuY29tXG4iCisgICAgICAgICAgICAiU3ViamVjdDogV2UgdGhlIHdpbGxpbmcgbGVkIGJ5IHRoZSB1bmtub3dpbmcgYXJlIGRvaW5nIHRoZSAiCisgICAgICAgICAgICAgICJpbXBvc3NpYmxlIGZvciB0aGUgdW5ncmF0ZWZ1bC4gV2UgaGF2ZSBkb25lIHNvIG11Y2ggZm9yICIKKyAgICAgICAgICAgICAgInNvIGxvbmcgd2l0aCBzbyBsaXR0bGUgd2UgYXJlIG5vdyBxdWFsaWZpZWQgdG8gZG8gYW55dGhpbmcgIgorICAgICAgICAgICAgICAid2l0aCBub3RoaW5nLlxuIgorICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICJOb25lXG4iKQorICAgIHJlZm9sZF9hbGxfZXhwZWN0ZWRbMTAwXSA9ICgKKyAgICAgICAgICAgICJUbzogd2hvbV9pdF9tYXlfY29uY2VybkBleGFtcGxlLmNvbVxuIgorICAgICAgICAgICAgIkZyb206IG5vYm9keV95b3Vfd2FudF90b19rbm93QGV4YW1wbGUuY29tXG4iCisgICAgICAgICAgICAiU3ViamVjdDogV2UgdGhlIHdpbGxpbmcgbGVkIGJ5IHRoZSB1bmtub3dpbmcgYXJlIGRvaW5nIHRoZSAiCisgICAgICAgICAgICAgICAgImltcG9zc2libGUgZm9yIHRoZSB1bmdyYXRlZnVsLiBXZSBoYXZlXG4iCisgICAgICAgICAgICAgICIgZG9uZSBzbyBtdWNoIGZvciBzbyBsb25nIHdpdGggc28gbGl0dGxlIHdlIGFyZSBub3cgcXVhbGlmaWVkICIKKyAgICAgICAgICAgICAgICAidG8gZG8gYW55dGhpbmcgd2l0aCBub3RoaW5nLlxuIgorICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICJOb25lXG4iKQorCisgICAgbGVuZ3RoX3BhcmFtcyA9IFtuIGZvciBuIGluIHJlZm9sZF9sb25nX2V4cGVjdGVkXQorCisgICAgZGVmIGxlbmd0aF9hc19tYXhoZWFkZXJsZW5fcGFyYW1ldGVyKHNlbGYsIG4pOgorICAgICAgICBtc2cgPSBzZWxmLm1zZ21ha2VyKHNlbGYudHlwKHNlbGYucmVmb2xkX2xvbmdfZXhwZWN0ZWRbMF0pKQorICAgICAgICBzID0gc2VsZi5pb2NsYXNzKCkKKyAgICAgICAgZyA9IHNlbGYuZ2VuY2xhc3MocywgbWF4aGVhZGVybGVuPW4sIHBvbGljeT1zZWxmLnBvbGljeSkKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIHNlbGYudHlwKHNlbGYucmVmb2xkX2xvbmdfZXhwZWN0ZWRbbl0pKQorCisgICAgZGVmIGxlbmd0aF9hc19tYXhfbGluZV9sZW5ndGhfcG9saWN5KHNlbGYsIG4pOgorICAgICAgICBtc2cgPSBzZWxmLm1zZ21ha2VyKHNlbGYudHlwKHNlbGYucmVmb2xkX2xvbmdfZXhwZWN0ZWRbMF0pKQorICAgICAgICBzID0gc2VsZi5pb2NsYXNzKCkKKyAgICAgICAgZyA9IHNlbGYuZ2VuY2xhc3MocywgcG9saWN5PXNlbGYucG9saWN5LmNsb25lKG1heF9saW5lX2xlbmd0aD1uKSkKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIHNlbGYudHlwKHNlbGYucmVmb2xkX2xvbmdfZXhwZWN0ZWRbbl0pKQorCisgICAgZGVmIGxlbmd0aF9hc19tYXhoZWFkZXJsZW5fcGFybV9vdmVycmlkZXNfcG9saWN5KHNlbGYsIG4pOgorICAgICAgICBtc2cgPSBzZWxmLm1zZ21ha2VyKHNlbGYudHlwKHNlbGYucmVmb2xkX2xvbmdfZXhwZWN0ZWRbMF0pKQorICAgICAgICBzID0gc2VsZi5pb2NsYXNzKCkKKyAgICAgICAgZyA9IHNlbGYuZ2VuY2xhc3MocywgbWF4aGVhZGVybGVuPW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1zZWxmLnBvbGljeS5jbG9uZShtYXhfbGluZV9sZW5ndGg9MTApKQorICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgc2VsZi50eXAoc2VsZi5yZWZvbGRfbG9uZ19leHBlY3RlZFtuXSkpCisKKyAgICBkZWYgbGVuZ3RoX2FzX21heF9saW5lX2xlbmd0aF93aXRoX3JlZm9sZF9ub25lX2RvZXNfbm90X2ZvbGQoc2VsZiwgbik6CisgICAgICAgIG1zZyA9IHNlbGYubXNnbWFrZXIoc2VsZi50eXAoc2VsZi5yZWZvbGRfbG9uZ19leHBlY3RlZFswXSkpCisgICAgICAgIHMgPSBzZWxmLmlvY2xhc3MoKQorICAgICAgICBnID0gc2VsZi5nZW5jbGFzcyhzLCBwb2xpY3k9c2VsZi5wb2xpY3kuY2xvbmUocmVmb2xkX3NvdXJjZT0nbm9uZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbGluZV9sZW5ndGg9bikpCisgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkWzBdKSkKKworICAgIGRlZiBsZW5ndGhfYXNfbWF4X2xpbmVfbGVuZ3RoX3dpdGhfcmVmb2xkX2FsbF9mb2xkcyhzZWxmLCBuKToKKyAgICAgICAgbXNnID0gc2VsZi5tc2dtYWtlcihzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkWzBdKSkKKyAgICAgICAgcyA9IHNlbGYuaW9jbGFzcygpCisgICAgICAgIGcgPSBzZWxmLmdlbmNsYXNzKHMsIHBvbGljeT1zZWxmLnBvbGljeS5jbG9uZShyZWZvbGRfc291cmNlPSdhbGwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2xpbmVfbGVuZ3RoPW4pKQorICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgc2VsZi50eXAoc2VsZi5yZWZvbGRfYWxsX2V4cGVjdGVkW25dKSkKKworICAgIGRlZiB0ZXN0X2NybGZfY29udHJvbF92aWFfcG9saWN5KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSAiU3ViamVjdDogdGVzdFxyXG5cclxudGVzdCBib2R5XHJcbiIKKyAgICAgICAgZXhwZWN0ZWQgPSBzb3VyY2UKKyAgICAgICAgbXNnID0gc2VsZi5tc2dtYWtlcihzZWxmLnR5cChzb3VyY2UpKQorICAgICAgICBzID0gc2VsZi5pb2NsYXNzKCkKKyAgICAgICAgZyA9IHNlbGYuZ2VuY2xhc3MocywgcG9saWN5PXBvbGljeS5TTVRQKQorICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgc2VsZi50eXAoZXhwZWN0ZWQpKQorCisgICAgZGVmIHRlc3RfZmxhdHRlbl9saW5lc2VwX292ZXJyaWRlc19wb2xpY3koc2VsZik6CisgICAgICAgIHNvdXJjZSA9ICJTdWJqZWN0OiB0ZXN0XG5cbnRlc3QgYm9keVxuIgorICAgICAgICBleHBlY3RlZCA9IHNvdXJjZQorICAgICAgICBtc2cgPSBzZWxmLm1zZ21ha2VyKHNlbGYudHlwKHNvdXJjZSkpCisgICAgICAgIHMgPSBzZWxmLmlvY2xhc3MoKQorICAgICAgICBnID0gc2VsZi5nZW5jbGFzcyhzLCBwb2xpY3k9cG9saWN5LlNNVFApCisgICAgICAgIGcuZmxhdHRlbihtc2csIGxpbmVzZXA9J1xuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIHNlbGYudHlwKGV4cGVjdGVkKSkKKworCitjbGFzcyBUZXN0R2VuZXJhdG9yKFRlc3RHZW5lcmF0b3JCYXNlLCBUZXN0RW1haWxCYXNlKToKKworICAgIG1zZ2Z1bmMgPSBzdGF0aWNtZXRob2QobWVzc2FnZV9mcm9tX3N0cmluZykKKyAgICBnZW5jbGFzcyA9IEdlbmVyYXRvcgorICAgIGlvY2xhc3MgPSBpby5TdHJpbmdJTworICAgIHR5cCA9IHN0cgorCisKK2NsYXNzIFRlc3RCeXRlc0dlbmVyYXRvcihUZXN0R2VuZXJhdG9yQmFzZSwgVGVzdEVtYWlsQmFzZSk6CisKKyAgICBtc2dmdW5jID0gc3RhdGljbWV0aG9kKG1lc3NhZ2VfZnJvbV9ieXRlcykKKyAgICBnZW5jbGFzcyA9IEJ5dGVzR2VuZXJhdG9yCisgICAgaW9jbGFzcyA9IGlvLkJ5dGVzSU8KKyAgICB0eXAgPSBsYW1iZGEgc2VsZiwgeDogeC5lbmNvZGUoJ2FzY2lpJykKKworICAgIGRlZiB0ZXN0X2N0ZV90eXBlXzdiaXRfaGFuZGxlc191bmtub3duXzhiaXQoc2VsZik6CisgICAgICAgIHNvdXJjZSA9ICgiU3ViamVjdDogTWFpbnRlbmFudCBqZSB2b3VzIHByw6lzZW50ZSBtb24gIgorICAgICAgICAgICAgICAgICAiY29sbMOoZ3VlXG5cbiIpLmVuY29kZSgndXRmLTgnKQorICAgICAgICBleHBlY3RlZCA9ICgnU3ViamVjdDogTWFpbnRlbmFudCBqZSB2b3VzID0/dW5rbm93bi04Yml0P3E/JworICAgICAgICAgICAgICAgICAgICAncHI9QzM9QTlzZW50ZV9tb25fY29sbD1DMz1BOGd1ZT89XG5cbicpLmVuY29kZSgnYXNjaWknKQorICAgICAgICBtc2cgPSBtZXNzYWdlX2Zyb21fYnl0ZXMoc291cmNlKQorICAgICAgICBzID0gaW8uQnl0ZXNJTygpCisgICAgICAgIGcgPSBCeXRlc0dlbmVyYXRvcihzLCBwb2xpY3k9c2VsZi5wb2xpY3kuY2xvbmUoY3RlX3R5cGU9JzdiaXQnKSkKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfY3RlX3R5cGVfN2JpdF90cmFuc2Zvcm1zXzhiaXRfY3RlKHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgRnJvbTogZm9vQGJhci5jb20KKyAgICAgICAgICAgIFRvOiBEaW5zZGFsZQorICAgICAgICAgICAgU3ViamVjdDogTnVkZ2UgbnVkZ2UsIHdpbmssIHdpbmsKKyAgICAgICAgICAgIE1pbWUtVmVyc2lvbjogMS4wCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9ImxhdGluLTEiCisgICAgICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKKyAgICAgICAgICAgIG9oIGzDoCBsw6AsIGtub3cgd2hhdCBJIG1lYW4sIGtub3cgd2hhdCBJIG1lYW4/CisgICAgICAgICAgICAiIiIpLmVuY29kZSgnbGF0aW4xJykKKyAgICAgICAgbXNnID0gbWVzc2FnZV9mcm9tX2J5dGVzKHNvdXJjZSkKKyAgICAgICAgZXhwZWN0ZWQgPSAgdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIEZyb206IGZvb0BiYXIuY29tCisgICAgICAgICAgICBUbzogRGluc2RhbGUKKyAgICAgICAgICAgIFN1YmplY3Q6IE51ZGdlIG51ZGdlLCB3aW5rLCB3aW5rCisgICAgICAgICAgICBNaW1lLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJpc28tODg1OS0xIgorICAgICAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQorCisgICAgICAgICAgICBvaCBsPUUwIGw9RTAsIGtub3cgd2hhdCBJIG1lYW4sIGtub3cgd2hhdCBJIG1lYW4/CisgICAgICAgICAgICAiIiIpLmVuY29kZSgnYXNjaWknKQorICAgICAgICBzID0gaW8uQnl0ZXNJTygpCisgICAgICAgIGcgPSBCeXRlc0dlbmVyYXRvcihzLCBwb2xpY3k9c2VsZi5wb2xpY3kuY2xvbmUoY3RlX3R5cGU9JzdiaXQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzZXA9J1xuJykpCisgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2hlYWRlcnJlZ2lzdHJ5LnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2hlYWRlcnJlZ2lzdHJ5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwYzgxYzEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfaGVhZGVycmVnaXN0cnkucHkKQEAgLTAsMCArMSwxNTE1IEBACitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCB0ZXh0d3JhcAoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKK2Zyb20gZW1haWwgaW1wb3J0IHBvbGljeQorZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBNZXNzYWdlCitmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgVGVzdEVtYWlsQmFzZSwgcGFyYW1ldGVyaXplCitmcm9tIGVtYWlsIGltcG9ydCBoZWFkZXJyZWdpc3RyeQorZnJvbSBlbWFpbC5oZWFkZXJyZWdpc3RyeSBpbXBvcnQgQWRkcmVzcywgR3JvdXAKKworCitESVRUTyA9IG9iamVjdCgpCisKKworY2xhc3MgVGVzdEhlYWRlclJlZ2lzdHJ5KFRlc3RFbWFpbEJhc2UpOgorCisgICAgZGVmIHRlc3RfYXJiaXRyYXJ5X25hbWVfdW5zdHJ1Y3R1cmVkKHNlbGYpOgorICAgICAgICBmYWN0b3J5ID0gaGVhZGVycmVnaXN0cnkuSGVhZGVyUmVnaXN0cnkoKQorICAgICAgICBoID0gZmFjdG9yeSgnZm9vYmFyJywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LlVuc3RydWN0dXJlZEhlYWRlcikKKworICAgIGRlZiB0ZXN0X25hbWVfY2FzZV9pZ25vcmVkKHNlbGYpOgorICAgICAgICBmYWN0b3J5ID0gaGVhZGVycmVnaXN0cnkuSGVhZGVyUmVnaXN0cnkoKQorICAgICAgICAjIFdoaXRlYm94IGNoZWNrIHRoYXQgdGVzdCBpcyB2YWxpZAorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdTdWJqZWN0JywgZmFjdG9yeS5yZWdpc3RyeSkKKyAgICAgICAgaCA9IGZhY3RvcnkoJ1N1YmplY3QnLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuVW5pcXVlVW5zdHJ1Y3R1cmVkSGVhZGVyKQorCisgICAgY2xhc3MgRm9vQmFzZToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X292ZXJyaWRlX2RlZmF1bHRfYmFzZV9jbGFzcyhzZWxmKToKKyAgICAgICAgZmFjdG9yeSA9IGhlYWRlcnJlZ2lzdHJ5LkhlYWRlclJlZ2lzdHJ5KGJhc2VfY2xhc3M9c2VsZi5Gb29CYXNlKQorICAgICAgICBoID0gZmFjdG9yeSgnZm9vYmFyJywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgc2VsZi5Gb29CYXNlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuVW5zdHJ1Y3R1cmVkSGVhZGVyKQorCisgICAgY2xhc3MgRm9vRGVmYXVsdDoKKyAgICAgICAgcGFyc2UgPSBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIucGFyc2UKKworICAgIGRlZiB0ZXN0X292ZXJyaWRlX2RlZmF1bHRfY2xhc3Moc2VsZik6CisgICAgICAgIGZhY3RvcnkgPSBoZWFkZXJyZWdpc3RyeS5IZWFkZXJSZWdpc3RyeShkZWZhdWx0X2NsYXNzPXNlbGYuRm9vRGVmYXVsdCkKKyAgICAgICAgaCA9IGZhY3RvcnkoJ2Zvb2JhcicsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBzZWxmLkZvb0RlZmF1bHQpCisKKyAgICBkZWYgdGVzdF9vdmVycmlkZV9kZWZhdWx0X2NsYXNzX29ubHlfb3ZlcnJpZGVzX2RlZmF1bHQoc2VsZik6CisgICAgICAgIGZhY3RvcnkgPSBoZWFkZXJyZWdpc3RyeS5IZWFkZXJSZWdpc3RyeShkZWZhdWx0X2NsYXNzPXNlbGYuRm9vRGVmYXVsdCkKKyAgICAgICAgaCA9IGZhY3RvcnkoJ3N1YmplY3QnLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuVW5pcXVlVW5zdHJ1Y3R1cmVkSGVhZGVyKQorCisgICAgZGVmIHRlc3RfZG9udF91c2VfZGVmYXVsdF9tYXAoc2VsZik6CisgICAgICAgIGZhY3RvcnkgPSBoZWFkZXJyZWdpc3RyeS5IZWFkZXJSZWdpc3RyeSh1c2VfZGVmYXVsdF9tYXA9RmFsc2UpCisgICAgICAgIGggPSBmYWN0b3J5KCdzdWJqZWN0JywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LlVuc3RydWN0dXJlZEhlYWRlcikKKworICAgIGRlZiB0ZXN0X21hcF90b190eXBlKHNlbGYpOgorICAgICAgICBmYWN0b3J5ID0gaGVhZGVycmVnaXN0cnkuSGVhZGVyUmVnaXN0cnkoKQorICAgICAgICBoMSA9IGZhY3RvcnkoJ2Zvb2JhcicsICd0ZXN0JykKKyAgICAgICAgZmFjdG9yeS5tYXBfdG9fdHlwZSgnZm9vYmFyJywgaGVhZGVycmVnaXN0cnkuVW5pcXVlVW5zdHJ1Y3R1cmVkSGVhZGVyKQorICAgICAgICBoMiA9IGZhY3RvcnkoJ2Zvb2JhcicsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgxLCBoZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaDEsIGhlYWRlcnJlZ2lzdHJ5LlVuc3RydWN0dXJlZEhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgyLCBoZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaDIsIGhlYWRlcnJlZ2lzdHJ5LlVuaXF1ZVVuc3RydWN0dXJlZEhlYWRlcikKKworCitjbGFzcyBUZXN0SGVhZGVyQmFzZShUZXN0RW1haWxCYXNlKToKKworICAgIGZhY3RvcnkgPSBoZWFkZXJyZWdpc3RyeS5IZWFkZXJSZWdpc3RyeSgpCisKKyAgICBkZWYgbWFrZV9oZWFkZXIoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICByZXR1cm4gc2VsZi5mYWN0b3J5KG5hbWUsIHZhbHVlKQorCisKK2NsYXNzIFRlc3RCYXNlSGVhZGVyRmVhdHVyZXMoVGVzdEhlYWRlckJhc2UpOgorCisgICAgZGVmIHRlc3Rfc3RyKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBzdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgJ3RoaXMgaXMgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaCksICd0aGlzIGlzIGEgdGVzdCcpCisKKyAgICBkZWYgdGVzdF9zdWJzdHIoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdzdWJqZWN0JywgJ3RoaXMgaXMgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoWzU6N10sICdpcycpCisKKyAgICBkZWYgdGVzdF9oYXNfbmFtZShzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3N1YmplY3QnLCAndGhpcyBpcyBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgubmFtZSwgJ3N1YmplY3QnKQorCisgICAgZGVmIF90ZXN0X2F0dHJfcm8oc2VsZiwgYXR0cik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdzdWJqZWN0JywgJ3RoaXMgaXMgYSB0ZXN0JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBzZXRhdHRyKGgsIGF0dHIsICdmb28nKQorCisgICAgZGVmIHRlc3RfbmFtZV9yZWFkX29ubHkoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXR0cl9ybygnbmFtZScpCisKKyAgICBkZWYgdGVzdF9kZWZlY3RzX3JlYWRfb25seShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9hdHRyX3JvKCdkZWZlY3RzJykKKworICAgIGRlZiB0ZXN0X2RlZmVjdHNfaXNfdHVwbGUoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdzdWJqZWN0JywgJ3RoaXMgaXMgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaC5kZWZlY3RzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZGVmZWN0cywgdHVwbGUpCisgICAgICAgICMgTWFrZSBzdXJlIGl0IGlzIHN0aWxsIHRydWUgd2hlbiB0aGVyZSBhcmUgZGVmZWN0cy4KKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ2RhdGUnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaC5kZWZlY3RzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZGVmZWN0cywgdHVwbGUpCisKKyAgICAjIFhYWDogRklYTUUKKyAgICAjZGVmIHRlc3RfQ1JfaW5fdmFsdWUoc2VsZik6CisgICAgIyAgICAjIFhYWDogdGhpcyBhbHNvIHJlLXJhaXNlcyB0aGUgaXNzdWUgb2YgZW1iZWRkZWQgaGVhZGVycywKKyAgICAjICAgICMgbmVlZCB0ZXN0IGFuZCBzb2x1dGlvbiBmb3IgdGhhdC4KKyAgICAjICAgIHZhbHVlID0gJ1xyJy5qb2luKFsndGhpcyBpcycsICcgYSB0ZXN0J10pCisgICAgIyAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc3ViamVjdCcsIHZhbHVlKQorICAgICMgICAgc2VsZi5hc3NlcnRFcXVhbChoLCB2YWx1ZSkKKyAgICAjICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGguZGVmZWN0cywgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0pCisKKyAgICBkZWYgdGVzdF9SRkMyMDQ3X3ZhbHVlX2RlY29kZWQoc2VsZik6CisgICAgICAgIHZhbHVlID0gJz0/dXRmLTg/cT90aGlzX2lzX2FfdGVzdD89JworICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc3ViamVjdCcsIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsICd0aGlzIGlzIGEgdGVzdCcpCisKKworY2xhc3MgVGVzdERhdGVIZWFkZXIoVGVzdEhlYWRlckJhc2UpOgorCisgICAgZGF0ZXN0cmluZyA9ICdTdW4sIDIzIFNlcCAyMDAxIDIwOjEwOjU1IC0wNzAwJworICAgIHV0Y29mZnNldCA9IGRhdGV0aW1lLnRpbWVkZWx0YShob3Vycz0tNykKKyAgICB0eiA9IGRhdGV0aW1lLnRpbWV6b25lKHV0Y29mZnNldCkKKyAgICBkdCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMDEsIDksIDIzLCAyMCwgMTAsIDU1LCB0emluZm89dHopCisKKyAgICBkZWYgdGVzdF9wYXJzZV9kYXRlKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignZGF0ZScsIHNlbGYuZGF0ZXN0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCBzZWxmLmRhdGVzdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kYXRldGltZSwgc2VsZi5kdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmRhdGV0aW1lLnV0Y29mZnNldCgpLCBzZWxmLnV0Y29mZnNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmRlZmVjdHMsICgpKQorCisgICAgZGVmIHRlc3Rfc2V0X2Zyb21fZGF0ZXRpbWUoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdkYXRlJywgc2VsZi5kdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCBzZWxmLmRhdGVzdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kYXRldGltZSwgc2VsZi5kdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmRlZmVjdHMsICgpKQorCisgICAgZGVmIHRlc3RfZGF0ZV9oZWFkZXJfcHJvcGVydGllcyhzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ2RhdGUnLCBzZWxmLmRhdGVzdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5VbmlxdWVEYXRlSGVhZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgubWF4X2NvdW50LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZGVmZWN0cywgKCkpCisKKyAgICBkZWYgdGVzdF9yZXNlbnRfZGF0ZV9oZWFkZXJfcHJvcGVydGllcyhzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3Jlc2VudC1kYXRlJywgc2VsZi5kYXRlc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuRGF0ZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLm1heF9jb3VudCwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmRlZmVjdHMsICgpKQorCisgICAgZGVmIHRlc3Rfbm9fdmFsdWVfaXNfZGVmZWN0KHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignZGF0ZScsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoLmRlZmVjdHMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaC5kZWZlY3RzWzBdLCBlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWUpCisKKyAgICBkZWYgdGVzdF9kYXRldGltZV9yZWFkX29ubHkoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdkYXRlJywgc2VsZi5kYXRlc3RyaW5nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGguZGF0ZXRpbWUgPSAnZm9vJworCisgICAgZGVmIHRlc3Rfc2V0X2RhdGVfaGVhZGVyX2Zyb21fZGF0ZXRpbWUoc2VsZik6CisgICAgICAgIG0gPSBNZXNzYWdlKHBvbGljeT1wb2xpY3kuZGVmYXVsdCkKKyAgICAgICAgbVsnRGF0ZSddID0gc2VsZi5kdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ0RhdGUnXSwgc2VsZi5kYXRlc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ0RhdGUnXS5kYXRldGltZSwgc2VsZi5kdCkKKworCitAcGFyYW1ldGVyaXplCitjbGFzcyBUZXN0Q29udGVudFR5cGVIZWFkZXIoVGVzdEhlYWRlckJhc2UpOgorCisgICAgZGVmIGNvbnRlbnRfdHlwZV9hc192YWx1ZShzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmFyZ3MpOgorICAgICAgICBsID0gbGVuKGFyZ3MpCisgICAgICAgIHBhcm1kaWN0ID0gYXJnc1swXSBpZiBsPjAgZWxzZSB7fQorICAgICAgICBkZWZlY3RzID0gIGFyZ3NbMV0gaWYgbD4xIGVsc2UgW10KKyAgICAgICAgZGVjb2RlZCA9ICBhcmdzWzJdIGlmIGw+MiBhbmQgYXJnc1syXSBpcyBub3QgRElUVE8gZWxzZSBzb3VyY2UKKyAgICAgICAgaGVhZGVyID0gJ0NvbnRlbnQtVHlwZTonICsgJyAnIGlmIHNvdXJjZSBlbHNlICcnCisgICAgICAgIGZvbGRlZCA9IGFyZ3NbM10gaWYgbD4zIGVsc2UgaGVhZGVyICsgc291cmNlICsgJ1xuJworICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignQ29udGVudC1UeXBlJywgc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguY29udGVudF90eXBlLCBjb250ZW50X3R5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5tYWludHlwZSwgbWFpbnR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5zdWJ0eXBlLCBzdWJ0eXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgucGFyYW1zLCBwYXJtZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoaC5kZWZlY3RzLCBkZWZlY3RzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsIGRlY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdCksIGZvbGRlZCkKKworICAgIGNvbnRlbnRfdHlwZV9wYXJhbXMgPSB7CisKKyAgICAgICAgIyBFeGFtcGxlcyBmcm9tIFJGQyAyMDQ1LgorCisgICAgICAgICdSRkNfMjA0NV8xJzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkgKFBsYWluIHRleHQpJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAndXMtYXNjaWknfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9InVzLWFzY2lpIicpLAorCisgICAgICAgICdSRkNfMjA0NV8yJzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWknLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnY2hhcnNldCc6ICd1cy1hc2NpaSd9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiJyksCisKKyAgICAgICAgJ1JGQ18yMDQ1XzMnOiAoCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAndXMtYXNjaWknfSksCisKKyAgICAgICAgIyBSRkMgMjA0NSA1LjIgc2F5cyBzeW50YWN0aWNhbGx5IGludmFsaWQgdmFsdWVzIGFyZSB0byBiZSB0cmVhdGVkIGFzCisgICAgICAgICMgdGV4dC9wbGFpbi4KKworICAgICAgICAnbm9fc3VidHlwZV9pbl9jb250ZW50X3R5cGUnOiAoCisgICAgICAgICAgICAndGV4dC8nLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHt9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgJ25vX3NsYXNoX2luX2NvbnRlbnRfdHlwZSc6ICgKKyAgICAgICAgICAgICdmb28nLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHt9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgJ2p1bmtfdGV4dF9pbl9jb250ZW50X3R5cGUnOiAoCisgICAgICAgICAgICAnPGNyYXp5ICJzdHVmZiI+JywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7fSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICd0b29fbWFueV9zbGFzaGVzX2luX2NvbnRlbnRfdHlwZSc6ICgKKyAgICAgICAgICAgICdpbWFnZS9qcGVnL2ZvbycsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAge30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgICAgICAjIEJ1dCB1bmtub3duIG5hbWVzIGFyZSBPSy4gIFdlIGNvdWxkIG1ha2Ugbm9uLUlBTkEgbmFtZXMgYSBkZWZlY3QsIGJ1dAorICAgICAgICAjIGJ5IG5vdCBkb2luZyBzbyB3ZSBtYWtlIG91cnNlbHZlcyBmdXR1cmUgcHJvb2YuICBUaGUgZmFjdCB0aGF0IHRoZXkKKyAgICAgICAgIyBhcmUgdW5rbm93biB3aWxsIGJlIGRldGVjdGFibGUgYnkgdGhlIGZhY3QgdGhhdCB0aGV5IGRvbid0IGFwcGVhciBpbgorICAgICAgICAjIHRoZSBtaW1lX3JlZ2lzdHJ5Li4uYW5kIHRoZSBhcHBsaWNhdGlvbiBpcyBmcmVlIHRvIGV4dGVuZCB0aGF0IGxpc3QKKyAgICAgICAgIyB0byBoYW5kbGUgdGhlbSBldmVuIGlmIHRoZSBjb3JlIGxpYnJhcnkgZG9lc24ndC4KKworICAgICAgICAndW5rbm93bl9jb250ZW50X3R5cGUnOiAoCisgICAgICAgICAgICAnYmFkL25hbWVzJywKKyAgICAgICAgICAgICdiYWQvbmFtZXMnLAorICAgICAgICAgICAgJ2JhZCcsCisgICAgICAgICAgICAnbmFtZXMnKSwKKworICAgICAgICAjIFRoZSBjb250ZW50IHR5cGUgaXMgY2FzZSBpbnNlbnNpdGl2ZSwgYW5kIENGV1MgaXMgaWdub3JlZC4KKworICAgICAgICAnbWl4ZWRfY2FzZV9jb250ZW50X3R5cGUnOiAoCisgICAgICAgICAgICAnSW1BZ2UvSlBlZycsCisgICAgICAgICAgICAnaW1hZ2UvanBlZycsCisgICAgICAgICAgICAnaW1hZ2UnLAorICAgICAgICAgICAgJ2pwZWcnKSwKKworICAgICAgICAnc3BhY2VzX2luX2NvbnRlbnRfdHlwZSc6ICgKKyAgICAgICAgICAgICcgIHRleHQgIC8gIHBsYWluICAnLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJyksCisKKyAgICAgICAgJ2Nmd3NfaW5fY29udGVudF90eXBlJzogKAorICAgICAgICAgICAgJyhmb28pIHRleHQgKGJhcikvKGJheilwbGFpbihzdHVmZiknLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJyksCisKKyAgICAgICAgIyB0ZXN0IHNvbWUgcGFyYW1ldGVycyAobW9yZSB0ZXN0cyBjb3VsZCBiZSBhZGRlZCBmb3IgcGFyYW1ldGVycworICAgICAgICAjIGFzc29jaWF0ZWQgd2l0aCBvdGhlciBjb250ZW50IHR5cGVzLCBidXQgc2luY2UgcGFyYW1ldGVyIHBhcnNpbmcgaXMKKyAgICAgICAgIyBnZW5lcmljIHRoZXkgd291bGQgYmUgcmVkdW5kYW50IGZvciB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbikuCisKKyAgICAgICAgJ2NoYXJzZXRfcGFyYW0nOiAoCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAndXRmLTgnfSksCisKKyAgICAgICAgJ2NhcGl0YWxpemVkX2NoYXJzZXQnOiAoCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgY2hhcnNldD0iVVMtQVNDSUkiJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAnVVMtQVNDSUknfSksCisKKyAgICAgICAgJ3Vua25vd25fY2hhcnNldCc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0PSJmT28iJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAnZk9vJ30pLAorCisgICAgICAgICdjYXBpdGFsaXplZF9jaGFyc2V0X3BhcmFtX25hbWVfYW5kX2NvbW1lbnQnOiAoCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgKGludGVyamVjdGlvbikgQ2hhcnNldD0idXRmLTgiJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAndXRmLTgnfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgIyBTaG91bGQgdGhlIHBhcmFtZXRlciBuYW1lIGJlIGxvd2VyY2FzZWQgaGVyZT8KKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBDaGFyc2V0PSJ1dGYtOCInKSwKKworICAgICAgICAjIFNpbmNlIHRoaXMgaXMgcHJldHR5IG11Y2ggdGhlIHVyLW1pbWVoZWFkZXIsIHdlJ2xsIHB1dCBhbGwgdGhlIHRlc3RzCisgICAgICAgICMgdGhhdCBleGVyY2lzZSB0aGUgcGFyYW1ldGVyIHBhcnNpbmcgYW5kIGZvcm1hdHRpbmcgaGVyZS4KKyAgICAgICAgIworICAgICAgICAjIFhYWDogcXVlc3Rpb246IGlzIG1pbmltYWwgcXVvdGluZyBwcmVmZXJyZWQ/CisKKyAgICAgICAgJ3VucXVvdGVkX3BhcmFtX3ZhbHVlJzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IHRpdGxlPWZvbycsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeyd0aXRsZSc6ICdmb28nfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IHRpdGxlPSJmb28iJyksCisKKyAgICAgICAgJ3BhcmFtX3ZhbHVlX3dpdGhfdHNwZWNpYWxzJzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IHRpdGxlPSIoYmFyKWZvbyBibHVlIicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeyd0aXRsZSc6ICcoYmFyKWZvbyBibHVlJ30pLAorCisgICAgICAgICdwYXJhbV93aXRoX2V4dHJhX3F1b3RlZF93aGl0ZXNwYWNlJzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IHRpdGxlPSIgIGEgICAgIGxvb25nICB3YXkgXHQgaG9tZSAgICInLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsndGl0bGUnOiAnICBhICAgICBsb29uZyAgd2F5IFx0IGhvbWUgICAnfSksCisKKyAgICAgICAgJ2JhZF9wYXJhbXMnOiAoCisgICAgICAgICAgICAnYmxhcmc7IGJhejsgYm9vJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2Jheic6ICcnLCAnYm9vJzogJyd9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSozKSwKKworICAgICAgICAnc3BhY2VzX2Fyb3VuZF9wYXJhbV9lcXVhbHMnOiAoCisgICAgICAgICAgICAnTXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeSA9ICJDUElNU1NNVFBDMDZwNWYzdEciJywKKyAgICAgICAgICAgICdtdWx0aXBhcnQvbWl4ZWQnLAorICAgICAgICAgICAgJ211bHRpcGFydCcsCisgICAgICAgICAgICAnbWl4ZWQnLAorICAgICAgICAgICAgeydib3VuZGFyeSc6ICdDUElNU1NNVFBDMDZwNWYzdEcnfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ011bHRpcGFydC9taXhlZDsgYm91bmRhcnk9IkNQSU1TU01UUEMwNnA1ZjN0RyInKSwKKworICAgICAgICAnc3BhY2VzX2Fyb3VuZF9zZW1pcyc6ICgKKyAgICAgICAgICAgICgnaW1hZ2UvanBlZzsgbmFtZT0id2liYmxlLkpQRyIgOyB4LW1hYy10eXBlPSI0QTUwNDU0NyIgOyAnCisgICAgICAgICAgICAgICAgJ3gtbWFjLWNyZWF0b3I9IjQ3NEI0RjRFIicpLAorICAgICAgICAgICAgJ2ltYWdlL2pwZWcnLAorICAgICAgICAgICAgJ2ltYWdlJywKKyAgICAgICAgICAgICdqcGVnJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICd3aWJibGUuSlBHJywKKyAgICAgICAgICAgICAneC1tYWMtdHlwZSc6ICc0QTUwNDU0NycsCisgICAgICAgICAgICAgJ3gtbWFjLWNyZWF0b3InOiAnNDc0QjRGNEUnfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgKCdpbWFnZS9qcGVnOyBuYW1lPSJ3aWJibGUuSlBHIjsgeC1tYWMtdHlwZT0iNEE1MDQ1NDciOyAnCisgICAgICAgICAgICAgICAgJ3gtbWFjLWNyZWF0b3I9IjQ3NEI0RjRFIicpLAorICAgICAgICAgICAgIyBYWFg6IGl0IGNvdWxkIGJlIHRoYXQgd2Ugd2lsbCBldmVudHVhbGx5IHByZWZlciB0byBmb2xkIHN0YXJ0aW5nCisgICAgICAgICAgICAjIGZyb20gdGhlIGRlY29kZWQgdmFsdWUsIGluIHdoaWNoIGNhc2UgdGhlc2Ugc3BhY2VzIGFuZCBzaW1pbGFyCisgICAgICAgICAgICAjIHNwYWNlcyBpbiBvdGhlciB0ZXN0cyB3aWxsIGJlIHdyb25nLgorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IGltYWdlL2pwZWc7IG5hbWU9IndpYmJsZS5KUEciIDsgJworICAgICAgICAgICAgICAgICd4LW1hYy10eXBlPSI0QTUwNDU0NyIgO1xuJworICAgICAgICAgICAgICcgeC1tYWMtY3JlYXRvcj0iNDc0QjRGNEUiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ3NlbWlzX2luc2lkZV9xdW90ZXMnOiAoCisgICAgICAgICAgICAnaW1hZ2UvanBlZzsgbmFtZT0iSmltJmFtcDsmYW1wO0ppbGwiJywKKyAgICAgICAgICAgICdpbWFnZS9qcGVnJywKKyAgICAgICAgICAgICdpbWFnZScsCisgICAgICAgICAgICAnanBlZycsCisgICAgICAgICAgICB7J25hbWUnOiAnSmltJmFtcDsmYW1wO0ppbGwnfSksCisKKyAgICAgICAgJ3NpbmdsZV9xdW90ZXNfaW5zaWRlX3F1b3Rlcyc6ICgKKyAgICAgICAgICAgICdpbWFnZS9qcGVnOyBuYW1lPSJKaW0gXCdCb2JcJyBKaWxsIicsCisgICAgICAgICAgICAnaW1hZ2UvanBlZycsCisgICAgICAgICAgICAnaW1hZ2UnLAorICAgICAgICAgICAgJ2pwZWcnLAorICAgICAgICAgICAgeyduYW1lJzogIkppbSAnQm9iJyBKaWxsIn0pLAorCisgICAgICAgICdkb3VibGVfcXVvdGVzX2luc2lkZV9xdW90ZXMnOiAoCisgICAgICAgICAgICByJ2ltYWdlL2pwZWc7IG5hbWU9IkppbSBcIkJvYlwiIEppbGwiJywKKyAgICAgICAgICAgICdpbWFnZS9qcGVnJywKKyAgICAgICAgICAgICdpbWFnZScsCisgICAgICAgICAgICAnanBlZycsCisgICAgICAgICAgICB7J25hbWUnOiAnSmltICJCb2IiIEppbGwnfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgcidpbWFnZS9qcGVnOyBuYW1lPSJKaW0gXCJCb2JcIiBKaWxsIicpLAorCisgICAgICAgICMgWFhYOiBUaGlzIHRlc3Qgd29ya3MgZXhjZXB0IGZvciB0aGUgcmVmb2xkaW5nIG9mIHRoZSBoZWFkZXIuICBJJ2xsCisgICAgICAgICMgZGVhbCB3aXRoIHRoYXQgYnVnIHdoZW4gSSBkZWFsIHdpdGggdGhlIG90aGVyIGZvbGRpbmcgYnVncy4KKyAgICAgICAgIydub25fYXNjaWlfaW5fcGFyYW1zJzogKAorICAgICAgICAjICAgICgnZm9vXHhhNy9iYXI7IGJceGE3cj10d287ICcKKyAgICAgICAgIyAgICAgICAgJ2Jhej10aHJceGE3ZScuZW5jb2RlKCdsYXRpbi0xJykuZGVjb2RlKCd1cy1hc2NpaScsCisgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3Vycm9nYXRlZXNjYXBlJykpLAorICAgICAgICAjICAgICdmb29cdUZGRkQvYmFyJywKKyAgICAgICAgIyAgICAnZm9vXHVGRkZEJywKKyAgICAgICAgIyAgICAnYmFyJywKKyAgICAgICAgIyAgICB7J2JcdUZGRkRyJzogJ3R3bycsICdiYXonOiAndGhyXHVGRkZEZSd9LAorICAgICAgICAjICAgIFtlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdF0qMywKKyAgICAgICAgIyAgICAnZm9v77+9L2JhcjsgYu+/vXI9InR3byI7IGJhej0idGhy77+9ZSInLAorICAgICAgICAjICAgICksCisKKyAgICAgICAgIyBSRkMgMjIzMSBwYXJhbWV0ZXIgdGVzdHMuCisKKyAgICAgICAgJ3JmYzIyMzFfc2VnbWVudGVkX25vcm1hbF92YWx1ZXMnOiAoCisgICAgICAgICAgICAnaW1hZ2UvanBlZzsgbmFtZSowPSJhYmMiOyBuYW1lKjE9Ii5odG1sIicsCisgICAgICAgICAgICAnaW1hZ2UvanBlZycsCisgICAgICAgICAgICAnaW1hZ2UnLAorICAgICAgICAgICAgJ2pwZWcnLAorICAgICAgICAgICAgeyduYW1lJzogImFiYy5odG1sIn0sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICdpbWFnZS9qcGVnOyBuYW1lPSJhYmMuaHRtbCInKSwKKworICAgICAgICAncXVvdGVzX2luc2lkZV9yZmMyMjMxX3ZhbHVlJzogKAorICAgICAgICAgICAgcidpbWFnZS9qcGVnOyBiYXIqMD0iYmF6XCJmb29iYXIiOyBiYXIqMT0iXCJiYXoiJywKKyAgICAgICAgICAgICdpbWFnZS9qcGVnJywKKyAgICAgICAgICAgICdpbWFnZScsCisgICAgICAgICAgICAnanBlZycsCisgICAgICAgICAgICB7J2Jhcic6ICdiYXoiZm9vYmFyImJheid9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICByJ2ltYWdlL2pwZWc7IGJhcj0iYmF6XCJmb29iYXJcImJheiInKSwKKworICAgICAgICAjIFhYWDogVGhpcyB0ZXN0IHdvcmtzIGV4Y2VwdCBmb3IgdGhlIHJlZm9sZGluZyBvZiB0aGUgaGVhZGVyLiAgSSdsbAorICAgICAgICAjIGRlYWwgd2l0aCB0aGF0IGJ1ZyB3aGVuIEkgZGVhbCB3aXRoIHRoZSBvdGhlciBmb2xkaW5nIGJ1Z3MuCisgICAgICAgICMnbm9uX2FzY2lpX3JmYzIyMzFfdmFsdWUnOiAoCisgICAgICAgICMgICAgKCd0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpOyAnCisgICAgICAgICMgICAgICJ0aXRsZSo9dXMtYXNjaWknZW4nVGhpcyUyMGlzJTIwIgorICAgICAgICAjICAgICAnbm90JTIwZlx4YTduJykuZW5jb2RlKCdsYXRpbi0xJykuZGVjb2RlKCd1cy1hc2NpaScsCisgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3Vycm9nYXRlZXNjYXBlJyksCisgICAgICAgICMgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAjICAgICd0ZXh0JywKKyAgICAgICAgIyAgICAncGxhaW4nLAorICAgICAgICAjICAgIHsnY2hhcnNldCc6ICd1cy1hc2NpaScsICd0aXRsZSc6ICdUaGlzIGlzIG5vdCBmXHVGRkZEbid9LAorICAgICAgICAjICAgICBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdLAorICAgICAgICAjICAgICAndGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiOyB0aXRsZT0iVGhpcyBpcyBub3QgZu+/vW4iJyksCisKKyAgICAgICAgJ3JmYzIyMzFfZW5jb2RlZF9jaGFyc2V0JzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQqPWFuc2kteDMuNC0xOTY4XCdcJ3VzLWFzY2lpJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAndXMtYXNjaWknfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9InVzLWFzY2lpIicpLAorCisgICAgICAgICMgVGhpcyBmb2xsb3dzIHRoZSBSRkM6IG5vIGRvdWJsZSBxdW90ZXMgYXJvdW5kIGVuY29kZWQgdmFsdWVzLgorICAgICAgICAncmZjMjIzMV9lbmNvZGVkX25vX2RvdWJsZV9xdW90ZXMnOiAoCisgICAgICAgICAgICAoInRleHQvcGxhaW47IgorICAgICAgICAgICAgICAgICJcdG5hbWUqMCo9JydUaGlzJTIwaXMlMjA7IgorICAgICAgICAgICAgICAgICJcdG5hbWUqMSo9JTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwOyIKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjI9ImlzIGl0IG5vdC5wZGYiJyksCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeyduYW1lJzogJ1RoaXMgaXMgKioqZnVuKioqIGlzIGl0IG5vdC5wZGYnfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IG5hbWU9IlRoaXMgaXMgKioqZnVuKioqIGlzIGl0IG5vdC5wZGYiJywKKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluO1x0bmFtZSowKj1cJ1wnVGhpcyUyMGlzJTIwO1xuJworICAgICAgICAgICAgICdcdG5hbWUqMSo9JTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwO1x0bmFtZSoyPSJpcyBpdCBub3QucGRmIlxuJyksCisgICAgICAgICAgICApLAorCisgICAgICAgICMgTWFrZSBzdXJlIHdlIGFsc28gaGFuZGxlIGl0IGlmIHRoZXJlIGFyZSBzcHVycmlvdXMgZG91YmxlIHFvdXRlcy4KKyAgICAgICAgJ3JmYzIyMzFfZW5jb2RlZF93aXRoX2RvdWJsZV9xdW90ZXMnOiAoCisgICAgICAgICAgICAoInRleHQvcGxhaW47IgorICAgICAgICAgICAgICAgICdcdG5hbWUqMCo9InVzLWFzY2lpXCdcJ1RoaXMlMjBpcyUyMGV2ZW4lMjBtb3JlJTIwIjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoxKj0iJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwIjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoyPSJpcyBpdCBub3QucGRmIicpLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICdUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQgbm90LnBkZid9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IG5hbWU9IlRoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdCBub3QucGRmIicsCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjtcdCcKKyAgICAgICAgICAgICAgICAnbmFtZSowKj0idXMtYXNjaWlcJ1wnVGhpcyUyMGlzJTIwZXZlbiUyMG1vcmUlMjAiO1xuJworICAgICAgICAgICAgICdcdG5hbWUqMSo9IiUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMCI7XHRuYW1lKjI9ImlzIGl0IG5vdC5wZGYiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ3JmYzIyMzFfc2luZ2xlX3F1b3RlX2luc2lkZV9kb3VibGVfcXVvdGVzJzogKAorICAgICAgICAgICAgKCd0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpOycKKyAgICAgICAgICAgICAgICdcdHRpdGxlKjAqPSJ1cy1hc2NpaVwnZW5cJ1RoaXMlMjBpcyUyMHJlYWxseSUyMCI7JworICAgICAgICAgICAgICAgJ1x0dGl0bGUqMSo9IiUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMCI7JworICAgICAgICAgICAgICAgJ1x0dGl0bGUqMj0iaXNuXCd0IGl0ISInKSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAndXMtYXNjaWknLCAndGl0bGUnOiAiVGhpcyBpcyByZWFsbHkgKioqZnVuKioqIGlzbid0IGl0ISJ9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgKCd0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSI7ICcKKyAgICAgICAgICAgICAgICd0aXRsZT0iVGhpcyBpcyByZWFsbHkgKioqZnVuKioqIGlzblwndCBpdCEiJyksCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaTtcbicKKyAgICAgICAgICAgICAnXHR0aXRsZSowKj0idXMtYXNjaWlcJ2VuXCdUaGlzJTIwaXMlMjByZWFsbHklMjAiO1xuJworICAgICAgICAgICAgICdcdHRpdGxlKjEqPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiO1x0dGl0bGUqMj0iaXNuXCd0IGl0ISJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAncmZjMjIzMV9zaW5nbGVfcXVvdGVfaW5fdmFsdWVfd2l0aF9jaGFyc2V0X2FuZF9sYW5nJzogKAorICAgICAgICAgICAgKCdhcHBsaWNhdGlvbi94LWZvbzsnCisgICAgICAgICAgICAgICAgIlx0bmFtZSowKj1cInVzLWFzY2lpJ2VuLXVzJ0ZyYW5rJ3NcIjsgbmFtZSoxKj1cIiBEb2N1bWVudFwiIiksCisgICAgICAgICAgICAnYXBwbGljYXRpb24veC1mb28nLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uJywKKyAgICAgICAgICAgICd4LWZvbycsCisgICAgICAgICAgICB7J25hbWUnOiAiRnJhbmsncyBEb2N1bWVudCJ9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vOyBuYW1lPSJGcmFua1wncyBEb2N1bWVudCInLAorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtZm9vO1x0JworICAgICAgICAgICAgICAgICduYW1lKjAqPSJ1cy1hc2NpaVwnZW4tdXNcJ0ZyYW5rXCdzIjtcbicKKyAgICAgICAgICAgICAnIG5hbWUqMSo9IiBEb2N1bWVudCJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAncmZjMjIzMV9zaW5nbGVfcXVvdGVfaW5fbm9uX2VuY29kZWRfdmFsdWUnOiAoCisgICAgICAgICAgICAoJ2FwcGxpY2F0aW9uL3gtZm9vOycKKyAgICAgICAgICAgICAgICAiXHRuYW1lKjA9XCJ1cy1hc2NpaSdlbi11cydGcmFuaydzXCI7IG5hbWUqMT1cIiBEb2N1bWVudFwiIiksCisgICAgICAgICAgICAnYXBwbGljYXRpb24veC1mb28nLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uJywKKyAgICAgICAgICAgICd4LWZvbycsCisgICAgICAgICAgICB7J25hbWUnOiAidXMtYXNjaWknZW4tdXMnRnJhbmsncyBEb2N1bWVudCJ9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnYXBwbGljYXRpb24veC1mb287IG5hbWU9InVzLWFzY2lpXCdlbi11c1wnRnJhbmtcJ3MgRG9jdW1lbnQiJywKKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LWZvbztcdCcKKyAgICAgICAgICAgICAgICAnbmFtZSowPSJ1cy1hc2NpaVwnZW4tdXNcJ0ZyYW5rXCdzIjtcbicKKyAgICAgICAgICAgICAnIG5hbWUqMT0iIERvY3VtZW50IlxuJyksCisgICAgICAgICAgICAgKSwKKworICAgICAgICAncmZjMjIzMV9ub19sYW5ndWFnZV9vcl9jaGFyc2V0JzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IE5BTUUqMCo9ZW5nbGlzaF9pc190aGVfZGVmYXVsdC5odG1sJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J25hbWUnOiAnZW5nbGlzaF9pc190aGVfZGVmYXVsdC5odG1sJ30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IE5BTUU9ImVuZ2xpc2hfaXNfdGhlX2RlZmF1bHQuaHRtbCInKSwKKworICAgICAgICAncmZjMjIzMV9lbmNvZGVkX25vX2NoYXJzZXQnOiAoCisgICAgICAgICAgICAoInRleHQvcGxhaW47IgorICAgICAgICAgICAgICAgICdcdG5hbWUqMCo9IlwnXCdUaGlzJTIwaXMlMjBldmVuJTIwbW9yZSUyMCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMSo9IiUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMj0iaXMgaXQucGRmIicpLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICdUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQucGRmJ30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgbmFtZT0iVGhpcyBpcyBldmVuIG1vcmUgKioqZnVuKioqIGlzIGl0LnBkZiInLAorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IHRleHQvcGxhaW47XHQnCisgICAgICAgICAgICAgICAgJ25hbWUqMCo9IlwnXCdUaGlzJTIwaXMlMjBldmVuJTIwbW9yZSUyMCI7XG4nCisgICAgICAgICAgICAgJ1x0bmFtZSoxKj0iJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwIjtcdG5hbWUqMj0iaXMgaXQucGRmIlxuJyksCisgICAgICAgICAgICApLAorCisgICAgICAgICMgWFhYOiBzZWUgYmVsb3cuLi50aGUgZmlyc3QgbmFtZSBsaW5lIGhlcmUgc2hvdWxkIGJlICowIG5vdCAqMCouCisgICAgICAgICdyZmMyMjMxX3BhcnRseV9lbmNvZGVkJzogKAorICAgICAgICAgICAgKCJ0ZXh0L3BsYWluOyIKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjAqPSJcJ1wnVGhpcyUyMGlzJTIwZXZlbiUyMG1vcmUlMjAiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjEqPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjI9ImlzIGl0LnBkZiInKSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J25hbWUnOiAnVGhpcyBpcyBldmVuIG1vcmUgKioqZnVuKioqIGlzIGl0LnBkZid9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IG5hbWU9IlRoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdC5wZGYiJywKKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluO1x0JworICAgICAgICAgICAgICAgICduYW1lKjAqPSJcJ1wnVGhpcyUyMGlzJTIwZXZlbiUyMG1vcmUlMjAiO1xuJworICAgICAgICAgICAgICdcdG5hbWUqMSo9IiUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMCI7XHRuYW1lKjI9ImlzIGl0LnBkZiJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAncmZjMjIzMV9wYXJ0bHlfZW5jb2RlZF8yJzogKAorICAgICAgICAgICAgKCJ0ZXh0L3BsYWluOyIKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjAqPSJcJ1wnVGhpcyUyMGlzJTIwZXZlbiUyMG1vcmUlMjAiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjE9IiUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMj0iaXMgaXQucGRmIicpLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICdUaGlzIGlzIGV2ZW4gbW9yZSAlMkElMkElMkFmdW4lMkElMkElMkElMjBpcyBpdC5wZGYnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgbmFtZT0iVGhpcyBpcyBldmVuIG1vcmUgJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwaXMgaXQucGRmIicsCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjtcdCcKKyAgICAgICAgICAgICAgICAnbmFtZSowKj0iXCdcJ1RoaXMlMjBpcyUyMGV2ZW4lMjBtb3JlJTIwIjtcbicKKyAgICAgICAgICAgICAnXHRuYW1lKjE9IiUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMCI7XHRuYW1lKjI9ImlzIGl0LnBkZiJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAncmZjMjIzMV91bmtub3duX2NoYXJzZXRfdHJlYXRlZF9hc19hc2NpaSc6ICgKKyAgICAgICAgICAgICJ0ZXh0L3BsYWluOyBuYW1lKjAqPWJvZ3VzJ3h4J2FzY2lpX2lzX3RoZV9kZWZhdWx0IiwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J25hbWUnOiAnYXNjaWlfaXNfdGhlX2RlZmF1bHQnfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IG5hbWU9ImFzY2lpX2lzX3RoZV9kZWZhdWx0IicpLAorCisgICAgICAgICdyZmMyMjMxX2JhZF9jaGFyYWN0ZXJfaW5fY2hhcnNldF9wYXJhbWV0ZXJfdmFsdWUnOiAoCisgICAgICAgICAgICAidGV4dC9wbGFpbjsgY2hhcnNldCo9YXNjaWknJ3V0Zi04JUUyJTgwJTlEIiwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAndXRmLThcdUZGRkRcdUZGRkRcdUZGRkQnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdF0sCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLThcdUZGRkRcdUZGRkRcdUZGRkQiJyksCisKKyAgICAgICAgJ3JmYzIyMzFfZW5jb2RlZF90aGVuX3VuZW5jb2RlZF9zZWdtZW50cyc6ICgKKyAgICAgICAgICAgICgnYXBwbGljYXRpb24veC1mb287JworICAgICAgICAgICAgICAgICdcdG5hbWUqMCo9InVzLWFzY2lpXCdlbi11c1wnTXkiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjE9IiBEb2N1bWVudCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMj0iIEZvciBZb3UiJyksCisgICAgICAgICAgICAnYXBwbGljYXRpb24veC1mb28nLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uJywKKyAgICAgICAgICAgICd4LWZvbycsCisgICAgICAgICAgICB7J25hbWUnOiAnTXkgRG9jdW1lbnQgRm9yIFlvdSd9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWZvbzsgbmFtZT0iTXkgRG9jdW1lbnQgRm9yIFlvdSInLAorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtZm9vO1x0JworICAgICAgICAgICAgICAgICduYW1lKjAqPSJ1cy1hc2NpaVwnZW4tdXNcJ015IjtcbicKKyAgICAgICAgICAgICAnXHRuYW1lKjE9IiBEb2N1bWVudCI7XHRuYW1lKjI9IiBGb3IgWW91IlxuJyksCisgICAgICAgICAgICApLAorCisgICAgICAgICMgTXkgcmVhZGluZyBvZiB0aGUgUkZDIGlzIHRoYXQgdGhpcyBpcyBhbiBpbnZhbGlkIGhlYWRlci4gIFRoZSBSRkMKKyAgICAgICAgIyBzYXlzIHRoYXQgaWYgY2hhcnNldCBhbmQgbGFuZ3VhZ2UgaW5mb3JtYXRpb24gaXMgZ2l2ZW4sIHRoZSBmaXJzdAorICAgICAgICAjIHNlZ21lbnQgKm11c3QqIGJlIGVuY29kZWQuCisgICAgICAgICdyZmMyMjMxX3VuZW5jb2RlZF90aGVuX2VuY29kZWRfc2VnbWVudHMnOiAoCisgICAgICAgICAgICAoJ2FwcGxpY2F0aW9uL3gtZm9vOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjA9dXMtYXNjaWlcJ2VuLXVzXCdNeTsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoxKj0iIERvY3VtZW50IjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoyKj0iIEZvciBZb3UiJyksCisgICAgICAgICAgICAnYXBwbGljYXRpb24veC1mb28nLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uJywKKyAgICAgICAgICAgICd4LWZvbycsCisgICAgICAgICAgICB7J25hbWUnOiAnTXkgRG9jdW1lbnQgRm9yIFlvdSd9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSozLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vOyBuYW1lPSJNeSBEb2N1bWVudCBGb3IgWW91IicsCisgICAgICAgICAgICAoIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC1mb287XHRuYW1lKjA9dXMtYXNjaWknZW4tdXMnTXk7XHQiCisgICAgICAgICAgICAgICAgIyBYWFg6IHRoZSBuZXdsaW5lIGlzIGluIHRoZSB3cm9uZyBwbGFjZSwgY29tZSBiYWNrIGFuZCBmaXgKKyAgICAgICAgICAgICAgICAjIHRoaXMgd2hlbiB0aGUgcmVzdCBvZiB0ZXN0cyBwYXNzLgorICAgICAgICAgICAgICAgICduYW1lKjEqPSIgRG9jdW1lbnQiXG47JworICAgICAgICAgICAgICdcdG5hbWUqMio9IiBGb3IgWW91IlxuJyksCisgICAgICAgICAgICApLAorCisgICAgICAgICMgWFhYOiBJIHdvdWxkIHNheSB0aGlzIG9uZSBzaG91bGQgZGVmYXVsdCB0byBhc2NpaS9lbiBmb3IgdGhlCisgICAgICAgICMgImVuY29kZWQiIHNlZ21lbnQsIHNpbmNlIHRoZSBmaXJzdCBzZWdtZW50IGlzIG5vdCBlbmNvZGVkIGFuZCBpcworICAgICAgICAjIGluIGRvdWJsZSBxdW90ZXMsIG1ha2luZyB0aGUgdmFsdWUgYSB2YWxpZCBub24tZW5jb2RlZCBzdHJpbmcuICBUaGUKKyAgICAgICAgIyBvbGQgcGFyc2VyIGRlY29kZXMgdGhpcyBqdXN0IGxpa2UgdGhlIHByZXZpb3VzIGNhc2UsIHdoaWNoIG1heSBiZSB0aGUKKyAgICAgICAgIyBiZXR0ZXIgUG9zdGVsIHJ1bGUsIGJ1dCBjb3VsZCBlcXVhbGx5IHJlc3VsdCBpbiBib3JraW5nIGhlYWRlcnMgdGhhdAorICAgICAgICAjIGludGVudGlhbGx5IGhhdmUgcXVvdGVkIHF1b3RlcyBpbiB0aGVtLiAgV2UgY291bGQgZ2V0IHRoaXMgOTglIHJpZ2h0CisgICAgICAgICMgaWYgd2UgdHJlYXQgaXQgYXMgYSBxdW90ZWQgc3RyaW5nICp1bmxlc3MqIGl0IG1hdGNoZXMgdGhlCisgICAgICAgICMgY2hhcnNldCdsYW5nJ3ZhbHVlIHBhdHRlcm4gZXhhY3RseSAqYW5kKiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUKKyAgICAgICAgIyBlbmNvZGVkIHNlZ21lbnQuICBJbXBsZW1lbnRpbmcgdGhhdCBhbGdvcml0aG0gd2lsbCByZXF1aXJlIHNvbWUKKyAgICAgICAgIyByZWZhY3RvcmluZywgc28gSSBoYXZlbid0IGRvbmUgaXQgKHlldCkuCisKKyAgICAgICAgJ3JmYzIyMzFfcW91dGVkX3VuZW5jb2RlZF90aGVuX2VuY29kZWRfc2VnbWVudHMnOiAoCisgICAgICAgICAgICAoJ2FwcGxpY2F0aW9uL3gtZm9vOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjA9InVzLWFzY2lpXCdlbi11c1wnTXkiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjEqPSIgRG9jdW1lbnQiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjIqPSIgRm9yIFlvdSInKSwKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWZvbycsCisgICAgICAgICAgICAnYXBwbGljYXRpb24nLAorICAgICAgICAgICAgJ3gtZm9vJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICJ1cy1hc2NpaSdlbi11cydNeSBEb2N1bWVudCBGb3IgWW91In0sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAnYXBwbGljYXRpb24veC1mb287IG5hbWU9InVzLWFzY2lpXCdlbi11c1wnTXkgRG9jdW1lbnQgRm9yIFlvdSInLAorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtZm9vO1x0JworICAgICAgICAgICAgICAgICduYW1lKjA9InVzLWFzY2lpXCdlbi11c1wnTXkiO1xuJworICAgICAgICAgICAgICdcdG5hbWUqMSo9IiBEb2N1bWVudCI7XHRuYW1lKjIqPSIgRm9yIFlvdSJcbicpLAorICAgICAgICAgICAgKSwKKworICAgIH0KKworCitAcGFyYW1ldGVyaXplCitjbGFzcyBUZXN0Q29udGVudFRyYW5zZmVyRW5jb2RpbmcoVGVzdEhlYWRlckJhc2UpOgorCisgICAgZGVmIGN0ZV9hc192YWx1ZShzZWxmLAorICAgICAgICAgICAgICAgICAgICAgc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgY3RlLAorICAgICAgICAgICAgICAgICAgICAgKmFyZ3MpOgorICAgICAgICBsID0gbGVuKGFyZ3MpCisgICAgICAgIGRlZmVjdHMgPSAgYXJnc1swXSBpZiBsPjAgZWxzZSBbXQorICAgICAgICBkZWNvZGVkID0gIGFyZ3NbMV0gaWYgbD4xIGFuZCBhcmdzWzFdIGlzIG5vdCBESVRUTyBlbHNlIHNvdXJjZQorICAgICAgICBoZWFkZXIgPSAnQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzonICsgJyAnIGlmIHNvdXJjZSBlbHNlICcnCisgICAgICAgIGZvbGRlZCA9IGFyZ3NbMl0gaWYgbD4yIGVsc2UgaGVhZGVyICsgc291cmNlICsgJ1xuJworICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZycsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmN0ZSwgY3RlKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChoLmRlZmVjdHMsIGRlZmVjdHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgZGVjb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwgZm9sZGVkKQorCisgICAgY3RlX3BhcmFtcyA9IHsKKworICAgICAgICAnUkZDXzIxODNfMSc6ICgKKyAgICAgICAgICAgICdiYXNlNjQnLAorICAgICAgICAgICAgJ2Jhc2U2NCcsKSwKKworICAgICAgICAnbm9fdmFsdWUnOiAoCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICc3Yml0JywKKyAgICAgICAgICAgIFtlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWVdLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzpcbicsCisgICAgICAgICAgICApLAorCisgICAgICAgICdqdW5rX2FmdGVyX2N0ZSc6ICgKKyAgICAgICAgICAgICc3Yml0IGFuZCBhIGJ1bmNoIG1vcmUnLAorICAgICAgICAgICAgJzdiaXQnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICB9CisKKworQHBhcmFtZXRlcml6ZQorY2xhc3MgVGVzdENvbnRlbnREaXNwb3NpdGlvbihUZXN0SGVhZGVyQmFzZSk6CisKKyAgICBkZWYgY29udGVudF9kaXNwX2FzX3ZhbHVlKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X2Rpc3Bvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmFyZ3MpOgorICAgICAgICBsID0gbGVuKGFyZ3MpCisgICAgICAgIHBhcm1kaWN0ID0gYXJnc1swXSBpZiBsPjAgZWxzZSB7fQorICAgICAgICBkZWZlY3RzID0gIGFyZ3NbMV0gaWYgbD4xIGVsc2UgW10KKyAgICAgICAgZGVjb2RlZCA9ICBhcmdzWzJdIGlmIGw+MiBhbmQgYXJnc1syXSBpcyBub3QgRElUVE8gZWxzZSBzb3VyY2UKKyAgICAgICAgaGVhZGVyID0gJ0NvbnRlbnQtRGlzcG9zaXRpb246JyArICcgJyBpZiBzb3VyY2UgZWxzZSAnJworICAgICAgICBmb2xkZWQgPSBhcmdzWzNdIGlmIGw+MyBlbHNlIGhlYWRlciArIHNvdXJjZSArICdcbicKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCBzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5jb250ZW50X2Rpc3Bvc2l0aW9uLCBjb250ZW50X2Rpc3Bvc2l0aW9uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgucGFyYW1zLCBwYXJtZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoaC5kZWZlY3RzLCBkZWZlY3RzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsIGRlY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdCksIGZvbGRlZCkKKworICAgIGNvbnRlbnRfZGlzcF9wYXJhbXMgPSB7CisKKyAgICAgICAgIyBFeGFtcGxlcyBmcm9tIFJGQyAyMTgzLgorCisgICAgICAgICdSRkNfMjE4M18xJzogKAorICAgICAgICAgICAgJ2lubGluZScsCisgICAgICAgICAgICAnaW5saW5lJywpLAorCisgICAgICAgICdSRkNfMjE4M18yJzogKAorICAgICAgICAgICAgKCdhdHRhY2htZW50OyBmaWxlbmFtZT1nZW5vbWUuanBlZzsnCisgICAgICAgICAgICAgJyAgbW9kaWZpY2F0aW9uLWRhdGU9IldlZCwgMTIgRmViIDE5OTcgMTY6Mjk6NTEgLTA1MDAiOycpLAorICAgICAgICAgICAgJ2F0dGFjaG1lbnQnLAorICAgICAgICAgICAgeydmaWxlbmFtZSc6ICdnZW5vbWUuanBlZycsCisgICAgICAgICAgICAgJ21vZGlmaWNhdGlvbi1kYXRlJzogJ1dlZCwgMTIgRmViIDE5OTcgMTY6Mjk6NTEgLTA1MDAnfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgKCdhdHRhY2htZW50OyBmaWxlbmFtZT0iZ2Vub21lLmpwZWciOyAnCisgICAgICAgICAgICAgICAgICdtb2RpZmljYXRpb24tZGF0ZT0iV2VkLCAxMiBGZWIgMTk5NyAxNjoyOTo1MSAtMDUwMCInKSwKKyAgICAgICAgICAgICgnQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9Z2Vub21lLmpwZWc7XG4nCisgICAgICAgICAgICAgJyAgbW9kaWZpY2F0aW9uLWRhdGU9IldlZCwgMTIgRmViIDE5OTcgMTY6Mjk6NTEgLTA1MDAiO1xuJyksCisgICAgICAgICAgICApLAorCisgICAgICAgICdub192YWx1ZSc6ICgKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIHt9LAorICAgICAgICAgICAgW2Vycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZV0sCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdDb250ZW50LURpc3Bvc2l0aW9uOlxuJyksCisKKyAgICAgICAgJ2ludmFsaWRfdmFsdWUnOiAoCisgICAgICAgICAgICAnYWIuL2snLAorICAgICAgICAgICAgJ2FiLicsCisgICAgICAgICAgICB7fSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICdpbnZhbGlkX3ZhbHVlX3dpdGhfcGFyYW1zJzogKAorICAgICAgICAgICAgJ2FiLi9rOyBmaWxlbmFtZT0iZm9vIicsCisgICAgICAgICAgICAnYWIuJywKKyAgICAgICAgICAgIHsnZmlsZW5hbWUnOiAnZm9vJ30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgIH0KKworCitAcGFyYW1ldGVyaXplCitjbGFzcyBUZXN0TUlNRVZlcnNpb25IZWFkZXIoVGVzdEhlYWRlckJhc2UpOgorCisgICAgZGVmIHZlcnNpb25fc3RyaW5nX2FzX01JTUVfVmVyc2lvbihzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWpvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZWN0cyk6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdNSU1FLVZlcnNpb24nLCBzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgZGVjb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLnZlcnNpb24sIHZlcnNpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5tYWpvciwgbWFqb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5taW5vciwgbWlub3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGguZGVmZWN0cywgZGVmZWN0cykKKyAgICAgICAgaWYgc291cmNlOgorICAgICAgICAgICAgc291cmNlID0gJyAnICsgc291cmNlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAnTUlNRS1WZXJzaW9uOicgKyBzb3VyY2UgKyAnXG4nKQorCisgICAgdmVyc2lvbl9zdHJpbmdfcGFyYW1zID0geworCisgICAgICAgICMgRXhhbXBsZXMgZnJvbSB0aGUgUkZDLgorCisgICAgICAgICdSRkNfMjA0NV8xJzogKAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJ1JGQ18yMDQ1XzInOiAoCisgICAgICAgICAgICAnMS4wIChwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KScsCisgICAgICAgICAgICAnMS4wIChwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KScsCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICdSRkNfMjA0NV8zJzogKAorICAgICAgICAgICAgJyhwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KSAxLjAnLAorICAgICAgICAgICAgJyhwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KSAxLjAnLAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAnUkZDXzIwNDVfNCc6ICgKKyAgICAgICAgICAgICcxLihwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KTAnLAorICAgICAgICAgICAgJzEuKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpMCcsCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICMgT3RoZXIgdmFsaWQgdmFsdWVzLgorCisgICAgICAgICcxXzEnOiAoCisgICAgICAgICAgICAnMS4xJywKKyAgICAgICAgICAgICcxLjEnLAorICAgICAgICAgICAgJzEuMScsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAnMl8xJzogKAorICAgICAgICAgICAgJzIuMScsCisgICAgICAgICAgICAnMi4xJywKKyAgICAgICAgICAgICcyLjEnLAorICAgICAgICAgICAgMiwKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJ3doaXRlc3BhY2UnOiAoCisgICAgICAgICAgICAnMSAuMCcsCisgICAgICAgICAgICAnMSAuMCcsCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICdsZWFkaW5nX3RyYWlsaW5nX3doaXRlc3BhY2VfaWdub3JlZCc6ICgKKyAgICAgICAgICAgICcgIDEuMCAgJywKKyAgICAgICAgICAgICcgIDEuMCAgJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgIyBSZWNvdmVyYWJsZSBpbnZhbGlkIHZhbHVlcy4gIFdlIGNhbiByZWNvdmVyIGhlcmUgb25seSBiZWNhdXNlIHdlCisgICAgICAgICMgYWxyZWFkeSBoYXZlIGEgdmFsaWQgdmFsdWUgYnkgdGhlIHRpbWUgd2UgZW5jb3VudGVyIHRoZSBnYXJiYWdlLgorICAgICAgICAjIEFueXdoZXJlIGVsc2UsIGFuZCB3ZSBkb24ndCBrbm93IHdoZXJlIHRoZSBnYXJiYWdlIGVuZHMuCisKKyAgICAgICAgJ25vbl9jb21tZW50X2dhcmJhZ2VfYWZ0ZXInOiAoCisgICAgICAgICAgICAnMS4wIDxhYmM+JywKKyAgICAgICAgICAgICcxLjAgPGFiYz4nLAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICMgVW5yZWNvdmVyYWJsZSBpbnZhbGlkIHZhbHVlcy4gIFdlICpjb3VsZCogYXBwbHkgbW9yZSBoZXVyaXN0aWNzIHRvCisgICAgICAgICMgZ2V0IHNvbWVpbmcgb3V0IG9mIHRoZSBmaXJzdCB0d28sIGJ1dCBkb2luZyBzbyBpcyBub3Qgd29ydGggdGhlCisgICAgICAgICMgZWZmb3J0LgorCisgICAgICAgICdub25fY29tbWVudF9nYXJiYWdlX2JlZm9yZSc6ICgKKyAgICAgICAgICAgICc8YWJjPiAxLjAnLAorICAgICAgICAgICAgJzxhYmM+IDEuMCcsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgICAgICAnbm9uX2NvbW1lbnRfZ2FyYmFnZV9pbnNpZGUnOiAoCisgICAgICAgICAgICAnMS48YWJjPjAnLAorICAgICAgICAgICAgJzEuPGFiYz4wJywKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICd0d29fcGVyaW9kcyc6ICgKKyAgICAgICAgICAgICcxLi4wJywKKyAgICAgICAgICAgICcxLi4wJywKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICcyX3gnOiAoCisgICAgICAgICAgICAnMi54JywKKyAgICAgICAgICAgICcyLngnLAorICAgICAgICAgICAgTm9uZSwgICMgVGhpcyBjb3VsZCBiZSAyLCBidXQgaXQgc2VlbXMgc2FmZXIgdG8gbWFrZSBpdCBOb25lLgorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgICAgICAnZm9vJzogKAorICAgICAgICAgICAgJ2ZvbycsCisgICAgICAgICAgICAnZm9vJywKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICdtaXNzaW5nJzogKAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIFtlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWVdKSwKKworICAgICAgICB9CisKKworQHBhcmFtZXRlcml6ZQorY2xhc3MgVGVzdEFkZHJlc3NIZWFkZXIoVGVzdEhlYWRlckJhc2UpOgorCisgICAgZXhhbXBsZV9wYXJhbXMgPSB7CisKKyAgICAgICAgJ2VtcHR5JzoKKyAgICAgICAgICAgICgnPD4nLAorICAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAgJzw+JywKKyAgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICAnPD4nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICdhZGRyZXNzX29ubHknOgorICAgICAgICAgICAgKCd6aXBweUBwaW5oZWFkLmNvbScsCisgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgJ3ppcHB5QHBpbmhlYWQuY29tJywKKyAgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICAnemlwcHlAcGluaGVhZC5jb20nLAorICAgICAgICAgICAgICd6aXBweScsCisgICAgICAgICAgICAgJ3BpbmhlYWQuY29tJywKKyAgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAnbmFtZV9hbmRfYWRkcmVzcyc6CisgICAgICAgICAgICAoJ1phcGhyb2QgQmVibGVicnV4IDx6aXBweUBwaW5oZWFkLmNvbT4nLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICdaYXBocm9kIEJlYmxlYnJ1eCA8emlwcHlAcGluaGVhZC5jb20+JywKKyAgICAgICAgICAgICAnWmFwaHJvZCBCZWJsZWJydXgnLAorICAgICAgICAgICAgICd6aXBweUBwaW5oZWFkLmNvbScsCisgICAgICAgICAgICAgJ3ppcHB5JywKKyAgICAgICAgICAgICAncGluaGVhZC5jb20nLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICdxdW90ZWRfbG9jYWxfcGFydCc6CisgICAgICAgICAgICAoJ1phcGhyb2QgQmVibGVicnV4IDwiZm9vIGJhciJAcGluaGVhZC5jb20+JywKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAnWmFwaHJvZCBCZWJsZWJydXggPCJmb28gYmFyIkBwaW5oZWFkLmNvbT4nLAorICAgICAgICAgICAgICdaYXBocm9kIEJlYmxlYnJ1eCcsCisgICAgICAgICAgICAgJyJmb28gYmFyIkBwaW5oZWFkLmNvbScsCisgICAgICAgICAgICAgJ2ZvbyBiYXInLAorICAgICAgICAgICAgICdwaW5oZWFkLmNvbScsCisgICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ3F1b3RlZF9wYXJlbnNfaW5fbmFtZSc6CisgICAgICAgICAgICAociciQSBcKFNwZWNpYWxcKSBQZXJzb24iIDxwZXJzb25AZG9tLmFpbj4nLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICciQSAoU3BlY2lhbCkgUGVyc29uIiA8cGVyc29uQGRvbS5haW4+JywKKyAgICAgICAgICAgICAnQSAoU3BlY2lhbCkgUGVyc29uJywKKyAgICAgICAgICAgICAncGVyc29uQGRvbS5haW4nLAorICAgICAgICAgICAgICdwZXJzb24nLAorICAgICAgICAgICAgICdkb20uYWluJywKKyAgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAncXVvdGVkX2JhY2tzbGFzaGVzX2luX25hbWUnOgorICAgICAgICAgICAgKHInIkFydGh1ciBcXEJhY2tzbGFzaFxcIEZvb2JhciIgPHBlcnNvbkBkb20uYWluPicsCisgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgciciQXJ0aHVyIFxcQmFja3NsYXNoXFwgRm9vYmFyIiA8cGVyc29uQGRvbS5haW4+JywKKyAgICAgICAgICAgICByJ0FydGh1ciBcQmFja3NsYXNoXCBGb29iYXInLAorICAgICAgICAgICAgICdwZXJzb25AZG9tLmFpbicsCisgICAgICAgICAgICAgJ3BlcnNvbicsCisgICAgICAgICAgICAgJ2RvbS5haW4nLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICduYW1lX3dpdGhfZG90JzoKKyAgICAgICAgICAgICgnSm9obiBYLiBEb2UgPGp4ZEBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgICciSm9obiBYLiBEb2UiIDxqeGRAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgICAnSm9obiBYLiBEb2UnLAorICAgICAgICAgICAgICdqeGRAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICdqeGQnLAorICAgICAgICAgICAgICdleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ3F1b3RlZF9zdHJpbmdzX2luX2xvY2FsX3BhcnQnOgorICAgICAgICAgICAgKCciImV4YW1wbGUiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjMsCisgICAgICAgICAgICAgJyJleGFtcGxlIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICAnImV4YW1wbGUgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICdleGFtcGxlIGV4YW1wbGUnLAorICAgICAgICAgICAgICdleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ2VzY2FwZWRfcXVvdGVkX3N0cmluZ3NfaW5fbG9jYWxfcGFydCc6CisgICAgICAgICAgICAociciXCJleGFtcGxlXCIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgIHInIlwiZXhhbXBsZVwiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICByJyJcImV4YW1wbGVcIiBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgciciZXhhbXBsZSIgZXhhbXBsZScsCisgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICdlc2NhcGVkX2VzY2FwZXNfaW5fbG9jYWxfcGFydCc6CisgICAgICAgICAgICAociciXFwiZXhhbXBsZVxcIiBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSo1LAorICAgICAgICAgICAgIHInIlxcZXhhbXBsZVxcXFwgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgIHInIlxcZXhhbXBsZVxcXFwgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgIHInXGV4YW1wbGVcXCBleGFtcGxlJywKKyAgICAgICAgICAgICAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ3NwYWNlc19pbl91bnF1b3RlZF9sb2NhbF9wYXJ0X2NvbGxhcHNlZCc6CisgICAgICAgICAgICAoJ21lcndvayAgd29rICBAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICAnIm1lcndvayB3b2siQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICAnIm1lcndvayB3b2siQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAnbWVyd29rIHdvaycsCisgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAnc3BhY2VzX2Fyb3VuZF9kb3RzX2luX2xvY2FsX3BhcnRfcmVtb3ZlZCc6CisgICAgICAgICAgICAoJ21lcndvay4gd29rIC4gIHdva0BleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAgJ21lcndvay53b2sud29rQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICAnbWVyd29rLndvay53b2tAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICdtZXJ3b2sud29rLndvaycsCisgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICBOb25lKSwKKworICAgICAgICB9CisKKyAgICAgICAgIyBYWFg6IE5lZWQgbWFueSBtb3JlIGV4YW1wbGVzLCBhbmQgaW4gcGFydGljdWxhciBzb21lIHdpdGggbmFtZXMgaW4KKyAgICAgICAgIyB0cmFpbGluZyBjb21tZW50cywgd2hpY2ggYXJlbid0IGN1cnJlbnRseSBoYW5kbGVkLiAgY29tbWVudHMgaW4KKyAgICAgICAgIyBnZW5lcmFsIGFyZSBub3QgaGFuZGxlZCB5ZXQuCisKKyAgICBkZWYgZXhhbXBsZV9hc19hZGRyZXNzKHNlbGYsIHNvdXJjZSwgZGVmZWN0cywgZGVjb2RlZCwgZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcl9zcGVjLCB1c2VybmFtZSwgZG9tYWluLCBjb21tZW50KToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3NlbmRlcicsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCBkZWNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChoLmRlZmVjdHMsIGRlZmVjdHMpCisgICAgICAgIGEgPSBoLmFkZHJlc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksIGRlY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguZ3JvdXBzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbYV0sIGxpc3QoaC5ncm91cHNbMF0uYWRkcmVzc2VzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbYV0sIGxpc3QoaC5hZGRyZXNzZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCBkaXNwbGF5X25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsIGFkZHJfc3BlYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCB1c2VybmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgZG9tYWluKQorICAgICAgICAjIFhYWDogd2UgaGF2ZSBubyBjb21tZW50IHN1cHBvcnQgeWV0LgorICAgICAgICAjc2VsZi5hc3NlcnRFcXVhbChhLmNvbW1lbnQsIGNvbW1lbnQpCisKKyAgICBkZWYgZXhhbXBsZV9hc19ncm91cChzZWxmLCBzb3VyY2UsIGRlZmVjdHMsIGRlY29kZWQsIGRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyX3NwZWMsIHVzZXJuYW1lLCBkb21haW4sIGNvbW1lbnQpOgorICAgICAgICBzb3VyY2UgPSAnZm9vOiB7fTsnLmZvcm1hdChzb3VyY2UpCisgICAgICAgIGdkZWNvZGVkID0gJ2Zvbzoge307Jy5mb3JtYXQoZGVjb2RlZCkgaWYgZGVjb2RlZCBlbHNlICdmb286OycKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3RvJywgc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsIGdkZWNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChoLmRlZmVjdHMsIGRlZmVjdHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5ncm91cHNbMF0uYWRkcmVzc2VzLCBoLmFkZHJlc3NlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaC5ncm91cHMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoLmFkZHJlc3NlcyksIDEpCisgICAgICAgIGEgPSBoLmFkZHJlc3Nlc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhKSwgZGVjb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgZGlzcGxheV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCBhZGRyX3NwZWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgdXNlcm5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sIGRvbWFpbikKKworICAgIGRlZiB0ZXN0X3NpbXBsZV9hZGRyZXNzX2xpc3Qoc2VsZik6CisgICAgICAgIHZhbHVlID0gKCdGcmVkIDxkaW5zZGFsZUBweXRob24ub3JnPiwgZm9vQGV4YW1wbGUuY29tLCAnCisgICAgICAgICAgICAgICAgICAgICciSGFycnkgVy4gSGFzdGluZ3MiIDxoYXN0eUBleGFtcGxlLmNvbT4nKQorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcigndG8nLCB2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCB2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaC5ncm91cHMpLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoLmFkZHJlc3NlcyksIDMpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDMpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmdyb3Vwc1tpXS5hZGRyZXNzZXNbMF0sIGguYWRkcmVzc2VzW2ldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihoLmFkZHJlc3Nlc1swXSksICdGcmVkIDxkaW5zZGFsZUBweXRob24ub3JnPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGguYWRkcmVzc2VzWzFdKSwgJ2Zvb0BleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGguYWRkcmVzc2VzWzJdKSwKKyAgICAgICAgICAgICciSGFycnkgVy4gSGFzdGluZ3MiIDxoYXN0eUBleGFtcGxlLmNvbT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguYWRkcmVzc2VzWzJdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICdIYXJyeSBXLiBIYXN0aW5ncycpCisKKyAgICBkZWYgdGVzdF9jb21wbGV4X2FkZHJlc3NfbGlzdChzZWxmKToKKyAgICAgICAgZXhhbXBsZXMgPSBsaXN0KHNlbGYuZXhhbXBsZV9wYXJhbXMudmFsdWVzKCkpCisgICAgICAgIHNvdXJjZSA9ICgnZHVtbXkgbGlzdDo7LCBhbm90aGVyOiAoZW1wdHkpOywnICsKKyAgICAgICAgICAgICAgICAgJywgJy5qb2luKFt4WzBdIGZvciB4IGluIGV4YW1wbGVzWzo0XV0pICsgJywgJyArCisgICAgICAgICAgICAgICAgIHInIkEgXCJsaXN0XCIiOiAnICsKKyAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKFt4WzBdIGZvciB4IGluIGV4YW1wbGVzWzQ6Nl1dKSArICc7LCcgKworICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oW3hbMF0gZm9yIHggaW4gZXhhbXBsZXNbNjpdXSkKKyAgICAgICAgICAgICkKKyAgICAgICAgIyBYWFg6IHRoZSBmYWN0IHRoYXQgKGVtcHR5KSBkaXNhcHBlYXJzIGhlcmUgaXMgYSBwb3RlbnRpYWwgQVBJIGRlc2lnbgorICAgICAgICAjIGJ1Zy4gIFdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGEgd2F5IHRvIHByZXNlcnZlIGNvbW1lbnRzLgorICAgICAgICBleHBlY3RlZCA9ICgnZHVtbXkgbGlzdDo7LCBhbm90aGVyOjssICcgKworICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oW3hbMl0gZm9yIHggaW4gZXhhbXBsZXNbOjRdXSkgKyAnLCAnICsKKyAgICAgICAgICAgICAgICAgciciQSBcImxpc3RcIiI6ICcgKworICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oW3hbMl0gZm9yIHggaW4gZXhhbXBsZXNbNDo2XV0pICsgJzssICcgKworICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oW3hbMl0gZm9yIHggaW4gZXhhbXBsZXNbNjpdXSkKKyAgICAgICAgICAgICkKKworICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcigndG8nLCBzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5zcGxpdCgnLCcpLCBleHBlY3RlZC5zcGxpdCgnLCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoLmdyb3VwcyksIDcgKyBsZW4oZXhhbXBsZXMpIC0gNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmdyb3Vwc1swXS5kaXNwbGF5X25hbWUsICdkdW1teSBsaXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmdyb3Vwc1sxXS5kaXNwbGF5X25hbWUsICdhbm90aGVyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmdyb3Vwc1s2XS5kaXNwbGF5X25hbWUsICdBICJsaXN0IicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguYWRkcmVzc2VzKSwgbGVuKGV4YW1wbGVzKSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShoLmdyb3Vwc1tpKzJdLmRpc3BsYXlfbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGguZ3JvdXBzW2krMl0uYWRkcmVzc2VzWzBdKSwgZXhhbXBsZXNbaV1bMl0pCisgICAgICAgIGZvciBpIGluIHJhbmdlKDcsIDcgKyBsZW4oZXhhbXBsZXMpIC0gNik6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShoLmdyb3Vwc1tpXS5kaXNwbGF5X25hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihoLmdyb3Vwc1tpXS5hZGRyZXNzZXNbMF0pLCBleGFtcGxlc1tpLTFdWzJdKQorICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oZXhhbXBsZXMpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGguYWRkcmVzc2VzW2ldKSwgZXhhbXBsZXNbaV1bMl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguYWRkcmVzc2VzW2ldLmFkZHJfc3BlYywgZXhhbXBsZXNbaV1bNF0pCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX3JlYWRfb25seShzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3NlbmRlcicsICdhYmNAeHl6LmNvbScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgaC5hZGRyZXNzID0gJ2ZvbycKKworICAgIGRlZiB0ZXN0X2FkZHJlc3Nlc19yZWFkX29ubHkoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdzZW5kZXInLCAnYWJjQHh5ei5jb20nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGguYWRkcmVzc2VzID0gJ2ZvbycKKworICAgIGRlZiB0ZXN0X2dyb3Vwc19yZWFkX29ubHkoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdzZW5kZXInLCAnYWJjQHh5ei5jb20nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGguZ3JvdXBzID0gJ2ZvbycKKworICAgIGRlZiB0ZXN0X2FkZHJlc3Nlc190eXBlcyhzZWxmKToKKyAgICAgICAgc291cmNlID0gJ21lIDx3aG9AZXhhbXBsZS5jb20+JworICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcigndG8nLCBzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmFkZHJlc3NlcywgdHVwbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmFkZHJlc3Nlc1swXSwgQWRkcmVzcykKKworICAgIGRlZiB0ZXN0X2dyb3Vwc190eXBlcyhzZWxmKToKKyAgICAgICAgc291cmNlID0gJ21lIDx3aG9AZXhhbXBsZS5jb20+JworICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcigndG8nLCBzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmdyb3VwcywgdHVwbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmdyb3Vwc1swXSwgR3JvdXApCisKKyAgICBkZWYgdGVzdF9zZXRfZnJvbV9BZGRyZXNzKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcigndG8nLCBBZGRyZXNzKCdtZScsICdmb28nLCAnZXhhbXBsZS5jb20nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCAnbWUgPGZvb0BleGFtcGxlLmNvbT4nKQorCisgICAgZGVmIHRlc3Rfc2V0X2Zyb21fQWRkcmVzc19saXN0KHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcigndG8nLCBbQWRkcmVzcygnbWUnLCAnZm9vJywgJ2V4YW1wbGUuY29tJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzKCd5b3UnLCAnYmFyJywgJ2V4YW1wbGUuY29tJyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsICdtZSA8Zm9vQGV4YW1wbGUuY29tPiwgeW91IDxiYXJAZXhhbXBsZS5jb20+JykKKworICAgIGRlZiB0ZXN0X3NldF9mcm9tX0FkZHJlc3NfYW5kX0dyb3VwX2xpc3Qoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIFtBZGRyZXNzKCdtZScsICdmb28nLCAnZXhhbXBsZS5jb20nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwKCdiaW5nJywgW0FkZHJlc3MoJ2ZpeicsICd6JywgJ2IuY29tJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzKCd6aWYnLCAnZicsICdjLmNvbScpXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzKCd5b3UnLCAnYmFyJywgJ2V4YW1wbGUuY29tJyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsICdtZSA8Zm9vQGV4YW1wbGUuY29tPiwgYmluZzogZml6IDx6QGIuY29tPiwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd6aWYgPGZAYy5jb20+OywgeW91IDxiYXJAZXhhbXBsZS5jb20+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0LmNsb25lKG1heF9saW5lX2xlbmd0aD00MCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3RvOiBtZSA8Zm9vQGV4YW1wbGUuY29tPixcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICcgYmluZzogZml6IDx6QGIuY29tPiwgemlmIDxmQGMuY29tPjssXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnIHlvdSA8YmFyQGV4YW1wbGUuY29tPlxuJykKKworICAgIGRlZiB0ZXN0X3NldF9mcm9tX0dyb3VwX2xpc3Qoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIFtHcm91cCgnYmluZycsIFtBZGRyZXNzKCdmaXonLCAneicsICdiLmNvbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcygnemlmJywgJ2YnLCAnYy5jb20nKV0pXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCAnYmluZzogZml6IDx6QGIuY29tPiwgemlmIDxmQGMuY29tPjsnKQorCisKK2NsYXNzIFRlc3RBZGRyZXNzQW5kR3JvdXAoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBkZWYgX3Rlc3RfYXR0cl9ybyhzZWxmLCBvYmosIGF0dHIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHNldGF0dHIob2JqLCBhdHRyLCAnZm9vJykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfZGlzcGxheV9uYW1lX3JvKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0dHJfcm8oQWRkcmVzcygnZm9vJywgJ2JhcicsICdiYXonKSwgJ2Rpc3BsYXlfbmFtZScpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX3VzZXJuYW1lX3JvKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0dHJfcm8oQWRkcmVzcygnZm9vJywgJ2JhcicsICdiYXonKSwgJ3VzZXJuYW1lJykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfZG9tYWluX3JvKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0dHJfcm8oQWRkcmVzcygnZm9vJywgJ2JhcicsICdiYXonKSwgJ2RvbWFpbicpCisKKyAgICBkZWYgdGVzdF9ncm91cF9kaXNwbGF5X25hbWVfcm8oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXR0cl9ybyhHcm91cCgnZm9vJyksICdkaXNwbGF5X25hbWUnKQorCisgICAgZGVmIHRlc3RfZ3JvdXBfYWRkcmVzc2VzX3JvKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0dHJfcm8oR3JvdXAoJ2ZvbycpLCAnYWRkcmVzc2VzJykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfZnJvbV91c2VybmFtZV9kb21haW4oc2VsZik6CisgICAgICAgIGEgPSBBZGRyZXNzKCdmb28nLCAnYmFyJywgJ2JheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudXNlcm5hbWUsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZG9tYWluLCAnYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmFkZHJfc3BlYywgJ2JhckBiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhKSwgJ2ZvbyA8YmFyQGJhej4nKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19mcm9tX2FkZHJfc3BlYyhzZWxmKToKKyAgICAgICAgYSA9IEFkZHJlc3MoJ2ZvbycsIGFkZHJfc3BlYz0nYmFyQGJheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudXNlcm5hbWUsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZG9tYWluLCAnYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmFkZHJfc3BlYywgJ2JhckBiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhKSwgJ2ZvbyA8YmFyQGJhej4nKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc193aXRoX25vX2Rpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgYSA9IEFkZHJlc3MoYWRkcl9zcGVjPSdiYXJAYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICdiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnYmFyQGJheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnYmFyQGJheicpCisKKyAgICBkZWYgdGVzdF9udWxsX2FkZHJlc3Moc2VsZik6CisgICAgICAgIGEgPSBBZGRyZXNzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnPD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhKSwgJzw+JykKKworICAgIGRlZiB0ZXN0X2RvbWFpbl9vbmx5KHNlbGYpOgorICAgICAgICAjIFRoaXMgaXNuJ3QgcmVhbGx5IGEgdmFsaWQgYWRkcmVzcy4KKyAgICAgICAgYSA9IEFkZHJlc3MoZG9tYWluPSdidXp6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICdidXp6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmFkZHJfc3BlYywgJ0BidXp6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksICdAYnV6eicpCisKKyAgICBkZWYgdGVzdF91c2VybmFtZV9vbmx5KHNlbGYpOgorICAgICAgICAjIFRoaXMgaXNuJ3QgcmVhbGx5IGEgdmFsaWQgYWRkcmVzcy4KKyAgICAgICAgYSA9IEFkZHJlc3ModXNlcm5hbWU9J2J1enonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnYnV6eicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnYnV6eicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnYnV6eicpCisKKyAgICBkZWYgdGVzdF9kaXNwbGF5X25hbWVfb25seShzZWxmKToKKyAgICAgICAgYSA9IEFkZHJlc3MoJ2J1enonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCAnYnV6eicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnPD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhKSwgJ2J1enogPD4nKQorCisgICAgZGVmIHRlc3RfcXVvdGluZyhzZWxmKToKKyAgICAgICAgIyBJZGVhbGx5IHdlJ2QgY2hlY2sgZXZlcnkgc3BlY2lhbCBpbmRpdmlkdWFsbHksIGJ1dCBJJ20gbm90IHVwIGZvcgorICAgICAgICAjIHdyaXRpbmcgdGhhdCBtYW55IHRlc3RzLgorICAgICAgICBhID0gQWRkcmVzcygnU2FyYSBKLicsICdiYWQgbmFtZScsICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsICdTYXJhIEouJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnYmFkIG5hbWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnImJhZCBuYW1lIkBleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnIlNhcmEgSi4iIDwiYmFkIG5hbWUiQGV4YW1wbGUuY29tPicpCisKKyAgICBkZWYgdGVzdF9pbDhuKHNlbGYpOgorICAgICAgICBhID0gQWRkcmVzcygnw4lyaWMnLCAnd29rJywgJ2V4w6BtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsICfDiXJpYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgJ3dvaycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICdleMOgbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnd29rQGV4w6BtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnw4lyaWMgPHdva0BleMOgbXBsZS5jb20+JykKKworICAgICMgWFhYOiB0aGVyZSBpcyBhbiBBUEkgZGVzaWduIGlzc3VlIHRoYXQgbmVlZHMgdG8gYmUgc29sdmVkIGhlcmUuCisgICAgI2RlZiB0ZXN0X25vbl9hc2NpaV91c2VybmFtZV9yYWlzZXMoc2VsZik6CisgICAgIyAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICMgICAgICAgIEFkZHJlc3MoJ2ZvbycsICd3xZFrJywgJ2V4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X25vbl9hc2NpaV91c2VybmFtZV9pbl9hZGRyX3NwZWNfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgQWRkcmVzcygnZm9vJywgYWRkcl9zcGVjPSd3xZFrQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfYWRkcl9zcGVjX2FuZF91c2VybmFtZV9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIEFkZHJlc3MoJ2ZvbycsIHVzZXJuYW1lPSdiaW5nJywgYWRkcl9zcGVjPSdiYXJAYmF6JykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfYWRkcl9zcGVjX2FuZF9kb21haW5fcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBBZGRyZXNzKCdmb28nLCBkb21haW49J2JpbmcnLCBhZGRyX3NwZWM9J2JhckBiYXonKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19hZGRyX3NwZWNfYW5kX3VzZXJuYW1lX2FuZF9kb21haW5fcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBBZGRyZXNzKCdmb28nLCB1c2VybmFtZT0nYm9uZycsIGRvbWFpbj0nYmluZycsIGFkZHJfc3BlYz0nYmFyQGJheicpCisKKyAgICBkZWYgdGVzdF9zcGFjZV9pbl9hZGRyX3NwZWNfdXNlcm5hbWVfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgQWRkcmVzcygnZm9vJywgYWRkcl9zcGVjPSJiYWQgbmFtZUBleGFtcGxlLmNvbSIpCisKKyAgICBkZWYgdGVzdF9iYWRfYWRkcl9zZXBjX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIEFkZHJlc3MoJ2ZvbycsIGFkZHJfc3BlYz0ibmFtZUBleFtdYW1wbGUuY29tIikKKworICAgIGRlZiB0ZXN0X2VtcHR5X2dyb3VwKHNlbGYpOgorICAgICAgICBnID0gR3JvdXAoJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5kaXNwbGF5X25hbWUsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJ2Zvbzo7JykKKworICAgIGRlZiB0ZXN0X2VtcHR5X2dyb3VwX2xpc3Qoc2VsZik6CisgICAgICAgIGcgPSBHcm91cCgnZm9vJywgYWRkcmVzc2VzPVtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuZGlzcGxheV9uYW1lLCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmFkZHJlc3NlcywgdHVwbGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZyksICdmb286OycpCisKKyAgICBkZWYgdGVzdF9udWxsX2dyb3VwKHNlbGYpOgorICAgICAgICBnID0gR3JvdXAoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnLmRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmFkZHJlc3NlcywgdHVwbGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZyksICdOb25lOjsnKQorCisgICAgZGVmIHRlc3RfZ3JvdXBfd2l0aF9hZGRyZXNzZXMoc2VsZik6CisgICAgICAgIGFkZHJzID0gW0FkZHJlc3MoJ2InLCAnYicsICdjJyksIEFkZHJlc3MoJ2EnLCAnYicsJ2MnKV0KKyAgICAgICAgZyA9IEdyb3VwKCdmb28nLCBhZGRycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmRpc3BsYXlfbmFtZSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5hZGRyZXNzZXMsIHR1cGxlKGFkZHJzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZyksICdmb286IGIgPGJAYz4sIGEgPGJAYz47JykKKworICAgIGRlZiB0ZXN0X2dyb3VwX3dpdGhfYWRkcmVzc2VzX25vX2Rpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgYWRkcnMgPSBbQWRkcmVzcygnYicsICdiJywgJ2MnKSwgQWRkcmVzcygnYScsICdiJywnYycpXQorICAgICAgICBnID0gR3JvdXAoYWRkcmVzc2VzPWFkZHJzKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnLmRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmFkZHJlc3NlcywgdHVwbGUoYWRkcnMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJ05vbmU6IGIgPGJAYz4sIGEgPGJAYz47JykKKworICAgIGRlZiB0ZXN0X2dyb3VwX3dpdGhfb25lX2FkZHJlc3Nfbm9fZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICBhZGRycyA9IFtBZGRyZXNzKCdiJywgJ2InLCAnYycpXQorICAgICAgICBnID0gR3JvdXAoYWRkcmVzc2VzPWFkZHJzKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnLmRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmFkZHJlc3NlcywgdHVwbGUoYWRkcnMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJ2IgPGJAYz4nKQorCisgICAgZGVmIHRlc3RfZGlzcGxheV9uYW1lX3F1b3Rpbmcoc2VsZik6CisgICAgICAgIGcgPSBHcm91cCgnZm9vLmJhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5kaXNwbGF5X25hbWUsICdmb28uYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmFkZHJlc3NlcywgdHVwbGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZyksICciZm9vLmJhciI6OycpCisKKyAgICBkZWYgdGVzdF9kaXNwbGF5X25hbWVfYmxhbmtzX25vdF9xdW90ZWQoc2VsZik6CisgICAgICAgIGcgPSBHcm91cCgnZm9vIGJhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5kaXNwbGF5X25hbWUsICdmb28gYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmFkZHJlc3NlcywgdHVwbGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZyksICdmb28gYmFyOjsnKQorCisgICAgZGVmIHRlc3Rfc2V0X21lc3NhZ2VfaGVhZGVyX2Zyb21fYWRkcmVzcyhzZWxmKToKKyAgICAgICAgYSA9IEFkZHJlc3MoJ2ZvbycsICdiYXInLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBtID0gTWVzc2FnZShwb2xpY3k9cG9saWN5LmRlZmF1bHQpCisgICAgICAgIG1bJ1RvJ10gPSBhCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsndG8nXSwgJ2ZvbyA8YmFyQGV4YW1wbGUuY29tPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsndG8nXS5hZGRyZXNzZXMsIChhLCkpCisKKyAgICBkZWYgdGVzdF9zZXRfbWVzc2FnZV9oZWFkZXJfZnJvbV9ncm91cChzZWxmKToKKyAgICAgICAgZyA9IEdyb3VwKCdmb28gYmFyJykKKyAgICAgICAgbSA9IE1lc3NhZ2UocG9saWN5PXBvbGljeS5kZWZhdWx0KQorICAgICAgICBtWydUbyddID0gZworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ3RvJ10sICdmb28gYmFyOjsnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ3RvJ10uYWRkcmVzc2VzLCBnLmFkZHJlc3NlcykKKworCitjbGFzcyBUZXN0Rm9sZGluZyhUZXN0SGVhZGVyQmFzZSk6CisKKyAgICBkZWYgdGVzdF9zaG9ydF91bnN0cnVjdHVyZWQoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdzdWJqZWN0JywgJ3RoaXMgaXMgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3ViamVjdDogdGhpcyBpcyBhIHRlc3RcbicpCisKKyAgICBkZWYgdGVzdF9sb25nX3Vuc3RydWN0dXJlZChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ1N1YmplY3QnLCAnVGhpcyBpcyBhIGxvbmcgaGVhZGVyICcKKyAgICAgICAgICAgICdsaW5lIHRoYXQgd2lsbCBuZWVkIHRvIGJlIGZvbGRlZCBpbnRvIHR3byBsaW5lcyAnCisgICAgICAgICAgICAnYW5kIHdpbGwgZGVtb25zdHJhdGUgYmFzaWMgZm9sZGluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAnU3ViamVjdDogVGhpcyBpcyBhIGxvbmcgaGVhZGVyIGxpbmUgdGhhdCB3aWxsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCB0byBiZSBmb2xkZWQgaW50byB0d28gbGluZXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICcgYW5kIHdpbGwgZGVtb25zdHJhdGUgYmFzaWMgZm9sZGluZ1xuJykKKworICAgIGRlZiB0ZXN0X3Vuc3RydWN0dXJlZF9zaG9ydF9tYXhfbGluZV9sZW5ndGgoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdTdWJqZWN0JywgJ3RoaXMgaXMgYSBzaG9ydCBoZWFkZXIgJworICAgICAgICAgICAgJ3RoYXQgd2lsbCBiZSBmb2xkZWQgYW55d2F5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTIwKSksCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgICAgIFN1YmplY3Q6IHRoaXMgaXMgYQorICAgICAgICAgICAgICAgICBzaG9ydCBoZWFkZXIgdGhhdAorICAgICAgICAgICAgICAgICB3aWxsIGJlIGZvbGRlZAorICAgICAgICAgICAgICAgICBhbnl3YXkKKyAgICAgICAgICAgICAgICAiIiIpKQorCisgICAgZGVmIHRlc3RfZm9sZF91bnN0cnVjdHVyZWRfc2luZ2xlX3dvcmQoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdTdWJqZWN0JywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQpLCAnU3ViamVjdDogdGVzdFxuJykKKworICAgIGRlZiB0ZXN0X2ZvbGRfdW5zdHJ1Y3R1cmVkX3Nob3J0KHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignU3ViamVjdCcsICd0ZXN0IHRlc3QgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAnU3ViamVjdDogdGVzdCB0ZXN0IHRlc3RcbicpCisKKyAgICBkZWYgdGVzdF9mb2xkX3Vuc3RydWN0dXJlZF93aXRoX292ZXJsb25nX3dvcmQoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdTdWJqZWN0JywgJ3RoaXNpc2F2ZXJ5bG9uZ2xpbmVjb25zaXN0aW5nb2ZhJworICAgICAgICAgICAgJ3NpbmdsZXdvcmR0aGF0d29udGZpdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0LmNsb25lKG1heF9saW5lX2xlbmd0aD0yMCkpLAorICAgICAgICAgICAgJ1N1YmplY3Q6IHRoaXNpc2F2ZXJ5bG9uZ2xpbmVjb25zaXN0aW5nb2Zhc2luZ2xld29yZHRoYXR3b250Zml0XG4nKQorCisgICAgZGVmIHRlc3RfZm9sZF91bnN0cnVjdHVyZWRfd2l0aF90d29fb3Zlcmxvbmdfd29yZHMoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdTdWJqZWN0JywgJ3RoaXNpc2F2ZXJ5bG9uZ2xpbmVjb25zaXN0aW5nb2ZhJworICAgICAgICAgICAgJ3NpbmdsZXdvcmR0aGF0d29udGZpdCBwbHVzYW5vdGhlcnZlcnlsb25nd29yZHRoYXR3b250Zml0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTIwKSksCisgICAgICAgICAgICAnU3ViamVjdDogdGhpc2lzYXZlcnlsb25nbGluZWNvbnNpc3RpbmdvZmFzaW5nbGV3b3JkdGhhdHdvbnRmaXRcbicKKyAgICAgICAgICAgICAgICAnIHBsdXNhbm90aGVydmVyeWxvbmd3b3JkdGhhdHdvbnRmaXRcbicpCisKKyAgICBkZWYgdGVzdF9mb2xkX3Vuc3RydWN0dXJlZF93aXRoX3NsaWdodGx5X2xvbmdfd29yZChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ1N1YmplY3QnLCAndGhpc2xvbmd3b3JkaXNsZXNzdGhhbm1heGxpbmVsZW4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdC5jbG9uZShtYXhfbGluZV9sZW5ndGg9MzUpKSwKKyAgICAgICAgICAgICdTdWJqZWN0OlxuIHRoaXNsb25nd29yZGlzbGVzc3RoYW5tYXhsaW5lbGVuXG4nKQorCisgICAgZGVmIHRlc3RfZm9sZF91bnN0cnVjdHVyZWRfd2l0aF9jb21tYXMoc2VsZik6CisgICAgICAgICMgVGhlIG9sZCB3cmFwcGVyIHdvdWxkIGZvbGQgdGhpcyBhdCB0aGUgY29tbWFzLgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignU3ViamVjdCcsICJUaGlzIGhlYWRlciBpcyBpbnRlbmRlZCB0byAiCisgICAgICAgICAgICAiZGVtb25zdHJhdGUsIGluIGEgZmFpcmx5IHN1c2luY3Qgd2F5LCB0aGF0IHdlIG5vdyBkbyAiCisgICAgICAgICAgICAibm90IGdpdmUgYSAsIHNwZWNpYWwgdHJlYXRtZW50IGluIHVuc3RydWN0dXJlZCBoZWFkZXJzLiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0LmNsb25lKG1heF9saW5lX2xlbmd0aD02MCkpLAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgICAgICBTdWJqZWN0OiBUaGlzIGhlYWRlciBpcyBpbnRlbmRlZCB0byBkZW1vbnN0cmF0ZSwgaW4gYSBmYWlybHkKKyAgICAgICAgICAgICAgICAgc3VzaW5jdCB3YXksIHRoYXQgd2Ugbm93IGRvIG5vdCBnaXZlIGEgLCBzcGVjaWFsIHRyZWF0bWVudAorICAgICAgICAgICAgICAgICBpbiB1bnN0cnVjdHVyZWQgaGVhZGVycy4KKyAgICAgICAgICAgICAgICAgIiIiKSkKKworICAgIGRlZiB0ZXN0X2ZvbGRfYWRkcmVzc19saXN0KHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignVG8nLCAnIlRoZW9kb3JlIEguIFBlcmZlY3QiIDx5ZXNAbWFuLmNvbT4sICcKKyAgICAgICAgICAgICciTXkgYWRkcmVzcyBpcyB2ZXJ5IGxvbmcgYmVjYXVzZSBteSBuYW1lIGlzIGxvbmciIDxmb29AYmFyLmNvbT4sICcKKyAgICAgICAgICAgICciT25seSBBLiBGcmllbmQiIDxub0B5ZXMuY29tPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdCksIHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBUbzogIlRoZW9kb3JlIEguIFBlcmZlY3QiIDx5ZXNAbWFuLmNvbT4sCisgICAgICAgICAgICAgIk15IGFkZHJlc3MgaXMgdmVyeSBsb25nIGJlY2F1c2UgbXkgbmFtZSBpcyBsb25nIiA8Zm9vQGJhci5jb20+LAorICAgICAgICAgICAgICJPbmx5IEEuIEZyaWVuZCIgPG5vQHllcy5jb20+CisgICAgICAgICAgICAgIiIiKSkKKworICAgIGRlZiB0ZXN0X2ZvbGRfZGF0ZV9oZWFkZXIoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdEYXRlJywgJ1NhdCwgMiBGZWIgMjAwMiAxNzowMDowNiAtMDgwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAnRGF0ZTogU2F0LCAwMiBGZWIgMjAwMiAxNzowMDowNiAtMDgwMFxuJykKKworCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfaW52ZXJzaW9uLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2ludmVyc2lvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjVjNTM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2ludmVyc2lvbi5weQpAQCAtMCwwICsxLDQ1IEBACisiIiJUZXN0IHRoZSBwYXJzZXIgYW5kIGdlbmVyYXRvciBhcmUgaW52ZXJzZXMuCisKK05vdGUgdGhhdCB0aGlzIGlzIG9ubHkgc3RyaWN0bHkgdHJ1ZSBpZiB3ZSBhcmUgcGFyc2luZyBSRkMgdmFsaWQgbWVzc2FnZXMgYW5kCitwcm9kdWNpbmcgUkZDIHZhbGlkIG1lc3NhZ2VzLgorIiIiCisKK2ltcG9ydCBpbworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3ksIG1lc3NhZ2VfZnJvbV9ieXRlcworZnJvbSBlbWFpbC5nZW5lcmF0b3IgaW1wb3J0IEJ5dGVzR2VuZXJhdG9yCitmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgVGVzdEVtYWlsQmFzZSwgcGFyYW1ldGVyaXplCisKKyMgVGhpcyBpcyBsaWtlIHRleHR3cmFwLmRlZGVudCBmb3IgYnl0ZXMsIGV4Y2VwdCB0aGF0IGl0IHVzZXMgXHJcbiBmb3IgdGhlIGxpbmUKKyMgc2VwYXJhdG9ycyBvbiB0aGUgcmVidWlsdCBzdHJpbmcuCitkZWYgZGVkZW50KGJzdHIpOgorICAgIGxpbmVzID0gYnN0ci5zcGxpdGxpbmVzKCkKKyAgICBpZiBub3QgbGluZXNbMF0uc3RyaXAoKToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRmlyc3QgbGluZSBtdXN0IGNvbnRhaW4gdGV4dCIpCisgICAgc3RyaXBhbXQgPSBsZW4obGluZXNbMF0pIC0gbGVuKGxpbmVzWzBdLmxzdHJpcCgpKQorICAgIHJldHVybiBiJ1xyXG4nLmpvaW4oCisgICAgICAgIFt4W3N0cmlwYW10Ol0gaWYgbGVuKHgpPj1zdHJpcGFtdCBlbHNlIGInJworICAgICAgICAgICAgZm9yIHggaW4gbGluZXNdKQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RJbnZlcnNpb24oVGVzdEVtYWlsQmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIG1zZ19hc19pbnB1dChzZWxmLCBtc2cpOgorICAgICAgICBtID0gbWVzc2FnZV9mcm9tX2J5dGVzKG1zZywgcG9saWN5PXBvbGljeS5TTVRQKQorICAgICAgICBiID0gaW8uQnl0ZXNJTygpCisgICAgICAgIGcgPSBCeXRlc0dlbmVyYXRvcihiKQorICAgICAgICBnLmZsYXR0ZW4obSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmdldHZhbHVlKCksIG1zZykKKworICAgICMgWFhYOiBzcGFjZXMgYXJlIG5vdCBwcmVzZXJ2ZWQgY29ycmVjdGx5IGhlcmUgeWV0IGluIHRoZSBnZW5lcmFsIGNhc2UuCisgICAgbXNnX3BhcmFtcyA9IHsKKyAgICAgICAgJ2hlYWRlcl93aXRoX29uZV9zcGFjZV9ib2R5JzogKGRlZGVudChiIiIiXAorICAgICAgICAgICAgRnJvbTogYWJjQHh5ei5jb20KKyAgICAgICAgICAgIFgtU3RhdHVzOlx4MjAKKyAgICAgICAgICAgIFN1YmplY3Q6IHRlc3QKKworICAgICAgICAgICAgZm9vCisgICAgICAgICAgICAiIiIpLCksCisKKyAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNjM2Y4MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5CkBAIC0wLDAgKzEsMTggQEAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBlbWFpbCBpbXBvcnQgcG9saWN5Citmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgVGVzdEVtYWlsQmFzZQorCisKK2NsYXNzIFRlc3QoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBwb2xpY3kgPSBwb2xpY3kuZGVmYXVsdAorCisgICAgZGVmIHRlc3RfZXJyb3Jfb25fc2V0aXRlbV9pZl9tYXhfY291bnRfZXhjZWVkZWQoc2VsZik6CisgICAgICAgIG0gPSBzZWxmLl9zdHJfbXNnKCIiKQorICAgICAgICBtWydUbyddID0gJ2FiY0B4eXonCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBtWydUbyddID0gJ3h5ekBhYmMnCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhYmQxMWEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5CkBAIC0wLDAgKzEsMzYgQEAKK2ltcG9ydCBpbworaW1wb3J0IGVtYWlsCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQorZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UKKworCitjbGFzcyBUZXN0Q3VzdG9tTWVzc2FnZShUZXN0RW1haWxCYXNlKToKKworICAgIGNsYXNzIE15TWVzc2FnZShNZXNzYWdlKToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvbGljeSk6CisgICAgICAgICAgICBzZWxmLmNoZWNrX3BvbGljeSA9IHBvbGljeQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisKKyAgICBNeVBvbGljeSA9IFRlc3RFbWFpbEJhc2UucG9saWN5LmNsb25lKGxpbmVzZXA9J2JvbycpCisKKyAgICBkZWYgdGVzdF9jdXN0b21fbWVzc2FnZV9nZXRzX3BvbGljeV9pZl9wb3NzaWJsZV9mcm9tX3N0cmluZyhzZWxmKToKKyAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZygiU3ViamVjdDogYm9ndXNcblxubXNnXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuTXlNZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1zZWxmLk15UG9saWN5KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtc2csIHNlbGYuTXlNZXNzYWdlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtc2cuY2hlY2tfcG9saWN5LCBzZWxmLk15UG9saWN5KQorCisgICAgZGVmIHRlc3RfY3VzdG9tX21lc3NhZ2VfZ2V0c19wb2xpY3lfaWZfcG9zc2libGVfZnJvbV9maWxlKHNlbGYpOgorICAgICAgICBzb3VyY2VfZmlsZSA9IGlvLlN0cmluZ0lPKCJTdWJqZWN0OiBib2d1c1xuXG5tc2dcbiIpCisgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9maWxlKHNvdXJjZV9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLk15TWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXNlbGYuTXlQb2xpY3kpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1zZywgc2VsZi5NeU1lc3NhZ2UpKQorICAgICAgICBzZWxmLmFzc2VydElzKG1zZy5jaGVja19wb2xpY3ksIHNlbGYuTXlQb2xpY3kpCisKKyAgICAjIFhYWCBhZGQgdGVzdHMgZm9yIG90aGVyIGZ1bmN0aW9ucyB0aGF0IHRha2UgTWVzc2FnZSBhcmcuCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9waWNrbGVhYmxlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BpY2tsZWFibGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFhOGQyNQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9waWNrbGVhYmxlLnB5CkBAIC0wLDAgKzEsNzQgQEAKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHRleHR3cmFwCitpbXBvcnQgY29weQoraW1wb3J0IHBpY2tsZQoraW1wb3J0IGVtYWlsCitpbXBvcnQgZW1haWwubWVzc2FnZQorZnJvbSBlbWFpbCBpbXBvcnQgcG9saWN5Citmcm9tIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5IGltcG9ydCBIZWFkZXJSZWdpc3RyeQorZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UsIHBhcmFtZXRlcml6ZQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RQaWNrbGVDb3B5SGVhZGVyKFRlc3RFbWFpbEJhc2UpOgorCisgICAgaGVhZGVyX2ZhY3RvcnkgPSBIZWFkZXJSZWdpc3RyeSgpCisKKyAgICB1bnN0cnVjdHVyZWQgPSBoZWFkZXJfZmFjdG9yeSgnc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpCisKKyAgICBoZWFkZXJfcGFyYW1zID0geworICAgICAgICAnc3ViamVjdCc6ICgnc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpLAorICAgICAgICAnZnJvbSc6ICAgICgnZnJvbScsICAgICdmcm9kb0Btb3Jkb3IubmV0JyksCisgICAgICAgICd0byc6ICAgICAgKCd0bycsICAgICAgJ2E6IGtAYi5jb20sIHlAei5jb207LCBqQGYuY29tJyksCisgICAgICAgICdkYXRlJzogICAgKCdkYXRlJywgICAgJ1R1ZSwgMjkgTWF5IDIwMTIgMDk6MjQ6MjYgKzEwMDAnKSwKKyAgICAgICAgfQorCisgICAgZGVmIGhlYWRlcl9hc19kZWVwY29weShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgIGhlYWRlciA9IHNlbGYuaGVhZGVyX2ZhY3RvcnkobmFtZSwgdmFsdWUpCisgICAgICAgIGggPSBjb3B5LmRlZXBjb3B5KGhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaCksIHN0cihoZWFkZXIpKQorCisgICAgZGVmIGhlYWRlcl9hc19waWNrbGUoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICBoZWFkZXIgPSBzZWxmLmhlYWRlcl9mYWN0b3J5KG5hbWUsIHZhbHVlKQorICAgICAgICBwID0gcGlja2xlLmR1bXBzKGhlYWRlcikKKyAgICAgICAgaCA9IHBpY2tsZS5sb2FkcyhwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihoKSwgc3RyKGhlYWRlcikpCisKKworQHBhcmFtZXRlcml6ZQorY2xhc3MgVGVzdFBpY2tsZUNvcHlNZXNzYWdlKFRlc3RFbWFpbEJhc2UpOgorCisgICAgIyBNZXNzYWdlIG9iamVjdHMgYXJlIGEgc2VxdWVuY2UsIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGVtIGEgb25lLXR1cGxlIGluCisgICAgIyBtc2dfcGFyYW1zIHNvIHRoZXkgZ2V0IHBhc3NlZCB0byB0aGUgcGFyYW1ldGVyaXplZCB0ZXN0IG1ldGhvZCBhcyBhCisgICAgIyBzaW5nbGUgYXJndW1lbnQgaW5zdGVhZCBvZiBhcyBhIGxpc3Qgb2YgaGVhZGVycy4KKyAgICBtc2dfcGFyYW1zID0ge30KKworICAgICMgTm90ZTogdGhlcmUgd2lsbCBiZSBubyBjdXN0b20gaGVhZGVyIG9iamVjdHMgaW4gdGhlIHBhcnNlZCBtZXNzYWdlLgorICAgIG1zZ19wYXJhbXNbJ3BhcnNlZCddID0gKGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcodGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgRGF0ZTogVHVlLCAyOSBNYXkgMjAxMiAwOToyNDoyNiArMTAwMAorICAgICAgICBGcm9tOiBmcm9kb0Btb3Jkb3IubmV0CisgICAgICAgIFRvOiBiaWxib0B1bmRlcmhpbGwub3JnCisgICAgICAgIFN1YmplY3Q6IGhlbHAKKworICAgICAgICBJIHRoaW5rIEkgZm9yZ290IHRoZSByaW5nLgorICAgICAgICAiIiIpLCBwb2xpY3k9cG9saWN5LmRlZmF1bHQpLCkKKworICAgIG1zZ19wYXJhbXNbJ2NyZWF0ZWQnXSA9IChlbWFpbC5tZXNzYWdlLk1lc3NhZ2UocG9saWN5PXBvbGljeS5kZWZhdWx0KSwpCisgICAgbXNnX3BhcmFtc1snY3JlYXRlZCddWzBdWydEYXRlJ10gPSAnVHVlLCAyOSBNYXkgMjAxMiAwOToyNDoyNiArMTAwMCcKKyAgICBtc2dfcGFyYW1zWydjcmVhdGVkJ11bMF1bJ0Zyb20nXSA9ICdmcm9kb0Btb3Jkb3IubmV0JworICAgIG1zZ19wYXJhbXNbJ2NyZWF0ZWQnXVswXVsnVG8nXSA9ICdiaWxib0B1bmRlcmhpbGwub3JnJworICAgIG1zZ19wYXJhbXNbJ2NyZWF0ZWQnXVswXVsnU3ViamVjdCddID0gJ2hlbHAnCisgICAgbXNnX3BhcmFtc1snY3JlYXRlZCddWzBdLnNldF9wYXlsb2FkKCdJIHRoaW5rIEkgZm9yZ290IHRoZSByaW5nLicpCisKKyAgICBkZWYgbXNnX2FzX2RlZXBjb3B5KHNlbGYsIG1zZyk6CisgICAgICAgIG1zZzIgPSBjb3B5LmRlZXBjb3B5KG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cyLmFzX3N0cmluZygpLCBtc2cuYXNfc3RyaW5nKCkpCisKKyAgICBkZWYgbXNnX2FzX3BpY2tsZShzZWxmLCBtc2cpOgorICAgICAgICBwID0gcGlja2xlLmR1bXBzKG1zZykKKyAgICAgICAgbXNnMiA9IHBpY2tsZS5sb2FkcyhwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZzIuYXNfc3RyaW5nKCksIG1zZy5hc19zdHJpbmcoKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgzYmQ0OQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkKQEAgLTAsMCArMSwzMjIgQEAKK2ltcG9ydCBpbworaW1wb3J0IHR5cGVzCitpbXBvcnQgdGV4dHdyYXAKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IGVtYWlsLnBvbGljeQoraW1wb3J0IGVtYWlsLnBhcnNlcgoraW1wb3J0IGVtYWlsLmdlbmVyYXRvcgorZnJvbSBlbWFpbCBpbXBvcnQgaGVhZGVycmVnaXN0cnkKKworZGVmIG1ha2VfZGVmYXVsdHMoYmFzZV9kZWZhdWx0cywgZGlmZmVyZW5jZXMpOgorICAgIGRlZmF1bHRzID0gYmFzZV9kZWZhdWx0cy5jb3B5KCkKKyAgICBkZWZhdWx0cy51cGRhdGUoZGlmZmVyZW5jZXMpCisgICAgcmV0dXJuIGRlZmF1bHRzCisKK2NsYXNzIFBvbGljeUFQSVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGxvbmdNZXNzYWdlID0gVHJ1ZQorCisgICAgIyBCYXNlIGRlZmF1bHQgdmFsdWVzLgorICAgIGNvbXBhdDMyX2RlZmF1bHRzID0geworICAgICAgICAnbWF4X2xpbmVfbGVuZ3RoJzogICAgICAgICAgNzgsCisgICAgICAgICdsaW5lc2VwJzogICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAnY3RlX3R5cGUnOiAgICAgICAgICAgICAgICAgJzhiaXQnLAorICAgICAgICAncmFpc2Vfb25fZGVmZWN0JzogICAgICAgICAgRmFsc2UsCisgICAgICAgIH0KKyAgICAjIFRoZXNlIGRlZmF1bHQgdmFsdWVzIGFyZSB0aGUgb25lcyBzZXQgb24gZW1haWwucG9saWN5LmRlZmF1bHQuCisgICAgIyBJZiBhbnkgb2YgdGhlc2UgZGVmYXVsdHMgY2hhbmdlLCB0aGUgZG9jcyBtdXN0IGJlIHVwZGF0ZWQuCisgICAgcG9saWN5X2RlZmF1bHRzID0gY29tcGF0MzJfZGVmYXVsdHMuY29weSgpCisgICAgcG9saWN5X2RlZmF1bHRzLnVwZGF0ZSh7CisgICAgICAgICdyYWlzZV9vbl9kZWZlY3QnOiAgICAgICAgICBGYWxzZSwKKyAgICAgICAgJ2hlYWRlcl9mYWN0b3J5JzogICAgICAgICAgIGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS5oZWFkZXJfZmFjdG9yeSwKKyAgICAgICAgJ3JlZm9sZF9zb3VyY2UnOiAgICAgICAgICAgICdsb25nJywKKyAgICAgICAgfSkKKworICAgICMgRm9yIGVhY2ggcG9saWN5IHVuZGVyIHRlc3QsIHdlIGdpdmUgaGVyZSB3aGF0IHdlIGV4cGVjdCB0aGUgZGVmYXVsdHMgdG8KKyAgICAjIGJlIGZvciB0aGF0IHBvbGljeS4gIFRoZSBzZWNvbmQgYXJndW1lbnQgdG8gbWFrZSBkZWZhdWx0cyBpcyB0aGUKKyAgICAjIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgYmFzZSBkZWZhdWx0cyBhbmQgdGhhdCBmb3IgdGhlIHBhcnRpY3VsYXIgcG9saWN5LgorICAgIG5ld19wb2xpY3kgPSBlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3koKQorICAgIHBvbGljaWVzID0geworICAgICAgICBlbWFpbC5wb2xpY3kuY29tcGF0MzI6IG1ha2VfZGVmYXVsdHMoY29tcGF0MzJfZGVmYXVsdHMsIHt9KSwKKyAgICAgICAgZW1haWwucG9saWN5LmRlZmF1bHQ6IG1ha2VfZGVmYXVsdHMocG9saWN5X2RlZmF1bHRzLCB7fSksCisgICAgICAgIGVtYWlsLnBvbGljeS5TTVRQOiBtYWtlX2RlZmF1bHRzKHBvbGljeV9kZWZhdWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydsaW5lc2VwJzogJ1xyXG4nfSksCisgICAgICAgIGVtYWlsLnBvbGljeS5IVFRQOiBtYWtlX2RlZmF1bHRzKHBvbGljeV9kZWZhdWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydsaW5lc2VwJzogJ1xyXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF9saW5lX2xlbmd0aCc6IE5vbmV9KSwKKyAgICAgICAgZW1haWwucG9saWN5LnN0cmljdDogbWFrZV9kZWZhdWx0cyhwb2xpY3lfZGVmYXVsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydyYWlzZV9vbl9kZWZlY3QnOiBUcnVlfSksCisgICAgICAgIG5ld19wb2xpY3k6IG1ha2VfZGVmYXVsdHMocG9saWN5X2RlZmF1bHRzLCB7fSksCisgICAgICAgIH0KKyAgICAjIENyZWF0aW5nIGEgbmV3IHBvbGljeSBjcmVhdGVzIGEgbmV3IGhlYWRlciBmYWN0b3J5LiAgVGhlcmUgaXMgYSB0ZXN0CisgICAgIyBsYXRlciB0aGF0IHByb3ZlcyB0aGlzLgorICAgIHBvbGljaWVzW25ld19wb2xpY3ldWydoZWFkZXJfZmFjdG9yeSddID0gbmV3X3BvbGljeS5oZWFkZXJfZmFjdG9yeQorCisgICAgZGVmIHRlc3RfZGVmYXVsdHMoc2VsZik6CisgICAgICAgIGZvciBwb2xpY3ksIGV4cGVjdGVkIGluIHNlbGYucG9saWNpZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBleHBlY3RlZC5pdGVtcygpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihwb2xpY3ksIGF0dHIpLCB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJjaGFuZ2Uge30gZG9jcy9kb2NzdHJpbmdzIGlmIGRlZmF1bHRzIGhhdmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhbmdlZCIpLmZvcm1hdChwb2xpY3kpKQorCisgICAgZGVmIHRlc3RfYWxsX2F0dHJpYnV0ZXNfY292ZXJlZChzZWxmKToKKyAgICAgICAgZm9yIHBvbGljeSwgZXhwZWN0ZWQgaW4gc2VsZi5wb2xpY2llcy5pdGVtcygpOgorICAgICAgICAgICAgZm9yIGF0dHIgaW4gZGlyKHBvbGljeSk6CisgICAgICAgICAgICAgICAgaWYgKGF0dHIuc3RhcnRzd2l0aCgnXycpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGdldGF0dHIoZW1haWwucG9saWN5LkVtYWlsUG9saWN5LCBhdHRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLkZ1bmN0aW9uVHlwZSkpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYXR0ciwgZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInt9IGlzIG5vdCBmdWxseSB0ZXN0ZWQiLmZvcm1hdChhdHRyKSkKKworICAgIGRlZiB0ZXN0X2FiYyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZW1haWwucG9saWN5LlBvbGljeSgpCisgICAgICAgIG1zZyA9IHN0cihjbS5leGNlcHRpb24pCisgICAgICAgIGFic3RyYWN0X21ldGhvZHMgPSAoJ2ZvbGQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2xkX2JpbmFyeScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYWRlcl9mZXRjaF9wYXJzZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYWRlcl9zb3VyY2VfcGFyc2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWFkZXJfc3RvcmVfcGFyc2UnKQorICAgICAgICBmb3IgbWV0aG9kIGluIGFic3RyYWN0X21ldGhvZHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG1ldGhvZCwgbXNnKQorCisgICAgZGVmIHRlc3RfcG9saWN5X2lzX2ltbXV0YWJsZShzZWxmKToKKyAgICAgICAgZm9yIHBvbGljeSwgZGVmYXVsdHMgaW4gc2VsZi5wb2xpY2llcy5pdGVtcygpOgorICAgICAgICAgICAgZm9yIGF0dHIgaW4gZGVmYXVsdHM6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCBhdHRyKyIuKnJlYWQtb25seSIpOgorICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHBvbGljeSwgYXR0ciwgTm9uZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwgJ25vIGF0dHJpYnV0ZS4qZm9vJyk6CisgICAgICAgICAgICAgICAgcG9saWN5LmZvbyA9IE5vbmUKKworICAgIGRlZiB0ZXN0X3NldF9wb2xpY3lfYXR0cnNfd2hlbl9jbG9uZWQoc2VsZik6CisgICAgICAgICMgTm9uZSBvZiB0aGUgYXR0cmlidXRlcyBoYXMgYSBkZWZhdWx0IHZhbHVlIG9mIE5vbmUsIHNvIHdlIHNldCB0aGVtCisgICAgICAgICMgYWxsIHRvIE5vbmUgaW4gdGhlIGNsb25lIGNhbGwgYW5kIGNoZWNrIHRoYXQgaXQgd29ya2VkLgorICAgICAgICBmb3IgcG9saWN5Y2xhc3MsIGRlZmF1bHRzIGluIHNlbGYucG9saWNpZXMuaXRlbXMoKToKKyAgICAgICAgICAgIHRlc3RhdHRyZGljdCA9IHthdHRyOiBOb25lIGZvciBhdHRyIGluIGRlZmF1bHRzfQorICAgICAgICAgICAgcG9saWN5ID0gcG9saWN5Y2xhc3MuY2xvbmUoKip0ZXN0YXR0cmRpY3QpCisgICAgICAgICAgICBmb3IgYXR0ciBpbiBkZWZhdWx0czoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnZXRhdHRyKHBvbGljeSwgYXR0cikpCisKKyAgICBkZWYgdGVzdF9yZWplY3Rfbm9uX3BvbGljeV9rZXl3b3JkX3doZW5fY2FsbGVkKHNlbGYpOgorICAgICAgICBmb3IgcG9saWN5Y2xhc3MgaW4gc2VsZi5wb2xpY2llczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBwb2xpY3ljbGFzcyh0aGlzX2tleXdvcmRfc2hvdWxkX25vdF9iZV92YWxpZD1Ob25lKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHBvbGljeWNsYXNzKG5ld3RsaW5lPU5vbmUpCisKKyAgICBkZWYgdGVzdF9wb2xpY3lfYWRkaXRpb24oc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gc2VsZi5wb2xpY3lfZGVmYXVsdHMuY29weSgpCisgICAgICAgIHAxID0gZW1haWwucG9saWN5LmRlZmF1bHQuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTEwMCkKKyAgICAgICAgcDIgPSBlbWFpbC5wb2xpY3kuZGVmYXVsdC5jbG9uZShtYXhfbGluZV9sZW5ndGg9NTApCisgICAgICAgIGFkZGVkID0gcDEgKyBwMgorICAgICAgICBleHBlY3RlZC51cGRhdGUobWF4X2xpbmVfbGVuZ3RoPTUwKQorICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gZXhwZWN0ZWQuaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihhZGRlZCwgYXR0ciksIHZhbHVlKQorICAgICAgICBhZGRlZCA9IHAyICsgcDEKKyAgICAgICAgZXhwZWN0ZWQudXBkYXRlKG1heF9saW5lX2xlbmd0aD0xMDApCisgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBleHBlY3RlZC5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKGFkZGVkLCBhdHRyKSwgdmFsdWUpCisgICAgICAgIGFkZGVkID0gYWRkZWQgKyBlbWFpbC5wb2xpY3kuZGVmYXVsdAorICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gZXhwZWN0ZWQuaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihhZGRlZCwgYXR0ciksIHZhbHVlKQorCisgICAgZGVmIHRlc3RfcmVnaXN0ZXJfZGVmZWN0KHNlbGYpOgorICAgICAgICBjbGFzcyBEdW1teToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmRlZmVjdHMgPSBbXQorICAgICAgICBvYmogPSBEdW1teSgpCisgICAgICAgIGRlZmVjdCA9IG9iamVjdCgpCisgICAgICAgIHBvbGljeSA9IGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSgpCisgICAgICAgIHBvbGljeS5yZWdpc3Rlcl9kZWZlY3Qob2JqLCBkZWZlY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLmRlZmVjdHMsIFtkZWZlY3RdKQorICAgICAgICBkZWZlY3QyID0gb2JqZWN0KCkKKyAgICAgICAgcG9saWN5LnJlZ2lzdGVyX2RlZmVjdChvYmosIGRlZmVjdDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLmRlZmVjdHMsIFtkZWZlY3QsIGRlZmVjdDJdKQorCisgICAgY2xhc3MgTXlPYmo6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIHNlbGYuZGVmZWN0cyA9IFtdCisKKyAgICBjbGFzcyBNeURlZmVjdChFeGNlcHRpb24pOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGVmZWN0X3JhaXNlc19vbl9zdHJpY3Qoc2VsZik6CisgICAgICAgIGZvbyA9IHNlbGYuTXlPYmooKQorICAgICAgICBkZWZlY3QgPSBzZWxmLk15RGVmZWN0KCJ0aGUgdGVsbHkgaXMgYnJva2VuIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNlbGYuTXlEZWZlY3QsICJ0aGUgdGVsbHkgaXMgYnJva2VuIik6CisgICAgICAgICAgICBlbWFpbC5wb2xpY3kuc3RyaWN0LmhhbmRsZV9kZWZlY3QoZm9vLCBkZWZlY3QpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGVmZWN0X3JlZ2lzdGVyc19kZWZlY3Qoc2VsZik6CisgICAgICAgIGZvbyA9IHNlbGYuTXlPYmooKQorICAgICAgICBkZWZlY3QxID0gc2VsZi5NeURlZmVjdCgib25lIikKKyAgICAgICAgZW1haWwucG9saWN5LmRlZmF1bHQuaGFuZGxlX2RlZmVjdChmb28sIGRlZmVjdDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLmRlZmVjdHMsIFtkZWZlY3QxXSkKKyAgICAgICAgZGVmZWN0MiA9IHNlbGYuTXlEZWZlY3QoInR3byIpCisgICAgICAgIGVtYWlsLnBvbGljeS5kZWZhdWx0LmhhbmRsZV9kZWZlY3QoZm9vLCBkZWZlY3QyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5kZWZlY3RzLCBbZGVmZWN0MSwgZGVmZWN0Ml0pCisKKyAgICBjbGFzcyBNeVBvbGljeShlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kpOgorICAgICAgICBkZWZlY3RzID0gTm9uZQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgZGVmZWN0cz1bXSwgKiprdykKKyAgICAgICAgZGVmIHJlZ2lzdGVyX2RlZmVjdChzZWxmLCBvYmosIGRlZmVjdCk6CisgICAgICAgICAgICBzZWxmLmRlZmVjdHMuYXBwZW5kKGRlZmVjdCkKKworICAgIGRlZiB0ZXN0X292ZXJyaWRkZW5fcmVnaXN0ZXJfZGVmZWN0X3N0aWxsX3JhaXNlcyhzZWxmKToKKyAgICAgICAgZm9vID0gc2VsZi5NeU9iaigpCisgICAgICAgIGRlZmVjdCA9IHNlbGYuTXlEZWZlY3QoInRoZSB0ZWxseSBpcyBicm9rZW4iKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZi5NeURlZmVjdCwgInRoZSB0ZWxseSBpcyBicm9rZW4iKToKKyAgICAgICAgICAgIHNlbGYuTXlQb2xpY3kocmFpc2Vfb25fZGVmZWN0PVRydWUpLmhhbmRsZV9kZWZlY3QoZm9vLCBkZWZlY3QpCisKKyAgICBkZWYgdGVzdF9vdmVycmlkZW5fcmVnaXN0ZXJfZGVmZWN0X3dvcmtzKHNlbGYpOgorICAgICAgICBmb28gPSBzZWxmLk15T2JqKCkKKyAgICAgICAgZGVmZWN0MSA9IHNlbGYuTXlEZWZlY3QoIm9uZSIpCisgICAgICAgIG15X3BvbGljeSA9IHNlbGYuTXlQb2xpY3koKQorICAgICAgICBteV9wb2xpY3kuaGFuZGxlX2RlZmVjdChmb28sIGRlZmVjdDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfcG9saWN5LmRlZmVjdHMsIFtkZWZlY3QxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uZGVmZWN0cywgW10pCisgICAgICAgIGRlZmVjdDIgPSBzZWxmLk15RGVmZWN0KCJ0d28iKQorICAgICAgICBteV9wb2xpY3kuaGFuZGxlX2RlZmVjdChmb28sIGRlZmVjdDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfcG9saWN5LmRlZmVjdHMsIFtkZWZlY3QxLCBkZWZlY3QyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uZGVmZWN0cywgW10pCisKKyAgICBkZWYgdGVzdF9kZWZhdWx0X2hlYWRlcl9mYWN0b3J5KHNlbGYpOgorICAgICAgICBoID0gZW1haWwucG9saWN5LmRlZmF1bHQuaGVhZGVyX2ZhY3RvcnkoJ1Rlc3QnLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5uYW1lLCAnVGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyKQorCisgICAgY2xhc3MgRm9vOgorICAgICAgICBwYXJzZSA9IGhlYWRlcnJlZ2lzdHJ5LlVuc3RydWN0dXJlZEhlYWRlci5wYXJzZQorCisgICAgZGVmIHRlc3RfZWFjaF9Qb2xpY3lfZ2V0c191bmlxdWVfZmFjdG9yeShzZWxmKToKKyAgICAgICAgcG9saWN5MSA9IGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSgpCisgICAgICAgIHBvbGljeTIgPSBlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3koKQorICAgICAgICBwb2xpY3kxLmhlYWRlcl9mYWN0b3J5Lm1hcF90b190eXBlKCdmb28nLCBzZWxmLkZvbykKKyAgICAgICAgaCA9IHBvbGljeTEuaGVhZGVyX2ZhY3RvcnkoJ2ZvbycsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIHNlbGYuRm9vKQorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuVW5zdHJ1Y3R1cmVkSGVhZGVyKQorICAgICAgICBoID0gcG9saWN5Mi5oZWFkZXJfZmFjdG9yeSgnZm9vJywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoaCwgc2VsZi5Gb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIpCisKKyAgICBkZWYgdGVzdF9jbG9uZV9jb3BpZXNfZmFjdG9yeShzZWxmKToKKyAgICAgICAgcG9saWN5MSA9IGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSgpCisgICAgICAgIHBvbGljeTIgPSBwb2xpY3kxLmNsb25lKCkKKyAgICAgICAgcG9saWN5MS5oZWFkZXJfZmFjdG9yeS5tYXBfdG9fdHlwZSgnZm9vJywgc2VsZi5Gb28pCisgICAgICAgIGggPSBwb2xpY3kxLmhlYWRlcl9mYWN0b3J5KCdmb28nLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBzZWxmLkZvbykKKyAgICAgICAgaCA9IHBvbGljeTIuaGVhZGVyX2ZhY3RvcnkoJ2ZvbycsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIHNlbGYuRm9vKQorCisgICAgZGVmIHRlc3RfbmV3X2ZhY3Rvcnlfb3ZlcnJpZGVzX2RlZmF1bHQoc2VsZik6CisgICAgICAgIG15cG9saWN5ID0gZW1haWwucG9saWN5LkVtYWlsUG9saWN5KCkKKyAgICAgICAgbXlmYWN0b3J5ID0gbXlwb2xpY3kuaGVhZGVyX2ZhY3RvcnkKKyAgICAgICAgbmV3cG9saWN5ID0gbXlwb2xpY3kgKyBlbWFpbC5wb2xpY3kuc3RyaWN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cG9saWN5LmhlYWRlcl9mYWN0b3J5LCBteWZhY3RvcnkpCisgICAgICAgIG5ld3BvbGljeSA9IGVtYWlsLnBvbGljeS5zdHJpY3QgKyBteXBvbGljeQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3BvbGljeS5oZWFkZXJfZmFjdG9yeSwgbXlmYWN0b3J5KQorCisgICAgZGVmIHRlc3RfYWRkaW5nX2RlZmF1bHRfcG9saWNpZXNfcHJlc2VydmVzX2RlZmF1bHRfZmFjdG9yeShzZWxmKToKKyAgICAgICAgbmV3cG9saWN5ID0gZW1haWwucG9saWN5LmRlZmF1bHQgKyBlbWFpbC5wb2xpY3kuc3RyaWN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cG9saWN5LmhlYWRlcl9mYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS5oZWFkZXJfZmFjdG9yeSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdwb2xpY3kuX19kaWN0X18sIHsncmFpc2Vfb25fZGVmZWN0JzogVHJ1ZX0pCisKKyAgICAjIFhYWDogTmVlZCBzdWJjbGFzc2luZyB0ZXN0cy4KKyAgICAjIEZvciBhZGRpbmcgc3ViY2xhc3NlZCBvYmplY3RzLCBtYWtlIHN1cmUgdGhlIHVzdWFsIHJ1bGVzIGFwcGx5IChzdWJjbGFzcworICAgICMgd2lucyksIGJ1dCB0aGF0IHRoZSBvcmRlciBzdGlsbCB3b3JrcyAocmlnaHQgb3ZlcnJpZGVzIGxlZnQpLgorCisKK2NsYXNzIFRlc3RQb2xpY3lQcm9wYWdhdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAjIFRoZSBhYnN0cmFjdCBtZXRob2RzIGFyZSB1c2VkIGJ5IHRoZSBwYXJzZXIgYnV0IG5vdCBieSB0aGUgd3JhcHBlcgorICAgICMgZnVuY3Rpb25zIHRoYXQgY2FsbCBpdCwgc28gaWYgdGhlIGV4Y2VwdGlvbiBnZXRzIHJhaXNlZCB3ZSBrbm93IHRoYXQgdGhlCisgICAgIyBwb2xpY3kgd2FzIGFjdHVhbGx5IHByb3BhZ2F0ZWQgYWxsIHRoZSB3YXkgdG8gZmVlZHBhcnNlci4KKyAgICBjbGFzcyBNeVBvbGljeShlbWFpbC5wb2xpY3kuUG9saWN5KToKKyAgICAgICAgZGVmIGJhZG1ldGhvZChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oInRlc3QiKQorICAgICAgICBmb2xkID0gZm9sZF9iaW5hcnkgPSBoZWFkZXJfZmV0Y2hfcGFyc2VyID0gYmFkbWV0aG9kCisgICAgICAgIGhlYWRlcl9zb3VyY2VfcGFyc2UgPSBoZWFkZXJfc3RvcmVfcGFyc2UgPSBiYWRtZXRob2QKKworICAgIGRlZiB0ZXN0X21lc3NhZ2VfZnJvbV9zdHJpbmcoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoIlN1YmplY3Q6IHRlc3RcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXNlbGYuTXlQb2xpY3kpCisKKyAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fYnl0ZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyhiIlN1YmplY3Q6IHRlc3RcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9c2VsZi5NeVBvbGljeSkKKworICAgIGRlZiB0ZXN0X21lc3NhZ2VfZnJvbV9maWxlKHNlbGYpOgorICAgICAgICBmID0gaW8uU3RyaW5nSU8oJ1N1YmplY3Q6IHRlc3RcblxuJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICAgICAgZW1haWwubWVzc2FnZV9mcm9tX2ZpbGUoZiwgcG9saWN5PXNlbGYuTXlQb2xpY3kpCisKKyAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoc2VsZik6CisgICAgICAgIGYgPSBpby5CeXRlc0lPKGInU3ViamVjdDogdGVzdFxuXG4nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgICAgICBlbWFpbC5tZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZiwgcG9saWN5PXNlbGYuTXlQb2xpY3kpCisKKyAgICAjIFRoZXNlIGFyZSByZWR1bmRhbnQsIGJ1dCB3ZSBuZWVkIHRoZW0gZm9yIGJsYWNrLWJveCBjb21wbGV0ZW5lc3MuCisKKyAgICBkZWYgdGVzdF9wYXJzZXIoc2VsZik6CisgICAgICAgIHAgPSBlbWFpbC5wYXJzZXIuUGFyc2VyKHBvbGljeT1zZWxmLk15UG9saWN5KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgICAgICBwLnBhcnNlc3RyKCdTdWJqZWN0OiB0ZXN0XG5cbicpCisKKyAgICBkZWYgdGVzdF9ieXRlc19wYXJzZXIoc2VsZik6CisgICAgICAgIHAgPSBlbWFpbC5wYXJzZXIuQnl0ZXNQYXJzZXIocG9saWN5PXNlbGYuTXlQb2xpY3kpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgICAgIHAucGFyc2VieXRlcyhiJ1N1YmplY3Q6IHRlc3RcblxuJykKKworICAgICMgTm93IHRoYXQgd2UndmUgZXN0YWJsaXNoZWQgdGhhdCBhbGwgdGhlIHBhcnNlIG1ldGhvZHMgZ2V0IHRoZQorICAgICMgcG9saWN5IGluIHRvIGZlZWRwYXJzZXIsIHdlIGNhbiB1c2UgbWVzc2FnZV9mcm9tX3N0cmluZyBmb3IKKyAgICAjIHRoZSByZXN0IG9mIHRoZSBwcm9wYWdhdGlvbiB0ZXN0cy4KKworICAgIGRlZiBfbWFrZV9tc2coc2VsZiwgc291cmNlPSdTdWJqZWN0OiB0ZXN0XG5cbicsIHBvbGljeT1Ob25lKToKKyAgICAgICAgc2VsZi5wb2xpY3kgPSBlbWFpbC5wb2xpY3kuZGVmYXVsdC5jbG9uZSgpIGlmIHBvbGljeSBpcyBOb25lIGVsc2UgcG9saWN5CisgICAgICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKHNvdXJjZSwgcG9saWN5PXNlbGYucG9saWN5KQorCisgICAgZGVmIHRlc3RfcGFyc2VyX3Byb3BhZ2F0ZXNfcG9saWN5X3RvX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIG1zZyA9IHNlbGYuX21ha2VfbXNnKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtc2cucG9saWN5LCBzZWxmLnBvbGljeSkKKworICAgIGRlZiB0ZXN0X3BhcnNlcl9wcm9wYWdhdGVzX3BvbGljeV90b19zdWJfbWVzc2FnZXMoc2VsZik6CisgICAgICAgIG1zZyA9IHNlbGYuX21ha2VfbXNnKHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBTdWJqZWN0OiBtaW1lIHRlc3QKKyAgICAgICAgICAgIE1JTUUtVmVyc2lvbjogMS4wCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZCwgYm91bmRhcnk9IlhYWCIKKworICAgICAgICAgICAgLS1YWFgKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgorCisgICAgICAgICAgICB0ZXN0CisgICAgICAgICAgICAtLVhYWAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCisKKyAgICAgICAgICAgIHRlc3QyCisgICAgICAgICAgICAtLVhYWC0tCisgICAgICAgICAgICAiIiIpKQorICAgICAgICBmb3IgcGFydCBpbiBtc2cud2FsaygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhwYXJ0LnBvbGljeSwgc2VsZi5wb2xpY3kpCisKKyAgICBkZWYgdGVzdF9tZXNzYWdlX3BvbGljeV9wcm9wYWdhdGVzX3RvX2dlbmVyYXRvcihzZWxmKToKKyAgICAgICAgbXNnID0gc2VsZi5fbWFrZV9tc2coIlN1YmplY3Q6IHRlc3RcblRvOiBmb29cblxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PWVtYWlsLnBvbGljeS5kZWZhdWx0LmNsb25lKGxpbmVzZXA9J1gnKSkKKyAgICAgICAgcyA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgZyA9IGVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3IocykKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksICJTdWJqZWN0OiB0ZXN0WFRvOiBmb29YWCIpCisKKyAgICBkZWYgdGVzdF9tZXNzYWdlX3BvbGljeV91c2VkX2J5X2FzX3N0cmluZyhzZWxmKToKKyAgICAgICAgbXNnID0gc2VsZi5fbWFrZV9tc2coIlN1YmplY3Q6IHRlc3RcblRvOiBmb29cblxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PWVtYWlsLnBvbGljeS5kZWZhdWx0LmNsb25lKGxpbmVzZXA9J1gnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuYXNfc3RyaW5nKCksICJTdWJqZWN0OiB0ZXN0WFRvOiBmb29YWCIpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF91dGlscy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF91dGlscy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjJlZjNhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3V0aWxzLnB5CkBAIC0wLDAgKzEsMTM2IEBACitpbXBvcnQgZGF0ZXRpbWUKK2Zyb20gZW1haWwgaW1wb3J0IHV0aWxzCitpbXBvcnQgdGVzdC5zdXBwb3J0CitpbXBvcnQgdGltZQoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3lzCisKK2NsYXNzIERhdGVUaW1lVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGF0ZXN0cmluZyA9ICdTdW4sIDIzIFNlcCAyMDAxIDIwOjEwOjU1JworICAgIGRhdGVhcmdzID0gKDIwMDEsIDksIDIzLCAyMCwgMTAsIDU1KQorICAgIG9mZnNldHN0cmluZyA9ICcgLTA3MDAnCisgICAgdXRjb2Zmc2V0ID0gZGF0ZXRpbWUudGltZWRlbHRhKGhvdXJzPS03KQorICAgIHR6ID0gZGF0ZXRpbWUudGltZXpvbmUodXRjb2Zmc2V0KQorICAgIG5haXZlX2R0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoKmRhdGVhcmdzKQorICAgIGF3YXJlX2R0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoKmRhdGVhcmdzLCB0emluZm89dHopCisKKyAgICBkZWYgdGVzdF9uYWl2ZV9kYXRldGltZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRfZGF0ZXRpbWUoc2VsZi5uYWl2ZV9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRlc3RyaW5nICsgJyAtMDAwMCcpCisKKyAgICBkZWYgdGVzdF9hd2FyZV9kYXRldGltZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRfZGF0ZXRpbWUoc2VsZi5hd2FyZV9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRlc3RyaW5nICsgc2VsZi5vZmZzZXRzdHJpbmcpCisKKyAgICBkZWYgdGVzdF91c2VnbXQoc2VsZik6CisgICAgICAgIHV0Y19kdCA9IGRhdGV0aW1lLmRhdGV0aW1lKCpzZWxmLmRhdGVhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm89ZGF0ZXRpbWUudGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdF9kYXRldGltZSh1dGNfZHQsIHVzZWdtdD1UcnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGVzdHJpbmcgKyAnIEdNVCcpCisKKyAgICBkZWYgdGVzdF91c2VnbXRfd2l0aF9uYWl2ZV9kYXRldGltZV9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB1dGlscy5mb3JtYXRfZGF0ZXRpbWUoc2VsZi5uYWl2ZV9kdCwgdXNlZ210PVRydWUpCisKKyAgICBkZWYgdGVzdF91c2VnbXRfd2l0aF9ub25fdXRjX2RhdGV0aW1lX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHV0aWxzLmZvcm1hdF9kYXRldGltZShzZWxmLmF3YXJlX2R0LCB1c2VnbXQ9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X3BhcnNlZGF0ZV90b19kYXRldGltZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHV0aWxzLnBhcnNlZGF0ZV90b19kYXRldGltZShzZWxmLmRhdGVzdHJpbmcgKyBzZWxmLm9mZnNldHN0cmluZyksCisgICAgICAgICAgICBzZWxmLmF3YXJlX2R0KQorCisgICAgZGVmIHRlc3RfcGFyc2VkYXRlX3RvX2RhdGV0aW1lX25haXZlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgdXRpbHMucGFyc2VkYXRlX3RvX2RhdGV0aW1lKHNlbGYuZGF0ZXN0cmluZyArICcgLTAwMDAnKSwKKyAgICAgICAgICAgIHNlbGYubmFpdmVfZHQpCisKKworY2xhc3MgTG9jYWx0aW1lVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2lzX3R6X2F3YXJlX2RheWxpZ2h0X3RydWUoc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC5wYXRjaChzZWxmLCB0aW1lLCAnZGF5bGlnaHQnLCBUcnVlKQorICAgICAgICB0ID0gdXRpbHMubG9jYWx0aW1lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh0LnR6aW5mbywgTm9uZSkKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9pc190el9hd2FyZV9kYXlsaWdodF9mYWxzZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIEZhbHNlKQorICAgICAgICB0ID0gdXRpbHMubG9jYWx0aW1lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh0LnR6aW5mbywgTm9uZSkKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9kYXlsaWdodF90cnVlX2RzdF9mYWxzZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIFRydWUpCisgICAgICAgIHQwID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMiwgMywgMTIsIDEsIDEpCisgICAgICAgIHQxID0gdXRpbHMubG9jYWx0aW1lKHQwLCBpc2RzdD0tMSkKKyAgICAgICAgdDIgPSB1dGlscy5sb2NhbHRpbWUodDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQorCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2RheWxpZ2h0X2ZhbHNlX2RzdF9mYWxzZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIEZhbHNlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTIsIDMsIDEyLCAxLCAxKQorICAgICAgICB0MSA9IHV0aWxzLmxvY2FsdGltZSh0MCwgaXNkc3Q9LTEpCisgICAgICAgIHQyID0gdXRpbHMubG9jYWx0aW1lKHQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9kYXlsaWdodF90cnVlX2RzdF90cnVlKHNlbGYpOgorICAgICAgICB0ZXN0LnN1cHBvcnQucGF0Y2goc2VsZiwgdGltZSwgJ2RheWxpZ2h0JywgVHJ1ZSkKKyAgICAgICAgdDAgPSBkYXRldGltZS5kYXRldGltZSgyMDEyLCAzLCAxMiwgMSwgMSkKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDAsIGlzZHN0PTEpCisgICAgICAgIHQyID0gdXRpbHMubG9jYWx0aW1lKHQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9kYXlsaWdodF9mYWxzZV9kc3RfdHJ1ZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIEZhbHNlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTIsIDMsIDEyLCAxLCAxKQorICAgICAgICB0MSA9IHV0aWxzLmxvY2FsdGltZSh0MCwgaXNkc3Q9MSkKKyAgICAgICAgdDIgPSB1dGlscy5sb2NhbHRpbWUodDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQorCisgICAgQHRlc3Quc3VwcG9ydC5ydW5fd2l0aF90eignRVNUKzA1RURULE0zLjIuMCxNMTEuMS4wJykKKyAgICBkZWYgdGVzdF9sb2NhbHRpbWVfZXBvY2hfdXRjX2RheWxpZ2h0X3RydWUoc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC5wYXRjaChzZWxmLCB0aW1lLCAnZGF5bGlnaHQnLCBUcnVlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDE5OTAsIDEsIDEsIHR6aW5mbyA9IGRhdGV0aW1lLnRpbWV6b25lLnV0YykKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDApCisgICAgICAgIHQyID0gdDAgLSBkYXRldGltZS50aW1lZGVsdGEoaG91cnM9NSkKKyAgICAgICAgdDIgPSB0Mi5yZXBsYWNlKHR6aW5mbyA9IGRhdGV0aW1lLnRpbWV6b25lKGRhdGV0aW1lLnRpbWVkZWx0YShob3Vycz0tNSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKworICAgIEB0ZXN0LnN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2Vwb2NoX3V0Y19kYXlsaWdodF9mYWxzZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIEZhbHNlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDE5OTAsIDEsIDEsIHR6aW5mbyA9IGRhdGV0aW1lLnRpbWV6b25lLnV0YykKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDApCisgICAgICAgIHQyID0gdDAgLSBkYXRldGltZS50aW1lZGVsdGEoaG91cnM9NSkKKyAgICAgICAgdDIgPSB0Mi5yZXBsYWNlKHR6aW5mbyA9IGRhdGV0aW1lLnRpbWV6b25lKGRhdGV0aW1lLnRpbWVkZWx0YShob3Vycz0tNSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9lcG9jaF9ub3R6X2RheWxpZ2h0X3RydWUoc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC5wYXRjaChzZWxmLCB0aW1lLCAnZGF5bGlnaHQnLCBUcnVlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDE5OTAsIDEsIDEpCisgICAgICAgIHQxID0gdXRpbHMubG9jYWx0aW1lKHQwKQorICAgICAgICB0MiA9IHV0aWxzLmxvY2FsdGltZSh0MC5yZXBsYWNlKHR6aW5mbz1Ob25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MSwgdDIpCisKKyAgICBkZWYgdGVzdF9sb2NhbHRpbWVfZXBvY2hfbm90el9kYXlsaWdodF9mYWxzZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIEZhbHNlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDE5OTAsIDEsIDEpCisgICAgICAgIHQxID0gdXRpbHMubG9jYWx0aW1lKHQwKQorICAgICAgICB0MiA9IHV0aWxzLmxvY2FsdGltZSh0MC5yZXBsYWNlKHR6aW5mbz1Ob25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MSwgdDIpCisKKyAgICAjIFhYWDogTmVlZCBhIG1vcmUgcm9idXN0IHRlc3QgZm9yIE9sc29uJ3MgdHpkYXRhCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyksCisgICAgICAgICAgICAgICAgICAgICAiV2luZG93cyBkb2VzIG5vdCB1c2UgT2xzb24ncyBUWiBkYXRhYmFzZSIpCisgICAgQHRlc3Quc3VwcG9ydC5ydW5fd2l0aF90eignRXVyb3BlL0tpZXYnKQorICAgIGRlZiB0ZXN0X3ZhcmlhYmxlX3R6bmFtZShzZWxmKToKKyAgICAgICAgdDAgPSBkYXRldGltZS5kYXRldGltZSgxOTg0LCAxLCAxLCB0emluZm89ZGF0ZXRpbWUudGltZXpvbmUudXRjKQorICAgICAgICB0MSA9IHV0aWxzLmxvY2FsdGltZSh0MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MS50em5hbWUoKSwgJ01TSycpCisgICAgICAgIHQwID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMTk5NCwgMSwgMSwgdHppbmZvPWRhdGV0aW1lLnRpbWV6b25lLnV0YykKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEudHpuYW1lKCksICdFRVQnKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvdGVzdF9lbWFpbF90b3J0dXJlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90b3J0dXJlX3Rlc3QucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L3Rlc3RfZW1haWxfdG9ydHVyZS5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC90b3J0dXJlX3Rlc3QucHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW51bWVyYXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKaW5kZXggMDk1ODIwYi4uMmU5MDRjZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKK2ltcG9ydCBwaWNrbGUKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKQEAgLTYxLDcgKzYyLDI1IEBACiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZgogCi1jbGFzcyBFbnVtZXJhdGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBQaWNrbGVUZXN0OgorICAgICMgSGVscGVyIHRvIGNoZWNrIHBpY2tsYWJpbGl0eQorICAgIGRlZiBjaGVja19waWNrbGUoc2VsZiwgaXRvcmcsIHNlcSk6CisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXRvcmcpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBzZXEpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlcVsxOl0pCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgc2VxWzE6XSkKKworY2xhc3MgRW51bWVyYXRlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UsIFBpY2tsZVRlc3QpOgogCiAgICAgZW51bSA9IGVudW1lcmF0ZQogICAgIHNlcSwgcmVzID0gJ2FiYycsIFsoMCwnYScpLCAoMSwnYicpLCAoMiwnYycpXQpAQCAtNzMsNiArOTIsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc2VsZi5lbnVtKHNlbGYuc2VxKSksIHNlbGYucmVzKQogICAgICAgICBzZWxmLmVudW0uX19kb2NfXwogCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3BpY2tsZShzZWxmLmVudW0oc2VsZi5zZXEpLCBzZWxmLnJlcykKKwogICAgIGRlZiB0ZXN0X2dldGl0ZW1zZXFuKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc2VsZi5lbnVtKEcoc2VsZi5zZXEpKSksIHNlbGYucmVzKQogICAgICAgICBlID0gc2VsZi5lbnVtKEcoJycpKQpAQCAtMTI2LDcgKzE0OCw3IEBACiAgICAgc2VxID0gcmFuZ2UoMTAsMjAwMDAsMikKICAgICByZXMgPSBsaXN0KHppcChyYW5nZSgyMDAwMCksIHNlcSkpCiAKLWNsYXNzIFRlc3RSZXZlcnNlZCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0UmV2ZXJzZWQodW5pdHRlc3QuVGVzdENhc2UsIFBpY2tsZVRlc3QpOgogCiAgICAgZGVmIHRlc3Rfc2ltcGxlKHNlbGYpOgogICAgICAgICBjbGFzcyBBOgpAQCAtMjEyLDYgKzIzNCwxMCBAQAogICAgICAgICBuZ2kgPSBOb0dldEl0ZW0oKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJldmVyc2VkLCBuZ2kpCiAKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIGZvciBkYXRhIGluICdhYmMnLCByYW5nZSg1KSwgdHVwbGUoZW51bWVyYXRlKCdhYmMnKSksIHJhbmdlKDEsMTcsNSk6CisgICAgICAgICAgICBzZWxmLmNoZWNrX3BpY2tsZShyZXZlcnNlZChkYXRhKSwgbGlzdChkYXRhKVs6Oi0xXSkKKwogCiBjbGFzcyBFbnVtZXJhdGVTdGFydFRlc3RDYXNlKEVudW1lcmF0ZVRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lcG9sbC5weSBiL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkKaW5kZXggMDgzZmQ3Zi4uN2Y5NTQ3ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lcG9sbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5CkBAIC03NSw2ICs3NSw5IEBACiAgICAgICAgIGVwLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVwLmNsb3NlZCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXAuZmlsZW5vKQorICAgICAgICBpZiBoYXNhdHRyKHNlbGVjdCwgIkVQT0xMX0NMT0VYRUMiKToKKyAgICAgICAgICAgIHNlbGVjdC5lcG9sbChzZWxlY3QuRVBPTExfQ0xPRVhFQykuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2VsZWN0LmVwb2xsLCBmbGFncz0xMjM1NikKIAogICAgIGRlZiB0ZXN0X2JhZGNyZWF0ZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxlY3QuZXBvbGwsIDEsIDIsIDMpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkKaW5kZXggMjhkY2IyNC4uMWFkN2Y5NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weQpAQCAtOCw3ICs4LDggQEAKIGltcG9ydCBlcnJubwogCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKFRFU1RGTiwgY2FwdHVyZWRfb3V0cHV0LCBjaGVja19pbXBsX2RldGFpbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY3B5dGhvbl9vbmx5LCBnY19jb2xsZWN0LCBydW5fdW5pdHRlc3QsIHVubGluaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY3B5dGhvbl9vbmx5LCBnY19jb2xsZWN0LCBydW5fdW5pdHRlc3QsIG5vX3RyYWNpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVubGluaykKIAogY2xhc3MgTmFpdmVFeGNlcHRpb24oRXhjZXB0aW9uKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CkBAIC01NSw4ICs1Niw4IEBACiAgICAgICAgICAgICBmcC5jbG9zZSgpCiAgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQogCi0gICAgICAgIHNlbGYucmFpc2VfY2F0Y2goSU9FcnJvciwgIklPRXJyb3IiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBvcGVuLCAndGhpcyBmaWxlIGRvZXMgbm90IGV4aXN0JywgJ3InKQorICAgICAgICBzZWxmLnJhaXNlX2NhdGNoKE9TRXJyb3IsICJPU0Vycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3BlbiwgJ3RoaXMgZmlsZSBkb2VzIG5vdCBleGlzdCcsICdyJykKIAogICAgICAgICBzZWxmLnJhaXNlX2NhdGNoKEltcG9ydEVycm9yLCAiSW1wb3J0RXJyb3IiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvciwgX19pbXBvcnRfXywgInVuZGVmaW5lZF9tb2R1bGUiKQpAQCAtMjAxLDExICsyMDIsMzUgQEAKICAgICAgICAgZXhjZXB0IE5hbWVFcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFdpbmRvd3NFcnJvcigxMDAxKSksICIxMDAxIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFdpbmRvd3NFcnJvcigxMDAxLCAibWVzc2FnZSIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIltFcnJvciAxMDAxXSBtZXNzYWdlIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoV2luZG93c0Vycm9yKDEwMDEsICJtZXNzYWdlIikuZXJybm8sIDIyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChXaW5kb3dzRXJyb3IoMTAwMSwgIm1lc3NhZ2UiKS53aW5lcnJvciwgMTAwMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoV2luZG93c0Vycm9yLCBPU0Vycm9yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT1NFcnJvcigxMDAxKSksICIxMDAxIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9TRXJyb3IoMTAwMSwgIm1lc3NhZ2UiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbRXJybm8gMTAwMV0gbWVzc2FnZSIpCisgICAgICAgICAgICAjIFBPU0lYIGVycm5vICg5IGFrYSBFQkFERikgaXMgdW50cmFuc2xhdGVkCisgICAgICAgICAgICB3ID0gT1NFcnJvcig5LCAnZm9vJywgJ2JhcicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcuZXJybm8sIDkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcud2luZXJyb3IsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih3KSwgIltFcnJubyA5XSBmb286ICdiYXInIikKKyAgICAgICAgICAgICMgRVJST1JfUEFUSF9OT1RfRk9VTkQgKHdpbiBlcnJvciAzKSBiZWNvbWVzIEVOT0VOVCAoMikKKyAgICAgICAgICAgIHcgPSBPU0Vycm9yKDAsICdmb28nLCAnYmFyJywgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5lcnJubywgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody53aW5lcnJvciwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5zdHJlcnJvciwgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcuZmlsZW5hbWUsICdiYXInKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodyksICJbV2luRXJyb3IgM10gZm9vOiAnYmFyJyIpCisgICAgICAgICAgICAjIFVua25vd24gd2luIGVycm9yIGJlY29tZXMgRUlOVkFMICgyMikKKyAgICAgICAgICAgIHcgPSBPU0Vycm9yKDAsICdmb28nLCBOb25lLCAxMDAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LmVycm5vLCAyMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody53aW5lcnJvciwgMTAwMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5zdHJlcnJvciwgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcuZmlsZW5hbWUsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih3KSwgIltXaW5FcnJvciAxMDAxXSBmb28iKQorICAgICAgICAgICAgIyBOb24tbnVtZXJpYyAiZXJybm8iCisgICAgICAgICAgICB3ID0gT1NFcnJvcignYmFyJywgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcuZXJybm8sICdiYXInKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LndpbmVycm9yLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LnN0cmVycm9yLCAnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5maWxlbmFtZSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0QXR0cmlidXRlcyhzZWxmKToKICAgICAgICAgIyB0ZXN0IHRoYXQgZXhjZXB0aW9uIGF0dHJpYnV0ZXMgYXJlIGhhcHB5CkBAIC0yODcsMTEgKzMxMiwxMiBAQAogICAgICAgICAgICAgICAgIHsnYXJncyc6ICgnZm9vJywpLCAneCc6ICdmb28nfSksCiAgICAgICAgIF0KICAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBNb3JlIHRlc3RzIGFyZSBpbiB0ZXN0X1dpbmRvd3NFcnJvcgogICAgICAgICAgICAgZXhjZXB0aW9uTGlzdC5hcHBlbmQoCiAgICAgICAgICAgICAgICAgKFdpbmRvd3NFcnJvciwgKDEsICdzdHJFcnJvclN0cicsICdmaWxlbmFtZVN0cicpLAogICAgICAgICAgICAgICAgICAgICB7J2FyZ3MnIDogKDEsICdzdHJFcnJvclN0cicpLAotICAgICAgICAgICAgICAgICAgICAgJ3N0cmVycm9yJyA6ICdzdHJFcnJvclN0cicsICd3aW5lcnJvcicgOiAxLAotICAgICAgICAgICAgICAgICAgICAgJ2Vycm5vJyA6IDIyLCAnZmlsZW5hbWUnIDogJ2ZpbGVuYW1lU3RyJ30pCisgICAgICAgICAgICAgICAgICAgICAnc3RyZXJyb3InIDogJ3N0ckVycm9yU3RyJywgJ3dpbmVycm9yJyA6IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAnZXJybm8nIDogMSwgJ2ZpbGVuYW1lJyA6ICdmaWxlbmFtZVN0cid9KQogICAgICAgICAgICAgKQogICAgICAgICBleGNlcHQgTmFtZUVycm9yOgogICAgICAgICAgICAgcGFzcwpAQCAtMzc2LDE5ICs0MDIsMzcgQEAKIAogICAgIGRlZiB0ZXN0Q2hhaW5pbmdBdHRycyhzZWxmKToKICAgICAgICAgZSA9IEV4Y2VwdGlvbigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5fX2NvbnRleHRfXywgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLl9fY2F1c2VfXywgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NhdXNlX18pCiAKICAgICAgICAgZSA9IFR5cGVFcnJvcigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5fX2NvbnRleHRfXywgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLl9fY2F1c2VfXywgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NhdXNlX18pCiAKICAgICAgICAgY2xhc3MgTXlFeGNlcHRpb24oRW52aXJvbm1lbnRFcnJvcik6CiAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgZSA9IE15RXhjZXB0aW9uKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLl9fY29udGV4dF9fLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuX19jYXVzZV9fLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlLl9fY29udGV4dF9fKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlLl9fY2F1c2VfXykKKworICAgIGRlZiB0ZXN0Q2hhaW5pbmdEZXNjcmlwdG9ycyhzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICBlID0gZXhjCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NhdXNlX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZS5fX3N1cHByZXNzX2NvbnRleHRfXykKKworICAgICAgICBlLl9fY29udGV4dF9fID0gTmFtZUVycm9yKCkKKyAgICAgICAgZS5fX2NhdXNlX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlLl9fY29udGV4dF9fLCBOYW1lRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGUuX19jYXVzZV9fKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZS5fX3N1cHByZXNzX2NvbnRleHRfXykKKyAgICAgICAgZS5fX3N1cHByZXNzX2NvbnRleHRfXyA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZS5fX3N1cHByZXNzX2NvbnRleHRfXykKIAogICAgIGRlZiB0ZXN0S2V5d29yZEFyZ3Moc2VsZik6CiAgICAgICAgICMgdGVzdCB0aGF0IGJ1aWx0aW4gZXhjZXB0aW9uIGRvbid0IHRha2Uga2V5d29yZCBhcmdzLApAQCAtNDAzLDYgKzQ0Nyw3IEBACiAgICAgICAgIHggPSBEZXJpdmVkRXhjZXB0aW9uKGZhbmN5X2FyZz00MikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmZhbmN5X2FyZywgNDIpCiAKKyAgICBAbm9fdHJhY2luZwogICAgIGRlZiB0ZXN0SW5maW5pdGVSZWN1cnNpb24oc2VsZik6CiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICByZXR1cm4gZigpCkBAIC03NDIsNiArNzg3LDcgQEAKICAgICAgICAgdS5zdGFydCA9IDEwMDAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodSksICJjYW4ndCB0cmFuc2xhdGUgY2hhcmFjdGVycyBpbiBwb3NpdGlvbiAxMDAwLTQ6IDk2NTIzMDk1MTQ0MzY4NTcyNDk5NyIpCiAKKyAgICBAbm9fdHJhY2luZwogICAgIGRlZiB0ZXN0X2JhZGlzaW5zdGFuY2Uoc2VsZik6CiAgICAgICAgICMgQnVnICMyNTQyOiBpZiBpc3N1YmNsYXNzKGUsIE15RXhjZXB0aW9uKSByYWlzZXMgYW4gZXhjZXB0aW9uLAogICAgICAgICAjIGl0IHNob3VsZCBiZSBpZ25vcmVkCkBAIC04NTIsNiArODk4LDcgQEAKICAgICAgICAgICAgIHNlbGYuZmFpbCgiTWVtb3J5RXJyb3Igbm90IHJhaXNlZCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3IoKSwgTm9uZSkKIAorICAgIEBub190cmFjaW5nCiAgICAgZGVmIHRlc3RfcmVjdXJzaW9uX2Vycm9yX2NsZWFudXAoc2VsZik6CiAgICAgICAgICMgU2FtZSB0ZXN0IGFzIGFib3ZlLCBidXQgd2l0aCAicmVjdXJzaW9uIGV4Y2VlZGVkIiBlcnJvcnMKICAgICAgICAgY2xhc3MgQzoKQEAgLTg3OCw4ICs5MjUsMzUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT1RESVIsIGNtLmV4Y2VwdGlvbikKIAogCitjbGFzcyBJbXBvcnRFcnJvclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgICMgU2V0dGluZyAnbmFtZScgYW5kICdwYXRoJyBzaG91bGQgbm90IGJlIGEgcHJvYmxlbS4KKyAgICAgICAgZXhjID0gSW1wb3J0RXJyb3IoJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShleGMubmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjLnBhdGgpCisKKyAgICAgICAgZXhjID0gSW1wb3J0RXJyb3IoJ3Rlc3QnLCBuYW1lPSdzb21lbW9kdWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMubmFtZSwgJ3NvbWVtb2R1bGUnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShleGMucGF0aCkKKworICAgICAgICBleGMgPSBJbXBvcnRFcnJvcigndGVzdCcsIHBhdGg9J3NvbWVwYXRoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMucGF0aCwgJ3NvbWVwYXRoJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjLm5hbWUpCisKKyAgICAgICAgZXhjID0gSW1wb3J0RXJyb3IoJ3Rlc3QnLCBwYXRoPSdzb21lcGF0aCcsIG5hbWU9J3NvbWVuYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMubmFtZSwgJ3NvbWVuYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMucGF0aCwgJ3NvbWVwYXRoJykKKworICAgIGRlZiB0ZXN0X25vbl9zdHJfYXJndW1lbnQoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE1Nzc4CisgICAgICAgIGFyZyA9IGInYWJjJworICAgICAgICBleGMgPSBJbXBvcnRFcnJvcihhcmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGFyZyksIHN0cihleGMpKQorCisKIGRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoRXhjZXB0aW9uVGVzdHMpCisgICAgcnVuX3VuaXR0ZXN0KEV4Y2VwdGlvblRlc3RzLCBJbXBvcnRFcnJvclRlc3RzKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5IGIvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5CmluZGV4IDFmN2Y2MzAuLjZiNmMxMmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkKQEAgLTY2LDE3ICs2NiwxNyBAQAogICAgID4+PiBnKCkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBUeXBlRXJyb3I6IGcoKSB0YWtlcyBhdCBsZWFzdCAxIGFyZ3VtZW50ICgwIGdpdmVuKQorICAgIFR5cGVFcnJvcjogZygpIG1pc3NpbmcgMSByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50OiAneCcKIAogICAgID4+PiBnKCooKSkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBUeXBlRXJyb3I6IGcoKSB0YWtlcyBhdCBsZWFzdCAxIGFyZ3VtZW50ICgwIGdpdmVuKQorICAgIFR5cGVFcnJvcjogZygpIG1pc3NpbmcgMSByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50OiAneCcKIAogICAgID4+PiBnKCooKSwgKip7fSkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBUeXBlRXJyb3I6IGcoKSB0YWtlcyBhdCBsZWFzdCAxIGFyZ3VtZW50ICgwIGdpdmVuKQorICAgIFR5cGVFcnJvcjogZygpIG1pc3NpbmcgMSByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50OiAneCcKIAogICAgID4+PiBnKDEpCiAgICAgMSAoKSB7fQpAQCAtMTUxLDcgKzE1MSw3IEBACiAgICAgPj4+IGcoMSwgMiwgMywgKip7J3gnOiA0LCAneSc6IDV9KQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIC4uLgotICAgIFR5cGVFcnJvcjogZygpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgJ3gnCisgICAgVHlwZUVycm9yOiBnKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQgJ3gnCiAKICAgICA+Pj4gZigqKnsxOjJ9KQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKQEAgLTI2MywyOSArMjYzLDgwIEBACiAgICAgPj4+IGYoKip4KQogICAgIDEgMgogCi1BIG9ic2N1cmUgbWVzc2FnZToKK1RvbyBtYW55IGFyZ3VtZW50czoKIAotICAgID4+PiBkZWYgZihhLCBiKToKLSAgICAuLi4gICAgcGFzcwotICAgID4+PiBmKGI9MSkKKyAgICA+Pj4gZGVmIGYoKTogcGFzcworICAgID4+PiBmKDEpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgZXhhY3RseSAyIGFyZ3VtZW50cyAoMSBnaXZlbikKLQotVGhlIG51bWJlciBvZiBhcmd1bWVudHMgcGFzc2VkIGluIGluY2x1ZGVzIGtleXdvcmRzOgotCi0gICAgPj4+IGRlZiBmKGEpOgotICAgIC4uLiAgICBwYXNzCi0gICAgPj4+IGYoNiwgYT00LCAqKDEsIDIsIDMpKQorICAgIFR5cGVFcnJvcjogZigpIHRha2VzIDAgcG9zaXRpb25hbCBhcmd1bWVudHMgYnV0IDEgd2FzIGdpdmVuCisgICAgPj4+IGRlZiBmKGEpOiBwYXNzCisgICAgPj4+IGYoMSwgMikKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyBleGFjdGx5IDEgcG9zaXRpb25hbCBhcmd1bWVudCAoNSBnaXZlbikKLSAgICA+Pj4gZGVmIGYoYSwgKiwga3cpOgotICAgIC4uLiAgICBwYXNzCi0gICAgPj4+IGYoNiwgNCwga3c9NCkKKyAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyAxIHBvc2l0aW9uYWwgYXJndW1lbnQgYnV0IDIgd2VyZSBnaXZlbgorICAgID4+PiBkZWYgZihhLCBiPTEpOiBwYXNzCisgICAgPj4+IGYoMSwgMiwgMykKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyBleGFjdGx5IDEgcG9zaXRpb25hbCBhcmd1bWVudCAoMyBnaXZlbikKKyAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyBmcm9tIDEgdG8gMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBidXQgMyB3ZXJlIGdpdmVuCisgICAgPj4+IGRlZiBmKCosIGt3KTogcGFzcworICAgID4+PiBmKDEsIGt3PTMpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgMCBwb3NpdGlvbmFsIGFyZ3VtZW50cyBidXQgMSBwb3NpdGlvbmFsIGFyZ3VtZW50IChhbmQgMSBrZXl3b3JkLW9ubHkgYXJndW1lbnQpIHdlcmUgZ2l2ZW4KKyAgICA+Pj4gZGVmIGYoKiwga3csIGIpOiBwYXNzCisgICAgPj4+IGYoMSwgMiwgMywgYj0zLCBrdz0zKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIHRha2VzIDAgcG9zaXRpb25hbCBhcmd1bWVudHMgYnV0IDMgcG9zaXRpb25hbCBhcmd1bWVudHMgKGFuZCAyIGtleXdvcmQtb25seSBhcmd1bWVudHMpIHdlcmUgZ2l2ZW4KKyAgICA+Pj4gZGVmIGYoYSwgYj0yLCAqLCBrdyk6IHBhc3MKKyAgICA+Pj4gZigyLCAzLCA0LCBrdz00KQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIHRha2VzIGZyb20gMSB0byAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIGJ1dCAzIHBvc2l0aW9uYWwgYXJndW1lbnRzIChhbmQgMSBrZXl3b3JkLW9ubHkgYXJndW1lbnQpIHdlcmUgZ2l2ZW4KKworVG9vIGZldyBhbmQgbWlzc2luZyBhcmd1bWVudHM6CisKKyAgICA+Pj4gZGVmIGYoYSk6IHBhc3MKKyAgICA+Pj4gZigpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgbWlzc2luZyAxIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJndW1lbnQ6ICdhJworICAgID4+PiBkZWYgZihhLCBiKTogcGFzcworICAgID4+PiBmKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSBtaXNzaW5nIDIgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmd1bWVudHM6ICdhJyBhbmQgJ2InCisgICAgPj4+IGRlZiBmKGEsIGIsIGMpOiBwYXNzCisgICAgPj4+IGYoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIG1pc3NpbmcgMyByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50czogJ2EnLCAnYicsIGFuZCAnYycKKyAgICA+Pj4gZGVmIGYoYSwgYiwgYywgZCwgZSk6IHBhc3MKKyAgICA+Pj4gZigpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgbWlzc2luZyA1IHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJndW1lbnRzOiAnYScsICdiJywgJ2MnLCAnZCcsIGFuZCAnZScKKyAgICA+Pj4gZGVmIGYoYSwgYj00LCBjPTUsIGQ9NSk6IHBhc3MKKyAgICA+Pj4gZihjPTEyLCBiPTkpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgbWlzc2luZyAxIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJndW1lbnQ6ICdhJworCitTYW1lIHdpdGgga2V5d29yZCBvbmx5IGFyZ3M6CisKKyAgICA+Pj4gZGVmIGYoKiwgdyk6IHBhc3MKKyAgICA+Pj4gZigpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgbWlzc2luZyAxIHJlcXVpcmVkIGtleXdvcmQtb25seSBhcmd1bWVudDogJ3cnCisgICAgPj4+IGRlZiBmKCosIGEsIGIsIGMsIGQsIGUpOiBwYXNzCisgICAgPj4+IGYoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIG1pc3NpbmcgNSByZXF1aXJlZCBrZXl3b3JkLW9ubHkgYXJndW1lbnRzOiAnYScsICdiJywgJ2MnLCAnZCcsIGFuZCAnZScKKwogIiIiCiAKIGltcG9ydCBzeXMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9mYXVsdGhhbmRsZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE3MWZhZgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5CkBAIC0wLDAgKzEsNTk1IEBACitmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc2lnbmFsCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBzY3JpcHRfaGVscGVyCitmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdW5pdHRlc3QKKwordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKKyAgICBIQVZFX1RIUkVBRFMgPSBUcnVlCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgSEFWRV9USFJFQURTID0gRmFsc2UKKworVElNRU9VVCA9IDAuNQorCit0cnk6CisgICAgZnJvbSByZXNvdXJjZSBpbXBvcnQgc2V0cmxpbWl0LCBSTElNSVRfQ09SRSwgZXJyb3IgYXMgcmVzb3VyY2VfZXJyb3IKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwcmVwYXJlX3N1YnByb2Nlc3MgPSBOb25lCitlbHNlOgorICAgIGRlZiBwcmVwYXJlX3N1YnByb2Nlc3MoKToKKyAgICAgICAgIyBkb24ndCBjcmVhdGUgY29yZSBmaWxlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNldHJsaW1pdChSTElNSVRfQ09SRSwgKDAsIDApKQorICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIHJlc291cmNlX2Vycm9yKToKKyAgICAgICAgICAgIHBhc3MKKworZGVmIGV4cGVjdGVkX3RyYWNlYmFjayhsaW5lbm8xLCBsaW5lbm8yLCBoZWFkZXIsIG1pbl9jb3VudD0xKToKKyAgICByZWdleCA9IGhlYWRlcgorICAgIHJlZ2V4ICs9ICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAlcyBpbiBmdW5jXG4nICUgbGluZW5vMQorICAgIHJlZ2V4ICs9ICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAlcyBpbiA8bW9kdWxlPicgJSBsaW5lbm8yCisgICAgaWYgMSA8IG1pbl9jb3VudDoKKyAgICAgICAgcmV0dXJuICdeJyArIChyZWdleCArICdcbicpICogKG1pbl9jb3VudCAtIDEpICsgcmVnZXgKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gJ14nICsgcmVnZXggKyAnJCcKKworQGNvbnRleHRtYW5hZ2VyCitkZWYgdGVtcG9yYXJ5X2ZpbGVuYW1lKCk6CisgICAgZmlsZW5hbWUgPSB0ZW1wZmlsZS5ta3RlbXAoKQorICAgIHRyeToKKyAgICAgICAgeWllbGQgZmlsZW5hbWUKKyAgICBmaW5hbGx5OgorICAgICAgICBzdXBwb3J0LnVubGluayhmaWxlbmFtZSkKKworY2xhc3MgRmF1bHRIYW5kbGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBnZXRfb3V0cHV0KHNlbGYsIGNvZGUsIGZpbGVuYW1lPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUnVuIHRoZSBzcGVjaWZpZWQgY29kZSBpbiBQeXRob24gKGluIGEgbmV3IGNoaWxkIHByb2Nlc3MpIGFuZCByZWFkIHRoZQorICAgICAgICBvdXRwdXQgZnJvbSB0aGUgc3RhbmRhcmQgZXJyb3Igb3IgZnJvbSBhIGZpbGUgKGlmIGZpbGVuYW1lIGlzIHNldCkuCisgICAgICAgIFJldHVybiB0aGUgb3V0cHV0IGxpbmVzIGFzIGEgbGlzdC4KKworICAgICAgICBTdHJpcCB0aGUgcmVmZXJlbmNlIGNvdW50IGZyb20gdGhlIHN0YW5kYXJkIGVycm9yIGZvciBQeXRob24gZGVidWcKKyAgICAgICAgYnVpbGQsIGFuZCByZXBsYWNlICJDdXJyZW50IHRocmVhZCAweDAwMDA3ZjhkOGZiZDk3MDAiIGJ5ICJDdXJyZW50CisgICAgICAgIHRocmVhZCBYWFgiLgorICAgICAgICAiIiIKKyAgICAgICAgb3B0aW9ucyA9IHt9CisgICAgICAgIGlmIHByZXBhcmVfc3VicHJvY2VzczoKKyAgICAgICAgICAgIG9wdGlvbnNbJ3ByZWV4ZWNfZm4nXSA9IHByZXBhcmVfc3VicHJvY2VzcworICAgICAgICBwcm9jZXNzID0gc2NyaXB0X2hlbHBlci5zcGF3bl9weXRob24oJy1jJywgY29kZSwgKipvcHRpb25zKQorICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICAgICBleGl0Y29kZSA9IHByb2Nlc3Mud2FpdCgpCisgICAgICAgIG91dHB1dCA9IHN1cHBvcnQuc3RyaXBfcHl0aG9uX3N0ZGVycihzdGRvdXQpCisgICAgICAgIG91dHB1dCA9IG91dHB1dC5kZWNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQorICAgICAgICBpZiBmaWxlbmFtZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAnJykKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgZnA6CisgICAgICAgICAgICAgICAgb3V0cHV0ID0gZnAucmVhZCgpCisgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQuZGVjb2RlKCdhc2NpaScsICdiYWNrc2xhc2hyZXBsYWNlJykKKyAgICAgICAgb3V0cHV0ID0gcmUuc3ViKCdDdXJyZW50IHRocmVhZCAweFswLTlhLWZdKycsCisgICAgICAgICAgICAgICAgICAgICAgICAnQ3VycmVudCB0aHJlYWQgWFhYJywKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCkKKyAgICAgICAgcmV0dXJuIG91dHB1dC5zcGxpdGxpbmVzKCksIGV4aXRjb2RlCisKKyAgICBkZWYgY2hlY2tfZmF0YWxfZXJyb3Ioc2VsZiwgY29kZSwgbGluZV9udW1iZXIsIG5hbWVfcmVnZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPU5vbmUsIGFsbF90aHJlYWRzPVRydWUsIG90aGVyX3JlZ2V4PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgQ2hlY2sgdGhhdCB0aGUgZmF1bHQgaGFuZGxlciBmb3IgZmF0YWwgZXJyb3JzIGlzIGVuYWJsZWQgYW5kIGNoZWNrIHRoZQorICAgICAgICB0cmFjZWJhY2sgZnJvbSB0aGUgY2hpbGQgcHJvY2VzcyBvdXRwdXQuCisKKyAgICAgICAgUmFpc2UgYW4gZXJyb3IgaWYgdGhlIG91dHB1dCBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuCisgICAgICAgICIiIgorICAgICAgICBpZiBhbGxfdGhyZWFkczoKKyAgICAgICAgICAgIGhlYWRlciA9ICdDdXJyZW50IHRocmVhZCBYWFgnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBoZWFkZXIgPSAnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KScKKyAgICAgICAgcmVnZXggPSAiIiIKK15GYXRhbCBQeXRob24gZXJyb3I6IHtuYW1lfQorCit7aGVhZGVyfToKKyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIHtsaW5lbm99IGluIDxtb2R1bGU+CisiIiIuc3RyaXAoKQorICAgICAgICByZWdleCA9IHJlZ2V4LmZvcm1hdCgKKyAgICAgICAgICAgIGxpbmVubz1saW5lX251bWJlciwKKyAgICAgICAgICAgIG5hbWU9bmFtZV9yZWdleCwKKyAgICAgICAgICAgIGhlYWRlcj1yZS5lc2NhcGUoaGVhZGVyKSkKKyAgICAgICAgaWYgb3RoZXJfcmVnZXg6CisgICAgICAgICAgICByZWdleCArPSAnfCcgKyBvdGhlcl9yZWdleAorICAgICAgICB3aXRoIHN1cHBvcnQuc3VwcHJlc3NfY3Jhc2hfcG9wdXAoKToKKyAgICAgICAgICAgIG91dHB1dCwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWUpCisgICAgICAgIG91dHB1dCA9ICdcbicuam9pbihvdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0cHV0LCByZWdleCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChleGl0Y29kZSwgMCkKKworICAgIGRlZiB0ZXN0X3JlYWRfbnVsbChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5lbmFibGUoKQorZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoKQorIiIiLnN0cmlwKCksCisgICAgICAgICAgICAzLAorICAgICAgICAgICAgIyBJc3N1ZSAjMTI3MDA6IFJlYWQgTlVMTCByYWlzZXMgU0lHSUxMIG9uIE1hYyBPUyBYIExpb24KKyAgICAgICAgICAgICcoPzpTZWdtZW50YXRpb24gZmF1bHR8QnVzIGVycm9yfElsbGVnYWwgaW5zdHJ1Y3Rpb24pJykKKworICAgIGRlZiB0ZXN0X3NpZ3NlZ3Yoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuZW5hYmxlKCkKK2ZhdWx0aGFuZGxlci5fc2lnc2VndigpCisiIiIuc3RyaXAoKSwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAnU2VnbWVudGF0aW9uIGZhdWx0JykKKworICAgIGRlZiB0ZXN0X3NpZ2FicnQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuZW5hYmxlKCkKK2ZhdWx0aGFuZGxlci5fc2lnYWJydCgpCisiIiIuc3RyaXAoKSwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAnQWJvcnRlZCcpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLAorICAgICAgICAgICAgICAgICAgICAgIlNJR0ZQRSBjYW5ub3QgYmUgY2F1Z2h0IG9uIFdpbmRvd3MiKQorICAgIGRlZiB0ZXN0X3NpZ2ZwZShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5lbmFibGUoKQorZmF1bHRoYW5kbGVyLl9zaWdmcGUoKQorIiIiLnN0cmlwKCksCisgICAgICAgICAgICAzLAorICAgICAgICAgICAgJ0Zsb2F0aW5nIHBvaW50IGV4Y2VwdGlvbicpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ19zaWdidXMnKSwKKyAgICAgICAgICAgICAgICAgICAgICJuZWVkIGZhdWx0aGFuZGxlci5fc2lnYnVzKCkiKQorICAgIGRlZiB0ZXN0X3NpZ2J1cyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5lbmFibGUoKQorZmF1bHRoYW5kbGVyLl9zaWdidXMoKQorIiIiLnN0cmlwKCksCisgICAgICAgICAgICAzLAorICAgICAgICAgICAgJ0J1cyBlcnJvcicpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ19zaWdpbGwnKSwKKyAgICAgICAgICAgICAgICAgICAgICJuZWVkIGZhdWx0aGFuZGxlci5fc2lnaWxsKCkiKQorICAgIGRlZiB0ZXN0X3NpZ2lsbChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5lbmFibGUoKQorZmF1bHRoYW5kbGVyLl9zaWdpbGwoKQorIiIiLnN0cmlwKCksCisgICAgICAgICAgICAzLAorICAgICAgICAgICAgJ0lsbGVnYWwgaW5zdHJ1Y3Rpb24nKQorCisgICAgZGVmIHRlc3RfZmF0YWxfZXJyb3Ioc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuX2ZhdGFsX2Vycm9yKGIneHl6JykKKyIiIi5zdHJpcCgpLAorICAgICAgICAgICAgMiwKKyAgICAgICAgICAgICd4eXonKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnb3BlbmJzZCcpIGFuZCBIQVZFX1RIUkVBRFMsCisgICAgICAgICAgICAgICAgICAgICAiSXNzdWUgIzEyODY4OiBzaWdhbHRzdGFjaygpIGRvZXNuJ3Qgd29yayBvbiAiCisgICAgICAgICAgICAgICAgICAgICAiT3BlbkJTRCBpZiBQeXRob24gaXMgY29tcGlsZWQgd2l0aCBwdGhyZWFkIikKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ19zdGFja19vdmVyZmxvdycpLAorICAgICAgICAgICAgICAgICAgICAgJ25lZWQgZmF1bHRoYW5kbGVyLl9zdGFja19vdmVyZmxvdygpJykKKyAgICBkZWYgdGVzdF9zdGFja19vdmVyZmxvdyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5lbmFibGUoKQorZmF1bHRoYW5kbGVyLl9zdGFja19vdmVyZmxvdygpCisiIiIuc3RyaXAoKSwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAnKD86U2VnbWVudGF0aW9uIGZhdWx0fEJ1cyBlcnJvciknLAorICAgICAgICAgICAgb3RoZXJfcmVnZXg9J3VuYWJsZSB0byByYWlzZSBhIHN0YWNrIG92ZXJmbG93JykKKworICAgIGRlZiB0ZXN0X2dpbF9yZWxlYXNlZChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5lbmFibGUoKQorZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoVHJ1ZSkKKyIiIi5zdHJpcCgpLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICcoPzpTZWdtZW50YXRpb24gZmF1bHR8QnVzIGVycm9yfElsbGVnYWwgaW5zdHJ1Y3Rpb24pJykKKworICAgIGRlZiB0ZXN0X2VuYWJsZV9maWxlKHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgorICAgICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK291dHB1dCA9IG9wZW4oe2ZpbGVuYW1lfSwgJ3diJykKK2ZhdWx0aGFuZGxlci5lbmFibGUob3V0cHV0KQorZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoKQorIiIiLnN0cmlwKCkuZm9ybWF0KGZpbGVuYW1lPXJlcHIoZmlsZW5hbWUpKSwKKyAgICAgICAgICAgICAgICA0LAorICAgICAgICAgICAgICAgICcoPzpTZWdtZW50YXRpb24gZmF1bHR8QnVzIGVycm9yfElsbGVnYWwgaW5zdHJ1Y3Rpb24pJywKKyAgICAgICAgICAgICAgICBmaWxlbmFtZT1maWxlbmFtZSkKKworICAgIGRlZiB0ZXN0X2VuYWJsZV9zaW5nbGVfdGhyZWFkKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLmVuYWJsZShhbGxfdGhyZWFkcz1GYWxzZSkKK2ZhdWx0aGFuZGxlci5fcmVhZF9udWxsKCkKKyIiIi5zdHJpcCgpLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICcoPzpTZWdtZW50YXRpb24gZmF1bHR8QnVzIGVycm9yfElsbGVnYWwgaW5zdHJ1Y3Rpb24pJywKKyAgICAgICAgICAgIGFsbF90aHJlYWRzPUZhbHNlKQorCisgICAgZGVmIHRlc3RfZGlzYWJsZShzZWxmKToKKyAgICAgICAgY29kZSA9ICIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLmVuYWJsZSgpCitmYXVsdGhhbmRsZXIuZGlzYWJsZSgpCitmYXVsdGhhbmRsZXIuX3JlYWRfbnVsbCgpCisiIiIuc3RyaXAoKQorICAgICAgICBub3RfZXhwZWN0ZWQgPSAnRmF0YWwgUHl0aG9uIGVycm9yJworICAgICAgICB3aXRoIHN1cHBvcnQuc3VwcHJlc3NfY3Jhc2hfcG9wdXAoKToKKyAgICAgICAgICAgIHN0ZGVyciwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSkKKyAgICAgICAgc3RkZXIgPSAnXG4nLmpvaW4oc3RkZXJyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobm90X2V4cGVjdGVkIG5vdCBpbiBzdGRlcnIsCisgICAgICAgICAgICAgICAgICAgICAiJXIgaXMgcHJlc2VudCBpbiAlciIgJSAobm90X2V4cGVjdGVkLCBzdGRlcnIpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGV4aXRjb2RlLCAwKQorCisgICAgZGVmIHRlc3RfaXNfZW5hYmxlZChzZWxmKToKKyAgICAgICAgb3JpZ19zdGRlcnIgPSBzeXMuc3RkZXJyCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgcmVncnRlc3QgbWF5IHJlcGxhY2Ugc3lzLnN0ZGVyciBieSBpby5TdHJpbmdJTyBvYmplY3QsIGJ1dAorICAgICAgICAgICAgIyBmYXVsdGhhbmRsZXIuZW5hYmxlKCkgcmVxdWlyZXMgdGhhdCBzeXMuc3RkZXJyIGhhcyBhIGZpbGVubygpCisgICAgICAgICAgICAjIG1ldGhvZAorICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHN5cy5fX3N0ZGVycl9fCisKKyAgICAgICAgICAgIHdhc19lbmFibGVkID0gZmF1bHRoYW5kbGVyLmlzX2VuYWJsZWQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5lbmFibGUoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmYXVsdGhhbmRsZXIuaXNfZW5hYmxlZCgpKQorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kaXNhYmxlKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZhdWx0aGFuZGxlci5pc19lbmFibGVkKCkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGlmIHdhc19lbmFibGVkOgorICAgICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZGlzYWJsZSgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzeXMuc3RkZXJyID0gb3JpZ19zdGRlcnIKKworICAgIGRlZiB0ZXN0X2Rpc2FibGVkX2J5X2RlZmF1bHQoc2VsZik6CisgICAgICAgICMgQnkgZGVmYXVsdCwgdGhlIG1vZHVsZSBzaG91bGQgYmUgZGlzYWJsZWQKKyAgICAgICAgY29kZSA9ICJpbXBvcnQgZmF1bHRoYW5kbGVyOyBwcmludChmYXVsdGhhbmRsZXIuaXNfZW5hYmxlZCgpKSIKKyAgICAgICAgcmMsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygiLWMiLCBjb2RlKQorICAgICAgICBzdGRvdXQgPSAoc3Rkb3V0ICsgc3RkZXJyKS5zdHJpcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCBiIkZhbHNlIikKKworICAgIGRlZiB0ZXN0X3N5c194b3B0aW9ucyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHB5dGhvbiAtWCBmYXVsdGhhbmRsZXIKKyAgICAgICAgY29kZSA9ICJpbXBvcnQgZmF1bHRoYW5kbGVyOyBwcmludChmYXVsdGhhbmRsZXIuaXNfZW5hYmxlZCgpKSIKKyAgICAgICAgcmMsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygiLVgiLCAiZmF1bHRoYW5kbGVyIiwgIi1jIiwgY29kZSkKKyAgICAgICAgc3Rkb3V0ID0gKHN0ZG91dCArIHN0ZGVycikuc3RyaXAoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgYiJUcnVlIikKKworICAgIGRlZiBjaGVja19kdW1wX3RyYWNlYmFjayhzZWxmLCBmaWxlbmFtZSk6CisgICAgICAgICIiIgorICAgICAgICBFeHBsaWNpdGx5IGNhbGwgZHVtcF90cmFjZWJhY2soKSBmdW5jdGlvbiBhbmQgY2hlY2sgaXRzIG91dHB1dC4KKyAgICAgICAgUmFpc2UgYW4gZXJyb3IgaWYgdGhlIG91dHB1dCBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuCisgICAgICAgICIiIgorICAgICAgICBjb2RlID0gIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCisKK2RlZiBmdW5jQigpOgorICAgIGlmIHtoYXNfZmlsZW5hbWV9OgorICAgICAgICB3aXRoIG9wZW4oe2ZpbGVuYW1lfSwgIndiIikgYXMgZnA6CisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2soZnAsIGFsbF90aHJlYWRzPUZhbHNlKQorICAgIGVsc2U6CisgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFjayhhbGxfdGhyZWFkcz1GYWxzZSkKKworZGVmIGZ1bmNBKCk6CisgICAgZnVuY0IoKQorCitmdW5jQSgpCisiIiIuc3RyaXAoKQorICAgICAgICBjb2RlID0gY29kZS5mb3JtYXQoCisgICAgICAgICAgICBmaWxlbmFtZT1yZXByKGZpbGVuYW1lKSwKKyAgICAgICAgICAgIGhhc19maWxlbmFtZT1ib29sKGZpbGVuYW1lKSwKKyAgICAgICAgKQorICAgICAgICBpZiBmaWxlbmFtZToKKyAgICAgICAgICAgIGxpbmVubyA9IDYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxpbmVubyA9IDgKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KTonLAorICAgICAgICAgICAgJyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lICVzIGluIGZ1bmNCJyAlIGxpbmVubywKKyAgICAgICAgICAgICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAxMSBpbiBmdW5jQScsCisgICAgICAgICAgICAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgMTMgaW4gPG1vZHVsZT4nCisgICAgICAgIF0KKyAgICAgICAgdHJhY2UsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKKworICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrKE5vbmUpCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19maWxlKHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgorICAgICAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFjayhmaWxlbmFtZSkKKworICAgIGRlZiB0ZXN0X3RydW5jYXRlKHNlbGYpOgorICAgICAgICBtYXhsZW4gPSA1MDAKKyAgICAgICAgZnVuY19uYW1lID0gJ3gnICogKG1heGxlbiArIDUwKQorICAgICAgICB0cnVuY2F0ZWQgPSAneCcgKiBtYXhsZW4gKyAnLi4uJworICAgICAgICBjb2RlID0gIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCisKK2RlZiB7ZnVuY19uYW1lfSgpOgorICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFjayhhbGxfdGhyZWFkcz1GYWxzZSkKKwore2Z1bmNfbmFtZX0oKQorIiIiLnN0cmlwKCkKKyAgICAgICAgY29kZSA9IGNvZGUuZm9ybWF0KAorICAgICAgICAgICAgZnVuY19uYW1lPWZ1bmNfbmFtZSwKKyAgICAgICAgKQorICAgICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOicsCisgICAgICAgICAgICAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgNCBpbiAlcycgJSB0cnVuY2F0ZWQsCisgICAgICAgICAgICAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgNiBpbiA8bW9kdWxlPicKKyAgICAgICAgXQorICAgICAgICB0cmFjZSwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBIQVZFX1RIUkVBRFMsICduZWVkIHRocmVhZHMnKQorICAgIGRlZiBjaGVja19kdW1wX3RyYWNlYmFja190aHJlYWRzKHNlbGYsIGZpbGVuYW1lKToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGwgZXhwbGljaXRseSBkdW1wX3RyYWNlYmFjayhhbGxfdGhyZWFkcz1UcnVlKSBhbmQgY2hlY2sgdGhlIG91dHB1dC4KKyAgICAgICAgUmFpc2UgYW4gZXJyb3IgaWYgdGhlIG91dHB1dCBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuCisgICAgICAgICIiIgorICAgICAgICBjb2RlID0gIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmcm9tIHRocmVhZGluZyBpbXBvcnQgVGhyZWFkLCBFdmVudAoraW1wb3J0IHRpbWUKKworZGVmIGR1bXAoKToKKyAgICBpZiB7ZmlsZW5hbWV9OgorICAgICAgICB3aXRoIG9wZW4oe2ZpbGVuYW1lfSwgIndiIikgYXMgZnA6CisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2soZnAsIGFsbF90aHJlYWRzPVRydWUpCisgICAgZWxzZToKKyAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrKGFsbF90aHJlYWRzPVRydWUpCisKK2NsYXNzIFdhaXRlcihUaHJlYWQpOgorICAgICMgYXZvaWQgYmxvY2tpbmcgaWYgdGhlIG1haW4gdGhyZWFkIHJhaXNlcyBhbiBleGNlcHRpb24uCisgICAgZGFlbW9uID0gVHJ1ZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBUaHJlYWQuX19pbml0X18oc2VsZikKKyAgICAgICAgc2VsZi5ydW5uaW5nID0gRXZlbnQoKQorICAgICAgICBzZWxmLnN0b3AgPSBFdmVudCgpCisKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bm5pbmcuc2V0KCkKKyAgICAgICAgc2VsZi5zdG9wLndhaXQoKQorCit3YWl0ZXIgPSBXYWl0ZXIoKQord2FpdGVyLnN0YXJ0KCkKK3dhaXRlci5ydW5uaW5nLndhaXQoKQorZHVtcCgpCit3YWl0ZXIuc3RvcC5zZXQoKQord2FpdGVyLmpvaW4oKQorIiIiLnN0cmlwKCkKKyAgICAgICAgY29kZSA9IGNvZGUuZm9ybWF0KGZpbGVuYW1lPXJlcHIoZmlsZW5hbWUpKQorICAgICAgICBvdXRwdXQsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lKQorICAgICAgICBvdXRwdXQgPSAnXG4nLmpvaW4ob3V0cHV0KQorICAgICAgICBpZiBmaWxlbmFtZToKKyAgICAgICAgICAgIGxpbmVubyA9IDgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxpbmVubyA9IDEwCisgICAgICAgIHJlZ2V4ID0gIiIiCiteVGhyZWFkIDB4WzAtOWEtZl0rOgorKD86ICBGaWxlICIuKnRocmVhZGluZy5weSIsIGxpbmUgWzAtOV0rIGluIFtfYS16XSsKKyl7ezEsM319ICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgMjMgaW4gcnVuCisgIEZpbGUgIi4qdGhyZWFkaW5nLnB5IiwgbGluZSBbMC05XSsgaW4gX2Jvb3RzdHJhcF9pbm5lcgorICBGaWxlICIuKnRocmVhZGluZy5weSIsIGxpbmUgWzAtOV0rIGluIF9ib290c3RyYXAKKworQ3VycmVudCB0aHJlYWQgWFhYOgorICBGaWxlICI8c3RyaW5nPiIsIGxpbmUge2xpbmVub30gaW4gZHVtcAorICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgMjggaW4gPG1vZHVsZT4kCisiIiIuc3RyaXAoKQorICAgICAgICByZWdleCA9IHJlZ2V4LmZvcm1hdChsaW5lbm89bGluZW5vKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dHB1dCwgcmVnZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja190aHJlYWRzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX3RocmVhZHMoTm9uZSkKKworICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX3RocmVhZHNfZmlsZShzZWxmKToKKyAgICAgICAgd2l0aCB0ZW1wb3JhcnlfZmlsZW5hbWUoKSBhcyBmaWxlbmFtZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfdGhyZWFkcyhmaWxlbmFtZSkKKworICAgIGRlZiBfY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoc2VsZiwgcmVwZWF0LCBjYW5jZWwsIGZpbGVuYW1lLCBsb29wcyk6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayBob3cgbWFueSB0aW1lcyB0aGUgdHJhY2ViYWNrIGlzIHdyaXR0ZW4gaW4gdGltZW91dCB4IDIuNSBzZWNvbmRzLAorICAgICAgICBvciB0aW1lb3V0IHggMy41IHNlY29uZHMgaWYgY2FuY2VsIGlzIFRydWU6IDEsIDIgb3IgMyB0aW1lcyBkZXBlbmRpbmcKKyAgICAgICAgb24gcmVwZWF0IGFuZCBjYW5jZWwgb3B0aW9ucy4KKworICAgICAgICBSYWlzZSBhbiBlcnJvciBpZiB0aGUgb3V0cHV0IGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdCBmb3JtYXQuCisgICAgICAgICIiIgorICAgICAgICB0aW1lb3V0X3N0ciA9IHN0cihkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz1USU1FT1VUKSkKKyAgICAgICAgY29kZSA9ICIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgoraW1wb3J0IHRpbWUKKworZGVmIGZ1bmModGltZW91dCwgcmVwZWF0LCBjYW5jZWwsIGZpbGUsIGxvb3BzKToKKyAgICBmb3IgbG9vcCBpbiByYW5nZShsb29wcyk6CisgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcih0aW1lb3V0LCByZXBlYXQ9cmVwZWF0LCBmaWxlPWZpbGUpCisgICAgICAgIGlmIGNhbmNlbDoKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQorICAgICAgICB0aW1lLnNsZWVwKHRpbWVvdXQgKiA1KQorICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKKwordGltZW91dCA9IHt0aW1lb3V0fQorcmVwZWF0ID0ge3JlcGVhdH0KK2NhbmNlbCA9IHtjYW5jZWx9Citsb29wcyA9IHtsb29wc30KK2lmIHtoYXNfZmlsZW5hbWV9OgorICAgIGZpbGUgPSBvcGVuKHtmaWxlbmFtZX0sICJ3YiIpCitlbHNlOgorICAgIGZpbGUgPSBOb25lCitmdW5jKHRpbWVvdXQsIHJlcGVhdCwgY2FuY2VsLCBmaWxlLCBsb29wcykKK2lmIGZpbGUgaXMgbm90IE5vbmU6CisgICAgZmlsZS5jbG9zZSgpCisiIiIuc3RyaXAoKQorICAgICAgICBjb2RlID0gY29kZS5mb3JtYXQoCisgICAgICAgICAgICB0aW1lb3V0PVRJTUVPVVQsCisgICAgICAgICAgICByZXBlYXQ9cmVwZWF0LAorICAgICAgICAgICAgY2FuY2VsPWNhbmNlbCwKKyAgICAgICAgICAgIGxvb3BzPWxvb3BzLAorICAgICAgICAgICAgaGFzX2ZpbGVuYW1lPWJvb2woZmlsZW5hbWUpLAorICAgICAgICAgICAgZmlsZW5hbWU9cmVwcihmaWxlbmFtZSksCisgICAgICAgICkKKyAgICAgICAgdHJhY2UsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lKQorICAgICAgICB0cmFjZSA9ICdcbicuam9pbih0cmFjZSkKKworICAgICAgICBpZiBub3QgY2FuY2VsOgorICAgICAgICAgICAgY291bnQgPSBsb29wcworICAgICAgICAgICAgaWYgcmVwZWF0OgorICAgICAgICAgICAgICAgIGNvdW50ICo9IDIKKyAgICAgICAgICAgIGhlYWRlciA9IHInVGltZW91dCBcKCVzXCkhXG5UaHJlYWQgMHhbMC05YS1mXSs6XG4nICUgdGltZW91dF9zdHIKKyAgICAgICAgICAgIHJlZ2V4ID0gZXhwZWN0ZWRfdHJhY2ViYWNrKDksIDIwLCBoZWFkZXIsIG1pbl9jb3VudD1jb3VudCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgodHJhY2UsIHJlZ2V4KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrX2xhdGVyJyksCisgICAgICAgICAgICAgICAgICAgICAnbmVlZCBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIoKScpCisgICAgZGVmIGNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHNlbGYsIHJlcGVhdD1GYWxzZSwgY2FuY2VsPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT1GYWxzZSwgdHdpY2U9RmFsc2UpOgorICAgICAgICBpZiB0d2ljZToKKyAgICAgICAgICAgIGxvb3BzID0gMgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9vcHMgPSAxCisgICAgICAgIGlmIGZpbGU6CisgICAgICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgorICAgICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHJlcGVhdCwgY2FuY2VsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbG9vcHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihyZXBlYXQsIGNhbmNlbCwgTm9uZSwgbG9vcHMpCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19sYXRlcihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcigpCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19sYXRlcl9yZXBlYXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIocmVwZWF0PVRydWUpCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19sYXRlcl9jYW5jZWwoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoY2FuY2VsPVRydWUpCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19sYXRlcl9maWxlKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKGZpbGU9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX2xhdGVyX3R3aWNlKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHR3aWNlPVRydWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgInJlZ2lzdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAibmVlZCBmYXVsdGhhbmRsZXIucmVnaXN0ZXIiKQorICAgIGRlZiBjaGVja19yZWdpc3RlcihzZWxmLCBmaWxlbmFtZT1GYWxzZSwgYWxsX3RocmVhZHM9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgIHVucmVnaXN0ZXI9RmFsc2UsIGNoYWluPUZhbHNlKToKKyAgICAgICAgIiIiCisgICAgICAgIFJlZ2lzdGVyIGEgaGFuZGxlciBkaXNwbGF5aW5nIHRoZSB0cmFjZWJhY2sgb24gYSB1c2VyIHNpZ25hbC4gUmFpc2UgdGhlCisgICAgICAgIHNpZ25hbCBhbmQgY2hlY2sgdGhlIHdyaXR0ZW4gdHJhY2ViYWNrLgorCisgICAgICAgIElmIGNoYWluIGlzIFRydWUsIGNoZWNrIHRoYXQgdGhlIHByZXZpb3VzIHNpZ25hbCBoYW5kbGVyIGlzIGNhbGxlZC4KKworICAgICAgICBSYWlzZSBhbiBlcnJvciBpZiB0aGUgb3V0cHV0IGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC4KKyAgICAgICAgIiIiCisgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdVU1IxCisgICAgICAgIGNvZGUgPSAiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ltcG9ydCBvcworaW1wb3J0IHNpZ25hbAoraW1wb3J0IHN5cworCitkZWYgZnVuYyhzaWdudW0pOgorICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bSkKKworZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgaGFuZGxlci5jYWxsZWQgPSBUcnVlCitoYW5kbGVyLmNhbGxlZCA9IEZhbHNlCisKK2V4aXRjb2RlID0gMAorc2lnbnVtID0ge3NpZ251bX0KK3VucmVnaXN0ZXIgPSB7dW5yZWdpc3Rlcn0KK2NoYWluID0ge2NoYWlufQorCitpZiB7aGFzX2ZpbGVuYW1lfToKKyAgICBmaWxlID0gb3Blbih7ZmlsZW5hbWV9LCAid2IiKQorZWxzZToKKyAgICBmaWxlID0gTm9uZQoraWYgY2hhaW46CisgICAgc2lnbmFsLnNpZ25hbChzaWdudW0sIGhhbmRsZXIpCitmYXVsdGhhbmRsZXIucmVnaXN0ZXIoc2lnbnVtLCBmaWxlPWZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgYWxsX3RocmVhZHM9e2FsbF90aHJlYWRzfSwgY2hhaW49e2NoYWlufSkKK2lmIHVucmVnaXN0ZXI6CisgICAgZmF1bHRoYW5kbGVyLnVucmVnaXN0ZXIoc2lnbnVtKQorZnVuYyhzaWdudW0pCitpZiBjaGFpbiBhbmQgbm90IGhhbmRsZXIuY2FsbGVkOgorICAgIGlmIGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgIG91dHB1dCA9IGZpbGUKKyAgICBlbHNlOgorICAgICAgICBvdXRwdXQgPSBzeXMuc3RkZXJyCisgICAgcHJpbnQoIkVycm9yOiBzaWduYWwgaGFuZGxlciBub3QgY2FsbGVkISIsIGZpbGU9b3V0cHV0KQorICAgIGV4aXRjb2RlID0gMQoraWYgZmlsZSBpcyBub3QgTm9uZToKKyAgICBmaWxlLmNsb3NlKCkKK3N5cy5leGl0KGV4aXRjb2RlKQorIiIiLnN0cmlwKCkKKyAgICAgICAgY29kZSA9IGNvZGUuZm9ybWF0KAorICAgICAgICAgICAgZmlsZW5hbWU9cmVwcihmaWxlbmFtZSksCisgICAgICAgICAgICBoYXNfZmlsZW5hbWU9Ym9vbChmaWxlbmFtZSksCisgICAgICAgICAgICBhbGxfdGhyZWFkcz1hbGxfdGhyZWFkcywKKyAgICAgICAgICAgIHNpZ251bT1zaWdudW0sCisgICAgICAgICAgICB1bnJlZ2lzdGVyPXVucmVnaXN0ZXIsCisgICAgICAgICAgICBjaGFpbj1jaGFpbiwKKyAgICAgICAgKQorICAgICAgICB0cmFjZSwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWUpCisgICAgICAgIHRyYWNlID0gJ1xuJy5qb2luKHRyYWNlKQorICAgICAgICBpZiBub3QgdW5yZWdpc3RlcjoKKyAgICAgICAgICAgIGlmIGFsbF90aHJlYWRzOgorICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ0N1cnJlbnQgdGhyZWFkIFhYWDpcbicKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVnZXggPSAnVHJhY2ViYWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOlxuJworICAgICAgICAgICAgcmVnZXggPSBleHBlY3RlZF90cmFjZWJhY2soNywgMjgsIHJlZ2V4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCh0cmFjZSwgcmVnZXgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCAnJykKKyAgICAgICAgaWYgdW5yZWdpc3RlcjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZXhpdGNvZGUsIDApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCAwKQorCisgICAgZGVmIHRlc3RfcmVnaXN0ZXIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcmVnaXN0ZXIoKQorCisgICAgZGVmIHRlc3RfdW5yZWdpc3RlcihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWdpc3Rlcih1bnJlZ2lzdGVyPVRydWUpCisKKyAgICBkZWYgdGVzdF9yZWdpc3Rlcl9maWxlKHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgorICAgICAgICAgICAgc2VsZi5jaGVja19yZWdpc3RlcihmaWxlbmFtZT1maWxlbmFtZSkKKworICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX3RocmVhZHMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcmVnaXN0ZXIoYWxsX3RocmVhZHM9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX2NoYWluKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JlZ2lzdGVyKGNoYWluPVRydWUpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEZhdWx0SGFuZGxlclRlc3RzKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X2ZpbGUucHkKaW5kZXggYmIwZGE3OS4uYTc4ZGRmMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9maWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmlsZS5weQpAQCAtMTAsNyArMTAsNyBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyTGlzdAogCi1jbGFzcyBBdXRvRmlsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIEF1dG9GaWxlVGVzdHM6CiAgICAgIyBmaWxlIHRlc3RzIGZvciB3aGljaCBhIHRlc3QgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IHNldCB1cAogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMTI4LDE0ICsxMjgsMTQgQEAKICAgICBkZWYgdGVzdFJlYWRXaGVuV3JpdGluZyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgc2VsZi5mLnJlYWQpCiAKLWNsYXNzIENBdXRvRmlsZVRlc3RzKEF1dG9GaWxlVGVzdHMpOgorY2xhc3MgQ0F1dG9GaWxlVGVzdHMoQXV0b0ZpbGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIG9wZW4gPSBpby5vcGVuCiAKLWNsYXNzIFB5QXV0b0ZpbGVUZXN0cyhBdXRvRmlsZVRlc3RzKToKK2NsYXNzIFB5QXV0b0ZpbGVUZXN0cyhBdXRvRmlsZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgb3BlbiA9IHN0YXRpY21ldGhvZChweWlvLm9wZW4pCiAKIAotY2xhc3MgT3RoZXJGaWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgT3RoZXJGaWxlVGVzdHM6CiAKICAgICBkZWYgdGVzdE1vZGVTdHJpbmdzKHNlbGYpOgogICAgICAgICAjIGNoZWNrIGludmFsaWQgbW9kZSBzdHJpbmdzCkBAIC0zMjIsMjIgKzMyMiwxOCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3MudW5saW5rKFRFU1RGTikKIAotY2xhc3MgQ090aGVyRmlsZVRlc3RzKE90aGVyRmlsZVRlc3RzKToKK2NsYXNzIENPdGhlckZpbGVUZXN0cyhPdGhlckZpbGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIG9wZW4gPSBpby5vcGVuCiAKLWNsYXNzIFB5T3RoZXJGaWxlVGVzdHMoT3RoZXJGaWxlVGVzdHMpOgorY2xhc3MgUHlPdGhlckZpbGVUZXN0cyhPdGhlckZpbGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIG9wZW4gPSBzdGF0aWNtZXRob2QocHlpby5vcGVuKQogCiAKLWRlZiB0ZXN0X21haW4oKToKK2RlZiB0ZWFyRG93bk1vZHVsZSgpOgogICAgICMgSGlzdG9yaWNhbGx5LCB0aGVzZSB0ZXN0cyBoYXZlIGJlZW4gc2xvcHB5IGFib3V0IHJlbW92aW5nIFRFU1RGTi4KICAgICAjIFNvIGdldCByaWQgb2YgaXQgbm8gbWF0dGVyIHdoYXQuCi0gICAgdHJ5OgotICAgICAgICBydW5fdW5pdHRlc3QoQ0F1dG9GaWxlVGVzdHMsIFB5QXV0b0ZpbGVUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgIENPdGhlckZpbGVUZXN0cywgUHlPdGhlckZpbGVUZXN0cykKLSAgICBmaW5hbGx5OgotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhURVNURk4pOgotICAgICAgICAgICAgb3MudW5saW5rKFRFU1RGTikKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhURVNURk4pOgorICAgICAgICBvcy51bmxpbmsoVEVTVEZOKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weSBiL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CmluZGV4IGYzMTI4ODIuLjFlNzA2NDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CkBAIC0yLDE4ICsyLDMzIEBACiBUZXN0cyBmb3IgZmlsZWlucHV0IG1vZHVsZS4KIE5pY2sgTWF0aGV3c29uCiAnJycKLQoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgcmUKK2ltcG9ydCBmaWxlaW5wdXQKK2ltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBURVNURk4sIHJ1bl91bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHVubGluayBhcyBzYWZlX3VubGluawotaW1wb3J0IHN5cywgcmUKKwordHJ5OgorICAgIGltcG9ydCBiejIKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBiejIgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IGd6aXAKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBnemlwID0gTm9uZQorCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogZnJvbSBmaWxlaW5wdXQgaW1wb3J0IEZpbGVJbnB1dCwgaG9va19lbmNvZGVkCiAKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBURVNURk4sIHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHVubGluayBhcyBzYWZlX3VubGluaworCisKICMgVGhlIGZpbGVpbnB1dCBtb2R1bGUgaGFzIDIgaW50ZXJmYWNlczogdGhlIEZpbGVJbnB1dCBjbGFzcyB3aGljaCBkb2VzCiAjIGFsbCB0aGUgd29yaywgYW5kIGEgZmV3IGZ1bmN0aW9ucyAoaW5wdXQsIGV0Yy4pIHRoYXQgdXNlIGEgZ2xvYmFsIF9zdGF0ZQotIyB2YXJpYWJsZS4gIFdlIG9ubHkgdGVzdCB0aGUgRmlsZUlucHV0IGNsYXNzLCBzaW5jZSB0aGUgb3RoZXIgZnVuY3Rpb25zCi0jIG9ubHkgcHJvdmlkZSBhIHRoaW4gZmFjYWRlIG92ZXIgRmlsZUlucHV0LgorIyB2YXJpYWJsZS4KIAogIyBXcml0ZSBsaW5lcyAoYSBsaXN0IG9mIGxpbmVzKSB0byB0ZW1wIGZpbGUgbnVtYmVyIGksIGFuZCByZXR1cm4gdGhlCiAjIHRlbXAgZmlsZSdzIG5hbWUuCkBAIC0xMjEsNyArMTM2LDE2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChtLmdyb3VwKDEpKSwgZmkuZmlsZWxpbmVubygpKQogICAgICAgICBmaS5jbG9zZSgpCiAKK2NsYXNzIFVuY29uZGl0aW9uYWxseVJhaXNlOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGNlcHRpb25fdHlwZSk6CisgICAgICAgIHNlbGYuZXhjZXB0aW9uX3R5cGUgPSBleGNlcHRpb25fdHlwZQorICAgICAgICBzZWxmLmludm9rZWQgPSBGYWxzZQorICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLmludm9rZWQgPSBUcnVlCisgICAgICAgIHJhaXNlIHNlbGYuZXhjZXB0aW9uX3R5cGUoKQorCiBjbGFzcyBGaWxlSW5wdXRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKICAgICBkZWYgdGVzdF96ZXJvX2J5dGVfZmlsZXMoc2VsZik6CiAgICAgICAgIHQxID0gdDIgPSB0MyA9IHQ0ID0gTm9uZQogICAgICAgICB0cnk6CkBAIC0yMTksMTcgKzI0MywyMCBAQAogICAgICAgICAgICAgc2VsZi5mYWlsKCJGaWxlSW5wdXQgc2hvdWxkIGNoZWNrIG9wZW5ob29rIGZvciBiZWluZyBjYWxsYWJsZSIpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgcGFzcwotICAgICAgICAjIFhYWCBUaGUgcm90MTMgY29kZWMgd2FzIHJlbW92ZWQuCi0gICAgICAgICMgICAgIFNvIHRoaXMgdGVzdCBuZWVkcyB0byBiZSBjaGFuZ2VkIHRvIHVzZSBzb21ldGhpbmcgZWxzZS4KLSAgICAgICAgIyAgICAgKE9yIHBlcmhhcHMgdGhlIEFQSSBuZWVkcyB0byBjaGFuZ2Ugc28gd2UgY2FuIGp1c3QgcGFzcwotICAgICAgICAjICAgICBhbiBlbmNvZGluZyByYXRoZXIgdGhhbiB1c2luZyBhIGhvb2s/KQotIyMgICAgICAgICB0cnk6Ci0jIyAgICAgICAgICAgICB0MSA9IHdyaXRlVG1wKDEsIFsiQVxuQiJdLCBtb2RlPSJ3YiIpCi0jIyAgICAgICAgICAgICBmaSA9IEZpbGVJbnB1dChmaWxlcz10MSwgb3Blbmhvb2s9aG9va19lbmNvZGVkKCJyb3QxMyIpKQotIyMgICAgICAgICAgICAgbGluZXMgPSBsaXN0KGZpKQotIyMgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lcywgWyJOXG4iLCAiTyJdKQotIyMgICAgICAgICBmaW5hbGx5OgotIyMgICAgICAgICAgICAgcmVtb3ZlX3RlbXBmaWxlcyh0MSkKKworICAgICAgICBjbGFzcyBDdXN0b21PcGVuSG9vazoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmludm9rZWQgPSBGYWxzZQorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgICAgICAgICBzZWxmLmludm9rZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgcmV0dXJuIG9wZW4oKmFyZ3MpCisKKyAgICAgICAgdCA9IHdyaXRlVG1wKDEsIFsiXG4iXSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgIGN1c3RvbV9vcGVuX2hvb2sgPSBDdXN0b21PcGVuSG9vaygpCisgICAgICAgIHdpdGggRmlsZUlucHV0KFt0XSwgb3Blbmhvb2s9Y3VzdG9tX29wZW5faG9vaykgYXMgZmk6CisgICAgICAgICAgICBmaS5yZWFkbGluZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjdXN0b21fb3Blbl9ob29rLmludm9rZWQsICJvcGVuaG9vayBub3QgaW52b2tlZCIpCiAKICAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CiAgICAgICAgIHRyeToKQEAgLTI1NCw5ICsyODEsNTc2IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICByZW1vdmVfdGVtcGZpbGVzKHQxKQogCisgICAgZGVmIHRlc3RfZW1wdHlfZmlsZXNfbGlzdF9zcGVjaWZpZWRfdG9fY29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIHdpdGggRmlsZUlucHV0KGZpbGVzPVtdKSBhcyBmaToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmkuX2ZpbGVzLCAoJy0nLCkpCisKKyAgICBkZWYgdGVzdF9fZ2V0aXRlbV9fKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBpbnZva2luZyBGaWxlSW5wdXQuX19nZXRpdGVtX18oKSB3aXRoIHRoZSBjdXJyZW50CisgICAgICAgICAgIGxpbmUgbnVtYmVyIiIiCisgICAgICAgIHQgPSB3cml0ZVRtcCgxLCBbImxpbmUxXG4iLCAibGluZTJcbiJdKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocmVtb3ZlX3RlbXBmaWxlcywgdCkKKyAgICAgICAgd2l0aCBGaWxlSW5wdXQoZmlsZXM9W3RdKSBhcyBmaToKKyAgICAgICAgICAgIHJldHZhbDEgPSBmaVswXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXR2YWwxLCAibGluZTFcbiIpCisgICAgICAgICAgICByZXR2YWwyID0gZmlbMV0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0dmFsMiwgImxpbmUyXG4iKQorCisgICAgZGVmIHRlc3RfX2dldGl0ZW1fX2ludmFsaWRfa2V5KHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBpbnZva2luZyBGaWxlSW5wdXQuX19nZXRpdGVtX18oKSB3aXRoIGFuIGluZGV4IHVuZXF1YWwgdG8KKyAgICAgICAgICAgdGhlIGxpbmUgbnVtYmVyIiIiCisgICAgICAgIHQgPSB3cml0ZVRtcCgxLCBbImxpbmUxXG4iLCAibGluZTJcbiJdKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocmVtb3ZlX3RlbXBmaWxlcywgdCkKKyAgICAgICAgd2l0aCBGaWxlSW5wdXQoZmlsZXM9W3RdKSBhcyBmaToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBmaVsxXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5hcmdzLCAoImFjY2Vzc2luZyBsaW5lcyBvdXQgb2Ygb3JkZXIiLCkpCisKKyAgICBkZWYgdGVzdF9fZ2V0aXRlbV9fZW9mKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBpbnZva2luZyBGaWxlSW5wdXQuX19nZXRpdGVtX18oKSB3aXRoIHRoZSBsaW5lIG51bWJlciBidXQgYXQKKyAgICAgICAgICAgZW5kLW9mLWlucHV0IiIiCisgICAgICAgIHQgPSB3cml0ZVRtcCgxLCBbXSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgIHdpdGggRmlsZUlucHV0KGZpbGVzPVt0XSkgYXMgZmk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGZpWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmFyZ3MsICgiZW5kIG9mIGlucHV0IHJlYWNoZWQiLCkpCisKKyAgICBkZWYgdGVzdF9uZXh0ZmlsZV9vc2Vycm9yX2RlbGV0aW5nX2JhY2t1cChzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgaW52b2tpbmcgRmlsZUlucHV0Lm5leHRmaWxlKCkgd2hlbiB0aGUgYXR0ZW1wdCB0byBkZWxldGUKKyAgICAgICAgICAgdGhlIGJhY2t1cCBmaWxlIHdvdWxkIHJhaXNlIE9TRXJyb3IuICBUaGlzIGVycm9yIGlzIGV4cGVjdGVkIHRvIGJlCisgICAgICAgICAgIHNpbGVudGx5IGlnbm9yZWQiIiIKKworICAgICAgICBvc191bmxpbmtfb3JpZyA9IG9zLnVubGluaworICAgICAgICBvc191bmxpbmtfcmVwbGFjZW1lbnQgPSBVbmNvbmRpdGlvbmFsbHlSYWlzZShPU0Vycm9yKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ID0gd3JpdGVUbXAoMSwgWyJcbiJdKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1bdF0sIGlucGxhY2U9VHJ1ZSkgYXMgZmk6CisgICAgICAgICAgICAgICAgbmV4dChmaSkgIyBtYWtlIHN1cmUgdGhlIGZpbGUgaXMgb3BlbmVkCisgICAgICAgICAgICAgICAgb3MudW5saW5rID0gb3NfdW5saW5rX3JlcGxhY2VtZW50CisgICAgICAgICAgICAgICAgZmkubmV4dGZpbGUoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MudW5saW5rID0gb3NfdW5saW5rX29yaWcKKworICAgICAgICAjIHNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCBvdXIgdGVzdCBzY2VuYXJpbyB3YXMgYWN0dWFsbHkgaGl0CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvc191bmxpbmtfcmVwbGFjZW1lbnQuaW52b2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJvcy51bmxpbmsoKSB3YXMgbm90IGludm9rZWQiKQorCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfb3NfZnN0YXRfcmFpc2VzX09TRXJyb3Ioc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIEZpbGVJbnB1dC5yZWFkbGluZSgpIHdoZW4gb3MuZnN0YXQoKSByYWlzZXMgT1NFcnJvci4KKyAgICAgICAgICAgVGhpcyBleGNlcHRpb24gc2hvdWxkIGJlIHNpbGVudGx5IGRpc2NhcmRlZC4iIiIKKworICAgICAgICBvc19mc3RhdF9vcmlnID0gb3MuZnN0YXQKKyAgICAgICAgb3NfZnN0YXRfcmVwbGFjZW1lbnQgPSBVbmNvbmRpdGlvbmFsbHlSYWlzZShPU0Vycm9yKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ID0gd3JpdGVUbXAoMSwgWyJcbiJdKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1bdF0sIGlucGxhY2U9VHJ1ZSkgYXMgZmk6CisgICAgICAgICAgICAgICAgb3MuZnN0YXQgPSBvc19mc3RhdF9yZXBsYWNlbWVudAorICAgICAgICAgICAgICAgIGZpLnJlYWRsaW5lKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmZzdGF0ID0gb3NfZnN0YXRfb3JpZworCisgICAgICAgICMgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciB0ZXN0IHNjZW5hcmlvIHdhcyBhY3R1YWxseSBoaXQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zX2ZzdGF0X3JlcGxhY2VtZW50Lmludm9rZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAib3MuZnN0YXQoKSB3YXMgbm90IGludm9rZWQiKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihvcywgImNobW9kIiksICJvcy5jaG1vZCBkb2VzIG5vdCBleGlzdCIpCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfb3NfY2htb2RfcmFpc2VzX09TRXJyb3Ioc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIEZpbGVJbnB1dC5yZWFkbGluZSgpIHdoZW4gb3MuY2htb2QoKSByYWlzZXMgT1NFcnJvci4KKyAgICAgICAgICAgVGhpcyBleGNlcHRpb24gc2hvdWxkIGJlIHNpbGVudGx5IGRpc2NhcmRlZC4iIiIKKworICAgICAgICBvc19jaG1vZF9vcmlnID0gb3MuY2htb2QKKyAgICAgICAgb3NfY2htb2RfcmVwbGFjZW1lbnQgPSBVbmNvbmRpdGlvbmFsbHlSYWlzZShPU0Vycm9yKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ID0gd3JpdGVUbXAoMSwgWyJcbiJdKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1bdF0sIGlucGxhY2U9VHJ1ZSkgYXMgZmk6CisgICAgICAgICAgICAgICAgb3MuY2htb2QgPSBvc19jaG1vZF9yZXBsYWNlbWVudAorICAgICAgICAgICAgICAgIGZpLnJlYWRsaW5lKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNobW9kID0gb3NfY2htb2Rfb3JpZworCisgICAgICAgICMgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciB0ZXN0IHNjZW5hcmlvIHdhcyBhY3R1YWxseSBoaXQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zX2NobW9kX3JlcGxhY2VtZW50Lmludm9rZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAib3MuZnN0YXQoKSB3YXMgbm90IGludm9rZWQiKQorCisgICAgZGVmIHRlc3RfZmlsZW5vX3doZW5fVmFsdWVFcnJvcl9yYWlzZWQoc2VsZik6CisgICAgICAgIGNsYXNzIEZpbGVub1JhaXNlc1ZhbHVlRXJyb3IoVW5jb25kaXRpb25hbGx5UmFpc2UpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIFVuY29uZGl0aW9uYWxseVJhaXNlLl9faW5pdF9fKHNlbGYsIFZhbHVlRXJyb3IpCisgICAgICAgICAgICBkZWYgZmlsZW5vKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuX19jYWxsX18oKQorCisgICAgICAgIHVuY29uZGl0aW9uYWxseV9yYWlzZV9WYWx1ZUVycm9yID0gRmlsZW5vUmFpc2VzVmFsdWVFcnJvcigpCisgICAgICAgIHQgPSB3cml0ZVRtcCgxLCBbIlxuIl0pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZW1vdmVfdGVtcGZpbGVzLCB0KQorICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1bdF0pIGFzIGZpOgorICAgICAgICAgICAgZmlsZV9iYWNrdXAgPSBmaS5fZmlsZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZpLl9maWxlID0gdW5jb25kaXRpb25hbGx5X3JhaXNlX1ZhbHVlRXJyb3IKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmaS5maWxlbm8oKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmaS5fZmlsZSA9IGZpbGVfYmFja3VwICMgbWFrZSBzdXJlIHRoZSBmaWxlIGdldHMgY2xlYW5lZCB1cAorCisgICAgICAgICMgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciB0ZXN0IHNjZW5hcmlvIHdhcyBhY3R1YWxseSBoaXQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHVuY29uZGl0aW9uYWxseV9yYWlzZV9WYWx1ZUVycm9yLmludm9rZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAiX2ZpbGUuZmlsZW5vKCkgd2FzIG5vdCBpbnZva2VkIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgLTEsICJmaWxlbm8oKSBzaG91bGQgcmV0dXJuIC0xIikKKworY2xhc3MgTW9ja0ZpbGVJbnB1dDoKKyAgICAiIiJBIGNsYXNzIHRoYXQgbW9ja3Mgb3V0IGZpbGVpbnB1dC5GaWxlSW5wdXQgZm9yIHVzZSBkdXJpbmcgdW5pdCB0ZXN0cyIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVzPU5vbmUsIGlucGxhY2U9RmFsc2UsIGJhY2t1cD0iIiwgYnVmc2l6ZT0wLAorICAgICAgICAgICAgICAgICBtb2RlPSJyIiwgb3Blbmhvb2s9Tm9uZSk6CisgICAgICAgIHNlbGYuZmlsZXMgPSBmaWxlcworICAgICAgICBzZWxmLmlucGxhY2UgPSBpbnBsYWNlCisgICAgICAgIHNlbGYuYmFja3VwID0gYmFja3VwCisgICAgICAgIHNlbGYuYnVmc2l6ZSA9IGJ1ZnNpemUKKyAgICAgICAgc2VsZi5tb2RlID0gbW9kZQorICAgICAgICBzZWxmLm9wZW5ob29rID0gb3Blbmhvb2sKKyAgICAgICAgc2VsZi5fZmlsZSA9IE5vbmUKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50cyA9IGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0KGxhbWJkYTogMCkKKyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVzID0ge30KKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50c1siY2xvc2UiXSArPSAxCisKKyAgICBkZWYgbmV4dGZpbGUoc2VsZik6CisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9jb3VudHNbIm5leHRmaWxlIl0gKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5fdmFsdWVzWyJuZXh0ZmlsZSJdCisKKyAgICBkZWYgZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9jb3VudHNbImZpbGVuYW1lIl0gKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5fdmFsdWVzWyJmaWxlbmFtZSJdCisKKyAgICBkZWYgbGluZW5vKHNlbGYpOgorICAgICAgICBzZWxmLmludm9jYXRpb25fY291bnRzWyJsaW5lbm8iXSArPSAxCisgICAgICAgIHJldHVybiBzZWxmLnJldHVybl92YWx1ZXNbImxpbmVubyJdCisKKyAgICBkZWYgZmlsZWxpbmVubyhzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50c1siZmlsZWxpbmVubyJdICs9IDEKKyAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuX3ZhbHVlc1siZmlsZWxpbmVubyJdCisKKyAgICBkZWYgZmlsZW5vKHNlbGYpOgorICAgICAgICBzZWxmLmludm9jYXRpb25fY291bnRzWyJmaWxlbm8iXSArPSAxCisgICAgICAgIHJldHVybiBzZWxmLnJldHVybl92YWx1ZXNbImZpbGVubyJdCisKKyAgICBkZWYgaXNmaXJzdGxpbmUoc2VsZik6CisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9jb3VudHNbImlzZmlyc3RsaW5lIl0gKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5fdmFsdWVzWyJpc2ZpcnN0bGluZSJdCisKKyAgICBkZWYgaXNzdGRpbihzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50c1siaXNzdGRpbiJdICs9IDEKKyAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuX3ZhbHVlc1siaXNzdGRpbiJdCisKK2NsYXNzIEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgdW5pdCB0ZXN0cyBmb3IgdGhlIGdsb2JhbCBmdW5jdGlvbiBvZgorICAgICAgIHRoZSBmaWxlaW5wdXQgbW9kdWxlLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLl9vcmlnX3N0YXRlID0gZmlsZWlucHV0Ll9zdGF0ZQorICAgICAgICBzZWxmLl9vcmlnX0ZpbGVJbnB1dCA9IGZpbGVpbnB1dC5GaWxlSW5wdXQKKyAgICAgICAgZmlsZWlucHV0LkZpbGVJbnB1dCA9IE1vY2tGaWxlSW5wdXQKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgZmlsZWlucHV0LkZpbGVJbnB1dCA9IHNlbGYuX29yaWdfRmlsZUlucHV0CisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBzZWxmLl9vcmlnX3N0YXRlCisKKyAgICBkZWYgYXNzZXJ0RXhhY3RseU9uZUludm9jYXRpb24oc2VsZiwgbW9ja19maWxlX2lucHV0LCBtZXRob2RfbmFtZSk6CisgICAgICAgICMgYXNzZXJ0IHRoYXQgdGhlIG1ldGhvZCB3aXRoIHRoZSBnaXZlbiBuYW1lIHdhcyBpbnZva2VkIG9uY2UKKyAgICAgICAgYWN0dWFsX2NvdW50ID0gbW9ja19maWxlX2lucHV0Lmludm9jYXRpb25fY291bnRzW21ldGhvZF9uYW1lXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9jb3VudCwgMSwgbWV0aG9kX25hbWUpCisgICAgICAgICMgYXNzZXJ0IHRoYXQgbm8gb3RoZXIgdW5leHBlY3RlZCBtZXRob2RzIHdlcmUgaW52b2tlZAorICAgICAgICBhY3R1YWxfdG90YWxfY291bnQgPSBsZW4obW9ja19maWxlX2lucHV0Lmludm9jYXRpb25fY291bnRzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF90b3RhbF9jb3VudCwgMSkKKworY2xhc3MgVGVzdF9maWxlaW5wdXRfaW5wdXQoQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuaW5wdXQoKSIiIgorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmVfYW5kX3N0YXRlX2ZpbGVfaXNfbm90X05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIGZpbGVpbnB1dC5pbnB1dCgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZQorICAgICAgICAgICBhbmQgaXRzIF9maWxlIGF0dHJpYnV0ZSBpcyBhbHNvIG5vdCBOb25lLiAgRXhwZWN0IFJ1bnRpbWVFcnJvciB0bworICAgICAgICAgICBiZSByYWlzZWQgd2l0aCBhIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZSBhbmQgZm9yIGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgdG8gKm5vdCogYmUgbW9kaWZpZWQuIiIiCisgICAgICAgIGluc3RhbmNlID0gTW9ja0ZpbGVJbnB1dCgpCisgICAgICAgIGluc3RhbmNlLl9maWxlID0gb2JqZWN0KCkKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGZpbGVpbnB1dC5pbnB1dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJpbnB1dCgpIGFscmVhZHkgYWN0aXZlIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhpbnN0YW5jZSwgZmlsZWlucHV0Ll9zdGF0ZSwgImZpbGVpbnB1dC5fc3RhdGUiKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmVfYW5kX3N0YXRlX2ZpbGVfaXNfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgaW52b2tpbmcgZmlsZWlucHV0LmlucHV0KCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIG5vdCBOb25lCisgICAgICAgICAgIGJ1dCBpdHMgX2ZpbGUgYXR0cmlidXRlICppcyogTm9uZS4gIEV4cGVjdCBpdCB0byBjcmVhdGUgYW5kIHJldHVybgorICAgICAgICAgICBhIG5ldyBmaWxlaW5wdXQuRmlsZUlucHV0IG9iamVjdCB3aXRoIGFsbCBtZXRob2QgcGFyYW1ldGVycyBwYXNzZWQKKyAgICAgICAgICAgZXhwbGljaXRseSB0byB0aGUgX19pbml0X18oKSBtZXRob2Q7IGFsc28gZW5zdXJlIHRoYXQKKyAgICAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSBpcyBzZXQgdG8gdGhlIHJldHVybmVkIGluc3RhbmNlLiIiIgorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5fZmlsZSA9IE5vbmUKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHNlbGYuZG9fdGVzdF9jYWxsX2lucHV0KCkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIGZpbGVpbnB1dC5pbnB1dCgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBOb25lCisgICAgICAgICAgIEV4cGVjdCBpdCB0byBjcmVhdGUgYW5kIHJldHVybiBhIG5ldyBmaWxlaW5wdXQuRmlsZUlucHV0IG9iamVjdAorICAgICAgICAgICB3aXRoIGFsbCBtZXRob2QgcGFyYW1ldGVycyBwYXNzZWQgZXhwbGljaXRseSB0byB0aGUgX19pbml0X18oKQorICAgICAgICAgICBtZXRob2Q7IGFsc28gZW5zdXJlIHRoYXQgZmlsZWlucHV0Ll9zdGF0ZSBpcyBzZXQgdG8gdGhlIHJldHVybmVkCisgICAgICAgICAgIGluc3RhbmNlLiIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICBzZWxmLmRvX3Rlc3RfY2FsbF9pbnB1dCgpCisKKyAgICBkZWYgZG9fdGVzdF9jYWxsX2lucHV0KHNlbGYpOgorICAgICAgICAiIiJUZXN0cyB0aGF0IGZpbGVpbnB1dC5pbnB1dCgpIGNyZWF0ZXMgYSBuZXcgZmlsZWlucHV0LkZpbGVJbnB1dAorICAgICAgICAgICBvYmplY3QsIHBhc3NpbmcgdGhlIGdpdmVuIHBhcmFtZXRlcnMgdW5tb2RpZmllZCB0bworICAgICAgICAgICBmaWxlaW5wdXQuRmlsZUlucHV0Ll9faW5pdF9fKCkuICBOb3RlIHRoYXQgdGhpcyB0ZXN0IGRlcGVuZHMgb24gdGhlCisgICAgICAgICAgIG1vbmtleSBwYXRjaGluZyBvZiBmaWxlaW5wdXQuRmlsZUlucHV0IGRvbmUgYnkgc2V0VXAoKS4iIiIKKyAgICAgICAgZmlsZXMgPSBvYmplY3QoKQorICAgICAgICBpbnBsYWNlID0gb2JqZWN0KCkKKyAgICAgICAgYmFja3VwID0gb2JqZWN0KCkKKyAgICAgICAgYnVmc2l6ZSA9IG9iamVjdCgpCisgICAgICAgIG1vZGUgPSBvYmplY3QoKQorICAgICAgICBvcGVuaG9vayA9IG9iamVjdCgpCisKKyAgICAgICAgIyBjYWxsIGZpbGVpbnB1dC5pbnB1dCgpIHdpdGggZGlmZmVyZW50IHZhbHVlcyBmb3IgZWFjaCBhcmd1bWVudAorICAgICAgICByZXN1bHQgPSBmaWxlaW5wdXQuaW5wdXQoZmlsZXM9ZmlsZXMsIGlucGxhY2U9aW5wbGFjZSwgYmFja3VwPWJhY2t1cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZnNpemU9YnVmc2l6ZSwKKyAgICAgICAgICAgIG1vZGU9bW9kZSwgb3Blbmhvb2s9b3Blbmhvb2spCisKKyAgICAgICAgIyBlbnN1cmUgZmlsZWlucHV0Ll9zdGF0ZSB3YXMgc2V0IHRvIHRoZSByZXR1cm5lZCBvYmplY3QKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXN1bHQsIGZpbGVpbnB1dC5fc3RhdGUsICJmaWxlaW5wdXQuX3N0YXRlIikKKworICAgICAgICAjIGVuc3VyZSB0aGUgcGFyYW1ldGVycyB0byBmaWxlaW5wdXQuaW5wdXQoKSB3ZXJlIHBhc3NlZCBkaXJlY3RseQorICAgICAgICAjIHRvIEZpbGVJbnB1dC5fX2luaXRfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZmlsZXMsIHJlc3VsdC5maWxlcywgImZpbGVzIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhpbnBsYWNlLCByZXN1bHQuaW5wbGFjZSwgImlucGxhY2UiKQorICAgICAgICBzZWxmLmFzc2VydElzKGJhY2t1cCwgcmVzdWx0LmJhY2t1cCwgImJhY2t1cCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoYnVmc2l6ZSwgcmVzdWx0LmJ1ZnNpemUsICJidWZzaXplIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2RlLCByZXN1bHQubW9kZSwgIm1vZGUiKQorICAgICAgICBzZWxmLmFzc2VydElzKG9wZW5ob29rLCByZXN1bHQub3Blbmhvb2ssICJvcGVuaG9vayIpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X2Nsb3NlKEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgZmlsZWlucHV0LmNsb3NlKCkiIiIKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIHRoYXQgZmlsZWlucHV0LmNsb3NlKCkgZG9lcyBub3RoaW5nIGlmIGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgaXMgTm9uZSIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICBmaWxlaW5wdXQuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaWxlaW5wdXQuX3N0YXRlKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIHRoYXQgZmlsZWlucHV0LmNsb3NlKCkgaW52b2tlcyBjbG9zZSgpIG9uIGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgYW5kIHNldHMgX3N0YXRlPU5vbmUiIiIKKyAgICAgICAgaW5zdGFuY2UgPSBNb2NrRmlsZUlucHV0KCkKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIGZpbGVpbnB1dC5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RseU9uZUludm9jYXRpb24oaW5zdGFuY2UsICJjbG9zZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZpbGVpbnB1dC5fc3RhdGUpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X25leHRmaWxlKEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgZmlsZWlucHV0Lm5leHRmaWxlKCkiIiIKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5uZXh0ZmlsZSgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCByYWlzZXMgUnVudGltZUVycm9yIHdpdGggYSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgICAgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlIiIiCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGZpbGVpbnB1dC5uZXh0ZmlsZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJubyBhY3RpdmUgaW5wdXQoKSIsKSwgY20uZXhjZXB0aW9uLmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZpbGVpbnB1dC5fc3RhdGUpCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19ub3RfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0Lm5leHRmaWxlKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIG5vdCBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCBpbnZva2VzIGZpbGVpbnB1dC5fc3RhdGUubmV4dGZpbGUoKSBleGFjdGx5IG9uY2UsCisgICAgICAgICAgIHJldHVybnMgd2hhdGV2ZXIgaXQgcmV0dXJucywgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlCisgICAgICAgICAgIHRvIHBvaW50IHRvIGEgZGlmZmVyZW50IG9iamVjdC4iIiIKKyAgICAgICAgbmV4dGZpbGVfcmV0dmFsID0gb2JqZWN0KCkKKyAgICAgICAgaW5zdGFuY2UgPSBNb2NrRmlsZUlucHV0KCkKKyAgICAgICAgaW5zdGFuY2UucmV0dXJuX3ZhbHVlc1sibmV4dGZpbGUiXSA9IG5leHRmaWxlX3JldHZhbAorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gaW5zdGFuY2UKKyAgICAgICAgcmV0dmFsID0gZmlsZWlucHV0Lm5leHRmaWxlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdGx5T25lSW52b2NhdGlvbihpbnN0YW5jZSwgIm5leHRmaWxlIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR2YWwsIG5leHRmaWxlX3JldHZhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmaWxlaW5wdXQuX3N0YXRlLCBpbnN0YW5jZSkKKworY2xhc3MgVGVzdF9maWxlaW5wdXRfZmlsZW5hbWUoQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuZmlsZW5hbWUoKSIiIgorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0LmZpbGVuYW1lKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IHJhaXNlcyBSdW50aW1lRXJyb3Igd2l0aCBhIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZQorICAgICAgICAgICBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUiIiIKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IE5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZmlsZWlucHV0LmZpbGVuYW1lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoIm5vIGFjdGl2ZSBpbnB1dCgpIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuZmlsZW5hbWUoKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgbm90IE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IGludm9rZXMgZmlsZWlucHV0Ll9zdGF0ZS5maWxlbmFtZSgpIGV4YWN0bHkgb25jZSwKKyAgICAgICAgICAgcmV0dXJucyB3aGF0ZXZlciBpdCByZXR1cm5zLCBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgdG8gcG9pbnQgdG8gYSBkaWZmZXJlbnQgb2JqZWN0LiIiIgorICAgICAgICBmaWxlbmFtZV9yZXR2YWwgPSBvYmplY3QoKQorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5yZXR1cm5fdmFsdWVzWyJmaWxlbmFtZSJdID0gZmlsZW5hbWVfcmV0dmFsCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBpbnN0YW5jZQorICAgICAgICByZXR2YWwgPSBmaWxlaW5wdXQuZmlsZW5hbWUoKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKGluc3RhbmNlLCAiZmlsZW5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydElzKHJldHZhbCwgZmlsZW5hbWVfcmV0dmFsKQorICAgICAgICBzZWxmLmFzc2VydElzKGZpbGVpbnB1dC5fc3RhdGUsIGluc3RhbmNlKQorCitjbGFzcyBUZXN0X2ZpbGVpbnB1dF9saW5lbm8oQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQubGluZW5vKCkiIiIKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5saW5lbm8oKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgcmFpc2VzIFJ1bnRpbWVFcnJvciB3aXRoIGEgbWVhbmluZ2Z1bCBlcnJvciBtZXNzYWdlCisgICAgICAgICAgIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZSIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBmaWxlaW5wdXQubGluZW5vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoIm5vIGFjdGl2ZSBpbnB1dCgpIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQubGluZW5vKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIG5vdCBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCBpbnZva2VzIGZpbGVpbnB1dC5fc3RhdGUubGluZW5vKCkgZXhhY3RseSBvbmNlLAorICAgICAgICAgICByZXR1cm5zIHdoYXRldmVyIGl0IHJldHVybnMsIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZQorICAgICAgICAgICB0byBwb2ludCB0byBhIGRpZmZlcmVudCBvYmplY3QuIiIiCisgICAgICAgIGxpbmVub19yZXR2YWwgPSBvYmplY3QoKQorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5yZXR1cm5fdmFsdWVzWyJsaW5lbm8iXSA9IGxpbmVub19yZXR2YWwKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHJldHZhbCA9IGZpbGVpbnB1dC5saW5lbm8oKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKGluc3RhbmNlLCAibGluZW5vIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR2YWwsIGxpbmVub19yZXR2YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZmlsZWlucHV0Ll9zdGF0ZSwgaW5zdGFuY2UpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X2ZpbGVsaW5lbm8oQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuZmlsZWxpbmVubygpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuZmlsZWxpbmVubygpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCByYWlzZXMgUnVudGltZUVycm9yIHdpdGggYSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgICAgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlIiIiCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGZpbGVpbnB1dC5maWxlbGluZW5vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoIm5vIGFjdGl2ZSBpbnB1dCgpIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuZmlsZWxpbmVubygpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgaW52b2tlcyBmaWxlaW5wdXQuX3N0YXRlLmZpbGVsaW5lbm8oKSBleGFjdGx5IG9uY2UsCisgICAgICAgICAgIHJldHVybnMgd2hhdGV2ZXIgaXQgcmV0dXJucywgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlCisgICAgICAgICAgIHRvIHBvaW50IHRvIGEgZGlmZmVyZW50IG9iamVjdC4iIiIKKyAgICAgICAgZmlsZWxpbmVub19yZXR2YWwgPSBvYmplY3QoKQorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5yZXR1cm5fdmFsdWVzWyJmaWxlbGluZW5vIl0gPSBmaWxlbGluZW5vX3JldHZhbAorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gaW5zdGFuY2UKKyAgICAgICAgcmV0dmFsID0gZmlsZWlucHV0LmZpbGVsaW5lbm8oKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKGluc3RhbmNlLCAiZmlsZWxpbmVubyIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCBmaWxlbGluZW5vX3JldHZhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmaWxlaW5wdXQuX3N0YXRlLCBpbnN0YW5jZSkKKworY2xhc3MgVGVzdF9maWxlaW5wdXRfZmlsZW5vKEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgZmlsZWlucHV0LmZpbGVubygpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuZmlsZW5vKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IHJhaXNlcyBSdW50aW1lRXJyb3Igd2l0aCBhIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZQorICAgICAgICAgICBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUiIiIKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IE5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZmlsZWlucHV0LmZpbGVubygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJubyBhY3RpdmUgaW5wdXQoKSIsKSwgY20uZXhjZXB0aW9uLmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZpbGVpbnB1dC5fc3RhdGUpCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19ub3RfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0LmZpbGVubygpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgaW52b2tlcyBmaWxlaW5wdXQuX3N0YXRlLmZpbGVubygpIGV4YWN0bHkgb25jZSwKKyAgICAgICAgICAgcmV0dXJucyB3aGF0ZXZlciBpdCByZXR1cm5zLCBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgdG8gcG9pbnQgdG8gYSBkaWZmZXJlbnQgb2JqZWN0LiIiIgorICAgICAgICBmaWxlbm9fcmV0dmFsID0gb2JqZWN0KCkKKyAgICAgICAgaW5zdGFuY2UgPSBNb2NrRmlsZUlucHV0KCkKKyAgICAgICAgaW5zdGFuY2UucmV0dXJuX3ZhbHVlc1siZmlsZW5vIl0gPSBmaWxlbm9fcmV0dmFsCisgICAgICAgIGluc3RhbmNlLmZpbGVub19yZXR2YWwgPSBmaWxlbm9fcmV0dmFsCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBpbnN0YW5jZQorICAgICAgICByZXR2YWwgPSBmaWxlaW5wdXQuZmlsZW5vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdGx5T25lSW52b2NhdGlvbihpbnN0YW5jZSwgImZpbGVubyIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCBmaWxlbm9fcmV0dmFsKQorICAgICAgICBzZWxmLmFzc2VydElzKGZpbGVpbnB1dC5fc3RhdGUsIGluc3RhbmNlKQorCitjbGFzcyBUZXN0X2ZpbGVpbnB1dF9pc2ZpcnN0bGluZShCYXNlRmlsZUlucHV0R2xvYmFsTWV0aG9kc1Rlc3QpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIGZpbGVpbnB1dC5pc2ZpcnN0bGluZSgpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuaXNmaXJzdGxpbmUoKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgcmFpc2VzIFJ1bnRpbWVFcnJvciB3aXRoIGEgbWVhbmluZ2Z1bCBlcnJvciBtZXNzYWdlCisgICAgICAgICAgIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZSIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBmaWxlaW5wdXQuaXNmaXJzdGxpbmUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgibm8gYWN0aXZlIGlucHV0KCkiLCksIGNtLmV4Y2VwdGlvbi5hcmdzKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaWxlaW5wdXQuX3N0YXRlKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5pc2ZpcnN0bGluZSgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgaW52b2tlcyBmaWxlaW5wdXQuX3N0YXRlLmlzZmlyc3RsaW5lKCkgZXhhY3RseSBvbmNlLAorICAgICAgICAgICByZXR1cm5zIHdoYXRldmVyIGl0IHJldHVybnMsIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZQorICAgICAgICAgICB0byBwb2ludCB0byBhIGRpZmZlcmVudCBvYmplY3QuIiIiCisgICAgICAgIGlzZmlyc3RsaW5lX3JldHZhbCA9IG9iamVjdCgpCisgICAgICAgIGluc3RhbmNlID0gTW9ja0ZpbGVJbnB1dCgpCisgICAgICAgIGluc3RhbmNlLnJldHVybl92YWx1ZXNbImlzZmlyc3RsaW5lIl0gPSBpc2ZpcnN0bGluZV9yZXR2YWwKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHJldHZhbCA9IGZpbGVpbnB1dC5pc2ZpcnN0bGluZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RseU9uZUludm9jYXRpb24oaW5zdGFuY2UsICJpc2ZpcnN0bGluZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCBpc2ZpcnN0bGluZV9yZXR2YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZmlsZWlucHV0Ll9zdGF0ZSwgaW5zdGFuY2UpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X2lzc3RkaW4oQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuaXNzdGRpbigpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuaXNzdGRpbigpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCByYWlzZXMgUnVudGltZUVycm9yIHdpdGggYSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgICAgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlIiIiCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGZpbGVpbnB1dC5pc3N0ZGluKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoIm5vIGFjdGl2ZSBpbnB1dCgpIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuaXNzdGRpbigpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgaW52b2tlcyBmaWxlaW5wdXQuX3N0YXRlLmlzc3RkaW4oKSBleGFjdGx5IG9uY2UsCisgICAgICAgICAgIHJldHVybnMgd2hhdGV2ZXIgaXQgcmV0dXJucywgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlCisgICAgICAgICAgIHRvIHBvaW50IHRvIGEgZGlmZmVyZW50IG9iamVjdC4iIiIKKyAgICAgICAgaXNzdGRpbl9yZXR2YWwgPSBvYmplY3QoKQorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5yZXR1cm5fdmFsdWVzWyJpc3N0ZGluIl0gPSBpc3N0ZGluX3JldHZhbAorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gaW5zdGFuY2UKKyAgICAgICAgcmV0dmFsID0gZmlsZWlucHV0Lmlzc3RkaW4oKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKGluc3RhbmNlLCAiaXNzdGRpbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCBpc3N0ZGluX3JldHZhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmaWxlaW5wdXQuX3N0YXRlLCBpbnN0YW5jZSkKKworY2xhc3MgSW52b2NhdGlvblJlY29yZGVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50ID0gMAorICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLmludm9jYXRpb25fY291bnQgKz0gMQorICAgICAgICBzZWxmLmxhc3RfaW52b2NhdGlvbiA9IChhcmdzLCBrd2FyZ3MpCisKK2NsYXNzIFRlc3RfaG9va19jb21wcmVzc2VkKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuaG9va19jb21wcmVzc2VkKCkiIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5mYWtlX29wZW4gPSBJbnZvY2F0aW9uUmVjb3JkZXIoKQorCisgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nKHNlbGYpOgorICAgICAgICBzZWxmLmRvX3Rlc3RfdXNlX2J1aWx0aW5fb3BlbigiIiwgMSkKKworICAgIGRlZiB0ZXN0X25vX2V4dChzZWxmKToKKyAgICAgICAgc2VsZi5kb190ZXN0X3VzZV9idWlsdGluX29wZW4oImFiY2QiLCAyKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoZ3ppcCwgIlJlcXVpcmVzIGd6aXAgYW5kIHpsaWIiKQorICAgIGRlZiB0ZXN0X2d6X2V4dF9mYWtlKHNlbGYpOgorICAgICAgICBvcmlnaW5hbF9vcGVuID0gZ3ppcC5vcGVuCisgICAgICAgIGd6aXAub3BlbiA9IHNlbGYuZmFrZV9vcGVuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbGVpbnB1dC5ob29rX2NvbXByZXNzZWQoInRlc3QuZ3oiLCAzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZ3ppcC5vcGVuID0gb3JpZ2luYWxfb3BlbgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mYWtlX29wZW4uaW52b2NhdGlvbl9jb3VudCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZha2Vfb3Blbi5sYXN0X2ludm9jYXRpb24sICgoInRlc3QuZ3oiLCAzKSwge30pKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoYnoyLCAiUmVxdWlyZXMgYnoyIikKKyAgICBkZWYgdGVzdF9iejJfZXh0X2Zha2Uoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX29wZW4gPSBiejIuQloyRmlsZQorICAgICAgICBiejIuQloyRmlsZSA9IHNlbGYuZmFrZV9vcGVuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbGVpbnB1dC5ob29rX2NvbXByZXNzZWQoInRlc3QuYnoyIiwgNCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJ6Mi5CWjJGaWxlID0gb3JpZ2luYWxfb3BlbgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mYWtlX29wZW4uaW52b2NhdGlvbl9jb3VudCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZha2Vfb3Blbi5sYXN0X2ludm9jYXRpb24sICgoInRlc3QuYnoyIiwgNCksIHt9KSkKKworICAgIGRlZiB0ZXN0X2JsYWhfZXh0KHNlbGYpOgorICAgICAgICBzZWxmLmRvX3Rlc3RfdXNlX2J1aWx0aW5fb3BlbigiYWJjZC5ibGFoIiwgNSkKKworICAgIGRlZiB0ZXN0X2d6X2V4dF9idWlsdGluKHNlbGYpOgorICAgICAgICBzZWxmLmRvX3Rlc3RfdXNlX2J1aWx0aW5fb3BlbigiYWJjZC5HeiIsIDYpCisKKyAgICBkZWYgdGVzdF9iejJfZXh0X2J1aWx0aW4oc2VsZik6CisgICAgICAgIHNlbGYuZG9fdGVzdF91c2VfYnVpbHRpbl9vcGVuKCJhYmNkLkJ6MiIsIDcpCisKKyAgICBkZWYgZG9fdGVzdF91c2VfYnVpbHRpbl9vcGVuKHNlbGYsIGZpbGVuYW1lLCBtb2RlKToKKyAgICAgICAgb3JpZ2luYWxfb3BlbiA9IHNlbGYucmVwbGFjZV9idWlsdGluX29wZW4oc2VsZi5mYWtlX29wZW4pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbGVpbnB1dC5ob29rX2NvbXByZXNzZWQoZmlsZW5hbWUsIG1vZGUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLnJlcGxhY2VfYnVpbHRpbl9vcGVuKG9yaWdpbmFsX29wZW4pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZha2Vfb3Blbi5pbnZvY2F0aW9uX2NvdW50LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZmFrZV9vcGVuLmxhc3RfaW52b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKGZpbGVuYW1lLCBtb2RlKSwge30pKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiByZXBsYWNlX2J1aWx0aW5fb3BlbihuZXdfb3Blbl9mdW5jKToKKyAgICAgICAgb3JpZ2luYWxfb3BlbiA9IGJ1aWx0aW5zLm9wZW4KKyAgICAgICAgYnVpbHRpbnMub3BlbiA9IG5ld19vcGVuX2Z1bmMKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsX29wZW4KKworY2xhc3MgVGVzdF9ob29rX2VuY29kZWQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIGZpbGVpbnB1dC5ob29rX2VuY29kZWQoKSIiIgorCisgICAgZGVmIHRlc3Qoc2VsZik6CisgICAgICAgIGVuY29kaW5nID0gb2JqZWN0KCkKKyAgICAgICAgcmVzdWx0ID0gZmlsZWlucHV0Lmhvb2tfZW5jb2RlZChlbmNvZGluZykKKworICAgICAgICBmYWtlX29wZW4gPSBJbnZvY2F0aW9uUmVjb3JkZXIoKQorICAgICAgICBvcmlnaW5hbF9vcGVuID0gYnVpbHRpbnMub3BlbgorICAgICAgICBidWlsdGlucy5vcGVuID0gZmFrZV9vcGVuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZpbGVuYW1lID0gb2JqZWN0KCkKKyAgICAgICAgICAgIG1vZGUgPSBvYmplY3QoKQorICAgICAgICAgICAgb3Blbl9yZXN1bHQgPSByZXN1bHQoZmlsZW5hbWUsIG1vZGUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBidWlsdGlucy5vcGVuID0gb3JpZ2luYWxfb3BlbgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFrZV9vcGVuLmludm9jYXRpb25fY291bnQsIDEpCisKKyAgICAgICAgYXJncywga3dhcmdzID0gZmFrZV9vcGVuLmxhc3RfaW52b2NhdGlvbgorICAgICAgICBzZWxmLmFzc2VydElzKGFyZ3NbMF0sIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKGFyZ3NbMV0sIG1vZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoa3dhcmdzLnBvcCgnZW5jb2RpbmcnKSwgZW5jb2RpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoa3dhcmdzKQogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEJ1ZmZlclNpemVzVGVzdHMsIEZpbGVJbnB1dFRlc3RzKQorICAgIHJ1bl91bml0dGVzdCgKKyAgICAgICAgQnVmZmVyU2l6ZXNUZXN0cywKKyAgICAgICAgRmlsZUlucHV0VGVzdHMsCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2lucHV0LAorICAgICAgICBUZXN0X2ZpbGVpbnB1dF9jbG9zZSwKKyAgICAgICAgVGVzdF9maWxlaW5wdXRfbmV4dGZpbGUsCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2ZpbGVuYW1lLAorICAgICAgICBUZXN0X2ZpbGVpbnB1dF9saW5lbm8sCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2ZpbGVsaW5lbm8sCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2ZpbGVubywKKyAgICAgICAgVGVzdF9maWxlaW5wdXRfaXNmaXJzdGxpbmUsCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2lzc3RkaW4sCisgICAgICAgIFRlc3RfaG9va19jb21wcmVzc2VkLAorICAgICAgICBUZXN0X2hvb2tfZW5jb2RlZCwKKyAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmlsZWlvLnB5IGIvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkKaW5kZXggODI2N2Q5ZS4uMTk3MzdkOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkKQEAgLTIsNiArMiw3IEBACiAKIGltcG9ydCBzeXMKIGltcG9ydCBvcworaW1wb3J0IGlvCiBpbXBvcnQgZXJybm8KIGltcG9ydCB1bml0dGVzdAogZnJvbSBhcnJheSBpbXBvcnQgYXJyYXkKQEAgLTM3MywxMCArMzc0LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIDEwKQogICAgICAgICBmLnRydW5jYXRlKDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIDEwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuc2VlaygwLCBvcy5TRUVLX0VORCksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5zZWVrKDAsIGlvLlNFRUtfRU5EKSwgNSkKICAgICAgICAgZi50cnVuY2F0ZSgxNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnNlZWsoMCwgb3MuU0VFS19FTkQpLCAxNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnNlZWsoMCwgaW8uU0VFS19FTkQpLCAxNSkKICAgICAgICAgZi5jbG9zZSgpCiAKICAgICBkZWYgdGVzdFRydW5jYXRlT25XaW5kb3dzKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mbG9hdC5weSBiL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkKaW5kZXggNGQ3YmJiYS4uNTAyMjkyZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mbG9hdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5CkBAIC04OCw3ICs4OCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAiICAtMHgzLnAtMSAgIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICIgICsweDMucC0xICAiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KCIgIDI1LmUtMSAgIiksIDIuNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwb3J0LmZjbXAoZmxvYXQoIiAgLjI1ZS0xICAiKSwgLjAyNSksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoZmxvYXQoIiAgLjI1ZS0xICAiKSwgLjAyNSkKIAogICAgIGRlZiB0ZXN0X2Zsb2F0Y29udmVyc2lvbihzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCBjYWxscyB0byBfX2Zsb2F0X18oKSB3b3JrIHByb3Blcmx5CkBAIC04NjAsMTUgKzg2MCwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cigxZTMwMCAqIDFlMzAwICogMCksICJuYW4iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cigtMWUzMDAgKiAxZTMwMCAqIDApLCAibmFuIikKIAotICAgIGRlZiBub3Rlc3RfZmxvYXRfbmFuKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoTkFOLmlzX25hbigpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKElORi5pc19uYW4oKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoMC4pLmlzX25hbigpKQorICAgIGRlZiB0ZXN0X2luZl9zaWducyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3B5c2lnbigxLjAsIGZsb2F0KCdpbmYnKSksIDEuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3B5c2lnbigxLjAsIGZsb2F0KCctaW5mJykpLCAtMS4wKQogCi0gICAgZGVmIG5vdGVzdF9mbG9hdF9pbmYoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShJTkYuaXNfaW5mKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoTkFOLmlzX2luZigpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCgwLikuaXNfaW5mKCkpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoZ2V0YXR0cihzeXMsICdmbG9hdF9yZXByX3N0eWxlJywgJycpID09ICdzaG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgImFwcGxpZXMgb25seSB3aGVuIHVzaW5nIHNob3J0IGZsb2F0IHJlcHIgc3R5bGUiKQorICAgIGRlZiB0ZXN0X25hbl9zaWducyhzZWxmKToKKyAgICAgICAgIyBXaGVuIHVzaW5nIHRoZSBkdG9hLmMgY29kZSwgdGhlIHNpZ24gb2YgZmxvYXQoJ25hbicpIHNob3VsZAorICAgICAgICAjIGJlIHByZWRpY3RhYmxlLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHlzaWduKDEuMCwgZmxvYXQoJ25hbicpKSwgMS4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHlzaWduKDEuMCwgZmxvYXQoJy1uYW4nKSksIC0xLjApCisKIAogZnJvbUhleCA9IGZsb2F0LmZyb21oZXgKIHRvSGV4ID0gZmxvYXQuaGV4CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weSBiL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CmluZGV4IDQ0ZjFiYjcuLmY4ZjU0MjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CkBAIC0xLDQgKzEsNSBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIFRlc3RGYWlsZWQKK2ltcG9ydCBsb2NhbGUKIGltcG9ydCBzeXMKIGltcG9ydCB0ZXN0LnN1cHBvcnQgYXMgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0yNjMsNiArMjY0LDUxIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlIFRlc3RGYWlsZWQoJyIlKmQiJShtYXhzaXplLCAtMTI3KSBzaG91bGQgZmFpbCcpCiAKKyAgICBkZWYgdGVzdF9ub25fYXNjaWkoc2VsZik6CisgICAgICAgIHRlc3Rmb3JtYXQoIlx1MjBhYz0lZiIsICgxLjAsKSwgIlx1MjBhYz0xLjAwMDAwMCIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoImFiYyIsICJcdTIwMDc8NSIpLCAiYWJjXHUyMDA3XHUyMDA3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzLCAiXHUyMDA3PDUiKSwgIjEyM1x1MjAwN1x1MjAwNyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyLjMsICJcdTIwMDc8NiIpLCAiMTIuM1x1MjAwN1x1MjAwNyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDBqLCAiXHUyMDA3PDQiKSwgIjBqXHUyMDA3XHUyMDA3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMSsyaiwgIlx1MjAwNzw4IiksICIoMSsyailcdTIwMDdcdTIwMDciKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KCJhYmMiLCAiXHUyMDA3PjUiKSwgIlx1MjAwN1x1MjAwN2FiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMywgIlx1MjAwNz41IiksICJcdTIwMDdcdTIwMDcxMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMi4zLCAiXHUyMDA3PjYiKSwgIlx1MjAwN1x1MjAwNzEyLjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxKzJqLCAiXHUyMDA3PjgiKSwgIlx1MjAwN1x1MjAwNygxKzJqKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDBqLCAiXHUyMDA3PjQiKSwgIlx1MjAwN1x1MjAwNzBqIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgiYWJjIiwgIlx1MjAwN141IiksICJcdTIwMDdhYmNcdTIwMDciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjMsICJcdTIwMDdeNSIpLCAiXHUyMDA3MTIzXHUyMDA3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIuMywgIlx1MjAwN142IiksICJcdTIwMDcxMi4zXHUyMDA3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMSsyaiwgIlx1MjAwN144IiksICJcdTIwMDcoMSsyailcdTIwMDciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgwaiwgIlx1MjAwN140IiksICJcdTIwMDcwalx1MjAwNyIpCisKKyAgICBkZWYgdGVzdF9sb2NhbGUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9sZGxvYyA9IGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCkKKyAgICAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCwgJycpCisgICAgICAgIGV4Y2VwdCBsb2NhbGUuRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiQ2Fubm90IHNldCBsb2NhbGU6IHt9Ii5mb3JtYXQoZXJyKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbG9jYWxlY29udiA9IGxvY2FsZS5sb2NhbGVjb252KCkKKyAgICAgICAgICAgIHNlcCA9IGxvY2FsZWNvbnZbJ3Rob3VzYW5kc19zZXAnXQorICAgICAgICAgICAgcG9pbnQgPSBsb2NhbGVjb252WydkZWNpbWFsX3BvaW50J10KKworICAgICAgICAgICAgdGV4dCA9IGZvcm1hdCgxMjM0NTY3ODksICJuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VwLCB0ZXh0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LnJlcGxhY2Uoc2VwLCAnJyksICcxMjM0NTY3ODknKQorCisgICAgICAgICAgICB0ZXh0ID0gZm9ybWF0KDEyMzQuNSwgIm4iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzZXAsIHRleHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHBvaW50LCB0ZXh0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LnJlcGxhY2Uoc2VwLCAnJyksICcxMjM0JyArIHBvaW50ICsgJzUnKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQUxMLCBvbGRsb2MpCisKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoRm9ybWF0VGVzdCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mcmFjdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQppbmRleCAwODRhZTBjLi4xZmFkOTIxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQpAQCAtNDAxLDE0ICs0MDEsMTAgQEAKIAogICAgIGRlZiB0ZXN0TWl4aW5nV2l0aERlY2ltYWwoc2VsZik6CiAgICAgICAgICMgRGVjaW1hbCByZWZ1c2VzIG1peGVkIGFyaXRobWV0aWMgKGJ1dCBub3QgbWl4ZWQgY29tcGFyaXNvbnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIFR5cGVFcnJvciwKLSAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBvcGVyYW5kIHR5cGUocykgZm9yICs6ICdGcmFjdGlvbicgYW5kICdEZWNpbWFsJyIsCi0gICAgICAgICAgICBvcGVyYXRvci5hZGQsIEYoMywxMSksIERlY2ltYWwoJzMuMTQxNTkyNicpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBUeXBlRXJyb3IsCi0gICAgICAgICAgICAidW5zdXBwb3J0ZWQgb3BlcmFuZCB0eXBlKHMpIGZvciArOiAnRGVjaW1hbCcgYW5kICdGcmFjdGlvbiciLAotICAgICAgICAgICAgb3BlcmF0b3IuYWRkLCBEZWNpbWFsKCczLjE0MTU5MjYnKSwgRigzLDExKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5hZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEYoMywxMSksIERlY2ltYWwoJzMuMTQxNTkyNicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmFkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgnMy4xNDE1OTI2JyksIEYoMywxMSkpCiAKICAgICBkZWYgdGVzdENvbXBhcmlzb25zKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoRigxLCAyKSA8IEYoMiwgMykpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Zyb3plbi5weSBiL0xpYi90ZXN0L3Rlc3RfZnJvemVuLnB5CmluZGV4IDUyNDNlYmIuLmZkNjc2MWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnJvemVuLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnJvemVuLnB5CkBAIC01LDYgKzUsMTIgQEAKIGltcG9ydCBzeXMKIAogY2xhc3MgRnJvemVuVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgbW9kdWxlX2F0dHJzID0gZnJvemVuc2V0KFsnX19idWlsdGluc19fJywgJ19fY2FjaGVkX18nLCAnX19kb2NfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19sb2FkZXJfXycsICdfX25hbWVfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nXSkKKyAgICBwYWNrYWdlX2F0dHJzID0gZnJvemVuc2V0KGxpc3QobW9kdWxlX2F0dHJzKSArIFsnX19wYXRoX18nXSkKKwogICAgIGRlZiB0ZXN0X2Zyb3plbihzZWxmKToKICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CiAgICAgICAgICAgICB0cnk6CkBAIC0xMiw3ICsxOCw5IEBACiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgeDoKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImltcG9ydCBfX2hlbGxvX18gZmFpbGVkOiIgKyBzdHIoeCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9faGVsbG9fXy5pbml0aWFsaXplZCwgVHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihfX2hlbGxvX18pKSwgNywgZGlyKF9faGVsbG9fXykpCisgICAgICAgICAgICBleHBlY3QgPSBzZXQoc2VsZi5tb2R1bGVfYXR0cnMpCisgICAgICAgICAgICBleHBlY3QuYWRkKCdpbml0aWFsaXplZCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChkaXIoX19oZWxsb19fKSksIGV4cGVjdCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmdldHZhbHVlKCksICdIZWxsbyB3b3JsZCFcbicpCiAKICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CkBAIC0yMSwxMCArMjksMTMgQEAKICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyB4OgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiaW1wb3J0IF9fcGhlbGxvX18gZmFpbGVkOiIgKyBzdHIoeCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9fcGhlbGxvX18uaW5pdGlhbGl6ZWQsIFRydWUpCisgICAgICAgICAgICBleHBlY3QgPSBzZXQoc2VsZi5wYWNrYWdlX2F0dHJzKQorICAgICAgICAgICAgZXhwZWN0LmFkZCgnaW5pdGlhbGl6ZWQnKQogICAgICAgICAgICAgaWYgbm90ICJfX3BoZWxsb19fLnNwYW0iIGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihfX3BoZWxsb19fKSksIDgsIGRpcihfX3BoZWxsb19fKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChkaXIoX19waGVsbG9fXykpLCBleHBlY3QpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihfX3BoZWxsb19fKSksIDksIGRpcihfX3BoZWxsb19fKSkKKyAgICAgICAgICAgICAgICBleHBlY3QuYWRkKCdzcGFtJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChkaXIoX19waGVsbG9fXykpLCBleHBlY3QpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9fcGhlbGxvX18uX19wYXRoX18sIFtfX3BoZWxsb19fLl9fbmFtZV9fXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmdldHZhbHVlKCksICdIZWxsbyB3b3JsZCFcbicpCiAKQEAgLTM0LDggKzQ1LDEzIEBACiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgeDoKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImltcG9ydCBfX3BoZWxsb19fLnNwYW0gZmFpbGVkOiIgKyBzdHIoeCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9fcGhlbGxvX18uc3BhbS5pbml0aWFsaXplZCwgVHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihfX3BoZWxsb19fLnNwYW0pKSwgNykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihfX3BoZWxsb19fKSksIDkpCisgICAgICAgICAgICBzcGFtX2V4cGVjdCA9IHNldChzZWxmLm1vZHVsZV9hdHRycykKKyAgICAgICAgICAgIHNwYW1fZXhwZWN0LmFkZCgnaW5pdGlhbGl6ZWQnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoZGlyKF9fcGhlbGxvX18uc3BhbSkpLCBzcGFtX2V4cGVjdCkKKyAgICAgICAgICAgIHBoZWxsb19leHBlY3QgPSBzZXQoc2VsZi5wYWNrYWdlX2F0dHJzKQorICAgICAgICAgICAgcGhlbGxvX2V4cGVjdC5hZGQoJ2luaXRpYWxpemVkJykKKyAgICAgICAgICAgIHBoZWxsb19leHBlY3QuYWRkKCdzcGFtJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGRpcihfX3BoZWxsb19fKSksIHBoZWxsb19leHBlY3QpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnSGVsbG8gd29ybGQhXG4nKQogCiAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKaW5kZXggNzFiYzIzZS4uODI0YjdjMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKQEAgLTIyLDEwICsyMiwyNSBAQAogdGhyZWFkaW5nID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0aHJlYWRpbmcnKQogCiAjIHRoZSBkdW1teSBkYXRhIHJldHVybmVkIGJ5IHNlcnZlciBvdmVyIHRoZSBkYXRhIGNoYW5uZWwgd2hlbgotIyBSRVRSLCBMSVNUIGFuZCBOTFNUIGNvbW1hbmRzIGFyZSBpc3N1ZWQKKyMgUkVUUiwgTElTVCwgTkxTVCwgTUxTRCBjb21tYW5kcyBhcmUgaXNzdWVkCiBSRVRSX0RBVEEgPSAnYWJjZGUxMjM0NVxyXG4nICogMTAwMAogTElTVF9EQVRBID0gJ2Zvb1xyXG5iYXJcclxuJwogTkxTVF9EQVRBID0gJ2Zvb1xyXG5iYXJcclxuJworTUxTRF9EQVRBID0gKCJ0eXBlPWNkaXI7cGVybT1lbDt1bmlxdWU9PWtlVk8xK1pGNDsgdGVzdFxyXG4iCisgICAgICAgICAgICAgInR5cGU9cGRpcjtwZXJtPWU7dW5pcXVlPT1rZVZPMStkPzM7IC4uXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1PUy51bml4PXNsaW5rOi9mb29iYXI7cGVybT07dW5pcXVlPT1rZVZPMSs0RzQ7IGZvb2JhclxyXG4iCisgICAgICAgICAgICAgInR5cGU9T1MudW5peD1jaHItMTMvMjk7cGVybT07dW5pcXVlPT1rZVZPMSs1RzQ7IGRldmljZVxyXG4iCisgICAgICAgICAgICAgInR5cGU9T1MudW5peD1ibGstMTEvMTA4O3Blcm09O3VuaXF1ZT09a2VWTzErNkc0OyBibG9ja1xyXG4iCisgICAgICAgICAgICAgInR5cGU9ZmlsZTtwZXJtPWF3cjt1bmlxdWU9PWtlVk8xKzhHNDsgd3JpdGFibGVcclxuIgorICAgICAgICAgICAgICJ0eXBlPWRpcjtwZXJtPWNwbWVsO3VuaXF1ZT09a2VWTzErN0c0OyBwcm9taXNjdW91c1xyXG4iCisgICAgICAgICAgICAgInR5cGU9ZGlyO3Blcm09O3VuaXF1ZT09a2VWTzErMXQyOyBuby1leGVjXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1maWxlO3Blcm09cjt1bmlxdWU9PWtlVk8xK0VHNDsgdHdvIHdvcmRzXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1maWxlO3Blcm09cjt1bmlxdWU9PWtlVk8xK0lINDsgIGxlYWRpbmcgc3BhY2VcclxuIgorICAgICAgICAgICAgICJ0eXBlPWZpbGU7cGVybT1yO3VuaXF1ZT09a2VWTzErMUc0OyBmaWxlMVxyXG4iCisgICAgICAgICAgICAgInR5cGU9ZGlyO3Blcm09Y3BtZWw7dW5pcXVlPT1rZVZPMSs3RzQ7IGluY29taW5nXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1maWxlO3Blcm09cjt1bmlxdWU9PWtlVk8xKzFHNDsgZmlsZTJcclxuIgorICAgICAgICAgICAgICJ0eXBlPWZpbGU7cGVybT1yO3VuaXF1ZT09a2VWTzErMUc0OyBmaWxlM1xyXG4iCisgICAgICAgICAgICAgInR5cGU9ZmlsZTtwZXJtPXI7dW5pcXVlPT1rZVZPMSsxRzQ7IGZpbGU0XHJcbiIpCiAKIAogY2xhc3MgRHVtbXlEVFBIYW5kbGVyKGFzeW5jaGF0LmFzeW5jX2NoYXQpOgpAQCAtNDksNiArNjQsMTEgQEAKICAgICAgICAgICAgIHNlbGYuZHRwX2Nvbm5fY2xvc2VkID0gVHJ1ZQogCiAgICAgZGVmIHB1c2goc2VsZiwgd2hhdCk6CisgICAgICAgIGlmIHNlbGYuYmFzZWNsYXNzLm5leHRfZGF0YSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHdoYXQgPSBzZWxmLmJhc2VjbGFzcy5uZXh0X2RhdGEKKyAgICAgICAgICAgIHNlbGYuYmFzZWNsYXNzLm5leHRfZGF0YSA9IE5vbmUKKyAgICAgICAgaWYgbm90IHdoYXQ6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jbG9zZV93aGVuX2RvbmUoKQogICAgICAgICBzdXBlcihEdW1teURUUEhhbmRsZXIsIHNlbGYpLnB1c2god2hhdC5lbmNvZGUoJ2FzY2lpJykpCiAKICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYpOgpAQCAtNjksNiArODksNyBAQAogICAgICAgICBzZWxmLmxhc3RfcmVjZWl2ZWRfY21kID0gTm9uZQogICAgICAgICBzZWxmLmxhc3RfcmVjZWl2ZWRfZGF0YSA9ICcnCiAgICAgICAgIHNlbGYubmV4dF9yZXNwb25zZSA9ICcnCisgICAgICAgIHNlbGYubmV4dF9kYXRhID0gTm9uZQogICAgICAgICBzZWxmLnJlc3QgPSBOb25lCiAgICAgICAgIHNlbGYucHVzaCgnMjIwIHdlbGNvbWUnKQogCkBAIC0xMDQsNyArMTI1LDcgQEAKICAgICAgICAgYWRkciA9IGxpc3QobWFwKGludCwgYXJnLnNwbGl0KCcsJykpKQogICAgICAgICBpcCA9ICclZC4lZC4lZC4lZCcgJXR1cGxlKGFkZHJbOjRdKQogICAgICAgICBwb3J0ID0gKGFkZHJbNF0gKiAyNTYpICsgYWRkcls1XQotICAgICAgICBzID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChpcCwgcG9ydCksIHRpbWVvdXQ9MTApCisgICAgICAgIHMgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGlwLCBwb3J0KSwgdGltZW91dD0yKQogICAgICAgICBzZWxmLmR0cCA9IHNlbGYuZHRwX2hhbmRsZXIocywgYmFzZWNsYXNzPXNlbGYpCiAgICAgICAgIHNlbGYucHVzaCgnMjAwIGFjdGl2ZSBkYXRhIGNvbm5lY3Rpb24gZXN0YWJsaXNoZWQnKQogCkBAIC0xMjIsNyArMTQzLDcgQEAKICAgICBkZWYgY21kX2VwcnQoc2VsZiwgYXJnKToKICAgICAgICAgYWYsIGlwLCBwb3J0ID0gYXJnLnNwbGl0KGFyZ1swXSlbMTotMV0KICAgICAgICAgcG9ydCA9IGludChwb3J0KQotICAgICAgICBzID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChpcCwgcG9ydCksIHRpbWVvdXQ9MTApCisgICAgICAgIHMgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGlwLCBwb3J0KSwgdGltZW91dD0yKQogICAgICAgICBzZWxmLmR0cCA9IHNlbGYuZHRwX2hhbmRsZXIocywgYmFzZWNsYXNzPXNlbGYpCiAgICAgICAgIHNlbGYucHVzaCgnMjAwIGFjdGl2ZSBkYXRhIGNvbm5lY3Rpb24gZXN0YWJsaXNoZWQnKQogCkBAIC0yMTMsNiArMjM0LDE0IEBACiAgICAgICAgIHNlbGYuZHRwLnB1c2goTkxTVF9EQVRBKQogICAgICAgICBzZWxmLmR0cC5jbG9zZV93aGVuX2RvbmUoKQogCisgICAgZGVmIGNtZF9vcHRzKHNlbGYsIGFyZyk6CisgICAgICAgIHNlbGYucHVzaCgnMjAwIG9wdHMgb2snKQorCisgICAgZGVmIGNtZF9tbHNkKHNlbGYsIGFyZyk6CisgICAgICAgIHNlbGYucHVzaCgnMTI1IG1sc2Qgb2snKQorICAgICAgICBzZWxmLmR0cC5wdXNoKE1MU0RfREFUQSkKKyAgICAgICAgc2VsZi5kdHAuY2xvc2Vfd2hlbl9kb25lKCkKKwogCiBjbGFzcyBEdW1teUZUUFNlcnZlcihhc3luY29yZS5kaXNwYXRjaGVyLCB0aHJlYWRpbmcuVGhyZWFkKToKIApAQCAtMjc0LDExICszMDMsMTEgQEAKICAgICAgICAgX3NzbF9jbG9zaW5nID0gRmFsc2UKIAogICAgICAgICBkZWYgc2VjdXJlX2Nvbm5lY3Rpb24oc2VsZik6Ci0gICAgICAgICAgICBzZWxmLmRlbF9jaGFubmVsKCkKICAgICAgICAgICAgIHNvY2tldCA9IHNzbC53cmFwX3NvY2tldChzZWxmLnNvY2tldCwgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsIHNlcnZlcl9zaWRlPVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgIHNlbGYuZGVsX2NoYW5uZWwoKQogICAgICAgICAgICAgc2VsZi5zZXRfc29ja2V0KHNvY2tldCkKICAgICAgICAgICAgIHNlbGYuX3NzbF9hY2NlcHRpbmcgPSBUcnVlCiAKQEAgLTMxMyw3ICszNDIsMTAgQEAKICAgICAgICAgICAgICAgICAjIGh0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9vcGVuc3NsLXVzZXJzQG9wZW5zc2wub3JnL21zZzYwNzEwLmh0bWwKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBzZWxmLl9zc2xfY2xvc2luZyA9IEZhbHNlCi0gICAgICAgICAgICBzdXBlcihTU0xDb25uZWN0aW9uLCBzZWxmKS5jbG9zZSgpCisgICAgICAgICAgICBpZiBnZXRhdHRyKHNlbGYsICdfY2NjJywgRmFsc2UpIGlzIEZhbHNlOgorICAgICAgICAgICAgICAgIHN1cGVyKFNTTENvbm5lY3Rpb24sIHNlbGYpLmNsb3NlKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIGRlZiBoYW5kbGVfcmVhZF9ldmVudChzZWxmKToKICAgICAgICAgICAgIGlmIHNlbGYuX3NzbF9hY2NlcHRpbmc6CkBAIC0zODEsMTIgKzQxMywxOCBAQAogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubik6CiAgICAgICAgICAgICBEdW1teUZUUEhhbmRsZXIuX19pbml0X18oc2VsZiwgY29ubikKICAgICAgICAgICAgIHNlbGYuc2VjdXJlX2RhdGFfY2hhbm5lbCA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLl9jY2MgPSBGYWxzZQogCiAgICAgICAgIGRlZiBjbWRfYXV0aChzZWxmLCBsaW5lKToKICAgICAgICAgICAgICIiIlNldCB1cCBzZWN1cmUgY29udHJvbCBjaGFubmVsLiIiIgogICAgICAgICAgICAgc2VsZi5wdXNoKCcyMzQgQVVUSCBUTFMgc3VjY2Vzc2Z1bCcpCiAgICAgICAgICAgICBzZWxmLnNlY3VyZV9jb25uZWN0aW9uKCkKIAorICAgICAgICBkZWYgY21kX2NjYyhzZWxmLCBsaW5lKToKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMjIwIFJldmVydGluZyBiYWNrIHRvIGNsZWFyLXRleHQnKQorICAgICAgICAgICAgc2VsZi5fY2NjID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fZG9fc3NsX3NodXRkb3duKCkKKwogICAgICAgICBkZWYgY21kX3Bic3ooc2VsZiwgbGluZSk6CiAgICAgICAgICAgICAiIiJOZWdvdGlhdGUgc2l6ZSBvZiBidWZmZXIgZm9yIHNlY3VyZSBkYXRhIHRyYW5zZmVyLgogICAgICAgICAgICAgRm9yIFRMUy9TU0wgdGhlIG9ubHkgdmFsaWQgdmFsdWUgZm9yIHRoZSBwYXJhbWV0ZXIgaXMgJzAnLgpAQCAtNDE2LDEzICs0NTQsMTcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlGVFBTZXJ2ZXIoKEhPU1QsIDApKQogICAgICAgICBzZWxmLnNlcnZlci5zdGFydCgpCi0gICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUCh0aW1lb3V0PTEwKQorICAgICAgICBzZWxmLmNsaWVudCA9IGZ0cGxpYi5GVFAodGltZW91dD0yKQogICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYuY2xpZW50LmNsb3NlKCkKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgpCiAKKyAgICBkZWYgY2hlY2tfZGF0YShzZWxmLCByZWNlaXZlZCwgZXhwZWN0ZWQpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZWNlaXZlZCksIGxlbihleHBlY3RlZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjZWl2ZWQsIGV4cGVjdGVkKQorCiAgICAgZGVmIHRlc3RfZ2V0d2VsY29tZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNsaWVudC5nZXR3ZWxjb21lKCksICcyMjAgd2VsY29tZScpCiAKQEAgLTUwNCw3ICs1NDYsNyBAQAogICAgICAgICAgICAgcmVjZWl2ZWQuYXBwZW5kKGRhdGEuZGVjb2RlKCdhc2NpaScpKQogICAgICAgICByZWNlaXZlZCA9IFtdCiAgICAgICAgIHNlbGYuY2xpZW50LnJldHJiaW5hcnkoJ3JldHInLCBjYWxsYmFjaykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5qb2luKHJlY2VpdmVkKSwgUkVUUl9EQVRBKQorICAgICAgICBzZWxmLmNoZWNrX2RhdGEoJycuam9pbihyZWNlaXZlZCksIFJFVFJfREFUQSkKIAogICAgIGRlZiB0ZXN0X3JldHJiaW5hcnlfcmVzdChzZWxmKToKICAgICAgICAgZGVmIGNhbGxiYWNrKGRhdGEpOgpAQCAtNTEyLDIwICs1NTQsMTcgQEAKICAgICAgICAgZm9yIHJlc3QgaW4gKDAsIDEwLCAyMCk6CiAgICAgICAgICAgICByZWNlaXZlZCA9IFtdCiAgICAgICAgICAgICBzZWxmLmNsaWVudC5yZXRyYmluYXJ5KCdyZXRyJywgY2FsbGJhY2ssIHJlc3Q9cmVzdCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihyZWNlaXZlZCksIFJFVFJfREFUQVtyZXN0Ol0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0ncmVzdCB0ZXN0IGNhc2UgJWQgJWQgJWQnICUgKHJlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbignJy5qb2luKHJlY2VpdmVkKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihSRVRSX0RBVEFbcmVzdDpdKSkpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2RhdGEoJycuam9pbihyZWNlaXZlZCksIFJFVFJfREFUQVtyZXN0Ol0pCiAKICAgICBkZWYgdGVzdF9yZXRybGluZXMoc2VsZik6CiAgICAgICAgIHJlY2VpdmVkID0gW10KICAgICAgICAgc2VsZi5jbGllbnQucmV0cmxpbmVzKCdyZXRyJywgcmVjZWl2ZWQuYXBwZW5kKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmpvaW4ocmVjZWl2ZWQpLCBSRVRSX0RBVEEucmVwbGFjZSgnXHJcbicsICcnKSkKKyAgICAgICAgc2VsZi5jaGVja19kYXRhKCcnLmpvaW4ocmVjZWl2ZWQpLCBSRVRSX0RBVEEucmVwbGFjZSgnXHJcbicsICcnKSkKIAogICAgIGRlZiB0ZXN0X3N0b3JiaW5hcnkoc2VsZik6CiAgICAgICAgIGYgPSBpby5CeXRlc0lPKFJFVFJfREFUQS5lbmNvZGUoJ2FzY2lpJykpCiAgICAgICAgIHNlbGYuY2xpZW50LnN0b3JiaW5hcnkoJ3N0b3InLCBmKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UubGFzdF9yZWNlaXZlZF9kYXRhLCBSRVRSX0RBVEEpCisgICAgICAgIHNlbGYuY2hlY2tfZGF0YShzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmxhc3RfcmVjZWl2ZWRfZGF0YSwgUkVUUl9EQVRBKQogICAgICAgICAjIHRlc3QgbmV3IGNhbGxiYWNrIGFyZwogICAgICAgICBmbGFnID0gW10KICAgICAgICAgZi5zZWVrKDApCkBAIC01NDIsNyArNTgxLDcgQEAKICAgICBkZWYgdGVzdF9zdG9ybGluZXMoc2VsZik6CiAgICAgICAgIGYgPSBpby5CeXRlc0lPKFJFVFJfREFUQS5yZXBsYWNlKCdcclxuJywgJ1xuJykuZW5jb2RlKCdhc2NpaScpKQogICAgICAgICBzZWxmLmNsaWVudC5zdG9ybGluZXMoJ3N0b3InLCBmKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UubGFzdF9yZWNlaXZlZF9kYXRhLCBSRVRSX0RBVEEpCisgICAgICAgIHNlbGYuY2hlY2tfZGF0YShzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmxhc3RfcmVjZWl2ZWRfZGF0YSwgUkVUUl9EQVRBKQogICAgICAgICAjIHRlc3QgbmV3IGNhbGxiYWNrIGFyZwogICAgICAgICBmbGFnID0gW10KICAgICAgICAgZi5zZWVrKDApCkBAIC01NTgsNiArNTk3LDY0IEBACiAgICAgICAgIHNlbGYuY2xpZW50LmRpcihsYW1iZGEgeDogbC5hcHBlbmQoeCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihsKSwgTElTVF9EQVRBLnJlcGxhY2UoJ1xyXG4nLCAnJykpCiAKKyAgICBkZWYgdGVzdF9tbHNkKHNlbGYpOgorICAgICAgICBsaXN0KHNlbGYuY2xpZW50Lm1sc2QoKSkKKyAgICAgICAgbGlzdChzZWxmLmNsaWVudC5tbHNkKHBhdGg9Jy8nKSkKKyAgICAgICAgbGlzdChzZWxmLmNsaWVudC5tbHNkKHBhdGg9Jy8nLCBmYWN0cz1bJ3NpemUnLCAndHlwZSddKSkKKworICAgICAgICBscyA9IGxpc3Qoc2VsZi5jbGllbnQubWxzZCgpKQorICAgICAgICBmb3IgbmFtZSwgZmFjdHMgaW4gbHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobmFtZSwgc3RyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZhY3RzLCBkaWN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd0eXBlJywgZmFjdHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdwZXJtJywgZmFjdHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd1bmlxdWUnLCBmYWN0cykKKworICAgICAgICBkZWYgc2V0X2RhdGEoZGF0YSk6CisgICAgICAgICAgICBzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLm5leHRfZGF0YSA9IGRhdGEKKworICAgICAgICBkZWYgdGVzdF9lbnRyeShsaW5lLCB0eXBlPU5vbmUsIHBlcm09Tm9uZSwgdW5pcXVlPU5vbmUsIG5hbWU9Tm9uZSk6CisgICAgICAgICAgICB0eXBlID0gJ3R5cGUnIGlmIHR5cGUgaXMgTm9uZSBlbHNlIHR5cGUKKyAgICAgICAgICAgIHBlcm0gPSAncGVybScgaWYgcGVybSBpcyBOb25lIGVsc2UgcGVybQorICAgICAgICAgICAgdW5pcXVlID0gJ3VuaXF1ZScgaWYgdW5pcXVlIGlzIE5vbmUgZWxzZSB1bmlxdWUKKyAgICAgICAgICAgIG5hbWUgPSAnbmFtZScgaWYgbmFtZSBpcyBOb25lIGVsc2UgbmFtZQorICAgICAgICAgICAgc2V0X2RhdGEobGluZSkKKyAgICAgICAgICAgIF9uYW1lLCBmYWN0cyA9IG5leHQoc2VsZi5jbGllbnQubWxzZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfbmFtZSwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFjdHNbJ3R5cGUnXSwgdHlwZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFjdHNbJ3Blcm0nXSwgcGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFjdHNbJ3VuaXF1ZSddLCB1bmlxdWUpCisKKyAgICAgICAgIyBwbGFpbgorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IG5hbWVcclxuJykKKyAgICAgICAgIyAiPSIgaW4gZmFjdCB2YWx1ZQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5PXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuYW1lXHJcbicsIHR5cGU9InR5PXBlIikKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT09dHlwZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgbmFtZVxyXG4nLCB0eXBlPSI9dHlwZSIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9dD15PXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuYW1lXHJcbicsIHR5cGU9InQ9eT1wZSIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9PT09PTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgbmFtZVxyXG4nLCB0eXBlPSI9PT09IikKKyAgICAgICAgIyBzcGFjZXMgaW4gbmFtZQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IG5hIG1lXHJcbicsIG5hbWU9Im5hIG1lIikKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT10eXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuYW1lIFxyXG4nLCBuYW1lPSJuYW1lICIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9dHlwZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgIG5hbWVcclxuJywgbmFtZT0iIG5hbWUiKQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IG4gYW0gIGVcclxuJywgbmFtZT0ibiBhbSAgZSIpCisgICAgICAgICMgIjsiIGluIG5hbWUKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT10eXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuYTttZVxyXG4nLCBuYW1lPSJuYTttZSIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9dHlwZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgO25hbWVcclxuJywgbmFtZT0iO25hbWUiKQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IDtuYW1lO1xyXG4nLCBuYW1lPSI7bmFtZTsiKQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IDs7OztcclxuJywgbmFtZT0iOzs7OyIpCisgICAgICAgICMgY2FzZSBzZW5zaXRpdmVuZXNzCisgICAgICAgIHNldF9kYXRhKCdUeXBlPXR5cGU7VHlQZT1wZXJtO1VOSVFVRT11bmlxdWU7IG5hbWVcclxuJykKKyAgICAgICAgX25hbWUsIGZhY3RzID0gbmV4dChzZWxmLmNsaWVudC5tbHNkKCkpCisgICAgICAgIGZvciB4IGluIGZhY3RzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguaXNsb3dlcigpKQorICAgICAgICAjIG5vIGRhdGEgKGRpcmVjdG9yeSBlbXB0eSkKKyAgICAgICAgc2V0X2RhdGEoJycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIHNlbGYuY2xpZW50Lm1sc2QoKSkKKyAgICAgICAgc2V0X2RhdGEoJycpCisgICAgICAgIGZvciB4IGluIHNlbGYuY2xpZW50Lm1sc2QoKToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgidW5leHBlY3RlZCBkYXRhICVzIiAlIGRhdGEpCisKICAgICBkZWYgdGVzdF9tYWtlcG9ydChzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmNsaWVudC5tYWtlcG9ydCgpOgogICAgICAgICAgICAgIyBJUHY0IGlzIGluIHVzZSwganVzdCBtYWtlIHN1cmUgc2VuZF9lcHJ0IGhhcyBub3QgYmVlbiB1c2VkCkBAIC01ODQsNyArNjgxLDcgQEAKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICAgICAgIyBiYXNlIHRlc3QKLSAgICAgICAgd2l0aCBmdHBsaWIuRlRQKHRpbWVvdXQ9MTApIGFzIHNlbGYuY2xpZW50OgorICAgICAgICB3aXRoIGZ0cGxpYi5GVFAodGltZW91dD0yKSBhcyBzZWxmLmNsaWVudDoKICAgICAgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3Qoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCkKICAgICAgICAgICAgIHNlbGYuY2xpZW50LnNlbmRjbWQoJ25vb3AnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2NsaWVudF9jb25uZWN0ZWQoKSkKQEAgLTU5Miw3ICs2ODksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzX2NsaWVudF9jb25uZWN0ZWQoKSkKIAogICAgICAgICAjIFFVSVQgc2VudCBpbnNpZGUgdGhlIHdpdGggYmxvY2sKLSAgICAgICAgd2l0aCBmdHBsaWIuRlRQKHRpbWVvdXQ9MTApIGFzIHNlbGYuY2xpZW50OgorICAgICAgICB3aXRoIGZ0cGxpYi5GVFAodGltZW91dD0yKSBhcyBzZWxmLmNsaWVudDoKICAgICAgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3Qoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCkKICAgICAgICAgICAgIHNlbGYuY2xpZW50LnNlbmRjbWQoJ25vb3AnKQogICAgICAgICAgICAgc2VsZi5jbGllbnQucXVpdCgpCkBAIC02MDIsNyArNjk5LDcgQEAKICAgICAgICAgIyBmb3JjZSBhIHdyb25nIHJlc3BvbnNlIGNvZGUgdG8gYmUgc2VudCBvbiBRVUlUOiBlcnJvcl9wZXJtCiAgICAgICAgICMgaXMgZXhwZWN0ZWQgYW5kIHRoZSBjb25uZWN0aW9uIGlzIHN1cHBvc2VkIHRvIGJlIGNsb3NlZAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIGZ0cGxpYi5GVFAodGltZW91dD0xMCkgYXMgc2VsZi5jbGllbnQ6CisgICAgICAgICAgICB3aXRoIGZ0cGxpYi5GVFAodGltZW91dD0yKSBhcyBzZWxmLmNsaWVudDoKICAgICAgICAgICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCiAgICAgICAgICAgICAgICAgc2VsZi5jbGllbnQuc2VuZGNtZCgnbm9vcCcpCiAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuaGFuZGxlcl9pbnN0YW5jZS5uZXh0X3Jlc3BvbnNlID0gJzU1MCBlcnJvciBvbiBxdWl0JwpAQCAtNjE2LDYgKzcxMywzMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UubGFzdF9yZWNlaXZlZF9jbWQsICdxdWl0JykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19jbGllbnRfY29ubmVjdGVkKCkpCiAKKyAgICBkZWYgdGVzdF9zb3VyY2VfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgc2VsZi5jbGllbnQucXVpdCgpCisgICAgICAgIHBvcnQgPSBzdXBwb3J0LmZpbmRfdW51c2VkX3BvcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzPShIT1NULCBwb3J0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jbGllbnQuc29jay5nZXRzb2NrbmFtZSgpWzFdLCBwb3J0KQorICAgICAgICAgICAgc2VsZi5jbGllbnQucXVpdCgpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVBRERSSU5VU0U6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY291bGRuJ3QgYmluZCB0byBwb3J0ICVkIiAlIHBvcnQpCisgICAgICAgICAgICByYWlzZQorCisgICAgZGVmIHRlc3Rfc291cmNlX2FkZHJlc3NfcGFzc2l2ZV9jb25uZWN0aW9uKHNlbGYpOgorICAgICAgICBwb3J0ID0gc3VwcG9ydC5maW5kX3VudXNlZF9wb3J0KCkKKyAgICAgICAgc2VsZi5jbGllbnQuc291cmNlX2FkZHJlc3MgPSAoSE9TVCwgcG9ydCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLmNsaWVudC50cmFuc2ZlcmNtZCgnbGlzdCcpIGFzIHNvY2s6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb2NrLmdldHNvY2tuYW1lKClbMV0sIHBvcnQpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVBRERSSU5VU0U6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY291bGRuJ3QgYmluZCB0byBwb3J0ICVkIiAlIHBvcnQpCisgICAgICAgICAgICByYWlzZQorCiAgICAgZGVmIHRlc3RfcGFyc2UyNTcoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnRwbGliLnBhcnNlMjU3KCcyNTcgIi9mb28vYmFyIicpLCAnL2Zvby9iYXInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ0cGxpYi5wYXJzZTI1NygnMjU3ICIvZm9vL2JhciIgY3JlYXRlZCcpLCAnL2Zvby9iYXInKQpAQCAtNjMyLDcgKzc1Myw3IEBACiBjbGFzcyBUZXN0SVB2NkVudmlyb25tZW50KFRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teUZUUFNlcnZlcigoSE9TVCwgMCksIGFmPXNvY2tldC5BRl9JTkVUNikKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teUZUUFNlcnZlcigoJzo6MScsIDApLCBhZj1zb2NrZXQuQUZfSU5FVDYpCiAgICAgICAgIHNlbGYuc2VydmVyLnN0YXJ0KCkKICAgICAgICAgc2VsZi5jbGllbnQgPSBmdHBsaWIuRlRQKCkKICAgICAgICAgc2VsZi5jbGllbnQuY29ubmVjdChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQpAQCAtNjYxLDYgKzc4Miw3IEBACiAgICAgICAgICAgICAgICAgcmVjZWl2ZWQuYXBwZW5kKGRhdGEuZGVjb2RlKCdhc2NpaScpKQogICAgICAgICAgICAgcmVjZWl2ZWQgPSBbXQogICAgICAgICAgICAgc2VsZi5jbGllbnQucmV0cmJpbmFyeSgncmV0cicsIGNhbGxiYWNrKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oJycuam9pbihyZWNlaXZlZCkpLCBsZW4oUkVUUl9EQVRBKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihyZWNlaXZlZCksIFJFVFJfREFUQSkKICAgICAgICAgc2VsZi5jbGllbnQuc2V0X3Bhc3YoVHJ1ZSkKICAgICAgICAgcmV0cigpCkBAIC02NzYsNyArNzk4LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlUTFNfRlRQU2VydmVyKChIT1NULCAwKSkKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RhcnQoKQotICAgICAgICBzZWxmLmNsaWVudCA9IGZ0cGxpYi5GVFBfVExTKHRpbWVvdXQ9MTApCisgICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUF9UTFModGltZW91dD0yKQogICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCiAgICAgICAgICMgZW5hYmxlIFRMUwogICAgICAgICBzZWxmLmNsaWVudC5hdXRoKCkKQEAgLTY4OSw3ICs4MTEsNyBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVRMU19GVFBTZXJ2ZXIoKEhPU1QsIDApKQogICAgICAgICBzZWxmLnNlcnZlci5zdGFydCgpCi0gICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUF9UTFModGltZW91dD0xMCkKKyAgICAgICAgc2VsZi5jbGllbnQgPSBmdHBsaWIuRlRQX1RMUyh0aW1lb3V0PTIpCiAgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3Qoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKQEAgLTc0OSw3ICs4NzEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdHBsaWIuRlRQX1RMUywgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9Q0VSVEZJTEUsIGNvbnRleHQ9Y3R4KQogCi0gICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUF9UTFMoY29udGV4dD1jdHgsIHRpbWVvdXQ9MTApCisgICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUF9UTFMoY29udGV4dD1jdHgsIHRpbWVvdXQ9MikKICAgICAgICAgc2VsZi5jbGllbnQuY29ubmVjdChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQogICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2Uoc2VsZi5jbGllbnQuc29jaywgc3NsLlNTTFNvY2tldCkKICAgICAgICAgc2VsZi5jbGllbnQuYXV0aCgpCkBAIC03NjEsNDUgKzg4Myw1MyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzb2NrLmNvbnRleHQsIGN0eCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzb2NrLCBzc2wuU1NMU29ja2V0KQogCisgICAgZGVmIHRlc3RfY2NjKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmNsaWVudC5jY2MpCisgICAgICAgIHNlbGYuY2xpZW50LmxvZ2luKHNlY3VyZT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VsZi5jbGllbnQuc29jaywgc3NsLlNTTFNvY2tldCkKKyAgICAgICAgc2VsZi5jbGllbnQuY2NjKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5jbGllbnQuc29jay51bndyYXApCisKIAogY2xhc3MgVGVzdFRpbWVvdXRzKFRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5ldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICBzZWxmLnNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCi0gICAgICAgIHNlbGYuc29jay5zZXR0aW1lb3V0KDEwKQorICAgICAgICBzZWxmLnNvY2suc2V0dGltZW91dCgyMCkKICAgICAgICAgc2VsZi5wb3J0ID0gc3VwcG9ydC5iaW5kX3BvcnQoc2VsZi5zb2NrKQotICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLnNlcnZlciwgYXJncz0oc2VsZi5ldnQsc2VsZi5zb2NrKSkuc3RhcnQoKQorICAgICAgICBzZWxmLnNlcnZlcl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLnNlcnZlcikKKyAgICAgICAgc2VsZi5zZXJ2ZXJfdGhyZWFkLnN0YXJ0KCkKICAgICAgICAgIyBXYWl0IGZvciB0aGUgc2VydmVyIHRvIGJlIHJlYWR5LgogICAgICAgICBzZWxmLmV2dC53YWl0KCkKICAgICAgICAgc2VsZi5ldnQuY2xlYXIoKQorICAgICAgICBzZWxmLm9sZF9wb3J0ID0gZnRwbGliLkZUUC5wb3J0CiAgICAgICAgIGZ0cGxpYi5GVFAucG9ydCA9IHNlbGYucG9ydAogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBzZWxmLmV2dC53YWl0KCkKLSAgICAgICAgc2VsZi5zb2NrLmNsb3NlKCkKKyAgICAgICAgZnRwbGliLkZUUC5wb3J0ID0gc2VsZi5vbGRfcG9ydAorICAgICAgICBzZWxmLnNlcnZlcl90aHJlYWQuam9pbigpCiAKLSAgICBkZWYgc2VydmVyKHNlbGYsIGV2dCwgc2Vydik6CisgICAgZGVmIHNlcnZlcihzZWxmKToKICAgICAgICAgIyBUaGlzIG1ldGhvZCBzZXRzIHRoZSBldnQgMyB0aW1lczoKICAgICAgICAgIyAgMSkgd2hlbiB0aGUgY29ubmVjdGlvbiBpcyByZWFkeSB0byBiZSBhY2NlcHRlZC4KICAgICAgICAgIyAgMikgd2hlbiBpdCBpcyBzYWZlIGZvciB0aGUgY2FsbGVyIHRvIGNsb3NlIHRoZSBjb25uZWN0aW9uCiAgICAgICAgICMgIDMpIHdoZW4gd2UgaGF2ZSBjbG9zZWQgdGhlIHNvY2tldAotICAgICAgICBzZXJ2Lmxpc3Rlbig1KQorICAgICAgICBzZWxmLnNvY2subGlzdGVuKDUpCiAgICAgICAgICMgKDEpIFNpZ25hbCB0aGUgY2FsbGVyIHRoYXQgd2UgYXJlIHJlYWR5IHRvIGFjY2VwdCB0aGUgY29ubmVjdGlvbi4KLSAgICAgICAgZXZ0LnNldCgpCisgICAgICAgIHNlbGYuZXZ0LnNldCgpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2LmFjY2VwdCgpCisgICAgICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zb2NrLmFjY2VwdCgpCiAgICAgICAgIGV4Y2VwdCBzb2NrZXQudGltZW91dDoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNvbm4uc2VuZChiIjEgSG9sYSBtdW5kb1xuIikKKyAgICAgICAgICAgIGNvbm4uc2VuZGFsbChiIjEgSG9sYSBtdW5kb1xuIikKKyAgICAgICAgICAgIGNvbm4uc2h1dGRvd24oc29ja2V0LlNIVVRfV1IpCiAgICAgICAgICAgICAjICgyKSBTaWduYWwgdGhlIGNhbGxlciB0aGF0IGl0IGlzIHNhZmUgdG8gY2xvc2UgdGhlIHNvY2tldC4KLSAgICAgICAgICAgIGV2dC5zZXQoKQorICAgICAgICAgICAgc2VsZi5ldnQuc2V0KCkKICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2Vydi5jbG9zZSgpCi0gICAgICAgICAgICAjICgzKSBTaWduYWwgdGhlIGNhbGxlciB0aGF0IHdlIGFyZSBkb25lLgotICAgICAgICAgICAgZXZ0LnNldCgpCisgICAgICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQogCiAgICAgZGVmIHRlc3RUaW1lb3V0RGVmYXVsdChzZWxmKToKICAgICAgICAgIyBkZWZhdWx0IC0tIHVzZSBnbG9iYWwgc29ja2V0IHRpbWVvdXQKQEAgLTg1NywxMyArOTg3LDggQEAKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3RzID0gW1Rlc3RGVFBDbGFzcywgVGVzdFRpbWVvdXRzXQotICAgIGlmIHNvY2tldC5oYXNfaXB2NjoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgRHVtbXlGVFBTZXJ2ZXIoKEhPU1QsIDApLCBhZj1zb2NrZXQuQUZfSU5FVDYpCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0ZXN0cy5hcHBlbmQoVGVzdElQdjZFbnZpcm9ubWVudCkKKyAgICBpZiBzdXBwb3J0LklQVjZfRU5BQkxFRDoKKyAgICAgICAgdGVzdHMuYXBwZW5kKFRlc3RJUHY2RW52aXJvbm1lbnQpCiAKICAgICBpZiBzc2wgaXMgbm90IE5vbmU6CiAgICAgICAgIHRlc3RzLmV4dGVuZChbVGVzdFRMU19GVFBDbGFzc01peGluLCBUZXN0VExTX0ZUUENsYXNzXSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnVuY2F0dHJzLnB5IGIvTGliL3Rlc3QvdGVzdF9mdW5jYXR0cnMucHkKaW5kZXggNGQxOTM2OC4uYzhlZDgzMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdW5jYXR0cnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdW5jYXR0cnMucHkKQEAgLTIsNiArMiwxNSBAQAogaW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKIAorCitkZWYgZ2xvYmFsX2Z1bmN0aW9uKCk6CisgICAgZGVmIGlubmVyX2Z1bmN0aW9uKCk6CisgICAgICAgIGNsYXNzIExvY2FsQ2xhc3M6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHJldHVybiBMb2NhbENsYXNzCisgICAgcmV0dXJuIGxhbWJkYTogaW5uZXJfZnVuY3Rpb24KKworCiBjbGFzcyBGdW5jQXR0cnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIGNsYXNzIEY6CkBAIC05Niw2ICsxMDUsMjQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZpLmEuX19uYW1lX18sICdhJykKICAgICAgICAgc2VsZi5jYW5ub3Rfc2V0X2F0dHIoc2VsZi5maS5hLCAiX19uYW1lX18iLCAnYScsIEF0dHJpYnV0ZUVycm9yKQogCisgICAgZGVmIHRlc3RfX19xdWFsbmFtZV9fKHNlbGYpOgorICAgICAgICAjIFBFUCAzMTU1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5iLl9fcXVhbG5hbWVfXywgJ0Z1bmNBdHRyc1Rlc3Quc2V0VXAuPGxvY2Fscz4uYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRnVuY0F0dHJzVGVzdC5zZXRVcC5fX3F1YWxuYW1lX18sICdGdW5jQXR0cnNUZXN0LnNldFVwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iYWxfZnVuY3Rpb24uX19xdWFsbmFtZV9fLCAnZ2xvYmFsX2Z1bmN0aW9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iYWxfZnVuY3Rpb24oKS5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2dsb2JhbF9mdW5jdGlvbi48bG9jYWxzPi48bGFtYmRhPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2xvYmFsX2Z1bmN0aW9uKCkoKS5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2dsb2JhbF9mdW5jdGlvbi48bG9jYWxzPi5pbm5lcl9mdW5jdGlvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2xvYmFsX2Z1bmN0aW9uKCkoKSgpLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZ2xvYmFsX2Z1bmN0aW9uLjxsb2NhbHM+LmlubmVyX2Z1bmN0aW9uLjxsb2NhbHM+LkxvY2FsQ2xhc3MnKQorICAgICAgICBzZWxmLmIuX19xdWFsbmFtZV9fID0gJ2MnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5iLl9fcXVhbG5hbWVfXywgJ2MnKQorICAgICAgICBzZWxmLmIuX19xdWFsbmFtZV9fID0gJ2QnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5iLl9fcXVhbG5hbWVfXywgJ2QnKQorICAgICAgICAjIF9fcXVhbG5hbWVfXyBtdXN0IGJlIGEgc3RyaW5nCisgICAgICAgIHNlbGYuY2Fubm90X3NldF9hdHRyKHNlbGYuYiwgJ19fcXVhbG5hbWVfXycsIDcsIFR5cGVFcnJvcikKKwogICAgIGRlZiB0ZXN0X19fY29kZV9fKHNlbGYpOgogICAgICAgICBudW1fb25lLCBudW1fdHdvID0gNywgOAogICAgICAgICBkZWYgYSgpOiBwYXNzCkBAIC0zMTUsMTEgKzM0MiwzNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUocy5fX2Z1bmNfXyBpcyBmKQogCiAKK2NsYXNzIEJ1aWx0aW5GdW5jdGlvblByb3BlcnRpZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIFhYWCBOb3Qgc3VyZSB3aGVyZSB0aGlzIHNob3VsZCByZWFsbHkgZ28gc2luY2UgSSBjYW4ndCBmaW5kIGEKKyAgICAjIHRlc3QgbW9kdWxlIHNwZWNpZmljYWxseSBmb3IgYnVpbHRpbl9mdW5jdGlvbl9vcl9tZXRob2QuCisKKyAgICBkZWYgdGVzdF9idWlsdGluX19xdWFsbmFtZV9fKHNlbGYpOgorICAgICAgICBpbXBvcnQgdGltZQorCisgICAgICAgICMgYnVpbHRpbiBmdW5jdGlvbjoKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4uX19xdWFsbmFtZV9fLCAnbGVuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lLnRpbWUuX19xdWFsbmFtZV9fLCAndGltZScpCisKKyAgICAgICAgIyBidWlsdGluIGNsYXNzbWV0aG9kOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpY3QuZnJvbWtleXMuX19xdWFsbmFtZV9fLCAnZGljdC5mcm9ta2V5cycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQuX19nZXRmb3JtYXRfXy5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zsb2F0Ll9fZ2V0Zm9ybWF0X18nKQorCisgICAgICAgICMgYnVpbHRpbiBzdGF0aWNtZXRob2Q6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyLm1ha2V0cmFucy5fX3F1YWxuYW1lX18sICdzdHIubWFrZXRyYW5zJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcy5tYWtldHJhbnMuX19xdWFsbmFtZV9fLCAnYnl0ZXMubWFrZXRyYW5zJykKKworICAgICAgICAjIGJ1aWx0aW4gYm91bmQgaW5zdGFuY2UgbWV0aG9kOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsxLCAyLCAzXS5hcHBlbmQuX19xdWFsbmFtZV9fLCAnbGlzdC5hcHBlbmQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHsnZm9vJzogJ2Jhcid9LnBvcC5fX3F1YWxuYW1lX18sICdkaWN0LnBvcCcpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEZ1bmN0aW9uUHJvcGVydGllc1Rlc3QsIEluc3RhbmNlbWV0aG9kQXR0clRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmJpdHJhcnlGdW5jdGlvbkF0dHJUZXN0LCBGdW5jdGlvbkRpY3RzVGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uRG9jc3RyaW5nVGVzdCwgQ2VsbFRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNNZXRob2RBdHRyc1Rlc3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNNZXRob2RBdHRyc1Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsdGluRnVuY3Rpb25Qcm9wZXJ0aWVzVGVzdCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkgYi9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weQppbmRleCAxMWU2ZTg0Li5kYjFlOTM0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weQpAQCAtMjQ2LDYgKzI0Niw3IEBACiAgICAgICAgIHNlbGYuY2hlY2tfd3JhcHBlcih3cmFwcGVyLCBmKQogICAgICAgICBzZWxmLmFzc2VydElzKHdyYXBwZXIuX193cmFwcGVkX18sIGYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX25hbWVfXywgJ2YnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19xdWFsbmFtZV9fLCBmLl9fcXVhbG5hbWVfXykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLmF0dHIsICdUaGlzIGlzIGFsc28gYSB0ZXN0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fYW5ub3RhdGlvbnNfX1snYSddLCAnVGhpcyBpcyBhIG5ldyBhbm5vdGF0aW9uJykKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignYicsIHdyYXBwZXIuX19hbm5vdGF0aW9uc19fKQpAQCAtMjY2LDYgKzI2Nyw3IEBACiAgICAgICAgIGZ1bmN0b29scy51cGRhdGVfd3JhcHBlcih3cmFwcGVyLCBmLCAoKSwgKCkpCiAgICAgICAgIHNlbGYuY2hlY2tfd3JhcHBlcih3cmFwcGVyLCBmLCAoKSwgKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX25hbWVfXywgJ3dyYXBwZXInKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHdyYXBwZXIuX19xdWFsbmFtZV9fLCBmLl9fcXVhbG5hbWVfXykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fZG9jX18sIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX2Fubm90YXRpb25zX18sIHt9KQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIod3JhcHBlciwgJ2F0dHInKSkKQEAgLTI4Myw2ICsyODUsNyBAQAogICAgICAgICBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIod3JhcHBlciwgZiwgYXNzaWduLCB1cGRhdGUpCiAgICAgICAgIHNlbGYuY2hlY2tfd3JhcHBlcih3cmFwcGVyLCBmLCBhc3NpZ24sIHVwZGF0ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fbmFtZV9fLCAnd3JhcHBlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwod3JhcHBlci5fX3F1YWxuYW1lX18sIGYuX19xdWFsbmFtZV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19kb2NfXywgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLmF0dHIsICdUaGlzIGlzIGEgZGlmZmVyZW50IHRlc3QnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuZGljdF9hdHRyLCBmLmRpY3RfYXR0cikKQEAgLTMzMCwxNyArMzMzLDE4IEBACiAgICAgICAgIGRlZiB3cmFwcGVyKCk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuY2hlY2tfd3JhcHBlcih3cmFwcGVyLCBmKQotICAgICAgICByZXR1cm4gd3JhcHBlcgorICAgICAgICByZXR1cm4gd3JhcHBlciwgZgogCiAgICAgZGVmIHRlc3RfZGVmYXVsdF91cGRhdGUoc2VsZik6Ci0gICAgICAgIHdyYXBwZXIgPSBzZWxmLl9kZWZhdWx0X3VwZGF0ZSgpCisgICAgICAgIHdyYXBwZXIsIGYgPSBzZWxmLl9kZWZhdWx0X3VwZGF0ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX25hbWVfXywgJ2YnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19xdWFsbmFtZV9fLCBmLl9fcXVhbG5hbWVfXykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLmF0dHIsICdUaGlzIGlzIGFsc28gYSB0ZXN0JykKIAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCiAgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PMiBhbmQgYWJvdmUiKQogICAgIGRlZiB0ZXN0X2RlZmF1bHRfdXBkYXRlX2RvYyhzZWxmKToKLSAgICAgICAgd3JhcHBlciA9IHNlbGYuX2RlZmF1bHRfdXBkYXRlKCkKKyAgICAgICAgd3JhcHBlciwgXyA9IHNlbGYuX2RlZmF1bHRfdXBkYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fZG9jX18sICdUaGlzIGlzIGEgdGVzdCcpCiAKICAgICBkZWYgdGVzdF9ub191cGRhdGUoc2VsZik6CkBAIC0zNTMsNiArMzU3LDcgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5jaGVja193cmFwcGVyKHdyYXBwZXIsIGYsICgpLCAoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fbmFtZV9fLCAnd3JhcHBlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwod3JhcHBlci5fX3F1YWxuYW1lX18sIGYuX19xdWFsbmFtZV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19kb2NfXywgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKHdyYXBwZXIsICdhdHRyJykpCiAKQEAgLTM3Miw2ICszNzcsNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmNoZWNrX3dyYXBwZXIod3JhcHBlciwgZiwgYXNzaWduLCB1cGRhdGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX25hbWVfXywgJ3dyYXBwZXInKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHdyYXBwZXIuX19xdWFsbmFtZV9fLCBmLl9fcXVhbG5hbWVfXykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fZG9jX18sIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5hdHRyLCAnVGhpcyBpcyBhIGRpZmZlcmVudCB0ZXN0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLmRpY3RfYXR0ciwgZi5kaWN0X2F0dHIpCkBAIC00NTcsMTkgKzQ2Myw4MiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhhZGQsIGQpLCAiIi5qb2luKGQua2V5cygpKSkKIAogY2xhc3MgVGVzdENtcFRvS2V5KHVuaXR0ZXN0LlRlc3RDYXNlKToKKwogICAgIGRlZiB0ZXN0X2NtcF90b19rZXkoc2VsZik6CisgICAgICAgIGRlZiBjbXAxKHgsIHkpOgorICAgICAgICAgICAgcmV0dXJuICh4ID4geSkgLSAoeCA8IHkpCisgICAgICAgIGtleSA9IGZ1bmN0b29scy5jbXBfdG9fa2V5KGNtcDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5KDMpLCBrZXkoMykpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihrZXkoMyksIGtleSgxKSkKKyAgICAgICAgZGVmIGNtcDIoeCwgeSk6CisgICAgICAgICAgICByZXR1cm4gaW50KHgpIC0gaW50KHkpCisgICAgICAgIGtleSA9IGZ1bmN0b29scy5jbXBfdG9fa2V5KGNtcDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5KDQuMCksIGtleSgnNCcpKQorICAgICAgICBzZWxmLmFzc2VydExlc3Moa2V5KDIpLCBrZXkoJzM1JykpCisKKyAgICBkZWYgdGVzdF9jbXBfdG9fa2V5X2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgZGVmIGNtcDEoeCwgeSk6CisgICAgICAgICAgICByZXR1cm4gKHggPiB5KSAtICh4IDwgeSkKKyAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkobXljbXA9Y21wMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXkob2JqPTMpLCBrZXkob2JqPTMpKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoa2V5KG9iaj0zKSwga2V5KG9iaj0xKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvcikpOgorICAgICAgICAgICAga2V5KDMpID4gMSAgICAjIHJocyBpcyBub3QgYSBLIG9iamVjdAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKSk6CisgICAgICAgICAgICAxIDwga2V5KDMpICAgICMgbGhzIGlzIG5vdCBhIEsgb2JqZWN0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGtleSA9IGZ1bmN0b29scy5jbXBfdG9fa2V5KCkgICAgICAgICAgICAgIyB0b28gZmV3IGFyZ3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkoY21wMSwgTm9uZSkgICAjIHRvbyBtYW55IGFyZ3MKKyAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkoY21wMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAga2V5KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvbyBmZXcgYXJncworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBrZXkoTm9uZSwgTm9uZSkgICAgICAgICAgICAgICAgICAgICAgICAgICMgdG9vIG1hbnkgYXJncworCisgICAgZGVmIHRlc3RfYmFkX2NtcChzZWxmKToKKyAgICAgICAgZGVmIGNtcDEoeCwgeSk6CisgICAgICAgICAgICByYWlzZSBaZXJvRGl2aXNpb25FcnJvcgorICAgICAgICBrZXkgPSBmdW5jdG9vbHMuY21wX3RvX2tleShjbXAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIGtleSgzKSA+IGtleSgxKQorCisgICAgICAgIGNsYXNzIEJhZENtcDoKKyAgICAgICAgICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJhaXNlIFplcm9EaXZpc2lvbkVycm9yCisgICAgICAgIGRlZiBjbXAxKHgsIHkpOgorICAgICAgICAgICAgcmV0dXJuIEJhZENtcCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAga2V5KDMpID4ga2V5KDEpCisKKyAgICBkZWYgdGVzdF9vYmpfZmllbGQoc2VsZik6CisgICAgICAgIGRlZiBjbXAxKHgsIHkpOgorICAgICAgICAgICAgcmV0dXJuICh4ID4geSkgLSAoeCA8IHkpCisgICAgICAgIGtleSA9IGZ1bmN0b29scy5jbXBfdG9fa2V5KG15Y21wPWNtcDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5KDUwKS5vYmosIDUwKQorCisgICAgZGVmIHRlc3Rfc29ydF9pbnQoc2VsZik6CiAgICAgICAgIGRlZiBteWNtcCh4LCB5KToKICAgICAgICAgICAgIHJldHVybiB5IC0geAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChyYW5nZSg1KSwga2V5PWZ1bmN0b29scy5jbXBfdG9fa2V5KG15Y21wKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWzQsIDMsIDIsIDEsIDBdKQogCisgICAgZGVmIHRlc3Rfc29ydF9pbnRfc3RyKHNlbGYpOgorICAgICAgICBkZWYgbXljbXAoeCwgeSk6CisgICAgICAgICAgICB4LCB5ID0gaW50KHgpLCBpbnQoeSkKKyAgICAgICAgICAgIHJldHVybiAoeCA+IHkpIC0gKHggPCB5KQorICAgICAgICB2YWx1ZXMgPSBbNSwgJzMnLCA3LCAyLCAnMCcsICcxJywgNCwgJzEwJywgMV0KKyAgICAgICAgdmFsdWVzID0gc29ydGVkKHZhbHVlcywga2V5PWZ1bmN0b29scy5jbXBfdG9fa2V5KG15Y21wKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbaW50KHZhbHVlKSBmb3IgdmFsdWUgaW4gdmFsdWVzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbMCwgMSwgMSwgMiwgMywgNCwgNSwgNywgMTBdKQorCiAgICAgZGVmIHRlc3RfaGFzaChzZWxmKToKICAgICAgICAgZGVmIG15Y21wKHgsIHkpOgogICAgICAgICAgICAgcmV0dXJuIHkgLSB4CiAgICAgICAgIGtleSA9IGZ1bmN0b29scy5jbXBfdG9fa2V5KG15Y21wKQogICAgICAgICBrID0ga2V5KDEwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhhc2gsIGspCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShrLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShrLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkKIAogY2xhc3MgVGVzdFRvdGFsT3JkZXJpbmcodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC02OTIsNiArNzYxLDQ3IEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpOgogICAgICAgICAgICAgICAgIGZ1bmMoMTUpCiAKKyAgICBkZWYgdGVzdF9scnVfd2l0aF90eXBlcyhzZWxmKToKKyAgICAgICAgZm9yIG1heHNpemUgaW4gKE5vbmUsIDEwMCk6CisgICAgICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZShtYXhzaXplPW1heHNpemUsIHR5cGVkPVRydWUpCisgICAgICAgICAgICBkZWYgc3F1YXJlKHgpOgorICAgICAgICAgICAgICAgIHJldHVybiB4ICogeAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUoMyksIDkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc3F1YXJlKDMpKSwgdHlwZSg5KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3F1YXJlKDMuMCksIDkuMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzcXVhcmUoMy4wKSksIHR5cGUoOS4wKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3F1YXJlKHg9MyksIDkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc3F1YXJlKHg9MykpLCB0eXBlKDkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUoeD0zLjApLCA5LjApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc3F1YXJlKHg9My4wKSksIHR5cGUoOS4wKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3F1YXJlLmNhY2hlX2luZm8oKS5oaXRzLCA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUuY2FjaGVfaW5mbygpLm1pc3NlcywgNCkKKworICAgIGRlZiB0ZXN0X25lZWRfZm9yX3Jsb2NrKHNlbGYpOgorICAgICAgICAjIFRoaXMgd2lsbCBkZWFkbG9jayBvbiBhbiBMUlUgY2FjaGUgdGhhdCB1c2VzIGEgcmVndWxhciBsb2NrCisKKyAgICAgICAgQGZ1bmN0b29scy5scnVfY2FjaGUobWF4c2l6ZT0xMCkKKyAgICAgICAgZGVmIHRlc3RfZnVuYyh4KToKKyAgICAgICAgICAgICdVc2VkIHRvIGRlbW9uc3RyYXRlIGEgcmVlbnRyYW50IGxydV9jYWNoZSBjYWxsIHdpdGhpbiBhIHNpbmdsZSB0aHJlYWQnCisgICAgICAgICAgICByZXR1cm4geAorCisgICAgICAgIGNsYXNzIERvdWJsZUVxOgorICAgICAgICAgICAgJ0RlbW9uc3RyYXRlIGEgcmVlbnRyYW50IGxydV9jYWNoZSBjYWxsIHdpdGhpbiBhIHNpbmdsZSB0aHJlYWQnCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgc2VsZi54ID0geAorICAgICAgICAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLngKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYueCA9PSAyOgorICAgICAgICAgICAgICAgICAgICB0ZXN0X2Z1bmMoRG91YmxlRXEoMSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYueCA9PSBvdGhlci54CisKKyAgICAgICAgdGVzdF9mdW5jKERvdWJsZUVxKDEpKSAgICAgICAgICAgICAgICAgICAgICAjIExvYWQgdGhlIGNhY2hlCisgICAgICAgIHRlc3RfZnVuYyhEb3VibGVFcSgyKSkgICAgICAgICAgICAgICAgICAgICAgIyBMb2FkIHRoZSBjYWNoZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfZnVuYyhEb3VibGVFcSgyKSksICAgICMgVHJpZ2dlciBhIHJlLWVudHJhbnQgX19lcV9fIGNhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEb3VibGVFcSgyKSkgICAgICAgICAgICAgICAjIFZlcmlmeSB0aGUgY29ycmVjdCByZXR1cm4gdmFsdWUKKworCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6CiAgICAgdGVzdF9jbGFzc2VzID0gKAogICAgICAgICBUZXN0UGFydGlhbCwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5IGIvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKaW5kZXggYzY2ODlhMS4uYTBjMTU2ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKQEAgLTEzLDE4ICsxMywxOCBAQAogY2xhc3MgRnV0dXJlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9mdXR1cmUxKHNlbGYpOgotICAgICAgICBzdXBwb3J0LnVubG9hZCgndGVzdF9mdXR1cmUxJykKLSAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X2Z1dHVyZTEKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X2Z1dHVyZTEucmVzdWx0LCA2KQorICAgICAgICB3aXRoIHN1cHBvcnQuQ2xlYW5JbXBvcnQoJ2Z1dHVyZV90ZXN0MScpOgorICAgICAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCBmdXR1cmVfdGVzdDEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnV0dXJlX3Rlc3QxLnJlc3VsdCwgNikKIAogICAgIGRlZiB0ZXN0X2Z1dHVyZTIoc2VsZik6Ci0gICAgICAgIHN1cHBvcnQudW5sb2FkKCd0ZXN0X2Z1dHVyZTInKQotICAgICAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfZnV0dXJlMgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfZnV0dXJlMi5yZXN1bHQsIDYpCisgICAgICAgIHdpdGggc3VwcG9ydC5DbGVhbkltcG9ydCgnZnV0dXJlX3Rlc3QyJyk6CisgICAgICAgICAgICBmcm9tIHRlc3QgaW1wb3J0IGZ1dHVyZV90ZXN0MgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdXR1cmVfdGVzdDIucmVzdWx0LCA2KQogCiAgICAgZGVmIHRlc3RfZnV0dXJlMyhzZWxmKToKLSAgICAgICAgc3VwcG9ydC51bmxvYWQoJ3Rlc3RfZnV0dXJlMycpCi0gICAgICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF9mdXR1cmUzCisgICAgICAgIHdpdGggc3VwcG9ydC5DbGVhbkltcG9ydCgndGVzdF9mdXR1cmUzJyk6CisgICAgICAgICAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfZnV0dXJlMwogCiAgICAgZGVmIHRlc3RfYmFkZnV0dXJlMyhzZWxmKToKICAgICAgICAgdHJ5OgpAQCAtMTAzLDggKzEwMyw4IEBACiAgICAgICAgICAgICBzZWxmLmZhaWwoInN5bnRheCBlcnJvciBkaWRuJ3Qgb2NjdXIiKQogCiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfZmVhdHVyZXMoc2VsZik6Ci0gICAgICAgIHN1cHBvcnQudW5sb2FkKCJ0ZXN0LnRlc3RfZnV0dXJlNSIpCi0gICAgICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF9mdXR1cmU1CisgICAgICAgIHdpdGggc3VwcG9ydC5DbGVhbkltcG9ydCgidGVzdC50ZXN0X2Z1dHVyZTUiKToKKyAgICAgICAgICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF9mdXR1cmU1CiAKICAgICBkZWYgdGVzdF91bmljb2RlX2xpdGVyYWxzX2V4ZWMoc2VsZik6CiAgICAgICAgIHNjb3BlID0ge30KQEAgLTExMiw4ICsxMTIsNiBAQAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2NvcGVbIngiXSwgc3RyKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChGdXR1cmVUZXN0KQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1dHVyZTMucHkgYi9MaWIvdGVzdC90ZXN0X2Z1dHVyZTMucHkKaW5kZXggYjE1NTJhNS4uMDlmMWM3OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdXR1cmUzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnV0dXJlMy5weQpAQCAtMiw3ICsyLDYgQEAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24KIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogeCA9IDIKIGRlZiBuZXN0ZXIoKToKQEAgLTIzLDggKzIyLDUgQEAKICAgICBkZWYgdGVzdF9uZXN0ZWRfc2NvcGVzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5lc3RlcigpLCAzKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdEZ1dHVyZSkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mdXR1cmU0LnB5IGIvTGliL3Rlc3QvdGVzdF9mdXR1cmU0LnB5CmluZGV4IGMzMmYyN2YuLjQxM2RkNGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnV0dXJlNC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Z1dHVyZTQucHkKQEAgLTEsMTAgKzEsNiBAQAogZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBwYXNzCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnV0dXJlNS5weSBiL0xpYi90ZXN0L3Rlc3RfZnV0dXJlNS5weQppbmRleCBlZDAzYTA3Li5iNDRiOTdlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Z1dHVyZTUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdXR1cmU1LnB5CkBAIC0xNyw1ICsxNyw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCAiZm9vXG4iKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0TXVsdGlwbGVGZWF0dXJlcykKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2djLnB5IGIvTGliL3Rlc3QvdGVzdF9nYy5weQppbmRleCBlMWMxMjRkLi5jNTliNzJlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2djLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2MucHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBydW5fdW5pdHRlc3QsIHN0cmlwX3B5dGhvbl9zdGRlcnIKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAodmVyYm9zZSwgcmVmY291bnRfdGVzdCwgcnVuX3VuaXR0ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwX3B5dGhvbl9zdGRlcnIpCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IGdjCkBAIC0zNyw2ICszOCwyMCBAQAogICAgICAgICAjIGdjIGNvbGxlY3RzIGl0LgogICAgICAgICBzZWxmLndyID0gd2Vha3JlZi5yZWYoQzEwNTU4MjAoNjY2KSwgaXRfaGFwcGVuZWQpCiAKK2NsYXNzIFVuY29sbGVjdGFibGUob2JqZWN0KToKKyAgICAiIiJDcmVhdGUgYSByZWZlcmVuY2UgY3ljbGUgd2l0aCBtdWx0aXBsZSBfX2RlbF9fIG1ldGhvZHMuCisKKyAgICBBbiBvYmplY3QgaW4gYSByZWZlcmVuY2UgY3ljbGUgd2lsbCBuZXZlciBoYXZlIHplcm8gcmVmZXJlbmNlcywKKyAgICBhbmQgc28gbXVzdCBiZSBnYXJiYWdlIGNvbGxlY3RlZC4gIElmIG9uZSBvciBtb3JlIG9iamVjdHMgaW4gdGhlCisgICAgY3ljbGUgaGF2ZSBfX2RlbF9fIG1ldGhvZHMsIHRoZSBnYyByZWZ1c2VzIHRvIGd1ZXNzIGFuIG9yZGVyLAorICAgIGFuZCBsZWF2ZXMgdGhlIGN5Y2xlIHVuY29sbGVjdGVkLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJ0bmVyPU5vbmUpOgorICAgICAgICBpZiBwYXJ0bmVyIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnBhcnRuZXIgPSBVbmNvbGxlY3RhYmxlKHBhcnRuZXI9c2VsZikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYucGFydG5lciA9IHBhcnRuZXIKKyAgICBkZWYgX19kZWxfXyhzZWxmKToKKyAgICAgICAgcGFzcwogCiAjIyMgVGVzdHMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTE4MSw2ICsxOTYsNyBAQAogICAgICAgICBkZWwgZAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjLmNvbGxlY3QoKSwgMikKIAorICAgIEByZWZjb3VudF90ZXN0CiAgICAgZGVmIHRlc3RfZnJhbWUoc2VsZik6CiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICBmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoKQpAQCAtMjQ4LDYgKzI2NCw3IEBACiAgICAgIyBGb3IgZXhhbXBsZSwgZGlzcG9zZWQgdHVwbGVzIGFyZSBub3QgZnJlZWQsIGJ1dCByZXVzZWQuCiAgICAgIyBUbyBtaW5pbWl6ZSB2YXJpYXRpb25zLCB0aG91Z2gsIHdlIGZpcnN0IHN0b3JlIHRoZSBnZXRfY291bnQoKSByZXN1bHRzCiAgICAgIyBhbmQgY2hlY2sgdGhlbSBhdCB0aGUgZW5kLgorICAgIEByZWZjb3VudF90ZXN0CiAgICAgZGVmIHRlc3RfZ2V0X2NvdW50KHNlbGYpOgogICAgICAgICBnYy5jb2xsZWN0KCkKICAgICAgICAgYSwgYiwgYyA9IGdjLmdldF9jb3VudCgpCkBAIC0yNjEsNiArMjc4LDcgQEAKICAgICAgICAgIyBjcmVhdGVkICh0aGUgbGlzdCkuCiAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihkLCBhKQogCisgICAgQHJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9jb2xsZWN0X2dlbmVyYXRpb25zKHNlbGYpOgogICAgICAgICBnYy5jb2xsZWN0KCkKICAgICAgICAgIyBUaGlzIG9iamVjdCB3aWxsICJ0cmlja2xlIiBpbnRvIGdlbmVyYXRpb24gTiArIDEgYWZ0ZXIKQEAgLTU5Myw2ICs2MTEsMTI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oYiJ1bmNvbGxlY3RhYmxlIG9iamVjdHMgYXQgc2h1dGRvd24iLCBzdGRlcnIpCiAKIAorY2xhc3MgR0NDYWxsYmFja1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICMgU2F2ZSBnYyBzdGF0ZSBhbmQgZGlzYWJsZSBpdC4KKyAgICAgICAgc2VsZi5lbmFibGVkID0gZ2MuaXNlbmFibGVkKCkKKyAgICAgICAgZ2MuZGlzYWJsZSgpCisgICAgICAgIHNlbGYuZGVidWcgPSBnYy5nZXRfZGVidWcoKQorICAgICAgICBnYy5zZXRfZGVidWcoMCkKKyAgICAgICAgZ2MuY2FsbGJhY2tzLmFwcGVuZChzZWxmLmNiMSkKKyAgICAgICAgZ2MuY2FsbGJhY2tzLmFwcGVuZChzZWxmLmNiMikKKyAgICAgICAgc2VsZi5vdGhlcmdhcmJhZ2UgPSBbXQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAjIFJlc3RvcmUgZ2Mgc3RhdGUKKyAgICAgICAgZGVsIHNlbGYudmlzaXQKKyAgICAgICAgZ2MuY2FsbGJhY2tzLnJlbW92ZShzZWxmLmNiMSkKKyAgICAgICAgZ2MuY2FsbGJhY2tzLnJlbW92ZShzZWxmLmNiMikKKyAgICAgICAgZ2Muc2V0X2RlYnVnKHNlbGYuZGVidWcpCisgICAgICAgIGlmIHNlbGYuZW5hYmxlZDoKKyAgICAgICAgICAgIGdjLmVuYWJsZSgpCisgICAgICAgICMgZGVzdHJveSBhbnkgdW5jb2xsZWN0YWJsZXMKKyAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgIGZvciBvYmogaW4gZ2MuZ2FyYmFnZToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBVbmNvbGxlY3RhYmxlKToKKyAgICAgICAgICAgICAgICBvYmoucGFydG5lciA9IE5vbmUKKyAgICAgICAgZGVsIGdjLmdhcmJhZ2VbOl0KKyAgICAgICAgZGVsIHNlbGYub3RoZXJnYXJiYWdlCisgICAgICAgIGdjLmNvbGxlY3QoKQorCisgICAgZGVmIHByZWNsZWFuKHNlbGYpOgorICAgICAgICAjIFJlbW92ZSBhbGwgZmx1ZmYgZnJvbSB0aGUgc3lzdGVtLiAgSW52b2tlIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgIyBtYW51YWxseSByYXRoZXIgdGhhbiB0aHJvdWdoIHNlbGYuc2V0VXAoKSBmb3IgbWF4aW11bQorICAgICAgICAjIHNhZmV0eS4KKyAgICAgICAgc2VsZi52aXNpdCA9IFtdCisgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICBnYXJiYWdlLCBnYy5nYXJiYWdlWzpdID0gZ2MuZ2FyYmFnZVs6XSwgW10KKyAgICAgICAgc2VsZi5vdGhlcmdhcmJhZ2UuYXBwZW5kKGdhcmJhZ2UpCisgICAgICAgIHNlbGYudmlzaXQgPSBbXQorCisgICAgZGVmIGNiMShzZWxmLCBwaGFzZSwgaW5mbyk6CisgICAgICAgIHNlbGYudmlzaXQuYXBwZW5kKCgxLCBwaGFzZSwgZGljdChpbmZvKSkpCisKKyAgICBkZWYgY2IyKHNlbGYsIHBoYXNlLCBpbmZvKToKKyAgICAgICAgc2VsZi52aXNpdC5hcHBlbmQoKDIsIHBoYXNlLCBkaWN0KGluZm8pKSkKKyAgICAgICAgaWYgcGhhc2UgPT0gInN0b3AiIGFuZCBoYXNhdHRyKHNlbGYsICJjbGVhbnVwIik6CisgICAgICAgICAgICAjIENsZWFuIFVuY29sbGVjdGFibGUgZnJvbSBnYXJiYWdlCisgICAgICAgICAgICB1YyA9IFtlIGZvciBlIGluIGdjLmdhcmJhZ2UgaWYgaXNpbnN0YW5jZShlLCBVbmNvbGxlY3RhYmxlKV0KKyAgICAgICAgICAgIGdjLmdhcmJhZ2VbOl0gPSBbZSBmb3IgZSBpbiBnYy5nYXJiYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGUsIFVuY29sbGVjdGFibGUpXQorICAgICAgICAgICAgZm9yIGUgaW4gdWM6CisgICAgICAgICAgICAgICAgZS5wYXJ0bmVyID0gTm9uZQorCisgICAgZGVmIHRlc3RfY29sbGVjdChzZWxmKToKKyAgICAgICAgc2VsZi5wcmVjbGVhbigpCisgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICAjIEFsZ29yaXRobWljYWxseSB2ZXJpZnkgdGhlIGNvbnRlbnRzIG9mIHNlbGYudmlzaXQKKyAgICAgICAgIyBiZWNhdXNlIGl0IGlzIGxvbmcgYW5kIHRvcnR1b3VzLgorCisgICAgICAgICMgQ291bnQgdGhlIG51bWJlciBvZiB2aXNpdHMgdG8gZWFjaCBjYWxsYmFjaworICAgICAgICBuID0gW3ZbMF0gZm9yIHYgaW4gc2VsZi52aXNpdF0KKyAgICAgICAgbjEgPSBbaSBmb3IgaSBpbiBuIGlmIGkgPT0gMV0KKyAgICAgICAgbjIgPSBbaSBmb3IgaSBpbiBuIGlmIGkgPT0gMl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuMSwgWzFdKjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobjIsIFsyXSoyKQorCisgICAgICAgICMgQ291bnQgdGhhdCB3ZSBnb3QgdGhlIHJpZ2h0IG51bWJlciBvZiBzdGFydCBhbmQgc3RvcCBjYWxsYmFja3MuCisgICAgICAgIG4gPSBbdlsxXSBmb3IgdiBpbiBzZWxmLnZpc2l0XQorICAgICAgICBuMSA9IFtpIGZvciBpIGluIG4gaWYgaSA9PSAic3RhcnQiXQorICAgICAgICBuMiA9IFtpIGZvciBpIGluIG4gaWYgaSA9PSAic3RvcCJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobjEsIFsic3RhcnQiXSoyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4yLCBbInN0b3AiXSoyKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCB3ZSBnb3QgdGhlIHJpZ2h0IGluZm8gZGljdCBmb3IgYWxsIGNhbGxiYWNrcworICAgICAgICBmb3IgdiBpbiBzZWxmLnZpc2l0OgorICAgICAgICAgICAgaW5mbyA9IHZbMl0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiZ2VuZXJhdGlvbiIgaW4gaW5mbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiY29sbGVjdGVkIiBpbiBpbmZvKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJ1bmNvbGxlY3RhYmxlIiBpbiBpbmZvKQorCisgICAgZGVmIHRlc3RfY29sbGVjdF9nZW5lcmF0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLnByZWNsZWFuKCkKKyAgICAgICAgZ2MuY29sbGVjdCgyKQorICAgICAgICBmb3IgdiBpbiBzZWxmLnZpc2l0OgorICAgICAgICAgICAgaW5mbyA9IHZbMl0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mb1siZ2VuZXJhdGlvbiJdLCAyKQorCisgICAgZGVmIHRlc3RfY29sbGVjdF9nYXJiYWdlKHNlbGYpOgorICAgICAgICBzZWxmLnByZWNsZWFuKCkKKyAgICAgICAgIyBFYWNoIG9mIHRoZXNlIGNhdXNlIGZvdXIgb2JqZWN0cyB0byBiZSBnYXJiYWdlOiBUd28KKyAgICAgICAgIyBVbmNvbGVjdGFibGVzIGFuZCB0aGVpciBpbnN0YW5jZSBkaWN0cy4KKyAgICAgICAgVW5jb2xsZWN0YWJsZSgpCisgICAgICAgIFVuY29sbGVjdGFibGUoKQorICAgICAgICBDMTA1NTgyMCg2NjYpCisgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICBmb3IgdiBpbiBzZWxmLnZpc2l0OgorICAgICAgICAgICAgaWYgdlsxXSAhPSAic3RvcCI6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGluZm8gPSB2WzJdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm9bImNvbGxlY3RlZCJdLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvWyJ1bmNvbGxlY3RhYmxlIl0sIDgpCisKKyAgICAgICAgIyBXZSBzaG91bGQgbm93IGhhdmUgdGhlIFVuY29sbGVjdGFibGVzIGluIGdjLmdhcmJhZ2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ2MuZ2FyYmFnZSksIDQpCisgICAgICAgIGZvciBlIGluIGdjLmdhcmJhZ2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZSwgVW5jb2xsZWN0YWJsZSkKKworICAgICAgICAjIE5vdywgbGV0IG91ciBjYWxsYmFjayBoYW5kbGUgdGhlIFVuY29sbGVjdGFibGUgaW5zdGFuY2VzCisgICAgICAgIHNlbGYuY2xlYW51cD1UcnVlCisgICAgICAgIHNlbGYudmlzaXQgPSBbXQorICAgICAgICBnYy5nYXJiYWdlWzpdID0gW10KKyAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgIGZvciB2IGluIHNlbGYudmlzaXQ6CisgICAgICAgICAgICBpZiB2WzFdICE9ICJzdG9wIjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaW5mbyA9IHZbMl0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mb1siY29sbGVjdGVkIl0sIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm9bInVuY29sbGVjdGFibGUiXSwgNCkKKworICAgICAgICAjIFVuY29sbGVjdGFibGVzIHNob3VsZCBiZSBnb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdjLmdhcmJhZ2UpLCAwKQorCisKIGNsYXNzIEdDVG9nZ2xpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBnYy5lbmFibGUoKQpAQCAtNzQ2LDcgKzg4NSw3IEBACiAKICAgICB0cnk6CiAgICAgICAgIGdjLmNvbGxlY3QoKSAjIERlbGV0ZSAybmQgZ2VuZXJhdGlvbiBnYXJiYWdlCi0gICAgICAgIHJ1bl91bml0dGVzdChHQ1Rlc3RzLCBHQ1RvZ2dsaW5nVGVzdHMpCisgICAgICAgIHJ1bl91bml0dGVzdChHQ1Rlc3RzLCBHQ1RvZ2dsaW5nVGVzdHMsIEdDQ2FsbGJhY2tUZXN0cykKICAgICBmaW5hbGx5OgogICAgICAgICBnYy5zZXRfZGVidWcoZGVidWcpCiAgICAgICAgICMgdGVzdCBnYy5lbmFibGUoKSBldmVuIGlmIEdDIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5IGIvTGliL3Rlc3QvdGVzdF9nZGIucHkKaW5kZXggNmQ5NjU1MC4uOTcxM2RjOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZGIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZGIucHkKQEAgLTcsOSArNywxNiBAQAogaW1wb3J0IHJlCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cworaW1wb3J0IHN5c2NvbmZpZwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgbG9jYWxlCiAKKyMgSXMgdGhpcyBQeXRob24gY29uZmlndXJlZCB0byBzdXBwb3J0IHRocmVhZHM/Cit0cnk6CisgICAgaW1wb3J0IF90aHJlYWQKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfdGhyZWFkID0gTm9uZQorCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBmaW5kZmlsZSwgcHl0aG9uX2lzX29wdGltaXplZAogCiB0cnk6CkBAIC0yNiw2ICszMyw5IEBACiAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoImdkYiB2ZXJzaW9ucyBiZWZvcmUgNy4wIGRpZG4ndCBzdXBwb3J0IHB5dGhvbiBlbWJlZGRpbmciCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBTYXc6XG4iICsgZ2RiX3ZlcnNpb24uZGVjb2RlKCdhc2NpaScsICdyZXBsYWNlJykpCiAKK2lmIG5vdCBzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCk6CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3RfZ2RiIG9ubHkgd29ya3Mgb24gc291cmNlIGJ1aWxkcyBhdCB0aGUgbW9tZW50LiIpCisKICMgTG9jYXRpb24gb2YgY3VzdG9tIGhvb2tzIGZpbGUgaW4gYSByZXBvc2l0b3J5IGNoZWNrb3V0LgogY2hlY2tvdXRfaG9va19wYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShzeXMuZXhlY3V0YWJsZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5dGhvbi1nZGIucHknKQpAQCAtNTMsOSArNjMsNyBAQAogaWYgbm90IGdkYnB5X3ZlcnNpb246CiAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoImdkYiBub3QgYnVpbHQgd2l0aCBlbWJlZGRlZCBweXRob24gc3VwcG9ydCIpCiAKLSMgVmVyaWZ5IHRoYXQgImdkYiIgY2FuIGxvYWQgb3VyIGN1c3RvbSBob29rcy4gIEluIHRoZW9yeSB0aGlzIHNob3VsZCBuZXZlcgotIyBmYWlsLCBidXQgd2UgZG9uJ3QgaGFuZGxlIHRoZSBjYXNlIG9mIHRoZSBob29rcyBmaWxlIG5vdCBleGlzdGluZyBpZiB0aGUKLSMgdGVzdHMgYXJlIHJ1biBmcm9tIGFuIGluc3RhbGxlZCBQeXRob24gKHdlJ2xsIHByb2R1Y2UgZmFpbHVyZXMgaW4gdGhhdCBjYXNlKS4KKyMgVmVyaWZ5IHRoYXQgImdkYiIgY2FuIGxvYWQgb3VyIGN1c3RvbSBob29rcy4gSW4gdGhlb3J5IHRoaXMgc2hvdWxkIG5ldmVyIGZhaWwuCiBjbWQgPSBbJy0tYXJncycsIHN5cy5leGVjdXRhYmxlXQogXywgZ2RicHlfZXJyb3JzID0gcnVuX2dkYignLS1hcmdzJywgc3lzLmV4ZWN1dGFibGUpCiBpZiAiYXV0by1sb2FkaW5nIGhhcyBiZWVuIGRlY2xpbmVkIiBpbiBnZGJweV9lcnJvcnM6CkBAIC0xNjAsNyArMTY4LDYgQEAKIAogICAgICAgICAjIEVuc3VyZSBubyB1bmV4cGVjdGVkIGVycm9yIG1lc3NhZ2VzOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyciwgJycpCi0KICAgICAgICAgcmV0dXJuIG91dAogCiAgICAgZGVmIGdldF9nZGJfcmVwcihzZWxmLCBzb3VyY2UsCkBAIC0xODEsNyArMTg4LDcgQEAKICAgICAgICAgIyBnZGIgY2FuIGluc2VydCBhZGRpdGlvbmFsICdcbicgYW5kIHNwYWNlIGNoYXJhY3RlcnMgaW4gdmFyaW91cyBwbGFjZXMKICAgICAgICAgIyBpbiBpdHMgb3V0cHV0LCBkZXBlbmRpbmcgb24gdGhlIHdpZHRoIG9mIHRoZSB0ZXJtaW5hbCBpdCdzIGNvbm5lY3RlZAogICAgICAgICAjIHRvICh1c2luZyBpdHMgIndyYXBfaGVyZSIgZnVuY3Rpb24pCi0gICAgICAgIG0gPSByZS5tYXRjaCgnLiojMFxzK2J1aWx0aW5faWRccytcKHNlbGZcPS4qLFxzK3Y9XHMqKC4qPylcKVxzK2F0XHMrUHl0aG9uL2JsdGlubW9kdWxlLmMuKicsCisgICAgICAgIG0gPSByZS5tYXRjaCgnLiojMFxzK2J1aWx0aW5faWRccytcKHNlbGZcPS4qLFxzK3Y9XHMqKC4qPylcKVxzK2F0XHMrXFMqUHl0aG9uL2JsdGlubW9kdWxlLmMuKicsCiAgICAgICAgICAgICAgICAgICAgICBnZGJfb3V0cHV0LCByZS5ET1RBTEwpCiAgICAgICAgIGlmIG5vdCBtOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVkIGdkYiBvdXRwdXQ6ICVyXG4lcycgJSAoZ2RiX291dHB1dCwgZ2RiX291dHB1dCkpCkBAIC0zNDMsNyArMzUwLDcgQEAKIGZvbyA9IEZvbygpCiBmb28uYW5faW50ID0gNDIKIGlkKGZvbyknJycpCi0gICAgICAgIG0gPSByZS5tYXRjaChyJzxGb29cKGFuX2ludD00MlwpIGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLCBnZGJfcmVwcikKKyAgICAgICAgbSA9IHJlLm1hdGNoKHInPEZvb1woYW5faW50PTQyXCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywgZ2RiX3JlcHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLAogICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSdVbmV4cGVjdGVkIG5ldy1zdHlsZSBjbGFzcyByZW5kZXJpbmcgJXInICUgZ2RiX3JlcHIpCiAKQEAgLTM1Niw3ICszNjMsNyBAQAogZm9vICs9IFsxLCAyLCAzXQogZm9vLmFuX2ludCA9IDQyCiBpZChmb28pJycnKQotICAgICAgICBtID0gcmUubWF0Y2gocic8Rm9vXChhbl9pbnQ9NDJcKSBhdCByZW1vdGUgMHhbMC05YS1mXSs+JywgZ2RiX3JlcHIpCisgICAgICAgIG0gPSByZS5tYXRjaChyJzxGb29cKGFuX2ludD00MlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsIGdkYl9yZXByKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLAogICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSdVbmV4cGVjdGVkIG5ldy1zdHlsZSBjbGFzcyByZW5kZXJpbmcgJXInICUgZ2RiX3JlcHIpCkBAIC0zNzEsNyArMzc4LDcgQEAKIGZvbyA9IEZvbygoMSwgMiwgMykpCiBmb28uYW5faW50ID0gNDIKIGlkKGZvbyknJycpCi0gICAgICAgIG0gPSByZS5tYXRjaChyJzxGb29cKGFuX2ludD00MlwpIGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLCBnZGJfcmVwcikKKyAgICAgICAgbSA9IHJlLm1hdGNoKHInPEZvb1woYW5faW50PTQyXCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywgZ2RiX3JlcHIpCiAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0sCiAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9J1VuZXhwZWN0ZWQgbmV3LXN0eWxlIGNsYXNzIHJlbmRlcmluZyAlcicgJSBnZGJfcmVwcikKQEAgLTM5OCw3ICs0MDUsNyBAQAogCiAgICAgICAgICMgTWF0Y2ggYW55dGhpbmcgZm9yIHRoZSB0eXBlIG5hbWU7IDB4REVBREJFRUYgY291bGQgcG9pbnQgdG8KICAgICAgICAgIyBzb21ldGhpbmcgYXJiaXRyYXJ5IChzZWUgIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU4MzMwKQotICAgICAgICBwYXR0ZXJuID0gJzwuKiBhdCByZW1vdGUgMHhbMC05YS1mXSs+JworICAgICAgICBwYXR0ZXJuID0gJzwuKiBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nCiAKICAgICAgICAgbSA9IHJlLm1hdGNoKHBhdHRlcm4sIGdkYl9yZXByKQogICAgICAgICBpZiBub3QgbToKQEAgLTQ0NCw3ICs0NTEsNyBAQAogICAgICAgICAjICBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlODAzMiNtc2cxMDA1MzcgKQogICAgICAgICBnZGJfcmVwciwgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X2dkYl9yZXByKCdpZChfX2J1aWx0aW5zX18uaGVscCknLCBpbXBvcnRfc2l0ZT1UcnVlKQogCi0gICAgICAgIG0gPSByZS5tYXRjaChyJzxfSGVscGVyIGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLCBnZGJfcmVwcikKKyAgICAgICAgbSA9IHJlLm1hdGNoKHInPF9IZWxwZXIgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywgZ2RiX3JlcHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLAogICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSdVbmV4cGVjdGVkIHJlbmRlcmluZyAlcicgJSBnZGJfcmVwcikKIApAQCAtNDc1LDcgKzQ4Miw3IEBACiBmb28gPSBGb28oKQogZm9vLmFuX2F0dHIgPSBmb28KIGlkKGZvbyknJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGJfcmVwciwgZ2RiX291dHB1dCkpCkBAIC00ODgsNyArNDk1LDcgQEAKIGZvbyA9IEZvbygpCiBmb28uYW5fYXR0ciA9IGZvbwogaWQoZm9vKScnJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4WzAtOWEtZl0rPicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfcmVwciksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkYl9yZXByLCBnZGJfb3V0cHV0KSkKQEAgLTUwMiw3ICs1MDksNyBAQAogYS5hbl9hdHRyID0gYgogYi5hbl9hdHRyID0gYQogaWQoYSknJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4WzAtOWEtZl0rPlwpIGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxGb29cKGFuX2F0dHI9PEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfcmVwciksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkYl9yZXByLCBnZGJfb3V0cHV0KSkKQEAgLTUzNyw3ICs1NDQsNyBAQAogCiAgICAgZGVmIHRlc3RfYnVpbHRpbl9tZXRob2Qoc2VsZik6CiAgICAgICAgIGdkYl9yZXByLCBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfZ2RiX3JlcHIoJ2ltcG9ydCBzeXM7IGlkKHN5cy5zdGRvdXQucmVhZGxpbmVzKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPGJ1aWx0LWluIG1ldGhvZCByZWFkbGluZXMgb2YgX2lvLlRleHRJT1dyYXBwZXIgb2JqZWN0IGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxidWlsdC1pbiBtZXRob2QgcmVhZGxpbmVzIG9mIF9pby5UZXh0SU9XcmFwcGVyIG9iamVjdCBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGJfcmVwciwgZ2RiX291dHB1dCkpCkBAIC01NTIsNyArNTU5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQ9J2J1aWx0aW5faWQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHJpbnQgKFB5RnJhbWVPYmplY3QqKSgoKFB5Q29kZU9iamVjdCopdiktPmNvX3pvbWJpZWZyYW1lKSddCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnLipccytcJDEgPVxzK0ZyYW1lIDB4WzAtOWEtZl0rLCBmb3IgZmlsZSA8c3RyaW5nPiwgbGluZSAzLCBpbiBmb28gXChcKVxzKy4qJywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCcuKlxzK1wkMSA9XHMrRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgPHN0cmluZz4sIGxpbmUgMywgaW4gZm9vIFwoXClccysuKicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfb3V0cHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmUuRE9UQUxMKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIChnZGJfb3V0cHV0LCBnZGJfb3V0cHV0KSkKQEAgLTYwOSw3ICs2MTYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LXVwJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlsaW5lTWF0Y2hlcyhidCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInJydeLioKLSNbMC05XSsgRnJhbWUgMHhbMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSA3LCBpbiBiYXIgXChhPTEsIGI9MiwgYz0zXCkKKyNbMC05XSsgRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDcsIGluIGJhciBcKGE9MSwgYj0yLCBjPTNcKQogICAgIGJhelwoYSwgYiwgY1wpCiAkJycnKQogCkBAIC02MzgsOSArNjQ1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS11cCcsICdweS1kb3duJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlsaW5lTWF0Y2hlcyhidCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInJydeLioKLSNbMC05XSsgRnJhbWUgMHhbMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSA3LCBpbiBiYXIgXChhPTEsIGI9MiwgYz0zXCkKKyNbMC05XSsgRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDcsIGluIGJhciBcKGE9MSwgYj0yLCBjPTNcKQogICAgIGJhelwoYSwgYiwgY1wpCi0jWzAtOV0rIEZyYW1lIDB4WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgMTAsIGluIGJheiBcKGFyZ3M9XCgxLCAyLCAzXClcKQorI1swLTldKyBGcmFtZSAweC0/WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgMTAsIGluIGJheiBcKGFyZ3M9XCgxLCAyLCAzXClcKQogICAgIGlkXCg0MlwpCiAkJycnKQogCkBAIC02NzIsMTQgKzY3OSwxMDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS1idC1mdWxsJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlsaW5lTWF0Y2hlcyhidCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInJydeLioKLSNbMC05XSsgRnJhbWUgMHhbMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSA3LCBpbiBiYXIgXChhPTEsIGI9MiwgYz0zXCkKKyNbMC05XSsgRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDcsIGluIGJhciBcKGE9MSwgYj0yLCBjPTNcKQogICAgIGJhelwoYSwgYiwgY1wpCi0jWzAtOV0rIEZyYW1lIDB4WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgNCwgaW4gZm9vIFwoYT0xLCBiPTIsIGM9M1wpCisjWzAtOV0rIEZyYW1lIDB4LT9bMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSA0LCBpbiBmb28gXChhPTEsIGI9MiwgYz0zXCkKICAgICBiYXJcKGEsIGIsIGNcKQotI1swLTldKyBGcmFtZSAweFswLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDEyLCBpbiA8bW9kdWxlPiBcKFwpCisjWzAtOV0rIEZyYW1lIDB4LT9bMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSAxMiwgaW4gPG1vZHVsZT4gXChcKQogICAgIGZvb1woMSwgMiwgM1wpCiAnJycpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhfdGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gd2FzIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkIHN1cHBvcnQiKQorICAgIGRlZiB0ZXN0X3RocmVhZHMoc2VsZik6CisgICAgICAgICdWZXJpZnkgdGhhdCAicHktYnQiIGluZGljYXRlcyB0aHJlYWRzIHRoYXQgYXJlIHdhaXRpbmcgZm9yIHRoZSBHSUwnCisgICAgICAgIGNtZCA9ICcnJworZnJvbSB0aHJlYWRpbmcgaW1wb3J0IFRocmVhZAorCitjbGFzcyBUZXN0VGhyZWFkKFRocmVhZCk6CisgICAgIyBUaGVzZSB0aHJlYWRzIHdvdWxkIHJ1biBmb3JldmVyLCBidXQgd2UnbGwgaW50ZXJydXB0IHRoaW5ncyB3aXRoIHRoZQorICAgICMgZGVidWdnZXIKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBpID0gMAorICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgIGkgKz0gMQorCit0ID0ge30KK2ZvciBpIGluIHJhbmdlKDQpOgorICAgdFtpXSA9IFRlc3RUaHJlYWQoKQorICAgdFtpXS5zdGFydCgpCisKKyMgVHJpZ2dlciBhIGJyZWFrcG9pbnQgb24gdGhlIG1haW4gdGhyZWFkCitpZCg0MikKKworJycnCisgICAgICAgICMgVmVyaWZ5IHdpdGggInB5LWJ0IjoKKyAgICAgICAgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X3N0YWNrX3RyYWNlKGNtZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3RocmVhZCBhcHBseSBhbGwgcHktYnQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignV2FpdGluZyBmb3IgdGhlIEdJTCcsIGdkYl9vdXRwdXQpCisKKyAgICAgICAgIyBWZXJpZnkgd2l0aCAicHktYnQtZnVsbCI6CisgICAgICAgIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9zdGFja190cmFjZShjbWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9Wyd0aHJlYWQgYXBwbHkgYWxsIHB5LWJ0LWZ1bGwnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignV2FpdGluZyBmb3IgdGhlIEdJTCcsIGdkYl9vdXRwdXQpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHB5dGhvbl9pc19vcHRpbWl6ZWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICJQeXRob24gd2FzIGNvbXBpbGVkIHdpdGggb3B0aW1pemF0aW9ucyIpCisgICAgIyBTb21lIG9sZGVyIHZlcnNpb25zIG9mIGdkYiB3aWxsIGZhaWwgd2l0aAorICAgICMgICJDYW5ub3QgZmluZCBuZXcgdGhyZWFkczogZ2VuZXJpYyBlcnJvciIKKyAgICAjIHVubGVzcyB3ZSBhZGQgTERfUFJFTE9BRD1QQVRILVRPLWxpYnB0aHJlYWQuc28uMSBhcyBhIHdvcmthcm91bmQKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhfdGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gd2FzIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkIHN1cHBvcnQiKQorICAgIGRlZiB0ZXN0X2djKHNlbGYpOgorICAgICAgICAnVmVyaWZ5IHRoYXQgInB5LWJ0IiBpbmRpY2F0ZXMgaWYgYSB0aHJlYWQgaXMgZ2FyYmFnZS1jb2xsZWN0aW5nJworICAgICAgICBjbWQgPSAoJ2Zyb20gZ2MgaW1wb3J0IGNvbGxlY3RcbicKKyAgICAgICAgICAgICAgICdpZCg0MilcbicKKyAgICAgICAgICAgICAgICdkZWYgZm9vKCk6XG4nCisgICAgICAgICAgICAgICAnICAgIGNvbGxlY3QoKVxuJworICAgICAgICAgICAgICAgJ2RlZiBiYXIoKTpcbicKKyAgICAgICAgICAgICAgICcgICAgZm9vKClcbicKKyAgICAgICAgICAgICAgICdiYXIoKVxuJykKKyAgICAgICAgIyBWZXJpZnkgd2l0aCAicHktYnQiOgorICAgICAgICBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2UoY21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsnYnJlYWsgdXBkYXRlX3JlZnMnLCAnY29udGludWUnLCAncHktYnQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignR2FyYmFnZS1jb2xsZWN0aW5nJywgZ2RiX291dHB1dCkKKworICAgICAgICAjIFZlcmlmeSB3aXRoICJweS1idC1mdWxsIjoKKyAgICAgICAgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X3N0YWNrX3RyYWNlKGNtZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ2JyZWFrIHVwZGF0ZV9yZWZzJywgJ2NvbnRpbnVlJywgJ3B5LWJ0LWZ1bGwnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignR2FyYmFnZS1jb2xsZWN0aW5nJywgZ2RiX291dHB1dCkKKworICAgIEB1bml0dGVzdC5za2lwSWYocHl0aG9uX2lzX29wdGltaXplZCgpLAorICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aCBvcHRpbWl6YXRpb25zIikKKyAgICAjIFNvbWUgb2xkZXIgdmVyc2lvbnMgb2YgZ2RiIHdpbGwgZmFpbCB3aXRoCisgICAgIyAgIkNhbm5vdCBmaW5kIG5ldyB0aHJlYWRzOiBnZW5lcmljIGVycm9yIgorICAgICMgdW5sZXNzIHdlIGFkZCBMRF9QUkVMT0FEPVBBVEgtVE8tbGlicHRocmVhZC5zby4xIGFzIGEgd29ya2Fyb3VuZAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKF90aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aG91dCB0aHJlYWQgc3VwcG9ydCIpCisgICAgZGVmIHRlc3RfcHljZnVuY3Rpb24oc2VsZik6CisgICAgICAgICdWZXJpZnkgdGhhdCAicHktYnQiIGRpc3BsYXlzIGludm9jYXRpb25zIG9mIFB5Q0Z1bmN0aW9uIGluc3RhbmNlcycKKyAgICAgICAgY21kID0gKCdmcm9tIHRpbWUgaW1wb3J0IHNsZWVwXG4nCisgICAgICAgICAgICAgICAnZGVmIGZvbygpOlxuJworICAgICAgICAgICAgICAgJyAgICBzbGVlcCgxKVxuJworICAgICAgICAgICAgICAgJ2RlZiBiYXIoKTpcbicKKyAgICAgICAgICAgICAgICcgICAgZm9vKClcbicKKyAgICAgICAgICAgICAgICdiYXIoKVxuJykKKyAgICAgICAgIyBWZXJpZnkgd2l0aCAicHktYnQiOgorICAgICAgICBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2UoY21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludD0ndGltZV9zbGVlcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydidCcsICdweS1idCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEluKCc8YnVpbHQtaW4gbWV0aG9kIHNsZWVwJywgZ2RiX291dHB1dCkKKworICAgICAgICAjIFZlcmlmeSB3aXRoICJweS1idC1mdWxsIjoKKyAgICAgICAgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X3N0YWNrX3RyYWNlKGNtZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQ9J3RpbWVfc2xlZXAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHktYnQtZnVsbCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEluKCcjMCA8YnVpbHQtaW4gbWV0aG9kIHNsZWVwJywgZ2RiX291dHB1dCkKKworCiBjbGFzcyBQeVByaW50VGVzdHMoRGVidWdnZXJUZXN0cyk6CiAgICAgQHVuaXR0ZXN0LnNraXBJZihweXRob25faXNfb3B0aW1pemVkKCksCiAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHdhcyBjb21waWxlZCB3aXRoIG9wdGltaXphdGlvbnMiKQpAQCAtNzEzLDcgKzgxMiw3IEBACiAgICAgICAgIGJ0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2Uoc2NyaXB0PXNlbGYuZ2V0X3NhbXBsZV9zY3JpcHQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS1wcmludCBsZW4nXSkKICAgICAgICAgc2VsZi5hc3NlcnRNdWx0aWxpbmVNYXRjaGVzKGJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIuKlxuYnVpbHRpbiAnbGVuJyA9IDxidWlsdC1pbiBtZXRob2QgbGVuIG9mIG1vZHVsZSBvYmplY3QgYXQgcmVtb3RlIDB4WzAtOWEtZl0rPlxuLioiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIuKlxuYnVpbHRpbiAnbGVuJyA9IDxidWlsdC1pbiBtZXRob2QgbGVuIG9mIG1vZHVsZSBvYmplY3QgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+XG4uKiIpCiAKIGNsYXNzIFB5TG9jYWxzVGVzdHMoRGVidWdnZXJUZXN0cyk6CiAgICAgQHVuaXR0ZXN0LnNraXBJZihweXRob25faXNfb3B0aW1pemVkKCksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkKaW5kZXggMmM4ODM3My4uOTU4MDU0YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weQpAQCAtNzI5LDI5ICs3MjksNiBAQAogCiBzeW50YXhfdGVzdHMgPSAiIiIKIAotPj4+IGRlZiBmKCk6Ci0uLi4gICAgIHJldHVybiAyMgotLi4uICAgICB5aWVsZCAxCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gIC4uCi1TeW50YXhFcnJvcjogJ3JldHVybicgd2l0aCBhcmd1bWVudCBpbnNpZGUgZ2VuZXJhdG9yCi0KLT4+PiBkZWYgZigpOgotLi4uICAgICB5aWVsZCAxCi0uLi4gICAgIHJldHVybiAyMgotVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAuLgotU3ludGF4RXJyb3I6ICdyZXR1cm4nIHdpdGggYXJndW1lbnQgaW5zaWRlIGdlbmVyYXRvcgotCi0icmV0dXJuIE5vbmUiIGlzIG5vdCB0aGUgc2FtZSBhcyAicmV0dXJuIiBpbiBhIGdlbmVyYXRvcjoKLQotPj4+IGRlZiBmKCk6Ci0uLi4gICAgIHlpZWxkIDEKLS4uLiAgICAgcmV0dXJuIE5vbmUKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgLi4KLVN5bnRheEVycm9yOiAncmV0dXJuJyB3aXRoIGFyZ3VtZW50IGluc2lkZSBnZW5lcmF0b3IKLQogVGhlc2UgYXJlIGZpbmU6CiAKID4+PiBkZWYgZigpOgpAQCAtODY3LDIwICs4NDQsNiBAQAogPj4+IHR5cGUoZigpKQogPGNsYXNzICdnZW5lcmF0b3InPgogCi0KLT4+PiBkZWYgZigpOgotLi4uICAgICBpZiAwOgotLi4uICAgICAgICAgbGFtYmRhIHg6ICB4ICAgICAgICAjIHNob3VsZG4ndCB0cmlnZ2VyIGhlcmUKLS4uLiAgICAgICAgIHJldHVybiAgICAgICAgICAgICAgIyBvciBoZXJlCi0uLi4gICAgICAgICBkZWYgZihpKToKLS4uLiAgICAgICAgICAgICByZXR1cm4gMippICAgICAgIyBvciBoZXJlCi0uLi4gICAgICAgICBpZiAwOgotLi4uICAgICAgICAgICAgIHJldHVybiAzICAgICAgICAjIGJ1dCAqdGhpcyogc3Vja3MgKGxpbmUgOCkKLS4uLiAgICAgaWYgMDoKLS4uLiAgICAgICAgIHlpZWxkIDIgICAgICAgICAgICAgIyBiZWNhdXNlIGl0J3MgYSBnZW5lcmF0b3IgKGxpbmUgMTApCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci1TeW50YXhFcnJvcjogJ3JldHVybicgd2l0aCBhcmd1bWVudCBpbnNpZGUgZ2VuZXJhdG9yCi0KIFRoaXMgb25lIGNhdXNlZCBhIGNyYXNoIChzZWUgU0YgYnVnIDU2NzUzOCk6CiAKID4+PiBkZWYgZigpOgpAQCAtMTU2NywxMSArMTUzMCw2IEBACiAgIC4uLgogU3ludGF4RXJyb3I6ICd5aWVsZCcgb3V0c2lkZSBmdW5jdGlvbgogCi0+Pj4gZGVmIGYoKTogcmV0dXJuIGxhbWJkYSB4PSh5aWVsZCk6IDEKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgLi4uCi1TeW50YXhFcnJvcjogJ3JldHVybicgd2l0aCBhcmd1bWVudCBpbnNpZGUgZ2VuZXJhdG9yCi0KID4+PiBkZWYgZigpOiB4ID0geWllbGQgPSB5CiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgIC4uLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkKaW5kZXggNjAyMDkyMy4uZmQ4YmM1NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5CkBAIC0yLDExICsyLDEyIEBACiBUZXN0cyBjb21tb24gdG8gZ2VuZXJpY3BhdGgsIG1hY3BhdGgsIG50cGF0aCBhbmQgcG9zaXhwYXRoCiAiIiIKIAotaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWltcG9ydCBvcwogaW1wb3J0IGdlbmVyaWNwYXRoCitpbXBvcnQgb3MKIGltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBkZWYgc2FmZV9ybWRpcihkaXJuYW1lKToKQEAgLTE2LDkgKzE3LDcgQEAKICAgICAgICAgcGFzcwogCiAKLWNsYXNzIEdlbmVyaWNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAjIFRoZSBwYXRoIG1vZHVsZSB0byBiZSB0ZXN0ZWQKLSAgICBwYXRobW9kdWxlID0gZ2VuZXJpY3BhdGgKK2NsYXNzIEdlbmVyaWNUZXN0OgogICAgIGNvbW1vbl9hdHRyaWJ1dGVzID0gWydjb21tb25wcmVmaXgnLCAnZ2V0c2l6ZScsICdnZXRhdGltZScsICdnZXRjdGltZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldG10aW1lJywgJ2V4aXN0cycsICdpc2RpcicsICdpc2ZpbGUnXQogICAgIGF0dHJpYnV0ZXMgPSBbXQpAQCAtMTQ1LDYgKzE0NCwxNiBAQAogICAgICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAicGlwZSIpLCAicmVxdWlyZXMgb3MucGlwZSgpIikKKyAgICBkZWYgdGVzdF9leGlzdHNfZmQoc2VsZik6CisgICAgICAgIHIsIHcgPSBvcy5waXBlKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5leGlzdHMocikpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShyKQorICAgICAgICAgICAgb3MuY2xvc2UodykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuZXhpc3RzKHIpKQorCiAgICAgZGVmIHRlc3RfaXNkaXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKHN1cHBvcnQuVEVTVEZOKSwgRmFsc2UpCiAgICAgICAgIGYgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKQpAQCAtMTc5LDEzICsxODgsMTYgQEAKICAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICAgICAgc2FmZV9ybWRpcihzdXBwb3J0LlRFU1RGTikKIAorY2xhc3MgVGVzdEdlbmVyaWNUZXN0KEdlbmVyaWNUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBJc3N1ZSAxNjg1MjogR2VuZXJpY1Rlc3QgY2FuJ3QgaW5oZXJpdCBmcm9tIHVuaXR0ZXN0LlRlc3RDYXNlCisgICAgIyBmb3IgdGVzdCBkaXNjb3ZlcnkgcHVycG9zZXM7IENvbW1vblRlc3QgaW5oZXJpdHMgZnJvbSBHZW5lcmljVGVzdAorICAgICMgYW5kIGlzIG9ubHkgbWVhbnQgdG8gYmUgaW5oZXJpdGVkIGJ5IG90aGVycy4KKyAgICBwYXRobW9kdWxlID0gZ2VuZXJpY3BhdGgKIAogIyBGb2xsb3dpbmcgVGVzdENhc2UgaXMgbm90IHN1cHBvc2VkIHRvIGJlIHJ1biBmcm9tIHRlc3RfZ2VuZXJpY3BhdGguCiAjIEl0IGlzIGluaGVyaXRlZCBieSBvdGhlciB0ZXN0IG1vZHVsZXMgKG1hY3BhdGgsIG50cGF0aCwgcG9zaXhwYXRoKS4KIAogY2xhc3MgQ29tbW9uVGVzdChHZW5lcmljVGVzdCk6Ci0gICAgIyBUaGUgcGF0aCBtb2R1bGUgdG8gYmUgdGVzdGVkCi0gICAgcGF0aG1vZHVsZSA9IE5vbmUKICAgICBjb21tb25fYXR0cmlidXRlcyA9IEdlbmVyaWNUZXN0LmNvbW1vbl9hdHRyaWJ1dGVzICsgWwogICAgICAgICAjIFByb3BlcnRpZXMKICAgICAgICAgJ2N1cmRpcicsICdwYXJkaXInLCAnZXh0c2VwJywgJ3NlcCcsCkBAIC0yNTgsMTUgKzI3MCwyMSBAQAogCiAgICAgZGVmIHRlc3RfYWJzcGF0aChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRJbigiZm9vIiwgc2VsZi5wYXRobW9kdWxlLmFic3BhdGgoImZvbyIpKQotICAgICAgICBzZWxmLmFzc2VydEluKGIiZm9vIiwgc2VsZi5wYXRobW9kdWxlLmFic3BhdGgoYiJmb28iKSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGIiZm9vIiwgc2VsZi5wYXRobW9kdWxlLmFic3BhdGgoYiJmb28iKSkKIAogICAgICAgICAjIEFic3BhdGggcmV0dXJucyBieXRlcyB3aGVuIHRoZSBhcmcgaXMgYnl0ZXMKLSAgICAgICAgZm9yIHBhdGggaW4gKGInJywgYidmb28nLCBiJ2ZceGYyXHhmMicsIGInL2ZvbycsIGInQzpcXCcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlbGYucGF0aG1vZHVsZS5hYnNwYXRoKHBhdGgpLCBieXRlcykKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBmb3IgcGF0aCBpbiAoYicnLCBiJ2ZvbycsIGInZlx4ZjJceGYyJywgYicvZm9vJywgYidDOlxcJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlbGYucGF0aG1vZHVsZS5hYnNwYXRoKHBhdGgpLCBieXRlcykKIAogICAgIGRlZiB0ZXN0X3JlYWxwYXRoKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEluKCJmb28iLCBzZWxmLnBhdGhtb2R1bGUucmVhbHBhdGgoImZvbyIpKQotICAgICAgICBzZWxmLmFzc2VydEluKGIiZm9vIiwgc2VsZi5wYXRobW9kdWxlLnJlYWxwYXRoKGIiZm9vIikpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiImZvbyIsIHNlbGYucGF0aG1vZHVsZS5yZWFscGF0aChiImZvbyIpKQogCiAgICAgZGVmIHRlc3Rfbm9ybXBhdGhfaXNzdWU1ODI3KHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSBub3JtcGF0aCBwcmVzZXJ2ZXMgdW5pY29kZQpAQCAtMjgyLDggKzMwMCw3IEBACiAKICAgICAgICAgdW5pY3dkID0gJ1x4ZTd3XHhmMCcKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZnNlbmNvZGluZyA9IHN1cHBvcnQuVEVTVEZOX0VOQ09ESU5HIG9yICJhc2NpaSIKLSAgICAgICAgICAgIHVuaWN3ZC5lbmNvZGUoZnNlbmNvZGluZykKKyAgICAgICAgICAgIG9zLmZzZW5jb2RlKHVuaWN3ZCkKICAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVW5pY29kZUVuY29kZUVycm9yKToKICAgICAgICAgICAgICMgRlMgZW5jb2RpbmcgaXMgcHJvYmFibHkgQVNDSUkKICAgICAgICAgICAgIHBhc3MKQEAgLTMwNSwxMyArMzIyLDEyIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJuZWVkIHN1cHBvcnQuVEVTVEZOX05PTkFTQ0lJIikKIAotICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QobmFtZSk6Ci0gICAgICAgICAgICBzZWxmLnRlc3RfYWJzcGF0aCgpCi0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEdlbmVyaWNUZXN0KQorICAgICAgICAjIFRlc3Qgbm9uLUFTQ0lJLCBub24tVVRGOCBieXRlcyBpbiB0aGUgcGF0aC4KKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QobmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi50ZXN0X2Fic3BhdGgoKQogCiAKIGlmIF9fbmFtZV9fPT0iX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dlbmV4cHMucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmV4cHMucHkKaW5kZXggZDhlYjU1MC4uMjAzYjMzNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZW5leHBzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXhwcy5weQpAQCAtMjU4LDExICsyNTgsMTUgQEAKIAogIiIiCiAKK2ltcG9ydCBzeXMKIAotX190ZXN0X18gPSB7J2RvY3Rlc3RzJyA6IGRvY3Rlc3RzfQorIyBUcmFjZSBmdW5jdGlvbiBjYW4gdGhyb3cgb2ZmIHRoZSB0dXBsZSByZXVzZSB0ZXN0LgoraWYgaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKToKKyAgICBfX3Rlc3RfXyA9IHt9CitlbHNlOgorICAgIF9fdGVzdF9fID0geydkb2N0ZXN0cycgOiBkb2N0ZXN0c30KIAogZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgotICAgIGltcG9ydCBzeXMKICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKICAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfZ2VuZXhwcwogICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QodGVzdF9nZW5leHBzLCB2ZXJib3NlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weSBiL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkKaW5kZXggM2Q5YzA2YS4uNDhjYTk0ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5CkBAIC0xLDYgKzEsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX2tleXdvcmRzCitmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19rZXl3b3JkcywgZ2V0YXJnc19rZXl3b3JkX29ubHkKIAogIiIiCiA+IEhvdyBhYm91dCB0aGUgZm9sbG93aW5nIGNvdW50ZXJwcm9wb3NhbC4gVGhpcyBhbHNvIGNoYW5nZXMgc29tZSBvZgpAQCAtMjE0LDYgKzIxNCwzNiBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVkVSWV9MQVJHRSAmIFVMTE9OR19NQVgsIGdldGFyZ3NfSyhWRVJZX0xBUkdFKSkKIAorY2xhc3MgUGFyYWRveDoKKyAgICAiVGhpcyBzdGF0ZW1lbnQgaXMgZmFsc2UuIgorICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCitjbGFzcyBCb29sZWFuX1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9wKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19wCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2V0YXJnc19wKEZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnZXRhcmdzX3AoTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2V0YXJnc19wKDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGdldGFyZ3NfcCgwLjApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGdldGFyZ3NfcCgwaikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2V0YXJnc19wKCcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnZXRhcmdzX3AoKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGdldGFyZ3NfcChbXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2V0YXJnc19wKHt9KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcChUcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnZXRhcmdzX3AoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2V0YXJnc19wKDEuMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2V0YXJnc19wKDFqKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnZXRhcmdzX3AoJ3gnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnZXRhcmdzX3AoKDEsKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2V0YXJnc19wKFsxXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2V0YXJnc19wKHsxOjJ9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnZXRhcmdzX3AodW5pdHRlc3QuVGVzdENhc2UpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIGdldGFyZ3NfcCwgUGFyYWRveCgpKQorCiAKIGNsYXNzIFR1cGxlX1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF90dXBsZShzZWxmKToKQEAgLTI5Myw3ICszMjMsODcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgnVHlwZUVycm9yIHNob3VsZCBoYXZlIGJlZW4gcmFpc2VkJykKIAorY2xhc3MgS2V5d29yZE9ubHlfVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3Bvc2l0aW9uYWxfYXJncyhzZWxmKToKKyAgICAgICAgIyB1c2luZyBhbGwgcG9zc2libGUgcG9zaXRpb25hbCBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seSgxLCAyKSwKKyAgICAgICAgICAgICgxLCAyLCAtMSkKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X21peGVkX2FyZ3Moc2VsZik6CisgICAgICAgICMgcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seSgxLCAyLCBrZXl3b3JkX29ubHk9MyksCisgICAgICAgICAgICAoMSwgMiwgMykKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2tleXdvcmRfYXJncyhzZWxmKToKKyAgICAgICAgIyBhbGwga2V5d29yZHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KHJlcXVpcmVkPTEsIG9wdGlvbmFsPTIsIGtleXdvcmRfb25seT0zKSwKKyAgICAgICAgICAgICgxLCAyLCAzKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rfb3B0aW9uYWxfYXJncyhzZWxmKToKKyAgICAgICAgIyBtaXNzaW5nIG9wdGlvbmFsIGtleXdvcmQgYXJncywgc2tpcHBpbmcgdHVwbGVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seShyZXF1aXJlZD0xLCBvcHRpb25hbD0yKSwKKyAgICAgICAgICAgICgxLCAyLCAtMSkKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KHJlcXVpcmVkPTEsIGtleXdvcmRfb25seT0zKSwKKyAgICAgICAgICAgICgxLCAtMSwgMykKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X3JlcXVpcmVkX2FyZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seSgxKSwKKyAgICAgICAgICAgICgxLCAtMSwgLTEpCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seShyZXF1aXJlZD0xKSwKKyAgICAgICAgICAgICgxLCAtMSwgLTEpCisgICAgICAgICAgICApCisgICAgICAgICMgcmVxdWlyZWQgYXJnIG1pc3NpbmcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICJSZXF1aXJlZCBhcmd1bWVudCAncmVxdWlyZWQnIFwocG9zIDFcKSBub3QgZm91bmQiKToKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KG9wdGlvbmFsPTIpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICJSZXF1aXJlZCBhcmd1bWVudCAncmVxdWlyZWQnIFwocG9zIDFcKSBub3QgZm91bmQiKToKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KGtleXdvcmRfb25seT0zKQorCisgICAgZGVmIHRlc3RfdG9vX21hbnlfYXJncyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICJGdW5jdGlvbiB0YWtlcyBhdCBtb3N0IDIgcG9zaXRpb25hbCBhcmd1bWVudHMgXCgzIGdpdmVuXCkiKToKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEsIDIsIDMpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICJmdW5jdGlvbiB0YWtlcyBhdCBtb3N0IDMgYXJndW1lbnRzIFwoNCBnaXZlblwpIik6CisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seSgxLCAyLCAzLCBrZXl3b3JkX29ubHk9NSkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfa2V5d29yZChzZWxmKToKKyAgICAgICAgIyBleHRyYW5lb3VzIGtleXdvcmQgYXJnCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAiJ21vbnN0ZXInIGlzIGFuIGludmFsaWQga2V5d29yZCBhcmd1bWVudCBmb3IgdGhpcyBmdW5jdGlvbiIpOgorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwgbW9uc3Rlcj02NjYpCisKKyAgICBkZWYgdGVzdF9zdXJyb2dhdGVfa2V5d29yZChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICInXHVkYzgwJyBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgZm9yIHRoaXMgZnVuY3Rpb24iKToKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEsIDIsICoqeydcdURDODAnOiAxMH0pCisKIGNsYXNzIEJ5dGVzX1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9jKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19jCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19jLCBiJ2FiYycpICAjIGxlbiA+IDEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2MoYidhJyksIGInYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19jKGJ5dGVhcnJheShiJ2EnKSksIGInYScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19jLCBtZW1vcnl2aWV3KGInYScpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfYywgJ3MnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfYywgTm9uZSkKKwogICAgIGRlZiB0ZXN0X3Moc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX3MoJ2FiY1x4ZTknKSwgYidhYmNceGMzXHhhOScpCkBAIC00MzAsOCArNTQwLDEwIEBACiAgICAgdGVzdHMgPSBbCiAgICAgICAgIFNpZ25lZF9UZXN0Q2FzZSwKICAgICAgICAgVW5zaWduZWRfVGVzdENhc2UsCisgICAgICAgIEJvb2xlYW5fVGVzdENhc2UsCiAgICAgICAgIFR1cGxlX1Rlc3RDYXNlLAogICAgICAgICBLZXl3b3Jkc19UZXN0Q2FzZSwKKyAgICAgICAgS2V5d29yZE9ubHlfVGVzdENhc2UsCiAgICAgICAgIEJ5dGVzX1Rlc3RDYXNlLAogICAgICAgICBVbmljb2RlX1Rlc3RDYXNlLAogICAgIF0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2xvYi5weSBiL0xpYi90ZXN0L3Rlc3RfZ2xvYi5weQppbmRleCAxY2RjMjRhLi5lYjlhZWI1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dsb2IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nbG9iLnB5CkBAIC00LDcgKzQsOCBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIFRFU1RGTiwgc2tpcF91bmxlc3Nfc3ltbGluaywgY2FuX3N5bWxpbmsKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAocnVuX3VuaXR0ZXN0LCBURVNURk4sIHNraXBfdW5sZXNzX3N5bWxpbmssCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbl9zeW1saW5rLCBjcmVhdGVfZW1wdHlfZmlsZSkKIAogCiBjbGFzcyBHbG9iVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTcsOCArMTgsNyBAQAogICAgICAgICBiYXNlLCBmaWxlID0gb3MucGF0aC5zcGxpdChmaWxlbmFtZSkKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGJhc2UpOgogICAgICAgICAgICAgb3MubWFrZWRpcnMoYmFzZSkKLSAgICAgICAgZiA9IG9wZW4oZmlsZW5hbWUsICd3JykKLSAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGNyZWF0ZV9lbXB0eV9maWxlKGZpbGVuYW1lKQogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnRlbXBkaXIgPSBURVNURk4gKyAiX2RpciIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weSBiL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weQppbmRleCAyNjhhNjMzLi42YjMyNmJkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5CkBAIC0xMCw3ICsxMCw3IEBACiAKIGNsYXNzIFRva2VuVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgZGVmIHRlc3RCYWNrc2xhc2goc2VsZik6CisgICAgZGVmIHRlc3RfYmFja3NsYXNoKHNlbGYpOgogICAgICAgICAjIEJhY2tzbGFzaCBtZWFucyBsaW5lIGNvbnRpbnVhdGlvbjoKICAgICAgICAgeCA9IDEgXAogICAgICAgICArIDEKQEAgLTIwLDcgKzIwLDcgQEAKICAgICAgICAgeCA9IDAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCAwLCAnYmFja3NsYXNoIGVuZGluZyBjb21tZW50JykKIAotICAgIGRlZiB0ZXN0UGxhaW5JbnRlZ2VycyhzZWxmKToKKyAgICBkZWYgdGVzdF9wbGFpbl9pbnRlZ2VycyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKDAwMCksIHR5cGUoMCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMHhmZiwgMjU1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDBvMzc3LCAyNTUpCkBAIC01Niw3ICs1Niw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoJ1dlaXJkIG1heHNpemUgdmFsdWUgJXInICUgbWF4c2l6ZSkKIAotICAgIGRlZiB0ZXN0TG9uZ0ludGVnZXJzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2xvbmdfaW50ZWdlcnMoc2VsZik6CiAgICAgICAgIHggPSAwCiAgICAgICAgIHggPSAweGZmZmZmZmZmZmZmZmZmZmYKICAgICAgICAgeCA9IDBYZmZmZmZmZmZmZmZmZmZmZgpAQCAtNjYsNyArNjYsNyBAQAogICAgICAgICB4ID0gMGIxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKICAgICAgICAgeCA9IDBCMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExCiAKLSAgICBkZWYgdGVzdEZsb2F0cyhzZWxmKToKKyAgICBkZWYgdGVzdF9mbG9hdHMoc2VsZik6CiAgICAgICAgIHggPSAzLjE0CiAgICAgICAgIHggPSAzMTQuCiAgICAgICAgIHggPSAwLjMxNApAQCAtODAsNyArODAsNyBAQAogICAgICAgICB4ID0gLjNlMTQKICAgICAgICAgeCA9IDMuMWU0CiAKLSAgICBkZWYgdGVzdFN0cmluZ0xpdGVyYWxzKHNlbGYpOgorICAgIGRlZiB0ZXN0X3N0cmluZ19saXRlcmFscyhzZWxmKToKICAgICAgICAgeCA9ICcnOyB5ID0gIiI7IHNlbGYuYXNzZXJ0VHJ1ZShsZW4oeCkgPT0gMCBhbmQgeCA9PSB5KQogICAgICAgICB4ID0gJ1wnJzsgeSA9ICInIjsgc2VsZi5hc3NlcnRUcnVlKGxlbih4KSA9PSAxIGFuZCB4ID09IHkgYW5kIG9yZCh4KSA9PSAzOSkKICAgICAgICAgeCA9ICciJzsgeSA9ICJcIiI7IHNlbGYuYXNzZXJ0VHJ1ZShsZW4oeCkgPT0gMSBhbmQgeCA9PSB5IGFuZCBvcmQoeCkgPT0gMzQpCkBAIC0xMjAsMTEgKzEyMCwxOCBAQAogJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCiAKLSAgICBkZWYgdGVzdEVsbGlwc2lzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2VsbGlwc2lzKHNlbGYpOgogICAgICAgICB4ID0gLi4uCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIEVsbGlwc2lzKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIi4uIC4iKQogCisgICAgZGVmIHRlc3RfZW9mX2Vycm9yKHNlbGYpOgorICAgICAgICBzYW1wbGVzID0gKCJkZWYgZm9vKCIsICJcbmRlZiBmb28oIiwgImRlZiBmb28oXG4iKQorICAgICAgICBmb3IgcyBpbiBzYW1wbGVzOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgY29tcGlsZShzLCAiPHRlc3Q+IiwgImV4ZWMiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigidW5leHBlY3RlZCBFT0YiLCBzdHIoY20uZXhjZXB0aW9uKSkKKwogY2xhc3MgR3JhbW1hclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICMgc2luZ2xlX2lucHV0OiBORVdMSU5FIHwgc2ltcGxlX3N0bXQgfCBjb21wb3VuZF9zdG10IE5FV0xJTkUKQEAgLTEzNiwxMSArMTQzLDExIEBACiAgICAgIyBleHByX2lucHV0OiB0ZXN0bGlzdCBORVdMSU5FCiAgICAgIyBYWFggSGFyZCB0byB0ZXN0IC0tIHVzZWQgb25seSBpbiBjYWxscyB0byBpbnB1dCgpCiAKLSAgICBkZWYgdGVzdEV2YWxJbnB1dChzZWxmKToKKyAgICBkZWYgdGVzdF9ldmFsX2lucHV0KHNlbGYpOgogICAgICAgICAjIHRlc3RsaXN0IEVORE1BUktFUgogICAgICAgICB4ID0gZXZhbCgnMSwgMCBvciAxJykKIAotICAgIGRlZiB0ZXN0RnVuY2RlZihzZWxmKToKKyAgICBkZWYgdGVzdF9mdW5jZGVmKHNlbGYpOgogICAgICAgICAjIyMgW2RlY29yYXRvcnNdICdkZWYnIE5BTUUgcGFyYW1ldGVycyBbJy0+JyB0ZXN0XSAnOicgc3VpdGUKICAgICAgICAgIyMjIGRlY29yYXRvcjogJ0AnIGRvdHRlZF9uYW1lIFsgJygnIFthcmdsaXN0XSAnKScgXSBORVdMSU5FCiAgICAgICAgICMjIyBkZWNvcmF0b3JzOiBkZWNvcmF0b3IrCkBAIC0zMjQsNyArMzMxLDcgQEAKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJmKCpnKDE9MikpIikKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJmKCoqZygxPTIpKSIpCiAKLSAgICBkZWYgdGVzdExhbWJkZWYoc2VsZik6CisgICAgZGVmIHRlc3RfbGFtYmRlZihzZWxmKToKICAgICAgICAgIyMjIGxhbWJkZWY6ICdsYW1iZGEnIFt2YXJhcmdzbGlzdF0gJzonIHRlc3QKICAgICAgICAgbDEgPSBsYW1iZGEgOiAwCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobDEoKSwgMCkKQEAgLTM0Niw3ICszNTMsNyBAQAogICAgICMjIyBzdG10OiBzaW1wbGVfc3RtdCB8IGNvbXBvdW5kX3N0bXQKICAgICAjIFRlc3RlZCBiZWxvdwogCi0gICAgZGVmIHRlc3RTaW1wbGVTdG10KHNlbGYpOgorICAgIGRlZiB0ZXN0X3NpbXBsZV9zdG10KHNlbGYpOgogICAgICAgICAjIyMgc2ltcGxlX3N0bXQ6IHNtYWxsX3N0bXQgKCc7JyBzbWFsbF9zdG10KSogWyc7J10KICAgICAgICAgeCA9IDE7IHBhc3M7IGRlbCB4CiAgICAgICAgIGRlZiBmb28oKToKQEAgLTM1Nyw3ICszNjQsNyBAQAogICAgICMjIyBzbWFsbF9zdG10OiBleHByX3N0bXQgfCBwYXNzX3N0bXQgfCBkZWxfc3RtdCB8IGZsb3dfc3RtdCB8IGltcG9ydF9zdG10IHwgZ2xvYmFsX3N0bXQgfCBhY2Nlc3Nfc3RtdAogICAgICMgVGVzdGVkIGJlbG93CiAKLSAgICBkZWYgdGVzdEV4cHJTdG10KHNlbGYpOgorICAgIGRlZiB0ZXN0X2V4cHJfc3RtdChzZWxmKToKICAgICAgICAgIyAoZXhwcmxpc3QgJz0nKSogZXhwcmxpc3QKICAgICAgICAgMQogICAgICAgICAxLCAyLCAzCkBAIC0zNzAsNyArMzc3LDcgQEAKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJ4ICsgMSA9IDEiKQogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImEgKyAxID0gYiArIDIiKQogCi0gICAgZGVmIHRlc3REZWxTdG10KHNlbGYpOgorICAgIGRlZiB0ZXN0X2RlbF9zdG10KHNlbGYpOgogICAgICAgICAjICdkZWwnIGV4cHJsaXN0CiAgICAgICAgIGFiYyA9IFsxLDIsM10KICAgICAgICAgeCwgeSwgeiA9IGFiYwpAQCAtMzc5LDE4ICszODYsMTggQEAKICAgICAgICAgZGVsIGFiYwogICAgICAgICBkZWwgeCwgeSwgKHosIHh5eikKIAotICAgIGRlZiB0ZXN0UGFzc1N0bXQoc2VsZik6CisgICAgZGVmIHRlc3RfcGFzc19zdG10KHNlbGYpOgogICAgICAgICAjICdwYXNzJwogICAgICAgICBwYXNzCiAKICAgICAjIGZsb3dfc3RtdDogYnJlYWtfc3RtdCB8IGNvbnRpbnVlX3N0bXQgfCByZXR1cm5fc3RtdCB8IHJhaXNlX3N0bXQKICAgICAjIFRlc3RlZCBiZWxvdwogCi0gICAgZGVmIHRlc3RCcmVha1N0bXQoc2VsZik6CisgICAgZGVmIHRlc3RfYnJlYWtfc3RtdChzZWxmKToKICAgICAgICAgIyAnYnJlYWsnCiAgICAgICAgIHdoaWxlIDE6IGJyZWFrCiAKLSAgICBkZWYgdGVzdENvbnRpbnVlU3RtdChzZWxmKToKKyAgICBkZWYgdGVzdF9jb250aW51ZV9zdG10KHNlbGYpOgogICAgICAgICAjICdjb250aW51ZScKICAgICAgICAgaSA9IDEKICAgICAgICAgd2hpbGUgaTogaSA9IDA7IGNvbnRpbnVlCkBAIC00NDIsNyArNDQ5LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImNvbnRpbnVlIHRoZW4gYnJlYWsgaW4gdHJ5L2V4Y2VwdCBpbiBsb29wIGJyb2tlbiEiKQogICAgICAgICB0ZXN0X2lubmVyKCkKIAotICAgIGRlZiB0ZXN0UmV0dXJuKHNlbGYpOgorICAgIGRlZiB0ZXN0X3JldHVybihzZWxmKToKICAgICAgICAgIyAncmV0dXJuJyBbdGVzdGxpc3RdCiAgICAgICAgIGRlZiBnMSgpOiByZXR1cm4KICAgICAgICAgZGVmIGcyKCk6IHJldHVybiAxCkBAIC00NTAsMTcgKzQ1Nyw0OSBAQAogICAgICAgICB4ID0gZzIoKQogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImNsYXNzIGZvbzpyZXR1cm4gMSIpCiAKLSAgICBkZWYgdGVzdFlpZWxkKHNlbGYpOgorICAgIGRlZiB0ZXN0X3lpZWxkKHNlbGYpOgorICAgICAgICAjIEFsbG93ZWQgYXMgc3RhbmRhbG9uZSBzdGF0ZW1lbnQKKyAgICAgICAgZGVmIGcoKTogeWllbGQgMQorICAgICAgICBkZWYgZygpOiB5aWVsZCBmcm9tICgpCisgICAgICAgICMgQWxsb3dlZCBhcyBSSFMgb2YgYXNzaWdubWVudAorICAgICAgICBkZWYgZygpOiB4ID0geWllbGQgMQorICAgICAgICBkZWYgZygpOiB4ID0geWllbGQgZnJvbSAoKQorICAgICAgICAjIE9yZGluYXJ5IHlpZWxkIGFjY2VwdHMgaW1wbGljaXQgdHVwbGVzCisgICAgICAgIGRlZiBnKCk6IHlpZWxkIDEsIDEKKyAgICAgICAgZGVmIGcoKTogeCA9IHlpZWxkIDEsIDEKKyAgICAgICAgIyAneWllbGQgZnJvbScgZG9lcyBub3QKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZygpOiB5aWVsZCBmcm9tICgpLCAxIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZygpOiB4ID0geWllbGQgZnJvbSAoKSwgMSIpCisgICAgICAgICMgUmVxdWlyZXMgcGFyZW50aGVzZXMgYXMgc3ViZXhwcmVzc2lvbgorICAgICAgICBkZWYgZygpOiAxLCAoeWllbGQgMSkKKyAgICAgICAgZGVmIGcoKTogMSwgKHlpZWxkIGZyb20gKCkpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogMSwgeWllbGQgMSIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogMSwgeWllbGQgZnJvbSAoKSIpCisgICAgICAgICMgUmVxdWlyZXMgcGFyZW50aGVzZXMgYXMgY2FsbCBhcmd1bWVudAorICAgICAgICBkZWYgZygpOiBmKCh5aWVsZCAxKSkKKyAgICAgICAgZGVmIGcoKTogZigoeWllbGQgMSksIDEpCisgICAgICAgIGRlZiBnKCk6IGYoKHlpZWxkIGZyb20gKCkpKQorICAgICAgICBkZWYgZygpOiBmKCh5aWVsZCBmcm9tICgpKSwgMSkKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZygpOiBmKHlpZWxkIDEpIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZygpOiBmKHlpZWxkIDEsIDEpIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZygpOiBmKHlpZWxkIGZyb20gKCkpIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZygpOiBmKHlpZWxkIGZyb20gKCksIDEpIikKKyAgICAgICAgIyBOb3QgYWxsb3dlZCBhdCB0b3AgbGV2ZWwKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJ5aWVsZCIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAieWllbGQgZnJvbSIpCisgICAgICAgICMgTm90IGFsbG93ZWQgYXQgY2xhc3Mgc2NvcGUKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJjbGFzcyBmb286eWllbGQgMSIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiY2xhc3MgZm9vOnlpZWxkIGZyb20gKCkiKQogCi0gICAgZGVmIHRlc3RSYWlzZShzZWxmKToKKworICAgIGRlZiB0ZXN0X3JhaXNlKHNlbGYpOgogICAgICAgICAjICdyYWlzZScgdGVzdCBbJywnIHRlc3RdCiAgICAgICAgIHRyeTogcmFpc2UgUnVudGltZUVycm9yKCdqdXN0IHRlc3RpbmcnKQogICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOiBwYXNzCiAgICAgICAgIHRyeTogcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OiBwYXNzCiAKLSAgICBkZWYgdGVzdEltcG9ydChzZWxmKToKKyAgICBkZWYgdGVzdF9pbXBvcnQoc2VsZik6CiAgICAgICAgICMgJ2ltcG9ydCcgZG90dGVkX2FzX25hbWVzCiAgICAgICAgIGltcG9ydCBzeXMKICAgICAgICAgaW1wb3J0IHRpbWUsIHN5cwpAQCAtNDczLDEzICs1MTIsMTMgQEAKICAgICAgICAgZnJvbSBzeXMgaW1wb3J0IChwYXRoLCBhcmd2KQogICAgICAgICBmcm9tIHN5cyBpbXBvcnQgKHBhdGgsIGFyZ3YsKQogCi0gICAgZGVmIHRlc3RHbG9iYWwoc2VsZik6CisgICAgZGVmIHRlc3RfZ2xvYmFsKHNlbGYpOgogICAgICAgICAjICdnbG9iYWwnIE5BTUUgKCcsJyBOQU1FKSoKICAgICAgICAgZ2xvYmFsIGEKICAgICAgICAgZ2xvYmFsIGEsIGIKICAgICAgICAgZ2xvYmFsIG9uZSwgdHdvLCB0aHJlZSwgZm91ciwgZml2ZSwgc2l4LCBzZXZlbiwgZWlnaHQsIG5pbmUsIHRlbgogCi0gICAgZGVmIHRlc3ROb25sb2NhbChzZWxmKToKKyAgICBkZWYgdGVzdF9ub25sb2NhbChzZWxmKToKICAgICAgICAgIyAnbm9ubG9jYWwnIE5BTUUgKCcsJyBOQU1FKSoKICAgICAgICAgeCA9IDAKICAgICAgICAgeSA9IDAKQEAgLTQ4Nyw3ICs1MjYsNyBAQAogICAgICAgICAgICAgbm9ubG9jYWwgeAogICAgICAgICAgICAgbm9ubG9jYWwgeCwgeQogCi0gICAgZGVmIHRlc3RBc3NlcnQoc2VsZik6CisgICAgZGVmIHRlc3RfYXNzZXJ0KHNlbGYpOgogICAgICAgICAjIGFzc2VydFRydWVzdG10OiAnYXNzZXJ0JyB0ZXN0IFsnLCcgdGVzdF0KICAgICAgICAgYXNzZXJ0IDEKICAgICAgICAgYXNzZXJ0IDEsIDEKQEAgLTUyNiw3ICs1NjUsNyBAQAogICAgICMjIyBjb21wb3VuZF9zdG10OiBpZl9zdG10IHwgd2hpbGVfc3RtdCB8IGZvcl9zdG10IHwgdHJ5X3N0bXQgfCBmdW5jZGVmIHwgY2xhc3NkZWYKICAgICAjIFRlc3RlZCBiZWxvdwogCi0gICAgZGVmIHRlc3RJZihzZWxmKToKKyAgICBkZWYgdGVzdF9pZihzZWxmKToKICAgICAgICAgIyAnaWYnIHRlc3QgJzonIHN1aXRlICgnZWxpZicgdGVzdCAnOicgc3VpdGUpKiBbJ2Vsc2UnICc6JyBzdWl0ZV0KICAgICAgICAgaWYgMTogcGFzcwogICAgICAgICBpZiAxOiBwYXNzCkBAIC01MzksNyArNTc4LDcgQEAKICAgICAgICAgZWxpZiAwOiBwYXNzCiAgICAgICAgIGVsc2U6IHBhc3MKIAotICAgIGRlZiB0ZXN0V2hpbGUoc2VsZik6CisgICAgZGVmIHRlc3Rfd2hpbGUoc2VsZik6CiAgICAgICAgICMgJ3doaWxlJyB0ZXN0ICc6JyBzdWl0ZSBbJ2Vsc2UnICc6JyBzdWl0ZV0KICAgICAgICAgd2hpbGUgMDogcGFzcwogICAgICAgICB3aGlsZSAwOiBwYXNzCkBAIC01NTQsNyArNTkzLDcgQEAKICAgICAgICAgICAgIHggPSAyCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgMikKIAotICAgIGRlZiB0ZXN0Rm9yKHNlbGYpOgorICAgIGRlZiB0ZXN0X2ZvcihzZWxmKToKICAgICAgICAgIyAnZm9yJyBleHBybGlzdCAnaW4nIGV4cHJsaXN0ICc6JyBzdWl0ZSBbJ2Vsc2UnICc6JyBzdWl0ZV0KICAgICAgICAgZm9yIGkgaW4gMSwgMiwgMzogcGFzcwogICAgICAgICBmb3IgaSwgaiwgayBpbiAoKTogcGFzcwpAQCAtNTgxLDcgKzYyMCw3IEBACiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBbMSwgMiwgM10pCiAKLSAgICBkZWYgdGVzdFRyeShzZWxmKToKKyAgICBkZWYgdGVzdF90cnkoc2VsZik6CiAgICAgICAgICMjIyB0cnlfc3RtdDogJ3RyeScgJzonIHN1aXRlIChleGNlcHRfY2xhdXNlICc6JyBzdWl0ZSkrIFsnZWxzZScgJzonIHN1aXRlXQogICAgICAgICAjIyMgICAgICAgICB8ICd0cnknICc6JyBzdWl0ZSAnZmluYWxseScgJzonIHN1aXRlCiAgICAgICAgICMjIyBleGNlcHRfY2xhdXNlOiAnZXhjZXB0JyBbZXhwciBbJ2FzJyBleHByXV0KQEAgLTYwNCw3ICs2NDMsNyBAQAogICAgICAgICB0cnk6IHBhc3MKICAgICAgICAgZmluYWxseTogcGFzcwogCi0gICAgZGVmIHRlc3RTdWl0ZShzZWxmKToKKyAgICBkZWYgdGVzdF9zdWl0ZShzZWxmKToKICAgICAgICAgIyBzaW1wbGVfc3RtdCB8IE5FV0xJTkUgSU5ERU5UIE5FV0xJTkUqIChzdG10IE5FV0xJTkUqKSsgREVERU5UCiAgICAgICAgIGlmIDE6IHBhc3MKICAgICAgICAgaWYgMToKQEAgLTYxOSw3ICs2NTgsNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgIwogCi0gICAgZGVmIHRlc3RUZXN0KHNlbGYpOgorICAgIGRlZiB0ZXN0X3Rlc3Qoc2VsZik6CiAgICAgICAgICMjIyBhbmRfdGVzdCAoJ29yJyBhbmRfdGVzdCkqCiAgICAgICAgICMjIyBhbmRfdGVzdDogbm90X3Rlc3QgKCdhbmQnIG5vdF90ZXN0KSoKICAgICAgICAgIyMjIG5vdF90ZXN0OiAnbm90JyBub3RfdGVzdCB8IGNvbXBhcmlzb24KQEAgLTYzMCw3ICs2NjksNyBAQAogICAgICAgICBpZiBub3QgMSBhbmQgMSBhbmQgMTogcGFzcwogICAgICAgICBpZiAxIGFuZCAxIG9yIDEgYW5kIDEgYW5kIDEgb3Igbm90IDEgYW5kIDE6IHBhc3MKIAotICAgIGRlZiB0ZXN0Q29tcGFyaXNvbihzZWxmKToKKyAgICBkZWYgdGVzdF9jb21wYXJpc29uKHNlbGYpOgogICAgICAgICAjIyMgY29tcGFyaXNvbjogZXhwciAoY29tcF9vcCBleHByKSoKICAgICAgICAgIyMjIGNvbXBfb3A6ICc8J3wnPid8Jz09J3wnPj0nfCc8PSd8JyE9J3wnaW4nfCdub3QnICdpbid8J2lzJ3wnaXMnICdub3QnCiAgICAgICAgIGlmIDE6IHBhc3MKQEAgLTY0NywzNiArNjg2LDM2IEBACiAgICAgICAgIGlmIDEgbm90IGluICgpOiBwYXNzCiAgICAgICAgIGlmIDEgPCAxID4gMSA9PSAxID49IDEgPD0gMSAhPSAxIGluIDEgbm90IGluIDEgaXMgMSBpcyBub3QgMTogcGFzcwogCi0gICAgZGVmIHRlc3RCaW5hcnlNYXNrT3BzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2JpbmFyeV9tYXNrX29wcyhzZWxmKToKICAgICAgICAgeCA9IDEgJiAxCiAgICAgICAgIHggPSAxIF4gMQogICAgICAgICB4ID0gMSB8IDEKIAotICAgIGRlZiB0ZXN0U2hpZnRPcHMoc2VsZik6CisgICAgZGVmIHRlc3Rfc2hpZnRfb3BzKHNlbGYpOgogICAgICAgICB4ID0gMSA8PCAxCiAgICAgICAgIHggPSAxID4+IDEKICAgICAgICAgeCA9IDEgPDwgMSA+PiAxCiAKLSAgICBkZWYgdGVzdEFkZGl0aXZlT3BzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2FkZGl0aXZlX29wcyhzZWxmKToKICAgICAgICAgeCA9IDEKICAgICAgICAgeCA9IDEgKyAxCiAgICAgICAgIHggPSAxIC0gMSAtIDEKICAgICAgICAgeCA9IDEgLSAxICsgMSAtIDEgKyAxCiAKLSAgICBkZWYgdGVzdE11bHRpcGxpY2F0aXZlT3BzKHNlbGYpOgorICAgIGRlZiB0ZXN0X211bHRpcGxpY2F0aXZlX29wcyhzZWxmKToKICAgICAgICAgeCA9IDEgKiAxCiAgICAgICAgIHggPSAxIC8gMQogICAgICAgICB4ID0gMSAlIDEKICAgICAgICAgeCA9IDEgLyAxICogMSAlIDEKIAotICAgIGRlZiB0ZXN0VW5hcnlPcHMoc2VsZik6CisgICAgZGVmIHRlc3RfdW5hcnlfb3BzKHNlbGYpOgogICAgICAgICB4ID0gKzEKICAgICAgICAgeCA9IC0xCiAgICAgICAgIHggPSB+MQogICAgICAgICB4ID0gfjEgXiAxICYgMSB8IDEgJiAxIF4gLTEKICAgICAgICAgeCA9IC0xKjEvMSArIDEqMSAtIC0tLTEqMQogCi0gICAgZGVmIHRlc3RTZWxlY3RvcnMoc2VsZik6CisgICAgZGVmIHRlc3Rfc2VsZWN0b3JzKHNlbGYpOgogICAgICAgICAjIyMgdHJhaWxlcjogJygnIFt0ZXN0bGlzdF0gJyknIHwgJ1snIHN1YnNjcmlwdCAnXScgfCAnLicgTkFNRQogICAgICAgICAjIyMgc3Vic2NyaXB0OiBleHByIHwgW2V4cHJdICc6JyBbZXhwcl0KIApAQCAtNzA2LDcgKzc0NSw3IEBACiAgICAgICAgIEwuc29ydChrZXk9bGFtYmRhIHg6IHggaWYgaXNpbnN0YW5jZSh4LCB0dXBsZSkgZWxzZSAoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTCksICdbMSwgKDEsKSwgKDEsIDIpLCAoMSwgMiwgMyldJykKIAotICAgIGRlZiB0ZXN0QXRvbXMoc2VsZik6CisgICAgZGVmIHRlc3RfYXRvbXMoc2VsZik6CiAgICAgICAgICMjIyBhdG9tOiAnKCcgW3Rlc3RsaXN0XSAnKScgfCAnWycgW3Rlc3RsaXN0XSAnXScgfCAneycgW2RpY3RzZXRtYWtlcl0gJ30nIHwgTkFNRSB8IE5VTUJFUiB8IFNUUklORwogICAgICAgICAjIyMgZGljdHNldG1ha2VyOiAodGVzdCAnOicgdGVzdCAoJywnIHRlc3QgJzonIHRlc3QpKiBbJywnXSkgfCAodGVzdCAoJywnIHRlc3QpKiBbJywnXSkKIApAQCAtNzQxLDcgKzc4MCw3IEBACiAgICAgIyMjIHRlc3RsaXN0OiB0ZXN0ICgnLCcgdGVzdCkqIFsnLCddCiAgICAgIyBUaGVzZSBoYXZlIGJlZW4gZXhlcmNpc2VkIGVub3VnaCBhYm92ZQogCi0gICAgZGVmIHRlc3RDbGFzc2RlZihzZWxmKToKKyAgICBkZWYgdGVzdF9jbGFzc2RlZihzZWxmKToKICAgICAgICAgIyAnY2xhc3MnIE5BTUUgWycoJyBbdGVzdGxpc3RdICcpJ10gJzonIHN1aXRlCiAgICAgICAgIGNsYXNzIEI6IHBhc3MKICAgICAgICAgY2xhc3MgQjIoKTogcGFzcwpAQCAtNzYwLDE0ICs3OTksMTQgQEAKICAgICAgICAgQGNsYXNzX2RlY29yYXRvcgogICAgICAgICBjbGFzcyBHOiBwYXNzCiAKLSAgICBkZWYgdGVzdERpY3Rjb21wcyhzZWxmKToKKyAgICBkZWYgdGVzdF9kaWN0Y29tcHMoc2VsZik6CiAgICAgICAgICMgZGljdG9yc2V0bWFrZXI6ICggKHRlc3QgJzonIHRlc3QgKGNvbXBfZm9yIHwKICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcsJyB0ZXN0ICc6JyB0ZXN0KSogWycsJ10pKSB8CiAgICAgICAgICMgICAgICAgICAgICAgICAgICAgKHRlc3QgKGNvbXBfZm9yIHwgKCcsJyB0ZXN0KSogWycsJ10pKSApCiAgICAgICAgIG51bXMgPSBbMSwgMiwgM10KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7aTppKzEgZm9yIGkgaW4gbnVtc30sIHsxOiAyLCAyOiAzLCAzOiA0fSkKIAotICAgIGRlZiB0ZXN0TGlzdGNvbXBzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2xpc3Rjb21wcyhzZWxmKToKICAgICAgICAgIyBsaXN0IGNvbXByZWhlbnNpb24gdGVzdHMKICAgICAgICAgbnVtcyA9IFsxLCAyLCAzLCA0LCA1XQogICAgICAgICBzdHJzID0gWyJBcHBsZSIsICJCYW5hbmEiLCAiQ29jb251dCJdCkBAIC04MzAsNyArODY5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBbKCdCb2VpbmcnLCAnQWlybGluZXInKSwgKCdCb2VpbmcnLCAnRW5naW5lJyksICgnRm9yZCcsICdFbmdpbmUnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdNYWNkb25hbGRzJywgJ0NoZWVzZWJ1cmdlcicpXSkKIAotICAgIGRlZiB0ZXN0R2VuZXhwcyhzZWxmKToKKyAgICBkZWYgdGVzdF9nZW5leHBzKHNlbGYpOgogICAgICAgICAjIGdlbmVyYXRvciBleHByZXNzaW9uIHRlc3RzCiAgICAgICAgIGcgPSAoW3ggZm9yIHggaW4gcmFuZ2UoMTApXSBmb3IgeCBpbiByYW5nZSgxKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGcpLCBbeCBmb3IgeCBpbiByYW5nZSgxMCldKQpAQCAtODY1LDcgKzkwNCw3IEBACiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZm9vKHggZm9yIHggaW4gcmFuZ2UoMTApLCAxMDApIikKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJmb28oMTAwLCB4IGZvciB4IGluIHJhbmdlKDEwKSkiKQogCi0gICAgZGVmIHRlc3RDb21wcmVoZW5zaW9uU3BlY2lhbHMoc2VsZik6CisgICAgZGVmIHRlc3RfY29tcHJlaGVuc2lvbl9zcGVjaWFscyhzZWxmKToKICAgICAgICAgIyB0ZXN0IGZvciBvdXRtb3N0IGl0ZXJhYmxlIHByZWNvbXB1dGF0aW9uCiAgICAgICAgIHggPSAxMDsgZyA9IChpIGZvciBpIGluIHJhbmdlKHgpKTsgeCA9IDUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGlzdChnKSksIDEwKQpAQCAtOTA0LDcgKzk0Myw3IEBACiAgICAgICAgIHdpdGggbWFuYWdlcigpIGFzIHgsIG1hbmFnZXIoKToKICAgICAgICAgICAgIHBhc3MKIAotICAgIGRlZiB0ZXN0SWZFbHNlRXhwcihzZWxmKToKKyAgICBkZWYgdGVzdF9pZl9lbHNlX2V4cHIoc2VsZik6CiAgICAgICAgICMgVGVzdCBpZmVsc2UgZXhwcmVzc2lvbnMgaW4gdmFyaW91cyBjYXNlcwogICAgICAgICBkZWYgX2NoZWNrZXZhbChtc2csIHJldCk6CiAgICAgICAgICAgICAiaGVscGVyIHRvIGNoZWNrIHRoYXQgZXZhbHVhdGlvbiBvZiBleHByZXNzaW9ucyBpcyBkb25lIGNvcnJlY3RseSIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weSBiL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQppbmRleCBiYTlkN2RhLi5lYmQ0YzQzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2d6aXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nemlwLnB5CkBAIC0zMyw3ICszMyw3IEBACiAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uCiAKIAotY2xhc3MgVGVzdEd6aXAodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgQmFzZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTQzLDYgKzQzLDcgQEAKICAgICAgICAgc3VwcG9ydC51bmxpbmsoc2VsZi5maWxlbmFtZSkKIAogCitjbGFzcyBUZXN0R3ppcChCYXNlVGVzdCk6CiAgICAgZGVmIHRlc3Rfd3JpdGUoc2VsZik6CiAgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAnd2InKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShkYXRhMSAqIDUwKQpAQCAtNjQsNiArNjUsMjEgQEAKICAgICAgICAgICAgIGQgPSBmLnJlYWQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGRhdGExKjUwKQogCisgICAgZGVmIHRlc3RfcmVhZDEoc2VsZik6CisgICAgICAgIHNlbGYudGVzdF93cml0ZSgpCisgICAgICAgIGJsb2NrcyA9IFtdCisgICAgICAgIG5yZWFkID0gMAorICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBkID0gZi5yZWFkMSgpCisgICAgICAgICAgICAgICAgaWYgbm90IGQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChkKQorICAgICAgICAgICAgICAgIG5yZWFkICs9IGxlbihkKQorICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBwb3NpdGlvbiB3YXMgdXBkYXRlZCBjb3JyZWN0bHkgKHNlZSBpc3N1ZTEwNzkxKS4KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYudGVsbCgpLCBucmVhZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycuam9pbihibG9ja3MpLCBkYXRhMSAqIDUwKQorCiAgICAgZGVmIHRlc3RfaW9fb25fY2xvc2VkX29iamVjdChzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgSS9PIG9wZXJhdGlvbnMgb24gY2xvc2VkIEd6aXBGaWxlIG9iamVjdHMgcmFpc2UgYQogICAgICAgICAjIFZhbHVlRXJyb3IsIGp1c3QgbGlrZSB0aGUgY29ycmVzcG9uZGluZyBmdW5jdGlvbnMgb24gZmlsZSBvYmplY3RzLgpAQCAtMTAwLDE0ICsxMTYsMTQgQEAKICAgICAgICAgIyBCdWcgIzEwNzQyNjEgd2FzIHRyaWdnZXJlZCB3aGVuIHJlYWRpbmcgYSBmaWxlIHRoYXQgY29udGFpbmVkCiAgICAgICAgICMgbWFueSwgbWFueSBtZW1iZXJzLiAgQ3JlYXRlIHN1Y2ggYSBmaWxlIGFuZCB2ZXJpZnkgdGhhdCByZWFkaW5nIGl0CiAgICAgICAgICMgd29ya3MuCi0gICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICd3YicsIDkpIGFzIGY6CisgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAnd2InLCA5KSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShiJ2EnKQogICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCAyMDApOgotICAgICAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgImFiIiwgOSkgYXMgZjogIyBhcHBlbmQKKyAgICAgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAiYWIiLCA5KSBhcyBmOiAjIGFwcGVuZAogICAgICAgICAgICAgICAgIGYud3JpdGUoYidhJykKIAogICAgICAgICAjIFRyeSByZWFkaW5nIHRoZSBmaWxlCi0gICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIHpnZmlsZToKKyAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIHpnZmlsZToKICAgICAgICAgICAgIGNvbnRlbnRzID0gYiIiCiAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgIHp0eHQgPSB6Z2ZpbGUucmVhZCg4MTkyKQpAQCAtMTI0LDcgKzE0MCw3IEBACiAgICAgICAgICAgICB3aXRoIGlvLkJ1ZmZlcmVkUmVhZGVyKGYpIGFzIHI6CiAgICAgICAgICAgICAgICAgbGluZXMgPSBbbGluZSBmb3IgbGluZSBpbiByXQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXMsIDUwICogZGF0YTEuc3BsaXRsaW5lcyhUcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lcywgNTAgKiBkYXRhMS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpKQogCiAgICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6CiAgICAgICAgIHNlbGYudGVzdF93cml0ZSgpCkBAIC0zMjMsNiArMzM5LDE0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgxMDApLCBiJycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5yZWFkLCBsZW4odW5jb21wcmVzc2VkKSkKIAorICAgIGRlZiB0ZXN0X3RleHRpb19yZWFkbGluZXMoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzEwNzkxOiBUZXh0SU9XcmFwcGVyLnJlYWRsaW5lcygpIGZhaWxzIHdoZW4gd3JhcHBpbmcgR3ppcEZpbGUuCisgICAgICAgIGxpbmVzID0gKGRhdGExICogNTApLmRlY29kZSgiYXNjaWkiKS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCisgICAgICAgIHNlbGYudGVzdF93cml0ZSgpCisgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAncicpIGFzIGY6CisgICAgICAgICAgICB3aXRoIGlvLlRleHRJT1dyYXBwZXIoZiwgZW5jb2Rpbmc9ImFzY2lpIikgYXMgdDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQucmVhZGxpbmVzKCksIGxpbmVzKQorCiAgICAgZGVmIHRlc3RfZmlsZW9ial9mcm9tX2Zkb3BlbihzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMTM3ODE6IE9wZW5pbmcgYSBHemlwRmlsZSBmb3Igd3JpdGluZyBmYWlscyB3aGVuIHVzaW5nIGEKICAgICAgICAgIyBmaWxlb2JqIGNyZWF0ZWQgd2l0aCBvcy5mZG9wZW4oKS4KQEAgLTM4MCw4ICs0MDQsMTA4IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IsIGYucmVhZCwgMSkKIAogCitjbGFzcyBUZXN0T3BlbihCYXNlVGVzdCk6CisgICAgZGVmIHRlc3RfYmluYXJ5X21vZGVzKHNlbGYpOgorICAgICAgICB1bmNvbXByZXNzZWQgPSBkYXRhMSAqIDUwCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBnemlwLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAiYWIiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gZ3ppcC5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZCAqIDIpCisKKyAgICBkZWYgdGVzdF9pbXBsaWNpdF9iaW5hcnlfbW9kZXMoc2VsZik6CisgICAgICAgICMgVGVzdCBpbXBsaWNpdCBiaW5hcnkgbW9kZXMgKG5vICJiIiBvciAidCIgaW4gbW9kZSBzdHJpbmcpLgorICAgICAgICB1bmNvbXByZXNzZWQgPSBkYXRhMSAqIDUwCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGd6aXAuZGVjb21wcmVzcyhmLnJlYWQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJyIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgImEiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gZ3ppcC5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZCAqIDIpCisKKyAgICBkZWYgdGVzdF90ZXh0X21vZGVzKHNlbGYpOgorICAgICAgICB1bmNvbXByZXNzZWQgPSBkYXRhMS5kZWNvZGUoImFzY2lpIikgKiA1MAorICAgICAgICB1bmNvbXByZXNzZWRfcmF3ID0gdW5jb21wcmVzc2VkLnJlcGxhY2UoIlxuIiwgb3MubGluZXNlcCkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInd0IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGd6aXAuZGVjb21wcmVzcyhmLnJlYWQoKSkuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkX3JhdykKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInJ0IikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgImF0IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGd6aXAuZGVjb21wcmVzcyhmLnJlYWQoKSkuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkX3JhdyAqIDIpCisKKyAgICBkZWYgdGVzdF9maWxlb2JqKHNlbGYpOgorICAgICAgICB1bmNvbXByZXNzZWRfYnl0ZXMgPSBkYXRhMSAqIDUwCisgICAgICAgIHVuY29tcHJlc3NlZF9zdHIgPSB1bmNvbXByZXNzZWRfYnl0ZXMuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIGNvbXByZXNzZWQgPSBnemlwLmNvbXByZXNzKHVuY29tcHJlc3NlZF9ieXRlcykKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oaW8uQnl0ZXNJTyhjb21wcmVzc2VkKSwgInIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkX2J5dGVzKQorICAgICAgICB3aXRoIGd6aXAub3Blbihpby5CeXRlc0lPKGNvbXByZXNzZWQpLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkX2J5dGVzKQorICAgICAgICB3aXRoIGd6aXAub3Blbihpby5CeXRlc0lPKGNvbXByZXNzZWQpLCAicnQiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkX3N0cikKKworICAgIGRlZiB0ZXN0X2JhZF9wYXJhbXMoc2VsZik6CisgICAgICAgICMgVGVzdCBpbnZhbGlkIHBhcmFtZXRlciBjb21iaW5hdGlvbnMuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGd6aXAub3BlbigxMjMuNDU2KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3YnQiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIsIGVuY29kaW5nPSJ1dGYtOCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInJiIiwgZXJyb3JzPSJpZ25vcmUiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIsIG5ld2xpbmU9IlxuIikKKworICAgIGRlZiB0ZXN0X2VuY29kaW5nKHNlbGYpOgorICAgICAgICAjIFRlc3Qgbm9uLWRlZmF1bHQgZW5jb2RpbmcuCisgICAgICAgIHVuY29tcHJlc3NlZCA9IGRhdGExLmRlY29kZSgiYXNjaWkiKSAqIDUwCisgICAgICAgIHVuY29tcHJlc3NlZF9yYXcgPSB1bmNvbXByZXNzZWQucmVwbGFjZSgiXG4iLCBvcy5saW5lc2VwKQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAid3QiLCBlbmNvZGluZz0idXRmLTE2IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGd6aXAuZGVjb21wcmVzcyhmLnJlYWQoKSkuZGVjb2RlKCJ1dGYtMTYiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZF9yYXcpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJydCIsIGVuY29kaW5nPSJ1dGYtMTYiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkKQorCisgICAgZGVmIHRlc3RfZW5jb2RpbmdfZXJyb3JfaGFuZGxlcihzZWxmKToKKyAgICAgICAgIyBUZXN0IHdpdGggbm9uLWRlZmF1bHQgZW5jb2RpbmcgZXJyb3IgaGFuZGxlci4KKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoYiJmb29ceGZmYmFyIikKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInJ0IiwgZW5jb2Rpbmc9ImFzY2lpIiwgZXJyb3JzPSJpZ25vcmUiKSBcCisgICAgICAgICAgICAgICAgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICJmb29iYXIiKQorCisgICAgZGVmIHRlc3RfbmV3bGluZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHdpdGggZXhwbGljaXQgbmV3bGluZSAodW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBkaXNhYmxlZCkuCisgICAgICAgIHVuY29tcHJlc3NlZCA9IGRhdGExLmRlY29kZSgiYXNjaWkiKSAqIDUwCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3dCIsIG5ld2xpbmU9IlxuIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiLCBuZXdsaW5lPSJcciIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZGxpbmVzKCksIFt1bmNvbXByZXNzZWRdKQorCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdEd6aXApCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdEd6aXAsIFRlc3RPcGVuKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbih2ZXJib3NlPVRydWUpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2hhc2gucHkgYi9MaWIvdGVzdC90ZXN0X2hhc2gucHkKaW5kZXggYzBkZDM0ZC4uZTNhYjZlNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9oYXNoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaGFzaC5weQpAQCAtNyw3ICs3LDYgQEAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBIYXNoYWJsZQogCkBAIC00NSw2ICs0NCwxNiBAQAogICAgICAgICBzZWxmLnNhbWVfaGFzaChpbnQoMS4yM2UzMDApLCBmbG9hdCgxLjIzZTMwMCkpCiAgICAgICAgIHNlbGYuc2FtZV9oYXNoKGZsb2F0KDAuNSksIGNvbXBsZXgoMC41LCAwLjApKQogCisgICAgZGVmIHRlc3RfdW5hbGlnbmVkX2J1ZmZlcnMoc2VsZik6CisgICAgICAgICMgVGhlIGhhc2ggZnVuY3Rpb24gZm9yIGJ5dGVzLWxpa2Ugb2JqZWN0cyBzaG91bGRuJ3QgaGF2ZQorICAgICAgICAjIGFsaWdubWVudC1kZXBlbmRlbnQgcmVzdWx0cyAoZXhhbXBsZSBpbiBpc3N1ZSAjMTY0MjcpLgorICAgICAgICBiID0gYiIxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIgKiAxMjgKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTYpOgorICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UoMTYpOgorICAgICAgICAgICAgICAgIGFsaWduZWQgPSBiW2k6MTI4K2pdCisgICAgICAgICAgICAgICAgdW5hbGlnbmVkID0gbWVtb3J5dmlldyhiKVtpOjEyOCtqXQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChhbGlnbmVkKSwgaGFzaCh1bmFsaWduZWQpKQorCiAKIF9kZWZhdWx0X2hhc2ggPSBvYmplY3QuX19oYXNoX18KIGNsYXNzIERlZmF1bHRIYXNoKG9iamVjdCk6IHBhc3MKQEAgLTExMyw4ICsxMjIsNyBAQAogICAgICAgICByZXR1cm4gc2VsZi5zZXFbaW5kZXhdCiAKIGNsYXNzIEhhc2hCdWlsdGluc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBoYXNoZXNfdG9fY2hlY2sgPSBbcmFuZ2UoMTApLAotICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhdGUocmFuZ2UoMTApKSwKKyAgICBoYXNoZXNfdG9fY2hlY2sgPSBbZW51bWVyYXRlKHJhbmdlKDEwKSksCiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXIoRGVmYXVsdEl0ZXJTZXEoKSksCiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXIobGFtYmRhOiAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICBdCkBAIC0xMjQsNyArMTMyLDcgQEAKICAgICAgICAgZm9yIG9iaiBpbiBzZWxmLmhhc2hlc190b19jaGVjazoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChvYmopLCBfZGVmYXVsdF9oYXNoKG9iaikpCiAKLWNsYXNzIEhhc2hSYW5kb21pemF0aW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgSGFzaFJhbmRvbWl6YXRpb25UZXN0czoKIAogICAgICMgRWFjaCBzdWJjbGFzcyBzaG91bGQgZGVmaW5lIGEgZmllbGQgInJlcHJfIiwgY29udGFpbmluZyB0aGUgcmVwcigpIG9mCiAgICAgIyBhbiBvYmplY3QgdG8gYmUgdGVzdGVkCkBAIC0xNjAsOCArMTY4LDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGtub3duX2hhc2hfb2Zfb2JqID0gLTE2MDA5MjU1MzMKIAotICAgICAgICAjIFJhbmRvbWl6YXRpb24gaXMgZGlzYWJsZWQgYnkgZGVmYXVsdDoKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldF9oYXNoKHNlbGYucmVwcl8pLCBrbm93bl9oYXNoX29mX29iaikKKyAgICAgICAgIyBSYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdDoKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzZWxmLmdldF9oYXNoKHNlbGYucmVwcl8pLCBrbm93bl9oYXNoX29mX29iaikKIAogICAgICAgICAjIEl0IGNhbiBhbHNvIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIHNlZWQgdG8gMDoKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldF9oYXNoKHNlbGYucmVwcl8sIHNlZWQ9MCksIGtub3duX2hhc2hfb2Zfb2JqKQpAQCAtMTgxLDQyICsxODksNDAgQEAKICAgICAgICAgICAgICAgICBoID0gLTEwMjQwMTQ0NTcKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldF9oYXNoKHNlbGYucmVwcl8sIHNlZWQ9NDIpLCBoKQogCi1jbGFzcyBTdHJIYXNoUmFuZG9taXphdGlvblRlc3RzKFN0cmluZ2xpa2VIYXNoUmFuZG9taXphdGlvblRlc3RzKToKK2NsYXNzIFN0ckhhc2hSYW5kb21pemF0aW9uVGVzdHMoU3RyaW5nbGlrZUhhc2hSYW5kb21pemF0aW9uVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICByZXByXyA9IHJlcHIoJ2FiYycpCiAKICAgICBkZWYgdGVzdF9lbXB0eV9zdHJpbmcoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaCgiIiksIDApCiAKLWNsYXNzIEJ5dGVzSGFzaFJhbmRvbWl6YXRpb25UZXN0cyhTdHJpbmdsaWtlSGFzaFJhbmRvbWl6YXRpb25UZXN0cyk6CitjbGFzcyBCeXRlc0hhc2hSYW5kb21pemF0aW9uVGVzdHMoU3RyaW5nbGlrZUhhc2hSYW5kb21pemF0aW9uVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHJlcHJfID0gcmVwcihiJ2FiYycpCiAKICAgICBkZWYgdGVzdF9lbXB0eV9zdHJpbmcoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChiIiIpLCAwKQogCitjbGFzcyBNZW1vcnl2aWV3SGFzaFJhbmRvbWl6YXRpb25UZXN0cyhTdHJpbmdsaWtlSGFzaFJhbmRvbWl6YXRpb25UZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICByZXByXyA9ICJtZW1vcnl2aWV3KGInYWJjJykiCisKKyAgICBkZWYgdGVzdF9lbXB0eV9zdHJpbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtZW1vcnl2aWV3KGIiIikpLCAwKQorCiBjbGFzcyBEYXRldGltZVRlc3RzKEhhc2hSYW5kb21pemF0aW9uVGVzdHMpOgogICAgIGRlZiBnZXRfaGFzaF9jb21tYW5kKHNlbGYsIHJlcHJfKToKICAgICAgICAgcmV0dXJuICdpbXBvcnQgZGF0ZXRpbWU7IHByaW50KGhhc2goJXMpKScgJSByZXByXwogCi1jbGFzcyBEYXRldGltZURhdGVUZXN0cyhEYXRldGltZVRlc3RzKToKK2NsYXNzIERhdGV0aW1lRGF0ZVRlc3RzKERhdGV0aW1lVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICByZXByXyA9IHJlcHIoZGF0ZXRpbWUuZGF0ZSgxMDY2LCAxMCwgMTQpKQogCi1jbGFzcyBEYXRldGltZURhdGV0aW1lVGVzdHMoRGF0ZXRpbWVUZXN0cyk6CitjbGFzcyBEYXRldGltZURhdGV0aW1lVGVzdHMoRGF0ZXRpbWVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHJlcHJfID0gcmVwcihkYXRldGltZS5kYXRldGltZSgxLCAyLCAzLCA0LCA1LCA2LCA3KSkKIAotY2xhc3MgRGF0ZXRpbWVUaW1lVGVzdHMoRGF0ZXRpbWVUZXN0cyk6CitjbGFzcyBEYXRldGltZVRpbWVUZXN0cyhEYXRldGltZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgcmVwcl8gPSByZXByKGRhdGV0aW1lLnRpbWUoMCkpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEhhc2hFcXVhbGl0eVRlc3RDYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2hJbmhlcml0YW5jZVRlc3RDYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2hCdWlsdGluc1Rlc3RDYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgIFN0ckhhc2hSYW5kb21pemF0aW9uVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgQnl0ZXNIYXNoUmFuZG9taXphdGlvblRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgIERhdGV0aW1lRGF0ZVRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgIERhdGV0aW1lRGF0ZXRpbWVUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICBEYXRldGltZVRpbWVUZXN0cykKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkKaW5kZXggMjlkM2ExYy4uMzJmODVlOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaGFzaGxpYi5weQpAQCAtOSw2ICs5LDcgQEAKIGltcG9ydCBhcnJheQogaW1wb3J0IGhhc2hsaWIKIGltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCBvcwogaW1wb3J0IHN5cwogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKQEAgLTM3LDcgKzM4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYTIyNCcsICdTSEEyMjQnLCAnc2hhMjU2JywgJ1NIQTI1NicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEzODQnLCAnU0hBMzg0JywgJ3NoYTUxMicsICdTSEE1MTInICkKIAotICAgIF93YXJuX29uX2V4dGVuc2lvbl9pbXBvcnQgPSBDT01QSUxFRF9XSVRIX1BZREVCVUcKKyAgICAjIElzc3VlICMxNDY5MzogZmFsbGJhY2sgbW9kdWxlcyBhcmUgYWx3YXlzIGNvbXBpbGVkIHVuZGVyIFBPU0lYCisgICAgX3dhcm5fb25fZXh0ZW5zaW9uX2ltcG9ydCA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBvciBDT01QSUxFRF9XSVRIX1BZREVCVUcKIAogICAgIGRlZiBfY29uZGl0aW9uYWxfaW1wb3J0X21vZHVsZShzZWxmLCBtb2R1bGVfbmFtZSk6CiAgICAgICAgICIiIkltcG9ydCBhIG1vZHVsZSBhbmQgcmV0dXJuIGEgcmVmZXJlbmNlIHRvIGl0IG9yIE5vbmUgb24gZmFpbHVyZS4iIiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaGVhcHEucHkgYi9MaWIvdGVzdC90ZXN0X2hlYXBxLnB5CmluZGV4IDIwZmI4OWMuLmI0OGNhNjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaGVhcHEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9oZWFwcS5weQpAQCAtMiw2ICsyLDcgQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IHJhbmRvbQoraW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UsIHNraXBVbmxlc3MKQEAgLTI1LDggKzI2LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihjX2hlYXBxLCBmbmFtZSkuX19tb2R1bGVfXywgJ19oZWFwcScpCiAKIAotY2xhc3MgVGVzdEhlYXAoVGVzdENhc2UpOgotICAgIG1vZHVsZSA9IE5vbmUKK2NsYXNzIFRlc3RIZWFwOgogCiAgICAgZGVmIHRlc3RfcHVzaF9wb3Aoc2VsZik6CiAgICAgICAgICMgMSkgUHVzaCAyNTYgcmFuZG9tIG51bWJlcnMgYW5kIHBvcCB0aGVtIG9mZiwgdmVyaWZ5aW5nIGFsbCdzIE9LLgpAQCAtMjE0LDEyICsyMTQsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkYXRhLCBMRSkKIAogCi1jbGFzcyBUZXN0SGVhcFB5dGhvbihUZXN0SGVhcCk6CitjbGFzcyBUZXN0SGVhcFB5dGhvbihUZXN0SGVhcCwgVGVzdENhc2UpOgogICAgIG1vZHVsZSA9IHB5X2hlYXBxCiAKIAogQHNraXBVbmxlc3MoY19oZWFwcSwgJ3JlcXVpcmVzIF9oZWFwcScpCi1jbGFzcyBUZXN0SGVhcEMoVGVzdEhlYXApOgorY2xhc3MgVGVzdEhlYXBDKFRlc3RIZWFwLCBUZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gY19oZWFwcQogCiAKQEAgLTMyOSw4ICszMjksNyBAQAogICAgICAgICByZXR1cm4gc2VsZi52YWx1ZSA8IG90aGVyLnZhbHVlCiAKIAotY2xhc3MgVGVzdEVycm9ySGFuZGxpbmcoVGVzdENhc2UpOgotICAgIG1vZHVsZSA9IE5vbmUKK2NsYXNzIFRlc3RFcnJvckhhbmRsaW5nOgogCiAgICAgZGVmIHRlc3Rfbm9uX3NlcXVlbmNlKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoc2VsZi5tb2R1bGUuaGVhcGlmeSwgc2VsZi5tb2R1bGUuaGVhcHBvcCk6CkBAIC0zOTcsMzEgKzM5NiwxMyBAQAogICAgICAgICAgICAgc2VsZi5tb2R1bGUuaGVhcHBvcChoZWFwKQogCiAKLWNsYXNzIFRlc3RFcnJvckhhbmRsaW5nUHl0aG9uKFRlc3RFcnJvckhhbmRsaW5nKToKK2NsYXNzIFRlc3RFcnJvckhhbmRsaW5nUHl0aG9uKFRlc3RFcnJvckhhbmRsaW5nLCBUZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gcHlfaGVhcHEKIAogQHNraXBVbmxlc3MoY19oZWFwcSwgJ3JlcXVpcmVzIF9oZWFwcScpCi1jbGFzcyBUZXN0RXJyb3JIYW5kbGluZ0MoVGVzdEVycm9ySGFuZGxpbmcpOgorY2xhc3MgVGVzdEVycm9ySGFuZGxpbmdDKFRlc3RFcnJvckhhbmRsaW5nLCBUZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gY19oZWFwcQogCiAKLSM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotCi1kZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgdGVzdF9jbGFzc2VzID0gW1Rlc3RNb2R1bGVzLCBUZXN0SGVhcFB5dGhvbiwgVGVzdEhlYXBDLAotICAgICAgICAgICAgICAgICAgICBUZXN0RXJyb3JIYW5kbGluZ1B5dGhvbiwgVGVzdEVycm9ySGFuZGxpbmdDXQotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCi0KLSAgICAjIHZlcmlmeSByZWZlcmVuY2UgY291bnRpbmcKLSAgICBpZiB2ZXJib3NlIGFuZCBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKLSAgICAgICAgaW1wb3J0IGdjCi0gICAgICAgIGNvdW50cyA9IFtOb25lXSAqIDUKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGNvdW50cykpOgotICAgICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKLSAgICAgICAgICAgIGdjLmNvbGxlY3QoKQotICAgICAgICAgICAgY291bnRzW2ldID0gc3lzLmdldHRvdGFscmVmY291bnQoKQotICAgICAgICBwcmludChjb3VudHMpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKHZlcmJvc2U9VHJ1ZSkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaG1hYy5weSBiL0xpYi90ZXN0L3Rlc3RfaG1hYy5weQppbmRleCA0ZGUwNjIwLi40Y2E3Y2VjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2htYWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9obWFjLnB5CkBAIC0yMzQsNiArMjM0LDE4IEBACiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuZmFpbCgiU3RhbmRhcmQgY29uc3RydWN0b3IgY2FsbCByYWlzZWQgZXhjZXB0aW9uLiIpCiAKKyAgICBkZWYgdGVzdF93aXRoX3N0cl9rZXkoc2VsZik6CisgICAgICAgICMgUGFzcyBhIGtleSBvZiB0eXBlIHN0ciwgd2hpY2ggaXMgYW4gZXJyb3IsIGJlY2F1c2UgaXQgZXhwZWN0cyBhIGtleQorICAgICAgICAjIG9mIHR5cGUgYnl0ZXMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaCA9IGhtYWMuSE1BQygia2V5IikKKworICAgIGRlZiB0ZXN0X2RvdF9uZXdfd2l0aF9zdHJfa2V5KHNlbGYpOgorICAgICAgICAjIFBhc3MgYSBrZXkgb2YgdHlwZSBzdHIsIHdoaWNoIGlzIGFuIGVycm9yLCBiZWNhdXNlIGl0IGV4cGVjdHMgYSBrZXkKKyAgICAgICAgIyBvZiB0eXBlIGJ5dGVzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGggPSBobWFjLm5ldygia2V5IikKKwogICAgIGRlZiB0ZXN0X3dpdGh0ZXh0KHNlbGYpOgogICAgICAgICAjIENvbnN0cnVjdG9yIGNhbGwgd2l0aCB0ZXh0LgogICAgICAgICB0cnk6CkBAIC0zMDIsMTIgKzMxNCwxMjEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoMS5oZXhkaWdlc3QoKSwgaDIuaGV4ZGlnZXN0KCksCiAgICAgICAgICAgICAiSGV4ZGlnZXN0IG9mIGNvcHkgZG9lc24ndCBtYXRjaCBvcmlnaW5hbCBoZXhkaWdlc3QuIikKIAorY2xhc3MgQ29tcGFyZURpZ2VzdFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2NvbXBhcmVfZGlnZXN0KHNlbGYpOgorICAgICAgICAjIFRlc3RpbmcgaW5wdXQgdHlwZSBleGNlcHRpb24gaGFuZGxpbmcKKyAgICAgICAgYSwgYiA9IDEwMCwgMjAwCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKyAgICAgICAgYSwgYiA9IDEwMCwgYiJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKyAgICAgICAgYSwgYiA9IGIiZm9vYmFyIiwgMjAwCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKyAgICAgICAgYSwgYiA9ICJmb29iYXIiLCBiImZvb2JhciIKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBobWFjLmNvbXBhcmVfZGlnZXN0LCBhLCBiKQorICAgICAgICBhLCBiID0gYiJmb29iYXIiLCAiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGVzIG9mIGRpZmZlcmVudCBsZW5ndGhzCisgICAgICAgIGEsIGIgPSBiImZvb2JhciIsIGIiZm9vIgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgIGEsIGIgPSBiIlx4ZGVceGFkXHhiZVx4ZWYiLCBiIlx4ZGVceGFkIgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGVzIG9mIHNhbWUgbGVuZ3RocywgZGlmZmVyZW50IHZhbHVlcworICAgICAgICBhLCBiID0gYiJmb29iYXIiLCBiImZvb2JheiIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBhLCBiID0gYiJceGRlXHhhZFx4YmVceGVmIiwgYiJceGFiXHhhZFx4MWRceGVhIgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGVzIG9mIHNhbWUgbGVuZ3Rocywgc2FtZSB2YWx1ZXMKKyAgICAgICAgYSwgYiA9IGIiZm9vYmFyIiwgYiJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBhLCBiID0gYiJceGRlXHhhZFx4YmVceGVmIiwgYiJceGRlXHhhZFx4YmVceGVmIgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKworICAgICAgICAjIFRlc3RpbmcgYnl0ZWFycmF5cyBvZiBzYW1lIGxlbmd0aHMsIHNhbWUgdmFsdWVzCisgICAgICAgIGEsIGIgPSBieXRlYXJyYXkoYiJmb29iYXIiKSwgYnl0ZWFycmF5KGIiZm9vYmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGVhcnJheXMgb2YgZGlmZmVlbnQgbGVuZ3RocworICAgICAgICBhLCBiID0gYnl0ZWFycmF5KGIiZm9vYmFyIiksIGJ5dGVhcnJheShiImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKworICAgICAgICAjIFRlc3RpbmcgYnl0ZWFycmF5cyBvZiBzYW1lIGxlbmd0aHMsIGRpZmZlcmVudCB2YWx1ZXMKKyAgICAgICAgYSwgYiA9IGJ5dGVhcnJheShiImZvb2JhciIpLCBieXRlYXJyYXkoYiJmb29iYXoiKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGUgYW5kIGJ5dGVhcnJheSBvZiBzYW1lIGxlbmd0aHMsIHNhbWUgdmFsdWVzCisgICAgICAgIGEsIGIgPSBieXRlYXJyYXkoYiJmb29iYXIiKSwgYiJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG1hYy5jb21wYXJlX2RpZ2VzdChiLCBhKSkKKworICAgICAgICAjIFRlc3RpbmcgYnl0ZSBieXRlYXJyYXkgb2YgZGlmZmVlbnQgbGVuZ3RocworICAgICAgICBhLCBiID0gYnl0ZWFycmF5KGIiZm9vYmFyIiksIGIiZm9vIgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChiLCBhKSkKKworICAgICAgICAjIFRlc3RpbmcgYnl0ZSBhbmQgYnl0ZWFycmF5IG9mIHNhbWUgbGVuZ3RocywgZGlmZmVyZW50IHZhbHVlcworICAgICAgICBhLCBiID0gYnl0ZWFycmF5KGIiZm9vYmFyIiksIGIiZm9vYmF6IgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChiLCBhKSkKKworICAgICAgICAjIFRlc3Rpbmcgc3RyIG9mIHNhbWUgbGVuZ3RocworICAgICAgICBhLCBiID0gImZvb2JhciIsICJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisgICAgICAgICMgVGVzdGluZyBzdHIgb2YgZGlmZmVlbnQgbGVuZ3RocworICAgICAgICBhLCBiID0gImZvbyIsICJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKworICAgICAgICAjIFRlc3RpbmcgYnl0ZXMgb2Ygc2FtZSBsZW5ndGhzLCBkaWZmZXJlbnQgdmFsdWVzCisgICAgICAgIGEsIGIgPSAiZm9vYmFyIiwgImZvb2JheiIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisgICAgICAgICMgVGVzdGluZyBlcnJvciBjYXNlcworICAgICAgICBhLCBiID0gImZvb2JhciIsIGIiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIGEsIGIgPSBiImZvb2JhciIsICJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKyAgICAgICAgYSwgYiA9IGIiZm9vYmFyIiwgMQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIGEsIGIgPSAxMDAsIDIwMAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIGEsIGIgPSAiZm9vw6QiLCAiZm9vw6QiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKworICAgICAgICAjIHN1YmNsYXNzZXMgYXJlIHN1cHBvcnRlZCBieSBpZ25vcmUgX19lcV9fCisgICAgICAgIGNsYXNzIG15c3RyKHN0cik6CisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBhLCBiID0gbXlzdHIoImZvb2JhciIpLCBteXN0cigiZm9vYmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgIGEsIGIgPSBteXN0cigiZm9vYmFyIiksICJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBhLCBiID0gbXlzdHIoImZvb2JhciIpLCBteXN0cigiZm9vYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisgICAgICAgIGNsYXNzIG15Ynl0ZXMoYnl0ZXMpOgorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgYSwgYiA9IG15Ynl0ZXMoYiJmb29iYXIiKSwgbXlieXRlcyhiImZvb2JhciIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBhLCBiID0gbXlieXRlcyhiImZvb2JhciIpLCBiImZvb2JhciIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgIGEsIGIgPSBteWJ5dGVzKGIiZm9vYmFyIiksIG15Ynl0ZXMoYiJmb29iYXoiKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAogICAgICAgICBUZXN0VmVjdG9yc1Rlc3RDYXNlLAogICAgICAgICBDb25zdHJ1Y3RvclRlc3RDYXNlLAogICAgICAgICBTYW5pdHlUZXN0Q2FzZSwKLSAgICAgICAgQ29weVRlc3RDYXNlCisgICAgICAgIENvcHlUZXN0Q2FzZSwKKyAgICAgICAgQ29tcGFyZURpZ2VzdFRlc3RDYXNlCiAgICAgKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5CmluZGV4IGM0ZjgwY2MuLmM1ZDg3OGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkKQEAgLTEwMiw3ICsxMDIsOCBAQAogY2xhc3MgSFRNTFBhcnNlclN0cmljdFRlc3RDYXNlKFRlc3RDYXNlQmFzZSk6CiAKICAgICBkZWYgZ2V0X2NvbGxlY3RvcihzZWxmKToKLSAgICAgICAgcmV0dXJuIEV2ZW50Q29sbGVjdG9yKHN0cmljdD1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCIiLCBEZXByZWNhdGlvbldhcm5pbmcpLCBxdWl0ZT1GYWxzZSk6CisgICAgICAgICAgICByZXR1cm4gRXZlbnRDb2xsZWN0b3Ioc3RyaWN0PVRydWUpCiAKICAgICBkZWYgdGVzdF9wcm9jZXNzaW5nX2luc3RydWN0aW9uX29ubHkoc2VsZik6CiAgICAgICAgIHNlbGYuX3J1bl9jaGVjaygiPD9wcm9jZXNzaW5nIGluc3RydWN0aW9uPiIsIFsKQEAgLTQ1NSw3ICs0NTYsNyBAQAogICAgICAgICBzZWxmLl9ydW5fY2hlY2soJzxmb3JtIGFjdGlvbj0iL3h4eC5waHA/YT0xJmFtcDtiPTImYW1wIiwgJwogICAgICAgICAgICAgICAgICAgICAgICAgJ21ldGhvZD0icG9zdCI+JywgWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnc3RhcnR0YWcnLCAnZm9ybScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2FjdGlvbicsICcveHh4LnBocD9hPTEmYj0yJmFtcCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdhY3Rpb24nLCAnL3h4eC5waHA/YT0xJmI9MiYnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnLCcsIE5vbmUpLCAoJ21ldGhvZCcsICdwb3N0JyldKV0pCiAKICAgICBkZWYgdGVzdF93ZWlyZF9jaGFyc19pbl91bnF1b3RlZF9hdHRyaWJ1dGVfdmFsdWVzKHNlbGYpOgpAQCAtNTQwLDYgKzU0MSwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAudW5lc2NhcGUoJyYjMDAzODsnKSwnJicpCiAgICAgICAgICMgc2VlICMxMjg4OAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAudW5lc2NhcGUoJyYjMTIzOyAnICogMTA1MCksICd7ICcgKiAxMDUwKQorICAgICAgICAjIHNlZSAjMTUxNTYKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnVuZXNjYXBlKCcmRWFjdXRlcmljJkVhY3V0ZTtyaWMnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJmFscGhhY2VudGF1cmkmYWxwaGE7Y2VudGF1cmknKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICfDiXJpY8OJcmljJmFscGhhY2VudGF1cmnOsWNlbnRhdXJpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnVuZXNjYXBlKCcmY287JyksICcmY287JykKIAogICAgIGRlZiB0ZXN0X2Jyb2tlbl9jb21tZW50cyhzZWxmKToKICAgICAgICAgaHRtbCA9ICgnPCEgbm90IHJlYWxseSBhIGNvbW1lbnQgPicKQEAgLTU5NCw3ICs2MDAsOCBAQAogY2xhc3MgQXR0cmlidXRlc1N0cmljdFRlc3RDYXNlKFRlc3RDYXNlQmFzZSk6CiAKICAgICBkZWYgZ2V0X2NvbGxlY3RvcihzZWxmKToKLSAgICAgICAgcmV0dXJuIEV2ZW50Q29sbGVjdG9yKHN0cmljdD1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCIiLCBEZXByZWNhdGlvbldhcm5pbmcpLCBxdWl0ZT1GYWxzZSk6CisgICAgICAgICAgICByZXR1cm4gRXZlbnRDb2xsZWN0b3Ioc3RyaWN0PVRydWUpCiAKICAgICBkZWYgdGVzdF9hdHRyX3N5bnRheChzZWxmKToKICAgICAgICAgb3V0cHV0ID0gWwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZWphci5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVqYXIucHkKaW5kZXggNDFlMGRmZC4uYTM1ZWM5NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZWphci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llamFyLnB5CkBAIC0yNDgsMTggKzI0OCwxOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX2Nvb2tpZXNbInd3dy5hY21lLmNvbSJdWyIvIl1bImJvbyJdLnZhbHVlLCBOb25lKQogCiAgICAgZGVmIHRlc3RfYmFkX21hZ2ljKHNlbGYpOgotICAgICAgICAjIElPRXJyb3JzIChlZy4gZmlsZSBkb2Vzbid0IGV4aXN0KSBhcmUgYWxsb3dlZCB0byBwcm9wYWdhdGUKKyAgICAgICAgIyBPU0Vycm9ycyAoZWcuIGZpbGUgZG9lc24ndCBleGlzdCkgYXJlIGFsbG93ZWQgdG8gcHJvcGFnYXRlCiAgICAgICAgIGZpbGVuYW1lID0gdGVzdC5zdXBwb3J0LlRFU1RGTgogICAgICAgICBmb3IgY29va2llamFyX2NsYXNzIGluIExXUENvb2tpZUphciwgTW96aWxsYUNvb2tpZUphcjoKICAgICAgICAgICAgIGMgPSBjb29raWVqYXJfY2xhc3MoKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGMubG9hZChmaWxlbmFtZT0iZm9yIHRoaXMgdGVzdCB0byB3b3JrLCBhIGZpbGUgd2l0aCB0aGlzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGVuYW1lIHNob3VsZCBub3QgZXhpc3QiKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgICAgICMgZXhhY3RseSBJT0Vycm9yLCBub3QgTG9hZEVycm9yCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhleGMuX19jbGFzc19fLCBJT0Vycm9yKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgICMgYW4gT1NFcnJvciBzdWJjbGFzcyAobGlrZWx5IEZpbGVOb3RGb3VuZEVycm9yKSwgYnV0IG5vdAorICAgICAgICAgICAgICAgICMgTG9hZEVycm9yCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChleGMuX19jbGFzc19fLCBMb2FkRXJyb3IpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiZXhwZWN0ZWQgSU9FcnJvciBmb3IgaW52YWxpZCBmaWxlbmFtZSIpCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJleHBlY3RlZCBPU0Vycm9yIGZvciBpbnZhbGlkIGZpbGVuYW1lIikKICAgICAgICAgIyBJbnZhbGlkIGNvbnRlbnRzIG9mIGNvb2tpZXMgZmlsZSAoZWcuIGJhZCBtYWdpYyBzdHJpbmcpCiAgICAgICAgICMgY2F1c2VzIGEgTG9hZEVycm9yLgogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llcy5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVzLnB5CmluZGV4IDFmMWNhNTguLmU4MzI3ZTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVzLnB5CkBAIC0zNCw2ICszNCwxNSBAQAogICAgICAgICAgICAgICdkaWN0JzogeydrZWVibGVyJyA6ICdFPW1jMid9LAogICAgICAgICAgICAgICdyZXByJzogIjxTaW1wbGVDb29raWU6IGtlZWJsZXI9J0U9bWMyJz4iLAogICAgICAgICAgICAgICdvdXRwdXQnOiAnU2V0LUNvb2tpZToga2VlYmxlcj1FPW1jMid9LAorCisgICAgICAgICAgICAjIENvb2tpZXMgd2l0aCAnOicgY2hhcmFjdGVyIGluIHRoZWlyIG5hbWUuIFRob3VnaCBub3QgbWVudGlvbmVkIGluCisgICAgICAgICAgICAjIFJGQywgc2VydmVycyAvIGJyb3dzZXJzIGFsbG93IGl0LgorCisgICAgICAgICAgICAgeydkYXRhJzogJ2tleTp0ZXJtPXZhbHVlOnRlcm0nLAorICAgICAgICAgICAgICdkaWN0JzogeydrZXk6dGVybScgOiAndmFsdWU6dGVybSd9LAorICAgICAgICAgICAgICdyZXByJzogIjxTaW1wbGVDb29raWU6IGtleTp0ZXJtPSd2YWx1ZTp0ZXJtJz4iLAorICAgICAgICAgICAgICdvdXRwdXQnOiAnU2V0LUNvb2tpZToga2V5OnRlcm09dmFsdWU6dGVybSd9LAorCiAgICAgICAgIF0KIAogICAgICAgICBmb3IgY2FzZSBpbiBjYXNlczoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weQppbmRleCA0MjAzMDJjLi5kYjEyM2RjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5CkBAIC0xOTIsNiArMTkyLDI2IEBACiAgICAgICAgIHJlc3AuY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcC5jbG9zZWQpCiAKKyAgICBkZWYgdGVzdF9wYXJ0aWFsX3JlYWRpbnRvcyhzZWxmKToKKyAgICAgICAgIyBpZiB3ZSBoYXZlIGEgbGVuZ3RoLCB0aGUgc3lzdGVtIGtub3dzIHdoZW4gdG8gY2xvc2UgaXRzZWxmCisgICAgICAgICMgc2FtZSBiZWhhdmlvdXIgdGhhbiB3aGVuIHdlIHJlYWQgdGhlIHdob2xlIHRoaW5nIHdpdGggcmVhZCgpCisgICAgICAgIGJvZHkgPSAiSFRUUC8xLjEgMjAwIE9rXHJcbkNvbnRlbnQtTGVuZ3RoOiA0XHJcblxyXG5UZXh0IgorICAgICAgICBzb2NrID0gRmFrZVNvY2tldChib2R5KQorICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrKQorICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgYiA9IGJ5dGVhcnJheSgyKQorICAgICAgICBuID0gcmVzcC5yZWFkaW50byhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoYiksIGInVGUnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlc3AuaXNjbG9zZWQoKSkKKyAgICAgICAgbiA9IHJlc3AucmVhZGludG8oYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGIpLCBiJ3h0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3AuaXNjbG9zZWQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZXNwLmNsb3NlZCkKKyAgICAgICAgcmVzcC5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwLmNsb3NlZCkKKwogICAgIGRlZiB0ZXN0X3BhcnRpYWxfcmVhZHNfbm9fY29udGVudF9sZW5ndGgoc2VsZik6CiAgICAgICAgICMgd2hlbiBubyBsZW5ndGggaXMgcHJlc2VudCwgdGhlIHNvY2tldCBzaG91bGQgYmUgZ3JhY2VmdWxseSBjbG9zZWQgd2hlbgogICAgICAgICAjIGFsbCBkYXRhIHdhcyByZWFkCkBAIC0yMDgsNiArMjI4LDI1IEBACiAgICAgICAgIHJlc3AuY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcC5jbG9zZWQpCiAKKyAgICBkZWYgdGVzdF9wYXJ0aWFsX3JlYWRpbnRvc19ub19jb250ZW50X2xlbmd0aChzZWxmKToKKyAgICAgICAgIyB3aGVuIG5vIGxlbmd0aCBpcyBwcmVzZW50LCB0aGUgc29ja2V0IHNob3VsZCBiZSBncmFjZWZ1bGx5IGNsb3NlZCB3aGVuCisgICAgICAgICMgYWxsIGRhdGEgd2FzIHJlYWQKKyAgICAgICAgYm9keSA9ICJIVFRQLzEuMSAyMDAgT2tcclxuXHJcblRleHQiCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGJvZHkpCisgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2spCisgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICBiID0gYnl0ZWFycmF5KDIpCisgICAgICAgIG4gPSByZXNwLnJlYWRpbnRvKGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhiKSwgYidUZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVzcC5pc2Nsb3NlZCgpKQorICAgICAgICBuID0gcmVzcC5yZWFkaW50byhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoYiksIGIneHQnKQorICAgICAgICBuID0gcmVzcC5yZWFkaW50byhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwLmlzY2xvc2VkKCkpCisKICAgICBkZWYgdGVzdF9wYXJ0aWFsX3JlYWRzX2luY29tcGxldGVfYm9keShzZWxmKToKICAgICAgICAgIyBpZiB0aGUgc2VydmVyIHNodXRzIGRvd24gdGhlIGNvbm5lY3Rpb24gYmVmb3JlIHRoZSB3aG9sZQogICAgICAgICAjIGNvbnRlbnQtbGVuZ3RoIGlzIGRlbGl2ZXJlZCwgdGhlIHNvY2tldCBpcyBncmFjZWZ1bGx5IGNsb3NlZApAQCAtMjIwLDYgKzI1OSwyNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgyKSwgYid4dCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKDEpLCBiJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwLmlzY2xvc2VkKCkpCisKKyAgICBkZWYgdGVzdF9wYXJ0aWFsX3JlYWRpbnRvc19pbmNvbXBsZXRlX2JvZHkoc2VsZik6CisgICAgICAgICMgaWYgdGhlIHNlcnZlciBzaHV0cyBkb3duIHRoZSBjb25uZWN0aW9uIGJlZm9yZSB0aGUgd2hvbGUKKyAgICAgICAgIyBjb250ZW50LWxlbmd0aCBpcyBkZWxpdmVyZWQsIHRoZSBzb2NrZXQgaXMgZ3JhY2VmdWxseSBjbG9zZWQKKyAgICAgICAgYm9keSA9ICJIVFRQLzEuMSAyMDAgT2tcclxuQ29udGVudC1MZW5ndGg6IDEwXHJcblxyXG5UZXh0IgorICAgICAgICBzb2NrID0gRmFrZVNvY2tldChib2R5KQorICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrKQorICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgYiA9IGJ5dGVhcnJheSgyKQorICAgICAgICBuID0gcmVzcC5yZWFkaW50byhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoYiksIGInVGUnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlc3AuaXNjbG9zZWQoKSkKKyAgICAgICAgbiA9IHJlc3AucmVhZGludG8oYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGIpLCBiJ3h0JykKKyAgICAgICAgbiA9IHJlc3AucmVhZGludG8oYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcC5pc2Nsb3NlZCgpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlc3AuY2xvc2VkKQogICAgICAgICByZXNwLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3AuY2xvc2VkKQpAQCAtMjcyLDYgKzMzMCwyMSBAQAogICAgICAgICBpZiByZXNwLnJlYWQoKToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiRGlkIG5vdCBleHBlY3QgcmVzcG9uc2UgZnJvbSBIRUFEIHJlcXVlc3QiKQogCisgICAgZGVmIHRlc3RfcmVhZGludG9faGVhZChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgdGhlIGxpYnJhcnkgZG9lc24ndCBhdHRlbXB0IHRvIHJlYWQgYW55IGRhdGEKKyAgICAgICAgIyBmcm9tIGEgSEVBRCByZXF1ZXN0LiAgKFRpY2tsZXMgU0YgYnVnICM2MjIwNDIuKQorICAgICAgICBzb2NrID0gRmFrZVNvY2tldCgKKyAgICAgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJworICAgICAgICAgICAgJ0NvbnRlbnQtTGVuZ3RoOiAxNDQzMlxyXG4nCisgICAgICAgICAgICAnXHJcbicsCisgICAgICAgICAgICBOb0VPRlN0cmluZ0lPKQorICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkhFQUQiKQorICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgYiA9IGJ5dGVhcnJheSg1KQorICAgICAgICBpZiByZXNwLnJlYWRpbnRvKGIpICE9IDA6CisgICAgICAgICAgICBzZWxmLmZhaWwoIkRpZCBub3QgZXhwZWN0IHJlc3BvbnNlIGZyb20gSEVBRCByZXF1ZXN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhiKSwgYidceDAwJyo1KQorCiAgICAgZGVmIHRlc3Rfc2VuZF9maWxlKHNlbGYpOgogICAgICAgICBleHBlY3RlZCA9IChiJ0dFVCAvZm9vIEhUVFAvMS4xXHJcbkhvc3Q6IGV4YW1wbGUuY29tXHJcbicKICAgICAgICAgICAgICAgICAgICAgYidBY2NlcHQtRW5jb2Rpbmc6IGlkZW50aXR5XHJcbkNvbnRlbnQtTGVuZ3RoOicpCkBAIC0zMjcsMTUgKzQwMCwyOCBAQAogICAgICAgICAgICAgJ1RyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXHJcblxyXG4nCiAgICAgICAgICAgICAnYVxyXG4nCiAgICAgICAgICAgICAnaGVsbG8gd29ybFxyXG4nCi0gICAgICAgICAgICAnMVxyXG4nCi0gICAgICAgICAgICAnZFxyXG4nCisgICAgICAgICAgICAnM1xyXG4nCisgICAgICAgICAgICAnZCEgXHJcbicKKyAgICAgICAgICAgICc4XHJcbicKKyAgICAgICAgICAgICdhbmQgbm93IFxyXG4nCisgICAgICAgICAgICAnMjJcclxuJworICAgICAgICAgICAgJ2ZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnRcclxuJwogICAgICAgICApCisgICAgICAgIGV4cGVjdGVkID0gYidoZWxsbyB3b3JsZCEgYW5kIG5vdyBmb3Igc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50JwogICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgJzBcclxuJykKICAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQogICAgICAgICByZXNwLmJlZ2luKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgYidoZWxsbyB3b3JsZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKCksIGV4cGVjdGVkKQogICAgICAgICByZXNwLmNsb3NlKCkKIAorICAgICAgICAjIFZhcmlvdXMgcmVhZCBzaXplcworICAgICAgICBmb3IgbiBpbiByYW5nZSgxLCAxMik6CisgICAgICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgJzBcclxuJykKKyAgICAgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKKyAgICAgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQobikgKyByZXNwLnJlYWQobikgKyByZXNwLnJlYWQoKSwgZXhwZWN0ZWQpCisgICAgICAgICAgICByZXNwLmNsb3NlKCkKKwogICAgICAgICBmb3IgeCBpbiAoJycsICdmb29cclxuJyk6CiAgICAgICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgeCkKICAgICAgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKQEAgLTM0Myw5ICs0MjksNjQgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXNwLnJlYWQoKQogICAgICAgICAgICAgZXhjZXB0IGNsaWVudC5JbmNvbXBsZXRlUmVhZCBhcyBpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaS5wYXJ0aWFsLCBiJ2hlbGxvIHdvcmxkJykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoaSksJ0luY29tcGxldGVSZWFkKDExIGJ5dGVzIHJlYWQpJykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihpKSwnSW5jb21wbGV0ZVJlYWQoMTEgYnl0ZXMgcmVhZCknKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaS5wYXJ0aWFsLCBleHBlY3RlZCkKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9tZXNzYWdlID0gJ0luY29tcGxldGVSZWFkKCVkIGJ5dGVzIHJlYWQpJyAlIGxlbihleHBlY3RlZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoaSksIGV4cGVjdGVkX21lc3NhZ2UpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaSksIGV4cGVjdGVkX21lc3NhZ2UpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnSW5jb21wbGV0ZVJlYWQgZXhwZWN0ZWQnKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICByZXNwLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X3JlYWRpbnRvX2NodW5rZWQoc2VsZik6CisgICAgICAgIGNodW5rZWRfc3RhcnQgPSAoCisgICAgICAgICAgICAnSFRUUC8xLjEgMjAwIE9LXHJcbicKKyAgICAgICAgICAgICdUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxyXG5cclxuJworICAgICAgICAgICAgJ2FcclxuJworICAgICAgICAgICAgJ2hlbGxvIHdvcmxcclxuJworICAgICAgICAgICAgJzNcclxuJworICAgICAgICAgICAgJ2QhIFxyXG4nCisgICAgICAgICAgICAnOFxyXG4nCisgICAgICAgICAgICAnYW5kIG5vdyBcclxuJworICAgICAgICAgICAgJzIyXHJcbicKKyAgICAgICAgICAgICdmb3Igc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50XHJcbicKKyAgICAgICAgKQorICAgICAgICBleHBlY3RlZCA9IGInaGVsbG8gd29ybGQhIGFuZCBub3cgZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudCcKKyAgICAgICAgbmV4cGVjdGVkID0gbGVuKGV4cGVjdGVkKQorICAgICAgICBiID0gYnl0ZWFycmF5KDEyOCkKKworICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgJzBcclxuJykKKyAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQorICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgbiA9IHJlc3AucmVhZGludG8oYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiWzpuZXhwZWN0ZWRdLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCBuZXhwZWN0ZWQpCisgICAgICAgIHJlc3AuY2xvc2UoKQorCisgICAgICAgICMgVmFyaW91cyByZWFkIHNpemVzCisgICAgICAgIGZvciBuIGluIHJhbmdlKDEsIDEyKToKKyAgICAgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyAnMFxyXG4nKQorICAgICAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQorICAgICAgICAgICAgcmVzcC5iZWdpbigpCisgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhiKQorICAgICAgICAgICAgaSA9IHJlc3AucmVhZGludG8obVswOm5dKQorICAgICAgICAgICAgaSArPSByZXNwLnJlYWRpbnRvKG1baTpuICsgaV0pCisgICAgICAgICAgICBpICs9IHJlc3AucmVhZGludG8obVtpOl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJbOm5leHBlY3RlZF0sIGV4cGVjdGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpLCBuZXhwZWN0ZWQpCisgICAgICAgICAgICByZXNwLmNsb3NlKCkKKworICAgICAgICBmb3IgeCBpbiAoJycsICdmb29cclxuJyk6CisgICAgICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgeCkKKyAgICAgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKKyAgICAgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG4gPSByZXNwLnJlYWRpbnRvKGIpCisgICAgICAgICAgICBleGNlcHQgY2xpZW50LkluY29tcGxldGVSZWFkIGFzIGk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpLnBhcnRpYWwsIGV4cGVjdGVkKQorICAgICAgICAgICAgICAgIGV4cGVjdGVkX21lc3NhZ2UgPSAnSW5jb21wbGV0ZVJlYWQoJWQgYnl0ZXMgcmVhZCknICUgbGVuKGV4cGVjdGVkKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihpKSwgZXhwZWN0ZWRfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihpKSwgZXhwZWN0ZWRfbWVzc2FnZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdJbmNvbXBsZXRlUmVhZCBleHBlY3RlZCcpCiAgICAgICAgICAgICBmaW5hbGx5OgpAQCAtMzcxLDYgKzUxMiwyOSBAQAogICAgICAgICByZXNwLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3AuY2xvc2VkKQogCisgICAgZGVmIHRlc3RfcmVhZGludG9fY2h1bmtlZF9oZWFkKHNlbGYpOgorICAgICAgICBjaHVua2VkX3N0YXJ0ID0gKAorICAgICAgICAgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG4nCisgICAgICAgICAgICAnVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuXHJcbicKKyAgICAgICAgICAgICdhXHJcbicKKyAgICAgICAgICAgICdoZWxsbyB3b3JsZFxyXG4nCisgICAgICAgICAgICAnMVxyXG4nCisgICAgICAgICAgICAnZFxyXG4nCisgICAgICAgICkKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArICcwXHJcbicpCisgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iSEVBRCIpCisgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICBiID0gYnl0ZWFycmF5KDUpCisgICAgICAgIG4gPSByZXNwLnJlYWRpbnRvKGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhiKSwgYidceDAwJyo1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Auc3RhdHVzLCAyMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFzb24sICdPSycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwLmlzY2xvc2VkKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVzcC5jbG9zZWQpCisgICAgICAgIHJlc3AuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcC5jbG9zZWQpCisKICAgICBkZWYgdGVzdF9uZWdhdGl2ZV9jb250ZW50X2xlbmd0aChzZWxmKToKICAgICAgICAgc29jayA9IEZha2VTb2NrZXQoCiAgICAgICAgICAgICAnSFRUUC8xLjEgMjAwIE9LXHJcbkNvbnRlbnQtTGVuZ3RoOiAtMVxyXG5cclxuSGVsbG9cclxuJykKQEAgLTU4OCw4ICs3NTIsNyBAQAogICAgIGRlZiB0ZXN0X2xvY2FsX2dvb2RfaG9zdG5hbWUoc2VsZik6CiAgICAgICAgICMgVGhlICh2YWxpZCkgY2VydCB2YWxpZGF0ZXMgdGhlIEhUVFAgaG9zdG5hbWUKICAgICAgICAgaW1wb3J0IHNzbAotICAgICAgICBmcm9tIHRlc3Quc3NsX3NlcnZlcnMgaW1wb3J0IG1ha2VfaHR0cHNfc2VydmVyCi0gICAgICAgIHNlcnZlciA9IG1ha2VfaHR0cHNfc2VydmVyKHNlbGYsIENFUlRfbG9jYWxob3N0KQorICAgICAgICBzZXJ2ZXIgPSBzZWxmLm1ha2Vfc2VydmVyKENFUlRfbG9jYWxob3N0KQogICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKICAgICAgICAgY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoQ0VSVF9sb2NhbGhvc3QpCkBAIC01OTcsMTIgKzc2MCwxMiBAQAogICAgICAgICBoLnJlcXVlc3QoJ0dFVCcsICcvbm9uZXhpc3RlbnQnKQogICAgICAgICByZXNwID0gaC5nZXRyZXNwb25zZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5zdGF0dXMsIDQwNCkKKyAgICAgICAgZGVsIHNlcnZlcgogCiAgICAgZGVmIHRlc3RfbG9jYWxfYmFkX2hvc3RuYW1lKHNlbGYpOgogICAgICAgICAjIFRoZSAodmFsaWQpIGNlcnQgZG9lc24ndCB2YWxpZGF0ZSB0aGUgSFRUUCBob3N0bmFtZQogICAgICAgICBpbXBvcnQgc3NsCi0gICAgICAgIGZyb20gdGVzdC5zc2xfc2VydmVycyBpbXBvcnQgbWFrZV9odHRwc19zZXJ2ZXIKLSAgICAgICAgc2VydmVyID0gbWFrZV9odHRwc19zZXJ2ZXIoc2VsZiwgQ0VSVF9mYWtlaG9zdG5hbWUpCisgICAgICAgIHNlcnZlciA9IHNlbGYubWFrZV9zZXJ2ZXIoQ0VSVF9mYWtlaG9zdG5hbWUpCiAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAogICAgICAgICBjb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJUX2Zha2Vob3N0bmFtZSkKQEAgLTYyMCw2ICs3ODMsNyBAQAogICAgICAgICBoLnJlcXVlc3QoJ0dFVCcsICcvbm9uZXhpc3RlbnQnKQogICAgICAgICByZXNwID0gaC5nZXRyZXNwb25zZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5zdGF0dXMsIDQwNCkKKyAgICAgICAgZGVsIHNlcnZlcgogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihjbGllbnQsICdIVFRQU0Nvbm5lY3Rpb24nKSwKICAgICAgICAgICAgICAgICAgICAgICdodHRwLmNsaWVudC5IVFRQU0Nvbm5lY3Rpb24gbm90IGF2YWlsYWJsZScpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5IGIvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weQppbmRleCBkNzFkYTFhLi4wM2MwNzc2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkKQEAgLTQ3MCw2ICs0NzAsMjMgQEAKICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQxNykKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKworY2xhc3MgQXVkaXRhYmxlQnl0ZXNJTzoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5kYXRhcyA9IFtdCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgIHNlbGYuZGF0YXMuYXBwZW5kKGRhdGEpCisKKyAgICBkZWYgZ2V0RGF0YShzZWxmKToKKyAgICAgICAgcmV0dXJuIGInJy5qb2luKHNlbGYuZGF0YXMpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbnVtV3JpdGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gbGVuKHNlbGYuZGF0YXMpCisKKwogY2xhc3MgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJUZXN0IHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBCYXNlSFRUUFNlcnZlci4KIApAQCAtNTM2LDI3ICs1NTMsNDkgQEAKICAgICAgICAgc2VsZi52ZXJpZnlfZ2V0X2NhbGxlZCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Wy0xXSwgYic8aHRtbD48Ym9keT5EYXRhPC9ib2R5PjwvaHRtbD5cclxuJykKIAotICAgIGRlZiB0ZXN0X2hlYWRlcl9idWZmZXJpbmcoc2VsZik6Ci0KLSAgICAgICAgZGVmIF9yZWFkQW5kUmVzZWVrKGYpOgotICAgICAgICAgICAgcG9zID0gZi50ZWxsKCkKLSAgICAgICAgICAgIGYuc2VlaygwKQotICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCi0gICAgICAgICAgICBmLnNlZWsocG9zKQotICAgICAgICAgICAgcmV0dXJuIGRhdGEKKyAgICBkZWYgdGVzdF9oZWFkZXJfYnVmZmVyaW5nX29mX3NlbmRfZXJyb3Ioc2VsZik6CiAKICAgICAgICAgaW5wdXQgPSBCeXRlc0lPKGInR0VUIC8gSFRUUC8xLjFcclxuXHJcbicpCi0gICAgICAgIG91dHB1dCA9IEJ5dGVzSU8oKQotICAgICAgICBzZWxmLmhhbmRsZXIucmZpbGUgPSBpbnB1dAotICAgICAgICBzZWxmLmhhbmRsZXIud2ZpbGUgPSBvdXRwdXQKLSAgICAgICAgc2VsZi5oYW5kbGVyLnJlcXVlc3RfdmVyc2lvbiA9ICdIVFRQLzEuMScKKyAgICAgICAgb3V0cHV0ID0gQXVkaXRhYmxlQnl0ZXNJTygpCisgICAgICAgIGhhbmRsZXIgPSBTb2NrZXRsZXNzUmVxdWVzdEhhbmRsZXIoKQorICAgICAgICBoYW5kbGVyLnJmaWxlID0gaW5wdXQKKyAgICAgICAgaGFuZGxlci53ZmlsZSA9IG91dHB1dAorICAgICAgICBoYW5kbGVyLnJlcXVlc3RfdmVyc2lvbiA9ICdIVFRQLzEuMScKKyAgICAgICAgaGFuZGxlci5yZXF1ZXN0bGluZSA9ICcnCisgICAgICAgIGhhbmRsZXIuY29tbWFuZCA9IE5vbmUKIAotICAgICAgICBzZWxmLmhhbmRsZXIuc2VuZF9oZWFkZXIoJ0ZvbycsICdmb28nKQotICAgICAgICBzZWxmLmhhbmRsZXIuc2VuZF9oZWFkZXIoJ2JhcicsICdiYXInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9yZWFkQW5kUmVzZWVrKG91dHB1dCksIGInJykKLSAgICAgICAgc2VsZi5oYW5kbGVyLmVuZF9oZWFkZXJzKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfcmVhZEFuZFJlc2VlayhvdXRwdXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInRm9vOiBmb29cclxuYmFyOiBiYXJcclxuXHJcbicpCisgICAgICAgIGhhbmRsZXIuc2VuZF9lcnJvcig0MTgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0Lm51bVdyaXRlcywgMikKKworICAgIGRlZiB0ZXN0X2hlYWRlcl9idWZmZXJpbmdfb2Zfc2VuZF9yZXNwb25zZV9vbmx5KHNlbGYpOgorCisgICAgICAgIGlucHV0ID0gQnl0ZXNJTyhiJ0dFVCAvIEhUVFAvMS4xXHJcblxyXG4nKQorICAgICAgICBvdXRwdXQgPSBBdWRpdGFibGVCeXRlc0lPKCkKKyAgICAgICAgaGFuZGxlciA9IFNvY2tldGxlc3NSZXF1ZXN0SGFuZGxlcigpCisgICAgICAgIGhhbmRsZXIucmZpbGUgPSBpbnB1dAorICAgICAgICBoYW5kbGVyLndmaWxlID0gb3V0cHV0CisgICAgICAgIGhhbmRsZXIucmVxdWVzdF92ZXJzaW9uID0gJ0hUVFAvMS4xJworCisgICAgICAgIGhhbmRsZXIuc2VuZF9yZXNwb25zZV9vbmx5KDQxOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQubnVtV3JpdGVzLCAwKQorICAgICAgICBoYW5kbGVyLmVuZF9oZWFkZXJzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQubnVtV3JpdGVzLCAxKQorCisgICAgZGVmIHRlc3RfaGVhZGVyX2J1ZmZlcmluZ19vZl9zZW5kX2hlYWRlcihzZWxmKToKKworICAgICAgICBpbnB1dCA9IEJ5dGVzSU8oYidHRVQgLyBIVFRQLzEuMVxyXG5cclxuJykKKyAgICAgICAgb3V0cHV0ID0gQXVkaXRhYmxlQnl0ZXNJTygpCisgICAgICAgIGhhbmRsZXIgPSBTb2NrZXRsZXNzUmVxdWVzdEhhbmRsZXIoKQorICAgICAgICBoYW5kbGVyLnJmaWxlID0gaW5wdXQKKyAgICAgICAgaGFuZGxlci53ZmlsZSA9IG91dHB1dAorICAgICAgICBoYW5kbGVyLnJlcXVlc3RfdmVyc2lvbiA9ICdIVFRQLzEuMScKKworICAgICAgICBoYW5kbGVyLnNlbmRfaGVhZGVyKCdGb28nLCAnZm9vJykKKyAgICAgICAgaGFuZGxlci5zZW5kX2hlYWRlcignYmFyJywgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0Lm51bVdyaXRlcywgMCkKKyAgICAgICAgaGFuZGxlci5lbmRfaGVhZGVycygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LmdldERhdGEoKSwgYidGb286IGZvb1xyXG5iYXI6IGJhclxyXG5cclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQubnVtV3JpdGVzLCAxKQogCiAgICAgZGVmIHRlc3RfaGVhZGVyX3VuYnVmZmVyZWRfd2hlbl9jb250aW51ZShzZWxmKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5CmluZGV4IDZiMjk5NDMuLjdkYjNmN2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkKQEAgLTExLDkgKzExLDkgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgY2FsZW5kYXIKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlYXBfdGhyZWFkcywgdmVyYm9zZSwgdHJhbnNpZW50X2ludGVybmV0LCBydW5fd2l0aF90egorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlYXBfdGhyZWFkcywgdmVyYm9zZSwgdHJhbnNpZW50X2ludGVybmV0LCBydW5fd2l0aF90eiwgcnVuX3dpdGhfbG9jYWxlCiBpbXBvcnQgdW5pdHRlc3QKLQorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWV6b25lLCB0aW1lZGVsdGEKIHRyeToKICAgICBpbXBvcnQgc3NsCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC00MywxNCArNDMsMzAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFwbGliLkludGVybmFsZGF0ZTJ0dXBsZSgKICAgICAgICAgICAgIGInMjUgKElOVEVSTkFMREFURSAiMDItQXByLTIwMDAgMDM6MzA6MDAgKzAwMDAiKScpKQogCi0gICAgZGVmIHRlc3RfdGhhdF9UaW1lMkludGVybmFsZGF0ZV9yZXR1cm5zX2FfcmVzdWx0KHNlbGYpOgotICAgICAgICAjIFdlIGNhbiBjaGVjayBvbmx5IHRoYXQgaXQgc3VjY2Vzc2Z1bGx5IHByb2R1Y2VzIGEgcmVzdWx0LAotICAgICAgICAjIG5vdCB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHJlc3VsdCBpdHNlbGYsIHNpbmNlIHRoZSByZXN1bHQKLSAgICAgICAgIyBkZXBlbmRzIG9uIHRoZSB0aW1lem9uZSB0aGUgbWFjaGluZSBpcyBpbi4KLSAgICAgICAgdGltZXZhbHVlcyA9IFsyMDAwMDAwMDAwLCAyMDAwMDAwMDAwLjAsIHRpbWUubG9jYWx0aW1lKDIwMDAwMDAwMDApLAotICAgICAgICAgICAgICAgICAgICAgICciMTgtTWF5LTIwMzMgMDU6MzM6MjAgKzAyMDAiJ10KIAotICAgICAgICBmb3IgdCBpbiB0aW1ldmFsdWVzOgorCisgICAgZGVmIHRpbWV2YWx1ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBbMjAwMDAwMDAwMCwgMjAwMDAwMDAwMC4wLCB0aW1lLmxvY2FsdGltZSgyMDAwMDAwMDAwKSwKKyAgICAgICAgICAgICAgICAoMjAzMywgNSwgMTgsIDUsIDMzLCAyMCwgLTEsIC0xLCAtMSksCisgICAgICAgICAgICAgICAgKDIwMzMsIDUsIDE4LCA1LCAzMywgMjAsIC0xLCAtMSwgMSksCisgICAgICAgICAgICAgICAgZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgyMDAwMDAwMDAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXpvbmUodGltZWRlbHRhKDAsIDIqNjAqNjApKSksCisgICAgICAgICAgICAgICAgJyIxOC1NYXktMjAzMyAwNTozMzoyMCArMDIwMCInXQorCisgICAgQHJ1bl93aXRoX2xvY2FsZSgnTENfQUxMJywgJ2RlX0RFJywgJ2ZyX0ZSJykKKyAgICBAcnVuX3dpdGhfdHooJ1NURC0xRFNUJykKKyAgICBkZWYgdGVzdF9UaW1lMkludGVybmFsZGF0ZShzZWxmKToKKyAgICAgICAgZXhwZWN0ZWQgPSAnIjE4LU1heS0yMDMzIDA1OjMzOjIwICswMjAwIicKKworICAgICAgICBmb3IgdCBpbiBzZWxmLnRpbWV2YWx1ZXMoKToKKyAgICAgICAgICAgIGludGVybmFsID0gaW1hcGxpYi5UaW1lMkludGVybmFsZGF0ZSh0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnRlcm5hbCwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF90aGF0X1RpbWUySW50ZXJuYWxkYXRlX3JldHVybnNfYV9yZXN1bHQoc2VsZik6CisgICAgICAgICMgV2l0aG91dCB0enNldCwgd2UgY2FuIGNoZWNrIG9ubHkgdGhhdCBpdCBzdWNjZXNzZnVsbHkKKyAgICAgICAgIyBwcm9kdWNlcyBhIHJlc3VsdCwgbm90IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgcmVzdWx0IGl0c2VsZiwKKyAgICAgICAgIyBzaW5jZSB0aGUgcmVzdWx0IGRlcGVuZHMgb24gdGhlIHRpbWV6b25lIHRoZSBtYWNoaW5lIGlzIGluLgorICAgICAgICBmb3IgdCBpbiBzZWxmLnRpbWV2YWx1ZXMoKToKICAgICAgICAgICAgIGltYXBsaWIuVGltZTJJbnRlcm5hbGRhdGUodCkKIAogCkBAIC0zNzQsMTQgKzM5MCw2MSBAQAogICAgIHBvcnQgPSA5OTMKICAgICBpbWFwX2NsYXNzID0gSU1BUDRfU1NMCiAKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIGNyZWF0ZV9zc2xfY29udGV4dChzZWxmKToKKyAgICAgICAgc3NsX2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBzc2xfY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgIHJldHVybiBzc2xfY29udGV4dAorCisgICAgZGVmIGNoZWNrX2xvZ2luY2FwYShzZWxmLCBzZXJ2ZXIpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgY2FwIGluIHNlcnZlci5jYXBhYmlsaXRpZXM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNhcCwgc3RyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignTE9HSU5ESVNBQkxFRCcsIHNlcnZlci5jYXBhYmlsaXRpZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdBVVRIPVBMQUlOJywgc2VydmVyLmNhcGFiaWxpdGllcykKKyAgICAgICAgICAgIHJzID0gc2VydmVyLmxvZ2luKHNlbGYudXNlcm5hbWUsIHNlbGYucGFzc3dvcmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJzWzBdLCAnT0snKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VydmVyLmxvZ291dCgpCisKICAgICBkZWYgdGVzdF9sb2dpbmNhcGEoc2VsZik6Ci0gICAgICAgIGZvciBjYXAgaW4gc2VsZi5zZXJ2ZXIuY2FwYWJpbGl0aWVzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNhcCwgc3RyKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdMT0dJTkRJU0FCTEVEJywgc2VsZi5zZXJ2ZXIuY2FwYWJpbGl0aWVzKQotICAgICAgICBzZWxmLmFzc2VydEluKCdBVVRIPVBMQUlOJywgc2VsZi5zZXJ2ZXIuY2FwYWJpbGl0aWVzKQorICAgICAgICB3aXRoIHRyYW5zaWVudF9pbnRlcm5ldChzZWxmLmhvc3QpOgorICAgICAgICAgICAgX3NlcnZlciA9IHNlbGYuaW1hcF9jbGFzcyhzZWxmLmhvc3QsIHNlbGYucG9ydCkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfbG9naW5jYXBhKF9zZXJ2ZXIpCisKKyAgICBkZWYgdGVzdF9sb2dpbmNhcGFfd2l0aF9jbGllbnRfY2VydGZpbGUoc2VsZik6CisgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6CisgICAgICAgICAgICBfc2VydmVyID0gc2VsZi5pbWFwX2NsYXNzKHNlbGYuaG9zdCwgc2VsZi5wb3J0LCBjZXJ0ZmlsZT1DRVJURklMRSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfbG9naW5jYXBhKF9zZXJ2ZXIpCisKKyAgICBkZWYgdGVzdF9sb2dpbmNhcGFfd2l0aF9jbGllbnRfc3NsX2NvbnRleHQoc2VsZik6CisgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6CisgICAgICAgICAgICBfc2VydmVyID0gc2VsZi5pbWFwX2NsYXNzKHNlbGYuaG9zdCwgc2VsZi5wb3J0LCBzc2xfY29udGV4dD1zZWxmLmNyZWF0ZV9zc2xfY29udGV4dCgpKQorICAgICAgICAgICAgc2VsZi5jaGVja19sb2dpbmNhcGEoX3NlcnZlcikKKworICAgIGRlZiB0ZXN0X2xvZ291dChzZWxmKToKKyAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKKyAgICAgICAgICAgIF9zZXJ2ZXIgPSBzZWxmLmltYXBfY2xhc3Moc2VsZi5ob3N0LCBzZWxmLnBvcnQpCisgICAgICAgICAgICBycyA9IF9zZXJ2ZXIubG9nb3V0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnNbMF0sICdCWUUnKQorCisgICAgZGVmIHRlc3Rfc3NsX2NvbnRleHRfY2VydGZpbGVfZXhjbHVzaXZlKHNlbGYpOgorICAgICAgICB3aXRoIHRyYW5zaWVudF9pbnRlcm5ldChzZWxmLmhvc3QpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5pbWFwX2NsYXNzLCBzZWxmLmhvc3QsIHNlbGYucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFLCBzc2xfY29udGV4dD1zZWxmLmNyZWF0ZV9zc2xfY29udGV4dCgpKQorCisgICAgZGVmIHRlc3Rfc3NsX2NvbnRleHRfa2V5ZmlsZV9leGNsdXNpdmUoc2VsZik6CisgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmltYXBfY2xhc3MsIHNlbGYuaG9zdCwgc2VsZi5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ZmlsZT1DRVJURklMRSwgc3NsX2NvbnRleHQ9c2VsZi5jcmVhdGVfc3NsX2NvbnRleHQoKSkKIAogCi1kZWYgdGVzdF9tYWluKCk6CitkZWYgbG9hZF90ZXN0cygqYXJncyk6CiAgICAgdGVzdHMgPSBbVGVzdEltYXBsaWJdCiAKICAgICBpZiBzdXBwb3J0LmlzX3Jlc291cmNlX2VuYWJsZWQoJ25ldHdvcmsnKToKQEAgLTM5Niw5ICs0NTksOSBAQAogICAgICAgICAgICAgUmVtb3RlSU1BUFRlc3QsIFJlbW90ZUlNQVBfU1NMVGVzdCwgUmVtb3RlSU1BUF9TVEFSVFRMU1Rlc3QsCiAgICAgICAgIF0pCiAKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdHMpCisgICAgcmV0dXJuIHVuaXR0ZXN0LlRlc3RTdWl0ZShbdW5pdHRlc3QubWFrZVN1aXRlKHRlc3QpIGZvciB0ZXN0IGluIHRlc3RzXSkKIAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHN1cHBvcnQudXNlX3Jlc291cmNlcyA9IFsnbmV0d29yayddCi0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXAucHkKaW5kZXggNTUxYWQxYi4uNjVjOWYyNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXAucHkKQEAgLTEsMTEgKzEsMTIgQEAKIGltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1pbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogCiBjbGFzcyBMb2NrVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC01OCw2ICs1OSwxMCBAQAogICAgICAgICAgICAgd2l0aCBpbXAuZmluZF9tb2R1bGUoJ21vZHVsZV8nICsgbW9kLCBzZWxmLnRlc3RfcGF0aClbMF0gYXMgZmQ6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmZC5lbmNvZGluZywgZW5jb2RpbmcpCiAKKyAgICAgICAgcGF0aCA9IFtvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGltcC5maW5kX21vZHVsZSgnYmFkc3ludGF4X3BlcDMxMjAnLCBwYXRoKQorCiAgICAgZGVmIHRlc3RfaXNzdWUxMjY3KHNlbGYpOgogICAgICAgICBmb3IgbW9kLCBlbmNvZGluZywgXyBpbiBzZWxmLnRlc3Rfc3RyaW5nczoKICAgICAgICAgICAgIGZwLCBmaWxlbmFtZSwgaW5mbyAgPSBpbXAuZmluZF9tb2R1bGUoJ21vZHVsZV8nICsgbW9kLApAQCAtMTUwLDE4ICsxNTUsMjQgQEAKICAgICAgICAgICAgICAgICBtb2QgPSBpbXAubG9hZF9tb2R1bGUodGVtcF9tb2RfbmFtZSwgZmlsZSwgZmlsZW5hbWUsIGluZm8pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuYSwgMSkKIAotICAgICAgICAgICAgbW9kID0gaW1wLmxvYWRfc291cmNlKHRlbXBfbW9kX25hbWUsIHRlbXBfbW9kX25hbWUgKyAnLnB5JykKKyAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScpCisgICAgICAgICAgICAgICAgbW9kID0gaW1wLmxvYWRfc291cmNlKHRlbXBfbW9kX25hbWUsIHRlbXBfbW9kX25hbWUgKyAnLnB5JykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLmEsIDEpCiAKLSAgICAgICAgICAgIG1vZCA9IGltcC5sb2FkX2NvbXBpbGVkKAotICAgICAgICAgICAgICAgIHRlbXBfbW9kX25hbWUsIGltcC5jYWNoZV9mcm9tX3NvdXJjZSh0ZW1wX21vZF9uYW1lICsgJy5weScpKQorICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJykKKyAgICAgICAgICAgICAgICBtb2QgPSBpbXAubG9hZF9jb21waWxlZCgKKyAgICAgICAgICAgICAgICAgICAgdGVtcF9tb2RfbmFtZSwgaW1wLmNhY2hlX2Zyb21fc291cmNlKHRlbXBfbW9kX25hbWUgKyAnLnB5JykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5hLCAxKQogCiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModGVzdF9wYWNrYWdlX25hbWUpOgogICAgICAgICAgICAgICAgIG9zLm1rZGlyKHRlc3RfcGFja2FnZV9uYW1lKQogICAgICAgICAgICAgd2l0aCBvcGVuKGluaXRfZmlsZV9uYW1lLCAndycpIGFzIGZpbGU6CiAgICAgICAgICAgICAgICAgZmlsZS53cml0ZSgnYiA9IDJcbicpCi0gICAgICAgICAgICBwYWNrYWdlID0gaW1wLmxvYWRfcGFja2FnZSh0ZXN0X3BhY2thZ2VfbmFtZSwgdGVzdF9wYWNrYWdlX25hbWUpCisgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnKQorICAgICAgICAgICAgICAgIHBhY2thZ2UgPSBpbXAubG9hZF9wYWNrYWdlKHRlc3RfcGFja2FnZV9uYW1lLCB0ZXN0X3BhY2thZ2VfbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2FnZS5iLCAyKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCkBAIC0xNzUsNiArMTg2LDQ4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbXAuZmluZF9tb2R1bGUsICJiYWRzeW50YXhfcGVwMzEyMCIsIFtwYXRoXSkKIAorICAgIGRlZiB0ZXN0X2xvYWRfZnJvbV9zb3VyY2Uoc2VsZik6CisgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIGltcCBtb2R1bGUgY2FuIGNvcnJlY3RseSBsb2FkIGFuZCBmaW5kIC5weSBmaWxlcworICAgICAgICAjIFhYWCAobmNvZ2hsYW4pOiBJdCB3b3VsZCBiZSBuaWNlIHRvIHVzZSBzdXBwb3J0LkNsZWFuSW1wb3J0CisgICAgICAgICMgaGVyZSwgYnV0IHRoYXQgYnJlYWtzIGJlY2F1c2UgdGhlIG9zIG1vZHVsZSByZWdpc3RlcnMgc29tZQorICAgICAgICAjIGhhbmRsZXJzIGluIGNvcHlfcmVnIG9uIGltcG9ydC4gU2luY2UgQ2xlYW5JbXBvcnQgZG9lc24ndAorICAgICAgICAjIHJldmVydCB0aGF0IHJlZ2lzdHJhdGlvbiwgdGhlIG1vZHVsZSBpcyBsZWZ0IGluIGEgYnJva2VuCisgICAgICAgICMgc3RhdGUgYWZ0ZXIgcmV2ZXJzaW9uLiBSZWluaXRpYWxpc2luZyB0aGUgbW9kdWxlIGNvbnRlbnRzCisgICAgICAgICMgYW5kIGp1c3QgcmV2ZXJ0aW5nIG9zLmVudmlyb24gdG8gaXRzIHByZXZpb3VzIHN0YXRlIGlzIGFuIE9LCisgICAgICAgICMgd29ya2Fyb3VuZAorICAgICAgICBvcmlnX3BhdGggPSBvcy5wYXRoCisgICAgICAgIG9yaWdfZ2V0ZW52ID0gb3MuZ2V0ZW52CisgICAgICAgIHdpdGggc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCk6CisgICAgICAgICAgICB4ID0gaW1wLmZpbmRfbW9kdWxlKCJvcyIpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoeFswXS5jbG9zZSkKKyAgICAgICAgICAgIG5ld19vcyA9IGltcC5sb2FkX21vZHVsZSgib3MiLCAqeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob3MsIG5ld19vcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob3JpZ19wYXRoLCBuZXdfb3MucGF0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qob3JpZ19nZXRlbnYsIG5ld19vcy5nZXRlbnYpCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9pc3N1ZTE1ODI4X2xvYWRfZXh0ZW5zaW9ucyhzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAxNTgyOCBwaWNrZWQgdXAgdGhhdCB0aGUgYWRhcHRlciBiZXR3ZWVuIHRoZSBvbGQgaW1wIEFQSQorICAgICAgICAjIGFuZCBpbXBvcnRsaWIgY291bGRuJ3QgaGFuZGxlIEMgZXh0ZW5zaW9ucworICAgICAgICBleGFtcGxlID0gIl9oZWFwcSIKKyAgICAgICAgeCA9IGltcC5maW5kX21vZHVsZShleGFtcGxlKQorICAgICAgICBmaWxlXyA9IHhbMF0KKyAgICAgICAgaWYgZmlsZV8gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoZmlsZV8uY2xvc2UpCisgICAgICAgIG1vZCA9IGltcC5sb2FkX21vZHVsZShleGFtcGxlLCAqeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuX19uYW1lX18sIGV4YW1wbGUpCisKKyAgICBkZWYgdGVzdF9sb2FkX2R5bmFtaWNfSW1wb3J0RXJyb3JfcGF0aChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTU1OTU0OSBhZGRlZCBgbmFtZWAgYW5kIGBwYXRoYCBhdHRyaWJ1dGVzIHRvIEltcG9ydEVycm9yCisgICAgICAgICMgaW4gb3JkZXIgdG8gcHJvdmlkZSBiZXR0ZXIgZGV0YWlsLiBJc3N1ZSAjMTA4NTQgaW1wbGVtZW50ZWQgdGhvc2UKKyAgICAgICAgIyBhdHRyaWJ1dGVzIG9uIGltcG9ydCBmYWlsdXJlcyBvZiBleHRlbnNpb25zIG9uIFdpbmRvd3MuCisgICAgICAgIHBhdGggPSAnYm9ndXMgZmlsZSBwYXRoJworICAgICAgICBuYW1lID0gJ2V4dGVuc2lvbicKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgZXJyOgorICAgICAgICAgICAgaW1wLmxvYWRfZHluYW1pYyhuYW1lLCBwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEluKHBhdGgsIGVyci5leGNlcHRpb24ucGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lLCBlcnIuZXhjZXB0aW9uLm5hbWUpCisKIAogY2xhc3MgUmVsb2FkVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0yMDksNzIgKzI2Miw4MyBAQAogCiAgICAgdGFnID0gaW1wLmdldF90YWcoKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBub3QgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBub3QgYmUgTm9uZScpCiAgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZik6CiAgICAgICAgICMgR2l2ZW4gdGhlIHBhdGggdG8gYSAucHkgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyBQRVAgMzE0NwogICAgICAgICAjIGRlZmluZWQgLnB5YyBmaWxlIChpLmUuIHVuZGVyIF9fcHljYWNoZV9fKS4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnL2Zvby9iYXIvYmF6L3F1eC5weScsIFRydWUpLAotICAgICAgICAgICAgJy9mb28vYmFyL2Jhei9fX3B5Y2FjaGVfXy9xdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQorICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBUcnVlKSwgZXhwZWN0KQorCisgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfbm9fY2FjaGVfdGFnKHNlbGYpOgorICAgICAgICAjIE5vbiBjYWNoZSB0YWcgbWVhbnMgTm90SW1wbGVtZW50ZWRFcnJvci4KKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdjYWNoZV90YWcnLCBOb25lKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvcik6CisgICAgICAgICAgICAgICAgaW1wLmNhY2hlX2Zyb21fc291cmNlKCd3aGF0ZXZlci5weScpCisKKyAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9ub19kb3Qoc2VsZik6CisgICAgICAgICMgRGlyZWN0b3J5IHdpdGggYSBkb3QsIGZpbGVuYW1lIHdpdGhvdXQgZG90LgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28uYmFyJywgJ2ZpbGUnKQorICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2Zvby5iYXInLCAnX19weWNhY2hlX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGV7fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFRydWUpLCBleHBlY3QpCiAKICAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9vcHRpbWl6ZWQoc2VsZik6CiAgICAgICAgICMgR2l2ZW4gdGhlIHBhdGggdG8gYSAucHkgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyBQRVAgMzE0NwogICAgICAgICAjIGRlZmluZWQgLnB5byBmaWxlIChpLmUuIHVuZGVyIF9fcHljYWNoZV9fKS4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnL2Zvby9iYXIvYmF6L3F1eC5weScsIEZhbHNlKSwKLSAgICAgICAgICAgICcvZm9vL2Jhci9iYXovX19weWNhY2hlX18vcXV4Lnt9LnB5bycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAncXV4LnB5JykKKyAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdfX3B5Y2FjaGVfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXV4Lnt9LnB5bycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgRmFsc2UpLCBleHBlY3QpCiAKICAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9jd2Qoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKCdmb28ucHknLCBUcnVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zZXAuam9pbigoJ19fcHljYWNoZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvby57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpKSkKKyAgICAgICAgcGF0aCA9ICdmb28ucHknCisgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignX19weWNhY2hlX18nLCAnZm9vLnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgVHJ1ZSksIGV4cGVjdCkKIAogICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX292ZXJyaWRlKHNlbGYpOgogICAgICAgICAjIFdoZW4gZGVidWdfb3ZlcnJpZGUgaXMgbm90IE5vbmUsIGl0IGNhbiBiZSBhbnkgdHJ1ZS1pc2ggb3IgZmFsc2UtaXNoCiAgICAgICAgICMgdmFsdWUuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJy9mb28vYmFyL2Jhei5weScsIFtdKSwKLSAgICAgICAgICAgICcvZm9vL2Jhci9fX3B5Y2FjaGVfXy9iYXoue30ucHlvJy5mb3JtYXQoc2VsZi50YWcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaW1wLmNhY2hlX2Zyb21fc291cmNlKCcvZm9vL2Jhci9iYXoucHknLCBbMTddKSwKLSAgICAgICAgICAgICcvZm9vL2Jhci9fX3B5Y2FjaGVfXy9iYXoue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2Jhei5weScpCisgICAgICAgIHBhcnRpYWxfZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jhei57fS5weScuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgW10pLCBwYXJ0aWFsX2V4cGVjdCArICdvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgWzE3XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbF9leHBlY3QgKyAnYycpCiAgICAgICAgICMgSG93ZXZlciBpZiB0aGUgYm9vbC1pc2huZXNzIGNhbid0IGJlIGRldGVybWluZWQsIHRoZSBleGNlcHRpb24KICAgICAgICAgIyBwcm9wYWdhdGVzLgogICAgICAgICBjbGFzcyBCZWFyaXNoOgogICAgICAgICAgICAgZGVmIF9fYm9vbF9fKHNlbGYpOiByYWlzZSBSdW50aW1lRXJyb3IKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICBSdW50aW1lRXJyb3IsCi0gICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UsICcvZm9vL2Jhci9iYXoucHknLCBCZWFyaXNoKCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnL2Zvby9iYXIvYmF6LnB5JywgQmVhcmlzaCgpKQogCi0gICAgQHVuaXR0ZXN0LnNraXBJZihvcy5hbHRzZXAgaXMgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICd0ZXN0IG1lYW5pbmdmdWwgb25seSB3aGVyZSBvcy5hbHRzZXAgaXMgZGVmaW5lZCcpCi0gICAgZGVmIHRlc3RfYWx0c2VwX2NhY2hlX2Zyb21fc291cmNlKHNlbGYpOgotICAgICAgICAjIFdpbmRvd3MgcGF0aCBhbmQgUEVQIDMxNDcuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJ1xcZm9vXFxiYXJcXGJhelxccXV4LnB5JywgVHJ1ZSksCi0gICAgICAgICAgICAnXFxmb29cXGJhclxcYmF6XFxfX3B5Y2FjaGVfX1xccXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKLQotICAgIEB1bml0dGVzdC5za2lwSWYob3MuYWx0c2VwIGlzIE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAndGVzdCBtZWFuaW5nZnVsIG9ubHkgd2hlcmUgb3MuYWx0c2VwIGlzIGRlZmluZWQnKQotICAgIGRlZiB0ZXN0X2FsdHNlcF9hbmRfc2VwX2NhY2hlX2Zyb21fc291cmNlKHNlbGYpOgotICAgICAgICAjIFdpbmRvd3MgcGF0aCBhbmQgUEVQIDMxNDcgd2hlcmUgYWx0c2VwIGlzIHJpZ2h0IG9mIHNlcC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnXFxmb29cXGJhci9iYXpcXHF1eC5weScsIFRydWUpLAotICAgICAgICAgICAgJ1xcZm9vXFxiYXIvYmF6XFxfX3B5Y2FjaGVfX1xccXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKLQotICAgIEB1bml0dGVzdC5za2lwSWYob3MuYWx0c2VwIGlzIE5vbmUsCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3Muc2VwID09ICdcXCcgYW5kIG9zLmFsdHNlcCA9PSAnLycsCiAgICAgICAgICAgICAgICAgICAgICAndGVzdCBtZWFuaW5nZnVsIG9ubHkgd2hlcmUgb3MuYWx0c2VwIGlzIGRlZmluZWQnKQogICAgIGRlZiB0ZXN0X3NlcF9hbHRzZXBfYW5kX3NlcF9jYWNoZV9mcm9tX3NvdXJjZShzZWxmKToKICAgICAgICAgIyBXaW5kb3dzIHBhdGggYW5kIFBFUCAzMTQ3IHdoZXJlIHNlcCBpcyByaWdodCBvZiBhbHRzZXAuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJ1xcZm9vXFxiYXJcXGJhei9xdXgucHknLCBUcnVlKSwKLSAgICAgICAgICAgICdcXGZvb1xcYmFyXFxiYXovX19weWNhY2hlX18vcXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgICAgICdcXGZvb1xcYmFyXFxiYXpcXF9fcHljYWNoZV9fXFxxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBub3QgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyB0byBub3QgYmUgJworICAgICAgICAgICAgICAgICAgICAgICAgICdOb25lJykKICAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZShzZWxmKToKICAgICAgICAgIyBHaXZlbiB0aGUgcGF0aCB0byBhIFBFUCAzMTQ3IGRlZmluZWQgLnB5YyBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8KICAgICAgICAgIyBpdHMgc291cmNlLiAgVGhpcyB0ZXN0cyB0aGUgZ29vZCBwYXRoLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5zb3VyY2VfZnJvbV9jYWNoZSgKLSAgICAgICAgICAgICcvZm9vL2Jhci9iYXovX19weWNhY2hlX18vcXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSksCi0gICAgICAgICAgICAnL2Zvby9iYXIvYmF6L3F1eC5weScpCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5zb3VyY2VfZnJvbV9jYWNoZShwYXRoKSwgZXhwZWN0KQorCisgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfbm9fY2FjaGVfdGFnKHNlbGYpOgorICAgICAgICAjIElmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZSwgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvci4KKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignYmxhaCcsICdfX3B5Y2FjaGVfXycsICd3aGF0ZXZlci5weWMnKQorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ2NhY2hlX3RhZycsIE5vbmUpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yKToKKyAgICAgICAgICAgICAgICBpbXAuc291cmNlX2Zyb21fY2FjaGUocGF0aCkKIAogICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX2JhZF9wYXRoKHNlbGYpOgogICAgICAgICAjIFdoZW4gdGhlIHBhdGggdG8gYSBweWMgZmlsZSBpcyBub3QgaW4gUEVQIDMxNDcgZm9ybWF0LCBhIFZhbHVlRXJyb3IKQEAgLTMwNSw2ICszNjksMTIgQEAKICAgICAgICAgICAgICcvZm9vL2Jhci9mb28uY3B5dGhvbi0zMi5mb28ucHljJykKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2VfX19maWxlX18oc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3JykKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJwZXAzMTQ3IG1vZHVsZSBhbHJlYWR5IGV4aXN0czogJXIiICUgKG0sKSkKICAgICAgICAgIyBUZXN0IHRoYXQgYSBwYWNrYWdlJ3MgX19maWxlX18gcG9pbnRzIHRvIHRoZSByaWdodCBzb3VyY2UgZGlyZWN0b3J5LgogICAgICAgICBvcy5ta2RpcigncGVwMzE0NycpCiAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5jdXJkaXIpCkBAIC0zMTQsMTQgKzM4NCwxNiBAQAogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSgncGVwMzE0NycpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjbGVhbnVwKQogICAgICAgICAjIFRvdWNoIHRoZSBfX2luaXRfXy5weSBmaWxlLgotICAgICAgICB3aXRoIG9wZW4oJ3BlcDMxNDcvX19pbml0X18ucHknLCAndycpOgotICAgICAgICAgICAgcGFzcworICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKCdwZXAzMTQ3L19faW5pdF9fLnB5JykKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICAgICAgZXhwZWN0ZWRfX19maWxlX18gPSBvcy5zZXAuam9pbigoJy4nLCAncGVwMzE0NycsICdfX2luaXRfXy5weScpKQogICAgICAgICBtID0gX19pbXBvcnRfXygncGVwMzE0NycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5fX2ZpbGVfXywgZXhwZWN0ZWRfX19maWxlX18sIChtLl9fZmlsZV9fLCBtLl9fcGF0aF9fLCBzeXMucGF0aCwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpKQogICAgICAgICAjIEVuc3VyZSB3ZSBsb2FkIHRoZSBweWMgZmlsZS4KLSAgICAgICAgc3VwcG9ydC5mb3JnZXQoJ3BlcDMxNDcnKQorICAgICAgICBzdXBwb3J0LnVubG9hZCgncGVwMzE0NycpCiAgICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9fZmlsZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnNlcC5qb2luKCgnLicsICdwZXAzMTQ3JywgJ19faW5pdF9fLnB5JykpKQorICAgICAgICBzdXBwb3J0LnVubG9hZCgncGVwMzE0NycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5fX2ZpbGVfXywgZXhwZWN0ZWRfX19maWxlX18sIChtLl9fZmlsZV9fLCBtLl9fcGF0aF9fLCBzeXMucGF0aCwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpKQogCiAKIGNsYXNzIE51bGxJbXBvcnRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQucHkKaW5kZXggYjEwZjM1MC4uYjBlNWE5NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQucHkKQEAgLTEsNyArMSw4IEBACisjIFdlIGltcG9ydCBpbXBvcnRsaWIgKkFTQVAqIGluIG9yZGVyIHRvIHRlc3QgIzE1Mzg2CitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBpbXAKLWZyb20gaW1wb3J0bGliLnRlc3QuaW1wb3J0XyBpbXBvcnQgdGVzdF9yZWxhdGl2ZV9pbXBvcnRzCi1mcm9tIGltcG9ydGxpYi50ZXN0LmltcG9ydF8gaW1wb3J0IHV0aWwgYXMgaW1wb3J0bGliX3V0aWwKK2Zyb20gdGVzdC50ZXN0X2ltcG9ydGxpYi5pbXBvcnRfIGltcG9ydCB1dGlsIGFzIGltcG9ydGxpYl91dGlsCiBpbXBvcnQgbWFyc2hhbAogaW1wb3J0IG9zCiBpbXBvcnQgcGxhdGZvcm0KQEAgLTEyLDM5ICsxMyw1MCBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCBlcnJubworaW1wb3J0IHNodXRpbAoraW1wb3J0IGNvbnRleHRsaWIKIAoraW1wb3J0IHRlc3Quc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0ICgKICAgICBFbnZpcm9ubWVudFZhckd1YXJkLCBURVNURk4sIGNoZWNrX3dhcm5pbmdzLCBmb3JnZXQsIGlzX2p5dGhvbiwKICAgICBtYWtlX2xlZ2FjeV9weWMsIHJtdHJlZSwgcnVuX3VuaXR0ZXN0LCBzd2FwX2F0dHIsIHN3YXBfaXRlbSwgdGVtcF91bWFzaywKLSAgICB1bmxpbmssIHVubG9hZCkKKyAgICB1bmxpbmssIHVubG9hZCwgY3JlYXRlX2VtcHR5X2ZpbGUsIGNweXRob25fb25seSkKIGZyb20gdGVzdCBpbXBvcnQgc2NyaXB0X2hlbHBlcgogCiAKLWRlZiBfZmlsZXMobmFtZSk6Ci0gICAgcmV0dXJuIChuYW1lICsgb3MuZXh0c2VwICsgInB5IiwKLSAgICAgICAgICAgIG5hbWUgKyBvcy5leHRzZXAgKyAicHljIiwKLSAgICAgICAgICAgIG5hbWUgKyBvcy5leHRzZXAgKyAicHlvIiwKLSAgICAgICAgICAgIG5hbWUgKyBvcy5leHRzZXAgKyAicHl3IiwKLSAgICAgICAgICAgIG5hbWUgKyAiJHB5LmNsYXNzIikKLQotZGVmIGNobW9kX2ZpbGVzKG5hbWUpOgotICAgIGZvciBmIGluIF9maWxlcyhuYW1lKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MuY2htb2QoZiwgMG82MDApCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKLSAgICAgICAgICAgIGlmIGV4Yy5lcnJubyAhPSBlcnJuby5FTk9FTlQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLQogZGVmIHJlbW92ZV9maWxlcyhuYW1lKToKLSAgICBmb3IgZiBpbiBfZmlsZXMobmFtZSk6CisgICAgZm9yIGYgaW4gKG5hbWUgKyAiLnB5IiwKKyAgICAgICAgICAgICAgbmFtZSArICIucHljIiwKKyAgICAgICAgICAgICAgbmFtZSArICIucHlvIiwKKyAgICAgICAgICAgICAgbmFtZSArICIucHl3IiwKKyAgICAgICAgICAgICAgbmFtZSArICIkcHkuY2xhc3MiKToKICAgICAgICAgdW5saW5rKGYpCiAgICAgcm10cmVlKCdfX3B5Y2FjaGVfXycpCiAKIAorQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBfcmVhZHlfdG9faW1wb3J0KG5hbWU9Tm9uZSwgc291cmNlPSIiKToKKyAgICAjIHNldHMgdXAgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGFuZCByZW1vdmVzIGl0CisgICAgIyBjcmVhdGVzIHRoZSBtb2R1bGUgZmlsZQorICAgICMgdGVtcG9yYXJpbHkgY2xlYXJzIHRoZSBtb2R1bGUgZnJvbSBzeXMubW9kdWxlcyAoaWYgYW55KQorICAgIG5hbWUgPSBuYW1lIG9yICJzcGFtIgorICAgIHdpdGggc2NyaXB0X2hlbHBlci50ZW1wX2RpcigpIGFzIHRlbXBkaXI6CisgICAgICAgIHBhdGggPSBzY3JpcHRfaGVscGVyLm1ha2Vfc2NyaXB0KHRlbXBkaXIsIG5hbWUsIHNvdXJjZSkKKyAgICAgICAgb2xkX21vZHVsZSA9IHN5cy5tb2R1bGVzLnBvcChuYW1lLCBOb25lKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgdGVtcGRpcikKKyAgICAgICAgICAgIHlpZWxkIG5hbWUsIHBhdGgKKyAgICAgICAgICAgIHN5cy5wYXRoLnJlbW92ZSh0ZW1wZGlyKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgb2xkX21vZHVsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG9sZF9tb2R1bGUKKworCiBjbGFzcyBJbXBvcnRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHJlbW92ZV9maWxlcyhURVNURk4pCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHVubG9hZChURVNURk4pCkBAIC04Miw2ICs5NCw3IEBACiAKICAgICAgICAgICAgIGlmIFRFU1RGTiBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbVEVTVEZOXQorICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIG1vZCA9IF9faW1wb3J0X18oVEVTVEZOKQpAQCAtMTA3LDkwICsxMjAsNiBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICdwb3NpeCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgbWVhbmluZ2Z1bCBvbmx5IG9uIHBvc2l4IHN5c3RlbXMiKQotICAgIGRlZiB0ZXN0X2V4ZWN1dGVfYml0X25vdF9jb3BpZWQoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgNjA3MDogdW5kZXIgcG9zaXggLnB5YyBmaWxlcyBnb3QgdGhlaXIgZXhlY3V0ZSBiaXQgc2V0IGlmCi0gICAgICAgICMgdGhlIC5weSBmaWxlIGhhZCB0aGUgZXhlY3V0ZSBiaXQgc2V0LCBidXQgdGhleSBhcmVuJ3QgZXhlY3V0YWJsZS4KLSAgICAgICAgd2l0aCB0ZW1wX3VtYXNrKDBvMDIyKToKLSAgICAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5jdXJkaXIpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZm5hbWUgPSBURVNURk4gKyBvcy5leHRzZXAgKyAicHkiCi0gICAgICAgICAgICAgICAgb3BlbihmbmFtZSwgJ3cnKS5jbG9zZSgpCi0gICAgICAgICAgICAgICAgb3MuY2htb2QoZm5hbWUsIChzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVJHUlAgfCBzdGF0LlNfSVJPVEggfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdC5TX0lYVVNSIHwgc3RhdC5TX0lYR1JQIHwgc3RhdC5TX0lYT1RIKSkKLSAgICAgICAgICAgICAgICBmbiA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShmbmFtZSkKLSAgICAgICAgICAgICAgICB1bmxpbmsoZm4pCi0gICAgICAgICAgICAgICAgX19pbXBvcnRfXyhURVNURk4pCi0gICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZuKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJfX2ltcG9ydF9fIGRpZCBub3QgcmVzdWx0IGluIGNyZWF0aW9uIG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgYSAucHljIG9yIC5weW8gZmlsZSIpCi0gICAgICAgICAgICAgICAgcyA9IG9zLnN0YXQoZm4pCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0LlNfSU1PREUocy5zdF9tb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXQuU19JUlVTUiB8IHN0YXQuU19JUkdSUCB8IHN0YXQuU19JUk9USCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCi0gICAgICAgICAgICAgICAgcmVtb3ZlX2ZpbGVzKFRFU1RGTikKLSAgICAgICAgICAgICAgICB1bmxvYWQoVEVTVEZOKQotCi0gICAgZGVmIHRlc3RfcmV3cml0ZV9weWNfd2l0aF9yZWFkX29ubHlfc291cmNlKHNlbGYpOgotICAgICAgICAjIElzc3VlIDYwNzQ6IGEgbG9uZyB0aW1lIGFnbyBvbiBwb3NpeCwgYW5kIG1vcmUgcmVjZW50bHkgb24gV2luZG93cywKLSAgICAgICAgIyBhIHJlYWQgb25seSBzb3VyY2UgZmlsZSByZXN1bHRlZCBpbiBhIHJlYWQgb25seSBweWMgZmlsZSwgd2hpY2gKLSAgICAgICAgIyBsZWQgdG8gcHJvYmxlbXMgd2l0aCB1cGRhdGluZyBpdCBsYXRlcgotICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MuY3VyZGlyKQotICAgICAgICBmbmFtZSA9IFRFU1RGTiArIG9zLmV4dHNlcCArICJweSIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBXcml0ZSBhIFB5dGhvbiBmaWxlLCBtYWtlIGl0IHJlYWQtb25seSBhbmQgaW1wb3J0IGl0Ci0gICAgICAgICAgICB3aXRoIG9wZW4oZm5hbWUsICd3JykgYXMgZjoKLSAgICAgICAgICAgICAgICBmLndyaXRlKCJ4ID0gJ29yaWdpbmFsJ1xuIikKLSAgICAgICAgICAgICMgVHdlYWsgdGhlIG10aW1lIG9mIHRoZSBzb3VyY2UgdG8gZW5zdXJlIHB5YyBnZXRzIHVwZGF0ZWQgbGF0ZXIKLSAgICAgICAgICAgIHMgPSBvcy5zdGF0KGZuYW1lKQotICAgICAgICAgICAgb3MudXRpbWUoZm5hbWUsIChzLnN0X2F0aW1lLCBzLnN0X210aW1lLTEwMDAwMDAwMCkpCi0gICAgICAgICAgICBvcy5jaG1vZChmbmFtZSwgMG80MDApCi0gICAgICAgICAgICBtMSA9IF9faW1wb3J0X18oVEVTVEZOKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMS54LCAnb3JpZ2luYWwnKQotICAgICAgICAgICAgIyBDaGFuZ2UgdGhlIGZpbGUgYW5kIHRoZW4gcmVpbXBvcnQgaXQKLSAgICAgICAgICAgIG9zLmNobW9kKGZuYW1lLCAwbzYwMCkKLSAgICAgICAgICAgIHdpdGggb3BlbihmbmFtZSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgICAgIGYud3JpdGUoInggPSAncmV3cml0dGVuJ1xuIikKLSAgICAgICAgICAgIHVubG9hZChURVNURk4pCi0gICAgICAgICAgICBtMiA9IF9faW1wb3J0X18oVEVTVEZOKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMi54LCAncmV3cml0dGVuJykKLSAgICAgICAgICAgICMgTm93IGRlbGV0ZSB0aGUgc291cmNlIGZpbGUgYW5kIGNoZWNrIHRoZSBweWMgd2FzIHJld3JpdHRlbgotICAgICAgICAgICAgdW5saW5rKGZuYW1lKQotICAgICAgICAgICAgdW5sb2FkKFRFU1RGTikKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBieXRlY29kZV9uYW1lID0gZm5hbWUgKyAiYyIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYnl0ZWNvZGVfbmFtZSA9IGZuYW1lICsgIm8iCi0gICAgICAgICAgICBvcy5yZW5hbWUoaW1wLmNhY2hlX2Zyb21fc291cmNlKGZuYW1lKSwgYnl0ZWNvZGVfbmFtZSkKLSAgICAgICAgICAgIG0zID0gX19pbXBvcnRfXyhURVNURk4pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0zLngsICdyZXdyaXR0ZW4nKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgY2htb2RfZmlsZXMoVEVTVEZOKQotICAgICAgICAgICAgcmVtb3ZlX2ZpbGVzKFRFU1RGTikKLSAgICAgICAgICAgIHVubG9hZChURVNURk4pCi0gICAgICAgICAgICBkZWwgc3lzLnBhdGhbMF0KLQotICAgIGRlZiB0ZXN0X2ltcF9tb2R1bGUoc2VsZik6Ci0gICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIGltcCBtb2R1bGUgY2FuIGNvcnJlY3RseSBsb2FkIGFuZCBmaW5kIC5weSBmaWxlcwotICAgICAgICAjIFhYWCAobmNvZ2hsYW4pOiBJdCB3b3VsZCBiZSBuaWNlIHRvIHVzZSBzdXBwb3J0LkNsZWFuSW1wb3J0Ci0gICAgICAgICMgaGVyZSwgYnV0IHRoYXQgYnJlYWtzIGJlY2F1c2UgdGhlIG9zIG1vZHVsZSByZWdpc3RlcnMgc29tZQotICAgICAgICAjIGhhbmRsZXJzIGluIGNvcHlfcmVnIG9uIGltcG9ydC4gU2luY2UgQ2xlYW5JbXBvcnQgZG9lc24ndAotICAgICAgICAjIHJldmVydCB0aGF0IHJlZ2lzdHJhdGlvbiwgdGhlIG1vZHVsZSBpcyBsZWZ0IGluIGEgYnJva2VuCi0gICAgICAgICMgc3RhdGUgYWZ0ZXIgcmV2ZXJzaW9uLiBSZWluaXRpYWxpc2luZyB0aGUgbW9kdWxlIGNvbnRlbnRzCi0gICAgICAgICMgYW5kIGp1c3QgcmV2ZXJ0aW5nIG9zLmVudmlyb24gdG8gaXRzIHByZXZpb3VzIHN0YXRlIGlzIGFuIE9LCi0gICAgICAgICMgd29ya2Fyb3VuZAotICAgICAgICBvcmlnX3BhdGggPSBvcy5wYXRoCi0gICAgICAgIG9yaWdfZ2V0ZW52ID0gb3MuZ2V0ZW52Ci0gICAgICAgIHdpdGggRW52aXJvbm1lbnRWYXJHdWFyZCgpOgotICAgICAgICAgICAgeCA9IGltcC5maW5kX21vZHVsZSgib3MiKQotICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHhbMF0uY2xvc2UpCi0gICAgICAgICAgICBuZXdfb3MgPSBpbXAubG9hZF9tb2R1bGUoIm9zIiwgKngpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKG9zLCBuZXdfb3MpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKG9yaWdfcGF0aCwgbmV3X29zLnBhdGgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KG9yaWdfZ2V0ZW52LCBuZXdfb3MuZ2V0ZW52KQotCiAgICAgZGVmIHRlc3RfYnVnNzczMihzZWxmKToKICAgICAgICAgc291cmNlID0gVEVTVEZOICsgJy5weScKICAgICAgICAgb3MubWtkaXIoc291cmNlKQpAQCAtMjIwLDYgKzE0OSw3IEBACiAKICAgICAgICAgIyBOZWVkIHRvIGJlIGFibGUgdG8gbG9hZCBmcm9tIGN1cnJlbnQgZGlyLgogICAgICAgICBzeXMucGF0aC5hcHBlbmQoJycpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbWFrZV9sZWdhY3lfcHljKGZpbGVuYW1lKQpAQCAtMjM5LDYgKzE2OSw3IEBACiAgICAgICAgICMgTmV3IGluIDIuNCwgd2Ugc2hvdWxkbid0IGJlIGFibGUgdG8gaW1wb3J0IHRoYXQgbm8gbWF0dGVyIGhvdyBvZnRlbgogICAgICAgICAjIHdlIHRyeS4KICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLmN1cmRpcikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgaWYgVEVTVEZOIGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW1RFU1RGTl0KICAgICAgICAgdHJ5OgpAQCAtMzEyLDYgKzI0Myw3IEBACiAgICAgICAgICAgICBvcy5yZW1vdmUoc291cmNlKQogICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW1RFU1RGTl0KICAgICAgICAgICAgIG1ha2VfbGVnYWN5X3B5Yyhzb3VyY2UpCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgbW9kID0gX19pbXBvcnRfXyhURVNURk4pCiAgICAgICAgICAgICBiYXNlLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG1vZC5fX2ZpbGVfXykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXh0LCAoJy5weWMnLCAnLnB5bycpKQpAQCAtMzMyLDEyICsyNjQsNiBAQAogICAgICAgICBpbXBvcnQgdGVzdC5zdXBwb3J0IGFzIHkKICAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCB0ZXN0LnN1cHBvcnQsIHkuX19uYW1lX18pCiAKLSAgICBkZWYgdGVzdF9pbXBvcnRfaW5pdGxlc3NfZGlyZWN0b3J5X3dhcm5pbmcoc2VsZik6Ci0gICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKCcnLCBJbXBvcnRXYXJuaW5nKSk6Ci0gICAgICAgICAgICAjIEp1c3QgYSByYW5kb20gbm9uLXBhY2thZ2UgZGlyZWN0b3J5IHdlIGFsd2F5cyBleHBlY3QgdG8gYmUKLSAgICAgICAgICAgICMgc29tZXdoZXJlIGluIHN5cy5wYXRoLi4uCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvciwgX19pbXBvcnRfXywgInNpdGUtcGFja2FnZXMiKQotCiAgICAgZGVmIHRlc3RfaW1wb3J0X2J5X2ZpbGVuYW1lKHNlbGYpOgogICAgICAgICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKFRFU1RGTikKICAgICAgICAgZW5jb2RpbmcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKQEAgLTM0Nyw4ICsyNzMsNiBAQAogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgncGF0aCBpcyBub3QgZW5jb2RhYmxlIHRvIHt9Jy5mb3JtYXQoZW5jb2RpbmcpKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjOgogICAgICAgICAgICAgX19pbXBvcnRfXyhwYXRoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJJbXBvcnQgYnkgZmlsZW5hbWUgaXMgbm90IHN1cHBvcnRlZC4iLAotICAgICAgICAgICAgICAgICAgICAgICAgIGMuZXhjZXB0aW9uLmFyZ3NbMF0pCiAKICAgICBkZWYgdGVzdF9pbXBvcnRfaW5fZGVsX2RvZXNfbm90X2NyYXNoKHNlbGYpOgogICAgICAgICAjIElzc3VlIDQyMzYKQEAgLTM4NSw2ICszMDksOTggQEAKICAgICAgICAgICAgIGRlbCBzeXMucGF0aFswXQogICAgICAgICAgICAgcmVtb3ZlX2ZpbGVzKFRFU1RGTikKIAorICAgIGRlZiB0ZXN0X2JvZ3VzX2Zyb21saXN0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBfX2ltcG9ydF9fKCdodHRwJywgZnJvbWxpc3Q9WydibGFoJ10pCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiZnJvbWxpc3QgbXVzdCBhbGxvdyBib2d1cyBuYW1lcyIpCisKKworY2xhc3MgRmlsZVBlcm1pc3Npb25UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyB0ZXN0cyBmb3IgZmlsZSBtb2RlIG9uIGNhY2hlZCAucHljLy5weW8gZmlsZXMKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gJ3Bvc2l4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdCBtZWFuaW5nZnVsIG9ubHkgb24gcG9zaXggc3lzdGVtcyIpCisgICAgZGVmIHRlc3RfY3JlYXRpb25fbW9kZShzZWxmKToKKyAgICAgICAgbWFzayA9IDBvMDIyCisgICAgICAgIHdpdGggdGVtcF91bWFzayhtYXNrKSwgX3JlYWR5X3RvX2ltcG9ydCgpIGFzIChuYW1lLCBwYXRoKToKKyAgICAgICAgICAgIGNhY2hlZF9wYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgpCisgICAgICAgICAgICBtb2R1bGUgPSBfX2ltcG9ydF9fKG5hbWUpCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY2FjaGVkX3BhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiX19pbXBvcnRfXyBkaWQgbm90IHJlc3VsdCBpbiBjcmVhdGlvbiBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgYSAucHljIG9yIC5weW8gZmlsZSIpCisgICAgICAgICAgICBzdGF0X2luZm8gPSBvcy5zdGF0KGNhY2hlZF9wYXRoKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgdW1hc2sgaXMgcmVzcGVjdGVkLCBhbmQgdGhlIGV4ZWN1dGFibGUgYml0cworICAgICAgICAjIGFyZW4ndCBzZXQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2N0KHN0YXQuU19JTU9ERShzdGF0X2luZm8uc3RfbW9kZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9jdCgwbzY2NiAmIH5tYXNrKSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gJ3Bvc2l4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdCBtZWFuaW5nZnVsIG9ubHkgb24gcG9zaXggc3lzdGVtcyIpCisgICAgZGVmIHRlc3RfY2FjaGVkX21vZGVfaXNzdWVfMjA1MShzZWxmKToKKyAgICAgICAgIyBwZXJtaXNzaW9ucyBvZiAucHljIHNob3VsZCBtYXRjaCB0aG9zZSBvZiAucHksIHJlZ2FyZGxlc3Mgb2YgbWFzaworICAgICAgICBtb2RlID0gMG82MDAKKyAgICAgICAgd2l0aCB0ZW1wX3VtYXNrKDBvMDIyKSwgX3JlYWR5X3RvX2ltcG9ydCgpIGFzIChuYW1lLCBwYXRoKToKKyAgICAgICAgICAgIGNhY2hlZF9wYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgpCisgICAgICAgICAgICBvcy5jaG1vZChwYXRoLCBtb2RlKQorICAgICAgICAgICAgX19pbXBvcnRfXyhuYW1lKQorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGNhY2hlZF9wYXRoKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIl9faW1wb3J0X18gZGlkIG5vdCByZXN1bHQgaW4gY3JlYXRpb24gb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiZWl0aGVyIGEgLnB5YyBvciAucHlvIGZpbGUiKQorICAgICAgICAgICAgc3RhdF9pbmZvID0gb3Muc3RhdChjYWNoZWRfcGF0aCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9jdChzdGF0LlNfSU1PREUoc3RhdF9pbmZvLnN0X21vZGUpKSwgb2N0KG1vZGUpKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAncG9zaXgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IG1lYW5pbmdmdWwgb25seSBvbiBwb3NpeCBzeXN0ZW1zIikKKyAgICBkZWYgdGVzdF9jYWNoZWRfcmVhZG9ubHkoc2VsZik6CisgICAgICAgIG1vZGUgPSAwbzQwMAorICAgICAgICB3aXRoIHRlbXBfdW1hc2soMG8wMjIpLCBfcmVhZHlfdG9faW1wb3J0KCkgYXMgKG5hbWUsIHBhdGgpOgorICAgICAgICAgICAgY2FjaGVkX3BhdGggPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCkKKyAgICAgICAgICAgIG9zLmNobW9kKHBhdGgsIG1vZGUpCisgICAgICAgICAgICBfX2ltcG9ydF9fKG5hbWUpCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY2FjaGVkX3BhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiX19pbXBvcnRfXyBkaWQgbm90IHJlc3VsdCBpbiBjcmVhdGlvbiBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgYSAucHljIG9yIC5weW8gZmlsZSIpCisgICAgICAgICAgICBzdGF0X2luZm8gPSBvcy5zdGF0KGNhY2hlZF9wYXRoKQorCisgICAgICAgIGV4cGVjdGVkID0gbW9kZSB8IDBvMjAwICMgQWNjb3VudCBmb3IgZml4IGZvciBpc3N1ZSAjNjA3NAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9jdChzdGF0LlNfSU1PREUoc3RhdF9pbmZvLnN0X21vZGUpKSwgb2N0KGV4cGVjdGVkKSkKKworICAgIGRlZiB0ZXN0X3B5Y19hbHdheXNfd3JpdGFibGUoc2VsZik6CisgICAgICAgICMgSW5pdGlhbGx5IHJlYWQtb25seSAucHljIGZpbGVzIG9uIFdpbmRvd3MgdXNlZCB0byBjYXVzZSBwcm9ibGVtcworICAgICAgICAjIHdpdGggbGF0ZXIgdXBkYXRlcywgc2VlIGlzc3VlICM2MDc0IGZvciBkZXRhaWxzCisgICAgICAgIHdpdGggX3JlYWR5X3RvX2ltcG9ydCgpIGFzIChuYW1lLCBwYXRoKToKKyAgICAgICAgICAgICMgV3JpdGUgYSBQeXRob24gZmlsZSwgbWFrZSBpdCByZWFkLW9ubHkgYW5kIGltcG9ydCBpdAorICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKCJ4ID0gJ29yaWdpbmFsJ1xuIikKKyAgICAgICAgICAgICMgVHdlYWsgdGhlIG10aW1lIG9mIHRoZSBzb3VyY2UgdG8gZW5zdXJlIHB5YyBnZXRzIHVwZGF0ZWQgbGF0ZXIKKyAgICAgICAgICAgIHMgPSBvcy5zdGF0KHBhdGgpCisgICAgICAgICAgICBvcy51dGltZShwYXRoLCAocy5zdF9hdGltZSwgcy5zdF9tdGltZS0xMDAwMDAwMDApKQorICAgICAgICAgICAgb3MuY2htb2QocGF0aCwgMG80MDApCisgICAgICAgICAgICBtID0gX19pbXBvcnRfXyhuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLngsICdvcmlnaW5hbCcpCisgICAgICAgICAgICAjIENoYW5nZSB0aGUgZmlsZSBhbmQgdGhlbiByZWltcG9ydCBpdAorICAgICAgICAgICAgb3MuY2htb2QocGF0aCwgMG82MDApCisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoInggPSAncmV3cml0dGVuJ1xuIikKKyAgICAgICAgICAgIHVubG9hZChuYW1lKQorICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICAgICAgICAgIG0gPSBfX2ltcG9ydF9fKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ueCwgJ3Jld3JpdHRlbicpCisgICAgICAgICAgICAjIE5vdyBkZWxldGUgdGhlIHNvdXJjZSBmaWxlIGFuZCBjaGVjayB0aGUgcHljIHdhcyByZXdyaXR0ZW4KKyAgICAgICAgICAgIHVubGluayhwYXRoKQorICAgICAgICAgICAgdW5sb2FkKG5hbWUpCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgorICAgICAgICAgICAgICAgIGJ5dGVjb2RlX29ubHkgPSBwYXRoICsgImMiCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJ5dGVjb2RlX29ubHkgPSBwYXRoICsgIm8iCisgICAgICAgICAgICBvcy5yZW5hbWUoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgpLCBieXRlY29kZV9vbmx5KQorICAgICAgICAgICAgbSA9IF9faW1wb3J0X18obmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS54LCAncmV3cml0dGVuJykKKwogCiBjbGFzcyBQeWNSZXdyaXRpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBUZXN0IHRoYXQgdGhlIGBjb19maWxlbmFtZWAgYXR0cmlidXRlIG9uIGNvZGUgb2JqZWN0cyBhbHdheXMgcG9pbnRzCkBAIC00MTIsNiArNDI4LDcgQEAKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZV9uYW1lLCAidyIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKHNlbGYubW9kdWxlX3NvdXJjZSkKICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIHNlbGYuZGlyX25hbWUpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHN5cy5wYXRoWzpdID0gc2VsZi5zeXNfcGF0aApAQCAtNDUxLDYgKzQ2OCw3IEBACiAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShzZWxmLmZpbGVfbmFtZSwgZGZpbGU9dGFyZ2V0KQogICAgICAgICBvcy5yZW1vdmUoc2VsZi5maWxlX25hbWUpCiAgICAgICAgIHB5Y19maWxlID0gbWFrZV9sZWdhY3lfcHljKHNlbGYuZmlsZV9uYW1lKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBtb2QgPSBzZWxmLmltcG9ydF9tb2R1bGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5tb2R1bGVfZmlsZW5hbWUsIHB5Y19maWxlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5jb2RlX2ZpbGVuYW1lLCB0YXJnZXQpCkBAIC00NTksNyArNDc3LDcgQEAKICAgICBkZWYgdGVzdF9mb3JlaWduX2NvZGUoc2VsZik6CiAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShzZWxmLmZpbGVfbmFtZSkKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuY29tcGlsZWRfbmFtZSwgInJiIikgYXMgZjoKLSAgICAgICAgICAgIGhlYWRlciA9IGYucmVhZCg4KQorICAgICAgICAgICAgaGVhZGVyID0gZi5yZWFkKDEyKQogICAgICAgICAgICAgY29kZSA9IG1hcnNoYWwubG9hZChmKQogICAgICAgICBjb25zdGFudHMgPSBsaXN0KGNvZGUuY29fY29uc3RzKQogICAgICAgICBmb3JlaWduX2NvZGUgPSB0ZXN0X21haW4uX19jb2RlX18KQEAgLTUwMSw5ICs1MTksMTEgQEAKICAgICAgICAgdW5sb2FkKCJ0ZXN0X3RyYWlsaW5nX3NsYXNoIikKIAogICAgICMgUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzY3Ny4KLSAgICBkZWYgX3Rlc3RfVU5DX3BhdGgoc2VsZik6Ci0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAndGVzdF90cmFpbGluZ19zbGFzaC5weScpLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCJ0ZXN0ZGF0YSA9ICd0ZXN0X3RyYWlsaW5nX3NsYXNoJyIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICd3aW4zMicsICdXaW5kb3dzLXNwZWNpZmljJykKKyAgICBkZWYgdGVzdF9VTkNfcGF0aChzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLnBhdGgsICd0ZXN0X3VuY19wYXRoLnB5JyksICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoInRlc3RkYXRhID0gJ3Rlc3RfdW5jX3BhdGgnIikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgIyBDcmVhdGUgdGhlIFVOQyBwYXRoLCBsaWtlIFxcbXlob3N0XGMkXGZvb1xiYXIuCiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgoc2VsZi5wYXRoKQogICAgICAgICBpbXBvcnQgc29ja2V0CkBAIC01MTgsMTMgKzUzOCwxNSBAQAogICAgICAgICAgICAgICAgICMgU2VlIGlzc3VlICMxNTMzOAogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCBhY2Nlc3MgYWRtaW5pc3RyYXRpdmUgc2hhcmUgJXIiICUgKHVuYywpKQogICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgc3lzLnBhdGguYXBwZW5kKHBhdGgpCi0gICAgICAgIG1vZCA9IF9faW1wb3J0X18oInRlc3RfdHJhaWxpbmdfc2xhc2giKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC50ZXN0ZGF0YSwgJ3Rlc3RfdHJhaWxpbmdfc2xhc2gnKQotICAgICAgICB1bmxvYWQoInRlc3RfdHJhaWxpbmdfc2xhc2giKQotCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgICAgIHRlc3RfVU5DX3BhdGggPSBfdGVzdF9VTkNfcGF0aAorICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgdW5jKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2QgPSBfX2ltcG9ydF9fKCJ0ZXN0X3VuY19wYXRoIikKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmZhaWwoImNvdWxkIG5vdCBpbXBvcnQgJ3Rlc3RfdW5jX3BhdGgnIGZyb20gJXI6ICVyIgorICAgICAgICAgICAgICAgICAgICAgICUgKHVuYywgZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLnRlc3RkYXRhLCAndGVzdF91bmNfcGF0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2QuX19maWxlX18uc3RhcnRzd2l0aCh1bmMpLCBtb2QuX19maWxlX18pCisgICAgICAgIHVubG9hZCgidGVzdF91bmNfcGF0aCIpCiAKIAogY2xhc3MgUmVsYXRpdmVJbXBvcnRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC01NjUsNyArNTg3LDcgQEAKIAogICAgICAgICAjIENoZWNrIHJlbGF0aXZlIGltcG9ydCBmYWlscyB3aXRoIHBhY2thZ2Ugc2V0IHRvIGEgbm9uLXN0cmluZwogICAgICAgICBucyA9IGRpY3QoX19wYWNrYWdlX189b2JqZWN0KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNoZWNrX3JlbGF0aXZlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNoZWNrX3JlbGF0aXZlKQogCiAgICAgZGVmIHRlc3RfYWJzb2x1dGVfaW1wb3J0X3dpdGhvdXRfZnV0dXJlKHNlbGYpOgogICAgICAgICAjIElmIGV4cGxpY2l0IHJlbGF0aXZlIGltcG9ydCBzeW50YXggaXMgdXNlZCwgdGhlbiBkbyBub3QgdHJ5CkBAIC02MTMsNiArNjM1LDcgQEAKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuc291cmNlLCAndycpIGFzIGZwOgogICAgICAgICAgICAgcHJpbnQoJyMgVGhpcyBpcyBhIHRlc3QgZmlsZSB3cml0dGVuIGJ5IHRlc3RfaW1wb3J0LnB5JywgZmlsZT1mcCkKICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLmN1cmRpcikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgYXNzZXJ0IHN5cy5wYXRoWzBdID09IG9zLmN1cmRpciwgJ1VuZXhwZWN0ZWQgc3lzLnBhdGhbMF0nCkBAIC02NjAsNiArNjgzLDcgQEAKICAgICAgICAgcHljX2ZpbGUgPSBtYWtlX2xlZ2FjeV9weWMoc2VsZi5zb3VyY2UpCiAgICAgICAgIG9zLnJlbW92ZShzZWxmLnNvdXJjZSkKICAgICAgICAgdW5sb2FkKFRFU1RGTikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgbSA9IF9faW1wb3J0X18oVEVTVEZOKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX19maWxlX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKG9zLmN1cmRpciwgb3MucGF0aC5yZWxwYXRoKHB5Y19maWxlKSkpCkBAIC02ODAsNiArNzA0LDcgQEAKICAgICAgICAgcHljX2ZpbGUgPSBtYWtlX2xlZ2FjeV9weWMoc2VsZi5zb3VyY2UpCiAgICAgICAgIG9zLnJlbW92ZShzZWxmLnNvdXJjZSkKICAgICAgICAgdW5sb2FkKFRFU1RGTikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgbSA9IF9faW1wb3J0X18oVEVTVEZOKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX19jYWNoZWRfXywKICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ob3MuY3VyZGlyLCBvcy5wYXRoLnJlbHBhdGgocHljX2ZpbGUpKSkKQEAgLTY4OCw2ICs3MTMsOCBAQAogICAgICAgICAjIExpa2UgdGVzdF9fX2NhY2hlZF9fIGJ1dCBmb3IgcGFja2FnZXMuCiAgICAgICAgIGRlZiBjbGVhbnVwKCk6CiAgICAgICAgICAgICBybXRyZWUoJ3BlcDMxNDcnKQorICAgICAgICAgICAgdW5sb2FkKCdwZXAzMTQ3LmZvbycpCisgICAgICAgICAgICB1bmxvYWQoJ3BlcDMxNDcnKQogICAgICAgICBvcy5ta2RpcigncGVwMzE0NycpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjbGVhbnVwKQogICAgICAgICAjIFRvdWNoIHRoZSBfX2luaXRfXy5weQpAQCAtNjk1LDggKzcyMiw3IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oJ3BlcDMxNDcnLCAnZm9vLnB5JyksICd3Jyk6CiAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHVubG9hZCgncGVwMzE0Ny5mb28nKQotICAgICAgICB1bmxvYWQoJ3BlcDMxNDcnKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBtID0gX19pbXBvcnRfXygncGVwMzE0Ny5mb28nKQogICAgICAgICBpbml0X3B5YyA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZSgKICAgICAgICAgICAgIG9zLnBhdGguam9pbigncGVwMzE0NycsICdfX2luaXRfXy5weScpKQpAQCAtNzEwLDE4ICs3MzYsMjAgQEAKICAgICAgICAgIyBQRVAgMzE0NyBweWMgZmlsZS4KICAgICAgICAgZGVmIGNsZWFudXAoKToKICAgICAgICAgICAgIHJtdHJlZSgncGVwMzE0NycpCisgICAgICAgICAgICB1bmxvYWQoJ3BlcDMxNDcuZm9vJykKKyAgICAgICAgICAgIHVubG9hZCgncGVwMzE0NycpCiAgICAgICAgIG9zLm1rZGlyKCdwZXAzMTQ3JykKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNsZWFudXApCi0gICAgICAgIHVubG9hZCgncGVwMzE0Ny5mb28nKQotICAgICAgICB1bmxvYWQoJ3BlcDMxNDcnKQogICAgICAgICAjIFRvdWNoIHRoZSBfX2luaXRfXy5weQogICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKCdwZXAzMTQ3JywgJ19faW5pdF9fLnB5JyksICd3Jyk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oJ3BlcDMxNDcnLCAnZm9vLnB5JyksICd3Jyk6CiAgICAgICAgICAgICBwYXNzCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3LmZvbycpCiAgICAgICAgIHVubG9hZCgncGVwMzE0Ny5mb28nKQogICAgICAgICB1bmxvYWQoJ3BlcDMxNDcnKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBtID0gX19pbXBvcnRfXygncGVwMzE0Ny5mb28nKQogICAgICAgICBpbml0X3B5YyA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZSgKICAgICAgICAgICAgIG9zLnBhdGguam9pbigncGVwMzE0NycsICdfX2luaXRfXy5weScpKQpAQCAtNzMwLDIyICs3NTgsMjU2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLm1vZHVsZXNbJ3BlcDMxNDcuZm9vJ10uX19jYWNoZWRfXywKICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ob3MuY3VyZGlyLCBmb29fcHljKSkKIAorICAgIGRlZiB0ZXN0X3JlY29tcHV0ZV9weWNfc2FtZV9zZWNvbmQoc2VsZik6CisgICAgICAgICMgRXZlbiB3aGVuIHRoZSBzb3VyY2UgZmlsZSBkb2Vzbid0IGNoYW5nZSB0aW1lc3RhbXAsIGEgY2hhbmdlIGluCisgICAgICAgICMgc291cmNlIHNpemUgaXMgZW5vdWdoIHRvIHRyaWdnZXIgcmVjb21wdXRhdGlvbiBvZiB0aGUgcHljIGZpbGUuCisgICAgICAgIF9faW1wb3J0X18oVEVTVEZOKQorICAgICAgICB1bmxvYWQoVEVTVEZOKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5zb3VyY2UsICdhJykgYXMgZnA6CisgICAgICAgICAgICBwcmludCgieCA9IDUiLCBmaWxlPWZwKQorICAgICAgICBtID0gX19pbXBvcnRfXyhURVNURk4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS54LCA1KQogCi1jbGFzcyBSZWxhdGl2ZUltcG9ydEZyb21JbXBvcnRsaWJUZXN0cyh0ZXN0X3JlbGF0aXZlX2ltcG9ydHMuUmVsYXRpdmVJbXBvcnRzKToKKworY2xhc3MgVGVzdFN5bWJvbGljYWxseUxpbmtlZFBhY2thZ2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHBhY2thZ2VfbmFtZSA9ICdzYW1wbGUnCisgICAgdGFnZ2VkID0gcGFja2FnZV9uYW1lICsgJy10YWdnZWQnCiAKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuX2ltcG9ydGxpYl91dGlsX2ZsYWcgPSBpbXBvcnRsaWJfdXRpbC51c2luZ19fX2ltcG9ydF9fCi0gICAgICAgIGltcG9ydGxpYl91dGlsLnVzaW5nX19faW1wb3J0X18gPSBUcnVlCisgICAgICAgIHRlc3Quc3VwcG9ydC5ybXRyZWUoc2VsZi50YWdnZWQpCisgICAgICAgIHRlc3Quc3VwcG9ydC5ybXRyZWUoc2VsZi5wYWNrYWdlX25hbWUpCisgICAgICAgIHNlbGYub3JpZ19zeXNfcGF0aCA9IHN5cy5wYXRoWzpdCisKKyAgICAgICAgIyBjcmVhdGUgYSBzYW1wbGUgcGFja2FnZTsgaW1hZ2luZSB5b3UgaGF2ZSBhIHBhY2thZ2Ugd2l0aCBhIHRhZyBhbmQKKyAgICAgICAgIyAgeW91IHdhbnQgdG8gc3ltYm9saWNhbGx5IGxpbmsgaXQgZnJvbSBpdHMgdW50YWdnZWQgbmFtZS4KKyAgICAgICAgb3MubWtkaXIoc2VsZi50YWdnZWQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0ZXN0LnN1cHBvcnQucm10cmVlLCBzZWxmLnRhZ2dlZCkKKyAgICAgICAgaW5pdF9maWxlID0gb3MucGF0aC5qb2luKHNlbGYudGFnZ2VkLCAnX19pbml0X18ucHknKQorICAgICAgICB0ZXN0LnN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoaW5pdF9maWxlKQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMoaW5pdF9maWxlKQorCisgICAgICAgICMgbm93IGNyZWF0ZSBhIHN5bWxpbmsgdG8gdGhlIHRhZ2dlZCBwYWNrYWdlCisgICAgICAgICMgc2FtcGxlIC0+IHNhbXBsZS10YWdnZWQKKyAgICAgICAgb3Muc3ltbGluayhzZWxmLnRhZ2dlZCwgc2VsZi5wYWNrYWdlX25hbWUsIHRhcmdldF9pc19kaXJlY3Rvcnk9VHJ1ZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRlc3Quc3VwcG9ydC51bmxpbmssIHNlbGYucGFja2FnZV9uYW1lKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5pc2RpcihzZWxmLnBhY2thZ2VfbmFtZSksIFRydWUpCisKKyAgICAgICAgYXNzZXJ0IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnBhY2thZ2VfbmFtZSwgJ19faW5pdF9fLnB5JykpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIGltcG9ydGxpYl91dGlsLnVzaW5nX19faW1wb3J0X18gPSBzZWxmLl9pbXBvcnRsaWJfdXRpbF9mbGFnCisgICAgICAgIHN5cy5wYXRoWzpdID0gc2VsZi5vcmlnX3N5c19wYXRoCisKKyAgICAjIHJlZ3Jlc3Npb24gdGVzdCBmb3IgaXNzdWU2NzI3CisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoCisgICAgICAgIG5vdCBoYXNhdHRyKHN5cywgJ2dldHdpbmRvd3N2ZXJzaW9uJykKKyAgICAgICAgb3Igc3lzLmdldHdpbmRvd3N2ZXJzaW9uKCkgPj0gKDYsIDApLAorICAgICAgICAiV2luZG93cyBWaXN0YSBvciBsYXRlciByZXF1aXJlZCIpCisgICAgQHRlc3Quc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3Rfc3ltbGlua2VkX2Rpcl9pbXBvcnRhYmxlKHNlbGYpOgorICAgICAgICAjIG1ha2Ugc3VyZSBzYW1wbGUgY2FuIG9ubHkgYmUgaW1wb3J0ZWQgZnJvbSB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisgICAgICAgIHN5cy5wYXRoWzpdID0gWycuJ10KKyAgICAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKHNlbGYucGFja2FnZV9uYW1lKQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYucGFja2FnZV9uYW1lLCAnX19pbml0X18ucHknKSkKKworICAgICAgICAjIFRyeSB0byBpbXBvcnQgdGhlIHBhY2thZ2UKKyAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoc2VsZi5wYWNrYWdlX25hbWUpCisKKworQGNweXRob25fb25seQorY2xhc3MgSW1wb3J0bGliQm9vdHN0cmFwVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgVGhlc2UgdGVzdHMgY2hlY2sgdGhhdCBpbXBvcnRsaWIgaXMgYm9vdHN0cmFwcGVkLgorCisgICAgZGVmIHRlc3RfZnJvemVuX2ltcG9ydGxpYihzZWxmKToKKyAgICAgICAgbW9kID0gc3lzLm1vZHVsZXNbJ19mcm96ZW5faW1wb3J0bGliJ10KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZCkKKworICAgIGRlZiB0ZXN0X2Zyb3plbl9pbXBvcnRsaWJfaXNfYm9vdHN0cmFwKHNlbGYpOgorICAgICAgICBmcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAorICAgICAgICBtb2QgPSBzeXMubW9kdWxlc1snX2Zyb3plbl9pbXBvcnRsaWInXQorICAgICAgICBzZWxmLmFzc2VydElzKG1vZCwgX2Jvb3RzdHJhcCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuX19uYW1lX18sICdpbXBvcnRsaWIuX2Jvb3RzdHJhcCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLl9fcGFja2FnZV9fLCAnaW1wb3J0bGliJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZC5fX2ZpbGVfXy5lbmRzd2l0aCgnX2Jvb3RzdHJhcC5weScpLCBtb2QuX19maWxlX18pCisKKyAgICBkZWYgdGVzdF90aGVyZV9jYW5fYmVfb25seV9vbmUoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE1Mzg2IHJldmVhbGVkIGEgdHJpY2t5IGxvb3Bob2xlIGluIHRoZSBib290c3RyYXBwaW5nCisgICAgICAgICMgVGhpcyB0ZXN0IGlzIHRlY2huaWNhbGx5IHJlZHVuZGFudCwgc2luY2UgdGhlIGJ1ZyBjYXVzZWQgaW1wb3J0aW5nCisgICAgICAgICMgdGhpcyB0ZXN0IG1vZHVsZSB0byBjcmFzaCBjb21wbGV0ZWx5LCBidXQgaXQgaGVscHMgcHJvdmUgdGhlIHBvaW50CisgICAgICAgIGZyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKKyAgICAgICAgbW9kID0gc3lzLm1vZHVsZXNbJ19mcm96ZW5faW1wb3J0bGliJ10KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYWNoaW5lcnkuRmlsZUZpbmRlciwgbW9kLkZpbGVGaW5kZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaW1wLm5ld19tb2R1bGUsIG1vZC5uZXdfbW9kdWxlKQorCisKK2NsYXNzIEltcG9ydFRyYWNlYmFja1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgb3MubWtkaXIoVEVTVEZOKQorICAgICAgICBzZWxmLm9sZF9wYXRoID0gc3lzLnBhdGhbOl0KKyAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIFRFU1RGTikKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc3lzLnBhdGhbOl0gPSBzZWxmLm9sZF9wYXRoCisgICAgICAgIHJtdHJlZShURVNURk4pCisKKyAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBtb2QsIGNvbnRlbnRzLCBleHQ9Ii5weSIpOgorICAgICAgICBmbmFtZSA9IG9zLnBhdGguam9pbihURVNURk4sIG1vZCArIGV4dCkKKyAgICAgICAgd2l0aCBvcGVuKGZuYW1lLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGNvbnRlbnRzKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodW5sb2FkLCBtb2QpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCisgICAgICAgIHJldHVybiBmbmFtZQorCisgICAgZGVmIGFzc2VydF90cmFjZWJhY2soc2VsZiwgdGIsIGZpbGVzKToKKyAgICAgICAgZGVkdXBlZF9maWxlcyA9IFtdCisgICAgICAgIHdoaWxlIHRiOgorICAgICAgICAgICAgY29kZSA9IHRiLnRiX2ZyYW1lLmZfY29kZQorICAgICAgICAgICAgZm4gPSBjb2RlLmNvX2ZpbGVuYW1lCisgICAgICAgICAgICBpZiBub3QgZGVkdXBlZF9maWxlcyBvciBmbiAhPSBkZWR1cGVkX2ZpbGVzWy0xXToKKyAgICAgICAgICAgICAgICBkZWR1cGVkX2ZpbGVzLmFwcGVuZChmbikKKyAgICAgICAgICAgIHRiID0gdGIudGJfbmV4dAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkZWR1cGVkX2ZpbGVzKSwgbGVuKGZpbGVzKSwgZGVkdXBlZF9maWxlcykKKyAgICAgICAgZm9yIGZuLCBwYXQgaW4gemlwKGRlZHVwZWRfZmlsZXMsIGZpbGVzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0LCBmbikKKworICAgIGRlZiB0ZXN0X25vbmV4aXN0ZW50X21vZHVsZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBhc3NlcnRSYWlzZXMoKSBjbGVhcnMgX190cmFjZWJhY2tfXworICAgICAgICAgICAgaW1wb3J0IG5vbmV4aXN0ZW50X3h5enp5CisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiSW1wb3J0RXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfX10pCisKKyAgICBkZWYgdGVzdF9ub25leGlzdGVudF9tb2R1bGVfbmVzdGVkKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9tb2R1bGUoImZvbyIsICJpbXBvcnQgbm9uZXhpc3RlbnRfeHl6enkiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgZm9vCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiSW1wb3J0RXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfXywgJ2Zvby5weSddKQorCisgICAgZGVmIHRlc3RfZXhlY19mYWlsdXJlKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9tb2R1bGUoImZvbyIsICIxLzAiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgZm9vCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiWmVyb0RpdmlzaW9uRXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfXywgJ2Zvby5weSddKQorCisgICAgZGVmIHRlc3RfZXhlY19mYWlsdXJlX25lc3RlZChzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfbW9kdWxlKCJmb28iLCAiaW1wb3J0IGJhciIpCisgICAgICAgIHNlbGYuY3JlYXRlX21vZHVsZSgiYmFyIiwgIjEvMCIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBmb28KKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJaZXJvRGl2aXNpb25FcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0X3RyYWNlYmFjayh0YiwgW19fZmlsZV9fLCAnZm9vLnB5JywgJ2Jhci5weSddKQorCisgICAgIyBBIGZldyBtb3JlIGV4YW1wbGVzIGZyb20gaXNzdWUgIzE1NDI1CisgICAgZGVmIHRlc3Rfc3ludGF4X2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9tb2R1bGUoImZvbyIsICJpbnZhbGlkIHN5bnRheCBpcyBpbnZhbGlkIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IGZvbworICAgICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZToKKyAgICAgICAgICAgIHRiID0gZS5fX3RyYWNlYmFja19fCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIlN5bnRheEVycm9yIHNob3VsZCBoYXZlIGJlZW4gcmFpc2VkIikKKyAgICAgICAgc2VsZi5hc3NlcnRfdHJhY2ViYWNrKHRiLCBbX19maWxlX19dKQorCisgICAgZGVmIF9zZXR1cF9icm9rZW5fcGFja2FnZShzZWxmLCBwYXJlbnQsIGNoaWxkKToKKyAgICAgICAgcGtnX25hbWUgPSAiX3BhcmVudF9mb28iCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh1bmxvYWQsIHBrZ19uYW1lKQorICAgICAgICBwa2dfcGF0aCA9IG9zLnBhdGguam9pbihURVNURk4sIHBrZ19uYW1lKQorICAgICAgICBvcy5ta2Rpcihwa2dfcGF0aCkKKyAgICAgICAgIyBUb3VjaCB0aGUgX19pbml0X18ucHkKKyAgICAgICAgaW5pdF9wYXRoID0gb3MucGF0aC5qb2luKHBrZ19wYXRoLCAnX19pbml0X18ucHknKQorICAgICAgICB3aXRoIG9wZW4oaW5pdF9wYXRoLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHBhcmVudCkKKyAgICAgICAgYmFyX3BhdGggPSBvcy5wYXRoLmpvaW4ocGtnX3BhdGgsICdiYXIucHknKQorICAgICAgICB3aXRoIG9wZW4oYmFyX3BhdGgsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoY2hpbGQpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCisgICAgICAgIHJldHVybiBpbml0X3BhdGgsIGJhcl9wYXRoCisKKyAgICBkZWYgdGVzdF9icm9rZW5fc3VibW9kdWxlKHNlbGYpOgorICAgICAgICBpbml0X3BhdGgsIGJhcl9wYXRoID0gc2VsZi5fc2V0dXBfYnJva2VuX3BhY2thZ2UoIiIsICIxLzAiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgX3BhcmVudF9mb28uYmFyCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiWmVyb0RpdmlzaW9uRXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfXywgYmFyX3BhdGhdKQorCisgICAgZGVmIHRlc3RfYnJva2VuX2Zyb20oc2VsZik6CisgICAgICAgIGluaXRfcGF0aCwgYmFyX3BhdGggPSBzZWxmLl9zZXR1cF9icm9rZW5fcGFja2FnZSgiIiwgIjEvMCIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZyb20gX3BhcmVudF9mb28gaW1wb3J0IGJhcgorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHRiID0gZS5fX3RyYWNlYmFja19fCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIkltcG9ydEVycm9yIHNob3VsZCBoYXZlIGJlZW4gcmFpc2VkIikKKyAgICAgICAgc2VsZi5hc3NlcnRfdHJhY2ViYWNrKHRiLCBbX19maWxlX18sIGJhcl9wYXRoXSkKKworICAgIGRlZiB0ZXN0X2Jyb2tlbl9wYXJlbnQoc2VsZik6CisgICAgICAgIGluaXRfcGF0aCwgYmFyX3BhdGggPSBzZWxmLl9zZXR1cF9icm9rZW5fcGFja2FnZSgiMS8wIiwgIiIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBfcGFyZW50X2Zvby5iYXIKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJaZXJvRGl2aXNpb25FcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0X3RyYWNlYmFjayh0YiwgW19fZmlsZV9fLCBpbml0X3BhdGhdKQorCisgICAgZGVmIHRlc3RfYnJva2VuX3BhcmVudF9mcm9tKHNlbGYpOgorICAgICAgICBpbml0X3BhdGgsIGJhcl9wYXRoID0gc2VsZi5fc2V0dXBfYnJva2VuX3BhY2thZ2UoIjEvMCIsICIiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmcm9tIF9wYXJlbnRfZm9vIGltcG9ydCBiYXIKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJaZXJvRGl2aXNpb25FcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0X3RyYWNlYmFjayh0YiwgW19fZmlsZV9fLCBpbml0X3BhdGhdKQorCisgICAgQGNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2ltcG9ydF9idWcoc2VsZik6CisgICAgICAgICMgV2Ugc2ltdWxhdGUgYSBidWcgaW4gaW1wb3J0bGliIGFuZCBjaGVjayB0aGF0IGl0J3Mgbm90IHN0cmlwcGVkCisgICAgICAgICMgYXdheSBmcm9tIHRoZSB0cmFjZWJhY2suCisgICAgICAgIHNlbGYuY3JlYXRlX21vZHVsZSgiZm9vIiwgIiIpCisgICAgICAgIGltcG9ydGxpYiA9IHN5cy5tb2R1bGVzWydfZnJvemVuX2ltcG9ydGxpYiddCisgICAgICAgIG9sZF9sb2FkX21vZHVsZSA9IGltcG9ydGxpYi5Tb3VyY2VMb2FkZXIubG9hZF9tb2R1bGUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVmIGxvYWRfbW9kdWxlKCphcmdzKToKKyAgICAgICAgICAgICAgICAxLzAKKyAgICAgICAgICAgIGltcG9ydGxpYi5Tb3VyY2VMb2FkZXIubG9hZF9tb2R1bGUgPSBsb2FkX21vZHVsZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGltcG9ydCBmb28KKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIHRiID0gZS5fX3RyYWNlYmFja19fCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiWmVyb0RpdmlzaW9uRXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfdHJhY2ViYWNrKHRiLCBbX19maWxlX18sICc8ZnJvemVuIGltcG9ydGxpYicsIF9fZmlsZV9fXSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGltcG9ydGxpYi5Tb3VyY2VMb2FkZXIubG9hZF9tb2R1bGUgPSBvbGRfbG9hZF9tb2R1bGUKIAogCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgcnVuX3VuaXR0ZXN0KEltcG9ydFRlc3RzLCBQeWNhY2hlVGVzdHMsCisgICAgcnVuX3VuaXR0ZXN0KEltcG9ydFRlc3RzLCBQeWNhY2hlVGVzdHMsIEZpbGVQZXJtaXNzaW9uVGVzdHMsCiAgICAgICAgICAgICAgICAgIFB5Y1Jld3JpdGluZ1Rlc3RzLCBQYXRoc1Rlc3RzLCBSZWxhdGl2ZUltcG9ydFRlc3RzLAogICAgICAgICAgICAgICAgICBPdmVycmlkaW5nSW1wb3J0QnVpbHRpblRlc3RzLAotICAgICAgICAgICAgICAgICBSZWxhdGl2ZUltcG9ydEZyb21JbXBvcnRsaWJUZXN0cykKKyAgICAgICAgICAgICAgICAgSW1wb3J0bGliQm9vdHN0cmFwVGVzdHMsCisgICAgICAgICAgICAgICAgIFRlc3RTeW1ib2xpY2FsbHlMaW5rZWRQYWNrYWdlLAorICAgICAgICAgICAgICAgICBJbXBvcnRUcmFjZWJhY2tUZXN0cykKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRob29rcy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0aG9va3MucHkKaW5kZXggZWM2NzMwZS4uMmEyMmQxYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRob29rcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGhvb2tzLnB5CkBAIC01MSw3ICs1MSw3IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aD10ZXN0X3BhdGgpOgogICAgICAgICBpZiBwYXRoICE9IHRlc3RfcGF0aDoKLSAgICAgICAgICAgICMgaWYgb3V0IGNsYXNzIGlzIG9uIHN5cy5wYXRoX2hvb2tzLCB3ZSBtdXN0IHJhaXNlCisgICAgICAgICAgICAjIGlmIG91ciBjbGFzcyBpcyBvbiBzeXMucGF0aF9ob29rcywgd2UgbXVzdCByYWlzZQogICAgICAgICAgICAgIyBJbXBvcnRFcnJvciBmb3IgYW55IHBhdGggaXRlbSB0aGF0IHdlIGNhbid0IGhhbmRsZS4KICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCiAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKQEAgLTIxNSw3ICsyMTUsNyBAQAogICAgICAgICBzZWxmLmRvVGVzdEltcG9ydHMoaSkKIAogICAgIGRlZiB0ZXN0UGF0aEhvb2soc2VsZik6Ci0gICAgICAgIHN5cy5wYXRoX2hvb2tzLmFwcGVuZChQYXRoSW1wb3J0ZXIpCisgICAgICAgIHN5cy5wYXRoX2hvb2tzLmluc2VydCgwLCBQYXRoSW1wb3J0ZXIpCiAgICAgICAgIHN5cy5wYXRoLmFwcGVuZCh0ZXN0X3BhdGgpCiAgICAgICAgIHNlbGYuZG9UZXN0SW1wb3J0cygpCiAKQEAgLTIyOCw4ICsyMjgsMTAgQEAKICAgICBkZWYgdGVzdEltcFdyYXBwZXIoc2VsZik6CiAgICAgICAgIGkgPSBJbXBXcmFwcGVyKCkKICAgICAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoaSkKLSAgICAgICAgc3lzLnBhdGhfaG9va3MuYXBwZW5kKEltcFdyYXBwZXIpCi0gICAgICAgIG1uYW1lcyA9ICgiY29sb3JzeXMiLCAidXJsbGliLnBhcnNlIiwgImRpc3R1dGlscy5jb3JlIikKKyAgICAgICAgc3lzLnBhdGhfaG9va3MuaW5zZXJ0KDAsIEltcFdyYXBwZXIpCisgICAgICAgIG1uYW1lcyA9ICgKKyAgICAgICAgICAgICJjb2xvcnN5cyIsICJ1cmxsaWIucGFyc2UiLCAiZGlzdHV0aWxzLmNvcmUiLCAic3lzIiwKKyAgICAgICAgKQogICAgICAgICBmb3IgbW5hbWUgaW4gbW5hbWVzOgogICAgICAgICAgICAgcGFyZW50ID0gbW5hbWUuc3BsaXQoIi4iKVswXQogICAgICAgICAgICAgZm9yIG4gaW4gbGlzdChzeXMubW9kdWxlcyk6CkBAIC0yMzcsNyArMjM5LDggQEAKICAgICAgICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW25dCiAgICAgICAgIGZvciBtbmFtZSBpbiBtbmFtZXM6CiAgICAgICAgICAgICBtID0gX19pbXBvcnRfXyhtbmFtZSwgZ2xvYmFscygpLCBsb2NhbHMoKSwgWyJfX2R1bW15X18iXSkKLSAgICAgICAgICAgIG0uX19sb2FkZXJfXyAgIyB0byBtYWtlIHN1cmUgd2UgYWN0dWFsbHkgaGFuZGxlZCB0aGUgaW1wb3J0CisgICAgICAgICAgICAjIHRvIG1ha2Ugc3VyZSB3ZSBhY3R1YWxseSBoYW5kbGVkIHRoZSBpbXBvcnQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG0sICJfX2xvYWRlcl9fIikpCiAKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVkMDU4NS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi5weQorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotZnJvbSBpbXBvcnRsaWIudGVzdC5fX21haW5fXyBpbXBvcnQgdGVzdF9tYWluCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTM0NWNkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvX19pbml0X18ucHkKQEAgLTAsMCArMSwzMyBAQAoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2ltcG9ydCB1bml0dGVzdAorCitkZWYgdGVzdF9zdWl0ZShwYWNrYWdlPV9fcGFja2FnZV9fLCBkaXJlY3Rvcnk9b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSk6CisgICAgc3VpdGUgPSB1bml0dGVzdC5UZXN0U3VpdGUoKQorICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoZGlyZWN0b3J5KToKKyAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCgnLicsICdfXycpKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCBuYW1lKQorICAgICAgICBpZiAob3MucGF0aC5pc2ZpbGUocGF0aCkgYW5kIG5hbWUuc3RhcnRzd2l0aCgndGVzdF8nKSBhbmQKKyAgICAgICAgICAgICAgICBuYW1lLmVuZHN3aXRoKCcucHknKSk6CisgICAgICAgICAgICBzdWJtb2R1bGVfbmFtZSA9IG9zLnBhdGguc3BsaXRleHQobmFtZSlbMF0KKyAgICAgICAgICAgIG1vZHVsZV9uYW1lID0gInswfS57MX0iLmZvcm1hdChwYWNrYWdlLCBzdWJtb2R1bGVfbmFtZSkKKyAgICAgICAgICAgIF9faW1wb3J0X18obW9kdWxlX25hbWUsIGxldmVsPTApCisgICAgICAgICAgICBtb2R1bGVfdGVzdHMgPSB1bml0dGVzdC5maW5kVGVzdENhc2VzKHN5cy5tb2R1bGVzW21vZHVsZV9uYW1lXSkKKyAgICAgICAgICAgIHN1aXRlLmFkZFRlc3QobW9kdWxlX3Rlc3RzKQorICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIocGF0aCk6CisgICAgICAgICAgICBwYWNrYWdlX25hbWUgPSAiezB9LnsxfSIuZm9ybWF0KHBhY2thZ2UsIG5hbWUpCisgICAgICAgICAgICBfX2ltcG9ydF9fKHBhY2thZ2VfbmFtZSwgbGV2ZWw9MCkKKyAgICAgICAgICAgIHBhY2thZ2VfdGVzdHMgPSBnZXRhdHRyKHN5cy5tb2R1bGVzW3BhY2thZ2VfbmFtZV0sICd0ZXN0X3N1aXRlJykoKQorICAgICAgICAgICAgc3VpdGUuYWRkVGVzdChwYWNrYWdlX3Rlc3RzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29udGludWUKKyAgICByZXR1cm4gc3VpdGUKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgc3RhcnRfZGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgIHRvcF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKHN0YXJ0X2RpcikpCisgICAgdGVzdF9sb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCh0ZXN0X2xvYWRlci5kaXNjb3ZlcihzdGFydF9kaXIsIHRvcF9sZXZlbF9kaXI9dG9wX2RpcikpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9fX21haW5fXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL19fbWFpbl9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzOTcxMjgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9fX21haW5fXy5weQpAQCAtMCwwICsxLDIwIEBACisiIiJSdW4gaW1wb3J0bGliJ3MgdGVzdCBzdWl0ZS4KKworU3BlY2lmeWluZyB0aGUgYGAtLWJ1aWx0aW5gYCBmbGFnIHdpbGwgcnVuIHRlc3RzLCB3aGVyZSBhcHBsaWNhYmxlLCB3aXRoCitidWlsdGlucy5fX2ltcG9ydF9fIGluc3RlYWQgb2YgaW1wb3J0bGliLl9faW1wb3J0X18uCisKKyIiIgorZnJvbSAuIGltcG9ydCB0ZXN0X21haW4KKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGltcG9ydCBhcmdwYXJzZQorCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J0V4ZWN1dGUgdGhlIGltcG9ydGxpYiB0ZXN0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1aXRlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYicsICctLWJ1aWx0aW4nLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndXNlIGJ1aWx0aW5zLl9faW1wb3J0X18oKSBpbnN0ZWFkIG9mIGltcG9ydGxpYicpCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICBpZiBhcmdzLmJ1aWx0aW46CisgICAgICAgIHV0aWwudXNpbmdfX19pbXBvcnRfXyA9IFRydWUKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2FiYy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2FiYy5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2FiYy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYWJjLnB5CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvYnVpbHRpbi9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vX19pbml0X18ucHkKc2ltaWxhcml0eSBpbmRleCA2NCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vX19pbml0X18ucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vX19pbml0X18ucHkKaW5kZXggMzFhM2I1Zi4uMTVjMGFkZSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi9fX2luaXRfXy5weQpAQCAtMSwxMCArMSwxMCBAQAotaW1wb3J0IGltcG9ydGxpYi50ZXN0Citmcm9tIC4uIGltcG9ydCB0ZXN0X3N1aXRlCiBpbXBvcnQgb3MKIAogCiBkZWYgdGVzdF9zdWl0ZSgpOgogICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuYnVpbHRpbicsIGRpcmVjdG9yeSkKKyAgICByZXR1cm4gdGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuYnVpbHRpbicsIGRpcmVjdG9yeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vdGVzdF9maW5kZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfZmluZGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL3Rlc3RfZmluZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfZmluZGVyLnB5CmluZGV4IDQwZjY5MGUuLjE0NjUzOGQgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL3Rlc3RfZmluZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9maW5kZXIucHkKQEAgLTM1LDE0ICszNSwxNCBAQAogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6CiAgICAgICAgIGFzc2VydCAnaW1wb3J0bGliJyBub3QgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzCiAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZmluZF9tb2R1bGUoJ2ltcG9ydGxpYicpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIgaXMgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobG9hZGVyKQogCiAgICAgZGVmIHRlc3RfaWdub3JlX3BhdGgoc2VsZik6CiAgICAgICAgICMgVGhlIHZhbHVlIGZvciAncGF0aCcgc2hvdWxkIGFsd2F5cyB0cmlnZ2VyIGEgZmFpbGVkIGltcG9ydC4KICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoYnVpbHRpbl91dGlsLk5BTUUpOgogICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5maW5kX21vZHVsZShidWlsdGluX3V0aWwuTkFNRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsncGtnJ10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVyIGlzIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShsb2FkZXIpCiAKIAogCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvYnVpbHRpbi90ZXN0X2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKc2ltaWxhcml0eSBpbmRleCA4MyUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKaW5kZXggMWE4NTM5Yi4uOGUxODZlNyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2xvYWRlci5weQpAQCAtMTgsMTAgKzE4LDEwIEBACiAKICAgICBkZWYgdmVyaWZ5KHNlbGYsIG1vZHVsZSk6CiAgICAgICAgICIiIlZlcmlmeSB0aGF0IHRoZSBtb2R1bGUgbWF0Y2hlcyBhZ2FpbnN0IHdoYXQgaXQgc2hvdWxkIGhhdmUuIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpCiAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBzZWxmLnZlcmlmaWNhdGlvbi5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobW9kdWxlLl9fbmFtZV9fIGluIHN5cy5tb2R1bGVzKQorICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZS5fX25hbWVfXywgc3lzLm1vZHVsZXMpCiAKICAgICBsb2FkX21vZHVsZSA9IHN0YXRpY21ldGhvZChsYW1iZGEgbmFtZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5sb2FkX21vZHVsZShuYW1lKSkKQEAgLTQ5LDIwICs0OSwyMiBAQAogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShidWlsdGluX3V0aWwuTkFNRSk6CiAgICAgICAgICAgICBtb2R1bGUxID0gc2VsZi5sb2FkX21vZHVsZShidWlsdGluX3V0aWwuTkFNRSkKICAgICAgICAgICAgIG1vZHVsZTIgPSBzZWxmLmxvYWRfbW9kdWxlKGJ1aWx0aW5fdXRpbC5OQU1FKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZTEgaXMgbW9kdWxlMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlMSwgbW9kdWxlMikKIAogICAgIGRlZiB0ZXN0X3VubG9hZGFibGUoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnZHNzZHNkZmZmJwogICAgICAgICBhc3NlcnQgbmFtZSBub3QgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHNlbGYubG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKIAogICAgIGRlZiB0ZXN0X2FscmVhZHlfaW1wb3J0ZWQoc2VsZik6CiAgICAgICAgICMgVXNpbmcgdGhlIG5hbWUgb2YgYSBtb2R1bGUgYWxyZWFkeSBpbXBvcnRlZCBidXQgbm90IGEgYnVpbHQtaW4gc2hvdWxkCiAgICAgICAgICMgc3RpbGwgZmFpbC4KICAgICAgICAgYXNzZXJ0IGhhc2F0dHIoaW1wb3J0bGliLCAnX19maWxlX18nKSAgIyBOb3QgYSBidWlsdC1pbi4KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgc2VsZi5sb2FkX21vZHVsZSgnaW1wb3J0bGliJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgJ2ltcG9ydGxpYicpCiAKIAogY2xhc3MgSW5zcGVjdExvYWRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTcyLDEyICs3NCwxMiBAQAogICAgIGRlZiB0ZXN0X2dldF9jb2RlKHNlbGYpOgogICAgICAgICAjIFRoZXJlIGlzIG5vIGNvZGUgb2JqZWN0LgogICAgICAgICByZXN1bHQgPSBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmdldF9jb2RlKGJ1aWx0aW5fdXRpbC5OQU1FKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzdWx0IGlzIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlc3VsdCkKIAogICAgIGRlZiB0ZXN0X2dldF9zb3VyY2Uoc2VsZik6CiAgICAgICAgICMgVGhlcmUgaXMgbm8gc291cmNlLgogICAgICAgICByZXN1bHQgPSBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmdldF9zb3VyY2UoYnVpbHRpbl91dGlsLk5BTUUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXN1bHQgaXMgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVzdWx0KQogCiAgICAgZGVmIHRlc3RfaXNfcGFja2FnZShzZWxmKToKICAgICAgICAgIyBDYW5ub3QgYmUgYSBwYWNrYWdlLgpAQCAtODgsOCArOTAsOSBAQAogICAgICAgICAjIE1vZHVsZXMgbm90IGJ1aWx0LWluIHNob3VsZCByYWlzZSBJbXBvcnRFcnJvci4KICAgICAgICAgZm9yIG1ldGhfbmFtZSBpbiAoJ2dldF9jb2RlJywgJ2dldF9zb3VyY2UnLCAnaXNfcGFja2FnZScpOgogICAgICAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLCBtZXRoX25hbWUpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgIG1ldGhvZChidWlsdGluX3V0aWwuQkFEX05BTUUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJ1aWx0aW5fdXRpbC5CQURfTkFNRSkKIAogCiAKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3V0aWwucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL3V0aWwucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdXRpbC5weQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDY3JQpjb3B5IGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weQpjb3B5IHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi9fX2luaXRfXy5weQppbmRleCA4ZDdjNDlkLi5jMDMzOTIzIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi9fX2luaXRfXy5weQpAQCAtMSwxMSArMSwxMSBAQAotaW1wb3J0IGltcG9ydGxpYi50ZXN0Citmcm9tIC4uIGltcG9ydCB0ZXN0X3N1aXRlCiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHVuaXR0ZXN0CiAKIAogZGVmIHRlc3Rfc3VpdGUoKToKICAgICBkaXJlY3RvcnkgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCi0gICAgcmV0dXJuIGltcG9ydGxpYi50ZXN0LnRlc3Rfc3VpdGUoJ2ltcG9ydGxpYi50ZXN0LnNvdXJjZScsIGRpcmVjdG9yeSkKKyAgICByZXR1cm4gdGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuZXh0ZW5zaW9uJywgZGlyZWN0b3J5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKc2ltaWxhcml0eSBpbmRleCA2NCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKaW5kZXggZTA2MmZiNi4uNzZjNTNlNCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQpAQCAtMSwzICsxLDQgQEAKK2ltcG9ydCBpbXAKIGltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0xMywxOSArMTQsMjYgQEAKICAgICAgICAgZ29vZF9uYW1lID0gZXh0X3V0aWwuTkFNRQogICAgICAgICBiYWRfbmFtZSA9IGdvb2RfbmFtZS51cHBlcigpCiAgICAgICAgIGFzc2VydCBnb29kX25hbWUgIT0gYmFkX25hbWUKLSAgICAgICAgZmluZGVyID0gX2Jvb3RzdHJhcC5fRmlsZUZpbmRlcihleHRfdXRpbC5QQVRILAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX0V4dGVuc2lvbkZpbmRlckRldGFpbHMoKSkKKyAgICAgICAgZmluZGVyID0gX2Jvb3RzdHJhcC5GaWxlRmluZGVyKGV4dF91dGlsLlBBVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9ib290c3RyYXAuRXh0ZW5zaW9uRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5FWFRFTlNJT05fU1VGRklYRVMpKQogICAgICAgICByZXR1cm4gZmluZGVyLmZpbmRfbW9kdWxlKGJhZF9uYW1lKQogCiAgICAgZGVmIHRlc3RfY2FzZV9zZW5zaXRpdmUoc2VsZik6CiAgICAgICAgIHdpdGggc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgogICAgICAgICAgICAgZW52LnVuc2V0KCdQWVRIT05DQVNFT0snKQorICAgICAgICAgICAgaWYgYidQWVRIT05DQVNFT0snIGluIF9ib290c3RyYXAuX29zLmVudmlyb246CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnb3MuZW52aXJvbiBjaGFuZ2VzIG5vdCByZWZsZWN0ZWQgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19vcy5lbnZpcm9uJykKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuZmluZF9tb2R1bGUoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobG9hZGVyKQogCiAgICAgZGVmIHRlc3RfY2FzZV9pbnNlbnNpdGl2aXR5KHNlbGYpOgogICAgICAgICB3aXRoIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKICAgICAgICAgICAgIGVudi5zZXQoJ1BZVEhPTkNBU0VPSycsICcxJykKKyAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBub3QgaW4gX2Jvb3RzdHJhcC5fb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdvcy5lbnZpcm9uIGNoYW5nZXMgbm90IHJlZmxlY3RlZCBpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX29zLmVudmlyb24nKQogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5maW5kX21vZHVsZSgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihsb2FkZXIsICdsb2FkX21vZHVsZScpKQogCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggNjQlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdGVzdF9maW5kZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQppbmRleCBlYTk3NDgzLi5hNjNjZmRiIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CiBmcm9tIC4uIGltcG9ydCBhYmMKIGZyb20gLiBpbXBvcnQgdXRpbAogCkBAIC05LDE1ICs5LDE2IEBACiAgICAgIiIiVGVzdCB0aGUgZmluZGVyIGZvciBleHRlbnNpb24gbW9kdWxlcy4iIiIKIAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgIGltcG9ydGVyID0gX2Jvb3RzdHJhcC5fRmlsZUZpbmRlcih1dGlsLlBBVEgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl9FeHRlbnNpb25GaW5kZXJEZXRhaWxzKCkpCisgICAgICAgIGltcG9ydGVyID0gbWFjaGluZXJ5LkZpbGVGaW5kZXIodXRpbC5QQVRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUykpCiAgICAgICAgIHJldHVybiBpbXBvcnRlci5maW5kX21vZHVsZShmdWxsbmFtZSkKIAogICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZmluZF9tb2R1bGUodXRpbC5OQU1FKSkKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgICMgRXh0ZW5zaW9uIG1vZHVsZXMgY2Fubm90IGJlIGFuIF9faW5pdF9fIGZvciBhIHBhY2thZ2UuCisgICAgICAgICMgTm8gZXh0ZW5zaW9uIG1vZHVsZSBhcyBhbiBfX2luaXRfXyBhdmFpbGFibGUgZm9yIHRlc3RpbmcuCiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9pbl9wYWNrYWdlKHNlbGYpOgpAQCAtMjUsNyArMjYsNyBAQAogICAgICAgICBwYXNzCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX2luX3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgICMgRXh0ZW5zaW9uIG1vZHVsZXMgY2Fubm90IGJlIGFuIF9faW5pdF9fIGZvciBhIHBhY2thZ2UuCisgICAgICAgICMgTm8gZXh0ZW5zaW9uIG1vZHVsZSBhcyBhbiBfX2luaXRfXyBhdmFpbGFibGUgZm9yIHRlc3RpbmcuCiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2Vfb3Zlcl9tb2R1bGUoc2VsZik6CkBAIC0zMyw5ICszNCw3IEBACiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmZpbmRfbW9kdWxlKCdhc2RmamtsOycpIGlzIE5vbmUpCi0KLSAgICAjIFhYWCBSYWlzZSBhbiBleGNlcHRpb24gaWYgc29tZW9uZSB0cmllcyB0byB1c2UgdGhlICdwYXRoJyBhcmd1bWVudD8KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5maW5kX21vZHVsZSgnYXNkZmprbDsnKSkKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E1YWYyMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2xvYWRlci5weQpAQCAtMCwwICsxLDc5IEBACitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5Citmcm9tIC4gaW1wb3J0IHV0aWwgYXMgZXh0X3V0aWwKK2Zyb20gLi4gaW1wb3J0IGFiYworZnJvbSAuLiBpbXBvcnQgdXRpbAorCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgTG9hZGVyVGVzdHMoYWJjLkxvYWRlclRlc3RzKToKKworICAgICIiIlRlc3QgbG9hZF9tb2R1bGUoKSBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMuIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYubG9hZGVyID0gbWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIoZXh0X3V0aWwuTkFNRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0X3V0aWwuRklMRVBBVEgpCisKKyAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICByZXR1cm4gc2VsZi5sb2FkZXIubG9hZF9tb2R1bGUoZnVsbG5hbWUpCisKKyAgICBkZWYgdGVzdF9sb2FkX21vZHVsZV9BUEkoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGUgZGVmYXVsdCBhcmd1bWVudCBmb3IgbG9hZF9tb2R1bGUoKS4KKyAgICAgICAgc2VsZi5sb2FkZXIubG9hZF9tb2R1bGUoKQorICAgICAgICBzZWxmLmxvYWRlci5sb2FkX21vZHVsZShOb25lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9hZF9tb2R1bGUoJ1hYWCcpCisKKworICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoZXh0X3V0aWwuTkFNRSk6CisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCisgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gWygnX19uYW1lX18nLCBleHRfdXRpbC5OQU1FKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX2ZpbGVfXycsIGV4dF91dGlsLkZJTEVQQVRIKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX3BhY2thZ2VfXycsICcnKV06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihleHRfdXRpbC5OQU1FLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUuX19sb2FkZXJfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcikKKworICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6CisgICAgICAgICMgTm8gZXh0ZW5zaW9uIG1vZHVsZSBhcyBfX2luaXRfXyBhdmFpbGFibGUgZm9yIHRlc3RpbmcuCisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2xhY2tpbmdfcGFyZW50KHNlbGYpOgorICAgICAgICAjIE5vIGV4dGVuc2lvbiBtb2R1bGUgaW4gYSBwYWNrYWdlIGF2YWlsYWJsZSBmb3IgdGVzdGluZy4KKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfbW9kdWxlX3JldXNlKHNlbGYpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShleHRfdXRpbC5OQU1FKToKKyAgICAgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCisgICAgICAgICAgICBtb2R1bGUyID0gc2VsZi5sb2FkX21vZHVsZShleHRfdXRpbC5OQU1FKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUxLCBtb2R1bGUyKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfYWZ0ZXJfZmFpbHVyZShzZWxmKToKKyAgICAgICAgIyBObyBlYXN5IHdheSB0byB0cmlnZ2VyIGEgZmFpbHVyZSBhZnRlciBhIHN1Y2Nlc3NmdWwgaW1wb3J0LgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF91bmxvYWRhYmxlKHNlbGYpOgorICAgICAgICBuYW1lID0gJ2FzZGZqa2w7JworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYubG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKKworICAgIGRlZiB0ZXN0X2lzX3BhY2thZ2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5sb2FkZXIuaXNfcGFja2FnZShleHRfdXRpbC5OQU1FKSkKKyAgICAgICAgZm9yIHN1ZmZpeCBpbiBtYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTOgorICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignc29tZScsICdwYXRoJywgJ3BrZycsICdfX2luaXRfXycgKyBzdWZmaXgpCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcigncGtnJywgcGF0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIuaXNfcGFja2FnZSgncGtnJykpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKyAgICBydW5fdW5pdHRlc3QoTG9hZGVyVGVzdHMpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQpzaW1pbGFyaXR5IGluZGV4IDgwJQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKaW5kZXggNDYxMDQyMC4uMWQ5NjlhMSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogZnJvbSAuIGltcG9ydCB1dGlsCiAKIGltcG9ydCBjb2xsZWN0aW9ucwpAQCAtMTQsNyArMTQsOCBAQAogICAgICMgWFhYIFNob3VsZCBpdCBvbmx5IHdvcmsgZm9yIGRpcmVjdG9yaWVzIGNvbnRhaW5pbmcgYW4gZXh0ZW5zaW9uIG1vZHVsZT8KIAogICAgIGRlZiBob29rKHNlbGYsIGVudHJ5KToKLSAgICAgICAgcmV0dXJuIF9ib290c3RyYXAuX2ZpbGVfcGF0aF9ob29rKGVudHJ5KQorICAgICAgICByZXR1cm4gbWFjaGluZXJ5LkZpbGVGaW5kZXIucGF0aF9ob29rKChtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlciwKKyAgICAgICAgICAgIG1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVMpKShlbnRyeSkKIAogICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6CiAgICAgICAgICMgUGF0aCBob29rIHNob3VsZCBoYW5kbGUgYSBkaXJlY3Rvcnkgd2hlcmUgYSBrbm93biBleHRlbnNpb24gbW9kdWxlCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdXRpbC5weQpzaW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3V0aWwucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi91dGlsLnB5CmluZGV4IGQxNDkxNjkuLmEyNjZkZDkgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdXRpbC5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCBpbXAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCkBAIC02LDEwICs3LDkgQEAKIEVYVCA9IE5vbmUKIEZJTEVOQU1FID0gTm9uZQogTkFNRSA9ICdfdGVzdGNhcGknCi1fZmlsZV9leHRzID0gW3hbMF0gZm9yIHggaW4gaW1wLmdldF9zdWZmaXhlcygpIGlmIHhbMl0gPT0gaW1wLkNfRVhURU5TSU9OXQogdHJ5OgogICAgIGZvciBQQVRIIGluIHN5cy5wYXRoOgotICAgICAgICBmb3IgRVhUIGluIF9maWxlX2V4dHM6CisgICAgICAgIGZvciBFWFQgaW4gbWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUzoKICAgICAgICAgICAgIEZJTEVOQU1FID0gTkFNRSArIEVYVAogICAgICAgICAgICAgRklMRVBBVEggPSBvcy5wYXRoLmpvaW4oUEFUSCwgRklMRU5BTUUpCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oUEFUSCwgRklMRU5BTUUpKToKQEAgLTE4LDQgKzE4LDMgQEAKICAgICAgICAgUEFUSCA9IEVYVCA9IEZJTEVOQU1FID0gRklMRVBBVEggPSBOb25lCiBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICBwYXNzCi1kZWwgX2ZpbGVfZXh0cwpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDY3JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vX19pbml0X18ucHkKaW5kZXggOGQ3YzQ5ZC4uOWVmMTAzYiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vX19pbml0X18ucHkKQEAgLTEsMTEgKzEsMTEgQEAKLWltcG9ydCBpbXBvcnRsaWIudGVzdAorZnJvbSAuLiBpbXBvcnQgdGVzdF9zdWl0ZQogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCB1bml0dGVzdAogCiAKIGRlZiB0ZXN0X3N1aXRlKCk6CiAgICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHJldHVybiBpbXBvcnRsaWIudGVzdC50ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5zb3VyY2UnLCBkaXJlY3RvcnkpCisgICAgcmV0dXJuIHRlc3Rfc3VpdGUoJ2ltcG9ydGxpYi50ZXN0LmZyb3plbicsIGRpcmVjdG9yeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2Zyb3plbi90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2ZpbmRlci5weQpzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvZnJvemVuL3Rlc3RfZmluZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9maW5kZXIucHkKaW5kZXggZGI4ODM3OS4uZmEwYzJhMCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2Zyb3plbi90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9maW5kZXIucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIC4uLiBpbXBvcnQgbWFjaGluZXJ5Citmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CiBmcm9tIC4uIGltcG9ydCBhYmMKIAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0zNSw3ICszNSw3IEBACiAKICAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSBzZWxmLmZpbmQoJzxub3QgcmVhbD4nKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVyIGlzIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGxvYWRlcikKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvZnJvemVuL3Rlc3RfbG9hZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggNzMlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9mcm96ZW4vdGVzdF9sb2FkZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQppbmRleCBiNjg1ZWY1Li40YjhlYzE1IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQpAQCAtMTAsNTUgKzEwLDcwIEBACiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgnX19oZWxsb19fJyksIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHN0ZG91dDoKICAgICAgICAgICAgIG1vZHVsZSA9IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX19oZWxsb19fJykKLSAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfX2hlbGxvX18nLCAnX19maWxlX18nOiAnPGZyb3plbj4nLAotICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nOiAnJywgJ19fbG9hZGVyX18nOiBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXJ9CisgICAgICAgICAgICBjaGVjayA9IHsnX19uYW1lX18nOiAnX19oZWxsb19fJywKKyAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJzogJycsCisgICAgICAgICAgICAgICAgICAgICdfX2xvYWRlcl9fJzogbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLAorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gY2hlY2suaXRlbXMoKToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIobW9kdWxlLCBhdHRyKSwgdmFsdWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnSGVsbG8gd29ybGQhXG4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJykpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgnX19waGVsbG9fXycpLCAgY2FwdHVyZWRfc3Rkb3V0KCkgYXMgc3Rkb3V0OgogICAgICAgICAgICAgbW9kdWxlID0gbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmxvYWRfbW9kdWxlKCdfX3BoZWxsb19fJykKLSAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfX3BoZWxsb19fJywgJ19fZmlsZV9fJzogJzxmcm96ZW4+JywKLSAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6ICdfX3BoZWxsb19fJywgJ19fcGF0aF9fJzogWydfX3BoZWxsb19fJ10sCi0gICAgICAgICAgICAgICAgICAgICAnX19sb2FkZXJfXyc6IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlcn0KKyAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfX3BoZWxsb19fJywKKyAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6ICdfX3BoZWxsb19fJywKKyAgICAgICAgICAgICAgICAgICAgICdfX3BhdGhfXyc6IFsnX19waGVsbG9fXyddLAorICAgICAgICAgICAgICAgICAgICAgJ19fbG9hZGVyX18nOiBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIsCisgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gY2hlY2suaXRlbXMoKToKICAgICAgICAgICAgICAgICBhdHRyX3ZhbHVlID0gZ2V0YXR0cihtb2R1bGUsIGF0dHIpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdHRyX3ZhbHVlLCB2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgX19waGVsbG9fXy4lcywgJXIgIT0gJXIiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhdHRyLCBhdHRyX3ZhbHVlLCB2YWx1ZSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnSGVsbG8gd29ybGQhXG4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJykpCiAKICAgICBkZWYgdGVzdF9sYWNraW5nX3BhcmVudChzZWxmKToKICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoJ19fcGhlbGxvX18nLCAnX19waGVsbG9fXy5zcGFtJyksIFwKICAgICAgICAgICAgICBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CiAgICAgICAgICAgICBtb2R1bGUgPSBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ19fcGhlbGxvX18uc3BhbScpCi0gICAgICAgICAgICBjaGVjayA9IHsnX19uYW1lX18nOiAnX19waGVsbG9fXy5zcGFtJywgJ19fZmlsZV9fJzogJzxmcm96ZW4+JywKKyAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfX3BoZWxsb19fLnNwYW0nLAogICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nOiAnX19waGVsbG9fXycsCi0gICAgICAgICAgICAgICAgICAgICdfX2xvYWRlcl9fJzogbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyfQorICAgICAgICAgICAgICAgICAgICAnX19sb2FkZXJfXyc6IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlciwKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIGNoZWNrLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgYXR0cl92YWx1ZSA9IGdldGF0dHIobW9kdWxlLCBhdHRyKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0cl92YWx1ZSwgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9yIF9fcGhlbGxvX18uc3BhbS4lcywgJXIgIT0gJXIiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhdHRyLCBhdHRyX3ZhbHVlLCB2YWx1ZSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnSGVsbG8gd29ybGQhXG4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJykpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfcmV1c2Uoc2VsZik6CiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCdfX2hlbGxvX18nKSwgY2FwdHVyZWRfc3Rkb3V0KCkgYXMgc3Rkb3V0OgogICAgICAgICAgICAgbW9kdWxlMSA9IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX19oZWxsb19fJykKICAgICAgICAgICAgIG1vZHVsZTIgPSBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ19faGVsbG9fXycpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobW9kdWxlMSBpcyBtb2R1bGUyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUxLCBtb2R1bGUyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQuZ2V0dmFsdWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0hlbGxvIHdvcmxkIVxuSGVsbG8gd29ybGQhXG4nKQogCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHIoc2VsZik6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCdfX2hlbGxvX18nKSwgY2FwdHVyZWRfc3Rkb3V0KCk6CisgICAgICAgICAgICBtb2R1bGUgPSBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ19faGVsbG9fXycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobW9kdWxlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxtb2R1bGUgJ19faGVsbG9fXycgKGZyb3plbik+IikKKwogICAgIGRlZiB0ZXN0X3N0YXRlX2FmdGVyX2ZhaWx1cmUoc2VsZik6CiAgICAgICAgICMgTm8gd2F5IHRvIHRyaWdnZXIgYW4gZXJyb3IgaW4gYSBmcm96ZW4gbW9kdWxlLgogICAgICAgICBwYXNzCiAKICAgICBkZWYgdGVzdF91bmxvYWRhYmxlKHNlbGYpOgogICAgICAgICBhc3NlcnQgbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmZpbmRfbW9kdWxlKCdfbm90X3JlYWwnKSBpcyBOb25lCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgIG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX25vdF9yZWFsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgJ19ub3RfcmVhbCcpCiAKIAogY2xhc3MgSW5zcGVjdExvYWRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTc4LDcgKzkzLDcgQEAKICAgICBkZWYgdGVzdF9nZXRfc291cmNlKHNlbGYpOgogICAgICAgICAjIFNob3VsZCBhbHdheXMgcmV0dXJuIE5vbmUuCiAgICAgICAgIHJlc3VsdCA9IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5nZXRfc291cmNlKCdfX2hlbGxvX18nKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzdWx0IGlzIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlc3VsdCkKIAogICAgIGRlZiB0ZXN0X2lzX3BhY2thZ2Uoc2VsZik6CiAgICAgICAgICMgU2hvdWxkIGJlIGFibGUgdG8gdGVsbCB3aGF0IGlzIGEgcGFja2FnZS4KQEAgLTg2LDE0ICsxMDEsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgKCdfX3BoZWxsb19fLnNwYW0nLCBGYWxzZSkpCiAgICAgICAgIGZvciBuYW1lLCBpc19wYWNrYWdlIGluIHRlc3RfZm9yOgogICAgICAgICAgICAgcmVzdWx0ID0gbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmlzX3BhY2thZ2UobmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShib29sKHJlc3VsdCkgPT0gaXNfcGFja2FnZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9vbChyZXN1bHQpLCBpc19wYWNrYWdlKQogCiAgICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKICAgICAgICAgIyBSYWlzZSBJbXBvcnRFcnJvciBmb3IgbW9kdWxlcyB0aGF0IGFyZSBub3QgZnJvemVuLgogICAgICAgICBmb3IgbWV0aF9uYW1lIGluICgnZ2V0X2NvZGUnLCAnZ2V0X3NvdXJjZScsICdpc19wYWNrYWdlJyk6CiAgICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlciwgbWV0aF9uYW1lKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgICAgICBtZXRob2QoJ2ltcG9ydGxpYicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCAnaW1wb3J0bGliJykKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDY3JQpjb3B5IGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weQpjb3B5IHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vX19pbml0X18ucHkKaW5kZXggOGQ3YzQ5ZC4uMzY2ZTUzMSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL19faW5pdF9fLnB5CkBAIC0xLDExICsxLDExIEBACi1pbXBvcnQgaW1wb3J0bGliLnRlc3QKK2Zyb20gLi4gaW1wb3J0IHRlc3Rfc3VpdGUKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgdW5pdHRlc3QKIAogCiBkZWYgdGVzdF9zdWl0ZSgpOgogICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3Quc291cmNlJywgZGlyZWN0b3J5KQorICAgIHJldHVybiB0ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5pbXBvcnRfJywgZGlyZWN0b3J5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQppbmRleCA1MDU2YWU1Li43ODNjZGUxIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQpAQCAtNjcsNyArNjcsNyBAQAogCiAgICAgZGVmIHRlc3RfYnVua19fcGFja2FnZV9fKHNlbGYpOgogICAgICAgICBnbG9iYWxzID0geydfX3BhY2thZ2VfXyc6IDQyfQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCcnLCBnbG9iYWxzLCB7fSwgWydyZWxpbXBvcnQnXSwgMSkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDRjZDk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQpAQCAtMCwwICsxLDY3IEBACitmcm9tIC4uIGltcG9ydCB1dGlsIGFzIGltcG9ydGxpYl90ZXN0X3V0aWwKK2Zyb20gLiBpbXBvcnQgdXRpbAoraW1wb3J0IGltcAoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgQmFkTG9hZGVyRmluZGVyOgorICAgIGJhZCA9ICdmaW5lLmJvZ3VzJworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoKToKKyAgICAgICAgaWYgZnVsbG5hbWUgPT0gY2xzLmJhZDoKKyAgICAgICAgICAgIHJldHVybiBjbHMKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbG9hZF9tb2R1bGUoY2xzLCBmdWxsbmFtZSk6CisgICAgICAgIGlmIGZ1bGxuYW1lID09IGNscy5iYWQ6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignSSBjYW5ub3QgYmUgbG9hZGVkIScpCisKKworY2xhc3MgQVBJVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0IEFQSS1zcGVjaWZpYyBkZXRhaWxzIGZvciBfX2ltcG9ydF9fIChlLmcuIHJhaXNpbmcgdGhlIHJpZ2h0CisgICAgZXhjZXB0aW9uIHdoZW4gcGFzc2luZyBpbiBhbiBpbnQgZm9yIHRoZSBtb2R1bGUgbmFtZSkuIiIiCisKKyAgICBkZWYgdGVzdF9uYW1lX3JlcXVpcmVzX3JwYXJpdGlvbihzZWxmKToKKyAgICAgICAgIyBSYWlzZSBUeXBlRXJyb3IgaWYgYSBub24tc3RyaW5nIGlzIHBhc3NlZCBpbiBmb3IgdGhlIG1vZHVsZSBuYW1lLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB1dGlsLmltcG9ydF8oNDIpCisKKyAgICBkZWYgdGVzdF9uZWdhdGl2ZV9sZXZlbChzZWxmKToKKyAgICAgICAgIyBSYWlzZSBWYWx1ZUVycm9yIHdoZW4gYSBuZWdhdGl2ZSBsZXZlbCBpcyBzcGVjaWZpZWQuCisgICAgICAgICMgUEVQIDMyOCBkaWQgYXdheSB3aXRoIHN5cy5tb2R1bGUgTm9uZSBlbnRyaWVzIGFuZCB0aGUgYW1iaWd1aXR5IG9mCisgICAgICAgICMgYWJzb2x1dGUvcmVsYXRpdmUgaW1wb3J0cy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHV0aWwuaW1wb3J0Xygnb3MnLCBnbG9iYWxzKCksIGxldmVsPS0xKQorCisgICAgZGVmIHRlc3Rfbm9uZXhpc3RlbnRfZnJvbWxpc3RfZW50cnkoc2VsZik6CisgICAgICAgICMgSWYgc29tZXRoaW5nIGluIGZyb21saXN0IGRvZXNuJ3QgZXhpc3QsIHRoYXQncyBva2F5LgorICAgICAgICAjIGlzc3VlMTU3MTUKKyAgICAgICAgbW9kID0gaW1wLm5ld19tb2R1bGUoJ2ZpbmUnKQorICAgICAgICBtb2QuX19wYXRoX18gPSBbJ1hYWCddCisgICAgICAgIHdpdGggaW1wb3J0bGliX3Rlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtCYWRMb2FkZXJGaW5kZXJdKToKKyAgICAgICAgICAgIHdpdGggaW1wb3J0bGliX3Rlc3RfdXRpbC51bmNhY2hlKCdmaW5lJyk6CisgICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2ZpbmUnXSA9IG1vZAorICAgICAgICAgICAgICAgIHV0aWwuaW1wb3J0XygnZmluZScsIGZyb21saXN0PVsnbm90IGhlcmUnXSkKKworICAgIGRlZiB0ZXN0X2Zyb21saXN0X2xvYWRfZXJyb3JfcHJvcGFnYXRlcyhzZWxmKToKKyAgICAgICAgIyBJZiBzb21ldGhpbmcgaW4gZnJvbWxpc3QgdHJpZ2dlcnMgYW4gZXhjZXB0aW9uIG5vdCByZWxhdGVkIHRvIG5vdAorICAgICAgICAjIGV4aXN0aW5nLCBsZXQgdGhhdCBleGNlcHRpb24gcHJvcGFnYXRlLgorICAgICAgICAjIGlzc3VlMTUzMTYKKyAgICAgICAgbW9kID0gaW1wLm5ld19tb2R1bGUoJ2ZpbmUnKQorICAgICAgICBtb2QuX19wYXRoX18gPSBbJ1hYWCddCisgICAgICAgIHdpdGggaW1wb3J0bGliX3Rlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtCYWRMb2FkZXJGaW5kZXJdKToKKyAgICAgICAgICAgIHdpdGggaW1wb3J0bGliX3Rlc3RfdXRpbC51bmNhY2hlKCdmaW5lJyk6CisgICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2ZpbmUnXSA9IG1vZAorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgICAgICAgICB1dGlsLmltcG9ydF8oJ2ZpbmUnLCBmcm9tbGlzdD1bJ2JvZ3VzJ10pCisKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorICAgIHJ1bl91bml0dGVzdChBUElUZXN0KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfY2FjaGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CnNpbWlsYXJpdHkgaW5kZXggOTMlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfY2FjaGluZy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2NhY2hpbmcucHkKaW5kZXggNDhkYzY0My4uYmY2ODAyNyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CkBAIC0zNCw4ICszNCw5IEBACiAgICAgICAgIG5hbWUgPSAndXNpbmdfTm9uZScKICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IE5vbmUKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CiAgICAgICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XyhuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKIAogICAgIGRlZiBjcmVhdGVfbW9jayhzZWxmLCAqbmFtZXMsIHJldHVybl89Tm9uZSk6CiAgICAgICAgIG1vY2sgPSB1dGlsLm1vY2tfbW9kdWxlcygqbmFtZXMpCkBAIC02NCw3ICs2NSw4IEBACiAgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1baW1wb3J0ZXJdKToKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cubW9kdWxlJykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2R1bGUsICdtb2R1bGUnKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaWQobW9kdWxlLm1vZHVsZSksIGlkKHN5cy5tb2R1bGVzWydwa2cubW9kdWxlJ10pKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQobW9kdWxlLm1vZHVsZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZChzeXMubW9kdWxlc1sncGtnLm1vZHVsZSddKSkKIAogICAgICMgU2VlIHRlc3RfdXNpbmdfY2FjaGVfYWZ0ZXJfbG9hZGVyKCkgZm9yIHJlYXNvbmluZy4KICAgICBAaW1wb3J0X3V0aWwuaW1wb3J0bGliX29ubHkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKc2ltaWxhcml0eSBpbmRleCA4MyUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CmluZGV4IDdlY2RlMDMuLmMxNmMzMzcgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CkBAIC0xLDYgKzEsNyBAQAogIiIiVGVzdCB0aGF0IHRoZSBzZW1hbnRpY3MgcmVsYXRpbmcgdG8gdGhlICdmcm9tbGlzdCcgYXJndW1lbnQgYXJlIGNvcnJlY3QuIiIiCiBmcm9tIC4uIGltcG9ydCB1dGlsCiBmcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKK2ltcG9ydCBpbXAKIGltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBSZXR1cm5WYWx1ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0zOCwxMSArMzksOSBAQAogICAgIFtvYmplY3QgY2FzZV0uIFRoaXMgaXMgZXZlbiB0cnVlIGlmIHRoZSBvYmplY3QgZG9lcyBub3QgZXhpc3QgW2JhZCBvYmplY3RdLgogCiAgICAgSWYgYSBwYWNrYWdlIGlzIGJlaW5nIGltcG9ydGVkLCB0aGVuIHdoYXQgaXMgbGlzdGVkIGluIGZyb21saXN0IG1heSBiZQotICAgIHRyZWF0ZWQgYXMgYSBtb2R1bGUgdG8gYmUgaW1wb3J0ZWQgW21vZHVsZV0uIEJ1dCBvbmNlIGFnYWluLCBldmVuIGlmCi0gICAgc29tZXRoaW5nIGluIGZyb21saXN0IGRvZXMgbm90IGV4aXN0IGFzIGEgbW9kdWxlLCBubyBlcnJvciBpcyByYWlzZWQKLSAgICBbbm8gbW9kdWxlXS4gQW5kIHRoaXMgZXh0ZW5kcyB0byB3aGF0IGlzIGNvbnRhaW5lZCBpbiBfX2FsbF9fIHdoZW4gJyonIGlzCi0gICAgaW1wb3J0ZWQgW3VzaW5nICpdLiBBbmQgJyonIGRvZXMgbm90IG5lZWQgdG8gYmUgdGhlIG9ubHkgbmFtZSBpbiB0aGUKLSAgICBmcm9tbGlzdCBbdXNpbmcgKiB3aXRoIG90aGVyc10uCisgICAgdHJlYXRlZCBhcyBhIG1vZHVsZSB0byBiZSBpbXBvcnRlZCBbbW9kdWxlXS4gQW5kIHRoaXMgZXh0ZW5kcyB0byB3aGF0IGlzCisgICAgY29udGFpbmVkIGluIF9fYWxsX18gd2hlbiAnKicgaXMgaW1wb3J0ZWQgW3VzaW5nICpdLiBBbmQgJyonIGRvZXMgbm90IG5lZWQKKyAgICB0byBiZSB0aGUgb25seSBuYW1lIGluIHRoZSBmcm9tbGlzdCBbdXNpbmcgKiB3aXRoIG90aGVyc10uCiAKICAgICAiIiIKIApAQCAtNTMsNyArNTIsNyBAQAogICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydF91dGlsLmltcG9ydF8oJ21vZHVsZScsIGZyb21saXN0PVsnYXR0ciddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAnbW9kdWxlJykKIAotICAgIGRlZiB0ZXN0X3VuZXhpc3RlbnRfb2JqZWN0KHNlbGYpOgorICAgIGRlZiB0ZXN0X25vbmV4aXN0ZW50X29iamVjdChzZWxmKToKICAgICAgICAgIyBbYmFkIG9iamVjdF0KICAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygnbW9kdWxlJykgYXMgaW1wb3J0ZXI6CiAgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1baW1wb3J0ZXJdKToKQEAgLTcwLDEzICs2OSwxOCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vZHVsZSwgJ21vZHVsZScpKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLm1vZHVsZS5fX25hbWVfXywgJ3BrZy5tb2R1bGUnKQogCi0gICAgZGVmIHRlc3Rfbm9fbW9kdWxlX2Zyb21fcGFja2FnZShzZWxmKToKLSAgICAgICAgIyBbbm8gbW9kdWxlXQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nKSBhcyBpbXBvcnRlcjoKKyAgICBkZWYgdGVzdF9tb2R1bGVfZnJvbV9wYWNrYWdlX3RyaWdnZXJzX0ltcG9ydEVycm9yKHNlbGYpOgorICAgICAgICAjIElmIGEgc3VibW9kdWxlIGNhdXNlcyBhbiBJbXBvcnRFcnJvciBiZWNhdXNlIGl0IHRyaWVzIHRvIGltcG9ydAorICAgICAgICAjIGEgbW9kdWxlIHdoaWNoIGRvZXNuJ3QgZXhpc3QsIHRoYXQgc2hvdWxkIGxldCB0aGUgSW1wb3J0RXJyb3IKKyAgICAgICAgIyBwcm9wYWdhdGUuCisgICAgICAgIGRlZiBtb2R1bGVfY29kZSgpOgorICAgICAgICAgICAgaW1wb3J0IGlfZG9fbm90X2V4aXN0CisgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cubW9kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfY29kZT17J3BrZy5tb2QnOiBtb2R1bGVfY29kZX0pIGFzIGltcG9ydGVyOgogICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2ltcG9ydGVyXSk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnJywgZnJvbWxpc3Q9J25vbl9leGlzdGVudCcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdwa2cnKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgaGFzYXR0cihtb2R1bGUsICdub25fZXhpc3RlbnQnKSkKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBleGM6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZycsIGZyb21saXN0PVsnbW9kJ10pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaV9kb19ub3RfZXhpc3QnLCBleGMuZXhjZXB0aW9uLm5hbWUpCiAKICAgICBkZWYgdGVzdF9lbXB0eV9zdHJpbmcoc2VsZik6CiAgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cubW9kJykgYXMgaW1wb3J0ZXI6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X21ldGFfcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkKc2ltaWxhcml0eSBpbmRleCA4MCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkKaW5kZXggM2IxMzBjOS4uNGQ4NWY4MCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X21ldGFfcGF0aC5weQpAQCAtMSw3ICsxLDEwIEBACiBmcm9tIC4uIGltcG9ydCB1dGlsCiBmcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKK2ltcG9ydCBpbXBvcnRsaWIuX2Jvb3RzdHJhcAoraW1wb3J0IHN5cwogZnJvbSB0eXBlcyBpbXBvcnQgTWV0aG9kVHlwZQogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKIAogCiBjbGFzcyBDYWxsaW5nT3JkZXIodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMzMsNiArMzYsMjEgQEAKICAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtmaXJzdCwgc2Vjb25kXSk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXBvcnRfdXRpbC5pbXBvcnRfKG1vZF9uYW1lKSwgNDIpCiAKKyAgICBkZWYgdGVzdF9lbXB0eShzZWxmKToKKyAgICAgICAgIyBSYWlzZSBhbiBJbXBvcnRXYXJuaW5nIGlmIHN5cy5tZXRhX3BhdGggaXMgZW1wdHkuCisgICAgICAgIG1vZHVsZV9uYW1lID0gJ25vdGhpbmcnCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1ttb2R1bGVfbmFtZV0KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bXSk6CisgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignYWx3YXlzJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fZmluZF9tb2R1bGUoJ25vdGhpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3KSwgMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh3Wy0xXS5jYXRlZ29yeSwgSW1wb3J0V2FybmluZykpCisKIAogY2xhc3MgQ2FsbFNpZ25hdHVyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTY0LDcgKzgyLDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhcmdzKSwgMikKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihrd2FyZ3MpLCAwKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJnc1swXSwgbW9kX25hbWUpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFyZ3NbMV0gaXMgTm9uZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhcmdzWzFdKQogCiAgICAgZGVmIHRlc3Rfd2l0aF9wYXRoKHNlbGYpOgogICAgICAgICAjIFtwYXRoIHNldF0KQEAgLTg0LDcgKzEwMiw3IEBACiAgICAgICAgICAgICAgICAgIyBBc3N1bWluZyBhbGwgYXJndW1lbnRzIGFyZSBwb3NpdGlvbmFsLgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qga3dhcmdzKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJnc1swXSwgbW9kX25hbWUpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFyZ3NbMV0gaXMgcGF0aCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGFyZ3NbMV0sIHBhdGgpCiAKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZhMThkYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQpAQCAtMCwwICsxLDExMiBAQAorZnJvbSAuLiBpbXBvcnQgdXRpbAorZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBpbXBvcnRsaWIKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisKK2NsYXNzIFBhcmVudE1vZHVsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIkltcG9ydGluZyBhIHN1Ym1vZHVsZSBzaG91bGQgaW1wb3J0IHRoZSBwYXJlbnQgbW9kdWxlcy4iIiIKKworICAgIGRlZiB0ZXN0X2ltcG9ydF9wYXJlbnQoc2VsZik6CisgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cubW9kdWxlJykgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnLm1vZHVsZScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigncGtnJywgc3lzLm1vZHVsZXMpCisKKyAgICBkZWYgdGVzdF9iYWRfcGFyZW50KHNlbGYpOgorICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCdwa2cubW9kdWxlJykgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZy5tb2R1bGUnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsICdwa2cnKQorCisgICAgZGVmIHRlc3RfcmFpc2luZ19wYXJlbnRfYWZ0ZXJfaW1wb3J0aW5nX2NoaWxkKHNlbGYpOgorICAgICAgICBkZWYgX19pbml0X18oKToKKyAgICAgICAgICAgIGltcG9ydCBwa2cubW9kdWxlCisgICAgICAgICAgICAxLzAKKyAgICAgICAgbW9jayA9IHV0aWwubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLm1vZHVsZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfY29kZT17J3BrZyc6IF9faW5pdF9ffSkKKyAgICAgICAgd2l0aCBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdwa2cnLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdwa2cubW9kdWxlJywgc3lzLm1vZHVsZXMpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZy5tb2R1bGUnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3BrZycsIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3BrZy5tb2R1bGUnLCBzeXMubW9kdWxlcykKKworICAgIGRlZiB0ZXN0X3JhaXNpbmdfcGFyZW50X2FmdGVyX3JlbGF0aXZlX2ltcG9ydGluZ19jaGlsZChzZWxmKToKKyAgICAgICAgZGVmIF9faW5pdF9fKCk6CisgICAgICAgICAgICBmcm9tIC4gaW1wb3J0IG1vZHVsZQorICAgICAgICAgICAgMS8wCisgICAgICAgIG1vY2sgPSB1dGlsLm1vY2tfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5tb2R1bGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX2NvZGU9eydwa2cnOiBfX2luaXRfX30pCisgICAgICAgIHdpdGggbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoWmVyb0RpdmlzaW9uRXJyb3IsIEltcG9ydEVycm9yKSk6CisgICAgICAgICAgICAgICAgICAgICMgVGhpcyByYWlzZXMgSW1wb3J0RXJyb3Igb24gdGhlICJmcm9tIC4gaW1wb3J0IG1vZHVsZSIKKyAgICAgICAgICAgICAgICAgICAgIyBsaW5lLCBub3Qgc3VyZSB3aHkuCisgICAgICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigncGtnJywgc3lzLm1vZHVsZXMpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoWmVyb0RpdmlzaW9uRXJyb3IsIEltcG9ydEVycm9yKSk6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZy5tb2R1bGUnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3BrZycsIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgICAgICMgWFhYIEZhbHNlCisgICAgICAgICAgICAgICAgI3NlbGYuYXNzZXJ0SW4oJ3BrZy5tb2R1bGUnLCBzeXMubW9kdWxlcykKKworICAgIGRlZiB0ZXN0X3JhaXNpbmdfcGFyZW50X2FmdGVyX2RvdWJsZV9yZWxhdGl2ZV9pbXBvcnRpbmdfY2hpbGQoc2VsZik6CisgICAgICAgIGRlZiBfX2luaXRfXygpOgorICAgICAgICAgICAgZnJvbSAuLnN1YnBrZyBpbXBvcnQgbW9kdWxlCisgICAgICAgICAgICAxLzAKKyAgICAgICAgbW9jayA9IHV0aWwubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLnN1YnBrZy5fX2luaXRfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGtnLnN1YnBrZy5tb2R1bGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX2NvZGU9eydwa2cuc3VicGtnJzogX19pbml0X199KQorICAgICAgICB3aXRoIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFplcm9EaXZpc2lvbkVycm9yLCBJbXBvcnRFcnJvcikpOgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgcmFpc2VzIEltcG9ydEVycm9yIG9uIHRoZSAiZnJvbSAuLnN1YnBrZyBpbXBvcnQgbW9kdWxlIgorICAgICAgICAgICAgICAgICAgICAjIGxpbmUsIG5vdCBzdXJlIHdoeS4KKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnLnN1YnBrZycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigncGtnLnN1YnBrZycsIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFplcm9EaXZpc2lvbkVycm9yLCBJbXBvcnRFcnJvcikpOgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cuc3VicGtnLm1vZHVsZScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigncGtnLnN1YnBrZycsIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgICAgICMgWFhYIEZhbHNlCisgICAgICAgICAgICAgICAgI3NlbGYuYXNzZXJ0SW4oJ3BrZy5zdWJwa2cubW9kdWxlJywgc3lzLm1vZHVsZXMpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfbm90X3BhY2thZ2Uoc2VsZik6CisgICAgICAgICMgVHJ5IHRvIGltcG9ydCBhIHN1Ym1vZHVsZSBmcm9tIGEgbm9uLXBhY2thZ2Ugc2hvdWxkIHJhaXNlIEltcG9ydEVycm9yLgorICAgICAgICBhc3NlcnQgbm90IGhhc2F0dHIoc3lzLCAnX19wYXRoX18nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3N5cy5ub19zdWJtb2R1bGVzX2hlcmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCAnc3lzLm5vX3N1Ym1vZHVsZXNfaGVyZScpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfbm90X3BhY2thZ2VfYnV0X3NpZGVfZWZmZWN0cyhzZWxmKToKKyAgICAgICAgIyBJZiBhIG1vZHVsZSBpbmplY3RzIHNvbWV0aGluZyBpbnRvIHN5cy5tb2R1bGVzIGFzIGEgc2lkZS1lZmZlY3QsIHRoZW4KKyAgICAgICAgIyBwaWNrIHVwIG9uIHRoYXQgZmFjdC4KKyAgICAgICAgbmFtZSA9ICdtb2QnCisgICAgICAgIHN1Ym5hbWUgPSBuYW1lICsgJy5iJworICAgICAgICBkZWYgbW9kdWxlX2luamVjdGlvbigpOgorICAgICAgICAgICAgc3lzLm1vZHVsZXNbc3VibmFtZV0gPSAndG90YWwgYnVuaycKKyAgICAgICAgbW9ja19tb2R1bGVzID0gdXRpbC5tb2NrX21vZHVsZXMoJ21vZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9jb2RlPXsnbW9kJzogbW9kdWxlX2luamVjdGlvbn0pCisgICAgICAgIHdpdGggbW9ja19tb2R1bGVzIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc3VibW9kdWxlID0gaW1wb3J0X3V0aWwuaW1wb3J0XyhzdWJuYW1lKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQudW5sb2FkKHN1Ym5hbWUpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKyAgICBydW5fdW5pdHRlc3QoUGFyZW50TW9kdWxlVGVzdHMpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODJiN2Y2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhdGgucHkKQEAgLTAsMCArMSwxMjAgQEAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5Citmcm9tIGltcG9ydGxpYiBpbXBvcnQgaW1wb3J0X21vZHVsZQorZnJvbSAuLiBpbXBvcnQgdXRpbAorZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2Zyb20gdHlwZXMgaW1wb3J0IE1vZHVsZVR5cGUKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCitpbXBvcnQgemlwaW1wb3J0CisKKworY2xhc3MgRmluZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgZm9yIFBhdGhGaW5kZXIuIiIiCisKKyAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgorICAgICAgICAjIFRlc3QgTm9uZSByZXR1cm5lZCB1cG9uIG5vdCBmaW5kaW5nIGEgc3VpdGFibGUgZmluZGVyLgorICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZSgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKSkKKworICAgIGRlZiB0ZXN0X3N5c19wYXRoKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBzeXMucGF0aCBpcyB1c2VkIHdoZW4gJ3BhdGgnIGlzIE5vbmUuCisgICAgICAgICMgSW1wbGljaXRseSB0ZXN0cyB0aGF0IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlzIHVzZWQuCisgICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JworICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JworICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBpbXBvcnRlcn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF0pOgorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIGltcG9ydGVyKQorCisgICAgZGVmIHRlc3RfcGF0aChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgJ3BhdGgnIGlzIHVzZWQgd2hlbiBzZXQuCisgICAgICAgICMgSW1wbGljaXRseSB0ZXN0cyB0aGF0IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlzIHVzZWQuCisgICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JworICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JworICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBpbXBvcnRlcn0pOgorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLCBbcGF0aF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9saXN0KHNlbGYpOgorICAgICAgICAjIEFuIGVtcHR5IGxpc3Qgc2hvdWxkIG5vdCBjb3VudCBhcyBhc2tpbmcgZm9yIHN5cy5wYXRoLgorICAgICAgICBtb2R1bGUgPSAnbW9kdWxlJworICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JworICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBpbXBvcnRlcn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF0pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoJ21vZHVsZScsIFtdKSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaG9va3Moc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoX2hvb2tzIGlzIHVzZWQuCisgICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlzIHNldC4KKyAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCisgICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCisgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQorICAgICAgICBob29rID0gaW1wb3J0X3V0aWwubW9ja19wYXRoX2hvb2socGF0aCwgaW1wb3J0ZXI9aW1wb3J0ZXIpCisgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9ob29rcz1baG9va10pOgorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLCBbcGF0aF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHBhdGgsIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtwYXRoXSwgaW1wb3J0ZXIpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9wYXRoX2hvb2tzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBpZiBzeXMucGF0aF9ob29rcyBpcyBlbXB0eSBhIHdhcm5pbmcgaXMgcmFpc2VkLAorICAgICAgICAjIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGdldHMgTm9uZSBzZXQsIGFuZCBQYXRoRmluZGVyIHJldHVybnMgTm9uZS4KKyAgICAgICAgcGF0aF9lbnRyeSA9ICdib2d1c19wYXRoJworICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e30sIHBhdGhfaG9va3M9W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF9lbnRyeV0pOgorICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoJ29zJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF9lbnRyeV0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odyksIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Mod1stMV0uY2F0ZWdvcnksIEltcG9ydFdhcm5pbmcpKQorCisgICAgZGVmIHRlc3RfcGF0aF9pbXBvcnRlcl9jYWNoZV9lbXB0eV9zdHJpbmcoc2VsZik6CisgICAgICAgICMgVGhlIGVtcHR5IHN0cmluZyBzaG91bGQgY3JlYXRlIGEgZmluZGVyIHVzaW5nIHRoZSBjd2QuCisgICAgICAgIHBhdGggPSAnJworICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKKyAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfbW9kdWxlcyhtb2R1bGUpCisgICAgICAgIGhvb2sgPSBpbXBvcnRfdXRpbC5tb2NrX3BhdGhfaG9vayhvcy5jdXJkaXIsIGltcG9ydGVyPWltcG9ydGVyKQorICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9W3BhdGhdLCBwYXRoX2hvb2tzPVtob29rXSk6CisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG9zLmN1cmRpciwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpCisKKyAgICBkZWYgdGVzdF9Ob25lX29uX3N5c19wYXRoKHNlbGYpOgorICAgICAgICAjIFB1dHRpbmcgTm9uZSBpbiBzeXMucGF0aFswXSBjYXVzZWQgYW4gaW1wb3J0IHJlZ3Jlc3Npb24gZnJvbSBQeXRob24KKyAgICAgICAgIyAzLjI6IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNjUxNAorICAgICAgICBuZXdfcGF0aCA9IHN5cy5wYXRoWzpdCisgICAgICAgIG5ld19wYXRoLmluc2VydCgwLCBOb25lKQorICAgICAgICBuZXdfcGF0aF9pbXBvcnRlcl9jYWNoZSA9IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLmNvcHkoKQorICAgICAgICBuZXdfcGF0aF9pbXBvcnRlcl9jYWNoZS5wb3AoTm9uZSwgTm9uZSkKKyAgICAgICAgbmV3X3BhdGhfaG9va3MgPSBbemlwaW1wb3J0LnppcGltcG9ydGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLkZpbGVGaW5kZXIucGF0aF9ob29rKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKl9ib290c3RyYXAuX2dldF9zdXBwb3J0ZWRfZmlsZV9sb2FkZXJzKCkpXQorICAgICAgICBtaXNzaW5nID0gb2JqZWN0KCkKKyAgICAgICAgZW1haWwgPSBzeXMubW9kdWxlcy5wb3AoJ2VtYWlsJywgbWlzc2luZykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9c3lzLm1ldGFfcGF0aFs6XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1uZXdfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9pbXBvcnRlcl9jYWNoZT1uZXdfcGF0aF9pbXBvcnRlcl9jYWNoZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9ob29rcz1uZXdfcGF0aF9ob29rcyk6CisgICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0X21vZHVsZSgnZW1haWwnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIE1vZHVsZVR5cGUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBlbWFpbCBpcyBub3QgbWlzc2luZzoKKyAgICAgICAgICAgICAgICBzeXMubW9kdWxlc1snZW1haWwnXSA9IGVtYWlsCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKyAgICBydW5fdW5pdHRlc3QoRmluZGVyVGVzdHMpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CnNpbWlsYXJpdHkgaW5kZXggOTIlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKaW5kZXggYTBmNmIyZC4uNDU2OWMyNiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CkBAIC0xOTMsNiArMTkzLDIwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ19fcnVucHlfcGtnX18udW5jbGUuY291c2luJykKICAgICAgICAgc2VsZi5yZWxhdGl2ZV9pbXBvcnRfdGVzdChjcmVhdGUsIGdsb2JhbHNfLCBjYWxsYmFjaykKIAorICAgIGRlZiB0ZXN0X2ltcG9ydF9yZWxhdGl2ZV9pbXBvcnRfbm9fZnJvbWxpc3Qoc2VsZik6CisgICAgICAgICMgSW1wb3J0IGEgcmVsYXRpdmUgbW9kdWxlIHcvIG5vIGZyb21saXN0LgorICAgICAgICBjcmVhdGUgPSBbJ2NyYXNoLl9faW5pdF9fJywgJ2NyYXNoLm1vZCddCisgICAgICAgIGdsb2JhbHNfID0gW3snX19wYWNrYWdlX18nOiAnY3Jhc2gnLCAnX19uYW1lX18nOiAnY3Jhc2gnfV0KKyAgICAgICAgZGVmIGNhbGxiYWNrKGdsb2JhbF8pOgorICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygnY3Jhc2gnKQorICAgICAgICAgICAgbW9kID0gaW1wb3J0X3V0aWwuaW1wb3J0XygnbW9kJywgZ2xvYmFsXywge30sIFtdLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuX19uYW1lX18sICdjcmFzaC5tb2QnKQorICAgICAgICBzZWxmLnJlbGF0aXZlX2ltcG9ydF90ZXN0KGNyZWF0ZSwgZ2xvYmFsc18sIGNhbGxiYWNrKQorCisgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0X25vX2dsb2JhbHMoc2VsZik6CisgICAgICAgICMgTm8gZ2xvYmFscyBmb3IgYSByZWxhdGl2ZSBpbXBvcnQgaXMgYW4gZXJyb3IuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0Xygnc3lzJywgbGV2ZWw9MSkKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy91dGlsLnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3V0aWwucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdXRpbC5weQppbmRleCA2NDljNWVkLi44NmFjMDY1IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy91dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdXRpbC5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBpbXBvcnRsaWIKLWltcG9ydCBpbXBvcnRsaWIuX2Jvb3RzdHJhcAogaW1wb3J0IHVuaXR0ZXN0CiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvcmVncnRlc3QucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9yZWdydGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWJlMTFmCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvcmVncnRlc3QucHkKQEAgLTAsMCArMSwxNyBAQAorIiIiUnVuIFB5dGhvbidzIHN0YW5kYXJkIHRlc3Qgc3VpdGUgdXNpbmcgaW1wb3J0bGliLl9faW1wb3J0X18uCisKK1Rlc3RzIGtub3duIHRvIGZhaWwgYmVjYXVzZSBvZiBhc3N1bXB0aW9ucyB0aGF0IGltcG9ydGxpYiAocHJvcGVybHkpCitpbnZhbGlkYXRlcyBhcmUgYXV0b21hdGljYWxseSBza2lwcGVkIGlmIHRoZSBlbnRpcmUgdGVzdCBzdWl0ZSBpcyBydW4uCitPdGhlcndpc2UgYWxsIGNvbW1hbmQtbGluZSBvcHRpb25zIHZhbGlkIGZvciB0ZXN0LnJlZ3J0ZXN0IGFyZSBhbHNvIHZhbGlkIGZvcgordGhpcyBzY3JpcHQuCisKKyIiIgoraW1wb3J0IGltcG9ydGxpYgoraW1wb3J0IHN5cworZnJvbSB0ZXN0IGltcG9ydCByZWdydGVzdAorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIF9fYnVpbHRpbnNfXy5fX2ltcG9ydF9fID0gaW1wb3J0bGliLl9faW1wb3J0X18KKyAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jbGVhcigpCisKKyAgICByZWdydGVzdC5tYWluKHF1aWV0PVRydWUsIHZlcmJvc2UyPVRydWUpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL19faW5pdF9fLnB5CnNpbWlsYXJpdHkgaW5kZXggNjclCmNvcHkgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5CmNvcHkgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL19faW5pdF9fLnB5CmluZGV4IDhkN2M0OWQuLjNlZjk3ZjMgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL19faW5pdF9fLnB5CkBAIC0xLDExICsxLDExIEBACi1pbXBvcnQgaW1wb3J0bGliLnRlc3QKK2Zyb20gLi4gaW1wb3J0IHRlc3Rfc3VpdGUKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgdW5pdHRlc3QKIAogCiBkZWYgdGVzdF9zdWl0ZSgpOgogICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3Quc291cmNlJywgZGlyZWN0b3J5KQorICAgIHJldHVybiB0ZXN0LnRlc3Rfc3VpdGUoJ2ltcG9ydGxpYi50ZXN0LnNvdXJjZScsIGRpcmVjdG9yeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2FiY19sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9hYmNfbG9hZGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTElCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9hYmNfbG9hZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9hYmNfbG9hZGVyLnB5CmluZGV4IDMyNDU5MDcuLjBkOTEyYjYgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9hYmNfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2FiY19sb2FkZXIucHkKQEAgLTMyLDYgKzMyLDkgQEAKICAgICBkZWYgZ2V0X2ZpbGVuYW1lKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAogCisgICAgZGVmIG1vZHVsZV9yZXByKHNlbGYsIG1vZHVsZSk6CisgICAgICAgIHJldHVybiAnPG1vZHVsZT4nCisKIAogY2xhc3MgU291cmNlTG9hZGVyTW9jayhTb3VyY2VPbmx5TG9hZGVyTW9jayk6CiAKQEAgLTQwLDggKzQzLDEwIEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIG1hZ2ljPWltcC5nZXRfbWFnaWMoKSk6CiAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGF0aCkKICAgICAgICAgc2VsZi5ieXRlY29kZV9wYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHNlbGYucGF0aCkKKyAgICAgICAgc2VsZi5zb3VyY2Vfc2l6ZSA9IGxlbihzZWxmLnNvdXJjZSkKICAgICAgICAgZGF0YSA9IGJ5dGVhcnJheShtYWdpYykKLSAgICAgICAgZGF0YS5leHRlbmQobWFyc2hhbC5fd19sb25nKHNlbGYuc291cmNlX210aW1lKSkKKyAgICAgICAgZGF0YS5leHRlbmQoaW1wb3J0bGliLl93X2xvbmcoc2VsZi5zb3VyY2VfbXRpbWUpKQorICAgICAgICBkYXRhLmV4dGVuZChpbXBvcnRsaWIuX3dfbG9uZyhzZWxmLnNvdXJjZV9zaXplKSkKICAgICAgICAgY29kZV9vYmplY3QgPSBjb21waWxlKHNlbGYuc291cmNlLCBzZWxmLnBhdGgsICdleGVjJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9udF9pbmhlcml0PVRydWUpCiAgICAgICAgIGRhdGEuZXh0ZW5kKG1hcnNoYWwuZHVtcHMoY29kZV9vYmplY3QpKQpAQCAtNTYsOSArNjEsOSBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgSU9FcnJvcgogCi0gICAgZGVmIHBhdGhfbXRpbWUoc2VsZiwgcGF0aCk6CisgICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6CiAgICAgICAgIGFzc2VydCBwYXRoID09IHNlbGYucGF0aAotICAgICAgICByZXR1cm4gc2VsZi5zb3VyY2VfbXRpbWUKKyAgICAgICAgcmV0dXJuIHsnbXRpbWUnOiBzZWxmLnNvdXJjZV9tdGltZSwgJ3NpemUnOiBzZWxmLnNvdXJjZV9zaXplfQogCiAgICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpOgogICAgICAgICBzZWxmLndyaXR0ZW5bcGF0aF0gPSBieXRlcyhkYXRhKQpAQCAtMTAyLDkgKzEwNywxMiBAQAogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJhbHdheXMiKQogICAgICAgICAgICAgcGF0aCA9IHN1cGVyKCkuZ2V0X2ZpbGVuYW1lKG5hbWUpCiAgICAgICAgICAgICBhc3NlcnQgbGVuKHcpID09IDEKLSAgICAgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHdbMF0uY2F0ZWdvcnksIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh3WzBdLmNhdGVnb3J5LCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICByZXR1cm4gcGF0aAogCisgICAgZGVmIG1vZHVsZV9yZXByKHNlbGYpOgorICAgICAgICByZXR1cm4gJzxtb2R1bGU+JworCiAKIGNsYXNzIFB5TG9hZGVyQ29tcGF0TW9jayhQeUxvYWRlck1vY2spOgogCkBAIC0xNDYsMTEgKzE1NCwxMiBAQAogICAgICAgICAgICAgc2VsZi5ieXRlY29kZV90b19wYXRoW25hbWVdID0gZGF0YVsncGF0aCddCiAgICAgICAgICAgICBtYWdpYyA9IGRhdGEuZ2V0KCdtYWdpYycsIGltcC5nZXRfbWFnaWMoKSkKICAgICAgICAgICAgIG10aW1lID0gaW1wb3J0bGliLl93X2xvbmcoZGF0YS5nZXQoJ210aW1lJywgc2VsZi5kZWZhdWx0X210aW1lKSkKKyAgICAgICAgICAgIHNvdXJjZV9zaXplID0gaW1wb3J0bGliLl93X2xvbmcobGVuKHNlbGYuc291cmNlKSAmIDB4RkZGRkZGRkYpCiAgICAgICAgICAgICBpZiAnYmMnIGluIGRhdGE6CiAgICAgICAgICAgICAgICAgYmMgPSBkYXRhWydiYyddCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGJjID0gc2VsZi5jb21waWxlX2JjKG5hbWUpCi0gICAgICAgICAgICBzZWxmLm1vZHVsZV9ieXRlY29kZVtuYW1lXSA9IG1hZ2ljICsgbXRpbWUgKyBiYworICAgICAgICAgICAgc2VsZi5tb2R1bGVfYnl0ZWNvZGVbbmFtZV0gPSBtYWdpYyArIG10aW1lICsgc291cmNlX3NpemUgKyBiYwogCiAgICAgZGVmIGNvbXBpbGVfYmMoc2VsZiwgbmFtZSk6CiAgICAgICAgIHNvdXJjZV9wYXRoID0gc2VsZi5tb2R1bGVfcGF0aHMuZ2V0KG5hbWUsICc8dGVzdD4nKSBvciAnPHRlc3Q+JwpAQCAtMTk4LDcgKzIwNyw3IEBACiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImFsd2F5cyIpCiAgICAgICAgICAgICBjb2RlX29iamVjdCA9IHN1cGVyKCkuZ2V0X2NvZGUobmFtZSkKICAgICAgICAgICAgIGFzc2VydCBsZW4odykgPT0gMQotICAgICAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3Mod1swXS5jYXRlZ29yeSwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHdbMF0uY2F0ZWdvcnksIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIHJldHVybiBjb2RlX29iamVjdAogCiBjbGFzcyBQeUxvYWRlclRlc3RzKHRlc3RpbmdfYWJjLkxvYWRlclRlc3RzKToKQEAgLTIxOSw3ICsyMjgsNyBAQAogICAgICAgICBtb2NrID0gc2VsZi5tb2NrZXIoe25hbWU6IHBhdGh9KQogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vZHVsZSA9IG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYW1lIGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBzeXMubW9kdWxlcykKICAgICAgICAgc2VsZi5lcV9hdHRycyhtb2R1bGUsIF9fbmFtZV9fPW5hbWUsIF9fZmlsZV9fPXBhdGgsIF9fcGFja2FnZV9fPScnLAogICAgICAgICAgICAgICAgICAgICAgICAgX19sb2FkZXJfXz1tb2NrKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKSkKQEAgLTIzMSw3ICsyNDAsNyBAQAogICAgICAgICBtb2NrID0gc2VsZi5tb2NrZXIoe25hbWU6IHBhdGh9KQogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vZHVsZSA9IG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYW1lIGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBzeXMubW9kdWxlcykKICAgICAgICAgc2VsZi5lcV9hdHRycyhtb2R1bGUsIF9fbmFtZV9fPW5hbWUsIF9fZmlsZV9fPXBhdGgsCiAgICAgICAgICAgICAgICAgX19wYXRoX189W29zLnBhdGguZGlybmFtZShwYXRoKV0sIF9fcGFja2FnZV9fPW5hbWUsCiAgICAgICAgICAgICAgICAgX19sb2FkZXJfXz1tb2NrKQpAQCAtMjU3LDggKzI2Niw4IEBACiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKICAgICAgICAgICAgIGxvYWRlZF9tb2R1bGUgPSBtb2NrLmxvYWRfbW9kdWxlKG5hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVkX21vZHVsZSBpcyBtb2R1bGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3lzLm1vZHVsZXNbbmFtZV0gaXMgbW9kdWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZWRfbW9kdWxlLCBtb2R1bGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5tb2R1bGVzW25hbWVdLCBtb2R1bGUpCiAgICAgICAgIHJldHVybiBtb2NrLCBuYW1lCiAKICAgICBkZWYgdGVzdF9zdGF0ZV9hZnRlcl9mYWlsdXJlKHNlbGYpOgpAQCAtMjcxLDcgKzI4MCw3IEBACiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CiAgICAgICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN5cy5tb2R1bGVzW25hbWVdIGlzIG1vZHVsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLm1vZHVsZXNbbmFtZV0sIG1vZHVsZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vZHVsZSwgJ2JsYWgnKSkKICAgICAgICAgcmV0dXJuIG1vY2sKIApAQCAtMjgyLDcgKzI5MSw3IEBACiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CiAgICAgICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUgbm90IGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihuYW1lLCBzeXMubW9kdWxlcykKICAgICAgICAgcmV0dXJuIG1vY2sKIAogCkBAIC0zNDIsNyArMzUxLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFnaWMsIGltcC5nZXRfbWFnaWMoKSkKICAgICAgICAgbXRpbWUgPSBpbXBvcnRsaWIuX3JfbG9uZyhtb2NrLm1vZHVsZV9ieXRlY29kZVtuYW1lXVs0OjhdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG10aW1lLCAxKQotICAgICAgICBiYyA9IG1vY2subW9kdWxlX2J5dGVjb2RlW25hbWVdWzg6XQorICAgICAgICBzb3VyY2Vfc2l6ZSA9IG1vY2subW9kdWxlX2J5dGVjb2RlW25hbWVdWzg6MTJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1vY2suc291cmNlKSAmIDB4RkZGRkZGRkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLl9yX2xvbmcoc291cmNlX3NpemUpKQorICAgICAgICBiYyA9IG1vY2subW9kdWxlX2J5dGVjb2RlW25hbWVdWzEyOl0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYywgbW9jay5jb21waWxlX2JjKG5hbWUpKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgpAQCAtNDEyLDggKzQyNCw3IEBACiAgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gZG9udF93cml0ZV9ieXRlY29kZQogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKChuYW1lIGluIG1vY2subW9kdWxlX2J5dGVjb2RlKSBpcyBub3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvbnRfd3JpdGVfYnl0ZWNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobmFtZSBpbiBtb2NrLm1vZHVsZV9ieXRlY29kZSwgZG9udF93cml0ZV9ieXRlY29kZSkKIAogICAgIGRlZiB0ZXN0X25vX2J5dGVjb2RlX3dyaXR0ZW4oc2VsZik6CiAgICAgICAgIHNlbGYucnVuX3Rlc3QoVHJ1ZSkKQEAgLTQzOCw3ICs0NDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYWdpYyc6IGJhZF9tYWdpY319KQogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUgaW4gbW9jay5tb2R1bGVfYnl0ZWNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgbW9jay5tb2R1bGVfYnl0ZWNvZGUpCiAgICAgICAgIG1hZ2ljID0gbW9jay5tb2R1bGVfYnl0ZWNvZGVbbmFtZV1bOjRdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFnaWMsIGltcC5nZXRfbWFnaWMoKSkKIApAQCAtNDUxLDcgKzQ2Miw3IEBACiAgICAgICAgICAgICAgICAge25hbWU6IHsncGF0aCc6ICdwYXRoL3RvL21vZC5ieXRlY29kZScsICdtdGltZSc6IG9sZF9tdGltZX19KQogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUgaW4gbW9jay5tb2R1bGVfYnl0ZWNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgbW9jay5tb2R1bGVfYnl0ZWNvZGUpCiAgICAgICAgIG10aW1lID0gaW1wb3J0bGliLl9yX2xvbmcobW9jay5tb2R1bGVfYnl0ZWNvZGVbbmFtZV1bNDo4XSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdGltZSwgUHlQeWNMb2FkZXJNb2NrLmRlZmF1bHRfbXRpbWUpCiAKQEAgLTQ2OSw4ICs0ODAsOSBAQAogICAgICAgICAgICAgICAgIHsncGF0aCc6IG9zLnBhdGguam9pbigncGF0aCcsICd0bycsICdtb2QnKSwKICAgICAgICAgICAgICAgICAgJ21hZ2ljJzogYmFkX21hZ2ljfX0KICAgICAgICAgbW9jayA9IFB5UHljTG9hZGVyTW9jayh7bmFtZTogTm9uZX0sIGJjKQotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBuYW1lKQogCiAgICAgZGVmIHRlc3Rfbm9fYnl0ZWNvZGUoc2VsZik6CiAgICAgICAgICMgTWlzc2luZyBjb2RlIG9iamVjdCBieXRlY29kZSBzaG91bGQgbGVhZCB0byBhbiBFT0ZFcnJvci4KQEAgLTUxNCw4ICs1MjYsOSBAQAogICAgICAgICAjIElmIGFsbCAqX3BhdGggbWV0aG9kcyByZXR1cm4gTm9uZSwgcmFpc2UgSW1wb3J0RXJyb3IuCiAgICAgICAgIG5hbWUgPSAnbW9kJwogICAgICAgICBtb2NrID0gUHlQeWNMb2FkZXJNb2NrKHtuYW1lOiBOb25lfSkKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSksIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSksIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgIG1vY2subG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKIAogICAgIGRlZiB0ZXN0X3NvdXJjZV9wYXRoX0ltcG9ydEVycm9yKHNlbGYpOgogICAgICAgICAjIEFuIEltcG9ydEVycm9yIGZyb20gc291cmNlX3BhdGggc2hvdWxkIHRyaWdnZXIgYW4gSW1wb3J0RXJyb3IuCkBAIC01MzEsNyArNTQ0LDcgQEAKICAgICAgICAgbW9jayA9IFB5UHljTG9hZGVyTW9jayh7bmFtZTogb3MucGF0aC5qb2luKCdwYXRoJywgJ3RvJywgJ21vZCcpfSkKICAgICAgICAgYmFkX21ldGggPSB0eXBlcy5NZXRob2RUeXBlKHJhaXNlX0ltcG9ydEVycm9yLCBtb2NrKQogICAgICAgICBtb2NrLmJ5dGVjb2RlX3BhdGggPSBiYWRfbWV0aAotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQogCiAKQEAgLTU5MiwxNSArNjA1LDE3IEBACiAgICAgICAgIGRlZiByYWlzZV9JT0Vycm9yKHBhdGgpOgogICAgICAgICAgICAgcmFpc2UgSU9FcnJvcgogICAgICAgICBzZWxmLmxvYWRlci5nZXRfZGF0YSA9IHJhaXNlX0lPRXJyb3IKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgc2VsZi5sb2FkZXIuZ2V0X3NvdXJjZShzZWxmLm5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsIHNlbGYubmFtZSkKIAogICAgIGRlZiB0ZXN0X2lzX3BhY2thZ2Uoc2VsZik6CiAgICAgICAgICMgUHJvcGVybHkgZGV0ZWN0IHdoZW4gbG9hZGluZyBhIHBhY2thZ2UuCi0gICAgICAgIHNlbGYuc2V0VXAoaXNfcGFja2FnZT1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5sb2FkZXIuaXNfcGFja2FnZShzZWxmLm5hbWUpKQogICAgICAgICBzZWxmLnNldFVwKGlzX3BhY2thZ2U9RmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5sb2FkZXIuaXNfcGFja2FnZShzZWxmLm5hbWUpKQorICAgICAgICBzZWxmLnNldFVwKGlzX3BhY2thZ2U9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubG9hZGVyLmlzX3BhY2thZ2Uoc2VsZi5uYW1lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxvYWRlci5pc19wYWNrYWdlKHNlbGYubmFtZSArICcuX19pbml0X18nKSkKIAogICAgIGRlZiB0ZXN0X2dldF9jb2RlKHNlbGYpOgogICAgICAgICAjIFZlcmlmeSB0aGUgY29kZSBvYmplY3QgaXMgY3JlYXRlZC4KQEAgLTYxNSw3ICs2MzAsNyBAQAogICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5uYW1lKQogICAgICAgICAgICAgc2VsZi52ZXJpZnlfbW9kdWxlKG1vZHVsZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGF0aF9fLCBbb3MucGF0aC5kaXJuYW1lKHNlbGYucGF0aCldKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubmFtZSBpbiBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5uYW1lLCBzeXMubW9kdWxlcykKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2Vfc2V0dGluZ3Moc2VsZik6CiAgICAgICAgICMgX19wYWNrYWdlX18gbmVlZHMgdG8gYmUgc2V0LCB3aGlsZSBfX3BhdGhfXyBpcyBzZXQgb24gaWYgdGhlIG1vZHVsZQpAQCAtNjU2LDcgKzY3MSw4IEBACiAgICAgICAgIGlmIGJ5dGVjb2RlX3dyaXR0ZW46CiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYuY2FjaGVkLCBzZWxmLmxvYWRlci53cml0dGVuKQogICAgICAgICAgICAgZGF0YSA9IGJ5dGVhcnJheShpbXAuZ2V0X21hZ2ljKCkpCi0gICAgICAgICAgICBkYXRhLmV4dGVuZChtYXJzaGFsLl93X2xvbmcoc2VsZi5sb2FkZXIuc291cmNlX210aW1lKSkKKyAgICAgICAgICAgIGRhdGEuZXh0ZW5kKGltcG9ydGxpYi5fd19sb25nKHNlbGYubG9hZGVyLnNvdXJjZV9tdGltZSkpCisgICAgICAgICAgICBkYXRhLmV4dGVuZChpbXBvcnRsaWIuX3dfbG9uZyhzZWxmLmxvYWRlci5zb3VyY2Vfc2l6ZSkpCiAgICAgICAgICAgICBkYXRhLmV4dGVuZChtYXJzaGFsLmR1bXBzKGNvZGVfb2JqZWN0KSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2FkZXIud3JpdHRlbltzZWxmLmNhY2hlZF0sIGJ5dGVzKGRhdGEpKQogCkBAIC03NjIsMTcgKzc3OCwzMSBAQAogICAgICAgICBleHBlY3QgPSBpby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyKE5vbmUsIFRydWUpLmRlY29kZShzb3VyY2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5nZXRfc291cmNlKG5hbWUpLCBleHBlY3QpCiAKKwogY2xhc3MgQWJzdHJhY3RNZXRob2RJbXBsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIiIiVGVzdCB0aGUgY29uY3JldGUgYWJzdHJhY3RtZXRob2QgaW1wbGVtZW50YXRpb25zLiIiIgogCisgICAgY2xhc3MgTWV0YVBhdGhGaW5kZXIoYWJjLk1ldGFQYXRoRmluZGVyKToKKyAgICAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoKToKKyAgICAgICAgICAgIHN1cGVyKCkuZmluZF9tb2R1bGUoZnVsbG5hbWUsIHBhdGgpCisKKyAgICBjbGFzcyBQYXRoRW50cnlGaW5kZXIoYWJjLlBhdGhFbnRyeUZpbmRlcik6CisgICAgICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBfKToKKyAgICAgICAgICAgIHN1cGVyKCkuZmluZF9tb2R1bGUoXykKKworICAgICAgICBkZWYgZmluZF9sb2FkZXIoc2VsZiwgXyk6CisgICAgICAgICAgICBzdXBlcigpLmZpbmRfbG9hZGVyKF8pCisKKyAgICBjbGFzcyBGaW5kZXIoYWJjLkZpbmRlcik6CisgICAgICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aCk6CisgICAgICAgICAgICBzdXBlcigpLmZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoKQorCiAgICAgY2xhc3MgTG9hZGVyKGFiYy5Mb2FkZXIpOgogICAgICAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICAgICAgc3VwZXIoKS5sb2FkX21vZHVsZShmdWxsbmFtZSkKLQotICAgIGNsYXNzIEZpbmRlcihhYmMuRmluZGVyKToKLSAgICAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIF8pOgotICAgICAgICAgICAgc3VwZXIoKS5maW5kX21vZHVsZShfKQorICAgICAgICBkZWYgbW9kdWxlX3JlcHIoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgICAgIHN1cGVyKCkubW9kdWxlX3JlcHIobW9kdWxlKQogCiAgICAgY2xhc3MgUmVzb3VyY2VMb2FkZXIoTG9hZGVyLCBhYmMuUmVzb3VyY2VMb2FkZXIpOgogICAgICAgICBkZWYgZ2V0X2RhdGEoc2VsZiwgXyk6CkBAIC04NDcsNyArODc3LDcgQEAKICAgICAgICAgIyBSZXF1aXJlZCBhYnN0cmFjdG1ldGhvZHMuCiAgICAgICAgIHNlbGYucmFpc2VzX05vdEltcGxlbWVudGVkRXJyb3IoaW5zLCAnZ2V0X2ZpbGVuYW1lJywgJ2dldF9kYXRhJykKICAgICAgICAgIyBPcHRpb25hbCBhYnN0cmFjdG1ldGhvZHMuCi0gICAgICAgIHNlbGYucmFpc2VzX05vdEltcGxlbWVudGVkRXJyb3IoaW5zLCdwYXRoX210aW1lJywgJ3NldF9kYXRhJykKKyAgICAgICAgc2VsZi5yYWlzZXNfTm90SW1wbGVtZW50ZWRFcnJvcihpbnMsJ3BhdGhfc3RhdHMnLCAnc2V0X2RhdGEnKQogCiAgICAgZGVmIHRlc3RfUHlMb2FkZXIoc2VsZik6CiAgICAgICAgIHNlbGYucmFpc2VzX05vdEltcGxlbWVudGVkRXJyb3Ioc2VsZi5QeUxvYWRlcigpLCAnc291cmNlX3BhdGgnLApkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CnNpbWlsYXJpdHkgaW5kZXggNzQlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CmluZGV4IDczNzc3ZGUuLjI0MTE3M2YgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKQEAgLTEsNyArMSw5IEBACiAiIiJUZXN0IGNhc2Utc2Vuc2l0aXZpdHkgKFBFUCAyMzUpLiIiIgogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGZyb20gLi4gaW1wb3J0IHV0aWwKIGZyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAoraW1wb3J0IGltcAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQgYXMgdGVzdF9zdXBwb3J0CkBAIC0xOSw5ICsyMSwxMSBAQAogICAgIGFzc2VydCBuYW1lICE9IG5hbWUubG93ZXIoKQogCiAgICAgZGVmIGZpbmQoc2VsZiwgcGF0aCk6Ci0gICAgICAgIGZpbmRlciA9IF9ib290c3RyYXAuX0ZpbGVGaW5kZXIocGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl9Tb3VyY2VGaW5kZXJEZXRhaWxzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fU291cmNlbGVzc0ZpbmRlckRldGFpbHMoKSkKKyAgICAgICAgZmluZGVyID0gbWFjaGluZXJ5LkZpbGVGaW5kZXIocGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVMpKQogICAgICAgICByZXR1cm4gZmluZGVyLmZpbmRfbW9kdWxlKHNlbGYubmFtZSkKIAogICAgIGRlZiBzZW5zaXRpdml0eV90ZXN0KHNlbGYpOgpAQCAtMzcsNiArNDEsOSBAQAogICAgIGRlZiB0ZXN0X3NlbnNpdGl2ZShzZWxmKToKICAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKICAgICAgICAgICAgIGVudi51bnNldCgnUFlUSE9OQ0FTRU9LJykKKyAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBpbiBfYm9vdHN0cmFwLl9vcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ29zLmVudmlyb24gY2hhbmdlcyBub3QgcmVmbGVjdGVkIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfb3MuZW52aXJvbicpCiAgICAgICAgICAgICBzZW5zaXRpdmUsIGluc2Vuc2l0aXZlID0gc2VsZi5zZW5zaXRpdml0eV90ZXN0KCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbnNpdGl2ZSwgJ2xvYWRfbW9kdWxlJykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYubmFtZSwgc2Vuc2l0aXZlLmdldF9maWxlbmFtZShzZWxmLm5hbWUpKQpAQCAtNDUsNiArNTIsOSBAQAogICAgIGRlZiB0ZXN0X2luc2Vuc2l0aXZlKHNlbGYpOgogICAgICAgICB3aXRoIHRlc3Rfc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgogICAgICAgICAgICAgZW52LnNldCgnUFlUSE9OQ0FTRU9LJywgJzEnKQorICAgICAgICAgICAgaWYgYidQWVRIT05DQVNFT0snIG5vdCBpbiBfYm9vdHN0cmFwLl9vcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ29zLmVudmlyb24gY2hhbmdlcyBub3QgcmVmbGVjdGVkIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfb3MuZW52aXJvbicpCiAgICAgICAgICAgICBzZW5zaXRpdmUsIGluc2Vuc2l0aXZlID0gc2VsZi5zZW5zaXRpdml0eV90ZXN0KCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbnNpdGl2ZSwgJ2xvYWRfbW9kdWxlJykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYubmFtZSwgc2Vuc2l0aXZlLmdldF9maWxlbmFtZShzZWxmLm5hbWUpKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKc2ltaWxhcml0eSBpbmRleCA3NiUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weQppbmRleCBjN2E3ZDhmLi45MGY5ZDMwIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKQEAgLTEsNSArMSw2IEBACitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CiBpbXBvcnQgaW1wb3J0bGliCi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAoraW1wb3J0IGltcG9ydGxpYi5hYmMKIGZyb20gLi4gaW1wb3J0IGFiYwogZnJvbSAuLiBpbXBvcnQgdXRpbAogZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCkBAIC0yNCwxMiArMjUsNDggQEAKIAogICAgICIiIgogCisgICAgZGVmIHRlc3RfbG9hZF9tb2R1bGVfQVBJKHNlbGYpOgorICAgICAgICAjIElmIGZ1bGxuYW1lIGlzIG5vdCBzcGVjaWZpZWQgdGhhdCBhc3N1bWUgc2VsZi5uYW1lIGlzIGRlc2lyZWQuCisgICAgICAgIGNsYXNzIFRlc3Rlck1peGluKGltcG9ydGxpYi5hYmMuTG9hZGVyKToKKyAgICAgICAgICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6IHJldHVybiBmdWxsbmFtZQorICAgICAgICAgICAgZGVmIG1vZHVsZV9yZXByKHNlbGYsIG1vZHVsZSk6IHJldHVybiAnPG1vZHVsZT4nCisKKyAgICAgICAgY2xhc3MgVGVzdGVyKGltcG9ydGxpYi5hYmMuRmlsZUxvYWRlciwgVGVzdGVyTWl4aW4pOgorICAgICAgICAgICAgZGVmIGdldF9jb2RlKHNlbGYsIF8pOiBwYXNzCisgICAgICAgICAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBfKTogcGFzcworICAgICAgICAgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgXyk6IHBhc3MKKworICAgICAgICBuYW1lID0gJ21vZF9uYW1lJworICAgICAgICBsb2FkZXIgPSBUZXN0ZXIobmFtZSwgJ3NvbWVfcGF0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZSwgbG9hZGVyLmxvYWRfbW9kdWxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZSwgbG9hZGVyLmxvYWRfbW9kdWxlKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWUsIGxvYWRlci5sb2FkX21vZHVsZShuYW1lKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUobG9hZGVyLm5hbWUgKyAnWFhYJykKKworICAgIGRlZiB0ZXN0X2dldF9maWxlbmFtZV9BUEkoc2VsZik6CisgICAgICAgICMgSWYgZnVsbG5hbWUgaXMgbm90IHNldCB0aGVuIGFzc3VtZSBzZWxmLnBhdGggaXMgZGVzaXJlZC4KKyAgICAgICAgY2xhc3MgVGVzdGVyKGltcG9ydGxpYi5hYmMuRmlsZUxvYWRlcik6CisgICAgICAgICAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgXyk6IHBhc3MKKyAgICAgICAgICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIF8pOiBwYXNzCisgICAgICAgICAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBfKTogcGFzcworICAgICAgICAgICAgZGVmIG1vZHVsZV9yZXByKHNlbGYsIF8pOiBwYXNzCisKKyAgICAgICAgcGF0aCA9ICdzb21lX3BhdGgnCisgICAgICAgIG5hbWUgPSAnc29tZV9uYW1lJworICAgICAgICBsb2FkZXIgPSBUZXN0ZXIobmFtZSwgcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRoLCBsb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGgsIGxvYWRlci5nZXRfZmlsZW5hbWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRoLCBsb2FkZXIuZ2V0X2ZpbGVuYW1lKE5vbmUpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGxvYWRlci5nZXRfZmlsZW5hbWUobmFtZSArICdYWFgnKQorCiAgICAgIyBbYmFzaWNdCiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgogICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6Ci0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ190ZW1wJyBpbiBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ190ZW1wJywgc3lzLm1vZHVsZXMpCiAgICAgICAgICAgICBjaGVjayA9IHsnX19uYW1lX18nOiAnX3RlbXAnLCAnX19maWxlX18nOiBtYXBwaW5nWydfdGVtcCddLAogICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJzogJyd9CiAgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gY2hlY2suaXRlbXMoKToKQEAgLTM3LDEwICs3NCwxMCBAQAogCiAgICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3BrZy5fX2luaXRfXycpIGFzIG1hcHBpbmc6Ci0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfcGtnJywKKyAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfcGtnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nWydfcGtnLl9faW5pdF9fJ10pCiAgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUoJ19wa2cnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdfcGtnJyBpbiBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19wa2cnLCBzeXMubW9kdWxlcykKICAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfcGtnJywgJ19fZmlsZV9fJzogbWFwcGluZ1snX3BrZy5fX2luaXRfXyddLAogICAgICAgICAgICAgICAgICAgICAgJ19fcGF0aF9fJzogW29zLnBhdGguZGlybmFtZShtYXBwaW5nWydfcGtnLl9faW5pdF9fJ10pXSwKICAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6ICdfcGtnJ30KQEAgLTUwLDEwICs4NywxMCBAQAogCiAgICAgZGVmIHRlc3RfbGFja2luZ19wYXJlbnQoc2VsZik6CiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ19wa2cuX19pbml0X18nLCAnX3BrZy5tb2QnKWFzIG1hcHBpbmc6Ci0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfcGtnLm1vZCcsCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3BrZy5tb2QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdbJ19wa2cubW9kJ10pCiAgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUoJ19wa2cubW9kJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnX3BrZy5tb2QnIGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignX3BrZy5tb2QnLCBzeXMubW9kdWxlcykKICAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfcGtnLm1vZCcsICdfX2ZpbGVfXyc6IG1hcHBpbmdbJ19wa2cubW9kJ10sCiAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nOiAnX3BrZyd9CiAgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gY2hlY2suaXRlbXMoKToKQEAgLTY1LDE5ICsxMDIsMTQgQEAKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9yZXVzZShzZWxmKToKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgotICAgICAgICAgICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgbWFwcGluZ1snX3RlbXAnXSkKICAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZSgnX3RlbXAnKQogICAgICAgICAgICAgbW9kdWxlX2lkID0gaWQobW9kdWxlKQogICAgICAgICAgICAgbW9kdWxlX2RpY3RfaWQgPSBpZChtb2R1bGUuX19kaWN0X18pCiAgICAgICAgICAgICB3aXRoIG9wZW4obWFwcGluZ1snX3RlbXAnXSwgJ3cnKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoInRlc3RpbmdfdmFyID0gNDJcbiIpCi0gICAgICAgICAgICAjIEZvciBmaWxlc3lzdGVtcyB3aGVyZSB0aGUgbXRpbWUgaXMgb25seSB0byBhIHNlY29uZCBncmFudWxhcml0eSwKLSAgICAgICAgICAgICMgZXZlcnl0aGluZyB0aGF0IGhhcyBoYXBwZW5lZCBhYm92ZSBjYW4gYmUgdG9vIGZhc3Q7Ci0gICAgICAgICAgICAjIGZvcmNlIGFuIG10aW1lIG9uIHRoZSBzb3VyY2UgdGhhdCBpcyBndWFyYW50ZWVkIHRvIGJlIGRpZmZlcmVudAotICAgICAgICAgICAgIyB0aGFuIHRoZSBvcmlnaW5hbCBtdGltZS4KLSAgICAgICAgICAgIGxvYWRlci5wYXRoX210aW1lID0gc2VsZi5mYWtlX210aW1lKGxvYWRlci5wYXRoX210aW1lKQogICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RpbmdfdmFyJyBpbiBtb2R1bGUuX19kaWN0X18sCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd0ZXN0aW5nX3ZhcicsIG1vZHVsZS5fX2RpY3RfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3RpbmdfdmFyJyBub3QgaW4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7MH0iLmZvcm1hdChsaXN0KG1vZHVsZS5fX2RpY3RfXy5rZXlzKCkpKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLCBzeXMubW9kdWxlc1snX3RlbXAnXSkKQEAgLTk1LDcgKzEyNyw3IEBACiAgICAgICAgICAgICAgICAgc2V0YXR0cihvcmlnX21vZHVsZSwgYXR0ciwgdmFsdWUpCiAgICAgICAgICAgICB3aXRoIG9wZW4obWFwcGluZ1tuYW1lXSwgJ3cnKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoJysrKyBiYWQgc3ludGF4ICsrKycpCi0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CiAgICAgICAgICAgICAgICAgbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCiAgICAgICAgICAgICBmb3IgYXR0ciBpbiBhdHRyaWJ1dGVzOgpAQCAtMTA2LDEwICsxMzgsMTAgQEAKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgd2l0aCBvcGVuKG1hcHBpbmdbJ190ZW1wJ10sICd3JykgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKCc9JykKLSAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgbWFwcGluZ1snX3RlbXAnXSkKKyAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKICAgICAgICAgICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUoJ190ZW1wJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnX3RlbXAnIG5vdCBpbiBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ190ZW1wJywgc3lzLm1vZHVsZXMpCiAKICAgICBkZWYgdGVzdF9maWxlX2Zyb21fZW1wdHlfc3RyaW5nX2RpcihzZWxmKToKICAgICAgICAgIyBMb2FkaW5nIGEgbW9kdWxlIGZvdW5kIGZyb20gYW4gZW1wdHkgc3RyaW5nIGVudHJ5IG9uIHN5cy5wYXRoIHNob3VsZApAQCAtMTE5LDcgKzE1MSw3IEBACiAgICAgICAgICAgICBmaWxlLndyaXRlKCIjIHRlc3QgZmlsZSBmb3IgaW1wb3J0bGliIikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoJ190ZW1wJyk6Ci0gICAgICAgICAgICAgICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBmaWxlX3BhdGgpCisgICAgICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgZmlsZV9wYXRoKQogICAgICAgICAgICAgICAgIG1vZCA9IGxvYWRlci5sb2FkX21vZHVsZSgnX3RlbXAnKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9wYXRoLCBtb2QuX19maWxlX18pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UoZmlsZV9wYXRoKSwKQEAgLTE0NSw3ICsxNzcsNyBAQAogICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZ2V0YXR0cihlcnJubywgJ0VPVkVSRkxPVycsIE5vbmUpOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCBzZXQgbW9kaWZpY2F0aW9uIHRpbWUgdG8gbGFyZ2UgaW50ZWdlciAoe30pIi5mb3JtYXQoZSkpCi0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgbW9kID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpCiAgICAgICAgICAgICAjIFNhbml0eSBjaGVja3MuCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5fX2NhY2hlZF9fLCBjb21waWxlZCkKQEAgLTE1OSw3ICsxOTEsNyBAQAogICAgIGRlZiBpbXBvcnRfKHNlbGYsIGZpbGUsIG1vZHVsZV9uYW1lKToKICAgICAgICAgbG9hZGVyID0gc2VsZi5sb2FkZXIobW9kdWxlX25hbWUsIGZpbGUpCiAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZShtb2R1bGVfbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZV9uYW1lIGluIHN5cy5tb2R1bGVzKQorICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZV9uYW1lLCBzeXMubW9kdWxlcykKIAogICAgIGRlZiBtYW5pcHVsYXRlX2J5dGVjb2RlKHNlbGYsIG5hbWUsIG1hcHBpbmcsIG1hbmlwdWxhdG9yLCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9RmFsc2UpOgpAQCAtMjE1LDEwICsyNDcsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKICAgICAgICAgICAgIHRlc3QoJ190ZW1wJywgbWFwcGluZywgYmNfcGF0aCkKIAorICAgIGRlZiBfdGVzdF9wYXJ0aWFsX3NpemUoc2VsZiwgdGVzdCwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6CisgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgICAgIGJjX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjExXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKKyAgICAgICAgICAgIHRlc3QoJ190ZW1wJywgbWFwcGluZywgYmNfcGF0aCkKKwogICAgIGRlZiBfdGVzdF9ub19tYXJzaGFsKHNlbGYsICosIGRlbF9zb3VyY2U9RmFsc2UpOgogICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBiY19wYXRoID0gc2VsZi5tYW5pcHVsYXRlX2J5dGVjb2RlKCdfdGVtcCcsIG1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYmM6IGJjWzo4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjEyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKICAgICAgICAgICAgIGZpbGVfcGF0aCA9IG1hcHBpbmdbJ190ZW1wJ10gaWYgbm90IGRlbF9zb3VyY2UgZWxzZSBiY19wYXRoCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yKToKQEAgLTIyNywxNiArMjY2LDE4IEBACiAgICAgZGVmIF90ZXN0X25vbl9jb2RlX21hcnNoYWwoc2VsZiwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6CiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjhdICsgbWFyc2hhbC5kdW1wcyhiJ2FiY2QnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjEyXSArIG1hcnNoYWwuZHVtcHMoYidhYmNkJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxfc291cmNlPWRlbF9zb3VyY2UpCiAgICAgICAgICAgICBmaWxlX3BhdGggPSBtYXBwaW5nWydfdGVtcCddIGlmIG5vdCBkZWxfc291cmNlIGVsc2UgYnl0ZWNvZGVfcGF0aAotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgICAgICBzZWxmLmltcG9ydF8oZmlsZV9wYXRoLCAnX3RlbXAnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgJ190ZW1wJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnBhdGgsIGJ5dGVjb2RlX3BhdGgpCiAKICAgICBkZWYgX3Rlc3RfYmFkX21hcnNoYWwoc2VsZiwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6CiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjhdICsgYic8dGVzdD4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiY1s6MTJdICsgYic8dGVzdD4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsX3NvdXJjZT1kZWxfc291cmNlKQogICAgICAgICAgICAgZmlsZV9wYXRoID0gbWFwcGluZ1snX3RlbXAnXSBpZiBub3QgZGVsX3NvdXJjZSBlbHNlIGJ5dGVjb2RlX3BhdGgKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IpOgpAQCAtMjUxLDcgKzI5Miw3IEBACiAKIGNsYXNzIFNvdXJjZUxvYWRlckJhZEJ5dGVjb2RlVGVzdChCYWRCeXRlY29kZVRlc3QpOgogCi0gICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fU291cmNlRmlsZUxvYWRlcgorICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyCiAKICAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3RfZW1wdHlfZmlsZShzZWxmKToKQEAgLTI2MCw3ICszMDEsNyBAQAogICAgICAgICBkZWYgdGVzdChuYW1lLCBtYXBwaW5nLCBieXRlY29kZV9wYXRoKToKICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhtYXBwaW5nW25hbWVdLCBuYW1lKQogICAgICAgICAgICAgd2l0aCBvcGVuKGJ5dGVjb2RlX3BhdGgsICdyYicpIGFzIGZpbGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihmaWxlLnJlYWQoKSksIDgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihmaWxlLnJlYWQoKSksIDEyKQogCiAgICAgICAgIHNlbGYuX3Rlc3RfZW1wdHlfZmlsZSh0ZXN0KQogCkBAIC0yNjgsNyArMzA5LDcgQEAKICAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYnl0ZWNvZGVfcGF0aCk6CiAgICAgICAgICAgICBzZWxmLmltcG9ydF8obWFwcGluZ1tuYW1lXSwgbmFtZSkKICAgICAgICAgICAgIHdpdGggb3BlbihieXRlY29kZV9wYXRoLCAncmInKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZS5yZWFkKCkpLCA4KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZS5yZWFkKCkpLCAxMikKIAogICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfbWFnaWModGVzdCkKIApAQCAtMjc5LDcgKzMyMCw3IEBACiAgICAgICAgIGRlZiB0ZXN0KG5hbWUsIG1hcHBpbmcsIGJ5dGVjb2RlX3BhdGgpOgogICAgICAgICAgICAgc2VsZi5pbXBvcnRfKG1hcHBpbmdbbmFtZV0sIG5hbWUpCiAgICAgICAgICAgICB3aXRoIG9wZW4oYnl0ZWNvZGVfcGF0aCwgJ3JiJykgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGUucmVhZCgpKSwgOCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGUucmVhZCgpKSwgMTIpCiAKICAgICAgICAgc2VsZi5fdGVzdF9tYWdpY19vbmx5KHRlc3QpCiAKQEAgLTMwMSwxMSArMzQyLDIyIEBACiAgICAgICAgIGRlZiB0ZXN0KG5hbWUsIG1hcHBpbmcsIGJjX3BhdGgpOgogICAgICAgICAgICAgc2VsZi5pbXBvcnRfKG1hcHBpbmdbbmFtZV0sIG5hbWUpCiAgICAgICAgICAgICB3aXRoIG9wZW4oYmNfcGF0aCwgJ3JiJykgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGUucmVhZCgpKSwgOCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGUucmVhZCgpKSwgMTIpCiAKICAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX3RpbWVzdGFtcCh0ZXN0KQogCiAgICAgQHNvdXJjZV91dGlsLndyaXRlc19ieXRlY29kZV9maWxlcworICAgIGRlZiB0ZXN0X3BhcnRpYWxfc2l6ZShzZWxmKToKKyAgICAgICAgIyBXaGVuIHRoZSBzaXplIGlzIHBhcnRpYWwsIHJlZ2VuZXJhdGUgdGhlIC5weWMsIGVsc2UKKyAgICAgICAgIyByYWlzZSBFT0ZFcnJvci4KKyAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYmNfcGF0aCk6CisgICAgICAgICAgICBzZWxmLmltcG9ydF8obWFwcGluZ1tuYW1lXSwgbmFtZSkKKyAgICAgICAgICAgIHdpdGggb3BlbihiY19wYXRoLCAncmInKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZS5yZWFkKCkpLCAxMikKKworICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfc2l6ZSh0ZXN0KQorCisgICAgQHNvdXJjZV91dGlsLndyaXRlc19ieXRlY29kZV9maWxlcwogICAgIGRlZiB0ZXN0X25vX21hcnNoYWwoc2VsZik6CiAgICAgICAgICMgV2hlbiB0aGVyZSBpcyBvbmx5IHRoZSBtYWdpYyBudW1iZXIgYW5kIHRpbWVzdGFtcCwgcmFpc2UgRU9GRXJyb3IuCiAgICAgICAgIHNlbGYuX3Rlc3Rfbm9fbWFyc2hhbCgpCkBAIC0zNjQsMTkgKzQxNiwyMyBAQAogCiBjbGFzcyBTb3VyY2VsZXNzTG9hZGVyQmFkQnl0ZWNvZGVUZXN0KEJhZEJ5dGVjb2RlVGVzdCk6CiAKLSAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VsZXNzRmlsZUxvYWRlcgorICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcgogCiAgICAgZGVmIHRlc3RfZW1wdHlfZmlsZShzZWxmKToKICAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYnl0ZWNvZGVfcGF0aCk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhieXRlY29kZV9wYXRoLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnBhdGgsIGJ5dGVjb2RlX3BhdGgpCiAKICAgICAgICAgc2VsZi5fdGVzdF9lbXB0eV9maWxlKHRlc3QsIGRlbF9zb3VyY2U9VHJ1ZSkKIAogICAgIGRlZiB0ZXN0X3BhcnRpYWxfbWFnaWMoc2VsZik6CiAgICAgICAgIGRlZiB0ZXN0KG5hbWUsIG1hcHBpbmcsIGJ5dGVjb2RlX3BhdGgpOgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgICAgICBzZWxmLmltcG9ydF8oYnl0ZWNvZGVfcGF0aCwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsIG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5wYXRoLCBieXRlY29kZV9wYXRoKQogICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfbWFnaWModGVzdCwgZGVsX3NvdXJjZT1UcnVlKQogCiAgICAgZGVmIHRlc3RfbWFnaWNfb25seShzZWxmKToKQEAgLTM4OCw4ICs0NDQsMTAgQEAKIAogICAgIGRlZiB0ZXN0X2JhZF9tYWdpYyhzZWxmKToKICAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYnl0ZWNvZGVfcGF0aCk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhieXRlY29kZV9wYXRoLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnBhdGgsIGJ5dGVjb2RlX3BhdGgpCiAKICAgICAgICAgc2VsZi5fdGVzdF9iYWRfbWFnaWModGVzdCwgZGVsX3NvdXJjZT1UcnVlKQogCkBAIC00MDAsNiArNDU4LDEzIEBACiAKICAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX3RpbWVzdGFtcCh0ZXN0LCBkZWxfc291cmNlPVRydWUpCiAKKyAgICBkZWYgdGVzdF9wYXJ0aWFsX3NpemUoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KG5hbWUsIG1hcHBpbmcsIGJ5dGVjb2RlX3BhdGgpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFT0ZFcnJvcik6CisgICAgICAgICAgICAgICAgc2VsZi5pbXBvcnRfKGJ5dGVjb2RlX3BhdGgsIG5hbWUpCisKKyAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX3NpemUodGVzdCwgZGVsX3NvdXJjZT1UcnVlKQorCiAgICAgZGVmIHRlc3Rfbm9fbWFyc2hhbChzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9ub19tYXJzaGFsKGRlbF9zb3VyY2U9VHJ1ZSkKIApkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbmRlci5weQpzaW1pbGFyaXR5IGluZGV4IDYzJQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfZmluZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maW5kZXIucHkKaW5kZXggN2I5MDg4ZC4uOGU0OTg2OCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maW5kZXIucHkKQEAgLTEsMTAgKzEsMTUgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCiBmcm9tIC4uIGltcG9ydCBhYmMKIGZyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IG1ha2VfbGVnYWN5X3B5YwotaW1wb3J0IG9zCisKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGltcG9ydCBlcnJubworaW1wb3J0IGltcAoraW1wb3J0IG9zCiBpbXBvcnQgcHlfY29tcGlsZQoraW1wb3J0IHN0YXQKK2ltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IG1ha2VfbGVnYWN5X3B5YwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKIApAQCAtMzMsMTEgKzM4LDE1IEBACiAKICAgICAiIiIKIAorICAgIGRlZiBnZXRfZmluZGVyKHNlbGYsIHJvb3QpOgorICAgICAgICBsb2FkZXJfZGV0YWlscyA9IFsobWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTKV0KKyAgICAgICAgcmV0dXJuIG1hY2hpbmVyeS5GaWxlRmluZGVyKHJvb3QsICpsb2FkZXJfZGV0YWlscykKKwogICAgIGRlZiBpbXBvcnRfKHNlbGYsIHJvb3QsIG1vZHVsZSk6Ci0gICAgICAgIGZpbmRlciA9IF9ib290c3RyYXAuX0ZpbGVGaW5kZXIocm9vdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl9Tb3VyY2VGaW5kZXJEZXRhaWxzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fU291cmNlbGVzc0ZpbmRlckRldGFpbHMoKSkKLSAgICAgICAgcmV0dXJuIGZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpCisgICAgICAgIHJldHVybiBzZWxmLmdldF9maW5kZXIocm9vdCkuZmluZF9tb2R1bGUobW9kdWxlKQogCiAgICAgZGVmIHJ1bl90ZXN0KHNlbGYsIHRlc3QsIGNyZWF0ZT1Ob25lLCAqLCBjb21waWxlXz1Ob25lLCB1bmxpbms9Tm9uZSk6CiAgICAgICAgICIiIlRlc3QgdGhlIGZpbmRpbmcgb2YgJ3Rlc3QnIHdpdGggdGhlIGNyZWF0aW9uIG9mIG1vZHVsZXMgbGlzdGVkIGluCkBAIC0xMDIsMzkgKzExMSwyMSBAQAogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5pbXBvcnRfKHBrZ19kaXIsICdwa2cuc3ViJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGxvYWRlciwgJ2xvYWRfbW9kdWxlJykpCiAKLSAgICAjIFtzdWIgZW1wdHldCi0gICAgZGVmIHRlc3RfZW1wdHlfc3ViX2RpcmVjdG9yeShzZWxmKToKLSAgICAgICAgY29udGV4dCA9IHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLnN1Yi5fX2luaXRfXycpCi0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiZXJyb3IiLCBJbXBvcnRXYXJuaW5nKQotICAgICAgICAgICAgd2l0aCBjb250ZXh0IGFzIG1hcHBpbmc6Ci0gICAgICAgICAgICAgICAgb3MudW5saW5rKG1hcHBpbmdbJ3BrZy5zdWIuX19pbml0X18nXSkKLSAgICAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5kaXJuYW1lKG1hcHBpbmdbJ3BrZy5fX2luaXRfXyddKQotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0V2FybmluZyk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0Xyhwa2dfZGlyLCAncGtnLnN1YicpCi0KICAgICAjIFtwYWNrYWdlIG92ZXIgbW9kdWxlc10KICAgICBkZWYgdGVzdF9wYWNrYWdlX292ZXJfbW9kdWxlKHNlbGYpOgogICAgICAgICBuYW1lID0gJ190ZW1wJwogICAgICAgICBsb2FkZXIgPSBzZWxmLnJ1bl90ZXN0KG5hbWUsIHsnezB9Ll9faW5pdF9fJy5mb3JtYXQobmFtZSksIG5hbWV9KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ19faW5pdF9fJyBpbiBsb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpKQotCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19faW5pdF9fJywgbG9hZGVyLmdldF9maWxlbmFtZShuYW1lKSkKIAogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6CiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ2JsYWgnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgbm90aGluZyA9IHNlbGYuaW1wb3J0XyhtYXBwaW5nWycucm9vdCddLCAnc2Rmc2Fkc2FkZicpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90aGluZyBpcyBOb25lKQotCi0gICAgIyBbZW1wdHkgZGlyXQotICAgIGRlZiB0ZXN0X2VtcHR5X2RpcihzZWxmKToKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIsIEltcG9ydFdhcm5pbmcpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydFdhcm5pbmcpOgotICAgICAgICAgICAgICAgIHNlbGYucnVuX3Rlc3QoJ3BrZycsIHsncGtnLl9faW5pdF9fJ30sIHVubGluaz17J3BrZy5fX2luaXRfXyd9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobm90aGluZykKIAogICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZ19mb3JfZGlyKHNlbGYpOgogICAgICAgICAjIFRoZSBlbXB0eSBzdHJpbmcgZnJvbSBzeXMucGF0aCBtZWFucyB0byBzZWFyY2ggaW4gdGhlIGN3ZC4KLSAgICAgICAgZmluZGVyID0gX2Jvb3RzdHJhcC5fRmlsZUZpbmRlcignJywgX2Jvb3RzdHJhcC5fU291cmNlRmluZGVyRGV0YWlscygpKQorICAgICAgICBmaW5kZXIgPSBtYWNoaW5lcnkuRmlsZUZpbmRlcignJywgKG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLAorICAgICAgICAgICAgbWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUykpCiAgICAgICAgIHdpdGggb3BlbignbW9kLnB5JywgJ3cnKSBhcyBmaWxlOgogICAgICAgICAgICAgZmlsZS53cml0ZSgiIyB0ZXN0IGZpbGUgZm9yIGltcG9ydGxpYiIpCiAgICAgICAgIHRyeToKQEAgLTE0Myw2ICsxMzQsNTMgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIG9zLnVubGluaygnbW9kLnB5JykKIAorICAgIGRlZiB0ZXN0X2ludmFsaWRhdGVfY2FjaGVzKHNlbGYpOgorICAgICAgICAjIGludmFsaWRhdGVfY2FjaGVzKCkgc2hvdWxkIHJlc2V0IHRoZSBtdGltZS4KKyAgICAgICAgZmluZGVyID0gbWFjaGluZXJ5LkZpbGVGaW5kZXIoJycsIChtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgIG1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVMpKQorICAgICAgICBmaW5kZXIuX3BhdGhfbXRpbWUgPSA0MgorICAgICAgICBmaW5kZXIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbmRlci5fcGF0aF9tdGltZSwgLTEpCisKKyAgICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE0ODQ2CisgICAgZGVmIHRlc3RfZGlyX3JlbW92YWxfaGFuZGxpbmcoc2VsZik6CisgICAgICAgIG1vZCA9ICdtb2QnCisgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobW9kKSBhcyBtYXBwaW5nOgorICAgICAgICAgICAgZmluZGVyID0gc2VsZi5nZXRfZmluZGVyKG1hcHBpbmdbJy5yb290J10pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmaW5kZXIuZmluZF9tb2R1bGUobW9kKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmluZGVyLmZpbmRfbW9kdWxlKG1vZCkpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJywKKyAgICAgICAgICAgICdvcy5jaG1vZCgpIGRvZXMgbm90IHN1cHBvcnQgdGhlIG5lZWRlZCBhcmd1bWVudHMgdW5kZXIgV2luZG93cycpCisgICAgZGVmIHRlc3Rfbm9fcmVhZF9kaXJlY3Rvcnkoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE2NzMwCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKQorICAgICAgICBvcmlnaW5hbF9tb2RlID0gb3Muc3RhdCh0ZW1wZGlyLm5hbWUpLnN0X21vZGUKKyAgICAgICAgZGVmIGNsZWFudXAodGVtcGRpcik6CisgICAgICAgICAgICAiIiJDbGVhbnVwIGZ1bmN0aW9uIGZvciB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yeS4KKworICAgICAgICAgICAgU2luY2Ugd2UgbXVjayB3aXRoIHRoZSBwZXJtaXNzaW9ucywgd2Ugd2FudCB0byBzZXQgdGhlbSBiYWNrIHRvCisgICAgICAgICAgICB0aGVpciBvcmlnaW5hbCB2YWx1ZXMgdG8gbWFrZSBzdXJlIHRoZSBkaXJlY3RvcnkgY2FuIGJlIHByb3Blcmx5CisgICAgICAgICAgICBjbGVhbmVkIHVwLgorCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIG9zLmNobW9kKHRlbXBkaXIubmFtZSwgb3JpZ2luYWxfbW9kZSkKKyAgICAgICAgICAgICMgSWYgdGhpcyBpcyBub3QgZXhwbGljaXRseSBjYWxsZWQgdGhlbiB0aGUgX19kZWxfXyBtZXRob2QgaXMgdXNlZCwKKyAgICAgICAgICAgICMgYnV0IHNpbmNlIGFscmVhZHkgbXVja2luZyBhcm91bmQgbWlnaHQgYXMgd2VsbCBleHBsaWNpdGx5IGNsZWFuCisgICAgICAgICAgICAjIHVwLgorICAgICAgICAgICAgdGVtcGRpci5fX2V4aXRfXyhOb25lLCBOb25lLCBOb25lKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoY2xlYW51cCwgdGVtcGRpcikKKyAgICAgICAgb3MuY2htb2QodGVtcGRpci5uYW1lLCBzdGF0LlNfSVdVU1IgfCBzdGF0LlNfSVhVU1IpCisgICAgICAgIGZpbmRlciA9IHNlbGYuZ2V0X2ZpbmRlcih0ZW1wZGlyLm5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKE5vbmUsIFtdKSwgZmluZGVyLmZpbmRfbG9hZGVyKCdkb2Vzbm90ZXhpc3QnKSkKKworICAgIGRlZiB0ZXN0X2lnbm9yZV9maWxlKHNlbGYpOgorICAgICAgICAjIElmIGEgZGlyZWN0b3J5IGdvdCBjaGFuZ2VkIHRvIGEgZmlsZSBmcm9tIHVuZGVybmVhdGggdXMsIHRoZW4gZG9uJ3QKKyAgICAgICAgIyB3b3JyeSBhYm91dCBsb29raW5nIGZvciBzdWJtb2R1bGVzLgorICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgpIGFzIGZpbGVfb2JqOgorICAgICAgICAgICAgZmluZGVyID0gc2VsZi5nZXRfZmluZGVyKGZpbGVfb2JqLm5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChOb25lLCBbXSksIGZpbmRlci5maW5kX2xvYWRlcignZG9lc25vdGV4aXN0JykpCisKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTc4NzkyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5CkBAIC0wLDAgKzEsMzIgQEAKK2Zyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAorCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CitpbXBvcnQgaW1wCitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBQYXRoSG9va1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdCB0aGUgcGF0aCBob29rIGZvciBzb3VyY2UuIiIiCisKKyAgICBkZWYgcGF0aF9ob29rKHNlbGYpOgorICAgICAgICByZXR1cm4gbWFjaGluZXJ5LkZpbGVGaW5kZXIucGF0aF9ob29rKChtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgIG1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVMpKQorCisgICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKKyAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnZHVtbXknKSBhcyBtYXBwaW5nOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKShtYXBwaW5nWycucm9vdCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaW5kX21vZHVsZScpKQorCisgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nKHNlbGYpOgorICAgICAgICAjIFRoZSBlbXB0eSBzdHJpbmcgcmVwcmVzZW50cyB0aGUgY3dkLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzZWxmLnBhdGhfaG9vaygpKCcnKSwgJ2ZpbmRfbW9kdWxlJykpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKyAgICBydW5fdW5pdHRlc3QoUGF0aEhvb2tUZXN0KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CmluZGV4IDc5NGEzZGYuLjBjYTUxOTUgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CkBAIC0xLDYgKzEsNiBAQAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKIGZyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAogCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAogaW1wb3J0IGNvZGVjcwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCkBAIC0zNSw4ICszNSw4IEBACiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoc2VsZi5tb2R1bGVfbmFtZSkgYXMgbWFwcGluZzoKICAgICAgICAgICAgIHdpdGggb3BlbihtYXBwaW5nW3NlbGYubW9kdWxlX25hbWVdLCAnd2InKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoc291cmNlKQotICAgICAgICAgICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fU291cmNlRmlsZUxvYWRlcihzZWxmLm1vZHVsZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1tzZWxmLm1vZHVsZV9uYW1lXSkKKyAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuU291cmNlRmlsZUxvYWRlcihzZWxmLm1vZHVsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nW3NlbGYubW9kdWxlX25hbWVdKQogICAgICAgICAgICAgcmV0dXJuIGxvYWRlci5sb2FkX21vZHVsZShzZWxmLm1vZHVsZV9uYW1lKQogCiAgICAgZGVmIGNyZWF0ZV9zb3VyY2Uoc2VsZiwgZW5jb2RpbmcpOgpAQCAtOTcsNyArOTcsNyBAQAogICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKG1vZHVsZV9uYW1lKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgd2l0aCBvcGVuKG1hcHBpbmdbbW9kdWxlX25hbWVdLCAnd2InKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoc291cmNlKQotICAgICAgICAgICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fU291cmNlRmlsZUxvYWRlcihtb2R1bGVfbmFtZSwKKyAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuU291cmNlRmlsZUxvYWRlcihtb2R1bGVfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nW21vZHVsZV9uYW1lXSkKICAgICAgICAgICAgIHJldHVybiBsb2FkZXIubG9hZF9tb2R1bGUobW9kdWxlX25hbWUpCiAKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS91dGlsLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3V0aWwucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS91dGlsLnB5CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvdGVzdF9hYmMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQpzaW1pbGFyaXR5IGluZGV4IDc4JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvdGVzdF9hYmMucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYWJjLnB5CmluZGV4IDBlY2JlMzkuLmM2MjBjMzcgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC90ZXN0X2FiYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQpAQCAtMzAsMTAgKzMwLDE3IEBACiAgICAgICAgICAgICAgICAiezB9IGlzIG5vdCBhIHN1cGVyY2xhc3Mgb2YgezF9Ii5mb3JtYXQoc3VwZXJjbGFzcywgc2VsZi5fX3Rlc3QpKQogCiAKLWNsYXNzIEZpbmRlcihJbmhlcml0YW5jZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBNZXRhUGF0aEZpbmRlcihJbmhlcml0YW5jZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKKyAgICBzdXBlcmNsYXNzZXMgPSBbYWJjLkZpbmRlcl0KICAgICBzdWJjbGFzc2VzID0gW21hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIsIG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlciwKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LlBhdGhGaW5kZXJdCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5QYXRoRmluZGVyLCBtYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyXQorCisKK2NsYXNzIFBhdGhFbnRyeUZpbmRlcihJbmhlcml0YW5jZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBzdXBlcmNsYXNzZXMgPSBbYWJjLkZpbmRlcl0KKyAgICBzdWJjbGFzc2VzID0gW21hY2hpbmVyeS5GaWxlRmluZGVyXQogCiAKIGNsYXNzIExvYWRlcihJbmhlcml0YW5jZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC01MCw3ICs1Nyw3IEBACiAKICAgICBzdXBlcmNsYXNzZXMgPSBbYWJjLkxvYWRlcl0KICAgICBzdWJjbGFzc2VzID0gW2FiYy5QeUxvYWRlciwgbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlciwKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyXQorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIsIG1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyXQogCiAKIGNsYXNzIEV4ZWN1dGlvbkxvYWRlcihJbmhlcml0YW5jZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC01OSw5ICs2NiwxNiBAQAogICAgIHN1YmNsYXNzZXMgPSBbYWJjLlB5TG9hZGVyXQogCiAKK2NsYXNzIEZpbGVMb2FkZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgc3VwZXJjbGFzc2VzID0gW2FiYy5SZXNvdXJjZUxvYWRlciwgYWJjLkV4ZWN1dGlvbkxvYWRlcl0KKyAgICBzdWJjbGFzc2VzID0gW21hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLCBtYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXJdCisKKwogY2xhc3MgU291cmNlTG9hZGVyKEluaGVyaXRhbmNlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIHN1cGVyY2xhc3NlcyA9IFthYmMuUmVzb3VyY2VMb2FkZXIsIGFiYy5FeGVjdXRpb25Mb2FkZXJdCisgICAgc3ViY2xhc3NlcyA9IFttYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcl0KIAogCiBjbGFzcyBQeUxvYWRlcihJbmhlcml0YW5jZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxYTU4OTQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FwaS5weQpAQCAtMCwwICsxLDIwMiBAQAorZnJvbSAuIGltcG9ydCB1dGlsCitpbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CitpbXBvcnQgc3lzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2ltcG9ydCB0eXBlcworaW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgSW1wb3J0TW9kdWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdCBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZS4iIiIKKworICAgIGRlZiB0ZXN0X21vZHVsZV9pbXBvcnQoc2VsZik6CisgICAgICAgICMgVGVzdCBpbXBvcnRpbmcgYSB0b3AtbGV2ZWwgbW9kdWxlLgorICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCd0b3BfbGV2ZWwnKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgndG9wX2xldmVsJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ3RvcF9sZXZlbCcpCisKKyAgICBkZWYgdGVzdF9hYnNvbHV0ZV9wYWNrYWdlX2ltcG9ydChzZWxmKToKKyAgICAgICAgIyBUZXN0IGltcG9ydGluZyBhIG1vZHVsZSBmcm9tIGEgcGFja2FnZSB3aXRoIGFuIGFic29sdXRlIG5hbWUuCisgICAgICAgIHBrZ19uYW1lID0gJ3BrZycKKyAgICAgICAgcGtnX2xvbmdfbmFtZSA9ICd7MH0uX19pbml0X18nLmZvcm1hdChwa2dfbmFtZSkKKyAgICAgICAgbmFtZSA9ICd7MH0ubW9kJy5mb3JtYXQocGtnX25hbWUpCisgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMocGtnX2xvbmdfbmFtZSwgbmFtZSkgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUobmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbmFtZSkKKworICAgIGRlZiB0ZXN0X3NoYWxsb3dfcmVsYXRpdmVfcGFja2FnZV9pbXBvcnQoc2VsZik6CisgICAgICAgICMgVGVzdCBpbXBvcnRpbmcgYSBtb2R1bGUgZnJvbSBhIHBhY2thZ2UgdGhyb3VnaCBhIHJlbGF0aXZlIGltcG9ydC4KKyAgICAgICAgcGtnX25hbWUgPSAncGtnJworICAgICAgICBwa2dfbG9uZ19uYW1lID0gJ3swfS5fX2luaXRfXycuZm9ybWF0KHBrZ19uYW1lKQorICAgICAgICBtb2R1bGVfbmFtZSA9ICdtb2QnCisgICAgICAgIGFic29sdXRlX25hbWUgPSAnezB9LnsxfScuZm9ybWF0KHBrZ19uYW1lLCBtb2R1bGVfbmFtZSkKKyAgICAgICAgcmVsYXRpdmVfbmFtZSA9ICcuezB9Jy5mb3JtYXQobW9kdWxlX25hbWUpCisgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMocGtnX2xvbmdfbmFtZSwgYWJzb2x1dGVfbmFtZSkgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUocGtnX25hbWUpCisgICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUocmVsYXRpdmVfbmFtZSwgcGtnX25hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIGFic29sdXRlX25hbWUpCisKKyAgICBkZWYgdGVzdF9kZWVwX3JlbGF0aXZlX3BhY2thZ2VfaW1wb3J0KHNlbGYpOgorICAgICAgICBtb2R1bGVzID0gWydhLl9faW5pdF9fJywgJ2EuYi5fX2luaXRfXycsICdhLmMnXQorICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCptb2R1bGVzKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnYScpCisgICAgICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2EuYicpCisgICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJy4uYycsICdhLmInKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAnYS5jJykKKworICAgIGRlZiB0ZXN0X2Fic29sdXRlX2ltcG9ydF93aXRoX3BhY2thZ2Uoc2VsZik6CisgICAgICAgICMgVGVzdCBpbXBvcnRpbmcgYSBtb2R1bGUgZnJvbSBhIHBhY2thZ2Ugd2l0aCBhbiBhYnNvbHV0ZSBuYW1lIHdpdGgKKyAgICAgICAgIyB0aGUgJ3BhY2thZ2UnIGFyZ3VtZW50IGdpdmVuLgorICAgICAgICBwa2dfbmFtZSA9ICdwa2cnCisgICAgICAgIHBrZ19sb25nX25hbWUgPSAnezB9Ll9faW5pdF9fJy5mb3JtYXQocGtnX25hbWUpCisgICAgICAgIG5hbWUgPSAnezB9Lm1vZCcuZm9ybWF0KHBrZ19uYW1lKQorICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKHBrZ19sb25nX25hbWUsIG5hbWUpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHBrZ19uYW1lKQorICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG5hbWUsIHBrZ19uYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQorCisgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0X3dvX3BhY2thZ2Uoc2VsZik6CisgICAgICAgICMgUmVsYXRpdmUgaW1wb3J0cyBjYW5ub3QgaGFwcGVuIHdpdGhvdXQgdGhlICdwYWNrYWdlJyBhcmd1bWVudCBiZWluZworICAgICAgICAjIHNldC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJy5zdXBwb3J0JykKKworCisgICAgZGVmIHRlc3RfbG9hZGVkX29uY2Uoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzEzNTkxOiBNb2R1bGVzIHNob3VsZCBvbmx5IGJlIGxvYWRlZCBvbmNlIHdoZW4KKyAgICAgICAgIyBpbml0aWFsaXppbmcgdGhlIHBhcmVudCBwYWNrYWdlIGF0dGVtcHRzIHRvIGltcG9ydCB0aGUKKyAgICAgICAgIyBtb2R1bGUgY3VycmVudGx5IGJlaW5nIGltcG9ydGVkLgorICAgICAgICBiX2xvYWRfY291bnQgPSAwCisgICAgICAgIGRlZiBsb2FkX2EoKToKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdhLmInKQorICAgICAgICBkZWYgbG9hZF9iKCk6CisgICAgICAgICAgICBub25sb2NhbCBiX2xvYWRfY291bnQKKyAgICAgICAgICAgIGJfbG9hZF9jb3VudCArPSAxCisgICAgICAgIGNvZGUgPSB7J2EnOiBsb2FkX2EsICdhLmInOiBsb2FkX2J9CisgICAgICAgIG1vZHVsZXMgPSBbJ2EuX19pbml0X18nLCAnYS5iJ10KKyAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygqbW9kdWxlcywgbW9kdWxlX2NvZGU9Y29kZSkgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2EuYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYl9sb2FkX2NvdW50LCAxKQorCisKK2NsYXNzIEZpbmRMb2FkZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBjbGFzcyBGYWtlTWV0YUZpbmRlcjoKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBkZWYgZmluZF9tb2R1bGUobmFtZSwgcGF0aD1Ob25lKTogcmV0dXJuIG5hbWUsIHBhdGgKKworICAgIGRlZiB0ZXN0X3N5c19tb2R1bGVzKHNlbGYpOgorICAgICAgICAjIElmIGEgbW9kdWxlIHdpdGggX19sb2FkZXJfXyBpcyBpbiBzeXMubW9kdWxlcywgdGhlbiByZXR1cm4gaXQuCisgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUobmFtZSkKKyAgICAgICAgICAgIGxvYWRlciA9ICdhIGxvYWRlciEnCisgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IGxvYWRlcgorICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKKyAgICAgICAgICAgIGZvdW5kID0gaW1wb3J0bGliLmZpbmRfbG9hZGVyKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRlciwgZm91bmQpCisKKyAgICBkZWYgdGVzdF9zeXNfbW9kdWxlc19sb2FkZXJfaXNfTm9uZShzZWxmKToKKyAgICAgICAgIyBJZiBzeXMubW9kdWxlc1tuYW1lXS5fX2xvYWRlcl9fIGlzIE5vbmUsIHJhaXNlIFZhbHVlRXJyb3IuCisgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUobmFtZSkKKyAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gTm9uZQorICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgaW1wb3J0bGliLmZpbmRfbG9hZGVyKG5hbWUpCisKKyAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgorICAgICAgICAjIFJldHVybiB0aGUgbG9hZGVyIGZvdW5kIG9uIHN5cy5tZXRhX3BhdGguCisgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W3NlbGYuRmFrZU1ldGFGaW5kZXJdKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChuYW1lLCBOb25lKSwgaW1wb3J0bGliLmZpbmRfbG9hZGVyKG5hbWUpKQorCisgICAgZGVmIHRlc3Rfc3VjY2Vzc19wYXRoKHNlbGYpOgorICAgICAgICAjIFNlYXJjaGluZyBvbiBhIHBhdGggc2hvdWxkIHdvcmsuCisgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCisgICAgICAgIHBhdGggPSAncGF0aCB0byBzb21lIHBsYWNlJworICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtzZWxmLkZha2VNZXRhRmluZGVyXSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgobmFtZSwgcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIuZmluZF9sb2FkZXIobmFtZSwgcGF0aCkpCisKKyAgICBkZWYgdGVzdF9ub3RoaW5nKHNlbGYpOgorICAgICAgICAjIE5vbmUgaXMgcmV0dXJuZWQgdXBvbiBmYWlsdXJlIHRvIGZpbmQgYSBsb2FkZXIuCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGltcG9ydGxpYi5maW5kX2xvYWRlcignbmV2ZXJnb2luZ3RvZmluZHRoaXNtb2R1bGUnKSkKKworCitjbGFzcyBJbnZhbGlkYXRlQ2FjaGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9tZXRob2RfY2FsbGVkKHNlbGYpOgorICAgICAgICAjIElmIGRlZmluZWQgdGhlIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkLgorICAgICAgICBjbGFzcyBJbnZhbGlkYXRpbmdOdWxsRmluZGVyOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICppZ25vcmVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmNhbGxlZCA9IEZhbHNlCisgICAgICAgICAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgKmFyZ3MpOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5jYWxsZWQgPSBUcnVlCisKKyAgICAgICAga2V5ID0gJ2dvYmxlZGVlZ29vaycKKyAgICAgICAgbWV0YV9pbnMgPSBJbnZhbGlkYXRpbmdOdWxsRmluZGVyKCkKKyAgICAgICAgcGF0aF9pbnMgPSBJbnZhbGlkYXRpbmdOdWxsRmluZGVyKCkKKyAgICAgICAgc3lzLm1ldGFfcGF0aC5pbnNlcnQoMCwgbWV0YV9pbnMpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsYW1iZGE6IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLl9fZGVsaXRlbV9fKGtleSkpCisgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW2tleV0gPSBwYXRoX2lucworICAgICAgICBzZWxmLmFkZENsZWFudXAobGFtYmRhOiBzeXMubWV0YV9wYXRoLnJlbW92ZShtZXRhX2lucykpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtZXRhX2lucy5jYWxsZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXRoX2lucy5jYWxsZWQpCisKKyAgICBkZWYgdGVzdF9tZXRob2RfbGFja2luZyhzZWxmKToKKyAgICAgICAgIyBUaGVyZSBzaG91bGQgYmUgbm8gaXNzdWVzIGlmIHRoZSBtZXRob2QgaXMgbm90IGRlZmluZWQuCisgICAgICAgIGtleSA9ICdnb2JibGVkZWVnb29rJworICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtrZXldID0gaW1wLk51bGxJbXBvcnRlcignYWJjJykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxhbWJkYTogc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuX19kZWxpdGVtX18oa2V5KSkKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkgICMgU2hvdWxkbid0IHRyaWdnZXIgYW4gZXhjZXB0aW9uLgorCisKK2NsYXNzIEZyb3plbkltcG9ydGxpYlRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X25vX2Zyb3plbl9pbXBvcnRsaWIoc2VsZik6CisgICAgICAgICMgU2hvdWxkIGJlIGFibGUgdG8gaW1wb3J0IHcvbyBfZnJvemVuX2ltcG9ydGxpYiBiZWluZyBkZWZpbmVkLgorICAgICAgICBtb2R1bGUgPSBzdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoJ2ltcG9ydGxpYicsIGJsb2NrZWQ9WydfZnJvemVuX2ltcG9ydGxpYiddKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UobW9kdWxlLl9fbG9hZGVyX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIpKQorCisKK2NsYXNzIFN0YXJ0dXBUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9ldmVyeW9uZV9oYXNfX19sb2FkZXJfXyhzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTcwOTg6IGFsbCBtb2R1bGVzIHNob3VsZCBoYXZlIF9fbG9hZGVyX18gZGVmaW5lZC4KKyAgICAgICAgZm9yIG5hbWUsIG1vZHVsZSBpbiBzeXMubW9kdWxlcy5pdGVtcygpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpOgorICAgICAgICAgICAgICAgIGlmIG5hbWUgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcG9ydGxpYi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fKQorICAgICAgICAgICAgICAgIGVsaWYgaW1wLmlzX2Zyb3plbihuYW1lKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXBvcnRsaWIubWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fKQorCitkZWYgdGVzdF9tYWluKCk6CisgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorICAgIHJ1bl91bml0dGVzdChJbXBvcnRNb2R1bGVUZXN0cywKKyAgICAgICAgICAgICAgICAgRmluZExvYWRlclRlc3RzLAorICAgICAgICAgICAgICAgICBJbnZhbGlkYXRlQ2FjaGVUZXN0cywKKyAgICAgICAgICAgICAgICAgRnJvemVuSW1wb3J0bGliVGVzdHMsCisgICAgICAgICAgICAgICAgIFN0YXJ0dXBUZXN0cykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sb2Nrcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzczYjExCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sb2Nrcy5weQpAQCAtMCwwICsxLDEyOSBAQAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKK2ltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3ZWFrcmVmCisKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHRocmVhZGluZyA9IE5vbmUKK2Vsc2U6CisgICAgZnJvbSB0ZXN0IGltcG9ydCBsb2NrX3Rlc3RzCisKKworTG9ja1R5cGUgPSBfYm9vdHN0cmFwLl9Nb2R1bGVMb2NrCitEZWFkbG9ja0Vycm9yID0gX2Jvb3RzdHJhcC5fRGVhZGxvY2tFcnJvcgorCisKK2lmIHRocmVhZGluZyBpcyBub3QgTm9uZToKKyAgICBjbGFzcyBNb2R1bGVMb2NrQXNSTG9ja1Rlc3RzKGxvY2tfdGVzdHMuUkxvY2tUZXN0cyk6CisgICAgICAgIGxvY2t0eXBlID0gc3RhdGljbWV0aG9kKGxhbWJkYTogTG9ja1R5cGUoInNvbWVfbG9jayIpKQorCisgICAgICAgICMgX2lzX293bmVkKCkgdW5zdXBwb3J0ZWQKKyAgICAgICAgdGVzdF9faXNfb3duZWQgPSBOb25lCisgICAgICAgICMgYWNxdWlyZShibG9ja2luZz1GYWxzZSkgdW5zdXBwb3J0ZWQKKyAgICAgICAgdGVzdF90cnlfYWNxdWlyZSA9IE5vbmUKKyAgICAgICAgdGVzdF90cnlfYWNxdWlyZV9jb250ZW5kZWQgPSBOb25lCisgICAgICAgICMgYHdpdGhgIHVuc3VwcG9ydGVkCisgICAgICAgIHRlc3Rfd2l0aCA9IE5vbmUKKyAgICAgICAgIyBhY3F1aXJlKHRpbWVvdXQ9Li4uKSB1bnN1cHBvcnRlZAorICAgICAgICB0ZXN0X3RpbWVvdXQgPSBOb25lCisgICAgICAgICMgX3JlbGVhc2Vfc2F2ZSgpIHVuc3VwcG9ydGVkCisgICAgICAgIHRlc3RfcmVsZWFzZV9zYXZlX3VuYWNxdWlyZWQgPSBOb25lCisKK2Vsc2U6CisgICAgY2xhc3MgTW9kdWxlTG9ja0FzUkxvY2tUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgIHBhc3MKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICJ0aHJlYWRzIG5lZWRlZCBmb3IgdGhpcyB0ZXN0IikKK2NsYXNzIERlYWRsb2NrQXZvaWRhbmNlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCA9IHN5cy5nZXRzd2l0Y2hpbnRlcnZhbCgpCisgICAgICAgICAgICBzeXMuc2V0c3dpdGNoaW50ZXJ2YWwoMC4wMDAwMDEpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYub2xkX3N3aXRjaGludGVydmFsID0gTm9uZQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBpZiBzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbChzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCkKKworICAgIGRlZiBydW5fZGVhZGxvY2tfYXZvaWRhbmNlX3Rlc3Qoc2VsZiwgY3JlYXRlX2RlYWRsb2NrKToKKyAgICAgICAgTkxPQ0tTID0gMTAKKyAgICAgICAgbG9ja3MgPSBbTG9ja1R5cGUoc3RyKGkpKSBmb3IgaSBpbiByYW5nZShOTE9DS1MpXQorICAgICAgICBwYWlycyA9IFsobG9ja3NbaV0sIGxvY2tzWyhpKzEpJU5MT0NLU10pIGZvciBpIGluIHJhbmdlKE5MT0NLUyldCisgICAgICAgIGlmIGNyZWF0ZV9kZWFkbG9jazoKKyAgICAgICAgICAgIE5USFJFQURTID0gTkxPQ0tTCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBOVEhSRUFEUyA9IE5MT0NLUyAtIDEKKyAgICAgICAgYmFycmllciA9IHRocmVhZGluZy5CYXJyaWVyKE5USFJFQURTKQorICAgICAgICByZXN1bHRzID0gW10KKyAgICAgICAgZGVmIF9hY3F1aXJlKGxvY2spOgorICAgICAgICAgICAgIiIiVHJ5IHRvIGFjcXVpcmUgdGhlIGxvY2suIFJldHVybiBUcnVlIG9uIHN1Y2Nlc3MsIEZhbHNlIG9uIGRlYWRsb2NrLiIiIgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGxvY2suYWNxdWlyZSgpCisgICAgICAgICAgICBleGNlcHQgRGVhZGxvY2tFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIGEsIGIgPSBwYWlycy5wb3AoKQorICAgICAgICAgICAgcmEgPSBfYWNxdWlyZShhKQorICAgICAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgICAgIHJiID0gX2FjcXVpcmUoYikKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKChyYSwgcmIpKQorICAgICAgICAgICAgaWYgcmI6CisgICAgICAgICAgICAgICAgYi5yZWxlYXNlKCkKKyAgICAgICAgICAgIGlmIHJhOgorICAgICAgICAgICAgICAgIGEucmVsZWFzZSgpCisgICAgICAgIGxvY2tfdGVzdHMuQnVuY2goZiwgTlRIUkVBRFMpLndhaXRfZm9yX2ZpbmlzaGVkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIE5USFJFQURTKQorICAgICAgICByZXR1cm4gcmVzdWx0cworCisgICAgZGVmIHRlc3RfZGVhZGxvY2soc2VsZik6CisgICAgICAgIHJlc3VsdHMgPSBzZWxmLnJ1bl9kZWFkbG9ja19hdm9pZGFuY2VfdGVzdChUcnVlKQorICAgICAgICAjIEF0IGxlYXN0IG9uZSBvZiB0aGUgdGhyZWFkcyBkZXRlY3RlZCBhIHBvdGVudGlhbCBkZWFkbG9jayBvbiBpdHMKKyAgICAgICAgIyBzZWNvbmQgYWNxdWlyZSgpIGNhbGwuICBJdCBtYXkgYmUgc2V2ZXJhbCBvZiB0aGVtLCBiZWNhdXNlIHRoZQorICAgICAgICAjIGRlYWRsb2NrIGF2b2lkYW5jZSBtZWNoYW5pc20gaXMgY29uc2VydmF0aXZlLgorICAgICAgICBuYl9kZWFkbG9ja3MgPSByZXN1bHRzLmNvdW50KChUcnVlLCBGYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKG5iX2RlYWRsb2NrcywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KChUcnVlLCBUcnVlKSksIGxlbihyZXN1bHRzKSAtIG5iX2RlYWRsb2NrcykKKworICAgIGRlZiB0ZXN0X25vX2RlYWRsb2NrKHNlbGYpOgorICAgICAgICByZXN1bHRzID0gc2VsZi5ydW5fZGVhZGxvY2tfYXZvaWRhbmNlX3Rlc3QoRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cy5jb3VudCgoVHJ1ZSwgRmFsc2UpKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KChUcnVlLCBUcnVlKSksIGxlbihyZXN1bHRzKSkKKworCitjbGFzcyBMaWZldGltZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2xvY2tfbGlmZXRpbWUoc2VsZik6CisgICAgICAgIG5hbWUgPSAieHl6enkiCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4obmFtZSwgX2Jvb3RzdHJhcC5fbW9kdWxlX2xvY2tzKQorICAgICAgICBsb2NrID0gX2Jvb3RzdHJhcC5fZ2V0X21vZHVsZV9sb2NrKG5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgX2Jvb3RzdHJhcC5fbW9kdWxlX2xvY2tzKQorICAgICAgICB3ciA9IHdlYWtyZWYucmVmKGxvY2spCisgICAgICAgIGRlbCBsb2NrCisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4obmFtZSwgX2Jvb3RzdHJhcC5fbW9kdWxlX2xvY2tzKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh3cigpKQorCisgICAgZGVmIHRlc3RfYWxsX2xvY2tzKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihfYm9vdHN0cmFwLl9tb2R1bGVfbG9ja3MpLCBfYm9vdHN0cmFwLl9tb2R1bGVfbG9ja3MpCisKKworQHN1cHBvcnQucmVhcF90aHJlYWRzCitkZWYgdGVzdF9tYWluKCk6CisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTW9kdWxlTG9ja0FzUkxvY2tUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWFkbG9ja0F2b2lkYW5jZVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgIExpZmV0aW1lVGVzdHMpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF91dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmYzg5NzcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkKQEAgLTAsMCArMSwyMDggQEAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCB1dGlsCitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgdGVzdF91dGlsCitpbXBvcnQgaW1wCitpbXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKK2ltcG9ydCB1bml0dGVzdAorCisKK2NsYXNzIE1vZHVsZUZvckxvYWRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3RzIGZvciBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZm9yX2xvYWRlci4iIiIKKworICAgIGRlZiByZXR1cm5fbW9kdWxlKHNlbGYsIG5hbWUpOgorICAgICAgICBmeG4gPSB1dGlsLm1vZHVsZV9mb3JfbG9hZGVyKGxhbWJkYSBzZWxmLCBtb2R1bGU6IG1vZHVsZSkKKyAgICAgICAgcmV0dXJuIGZ4bihzZWxmLCBuYW1lKQorCisgICAgZGVmIHJhaXNlX2V4Y2VwdGlvbihzZWxmLCBuYW1lKToKKyAgICAgICAgZGVmIHRvX3dyYXAoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCisgICAgICAgIGZ4biA9IHV0aWwubW9kdWxlX2Zvcl9sb2FkZXIodG9fd3JhcCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnhuKHNlbGYsIG5hbWUpCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X25ld19tb2R1bGUoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdoZW4gbm8gbW9kdWxlIGV4aXN0cyBpbiBzeXMubW9kdWxlcyBhIG5ldyBtb2R1bGUgaXMKKyAgICAgICAgIyBjcmVhdGVkLgorICAgICAgICBtb2R1bGVfbmFtZSA9ICdhLmIuYycKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShtb2R1bGVfbmFtZSk6CisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLnJldHVybl9tb2R1bGUobW9kdWxlX25hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZV9uYW1lLCBzeXMubW9kdWxlcykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG1vZHVsZV9uYW1lKQorCisgICAgZGVmIHRlc3RfcmVsb2FkKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBhIG1vZHVsZSBpcyByZXVzZWQgaWYgYWxyZWFkeSBpbiBzeXMubW9kdWxlcy4KKyAgICAgICAgbmFtZSA9ICdhLmIuYycKKyAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ2EuYi5jJykKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCisgICAgICAgICAgICByZXR1cm5lZF9tb2R1bGUgPSBzZWxmLnJldHVybl9tb2R1bGUobmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dXJuZWRfbW9kdWxlLCBzeXMubW9kdWxlc1tuYW1lXSkKKworICAgIGRlZiB0ZXN0X25ld19tb2R1bGVfZmFpbHVyZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgYSBtb2R1bGUgaXMgcmVtb3ZlZCBmcm9tIHN5cy5tb2R1bGVzIGlmIGFkZGVkIGJ1dCBhbgorICAgICAgICAjIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisgICAgICAgIG5hbWUgPSAnYS5iLmMnCisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICBzZWxmLnJhaXNlX2V4Y2VwdGlvbihuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihuYW1lLCBzeXMubW9kdWxlcykKKworICAgIGRlZiB0ZXN0X3JlbG9hZF9mYWlsdXJlKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBhIGZhaWx1cmUgb24gcmVsb2FkIGxlYXZlcyB0aGUgbW9kdWxlIGluLXBsYWNlLgorICAgICAgICBuYW1lID0gJ2EuYi5jJworICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZShuYW1lKQorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKKyAgICAgICAgICAgIHNlbGYucmFpc2VfZXhjZXB0aW9uKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZSwgc3lzLm1vZHVsZXNbbmFtZV0pCisKKyAgICBkZWYgdGVzdF9kZWNvcmF0b3JfYXR0cnMoc2VsZik6CisgICAgICAgIGRlZiBmeG4oc2VsZiwgbW9kdWxlKTogcGFzcworICAgICAgICB3cmFwcGVkID0gdXRpbC5tb2R1bGVfZm9yX2xvYWRlcihmeG4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlZC5fX25hbWVfXywgZnhuLl9fbmFtZV9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZWQuX19xdWFsbmFtZV9fLCBmeG4uX19xdWFsbmFtZV9fKQorCisgICAgZGVmIHRlc3RfZmFsc2VfbW9kdWxlKHNlbGYpOgorICAgICAgICAjIElmIGZvciBzb21lIG9kZCByZWFzb24gYSBtb2R1bGUgaXMgY29uc2lkZXJlZCBmYWxzZSwgc3RpbGwgcmV0dXJuIGl0CisgICAgICAgICMgZnJvbSBzeXMubW9kdWxlcy4KKyAgICAgICAgY2xhc3MgRmFsc2VNb2R1bGUodHlwZXMuTW9kdWxlVHlwZSk6CisgICAgICAgICAgICBkZWYgX19ib29sX18oc2VsZik6IHJldHVybiBGYWxzZQorCisgICAgICAgIG5hbWUgPSAnbW9kJworICAgICAgICBtb2R1bGUgPSBGYWxzZU1vZHVsZShuYW1lKQorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2R1bGUpCisgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQorICAgICAgICAgICAgZ2l2ZW4gPSBzZWxmLnJldHVybl9tb2R1bGUobmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZ2l2ZW4sIG1vZHVsZSkKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfc2V0KHNlbGYpOgorICAgICAgICAjIF9fbmFtZV9fLCBfX2xvYWRlcl9fLCBhbmQgX19wYWNrYWdlX18gc2hvdWxkIGJlIHNldCAod2hlbgorICAgICAgICAjIGlzX3BhY2thZ2UoKSBpcyBkZWZpbmVkOyB1bmRlZmluZWQgaW1wbGljaXRseSB0ZXN0ZWQgZWxzZXdoZXJlKS4KKyAgICAgICAgY2xhc3MgRmFrZUxvYWRlcjoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpc19wYWNrYWdlKToKKyAgICAgICAgICAgICAgICBzZWxmLl9wa2cgPSBpc19wYWNrYWdlCisgICAgICAgICAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBuYW1lKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcGtnCisgICAgICAgICAgICBAdXRpbC5tb2R1bGVfZm9yX2xvYWRlcgorICAgICAgICAgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1vZHVsZQorCisgICAgICAgIG5hbWUgPSAncGtnLm1vZCcKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIGxvYWRlciA9IEZha2VMb2FkZXIoRmFsc2UpCisgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19sb2FkZXJfXywgbG9hZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19wYWNrYWdlX18sICdwa2cnKQorCisgICAgICAgIG5hbWUgPSAncGtnLnN1YicKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIGxvYWRlciA9IEZha2VMb2FkZXIoVHJ1ZSkKKyAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZShuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX2xvYWRlcl9fLCBsb2FkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgbmFtZSkKKworCitjbGFzcyBTZXRQYWNrYWdlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgZm9yIGltcG9ydGxpYi51dGlsLnNldF9wYWNrYWdlLiIiIgorCisgICAgZGVmIHZlcmlmeShzZWxmLCBtb2R1bGUsIGV4cGVjdCk6CisgICAgICAgICIiIlZlcmlmeSB0aGUgbW9kdWxlIGhhcyB0aGUgZXhwZWN0ZWQgdmFsdWUgZm9yIF9fcGFja2FnZV9fIGFmdGVyCisgICAgICAgIHBhc3NpbmcgdGhyb3VnaCBzZXRfcGFja2FnZS4iIiIKKyAgICAgICAgZnhuID0gbGFtYmRhOiBtb2R1bGUKKyAgICAgICAgd3JhcHBlZCA9IHV0aWwuc2V0X3BhY2thZ2UoZnhuKQorICAgICAgICB3cmFwcGVkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3QsIG1vZHVsZS5fX3BhY2thZ2VfXykKKworICAgIGRlZiB0ZXN0X3RvcF9sZXZlbChzZWxmKToKKyAgICAgICAgIyBfX3BhY2thZ2VfXyBzaG91bGQgYmUgc2V0IHRvIHRoZSBlbXB0eSBzdHJpbmcgaWYgYSB0b3AtbGV2ZWwgbW9kdWxlLgorICAgICAgICAjIEltcGxpY2l0bHkgdGVzdHMgd2hlbiBwYWNrYWdlIGlzIHNldCB0byBOb25lLgorICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgnbW9kdWxlJykKKyAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gTm9uZQorICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUsICcnKQorCisgICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHNldHRpbmcgX19wYWNrYWdlX18gZm9yIGEgcGFja2FnZS4KKyAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ3BrZycpCisgICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IFsnPHBhdGg+J10KKyAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gTm9uZQorICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUsICdwa2cnKQorCisgICAgZGVmIHRlc3Rfc3VibW9kdWxlKHNlbGYpOgorICAgICAgICAjIFRlc3QgX19wYWNrYWdlX18gZm9yIGEgbW9kdWxlIGluIGEgcGFja2FnZS4KKyAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ3BrZy5tb2QnKQorICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBOb25lCisgICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSwgJ3BrZycpCisKKyAgICBkZWYgdGVzdF9zZXR0aW5nX2lmX21pc3Npbmcoc2VsZik6CisgICAgICAgICMgX19wYWNrYWdlX18gc2hvdWxkIGJlIHNldCBpZiBpdCBpcyBtaXNzaW5nLgorICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgnbW9kJykKKyAgICAgICAgaWYgaGFzYXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycpOgorICAgICAgICAgICAgZGVsYXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycpCisgICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSwgJycpCisKKyAgICBkZWYgdGVzdF9sZWF2aW5nX2Fsb25lKHNlbGYpOgorICAgICAgICAjIElmIF9fcGFja2FnZV9fIGlzIHNldCBhbmQgbm90IE5vbmUgdGhlbiBsZWF2ZSBpdCBhbG9uZS4KKyAgICAgICAgZm9yIHZhbHVlIGluIChUcnVlLCBGYWxzZSk6CisgICAgICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgnbW9kJykKKyAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IHZhbHVlCisgICAgICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUsIHZhbHVlKQorCisgICAgZGVmIHRlc3RfZGVjb3JhdG9yX2F0dHJzKHNlbGYpOgorICAgICAgICBkZWYgZnhuKG1vZHVsZSk6IHBhc3MKKyAgICAgICAgd3JhcHBlZCA9IHV0aWwuc2V0X3BhY2thZ2UoZnhuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZWQuX19uYW1lX18sIGZ4bi5fX25hbWVfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVkLl9fcXVhbG5hbWVfXywgZnhuLl9fcXVhbG5hbWVfXykKKworCitjbGFzcyBSZXNvbHZlTmFtZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3RzIGltcG9ydGxpYi51dGlsLnJlc29sdmVfbmFtZSgpLiIiIgorCisgICAgZGVmIHRlc3RfYWJzb2x1dGUoc2VsZik6CisgICAgICAgICMgYmFjb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYmFjb24nLCB1dGlsLnJlc29sdmVfbmFtZSgnYmFjb24nLCBOb25lKSkKKworICAgIGRlZiB0ZXN0X2Fib3NsdXRlX3dpdGhpbl9wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIGJhY29uIGluIHNwYW0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYmFjb24nLCB1dGlsLnJlc29sdmVfbmFtZSgnYmFjb24nLCAnc3BhbScpKQorCisgICAgZGVmIHRlc3Rfbm9fcGFja2FnZShzZWxmKToKKyAgICAgICAgIyAuYmFjb24gaW4gJycKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHV0aWwucmVzb2x2ZV9uYW1lKCcuYmFjb24nLCAnJykKKworICAgIGRlZiB0ZXN0X2luX3BhY2thZ2Uoc2VsZik6CisgICAgICAgICMgLmJhY29uIGluIHNwYW0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc3BhbS5lZ2dzLmJhY29uJywKKyAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLnJlc29sdmVfbmFtZSgnLmJhY29uJywgJ3NwYW0uZWdncycpKQorCisgICAgZGVmIHRlc3Rfb3RoZXJfcGFja2FnZShzZWxmKToKKyAgICAgICAgIyAuLmJhY29uIGluIHNwYW0uYmFjb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc3BhbS5iYWNvbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5yZXNvbHZlX25hbWUoJy4uYmFjb24nLCAnc3BhbS5lZ2dzJykpCisKKyAgICBkZWYgdGVzdF9lc2NhcGUoc2VsZik6CisgICAgICAgICMgLi5iYWNvbiBpbiBzcGFtCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB1dGlsLnJlc29sdmVfbmFtZSgnLi5iYWNvbicsICdzcGFtJykKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCisgICAgICAgICAgICBNb2R1bGVGb3JMb2FkZXJUZXN0cywKKyAgICAgICAgICAgIFNldFBhY2thZ2VUZXN0cywKKyAgICAgICAgICAgIFJlc29sdmVOYW1lVGVzdHMKKyAgICAgICAgKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdXRpbC5weQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvdXRpbC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdXRpbC5weQppbmRleCA5M2I3Y2QyLi5lZjMyZjdkIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvdXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi91dGlsLnB5CkBAIC0zNSw3ICszNSw3IEBACiAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CiAgICAgICAgIGlmIG5hbWUgaW4gKCdzeXMnLCAnbWFyc2hhbCcsICdpbXAnKToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgImNhbm5vdCB1bmNhY2hlIHswfSBhcyBpdCB3aWxsIGJyZWFrIF9pbXBvcnRsaWIiLmZvcm1hdChuYW1lKSkKKyAgICAgICAgICAgICAgICAiY2Fubm90IHVuY2FjaGUgezB9Ii5mb3JtYXQobmFtZSkpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tuYW1lXQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC0xMjQsNyArMTI0LDExIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzeXMubW9kdWxlc1tmdWxsbmFtZV0gPSBzZWxmLm1vZHVsZXNbZnVsbG5hbWVdCiAgICAgICAgICAgICBpZiBmdWxsbmFtZSBpbiBzZWxmLm1vZHVsZV9jb2RlOgotICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlX2NvZGVbZnVsbG5hbWVdKCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlX2NvZGVbZnVsbG5hbWVdKCkKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbZnVsbG5hbWVdCisgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5tb2R1bGVzW2Z1bGxuYW1lXQogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW5kZXgucHkgYi9MaWIvdGVzdC90ZXN0X2luZGV4LnB5CmluZGV4IDdhOTRhZjEuLjY2ZWVkYWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW5kZXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbmRleC5weQpAQCAtNTYsNyArNTYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNsaWNlKHNlbGYubikuaW5kaWNlcywgMCkKIAogCi1jbGFzcyBTZXFUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBTZXFUZXN0Q2FzZToKICAgICAjIFRoaXMgdGVzdCBjYXNlIGlzbid0IHJ1biBkaXJlY3RseS4gSXQganVzdCBkZWZpbmVzIGNvbW1vbiB0ZXN0cwogICAgICMgdG8gdGhlIGRpZmZlcmVudCBzZXF1ZW5jZSB0eXBlcyBiZWxvdwogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTEyNiw3ICsxMjYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNsaWNlb2JqLCBzZWxmLm4sIHNlbGYpCiAKIAotY2xhc3MgTGlzdFRlc3RDYXNlKFNlcVRlc3RDYXNlKToKK2NsYXNzIExpc3RUZXN0Q2FzZShTZXFUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHNlcSA9IFswLDEwLDIwLDMwLDQwLDUwXQogCiAgICAgZGVmIHRlc3Rfc2V0ZGVsaXRlbShzZWxmKToKQEAgLTE4MiwxOSArMTgyLDE5IEBACiAgICAgICAgIHJldHVybiBzZWxmLl9saXN0W2luZGV4XQogCiAKLWNsYXNzIFR1cGxlVGVzdENhc2UoU2VxVGVzdENhc2UpOgorY2xhc3MgVHVwbGVUZXN0Q2FzZShTZXFUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHNlcSA9ICgwLDEwLDIwLDMwLDQwLDUwKQogCi1jbGFzcyBCeXRlQXJyYXlUZXN0Q2FzZShTZXFUZXN0Q2FzZSk6CitjbGFzcyBCeXRlQXJyYXlUZXN0Q2FzZShTZXFUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHNlcSA9IGJ5dGVhcnJheShiInRoaXMgaXMgYSB0ZXN0IikKIAotY2xhc3MgQnl0ZXNUZXN0Q2FzZShTZXFUZXN0Q2FzZSk6CitjbGFzcyBCeXRlc1Rlc3RDYXNlKFNlcVRlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgc2VxID0gYiJ0aGlzIGlzIGEgdGVzdCIKIAotY2xhc3MgU3RyaW5nVGVzdENhc2UoU2VxVGVzdENhc2UpOgorY2xhc3MgU3RyaW5nVGVzdENhc2UoU2VxVGVzdENhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBzZXEgPSAidGhpcyBpcyBhIHRlc3QiCiAKLWNsYXNzIE5ld1NlcVRlc3RDYXNlKFNlcVRlc3RDYXNlKToKK2NsYXNzIE5ld1NlcVRlc3RDYXNlKFNlcVRlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgc2VxID0gTmV3U2VxKCgwLDEwLDIwLDMwLDQwLDUwKSkKIAogCkBAIC0yMzcsMTggKzIzNyw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGxhbWJkYTogImEiICogc2VsZi5uZWcpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAotICAgICAgICBCYXNlVGVzdENhc2UsCi0gICAgICAgIExpc3RUZXN0Q2FzZSwKLSAgICAgICAgVHVwbGVUZXN0Q2FzZSwKLSAgICAgICAgQnl0ZXNUZXN0Q2FzZSwKLSAgICAgICAgQnl0ZUFycmF5VGVzdENhc2UsCi0gICAgICAgIFN0cmluZ1Rlc3RDYXNlLAotICAgICAgICBOZXdTZXFUZXN0Q2FzZSwKLSAgICAgICAgUmFuZ2VUZXN0Q2FzZSwKLSAgICAgICAgT3ZlcmZsb3dUZXN0Q2FzZSwKLSAgICApCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weQppbmRleCA0YjdlZTRlLi42ZTNmMDRlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5CkBAIC00MSwxMSArNDEsNiBAQAogCiBpbXBvcnQgYnVpbHRpbnMKIAotdHJ5OgotICAgIDEvMAotZXhjZXB0OgotICAgIHRiID0gc3lzLmV4Y19pbmZvKClbMl0KLQogZ2l0ID0gbW9kLlN0dXBpZEdpdCgpCiAKIGNsYXNzIElzVGVzdEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNzksMjMgKzc0LDMxIEBACiAKIAogICAgIGRlZiB0ZXN0X2V4Y2x1ZGluZ19wcmVkaWNhdGVzKHNlbGYpOgorICAgICAgICBnbG9iYWwgdGIKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2J1aWx0aW4sICdzeXMuZXhpdCcpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNidWlsdGluLCAnW10uYXBwZW5kJykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2NvZGUsICdtb2Quc3BhbS5fX2NvZGVfXycpCi0gICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNmcmFtZSwgJ3RiLnRiX2ZyYW1lJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgMS8wCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHRiID0gc3lzLmV4Y19pbmZvKClbMl0KKyAgICAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNmcmFtZSwgJ3RiLnRiX2ZyYW1lJykKKyAgICAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXN0cmFjZWJhY2ssICd0YicpCisgICAgICAgICAgICBpZiBoYXNhdHRyKHR5cGVzLCAnR2V0U2V0RGVzY3JpcHRvclR5cGUnKToKKyAgICAgICAgICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZ2V0c2V0ZGVzY3JpcHRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZSh0Yi50Yl9mcmFtZSkuZl9sb2NhbHMnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3QuaXNnZXRzZXRkZXNjcmlwdG9yKHR5cGUodGIudGJfZnJhbWUpLmZfbG9jYWxzKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICMgQ2xlYXIgdHJhY2ViYWNrIGFuZCBhbGwgdGhlIGZyYW1lcyBhbmQgbG9jYWwgdmFyaWFibGVzIGhhbmdpbmcgdG8gaXQuCisgICAgICAgICAgICB0YiA9IE5vbmUKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2Z1bmN0aW9uLCAnbW9kLnNwYW0nKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZnVuY3Rpb24sICdtb2QuU3R1cGlkR2l0LmFidXNlJykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc21ldGhvZCwgJ2dpdC5hcmd1ZScpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNtb2R1bGUsICdtb2QnKQotICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzdHJhY2ViYWNrLCAndGInKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZGF0YWRlc2NyaXB0b3IsICdjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdC5kZWZhdWx0X2ZhY3RvcnknKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZ2VuZXJhdG9yLCAnKHggZm9yIHggaW4gcmFuZ2UoMikpJykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uLCAnZ2VuZXJhdG9yX2Z1bmN0aW9uX2V4YW1wbGUnKQotICAgICAgICBpZiBoYXNhdHRyKHR5cGVzLCAnR2V0U2V0RGVzY3JpcHRvclR5cGUnKToKLSAgICAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNnZXRzZXRkZXNjcmlwdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUodGIudGJfZnJhbWUpLmZfbG9jYWxzJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5pc2dldHNldGRlc2NyaXB0b3IodHlwZSh0Yi50Yl9mcmFtZSkuZl9sb2NhbHMpKQogICAgICAgICBpZiBoYXNhdHRyKHR5cGVzLCAnTWVtYmVyRGVzY3JpcHRvclR5cGUnKToKICAgICAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNtZW1iZXJkZXNjcmlwdG9yLCAnZGF0ZXRpbWUudGltZWRlbHRhLmRheXMnKQogICAgICAgICBlbHNlOgpAQCAtMjgyLDcgKzI4NSwxMCBAQAogICAgICAgICBjbyA9IGNvbXBpbGUoIk5vbmUiLCBmbiwgImV4ZWMiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0c291cmNlZmlsZShjbyksIE5vbmUpCiAgICAgICAgIGxpbmVjYWNoZS5jYWNoZVtjby5jb19maWxlbmFtZV0gPSAoMSwgTm9uZSwgIk5vbmUiLCBjby5jb19maWxlbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtY2FzZShpbnNwZWN0LmdldHNvdXJjZWZpbGUoY28pKSwgZm4pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWNhc2UoaW5zcGVjdC5nZXRzb3VyY2VmaWxlKGNvKSksIGZuKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZGVsIGxpbmVjYWNoZS5jYWNoZVtjby5jb19maWxlbmFtZV0KIAogICAgIGRlZiB0ZXN0X2dldGZpbGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRmaWxlKG1vZC5TdHVwaWRHaXQpLCBtb2QuX19maWxlX18pCkBAIC0zMDQsNyArMzEwLDcgQEAKICAgICAgICAgZ2V0bGluZXMgPSBsaW5lY2FjaGUuZ2V0bGluZXMKICAgICAgICAgZGVmIG1vbmtleShmaWxlbmFtZSwgbW9kdWxlX2dsb2JhbHM9Tm9uZSk6CiAgICAgICAgICAgICBpZiBmaWxlbmFtZSA9PSBmbjoKLSAgICAgICAgICAgICAgICByZXR1cm4gc291cmNlLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc291cmNlLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGdldGxpbmVzKGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscykKICAgICAgICAgbGluZWNhY2hlLmdldGxpbmVzID0gbW9ua2V5CkBAIC00MDQsOCArNDEwLDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGluc3BlY3QuZmluZHNvdXJjZSwgY28pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGluc3BlY3QuZ2V0c291cmNlLCBjbykKICAgICAgICAgbGluZWNhY2hlLmNhY2hlW2NvLmNvX2ZpbGVuYW1lXSA9ICgxLCBOb25lLCBsaW5lcywgY28uY29fZmlsZW5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5maW5kc291cmNlKGNvKSwgKGxpbmVzLDApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0c291cmNlKGNvKSwgbGluZXNbMF0pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5maW5kc291cmNlKGNvKSwgKGxpbmVzLDApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldHNvdXJjZShjbyksIGxpbmVzWzBdKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZGVsIGxpbmVjYWNoZS5jYWNoZVtjby5jb19maWxlbmFtZV0KIAogY2xhc3MgVGVzdE5vRU9MKEdldFNvdXJjZUJhc2UpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgpAQCAtNjYyLDYgKzY3MSwxMjkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbigoJ2YnLCBiLmYpLCBpbnNwZWN0LmdldG1lbWJlcnMoYiwgaW5zcGVjdC5pc21ldGhvZCkpCiAKIAorX2dsb2JhbF9yZWYgPSBvYmplY3QoKQorY2xhc3MgVGVzdEdldENsb3N1cmVWYXJzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X25hbWVfcmVzb2x1dGlvbihzZWxmKToKKyAgICAgICAgIyBCYXNpYyB0ZXN0IG9mIHRoZSA0IGRpZmZlcmVudCByZXNvbHV0aW9uIG1lY2hhbmlzbXMKKyAgICAgICAgZGVmIGYobm9ubG9jYWxfcmVmKToKKyAgICAgICAgICAgIGRlZiBnKGxvY2FsX3JlZik6CisgICAgICAgICAgICAgICAgcHJpbnQobG9jYWxfcmVmLCBub25sb2NhbF9yZWYsIF9nbG9iYWxfcmVmLCB1bmJvdW5kX3JlZikKKyAgICAgICAgICAgIHJldHVybiBnCisgICAgICAgIF9hcmcgPSBvYmplY3QoKQorICAgICAgICBub25sb2NhbF92YXJzID0geyJub25sb2NhbF9yZWYiOiBfYXJnfQorICAgICAgICBnbG9iYWxfdmFycyA9IHsiX2dsb2JhbF9yZWYiOiBfZ2xvYmFsX3JlZn0KKyAgICAgICAgYnVpbHRpbl92YXJzID0geyJwcmludCI6IHByaW50fQorICAgICAgICB1bmJvdW5kX25hbWVzID0geyJ1bmJvdW5kX3JlZiJ9CisgICAgICAgIGV4cGVjdGVkID0gaW5zcGVjdC5DbG9zdXJlVmFycyhub25sb2NhbF92YXJzLCBnbG9iYWxfdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5fdmFycywgdW5ib3VuZF9uYW1lcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNsb3N1cmV2YXJzKGYoX2FyZykpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2dlbmVyYXRvcl9jbG9zdXJlKHNlbGYpOgorICAgICAgICBkZWYgZihub25sb2NhbF9yZWYpOgorICAgICAgICAgICAgZGVmIGcobG9jYWxfcmVmKToKKyAgICAgICAgICAgICAgICBwcmludChsb2NhbF9yZWYsIG5vbmxvY2FsX3JlZiwgX2dsb2JhbF9yZWYsIHVuYm91bmRfcmVmKQorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICByZXR1cm4gZworICAgICAgICBfYXJnID0gb2JqZWN0KCkKKyAgICAgICAgbm9ubG9jYWxfdmFycyA9IHsibm9ubG9jYWxfcmVmIjogX2FyZ30KKyAgICAgICAgZ2xvYmFsX3ZhcnMgPSB7Il9nbG9iYWxfcmVmIjogX2dsb2JhbF9yZWZ9CisgICAgICAgIGJ1aWx0aW5fdmFycyA9IHsicHJpbnQiOiBwcmludH0KKyAgICAgICAgdW5ib3VuZF9uYW1lcyA9IHsidW5ib3VuZF9yZWYifQorICAgICAgICBleHBlY3RlZCA9IGluc3BlY3QuQ2xvc3VyZVZhcnMobm9ubG9jYWxfdmFycywgZ2xvYmFsX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdGluX3ZhcnMsIHVuYm91bmRfbmFtZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjbG9zdXJldmFycyhmKF9hcmcpKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9tZXRob2RfY2xvc3VyZShzZWxmKToKKyAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgIGRlZiBmKHNlbGYsIG5vbmxvY2FsX3JlZik6CisgICAgICAgICAgICAgICAgZGVmIGcobG9jYWxfcmVmKToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQobG9jYWxfcmVmLCBub25sb2NhbF9yZWYsIF9nbG9iYWxfcmVmLCB1bmJvdW5kX3JlZikKKyAgICAgICAgICAgICAgICByZXR1cm4gZworICAgICAgICBfYXJnID0gb2JqZWN0KCkKKyAgICAgICAgbm9ubG9jYWxfdmFycyA9IHsibm9ubG9jYWxfcmVmIjogX2FyZ30KKyAgICAgICAgZ2xvYmFsX3ZhcnMgPSB7Il9nbG9iYWxfcmVmIjogX2dsb2JhbF9yZWZ9CisgICAgICAgIGJ1aWx0aW5fdmFycyA9IHsicHJpbnQiOiBwcmludH0KKyAgICAgICAgdW5ib3VuZF9uYW1lcyA9IHsidW5ib3VuZF9yZWYifQorICAgICAgICBleHBlY3RlZCA9IGluc3BlY3QuQ2xvc3VyZVZhcnMobm9ubG9jYWxfdmFycywgZ2xvYmFsX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdGluX3ZhcnMsIHVuYm91bmRfbmFtZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjbG9zdXJldmFycyhDKCkuZihfYXJnKSksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3Rfbm9ubG9jYWxfdmFycyhzZWxmKToKKyAgICAgICAgIyBNb3JlIGNvbXBsZXggdGVzdHMgb2Ygbm9ubG9jYWwgcmVzb2x1dGlvbgorICAgICAgICBkZWYgX25vbmxvY2FsX3ZhcnMoZik6CisgICAgICAgICAgICByZXR1cm4gaW5zcGVjdC5nZXRjbG9zdXJldmFycyhmKS5ub25sb2NhbHMKKworICAgICAgICBkZWYgbWFrZV9hZGRlcih4KToKKyAgICAgICAgICAgIGRlZiBhZGQoeSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHggKyB5CisgICAgICAgICAgICByZXR1cm4gYWRkCisKKyAgICAgICAgZGVmIGN1cnJ5KGZ1bmMsIGFyZzEpOgorICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSBhcmcyOiBmdW5jKGFyZzEsIGFyZzIpCisKKyAgICAgICAgZGVmIGxlc3NfdGhhbihhLCBiKToKKyAgICAgICAgICAgIHJldHVybiBhIDwgYgorCisgICAgICAgICMgVGhlIGluZmFtb3VzIFkgY29tYmluYXRvci4KKyAgICAgICAgZGVmIFkobGUpOgorICAgICAgICAgICAgZGVmIGcoZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxlKGxhbWJkYSB4OiBmKGYpKHgpKQorICAgICAgICAgICAgWS5nX3JlZiA9IGcKKyAgICAgICAgICAgIHJldHVybiBnKGcpCisKKyAgICAgICAgZGVmIGNoZWNrX3lfY29tYmluYXRvcihmdW5jKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX25vbmxvY2FsX3ZhcnMoZnVuYyksIHsnZic6IFkuZ19yZWZ9KQorCisgICAgICAgIGluYyA9IG1ha2VfYWRkZXIoMSkKKyAgICAgICAgYWRkX3R3byA9IG1ha2VfYWRkZXIoMikKKyAgICAgICAgZ3JlYXRlcl90aGFuX2ZpdmUgPSBjdXJyeShsZXNzX3RoYW4sIDUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfbm9ubG9jYWxfdmFycyhpbmMpLCB7J3gnOiAxfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfbm9ubG9jYWxfdmFycyhhZGRfdHdvKSwgeyd4JzogMn0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX25vbmxvY2FsX3ZhcnMoZ3JlYXRlcl90aGFuX2ZpdmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnYXJnMSc6IDUsICdmdW5jJzogbGVzc190aGFufSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfbm9ubG9jYWxfdmFycygobGFtYmRhIHg6IGxhbWJkYSB5OiB4ICsgeSkoMykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsneCc6IDN9KQorICAgICAgICBZKGNoZWNrX3lfY29tYmluYXRvcikKKworICAgIGRlZiB0ZXN0X2dldGNsb3N1cmV2YXJzX2VtcHR5KHNlbGYpOgorICAgICAgICBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgX2VtcHR5ID0gaW5zcGVjdC5DbG9zdXJlVmFycyh7fSwge30sIHt9LCBzZXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNsb3N1cmV2YXJzKGxhbWJkYTogVHJ1ZSksIF9lbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNsb3N1cmV2YXJzKGZvbyksIF9lbXB0eSkKKworICAgIGRlZiB0ZXN0X2dldGNsb3N1cmV2YXJzX2Vycm9yKHNlbGYpOgorICAgICAgICBjbGFzcyBUOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zcGVjdC5nZXRjbG9zdXJldmFycywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnNwZWN0LmdldGNsb3N1cmV2YXJzLCBsaXN0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMsIHt9KQorCisgICAgZGVmIF9wcml2YXRlX2dsb2JhbHMoc2VsZik6CisgICAgICAgIGNvZGUgPSAiIiJkZWYgZigpOiBwcmludChwYXRoKSIiIgorICAgICAgICBucyA9IHt9CisgICAgICAgIGV4ZWMoY29kZSwgbnMpCisgICAgICAgIHJldHVybiBuc1siZiJdLCBucworCisgICAgZGVmIHRlc3RfYnVpbHRpbnNfZmFsbGJhY2soc2VsZik6CisgICAgICAgIGYsIG5zID0gc2VsZi5fcHJpdmF0ZV9nbG9iYWxzKCkKKyAgICAgICAgbnMucG9wKCJfX2J1aWx0aW5zX18iLCBOb25lKQorICAgICAgICBleHBlY3RlZCA9IGluc3BlY3QuQ2xvc3VyZVZhcnMoe30sIHt9LCB7InByaW50IjpwcmludH0sIHsicGF0aCJ9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMoZiksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfYnVpbHRpbnNfYXNfZGljdChzZWxmKToKKyAgICAgICAgZiwgbnMgPSBzZWxmLl9wcml2YXRlX2dsb2JhbHMoKQorICAgICAgICBuc1siX19idWlsdGluc19fIl0gPSB7InBhdGgiOjF9CisgICAgICAgIGV4cGVjdGVkID0gaW5zcGVjdC5DbG9zdXJlVmFycyh7fSwge30sIHsicGF0aCI6MX0sIHsicHJpbnQifSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNsb3N1cmV2YXJzKGYpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2J1aWx0aW5zX2FzX21vZHVsZShzZWxmKToKKyAgICAgICAgZiwgbnMgPSBzZWxmLl9wcml2YXRlX2dsb2JhbHMoKQorICAgICAgICBuc1siX19idWlsdGluc19fIl0gPSBvcworICAgICAgICBleHBlY3RlZCA9IGluc3BlY3QuQ2xvc3VyZVZhcnMoe30sIHt9LCB7InBhdGgiOm9zLnBhdGh9LCB7InByaW50In0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjbG9zdXJldmFycyhmKSwgZXhwZWN0ZWQpCisKKwogY2xhc3MgVGVzdEdldGNhbGxhcmdzRnVuY3Rpb25zKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBhc3NlcnRFcXVhbENhbGxBcmdzKHNlbGYsIGZ1bmMsIGNhbGxfcGFyYW1zX3N0cmluZywgbG9jcz1Ob25lKToKQEAgLTExNjksNiArMTMwMSw5ODIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgcmVwcihzdGF0ZSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG5hbWUsIHN0cihzdGF0ZSkpCiAKKyAgICBkZWYgdGVzdF9nZXRnZW5lcmF0b3Jsb2NhbHMoc2VsZik6CisgICAgICAgIGRlZiBlYWNoKGxzdCwgYT1Ob25lKToKKyAgICAgICAgICAgIGI9KDEsIDIsIDMpCisgICAgICAgICAgICBmb3IgdiBpbiBsc3Q6CisgICAgICAgICAgICAgICAgaWYgdiA9PSAzOgorICAgICAgICAgICAgICAgICAgICBjID0gMTIKKyAgICAgICAgICAgICAgICB5aWVsZCB2CisKKyAgICAgICAgbnVtYmVycyA9IGVhY2goWzEsIDIsIDNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzKG51bWJlcnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnYSc6IE5vbmUsICdsc3QnOiBbMSwgMiwgM119KQorICAgICAgICBuZXh0KG51bWJlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMobnVtYmVycyksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogTm9uZSwgJ2xzdCc6IFsxLCAyLCAzXSwgJ3YnOiAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnYic6ICgxLCAyLCAzKX0pCisgICAgICAgIG5leHQobnVtYmVycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscyhudW1iZXJzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB7J2EnOiBOb25lLCAnbHN0JzogWzEsIDIsIDNdLCAndic6IDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdiJzogKDEsIDIsIDMpfSkKKyAgICAgICAgbmV4dChudW1iZXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzKG51bWJlcnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnYSc6IE5vbmUsICdsc3QnOiBbMSwgMiwgM10sICd2JzogMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2InOiAoMSwgMiwgMyksICdjJzogMTJ9KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXh0KG51bWJlcnMpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzKG51bWJlcnMpLCB7fSkKKworICAgIGRlZiB0ZXN0X2dldGdlbmVyYXRvcmxvY2Fsc19lbXB0eShzZWxmKToKKyAgICAgICAgZGVmIHlpZWxkX29uZSgpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICBvbmUgPSB5aWVsZF9vbmUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzKG9uZSksIHt9KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXh0KG9uZSkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMob25lKSwge30pCisKKyAgICBkZWYgdGVzdF9nZXRnZW5lcmF0b3Jsb2NhbHNfZXJyb3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMsIGxhbWJkYSB4OiBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzLCBzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMsICgyLDMpKQorCisKK2NsYXNzIFRlc3RTaWduYXR1cmVPYmplY3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgc2lnbmF0dXJlKGZ1bmMpOgorICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmdW5jKQorICAgICAgICByZXR1cm4gKHR1cGxlKChwYXJhbS5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAoLi4uIGlmIHBhcmFtLmRlZmF1bHQgaXMgcGFyYW0uZW1wdHkgZWxzZSBwYXJhbS5kZWZhdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgKC4uLiBpZiBwYXJhbS5hbm5vdGF0aW9uIGlzIHBhcmFtLmVtcHR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgcGFyYW0uYW5ub3RhdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgIHN0cihwYXJhbS5raW5kKS5sb3dlcigpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBhcmFtIGluIHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpKSwKKyAgICAgICAgICAgICAgICAoLi4uIGlmIHNpZy5yZXR1cm5fYW5ub3RhdGlvbiBpcyBzaWcuZW1wdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzaWcucmV0dXJuX2Fubm90YXRpb24pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29iamVjdChzZWxmKToKKyAgICAgICAgUyA9IGluc3BlY3QuU2lnbmF0dXJlCisgICAgICAgIFAgPSBpbnNwZWN0LlBhcmFtZXRlcgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFMoKSksICcoKScpCisKKyAgICAgICAgZGVmIHRlc3QocG8sIHBrLCAqYXJncywga28sICoqa3dhcmdzKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUodGVzdCkKKyAgICAgICAgcG8gPSBzaWcucGFyYW1ldGVyc1sncG8nXS5yZXBsYWNlKGtpbmQ9UC5QT1NJVElPTkFMX09OTFkpCisgICAgICAgIHBrID0gc2lnLnBhcmFtZXRlcnNbJ3BrJ10KKyAgICAgICAgYXJncyA9IHNpZy5wYXJhbWV0ZXJzWydhcmdzJ10KKyAgICAgICAga28gPSBzaWcucGFyYW1ldGVyc1sna28nXQorICAgICAgICBrd2FyZ3MgPSBzaWcucGFyYW1ldGVyc1sna3dhcmdzJ10KKworICAgICAgICBTKChwbywgcGssIGFyZ3MsIGtvLCBrd2FyZ3MpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnd3JvbmcgcGFyYW1ldGVyIG9yZGVyJyk6CisgICAgICAgICAgICBTKChwaywgcG8sIGFyZ3MsIGtvLCBrd2FyZ3MpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnd3JvbmcgcGFyYW1ldGVyIG9yZGVyJyk6CisgICAgICAgICAgICBTKChwbywgYXJncywgcGssIGtvLCBrd2FyZ3MpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnd3JvbmcgcGFyYW1ldGVyIG9yZGVyJyk6CisgICAgICAgICAgICBTKChhcmdzLCBwbywgcGssIGtvLCBrd2FyZ3MpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnd3JvbmcgcGFyYW1ldGVyIG9yZGVyJyk6CisgICAgICAgICAgICBTKChwbywgcGssIGFyZ3MsIGt3YXJncywga28pKQorCisgICAgICAgIGt3YXJnczIgPSBrd2FyZ3MucmVwbGFjZShuYW1lPSdhcmdzJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdkdXBsaWNhdGUgcGFyYW1ldGVyIG5hbWUnKToKKyAgICAgICAgICAgIFMoKHBvLCBwaywgYXJncywga3dhcmdzMiwga28pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2ltbXV0YWJpbGl0eShzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoYSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBzaWcuZm9vID0gJ2JhcicKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzaWcucGFyYW1ldGVyc1snYSddID0gTm9uZQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX25vYXJnKHNlbGYpOgorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHRlc3QpLCAoKCksIC4uLikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fd2FyZ3Moc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KGEsIGI6J2ZvbycpIC0+IDEyMzoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZSh0ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAuLi4sICdmb28nLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAxMjMpKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX3drd29ubHkoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KCosIGE6ZmxvYXQsIGI6c3RyKSAtPiBpbnQ6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUodGVzdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIGZsb2F0LCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAuLi4sIHN0ciwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCkpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fY29tcGxleF9hcmdzKHNlbGYpOgorICAgICAgICBkZWYgdGVzdChhLCBiOidmb28nPTEwLCAqYXJnczonYmFyJywgc3BhbTonYmF6JywgaGFtPTEyMywgKiprd2FyZ3M6aW50KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZSh0ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAxMCwgJ2ZvbycsICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYXJncycsIC4uLiwgJ2JhcicsICJ2YXJfcG9zaXRpb25hbCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdzcGFtJywgLi4uLCAnYmF6JywgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdoYW0nLCAxMjMsIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdrd2FyZ3MnLCAuLi4sIGludCwgInZhcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX2J1aWx0aW5fZnVuY3Rpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnbm90IHN1cHBvcnRlZCBieSBzaWduYXR1cmUnKToKKyAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKHR5cGUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnbm90IHN1cHBvcnRlZCBieSBzaWduYXR1cmUnKToKKyAgICAgICAgICAgICMgc3VwcG9ydCBmb3IgJ3dyYXBwZXJfZGVzY3JpcHRvcicKKyAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKHR5cGUuX19jYWxsX18pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnbm90IHN1cHBvcnRlZCBieSBzaWduYXR1cmUnKToKKyAgICAgICAgICAgICMgc3VwcG9ydCBmb3IgJ21ldGhvZC13cmFwcGVyJworICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUobWluLl9fY2FsbF9fKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm8gc2lnbmF0dXJlIGZvdW5kIGZvciBidWlsdGluIGZ1bmN0aW9uJyk6CisgICAgICAgICAgICAjIHN1cHBvcnQgZm9yICdtZXRob2Qtd3JhcHBlcicKKyAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKG1pbikKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9ub25fZnVuY3Rpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpcyBub3QgYSBjYWxsYWJsZSBvYmplY3QnKToKKyAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKDQyKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpcyBub3QgYSBQeXRob24gZnVuY3Rpb24nKToKKyAgICAgICAgICAgIGluc3BlY3QuU2lnbmF0dXJlLmZyb21fZnVuY3Rpb24oNDIpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fbWV0aG9kKHNlbGYpOgorICAgICAgICBjbGFzcyBUZXN0OgorICAgICAgICAgICAgZGVmIGZvbyhzZWxmLCBhcmcxLCBhcmcyPTEpIC0+IGludDoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbWV0aCA9IFRlc3QoKS5mb28KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKG1ldGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhcmcxJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYXJnMicsIDEsIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9jbGFzc21ldGhvZChzZWxmKToKKyAgICAgICAgY2xhc3MgVGVzdDoKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIGZvbyhjbHMsIGFyZzEsICosIGFyZzI9MSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1ldGggPSBUZXN0KCkuZm9vCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUobWV0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2FyZzEnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhcmcyJywgMSwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIG1ldGggPSBUZXN0LmZvbworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKG1ldGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhcmcxJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYXJnMicsIDEsIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9zdGF0aWNtZXRob2Qoc2VsZik6CisgICAgICAgIGNsYXNzIFRlc3Q6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKGNscywgKiwgYXJnKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbWV0aCA9IFRlc3QoKS5mb28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShtZXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnY2xzJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYXJnJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgbWV0aCA9IFRlc3QuZm9vCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUobWV0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2NscycsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2FyZycsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX3BhcnRpYWwoc2VsZik6CisgICAgICAgIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCisKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCkpLCAoKCksIC4uLikpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJoYXMgaW5jb3JyZWN0IGFyZ3VtZW50cyIpOgorICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCAxKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImhhcyBpbmNvcnJlY3QgYXJndW1lbnRzIik6CisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIGE9MSkpCisKKyAgICAgICAgZGVmIHRlc3QoYSwgYiwgKiwgYywgZCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZCcsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCAxKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2InLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZCcsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCAxLCBjPTIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2MnLCAyLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZCcsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCBiPTEsIGM9MikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIDEsIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjJywgMiwgLi4uLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2QnLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgMCwgYj0xLCBjPTIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYicsIDEsIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjJywgMiwgLi4uLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2QnLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgZGVmIHRlc3QoYSwgKmFyZ3MsIGIsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgMSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhcmdzJywgLi4uLCAuLi4sICJ2YXJfcG9zaXRpb25hbCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgna3dhcmdzJywgLi4uLCAuLi4sICJ2YXJfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgMSwgMiwgMykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhcmdzJywgLi4uLCAuLi4sICJ2YXJfcG9zaXRpb25hbCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgna3dhcmdzJywgLi4uLCAuLi4sICJ2YXJfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCAxLCAyLCAzLCB0ZXN0PVRydWUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYXJncycsIC4uLiwgLi4uLCAidmFyX3Bvc2l0aW9uYWwiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2t3YXJncycsIC4uLiwgLi4uLCAidmFyX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIDEsIDIsIDMsIHRlc3Q9MSwgYj0wKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9wb3NpdGlvbmFsIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAwLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgna3dhcmdzJywgLi4uLCAuLi4sICJ2YXJfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgYj0wKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhcmdzJywgLi4uLCAuLi4sICJ2YXJfcG9zaXRpb25hbCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgMCwgLi4uLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2t3YXJncycsIC4uLiwgLi4uLCAidmFyX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIGI9MCwgdGVzdD0xKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhcmdzJywgLi4uLCAuLi4sICJ2YXJfcG9zaXRpb25hbCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgMCwgLi4uLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2t3YXJncycsIC4uLiwgLi4uLCAidmFyX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgZGVmIHRlc3QoYSwgYiwgYzppbnQpIC0+IDQyOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNpZyA9IHRlc3QuX19zaWduYXR1cmVfXyA9IGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHBhcnRpYWwodGVzdCwgMSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2MnLCAuLi4sIGludCwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgNDIpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbChwYXJ0aWFsKHRlc3QsIDEpLCAyKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2MnLCAuLi4sIGludCwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIDQyKSkKKworICAgICAgICBwc2lnID0gaW5zcGVjdC5zaWduYXR1cmUocGFydGlhbChwYXJ0aWFsKHRlc3QsIDEpLCAyKSkKKworICAgICAgICBkZWYgZm9vKGEpOgorICAgICAgICAgICAgcmV0dXJuIGEKKyAgICAgICAgX2ZvbyA9IHBhcnRpYWwocGFydGlhbChmb28sIGE9MTApLCBhPTIwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKF9mb28pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgMjAsIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisgICAgICAgICMgY2hlY2sgdGhhdCB3ZSBkb24ndCBoYXZlIGFueSBzaWRlLWVmZmVjdHMgaW4gc2lnbmF0dXJlKCksCisgICAgICAgICMgYW5kIHRoZSBwYXJ0aWFsIG9iamVjdCBpcyBzdGlsbCBmdW5jdGlvbmluZworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9mb28oKSwgMjApCisKKyAgICAgICAgZGVmIGZvbyhhLCBiLCBjKToKKyAgICAgICAgICAgIHJldHVybiBhLCBiLCBjCisgICAgICAgIF9mb28gPSBwYXJ0aWFsKHBhcnRpYWwoZm9vLCAxLCBiPTIwKSwgYj0zMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShfZm9vKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYicsIDMwLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYycsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9mb28oYz0xMCksICgxLCAzMCwgMTApKQorICAgICAgICBfZm9vID0gcGFydGlhbChfZm9vLCAyKSAjIG5vdyAnYicgaGFzIHR3byB2YWx1ZXMgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJoYXMgaW5jb3JyZWN0IGFyZ3VtZW50cyIpOgorICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUoX2ZvbykKKworICAgICAgICBkZWYgZm9vKGEsIGIsIGMsICosIGQpOgorICAgICAgICAgICAgcmV0dXJuIGEsIGIsIGMsIGQKKyAgICAgICAgX2ZvbyA9IHBhcnRpYWwocGFydGlhbChmb28sIGQ9MjAsIGM9MjApLCBiPTEwLCBkPTMwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKF9mb28pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIDEwLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYycsIDIwLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZCcsIDMwLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisgICAgICAgIGJhID0gaW5zcGVjdC5zaWduYXR1cmUoX2ZvbykuYmluZChhPTIwMCwgYj0xMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZm9vKCpiYS5hcmdzLCAqKmJhLmt3YXJncyksICgyMDAsIDExLCAyMCwgMzApKQorCisgICAgICAgIGRlZiBmb28oYT0xLCBiPTIsIGM9Myk6CisgICAgICAgICAgICByZXR1cm4gYSwgYiwgYworICAgICAgICBfZm9vID0gcGFydGlhbChmb28sIGE9MTAsIGM9MTMpCisgICAgICAgIGJhID0gaW5zcGVjdC5zaWduYXR1cmUoX2ZvbykuYmluZCgxMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZm9vKCpiYS5hcmdzLCAqKmJhLmt3YXJncyksICgxMSwgMiwgMTMpKQorICAgICAgICBiYSA9IGluc3BlY3Quc2lnbmF0dXJlKF9mb28pLmJpbmQoMTEsIDEyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9mb28oKmJhLmFyZ3MsICoqYmEua3dhcmdzKSwgKDExLCAxMiwgMTMpKQorICAgICAgICBiYSA9IGluc3BlY3Quc2lnbmF0dXJlKF9mb28pLmJpbmQoMTEsIGI9MTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2ZvbygqYmEuYXJncywgKipiYS5rd2FyZ3MpLCAoMTEsIDEyLCAxMykpCisgICAgICAgIGJhID0gaW5zcGVjdC5zaWduYXR1cmUoX2ZvbykuYmluZChiPTEyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9mb28oKmJhLmFyZ3MsICoqYmEua3dhcmdzKSwgKDEwLCAxMiwgMTMpKQorICAgICAgICBfZm9vID0gcGFydGlhbChfZm9vLCBiPTEwKQorICAgICAgICBiYSA9IGluc3BlY3Quc2lnbmF0dXJlKF9mb28pLmJpbmQoMTIsIDE0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9mb28oKmJhLmFyZ3MsICoqYmEua3dhcmdzKSwgKDEyLCAxNCwgMTMpKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX2RlY29yYXRlZChzZWxmKToKKyAgICAgICAgaW1wb3J0IGZ1bmN0b29scworCisgICAgICAgIGRlZiBkZWNvcmF0b3IoZnVuYyk6CisgICAgICAgICAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCisgICAgICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2FyZ3MpIC0+IGludDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuYygqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICByZXR1cm4gd3JhcHBlcgorCisgICAgICAgIGNsYXNzIEZvbzoKKyAgICAgICAgICAgIEBkZWNvcmF0b3IKKyAgICAgICAgICAgIGRlZiBiYXIoc2VsZiwgYSwgYik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoRm9vLmJhciksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ3NlbGYnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoRm9vKCkuYmFyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICAjIFRlc3QgdGhhdCB3ZSBoYW5kbGUgbWV0aG9kIHdyYXBwZXJzIGNvcnJlY3RseQorICAgICAgICBkZWYgZGVjb3JhdG9yKGZ1bmMpOgorICAgICAgICAgICAgQGZ1bmN0b29scy53cmFwcyhmdW5jKQorICAgICAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dhcmdzKSAtPiBpbnQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMoNDIsICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZ1bmMpCisgICAgICAgICAgICBuZXdfcGFyYW1zID0gdHVwbGUoc2lnLnBhcmFtZXRlcnMudmFsdWVzKCkpWzE6XQorICAgICAgICAgICAgd3JhcHBlci5fX3NpZ25hdHVyZV9fID0gc2lnLnJlcGxhY2UocGFyYW1ldGVycz1uZXdfcGFyYW1zKQorICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXIKKworICAgICAgICBjbGFzcyBGb286CisgICAgICAgICAgICBAZGVjb3JhdG9yCisgICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZiwgYSwgYik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoRm9vLl9fY2FsbF9fKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEZvbygpLl9fY2FsbF9fKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9jbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShDKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBjbGFzcyBDTSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhjbHMsIGEpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9Q00pOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIGNsYXNzIENNKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIGRjdCwgKiwgZm9vPTEpOgorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIGRjdCkKKyAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9Q00pOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoQ00pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCduYW1lJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYmFzZXMnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkY3QnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdmb28nLCAxLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgY2xhc3MgQ01NKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIGRjdCwgKiwgZm9vPTEpOgorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIGRjdCkKKyAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhjbHMsIG5tLCBicywgZHQpOgorICAgICAgICAgICAgICAgIHJldHVybiB0eXBlKG5tLCBicywgZHQpCisgICAgICAgIGNsYXNzIENNKHR5cGUsIG1ldGFjbGFzcz1DTU0pOgorICAgICAgICAgICAgZGVmIF9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIGRjdCwgKiwgYmFyPTIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIGRjdCkKKyAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9Q00pOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKENNTSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ25hbWUnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiYXNlcycsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2RjdCcsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2ZvbycsIDEsIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKENNKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnbm0nLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdicycsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2R0JywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShDKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBjbGFzcyBDTSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhjbHMsIG5hbWUsIGJhc2VzLCBkY3QsICosIGJhcj0yKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX2luaXRfXyhuYW1lLCBiYXNlcywgZGN0KQorICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1DTSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoQ00pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCduYW1lJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYmFzZXMnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkY3QnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiYXInLCAyLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fY2FsbGFibGVfb2JqZWN0cyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vOgorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEZvbygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBjbGFzcyBTcGFtOgorICAgICAgICAgICAgcGFzcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAiaXMgbm90IGEgY2FsbGFibGUgb2JqZWN0Iik6CisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZShTcGFtKCkpCisKKyAgICAgICAgY2xhc3MgQmFyKFNwYW0sIEZvbyk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShCYXIoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgY2xhc3MgVG9GYWlsOgorICAgICAgICAgICAgX19jYWxsX18gPSB0eXBlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAibm90IHN1cHBvcnRlZCBieSBzaWduYXR1cmUiKToKKyAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKFRvRmFpbCgpKQorCisKKyAgICAgICAgY2xhc3MgV3JhcHBlZDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgV3JhcHBlZC5fX3dyYXBwZWRfXyA9IGxhbWJkYSBhOiBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoV3JhcHBlZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fbGFtYmRhcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZSgobGFtYmRhIGE9MTA6IGEpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIDEwLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2VxdWFsaXR5KHNlbGYpOgorICAgICAgICBkZWYgZm9vKGEsICosIGI6aW50KSAtPiBmbG9hdDogcGFzcworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIDQyKQorCisgICAgICAgIGRlZiBiYXIoYSwgKiwgYjppbnQpIC0+IGZsb2F0OiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKworICAgICAgICBkZWYgYmFyKGEsICosIGI6aW50KSAtPiBpbnQ6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBiYXIoYSwgKiwgYjppbnQpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKworICAgICAgICBkZWYgYmFyKGEsICosIGI6aW50PTQyKSAtPiBmbG9hdDogcGFzcworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICAgICAgZGVmIGJhcihhLCAqLCBjKSAtPiBmbG9hdDogcGFzcworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICAgICAgZGVmIGJhcihhLCBiOmludCkgLT4gZmxvYXQ6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorICAgICAgICBkZWYgc3BhbShiOmludCwgYSkgLT4gZmxvYXQ6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShzcGFtKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKworICAgICAgICBkZWYgZm9vKCosIGEsIGIsIGMpOiBwYXNzCisgICAgICAgIGRlZiBiYXIoKiwgYywgYiwgYSk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBmb28oKiwgYT0xLCBiLCBjKTogcGFzcworICAgICAgICBkZWYgYmFyKCosIGMsIGIsIGE9MSk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBmb28ocG9zLCAqLCBhPTEsIGIsIGMpOiBwYXNzCisgICAgICAgIGRlZiBiYXIocG9zLCAqLCBjLCBiLCBhPTEpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKworICAgICAgICBkZWYgZm9vKHBvcywgKiwgYSwgYiwgYyk6IHBhc3MKKyAgICAgICAgZGVmIGJhcihwb3MsICosIGMsIGIsIGE9MSk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBmb28ocG9zLCAqYXJncywgYT00MiwgYiwgYywgKiprd2FyZ3M6aW50KTogcGFzcworICAgICAgICBkZWYgYmFyKHBvcywgKmFyZ3MsIGMsIGIsIGE9NDIsICoqa3dhcmdzOmludCk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3VuaGFzaGFibGUoc2VsZik6CisgICAgICAgIGRlZiBmb28oYSk6IHBhc3MKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndW5oYXNoYWJsZSB0eXBlJyk6CisgICAgICAgICAgICBoYXNoKHNpZykKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9zdHIoc2VsZik6CisgICAgICAgIGRlZiBmb28oYTppbnQ9MSwgKiwgYiwgYz1Ob25lLCAqKmt3YXJncykgLT4gNDI6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcoYTppbnQ9MSwgKiwgYiwgYz1Ob25lLCAqKmt3YXJncykgLT4gNDInKQorCisgICAgICAgIGRlZiBmb28oYTppbnQ9MSwgKmFyZ3MsIGIsIGM9Tm9uZSwgKiprd2FyZ3MpIC0+IDQyOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihpbnNwZWN0LnNpZ25hdHVyZShmb28pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnKGE6aW50PTEsICphcmdzLCBiLCBjPU5vbmUsICoqa3dhcmdzKSAtPiA0MicpCisKKyAgICAgICAgZGVmIGZvbygpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihpbnNwZWN0LnNpZ25hdHVyZShmb28pKSwgJygpJykKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9zdHJfcG9zaXRpb25hbF9vbmx5KHNlbGYpOgorICAgICAgICBQID0gaW5zcGVjdC5QYXJhbWV0ZXIKKworICAgICAgICBkZWYgdGVzdChhX3BvLCAqLCBiLCAqKmt3YXJncyk6CisgICAgICAgICAgICByZXR1cm4gYV9wbywga3dhcmdzCisKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUodGVzdCkKKyAgICAgICAgbmV3X3BhcmFtcyA9IGxpc3Qoc2lnLnBhcmFtZXRlcnMudmFsdWVzKCkpCisgICAgICAgIG5ld19wYXJhbXNbMF0gPSBuZXdfcGFyYW1zWzBdLnJlcGxhY2Uoa2luZD1QLlBPU0lUSU9OQUxfT05MWSkKKyAgICAgICAgdGVzdC5fX3NpZ25hdHVyZV9fID0gc2lnLnJlcGxhY2UocGFyYW1ldGVycz1uZXdfcGFyYW1zKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnKDxhX3BvPiwgKiwgYiwgKiprd2FyZ3MpJykKKworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KQorICAgICAgICBuZXdfcGFyYW1zID0gbGlzdChzaWcucGFyYW1ldGVycy52YWx1ZXMoKSkKKyAgICAgICAgbmV3X3BhcmFtc1swXSA9IG5ld19wYXJhbXNbMF0ucmVwbGFjZShuYW1lPU5vbmUpCisgICAgICAgIHRlc3QuX19zaWduYXR1cmVfXyA9IHNpZy5yZXBsYWNlKHBhcmFtZXRlcnM9bmV3X3BhcmFtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaW5zcGVjdC5zaWduYXR1cmUodGVzdCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcoPDA+LCAqLCBiLCAqKmt3YXJncyknKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3JlcGxhY2VfYW5ubyhzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoKSAtPiA0MjoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KQorICAgICAgICBzaWcgPSBzaWcucmVwbGFjZShyZXR1cm5fYW5ub3RhdGlvbj1Ob25lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNpZy5yZXR1cm5fYW5ub3RhdGlvbiwgTm9uZSkKKyAgICAgICAgc2lnID0gc2lnLnJlcGxhY2UocmV0dXJuX2Fubm90YXRpb249c2lnLmVtcHR5KQorICAgICAgICBzZWxmLmFzc2VydElzKHNpZy5yZXR1cm5fYW5ub3RhdGlvbiwgc2lnLmVtcHR5KQorICAgICAgICBzaWcgPSBzaWcucmVwbGFjZShyZXR1cm5fYW5ub3RhdGlvbj00MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWcucmV0dXJuX2Fubm90YXRpb24sIDQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZywgaW5zcGVjdC5zaWduYXR1cmUodGVzdCkpCisKKworY2xhc3MgVGVzdFBhcmFtZXRlck9iamVjdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9raW5kcyhzZWxmKToKKyAgICAgICAgUCA9IGluc3BlY3QuUGFyYW1ldGVyCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShQLlBPU0lUSU9OQUxfT05MWSA8IFAuUE9TSVRJT05BTF9PUl9LRVlXT1JEIDwgXAorICAgICAgICAgICAgICAgICAgICAgICAgUC5WQVJfUE9TSVRJT05BTCA8IFAuS0VZV09SRF9PTkxZIDwgUC5WQVJfS0VZV09SRCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQLlBPU0lUSU9OQUxfT05MWSksICdQT1NJVElPTkFMX09OTFknKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1BPU0lUSU9OQUxfT05MWScgaW4gcmVwcihQLlBPU0lUSU9OQUxfT05MWSkpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX29iamVjdChzZWxmKToKKyAgICAgICAgcCA9IGluc3BlY3QuUGFyYW1ldGVyKCdmb28nLCBkZWZhdWx0PTEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1pbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5uYW1lLCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmRlZmF1bHQsIDEwKQorICAgICAgICBzZWxmLmFzc2VydElzKHAuYW5ub3RhdGlvbiwgcC5lbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmtpbmQsIGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ2ludmFsaWQgdmFsdWUnKToKKyAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKCdmb28nLCBkZWZhdWx0PTEwLCBraW5kPScxMjMnKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnbm90IGEgdmFsaWQgcGFyYW1ldGVyIG5hbWUnKToKKyAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKCcxJywga2luZD1pbnNwZWN0LlBhcmFtZXRlci5WQVJfS0VZV09SRCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9uLXBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXInKToKKyAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKE5vbmUsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuVkFSX0tFWVdPUkQpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdjYW5ub3QgaGF2ZSBkZWZhdWx0IHZhbHVlcycpOgorICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoJ2EnLCBkZWZhdWx0PTQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1pbnNwZWN0LlBhcmFtZXRlci5WQVJfS0VZV09SRCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ2Nhbm5vdCBoYXZlIGRlZmF1bHQgdmFsdWVzJyk6CisgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcignYScsIGRlZmF1bHQ9NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9QT1NJVElPTkFMKQorCisgICAgICAgIHAgPSBpbnNwZWN0LlBhcmFtZXRlcignYScsIGRlZmF1bHQ9NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT1JfS0VZV09SRCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdjYW5ub3QgaGF2ZSBkZWZhdWx0IHZhbHVlcycpOgorICAgICAgICAgICAgcC5yZXBsYWNlKGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuVkFSX1BPU0lUSU9OQUwpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIocCkuc3RhcnRzd2l0aCgnPFBhcmFtZXRlcicpKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9lcXVhbGl0eShzZWxmKToKKyAgICAgICAgUCA9IGluc3BlY3QuUGFyYW1ldGVyCisgICAgICAgIHAgPSBQKCdmb28nLCBkZWZhdWx0PTQyLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLktFWVdPUkRfT05MWSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAsIHApCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocCwgNDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLCBQKCdmb28nLCBkZWZhdWx0PTQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1pbnNwZWN0LlBhcmFtZXRlci5LRVlXT1JEX09OTFkpKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl91bmhhc2hhYmxlKHNlbGYpOgorICAgICAgICBwID0gaW5zcGVjdC5QYXJhbWV0ZXIoJ2ZvbycsIGRlZmF1bHQ9NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLktFWVdPUkRfT05MWSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndW5oYXNoYWJsZSB0eXBlJyk6CisgICAgICAgICAgICBoYXNoKHApCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX3JlcGxhY2Uoc2VsZik6CisgICAgICAgIHAgPSBpbnNwZWN0LlBhcmFtZXRlcignZm9vJywgZGVmYXVsdD00MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuS0VZV09SRF9PTkxZKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QocCwgcC5yZXBsYWNlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCwgcC5yZXBsYWNlKCkpCisKKyAgICAgICAgcDIgPSBwLnJlcGxhY2UoYW5ub3RhdGlvbj0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAyLmFubm90YXRpb24sIDEpCisgICAgICAgIHAyID0gcDIucmVwbGFjZShhbm5vdGF0aW9uPXAyLmVtcHR5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAsIHAyKQorCisgICAgICAgIHAyID0gcDIucmVwbGFjZShuYW1lPSdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAyLm5hbWUsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHAyLCBwKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnbm90IGEgdmFsaWQgcGFyYW1ldGVyIG5hbWUnKToKKyAgICAgICAgICAgIHAyID0gcDIucmVwbGFjZShuYW1lPXAyLmVtcHR5KQorCisgICAgICAgIHAyID0gcDIucmVwbGFjZShuYW1lPSdmb28nLCBkZWZhdWx0PU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocDIuZGVmYXVsdCwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChwMiwgcCkKKworICAgICAgICBwMiA9IHAyLnJlcGxhY2UobmFtZT0nZm9vJywgZGVmYXVsdD1wMi5lbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhwMi5kZWZhdWx0LCBwMi5lbXB0eSkKKworCisgICAgICAgIHAyID0gcDIucmVwbGFjZShkZWZhdWx0PTQyLCBraW5kPXAyLlBPU0lUSU9OQUxfT1JfS0VZV09SRCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMi5raW5kLCBwMi5QT1NJVElPTkFMX09SX0tFWVdPUkQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocDIsIHApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdpbnZhbGlkIHZhbHVlIGZvcicpOgorICAgICAgICAgICAgcDIgPSBwMi5yZXBsYWNlKGtpbmQ9cDIuZW1wdHkpCisKKyAgICAgICAgcDIgPSBwMi5yZXBsYWNlKGtpbmQ9cDIuS0VZV09SRF9PTkxZKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAyLCBwKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9wb3NpdGlvbmFsX29ubHkoc2VsZik6CisgICAgICAgIHAgPSBpbnNwZWN0LlBhcmFtZXRlcihOb25lLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocCksICc8PicpCisKKyAgICAgICAgcCA9IHAucmVwbGFjZShuYW1lPScxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocCksICc8MT4nKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9pbW11dGFiaWxpdHkoc2VsZik6CisgICAgICAgIHAgPSBpbnNwZWN0LlBhcmFtZXRlcihOb25lLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHAuZm9vID0gJ2JhcicKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHAua2luZCA9IDEyMworCisKK2NsYXNzIFRlc3RTaWduYXR1cmVCaW5kKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGNhbGwoZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZnVuYykKKyAgICAgICAgYmEgPSBzaWcuYmluZCgqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHJldHVybiBmdW5jKCpiYS5hcmdzLCAqKmJhLmt3YXJncykKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX2VtcHR5KHNlbGYpOgorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgcmV0dXJuIDQyCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCksIDQyKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxLCBzcGFtPTEwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndG9vIG1hbnkga2V5d29yZCBhcmd1bWVudHMnKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCBzcGFtPTEpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF92YXIoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICByZXR1cm4gYXJncywga3dhcmdzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCksICgoKSwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxKSwgKCgxLCksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiksICgoMSwgMiksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgZm9vPSdiYXInKSwgKCgpLCB7J2Zvbyc6ICdiYXInfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIGZvbz0nYmFyJyksICgoMSwpLCB7J2Zvbyc6ICdiYXInfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGFyZ3M9MTApLCAoKCksIHsnYXJncyc6IDEwfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIDIsIGZvbz0nYmFyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgxLCAyKSwgeydmb28nOiAnYmFyJ30pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfanVzdF9hcmdzKHNlbGYpOgorICAgICAgICBkZWYgdGVzdChhLCBiLCBjKToKKyAgICAgICAgICAgIHJldHVybiBhLCBiLCBjCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiwgMyksICgxLCAyLCAzKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCAzLCA0KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICInYicgcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCIpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgIidhJyBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0Iik6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCkKKworICAgICAgICBkZWYgdGVzdChhLCBiLCBjPTEwKToKKyAgICAgICAgICAgIHJldHVybiBhLCBiLCBjCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIDIsIDMpLCAoMSwgMiwgMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIDIpLCAoMSwgMiwgMTApKQorCisgICAgICAgIGRlZiB0ZXN0KGE9MSwgYj0yLCBjPTMpOgorICAgICAgICAgICAgcmV0dXJuIGEsIGIsIGMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgYT0xMCwgYz0xMyksICgxMCwgMiwgMTMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBhPTEwKSwgKDEwLCAyLCAzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgYj0xMCksICgxLCAxMCwgMykpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF92YXJhcmdzX29yZGVyKHNlbGYpOgorICAgICAgICBkZWYgdGVzdCgqYXJncyk6CisgICAgICAgICAgICByZXR1cm4gYXJncworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QpLCAoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiwgMyksICgxLCAyLCAzKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX2FyZ3NfYW5kX3ZhcmFyZ3Moc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KGEsIGIsIGM9MywgKmFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGEsIGIsIGMsIGFyZ3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCAzLCA0LCA1KSwgKDEsIDIsIDMsICg0LCA1KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIDIpLCAoMSwgMiwgMywgKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBiPTEsIGE9MiksICgyLCAxLCAzLCAoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIGI9MiksICgxLCAyLCAzLCAoKSkpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVsdGlwbGUgdmFsdWVzIGZvciBhcmd1bWVudCAnYyciKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCAzLCBjPTQpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF9qdXN0X2t3YXJncyhzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoKiprd2FyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGt3YXJncworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgZm9vPSdiYXInLCBzcGFtPSdoYW0nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB7J2Zvbyc6ICdiYXInLCAnc3BhbSc6ICdoYW0nfSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX2FyZ3NfYW5kX2t3YXJncyhzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoYSwgYiwgYz0zLCAqKmt3YXJncyk6CisgICAgICAgICAgICByZXR1cm4gYSwgYiwgYywga3dhcmdzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiksICgxLCAyLCAzLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIDIsIGZvbz0nYmFyJywgc3BhbT0naGFtJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIDMsIHsnZm9vJzogJ2JhcicsICdzcGFtJzogJ2hhbSd9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgYj0yLCBhPTEsIGZvbz0nYmFyJywgc3BhbT0naGFtJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIDMsIHsnZm9vJzogJ2JhcicsICdzcGFtJzogJ2hhbSd9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgYT0xLCBiPTIsIGZvbz0nYmFyJywgc3BhbT0naGFtJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIDMsIHsnZm9vJzogJ2JhcicsICdzcGFtJzogJ2hhbSd9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgYj0yLCBmb289J2JhcicsIHNwYW09J2hhbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgxLCAyLCAzLCB7J2Zvbyc6ICdiYXInLCAnc3BhbSc6ICdoYW0nfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIGI9MiwgYz00LCBmb289J2JhcicsIHNwYW09J2hhbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgxLCAyLCA0LCB7J2Zvbyc6ICdiYXInLCAnc3BhbSc6ICdoYW0nfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIDIsIDQsIGZvbz0nYmFyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIDQsIHsnZm9vJzogJ2Jhcid9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgYz01LCBhPTQsIGI9MyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDQsIDMsIDUsIHt9KSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX2t3b25seShzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoKiwgZm9vKToKKyAgICAgICAgICAgIHJldHVybiBmb28KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBmb289MSksIDEpCisKKyAgICAgICAgZGVmIHRlc3QoYSwgKiwgZm9vPTEsIGJhcik6CisgICAgICAgICAgICByZXR1cm4gZm9vCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidiYXInIHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQgdmFsdWUiKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxKQorCisgICAgICAgIGRlZiB0ZXN0KGZvbywgKiwgYmFyKToKKyAgICAgICAgICAgIHJldHVybiBmb28sIGJhcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCBiYXI9MiksICgxLCAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgYmFyPTIsIGZvbz0xKSwgKDEsIDIpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvbyBtYW55IGtleXdvcmQgYXJndW1lbnRzJyk6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgYmFyPTIsIGZvbz0xLCBzcGFtPTEwKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJyk6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSwgMikKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIDIsIGJhcj0yKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvbyBtYW55IGtleXdvcmQgYXJndW1lbnRzJyk6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSwgYmFyPTIsIHNwYW09J2hhbScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ2JhcicgcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCB2YWx1ZSIpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEpCisKKyAgICAgICAgZGVmIHRlc3QoZm9vLCAqLCBiYXIsICoqYmluKToKKyAgICAgICAgICAgIHJldHVybiBmb28sIGJhciwgYmluCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIGJhcj0yKSwgKDEsIDIsIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgZm9vPTEsIGJhcj0yKSwgKDEsIDIsIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgYmFyPTIsIHNwYW09J2hhbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgxLCAyLCB7J3NwYW0nOiAnaGFtJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBzcGFtPSdoYW0nLCBmb289MSwgYmFyPTIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgxLCAyLCB7J3NwYW0nOiAnaGFtJ30pKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInZm9vJyBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0IHZhbHVlIik6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgc3BhbT0naGFtJywgYmFyPTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIGJhcj0yLCBiaW49MSwgc3BhbT0xMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIHsnYmluJzogMSwgJ3NwYW0nOiAxMH0pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICBkZWYgdGVzdChhLCAqYXJncywgYiwgej0xMDAsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUodGVzdCkKKyAgICAgICAgYmEgPSBzaWcuYmluZCgxMCwgMjAsIGI9MzAsIGM9NDAsIGFyZ3M9NTAsIGt3YXJncz02MCkKKyAgICAgICAgIyB3ZSB3b24ndCBoYXZlICd6JyBhcmd1bWVudCBpbiB0aGUgYm91bmQgYXJndW1lbnRzIG9iamVjdCwgYXMgd2UgZGlkbid0CisgICAgICAgICMgcGFzcyBpdCB0byB0aGUgJ2JpbmQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUoYmEuYXJndW1lbnRzLml0ZW1zKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoJ2EnLCAxMCksICgnYXJncycsICgyMCwpKSwgKCdiJywgMzApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2t3YXJncycsIHsnYyc6IDQwLCAnYXJncyc6IDUwLCAna3dhcmdzJzogNjB9KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEua3dhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnYic6IDMwLCAnYyc6IDQwLCAnYXJncyc6IDUwLCAna3dhcmdzJzogNjB9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhLmFyZ3MsICgxMCwgMjApKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfcG9zaXRpb25hbF9vbmx5KHNlbGYpOgorICAgICAgICBQID0gaW5zcGVjdC5QYXJhbWV0ZXIKKworICAgICAgICBkZWYgdGVzdChhX3BvLCBiX3BvLCBjX3BvPTMsIGZvbz00MiwgKiwgYmFyPTUwLCAqKmt3YXJncyk6CisgICAgICAgICAgICByZXR1cm4gYV9wbywgYl9wbywgY19wbywgZm9vLCBiYXIsIGt3YXJncworCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpCisgICAgICAgIG5ld19wYXJhbXMgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCh0dXBsZShzaWcucGFyYW1ldGVycy5pdGVtcygpKSkKKyAgICAgICAgZm9yIG5hbWUgaW4gKCdhX3BvJywgJ2JfcG8nLCAnY19wbycpOgorICAgICAgICAgICAgbmV3X3BhcmFtc1tuYW1lXSA9IG5ld19wYXJhbXNbbmFtZV0ucmVwbGFjZShraW5kPVAuUE9TSVRJT05BTF9PTkxZKQorICAgICAgICBuZXdfc2lnID0gc2lnLnJlcGxhY2UocGFyYW1ldGVycz1uZXdfcGFyYW1zLnZhbHVlcygpKQorICAgICAgICB0ZXN0Ll9fc2lnbmF0dXJlX18gPSBuZXdfc2lnCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiwgNCwgNSwgYmFyPTYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgxLCAyLCA0LCA1LCA2LCB7fSkpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgInBhcmFtZXRlciBpcyBwb3NpdGlvbmFsIG9ubHkiKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCBjX3BvPTQpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgInBhcmFtZXRlciBpcyBwb3NpdGlvbmFsIG9ubHkiKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCBhX3BvPTEsIGJfcG89MikKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX3dpdGhfc2VsZl9hcmcoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE3MDcxOiBvbmUgb2YgdGhlIHBhcmFtZXRlcnMgaXMgbmFtZWQgInNlbGYKKyAgICAgICAgZGVmIHRlc3QoYSwgc2VsZiwgYik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpCisgICAgICAgIGJhID0gc2lnLmJpbmQoMSwgMiwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYS5hcmdzLCAoMSwgMiwgMykpCisgICAgICAgIGJhID0gc2lnLmJpbmQoMSwgc2VsZj0yLCBiPTMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEuYXJncywgKDEsIDIsIDMpKQorCisKK2NsYXNzIFRlc3RCb3VuZEFyZ3VtZW50cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JvdW5kX2FyZ3VtZW50c191bmhhc2hhYmxlKHNlbGYpOgorICAgICAgICBkZWYgZm9vKGEpOiBwYXNzCisgICAgICAgIGJhID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKS5iaW5kKDEpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3VuaGFzaGFibGUgdHlwZScpOgorICAgICAgICAgICAgaGFzaChiYSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9ib3VuZF9hcmd1bWVudHNfZXF1YWxpdHkoc2VsZik6CisgICAgICAgIGRlZiBmb28oYSk6IHBhc3MKKyAgICAgICAgYmEgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pLmJpbmQoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYSwgYmEpCisKKyAgICAgICAgYmEyID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKS5iaW5kKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEsIGJhMikKKworICAgICAgICBiYTMgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pLmJpbmQoMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChiYSwgYmEzKQorICAgICAgICBiYTMuYXJndW1lbnRzWydhJ10gPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEsIGJhMykKKworICAgICAgICBkZWYgYmFyKGIpOiBwYXNzCisgICAgICAgIGJhNCA9IGluc3BlY3Quc2lnbmF0dXJlKGJhcikuYmluZCgxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGJhLCBiYTQpCisKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHJ1bl91bml0dGVzdCgKQEAgLTExNzYsNyArMjI4NCw4IEBACiAgICAgICAgIFRlc3RJbnRlcnByZXRlclN0YWNrLCBUZXN0Q2xhc3Nlc0FuZEZ1bmN0aW9ucywgVGVzdFByZWRpY2F0ZXMsCiAgICAgICAgIFRlc3RHZXRjYWxsYXJnc0Z1bmN0aW9ucywgVGVzdEdldGNhbGxhcmdzTWV0aG9kcywKICAgICAgICAgVGVzdEdldGNhbGxhcmdzVW5ib3VuZE1ldGhvZHMsIFRlc3RHZXRhdHRyU3RhdGljLCBUZXN0R2V0R2VuZXJhdG9yU3RhdGUsCi0gICAgICAgIFRlc3ROb0VPTAorICAgICAgICBUZXN0Tm9FT0wsIFRlc3RTaWduYXR1cmVPYmplY3QsIFRlc3RTaWduYXR1cmVCaW5kLCBUZXN0UGFyYW1ldGVyT2JqZWN0LAorICAgICAgICBUZXN0Qm91bmRBcmd1bWVudHMsIFRlc3RHZXRDbG9zdXJlVmFycwogICAgICkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW50LnB5IGIvTGliL3Rlc3QvdGVzdF9pbnQucHkKaW5kZXggNjcxYjIwYS4uYzM1YTQyZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbnQucHkKQEAgLTIsNyArMiw2IEBACiAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKIEwgPSBbCiAgICAgICAgICgnMCcsIDApLApAQCAtMjI2LDYgKzIyNSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaW50KGInMTAnKSwgMTApCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaW50KGInLTEnKSwgLTEpCiAKKyAgICBkZWYgdGVzdF9ub19hcmdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludCgpLCAwKQorCiAgICAgZGVmIHRlc3Rfa2V5d29yZF9hcmdzKHNlbGYpOgogICAgICAgICAjIFRlc3QgaW52b2tpbmcgaW50KCkgdXNpbmcga2V5d29yZCBhcmd1bWVudHMuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHg9MS4yKSwgMSkKQEAgLTIzNCw2ICsyMzYsMjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnQsIGJhc2U9MTApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW50LCBiYXNlPTApCiAKKyAgICBkZWYgdGVzdF9ub25fbnVtZXJpY19pbnB1dF90eXBlcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHBvc3NpYmxlIG5vbi1udW1lcmljIHR5cGVzIGZvciB0aGUgYXJndW1lbnQgeCwgaW5jbHVkaW5nCisgICAgICAgICMgc3ViY2xhc3NlcyBvZiB0aGUgZXhwbGljaXRseSBkb2N1bWVudGVkIGFjY2VwdGVkIHR5cGVzLgorICAgICAgICBjbGFzcyBDdXN0b21TdHIoc3RyKTogcGFzcworICAgICAgICBjbGFzcyBDdXN0b21CeXRlcyhieXRlcyk6IHBhc3MKKyAgICAgICAgY2xhc3MgQ3VzdG9tQnl0ZUFycmF5KGJ5dGVhcnJheSk6IHBhc3MKKworICAgICAgICB2YWx1ZXMgPSBbYicxMDAnLAorICAgICAgICAgICAgICAgICAgYnl0ZWFycmF5KGInMTAwJyksCisgICAgICAgICAgICAgICAgICBDdXN0b21TdHIoJzEwMCcpLAorICAgICAgICAgICAgICAgICAgQ3VzdG9tQnl0ZXMoYicxMDAnKSwKKyAgICAgICAgICAgICAgICAgIEN1c3RvbUJ5dGVBcnJheShiJzEwMCcpXQorCisgICAgICAgIGZvciB4IGluIHZhbHVlczoKKyAgICAgICAgICAgIG1zZyA9ICd4IGhhcyB0eXBlICVzJyAlIHR5cGUoeCkuX19uYW1lX18KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHgpLCAxMDAsIG1zZz1tc2cpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludCh4LCAyKSwgNCwgbXNnPW1zZykKKworICAgIGRlZiB0ZXN0X3N0cmluZ19mbG9hdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCAnMS4yJykKKwogICAgIGRlZiB0ZXN0X2ludGNvbnZlcnNpb24oc2VsZik6CiAgICAgICAgICMgVGVzdCBfX2ludF9fKCkKICAgICAgICAgY2xhc3MgQ2xhc3NpY01pc3NpbmdNZXRob2RzOgpAQCAtMzE4LDYgKzM0MSwxOCBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIkZhaWxlZCB0byByYWlzZSBUeXBlRXJyb3Igd2l0aCAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChiYXNlLCB0cnVuY19yZXN1bHRfYmFzZSksKSkKIAorICAgICAgICAgICAgICAgICMgUmVncmVzc2lvbiB0ZXN0IGZvciBidWdzLnB5dGhvbi5vcmcvaXNzdWUxNjA2MC4KKyAgICAgICAgICAgICAgICBjbGFzcyBCYWRJbnQodHJ1bmNfcmVzdWx0X2Jhc2UpOgorICAgICAgICAgICAgICAgICAgICBkZWYgX19pbnRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA0Mi4wCisKKyAgICAgICAgICAgICAgICBjbGFzcyBUcnVuY1JldHVybnNCYWRJbnQoYmFzZSk6CisgICAgICAgICAgICAgICAgICAgIGRlZiBfX3RydW5jX18oc2VsZik6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQmFkSW50KCkKKworICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgaW50KFRydW5jUmV0dXJuc0JhZEludCgpKQorCiAgICAgZGVmIHRlc3RfZXJyb3JfbWVzc2FnZShzZWxmKToKICAgICAgICAgdGVzdGxpc3QgPSAoJ1x4YmQnLCAnMTIzXHhiZCcsICcgIDEyMyA0NTYgICcpCiAgICAgICAgIGZvciBzIGluIHRlc3RsaXN0OgpAQCAtMzI5LDcgKzM2NCw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJFeHBlY3RlZCBpbnQoJXIpIHRvIHJhaXNlIGEgVmFsdWVFcnJvciIsIHMpCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoSW50VGVzdENhc2VzKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEludFRlc3RDYXNlcykKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pby5weSBiL0xpYi90ZXN0L3Rlc3RfaW8ucHkKaW5kZXggOGVmMzE0ZS4uNjRjNjZkOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pby5weQorKysgYi9MaWIvdGVzdC90ZXN0X2lvLnB5CkBAIC0xOSwyMSArMTksMjIgQEAKICMgdGVzdCBib3RoIGltcGxlbWVudGF0aW9ucy4gVGhpcyBmaWxlIGhhcyBsb3RzIG9mIGV4YW1wbGVzLgogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAoraW1wb3J0IGFiYworaW1wb3J0IGFycmF5CitpbXBvcnQgZXJybm8KK2ltcG9ydCBsb2NhbGUKIGltcG9ydCBvcworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHJhbmRvbQoraW1wb3J0IHNpZ25hbAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKLWltcG9ydCBhcnJheQotaW1wb3J0IHJhbmRvbQogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgd2Vha3JlZgotaW1wb3J0IGFiYwotaW1wb3J0IHNpZ25hbAotaW1wb3J0IGVycm5vCiBpbXBvcnQgd2FybmluZ3MKLWltcG9ydCBwaWNrbGUKK2ltcG9ydCB3ZWFrcmVmCiBpbXBvcnQgX3Rlc3RjYXBpCi1mcm9tIGl0ZXJ0b29scyBpbXBvcnQgY3ljbGUsIGNvdW50CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZSwgVXNlckxpc3QKK2Zyb20gaXRlcnRvb2xzIGltcG9ydCBjeWNsZSwgY291bnQKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBpbXBvcnQgY29kZWNzCkBAIC01MCw3ICs1MSw3IEBACiAKIGRlZiBfZGVmYXVsdF9jaHVua19zaXplKCk6CiAgICAgIiIiR2V0IHRoZSBkZWZhdWx0IFRleHRJT1dyYXBwZXIgY2h1bmsgc2l6ZSIiIgotICAgIHdpdGggb3BlbihfX2ZpbGVfXywgInIiLCBlbmNvZGluZz0ibGF0aW4xIikgYXMgZjoKKyAgICB3aXRoIG9wZW4oX19maWxlX18sICJyIiwgZW5jb2Rpbmc9ImxhdGluLTEiKSBhcyBmOgogICAgICAgICByZXR1cm4gZi5fQ0hVTktfU0laRQogCiAKQEAgLTYwMyw2ICs2MDQsNyBAQAogICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigpCiAgICAgICAgIGYuZmx1c2ggPSBiYWRfZmx1c2gKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgZi5jbG9zZSkgIyBleGNlcHRpb24gbm90IHN3YWxsb3dlZAorICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5jbG9zZWQpCiAKICAgICBkZWYgdGVzdF9tdWx0aV9jbG9zZShzZWxmKToKICAgICAgICAgZiA9IHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIiwgYnVmZmVyaW5nPTApCkBAIC02MzUsNiArNjM3LDE1IEBACiAgICAgICAgIGZvciBvYmogaW4gdGVzdDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG9iaiwgIl9fZGljdF9fIikpCiAKKyAgICBkZWYgdGVzdF9vcGVuZXIoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCJlZ2dcbiIpCisgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19SRE9OTFkpCisgICAgICAgIGRlZiBvcGVuZXIocGF0aCwgZmxhZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGZkCisgICAgICAgIHdpdGggc2VsZi5vcGVuKCJub24tZXhpc3RlbnQiLCAiciIsIG9wZW5lcj1vcGVuZXIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCAiZWdnXG4iKQorCiAgICAgZGVmIHRlc3RfZmlsZWlvX2Nsb3NlZmQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzQ4NDEKICAgICAgICAgd2l0aCBzZWxmLm9wZW4oX19maWxlX18sICdyYicpIGFzIGYxLCBcCkBAIC02OTcsNyArNzA4LDcgQEAKICAgICAgICAgYnVmaW8gPSBzZWxmLnRwKHJhd2lvKQogICAgICAgICAjIEludmFsaWQgd2hlbmNlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ1ZmlvLnNlZWssIDAsIC0xKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBidWZpby5zZWVrLCAwLCAzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBidWZpby5zZWVrLCAwLCA5KQogCiAgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfZGVzdHJ1Y3RvcihzZWxmKToKICAgICAgICAgdHAgPSBzZWxmLnRwCkBAIC03NzEsNiArNzgyLDIyIEBACiAgICAgICAgIHJhdy5mbHVzaCA9IGJhZF9mbHVzaAogICAgICAgICBiID0gc2VsZi50cChyYXcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGIuY2xvc2UpICMgZXhjZXB0aW9uIG5vdCBzd2FsbG93ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGIuY2xvc2VkKQorCisgICAgZGVmIHRlc3RfY2xvc2VfZXJyb3Jfb25fY2xvc2Uoc2VsZik6CisgICAgICAgIHJhdyA9IHNlbGYuTW9ja1Jhd0lPKCkKKyAgICAgICAgZGVmIGJhZF9mbHVzaCgpOgorICAgICAgICAgICAgcmFpc2UgSU9FcnJvcignZmx1c2gnKQorICAgICAgICBkZWYgYmFkX2Nsb3NlKCk6CisgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCdjbG9zZScpCisgICAgICAgIHJhdy5jbG9zZSA9IGJhZF9jbG9zZQorICAgICAgICBiID0gc2VsZi50cChyYXcpCisgICAgICAgIGIuZmx1c2ggPSBiYWRfZmx1c2gKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKSBhcyBlcnI6ICMgZXhjZXB0aW9uIG5vdCBzd2FsbG93ZWQKKyAgICAgICAgICAgIGIuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5leGNlcHRpb24uYXJncywgKCdjbG9zZScsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIuZXhjZXB0aW9uLl9fY29udGV4dF9fLmFyZ3MsICgnZmx1c2gnLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYi5jbG9zZWQpCiAKICAgICBkZWYgdGVzdF9tdWx0aV9jbG9zZShzZWxmKToKICAgICAgICAgcmF3ID0gc2VsZi5Nb2NrUmF3SU8oKQpAQCAtODYzLDYgKzg5MCwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGIiZ2YiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmlvLnJlYWRpbnRvKGIpLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGIiZ2YiKQorICAgICAgICByYXdpbyA9IHNlbGYuTW9ja1Jhd0lPKChiImFiYyIsIE5vbmUpKQorICAgICAgICBidWZpbyA9IHNlbGYudHAocmF3aW8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmaW8ucmVhZGludG8oYiksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYiJhYiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmaW8ucmVhZGludG8oYiksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYiJjYiIpCiAKICAgICBkZWYgdGVzdF9yZWFkbGluZXMoc2VsZik6CiAgICAgICAgIGRlZiBidWZpbygpOgpAQCAtMTI4MywxMSArMTMxNiwyMCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBidWZpby50ZWxsKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBidWZpby53cml0ZSwgYiJhYmNkZWYiKQogCi0gICAgZGVmIHRlc3RfbWF4X2J1ZmZlcl9zaXplX2RlcHJlY2F0aW9uKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCJtYXhfYnVmZmVyX3NpemUgaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgZGVmIHRlc3RfbWF4X2J1ZmZlcl9zaXplX3JlbW92YWwoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIHNlbGYudHAoc2VsZi5Nb2NrUmF3SU8oKSwgOCwgMTIpCiAKKyAgICBkZWYgdGVzdF93cml0ZV9lcnJvcl9vbl9jbG9zZShzZWxmKToKKyAgICAgICAgcmF3ID0gc2VsZi5Nb2NrUmF3SU8oKQorICAgICAgICBkZWYgYmFkX3dyaXRlKGIpOgorICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigpCisgICAgICAgIHJhdy53cml0ZSA9IGJhZF93cml0ZQorICAgICAgICBiID0gc2VsZi50cChyYXcpCisgICAgICAgIGIud3JpdGUoYidzcGFtJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgYi5jbG9zZSkgIyBleGNlcHRpb24gbm90IHN3YWxsb3dlZAorICAgICAgICBzZWxmLmFzc2VydFRydWUoYi5jbG9zZWQpCisKIAogY2xhc3MgQ0J1ZmZlcmVkV3JpdGVyVGVzdChCdWZmZXJlZFdyaXRlclRlc3QsIFNpemVvZlRlc3QpOgogICAgIHRwID0gaW8uQnVmZmVyZWRXcml0ZXIKQEAgLTEzNDYsOSArMTM4OCw4IEBACiAgICAgICAgIHBhaXIgPSBzZWxmLnRwKHNlbGYuTW9ja1Jhd0lPKCksIHNlbGYuTW9ja1Jhd0lPKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuVW5zdXBwb3J0ZWRPcGVyYXRpb24sIHBhaXIuZGV0YWNoKQogCi0gICAgZGVmIHRlc3RfY29uc3RydWN0b3JfbWF4X2J1ZmZlcl9zaXplX2RlcHJlY2F0aW9uKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCJtYXhfYnVmZmVyX3NpemUgaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgZGVmIHRlc3RfY29uc3RydWN0b3JfbWF4X2J1ZmZlcl9zaXplX3JlbW92YWwoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIHNlbGYudHAoc2VsZi5Nb2NrUmF3SU8oKSwgc2VsZi5Nb2NrUmF3SU8oKSwgOCwgMTIpCiAKICAgICBkZWYgdGVzdF9jb25zdHJ1Y3Rvcl93aXRoX25vdF9yZWFkYWJsZShzZWxmKToKQEAgLTE4NzEsMTEgKzE5MTIsMTEgQEAKICAgICAgICAgciA9IHNlbGYuQnl0ZXNJTyhiIlx4YzNceGE5XG5cbiIpCiAgICAgICAgIGIgPSBzZWxmLkJ1ZmZlcmVkUmVhZGVyKHIsIDEwMDApCiAgICAgICAgIHQgPSBzZWxmLlRleHRJT1dyYXBwZXIoYikKLSAgICAgICAgdC5fX2luaXRfXyhiLCBlbmNvZGluZz0ibGF0aW4xIiwgbmV3bGluZT0iXHJcbiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5lbmNvZGluZywgImxhdGluMSIpCisgICAgICAgIHQuX19pbml0X18oYiwgZW5jb2Rpbmc9ImxhdGluLTEiLCBuZXdsaW5lPSJcclxuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmVuY29kaW5nLCAibGF0aW4tMSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5saW5lX2J1ZmZlcmluZywgRmFsc2UpCi0gICAgICAgIHQuX19pbml0X18oYiwgZW5jb2Rpbmc9InV0ZjgiLCBsaW5lX2J1ZmZlcmluZz1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuZW5jb2RpbmcsICJ1dGY4IikKKyAgICAgICAgdC5fX2luaXRfXyhiLCBlbmNvZGluZz0idXRmLTgiLCBsaW5lX2J1ZmZlcmluZz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuZW5jb2RpbmcsICJ1dGYtOCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5saW5lX2J1ZmZlcmluZywgVHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiXHhlOVxuIiwgdC5yZWFkbGluZSgpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHQuX19pbml0X18sIGIsIG5ld2xpbmU9NDIpCkBAIC0xOTIyLDYgKzE5NjMsMjQgQEAKICAgICAgICAgdC53cml0ZSgiQVxyQiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoci5nZXR2YWx1ZSgpLCBiIlhZXG5aQVxyQiIpCiAKKyAgICBkZWYgdGVzdF9kZWZhdWx0X2VuY29kaW5nKHNlbGYpOgorICAgICAgICBvbGRfZW52aXJvbiA9IGRpY3Qob3MuZW52aXJvbikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyB0cnkgdG8gZ2V0IGEgdXNlciBwcmVmZXJyZWQgZW5jb2RpbmcgZGlmZmVyZW50IHRoYW4gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICMgbG9jYWxlIGVuY29kaW5nIHRvIGNoZWNrIHRoYXQgVGV4dElPV3JhcHBlcigpIHVzZXMgdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICMgbG9jYWxlIGVuY29kaW5nIGFuZCBub3QgdGhlIHVzZXIgcHJlZmVycmVkIGVuY29kaW5nCisgICAgICAgICAgICBmb3Iga2V5IGluICgnTENfQUxMJywgJ0xBTkcnLCAnTENfQ1RZUEUnKToKKyAgICAgICAgICAgICAgICBpZiBrZXkgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICAgICAgZGVsIG9zLmVudmlyb25ba2V5XQorCisgICAgICAgICAgICBjdXJyZW50X2xvY2FsZV9lbmNvZGluZyA9IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkKKyAgICAgICAgICAgIGIgPSBzZWxmLkJ5dGVzSU8oKQorICAgICAgICAgICAgdCA9IHNlbGYuVGV4dElPV3JhcHBlcihiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmVuY29kaW5nLCBjdXJyZW50X2xvY2FsZV9lbmNvZGluZykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmVudmlyb24uY2xlYXIoKQorICAgICAgICAgICAgb3MuZW52aXJvbi51cGRhdGUob2xkX2Vudmlyb24pCisKICAgICAjIElzc3VlIDE1OTg5CiAgICAgZGVmIHRlc3RfZGV2aWNlX2VuY29kaW5nKHNlbGYpOgogICAgICAgICBiID0gc2VsZi5CeXRlc0lPKCkKQEAgLTE5MzMsOCArMTk5Miw4IEBACiAgICAgZGVmIHRlc3RfZW5jb2Rpbmcoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhlIGVuY29kaW5nIGF0dHJpYnV0ZSBpcyBhbHdheXMgc2V0LCBhbmQgdmFsaWQKICAgICAgICAgYiA9IHNlbGYuQnl0ZXNJTygpCi0gICAgICAgIHQgPSBzZWxmLlRleHRJT1dyYXBwZXIoYiwgZW5jb2Rpbmc9InV0ZjgiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuZW5jb2RpbmcsICJ1dGY4IikKKyAgICAgICAgdCA9IHNlbGYuVGV4dElPV3JhcHBlcihiLCBlbmNvZGluZz0idXRmLTgiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuZW5jb2RpbmcsICJ1dGYtOCIpCiAgICAgICAgIHQgPSBzZWxmLlRleHRJT1dyYXBwZXIoYikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQuZW5jb2RpbmcgaXMgbm90IE5vbmUpCiAgICAgICAgIGNvZGVjcy5sb29rdXAodC5lbmNvZGluZykKQEAgLTIwMjcsOCArMjA4Niw4IEBACiAgICAgICAgIHRlc3RkYXRhID0gYiJBQUFcbkJCXHgwMEJcbkNDQ1xyREREXHJFRUVcclxuRkZGXHJcbkdHRyIKICAgICAgICAgbm9ybWFsaXplZCA9IHRlc3RkYXRhLnJlcGxhY2UoYiJcclxuIiwgYiJcbiIpLnJlcGxhY2UoYiJcciIsIGIiXG4iKQogICAgICAgICBmb3IgbmV3bGluZSwgZXhwZWN0ZWQgaW4gWwotICAgICAgICAgICAgKE5vbmUsIG5vcm1hbGl6ZWQuZGVjb2RlKCJhc2NpaSIpLnNwbGl0bGluZXMoVHJ1ZSkpLAotICAgICAgICAgICAgKCIiLCB0ZXN0ZGF0YS5kZWNvZGUoImFzY2lpIikuc3BsaXRsaW5lcyhUcnVlKSksCisgICAgICAgICAgICAoTm9uZSwgbm9ybWFsaXplZC5kZWNvZGUoImFzY2lpIikuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSksCisgICAgICAgICAgICAoIiIsIHRlc3RkYXRhLmRlY29kZSgiYXNjaWkiKS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpKSwKICAgICAgICAgICAgICgiXG4iLCBbIkFBQVxuIiwgIkJCXHgwMEJcbiIsICJDQ0NcckRERFxyRUVFXHJcbiIsICJGRkZcclxuIiwgIkdHRyJdKSwKICAgICAgICAgICAgICgiXHJcbiIsIFsiQUFBXG5CQlx4MDBCXG5DQ0NcckRERFxyRUVFXHJcbiIsICJGRkZcclxuIiwgIkdHRyJdKSwKICAgICAgICAgICAgICgiXHIiLCAgWyJBQUFcbkJCXHgwMEJcbkNDQ1xyIiwgIkRERFxyIiwgIkVFRVxyIiwgIlxuRkZGXHIiLCAiXG5HR0ciXSksCkBAIC0yMTEzLDcgKzIxNzIsNyBAQAogCiAgICAgZGVmIHRlc3RfYmFzaWNfaW8oc2VsZik6CiAgICAgICAgIGZvciBjaHVua3NpemUgaW4gKDEsIDIsIDMsIDQsIDUsIDE1LCAxNiwgMTcsIDMxLCAzMiwgMzMsIDYzLCA2NCwgNjUpOgotICAgICAgICAgICAgZm9yIGVuYyBpbiAiYXNjaWkiLCAibGF0aW4xIiwgInV0ZjgiIDojICwgInV0Zi0xNi1iZSIsICJ1dGYtMTYtbGUiOgorICAgICAgICAgICAgZm9yIGVuYyBpbiAiYXNjaWkiLCAibGF0aW4tMSIsICJ1dGYtOCIgOiMgLCAidXRmLTE2LWJlIiwgInV0Zi0xNi1sZSI6CiAgICAgICAgICAgICAgICAgZiA9IHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgIncrIiwgZW5jb2Rpbmc9ZW5jKQogICAgICAgICAgICAgICAgIGYuX0NIVU5LX1NJWkUgPSBjaHVua3NpemUKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYud3JpdGUoImFiYyIpLCAzKQpAQCAtMjE2Myw3ICsyMjIyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChybGluZXMsIHdsaW5lcykKIAogICAgIGRlZiB0ZXN0X3RlbGxpbmcoc2VsZik6Ci0gICAgICAgIGYgPSBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICJ3KyIsIGVuY29kaW5nPSJ1dGY4IikKKyAgICAgICAgZiA9IHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgIncrIiwgZW5jb2Rpbmc9InV0Zi04IikKICAgICAgICAgcDAgPSBmLnRlbGwoKQogICAgICAgICBmLndyaXRlKCJceGZmXG4iKQogICAgICAgICBwMSA9IGYudGVsbCgpCkBAIC0yNDMxLDYgKzI0OTAsNyBAQAogICAgICAgICB3aXRoIHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgInciLCBlcnJvcnM9InJlcGxhY2UiKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmVycm9ycywgInJlcGxhY2UiKQogCisgICAgQHN1cHBvcnQubm9fdHJhY2luZwogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiAgICAgZGVmIHRlc3RfdGhyZWFkc193cml0ZShzZWxmKToKICAgICAgICAgIyBJc3N1ZTY3NTA6IGNvbmN1cnJlbnQgd3JpdGVzIGNvdWxkIGR1cGxpY2F0ZSBkYXRhCkBAIC0yNDU5LDYgKzI1MTksNyBAQAogICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigpCiAgICAgICAgIHR4dC5mbHVzaCA9IGJhZF9mbHVzaAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCB0eHQuY2xvc2UpICMgZXhjZXB0aW9uIG5vdCBzd2FsbG93ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHR4dC5jbG9zZWQpCiAKICAgICBkZWYgdGVzdF9tdWx0aV9jbG9zZShzZWxmKToKICAgICAgICAgdHh0ID0gc2VsZi5UZXh0SU9XcmFwcGVyKHNlbGYuQnl0ZXNJTyhzZWxmLnRlc3RkYXRhKSwgZW5jb2Rpbmc9ImFzY2lpIikKQEAgLTI3NzIsMTIgKzI4MzMsNiBAQAogCiAgICAgZGVmIHRlc3RfYmxvY2tpbmdpb2Vycm9yKHNlbGYpOgogICAgICAgICAjIFZhcmlvdXMgQmxvY2tpbmdJT0Vycm9yIGlzc3VlcwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuQmxvY2tpbmdJT0Vycm9yKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuQmxvY2tpbmdJT0Vycm9yLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuQmxvY2tpbmdJT0Vycm9yLCAxLCAyLCAzLCA0KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuQmxvY2tpbmdJT0Vycm9yLCAxLCAiIiwgTm9uZSkKLSAgICAgICAgYiA9IHNlbGYuQmxvY2tpbmdJT0Vycm9yKDEsICIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY2hhcmFjdGVyc193cml0dGVuLCAwKQogICAgICAgICBjbGFzcyBDKHN0cik6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGMgPSBDKCIiKQpAQCAtMjkxOSw2ICsyOTc0LDcgQEAKIAogICAgICAgICAgICAgICAgIGV4Y2VwdCBzZWxmLkJsb2NraW5nSU9FcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgZXJybm8uRUFHQUlOKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1syXSwgZS5jaGFyYWN0ZXJzX3dyaXR0ZW4pCiAgICAgICAgICAgICAgICAgICAgIHNlbnRbLTFdID0gc2VudFstMV1bOmUuY2hhcmFjdGVyc193cml0dGVuXQogICAgICAgICAgICAgICAgICAgICByZWNlaXZlZC5hcHBlbmQocmYucmVhZCgpKQogICAgICAgICAgICAgICAgICAgICBtc2cgPSBiJ0JMT0NLRUQnCkBAIC0yOTMxLDYgKzI5ODcsNyBAQAogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIGV4Y2VwdCBzZWxmLkJsb2NraW5nSU9FcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgZXJybm8uRUFHQUlOKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1syXSwgZS5jaGFyYWN0ZXJzX3dyaXR0ZW4pCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5jaGFyYWN0ZXJzX3dyaXR0ZW4sIDApCiAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkLmFwcGVuZChyZi5yZWFkKCkpCiAKQEAgLTI5NDEsNiArMjk5OCwyNCBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUod2YuY2xvc2VkKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmYuY2xvc2VkKQogCisgICAgZGVmIHRlc3RfY3JlYXRlX2ZhaWwoc2VsZik6CisgICAgICAgICMgJ3gnIG1vZGUgZmFpbHMgaWYgZmlsZSBpcyBleGlzdGluZworICAgICAgICB3aXRoIHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgJ3cnKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZUV4aXN0c0Vycm9yLCBzZWxmLm9wZW4sIHN1cHBvcnQuVEVTVEZOLCAneCcpCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfd3JpdGVzKHNlbGYpOgorICAgICAgICAjICd4JyBtb2RlIG9wZW5zIGZvciB3cml0aW5nCisgICAgICAgIHdpdGggc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAneGInKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShiInNwYW0iKQorICAgICAgICB3aXRoIHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJzcGFtIiwgZi5yZWFkKCkpCisKKyAgICBkZWYgdGVzdF9vcGVuX2FsbGFyZ3Moc2VsZik6CisgICAgICAgICMgdGhlcmUgdXNlZCB0byBiZSBhIGJ1ZmZlciBvdmVyZmxvdyBpbiB0aGUgcGFyc2VyIGZvciByYXdtb2RlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYub3Blbiwgc3VwcG9ydC5URVNURk4sICdyd2F4KycpCisKKwogY2xhc3MgQ01pc2NJT1Rlc3QoTWlzY0lPVGVzdCk6CiAgICAgaW8gPSBpbwogCkBAIC0yOTYxLDE0ICszMDM2LDE0IEBACiAgICAgICAgIDEvMAogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKLSAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSBpbiAoJ2ZyZWVic2Q1JywgJ2ZyZWVic2Q2JywgJ2ZyZWVic2Q3JyksCi0gICAgICAgICAgICAgICAgICAgICAnaXNzdWUgIzEyNDI5OiBza2lwIHRlc3Qgb24gRnJlZUJTRCA8PSA3JykKICAgICBkZWYgY2hlY2tfaW50ZXJydXB0ZWRfd3JpdGUoc2VsZiwgaXRlbSwgYnl0ZXMsICoqZmRvcGVuX2t3YXJncyk6CiAgICAgICAgICIiIkNoZWNrIHRoYXQgYSBwYXJ0aWFsIHdyaXRlLCB3aGVuIGl0IGdldHMgaW50ZXJydXB0ZWQsIHByb3Blcmx5CiAgICAgICAgIGludm9rZXMgdGhlIHNpZ25hbCBoYW5kbGVyLCBhbmQgYnViYmxlcyB1cCB0aGUgZXhjZXB0aW9uIHJhaXNlZAogICAgICAgICBpbiB0aGUgbGF0dGVyLiIiIgogICAgICAgICByZWFkX3Jlc3VsdHMgPSBbXQogICAgICAgICBkZWYgX3JlYWQoKToKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9zaWdtYXNrJyk6CisgICAgICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbc2lnbmFsLlNJR0FMUk1dKQogICAgICAgICAgICAgcyA9IG9zLnJlYWQociwgMSkKICAgICAgICAgICAgIHJlYWRfcmVzdWx0cy5hcHBlbmQocykKICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PV9yZWFkKQpAQCAtMjk4Niw3ICszMDYxLDcgQEAKICAgICAgICAgICAgICMgVGhlIGJ1ZmZlcmVkIElPIGxheWVyIG11c3QgY2hlY2sgZm9yIHBlbmRpbmcgc2lnbmFsCiAgICAgICAgICAgICAjIGhhbmRsZXJzLCB3aGljaCBpbiB0aGlzIGNhc2Ugd2lsbCBpbnZva2UgYWxhcm1faW50ZXJydXB0KCkuCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpby53cml0ZSwgaXRlbSAqICgxMDI0ICogMTAyNCkpCisgICAgICAgICAgICAgICAgICAgICAgICB3aW8ud3JpdGUsIGl0ZW0gKiAoc3VwcG9ydC5QSVBFX01BWF9TSVpFIC8vIGxlbihpdGVtKSkpCiAgICAgICAgICAgICB0LmpvaW4oKQogICAgICAgICAgICAgIyBXZSBnb3Qgb25lIGJ5dGUsIGdldCBhbm90aGVyIG9uZSBhbmQgY2hlY2sgdGhhdCBpdCBpc24ndCBhCiAgICAgICAgICAgICAjIHJlcGVhdCBvZiB0aGUgZmlyc3Qgb25lLgpAQCAtMzAxMyw2ICszMDg4LDcgQEAKICAgICBkZWYgdGVzdF9pbnRlcnJ1cHRlZF93cml0ZV90ZXh0KHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2ludGVycnVwdGVkX3dyaXRlKCJ4eSIsIGIieHkiLCBtb2RlPSJ3IiwgZW5jb2Rpbmc9ImFzY2lpIikKIAorICAgIEBzdXBwb3J0Lm5vX3RyYWNpbmcKICAgICBkZWYgY2hlY2tfcmVlbnRyYW50X3dyaXRlKHNlbGYsIGRhdGEsICoqZmRvcGVuX2t3YXJncyk6CiAgICAgICAgIGRlZiBvbl9hbGFybSgqYXJncyk6CiAgICAgICAgICAgICAjIFdpbGwgYmUgY2FsbGVkIHJlZW50cmFudGx5IGZyb20gdGhlIHNhbWUgdGhyZWFkCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2lwYWRkcmVzcy5weSBiL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5YzU0ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2lwYWRkcmVzcy5weQpAQCAtMCwwICsxLDE2NDkgQEAKKyMgQ29weXJpZ2h0IDIwMDcgR29vZ2xlIEluYy4KKyMgIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KKworIiIiVW5pdHRlc3QgZm9yIGlwYWRkcmVzcyBtb2R1bGUuIiIiCisKKworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgcmUKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgb3BlcmF0b3IKK2ltcG9ydCBpcGFkZHJlc3MKKworY2xhc3MgQmFzZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIE9uZSBiaWcgY2hhbmdlIGluIGlwYWRkcmVzcyBvdmVyIHRoZSBvcmlnaW5hbCBpcGFkZHIgbW9kdWxlIGlzCisgICAgIyBlcnJvciByZXBvcnRpbmcgdGhhdCB0cmllcyB0byBhc3N1bWUgdXNlcnMgKmRvbid0IGtub3cgdGhlIHJ1bGVzKgorICAgICMgZm9yIHdoYXQgY29uc3RpdHV0ZXMgYW4gUkZDIGNvbXBsaWFudCBJUCBhZGRyZXNzCisKKyAgICAjIEVuc3VyaW5nIHRoZXNlIGVycm9ycyBhcmUgZW1pdHRlZCBjb3JyZWN0bHkgaW4gYWxsIHJlbGV2YW50IGNhc2VzCisgICAgIyBtZWFudCBtb3ZpbmcgdG8gYSBtb3JlIHN5c3RlbWF0aWMgdGVzdCBzdHJ1Y3R1cmUgdGhhdCBhbGxvd3MgdGhlCisgICAgIyB0ZXN0IHN0cnVjdHVyZSB0byBtYXAgbW9yZSBkaXJlY3RseSB0byB0aGUgbW9kdWxlIHN0cnVjdHVyZQorCisgICAgIyBOb3RlIHRoYXQgaWYgdGhlIGNvbnN0cnVjdG9ycyBhcmUgcmVmYWN0b3JlZCBzbyB0aGF0IGFkZHJlc3NlcyB3aXRoCisgICAgIyBtdWx0aXBsZSBwcm9ibGVtcyBnZXQgY2xhc3NpZmllZCBkaWZmZXJlbnRseSwgdGhhdCdzIE9LIC0ganVzdAorICAgICMgbW92ZSB0aGUgYWZmZWN0ZWQgZXhhbXBsZXMgdG8gdGhlIG5ld2x5IGFwcHJvcHJpYXRlIHRlc3QgY2FzZS4KKworICAgICMgVGhlcmUgaXMgc29tZSBkdXBsaWNhdGlvbiBiZXR3ZWVuIHRoZSBvcmlnaW5hbCByZWxhdGl2ZWx5IGFkIGhvYworICAgICMgdGVzdCBzdWl0ZSBhbmQgdGhlIG5ldyBzeXN0ZW1hdGljIHRlc3RzLiBXaGlsZSBzb21lIHJlZHVuZGFuY3kgaW4KKyAgICAjIHRlc3RpbmcgaXMgY29uc2lkZXJlZCBwcmVmZXJhYmxlIHRvIGFjY2lkZW50YWxseSBkZWxldGluZyBhIHZhbGlkCisgICAgIyB0ZXN0LCB0aGUgb3JpZ2luYWwgdGVzdCBzdWl0ZSB3aWxsIGxpa2VseSBiZSByZWR1Y2VkIG92ZXIgdGltZSBhcworICAgICMgcmVkdW5kYW50IHRlc3RzIGFyZSBpZGVudGlmaWVkLgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGZhY3Rvcnkoc2VsZik6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIGFzc2VydENsZWFuRXJyb3Ioc2VsZiwgZXhjX3R5cGUsIGRldGFpbHMsICphcmdzKToKKyAgICAgICAgIiIiCisgICAgICAgIEVuc3VyZSBleGNlcHRpb24gZG9lcyBub3QgZGlzcGxheSBhIGNvbnRleHQgYnkgZGVmYXVsdAorCisgICAgICAgIFdyYXBzIHVuaXR0ZXN0LlRlc3RDYXNlLmFzc2VydFJhaXNlc1JlZ2V4CisgICAgICAgICIiIgorICAgICAgICBpZiBhcmdzOgorICAgICAgICAgICAgZGV0YWlscyA9IGRldGFpbHMgJSBhcmdzCisgICAgICAgIGNtID0gc2VsZi5hc3NlcnRSYWlzZXNSZWdleChleGNfdHlwZSwgZGV0YWlscykKKyAgICAgICAgd2l0aCBjbSBhcyBleGM6CisgICAgICAgICAgICB5aWVsZCBleGMKKyAgICAgICAgIyBFbnN1cmUgd2UgcHJvZHVjZSBjbGVhbiB0cmFjZWJhY2tzIG9uIGZhaWx1cmUKKyAgICAgICAgaWYgZXhjLmV4Y2VwdGlvbi5fX2NvbnRleHRfXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleGMuZXhjZXB0aW9uLl9fc3VwcHJlc3NfY29udGV4dF9fKQorCisgICAgZGVmIGFzc2VydEFkZHJlc3NFcnJvcihzZWxmLCBkZXRhaWxzLCAqYXJncyk6CisgICAgICAgICIiIkVuc3VyZSBhIGNsZWFuIEFkZHJlc3NWYWx1ZUVycm9yIiIiCisgICAgICAgIHJldHVybiBzZWxmLmFzc2VydENsZWFuRXJyb3IoaXBhZGRyZXNzLkFkZHJlc3NWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscywgKmFyZ3MpCisKKyAgICBkZWYgYXNzZXJ0TmV0bWFza0Vycm9yKHNlbGYsIGRldGFpbHMsICphcmdzKToKKyAgICAgICAgIiIiRW5zdXJlIGEgY2xlYW4gTmV0bWFza1ZhbHVlRXJyb3IiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuYXNzZXJ0Q2xlYW5FcnJvcihpcGFkZHJlc3MuTmV0bWFza1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMsICphcmdzKQorCisgICAgZGVmIGFzc2VydEluc3RhbmNlc0VxdWFsKHNlbGYsIGxocywgcmhzKToKKyAgICAgICAgIiIiQ2hlY2sgY29uc3RydWN0b3IgYXJndW1lbnRzIHByb2R1Y2UgZXF1aXZhbGVudCBpbnN0YW5jZXMiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZhY3RvcnkobGhzKSwgc2VsZi5mYWN0b3J5KHJocykpCisKK2NsYXNzIENvbW1vblRlc3RNaXhpbjoKKworICAgIGRlZiB0ZXN0X2VtcHR5X2FkZHJlc3Moc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIkFkZHJlc3MgY2Fubm90IGJlIGVtcHR5Iik6CisgICAgICAgICAgICBzZWxmLmZhY3RvcnkoIiIpCisKKyAgICBkZWYgdGVzdF9mbG9hdHNfcmVqZWN0ZWQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKHJlcHIoIjEuMCIpKSk6CisgICAgICAgICAgICBzZWxmLmZhY3RvcnkoMS4wKQorCisgICAgZGVmIHRlc3Rfbm90X2FuX2luZGV4X2lzc3VlMTU1NTkoc2VsZik6CisgICAgICAgICMgSW1wbGVtZW50aW5nIF9faW5kZXhfXyBtYWtlcyBmb3IgYSB2ZXJ5IG5hc3R5IGludGVyYWN0aW9uIHdpdGggdGhlCisgICAgICAgICMgYnl0ZXMgY29uc3RydWN0b3IuIFRodXMsIHdlIGRpc2FsbG93IGltcGxpY2l0IHVzZSBhcyBhbiBpbnRlZ2VyCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuaW5kZXgsIHNlbGYuZmFjdG9yeSgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBoZXgsIHNlbGYuZmFjdG9yeSgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBieXRlcywgc2VsZi5mYWN0b3J5KDEpKQorCisKK2NsYXNzIENvbW1vblRlc3RNaXhpbl92NChDb21tb25UZXN0TWl4aW4pOgorCisgICAgZGVmIHRlc3RfbGVhZGluZ196ZXJvcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbCgiMDAwLjAwMC4wMDAuMDAwIiwgIjAuMC4wLjAiKQorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKCIxOTIuMTY4LjAwMC4wMDEiLCAiMTkyLjE2OC4wLjEiKQorCisgICAgZGVmIHRlc3RfaW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKDAsICIwLjAuMC4wIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbCgzMjMyMjM1NTIxLCAiMTkyLjE2OC4wLjEiKQorCisgICAgZGVmIHRlc3RfcGFja2VkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKGJ5dGVzLmZyb21oZXgoIjAwMDAwMDAwIiksICIwLjAuMC4wIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbChieXRlcy5mcm9taGV4KCJjMGE4MDAwMSIpLCAiMTkyLjE2OC4wLjEiKQorCisgICAgZGVmIHRlc3RfbmVnYXRpdmVfaW50c19yZWplY3RlZChzZWxmKToKKyAgICAgICAgbXNnID0gIi0xICg8IDApIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NCBhZGRyZXNzIgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cpKToKKyAgICAgICAgICAgIHNlbGYuZmFjdG9yeSgtMSkKKworICAgIGRlZiB0ZXN0X2xhcmdlX2ludHNfcmVqZWN0ZWQoc2VsZik6CisgICAgICAgIG1zZyA9ICIlZCAoPj0gMioqMzIpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NCBhZGRyZXNzIgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cgJSAyKiozMikpOgorICAgICAgICAgICAgc2VsZi5mYWN0b3J5KDIqKjMyKQorCisgICAgZGVmIHRlc3RfYmFkX3BhY2tlZF9sZW5ndGgoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRMZW5ndGgobGVuZ3RoKToKKyAgICAgICAgICAgIGFkZHIgPSBieXRlcyhsZW5ndGgpCisgICAgICAgICAgICBtc2cgPSAiJXIgKGxlbiAlZCAhPSA0KSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdjQgYWRkcmVzcyIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZyAlIChhZGRyLCBsZW5ndGgpKSk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWN0b3J5KGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkTGVuZ3RoKDMpCisgICAgICAgIGFzc2VydEJhZExlbmd0aCg1KQorCitjbGFzcyBDb21tb25UZXN0TWl4aW5fdjYoQ29tbW9uVGVzdE1peGluKToKKworICAgIGRlZiB0ZXN0X2xlYWRpbmdfemVyb3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoIjAwMDA6OjAwMDAiLCAiOjoiKQorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKCIwMDA6OmMwYTg6MDAwMSIsICI6OmMwYTg6MSIpCisKKyAgICBkZWYgdGVzdF9pbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoMCwgIjo6IikKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbCgzMjMyMjM1NTIxLCAiOjpjMGE4OjEiKQorCisgICAgZGVmIHRlc3RfcGFja2VkKHNlbGYpOgorICAgICAgICBhZGRyID0gYnl0ZXMoMTIpICsgYnl0ZXMuZnJvbWhleCgiMDAwMDAwMDAiKQorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKGFkZHIsICI6OiIpCisgICAgICAgIGFkZHIgPSBieXRlcygxMikgKyBieXRlcy5mcm9taGV4KCJjMGE4MDAwMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoYWRkciwgIjo6YzBhODoxIikKKyAgICAgICAgYWRkciA9IGJ5dGVzLmZyb21oZXgoImMwYTgwMDAxIikgKyBieXRlcygxMikKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbChhZGRyLCAiYzBhODoxOjoiKQorCisgICAgZGVmIHRlc3RfbmVnYXRpdmVfaW50c19yZWplY3RlZChzZWxmKToKKyAgICAgICAgbXNnID0gIi0xICg8IDApIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NiBhZGRyZXNzIgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cpKToKKyAgICAgICAgICAgIHNlbGYuZmFjdG9yeSgtMSkKKworICAgIGRlZiB0ZXN0X2xhcmdlX2ludHNfcmVqZWN0ZWQoc2VsZik6CisgICAgICAgIG1zZyA9ICIlZCAoPj0gMioqMTI4KSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdjYgYWRkcmVzcyIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnICUgMioqMTI4KSk6CisgICAgICAgICAgICBzZWxmLmZhY3RvcnkoMioqMTI4KQorCisgICAgZGVmIHRlc3RfYmFkX3BhY2tlZF9sZW5ndGgoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRMZW5ndGgobGVuZ3RoKToKKyAgICAgICAgICAgIGFkZHIgPSBieXRlcyhsZW5ndGgpCisgICAgICAgICAgICBtc2cgPSAiJXIgKGxlbiAlZCAhPSAxNikgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHY2IGFkZHJlc3MiCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cgJSAoYWRkciwgbGVuZ3RoKSkpOgorICAgICAgICAgICAgICAgIHNlbGYuZmFjdG9yeShhZGRyKQorICAgICAgICAgICAgICAgIHNlbGYuZmFjdG9yeShhZGRyKQorCisgICAgICAgIGFzc2VydEJhZExlbmd0aCgxNSkKKyAgICAgICAgYXNzZXJ0QmFkTGVuZ3RoKDE3KQorCisKK2NsYXNzIEFkZHJlc3NUZXN0Q2FzZV92NChCYXNlVGVzdENhc2UsIENvbW1vblRlc3RNaXhpbl92NCk6CisgICAgZmFjdG9yeSA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcworCisgICAgZGVmIHRlc3RfbmV0d29ya19wYXNzZWRfYXNfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgYWRkciA9ICIxMjcuMC4wLjEvMjQiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIlVuZXhwZWN0ZWQgJy8nIGluICVyIiwgYWRkcik6CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoYWRkcikKKworICAgIGRlZiB0ZXN0X2JhZF9hZGRyZXNzX3NwbGl0KHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkU3BsaXQoYWRkcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKCJFeHBlY3RlZCA0IG9jdGV0cyBpbiAlciIsIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIxMjcuMC4xIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjQyLjQyLjQyLjQyLjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjQyLjQyLjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjQyLjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjQyLi40Mi40Mi40MiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI0Mi40Mi40Mi40Mi4iKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiNDIuNDIuNDIuNDIuLi4iKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiLjQyLjQyLjQyLjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIi4uLjQyLjQyLjQyLjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjAxNi4wMTYuMDE2IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjAxNi4wMTYiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMDE2IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjAwMCIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIweDBhLjB4MGEuMHgwYSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIweDBhLjB4MGEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMHgwYSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIuIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoImJvZ3VzIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoImJvZ3VzLmNvbSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIxMDAwIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjEwMDAwMDAwMDAwMDAwMDAiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMTkyLjE2OC4wLjEuY29tIikKKworICAgIGRlZiB0ZXN0X2VtcHR5X29jdGV0KHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkT2N0ZXQoYWRkcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKCJFbXB0eSBvY3RldCBub3QgcGVybWl0dGVkIGluICVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCI0Mi4uNDIuNDIiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiLi4uIikKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfY2hhcmFjdGVycyhzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZE9jdGV0KGFkZHIsIG9jdGV0KToKKyAgICAgICAgICAgIG1zZyA9ICJPbmx5IGRlY2ltYWwgZGlnaXRzIHBlcm1pdHRlZCBpbiAlciBpbiAlciIgJSAob2N0ZXQsIGFkZHIpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cpKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRPY3RldCgiMHgwYS4weDBhLjB4MGEuMHgwYSIsICIweDBhIikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjB4YS4weDBhLjB4MGEuMHgwYSIsICIweGEiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiNDIuNDIuNDIuLTAiLCAiLTAiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiNDIuNDIuNDIuKzAiLCAiKzAiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiNDIuNDIuNDIuLTQyIiwgIi00MiIpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIrMS4rMi4rMy40IiwgIisxIikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjEuMi4zLjRlMCIsICI0ZTAiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiMS4yLjMuNDo6IiwgIjQ6OiIpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIxLmEuMi4zIiwgImEiKQorCisgICAgZGVmIHRlc3Rfb2N0YWxfZGVjaW1hbF9hbWJpZ3VpdHkoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRPY3RldChhZGRyLCBvY3RldCk6CisgICAgICAgICAgICBtc2cgPSAiQW1iaWd1b3VzIChvY3RhbC9kZWNpbWFsKSB2YWx1ZSBpbiAlciBub3QgcGVybWl0dGVkIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnICUgKG9jdGV0LCBhZGRyKSkpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIwMTYuMDE2LjAxNi4wMTYiLCAiMDE2IikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjAwMS4wMDAuMDA4LjAxNiIsICIwMDgiKQorCisgICAgZGVmIHRlc3Rfb2N0ZXRfbGVuZ3RoKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkT2N0ZXQoYWRkciwgb2N0ZXQpOgorICAgICAgICAgICAgbXNnID0gIkF0IG1vc3QgMyBjaGFyYWN0ZXJzIHBlcm1pdHRlZCBpbiAlciBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZyAlIChvY3RldCwgYWRkcikpKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRPY3RldCgiMDAwMC4wMDAuMDAwLjAwMCIsICIwMDAwIikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjEyMzQ1LjY3ODk5Li01NDMyMS4tOTg3NjUiLCAiMTIzNDUiKQorCisgICAgZGVmIHRlc3Rfb2N0ZXRfbGltaXQoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRPY3RldChhZGRyLCBvY3RldCk6CisgICAgICAgICAgICBtc2cgPSAiT2N0ZXQgJWQgKD4gMjU1KSBub3QgcGVybWl0dGVkIGluICVyIiAlIChvY3RldCwgYWRkcikKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZykpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIyNTcuMC4wLjAiLCAyNTcpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIxOTIuMTY4LjAuOTk5IiwgOTk5KQorCisKK2NsYXNzIEFkZHJlc3NUZXN0Q2FzZV92NihCYXNlVGVzdENhc2UsIENvbW1vblRlc3RNaXhpbl92Nik6CisgICAgZmFjdG9yeSA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcworCisgICAgZGVmIHRlc3RfbmV0d29ya19wYXNzZWRfYXNfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgYWRkciA9ICI6OjEvMjQiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIlVuZXhwZWN0ZWQgJy8nIGluICVyIiwgYWRkcik6CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgIGRlZiB0ZXN0X2JhZF9hZGRyZXNzX3NwbGl0X3Y2X25vdF9lbm91Z2hfcGFydHMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRTcGxpdChhZGRyKToKKyAgICAgICAgICAgIG1zZyA9ICJBdCBsZWFzdCAzIHBhcnRzIGV4cGVjdGVkIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihtc2csIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIkZFREM6OTg3OCIpCisKKyAgICBkZWYgdGVzdF9iYWRfYWRkcmVzc19zcGxpdF92Nl90b29fbWFueV9jb2xvbnMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRTcGxpdChhZGRyKToKKyAgICAgICAgICAgIG1zZyA9ICJBdCBtb3N0IDggY29sb25zIHBlcm1pdHRlZCBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IobXNnLCBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOTo4Ojc6Njo1OjQ6Mzo6MjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjEwOjk6ODo3OjY6NTo0OjM6MjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjo6ODo3OjY6NTo0OjM6MjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjg6Nzo2OjU6NDozOjI6MTo6IikKKyAgICAgICAgIyBBIHRyYWlsaW5nIElQdjQgYWRkcmVzcyBpcyB0d28gcGFydHMKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjEwOjk6ODo3OjY6NTo0OjM6NDIuNDIuNDIuNDIiKQorCisgICAgZGVmIHRlc3RfYmFkX2FkZHJlc3Nfc3BsaXRfdjZfdG9vX21hbnlfcGFydHMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRTcGxpdChhZGRyKToKKyAgICAgICAgICAgIG1zZyA9ICJFeGFjdGx5IDggcGFydHMgZXhwZWN0ZWQgd2l0aG91dCAnOjonIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihtc2csIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIzZmZlOjA6MDowOjA6MDowOjA6MSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI5Ojg6Nzo2OjU6NDozOjI6MSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI3OjY6NTo0OjM6MjoxIikKKyAgICAgICAgIyBBIHRyYWlsaW5nIElQdjQgYWRkcmVzcyBpcyB0d28gcGFydHMKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjk6ODo3OjY6NTo0OjM6NDIuNDIuNDIuNDIiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiNzo2OjU6NDozOjQyLjQyLjQyLjQyIikKKworICAgIGRlZiB0ZXN0X2JhZF9hZGRyZXNzX3NwbGl0X3Y2X3Rvb19tYW55X3BhcnRzX3dpdGhfZG91YmxlX2NvbG9uKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkU3BsaXQoYWRkcik6CisgICAgICAgICAgICBtc2cgPSAiRXhwZWN0ZWQgYXQgbW9zdCA3IG90aGVyIHBhcnRzIHdpdGggJzo6JyBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IobXNnLCBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMToyOjM6NDo6NTo2Ojc6OCIpCisKKyAgICBkZWYgdGVzdF9iYWRfYWRkcmVzc19zcGxpdF92Nl9yZXBlYXRlZF9kb3VibGVfY29sb24oc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRTcGxpdChhZGRyKToKKyAgICAgICAgICAgIG1zZyA9ICJBdCBtb3N0IG9uZSAnOjonIHBlcm1pdHRlZCBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IobXNnLCBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRTcGxpdCgiM2ZmZTo6MTo6MSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIxOjoyOjozOjo0OjUiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMjAwMTo6ZGI6OjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjNmZmU6OjE6OiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6OjNmZmU6OjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjNmZmU6OjE6OjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiM2ZmZTo6MTo6MToiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjNmZmU6OjE6OjE6IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjo6OiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCcyMDAxOmRiODo6OjEnKQorCisgICAgZGVmIHRlc3RfYmFkX2FkZHJlc3Nfc3BsaXRfdjZfbGVhZGluZ19jb2xvbihzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZFNwbGl0KGFkZHIpOgorICAgICAgICAgICAgbXNnID0gIkxlYWRpbmcgJzonIG9ubHkgcGVybWl0dGVkIGFzIHBhcnQgb2YgJzo6JyBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IobXNnLCBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjIwMDE6ZGI4OjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjoxOjI6Mzo0OjU6Njo3IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjoxOjI6Mzo0OjU6NjoiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjY6NTo0OjM6MjoxOjoiKQorCisgICAgZGVmIHRlc3RfYmFkX2FkZHJlc3Nfc3BsaXRfdjZfdHJhaWxpbmdfY29sb24oc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRTcGxpdChhZGRyKToKKyAgICAgICAgICAgIG1zZyA9ICJUcmFpbGluZyAnOicgb25seSBwZXJtaXR0ZWQgYXMgcGFydCBvZiAnOjonIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihtc2csIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIyMDAxOmRiODo6MToiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMToyOjM6NDo1OjY6NzoiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjoxLjIuMy40OiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6Ojc6Njo1OjQ6MzoyOiIpCisKKyAgICBkZWYgdGVzdF9iYWRfdjRfcGFydF9pbihzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZEFkZHJlc3NQYXJ0KGFkZHIsIHY0X2Vycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIiVzIGluICVyIiwgdjRfZXJyb3IsIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3NQYXJ0KCIzZmZlOjoxLm5ldCIsICJFeHBlY3RlZCA0IG9jdGV0cyBpbiAnMS5uZXQnIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzc1BhcnQoIjNmZmU6OjEyNy4wLjEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgNCBvY3RldHMgaW4gJzEyNy4wLjEnIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzc1BhcnQoIjo6MS4yLjMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgNCBvY3RldHMgaW4gJzEuMi4zJyIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3NQYXJ0KCI6OjEuMi4zLjQuNSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCA0IG9jdGV0cyBpbiAnMS4yLjMuNC41JyIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3NQYXJ0KCIzZmZlOjoxLjEuMS5uZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT25seSBkZWNpbWFsIGRpZ2l0cyBwZXJtaXR0ZWQgaW4gJ25ldCcgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gJzEuMS4xLm5ldCciKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jaGFyYWN0ZXJzKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkUGFydChhZGRyLCBwYXJ0KToKKyAgICAgICAgICAgIG1zZyA9ICJPbmx5IGhleCBkaWdpdHMgcGVybWl0dGVkIGluICVyIGluICVyIiAlIChwYXJ0LCBhZGRyKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnKSk6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkUGFydCgiM2ZmZTo6Z29vZyIsICJnb29nIikKKyAgICAgICAgYXNzZXJ0QmFkUGFydCgiM2ZmZTo6LTAiLCAiLTAiKQorICAgICAgICBhc3NlcnRCYWRQYXJ0KCIzZmZlOjorMCIsICIrMCIpCisgICAgICAgIGFzc2VydEJhZFBhcnQoIjNmZmU6Oi0xIiwgIi0xIikKKyAgICAgICAgYXNzZXJ0QmFkUGFydCgiMS4yLjMuNDo6IiwgIjEuMi4zLjQiKQorICAgICAgICBhc3NlcnRCYWRQYXJ0KCcxMjM0OmF4eTo6YicsICJheHkiKQorCisgICAgZGVmIHRlc3RfcGFydF9sZW5ndGgoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRQYXJ0KGFkZHIsIHBhcnQpOgorICAgICAgICAgICAgbXNnID0gIkF0IG1vc3QgNCBjaGFyYWN0ZXJzIHBlcm1pdHRlZCBpbiAlciBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IobXNnLCBwYXJ0LCBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRQYXJ0KCI6OjAwMDAwIiwgIjAwMDAwIikKKyAgICAgICAgYXNzZXJ0QmFkUGFydCgiM2ZmZTo6MTAwMDAiLCAiMTAwMDAiKQorICAgICAgICBhc3NlcnRCYWRQYXJ0KCIwMjAwMTpkYjg6OiIsICIwMjAwMSIpCisgICAgICAgIGFzc2VydEJhZFBhcnQoJzIwMDE6ODg4ODg4OjoxJywgIjg4ODg4OCIpCisKKworY2xhc3MgTmV0bWFza1Rlc3RNaXhpbl92NChDb21tb25UZXN0TWl4aW5fdjQpOgorICAgICIiIklucHV0IHZhbGlkYXRpb24gb24gaW50ZXJmYWNlcyBhbmQgbmV0d29ya3MgaXMgdmVyeSBzaW1pbGFyIiIiCisKKyAgICBkZWYgdGVzdF9zcGxpdF9uZXRtYXNrKHNlbGYpOgorICAgICAgICBhZGRyID0gIjEuMi4zLjQvMzIvMjQiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIk9ubHkgb25lICcvJyBwZXJtaXR0ZWQgaW4gJXIiICUgYWRkcik6CisgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfZXJyb3JzKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkQWRkcmVzcyhhZGRyLCBkZXRhaWxzKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoZGV0YWlscyk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWN0b3J5KGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiLyIsICJBZGRyZXNzIGNhbm5vdCBiZSBlbXB0eSIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3MoIi84IiwgIkFkZHJlc3MgY2Fubm90IGJlIGVtcHR5IikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiYm9ndXMiLCAiRXhwZWN0ZWQgNCBvY3RldHMiKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCJnb29nbGUuY29tIiwgIkV4cGVjdGVkIDQgb2N0ZXRzIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiMTAvOCIsICJFeHBlY3RlZCA0IG9jdGV0cyIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3MoIjo6MS4yLjMuNCIsICJPbmx5IGRlY2ltYWwgZGlnaXRzIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiMS4yLjMuMjU2IiwgcmUuZXNjYXBlKCIyNTYgKD4gMjU1KSIpKQorCisgICAgZGVmIHRlc3RfbmV0bWFza19lcnJvcnMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWROZXRtYXNrKGFkZHIsIG5ldG1hc2spOgorICAgICAgICAgICAgbXNnID0gIiVyIGlzIG5vdCBhIHZhbGlkIG5ldG1hc2siCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0TmV0bWFza0Vycm9yKG1zZyAlIG5ldG1hc2spOgorICAgICAgICAgICAgICAgIHNlbGYuZmFjdG9yeSgiJXMvJXMiICUgKGFkZHIsIG5ldG1hc2spKQorCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjEuMi4zLjQiLCAiIikKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiMS4yLjMuNCIsICIzMyIpCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjEuMi4zLjQiLCAiMjU0LjI1NC4yNTUuMjU2IikKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiMS4xLjEuMSIsICIyNTQueHl6LjIuMyIpCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjEuMS4xLjEiLCAiMjQwLjI1NS4wLjAiKQorICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCIxLjEuMS4xIiwgInB1ZGRpbmciKQorCitjbGFzcyBJbnRlcmZhY2VUZXN0Q2FzZV92NChCYXNlVGVzdENhc2UsIE5ldG1hc2tUZXN0TWl4aW5fdjQpOgorICAgIGZhY3RvcnkgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZQorCitjbGFzcyBOZXR3b3JrVGVzdENhc2VfdjQoQmFzZVRlc3RDYXNlLCBOZXRtYXNrVGVzdE1peGluX3Y0KToKKyAgICBmYWN0b3J5ID0gaXBhZGRyZXNzLklQdjROZXR3b3JrCisKKworY2xhc3MgTmV0bWFza1Rlc3RNaXhpbl92NihDb21tb25UZXN0TWl4aW5fdjYpOgorICAgICIiIklucHV0IHZhbGlkYXRpb24gb24gaW50ZXJmYWNlcyBhbmQgbmV0d29ya3MgaXMgdmVyeSBzaW1pbGFyIiIiCisKKyAgICBkZWYgdGVzdF9zcGxpdF9uZXRtYXNrKHNlbGYpOgorICAgICAgICBhZGRyID0gImNhZmU6Y2FmZTo6LzEyOC8xOTAiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIk9ubHkgb25lICcvJyBwZXJtaXR0ZWQgaW4gJXIiICUgYWRkcik6CisgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfZXJyb3JzKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkQWRkcmVzcyhhZGRyLCBkZXRhaWxzKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoZGV0YWlscyk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWN0b3J5KGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiLyIsICJBZGRyZXNzIGNhbm5vdCBiZSBlbXB0eSIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3MoIi84IiwgIkFkZHJlc3MgY2Fubm90IGJlIGVtcHR5IikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiZ29vZ2xlLmNvbSIsICJBdCBsZWFzdCAzIHBhcnRzIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiMS4yLjMuNCIsICJBdCBsZWFzdCAzIHBhcnRzIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiMTAvOCIsICJBdCBsZWFzdCAzIHBhcnRzIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiMTIzNDpheHk6OmIiLCAiT25seSBoZXggZGlnaXRzIikKKworICAgIGRlZiB0ZXN0X25ldG1hc2tfZXJyb3JzKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkTmV0bWFzayhhZGRyLCBuZXRtYXNrKToKKyAgICAgICAgICAgIG1zZyA9ICIlciBpcyBub3QgYSB2YWxpZCBuZXRtYXNrIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydE5ldG1hc2tFcnJvcihtc2cgJSBuZXRtYXNrKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhY3RvcnkoIiVzLyVzIiAlIChhZGRyLCBuZXRtYXNrKSkKKworICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCI6OjEiLCAiIikKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiOjoxIiwgIjo6MSIpCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjo6MSIsICIxOjoiKQorICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCI6OjEiLCAiMTI5IikKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiOjoxIiwgInB1ZGRpbmciKQorCitjbGFzcyBJbnRlcmZhY2VUZXN0Q2FzZV92NihCYXNlVGVzdENhc2UsIE5ldG1hc2tUZXN0TWl4aW5fdjYpOgorICAgIGZhY3RvcnkgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZQorCitjbGFzcyBOZXR3b3JrVGVzdENhc2VfdjYoQmFzZVRlc3RDYXNlLCBOZXRtYXNrVGVzdE1peGluX3Y2KToKKyAgICBmYWN0b3J5ID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrCisKKworY2xhc3MgRmFjdG9yeUZ1bmN0aW9uRXJyb3JzKEJhc2VUZXN0Q2FzZSk6CisKKyAgICBkZWYgYXNzZXJ0RmFjdG9yeUVycm9yKHNlbGYsIGZhY3RvcnksIGtpbmQpOgorICAgICAgICAiIiJFbnN1cmUgYSBjbGVhbiBWYWx1ZUVycm9yIHdpdGggdGhlIGV4cGVjdGVkIG1lc3NhZ2UiIiIKKyAgICAgICAgYWRkciA9ICJjYW1lbG90IgorICAgICAgICBtc2cgPSAnJXIgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGFuIElQdjQgb3IgSVB2NiAlcycKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydENsZWFuRXJyb3IoVmFsdWVFcnJvciwgbXNnLCBhZGRyLCBraW5kKToKKyAgICAgICAgICAgIGZhY3RvcnkoYWRkcikKKworICAgIGRlZiB0ZXN0X2lwX2FkZHJlc3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFjdG9yeUVycm9yKGlwYWRkcmVzcy5pcF9hZGRyZXNzLCAiYWRkcmVzcyIpCisKKyAgICBkZWYgdGVzdF9pcF9pbnRlcmZhY2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFjdG9yeUVycm9yKGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UsICJpbnRlcmZhY2UiKQorCisgICAgZGVmIHRlc3RfaXBfbmV0d29yayhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWN0b3J5RXJyb3IoaXBhZGRyZXNzLmlwX25ldHdvcmssICJuZXR3b3JrIikKKworCitjbGFzcyBDb21wYXJpc29uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgdjRhZGRyID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKDEpCisgICAgdjRuZXQgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoMSkKKyAgICB2NGludGYgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgxKQorICAgIHY2YWRkciA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygxKQorICAgIHY2bmV0ID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrKDEpCisgICAgdjZpbnRmID0gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoMSkKKworICAgIHY0X2FkZHJlc3NlcyA9IFt2NGFkZHIsIHY0aW50Zl0KKyAgICB2NF9vYmplY3RzID0gdjRfYWRkcmVzc2VzICsgW3Y0bmV0XQorICAgIHY2X2FkZHJlc3NlcyA9IFt2NmFkZHIsIHY2aW50Zl0KKyAgICB2Nl9vYmplY3RzID0gdjZfYWRkcmVzc2VzICsgW3Y2bmV0XQorICAgIG9iamVjdHMgPSB2NF9vYmplY3RzICsgdjZfb2JqZWN0cworCisgICAgZGVmIHRlc3RfZm9yZWlnbl90eXBlX2VxdWFsaXR5KHNlbGYpOgorICAgICAgICAjIF9fZXFfXyBzaG91bGQgbmV2ZXIgcmFpc2UgVHlwZUVycm9yIGRpcmVjdGx5CisgICAgICAgIG90aGVyID0gb2JqZWN0KCkKKyAgICAgICAgZm9yIG9iaiBpbiBzZWxmLm9iamVjdHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9iaiwgb3RoZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9iaiA9PSBvdGhlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLl9fZXFfXyhvdGhlciksIE5vdEltcGxlbWVudGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmouX19uZV9fKG90aGVyKSwgTm90SW1wbGVtZW50ZWQpCisKKyAgICBkZWYgdGVzdF9taXhlZF90eXBlX2VxdWFsaXR5KHNlbGYpOgorICAgICAgICAjIEVuc3VyZSBub25lIG9mIHRoZSBpbnRlcm5hbCBvYmplY3RzIGFjY2lkZW50YWxseQorICAgICAgICAjIGV4cG9zZSB0aGUgcmlnaHQgc2V0IG9mIGF0dHJpYnV0ZXMgdG8gYmVjb21lICJlcXVhbCIKKyAgICAgICAgZm9yIGxocyBpbiBzZWxmLm9iamVjdHM6CisgICAgICAgICAgICBmb3IgcmhzIGluIHNlbGYub2JqZWN0czoKKyAgICAgICAgICAgICAgICBpZiBsaHMgaXMgcmhzOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGhzLCByaHMpCisKKyAgICBkZWYgdGVzdF9jb250YWlubWVudChzZWxmKToKKyAgICAgICAgZm9yIG9iaiBpbiBzZWxmLnY0X2FkZHJlc3NlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob2JqLCBzZWxmLnY0bmV0KQorICAgICAgICBmb3Igb2JqIGluIHNlbGYudjZfYWRkcmVzc2VzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihvYmosIHNlbGYudjZuZXQpCisgICAgICAgIGZvciBvYmogaW4gc2VsZi52NF9vYmplY3RzICsgW3NlbGYudjZuZXRdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihvYmosIHNlbGYudjZuZXQpCisgICAgICAgIGZvciBvYmogaW4gc2VsZi52Nl9vYmplY3RzICsgW3NlbGYudjRuZXRdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihvYmosIHNlbGYudjRuZXQpCisKKyAgICBkZWYgdGVzdF9taXhlZF90eXBlX29yZGVyaW5nKHNlbGYpOgorICAgICAgICBmb3IgbGhzIGluIHNlbGYub2JqZWN0czoKKyAgICAgICAgICAgIGZvciByaHMgaW4gc2VsZi5vYmplY3RzOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobGhzLCB0eXBlKHJocykpIG9yIGlzaW5zdGFuY2UocmhzLCB0eXBlKGxocykpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBsaHMgPCByaHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IGxocyA+IHJocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbGhzIDw9IHJocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbGhzID49IHJocykKKworICAgIGRlZiB0ZXN0X21peGVkX3R5cGVfa2V5KHNlbGYpOgorICAgICAgICAjIHdpdGggZ2V0X21peGVkX3R5cGVfa2V5LCB5b3UgY2FuIHNvcnQgYWRkcmVzc2VzIGFuZCBuZXR3b3JrLgorICAgICAgICB2NF9vcmRlcmVkID0gW3NlbGYudjRhZGRyLCBzZWxmLnY0bmV0LCBzZWxmLnY0aW50Zl0KKyAgICAgICAgdjZfb3JkZXJlZCA9IFtzZWxmLnY2YWRkciwgc2VsZi52Nm5ldCwgc2VsZi52NmludGZdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodjRfb3JkZXJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoc2VsZi52NF9vYmplY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9aXBhZGRyZXNzLmdldF9taXhlZF90eXBlX2tleSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodjZfb3JkZXJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoc2VsZi52Nl9vYmplY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9aXBhZGRyZXNzLmdldF9taXhlZF90eXBlX2tleSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodjRfb3JkZXJlZCArIHY2X29yZGVyZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkKHNlbGYub2JqZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PWlwYWRkcmVzcy5nZXRfbWl4ZWRfdHlwZV9rZXkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vdEltcGxlbWVudGVkLCBpcGFkZHJlc3MuZ2V0X21peGVkX3R5cGVfa2V5KG9iamVjdCkpCisKKyAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGVfdmVyc2lvbnMoc2VsZik6CisgICAgICAgICMgVGhlc2Ugc2hvdWxkIGFsd2F5cyByYWlzZSBUeXBlRXJyb3IKKyAgICAgICAgdjRhZGRyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjEnKQorICAgICAgICB2NG5ldCA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4xJykKKyAgICAgICAgdjZhZGRyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MScpCisgICAgICAgIHY2bmV0ID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB2NGFkZHIuX19sdF9fLCB2NmFkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdjRhZGRyLl9fZ3RfXywgdjZhZGRyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHY0bmV0Ll9fbHRfXywgdjZuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdjRuZXQuX19ndF9fLCB2Nm5ldCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHY2YWRkci5fX2x0X18sIHY0YWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB2NmFkZHIuX19ndF9fLCB2NGFkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdjZuZXQuX19sdF9fLCB2NG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB2Nm5ldC5fX2d0X18sIHY0bmV0KQorCisKKworY2xhc3MgSXBhZGRyVW5pdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmlwdjRfYWRkcmVzcyA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4yLjMuNCcpCisgICAgICAgIHNlbGYuaXB2NF9pbnRlcmZhY2UgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8yNCcpCisgICAgICAgIHNlbGYuaXB2NF9uZXR3b3JrID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjIuMy4wLzI0JykKKyAgICAgICAgI3NlbGYuaXB2NF9ob3N0bWFzayA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxMC4wLjAuMS8wLjI1NS4yNTUuMjU1JykKKyAgICAgICAgc2VsZi5pcHY2X2FkZHJlc3MgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgKKyAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6MDowOjEnKQorICAgICAgICBzZWxmLmlwdjZfaW50ZXJmYWNlID0gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoCisgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjA6MDoxLzY0JykKKyAgICAgICAgc2VsZi5pcHY2X25ldHdvcmsgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6NjU4OjIyYTpjYWZlOjovNjQnKQorCisgICAgZGVmIHRlc3RSZXByKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJJUHY0SW50ZXJmYWNlKCcxLjIuMy40LzMyJykiLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjQnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIklQdjZJbnRlcmZhY2UoJzo6MS8xMjgnKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjoxJykpKQorCisgICAgIyBpc3N1ZTU3CisgICAgZGVmIHRlc3RBZGRyZXNzSW50TWF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjEnKSArIDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4yLjAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjEnKSAtIDI1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4wLjEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6MScpICsgKDIqKjE2IC0gMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OmZmZmYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6ZmZmZicpIC0gKDIqKjE2IC0gMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKSkKKworICAgIGRlZiB0ZXN0SW52YWxpZEludFRvQnl0ZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlwYWRkcmVzcy52NF9pbnRfdG9fcGFja2VkLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXBhZGRyZXNzLnY0X2ludF90b19wYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKiogaXBhZGRyZXNzLklQVjRMRU5HVEgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlwYWRkcmVzcy52Nl9pbnRfdG9fcGFja2VkLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXBhZGRyZXNzLnY2X2ludF90b19wYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKiogaXBhZGRyZXNzLklQVjZMRU5HVEgpCisKKyAgICBkZWYgdGVzdEludGVybmFscyhzZWxmKToKKyAgICAgICAgZmlyc3QsIGxhc3QgPSBpcGFkZHJlc3MuX2ZpbmRfYWRkcmVzc19yYW5nZShbCisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEwLjEwLjEwLjEwJyksCisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEwLjEwLjEwLjEyJyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpcnN0LCBsYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyOCwgaXBhZGRyZXNzLl9jb3VudF9yaWdodGhhbmRfemVyb19iaXRzKDAsIDEyOCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIklQdjROZXR3b3JrKCcxLjIuMy4wLzI0JykiLCByZXByKHNlbGYuaXB2NF9uZXR3b3JrKSkKKworICAgIGRlZiB0ZXN0TWlzc2luZ0FkZHJlc3NWZXJzaW9uKHNlbGYpOgorICAgICAgICBjbGFzcyBCcm9rZW4oaXBhZGRyZXNzLl9CYXNlQWRkcmVzcyk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGJyb2tlbiA9IEJyb2tlbignMTI3LjAuMC4xJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KE5vdEltcGxlbWVudGVkRXJyb3IsICJCcm9rZW4uKnZlcnNpb24iKToKKyAgICAgICAgICAgIGJyb2tlbi52ZXJzaW9uCisKKyAgICBkZWYgdGVzdE1pc3NpbmdOZXR3b3JrVmVyc2lvbihzZWxmKToKKyAgICAgICAgY2xhc3MgQnJva2VuKGlwYWRkcmVzcy5fQmFzZU5ldHdvcmspOgorICAgICAgICAgICAgcGFzcworICAgICAgICBicm9rZW4gPSBCcm9rZW4oJzEyNy4wLjAuMScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChOb3RJbXBsZW1lbnRlZEVycm9yLCAiQnJva2VuLip2ZXJzaW9uIik6CisgICAgICAgICAgICBicm9rZW4udmVyc2lvbgorCisgICAgZGVmIHRlc3RNaXNzaW5nQWRkcmVzc0NsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBCcm9rZW4oaXBhZGRyZXNzLl9CYXNlTmV0d29yayk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGJyb2tlbiA9IEJyb2tlbignMTI3LjAuMC4xJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KE5vdEltcGxlbWVudGVkRXJyb3IsICJCcm9rZW4uKmFkZHJlc3MiKToKKyAgICAgICAgICAgIGJyb2tlbi5fYWRkcmVzc19jbGFzcworCisgICAgZGVmIHRlc3RHZXROZXR3b3JrKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChzZWxmLmlwdjRfbmV0d29yay5uZXR3b3JrX2FkZHJlc3MpLCAxNjkwOTA1NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY0X25ldHdvcmsubmV0d29ya19hZGRyZXNzKSwgJzEuMi4zLjAnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHNlbGYuaXB2Nl9uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgNDI1NDA2MTY4MjkxODI0Njk0MzM0MDM2NDcyOTQwMjIwOTA3NTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2Nl9uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjZfbmV0d29yay5ob3N0bWFzayksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzo6ZmZmZjpmZmZmOmZmZmY6ZmZmZicpCisKKyAgICBkZWYgdGVzdElwRnJvbUludChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfaW50ZXJmYWNlLl9pcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgxNjkwOTA2MCkuX2lwKQorCisgICAgICAgIGlwdjQgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4yLjMuNCcpCisgICAgICAgIGlwdjYgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjA6MDoxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcHY0LCBpcGFkZHJlc3MuaXBfbmV0d29yayhpbnQoaXB2NC5uZXR3b3JrX2FkZHJlc3MpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcHY2LCBpcGFkZHJlc3MuaXBfbmV0d29yayhpbnQoaXB2Ni5uZXR3b3JrX2FkZHJlc3MpKSkKKworICAgICAgICB2Nl9pbnQgPSA0MjU0MDYxNjgyOTE4MjQ2OTQzMzU0Nzc2MjQ4MjA5Nzk0NjYyNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9pbnRlcmZhY2UuX2lwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKHY2X2ludCkuX2lwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLmlwX25ldHdvcmsoc2VsZi5pcHY0X2FkZHJlc3MuX2lwKS52ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLmlwX25ldHdvcmsoc2VsZi5pcHY2X2FkZHJlc3MuX2lwKS52ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIDYpCisKKyAgICBkZWYgdGVzdElwRnJvbVBhY2tlZChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X2ludGVyZmFjZS5faXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2ludGVyZmFjZShiJ1x4MDFceDAyXHgwM1x4MDQnKS5faXApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcygnMjU1LjI1NC4yNTMuMjUyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyhiJ1x4ZmZceGZlXHhmZFx4ZmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfaW50ZXJmYWNlLmlwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgICAgIGInXHgyMFx4MDFceDA2XHg1OFx4MDJceDJhXHhjYVx4ZmUnCisgICAgICAgICAgICAgICAgICAgIGInXHgwMlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDEnKS5pcCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzKCdmZmZmOjI6Mzo0OmZmZmY6OicpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MoYidceGZmXHhmZlx4MDBceDAyXHgwMFx4MDNceDAwXHgwNCcgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInXHhmZlx4ZmYnICsgYidceDAwJyAqIDYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MoJzo6JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyhiJ1x4MDAnICogMTYpKQorCisgICAgZGVmIHRlc3RHZXRJcChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoc2VsZi5pcHY0X2ludGVyZmFjZS5pcCksIDE2OTA5MDYwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjRfaW50ZXJmYWNlLmlwKSwgJzEuMi4zLjQnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHNlbGYuaXB2Nl9pbnRlcmZhY2UuaXApLAorICAgICAgICAgICAgICAgICAgICAgICAgIDQyNTQwNjE2ODI5MTgyNDY5NDMzNTQ3NzYyNDgyMDk3OTQ2NjI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjZfaW50ZXJmYWNlLmlwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxJykKKworICAgIGRlZiB0ZXN0R2V0TmV0bWFzayhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoc2VsZi5pcHY0X25ldHdvcmsubmV0bWFzayksIDQyOTQ5NjcwNDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2NF9uZXR3b3JrLm5ldG1hc2spLCAnMjU1LjI1NS4yNTUuMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHNlbGYuaXB2Nl9uZXR3b3JrLm5ldG1hc2spLAorICAgICAgICAgICAgICAgICAgICAgICAgIDM0MDI4MjM2NjkyMDkzODQ2MzQ0NDkyNzg2MzM1ODA1ODY1OTg0MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5wcmVmaXhsZW4sIDY0KQorCisgICAgZGVmIHRlc3RaZXJvTmV0bWFzayhzZWxmKToKKyAgICAgICAgaXB2NF96ZXJvX25ldG1hc2sgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoaXB2NF96ZXJvX25ldG1hc2submV0d29yay5uZXRtYXNrKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwdjRfemVyb19uZXRtYXNrLm5ldHdvcmsuX2lzX3ZhbGlkX25ldG1hc2soCisgICAgICAgICAgICAgICAgc3RyKDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwdjRfemVyb19uZXRtYXNrLl9pc192YWxpZF9uZXRtYXNrKCcwJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcHY0X3plcm9fbmV0bWFzay5faXNfdmFsaWRfbmV0bWFzaygnMC4wLjAuMCcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwdjRfemVyb19uZXRtYXNrLl9pc192YWxpZF9uZXRtYXNrKCdpbnZhbGlkJykpCisKKyAgICAgICAgaXB2Nl96ZXJvX25ldG1hc2sgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjoxLzAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChpcHY2X3plcm9fbmV0bWFzay5uZXR3b3JrLm5ldG1hc2spLCAwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXB2Nl96ZXJvX25ldG1hc2submV0d29yay5faXNfdmFsaWRfbmV0bWFzaygKKyAgICAgICAgICAgICAgICBzdHIoMCkpKQorCisgICAgZGVmIHRlc3RJUHY0TmV0QW5kSG9zdG1hc2tzKHNlbGYpOgorICAgICAgICBuZXQgPSBzZWxmLmlwdjRfbmV0d29yaworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ldC5faXNfdmFsaWRfbmV0bWFzaygnaW52YWxpZCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobmV0Ll9pc192YWxpZF9uZXRtYXNrKCcxMjguMTI4LjEyOC4xMjgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXQuX2lzX3ZhbGlkX25ldG1hc2soJzEyOC4xMjguMTI4LjEyNycpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ldC5faXNfdmFsaWRfbmV0bWFzaygnMTI4LjEyOC4xMjguMjU1JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZXQuX2lzX3ZhbGlkX25ldG1hc2soJzI1NS4xMjguMTI4LjEyOCcpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV0Ll9pc19ob3N0bWFzaygnaW52YWxpZCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobmV0Ll9pc19ob3N0bWFzaygnMTI4LjI1NS4yNTUuMjU1JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV0Ll9pc19ob3N0bWFzaygnMjU1LjI1NS4yNTUuMjU1JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV0Ll9pc19ob3N0bWFzaygnMS4yLjMuNCcpKQorCisgICAgICAgIG5ldCA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMTI3LjAuMC4wLzAuMC4wLjI1NScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjQsIG5ldC5wcmVmaXhsZW4pCisKKyAgICBkZWYgdGVzdEdldEJyb2FkY2FzdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoc2VsZi5pcHY0X25ldHdvcmsuYnJvYWRjYXN0X2FkZHJlc3MpLCAxNjkwOTMxMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY0X25ldHdvcmsuYnJvYWRjYXN0X2FkZHJlc3MpLCAnMS4yLjMuMjU1JykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChzZWxmLmlwdjZfbmV0d29yay5icm9hZGNhc3RfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgNDI1NDA2MTY4MjkxODI0Njk0NTE4NTAzOTEzNjc3MzE2NDIzNjcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2Nl9uZXR3b3JrLmJyb2FkY2FzdF9hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6ZmZmZjpmZmZmOmZmZmY6ZmZmZicpCisKKyAgICBkZWYgdGVzdEdldFByZWZpeGxlbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfaW50ZXJmYWNlLm5ldHdvcmsucHJlZml4bGVuLCAyNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfaW50ZXJmYWNlLm5ldHdvcmsucHJlZml4bGVuLCA2NCkKKworICAgIGRlZiB0ZXN0R2V0U3VwZXJuZXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQoKS5wcmVmaXhsZW4sIDIzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjRfbmV0d29yay5zdXBlcm5ldCgpLm5ldHdvcmtfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEuMi4yLjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzAuMC4wLjAvMCcpLm5ldHdvcmsuc3VwZXJuZXQoKSwKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMC4wLjAuMC8wJykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5zdXBlcm5ldCgpLnByZWZpeGxlbiwgNjMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2Nl9uZXR3b3JrLnN1cGVybmV0KCkubmV0d29ya19hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6OicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6MC8wJykubmV0d29yay5zdXBlcm5ldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2TmV0d29yaygnOjowLzAnKSkKKworICAgIGRlZiB0ZXN0R2V0U3VwZXJuZXQzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9uZXR3b3JrLnN1cGVybmV0KDMpLnByZWZpeGxlbiwgMjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2NF9uZXR3b3JrLnN1cGVybmV0KDMpLm5ldHdvcmtfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEuMi4wLjAnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQoMykucHJlZml4bGVuLCA2MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQoMykubmV0d29ya19hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZjg6OicpCisKKyAgICBkZWYgdGVzdEdldFN1cGVybmV0NChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeGxlbl9kaWZmPTIsIG5ld19wcmVmaXg9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19wcmVmaXg9MjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQocHJlZml4bGVuX2RpZmY9MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQobmV3X3ByZWZpeD0yMikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeGxlbl9kaWZmPTIsIG5ld19wcmVmaXg9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19wcmVmaXg9NjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQocHJlZml4bGVuX2RpZmY9MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQobmV3X3ByZWZpeD02MikpCisKKyAgICBkZWYgdGVzdEhvc3RzKHNlbGYpOgorICAgICAgICBob3N0cyA9IGxpc3Qoc2VsZi5pcHY0X25ldHdvcmsuaG9zdHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyNTQsIGxlbihob3N0cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjIuMy4xJyksIGhvc3RzWzBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4yLjMuMjU0JyksIGhvc3RzWy0xXSkKKworICAgICAgICAjIHNwZWNpYWwgY2FzZSB3aGVyZSBvbmx5IDEgYml0IGlzIGxlZnQgZm9yIGFkZHJlc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcyLjAuMC4wJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMi4wLjAuMScpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyLjAuMC4wLzMxJykuaG9zdHMoKSkpCisKKyAgICBkZWYgdGVzdEZhbmN5U3VibmV0dGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cyhwcmVmaXhsZW5fZGlmZj0zKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkKHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMobmV3X3ByZWZpeD0yNykpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKG5ld19wcmVmaXg9MjMpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKHByZWZpeGxlbl9kaWZmPTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZml4PTI3KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoc2VsZi5pcHY2X25ldHdvcmsuc3VibmV0cyhwcmVmaXhsZW5fZGlmZj00KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkKHNlbGYuaXB2Nl9uZXR3b3JrLnN1Ym5ldHMobmV3X3ByZWZpeD02OCkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKG5ld19wcmVmaXg9NjMpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKHByZWZpeGxlbl9kaWZmPTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZml4PTY4KSkKKworICAgIGRlZiB0ZXN0R2V0U3VibmV0cyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMoKSlbMF0ucHJlZml4bGVuLCAyNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobGlzdCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cygpKVswXS5uZXR3b3JrX2FkZHJlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcxLjIuMy4wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobGlzdCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cygpKVsxXS5uZXR3b3JrX2FkZHJlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcxLjIuMy4xMjgnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKCkpWzBdLnByZWZpeGxlbiwgNjUpCisKKyAgICBkZWYgdGVzdEdldFN1Ym5ldEZvclNpbmdsZTMyKHNlbGYpOgorICAgICAgICBpcCA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4yLjMuNC8zMicpCisgICAgICAgIHN1Ym5ldHMxID0gW3N0cih4KSBmb3IgeCBpbiBpcC5zdWJuZXRzKCldCisgICAgICAgIHN1Ym5ldHMyID0gW3N0cih4KSBmb3IgeCBpbiBpcC5zdWJuZXRzKDIpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1Ym5ldHMxLCBbJzEuMi4zLjQvMzInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWJuZXRzMSwgc3VibmV0czIpCisKKyAgICBkZWYgdGVzdEdldFN1Ym5ldEZvclNpbmdsZTEyOChzZWxmKToKKyAgICAgICAgaXAgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzo6MS8xMjgnKQorICAgICAgICBzdWJuZXRzMSA9IFtzdHIoeCkgZm9yIHggaW4gaXAuc3VibmV0cygpXQorICAgICAgICBzdWJuZXRzMiA9IFtzdHIoeCkgZm9yIHggaW4gaXAuc3VibmV0cygyKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWJuZXRzMSwgWyc6OjEvMTI4J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VibmV0czEsIHN1Ym5ldHMyKQorCisgICAgZGVmIHRlc3RTdWJuZXQyKHNlbGYpOgorICAgICAgICBpcHMgPSBbc3RyKHgpIGZvciB4IGluIHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMoMildCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBpcHMsCisgICAgICAgICAgICBbJzEuMi4zLjAvMjYnLCAnMS4yLjMuNjQvMjYnLCAnMS4yLjMuMTI4LzI2JywgJzEuMi4zLjE5Mi8yNiddKQorCisgICAgICAgIGlwc3Y2ID0gW3N0cih4KSBmb3IgeCBpbiBzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKDIpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaXBzdjYsCisgICAgICAgICAgICBbJzIwMDE6NjU4OjIyYTpjYWZlOjovNjYnLAorICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTo0MDAwOjovNjYnLAorICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTo4MDAwOjovNjYnLAorICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTpjMDAwOjovNjYnXSkKKworICAgIGRlZiB0ZXN0U3VibmV0RmFpbHNGb3JMYXJnZUNpZHJEaWZmKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfaW50ZXJmYWNlLm5ldHdvcmsuc3VibmV0cyg5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cyg5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLnN1Ym5ldHMoNjUpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKDY1KSkKKworICAgIGRlZiB0ZXN0U3VwZXJuZXRGYWlsc0ZvckxhcmdlQ2lkckRpZmYoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9pbnRlcmZhY2UubmV0d29yay5zdXBlcm5ldCwgMjUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9pbnRlcmZhY2UubmV0d29yay5zdXBlcm5ldCwgNjUpCisKKyAgICBkZWYgdGVzdFN1Ym5ldEZhaWxzRm9yTmVnYXRpdmVDaWRyRGlmZihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X2ludGVyZmFjZS5uZXR3b3JrLnN1Ym5ldHMoLTEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLnN1Ym5ldHMoLTEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKC0xKSkKKworICAgIGRlZiB0ZXN0R2V0TnVtX0FkZHJlc3NlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfbmV0d29yay5udW1fYWRkcmVzc2VzLCAyNTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKCkpWzBdLm51bV9hZGRyZXNzZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgMTI4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9uZXR3b3JrLnN1cGVybmV0KCkubnVtX2FkZHJlc3NlcywgNTEyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X25ldHdvcmsubnVtX2FkZHJlc3NlcywgMTg0NDY3NDQwNzM3MDk1NTE2MTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKCkpWzBdLm51bV9hZGRyZXNzZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgOTIyMzM3MjAzNjg1NDc3NTgwOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5zdXBlcm5ldCgpLm51bV9hZGRyZXNzZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgMzY4OTM0ODgxNDc0MTkxMDMyMzIpCisKKyAgICBkZWYgdGVzdENvbnRhaW5zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjEyOC8yNScpIGluCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yaykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjQuMS8yNCcpIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmspCisgICAgICAgICMgV2UgY2FuIHRlc3QgYWRkcmVzc2VzIGFuZCBzdHJpbmcgYXMgd2VsbC4KKyAgICAgICAgYWRkcjEgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMi4zLjM3JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFkZHIxIGluIHNlbGYuaXB2NF9uZXR3b3JrKQorICAgICAgICAjIGlzc3VlIDYxLCBiYWQgbmV0d29yayBjb21wYXJpc29uIG9uIGxpa2UtaXAnZCBuZXR3b3JrIG9iamVjdHMKKyAgICAgICAgIyB3aXRoIGlkZW50aWNhbCBicm9hZGNhc3QgYWRkcmVzc2VzLgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjAuMC8xNicpLl9fY29udGFpbnNfXygKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMC4wLjAvMTUnKSkpCisKKyAgICBkZWYgdGVzdE50aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY0X25ldHdvcmtbNV0pLCAnMS4yLjMuNScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIHNlbGYuaXB2NF9uZXR3b3JrLl9fZ2V0aXRlbV9fLCAyNTYpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY2X25ldHdvcmtbNV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTo6NScpCisKKyAgICBkZWYgdGVzdEdldGl0ZW0oc2VsZik6CisgICAgICAgICMgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2lwYWRkci1weS9pc3N1ZXMvZGV0YWlsP2lkPTE1CisgICAgICAgIGFkZHIgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzE3Mi4zMS4yNTUuMTI4LzI1NS4yNTUuMjU1LjI0MCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjgsIGFkZHIucHJlZml4bGVuKQorICAgICAgICBhZGRyX2xpc3QgPSBsaXN0KGFkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzE3Mi4zMS4yNTUuMTI4Jywgc3RyKGFkZHJfbGlzdFswXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzE3Mi4zMS4yNTUuMTI4Jywgc3RyKGFkZHJbMF0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxNzIuMzEuMjU1LjE0MycsIHN0cihhZGRyX2xpc3RbLTFdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTcyLjMxLjI1NS4xNDMnLCBzdHIoYWRkclstMV0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfbGlzdFstMV0sIGFkZHJbLTFdKQorCisgICAgZGVmIHRlc3RFcXVhbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9pbnRlcmZhY2UgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40LzI0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY0X2ludGVyZmFjZSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40LzIzJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY0X2ludGVyZmFjZSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6OjEuMi4zLjQvMjQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjRfaW50ZXJmYWNlID09ICcnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2NF9pbnRlcmZhY2UgPT0gW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY0X2ludGVyZmFjZSA9PSAyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfaW50ZXJmYWNlID09CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxLzY0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY2X2ludGVyZmFjZSA9PQorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDo6MS82MycpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8yMycpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgPT0gJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY2X2ludGVyZmFjZSA9PSBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjZfaW50ZXJmYWNlID09IDIpCisKKyAgICBkZWYgdGVzdE5vdEVxdWFsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2NF9pbnRlcmZhY2UgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8yNCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2ludGVyZmFjZSAhPQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjQvMjMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9pbnRlcmZhY2UgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6OjEuMi4zLjQvMjQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9pbnRlcmZhY2UgIT0gJycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfaW50ZXJmYWNlICE9IFtdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2ludGVyZmFjZSAhPSAyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfYWRkcmVzcyAhPQorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4yLjMuNScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2FkZHJlc3MgIT0gJycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfYWRkcmVzcyAhPSBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9hZGRyZXNzICE9IDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjZfaW50ZXJmYWNlICE9CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxLzY0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfaW50ZXJmYWNlICE9CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxLzYzJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfaW50ZXJmYWNlICE9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8yMycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY2X2ludGVyZmFjZSAhPSAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgIT0gW10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfaW50ZXJmYWNlICE9IDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9hZGRyZXNzICE9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMi4zLjQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9hZGRyZXNzICE9ICcnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY2X2FkZHJlc3MgIT0gW10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfYWRkcmVzcyAhPSAyKQorCisgICAgZGVmIHRlc3RTbGFzaDMyQ29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKAorICAgICAgICAgICAgICAgICAgICAnMS4yLjMuNC8yNTUuMjU1LjI1NS4yNTUnKSksICcxLjIuMy40LzMyJykKKworICAgIGRlZiB0ZXN0U2xhc2gxMjhDb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6MS8xMjgnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzo6MS8xMjgnKQorCisgICAgZGVmIHRlc3RTbGFzaDBDb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjQvMC4wLjAuMCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJzEuMi4zLjQvMCcpCisKKyAgICBkZWYgdGVzdENvbGxhcHNpbmcoc2VsZik6CisgICAgICAgICMgdGVzdCBvbmx5IElQIGFkZHJlc3NlcyBpbmNsdWRpbmcgc29tZSBkdXBsaWNhdGVzCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMCcpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMScpCisgICAgICAgIGlwMyA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMicpCisgICAgICAgIGlwNCA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMycpCisgICAgICAgIGlwNSA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuNCcpCisgICAgICAgIGlwNiA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMCcpCisgICAgICAgICMgY2hlY2sgdGhhdCBhZGRyZXNlcyBhcmUgc3Vic3VtZWQgcHJvcGVybHkuCisgICAgICAgIGNvbGxhcHNlZCA9IGlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXMoCisgICAgICAgICAgICBbaXAxLCBpcDIsIGlwMywgaXA0LCBpcDUsIGlwNl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb2xsYXBzZWQpLAorICAgICAgICAgICAgICAgIFtpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4xLjAvMzAnKSwKKyAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMS40LzMyJyldKQorCisgICAgICAgICMgdGVzdCBhIG1peCBvZiBJUCBhZGRyZXNzZXMgYW5kIG5ldHdvcmtzIGluY2x1ZGluZyBzb21lIGR1cGxpY2F0ZXMKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4wJykKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4xJykKKyAgICAgICAgaXAzID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4yJykKKyAgICAgICAgaXA0ID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4zJykKKyAgICAgICAgI2lwNSA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjEuMS40LzMwJykKKyAgICAgICAgI2lwNiA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjEuMS40LzMwJykKKyAgICAgICAgIyBjaGVjayB0aGF0IGFkZHJlc2VzIGFyZSBzdWJzdW1lZCBwcm9wZXJseS4KKyAgICAgICAgY29sbGFwc2VkID0gaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcyhbaXAxLCBpcDIsIGlwMywgaXA0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvbGxhcHNlZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgW2lwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjEuMC8zMCcpXSkKKworICAgICAgICAjIHRlc3Qgb25seSBJUCBuZXR3b3JrcworICAgICAgICBpcDEgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4wLjAvMjQnKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4xLjAvMjQnKQorICAgICAgICBpcDMgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4yLjAvMjQnKQorICAgICAgICBpcDQgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4zLjAvMjQnKQorICAgICAgICBpcDUgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS40LjAvMjQnKQorICAgICAgICAjIHN0b3JlZCBpbiBubyBwYXJ0aWN1bGFyIG9yZGVyIGIvYyB3ZSB3YW50IENvbGxhcHNlQWRkciB0byBjYWxsCisgICAgICAgICMgW10uc29ydAorICAgICAgICBpcDYgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4wLjAvMjInKQorICAgICAgICAjIGNoZWNrIHRoYXQgYWRkcmVzZXMgYXJlIHN1YnN1bWVkIHByb3Blcmx5LgorICAgICAgICBjb2xsYXBzZWQgPSBpcGFkZHJlc3MuY29sbGFwc2VfYWRkcmVzc2VzKFtpcDEsIGlwMiwgaXAzLCBpcDQsIGlwNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXA2XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvbGxhcHNlZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgW2lwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjAuMC8yMicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS40LjAvMjQnKV0pCisKKyAgICAgICAgIyB0ZXN0IHRoYXQgdHdvIGFkZHJlc3NlcyBhcmUgc3VwZXJuZXQnZWQgcHJvcGVybHkKKyAgICAgICAgY29sbGFwc2VkID0gaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcyhbaXAxLCBpcDJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29sbGFwc2VkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMC4wLzIzJyldKQorCisgICAgICAgICMgdGVzdCBzYW1lIElQIG5ldHdvcmtzCisgICAgICAgIGlwX3NhbWUxID0gaXBfc2FtZTIgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4xLjEvMzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcygKKyAgICAgICAgICAgICAgICAgICAgW2lwX3NhbWUxLCBpcF9zYW1lMl0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbaXBfc2FtZTFdKQorCisgICAgICAgICMgdGVzdCBzYW1lIElQIGFkZHJlc3NlcworICAgICAgICBpcF9zYW1lMSA9IGlwX3NhbWUyID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4xJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXMoCisgICAgICAgICAgICAgICAgICAgIFtpcF9zYW1lMSwgaXBfc2FtZTJdKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgW2lwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4xLzMyJyldKQorICAgICAgICBpcDEgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6Oi8xMDAnKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6Oi8xMjAnKQorICAgICAgICBpcDMgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6Oi85NicpCisgICAgICAgICMgdGVzdCB0aGF0IGlwdjYgYWRkcmVzc2VzIGFyZSBzdWJzdW1lZCBwcm9wZXJseS4KKyAgICAgICAgY29sbGFwc2VkID0gaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcyhbaXAxLCBpcDIsIGlwM10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb2xsYXBzZWQpLCBbaXAzXSkKKworICAgICAgICAjIHRoZSB0b2VqYW0gdGVzdAorICAgICAgICBhZGRyX3R1cGxlcyA9IFsKKyAgICAgICAgICAgICAgICAoaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjEnKSwKKyAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MScpKSwKKyAgICAgICAgICAgICAgICAoaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMC4wLzI0JyksCisgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTo6LzEyMCcpKSwKKyAgICAgICAgICAgICAgICAoaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMC4wLzMyJyksCisgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTo6LzEyOCcpKSwKKyAgICAgICAgXQorICAgICAgICBmb3IgaXAxLCBpcDIgaW4gYWRkcl90dXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXAxLCBpcDJdKQorCisgICAgZGVmIHRlc3RTdW1tYXJpemluZyhzZWxmKToKKyAgICAgICAgI2lwID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MKKyAgICAgICAgI2lwbmV0ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsKKyAgICAgICAgc3VtbWFyaXplID0gaXBhZGRyZXNzLnN1bW1hcml6ZV9hZGRyZXNzX3JhbmdlCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjEuMS4wJykKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjI1NScpCisKKyAgICAgICAgIyBzdW1tYXJpemUgd29ya3Mgb25seSBmb3IgSVB2NCAmIElQdjYKKyAgICAgICAgY2xhc3MgSVB2N0FkZHJlc3MoaXBhZGRyZXNzLklQdjZBZGRyZXNzKToKKyAgICAgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICAgICAgZGVmIHZlcnNpb24oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDcKKyAgICAgICAgaXBfaW52YWxpZDEgPSBJUHY3QWRkcmVzcygnOjoxJykKKyAgICAgICAgaXBfaW52YWxpZDIgPSBJUHY3QWRkcmVzcygnOjoxJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyaXplKGlwX2ludmFsaWQxLCBpcF9pbnZhbGlkMikpCisgICAgICAgICMgdGVzdCB0aGF0IGEgc3VtbWFyeSBvdmVyIGlwNCAmIGlwNiBmYWlscworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcml6ZShpcDEsIGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjoxJykpKQorICAgICAgICAjIHRlc3QgYSAvMjQgaXMgc3VtbWFyaXplZCBwcm9wZXJseQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3VtbWFyaXplKGlwMSwgaXAyKSlbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjAvMjQnKSkKKyAgICAgICAgIyB0ZXN0IGFuICBJUHY0IHJhbmdlIHRoYXQgaXNuJ3Qgb24gYSBuZXR3b3JrIGJ5dGUgYm91bmRhcnkKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3VtbWFyaXplKGlwMSwgaXAyKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgW2lwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4wLzI5JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS44JyldKQorICAgICAgICAjIGFsbCEKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKDApCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhpcGFkZHJlc3MuSVB2NEFkZHJlc3MuX0FMTF9PTkVTKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzAuMC4wLjAvMCcpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHN1bW1hcml6ZShpcDEsIGlwMikpKQorCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOjonKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmJykKKyAgICAgICAgIyB0ZXN0IGEgSVB2NiBpcyBzdW1hbXJpemVkIHByb3Blcmx5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdW1tYXJpemUoaXAxLCBpcDIpKVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTo6LzE2JykpCisgICAgICAgICMgdGVzdCBhbiBJUHY2IHJhbmdlIHRoYXQgaXNuJ3Qgb24gYSBuZXR3b3JrIGJ5dGUgYm91bmRhcnkKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzI6OicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdW1tYXJpemUoaXAxLCBpcDIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE6Oi8xNicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjo6LzEyOCcpXSkKKworICAgICAgICAjIHRlc3QgZXhjZXB0aW9uIHJhaXNlZCB3aGVuIGZpcnN0IGlzIGdyZWF0ZXIgdGhhbiBsYXN0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcml6ZShpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjEuMCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4wLjAnKSkpCisgICAgICAgICMgdGVzdCBleGNlcHRpb24gcmFpc2VkIHdoZW4gZmlyc3QgYW5kIGxhc3QgYXJlbid0IElQIGFkZHJlc3NlcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcml6ZShpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjEuMCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4wLjAnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyaXplKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4wJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjAuMCcpKSkKKyAgICAgICAgIyB0ZXN0IGV4Y2VwdGlvbiByYWlzZWQgd2hlbiBmaXJzdCBhbmQgbGFzdCBhcmUgbm90IHNhbWUgdmVyc2lvbgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcml6ZShpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjonKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMC4wJykpKQorCisgICAgZGVmIHRlc3RBZGRyZXNzQ29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjEuMS4xJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjEuMS4xJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjEuMScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjEuMicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoxJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoxJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OjInKSkKKworICAgIGRlZiB0ZXN0SW50ZXJmYWNlQ29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzEuMS4xLjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMS4xLjEuMScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMS4xLjEuMScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcxLjEuMS4yJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCc6OjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnOjoxJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCc6OjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnOjoyJykpCisKKyAgICBkZWYgdGVzdE5ldHdvcmtDb21wYXJpc29uKHNlbGYpOgorICAgICAgICAjIGlwMSBhbmQgaXAyIGhhdmUgdGhlIHNhbWUgbmV0d29yayBhZGRyZXNzCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjEuMC8yNCcpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjEuMC8zMicpCisgICAgICAgIGlwMyA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjIuMC8yNCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMSA8IGlwMykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMyA+IGlwMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwMS5jb21wYXJlX25ldHdvcmtzKGlwMSksIDApCisKKyAgICAgICAgIyBpZiBhZGRyZXNzZXMgYXJlIHRoZSBzYW1lLCBzb3J0IGJ5IG5ldG1hc2sKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcDEuY29tcGFyZV9uZXR3b3JrcyhpcDIpLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcDIuY29tcGFyZV9uZXR3b3JrcyhpcDEpLCAxKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXAxLmNvbXBhcmVfbmV0d29ya3MoaXAzKSwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXAzLmNvbXBhcmVfbmV0d29ya3MoaXAxKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMS5fZ2V0X25ldHdvcmtzX2tleSgpIDwgaXAzLl9nZXRfbmV0d29ya3Nfa2V5KCkpCisKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOjIwMDA6Oi85NicpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMToyMDAxOjovOTYnKQorICAgICAgICBpcDMgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6ZmZmZjoyMDAwOjovOTYnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDEgPCBpcDMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDMgPiBpcDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXAxLmNvbXBhcmVfbmV0d29ya3MoaXAzKSwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDEuX2dldF9uZXR3b3Jrc19rZXkoKSA8IGlwMy5fZ2V0X25ldHdvcmtzX2tleSgpKQorCisgICAgICAgICMgVGVzdCBjb21wYXJpbmcgZGlmZmVyZW50IHByb3RvY29scy4KKyAgICAgICAgIyBTaG91bGQgYWx3YXlzIHJhaXNlIGEgVHlwZUVycm9yLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9uZXR3b3JrLmNvbXBhcmVfbmV0d29ya3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9uZXR3b3JrKQorICAgICAgICBpcHY2ID0gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6LzAnKQorICAgICAgICBpcHY0ID0gaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzAuMC4wLjAvMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXB2NC5fX2x0X18sIGlwdjYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXB2NC5fX2d0X18sIGlwdjYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXB2Ni5fX2x0X18sIGlwdjQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXB2Ni5fX2d0X18sIGlwdjQpCisKKyAgICAgICAgIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGlzc3VlIDE5LgorICAgICAgICBpcDEgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMS4yLjEyOC8yNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXAxIDwgaXAxKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwMSA+IGlwMSkKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMy4wLzI0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMSA8IGlwMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcDIgPCBpcDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXAxID4gaXAyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXAyID4gaXAxKQorICAgICAgICBpcDMgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMS4zLjAvMjUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXAyIDwgaXAzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwMyA8IGlwMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcDIgPiBpcDMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDMgPiBpcDIpCisKKyAgICAgICAgIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGlzc3VlIDI4LgorICAgICAgICBpcDEgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMTAuMTAuMC8zMScpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xMC4xMC4wJykKKyAgICAgICAgaXAzID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEwLjEwLjIvMzEnKQorICAgICAgICBpcDQgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMTAuMTAuMicpCisgICAgICAgIHNvcnRlZCA9IFtpcDEsIGlwMiwgaXAzLCBpcDRdCisgICAgICAgIHVuc29ydGVkID0gW2lwMiwgaXA0LCBpcDEsIGlwM10KKyAgICAgICAgdW5zb3J0ZWQuc29ydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkLCB1bnNvcnRlZCkKKyAgICAgICAgdW5zb3J0ZWQgPSBbaXA0LCBpcDEsIGlwMywgaXAyXQorICAgICAgICB1bnNvcnRlZC5zb3J0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQsIHVuc29ydGVkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlwMS5fX2x0X18sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMC4xMC4xMC4wJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXAyLl9fbHRfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEwLjEwLjEwLjAnKSkKKworICAgICAgICAjIDw9LCA+PQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4xJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4yJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjInKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6OjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6MScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6MScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnOjoyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6MicpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6MScpKQorCisgICAgZGVmIHRlc3RTdHJpY3ROZXR3b3JrcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXBhZGRyZXNzLmlwX25ldHdvcmssICcxOTIuMTY4LjEuMS8yNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlwYWRkcmVzcy5pcF9uZXR3b3JrLCAnOjoxLzEyMCcpCisKKyAgICBkZWYgdGVzdE92ZXJsYXBzKHNlbGYpOgorICAgICAgICBvdGhlciA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4yLjMuMC8zMCcpCisgICAgICAgIG90aGVyMiA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4yLjIuMC8yNCcpCisgICAgICAgIG90aGVyMyA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4yLjIuNjQvMjYnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X25ldHdvcmsub3ZlcmxhcHMob3RoZXIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2NF9uZXR3b3JrLm92ZXJsYXBzKG90aGVyMikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdGhlcjIub3ZlcmxhcHMob3RoZXIzKSkKKworICAgIGRlZiB0ZXN0RW1iZWRkZWRJcHY0KHNlbGYpOgorICAgICAgICBpcHY0X3N0cmluZyA9ICcxOTIuMTY4LjAuMScKKyAgICAgICAgaXB2NCA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKGlwdjRfc3RyaW5nKQorICAgICAgICB2NGNvbXBhdF9pcHY2ID0gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6JXMnICUgaXB2NF9zdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHY0Y29tcGF0X2lwdjYuaXApLCBpbnQoaXB2NC5pcCkpCisgICAgICAgIHY0bWFwcGVkX2lwdjYgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjpmZmZmOiVzJyAlIGlwdjRfc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHY0bWFwcGVkX2lwdjYuaXAsIGlwdjQuaXApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGlwYWRkcmVzcy5BZGRyZXNzVmFsdWVFcnJvciwgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjEuMS4xLjE6MS4xLjEuMScpCisKKyAgICAjIElzc3VlIDY3OiBJUHY2IHdpdGggZW1iZWRkZWQgSVB2NCBhZGRyZXNzIG5vdCByZWNvZ25pemVkLgorICAgIGRlZiB0ZXN0SVB2NkFkZHJlc3NUb29MYXJnZShzZWxmKToKKyAgICAgICAgIyBSRkM0MjkxIDIuNS41LjIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjpGRkZGOjE5Mi4wLjIuMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjpGRkZGOmMwMDA6MjAxJykpCisgICAgICAgICMgUkZDNDI5MSAyLjIgKHBhcnQgMykgeDo6ZC5kLmQuZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdGRkZGOjoxOTIuMC4yLjEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ0ZGRkY6OmMwMDA6MjAxJykpCisKKyAgICBkZWYgdGVzdElQVmVyc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfYWRkcmVzcy52ZXJzaW9uLCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9hZGRyZXNzLnZlcnNpb24sIDYpCisKKyAgICBkZWYgdGVzdE1heFByZWZpeExlbmd0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfaW50ZXJmYWNlLm1heF9wcmVmaXhsZW4sIDMyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9pbnRlcmZhY2UubWF4X3ByZWZpeGxlbiwgMTI4KQorCisgICAgZGVmIHRlc3RQYWNrZWQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X2FkZHJlc3MucGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInXHgwMVx4MDJceDAzXHgwNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzI1NS4yNTQuMjUzLjI1MicpLnBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4ZmZceGZlXHhmZFx4ZmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9hZGRyZXNzLnBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4MjBceDAxXHgwNlx4NThceDAyXHgyYVx4Y2FceGZlJworICAgICAgICAgICAgICAgICAgICAgICAgIGInXHgwMlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCdmZmZmOjI6Mzo0OmZmZmY6OicpLnBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4ZmZceGZmXHgwMFx4MDJceDAwXHgwM1x4MDBceDA0XHhmZlx4ZmYnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBiJ1x4MDAnICogNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjoxOjA6MDowOjAnKS5wYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgYidceDAwJyAqIDYgKyBiJ1x4MDBceDAxJyArIGInXHgwMCcgKiA4KQorCisgICAgZGVmIHRlc3RJcFN0ckZyb21QcmVmaXhsZW4oc2VsZik6CisgICAgICAgIGlwdjQgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8yNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXB2NC5faXBfc3RyaW5nX2Zyb21fcHJlZml4KCksICcyNTUuMjU1LjI1NS4wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcHY0Ll9pcF9zdHJpbmdfZnJvbV9wcmVmaXgoMjgpLCAnMjU1LjI1NS4yNTUuMjQwJykKKworICAgIGRlZiB0ZXN0SXBUeXBlKHNlbGYpOgorICAgICAgICBpcHY0bmV0ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMi4zLjQnKQorICAgICAgICBpcHY0YWRkciA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjIuMy40JykKKyAgICAgICAgaXB2Nm5ldCA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6OjEuMi4zLjQnKQorICAgICAgICBpcHY2YWRkciA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OjEuMi4zLjQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaywgdHlwZShpcHY0bmV0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NEFkZHJlc3MsIHR5cGUoaXB2NGFkZHIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2TmV0d29yaywgdHlwZShpcHY2bmV0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NkFkZHJlc3MsIHR5cGUoaXB2NmFkZHIpKQorCisgICAgZGVmIHRlc3RSZXNlcnZlZElwdjQoc2VsZik6CisgICAgICAgICMgdGVzdCBuZXR3b3JrcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgJzIyNC4xLjEuMS8zMScpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzI0MC4wLjAuMCcpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjQwLjAuMC4wJykuaXNfcmVzZXJ2ZWQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKAorICAgICAgICAgICAgICAgICcxOTIuMTY4LjEuMS8xNycpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMTY5LjAuMCcpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoCisgICAgICAgICAgICAgICAgJzEwLjI1NS4yNTUuMjU1JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzExLjAuMC4wJykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzExLjAuMC4wJykuaXNfcmVzZXJ2ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoCisgICAgICAgICAgICAgICAgJzE3Mi4zMS4yNTUuMjU1JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE3Mi4zMi4wLjAnKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE2OS4yNTQuMS4wLzI0JykuaXNfbGlua19sb2NhbCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMTY5LjI1NC4xMDAuMjAwLzI0JykuaXNfbGlua19sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxNjkuMjU1LjEwMC4yMDAvMjQnKS5pc19saW5rX2xvY2FsKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMTI3LjEwMC4yMDAuMjU0LzMyJykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoCisgICAgICAgICAgICAgICAgJzEyNy40Mi4wLjAvMTYnKS5pc19sb29wYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEyOC4wLjAuMCcpLmlzX2xvb3BiYWNrKQorCisgICAgICAgICMgdGVzdCBhZGRyZXNzZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMC4wLjAuMCcpLmlzX3Vuc3BlY2lmaWVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMjQuMS4xLjEnKS5pc19tdWx0aWNhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyNDAuMC4wLjAnKS5pc19tdWx0aWNhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzI0MC4wLjAuMScpLmlzX3Jlc2VydmVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMzkuMjU1LjI1NS4yNTUnKS5pc19yZXNlcnZlZCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMTY4LjEuMScpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMTY5LjAuMCcpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoCisgICAgICAgICAgICAgICAgJzEwLjI1NS4yNTUuMjU1JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzExLjAuMC4wJykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygKKyAgICAgICAgICAgICAgICAnMTcyLjMxLjI1NS4yNTUnKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTcyLjMyLjAuMCcpLmlzX3ByaXZhdGUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxNjkuMjU0LjEwMC4yMDAnKS5pc19saW5rX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxNjkuMjU1LjEwMC4yMDAnKS5pc19saW5rX2xvY2FsKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEyNy4xMDAuMjAwLjI1NCcpLmlzX2xvb3BiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMjcuNDIuMC4wJykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMjguMC4wLjAnKS5pc19sb29wYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnMC4wLjAuMCcpLmlzX3Vuc3BlY2lmaWVkKQorCisgICAgZGVmIHRlc3RSZXNlcnZlZElwdjYoc2VsZik6CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmZmZjo6JykuaXNfbXVsdGljYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKDIqKjEyOCAtIDEpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmYwMDo6JykuaXNfbXVsdGljYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmRmZjo6JykuaXNfbXVsdGljYXN0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJ2ZlY2Y6OicpLmlzX3NpdGVfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoCisgICAgICAgICAgICAgICAgJ2ZlZmY6ZmZmZjpmZmZmOmZmZmY6OicpLmlzX3NpdGVfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKAorICAgICAgICAgICAgICAgICdmYmY6ZmZmZjo6JykuaXNfc2l0ZV9sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJ2ZmMDA6OicpLmlzX3NpdGVfbG9jYWwpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmMwMDo6JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygKKyAgICAgICAgICAgICAgICAnZmMwMDpmZmZmOmZmZmY6ZmZmZjo6JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJ2ZiZmY6ZmZmZjo6JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJ2ZlMDA6OicpLmlzX3ByaXZhdGUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmVhMDo6JykuaXNfbGlua19sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygKKyAgICAgICAgICAgICAgICAnZmViZjpmZmZmOjonKS5pc19saW5rX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygKKyAgICAgICAgICAgICAgICAnZmU3ZjpmZmZmOjonKS5pc19saW5rX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmVjMDo6JykuaXNfbGlua19sb2NhbCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzA6MDo6MDowMScpLmlzX2xvb3BiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCc6OjEvMTI3JykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6OicpLmlzX2xvb3BiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnOjoyJykuaXNfbG9vcGJhY2spCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnMDo6MCcpLmlzX3Vuc3BlY2lmaWVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnOjoxJykuaXNfdW5zcGVjaWZpZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6Oi8xMjcnKS5pc191bnNwZWNpZmllZCkKKworICAgICAgICAjIHRlc3QgYWRkcmVzc2VzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZmZmY6OicpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygyKioxMjggLSAxKS5pc19tdWx0aWNhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZmMDA6OicpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZkZmY6OicpLmlzX211bHRpY2FzdCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdmZWNmOjonKS5pc19zaXRlX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKAorICAgICAgICAgICAgICAgICdmZWZmOmZmZmY6ZmZmZjpmZmZmOjonKS5pc19zaXRlX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygKKyAgICAgICAgICAgICAgICAnZmJmOmZmZmY6OicpLmlzX3NpdGVfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdmZjAwOjonKS5pc19zaXRlX2xvY2FsKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZjMDA6OicpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoCisgICAgICAgICAgICAgICAgJ2ZjMDA6ZmZmZjpmZmZmOmZmZmY6OicpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdmYmZmOmZmZmY6OicpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdmZTAwOjonKS5pc19wcml2YXRlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZlYTA6OicpLmlzX2xpbmtfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoCisgICAgICAgICAgICAgICAgJ2ZlYmY6ZmZmZjo6JykuaXNfbGlua19sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoCisgICAgICAgICAgICAgICAgJ2ZlN2Y6ZmZmZjo6JykuaXNfbGlua19sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZlYzA6OicpLmlzX2xpbmtfbG9jYWwpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMDowOjowOjAxJykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MScpLmlzX2xvb3BiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoyJykuaXNfbG9vcGJhY2spCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMDo6MCcpLmlzX3Vuc3BlY2lmaWVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoxJykuaXNfdW5zcGVjaWZpZWQpCisKKyAgICAgICAgIyBzb21lIGdlbmVyaWMgSUVURiByZXNlcnZlZCBhZGRyZXNzZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTAwOjonKS5pc19yZXNlcnZlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnNDAwMDo6MS8xMjgnKS5pc19yZXNlcnZlZCkKKworICAgIGRlZiB0ZXN0SXB2NE1hcHBlZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjpmZmZmOjE5Mi4xNjguMS4xJykuaXB2NF9tYXBwZWQsCisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4xNjguMS4xJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6YzBhODoxMDEnKS5pcHY0X21hcHBlZCwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjpmZmZmOmMwYTg6MTAxJykuaXB2NF9tYXBwZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4xNjguMS4xJykpCisKKyAgICBkZWYgdGVzdEFkZHJFeGNsdWRlKHNlbGYpOgorICAgICAgICBhZGRyMSA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjEuMC8yNCcpCisgICAgICAgIGFkZHIyID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMS4wLzI2JykKKyAgICAgICAgYWRkcjMgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMi4xLjAvMjQnKQorICAgICAgICBhZGRyNCA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMC4xLjEuMCcpCisgICAgICAgIGFkZHI1ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjowLzMyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQobGlzdChhZGRyMS5hZGRyZXNzX2V4Y2x1ZGUoYWRkcjIpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgW2lwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjEuNjQvMjYnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMS4xMjgvMjUnKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsIGFkZHIxLmFkZHJlc3NfZXhjbHVkZShhZGRyMykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwgYWRkcjEuYWRkcmVzc19leGNsdWRlKGFkZHI0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsaXN0LCBhZGRyMS5hZGRyZXNzX2V4Y2x1ZGUoYWRkcjUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYWRkcjEuYWRkcmVzc19leGNsdWRlKGFkZHIxKSksIFtdKQorCisgICAgZGVmIHRlc3RIYXNoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMTAuMS4xLjAvMjQnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaChpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcxMC4xLjEuMC8yNCcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjEuMC8yNCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjEuMC8yNCcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMC4xLjEuMCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMC4xLjEuMCcpKSkKKyAgICAgICAgIyBpNzAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjIuMy40JykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2goaXBhZGRyZXNzLmlwX2FkZHJlc3MoCisgICAgICAgICAgICAgICAgICAgIGludChpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4yLjMuNCcpLl9pcCkpKSkKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEwLjEuMS4wJykKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE6OicpCisgICAgICAgIGR1bW15ID0ge30KKyAgICAgICAgZHVtbXlbc2VsZi5pcHY0X2FkZHJlc3NdID0gTm9uZQorICAgICAgICBkdW1teVtzZWxmLmlwdjZfYWRkcmVzc10gPSBOb25lCisgICAgICAgIGR1bW15W2lwMV0gPSBOb25lCisgICAgICAgIGR1bW15W2lwMl0gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfYWRkcmVzcyBpbiBkdW1teSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMiBpbiBkdW1teSkKKworICAgIGRlZiB0ZXN0SVBCYXNlcyhzZWxmKToKKyAgICAgICAgbmV0ID0gc2VsZi5pcHY0X25ldHdvcmsKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMS4yLjMuMC8yNCcsIG5ldC5jb21wcmVzc2VkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIG5ldC5faXBfaW50X2Zyb21fcHJlZml4KDI0KSwKKyAgICAgICAgICAgICAgICBuZXQuX2lwX2ludF9mcm9tX3ByZWZpeChOb25lKSkKKyAgICAgICAgbmV0ID0gc2VsZi5pcHY2X25ldHdvcmsKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmV0Ll9zdHJpbmdfZnJvbV9pcF9pbnQsIDIqKjEyOCArIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VsZi5pcHY2X2FkZHJlc3MuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLmlwdjZfYWRkcmVzcy5faXApLAorICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9hZGRyZXNzLl9zdHJpbmdfZnJvbV9pcF9pbnQoTm9uZSkpCisKKyAgICBkZWYgdGVzdElQdjZOZXR3b3JrSGVscGVycyhzZWxmKToKKyAgICAgICAgbmV0ID0gc2VsZi5pcHY2X25ldHdvcmsKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMjAwMTo2NTg6MjJhOmNhZmU6Oi82NCcsIG5ldC53aXRoX3ByZWZpeGxlbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMjAwMTo2NTg6MjJhOmNhZmU6Oi9mZmZmOmZmZmY6ZmZmZjpmZmZmOjonLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldC53aXRoX25ldG1hc2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzIwMDE6NjU4OjIyYTpjYWZlOjovOjpmZmZmOmZmZmY6ZmZmZjpmZmZmJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXQud2l0aF9ob3N0bWFzaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMjAwMTo2NTg6MjJhOmNhZmU6Oi82NCcsIHN0cihuZXQpKQorCisgICAgZGVmIHRlc3RJUHY0TmV0d29ya0hlbHBlcnMoc2VsZik6CisgICAgICAgIG5ldCA9IHNlbGYuaXB2NF9uZXR3b3JrCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEuMi4zLjAvMjQnLCBuZXQud2l0aF9wcmVmaXhsZW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEuMi4zLjAvMjU1LjI1NS4yNTUuMCcsIG5ldC53aXRoX25ldG1hc2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEuMi4zLjAvMC4wLjAuMjU1JywgbmV0LndpdGhfaG9zdG1hc2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEuMi4zLjAvMjQnLCBzdHIobmV0KSkKKworICAgIGRlZiB0ZXN0Q29weUNvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBhZGRyMSA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjEuMC8yNCcpCisgICAgICAgIGFkZHIyID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoYWRkcjEpCisgICAgICAgIGFkZHIzID0gaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxLzY0JykKKyAgICAgICAgYWRkcjQgPSBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKGFkZHIzKQorICAgICAgICBhZGRyNSA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMScpCisgICAgICAgIGFkZHI2ID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcjEsIGFkZHIyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHIzLCBhZGRyNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyNSwgaXBhZGRyZXNzLklQdjRBZGRyZXNzKGFkZHI1KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyNiwgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGFkZHI2KSkKKworICAgIGRlZiB0ZXN0Q29tcHJlc3NJUHY2QWRkcmVzcyhzZWxmKToKKyAgICAgICAgdGVzdF9hZGRyZXNzZXMgPSB7CisgICAgICAgICAgICAnMToyOjM6NDo1OjY6Nzo4JzogJzE6MjozOjQ6NTo2Ojc6OC8xMjgnLAorICAgICAgICAgICAgJzIwMDE6MDowOjQ6MDowOjA6OCc6ICcyMDAxOjA6MDo0Ojo4LzEyOCcsCisgICAgICAgICAgICAnMjAwMTowOjA6NDo1OjY6Nzo4JzogJzIwMDE6OjQ6NTo2Ojc6OC8xMjgnLAorICAgICAgICAgICAgJzIwMDE6MDozOjQ6NTo2Ojc6OCc6ICcyMDAxOjA6Mzo0OjU6Njo3OjgvMTI4JywKKyAgICAgICAgICAgICcyMDAxOjA6Mzo0OjU6Njo3OjgnOiAnMjAwMTowOjM6NDo1OjY6Nzo4LzEyOCcsCisgICAgICAgICAgICAnMDowOjM6MDowOjA6MDpmZmZmJzogJzA6MDozOjpmZmZmLzEyOCcsCisgICAgICAgICAgICAnMDowOjA6NDowOjA6MDpmZmZmJzogJzo6NDowOjA6MDpmZmZmLzEyOCcsCisgICAgICAgICAgICAnMDowOjA6MDo1OjA6MDpmZmZmJzogJzo6NTowOjA6ZmZmZi8xMjgnLAorICAgICAgICAgICAgJzE6MDowOjQ6MDowOjc6OCc6ICcxOjo0OjA6MDo3OjgvMTI4JywKKyAgICAgICAgICAgICcwOjA6MDowOjA6MDowOjAnOiAnOjovMTI4JywKKyAgICAgICAgICAgICcwOjA6MDowOjA6MDowOjAvMCc6ICc6Oi8wJywKKyAgICAgICAgICAgICcwOjA6MDowOjA6MDowOjEnOiAnOjoxLzEyOCcsCisgICAgICAgICAgICAnMjAwMTowNjU4OjAyMmE6Y2FmZTowMDAwOjAwMDA6MDAwMDowMDAwLzY2JzoKKyAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTo6LzY2JywKKyAgICAgICAgICAgICc6OjEuMi4zLjQnOiAnOjoxMDI6MzA0LzEyOCcsCisgICAgICAgICAgICAnMToyOjM6NDo1OmZmZmY6MS4yLjMuNCc6ICcxOjI6Mzo0OjU6ZmZmZjoxMDI6MzA0LzEyOCcsCisgICAgICAgICAgICAnOjo3OjY6NTo0OjM6MjoxJzogJzA6Nzo2OjU6NDozOjI6MS8xMjgnLAorICAgICAgICAgICAgJzo6Nzo2OjU6NDozOjI6MCc6ICcwOjc6Njo1OjQ6MzoyOjAvMTI4JywKKyAgICAgICAgICAgICc3OjY6NTo0OjM6MjoxOjonOiAnNzo2OjU6NDozOjI6MTowLzEyOCcsCisgICAgICAgICAgICAnMDo2OjU6NDozOjI6MTo6JzogJzA6Njo1OjQ6MzoyOjE6MC8xMjgnLAorICAgICAgICAgICAgfQorICAgICAgICBmb3IgdW5jb21wcmVzc2VkLCBjb21wcmVzc2VkIGluIGxpc3QodGVzdF9hZGRyZXNzZXMuaXRlbXMoKSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXByZXNzZWQsIHN0cihpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgKKyAgICAgICAgICAgICAgICB1bmNvbXByZXNzZWQpKSkKKworICAgIGRlZiB0ZXN0RXhwbG9kZVNob3J0SGFuZElwU3RyKHNlbGYpOgorICAgICAgICBhZGRyMSA9IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCcyMDAxOjoxJykKKyAgICAgICAgYWRkcjIgPSBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6MDo1ZWY1Ojc5ZmQ6MDo1OWQ6YTBlNTpiYTEnKQorICAgICAgICBhZGRyMyA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTo6Lzk2JykKKyAgICAgICAgYWRkcjQgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE5Mi4xNjguMTc4LjEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcyMDAxOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDEvMTI4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyMS5leHBsb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAxLzEyOCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6MS8xMjgnKS5leHBsb2RlZCkKKyAgICAgICAgIyBpc3N1ZSA3NworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcyMDAxOjAwMDA6NWVmNTo3OWZkOjAwMDA6MDU5ZDphMGU1OjBiYTEnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIyLmV4cGxvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcyMDAxOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDAvOTYnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIzLmV4cGxvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxOTIuMTY4LjE3OC4xJywgYWRkcjQuZXhwbG9kZWQpCisKKyAgICBkZWYgdGVzdEludFJlcHJlc2VudGF0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDE2OTA5MDYwLCBpbnQoc2VsZi5pcHY0X2FkZHJlc3MpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQyNTQwNjE2ODI5MTgyNDY5NDMzNTQ3NzYyNDgyMDk3OTQ2NjI1LAorICAgICAgICAgICAgICAgICAgICAgICAgIGludChzZWxmLmlwdjZfYWRkcmVzcykpCisKKyAgICBkZWYgdGVzdEZvcmNlVmVyc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuaXBfbmV0d29yaygxKS52ZXJzaW9uLCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2TmV0d29yaygxKS52ZXJzaW9uLCA2KQorCisgICAgZGVmIHRlc3RXaXRoU3RhcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfaW50ZXJmYWNlLndpdGhfcHJlZml4bGVuLCAiMS4yLjMuNC8yNCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X2ludGVyZmFjZS53aXRoX25ldG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgIjEuMi4zLjQvMjU1LjI1NS4yNTUuMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X2ludGVyZmFjZS53aXRoX2hvc3RtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICIxLjIuMy40LzAuMC4wLjI1NSIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfaW50ZXJmYWNlLndpdGhfcHJlZml4bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEvNjQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9pbnRlcmZhY2Uud2l0aF9uZXRtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEvZmZmZjpmZmZmOmZmZmY6ZmZmZjo6JykKKyAgICAgICAgIyB0aGlzIHByb2JhYmx5IGRvbid0IG1ha2UgbXVjaCBzZW5zZSwgYnV0IGl0J3MgaW5jbHVkZWQgZm9yCisgICAgICAgICMgY29tcGF0aWJpbGl0eSB3aXRoIGlwdjQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfaW50ZXJmYWNlLndpdGhfaG9zdG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDo6MS86OmZmZmY6ZmZmZjpmZmZmOmZmZmYnKQorCisgICAgZGVmIHRlc3ROZXR3b3JrRWxlbWVudENhY2hpbmcoc2VsZik6CisgICAgICAgICMgVjQgLSBtYWtlIHN1cmUgd2UncmUgZW1wdHkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnbmV0d29ya19hZGRyZXNzJyBpbiBzZWxmLmlwdjRfbmV0d29yay5fY2FjaGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ2Jyb2FkY2FzdF9hZGRyZXNzJyBpbiBzZWxmLmlwdjRfbmV0d29yay5fY2FjaGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ2hvc3RtYXNrJyBpbiBzZWxmLmlwdjRfbmV0d29yay5fY2FjaGUpCisKKyAgICAgICAgIyBWNCAtIHBvcHVsYXRlIGFuZCB0ZXN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X25ldHdvcmsubmV0d29ya19hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4yLjMuMCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9uZXR3b3JrLmJyb2FkY2FzdF9hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4yLjMuMjU1JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X25ldHdvcmsuaG9zdG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcwLjAuMC4yNTUnKSkKKworICAgICAgICAjIFY0IC0gY2hlY2sgd2UncmUgY2FjaGVkCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYnJvYWRjYXN0X2FkZHJlc3MnIGluIHNlbGYuaXB2NF9uZXR3b3JrLl9jYWNoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdob3N0bWFzaycgaW4gc2VsZi5pcHY0X25ldHdvcmsuX2NhY2hlKQorCisgICAgICAgICMgVjYgLSBtYWtlIHN1cmUgd2UncmUgZW1wdHkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnYnJvYWRjYXN0X2FkZHJlc3MnIGluIHNlbGYuaXB2Nl9uZXR3b3JrLl9jYWNoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnaG9zdG1hc2snIGluIHNlbGYuaXB2Nl9uZXR3b3JrLl9jYWNoZSkKKworICAgICAgICAjIFY2IC0gcG9wdWxhdGUgYW5kIHRlc3QKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5uZXR3b3JrX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOjY1ODoyMmE6Y2FmZTo6JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6NjU4OjIyYTpjYWZlOjonKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5pcHY2X25ldHdvcmsuYnJvYWRjYXN0X2FkZHJlc3MsCisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6NjU4OjIyYTpjYWZlOmZmZmY6ZmZmZjpmZmZmOmZmZmYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5ob3N0bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6ZmZmZjpmZmZmOmZmZmY6ZmZmZicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLmJyb2FkY2FzdF9hZGRyZXNzLAorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOjY1ODoyMmE6Y2FmZTpmZmZmOmZmZmY6ZmZmZjpmZmZmJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLmhvc3RtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjpmZmZmOmZmZmY6ZmZmZjpmZmZmJykpCisKKyAgICAgICAgIyBWNiAtIGNoZWNrIHdlJ3JlIGNhY2hlZAorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2Jyb2FkY2FzdF9hZGRyZXNzJyBpbiBzZWxmLmlwdjZfbmV0d29yay5fY2FjaGUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnaG9zdG1hc2snIGluIHNlbGYuaXB2Nl9uZXR3b3JrLl9jYWNoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAgICAgICAgICdicm9hZGNhc3RfYWRkcmVzcycgaW4gc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLl9jYWNoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdob3N0bWFzaycgaW4gc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLl9jYWNoZSkKKworICAgIGRlZiB0ZXN0VGVyZWRvKHNlbGYpOgorICAgICAgICAjIHN0b2xlbiBmcm9tIHdpa2lwZWRpYQorICAgICAgICBzZXJ2ZXIgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzY1LjU0LjIyNy4xMjAnKQorICAgICAgICBjbGllbnQgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNDUnKQorICAgICAgICB0ZXJlZG9fYWRkciA9ICcyMDAxOjAwMDA6NDEzNjplMzc4OjgwMDA6NjNiZjozZmZmOmZkZDInCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKHNlcnZlciwgY2xpZW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcyh0ZXJlZG9fYWRkcikudGVyZWRvKQorICAgICAgICBiYWRfYWRkciA9ICcyMDAwOjo0MTM2OmUzNzg6ODAwMDo2M2JmOjNmZmY6ZmRkMicKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcGFkZHJlc3MuaXBfYWRkcmVzcyhiYWRfYWRkcikudGVyZWRvKQorICAgICAgICBiYWRfYWRkciA9ICcyMDAxOjAwMDE6NDEzNjplMzc4OjgwMDA6NjNiZjozZmZmOmZkZDInCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXBhZGRyZXNzLmlwX2FkZHJlc3MoYmFkX2FkZHIpLnRlcmVkbykKKworICAgICAgICAjIGk3NworICAgICAgICB0ZXJlZG9fYWRkciA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTowOjVlZjU6NzlmZDowOjU5ZDphMGU1OmJhMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnOTQuMjQ1LjEyMS4yNTMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCc5NS4yNi4yNDQuOTQnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgdGVyZWRvX2FkZHIudGVyZWRvKQorCisgICAgZGVmIHRlc3RzaXh0b2ZvdXIoc2VsZik6CisgICAgICAgIHNpeHRvZm91cmFkZHIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjAwMjphYzFkOjJkNjQ6OjEnKQorICAgICAgICBiYWRfYWRkciA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAwOmFjMWQ6MmQ2NDo6MScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxNzIuMjkuNDUuMTAwJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l4dG9mb3VyYWRkci5zaXh0b2ZvdXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYmFkX2FkZHIuc2l4dG9mb3VyKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2lzaW5zdGFuY2UucHkgYi9MaWIvdGVzdC90ZXN0X2lzaW5zdGFuY2UucHkKaW5kZXggZGMyZDA3NC4uN2E2NzMwZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pc2luc3RhbmNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXNpbnN0YW5jZS5weQpAQCAtMTUsNyArMTUsNyBAQAogICAgICMgKGxlYWRpbmcgdG8gYW4gInVuZGV0ZWN0ZWQgZXJyb3IiIGluIHRoZSBkZWJ1ZyBidWlsZCkuICBTZXQgdXAgaXMsCiAgICAgIyBpc2luc3RhbmNlKGluc3QsIGNscykgd2hlcmU6CiAgICAgIwotICAgICMgLSBjbHMgaXNuJ3QgYSBhIHR5cGUsIG9yIGEgdHVwbGUKKyAgICAjIC0gY2xzIGlzbid0IGEgdHlwZSwgb3IgYSB0dXBsZQogICAgICMgLSBjbHMgaGFzIGEgX19iYXNlc19fIGF0dHJpYnV0ZQogICAgICMgLSBpbnN0IGhhcyBhIF9fY2xhc3NfXyBhdHRyaWJ1dGUKICAgICAjIC0gaW5zdC5fX2NsYXNzX18gYXMgbm8gX19iYXNlc19fIGF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pdGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pdGVyLnB5CmluZGV4IDRkOTcxODMuLjQzZjhlMTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaXRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2l0ZXIucHkKQEAgLTIsNiArMiw4IEBACiAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgVEVTVEZOLCB1bmxpbmssIGNweXRob25fb25seQoraW1wb3J0IHBpY2tsZQoraW1wb3J0IGNvbGxlY3Rpb25zLmFiYwogCiAjIFRlc3QgcmVzdWx0IG9mIHRyaXBsZSBsb29wICh0b28gYmlnIHRvIGlubGluZSkKIFRSSVBMRVRTID0gWygwLCAwLCAwKSwgKDAsIDAsIDEpLCAoMCwgMCwgMiksCkBAIC0yOCw2ICszMCw4IEBACiAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCiAgICAgICAgIHNlbGYuaSA9IHJlcyArIDEKICAgICAgICAgcmV0dXJuIHJlcworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKIAogY2xhc3MgSXRlcmF0aW5nU2VxdWVuY2VDbGFzczoKICAgICBkZWYgX19pbml0X18oc2VsZiwgbik6CkBAIC00OSw3ICs1Myw5IEBACiBjbGFzcyBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIEhlbHBlciB0byBjaGVjayB0aGF0IGFuIGl0ZXJhdG9yIHJldHVybnMgYSBnaXZlbiBzZXF1ZW5jZQotICAgIGRlZiBjaGVja19pdGVyYXRvcihzZWxmLCBpdCwgc2VxKToKKyAgICBkZWYgY2hlY2tfaXRlcmF0b3Ioc2VsZiwgaXQsIHNlcSwgcGlja2xlPVRydWUpOgorICAgICAgICBpZiBwaWNrbGU6CisgICAgICAgICAgICBzZWxmLmNoZWNrX3BpY2tsZShpdCwgc2VxKQogICAgICAgICByZXMgPSBbXQogICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgdHJ5OgpAQCAtNjAsMTIgKzY2LDMzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBzZXEpCiAKICAgICAjIEhlbHBlciB0byBjaGVjayB0aGF0IGEgZm9yIGxvb3AgZ2VuZXJhdGVzIGEgZ2l2ZW4gc2VxdWVuY2UKLSAgICBkZWYgY2hlY2tfZm9yX2xvb3Aoc2VsZiwgZXhwciwgc2VxKToKKyAgICBkZWYgY2hlY2tfZm9yX2xvb3Aoc2VsZiwgZXhwciwgc2VxLCBwaWNrbGU9VHJ1ZSk6CisgICAgICAgIGlmIHBpY2tsZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfcGlja2xlKGl0ZXIoZXhwciksIHNlcSkKICAgICAgICAgcmVzID0gW10KICAgICAgICAgZm9yIHZhbCBpbiBleHByOgogICAgICAgICAgICAgcmVzLmFwcGVuZCh2YWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBzZXEpCiAKKyAgICAjIEhlbHBlciB0byBjaGVjayBwaWNrbGFiaWxpdHkKKyAgICBkZWYgY2hlY2tfcGlja2xlKHNlbGYsIGl0b3JnLCBzZXEpOgorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0b3JnKQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAjIENhbm5vdCBhc3NlcnQgdHlwZSBlcXVhbGl0eSBiZWNhdXNlIGRpY3QgaXRlcmF0b3JzIHVucGlja2xlIGFzIGxpc3QKKyAgICAgICAgIyBpdGVyYXRvcnMuCisgICAgICAgICMgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0b3JnKSwgdHlwZShpdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGl0LCBjb2xsZWN0aW9ucy5hYmMuSXRlcmF0b3IpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBzZXEpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgc2VxWzE6XSkKKwogICAgICMgVGVzdCBiYXNpYyB1c2Ugb2YgaXRlcigpIGZ1bmN0aW9uCiAgICAgZGVmIHRlc3RfaXRlcl9iYXNpYyhzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19pdGVyYXRvcihpdGVyKHJhbmdlKDEwKSksIGxpc3QocmFuZ2UoMTApKSkKQEAgLTEzOCw3ICsxNjUsNyBAQAogICAgICAgICAgICAgICAgIGlmIGkgPiAxMDA6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IgIyBFbWVyZ2VuY3kgc3RvcAogICAgICAgICAgICAgICAgIHJldHVybiBpCi0gICAgICAgIHNlbGYuY2hlY2tfaXRlcmF0b3IoaXRlcihDKCksIDEwKSwgbGlzdChyYW5nZSgxMCkpKQorICAgICAgICBzZWxmLmNoZWNrX2l0ZXJhdG9yKGl0ZXIoQygpLCAxMCksIGxpc3QocmFuZ2UoMTApKSwgcGlja2xlPUZhbHNlKQogCiAgICAgIyBUZXN0IHR3by1hcmd1bWVudCBpdGVyKCkgd2l0aCBmdW5jdGlvbgogICAgIGRlZiB0ZXN0X2l0ZXJfZnVuY3Rpb24oc2VsZik6CkBAIC0xNDYsNyArMTczLDcgQEAKICAgICAgICAgICAgIGkgPSBzdGF0ZVswXQogICAgICAgICAgICAgc3RhdGVbMF0gPSBpKzEKICAgICAgICAgICAgIHJldHVybiBpCi0gICAgICAgIHNlbGYuY2hlY2tfaXRlcmF0b3IoaXRlcihzcGFtLCAxMCksIGxpc3QocmFuZ2UoMTApKSkKKyAgICAgICAgc2VsZi5jaGVja19pdGVyYXRvcihpdGVyKHNwYW0sIDEwKSwgbGlzdChyYW5nZSgxMCkpLCBwaWNrbGU9RmFsc2UpCiAKICAgICAjIFRlc3QgdHdvLWFyZ3VtZW50IGl0ZXIoKSB3aXRoIGZ1bmN0aW9uIHRoYXQgcmFpc2VzIFN0b3BJdGVyYXRpb24KICAgICBkZWYgdGVzdF9pdGVyX2Z1bmN0aW9uX3N0b3Aoc2VsZik6CkBAIC0xNTYsNyArMTgzLDcgQEAKICAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCiAgICAgICAgICAgICBzdGF0ZVswXSA9IGkrMQogICAgICAgICAgICAgcmV0dXJuIGkKLSAgICAgICAgc2VsZi5jaGVja19pdGVyYXRvcihpdGVyKHNwYW0sIDIwKSwgbGlzdChyYW5nZSgxMCkpKQorICAgICAgICBzZWxmLmNoZWNrX2l0ZXJhdG9yKGl0ZXIoc3BhbSwgMjApLCBsaXN0KHJhbmdlKDEwKSksIHBpY2tsZT1GYWxzZSkKIAogICAgICMgVGVzdCBleGNlcHRpb24gcHJvcGFnYXRpb24gdGhyb3VnaCBmdW5jdGlvbiBpdGVyYXRvcgogICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbl9mdW5jdGlvbihzZWxmKToKQEAgLTE5OCw3ICsyMjUsNyBAQAogICAgICAgICAgICAgICAgIGlmIGkgPT0gMTA6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KICAgICAgICAgICAgICAgICByZXR1cm4gU2VxdWVuY2VDbGFzcy5fX2dldGl0ZW1fXyhzZWxmLCBpKQotICAgICAgICBzZWxmLmNoZWNrX2Zvcl9sb29wKE15U2VxdWVuY2VDbGFzcygyMCksIGxpc3QocmFuZ2UoMTApKSkKKyAgICAgICAgc2VsZi5jaGVja19mb3JfbG9vcChNeVNlcXVlbmNlQ2xhc3MoMjApLCBsaXN0KHJhbmdlKDEwKSksIHBpY2tsZT1GYWxzZSkKIAogICAgICMgVGVzdCBhIGJpZyByYW5nZQogICAgIGRlZiB0ZXN0X2l0ZXJfYmlnX3JhbmdlKHNlbGYpOgpAQCAtMjM3LDggKzI2NCw4IEBACiAgICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgZiA9IG9wZW4oVEVTVEZOLCAiciIpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfZm9yX2xvb3AoZiwgWyIwXG4iLCAiMVxuIiwgIjJcbiIsICIzXG4iLCAiNFxuIl0pCi0gICAgICAgICAgICBzZWxmLmNoZWNrX2Zvcl9sb29wKGYsIFtdKQorICAgICAgICAgICAgc2VsZi5jaGVja19mb3JfbG9vcChmLCBbIjBcbiIsICIxXG4iLCAiMlxuIiwgIjNcbiIsICI0XG4iXSwgcGlja2xlPUZhbHNlKQorICAgICAgICAgICAgc2VsZi5jaGVja19mb3JfbG9vcChmLCBbXSwgcGlja2xlPUZhbHNlKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2l0ZXJ0b29scy5weSBiL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5CmluZGV4IGRmYTM3MWUuLjUzOTI2YTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5CkBAIC0zNyw2ICszNywxMyBAQAogICAgICdUZXN0IHByZWRpY2F0ZScKICAgICByZXR1cm4geCUyPT0xCiAKK2RlZiB0dXBsZWl6ZSgqYXJncyk6CisgICAgcmV0dXJuIGFyZ3MKKworZGVmIGlyYW5nZShuKToKKyAgICBmb3IgaSBpbiByYW5nZShuKToKKyAgICAgICAgeWllbGQgaQorCiBjbGFzcyBTdG9wTm93OgogICAgICdDbGFzcyBlbXVsYXRpbmcgYW4gZW1wdHkgaXRlcmFibGUuJwogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKQEAgLTU1LDggKzYyLDU5IEBACiAgICAgJ0ZhY3RvcmlhbCcKICAgICByZXR1cm4gcHJvZChyYW5nZSgxLCBuKzEpKQogCisjIHJvb3QgbGV2ZWwgbWV0aG9kcyBmb3IgcGlja2xpbmcgYWJpbGl0eQorZGVmIHRlc3RSKHIpOgorICAgIHJldHVybiByWzBdCisKK2RlZiB0ZXN0UjIocik6CisgICAgcmV0dXJuIHJbMl0KKworZGVmIHVuZGVydGVuKHgpOgorICAgIHJldHVybiB4PDEwCisKIGNsYXNzIFRlc3RCYXNpY09wcyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKKyAgICBkZWYgcGlja2xldGVzdChzZWxmLCBpdCwgc3RvcD00LCB0YWtlPTEsIGNvbXBhcmU9Tm9uZSk6CisgICAgICAgICIiIlRlc3QgdGhhdCBhbiBpdGVyYXRvciBpcyB0aGUgc2FtZSBhZnRlciBwaWNrbGluZywgYWxzbyB3aGVuIHBhcnQtY29uc3VtZWQiIiIKKyAgICAgICAgZGVmIGV4cGFuZChpdCwgaT0wKToKKyAgICAgICAgICAgICMgUmVjdXJzaXZlbHkgZXhwYW5kIGl0ZXJhYmxlcywgd2l0aGluIHNlbnNpYmxlIGJvdW5kcworICAgICAgICAgICAgaWYgaSA+IDEwOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiaW5maW5pdGUgcmVjdXJzaW9uIGVuY291bnRlcmVkIikKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoaXQsIHN0cik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbCA9IGxpc3QoaXNsaWNlKGl0LCBzdG9wKSkKKyAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ICMgY2FuJ3QgZXhwYW5kIGl0CisgICAgICAgICAgICByZXR1cm4gW2V4cGFuZChlLCBpKzEpIGZvciBlIGluIGxdCisKKyAgICAgICAgIyBUZXN0IHRoZSBpbml0aWFsIGNvcHkgYWdhaW5zdCB0aGUgb3JpZ2luYWwKKyAgICAgICAgZHVtcCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaTIgPSBwaWNrbGUubG9hZHMoZHVtcCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0KSwgdHlwZShpMikpCisgICAgICAgIGEsIGIgPSBleHBhbmQoaXQpLCBleHBhbmQoaTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYikKKyAgICAgICAgaWYgY29tcGFyZToKKyAgICAgICAgICAgIGMgPSBleHBhbmQoY29tcGFyZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYykKKworICAgICAgICAjIFRha2UgZnJvbSB0aGUgY29weSwgYW5kIGNyZWF0ZSBhbm90aGVyIGNvcHkgYW5kIGNvbXBhcmUgdGhlbS4KKyAgICAgICAgaTMgPSBwaWNrbGUubG9hZHMoZHVtcCkKKyAgICAgICAgdG9vayA9IDAKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UodGFrZSk6CisgICAgICAgICAgICAgICAgbmV4dChpMykKKyAgICAgICAgICAgICAgICB0b29rICs9IDEKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBwYXNzICNpbiBjYXNlIHRoZXJlIGlzIGxlc3MgZGF0YSB0aGFuICd0YWtlJworICAgICAgICBkdW1wID0gcGlja2xlLmR1bXBzKGkzKQorICAgICAgICBpNCA9IHBpY2tsZS5sb2FkcyhkdW1wKQorICAgICAgICBhLCBiID0gZXhwYW5kKGkzKSwgZXhwYW5kKGk0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGIpCisgICAgICAgIGlmIGNvbXBhcmU6CisgICAgICAgICAgICBjID0gZXhwYW5kKGNvbXBhcmVbdG9vazpdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBjKTsKKwogICAgIGRlZiB0ZXN0X2FjY3VtdWxhdGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhY2N1bXVsYXRlKHJhbmdlKDEwKSkpLCAgICAgICAgICAgICAgICMgb25lIHBvc2l0aW9uYWwgYXJnCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFswLCAxLCAzLCA2LCAxMCwgMTUsIDIxLCAyOCwgMzYsIDQ1XSkKQEAgLTY5LDExICsxMjcsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGFjY3VtdWxhdGUoJ2FiYycpKSwgWydhJywgJ2FiJywgJ2FiYyddKSAgICMgd29ya3Mgd2l0aCBub24tbnVtZXJpYwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYWNjdW11bGF0ZShbXSkpLCBbXSkgICAgICAgICAgICAgICAgICAjIGVtcHR5IGl0ZXJhYmxlCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhY2N1bXVsYXRlKFs3XSkpLCBbN10pICAgICAgICAgICAgICAgICMgaXRlcmFibGUgb2YgbGVuZ3RoIG9uZQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGFjY3VtdWxhdGUsIHJhbmdlKDEwKSwgNSkgICAgICAjIHRvbyBtYW55IGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBhY2N1bXVsYXRlLCByYW5nZSgxMCksIDUsIDYpICAgIyB0b28gbWFueSBhcmdzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYWNjdW11bGF0ZSkgICAgICAgICAgICAgICAgICAgICMgdG9vIGZldyBhcmdzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYWNjdW11bGF0ZSwgeD1yYW5nZSgxMCkpICAgICAgICMgdW5leHBlY3RlZCBrd2QgYXJnCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwgYWNjdW11bGF0ZShbMSwgW11dKSkgICAgICMgYXJncyB0aGF0IGRvbid0IGFkZAogCisgICAgICAgIHMgPSBbMiwgOCwgOSwgNSwgNywgMCwgMywgNCwgMSwgNl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGFjY3VtdWxhdGUocywgbWluKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgWzIsIDIsIDIsIDIsIDIsIDAsIDAsIDAsIDAsIDBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYWNjdW11bGF0ZShzLCBtYXgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbMiwgOCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhY2N1bXVsYXRlKHMsIG9wZXJhdG9yLm11bCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsyLCAxNiwgMTQ0LCA3MjAsIDUwNDAsIDAsIDAsIDAsIDAsIDBdKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBsaXN0KGFjY3VtdWxhdGUocywgY2hyKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdW5hcnktb3BlcmF0aW9uCisgICAgICAgIHNlbGYucGlja2xldGVzdChhY2N1bXVsYXRlKHJhbmdlKDEwKSkpICAgICAgICAgICAgICAgICAgICAgICMgdGVzdCBwaWNrbGluZworCiAgICAgZGVmIHRlc3RfY2hhaW4oc2VsZik6CiAKICAgICAgICAgZGVmIGNoYWluMigqaXRlcmFibGVzKToKQEAgLTk2LDE0ICsxNjUsNDMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDQsIGNoYWluLmZyb21faXRlcmFibGUoWydhYmMnLCAnZGVmJ10pKSwgbGlzdCgnYWJjZCcpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsIGNoYWluLmZyb21faXRlcmFibGUoWzIsIDNdKSkKIAorICAgIGRlZiB0ZXN0X2NoYWluX3JlZHVjaWJsZShzZWxmKToKKyAgICAgICAgb3BlcmF0b3JzID0gW2NvcHkuZGVlcGNvcHksCisgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgczogcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhzKSldCisgICAgICAgIGZvciBvcGVyIGluIG9wZXJhdG9yczoKKyAgICAgICAgICAgIGl0ID0gY2hhaW4oJ2FiYycsICdkZWYnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wZXIoaXQpKSwgbGlzdCgnYWJjZGVmJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAnYScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3BlcihpdCkpLCBsaXN0KCdiY2RlZicpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3BlcihjaGFpbignJykpKSwgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoNCwgb3BlcihjaGFpbignYWJjJywgJ2RlZicpKSksIGxpc3QoJ2FiY2QnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwgb3BlcihjaGFpbigyLCAzKSkpCisgICAgICAgIHNlbGYucGlja2xldGVzdChjaGFpbignYWJjJywgJ2RlZicpLCBjb21wYXJlPWxpc3QoJ2FiY2RlZicpKQorCiAgICAgZGVmIHRlc3RfY29tYmluYXRpb25zKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmF0aW9ucywgJ2FiYycpICAgICAgICMgbWlzc2luZyByIGFyZ3VtZW50CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluYXRpb25zLCAnYWJjJywgMiwgMSkgIyB0b28gbWFueSBhcmd1bWVudHMKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5hdGlvbnMsIE5vbmUpICAgICAgICAjIHBvb2wgaXMgbm90IGl0ZXJhYmxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbWJpbmF0aW9ucywgJ2FiYycsIC0yKSAgIyByIGlzIG5lZ2F0aXZlCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb21iaW5hdGlvbnMoJ2FiYycsIDMyKSksIFtdKSAgICAgIyByID4gbgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29tYmluYXRpb25zKHJhbmdlKDQpLCAzKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygwLDEsMiksICgwLDEsMyksICgwLDIsMyksICgxLDIsMyldKQorCisgICAgICAgIGZvciBvcCBpbiAobGFtYmRhIGE6YSwgbGFtYmRhIGE6cGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhhKSkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wKGNvbWJpbmF0aW9ucygnYWJjJywgMzIpKSksIFtdKSAgICAgIyByID4gbgorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3AoY29tYmluYXRpb25zKCdBQkNEJywgMikpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygnQScsJ0InKSwgKCdBJywnQycpLCAoJ0EnLCdEJyksICgnQicsJ0MnKSwgKCdCJywnRCcpLCAoJ0MnLCdEJyldKQorICAgICAgICAgICAgdGVzdEludGVybWVkaWF0ZSA9IGNvbWJpbmF0aW9ucygnQUJDRCcsIDIpCisgICAgICAgICAgICBuZXh0KHRlc3RJbnRlcm1lZGlhdGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3AodGVzdEludGVybWVkaWF0ZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdBJywnQycpLCAoJ0EnLCdEJyksICgnQicsJ0MnKSwgKCdCJywnRCcpLCAoJ0MnLCdEJyldKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3AoY29tYmluYXRpb25zKHJhbmdlKDQpLCAzKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKDAsMSwyKSwgKDAsMSwzKSwgKDAsMiwzKSwgKDEsMiwzKV0pCisgICAgICAgICAgICB0ZXN0SW50ZXJtZWRpYXRlID0gY29tYmluYXRpb25zKHJhbmdlKDQpLCAzKQorICAgICAgICAgICAgbmV4dCh0ZXN0SW50ZXJtZWRpYXRlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wKHRlc3RJbnRlcm1lZGlhdGUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygwLDEsMyksICgwLDIsMyksICgxLDIsMyldKQorCiAKICAgICAgICAgZGVmIGNvbWJpbmF0aW9uczEoaXRlcmFibGUsIHIpOgogICAgICAgICAgICAgJ1B1cmUgcHl0aG9uIHZlcnNpb24gc2hvd24gaW4gdGhlIGRvY3MnCkBAIC0xNTgsNyArMjU2LDExIEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGxpc3QoY29tYmluYXRpb25zMih2YWx1ZXMsIHIpKSkgIyBtYXRjaGVzIHNlY29uZCBwdXJlIHB5dGhvbiB2ZXJzaW9uCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGxpc3QoY29tYmluYXRpb25zMyh2YWx1ZXMsIHIpKSkgIyBtYXRjaGVzIHNlY29uZCBwdXJlIHB5dGhvbiB2ZXJzaW9uCiAKKyAgICAgICAgICAgICAgICBzZWxmLnBpY2tsZXRlc3QoY29tYmluYXRpb25zKHZhbHVlcywgcikpICAgICAgICAgICAgICAgICAjIHRlc3QgcGlja2xpbmcKKwogICAgICAgICAjIFRlc3QgaW1wbGVtZW50YXRpb24gZGV0YWlsOiAgdHVwbGUgcmUtdXNlCisgICAgQHN1cHBvcnQuaW1wbF9kZXRhaWwoInR1cGxlIHJldXNlIGlzIHNwZWNpZmljIHRvIENQeXRob24iKQorICAgIGRlZiB0ZXN0X2NvbWJpbmF0aW9uc190dXBsZV9yZXVzZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2V0KG1hcChpZCwgY29tYmluYXRpb25zKCdhYmNkZScsIDMpKSkpLCAxKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGxlbihzZXQobWFwKGlkLCBsaXN0KGNvbWJpbmF0aW9ucygnYWJjZGUnLCAzKSkpKSksIDEpCiAKQEAgLTE2OCw4ICsyNzAsMTUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjd3IsICdhYmMnLCAyLCAxKSAjIHRvbyBtYW55IGFyZ3VtZW50cwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN3ciwgTm9uZSkgICAgICAgICMgcG9vbCBpcyBub3QgaXRlcmFibGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY3dyLCAnYWJjJywgLTIpICAjIHIgaXMgbmVnYXRpdmUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGN3cignQUJDJywgMikpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ0EnLCdBJyksICgnQScsJ0InKSwgKCdBJywnQycpLCAoJ0InLCdCJyksICgnQicsJ0MnKSwgKCdDJywnQycpXSkKKworICAgICAgICBmb3Igb3AgaW4gKGxhbWJkYSBhOmEsIGxhbWJkYSBhOnBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYSkpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcChjd3IoJ0FCQycsIDIpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ0EnLCdBJyksICgnQScsJ0InKSwgKCdBJywnQycpLCAoJ0InLCdCJyksICgnQicsJ0MnKSwgKCdDJywnQycpXSkKKyAgICAgICAgICAgIHRlc3RJbnRlcm1lZGlhdGUgPSBjd3IoJ0FCQycsIDIpCisgICAgICAgICAgICBuZXh0KHRlc3RJbnRlcm1lZGlhdGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3AodGVzdEludGVybWVkaWF0ZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdBJywnQicpLCAoJ0EnLCdDJyksICgnQicsJ0InKSwgKCdCJywnQycpLCAoJ0MnLCdDJyldKQorCiAKICAgICAgICAgZGVmIGN3cjEoaXRlcmFibGUsIHIpOgogICAgICAgICAgICAgJ1B1cmUgcHl0aG9uIHZlcnNpb24gc2hvd24gaW4gdGhlIGRvY3MnCkBAIC0yMjgsNyArMzM3LDEzIEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGxpc3QoY3dyMSh2YWx1ZXMsIHIpKSkgICAgICAgICAjIG1hdGNoZXMgZmlyc3QgcHVyZSBweXRob24gdmVyc2lvbgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBsaXN0KGN3cjIodmFsdWVzLCByKSkpICAgICAgICAgIyBtYXRjaGVzIHNlY29uZCBwdXJlIHB5dGhvbiB2ZXJzaW9uCiAKKyAgICAgICAgICAgICAgICBzZWxmLnBpY2tsZXRlc3QoY3dyKHZhbHVlcyxyKSkgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGVzdCBwaWNrbGluZworCiAgICAgICAgICMgVGVzdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6ICB0dXBsZSByZS11c2UKKworICAgIEBzdXBwb3J0LmltcGxfZGV0YWlsKCJ0dXBsZSByZXVzZSBpcyBzcGVjaWZpYyB0byBDUHl0aG9uIikKKyAgICBkZWYgdGVzdF9jb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudF90dXBsZV9yZXVzZShzZWxmKToKKyAgICAgICAgY3dyID0gY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2V0KG1hcChpZCwgY3dyKCdhYmNkZScsIDMpKSkpLCAxKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGxlbihzZXQobWFwKGlkLCBsaXN0KGN3cignYWJjZGUnLCAzKSkpKSksIDEpCiAKQEAgLTI5Miw3ICs0MDcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGxpc3QocGVybXV0YXRpb25zKHZhbHVlcywgTm9uZSkpKSAjIHRlc3QgciBhcyBOb25lCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBsaXN0KHBlcm11dGF0aW9ucyh2YWx1ZXMpKSkgICAgICAgIyB0ZXN0IGRlZmF1bHQgcgogCi0gICAgICAgICMgVGVzdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6ICB0dXBsZSByZS11c2UKKyAgICAgICAgICAgICAgICBzZWxmLnBpY2tsZXRlc3QocGVybXV0YXRpb25zKHZhbHVlcywgcikpICAgICAgICAgICAgICAgICMgdGVzdCBwaWNrbGluZworCisgICAgQHN1cHBvcnQuaW1wbF9kZXRhaWwoInR1cGxlIHJlc3VzZSBpcyBDUHl0aG9uIHNwZWNpZmljIikKKyAgICBkZWYgdGVzdF9wZXJtdXRhdGlvbnNfdHVwbGVfcmV1c2Uoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNldChtYXAoaWQsIHBlcm11dGF0aW9ucygnYWJjZGUnLCAzKSkpKSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChsZW4oc2V0KG1hcChpZCwgbGlzdChwZXJtdXRhdGlvbnMoJ2FiY2RlJywgMykpKSkpLCAxKQogCkBAIC0zNDUsNiArNDYzLDI0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcHJlc3MsIHJhbmdlKDYpKSAgICAgICAgICAgICMgdG9vIGZldyBhcmdzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcHJlc3MsIHJhbmdlKDYpLCBOb25lKSAgICAgICMgdG9vIG1hbnkgYXJncwogCisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBmb3Igb3AgaW4gKGxhbWJkYSBhOmNvcHkuY29weShhKSwgbGFtYmRhIGE6Y29weS5kZWVwY29weShhKSwgbGFtYmRhIGE6cGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhhKSkpOgorICAgICAgICAgICAgZm9yIGRhdGEsIHNlbGVjdG9ycywgcmVzdWx0MSwgcmVzdWx0MiBpbiBbCisgICAgICAgICAgICAgICAgKCdBQkNERUYnLCBbMSwwLDEsMCwxLDFdLCAnQUNFRicsICdDRUYnKSwKKyAgICAgICAgICAgICAgICAoJ0FCQ0RFRicsIFswLDAsMCwwLDAsMF0sICcnLCAnJyksCisgICAgICAgICAgICAgICAgKCdBQkNERUYnLCBbMSwxLDEsMSwxLDFdLCAnQUJDREVGJywgJ0JDREVGJyksCisgICAgICAgICAgICAgICAgKCdBQkNERUYnLCBbMSwwLDFdLCAnQUMnLCAnQycpLAorICAgICAgICAgICAgICAgICgnQUJDJywgWzAsMSwxLDEsMSwxXSwgJ0JDJywgJ0MnKSwKKyAgICAgICAgICAgICAgICBdOgorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wKGNvbXByZXNzKGRhdGE9ZGF0YSwgc2VsZWN0b3JzPXNlbGVjdG9ycykpKSwgbGlzdChyZXN1bHQxKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3AoY29tcHJlc3MoZGF0YSwgc2VsZWN0b3JzKSkpLCBsaXN0KHJlc3VsdDEpKQorICAgICAgICAgICAgICAgIHRlc3RJbnRlcm1lZGlhdGUgPSBjb21wcmVzcyhkYXRhLCBzZWxlY3RvcnMpCisgICAgICAgICAgICAgICAgaWYgcmVzdWx0MToKKyAgICAgICAgICAgICAgICAgICAgbmV4dCh0ZXN0SW50ZXJtZWRpYXRlKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3AodGVzdEludGVybWVkaWF0ZSkpLCBsaXN0KHJlc3VsdDIpKQorCisKICAgICBkZWYgdGVzdF9jb3VudChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemlwKCdhYmMnLGNvdW50KCkpLCBbKCdhJywgMCksICgnYicsIDEpLCAoJ2MnLCAyKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHppcCgnYWJjJyxjb3VudCgzKSksIFsoJ2EnLCAzKSwgKCdiJywgNCksICgnYycsIDUpXSkKQEAgLTM3OSw3ICs1MTUsNyBAQAogICAgICAgICAgICAgYyA9IGNvdW50KHZhbHVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGNvcHkuY29weShjKSksIHZhbHVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGNvcHkuZGVlcGNvcHkoYykpLCB2YWx1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGMpKSksIHZhbHVlKQorICAgICAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGNvdW50KHZhbHVlKSkKIAogICAgICAgICAjY2hlY2sgcHJvcGVyIGludGVybmFsIGVycm9yIGhhbmRsaW5nIGZvciBsYXJnZSAic3RlcCcgc2l6ZXMKICAgICAgICAgY291bnQoMSwgbWF4c2l6ZSs1KTsgc3lzLmV4Y19pbmZvKCkKQEAgLTQyNiw2ICs1NjIsNyBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHIyID0gKCdjb3VudCglciwgJXIpJyAlIChpLCBqKSkucmVwbGFjZSgnTCcsICcnKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocjEsIHIyKQorICAgICAgICAgICAgICAgIHNlbGYucGlja2xldGVzdChjb3VudChpLCBqKSkKIAogICAgIGRlZiB0ZXN0X2N5Y2xlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMTAsIGN5Y2xlKCdhYmMnKSksIGxpc3QoJ2FiY2FiY2FiY2EnKSkKQEAgLTQzNCw2ICs1NzEsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjeWNsZSwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGlzbGljZShjeWNsZShnZW4zKCkpLDEwKSksIFswLDEsMiwwLDEsMiwwLDEsMiwwXSkKIAorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgYyA9IGN5Y2xlKCdhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoYyksICdhJykKKyAgICAgICAgI3NpbXBsZSBjb3B5IGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLCBiZWNhdXNlIF9fcmVkdWNlX18gcmV0dXJucworICAgICAgICAjYW4gaW50ZXJuYWwgaXRlcmF0b3IKKyAgICAgICAgI3NlbGYuYXNzZXJ0RXF1YWwodGFrZSgxMCwgY29weS5jb3B5KGMpKSwgbGlzdCgnYmNhYmNhYmNhYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMTAsIGNvcHkuZGVlcGNvcHkoYykpLCBsaXN0KCdiY2FiY2FiY2FiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgxMCwgcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhjKSkpLCBsaXN0KCdiY2FiY2FiY2FiJykpCisgICAgICAgIG5leHQoYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDEwLCBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGMpKSksIGxpc3QoJ2NhYmNhYmNhYmMnKSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGN5Y2xlKCdhYmMnKSkKKwogICAgIGRlZiB0ZXN0X2dyb3VwYnkoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgd2hldGhlciBpdCBhY2NlcHRzIGFyZ3VtZW50cyBjb3JyZWN0bHkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgbGlzdChncm91cGJ5KFtdKSkpCkBAIC00NTIsMTggKzYwMSwzNyBAQAogICAgICAgICAgICAgICAgIGR1cC5hcHBlbmQoZWxlbSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBkdXApCiAKKyAgICAgICAgIyBDaGVjayBub3JtYWwgcGlja2xlZAorICAgICAgICBkdXAgPSBbXQorICAgICAgICBmb3IgaywgZyBpbiBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGdyb3VwYnkocywgdGVzdFIpKSk6CisgICAgICAgICAgICBmb3IgZWxlbSBpbiBnOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaywgZWxlbVswXSkKKyAgICAgICAgICAgICAgICBkdXAuYXBwZW5kKGVsZW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgZHVwKQorCiAgICAgICAgICMgQ2hlY2sgbmVzdGVkIGNhc2UKICAgICAgICAgZHVwID0gW10KLSAgICAgICAgZm9yIGssIGcgaW4gZ3JvdXBieShzLCBsYW1iZGEgcjpyWzBdKToKLSAgICAgICAgICAgIGZvciBpaywgaWcgaW4gZ3JvdXBieShnLCBsYW1iZGEgcjpyWzJdKToKKyAgICAgICAgZm9yIGssIGcgaW4gZ3JvdXBieShzLCB0ZXN0Uik6CisgICAgICAgICAgICBmb3IgaWssIGlnIGluIGdyb3VwYnkoZywgdGVzdFIyKToKICAgICAgICAgICAgICAgICBmb3IgZWxlbSBpbiBpZzoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrLCBlbGVtWzBdKQogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlrLCBlbGVtWzJdKQogICAgICAgICAgICAgICAgICAgICBkdXAuYXBwZW5kKGVsZW0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgZHVwKQogCisgICAgICAgICMgQ2hlY2sgbmVzdGVkIGFuZCBwaWNrbGVkCisgICAgICAgIGR1cCA9IFtdCisgICAgICAgIGZvciBrLCBnIGluIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZ3JvdXBieShzLCB0ZXN0UikpKToKKyAgICAgICAgICAgIGZvciBpaywgaWcgaW4gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhncm91cGJ5KGcsIHRlc3RSMikpKToKKyAgICAgICAgICAgICAgICBmb3IgZWxlbSBpbiBpZzoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrLCBlbGVtWzBdKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlrLCBlbGVtWzJdKQorICAgICAgICAgICAgICAgICAgICBkdXAuYXBwZW5kKGVsZW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgZHVwKQorCisKICAgICAgICAgIyBDaGVjayBjYXNlIHdoZXJlIGlubmVyIGl0ZXJhdG9yIGlzIG5vdCB1c2VkCi0gICAgICAgIGtleXMgPSBbayBmb3IgaywgZyBpbiBncm91cGJ5KHMsIGxhbWJkYSByOnJbMF0pXQorICAgICAgICBrZXlzID0gW2sgZm9yIGssIGcgaW4gZ3JvdXBieShzLCB0ZXN0UildCiAgICAgICAgIGV4cGVjdGVka2V5cyA9IHNldChbclswXSBmb3IgciBpbiBzXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoa2V5cyksIGV4cGVjdGVka2V5cykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oa2V5cyksIGxlbihleHBlY3RlZGtleXMpKQpAQCAtNTM0LDYgKzcwMiwyMCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGZpbHRlciwgaXNFdmVuLCAzKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5leHQsIGZpbHRlcihyYW5nZSg2KSwgcmFuZ2UoNikpKQogCisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBhbnMgPSBbMCwyLDRdCisKKyAgICAgICAgYyA9IGZpbHRlcihpc0V2ZW4sIHJhbmdlKDYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGMpKSwgYW5zKQorICAgICAgICBjID0gZmlsdGVyKGlzRXZlbiwgcmFuZ2UoNikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGMpKSwgYW5zKQorICAgICAgICBjID0gZmlsdGVyKGlzRXZlbiwgcmFuZ2UoNikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGMpKSksIGFucykKKyAgICAgICAgbmV4dChjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhjKSkpLCBhbnNbMTpdKQorICAgICAgICBjID0gZmlsdGVyKGlzRXZlbiwgcmFuZ2UoNikpCisgICAgICAgIHNlbGYucGlja2xldGVzdChjKQorCiAgICAgZGVmIHRlc3RfZmlsdGVyZmFsc2Uoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChmaWx0ZXJmYWxzZShpc0V2ZW4sIHJhbmdlKDYpKSksIFsxLDMsNV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChmaWx0ZXJmYWxzZShOb25lLCBbMCwxLDAsMiwwXSkpLCBbMCwwLDBdKQpAQCAtNTQ0LDYgKzcyNiw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZmlsdGVyZmFsc2UsIGxhbWJkYSB4OngsIHJhbmdlKDYpLCA3KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGZpbHRlcmZhbHNlLCBpc0V2ZW4sIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmV4dCwgZmlsdGVyZmFsc2UocmFuZ2UoNiksIHJhbmdlKDYpKSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGZpbHRlcmZhbHNlKGlzRXZlbiwgcmFuZ2UoNikpKQogCiAgICAgZGVmIHRlc3RfemlwKHNlbGYpOgogICAgICAgICAjIFhYWCBUaGlzIGlzIHJhdGhlciBzaWxseSBub3cgdGhhdCBidWlsdGluIHppcCgpIGNhbGxzIHppcCgpLi4uCkBAIC01NTYsMTYgKzczOSwzNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoemlwKCkpLCBsemlwKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgemlwLCAzKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHppcCwgcmFuZ2UoMyksIDMpCi0gICAgICAgICMgQ2hlY2sgdHVwbGUgcmUtdXNlIChpbXBsZW1lbnRhdGlvbiBkZXRhaWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW3R1cGxlKGxpc3QocGFpcikpIGZvciBwYWlyIGluIHppcCgnYWJjJywgJ2RlZicpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsemlwKCdhYmMnLCAnZGVmJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW3BhaXIgZm9yIHBhaXIgaW4gemlwKCdhYmMnLCAnZGVmJyldLAogICAgICAgICAgICAgICAgICAgICAgICAgIGx6aXAoJ2FiYycsICdkZWYnKSkKKworICAgIEBzdXBwb3J0LmltcGxfZGV0YWlsKCJ0dXBsZSByZXVzZSBpcyBzcGVjaWZpYyB0byBDUHl0aG9uIikKKyAgICBkZWYgdGVzdF96aXBfdHVwbGVfcmV1c2Uoc2VsZik6CiAgICAgICAgIGlkcyA9IGxpc3QobWFwKGlkLCB6aXAoJ2FiYycsICdkZWYnKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWluKGlkcyksIG1heChpZHMpKQogICAgICAgICBpZHMgPSBsaXN0KG1hcChpZCwgbGlzdCh6aXAoJ2FiYycsICdkZWYnKSkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWN0LmZyb21rZXlzKGlkcykpLCBsZW4oaWRzKSkKIAorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgYW5zID0gWyh4LHkpIGZvciB4LCB5IGluIGNvcHkuY29weSh6aXAoJ2FiYycsY291bnQoKSkpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgWygnYScsIDApLCAoJ2InLCAxKSwgKCdjJywgMildKQorCisgICAgICAgIGFucyA9IFsoeCx5KSBmb3IgeCwgeSBpbiBjb3B5LmRlZXBjb3B5KHppcCgnYWJjJyxjb3VudCgpKSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCBbKCdhJywgMCksICgnYicsIDEpLCAoJ2MnLCAyKV0pCisKKyAgICAgICAgYW5zID0gWyh4LHkpIGZvciB4LCB5IGluIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoemlwKCdhYmMnLGNvdW50KCkpKSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCBbKCdhJywgMCksICgnYicsIDEpLCAoJ2MnLCAyKV0pCisKKyAgICAgICAgdGVzdEludGVybWVkaWF0ZSA9IHppcCgnYWJjJyxjb3VudCgpKQorICAgICAgICBuZXh0KHRlc3RJbnRlcm1lZGlhdGUpCisgICAgICAgIGFucyA9IFsoeCx5KSBmb3IgeCwgeSBpbiBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKHRlc3RJbnRlcm1lZGlhdGUpKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsIFsoJ2InLCAxKSwgKCdjJywgMildKQorCisgICAgICAgIHNlbGYucGlja2xldGVzdCh6aXAoJ2FiYycsIGNvdW50KCkpKQorCiAgICAgZGVmIHRlc3RfemlwbG9uZ2VzdChzZWxmKToKICAgICAgICAgZm9yIGFyZ3MgaW4gWwogICAgICAgICAgICAgICAgIFsnYWJjJywgcmFuZ2UoNildLApAQCAtNjAzLDE2ICs4MDUsMjQgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdEaWQgbm90IHJhaXNlIFR5cGUgaW46ICAnICsgc3RtdCkKIAotICAgICAgICAjIENoZWNrIHR1cGxlIHJlLXVzZSAoaW1wbGVtZW50YXRpb24gZGV0YWlsKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFt0dXBsZShsaXN0KHBhaXIpKSBmb3IgcGFpciBpbiB6aXBfbG9uZ2VzdCgnYWJjJywgJ2RlZicpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHppcCgnYWJjJywgJ2RlZicpKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbcGFpciBmb3IgcGFpciBpbiB6aXBfbG9uZ2VzdCgnYWJjJywgJ2RlZicpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHppcCgnYWJjJywgJ2RlZicpKSkKKworICAgIEBzdXBwb3J0LmltcGxfZGV0YWlsKCJ0dXBsZSByZXVzZSBpcyBzcGVjaWZpYyB0byBDUHl0aG9uIikKKyAgICBkZWYgdGVzdF96aXBfbG9uZ2VzdF90dXBsZV9yZXVzZShzZWxmKToKICAgICAgICAgaWRzID0gbGlzdChtYXAoaWQsIHppcF9sb25nZXN0KCdhYmMnLCAnZGVmJykpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pbihpZHMpLCBtYXgoaWRzKSkKICAgICAgICAgaWRzID0gbGlzdChtYXAoaWQsIGxpc3QoemlwX2xvbmdlc3QoJ2FiYycsICdkZWYnKSkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWN0LmZyb21rZXlzKGlkcykpLCBsZW4oaWRzKSkKIAorICAgIGRlZiB0ZXN0X3ppcF9sb25nZXN0X3BpY2tsaW5nKHNlbGYpOgorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoemlwX2xvbmdlc3QoImFiYyIsICJkZWYiKSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHppcF9sb25nZXN0KCJhYmMiLCAiZGVmZ2giKSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHppcF9sb25nZXN0KCJhYmMiLCAiZGVmZ2giLCBmaWxsdmFsdWU9MSkpCisgICAgICAgIHNlbGYucGlja2xldGVzdCh6aXBfbG9uZ2VzdCgiIiwgImRlZmdoIikpCisKICAgICBkZWYgdGVzdF9idWdfNzI0NChzZWxmKToKIAogICAgICAgICBjbGFzcyBSZXBlYXRlcjoKQEAgLTcxMSwxMCArOTIxLDI1IEBACiAgICAgICAgICAgICBhcmdzID0gbWFwKGl0ZXIsIGFyZ3MpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsaXN0KHByb2R1Y3QoKmFyZ3MpKSksIGV4cGVjdGVkX2xlbikKIAotICAgICAgICAjIFRlc3QgaW1wbGVtZW50YXRpb24gZGV0YWlsOiAgdHVwbGUgcmUtdXNlCisgICAgQHN1cHBvcnQuaW1wbF9kZXRhaWwoInR1cGxlIHJldXNlIGlzIHNwZWNpZmljIHRvIENQeXRob24iKQorICAgIGRlZiB0ZXN0X3Byb2R1Y3RfdHVwbGVfcmV1c2Uoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNldChtYXAoaWQsIHByb2R1Y3QoJ2FiYycsICdkZWYnKSkpKSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChsZW4oc2V0KG1hcChpZCwgbGlzdChwcm9kdWN0KCdhYmMnLCAnZGVmJykpKSkpLCAxKQogCisgICAgZGVmIHRlc3RfcHJvZHVjdF9waWNrbGluZyhzZWxmKToKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIGZvciBhcmdzLCByZXN1bHQgaW4gWworICAgICAgICAgICAgKFtdLCBbKCldKSwgICAgICAgICAgICAgICAgICAgICAjIHplcm8gaXRlcmFibGVzCisgICAgICAgICAgICAoWydhYiddLCBbKCdhJywpLCAoJ2InLCldKSwgICAgICMgb25lIGl0ZXJhYmxlCisgICAgICAgICAgICAoW3JhbmdlKDIpLCByYW5nZSgzKV0sIFsoMCwwKSwgKDAsMSksICgwLDIpLCAoMSwwKSwgKDEsMSksICgxLDIpXSksICAgICAjIHR3byBpdGVyYWJsZXMKKyAgICAgICAgICAgIChbcmFuZ2UoMCksIHJhbmdlKDIpLCByYW5nZSgzKV0sIFtdKSwgICAgICAgICAgICMgZmlyc3QgaXRlcmFibGUgd2l0aCB6ZXJvIGxlbmd0aAorICAgICAgICAgICAgKFtyYW5nZSgyKSwgcmFuZ2UoMCksIHJhbmdlKDMpXSwgW10pLCAgICAgICAgICAgIyBtaWRkbGUgaXRlcmFibGUgd2l0aCB6ZXJvIGxlbmd0aAorICAgICAgICAgICAgKFtyYW5nZSgyKSwgcmFuZ2UoMyksIHJhbmdlKDApXSwgW10pLCAgICAgICAgICAgIyBsYXN0IGl0ZXJhYmxlIHdpdGggemVybyBsZW5ndGgKKyAgICAgICAgICAgIF06CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KHByb2R1Y3QoKmFyZ3MpKSksIHJlc3VsdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KHByb2R1Y3QoKmFyZ3MpKSksIHJlc3VsdCkKKyAgICAgICAgICAgIHNlbGYucGlja2xldGVzdChwcm9kdWN0KCphcmdzKSkKKwogICAgIGRlZiB0ZXN0X3JlcGVhdChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJlcGVhdChvYmplY3Q9J2EnLCB0aW1lcz0zKSksIFsnYScsICdhJywgJ2EnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemlwKHJhbmdlKDMpLHJlcGVhdCgnYScpKSwKQEAgLTczMywxMSArOTU4LDE2IEBACiAgICAgICAgIGxpc3QocikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHIpLCAncmVwZWF0KCgxKzBqKSwgMCknKQogCisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBjID0gcmVwZWF0KG9iamVjdD0nYScsIHRpbWVzPTEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoYyksICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDIsIGNvcHkuY29weShjKSksIGxpc3QoJ2EnICogMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgyLCBjb3B5LmRlZXBjb3B5KGMpKSwgbGlzdCgnYScgKiAyKSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHJlcGVhdChvYmplY3Q9J2EnLCB0aW1lcz0xMCkpCisKICAgICBkZWYgdGVzdF9tYXAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtYXAob3BlcmF0b3IucG93LCByYW5nZSgzKSwgcmFuZ2UoMSw3KSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFswKioxLCAxKioyLCAyKiozXSkKLSAgICAgICAgZGVmIHR1cGxlaXplKCphcmdzKToKLSAgICAgICAgICAgIHJldHVybiBhcmdzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtYXAodHVwbGVpemUsICdhYmMnLCByYW5nZSg1KSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2EnLDApLCgnYicsMSksKCdjJywyKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtYXAodHVwbGVpemUsICdhYmMnLCBjb3VudCgpKSksCkBAIC03NTIsNiArOTgyLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5leHQsIG1hcChlcnJmdW5jLCBbNF0sIFs1XSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmV4dCwgbWFwKG9uZWFyZywgWzRdLCBbNV0pKQogCisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBhbnMgPSBbKCdhJywwKSwoJ2InLDEpLCgnYycsMildCisKKyAgICAgICAgYyA9IG1hcCh0dXBsZWl6ZSwgJ2FiYycsIGNvdW50KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYykpLCBhbnMpCisKKyAgICAgICAgYyA9IG1hcCh0dXBsZWl6ZSwgJ2FiYycsIGNvdW50KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGMpKSwgYW5zKQorCisgICAgICAgIGMgPSBtYXAodHVwbGVpemUsICdhYmMnLCBjb3VudCgpKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoYykKKwogICAgIGRlZiB0ZXN0X3N0YXJtYXAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdGFybWFwKG9wZXJhdG9yLnBvdywgemlwKHJhbmdlKDMpLCByYW5nZSgxLDcpKSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFswKioxLCAxKioyLCAyKiozXSkKQEAgLTc2Niw2ICsxMDA4LDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5leHQsIHN0YXJtYXAoZXJyZnVuYywgWyg0LDUpXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmV4dCwgc3Rhcm1hcChvbmVhcmcsIFsoNCw1KV0pKQogCisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBhbnMgPSBbMCoqMSwgMSoqMiwgMioqM10KKworICAgICAgICBjID0gc3Rhcm1hcChvcGVyYXRvci5wb3csIHppcChyYW5nZSgzKSwgcmFuZ2UoMSw3KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYykpLCBhbnMpCisKKyAgICAgICAgYyA9IHN0YXJtYXAob3BlcmF0b3IucG93LCB6aXAocmFuZ2UoMyksIHJhbmdlKDEsNykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShjKSksIGFucykKKworICAgICAgICBjID0gc3Rhcm1hcChvcGVyYXRvci5wb3csIHppcChyYW5nZSgzKSwgcmFuZ2UoMSw3KSkpCisgICAgICAgIHNlbGYucGlja2xldGVzdChjKQorCiAgICAgZGVmIHRlc3RfaXNsaWNlKHNlbGYpOgogICAgICAgICBmb3IgYXJncyBpbiBbICAgICAgICAgICMgaXNsaWNlKGFyZ3MpIHNob3VsZCBhZ3JlZSB3aXRoIHJhbmdlKGFyZ3MpCiAgICAgICAgICAgICAgICAgKDEwLCAyMCwgMyksCkBAIC03OTgsMTcgKzEwNTIsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgbGlzdChyYW5nZSgzLCAxMCkpKQogCiAgICAgICAgICMgVGVzdCBpbnZhbGlkIGFyZ3VtZW50cwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApLCAxLCAyLCAzLCA0KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSwgLTUsIDEwLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSwgMSwgLTUsIC0xKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSwgMSwgMTAsIC0xKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSwgMSwgMTAsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApLCAnYScsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApLCAxLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApLCAnYScsIDEsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApLCAxLCAnYScsIDEpCisgICAgICAgIHJhID0gcmFuZ2UoMTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXNsaWNlLCByYSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpc2xpY2UsIHJhLCAxLCAyLCAzLCA0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhLCAtNSwgMTAsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmEsIDEsIC01LCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYSwgMSwgMTAsIC0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhLCAxLCAxMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhLCAnYScsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmEsIDEsICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYSwgJ2EnLCAxLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhLCAxLCAnYScsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpc3QoaXNsaWNlKGNvdW50KCksIDEsIDEwLCBtYXhzaXplKSkpLCAxKQogCiAgICAgICAgICMgSXNzdWUgIzEwMzIzOiAgTGVzcyBpc2xpY2UgaW4gYSBwcmVkaWN0YWJsZSBzdGF0ZQpAQCAtODE2LDkgKzEwNzEsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGlzbGljZShjLCAxLCAzLCA1MCkpLCBbMV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChjKSwgMykKIAorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgZm9yIGFyZ3MgaW4gWyAgICAgICAgICAjIGlzbGljZShhcmdzKSBzaG91bGQgYWdyZWUgd2l0aCByYW5nZShhcmdzKQorICAgICAgICAgICAgICAgICgxMCwgMjAsIDMpLAorICAgICAgICAgICAgICAgICgxMCwgMywgMjApLAorICAgICAgICAgICAgICAgICgxMCwgMjApLAorICAgICAgICAgICAgICAgICgxMCwgMyksCisgICAgICAgICAgICAgICAgKDIwLCkKKyAgICAgICAgICAgICAgICBdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShpc2xpY2UocmFuZ2UoMTAwKSwgKmFyZ3MpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QocmFuZ2UoKmFyZ3MpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGlzbGljZShyYW5nZSgxMDApLCAqYXJncykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChyYW5nZSgqYXJncykpKQorICAgICAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGlzbGljZShyYW5nZSgxMDApLCAqYXJncykpCisKICAgICBkZWYgdGVzdF90YWtld2hpbGUoc2VsZik6CiAgICAgICAgIGRhdGEgPSBbMSwgMywgNSwgMjAsIDIsIDQsIDYsIDhdCi0gICAgICAgIHVuZGVydGVuID0gbGFtYmRhIHg6IHg8MTAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHRha2V3aGlsZSh1bmRlcnRlbiwgZGF0YSkpLCBbMSwgMywgNV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdCh0YWtld2hpbGUodW5kZXJ0ZW4sIFtdKSksIFtdKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHRha2V3aGlsZSkKQEAgLTgzMCw5ICsxMDk4LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdCh0KSwgWzEsIDEsIDFdKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBuZXh0LCB0KQogCisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KHRha2V3aGlsZSh1bmRlcnRlbiwgZGF0YSkpKSwgWzEsIDMsIDVdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weSh0YWtld2hpbGUodW5kZXJ0ZW4sIGRhdGEpKSksCisgICAgICAgICAgICAgICAgICAgICAgICBbMSwgMywgNV0pCisgICAgICAgIHNlbGYucGlja2xldGVzdCh0YWtld2hpbGUodW5kZXJ0ZW4sIGRhdGEpKQorCiAgICAgZGVmIHRlc3RfZHJvcHdoaWxlKHNlbGYpOgogICAgICAgICBkYXRhID0gWzEsIDMsIDUsIDIwLCAyLCA0LCA2LCA4XQotICAgICAgICB1bmRlcnRlbiA9IGxhbWJkYSB4OiB4PDEwCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkcm9wd2hpbGUodW5kZXJ0ZW4sIGRhdGEpKSwgWzIwLCAyLCA0LCA2LCA4XSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGRyb3B3aGlsZSh1bmRlcnRlbiwgW10pKSwgW10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZHJvcHdoaWxlKQpAQCAtODQxLDExICsxMTE0LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmV4dCwgZHJvcHdoaWxlKDEwLCBbKDQsNSldKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmV4dCwgZHJvcHdoaWxlKGVycmZ1bmMsIFsoNCw1KV0pKQogCisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGRyb3B3aGlsZSh1bmRlcnRlbiwgZGF0YSkpKSwgWzIwLCAyLCA0LCA2LCA4XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoZHJvcHdoaWxlKHVuZGVydGVuLCBkYXRhKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgWzIwLCAyLCA0LCA2LCA4XSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGRyb3B3aGlsZSh1bmRlcnRlbiwgZGF0YSkpCisKICAgICBkZWYgdGVzdF90ZWUoc2VsZik6CiAgICAgICAgIG4gPSAyMDAKLSAgICAgICAgZGVmIGlyYW5nZShuKToKLSAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKG4pOgotICAgICAgICAgICAgICAgIHlpZWxkIGkKIAogICAgICAgICBhLCBiID0gdGVlKFtdKSAgICAgICAgIyB0ZXN0IGVtcHR5IGl0ZXJhdG9yCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgW10pCkBAIC05MzAsNiArMTIwNiw2NyBAQAogICAgICAgICBkZWwgYQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWZlcmVuY2VFcnJvciwgZ2V0YXR0ciwgcCwgJ19fY2xhc3NfXycpCiAKKyAgICAgICAgYW5zID0gbGlzdCgnYWJjJykKKyAgICAgICAgbG9uZ19hbnMgPSBsaXN0KHJhbmdlKDEwMDAwKSkKKworICAgICAgICAjIGNoZWNrIGNvcHkKKyAgICAgICAgYSwgYiA9IHRlZSgnYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShhKSksIGFucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShiKSksIGFucykKKyAgICAgICAgYSwgYiA9IHRlZShsaXN0KHJhbmdlKDEwMDAwKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYSkpLCBsb25nX2FucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShiKSksIGxvbmdfYW5zKQorCisgICAgICAgICMgY2hlY2sgcGFydGlhbGx5IGNvbnN1bWVkIGNvcHkKKyAgICAgICAgYSwgYiA9IHRlZSgnYWJjJykKKyAgICAgICAgdGFrZSgyLCBhKQorICAgICAgICB0YWtlKDEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYSkpLCBhbnNbMjpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGIpKSwgYW5zWzE6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBhbnNbMjpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIGFuc1sxOl0pCisgICAgICAgIGEsIGIgPSB0ZWUocmFuZ2UoMTAwMDApKQorICAgICAgICB0YWtlKDEwMCwgYSkKKyAgICAgICAgdGFrZSg2MCwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShhKSksIGxvbmdfYW5zWzEwMDpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGIpKSwgbG9uZ19hbnNbNjA6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBsb25nX2Fuc1sxMDA6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBsb25nX2Fuc1s2MDpdKQorCisgICAgICAgICMgY2hlY2sgZGVlcGNvcHkKKyAgICAgICAgYSwgYiA9IHRlZSgnYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYSkpLCBhbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGIpKSwgYW5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIGFucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBhbnMpCisgICAgICAgIGEsIGIgPSB0ZWUocmFuZ2UoMTAwMDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShhKSksIGxvbmdfYW5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShiKSksIGxvbmdfYW5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIGxvbmdfYW5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIGxvbmdfYW5zKQorCisgICAgICAgICMgY2hlY2sgcGFydGlhbGx5IGNvbnN1bWVkIGRlZXBjb3B5CisgICAgICAgIGEsIGIgPSB0ZWUoJ2FiYycpCisgICAgICAgIHRha2UoMiwgYSkKKyAgICAgICAgdGFrZSgxLCBiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShhKSksIGFuc1syOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGIpKSwgYW5zWzE6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBhbnNbMjpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIGFuc1sxOl0pCisgICAgICAgIGEsIGIgPSB0ZWUocmFuZ2UoMTAwMDApKQorICAgICAgICB0YWtlKDEwMCwgYSkKKyAgICAgICAgdGFrZSg2MCwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYSkpLCBsb25nX2Fuc1sxMDA6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYikpLCBsb25nX2Fuc1s2MDpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIGxvbmdfYW5zWzEwMDpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIGxvbmdfYW5zWzYwOl0pCisKKyAgICAgICAgIyBjaGVjayBwaWNrbGUKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGl0ZXIodGVlKCdhYmMnKSkpCisgICAgICAgIGEsIGIgPSB0ZWUoJ2FiYycpCisgICAgICAgIHNlbGYucGlja2xldGVzdChhLCBjb21wYXJlPWFucykKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGIsIGNvbXBhcmU9YW5zKQorCiAgICAgIyBJc3N1ZSAxMzQ1NDogQ3Jhc2ggd2hlbiBkZWxldGluZyBiYWNrd2FyZCBpdGVyYXRvciBmcm9tIHRlZSgpCiAgICAgZGVmIHRlc3RfdGVlX2RlbF9iYWNrd2FyZChzZWxmKToKICAgICAgICAgZm9yd2FyZCwgYmFja3dhcmQgPSB0ZWUocmVwZWF0KE5vbmUsIDIwMDAwMDAwKSkKQEAgLTk2MSw5ICsxMjk4LDIxIEBACiAKIGNsYXNzIFRlc3RFeGFtcGxlcyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICBkZWYgdGVzdF9hY2N1bWxhdGUoc2VsZik6CisgICAgZGVmIHRlc3RfYWNjdW11bGF0ZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGFjY3VtdWxhdGUoWzEsMiwzLDQsNV0pKSwgWzEsIDMsIDYsIDEwLCAxNV0pCiAKKyAgICBkZWYgdGVzdF9hY2N1bXVsYXRlX3JlZHVjaWJsZShzZWxmKToKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIGRhdGEgPSBbMSwgMiwgMywgNCwgNV0KKyAgICAgICAgYWNjdW11bGF0ZWQgPSBbMSwgMywgNiwgMTAsIDE1XQorICAgICAgICBpdCA9IGFjY3VtdWxhdGUoZGF0YSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhpdCkpKSwgYWNjdW11bGF0ZWRbOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGl0KSkpLCBhY2N1bXVsYXRlZFsxOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGl0KSksIGFjY3VtdWxhdGVkWzE6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShpdCkpLCBhY2N1bXVsYXRlZFsxOl0pCisKICAgICBkZWYgdGVzdF9jaGFpbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5qb2luKGNoYWluKCdBQkMnLCAnREVGJykpLCAnQUJDREVGJykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9rZXl3b3Jkb25seWFyZy5weSBiL0xpYi90ZXN0L3Rlc3Rfa2V5d29yZG9ubHlhcmcucHkKaW5kZXggMTA4ZWQxOC4uMDUwM2E3ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9rZXl3b3Jkb25seWFyZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2tleXdvcmRvbmx5YXJnLnB5CkBAIC03OCw3ICs3OCw3IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBleGM6CiAgICAgICAgICAgICBmKDEsIDIsIDMpCi0gICAgICAgIGV4cGVjdGVkID0gImYoKSB0YWtlcyBhdCBtb3N0IDIgcG9zaXRpb25hbCBhcmd1bWVudHMgKDMgZ2l2ZW4pIgorICAgICAgICBleHBlY3RlZCA9ICJmKCkgdGFrZXMgZnJvbSAxIHRvIDIgcG9zaXRpb25hbCBhcmd1bWVudHMgYnV0IDMgd2VyZSBnaXZlbiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXhjLmV4Y2VwdGlvbiksIGV4cGVjdGVkKQogCiAgICAgZGVmIHRlc3RTeW50YXhFcnJvckZvckZ1bmN0aW9uQ2FsbChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbGliMnRvMy5weSBiL0xpYi90ZXN0L3Rlc3RfbGliMnRvMy5weQppbmRleCAxYWZhZjcwLi5kZjRjMzdiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xpYjJ0bzMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9saWIydG8zLnB5CkBAIC05LDggKzksOCBAQAogZGVmIHN1aXRlKCk6CiAgICAgdGVzdHMgPSB1bml0dGVzdC5UZXN0U3VpdGUoKQogICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQotICAgIGZvciBtIGluICh0ZXN0X2ZpeGVycywgdGVzdF9weXRyZWUsdGVzdF91dGlsLCB0ZXN0X3JlZmFjdG9yLAotICAgICAgICAgICAgICB0ZXN0X3BhcnNlciwgdGVzdF9tYWluXyk6CisgICAgZm9yIG0gaW4gKHRlc3RfZml4ZXJzLCB0ZXN0X3B5dHJlZSwgdGVzdF91dGlsLCB0ZXN0X3JlZmFjdG9yLCB0ZXN0X3BhcnNlciwKKyAgICAgICAgICAgICAgdGVzdF9tYWluXyk6CiAgICAgICAgIHRlc3RzLmFkZFRlc3RzKGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKG0pKQogICAgIHJldHVybiB0ZXN0cwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xpc3QucHkgYi9MaWIvdGVzdC90ZXN0X2xpc3QucHkKaW5kZXggODRiOGFmZS4uNWRmMjdkMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9saXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbGlzdC5weQpAQCAtMSw1ICsxLDYgQEAKIGltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgbGlzdF90ZXN0cworaW1wb3J0IHBpY2tsZQogCiBjbGFzcyBMaXN0VGVzdChsaXN0X3Rlc3RzLkNvbW1vblRlc3QpOgogICAgIHR5cGUydGVzdCA9IGxpc3QKQEAgLTY5LDYgKzcwLDMzIEBACiAgICAgICAgIGNoZWNrKDEwKSAgICAgICAjIGNoZWNrIG91ciBjaGVja2luZyBjb2RlCiAgICAgICAgIGNoZWNrKDEwMDAwMDApCiAKKyAgICBkZWYgdGVzdF9pdGVyYXRvcl9waWNrbGUoc2VsZik6CisgICAgICAgICMgVXNlcmxpc3QgaXRlcmF0b3JzIGRvbid0IHN1cHBvcnQgcGlja2xpbmcgeWV0IHNpbmNlCisgICAgICAgICMgdGhleSBhcmUgYmFzZWQgb24gZ2VuZXJhdG9ycy4KKyAgICAgICAgZGF0YSA9IHNlbGYudHlwZTJ0ZXN0KFs0LCA1LCA2LCA3XSkKKyAgICAgICAgaXQgPSBpdG9yZyA9IGl0ZXIoZGF0YSkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0b3JnKSwgdHlwZShpdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoaXQpLCBzZWxmLnR5cGUydGVzdChkYXRhKSkKKworICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBuZXh0KGl0KQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGl0KSwgc2VsZi50eXBlMnRlc3QoZGF0YSlbMTpdKQorCisgICAgZGVmIHRlc3RfcmV2ZXJzZWRfcGlja2xlKHNlbGYpOgorICAgICAgICBkYXRhID0gc2VsZi50eXBlMnRlc3QoWzQsIDUsIDYsIDddKQorICAgICAgICBpdCA9IGl0b3JnID0gcmV2ZXJzZWQoZGF0YSkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0b3JnKSwgdHlwZShpdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoaXQpLCBzZWxmLnR5cGUydGVzdChyZXZlcnNlZChkYXRhKSkpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChpdCksIHNlbGYudHlwZTJ0ZXN0KHJldmVyc2VkKGRhdGEpKVsxOl0pCiAKICAgICBkZWYgdGVzdF9ub19jb21kYXRfZm9sZGluZyhzZWxmKToKICAgICAgICAgIyBJc3N1ZSA4ODQ3OiBJbiB0aGUgUEdPIGJ1aWxkLCB0aGUgTVNWQyBsaW5rZXIncyBDT01EQVQgZm9sZGluZwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sb2NhbGUucHkgYi9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weQppbmRleCA4Zjc1NzRiLi41MWE3YmNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weQpAQCAtMTEsNyArMTEsNyBAQAogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgIHRsb2NzID0gKCJlbl9VUy5VVEYtOCIsICJlbl9VUy5JU084ODU5LTEiLCAiZW5fVVMiKQotICAgICAgICBpZiBpbnQob3MudW5hbWUoKVsyXS5zcGxpdCgnLicpWzBdKSA8IDEwOgorICAgICAgICBpZiBpbnQob3MudW5hbWUoKS5yZWxlYXNlLnNwbGl0KCcuJylbMF0pIDwgMTA6CiAgICAgICAgICAgICAjIFRoZSBsb2NhbGUgdGVzdCB3b3JrIGZpbmUgb24gT1NYIDEwLjYsIEkgKHJvbmFsZG91c3NvcmVuKQogICAgICAgICAgICAgIyBoYXZlbid0IGhhZCB0aW1lIHlldCB0byB2ZXJpZnkgaWYgdGVzdHMgd29yayBvbiBPU1ggMTAuNQogICAgICAgICAgICAgIyAoMTAuNCBpcyBrbm93biB0byBiZSBiYWQpCkBAIC00MDEsNiArNDAxLDggQEAKICAgICAgICAgICAgICMgVW5zdXBwb3J0ZWQgbG9jYWxlIG9uIHRoaXMgc3lzdGVtCiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCd0ZXN0IG5lZWRzIFR1cmtpc2ggbG9jYWxlJykKICAgICAgICAgbG9jID0gbG9jYWxlLmdldGxvY2FsZShsb2NhbGUuTENfQ1RZUEUpCisgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICBwcmludCgnZ290IGxvY2FsZSAlYScgJSAobG9jLCkpCiAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0NUWVBFLCBsb2MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jLCBsb2NhbGUuZ2V0bG9jYWxlKGxvY2FsZS5MQ19DVFlQRSkpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weSBiL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weQppbmRleCAyYTNjNzgwLi5jYjkwOGZiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5CkBAIC0zNywxMiArMzcsMTEgQEAKIGltcG9ydCByZQogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNvY2tldAotZnJvbSBzb2NrZXRzZXJ2ZXIgaW1wb3J0IFRocmVhZGluZ1RDUFNlcnZlciwgU3RyZWFtUmVxdWVzdEhhbmRsZXIKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZG91dCwgcnVuX3dpdGhfbG9jYWxlLCBydW5fdW5pdHRlc3QsIHBhdGNoCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVGVzdEhhbmRsZXIsIE1hdGNoZXIKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoY2FwdHVyZWRfc3Rkb3V0LCBydW5fd2l0aF9sb2NhbGUsIHJ1bl91bml0dGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2gsIHJlcXVpcmVzX3psaWIsIFRlc3RIYW5kbGVyLCBNYXRjaGVyKQogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CkBAIC01MCw4ICs0OSwzMSBAQAogaW1wb3J0IHdlYWtyZWYKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCisgICAgIyBUaGUgZm9sbG93aW5nIGltcG9ydHMgYXJlIG5lZWRlZCBvbmx5IGZvciB0ZXN0cyB3aGljaAorICAgICMgcmVxdWlyZSB0aHJlYWRpbmcKKyAgICBpbXBvcnQgYXN5bmNoYXQKKyAgICBpbXBvcnQgYXN5bmNvcmUKKyAgICBpbXBvcnQgZXJybm8KKyAgICBmcm9tIGh0dHAuc2VydmVyIGltcG9ydCBIVFRQU2VydmVyLCBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyCisgICAgaW1wb3J0IHNtdHBkCisgICAgZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlLCBwYXJzZV9xcworICAgIGZyb20gc29ja2V0c2VydmVyIGltcG9ydCAoVGhyZWFkaW5nVURQU2VydmVyLCBEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkaW5nVENQU2VydmVyLCBTdHJlYW1SZXF1ZXN0SGFuZGxlcikKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IHdpbjMyZXZ0bG9nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgd2luMzJldnRsb2cgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IHdpbjMyZXZ0bG9ndXRpbAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHdpbjMyZXZ0bG9ndXRpbCA9IE5vbmUKKyAgICB3aW4zMmV2dGxvZyA9IE5vbmUKK3RyeToKKyAgICBpbXBvcnQgemxpYgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKIAogCiBjbGFzcyBCYXNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC03OSw5ICsxMDEsNyBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgbG9nZ2luZy5fcmVsZWFzZUxvY2soKQogCi0gICAgICAgICMgU2V0IHR3byB1bnVzZWQgbG9nZ2Vyczogb25lIG5vbi1BU0NJSSBhbmQgb25lIFVuaWNvZGUuCi0gICAgICAgICMgVGhpcyBpcyB0byB0ZXN0IGNvcnJlY3Qgb3BlcmF0aW9uIHdoZW4gc29ydGluZyBleGlzdGluZwotICAgICAgICAjIGxvZ2dlcnMgaW4gdGhlIGNvbmZpZ3VyYXRpb24gY29kZS4gU2VlIGlzc3VlIDgyMDEuCisgICAgICAgICMgU2V0IHR3byB1bnVzZWQgbG9nZ2VycwogICAgICAgICBzZWxmLmxvZ2dlcjEgPSBsb2dnaW5nLmdldExvZ2dlcigiXHhhYlx4ZDdceGJiIikKICAgICAgICAgc2VsZi5sb2dnZXIyID0gbG9nZ2luZy5nZXRMb2dnZXIoIlx1MDEzZlx1MDBkNlx1MDA0NyIpCiAKQEAgLTE0Miw4ICsxNjIsNyBAQAogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAjIFN0cmluZ0lPLlN0cmluZ0lPIGxhY2tzIGEgcmVzZXQoKSBtZXRob2QuCiAgICAgICAgICAgICBhY3R1YWxfbGluZXMgPSBzdHJlYW0uZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWN0dWFsX2xpbmVzKSwgbGVuKGV4cGVjdGVkX3ZhbHVlcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICclcyB2cy4gJXMnICUgKGFjdHVhbF9saW5lcywgZXhwZWN0ZWRfdmFsdWVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWN0dWFsX2xpbmVzKSwgbGVuKGV4cGVjdGVkX3ZhbHVlcykpCiAgICAgICAgIGZvciBhY3R1YWwsIGV4cGVjdGVkIGluIHppcChhY3R1YWxfbGluZXMsIGV4cGVjdGVkX3ZhbHVlcyk6CiAgICAgICAgICAgICBtYXRjaCA9IHBhdC5zZWFyY2goYWN0dWFsKQogICAgICAgICAgICAgaWYgbm90IG1hdGNoOgpAQCAtMTgxLDE3ICsyMDAsMTcgQEAKIAogICAgICAgICBJTkYubG9nKGxvZ2dpbmcuQ1JJVElDQUwsIG0oKSkKICAgICAgICAgSU5GLmVycm9yKG0oKSkKLSAgICAgICAgSU5GLndhcm4obSgpKQorICAgICAgICBJTkYud2FybmluZyhtKCkpCiAgICAgICAgIElORi5pbmZvKG0oKSkKIAogICAgICAgICBERUIubG9nKGxvZ2dpbmcuQ1JJVElDQUwsIG0oKSkKICAgICAgICAgREVCLmVycm9yKG0oKSkKLSAgICAgICAgREVCLndhcm4gKG0oKSkKLSAgICAgICAgREVCLmluZm8gKG0oKSkKKyAgICAgICAgREVCLndhcm5pbmcobSgpKQorICAgICAgICBERUIuaW5mbyhtKCkpCiAgICAgICAgIERFQi5kZWJ1ZyhtKCkpCiAKICAgICAgICAgIyBUaGVzZSBzaG91bGQgbm90IGxvZy4KLSAgICAgICAgRVJSLndhcm4obSgpKQorICAgICAgICBFUlIud2FybmluZyhtKCkpCiAgICAgICAgIEVSUi5pbmZvKG0oKSkKICAgICAgICAgRVJSLmRlYnVnKG0oKSkKIApAQCAtMjI1LDcgKzI0NCw3IEBACiAgICAgICAgIElORl9FUlIuZXJyb3IobSgpKQogCiAgICAgICAgICMgVGhlc2Ugc2hvdWxkIG5vdCBsb2cuCi0gICAgICAgIElORl9FUlIud2FybihtKCkpCisgICAgICAgIElORl9FUlIud2FybmluZyhtKCkpCiAgICAgICAgIElORl9FUlIuaW5mbyhtKCkpCiAgICAgICAgIElORl9FUlIuZGVidWcobSgpKQogCkBAIC0yNDksMTQgKzI2OCwxNCBAQAogICAgICAgICAjIFRoZXNlIHNob3VsZCBsb2cuCiAgICAgICAgIElORl9VTkRFRi5sb2cobG9nZ2luZy5DUklUSUNBTCwgbSgpKQogICAgICAgICBJTkZfVU5ERUYuZXJyb3IobSgpKQotICAgICAgICBJTkZfVU5ERUYud2FybihtKCkpCisgICAgICAgIElORl9VTkRFRi53YXJuaW5nKG0oKSkKICAgICAgICAgSU5GX1VOREVGLmluZm8obSgpKQogICAgICAgICBJTkZfRVJSX1VOREVGLmxvZyhsb2dnaW5nLkNSSVRJQ0FMLCBtKCkpCiAgICAgICAgIElORl9FUlJfVU5ERUYuZXJyb3IobSgpKQogCiAgICAgICAgICMgVGhlc2Ugc2hvdWxkIG5vdCBsb2cuCiAgICAgICAgIElORl9VTkRFRi5kZWJ1ZyhtKCkpCi0gICAgICAgIElORl9FUlJfVU5ERUYud2FybihtKCkpCisgICAgICAgIElORl9FUlJfVU5ERUYud2FybmluZyhtKCkpCiAgICAgICAgIElORl9FUlJfVU5ERUYuaW5mbyhtKCkpCiAgICAgICAgIElORl9FUlJfVU5ERUYuZGVidWcobSgpKQogCkBAIC0yOTUsOCArMzE0LDYgQEAKICAgICAgICAgICAgICgnSU5GLkJBRFBBUkVOVCcsICdJTkZPJywgJzQnKSwKICAgICAgICAgXSkKIAotICAgIGRlZiB0ZXN0X2ludmFsaWRfbmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsb2dnaW5nLmdldExvZ2dlciwgYW55KQogCiBjbGFzcyBCYXNpY0ZpbHRlclRlc3QoQmFzZVRlc3QpOgogCkBAIC0zNTUsNiArMzcyLDEwIEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBoYW5kbGVyLnJlbW92ZUZpbHRlcihmaWx0ZXJmdW5jKQogCisgICAgZGVmIHRlc3RfZW1wdHlfZmlsdGVyKHNlbGYpOgorICAgICAgICBmID0gbG9nZ2luZy5GaWx0ZXIoKQorICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbmFtZSc6ICdzcGFtLmVnZ3MnfSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYuZmlsdGVyKHIpKQogCiAjCiAjICAgRmlyc3QsIHdlIGRlZmluZSBvdXIgbGV2ZWxzLiBUaGVyZSBjYW4gYmUgYXMgbWFueSBhcyB5b3Ugd2FudCAtIHRoZSBvbmx5CkBAIC00OTgsNiArNTE5LDQ3OCBAQAogICAgICAgICAgICAgaGFuZGxlci5yZW1vdmVGaWx0ZXIoZ2FycikKIAogCitjbGFzcyBIYW5kbGVyVGVzdChCYXNlVGVzdCk6CisgICAgZGVmIHRlc3RfbmFtZShzZWxmKToKKyAgICAgICAgaCA9IGxvZ2dpbmcuSGFuZGxlcigpCisgICAgICAgIGgubmFtZSA9ICdnZW5lcmljJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgubmFtZSwgJ2dlbmVyaWMnKQorICAgICAgICBoLm5hbWUgPSAnYW5vdGhlcmdlbmVyaWMnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5uYW1lLCAnYW5vdGhlcmdlbmVyaWMnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBoLmVtaXQsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9idWlsdGluX2hhbmRsZXJzKHNlbGYpOgorICAgICAgICAjIFdlIGNhbid0IGFjdHVhbGx5ICp1c2UqIHRvbyBtYW55IGhhbmRsZXJzIGluIHRoZSB0ZXN0cywKKyAgICAgICAgIyBidXQgd2UgY2FuIHRyeSBpbnN0YW50aWF0aW5nIHRoZW0gd2l0aCB2YXJpb3VzIG9wdGlvbnMKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnbGludXgnLCAnZGFyd2luJyk6CisgICAgICAgICAgICBmb3IgZXhpc3RpbmcgaW4gKFRydWUsIEZhbHNlKToKKyAgICAgICAgICAgICAgICBmZCwgZm4gPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKKyAgICAgICAgICAgICAgICBvcy5jbG9zZShmZCkKKyAgICAgICAgICAgICAgICBpZiBub3QgZXhpc3Rpbmc6CisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhmbikKKyAgICAgICAgICAgICAgICBoID0gbG9nZ2luZy5oYW5kbGVycy5XYXRjaGVkRmlsZUhhbmRsZXIoZm4sIGRlbGF5PVRydWUpCisgICAgICAgICAgICAgICAgaWYgZXhpc3Rpbmc6CisgICAgICAgICAgICAgICAgICAgIGRldiwgaW5vID0gaC5kZXYsIGguaW5vCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGV2LCAtMSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbm8sIC0xKQorICAgICAgICAgICAgICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbXNnJzogJ1Rlc3QnfSkKKyAgICAgICAgICAgICAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgICAgICAgICAgICAgIyBOb3cgcmVtb3ZlIHRoZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm4pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZm4pKQorICAgICAgICAgICAgICAgICAgICAjIFRoZSBuZXh0IGNhbGwgc2hvdWxkIHJlY3JlYXRlIHRoZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBoLmhhbmRsZShyKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZm4pKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kZXYsIC0xKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguaW5vLCAtMSkKKyAgICAgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBpZiBleGlzdGluZzoKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuKQorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgICAgIHNvY2tuYW1lID0gJy92YXIvcnVuL3N5c2xvZycKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc29ja25hbWUgPSAnL2Rldi9sb2cnCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuU3lzTG9nSGFuZGxlcihzb2NrbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZmFjaWxpdHksIGguTE9HX1VTRVIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGgudW5peHNvY2tldCkKKyAgICAgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6ICMgc3lzbG9nZCBtaWdodCBub3QgYmUgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBmb3IgbWV0aG9kIGluICgnR0VUJywgJ1BPU1QnLCAnUFVUJyk6CisgICAgICAgICAgICBpZiBtZXRob2QgPT0gJ1BVVCc6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5oYW5kbGVycy5IVFRQSGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9jYWxob3N0JywgJy9sb2cnLCBtZXRob2QpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGggPSBsb2dnaW5nLmhhbmRsZXJzLkhUVFBIYW5kbGVyKCdsb2NhbGhvc3QnLCAnL2xvZycsIG1ldGhvZCkKKyAgICAgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuQnVmZmVyaW5nSGFuZGxlcigwKQorICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHt9KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaC5zaG91bGRGbHVzaChyKSkKKyAgICAgICAgaC5jbG9zZSgpCisgICAgICAgIGggPSBsb2dnaW5nLmhhbmRsZXJzLkJ1ZmZlcmluZ0hhbmRsZXIoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoLnNob3VsZEZsdXNoKHIpKQorICAgICAgICBoLmNsb3NlKCkKKworICAgIEB1bml0dGVzdC5za2lwSWYob3MubmFtZSA9PSAnbnQnLCAnV2F0Y2hlZEZpbGVIYW5kbGVyIG5vdCBhcHByb3ByaWF0ZSBmb3IgV2luZG93cy4nKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3RfcmFjZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTQ2MzIgcmVmZXJzLgorICAgICAgICBkZWYgcmVtb3ZlX2xvb3AoZm5hbWUsIHRyaWVzKToKKyAgICAgICAgICAgIGZvciBfIGluIHJhbmdlKHRyaWVzKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhmbmFtZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMDQgKiByYW5kb20ucmFuZGludCgwLCA0KSkKKworICAgICAgICBkZWxfY291bnQgPSA1MDAKKyAgICAgICAgbG9nX2NvdW50ID0gNTAwCisKKyAgICAgICAgZm9yIGRlbGF5IGluIChGYWxzZSwgVHJ1ZSk6CisgICAgICAgICAgICBmZCwgZm4gPSB0ZW1wZmlsZS5ta3N0ZW1wKCcubG9nJywgJ3Rlc3RfbG9nZ2luZy0zLScpCisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKyAgICAgICAgICAgIHJlbW92ZXIgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1yZW1vdmVfbG9vcCwgYXJncz0oZm4sIGRlbF9jb3VudCkpCisgICAgICAgICAgICByZW1vdmVyLmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgIHJlbW92ZXIuc3RhcnQoKQorICAgICAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuV2F0Y2hlZEZpbGVIYW5kbGVyKGZuLCBkZWxheT1kZWxheSkKKyAgICAgICAgICAgIGYgPSBsb2dnaW5nLkZvcm1hdHRlcignJShhc2N0aW1lKXM6ICUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzJykKKyAgICAgICAgICAgIGguc2V0Rm9ybWF0dGVyKGYpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2UobG9nX2NvdW50KToKKyAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAwNSkKKyAgICAgICAgICAgICAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7J21zZyc6ICd0ZXN0aW5nJyB9KQorICAgICAgICAgICAgICAgICAgICBoLmhhbmRsZShyKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICByZW1vdmVyLmpvaW4oKQorICAgICAgICAgICAgICAgIGguY2xvc2UoKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGZuKToKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuKQorCisKK2NsYXNzIEJhZFN0cmVhbShvYmplY3QpOgorICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdkZWxpYmVyYXRlIG1pc3Rha2UnKQorCitjbGFzcyBUZXN0U3RyZWFtSGFuZGxlcihsb2dnaW5nLlN0cmVhbUhhbmRsZXIpOgorICAgIGRlZiBoYW5kbGVFcnJvcihzZWxmLCByZWNvcmQpOgorICAgICAgICBzZWxmLmVycm9yX3JlY29yZCA9IHJlY29yZAorCitjbGFzcyBTdHJlYW1IYW5kbGVyVGVzdChCYXNlVGVzdCk6CisgICAgZGVmIHRlc3RfZXJyb3JfaGFuZGxpbmcoc2VsZik6CisgICAgICAgIGggPSBUZXN0U3RyZWFtSGFuZGxlcihCYWRTdHJlYW0oKSkKKyAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7fSkKKyAgICAgICAgb2xkX3JhaXNlID0gbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMKKyAgICAgICAgb2xkX3N0ZGVyciA9IHN5cy5zdGRlcnIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaC5lcnJvcl9yZWNvcmQsIHIpCisgICAgICAgICAgICBoID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKEJhZFN0cmVhbSgpKQorICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHNpbyA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgICAgIGguaGFuZGxlKHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdcblJ1bnRpbWVFcnJvcjogZGVsaWJlcmF0ZSBtaXN0YWtlXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaW8uZ2V0dmFsdWUoKSkKKyAgICAgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gRmFsc2UKKyAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzaW8gPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICBoLmhhbmRsZShyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgc2lvLmdldHZhbHVlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IG9sZF9yYWlzZQorICAgICAgICAgICAgc3lzLnN0ZGVyciA9IG9sZF9zdGRlcnIKKworIyAtLSBUaGUgZm9sbG93aW5nIHNlY3Rpb24gY291bGQgYmUgbW92ZWQgaW50byBhIHNlcnZlcl9oZWxwZXIucHkgbW9kdWxlCisjIC0tIGlmIGl0IHByb3ZlcyB0byBiZSBvZiB3aWRlciB1dGlsaXR5IHRoYW4ganVzdCB0ZXN0X2xvZ2dpbmcKKworaWYgdGhyZWFkaW5nOgorICAgIGNsYXNzIFRlc3RTTVRQQ2hhbm5lbChzbXRwZC5TTVRQQ2hhbm5lbCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGRlcml2ZWQgY2xhc3MgaGFzIGhhZCB0byBiZSBjcmVhdGVkIGJlY2F1c2Ugc210cGQgZG9lcyBub3QKKyAgICAgICAgc3VwcG9ydCB1c2Ugb2YgY3VzdG9tIGNoYW5uZWwgbWFwcywgYWx0aG91Z2ggdGhleSBhcmUgYWxsb3dlZCBieQorICAgICAgICBhc3luY29yZSdzIGRlc2lnbi4gSXNzdWUgIzExOTU5IGhhcyBiZWVuIHJhaXNlZCB0byBhZGRyZXNzIHRoaXMsCisgICAgICAgIGFuZCBpZiByZXNvbHZlZCBzYXRpc2ZhY3RvcmlseSwgc29tZSBvZiB0aGlzIGNvZGUgY2FuIGJlIHJlbW92ZWQuCisgICAgICAgICIiIgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVyLCBjb25uLCBhZGRyLCBzb2NrbWFwKToKKyAgICAgICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQuX19pbml0X18oc2VsZiwgY29ubiwgc29ja21hcCkKKyAgICAgICAgICAgIHNlbGYuc210cF9zZXJ2ZXIgPSBzZXJ2ZXIKKyAgICAgICAgICAgIHNlbGYuY29ubiA9IGNvbm4KKyAgICAgICAgICAgIHNlbGYuYWRkciA9IGFkZHIKKyAgICAgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gTm9uZQorICAgICAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcyA9IFtdCisgICAgICAgICAgICBzZWxmLnNtdHBfc3RhdGUgPSBzZWxmLkNPTU1BTkQKKyAgICAgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9ICcnCisgICAgICAgICAgICBzZWxmLm1haWxmcm9tID0gTm9uZQorICAgICAgICAgICAgc2VsZi5yY3B0dG9zID0gW10KKyAgICAgICAgICAgIHNlbGYucmVjZWl2ZWRfZGF0YSA9ICcnCisgICAgICAgICAgICBzZWxmLmZxZG4gPSBzb2NrZXQuZ2V0ZnFkbigpCisgICAgICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLnBlZXIgPSBjb25uLmdldHBlZXJuYW1lKCkKKyAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICMgYSByYWNlIGNvbmRpdGlvbiAgbWF5IG9jY3VyIGlmIHRoZSBvdGhlciBlbmQgaXMgY2xvc2luZworICAgICAgICAgICAgICAgICMgYmVmb3JlIHdlIGNhbiBnZXQgdGhlIHBlZXJuYW1lCisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisgICAgICAgICAgICAgICAgaWYgZXJyLmFyZ3NbMF0gIT0gZXJybm8uRU5PVENPTk46CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBzZWxmLnB1c2goJzIyMCAlcyAlcycgJSAoc2VsZi5mcWRuLCBzbXRwZC5fX3ZlcnNpb25fXykpCisgICAgICAgICAgICBzZWxmLnNldF90ZXJtaW5hdG9yKGInXHJcbicpCisgICAgICAgICAgICBzZWxmLmV4dGVuZGVkX3NtdHAgPSBGYWxzZQorCisKKyAgICBjbGFzcyBUZXN0U01UUFNlcnZlcihzbXRwZC5TTVRQU2VydmVyKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIHRlc3QgU01UUCBzZXJ2ZXIuCisKKyAgICAgICAgOnBhcmFtIGFkZHI6IEEgKGhvc3QsIHBvcnQpIHR1cGxlIHdoaWNoIHRoZSBzZXJ2ZXIgbGlzdGVucyBvbi4KKyAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc3BlY2lmeSBhIHBvcnQgdmFsdWUgb2YgemVybzogdGhlIHNlcnZlcidzCisgICAgICAgICAgICAgICAgICAgICAqcG9ydCogYXR0cmlidXRlIHdpbGwgaG9sZCB0aGUgYWN0dWFsIHBvcnQgbnVtYmVyCisgICAgICAgICAgICAgICAgICAgICB1c2VkLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBjbGllbnQgY29ubmVjdGlvbnMuCisgICAgICAgIDpwYXJhbSBoYW5kbGVyOiBBIGNhbGxhYmxlIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHRvIHByb2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nIG1lc3NhZ2VzLiBUaGUgaGFuZGxlciB3aWxsIGJlIHBhc3NlZAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNsaWVudCBhZGRyZXNzIHR1cGxlLCB3aG8gdGhlIG1lc3NhZ2UgaXMgZnJvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGEgbGlzdCBvZiByZWNpcGllbnRzIGFuZCB0aGUgbWVzc2FnZSBkYXRhLgorICAgICAgICA6cGFyYW0gcG9sbF9pbnRlcnZhbDogVGhlIGludGVydmFsLCBpbiBzZWNvbmRzLCB1c2VkIGluIHRoZSB1bmRlcmx5aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZnVuYzpgc2VsZWN0YCBvciA6ZnVuYzpgcG9sbGAgY2FsbCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZ1bmM6YGFzeW5jb3JlLmxvb3BgLgorICAgICAgICA6cGFyYW0gc29ja21hcDogQSBkaWN0aW9uYXJ5IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBob2xkCisgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YGFzeW5jb3JlLmRpc3BhdGNoZXJgIGluc3RhbmNlcyB1c2VkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICA6ZnVuYzpgYXN5bmNvcmUubG9vcGAuIFRoaXMgYXZvaWRzIGNoYW5naW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgOm1vZDpgYXN5bmNvcmVgIG1vZHVsZSdzIGdsb2JhbCBzdGF0ZS4KKyAgICAgICAgIiIiCisgICAgICAgIGNoYW5uZWxfY2xhc3MgPSBUZXN0U01UUENoYW5uZWwKKworICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkciwgaGFuZGxlciwgcG9sbF9pbnRlcnZhbCwgc29ja21hcCk6CisgICAgICAgICAgICBzZWxmLl9sb2NhbGFkZHIgPSBhZGRyCisgICAgICAgICAgICBzZWxmLl9yZW1vdGVhZGRyID0gTm9uZQorICAgICAgICAgICAgc2VsZi5kYXRhX3NpemVfbGltaXQgPSBOb25lCisgICAgICAgICAgICBzZWxmLnNvY2ttYXAgPSBzb2NrbWFwCisgICAgICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIG1hcD1zb2NrbWFwKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICAgICAgc29jay5zZXRibG9ja2luZygwKQorICAgICAgICAgICAgICAgIHNlbGYuc2V0X3NvY2tldChzb2NrLCBtYXA9c29ja21hcCkKKyAgICAgICAgICAgICAgICAjIHRyeSB0byByZS11c2UgYSBzZXJ2ZXIgcG9ydCBpZiBwb3NzaWJsZQorICAgICAgICAgICAgICAgIHNlbGYuc2V0X3JldXNlX2FkZHIoKQorICAgICAgICAgICAgICAgIHNlbGYuYmluZChhZGRyKQorICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IHNvY2suZ2V0c29ja25hbWUoKVsxXQorICAgICAgICAgICAgICAgIHNlbGYubGlzdGVuKDUpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHNlbGYuX2hhbmRsZXIgPSBoYW5kbGVyCisgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisgICAgICAgICAgICBzZWxmLnBvbGxfaW50ZXJ2YWwgPSBwb2xsX2ludGVydmFsCisKKyAgICAgICAgZGVmIGhhbmRsZV9hY2NlcHRlZChzZWxmLCBjb25uLCBhZGRyKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgUmVkZWZpbmVkIG9ubHkgYmVjYXVzZSB0aGUgYmFzZSBjbGFzcyBkb2VzIG5vdCBwYXNzIGluIGEKKyAgICAgICAgICAgIG1hcCwgZm9yY2luZyB1c2Ugb2YgYSBnbG9iYWwgaW4gOm1vZDpgYXN5bmNvcmVgLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBjaGFubmVsID0gc2VsZi5jaGFubmVsX2NsYXNzKHNlbGYsIGNvbm4sIGFkZHIsIHNlbGYuc29ja21hcCkKKworICAgICAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgRGVsZWdhdGVzIHRvIHRoZSBoYW5kbGVyIHBhc3NlZCBpbiB0byB0aGUgc2VydmVyJ3MgY29uc3RydWN0b3IuCisKKyAgICAgICAgICAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGJlIGEgdGVzdCBjYXNlIG1ldGhvZC4KKyAgICAgICAgICAgIDpwYXJhbSBwZWVyOiBUaGUgY2xpZW50IChob3N0LCBwb3J0KSB0dXBsZS4KKyAgICAgICAgICAgIDpwYXJhbSBtYWlsZnJvbTogVGhlIGFkZHJlc3Mgb2YgdGhlIHNlbmRlci4KKyAgICAgICAgICAgIDpwYXJhbSByY3B0dG9zOiBUaGUgYWRkcmVzc2VzIG9mIHRoZSByZWNpcGllbnRzLgorICAgICAgICAgICAgOnBhcmFtIGRhdGE6IFRoZSBtZXNzYWdlLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLl9oYW5kbGVyKHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKQorCisgICAgICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgU3RhcnQgdGhlIHNlcnZlciBydW5uaW5nIG9uIGEgc2VwYXJhdGUgZGFlbW9uIHRocmVhZC4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuc2VydmVfZm9yZXZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHNlbGYucG9sbF9pbnRlcnZhbCwpKQorICAgICAgICAgICAgdC5zZXREYWVtb24oVHJ1ZSkKKyAgICAgICAgICAgIHQuc3RhcnQoKQorCisgICAgICAgIGRlZiBzZXJ2ZV9mb3JldmVyKHNlbGYsIHBvbGxfaW50ZXJ2YWwpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBSdW4gdGhlIDptb2Q6YGFzeW5jb3JlYCBsb29wIHVudGlsIG5vcm1hbCB0ZXJtaW5hdGlvbgorICAgICAgICAgICAgY29uZGl0aW9ucyBhcmlzZS4KKyAgICAgICAgICAgIDpwYXJhbSBwb2xsX2ludGVydmFsOiBUaGUgaW50ZXJ2YWwsIGluIHNlY29uZHMsIHVzZWQgaW4gdGhlIHVuZGVybHlpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZnVuYzpgc2VsZWN0YCBvciA6ZnVuYzpgcG9sbGAgY2FsbCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmdW5jOmBhc3luY29yZS5sb29wYC4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGFzeW5jb3JlLmxvb3AocG9sbF9pbnRlcnZhbCwgbWFwPXNlbGYuc29ja21hcCkKKyAgICAgICAgICAgIGV4Y2VwdCBzZWxlY3QuZXJyb3I6CisgICAgICAgICAgICAgICAgIyBPbiBGcmVlQlNEIDgsIGNsb3NpbmcgdGhlIHNlcnZlciByZXBlYXRhYmx5CisgICAgICAgICAgICAgICAgIyByYWlzZXMgdGhpcyBlcnJvci4gV2Ugc3dhbGxvdyBpdCBpZiB0aGUKKyAgICAgICAgICAgICAgICAjIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuCisgICAgICAgICAgICAgICAgaWYgc2VsZi5jb25uZWN0ZWQgb3Igc2VsZi5hY2NlcHRpbmc6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgZGVmIHN0b3Aoc2VsZiwgdGltZW91dD1Ob25lKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgU3RvcCB0aGUgdGhyZWFkIGJ5IGNsb3NpbmcgdGhlIHNlcnZlciBpbnN0YW5jZS4KKyAgICAgICAgICAgIFdhaXQgZm9yIHRoZSBzZXJ2ZXIgdGhyZWFkIHRvIHRlcm1pbmF0ZS4KKworICAgICAgICAgICAgOnBhcmFtIHRpbWVvdXQ6IEhvdyBsb25nIHRvIHdhaXQgZm9yIHRoZSBzZXJ2ZXIgdGhyZWFkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGVybWluYXRlLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZC5qb2luKHRpbWVvdXQpCisgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisKKyAgICBjbGFzcyBDb250cm9sTWl4aW4ob2JqZWN0KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgbWl4aW4gaXMgdXNlZCB0byBzdGFydCBhIHNlcnZlciBvbiBhIHNlcGFyYXRlIHRocmVhZCwgYW5kCisgICAgICAgIHNodXQgaXQgZG93biBwcm9ncmFtbWF0aWNhbGx5LiBSZXF1ZXN0IGhhbmRsaW5nIGlzIHNpbXBsaWZpZWQgLSBpbnN0ZWFkCisgICAgICAgIG9mIG5lZWRpbmcgdG8gZGVyaXZlIGEgc3VpdGFibGUgUmVxdWVzdEhhbmRsZXIgc3ViY2xhc3MsIHlvdSBqdXN0CisgICAgICAgIHByb3ZpZGUgYSBjYWxsYWJsZSB3aGljaCB3aWxsIGJlIHBhc3NlZCBlYWNoIHJlY2VpdmVkIHJlcXVlc3QgdG8gYmUKKyAgICAgICAgcHJvY2Vzc2VkLgorCisgICAgICAgIDpwYXJhbSBoYW5kbGVyOiBBIGhhbmRsZXIgY2FsbGFibGUgd2hpY2ggd2lsbCBiZSBjYWxsZWQgd2l0aCBhCisgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGUgcGFyYW1ldGVyIC0gdGhlIHJlcXVlc3QgLSBpbiBvcmRlciB0bworICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VzcyB0aGUgcmVxdWVzdC4gVGhpcyBoYW5kbGVyIGlzIGNhbGxlZCBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlciB0aHJlYWQsIGVmZmVjdGl2ZWx5IG1lYW5pbmcgdGhhdCByZXF1ZXN0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZCBzZXJpYWxseS4gV2hpbGUgbm90IHF1aXRlIFdlYiBzY2FsZSA7LSksCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHNob3VsZCBiZSBmaW5lIGZvciB0ZXN0aW5nIGFwcGxpY2F0aW9ucy4KKyAgICAgICAgOnBhcmFtIHBvbGxfaW50ZXJ2YWw6IFRoZSBwb2xsaW5nIGludGVydmFsIGluIHNlY29uZHMuCisgICAgICAgICIiIgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaGFuZGxlciwgcG9sbF9pbnRlcnZhbCk6CisgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisgICAgICAgICAgICBzZWxmLnBvbGxfaW50ZXJ2YWwgPSBwb2xsX2ludGVydmFsCisgICAgICAgICAgICBzZWxmLl9oYW5kbGVyID0gaGFuZGxlcgorICAgICAgICAgICAgc2VsZi5yZWFkeSA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICAgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBDcmVhdGUgYSBkYWVtb24gdGhyZWFkIHRvIHJ1biB0aGUgc2VydmVyLCBhbmQgc3RhcnQgaXQuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLnNlcnZlX2ZvcmV2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLnBvbGxfaW50ZXJ2YWwsKSkKKyAgICAgICAgICAgIHQuc2V0RGFlbW9uKFRydWUpCisgICAgICAgICAgICB0LnN0YXJ0KCkKKworICAgICAgICBkZWYgc2VydmVfZm9yZXZlcihzZWxmLCBwb2xsX2ludGVydmFsKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgUnVuIHRoZSBzZXJ2ZXIuIFNldCB0aGUgcmVhZHkgZmxhZyBiZWZvcmUgZW50ZXJpbmcgdGhlCisgICAgICAgICAgICBzZXJ2aWNlIGxvb3AuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYucmVhZHkuc2V0KCkKKyAgICAgICAgICAgIHN1cGVyKENvbnRyb2xNaXhpbiwgc2VsZikuc2VydmVfZm9yZXZlcihwb2xsX2ludGVydmFsKQorCisgICAgICAgIGRlZiBzdG9wKHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFRlbGwgdGhlIHNlcnZlciB0aHJlYWQgdG8gc3RvcCwgYW5kIHdhaXQgZm9yIGl0IHRvIGRvIHNvLgorCisgICAgICAgICAgICA6cGFyYW0gdGltZW91dDogSG93IGxvbmcgdG8gd2FpdCBmb3IgdGhlIHNlcnZlciB0aHJlYWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0ZXJtaW5hdGUuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYuc2h1dGRvd24oKQorICAgICAgICAgICAgaWYgc2VsZi5fdGhyZWFkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX3RocmVhZC5qb2luKHRpbWVvdXQpCisgICAgICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5yZWFkeS5jbGVhcigpCisKKyAgICBjbGFzcyBUZXN0SFRUUFNlcnZlcihDb250cm9sTWl4aW4sIEhUVFBTZXJ2ZXIpOgorICAgICAgICAiIiIKKyAgICAgICAgQW4gSFRUUCBzZXJ2ZXIgd2hpY2ggaXMgY29udHJvbGxhYmxlIHVzaW5nIDpjbGFzczpgQ29udHJvbE1peGluYC4KKworICAgICAgICA6cGFyYW0gYWRkcjogQSB0dXBsZSB3aXRoIHRoZSBJUCBhZGRyZXNzIGFuZCBwb3J0IHRvIGxpc3RlbiBvbi4KKyAgICAgICAgOnBhcmFtIGhhbmRsZXI6IEEgaGFuZGxlciBjYWxsYWJsZSB3aGljaCB3aWxsIGJlIGNhbGxlZCB3aXRoIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZSBwYXJhbWV0ZXIgLSB0aGUgcmVxdWVzdCAtIGluIG9yZGVyIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzIHRoZSByZXF1ZXN0LgorICAgICAgICA6cGFyYW0gcG9sbF9pbnRlcnZhbDogVGhlIHBvbGxpbmcgaW50ZXJ2YWwgaW4gc2Vjb25kcy4KKyAgICAgICAgOnBhcmFtIGxvZzogUGFzcyBgYFRydWVgYCB0byBlbmFibGUgbG9nIG1lc3NhZ2VzLgorICAgICAgICAiIiIKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIGhhbmRsZXIsIHBvbGxfaW50ZXJ2YWw9MC41LAorICAgICAgICAgICAgICAgICAgICAgbG9nPUZhbHNlLCBzc2xjdHg9Tm9uZSk6CisgICAgICAgICAgICBjbGFzcyBEZWxlZ2F0aW5nSFRUUFJlcXVlc3RIYW5kbGVyKEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIpOgorICAgICAgICAgICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lLCBkZWZhdWx0PU5vbmUpOgorICAgICAgICAgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ2RvXycpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucHJvY2Vzc19yZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCisKKyAgICAgICAgICAgICAgICBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5faGFuZGxlcihzZWxmKQorCisgICAgICAgICAgICAgICAgZGVmIGxvZ19tZXNzYWdlKHNlbGYsIGZvcm1hdCwgKmFyZ3MpOgorICAgICAgICAgICAgICAgICAgICBpZiBsb2c6CisgICAgICAgICAgICAgICAgICAgICAgICBzdXBlcihEZWxlZ2F0aW5nSFRUUFJlcXVlc3RIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZikubG9nX21lc3NhZ2UoZm9ybWF0LCAqYXJncykKKyAgICAgICAgICAgIEhUVFBTZXJ2ZXIuX19pbml0X18oc2VsZiwgYWRkciwgRGVsZWdhdGluZ0hUVFBSZXF1ZXN0SGFuZGxlcikKKyAgICAgICAgICAgIENvbnRyb2xNaXhpbi5fX2luaXRfXyhzZWxmLCBoYW5kbGVyLCBwb2xsX2ludGVydmFsKQorICAgICAgICAgICAgc2VsZi5zc2xjdHggPSBzc2xjdHgKKworICAgICAgICBkZWYgZ2V0X3JlcXVlc3Qoc2VsZik6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc29jaywgYWRkciA9IHNlbGYuc29ja2V0LmFjY2VwdCgpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5zc2xjdHg6CisgICAgICAgICAgICAgICAgICAgIHNvY2sgPSBzZWxmLnNzbGN0eC53cmFwX3NvY2tldChzb2NrLCBzZXJ2ZXJfc2lkZT1UcnVlKQorICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICMgc29ja2V0IGVycm9ycyBhcmUgc2lsZW5jZWQgYnkgdGhlIGNhbGxlciwgcHJpbnQgdGhlbSBoZXJlCisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiR290IGFuIGVycm9yOlxuJXNcbiIgJSBlKQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICByZXR1cm4gc29jaywgYWRkcgorCisgICAgY2xhc3MgVGVzdFRDUFNlcnZlcihDb250cm9sTWl4aW4sIFRocmVhZGluZ1RDUFNlcnZlcik6CisgICAgICAgICIiIgorICAgICAgICBBIFRDUCBzZXJ2ZXIgd2hpY2ggaXMgY29udHJvbGxhYmxlIHVzaW5nIDpjbGFzczpgQ29udHJvbE1peGluYC4KKworICAgICAgICA6cGFyYW0gYWRkcjogQSB0dXBsZSB3aXRoIHRoZSBJUCBhZGRyZXNzIGFuZCBwb3J0IHRvIGxpc3RlbiBvbi4KKyAgICAgICAgOnBhcmFtIGhhbmRsZXI6IEEgaGFuZGxlciBjYWxsYWJsZSB3aGljaCB3aWxsIGJlIGNhbGxlZCB3aXRoIGEgc2luZ2xlCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgLSB0aGUgcmVxdWVzdCAtIGluIG9yZGVyIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QuCisgICAgICAgIDpwYXJhbSBwb2xsX2ludGVydmFsOiBUaGUgcG9sbGluZyBpbnRlcnZhbCBpbiBzZWNvbmRzLgorICAgICAgICA6YmluZF9hbmRfYWN0aXZhdGU6IElmIFRydWUgKHRoZSBkZWZhdWx0KSwgYmluZHMgdGhlIHNlcnZlciBhbmQgc3RhcnRzIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuaW5nLiBJZiBGYWxzZSwgeW91IG5lZWQgdG8gY2FsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptZXRoOmBzZXJ2ZXJfYmluZGAgYW5kIDptZXRoOmBzZXJ2ZXJfYWN0aXZhdGVgIGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29tZSBsYXRlciB0aW1lIGJlZm9yZSBjYWxsaW5nIDptZXRoOmBzdGFydGAsIHNvIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2VydmVyIHdpbGwgc2V0IHVwIHRoZSBzb2NrZXQgYW5kIGxpc3RlbiBvbiBpdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgYWxsb3dfcmV1c2VfYWRkcmVzcyA9IFRydWUKKworICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkciwgaGFuZGxlciwgcG9sbF9pbnRlcnZhbD0wLjUsCisgICAgICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlKToKKyAgICAgICAgICAgIGNsYXNzIERlbGVnYXRpbmdUQ1BSZXF1ZXN0SGFuZGxlcihTdHJlYW1SZXF1ZXN0SGFuZGxlcik6CisKKyAgICAgICAgICAgICAgICBkZWYgaGFuZGxlKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5faGFuZGxlcihzZWxmKQorICAgICAgICAgICAgVGhyZWFkaW5nVENQU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIsIERlbGVnYXRpbmdUQ1BSZXF1ZXN0SGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZSkKKyAgICAgICAgICAgIENvbnRyb2xNaXhpbi5fX2luaXRfXyhzZWxmLCBoYW5kbGVyLCBwb2xsX2ludGVydmFsKQorCisgICAgICAgIGRlZiBzZXJ2ZXJfYmluZChzZWxmKToKKyAgICAgICAgICAgIHN1cGVyKFRlc3RUQ1BTZXJ2ZXIsIHNlbGYpLnNlcnZlcl9iaW5kKCkKKyAgICAgICAgICAgIHNlbGYucG9ydCA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbMV0KKworICAgIGNsYXNzIFRlc3RVRFBTZXJ2ZXIoQ29udHJvbE1peGluLCBUaHJlYWRpbmdVRFBTZXJ2ZXIpOgorICAgICAgICAiIiIKKyAgICAgICAgQSBVRFAgc2VydmVyIHdoaWNoIGlzIGNvbnRyb2xsYWJsZSB1c2luZyA6Y2xhc3M6YENvbnRyb2xNaXhpbmAuCisKKyAgICAgICAgOnBhcmFtIGFkZHI6IEEgdHVwbGUgd2l0aCB0aGUgSVAgYWRkcmVzcyBhbmQgcG9ydCB0byBsaXN0ZW4gb24uCisgICAgICAgIDpwYXJhbSBoYW5kbGVyOiBBIGhhbmRsZXIgY2FsbGFibGUgd2hpY2ggd2lsbCBiZSBjYWxsZWQgd2l0aCBhCisgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGUgcGFyYW1ldGVyIC0gdGhlIHJlcXVlc3QgLSBpbiBvcmRlciB0bworICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VzcyB0aGUgcmVxdWVzdC4KKyAgICAgICAgOnBhcmFtIHBvbGxfaW50ZXJ2YWw6IFRoZSBwb2xsaW5nIGludGVydmFsIGZvciBzaHV0ZG93biByZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHNlY29uZHMuCisgICAgICAgIDpiaW5kX2FuZF9hY3RpdmF0ZTogSWYgVHJ1ZSAodGhlIGRlZmF1bHQpLCBiaW5kcyB0aGUgc2VydmVyIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0cyBpdCBsaXN0ZW5pbmcuIElmIEZhbHNlLCB5b3UgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwgOm1ldGg6YHNlcnZlcl9iaW5kYCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWV0aDpgc2VydmVyX2FjdGl2YXRlYCBhdCBzb21lIGxhdGVyIHRpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgY2FsbGluZyA6bWV0aDpgc3RhcnRgLCBzbyB0aGF0IHRoZSBzZXJ2ZXIgd2lsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldCB1cCB0aGUgc29ja2V0IGFuZCBsaXN0ZW4gb24gaXQuCisgICAgICAgICIiIgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkciwgaGFuZGxlciwgcG9sbF9pbnRlcnZhbD0wLjUsCisgICAgICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlKToKKyAgICAgICAgICAgIGNsYXNzIERlbGVnYXRpbmdVRFBSZXF1ZXN0SGFuZGxlcihEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyKToKKworICAgICAgICAgICAgICAgIGRlZiBoYW5kbGUoc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLl9oYW5kbGVyKHNlbGYpCisKKyAgICAgICAgICAgICAgICBkZWYgZmluaXNoKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi53ZmlsZS5nZXR2YWx1ZSgpCisgICAgICAgICAgICAgICAgICAgIGlmIGRhdGE6CisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwZXIoRGVsZWdhdGluZ1VEUFJlcXVlc3RIYW5kbGVyLCBzZWxmKS5maW5pc2goKQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5zZXJ2ZXIuX2Nsb3NlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICAgICAgVGhyZWFkaW5nVURQU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVsZWdhdGluZ1VEUFJlcXVlc3RIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRfYW5kX2FjdGl2YXRlKQorICAgICAgICAgICAgQ29udHJvbE1peGluLl9faW5pdF9fKHNlbGYsIGhhbmRsZXIsIHBvbGxfaW50ZXJ2YWwpCisgICAgICAgICAgICBzZWxmLl9jbG9zZWQgPSBGYWxzZQorCisgICAgICAgIGRlZiBzZXJ2ZXJfYmluZChzZWxmKToKKyAgICAgICAgICAgIHN1cGVyKFRlc3RVRFBTZXJ2ZXIsIHNlbGYpLnNlcnZlcl9iaW5kKCkKKyAgICAgICAgICAgIHNlbGYucG9ydCA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbMV0KKworICAgICAgICBkZWYgc2VydmVyX2Nsb3NlKHNlbGYpOgorICAgICAgICAgICAgc3VwZXIoVGVzdFVEUFNlcnZlciwgc2VsZikuc2VydmVyX2Nsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlZCA9IFRydWUKKworIyAtIGVuZCBvZiBzZXJ2ZXJfaGVscGVyIHNlY3Rpb24KKworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFNNVFBIYW5kbGVyVGVzdChCYXNlVGVzdCk6CisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgIHNvY2ttYXAgPSB7fQorICAgICAgICBzZXJ2ZXIgPSBUZXN0U01UUFNlcnZlcigoJ2xvY2FsaG9zdCcsIDApLCBzZWxmLnByb2Nlc3NfbWVzc2FnZSwgMC4wMDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2ttYXApCisgICAgICAgIHNlcnZlci5zdGFydCgpCisgICAgICAgIGFkZHIgPSAoJ2xvY2FsaG9zdCcsIHNlcnZlci5wb3J0KQorICAgICAgICBoID0gbG9nZ2luZy5oYW5kbGVycy5TTVRQSGFuZGxlcihhZGRyLCAnbWUnLCAneW91JywgJ0xvZycsIHRpbWVvdXQ9NS4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgudG9hZGRycywgWyd5b3UnXSkKKyAgICAgICAgc2VsZi5tZXNzYWdlcyA9IFtdCisgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoeydtc2cnOiAnSGVsbG8nfSkKKyAgICAgICAgc2VsZi5oYW5kbGVkID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgc2VsZi5oYW5kbGVkLndhaXQoNS4wKSAgIyAxNDMxNDogZG9uJ3Qgd2FpdCBmb3JldmVyCisgICAgICAgIHNlcnZlci5zdG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaGFuZGxlZC5pc19zZXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5tZXNzYWdlcyksIDEpCisgICAgICAgIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhID0gc2VsZi5tZXNzYWdlc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxmcm9tLCAnbWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjcHR0b3MsIFsneW91J10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1xuU3ViamVjdDogTG9nXG4nLCBkYXRhKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGF0YS5lbmRzd2l0aCgnXG5cbkhlbGxvJykpCisgICAgICAgIGguY2xvc2UoKQorCisgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYubWVzc2FnZXMuYXBwZW5kKGFyZ3MpCisgICAgICAgIHNlbGYuaGFuZGxlZC5zZXQoKQorCiBjbGFzcyBNZW1vcnlIYW5kbGVyVGVzdChCYXNlVGVzdCk6CiAKICAgICAiIiJUZXN0cyBmb3IgdGhlIE1lbW9yeUhhbmRsZXIuIiIiCkBAIC01MjUsNyArMTAxOCw3IEBACiAgICAgICAgIHNlbGYubWVtX2xvZ2dlci5pbmZvKHNlbGYubmV4dF9tZXNzYWdlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKICAgICAgICAgIyBUaGlzIHdpbGwgZmx1c2ggYmVjYXVzZSB0aGUgbGV2ZWwgaXMgPj0gbG9nZ2luZy5XQVJOSU5HCi0gICAgICAgIHNlbGYubWVtX2xvZ2dlci53YXJuKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci53YXJuaW5nKHNlbGYubmV4dF9tZXNzYWdlKCkpCiAgICAgICAgIGxpbmVzID0gWwogICAgICAgICAgICAgKCdERUJVRycsICcxJyksCiAgICAgICAgICAgICAoJ0lORk8nLCAnMicpLApAQCAtODcwLDY4ICsxMzYzLDYgQEAKICAgICAgICAgICAgICMgT3JpZ2luYWwgbG9nZ2VyIG91dHB1dCBpcyBlbXB0eS4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKIAotY2xhc3MgTG9nUmVjb3JkU3RyZWFtSGFuZGxlcihTdHJlYW1SZXF1ZXN0SGFuZGxlcik6Ci0KLSAgICAiIiJIYW5kbGVyIGZvciBhIHN0cmVhbWluZyBsb2dnaW5nIHJlcXVlc3QuIEl0IHNhdmVzIHRoZSBsb2cgbWVzc2FnZSBpbiB0aGUKLSAgICBUQ1Agc2VydmVyJ3MgJ2xvZ19vdXRwdXQnIGF0dHJpYnV0ZS4iIiIKLQotICAgIFRDUF9MT0dfRU5EID0gIiEhIUVORCEhISIKLQotICAgIGRlZiBoYW5kbGUoc2VsZik6Ci0gICAgICAgICIiIkhhbmRsZSBtdWx0aXBsZSByZXF1ZXN0cyAtIGVhY2ggZXhwZWN0ZWQgdG8gYmUgb2YgNC1ieXRlIGxlbmd0aCwKLSAgICAgICAgZm9sbG93ZWQgYnkgdGhlIExvZ1JlY29yZCBpbiBwaWNrbGUgZm9ybWF0LiBMb2dzIHRoZSByZWNvcmQKLSAgICAgICAgYWNjb3JkaW5nIHRvIHdoYXRldmVyIHBvbGljeSBpcyBjb25maWd1cmVkIGxvY2FsbHkuIiIiCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBjaHVuayA9IHNlbGYuY29ubmVjdGlvbi5yZWN2KDQpCi0gICAgICAgICAgICBpZiBsZW4oY2h1bmspIDwgNDoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgc2xlbiA9IHN0cnVjdC51bnBhY2soIj5MIiwgY2h1bmspWzBdCi0gICAgICAgICAgICBjaHVuayA9IHNlbGYuY29ubmVjdGlvbi5yZWN2KHNsZW4pCi0gICAgICAgICAgICB3aGlsZSBsZW4oY2h1bmspIDwgc2xlbjoKLSAgICAgICAgICAgICAgICBjaHVuayA9IGNodW5rICsgc2VsZi5jb25uZWN0aW9uLnJlY3Yoc2xlbiAtIGxlbihjaHVuaykpCi0gICAgICAgICAgICBvYmogPSBzZWxmLnVucGlja2xlKGNodW5rKQotICAgICAgICAgICAgcmVjb3JkID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKG9iaikKLSAgICAgICAgICAgIHNlbGYuaGFuZGxlX2xvZ19yZWNvcmQocmVjb3JkKQotCi0gICAgZGVmIHVucGlja2xlKHNlbGYsIGRhdGEpOgotICAgICAgICByZXR1cm4gcGlja2xlLmxvYWRzKGRhdGEpCi0KLSAgICBkZWYgaGFuZGxlX2xvZ19yZWNvcmQoc2VsZiwgcmVjb3JkKToKLSAgICAgICAgIyBJZiB0aGUgZW5kLW9mLW1lc3NhZ2VzIHNlbnRpbmVsIGlzIHNlZW4sIHRlbGwgdGhlIHNlcnZlciB0bwotICAgICAgICAjICB0ZXJtaW5hdGUuCi0gICAgICAgIGlmIHNlbGYuVENQX0xPR19FTkQgaW4gcmVjb3JkLm1zZzoKLSAgICAgICAgICAgIHNlbGYuc2VydmVyLmFib3J0ID0gMQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuc2VydmVyLmxvZ19vdXRwdXQgKz0gcmVjb3JkLm1zZyArICJcbiIKLQotCi1jbGFzcyBMb2dSZWNvcmRTb2NrZXRSZWNlaXZlcihUaHJlYWRpbmdUQ1BTZXJ2ZXIpOgotCi0gICAgIiIiQSBzaW1wbGUtbWluZGVkIFRDUCBzb2NrZXQtYmFzZWQgbG9nZ2luZyByZWNlaXZlciBzdWl0YWJsZSBmb3IgdGVzdAotICAgIHB1cnBvc2VzLiIiIgotCi0gICAgYWxsb3dfcmV1c2VfYWRkcmVzcyA9IDEKLSAgICBsb2dfb3V0cHV0ID0gIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PSdsb2NhbGhvc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0PWxvZ2dpbmcuaGFuZGxlcnMuREVGQVVMVF9UQ1BfTE9HR0lOR19QT1JULAotICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcj1Mb2dSZWNvcmRTdHJlYW1IYW5kbGVyKToKLSAgICAgICAgVGhyZWFkaW5nVENQU2VydmVyLl9faW5pdF9fKHNlbGYsIChob3N0LCBwb3J0KSwgaGFuZGxlcikKLSAgICAgICAgc2VsZi5hYm9ydCA9IEZhbHNlCi0gICAgICAgIHNlbGYudGltZW91dCA9IDAuMQotICAgICAgICBzZWxmLmZpbmlzaGVkID0gdGhyZWFkaW5nLkV2ZW50KCkKLQotICAgIGRlZiBzZXJ2ZV91bnRpbF9zdG9wcGVkKHNlbGYpOgotICAgICAgICB3aGlsZSBub3Qgc2VsZi5hYm9ydDoKLSAgICAgICAgICAgIHJkLCB3ciwgZXggPSBzZWxlY3Quc2VsZWN0KFtzZWxmLnNvY2tldC5maWxlbm8oKV0sIFtdLCBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGltZW91dCkKLSAgICAgICAgICAgIGlmIHJkOgotICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX3JlcXVlc3QoKQotICAgICAgICAjIE5vdGlmeSB0aGUgbWFpbiB0aHJlYWQgdGhhdCB3ZSdyZSBhYm91dCB0byBleGl0Ci0gICAgICAgIHNlbGYuZmluaXNoZWQuc2V0KCkKLSAgICAgICAgIyBjbG9zZSB0aGUgbGlzdGVuIHNvY2tldAotICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCi0KIAogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKIGNsYXNzIFNvY2tldEhhbmRsZXJUZXN0KEJhc2VUZXN0KToKQEAgLTk0Miw0NCArMTM3MywyNzAgQEAKICAgICAgICAgIiIiU2V0IHVwIGEgVENQIHNlcnZlciB0byByZWNlaXZlIGxvZyBtZXNzYWdlcywgYW5kIGEgU29ja2V0SGFuZGxlcgogICAgICAgICBwb2ludGluZyB0byB0aGF0IHNlcnZlcidzIGFkZHJlc3MgYW5kIHBvcnQuIiIiCiAgICAgICAgIEJhc2VUZXN0LnNldFVwKHNlbGYpCi0gICAgICAgIHNlbGYudGNwc2VydmVyID0gTG9nUmVjb3JkU29ja2V0UmVjZWl2ZXIocG9ydD0wKQotICAgICAgICBzZWxmLnBvcnQgPSBzZWxmLnRjcHNlcnZlci5zb2NrZXQuZ2V0c29ja25hbWUoKVsxXQotICAgICAgICBzZWxmLnRocmVhZHMgPSBbCi0gICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi50Y3BzZXJ2ZXIuc2VydmVfdW50aWxfc3RvcHBlZCldCi0gICAgICAgIGZvciB0aHJlYWQgaW4gc2VsZi50aHJlYWRzOgotICAgICAgICAgICAgdGhyZWFkLnN0YXJ0KCkKLQotICAgICAgICBzZWxmLnNvY2tfaGRsciA9IGxvZ2dpbmcuaGFuZGxlcnMuU29ja2V0SGFuZGxlcignbG9jYWxob3N0Jywgc2VsZi5wb3J0KQotICAgICAgICBzZWxmLnNvY2tfaGRsci5zZXRGb3JtYXR0ZXIoc2VsZi5yb290X2Zvcm1hdHRlcikKKyAgICAgICAgYWRkciA9ICgnbG9jYWxob3N0JywgMCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBzZXJ2ZXIgPSBUZXN0VENQU2VydmVyKGFkZHIsIHNlbGYuaGFuZGxlX3NvY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMDEpCisgICAgICAgIHNlcnZlci5zdGFydCgpCisgICAgICAgIHNlcnZlci5yZWFkeS53YWl0KCkKKyAgICAgICAgc2VsZi5zb2NrX2hkbHIgPSBsb2dnaW5nLmhhbmRsZXJzLlNvY2tldEhhbmRsZXIoJ2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlci5wb3J0KQorICAgICAgICBzZWxmLmxvZ19vdXRwdXQgPSAnJwogICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5yb290X2xvZ2dlci5oYW5kbGVyc1swXSkKICAgICAgICAgc2VsZi5yb290X2xvZ2dlci5hZGRIYW5kbGVyKHNlbGYuc29ja19oZGxyKQorICAgICAgICBzZWxmLmhhbmRsZWQgPSB0aHJlYWRpbmcuU2VtYXBob3JlKDApCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgICIiIlNodXRkb3duIHRoZSBUQ1Agc2VydmVyLiIiIgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLnRjcHNlcnZlci5hYm9ydCA9IFRydWUKLSAgICAgICAgICAgIGRlbCBzZWxmLnRjcHNlcnZlcgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgyLjApCiAgICAgICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5zb2NrX2hkbHIpCiAgICAgICAgICAgICBzZWxmLnNvY2tfaGRsci5jbG9zZSgpCi0gICAgICAgICAgICBmb3IgdGhyZWFkIGluIHNlbGYudGhyZWFkczoKLSAgICAgICAgICAgICAgICB0aHJlYWQuam9pbigyLjApCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBCYXNlVGVzdC50ZWFyRG93bihzZWxmKQogCi0gICAgZGVmIGdldF9vdXRwdXQoc2VsZik6Ci0gICAgICAgICIiIkdldCB0aGUgbG9nIG91dHB1dCBhcyByZWNlaXZlZCBieSB0aGUgVENQIHNlcnZlci4iIiIKLSAgICAgICAgIyBTaWduYWwgdGhlIFRDUCByZWNlaXZlciBhbmQgd2FpdCBmb3IgaXQgdG8gdGVybWluYXRlLgotICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLmNyaXRpY2FsKExvZ1JlY29yZFN0cmVhbUhhbmRsZXIuVENQX0xPR19FTkQpCi0gICAgICAgIHNlbGYudGNwc2VydmVyLmZpbmlzaGVkLndhaXQoMi4wKQotICAgICAgICByZXR1cm4gc2VsZi50Y3BzZXJ2ZXIubG9nX291dHB1dAorICAgIGRlZiBoYW5kbGVfc29ja2V0KHNlbGYsIHJlcXVlc3QpOgorICAgICAgICBjb25uID0gcmVxdWVzdC5jb25uZWN0aW9uCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBjaHVuayA9IGNvbm4ucmVjdig0KQorICAgICAgICAgICAgaWYgbGVuKGNodW5rKSA8IDQ6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHNsZW4gPSBzdHJ1Y3QudW5wYWNrKCI+TCIsIGNodW5rKVswXQorICAgICAgICAgICAgY2h1bmsgPSBjb25uLnJlY3Yoc2xlbikKKyAgICAgICAgICAgIHdoaWxlIGxlbihjaHVuaykgPCBzbGVuOgorICAgICAgICAgICAgICAgIGNodW5rID0gY2h1bmsgKyBjb25uLnJlY3Yoc2xlbiAtIGxlbihjaHVuaykpCisgICAgICAgICAgICBvYmogPSBwaWNrbGUubG9hZHMoY2h1bmspCisgICAgICAgICAgICByZWNvcmQgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQob2JqKQorICAgICAgICAgICAgc2VsZi5sb2dfb3V0cHV0ICs9IHJlY29yZC5tc2cgKyAnXG4nCisgICAgICAgICAgICBzZWxmLmhhbmRsZWQucmVsZWFzZSgpCiAKICAgICBkZWYgdGVzdF9vdXRwdXQoc2VsZik6CiAgICAgICAgICMgVGhlIGxvZyBtZXNzYWdlIHNlbnQgdG8gdGhlIFNvY2tldEhhbmRsZXIgaXMgcHJvcGVybHkgcmVjZWl2ZWQuCiAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ0Y3AiKQogICAgICAgICBsb2dnZXIuZXJyb3IoInNwYW0iKQorICAgICAgICBzZWxmLmhhbmRsZWQuYWNxdWlyZSgpCiAgICAgICAgIGxvZ2dlci5kZWJ1ZygiZWdncyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfb3V0cHV0KCksICJzcGFtXG5lZ2dzXG4iKQorICAgICAgICBzZWxmLmhhbmRsZWQuYWNxdWlyZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2dfb3V0cHV0LCAic3BhbVxuZWdnc1xuIikKIAorICAgIGRlZiB0ZXN0X25vc2VydmVyKHNlbGYpOgorICAgICAgICAjIEtpbGwgdGhlIHNlcnZlcgorICAgICAgICBzZWxmLnNlcnZlci5zdG9wKDIuMCkKKyAgICAgICAgI1RoZSBsb2dnaW5nIGNhbGwgc2hvdWxkIHRyeSB0byBjb25uZWN0LCB3aGljaCBzaG91bGQgZmFpbAorICAgICAgICB0cnk6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0RlbGliZXJhdGUgbWlzdGFrZScpCisgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CisgICAgICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLmV4Y2VwdGlvbignTmV2ZXIgc2VudCcpCisgICAgICAgIHNlbGYucm9vdF9sb2dnZXIuZXJyb3IoJ05ldmVyIHNlbnQsIGVpdGhlcicpCisgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnNvY2tfaGRsci5yZXRyeVRpbWUgPiBub3cpCisgICAgICAgIHRpbWUuc2xlZXAoc2VsZi5zb2NrX2hkbHIucmV0cnlUaW1lIC0gbm93ICsgMC4wMDEpCisgICAgICAgIHNlbGYucm9vdF9sb2dnZXIuZXJyb3IoJ05vciB0aGlzJykKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgRGF0YWdyYW1IYW5kbGVyVGVzdChCYXNlVGVzdCk6CisKKyAgICAiIiJUZXN0IGZvciBEYXRhZ3JhbUhhbmRsZXIuIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICIiIlNldCB1cCBhIFVEUCBzZXJ2ZXIgdG8gcmVjZWl2ZSBsb2cgbWVzc2FnZXMsIGFuZCBhIERhdGFncmFtSGFuZGxlcgorICAgICAgICBwb2ludGluZyB0byB0aGF0IHNlcnZlcidzIGFkZHJlc3MgYW5kIHBvcnQuIiIiCisgICAgICAgIEJhc2VUZXN0LnNldFVwKHNlbGYpCisgICAgICAgIGFkZHIgPSAoJ2xvY2FsaG9zdCcsIDApCisgICAgICAgIHNlbGYuc2VydmVyID0gc2VydmVyID0gVGVzdFVEUFNlcnZlcihhZGRyLCBzZWxmLmhhbmRsZV9kYXRhZ3JhbSwgMC4wMSkKKyAgICAgICAgc2VydmVyLnN0YXJ0KCkKKyAgICAgICAgc2VydmVyLnJlYWR5LndhaXQoKQorICAgICAgICBzZWxmLnNvY2tfaGRsciA9IGxvZ2dpbmcuaGFuZGxlcnMuRGF0YWdyYW1IYW5kbGVyKCdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlci5wb3J0KQorICAgICAgICBzZWxmLmxvZ19vdXRwdXQgPSAnJworICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5yb290X2xvZ2dlci5oYW5kbGVyc1swXSkKKyAgICAgICAgc2VsZi5yb290X2xvZ2dlci5hZGRIYW5kbGVyKHNlbGYuc29ja19oZGxyKQorICAgICAgICBzZWxmLmhhbmRsZWQgPSB0aHJlYWRpbmcuRXZlbnQoKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAiIiJTaHV0ZG93biB0aGUgVURQIHNlcnZlci4iIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgyLjApCisgICAgICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5zb2NrX2hkbHIpCisgICAgICAgICAgICBzZWxmLnNvY2tfaGRsci5jbG9zZSgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBCYXNlVGVzdC50ZWFyRG93bihzZWxmKQorCisgICAgZGVmIGhhbmRsZV9kYXRhZ3JhbShzZWxmLCByZXF1ZXN0KToKKyAgICAgICAgc2xlbiA9IHN0cnVjdC5wYWNrKCc+TCcsIDApICMgbGVuZ3RoIG9mIHByZWZpeAorICAgICAgICBwYWNrZXQgPSByZXF1ZXN0LnBhY2tldFtsZW4oc2xlbik6XQorICAgICAgICBvYmogPSBwaWNrbGUubG9hZHMocGFja2V0KQorICAgICAgICByZWNvcmQgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQob2JqKQorICAgICAgICBzZWxmLmxvZ19vdXRwdXQgKz0gcmVjb3JkLm1zZyArICdcbicKKyAgICAgICAgc2VsZi5oYW5kbGVkLnNldCgpCisKKyAgICBkZWYgdGVzdF9vdXRwdXQoc2VsZik6CisgICAgICAgICMgVGhlIGxvZyBtZXNzYWdlIHNlbnQgdG8gdGhlIERhdGFncmFtSGFuZGxlciBpcyBwcm9wZXJseSByZWNlaXZlZC4KKyAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoInVkcCIpCisgICAgICAgIGxvZ2dlci5lcnJvcigic3BhbSIpCisgICAgICAgIHNlbGYuaGFuZGxlZC53YWl0KCkKKyAgICAgICAgc2VsZi5oYW5kbGVkLmNsZWFyKCkKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJlZ2dzIikKKyAgICAgICAgc2VsZi5oYW5kbGVkLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9nX291dHB1dCwgInNwYW1cbmVnZ3NcbiIpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFN5c0xvZ0hhbmRsZXJUZXN0KEJhc2VUZXN0KToKKworICAgICIiIlRlc3QgZm9yIFN5c0xvZ0hhbmRsZXIgdXNpbmcgVURQLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAiIiJTZXQgdXAgYSBVRFAgc2VydmVyIHRvIHJlY2VpdmUgbG9nIG1lc3NhZ2VzLCBhbmQgYSBTeXNMb2dIYW5kbGVyCisgICAgICAgIHBvaW50aW5nIHRvIHRoYXQgc2VydmVyJ3MgYWRkcmVzcyBhbmQgcG9ydC4iIiIKKyAgICAgICAgQmFzZVRlc3Quc2V0VXAoc2VsZikKKyAgICAgICAgYWRkciA9ICgnbG9jYWxob3N0JywgMCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBzZXJ2ZXIgPSBUZXN0VURQU2VydmVyKGFkZHIsIHNlbGYuaGFuZGxlX2RhdGFncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wMSkKKyAgICAgICAgc2VydmVyLnN0YXJ0KCkKKyAgICAgICAgc2VydmVyLnJlYWR5LndhaXQoKQorICAgICAgICBzZWxmLnNsX2hkbHIgPSBsb2dnaW5nLmhhbmRsZXJzLlN5c0xvZ0hhbmRsZXIoKCdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlci5wb3J0KSkKKyAgICAgICAgc2VsZi5sb2dfb3V0cHV0ID0gJycKKyAgICAgICAgc2VsZi5yb290X2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYucm9vdF9sb2dnZXIuaGFuZGxlcnNbMF0pCisgICAgICAgIHNlbGYucm9vdF9sb2dnZXIuYWRkSGFuZGxlcihzZWxmLnNsX2hkbHIpCisgICAgICAgIHNlbGYuaGFuZGxlZCA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICIiIlNodXRkb3duIHRoZSBVRFAgc2VydmVyLiIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnNlcnZlci5zdG9wKDIuMCkKKyAgICAgICAgICAgIHNlbGYucm9vdF9sb2dnZXIucmVtb3ZlSGFuZGxlcihzZWxmLnNsX2hkbHIpCisgICAgICAgICAgICBzZWxmLnNsX2hkbHIuY2xvc2UoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgQmFzZVRlc3QudGVhckRvd24oc2VsZikKKworICAgIGRlZiBoYW5kbGVfZGF0YWdyYW0oc2VsZiwgcmVxdWVzdCk6CisgICAgICAgIHNlbGYubG9nX291dHB1dCA9IHJlcXVlc3QucGFja2V0CisgICAgICAgIHNlbGYuaGFuZGxlZC5zZXQoKQorCisgICAgZGVmIHRlc3Rfb3V0cHV0KHNlbGYpOgorICAgICAgICAjIFRoZSBsb2cgbWVzc2FnZSBzZW50IHRvIHRoZSBTeXNMb2dIYW5kbGVyIGlzIHByb3Blcmx5IHJlY2VpdmVkLgorICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigic2xoIikKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJzcFx4ZTRtIikKKyAgICAgICAgc2VsZi5oYW5kbGVkLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9nX291dHB1dCwgYic8MTE+c3BceGMzXHhhNG1ceDAwJykKKyAgICAgICAgc2VsZi5oYW5kbGVkLmNsZWFyKCkKKyAgICAgICAgc2VsZi5zbF9oZGxyLmFwcGVuZF9udWwgPSBGYWxzZQorICAgICAgICBsb2dnZXIuZXJyb3IoInNwXHhlNG0iKQorICAgICAgICBzZWxmLmhhbmRsZWQud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2dfb3V0cHV0LCBiJzwxMT5zcFx4YzNceGE0bScpCisgICAgICAgIHNlbGYuaGFuZGxlZC5jbGVhcigpCisgICAgICAgIHNlbGYuc2xfaGRsci5pZGVudCA9ICJoXHhlNG0tIgorICAgICAgICBsb2dnZXIuZXJyb3IoInNwXHhlNG0iKQorICAgICAgICBzZWxmLmhhbmRsZWQud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2dfb3V0cHV0LCBiJzwxMT5oXHhjM1x4YTRtLXNwXHhjM1x4YTRtJykKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgSFRUUEhhbmRsZXJUZXN0KEJhc2VUZXN0KToKKyAgICAiIiJUZXN0IGZvciBIVFRQSGFuZGxlci4iIiIKKworICAgIFBFTUZJTEUgPSAiIiItLS0tLUJFR0lOIFJTQSBQUklWQVRFIEtFWS0tLS0tCitNSUlDWFFJQkFBS0JnUURHVDR4UzVyOTFyYkxKUUsyblVEZW5CaEJHNnFGaytiVk9qdUFHQy9MU0hsQW9CbnZHCit6UUczYWdPRytlN2M1ejJYVDhtMmt0T1JMcUczRTRtWW1ieGd5aERyelA2ZWkyQW5jK3Bzem1ueFBvSzNQdWg1CithWFYrWEt0MGJVMEMxbTIrQUNtR0dKMHQzUDQwOGFydDgybk94Qnc4WkhnSWc5RHRwNnhJVUN5T3F3SURBUUFCCitBb0dCQUpGVG5GYm9hS2g1ZVVySXpqbU5yS3NHNDRqRXl5K3ZXdkhOL0ZnU0M0bDEwM0h4aG1XaXVMNUx2M2Y3CiswdE1wMXRYN0Q2eHZId0lHOVZXdnlLYi9DcTlySnNEaWJtRFZJT3Nsbk9XZVFoRytYd0p5aXRSMHBxL0tsSklCCis1TGpPUmNCdzc5NW9LV09BaTZSY09iMU9ONTl0eXNFRlloQUdRTzlrNlZMNjIxZ1JBa0VBL0diK1lYVUxMcGJzCitwaVhOM3E0emNIemVhVkFObzY5dFVaNlRqYVFxTWVUeEU0dE9ZTTBHMFpvU2VIRWRhUDU5QU9aR0tYWE5HU1F5Cisyei9NZGRjWUdRSkJBTWtqTFNZSXBPTEpZMTFqYThPd3dzd0ZHMmhFekhlMGNTOWJ6bysrUi9qYzFiSEE1UjBZCitpNnZBNWlQaSt3b3BQRnZweXRkQm9sN1V1RUJlNXhacnhXTUNRUUNXeEVMUkhpUDJ5V3BFZUxKM2dHRHpvWE1OCitQeWRXamhSanU3QngzQXprVHRmK0Q2bGF3ejErZUdUdUVzczVpMEpLQmtNRXd2d25OMnMxY2UrRXVGNEpBa0JiCitFOTZoMWxBemtWVzVPQWZZT1BZOFJDUEE5MFpPL2hveWc3UHBTeFIwRUN1RHJnRVJSOGdYSWVZVVlmZWpCa0VhCityYWI0Q2ZSb1ZKS0tNMjhZcS94WkFrQnZ1cTY3MEpSQ3dPZ2ZVVGR3dzdXcGRPUUJZUGt6UWNjc0tOQ3NsUVc4CisvRHlXNnkwNm9RdXNTRU5VdnluVDZkcjNMSnh0L05nWlBoWlgyK2sxZVlEVgorLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0KKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJQ0d6Q0NBWVNnQXdJQkFnSUpBSXE4NGEyUS9PdmxNQTBHQ1NxR1NJYjNEUUVCQlFVQU1CUXhFakFRQmdOVgorQkFNVENXeHZZMkZzYUc5emREQWVGdzB4TVRBMU1qRXhNREl6TXpOYUZ3MDNOVEF6TWpFd016VTFNVGRhTUJReAorRWpBUUJnTlZCQU1UQ1d4dlkyRnNhRzl6ZERDQm56QU5CZ2txaGtpRzl3MEJBUUVGQUFPQmpRQXdnWWtDZ1lFQQoreGsrTVV1YS9kYTJ5eVVDdHAxQTNwd1lRUnVxaFpQbTFUbzdnQmd2eTBoNVFLQVo3eHMwQnQyb0Rodm51M09jOQorbDAvSnRwTFRrUzZodHhPSm1KbThZTW9RNjh6K25vdGdKM1BxYk01cDhUNkN0ejdvZVdsMWZseXJkRzFOQXRadAordmdBcGhoaWRMZHorTlBHcTdmTnB6c1FjUEdSNENJUFE3YWVzU0ZBc2pxc0NBd0VBQWFOMU1ITXdIUVlEVlIwTworQkJZRUZMV2FVUE82TjdlZkdpdW9TOWkzRFZZY1V3bjBNRVFHQTFVZEl3UTlNRHVBRkxXYVVQTzZON2VmR2l1bworUzlpM0RWWWNVd24wb1Jpa0ZqQVVNUkl3RUFZRFZRUURFd2xzYjJOaGJHaHZjM1NDQ1FDS3ZPR3RrUHpyNVRBTQorQmdOVkhSTUVCVEFEQVFIL01BMEdDU3FHU0liM0RRRUJCUVVBQTRHQkFNSzV3aFBqTE5RSzFJdnZrODhvcUpxcQorNGY4ODlPd2lrR1AwZVVoT0JoYkZsc1pzK2pxNVlaQzJVekh6K2V2ektCbGdBUDF1NGxQL2NCODVDbmp2V3FNKworMWMvbHl3RkhRNkhPZERlUTFMNzJ0U1lNck5PRzRYTm1MbjBoN3J4NkdvVFU3ZGNGUmZzZWFoQkNxOG12MElEdAorSVJiVHB2bEhXUGpzU3ZIejBaT0gKKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0iIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIiIiU2V0IHVwIGFuIEhUVFAgc2VydmVyIHRvIHJlY2VpdmUgbG9nIG1lc3NhZ2VzLCBhbmQgYSBIVFRQSGFuZGxlcgorICAgICAgICBwb2ludGluZyB0byB0aGF0IHNlcnZlcidzIGFkZHJlc3MgYW5kIHBvcnQuIiIiCisgICAgICAgIEJhc2VUZXN0LnNldFVwKHNlbGYpCisgICAgICAgIHNlbGYuaGFuZGxlZCA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICBkZWYgaGFuZGxlX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCk6CisgICAgICAgIHNlbGYuY29tbWFuZCA9IHJlcXVlc3QuY29tbWFuZAorICAgICAgICBzZWxmLmxvZ19kYXRhID0gdXJscGFyc2UocmVxdWVzdC5wYXRoKQorICAgICAgICBpZiBzZWxmLmNvbW1hbmQgPT0gJ1BPU1QnOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJsZW4gPSBpbnQocmVxdWVzdC5oZWFkZXJzWydDb250ZW50LUxlbmd0aCddKQorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9kYXRhID0gcmVxdWVzdC5yZmlsZS5yZWFkKHJsZW4pCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2RhdGEgPSBOb25lCisgICAgICAgIHJlcXVlc3Quc2VuZF9yZXNwb25zZSgyMDApCisgICAgICAgIHJlcXVlc3QuZW5kX2hlYWRlcnMoKQorICAgICAgICBzZWxmLmhhbmRsZWQuc2V0KCkKKworICAgIGRlZiB0ZXN0X291dHB1dChzZWxmKToKKyAgICAgICAgIyBUaGUgbG9nIG1lc3NhZ2Ugc2VudCB0byB0aGUgSFRUUEhhbmRsZXIgaXMgcHJvcGVybHkgcmVjZWl2ZWQuCisgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJodHRwIikKKyAgICAgICAgcm9vdF9sb2dnZXIgPSBzZWxmLnJvb3RfbG9nZ2VyCisgICAgICAgIHJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5yb290X2xvZ2dlci5oYW5kbGVyc1swXSkKKyAgICAgICAgZm9yIHNlY3VyZSBpbiAoRmFsc2UsIFRydWUpOgorICAgICAgICAgICAgYWRkciA9ICgnbG9jYWxob3N0JywgMCkKKyAgICAgICAgICAgIGlmIHNlY3VyZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBzc2wKKyAgICAgICAgICAgICAgICAgICAgZmQsIGZuID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZm4sICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoc2VsZi5QRU1GSUxFKQorICAgICAgICAgICAgICAgICAgICBzc2xjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgICAgICAgICAgICBzc2xjdHgubG9hZF9jZXJ0X2NoYWluKGZuKQorICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm4pCisgICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgICAgICBzc2xjdHggPSBOb25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNzbGN0eCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuc2VydmVyID0gc2VydmVyID0gVGVzdEhUVFBTZXJ2ZXIoYWRkciwgc2VsZi5oYW5kbGVfcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjAxLCBzc2xjdHg9c3NsY3R4KQorICAgICAgICAgICAgc2VydmVyLnN0YXJ0KCkKKyAgICAgICAgICAgIHNlcnZlci5yZWFkeS53YWl0KCkKKyAgICAgICAgICAgIGhvc3QgPSAnbG9jYWxob3N0OiVkJyAlIHNlcnZlci5zZXJ2ZXJfcG9ydAorICAgICAgICAgICAgc2VjdXJlX2NsaWVudCA9IHNlY3VyZSBhbmQgc3NsY3R4CisgICAgICAgICAgICBzZWxmLmhfaGRsciA9IGxvZ2dpbmcuaGFuZGxlcnMuSFRUUEhhbmRsZXIoaG9zdCwgJy9mcm9iJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN1cmU9c2VjdXJlX2NsaWVudCkKKyAgICAgICAgICAgIHNlbGYubG9nX2RhdGEgPSBOb25lCisgICAgICAgICAgICByb290X2xvZ2dlci5hZGRIYW5kbGVyKHNlbGYuaF9oZGxyKQorCisgICAgICAgICAgICBmb3IgbWV0aG9kIGluICgnR0VUJywgJ1BPU1QnKToKKyAgICAgICAgICAgICAgICBzZWxmLmhfaGRsci5tZXRob2QgPSBtZXRob2QKKyAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZWQuY2xlYXIoKQorICAgICAgICAgICAgICAgIG1zZyA9ICJzcFx4ZTRtIgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihtc2cpCisgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVkLndhaXQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2dfZGF0YS5wYXRoLCAnL2Zyb2InKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21tYW5kLCBtZXRob2QpCisgICAgICAgICAgICAgICAgaWYgbWV0aG9kID09ICdHRVQnOgorICAgICAgICAgICAgICAgICAgICBkID0gcGFyc2VfcXMoc2VsZi5sb2dfZGF0YS5xdWVyeSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBkID0gcGFyc2VfcXMoc2VsZi5wb3N0X2RhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZFsnbmFtZSddLCBbJ2h0dHAnXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ2Z1bmNOYW1lJ10sIFsndGVzdF9vdXRwdXQnXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ21zZyddLCBbbXNnXSkKKworICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgyLjApCisgICAgICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5oX2hkbHIpCisgICAgICAgICAgICBzZWxmLmhfaGRsci5jbG9zZSgpCiAKIGNsYXNzIE1lbW9yeVRlc3QoQmFzZVRlc3QpOgogCkBAIC0xMDg3LDI4ICsxNzQ0LDM5IEBACiAgICAgZGVmIHRlc3Rfd2FybmluZ3Moc2VsZik6CiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgIGxvZ2dpbmcuY2FwdHVyZVdhcm5pbmdzKFRydWUpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoImFsd2F5cyIsIGNhdGVnb3J5PVVzZXJXYXJuaW5nKQotICAgICAgICAgICAgICAgIGZpbGUgPSBpby5TdHJpbmdJTygpCi0gICAgICAgICAgICAgICAgaCA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihmaWxlKQotICAgICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJweS53YXJuaW5ncyIpCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaCkKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJJJ20gd2FybmluZyB5b3UuLi4iKQotICAgICAgICAgICAgICAgIGxvZ2dlci5yZW1vdmVIYW5kbGVyKGgpCi0gICAgICAgICAgICAgICAgcyA9IGZpbGUuZ2V0dmFsdWUoKQotICAgICAgICAgICAgICAgIGguY2xvc2UoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmZpbmQoIlVzZXJXYXJuaW5nOiBJJ20gd2FybmluZyB5b3UuLi5cbiIpID4gMCkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dnaW5nLmNhcHR1cmVXYXJuaW5ncywgRmFsc2UpCisgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygiYWx3YXlzIiwgY2F0ZWdvcnk9VXNlcldhcm5pbmcpCisgICAgICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICBoID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN0cmVhbSkKKyAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJweS53YXJuaW5ncyIpCisgICAgICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihoKQorICAgICAgICAgICAgd2FybmluZ3Mud2FybigiSSdtIHdhcm5pbmcgeW91Li4uIikKKyAgICAgICAgICAgIGxvZ2dlci5yZW1vdmVIYW5kbGVyKGgpCisgICAgICAgICAgICBzID0gc3RyZWFtLmdldHZhbHVlKCkKKyAgICAgICAgICAgIGguY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZmluZCgiVXNlcldhcm5pbmc6IEknbSB3YXJuaW5nIHlvdS4uLlxuIikgPiAwKQogCi0gICAgICAgICAgICAgICAgI1NlZSBpZiBhbiBleHBsaWNpdCBmaWxlIHVzZXMgdGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uCi0gICAgICAgICAgICAgICAgZmlsZSA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaG93d2FybmluZygiRXhwbGljaXQiLCBVc2VyV2FybmluZywgImR1bW15LnB5IiwgNDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSwgIkR1bW15IGxpbmUiKQotICAgICAgICAgICAgICAgIHMgPSBmaWxlLmdldHZhbHVlKCkKLSAgICAgICAgICAgICAgICBmaWxlLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZHVtbXkucHk6NDI6IFVzZXJXYXJuaW5nOiBFeHBsaWNpdFxuICBEdW1teSBsaW5lXG4iKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmNhcHR1cmVXYXJuaW5ncyhGYWxzZSkKKyAgICAgICAgICAgICNTZWUgaWYgYW4gZXhwbGljaXQgZmlsZSB1c2VzIHRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbgorICAgICAgICAgICAgYV9maWxlID0gaW8uU3RyaW5nSU8oKQorICAgICAgICAgICAgd2FybmluZ3Muc2hvd3dhcm5pbmcoIkV4cGxpY2l0IiwgVXNlcldhcm5pbmcsICJkdW1teS5weSIsIDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYV9maWxlLCAiRHVtbXkgbGluZSIpCisgICAgICAgICAgICBzID0gYV9maWxlLmdldHZhbHVlKCkKKyAgICAgICAgICAgIGFfZmlsZS5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsCisgICAgICAgICAgICAgICAgImR1bW15LnB5OjQyOiBVc2VyV2FybmluZzogRXhwbGljaXRcbiAgRHVtbXkgbGluZVxuIikKKworICAgIGRlZiB0ZXN0X3dhcm5pbmdzX25vX2hhbmRsZXJzKHNlbGYpOgorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICBsb2dnaW5nLmNhcHR1cmVXYXJuaW5ncyhUcnVlKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxvZ2dpbmcuY2FwdHVyZVdhcm5pbmdzLCBGYWxzZSkKKworICAgICAgICAgICAgIyBjb25maXJtIG91ciBhc3N1bXB0aW9uOiBubyBsb2dnZXJzIGFyZSBzZXQKKyAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJweS53YXJuaW5ncyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dlci5oYW5kbGVycywgW10pCisKKyAgICAgICAgICAgIHdhcm5pbmdzLnNob3d3YXJuaW5nKCJFeHBsaWNpdCIsIFVzZXJXYXJuaW5nLCAiZHVtbXkucHkiLCA0MikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxvZ2dlci5oYW5kbGVycyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobG9nZ2VyLmhhbmRsZXJzWzBdLCBsb2dnaW5nLk51bGxIYW5kbGVyKQogCiAKIGRlZiBmb3JtYXRGdW5jKGZvcm1hdCwgZGF0ZWZtdD1Ob25lKToKQEAgLTE5NjEsNiArMjYyOSw3IEBACiAgICAgICAgICAgICBsb2dnaW5nLmNvbmZpZy5zdG9wTGlzdGVuaW5nKCkKICAgICAgICAgICAgIHQuam9pbigyLjApCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogICAgIGRlZiB0ZXN0X2xpc3Rlbl9jb25maWdfMTBfb2soc2VsZik6CiAgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5zZXR1cF92aWFfbGlzdGVuZXIoanNvbi5kdW1wcyhzZWxmLmNvbmZpZzEwKSkKQEAgLTE5ODAsNiArMjY0OSw3IEBACiAgICAgICAgICAgICAgICAgKCdFUlJPUicsICc0JyksCiAgICAgICAgICAgICBdLCBzdHJlYW09b3V0cHV0KQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKICAgICBkZWYgdGVzdF9saXN0ZW5fY29uZmlnXzFfb2soc2VsZik6CiAgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5zZXR1cF92aWFfbGlzdGVuZXIodGV4dHdyYXAuZGVkZW50KENvbmZpZ0ZpbGVUZXN0LmNvbmZpZzEpKQpAQCAtMTk5NCw2ICsyNjY0LDI3IEBACiAgICAgICAgICAgICAjIE9yaWdpbmFsIGxvZ2dlciBvdXRwdXQgaXMgZW1wdHkuCiAgICAgICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoW10pCiAKKyAgICBkZWYgdGVzdF9iYXNlY29uZmlnKHNlbGYpOgorICAgICAgICBkID0geworICAgICAgICAgICAgJ2F0dXBsZSc6ICgxLCAyLCAzKSwKKyAgICAgICAgICAgICdhbGlzdCc6IFsnYScsICdiJywgJ2MnXSwKKyAgICAgICAgICAgICdhZGljdCc6IHsnZCc6ICdlJywgJ2YnOiAzIH0sCisgICAgICAgICAgICAnbmVzdDEnOiAoJ2cnLCAoJ2gnLCAnaScpLCAnaicpLAorICAgICAgICAgICAgJ25lc3QyJzogWydrJywgWydsJywgJ20nXSwgJ24nXSwKKyAgICAgICAgICAgICduZXN0Myc6IFsnbycsICdjZmc6Ly9hbGlzdCcsICdwJ10sCisgICAgICAgIH0KKyAgICAgICAgYmMgPSBsb2dnaW5nLmNvbmZpZy5CYXNlQ29uZmlndXJhdG9yKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmMuY29udmVydCgnY2ZnOi8vYXR1cGxlWzFdJyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmMuY29udmVydCgnY2ZnOi8vYWxpc3RbMV0nKSwgJ2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJjLmNvbnZlcnQoJ2NmZzovL25lc3QxWzFdWzBdJyksICdoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYy5jb252ZXJ0KCdjZmc6Ly9uZXN0MlsxXVsxXScpLCAnbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmMuY29udmVydCgnY2ZnOi8vYWRpY3QuZCcpLCAnZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmMuY29udmVydCgnY2ZnOi8vYWRpY3RbZl0nKSwgMykKKyAgICAgICAgdiA9IGJjLmNvbnZlcnQoJ2NmZzovL25lc3QzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnBvcCgxKSwgWydhJywgJ2InLCAnYyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgYmMuY29udmVydCwgJ2NmZzovL25vc3VjaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJjLmNvbnZlcnQsICdjZmc6Ly8hJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGJjLmNvbnZlcnQsICdjZmc6Ly9hZGljdFsyXScpCiAKIGNsYXNzIE1hbmFnZXJUZXN0KEJhc2VUZXN0KToKICAgICBkZWYgdGVzdF9tYW5hZ2VyX2xvZ2dlcmNsYXNzKHNlbGYpOgpAQCAtMjAxMiw2ICsyNzAzLDExIEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnZWQsIFsnc2hvdWxkIGFwcGVhciBpbiBsb2dnZWQnXSkKIAorICAgIGRlZiB0ZXN0X3NldF9sb2dfcmVjb3JkX2ZhY3Rvcnkoc2VsZik6CisgICAgICAgIG1hbiA9IGxvZ2dpbmcuTWFuYWdlcihOb25lKQorICAgICAgICBleHBlY3RlZCA9IG9iamVjdCgpCisgICAgICAgIG1hbi5zZXRMb2dSZWNvcmRGYWN0b3J5KGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbi5sb2dSZWNvcmRGYWN0b3J5LCBleHBlY3RlZCkKIAogY2xhc3MgQ2hpbGRMb2dnZXJUZXN0KEJhc2VUZXN0KToKICAgICBkZWYgdGVzdF9jaGlsZF9sb2dnZXJzKHNlbGYpOgpAQCAtMjExMyw2ICsyODA5LDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYW5kbGVyLm1hdGNoZXMobGV2ZWxubz1sb2dnaW5nLkVSUk9SLCBtZXNzYWdlPScyJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYW5kbGVyLm1hdGNoZXMobGV2ZWxubz1sb2dnaW5nLkNSSVRJQ0FMLCBtZXNzYWdlPSczJykpCiAKK1pFUk8gPSBkYXRldGltZS50aW1lZGVsdGEoMCkKKworY2xhc3MgVVRDKGRhdGV0aW1lLnR6aW5mbyk6CisgICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6CisgICAgICAgIHJldHVybiBaRVJPCisKKyAgICBkc3QgPSB1dGNvZmZzZXQKKworICAgIGRlZiB0em5hbWUoc2VsZiwgZHQpOgorICAgICAgICByZXR1cm4gJ1VUQycKKwordXRjID0gVVRDKCkKIAogY2xhc3MgRm9ybWF0dGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMjE4Niw2ICsyODk0LDcxIEBACiAgICAgICAgIGYgPSBsb2dnaW5nLkZvcm1hdHRlcignYXNjdGltZScsIHN0eWxlPSckJykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLnVzZXNUaW1lKCkpCiAKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3N0eWxlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsb2dnaW5nLkZvcm1hdHRlciwgTm9uZSwgTm9uZSwgJ3gnKQorCisgICAgZGVmIHRlc3RfdGltZShzZWxmKToKKyAgICAgICAgciA9IHNlbGYuZ2V0X3JlY29yZCgpCisgICAgICAgIGR0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMTk5MywgNCwgMjEsIDgsIDMsIDAsIDAsIHV0YykKKyAgICAgICAgIyBXZSB1c2UgTm9uZSB0byBpbmRpY2F0ZSB3ZSB3YW50IHRoZSBsb2NhbCB0aW1lem9uZQorICAgICAgICAjIFdlJ3JlIGVzc2VudGlhbGx5IGNvbnZlcnRpbmcgYSBVVEMgdGltZSB0byBsb2NhbCB0aW1lCisgICAgICAgIHIuY3JlYXRlZCA9IHRpbWUubWt0aW1lKGR0LmFzdGltZXpvbmUoTm9uZSkudGltZXR1cGxlKCkpCisgICAgICAgIHIubXNlY3MgPSAxMjMKKyAgICAgICAgZiA9IGxvZ2dpbmcuRm9ybWF0dGVyKCclKGFzY3RpbWUpcyAlKG1lc3NhZ2UpcycpCisgICAgICAgIGYuY29udmVydGVyID0gdGltZS5nbXRpbWUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmZvcm1hdFRpbWUociksICcxOTkzLTA0LTIxIDA4OjAzOjAwLDEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5mb3JtYXRUaW1lKHIsICclWTolZCcpLCAnMTk5MzoyMScpCisgICAgICAgIGYuZm9ybWF0KHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoci5hc2N0aW1lLCAnMTk5My0wNC0yMSAwODowMzowMCwxMjMnKQorCitjbGFzcyBUZXN0QnVmZmVyaW5nRm9ybWF0dGVyKGxvZ2dpbmcuQnVmZmVyaW5nRm9ybWF0dGVyKToKKyAgICBkZWYgZm9ybWF0SGVhZGVyKHNlbGYsIHJlY29yZHMpOgorICAgICAgICByZXR1cm4gJ1soJWQpJyAlIGxlbihyZWNvcmRzKQorCisgICAgZGVmIGZvcm1hdEZvb3RlcihzZWxmLCByZWNvcmRzKToKKyAgICAgICAgcmV0dXJuICcoJWQpXScgJSBsZW4ocmVjb3JkcykKKworY2xhc3MgQnVmZmVyaW5nRm9ybWF0dGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnJlY29yZHMgPSBbCisgICAgICAgICAgICBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoeydtc2cnOiAnb25lJ30pLAorICAgICAgICAgICAgbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbXNnJzogJ3R3byd9KSwKKyAgICAgICAgXQorCisgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKKyAgICAgICAgZiA9IGxvZ2dpbmcuQnVmZmVyaW5nRm9ybWF0dGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgZi5mb3JtYXQoW10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdvbmV0d28nLCBmLmZvcm1hdChzZWxmLnJlY29yZHMpKQorCisgICAgZGVmIHRlc3RfY3VzdG9tKHNlbGYpOgorICAgICAgICBmID0gVGVzdEJ1ZmZlcmluZ0Zvcm1hdHRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1soMilvbmV0d28oMildJywgZi5mb3JtYXQoc2VsZi5yZWNvcmRzKSkKKyAgICAgICAgbGYgPSBsb2dnaW5nLkZvcm1hdHRlcignPCUobWVzc2FnZSlzPicpCisgICAgICAgIGYgPSBUZXN0QnVmZmVyaW5nRm9ybWF0dGVyKGxmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdbKDIpPG9uZT48dHdvPigyKV0nLCBmLmZvcm1hdChzZWxmLnJlY29yZHMpKQorCitjbGFzcyBFeGNlcHRpb25UZXN0KEJhc2VUZXN0KToKKyAgICBkZWYgdGVzdF9mb3JtYXR0aW5nKHNlbGYpOgorICAgICAgICByID0gc2VsZi5yb290X2xvZ2dlcgorICAgICAgICBoID0gUmVjb3JkaW5nSGFuZGxlcigpCisgICAgICAgIHIuYWRkSGFuZGxlcihoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2RlbGliZXJhdGUgbWlzdGFrZScpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIGxvZ2dpbmcuZXhjZXB0aW9uKCdmYWlsZWQnLCBzdGFja19pbmZvPVRydWUpCisgICAgICAgIHIucmVtb3ZlSGFuZGxlcihoKQorICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgciA9IGgucmVjb3Jkc1swXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5leGNfdGV4dC5zdGFydHN3aXRoKCdUcmFjZWJhY2sgKG1vc3QgcmVjZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2FsbCBsYXN0KTpcbicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5leGNfdGV4dC5lbmRzd2l0aCgnXG5SdW50aW1lRXJyb3I6ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGliZXJhdGUgbWlzdGFrZScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5zdGFja19pbmZvLnN0YXJ0c3dpdGgoJ1N0YWNrIChtb3N0IHJlY2VudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NhbGwgbGFzdCk6XG4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuc3RhY2tfaW5mby5lbmRzd2l0aCgnbG9nZ2luZy5leGNlcHRpb24oXCdmYWlsZWRcJywgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RhY2tfaW5mbz1UcnVlKScpKQorCisKIGNsYXNzIExhc3RSZXNvcnRUZXN0KEJhc2VUZXN0KToKICAgICBkZWYgdGVzdF9sYXN0X3Jlc29ydChzZWxmKToKICAgICAgICAgIyBUZXN0IHRoZSBsYXN0IHJlc29ydCBoYW5kbGVyCkBAIC0yMTk2LDYgKzI5NjksOCBAQAogICAgICAgICBvbGRfcmFpc2VfZXhjZXB0aW9ucyA9IGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzaW8gPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICByb290LmRlYnVnKCdUaGlzIHNob3VsZCBub3QgYXBwZWFyJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lvLmdldHZhbHVlKCksICcnKQogICAgICAgICAgICAgcm9vdC53YXJuaW5nKCdUaGlzIGlzIHlvdXIgZmluYWwgY2hhbmNlIScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpby5nZXR2YWx1ZSgpLCAnVGhpcyBpcyB5b3VyIGZpbmFsIGNoYW5jZSFcbicpCiAgICAgICAgICAgICAjTm8gaGFuZGxlcnMgYW5kIG5vIGxhc3QgcmVzb3J0LCBzbyAnTm8gaGFuZGxlcnMnIG1lc3NhZ2UKQEAgLTIyMjAsMTUyICsyOTk1LDIzNiBAQAogICAgICAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBvbGRfcmFpc2VfZXhjZXB0aW9ucwogCiAKLWNsYXNzIEJhc2VGaWxlVGVzdChCYXNlVGVzdCk6Ci0gICAgIkJhc2UgY2xhc3MgZm9yIGhhbmRsZXIgdGVzdHMgdGhhdCB3cml0ZSBsb2cgZmlsZXMiCitjbGFzcyBGYWtlSGFuZGxlcjoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpZGVudGlmaWVyLCBjYWxsZWQpOgorICAgICAgICBmb3IgbWV0aG9kIGluICgnYWNxdWlyZScsICdmbHVzaCcsICdjbG9zZScsICdyZWxlYXNlJyk6CisgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIG1ldGhvZCwgc2VsZi5yZWNvcmRfY2FsbChpZGVudGlmaWVyLCBtZXRob2QsIGNhbGxlZCkpCisKKyAgICBkZWYgcmVjb3JkX2NhbGwoc2VsZiwgaWRlbnRpZmllciwgbWV0aG9kX25hbWUsIGNhbGxlZCk6CisgICAgICAgIGRlZiBpbm5lcigpOgorICAgICAgICAgICAgY2FsbGVkLmFwcGVuZCgne30gLSB7fScuZm9ybWF0KGlkZW50aWZpZXIsIG1ldGhvZF9uYW1lKSkKKyAgICAgICAgcmV0dXJuIGlubmVyCisKKworY2xhc3MgUmVjb3JkaW5nSGFuZGxlcihsb2dnaW5nLk51bGxIYW5kbGVyKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzdXBlcihSZWNvcmRpbmdIYW5kbGVyLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHNlbGYucmVjb3JkcyA9IFtdCisKKyAgICBkZWYgaGFuZGxlKHNlbGYsIHJlY29yZCk6CisgICAgICAgICIiIktlZXAgdHJhY2sgb2YgYWxsIHRoZSBlbWl0dGVkIHJlY29yZHMuIiIiCisgICAgICAgIHNlbGYucmVjb3Jkcy5hcHBlbmQocmVjb3JkKQorCisKK2NsYXNzIFNodXRkb3duVGVzdChCYXNlVGVzdCk6CisKKyAgICAiIiJUZXN0IHN1aXRlIGZvciB0aGUgc2h1dGRvd24gbWV0aG9kLiIiIgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBCYXNlVGVzdC5zZXRVcChzZWxmKQotICAgICAgICBmZCwgc2VsZi5mbiA9IHRlbXBmaWxlLm1rc3RlbXAoIi5sb2ciLCAidGVzdF9sb2dnaW5nLTItIikKLSAgICAgICAgb3MuY2xvc2UoZmQpCi0gICAgICAgIHNlbGYucm1maWxlcyA9IFtdCisgICAgICAgIHN1cGVyKFNodXRkb3duVGVzdCwgc2VsZikuc2V0VXAoKQorICAgICAgICBzZWxmLmNhbGxlZCA9IFtdCiAKLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIGZvciBmbiBpbiBzZWxmLnJtZmlsZXM6Ci0gICAgICAgICAgICBvcy51bmxpbmsoZm4pCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYuZm4pOgotICAgICAgICAgICAgb3MudW5saW5rKHNlbGYuZm4pCi0gICAgICAgIEJhc2VUZXN0LnRlYXJEb3duKHNlbGYpCisgICAgICAgIHJhaXNlX2V4Y2VwdGlvbnMgPSBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucworICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgbG9nZ2luZywgJ3JhaXNlRXhjZXB0aW9ucycsIHJhaXNlX2V4Y2VwdGlvbnMpCiAKLSAgICBkZWYgYXNzZXJ0TG9nRmlsZShzZWxmLCBmaWxlbmFtZSk6Ci0gICAgICAgICJBc3NlcnQgYSBsb2cgZmlsZSBpcyB0aGVyZSBhbmQgcmVnaXN0ZXIgaXQgZm9yIGRlbGV0aW9uIgotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJMb2cgZmlsZSAlciBkb2VzIG5vdCBleGlzdCIpCi0gICAgICAgIHNlbGYucm1maWxlcy5hcHBlbmQoZmlsZW5hbWUpCisgICAgZGVmIHJhaXNlX2Vycm9yKHNlbGYsIGVycm9yKToKKyAgICAgICAgZGVmIGlubmVyKCk6CisgICAgICAgICAgICByYWlzZSBlcnJvcigpCisgICAgICAgIHJldHVybiBpbm5lcgorCisgICAgZGVmIHRlc3Rfbm9fZmFpbHVyZShzZWxmKToKKyAgICAgICAgIyBjcmVhdGUgc29tZSBmYWtlIGhhbmRsZXJzCisgICAgICAgIGhhbmRsZXIwID0gRmFrZUhhbmRsZXIoMCwgc2VsZi5jYWxsZWQpCisgICAgICAgIGhhbmRsZXIxID0gRmFrZUhhbmRsZXIoMSwgc2VsZi5jYWxsZWQpCisgICAgICAgIGhhbmRsZXIyID0gRmFrZUhhbmRsZXIoMiwgc2VsZi5jYWxsZWQpCisKKyAgICAgICAgIyBjcmVhdGUgbGl2ZSB3ZWFrcmVmIHRvIHRob3NlIGhhbmRsZXJzCisgICAgICAgIGhhbmRsZXJzID0gbWFwKGxvZ2dpbmcud2Vha3JlZi5yZWYsIFtoYW5kbGVyMCwgaGFuZGxlcjEsIGhhbmRsZXIyXSkKKworICAgICAgICBsb2dnaW5nLnNodXRkb3duKGhhbmRsZXJMaXN0PWxpc3QoaGFuZGxlcnMpKQorCisgICAgICAgIGV4cGVjdGVkID0gWycyIC0gYWNxdWlyZScsICcyIC0gZmx1c2gnLCAnMiAtIGNsb3NlJywgJzIgLSByZWxlYXNlJywKKyAgICAgICAgICAgICAgICAgICAgJzEgLSBhY3F1aXJlJywgJzEgLSBmbHVzaCcsICcxIC0gY2xvc2UnLCAnMSAtIHJlbGVhc2UnLAorICAgICAgICAgICAgICAgICAgICAnMCAtIGFjcXVpcmUnLCAnMCAtIGZsdXNoJywgJzAgLSBjbG9zZScsICcwIC0gcmVsZWFzZSddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHNlbGYuY2FsbGVkKQorCisgICAgZGVmIF90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2Qoc2VsZiwgbWV0aG9kLCBlcnJvcik6CisgICAgICAgIGhhbmRsZXIgPSBGYWtlSGFuZGxlcigwLCBzZWxmLmNhbGxlZCkKKyAgICAgICAgc2V0YXR0cihoYW5kbGVyLCBtZXRob2QsIHNlbGYucmFpc2VfZXJyb3IoZXJyb3IpKQorICAgICAgICBoYW5kbGVycyA9IFtsb2dnaW5nLndlYWtyZWYucmVmKGhhbmRsZXIpXQorCisgICAgICAgIGxvZ2dpbmcuc2h1dGRvd24oaGFuZGxlckxpc3Q9bGlzdChoYW5kbGVycykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMCAtIHJlbGVhc2UnLCBzZWxmLmNhbGxlZFstMV0pCisKKyAgICBkZWYgdGVzdF93aXRoX2lvZXJyb3JfaW5fYWNxdWlyZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdhY3F1aXJlJywgSU9FcnJvcikKKworICAgIGRlZiB0ZXN0X3dpdGhfaW9lcnJvcl9pbl9mbHVzaChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdmbHVzaCcsIElPRXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX2lvZXJyb3JfaW5fY2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnY2xvc2UnLCBJT0Vycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF92YWx1ZWVycm9yX2luX2FjcXVpcmUoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnYWNxdWlyZScsIFZhbHVlRXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX3ZhbHVlZXJyb3JfaW5fZmx1c2goc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnZmx1c2gnLCBWYWx1ZUVycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF92YWx1ZWVycm9yX2luX2Nsb3NlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2QoJ2Nsb3NlJywgVmFsdWVFcnJvcikKKworICAgIGRlZiB0ZXN0X3dpdGhfb3RoZXJfZXJyb3JfaW5fYWNxdWlyZV93aXRob3V0X3JhaXNlKHNlbGYpOgorICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IEZhbHNlCisgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnYWNxdWlyZScsIEluZGV4RXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX290aGVyX2Vycm9yX2luX2ZsdXNoX3dpdGhvdXRfcmFpc2Uoc2VsZik6CisgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gRmFsc2UKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdmbHVzaCcsIEluZGV4RXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX290aGVyX2Vycm9yX2luX2Nsb3NlX3dpdGhvdXRfcmFpc2Uoc2VsZik6CisgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gRmFsc2UKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdjbG9zZScsIEluZGV4RXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX290aGVyX2Vycm9yX2luX2FjcXVpcmVfd2l0aF9yYWlzZShzZWxmKToKKyAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBUcnVlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjcXVpcmUnLCBJbmRleEVycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF9vdGhlcl9lcnJvcl9pbl9mbHVzaF93aXRoX3JhaXNlKHNlbGYpOgorICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnZmx1c2gnLCBJbmRleEVycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF9vdGhlcl9lcnJvcl9pbl9jbG9zZV93aXRoX3JhaXNlKHNlbGYpOgorICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xvc2UnLCBJbmRleEVycm9yKQogCiAKLWNsYXNzIFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0KEJhc2VGaWxlVGVzdCk6Ci0gICAgZGVmIG5leHRfcmVjKHNlbGYpOgotICAgICAgICByZXR1cm4gbG9nZ2luZy5Mb2dSZWNvcmQoJ24nLCBsb2dnaW5nLkRFQlVHLCAncCcsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5leHRfbWVzc2FnZSgpLCBOb25lLCBOb25lLCBOb25lKQorY2xhc3MgTW9kdWxlTGV2ZWxNaXNjVGVzdChCYXNlVGVzdCk6CiAKLSAgICBkZWYgdGVzdF9zaG91bGRfbm90X3JvbGxvdmVyKHNlbGYpOgotICAgICAgICAjIElmIG1heGJ5dGVzIGlzIHplcm8gcm9sbG92ZXIgbmV2ZXIgb2NjdXJzCi0gICAgICAgIHJoID0gbG9nZ2luZy5oYW5kbGVycy5Sb3RhdGluZ0ZpbGVIYW5kbGVyKHNlbGYuZm4sIG1heEJ5dGVzPTApCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uocmguc2hvdWxkUm9sbG92ZXIoTm9uZSkpCi0gICAgICAgIHJoLmNsb3NlKCkKKyAgICAiIiJUZXN0IHN1aXRlIGZvciBzb21lIG1vZHVsZSBsZXZlbCBtZXRob2RzLiIiIgogCi0gICAgZGVmIHRlc3Rfc2hvdWxkX3JvbGxvdmVyKHNlbGYpOgotICAgICAgICByaCA9IGxvZ2dpbmcuaGFuZGxlcnMuUm90YXRpbmdGaWxlSGFuZGxlcihzZWxmLmZuLCBtYXhCeXRlcz0xKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmguc2hvdWxkUm9sbG92ZXIoc2VsZi5uZXh0X3JlYygpKSkKLSAgICAgICAgcmguY2xvc2UoKQorICAgIGRlZiB0ZXN0X2Rpc2FibGUoc2VsZik6CisgICAgICAgIG9sZF9kaXNhYmxlID0gbG9nZ2luZy5yb290Lm1hbmFnZXIuZGlzYWJsZQorICAgICAgICAjIGNvbmZpcm0gb3VyIGFzc3VtcHRpb25zIGFyZSBjb3JyZWN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2xkX2Rpc2FibGUsIDApCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dnaW5nLmRpc2FibGUsIG9sZF9kaXNhYmxlKQogCi0gICAgZGVmIHRlc3RfZmlsZV9jcmVhdGVkKHNlbGYpOgotICAgICAgICAjIGNoZWNrcyB0aGF0IHRoZSBmaWxlIGlzIGNyZWF0ZWQgYW5kIGFzc3VtZXMgaXQgd2FzIGNyZWF0ZWQKLSAgICAgICAgIyBieSB1cwotICAgICAgICByaCA9IGxvZ2dpbmcuaGFuZGxlcnMuUm90YXRpbmdGaWxlSGFuZGxlcihzZWxmLmZuKQotICAgICAgICByaC5lbWl0KHNlbGYubmV4dF9yZWMoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRMb2dGaWxlKHNlbGYuZm4pCi0gICAgICAgIHJoLmNsb3NlKCkKKyAgICAgICAgbG9nZ2luZy5kaXNhYmxlKDgzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dpbmcucm9vdC5tYW5hZ2VyLmRpc2FibGUsIDgzKQogCi0gICAgZGVmIHRlc3Rfcm9sbG92ZXJfZmlsZW5hbWVzKHNlbGYpOgotICAgICAgICByaCA9IGxvZ2dpbmcuaGFuZGxlcnMuUm90YXRpbmdGaWxlSGFuZGxlcigKLSAgICAgICAgICAgIHNlbGYuZm4sIGJhY2t1cENvdW50PTIsIG1heEJ5dGVzPTEpCi0gICAgICAgIHJoLmVtaXQoc2VsZi5uZXh0X3JlYygpKQotICAgICAgICBzZWxmLmFzc2VydExvZ0ZpbGUoc2VsZi5mbikKLSAgICAgICAgcmguZW1pdChzZWxmLm5leHRfcmVjKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0TG9nRmlsZShzZWxmLmZuICsgIi4xIikKLSAgICAgICAgcmguZW1pdChzZWxmLm5leHRfcmVjKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0TG9nRmlsZShzZWxmLmZuICsgIi4yIikKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhzZWxmLmZuICsgIi4zIikpCi0gICAgICAgIHJoLmNsb3NlKCkKKyAgICBkZWYgX3Rlc3RfbG9nKHNlbGYsIG1ldGhvZCwgbGV2ZWw9Tm9uZSk6CisgICAgICAgIGNhbGxlZCA9IFtdCisgICAgICAgIHBhdGNoKHNlbGYsIGxvZ2dpbmcsICdiYXNpY0NvbmZpZycsCisgICAgICAgICAgICAgIGxhbWJkYSAqYSwgKiprdzogY2FsbGVkLmFwcGVuZCgoYSwga3cpKSkKIAotY2xhc3MgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdChCYXNlRmlsZVRlc3QpOgotICAgICMgdGVzdCBtZXRob2RzIGFkZGVkIGJlbG93Ci0gICAgcGFzcworICAgICAgICByZWNvcmRpbmcgPSBSZWNvcmRpbmdIYW5kbGVyKCkKKyAgICAgICAgbG9nZ2luZy5yb290LmFkZEhhbmRsZXIocmVjb3JkaW5nKQogCi1kZWYgc2VjcygqKmt3KToKLSAgICByZXR1cm4gZGF0ZXRpbWUudGltZWRlbHRhKCoqa3cpIC8vIGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPTEpCisgICAgICAgIGxvZ19tZXRob2QgPSBnZXRhdHRyKGxvZ2dpbmcsIG1ldGhvZCkKKyAgICAgICAgaWYgbGV2ZWwgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBsb2dfbWV0aG9kKGxldmVsLCAidGVzdCBtZTogJXIiLCByZWNvcmRpbmcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2dfbWV0aG9kKCJ0ZXN0IG1lOiAlciIsIHJlY29yZGluZykKIAotZm9yIHdoZW4sIGV4cCBpbiAoKCdTJywgMSksCi0gICAgICAgICAgICAgICAgICAoJ00nLCA2MCksCi0gICAgICAgICAgICAgICAgICAoJ0gnLCA2MCAqIDYwKSwKLSAgICAgICAgICAgICAgICAgICgnRCcsIDYwICogNjAgKiAyNCksCi0gICAgICAgICAgICAgICAgICAoJ01JRE5JR0hUJywgNjAgKiA2MCAqIDI0KSwKLSAgICAgICAgICAgICAgICAgICMgY3VycmVudCB0aW1lIChlcG9jaCBzdGFydCkgaXMgYSBUaHVyc2RheSwgVzAgbWVhbnMgTW9uZGF5Ci0gICAgICAgICAgICAgICAgICAoJ1cwJywgc2VjcyhkYXlzPTQsIGhvdXJzPTI0KSksCi0gICAgICAgICAgICAgICAgICk6Ci0gICAgZGVmIHRlc3RfY29tcHV0ZV9yb2xsb3ZlcihzZWxmLCB3aGVuPXdoZW4sIGV4cD1leHApOgotICAgICAgICByaCA9IGxvZ2dpbmcuaGFuZGxlcnMuVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyKAotICAgICAgICAgICAgc2VsZi5mbiwgd2hlbj13aGVuLCBpbnRlcnZhbD0xLCBiYWNrdXBDb3VudD0wLCB1dGM9VHJ1ZSkKLSAgICAgICAgY3VycmVudFRpbWUgPSAwLjAKLSAgICAgICAgYWN0dWFsID0gcmguY29tcHV0ZVJvbGxvdmVyKGN1cnJlbnRUaW1lKQotICAgICAgICBpZiBleHAgIT0gYWN0dWFsOgotICAgICAgICAgICAgIyBGYWlsdXJlcyBvY2N1ciBvbiBzb21lIHN5c3RlbXMgZm9yIE1JRE5JR0hUIGFuZCBXMC4KLSAgICAgICAgICAgICMgUHJpbnQgZGV0YWlsZWQgY2FsY3VsYXRpb24gZm9yIE1JRE5JR0hUIHNvIHdlIGNhbiB0cnkgdG8gc2VlCi0gICAgICAgICAgICAjIHdoYXQncyBnb2luZyBvbgotICAgICAgICAgICAgaWYgd2hlbiA9PSAnTUlETklHSFQnOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgaWYgcmgudXRjOgotICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRpbWUuZ210aW1lKGN1cnJlbnRUaW1lKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRpbWUubG9jYWx0aW1lKGN1cnJlbnRUaW1lKQotICAgICAgICAgICAgICAgICAgICBjdXJyZW50SG91ciA9IHRbM10KLSAgICAgICAgICAgICAgICAgICAgY3VycmVudE1pbnV0ZSA9IHRbNF0KLSAgICAgICAgICAgICAgICAgICAgY3VycmVudFNlY29uZCA9IHRbNV0KLSAgICAgICAgICAgICAgICAgICAgIyByIGlzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBsZWZ0IGJldHdlZW4gbm93IGFuZCBtaWRuaWdodAotICAgICAgICAgICAgICAgICAgICByID0gbG9nZ2luZy5oYW5kbGVycy5fTUlETklHSFQgLSAoKGN1cnJlbnRIb3VyICogNjAgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNaW51dGUpICogNjAgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWNvbmQpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGN1cnJlbnRUaW1lICsgcgotICAgICAgICAgICAgICAgICAgICBwcmludCgndDogJXMgKCVzKScgJSAodCwgcmgudXRjKSwgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgICAgICAgICBwcmludCgnY3VycmVudEhvdXI6ICVzJyAlIGN1cnJlbnRIb3VyLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgICAgIHByaW50KCdjdXJyZW50TWludXRlOiAlcycgJSBjdXJyZW50TWludXRlLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgICAgIHByaW50KCdjdXJyZW50U2Vjb25kOiAlcycgJSBjdXJyZW50U2Vjb25kLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgICAgIHByaW50KCdyOiAlcycgJSByLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgICAgIHByaW50KCdyZXN1bHQ6ICVzJyAlIHJlc3VsdCwgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KCdleGNlcHRpb24gaW4gZGlhZ25vc3RpYyBjb2RlOiAlcycgJSBzeXMuZXhjX2luZm8oKVsxXSwgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cCwgYWN0dWFsKQotICAgICAgICByaC5jbG9zZSgpCi0gICAgc2V0YXR0cihUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LCAidGVzdF9jb21wdXRlX3JvbGxvdmVyXyVzIiAlIHdoZW4sIHRlc3RfY29tcHV0ZV9yb2xsb3ZlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVjb3JkaW5nLnJlY29yZHMpLCAxKQorICAgICAgICByZWNvcmQgPSByZWNvcmRpbmcucmVjb3Jkc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5nZXRNZXNzYWdlKCksICJ0ZXN0IG1lOiAlciIgJSByZWNvcmRpbmcpCiAKLWNsYXNzIEhhbmRsZXJUZXN0KEJhc2VUZXN0KToKKyAgICAgICAgZXhwZWN0ZWRfbGV2ZWwgPSBsZXZlbCBpZiBsZXZlbCBpcyBub3QgTm9uZSBlbHNlIGdldGF0dHIobG9nZ2luZywgbWV0aG9kLnVwcGVyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmxldmVsbm8sIGV4cGVjdGVkX2xldmVsKQogCi0gICAgQHVuaXR0ZXN0LnNraXBJZihvcy5uYW1lID09ICdudCcsICdXYXRjaGVkRmlsZUhhbmRsZXIgbm90IGFwcHJvcHJpYXRlIGZvciBXaW5kb3dzLicpCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKLSAgICBkZWYgdGVzdF9yYWNlKHNlbGYpOgotICAgICAgICAjIElzc3VlICMxNDYzMiByZWZlcnMuCi0gICAgICAgIGRlZiByZW1vdmVfbG9vcChmbmFtZSwgdHJpZXMpOgotICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2UodHJpZXMpOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuYW1lKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAwNCAqIHJhbmRvbS5yYW5kaW50KDAsIDQpKQorICAgICAgICAjIGJhc2ljQ29uZmlnIHdhcyBub3QgY2FsbGVkIQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGxlZCwgW10pCiAKLSAgICAgICAgZGVsX2NvdW50ID0gNTAwCi0gICAgICAgIGxvZ19jb3VudCA9IDUwMAorICAgIGRlZiB0ZXN0X2xvZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9sb2coJ2xvZycsIGxvZ2dpbmcuRVJST1IpCiAKLSAgICAgICAgZm9yIGRlbGF5IGluIChGYWxzZSwgVHJ1ZSk6Ci0gICAgICAgICAgICBmZCwgZm4gPSB0ZW1wZmlsZS5ta3N0ZW1wKCcubG9nJywgJ3Rlc3RfbG9nZ2luZy0zLScpCi0gICAgICAgICAgICBvcy5jbG9zZShmZCkKLSAgICAgICAgICAgIHJlbW92ZXIgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1yZW1vdmVfbG9vcCwgYXJncz0oZm4sIGRlbF9jb3VudCkpCi0gICAgICAgICAgICByZW1vdmVyLmRhZW1vbiA9IFRydWUKLSAgICAgICAgICAgIHJlbW92ZXIuc3RhcnQoKQotICAgICAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuV2F0Y2hlZEZpbGVIYW5kbGVyKGZuLCBkZWxheT1kZWxheSkKLSAgICAgICAgICAgIGYgPSBsb2dnaW5nLkZvcm1hdHRlcignJShhc2N0aW1lKXM6ICUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzJykKLSAgICAgICAgICAgIGguc2V0Rm9ybWF0dGVyKGYpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2UobG9nX2NvdW50KToKLSAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAwNSkKLSAgICAgICAgICAgICAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7J21zZyc6ICd0ZXN0aW5nJyB9KQotICAgICAgICAgICAgICAgICAgICBoLmhhbmRsZShyKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICByZW1vdmVyLmpvaW4oKQotICAgICAgICAgICAgICAgIGguY2xvc2UoKQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGZuKToKLSAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuKQorICAgIGRlZiB0ZXN0X2RlYnVnKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2xvZygnZGVidWcnKQogCisgICAgZGVmIHRlc3RfaW5mbyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9sb2coJ2luZm8nKQorCisgICAgZGVmIHRlc3Rfd2FybmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9sb2coJ3dhcm5pbmcnKQorCisgICAgZGVmIHRlc3RfZXJyb3Ioc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCdlcnJvcicpCisKKyAgICBkZWYgdGVzdF9jcml0aWNhbChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9sb2coJ2NyaXRpY2FsJykKKworICAgIGRlZiB0ZXN0X3NldF9sb2dnZXJfY2xhc3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbG9nZ2luZy5zZXRMb2dnZXJDbGFzcywgb2JqZWN0KQorCisgICAgICAgIGNsYXNzIE15TG9nZ2VyKGxvZ2dpbmcuTG9nZ2VyKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBsb2dnaW5nLnNldExvZ2dlckNsYXNzKE15TG9nZ2VyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dpbmcuZ2V0TG9nZ2VyQ2xhc3MoKSwgTXlMb2dnZXIpCisKKyAgICAgICAgbG9nZ2luZy5zZXRMb2dnZXJDbGFzcyhsb2dnaW5nLkxvZ2dlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnaW5nLmdldExvZ2dlckNsYXNzKCksIGxvZ2dpbmcuTG9nZ2VyKQorCitjbGFzcyBMb2dSZWNvcmRUZXN0KEJhc2VUZXN0KToKKyAgICBkZWYgdGVzdF9zdHJfcmVwKHNlbGYpOgorICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHt9KQorICAgICAgICBzID0gc3RyKHIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLnN0YXJ0c3dpdGgoJzxMb2dSZWNvcmQ6ICcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocy5lbmRzd2l0aCgnPicpKQorCisgICAgZGVmIHRlc3RfZGljdF9hcmcoc2VsZik6CisgICAgICAgIGggPSBSZWNvcmRpbmdIYW5kbGVyKCkKKyAgICAgICAgciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICAgICAgci5hZGRIYW5kbGVyKGgpCisgICAgICAgIGQgPSB7J2xlc3MnIDogJ21vcmUnIH0KKyAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdsZXNzIGlzICUobGVzcylzJywgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhoLnJlY29yZHNbMF0uYXJncywgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLnJlY29yZHNbMF0ubWVzc2FnZSwgJ2xlc3MgaXMgbW9yZScpCisgICAgICAgIHIucmVtb3ZlSGFuZGxlcihoKQorICAgICAgICBoLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X211bHRpcHJvY2Vzc2luZyhzZWxmKToKKyAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLnByb2Nlc3NOYW1lLCAnTWFpblByb2Nlc3MnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nIGFzIG1wCisgICAgICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHt9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLnByb2Nlc3NOYW1lLCBtcC5jdXJyZW50X3Byb2Nlc3MoKS5uYW1lKQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9vcHRpb25hbChzZWxmKToKKyAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7fSkKKyAgICAgICAgTk9UX05PTkUgPSBzZWxmLmFzc2VydElzTm90Tm9uZQorICAgICAgICBpZiB0aHJlYWRpbmc6CisgICAgICAgICAgICBOT1RfTk9ORShyLnRocmVhZCkKKyAgICAgICAgICAgIE5PVF9OT05FKHIudGhyZWFkTmFtZSkKKyAgICAgICAgTk9UX05PTkUoci5wcm9jZXNzKQorICAgICAgICBOT1RfTk9ORShyLnByb2Nlc3NOYW1lKQorICAgICAgICBsb2dfdGhyZWFkcyA9IGxvZ2dpbmcubG9nVGhyZWFkcworICAgICAgICBsb2dfcHJvY2Vzc2VzID0gbG9nZ2luZy5sb2dQcm9jZXNzZXMKKyAgICAgICAgbG9nX211bHRpcHJvY2Vzc2luZyA9IGxvZ2dpbmcubG9nTXVsdGlwcm9jZXNzaW5nCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGxvZ2dpbmcubG9nVGhyZWFkcyA9IEZhbHNlCisgICAgICAgICAgICBsb2dnaW5nLmxvZ1Byb2Nlc3NlcyA9IEZhbHNlCisgICAgICAgICAgICBsb2dnaW5nLmxvZ011bHRpcHJvY2Vzc2luZyA9IEZhbHNlCisgICAgICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHt9KQorICAgICAgICAgICAgTk9ORSA9IHNlbGYuYXNzZXJ0SXNOb25lCisgICAgICAgICAgICBOT05FKHIudGhyZWFkKQorICAgICAgICAgICAgTk9ORShyLnRocmVhZE5hbWUpCisgICAgICAgICAgICBOT05FKHIucHJvY2VzcykKKyAgICAgICAgICAgIE5PTkUoci5wcm9jZXNzTmFtZSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGxvZ2dpbmcubG9nVGhyZWFkcyA9IGxvZ190aHJlYWRzCisgICAgICAgICAgICBsb2dnaW5nLmxvZ1Byb2Nlc3NlcyA9IGxvZ19wcm9jZXNzZXMKKyAgICAgICAgICAgIGxvZ2dpbmcubG9nTXVsdGlwcm9jZXNzaW5nID0gbG9nX211bHRpcHJvY2Vzc2luZwogCiBjbGFzcyBCYXNpY0NvbmZpZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0yNDcxLDYgKzMzMzAsMTcgQEAKICAgICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD01OCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnaW5nLnJvb3QubGV2ZWwsIDU3KQogCisgICAgZGVmIHRlc3RfaW5jb21wYXRpYmxlKHNlbGYpOgorICAgICAgICBhc3NlcnRSYWlzZXMgPSBzZWxmLmFzc2VydFJhaXNlcworICAgICAgICBoYW5kbGVycyA9IFtsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKV0KKyAgICAgICAgc3RyZWFtID0gc3lzLnN0ZGVycgorICAgICAgICBhc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5iYXNpY0NvbmZpZywgZmlsZW5hbWU9J3Rlc3QubG9nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtPXN0cmVhbSkKKyAgICAgICAgYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxvZ2dpbmcuYmFzaWNDb25maWcsIGZpbGVuYW1lPSd0ZXN0LmxvZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzPWhhbmRsZXJzKQorICAgICAgICBhc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5iYXNpY0NvbmZpZywgc3RyZWFtPXN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM9aGFuZGxlcnMpCisKICAgICBkZWYgdGVzdF9oYW5kbGVycyhzZWxmKToKICAgICAgICAgaGFuZGxlcnMgPSBbCiAgICAgICAgICAgICBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKSwKQEAgLTI0NzksOCArMzM0OSwxNCBAQAogICAgICAgICBdCiAgICAgICAgIGYgPSBsb2dnaW5nLkZvcm1hdHRlcigpCiAgICAgICAgIGhhbmRsZXJzWzJdLnNldEZvcm1hdHRlcihmKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsb2dnaW5nLmJhc2ljQ29uZmlnLCBsZXZlbD1sb2dnaW5nLkRFQlVHLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9JyUoYXNjdGltZSlzICUobWVzc2FnZSlzJywgaGFuZGxlcnM9aGFuZGxlcnMpCisgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoaGFuZGxlcnM9aGFuZGxlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaGFuZGxlcnNbMF0sIGxvZ2dpbmcucm9vdC5oYW5kbGVyc1swXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhoYW5kbGVyc1sxXSwgbG9nZ2luZy5yb290LmhhbmRsZXJzWzFdKQorICAgICAgICBzZWxmLmFzc2VydElzKGhhbmRsZXJzWzJdLCBsb2dnaW5nLnJvb3QuaGFuZGxlcnNbMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGhhbmRsZXJzWzBdLmZvcm1hdHRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoaGFuZGxlcnNbMV0uZm9ybWF0dGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKGhhbmRsZXJzWzJdLmZvcm1hdHRlciwgZikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhoYW5kbGVyc1swXS5mb3JtYXR0ZXIsIGhhbmRsZXJzWzFdLmZvcm1hdHRlcikKIAogICAgIGRlZiBfdGVzdF9sb2coc2VsZiwgbWV0aG9kLCBsZXZlbD1Ob25lKToKICAgICAgICAgIyBsb2dnaW5nLnJvb3QgaGFzIG5vIGhhbmRsZXJzIHNvIGJhc2ljQ29uZmlnIHNob3VsZCBiZSBjYWxsZWQKQEAgLTI1MjMsMjAgKzMzOTksNDQ1IEBACiAgICAgZGVmIHRlc3RfY3JpdGljYWwoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCdjcml0aWNhbCcpCiAKKworY2xhc3MgTG9nZ2VyQWRhcHRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihMb2dnZXJBZGFwdGVyVGVzdCwgc2VsZikuc2V0VXAoKQorICAgICAgICBvbGRfaGFuZGxlcl9saXN0ID0gbG9nZ2luZy5faGFuZGxlckxpc3RbOl0KKworICAgICAgICBzZWxmLnJlY29yZGluZyA9IFJlY29yZGluZ0hhbmRsZXIoKQorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcucm9vdAorICAgICAgICBzZWxmLmxvZ2dlci5hZGRIYW5kbGVyKHNlbGYucmVjb3JkaW5nKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5sb2dnZXIucmVtb3ZlSGFuZGxlciwgc2VsZi5yZWNvcmRpbmcpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLnJlY29yZGluZy5jbG9zZSkKKworICAgICAgICBkZWYgY2xlYW51cCgpOgorICAgICAgICAgICAgbG9nZ2luZy5faGFuZGxlckxpc3RbOl0gPSBvbGRfaGFuZGxlcl9saXN0CisKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNsZWFudXApCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dnaW5nLnNodXRkb3duKQorICAgICAgICBzZWxmLmFkYXB0ZXIgPSBsb2dnaW5nLkxvZ2dlckFkYXB0ZXIobG9nZ2VyPXNlbGYubG9nZ2VyLCBleHRyYT1Ob25lKQorCisgICAgZGVmIHRlc3RfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBtc2cgPSAndGVzdGluZyBleGNlcHRpb246ICVyJworICAgICAgICBleGMgPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIDEgLyAwCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjID0gZQorICAgICAgICAgICAgc2VsZi5hZGFwdGVyLmV4Y2VwdGlvbihtc2csIHNlbGYucmVjb3JkaW5nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYucmVjb3JkaW5nLnJlY29yZHMpLCAxKQorICAgICAgICByZWNvcmQgPSBzZWxmLnJlY29yZGluZy5yZWNvcmRzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmxldmVsbm8sIGxvZ2dpbmcuRVJST1IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLm1zZywgbXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5hcmdzLCAoc2VsZi5yZWNvcmRpbmcsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuZXhjX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgKGV4Yy5fX2NsYXNzX18sIGV4YywgZXhjLl9fdHJhY2ViYWNrX18pKQorCisgICAgZGVmIHRlc3RfY3JpdGljYWwoc2VsZik6CisgICAgICAgIG1zZyA9ICdjcml0aWNhbCB0ZXN0ISAlcicKKyAgICAgICAgc2VsZi5hZGFwdGVyLmNyaXRpY2FsKG1zZywgc2VsZi5yZWNvcmRpbmcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5yZWNvcmRpbmcucmVjb3JkcyksIDEpCisgICAgICAgIHJlY29yZCA9IHNlbGYucmVjb3JkaW5nLnJlY29yZHNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQubGV2ZWxubywgbG9nZ2luZy5DUklUSUNBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQubXNnLCBtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmFyZ3MsIChzZWxmLnJlY29yZGluZywpKQorCisgICAgZGVmIHRlc3RfaXNfZW5hYmxlZF9mb3Ioc2VsZik6CisgICAgICAgIG9sZF9kaXNhYmxlID0gc2VsZi5hZGFwdGVyLmxvZ2dlci5tYW5hZ2VyLmRpc2FibGUKKyAgICAgICAgc2VsZi5hZGFwdGVyLmxvZ2dlci5tYW5hZ2VyLmRpc2FibGUgPSAzMworICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgc2VsZi5hZGFwdGVyLmxvZ2dlci5tYW5hZ2VyLCAnZGlzYWJsZScsCisgICAgICAgICAgICAgICAgICAgICAgICBvbGRfZGlzYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmFkYXB0ZXIuaXNFbmFibGVkRm9yKDMyKSkKKworICAgIGRlZiB0ZXN0X2hhc19oYW5kbGVycyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuYWRhcHRlci5oYXNIYW5kbGVycygpKQorCisgICAgICAgIGZvciBoYW5kbGVyIGluIHNlbGYubG9nZ2VyLmhhbmRsZXJzOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIucmVtb3ZlSGFuZGxlcihoYW5kbGVyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5sb2dnZXIuaGFzSGFuZGxlcnMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmFkYXB0ZXIuaGFzSGFuZGxlcnMoKSkKKworCitjbGFzcyBMb2dnZXJUZXN0KEJhc2VUZXN0KToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoTG9nZ2VyVGVzdCwgc2VsZikuc2V0VXAoKQorICAgICAgICBzZWxmLnJlY29yZGluZyA9IFJlY29yZGluZ0hhbmRsZXIoKQorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcuTG9nZ2VyKG5hbWU9J2JsYWgnKQorICAgICAgICBzZWxmLmxvZ2dlci5hZGRIYW5kbGVyKHNlbGYucmVjb3JkaW5nKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5sb2dnZXIucmVtb3ZlSGFuZGxlciwgc2VsZi5yZWNvcmRpbmcpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLnJlY29yZGluZy5jbG9zZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxvZ2dpbmcuc2h1dGRvd24pCisKKyAgICBkZWYgdGVzdF9zZXRfaW52YWxpZF9sZXZlbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmxvZ2dlci5zZXRMZXZlbCwgb2JqZWN0KCkpCisKKyAgICBkZWYgdGVzdF9leGNlcHRpb24oc2VsZik6CisgICAgICAgIG1zZyA9ICd0ZXN0aW5nIGV4Y2VwdGlvbjogJXInCisgICAgICAgIGV4YyA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICBleGMgPSBlCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5leGNlcHRpb24obXNnLCBzZWxmLnJlY29yZGluZykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLnJlY29yZGluZy5yZWNvcmRzKSwgMSkKKyAgICAgICAgcmVjb3JkID0gc2VsZi5yZWNvcmRpbmcucmVjb3Jkc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5sZXZlbG5vLCBsb2dnaW5nLkVSUk9SKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5tc2csIG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuYXJncywgKHNlbGYucmVjb3JkaW5nLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmV4Y19pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgIChleGMuX19jbGFzc19fLCBleGMsIGV4Yy5fX3RyYWNlYmFja19fKSkKKworICAgIGRlZiB0ZXN0X2xvZ19pbnZhbGlkX2xldmVsX3dpdGhfcmFpc2Uoc2VsZik6CisgICAgICAgIG9sZF9yYWlzZSA9IGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXRhdHRyLCBsb2dnaW5nLCAncmFpc2VFeGVjcHRpb25zJywgb2xkX3JhaXNlKQorCisgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubG9nZ2VyLmxvZywgJzEwJywgJ3Rlc3QgbWVzc2FnZScpCisKKyAgICBkZWYgdGVzdF9sb2dfaW52YWxpZF9sZXZlbF9ub19yYWlzZShzZWxmKToKKyAgICAgICAgb2xkX3JhaXNlID0gbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNldGF0dHIsIGxvZ2dpbmcsICdyYWlzZUV4ZWNwdGlvbnMnLCBvbGRfcmFpc2UpCisKKyAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBGYWxzZQorICAgICAgICBzZWxmLmxvZ2dlci5sb2coJzEwJywgJ3Rlc3QgbWVzc2FnZScpICAjIG5vIGV4Y2VwdGlvbiBoYXBwZW5zCisKKyAgICBkZWYgdGVzdF9maW5kX2NhbGxlcl93aXRoX3N0YWNrX2luZm8oc2VsZik6CisgICAgICAgIGNhbGxlZCA9IFtdCisgICAgICAgIHBhdGNoKHNlbGYsIGxvZ2dpbmcudHJhY2ViYWNrLCAncHJpbnRfc3RhY2snLAorICAgICAgICAgICAgICBsYW1iZGEgZiwgZmlsZTogY2FsbGVkLmFwcGVuZChmaWxlLmdldHZhbHVlKCkpKQorCisgICAgICAgIHNlbGYubG9nZ2VyLmZpbmRDYWxsZXIoc3RhY2tfaW5mbz1UcnVlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNhbGxlZCksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1N0YWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJywgY2FsbGVkWzBdKQorCisgICAgZGVmIHRlc3RfbWFrZV9yZWNvcmRfd2l0aF9leHRyYV9vdmVyd3JpdGUoc2VsZik6CisgICAgICAgIG5hbWUgPSAnbXkgcmVjb3JkJworICAgICAgICBsZXZlbCA9IDEzCisgICAgICAgIGZuID0gbG5vID0gbXNnID0gYXJncyA9IGV4Y19pbmZvID0gZnVuYyA9IHNpbmZvID0gTm9uZQorICAgICAgICBydiA9IGxvZ2dpbmcuX2xvZ1JlY29yZEZhY3RvcnkobmFtZSwgbGV2ZWwsIGZuLCBsbm8sIG1zZywgYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y19pbmZvLCBmdW5jLCBzaW5mbykKKworICAgICAgICBmb3Iga2V5IGluICgnbWVzc2FnZScsICdhc2N0aW1lJykgKyB0dXBsZShydi5fX2RpY3RfXy5rZXlzKCkpOgorICAgICAgICAgICAgZXh0cmEgPSB7a2V5OiAnc29tZSB2YWx1ZSd9CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgc2VsZi5sb2dnZXIubWFrZVJlY29yZCwgbmFtZSwgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbiwgbG5vLCBtc2csIGFyZ3MsIGV4Y19pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9ZXh0cmEsIHNpbmZvPXNpbmZvKQorCisgICAgZGVmIHRlc3RfbWFrZV9yZWNvcmRfd2l0aF9leHRyYV9ub19vdmVyd3JpdGUoc2VsZik6CisgICAgICAgIG5hbWUgPSAnbXkgcmVjb3JkJworICAgICAgICBsZXZlbCA9IDEzCisgICAgICAgIGZuID0gbG5vID0gbXNnID0gYXJncyA9IGV4Y19pbmZvID0gZnVuYyA9IHNpbmZvID0gTm9uZQorICAgICAgICBleHRyYSA9IHsndmFsaWRfa2V5JzogJ3NvbWUgdmFsdWUnfQorICAgICAgICByZXN1bHQgPSBzZWxmLmxvZ2dlci5tYWtlUmVjb3JkKG5hbWUsIGxldmVsLCBmbiwgbG5vLCBtc2csIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjX2luZm8sIGV4dHJhPWV4dHJhLCBzaW5mbz1zaW5mbykKKyAgICAgICAgc2VsZi5hc3NlcnRJbigndmFsaWRfa2V5JywgcmVzdWx0Ll9fZGljdF9fKQorCisgICAgZGVmIHRlc3RfaGFzX2hhbmRsZXJzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5sb2dnZXIuaGFzSGFuZGxlcnMoKSkKKworICAgICAgICBmb3IgaGFuZGxlciBpbiBzZWxmLmxvZ2dlci5oYW5kbGVyczoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLnJlbW92ZUhhbmRsZXIoaGFuZGxlcikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxvZ2dlci5oYXNIYW5kbGVycygpKQorCisgICAgZGVmIHRlc3RfaGFzX2hhbmRsZXJzX25vX3Byb3BhZ2F0ZShzZWxmKToKKyAgICAgICAgY2hpbGRfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2JsYWguY2hpbGQnKQorICAgICAgICBjaGlsZF9sb2dnZXIucHJvcGFnYXRlID0gRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjaGlsZF9sb2dnZXIuaGFzSGFuZGxlcnMoKSkKKworICAgIGRlZiB0ZXN0X2lzX2VuYWJsZWRfZm9yKHNlbGYpOgorICAgICAgICBvbGRfZGlzYWJsZSA9IHNlbGYubG9nZ2VyLm1hbmFnZXIuZGlzYWJsZQorICAgICAgICBzZWxmLmxvZ2dlci5tYW5hZ2VyLmRpc2FibGUgPSAyMworICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgc2VsZi5sb2dnZXIubWFuYWdlciwgJ2Rpc2FibGUnLCBvbGRfZGlzYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxvZ2dlci5pc0VuYWJsZWRGb3IoMjIpKQorCisgICAgZGVmIHRlc3Rfcm9vdF9sb2dnZXJfYWxpYXNlcyhzZWxmKToKKyAgICAgICAgcm9vdCA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyb290LCBsb2dnaW5nLnJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocm9vdCwgbG9nZ2luZy5nZXRMb2dnZXIoTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocm9vdCwgbG9nZ2luZy5nZXRMb2dnZXIoJycpKQorICAgICAgICBzZWxmLmFzc2VydElzKHJvb3QsIGxvZ2dpbmcuZ2V0TG9nZ2VyKCdmb28nKS5yb290KQorICAgICAgICBzZWxmLmFzc2VydElzKHJvb3QsIGxvZ2dpbmcuZ2V0TG9nZ2VyKCdmb28uYmFyJykucm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyb290LCBsb2dnaW5nLmdldExvZ2dlcignZm9vJykucGFyZW50KQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qocm9vdCwgbG9nZ2luZy5nZXRMb2dnZXIoJ1wwJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qocm9vdCwgbG9nZ2luZy5nZXRMb2dnZXIoJ2Zvby5iYXInKS5wYXJlbnQpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX25hbWVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxvZ2dpbmcuZ2V0TG9nZ2VyLCBhbnkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbG9nZ2luZy5nZXRMb2dnZXIsIGInZm9vJykKKworCitjbGFzcyBCYXNlRmlsZVRlc3QoQmFzZVRlc3QpOgorICAgICJCYXNlIGNsYXNzIGZvciBoYW5kbGVyIHRlc3RzIHRoYXQgd3JpdGUgbG9nIGZpbGVzIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBCYXNlVGVzdC5zZXRVcChzZWxmKQorICAgICAgICBmZCwgc2VsZi5mbiA9IHRlbXBmaWxlLm1rc3RlbXAoIi5sb2ciLCAidGVzdF9sb2dnaW5nLTItIikKKyAgICAgICAgb3MuY2xvc2UoZmQpCisgICAgICAgIHNlbGYucm1maWxlcyA9IFtdCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGZvciBmbiBpbiBzZWxmLnJtZmlsZXM6CisgICAgICAgICAgICBvcy51bmxpbmsoZm4pCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYuZm4pOgorICAgICAgICAgICAgb3MudW5saW5rKHNlbGYuZm4pCisgICAgICAgIEJhc2VUZXN0LnRlYXJEb3duKHNlbGYpCisKKyAgICBkZWYgYXNzZXJ0TG9nRmlsZShzZWxmLCBmaWxlbmFtZSk6CisgICAgICAgICJBc3NlcnQgYSBsb2cgZmlsZSBpcyB0aGVyZSBhbmQgcmVnaXN0ZXIgaXQgZm9yIGRlbGV0aW9uIgorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJMb2cgZmlsZSAlciBkb2VzIG5vdCBleGlzdCIgJSBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5ybWZpbGVzLmFwcGVuZChmaWxlbmFtZSkKKworCitjbGFzcyBGaWxlSGFuZGxlclRlc3QoQmFzZUZpbGVUZXN0KToKKyAgICBkZWYgdGVzdF9kZWxheShzZWxmKToKKyAgICAgICAgb3MudW5saW5rKHNlbGYuZm4pCisgICAgICAgIGZoID0gbG9nZ2luZy5GaWxlSGFuZGxlcihzZWxmLmZuLCBkZWxheT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaC5zdHJlYW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoc2VsZi5mbikpCisgICAgICAgIGZoLmhhbmRsZShsb2dnaW5nLm1ha2VMb2dSZWNvcmQoe30pKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmaC5zdHJlYW0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhzZWxmLmZuKSkKKyAgICAgICAgZmguY2xvc2UoKQorCitjbGFzcyBSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdChCYXNlRmlsZVRlc3QpOgorICAgIGRlZiBuZXh0X3JlYyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGxvZ2dpbmcuTG9nUmVjb3JkKCduJywgbG9nZ2luZy5ERUJVRywgJ3AnLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXh0X21lc3NhZ2UoKSwgTm9uZSwgTm9uZSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X3Nob3VsZF9ub3Rfcm9sbG92ZXIoc2VsZik6CisgICAgICAgICMgSWYgbWF4Ynl0ZXMgaXMgemVybyByb2xsb3ZlciBuZXZlciBvY2N1cnMKKyAgICAgICAgcmggPSBsb2dnaW5nLmhhbmRsZXJzLlJvdGF0aW5nRmlsZUhhbmRsZXIoc2VsZi5mbiwgbWF4Qnl0ZXM9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyaC5zaG91bGRSb2xsb3ZlcihOb25lKSkKKyAgICAgICAgcmguY2xvc2UoKQorCisgICAgZGVmIHRlc3Rfc2hvdWxkX3JvbGxvdmVyKHNlbGYpOgorICAgICAgICByaCA9IGxvZ2dpbmcuaGFuZGxlcnMuUm90YXRpbmdGaWxlSGFuZGxlcihzZWxmLmZuLCBtYXhCeXRlcz0xKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmguc2hvdWxkUm9sbG92ZXIoc2VsZi5uZXh0X3JlYygpKSkKKyAgICAgICAgcmguY2xvc2UoKQorCisgICAgZGVmIHRlc3RfZmlsZV9jcmVhdGVkKHNlbGYpOgorICAgICAgICAjIGNoZWNrcyB0aGF0IHRoZSBmaWxlIGlzIGNyZWF0ZWQgYW5kIGFzc3VtZXMgaXQgd2FzIGNyZWF0ZWQKKyAgICAgICAgIyBieSB1cworICAgICAgICByaCA9IGxvZ2dpbmcuaGFuZGxlcnMuUm90YXRpbmdGaWxlSGFuZGxlcihzZWxmLmZuKQorICAgICAgICByaC5lbWl0KHNlbGYubmV4dF9yZWMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMb2dGaWxlKHNlbGYuZm4pCisgICAgICAgIHJoLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X3JvbGxvdmVyX2ZpbGVuYW1lcyhzZWxmKToKKyAgICAgICAgZGVmIG5hbWVyKG5hbWUpOgorICAgICAgICAgICAgcmV0dXJuIG5hbWUgKyAiLnRlc3QiCisgICAgICAgIHJoID0gbG9nZ2luZy5oYW5kbGVycy5Sb3RhdGluZ0ZpbGVIYW5kbGVyKAorICAgICAgICAgICAgc2VsZi5mbiwgYmFja3VwQ291bnQ9MiwgbWF4Qnl0ZXM9MSkKKyAgICAgICAgcmgubmFtZXIgPSBuYW1lcgorICAgICAgICByaC5lbWl0KHNlbGYubmV4dF9yZWMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMb2dGaWxlKHNlbGYuZm4pCisgICAgICAgIHJoLmVtaXQoc2VsZi5uZXh0X3JlYygpKQorICAgICAgICBzZWxmLmFzc2VydExvZ0ZpbGUobmFtZXIoc2VsZi5mbiArICIuMSIpKQorICAgICAgICByaC5lbWl0KHNlbGYubmV4dF9yZWMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMb2dGaWxlKG5hbWVyKHNlbGYuZm4gKyAiLjIiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhuYW1lcihzZWxmLmZuICsgIi4zIikpKQorICAgICAgICByaC5jbG9zZSgpCisKKyAgICBAcmVxdWlyZXNfemxpYgorICAgIGRlZiB0ZXN0X3JvdGF0b3Ioc2VsZik6CisgICAgICAgIGRlZiBuYW1lcihuYW1lKToKKyAgICAgICAgICAgIHJldHVybiBuYW1lICsgIi5neiIKKworICAgICAgICBkZWYgcm90YXRvcihzb3VyY2UsIGRlc3QpOgorICAgICAgICAgICAgd2l0aCBvcGVuKHNvdXJjZSwgInJiIikgYXMgc2Y6CisgICAgICAgICAgICAgICAgZGF0YSA9IHNmLnJlYWQoKQorICAgICAgICAgICAgICAgIGNvbXByZXNzZWQgPSB6bGliLmNvbXByZXNzKGRhdGEsIDkpCisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGRlc3QsICJ3YiIpIGFzIGRmOgorICAgICAgICAgICAgICAgICAgICBkZi53cml0ZShjb21wcmVzc2VkKQorICAgICAgICAgICAgb3MucmVtb3ZlKHNvdXJjZSkKKworICAgICAgICByaCA9IGxvZ2dpbmcuaGFuZGxlcnMuUm90YXRpbmdGaWxlSGFuZGxlcigKKyAgICAgICAgICAgIHNlbGYuZm4sIGJhY2t1cENvdW50PTIsIG1heEJ5dGVzPTEpCisgICAgICAgIHJoLnJvdGF0b3IgPSByb3RhdG9yCisgICAgICAgIHJoLm5hbWVyID0gbmFtZXIKKyAgICAgICAgbTEgPSBzZWxmLm5leHRfcmVjKCkKKyAgICAgICAgcmguZW1pdChtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRMb2dGaWxlKHNlbGYuZm4pCisgICAgICAgIG0yID0gc2VsZi5uZXh0X3JlYygpCisgICAgICAgIHJoLmVtaXQobTIpCisgICAgICAgIGZuID0gbmFtZXIoc2VsZi5mbiArICIuMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0TG9nRmlsZShmbikKKyAgICAgICAgbmV3bGluZSA9IG9zLmxpbmVzZXAKKyAgICAgICAgd2l0aCBvcGVuKGZuLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgY29tcHJlc3NlZCA9IGYucmVhZCgpCisgICAgICAgICAgICBkYXRhID0gemxpYi5kZWNvbXByZXNzKGNvbXByZXNzZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZGVjb2RlKCJhc2NpaSIpLCBtMS5tc2cgKyBuZXdsaW5lKQorICAgICAgICByaC5lbWl0KHNlbGYubmV4dF9yZWMoKSkKKyAgICAgICAgZm4gPSBuYW1lcihzZWxmLmZuICsgIi4yIikKKyAgICAgICAgc2VsZi5hc3NlcnRMb2dGaWxlKGZuKQorICAgICAgICB3aXRoIG9wZW4oZm4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICBjb21wcmVzc2VkID0gZi5yZWFkKCkKKyAgICAgICAgICAgIGRhdGEgPSB6bGliLmRlY29tcHJlc3MoY29tcHJlc3NlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5kZWNvZGUoImFzY2lpIiksIG0xLm1zZyArIG5ld2xpbmUpCisgICAgICAgIHJoLmVtaXQoc2VsZi5uZXh0X3JlYygpKQorICAgICAgICBmbiA9IG5hbWVyKHNlbGYuZm4gKyAiLjIiKQorICAgICAgICB3aXRoIG9wZW4oZm4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICBjb21wcmVzc2VkID0gZi5yZWFkKCkKKyAgICAgICAgICAgIGRhdGEgPSB6bGliLmRlY29tcHJlc3MoY29tcHJlc3NlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5kZWNvZGUoImFzY2lpIiksIG0yLm1zZyArIG5ld2xpbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMobmFtZXIoc2VsZi5mbiArICIuMyIpKSkKKyAgICAgICAgcmguY2xvc2UoKQorCitjbGFzcyBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0KEJhc2VGaWxlVGVzdCk6CisgICAgIyBvdGhlciB0ZXN0IG1ldGhvZHMgYWRkZWQgYmVsb3cKKyAgICBkZWYgdGVzdF9yb2xsb3ZlcihzZWxmKToKKyAgICAgICAgZmggPSBsb2dnaW5nLmhhbmRsZXJzLlRpbWVkUm90YXRpbmdGaWxlSGFuZGxlcihzZWxmLmZuLCAnUycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja3VwQ291bnQ9MSkKKyAgICAgICAgZm10ID0gbG9nZ2luZy5Gb3JtYXR0ZXIoJyUoYXNjdGltZSlzICUobWVzc2FnZSlzJykKKyAgICAgICAgZmguc2V0Rm9ybWF0dGVyKGZtdCkKKyAgICAgICAgcjEgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoeydtc2cnOiAndGVzdGluZyAtIGluaXRpYWwnfSkKKyAgICAgICAgZmguZW1pdChyMSkKKyAgICAgICAgc2VsZi5hc3NlcnRMb2dGaWxlKHNlbGYuZm4pCisgICAgICAgIHRpbWUuc2xlZXAoMS4xKSAgICAjIGEgbGl0dGxlIG92ZXIgYSBzZWNvbmQgLi4uCisgICAgICAgIHIyID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbXNnJzogJ3Rlc3RpbmcgLSBhZnRlciBkZWxheSd9KQorICAgICAgICBmaC5lbWl0KHIyKQorICAgICAgICBmaC5jbG9zZSgpCisgICAgICAgICMgQXQgdGhpcyBwb2ludCwgd2Ugc2hvdWxkIGhhdmUgYSByZWNlbnQgcm90YXRlZCBmaWxlIHdoaWNoIHdlCisgICAgICAgICMgY2FuIHRlc3QgZm9yIHRoZSBleGlzdGVuY2Ugb2YuIEhvd2V2ZXIsIGluIHByYWN0aWNlLCBvbiBzb21lCisgICAgICAgICMgbWFjaGluZXMgd2hpY2ggcnVuIHJlYWxseSBzbG93bHksIHdlIGRvbid0IGtub3cgaG93IGZhciBiYWNrCisgICAgICAgICMgaW4gdGltZSB0byBnbyB0byBsb29rIGZvciB0aGUgbG9nIGZpbGUuIFNvLCB3ZSBnbyBiYWNrIGEgZmFpcgorICAgICAgICAjIGJpdCwgYW5kIHN0b3AgYXMgc29vbiBhcyB3ZSBzZWUgYSByb3RhdGVkIGZpbGUuIEluIHRoZW9yeSB0aGlzCisgICAgICAgICMgY291bGQgb2YgY291cnNlIHN0aWxsIGZhaWwsIGJ1dCB0aGUgY2hhbmNlcyBhcmUgbG93ZXIuCisgICAgICAgIGZvdW5kID0gRmFsc2UKKyAgICAgICAgbm93ID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKKyAgICAgICAgR09fQkFDSyA9IDUgKiA2MCAjIHNlY29uZHMKKyAgICAgICAgZm9yIHNlY3MgaW4gcmFuZ2UoR09fQkFDSyk6CisgICAgICAgICAgICBwcmV2ID0gbm93IC0gZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9c2VjcykKKyAgICAgICAgICAgIGZuID0gc2VsZi5mbiArIHByZXYuc3RyZnRpbWUoIi4lWS0lbS0lZF8lSC0lTS0lUyIpCisgICAgICAgICAgICBmb3VuZCA9IG9zLnBhdGguZXhpc3RzKGZuKQorICAgICAgICAgICAgaWYgZm91bmQ6CisgICAgICAgICAgICAgICAgc2VsZi5ybWZpbGVzLmFwcGVuZChmbikKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBtc2cgPSAnTm8gcm90YXRlZCBmaWxlcyBmb3VuZCwgd2VudCBiYWNrICVkIHNlY29uZHMnICUgR09fQkFDSworICAgICAgICBpZiBub3QgZm91bmQ6CisgICAgICAgICAgICAjcHJpbnQgYWRkaXRpb25hbCBkaWFnbm9zdGljcworICAgICAgICAgICAgZG4sIGZuID0gb3MucGF0aC5zcGxpdChzZWxmLmZuKQorICAgICAgICAgICAgZmlsZXMgPSBbZiBmb3IgZiBpbiBvcy5saXN0ZGlyKGRuKSBpZiBmLnN0YXJ0c3dpdGgoZm4pXQorICAgICAgICAgICAgcHJpbnQoJ1Rlc3QgdGltZTogJXMnICUgbm93LnN0cmZ0aW1lKCIlWS0lbS0lZCAlSC0lTS0lUyIpLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICBwcmludCgnVGhlIG9ubHkgbWF0Y2hpbmcgZmlsZXMgYXJlOiAlcycgJSBmaWxlcywgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgcHJpbnQoJ0NvbnRlbnRzIG9mICVzOicgJSBmKQorICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZG4sIGYpCisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyJykgYXMgdGY6CisgICAgICAgICAgICAgICAgICAgIHByaW50KHRmLnJlYWQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCBtc2c9bXNnKQorCisgICAgZGVmIHRlc3RfaW52YWxpZChzZWxmKToKKyAgICAgICAgYXNzZXJ0UmFpc2VzID0gc2VsZi5hc3NlcnRSYWlzZXMKKyAgICAgICAgYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxvZ2dpbmcuaGFuZGxlcnMuVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5mbiwgJ1gnLCBkZWxheT1UcnVlKQorICAgICAgICBhc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5oYW5kbGVycy5UaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICBzZWxmLmZuLCAnVycsIGRlbGF5PVRydWUpCisgICAgICAgIGFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsb2dnaW5nLmhhbmRsZXJzLlRpbWVkUm90YXRpbmdGaWxlSGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuZm4sICdXNycsIGRlbGF5PVRydWUpCisKK2RlZiBzZWNzKCoqa3cpOgorICAgIHJldHVybiBkYXRldGltZS50aW1lZGVsdGEoKiprdykgLy8gZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9MSkKKworZm9yIHdoZW4sIGV4cCBpbiAoKCdTJywgMSksCisgICAgICAgICAgICAgICAgICAoJ00nLCA2MCksCisgICAgICAgICAgICAgICAgICAoJ0gnLCA2MCAqIDYwKSwKKyAgICAgICAgICAgICAgICAgICgnRCcsIDYwICogNjAgKiAyNCksCisgICAgICAgICAgICAgICAgICAoJ01JRE5JR0hUJywgNjAgKiA2MCAqIDI0KSwKKyAgICAgICAgICAgICAgICAgICMgY3VycmVudCB0aW1lIChlcG9jaCBzdGFydCkgaXMgYSBUaHVyc2RheSwgVzAgbWVhbnMgTW9uZGF5CisgICAgICAgICAgICAgICAgICAoJ1cwJywgc2VjcyhkYXlzPTQsIGhvdXJzPTI0KSksCisgICAgICAgICAgICAgICAgICk6CisgICAgZGVmIHRlc3RfY29tcHV0ZV9yb2xsb3ZlcihzZWxmLCB3aGVuPXdoZW4sIGV4cD1leHApOgorICAgICAgICByaCA9IGxvZ2dpbmcuaGFuZGxlcnMuVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyKAorICAgICAgICAgICAgc2VsZi5mbiwgd2hlbj13aGVuLCBpbnRlcnZhbD0xLCBiYWNrdXBDb3VudD0wLCB1dGM9VHJ1ZSkKKyAgICAgICAgY3VycmVudFRpbWUgPSAwLjAKKyAgICAgICAgYWN0dWFsID0gcmguY29tcHV0ZVJvbGxvdmVyKGN1cnJlbnRUaW1lKQorICAgICAgICBpZiBleHAgIT0gYWN0dWFsOgorICAgICAgICAgICAgIyBGYWlsdXJlcyBvY2N1ciBvbiBzb21lIHN5c3RlbXMgZm9yIE1JRE5JR0hUIGFuZCBXMC4KKyAgICAgICAgICAgICMgUHJpbnQgZGV0YWlsZWQgY2FsY3VsYXRpb24gZm9yIE1JRE5JR0hUIHNvIHdlIGNhbiB0cnkgdG8gc2VlCisgICAgICAgICAgICAjIHdoYXQncyBnb2luZyBvbgorICAgICAgICAgICAgaWYgd2hlbiA9PSAnTUlETklHSFQnOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaWYgcmgudXRjOgorICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRpbWUuZ210aW1lKGN1cnJlbnRUaW1lKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHRpbWUubG9jYWx0aW1lKGN1cnJlbnRUaW1lKQorICAgICAgICAgICAgICAgICAgICBjdXJyZW50SG91ciA9IHRbM10KKyAgICAgICAgICAgICAgICAgICAgY3VycmVudE1pbnV0ZSA9IHRbNF0KKyAgICAgICAgICAgICAgICAgICAgY3VycmVudFNlY29uZCA9IHRbNV0KKyAgICAgICAgICAgICAgICAgICAgIyByIGlzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBsZWZ0IGJldHdlZW4gbm93IGFuZCBtaWRuaWdodAorICAgICAgICAgICAgICAgICAgICByID0gbG9nZ2luZy5oYW5kbGVycy5fTUlETklHSFQgLSAoKGN1cnJlbnRIb3VyICogNjAgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNaW51dGUpICogNjAgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWNvbmQpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGN1cnJlbnRUaW1lICsgcgorICAgICAgICAgICAgICAgICAgICBwcmludCgndDogJXMgKCVzKScgJSAodCwgcmgudXRjKSwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgICAgICAgICBwcmludCgnY3VycmVudEhvdXI6ICVzJyAlIGN1cnJlbnRIb3VyLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgICAgIHByaW50KCdjdXJyZW50TWludXRlOiAlcycgJSBjdXJyZW50TWludXRlLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgICAgIHByaW50KCdjdXJyZW50U2Vjb25kOiAlcycgJSBjdXJyZW50U2Vjb25kLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgICAgIHByaW50KCdyOiAlcycgJSByLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgICAgIHByaW50KCdyZXN1bHQ6ICVzJyAlIHJlc3VsdCwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgIHByaW50KCdleGNlcHRpb24gaW4gZGlhZ25vc3RpYyBjb2RlOiAlcycgJSBzeXMuZXhjX2luZm8oKVsxXSwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cCwgYWN0dWFsKQorICAgICAgICByaC5jbG9zZSgpCisgICAgc2V0YXR0cihUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LCAidGVzdF9jb21wdXRlX3JvbGxvdmVyXyVzIiAlIHdoZW4sIHRlc3RfY29tcHV0ZV9yb2xsb3ZlcikKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyh3aW4zMmV2dGxvZywgJ3dpbjMyZXZ0bG9nL3dpbjMyZXZ0bG9ndXRpbCByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBOVEV2ZW50TG9nSGFuZGxlclRlc3QoQmFzZVRlc3QpOgorICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgICBsb2d0eXBlID0gJ0FwcGxpY2F0aW9uJworICAgICAgICBlbGggPSB3aW4zMmV2dGxvZy5PcGVuRXZlbnRMb2coTm9uZSwgbG9ndHlwZSkKKyAgICAgICAgbnVtX3JlY3MgPSB3aW4zMmV2dGxvZy5HZXROdW1iZXJPZkV2ZW50TG9nUmVjb3JkcyhlbGgpCisgICAgICAgIGggPSBsb2dnaW5nLmhhbmRsZXJzLk5URXZlbnRMb2dIYW5kbGVyKCd0ZXN0X2xvZ2dpbmcnKQorICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbXNnJzogJ1Rlc3QgTG9nIE1lc3NhZ2UnfSkKKyAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgaC5jbG9zZSgpCisgICAgICAgICMgTm93IHNlZSBpZiB0aGUgZXZlbnQgaXMgcmVjb3JkZWQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG51bV9yZWNzIDwgd2luMzJldnRsb2cuR2V0TnVtYmVyT2ZFdmVudExvZ1JlY29yZHMoZWxoKSkKKyAgICAgICAgZmxhZ3MgPSB3aW4zMmV2dGxvZy5FVkVOVExPR19CQUNLV0FSRFNfUkVBRCB8IFwKKyAgICAgICAgICAgICAgICB3aW4zMmV2dGxvZy5FVkVOVExPR19TRVFVRU5USUFMX1JFQUQKKyAgICAgICAgZm91bmQgPSBGYWxzZQorICAgICAgICBHT19CQUNLID0gMTAwCisgICAgICAgIGV2ZW50cyA9IHdpbjMyZXZ0bG9nLlJlYWRFdmVudExvZyhlbGgsIGZsYWdzLCBHT19CQUNLKQorICAgICAgICBmb3IgZSBpbiBldmVudHM6CisgICAgICAgICAgICBpZiBlLlNvdXJjZU5hbWUgIT0gJ3Rlc3RfbG9nZ2luZyc6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG1zZyA9IHdpbjMyZXZ0bG9ndXRpbC5TYWZlRm9ybWF0TWVzc2FnZShlLCBsb2d0eXBlKQorICAgICAgICAgICAgaWYgbXNnICE9ICdUZXN0IExvZyBNZXNzYWdlXHJcbic6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgbXNnID0gJ1JlY29yZCBub3QgZm91bmQgaW4gZXZlbnQgbG9nLCB3ZW50IGJhY2sgJWQgcmVjb3JkcycgJSBHT19CQUNLCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgbXNnPW1zZykKKwogIyBTZXQgdGhlIGxvY2FsZSB0byB0aGUgcGxhdGZvcm0tZGVwZW5kZW50IGRlZmF1bHQuICBJIGhhdmUgbm8gaWRlYQogIyB3aHkgdGhlIHRlc3QgZG9lcyB0aGlzLCBidXQgaW4gYW55IGNhc2Ugd2Ugc2F2ZSB0aGUgY3VycmVudCBsb2NhbGUKICMgZmlyc3QgYW5kIHJlc3RvcmUgaXQgYXQgdGhlIGVuZC4KIEBydW5fd2l0aF9sb2NhbGUoJ0xDX0FMTCcsICcnKQogZGVmIHRlc3RfbWFpbigpOgogICAgIHJ1bl91bml0dGVzdChCdWlsdGluTGV2ZWxzVGVzdCwgQmFzaWNGaWx0ZXJUZXN0LAotICAgICAgICAgICAgICAgICBDdXN0b21MZXZlbHNBbmRGaWx0ZXJzVGVzdCwgTWVtb3J5SGFuZGxlclRlc3QsCi0gICAgICAgICAgICAgICAgIENvbmZpZ0ZpbGVUZXN0LCBTb2NrZXRIYW5kbGVyVGVzdCwgTWVtb3J5VGVzdCwKLSAgICAgICAgICAgICAgICAgRW5jb2RpbmdUZXN0LCBXYXJuaW5nc1Rlc3QsIENvbmZpZ0RpY3RUZXN0LCBNYW5hZ2VyVGVzdCwKLSAgICAgICAgICAgICAgICAgRm9ybWF0dGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgTG9nUmVjb3JkRmFjdG9yeVRlc3QsIENoaWxkTG9nZ2VyVGVzdCwgUXVldWVIYW5kbGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgUm90YXRpbmdGaWxlSGFuZGxlclRlc3QsCi0gICAgICAgICAgICAgICAgIExhc3RSZXNvcnRUZXN0LAotICAgICAgICAgICAgICAgICBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LCBIYW5kbGVyVGVzdCwgQmFzaWNDb25maWdUZXN0LAorICAgICAgICAgICAgICAgICBDdXN0b21MZXZlbHNBbmRGaWx0ZXJzVGVzdCwgSGFuZGxlclRlc3QsIE1lbW9yeUhhbmRsZXJUZXN0LAorICAgICAgICAgICAgICAgICBDb25maWdGaWxlVGVzdCwgU29ja2V0SGFuZGxlclRlc3QsIERhdGFncmFtSGFuZGxlclRlc3QsCisgICAgICAgICAgICAgICAgIE1lbW9yeVRlc3QsIEVuY29kaW5nVGVzdCwgV2FybmluZ3NUZXN0LCBDb25maWdEaWN0VGVzdCwKKyAgICAgICAgICAgICAgICAgTWFuYWdlclRlc3QsIEZvcm1hdHRlclRlc3QsIEJ1ZmZlcmluZ0Zvcm1hdHRlclRlc3QsCisgICAgICAgICAgICAgICAgIFN0cmVhbUhhbmRsZXJUZXN0LCBMb2dSZWNvcmRGYWN0b3J5VGVzdCwgQ2hpbGRMb2dnZXJUZXN0LAorICAgICAgICAgICAgICAgICBRdWV1ZUhhbmRsZXJUZXN0LCBTaHV0ZG93blRlc3QsIE1vZHVsZUxldmVsTWlzY1Rlc3QsCisgICAgICAgICAgICAgICAgIEJhc2ljQ29uZmlnVGVzdCwgTG9nZ2VyQWRhcHRlclRlc3QsIExvZ2dlclRlc3QsCisgICAgICAgICAgICAgICAgIFNNVFBIYW5kbGVyVGVzdCwgRmlsZUhhbmRsZXJUZXN0LCBSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgTGFzdFJlc29ydFRlc3QsIExvZ1JlY29yZFRlc3QsIEV4Y2VwdGlvblRlc3QsCisgICAgICAgICAgICAgICAgIFN5c0xvZ0hhbmRsZXJUZXN0LCBIVFRQSGFuZGxlclRlc3QsIE5URXZlbnRMb2dIYW5kbGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdAogICAgICAgICAgICAgICAgICkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbG9uZy5weSBiL0xpYi90ZXN0L3Rlc3RfbG9uZy5weQppbmRleCAzZWJjMWY3Li5iNDE3YmVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xvbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sb25nLnB5CkBAIC00Myw2ICs0Myw1MyBAQAogREJMX01BTlRfRElHID0gc3lzLmZsb2F0X2luZm8ubWFudF9kaWcKIERCTF9NSU5fT1ZFUkZMT1cgPSAyKipEQkxfTUFYX0VYUCAtIDIqKihEQkxfTUFYX0VYUCAtIERCTF9NQU5UX0RJRyAtIDEpCiAKKworIyBQdXJlIFB5dGhvbiB2ZXJzaW9uIG9mIGNvcnJlY3RseS1yb3VuZGVkIGludGVnZXItdG8tZmxvYXQgY29udmVyc2lvbi4KK2RlZiBpbnRfdG9fZmxvYXQobik6CisgICAgIiIiCisgICAgQ29ycmVjdGx5LXJvdW5kZWQgaW50ZWdlci10by1mbG9hdCBjb252ZXJzaW9uLgorCisgICAgIiIiCisgICAgIyBDb25zdGFudHMsIGRlcGVuZGluZyBvbmx5IG9uIHRoZSBmbG9hdGluZy1wb2ludCBmb3JtYXQgaW4gdXNlLgorICAgICMgV2UgdXNlIGFuIGV4dHJhIDIgYml0cyBvZiBwcmVjaXNpb24gZm9yIHJvdW5kaW5nIHB1cnBvc2VzLgorICAgIFBSRUNJU0lPTiA9IHN5cy5mbG9hdF9pbmZvLm1hbnRfZGlnICsgMgorICAgIFNISUZUX01BWCA9IHN5cy5mbG9hdF9pbmZvLm1heF9leHAgLSBQUkVDSVNJT04KKyAgICBRX01BWCA9IDEgPDwgUFJFQ0lTSU9OCisgICAgUk9VTkRfSEFMRl9UT19FVkVOX0NPUlJFQ1RJT04gPSBbMCwgLTEsIC0yLCAxLCAwLCAtMSwgMiwgMV0KKworICAgICMgUmVkdWNlIHRvIHRoZSBjYXNlIHdoZXJlIG4gaXMgcG9zaXRpdmUuCisgICAgaWYgbiA9PSAwOgorICAgICAgICByZXR1cm4gMC4wCisgICAgZWxpZiBuIDwgMDoKKyAgICAgICAgcmV0dXJuIC1pbnRfdG9fZmxvYXQoLW4pCisKKyAgICAjIENvbnZlcnQgbiB0byBhICdmbG9hdGluZy1wb2ludCcgbnVtYmVyIHEgKiAyKipzaGlmdCwgd2hlcmUgcSBpcyBhbgorICAgICMgaW50ZWdlciB3aXRoICdQUkVDSVNJT04nIHNpZ25pZmljYW50IGJpdHMuICBXaGVuIHNoaWZ0aW5nIG4gdG8gY3JlYXRlIHEsCisgICAgIyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IG9mIHEgaXMgdHJlYXRlZCBhcyAnc3RpY2t5Jy4gIFRoYXQgaXMsIHRoZQorICAgICMgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IG9mIHEgaXMgc2V0IGlmIGVpdGhlciB0aGUgY29ycmVzcG9uZGluZyBiaXQgb2YgbgorICAgICMgd2FzIGFscmVhZHkgc2V0LCBvciBhbnkgb25lIG9mIHRoZSBiaXRzIG9mIG4gbG9zdCBpbiB0aGUgc2hpZnQgd2FzIHNldC4KKyAgICBzaGlmdCA9IG4uYml0X2xlbmd0aCgpIC0gUFJFQ0lTSU9OCisgICAgcSA9IG4gPDwgLXNoaWZ0IGlmIHNoaWZ0IDwgMCBlbHNlIChuID4+IHNoaWZ0KSB8IGJvb2wobiAmIH4oLTEgPDwgc2hpZnQpKQorCisgICAgIyBSb3VuZCBoYWxmIHRvIGV2ZW4gKGFjdHVhbGx5IHJvdW5kcyB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZSBvZiA0LAorICAgICMgcm91bmRpbmcgdGllcyB0byBhIG11bHRpcGxlIG9mIDgpLgorICAgIHEgKz0gUk9VTkRfSEFMRl9UT19FVkVOX0NPUlJFQ1RJT05bcSAmIDddCisKKyAgICAjIERldGVjdCBvdmVyZmxvdy4KKyAgICBpZiBzaGlmdCArIChxID09IFFfTUFYKSA+IFNISUZUX01BWDoKKyAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiaW50ZWdlciB0b28gbGFyZ2UgdG8gY29udmVydCB0byBmbG9hdCIpCisKKyAgICAjIENoZWNrczogcSBpcyBleGFjdGx5IHJlcHJlc2VudGFibGUsIGFuZCBxKioyKipzaGlmdCBkb2Vzbid0IG92ZXJmbG93LgorICAgIGFzc2VydCBxICUgNCA9PSAwIGFuZCBxIC8vIDQgPD0gMioqKHN5cy5mbG9hdF9pbmZvLm1hbnRfZGlnKQorICAgIGFzc2VydCBxICogMioqc2hpZnQgPD0gc3lzLmZsb2F0X2luZm8ubWF4CisKKyAgICAjIFNvbWUgY2lyY3VsYXJpdHkgaGVyZSwgc2luY2UgZmxvYXQocSkgaXMgZG9pbmcgYW4gaW50LXRvLWZsb2F0CisgICAgIyBjb252ZXJzaW9uLiAgQnV0IGhlcmUgcSBpcyBvZiBib3VuZGVkIHNpemUsIGFuZCBpcyBleGFjdGx5IHJlcHJlc2VudGFibGUKKyAgICAjIGFzIGEgZmxvYXQuICBJbiBhIGxvdy1sZXZlbCBDLWxpa2UgbGFuZ3VhZ2UsIHRoaXMgb3BlcmF0aW9uIHdvdWxkIGJlIGEKKyAgICAjIHNpbXBsZSBjYXN0IChlLmcuLCBmcm9tIHVuc2lnbmVkIGxvbmcgbG9uZyB0byBkb3VibGUpLgorICAgIHJldHVybiBtYXRoLmxkZXhwKGZsb2F0KHEpLCBzaGlmdCkKKworCiAjIHB1cmUgUHl0aG9uIHZlcnNpb24gb2YgY29ycmVjdGx5LXJvdW5kZWQgdHJ1ZSBkaXZpc2lvbgogZGVmIHRydWVkaXYoYSwgYik6CiAgICAgIiIiQ29ycmVjdGx5LXJvdW5kZWQgdHJ1ZSBkaXZpc2lvbiBmb3IgaW50ZWdlcnMuIiIiCkBAIC0zNjcsNiArNDE0LDIzIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIDE3MjkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoTG9uZ1RydW5jKCkpLCAxNzI5KQogCisgICAgZGVmIGNoZWNrX2Zsb2F0X2NvbnZlcnNpb24oc2VsZiwgbik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBpbnQgLT4gZmxvYXQgY29udmVyc2lvbiBiZWhhdmlvdXIgbWF0Y2hlcworICAgICAgICAjIHRoYXQgb2YgdGhlIHB1cmUgUHl0aG9uIHZlcnNpb24gYWJvdmUuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFjdHVhbCA9IGZsb2F0KG4pCisgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgorICAgICAgICAgICAgYWN0dWFsID0gJ292ZXJmbG93JworCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGV4cGVjdGVkID0gaW50X3RvX2Zsb2F0KG4pCisgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgorICAgICAgICAgICAgZXhwZWN0ZWQgPSAnb3ZlcmZsb3cnCisKKyAgICAgICAgbXNnID0gKCJFcnJvciBpbiBjb252ZXJzaW9uIG9mIGludGVnZXIge30gdG8gZmxvYXQuICAiCisgICAgICAgICAgICAgICAiR290IHt9LCBleHBlY3RlZCB7fS4iLmZvcm1hdChuLCBhY3R1YWwsIGV4cGVjdGVkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtc2cpCisKICAgICBAc3VwcG9ydC5yZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0X2Zsb2F0X2NvbnZlcnNpb24oc2VsZik6CiAKQEAgLTQyMSw2ICs0ODUsMjIgQEAKICAgICAgICAgICAgIHkgPSAyKipwICogMioqNTMKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KGZsb2F0KHgpKSwgeSkKIAorICAgICAgICAjIENvbXBhcmUgYnVpbHRpbiBmbG9hdCBjb252ZXJzaW9uIHdpdGggcHVyZSBQeXRob24gaW50X3RvX2Zsb2F0CisgICAgICAgICMgZnVuY3Rpb24gYWJvdmUuCisgICAgICAgIHRlc3RfdmFsdWVzID0gWworICAgICAgICAgICAgaW50X2RibF9tYXgtMSwgaW50X2RibF9tYXgsIGludF9kYmxfbWF4KzEsCisgICAgICAgICAgICBoYWxmd2F5LTEsIGhhbGZ3YXksIGhhbGZ3YXkgKyAxLAorICAgICAgICAgICAgdG9wX3Bvd2VyLTEsIHRvcF9wb3dlciwgdG9wX3Bvd2VyKzEsCisgICAgICAgICAgICAyKnRvcF9wb3dlci0xLCAyKnRvcF9wb3dlciwgdG9wX3Bvd2VyKnRvcF9wb3dlciwKKyAgICAgICAgXQorICAgICAgICB0ZXN0X3ZhbHVlcy5leHRlbmQoZXhhY3RfdmFsdWVzKQorICAgICAgICBmb3IgcCBpbiByYW5nZSgtNCwgOCk6CisgICAgICAgICAgICBmb3IgeCBpbiByYW5nZSgtMTI4LCAxMjgpOgorICAgICAgICAgICAgICAgIHRlc3RfdmFsdWVzLmFwcGVuZCgyKioocCs1MykgKyB4KQorICAgICAgICBmb3IgdmFsdWUgaW4gdGVzdF92YWx1ZXM6CisgICAgICAgICAgICBzZWxmLmNoZWNrX2Zsb2F0X2NvbnZlcnNpb24odmFsdWUpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2Zsb2F0X2NvbnZlcnNpb24oLXZhbHVlKQorCiAgICAgZGVmIHRlc3RfZmxvYXRfb3ZlcmZsb3coc2VsZik6CiAgICAgICAgIGZvciB4IGluIC0yLjAsIC0xLjAsIDAuMCwgMS4wLCAyLjA6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KGludCh4KSksIHgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2x6bWEucHkgYi9MaWIvdGVzdC90ZXN0X2x6bWEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBkODU4MgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfbHptYS5weQpAQCAtMCwwICsxLDE1MzEgQEAKK2Zyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIFVuc3VwcG9ydGVkT3BlcmF0aW9uCitpbXBvcnQgb3MKK2ltcG9ydCByYW5kb20KK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKAorICAgIF80RywgVEVTVEZOLCBpbXBvcnRfbW9kdWxlLCBiaWdtZW10ZXN0LCBydW5fdW5pdHRlc3QsIHVubGluaworKQorCitsem1hID0gaW1wb3J0X21vZHVsZSgibHptYSIpCitmcm9tIGx6bWEgaW1wb3J0IExaTUFDb21wcmVzc29yLCBMWk1BRGVjb21wcmVzc29yLCBMWk1BRXJyb3IsIExaTUFGaWxlCisKKworY2xhc3MgQ29tcHJlc3NvckRlY29tcHJlc3NvclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICMgVGVzdCBlcnJvciBjYXNlcy4KKworICAgIGRlZiB0ZXN0X3NpbXBsZV9iYWRfYXJncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTFpNQUNvbXByZXNzb3IsIGZvcm1hdD0zLjQ1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIExaTUFDb21wcmVzc29yLCBjaGVjaz0iIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgcHJlc2V0PSJhc2RmIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgZmlsdGVycz0zKQorICAgICAgICAjIENhbid0IHNwZWNpZnkgRk9STUFUX0FVVE8gd2hlbiBjb21wcmVzc2luZy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgTFpNQUNvbXByZXNzb3IsIGZvcm1hdD1sem1hLkZPUk1BVF9BVVRPKQorICAgICAgICAjIENhbid0IHNwZWNpZnkgYSBwcmVzZXQgYW5kIGEgY3VzdG9tIGZpbHRlciBjaGFpbiBhdCB0aGUgc2FtZSB0aW1lLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUNvbXByZXNzb3IocHJlc2V0PTcsIGZpbHRlcnM9W3siaWQiOiBsem1hLkZJTFRFUl9MWk1BMn1dKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTFpNQURlY29tcHJlc3NvciwgKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTFpNQURlY29tcHJlc3NvciwgbWVtbGltaXQ9YiJxdyIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPSJ6enoiKQorICAgICAgICAjIENhbm5vdCBzcGVjaWZ5IGEgbWVtb3J5IGxpbWl0IHdpdGggRklMVEVSX1JBVy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBtZW1saW1pdD0weDEwMDAwMDApCisgICAgICAgICMgQ2FuIG9ubHkgc3BlY2lmeSBhIGN1c3RvbSBmaWx0ZXIgY2hhaW4gd2l0aCBGSUxURVJfUkFXLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBMWk1BRGVjb21wcmVzc29yLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRGVjb21wcmVzc29yKGZvcm1hdD1sem1hLkZPUk1BVF9YWiwgZmlsdGVycz1GSUxURVJTX1JBV18xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQURlY29tcHJlc3Nvcihmb3JtYXQ9bHptYS5GT1JNQVRfQUxPTkUsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKworICAgICAgICBsemMgPSBMWk1BQ29tcHJlc3NvcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHpjLmNvbXByZXNzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6Yy5jb21wcmVzcywgYiJmb28iLCBiImJhciIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHpjLmZsdXNoLCBiImJsYWgiKQorICAgICAgICBlbXB0eSA9IGx6Yy5mbHVzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGx6Yy5jb21wcmVzcywgYiJxdXV4IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbHpjLmZsdXNoKQorCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6ZC5kZWNvbXByZXNzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBiImZvbyIsIGIiYmFyIikKKyAgICAgICAgbHpkLmRlY29tcHJlc3MoZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBsemQuZGVjb21wcmVzcywgYiJxdXV4IikKKworICAgIGRlZiB0ZXN0X2JhZF9maWx0ZXJfc3BlYyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgZmlsdGVycz1bYiJ3b2JzaXRlIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIExaTUFDb21wcmVzc29yLCBmaWx0ZXJzPVt7Inh5enp5IjogM31dKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgZmlsdGVycz1beyJpZCI6IDk4NzY1fV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BQ29tcHJlc3NvcihmaWx0ZXJzPVt7ImlkIjogbHptYS5GSUxURVJfTFpNQTIsICJmb28iOiAwfV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BQ29tcHJlc3NvcihmaWx0ZXJzPVt7ImlkIjogbHptYS5GSUxURVJfREVMVEEsICJmb28iOiAwfV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BQ29tcHJlc3NvcihmaWx0ZXJzPVt7ImlkIjogbHptYS5GSUxURVJfWDg2LCAiZm9vIjogMH1dKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX2FmdGVyX2VvZihzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFopCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBsemQuZGVjb21wcmVzcywgYiJueWFuIikKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9tZW1saW1pdChzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcihtZW1saW1pdD0xMDI0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBDT01QUkVTU0VEX1haKQorCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfWFosIG1lbWxpbWl0PTEwMjQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvciwgbHpkLmRlY29tcHJlc3MsIENPTVBSRVNTRURfWFopCisKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9BTE9ORSwgbWVtbGltaXQ9MTAyNCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsemQuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9BTE9ORSkKKworICAgICMgVGVzdCBMWk1BRGVjb21wcmVzc29yIG9uIGtub3duLWdvb2QgaW5wdXQgZGF0YS4KKworICAgIGRlZiBfdGVzdF9kZWNvbXByZXNzb3Ioc2VsZiwgbHpkLCBkYXRhLCBjaGVjaywgdW51c2VkX2RhdGE9YiIiKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsemQuZW9mKQorICAgICAgICBvdXQgPSBsemQuZGVjb21wcmVzcyhkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwgSU5QVVQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLmNoZWNrLCBjaGVjaykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGx6ZC5lb2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLnVudXNlZF9kYXRhLCB1bnVzZWRfZGF0YSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9hdXRvKHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBDT01QUkVTU0VEX1haLCBsem1hLkNIRUNLX0NSQzY0KQorCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfQUxPTkUsIGx6bWEuQ0hFQ0tfTk9ORSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl94eihzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9YWikKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBDT01QUkVTU0VEX1haLCBsem1hLkNIRUNLX0NSQzY0KQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX2Fsb25lKHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX0FMT05FKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfQUxPTkUsIGx6bWEuQ0hFQ0tfTk9ORSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9yYXdfMShzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBDT01QUkVTU0VEX1JBV18xLCBsem1hLkNIRUNLX05PTkUpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfcmF3XzIoc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzIpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVjb21wcmVzc29yKGx6ZCwgQ09NUFJFU1NFRF9SQVdfMiwgbHptYS5DSEVDS19OT05FKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX3Jhd18zKHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18zKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfUkFXXzMsIGx6bWEuQ0hFQ0tfTk9ORSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9yYXdfNChzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBDT01QUkVTU0VEX1JBV180LCBsem1hLkNIRUNLX05PTkUpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfY2h1bmtzKHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgb3V0ID0gW10KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKENPTVBSRVNTRURfWFopLCAxMCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGx6ZC5lb2YpCisgICAgICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFpbaTppKzEwXSkpCisgICAgICAgIG91dCA9IGIiIi5qb2luKG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsIElOUFVUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGx6ZC5jaGVjaywgbHptYS5DSEVDS19DUkM2NCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGx6ZC5lb2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLnVudXNlZF9kYXRhLCBiIiIpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfdW51c2VkX2RhdGEoc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBleHRyYSA9IGIiZm9vYmxpYmFyIgorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfWFogKyBleHRyYSwgbHptYS5DSEVDS19DUkM2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkX2RhdGE9ZXh0cmEpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfYmFkX2lucHV0KHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsemQuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9SQVdfMSkKKworICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX1haKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBDT01QUkVTU0VEX0FMT05FKQorCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfQUxPTkUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvciwgbHpkLmRlY29tcHJlc3MsIENPTVBSRVNTRURfWFopCisKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsemQuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9YWikKKworICAgICMgVGVzdCB0aGF0IExaTUFDb21wcmVzc29yLT5MWk1BRGVjb21wcmVzc29yIHByZXNlcnZlcyB0aGUgaW5wdXQgZGF0YS4KKworICAgIGRlZiB0ZXN0X3JvdW5kdHJpcF94eihzZWxmKToKKyAgICAgICAgbHpjID0gTFpNQUNvbXByZXNzb3IoKQorICAgICAgICBjZGF0YSA9IGx6Yy5jb21wcmVzcyhJTlBVVCkgKyBsemMuZmx1c2goKQorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBjZGF0YSwgbHptYS5DSEVDS19DUkM2NCkKKworICAgIGRlZiB0ZXN0X3JvdW5kdHJpcF9hbG9uZShzZWxmKToKKyAgICAgICAgbHpjID0gTFpNQUNvbXByZXNzb3IobHptYS5GT1JNQVRfQUxPTkUpCisgICAgICAgIGNkYXRhID0gbHpjLmNvbXByZXNzKElOUFVUKSArIGx6Yy5mbHVzaCgpCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIGNkYXRhLCBsem1hLkNIRUNLX05PTkUpCisKKyAgICBkZWYgdGVzdF9yb3VuZHRyaXBfcmF3KHNlbGYpOgorICAgICAgICBsemMgPSBMWk1BQ29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKyAgICAgICAgY2RhdGEgPSBsemMuY29tcHJlc3MoSU5QVVQpICsgbHpjLmZsdXNoKCkKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBjZGF0YSwgbHptYS5DSEVDS19OT05FKQorCisgICAgZGVmIHRlc3Rfcm91bmR0cmlwX2NodW5rcyhzZWxmKToKKyAgICAgICAgbHpjID0gTFpNQUNvbXByZXNzb3IoKQorICAgICAgICBjZGF0YSA9IFtdCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihJTlBVVCksIDEwKToKKyAgICAgICAgICAgIGNkYXRhLmFwcGVuZChsemMuY29tcHJlc3MoSU5QVVRbaTppKzEwXSkpCisgICAgICAgIGNkYXRhLmFwcGVuZChsemMuZmx1c2goKSkKKyAgICAgICAgY2RhdGEgPSBiIiIuam9pbihjZGF0YSkKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVjb21wcmVzc29yKGx6ZCwgY2RhdGEsIGx6bWEuQ0hFQ0tfQ1JDNjQpCisKKyAgICAjIExaTUFEZWNvbXByZXNzb3IgaW50ZW50aW9uYWxseSBkb2VzIG5vdCBoYW5kbGUgY29uY2F0ZW5hdGVkIHN0cmVhbXMuCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfbXVsdGlzdHJlYW0oc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfWFogKyBDT01QUkVTU0VEX0FMT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsem1hLkNIRUNLX0NSQzY0LCB1bnVzZWRfZGF0YT1DT01QUkVTU0VEX0FMT05FKQorCisgICAgIyBUZXN0IHdpdGggaW5wdXRzIGxhcmdlciB0aGFuIDRHaUIuCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RyArIDEwMCwgbWVtdXNlPTIpCisgICAgZGVmIHRlc3RfY29tcHJlc3Nvcl9iaWdtZW0oc2VsZiwgc2l6ZSk6CisgICAgICAgIGx6YyA9IExaTUFDb21wcmVzc29yKCkKKyAgICAgICAgY2RhdGEgPSBsemMuY29tcHJlc3MoYiJ4IiAqIHNpemUpICsgbHpjLmZsdXNoKCkKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoY2RhdGEpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRkYXRhKSwgc2l6ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRkYXRhLnN0cmlwKGIieCIpKSwgMCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGRkYXRhID0gTm9uZQorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgKyAxMDAsIG1lbXVzZT0zKQorICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9iaWdtZW0oc2VsZiwgc2l6ZSk6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBibG9ja3NpemUgPSAxMCAqIDEwMjQgKiAxMDI0CisgICAgICAgIGJsb2NrID0gcmFuZG9tLmdldHJhbmRiaXRzKGJsb2Nrc2l6ZSAqIDgpLnRvX2J5dGVzKGJsb2Nrc2l6ZSwgImxpdHRsZSIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlucHV0ID0gYmxvY2sgKiAoc2l6ZSAvLyBibG9ja3NpemUgKyAxKQorICAgICAgICAgICAgY2RhdGEgPSBsem1hLmNvbXByZXNzKGlucHV0KQorICAgICAgICAgICAgZGRhdGEgPSBsemQuZGVjb21wcmVzcyhjZGF0YSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIGlucHV0KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaW5wdXQgPSBjZGF0YSA9IGRkYXRhID0gTm9uZQorCisKK2NsYXNzIENvbXByZXNzRGVjb21wcmVzc0Z1bmN0aW9uVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIyBUZXN0IGVycm9yIGNhc2VzOgorCisgICAgZGVmIHRlc3RfYmFkX2FyZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHptYS5jb21wcmVzcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmNvbXByZXNzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmNvbXByZXNzLCBiIiIsIGZvcm1hdD0ieHoiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6bWEuY29tcHJlc3MsIGIiIiwgY2hlY2s9Im5vbmUiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6bWEuY29tcHJlc3MsIGIiIiwgcHJlc2V0PSJibGFoIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmNvbXByZXNzLCBiIiIsIGZpbHRlcnM9MTAyNCkKKyAgICAgICAgIyBDYW4ndCBzcGVjaWZ5IGEgcHJlc2V0IGFuZCBhIGN1c3RvbSBmaWx0ZXIgY2hhaW4gYXQgdGhlIHNhbWUgdGltZS4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuY29tcHJlc3MoYiIiLCBwcmVzZXQ9MywgZmlsdGVycz1beyJpZCI6IGx6bWEuRklMVEVSX0xaTUEyfV0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmRlY29tcHJlc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHptYS5kZWNvbXByZXNzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmRlY29tcHJlc3MsIGIiIiwgZm9ybWF0PSJsem1hIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmRlY29tcHJlc3MsIGIiIiwgbWVtbGltaXQ9Ny4zZTkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuZGVjb21wcmVzcyhiIiIsIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9e30pCisgICAgICAgICMgQ2Fubm90IHNwZWNpZnkgYSBtZW1vcnkgbGltaXQgd2l0aCBGSUxURVJfUkFXLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKGIiIiwgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgbWVtbGltaXQ9MHgxMDAwMDAwKQorICAgICAgICAjIENhbiBvbmx5IHNwZWNpZnkgYSBjdXN0b20gZmlsdGVyIGNoYWluIHdpdGggRklMVEVSX1JBVy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuZGVjb21wcmVzcyhiIiIsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuZGVjb21wcmVzcyhiIiIsIGZvcm1hdD1sem1hLkZPUk1BVF9YWiwgZmlsdGVycz1GSUxURVJTX1JBV18xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKAorICAgICAgICAgICAgICAgICAgICBiIiIsIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSwgZmlsdGVycz1GSUxURVJTX1JBV18xKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc19tZW1saW1pdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfWFosIG1lbWxpbWl0PTEwMjQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuZGVjb21wcmVzcygKKyAgICAgICAgICAgICAgICAgICAgQ09NUFJFU1NFRF9YWiwgZm9ybWF0PWx6bWEuRk9STUFUX1haLCBtZW1saW1pdD0xMDI0KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLmRlY29tcHJlc3MoCisgICAgICAgICAgICAgICAgICAgIENPTVBSRVNTRURfQUxPTkUsIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSwgbWVtbGltaXQ9MTAyNCkKKworICAgICMgVGVzdCBMWk1BRGVjb21wcmVzc29yIG9uIGtub3duLWdvb2QgaW5wdXQgZGF0YS4KKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfZ29vZF9pbnB1dChzZWxmKToKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9BTE9ORSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWiwgbHptYS5GT1JNQVRfWFopCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfQUxPTkUsIGx6bWEuRk9STUFUX0FMT05FKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcygKKyAgICAgICAgICAgICAgICBDT01QUkVTU0VEX1JBV18xLCBsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoCisgICAgICAgICAgICAgICAgQ09NUFJFU1NFRF9SQVdfMiwgbHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKAorICAgICAgICAgICAgICAgIENPTVBSRVNTRURfUkFXXzMsIGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcygKKyAgICAgICAgICAgICAgICBDT01QUkVTU0VEX1JBV180LCBsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzX2luY29tcGxldGVfaW5wdXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvciwgbHptYS5kZWNvbXByZXNzLCBDT01QUkVTU0VEX1haWzoxMjhdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6bWEuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9BTE9ORVs6MTI4XSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsem1hLmRlY29tcHJlc3MsIENPTVBSRVNTRURfUkFXXzFbOjEyOF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsem1hLmRlY29tcHJlc3MsIENPTVBSRVNTRURfUkFXXzJbOjEyOF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsem1hLmRlY29tcHJlc3MsIENPTVBSRVNTRURfUkFXXzNbOjEyOF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsem1hLmRlY29tcHJlc3MsIENPTVBSRVNTRURfUkFXXzRbOjEyOF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfYmFkX2lucHV0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9SQVdfMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfQUxPTkUsIGZvcm1hdD1sem1hLkZPUk1BVF9YWikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfWFosIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfWFosIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVycz1GSUxURVJTX1JBV18xKQorCisgICAgIyBUZXN0IHRoYXQgY29tcHJlc3MoKS0+ZGVjb21wcmVzcygpIHByZXNlcnZlcyB0aGUgaW5wdXQgZGF0YS4KKworICAgIGRlZiB0ZXN0X3JvdW5kdHJpcChzZWxmKToKKyAgICAgICAgY2RhdGEgPSBsem1hLmNvbXByZXNzKElOUFVUKQorICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhjZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgY2RhdGEgPSBsem1hLmNvbXByZXNzKElOUFVULCBsem1hLkZPUk1BVF9YWikKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoY2RhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgICAgIGNkYXRhID0gbHptYS5jb21wcmVzcyhJTlBVVCwgbHptYS5GT1JNQVRfQUxPTkUpCisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKGNkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgICAgICBjZGF0YSA9IGx6bWEuY29tcHJlc3MoSU5QVVQsIGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV180KQorICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhjZGF0YSwgbHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgIyBVbmxpa2UgTFpNQURlY29tcHJlc3NvciwgZGVjb21wcmVzcygpICpkb2VzKiBoYW5kbGUgY29uY2F0ZW5hdGVkIHN0cmVhbXMuCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzX211bHRpc3RyZWFtKHNlbGYpOgorICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haICsgQ09NUFJFU1NFRF9BTE9ORSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQgKiAyKQorCisKK2NsYXNzIFRlbXBGaWxlOgorICAgICIiIkNvbnRleHQgbWFuYWdlciAtIGNyZWF0ZXMgYSBmaWxlLCBhbmQgZGVsZXRlcyBpdCBvbiBfX2V4aXRfXy4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgZGF0YT1iIiIpOgorICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKKyAgICAgICAgc2VsZi5kYXRhID0gZGF0YQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHNlbGYuZGF0YSkKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHVubGluayhzZWxmLmZpbGVuYW1lKQorCisKK2NsYXNzIEZpbGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpIGFzIGY6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTygpLCAiYSIpIGFzIGY6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9pbml0X3dpdGhfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHdpdGggVGVtcEZpbGUoVEVTVEZOLCBDT01QUkVTU0VEX1haKToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOKSBhcyBmOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJhIikgYXMgZjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9pbml0X21vZGUoc2VsZik6CisgICAgICAgIHdpdGggVGVtcEZpbGUoVEVTVEZOKToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAiciIpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAicmIiKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgInciKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgIndiIik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJhIik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJhYiIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2luaXRfYmFkX21vZGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCAoMywgIngiKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICIiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgIngiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgInJ0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICJyKyIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCAid3QiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgIncrIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICJydyIpCisKKyAgICBkZWYgdGVzdF9pbml0X2JhZF9jaGVjayhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIGNoZWNrPWIiYXNkIikKKyAgICAgICAgIyBDSEVDS19VTktOT1dOIGFuZCBhbnl0aGluZyBhYm92ZSBDSEVDS19JRF9NQVggc2hvdWxkIGJlIGludmFsaWQuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBjaGVjaz1sem1hLkNIRUNLX1VOS05PV04pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBjaGVjaz1sem1hLkNIRUNLX0lEX01BWCArIDMpCisgICAgICAgICMgQ2Fubm90IHNwZWNpZnkgYSBjaGVjayB3aXRoIG1vZGU9InIiLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgY2hlY2s9bHptYS5DSEVDS19OT05FKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgY2hlY2s9bHptYS5DSEVDS19DUkMzMikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksIGNoZWNrPWx6bWEuQ0hFQ0tfQ1JDNjQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCBjaGVjaz1sem1hLkNIRUNLX1NIQTI1NikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksIGNoZWNrPWx6bWEuQ0hFQ0tfVU5LTk9XTikKKworICAgIGRlZiB0ZXN0X2luaXRfYmFkX3ByZXNldChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIHByZXNldD00LjM5KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwgcHJlc2V0PTEwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwgcHJlc2V0PTIzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIHByZXNldD0tMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBwcmVzZXQ9LTcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBwcmVzZXQ9ImZvbyIpCisgICAgICAgICMgQ2Fubm90IHNwZWNpZnkgYSBwcmVzZXQgd2l0aCBtb2RlPSJyIi4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksIHByZXNldD0zKQorCisgICAgZGVmIHRlc3RfaW5pdF9iYWRfZmlsdGVyX3NwZWMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBmaWx0ZXJzPVtiIndvYnNpdGUiXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBmaWx0ZXJzPVt7Inh5enp5IjogM31dKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIGZpbHRlcnM9W3siaWQiOiA5ODc2NX1dKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsCisgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzPVt7ImlkIjogbHptYS5GSUxURVJfTFpNQTIsICJmb28iOiAwfV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwKKyAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM9W3siaWQiOiBsem1hLkZJTFRFUl9ERUxUQSwgImZvbyI6IDB9XSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLAorICAgICAgICAgICAgICAgICAgICAgZmlsdGVycz1beyJpZCI6IGx6bWEuRklMVEVSX1g4NiwgImZvbyI6IDB9XSkKKworICAgIGRlZiB0ZXN0X2luaXRfd2l0aF9wcmVzZXRfYW5kX2ZpbHRlcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywKKyAgICAgICAgICAgICAgICAgICAgIHByZXNldD02LCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzEpCisKKyAgICBkZWYgdGVzdF9jbG9zZShzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKENPTVBSRVNTRURfWFopIGFzIHNyYzoKKyAgICAgICAgICAgIGYgPSBMWk1BRmlsZShzcmMpCisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgICMgTFpNQUZpbGUuY2xvc2UoKSBzaG91bGQgbm90IGNsb3NlIHRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzcmMuY2xvc2VkKQorICAgICAgICAgICAgIyBUcnkgY2xvc2luZyBhbiBhbHJlYWR5LWNsb3NlZCBMWk1BRmlsZS4KKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzcmMuY2xvc2VkKQorCisgICAgICAgICMgVGVzdCB3aXRoIGEgcmVhbCBmaWxlIG9uIGRpc2ssIG9wZW5lZCBkaXJlY3RseSBieSBMWk1BRmlsZS4KKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4sIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgZiA9IExaTUFGaWxlKFRFU1RGTikKKyAgICAgICAgICAgIGZwID0gZi5fZnAKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgIyBIZXJlLCBMWk1BRmlsZS5jbG9zZSgpICpzaG91bGQqIGNsb3NlIHRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZwLmNsb3NlZCkKKyAgICAgICAgICAgICMgVHJ5IGNsb3NpbmcgYW4gYWxyZWFkeS1jbG9zZWQgTFpNQUZpbGUuCisgICAgICAgICAgICBmLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2Nsb3NlZChzZWxmKToKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jbG9zZWQpCisgICAgICAgICAgICBmLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmNsb3NlZCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5jbG9zZWQpCisKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuY2xvc2VkKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLmNsb3NlZCkKKworICAgIGRlZiB0ZXN0X2ZpbGVubyhzZWxmKToKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuc3VwcG9ydGVkT3BlcmF0aW9uLCBmLmZpbGVubykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLmZpbGVubykKKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4sIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgZiA9IExaTUFGaWxlKFRFU1RGTikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZmlsZW5vKCksIGYuX2ZwLmZpbGVubygpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmLmZpbGVubygpLCBpbnQpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLmZpbGVubykKKworICAgIGRlZiB0ZXN0X3NlZWthYmxlKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYuc2Vla2FibGUoKSkKKyAgICAgICAgICAgIGYucmVhZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5zZWVrYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2Vla2FibGUpCisKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuc2Vla2FibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnNlZWthYmxlKQorCisgICAgICAgIHNyYyA9IEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikKKyAgICAgICAgc3JjLnNlZWthYmxlID0gbGFtYmRhOiBGYWxzZQorICAgICAgICBmID0gTFpNQUZpbGUoc3JjKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuc2Vla2FibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnNlZWthYmxlKQorCisgICAgZGVmIHRlc3RfcmVhZGFibGUoc2VsZik6CisgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5yZWFkYWJsZSgpKQorICAgICAgICAgICAgZi5yZWFkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLnJlYWRhYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkYWJsZSkKKworICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5yZWFkYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZGFibGUpCisKKyAgICBkZWYgdGVzdF93cml0YWJsZShzZWxmKToKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi53cml0YWJsZSgpKQorICAgICAgICAgICAgZi5yZWFkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi53cml0YWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYud3JpdGFibGUpCisKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi53cml0YWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYud3JpdGFibGUpCisKKyAgICBkZWYgdGVzdF9yZWFkKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfQUxPTkUpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgZm9ybWF0PWx6bWEuRk9STUFUX1haKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX0FMT05FKSwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1JBV18xKSwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzEpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfUkFXXzIpLAorICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYiIiKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9SQVdfMyksCisgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18zKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1JBV180KSwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzQpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKworICAgIGRlZiB0ZXN0X3JlYWRfMChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoMCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfQUxPTkUpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoMCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCBmb3JtYXQ9bHptYS5GT1JNQVRfWFopIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgwKSwgYiIiKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9BTE9ORSksIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKDApLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkXzEwKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBjaHVua3MgPSBbXQorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmLnJlYWQoMTApCisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4ocmVzdWx0KSwgMTApCisgICAgICAgICAgICAgICAgY2h1bmtzLmFwcGVuZChyZXN1bHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiIi5qb2luKGNodW5rcyksIElOUFVUKQorCisgICAgZGVmIHRlc3RfcmVhZF9tdWx0aXN0cmVhbShzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFogKiA1KSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUICogNSkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFogKyBDT01QUkVTU0VEX0FMT05FKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUICogMikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfUkFXXzMgKiA0KSwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzMpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCAqIDQpCisKKyAgICBkZWYgdGVzdF9yZWFkX211bHRpc3RyZWFtX2J1ZmZlcl9zaXplX2FsaWduZWQoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGUgY2FzZSB3aGVyZSBhIHN0cmVhbSBib3VuZGFyeSBjb2luY2lkZXMgd2l0aCB0aGUgZW5kCisgICAgICAgICMgb2YgdGhlIHJhdyByZWFkIGJ1ZmZlci4KKyAgICAgICAgc2F2ZWRfYnVmZmVyX3NpemUgPSBsem1hLl9CVUZGRVJfU0laRQorICAgICAgICBsem1hLl9CVUZGRVJfU0laRSA9IGxlbihDT01QUkVTU0VEX1haKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiAqICA1KSkgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCAqIDUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBsem1hLl9CVUZGRVJfU0laRSA9IHNhdmVkX2J1ZmZlcl9zaXplCisKKyAgICBkZWYgdGVzdF9yZWFkX2Zyb21fZmlsZShzZWxmKToKKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4sIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4pIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYiIiKQorCisgICAgZGVmIHRlc3RfcmVhZF9mcm9tX2ZpbGVfd2l0aF9ieXRlc19maWxlbmFtZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYnl0ZXNfZmlsZW5hbWUgPSBURVNURk4uZW5jb2RlKCJhc2NpaSIpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJUZW1wb3JhcnkgZmlsZSBuYW1lIG5lZWRzIHRvIGJlIEFTQ0lJIikKKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4sIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShieXRlc19maWxlbmFtZSkgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkX2luY29tcGxldGUoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haWzoxMjhdKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBmLnJlYWQpCisKKyAgICBkZWYgdGVzdF9yZWFkX3RydW5jYXRlZChzZWxmKToKKyAgICAgICAgIyBEcm9wIHN0cmVhbSBmb290ZXI6IENSQyAoNCBieXRlcyksIGluZGV4IHNpemUgKDQgYnl0ZXMpLAorICAgICAgICAjIGZsYWdzICgyIGJ5dGVzKSBhbmQgbWFnaWMgbnVtYmVyICgyIGJ5dGVzKS4KKyAgICAgICAgdHJ1bmNhdGVkID0gQ09NUFJFU1NFRF9YWls6LTEyXQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8odHJ1bmNhdGVkKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBmLnJlYWQpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyh0cnVuY2F0ZWQpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQobGVuKElOUFVUKSksIElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IsIGYucmVhZCwgMSkKKyAgICAgICAgIyBJbmNvbXBsZXRlIDEyLWJ5dGUgaGVhZGVyLgorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMik6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8odHJ1bmNhdGVkWzppXSkpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IsIGYucmVhZCwgMSkKKworICAgIGRlZiB0ZXN0X3JlYWRfYmFkX2FyZ3Moc2VsZik6CisgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYucmVhZCwgTm9uZSkKKworICAgIGRlZiB0ZXN0X3JlYWQxKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBibG9ja3MgPSBbXQorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmLnJlYWQxKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQocmVzdWx0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIiIuam9pbihibG9ja3MpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkMSgpLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkMV8wKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZDEoMCksIGIiIikKKworICAgIGRlZiB0ZXN0X3JlYWQxXzEwKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBibG9ja3MgPSBbXQorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmLnJlYWQxKDEwKQorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChyZXN1bHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiIi5qb2luKGJsb2NrcyksIElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQxKCksIGIiIikKKworICAgIGRlZiB0ZXN0X3JlYWQxX211bHRpc3RyZWFtKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiAqIDUpKSBhcyBmOgorICAgICAgICAgICAgYmxvY2tzID0gW10KKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZi5yZWFkMSgpCisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKHJlc3VsdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiIiLmpvaW4oYmxvY2tzKSwgSU5QVVQgKiA1KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQxKCksIGIiIikKKworICAgIGRlZiB0ZXN0X3JlYWQxX2JhZF9hcmdzKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZDEpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWQxKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYucmVhZDEsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9wZWVrKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICByZXN1bHQgPSBmLnBlZWsoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihyZXN1bHQpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKElOUFVULnN0YXJ0c3dpdGgocmVzdWx0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICByZXN1bHQgPSBmLnBlZWsoMTApCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKHJlc3VsdCksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoSU5QVVQuc3RhcnRzd2l0aChyZXN1bHQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisKKyAgICBkZWYgdGVzdF9wZWVrX2JhZF9hcmdzKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5wZWVrKQorCisgICAgZGVmIHRlc3RfaXRlcmF0b3Ioc2VsZik6CisgICAgICAgIHdpdGggQnl0ZXNJTyhJTlBVVCkgYXMgZjoKKyAgICAgICAgICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChsaXN0KGl0ZXIoZikpLCBsaW5lcykKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfQUxPTkUpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGlzdChpdGVyKGYpKSwgbGluZXMpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgZm9ybWF0PWx6bWEuRk9STUFUX1haKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGlzdChpdGVyKGYpKSwgbGluZXMpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX0FMT05FKSwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGlzdChpdGVyKGYpKSwgbGluZXMpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1JBV18yKSwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChsaXN0KGl0ZXIoZikpLCBsaW5lcykKKworICAgIGRlZiB0ZXN0X3JlYWRsaW5lKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oSU5QVVQpIGFzIGY6CisgICAgICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWRsaW5lKCksIGxpbmUpCisKKyAgICBkZWYgdGVzdF9yZWFkbGluZXMoc2VsZik6CisgICAgICAgIHdpdGggQnl0ZXNJTyhJTlBVVCkgYXMgZjoKKyAgICAgICAgICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChmLnJlYWRsaW5lcygpLCBsaW5lcykKKworICAgIGRlZiB0ZXN0X3dyaXRlKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBkc3Q6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICBleHBlY3RlZCA9IGx6bWEuY29tcHJlc3MoSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRzdC5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgZHN0OgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShkc3QsICJ3IiwgZm9ybWF0PWx6bWEuRk9STUFUX1haKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICBleHBlY3RlZCA9IGx6bWEuY29tcHJlc3MoSU5QVVQsIGZvcm1hdD1sem1hLkZPUk1BVF9YWikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHN0LmdldHZhbHVlKCksIGV4cGVjdGVkKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBkc3Q6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgInciLCBmb3JtYXQ9bHptYS5GT1JNQVRfQUxPTkUpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gbHptYS5jb21wcmVzcyhJTlBVVCwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkc3QuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGRzdDoKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAidyIsIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM9RklMVEVSU19SQVdfMikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVULCBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM9RklMVEVSU19SQVdfMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHN0LmdldHZhbHVlKCksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfMTAoc2VsZik6CisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGRzdDoKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgZm9yIHN0YXJ0IGluIHJhbmdlKDAsIGxlbihJTlBVVCksIDEwKToKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVFtzdGFydDpzdGFydCsxMF0pCisgICAgICAgICAgICBleHBlY3RlZCA9IGx6bWEuY29tcHJlc3MoSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRzdC5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3dyaXRlX2FwcGVuZChzZWxmKToKKyAgICAgICAgcGFydDEgPSBJTlBVVFs6MTAyNF0KKyAgICAgICAgcGFydDIgPSBJTlBVVFsxMDI0OjE1MzZdCisgICAgICAgIHBhcnQzID0gSU5QVVRbMTUzNjpdCisgICAgICAgIGV4cGVjdGVkID0gYiIiLmpvaW4obHptYS5jb21wcmVzcyh4KSBmb3IgeCBpbiAocGFydDEsIHBhcnQyLCBwYXJ0MykpCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGRzdDoKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShwYXJ0MSkKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAiYSIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShwYXJ0MikKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAiYSIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShwYXJ0MykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHN0LmdldHZhbHVlKCksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfdG9fZmlsZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVUKQorICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgInJiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBleHBlY3RlZCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHVubGluayhURVNURk4pCisKKyAgICBkZWYgdGVzdF93cml0ZV90b19maWxlX3dpdGhfYnl0ZXNfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJ5dGVzX2ZpbGVuYW1lID0gVEVTVEZOLmVuY29kZSgiYXNjaWkiKQorICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiVGVtcG9yYXJ5IGZpbGUgbmFtZSBuZWVkcyB0byBiZSBBU0NJSSIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoYnl0ZXNfZmlsZW5hbWUsICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVUKQorICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgInJiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBleHBlY3RlZCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHVubGluayhURVNURk4pCisKKyAgICBkZWYgdGVzdF93cml0ZV9hcHBlbmRfdG9fZmlsZShzZWxmKToKKyAgICAgICAgcGFydDEgPSBJTlBVVFs6MTAyNF0KKyAgICAgICAgcGFydDIgPSBJTlBVVFsxMDI0OjE1MzZdCisgICAgICAgIHBhcnQzID0gSU5QVVRbMTUzNjpdCisgICAgICAgIGV4cGVjdGVkID0gYiIiLmpvaW4obHptYS5jb21wcmVzcyh4KSBmb3IgeCBpbiAocGFydDEsIHBhcnQyLCBwYXJ0MykpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShwYXJ0MSkKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAiYSIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShwYXJ0MikKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAiYSIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShwYXJ0MykKKyAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgZXhwZWN0ZWQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfYmFkX2FyZ3Moc2VsZik6CisgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKCksICJ3IikKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYud3JpdGUsIGIiZm9vIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCAiciIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLndyaXRlLCBiImJhciIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYud3JpdGUsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYud3JpdGUsICJ0ZXh0IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZi53cml0ZSwgNzg5KQorCisgICAgZGVmIHRlc3Rfd3JpdGVsaW5lcyhzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKElOUFVUKSBhcyBmOgorICAgICAgICAgICAgbGluZXMgPSBmLnJlYWRsaW5lcygpCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGRzdDoKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZWxpbmVzKGxpbmVzKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkc3QuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9zZWVrX2ZvcndhcmQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGYuc2Vlayg1NTUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVFs1NTU6XSkKKworICAgIGRlZiB0ZXN0X3NlZWtfZm9yd2FyZF9hY3Jvc3Nfc3RyZWFtcyhzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFogKiAyKSkgYXMgZjoKKyAgICAgICAgICAgIGYuc2VlayhsZW4oSU5QVVQpICsgMTIzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbMTIzOl0pCisKKyAgICBkZWYgdGVzdF9zZWVrX2ZvcndhcmRfcmVsYXRpdmVfdG9fY3VycmVudChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgZi5yZWFkKDEwMCkKKyAgICAgICAgICAgIGYuc2VlaygxMjM2LCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbMTMzNjpdKQorCisgICAgZGVmIHRlc3Rfc2Vla19mb3J3YXJkX3JlbGF0aXZlX3RvX2VuZChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgZi5zZWVrKC01NTUsIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVFstNTU1Ol0pCisKKyAgICBkZWYgdGVzdF9zZWVrX2JhY2t3YXJkKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBmLnJlYWQoMTAwMSkKKyAgICAgICAgICAgIGYuc2VlaygyMTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVFsyMTE6XSkKKworICAgIGRlZiB0ZXN0X3NlZWtfYmFja3dhcmRfYWNyb3NzX3N0cmVhbXMoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haICogMikpIGFzIGY6CisgICAgICAgICAgICBmLnJlYWQobGVuKElOUFVUKSArIDMzMykKKyAgICAgICAgICAgIGYuc2Vlayg3MzcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVFs3Mzc6XSArIElOUFVUKQorCisgICAgZGVmIHRlc3Rfc2Vla19iYWNrd2FyZF9yZWxhdGl2ZV90b19lbmQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGYuc2VlaygtMTUwLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbLTE1MDpdKQorCisgICAgZGVmIHRlc3Rfc2Vla19wYXN0X2VuZChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgZi5zZWVrKGxlbihJTlBVVCkgKyA5MDAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgbGVuKElOUFVUKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKworICAgIGRlZiB0ZXN0X3NlZWtfcGFzdF9zdGFydChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgZi5zZWVrKC04OCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKworICAgIGRlZiB0ZXN0X3NlZWtfYmFkX2FyZ3Moc2VsZik6CisgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5zZWVrLCAwKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5zZWVrLCAwKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnNlZWssIDAsIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnNlZWssIDksICgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLnNlZWssIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYuc2VlaywgYiJkZXJwIikKKworICAgIGRlZiB0ZXN0X3RlbGwoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIHBvcyA9IDAKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgcG9zKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGYucmVhZCgxODMpCisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBwb3MgKz0gbGVuKHJlc3VsdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIGxlbihJTlBVVCkpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmb3IgcG9zIGluIHJhbmdlKDAsIGxlbihJTlBVVCksIDE0NCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgcG9zKQorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVRbcG9zOnBvcysxNDRdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgbGVuKElOUFVUKSkKKworICAgIGRlZiB0ZXN0X3RlbGxfYmFkX2FyZ3Moc2VsZik6CisgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi50ZWxsKQorCisKK2NsYXNzIE9wZW5UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9iaW5hcnlfbW9kZXMoc2VsZik6CisgICAgICAgIHdpdGggbHptYS5vcGVuKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oYmlvLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoYmlvLmdldHZhbHVlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgSU5QVVQpCisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJhYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhiaW8uZ2V0dmFsdWUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCBJTlBVVCAqIDIpCisKKyAgICBkZWYgdGVzdF90ZXh0X21vZGVzKHNlbGYpOgorICAgICAgICB1bmNvbXByZXNzZWQgPSBJTlBVVC5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgdW5jb21wcmVzc2VkX3JhdyA9IHVuY29tcHJlc3NlZC5yZXBsYWNlKCJcbiIsIG9zLmxpbmVzZXApCisgICAgICAgIHdpdGggbHptYS5vcGVuKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICJydCIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCB1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGJpbzoKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgInd0IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhiaW8uZ2V0dmFsdWUoKSkuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkX3JhdykKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgImF0IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhiaW8uZ2V0dmFsdWUoKSkuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkX3JhdyAqIDIpCisKKyAgICBkZWYgdGVzdF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4pOgorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oVEVTVEZOLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgICAgIGZpbGVfZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhmLnJlYWQoKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgSU5QVVQpCisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihURVNURk4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihURVNURk4sICJhYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKFRFU1RGTiwgInJiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCAqIDIpCisKKyAgICBkZWYgdGVzdF9iYWRfcGFyYW1zKHNlbGYpOgorICAgICAgICAjIFRlc3QgaW52YWxpZCBwYXJhbWV0ZXIgY29tYmluYXRpb25zLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5vcGVuKFRFU1RGTiwgIiIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLm9wZW4oVEVTVEZOLCAieCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLm9wZW4oVEVTVEZOLCAicmJ0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEub3BlbihURVNURk4sICJyYiIsIGVuY29kaW5nPSJ1dGYtOCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLm9wZW4oVEVTVEZOLCAicmIiLCBlcnJvcnM9Imlnbm9yZSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLm9wZW4oVEVTVEZOLCAicmIiLCBuZXdsaW5lPSJcbiIpCisKKyAgICBkZWYgdGVzdF9mb3JtYXRfYW5kX2ZpbHRlcnMoc2VsZik6CisgICAgICAgICMgVGVzdCBub24tZGVmYXVsdCBmb3JtYXQgYW5kIGZpbHRlciBjaGFpbi4KKyAgICAgICAgb3B0aW9ucyA9IHsiZm9ybWF0IjogbHptYS5GT1JNQVRfUkFXLCAiZmlsdGVycyI6IEZJTFRFUlNfUkFXXzF9CisgICAgICAgIHdpdGggbHptYS5vcGVuKEJ5dGVzSU8oQ09NUFJFU1NFRF9SQVdfMSksICJyYiIsICoqb3B0aW9ucykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJ3YiIsICoqb3B0aW9ucykgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZmlsZV9kYXRhID0gbHptYS5kZWNvbXByZXNzKGJpby5nZXR2YWx1ZSgpLCAqKm9wdGlvbnMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgSU5QVVQpCisKKyAgICBkZWYgdGVzdF9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IG5vbi1kZWZhdWx0IGVuY29kaW5nLgorICAgICAgICB1bmNvbXByZXNzZWQgPSBJTlBVVC5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgdW5jb21wcmVzc2VkX3JhdyA9IHVuY29tcHJlc3NlZC5yZXBsYWNlKCJcbiIsIG9zLmxpbmVzZXApCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGJpbzoKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgInd0IiwgZW5jb2Rpbmc9InV0Zi0xNi1sZSIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoYmlvLmdldHZhbHVlKCkpLmRlY29kZSgidXRmLTE2LWxlIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB1bmNvbXByZXNzZWRfcmF3KQorICAgICAgICAgICAgYmlvLnNlZWsoMCkKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgInJ0IiwgZW5jb2Rpbmc9InV0Zi0xNi1sZSIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkKQorCisgICAgZGVmIHRlc3RfZW5jb2RpbmdfZXJyb3JfaGFuZGxlcihzZWxmKToKKyAgICAgICAgIyBUZXN0IHdpaCBub24tZGVmYXVsdCBlbmNvZGluZyBlcnJvciBoYW5kbGVyLgorICAgICAgICB3aXRoIEJ5dGVzSU8obHptYS5jb21wcmVzcyhiImZvb1x4ZmZiYXIiKSkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oYmlvLCAicnQiLCBlbmNvZGluZz0iYXNjaWkiLCBlcnJvcnM9Imlnbm9yZSIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgImZvb2JhciIpCisKKyAgICBkZWYgdGVzdF9uZXdsaW5lKHNlbGYpOgorICAgICAgICAjIFRlc3Qgd2l0aCBleHBsaWNpdCBuZXdsaW5lICh1bml2ZXJzYWwgbmV3bGluZSBtb2RlIGRpc2FibGVkKS4KKyAgICAgICAgdGV4dCA9IElOUFVULmRlY29kZSgiYXNjaWkiKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJ3dCIsIG5ld2xpbmU9IlxuIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKHRleHQpCisgICAgICAgICAgICBiaW8uc2VlaygwKQorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oYmlvLCAicnQiLCBuZXdsaW5lPSJcciIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWRsaW5lcygpLCBbdGV4dF0pCisKKworY2xhc3MgTWlzY2VsbGFuZW91c1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2lzX2NoZWNrX3N1cHBvcnRlZChzZWxmKToKKyAgICAgICAgIyBDSEVDS19OT05FIGFuZCBDSEVDS19DUkMzMiBzaG91bGQgYWx3YXlzIGJlIHN1cHBvcnRlZCwKKyAgICAgICAgIyByZWdhcmRsZXNzIG9mIHRoZSBvcHRpb25zIGxpYmx6bWEgd2FzIGNvbXBpbGVkIHdpdGguCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsem1hLmlzX2NoZWNrX3N1cHBvcnRlZChsem1hLkNIRUNLX05PTkUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobHptYS5pc19jaGVja19zdXBwb3J0ZWQobHptYS5DSEVDS19DUkMzMikpCisKKyAgICAgICAgIyBUaGUgLnh6IGZvcm1hdCBzcGVjIGNhbm5vdCBzdG9yZSBjaGVjayBJRHMgYWJvdmUgdGhpcyB2YWx1ZS4KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsem1hLmlzX2NoZWNrX3N1cHBvcnRlZChsem1hLkNIRUNLX0lEX01BWCArIDEpKQorCisgICAgICAgICMgVGhpcyB2YWx1ZSBzaG91bGQgbm90IGJlIGEgdmFsaWQgY2hlY2sgSUQuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobHptYS5pc19jaGVja19zdXBwb3J0ZWQobHptYS5DSEVDS19VTktOT1dOKSkKKworICAgIGRlZiB0ZXN0X19lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyhiIm5vdCBhIGRpY3QiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHsiaWQiOiAweDEwMH0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoeyJpZCI6IGx6bWEuRklMVEVSX0xaTUEyLCAianVuayI6IDEyfSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhsem1hLkxaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoeyJpZCI6IGx6bWEuRklMVEVSX0RFTFRBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXN0IjogOTAwMX0pCisKKyAgICAgICAgIyBUZXN0IHdpdGggcGFyYW1ldGVycyB1c2VkIGJ5IHppcGZpbGUgbW9kdWxlLgorICAgICAgICBwcm9wcyA9IGx6bWEuX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyh7CisgICAgICAgICAgICAgICAgImlkIjogbHptYS5GSUxURVJfTFpNQTEsCisgICAgICAgICAgICAgICAgInBiIjogMiwKKyAgICAgICAgICAgICAgICAibHAiOiAwLAorICAgICAgICAgICAgICAgICJsYyI6IDMsCisgICAgICAgICAgICAgICAgImRpY3Rfc2l6ZSI6IDggPDwgMjAsCisgICAgICAgICAgICB9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3BzLCBiIl1ceDAwXHgwMFx4ODBceDAwIikKKworICAgIGRlZiB0ZXN0X19kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyhsem1hLkZJTFRFUl9YODYsIHsic2hvdWxkIGJlIjogYnl0ZXN9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGx6bWEuTFpNQUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyhsem1hLkZJTFRFUl9ERUxUQSwgYiJ0b28gbG9uZyIpCisKKyAgICAgICAgIyBUZXN0IHdpdGggcGFyYW1ldGVycyB1c2VkIGJ5IHppcGZpbGUgbW9kdWxlLgorICAgICAgICBmaWx0ZXJzcGVjID0gbHptYS5fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKAorICAgICAgICAgICAgICAgIGx6bWEuRklMVEVSX0xaTUExLCBiIl1ceDAwXHgwMFx4ODBceDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXJzcGVjWyJpZCJdLCBsem1hLkZJTFRFUl9MWk1BMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXJzcGVjWyJwYiJdLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbHRlcnNwZWNbImxwIl0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsdGVyc3BlY1sibGMiXSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXJzcGVjWyJkaWN0X3NpemUiXSwgOCA8PCAyMCkKKworICAgIGRlZiB0ZXN0X2ZpbHRlcl9wcm9wZXJ0aWVzX3JvdW5kdHJpcChzZWxmKToKKyAgICAgICAgc3BlYzEgPSBsem1hLl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoCisgICAgICAgICAgICAgICAgbHptYS5GSUxURVJfTFpNQTEsIGIiXVx4MDBceDAwXHg4MFx4MDAiKQorICAgICAgICByZWVuY29kZWQgPSBsem1hLl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoc3BlYzEpCisgICAgICAgIHNwZWMyID0gbHptYS5fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKGx6bWEuRklMVEVSX0xaTUExLCByZWVuY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYzEsIHNwZWMyKQorCisKKyMgVGVzdCBkYXRhOgorCitJTlBVVCA9IGIiIiIKK0xBRVJURVMKKworICAgICAgIE8sIGZlYXIgbWUgbm90LgorICAgICAgIEkgc3RheSB0b28gbG9uZzogYnV0IGhlcmUgbXkgZmF0aGVyIGNvbWVzLgorCisgICAgICAgRW50ZXIgUE9MT05JVVMKKworICAgICAgIEEgZG91YmxlIGJsZXNzaW5nIGlzIGEgZG91YmxlIGdyYWNlLAorICAgICAgIE9jY2FzaW9uIHNtaWxlcyB1cG9uIGEgc2Vjb25kIGxlYXZlLgorCitMT1JEIFBPTE9OSVVTCisKKyAgICAgICBZZXQgaGVyZSwgTGFlcnRlcyEgYWJvYXJkLCBhYm9hcmQsIGZvciBzaGFtZSEKKyAgICAgICBUaGUgd2luZCBzaXRzIGluIHRoZSBzaG91bGRlciBvZiB5b3VyIHNhaWwsCisgICAgICAgQW5kIHlvdSBhcmUgc3RheSdkIGZvci4gVGhlcmU7IG15IGJsZXNzaW5nIHdpdGggdGhlZSEKKyAgICAgICBBbmQgdGhlc2UgZmV3IHByZWNlcHRzIGluIHRoeSBtZW1vcnkKKyAgICAgICBTZWUgdGhvdSBjaGFyYWN0ZXIuIEdpdmUgdGh5IHRob3VnaHRzIG5vIHRvbmd1ZSwKKyAgICAgICBOb3IgYW55IHVucHJvcG9ydGlvbmVkIHRob3VnaHQgaGlzIGFjdC4KKyAgICAgICBCZSB0aG91IGZhbWlsaWFyLCBidXQgYnkgbm8gbWVhbnMgdnVsZ2FyLgorICAgICAgIFRob3NlIGZyaWVuZHMgdGhvdSBoYXN0LCBhbmQgdGhlaXIgYWRvcHRpb24gdHJpZWQsCisgICAgICAgR3JhcHBsZSB0aGVtIHRvIHRoeSBzb3VsIHdpdGggaG9vcHMgb2Ygc3RlZWw7CisgICAgICAgQnV0IGRvIG5vdCBkdWxsIHRoeSBwYWxtIHdpdGggZW50ZXJ0YWlubWVudAorICAgICAgIE9mIGVhY2ggbmV3LWhhdGNoJ2QsIHVuZmxlZGdlZCBjb21yYWRlLiBCZXdhcmUKKyAgICAgICBPZiBlbnRyYW5jZSB0byBhIHF1YXJyZWwsIGJ1dCBiZWluZyBpbiwKKyAgICAgICBCZWFyJ3QgdGhhdCB0aGUgb3Bwb3NlZCBtYXkgYmV3YXJlIG9mIHRoZWUuCisgICAgICAgR2l2ZSBldmVyeSBtYW4gdGh5IGVhciwgYnV0IGZldyB0aHkgdm9pY2U7CisgICAgICAgVGFrZSBlYWNoIG1hbidzIGNlbnN1cmUsIGJ1dCByZXNlcnZlIHRoeSBqdWRnbWVudC4KKyAgICAgICBDb3N0bHkgdGh5IGhhYml0IGFzIHRoeSBwdXJzZSBjYW4gYnV5LAorICAgICAgIEJ1dCBub3QgZXhwcmVzcydkIGluIGZhbmN5OyByaWNoLCBub3QgZ2F1ZHk7CisgICAgICAgRm9yIHRoZSBhcHBhcmVsIG9mdCBwcm9jbGFpbXMgdGhlIG1hbiwKKyAgICAgICBBbmQgdGhleSBpbiBGcmFuY2Ugb2YgdGhlIGJlc3QgcmFuayBhbmQgc3RhdGlvbgorICAgICAgIEFyZSBvZiBhIG1vc3Qgc2VsZWN0IGFuZCBnZW5lcm91cyBjaGllZiBpbiB0aGF0LgorICAgICAgIE5laXRoZXIgYSBib3Jyb3dlciBub3IgYSBsZW5kZXIgYmU7CisgICAgICAgRm9yIGxvYW4gb2Z0IGxvc2VzIGJvdGggaXRzZWxmIGFuZCBmcmllbmQsCisgICAgICAgQW5kIGJvcnJvd2luZyBkdWxscyB0aGUgZWRnZSBvZiBodXNiYW5kcnkuCisgICAgICAgVGhpcyBhYm92ZSBhbGw6IHRvIHRoaW5lIG93bnNlbGYgYmUgdHJ1ZSwKKyAgICAgICBBbmQgaXQgbXVzdCBmb2xsb3csIGFzIHRoZSBuaWdodCB0aGUgZGF5LAorICAgICAgIFRob3UgY2Fuc3Qgbm90IHRoZW4gYmUgZmFsc2UgdG8gYW55IG1hbi4KKyAgICAgICBGYXJld2VsbDogbXkgYmxlc3Npbmcgc2Vhc29uIHRoaXMgaW4gdGhlZSEKKworTEFFUlRFUworCisgICAgICAgTW9zdCBodW1ibHkgZG8gSSB0YWtlIG15IGxlYXZlLCBteSBsb3JkLgorCitMT1JEIFBPTE9OSVVTCisKKyAgICAgICBUaGUgdGltZSBpbnZpdGVzIHlvdTsgZ287IHlvdXIgc2VydmFudHMgdGVuZC4KKworTEFFUlRFUworCisgICAgICAgRmFyZXdlbGwsIE9waGVsaWE7IGFuZCByZW1lbWJlciB3ZWxsCisgICAgICAgV2hhdCBJIGhhdmUgc2FpZCB0byB5b3UuCisKK09QSEVMSUEKKworICAgICAgICdUaXMgaW4gbXkgbWVtb3J5IGxvY2snZCwKKyAgICAgICBBbmQgeW91IHlvdXJzZWxmIHNoYWxsIGtlZXAgdGhlIGtleSBvZiBpdC4KKworTEFFUlRFUworCisgICAgICAgRmFyZXdlbGwuCisiIiIKKworQ09NUFJFU1NFRF9YWiA9ICgKKyAgICBiIlx4ZmQ3elhaXHgwMFx4MDBceDA0XHhlNlx4ZDZceGI0Rlx4MDJceDAwIVx4MDFceDE2XHgwMFx4MDBceDAwdC9ceGU1XHhhMyIKKyAgICBiIlx4ZTBceDA3XHg4MFx4MDNceGRmXVx4MDBceDA1XHgxNFx4MDdiWFx4MTlceGNkXHhkZG5ceDk4XHgxNVx4ZTRceGI0XHg5ZCIKKyAgICBiIm9ceDFkXHhjNFx4ZTVcblx4MDNceGNjMmhceGM3XFxceDg2XHhmZlx4ZjhceGUyXHhmY1x4ZTdceGQ5XHhmZTZceGI4KCIKKyAgICBiIlx4YTh3ZFx4YzJcInUublx4MWVceGMzXHhmMlx4OGVceDhkXHg4Zlx4MDJceDE3L1x4YTY9XHhmMFx4YTJceGRmL01ceDg5IgorICAgIGIiXHhiZVx4ZGVceGE3XHgxY3pceDE4LV1ceGQ1XHhlZlx4MTNceDhmclpceDE1XHg4MFx4OGNceGY4XHg4ZG9ceGZhXHgxMiIKKyAgICBiIlx4OWIjei9ceGVmXHhmMFx4ZmFGXHgwMVx4ODJceGEzTVx4OGVceGExdFx4Y2E2IEJGJFx4ZTVRXHhhNFx4OThceGVlXHhkZSIKKyAgICBiImxceGU4XHg3Zlx4ZjBceDlkLGJuXHgwYlx4MTNceGQ0XHhhOFx4ODFceGU0Tlx4YzhceDg2XHgxNTNceGY1eDJceGEyTyIKKyAgICBiIlx4MTNAUVx4YTFceDAwL1x4YTVceGQwT1x4OTdceGRjb1x4YWVceGY3elx4YzRceGNkU1x4YjZ0PFx4MTZceGYyXHg5Y0kjIgorICAgIGIiXHg4OXVkXHhjNjZZXHhkOVx4ZWVceGU2XHhjZVx4MTJdXHhlNVx4ZjBceGFhXHg5Ni1QZVx4YWRlOlx4MDRcdFx4MWJceGY3IgorICAgIGIiXHhkYjdcblx4ODZceDFmcFx4YzhKXHhiYVx4ZjRceGYwVlx4YTlceGRjXHhmMFx4MDIlR1x4ZjlceGRmPT9ceDE1XHgxYiIKKyAgICBiIlx4ZTEoXHhjZVx4ODI9XHhkNklceGFjM1x4MTJceDBjUlx4YjdceGFlXHJceGIxaVx4MDNceDk1XHgwMVx4YmRceGJlXHhmYSIKKyAgICBiIlx4MDJzXHgwMVBceDlkXHg5NlhceGIxMmpceGM4TFx4YThceDg0Ylx4ZjZceGMzXHhkNGMtSFx4OTNvSmxceGQwaVFceGU0ayIKKyAgICBiIlx4ODRceDBiXHhjMVx4YjdceGJjXHhiMVx4MTdceDg4XHhiMVx4Y2E/QFx4ZjZceDA3XHhlYVx4ZTZ4XHhmMUgxMlBceDBmIgorICAgIGIiXHg4YVx4YzlceGVhdXdceGUzXHhiZVx4YWFpXHhhOVdceGQwXHg4MFx4Y2QjY2I1XHg5OVx4ZDhdXHhhOWRceDBjXHhiZCIKKyAgICBiIlx4YTJceGRjV2xceGVkVUdceGJmXHg4OXlGXHhmNzdceDgxdlx4YmQ1XHg5OFx4YmVoOFx4MThXXHgwOFx4ZjBceDFiXHg5OSIKKyAgICBiIjU6XHgxYT9yRFx4OTZceGExXHgwNFx4MGZceGFlXHhiYVx4ODVceGViXHg5ZDVAXHhmNVx4ODNceGQzN1x4ODNceDhhYyIKKyAgICBiIlx4MDZceGQ0XHg5N2lceGNkdFx4MTZTXHg4MmtceGY2S1x4MDF2eVx4ODhceDkxXHg5YjZUXHhkYWVcclx4ZmRdOmtceGJhbCIKKyAgICBiIlx4YTlceGJiYVx4YzM0XHhmOXJceGVifXJceGRiXHhjN1x4ZGIqXHg4Zlx4MDN6XHhkYzhoXHhjY1x4YzlceGQzXHhiY2wiCisgICAgYiJceGE1LVx4Y2JceGVhS1x4YTJceGM1XHgxNVx4YzBceGUzXHhjMVx4ODZaXHhmYlx4ZWJMXHhlMTNceGNmXHg5Y1x4ZTMiCisgICAgYiJceDFkXHhjOVx4ZWRceGMyXHgwNlx4Y2NceGNlIVx4OTJceGU1XHhmZVx4OWNeXHhhNTl3IFx4OWJQXHhhM1BLXHgwOGQiCisgICAgYiJceGY5XHhlMlp9XHhhN1x4YmZceGVkXHhlYiUkXHgwY1x4ODJceGI4L1x4YjBceDAxXHhhOSYsXHhmN3Foe1FceDk2KVx4ZjIiCisgICAgYiJxXHg5Nlx4YzNceDgwXHhiNFx4MTJceGIwXHhiYVx4ZTZvXHhmNCFceGI0W1x4ZDRceDhhd1x4MTBceGY3dFx4MGNceGIzIgorICAgIGIiXHhkOVx4ZDVceGMzYF5ceDgxXHgxMT8/XFxceGE0XHg5OVx4ODVSXHhkNFx4OGVceDgzXHhjOVx4MWVYXHhiZmFceGYxIgorICAgIGIiXHhhY1x4YjBceGVhXHhlYVx4ZDdceGQwXHhhYlx4MThceGUyXHhmMlx4ZWRceGUxXHhiN1x4YzlceDE4XHhjYlNceGU0PiIKKyAgICBiIlx4YzlceDk1SFx4ZThceGNiXHRcciVceGViXHhjNyQub1x4ZjFceGYzUlx4MTdceDFkYlx4YmJceGQ4VVx4YTVeXHhjY1MiCisgICAgYiJceDE2XHgwMVx4ODdceGYzL1x4OTNceGQxXHhmMHZceGMwclx4ZDdceGNjXHhhMkdrelx4Y2FceDgwXHgwZVx4ZmRceGQwIgorICAgIGIiXHg4Ylx4YmJceGQySXhceGIzXHgxZXlceGNhLTBceGUzel5ceGQ2XHhkNlx4OGZfXHhmMVx4OWRQXHg5ZmlceGE3XHhkMSIKKyAgICBiIlx4ZThceDkwXHg4NFx4ZGNceGJmXHhjZGt5XHg4ZVx4ZGNceDgxXHg3Zlx4YTNceGIyK1x4YmZceDA0XHhlZlx4ZDhcXCIKKyAgICBiIlx4YzRceGRmXHhlMVx4YjBceDAxXHhlOVx4OTNceGUzWVx4ZjFceDFkWVx4ZThoXHg4MVx4Y2ZceGYxd1x4Y2NceGI0XHhlZiIKKyAgICBiIiBceDhifFx4MDRceGVhXHg4M2VqXHhiZVx4MWZceGQ0elx4OWNgXHhkM1x4MWFceDkyQVx4MDZceGU1XHg4Zlx4YTlceDEzIgorICAgIGIiXHRceDllPVx4ZmFceDFjXHhlNV9ceDlmJXZceDFib1x4MTFaT1x4ZDhceGY0XHRceGRkTVx4MTYtXHgwNFx4ZmNceDE4PFwiIgorICAgIGIiQ01ceGRkZ35iXHhmNlx4ZWZceDhlXHgwY1x4ZDBceGRlfFx4YTAnXHg4YVx4MGNceGQ2eFx4YWUhSlx4YTZGXHg4OFx4MTV1IgorICAgIGIiXHgwMDhceDE3XHhiYzd5XHhiM1x4ZDh1XHhhY19ceDg1XHg4ZFx4ZTdceGMxQFx4OWNceGVjcWNceGEzI1x4YWRceGYxIgorICAgIGIiXHg5MzVceGI1KV9cclx4ZWMzXVx4MGZvXTVceGQwbXlceDA3XHg5Ylx4ZWVceDgxXHhiNVx4MGZceGNmSytceDAwXHhjMCIKKyAgICBiIlx4ZTRiXHgxMFx4ZTRceDBjXHgxYSBceDliXHhlMFx4OTd0XHhmNlx4YTFceDllXHg4NTBceGJhXHgwY1x4OWFceDhkXHhjOCIKKyAgICBiIlx4OGZceDA3XHhkN1x4YWVceGM4XHhmOStpXHhkY1x4YjlrXHhiMD5mXHgxOVx4Yjhcclx4YThceGY4XHgxZiRceGE1e3AiCisgICAgYiJceGM2XHg4ODBceGNlXHhkYlx4Y2ZceGNhX1x4ODZceGFjXHg4OGg2XHg4YlolJ1x4ZDBcblx4YmZceDBmXHg5Y1wiXHhiYSIKKyAgICBiIlx4ZTVceDg2XHg5Zlx4MGY3WD1tTlhbXHhjY1x4MTlGVVx4YzlceDg2MFx4YmNceDkwYSsqIFx4YWVfJFx4MDNceDFlXHhkMyIKKyAgICBiIlx4Y2RfXHhhMFx4OWNceGRlXHhhZjQ2cVx4YTVceGM5XHg5Mlx4ZDdceGNhXHhlM2BceDlkXHg4NX1ceGI0XHhmZlx4YjMiCisgICAgYiJceDgzXHhmYlx4YjZceGNhXHhhZWBceDBid1x4N2ZceGZjXHhkOFx4YWNWZVx4MTlceGM4XHgxN1x4MGJaXHhhZFx4ODgiCisgICAgYiJceGViI1x4OTdceDAzXHgxM1x4YjFkXHgwZntceDBjXHgwNHdceDA3XHJceDk3XHhiZFx4ZDZceGMxXHhjM0I6XHg5NVx4MDgiCisgICAgYiJeXHgxMFZceGFlYUhceDAyXHhkOVx4ZTNcblxcXHgwMVhceGY2XHg5Y1x4OGFceDA2dSMlXHhiZSpceGExXHgxOHZceDg1IgorICAgIGIiXHhlYyFcdDRceDAwXHgwMFx4MDBceDAwVmo/dUxVXHhmM1x4YTZceDAwXHgwMVx4ZmJceDA3XHg4MVx4MGZceDAwXHgwMHR3IgorICAgIGIiXHg5OVBceGIxXHhjNGdceGZiXHgwMlx4MDBceDAwXHgwMFx4MDBceDA0WVoiCispCisKK0NPTVBSRVNTRURfQUxPTkUgPSAoCisgICAgYiJdXHgwMFx4MDBceDgwXHgwMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHgwMFx4MDVceDE0XHgwN2JYXHgxOSIKKyAgICBiIlx4Y2RceGRkblx4OThceDE1XHhlNFx4YjRceDlkb1x4MWRceGM0XHhlNVxuXHgwM1x4Y2MyaFx4YzdcXFx4ODZceGZmXHhmOCIKKyAgICBiIlx4ZTJceGZjXHhlN1x4ZDlceGZlNlx4YjgoXHhhOHdkXHhjMlwidS5uXHgxZVx4YzNceGYyXHg4ZVx4OGRceDhmXHgwMiIKKyAgICBiIlx4MTcvXHhhNj1ceGYwXHhhMlx4ZGYvTVx4ODlceGJlXHhkZVx4YTdceDFjelx4MTgtXVx4ZDVceGVmXHgxM1x4OGZyWiIKKyAgICBiIlx4MTVceDgwXHg4Y1x4ZjhceDhkb1x4ZmFceDEyXHg5YiN6L1x4ZWZceGYwXHhmYUZceDAxXHg4Mlx4YTNNXHg4ZVx4YTF0IgorICAgIGIiXHhjYTYgQkYkXHhlNVFceGE0XHg5OFx4ZWVceGRlbFx4ZThceDdmXHhmMFx4OWQsYm5ceDBiXHgxM1x4ZDRceGE4XHg4MSIKKyAgICBiIlx4ZTROXHhjOFx4ODZceDE1M1x4ZjV4Mlx4YTJPXHgxM0BRXHhhMVx4MDAvXHhhNVx4ZDBPXHg5N1x4ZGNvXHhhZVx4Zjd6IgorICAgIGIiXHhjNFx4Y2RTXHhiNnQ8XHgxNlx4ZjJceDljSSNceDg5dWRceGM2NllceGQ5XHhlZVx4ZTZceGNlXHgxMl1ceGU1XHhmMCIKKyAgICBiIlx4YWFceDk2LVBlXHhhZGU6XHgwNFx0XHgxYlx4ZjdceGRiN1xuXHg4Nlx4MWZwXHhjOEpceGJhXHhmNFx4ZjBWXHhhOSIKKyAgICBiIlx4ZGNceGYwXHgwMiVHXHhmOVx4ZGY9P1x4MTVceDFiXHhlMShceGNlXHg4Mj1ceGQ2SVx4YWMzXHgxMlx4MGNSXHhiNyIKKyAgICBiIlx4YWVcclx4YjFpXHgwM1x4OTVceDAxXHhiZFx4YmVceGZhXHgwMnNceDAxUFx4OWRceDk2WFx4YjEyalx4YzhMXHhhOCIKKyAgICBiIlx4ODRiXHhmOFx4MWVwbFx4ZWFqclx4ZDE9XHRceDAzXHhkZFx4MTNceDFiMyFFXHhmOXZWXHhkYUZceGYzXHhkN1x4YjQiCisgICAgYiJceDBjXHhhOVB+XHhlY1x4ZGVFXHhlMzdceGY2XHgxZFx4YzZceGJiXHhkZGMlXHhiNlx4MGZJXHgwN1x4ZjA7XHhhZlx4ZTciCisgICAgYiJceGEwXHg4Ylx4YTdaXHg5OShceGU5XHhlMlx4ZjBvXHgxOD5gXHhlMVx4YWFceGE4XHhkOVx4YTFceGIyfVx4ZTdceDhkIgorICAgIGIiXHg4MzRUXHhiNlx4ZWZceGMxXHhkZVx4ZTNceDk4XHhiY0RceDAzTUFAXHhkOFx4ZWRceGRjXHhjOFx4OTNceDAzXHgxYSIKKyAgICBiIlx4OTNceDBiXHg3Zlx4OTRceDEyXHgwYlx4MDJTYVx4MThceGM5XHhjNVx4OWJUSkV9XHhmNlx4YzhnXHgxNyNaVlx4MDEiCisgICAgYiJceGM5XHg5ZGNceDgzXHgwZT4wXHgxNlx4OTBTXHhiOC9ceDAzeV9ceDE4XHhmYShceGQ3XHgwYnJceGEyXHhiMFx4YmE/IgorICAgIGIiXHg4Y1x4ZTZceDgzQFx4ODRceGRmXHgwMjpceGM1elx4OWVceGE2XHg4NFx4YzlceGY1QmV5WFx4ODNceDFhXHhmMSA6XHQiCisgICAgYiJceGY3XHgxOVx4ZmV4RFxcJkdceGYzXHg4NVlceGEySlx4ZjlceDBidntceDg5XHhmNlx4ZTcpQVx4YWZceDA0b1x4MDAiCisgICAgYiJceDA3NVx4ZDNceGUwXHg3Zlx4OTdceDk4Rlx4MGY/dlx4OTNceGVkVnRUZlx4YjVceDk3XHg4M1x4ZWRceDE5XHhkN1x4MWEiCisgICAgYiIna1x4ZDdceGQ5XHhjNVxcWVx4ZDFceGRjXHgwN1x4MTV8d1x4YmNceGFjZFx4ODdceDA4ZFx4ZWNceGE3XHhmNlx4ODIiCisgICAgYiJceGZjXHhiM1x4OTNceGViXHhiOSBceDhkXHhiYyAsXHhiM1hceGIwXHhkMnNceGQ3XHhkMVx4ZmZ2XHgwNVx4ZGZ9XHhhMiIKKyAgICBiIlx4OTZceGZiJVxuXHhkZlx4YTJceDdmXHgwOC5ceGExNlxuXHhlMFx4MTlceDkzXHg3Zmhcblx4MWNceDhjXHgwZiBceDExIgorICAgIGIiXHhjNkJsXHg5NVx4MTlVfVx4ZTRzXHhiNVx4MTBIXHhlYVx4ODZwQlx4ZTg4XHg5NVx4YmVceDhjWlx4ZGJceGU0XHg5NEEiCisgICAgYiJceDkyXHhiOTt6XHhhYVx4YTd7XHgxYzUhXHhjMFx4YWZceGMxQVx4ZjlceGRhXHhmMCRceGIwXHgwMnFnXHhjOFx4YzcvfCIKKyAgICBiIlx4YWZyXHg5OV5ceDkxXHg4OFx4YmZceDAzXHhkOT1ceGQ3blx4ZGE2ez44XG5ceGM3Olx4YTknXHhiYS5ceDBiXHhlMiIKKyAgICBiIlx4YjVceDFkXHgwZVxuXHg5YVx4OGVceDA2XHg4ZjpceGRkXHg4MidbXHhjM1wid0QkXHhhN3dceGVjcVx4OGMsMVx4OTMiCisgICAgYiJceGQwLFx4YWUyd1x4OTNceDEyJEpkXHgxOW1nXHgwMlx4OTNceDljQVx4OTVceDlkJlx4Y2E4aVx4OWNceGIwO1x4ZTdOUSIKKyAgICBiIlx4MWZyaFx4OGJlTDtceGIwbVx4ZWVceDA3UVx4OWJceGM2XHhkOFx4MDNceGI1XHhkZU5ceGQ0XHhmZVx4OThceGQwXHhkYyIKKyAgICBiIlx4MWFbXHgwNFx4ZGVceDFhXHhmNlx4OTFqXHhmOEVPbGlceDhlQl5ceDFkXHg4Mlx4MDdceGIyXHhiNVJdXHhiN1x4ZDciCisgICAgYiJceGU5XHhhNlx4YzMuXHhmYlx4ZjAtXHhiNGVceDliXHhkZVx4MDNceDg4XHhjNlx4YzFpTlx4MGVceDg0d2JRXHhkZn4iCisgICAgYiJceGU5XHhhNFx4ODg0XHg5NmtNXHhiYylUXHhmM1x4ODlceDk3XHgwZlx4MTQzXHhlNylceGEwXHhiM0JceDAwXHhhOFx4YWYiCisgICAgYiJceDgyXlx4Y2JceGM3Li5ceGRiXHhjN1x0XHg5ZEhceGVlNVx4ZTkjXHhlNk5WXHg5NFx4Y2IkS2tceGUzXHg3ZlxyXHhlM3QiCisgICAgYiJceDEyXHhjZidceGVmUlx4OGJceGY0Mlx4Y2YtTEhceGFjXHhlNVx4MWYwfj9TT1x4ZWJceGMxRVx4MWFceDFjXVx4ZjIiCisgICAgYiJceGM0PFx4MTFceDAyXHgxMFowYSo/XHhlNHJceGZmXHhmYlx4ZmZceGY2XHgxNG5HXHhlYWReXHhkNlx4ZWY4XHhiNnVFSSIKKyAgICBiIlx4OTlcblZceGUyXHhiM1x4OTVceDhlXHg4M1x4ZjZpIVx4YjUmMUZceGIxRFBceGY0IFNPM0Qhd1x4OTlfR1x4N2YrXHg5MCIKKyAgICBiIi5ceGFiXHhiYl1ceDkxPlx4YzkjaDtceDBmNUpceDkxS1x4ZjReLVtceDllXHg4YVxcXHg5NFx4Y2FceGFmXHhmNlx4MTkiCisgICAgYiJceGQ0XHhhMVx4OWJceGM0XHhiOHBceGExXHhhZVx4MTVceGU5clx4ODRceGUwXHhjYXIubCBbXVx4OGJceGFmKzBceGYyZyIKKyAgICBiIlx4MDFhS1lceGRmSVx4Y2YsXG5ceGU4XHhmMFx4ZTdWXHg4MF8jXHhiMlx4ZjJceGE5XHgwNlx4OGM+d1x4ZTJXLFx4ZjQiCisgICAgYiJceDhjXHJceGY5NjNceGY1Slx4Y2MyXHgwNT1rVFx4ZWFVdGlceGU1X1x4Y2VceDFiXHhmYVx4OGRsXHgwMmhceGVmXHhhOCIKKyAgICBiIlx4ZmJmXHg3Zlx4ZmZceGYwXHgxOVx4ZWF4IgorKQorCitGSUxURVJTX1JBV18xID0gW3siaWQiOiBsem1hLkZJTFRFUl9MWk1BMiwgInByZXNldCI6IDN9XQorQ09NUFJFU1NFRF9SQVdfMSA9ICgKKyAgICBiIlx4ZTBceDA3XHg4MFx4MDNceGZkXVx4MDBceDA1XHgxNFx4MDdiWFx4MTlceGNkXHhkZG5ceDk2Y3lxXHhhMVx4ZGRceGVlIgorICAgIGIiXHhmOFx4ZmFtXHhlMydceDg4XHhkM1x4ZmZceGU0XHg5ZSBceGNlUVx4OTFceGE0XHgxNElceGY2XHhiOVx4OWRWTDhceDE1IgorICAgIGIiX1x4MGVceDEyXHhjM1x4ZWJceGJjXHhhNVx4Y2RcbldceDFkJD1SO1x4MWRceGY4azhcdFx4YjF7XHhkNFx4YzUrXHg5ZCIKKyAgICBiIlx4ODdjXHhlNVx4ZWZceDk4XHhiNFx4ZDdTM1x4Y2RceGNjXHhkMlx4ZWRceGE0XHgwZW1ceGU1XHhmNFx4ZGRceGQwYiIKKyAgICBiIlx4YmU0Klx4YWFceDBiXHhjNVx4MDhceDEwXHg4NStceDgxLlx4MTdceGFmOVx4YzliXHhlYVpyQVx4ZTIwXHg3ZnNcInIiCisgICAgYiJceGRhR1x4ODFceGRlXHg5MGN1XHhhNVx4ZGJceGE5LkFceDA4bFx4YjA8XHhmNlx4MDNceGRkT2lceGQwXHhjNVx4YjQiCisgICAgYiJceGVjXHhlY2c0dDZcIlx4YTZceGI4b1x4YjU/XHgxOF59XHhiNn1ceDAzWzpceGViXHgwM1x4YTlcbltceDg5bFx4MTlnIgorICAgIGIiXHgxNlx4YzgyXHhlZFx4MGJceGZiXHg4Nm5ceGEyXHg4NTdAXHg5M1x4Y2Q2VFx4YzN1XHhiMFx0XHhmOVx4MWJceDkxOCIKKyAgICBiIlx4ZmNbXHgxYlx4MWU0XHhiM1x4MTRceDA2UENWXHhhOFwiXHhmNVx4ODF4flx4ZTlceGI1Tlx4OWNLXHg5Zlx4YzZceGMzJSIKKyAgICBiIlx4YzhrOns2XHhlN1x4ZjdceGJkXHgwNVx4MDJceGI0XHhjNFx4YzNceGQzXHhmZFx4YzNceGE4XFxceGZjQFx4YjFGXyIKKyAgICBiIlx4YzhceDkwXHhkOXNVXHg5OFx4YWQ4XHgwNVx4MDdceGRlN0pceDhiTVx4ZDBceGIzO1hceGVjXHg4N1x4ZWZceGFlXHhiMyIKKyAgICBiImVPLFx4YjF6LGRceDExeVx4ZWVqbEJceDAyXHgxZFx4ZjI4XHgxZiNceDg5Nlx4Y2VceDBiXHhmMFx4ZjVceGE5UEtceDBmIgorICAgIGIiXHhiM1x4MTNQXHhkOFx4ODhceGQyXHhhMVx4MDhceDA0Qz9ceGRiXHg5NF9ceDlhXCJceGU5XHhlM2VceDFkXHhkZVx4OWIiCisgICAgYiJceGExXHhlOD5IXHg5OFx4MTA7XHhjNVx4MDMjXHhiNVx4OWQ0XHgwMVx4ZTdceGM1XHhiYSV2XHhhNDlceDk3QVx4ZTBcIiIKKyAgICBiIlx4OGNceGMyMlx4ZTNpXHhjMVx4OWRceGFiM1x4ZGZceGJlXHhmZERtN1x4MWJceDlkXHhhYlx4YjVceDE1bzpKXHg5MiIKKyAgICBiIlx4ZGJceDgxNlx4MTdceGMyT1x4OTlceDFiXHgwZVx4OGRceGYzXHRRXHhlZFx4OGVceDk1Uy9ceDE2TVx4YjJTXHgwNCIKKyAgICBiIlx4MGZceGMzSlx4YzZceGM3XHhlNFx4Y2JceGM1XHhmNFx4ZTdkXHgxNFx4ZTQ9XkJceGZiXHhkM0VceGQzXHgxZVx4Y2QiCisgICAgYiJceDkxXHhhNVx4ZDBHXHg4Zi5ceGY2XHhmOVx4MGJiJlx4ZDlceDlmXHhjMlx4ZmRqXHhhMlx4OWVceGM0XFxceDBlXHgxZEMiCisgICAgYiJ2XHhlOFx4ZDJceDhhP15IXHhlY1x4YWVceGViPlx4ZmVceGI4XHhhYlx4ZDRJcVlceDhjXHhkNEs3XHgxMVx4ZjREXHhkMFciCisgICAgYiJceGE1XHhiZVx4ZWFPXHhiZlx4ZDBceDA0XHhmZGxceDEwXHhhZTVceGQ0VVx4MTlceDA2XHhmOXtceGFhXHhlMFx4ODEiCisgICAgYiJceDBmXHhjZlx4YTNre1x4OTVceGJkXHgxOVx4YTJceGY4XHhlNFx4YTNceDA4TypceGYxXHhmMUItXHhjNyhceDBlUlx4ZmQiCisgICAgYiJARVx4OWZceGQzXHgxZTpceGZkVlx4YjdceDA0WVx4OTRceGViXVx4ODNceGM0XHhhNVx4ZDdceGMwZ1hceDk4XHhjZlx4MGYiCisgICAgYiJceGNkM1x4MDBdblx4MTdceGVjXHhiZFx4YTNZXHg4Nlx4YzVceGYzdVx4ZjYqXHhiZFRceGVkQSRBXHhkOUFceGU3XHg5OCIKKyAgICBiIlx4ZWZceDE0XHgwMlx4OWFceGZkaXdceGVjXHhhMFx4ODdceDExXHhkOSVceGM1XHhlYlx4OGE9XHhhZVx4YzBceGM0XHhjNiIKKyAgICBiIkRceDgwXHg4Zlx4YThceGQxXHhiYnFceGIyXHhjMFx4YTBceGY1Q3FwXHhlZUxceGUzXHhlNVx4ZGMgXHg4NFwiXHhlOSIKKyAgICBiIlx4ODB0XHg4M1x4MDVceGJhXHhmMVx4YzV+XHg5M1x4YzlceGYwXHgwMWNceGNlaXhceDlkXHhlZFx4YzUpbFx4MTYpXHhkMSIKKyAgICBiIlx4MDNAbFx4MDRceDdmXHg4N1x4YTV5blx4MWJceDAxRFx4YWE6XHhkMlx4OTZceGI0XHhiMz9ceGIwXHhmOVx4Y2VceDA3IgorICAgIGIiXHhlYlx4ODFceDAwXHhlNFx4YzNceGY1JV9ceGFlXHhkNFx4ZjlceGViXHhlMlxyaFx4YjIjXHhkNjdRXHgxNkRceDgyaG4iCisgICAgYiJceGQxXHhhM18/cVx4ZjBceGUyXHhhY1x4ZjMxN1x4OWVceGQwX1x4ODN8XHhmMVx4Y2FceGI3XHg5NVNceGFiV1x4MTIiCisgICAgYiJceGZmXHhkZHRceGY2OUxceDAxXHhmMnxceGRhV1x4ZGFceGVlc1x4OThMXHgxOFx4YjhfXHhlOCRceDgyXHhlYVx4ZDYiCisgICAgYiJceGQxRlx4ZDRceDBiXHhjZGtceDAxdmZceDg4aFx4YzNceGFlXHhiOTFceGM3UVx4OWZceGE1R1x4ZDlceGNjXHgxZlx4ZTMiCisgICAgYiI1XHhiMVx4ZGN5XHg3ZklceDhiY3dceDhlXHgxMHJJcFx4MDI6XHgxOXBfXHhjOHZceGNlYVwiXHhjMVx4ZDlceDkxXHgwMyIKKyAgICBiIlx4YmZlXHhiZVx4YTZceGIzXHhhOFx4MTRceDE4XHhjM1x4YWJIKm19XHhjMlx4YzFceDlhfT5sJVx4Y2VceDg0XHg5OSIKKyAgICBiIlx4YjNkXHhhZlx4ZDNceDgyXHgxNVx4ZGZceGMxXHhmYzVmT2dceDliXHhmY1x4OGVeJlx0QFx4Y2VceDlmXHgwNkpceGI4IgorICAgIGIiXHhiNVx4ODZceDFkXHhkYXtceDlmXHhhZVx4YjBceGZmXHgwMlx4ODFyXHg5MnpceDhjTVx4Yjdob1x4YzleXHg5Y1x4YjYiCisgICAgYiJceDljXHhhZVx4ZDFceGM5XHhmNFx4ZGZVN1x4ZDZcXCFceGVhXHgwYlx4OTRrXHhiOVVkflx4OThceGU3XHg4Nlx4OGF6IgorICAgIGIiXHgxMDtceGUzXHgxZFx4ZTVQR1x4ZjhceGE0XHgxMlx4MDV3XHg5OF5ceGM0XHhiMVx4YmJceGZiXHhjZlx4ZTBceDdmIgorICAgIGIiXHgwMzNTZlx4MGMgXHhiMVx4ZjZAXHg5NFx4ZTVceGEzXHhiMlx4YTdceDEwXHg5YVx4YzBceDE0XHhjM3NceGI1eFJEIgorICAgIGIiXHhmNGBXXHhkOVx4ZTVceGQzXHhjZlx4OTFcclRaLVhceGJlXHhiZlx4YjVceGUyXHhlZXxceDFhXHhiZlx4ZmJceDA4IgorICAgIGIiXHg5MVx4ZTFceGZjXHg5YVx4MThceGEzXHg4Ylx4ZDZeXHg4OVx4ZjVbXHhlZlx4ODdceGQxXHgwNlx4MWM3XHhkNlx4YTIiCisgICAgYiJcdFx0UTUvQFNceGMwNVx4ZDJWaEFLXHgwM1ZDXHJceDliXHg5M1x4ZDZNXHhmMXhPXHhhYU9ceGVkXHhiOTxceDBjXHhkYWUiCisgICAgYiIqXHhkMFx4MDdIazZceDlmRytceGExKVx4Y2RceDljbFx4ODdceGRiXHhlMVx4ZTdceGVmS31ceDg3NVx4YWJceGEwXHgxOXUiCisgICAgYiJceGY2KkZceGIzMlx4MDBceDAwXHgwMCIKKykKKworRklMVEVSU19SQVdfMiA9IFt7ImlkIjogbHptYS5GSUxURVJfREVMVEEsICJkaXN0IjogMn0sCisgICAgICAgICAgICAgICAgIHsiaWQiOiBsem1hLkZJTFRFUl9MWk1BMiwKKyAgICAgICAgICAgICAgICAgICJwcmVzZXQiOiBsem1hLlBSRVNFVF9ERUZBVUxUIHwgbHptYS5QUkVTRVRfRVhUUkVNRX1dCitDT01QUkVTU0VEX1JBV18yID0gKAorICAgIGIiXHhlMFx4MDdceDgwXHgwNVx4OTFdXHgwMFx4MDVceDE0XHgwNi1ceGQ0XHhhOGQ/XHhlZlx4YmVceGFmSFx4ZWVceDA0MiIKKyAgICBiIlx4Y2IuXHhiNWdceDhmXHhmYlx4MTRceGFiXHhhNVx4OWZceDAyNXpceGE0XHhkZFx4ZDhcdFt9V1x4ZjhceDBjXHgxZG1IIgorICAgIGIiXHhmYVx4MDVceGZjZ1x4YmFceGU1XHgwMVFceDBiXHg4M1JceGI2QVx4ODg1XHhjMFx4YmFceGVlXG5ceDFjdn5ceGRlOm8iCisgICAgYiJceDA2OkpceGE3XHgxMUNjXHhlYVx4ZjdceGU1Km9ceGY3XHg4M1xcbFx4YmRFXHgxOVx4MWZcclx4YThceDEwXHhiNDIiCisgICAgYiJceDBjYVV7XHhkN1x4Yjh3XHhkY1x4YmVceDFiXHhmYzhceGI0XHhjY1x4ZDM4XFxceGY2XHgxM1x4ZjZceGU3XHg5OFx4ZmEiCisgICAgYiJceGM3W1x4MTdfOVx4ODYlXHhhOFx4ZjhceGFhXHhiOFx4OGRmcyNceDFlPVx4ZWQ8XHg5Mlx4MTBcXHRceGZmXHg4Nlx4ZmIiCisgICAgYiI9XHg5ZTdceDE4XHgxZGZ0XFxceGI1XHgwMVx4OTVRXHhjNVx4MTlceGIzOFx4ZTBceGQ0XHhhYVx4MDdceGMzXHg3Zlx4ZDgiCisgICAgYiJceGEyXHgwMD4tXHhkM1x4OGVceGExI1x4ZmFceDgzQXJBbVx4ZGJKflx4OTNceGEzQlx4ODJceGUwXHhjN1x4Y2MoXHgwOGAiCisgICAgYiJXS1x4YWRceDFiXHg5NGthalx4MDQgXHhkZVx4ZmNceGUxXHhlZFx4YjBceDgyXHg5MVx4ZWZTXHg4NCVceDg2XHhmYmkiCisgICAgYiJceDk5WFx4ZjFCXHhlN1x4OTA7RVx4ZmRlXHg5OFx4ZGFceGNhXHhkNlRceGI0YmdceGE0XG5ceDlhalx4ZDFceDgzXHg5ZV0iCisgICAgYiJcIlx4N2ZNXHhiNVx4MGZyXHhkMlxcXHhhNWp+UFx4MTBHSFx4YmZOKlpceDEwLlx4ODFcdHBFXHg4YVx4MDhceGJlMVx4YmQiCisgICAgYiJceGNkXHhhOVx4ZTFceDhkXHgxZlx4MDRceGY5XHgwZUhceGI5XHhhZVx4ZDZceGMzXHhjMVx4YTVceGE5XHg5NVBceGRjfiIKKyAgICBiIlx4ZmZceDAxXHg5MzBceGE5XHgwNFx4ZjZceDAzXHhmZVx4YjVKS1x4YzNdXHhkZDlceGIxXHhkM1x4ZDdGXHhmNVx4ZDEiCisgICAgYiJceDFlXHhhMFx4MWNfXHhlZFtceDBjXHhhZVx4ZDRceDhiXHg5NDZceGViXHhiZlx4YmJceGUzJGtTe1x4YjVceDgwLGY6U2oiCisgICAgYiJceDBmXHgwOHpceDFjXHhmNVx4ZThceGU2XHhhZVx4OThceGIwUX5yXHgwZlx4YjBceDA1P1x4YjZceDkwXHgxOVx4MDImIgorICAgIGIiXHhjYlx4ODBcdFx4YzRceGVhXHg5Y3x4XHhjZVx4MTBceDljXHhjNXxceGNiZGhoK1x4MGMnXHhjNVx4ODFceGMzM1x4YjUiCisgICAgYiJceDE0cVx4ZDZceGM1XHhlM2BaI1x4ZGNceDhhXHhhYlx4ZGRceGVhXHgwOFx4YzJJXHhlN1x4MDJse1x4ZWNceDE5Nlx4MDYiCisgICAgYiJceDkxXHg4ZFx4ZGNceGQ1XHhiM3hceGUxaHolXHhkMVx4ZjhceGE1XHhkZFx4OTghXHg4Y1x4MWNceGMxXHgxN1JVYVx4YmIiCisgICAgYiJceDk1XHgwZlx4ZTRYXHhlYTFceDBjXHhmMT1SXHhiZVx4YzYwXHhlM1x4YTRceDlhXHg5MGJkXHg5NyRdQlx4MDFceGRkIgorICAgIGIiXHgxZlx4ZTNoMmNceDFlXHhhMExgNFx4YzZ4XHhhM1pceDhhXHJceDE0XVReXHhkOFx4ODlceDFiXHg5MlxyO1x4ZWRZIgorICAgIGIiXHgwY1x4ZWZceDhkOXpceGYzb1x4YjYpZlx4YTldJG5ccnBceDkzXHhkMFx4MTBceGE0XHgwOFx4YjhceGIyXHg4Ylx4YjYiCisgICAgYiJceDhmXHg4MFx4YWU7XHhkY1FceGYxXHhmYVx4OWFceDA2XHg4ZVx4YTVceDBlXHg4Y0tceDljIEBceGFhOlVjWFxuIVx4YzYiCisgICAgYiJceDAyXHgxMlx4Y2JceDFiXCI9XHgxNi5ceDFmXHgxNzZceGYyZz1ceGUxV25ceGU5XHhlMVx4ZDRceGYxT1x4YWRceDE1IgorICAgIGIiXHg4Nlx4ZTlceGEzVFx4YWZceGE5XHhkN0RceGI1XHhkMVczcG50XHgxMVx4YzdWT2pceGI3TVx4YzRpXHhhMVx4ZjEkMyIKKyAgICBiIlx4YmJceGRjXHg4YWZceGIwXHhjNVlcclx4ZDFceGZiXHhmMlx4ZTdLXHhlNlx4YzVod09ceGZlXHg4YzJeJlx4MDdceGQ1IgorICAgIGIiXHgxZlZceDE5XHhmZFxyXHgxNFx4ZDJpPXlaXHhlNm9ceGFmXHhjNlx4YjZceDkyXHg5ZFx4YzRcclx4YjNceGFmd1x4YWMlIgorICAgIGIiXHhjZmNceDFhXHhmMWBdXHhmMlx4MWFceDllXHg4MDhceGVkbVx4ZWRRXHhiMlx4ZmVceGU0aGBbcVx4YWVceGUwXHgwZiIKKyAgICBiIlx4YmEwZ1x4YjZcIk5ceGMzXHhmYlx4Y2ZSXHgxMVx4YzVceDE4KShceGM0MFxcXHhhM1x4MDJceGQ5RyFceGNlXHgxYiIKKyAgICBiIlx4YzFceDk2eFx4YjVceGM4elx4MWZceDAxXHhiNFx4YWZceGRlXHhjMlx4Y2RceDA3XHhlN0hceGIzeVx4YThNXG5cXEFcdCIKKyAgICBiImFyXHhkZE1ceDhiXHg5YVx4ZWFceDg0XHg5YiFceGYxXHg4ZFx4YjFceGYxflx4MWVcclx4YTVIXHhiYVx4ZjFceDg0byIKKyAgICBiIlx4ZGFceDg3XHgwMWhceGU5XHhhMlx4YmVceGJlcU5ceDlkXHg4NFx4MGIhV0dceGRhXHhhMVx4YTVBXHhiN1x4YzdgaiIKKyAgICBiIlx4MTVceGYyXHhlOVx4ZGQ/XHgwMTVCXHhkMn5FXHgwNlx4MTFceGUwXHg5MSFceDA1Xlx4ODBceGRkXHhhOHlceDE1fSIKKyAgICBiIlx4YTEpXHhiMSlceDgxXHgxOFx4ZjRceGY0XHhmOFx4YzBceGVmRFx4ZTNceGRiMmZceDFlXHgxMlx4YWJ1XHhjOVx4OTciCisgICAgYiJceGNkXHgxZVx4YTdceDBjXHgwMng0XzZceDAzXHhjNCR0XHhmMzlceDk0XHgxZD1ceGNiXHhiZnZcXFx4ZjVceGEzXHgxZCIKKyAgICBiIlx4OWQ4amtceDk1XHgxMylmZlx4ZjluXHhjNFx4YTlceGUzXHgwMVx4YjhceGRhXHhmYlx4YWJceGRmTVx4OTlceGZiXHgwNSIKKyAgICBiIlx4ZTBceGU5XHhiMElceGY0RVx4YWJceGUyXHgxNVx4YTNceDAzNVx4ZTdceGRlVFx4ZWVceDgycFx4YjRceDg4XHhkMyIKKyAgICBiIlx4ODkzXHg5Yy9ceGMwXHhkNlx4OGZvdTtceGY2XHg5NVBSXHhhOVx4YjJceGMxXHhlZkZqXHhlMlx4YTckXHhmN2hceGYxIgorICAgIGIiXHhkZksoXHhjOWNceGJhN1x4ZThceGUzKVx4ZGRceGIyLFx4ODNceGZiXHg4NFx4MTgueVx4MThRaVx4ODhceGY4YGgtIgorICAgIGIiXHhlZlx4ZDVceGVkXHg4Y1x0XHhkOFx4YzNeXHgwZlx4MDBceGI3XHhkMFshXHhhZk1ceDliXHhkNy5ceDA3XHhkOFx4ZmIiCisgICAgYiJceGQ5XHhlMi1TK1x4YWE4LFx4YTBceDAzXHgxYiBceGVhXHhhOFx4MDBceGMzXHhhYn5ceGQwJGVceGE1XHg3Zlx4ZjciCisgICAgYiJceDk1UF1ceDEyXHgxOWlceGQ5XHg3Zm9ceDBjXHhkOGdeXHJFXHhhNVx4ODBceDE4XHhjNVx4MDFceDgwXHhhZWtgXHhmZn4iCisgICAgYiJceGI2eVx4ZTcrXHhlNVx4MTFeRFx4YTdceDg1XHgxOFwiIVx4ZDZceGQyXHhhN1x4ZjRceDFlVFx4ZGJceDAyXHhlMTUiCisgICAgYiJceDAyWVx4YmNceDE3NFpceGU3XHg5Y0hceDFjXHhiZlx4MGZceGM2XHhlOWZdXHhjZlx4OGN4XHhiY1x4ZTVceDE1XHg5NCIKKyAgICBiIlx4ZmMzXHhiY1x4YTdUVUhceGYxXHg4NFx4MWJceGY3XHhhOXlceGMwN1x4ODRceGY4WFx4ZDhceGVmXHhmYyBceDFjXHhkOCIKKyAgICBiIiggL1x4ZjJceGI3XHhlY1x4YzFcXFx4OGNceGY2XHg5NVx4YTFceDAzSlx4ODN2UDhceGUxXHhlM1x4YmJ+XHhjMjRrQSIKKyAgICBiIlx4OTh5XHhhMVx4ZjJQXHhlOVx4OWRceGM5Slx4ZjhOXHg5OVx4YjRceGNlYU9ceGRlXHgxNlx4MWVceGMyXHgxOVx4YTciCisgICAgYiJceDAzXHhkMlx4ZTBceDhmOlx4MTVceGYzXHg4NFx4OWVceGVlXHhlNmVceGI4XHgwMnFceGM3QUNceDFlbXdceGZkXHQiCisgICAgYiJceDlhXHgxZXVceGMxXHhhOVx4Y2FDd1VQXHgwMFx4YTVceGY3OEw0dyFceDkxTDIgXHg4N1x4ZDBceGYyXHgwNlx4ODFqIgorICAgIGIiXHg4MDtceDAzVlx4MDZceDg3XHg5Mlx4Y2JceDkwbHZARVx4OGRceDhkXHhhNVx4YTZceGU3WltceGRmXHhkNkVceDAzYD4iCisgICAgYiJceDhmXHhkZVx4YTFiWlx4ODRceGQwXHhhOWBceDA1XHgwZXtceDgwO1x4ZTNceGJlZlx4OGRceDFkXHhlYmsxLlx4ZTMiCisgICAgYiJceGU5Tlx4MTVceGY3XHhkNChceGZhXHhiYlx4MTVceGJkdVx4ZjdceDdmXHg4Nlx4YWUhXHgwM0xceDFkXHhiNVx4YzEiCisgICAgYiJceGI5XHgxMVx4ZGJceGQwXHg5M1x4ZTRceDAyXHhlMVx4ZDJceGNiQmpjX1x4ZTh9ZFx4ZGJceGMzXHhhMFlceGJlXHhjOS8iCisgICAgYiJceDk1XHgwMVx4YTMsXHhlNmJsQFx4MDFceGRicFx4YzJceGNlXHgxNFx4MTY4XHhjMnFceGUzdUhceDg5WFx4YTRceGE5IgorICAgIGIiXHgxOVx4MWRceGMxfVx4N2ZPWFx4MTlceDlmXHhkZFx4YmVceDg1XHg4M1x4ZmZceDk2XHgxZWVceDgyT2BDRj1LXHhlYiRJIgorICAgIGIiXHgxN19ceGVmWFx4OGJKJ3ZceGRlXHgxZitceGQ5LnZceGY4VHZceDE3XHhmMlx4OWY1XHgxOVx4ZTFceGI5XHg5MVx4YThTIgorICAgIGIiXHg4Nlx4YmRceDFhXCIoXHhhNXhceDhkQ1x4MDNYXHg4MVx4OTFceGE4XHgxMVx4YzRwU1x4MTNceGJjXHhmMidKXHhhZSEiCisgICAgYiJceGVmXHhlZlx4ODRHXHRceDhkXHhjNFx4MTBceDEzMlx4MDBvU1x4OWVceGUwXHhlNGRceDhmXHhiOHlceGFjXHhhNlx4OWYiCisgICAgYiIsXHhiOGZceDg3XHJceGRmXHg5ZUVceDBmXHhlMVx4ZDBcXExceDAwXHhiMlx4ZTFoXHg4NFx4ZWZ9XHg5OFx4YThceDExIgorICAgIGIiXHhjY1cjXFxceDgzXHg3Zm9ceGJielx4OGZceDAwIgorKQorCitGSUxURVJTX1JBV18zID0gW3siaWQiOiBsem1hLkZJTFRFUl9JQTY0LCAic3RhcnRfb2Zmc2V0IjogMHgxMDB9LAorICAgICAgICAgICAgICAgICB7ImlkIjogbHptYS5GSUxURVJfTFpNQTJ9XQorQ09NUFJFU1NFRF9SQVdfMyA9ICgKKyAgICBiIlx4ZTBceDA3XHg4MFx4MDNceGRmXVx4MDBceDA1XHgxNFx4MDdiWFx4MTlceGNkXHhkZG5ceDk4XHgxNVx4ZTRceGI0XHg5ZCIKKyAgICBiIm9ceDFkXHhjNFx4ZTVcblx4MDNceGNjMmhceGM3XFxceDg2XHhmZlx4ZjhceGUyXHhmY1x4ZTdceGQ5XHhmZTZceGI4KCIKKyAgICBiIlx4YTh3ZFx4YzJcInUublx4MWVceGMzXHhmMlx4OGVceDhkXHg4Zlx4MDJceDE3L1x4YTY9XHhmMFx4YTJceGRmL01ceDg5IgorICAgIGIiXHhiZVx4ZGVceGE3XHgxY3pceDE4LV1ceGQ1XHhlZlx4MTNceDhmclpceDE1XHg4MFx4OGNceGY4XHg4ZG9ceGZhXHgxMiIKKyAgICBiIlx4OWIjei9ceGVmXHhmMFx4ZmFGXHgwMVx4ODJceGEzTVx4OGVceGExdFx4Y2E2IEJGJFx4ZTVRXHhhNFx4OThceGVlXHhkZSIKKyAgICBiImxceGU4XHg3Zlx4ZjBceDlkLGJuXHgwYlx4MTNceGQ0XHhhOFx4ODFceGU0Tlx4YzhceDg2XHgxNTNceGY1eDJceGEyTyIKKyAgICBiIlx4MTNAUVx4YTFceDAwL1x4YTVceGQwT1x4OTdceGRjb1x4YWVceGY3elx4YzRceGNkU1x4YjZ0PFx4MTZceGYyXHg5Y0kjIgorICAgIGIiXHg4OXVkXHhjNjZZXHhkOVx4ZWVceGU2XHhjZVx4MTJdXHhlNVx4ZjBceGFhXHg5Ni1QZVx4YWRlOlx4MDRcdFx4MWJceGY3IgorICAgIGIiXHhkYjdcblx4ODZceDFmcFx4YzhKXHhiYVx4ZjRceGYwVlx4YTlceGRjXHhmMFx4MDIlR1x4ZjlceGRmPT9ceDE1XHgxYiIKKyAgICBiIlx4ZTEoXHhjZVx4ODI9XHhkNklceGFjM1x4MTJceDBjUlx4YjdceGFlXHJceGIxaVx4MDNceDk1XHgwMVx4YmRceGJlXHhmYSIKKyAgICBiIlx4MDJzXHgwMVBceDlkXHg5NlhceGIxMmpceGM4TFx4YThceDg0Ylx4ZjZceGMzXHhkNGMtSFx4OTNvSmxceGQwaVFceGU0ayIKKyAgICBiIlx4ODRceDBiXHhjMVx4YjdceGJjXHhiMVx4MTdceDg4XHhiMVx4Y2E/QFx4ZjZceDA3XHhlYVx4ZTZ4XHhmMUgxMlBceDBmIgorICAgIGIiXHg4YVx4YzlceGVhdXdceGUzXHhiZVx4YWFpXHhhOVdceGQwXHg4MFx4Y2QjY2I1XHg5OVx4ZDhdXHhhOWRceDBjXHhiZCIKKyAgICBiIlx4YTJceGRjV2xceGVkVUdceGJmXHg4OXlGXHhmNzdceDgxdlx4YmQ1XHg5OFx4YmVoOFx4MThXXHgwOFx4ZjBceDFiXHg5OSIKKyAgICBiIjU6XHgxYT9yRFx4OTZceGExXHgwNFx4MGZceGFlXHhiYVx4ODVceGViXHg5ZDVAXHhmNVx4ODNceGQzN1x4ODNceDhhYyIKKyAgICBiIlx4MDZceGQ0XHg5N2lceGNkdFx4MTZTXHg4MmtceGY2S1x4MDF2eVx4ODhceDkxXHg5YjZUXHhkYWVcclx4ZmRdOmtceGJhbCIKKyAgICBiIlx4YTlceGJiYVx4YzM0XHhmOXJceGVifXJceGRiXHhjN1x4ZGIqXHg4Zlx4MDN6XHhkYzhoXHhjY1x4YzlceGQzXHhiY2wiCisgICAgYiJceGE1LVx4Y2JceGVhS1x4YTJceGM1XHgxNVx4YzBceGUzXHhjMVx4ODZaXHhmYlx4ZWJMXHhlMTNceGNmXHg5Y1x4ZTMiCisgICAgYiJceDFkXHhjOVx4ZWRceGMyXHgwNlx4Y2NceGNlIVx4OTJceGU1XHhmZVx4OWNeXHhhNTl3IFx4OWJQXHhhM1BLXHgwOGQiCisgICAgYiJceGY5XHhlMlp9XHhhN1x4YmZceGVkXHhlYiUkXHgwY1x4ODJceGI4L1x4YjBceDAxXHhhOSYsXHhmN3Foe1FceDk2KVx4ZjIiCisgICAgYiJxXHg5Nlx4YzNceDgwXHhiNFx4MTJceGIwXHhiYVx4ZTZvXHhmNCFceGI0W1x4ZDRceDhhd1x4MTBceGY3dFx4MGNceGIzIgorICAgIGIiXHhkOVx4ZDVceGMzYF5ceDgxXHgxMT8/XFxceGE0XHg5OVx4ODVSXHhkNFx4OGVceDgzXHhjOVx4MWVYXHhiZmFceGYxIgorICAgIGIiXHhhY1x4YjBceGVhXHhlYVx4ZDdceGQwXHhhYlx4MThceGUyXHhmMlx4ZWRceGUxXHhiN1x4YzlceDE4XHhjYlNceGU0PiIKKyAgICBiIlx4YzlceDk1SFx4ZThceGNiXHRcciVceGViXHhjNyQub1x4ZjFceGYzUlx4MTdceDFkYlx4YmJceGQ4VVx4YTVeXHhjY1MiCisgICAgYiJceDE2XHgwMVx4ODdceGYzL1x4OTNceGQxXHhmMHZceGMwclx4ZDdceGNjXHhhMkdrelx4Y2FceDgwXHgwZVx4ZmRceGQwIgorICAgIGIiXHg4Ylx4YmJceGQySXhceGIzXHgxZXlceGNhLTBceGUzel5ceGQ2XHhkNlx4OGZfXHhmMVx4OWRQXHg5ZmlceGE3XHhkMSIKKyAgICBiIlx4ZThceDkwXHg4NFx4ZGNceGJmXHhjZGt5XHg4ZVx4ZGNceDgxXHg3Zlx4YTNceGIyK1x4YmZceDA0XHhlZlx4ZDhcXCIKKyAgICBiIlx4YzRceGRmXHhlMVx4YjBceDAxXHhlOVx4OTNceGUzWVx4ZjFceDFkWVx4ZThoXHg4MVx4Y2ZceGYxd1x4Y2NceGI0XHhlZiIKKyAgICBiIiBceDhifFx4MDRceGVhXHg4M2VqXHhiZVx4MWZceGQ0elx4OWNgXHhkM1x4MWFceDkyQVx4MDZceGU1XHg4Zlx4YTlceDEzIgorICAgIGIiXHRceDllPVx4ZmFceDFjXHhlNV9ceDlmJXZceDFib1x4MTFaT1x4ZDhceGY0XHRceGRkTVx4MTYtXHgwNFx4ZmNceDE4PFwiIgorICAgIGIiQ01ceGRkZ35iXHhmNlx4ZWZceDhlXHgwY1x4ZDBceGRlfFx4YTAnXHg4YVx4MGNceGQ2eFx4YWUhSlx4YTZGXHg4OFx4MTV1IgorICAgIGIiXHgwMDhceDE3XHhiYzd5XHhiM1x4ZDh1XHhhY19ceDg1XHg4ZFx4ZTdceGMxQFx4OWNceGVjcWNceGEzI1x4YWRceGYxIgorICAgIGIiXHg5MzVceGI1KV9cclx4ZWMzXVx4MGZvXTVceGQwbXlceDA3XHg5Ylx4ZWVceDgxXHhiNVx4MGZceGNmSytceDAwXHhjMCIKKyAgICBiIlx4ZTRiXHgxMFx4ZTRceDBjXHgxYSBceDliXHhlMFx4OTd0XHhmNlx4YTFceDllXHg4NTBceGJhXHgwY1x4OWFceDhkXHhjOCIKKyAgICBiIlx4OGZceDA3XHhkN1x4YWVceGM4XHhmOStpXHhkY1x4YjlrXHhiMD5mXHgxOVx4Yjhcclx4YThceGY4XHgxZiRceGE1e3AiCisgICAgYiJceGM2XHg4ODBceGNlXHhkYlx4Y2ZceGNhX1x4ODZceGFjXHg4OGg2XHg4YlolJ1x4ZDBcblx4YmZceDBmXHg5Y1wiXHhiYSIKKyAgICBiIlx4ZTVceDg2XHg5Zlx4MGY3WD1tTlhbXHhjY1x4MTlGVVx4YzlceDg2MFx4YmNceDkwYSsqIFx4YWVfJFx4MDNceDFlXHhkMyIKKyAgICBiIlx4Y2RfXHhhMFx4OWNceGRlXHhhZjQ2cVx4YTVceGM5XHg5Mlx4ZDdceGNhXHhlM2BceDlkXHg4NX1ceGI0XHhmZlx4YjMiCisgICAgYiJceDgzXHhmYlx4YjZceGNhXHhhZWBceDBid1x4N2ZceGZjXHhkOFx4YWNWZVx4MTlceGM4XHgxN1x4MGJaXHhhZFx4ODgiCisgICAgYiJceGViI1x4OTdceDAzXHgxM1x4YjFkXHgwZntceDBjXHgwNHdceDA3XHJceDk3XHhiZFx4ZDZceGMxXHhjM0I6XHg5NVx4MDgiCisgICAgYiJeXHgxMFZceGFlYUhceDAyXHhkOVx4ZTNcblxcXHgwMVhceGY2XHg5Y1x4OGFceDA2dSMlXHhiZSpceGExXHgxOHZceDg1IgorICAgIGIiXHhlYyFcdDRceDAwXHgwMFx4MDAiCispCisKK0ZJTFRFUlNfUkFXXzQgPSBbeyJpZCI6IGx6bWEuRklMVEVSX0RFTFRBLCAiZGlzdCI6IDR9LAorICAgICAgICAgICAgICAgICB7ImlkIjogbHptYS5GSUxURVJfWDg2LCAic3RhcnRfb2Zmc2V0IjogMHg0MH0sCisgICAgICAgICAgICAgICAgIHsiaWQiOiBsem1hLkZJTFRFUl9MWk1BMiwgInByZXNldCI6IDQsICJsYyI6IDJ9XQorQ09NUFJFU1NFRF9SQVdfNCA9ICgKKyAgICBiIlx4ZTBceDA3XHg4MFx4MDZceDBlXFxceDAwXHgwNVx4MTRceDA3YldceGFhaFx4ZGRceDEwXHhkYydceGQ2XHg5MCxceGM2diIKKyAgICBiIkpxIFx4MTRsXHhiN1x4ODN4Qlx4MGJceDk3Zj0mZnhceGJhXG4+VG5ceGJmXHg4Zlx4ZmJceDFkRlx4Y2FceGMzdl9ceGNhPyIKKyAgICBiIlx4ZmJWPFx4OTIjXHhkNHdceGE2XHg4YVx4ZWJceGY2XHgwM1x4YzBceDAxXHg5NFx4ZDhceDllXHgxM1x4MTJceDk4XHhkMSIKKyAgICBiIipceGZhXWNceGU4XHgxZX5ceGFmXHhiNV1FZ1x4ZmJceDllXHgwMVwiOFx4YjJceDkwXHgwNj1+XHhlOVx4OTFXXHhjZCIKKyAgICBiIlx4ZWNEXHgxMlx4YzdceGZhXHhlMVx4OTFceDA2XHhjN1x4OTlceGI5XHhlM1x4OTAxXHg4N1x4MTl1XHgwZlx4ODY5XHhmZiIKKyAgICBiIlx4YzFceGIwaHd8XHhiMFx4ZGNsXHhjY2tceGIxNm83XHg4NVx4ZWV7WV9iXHhiZlx4YmMkXHhmMz1ceDhkXHg4YndceGU1WiIKKyAgICBiIlx4MDhAXHhjNGttRVx4YWRceGZiXHhmNipceGQ4XHhhZFx4YTFceGZiXHhjNXtceGRlaiwpXHgxZW1CXHgxZjxceGFlY2EiCisgICAgYiJceDgwKFx4ZWVceDA3IFx4ZGZceGU5XHhmOFx4ZWJceDBlLVx4OTdceDg2XHg5MGNceGY5XHhlYSdCXHhmN2BceGQ3XHhiMCIKKyAgICBiIlx4OTJceGJkXHhhMFx4ODJdXHhiZFx4MGVceDBlQlx4MTlceGRjXHg5Nlx4YzZceDE5XHhkODZEXHhmMFx4ZDVceDgzMSIKKyAgICBiIlx4MDNceGI3XHgxY1x4ZjcmNVx4MWFceDhmIFBaJmpceGY4XHg5OFx4MWJvXHhjY1x4ODZceDliU1x4ZDNceGE1XHhjZHUiCisgICAgYiJceGY5JFx4Y2NceDk3b1x4ZTVWflx4ZmJceDk3XHhiNVx4MGJceDE3XHg5Y1x4ZmR4V1x4MTBceGZlcDRceDgwXHhkYUhEWSIKKyAgICBiIlx4ZmEpXHhmZXRceGI1XCJceGQ0XHhkM0ZceDgxXHhmNFx4MTNceDFmXHhlY1x4ZGZceGE1XHgxM1x4ZmNcIlx4OTF4XHhiNyIKKyAgICBiIlx4OTlceGNlXHhjOFx4OTJcblx4ZWJbXHgxMGwqWVx4ZDhceGIxQFx4MDZceGM4b1x4OGQ3clx4ZWJ1XHhmZDVceDBlXHg3ZiIKKyAgICBiIlx4ZjEkVXtcdH1ceDFmUVx4Y2Z4Tlx4OWRceDlmWFhceGU5YFx4ODNceGMxXHgwNlx4ZjRceDg3di1mXHgxMVx4ZGIvXFwiCisgICAgYiJceDA2XHhmZlx4ZDcpQlx4ZjNnXHgwNlx4ODgjMlx4MWVCMjQ0XHg3ZjRxXHRceGM4OTM/bVBYXHg5NVx4YTZhXHhmYilkIgorICAgIGIiXHg5Ylx4ZmNceDk4XHg5YWpceDA0XHhhZVx4OWJceDlkXHgxOXdceGJhXHhmOTJceGZhQVx4MTFcXFx4MTdceDk3QzNceGE0IgorICAgIGIiXHhiYyFceDg4XHhjZG9bXHhlYzpceDAzMFx4OTEuXHg4NVx4ZTBAXFw0XHgxNlx4MTJceDlkXHhjYUp2XHg5N1x4YjA0IgorICAgIGIiXHhhY2tceGNia2ZceGEzc3NceGZjXHgxNl5ceDhjZVx4ODVhXHhhNT0mXHhlY3JceGIzcFx4ZDFFXHhkNVx4ODB5XHhjNyIKKyAgICBiIlx4ZGFceGY2XHhmZWtceGJjVFx4YmZIXHhlZVx4MTVvXHhjNVx4OGNceDgzMFx4ZWNceDFkXHgwMVx4YWVceDBjLWVcXCIKKyAgICBiIlx4OTFceDkwXHg5NFx4YjJceGY4XHg4OFx4OTFceGU4XHgwYlx4YWVceGE3Plx4OThceGY2XHg5Y2tceGQyXHhjNlx4MDgiCisgICAgYiJceGU2XHhhYlx0XHg5OFx4ZjIhXHhhMFx4OGNeXHhhY3FBXHg5OTxceDFjRUdceDk3XHhjOFx4ZjFceGI2XHhiOVx4ODIiCisgICAgYiJceDhkXHhmN1x4MDhzXHg5OGFceGZmXHhlM1x4Y2NceDkyXHgwZVx4ZDJceGI2VVx4ZDdceGQ5XHg4Nlx4N2ZhXHhlNVx4MWMiCisgICAgYiJceDhkVEdAXHRceDFlXHgwZTcqXHhmY1x4ZGVceGJjXTZOXHhmN1x4ZjFceDg0XHg5ZVx4OWZceGNmXHhlOVx4MWVceGI1JyIKKyAgICBiIlx4ZjQ8XHhkZlx4OTlzcVx4ZDBceDlkXHhiZFx4OTlceDBiXHhiNCVwNFx4YmZ7XHhiYlx4OGFceGQyXHgwYlx4YmM9TSIKKyAgICBiIlx4OTRIOlx4ZjVceGE4XHhkNlx4YTRceGM5MFx4YzJEXHhiOVx4ZDNceGE4XHhiMFNceDg3IGBceGEyXHhlYlx4ZjNXXHhjZSIKKyAgICBiIiA3XHhmOU4jXHJceGU2XHhiZVx0XHg5ZFx4ZTdceDgxMVx4ZjlceDEwXHhjMVx4YzJceDE0XHhmNlx4ZmNceGNiYVx4YjciCisgICAgYiJceGIxXHg3Zlx4OTVsXHhlNFx0akFceGVjOlx4MTBceGU1XHhmZVx4YzJcXD1EXHhlMlx4MGNceDBiM11ceGY3XHhjMVx4ZjciCisgICAgYiJceGJjZVpceGIxQVx4ZWFceDE2XHhlNVx4ZmRkZ0ZRXHhlZFx4YWZceDA0XHhhM1x4ZDNceGY4XHhhMnFceDE5Qlx4ZDRyIgorICAgIGIiXHhjNVx4MGNceDlhXHgxNFx4OTRceGVhXHg5MVx4YzRvXHhlNFx4YmJceGI0XHg5OVx4ZjRAXHhkMVx4ZTZceDBjXHhlMyIKKyAgICBiIlx4YzZkXHhhMFFcblx4ZjIvXHhkOFx4YjhTNVx4OGFceDE4Olx4YjVnXHhhY1x4OTVEXHhjZVx4MTdceDA3XHhkNHpceGRhIgorICAgIGIiXHg5MFx4ZTY1XHgwN1x4MTlIIVx0XHhmZHVceDE2XHg4ZVx4MGVSXHgxOVx4ZjRceDhjbFx4MGNceGY5UVx4ZjFceDgwIgorICAgIGIiXHhlM1x4YmZceGQ3T1x4ZjhceDhjXHgxOFx4MGJceDljXHhmMVx4MWZiXHhlMVx0Ulx4YjJceGYxXHhlMUFceGVhIFx4Y2YtIgorICAgIGIiSUdFXHhmMVx4MTRceDk4JFx4ODNceDE1XHhjOVx4ZDhqXHhiZlx4MTlceDBmXHhkNVx4ZDFceGFhXHhiM1x4ZjNceGE1STJzIgorICAgIGIiXHg4ZFx4MTQ1XHhjYVx4ZDVceGQ5M1x4OWNceGI4RDBceGU2XHhhYSVceGQwXHhjMFB9Sk9eaFx4OGVceDA4XHhhZGxWLiIKKyAgICBiIlx4MThceDg4XHgxM1x4MDVvXHhiMFx4MDdceGVhd1x4ZTBceGI2XHhhNFx4ZDUqXHhlNHJceGVmXHgwN0crXHhjMVx4YmVpWyIKKyAgICBiIndceGU4XHhhYkBfXHhlZlx4MTV5XHhlNVx4MTJceGM5V1x4MWIuXHhhZFx4ODUtXHhjMlx4ZjdceGUzbVU2Z1x4OGVTQSIKKyAgICBiIlx4MDEoXHhkM1x4ZGJceDE2XHgxMz1ceGRlXHg5Mlx4ZjksRFx4YjhceDhhXHhiMlx4YjRceGM5XHhjM1x4ZWZuRVx4ZThcXCIKKyAgICBiIlx4YTZceGUyWVx4ZDJceGNmXHhjYlx4OGNceGI2XHhkNVx4ZTlceDFkXHgxZVx4OWFceDhiflx4ZTJceGE2XHJFXHg4NHVWIgorICAgIGIiXHhlZFx4YzZceDk5XHhkZG08XHgxMFtceDBmdVx4MWZceGMxXHgxZDFcblx4Y2Z3XHhiMiUhXHhmMFtceGNlXHg4N1x4ODNCIgorICAgIGIiXHgwOFx4YWEsXHgwOCVkXHhjZWZceDk0XCJceGQ5Zy5ceGM4M1x4Y2JYWSs0XHhlY1x4ODVxQVxuXHgxZD05XHhmMCpceGIxIgorICAgIGIiXHgxZi9ceGYzc1x4ZDYxYlx4N2ZAXHhmYlx4OWRceGUzRlFcXFx4YmRceDgyXHgxZVx4MDBceGYzXHhjZVx4ZDNceGUxIgorICAgIGIiXHhjYSxFXHhmZDdbXHhhYlx4YjZceGI3XHhhYyFtQX1ceGJkXHg5ZDNSNVx4OWNGXHhhYkhceGViXHg5MiljY1x4MTNceGQwIgorICAgIGIiXHhiZFx4ZWVceGU5bntceDFkSUpCXHhhNVx4ZWJceDExXHhlOGB3JmBceDhifUBPeGVcdFx4OGFceDA3XHgwMlx4OTVceGYyIgorICAgIGIiXHhlZFx4ZGF8XHhiMWVceGJlXHhhYVx4YmJnXHgxOUBceGUxWVx4ODc4XHg4NFx4MGZceDhjXHhlM1x4Yzk4XHhmMlx4OWUiCisgICAgYiJceGQ1Tlx4YjVKXHhlZlx4YWIhXHhlMlx4OGRxXHhlMVx4ZTVxXHhjNVx4ZWVceDExV1x4YjdceGU0aypceDAyN1x4YTAiCisgICAgYiJceGEzSlx4ZjRceGQ4bVx4ZDBxXHg5NFx4Y2JceDA3XG46XHhiNmAuXHhlNFx4OWNceDE1K1x4YzApXHhkZVx4ODBYXHhkNCIKKyAgICBiIlx4Y2ZRbVx4MDFceGMyY1BceDFjQVx4ODUnXHhjOVx4YWNceDhiXHhlNlx4YjIpXHhlNlx4ODR0XHgxY1x4OTJceGU0WiIKKyAgICBiIlx4MWNSXHhiMFx4OWVceDk2XHhkMVx4ZmJceDFjXHhhNlx4OGJceGNiYFx4MTBceDEyXVx4ZjJnUlx4OWJGVFx4ZTBceGM4SCIKKyAgICBiIlNceGZiXHhhYzxceDA0XHhjN1x4YzFceGU4XHhlZFBceGY0XHgxNlx4ZGJceGMwXHhkN2VceGMyXHgxN0peXHgxZlx4YWIiCisgICAgYiJceGZmW1x4MDhceDE5XHhiNFx4ZjVceGZiXHgxOVx4YjRceDA0XHhlNWN+J11ceGNiXHhjMkFceGVjXHg5MFx4ZDBceGVkIgorICAgIGIiXHgwNixceGM1S3tceDg2XHgwM1x4YjFceGNkTXhceGRlUVx4OGMzXHhmOVx4OGFceGVhPVx4ODlceGFiYVx4ZDJceGM4OWEiCisgICAgYiJceGQ3Mlx4ZjBceGMzXHgxOVx4OGFceGRmc1x4ZDRceGZkXHhiYlx4ODFiXHhlYUVcIlx4ZDhceGY0ZFx4MGNEXHhmN0lKISIKKyAgICBiIlx4ZTVkXHhiYkdceGU5XHhjYW1ceGFhXHgwZl9yXHg5NVx4OTFOQnFceGNhUFx4Y2VceGE3XHhhOVx4YjVceDEwXHg5NGVQISIKKyAgICBiInxceDg1Nlx4Y2RceGJmSWlyXHhiOGVceDlialBceDk3cVx4YWJ3UzdceDFhXHgwZWhNXHhlN1x4Y2FceDg2P1x4ZGVQfXl+IgorICAgIGIiXHgwZlx4OTVJXHhmY1x4MTNceGUxPFFceDFiXHg4NjhceDFkXHgxMVx4ZGZceDk0XHhmNFx4ODI+clx4YTlrXHg4OFx4Y2IiCisgICAgYiJceGZkXHhjM3ZceGUyXHhiOVx4OGFceDAyXHg4ZXFceDkySVx4ZjhceGY2XHhmMVx4MDNzXHg5Ylx4YjhceGUzXCJceGUzIgorICAgIGIiXHhhOVx4YTU+RFx4YjhceDk2O1x4ZTdceDkyXHhkMTMzXHhlOFx4ZGQnZVx4YzkuXHhkYztceDE3XHgxZlx4ZjVIXHgxM3EiCisgICAgYiJceGE0V1x4MGNceGRiflx4OThceDAxXHhlYlx4ZGZceGUzMlx4MTNceDBmXHhkZHhcbjZceGEwXHRceDEwXHhiNlx4YmIiCisgICAgYiJceGIwXHhjM1x4MThceGI2O1x4OWZqW1x4ZDlceGQ1XHhjOVx4MDZceDhhXHg4N1x4Y2RceGU1XHhlZVx4ZmNceDljLSVAIgorICAgIGIiXHhlZVx4ZTBceGViXHhkMlx4ZTNceGU4XHhmYlx4YzBceDEyMlxcXHhjN1x4YWZceGMyXHhhMU90aFx4YjNceDhmXHg4MiIKKyAgICBiIlx4YjNceDE4XHhhOFx4MDdceGQ1XHhlZV9ceGJlXHhlMFx4MWNBXHgxZV9cclx4OWFceGIwXHgxN1cmXHhhMkRceDkxXHg5NCIKKyAgICBiIlx4MWFceGIyXHhlZlx4ZjJceGRjXHg4NTtYXHhiMCxceGViPi03U1x4ZTVceGNhXHgwNylceDFmcFx4N2ZceGNhUUJMXHhjYSIKKyAgICBiIlx4ZjNceGI5ZFx4ZmNceGI1c3VceGIwXHhjOFx4OTVceDkwXHhlYiopXHhhMHZceGU0XHg5YXtGV1x4ZjRsXHhkZVx4Y2RqIgorICAgIGIiXHgwMCIKKykKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgcnVuX3VuaXR0ZXN0KAorICAgICAgICBDb21wcmVzc29yRGVjb21wcmVzc29yVGVzdENhc2UsCisgICAgICAgIENvbXByZXNzRGVjb21wcmVzc0Z1bmN0aW9uVGVzdENhc2UsCisgICAgICAgIEZpbGVUZXN0Q2FzZSwKKyAgICAgICAgT3BlblRlc3RDYXNlLAorICAgICAgICBNaXNjZWxsYW5lb3VzVGVzdENhc2UsCisgICAgKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21hY3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X21hY3BhdGgucHkKaW5kZXggZDczMmUxNC4uYWU0ZTU2NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYWNwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWFjcGF0aC5weQpAQCAtMTE1LDEzICsxMTUsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vcm1wYXRoKGIiYTpiOiIpLCBiImE6YiIpCiAKIAotY2xhc3MgTWFjQ29tbW9uVGVzdCh0ZXN0X2dlbmVyaWNwYXRoLkNvbW1vblRlc3QpOgorY2xhc3MgTWFjQ29tbW9uVGVzdCh0ZXN0X2dlbmVyaWNwYXRoLkNvbW1vblRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBwYXRobW9kdWxlID0gbWFjcGF0aAogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChNYWNQYXRoVGVzdENhc2UsIE1hY0NvbW1vblRlc3QpCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYWlsYm94LnB5IGIvTGliL3Rlc3QvdGVzdF9tYWlsYm94LnB5CmluZGV4IDdhODQyOTIuLjM5ZTg2NDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21haWxib3gucHkKQEAgLTIyLDYgKzIyLDEwIEBACiAKIGNsYXNzIFRlc3RCYXNlOgogCisgICAgYWxsX21haWxib3hfdHlwZXMgPSAobWFpbGJveC5NZXNzYWdlLCBtYWlsYm94Lk1haWxkaXJNZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxib3gubWJveE1lc3NhZ2UsIG1haWxib3guTUhNZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxib3guQmFieWxNZXNzYWdlLCBtYWlsYm94Lk1NREZNZXNzYWdlKQorCiAgICAgZGVmIF9jaGVja19zYW1wbGUoc2VsZiwgbXNnKToKICAgICAgICAgIyBJbnNwZWN0IGEgbWFpbGJveC5NZXNzYWdlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzYW1wbGUgbWVzc2FnZQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobXNnLCBlbWFpbC5tZXNzYWdlLk1lc3NhZ2UpCkBAIC05MSwxNCArOTUsMTQgQEAKICAgICAgICAgICAgICIiIikKIAogICAgIGRlZiB0ZXN0X2FkZF9pbnZhbGlkXzhiaXRfYnl0ZXNfaGVhZGVyKHNlbGYpOgotICAgICAgICBrZXkgPSBzZWxmLl9ib3guYWRkKHNlbGYuX25vbmFzY2lpX21zZy5lbmNvZGUoJ2xhdGluMScpKQorICAgICAgICBrZXkgPSBzZWxmLl9ib3guYWRkKHNlbGYuX25vbmFzY2lpX21zZy5lbmNvZGUoJ2xhdGluLTEnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5fYm94KSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9ib3guZ2V0X2J5dGVzKGtleSksCi0gICAgICAgICAgICBzZWxmLl9ub25hc2NpaV9tc2cuZW5jb2RlKCdsYXRpbjEnKSkKKyAgICAgICAgICAgIHNlbGYuX25vbmFzY2lpX21zZy5lbmNvZGUoJ2xhdGluLTEnKSkKIAogICAgIGRlZiB0ZXN0X2ludmFsaWRfbm9uYXNjaWlfaGVhZGVyX2FzX3N0cmluZyhzZWxmKToKICAgICAgICAgc3ViaiA9IHNlbGYuX25vbmFzY2lpX21zZy5zcGxpdGxpbmVzKClbMV0KLSAgICAgICAga2V5ID0gc2VsZi5fYm94LmFkZChzdWJqLmVuY29kZSgnbGF0aW4xJykpCisgICAgICAgIGtleSA9IHNlbGYuX2JveC5hZGQoc3Viai5lbmNvZGUoJ2xhdGluLTEnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9ib3guZ2V0X3N0cmluZyhrZXkpLAogICAgICAgICAgICAgJ1N1YmplY3Q6ID0/dW5rbm93bi04Yml0P2I/Um1Gc2FXNWhjSFRoY2lCbzRYcG9iM3B6ZXVGc2JPMTA0WE56JwogICAgICAgICAgICAgJ1lXd3VJRTNoY2lCeVpXNWtaV3gwNld3Lz89XG5cbicpCkBAIC05MzAsOCArOTM0LDcgQEAKICAgICAgICAgIyB0aGUgbXRpbWUgYW5kIHNob3VsZCBjYXVzZSBhIHJlLXJlYWQuIE5vdGUgdGhhdCAic2xlZXAKICAgICAgICAgIyBlbXVsYXRpb24iIGlzIHN0aWxsIGluIGVmZmVjdCwgYXMgc2tld2ZhY3RvciBpcyAtMy4KICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgJ2N1cicsICdzdHJheS1maWxlJykKLSAgICAgICAgZiA9IG9wZW4oZmlsZW5hbWUsICd3JykKLSAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoZmlsZW5hbWUpCiAgICAgICAgIG9zLnVubGluayhmaWxlbmFtZSkKICAgICAgICAgc2VsZi5fYm94Ll9yZWZyZXNoKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlZnJlc2hlZCgpKQpAQCAtMTM5Nyw2ICsxNDAwLDE0IEBACiAgICAgICAgICMgSW5pdGlhbGl6ZSB3aXRoIGludmFsaWQgYXJndW1lbnQKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IHNlbGYuX2ZhY3Rvcnkob2JqZWN0KCkpKQogCisgICAgZGVmIHRlc3RfYWxsX2VNTV9hdHRyaWJ1ZXNfZXhpc3Qoc2VsZik6CisgICAgICAgICMgSXNzdWUgMTI1MzcKKyAgICAgICAgZU1NID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyhfc2FtcGxlX21lc3NhZ2UpCisgICAgICAgIG1zZyA9IHNlbGYuX2ZhY3RvcnkoX3NhbXBsZV9tZXNzYWdlKQorICAgICAgICBmb3IgYXR0ciBpbiBlTU0uX19kaWN0X186CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYXR0ciBpbiBtc2cuX19kaWN0X18sCisgICAgICAgICAgICAgICAgJ3t9IGF0dHJpYnV0ZSBkb2VzIG5vdCBleGlzdCcuZm9ybWF0KGF0dHIpKQorCiAgICAgZGVmIHRlc3RfYmVjb21lX21lc3NhZ2Uoc2VsZik6CiAgICAgICAgICMgVGFrZSBvbiB0aGUgc3RhdGUgb2YgYW5vdGhlciBtZXNzYWdlCiAgICAgICAgIGVNTSA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoX3NhbXBsZV9tZXNzYWdlKQpAQCAtMTQwOCw5ICsxNDE5LDcgQEAKICAgICAgICAgIyBDb3B5IHNlbGYncyBmb3JtYXQtc3BlY2lmaWMgZGF0YSB0byBvdGhlciBtZXNzYWdlIGZvcm1hdHMuCiAgICAgICAgICMgVGhpcyB0ZXN0IGlzIHN1cGVyZmljaWFsOyBiZXR0ZXIgb25lcyBhcmUgaW4gVGVzdE1lc3NhZ2VDb252ZXJzaW9uLgogICAgICAgICBtc2cgPSBzZWxmLl9mYWN0b3J5KCkKLSAgICAgICAgZm9yIGNsYXNzXyBpbiAobWFpbGJveC5NZXNzYWdlLCBtYWlsYm94Lk1haWxkaXJNZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94Lm1ib3hNZXNzYWdlLCBtYWlsYm94Lk1ITWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5CYWJ5bE1lc3NhZ2UsIG1haWxib3guTU1ERk1lc3NhZ2UpOgorICAgICAgICBmb3IgY2xhc3NfIGluIHNlbGYuYWxsX21haWxib3hfdHlwZXM6CiAgICAgICAgICAgICBvdGhlcl9tc2cgPSBjbGFzc18oKQogICAgICAgICAgICAgbXNnLl9leHBsYWluX3RvKG90aGVyX21zZykKICAgICAgICAgb3RoZXJfbXNnID0gZW1haWwubWVzc2FnZS5NZXNzYWdlKCkKQEAgLTE2NDIsMzcgKzE2NTEsNDQgQEAKIAogICAgIGRlZiB0ZXN0X3BsYWluX3RvX3goc2VsZik6CiAgICAgICAgICMgQ29udmVydCBNZXNzYWdlIHRvIGFsbCBmb3JtYXRzCi0gICAgICAgIGZvciBjbGFzc18gaW4gKG1haWxib3guTWVzc2FnZSwgbWFpbGJveC5NYWlsZGlyTWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5tYm94TWVzc2FnZSwgbWFpbGJveC5NSE1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG1haWxib3guQmFieWxNZXNzYWdlLCBtYWlsYm94Lk1NREZNZXNzYWdlKToKKyAgICAgICAgZm9yIGNsYXNzXyBpbiBzZWxmLmFsbF9tYWlsYm94X3R5cGVzOgogICAgICAgICAgICAgbXNnX3BsYWluID0gbWFpbGJveC5NZXNzYWdlKF9zYW1wbGVfbWVzc2FnZSkKICAgICAgICAgICAgIG1zZyA9IGNsYXNzXyhtc2dfcGxhaW4pCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zYW1wbGUobXNnKQogCiAgICAgZGVmIHRlc3RfeF90b19wbGFpbihzZWxmKToKICAgICAgICAgIyBDb252ZXJ0IGFsbCBmb3JtYXRzIHRvIE1lc3NhZ2UKLSAgICAgICAgZm9yIGNsYXNzXyBpbiAobWFpbGJveC5NZXNzYWdlLCBtYWlsYm94Lk1haWxkaXJNZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94Lm1ib3hNZXNzYWdlLCBtYWlsYm94Lk1ITWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5CYWJ5bE1lc3NhZ2UsIG1haWxib3guTU1ERk1lc3NhZ2UpOgorICAgICAgICBmb3IgY2xhc3NfIGluIHNlbGYuYWxsX21haWxib3hfdHlwZXM6CiAgICAgICAgICAgICBtc2cgPSBjbGFzc18oX3NhbXBsZV9tZXNzYWdlKQogICAgICAgICAgICAgbXNnX3BsYWluID0gbWFpbGJveC5NZXNzYWdlKG1zZykKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NhbXBsZShtc2dfcGxhaW4pCiAKICAgICBkZWYgdGVzdF94X2Zyb21fYnl0ZXMoc2VsZik6CiAgICAgICAgICMgQ29udmVydCBhbGwgZm9ybWF0cyB0byBNZXNzYWdlCi0gICAgICAgIGZvciBjbGFzc18gaW4gKG1haWxib3guTWVzc2FnZSwgbWFpbGJveC5NYWlsZGlyTWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5tYm94TWVzc2FnZSwgbWFpbGJveC5NSE1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG1haWxib3guQmFieWxNZXNzYWdlLCBtYWlsYm94Lk1NREZNZXNzYWdlKToKKyAgICAgICAgZm9yIGNsYXNzXyBpbiBzZWxmLmFsbF9tYWlsYm94X3R5cGVzOgogICAgICAgICAgICAgbXNnID0gY2xhc3NfKF9ieXRlc19zYW1wbGVfbWVzc2FnZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NhbXBsZShtc2cpCiAKICAgICBkZWYgdGVzdF94X3RvX2ludmFsaWQoc2VsZik6CiAgICAgICAgICMgQ29udmVydCBhbGwgZm9ybWF0cyB0byBhbiBpbnZhbGlkIGZvcm1hdAotICAgICAgICBmb3IgY2xhc3NfIGluIChtYWlsYm94Lk1lc3NhZ2UsIG1haWxib3guTWFpbGRpck1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG1haWxib3gubWJveE1lc3NhZ2UsIG1haWxib3guTUhNZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94LkJhYnlsTWVzc2FnZSwgbWFpbGJveC5NTURGTWVzc2FnZSk6CisgICAgICAgIGZvciBjbGFzc18gaW4gc2VsZi5hbGxfbWFpbGJveF90eXBlczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBjbGFzc18oRmFsc2UpKQogCisgICAgZGVmIHRlc3RfdHlwZV9zcGVjaWZpY19hdHRyaWJ1dGVzX3JlbW92ZWRfb25fY29udmVyc2lvbihzZWxmKToKKyAgICAgICAgcmVmZXJlbmNlID0ge2NsYXNzXzogY2xhc3NfKF9zYW1wbGVfbWVzc2FnZSkuX19kaWN0X18KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBjbGFzc18gaW4gc2VsZi5hbGxfbWFpbGJveF90eXBlc30KKyAgICAgICAgZm9yIGNsYXNzMSBpbiBzZWxmLmFsbF9tYWlsYm94X3R5cGVzOgorICAgICAgICAgICAgZm9yIGNsYXNzMiBpbiBzZWxmLmFsbF9tYWlsYm94X3R5cGVzOgorICAgICAgICAgICAgICAgIGlmIGNsYXNzMSBpcyBjbGFzczI6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgc291cmNlID0gY2xhc3MxKF9zYW1wbGVfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSBjbGFzczIoc291cmNlKQorICAgICAgICAgICAgICAgIHR5cGVfc3BlY2lmaWMgPSBbYSBmb3IgYSBpbiByZWZlcmVuY2VbY2xhc3MxXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhIG5vdCBpbiByZWZlcmVuY2VbY2xhc3MyXV0KKyAgICAgICAgICAgICAgICBmb3IgYXR0ciBpbiB0eXBlX3NwZWNpZmljOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKGF0dHIsIHRhcmdldC5fX2RpY3RfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aGlsZSBjb252ZXJ0aW5nIHt9IHRvIHt9Ii5mb3JtYXQoY2xhc3MxLCBjbGFzczIpKQorCiAgICAgZGVmIHRlc3RfbWFpbGRpcl90b19tYWlsZGlyKHNlbGYpOgogICAgICAgICAjIENvbnZlcnQgTWFpbGRpck1lc3NhZ2UgdG8gTWFpbGRpck1lc3NhZ2UKICAgICAgICAgbXNnX21haWxkaXIgPSBtYWlsYm94Lk1haWxkaXJNZXNzYWdlKF9zYW1wbGVfbWVzc2FnZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGNkMDljCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5CkBAIC0wLDAgKzEsMjIxIEBACitpbXBvcnQgbWFpbGNhcAoraW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgdGVzdC5zdXBwb3J0CitpbXBvcnQgdW5pdHRlc3QKKworIyBMb2NhdGlvbiBvZiBtYWlsY2FwIGZpbGUKK01BSUxDQVBGSUxFID0gdGVzdC5zdXBwb3J0LmZpbmRmaWxlKCJtYWlsY2FwLnR4dCIpCisKKyMgRGljdCB0byBhY3QgYXMgbW9jayBtYWlsY2FwIGVudHJ5IGZvciB0aGlzIHRlc3QKKyMgVGhlIGtleXMgYW5kIHZhbHVlcyBzaG91bGQgbWF0Y2ggdGhlIGNvbnRlbnRzIG9mIE1BSUxDQVBGSUxFCitNQUlMQ0FQRElDVCA9IHsKKyAgICAnYXBwbGljYXRpb24veC1tb3ZpZSc6CisgICAgICAgIFt7J2NvbXBvc2UnOiAnbW92aWVtYWtlciAlcycsCisgICAgICAgICAgJ3gxMS1iaXRtYXAnOiAnIi91c3IvbGliL1ptYWlsL2JpdG1hcHMvbW92aWUueGJtIicsCisgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJyJNb3ZpZSInLAorICAgICAgICAgICd2aWV3JzogJ21vdmllcGxheWVyICVzJ31dLAorICAgICdhcHBsaWNhdGlvbi8qJzoKKyAgICAgICAgW3snY29waW91c291dHB1dCc6ICcnLAorICAgICAgICAgICd2aWV3JzogJ2VjaG8gIlRoaXMgaXMgXFwiJXRcXCIgYnV0ICAgICAgICBpcyA1MCBcXCUgR3JlZWsgdG8gbWUiIFxcOyBjYXQgJXMnfV0sCisgICAgJ2F1ZGlvL2Jhc2ljJzoKKyAgICAgICAgW3snZWRpdCc6ICdhdWRpb2NvbXBvc2UgJXMnLAorICAgICAgICAgICdjb21wb3NlJzogJ2F1ZGlvY29tcG9zZSAlcycsCisgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJyJBbiBhdWRpbyBmcmFnbWVudCInLAorICAgICAgICAgICd2aWV3JzogJ3Nob3dhdWRpbyAlcyd9XSwKKyAgICAndmlkZW8vbXBlZyc6CisgICAgICAgIFt7J3ZpZXcnOiAnbXBlZ19wbGF5ICVzJ31dLAorICAgICdhcHBsaWNhdGlvbi9wb3N0c2NyaXB0JzoKKyAgICAgICAgW3snbmVlZHN0ZXJtaW5hbCc6ICcnLCAndmlldyc6ICdwcy10by10ZXJtaW5hbCAlcyd9LAorICAgICAgICAgeydjb21wb3NlJzogJ2lkcmF3ICVzJywgJ3ZpZXcnOiAncHMtdG8tdGVybWluYWwgJXMnfV0sCisgICAgJ2FwcGxpY2F0aW9uL3gtZHZpJzoKKyAgICAgICAgW3sndmlldyc6ICd4ZHZpICVzJ31dLAorICAgICdtZXNzYWdlL2V4dGVybmFsLWJvZHknOgorICAgICAgICBbeydjb21wb3NldHlwZWQnOiAnZXh0Y29tcG9zZSAlcycsCisgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJyJBIHJlZmVyZW5jZSB0byBkYXRhIHN0b3JlZCBpbiBhbiBleHRlcm5hbCBsb2NhdGlvbiInLAorICAgICAgICAgICduZWVkc3Rlcm1pbmFsJzogJycsCisgICAgICAgICAgJ3ZpZXcnOiAnc2hvd2V4dGVybmFsICVzICV7YWNjZXNzLXR5cGV9ICV7bmFtZX0gJXtzaXRlfSAgICAgJXtkaXJlY3Rvcnl9ICV7bW9kZX0gJXtzZXJ2ZXJ9J31dLAorICAgICd0ZXh0L3JpY2h0ZXh0JzoKKyAgICAgICAgW3sndGVzdCc6ICd0ZXN0ICJgZWNobyAgICAgJXtjaGFyc2V0fSB8IHRyIFwnW0EtWl1cJyBcJ1thLXpdXCdgIiAgPSBpc28tODg1OS04JywKKyAgICAgICAgICAnY29waW91c291dHB1dCc6ICcnLAorICAgICAgICAgICd2aWV3JzogJ3Nob3dub25hc2NpaSBpc28tODg1OS04IC1lIHJpY2h0ZXh0IC1wICVzJ31dLAorICAgICdpbWFnZS94LXh3aW5kb3dkdW1wJzoKKyAgICAgICAgW3sndmlldyc6ICdkaXNwbGF5ICVzJ31dLAorICAgICdhdWRpby8qJzoKKyAgICAgICAgW3sndmlldyc6ICcvdXNyL2xvY2FsL2Jpbi9zaG93YXVkaW8gJXQnfV0sCisgICAgJ3ZpZGVvLyonOgorICAgICAgICBbeyd2aWV3JzogJ2FuaW1hdGUgJXMnfV0sCisgICAgJ2FwcGxpY2F0aW9uL2ZyYW1lJzoKKyAgICAgICAgW3sncHJpbnQnOiAnImNhdCAlcyB8IGxwIicsICd2aWV3JzogJ3Nob3dmcmFtZSAlcyd9XSwKKyAgICAnaW1hZ2UvcmdiJzoKKyAgICAgICAgW3sndmlldyc6ICdkaXNwbGF5ICVzJ31dCit9CisKKworY2xhc3MgSGVscGVyRnVuY3Rpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2xpc3RtYWlsY2FwZmlsZXMoc2VsZik6CisgICAgICAgICMgVGhlIHJldHVybiB2YWx1ZSBmb3IgbGlzdG1haWxjYXBmaWxlcygpIHdpbGwgdmFyeSBieSBzeXN0ZW0uCisgICAgICAgICMgU28gdmVyaWZ5IHRoYXQgbGlzdG1haWxjYXBmaWxlcygpIHJldHVybnMgYSBsaXN0IG9mIHN0cmluZ3MgdGhhdCBpcyBvZgorICAgICAgICAjIG5vbi16ZXJvIGxlbmd0aC4KKyAgICAgICAgbWNmaWxlcyA9IG1haWxjYXAubGlzdG1haWxjYXBmaWxlcygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtY2ZpbGVzLCBsaXN0KQorICAgICAgICBmb3IgbSBpbiBtY2ZpbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG0sIHN0cikKKyAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKKyAgICAgICAgICAgICMgQWNjb3JkaW5nIHRvIFJGQyAxNTI0LCBpZiBNQUlMQ0FQUyBlbnYgdmFyaWFibGUgZXhpc3RzLCB1c2UgdGhhdAorICAgICAgICAgICAgIyBhbmQgb25seSB0aGF0LgorICAgICAgICAgICAgaWYgIk1BSUxDQVBTIiBpbiBlbnY6CisgICAgICAgICAgICAgICAgZW52X21haWxjYXBzID0gZW52WyJNQUlMQ0FQUyJdLnNwbGl0KG9zLnBhdGhzZXApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGVudl9tYWlsY2FwcyA9IFsiL3Rlc3RkaXIxLy5tYWlsY2FwIiwgIi90ZXN0ZGlyMi9tYWlsY2FwIl0KKyAgICAgICAgICAgICAgICBlbnZbIk1BSUxDQVBTIl0gPSBvcy5wYXRoc2VwLmpvaW4oZW52X21haWxjYXBzKQorICAgICAgICAgICAgICAgIG1jZmlsZXMgPSBtYWlsY2FwLmxpc3RtYWlsY2FwZmlsZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudl9tYWlsY2FwcywgbWNmaWxlcykKKworICAgIGRlZiB0ZXN0X3JlYWRtYWlsY2FwZmlsZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHJlYWRtYWlsY2FwZmlsZSgpIHVzaW5nIHRlc3QgZmlsZS4gSXQgc2hvdWxkIG1hdGNoIE1BSUxDQVBESUNULgorICAgICAgICB3aXRoIG9wZW4oTUFJTENBUEZJTEUsICdyJykgYXMgbWNmOgorICAgICAgICAgICAgZCA9IG1haWxjYXAucmVhZG1haWxjYXBmaWxlKG1jZikKKyAgICAgICAgc2VsZi5hc3NlcnREaWN0RXF1YWwoZCwgTUFJTENBUERJQ1QpCisKKyAgICBkZWYgdGVzdF9sb29rdXAoc2VsZik6CisgICAgICAgICMgVGVzdCB3aXRob3V0IGtleQorICAgICAgICBleHBlY3RlZCA9IFt7J3ZpZXcnOiAnbXBlZ19wbGF5ICVzJ30sIHsndmlldyc6ICdhbmltYXRlICVzJ31dCisgICAgICAgIGFjdHVhbCA9IG1haWxjYXAubG9va3VwKE1BSUxDQVBESUNULCAndmlkZW8vbXBlZycpCisgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGV4cGVjdGVkLCBhY3R1YWwpCisKKyAgICAgICAgIyBUZXN0IHdpdGgga2V5CisgICAgICAgIGtleSA9ICdjb21wb3NlJworICAgICAgICBleHBlY3RlZCA9IFt7J2VkaXQnOiAnYXVkaW9jb21wb3NlICVzJywKKyAgICAgICAgICAgICAgICAgICAgICdjb21wb3NlJzogJ2F1ZGlvY29tcG9zZSAlcycsCisgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnIkFuIGF1ZGlvIGZyYWdtZW50IicsCisgICAgICAgICAgICAgICAgICAgICAndmlldyc6ICdzaG93YXVkaW8gJXMnfV0KKyAgICAgICAgYWN0dWFsID0gbWFpbGNhcC5sb29rdXAoTUFJTENBUERJQ1QsICdhdWRpby9iYXNpYycsIGtleSkKKyAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKKworICAgIGRlZiB0ZXN0X3N1YnN0KHNlbGYpOgorICAgICAgICBwbGlzdCA9IFsnaWQ9MScsICdudW1iZXI9MicsICd0b3RhbD0zJ10KKyAgICAgICAgIyB0ZXN0IGNhc2U6IChbZmllbGQsIE1JTUV0eXBlLCBmaWxlbmFtZSwgcGxpc3Q9W11dLCA8ZXhwZWN0ZWQgc3RyaW5nPikKKyAgICAgICAgdGVzdF9jYXNlcyA9IFsKKyAgICAgICAgICAgIChbIiIsICJhdWRpby8qIiwgImZvby50eHQiXSwgIiIpLAorICAgICAgICAgICAgKFsiZWNobyBmb28iLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvIGZvbyIpLAorICAgICAgICAgICAgKFsiZWNobyAlcyIsICJhdWRpby8qIiwgImZvby50eHQiXSwgImVjaG8gZm9vLnR4dCIpLAorICAgICAgICAgICAgKFsiZWNobyAldCIsICJhdWRpby8qIiwgImZvby50eHQiXSwgImVjaG8gYXVkaW8vKiIpLAorICAgICAgICAgICAgKFsiZWNobyBcJXQiLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvICV0IiksCisgICAgICAgICAgICAoWyJlY2hvIGZvbyIsICJhdWRpby8qIiwgImZvby50eHQiLCBwbGlzdF0sICJlY2hvIGZvbyIpLAorICAgICAgICAgICAgKFsiZWNobyAle3RvdGFsfSIsICJhdWRpby8qIiwgImZvby50eHQiLCBwbGlzdF0sICJlY2hvIDMiKQorICAgICAgICBdCisgICAgICAgIGZvciB0YyBpbiB0ZXN0X2Nhc2VzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsY2FwLnN1YnN0KCp0Y1swXSksIHRjWzFdKQorCisKK2NsYXNzIEdldGNhcHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X21vY2tfZ2V0Y2FwcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IG1haWxjYXAuZ2V0Y2FwcygpIHVzaW5nIG1vY2sgbWFpbGNhcCBmaWxlIGluIHRoaXMgZGlyLgorICAgICAgICAjIFRlbXBvcmFyaWx5IG92ZXJyaWRlIGFueSBleGlzdGluZyBzeXN0ZW0gbWFpbGNhcCBmaWxlIGJ5IHBvaW50aW5nIHRoZQorICAgICAgICAjIE1BSUxDQVBTIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIG91ciBtb2NrIGZpbGUuCisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CisgICAgICAgICAgICBlbnZbIk1BSUxDQVBTIl0gPSBNQUlMQ0FQRklMRQorICAgICAgICAgICAgY2FwcyA9IG1haWxjYXAuZ2V0Y2FwcygpCisgICAgICAgICAgICBzZWxmLmFzc2VydERpY3RFcXVhbChjYXBzLCBNQUlMQ0FQRElDVCkKKworICAgIGRlZiB0ZXN0X3N5c3RlbV9tYWlsY2FwKHNlbGYpOgorICAgICAgICAjIFRlc3QgbWFpbGNhcC5nZXRjYXBzKCkgd2l0aCBtYWlsY2FwIGZpbGUocykgb24gc3lzdGVtLCBpZiBhbnkuCisgICAgICAgIGNhcHMgPSBtYWlsY2FwLmdldGNhcHMoKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY2FwcywgZGljdCkKKyAgICAgICAgbWFpbGNhcGZpbGVzID0gbWFpbGNhcC5saXN0bWFpbGNhcGZpbGVzKCkKKyAgICAgICAgZXhpc3RpbmdtY2ZpbGVzID0gW21jZiBmb3IgbWNmIGluIG1haWxjYXBmaWxlcyBpZiBvcy5wYXRoLmV4aXN0cyhtY2YpXQorICAgICAgICBpZiBleGlzdGluZ21jZmlsZXM6CisgICAgICAgICAgICAjIEF0IGxlYXN0IDEgbWFpbGNhcCBmaWxlIGV4aXN0cywgc28gdGVzdCB0aGF0LgorICAgICAgICAgICAgZm9yIChrLCB2KSBpbiBjYXBzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGssIHN0cikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodiwgbGlzdCkKKyAgICAgICAgICAgICAgICBmb3IgZSBpbiB2OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZSwgZGljdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgTm8gbWFpbGNhcCBmaWxlcyBvbiBzeXN0ZW0uIGdldGNhcHMoKSBzaG91bGQgcmV0dXJuIGVtcHR5IGRpY3QuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBjYXBzKQorCisKK2NsYXNzIEZpbmRtYXRjaFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZmluZG1hdGNoKHNlbGYpOgorCisgICAgICAgICMgZGVmYXVsdCBmaW5kbWF0Y2ggYXJndW1lbnRzCisgICAgICAgIGMgPSBNQUlMQ0FQRElDVAorICAgICAgICBmbmFtZSA9ICJmb28udHh0IgorICAgICAgICBwbGlzdCA9IFsiYWNjZXNzLXR5cGU9ZGVmYXVsdCIsICJuYW1lPWpvaG4iLCAic2l0ZT1weXRob24ub3JnIiwKKyAgICAgICAgICAgICAgICAgImRpcmVjdG9yeT0vdG1wIiwgIm1vZGU9Zm9vIiwgInNlcnZlcj1iYXIiXQorICAgICAgICBhdWRpb19iYXNpY19lbnRyeSA9IHsKKyAgICAgICAgICAgICdlZGl0JzogJ2F1ZGlvY29tcG9zZSAlcycsCisgICAgICAgICAgICAnY29tcG9zZSc6ICdhdWRpb2NvbXBvc2UgJXMnLAorICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJyJBbiBhdWRpbyBmcmFnbWVudCInLAorICAgICAgICAgICAgJ3ZpZXcnOiAnc2hvd2F1ZGlvICVzJworICAgICAgICB9CisgICAgICAgIGF1ZGlvX2VudHJ5ID0geyJ2aWV3IjogIi91c3IvbG9jYWwvYmluL3Nob3dhdWRpbyAldCJ9CisgICAgICAgIHZpZGVvX2VudHJ5ID0geyd2aWV3JzogJ2FuaW1hdGUgJXMnfQorICAgICAgICBtZXNzYWdlX2VudHJ5ID0geworICAgICAgICAgICAgJ2NvbXBvc2V0eXBlZCc6ICdleHRjb21wb3NlICVzJywKKyAgICAgICAgICAgICdkZXNjcmlwdGlvbic6ICciQSByZWZlcmVuY2UgdG8gZGF0YSBzdG9yZWQgaW4gYW4gZXh0ZXJuYWwgbG9jYXRpb24iJywgJ25lZWRzdGVybWluYWwnOiAnJywKKyAgICAgICAgICAgICd2aWV3JzogJ3Nob3dleHRlcm5hbCAlcyAle2FjY2Vzcy10eXBlfSAle25hbWV9ICV7c2l0ZX0gICAgICV7ZGlyZWN0b3J5fSAle21vZGV9ICV7c2VydmVyfScKKyAgICAgICAgfQorCisgICAgICAgICMgdGVzdCBjYXNlOiAoZmluZG1hdGNoIGFyZ3MsIGZpbmRtYXRjaCBrZXl3b3JkIGFyZ3MsIGV4cGVjdGVkIG91dHB1dCkKKyAgICAgICAgIyAgIHBvc2l0aW9uYWwgYXJnczogY2FwcywgTUlNRXR5cGUKKyAgICAgICAgIyAgIGtleXdvcmQgYXJnczoga2V5PSJ2aWV3IiwgZmlsZW5hbWU9Ii9kZXYvbnVsbCIsIHBsaXN0PVtdCisgICAgICAgICMgICBvdXRwdXQ6IChjb21tYW5kIGxpbmUsIG1haWxjYXAgZW50cnkpCisgICAgICAgIGNhc2VzID0gWworICAgICAgICAgICAgKFt7fSwgInZpZGVvL21wZWciXSwge30sIChOb25lLCBOb25lKSksCisgICAgICAgICAgICAoW2MsICJmb28vYmFyIl0sIHt9LCAoTm9uZSwgTm9uZSkpLAorICAgICAgICAgICAgKFtjLCAidmlkZW8vbXBlZyJdLCB7fSwgKCdtcGVnX3BsYXkgL2Rldi9udWxsJywgeyd2aWV3JzogJ21wZWdfcGxheSAlcyd9KSksCisgICAgICAgICAgICAoW2MsICJhdWRpby9iYXNpYyIsICJlZGl0Il0sIHt9LCAoImF1ZGlvY29tcG9zZSAvZGV2L251bGwiLCBhdWRpb19iYXNpY19lbnRyeSkpLAorICAgICAgICAgICAgKFtjLCAiYXVkaW8vYmFzaWMiLCAiY29tcG9zZSJdLCB7fSwgKCJhdWRpb2NvbXBvc2UgL2Rldi9udWxsIiwgYXVkaW9fYmFzaWNfZW50cnkpKSwKKyAgICAgICAgICAgIChbYywgImF1ZGlvL2Jhc2ljIiwgImRlc2NyaXB0aW9uIl0sIHt9LCAoJyJBbiBhdWRpbyBmcmFnbWVudCInLCBhdWRpb19iYXNpY19lbnRyeSkpLAorICAgICAgICAgICAgKFtjLCAiYXVkaW8vYmFzaWMiLCAiZm9vYmFyIl0sIHt9LCAoTm9uZSwgTm9uZSkpLAorICAgICAgICAgICAgKFtjLCAidmlkZW8vKiJdLCB7ImZpbGVuYW1lIjogZm5hbWV9LCAoImFuaW1hdGUgJXMiICUgZm5hbWUsIHZpZGVvX2VudHJ5KSksCisgICAgICAgICAgICAoW2MsICJhdWRpby9iYXNpYyIsICJjb21wb3NlIl0sCisgICAgICAgICAgICAgeyJmaWxlbmFtZSI6IGZuYW1lfSwKKyAgICAgICAgICAgICAoImF1ZGlvY29tcG9zZSAlcyIgJSBmbmFtZSwgYXVkaW9fYmFzaWNfZW50cnkpKSwKKyAgICAgICAgICAgIChbYywgImF1ZGlvL2Jhc2ljIl0sCisgICAgICAgICAgICAgeyJrZXkiOiAiZGVzY3JpcHRpb24iLCAiZmlsZW5hbWUiOiBmbmFtZX0sCisgICAgICAgICAgICAgKCciQW4gYXVkaW8gZnJhZ21lbnQiJywgYXVkaW9fYmFzaWNfZW50cnkpKSwKKyAgICAgICAgICAgIChbYywgImF1ZGlvLyoiXSwKKyAgICAgICAgICAgICB7ImZpbGVuYW1lIjogZm5hbWV9LAorICAgICAgICAgICAgICgiL3Vzci9sb2NhbC9iaW4vc2hvd2F1ZGlvIGF1ZGlvLyoiLCBhdWRpb19lbnRyeSkpLAorICAgICAgICAgICAgKFtjLCAibWVzc2FnZS9leHRlcm5hbC1ib2R5Il0sCisgICAgICAgICAgICAgeyJwbGlzdCI6IHBsaXN0fSwKKyAgICAgICAgICAgICAoInNob3dleHRlcm5hbCAvZGV2L251bGwgZGVmYXVsdCBqb2huIHB5dGhvbi5vcmcgICAgIC90bXAgZm9vIGJhciIsIG1lc3NhZ2VfZW50cnkpKQorICAgICAgICBdCisgICAgICAgIHNlbGYuX3J1bl9jYXNlcyhjYXNlcykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gInBvc2l4IiwgIlJlcXVpcmVzICd0ZXN0JyBjb21tYW5kIG9uIHN5c3RlbSIpCisgICAgZGVmIHRlc3RfdGVzdChzZWxmKToKKyAgICAgICAgIyBmaW5kbWF0Y2goKSB3aWxsIGF1dG9tYXRpY2FsbHkgY2hlY2sgYW55ICJ0ZXN0IiBjb25kaXRpb25zIGFuZCBza2lwCisgICAgICAgICMgdGhlIGVudHJ5IGlmIHRoZSBjaGVjayBmYWlscy4KKyAgICAgICAgY2FwcyA9IHsidGVzdC9wYXNzIjogW3sidGVzdCI6ICJ0ZXN0IDEgLWVxIDEifV0sCisgICAgICAgICAgICAgICAgInRlc3QvZmFpbCI6IFt7InRlc3QiOiAidGVzdCAxIC1lcSAwIn1dfQorICAgICAgICAjIHRlc3QgY2FzZTogKGZpbmRtYXRjaCBhcmdzLCBmaW5kbWF0Y2gga2V5d29yZCBhcmdzLCBleHBlY3RlZCBvdXRwdXQpCisgICAgICAgICMgICBwb3NpdGlvbmFsIGFyZ3M6IGNhcHMsIE1JTUV0eXBlLCBrZXkgKCJ0ZXN0IikKKyAgICAgICAgIyAgIGtleXdvcmQgYXJnczogTi9BCisgICAgICAgICMgICBvdXRwdXQ6IChjb21tYW5kIGxpbmUsIG1haWxjYXAgZW50cnkpCisgICAgICAgIGNhc2VzID0gWworICAgICAgICAgICAgIyBmaW5kbWF0Y2ggd2lsbCByZXR1cm4gdGhlIG1haWxjYXAgZW50cnkgZm9yIHRlc3QvcGFzcyBiZWNhdXNlIGl0IGV2YWx1YXRlcyB0byB0cnVlCisgICAgICAgICAgICAoW2NhcHMsICJ0ZXN0L3Bhc3MiLCAidGVzdCJdLCB7fSwgKCJ0ZXN0IDEgLWVxIDEiLCB7InRlc3QiOiAidGVzdCAxIC1lcSAxIn0pKSwKKyAgICAgICAgICAgICMgZmluZG1hdGNoIHdpbGwgcmV0dXJuIE5vbmUgYmVjYXVzZSB0ZXN0L2ZhaWwgZXZhbHVhdGVzIHRvIGZhbHNlCisgICAgICAgICAgICAoW2NhcHMsICJ0ZXN0L2ZhaWwiLCAidGVzdCJdLCB7fSwgKE5vbmUsIE5vbmUpKQorICAgICAgICBdCisgICAgICAgIHNlbGYuX3J1bl9jYXNlcyhjYXNlcykKKworICAgIGRlZiBfcnVuX2Nhc2VzKHNlbGYsIGNhc2VzKToKKyAgICAgICAgZm9yIGMgaW4gY2FzZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxjYXAuZmluZG1hdGNoKCpjWzBdLCAqKmNbMV0pLCBjWzJdKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KEhlbHBlckZ1bmN0aW9uVGVzdCwgR2V0Y2Fwc1Rlc3QsIEZpbmRtYXRjaFRlc3QpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5IGIvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5CmluZGV4IDAyZWY2MmEuLjAyNWI1M2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkKQEAgLTYsNiArNiw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcworaW1wb3J0IHR5cGVzCiAKIGNsYXNzIEhlbHBlck1peGluOgogICAgIGRlZiBoZWxwZXIoc2VsZiwgc2FtcGxlLCAqZXh0cmEpOgpAQCAtMTE0LDYgKzExNSwyMiBAQAogICAgICAgICBjb2RlcyA9IChFeGNlcHRpb25UZXN0Q2FzZS50ZXN0X2V4Y2VwdGlvbnMuX19jb2RlX18sKSAqIGNvdW50CiAgICAgICAgIG1hcnNoYWwubG9hZHMobWFyc2hhbC5kdW1wcyhjb2RlcykpCiAKKyAgICBkZWYgdGVzdF9kaWZmZXJlbnRfZmlsZW5hbWVzKHNlbGYpOgorICAgICAgICBjbzEgPSBjb21waWxlKCJ4IiwgImYxIiwgImV4ZWMiKQorICAgICAgICBjbzIgPSBjb21waWxlKCJ5IiwgImYyIiwgImV4ZWMiKQorICAgICAgICBjbzEsIGNvMiA9IG1hcnNoYWwubG9hZHMobWFyc2hhbC5kdW1wcygoY28xLCBjbzIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbzEuY29fZmlsZW5hbWUsICJmMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY28yLmNvX2ZpbGVuYW1lLCAiZjIiKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc2FtZV9maWxlbmFtZV91c2VkKHNlbGYpOgorICAgICAgICBzID0gIiIiZGVmIGYoKTogcGFzc1xuZGVmIGcoKTogcGFzcyIiIgorICAgICAgICBjbyA9IGNvbXBpbGUocywgIm15ZmlsZSIsICJleGVjIikKKyAgICAgICAgY28gPSBtYXJzaGFsLmxvYWRzKG1hcnNoYWwuZHVtcHMoY28pKQorICAgICAgICBmb3Igb2JqIGluIGNvLmNvX2NvbnN0czoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5Db2RlVHlwZSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhjby5jb19maWxlbmFtZSwgb2JqLmNvX2ZpbGVuYW1lKQorCiBjbGFzcyBDb250YWluZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSwgSGVscGVyTWl4aW4pOgogICAgIGQgPSB7J2FzdHJpbmcnOiAnZm9vQGJhci5iYXouc3BhbScsCiAgICAgICAgICAnYWZsb2F0JzogNzI4My40MywKQEAgLTI2Myw3ICsyODAsNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1hcnNoYWwubG9hZHMsIHVuaWNvZGVfc3RyaW5nKQogCiBMQVJHRV9TSVpFID0gMioqMzEKLWNoYXJhY3Rlcl9zaXplID0gNCBpZiBzeXMubWF4dW5pY29kZSA+IDB4RkZGRiBlbHNlIDIKIHBvaW50ZXJfc2l6ZSA9IDggaWYgc3lzLm1heHNpemUgPiAweEZGRkZGRkZGIGVsc2UgNAogCiBjbGFzcyBOdWxsV3JpdGVyOgpAQCAtMjc5LDcgKzI5NSw3IEBACiAgICAgZGVmIHRlc3RfYnl0ZXMoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHNlbGYuY2hlY2tfdW5tYXJzaGFsbGFibGUoYid4JyAqIHNpemUpCiAKLSAgICBAc3VwcG9ydC5iaWdtZW10ZXN0KHNpemU9TEFSR0VfU0laRSwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplLCBkcnlfcnVuPUZhbHNlKQorICAgIEBzdXBwb3J0LmJpZ21lbXRlc3Qoc2l6ZT1MQVJHRV9TSVpFLCBtZW11c2U9MSwgZHJ5X3J1bj1GYWxzZSkKICAgICBkZWYgdGVzdF9zdHIoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHNlbGYuY2hlY2tfdW5tYXJzaGFsbGFibGUoJ3gnICogc2l6ZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9tYXRoLnB5CmluZGV4IGRkZGM4ODkuLjcxNTAwM2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21hdGgucHkKQEAgLTIsMTEgKzIsMTIgQEAKICMgWFhYWCBTaG91bGQgbm90IGRvIHRlc3RzIGFyb3VuZCB6ZXJvIG9ubHkKIAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgdmVyYm9zZSwgcmVxdWlyZXNfSUVFRV83NTQKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgbWF0aAogaW1wb3J0IG9zCitpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzeXMKLWltcG9ydCByYW5kb20KIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBzeXNjb25maWcKIApAQCAtNDU3LDEyICs0NTgsMTIgQEAKIAogICAgIGRlZiB0ZXN0Rm1vZChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmZtb2QpCi0gICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoMTAsMSknLCBtYXRoLmZtb2QoMTAsMSksIDApCi0gICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoMTAsMC41KScsIG1hdGguZm1vZCgxMCwwLjUpLCAwKQotICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKDEwLDEuNSknLCBtYXRoLmZtb2QoMTAsMS41KSwgMSkKLSAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgtMTAsMSknLCBtYXRoLmZtb2QoLTEwLDEpLCAwKQotICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKC0xMCwwLjUpJywgbWF0aC5mbW9kKC0xMCwwLjUpLCAwKQotICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKC0xMCwxLjUpJywgbWF0aC5mbW9kKC0xMCwxLjUpLCAtMSkKKyAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgxMCwgMSknLCBtYXRoLmZtb2QoMTAsIDEpLCAwLjApCisgICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoMTAsIDAuNSknLCBtYXRoLmZtb2QoMTAsIDAuNSksIDAuMCkKKyAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgxMCwgMS41KScsIG1hdGguZm1vZCgxMCwgMS41KSwgMS4wKQorICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKC0xMCwgMSknLCBtYXRoLmZtb2QoLTEwLCAxKSwgLTAuMCkKKyAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgtMTAsIDAuNSknLCBtYXRoLmZtb2QoLTEwLCAwLjUpLCAtMC4wKQorICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKC0xMCwgMS41KScsIG1hdGguZm1vZCgtMTAsIDEuNSksIC0xLjApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguZm1vZChOQU4sIDEuKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguZm1vZCgxLiwgTkFOKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguZm1vZChOQU4sIE5BTikpKQpAQCAtNjUwLDYgKzY1MSwzMyBAQAogICAgICAgICBuPSAyKio5MAogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKG1hdGgubG9nMXAobiksIG1hdGgubG9nMXAoZmxvYXQobikpKQogCisgICAgQHJlcXVpcmVzX0lFRUVfNzU0CisgICAgZGVmIHRlc3RMb2cyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1hdGgubG9nMikKKworICAgICAgICAjIENoZWNrIHNvbWUgaW50ZWdlciB2YWx1ZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmxvZzIoMSksIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmxvZzIoMiksIDEuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmxvZzIoNCksIDIuMCkKKworICAgICAgICAjIExhcmdlIGludGVnZXIgdmFsdWVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5sb2cyKDIqKjEwMjMpLCAxMDIzLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5sb2cyKDIqKjEwMjQpLCAxMDI0LjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5sb2cyKDIqKjIwMDApLCAyMDAwLjApCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5sb2cyLCAtMS41KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmxvZzIsIE5JTkYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGgubG9nMihOQU4pKSkKKworICAgIEByZXF1aXJlc19JRUVFXzc1NAorICAgICMgbG9nMigpIGlzIG5vdCBhY2N1cmF0ZSBlbm91Z2ggb24gTWFjIE9TIFggVGlnZXIgKDEwLjQpCisgICAgQHN1cHBvcnQucmVxdWlyZXNfbWFjX3ZlcigxMCwgNSkKKyAgICBkZWYgdGVzdExvZzJFeGFjdChzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHdlIGdldCBleGFjdCBlcXVhbGl0eSBmb3IgbG9nMiBvZiBwb3dlcnMgb2YgMi4KKyAgICAgICAgYWN0dWFsID0gW21hdGgubG9nMihtYXRoLmxkZXhwKDEuMCwgbikpIGZvciBuIGluIHJhbmdlKC0xMDc0LCAxMDI0KV0KKyAgICAgICAgZXhwZWN0ZWQgPSBbZmxvYXQobikgZm9yIG4gaW4gcmFuZ2UoLTEwNzQsIDEwMjQpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpCisKICAgICBkZWYgdGVzdExvZzEwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1hdGgubG9nMTApCiAgICAgICAgIHNlbGYuZnRlc3QoJ2xvZzEwKDAuMSknLCBtYXRoLmxvZzEwKDAuMSksIC0xKQpAQCAtMTAxMCw3ICsxMDM4LDYgQEAKIAogICAgIEByZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0X210ZXN0ZmlsZShzZWxmKToKLSAgICAgICAgQUxMT1dFRF9FUlJPUiA9IDIwICAjIHBlcm1pdHRlZCBlcnJvciwgaW4gdWxwcwogICAgICAgICBmYWlsX2ZtdCA9ICJ7fTp7fSh7IXJ9KTogZXhwZWN0ZWQgeyFyfSwgZ290IHshcn0iCiAKICAgICAgICAgZmFpbHVyZXMgPSBbXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tZW1vcnlpby5weSBiL0xpYi90ZXN0L3Rlc3RfbWVtb3J5aW8ucHkKaW5kZXggN2MwYzg0Zi4uZTVkYjk0NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tZW1vcnlpby5weQorKysgYi9MaWIvdGVzdC90ZXN0X21lbW9yeWlvLnB5CkBAIC02NTgsNyArNjU4LDcgQEAKIAogICAgIEBzdXBwb3J0LmNweXRob25fb25seQogICAgIGRlZiB0ZXN0X3NpemVvZihzZWxmKToKLSAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCdQMlBQMlBQJykKKyAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCdQMm5OMlBuJykKICAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrX3NpemVvZgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iamVjdC5fX3NpemVvZl9fKGlvLkJ5dGVzSU8oKSksIGJhc2VzaXplKQogICAgICAgICBjaGVjayhpby5CeXRlc0lPKCksIGJhc2VzaXplICkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWVtb3J5dmlldy5weSBiL0xpYi90ZXN0L3Rlc3RfbWVtb3J5dmlldy5weQppbmRleCAwYmZkZGQ5Li5lZTZiMTVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21lbW9yeXZpZXcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tZW1vcnl2aWV3LnB5CkBAIC0xLDYgKzEsNyBAQAogIiIiVW5pdCB0ZXN0cyBmb3IgdGhlIG1lbW9yeXZpZXcKIAotWFhYIFdlIG5lZWQgbW9yZSB0ZXN0cyEgU29tZSB0ZXN0cyBhcmUgaW4gdGVzdF9ieXRlcworICAgU29tZSB0ZXN0cyBhcmUgaW4gdGVzdF9ieXRlcy4gTWFueSB0ZXN0cyB0aGF0IHJlcXVpcmUgX3Rlc3RidWZmZXIubmRhcnJheQorICAgYXJlIGluIHRlc3RfYnVmZmVyLgogIiIiCiAKIGltcG9ydCB1bml0dGVzdApAQCAtMjQsMTUgKzI1LDE0IEBACiAgICAgICAgIHJldHVybiBmaWx0ZXIoTm9uZSwgW3NlbGYucm9fdHlwZSwgc2VsZi5yd190eXBlXSkKIAogICAgIGRlZiBjaGVja19nZXRpdGVtX3dpdGhfdHlwZShzZWxmLCB0cCk6Ci0gICAgICAgIGl0ZW0gPSBzZWxmLmdldGl0ZW1fdHlwZQogICAgICAgICBiID0gdHAoc2VsZi5fc291cmNlKQogICAgICAgICBvbGRyZWZjb3VudCA9IHN5cy5nZXRyZWZjb3VudChiKQogICAgICAgICBtID0gc2VsZi5fdmlldyhiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMF0sIGl0ZW0oYiJhIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtWzBdLCBieXRlcykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzVdLCBpdGVtKGIiZiIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bLTFdLCBpdGVtKGIiZiIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bLTZdLCBpdGVtKGIiYSIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMF0sIG9yZChiImEiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1bMF0sIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzVdLCBvcmQoYiJmIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVstMV0sIG9yZChiImYiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWy02XSwgb3JkKGIiYSIpKQogICAgICAgICAjIEJvdW5kcyBjaGVja2luZwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBsYW1iZGE6IG1bNl0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIGxhbWJkYTogbVstN10pCkBAIC03Niw3ICs3Niw5IEBACiAgICAgICAgIGIgPSBzZWxmLnJ3X3R5cGUoc2VsZi5fc291cmNlKQogICAgICAgICBvbGRyZWZjb3VudCA9IHN5cy5nZXRyZWZjb3VudChiKQogICAgICAgICBtID0gc2VsZi5fdmlldyhiKQotICAgICAgICBtWzBdID0gdHAoYiIwIikKKyAgICAgICAgbVswXSA9IG9yZChiJzEnKQorICAgICAgICBzZWxmLl9jaGVja19jb250ZW50cyh0cCwgYiwgYiIxYmNkZWYiKQorICAgICAgICBtWzA6MV0gPSB0cChiIjAiKQogICAgICAgICBzZWxmLl9jaGVja19jb250ZW50cyh0cCwgYiwgYiIwYmNkZWYiKQogICAgICAgICBtWzE6M10gPSB0cChiIjEyIikKICAgICAgICAgc2VsZi5fY2hlY2tfY29udGVudHModHAsIGIsIGIiMDEyZGVmIikKQEAgLTEwMiwxMCArMTA0LDE3IEBACiAgICAgICAgICMgV3JvbmcgaW5kZXgvc2xpY2UgdHlwZXMKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRpdGVtLCAwLjAsIGIiYSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0aXRlbSwgKDAsKSwgYiJhIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRpdGVtLCAoc2xpY2UoMCwxLDEpLCAwKSwgYiJhIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRpdGVtLCAoMCwgc2xpY2UoMCwxLDEpKSwgYiJhIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRpdGVtLCAoMCwpLCBiImEiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGl0ZW0sICJhIiwgYiJhIikKKyAgICAgICAgIyBOb3QgaW1wbGVtZW50ZWQ6IG11bHRpZGltZW5zaW9uYWwgc2xpY2VzCisgICAgICAgIHNsaWNlcyA9IChzbGljZSgwLDEsMSksIHNsaWNlKDAsMSwyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgc2V0aXRlbSwgc2xpY2VzLCBiImEiKQogICAgICAgICAjIFRyeWluZyB0byByZXNpemUgdGhlIG1lbW9yeSBvYmplY3QKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0aXRlbSwgMCwgYiIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRpdGVtLCAwLCBiImFiIikKKyAgICAgICAgZXhjID0gVmFsdWVFcnJvciBpZiBtLmZvcm1hdCA9PSAnYycgZWxzZSBUeXBlRXJyb3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXhjLCBzZXRpdGVtLCAwLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGV4Yywgc2V0aXRlbSwgMCwgYiJhYiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGl0ZW0sIHNsaWNlKDEsMSksIGIiYSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGl0ZW0sIHNsaWNlKDAsMiksIGIiYSIpCiAKQEAgLTE3NSw3ICsxODQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc2hhcGUsICg2LCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0pLCA2KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc3RyaWRlcywgKHNlbGYuaXRlbXNpemUsKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnN1Ym9mZnNldHMsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5zdWJvZmZzZXRzLCAoKSkKICAgICAgICAgcmV0dXJuIG0KIAogICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfcmVhZG9ubHkoc2VsZik6CkBAIC0yMDksMTIgKzIxOCwxNiBAQAogICAgICAgICAgICAgICAgICMgSWYgdHAgaXMgYSBmYWN0b3J5IHJhdGhlciB0aGFuIGEgcGxhaW4gdHlwZSwgc2tpcAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKKyAgICAgICAgICAgIGNsYXNzIE15VmlldygpOgorICAgICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBiYXNlKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tID0gbWVtb3J5dmlldyhiYXNlKQogICAgICAgICAgICAgY2xhc3MgTXlTb3VyY2UodHApOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGNsYXNzIE15T2JqZWN0OgogICAgICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICAgICAgIyBDcmVhdGUgYSByZWZlcmVuY2UgY3ljbGUgdGhyb3VnaCBhIG1lbW9yeXZpZXcgb2JqZWN0CisgICAgICAgICAgICAjIENyZWF0ZSBhIHJlZmVyZW5jZSBjeWNsZSB0aHJvdWdoIGEgbWVtb3J5dmlldyBvYmplY3QuCisgICAgICAgICAgICAjIFRoaXMgZXhlcmNpc2VzIG1idWZfY2xlYXIoKS4KICAgICAgICAgICAgIGIgPSBNeVNvdXJjZSh0cChiJ2FiYycpKQogICAgICAgICAgICAgbSA9IHNlbGYuX3ZpZXcoYikKICAgICAgICAgICAgIG8gPSBNeU9iamVjdCgpCkBAIC0yMjYsNiArMjM5LDE3IEBACiAgICAgICAgICAgICBnYy5jb2xsZWN0KCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3cigpIGlzIE5vbmUsIHdyKCkpCiAKKyAgICAgICAgICAgICMgVGhpcyBleGVyY2lzZXMgbWVtb3J5X2NsZWFyKCkuCisgICAgICAgICAgICBtID0gTXlWaWV3KHRwKGInYWJjJykpCisgICAgICAgICAgICBvID0gTXlPYmplY3QoKQorICAgICAgICAgICAgbS54ID0gbQorICAgICAgICAgICAgbS5vID0gbworICAgICAgICAgICAgd3IgPSB3ZWFrcmVmLnJlZihvKQorICAgICAgICAgICAgbSA9IG8gPSBOb25lCisgICAgICAgICAgICAjIFRoZSBjeWNsZSBtdXN0IGJlIGJyb2tlbgorICAgICAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUod3IoKSBpcyBOb25lLCB3cigpKQorCiAgICAgZGVmIF9jaGVja19yZWxlYXNlZChzZWxmLCBtLCB0cCk6CiAgICAgICAgIGNoZWNrID0gc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAicmVsZWFzZWQiKQogICAgICAgICB3aXRoIGNoZWNrOiBieXRlcyhtKQpAQCAtMjgzLDYgKzMwNyw1MSBAQAogICAgICAgICBpID0gaW8uQnl0ZXNJTyhiJ1paWlonKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGkucmVhZGludG8sIG0pCiAKKyAgICBkZWYgdGVzdF9nZXRidWZfZmFpbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLl92aWV3LCB7fSkKKworICAgIGRlZiB0ZXN0X2hhc2goc2VsZik6CisgICAgICAgICMgTWVtb3J5dmlld3Mgb2YgcmVhZG9ubHkgKGhhc2hhYmxlKSB0eXBlcyBhcmUgaGFzaGFibGUsIGFuZCB0aGV5CisgICAgICAgICMgaGFzaCBhcyBoYXNoKG9iai50b2J5dGVzKCkpLgorICAgICAgICB0cCA9IHNlbGYucm9fdHlwZQorICAgICAgICBpZiB0cCBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibm8gcmVhZC1vbmx5IHR5cGUgdG8gdGVzdCIpCisgICAgICAgIGIgPSB0cChzZWxmLl9zb3VyY2UpCisgICAgICAgIG0gPSBzZWxmLl92aWV3KGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtKSwgaGFzaChiImFiY2RlZiIpKQorICAgICAgICAjIFJlbGVhc2luZyB0aGUgbWVtb3J5dmlldyBrZWVwcyB0aGUgc3RvcmVkIGhhc2ggdmFsdWUgKGFzIHdpdGggd2Vha3JlZnMpCisgICAgICAgIG0ucmVsZWFzZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtKSwgaGFzaChiImFiY2RlZiIpKQorICAgICAgICAjIEhhc2hpbmcgYSBtZW1vcnl2aWV3IGZvciB0aGUgZmlyc3QgdGltZSBhZnRlciBpdCBpcyByZWxlYXNlZAorICAgICAgICAjIHJlc3VsdHMgaW4gYW4gZXJyb3IgKGFzIHdpdGggd2Vha3JlZnMpLgorICAgICAgICBtID0gc2VsZi5fdmlldyhiKQorICAgICAgICBtLnJlbGVhc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBoYXNoLCBtKQorCisgICAgZGVmIHRlc3RfaGFzaF93cml0YWJsZShzZWxmKToKKyAgICAgICAgIyBNZW1vcnl2aWV3cyBvZiB3cml0YWJsZSB0eXBlcyBhcmUgdW5oYXNoYWJsZQorICAgICAgICB0cCA9IHNlbGYucndfdHlwZQorICAgICAgICBpZiB0cCBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibm8gd3JpdGFibGUgdHlwZSB0byB0ZXN0IikKKyAgICAgICAgYiA9IHRwKHNlbGYuX3NvdXJjZSkKKyAgICAgICAgbSA9IHNlbGYuX3ZpZXcoYikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaGFzaCwgbSkKKworICAgIGRlZiB0ZXN0X3dlYWtyZWYoc2VsZik6CisgICAgICAgICMgQ2hlY2sgbWVtb3J5dmlld3MgYXJlIHdlYWtyZWZhYmxlCisgICAgICAgIGZvciB0cCBpbiBzZWxmLl90eXBlczoKKyAgICAgICAgICAgIGIgPSB0cChzZWxmLl9zb3VyY2UpCisgICAgICAgICAgICBtID0gc2VsZi5fdmlldyhiKQorICAgICAgICAgICAgTCA9IFtdCisgICAgICAgICAgICBkZWYgY2FsbGJhY2sod3IsIGI9Yik6CisgICAgICAgICAgICAgICAgTC5hcHBlbmQoYikKKyAgICAgICAgICAgIHdyID0gd2Vha3JlZi5yZWYobSwgY2FsbGJhY2spCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHdyKCksIG0pCisgICAgICAgICAgICBkZWwgbQorICAgICAgICAgICAgdGVzdC5zdXBwb3J0LmdjX2NvbGxlY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3cigpLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhMWzBdLCBiKQorCiAjIFZhcmlhdGlvbnMgb24gc291cmNlIG9iamVjdHMgZm9yIHRoZSBidWZmZXI6IGJ5dGVzLWxpa2Ugb2JqZWN0cywgdGhlbiBhcnJheXMKICMgd2l0aCBpdGVtc2l6ZSA+IDEuCiAjIE5PVEU6IHN1cHBvcnQgZm9yIG11bHRpLWRpbWVuc2lvbmFsIG9iamVjdHMgaXMgdW5pbXBsZW1lbnRlZC4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWV0YWNsYXNzLnB5IGIvTGliL3Rlc3QvdGVzdF9tZXRhY2xhc3MucHkKaW5kZXggMjE5YWI5OS4uZTZmZTIwYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tZXRhY2xhc3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tZXRhY2xhc3MucHkKQEAgLTE1OSw2ICsxNTksNyBAQAogICAgIC4uLiAgICAgYmFyID0gMTIzCiAgICAgLi4uCiAgICAgZFsnX19tb2R1bGVfXyddID0gJ3Rlc3QudGVzdF9tZXRhY2xhc3MnCisgICAgZFsnX19xdWFsbmFtZV9fJ10gPSAnQycKICAgICBkWydmb28nXSA9IDQKICAgICBkWydmb28nXSA9IDQyCiAgICAgZFsnYmFyJ10gPSAxMjMKQEAgLTE3NywxMiArMTc4LDEyIEBACiAgICAgLi4uICAgICBiID0gMjQKICAgICAuLi4KICAgICBtZXRhOiBDICgpCi0gICAgbnM6IFsoJ19fbW9kdWxlX18nLCAndGVzdC50ZXN0X21ldGFjbGFzcycpLCAoJ2EnLCA0MiksICgnYicsIDI0KV0KKyAgICBuczogWygnX19tb2R1bGVfXycsICd0ZXN0LnRlc3RfbWV0YWNsYXNzJyksICgnX19xdWFsbmFtZV9fJywgJ0MnKSwgKCdhJywgNDIpLCAoJ2InLCAyNCldCiAgICAga3c6IFtdCiAgICAgPj4+IHR5cGUoQykgaXMgZGljdAogICAgIFRydWUKICAgICA+Pj4gcHJpbnQoc29ydGVkKEMuaXRlbXMoKSkpCi0gICAgWygnX19tb2R1bGVfXycsICd0ZXN0LnRlc3RfbWV0YWNsYXNzJyksICgnYScsIDQyKSwgKCdiJywgMjQpXQorICAgIFsoJ19fbW9kdWxlX18nLCAndGVzdC50ZXN0X21ldGFjbGFzcycpLCAoJ19fcXVhbG5hbWVfXycsICdDJyksICgnYScsIDQyKSwgKCdiJywgMjQpXQogICAgID4+PgogCiBBbmQgYWdhaW4sIHdpdGggYSBfX3ByZXBhcmVfXyBhdHRyaWJ1dGUuCkBAIC0xOTksMTEgKzIwMCwxMiBAQAogICAgIC4uLgogICAgIHByZXBhcmU6IEMgKCkgWygnb3RoZXInLCAnYm9vaCcpXQogICAgIGRbJ19fbW9kdWxlX18nXSA9ICd0ZXN0LnRlc3RfbWV0YWNsYXNzJworICAgIGRbJ19fcXVhbG5hbWVfXyddID0gJ0MnCiAgICAgZFsnYSddID0gMQogICAgIGRbJ2EnXSA9IDIKICAgICBkWydiJ10gPSAzCiAgICAgbWV0YTogQyAoKQotICAgIG5zOiBbKCdfX21vZHVsZV9fJywgJ3Rlc3QudGVzdF9tZXRhY2xhc3MnKSwgKCdhJywgMiksICgnYicsIDMpXQorICAgIG5zOiBbKCdfX21vZHVsZV9fJywgJ3Rlc3QudGVzdF9tZXRhY2xhc3MnKSwgKCdfX3F1YWxuYW1lX18nLCAnQycpLCAoJ2EnLCAyKSwgKCdiJywgMyldCiAgICAga3c6IFsoJ290aGVyJywgJ2Jvb2gnKV0KICAgICA+Pj4KIApAQCAtMjQ2LDcgKzI0OCwxMyBAQAogCiAiIiIKIAotX190ZXN0X18gPSB7J2RvY3Rlc3RzJyA6IGRvY3Rlc3RzfQoraW1wb3J0IHN5cworCisjIFRyYWNlIGZ1bmN0aW9uIGludHJvZHVjZXMgX19sb2NhbHNfXyB3aGljaCBjYXVzZXMgdmFyaW91cyB0ZXN0cyB0byBmYWlsLgoraWYgaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKToKKyAgICBfX3Rlc3RfXyA9IHt9CitlbHNlOgorICAgIF9fdGVzdF9fID0geydkb2N0ZXN0cycgOiBkb2N0ZXN0c30KIAogZGVmIHRlc3RfbWFpbih2ZXJib3NlPUZhbHNlKToKICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWluaWRvbS5weSBiL0xpYi90ZXN0L3Rlc3RfbWluaWRvbS5weQppbmRleCA4MDgxMmM4Li41ODY3YjJkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21pbmlkb20ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9taW5pZG9tLnB5CkBAIC00LDkgKzQsNyBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIHJ1bl91bml0dGVzdCwgZmluZGZpbGUKIGltcG9ydCB1bml0dGVzdAogCi1pbXBvcnQgeG1sLmRvbQogaW1wb3J0IHhtbC5kb20ubWluaWRvbQotaW1wb3J0IHhtbC5wYXJzZXJzLmV4cGF0CiAKIGZyb20geG1sLmRvbS5taW5pZG9tIGltcG9ydCBwYXJzZSwgTm9kZSwgRG9jdW1lbnQsIHBhcnNlU3RyaW5nCiBmcm9tIHhtbC5kb20ubWluaWRvbSBpbXBvcnQgZ2V0RE9NSW1wbGVtZW50YXRpb24KQEAgLTE0LDcgKzEyLDYgQEAKIAogdHN0ZmlsZSA9IGZpbmRmaWxlKCJ0ZXN0LnhtbCIsIHN1YmRpcj0ieG1sdGVzdGRhdGEiKQogCi0KICMgVGhlIHRlc3RzIG9mIERvY3VtZW50VHlwZSBpbXBvcnRpbmcgdXNlIHRoZXNlIGhlbHBlcnMgdG8gY29uc3RydWN0CiAjIHRoZSBkb2N1bWVudHMgdG8gd29yayB3aXRoLCBzaW5jZSBub3QgYWxsIERPTSBidWlsZGVycyBhY3R1YWxseQogIyBjcmVhdGUgdGhlIERvY3VtZW50VHlwZSBub2Rlcy4KQEAgLTUwLDcgKzQ3LDcgQEAKIAogICAgIGRlZiBjaGVja1dob2xlVGV4dChzZWxmLCBub2RlLCBzKToKICAgICAgICAgdCA9IG5vZGUud2hvbGVUZXh0Ci0gICAgICAgIHNlbGYuY29uZmlybSh0ID09IHMsICJsb29raW5nIGZvciAlcywgZm91bmQgJXMiICUgKHJlcHIocyksIHJlcHIodCkpKQorICAgICAgICBzZWxmLmNvbmZpcm0odCA9PSBzLCAibG9va2luZyBmb3IgJXIsIGZvdW5kICVyIiAlIChzLCB0KSkKIAogICAgIGRlZiB0ZXN0UGFyc2VGcm9tRmlsZShzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKHRzdGZpbGUpIGFzIGZpbGU6CkBAIC0yODIsNiArMjc5LDcgQEAKIAogICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoImRlZiIsICJnaGkiKQogICAgICAgICBzZWxmLmNvbmZpcm0obGVuKGNoaWxkLmF0dHJpYnV0ZXMpID09IDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHhtbC5kb20uTm90Rm91bmRFcnIsIGNoaWxkLnJlbW92ZUF0dHJpYnV0ZSwgImZvbyIpCiAgICAgICAgIGNoaWxkLnJlbW92ZUF0dHJpYnV0ZSgiZGVmIikKICAgICAgICAgc2VsZi5jb25maXJtKGxlbihjaGlsZC5hdHRyaWJ1dGVzKSA9PSAwKQogICAgICAgICBkb20udW5saW5rKCkKQEAgLTI5Myw2ICsyOTEsOCBAQAogICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmciLCAieG1sbnM6cHl0aG9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vd3d3LnB5dGhvbi5vcmciKQogICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy5weXRob24ub3JnIiwgInB5dGhvbjphYmNhdHRyIiwgImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHhtbC5kb20uTm90Rm91bmRFcnIsIGNoaWxkLnJlbW92ZUF0dHJpYnV0ZU5TLAorICAgICAgICAgICAgImZvbyIsICJodHRwOi8vd3d3LnB5dGhvbi5vcmciKQogICAgICAgICBzZWxmLmNvbmZpcm0obGVuKGNoaWxkLmF0dHJpYnV0ZXMpID09IDIpCiAgICAgICAgIGNoaWxkLnJlbW92ZUF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnB5dGhvbi5vcmciLCAiYWJjYXR0ciIpCiAgICAgICAgIHNlbGYuY29uZmlybShsZW4oY2hpbGQuYXR0cmlidXRlcykgPT0gMSkKQEAgLTMwNCwxMSArMzA0LDIzIEBACiAgICAgICAgIGNoaWxkLnNldEF0dHJpYnV0ZSgic3BhbSIsICJqYW0iKQogICAgICAgICBzZWxmLmNvbmZpcm0obGVuKGNoaWxkLmF0dHJpYnV0ZXMpID09IDEpCiAgICAgICAgIG5vZGUgPSBjaGlsZC5nZXRBdHRyaWJ1dGVOb2RlKCJzcGFtIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoeG1sLmRvbS5Ob3RGb3VuZEVyciwgY2hpbGQucmVtb3ZlQXR0cmlidXRlTm9kZSwKKyAgICAgICAgICAgIE5vbmUpCiAgICAgICAgIGNoaWxkLnJlbW92ZUF0dHJpYnV0ZU5vZGUobm9kZSkKICAgICAgICAgc2VsZi5jb25maXJtKGxlbihjaGlsZC5hdHRyaWJ1dGVzKSA9PSAwCiAgICAgICAgICAgICAgICAgYW5kIGNoaWxkLmdldEF0dHJpYnV0ZU5vZGUoInNwYW0iKSBpcyBOb25lKQorICAgICAgICBkb20yID0gRG9jdW1lbnQoKQorICAgICAgICBjaGlsZDIgPSBkb20yLmFwcGVuZENoaWxkKGRvbS5jcmVhdGVFbGVtZW50KCJmb28iKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoeG1sLmRvbS5Ob3RGb3VuZEVyciwgY2hpbGQucmVtb3ZlQXR0cmlidXRlTm9kZSwKKyAgICAgICAgICAgIG5vZGUpCiAgICAgICAgIGRvbS51bmxpbmsoKQogCisgICAgZGVmIHRlc3RIYXNBdHRyaWJ1dGUoc2VsZik6CisgICAgICAgIGRvbSA9IERvY3VtZW50KCkKKyAgICAgICAgY2hpbGQgPSBkb20uYXBwZW5kQ2hpbGQoZG9tLmNyZWF0ZUVsZW1lbnQoImZvbyIpKQorICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoInNwYW0iLCAiamFtIikKKyAgICAgICAgc2VsZi5jb25maXJtKGNoaWxkLmhhc0F0dHJpYnV0ZSgic3BhbSIpKQorCiAgICAgZGVmIHRlc3RDaGFuZ2VBdHRyKHNlbGYpOgogICAgICAgICBkb20gPSBwYXJzZVN0cmluZygiPGFiYy8+IikKICAgICAgICAgZWwgPSBkb20uZG9jdW1lbnRFbGVtZW50CkBAIC01OTIsNyArNjA0LDEzIEBACiAKICAgICBkZWYgdGVzdEZpcnN0Q2hpbGQoc2VsZik6IHBhc3MKIAotICAgIGRlZiB0ZXN0SGFzQ2hpbGROb2RlcyhzZWxmKTogcGFzcworICAgIGRlZiB0ZXN0SGFzQ2hpbGROb2RlcyhzZWxmKToKKyAgICAgICAgZG9tID0gcGFyc2VTdHJpbmcoIjxkb2M+PGZvby8+PC9kb2M+IikKKyAgICAgICAgZG9jID0gZG9tLmRvY3VtZW50RWxlbWVudAorICAgICAgICBzZWxmLmFzc2VydFRydWUoZG9tLmhhc0NoaWxkTm9kZXMoKSkKKyAgICAgICAgZG9tMiA9IHBhcnNlU3RyaW5nKCI8ZG9jLz4iKQorICAgICAgICBkb2MyID0gZG9tMi5kb2N1bWVudEVsZW1lbnQKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkb2MyLmhhc0NoaWxkTm9kZXMoKSkKIAogICAgIGRlZiBfdGVzdENsb25lRWxlbWVudENvcGllc0F0dHJpYnV0ZXMoc2VsZiwgZTEsIGUyLCB0ZXN0KToKICAgICAgICAgYXR0cnMxID0gZTEuYXR0cmlidXRlcwpAQCAtMTA0MSw0MSArMTA1OSw2IEBACiAgICAgICAgICAgICAgICAgInRlc3QgTm9kZUxpc3QuaXRlbSgpIikKICAgICAgICAgZG9jLnVubGluaygpCiAKLSAgICBkZWYgdGVzdFNBWDJET00oc2VsZik6Ci0gICAgICAgIGZyb20geG1sLmRvbSBpbXBvcnQgcHVsbGRvbQotCi0gICAgICAgIHNheDJkb20gPSBwdWxsZG9tLlNBWDJET00oKQotICAgICAgICBzYXgyZG9tLnN0YXJ0RG9jdW1lbnQoKQotICAgICAgICBzYXgyZG9tLnN0YXJ0RWxlbWVudCgiZG9jIiwge30pCi0gICAgICAgIHNheDJkb20uY2hhcmFjdGVycygidGV4dCIpCi0gICAgICAgIHNheDJkb20uc3RhcnRFbGVtZW50KCJzdWJlbG0iLCB7fSkKLSAgICAgICAgc2F4MmRvbS5jaGFyYWN0ZXJzKCJ0ZXh0IikKLSAgICAgICAgc2F4MmRvbS5lbmRFbGVtZW50KCJzdWJlbG0iKQotICAgICAgICBzYXgyZG9tLmNoYXJhY3RlcnMoInRleHQiKQotICAgICAgICBzYXgyZG9tLmVuZEVsZW1lbnQoImRvYyIpCi0gICAgICAgIHNheDJkb20uZW5kRG9jdW1lbnQoKQotCi0gICAgICAgIGRvYyA9IHNheDJkb20uZG9jdW1lbnQKLSAgICAgICAgcm9vdCA9IGRvYy5kb2N1bWVudEVsZW1lbnQKLSAgICAgICAgKHRleHQxLCBlbG0xLCB0ZXh0MikgPSByb290LmNoaWxkTm9kZXMKLSAgICAgICAgdGV4dDMgPSBlbG0xLmNoaWxkTm9kZXNbMF0KLQotICAgICAgICBzZWxmLmNvbmZpcm0odGV4dDEucHJldmlvdXNTaWJsaW5nIGlzIE5vbmUgYW5kCi0gICAgICAgICAgICAgICAgdGV4dDEubmV4dFNpYmxpbmcgaXMgZWxtMSBhbmQKLSAgICAgICAgICAgICAgICBlbG0xLnByZXZpb3VzU2libGluZyBpcyB0ZXh0MSBhbmQKLSAgICAgICAgICAgICAgICBlbG0xLm5leHRTaWJsaW5nIGlzIHRleHQyIGFuZAotICAgICAgICAgICAgICAgIHRleHQyLnByZXZpb3VzU2libGluZyBpcyBlbG0xIGFuZAotICAgICAgICAgICAgICAgIHRleHQyLm5leHRTaWJsaW5nIGlzIE5vbmUgYW5kCi0gICAgICAgICAgICAgICAgdGV4dDMucHJldmlvdXNTaWJsaW5nIGlzIE5vbmUgYW5kCi0gICAgICAgICAgICAgICAgdGV4dDMubmV4dFNpYmxpbmcgaXMgTm9uZSwgInRlc3RTQVgyRE9NIC0gc2libGluZ3MiKQotCi0gICAgICAgIHNlbGYuY29uZmlybShyb290LnBhcmVudE5vZGUgaXMgZG9jIGFuZAotICAgICAgICAgICAgICAgIHRleHQxLnBhcmVudE5vZGUgaXMgcm9vdCBhbmQKLSAgICAgICAgICAgICAgICBlbG0xLnBhcmVudE5vZGUgaXMgcm9vdCBhbmQKLSAgICAgICAgICAgICAgICB0ZXh0Mi5wYXJlbnROb2RlIGlzIHJvb3QgYW5kCi0gICAgICAgICAgICAgICAgdGV4dDMucGFyZW50Tm9kZSBpcyBlbG0xLCAidGVzdFNBWDJET00gLSBwYXJlbnRzIikKLSAgICAgICAgZG9jLnVubGluaygpCi0KICAgICBkZWYgdGVzdEVuY29kaW5ncyhzZWxmKToKICAgICAgICAgZG9jID0gcGFyc2VTdHJpbmcoJzxmb28+JiN4MjBhYzs8L2Zvbz4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvYy50b3htbCgpLApAQCAtMTA4NCw2ICsxMDY3LDExIEBACiAgICAgICAgICAgICBiJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+PGZvbz5ceGUyXHg4Mlx4YWM8L2Zvbz4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvYy50b3htbCgnaXNvLTg4NTktMTUnKSwKICAgICAgICAgICAgIGInPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMTUiPz48Zm9vPlx4YTQ8L2Zvbz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvYy50b3htbCgndXMtYXNjaWknKSwKKyAgICAgICAgICAgIGInPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXMtYXNjaWkiPz48Zm9vPiYjODM2NDs8L2Zvbz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvYy50b3htbCgndXRmLTE2JyksCisgICAgICAgICAgICAnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTE2Ij8+JworICAgICAgICAgICAgJzxmb28+XHUyMGFjPC9mb28+Jy5lbmNvZGUoJ3V0Zi0xNicpKQogCiAgICAgICAgICMgVmVyaWZ5IHRoYXQgY2hhcmFjdGVyIGRlY29kaW5nIGVycm9ycyByYWlzZSBleGNlcHRpb25zIGluc3RlYWQKICAgICAgICAgIyBvZiBjcmFzaGluZwpAQCAtMTUyMiwxMiArMTUxMCwyMSBAQAogICAgICAgICBkb2MuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUNvbW1lbnQoImZvby0tYmFyIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRvYy50b3htbCkKIAorCiAgICAgZGVmIHRlc3RFbXB0eVhNTE5TVmFsdWUoc2VsZik6CiAgICAgICAgIGRvYyA9IHBhcnNlU3RyaW5nKCI8ZWxlbWVudCB4bWxucz0nJz5cbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxmb28vPlxuPC9lbGVtZW50PiIpCiAgICAgICAgIGRvYzIgPSBwYXJzZVN0cmluZyhkb2MudG94bWwoKSkKICAgICAgICAgc2VsZi5jb25maXJtKGRvYzIubmFtZXNwYWNlVVJJID09IHhtbC5kb20uRU1QVFlfTkFNRVNQQUNFKQogCisgICAgZGVmIHRlc3REb2NSZW1vdmVDaGlsZChzZWxmKToKKyAgICAgICAgZG9jID0gcGFyc2UodHN0ZmlsZSkKKyAgICAgICAgdGl0bGVfdGFnID0gZG9jLmRvY3VtZW50RWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiVElUTEUiKVswXQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyggeG1sLmRvbS5Ob3RGb3VuZEVyciwgZG9jLnJlbW92ZUNoaWxkLCB0aXRsZV90YWcpCisgICAgICAgIG51bV9jaGlsZHJlbl9iZWZvcmUgPSBsZW4oZG9jLmNoaWxkTm9kZXMpCisgICAgICAgIGRvYy5yZW1vdmVDaGlsZChkb2MuY2hpbGROb2Rlc1swXSkKKyAgICAgICAgbnVtX2NoaWxkcmVuX2FmdGVyID0gbGVuKGRvYy5jaGlsZE5vZGVzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobnVtX2NoaWxkcmVuX2FmdGVyID09IG51bV9jaGlsZHJlbl9iZWZvcmUgLSAxKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgcnVuX3VuaXR0ZXN0KE1pbmlkb21UZXN0KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tbWFwLnB5IGIvTGliL3Rlc3QvdGVzdF9tbWFwLnB5CmluZGV4IDQ0MDdjNWMuLmQwNjYzNjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbW1hcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21tYXAucHkKQEAgLTQxNyw2ICs0MTcsMzUgQEAKICAgICAgICAgICAgIG1beF0gPSBiCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1beF0sIGIpCiAKKyAgICBkZWYgdGVzdF9yZWFkX2FsbChzZWxmKToKKyAgICAgICAgbSA9IG1tYXAubW1hcCgtMSwgMTYpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChtLmNsb3NlKQorCisgICAgICAgICMgV2l0aCBubyBwYXJhbWV0ZXJzLCBvciBOb25lIG9yIGEgbmVnYXRpdmUgYXJndW1lbnQsIHJlYWRzIGFsbAorICAgICAgICBtLndyaXRlKGJ5dGVzKHJhbmdlKDE2KSkpCisgICAgICAgIG0uc2VlaygwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmVhZCgpLCBieXRlcyhyYW5nZSgxNikpKQorICAgICAgICBtLnNlZWsoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnJlYWQoKSwgYnl0ZXMocmFuZ2UoOCwgMTYpKSkKKyAgICAgICAgbS5zZWVrKDE2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmVhZCgpLCBiJycpCisgICAgICAgIG0uc2VlaygzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmVhZChOb25lKSwgYnl0ZXMocmFuZ2UoMywgMTYpKSkKKyAgICAgICAgbS5zZWVrKDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZWFkKC0xKSwgYnl0ZXMocmFuZ2UoNCwgMTYpKSkKKyAgICAgICAgbS5zZWVrKDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZWFkKC0yKSwgYnl0ZXMocmFuZ2UoNSwgMTYpKSkKKyAgICAgICAgbS5zZWVrKDkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZWFkKC00MiksIGJ5dGVzKHJhbmdlKDksIDE2KSkpCisKKyAgICBkZWYgdGVzdF9yZWFkX2ludmFsaWRfYXJnKHNlbGYpOgorICAgICAgICBtID0gbW1hcC5tbWFwKC0xLCAxNikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG0uY2xvc2UpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLnJlYWQsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0ucmVhZCwgNS41KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0ucmVhZCwgWzEsIDIsIDNdKQorCiAgICAgZGVmIHRlc3RfZXh0ZW5kZWRfZ2V0c2xpY2Uoc2VsZik6CiAgICAgICAgICMgVGVzdCBleHRlbmRlZCBzbGljaW5nIGJ5IGNvbXBhcmluZyB3aXRoIGxpc3Qgc2xpY2luZy4KICAgICAgICAgcyA9IGJ5dGVzKHJldmVyc2VkKHJhbmdlKDI1NikpKQpAQCAtNTQzLDggKzU3Miw3IEBACiAgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKG1tYXAuZXJyb3IsIEVudmlyb25tZW50RXJyb3IpKQotICAgICAgICBzZWxmLmFzc2VydEluKCJtbWFwLmVycm9yIiwgc3RyKG1tYXAuZXJyb3IpKQorICAgICAgICBzZWxmLmFzc2VydElzKG1tYXAuZXJyb3IsIE9TRXJyb3IpCiAKICAgICBkZWYgdGVzdF9pb19tZXRob2RzKHNlbGYpOgogICAgICAgICBkYXRhID0gYiIwMTIzNDU2Nzg5IgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tb2R1bGUucHkgYi9MaWIvdGVzdC90ZXN0X21vZHVsZS5weQppbmRleCAxNTgzNmNhLi5lNWEyNTI1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21vZHVsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X21vZHVsZS5weQpAQCAtNSw2ICs1LDE1IEBACiBpbXBvcnQgc3lzCiBNb2R1bGVUeXBlID0gdHlwZShzeXMpCiAKK2NsYXNzIEZ1bGxMb2FkZXI6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG1vZHVsZV9yZXByKGNscywgbSk6CisgICAgICAgIHJldHVybiAiPG1vZHVsZSAne30nIChjcmFmdGVkKT4iLmZvcm1hdChtLl9fbmFtZV9fKQorCitjbGFzcyBCYXJlTG9hZGVyOgorICAgIHBhc3MKKworCiBjbGFzcyBNb2R1bGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfdW5pbml0aWFsaXplZChzZWxmKToKICAgICAgICAgIyBBbiB1bmluaXRpYWxpemVkIG1vZHVsZSBoYXMgbm8gX19kaWN0X18gb3IgX19uYW1lX18sCkBAIC03MCwxNiArNzksMTAwIEBACiAgICAgICAgIG0gPSBNb2R1bGVUeXBlKCJmb28iKQogICAgICAgICBtLmRlc3Ryb3llZCA9IGRlc3Ryb3llZAogICAgICAgICBzID0gIiIiY2xhc3MgQToKLSAgICBkZWYgX19kZWxfXyhzZWxmLCBkZXN0cm95ZWQ9ZGVzdHJveWVkKToKLSAgICAgICAgZGVzdHJveWVkLmFwcGVuZCgxKQotYSA9IEEoKSIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsKToKKyAgICAgICAgc2VsZi5sID0gbAorICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICBzZWxmLmwuYXBwZW5kKDEpCithID0gQShkZXN0cm95ZWQpIiIiCiAgICAgICAgIGV4ZWMocywgbS5fX2RpY3RfXykKICAgICAgICAgZGVsIG0KICAgICAgICAgZ2NfY29sbGVjdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVzdHJveWVkLCBbMV0pCiAKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl9taW5pbWFsKHNlbGYpOgorICAgICAgICAjIHJlcHJzIHdoZW4gbW9kdWxlcyBoYXZlIG5vIF9fZmlsZV9fLCBfX25hbWVfXywgb3IgX19sb2FkZXJfXworICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgZGVsIG0uX19uYW1lX18KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0pLCAiPG1vZHVsZSAnPyc+IikKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3dpdGhfbmFtZShzZWxmKToKKyAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgIjxtb2R1bGUgJ2Zvbyc+IikKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3dpdGhfbmFtZV9hbmRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIG0gPSBNb2R1bGVUeXBlKCdmb28nKQorICAgICAgICBtLl9fZmlsZV9fID0gJy90bXAvZm9vLnB5JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksICI8bW9kdWxlICdmb28nIGZyb20gJy90bXAvZm9vLnB5Jz4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfd2l0aF9maWxlbmFtZV9vbmx5KHNlbGYpOgorICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgZGVsIG0uX19uYW1lX18KKyAgICAgICAgbS5fX2ZpbGVfXyA9ICcvdG1wL2Zvby5weScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0pLCAiPG1vZHVsZSAnPycgZnJvbSAnL3RtcC9mb28ucHknPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl93aXRoX2JhcmVfbG9hZGVyX2J1dF9ub19uYW1lKHNlbGYpOgorICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgZGVsIG0uX19uYW1lX18KKyAgICAgICAgIyBZZXMsIGEgY2xhc3Mgbm90IGFuIGluc3RhbmNlLgorICAgICAgICBtLl9fbG9hZGVyX18gPSBCYXJlTG9hZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICByZXByKG0pLCAiPG1vZHVsZSAnPycgKDxjbGFzcyAndGVzdC50ZXN0X21vZHVsZS5CYXJlTG9hZGVyJz4pPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl93aXRoX2Z1bGxfbG9hZGVyX2J1dF9ub19uYW1lKHNlbGYpOgorICAgICAgICAjIG0uX19sb2FkZXJfXy5tb2R1bGVfcmVwcigpIHdpbGwgZmFpbCBiZWNhdXNlIHRoZSBtb2R1bGUgaGFzIG5vCisgICAgICAgICMgbS5fX25hbWVfXy4gIFRoaXMgZXhjZXB0aW9uIHdpbGwgZ2V0IHN1cHByZXNzZWQgYW5kIGluc3RlYWQgdGhlCisgICAgICAgICMgbG9hZGVyJ3MgcmVwciB3aWxsIGJlIHVzZWQuCisgICAgICAgIG0gPSBNb2R1bGVUeXBlKCdmb28nKQorICAgICAgICBkZWwgbS5fX25hbWVfXworICAgICAgICAjIFllcywgYSBjbGFzcyBub3QgYW4gaW5zdGFuY2UuCisgICAgICAgIG0uX19sb2FkZXJfXyA9IEZ1bGxMb2FkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlcHIobSksICI8bW9kdWxlICc/JyAoPGNsYXNzICd0ZXN0LnRlc3RfbW9kdWxlLkZ1bGxMb2FkZXInPik+IikKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3dpdGhfYmFyZV9sb2FkZXIoc2VsZik6CisgICAgICAgIG0gPSBNb2R1bGVUeXBlKCdmb28nKQorICAgICAgICAjIFllcywgYSBjbGFzcyBub3QgYW4gaW5zdGFuY2UuCisgICAgICAgIG0uX19sb2FkZXJfXyA9IEJhcmVMb2FkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlcHIobSksICI8bW9kdWxlICdmb28nICg8Y2xhc3MgJ3Rlc3QudGVzdF9tb2R1bGUuQmFyZUxvYWRlcic+KT4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfd2l0aF9mdWxsX2xvYWRlcihzZWxmKToKKyAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCisgICAgICAgICMgWWVzLCBhIGNsYXNzIG5vdCBhbiBpbnN0YW5jZS4KKyAgICAgICAgbS5fX2xvYWRlcl9fID0gRnVsbExvYWRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcmVwcihtKSwgIjxtb2R1bGUgJ2ZvbycgKGNyYWZ0ZWQpPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl93aXRoX2JhcmVfbG9hZGVyX2FuZF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgIyBCZWNhdXNlIHRoZSBsb2FkZXIgaGFzIG5vIG1vZHVsZV9yZXByKCksIHVzZSB0aGUgZmlsZSBuYW1lLgorICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgIyBZZXMsIGEgY2xhc3Mgbm90IGFuIGluc3RhbmNlLgorICAgICAgICBtLl9fbG9hZGVyX18gPSBCYXJlTG9hZGVyCisgICAgICAgIG0uX19maWxlX18gPSAnL3RtcC9mb28ucHknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgIjxtb2R1bGUgJ2ZvbycgZnJvbSAnL3RtcC9mb28ucHknPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl93aXRoX2Z1bGxfbG9hZGVyX2FuZF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgIyBFdmVuIHRob3VnaCB0aGUgbW9kdWxlIGhhcyBhbiBfX2ZpbGVfXywgdXNlIF9fbG9hZGVyX18ubW9kdWxlX3JlcHIoKQorICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgIyBZZXMsIGEgY2xhc3Mgbm90IGFuIGluc3RhbmNlLgorICAgICAgICBtLl9fbG9hZGVyX18gPSBGdWxsTG9hZGVyCisgICAgICAgIG0uX19maWxlX18gPSAnL3RtcC9mb28ucHknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgIjxtb2R1bGUgJ2ZvbycgKGNyYWZ0ZWQpPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl9idWlsdGluKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoc3lzKSwgIjxtb2R1bGUgJ3N5cycgKGJ1aWx0LWluKT4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfc291cmNlKHNlbGYpOgorICAgICAgICByID0gcmVwcih1bml0dGVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyWzoyNV0sICI8bW9kdWxlICd1bml0dGVzdCcgZnJvbSAnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyWy0xMzpdLCAiX19pbml0X18ucHknPiIpCisKKyAgICAjIGZyb3plbiBhbmQgbmFtZXNwYWNlIG1vZHVsZSByZXBycyBhcmUgdGVzdGVkIGluIGltcG9ydGxpYi4KKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgcnVuX3VuaXR0ZXN0KE1vZHVsZVRlc3RzKQogCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbW9kdWxlZmluZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9tb2R1bGVmaW5kZXIucHkKaW5kZXggYTE4NDIxNy4uNTNlYTIzMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tb2R1bGVmaW5kZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tb2R1bGVmaW5kZXIucHkKQEAgLTEsNyArMSw3IEBACi1pbXBvcnQgX19mdXR1cmVfXwogaW1wb3J0IG9zCitpbXBvcnQgZXJybm8KK2ltcG9ydCBzaHV0aWwKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGRpc3R1dGlscy5kaXJfdXRpbAogaW1wb3J0IHRlbXBmaWxlCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtOSw3ICs5LDcgQEAKIGltcG9ydCBtb2R1bGVmaW5kZXIKIAogVEVTVF9ESVIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKLVRFU1RfUEFUSCA9IFtURVNUX0RJUiwgb3MucGF0aC5kaXJuYW1lKF9fZnV0dXJlX18uX19maWxlX18pXQorVEVTVF9QQVRIID0gW1RFU1RfRElSLCBvcy5wYXRoLmRpcm5hbWUodGVtcGZpbGUuX19maWxlX18pXQogCiAjIEVhY2ggdGVzdCBkZXNjcmlwdGlvbiBpcyBhIGxpc3Qgb2YgNSBpdGVtczoKICMKQEAgLTE5NiwxMiArMTk2LDI5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gLiBpbXBvcnQgYmFyCiAiIiJdCiAKK3JlbGF0aXZlX2ltcG9ydF90ZXN0XzQgPSBbCisgICAgImEubW9kdWxlIiwKKyAgICBbImEiLCAiYS5tb2R1bGUiXSwKKyAgICBbXSwKKyAgICBbXSwKKyAgICAiIiJcCithL19faW5pdF9fLnB5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZiBmb28oKTogcGFzcworYS9tb2R1bGUucHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAuIGltcG9ydCAqCisiIiJdCisKKwogZGVmIG9wZW5fZmlsZShwYXRoKToKLSAgICAjI3ByaW50ICIjIiwgb3MucGF0aC5hYnNwYXRoKHBhdGgpCiAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZShwYXRoKQotICAgIGRpc3R1dGlscy5kaXJfdXRpbC5ta3BhdGgoZGlybmFtZSkKKyAgICB0cnk6CisgICAgICAgIG9zLm1ha2VkaXJzKGRpcm5hbWUpCisgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FRVhJU1Q6CisgICAgICAgICAgICByYWlzZQogICAgIHJldHVybiBvcGVuKHBhdGgsICJ3IikKIAorCiBkZWYgY3JlYXRlX3BhY2thZ2Uoc291cmNlKToKICAgICBvZmkgPSBOb25lCiAgICAgdHJ5OgpAQCAtMjE2LDYgKzIzMyw3IEBACiAgICAgICAgIGlmIG9maToKICAgICAgICAgICAgIG9maS5jbG9zZSgpCiAKKwogY2xhc3MgTW9kdWxlRmluZGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIF9kb190ZXN0KHNlbGYsIGluZm8sIHJlcG9ydD1GYWxzZSk6CiAgICAgICAgIGltcG9ydF90aGlzLCBtb2R1bGVzLCBtaXNzaW5nLCBtYXliZV9taXNzaW5nLCBzb3VyY2UgPSBpbmZvCkBAIC0yMzQsMTkgKzI1MiwxNyBAQAogIyMgICAgICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2s7IHRyYWNlYmFjay5wcmludF9leGMoKQogIyMgICAgICAgICAgICAgICAgc3lzLnBhdGggPSBvcGF0aAogIyMgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBtb2R1bGVzID0gc2V0KG1vZHVsZXMpCi0gICAgICAgICAgICBmb3VuZCA9IHNldChtZi5tb2R1bGVzLmtleXMoKSkKLSAgICAgICAgICAgIG1vcmUgPSBsaXN0KGZvdW5kIC0gbW9kdWxlcykKLSAgICAgICAgICAgIGxlc3MgPSBsaXN0KG1vZHVsZXMgLSBmb3VuZCkKKyAgICAgICAgICAgIG1vZHVsZXMgPSBzb3J0ZWQoc2V0KG1vZHVsZXMpKQorICAgICAgICAgICAgZm91bmQgPSBzb3J0ZWQobWYubW9kdWxlcykKICAgICAgICAgICAgICMgY2hlY2sgaWYgd2UgZm91bmQgd2hhdCB3ZSBleHBlY3RlZCwgbm90IG1vcmUsIG5vdCBsZXNzCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChtb3JlLCBsZXNzKSwgKFtdLCBbXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvdW5kLCBtb2R1bGVzKQogCiAgICAgICAgICAgICAjIGNoZWNrIGZvciBtaXNzaW5nIGFuZCBtYXliZSBtaXNzaW5nIG1vZHVsZXMKICAgICAgICAgICAgIGJhZCwgbWF5YmUgPSBtZi5hbnlfbWlzc2luZ19tYXliZSgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhZCwgbWlzc2luZykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF5YmUsIG1heWJlX21pc3NpbmcpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBkaXN0dXRpbHMuZGlyX3V0aWwucmVtb3ZlX3RyZWUoVEVTVF9ESVIpCisgICAgICAgICAgICBzaHV0aWwucm10cmVlKFRFU1RfRElSKQogCiAgICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKICAgICAgICAgc2VsZi5fZG9fdGVzdChwYWNrYWdlX3Rlc3QpCkBAIC0yNTQsMjUgKzI3MCwyNiBAQAogICAgIGRlZiB0ZXN0X21heWJlKHNlbGYpOgogICAgICAgICBzZWxmLl9kb190ZXN0KG1heWJlX3Rlc3QpCiAKLSAgICBpZiBnZXRhdHRyKF9fZnV0dXJlX18sICJhYnNvbHV0ZV9pbXBvcnQiLCBOb25lKToKKyAgICBkZWYgdGVzdF9tYXliZV9uZXcoc2VsZik6CisgICAgICAgIHNlbGYuX2RvX3Rlc3QobWF5YmVfdGVzdF9uZXcpCiAKLSAgICAgICAgZGVmIHRlc3RfbWF5YmVfbmV3KHNlbGYpOgotICAgICAgICAgICAgc2VsZi5fZG9fdGVzdChtYXliZV90ZXN0X25ldykKKyAgICBkZWYgdGVzdF9hYnNvbHV0ZV9pbXBvcnRzKHNlbGYpOgorICAgICAgICBzZWxmLl9kb190ZXN0KGFic29sdXRlX2ltcG9ydF90ZXN0KQogCi0gICAgICAgIGRlZiB0ZXN0X2Fic29sdXRlX2ltcG9ydHMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLl9kb190ZXN0KGFic29sdXRlX2ltcG9ydF90ZXN0KQorICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydHMoc2VsZik6CisgICAgICAgIHNlbGYuX2RvX3Rlc3QocmVsYXRpdmVfaW1wb3J0X3Rlc3QpCiAKLSAgICAgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0cyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYuX2RvX3Rlc3QocmVsYXRpdmVfaW1wb3J0X3Rlc3QpCisgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0c18yKHNlbGYpOgorICAgICAgICBzZWxmLl9kb190ZXN0KHJlbGF0aXZlX2ltcG9ydF90ZXN0XzIpCiAKLSAgICAgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0c18yKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5fZG9fdGVzdChyZWxhdGl2ZV9pbXBvcnRfdGVzdF8yKQorICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydHNfMyhzZWxmKToKKyAgICAgICAgc2VsZi5fZG9fdGVzdChyZWxhdGl2ZV9pbXBvcnRfdGVzdF8zKQogCi0gICAgICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydHNfMyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYuX2RvX3Rlc3QocmVsYXRpdmVfaW1wb3J0X3Rlc3RfMykKKyAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRzXzQoc2VsZik6CisgICAgICAgIHNlbGYuX2RvX3Rlc3QocmVsYXRpdmVfaW1wb3J0X3Rlc3RfNCkKKwogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgZGlzdHV0aWxzLmxvZy5zZXRfdGhyZXNob2xkKGRpc3R1dGlscy5sb2cuV0FSTikKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChNb2R1bGVGaW5kZXJUZXN0KQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weSBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWMucHkKaW5kZXggODZjNjhkYy4uZmViN2JkNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjLnB5CkBAIC0yNDcsMjAgKzI0NywxNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhbnkoeCA+IDB4ODAgZm9yIHggaW4gZSkpCiAKICAgICBkZWYgdGVzdF9idWcxNTcyODMyKHNlbGYpOgotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA+PSAweDEwMDAwOgotICAgICAgICAgICAgbXl1bmljaHIgPSBjaHIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG15dW5pY2hyID0gbGFtYmRhIHg6IGNocigweEQ3QzArKHg+PjEwKSkgKyBjaHIoMHhEQzAwKyh4JjB4M0ZGKSkKLQogICAgICAgICBmb3IgeCBpbiByYW5nZSgweDEwMDAwLCAweDExMDAwMCk6CiAgICAgICAgICAgICAjIEFueSBJU08gMjAyMiBjb2RlYyB3aWxsIGNhdXNlIHRoZSBzZWdmYXVsdAotICAgICAgICAgICAgbXl1bmljaHIoeCkuZW5jb2RlKCdpc29fMjAyMl9qcCcsICdpZ25vcmUnKQorICAgICAgICAgICAgY2hyKHgpLmVuY29kZSgnaXNvXzIwMjJfanAnLCAnaWdub3JlJykKIAogY2xhc3MgVGVzdFN0YXRlZnVsKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0ZXh0ID0gJ1x1NEUxNlx1NEUxNicKICAgICBlbmNvZGluZyA9ICdpc28tMjAyMi1qcCcKICAgICBleHBlY3RlZCA9IGInXHgxYiRCQCRAJCcKLSAgICBleHBlY3RlZF9yZXNldCA9IGInXHgxYiRCQCRAJFx4MWIoQicKKyAgICByZXNldCA9IGInXHgxYihCJworICAgIGV4cGVjdGVkX3Jlc2V0ID0gZXhwZWN0ZWQgKyByZXNldAogCiAgICAgZGVmIHRlc3RfZW5jb2RlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGV4dC5lbmNvZGUoc2VsZi5lbmNvZGluZyksIHNlbGYuZXhwZWN0ZWRfcmVzZXQpCkBAIC0yNzEsNiArMjY3LDggQEAKICAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlKGNoYXIpCiAgICAgICAgICAgICBmb3IgY2hhciBpbiBzZWxmLnRleHQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCBzZWxmLmV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZXIuZW5jb2RlKCcnLCBmaW5hbD1UcnVlKSwgc2VsZi5yZXNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVyLmVuY29kZSgnJywgZmluYWw9VHJ1ZSksIGInJykKIAogICAgIGRlZiB0ZXN0X2luY3JlbWVudGFsZW5jb2Rlcl9maW5hbChzZWxmKToKICAgICAgICAgZW5jb2RlciA9IGNvZGVjcy5nZXRpbmNyZW1lbnRhbGVuY29kZXIoc2VsZi5lbmNvZGluZykoKQpAQCAtMjc5LDEyICsyNzcsMTQgQEAKICAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlKGNoYXIsIGluZGV4ID09IGxhc3RfaW5kZXgpCiAgICAgICAgICAgICBmb3IgaW5kZXgsIGNoYXIgaW4gZW51bWVyYXRlKHNlbGYudGV4dCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCBzZWxmLmV4cGVjdGVkX3Jlc2V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZXIuZW5jb2RlKCcnLCBmaW5hbD1UcnVlKSwgYicnKQogCiBjbGFzcyBUZXN0SFpTdGF0ZWZ1bChUZXN0U3RhdGVmdWwpOgogICAgIHRleHQgPSAnXHU4MDRhXHU4MDRhJwogICAgIGVuY29kaW5nID0gJ2h6JwogICAgIGV4cGVjdGVkID0gYid+e0FEQUQnCi0gICAgZXhwZWN0ZWRfcmVzZXQgPSBiJ357QURBRH59JworICAgIHJlc2V0ID0gYid+fScKKyAgICBleHBlY3RlZF9yZXNldCA9IGV4cGVjdGVkICsgcmVzZXQKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkgYi9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZy5weQppbmRleCAwNWZiYTdmLi4zZmIwN2Y2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZy5weQpAQCAtOCw2ICs4LDcgQEAKIGltcG9ydCBxdWV1ZSBhcyBweXF1ZXVlCiBpbXBvcnQgdGltZQogaW1wb3J0IGlvCitpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBnYwpAQCAtMTcsNiArMTgsNyBAQAogaW1wb3J0IHNvY2tldAogaW1wb3J0IHJhbmRvbQogaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBzdHJ1Y3QKIGltcG9ydCB0ZXN0LnN1cHBvcnQKIGltcG9ydCB0ZXN0LnNjcmlwdF9oZWxwZXIKIApAQCAtODQsNiArODYsMTMgQEAKIAogV0lOMzIgPSAoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIpCiAKK2Zyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IHdhaXQKKworZGVmIHdhaXRfZm9yX2hhbmRsZShoYW5kbGUsIHRpbWVvdXQpOgorICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmUgYW5kIHRpbWVvdXQgPCAwLjA6CisgICAgICAgIHRpbWVvdXQgPSBOb25lCisgICAgcmV0dXJuIHdhaXQoW2hhbmRsZV0sIHRpbWVvdXQpCisKIHRyeToKICAgICBNQVhGRCA9IG9zLnN5c2NvbmYoIlNDX09QRU5fTUFYIikKIGV4Y2VwdDoKQEAgLTE5Nyw2ICsyMDYsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdXJyZW50LmlkZW50LCBvcy5nZXRwaWQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdXJyZW50LmV4aXRjb2RlLCBOb25lKQogCisgICAgZGVmIHRlc3RfZGFlbW9uX2FyZ3VtZW50KHNlbGYpOgorICAgICAgICBpZiBzZWxmLlRZUEUgPT0gInRocmVhZHMiOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBCeSBkZWZhdWx0IHVzZXMgdGhlIGN1cnJlbnQgcHJvY2VzcydzIGRhZW1vbiBmbGFnLgorICAgICAgICBwcm9jMCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fdGVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm9jMC5kYWVtb24sIHNlbGYuY3VycmVudF9wcm9jZXNzKCkuZGFlbW9uKQorICAgICAgICBwcm9jMSA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fdGVzdCwgZGFlbW9uPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcm9jMS5kYWVtb24pCisgICAgICAgIHByb2MyID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl90ZXN0LCBkYWVtb249RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocHJvYzIuZGFlbW9uKQorCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF90ZXN0KGNscywgcSwgKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgIGN1cnJlbnQgPSBjbHMuY3VycmVudF9wcm9jZXNzKCkKQEAgLTI2Miw5ICsyODMsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbihwLCBzZWxmLmFjdGl2ZV9jaGlsZHJlbigpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZXhpdGNvZGUsIE5vbmUpCiAKKyAgICAgICAgam9pbiA9IFRpbWluZ1dyYXBwZXIocC5qb2luKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoam9pbigwKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUaW1pbmdBbG1vc3RFcXVhbChqb2luLmVsYXBzZWQsIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmlzX2FsaXZlKCksIFRydWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqb2luKC0xKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUaW1pbmdBbG1vc3RFcXVhbChqb2luLmVsYXBzZWQsIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmlzX2FsaXZlKCksIFRydWUpCisKICAgICAgICAgcC50ZXJtaW5hdGUoKQogCi0gICAgICAgIGpvaW4gPSBUaW1pbmdXcmFwcGVyKHAuam9pbikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqb2luKCksIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0VGltaW5nQWxtb3N0RXF1YWwoam9pbi5lbGFwc2VkLCAwLjApCiAKQEAgLTMyOSw2ICszNTksMjYgQEAKICAgICAgICAgICAgIF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGV4cGVjdGVkKQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X3NlbnRpbmVsKGNscywgZXZlbnQpOgorICAgICAgICBldmVudC53YWl0KDEwLjApCisKKyAgICBkZWYgdGVzdF9zZW50aW5lbChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5UWVBFID09ICJ0aHJlYWRzIjoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBldmVudCA9IHNlbGYuRXZlbnQoKQorICAgICAgICBwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl90ZXN0X3NlbnRpbmVsLCBhcmdzPShldmVudCwpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgcC5zZW50aW5lbAorICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuam9pbikKKyAgICAgICAgc2VudGluZWwgPSBwLnNlbnRpbmVsCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZW50aW5lbCwgaW50KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHdhaXRfZm9yX2hhbmRsZShzZW50aW5lbCwgdGltZW91dD0wLjApKQorICAgICAgICBldmVudC5zZXQoKQorICAgICAgICBwLmpvaW4oKQorICAgICAgICBzZWxmLmFzc2VydFRydWUod2FpdF9mb3JfaGFuZGxlKHNlbnRpbmVsLCB0aW1lb3V0PURFTFRBKSkKKwogIwogIwogIwpAQCAtODY4LDYgKzkxOCwxMDQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIEZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydFRpbWluZ0FsbW9zdEVxdWFsKHdhaXQuZWxhcHNlZCwgVElNRU9VVDEpCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3Rfd2FpdGZvcl9mKGNscywgY29uZCwgc3RhdGUpOgorICAgICAgICB3aXRoIGNvbmQ6CisgICAgICAgICAgICBzdGF0ZS52YWx1ZSA9IDAKKyAgICAgICAgICAgIGNvbmQubm90aWZ5KCkKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbmQud2FpdF9mb3IobGFtYmRhIDogc3RhdGUudmFsdWU9PTQpCisgICAgICAgICAgICBpZiBub3QgcmVzdWx0IG9yIHN0YXRlLnZhbHVlICE9IDQ6CisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKEhBU19TSEFSRURDVFlQRVMsICduZWVkcyBzaGFyZWRjdHlwZXMnKQorICAgIGRlZiB0ZXN0X3dhaXRmb3Ioc2VsZik6CisgICAgICAgICMgYmFzZWQgb24gdGVzdCBpbiB0ZXN0L2xvY2tfdGVzdHMucHkKKyAgICAgICAgY29uZCA9IHNlbGYuQ29uZGl0aW9uKCkKKyAgICAgICAgc3RhdGUgPSBzZWxmLlZhbHVlKCdpJywgLTEpCisKKyAgICAgICAgcCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fdGVzdF93YWl0Zm9yX2YsIGFyZ3M9KGNvbmQsIHN0YXRlKSkKKyAgICAgICAgcC5kYWVtb24gPSBUcnVlCisgICAgICAgIHAuc3RhcnQoKQorCisgICAgICAgIHdpdGggY29uZDoKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbmQud2FpdF9mb3IobGFtYmRhIDogc3RhdGUudmFsdWU9PTApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzdWx0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0ZS52YWx1ZSwgMCkKKworICAgICAgICBmb3IgaSBpbiByYW5nZSg0KToKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMSkKKyAgICAgICAgICAgIHdpdGggY29uZDoKKyAgICAgICAgICAgICAgICBzdGF0ZS52YWx1ZSArPSAxCisgICAgICAgICAgICAgICAgY29uZC5ub3RpZnkoKQorCisgICAgICAgIHAuam9pbig1KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHAuaXNfYWxpdmUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmV4aXRjb2RlLCAwKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X3dhaXRmb3JfdGltZW91dF9mKGNscywgY29uZCwgc3RhdGUsIHN1Y2Nlc3MsIHNlbSk6CisgICAgICAgIHNlbS5yZWxlYXNlKCkKKyAgICAgICAgd2l0aCBjb25kOgorICAgICAgICAgICAgZXhwZWN0ZWQgPSAwLjEKKyAgICAgICAgICAgIGR0ID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbmQud2FpdF9mb3IobGFtYmRhIDogc3RhdGUudmFsdWU9PTQsIHRpbWVvdXQ9ZXhwZWN0ZWQpCisgICAgICAgICAgICBkdCA9IHRpbWUudGltZSgpIC0gZHQKKyAgICAgICAgICAgICMgYm9ycm93IGxvZ2ljIGluIGFzc2VydFRpbWVvdXQoKSBmcm9tIHRlc3QvbG9ja190ZXN0cy5weQorICAgICAgICAgICAgaWYgbm90IHJlc3VsdCBhbmQgZXhwZWN0ZWQgKiAwLjYgPCBkdCA8IGV4cGVjdGVkICogMTAuMDoKKyAgICAgICAgICAgICAgICBzdWNjZXNzLnZhbHVlID0gVHJ1ZQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFTX1NIQVJFRENUWVBFUywgJ25lZWRzIHNoYXJlZGN0eXBlcycpCisgICAgZGVmIHRlc3Rfd2FpdGZvcl90aW1lb3V0KHNlbGYpOgorICAgICAgICAjIGJhc2VkIG9uIHRlc3QgaW4gdGVzdC9sb2NrX3Rlc3RzLnB5CisgICAgICAgIGNvbmQgPSBzZWxmLkNvbmRpdGlvbigpCisgICAgICAgIHN0YXRlID0gc2VsZi5WYWx1ZSgnaScsIDApCisgICAgICAgIHN1Y2Nlc3MgPSBzZWxmLlZhbHVlKCdpJywgRmFsc2UpCisgICAgICAgIHNlbSA9IHNlbGYuU2VtYXBob3JlKDApCisKKyAgICAgICAgcCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fdGVzdF93YWl0Zm9yX3RpbWVvdXRfZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShjb25kLCBzdGF0ZSwgc3VjY2Vzcywgc2VtKSkKKyAgICAgICAgcC5kYWVtb24gPSBUcnVlCisgICAgICAgIHAuc3RhcnQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VtLmFjcXVpcmUodGltZW91dD0xMCkpCisKKyAgICAgICAgIyBPbmx5IGluY3JlbWVudCAzIHRpbWVzLCBzbyBzdGF0ZSA9PSA0IGlzIG5ldmVyIHJlYWNoZWQuCisgICAgICAgIGZvciBpIGluIHJhbmdlKDMpOgorICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAxKQorICAgICAgICAgICAgd2l0aCBjb25kOgorICAgICAgICAgICAgICAgIHN0YXRlLnZhbHVlICs9IDEKKyAgICAgICAgICAgICAgICBjb25kLm5vdGlmeSgpCisKKyAgICAgICAgcC5qb2luKDUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdWNjZXNzLnZhbHVlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X3dhaXRfcmVzdWx0KGNscywgYywgcGlkKToKKyAgICAgICAgd2l0aCBjOgorICAgICAgICAgICAgYy5ub3RpZnkoKQorICAgICAgICB0aW1lLnNsZWVwKDEpCisgICAgICAgIGlmIHBpZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwuU0lHSU5UKQorCisgICAgZGVmIHRlc3Rfd2FpdF9yZXN1bHQoc2VsZik6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZiwgUHJvY2Vzc2VzTWl4aW4pIGFuZCBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKKyAgICAgICAgICAgIHBpZCA9IG9zLmdldHBpZCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwaWQgPSBOb25lCisKKyAgICAgICAgYyA9IHNlbGYuQ29uZGl0aW9uKCkKKyAgICAgICAgd2l0aCBjOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLndhaXQoMCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMud2FpdCgwLjEpKQorCisgICAgICAgICAgICBwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl90ZXN0X3dhaXRfcmVzdWx0LCBhcmdzPShjLCBwaWQpKQorICAgICAgICAgICAgcC5zdGFydCgpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLndhaXQoMTApKQorICAgICAgICAgICAgaWYgcGlkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleWJvYXJkSW50ZXJydXB0LCBjLndhaXQsIDEwKQorCisgICAgICAgICAgICBwLmpvaW4oKQorCiAKIGNsYXNzIF9UZXN0RXZlbnQoQmFzZVRlc3RDYXNlKToKIApAQCAtOTExLDYgKzEwNTksMzQwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2FpdCgpLCBUcnVlKQogCiAjCisjIFRlc3RzIGZvciBCYXJyaWVyIC0gYWRhcHRlZCBmcm9tIHRlc3RzIGluIHRlc3QvbG9ja190ZXN0cy5weQorIworCisjIE1hbnkgb2YgdGhlIHRlc3RzIGZvciB0aHJlYWRpbmcuQmFycmllciB1c2UgYSBsaXN0IGFzIGFuIGF0b21pYworIyBjb3VudGVyOiBhIHZhbHVlIGlzIGFwcGVuZGVkIHRvIGluY3JlbWVudCB0aGUgY291bnRlciwgYW5kIHRoZQorIyBsZW5ndGggb2YgdGhlIGxpc3QgZ2l2ZXMgdGhlIHZhbHVlLiAgV2UgdXNlIHRoZSBjbGFzcyBEdW1teUxpc3QKKyMgZm9yIHRoZSBzYW1lIHB1cnBvc2UuCisKK2NsYXNzIF9EdW1teUxpc3Qob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgd3JhcHBlciA9IG11bHRpcHJvY2Vzc2luZy5oZWFwLkJ1ZmZlcldyYXBwZXIoc3RydWN0LmNhbGNzaXplKCdpJykpCisgICAgICAgIGxvY2sgPSBtdWx0aXByb2Nlc3NpbmcuTG9jaygpCisgICAgICAgIHNlbGYuX19zZXRzdGF0ZV9fKCh3cmFwcGVyLCBsb2NrKSkKKyAgICAgICAgc2VsZi5fbGVuZ3RoYnVmWzBdID0gMAorCisgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CisgICAgICAgIChzZWxmLl93cmFwcGVyLCBzZWxmLl9sb2NrKSA9IHN0YXRlCisgICAgICAgIHNlbGYuX2xlbmd0aGJ1ZiA9IHNlbGYuX3dyYXBwZXIuY3JlYXRlX21lbW9yeXZpZXcoKS5jYXN0KCdpJykKKworICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CisgICAgICAgIHJldHVybiAoc2VsZi5fd3JhcHBlciwgc2VsZi5fbG9jaykKKworICAgIGRlZiBhcHBlbmQoc2VsZiwgXyk6CisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHNlbGYuX2xlbmd0aGJ1ZlswXSArPSAxCisKKyAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2xlbmd0aGJ1ZlswXQorCitkZWYgX3dhaXQoKToKKyAgICAjIEEgY3J1ZGUgd2FpdC95aWVsZCBmdW5jdGlvbiBub3QgcmVseWluZyBvbiBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcy4KKyAgICB0aW1lLnNsZWVwKDAuMDEpCisKKworY2xhc3MgQnVuY2gob2JqZWN0KToKKyAgICAiIiIKKyAgICBBIGJ1bmNoIG9mIHRocmVhZHMuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWVzcGFjZSwgZiwgYXJncywgbiwgd2FpdF9iZWZvcmVfZXhpdD1GYWxzZSk6CisgICAgICAgICIiIgorICAgICAgICBDb25zdHJ1Y3QgYSBidW5jaCBvZiBgbmAgdGhyZWFkcyBydW5uaW5nIHRoZSBzYW1lIGZ1bmN0aW9uIGBmYC4KKyAgICAgICAgSWYgYHdhaXRfYmVmb3JlX2V4aXRgIGlzIFRydWUsIHRoZSB0aHJlYWRzIHdvbid0IHRlcm1pbmF0ZSB1bnRpbAorICAgICAgICBkb19maW5pc2goKSBpcyBjYWxsZWQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmYgPSBmCisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKKyAgICAgICAgc2VsZi5uID0gbgorICAgICAgICBzZWxmLnN0YXJ0ZWQgPSBuYW1lc3BhY2UuRHVtbXlMaXN0KCkKKyAgICAgICAgc2VsZi5maW5pc2hlZCA9IG5hbWVzcGFjZS5EdW1teUxpc3QoKQorICAgICAgICBzZWxmLl9jYW5fZXhpdCA9IG5hbWVzcGFjZS5FdmVudCgpCisgICAgICAgIGlmIG5vdCB3YWl0X2JlZm9yZV9leGl0OgorICAgICAgICAgICAgc2VsZi5fY2FuX2V4aXQuc2V0KCkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6CisgICAgICAgICAgICBwID0gbmFtZXNwYWNlLlByb2Nlc3ModGFyZ2V0PXNlbGYudGFzaykKKyAgICAgICAgICAgIHAuZGFlbW9uID0gVHJ1ZQorICAgICAgICAgICAgcC5zdGFydCgpCisKKyAgICBkZWYgdGFzayhzZWxmKToKKyAgICAgICAgcGlkID0gb3MuZ2V0cGlkKCkKKyAgICAgICAgc2VsZi5zdGFydGVkLmFwcGVuZChwaWQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuZigqc2VsZi5hcmdzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5maW5pc2hlZC5hcHBlbmQocGlkKQorICAgICAgICAgICAgc2VsZi5fY2FuX2V4aXQud2FpdCgzMCkKKyAgICAgICAgICAgIGFzc2VydCBzZWxmLl9jYW5fZXhpdC5pc19zZXQoKQorCisgICAgZGVmIHdhaXRfZm9yX3N0YXJ0ZWQoc2VsZik6CisgICAgICAgIHdoaWxlIGxlbihzZWxmLnN0YXJ0ZWQpIDwgc2VsZi5uOgorICAgICAgICAgICAgX3dhaXQoKQorCisgICAgZGVmIHdhaXRfZm9yX2ZpbmlzaGVkKHNlbGYpOgorICAgICAgICB3aGlsZSBsZW4oc2VsZi5maW5pc2hlZCkgPCBzZWxmLm46CisgICAgICAgICAgICBfd2FpdCgpCisKKyAgICBkZWYgZG9fZmluaXNoKHNlbGYpOgorICAgICAgICBzZWxmLl9jYW5fZXhpdC5zZXQoKQorCisKK2NsYXNzIEFwcGVuZFRydWUob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb2JqKToKKyAgICAgICAgc2VsZi5vYmogPSBvYmoKKyAgICBkZWYgX19jYWxsX18oc2VsZik6CisgICAgICAgIHNlbGYub2JqLmFwcGVuZChUcnVlKQorCisKK2NsYXNzIF9UZXN0QmFycmllcihCYXNlVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3RzIGZvciBCYXJyaWVyIG9iamVjdHMuCisgICAgIiIiCisgICAgTiA9IDUKKyAgICBkZWZhdWx0VGltZW91dCA9IDMwLjAgICMgWFhYIFNsb3cgV2luZG93cyBidWlsZGJvdHMgbmVlZCBnZW5lcm91cyB0aW1lb3V0CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuYmFycmllciA9IHNlbGYuQmFycmllcihzZWxmLk4sIHRpbWVvdXQ9c2VsZi5kZWZhdWx0VGltZW91dCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5iYXJyaWVyLmFib3J0KCkKKyAgICAgICAgc2VsZi5iYXJyaWVyID0gTm9uZQorCisgICAgZGVmIER1bW15TGlzdChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5UWVBFID09ICd0aHJlYWRzJzoKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICBlbGlmIHNlbGYuVFlQRSA9PSAnbWFuYWdlcic6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5tYW5hZ2VyLmxpc3QoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIF9EdW1teUxpc3QoKQorCisgICAgZGVmIHJ1bl90aHJlYWRzKHNlbGYsIGYsIGFyZ3MpOgorICAgICAgICBiID0gQnVuY2goc2VsZiwgZiwgYXJncywgc2VsZi5OLTEpCisgICAgICAgIGYoKmFyZ3MpCisgICAgICAgIGIud2FpdF9mb3JfZmluaXNoZWQoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG11bHRpcGFzcyhjbHMsIGJhcnJpZXIsIHJlc3VsdHMsIG4pOgorICAgICAgICBtID0gYmFycmllci5wYXJ0aWVzCisgICAgICAgIGFzc2VydCBtID09IGNscy5OCisgICAgICAgIGZvciBpIGluIHJhbmdlKG4pOgorICAgICAgICAgICAgcmVzdWx0c1swXS5hcHBlbmQoVHJ1ZSkKKyAgICAgICAgICAgIGFzc2VydCBsZW4ocmVzdWx0c1sxXSkgPT0gaSAqIG0KKyAgICAgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgICAgICByZXN1bHRzWzFdLmFwcGVuZChUcnVlKQorICAgICAgICAgICAgYXNzZXJ0IGxlbihyZXN1bHRzWzBdKSA9PSAoaSArIDEpICogbQorICAgICAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYXNzZXJ0IGJhcnJpZXIubl93YWl0aW5nID09IDAKKyAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGFzc2VydCBub3QgYmFycmllci5icm9rZW4KKworICAgIGRlZiB0ZXN0X2JhcnJpZXIoc2VsZiwgcGFzc2VzPTEpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IGEgYmFycmllciBpcyBwYXNzZWQgaW4gbG9ja3N0ZXAKKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdHMgPSBbc2VsZi5EdW1teUxpc3QoKSwgc2VsZi5EdW1teUxpc3QoKV0KKyAgICAgICAgc2VsZi5ydW5fdGhyZWFkcyhzZWxmLm11bHRpcGFzcywgKHNlbGYuYmFycmllciwgcmVzdWx0cywgcGFzc2VzKSkKKworICAgIGRlZiB0ZXN0X2JhcnJpZXJfMTAoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgYSBiYXJyaWVyIHdvcmtzIGZvciAxMCBjb25zZWN1dGl2ZSBydW5zCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi50ZXN0X2JhcnJpZXIoMTApCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3Rfd2FpdF9yZXR1cm5fZihjbHMsIGJhcnJpZXIsIHF1ZXVlKToKKyAgICAgICAgcmVzID0gYmFycmllci53YWl0KCkKKyAgICAgICAgcXVldWUucHV0KHJlcykKKworICAgIGRlZiB0ZXN0X3dhaXRfcmV0dXJuKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgdGVzdCB0aGUgcmV0dXJuIHZhbHVlIGZyb20gYmFycmllci53YWl0CisgICAgICAgICIiIgorICAgICAgICBxdWV1ZSA9IHNlbGYuUXVldWUoKQorICAgICAgICBzZWxmLnJ1bl90aHJlYWRzKHNlbGYuX3Rlc3Rfd2FpdF9yZXR1cm5fZiwgKHNlbGYuYmFycmllciwgcXVldWUpKQorICAgICAgICByZXN1bHRzID0gW3F1ZXVlLmdldCgpIGZvciBpIGluIHJhbmdlKHNlbGYuTildCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cy5jb3VudCgwKSwgMSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF9hY3Rpb25fZihjbHMsIGJhcnJpZXIsIHJlc3VsdHMpOgorICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICBpZiBsZW4ocmVzdWx0cykgIT0gMToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgorCisgICAgZGVmIHRlc3RfYWN0aW9uKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGUgJ2FjdGlvbicgY2FsbGJhY2sKKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdHMgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIGJhcnJpZXIgPSBzZWxmLkJhcnJpZXIoc2VsZi5OLCBhY3Rpb249QXBwZW5kVHJ1ZShyZXN1bHRzKSkKKyAgICAgICAgc2VsZi5ydW5fdGhyZWFkcyhzZWxmLl90ZXN0X2FjdGlvbl9mLCAoYmFycmllciwgcmVzdWx0cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCAxKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X2Fib3J0X2YoY2xzLCBiYXJyaWVyLCByZXN1bHRzMSwgcmVzdWx0czIpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpID0gYmFycmllci53YWl0KCkKKyAgICAgICAgICAgIGlmIGkgPT0gY2xzLk4vLzI6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisgICAgICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICAgICAgcmVzdWx0czEuYXBwZW5kKFRydWUpCisgICAgICAgIGV4Y2VwdCB0aHJlYWRpbmcuQnJva2VuQmFycmllckVycm9yOgorICAgICAgICAgICAgcmVzdWx0czIuYXBwZW5kKFRydWUpCisgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CisgICAgICAgICAgICBiYXJyaWVyLmFib3J0KCkKKworICAgIGRlZiB0ZXN0X2Fib3J0KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IGFuIGFib3J0IHdpbGwgcHV0IHRoZSBiYXJyaWVyIGluIGEgYnJva2VuIHN0YXRlCisgICAgICAgICIiIgorICAgICAgICByZXN1bHRzMSA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgcmVzdWx0czIgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIHNlbGYucnVuX3RocmVhZHMoc2VsZi5fdGVzdF9hYm9ydF9mLAorICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmJhcnJpZXIsIHJlc3VsdHMxLCByZXN1bHRzMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMxKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0czIpLCBzZWxmLk4tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuYmFycmllci5icm9rZW4pCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3RfcmVzZXRfZihjbHMsIGJhcnJpZXIsIHJlc3VsdHMxLCByZXN1bHRzMiwgcmVzdWx0czMpOgorICAgICAgICBpID0gYmFycmllci53YWl0KCkKKyAgICAgICAgaWYgaSA9PSBjbHMuTi8vMjoKKyAgICAgICAgICAgICMgV2FpdCB1bnRpbCB0aGUgb3RoZXIgdGhyZWFkcyBhcmUgYWxsIGluIHRoZSBiYXJyaWVyLgorICAgICAgICAgICAgd2hpbGUgYmFycmllci5uX3dhaXRpbmcgPCBjbHMuTi0xOgorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMDEpCisgICAgICAgICAgICBiYXJyaWVyLnJlc2V0KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICAgICAgICAgIHJlc3VsdHMxLmFwcGVuZChUcnVlKQorICAgICAgICAgICAgZXhjZXB0IHRocmVhZGluZy5Ccm9rZW5CYXJyaWVyRXJyb3I6CisgICAgICAgICAgICAgICAgcmVzdWx0czIuYXBwZW5kKFRydWUpCisgICAgICAgICMgTm93LCBwYXNzIHRoZSBiYXJyaWVyIGFnYWluCisgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgIHJlc3VsdHMzLmFwcGVuZChUcnVlKQorCisgICAgZGVmIHRlc3RfcmVzZXQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgYSAncmVzZXQnIG9uIGEgYmFycmllciBmcmVlcyB0aGUgd2FpdGluZyB0aHJlYWRzCisgICAgICAgICIiIgorICAgICAgICByZXN1bHRzMSA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgcmVzdWx0czIgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIHJlc3VsdHMzID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICBzZWxmLnJ1bl90aHJlYWRzKHNlbGYuX3Rlc3RfcmVzZXRfZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5iYXJyaWVyLCByZXN1bHRzMSwgcmVzdWx0czIsIHJlc3VsdHMzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0czEpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzMiksIHNlbGYuTi0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzMyksIHNlbGYuTikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF9hYm9ydF9hbmRfcmVzZXRfZihjbHMsIGJhcnJpZXIsIGJhcnJpZXIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzMSwgcmVzdWx0czIsIHJlc3VsdHMzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaSA9IGJhcnJpZXIud2FpdCgpCisgICAgICAgICAgICBpZiBpID09IGNscy5OLy8yOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgorICAgICAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgICAgIHJlc3VsdHMxLmFwcGVuZChUcnVlKQorICAgICAgICBleGNlcHQgdGhyZWFkaW5nLkJyb2tlbkJhcnJpZXJFcnJvcjoKKyAgICAgICAgICAgIHJlc3VsdHMyLmFwcGVuZChUcnVlKQorICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgYmFycmllci5hYm9ydCgpCisgICAgICAgICMgU3luY2hyb25pemUgYW5kIHJlc2V0IHRoZSBiYXJyaWVyLiAgTXVzdCBzeW5jaHJvbml6ZSBmaXJzdCBzbworICAgICAgICAjIHRoYXQgZXZlcnlvbmUgaGFzIGxlZnQgaXQgd2hlbiB3ZSByZXNldCwgYW5kIGFmdGVyIHNvIHRoYXQgbm8KKyAgICAgICAgIyBvbmUgZW50ZXJzIGl0IGJlZm9yZSB0aGUgcmVzZXQuCisgICAgICAgIGlmIGJhcnJpZXIyLndhaXQoKSA9PSBjbHMuTi8vMjoKKyAgICAgICAgICAgIGJhcnJpZXIucmVzZXQoKQorICAgICAgICBiYXJyaWVyMi53YWl0KCkKKyAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgcmVzdWx0czMuYXBwZW5kKFRydWUpCisKKyAgICBkZWYgdGVzdF9hYm9ydF9hbmRfcmVzZXQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgYSBiYXJyaWVyIGNhbiBiZSByZXNldCBhZnRlciBiZWluZyBicm9rZW4uCisgICAgICAgICIiIgorICAgICAgICByZXN1bHRzMSA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgcmVzdWx0czIgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIHJlc3VsdHMzID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICBiYXJyaWVyMiA9IHNlbGYuQmFycmllcihzZWxmLk4pCisKKyAgICAgICAgc2VsZi5ydW5fdGhyZWFkcyhzZWxmLl90ZXN0X2Fib3J0X2FuZF9yZXNldF9mLAorICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmJhcnJpZXIsIGJhcnJpZXIyLCByZXN1bHRzMSwgcmVzdWx0czIsIHJlc3VsdHMzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0czEpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzMiksIHNlbGYuTi0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzMyksIHNlbGYuTikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF90aW1lb3V0X2YoY2xzLCBiYXJyaWVyLCByZXN1bHRzKToKKyAgICAgICAgaSA9IGJhcnJpZXIud2FpdCgpCisgICAgICAgIGlmIGkgPT0gY2xzLk4vLzI6CisgICAgICAgICAgICAjIE9uZSB0aHJlYWQgaXMgbGF0ZSEKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMS4wKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBiYXJyaWVyLndhaXQoMC41KQorICAgICAgICBleGNlcHQgdGhyZWFkaW5nLkJyb2tlbkJhcnJpZXJFcnJvcjoKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKFRydWUpCisKKyAgICBkZWYgdGVzdF90aW1lb3V0KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB3YWl0KHRpbWVvdXQpCisgICAgICAgICIiIgorICAgICAgICByZXN1bHRzID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICBzZWxmLnJ1bl90aHJlYWRzKHNlbGYuX3Rlc3RfdGltZW91dF9mLCAoc2VsZi5iYXJyaWVyLCByZXN1bHRzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIHNlbGYuYmFycmllci5wYXJ0aWVzKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X2RlZmF1bHRfdGltZW91dF9mKGNscywgYmFycmllciwgcmVzdWx0cyk6CisgICAgICAgIGkgPSBiYXJyaWVyLndhaXQoY2xzLmRlZmF1bHRUaW1lb3V0KQorICAgICAgICBpZiBpID09IGNscy5OLy8yOgorICAgICAgICAgICAgIyBPbmUgdGhyZWFkIGlzIGxhdGVyIHRoYW4gdGhlIGRlZmF1bHQgdGltZW91dAorICAgICAgICAgICAgdGltZS5zbGVlcCgxLjApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgIGV4Y2VwdCB0aHJlYWRpbmcuQnJva2VuQmFycmllckVycm9yOgorICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoVHJ1ZSkKKworICAgIGRlZiB0ZXN0X2RlZmF1bHRfdGltZW91dChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhlIGJhcnJpZXIncyBkZWZhdWx0IHRpbWVvdXQKKyAgICAgICAgIiIiCisgICAgICAgIGJhcnJpZXIgPSBzZWxmLkJhcnJpZXIoc2VsZi5OLCB0aW1lb3V0PTAuNSkKKyAgICAgICAgcmVzdWx0cyA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgc2VsZi5ydW5fdGhyZWFkcyhzZWxmLl90ZXN0X2RlZmF1bHRfdGltZW91dF9mLCAoYmFycmllciwgcmVzdWx0cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCBiYXJyaWVyLnBhcnRpZXMpCisKKyAgICBkZWYgdGVzdF9zaW5nbGVfdGhyZWFkKHNlbGYpOgorICAgICAgICBiID0gc2VsZi5CYXJyaWVyKDEpCisgICAgICAgIGIud2FpdCgpCisgICAgICAgIGIud2FpdCgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3RfdGhvdXNhbmRfZihjbHMsIGJhcnJpZXIsIHBhc3NlcywgY29ubiwgbG9jayk6CisgICAgICAgIGZvciBpIGluIHJhbmdlKHBhc3Nlcyk6CisgICAgICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICAgICAgd2l0aCBsb2NrOgorICAgICAgICAgICAgICAgIGNvbm4uc2VuZChpKQorCisgICAgZGVmIHRlc3RfdGhvdXNhbmQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuVFlQRSA9PSAnbWFuYWdlcic6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgcGFzc2VzID0gMTAwMAorICAgICAgICBsb2NrID0gc2VsZi5Mb2NrKCkKKyAgICAgICAgY29ubiwgY2hpbGRfY29ubiA9IHNlbGYuUGlwZShGYWxzZSkKKyAgICAgICAgZm9yIGogaW4gcmFuZ2Uoc2VsZi5OKToKKyAgICAgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX3Rlc3RfdGhvdXNhbmRfZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHNlbGYuYmFycmllciwgcGFzc2VzLCBjaGlsZF9jb25uLCBsb2NrKSkKKyAgICAgICAgICAgIHAuc3RhcnQoKQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKHBhc3Nlcyk6CisgICAgICAgICAgICBmb3IgaiBpbiByYW5nZShzZWxmLk4pOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29ubi5yZWN2KCksIGkpCisKKyMKICMKICMKIApAQCAtMTEzMCw2ICsxNjEyLDkgQEAKICAgICB0aW1lLnNsZWVwKHdhaXQpCiAgICAgcmV0dXJuIHgqeAogCitkZWYgbXVsKHgsIHkpOgorICAgIHJldHVybiB4KnkKKwogY2xhc3MgX1Rlc3RQb29sKEJhc2VUZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9hcHBseShzZWxmKToKQEAgLTExNDMsNiArMTYyOCwzNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBtYXAoc3FyLCBsaXN0KHJhbmdlKDEwMCkpLCBjaHVua3NpemU9MjApLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QobWFwKHNxciwgbGlzdChyYW5nZSgxMDApKSkpKQogCisgICAgZGVmIHRlc3Rfc3Rhcm1hcChzZWxmKToKKyAgICAgICAgcHNtYXAgPSBzZWxmLnBvb2wuc3Rhcm1hcAorICAgICAgICB0dXBsZXMgPSBsaXN0KHppcChyYW5nZSgxMCksIHJhbmdlKDksLTEsIC0xKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHNtYXAobXVsLCB0dXBsZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QoaXRlcnRvb2xzLnN0YXJtYXAobXVsLCB0dXBsZXMpKSkKKyAgICAgICAgdHVwbGVzID0gbGlzdCh6aXAocmFuZ2UoMTAwKSwgcmFuZ2UoOTksLTEsIC0xKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHNtYXAobXVsLCB0dXBsZXMsIGNodW5rc2l6ZT0yMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChpdGVydG9vbHMuc3Rhcm1hcChtdWwsIHR1cGxlcykpKQorCisgICAgZGVmIHRlc3Rfc3Rhcm1hcF9hc3luYyhzZWxmKToKKyAgICAgICAgdHVwbGVzID0gbGlzdCh6aXAocmFuZ2UoMTAwKSwgcmFuZ2UoOTksLTEsIC0xKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wb29sLnN0YXJtYXBfYXN5bmMobXVsLCB0dXBsZXMpLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QoaXRlcnRvb2xzLnN0YXJtYXAobXVsLCB0dXBsZXMpKSkKKworICAgIGRlZiB0ZXN0X21hcF9hc3luYyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBvb2wubWFwX2FzeW5jKHNxciwgbGlzdChyYW5nZSgxMCkpKS5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KG1hcChzcXIsIGxpc3QocmFuZ2UoMTApKSkpKQorCisgICAgZGVmIHRlc3RfbWFwX2FzeW5jX2NhbGxiYWNrcyhzZWxmKToKKyAgICAgICAgY2FsbF9hcmdzID0gc2VsZi5tYW5hZ2VyLmxpc3QoKSBpZiBzZWxmLlRZUEUgPT0gJ21hbmFnZXInIGVsc2UgW10KKyAgICAgICAgc2VsZi5wb29sLm1hcF9hc3luYyhpbnQsIFsnMSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrPWNhbGxfYXJncy5hcHBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY2FsbGJhY2s9Y2FsbF9hcmdzLmFwcGVuZCkud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGNhbGxfYXJncykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWzFdLCBjYWxsX2FyZ3NbMF0pCisgICAgICAgIHNlbGYucG9vbC5tYXBfYXN5bmMoaW50LCBbJ2EnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz1jYWxsX2FyZ3MuYXBwZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NhbGxiYWNrPWNhbGxfYXJncy5hcHBlbmQpLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihjYWxsX2FyZ3MpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY2FsbF9hcmdzWzFdLCBWYWx1ZUVycm9yKQorCiAgICAgZGVmIHRlc3RfbWFwX2NodW5rc2l6ZShzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5wb29sLm1hcF9hc3luYyhzcXIsIFtdLCBjaHVua3NpemU9MSkuZ2V0KHRpbWVvdXQ9VElNRU9VVDEpCkBAIC0xMjIxLDYgKzE3MzcsMTYgQEAKICAgICAgICAgcC5jbG9zZSgpCiAgICAgICAgIHAuam9pbigpCiAKKyAgICBkZWYgdGVzdF9jb250ZXh0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3Byb2Nlc3Nlcyc6CisgICAgICAgICAgICBMID0gbGlzdChyYW5nZSgxMCkpCisgICAgICAgICAgICBleHBlY3RlZCA9IFtzcXIoaSkgZm9yIGkgaW4gTF0KKyAgICAgICAgICAgIHdpdGggbXVsdGlwcm9jZXNzaW5nLlBvb2woMikgYXMgcDoKKyAgICAgICAgICAgICAgICByID0gcC5tYXBfYXN5bmMoc3FyLCBMKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoci5nZXQoKSwgZXhwZWN0ZWQpCisgICAgICAgICAgICBwcmludChwLl9zdGF0ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHAubWFwX2FzeW5jLCBzcXIsIEwpCisKIGRlZiByYWlzaW5nKCk6CiAgICAgcmFpc2UgS2V5RXJyb3IoImtleSIpCiAKQEAgLTEzMjIsNiArMTg0OCwxMSBAQAogICAgICMgcnVuIGFmdGVyIGFsbCB0aGUgb3RoZXIgdGVzdHMgZm9yIHRoZSBtYW5hZ2VyLiAgSXQgdGVzdHMgdGhhdAogICAgICMgdGhlcmUgaGF2ZSBiZWVuIG5vICJyZWZlcmVuY2UgbGVha3MiIGZvciB0aGUgbWFuYWdlcidzIHNoYXJlZAogICAgICMgb2JqZWN0cy4gIE5vdGUgdGhlIGNvbW1lbnQgaW4gX1Rlc3RQb29sLnRlc3RfdGVybWluYXRlKCkuCisKKyAgICAjIElmIHNvbWUgb3RoZXIgdGVzdCB1c2luZyBNYW5hZ2VyTWl4aW4ubWFuYWdlciBmYWlscywgdGhlbiB0aGUKKyAgICAjIHJhaXNlZCBleGNlcHRpb24gbWF5IGtlZXAgYWxpdmUgYSBmcmFtZSB3aGljaCBob2xkcyBhIHJlZmVyZW5jZQorICAgICMgdG8gYSBtYW5hZ2VkIG9iamVjdC4gIFRoaXMgd2lsbCBjYXVzZSB0ZXN0X251bWJlcl9vZl9vYmplY3RzIHRvCisgICAgIyBhbHNvIGZhaWwuCiAgICAgQUxMT1dFRF9UWVBFUyA9ICgnbWFuYWdlcicsKQogCiAgICAgZGVmIHRlc3RfbnVtYmVyX29mX29iamVjdHMoc2VsZik6CkBAIC0xMzc2LDcgKzE5MDcsMjcgQEAKICAgICBkZWYgdGVzdF9teW1hbmFnZXIoc2VsZik6CiAgICAgICAgIG1hbmFnZXIgPSBNeU1hbmFnZXIoKQogICAgICAgICBtYW5hZ2VyLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5jb21tb24obWFuYWdlcikKKyAgICAgICAgbWFuYWdlci5zaHV0ZG93bigpCiAKKyAgICAgICAgIyBJZiB0aGUgbWFuYWdlciBwcm9jZXNzIGV4aXRlZCBjbGVhbmx5IHRoZW4gdGhlIGV4aXRjb2RlCisgICAgICAgICMgd2lsbCBiZSB6ZXJvLiAgT3RoZXJ3aXNlIChhZnRlciBhIHNob3J0IHRpbWVvdXQpCisgICAgICAgICMgdGVybWluYXRlKCkgaXMgdXNlZCwgcmVzdWx0aW5nIGluIGFuIGV4aXRjb2RlIG9mIC1TSUdURVJNLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmFnZXIuX3Byb2Nlc3MuZXhpdGNvZGUsIDApCisKKyAgICBkZWYgdGVzdF9teW1hbmFnZXJfY29udGV4dChzZWxmKToKKyAgICAgICAgd2l0aCBNeU1hbmFnZXIoKSBhcyBtYW5hZ2VyOgorICAgICAgICAgICAgc2VsZi5jb21tb24obWFuYWdlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5hZ2VyLl9wcm9jZXNzLmV4aXRjb2RlLCAwKQorCisgICAgZGVmIHRlc3RfbXltYW5hZ2VyX2NvbnRleHRfcHJlc3RhcnRlZChzZWxmKToKKyAgICAgICAgbWFuYWdlciA9IE15TWFuYWdlcigpCisgICAgICAgIG1hbmFnZXIuc3RhcnQoKQorICAgICAgICB3aXRoIG1hbmFnZXI6CisgICAgICAgICAgICBzZWxmLmNvbW1vbihtYW5hZ2VyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmFnZXIuX3Byb2Nlc3MuZXhpdGNvZGUsIDApCisKKyAgICBkZWYgY29tbW9uKHNlbGYsIG1hbmFnZXIpOgogICAgICAgICBmb28gPSBtYW5hZ2VyLkZvbygpCiAgICAgICAgIGJhciA9IG1hbmFnZXIuQmFyKCkKICAgICAgICAgYmF6ID0gbWFuYWdlci5iYXooKQpAQCAtMTM5OSw3ICsxOTUwLDYgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYmF6KSwgW2kqaSBmb3IgaSBpbiByYW5nZSgxMCldKQogCi0gICAgICAgIG1hbmFnZXIuc2h1dGRvd24oKQogCiAjCiAjIFRlc3Qgb2YgY29ubmVjdGluZyB0byBhIHJlbW90ZSBzZXJ2ZXIgYW5kIHVzaW5nIHhtbHJwY2xpYiBmb3Igc2VyaWFsaXphdGlvbgpAQCAtMTU3MCw2ICsyMTIwLDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb2xsKCksIEZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydFRpbWluZ0FsbW9zdEVxdWFsKHBvbGwuZWxhcHNlZCwgMCkKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvbGwoLTEpLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUaW1pbmdBbG1vc3RFcXVhbChwb2xsLmVsYXBzZWQsIDApCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb2xsKFRJTUVPVVQxKSwgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0VGltaW5nQWxtb3N0RXF1YWwocG9sbC5lbGFwc2VkLCBUSU1FT1VUMSkKIApAQCAtMTc1Niw2ICsyMzA5LDQzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcmVkdWN0aW9uLnJlY3ZfaGFuZGxlLCBjb25uKQogICAgICAgICBwLmpvaW4oKQogCisgICAgZGVmIHRlc3RfY29udGV4dChzZWxmKToKKyAgICAgICAgYSwgYiA9IHNlbGYuUGlwZSgpCisKKyAgICAgICAgd2l0aCBhLCBiOgorICAgICAgICAgICAgYS5zZW5kKDE3MjkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmVjdigpLCAxNzI5KQorICAgICAgICAgICAgaWYgc2VsZi5UWVBFID09ICdwcm9jZXNzZXMnOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYS5jbG9zZWQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiLmNsb3NlZCkKKworICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3Byb2Nlc3Nlcyc6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYS5jbG9zZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYi5jbG9zZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBhLnJlY3YpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBiLnJlY3YpCisKK2NsYXNzIF9UZXN0TGlzdGVuZXIoQmFzZVRlc3RDYXNlKToKKworICAgIEFMTE9XRURfVFlQRVMgPSAoJ3Byb2Nlc3NlcycsKQorCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfYmluZChzZWxmKToKKyAgICAgICAgZm9yIGZhbWlseSBpbiBzZWxmLmNvbm5lY3Rpb24uZmFtaWxpZXM6CisgICAgICAgICAgICBsID0gc2VsZi5jb25uZWN0aW9uLkxpc3RlbmVyKGZhbWlseT1mYW1pbHkpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAobC5jbG9zZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNlbGYuY29ubmVjdGlvbi5MaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwuYWRkcmVzcywgZmFtaWx5KQorCisgICAgZGVmIHRlc3RfY29udGV4dChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmNvbm5lY3Rpb24uTGlzdGVuZXIoKSBhcyBsOgorICAgICAgICAgICAgd2l0aCBzZWxmLmNvbm5lY3Rpb24uQ2xpZW50KGwuYWRkcmVzcykgYXMgYzoKKyAgICAgICAgICAgICAgICB3aXRoIGwuYWNjZXB0KCkgYXMgZDoKKyAgICAgICAgICAgICAgICAgICAgYy5zZW5kKDE3MjkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5yZWN2KCksIDE3MjkpCisKKyAgICAgICAgaWYgc2VsZi5UWVBFID09ICdwcm9jZXNzZXMnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgbC5hY2NlcHQpCisKIGNsYXNzIF9UZXN0TGlzdGVuZXJDbGllbnQoQmFzZVRlc3RDYXNlKToKIAogICAgIEFMTE9XRURfVFlQRVMgPSAoJ3Byb2Nlc3NlcycsICd0aHJlYWRzJykKQEAgLTE3OTMsNTIgKzIzODMsMTQ2IEBACiAgICAgICAgIHAuam9pbigpCiAgICAgICAgIGwuY2xvc2UoKQogCisgICAgZGVmIHRlc3RfaXNzdWUxNjk1NShzZWxmKToKKyAgICAgICAgZm9yIGZhbSBpbiBzZWxmLmNvbm5lY3Rpb24uZmFtaWxpZXM6CisgICAgICAgICAgICBsID0gc2VsZi5jb25uZWN0aW9uLkxpc3RlbmVyKGZhbWlseT1mYW0pCisgICAgICAgICAgICBjID0gc2VsZi5jb25uZWN0aW9uLkNsaWVudChsLmFkZHJlc3MpCisgICAgICAgICAgICBhID0gbC5hY2NlcHQoKQorICAgICAgICAgICAgYS5zZW5kX2J5dGVzKGIiaGVsbG8iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMucG9sbCgxKSkKKyAgICAgICAgICAgIGEuY2xvc2UoKQorICAgICAgICAgICAgYy5jbG9zZSgpCisgICAgICAgICAgICBsLmNsb3NlKCkKKworY2xhc3MgX1Rlc3RQb2xsKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEFMTE9XRURfVFlQRVMgPSAoJ3Byb2Nlc3NlcycsICd0aHJlYWRzJykKKworICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAgYSwgYiA9IHNlbGYuUGlwZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5wb2xsKCksIEZhbHNlKQorICAgICAgICBiLnNlbmRfYnl0ZXMoYicnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucG9sbCgpLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucG9sbCgpLCBUcnVlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9jaGlsZF9zdHJpbmdzKGNscywgY29ubiwgc3RyaW5ncyk6CisgICAgICAgIGZvciBzIGluIHN0cmluZ3M6CisgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKKyAgICAgICAgICAgIGNvbm4uc2VuZF9ieXRlcyhzKQorICAgICAgICBjb25uLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X3N0cmluZ3Moc2VsZik6CisgICAgICAgIHN0cmluZ3MgPSAoYidoZWxsbycsIGInJywgYidhJywgYidiJywgYicnLCBiJ2J5ZScsIGInJywgYidsb3AnKQorICAgICAgICBhLCBiID0gc2VsZi5QaXBlKCkKKyAgICAgICAgcCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fY2hpbGRfc3RyaW5ncywgYXJncz0oYiwgc3RyaW5ncykpCisgICAgICAgIHAuc3RhcnQoKQorCisgICAgICAgIGZvciBzIGluIHN0cmluZ3M6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgyMDApOgorICAgICAgICAgICAgICAgIGlmIGEucG9sbCgwLjAxKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHggPSBhLnJlY3ZfYnl0ZXMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCB4KQorCisgICAgICAgIHAuam9pbigpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2NoaWxkX2JvdW5kYXJpZXMoY2xzLCByKToKKyAgICAgICAgIyBQb2xsaW5nIG1heSAicHVsbCIgYSBtZXNzYWdlIGluIHRvIHRoZSBjaGlsZCBwcm9jZXNzLCBidXQgd2UKKyAgICAgICAgIyBkb24ndCB3YW50IGl0IHRvIHB1bGwgb25seSBwYXJ0IG9mIGEgbWVzc2FnZSwgYXMgdGhhdCB3b3VsZAorICAgICAgICAjIGNvcnJ1cHQgdGhlIHBpcGUgZm9yIGFueSBvdGhlciBwcm9jZXNzZXMgd2hpY2ggbWlnaHQgbGF0ZXIKKyAgICAgICAgIyByZWFkIGZyb20gaXQuCisgICAgICAgIHIucG9sbCg1KQorCisgICAgZGVmIHRlc3RfYm91bmRhcmllcyhzZWxmKToKKyAgICAgICAgciwgdyA9IHNlbGYuUGlwZShGYWxzZSkKKyAgICAgICAgcCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fY2hpbGRfYm91bmRhcmllcywgYXJncz0ociwpKQorICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgdGltZS5zbGVlcCgyKQorICAgICAgICBMID0gW2IiZmlyc3QiLCBiInNlY29uZCJdCisgICAgICAgIGZvciBvYmogaW4gTDoKKyAgICAgICAgICAgIHcuc2VuZF9ieXRlcyhvYmopCisgICAgICAgIHcuY2xvc2UoKQorICAgICAgICBwLmpvaW4oKQorICAgICAgICBzZWxmLmFzc2VydEluKHIucmVjdl9ieXRlcygpLCBMKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9jaGlsZF9kb250X21lcmdlKGNscywgYik6CisgICAgICAgIGIuc2VuZF9ieXRlcyhiJ2EnKQorICAgICAgICBiLnNlbmRfYnl0ZXMoYidiJykKKyAgICAgICAgYi5zZW5kX2J5dGVzKGInY2QnKQorCisgICAgZGVmIHRlc3RfZG9udF9tZXJnZShzZWxmKToKKyAgICAgICAgYSwgYiA9IHNlbGYuUGlwZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5wb2xsKDAuMCksIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucG9sbCgwLjEpLCBGYWxzZSkKKworICAgICAgICBwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl9jaGlsZF9kb250X21lcmdlLCBhcmdzPShiLCkpCisgICAgICAgIHAuc3RhcnQoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5yZWN2X2J5dGVzKCksIGInYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5wb2xsKDEuMCksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5wb2xsKDEuMCksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5yZWN2X2J5dGVzKCksIGInYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5wb2xsKDEuMCksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5wb2xsKDEuMCksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5wb2xsKDAuMCksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5yZWN2X2J5dGVzKCksIGInY2QnKQorCisgICAgICAgIHAuam9pbigpCisKICMKICMgVGVzdCBvZiBzZW5kaW5nIGNvbm5lY3Rpb24gYW5kIHNvY2tldCBvYmplY3RzIGJldHdlZW4gcHJvY2Vzc2VzCiAjCi0iIiIKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFTX1JFRFVDVElPTiwgInRlc3QgbmVlZHMgbXVsdGlwcm9jZXNzaW5nLnJlZHVjdGlvbiIpCiBjbGFzcyBfVGVzdFBpY2tsaW5nQ29ubmVjdGlvbnMoQmFzZVRlc3RDYXNlKToKIAogICAgIEFMTE9XRURfVFlQRVMgPSAoJ3Byb2Nlc3NlcycsKQogCi0gICAgZGVmIF9saXN0ZW5lcihzZWxmLCBjb25uLCBmYW1pbGllcyk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcucmVkdWN0aW9uIGltcG9ydCByZXNvdXJjZV9zaGFyZXIKKyAgICAgICAgcmVzb3VyY2Vfc2hhcmVyLnN0b3AodGltZW91dD01KQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9saXN0ZW5lcihjbHMsIGNvbm4sIGZhbWlsaWVzKToKICAgICAgICAgZm9yIGZhbSBpbiBmYW1pbGllczoKLSAgICAgICAgICAgIGwgPSBzZWxmLmNvbm5lY3Rpb24uTGlzdGVuZXIoZmFtaWx5PWZhbSkKKyAgICAgICAgICAgIGwgPSBjbHMuY29ubmVjdGlvbi5MaXN0ZW5lcihmYW1pbHk9ZmFtKQogICAgICAgICAgICAgY29ubi5zZW5kKGwuYWRkcmVzcykKICAgICAgICAgICAgIG5ld19jb25uID0gbC5hY2NlcHQoKQogICAgICAgICAgICAgY29ubi5zZW5kKG5ld19jb25uKQorICAgICAgICAgICAgbmV3X2Nvbm4uY2xvc2UoKQorICAgICAgICAgICAgbC5jbG9zZSgpCiAKLSAgICAgICAgaWYgc2VsZi5UWVBFID09ICdwcm9jZXNzZXMnOgotICAgICAgICAgICAgbCA9IHNvY2tldC5zb2NrZXQoKQotICAgICAgICAgICAgbC5iaW5kKCgnbG9jYWxob3N0JywgMCkpCi0gICAgICAgICAgICBjb25uLnNlbmQobC5nZXRzb2NrbmFtZSgpKQotICAgICAgICAgICAgbC5saXN0ZW4oMSkKLSAgICAgICAgICAgIG5ld19jb25uLCBhZGRyID0gbC5hY2NlcHQoKQotICAgICAgICAgICAgY29ubi5zZW5kKG5ld19jb25uKQorICAgICAgICBsID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIGwuYmluZCgoJ2xvY2FsaG9zdCcsIDApKQorICAgICAgICBsLmxpc3RlbigxKQorICAgICAgICBjb25uLnNlbmQobC5nZXRzb2NrbmFtZSgpKQorICAgICAgICBuZXdfY29ubiwgYWRkciA9IGwuYWNjZXB0KCkKKyAgICAgICAgY29ubi5zZW5kKG5ld19jb25uKQorICAgICAgICBuZXdfY29ubi5jbG9zZSgpCisgICAgICAgIGwuY2xvc2UoKQogCiAgICAgICAgIGNvbm4ucmVjdigpCiAKLSAgICBkZWYgX3JlbW90ZShzZWxmLCBjb25uKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3JlbW90ZShjbHMsIGNvbm4pOgogICAgICAgICBmb3IgKGFkZHJlc3MsIG1zZykgaW4gaXRlcihjb25uLnJlY3YsIE5vbmUpOgotICAgICAgICAgICAgY2xpZW50ID0gc2VsZi5jb25uZWN0aW9uLkNsaWVudChhZGRyZXNzKQorICAgICAgICAgICAgY2xpZW50ID0gY2xzLmNvbm5lY3Rpb24uQ2xpZW50KGFkZHJlc3MpCiAgICAgICAgICAgICBjbGllbnQuc2VuZChtc2cudXBwZXIoKSkKICAgICAgICAgICAgIGNsaWVudC5jbG9zZSgpCiAKLSAgICAgICAgaWYgc2VsZi5UWVBFID09ICdwcm9jZXNzZXMnOgotICAgICAgICAgICAgYWRkcmVzcywgbXNnID0gY29ubi5yZWN2KCkKLSAgICAgICAgICAgIGNsaWVudCA9IHNvY2tldC5zb2NrZXQoKQotICAgICAgICAgICAgY2xpZW50LmNvbm5lY3QoYWRkcmVzcykKLSAgICAgICAgICAgIGNsaWVudC5zZW5kYWxsKG1zZy51cHBlcigpKQotICAgICAgICAgICAgY2xpZW50LmNsb3NlKCkKKyAgICAgICAgYWRkcmVzcywgbXNnID0gY29ubi5yZWN2KCkKKyAgICAgICAgY2xpZW50ID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIGNsaWVudC5jb25uZWN0KGFkZHJlc3MpCisgICAgICAgIGNsaWVudC5zZW5kYWxsKG1zZy51cHBlcigpKQorICAgICAgICBjbGllbnQuY2xvc2UoKQogCiAgICAgICAgIGNvbm4uY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfcGlja2xpbmcoc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG11bHRpcHJvY2Vzc2luZy5hbGxvd19jb25uZWN0aW9uX3BpY2tsaW5nKCkKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcmV0dXJuCi0KICAgICAgICAgZmFtaWxpZXMgPSBzZWxmLmNvbm5lY3Rpb24uZmFtaWxpZXMKIAogICAgICAgICBsY29ubiwgbGNvbm4wID0gc2VsZi5QaXBlKCkKQEAgLTE4NjIsMTYgKzI1NDYsMTkgQEAKIAogICAgICAgICByY29ubi5zZW5kKE5vbmUpCiAKLSAgICAgICAgaWYgc2VsZi5UWVBFID09ICdwcm9jZXNzZXMnOgotICAgICAgICAgICAgbXNnID0gbGF0aW4oJ1RoaXMgY29ubmVjdGlvbiB1c2VzIGEgbm9ybWFsIHNvY2tldCcpCi0gICAgICAgICAgICBhZGRyZXNzID0gbGNvbm4ucmVjdigpCi0gICAgICAgICAgICByY29ubi5zZW5kKChhZGRyZXNzLCBtc2cpKQotICAgICAgICAgICAgaWYgaGFzYXR0cihzb2NrZXQsICdmcm9tZmQnKToKLSAgICAgICAgICAgICAgICBuZXdfY29ubiA9IGxjb25uLnJlY3YoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2Nvbm4ucmVjdigxMDApLCBtc2cudXBwZXIoKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBYWFggT24gV2luZG93cyB3aXRoIFB5Mi42IG5lZWQgdG8gYmFja3BvcnQgZnJvbWZkKCkKLSAgICAgICAgICAgICAgICBkaXNjYXJkID0gbGNvbm4ucmVjdl9ieXRlcygpCisgICAgICAgIG1zZyA9IGxhdGluKCdUaGlzIGNvbm5lY3Rpb24gdXNlcyBhIG5vcm1hbCBzb2NrZXQnKQorICAgICAgICBhZGRyZXNzID0gbGNvbm4ucmVjdigpCisgICAgICAgIHJjb25uLnNlbmQoKGFkZHJlc3MsIG1zZykpCisgICAgICAgIG5ld19jb25uID0gbGNvbm4ucmVjdigpCisgICAgICAgIGJ1ZiA9IFtdCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBzID0gbmV3X2Nvbm4ucmVjdigxMDApCisgICAgICAgICAgICBpZiBub3QgczoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgYnVmLmFwcGVuZChzKQorICAgICAgICBidWYgPSBiJycuam9pbihidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBtc2cudXBwZXIoKSkKKyAgICAgICAgbmV3X2Nvbm4uY2xvc2UoKQogCiAgICAgICAgIGxjb25uLnNlbmQoTm9uZSkKIApAQCAtMTg4MCw3ICsyNTY3LDQ2IEBACiAKICAgICAgICAgbHAuam9pbigpCiAgICAgICAgIHJwLmpvaW4oKQotIiIiCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgY2hpbGRfYWNjZXNzKGNscywgY29ubik6CisgICAgICAgIHcgPSBjb25uLnJlY3YoKQorICAgICAgICB3LnNlbmQoJ2FsbCBpcyB3ZWxsJykKKyAgICAgICAgdy5jbG9zZSgpCisKKyAgICAgICAgciA9IGNvbm4ucmVjdigpCisgICAgICAgIG1zZyA9IHIucmVjdigpCisgICAgICAgIGNvbm4uc2VuZChtc2cqMikKKworICAgICAgICBjb25uLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2FjY2VzcyhzZWxmKToKKyAgICAgICAgIyBPbiBXaW5kb3dzLCBpZiB3ZSBkbyBub3Qgc3BlY2lmeSBhIGRlc3RpbmF0aW9uIHBpZCB3aGVuCisgICAgICAgICMgdXNpbmcgRHVwSGFuZGxlIHRoZW4gd2UgbmVlZCB0byBiZSBjYXJlZnVsIHRvIHVzZSB0aGUKKyAgICAgICAgIyBjb3JyZWN0IGFjY2VzcyBmbGFncyBmb3IgRHVwbGljYXRlSGFuZGxlKCksIG9yIGVsc2UKKyAgICAgICAgIyBEdXBIYW5kbGUuZGV0YWNoKCkgd2lsbCByYWlzZSBQZXJtaXNzaW9uRXJyb3IuICBGb3IgZXhhbXBsZSwKKyAgICAgICAgIyBmb3IgYSByZWFkIG9ubHkgcGlwZSBoYW5kbGUgd2Ugc2hvdWxkIHVzZQorICAgICAgICAjIGFjY2Vzcz1GSUxFX0dFTkVSSUNfUkVBRC4gIChVbmZvcnR1bmF0ZWx5CisgICAgICAgICMgRFVQTElDQVRFX1NBTUVfQUNDRVNTIGRvZXMgbm90IHdvcmsuKQorICAgICAgICBjb25uLCBjaGlsZF9jb25uID0gc2VsZi5QaXBlKCkKKyAgICAgICAgcCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5jaGlsZF9hY2Nlc3MsIGFyZ3M9KGNoaWxkX2Nvbm4sKSkKKyAgICAgICAgcC5kYWVtb24gPSBUcnVlCisgICAgICAgIHAuc3RhcnQoKQorICAgICAgICBjaGlsZF9jb25uLmNsb3NlKCkKKworICAgICAgICByLCB3ID0gc2VsZi5QaXBlKGR1cGxleD1GYWxzZSkKKyAgICAgICAgY29ubi5zZW5kKHcpCisgICAgICAgIHcuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIucmVjdigpLCAnYWxsIGlzIHdlbGwnKQorICAgICAgICByLmNsb3NlKCkKKworICAgICAgICByLCB3ID0gc2VsZi5QaXBlKGR1cGxleD1GYWxzZSkKKyAgICAgICAgY29ubi5zZW5kKHIpCisgICAgICAgIHIuY2xvc2UoKQorICAgICAgICB3LnNlbmQoJ2Zvb2JhcicpCisgICAgICAgIHcuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbm4ucmVjdigpLCAnZm9vYmFyJyoyKQorCiAjCiAjCiAjCkBAIC0yMjA3LDkgKzI5MzMsMTUgQEAKIAogICAgIEB1bml0dGVzdC5za2lwSWYoV0lOMzIsICJza2lwcGVkIG9uIFdpbmRvd3MiKQogICAgIGRlZiB0ZXN0X2ludmFsaWRfaGFuZGxlcyhzZWxmKToKLSAgICAgICAgY29ubiA9IF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbig0NDk3NzYwOCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgY29ubi5wb2xsKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb24sIC0xKQorICAgICAgICBjb25uID0gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24uQ29ubmVjdGlvbig0NDk3NzYwOCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIElPRXJyb3IpLCBjb25uLnBvbGwpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAjIEhhY2sgcHJpdmF0ZSBhdHRyaWJ1dGUgX2hhbmRsZSB0byBhdm9pZCBwcmludGluZyBhbiBlcnJvcgorICAgICAgICAgICAgIyBpbiBjb25uLl9fZGVsX18KKyAgICAgICAgICAgIGNvbm4uX2hhbmRsZSA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIElPRXJyb3IpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi5Db25uZWN0aW9uLCAtMSkKIAogIwogIyBGdW5jdGlvbnMgdXNlZCB0byBjcmVhdGUgdGVzdCBjYXNlcyBmcm9tIHRoZSBiYXNlIG9uZXMgaW4gdGhpcyBtb2R1bGUKQEAgLTIyMjgsMTAgKzI5NjAsMTIgQEAKICAgICByZXN1bHQgPSB7fQogICAgIGdsb2IgPSBnbG9iYWxzKCkKICAgICBUeXBlID0gdHlwZS5jYXBpdGFsaXplKCkKKyAgICBBTExfVFlQRVMgPSB7J3Byb2Nlc3NlcycsICd0aHJlYWRzJywgJ21hbmFnZXInfQogCiAgICAgZm9yIG5hbWUgaW4gbGlzdChnbG9iLmtleXMoKSk6CiAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnX1Rlc3QnKToKICAgICAgICAgICAgIGJhc2UgPSBnbG9iW25hbWVdCisgICAgICAgICAgICBhc3NlcnQgc2V0KGJhc2UuQUxMT1dFRF9UWVBFUykgPD0gQUxMX1RZUEVTLCBzZXQoYmFzZS5BTExPV0VEX1RZUEVTKQogICAgICAgICAgICAgaWYgdHlwZSBpbiBiYXNlLkFMTE9XRURfVFlQRVM6CiAgICAgICAgICAgICAgICAgbmV3bmFtZSA9ICdXaXRoJyArIFR5cGUgKyBuYW1lWzE6XQogICAgICAgICAgICAgICAgIGNsYXNzIFRlbXAoYmFzZSwgdW5pdHRlc3QuVGVzdENhc2UsIE1peGluKToKQEAgLTIyNTAsNyArMjk4NCw3IEBACiAgICAgUHJvY2VzcyA9IG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzCiAgICAgbG9jYWxzKCkudXBkYXRlKGdldF9hdHRyaWJ1dGVzKG11bHRpcHJvY2Vzc2luZywgKAogICAgICAgICAnUXVldWUnLCAnTG9jaycsICdSTG9jaycsICdTZW1hcGhvcmUnLCAnQm91bmRlZFNlbWFwaG9yZScsCi0gICAgICAgICdDb25kaXRpb24nLCAnRXZlbnQnLCAnVmFsdWUnLCAnQXJyYXknLCAnUmF3VmFsdWUnLAorICAgICAgICAnQ29uZGl0aW9uJywgJ0V2ZW50JywgJ0JhcnJpZXInLCAnVmFsdWUnLCAnQXJyYXknLCAnUmF3VmFsdWUnLAogICAgICAgICAnUmF3QXJyYXknLCAnY3VycmVudF9wcm9jZXNzJywgJ2FjdGl2ZV9jaGlsZHJlbicsICdQaXBlJywKICAgICAgICAgJ2Nvbm5lY3Rpb24nLCAnSm9pbmFibGVRdWV1ZScsICdQb29sJwogICAgICAgICApKSkKQEAgLTIyNjUsNyArMjk5OSw3IEBACiAgICAgbWFuYWdlciA9IG9iamVjdC5fX25ld19fKG11bHRpcHJvY2Vzc2luZy5tYW5hZ2Vycy5TeW5jTWFuYWdlcikKICAgICBsb2NhbHMoKS51cGRhdGUoZ2V0X2F0dHJpYnV0ZXMobWFuYWdlciwgKAogICAgICAgICAnUXVldWUnLCAnTG9jaycsICdSTG9jaycsICdTZW1hcGhvcmUnLCAnQm91bmRlZFNlbWFwaG9yZScsCi0gICAgICAgJ0NvbmRpdGlvbicsICdFdmVudCcsICdWYWx1ZScsICdBcnJheScsICdsaXN0JywgJ2RpY3QnLAorICAgICAgICAnQ29uZGl0aW9uJywgJ0V2ZW50JywgJ0JhcnJpZXInLCAnVmFsdWUnLCAnQXJyYXknLCAnbGlzdCcsICdkaWN0JywKICAgICAgICAgJ05hbWVzcGFjZScsICdKb2luYWJsZVF1ZXVlJywgJ1Bvb2wnCiAgICAgICAgICkpKQogCkBAIC0yMjc4LDcgKzMwMTIsNyBAQAogICAgIFByb2Nlc3MgPSBtdWx0aXByb2Nlc3NpbmcuZHVtbXkuUHJvY2VzcwogICAgIGxvY2FscygpLnVwZGF0ZShnZXRfYXR0cmlidXRlcyhtdWx0aXByb2Nlc3NpbmcuZHVtbXksICgKICAgICAgICAgJ1F1ZXVlJywgJ0xvY2snLCAnUkxvY2snLCAnU2VtYXBob3JlJywgJ0JvdW5kZWRTZW1hcGhvcmUnLAotICAgICAgICAnQ29uZGl0aW9uJywgJ0V2ZW50JywgJ1ZhbHVlJywgJ0FycmF5JywgJ2N1cnJlbnRfcHJvY2VzcycsCisgICAgICAgICdDb25kaXRpb24nLCAnRXZlbnQnLCAnQmFycmllcicsICdWYWx1ZScsICdBcnJheScsICdjdXJyZW50X3Byb2Nlc3MnLAogICAgICAgICAnYWN0aXZlX2NoaWxkcmVuJywgJ1BpcGUnLCAnY29ubmVjdGlvbicsICdkaWN0JywgJ2xpc3QnLAogICAgICAgICAnTmFtZXNwYWNlJywgJ0pvaW5hYmxlUXVldWUnLCAnUG9vbCcKICAgICAgICAgKSkpCkBAIC0yMzMwLDYgKzMwNjQsNyBAQAogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzZWxmLm1nci5zaHV0ZG93bigpCisgICAgICAgIHNlbGYubWdyLmpvaW4oKQogCiAgICAgZGVmIHRlc3RfbWFuYWdlcl9pbml0aWFsaXplcihzZWxmKToKICAgICAgICAgbSA9IG11bHRpcHJvY2Vzc2luZy5tYW5hZ2Vycy5TeW5jTWFuYWdlcigpCkBAIC0yMzM3LDYgKzMwNzIsNyBAQAogICAgICAgICBtLnN0YXJ0KGluaXRpYWxpemVyLCAoc2VsZi5ucywpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubnMudGVzdCwgMSkKICAgICAgICAgbS5zaHV0ZG93bigpCisgICAgICAgIG0uam9pbigpCiAKICAgICBkZWYgdGVzdF9wb29sX2luaXRpYWxpemVyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG11bHRpcHJvY2Vzc2luZy5Qb29sLCBpbml0aWFsaXplcj0xKQpAQCAtMjM2OSw2ICszMTA1LDggQEAKIGRlZiBwb29sX2luX3Byb2Nlc3MoKToKICAgICBwb29sID0gbXVsdGlwcm9jZXNzaW5nLlBvb2wocHJvY2Vzc2VzPTQpCiAgICAgeCA9IHBvb2wubWFwKF9hZnVuYywgWzEsIDIsIDMsIDQsIDUsIDYsIDddKQorICAgIHBvb2wuY2xvc2UoKQorICAgIHBvb2wuam9pbigpCiAKIGNsYXNzIF9maWxlX2xpa2Uob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZGVsZWdhdGUpOgpAQCAtMjQxMyw2ICszMTUxLDE4MSBAQAogICAgICAgICBhc3NlcnQgc2lvLmdldHZhbHVlKCkgPT0gJ2ZvbycKIAogCitjbGFzcyBUZXN0V2FpdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2NoaWxkX3Rlc3Rfd2FpdChjbHMsIHcsIHNsb3cpOgorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMCk6CisgICAgICAgICAgICBpZiBzbG93OgorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAocmFuZG9tLnJhbmRvbSgpKjAuMSkKKyAgICAgICAgICAgIHcuc2VuZCgoaSwgb3MuZ2V0cGlkKCkpKQorICAgICAgICB3LmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X3dhaXQoc2VsZiwgc2xvdz1GYWxzZSk6CisgICAgICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IHdhaXQKKyAgICAgICAgcmVhZGVycyA9IFtdCisgICAgICAgIHByb2NzID0gW10KKyAgICAgICAgbWVzc2FnZXMgPSBbXQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDQpOgorICAgICAgICAgICAgciwgdyA9IG11bHRpcHJvY2Vzc2luZy5QaXBlKGR1cGxleD1GYWxzZSkKKyAgICAgICAgICAgIHAgPSBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fY2hpbGRfdGVzdF93YWl0LCBhcmdzPSh3LCBzbG93KSkKKyAgICAgICAgICAgIHAuZGFlbW9uID0gVHJ1ZQorICAgICAgICAgICAgcC5zdGFydCgpCisgICAgICAgICAgICB3LmNsb3NlKCkKKyAgICAgICAgICAgIHJlYWRlcnMuYXBwZW5kKHIpCisgICAgICAgICAgICBwcm9jcy5hcHBlbmQocCkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLmpvaW4pCisKKyAgICAgICAgd2hpbGUgcmVhZGVyczoKKyAgICAgICAgICAgIGZvciByIGluIHdhaXQocmVhZGVycyk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBtc2cgPSByLnJlY3YoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFT0ZFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmVhZGVycy5yZW1vdmUocikKKyAgICAgICAgICAgICAgICAgICAgci5jbG9zZSgpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXMuYXBwZW5kKG1zZykKKworICAgICAgICBtZXNzYWdlcy5zb3J0KCkKKyAgICAgICAgZXhwZWN0ZWQgPSBzb3J0ZWQoKGksIHAucGlkKSBmb3IgaSBpbiByYW5nZSgxMCkgZm9yIHAgaW4gcHJvY3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVzc2FnZXMsIGV4cGVjdGVkKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9jaGlsZF90ZXN0X3dhaXRfc29ja2V0KGNscywgYWRkcmVzcywgc2xvdyk6CisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgcy5jb25uZWN0KGFkZHJlc3MpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwKToKKyAgICAgICAgICAgIGlmIHNsb3c6CisgICAgICAgICAgICAgICAgdGltZS5zbGVlcChyYW5kb20ucmFuZG9tKCkqMC4xKQorICAgICAgICAgICAgcy5zZW5kYWxsKCgnJXNcbicgJSBpKS5lbmNvZGUoJ2FzY2lpJykpCisgICAgICAgIHMuY2xvc2UoKQorCisgICAgZGVmIHRlc3Rfd2FpdF9zb2NrZXQoc2VsZiwgc2xvdz1GYWxzZSk6CisgICAgICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IHdhaXQKKyAgICAgICAgbCA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBsLmJpbmQoKCcnLCAwKSkKKyAgICAgICAgbC5saXN0ZW4oNCkKKyAgICAgICAgYWRkciA9ICgnbG9jYWxob3N0JywgbC5nZXRzb2NrbmFtZSgpWzFdKQorICAgICAgICByZWFkZXJzID0gW10KKyAgICAgICAgcHJvY3MgPSBbXQorICAgICAgICBkaWMgPSB7fQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDQpOgorICAgICAgICAgICAgcCA9IG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKHRhcmdldD1zZWxmLl9jaGlsZF90ZXN0X3dhaXRfc29ja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KGFkZHIsIHNsb3cpKQorICAgICAgICAgICAgcC5kYWVtb24gPSBUcnVlCisgICAgICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgICAgIHByb2NzLmFwcGVuZChwKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuam9pbikKKworICAgICAgICBmb3IgaSBpbiByYW5nZSg0KToKKyAgICAgICAgICAgIHIsIF8gPSBsLmFjY2VwdCgpCisgICAgICAgICAgICByZWFkZXJzLmFwcGVuZChyKQorICAgICAgICAgICAgZGljW3JdID0gW10KKyAgICAgICAgbC5jbG9zZSgpCisKKyAgICAgICAgd2hpbGUgcmVhZGVyczoKKyAgICAgICAgICAgIGZvciByIGluIHdhaXQocmVhZGVycyk6CisgICAgICAgICAgICAgICAgbXNnID0gci5yZWN2KDMyKQorICAgICAgICAgICAgICAgIGlmIG5vdCBtc2c6CisgICAgICAgICAgICAgICAgICAgIHJlYWRlcnMucmVtb3ZlKHIpCisgICAgICAgICAgICAgICAgICAgIHIuY2xvc2UoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGRpY1tyXS5hcHBlbmQobXNnKQorCisgICAgICAgIGV4cGVjdGVkID0gJycuam9pbignJXNcbicgJSBpIGZvciBpIGluIHJhbmdlKDEwKSkuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIGZvciB2IGluIGRpYy52YWx1ZXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLmpvaW4odiksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3Rfd2FpdF9zbG93KHNlbGYpOgorICAgICAgICBzZWxmLnRlc3Rfd2FpdChUcnVlKQorCisgICAgZGVmIHRlc3Rfd2FpdF9zb2NrZXRfc2xvdyhzZWxmKToKKyAgICAgICAgc2VsZi50ZXN0X3dhaXRfc29ja2V0KFRydWUpCisKKyAgICBkZWYgdGVzdF93YWl0X3RpbWVvdXQoc2VsZik6CisgICAgICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IHdhaXQKKworICAgICAgICBleHBlY3RlZCA9IDUKKyAgICAgICAgYSwgYiA9IG11bHRpcHJvY2Vzc2luZy5QaXBlKCkKKworICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAgIHJlcyA9IHdhaXQoW2EsIGJdLCBleHBlY3RlZCkKKyAgICAgICAgZGVsdGEgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoZGVsdGEsIGV4cGVjdGVkICogMikKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGRlbHRhLCBleHBlY3RlZCAqIDAuNSkKKworICAgICAgICBiLnNlbmQoTm9uZSkKKworICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAgIHJlcyA9IHdhaXQoW2EsIGJdLCAyMCkKKyAgICAgICAgZGVsdGEgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIFthXSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGRlbHRhLCAwLjQpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2lnbmFsX2FuZF9zbGVlcChjbHMsIHNlbSwgcGVyaW9kKToKKyAgICAgICAgc2VtLnJlbGVhc2UoKQorICAgICAgICB0aW1lLnNsZWVwKHBlcmlvZCkKKworICAgIGRlZiB0ZXN0X3dhaXRfaW50ZWdlcihzZWxmKToKKyAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAorCisgICAgICAgIGV4cGVjdGVkID0gMworICAgICAgICBzb3J0ZWRfID0gbGFtYmRhIGw6IHNvcnRlZChsLCBrZXk9bGFtYmRhIHg6IGlkKHgpKQorICAgICAgICBzZW0gPSBtdWx0aXByb2Nlc3NpbmcuU2VtYXBob3JlKDApCisgICAgICAgIGEsIGIgPSBtdWx0aXByb2Nlc3NpbmcuUGlwZSgpCisgICAgICAgIHAgPSBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5zaWduYWxfYW5kX3NsZWVwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VtLCBleHBlY3RlZCkpCisKKyAgICAgICAgcC5zdGFydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwLnNlbnRpbmVsLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZW0uYWNxdWlyZSh0aW1lb3V0PTIwKSkKKworICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAgIHJlcyA9IHdhaXQoW2EsIHAuc2VudGluZWwsIGJdLCBleHBlY3RlZCArIDIwKQorICAgICAgICBkZWx0YSA9IHRpbWUudGltZSgpIC0gc3RhcnQKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgW3Auc2VudGluZWxdKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoZGVsdGEsIGV4cGVjdGVkICsgMikKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGRlbHRhLCBleHBlY3RlZCAtIDIpCisKKyAgICAgICAgYS5zZW5kKE5vbmUpCisKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICByZXMgPSB3YWl0KFthLCBwLnNlbnRpbmVsLCBiXSwgMjApCisgICAgICAgIGRlbHRhID0gdGltZS50aW1lKCkgLSBzdGFydAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkXyhyZXMpLCBzb3J0ZWRfKFtwLnNlbnRpbmVsLCBiXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhkZWx0YSwgMC40KQorCisgICAgICAgIGIuc2VuZChOb25lKQorCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgcmVzID0gd2FpdChbYSwgcC5zZW50aW5lbCwgYl0sIDIwKQorICAgICAgICBkZWx0YSA9IHRpbWUudGltZSgpIC0gc3RhcnQKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZF8ocmVzKSwgc29ydGVkXyhbYSwgcC5zZW50aW5lbCwgYl0pKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoZGVsdGEsIDAuNCkKKworICAgICAgICBwLnRlcm1pbmF0ZSgpCisgICAgICAgIHAuam9pbigpCisKKyAgICBkZWYgdGVzdF9uZWdfdGltZW91dChzZWxmKToKKyAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAorICAgICAgICBhLCBiID0gbXVsdGlwcm9jZXNzaW5nLlBpcGUoKQorICAgICAgICB0ID0gdGltZS50aW1lKCkKKyAgICAgICAgcmVzID0gd2FpdChbYV0sIHRpbWVvdXQ9LTEpCisgICAgICAgIHQgPSB0aW1lLnRpbWUoKSAtIHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydExlc3ModCwgMSkKKyAgICAgICAgYS5jbG9zZSgpCisgICAgICAgIGIuY2xvc2UoKQorCiAjCiAjIElzc3VlIDE0MTUxOiBUZXN0IGludmFsaWQgZmFtaWx5IG9uIGludmFsaWQgZW52aXJvbm1lbnQKICMKQEAgLTI0MzAsNiArMzM0MywzOCBAQAogICAgICAgICAgICAgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24uTGlzdGVuZXIoJy92YXIvdGVzdC5waXBlJykKIAogIworIyBJc3N1ZSAxMjA5ODogY2hlY2sgc3lzLmZsYWdzIG9mIGNoaWxkIG1hdGNoZXMgdGhhdCBmb3IgcGFyZW50CisjCisKK2NsYXNzIFRlc3RGbGFncyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHJ1bl9pbl9ncmFuZGNoaWxkKGNscywgY29ubik6CisgICAgICAgIGNvbm4uc2VuZCh0dXBsZShzeXMuZmxhZ3MpKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHJ1bl9pbl9jaGlsZChjbHMpOgorICAgICAgICBpbXBvcnQganNvbgorICAgICAgICByLCB3ID0gbXVsdGlwcm9jZXNzaW5nLlBpcGUoZHVwbGV4PUZhbHNlKQorICAgICAgICBwID0gbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3ModGFyZ2V0PWNscy5ydW5faW5fZ3JhbmRjaGlsZCwgYXJncz0odywpKQorICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgZ3JhbmRjaGlsZF9mbGFncyA9IHIucmVjdigpCisgICAgICAgIHAuam9pbigpCisgICAgICAgIHIuY2xvc2UoKQorICAgICAgICB3LmNsb3NlKCkKKyAgICAgICAgZmxhZ3MgPSAodHVwbGUoc3lzLmZsYWdzKSwgZ3JhbmRjaGlsZF9mbGFncykKKyAgICAgICAgcHJpbnQoanNvbi5kdW1wcyhmbGFncykpCisKKyAgICBkZWYgdGVzdF9mbGFncyhzZWxmKToKKyAgICAgICAgaW1wb3J0IGpzb24sIHN1YnByb2Nlc3MKKyAgICAgICAgIyBzdGFydCBjaGlsZCBwcm9jZXNzIHVzaW5nIHVudXN1YWwgZmxhZ3MKKyAgICAgICAgcHJvZyA9ICgnZnJvbSB0ZXN0LnRlc3RfbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBUZXN0RmxhZ3M7ICcgKworICAgICAgICAgICAgICAgICdUZXN0RmxhZ3MucnVuX2luX2NoaWxkKCknKQorICAgICAgICBkYXRhID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoCisgICAgICAgICAgICBbc3lzLmV4ZWN1dGFibGUsICctRScsICctUycsICctTycsICctYycsIHByb2ddKQorICAgICAgICBjaGlsZF9mbGFncywgZ3JhbmRjaGlsZF9mbGFncyA9IGpzb24ubG9hZHMoZGF0YS5kZWNvZGUoJ2FzY2lpJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hpbGRfZmxhZ3MsIGdyYW5kY2hpbGRfZmxhZ3MpCisKKyMKICMgVGVzdCBpbnRlcmFjdGlvbiB3aXRoIHNvY2tldCB0aW1lb3V0cyAtIHNlZSBJc3N1ZSAjNjA1NgogIwogCkBAIC0yNDg0LDggKzM0MjksOCBAQAogIwogCiB0ZXN0Y2FzZXNfb3RoZXIgPSBbT3RoZXJUZXN0LCBUZXN0SW52YWxpZEhhbmRsZSwgVGVzdEluaXRpYWxpemVycywKLSAgICAgICAgICAgICAgICAgICBUZXN0U3RkaW5CYWRmaWxlZGVzY3JpcHRvciwgVGVzdEludmFsaWRGYW1pbHksCi0gICAgICAgICAgICAgICAgICAgVGVzdFRpbWVvdXRzLCBUZXN0Tm9Gb3JrQm9tYl0KKyAgICAgICAgICAgICAgICAgICBUZXN0U3RkaW5CYWRmaWxlZGVzY3JpcHRvciwgVGVzdFdhaXQsIFRlc3RJbnZhbGlkRmFtaWx5LAorICAgICAgICAgICAgICAgICAgIFRlc3RGbGFncywgVGVzdFRpbWVvdXRzLCBUZXN0Tm9Gb3JrQm9tYl0KIAogIwogIwpAQCAtMjUyMiwxNCArMzQ2NywxOCBAQAogCiAgICAgbG9hZFRlc3RzRnJvbVRlc3RDYXNlID0gdW5pdHRlc3QuZGVmYXVsdFRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbVRlc3RDYXNlCiAgICAgc3VpdGUgPSB1bml0dGVzdC5UZXN0U3VpdGUobG9hZFRlc3RzRnJvbVRlc3RDYXNlKHRjKSBmb3IgdGMgaW4gdGVzdGNhc2VzKQotICAgIHJ1bihzdWl0ZSkKLQotICAgIFRocmVhZHNNaXhpbi5wb29sLnRlcm1pbmF0ZSgpCi0gICAgUHJvY2Vzc2VzTWl4aW4ucG9vbC50ZXJtaW5hdGUoKQotICAgIE1hbmFnZXJNaXhpbi5wb29sLnRlcm1pbmF0ZSgpCi0gICAgTWFuYWdlck1peGluLm1hbmFnZXIuc2h1dGRvd24oKQotCi0gICAgZGVsIFByb2Nlc3Nlc01peGluLnBvb2wsIFRocmVhZHNNaXhpbi5wb29sLCBNYW5hZ2VyTWl4aW4ucG9vbAorICAgIHRyeToKKyAgICAgICAgcnVuKHN1aXRlKQorICAgIGZpbmFsbHk6CisgICAgICAgIFRocmVhZHNNaXhpbi5wb29sLnRlcm1pbmF0ZSgpCisgICAgICAgIFByb2Nlc3Nlc01peGluLnBvb2wudGVybWluYXRlKCkKKyAgICAgICAgTWFuYWdlck1peGluLnBvb2wudGVybWluYXRlKCkKKyAgICAgICAgTWFuYWdlck1peGluLnBvb2wuam9pbigpCisgICAgICAgIE1hbmFnZXJNaXhpbi5tYW5hZ2VyLnNodXRkb3duKCkKKyAgICAgICAgTWFuYWdlck1peGluLm1hbmFnZXIuam9pbigpCisgICAgICAgIFRocmVhZHNNaXhpbi5wb29sLmpvaW4oKQorICAgICAgICBQcm9jZXNzZXNNaXhpbi5wb29sLmpvaW4oKQorICAgICAgICBkZWwgUHJvY2Vzc2VzTWl4aW4ucG9vbCwgVGhyZWFkc01peGluLnBvb2wsIE1hbmFnZXJNaXhpbi5wb29sCiAKIGRlZiBtYWluKCk6CiAgICAgdGVzdF9tYWluKHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyKHZlcmJvc2l0eT0yKS5ydW4pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211dGFudHMucHkgYi9MaWIvdGVzdC90ZXN0X211dGFudHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0M2ZhNDcuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdF9tdXRhbnRzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjkxICswLDAgQEAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBURVNURk4KLWltcG9ydCByYW5kb20KLWltcG9ydCBvcwotCi0jIEZyb20gU0YgYnVnICM0MjIxMjE6ICBJbnNlY3VyaXRpZXMgaW4gZGljdCBjb21wYXJpc29uLgotCi0jIFNhZmV0eSBvZiBjb2RlIGRvaW5nIGNvbXBhcmlzb25zIGhhcyBiZWVuIGFuIGhpc3RvcmljYWwgUHl0aG9uIHdlYWsgc3BvdC4KLSMgVGhlIHByb2JsZW0gaXMgdGhhdCBjb21wYXJpc29uIG9mIHN0cnVjdHVyZXMgd3JpdHRlbiBpbiBDICpuYXR1cmFsbHkqCi0jIHdhbnRzIHRvIGhvbGQgb24gdG8gdGhpbmdzIGxpa2UgdGhlIHNpemUgb2YgdGhlIGNvbnRhaW5lciwgb3IgInRoZQotIyBiaWdnZXN0IiBjb250YWluZWUgc28gZmFyLCBhY3Jvc3MgYSB0cmF2ZXJzYWwgb2YgdGhlIGNvbnRhaW5lcjsgYnV0Ci0jIGNvZGUgdG8gZG8gY29udGFpbmVlIGNvbXBhcmlzb25zIGNhbiBjYWxsIGJhY2sgaW50byBQeXRob24gYW5kIG11dGF0ZQotIyB0aGUgY29udGFpbmVyIGluIGFyYml0cmFyeSB3YXlzIHdoaWxlIHRoZSBDIGxvb3AgaXMgaW4gbWlkc3RyZWFtLiAgSWYgdGhlCi0jIEMgY29kZSBpc24ndCBleHRyZW1lbHkgcGFyYW5vaWQgYWJvdXQgZGlnZ2luZyB0aGluZ3Mgb3V0IG9mIG1lbW9yeSBvbgotIyBlYWNoIHRyaXAsIGFuZCBhcnRpZmljaWFsbHkgYm9vc3RpbmcgcmVmY291bnRzIGZvciB0aGUgZHVyYXRpb24sIGFueXRoaW5nCi0jIGZyb20gaW5maW5pdGUgbG9vcHMgdG8gT1MgY3Jhc2hlcyBjYW4gcmVzdWx0ICh5ZXMsIEkgdXNlIFdpbmRvd3MgPHdpbms+KS4KLSMKLSMgVGhlIG90aGVyIHByb2JsZW0gaXMgdGhhdCBjb2RlIGRlc2lnbmVkIHRvIHByb3Zva2UgYSB3ZWFrbmVzcyBpcyB1c3VhbGx5Ci0jIHdoaXRlLWJveCBjb2RlLCBhbmQgc28gY2F0Y2hlcyBvbmx5IHRoZSBwYXJ0aWN1bGFyIHZ1bG5lcmFiaWxpdGllcyB0aGUKLSMgYXV0aG9yIGtuZXcgdG8gcHJvdGVjdCBhZ2FpbnN0LiAgRm9yIGV4YW1wbGUsIFB5dGhvbidzIGxpc3Quc29ydCgpIGNvZGUKLSMgd2VudCB0aHJ1IG1hbnkgaXRlcmF0aW9ucyBhcyBvbmUgIm5ldyIgdnVsbmVyYWJpbGl0eSBhZnRlciBhbm90aGVyIHdhcwotIyBkaXNjb3ZlcmVkLgotIwotIyBTbyB0aGUgZGljdCBjb21wYXJpc29uIHRlc3QgaGVyZSB1c2VzIGEgYmxhY2stYm94IGFwcHJvYWNoIGluc3RlYWQsCi0jIGdlbmVyYXRpbmcgZGljdHMgb2YgdmFyaW91cyBzaXplcyBhdCByYW5kb20sIGFuZCBwZXJmb3JtaW5nIHJhbmRvbQotIyBtdXRhdGlvbnMgb24gdGhlbSBhdCByYW5kb20gdGltZXMuICBUaGlzIHByb3ZlZCB2ZXJ5IGVmZmVjdGl2ZSwKLSMgdHJpZ2dlcmluZyBhdCBsZWFzdCBzaXggZGlzdGluY3QgZmFpbHVyZSBtb2RlcyB0aGUgZmlyc3QgMjAgdGltZXMgSQotIyByYW4gaXQuICBJbmRlZWQsIGF0IHRoZSBzdGFydCwgdGhlIGRyaXZlciBuZXZlciBnb3QgYmV5b25kIDYgaXRlcmF0aW9ucwotIyBiZWZvcmUgdGhlIHRlc3QgZGllZC4KLQotIyBUaGUgZGljdHMgYXJlIGdsb2JhbCB0byBtYWtlIGl0IGVhc3kgdG8gbXV0YXRlIHRoYW0gZnJvbSB3aXRoaW4gZnVuY3Rpb25zLgotZGljdDEgPSB7fQotZGljdDIgPSB7fQotCi0jIFRoZSBjdXJyZW50IHNldCBvZiBrZXlzIGluIGRpY3QxIGFuZCBkaWN0Mi4gIFRoZXNlIGFyZSBtYXRlcmlhbGl6ZWQgYXMKLSMgbGlzdHMgdG8gbWFrZSBpdCBlYXN5IHRvIHBpY2sgYSBkaWN0IGtleSBhdCByYW5kb20uCi1kaWN0MWtleXMgPSBbXQotZGljdDJrZXlzID0gW10KLQotIyBHbG9iYWwgZmxhZyB0ZWxsaW5nIG1heWJlX211dGF0ZSgpIHdoZXRoZXIgdG8gKmNvbnNpZGVyKiBtdXRhdGluZy4KLW11dGF0ZSA9IDAKLQotIyBJZiBnbG9iYWwgbXV0YXRlIGlzIHRydWUsIGNvbnNpZGVyIG11dGF0aW5nIGEgZGljdC4gIE1heSBvciBtYXkgbm90Ci0jIG11dGF0ZSBhIGRpY3QgZXZlbiBpZiBtdXRhdGUgaXMgdHJ1ZS4gIElmIGl0IGRvZXMgZGVjaWRlIHRvIG11dGF0ZSBhCi0jIGRpY3QsIGl0IHBpY2tzIG9uZSBvZiB7ZGljdDEsIGRpY3QyfSBhdCByYW5kb20sIGFuZCBkZWxldGVzIGEgcmFuZG9tCi0jIGVudHJ5IGZyb20gaXQ7IG9yLCBtb3JlIHJhcmVseSwgYWRkcyBhIHJhbmRvbSBlbGVtZW50LgotCi1kZWYgbWF5YmVfbXV0YXRlKCk6Ci0gICAgZ2xvYmFsIG11dGF0ZQotICAgIGlmIG5vdCBtdXRhdGU6Ci0gICAgICAgIHJldHVybgotICAgIGlmIHJhbmRvbS5yYW5kb20oKSA8IDAuNToKLSAgICAgICAgcmV0dXJuCi0KLSAgICBpZiByYW5kb20ucmFuZG9tKCkgPCAwLjU6Ci0gICAgICAgIHRhcmdldCwga2V5cyA9IGRpY3QxLCBkaWN0MWtleXMKLSAgICBlbHNlOgotICAgICAgICB0YXJnZXQsIGtleXMgPSBkaWN0MiwgZGljdDJrZXlzCi0KLSAgICBpZiByYW5kb20ucmFuZG9tKCkgPCAwLjI6Ci0gICAgICAgICMgSW5zZXJ0IGEgbmV3IGtleS4KLSAgICAgICAgbXV0YXRlID0gMCAgICMgZGlzYWJsZSBtdXRhdGlvbiB1bnRpbCBrZXkgaW5zZXJ0ZWQKLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIG5ld2tleSA9IEhvcnJpZChyYW5kb20ucmFuZHJhbmdlKDEwMCkpCi0gICAgICAgICAgICBpZiBuZXdrZXkgbm90IGluIHRhcmdldDoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICB0YXJnZXRbbmV3a2V5XSA9IEhvcnJpZChyYW5kb20ucmFuZHJhbmdlKDEwMCkpCi0gICAgICAgIGtleXMuYXBwZW5kKG5ld2tleSkKLSAgICAgICAgbXV0YXRlID0gMQotCi0gICAgZWxpZiBrZXlzOgotICAgICAgICAjIERlbGV0ZSBhIGtleSBhdCByYW5kb20uCi0gICAgICAgIG11dGF0ZSA9IDAgICAjIGRpc2FibGUgbXV0YXRpb24gdW50aWwga2V5IGRlbGV0ZWQKLSAgICAgICAgaSA9IHJhbmRvbS5yYW5kcmFuZ2UobGVuKGtleXMpKQotICAgICAgICBrZXkgPSBrZXlzW2ldCi0gICAgICAgIGRlbCB0YXJnZXRba2V5XQotICAgICAgICBkZWwga2V5c1tpXQotICAgICAgICBtdXRhdGUgPSAxCi0KLSMgQSBob3JyaWQgY2xhc3MgdGhhdCB0cmlnZ2VycyByYW5kb20gbXV0YXRpb25zIG9mIGRpY3QxIGFuZCBkaWN0MiB3aGVuCi0jIGluc3RhbmNlcyBhcmUgY29tcGFyZWQuCi0KLWNsYXNzIEhvcnJpZDoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaSk6Ci0gICAgICAgICMgQ29tcGFyaXNvbiBvdXRjb21lcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgaS4KLSAgICAgICAgc2VsZi5pID0gaQotCi0gICAgICAgICMgQW4gYXJ0aWZpY2lhbCBoYXNoY29kZSBpcyBzZWxlY3RlZCBhdCByYW5kb20gc28gdGhhdCB3ZSBkb24ndAotICAgICAgICAjIGhhdmUgYW55IHN5c3RlbWF0aWMgcmVsYXRpb25zaGlwIGJldHdlZW4gY29tcGFyaXNvbiBvdXRjb21lcwotICAgICAgICAjIChiYXNlZCBvbiBzZWxmLmkgYW5kIG90aGVyLmkpIGFuZCByZWxhdGl2ZSBwb3NpdGlvbiB3aXRoaW4gdGhlCi0gICAgICAgICMgaGFzaCB2ZWN0b3IgKGJhc2VkIG9uIGhhc2hjb2RlKS4KLSAgICAgICAgIyBYWFggVGhpcyBpcyBubyBsb25nZXIgZWZmZWN0aXZlLgotICAgICAgICAjI3NlbGYuaGFzaGNvZGUgPSByYW5kb20ucmFuZHJhbmdlKDEwMDAwMDAwMDApCi0KLSAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0gICAgICAgIHJldHVybiA0MgotICAgICAgICByZXR1cm4gc2VsZi5oYXNoY29kZQotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIG1heWJlX211dGF0ZSgpICAgIyBUaGUgcG9pbnQgb2YgdGhlIHRlc3QuCi0gICAgICAgIHJldHVybiBzZWxmLmkgPT0gb3RoZXIuaQotCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiSSBkaWRuJ3QgZXhwZWN0IHNvbWUga2luZCBvZiBTcGFuaXNoIGlucXVpc2l0aW9uISIpCi0KLSAgICBfX2x0X18gPSBfX2xlX18gPSBfX2d0X18gPSBfX2dlX18gPSBfX25lX18KLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJIb3JyaWQoJWQpIiAlIHNlbGYuaQotCi0jIEZpbGwgZGljdCBkIHdpdGggbnVtZW50cmllcyAoSG9ycmlkKGkpLCBIb3JyaWQoaikpIGtleS12YWx1ZSBwYWlycywKLSMgd2hlcmUgaSBhbmQgaiBhcmUgc2VsZWN0ZWQgYXQgcmFuZG9tIGZyb20gdGhlIGNhbmRpZGF0ZXMgbGlzdC4KLSMgUmV0dXJuIGQua2V5cygpIGFmdGVyIGZpbGxpbmcuCi0KLWRlZiBmaWxsX2RpY3QoZCwgY2FuZGlkYXRlcywgbnVtZW50cmllcyk6Ci0gICAgZC5jbGVhcigpCi0gICAgZm9yIGkgaW4gcmFuZ2UobnVtZW50cmllcyk6Ci0gICAgICAgIGRbSG9ycmlkKHJhbmRvbS5jaG9pY2UoY2FuZGlkYXRlcykpXSA9IFwKLSAgICAgICAgICAgIEhvcnJpZChyYW5kb20uY2hvaWNlKGNhbmRpZGF0ZXMpKQotICAgIHJldHVybiBsaXN0KGQua2V5cygpKQotCi0jIFRlc3Qgb25lIHBhaXIgb2YgcmFuZG9tbHkgZ2VuZXJhdGVkIGRpY3RzLCBlYWNoIHdpdGggbiBlbnRyaWVzLgotIyBOb3RlIHRoYXQgZGljdCBjb21wYXJpc29uIGlzIHRyaXZpYWwgaWYgdGhleSBkb24ndCBoYXZlIHRoZSBzYW1lIG51bWJlcgotIyBvZiBlbnRpcmVzICh0aGVuIHRoZSAic2hvcnRlciIgZGljdCBpcyBpbnN0YW50bHkgY29uc2lkZXJlZCB0byBiZSB0aGUKLSMgc21hbGxlciBvbmUsIHdpdGhvdXQgZXZlbiBsb29raW5nIGF0IHRoZSBlbnRyaWVzKS4KLQotZGVmIHRlc3Rfb25lKG4pOgotICAgIGdsb2JhbCBtdXRhdGUsIGRpY3QxLCBkaWN0MiwgZGljdDFrZXlzLCBkaWN0MmtleXMKLQotICAgICMgRmlsbCB0aGUgZGljdHMgd2l0aG91dCBtdXRhdGluZyB0aGVtLgotICAgIG11dGF0ZSA9IDAKLSAgICBkaWN0MWtleXMgPSBmaWxsX2RpY3QoZGljdDEsIHJhbmdlKG4pLCBuKQotICAgIGRpY3Qya2V5cyA9IGZpbGxfZGljdChkaWN0MiwgcmFuZ2UobiksIG4pCi0KLSAgICAjIEVuYWJsZSBtdXRhdGlvbiwgdGhlbiBjb21wYXJlIHRoZSBkaWN0cyBzbyBsb25nIGFzIHRoZXkgaGF2ZSB0aGUKLSAgICAjIHNhbWUgc2l6ZS4KLSAgICBtdXRhdGUgPSAxCi0gICAgaWYgdmVyYm9zZToKLSAgICAgICAgcHJpbnQoInRyeWluZyB3LyBsZW5ndGhzIiwgbGVuKGRpY3QxKSwgbGVuKGRpY3QyKSwgZW5kPScgJykKLSAgICB3aGlsZSBkaWN0MSBhbmQgbGVuKGRpY3QxKSA9PSBsZW4oZGljdDIpOgotICAgICAgICBpZiB2ZXJib3NlOgotICAgICAgICAgICAgcHJpbnQoIi4iLCBlbmQ9JyAnKQotICAgICAgICBjID0gZGljdDEgPT0gZGljdDIKLSAgICBpZiB2ZXJib3NlOgotICAgICAgICBwcmludCgpCi0KLSMgUnVuIHRlc3Rfb25lIG4gdGltZXMuICBBdCB0aGUgc3RhcnQgKGJlZm9yZSB0aGUgYnVncyB3ZXJlIGZpeGVkKSwgMjAKLSMgY29uc2VjdXRpdmUgcnVucyBvZiB0aGlzIHRlc3QgZWFjaCBibGV3IHVwIG9uIG9yIGJlZm9yZSB0aGUgc2l4dGggdGltZQotIyB0ZXN0X29uZSB3YXMgcnVuLiAgU28gbiBkb2Vzbid0IGhhdmUgdG8gYmUgbGFyZ2UgdG8gZ2V0IGFuIGludGVyZXN0aW5nCi0jIHRlc3QuCi0jIE9UT0gsIGNhbGxpbmcgd2l0aCBsYXJnZSBuIGlzIGFsc28gaW50ZXJlc3RpbmcsIHRvIGVuc3VyZSB0aGF0IHRoZSBmaXhlZAotIyBjb2RlIGRvZXNuJ3QgaG9sZCBvbiB0byByZWZjb3VudHMgKnRvbyogbG9uZyAoaW4gd2hpY2ggY2FzZSBtZW1vcnkgd291bGQKLSMgbGVhaykuCi0KLWRlZiB0ZXN0KG4pOgotICAgIGZvciBpIGluIHJhbmdlKG4pOgotICAgICAgICB0ZXN0X29uZShyYW5kb20ucmFuZHJhbmdlKDEsIDEwMCkpCi0KLSMgU2VlIGxhc3QgY29tbWVudCBibG9jayBmb3IgY2x1ZXMgYWJvdXQgZ29vZCB2YWx1ZXMgZm9yIG4uCi10ZXN0KDEwMCkKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQW5vdGhlciBzZWdmYXVsdCBidWcsIGRpc3RpbGxlZCBieSBNaWNoYWVsIEh1ZHNvbiBmcm9tIGEgYy5sLnB5IHBvc3QuCi0KLWNsYXNzIENoaWxkOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgotICAgICAgICBzZWxmLl9fZGljdF9fWydwYXJlbnQnXSA9IHBhcmVudAotICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRyKToKLSAgICAgICAgc2VsZi5wYXJlbnQuYSA9IDEKLSAgICAgICAgc2VsZi5wYXJlbnQuYiA9IDEKLSAgICAgICAgc2VsZi5wYXJlbnQuYyA9IDEKLSAgICAgICAgc2VsZi5wYXJlbnQuZCA9IDEKLSAgICAgICAgc2VsZi5wYXJlbnQuZSA9IDEKLSAgICAgICAgc2VsZi5wYXJlbnQuZiA9IDEKLSAgICAgICAgc2VsZi5wYXJlbnQuZyA9IDEKLSAgICAgICAgc2VsZi5wYXJlbnQuaCA9IDEKLSAgICAgICAgc2VsZi5wYXJlbnQuaSA9IDEKLSAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZi5wYXJlbnQsIGF0dHIpCi0KLWNsYXNzIFBhcmVudDoKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuYSA9IENoaWxkKHNlbGYpCi0KLSMgSGFyZCB0byBzYXkgd2hhdCB0aGlzIHdpbGwgcHJpbnQhICBNYXkgdmFyeSBmcm9tIHRpbWUgdG8gdGltZS4gIEJ1dAotIyB3ZSdyZSBzcGVjaWZpY2FsbHkgdHJ5aW5nIHRvIHRlc3QgdGhlIHRwX3ByaW50IHNsb3QgaGVyZSwgYW5kIHRoaXMgaXMKLSMgdGhlIGNsZWFyZXN0IHdheSB0byBkbyBpdC4gIFdlIHByaW50IHRoZSByZXN1bHQgdG8gYSB0ZW1wIGZpbGUgc28gdGhhdAotIyB0aGUgZXhwZWN0ZWQtb3V0cHV0IGZpbGUgZG9lc24ndCBuZWVkIHRvIGNoYW5nZS4KLQotZiA9IG9wZW4oVEVTVEZOLCAidyIpCi1wcmludChQYXJlbnQoKS5fX2RpY3RfXywgZmlsZT1mKQotZi5jbG9zZSgpCi1vcy51bmxpbmsoVEVTVEZOKQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBBbmQgYW5vdGhlciBjb3JlLWR1bXBlciBmcm9tIE1pY2hhZWwgSHVkc29uLgotCi1kaWN0ID0ge30KLQotIyBGb3JjZSBkaWN0IHRvIG1hbGxvYyBpdHMgdGFibGUuCi1mb3IgaSBpbiByYW5nZSgxLCAxMCk6Ci0gICAgZGljdFtpXSA9IGkKLQotZiA9IG9wZW4oVEVTVEZOLCAidyIpCi0KLWNsYXNzIE1hY2hpYXZlbGxpOgotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgZGljdC5jbGVhcigpCi0KLSAgICAgICAgIyBNaWNoYWVsIHNlejogICJkb2Vzbid0IGNyYXNoIHdpdGhvdXQgdGhpcy4gIGRvbid0IGtub3cgd2h5LiIKLSAgICAgICAgIyBUaW0gc2V6OiAgImx1Y2sgb2YgdGhlIGRyYXc7IGNyYXNoZXMgd2l0aCBvciB3aXRob3V0IGZvciBtZS4iCi0gICAgICAgIHByaW50KGZpbGU9ZikKLQotICAgICAgICByZXR1cm4gcmVwcigibWFjaGlhdmVsbGkiKQotCi0gICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gMAotCi1kaWN0W01hY2hpYXZlbGxpKCldID0gTWFjaGlhdmVsbGkoKQotCi1wcmludChzdHIoZGljdCksIGZpbGU9ZikKLWYuY2xvc2UoKQotb3MudW5saW5rKFRFU1RGTikKLWRlbCBmLCBkaWN0Ci0KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQW5kIGFub3RoZXIgY29yZS1kdW1wZXIgZnJvbSBNaWNoYWVsIEh1ZHNvbi4KLQotZGljdCA9IHt9Ci0KLSMgbGV0J3MgZm9yY2UgZGljdCB0byBtYWxsb2MgaXRzIHRhYmxlCi1mb3IgaSBpbiByYW5nZSgxLCAxMCk6Ci0gICAgZGljdFtpXSA9IGkKLQotY2xhc3MgTWFjaGlhdmVsbGkyOgotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBkaWN0LmNsZWFyKCkKLSAgICAgICAgcmV0dXJuIDEKLQotICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIDAKLQotZGljdFtNYWNoaWF2ZWxsaTIoKV0gPSBNYWNoaWF2ZWxsaTIoKQotCi10cnk6Ci0gICAgZGljdFtNYWNoaWF2ZWxsaTIoKV0KLWV4Y2VwdCBLZXlFcnJvcjoKLSAgICBwYXNzCi0KLWRlbCBkaWN0Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIEFuZCBhbm90aGVyIGNvcmUtZHVtcGVyIGZyb20gTWljaGFlbCBIdWRzb24uCi0KLWRpY3QgPSB7fQotCi0jIGxldCdzIGZvcmNlIGRpY3QgdG8gbWFsbG9jIGl0cyB0YWJsZQotZm9yIGkgaW4gcmFuZ2UoMSwgMTApOgotICAgIGRpY3RbaV0gPSBpCi0KLWNsYXNzIE1hY2hpYXZlbGxpMzoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaWQpOgotICAgICAgICBzZWxmLmlkID0gaWQKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBpZiBzZWxmLmlkID09IG90aGVyLmlkOgotICAgICAgICAgICAgZGljdC5jbGVhcigpCi0gICAgICAgICAgICByZXR1cm4gMQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIDAKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICIlcyglcykiJShzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5pZCkKLQotICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIDAKLQotZGljdFtNYWNoaWF2ZWxsaTMoMSldID0gTWFjaGlhdmVsbGkzKDApCi1kaWN0W01hY2hpYXZlbGxpMygyKV0gPSBNYWNoaWF2ZWxsaTMoMCkKLQotZiA9IG9wZW4oVEVTVEZOLCAidyIpCi10cnk6Ci0gICAgdHJ5OgotICAgICAgICBwcmludChkaWN0W01hY2hpYXZlbGxpMygyKV0sIGZpbGU9ZikKLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHBhc3MKLWZpbmFsbHk6Ci0gICAgZi5jbG9zZSgpCi0gICAgb3MudW5saW5rKFRFU1RGTikKLQotZGVsIGRpY3QKLWRlbCBkaWN0MSwgZGljdDIsIGRpY3Qxa2V5cywgZGljdDJrZXlzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X25hbWVzcGFjZV9wa2dzLnB5IGIvTGliL3Rlc3QvdGVzdF9uYW1lc3BhY2VfcGtncy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDY3YjEyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9uYW1lc3BhY2VfcGtncy5weQpAQCAtMCwwICsxLDI5NCBAQAoraW1wb3J0IHN5cworaW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IG9zCisKK2Zyb20gdGVzdC50ZXN0X2ltcG9ydGxpYiBpbXBvcnQgdXRpbAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorCisjIG5lZWRlZCB0ZXN0czoKKyMKKyMgbmVlZCB0byB0ZXN0IHdoZW4gbmVzdGVkLCBzbyB0aGF0IHRoZSB0b3AtbGV2ZWwgcGF0aCBpc24ndCBzeXMucGF0aAorIyBuZWVkIHRvIHRlc3QgZHluYW1pYyBwYXRoIGRldGVjdGlvbiwgYm90aCBhdCB0b3AtbGV2ZWwgYW5kIG5lc3RlZAorIyB3aXRoIGR5bmFtaWMgcGF0aCwgY2hlY2sgd2hlbiBhIGxvYWRlciBpcyByZXR1cm5lZCBvbiBwYXRoIHJlbG9hZCAodGhhdCBpcywKKyMgIHRyeWluZyB0byBzd2l0Y2ggZnJvbSBhIG5hbWVzcGFjZSBwYWNrYWdlIHRvIGEgcmVndWxhciBwYWNrYWdlKQorCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgc3lzX21vZHVsZXNfY29udGV4dCgpOgorICAgICIiIgorICAgIE1ha2Ugc3VyZSBzeXMubW9kdWxlcyBpcyB0aGUgc2FtZSBvYmplY3QgYW5kIGhhcyB0aGUgc2FtZSBjb250ZW50CisgICAgd2hlbiBleGl0aW5nIHRoZSBjb250ZXh0IGFzIHdoZW4gZW50ZXJpbmcuCisKKyAgICBTaW1pbGFyIHRvIGltcG9ydGxpYi50ZXN0LnV0aWwudW5jYWNoZSwgYnV0IGRvZXNuJ3QgcmVxdWlyZSBleHBsaWNpdAorICAgIG5hbWVzLgorICAgICIiIgorICAgIHN5c19tb2R1bGVzX3NhdmVkID0gc3lzLm1vZHVsZXMKKyAgICBzeXNfbW9kdWxlc19jb3B5ID0gc3lzLm1vZHVsZXMuY29weSgpCisgICAgdHJ5OgorICAgICAgICB5aWVsZAorICAgIGZpbmFsbHk6CisgICAgICAgIHN5cy5tb2R1bGVzID0gc3lzX21vZHVsZXNfc2F2ZWQKKyAgICAgICAgc3lzLm1vZHVsZXMuY2xlYXIoKQorICAgICAgICBzeXMubW9kdWxlcy51cGRhdGUoc3lzX21vZHVsZXNfY29weSkKKworCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIG5hbWVzcGFjZV90cmVlX2NvbnRleHQoKiprd2FyZ3MpOgorICAgICIiIgorICAgIFNhdmUgaW1wb3J0IHN0YXRlIGFuZCBzeXMubW9kdWxlcyBjYWNoZSBhbmQgcmVzdG9yZSBpdCBvbiBleGl0LgorICAgIFR5cGljYWwgdXNhZ2U6CisKKyAgICA+Pj4gd2l0aCBuYW1lc3BhY2VfdHJlZV9jb250ZXh0KHBhdGg9WycvdG1wL3h4eXkvcG9ydGlvbjEnLAorICAgIC4uLiAgICAgICAgICcvdG1wL3h4eXkvcG9ydGlvbjInXSk6CisgICAgLi4uICAgICBwYXNzCisgICAgIiIiCisgICAgIyB1c2UgZGVmYXVsdCBtZXRhX3BhdGggYW5kIHBhdGhfaG9va3MgdW5sZXNzIHNwZWNpZmllZCBvdGhlcndpc2UKKyAgICBrd2FyZ3Muc2V0ZGVmYXVsdCgnbWV0YV9wYXRoJywgc3lzLm1ldGFfcGF0aCkKKyAgICBrd2FyZ3Muc2V0ZGVmYXVsdCgncGF0aF9ob29rcycsIHN5cy5wYXRoX2hvb2tzKQorICAgIGltcG9ydF9jb250ZXh0ID0gdXRpbC5pbXBvcnRfc3RhdGUoKiprd2FyZ3MpCisgICAgd2l0aCBpbXBvcnRfY29udGV4dCwgc3lzX21vZHVsZXNfY29udGV4dCgpOgorICAgICAgICB5aWVsZAorCitjbGFzcyBOYW1lc3BhY2VQYWNrYWdlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiCisgICAgU3ViY2xhc3NlcyBzaG91bGQgZGVmaW5lIHNlbGYucm9vdCBhbmQgc2VsZi5wYXRocyAodW5kZXIgdGhhdCByb290KQorICAgIHRvIGJlIGFkZGVkIHRvIHN5cy5wYXRoLgorICAgICIiIgorICAgIHJvb3QgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJ25hbWVzcGFjZV9wa2dzJykKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5yZXNvbHZlZF9wYXRocyA9IFsKKyAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLnJvb3QsIHBhdGgpIGZvciBwYXRoIGluIHNlbGYucGF0aHMKKyAgICAgICAgXQorICAgICAgICBzZWxmLmN0eCA9IG5hbWVzcGFjZV90cmVlX2NvbnRleHQocGF0aD1zZWxmLnJlc29sdmVkX3BhdGhzKQorICAgICAgICBzZWxmLmN0eC5fX2VudGVyX18oKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAjIFRPRE86IHdpbGwgd2UgZXZlciB3YW50IHRvIHBhc3MgZXhjX2luZm8gdG8gX19leGl0X18/CisgICAgICAgIHNlbGYuY3R4Ll9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCisKK2NsYXNzIFNpbmdsZU5hbWVzcGFjZVBhY2thZ2UoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydwb3J0aW9uMSddCisKKyAgICBkZWYgdGVzdF9zaW1wbGVfcGFja2FnZShzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdwb3J0aW9uMSBmb28gb25lJykKKworICAgIGRlZiB0ZXN0X2NhbnRfaW1wb3J0X290aGVyKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcihzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGZvbyksICI8bW9kdWxlICdmb28nIChuYW1lc3BhY2UpPiIpCisKKworY2xhc3MgRHluYW1pY1BhdGhlTmFtZXNwYWNlUGFja2FnZShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ3BvcnRpb24xJ10KKworICAgIGRlZiB0ZXN0X2R5bmFtaWNfcGF0aChzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgb25seSAnZm9vLm9uZScgY2FuIGJlIGltcG9ydGVkCisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgZm9vLnR3bworCisgICAgICAgICMgTm93IG1vZGlmeSBzeXMucGF0aAorICAgICAgICBzeXMucGF0aC5hcHBlbmQob3MucGF0aC5qb2luKHNlbGYucm9vdCwgJ3BvcnRpb24yJykpCisKKyAgICAgICAgIyBBbmQgbWFrZSBzdXJlIGZvby50d28gaXMgbm93IGltcG9ydGFibGUKKyAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udHdvLmF0dHIsICdwb3J0aW9uMiBmb28gdHdvJykKKworCitjbGFzcyBDb21iaW5lZE5hbWVzcGFjZVBhY2thZ2VzKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsnYm90aF9wb3J0aW9ucyddCisKKyAgICBkZWYgdGVzdF9pbXBvcnRzKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ2JvdGhfcG9ydGlvbnMgZm9vIG9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnR3by5hdHRyLCAnYm90aF9wb3J0aW9ucyBmb28gdHdvJykKKworCitjbGFzcyBTZXBhcmF0ZWROYW1lc3BhY2VQYWNrYWdlcyhOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ3BvcnRpb24xJywgJ3BvcnRpb24yJ10KKworICAgIGRlZiB0ZXN0X2ltcG9ydHMoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnR3by5hdHRyLCAncG9ydGlvbjIgZm9vIHR3bycpCisKKworY2xhc3MgU2VwYXJhdGVkT3ZlcmxhcHBpbmdOYW1lc3BhY2VQYWNrYWdlcyhOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ3BvcnRpb24xJywgJ2JvdGhfcG9ydGlvbnMnXQorCisgICAgZGVmIHRlc3RfZmlyc3RfcGF0aF93aW5zKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ3BvcnRpb24xIGZvbyBvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ2JvdGhfcG9ydGlvbnMgZm9vIHR3bycpCisKKyAgICBkZWYgdGVzdF9maXJzdF9wYXRoX3dpbnNfYWdhaW4oc2VsZik6CisgICAgICAgIHN5cy5wYXRoLnJldmVyc2UoKQorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ2JvdGhfcG9ydGlvbnMgZm9vIG9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnR3by5hdHRyLCAnYm90aF9wb3J0aW9ucyBmb28gdHdvJykKKworICAgIGRlZiB0ZXN0X2ZpcnN0X3BhdGhfd2luc19pbXBvcnRpbmdfc2Vjb25kX2ZpcnN0KHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ3BvcnRpb24xIGZvbyBvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ2JvdGhfcG9ydGlvbnMgZm9vIHR3bycpCisKKworY2xhc3MgU2luZ2xlWmlwTmFtZXNwYWNlUGFja2FnZShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ3RvcF9sZXZlbF9wb3J0aW9uMS56aXAnXQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX3BhY2thZ2Uoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisKKyAgICBkZWYgdGVzdF9jYW50X2ltcG9ydF9vdGhlcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgZm9vLnR3bworCisKK2NsYXNzIFNlcGFyYXRlZFppcE5hbWVzcGFjZVBhY2thZ2VzKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsndG9wX2xldmVsX3BvcnRpb24xLnppcCcsICdwb3J0aW9uMiddCisKKyAgICBkZWYgdGVzdF9pbXBvcnRzKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ3BvcnRpb24xIGZvbyBvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ3BvcnRpb24yIGZvbyB0d28nKQorICAgICAgICBzZWxmLmFzc2VydEluKCd0b3BfbGV2ZWxfcG9ydGlvbjEuemlwJywgZm9vLm9uZS5fX2ZpbGVfXykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignLnppcCcsIGZvby50d28uX19maWxlX18pCisKKworY2xhc3MgU2luZ2xlTmVzdGVkWmlwTmFtZXNwYWNlUGFja2FnZShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ25lc3RlZF9wb3J0aW9uMS56aXAvbmVzdGVkX3BvcnRpb24xJ10KKworICAgIGRlZiB0ZXN0X3NpbXBsZV9wYWNrYWdlKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ3BvcnRpb24xIGZvbyBvbmUnKQorCisgICAgZGVmIHRlc3RfY2FudF9pbXBvcnRfb3RoZXIoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IGZvby50d28KKworCitjbGFzcyBTZXBhcmF0ZWROZXN0ZWRaaXBOYW1lc3BhY2VQYWNrYWdlcyhOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ25lc3RlZF9wb3J0aW9uMS56aXAvbmVzdGVkX3BvcnRpb24xJywgJ3BvcnRpb24yJ10KKworICAgIGRlZiB0ZXN0X2ltcG9ydHMoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnR3by5hdHRyLCAncG9ydGlvbjIgZm9vIHR3bycpCisgICAgICAgIGZuID0gb3MucGF0aC5qb2luKCduZXN0ZWRfcG9ydGlvbjEuemlwJywgJ25lc3RlZF9wb3J0aW9uMScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oZm4sIGZvby5vbmUuX19maWxlX18pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJy56aXAnLCBmb28udHdvLl9fZmlsZV9fKQorCisKK2NsYXNzIExlZ2FjeVN1cHBvcnQoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydub3RfYV9uYW1lc3BhY2VfcGtnJywgJ3BvcnRpb24xJywgJ3BvcnRpb24yJywgJ2JvdGhfcG9ydGlvbnMnXQorCisgICAgZGVmIHRlc3Rfbm9uX25hbWVzcGFjZV9wYWNrYWdlX3Rha2VzX3ByZWNlZGVuY2Uoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgc2VsZi5hc3NlcnRJbignX19pbml0X18nLCBmb28uX19maWxlX18pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ25hbWVzcGFjZScsIHN0cihmb28uX19sb2FkZXJfXykubG93ZXIoKSkKKworCitjbGFzcyBEeW5hbWljUGF0aENhbGN1bGF0aW9uKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsncHJvamVjdDEnLCAncHJvamVjdDInXQorCisgICAgZGVmIHRlc3RfcHJvamVjdDNfZmFpbHMoc2VsZik6CisgICAgICAgIGltcG9ydCBwYXJlbnQuY2hpbGQub25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5fX3BhdGhfXyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5jaGlsZC5fX3BhdGhfXyksIDIpCisgICAgICAgIGltcG9ydCBwYXJlbnQuY2hpbGQudHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5fX3BhdGhfXyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5jaGlsZC5fX3BhdGhfXyksIDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJlbnQuY2hpbGQub25lLmF0dHIsICdwYXJlbnQgY2hpbGQgb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJlbnQuY2hpbGQudHdvLmF0dHIsICdwYXJlbnQgY2hpbGQgdHdvJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBwYXJlbnQuY2hpbGQudGhyZWUKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuX19wYXRoX18pLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuY2hpbGQuX19wYXRoX18pLCAyKQorCisgICAgZGVmIHRlc3RfcHJvamVjdDNfc3VjY2VlZHMoc2VsZik6CisgICAgICAgIGltcG9ydCBwYXJlbnQuY2hpbGQub25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5fX3BhdGhfXyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5jaGlsZC5fX3BhdGhfXyksIDIpCisgICAgICAgIGltcG9ydCBwYXJlbnQuY2hpbGQudHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5fX3BhdGhfXyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5jaGlsZC5fX3BhdGhfXyksIDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJlbnQuY2hpbGQub25lLmF0dHIsICdwYXJlbnQgY2hpbGQgb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJlbnQuY2hpbGQudHdvLmF0dHIsICdwYXJlbnQgY2hpbGQgdHdvJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBwYXJlbnQuY2hpbGQudGhyZWUKKworICAgICAgICAjIG5vdyBhZGQgcHJvamVjdDMKKyAgICAgICAgc3lzLnBhdGguYXBwZW5kKG9zLnBhdGguam9pbihzZWxmLnJvb3QsICdwcm9qZWN0MycpKQorICAgICAgICBpbXBvcnQgcGFyZW50LmNoaWxkLnRocmVlCisKKyAgICAgICAgIyB0aGUgcGF0aHMgZHluYW1pY2FsbHkgZ2V0IGxvbmdlciwgdG8gaW5jbHVkZSB0aGUgbmV3IGRpcmVjdG9yaWVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5fX3BhdGhfXyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5jaGlsZC5fX3BhdGhfXyksIDMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJlbnQuY2hpbGQudGhyZWUuYXR0ciwgJ3BhcmVudCBjaGlsZCB0aHJlZScpCisKKworY2xhc3MgWmlwV2l0aE1pc3NpbmdEaXJlY3RvcnkoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydtaXNzaW5nX2RpcmVjdG9yeS56aXAnXQorCisgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgIGRlZiB0ZXN0X21pc3NpbmdfZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICAjIFRoaXMgd2lsbCBmYWlsIGJlY2F1c2UgbWlzc2luZ19kaXJlY3RvcnkuemlwIGNvbnRhaW5zOgorICAgICAgICAjICAgTGVuZ3RoICAgICAgRGF0ZSAgICBUaW1lICAgIE5hbWUKKyAgICAgICAgIyAtLS0tLS0tLS0gIC0tLS0tLS0tLS0gLS0tLS0gICAtLS0tCisgICAgICAgICMgICAgICAgIDI5ICAyMDEyLTA1LTAzIDE4OjEzICAgZm9vL29uZS5weQorICAgICAgICAjICAgICAgICAgMCAgMjAxMi0wNS0wMyAyMDo1NyAgIGJhci8KKyAgICAgICAgIyAgICAgICAgMzggIDIwMTItMDUtMDMgMjA6NTcgICBiYXIvdHdvLnB5CisgICAgICAgICMgLS0tLS0tLS0tICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLQorICAgICAgICAjICAgICAgICA2NyAgICAgICAgICAgICAgICAgICAgIDMgZmlsZXMKKworICAgICAgICAjIEJlY2F1c2UgdGhlcmUgaXMgbm8gJ2Zvby8nLCB0aGUgemlwaW1wb3J0ZXIgY3VycmVudGx5IGRvZXNuJ3QKKyAgICAgICAgIyAga25vdyB0aGF0IGZvbyBpcyBhIG5hbWVzcGFjZSBwYWNrYWdlCisKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKworICAgIGRlZiB0ZXN0X3ByZXNlbnRfZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICAjIFRoaXMgc3VjY2VlZHMgYmVjYXVzZSB0aGVyZSBpcyBhICJiYXIvIiBpbiB0aGUgemlwIGZpbGUKKyAgICAgICAgaW1wb3J0IGJhci50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYXIudHdvLmF0dHIsICdtaXNzaW5nX2RpcmVjdG9yeSBmb28gdHdvJykKKworCitjbGFzcyBNb2R1bGVBbmROYW1lc3BhY2VQYWNrYWdlSW5TYW1lRGlyKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsnbW9kdWxlX2FuZF9uYW1lc3BhY2VfcGFja2FnZSddCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfYmVmb3JlX25hbWVzcGFjZV9wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBmaW5kIHRoZSBtb2R1bGUgaW4gcHJlZmVyZW5jZSB0byB0aGUKKyAgICAgICAgIyAgbmFtZXNwYWNlIHBhY2thZ2UuCisgICAgICAgIGltcG9ydCBhX3Rlc3QKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhX3Rlc3QuYXR0ciwgJ2luIG1vZHVsZScpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdCgqTmFtZXNwYWNlUGFja2FnZVRlc3QuX19zdWJjbGFzc2VzX18oKSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X25udHBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X25udHBsaWIucHkKaW5kZXggNzMzNWIyMy4uMTlmYjEwYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfbm50cGxpYi5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCBpbworaW1wb3J0IHNvY2tldAogaW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB1bml0dGVzdApAQCAtMjU3LDYgKzI1OCwyNiBAQAogICAgICAgICAgICAgIyB2YWx1ZQogICAgICAgICAgICAgc2V0YXR0cihjbHMsIG5hbWUsIHdyYXBfbWV0aChtZXRoKSkKIAorICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICBkZWYgaXNfY29ubmVjdGVkKCk6CisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZXJ2ZXIsICdmaWxlJyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VydmVyLmhlbHAoKQorICAgICAgICAgICAgZXhjZXB0IChzb2NrZXQuZXJyb3IsIEVPRkVycm9yKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgd2l0aCBzZWxmLk5OVFBfQ0xBU1Moc2VsZi5OTlRQX0hPU1QsIHRpbWVvdXQ9VElNRU9VVCwgdXNlbmV0cmM9RmFsc2UpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19jb25uZWN0ZWQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuaGVscCgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzX2Nvbm5lY3RlZCgpKQorCisgICAgICAgIHdpdGggc2VsZi5OTlRQX0NMQVNTKHNlbGYuTk5UUF9IT1NULCB0aW1lb3V0PVRJTUVPVVQsIHVzZW5ldHJjPUZhbHNlKSBhcyBzZXJ2ZXI6CisgICAgICAgICAgICBzZXJ2ZXIucXVpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNfY29ubmVjdGVkKCkpCisKKwogTmV0d29ya2VkTk5UUFRlc3RzTWl4aW4ud3JhcF9tZXRob2RzKCkKIAogCkBAIC04OTQsNyArOTE1LDcgQEAKIAogICAgIGRlZiBfY2hlY2tfYXJ0aWNsZV9ib2R5KHNlbGYsIGxpbmVzKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGluZXMpLCA0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzWy0xXS5kZWNvZGUoJ3V0ZjgnKSwgIi0tIFNpZ25lZCBieSBBbmRyw6kuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lc1stMV0uZGVjb2RlKCd1dGYtOCcpLCAiLS0gU2lnbmVkIGJ5IEFuZHLDqS4iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzWy0yXSwgYiIiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzWy0zXSwgYiIuSGVyZSBpcyBhIGRvdC1zdGFydGluZyBsaW5lLiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXNbLTRdLCBiIlRoaXMgaXMganVzdCBhIHRlc3QgYXJ0aWNsZS4iKQpAQCAtMTEzMywxMiArMTE1NCwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AsIHN1Y2Nlc3NfcmVzcCkKICAgICAgICAgIyBXaXRoIGFuIGl0ZXJhYmxlIG9mIHRlcm1pbmF0ZWQgbGluZXMKICAgICAgICAgZGVmIGl0ZXJsaW5lcyhiKToKLSAgICAgICAgICAgIHJldHVybiBpdGVyKGIuc3BsaXRsaW5lcyhUcnVlKSkKKyAgICAgICAgICAgIHJldHVybiBpdGVyKGIuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSkKICAgICAgICAgcmVzcCA9IHNlbGYuX2NoZWNrX3Bvc3RfaWhhdmVfc3ViKGZ1bmMsICphcmdzLCBmaWxlX2ZhY3Rvcnk9aXRlcmxpbmVzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AsIHN1Y2Nlc3NfcmVzcCkKICAgICAgICAgIyBXaXRoIGFuIGl0ZXJhYmxlIG9mIG5vbi10ZXJtaW5hdGVkIGxpbmVzCiAgICAgICAgIGRlZiBpdGVybGluZXMoYik6Ci0gICAgICAgICAgICByZXR1cm4gaXRlcihiLnNwbGl0bGluZXMoRmFsc2UpKQorICAgICAgICAgICAgcmV0dXJuIGl0ZXIoYi5zcGxpdGxpbmVzKGtlZXBlbmRzPUZhbHNlKSkKICAgICAgICAgcmVzcCA9IHNlbGYuX2NoZWNrX3Bvc3RfaWhhdmVfc3ViKGZ1bmMsICphcmdzLCBmaWxlX2ZhY3Rvcnk9aXRlcmxpbmVzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AsIHN1Y2Nlc3NfcmVzcCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkgYi9MaWIvdGVzdC90ZXN0X250cGF0aC5weQppbmRleCA2NDY0OTUwLi5mODA5ODc2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X250cGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X250cGF0aC5weQpAQCAtMSwxMCArMSwxMSBAQAogaW1wb3J0IG50cGF0aAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRlc3RGYWlsZWQKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgdGVzdF9nZW5lcmljcGF0aAogZnJvbSB0ZW1wZmlsZSBpbXBvcnQgVGVtcG9yYXJ5RmlsZQotaW1wb3J0IHVuaXR0ZXN0CiAKIAogZGVmIHRlc3Rlcihmbiwgd2FudFJlc3VsdCk6CkBAIC0yMSw3ICsyMiw5IEBACiAgICAgZm4gPSBmbi5yZXBsYWNlKCdbIicsICdbYiInKQogICAgIGZuID0gZm4ucmVwbGFjZSgiLCAnIiwgIiwgYiciKQogICAgIGZuID0gZm4ucmVwbGFjZSgnLCAiJywgJywgYiInKQotICAgIGdvdFJlc3VsdCA9IGV2YWwoZm4pCisgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgZ290UmVzdWx0ID0gZXZhbChmbikKICAgICBpZiBpc2luc3RhbmNlKHdhbnRSZXN1bHQsIHN0cik6CiAgICAgICAgIHdhbnRSZXN1bHQgPSB3YW50UmVzdWx0LmVuY29kZSgnYXNjaWknKQogICAgIGVsaWYgaXNpbnN0YW5jZSh3YW50UmVzdWx0LCB0dXBsZSk6CkBAIC0yNTQsMTQgKzI1NywxMCBAQAogICAgICAgICAgICAgICAgICAgICBudHBhdGguc2FtZW9wZW5maWxlKC0xLCAtMSkKIAogCi1jbGFzcyBOdENvbW1vblRlc3QodGVzdF9nZW5lcmljcGF0aC5Db21tb25UZXN0KToKK2NsYXNzIE50Q29tbW9uVGVzdCh0ZXN0X2dlbmVyaWNwYXRoLkNvbW1vblRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBwYXRobW9kdWxlID0gbnRwYXRoCiAgICAgYXR0cmlidXRlcyA9IFsncmVscGF0aCcsICdzcGxpdHVuYyddCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3ROdHBhdGgsIE50Q29tbW9uVGVzdCkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9udW1lcmljX3Rvd2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9udW1lcmljX3Rvd2VyLnB5CmluZGV4IGJlZjNkNGMuLjM0MjNkNGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbnVtZXJpY190b3dlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X251bWVyaWNfdG93ZXIucHkKQEAgLTE1MCw3ICsxNTAsNyBAQAogICAgICAgICAjIGludCwgZmxvYXQsIEZyYWN0aW9uLCBEZWNpbWFsCiAgICAgICAgIHRlc3RfdmFsdWVzID0gWwogICAgICAgICAgICAgZmxvYXQoJy1pbmYnKSwKLSAgICAgICAgICAgIEQoJy0xZTk5OTk5OTk5OScpLAorICAgICAgICAgICAgRCgnLTFlNDI1MDAwMDAwJyksCiAgICAgICAgICAgICAtMWUzMDgsCiAgICAgICAgICAgICBGKC0yMiwgNyksCiAgICAgICAgICAgICAtMy4xNCwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkgYi9MaWIvdGVzdC90ZXN0X29wdHBhcnNlLnB5CmluZGV4IDdiOTU2MTIuLjc4ZGUyNzggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weQpAQCAtMzE4LDYgKzMxOCwyMiBAQAogICAgICAgICAgICAgWyItYiJdLCB7J2FjdGlvbic6ICdzdG9yZScsCiAgICAgICAgICAgICAgICAgICAgICAnY2FsbGJhY2tfa3dhcmdzJzogJ2Zvbyd9KQogCisgICAgZGVmIHRlc3Rfbm9fc2luZ2xlX2Rhc2goc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0T3B0aW9uRXJyb3IoCisgICAgICAgICAgICAiaW52YWxpZCBsb25nIG9wdGlvbiBzdHJpbmcgJy1kZWJ1Zyc6ICIKKyAgICAgICAgICAgICJtdXN0IHN0YXJ0IHdpdGggLS0sIGZvbGxvd2VkIGJ5IG5vbi1kYXNoIiwKKyAgICAgICAgICAgIFsiLWRlYnVnIl0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRPcHRpb25FcnJvcigKKyAgICAgICAgICAgICJvcHRpb24gLWQ6IGludmFsaWQgbG9uZyBvcHRpb24gc3RyaW5nICctZGVidWcnOiBtdXN0IHN0YXJ0IHdpdGgiCisgICAgICAgICAgICAiIC0tLCBmb2xsb3dlZCBieSBub24tZGFzaCIsCisgICAgICAgICAgICBbIi1kIiwgIi1kZWJ1ZyJdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0T3B0aW9uRXJyb3IoCisgICAgICAgICAgICAiaW52YWxpZCBsb25nIG9wdGlvbiBzdHJpbmcgJy1kZWJ1Zyc6ICIKKyAgICAgICAgICAgICJtdXN0IHN0YXJ0IHdpdGggLS0sIGZvbGxvd2VkIGJ5IG5vbi1kYXNoIiwKKyAgICAgICAgICAgIFsiLWRlYnVnIiwgIi0tZGVidWciXSkKKwogY2xhc3MgVGVzdE9wdGlvblBhcnNlcihCYXNlVGVzdCk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnBhcnNlciA9IE9wdGlvblBhcnNlcigpCkBAIC02MzEsNyArNjQ3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uX2xpc3Q9b3B0aW9ucykKIAogICAgIGRlZiB0ZXN0X3JlcXVpcmVkX3ZhbHVlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFBhcnNlRmFpbChbIi1hIl0sICItYSBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiKQorICAgICAgICBzZWxmLmFzc2VydFBhcnNlRmFpbChbIi1hIl0sICItYSBvcHRpb24gcmVxdWlyZXMgMSBhcmd1bWVudCIpCiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2ludGVnZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UGFyc2VGYWlsKFsiLWIiLCAiNXgiXSwKQEAgLTEwMjMsNyArMTAzOSw3IEBACiAgICAgICAgIFRZUEVfQ0hFQ0tFUlsiZmlsZSJdID0gY2hlY2tfZmlsZQogCiAgICAgZGVmIHRlc3RfZmlsZXR5cGVfb2soc2VsZik6Ci0gICAgICAgIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3IikuY2xvc2UoKQorICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICBzZWxmLmFzc2VydFBhcnNlT0soWyItLWZpbGUiLCBzdXBwb3J0LlRFU1RGTiwgIi1hZm9vIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2ZpbGUnOiBzdXBwb3J0LlRFU1RGTiwgJ2EnOiAnZm9vJ30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3MucHkgYi9MaWIvdGVzdC90ZXN0X29zLnB5CmluZGV4IDcyMGU3OGIuLjE4NGM5YWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcy5weQpAQCAtMTQsMjAgKzE0LDQzIEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgbW1hcAoraW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgcmUKIGltcG9ydCB1dWlkCitpbXBvcnQgYXN5bmNvcmUKK2ltcG9ydCBhc3luY2hhdAoraW1wb3J0IHNvY2tldAoraW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IHN0YXQKK2ltcG9ydCBsb2NhbGUKK2ltcG9ydCBjb2RlY3MKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkaW5nID0gTm9uZQogZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKIAord2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgIG9zLnN0YXRfZmxvYXRfdGltZXMoVHJ1ZSkKK3N0ID0gb3Muc3RhdChfX2ZpbGVfXykKK3N0YXRfc3VwcG9ydHNfc3Vic2Vjb25kID0gKAorICAgICMgY2hlY2sgaWYgZmxvYXQgYW5kIGludCB0aW1lc3RhbXBzIGFyZSBkaWZmZXJlbnQKKyAgICAoc3Quc3RfYXRpbWUgIT0gc3RbN10pCisgICAgb3IgKHN0LnN0X210aW1lICE9IHN0WzhdKQorICAgIG9yIChzdC5zdF9jdGltZSAhPSBzdFs5XSkpCisKICMgRGV0ZWN0IHdoZXRoZXIgd2UncmUgb24gYSBMaW51eCBzeXN0ZW0gdGhhdCB1c2VzIHRoZSAobm93IG91dGRhdGVkCiAjIGFuZCB1bm1haW50YWluZWQpIGxpbnV4dGhyZWFkcyB0aHJlYWRpbmcgbGlicmFyeS4gIFRoZXJlJ3MgYW4gaXNzdWUKICMgd2hlbiBjb21iaW5pbmcgbGludXh0aHJlYWRzIHdpdGggYSBmYWlsZWQgZXhlY3YgY2FsbDogc2VlCiAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU0OTcwLgotaWYgKGhhc2F0dHIob3MsICJjb25mc3RyX25hbWVzIikgYW5kCi0gICAgIkNTX0dOVV9MSUJQVEhSRUFEX1ZFUlNJT04iIGluIG9zLmNvbmZzdHJfbmFtZXMpOgotICAgIGxpYnB0aHJlYWQgPSBvcy5jb25mc3RyKCJDU19HTlVfTElCUFRIUkVBRF9WRVJTSU9OIikKLSAgICBVU0lOR19MSU5VWFRIUkVBRFM9IGxpYnB0aHJlYWQuc3RhcnRzd2l0aCgibGludXh0aHJlYWRzIikKK2lmIGhhc2F0dHIoc3lzLCAndGhyZWFkX2luZm8nKSBhbmQgc3lzLnRocmVhZF9pbmZvLnZlcnNpb246CisgICAgVVNJTkdfTElOVVhUSFJFQURTID0gc3lzLnRocmVhZF9pbmZvLnZlcnNpb24uc3RhcnRzd2l0aCgibGludXh0aHJlYWRzIikKIGVsc2U6Ci0gICAgVVNJTkdfTElOVVhUSFJFQURTPSBGYWxzZQorICAgIFVTSU5HX0xJTlVYVEhSRUFEUyA9IEZhbHNlCisKKyMgSXNzdWUgIzE0MTEwOiBTb21lIHRlc3RzIGZhaWwgb24gRnJlZUJTRCBpZiB0aGUgdXNlciBpcyBpbiB0aGUgd2hlZWwgZ3JvdXAuCitIQVZFX1dIRUVMX0dST1VQID0gc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2ZyZWVic2QnKSBhbmQgb3MuZ2V0Z2lkKCkgPT0gMAogCiAjIFRlc3RzIGNyZWF0aW5nIFRFU1RGTgogY2xhc3MgRmlsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTEyNCw2ICsxNDcsMTggQEAKICAgICAgICAgc2VsZi5mZG9wZW5faGVscGVyKCdyJykKICAgICAgICAgc2VsZi5mZG9wZW5faGVscGVyKCdyJywgMTAwKQogCisgICAgZGVmIHRlc3RfcmVwbGFjZShzZWxmKToKKyAgICAgICAgVEVTVEZOMiA9IHN1cHBvcnQuVEVTVEZOICsgIi4yIgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoIjEiKQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOMiwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgiMiIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy51bmxpbmssIFRFU1RGTjIpCisgICAgICAgIG9zLnJlcGxhY2Uoc3VwcG9ydC5URVNURk4sIFRFU1RGTjIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBvcy5zdGF0LCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICdyJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICIxIikKKwogCiAjIFRlc3QgYXR0cmlidXRlcyBvbiByZXR1cm4gdmFsdWVzIGZyb20gb3MuKnN0YXQqIGZhbWlseS4KIGNsYXNzIFN0YXRBdHRyaWJ1dGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xNDIsNyArMTc3LDYgQEAKICAgICAgICAgaWYgbm90IGhhc2F0dHIob3MsICJzdGF0Iik6CiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBpbXBvcnQgc3RhdAogICAgICAgICByZXN1bHQgPSBvcy5zdGF0KGZuYW1lKQogCiAgICAgICAgICMgTWFrZSBzdXJlIGRpcmVjdCBhY2Nlc3Mgd29ya3MKQEAgLTE2Miw2ICsxOTYsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRbZ2V0YXR0cihzdGF0LCBuYW1lKV0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihhdHRyLCBtZW1iZXJzKQogCisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgdGhlIHN0Xz90aW1lIGFuZCBzdF8/dGltZV9ucyBmaWVsZHMgcm91Z2hseSBhZ3JlZQorICAgICAgICAjICh0aGV5IHNob3VsZCBhbHdheXMgYWdyZWUgdXAgdG8gYXJvdW5kIHRlbnMtb2YtbWljcm9zZWNvbmRzKQorICAgICAgICBmb3IgbmFtZSBpbiAnc3RfYXRpbWUgc3RfbXRpbWUgc3RfY3RpbWUnLnNwbGl0KCk6CisgICAgICAgICAgICBmbG9hdHkgPSBpbnQoZ2V0YXR0cihyZXN1bHQsIG5hbWUpICogMTAwMDAwKQorICAgICAgICAgICAgbmFub3NlY29uZHkgPSBnZXRhdHRyKHJlc3VsdCwgbmFtZSArICJfbnMiKSAvLyAxMDAwMAorICAgICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChmbG9hdHksIG5hbm9zZWNvbmR5LCBkZWx0YT0yKQorCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJlc3VsdFsyMDBdCiAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIGV4Y2VwdGlvbiByYWlzZWQiKQpAQCAtMjA4LDcgKzI0OSw5IEBACiAgICAgICAgICAgICBmbmFtZSA9IHNlbGYuZm5hbWUuZW5jb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkKICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCBlbmNvZGUgJWEgZm9yIHRoZSBmaWxlc3lzdGVtIiAlIHNlbGYuZm5hbWUpCi0gICAgICAgIHNlbGYuY2hlY2tfc3RhdF9hdHRyaWJ1dGVzKGZuYW1lKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfc3RhdF9hdHRyaWJ1dGVzKGZuYW1lKQogCiAgICAgZGVmIHRlc3Rfc3RhdHZmc19hdHRyaWJ1dGVzKHNlbGYpOgogICAgICAgICBpZiBub3QgaGFzYXR0cihvcywgInN0YXR2ZnMiKToKQEAgLTI2NSw2ICszMDgsMTQzIEBACiAgICAgICAgIHN0MiA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3QyLnN0X210aW1lLCBpbnQoc3Quc3RfbXRpbWUtZGVsdGEpKQogCisgICAgZGVmIF90ZXN0X3V0aW1lKHNlbGYsIGZpbGVuYW1lLCBhdHRyLCB1dGltZSwgZGVsdGEpOgorICAgICAgICAjIElzc3VlICMxMzMyNyByZW1vdmVkIHRoZSByZXF1aXJlbWVudCB0byBwYXNzIE5vbmUgYXMgdGhlCisgICAgICAgICMgc2Vjb25kIGFyZ3VtZW50LiBDaGVjayB0aGF0IHRoZSBwcmV2aW91cyBtZXRob2RzIG9mIHBhc3NpbmcKKyAgICAgICAgIyBhIHRpbWUgdHVwbGUgb3IgTm9uZSB3b3JrIGluIGFkZGl0aW9uIHRvIG5vIGFyZ3VtZW50LgorICAgICAgICBzdDAgPSBvcy5zdGF0KGZpbGVuYW1lKQorICAgICAgICAjIERvZXNuJ3Qgc2V0IGFueXRoaW5nIG5ldywgYnV0IHNldHMgdGhlIHRpbWUgdHVwbGUgd2F5CisgICAgICAgIHV0aW1lKGZpbGVuYW1lLCAoYXR0cihzdDAsICJzdF9hdGltZSIpLCBhdHRyKHN0MCwgInN0X210aW1lIikpKQorICAgICAgICAjIFNldHRpbmcgdGhlIHRpbWUgdG8gdGhlIHRpbWUgeW91IGp1c3QgcmVhZCwgdGhlbiByZWFkaW5nIGFnYWluLAorICAgICAgICAjIHNob3VsZCBhbHdheXMgcmV0dXJuIGV4YWN0bHkgdGhlIHNhbWUgdGltZXMuCisgICAgICAgIHN0MSA9IG9zLnN0YXQoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0cihzdDAsICJzdF9tdGltZSIpLCBhdHRyKHN0MSwgInN0X210aW1lIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0cihzdDAsICJzdF9hdGltZSIpLCBhdHRyKHN0MSwgInN0X2F0aW1lIikpCisgICAgICAgICMgU2V0IHRvIHRoZSBjdXJyZW50IHRpbWUgaW4gdGhlIG9sZCBleHBsaWNpdCB3YXkuCisgICAgICAgIG9zLnV0aW1lKGZpbGVuYW1lLCBOb25lKQorICAgICAgICBzdDIgPSBvcy5zdGF0KHN1cHBvcnQuVEVTVEZOKQorICAgICAgICAjIFNldCB0byB0aGUgY3VycmVudCB0aW1lIGluIHRoZSBuZXcgd2F5CisgICAgICAgIG9zLnV0aW1lKGZpbGVuYW1lKQorICAgICAgICBzdDMgPSBvcy5zdGF0KGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGF0dHIoc3QyLCAic3RfbXRpbWUiKSwgYXR0cihzdDMsICJzdF9tdGltZSIpLCBkZWx0YT1kZWx0YSkKKworICAgIGRlZiB0ZXN0X3V0aW1lKHNlbGYpOgorICAgICAgICBkZWYgdXRpbWUoZmlsZSwgdGltZXMpOgorICAgICAgICAgICAgcmV0dXJuIG9zLnV0aW1lKGZpbGUsIHRpbWVzKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lKHNlbGYuZm5hbWUsIGdldGF0dHIsIHV0aW1lLCAxMCkKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZShzdXBwb3J0LlRFU1RGTiwgZ2V0YXR0ciwgdXRpbWUsIDEwKQorCisKKyAgICBkZWYgX3Rlc3RfdXRpbWVfbnMoc2VsZiwgc2V0X3RpbWVzX25zLCB0ZXN0X2Rpcj1UcnVlKToKKyAgICAgICAgZGVmIGdldGF0dHJfbnMobywgYXR0cik6CisgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihvLCBhdHRyICsgIl9ucyIpCisgICAgICAgIHRlbl9zID0gMTAgKiAxMDAwICogMTAwMCAqIDEwMDAKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZShzZWxmLmZuYW1lLCBnZXRhdHRyX25zLCBzZXRfdGltZXNfbnMsIHRlbl9zKQorICAgICAgICBpZiB0ZXN0X2RpcjoKKyAgICAgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWUoc3VwcG9ydC5URVNURk4sIGdldGF0dHJfbnMsIHNldF90aW1lc19ucywgdGVuX3MpCisKKyAgICBkZWYgdGVzdF91dGltZV9ucyhzZWxmKToKKyAgICAgICAgZGVmIHV0aW1lX25zKGZpbGUsIHRpbWVzKToKKyAgICAgICAgICAgIHJldHVybiBvcy51dGltZShmaWxlLCBucz10aW1lcykKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZV9ucyh1dGltZV9ucykKKworICAgIHJlcXVpcmVzX3V0aW1lX2Rpcl9mZCA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcl9mZCBzdXBwb3J0IGZvciB1dGltZSByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LiIpCisgICAgcmVxdWlyZXNfdXRpbWVfZmQgPSB1bml0dGVzdC5za2lwVW5sZXNzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy51dGltZSBpbiBvcy5zdXBwb3J0c19mZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZkIHN1cHBvcnQgZm9yIHV0aW1lIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuIikKKyAgICByZXF1aXJlc191dGltZV9ub2ZvbGxvd19zeW1saW5rcyA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyBzdXBwb3J0IGZvciB1dGltZSByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LiIpCisKKyAgICBAcmVxdWlyZXNfdXRpbWVfbm9mb2xsb3dfc3ltbGlua3MKKyAgICBkZWYgdGVzdF9sdXRpbWVzX25zKHNlbGYpOgorICAgICAgICBkZWYgbHV0aW1lc19ucyhmaWxlLCB0aW1lcyk6CisgICAgICAgICAgICByZXR1cm4gb3MudXRpbWUoZmlsZSwgbnM9dGltZXMsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZV9ucyhsdXRpbWVzX25zKQorCisgICAgQHJlcXVpcmVzX3V0aW1lX2ZkCisgICAgZGVmIHRlc3RfZnV0aW1lc19ucyhzZWxmKToKKyAgICAgICAgZGVmIGZ1dGltZXNfbnMoZmlsZSwgdGltZXMpOgorICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICAgICAgb3MudXRpbWUoZi5maWxlbm8oKSwgbnM9dGltZXMpCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWVfbnMoZnV0aW1lc19ucywgdGVzdF9kaXI9RmFsc2UpCisKKyAgICBkZWYgX3V0aW1lX2ludmFsaWRfYXJndW1lbnRzKHNlbGYsIG5hbWUsIGFyZyk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBnZXRhdHRyKG9zLCBuYW1lKShhcmcsICg1LCA1KSwgbnM9KDUsIDUpKQorCisgICAgZGVmIHRlc3RfdXRpbWVfaW52YWxpZF9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIHNlbGYuX3V0aW1lX2ludmFsaWRfYXJndW1lbnRzKCd1dGltZScsIHNlbGYuZm5hbWUpCisKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN0YXRfc3VwcG9ydHNfc3Vic2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICJvcy5zdGF0KCkgZG9lc24ndCBoYXMgYSBzdWJzZWNvbmQgcmVzb2x1dGlvbiIpCisgICAgZGVmIF90ZXN0X3V0aW1lX3N1YnNlY29uZChzZWxmLCBzZXRfdGltZV9mdW5jKToKKyAgICAgICAgYXNlYywgYW1zZWMgPSAxLCA5MDEKKyAgICAgICAgYXRpbWUgPSBhc2VjICsgYW1zZWMgKiAxZS0zCisgICAgICAgIG1zZWMsIG1tc2VjID0gMiwgOTAxCisgICAgICAgIG10aW1lID0gbXNlYyArIG1tc2VjICogMWUtMworICAgICAgICBmaWxlbmFtZSA9IHNlbGYuZm5hbWUKKyAgICAgICAgb3MudXRpbWUoZmlsZW5hbWUsICgwLCAwKSkKKyAgICAgICAgc2V0X3RpbWVfZnVuYyhmaWxlbmFtZSwgYXRpbWUsIG10aW1lKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIG9zLnN0YXRfZmxvYXRfdGltZXMoVHJ1ZSkKKyAgICAgICAgc3QgPSBvcy5zdGF0KGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKHN0LnN0X2F0aW1lLCBhdGltZSwgcGxhY2VzPTMpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoc3Quc3RfbXRpbWUsIG10aW1lLCBwbGFjZXM9MykKKworICAgIGRlZiB0ZXN0X3V0aW1lX3N1YnNlY29uZChzZWxmKToKKyAgICAgICAgZGVmIHNldF90aW1lKGZpbGVuYW1lLCBhdGltZSwgbXRpbWUpOgorICAgICAgICAgICAgb3MudXRpbWUoZmlsZW5hbWUsIChhdGltZSwgbXRpbWUpKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lX3N1YnNlY29uZChzZXRfdGltZSkKKworICAgIEByZXF1aXJlc191dGltZV9mZAorICAgIGRlZiB0ZXN0X2Z1dGltZXNfc3Vic2Vjb25kKHNlbGYpOgorICAgICAgICBkZWYgc2V0X3RpbWUoZmlsZW5hbWUsIGF0aW1lLCBtdGltZSk6CisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICAgICAgb3MudXRpbWUoZi5maWxlbm8oKSwgdGltZXM9KGF0aW1lLCBtdGltZSkpCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWVfc3Vic2Vjb25kKHNldF90aW1lKQorCisgICAgQHJlcXVpcmVzX3V0aW1lX2ZkCisgICAgZGVmIHRlc3RfZnV0aW1lbnNfc3Vic2Vjb25kKHNlbGYpOgorICAgICAgICBkZWYgc2V0X3RpbWUoZmlsZW5hbWUsIGF0aW1lLCBtdGltZSk6CisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICAgICAgb3MudXRpbWUoZi5maWxlbm8oKSwgdGltZXM9KGF0aW1lLCBtdGltZSkpCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWVfc3Vic2Vjb25kKHNldF90aW1lKQorCisgICAgQHJlcXVpcmVzX3V0aW1lX2Rpcl9mZAorICAgIGRlZiB0ZXN0X2Z1dGltZXNhdF9zdWJzZWNvbmQoc2VsZik6CisgICAgICAgIGRlZiBzZXRfdGltZShmaWxlbmFtZSwgYXRpbWUsIG10aW1lKToKKyAgICAgICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUoZmlsZW5hbWUpCisgICAgICAgICAgICBkaXJmZCA9IG9zLm9wZW4oZGlybmFtZSwgb3MuT19SRE9OTFkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3MudXRpbWUob3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSksIGRpcl9mZD1kaXJmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXM9KGF0aW1lLCBtdGltZSkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIG9zLmNsb3NlKGRpcmZkKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lX3N1YnNlY29uZChzZXRfdGltZSkKKworICAgIEByZXF1aXJlc191dGltZV9ub2ZvbGxvd19zeW1saW5rcworICAgIGRlZiB0ZXN0X2x1dGltZXNfc3Vic2Vjb25kKHNlbGYpOgorICAgICAgICBkZWYgc2V0X3RpbWUoZmlsZW5hbWUsIGF0aW1lLCBtdGltZSk6CisgICAgICAgICAgICBvcy51dGltZShmaWxlbmFtZSwgKGF0aW1lLCBtdGltZSksIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZV9zdWJzZWNvbmQoc2V0X3RpbWUpCisKKyAgICBAcmVxdWlyZXNfdXRpbWVfZGlyX2ZkCisgICAgZGVmIHRlc3RfdXRpbWVuc2F0X3N1YnNlY29uZChzZWxmKToKKyAgICAgICAgZGVmIHNldF90aW1lKGZpbGVuYW1lLCBhdGltZSwgbXRpbWUpOgorICAgICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZShmaWxlbmFtZSkKKyAgICAgICAgICAgIGRpcmZkID0gb3Mub3BlbihkaXJuYW1lLCBvcy5PX1JET05MWSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy51dGltZShvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSwgZGlyX2ZkPWRpcmZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcz0oYXRpbWUsIG10aW1lKSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgb3MuY2xvc2UoZGlyZmQpCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWVfc3Vic2Vjb25kKHNldF90aW1lKQorCiAgICAgIyBSZXN0cmljdCB0ZXN0IHRvIFdpbjMyLCBzaW5jZSB0aGVyZSBpcyBubyBndWFyYW50ZWUgb3RoZXIKICAgICAjIHN5c3RlbXMgc3VwcG9ydCBjZW50aXNlY29uZHMKICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKQEAgLTI5Niw2ICs0NzYsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJDb3VsZCBub3Qgc3RhdCBwYWdlZmlsZS5zeXMiKQogCisgICAgICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICJwaXBlIiksICJyZXF1aXJlcyBvcy5waXBlKCkiKQorICAgICAgICBkZWYgdGVzdF8xNTI2MShzZWxmKToKKyAgICAgICAgICAgICMgVmVyaWZ5IHRoYXQgc3RhdCdpbmcgYSBjbG9zZWQgZmQgZG9lcyBub3QgY2F1c2UgY3Jhc2gKKyAgICAgICAgICAgIHIsIHcgPSBvcy5waXBlKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy5zdGF0KHIpICAgICAgICAgICMgc2hvdWxkIG5vdCByYWlzZSBlcnJvcgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBvcy5jbG9zZShyKQorICAgICAgICAgICAgICAgIG9zLmNsb3NlKHcpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGN0eDoKKyAgICAgICAgICAgICAgICBvcy5zdGF0KHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5leGNlcHRpb24uZXJybm8sIGVycm5vLkVCQURGKQorCiBmcm9tIHRlc3QgaW1wb3J0IG1hcHBpbmdfdGVzdHMKIAogY2xhc3MgRW52aXJvblRlc3RzKG1hcHBpbmdfdGVzdHMuQmFzaWNUZXN0TWFwcGluZ1Byb3RvY29sKToKQEAgLTMyNCwyMyArNTE3LDIzIEBACiAgICAgICAgIHJldHVybiBvcy5lbnZpcm9uCiAKICAgICAjIEJ1ZyAxMTEwNDc4CisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MucGF0aC5leGlzdHMoJy9iaW4vc2gnKSwgJ3JlcXVpcmVzIC9iaW4vc2gnKQogICAgIGRlZiB0ZXN0X3VwZGF0ZTIoc2VsZik6CiAgICAgICAgIG9zLmVudmlyb24uY2xlYXIoKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cygiL2Jpbi9zaCIpOgotICAgICAgICAgICAgb3MuZW52aXJvbi51cGRhdGUoSEVMTE89IldvcmxkIikKLSAgICAgICAgICAgIHdpdGggb3MucG9wZW4oIi9iaW4vc2ggLWMgJ2VjaG8gJEhFTExPJyIpIGFzIHBvcGVuOgotICAgICAgICAgICAgICAgIHZhbHVlID0gcG9wZW4ucmVhZCgpLnN0cmlwKCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCAiV29ybGQiKQorICAgICAgICBvcy5lbnZpcm9uLnVwZGF0ZShIRUxMTz0iV29ybGQiKQorICAgICAgICB3aXRoIG9zLnBvcGVuKCIvYmluL3NoIC1jICdlY2hvICRIRUxMTyciKSBhcyBwb3BlbjoKKyAgICAgICAgICAgIHZhbHVlID0gcG9wZW4ucmVhZCgpLnN0cmlwKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsICJXb3JsZCIpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5wYXRoLmV4aXN0cygnL2Jpbi9zaCcpLCAncmVxdWlyZXMgL2Jpbi9zaCcpCiAgICAgZGVmIHRlc3Rfb3NfcG9wZW5faXRlcihzZWxmKToKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoIi9iaW4vc2giKToKLSAgICAgICAgICAgIHdpdGggb3MucG9wZW4oCi0gICAgICAgICAgICAgICAgIi9iaW4vc2ggLWMgJ2VjaG8gXCJsaW5lMVxubGluZTJcbmxpbmUzXCInIikgYXMgcG9wZW46Ci0gICAgICAgICAgICAgICAgaXQgPSBpdGVyKHBvcGVuKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICJsaW5lMVxuIikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAibGluZTJcbiIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0KSwgImxpbmUzXG4iKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGl0KQorICAgICAgICB3aXRoIG9zLnBvcGVuKAorICAgICAgICAgICAgIi9iaW4vc2ggLWMgJ2VjaG8gXCJsaW5lMVxubGluZTJcbmxpbmUzXCInIikgYXMgcG9wZW46CisgICAgICAgICAgICBpdCA9IGl0ZXIocG9wZW4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAibGluZTFcbiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAibGluZTJcbiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAibGluZTNcbiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBuZXh0LCBpdCkKIAogICAgICMgVmVyaWZ5IGVudmlyb24ga2V5cyBhbmQgdmFsdWVzIGZyb20gdGhlIE9TIGFyZSBvZiB0aGUKICAgICAjIGNvcnJlY3Qgc3RyIHR5cGUuCkBAIC00MjcsOCArNjIwLDggQEAKIAogICAgICMgT24gRnJlZUJTRCA8IDcgYW5kIE9TIFggPCAxMC42LCB1bnNldGVudigpIGRvZXNuJ3QgcmV0dXJuIGEgdmFsdWUgKGlzc3VlCiAgICAgIyAjMTM0MTUpLgotICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoKCdmcmVlYnNkJywgJ2RhcndpbicpKSwKLSAgICAgICAgICAgICAgICAgICAgICJkdWUgdG8ga25vd24gT1MgYnVnOiBzZWUgaXNzdWUgIzEzNDE1IikKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19mcmVlYnNkX3ZlcnNpb24oNykKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19tYWNfdmVyKDEwLCA2KQogICAgIGRlZiB0ZXN0X3Vuc2V0X2Vycm9yKHNlbGYpOgogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKICAgICAgICAgICAgICMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbGltaXRlZCB0byAzMiw3NjcgY2hhcmFjdGVycwpAQCAtNDQyLDcgKzYzNSw3IEBACiBjbGFzcyBXYWxrVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIlRlc3RzIGZvciBvcy53YWxrKCkuIiIiCiAKLSAgICBkZWYgdGVzdF90cmF2ZXJzYWwoc2VsZik6CisgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgZnJvbSBvcy5wYXRoIGltcG9ydCBqb2luCiAKQEAgLTQ1Niw2ICs2NDksNyBAQAogICAgICAgICAjICAgICAgICAgU1VCMi8gICAgICAgICAgICAgYSBmaWxlIGtpZCBhbmQgYSBkaXJzeW1saW5rIGtpZAogICAgICAgICAjICAgICAgICAgICB0bXAzCiAgICAgICAgICMgICAgICAgICAgIGxpbmsvICAgICAgICAgICBhIHN5bWxpbmsgdG8gVEVTVEZOLjIKKyAgICAgICAgIyAgICAgICAgICAgYnJva2VuX2xpbmsKICAgICAgICAgIyAgICAgICBURVNUMi8KICAgICAgICAgIyAgICAgICAgIHRtcDQgICAgICAgICAgICAgIGEgbG9uZSBmaWxlCiAgICAgICAgIHdhbGtfcGF0aCA9IGpvaW4oc3VwcG9ydC5URVNURk4sICJURVNUMSIpCkBAIC00NjgsNiArNjYyLDggQEAKICAgICAgICAgbGlua19wYXRoID0gam9pbihzdWIyX3BhdGgsICJsaW5rIikKICAgICAgICAgdDJfcGF0aCA9IGpvaW4oc3VwcG9ydC5URVNURk4sICJURVNUMiIpCiAgICAgICAgIHRtcDRfcGF0aCA9IGpvaW4oc3VwcG9ydC5URVNURk4sICJURVNUMiIsICJ0bXA0IikKKyAgICAgICAgbGlua19wYXRoID0gam9pbihzdWIyX3BhdGgsICJsaW5rIikKKyAgICAgICAgYnJva2VuX2xpbmtfcGF0aCA9IGpvaW4oc3ViMl9wYXRoLCAiYnJva2VuX2xpbmsiKQogCiAgICAgICAgICMgQ3JlYXRlIHN0dWZmLgogICAgICAgICBvcy5tYWtlZGlycyhzdWIxMV9wYXRoKQpAQCAtNDg0LDcgKzY4MCw4IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHN5bWxpbmtfdG9fZGlyID0gb3Muc3ltbGluawogICAgICAgICAgICAgc3ltbGlua190b19kaXIob3MucGF0aC5hYnNwYXRoKHQyX3BhdGgpLCBsaW5rX3BhdGgpCi0gICAgICAgICAgICBzdWIyX3RyZWUgPSAoc3ViMl9wYXRoLCBbImxpbmsiXSwgWyJ0bXAzIl0pCisgICAgICAgICAgICBzeW1saW5rX3RvX2RpcignYnJva2VuJywgYnJva2VuX2xpbmtfcGF0aCkKKyAgICAgICAgICAgIHN1YjJfdHJlZSA9IChzdWIyX3BhdGgsIFsibGluayJdLCBbImJyb2tlbl9saW5rIiwgInRtcDMiXSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHN1YjJfdHJlZSA9IChzdWIyX3BhdGgsIFtdLCBbInRtcDMiXSkKIApAQCAtNDk2LDYgKzY5Myw3IEBACiAgICAgICAgICMgICAgIGZsaXBwZWQ6ICBURVNURk4sIFNVQjIsIFNVQjEsIFNVQjExCiAgICAgICAgIGZsaXBwZWQgPSBhbGxbMF1bMV1bMF0gIT0gIlNVQjEiCiAgICAgICAgIGFsbFswXVsxXS5zb3J0KCkKKyAgICAgICAgYWxsWzMgLSAyICogZmxpcHBlZF1bLTFdLnNvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFswXSwgKHdhbGtfcGF0aCwgWyJTVUIxIiwgIlNVQjIiXSwgWyJ0bXAxIl0pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFsxICsgZmxpcHBlZF0sIChzdWIxX3BhdGgsIFsiU1VCMTEiXSwgWyJ0bXAyIl0pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFsyICsgZmxpcHBlZF0sIChzdWIxMV9wYXRoLCBbXSwgW10pKQpAQCAtNTExLDYgKzcwOSw3IEBACiAgICAgICAgICAgICAgICAgZGlycy5yZW1vdmUoJ1NVQjEnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhbGwpLCAyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFswXSwgKHdhbGtfcGF0aCwgWyJTVUIyIl0sIFsidG1wMSJdKSkKKyAgICAgICAgYWxsWzFdWy0xXS5zb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbGxbMV0sIHN1YjJfdHJlZSkKIAogICAgICAgICAjIFdhbGsgYm90dG9tLXVwLgpAQCAtNTIxLDYgKzcyMCw3IEBACiAgICAgICAgICMgICAgIGZsaXBwZWQ6ICBTVUIyLCBTVUIxMSwgU1VCMSwgVEVTVEZOCiAgICAgICAgIGZsaXBwZWQgPSBhbGxbM11bMV1bMF0gIT0gIlNVQjEiCiAgICAgICAgIGFsbFszXVsxXS5zb3J0KCkKKyAgICAgICAgYWxsWzIgLSAyICogZmxpcHBlZF1bLTFdLnNvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFszXSwgKHdhbGtfcGF0aCwgWyJTVUIxIiwgIlNVQjIiXSwgWyJ0bXAxIl0pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFtmbGlwcGVkXSwgKHN1YjExX3BhdGgsIFtdLCBbXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsW2ZsaXBwZWQgKyAxXSwgKHN1YjFfcGF0aCwgWyJTVUIxMSJdLCBbInRtcDIiXSkpCkBAIC01NTIsNiArNzUyLDgyIEBACiAgICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShkaXJuYW1lKQogICAgICAgICBvcy5ybWRpcihzdXBwb3J0LlRFU1RGTikKIAorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZndhbGsnKSwgIlRlc3QgbmVlZHMgb3MuZndhbGsoKSIpCitjbGFzcyBGd2Fsa1Rlc3RzKFdhbGtUZXN0cyk6CisgICAgIiIiVGVzdHMgZm9yIG9zLmZ3YWxrKCkuIiIiCisKKyAgICBkZWYgX2NvbXBhcmVfdG9fd2FsayhzZWxmLCB3YWxrX2t3YXJncywgZndhbGtfa3dhcmdzKToKKyAgICAgICAgIiIiCisgICAgICAgIGNvbXBhcmUgd2l0aCB3YWxrKCkgcmVzdWx0cy4KKyAgICAgICAgIiIiCisgICAgICAgIHdhbGtfa3dhcmdzID0gd2Fsa19rd2FyZ3MuY29weSgpCisgICAgICAgIGZ3YWxrX2t3YXJncyA9IGZ3YWxrX2t3YXJncy5jb3B5KCkKKyAgICAgICAgZm9yIHRvcGRvd24sIGZvbGxvd19zeW1saW5rcyBpbiBpdGVydG9vbHMucHJvZHVjdCgoVHJ1ZSwgRmFsc2UpLCByZXBlYXQ9Mik6CisgICAgICAgICAgICB3YWxrX2t3YXJncy51cGRhdGUodG9wZG93bj10b3Bkb3duLCBmb2xsb3dsaW5rcz1mb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICBmd2Fsa19rd2FyZ3MudXBkYXRlKHRvcGRvd249dG9wZG93biwgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcykKKworICAgICAgICAgICAgZXhwZWN0ZWQgPSB7fQorICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoKip3YWxrX2t3YXJncyk6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRbcm9vdF0gPSAoc2V0KGRpcnMpLCBzZXQoZmlsZXMpKQorCisgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMsIHJvb3RmZCBpbiBvcy5md2FsaygqKmZ3YWxrX2t3YXJncyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihyb290LCBleHBlY3RlZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkW3Jvb3RdLCAoc2V0KGRpcnMpLCBzZXQoZmlsZXMpKSkKKworICAgIGRlZiB0ZXN0X2NvbXBhcmVfdG9fd2FsayhzZWxmKToKKyAgICAgICAga3dhcmdzID0geyd0b3AnOiBzdXBwb3J0LlRFU1RGTn0KKyAgICAgICAgc2VsZi5fY29tcGFyZV90b193YWxrKGt3YXJncywga3dhcmdzKQorCisgICAgZGVmIHRlc3RfZGlyX2ZkKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmZCA9IG9zLm9wZW4oIi4iLCBvcy5PX1JET05MWSkKKyAgICAgICAgICAgIHdhbGtfa3dhcmdzID0geyd0b3AnOiBzdXBwb3J0LlRFU1RGTn0KKyAgICAgICAgICAgIGZ3YWxrX2t3YXJncyA9IHdhbGtfa3dhcmdzLmNvcHkoKQorICAgICAgICAgICAgZndhbGtfa3dhcmdzWydkaXJfZmQnXSA9IGZkCisgICAgICAgICAgICBzZWxmLl9jb21wYXJlX3RvX3dhbGsod2Fsa19rd2FyZ3MsIGZ3YWxrX2t3YXJncykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgZGVmIHRlc3RfeWllbGRzX2NvcnJlY3RfZGlyX2ZkKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHJldHVybmVkIGZpbGUgZGVzY3JpcHRvcnMKKyAgICAgICAgZm9yIHRvcGRvd24sIGZvbGxvd19zeW1saW5rcyBpbiBpdGVydG9vbHMucHJvZHVjdCgoVHJ1ZSwgRmFsc2UpLCByZXBlYXQ9Mik6CisgICAgICAgICAgICBhcmdzID0gc3VwcG9ydC5URVNURk4sIHRvcGRvd24sIE5vbmUKKyAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcywgcm9vdGZkIGluIG9zLmZ3YWxrKCphcmdzLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKToKKyAgICAgICAgICAgICAgICAjIGNoZWNrIHRoYXQgdGhlIEZEIGlzIHZhbGlkCisgICAgICAgICAgICAgICAgb3MuZnN0YXQocm9vdGZkKQorICAgICAgICAgICAgICAgICMgcmVkdW5kYW50IGNoZWNrCisgICAgICAgICAgICAgICAgb3Muc3RhdChyb290ZmQpCisgICAgICAgICAgICAgICAgIyBjaGVjayB0aGF0IGxpc3RkaXIoKSByZXR1cm5zIGNvbnNpc3RlbnQgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChvcy5saXN0ZGlyKHJvb3RmZCkpLCBzZXQoZGlycykgfCBzZXQoZmlsZXMpKQorCisgICAgZGVmIHRlc3RfZmRfbGVhayhzZWxmKToKKyAgICAgICAgIyBTaW5jZSB3ZSdyZSBvcGVuaW5nIGEgbG90IG9mIEZEcywgd2UgbXVzdCBiZSBjYXJlZnVsIHRvIGF2b2lkIGxlYWtzOgorICAgICAgICAjIHdlIGJvdGggY2hlY2sgdGhhdCBjYWxsaW5nIGZ3YWxrKCkgYSBsYXJnZSBudW1iZXIgb2YgdGltZXMgZG9lc24ndAorICAgICAgICAjIHlpZWxkIEVNRklMRSwgYW5kIHRoYXQgdGhlIG1pbmltdW0gYWxsb2NhdGVkIEZEIGhhc24ndCBjaGFuZ2VkLgorICAgICAgICBtaW5mZCA9IG9zLmR1cCgxKQorICAgICAgICBvcy5jbG9zZShtaW5mZCkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMjU2KToKKyAgICAgICAgICAgIGZvciB4IGluIG9zLmZ3YWxrKHN1cHBvcnQuVEVTVEZOKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIG5ld2ZkID0gb3MuZHVwKDEpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgbmV3ZmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZmQsIG1pbmZkKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAjIGNsZWFudXAKKyAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzLCByb290ZmQgaW4gb3MuZndhbGsoc3VwcG9ydC5URVNURk4sIHRvcGRvd249RmFsc2UpOgorICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgb3MudW5saW5rKG5hbWUsIGRpcl9mZD1yb290ZmQpCisgICAgICAgICAgICBmb3IgbmFtZSBpbiBkaXJzOgorICAgICAgICAgICAgICAgIHN0ID0gb3Muc3RhdChuYW1lLCBkaXJfZmQ9cm9vdGZkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgICAgICAgICAgaWYgc3RhdC5TX0lTRElSKHN0LnN0X21vZGUpOgorICAgICAgICAgICAgICAgICAgICBvcy5ybWRpcihuYW1lLCBkaXJfZmQ9cm9vdGZkKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhuYW1lLCBkaXJfZmQ9cm9vdGZkKQorICAgICAgICBvcy5ybWRpcihzdXBwb3J0LlRFU1RGTikKKworCiBjbGFzcyBNYWtlZGlyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgb3MubWtkaXIoc3VwcG9ydC5URVNURk4pCkBAIC01NzUsMTQgKzg1MSwxMiBAQAogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHN1cHBvcnQuVEVTVEZOLCAnZGlyMScpCiAgICAgICAgIG1vZGUgPSAwbzc3NwogICAgICAgICBvbGRfbWFzayA9IG9zLnVtYXNrKDBvMDIyKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy5tYWtlZGlycyhwYXRoLCBtb2RlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MubWFrZWRpcnMsIHBhdGgsIG1vZGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5tYWtlZGlycywgcGF0aCwgbW9kZSwgZXhpc3Rfb2s9RmFsc2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5tYWtlZGlycywgcGF0aCwgMG83NzYsIGV4aXN0X29rPVRydWUpCi0gICAgICAgICAgICBvcy5tYWtlZGlycyhwYXRoLCBtb2RlPW1vZGUsIGV4aXN0X29rPVRydWUpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy51bWFzayhvbGRfbWFzaykKKyAgICAgICAgb3MubWFrZWRpcnMocGF0aCwgbW9kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MubWFrZWRpcnMsIHBhdGgsIG1vZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLm1ha2VkaXJzLCBwYXRoLCBtb2RlLCBleGlzdF9vaz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MubWFrZWRpcnMsIHBhdGgsIDBvNzc2LCBleGlzdF9vaz1UcnVlKQorICAgICAgICBvcy5tYWtlZGlycyhwYXRoLCBtb2RlPW1vZGUsIGV4aXN0X29rPVRydWUpCisgICAgICAgIG9zLnVtYXNrKG9sZF9tYXNrKQogCiAgICAgZGVmIHRlc3RfZXhpc3Rfb2tfc19pc2dpZF9kaXJlY3Rvcnkoc2VsZik6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc3VwcG9ydC5URVNURk4sICdkaXIxJykKQEAgLTU5NCw3ICs4NjgsNyBAQAogICAgICAgICAgICAgICAgICAgICBvcy5sc3RhdChzdXBwb3J0LlRFU1RGTikuc3RfbW9kZSkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBvcy5jaG1vZChzdXBwb3J0LlRFU1RGTiwgZXhpc3RpbmdfdGVzdGZuX21vZGUgfCBTX0lTR0lEKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCdDYW5ub3Qgc2V0IFNfSVNHSUQgZm9yIGRpci4nKQogICAgICAgICAgICAgaWYgKG9zLmxzdGF0KHN1cHBvcnQuVEVTVEZOKS5zdF9tb2RlICYgU19JU0dJRCAhPSBTX0lTR0lEKToKICAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnTm8gc3VwcG9ydCBmb3IgU19JU0dJRCBkaXIgbW9kZS4nKQpAQCAtODk0LDEwICsxMTY4LDEyIEBACiAKICAgICBkZWYgdGVzdF9mcGF0aGNvbmYoc2VsZik6CiAgICAgICAgIGlmIGhhc2F0dHIob3MsICJmcGF0aGNvbmYiKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2sob3MucGF0aGNvbmYsICJQQ19OQU1FX01BWCIpCiAgICAgICAgICAgICBzZWxmLmNoZWNrKG9zLmZwYXRoY29uZiwgIlBDX05BTUVfTUFYIikKIAogICAgIGRlZiB0ZXN0X2Z0cnVuY2F0ZShzZWxmKToKICAgICAgICAgaWYgaGFzYXR0cihvcywgImZ0cnVuY2F0ZSIpOgorICAgICAgICAgICAgc2VsZi5jaGVjayhvcy50cnVuY2F0ZSwgMCkKICAgICAgICAgICAgIHNlbGYuY2hlY2sob3MuZnRydW5jYXRlLCAwKQogCiAgICAgZGVmIHRlc3RfbHNlZWsoc2VsZik6CkBAIC05MzEsNyArMTIwNyw5IEBACiAgICAgICAgIHdpdGggb3BlbihmaWxlMSwgInciKSBhcyBmMToKICAgICAgICAgICAgIGYxLndyaXRlKCJ0ZXN0IikKIAotICAgICAgICBvcy5saW5rKGZpbGUxLCBmaWxlMikKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBvcy5saW5rKGZpbGUxLCBmaWxlMikKICAgICAgICAgd2l0aCBvcGVuKGZpbGUxLCAiciIpIGFzIGYxLCBvcGVuKGZpbGUyLCAiciIpIGFzIGYyOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguc2FtZW9wZW5maWxlKGYxLmZpbGVubygpLCBmMi5maWxlbm8oKSkpCiAKQEAgLTk2NSw3ICsxMjQzLDcgQEAKIAogICAgICAgICBpZiBoYXNhdHRyKG9zLCAnc2V0Z2lkJyk6CiAgICAgICAgICAgICBkZWYgdGVzdF9zZXRnaWQoc2VsZik6Ci0gICAgICAgICAgICAgICAgaWYgb3MuZ2V0dWlkKCkgIT0gMDoKKyAgICAgICAgICAgICAgICBpZiBvcy5nZXR1aWQoKSAhPSAwIGFuZCBub3QgSEFWRV9XSEVFTF9HUk9VUDoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMob3MuZXJyb3IsIG9zLnNldGdpZCwgMCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBvcy5zZXRnaWQsIDE8PDMyKQogCkBAIC05NzcsNyArMTI1NSw3IEBACiAKICAgICAgICAgaWYgaGFzYXR0cihvcywgJ3NldGVnaWQnKToKICAgICAgICAgICAgIGRlZiB0ZXN0X3NldGVnaWQoc2VsZik6Ci0gICAgICAgICAgICAgICAgaWYgb3MuZ2V0dWlkKCkgIT0gMDoKKyAgICAgICAgICAgICAgICBpZiBvcy5nZXR1aWQoKSAhPSAwIGFuZCBub3QgSEFWRV9XSEVFTF9HUk9VUDoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMob3MuZXJyb3IsIG9zLnNldGVnaWQsIDApCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgb3Muc2V0ZWdpZCwgMTw8MzIpCiAKQEAgLTk5Nyw3ICsxMjc1LDcgQEAKIAogICAgICAgICBpZiBoYXNhdHRyKG9zLCAnc2V0cmVnaWQnKToKICAgICAgICAgICAgIGRlZiB0ZXN0X3NldHJlZ2lkKHNlbGYpOgotICAgICAgICAgICAgICAgIGlmIG9zLmdldHVpZCgpICE9IDA6CisgICAgICAgICAgICAgICAgaWYgb3MuZ2V0dWlkKCkgIT0gMCBhbmQgbm90IEhBVkVfV0hFRUxfR1JPVVA6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG9zLmVycm9yLCBvcy5zZXRyZWdpZCwgMCwgMCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBvcy5zZXRyZWdpZCwgMTw8MzIsIDApCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgb3Muc2V0cmVnaWQsIDAsIDE8PDMyKQpAQCAtMTAzOCw4ICsxMzE2LDcgQEAKICAgICAgICAgICAgIG9zLm1rZGlyKHNlbGYuZGlyKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGZvciBmbiBpbiBieXRlc2ZuOgotICAgICAgICAgICAgICAgICAgICBmID0gb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5iZGlyLCBmbiksICJ3IikKLSAgICAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKHNlbGYuYmRpciwgZm4pKQogICAgICAgICAgICAgICAgICAgICBmbiA9IG9zLmZzZGVjb2RlKGZuKQogICAgICAgICAgICAgICAgICAgICBpZiBmbiBpbiBzZWxmLnVuaWNvZGVmbjoKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImR1cGxpY2F0ZSBmaWxlbmFtZSIpCkBAIC0xMDU1LDYgKzEzMzIsMTMgQEAKICAgICAgICAgICAgIGV4cGVjdGVkID0gc2VsZi51bmljb2RlZm4KICAgICAgICAgICAgIGZvdW5kID0gc2V0KG9zLmxpc3RkaXIoc2VsZi5kaXIpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3VuZCwgZXhwZWN0ZWQpCisgICAgICAgICAgICAjIHRlc3QgbGlzdGRpciB3aXRob3V0IGFyZ3VtZW50cworICAgICAgICAgICAgY3VycmVudF9kaXJlY3RvcnkgPSBvcy5nZXRjd2QoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLmNoZGlyKG9zLnNlcCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChvcy5saXN0ZGlyKCkpLCBzZXQob3MubGlzdGRpcihvcy5zZXApKSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgb3MuY2hkaXIoY3VycmVudF9kaXJlY3RvcnkpCiAKICAgICAgICAgZGVmIHRlc3Rfb3BlbihzZWxmKToKICAgICAgICAgICAgIGZvciBmbiBpbiBzZWxmLnVuaWNvZGVmbjoKQEAgLTEyNjcsOCArMTU1MSwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9zLmxzdGF0KGxpbmspLCBvcy5zdGF0KGxpbmspKQogCiAgICAgICAgIGJ5dGVzX2xpbmsgPSBvcy5mc2VuY29kZShsaW5rKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQodGFyZ2V0KSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5sc3RhdChieXRlc19saW5rKSwgb3Muc3RhdChieXRlc19saW5rKSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQodGFyZ2V0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3MubHN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQoYnl0ZXNfbGluaykpCiAKICAgICBkZWYgdGVzdF8xMjA4NChzZWxmKToKICAgICAgICAgbGV2ZWwxID0gb3MucGF0aC5hYnNwYXRoKHN1cHBvcnQuVEVTVEZOKQpAQCAtMTMyNyw2ICsxNjEzLDIyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmZzZGVjb2RlKGJ5dGVzZm4pLCBmbikKIAogCisKK2NsYXNzIERldmljZUVuY29kaW5nVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmFkX2ZkKHNlbGYpOgorICAgICAgICAjIFJldHVybiBOb25lIHdoZW4gYW4gZmQgZG9lc24ndCBhY3R1YWxseSBleGlzdC4KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob3MuZGV2aWNlX2VuY29kaW5nKDEyMzQ1NikpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5pc2F0dHkoMCkgYW5kIChzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJykgb3IKKyAgICAgICAgICAgIChoYXNhdHRyKGxvY2FsZSwgJ25sX2xhbmdpbmZvJykgYW5kIGhhc2F0dHIobG9jYWxlLCAnQ09ERVNFVCcpKSksCisgICAgICAgICAgICAndGVzdCByZXF1aXJlcyBhIHR0eSBhbmQgZWl0aGVyIFdpbmRvd3Mgb3IgbmxfbGFuZ2luZm8oQ09ERVNFVCknKQorICAgIGRlZiB0ZXN0X2RldmljZV9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgZW5jb2RpbmcgPSBvcy5kZXZpY2VfZW5jb2RpbmcoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZW5jb2RpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2RlY3MubG9va3VwKGVuY29kaW5nKSkKKworCiBjbGFzcyBQaWRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldHBwaWQnKSwgInRlc3QgbmVlZHMgb3MuZ2V0cHBpZCIpCiAgICAgZGVmIHRlc3RfZ2V0cHBpZChzZWxmKToKQEAgLTEzNDgsMTIgKzE2NTAsNDcxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGVuKHVzZXJfbmFtZSksIDApCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldHByaW9yaXR5JykgYW5kIGhhc2F0dHIob3MsICdzZXRwcmlvcml0eScpLAorICAgICAgICAgICAgICAgICAgICAgIm5lZWRzIG9zLmdldHByaW9yaXR5IGFuZCBvcy5zZXRwcmlvcml0eSIpCitjbGFzcyBQcm9ncmFtUHJpb3JpdHlUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgZm9yIG9zLmdldHByaW9yaXR5KCkgYW5kIG9zLnNldHByaW9yaXR5KCkuIiIiCisKKyAgICBkZWYgdGVzdF9zZXRfZ2V0X3ByaW9yaXR5KHNlbGYpOgorCisgICAgICAgIGJhc2UgPSBvcy5nZXRwcmlvcml0eShvcy5QUklPX1BST0NFU1MsIG9zLmdldHBpZCgpKQorICAgICAgICBvcy5zZXRwcmlvcml0eShvcy5QUklPX1BST0NFU1MsIG9zLmdldHBpZCgpLCBiYXNlICsgMSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV3X3ByaW8gPSBvcy5nZXRwcmlvcml0eShvcy5QUklPX1BST0NFU1MsIG9zLmdldHBpZCgpKQorICAgICAgICAgICAgaWYgYmFzZSA+PSAxOSBhbmQgbmV3X3ByaW8gPD0gMTk6CisgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoCisgICAgICAidW5hYmxlIHRvIHJlbGlhYmx5IHRlc3Qgc2V0cHJpb3JpdHkgYXQgY3VycmVudCBuaWNlIGxldmVsIG9mICVzIiAlIGJhc2UpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X3ByaW8sIGJhc2UgKyAxKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnNldHByaW9yaXR5KG9zLlBSSU9fUFJPQ0VTUywgb3MuZ2V0cGlkKCksIGJhc2UpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgaWYgZXJyLmVycm5vICE9IGVycm5vLkVBQ0NFUzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKworCitpZiB0aHJlYWRpbmcgaXMgbm90IE5vbmU6CisgICAgY2xhc3MgU2VuZGZpbGVUZXN0U2VydmVyKGFzeW5jb3JlLmRpc3BhdGNoZXIsIHRocmVhZGluZy5UaHJlYWQpOgorCisgICAgICAgIGNsYXNzIEhhbmRsZXIoYXN5bmNoYXQuYXN5bmNfY2hhdCk6CisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25uKToKKyAgICAgICAgICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0Ll9faW5pdF9fKHNlbGYsIGNvbm4pCisgICAgICAgICAgICAgICAgc2VsZi5pbl9idWZmZXIgPSBbXQorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VkID0gRmFsc2UKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goYiIyMjAgcmVhZHlcclxuIikKKworICAgICAgICAgICAgZGVmIGhhbmRsZV9yZWFkKHNlbGYpOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLnJlY3YoNDA5NikKKyAgICAgICAgICAgICAgICBzZWxmLmluX2J1ZmZlci5hcHBlbmQoZGF0YSkKKworICAgICAgICAgICAgZGVmIGdldF9kYXRhKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBiJycuam9pbihzZWxmLmluX2J1ZmZlcikKKworICAgICAgICAgICAgZGVmIGhhbmRsZV9jbG9zZShzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKKworICAgICAgICAgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmKToKKyAgICAgICAgICAgICAgICByYWlzZQorCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKyAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKKyAgICAgICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXIuX19pbml0X18oc2VsZikKKyAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgc2VsZi5iaW5kKGFkZHJlc3MpCisgICAgICAgICAgICBzZWxmLmxpc3Rlbig1KQorICAgICAgICAgICAgc2VsZi5ob3N0LCBzZWxmLnBvcnQgPSBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpWzoyXQorICAgICAgICAgICAgc2VsZi5oYW5kbGVyX2luc3RhbmNlID0gTm9uZQorICAgICAgICAgICAgc2VsZi5fYWN0aXZlID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuX2FjdGl2ZV9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQorCisgICAgICAgICMgLS0tIHB1YmxpYyBBUEkKKworICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgZGVmIHJ1bm5pbmcoc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fYWN0aXZlCisKKyAgICAgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAgICAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLnJ1bm5pbmcKKyAgICAgICAgICAgIHNlbGYuX19mbGFnID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQuc3RhcnQoc2VsZikKKyAgICAgICAgICAgIHNlbGYuX19mbGFnLndhaXQoKQorCisgICAgICAgIGRlZiBzdG9wKHNlbGYpOgorICAgICAgICAgICAgYXNzZXJ0IHNlbGYucnVubmluZworICAgICAgICAgICAgc2VsZi5fYWN0aXZlID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuam9pbigpCisKKyAgICAgICAgZGVmIHdhaXQoc2VsZik6CisgICAgICAgICAgICAjIHdhaXQgZm9yIGhhbmRsZXIgY29ubmVjdGlvbiB0byBiZSBjbG9zZWQsIHRoZW4gc3RvcCB0aGUgc2VydmVyCisgICAgICAgICAgICB3aGlsZSBub3QgZ2V0YXR0cihzZWxmLmhhbmRsZXJfaW5zdGFuY2UsICJjbG9zZWQiLCBGYWxzZSk6CisgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAwMSkKKyAgICAgICAgICAgIHNlbGYuc3RvcCgpCisKKyAgICAgICAgIyAtLS0gaW50ZXJuYWxzCisKKyAgICAgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgICAgIHNlbGYuX2FjdGl2ZSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuX19mbGFnLnNldCgpCisgICAgICAgICAgICB3aGlsZSBzZWxmLl9hY3RpdmUgYW5kIGFzeW5jb3JlLnNvY2tldF9tYXA6CisgICAgICAgICAgICAgICAgc2VsZi5fYWN0aXZlX2xvY2suYWNxdWlyZSgpCisgICAgICAgICAgICAgICAgYXN5bmNvcmUubG9vcCh0aW1lb3V0PTAuMDAxLCBjb3VudD0xKQorICAgICAgICAgICAgICAgIHNlbGYuX2FjdGl2ZV9sb2NrLnJlbGVhc2UoKQorICAgICAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKCkKKworICAgICAgICBkZWYgaGFuZGxlX2FjY2VwdChzZWxmKToKKyAgICAgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLmFjY2VwdCgpCisgICAgICAgICAgICBzZWxmLmhhbmRsZXJfaW5zdGFuY2UgPSBzZWxmLkhhbmRsZXIoY29ubikKKworICAgICAgICBkZWYgaGFuZGxlX2Nvbm5lY3Qoc2VsZik6CisgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKyAgICAgICAgaGFuZGxlX3JlYWQgPSBoYW5kbGVfY29ubmVjdAorCisgICAgICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgICAgIHJldHVybiAwCisKKyAgICAgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmKToKKyAgICAgICAgICAgIHJhaXNlCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nIGlzIG5vdCBOb25lLCAidGVzdCBuZWVkcyB0aHJlYWRpbmcgbW9kdWxlIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdzZW5kZmlsZScpLCAidGVzdCBuZWVkcyBvcy5zZW5kZmlsZSgpIikKK2NsYXNzIFRlc3RTZW5kZmlsZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBEQVRBID0gYiIxMjM0NWFiY2RlIiAqIDE2ICogMTAyNCAgIyAxNjAgS0IKKyAgICBTVVBQT1JUX0hFQURFUlNfVFJBSUxFUlMgPSBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoImxpbnV4IikgYW5kIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoInNvbGFyaXMiKSBhbmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgic3Vub3MiKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShjbHMuREFUQSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnZlciA9IFNlbmRmaWxlVGVzdFNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSkKKyAgICAgICAgc2VsZi5zZXJ2ZXIuc3RhcnQoKQorICAgICAgICBzZWxmLmNsaWVudCA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KSkKKyAgICAgICAgc2VsZi5jbGllbnQuc2V0dGltZW91dCgxKQorICAgICAgICAjIHN5bmNocm9uaXplIGJ5IHdhaXRpbmcgZm9yICIyMjAgcmVhZHkiIHJlc3BvbnNlCisgICAgICAgIHNlbGYuY2xpZW50LnJlY3YoMTAyNCkKKyAgICAgICAgc2VsZi5zb2Nrbm8gPSBzZWxmLmNsaWVudC5maWxlbm8oKQorICAgICAgICBzZWxmLmZpbGUgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncmInKQorICAgICAgICBzZWxmLmZpbGVubyA9IHNlbGYuZmlsZS5maWxlbm8oKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQorICAgICAgICBzZWxmLmNsaWVudC5jbG9zZSgpCisgICAgICAgIGlmIHNlbGYuc2VydmVyLnJ1bm5pbmc6CisgICAgICAgICAgICBzZWxmLnNlcnZlci5zdG9wKCkKKworICAgIGRlZiBzZW5kZmlsZV93cmFwcGVyKHNlbGYsIHNvY2ssIGZpbGUsIG9mZnNldCwgbmJ5dGVzLCBoZWFkZXJzPVtdLCB0cmFpbGVycz1bXSk6CisgICAgICAgICIiIkEgaGlnaGVyIGxldmVsIHdyYXBwZXIgcmVwcmVzZW50aW5nIGhvdyBhbiBhcHBsaWNhdGlvbiBpcworICAgICAgICBzdXBwb3NlZCB0byB1c2Ugc2VuZGZpbGUoKS4KKyAgICAgICAgIiIiCisgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5TVVBQT1JUX0hFQURFUlNfVFJBSUxFUlM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcy5zZW5kZmlsZShzb2NrLCBmaWxlLCBvZmZzZXQsIG5ieXRlcywgaGVhZGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWlsZXJzKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcy5zZW5kZmlsZShzb2NrLCBmaWxlLCBvZmZzZXQsIG5ieXRlcykKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBpZiBlcnIuZXJybm8gPT0gZXJybm8uRUNPTk5SRVNFVDoKKyAgICAgICAgICAgICAgICAgICAgIyBkaXNjb25uZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICBlbGlmIGVyci5lcnJubyBpbiAoZXJybm8uRUFHQUlOLCBlcnJuby5FQlVTWSk6CisgICAgICAgICAgICAgICAgICAgICMgd2UgaGF2ZSB0byByZXRyeSBzZW5kIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorCisgICAgZGVmIHRlc3Rfc2VuZF93aG9sZV9maWxlKHNlbGYpOgorICAgICAgICAjIG5vcm1hbCBzZW5kCisgICAgICAgIHRvdGFsX3NlbnQgPSAwCisgICAgICAgIG9mZnNldCA9IDAKKyAgICAgICAgbmJ5dGVzID0gNDA5NgorICAgICAgICB3aGlsZSB0b3RhbF9zZW50IDwgbGVuKHNlbGYuREFUQSk6CisgICAgICAgICAgICBzZW50ID0gc2VsZi5zZW5kZmlsZV93cmFwcGVyKHNlbGYuc29ja25vLCBzZWxmLmZpbGVubywgb2Zmc2V0LCBuYnl0ZXMpCisgICAgICAgICAgICBpZiBzZW50ID09IDA6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIG9mZnNldCArPSBzZW50CisgICAgICAgICAgICB0b3RhbF9zZW50ICs9IHNlbnQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZW50IDw9IG5ieXRlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2Zmc2V0LCB0b3RhbF9zZW50KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG90YWxfc2VudCwgbGVuKHNlbGYuREFUQSkpCisgICAgICAgIHNlbGYuY2xpZW50LnNodXRkb3duKHNvY2tldC5TSFVUX1JEV1IpCisgICAgICAgIHNlbGYuY2xpZW50LmNsb3NlKCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIud2FpdCgpCisgICAgICAgIGRhdGEgPSBzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmdldF9kYXRhKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIGxlbihzZWxmLkRBVEEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIHNlbGYuREFUQSkKKworICAgIGRlZiB0ZXN0X3NlbmRfYXRfY2VydGFpbl9vZmZzZXQoc2VsZik6CisgICAgICAgICMgc3RhcnQgc2VuZGluZyBhIGZpbGUgYXQgYSBjZXJ0YWluIG9mZnNldAorICAgICAgICB0b3RhbF9zZW50ID0gMAorICAgICAgICBvZmZzZXQgPSBsZW4oc2VsZi5EQVRBKSAvLyAyCisgICAgICAgIG11c3Rfc2VuZCA9IGxlbihzZWxmLkRBVEEpIC0gb2Zmc2V0CisgICAgICAgIG5ieXRlcyA9IDQwOTYKKyAgICAgICAgd2hpbGUgdG90YWxfc2VudCA8IG11c3Rfc2VuZDoKKyAgICAgICAgICAgIHNlbnQgPSBzZWxmLnNlbmRmaWxlX3dyYXBwZXIoc2VsZi5zb2Nrbm8sIHNlbGYuZmlsZW5vLCBvZmZzZXQsIG5ieXRlcykKKyAgICAgICAgICAgIGlmIHNlbnQgPT0gMDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgb2Zmc2V0ICs9IHNlbnQKKyAgICAgICAgICAgIHRvdGFsX3NlbnQgKz0gc2VudAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbnQgPD0gbmJ5dGVzKQorCisgICAgICAgIHNlbGYuY2xpZW50LnNodXRkb3duKHNvY2tldC5TSFVUX1JEV1IpCisgICAgICAgIHNlbGYuY2xpZW50LmNsb3NlKCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIud2FpdCgpCisgICAgICAgIGRhdGEgPSBzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmdldF9kYXRhKCkKKyAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLkRBVEFbbGVuKHNlbGYuREFUQSkgLy8gMjpdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG90YWxfc2VudCwgbGVuKGV4cGVjdGVkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIGxlbihleHBlY3RlZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9vZmZzZXRfb3ZlcmZsb3coc2VsZik6CisgICAgICAgICMgc3BlY2lmeSBhbiBvZmZzZXQgPiBmaWxlIHNpemUKKyAgICAgICAgb2Zmc2V0ID0gbGVuKHNlbGYuREFUQSkgKyA0MDk2CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbnQgPSBvcy5zZW5kZmlsZShzZWxmLnNvY2tubywgc2VsZi5maWxlbm8sIG9mZnNldCwgNDA5NikKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICMgU29sYXJpcyBjYW4gcmFpc2UgRUlOVkFMIGlmIG9mZnNldCA+PSBmaWxlIGxlbmd0aCwgaWdub3JlLgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5WQUw6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VudCwgMCkKKyAgICAgICAgc2VsZi5jbGllbnQuc2h1dGRvd24oc29ja2V0LlNIVVRfUkRXUikKKyAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQorICAgICAgICBzZWxmLnNlcnZlci53YWl0KCkKKyAgICAgICAgZGF0YSA9IHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UuZ2V0X2RhdGEoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGInJykKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfb2Zmc2V0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgb3Muc2VuZGZpbGUoc2VsZi5zb2Nrbm8sIHNlbGYuZmlsZW5vLCAtMSwgNDA5NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVJTlZBTCkKKworICAgICMgLS0tIGhlYWRlcnMgLyB0cmFpbGVycyB0ZXN0cworCisgICAgaWYgU1VQUE9SVF9IRUFERVJTX1RSQUlMRVJTOgorCisgICAgICAgIGRlZiB0ZXN0X2hlYWRlcnMoc2VsZik6CisgICAgICAgICAgICB0b3RhbF9zZW50ID0gMAorICAgICAgICAgICAgc2VudCA9IG9zLnNlbmRmaWxlKHNlbGYuc29ja25vLCBzZWxmLmZpbGVubywgMCwgNDA5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVtiIngiICogNTEyXSkKKyAgICAgICAgICAgIHRvdGFsX3NlbnQgKz0gc2VudAorICAgICAgICAgICAgb2Zmc2V0ID0gNDA5NgorICAgICAgICAgICAgbmJ5dGVzID0gNDA5NgorICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgICAgICBzZW50ID0gc2VsZi5zZW5kZmlsZV93cmFwcGVyKHNlbGYuc29ja25vLCBzZWxmLmZpbGVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LCBuYnl0ZXMpCisgICAgICAgICAgICAgICAgaWYgc2VudCA9PSAwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHRvdGFsX3NlbnQgKz0gc2VudAorICAgICAgICAgICAgICAgIG9mZnNldCArPSBzZW50CisKKyAgICAgICAgICAgIGV4cGVjdGVkX2RhdGEgPSBiIngiICogNTEyICsgc2VsZi5EQVRBCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvdGFsX3NlbnQsIGxlbihleHBlY3RlZF9kYXRhKSkKKyAgICAgICAgICAgIHNlbGYuY2xpZW50LmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLndhaXQoKQorICAgICAgICAgICAgZGF0YSA9IHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UuZ2V0X2RhdGEoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGRhdGEpLCBoYXNoKGV4cGVjdGVkX2RhdGEpKQorCisgICAgICAgIGRlZiB0ZXN0X3RyYWlsZXJzKHNlbGYpOgorICAgICAgICAgICAgVEVTVEZOMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCisgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOMiwgJ3diJykgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKGIiYWJjZGUiKQorICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICdyYicpYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MucmVtb3ZlLCBURVNURk4yKQorICAgICAgICAgICAgICAgIG9zLnNlbmRmaWxlKHNlbGYuc29ja25vLCBmLmZpbGVubygpLCAwLCA0MDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWlsZXJzPVtiIjEyMzQ1Il0pCisgICAgICAgICAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLndhaXQoKQorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmdldF9kYXRhKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGIiYWJjZGUxMjM0NSIpCisKKyAgICAgICAgaWYgaGFzYXR0cihvcywgIlNGX05PRElTS0lPIik6CisgICAgICAgICAgICBkZWYgdGVzdF9mbGFncyhzZWxmKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG9zLnNlbmRmaWxlKHNlbGYuc29ja25vLCBzZWxmLmZpbGVubywgMCwgNDA5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9b3MuU0ZfTk9ESVNLSU8pCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICBpZiBlcnIuZXJybm8gbm90IGluIChlcnJuby5FQlVTWSwgZXJybm8uRUFHQUlOKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKworZGVmIHN1cHBvcnRzX2V4dGVuZGVkX2F0dHJpYnV0ZXMoKToKKyAgICBpZiBub3QgaGFzYXR0cihvcywgInNldHhhdHRyIik6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy5zZXR4YXR0cihmcC5maWxlbm8oKSwgYiJ1c2VyLnRlc3QiLCBiIiIpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBmaW5hbGx5OgorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAjIEtlcm5lbHMgPCAyLjYuMzkgZG9uJ3QgcmVzcGVjdCBzZXR4YXR0ciBmbGFncy4KKyAgICBrZXJuZWxfdmVyc2lvbiA9IHBsYXRmb3JtLnJlbGVhc2UoKQorICAgIG0gPSByZS5tYXRjaCgiMi42LihcZHsxLDJ9KSIsIGtlcm5lbF92ZXJzaW9uKQorICAgIHJldHVybiBtIGlzIE5vbmUgb3IgaW50KG0uZ3JvdXAoMSkpID49IDM5CisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydHNfZXh0ZW5kZWRfYXR0cmlidXRlcygpLAorICAgICAgICAgICAgICAgICAgICAgIm5vIG5vbi1icm9rZW4gZXh0ZW5kZWQgYXR0cmlidXRlIHN1cHBvcnQiKQorY2xhc3MgRXh0ZW5kZWRBdHRyaWJ1dGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorCisgICAgZGVmIF9jaGVja194YXR0cnNfc3RyKHNlbGYsIHMsIGdldHhhdHRyLCBzZXR4YXR0ciwgcmVtb3ZleGF0dHIsIGxpc3R4YXR0ciwgKiprd2FyZ3MpOgorICAgICAgICBmbiA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIG9wZW4oZm4sICJ3YiIpLmNsb3NlKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGdldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9EQVRBKQorICAgICAgICBpbml0X3hhdHRyID0gbGlzdHhhdHRyKGZuKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5pdF94YXR0ciwgbGlzdCkKKyAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCBiIiIsICoqa3dhcmdzKQorICAgICAgICB4YXR0ciA9IHNldChpbml0X3hhdHRyKQorICAgICAgICB4YXR0ci5hZGQoInVzZXIudGVzdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGxpc3R4YXR0cihmbikpLCB4YXR0cikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXR4YXR0cihmbiwgYiJ1c2VyLnRlc3QiLCAqKmt3YXJncyksIGIiIikKKyAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCBiImhlbGxvIiwgb3MuWEFUVFJfUkVQTEFDRSwgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0eGF0dHIoZm4sIGIidXNlci50ZXN0IiwgKiprd2FyZ3MpLCBiImhlbGxvIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgYiJieWUiLCBvcy5YQVRUUl9DUkVBVEUsICoqa3dhcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUVYSVNUKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdDIiKSwgYiJieWUiLCBvcy5YQVRUUl9SRVBMQUNFLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0RBVEEpCisgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QyIiksIGIiZm9vIiwgb3MuWEFUVFJfQ1JFQVRFLCAqKmt3YXJncykKKyAgICAgICAgeGF0dHIuYWRkKCJ1c2VyLnRlc3QyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobGlzdHhhdHRyKGZuKSksIHhhdHRyKQorICAgICAgICByZW1vdmV4YXR0cihmbiwgcygidXNlci50ZXN0IiksICoqa3dhcmdzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0RBVEEpCisgICAgICAgIHhhdHRyLnJlbW92ZSgidXNlci50ZXN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobGlzdHhhdHRyKGZuKSksIHhhdHRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QyIiksICoqa3dhcmdzKSwgYiJmb28iKQorICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksIGIiYSIqMTAyNCwgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncyksIGIiYSIqMTAyNCkKKyAgICAgICAgcmVtb3ZleGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKKyAgICAgICAgbWFueSA9IHNvcnRlZCgidXNlci50ZXN0e30iLmZvcm1hdChpKSBmb3IgaSBpbiByYW5nZSgxMDApKQorICAgICAgICBmb3IgdGhpbmcgaW4gbWFueToKKyAgICAgICAgICAgIHNldHhhdHRyKGZuLCB0aGluZywgYiJ4IiwgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGxpc3R4YXR0cihmbikpLCBzZXQoaW5pdF94YXR0cikgfCBzZXQobWFueSkpCisKKyAgICBkZWYgX2NoZWNrX3hhdHRycyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBkZWYgbWFrZV9ieXRlcyhzKToKKyAgICAgICAgICAgIHJldHVybiBieXRlcyhzLCAiYXNjaWkiKQorICAgICAgICBzZWxmLl9jaGVja194YXR0cnNfc3RyKHN0ciwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzX3N0cihtYWtlX2J5dGVzLCAqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgdGVzdF9zaW1wbGUoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX3hhdHRycyhvcy5nZXR4YXR0ciwgb3Muc2V0eGF0dHIsIG9zLnJlbW92ZXhhdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MubGlzdHhhdHRyKQorCisgICAgZGVmIHRlc3RfbHBhdGgoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX3hhdHRycyhvcy5nZXR4YXR0ciwgb3Muc2V0eGF0dHIsIG9zLnJlbW92ZXhhdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MubGlzdHhhdHRyLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisKKyAgICBkZWYgdGVzdF9mZHMoc2VsZik6CisgICAgICAgIGRlZiBnZXR4YXR0cihwYXRoLCAqYXJncyk6CisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgInJiIikgYXMgZnA6CisgICAgICAgICAgICAgICAgcmV0dXJuIG9zLmdldHhhdHRyKGZwLmZpbGVubygpLCAqYXJncykKKyAgICAgICAgZGVmIHNldHhhdHRyKHBhdGgsICphcmdzKToKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBvcy5zZXR4YXR0cihmcC5maWxlbm8oKSwgKmFyZ3MpCisgICAgICAgIGRlZiByZW1vdmV4YXR0cihwYXRoLCAqYXJncyk6CisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgIndiIikgYXMgZnA6CisgICAgICAgICAgICAgICAgb3MucmVtb3ZleGF0dHIoZnAuZmlsZW5vKCksICphcmdzKQorICAgICAgICBkZWYgbGlzdHhhdHRyKHBhdGgsICphcmdzKToKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAicmIiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICByZXR1cm4gb3MubGlzdHhhdHRyKGZwLmZpbGVubygpLCAqYXJncykKKyAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzKGdldHhhdHRyLCBzZXR4YXR0ciwgcmVtb3ZleGF0dHIsIGxpc3R4YXR0cikKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIldpbjMyIHNwZWNpZmljIHRlc3RzIikKK2NsYXNzIFdpbjMyRGVwcmVjYXRlZEJ5dGVzQVBJKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9kZXByZWNhdGVkKHNlbGYpOgorICAgICAgICBpbXBvcnQgbnQKKyAgICAgICAgZmlsZW5hbWUgPSBvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIGZvciBmdW5jLCAqYXJncyBpbiAoCisgICAgICAgICAgICAgICAgKG50Ll9nZXRmdWxscGF0aG5hbWUsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAobnQuX2lzZGlyLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLmFjY2VzcywgZmlsZW5hbWUsIG9zLlJfT0spLAorICAgICAgICAgICAgICAgIChvcy5jaGRpciwgZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgIChvcy5jaG1vZCwgZmlsZW5hbWUsIDBvNzc3KSwKKyAgICAgICAgICAgICAgICAob3MuZ2V0Y3dkYiwpLAorICAgICAgICAgICAgICAgIChvcy5saW5rLCBmaWxlbmFtZSwgZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgIChvcy5saXN0ZGlyLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLmxzdGF0LCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLm1rZGlyLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLm9wZW4sIGZpbGVuYW1lLCBvcy5PX1JET05MWSksCisgICAgICAgICAgICAgICAgKG9zLnJlbmFtZSwgZmlsZW5hbWUsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3Mucm1kaXIsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3Muc3RhcnRmaWxlLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLnN0YXQsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3MudW5saW5rLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLnV0aW1lLCBmaWxlbmFtZSksCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERlcHJlY2F0aW9uV2FybmluZywgZnVuYywgKmFyZ3MpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3Rfc3ltbGluayhzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN5bWxpbmssIGZpbGVuYW1lLCBmaWxlbmFtZSkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0X3Rlcm1pbmFsX3NpemUnKSwgInJlcXVpcmVzIG9zLmdldF90ZXJtaW5hbF9zaXplIikKK2NsYXNzIFRlcm1zaXplVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2RvZXNfbm90X2NyYXNoKHNlbGYpOgorICAgICAgICAiIiJDaGVjayBpZiBnZXRfdGVybWluYWxfc2l6ZSgpIHJldHVybnMgYSBtZWFuaW5nZnVsIHZhbHVlLgorCisgICAgICAgIFRoZXJlJ3Mgbm8gZWFzeSBwb3J0YWJsZSB3YXkgdG8gYWN0dWFsbHkgY2hlY2sgdGhlIHNpemUgb2YgdGhlCisgICAgICAgIHRlcm1pbmFsLCBzbyBsZXQncyBjaGVjayBpZiBpdCByZXR1cm5zIHNvbWV0aGluZyBzZW5zaWJsZSBpbnN0ZWFkLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2l6ZSA9IG9zLmdldF90ZXJtaW5hbF9zaXplKCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiIG9yIGUuZXJybm8gaW4gKGVycm5vLkVJTlZBTCwgZXJybm8uRU5PVFRZKToKKyAgICAgICAgICAgICAgICAjIFVuZGVyIHdpbjMyIGEgZ2VuZXJpYyBPU0Vycm9yIGNhbiBiZSB0aHJvd24gaWYgdGhlCisgICAgICAgICAgICAgICAgIyBoYW5kbGUgY2Fubm90IGJlIHJldHJpZXZlZAorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImZhaWxlZCB0byBxdWVyeSB0ZXJtaW5hbCBzaXplIikKKyAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoc2l6ZS5jb2x1bW5zLCAwKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzaXplLmxpbmVzLCAwKQorCisgICAgZGVmIHRlc3Rfc3R0eV9tYXRjaChzZWxmKToKKyAgICAgICAgIiIiQ2hlY2sgaWYgc3R0eSByZXR1cm5zIHRoZSBzYW1lIHJlc3VsdHMKKworICAgICAgICBzdHR5IGFjdHVhbGx5IHRlc3RzIHN0ZGluLCBzbyBnZXRfdGVybWluYWxfc2l6ZSBpcyBpbnZva2VkIG9uCisgICAgICAgIHN0ZGluIGV4cGxpY2l0bHkuIElmIHN0dHkgc3VjY2VlZGVkLCB0aGVuIGdldF90ZXJtaW5hbF9zaXplKCkKKyAgICAgICAgc2hvdWxkIHdvcmsgdG9vLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2l6ZSA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnc3R0eScsICdzaXplJ10pLmRlY29kZSgpLnNwbGl0KCkKKyAgICAgICAgZXhjZXB0IChGaWxlTm90Rm91bmRFcnJvciwgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgic3R0eSBpbnZvY2F0aW9uIGZhaWxlZCIpCisgICAgICAgIGV4cGVjdGVkID0gKGludChzaXplWzFdKSwgaW50KHNpemVbMF0pKSAjIHJldmVyc2VkIG9yZGVyCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWN0dWFsID0gb3MuZ2V0X3Rlcm1pbmFsX3NpemUoc3lzLl9fc3RkaW5fXy5maWxlbm8oKSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiIG9yIGUuZXJybm8gaW4gKGVycm5vLkVJTlZBTCwgZXJybm8uRU5PVFRZKToKKyAgICAgICAgICAgICAgICAjIFVuZGVyIHdpbjMyIGEgZ2VuZXJpYyBPU0Vycm9yIGNhbiBiZSB0aHJvd24gaWYgdGhlCisgICAgICAgICAgICAgICAgIyBoYW5kbGUgY2Fubm90IGJlIHJldHJpZXZlZAorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImZhaWxlZCB0byBxdWVyeSB0ZXJtaW5hbCBzaXplIikKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKKworCitAc3VwcG9ydC5yZWFwX3RocmVhZHMKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgRmlsZVRlc3RzLAogICAgICAgICBTdGF0QXR0cmlidXRlVGVzdHMsCiAgICAgICAgIEVudmlyb25UZXN0cywKICAgICAgICAgV2Fsa1Rlc3RzLAorICAgICAgICBGd2Fsa1Rlc3RzLAogICAgICAgICBNYWtlZGlyVGVzdHMsCiAgICAgICAgIERldk51bGxUZXN0cywKICAgICAgICAgVVJhbmRvbVRlc3RzLApAQCAtMTM2NSw5ICsyMTI2LDE1IEBACiAgICAgICAgIFdpbjMyS2lsbFRlc3RzLAogICAgICAgICBXaW4zMlN5bWxpbmtUZXN0cywKICAgICAgICAgRlNFbmNvZGluZ1Rlc3RzLAorICAgICAgICBEZXZpY2VFbmNvZGluZ1Rlc3RzLAogICAgICAgICBQaWRUZXN0cywKICAgICAgICAgTG9naW5UZXN0cywKICAgICAgICAgTGlua1Rlc3RzLAorICAgICAgICBUZXN0U2VuZGZpbGUsCisgICAgICAgIFByb2dyYW1Qcmlvcml0eVRlc3RzLAorICAgICAgICBFeHRlbmRlZEF0dHJpYnV0ZVRlc3RzLAorICAgICAgICBXaW4zMkRlcHJlY2F0ZWRCeXRlc0FQSSwKKyAgICAgICAgVGVybXNpemVUZXN0cywKICAgICAgICAgUmVtb3ZlRGlyc1Rlc3RzLAogICAgICkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vc3NhdWRpb2Rldi5weSBiL0xpYi90ZXN0L3Rlc3Rfb3NzYXVkaW9kZXYucHkKaW5kZXggOWNiODlkNi4uMzkwOGEwNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vc3NhdWRpb2Rldi5weQorKysgYi9MaWIvdGVzdC90ZXN0X29zc2F1ZGlvZGV2LnB5CkBAIC0xNzAsNiArMTcwLDIyIEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkc3AuY2xvc2VkKQogCisgICAgZGVmIHRlc3Rfb25fY2xvc2VkKHNlbGYpOgorICAgICAgICBkc3AgPSBvc3NhdWRpb2Rldi5vcGVuKCd3JykKKyAgICAgICAgZHNwLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZHNwLmZpbGVubykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZHNwLnJlYWQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRzcC53cml0ZSwgYid4JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZHNwLndyaXRlYWxsLCBiJ3gnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3AuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZHNwLm9idWZjb3VudCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZHNwLm9idWZjb3VudCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZHNwLm9idWZmcmVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3AuZ2V0cHRyKQorCisgICAgICAgIG1peGVyID0gb3NzYXVkaW9kZXYub3Blbm1peGVyKCkKKyAgICAgICAgbWl4ZXIuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtaXhlci5maWxlbm8pCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29zeF9lbnYucHkgYi9MaWIvdGVzdC90ZXN0X29zeF9lbnYucHkKaW5kZXggOGIzZGYzNy4uMjRlYzJiNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vc3hfZW52LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3N4X2Vudi5weQpAQCAtNSw2ICs1LDcgQEAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBFbnZpcm9ubWVudFZhckd1YXJkLCBydW5fdW5pdHRlc3QKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgdW5pdHRlc3QKIAogY2xhc3MgT1NYRW52aXJvbm1lbnRWYXJpYWJsZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTI3LDggKzI4LDYgQEAKICAgICAgICAgc2VsZi5fY2hlY2tfc3lzKCdQWVRIT05FWEVDVVRBQkxFJywgJz09JywgJ3N5cy5leGVjdXRhYmxlJykKIAogZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKLQogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdXSVRIX05FWFRfRlJBTUVXT1JLJyk6CiAgICAgICAgIHJ1bl91bml0dGVzdChPU1hFbnZpcm9ubWVudFZhcmlhYmxlVGVzdENhc2UpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkKaW5kZXggYjM5ZDM3Yi4uZTc5NjhjYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkKQEAgLTUyLDYgKzUyLDEwIEBACiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRlZiBmKCk6ICh5aWVsZCAxKSoyIikKICAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZGVmIGYoKTogcmV0dXJuOyB5aWVsZCAxIikKICAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZGVmIGYoKTogeWllbGQgMTsgcmV0dXJuIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZGVmIGYoKTogeWllbGQgZnJvbSAxIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZGVmIGYoKTogeCA9IHlpZWxkIGZyb20gMSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRlZiBmKCk6IGYoKHlpZWxkIGZyb20gMSkpIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZGVmIGYoKTogeWllbGQgMTsgcmV0dXJuIDEiKQogICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOlxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZm9yIHggaW4gcmFuZ2UoMzApOlxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIHlpZWxkIHhcbiIpCkBAIC03MTksNiArNzIzLDEyIEBACiAKICAgICAjIFhYWCB0ZXN0cyBmb3IgcGlja2xpbmcgYW5kIHVucGlja2xpbmcgb2YgU1Qgb2JqZWN0cyBzaG91bGQgZ28gaGVyZQogCitjbGFzcyBPdGhlclBhcnNlckNhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfdHdvX2FyZ3NfdG9fZXhwcihzZWxmKToKKyAgICAgICAgIyBTZWUgYnVnICMxMjI2NAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZXhwcigiYSIsICJiIikKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KApAQCAtNzI3LDYgKzczNyw3IEBACiAgICAgICAgIENvbXBpbGVUZXN0Q2FzZSwKICAgICAgICAgUGFyc2VyU3RhY2tMaW1pdFRlc3RDYXNlLAogICAgICAgICBTVE9iamVjdFRlc3RDYXNlLAorICAgICAgICBPdGhlclBhcnNlckNhc2UsCiAgICAgKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGRiLnB5IGIvTGliL3Rlc3QvdGVzdF9wZGIucHkKaW5kZXggODM1NWU3ZC4uNGZiMDdhMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZGIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZGIucHkKQEAgLTIxLDkgKzIxLDEyIEBACiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICAgc2VsZi5yZWFsX3N0ZGluID0gc3lzLnN0ZGluCiAgICAgICAgIHN5cy5zdGRpbiA9IF9GYWtlSW5wdXQoc2VsZi5pbnB1dCkKKyAgICAgICAgc2VsZi5vcmlnX3RyYWNlID0gc3lzLmdldHRyYWNlKCkgaWYgaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGVsc2UgTm9uZQogCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGMpOgogICAgICAgICBzeXMuc3RkaW4gPSBzZWxmLnJlYWxfc3RkaW4KKyAgICAgICAgaWYgc2VsZi5vcmlnX3RyYWNlOgorICAgICAgICAgICAgc3lzLnNldHRyYWNlKHNlbGYub3JpZ190cmFjZSkKIAogCiBkZWYgdGVzdF9wZGJfZGlzcGxheWhvb2soKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkKaW5kZXggZTI2OGFlMi4uMWNhY2RlYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkKQEAgLTMsMTMgKzMsMTYgQEAKIGltcG9ydCBzeXMKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiBpbXBvcnQgdW5pdHRlc3QKK2Zyb20gbWF0aCBpbXBvcnQgY29weXNpZ24KIAogZGVmIGRpc2Fzc2VtYmxlKGZ1bmMpOgogICAgIGYgPSBTdHJpbmdJTygpCiAgICAgdG1wID0gc3lzLnN0ZG91dAogICAgIHN5cy5zdGRvdXQgPSBmCi0gICAgZGlzLmRpcyhmdW5jKQotICAgIHN5cy5zdGRvdXQgPSB0bXAKKyAgICB0cnk6CisgICAgICAgIGRpcy5kaXMoZnVuYykKKyAgICBmaW5hbGx5OgorICAgICAgICBzeXMuc3Rkb3V0ID0gdG1wCiAgICAgcmVzdWx0ID0gZi5nZXR2YWx1ZSgpCiAgICAgZi5jbG9zZSgpCiAgICAgcmV0dXJuIHJlc3VsdApAQCAtMTcsNiArMjAsNyBAQAogZGVmIGRpc19zaW5nbGUobGluZSk6CiAgICAgcmV0dXJuIGRpc2Fzc2VtYmxlKGNvbXBpbGUobGluZSwgJycsICdzaW5nbGUnKSkKIAorCiBjbGFzcyBUZXN0VHJhbmZvcm1zKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3Vub3Qoc2VsZik6CkBAIC05OSw2ICsxMDMsMTIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZWxlbSwgYXNtKQogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignQlVJTERfVFVQTEUnLCBhc20pCiAKKyAgICAgICAgIyBMb25nIHR1cGxlcyBzaG91bGQgYmUgZm9sZGVkIHRvby4KKyAgICAgICAgYXNtID0gZGlzX3NpbmdsZShyZXByKHR1cGxlKHJhbmdlKDEwMDAwKSkpKQorICAgICAgICAjIE9uZSBMT0FEX0NPTlNUIGZvciB0aGUgdHVwbGUsIG9uZSBmb3IgdGhlIE5vbmUgcmV0dXJuIHZhbHVlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXNtLmNvdW50KCdMT0FEX0NPTlNUJyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0JVSUxEX1RVUExFJywgYXNtKQorCiAgICAgICAgICMgQnVnIDEwNTM4MTk6ICBUdXBsZSBvZiBjb25zdGFudHMgbWlzaWRlbnRpZmllZCB3aGVuIHByZXNlbnRlZCB3aXRoOgogICAgICAgICAjIC4gLiAuIG9wY29kZV93aXRoX2FyZyAxMDAgICB1bmFyeV9vcGNvZGUgICBCVUlMRF9UVVBMRSAxICAuIC4gLgogICAgICAgICAjIFRoZSBmb2xsb3dpbmcgd291bGQgc2VnZmF1bHQgdXBvbiBjb21waWxhdGlvbgpAQCAtMTk2LDI3ICsyMDYsMjggQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbignKDEwMDApJywgYXNtKQogCiAgICAgZGVmIHRlc3RfYmluYXJ5X3N1YnNjcl9vbl91bmljb2RlKHNlbGYpOgotICAgICAgICAjIHVuaWNvZGUgc3RyaW5ncyBkb24ndCBnZXQgb3B0aW1pemVkCisgICAgICAgICMgdmFsaWQgY29kZSBnZXQgb3B0aW1pemVkCiAgICAgICAgIGFzbSA9IGRpc19zaW5nbGUoJyJmb28iWzBdJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiKCdmJykiLCBhc20pCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JJTkFSWV9TVUJTQ1InLCBhc20pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIignZicpIiwgYXNtKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdCSU5BUllfU1VCU0NSJywgYXNtKQogICAgICAgICBhc20gPSBkaXNfc2luZ2xlKCciXHUwMDYxXHVmZmZmIlsxXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oIignXFx1ZmZmZicpIiwgYXNtKQotICAgICAgICBzZWxmLmFzc2VydEluKCdCSU5BUllfU1VCU0NSJywgYXNtKQorICAgICAgICBzZWxmLmFzc2VydEluKCIoJ1xcdWZmZmYnKSIsIGFzbSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignQklOQVJZX1NVQlNDUicsIGFzbSkKKyAgICAgICAgYXNtID0gZGlzX3NpbmdsZSgnIlxVMDAwMTIzNDVhYmNkZWYiWzNdJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiKCdjJykiLCBhc20pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0JJTkFSWV9TVUJTQ1InLCBhc20pCiAKKyAgICAgICAgIyBpbnZhbGlkIGNvZGUgZG9lc24ndCBnZXQgb3B0aW1pemVkCiAgICAgICAgICMgb3V0IG9mIHJhbmdlCiAgICAgICAgIGFzbSA9IGRpc19zaW5nbGUoJyJmdXUiWzEwXScpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JJTkFSWV9TVUJTQ1InLCBhc20pCi0gICAgICAgICMgbm9uLUJNUCBjaGFyIChzZWUgIzUwNTcpCi0gICAgICAgIGFzbSA9IGRpc19zaW5nbGUoJyJcVTAwMDEyMzQ1IlswXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JJTkFSWV9TVUJTQ1InLCBhc20pCi0gICAgICAgIGFzbSA9IGRpc19zaW5nbGUoJyJcVTAwMDEyMzQ1YWJjZGVmIlszXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JJTkFSWV9TVUJTQ1InLCBhc20pCi0KIAogICAgIGRlZiB0ZXN0X2ZvbGRpbmdfb2ZfdW5hcnlvcHNfb25fY29uc3RhbnRzKHNlbGYpOgogICAgICAgICBmb3IgbGluZSwgZWxlbSBpbiAoCiAgICAgICAgICAgICAoJy0wLjUnLCAnKC0wLjUpJyksICAgICAgICAgICAgICAgICAgICAgIyB1bmFyeSBuZWdhdGl2ZQorICAgICAgICAgICAgKCctMC4wJywgJygtMC4wKScpLCAgICAgICAgICAgICAgICAgICAgICMgLTAuMAorICAgICAgICAgICAgKCctKDEuMC0xLjApJywnKC0wLjApJyksICAgICAgICAgICAgICAgICMgLTAuMCBhZnRlciBmb2xkaW5nCisgICAgICAgICAgICAoJy0wJywgJygwKScpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyAtMAogICAgICAgICAgICAgKCd+LTInLCAnKDEpJyksICAgICAgICAgICAgICAgICAgICAgICAgICMgdW5hcnkgaW52ZXJ0CiAgICAgICAgICAgICAoJysxJywgJygxKScpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1bmFyeSBwb3NpdGl2ZQogICAgICAgICApOgpAQCAtMjI0LDYgKzIzNSwxMyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlbGVtLCBhc20sIGFzbSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1VOQVJZXycsIGFzbSkKIAorICAgICAgICAjIENoZWNrIHRoYXQgLTAuMCB3b3JrcyBhZnRlciBtYXJzaGFsaW5nCisgICAgICAgIGRlZiBuZWd6ZXJvKCk6CisgICAgICAgICAgICByZXR1cm4gLSgxLjAtMS4wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1VOQVJZXycsIGRpc2Fzc2VtYmxlKG5lZ3plcm8pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29weXNpZ24oMS4wLCBuZWd6ZXJvKCkpIDwgMCkKKwogICAgICAgICAjIFZlcmlmeSB0aGF0IHVuZm9sZGFibGVzIGFyZSBza2lwcGVkCiAgICAgICAgIGZvciBsaW5lLCBlbGVtIGluICgKICAgICAgICAgICAgICgnLSJhYmMiJywgIignYWJjJykiKSwgICAgICAgICAgICAgICAgICAjIHVuYXJ5IG5lZ2F0aXZlCkBAIC0yODYsNiArMzA0LDI1IEBACiAgICAgICAgIGFzbSA9IGRpc2Fzc2VtYmxlKGYpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0JJTkFSWV9BREQnLCBhc20pCiAKKyAgICBkZWYgdGVzdF9jb25zdGFudF9mb2xkaW5nKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxMTI0NDogYWdncmVzc2l2ZSBjb25zdGFudCBmb2xkaW5nLgorICAgICAgICBleHBycyA9IFsKKyAgICAgICAgICAgICIzICogLTUiLAorICAgICAgICAgICAgIi0zICogNSIsCisgICAgICAgICAgICAiMiAqICgzICogNCkiLAorICAgICAgICAgICAgIigyICogMykgKiA0IiwKKyAgICAgICAgICAgICIoLTEsIDIsIDMpIiwKKyAgICAgICAgICAgICIoMSwgLTIsIDMpIiwKKyAgICAgICAgICAgICIoMSwgMiwgLTMpIiwKKyAgICAgICAgICAgICIoMSwgMiwgLTMpICogNiIsCisgICAgICAgICAgICAibGFtYmRhIHg6IHggaW4geygzICogLTUpICsgKC0xIC0gNiksICgxLCAtMiwgMykgKiAyLCBOb25lfSIsCisgICAgICAgIF0KKyAgICAgICAgZm9yIGUgaW4gZXhwcnM6CisgICAgICAgICAgICBhc20gPSBkaXNfc2luZ2xlKGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdVTkFSWV8nLCBhc20sIGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdCSU5BUllfJywgYXNtLCBlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignQlVJTERfJywgYXNtLCBlKQorCiBjbGFzcyBUZXN0QnVnbGV0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9idWdfMTE1MTAoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDI3Ny5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMjc3LnB5CmluZGV4IDZkODkxZTUuLjRiMTZjYmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMjc3LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMjc3LnB5CkBAIC0xLDYgKzEsOSBAQAogIyBUZXN0IHRoZSBVbmljb2RlIHZlcnNpb25zIG9mIG5vcm1hbCBmaWxlIGZ1bmN0aW9ucwogIyBvcGVuLCBvcy5vcGVuLCBvcy5zdGF0LiBvcy5saXN0ZGlyLCBvcy5yZW5hbWUsIG9zLnJlbW92ZSwgb3MubWtkaXIsIG9zLmNoZGlyLCBvcy5ybWRpcgotaW1wb3J0IHN5cywgb3MsIHVuaXR0ZXN0CitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIHVuaWNvZGVkYXRhIGltcG9ydCBub3JtYWxpemUKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCkBAIC0zOCw4ICs0MSw4IEBACiAgICAgICAgICcxN19cdTIwMDFcdTIwMDFcdTIwMDFBJywKICAgICAgICAgJzE4X1x1MjAwM1x1MjAwM1x1MjAwM0EnLCAgIyA9PSBORkMoJ1x1MjAwMVx1MjAwMVx1MjAwMUEnKQogICAgICAgICAnMTlfXHUwMDIwXHUwMDIwXHUwMDIwQScsICAjICdcdTAwMjAnID09ICcgJyA9PSBORktDKCdcdTIwMDAnKSA9PQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICBORktDKCdcdTIwMDEnKSA9PSBORktDKCdcdTIwMDMnKQotXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgTkZLQygnXHUyMDAxJykgPT0gTkZLQygnXHUyMDAzJykKKyAgICBdKQogCiAKICMgSXMgaXQgVW5pY29kZS1mcmllbmRseT8KQEAgLTcxLDcgKzc0LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLm1rZGlyKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZmlsZXMgPSBzZXQoKQogICAgICAgICBmb3IgbmFtZSBpbiBzZWxmLmZpbGVzOgpAQCAtOTAsMTUgKzkzLDE3IEBACiAgICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplKHNlbGYubm9ybWFsX2Zvcm0sIHMpCiAgICAgICAgIHJldHVybiBzCiAKLSAgICBkZWYgX2FwcGx5X2ZhaWx1cmUoc2VsZiwgZm4sIGZpbGVuYW1lLCBleHBlY3RlZF9leGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2ZuX2luX2V4Y2VwdGlvbiA9IFRydWUpOgorICAgIGRlZiBfYXBwbHlfZmFpbHVyZShzZWxmLCBmbiwgZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V4Y2VwdGlvbj1GaWxlTm90Rm91bmRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfZmlsZW5hbWU9VHJ1ZSk6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXhwZWN0ZWRfZXhjZXB0aW9uKSBhcyBjOgogICAgICAgICAgICAgZm4oZmlsZW5hbWUpCiAgICAgICAgIGV4Y19maWxlbmFtZSA9IGMuZXhjZXB0aW9uLmZpbGVuYW1lCi0gICAgICAgICMgdGhlICJmaWxlbmFtZSIgZXhjZXB0aW9uIGF0dHJpYnV0ZSBtYXkgYmUgZW5jb2RlZAotICAgICAgICBpZiBpc2luc3RhbmNlKGV4Y19maWxlbmFtZSwgYnl0ZXMpOgotICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5lbmNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKQotICAgICAgICBpZiBjaGVja19mbl9pbl9leGNlcHRpb246CisgICAgICAgICMgbGlzdGRpciBtYXkgYXBwZW5kIGEgd2lsZGNhcmQgdG8gdGhlIGZpbGVuYW1lCisgICAgICAgIGlmIGZuIGlzIG9zLmxpc3RkaXIgYW5kIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgZXhjX2ZpbGVuYW1lLCBfLCB3aWxkY2FyZCA9IGV4Y19maWxlbmFtZS5ycGFydGl0aW9uKG9zLnNlcCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2lsZGNhcmQsICcqLionKQorICAgICAgICBpZiBjaGVja19maWxlbmFtZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjX2ZpbGVuYW1lLCBmaWxlbmFtZSwgIkZ1bmN0aW9uICclcyglYSkgZmFpbGVkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGggYmFkIGZpbGVuYW1lIGluIHRoZSBleGNlcHRpb246ICVhIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbi5fX25hbWVfXywgZmlsZW5hbWUsIGV4Y19maWxlbmFtZSkpCkBAIC0xMDcsMTMgKzExMiwxOCBAQAogICAgICAgICAjIFBhc3Mgbm9uLWV4aXN0aW5nIFVuaWNvZGUgZmlsZW5hbWVzIGFsbCBvdmVyIHRoZSBwbGFjZS4KICAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5maWxlczoKICAgICAgICAgICAgIG5hbWUgPSAibm90XyIgKyBuYW1lCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9wZW4sIG5hbWUsIElPRXJyb3IpCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnN0YXQsIG5hbWUsIE9TRXJyb3IpCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLmNoZGlyLCBuYW1lLCBPU0Vycm9yKQotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5ybWRpciwgbmFtZSwgT1NFcnJvcikKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MucmVtb3ZlLCBuYW1lLCBPU0Vycm9yKQotICAgICAgICAgICAgIyBsaXN0ZGlyIG1heSBhcHBlbmQgYSB3aWxkY2FyZCB0byB0aGUgZmlsZW5hbWUsIHNvIGRvbnQgY2hlY2sKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MubGlzdGRpciwgbmFtZSwgT1NFcnJvciwgRmFsc2UpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9wZW4sIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnN0YXQsIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLmNoZGlyLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5ybWRpciwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MucmVtb3ZlLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5saXN0ZGlyLCBuYW1lKQorCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgICMgV2luZG93cyBpcyBsdW5hdGljLiBJc3N1ZSAjMTMzNjYuCisgICAgICAgIF9saXN0ZGlyX2ZhaWx1cmUgPSBOb3RBRGlyZWN0b3J5RXJyb3IsIEZpbGVOb3RGb3VuZEVycm9yCisgICAgZWxzZToKKyAgICAgICAgX2xpc3RkaXJfZmFpbHVyZSA9IE5vdEFEaXJlY3RvcnlFcnJvcgogCiAgICAgZGVmIHRlc3Rfb3BlbihzZWxmKToKICAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5maWxlczoKQEAgLTEyMSwxMiArMTMxLDEzIEBACiAgICAgICAgICAgICBmLndyaXRlKChuYW1lKydcbicpLmVuY29kZSgidXRmLTgiKSkKICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgb3Muc3RhdChuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5saXN0ZGlyLCBuYW1lLCBzZWxmLl9saXN0ZGlyX2ZhaWx1cmUpCiAKICAgICAjIFNraXAgdGhlIHRlc3Qgb24gZGFyd2luLCBiZWNhdXNlIGRhcndpbiBkb2VzIG5vcm1hbGl6ZSB0aGUgZmlsZW5hbWUgdG8KICAgICAjIE5GRCAoYSB2YXJpYW50IG9mIFVuaWNvZGUgTkZEIGZvcm0pLiBOb3JtYWxpemUgdGhlIGZpbGVuYW1lIHRvIE5GQywgTkZLQywKICAgICAjIE5GS0QgaW4gUHl0aG9uIGlzIHVzZWxlc3MsIGJlY2F1c2UgZGFyd2luIHdpbGwgbm9ybWFsaXplIGl0IGxhdGVyIGFuZCBzbwogICAgICMgb3BlbigpLCBvcy5zdGF0KCksIGV0Yy4gZG9uJ3QgcmFpc2UgYW55IGV4Y2VwdGlvbi4KLSAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywgJ2lycmV2ZWxhbnQgdGVzdCBvbiBNYWMgT1MgWCcpCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicsICdpcnJlbGV2YW50IHRlc3Qgb24gTWFjIE9TIFgnKQogICAgIGRlZiB0ZXN0X25vcm1hbGl6ZShzZWxmKToKICAgICAgICAgZmlsZXMgPSBzZXQoc2VsZi5maWxlcykKICAgICAgICAgb3RoZXJzID0gc2V0KCkKQEAgLTEzNCwyMSArMTQ1LDIyIEBACiAgICAgICAgICAgICBvdGhlcnMgfD0gc2V0KG5vcm1hbGl6ZShuZiwgZmlsZSkgZm9yIGZpbGUgaW4gZmlsZXMpCiAgICAgICAgIG90aGVycyAtPSBmaWxlcwogICAgICAgICBmb3IgbmFtZSBpbiBvdGhlcnM6Ci0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9wZW4sIG5hbWUsIElPRXJyb3IpCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnN0YXQsIG5hbWUsIE9TRXJyb3IpCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLmNoZGlyLCBuYW1lLCBPU0Vycm9yKQotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5ybWRpciwgbmFtZSwgT1NFcnJvcikKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MucmVtb3ZlLCBuYW1lLCBPU0Vycm9yKQotICAgICAgICAgICAgIyBsaXN0ZGlyIG1heSBhcHBlbmQgYSB3aWxkY2FyZCB0byB0aGUgZmlsZW5hbWUsIHNvIGRvbnQgY2hlY2sKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MubGlzdGRpciwgbmFtZSwgT1NFcnJvciwgRmFsc2UpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9wZW4sIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnN0YXQsIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLmNoZGlyLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5ybWRpciwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MucmVtb3ZlLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5saXN0ZGlyLCBuYW1lKQogCiAgICAgIyBTa2lwIHRoZSB0ZXN0IG9uIGRhcndpbiwgYmVjYXVzZSBkYXJ3aW4gdXNlcyBhIG5vcm1hbGl6YXRpb24gZGlmZmVyZW50CiAgICAgIyB0aGFuIFB5dGhvbiBORkQgbm9ybWFsaXphdGlvbjogZmlsZW5hbWVzIGFyZSBkaWZmZXJlbnQgZXZlbiBpZiB3ZSB1c2UKICAgICAjIFB5dGhvbiBORkQgbm9ybWFsaXphdGlvbi4KLSAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywgJ2lycmV2ZWxhbnQgdGVzdCBvbiBNYWMgT1MgWCcpCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicsICdpcnJlbGV2YW50IHRlc3Qgb24gTWFjIE9TIFgnKQogICAgIGRlZiB0ZXN0X2xpc3RkaXIoc2VsZik6CiAgICAgICAgIHNmMCA9IHNldChzZWxmLmZpbGVzKQotICAgICAgICBmMSA9IG9zLmxpc3RkaXIoc3VwcG9ydC5URVNURk4uZW5jb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgZjEgPSBvcy5saXN0ZGlyKHN1cHBvcnQuVEVTVEZOLmVuY29kZShzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpKQogICAgICAgICBmMiA9IG9zLmxpc3RkaXIoc3VwcG9ydC5URVNURk4pCiAgICAgICAgIHNmMiA9IHNldChvcy5wYXRoLmpvaW4oc3VwcG9ydC5URVNURk4sIGYpIGZvciBmIGluIGYyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNmMCwgc2YyLCAiJWEgIT0gJWEiICUgKHNmMCwgc2YyKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMjkyLnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAyOTIucHkKaW5kZXggMTE5YzdlYS4uNmRhOGQyZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAyOTIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXAyOTIucHkKQEAgLTQyLDE5ICs0Miw2IEBACiAgICAgICAgIHMgPSBUZW1wbGF0ZSgnJHdobyBsaWtlcyAkJCcpCiAgICAgICAgIGVxKHMuc3Vic3RpdHV0ZShkaWN0KHdobz0ndGltJywgd2hhdD0naGFtJykpLCAndGltIGxpa2VzICQnKQogCi0gICAgZGVmIHRlc3RfaW52YWxpZChzZWxmKToKLSAgICAgICAgY2xhc3MgTXlQYXR0ZXJuKFRlbXBsYXRlKToKLSAgICAgICAgICAgIHBhdHRlcm4gPSByIiIiCi0gICAgICAgICAgICAoPzoKLSAgICAgICAgICAgICg/UDxpbnZhbGlkPikgICAgICAgICAgICB8Ci0gICAgICAgICAgICAoP1A8ZXNjYXBlZD4lKGRlbGltKXMpICAgfAotICAgICAgICAgICAgQCg/UDxuYW1lZD4lKGlkKXMpICAgICAgIHwKLSAgICAgICAgICAgIEB7KD9QPGJyYWNlZD4lKGlkKXMpfSAgICAKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgICIiIgotICAgICAgICBzID0gTXlQYXR0ZXJuKCckJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcy5zdWJzdGl0dXRlLCBkaWN0KCkpIAotCiAgICAgZGVmIHRlc3RfcGVyY2VudHMoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBzID0gVGVtcGxhdGUoJyUoZm9vKXMgJGZvbyAke2Zvb30nKQpAQCAtMTcyLDYgKzE1OSwyNiBAQAogICAgICAgICB2YWwgPSB0LnNhZmVfc3Vic3RpdHV0ZSh7J2xvY2F0aW9uJzogJ0NsZXZlbGFuZCd9KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbCwgJ1B5Q29uIGluIENsZXZlbGFuZCcpCiAKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3dpdGhfbm9fbGluZXMoc2VsZik6CisgICAgICAgICMgVGhlIGVycm9yIGZvcm1hdHRpbmcgZm9yIGludmFsaWQgdGVtcGxhdGVzCisgICAgICAgICMgaGFzIGEgc3BlY2lhbCBjYXNlIGZvciBubyBkYXRhIHRoYXQgdGhlIGRlZmF1bHQKKyAgICAgICAgIyBwYXR0ZXJuIGNhbid0IHRyaWdnZXIgKGFsd2F5cyBoYXMgYXQgbGVhc3QgJyQnKQorICAgICAgICAjIFNvIHdlIGNyYWZ0IGEgcGF0dGVybiB0aGF0IGlzIGFsd2F5cyBpbnZhbGlkCisgICAgICAgICMgd2l0aCBubyBsZWFkaW5nIGRhdGEuCisgICAgICAgIGNsYXNzIE15VGVtcGxhdGUoVGVtcGxhdGUpOgorICAgICAgICAgICAgcGF0dGVybiA9IHIiIiIKKyAgICAgICAgICAgICAgKD9QPGludmFsaWQ+KSB8CisgICAgICAgICAgICAgIHVucmVhY2hhYmxlKAorICAgICAgICAgICAgICAgICg/UDxuYW1lZD4pICAgfAorICAgICAgICAgICAgICAgICg/UDxicmFjZWQ+KSAgfAorICAgICAgICAgICAgICAgICg/UDxlc2NhcGVkPikKKyAgICAgICAgICAgICAgKQorICAgICAgICAgICAgIiIiCisgICAgICAgIHMgPSBNeVRlbXBsYXRlKCcnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGVycjoKKyAgICAgICAgICAgIHMuc3Vic3RpdHV0ZSh7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGluZSAxLCBjb2wgMScsIHN0cihlcnIuZXhjZXB0aW9uKSkKKwogICAgIGRlZiB0ZXN0X3VuaWNvZGVfdmFsdWVzKHNlbGYpOgogICAgICAgICBzID0gVGVtcGxhdGUoJyR3aG8gbGlrZXMgJHdoYXQnKQogICAgICAgICBkID0gZGljdCh3aG89J3RceGZmbScsIHdoYXQ9J2ZceGZlXGZlZCcpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDMxMzEucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDMxMzEucHkKaW5kZXggZGYwZjY0ZC4uMmU2YjkwYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAzMTMxLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMzEzMS5weQpAQCAtMTcsMTIgKzE3LDcgQEAKIAogICAgIGRlZiB0ZXN0X25vbl9ibXBfbm9ybWFsaXplZChzZWxmKToKICAgICAgICAg8J2UmPCdlKvwnZSm8J2UoPCdlKzwnZSh8J2UoiA9IDEKLSAgICAgICAgIyBPbiB3aWRlIGJ1aWxkcywgdGhpcyBpcyBub3JtYWxpemVkLCBidXQgb24gbmFycm93IG9uZXMgaXQgaXMgbm90LiBTZWUKLSAgICAgICAgIyAjMTI3NDYuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIvCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKIiLCBkaXIoKSkKLSAgICAgICAgZXhjZXB0IEFzc2VydGlvbkVycm9yOgotICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuY2FzZS5fRXhwZWN0ZWRGYWlsdXJlKHN5cy5leGNfaW5mbygpKQorICAgICAgICBzZWxmLmFzc2VydEluKCJVbmljb2RlIiwgZGlyKCkpCiAKICAgICBkZWYgdGVzdF9pbnZhbGlkKHNlbGYpOgogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc5MmMxMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMzE1MS5weQpAQCAtMCwwICsxLDIxMSBAQAoraW1wb3J0IGJ1aWx0aW5zCitpbXBvcnQgb3MKK2ltcG9ydCBzZWxlY3QKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IGVycm5vCitmcm9tIGVycm5vIGltcG9ydCBFRVhJU1QKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK2NsYXNzIFN1Yk9TRXJyb3IoT1NFcnJvcik6CisgICAgcGFzcworCitjbGFzcyBTdWJPU0Vycm9yV2l0aEluaXQoT1NFcnJvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2UsIGJhcik6CisgICAgICAgIHNlbGYuYmFyID0gYmFyCisgICAgICAgIHN1cGVyKCkuX19pbml0X18obWVzc2FnZSkKKworY2xhc3MgU3ViT1NFcnJvcldpdGhOZXcoT1NFcnJvcik6CisgICAgZGVmIF9fbmV3X18oY2xzLCBtZXNzYWdlLCBiYXopOgorICAgICAgICBzZWxmID0gc3VwZXIoKS5fX25ld19fKGNscywgbWVzc2FnZSkKKyAgICAgICAgc2VsZi5iYXogPSBiYXoKKyAgICAgICAgcmV0dXJuIHNlbGYKKworY2xhc3MgU3ViT1NFcnJvckNvbWJpbmVkSW5pdEZpcnN0KFN1Yk9TRXJyb3JXaXRoSW5pdCwgU3ViT1NFcnJvcldpdGhOZXcpOgorICAgIHBhc3MKKworY2xhc3MgU3ViT1NFcnJvckNvbWJpbmVkTmV3Rmlyc3QoU3ViT1NFcnJvcldpdGhOZXcsIFN1Yk9TRXJyb3JXaXRoSW5pdCk6CisgICAgcGFzcworCitjbGFzcyBTdWJPU0Vycm9yV2l0aFN0YW5kYWxvbmVJbml0KE9TRXJyb3IpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgcGFzcworCisKK2NsYXNzIEhpZXJhcmNoeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYnVpbHRpbl9lcnJvcnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoT1NFcnJvci5fX25hbWVfXywgJ09TRXJyb3InKQorICAgICAgICBzZWxmLmFzc2VydElzKElPRXJyb3IsIE9TRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoRW52aXJvbm1lbnRFcnJvciwgT1NFcnJvcikKKworICAgIGRlZiB0ZXN0X3NvY2tldF9lcnJvcnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc29ja2V0LmVycm9yLCBJT0Vycm9yKQorICAgICAgICBzZWxmLmFzc2VydElzKHNvY2tldC5nYWllcnJvci5fX2Jhc2VfXywgT1NFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzb2NrZXQuaGVycm9yLl9fYmFzZV9fLCBPU0Vycm9yKQorICAgICAgICBzZWxmLmFzc2VydElzKHNvY2tldC50aW1lb3V0Ll9fYmFzZV9fLCBPU0Vycm9yKQorCisgICAgZGVmIHRlc3Rfc2VsZWN0X2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGVjdC5lcnJvciwgT1NFcnJvcikKKworICAgICMgbW1hcC5lcnJvciBpcyB0ZXN0ZWQgaW4gdGVzdF9tbWFwCisKKyAgICBfcGVwX21hcCA9ICIiIgorICAgICAgICArLS0gQmxvY2tpbmdJT0Vycm9yICAgICAgICBFQUdBSU4sIEVBTFJFQURZLCBFV09VTERCTE9DSywgRUlOUFJPR1JFU1MKKyAgICAgICAgKy0tIENoaWxkUHJvY2Vzc0Vycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUNISUxECisgICAgICAgICstLSBDb25uZWN0aW9uRXJyb3IKKyAgICAgICAgICAgICstLSBCcm9rZW5QaXBlRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFUElQRSwgRVNIVVRET1dOCisgICAgICAgICAgICArLS0gQ29ubmVjdGlvbkFib3J0ZWRFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgIEVDT05OQUJPUlRFRAorICAgICAgICAgICAgKy0tIENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICBFQ09OTlJFRlVTRUQKKyAgICAgICAgICAgICstLSBDb25uZWN0aW9uUmVzZXRFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFQ09OTlJFU0VUCisgICAgICAgICstLSBGaWxlRXhpc3RzRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVFWElTVAorICAgICAgICArLS0gRmlsZU5vdEZvdW5kRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTk9FTlQKKyAgICAgICAgKy0tIEludGVycnVwdGVkRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVJTlRSCisgICAgICAgICstLSBJc0FEaXJlY3RvcnlFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVJU0RJUgorICAgICAgICArLS0gTm90QURpcmVjdG9yeUVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVOT1RESVIKKyAgICAgICAgKy0tIFBlcm1pc3Npb25FcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFQUNDRVMsIEVQRVJNCisgICAgICAgICstLSBQcm9jZXNzTG9va3VwRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFU1JDSAorICAgICAgICArLS0gVGltZW91dEVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVElNRURPVVQKKyAgICAiIiIKKyAgICBkZWYgX21ha2VfbWFwKHMpOgorICAgICAgICBfbWFwID0ge30KKyAgICAgICAgZm9yIGxpbmUgaW4gcy5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgnKy0gJykKKyAgICAgICAgICAgIGlmIG5vdCBsaW5lOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBleGNuYW1lLCBfLCBlcnJuYW1lcyA9IGxpbmUucGFydGl0aW9uKCcgJykKKyAgICAgICAgICAgIGZvciBlcnJuYW1lIGluIGZpbHRlcihOb25lLCBlcnJuYW1lcy5zdHJpcCgpLnNwbGl0KCcsICcpKToKKyAgICAgICAgICAgICAgICBfbWFwW2dldGF0dHIoZXJybm8sIGVycm5hbWUpXSA9IGdldGF0dHIoYnVpbHRpbnMsIGV4Y25hbWUpCisgICAgICAgIHJldHVybiBfbWFwCisgICAgX21hcCA9IF9tYWtlX21hcChfcGVwX21hcCkKKworICAgIGRlZiB0ZXN0X2Vycm5vX21hcHBpbmcoc2VsZik6CisgICAgICAgICMgVGhlIE9TRXJyb3IgY29uc3RydWN0b3IgbWFwcyBlcnJub3MgdG8gc3ViY2xhc3NlcworICAgICAgICAjIEEgc2FtcGxlIHRlc3QgZm9yIHRoZSBiYXNpYyBmdW5jdGlvbmFsaXR5CisgICAgICAgIGUgPSBPU0Vycm9yKEVFWElTVCwgIkJhZCBmaWxlIGRlc2NyaXB0b3IiKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIEZpbGVFeGlzdHNFcnJvcikKKyAgICAgICAgIyBFeGhhdXN0aXZlIHRlc3RpbmcKKyAgICAgICAgZm9yIGVycmNvZGUsIGV4YyBpbiBzZWxmLl9tYXAuaXRlbXMoKToKKyAgICAgICAgICAgIGUgPSBPU0Vycm9yKGVycmNvZGUsICJTb21lIG1lc3NhZ2UiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBleGMpCisgICAgICAgIG90aGVyY29kZXMgPSBzZXQoZXJybm8uZXJyb3Jjb2RlKSAtIHNldChzZWxmLl9tYXApCisgICAgICAgIGZvciBlcnJjb2RlIGluIG90aGVyY29kZXM6CisgICAgICAgICAgICBlID0gT1NFcnJvcihlcnJjb2RlLCAiU29tZSBtZXNzYWdlIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgT1NFcnJvcikKKworICAgIGRlZiB0ZXN0X3RyeV9leGNlcHQoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gInNvbWVfaG9wZWZ1bGx5X25vbl9leGlzdGluZ19maWxlIgorCisgICAgICAgICMgVGhpcyBjaGVja3MgdGhhdCB0cnkgLi4gZXhjZXB0IGNoZWNrcyB0aGUgY29uY3JldGUgZXhjZXB0aW9uCisgICAgICAgICMgKEZpbGVOb3RGb3VuZEVycm9yKSBhbmQgbm90IHRoZSBiYXNlIHR5cGUgc3BlY2lmaWVkIHdoZW4KKyAgICAgICAgIyBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3Qgd2FzIGNhbGxlZC4KKyAgICAgICAgIyAoaXQgaXMgdGhlcmVmb3JlIGRlbGliZXJhdGUgdGhhdCBpdCBkb2Vzbid0IHVzZSBhc3NlcnRSYWlzZXMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9wZW4oZmlsZW5hbWUpCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic2hvdWxkIGhhdmUgcmFpc2VkIGEgRmlsZU5vdEZvdW5kRXJyb3IiKQorCisgICAgICAgICMgQW5vdGhlciB0ZXN0IGZvciBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZmlsZW5hbWUpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy51bmxpbmsoZmlsZW5hbWUpCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic2hvdWxkIGhhdmUgcmFpc2VkIGEgRmlsZU5vdEZvdW5kRXJyb3IiKQorCisKK2NsYXNzIEF0dHJpYnV0ZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3dpbmRvd3NfZXJyb3Ioc2VsZik6CisgICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3dpbmVycm9yJywgZGlyKE9TRXJyb3IpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignd2luZXJyb3InLCBkaXIoT1NFcnJvcikpCisKKyAgICBkZWYgdGVzdF9wb3NpeF9lcnJvcihzZWxmKToKKyAgICAgICAgZSA9IE9TRXJyb3IoRUVYSVNULCAiRmlsZSBhbHJlYWR5IGV4aXN0cyIsICJmb28udHh0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmVycm5vLCBFRVhJU1QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzBdLCBFRVhJU1QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5zdHJlcnJvciwgIkZpbGUgYWxyZWFkeSBleGlzdHMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZmlsZW5hbWUsICJmb28udHh0IikKKyAgICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLndpbmVycm9yLCBOb25lKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAibnQiLCAiV2luZG93cy1zcGVjaWZpYyB0ZXN0IikKKyAgICBkZWYgdGVzdF9lcnJub190cmFuc2xhdGlvbihzZWxmKToKKyAgICAgICAgIyBFUlJPUl9BTFJFQURZX0VYSVNUUyAoMTgzKSAtPiBFRVhJU1QKKyAgICAgICAgZSA9IE9TRXJyb3IoMCwgIkZpbGUgYWxyZWFkeSBleGlzdHMiLCAiZm9vLnR4dCIsIDE4MykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLndpbmVycm9yLCAxODMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5lcnJubywgRUVYSVNUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgRUVYSVNUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuc3RyZXJyb3IsICJGaWxlIGFscmVhZHkgZXhpc3RzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbGVuYW1lLCAiZm9vLnR4dCIpCisKKyAgICBkZWYgdGVzdF9ibG9ja2luZ2lvZXJyb3Ioc2VsZik6CisgICAgICAgIGFyZ3MgPSAoImEiLCAiYiIsICJjIiwgImQiLCAiZSIpCisgICAgICAgIGZvciBuIGluIHJhbmdlKDYpOgorICAgICAgICAgICAgZSA9IEJsb2NraW5nSU9FcnJvcigqYXJnc1s6bl0pCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICBlLmNoYXJhY3RlcnNfd3JpdHRlbgorICAgICAgICBlID0gQmxvY2tpbmdJT0Vycm9yKCJhIiwgImIiLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuY2hhcmFjdGVyc193cml0dGVuLCAzKQorICAgICAgICBlLmNoYXJhY3RlcnNfd3JpdHRlbiA9IDUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmNoYXJhY3RlcnNfd3JpdHRlbiwgNSkKKworICAgICMgWFhYIFZNU0Vycm9yIG5vdCB0ZXN0ZWQKKworCitjbGFzcyBFeHBsaWNpdFN1YmNsYXNzaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9lcnJub19tYXBwaW5nKHNlbGYpOgorICAgICAgICAjIFdoZW4gY29uc3RydWN0aW5nIGFuIE9TRXJyb3Igc3ViY2xhc3MsIGVycm5vIG1hcHBpbmcgaXNuJ3QgZG9uZQorICAgICAgICBlID0gU3ViT1NFcnJvcihFRVhJU1QsICJCYWQgZmlsZSBkZXNjcmlwdG9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBTdWJPU0Vycm9yKQorCisgICAgZGVmIHRlc3RfaW5pdF9vdmVycmlkZW4oc2VsZik6CisgICAgICAgIGUgPSBTdWJPU0Vycm9yV2l0aEluaXQoInNvbWUgbWVzc2FnZSIsICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYmFyLCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsICgic29tZSBtZXNzYWdlIiwpKQorCisgICAgZGVmIHRlc3RfaW5pdF9rd2RhcmdzKHNlbGYpOgorICAgICAgICBlID0gU3ViT1NFcnJvcldpdGhJbml0KCJzb21lIG1lc3NhZ2UiLCBiYXI9ImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5iYXIsICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJncywgKCJzb21lIG1lc3NhZ2UiLCkpCisKKyAgICBkZWYgdGVzdF9uZXdfb3ZlcnJpZGVuKHNlbGYpOgorICAgICAgICBlID0gU3ViT1NFcnJvcldpdGhOZXcoInNvbWUgbWVzc2FnZSIsICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYmF6LCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsICgic29tZSBtZXNzYWdlIiwpKQorCisgICAgZGVmIHRlc3RfbmV3X2t3ZGFyZ3Moc2VsZik6CisgICAgICAgIGUgPSBTdWJPU0Vycm9yV2l0aE5ldygic29tZSBtZXNzYWdlIiwgYmF6PSJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYmF6LCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsICgic29tZSBtZXNzYWdlIiwpKQorCisgICAgZGVmIHRlc3RfaW5pdF9uZXdfb3ZlcnJpZGVuKHNlbGYpOgorICAgICAgICBlID0gU3ViT1NFcnJvckNvbWJpbmVkSW5pdEZpcnN0KCJzb21lIG1lc3NhZ2UiLCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmJhciwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5iYXosICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJncywgKCJzb21lIG1lc3NhZ2UiLCkpCisgICAgICAgIGUgPSBTdWJPU0Vycm9yQ29tYmluZWROZXdGaXJzdCgic29tZSBtZXNzYWdlIiwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5iYXIsICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYmF6LCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsICgic29tZSBtZXNzYWdlIiwpKQorCisgICAgZGVmIHRlc3RfaW5pdF9zdGFuZGFsb25lKHNlbGYpOgorICAgICAgICAjIF9faW5pdF9fIGRvZXNuJ3QgcHJvcGFnYXRlIHRvIE9TRXJyb3IuX19pbml0X18gKHNlZSBpc3N1ZSAjMTUyMjkpCisgICAgICAgIGUgPSBTdWJPU0Vycm9yV2l0aFN0YW5kYWxvbmVJbml0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsICgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgJycpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQorCitpZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzODAucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDM4MC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2VlZDQzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXAzODAucHkKQEAgLTAsMCArMSw5NjUgQEAKKyMgLSotIGNvZGluZzogdXRmLTggLSotCisKKyIiIgorVGVzdCBzdWl0ZSBmb3IgUEVQIDM4MCBpbXBsZW1lbnRhdGlvbgorCithZGFwdGVkIGZyb20gb3JpZ2luYWwgdGVzdHMgd3JpdHRlbiBieSBHcmVnIEV3aW5nCitzZWUgPGh0dHA6Ly93d3cuY29zYy5jYW50ZXJidXJ5LmFjLm56L2dyZWcuZXdpbmcvcHl0aG9uL3lpZWxkLWZyb20vWWllbGRGcm9tLVB5dGhvbjMuMS4yLXJldjUuemlwPgorIiIiCisKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IGlvCitpbXBvcnQgc3lzCitpbXBvcnQgaW5zcGVjdAoraW1wb3J0IHBhcnNlcgorCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2FwdHVyZWRfc3RkZXJyCisKK2NsYXNzIFRlc3RQRVAzODBPcGVyYXRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3Qgc2VtYW50aWNzLgorICAgICIiIgorCisgICAgZGVmIHRlc3RfZGVsZWdhdGlvbl9vZl9pbml0aWFsX25leHRfdG9fc3ViZ2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBkZWxlZ2F0aW9uIG9mIGluaXRpYWwgbmV4dCgpIGNhbGwgdG8gc3ViZ2VuZXJhdG9yCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgIHlpZWxkIDQyCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMiIpCisgICAgICAgIGZvciB4IGluIGcxKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIDQyIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9yYWlzaW5nX2V4Y2VwdGlvbl9pbl9pbml0aWFsX25leHRfY2FsbChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgcmFpc2luZyBleGNlcHRpb24gaW4gaW5pdGlhbCBuZXh0KCkgY2FsbAorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzcGFuaXNoIGlucXVpc2l0aW9uIG9jY3VycmVkIikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgeCBpbiBnMSgpOgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeCwpKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sICJzcGFuaXNoIGlucXVpc2l0aW9uIG9jY3VycmVkIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9kZWxlZ2F0aW9uX29mX25leHRfY2FsbF90b19zdWJnZW5lcmF0b3Ioc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGRlbGVnYXRpb24gb2YgbmV4dCgpIGNhbGwgdG8gc3ViZ2VuZXJhdG9yCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICB5aWVsZCAiZzEgaGFtIgorICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICB5aWVsZCAiZzEgZWdncyIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgIHlpZWxkICJnMiBzcGFtIgorICAgICAgICAgICAgeWllbGQgImcyIG1vcmUgc3BhbSIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcyIikKKyAgICAgICAgZm9yIHggaW4gZzEoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeCwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJTdGFydGluZyBnMSIsCisgICAgICAgICAgICAiWWllbGRlZCBnMSBoYW0iLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgbW9yZSBzcGFtIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgZWdncyIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcxIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3JhaXNpbmdfZXhjZXB0aW9uX2luX2RlbGVnYXRlZF9uZXh0X2NhbGwoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHJhaXNpbmcgZXhjZXB0aW9uIGluIGRlbGVnYXRlZCBuZXh0KCkgY2FsbAorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzEgaGFtIgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBlZ2dzIgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzIiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBzcGFtIgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImhvdmVyY3JhZnQgaXMgZnVsbCBvZiBlZWxzIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgbW9yZSBzcGFtIgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMiIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciB4IGluIGcxKCk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgImhvdmVyY3JhZnQgaXMgZnVsbCBvZiBlZWxzIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgaGFtIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9kZWxlZ2F0aW9uX29mX3NlbmQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGRlbGVnYXRpb24gb2Ygc2VuZCgpCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICB4ID0geWllbGQgImcxIGhhbSIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzEgcmVjZWl2ZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgeCA9IHlpZWxkICJnMSBlZ2dzIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMSByZWNlaXZlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzIiKQorICAgICAgICAgICAgeCA9IHlpZWxkICJnMiBzcGFtIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMiByZWNlaXZlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgeCA9IHlpZWxkICJnMiBtb3JlIHNwYW0iCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyIHJlY2VpdmVkICVzIiAlICh4LCkpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMiIpCisgICAgICAgIGcgPSBnMSgpCisgICAgICAgIHkgPSBuZXh0KGcpCisgICAgICAgIHggPSAxCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICAgICAgeSA9IGcuc2VuZCh4KQorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeSwpKQorICAgICAgICAgICAgICAgIHggKz0gMQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgImcxIHJlY2VpdmVkIDEiLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgImcyIHJlY2VpdmVkIDIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgbW9yZSBzcGFtIiwKKyAgICAgICAgICAgICJnMiByZWNlaXZlZCAzIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgZWdncyIsCisgICAgICAgICAgICAiZzEgcmVjZWl2ZWQgNCIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcxIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2hhbmRsaW5nX2V4Y2VwdGlvbl93aGlsZV9kZWxlZ2F0aW5nX3NlbmQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGhhbmRsaW5nIGV4Y2VwdGlvbiB3aGlsZSBkZWxlZ2F0aW5nICdzZW5kJworICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgeCA9IHlpZWxkICJnMSBoYW0iCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxIHJlY2VpdmVkICVzIiAlICh4LCkpCisgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgIHggPSB5aWVsZCAiZzEgZWdncyIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzEgcmVjZWl2ZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgIHggPSB5aWVsZCAiZzIgc3BhbSIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzIgcmVjZWl2ZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImhvdmVyY3JhZnQgaXMgZnVsbCBvZiBlZWxzIikKKyAgICAgICAgICAgIHggPSB5aWVsZCAiZzIgbW9yZSBzcGFtIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMiByZWNlaXZlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZzEoKQorICAgICAgICAgICAgeSA9IG5leHQoZykKKyAgICAgICAgICAgIHggPSAxCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgICAgICAgICAgeSA9IGcuc2VuZCh4KQorICAgICAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHksKSkKKyAgICAgICAgICAgICAgICAgICAgeCArPSAxCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0b3BJdGVyYXRpb24iKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLHJ1bikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgImcxIHJlY2VpdmVkIDEiLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgImcyIHJlY2VpdmVkIDIiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdGluZ19jbG9zZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZGVsZWdhdGluZyAnY2xvc2UnCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBoYW0iCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICAgICAgeWllbGQgImcxIGVnZ3MiCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICAgICAgeWllbGQgImcyIHNwYW0iCisgICAgICAgICAgICAgICAgeWllbGQgImcyIG1vcmUgc3BhbSIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICBnID0gZzEoKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIHggPSBuZXh0KGcpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgZy5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGhhbSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9oYW5kaW5nX2V4Y2VwdGlvbl93aGlsZV9kZWxlZ2F0aW5nX2Nsb3NlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBoYW5kbGluZyBleGNlcHRpb24gd2hpbGUgZGVsZWdhdGluZyAnY2xvc2UnCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBoYW0iCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICAgICAgeWllbGQgImcxIGVnZ3MiCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICAgICAgeWllbGQgImcyIHNwYW0iCisgICAgICAgICAgICAgICAgeWllbGQgImcyIG1vcmUgc3BhbSIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm55YmJsZXMgaGF2ZSBleHBsb2RlZCB3aXRoIGRlbGlnaHQiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnID0gZzEoKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CisgICAgICAgICAgICAgICAgeCA9IG5leHQoZykKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIGcuY2xvc2UoKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sICJueWJibGVzIGhhdmUgZXhwbG9kZWQgd2l0aCBkZWxpZ2h0IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlLl9fY29udGV4dF9fLCBHZW5lcmF0b3JFeGl0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJzdWJnZW5lcmF0b3IgZmFpbGVkIHRvIHJhaXNlIFZhbHVlRXJyb3IiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJTdGFydGluZyBnMSIsCisgICAgICAgICAgICAiWWllbGRlZCBnMSBoYW0iLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMiIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcxIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2RlbGVnYXRpbmdfdGhyb3coc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGRlbGVnYXRpbmcgJ3Rocm93JworICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzEgaGFtIgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBlZ2dzIgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzIiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBzcGFtIgorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBtb3JlIHNwYW0iCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcyIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZyA9IGcxKCkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgICAgIHggPSBuZXh0KGcpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgICAgICBlID0gVmFsdWVFcnJvcigidG9tYXRvIGVqZWN0ZWQiKQorICAgICAgICAgICAgZy50aHJvdyhlKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sICJ0b21hdG8gZWplY3RlZCIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInN1YmdlbmVyYXRvciBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGhhbSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfdmFsdWVfYXR0cmlidXRlX29mX1N0b3BJdGVyYXRpb25fZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCAndmFsdWUnIGF0dHJpYnV0ZSBvZiBTdG9wSXRlcmF0aW9uIGV4Y2VwdGlvbgorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgcGV4KGUpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCIlczogJXMiICUgKGUuX19jbGFzc19fLl9fbmFtZV9fLCBlKSkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgidmFsdWUgPSAlcyIgJSAoZS52YWx1ZSwpKQorICAgICAgICBlID0gU3RvcEl0ZXJhdGlvbigpCisgICAgICAgIHBleChlKQorICAgICAgICBlID0gU3RvcEl0ZXJhdGlvbigic3BhbSIpCisgICAgICAgIHBleChlKQorICAgICAgICBlLnZhbHVlID0gImVnZ3MiCisgICAgICAgIHBleChlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJTdG9wSXRlcmF0aW9uOiAiLAorICAgICAgICAgICAgInZhbHVlID0gTm9uZSIsCisgICAgICAgICAgICAiU3RvcEl0ZXJhdGlvbjogc3BhbSIsCisgICAgICAgICAgICAidmFsdWUgPSBzcGFtIiwKKyAgICAgICAgICAgICJTdG9wSXRlcmF0aW9uOiBzcGFtIiwKKyAgICAgICAgICAgICJ2YWx1ZSA9IGVnZ3MiLAorICAgICAgICBdKQorCisKKyAgICBkZWYgdGVzdF9leGNlcHRpb25fdmFsdWVfY3Jhc2goc2VsZik6CisgICAgICAgICMgVGhlcmUgdXNlZCB0byBiZSBhIHJlZmNvdW50IGVycm9yIHdoZW4gdGhlIHJldHVybiB2YWx1ZQorICAgICAgICAjIHN0b3JlZCBpbiB0aGUgU3RvcEl0ZXJhdGlvbiBoYXMgYSByZWZjb3VudCBvZiAxLgorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHlpZWxkICJnMiIKKyAgICAgICAgICAgIHJldHVybiBbNDJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChnMSgpKSwgWyJnMiJdKQorCisKKyAgICBkZWYgdGVzdF9nZW5lcmF0b3JfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBnZW5lcmF0b3IgcmV0dXJuIHZhbHVlCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICB5aWVsZCAiZzEgaGFtIgorICAgICAgICAgICAgcmV0ID0geWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyIHJldHVybmVkICVzIiAlIChyZXQsKSkKKyAgICAgICAgICAgIHJldCA9IHlpZWxkIGZyb20gZzIoNDIpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyIHJldHVybmVkICVzIiAlIChyZXQsKSkKKyAgICAgICAgICAgIHlpZWxkICJnMSBlZ2dzIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIodiA9IE5vbmUpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICB5aWVsZCAiZzIgc3BhbSIKKyAgICAgICAgICAgIHlpZWxkICJnMiBtb3JlIHNwYW0iCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMiIpCisgICAgICAgICAgICBpZiB2OgorICAgICAgICAgICAgICAgIHJldHVybiB2CisgICAgICAgIGZvciB4IGluIGcxKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgaGFtIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIG1vcmUgc3BhbSIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJnMiByZXR1cm5lZCBOb25lIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIG1vcmUgc3BhbSIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJnMiByZXR1cm5lZCA0MiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMSBlZ2dzIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdGlvbl9vZl9uZXh0X3RvX25vbl9nZW5lcmF0b3Ioc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGRlbGVnYXRpb24gb2YgbmV4dCgpIHRvIG5vbi1nZW5lcmF0b3IKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gcmFuZ2UoMykKKyAgICAgICAgZm9yIHggaW4gZygpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIllpZWxkZWQgMCIsCisgICAgICAgICAgICAiWWllbGRlZCAxIiwKKyAgICAgICAgICAgICJZaWVsZGVkIDIiLAorICAgICAgICBdKQorCisKKyAgICBkZWYgdGVzdF9jb252ZXJzaW9uX29mX3NlbmROb25lX3RvX25leHQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGNvbnZlcnNpb24gb2Ygc2VuZChOb25lKSB0byBuZXh0KCkKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gcmFuZ2UoMykKKyAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgZm9yIHggaW4gcmFuZ2UoMyk6CisgICAgICAgICAgICB5ID0gZ2kuc2VuZChOb25lKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkOiAlcyIgJSAoeSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJZaWVsZGVkOiAwIiwKKyAgICAgICAgICAgICJZaWVsZGVkOiAxIiwKKyAgICAgICAgICAgICJZaWVsZGVkOiAyIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2RlbGVnYXRpb25fb2ZfY2xvc2VfdG9fbm9uX2dlbmVyYXRvcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZGVsZWdhdGlvbiBvZiBjbG9zZSgpIHRvIG5vbi1nZW5lcmF0b3IKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoInN0YXJ0aW5nIGciKQorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gcmFuZ2UoMykKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgc2hvdWxkIG5vdCBiZSBoZXJlIikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmaW5pc2hpbmcgZyIpCisgICAgICAgIGdpID0gZygpCisgICAgICAgIG5leHQoZ2kpCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgb3V0cHV0OgorICAgICAgICAgICAgZ2kuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAic3RhcnRpbmcgZyIsCisgICAgICAgICAgICAiZmluaXNoaW5nIGciLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdGluZ190aHJvd190b19ub25fZ2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBkZWxlZ2F0aW5nICd0aHJvdycgdG8gbm9uLWdlbmVyYXRvcgorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZyIpCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSByYW5nZSgxMCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGdpID0gZygpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSg1KToKKyAgICAgICAgICAgICAgICB4ID0gbmV4dChnaSkKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIGUgPSBWYWx1ZUVycm9yKCJ0b21hdG8gZWplY3RlZCIpCisgICAgICAgICAgICBnaS50aHJvdyhlKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sInRvbWF0byBlamVjdGVkIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZyIsCisgICAgICAgICAgICAiWWllbGRlZCAwIiwKKyAgICAgICAgICAgICJZaWVsZGVkIDEiLAorICAgICAgICAgICAgIllpZWxkZWQgMiIsCisgICAgICAgICAgICAiWWllbGRlZCAzIiwKKyAgICAgICAgICAgICJZaWVsZGVkIDQiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2F0dGVtcHRpbmdfdG9fc2VuZF90b19ub25fZ2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBhdHRlbXB0aW5nIHRvIHNlbmQgdG8gbm9uLWdlbmVyYXRvcgorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgic3RhcnRpbmcgZyIpCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSByYW5nZSgzKQorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyBzaG91bGQgbm90IGJlIGhlcmUiKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImZpbmlzaGluZyBnIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICBmb3IgeCBpbiByYW5nZSgzKToKKyAgICAgICAgICAgICAgICB5ID0gZ2kuc2VuZCg0MikKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlNob3VsZCBub3QgaGF2ZSB5aWVsZGVkOiAlcyIgJSAoeSwpKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInNlbmQiLCBlLmFyZ3NbMF0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIndhcyBhYmxlIHRvIHNlbmQgaW50byBub24tZ2VuZXJhdG9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAic3RhcnRpbmcgZyIsCisgICAgICAgICAgICAiZmluaXNoaW5nIGciLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfYnJva2VuX2dldGF0dHJfaGFuZGxpbmcoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHN1Yml0ZXJhdG9yIHdpdGggYSBicm9rZW4gZ2V0YXR0ciBpbXBsZW1lbnRhdGlvbgorICAgICAgICAiIiIKKyAgICAgICAgY2xhc3MgQnJva2VuOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRyKToKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgeWllbGQgZnJvbSBCcm9rZW4oKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChnaSksIDEpCisgICAgICAgICAgICBnaS5zZW5kKDEpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGdpKSwgMSkKKyAgICAgICAgICAgIGdpLnRocm93KEF0dHJpYnV0ZUVycm9yKQorCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgb3V0cHV0OgorICAgICAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChnaSksIDEpCisgICAgICAgICAgICBnaS5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1plcm9EaXZpc2lvbkVycm9yJywgb3V0cHV0LmdldHZhbHVlKCkpCisKKyAgICBkZWYgdGVzdF9leGNlcHRpb25faW5faW5pdGlhbF9uZXh0X2NhbGwoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGV4Y2VwdGlvbiBpbiBpbml0aWFsIG5leHQoKSBjYWxsCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMSBhYm91dCB0byB5aWVsZCBmcm9tIGcyIikKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMSBzaG91bGQgbm90IGJlIGhlcmUiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHlpZWxkIDEvMAorICAgICAgICBkZWYgcnVuKCk6CisgICAgICAgICAgICBnaSA9IGcxKCkKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLHJ1bikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiZzEgYWJvdXQgdG8geWllbGQgZnJvbSBnMiIKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2F0dGVtcHRlZF95aWVsZF9mcm9tX2xvb3Aoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGF0dGVtcHRlZCB5aWVsZC1mcm9tIGxvb3AKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxOiBzdGFydGluZyIpCisgICAgICAgICAgICB5aWVsZCAieTEiCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxOiBhYm91dCB0byB5aWVsZCBmcm9tIGcyIikKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMSBzaG91bGQgbm90IGJlIGhlcmUiKQorCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMjogc3RhcnRpbmciKQorICAgICAgICAgICAgeWllbGQgInkyIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMjogYWJvdXQgdG8geWllbGQgZnJvbSBnMSIpCisgICAgICAgICAgICB5aWVsZCBmcm9tIGdpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyIHNob3VsZCBub3QgYmUgaGVyZSIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGdpID0gZzEoKQorICAgICAgICAgICAgZm9yIHkgaW4gZ2k6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkOiAlcyIgJSAoeSwpKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sImdlbmVyYXRvciBhbHJlYWR5IGV4ZWN1dGluZyIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInN1YmdlbmVyYXRvciBkaWRuJ3QgcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgImcxOiBzdGFydGluZyIsCisgICAgICAgICAgICAiWWllbGRlZDogeTEiLAorICAgICAgICAgICAgImcxOiBhYm91dCB0byB5aWVsZCBmcm9tIGcyIiwKKyAgICAgICAgICAgICJnMjogc3RhcnRpbmciLAorICAgICAgICAgICAgIllpZWxkZWQ6IHkyIiwKKyAgICAgICAgICAgICJnMjogYWJvdXQgdG8geWllbGQgZnJvbSBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9yZXR1cm5pbmdfdmFsdWVfZnJvbV9kZWxlZ2F0ZWRfdGhyb3coc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHJldHVybmluZyB2YWx1ZSBmcm9tIGRlbGVnYXRlZCAndGhyb3cnCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBoYW0iCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICAgICAgeWllbGQgImcxIGVnZ3MiCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICAgICAgeWllbGQgImcyIHNwYW0iCisgICAgICAgICAgICAgICAgeWllbGQgImcyIG1vcmUgc3BhbSIKKyAgICAgICAgICAgIGV4Y2VwdCBMdW5jaEVycm9yOgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiQ2F1Z2h0IEx1bmNoRXJyb3IgaW4gZzIiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBsdW5jaCBzYXZlZCIKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgeWV0IG1vcmUgc3BhbSIKKyAgICAgICAgY2xhc3MgTHVuY2hFcnJvcihFeGNlcHRpb24pOgorICAgICAgICAgICAgcGFzcworICAgICAgICBnID0gZzEoKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIHggPSBuZXh0KGcpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgZSA9IEx1bmNoRXJyb3IoInRvbWF0byBlamVjdGVkIikKKyAgICAgICAgZy50aHJvdyhlKQorICAgICAgICBmb3IgeCBpbiBnOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGhhbSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCisgICAgICAgICAgICAiQ2F1Z2h0IEx1bmNoRXJyb3IgaW4gZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgeWV0IG1vcmUgc3BhbSIsCisgICAgICAgICAgICAiWWllbGRlZCBnMSBlZ2dzIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfbmV4dF9hbmRfcmV0dXJuX3dpdGhfdmFsdWUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IG5leHQgYW5kIHJldHVybiB3aXRoIHZhbHVlCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBmKHIpOgorICAgICAgICAgICAgZ2kgPSBnKHIpCisgICAgICAgICAgICBuZXh0KGdpKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZiByZXN1bWluZyBnIikKKyAgICAgICAgICAgICAgICBuZXh0KGdpKQorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZiBTSE9VTEQgTk9UIEJFIEhFUkUiKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImYgY2F1Z2h0ICVzIiAlIChyZXByKGUpLCkpCisgICAgICAgIGRlZiBnKHIpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnIHN0YXJ0aW5nIikKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgcmV0dXJuaW5nICVzIiAlIChyLCkpCisgICAgICAgICAgICByZXR1cm4gcgorICAgICAgICBmKE5vbmUpCisgICAgICAgIGYoNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgImcgc3RhcnRpbmciLAorICAgICAgICAgICAgImYgcmVzdW1pbmcgZyIsCisgICAgICAgICAgICAiZyByZXR1cm5pbmcgTm9uZSIsCisgICAgICAgICAgICAiZiBjYXVnaHQgU3RvcEl0ZXJhdGlvbigpIiwKKyAgICAgICAgICAgICJnIHN0YXJ0aW5nIiwKKyAgICAgICAgICAgICJmIHJlc3VtaW5nIGciLAorICAgICAgICAgICAgImcgcmV0dXJuaW5nIDQyIiwKKyAgICAgICAgICAgICJmIGNhdWdodCBTdG9wSXRlcmF0aW9uKDQyLCkiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3Rfc2VuZF9hbmRfcmV0dXJuX3dpdGhfdmFsdWUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHNlbmQgYW5kIHJldHVybiB3aXRoIHZhbHVlCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBmKHIpOgorICAgICAgICAgICAgZ2kgPSBnKHIpCisgICAgICAgICAgICBuZXh0KGdpKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZiBzZW5kaW5nIHNwYW0gdG8gZyIpCisgICAgICAgICAgICAgICAgZ2kuc2VuZCgic3BhbSIpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmIFNIT1VMRCBOT1QgQkUgSEVSRSIpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZiBjYXVnaHQgJXIiICUgKGUsKSkKKyAgICAgICAgZGVmIGcocik6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgc3RhcnRpbmciKQorICAgICAgICAgICAgeCA9IHlpZWxkCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgcmVjZWl2ZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyByZXR1cm5pbmcgJXMiICUgKHIsKSkKKyAgICAgICAgICAgIHJldHVybiByCisgICAgICAgIGYoTm9uZSkKKyAgICAgICAgZig0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiZyBzdGFydGluZyIsCisgICAgICAgICAgICAiZiBzZW5kaW5nIHNwYW0gdG8gZyIsCisgICAgICAgICAgICAiZyByZWNlaXZlZCBzcGFtIiwKKyAgICAgICAgICAgICJnIHJldHVybmluZyBOb25lIiwKKyAgICAgICAgICAgICJmIGNhdWdodCBTdG9wSXRlcmF0aW9uKCkiLAorICAgICAgICAgICAgImcgc3RhcnRpbmciLAorICAgICAgICAgICAgImYgc2VuZGluZyBzcGFtIHRvIGciLAorICAgICAgICAgICAgImcgcmVjZWl2ZWQgc3BhbSIsCisgICAgICAgICAgICAiZyByZXR1cm5pbmcgNDIiLAorICAgICAgICAgICAgImYgY2F1Z2h0IFN0b3BJdGVyYXRpb24oNDIsKSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9jYXRjaGluZ19leGNlcHRpb25fZnJvbV9zdWJnZW5fYW5kX3JldHVybmluZyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgY2F0Y2hpbmcgYW4gZXhjZXB0aW9uIHRocm93biBpbnRvIGEKKyAgICAgICAgc3ViZ2VuZXJhdG9yIGFuZCByZXR1cm5pbmcgYSB2YWx1ZQorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgaW5uZXIoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImlubmVyIGNhdWdodCBWYWx1ZUVycm9yIikKKyAgICAgICAgICAgIHJldHVybiAyCisKKyAgICAgICAgZGVmIG91dGVyKCk6CisgICAgICAgICAgICB2ID0geWllbGQgZnJvbSBpbm5lcigpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImlubmVyIHJldHVybmVkICVyIHRvIG91dGVyIiAlIHYpCisgICAgICAgICAgICB5aWVsZCB2CisgICAgICAgIGcgPSBvdXRlcigpCisgICAgICAgIHRyYWNlLmFwcGVuZChuZXh0KGcpKQorICAgICAgICB0cmFjZS5hcHBlbmQoZy50aHJvdyhWYWx1ZUVycm9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgImlubmVyIGNhdWdodCBWYWx1ZUVycm9yIiwKKyAgICAgICAgICAgICJpbm5lciByZXR1cm5lZCAyIHRvIG91dGVyIiwKKyAgICAgICAgICAgIDIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF90aHJvd2luZ19HZW5lcmF0b3JFeGl0X2ludG9fc3ViZ2VuX3RoYXRfcmV0dXJucyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhyb3dpbmcgR2VuZXJhdG9yRXhpdCBpbnRvIGEgc3ViZ2VuZXJhdG9yIHRoYXQKKyAgICAgICAgY2F0Y2hlcyBpdCBhbmQgcmV0dXJucyBub3JtYWxseS4KKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkVudGVyIGYiKQorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFeGl0IGYiKQorICAgICAgICAgICAgZXhjZXB0IEdlbmVyYXRvckV4aXQ6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkVudGVyIGciKQorICAgICAgICAgICAgeWllbGQgZnJvbSBmKCkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRXhpdCBnIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICBnaS50aHJvdyhHZW5lcmF0b3JFeGl0KQorICAgICAgICBleGNlcHQgR2VuZXJhdG9yRXhpdDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGZhaWxlZCB0byByYWlzZSBHZW5lcmF0b3JFeGl0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiRW50ZXIgZyIsCisgICAgICAgICAgICAiRW50ZXIgZiIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF90aHJvd2luZ19HZW5lcmF0b3JFeGl0X2ludG9fc3ViZ2VuZXJhdG9yX3RoYXRfeWllbGRzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aHJvd2luZyBHZW5lcmF0b3JFeGl0IGludG8gYSBzdWJnZW5lcmF0b3IgdGhhdAorICAgICAgICBjYXRjaGVzIGl0IGFuZCB5aWVsZHMuCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFbnRlciBmIikKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRXhpdCBmIikKKyAgICAgICAgICAgIGV4Y2VwdCBHZW5lcmF0b3JFeGl0OgorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkVudGVyIGciKQorICAgICAgICAgICAgeWllbGQgZnJvbSBmKCkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRXhpdCBnIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICBnaS50aHJvdyhHZW5lcmF0b3JFeGl0KQorICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgImdlbmVyYXRvciBpZ25vcmVkIEdlbmVyYXRvckV4aXQiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJzdWJnZW5lcmF0b3IgZmFpbGVkIHRvIHJhaXNlIEdlbmVyYXRvckV4aXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJFbnRlciBnIiwKKyAgICAgICAgICAgICJFbnRlciBmIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3Rocm93aW5nX0dlbmVyYXRvckV4aXRfaW50b19zdWJnZW5fdGhhdF9yYWlzZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRocm93aW5nIEdlbmVyYXRvckV4aXQgaW50byBhIHN1YmdlbmVyYXRvciB0aGF0CisgICAgICAgIGNhdGNoZXMgaXQgYW5kIHJhaXNlcyBhIGRpZmZlcmVudCBleGNlcHRpb24uCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFbnRlciBmIikKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRXhpdCBmIikKKyAgICAgICAgICAgIGV4Y2VwdCBHZW5lcmF0b3JFeGl0OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlZvcnBhbCBidW5ueSBlbmNvdW50ZXJlZCIpCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkVudGVyIGciKQorICAgICAgICAgICAgeWllbGQgZnJvbSBmKCkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRXhpdCBnIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICBnaS50aHJvdyhHZW5lcmF0b3JFeGl0KQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sICJWb3JwYWwgYnVubnkgZW5jb3VudGVyZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUuX19jb250ZXh0X18sIEdlbmVyYXRvckV4aXQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInN1YmdlbmVyYXRvciBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIkVudGVyIGciLAorICAgICAgICAgICAgIkVudGVyIGYiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfeWllbGRfZnJvbV9lbXB0eShzZWxmKToKKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgZygpKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdGluZ19nZW5lcmF0b3JzX2NsYWltX3RvX2JlX3J1bm5pbmcoc2VsZik6CisgICAgICAgICMgQ2hlY2sgd2l0aCBiYXNpYyBpdGVyYXRpb24KKyAgICAgICAgZGVmIG9uZSgpOgorICAgICAgICAgICAgeWllbGQgMAorICAgICAgICAgICAgeWllbGQgZnJvbSB0d28oKQorICAgICAgICAgICAgeWllbGQgMworICAgICAgICBkZWYgdHdvKCk6CisgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBnMQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgeWllbGQgMgorICAgICAgICBnMSA9IG9uZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChnMSksIFswLCAxLCAyLCAzXSkKKyAgICAgICAgIyBDaGVjayB3aXRoIHNlbmQKKyAgICAgICAgZzEgPSBvbmUoKQorICAgICAgICByZXMgPSBbbmV4dChnMSldCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChnMS5zZW5kKDQyKSkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbMCwgMSwgMiwgM10pCisgICAgICAgICMgQ2hlY2sgd2l0aCB0aHJvdworICAgICAgICBjbGFzcyBNeUVycihFeGNlcHRpb24pOgorICAgICAgICAgICAgcGFzcworICAgICAgICBkZWYgb25lKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMAorICAgICAgICAgICAgZXhjZXB0IE15RXJyOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHlpZWxkIGZyb20gdHdvKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAzCisgICAgICAgICAgICBleGNlcHQgTXlFcnI6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBkZWYgdHdvKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgZXhjZXB0IE15RXJyOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGcxCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgZXhjZXB0IE15RXJyOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZzEgPSBvbmUoKQorICAgICAgICByZXMgPSBbbmV4dChnMSldCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChnMS50aHJvdyhNeUVycikpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgcGFzcworICAgICAgICAjIENoZWNrIHdpdGggY2xvc2UKKyAgICAgICAgY2xhc3MgTXlJdChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDQyCisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZl8pOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnMS5naV9ydW5uaW5nKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5leHQsIGcxKQorICAgICAgICBkZWYgb25lKCk6CisgICAgICAgICAgICB5aWVsZCBmcm9tIE15SXQoKQorICAgICAgICBnMSA9IG9uZSgpCisgICAgICAgIG5leHQoZzEpCisgICAgICAgIGcxLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2RlbGVnYXRvcl9pc192aXNpYmxlX3RvX2RlYnVnZ2VyKHNlbGYpOgorICAgICAgICBkZWYgY2FsbF9zdGFjaygpOgorICAgICAgICAgICAgcmV0dXJuIFtmWzNdIGZvciBmIGluIGluc3BlY3Quc3RhY2soKV0KKworICAgICAgICBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZCBjYWxsX3N0YWNrKCkKKyAgICAgICAgICAgIHlpZWxkIGNhbGxfc3RhY2soKQorICAgICAgICAgICAgeWllbGQgY2FsbF9zdGFjaygpCisKKyAgICAgICAgZGVmIHNwYW0oZyk6CisgICAgICAgICAgICB5aWVsZCBmcm9tIGcKKworICAgICAgICBkZWYgZWdncyhnKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZworCisgICAgICAgIGZvciBzdGFjayBpbiBzcGFtKGdlbigpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnc3BhbScgaW4gc3RhY2spCisKKyAgICAgICAgZm9yIHN0YWNrIGluIHNwYW0oZWdncyhnZW4oKSkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdzcGFtJyBpbiBzdGFjayBhbmQgJ2VnZ3MnIGluIHN0YWNrKQorCisgICAgZGVmIHRlc3RfY3VzdG9tX2l0ZXJhdG9yX3JldHVybihzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzE1NTY4CisgICAgICAgIGNsYXNzIE15SXRlcjoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24oNDIpCisgICAgICAgIGRlZiBnZW4oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIHJldAorICAgICAgICAgICAgcmV0ID0geWllbGQgZnJvbSBNeUl0ZXIoKQorICAgICAgICByZXQgPSBOb25lCisgICAgICAgIGxpc3QoZ2VuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0LCA0MikKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisgICAgdGVzdF9jbGFzc2VzID0gW1Rlc3RQRVAzODBPcGVyYXRpb25dCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BpY2tsZS5weSBiL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CmluZGV4IDlkYTJjYWUuLmY1MmQ0YmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IHBpY2tsZQogaW1wb3J0IGlvCitpbXBvcnQgY29sbGVjdGlvbnMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKQEAgLTcsNiArOCw3IEBACiBmcm9tIHRlc3QucGlja2xldGVzdGVyIGltcG9ydCBBYnN0cmFjdFBpY2tsZU1vZHVsZVRlc3RzCiBmcm9tIHRlc3QucGlja2xldGVzdGVyIGltcG9ydCBBYnN0cmFjdFBlcnNpc3RlbnRQaWNrbGVyVGVzdHMKIGZyb20gdGVzdC5waWNrbGV0ZXN0ZXIgaW1wb3J0IEFic3RyYWN0UGlja2xlclVucGlja2xlck9iamVjdFRlc3RzCitmcm9tIHRlc3QucGlja2xldGVzdGVyIGltcG9ydCBBYnN0cmFjdERpc3BhdGNoVGFibGVUZXN0cwogZnJvbSB0ZXN0LnBpY2tsZXRlc3RlciBpbXBvcnQgQmlnbWVtUGlja2xlVGVzdHMKIAogdHJ5OgpAQCAtODAsNiArODIsMTggQEAKICAgICB1bnBpY2tsZXJfY2xhc3MgPSBwaWNrbGUuX1VucGlja2xlcgogCiAKK2NsYXNzIFB5RGlzcGF0Y2hUYWJsZVRlc3RzKEFic3RyYWN0RGlzcGF0Y2hUYWJsZVRlc3RzKToKKyAgICBwaWNrbGVyX2NsYXNzID0gcGlja2xlLl9QaWNrbGVyCisgICAgZGVmIGdldF9kaXNwYXRjaF90YWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHBpY2tsZS5kaXNwYXRjaF90YWJsZS5jb3B5KCkKKworCitjbGFzcyBQeUNoYWluRGlzcGF0Y2hUYWJsZVRlc3RzKEFic3RyYWN0RGlzcGF0Y2hUYWJsZVRlc3RzKToKKyAgICBwaWNrbGVyX2NsYXNzID0gcGlja2xlLl9QaWNrbGVyCisgICAgZGVmIGdldF9kaXNwYXRjaF90YWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLkNoYWluTWFwKHt9LCBwaWNrbGUuZGlzcGF0Y2hfdGFibGUpCisKKwogaWYgaGFzX2NfaW1wbGVtZW50YXRpb246CiAgICAgY2xhc3MgQ1BpY2tsZXJUZXN0cyhQeVBpY2tsZXJUZXN0cyk6CiAgICAgICAgIHBpY2tsZXIgPSBfcGlja2xlLlBpY2tsZXIKQEAgLTEwMSwxNCArMTE1LDI2IEBACiAgICAgICAgIHBpY2tsZXJfY2xhc3MgPSBfcGlja2xlLlBpY2tsZXIKICAgICAgICAgdW5waWNrbGVyX2NsYXNzID0gX3BpY2tsZS5VbnBpY2tsZXIKIAorICAgIGNsYXNzIENEaXNwYXRjaFRhYmxlVGVzdHMoQWJzdHJhY3REaXNwYXRjaFRhYmxlVGVzdHMpOgorICAgICAgICBwaWNrbGVyX2NsYXNzID0gcGlja2xlLlBpY2tsZXIKKyAgICAgICAgZGVmIGdldF9kaXNwYXRjaF90YWJsZShzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBwaWNrbGUuZGlzcGF0Y2hfdGFibGUuY29weSgpCisKKyAgICBjbGFzcyBDQ2hhaW5EaXNwYXRjaFRhYmxlVGVzdHMoQWJzdHJhY3REaXNwYXRjaFRhYmxlVGVzdHMpOgorICAgICAgICBwaWNrbGVyX2NsYXNzID0gcGlja2xlLlBpY2tsZXIKKyAgICAgICAgZGVmIGdldF9kaXNwYXRjaF90YWJsZShzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9ucy5DaGFpbk1hcCh7fSwgcGlja2xlLmRpc3BhdGNoX3RhYmxlKQorCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0cyA9IFtQaWNrbGVUZXN0cywgUHlQaWNrbGVyVGVzdHMsIFB5UGVyc1BpY2tsZXJUZXN0c10KKyAgICB0ZXN0cyA9IFtQaWNrbGVUZXN0cywgUHlQaWNrbGVyVGVzdHMsIFB5UGVyc1BpY2tsZXJUZXN0cywKKyAgICAgICAgICAgICBQeURpc3BhdGNoVGFibGVUZXN0cywgUHlDaGFpbkRpc3BhdGNoVGFibGVUZXN0c10KICAgICBpZiBoYXNfY19pbXBsZW1lbnRhdGlvbjoKICAgICAgICAgdGVzdHMuZXh0ZW5kKFtDUGlja2xlclRlc3RzLCBDUGVyc1BpY2tsZXJUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICBDRHVtcFBpY2tsZV9Mb2FkUGlja2xlLCBEdW1wUGlja2xlX0NMb2FkUGlja2xlLAogICAgICAgICAgICAgICAgICAgICAgIFB5UGlja2xlclVucGlja2xlck9iamVjdFRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgIENQaWNrbGVyVW5waWNrbGVyT2JqZWN0VGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgQ0Rpc3BhdGNoVGFibGVUZXN0cywgQ0NoYWluRGlzcGF0Y2hUYWJsZVRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgIEluTWVtb3J5UGlja2xlVGVzdHNdKQogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0cykKICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHBpY2tsZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGlwZXMucHkgYi9MaWIvdGVzdC90ZXN0X3BpcGVzLnB5CmluZGV4IGQ1Yjg4NmYuLjZhN2I0NWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGlwZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9waXBlcy5weQpAQCAtNzksMjEgKzc5LDYgQEAKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTikgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGQpCiAKLSAgICBkZWYgdGVzdFF1b3Rpbmcoc2VsZik6Ci0gICAgICAgIHNhZmV1bnF1b3RlZCA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICdAJV8tKz06LC4vJwotICAgICAgICB1bmljb2RlX3NhbXBsZSA9ICdceGU5XHhlMFx4ZGYnICAjIGUgKyBhY3V0ZSBhY2NlbnQsIGEgKyBncmF2ZSwgc2hhcnAgcwotICAgICAgICB1bnNhZmUgPSAnImAkXFwhJyArIHVuaWNvZGVfc2FtcGxlCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwaXBlcy5xdW90ZSgnJyksICInJyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGlwZXMucXVvdGUoc2FmZXVucXVvdGVkKSwgc2FmZXVucXVvdGVkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBpcGVzLnF1b3RlKCd0ZXN0IGZpbGUgbmFtZScpLCAiJ3Rlc3QgZmlsZSBuYW1lJyIpCi0gICAgICAgIGZvciB1IGluIHVuc2FmZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGlwZXMucXVvdGUoJ3Rlc3Qlc25hbWUnICUgdSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3Qlc25hbWUnIiAlIHUpCi0gICAgICAgIGZvciB1IGluIHVuc2FmZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGlwZXMucXVvdGUoInRlc3QlcyduYW1lJyIgJSB1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIid0ZXN0JXMnXCInXCInbmFtZSdcIidcIicnIiAlIHUpCi0KICAgICBkZWYgdGVzdFJlcHIoc2VsZik6CiAgICAgICAgIHQgPSBwaXBlcy5UZW1wbGF0ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih0KSwgIjxUZW1wbGF0ZSBpbnN0YW5jZSwgc3RlcHM9W10+IikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGtnLnB5IGIvTGliL3Rlc3QvdGVzdF9wa2cucHkKaW5kZXggYTRkZGIxNS4uMzU1ZWZlNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wa2cucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wa2cucHkKQEAgLTIzLDYgKzIzLDggQEAKIGRlZiBmaXhkaXIobHN0KToKICAgICBpZiAiX19idWlsdGluc19fIiBpbiBsc3Q6CiAgICAgICAgIGxzdC5yZW1vdmUoIl9fYnVpbHRpbnNfXyIpCisgICAgaWYgIl9faW5pdGlhbGl6aW5nX18iIGluIGxzdDoKKyAgICAgICAgbHN0LnJlbW92ZSgiX19pbml0aWFsaXppbmdfXyIpCiAgICAgcmV0dXJuIGxzdAogCiAKQEAgLTE5NiwxNCArMTk4LDE1IEBACiAKICAgICAgICAgaW1wb3J0IHQ1CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZml4ZGlyKGRpcih0NSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbmFtZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJywgJ19fcGF0aF9fJywgJ2ZvbycsICdzdHJpbmcnLCAndDUnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX2xvYWRlcl9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywgJ19fcGF0aF9fJywgJ2ZvbycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJpbmcnLCAndDUnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXhkaXIoZGlyKHQ1LmZvbykpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbmFtZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJywgJ3N0cmluZyddKQorICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbG9hZGVyX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnc3RyaW5nJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZml4ZGlyKGRpcih0NS5zdHJpbmcpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX25hbWVfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXycsICdzcGFtJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19sb2FkZXJfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdzcGFtJ10pCiAKICAgICBkZWYgdGVzdF82KHNlbGYpOgogICAgICAgICBoaWVyID0gWwpAQCAtMjE5LDE0ICsyMjIsMTQgQEAKICAgICAgICAgaW1wb3J0IHQ2CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZml4ZGlyKGRpcih0NikpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19hbGxfXycsICdfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbG9hZGVyX18nLCAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nXSkKICAgICAgICAgcyA9ICIiIgogICAgICAgICAgICAgaW1wb3J0IHQ2CiAgICAgICAgICAgICBmcm9tIHQ2IGltcG9ydCAqCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpeGRpcihkaXIodDYpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydfX2FsbF9fJywgJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VnZ3MnLCAnaGFtJywgJ3NwYW0nXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX2xvYWRlcl9fJywgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX3BhdGhfXycsICdlZ2dzJywgJ2hhbScsICdzcGFtJ10pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcigpLCBbJ2VnZ3MnLCAnaGFtJywgJ3NlbGYnLCAnc3BhbScsICd0NiddKQogICAgICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYucnVuX2NvZGUocykKQEAgLTI1MiwxOSArMjU1LDE5IEBACiAgICAgICAgIHQ3LCBzdWIsIHN1YnN1YiA9IE5vbmUsIE5vbmUsIE5vbmUKICAgICAgICAgaW1wb3J0IHQ3IGFzIHRhcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpeGRpcihkaXIodGFzKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19uYW1lX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX2xvYWRlcl9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywgJ19fcGF0aF9fJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodDcpCiAgICAgICAgIGZyb20gdDcgaW1wb3J0IHN1YiBhcyBzdWJwYXIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXhkaXIoZGlyKHN1YnBhcikpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbmFtZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJywgJ19fcGF0aF9fJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19sb2FkZXJfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXyddKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHQ3KQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN1YikKICAgICAgICAgZnJvbSB0Ny5zdWIgaW1wb3J0IHN1YnN1YiBhcyBzdWJzdWJzdWIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXhkaXIoZGlyKHN1YnN1YnN1YikpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbmFtZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nLCAnc3BhbSddKQorICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbG9hZGVyX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nLCAnc3BhbSddKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHQ3KQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN1YikKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdWJzdWIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BrZ2ltcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfcGtnaW1wb3J0LnB5CmluZGV4IGMzN2U5MzYuLmE4NDI2YjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGtnaW1wb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGtnaW1wb3J0LnB5CkBAIC03LDcgKzcsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gaW1wIGltcG9ydCBjYWNoZV9mcm9tX3NvdXJjZQotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgY3JlYXRlX2VtcHR5X2ZpbGUKIAogY2xhc3MgVGVzdEltcG9ydCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTI5LDcgKzI5LDcgQEAKICAgICAgICAgc2VsZi5wYWNrYWdlX2RpciA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RfZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGFja2FnZV9uYW1lKQogICAgICAgICBvcy5ta2RpcihzZWxmLnBhY2thZ2VfZGlyKQotICAgICAgICBvcGVuKG9zLnBhdGguam9pbihzZWxmLnBhY2thZ2VfZGlyLCAnX19pbml0X18ucHknKSwgJ3cnKS5jbG9zZSgpCisgICAgICAgIGNyZWF0ZV9lbXB0eV9maWxlKG9zLnBhdGguam9pbihzZWxmLnBhY2thZ2VfZGlyLCAnX19pbml0X18ucHknKSkKICAgICAgICAgc2VsZi5tb2R1bGVfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnBhY2thZ2VfZGlyLCAnZm9vLnB5JykKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weQppbmRleCAzYjcyZjA2Li44OGUyZDMzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5CkBAIC0xLDQgKzEsNCBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgdW5sb2FkCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCB1bmxvYWQsIGNoZWNrX3dhcm5pbmdzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCBpbXAKQEAgLTksNyArOSwxMSBAQAogaW1wb3J0IHNodXRpbAogaW1wb3J0IHppcGZpbGUKIAotCisjIE5vdGU6IHBrZ3V0aWwud2Fsa19wYWNrYWdlcyBpcyBjdXJyZW50bHkgdGVzdGVkIGluIHRlc3RfcnVucHkuIFRoaXMgaXMKKyMgYSBoYWNrIHRvIGdldCBhIG1ham9yIGlzc3VlIHJlc29sdmVkIGZvciAzLjNiMi4gTG9uZ2VyIHRlcm0sIGl0IHNob3VsZAorIyBiZSBtb3ZlZCBiYWNrIGhlcmUsIHBlcmhhcHMgYnkgZmFjdG9yaW5nIG91dCB0aGUgaGVscGVyIGNvZGUgZm9yCisjIGNyZWF0aW5nIGludGVyZXN0aW5nIHBhY2thZ2UgbGF5b3V0cyB0byBhIHNlcGFyYXRlIG1vZHVsZS4KKyMgSXNzdWUgIzE1MzQ4IGRlY2xhcmVzIHRoaXMgaXMgaW5kZWVkIGEgZG9kZ3kgaGFjayA7KQogCiBjbGFzcyBQa2d1dGlsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xMzgsMTAgKzE0MiwxMSBAQAogICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2ZvbyddCiAKIAorIyBUaGVzZSB0ZXN0cywgZXNwZWNpYWxseSB0aGUgc2V0dXAgYW5kIGNsZWFudXAsIGFyZSBoaWRlb3VzLiBUaGV5CisjIG5lZWQgdG8gYmUgY2xlYW5lZCB1cCBvbmNlIGlzc3VlIDE0NzE1IGlzIGFkZHJlc3NlZC4KIGNsYXNzIEV4dGVuZFBhdGhUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIGNyZWF0ZV9pbml0KHNlbGYsIHBrZ25hbWUpOgogICAgICAgICBkaXJuYW1lID0gdGVtcGZpbGUubWtkdGVtcCgpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaHV0aWwucm10cmVlLCBkaXJuYW1lKQogICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgZGlybmFtZSkKIAogICAgICAgICBwa2dkaXIgPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgcGtnbmFtZSkKQEAgLTE1NiwyMiArMTYxLDEyIEBACiAgICAgICAgIHdpdGggb3Blbihtb2R1bGVfbmFtZSwgJ3cnKSBhcyBmbDoKICAgICAgICAgICAgIHByaW50KCd2YWx1ZT17fScuZm9ybWF0KHZhbHVlKSwgZmlsZT1mbCkKIAotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgIyBDcmVhdGUgMiBkaXJlY3RvcmllcyBvbiBzeXMucGF0aAotICAgICAgICBzZWxmLnBrZ25hbWUgPSAnZm9vJwotICAgICAgICBzZWxmLmRpcm5hbWVfMCA9IHNlbGYuY3JlYXRlX2luaXQoc2VsZi5wa2duYW1lKQotICAgICAgICBzZWxmLmRpcm5hbWVfMSA9IHNlbGYuY3JlYXRlX2luaXQoc2VsZi5wa2duYW1lKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBkZWwgc3lzLnBhdGhbMF0KLSAgICAgICAgZGVsIHN5cy5wYXRoWzBdCi0gICAgICAgIGRlbCBzeXMubW9kdWxlc1snZm9vJ10KLSAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28uYmFyJ10KLSAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28uYmF6J10KLQogICAgIGRlZiB0ZXN0X3NpbXBsZShzZWxmKToKLSAgICAgICAgc2VsZi5jcmVhdGVfc3VibW9kdWxlKHNlbGYuZGlybmFtZV8wLCBzZWxmLnBrZ25hbWUsICdiYXInLCAwKQotICAgICAgICBzZWxmLmNyZWF0ZV9zdWJtb2R1bGUoc2VsZi5kaXJuYW1lXzEsIHNlbGYucGtnbmFtZSwgJ2JheicsIDEpCisgICAgICAgIHBrZ25hbWUgPSAnZm9vJworICAgICAgICBkaXJuYW1lXzAgPSBzZWxmLmNyZWF0ZV9pbml0KHBrZ25hbWUpCisgICAgICAgIGRpcm5hbWVfMSA9IHNlbGYuY3JlYXRlX2luaXQocGtnbmFtZSkKKyAgICAgICAgc2VsZi5jcmVhdGVfc3VibW9kdWxlKGRpcm5hbWVfMCwgcGtnbmFtZSwgJ2JhcicsIDApCisgICAgICAgIHNlbGYuY3JlYXRlX3N1Ym1vZHVsZShkaXJuYW1lXzEsIHBrZ25hbWUsICdiYXonLCAxKQogICAgICAgICBpbXBvcnQgZm9vLmJhcgogICAgICAgICBpbXBvcnQgZm9vLmJhegogICAgICAgICAjIEVuc3VyZSB3ZSByZWFkIHRoZSBleHBlY3RlZCB2YWx1ZXMKQEAgLTE4MCw4ICsxNzUsNDUgQEAKIAogICAgICAgICAjIEVuc3VyZSB0aGUgcGF0aCBpcyBzZXQgdXAgY29ycmVjdGx5CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGZvby5fX3BhdGhfXyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkKFtvcy5wYXRoLmpvaW4oc2VsZi5kaXJuYW1lXzAsIHNlbGYucGtnbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5kaXJuYW1lXzEsIHNlbGYucGtnbmFtZSldKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoW29zLnBhdGguam9pbihkaXJuYW1lXzAsIHBrZ25hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGRpcm5hbWVfMSwgcGtnbmFtZSldKSkKKworICAgICAgICAjIENsZWFudXAKKyAgICAgICAgc2h1dGlsLnJtdHJlZShkaXJuYW1lXzApCisgICAgICAgIHNodXRpbC5ybXRyZWUoZGlybmFtZV8xKQorICAgICAgICBkZWwgc3lzLnBhdGhbMF0KKyAgICAgICAgZGVsIHN5cy5wYXRoWzBdCisgICAgICAgIGRlbCBzeXMubW9kdWxlc1snZm9vJ10KKyAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28uYmFyJ10KKyAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28uYmF6J10KKworICAgIGRlZiB0ZXN0X21peGVkX25hbWVzcGFjZShzZWxmKToKKyAgICAgICAgcGtnbmFtZSA9ICdmb28nCisgICAgICAgIGRpcm5hbWVfMCA9IHNlbGYuY3JlYXRlX2luaXQocGtnbmFtZSkKKyAgICAgICAgZGlybmFtZV8xID0gc2VsZi5jcmVhdGVfaW5pdChwa2duYW1lKQorICAgICAgICBzZWxmLmNyZWF0ZV9zdWJtb2R1bGUoZGlybmFtZV8wLCBwa2duYW1lLCAnYmFyJywgMCkKKyAgICAgICAgIyBUdXJuIHRoaXMgaW50byBhIFBFUCA0MjAgbmFtZXNwYWNlIHBhY2thZ2UKKyAgICAgICAgb3MudW5saW5rKG9zLnBhdGguam9pbihkaXJuYW1lXzAsIHBrZ25hbWUsICdfX2luaXRfXy5weScpKQorICAgICAgICBzZWxmLmNyZWF0ZV9zdWJtb2R1bGUoZGlybmFtZV8xLCBwa2duYW1lLCAnYmF6JywgMSkKKyAgICAgICAgaW1wb3J0IGZvby5iYXIKKyAgICAgICAgaW1wb3J0IGZvby5iYXoKKyAgICAgICAgIyBFbnN1cmUgd2UgcmVhZCB0aGUgZXhwZWN0ZWQgdmFsdWVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLmJhci52YWx1ZSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uYmF6LnZhbHVlLCAxKQorCisgICAgICAgICMgRW5zdXJlIHRoZSBwYXRoIGlzIHNldCB1cCBjb3JyZWN0bHkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoZm9vLl9fcGF0aF9fKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoW29zLnBhdGguam9pbihkaXJuYW1lXzAsIHBrZ25hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGRpcm5hbWVfMSwgcGtnbmFtZSldKSkKKworICAgICAgICAjIENsZWFudXAKKyAgICAgICAgc2h1dGlsLnJtdHJlZShkaXJuYW1lXzApCisgICAgICAgIHNodXRpbC5ybXRyZWUoZGlybmFtZV8xKQorICAgICAgICBkZWwgc3lzLnBhdGhbMF0KKyAgICAgICAgZGVsIHN5cy5wYXRoWzBdCisgICAgICAgIGRlbCBzeXMubW9kdWxlc1snZm9vJ10KKyAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28uYmFyJ10KKyAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28uYmF6J10KIAogICAgICMgWFhYOiB0ZXN0IC5wa2cgZmlsZXMKIApAQCAtMjI3LDEyICsyNTksNTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCAyKQogCiAKK2NsYXNzIEltcG9ydGxpYk1pZ3JhdGlvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIFdpdGggZnVsbCBQRVAgMzAyIHN1cHBvcnQgaW4gdGhlIHN0YW5kYXJkIGltcG9ydCBtYWNoaW5lcnksIHRoZQorICAgICMgUEVQIDMwMiBlbXVsYXRpb24gaW4gdGhpcyBtb2R1bGUgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcKKyAgICAjIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGltcG9ydGxpYiBwcm9wZXIKKworICAgIGRlZiBjaGVja19kZXByZWNhdGVkKHNlbGYpOgorICAgICAgICByZXR1cm4gY2hlY2tfd2FybmluZ3MoCisgICAgICAgICAgICAoIlRoaXMgZW11bGF0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSAnaW1wb3J0bGliJyBpbnN0ZWFkIiwKKyAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpKQorCisgICAgZGVmIHRlc3RfaW1wb3J0ZXJfZGVwcmVjYXRlZChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmNoZWNrX2RlcHJlY2F0ZWQoKToKKyAgICAgICAgICAgIHggPSBwa2d1dGlsLkltcEltcG9ydGVyKCIiKQorCisgICAgZGVmIHRlc3RfbG9hZGVyX2RlcHJlY2F0ZWQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5jaGVja19kZXByZWNhdGVkKCk6CisgICAgICAgICAgICB4ID0gcGtndXRpbC5JbXBMb2FkZXIoIiIsICIiLCAiIiwgIiIpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9hZGVyX2F2b2lkc19lbXVsYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKSBhcyB3OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocGtndXRpbC5nZXRfbG9hZGVyKCJzeXMiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHBrZ3V0aWwuZ2V0X2xvYWRlcigib3MiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHBrZ3V0aWwuZ2V0X2xvYWRlcigidGVzdC5zdXBwb3J0IikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3Lndhcm5pbmdzKSwgMCkKKworICAgIGRlZiB0ZXN0X2dldF9pbXBvcnRlcl9hdm9pZHNfZW11bGF0aW9uKHNlbGYpOgorICAgICAgICAjIFdlIHVzZSBhbiBpbGxlZ2FsIHBhdGggc28gKm5vbmUqIG9mIHRoZSBwYXRoIGhvb2tzIHNob3VsZCBmaXJlCisgICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKSBhcyB3OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGtndXRpbC5nZXRfaW1wb3J0ZXIoIio/PyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ody53YXJuaW5ncyksIDApCisKKyAgICBkZWYgdGVzdF9pdGVyX2ltcG9ydGVyc19hdm9pZHNfZW11bGF0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIGNoZWNrX3dhcm5pbmdzKCkgYXMgdzoKKyAgICAgICAgICAgIGZvciBpbXBvcnRlciBpbiBwa2d1dGlsLml0ZXJfaW1wb3J0ZXJzKCk6IHBhc3MKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcud2FybmluZ3MpLCAwKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoUGtndXRpbFRlc3RzLCBQa2d1dGlsUEVQMzAyVGVzdHMsIEV4dGVuZFBhdGhUZXN0cywKLSAgICAgICAgICAgICAgICAgTmVzdGVkTmFtZXNwYWNlUGFja2FnZVRlc3QpCisgICAgICAgICAgICAgICAgIE5lc3RlZE5hbWVzcGFjZVBhY2thZ2VUZXN0LCBJbXBvcnRsaWJNaWdyYXRpb25UZXN0cykKICAgICAjIHRoaXMgaXMgbmVjZXNzYXJ5IGlmIHRlc3QgaXMgcnVuIHJlcGVhdGVkIChsaWtlIHdoZW4gZmluZGluZyBsZWFrcykKICAgICBpbXBvcnQgemlwaW1wb3J0CisgICAgaW1wb3J0IGltcG9ydGxpYgogICAgIHppcGltcG9ydC5femlwX2RpcmVjdG9yeV9jYWNoZS5jbGVhcigpCisgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5IGIvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weQppbmRleCA4NzUxYWE4Li42YWJmNDQzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkKQEAgLTEsOCArMSw5IEBACi1pbXBvcnQgc3lzCiBpbXBvcnQgb3MKLWltcG9ydCB1bml0dGVzdAogaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKQEAgLTU2LDEzICs1NywxMSBAQAogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnNhdmVfdmVyc2lvbiA9IHN5cy52ZXJzaW9uCi0gICAgICAgIHNlbGYuc2F2ZV9zdWJ2ZXJzaW9uID0gc3lzLnN1YnZlcnNpb24KICAgICAgICAgc2VsZi5zYXZlX21lcmN1cmlhbCA9IHN5cy5fbWVyY3VyaWFsCiAgICAgICAgIHNlbGYuc2F2ZV9wbGF0Zm9ybSA9IHN5cy5wbGF0Zm9ybQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzeXMudmVyc2lvbiA9IHNlbGYuc2F2ZV92ZXJzaW9uCi0gICAgICAgIHN5cy5zdWJ2ZXJzaW9uID0gc2VsZi5zYXZlX3N1YnZlcnNpb24KICAgICAgICAgc3lzLl9tZXJjdXJpYWwgPSBzZWxmLnNhdmVfbWVyY3VyaWFsCiAgICAgICAgIHN5cy5wbGF0Zm9ybSA9IHNlbGYuc2F2ZV9wbGF0Zm9ybQogCkBAIC03Nyw3ICs3Niw3IEBACiAgICAgICAgICAgICAgKCdJcm9uUHl0aG9uJywgJzEuMC4wJywgJycsICcnLCAnJywgJycsICcuTkVUIDIuMC41MDcyNy40MicpKSwKICAgICAgICAgICAgICk6CiAgICAgICAgICAgICAjIGJyYW5jaCBhbmQgcmV2aXNpb24gYXJlIG5vdCAicGFyc2VkIiwgYnV0IGZldGNoZWQKLSAgICAgICAgICAgICMgZnJvbSBzeXMuc3VidmVyc2lvbi4gIElnbm9yZSB0aGVtCisgICAgICAgICAgICAjIGZyb20gc3lzLl9tZXJjdXJpYWwuICBJZ25vcmUgdGhlbQogICAgICAgICAgICAgKG5hbWUsIHZlcnNpb24sIGJyYW5jaCwgcmV2aXNpb24sIGJ1aWxkbm8sIGJ1aWxkZGF0ZSwgY29tcGlsZXIpIFwKICAgICAgICAgICAgICAgICAgICA9IHBsYXRmb3JtLl9zeXNfdmVyc2lvbihpbnB1dCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCkBAIC0xMTMsOCArMTEyLDYgQEAKICAgICAgICAgICAgIGlmIHN1YnZlcnNpb24gaXMgTm9uZToKICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHN5cywgIl9tZXJjdXJpYWwiKToKICAgICAgICAgICAgICAgICAgICAgZGVsIHN5cy5fbWVyY3VyaWFsCi0gICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzeXMsICJzdWJ2ZXJzaW9uIik6Ci0gICAgICAgICAgICAgICAgICAgIGRlbCBzeXMuc3VidmVyc2lvbgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzeXMuX21lcmN1cmlhbCA9IHN1YnZlcnNpb24KICAgICAgICAgICAgIGlmIHN5c19wbGF0Zm9ybSBpcyBub3QgTm9uZToKQEAgLTEzNiw2ICsxMzMsMTIgQEAKICAgICBkZWYgdGVzdF91bmFtZShzZWxmKToKICAgICAgICAgcmVzID0gcGxhdGZvcm0udW5hbWUoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KHJlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzWzBdLCByZXMuc3lzdGVtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc1sxXSwgcmVzLm5vZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzWzJdLCByZXMucmVsZWFzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNbM10sIHJlcy52ZXJzaW9uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc1s0XSwgcmVzLm1hY2hpbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzWzVdLCByZXMucHJvY2Vzc29yKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpLCAid2luZG93cyBvbmx5IHRlc3QiKQogICAgIGRlZiB0ZXN0X3VuYW1lX3dpbjMyX0FSQ0hJVEVXNjQzMihzZWxmKToKQEAgLTE2OSw3ICsxNzIsNyBAQAogICAgIGRlZiB0ZXN0X21hY192ZXIoc2VsZik6CiAgICAgICAgIHJlcyA9IHBsYXRmb3JtLm1hY192ZXIoKQogCi0gICAgICAgIGlmIHBsYXRmb3JtLnVuYW1lKClbMF0gPT0gJ0Rhcndpbic6CisgICAgICAgIGlmIHBsYXRmb3JtLnVuYW1lKCkuc3lzdGVtID09ICdEYXJ3aW4nOgogICAgICAgICAgICAgIyBXZSdyZSBvbiBhIE1hY09TWCBzeXN0ZW0sIGNoZWNrIHRoYXQKICAgICAgICAgICAgICMgdGhlIHJpZ2h0IHZlcnNpb24gaW5mb3JtYXRpb24gaXMgcmV0dXJuZWQKICAgICAgICAgICAgIGZkID0gb3MucG9wZW4oJ3N3X3ZlcnMnLCAncicpCkBAIC0yNDcsNiArMjUwLDM4IEBACiAgICAgICAgICAgICApOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbGF0Zm9ybS5fcGFyc2VfcmVsZWFzZV9maWxlKGlucHV0KSwgb3V0cHV0KQogCisgICAgZGVmIHRlc3RfcG9wZW4oc2VsZik6CisgICAgICAgIG1zd2luZG93cyA9IChzeXMucGxhdGZvcm0gPT0gIndpbjMyIikKKworICAgICAgICBpZiBtc3dpbmRvd3M6CisgICAgICAgICAgICBjb21tYW5kID0gJyJ7fSIgLWMgInByaW50KFwnSGVsbG9cJykiJy5mb3JtYXQoc3lzLmV4ZWN1dGFibGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb21tYW5kID0gIid7fScgLWMgJ3ByaW50KFwiSGVsbG9cIiknIi5mb3JtYXQoc3lzLmV4ZWN1dGFibGUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgd2l0aCBwbGF0Zm9ybS5wb3Blbihjb21tYW5kKSBhcyBzdGRvdXQ6CisgICAgICAgICAgICAgICAgaGVsbG8gPSBzdGRvdXQucmVhZCgpLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBzdGRvdXQuY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8sICJIZWxsbyIpCisKKyAgICAgICAgZGF0YSA9ICdwbG9wJworICAgICAgICBpZiBtc3dpbmRvd3M6CisgICAgICAgICAgICBjb21tYW5kID0gJyJ7fSIgLWMgImltcG9ydCBzeXM7IGRhdGE9c3lzLnN0ZGluLnJlYWQoKTsgZXhpdChsZW4oZGF0YSkpIicKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbW1hbmQgPSAiJ3t9JyAtYyAnaW1wb3J0IHN5czsgZGF0YT1zeXMuc3RkaW4ucmVhZCgpOyBleGl0KGxlbihkYXRhKSknIgorICAgICAgICBjb21tYW5kID0gY29tbWFuZC5mb3JtYXQoc3lzLmV4ZWN1dGFibGUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgd2l0aCBwbGF0Zm9ybS5wb3Blbihjb21tYW5kLCAndycpIGFzIHN0ZGluOgorICAgICAgICAgICAgICAgIHN0ZG91dCA9IHN0ZGluLndyaXRlKGRhdGEpCisgICAgICAgICAgICAgICAgcmV0ID0gc3RkaW4uY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJldCkKKyAgICAgICAgICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGUgPSByZXQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm5jb2RlID0gcmV0ID4+IDgKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldHVybmNvZGUsIGxlbihkYXRhKSkKKwogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BsaXN0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF9wbGlzdGxpYi5weQppbmRleCA1Zjk4MGQwLi5hOWUzNDNlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BsaXN0bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGxpc3RsaWIucHkKQEAgLTU1LDYgKzU1LDEwIEBACiAgICAgICAgIDwvYXJyYXk+CiAgICAgICAgIDxrZXk+YVN0cmluZzwva2V5PgogICAgICAgICA8c3RyaW5nPkRvb2RhaDwvc3RyaW5nPgorICAgICAgICA8a2V5PmFuRW1wdHlEaWN0PC9rZXk+CisgICAgICAgIDxkaWN0Lz4KKyAgICAgICAgPGtleT5hbkVtcHR5TGlzdDwva2V5PgorICAgICAgICA8YXJyYXkvPgogICAgICAgICA8a2V5PmFuSW50PC9rZXk+CiAgICAgICAgIDxpbnRlZ2VyPjcyODwvaW50ZWdlcj4KICAgICAgICAgPGtleT5uZXN0ZWREYXRhPC9rZXk+CkBAIC0xMTIsNiArMTE2LDggQEAKICAgICAgICAgICAgIHNvbWVNb3JlRGF0YSA9IHBsaXN0bGliLkRhdGEoYiI8bG90cyBvZiBiaW5hcnkgZ3Vuaz5cMFwxXDJcMyIgKiAxMCksCiAgICAgICAgICAgICBuZXN0ZWREYXRhID0gW3BsaXN0bGliLkRhdGEoYiI8bG90cyBvZiBiaW5hcnkgZ3Vuaz5cMFwxXDJcMyIgKiAxMCldLAogICAgICAgICAgICAgYURhdGUgPSBkYXRldGltZS5kYXRldGltZSgyMDA0LCAxMCwgMjYsIDEwLCAzMywgMzMpLAorICAgICAgICAgICAgYW5FbXB0eURpY3QgPSBkaWN0KCksCisgICAgICAgICAgICBhbkVtcHR5TGlzdCA9IGxpc3QoKQogICAgICAgICApCiAgICAgICAgIHBsWydceGM1YmVucmFhJ10gPSAiVGhhdCB3YXMgYSB1bmljb2RlIGtleS4iCiAgICAgICAgIHJldHVybiBwbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQppbmRleCBlMzkwMWI4Li5jMDkyOWEwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQpAQCAtMTA4LDYgKzEwOCwxMCBAQAogICAgIGRlZiBjbWRfYXBvcChzZWxmLCBhcmcpOgogICAgICAgICBzZWxmLnB1c2goJytPSyBkb25lIG5vdGhpbmcuJykKIAorICAgIGRlZiBjbWRfcXVpdChzZWxmLCBhcmcpOgorICAgICAgICBzZWxmLnB1c2goJytPSyBjbG9zaW5nLicpCisgICAgICAgIHNlbGYuY2xvc2Vfd2hlbl9kb25lKCkKKwogCiBjbGFzcyBEdW1teVBPUDNTZXJ2ZXIoYXN5bmNvcmUuZGlzcGF0Y2hlciwgdGhyZWFkaW5nLlRocmVhZCk6CiAKQEAgLTE2NSwxMCArMTY5LDEwIEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15UE9QM1NlcnZlcigoSE9TVCwgUE9SVCkpCiAgICAgICAgIHNlbGYuc2VydmVyLnN0YXJ0KCkKLSAgICAgICAgc2VsZi5jbGllbnQgPSBwb3BsaWIuUE9QMyhzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQorICAgICAgICBzZWxmLmNsaWVudCA9IHBvcGxpYi5QT1AzKHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQsIHRpbWVvdXQ9MykKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgc2VsZi5jbGllbnQucXVpdCgpCisgICAgICAgIHNlbGYuY2xpZW50LmNsb3NlKCkKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgpCiAKICAgICBkZWYgdGVzdF9nZXR3ZWxjb21lKHNlbGYpOgpAQCAtMjI4LDYgKzIzMiwxMiBAQAogICAgICAgICBzZWxmLmNsaWVudC51aWRsKCkKICAgICAgICAgc2VsZi5jbGllbnQudWlkbCgnZm9vJykKIAorICAgIGRlZiB0ZXN0X3F1aXQoc2VsZik6CisgICAgICAgIHJlc3AgPSBzZWxmLmNsaWVudC5xdWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3ApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuY2xpZW50LnNvY2spCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuY2xpZW50LmZpbGUpCisKIAogU1VQUE9SVFNfU1NMID0gRmFsc2UKIGlmIGhhc2F0dHIocG9wbGliLCAnUE9QM19TU0wnKToKQEAgLTI3NCw2ICsyODQsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBEdW1teVBPUDNIYW5kbGVyLmhhbmRsZV9yZWFkKHNlbGYpCiAKKwogICAgIGNsYXNzIFRlc3RQT1AzX1NTTENsYXNzKFRlc3RQT1AzQ2xhc3MpOgogICAgICAgICAjIHJlcGVhdCBwcmV2aW91cyB0ZXN0cyBieSB1c2luZyBwb3BsaWIuUE9QM19TU0wKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3NpeC5weSBiL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkKaW5kZXggODY1MjA5ZC4uNGQ5ZTFmNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3NpeC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5CkBAIC05LDYgKzksNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCBvcworaW1wb3J0IGZjbnRsCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBwd2QKIGltcG9ydCBzaHV0aWwKQEAgLTE2LDYgKzE3LDcgQEAKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKK2ltcG9ydCBfdGVzdGNhcGkKIAogX0RVTU1ZX1NZTUxJTksgPSBvcy5wYXRoLmpvaW4odGVtcGZpbGUuZ2V0dGVtcGRpcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC5URVNURk4gKyAnLWR1bW15LXN5bWxpbmsnKQpAQCAtNDMsNyArNDUsNyBAQAogICAgICAgICBOT19BUkdfRlVOQ1RJT05TID0gWyAiY3Rlcm1pZCIsICJnZXRjd2QiLCAiZ2V0Y3dkYiIsICJ1bmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lcyIsICJnZXRsb2FkYXZnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdldGVnaWQiLCAiZ2V0ZXVpZCIsICJnZXRnaWQiLCAiZ2V0Z3JvdXBzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdldHBpZCIsICJnZXRwZ3JwIiwgImdldHBwaWQiLCAiZ2V0dWlkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdldHBpZCIsICJnZXRwZ3JwIiwgImdldHBwaWQiLCAiZ2V0dWlkIiwgInN5bmMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogCiAgICAgICAgIGZvciBuYW1lIGluIE5PX0FSR19GVU5DVElPTlM6CkBAIC0xMjgsNiArMTMwLDcgQEAKICAgICAgICAgICAgIGZwID0gb3BlbihzdXBwb3J0LlRFU1RGTikKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguZnN0YXR2ZnMoZnAuZmlsZW5vKCkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5zdGF0dmZzKGZwLmZpbGVubygpKSkKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgZnAuY2xvc2UoKQogCkBAIC0xNDIsNiArMTQ1LDE1MSBAQAogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAndHJ1bmNhdGUnKSwgInRlc3QgbmVlZHMgcG9zaXgudHJ1bmNhdGUoKSIpCisgICAgZGVmIHRlc3RfdHJ1bmNhdGUoc2VsZik6CisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3cnKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlKCd0ZXN0JykKKyAgICAgICAgICAgIGZwLmZsdXNoKCkKKyAgICAgICAgcG9zaXgudHJ1bmNhdGUoc3VwcG9ydC5URVNURk4sIDApCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhnZXRhdHRyKG9zLCAnZXhlY3ZlJywgTm9uZSkgaW4gb3Muc3VwcG9ydHNfZmQsICJ0ZXN0IG5lZWRzIGV4ZWN2ZSgpIHRvIHN1cHBvcnQgdGhlIGZkIHBhcmFtZXRlciIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2ZvcmsnKSwgInRlc3QgbmVlZHMgb3MuZm9yaygpIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnd2FpdHBpZCcpLCAidGVzdCBuZWVkcyBvcy53YWl0cGlkKCkiKQorICAgIGRlZiB0ZXN0X2ZleGVjdmUoc2VsZik6CisgICAgICAgIGZwID0gb3Mub3BlbihzeXMuZXhlY3V0YWJsZSwgb3MuT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBpZCA9IG9zLmZvcmsoKQorICAgICAgICAgICAgaWYgcGlkID09IDA6CisgICAgICAgICAgICAgICAgb3MuY2hkaXIob3MucGF0aC5zcGxpdChzeXMuZXhlY3V0YWJsZSlbMF0pCisgICAgICAgICAgICAgICAgcG9zaXguZXhlY3ZlKGZwLCBbc3lzLmV4ZWN1dGFibGUsICctYycsICdwYXNzJ10sIG9zLmVudmlyb24pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Mud2FpdHBpZChwaWQsIDApLCAocGlkLCAwKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZwKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3dhaXRpZCcpLCAidGVzdCBuZWVkcyBwb3NpeC53YWl0aWQoKSIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2ZvcmsnKSwgInRlc3QgbmVlZHMgb3MuZm9yaygpIikKKyAgICBkZWYgdGVzdF93YWl0aWQoc2VsZik6CisgICAgICAgIHBpZCA9IG9zLmZvcmsoKQorICAgICAgICBpZiBwaWQgPT0gMDoKKyAgICAgICAgICAgIG9zLmNoZGlyKG9zLnBhdGguc3BsaXQoc3lzLmV4ZWN1dGFibGUpWzBdKQorICAgICAgICAgICAgcG9zaXguZXhlY3ZlKHN5cy5leGVjdXRhYmxlLCBbc3lzLmV4ZWN1dGFibGUsICctYycsICdwYXNzJ10sIG9zLmVudmlyb24pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXMgPSBwb3NpeC53YWl0aWQocG9zaXguUF9QSUQsIHBpZCwgcG9zaXguV0VYSVRFRCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGlkLCByZXMuc2lfcGlkKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ2xvY2tmJyksICJ0ZXN0IG5lZWRzIHBvc2l4LmxvY2tmKCkiKQorICAgIGRlZiB0ZXN0X2xvY2tmKHNlbGYpOgorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fV1JPTkxZIHwgb3MuT19DUkVBVCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3Mud3JpdGUoZmQsIGIndGVzdCcpCisgICAgICAgICAgICBvcy5sc2VlayhmZCwgMCwgb3MuU0VFS19TRVQpCisgICAgICAgICAgICBwb3NpeC5sb2NrZihmZCwgcG9zaXguRl9MT0NLLCA0KQorICAgICAgICAgICAgIyBzZWN0aW9uIGlzIGxvY2tlZAorICAgICAgICAgICAgcG9zaXgubG9ja2YoZmQsIHBvc2l4LkZfVUxPQ0ssIDQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdwcmVhZCcpLCAidGVzdCBuZWVkcyBwb3NpeC5wcmVhZCgpIikKKyAgICBkZWYgdGVzdF9wcmVhZChzZWxmKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1JEV1IgfCBvcy5PX0NSRUFUKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy53cml0ZShmZCwgYid0ZXN0JykKKyAgICAgICAgICAgIG9zLmxzZWVrKGZkLCAwLCBvcy5TRUVLX1NFVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidlcycsIHBvc2l4LnByZWFkKGZkLCAyLCAxKSkKKyAgICAgICAgICAgICMgdGhlIGZpcnN0IHByZWFkKCkgc2hvdWxkbid0IGRpc3R1cmIgdGhlIGZpbGUgb2Zmc2V0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIndGUnLCBwb3NpeC5yZWFkKGZkLCAyKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3B3cml0ZScpLCAidGVzdCBuZWVkcyBwb3NpeC5wd3JpdGUoKSIpCisgICAgZGVmIHRlc3RfcHdyaXRlKHNlbGYpOgorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fUkRXUiB8IG9zLk9fQ1JFQVQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLndyaXRlKGZkLCBiJ3Rlc3QnKQorICAgICAgICAgICAgb3MubHNlZWsoZmQsIDAsIG9zLlNFRUtfU0VUKQorICAgICAgICAgICAgcG9zaXgucHdyaXRlKGZkLCBiJ3h4JywgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYid0eHh0JywgcG9zaXgucmVhZChmZCwgNCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdwb3NpeF9mYWxsb2NhdGUnKSwKKyAgICAgICAgInRlc3QgbmVlZHMgcG9zaXgucG9zaXhfZmFsbG9jYXRlKCkiKQorICAgIGRlZiB0ZXN0X3Bvc2l4X2ZhbGxvY2F0ZShzZWxmKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1dST05MWSB8IG9zLk9fQ1JFQVQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LnBvc2l4X2ZhbGxvY2F0ZShmZCwgMCwgMTApCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGluc3Q6CisgICAgICAgICAgICAjIGlzc3VlMTA4MTIsIFpGUyBkb2Vzbid0IGFwcGVhciB0byBzdXBwb3J0IHBvc2l4X2ZhbGxvY2F0ZSwKKyAgICAgICAgICAgICMgc28gc2tpcCBTb2xhcmlzLWJhc2VkIHNpbmNlIHRoZXkgYXJlIGxpa2VseSB0byBoYXZlIFpGUy4KKyAgICAgICAgICAgIGlmIGluc3QuZXJybm8gIT0gZXJybm8uRUlOVkFMIG9yIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgic3Vub3MiKToKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAncG9zaXhfZmFkdmlzZScpLAorICAgICAgICAidGVzdCBuZWVkcyBwb3NpeC5wb3NpeF9mYWR2aXNlKCkiKQorICAgIGRlZiB0ZXN0X3Bvc2l4X2ZhZHZpc2Uoc2VsZik6CisgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LnBvc2l4X2ZhZHZpc2UoZmQsIDAsIDAsIHBvc2l4LlBPU0lYX0ZBRFZfV0lMTE5FRUQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2ZkLCAidGVzdCBuZWVkcyBmZCBzdXBwb3J0IGluIG9zLnV0aW1lIikKKyAgICBkZWYgdGVzdF91dGltZV93aXRoX2ZkKHNlbGYpOgorICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC51dGltZShmZCkKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKGZkLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgZmQsIChOb25lLCBOb25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIGZkLCAobm93LCBOb25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIGZkLCAoTm9uZSwgbm93KSkKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKGZkLCAoaW50KG5vdyksIGludChub3cpKSkKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKGZkLCAobm93LCBub3cpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcG9zaXgudXRpbWUsIGZkLCAobm93LCBub3cpLCBucz0obm93LCBub3cpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcG9zaXgudXRpbWUsIGZkLCAobm93LCAwKSwgbnM9KE5vbmUsIE5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcG9zaXgudXRpbWUsIGZkLCAoTm9uZSwgTm9uZSksIG5zPShub3csIDApKQorICAgICAgICAgICAgcG9zaXgudXRpbWUoZmQsIChpbnQobm93KSwgaW50KChub3cgLSBpbnQobm93KSkgKiAxZTkpKSkKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKGZkLCBucz0oaW50KG5vdyksIGludCgobm93IC0gaW50KG5vdykpICogMWU5KSkpCisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MudXRpbWUgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzLCAidGVzdCBuZWVkcyBmb2xsb3dfc3ltbGlua3Mgc3VwcG9ydCBpbiBvcy51dGltZSIpCisgICAgZGVmIHRlc3RfdXRpbWVfbm9mb2xsb3dfc3ltbGlua3Moc2VsZik6CisgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCBOb25lLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCAoTm9uZSwgTm9uZSksIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgc3VwcG9ydC5URVNURk4sIChub3csIE5vbmUpLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCAoTm9uZSwgbm93KSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBwb3NpeC51dGltZShzdXBwb3J0LlRFU1RGTiwgKGludChub3cpLCBpbnQobm93KSksIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIChub3csIG5vdyksIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICd3cml0ZXYnKSwgInRlc3QgbmVlZHMgcG9zaXgud3JpdGV2KCkiKQorICAgIGRlZiB0ZXN0X3dyaXRldihzZWxmKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1JEV1IgfCBvcy5PX0NSRUFUKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy53cml0ZXYoZmQsIChiJ3Rlc3QxJywgYid0dDInLCBiJ3QzJykpCisgICAgICAgICAgICBvcy5sc2VlayhmZCwgMCwgb3MuU0VFS19TRVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIndGVzdDF0dDJ0MycsIHBvc2l4LnJlYWQoZmQsIDEwKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3JlYWR2JyksICJ0ZXN0IG5lZWRzIHBvc2l4LnJlYWR2KCkiKQorICAgIGRlZiB0ZXN0X3JlYWR2KHNlbGYpOgorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fUkRXUiB8IG9zLk9fQ1JFQVQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLndyaXRlKGZkLCBiJ3Rlc3QxdHQydDMnKQorICAgICAgICAgICAgb3MubHNlZWsoZmQsIDAsIG9zLlNFRUtfU0VUKQorICAgICAgICAgICAgYnVmID0gW2J5dGVhcnJheShpKSBmb3IgaSBpbiBbNSwgMywgMl1dCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4LnJlYWR2KGZkLCBidWYpLCAxMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2IndGVzdDEnLCBiJ3R0MicsIGIndDMnXSwgW2J5dGVzKGkpIGZvciBpIGluIGJ1Zl0pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKwogICAgIGRlZiB0ZXN0X2R1cChzZWxmKToKICAgICAgICAgaWYgaGFzYXR0cihwb3NpeCwgJ2R1cCcpOgogICAgICAgICAgICAgZnAgPSBvcGVuKHN1cHBvcnQuVEVTVEZOKQpAQCAtMTY3LDYgKzMxNSwxMyBAQAogICAgICAgICAgICAgICAgIGZwMS5jbG9zZSgpCiAgICAgICAgICAgICAgICAgZnAyLmNsb3NlKCkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdPX0NMT0VYRUMnKSwgIm5lZWRzIG9zLk9fQ0xPRVhFQyIpCisgICAgQHN1cHBvcnQucmVxdWlyZXNfbGludXhfdmVyc2lvbigyLCA2LCAyMykKKyAgICBkZWYgdGVzdF9vc2Nsb2V4ZWMoc2VsZik6CisgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19SRE9OTFl8b3MuT19DTE9FWEVDKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIGZkKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfR0VURkQpICYgZmNudGwuRkRfQ0xPRVhFQykKKwogICAgIGRlZiB0ZXN0X29zZXhsb2NrKHNlbGYpOgogICAgICAgICBpZiBoYXNhdHRyKHBvc2l4LCAiT19FWExPQ0siKToKICAgICAgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwKQEAgLTIwMywxMiArMzU4LDI5IEBACiAgICAgICAgICAgICBmcCA9IG9wZW4oc3VwcG9ydC5URVNURk4pCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LmZzdGF0KGZwLmZpbGVubygpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguc3RhdChmcC5maWxlbm8oKSkpCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcyBvciBpbnRlZ2VyLCBub3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgZmxvYXQoZnAuZmlsZW5vKCkpKQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9zdGF0KHNlbGYpOgogICAgICAgICBpZiBoYXNhdHRyKHBvc2l4LCAnc3RhdCcpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LnN0YXQob3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5zdGF0KGJ5dGVhcnJheShvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikpKSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICdjYW5cJ3Qgc3BlY2lmeSBOb25lIGZvciBwYXRoIGFyZ3VtZW50JywKKyAgICAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMgb3IgaW50ZWdlciwgbm90JywKKyAgICAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgbGlzdChzdXBwb3J0LlRFU1RGTikpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzIG9yIGludGVnZXIsIG5vdCcsCisgICAgICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIGxpc3Qob3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pKSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdta2ZpZm8nKSwgImRvbid0IGhhdmUgbWtmaWZvKCkiKQogICAgIGRlZiB0ZXN0X21rZmlmbyhzZWxmKToKQEAgLTI5OCw3ICs0NzAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5jaG93biwgc3VwcG9ydC5URVNURk4sIC0xLCAtMSkKIAogICAgICAgICAjIHJlLWNyZWF0ZSB0aGUgZmlsZQotICAgICAgICBvcGVuKHN1cHBvcnQuVEVTVEZOLCAndycpLmNsb3NlKCkKKyAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShzdXBwb3J0LlRFU1RGTikKICAgICAgICAgc2VsZi5fdGVzdF9hbGxfY2hvd25fY29tbW9uKHBvc2l4LmNob3duLCBzdXBwb3J0LlRFU1RGTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIocG9zaXgsICdzdGF0JywgTm9uZSkpCiAKQEAgLTMyOSwxMyArNTAxLDMyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5jaGRpciwgc3VwcG9ydC5URVNURk4pCiAKICAgICBkZWYgdGVzdF9saXN0ZGlyKHNlbGYpOgotICAgICAgICBpZiBoYXNhdHRyKHBvc2l4LCAnbGlzdGRpcicpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1cHBvcnQuVEVTVEZOIGluIHBvc2l4Lmxpc3RkaXIob3MuY3VyZGlyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1cHBvcnQuVEVTVEZOIGluIHBvc2l4Lmxpc3RkaXIob3MuY3VyZGlyKSkKIAogICAgIGRlZiB0ZXN0X2xpc3RkaXJfZGVmYXVsdChzZWxmKToKLSAgICAgICAgIyBXaGVuIGxpc3RkaXIgaXMgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnQsIGl0J3MgdGhlIHNhbWUgYXMgbGlzdGRpcihvcy5jdXJkaXIpCi0gICAgICAgIGlmIGhhc2F0dHIocG9zaXgsICdsaXN0ZGlyJyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VwcG9ydC5URVNURk4gaW4gcG9zaXgubGlzdGRpcigpKQorICAgICAgICAjIFdoZW4gbGlzdGRpciBpcyBjYWxsZWQgd2l0aG91dCBhcmd1bWVudCwKKyAgICAgICAgIyBpdCdzIHRoZSBzYW1lIGFzIGxpc3RkaXIob3MuY3VyZGlyKS4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1cHBvcnQuVEVTVEZOIGluIHBvc2l4Lmxpc3RkaXIoKSkKKworICAgIGRlZiB0ZXN0X2xpc3RkaXJfYnl0ZXMoc2VsZik6CisgICAgICAgICMgV2hlbiBsaXN0ZGlyIGlzIGNhbGxlZCB3aXRoIGEgYnl0ZXMgb2JqZWN0LAorICAgICAgICAjIHRoZSByZXR1cm5lZCBzdHJpbmdzIGFyZSBvZiB0eXBlIGJ5dGVzLgorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pIGluIHBvc2l4Lmxpc3RkaXIoYicuJykpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhwb3NpeC5saXN0ZGlyIGluIG9zLnN1cHBvcnRzX2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IG5lZWRzIGZkIHN1cHBvcnQgZm9yIHBvc2l4Lmxpc3RkaXIoKSIpCisgICAgZGVmIHRlc3RfbGlzdGRpcl9mZChzZWxmKToKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocG9zaXguY2xvc2UsIGYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzb3J0ZWQocG9zaXgubGlzdGRpcignLicpKSwKKyAgICAgICAgICAgIHNvcnRlZChwb3NpeC5saXN0ZGlyKGYpKQorICAgICAgICAgICAgKQorICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGZkIG9mZnNldCB3YXMgcmVzZXQgKGlzc3VlICMxMzczOSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNvcnRlZChwb3NpeC5saXN0ZGlyKCcuJykpLAorICAgICAgICAgICAgc29ydGVkKHBvc2l4Lmxpc3RkaXIoZikpCisgICAgICAgICAgICApCiAKICAgICBkZWYgdGVzdF9hY2Nlc3Moc2VsZik6CiAgICAgICAgIGlmIGhhc2F0dHIocG9zaXgsICdhY2Nlc3MnKToKQEAgLTM1Nyw2ICs1NDgsMzYgQEAKICAgICAgICAgICAgIG9zLmNsb3NlKHJlYWRlcikKICAgICAgICAgICAgIG9zLmNsb3NlKHdyaXRlcikKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdwaXBlMicpLCAidGVzdCBuZWVkcyBvcy5waXBlMigpIikKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19saW51eF92ZXJzaW9uKDIsIDYsIDI3KQorICAgIGRlZiB0ZXN0X3BpcGUyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLnBpcGUyLCAnREVBREJFRUYnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLnBpcGUyLCAwLCAwKQorCisgICAgICAgICMgdHJ5IGNhbGxpbmcgd2l0aCBmbGFncyA9IDAsIGxpa2Ugb3MucGlwZSgpCisgICAgICAgIHIsIHcgPSBvcy5waXBlMigwKQorICAgICAgICBvcy5jbG9zZShyKQorICAgICAgICBvcy5jbG9zZSh3KQorCisgICAgICAgICMgdGVzdCBmbGFncworICAgICAgICByLCB3ID0gb3MucGlwZTIob3MuT19DTE9FWEVDfG9zLk9fTk9OQkxPQ0spCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCB3KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmNudGwuZmNudGwociwgZmNudGwuRl9HRVRGRCkgJiBmY250bC5GRF9DTE9FWEVDKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmNudGwuZmNudGwodywgZmNudGwuRl9HRVRGRCkgJiBmY250bC5GRF9DTE9FWEVDKQorICAgICAgICAjIHRyeSByZWFkaW5nIGZyb20gYW4gZW1wdHkgcGlwZTogdGhpcyBzaG91bGQgZmFpbCwgbm90IGJsb2NrCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLnJlYWQsIHIsIDEpCisgICAgICAgICMgdHJ5IGEgd3JpdGUgYmlnIGVub3VnaCB0byBmaWxsLXVwIHRoZSBwaXBlOiB0aGlzIHNob3VsZCBlaXRoZXIKKyAgICAgICAgIyBmYWlsIG9yIHBlcmZvcm0gYSBwYXJ0aWFsIHdyaXRlLCBub3QgYmxvY2sKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3Mud3JpdGUodywgYid4JyAqIHN1cHBvcnQuUElQRV9NQVhfU0laRSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgIyBJc3N1ZSAxNTk4OQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBvcy5waXBlMiwgX3Rlc3RjYXBpLklOVF9NQVggKyAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBvcy5waXBlMiwgX3Rlc3RjYXBpLlVJTlRfTUFYICsgMSkKKwogICAgIGRlZiB0ZXN0X3V0aW1lKHNlbGYpOgogICAgICAgICBpZiBoYXNhdHRyKHBvc2l4LCAndXRpbWUnKToKICAgICAgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCkBAIC0zNjcsMTMgKzU4OCwxNCBAQAogICAgICAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIChpbnQobm93KSwgaW50KG5vdykpKQogICAgICAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIChub3csIG5vdykpCiAKLSAgICBkZWYgX3Rlc3RfY2hmbGFnc19yZWd1bGFyX2ZpbGUoc2VsZiwgY2hmbGFnc19mdW5jLCB0YXJnZXRfZmlsZSk6CisgICAgZGVmIF90ZXN0X2NoZmxhZ3NfcmVndWxhcl9maWxlKHNlbGYsIGNoZmxhZ3NfZnVuYywgdGFyZ2V0X2ZpbGUsICoqa3dhcmdzKToKICAgICAgICAgc3QgPSBvcy5zdGF0KHRhcmdldF9maWxlKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzdCwgJ3N0X2ZsYWdzJykpCiAKICAgICAgICAgIyBaRlMgcmV0dXJucyBFT1BOT1RTVVBQIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgZmxhZyBVRl9JTU1VVEFCTEUuCisgICAgICAgIGZsYWdzID0gc3Quc3RfZmxhZ3MgfCBzdGF0LlVGX0lNTVVUQUJMRQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjaGZsYWdzX2Z1bmModGFyZ2V0X2ZpbGUsIHN0LnN0X2ZsYWdzIHwgc3RhdC5VRl9JTU1VVEFCTEUpCisgICAgICAgICAgICBjaGZsYWdzX2Z1bmModGFyZ2V0X2ZpbGUsIGZsYWdzLCAqKmt3YXJncykKICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgaWYgZXJyLmVycm5vICE9IGVycm5vLkVPUE5PVFNVUFA6CiAgICAgICAgICAgICAgICAgcmFpc2UKQEAgLTM5Nyw2ICs2MTksNyBAQAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdsY2hmbGFncycpLCAndGVzdCBuZWVkcyBvcy5sY2hmbGFncygpJykKICAgICBkZWYgdGVzdF9sY2hmbGFnc19yZWd1bGFyX2ZpbGUoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3RfY2hmbGFnc19yZWd1bGFyX2ZpbGUocG9zaXgubGNoZmxhZ3MsIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLl90ZXN0X2NoZmxhZ3NfcmVndWxhcl9maWxlKHBvc2l4LmNoZmxhZ3MsIHN1cHBvcnQuVEVTVEZOLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnbGNoZmxhZ3MnKSwgJ3Rlc3QgbmVlZHMgb3MubGNoZmxhZ3MoKScpCiAgICAgZGVmIHRlc3RfbGNoZmxhZ3Nfc3ltbGluayhzZWxmKToKQEAgLTQwOCwyNSArNjMxLDI4IEBACiAgICAgICAgIHNlbGYudGVhcmRvd25fZmlsZXMuYXBwZW5kKF9EVU1NWV9TWU1MSU5LKQogICAgICAgICBkdW1teV9zeW1saW5rX3N0ID0gb3MubHN0YXQoX0RVTU1ZX1NZTUxJTkspCiAKLSAgICAgICAgIyBaRlMgcmV0dXJucyBFT1BOT1RTVVBQIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgZmxhZyBVRl9JTU1VVEFCTEUuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHBvc2l4LmxjaGZsYWdzKF9EVU1NWV9TWU1MSU5LLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtbXlfc3ltbGlua19zdC5zdF9mbGFncyB8IHN0YXQuVUZfSU1NVVRBQkxFKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICBpZiBlcnIuZXJybm8gIT0gZXJybm8uRU9QTk9UU1VQUDoKLSAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgbXNnID0gJ2NoZmxhZyBVRl9JTU1VVEFCTEUgbm90IHN1cHBvcnRlZCBieSB1bmRlcmx5aW5nIGZzJwotICAgICAgICAgICAgc2VsZi5za2lwVGVzdChtc2cpCisgICAgICAgIGRlZiBjaGZsYWdzX25vZm9sbG93KHBhdGgsIGZsYWdzKToKKyAgICAgICAgICAgIHJldHVybiBwb3NpeC5jaGZsYWdzKHBhdGgsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbmV3X3Rlc3Rmbl9zdCA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICBuZXdfZHVtbXlfc3ltbGlua19zdCA9IG9zLmxzdGF0KF9EVU1NWV9TWU1MSU5LKQorICAgICAgICBmb3IgZm4gaW4gKHBvc2l4LmxjaGZsYWdzLCBjaGZsYWdzX25vZm9sbG93KToKKyAgICAgICAgICAgICMgWkZTIHJldHVybnMgRU9QTk9UU1VQUCB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IGZsYWcgVUZfSU1NVVRBQkxFLgorICAgICAgICAgICAgZmxhZ3MgPSBkdW1teV9zeW1saW5rX3N0LnN0X2ZsYWdzIHwgc3RhdC5VRl9JTU1VVEFCTEUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmbihfRFVNTVlfU1lNTElOSywgZmxhZ3MpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgaWYgZXJyLmVycm5vICE9IGVycm5vLkVPUE5PVFNVUFA6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgbXNnID0gJ2NoZmxhZyBVRl9JTU1VVEFCTEUgbm90IHN1cHBvcnRlZCBieSB1bmRlcmx5aW5nIGZzJworICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QobXNnKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG5ld190ZXN0Zm5fc3QgPSBvcy5zdGF0KHN1cHBvcnQuVEVTVEZOKQorICAgICAgICAgICAgICAgIG5ld19kdW1teV9zeW1saW5rX3N0ID0gb3MubHN0YXQoX0RVTU1ZX1NZTUxJTkspCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdGZuX3N0LnN0X2ZsYWdzLCBuZXdfdGVzdGZuX3N0LnN0X2ZsYWdzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdW1teV9zeW1saW5rX3N0LnN0X2ZsYWdzIHwgc3RhdC5VRl9JTU1VVEFCTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19kdW1teV9zeW1saW5rX3N0LnN0X2ZsYWdzKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgcG9zaXgubGNoZmxhZ3MoX0RVTU1ZX1NZTUxJTkssIGR1bW15X3N5bWxpbmtfc3Quc3RfZmxhZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0Zm5fc3Quc3RfZmxhZ3MsIG5ld190ZXN0Zm5fc3Quc3RfZmxhZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdW1teV9zeW1saW5rX3N0LnN0X2ZsYWdzIHwgc3RhdC5VRl9JTU1VVEFCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfZHVtbXlfc3ltbGlua19zdC5zdF9mbGFncykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZm4oX0RVTU1ZX1NZTUxJTkssIGR1bW15X3N5bWxpbmtfc3Quc3RfZmxhZ3MpCiAKICAgICBkZWYgdGVzdF9lbnZpcm9uKHNlbGYpOgogICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6CkBAIC00NzQsMTMgKzcwMCwyMiBAQAogICAgICAgICAgICAgICAgIG9zLmNoZGlyKGN1cmRpcikKICAgICAgICAgICAgICAgICBzdXBwb3J0LnJtdHJlZShiYXNlX3BhdGgpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnZ2V0Z3JvdXBsaXN0JyksICJ0ZXN0IG5lZWRzIHBvc2l4LmdldGdyb3VwbGlzdCgpIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHB3ZCwgJ2dldHB3dWlkJyksICJ0ZXN0IG5lZWRzIHB3ZC5nZXRwd3VpZCgpIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0dWlkJyksICJ0ZXN0IG5lZWRzIG9zLmdldHVpZCgpIikKKyAgICBkZWYgdGVzdF9nZXRncm91cGxpc3Qoc2VsZik6CisgICAgICAgIHVzZXIgPSBwd2QuZ2V0cHd1aWQob3MuZ2V0dWlkKCkpWzBdCisgICAgICAgIGdyb3VwID0gcHdkLmdldHB3dWlkKG9zLmdldHVpZCgpKVszXQorICAgICAgICBzZWxmLmFzc2VydEluKGdyb3VwLCBwb3NpeC5nZXRncm91cGxpc3QodXNlciwgZ3JvdXApKQorCisKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0ZWdpZCcpLCAidGVzdCBuZWVkcyBvcy5nZXRlZ2lkKCkiKQogICAgIGRlZiB0ZXN0X2dldGdyb3VwcyhzZWxmKToKICAgICAgICAgd2l0aCBvcy5wb3BlbignaWQgLUcnKSBhcyBpZGc6CiAgICAgICAgICAgICBncm91cHMgPSBpZGcucmVhZCgpLnN0cmlwKCkKICAgICAgICAgICAgIHJldCA9IGlkZy5jbG9zZSgpCiAKLSAgICAgICAgaWYgcmV0ICE9IE5vbmUgb3Igbm90IGdyb3VwczoKKyAgICAgICAgaWYgcmV0IGlzIG5vdCBOb25lIG9yIG5vdCBncm91cHM6CiAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgibmVlZCB3b3JraW5nICdpZCAtRyciKQogCiAgICAgICAgICMgSXNzdWVzIDE2Njk4OiBPUyBYIEFCSXMgcHJpb3IgdG8gMTAuNiBoYXZlIGxpbWl0cyBvbiBnZXRncm91cHMoKQpAQCAtNDk4LDYgKzczMywzNDggQEAKICAgICAgICAgICAgICAgICBzZXQoW2ludCh4KSBmb3IgeCBpbiBncm91cHMuc3BsaXQoKV0pLAogICAgICAgICAgICAgICAgIHNldChwb3NpeC5nZXRncm91cHMoKSArIFtwb3NpeC5nZXRlZ2lkKCldKSkKIAorICAgICMgdGVzdHMgZm9yIHRoZSBwb3NpeCAqYXQgZnVuY3Rpb25zIGZvbGxvdworCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MuYWNjZXNzIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgZm9yIG9zLmFjY2VzcygpIikKKyAgICBkZWYgdGVzdF9hY2Nlc3NfZGlyX2ZkKHNlbGYpOgorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5hY2Nlc3Moc3VwcG9ydC5URVNURk4sIG9zLlJfT0ssIGRpcl9mZD1mKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5jaG1vZCBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLmNobW9kKCkiKQorICAgIGRlZiB0ZXN0X2NobW9kX2Rpcl9mZChzZWxmKToKKyAgICAgICAgb3MuY2htb2Qoc3VwcG9ydC5URVNURk4sIHN0YXQuU19JUlVTUikKKworICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LmNobW9kKHN1cHBvcnQuVEVTVEZOLCBzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVdVU1IsIGRpcl9mZD1mKQorCisgICAgICAgICAgICBzID0gcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1swXSAmIHN0YXQuU19JUldYVSwgc3RhdC5TX0lSVVNSIHwgc3RhdC5TX0lXVVNSKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLmNob3duIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MuY2hvd24oKSIpCisgICAgZGVmIHRlc3RfY2hvd25fZGlyX2ZkKHNlbGYpOgorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShzdXBwb3J0LlRFU1RGTikKKworICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LmNob3duKHN1cHBvcnQuVEVTVEZOLCBvcy5nZXR1aWQoKSwgb3MuZ2V0Z2lkKCksIGRpcl9mZD1mKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnN0YXQgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5zdGF0KCkiKQorICAgIGRlZiB0ZXN0X3N0YXRfZGlyX2ZkKHNlbGYpOgorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAndycpIGFzIG91dGZpbGU6CisgICAgICAgICAgICBvdXRmaWxlLndyaXRlKCJ0ZXN0bGluZVxuIikKKworICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHMxID0gcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgICAgIHMyID0gcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTiwgZGlyX2ZkPWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMxLCBzMikKKyAgICAgICAgICAgIHMyID0gcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTiwgZGlyX2ZkPU5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMxLCBzMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnc2hvdWxkIGJlIGludGVnZXIsIG5vdCcsCisgICAgICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9cG9zaXguZ2V0Y3dkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3Nob3VsZCBiZSBpbnRlZ2VyLCBub3QnLAorICAgICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBzdXBwb3J0LlRFU1RGTiwgZGlyX2ZkPWZsb2F0KGYpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgc3VwcG9ydC5URVNURk4sIGRpcl9mZD0xMCoqMjApCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MudXRpbWUgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy51dGltZSgpIikKKyAgICBkZWYgdGVzdF91dGltZV9kaXJfZmQoc2VsZik6CisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbm93ID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCBOb25lLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCBub3csIGRpcl9mZD1mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgc3VwcG9ydC5URVNURk4sIChOb25lLCBOb25lKSwgZGlyX2ZkPWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnV0aW1lLCBzdXBwb3J0LlRFU1RGTiwgKG5vdywgTm9uZSksIGRpcl9mZD1mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgc3VwcG9ydC5URVNURk4sIChOb25lLCBub3cpLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCAobm93LCAieCIpLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCAoaW50KG5vdyksIGludChub3cpKSwgZGlyX2ZkPWYpCisgICAgICAgICAgICBwb3NpeC51dGltZShzdXBwb3J0LlRFU1RGTiwgKG5vdywgbm93KSwgZGlyX2ZkPWYpCisgICAgICAgICAgICBwb3NpeC51dGltZShzdXBwb3J0LlRFU1RGTiwKKyAgICAgICAgICAgICAgICAgICAgKGludChub3cpLCBpbnQoKG5vdyAtIGludChub3cpKSAqIDFlOSkpLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcz0oaW50KG5vdyksIGludCgobm93IC0gaW50KG5vdykpICogMWU5KSkpCisKKyAgICAgICAgICAgICMgdHJ5IGRpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIHRvZ2V0aGVyCisgICAgICAgICAgICBpZiBvcy51dGltZSBpbiBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3M6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBwb3NpeC51dGltZShzdXBwb3J0LlRFU1RGTiwgZm9sbG93X3N5bWxpbmtzPUZhbHNlLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgIyB3aG9vcHMhICB1c2luZyBib3RoIHRvZ2V0aGVyIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4KKyAgICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubGluayBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLmxpbmsoKSIpCisgICAgZGVmIHRlc3RfbGlua19kaXJfZmQoc2VsZik6CisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXgubGluayhzdXBwb3J0LlRFU1RGTiwgc3VwcG9ydC5URVNURk4gKyAnbGluaycsIHNyY19kaXJfZmQ9ZiwgZHN0X2Rpcl9mZD1mKQorICAgICAgICAgICAgIyBzaG91bGQgaGF2ZSBzYW1lIGlub2RlcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOKVsxXSwKKyAgICAgICAgICAgICAgICBwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnKVsxXSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisgICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTiArICdsaW5rJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm1rZGlyIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MubWtkaXIoKSIpCisgICAgZGVmIHRlc3RfbWtkaXJfZGlyX2ZkKHNlbGYpOgorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4Lm1rZGlyKHN1cHBvcnQuVEVTVEZOICsgJ2RpcicsIGRpcl9mZD1mKQorICAgICAgICAgICAgcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTiArICdkaXInKSAjIHNob3VsZCBub3QgcmFpc2UgZXhjZXB0aW9uCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorICAgICAgICAgICAgc3VwcG9ydC5ybXRyZWUoc3VwcG9ydC5URVNURk4gKyAnZGlyJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKChvcy5ta25vZCBpbiBvcy5zdXBwb3J0c19kaXJfZmQpIGFuZCBoYXNhdHRyKHN0YXQsICdTX0lGSUZPJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgcmVxdWlyZXMgYm90aCBzdGF0LlNfSUZJRk8gYW5kIGRpcl9mZCBzdXBwb3J0IGZvciBvcy5ta25vZCgpIikKKyAgICBkZWYgdGVzdF9ta25vZF9kaXJfZmQoc2VsZik6CisgICAgICAgICMgVGVzdCB1c2luZyBta25vZGF0KCkgdG8gY3JlYXRlIGEgRklGTyAodGhlIG9ubHkgdXNlIHNwZWNpZmllZAorICAgICAgICAjIGJ5IFBPU0lYKS4KKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisgICAgICAgIG1vZGUgPSBzdGF0LlNfSUZJRk8gfCBzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVdVU1IKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC5ta25vZChzdXBwb3J0LlRFU1RGTiwgbW9kZSwgMCwgZGlyX2ZkPWYpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAjIFNvbWUgb2xkIHN5c3RlbXMgZG9uJ3QgYWxsb3cgdW5wcml2aWxlZ2VkIHVzZXJzIHRvIHVzZQorICAgICAgICAgICAgIyBta25vZCgpLCBvciBvbmx5IHN1cHBvcnQgY3JlYXRpbmcgZGV2aWNlIG5vZGVzLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLmVycm5vLCAoZXJybm8uRVBFUk0sIGVycm5vLkVJTlZBTCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhdC5TX0lTRklGTyhwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOKS5zdF9tb2RlKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5vcGVuIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3Mub3BlbigpIikKKyAgICBkZWYgdGVzdF9vcGVuX2Rpcl9mZChzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3cnKSBhcyBvdXRmaWxlOgorICAgICAgICAgICAgb3V0ZmlsZS53cml0ZSgidGVzdGxpbmVcbiIpCisgICAgICAgIGEgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgYiA9IHBvc2l4Lm9wZW4oc3VwcG9ydC5URVNURk4sIHBvc2l4Lk9fUkRPTkxZLCBkaXJfZmQ9YSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzID0gcG9zaXgucmVhZChiLCA5KS5kZWNvZGUoZW5jb2Rpbmc9InV0Zi04IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRlc3RsaW5lXG4iLCByZXMpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShhKQorICAgICAgICAgICAgcG9zaXguY2xvc2UoYikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnJlYWRsaW5rIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MucmVhZGxpbmsoKSIpCisgICAgZGVmIHRlc3RfcmVhZGxpbmtfZGlyX2ZkKHNlbGYpOgorICAgICAgICBvcy5zeW1saW5rKHN1cHBvcnQuVEVTVEZOLCBzdXBwb3J0LlRFU1RGTiArICdsaW5rJykKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4LnJlYWRsaW5rKHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnKSwKKyAgICAgICAgICAgICAgICBwb3NpeC5yZWFkbGluayhzdXBwb3J0LlRFU1RGTiArICdsaW5rJywgZGlyX2ZkPWYpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4gKyAnbGluaycpCisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MucmVuYW1lIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MucmVuYW1lKCkiKQorICAgIGRlZiB0ZXN0X3JlbmFtZV9kaXJfZmQoc2VsZik6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKHN1cHBvcnQuVEVTVEZOICsgJ3JlbicpCisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXgucmVuYW1lKHN1cHBvcnQuVEVTVEZOICsgJ3JlbicsIHN1cHBvcnQuVEVTVEZOLCBzcmNfZGlyX2ZkPWYsIGRzdF9kaXJfZmQ9ZikKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcG9zaXgucmVuYW1lKHN1cHBvcnQuVEVTVEZOICsgJ3JlbicsIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4pICMgc2hvdWxkIG5vdCByYWlzZSBleGNlcHRpb24KKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5zeW1saW5rIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3Muc3ltbGluaygpIikKKyAgICBkZWYgdGVzdF9zeW1saW5rX2Rpcl9mZChzZWxmKToKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC5zeW1saW5rKHN1cHBvcnQuVEVTVEZOLCBzdXBwb3J0LlRFU1RGTiArICdsaW5rJywgZGlyX2ZkPWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4LnJlYWRsaW5rKHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnKSwgc3VwcG9ydC5URVNURk4pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4gKyAnbGluaycpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy51bmxpbmsgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy51bmxpbmsoKSIpCisgICAgZGVmIHRlc3RfdW5saW5rX2Rpcl9mZChzZWxmKToKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKHN1cHBvcnQuVEVTVEZOICsgJ2RlbCcpCisgICAgICAgIHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4gKyAnZGVsJykgIyBzaG91bGQgbm90IHJhaXNlIGV4Y2VwdGlvbgorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC51bmxpbmsoc3VwcG9ydC5URVNURk4gKyAnZGVsJywgZGlyX2ZkPWYpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOICsgJ2RlbCcpCisgICAgICAgICAgICByYWlzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcG9zaXguc3RhdCwgc3VwcG9ydC5URVNURk4gKyAnbGluaycpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubWtmaWZvIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MubWtmaWZvKCkiKQorICAgIGRlZiB0ZXN0X21rZmlmb19kaXJfZmQoc2VsZik6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4Lm1rZmlmbyhzdXBwb3J0LlRFU1RGTiwgc3RhdC5TX0lSVVNSIHwgc3RhdC5TX0lXVVNSLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGF0LlNfSVNGSUZPKHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4pLnN0X21vZGUpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKworICAgIHJlcXVpcmVzX3NjaGVkX2ggPSB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdzY2hlZF95aWVsZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb24ndCBoYXZlIHNjaGVkdWxpbmcgc3VwcG9ydCIpCisgICAgcmVxdWlyZXNfc2NoZWRfYWZmaW5pdHkgPSB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdzY2hlZF9zZXRhZmZpbml0eScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9uJ3QgaGF2ZSBzY2hlZCBhZmZpbml0eSBzdXBwb3J0IikKKworICAgIEByZXF1aXJlc19zY2hlZF9oCisgICAgZGVmIHRlc3Rfc2NoZWRfeWllbGQoc2VsZik6CisgICAgICAgICMgVGhpcyBoYXMgbm8gZXJyb3IgY29uZGl0aW9ucyAoYXQgbGVhc3Qgb24gTGludXgpLgorICAgICAgICBwb3NpeC5zY2hlZF95aWVsZCgpCisKKyAgICBAcmVxdWlyZXNfc2NoZWRfaAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdzY2hlZF9nZXRfcHJpb3JpdHlfbWF4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIHNjaGVkX2dldF9wcmlvcml0eV9tYXgoKSIpCisgICAgZGVmIHRlc3Rfc2NoZWRfcHJpb3JpdHkoc2VsZik6CisgICAgICAgICMgUm91bmQtcm9iaW4gdXN1YWxseSBoYXMgaW50ZXJlc3RpbmcgcHJpb3JpdGllcy4KKyAgICAgICAgcG9sID0gcG9zaXguU0NIRURfUlIKKyAgICAgICAgbG8gPSBwb3NpeC5zY2hlZF9nZXRfcHJpb3JpdHlfbWluKHBvbCkKKyAgICAgICAgaGkgPSBwb3NpeC5zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KHBvbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGxvLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoaSwgaW50KQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChoaSwgbG8pCisgICAgICAgICMgT1NYIGV2aWRlbnRseSBqdXN0IHJldHVybnMgMTUgd2l0aG91dCBjaGVja2luZyB0aGUgYXJndW1lbnQuCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAiZGFyd2luIjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LnNjaGVkX2dldF9wcmlvcml0eV9taW4sIC0yMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LnNjaGVkX2dldF9wcmlvcml0eV9tYXgsIC0yMykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdzY2hlZF9zZXRzY2hlZHVsZXInKSwgImNhbid0IGNoYW5nZSBzY2hlZHVsZXIiKQorICAgIGRlZiB0ZXN0X2dldF9hbmRfc2V0X3NjaGVkdWxlcl9hbmRfcGFyYW0oc2VsZik6CisgICAgICAgIHBvc3NpYmxlX3NjaGVkdWxlcnMgPSBbc2NoZWQgZm9yIG5hbWUsIHNjaGVkIGluIHBvc2l4Ll9fZGljdF9fLml0ZW1zKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoIlNDSEVEXyIpXQorICAgICAgICBtaW5lID0gcG9zaXguc2NoZWRfZ2V0c2NoZWR1bGVyKDApCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obWluZSwgcG9zc2libGVfc2NoZWR1bGVycykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGFyZW50ID0gcG9zaXguc2NoZWRfZ2V0c2NoZWR1bGVyKG9zLmdldHBwaWQoKSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRVBFUk06CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGFyZW50LCBwb3NzaWJsZV9zY2hlZHVsZXJzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9nZXRzY2hlZHVsZXIsIC0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9nZXRwYXJhbSwgLTEpCisgICAgICAgIHBhcmFtID0gcG9zaXguc2NoZWRfZ2V0cGFyYW0oMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHBhcmFtLnNjaGVkX3ByaW9yaXR5LCBpbnQpCisKKyAgICAgICAgIyBQT1NJWCBzdGF0ZXMgdGhhdCBjYWxsaW5nIHNjaGVkX3NldHBhcmFtKCkgb3Igc2NoZWRfc2V0c2NoZWR1bGVyKCkgb24KKyAgICAgICAgIyBhIHByb2Nlc3Mgd2l0aCBhIHNjaGVkdWxpbmcgcG9saWN5IG90aGVyIHRoYW4gU0NIRURfRklGTyBvciBTQ0hFRF9SUgorICAgICAgICAjIGlzIGltcGxlbWVudGF0aW9uLWRlZmluZWQ6IE5ldEJTRCBhbmQgRnJlZUJTRCBjYW4gcmV0dXJuIEVJTlZBTC4KKyAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCgnZnJlZWJzZCcsICduZXRic2QnKSk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcG9zaXguc2NoZWRfc2V0c2NoZWR1bGVyKDAsIG1pbmUsIHBhcmFtKQorICAgICAgICAgICAgICAgIHBvc2l4LnNjaGVkX3NldHBhcmFtKDAsIHBhcmFtKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVQRVJNOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcG9zaXguc2NoZWRfc2V0cGFyYW0sIC0xLCBwYXJhbSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRzY2hlZHVsZXIsIC0xLCBtaW5lLCBwYXJhbSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC5zY2hlZF9zZXRzY2hlZHVsZXIsIDAsIG1pbmUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXguc2NoZWRfc2V0cGFyYW0sIDAsIDQzKQorICAgICAgICBwYXJhbSA9IHBvc2l4LnNjaGVkX3BhcmFtKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXguc2NoZWRfc2V0cGFyYW0sIDAsIHBhcmFtKQorICAgICAgICBsYXJnZSA9IDIxNDc0ODM2NDcwMAorICAgICAgICBwYXJhbSA9IHBvc2l4LnNjaGVkX3BhcmFtKGxhcmdlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRwYXJhbSwgMCwgcGFyYW0pCisgICAgICAgIHBhcmFtID0gcG9zaXguc2NoZWRfcGFyYW0oc2NoZWRfcHJpb3JpdHk9LWxhcmdlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRwYXJhbSwgMCwgcGFyYW0pCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAic2NoZWRfcnJfZ2V0X2ludGVydmFsIiksICJubyBmdW5jdGlvbiIpCisgICAgZGVmIHRlc3Rfc2NoZWRfcnJfZ2V0X2ludGVydmFsKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbnRlcnZhbCA9IHBvc2l4LnNjaGVkX3JyX2dldF9pbnRlcnZhbCgwKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgIyBUaGlzIGxpa2VseSBtZWFucyB0aGF0IHNjaGVkX3JyX2dldF9pbnRlcnZhbCBpcyBvbmx5IHZhbGlkIGZvcgorICAgICAgICAgICAgIyBwcm9jZXNzZXMgd2l0aCB0aGUgU0NIRURfUlIgc2NoZWR1bGVyIGluIGVmZmVjdC4KKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUlOVkFMOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJvbmx5IHdvcmtzIG9uIFNDSEVEX1JSIHByb2Nlc3NlcyIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbnRlcnZhbCwgZmxvYXQpCisgICAgICAgICMgUmVhc29uYWJsZSBjb25zdHJhaW50cywgSSB0aGluay4KKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoaW50ZXJ2YWwsIDAuKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoaW50ZXJ2YWwsIDEuKQorCisgICAgQHJlcXVpcmVzX3NjaGVkX2FmZmluaXR5CisgICAgZGVmIHRlc3Rfc2NoZWRfZ2V0YWZmaW5pdHkoc2VsZik6CisgICAgICAgIG1hc2sgPSBwb3NpeC5zY2hlZF9nZXRhZmZpbml0eSgwKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobWFzaywgc2V0KQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChsZW4obWFzayksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LnNjaGVkX2dldGFmZmluaXR5LCAtMSkKKyAgICAgICAgZm9yIGNwdSBpbiBtYXNrOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNwdSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoY3B1LCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGNwdSwgMSA8PCAzMikKKworICAgIEByZXF1aXJlc19zY2hlZF9hZmZpbml0eQorICAgIGRlZiB0ZXN0X3NjaGVkX3NldGFmZmluaXR5KHNlbGYpOgorICAgICAgICBtYXNrID0gcG9zaXguc2NoZWRfZ2V0YWZmaW5pdHkoMCkKKyAgICAgICAgaWYgbGVuKG1hc2spID4gMToKKyAgICAgICAgICAgICMgRW1wdHkgbWFza3MgYXJlIGZvcmJpZGRlbgorICAgICAgICAgICAgbWFzay5wb3AoKQorICAgICAgICBwb3NpeC5zY2hlZF9zZXRhZmZpbml0eSgwLCBtYXNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4LnNjaGVkX2dldGFmZmluaXR5KDApLCBtYXNrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRhZmZpbml0eSwgMCwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBvc2l4LnNjaGVkX3NldGFmZmluaXR5LCAwLCBbLTEwXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9zaXguc2NoZWRfc2V0YWZmaW5pdHksIDAsIFsxPDwxMjhdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRhZmZpbml0eSwgLTEsIG1hc2spCisKKyAgICBkZWYgdGVzdF9ydGxkX2NvbnN0YW50cyhzZWxmKToKKyAgICAgICAgIyBjaGVjayBwcmVzZW5jZSBvZiBtYWpvciBSVExEXyogY29uc3RhbnRzCisgICAgICAgIHBvc2l4LlJUTERfTEFaWQorICAgICAgICBwb3NpeC5SVExEX05PVworICAgICAgICBwb3NpeC5SVExEX0dMT0JBTAorICAgICAgICBwb3NpeC5SVExEX0xPQ0FMCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnU0VFS19IT0xFJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgbmVlZHMgYW4gT1MgdGhhdCByZXBvcnRzIGZpbGUgaG9sZXMiKQorICAgIGRlZiB0ZXN0X2ZzX2hvbGVzKHNlbGYpOgorICAgICAgICAjIEV2ZW4gaWYgdGhlIGZpbGVzeXN0ZW0gZG9lc24ndCByZXBvcnQgaG9sZXMsCisgICAgICAgICMgaWYgdGhlIE9TIHN1cHBvcnRzIGl0IHRoZSBTRUVLXyogY29uc3RhbnRzCisgICAgICAgICMgd2lsbCBiZSBkZWZpbmVkIGFuZCB3aWxsIGhhdmUgYSBjb25zaXN0ZW50CisgICAgICAgICMgYmVoYXZpb3VyOgorICAgICAgICAjIG9zLlNFRUtfREFUQSA9IGN1cnJlbnQgcG9zaXRpb24KKyAgICAgICAgIyBvcy5TRUVLX0hPTEUgPSBlbmQgb2YgZmlsZSBwb3NpdGlvbgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICdyK2InKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlKGIiaGVsbG8iKQorICAgICAgICAgICAgZnAuZmx1c2goKQorICAgICAgICAgICAgc2l6ZSA9IGZwLnRlbGwoKQorICAgICAgICAgICAgZm5vID0gZnAuZmlsZW5vKCkKKyAgICAgICAgICAgIHRyeSA6CisgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc2l6ZSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSwgb3MubHNlZWsoZm5vLCBpLCBvcy5TRUVLX0RBVEEpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChzaXplLCBvcy5sc2Vlayhmbm8sIGksIG9zLlNFRUtfSE9MRSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MubHNlZWssIGZubywgc2l6ZSwgb3MuU0VFS19EQVRBKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLmxzZWVrLCBmbm8sIHNpemUsIG9zLlNFRUtfSE9MRSkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIDoKKyAgICAgICAgICAgICAgICAjIFNvbWUgT1NzIGNsYWltIHRvIHN1cHBvcnQgU0VFS19IT0xFL1NFRUtfREFUQQorICAgICAgICAgICAgICAgICMgYnV0IGl0IGlzIG5vdCB0cnVlLgorICAgICAgICAgICAgICAgICMgRm9yIGluc3RhbmNlOgorICAgICAgICAgICAgICAgICMgaHR0cDovL2xpc3RzLmZyZWVic2Qub3JnL3BpcGVybWFpbC9mcmVlYnNkLWFtZDY0LzIwMTItSmFudWFyeS8wMTQzMzIuaHRtbAorICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJPU0Vycm9yIHJhaXNlZCEiKQorCiBjbGFzcyBQb3NpeEdyb3Vwc1Rlc3Rlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC01MzMsOSArMTExMCwxMSBAQAogICAgICAgICAgICAgcG9zaXguc2V0Z3JvdXBzKGdyb3VwcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGdyb3VwcywgcG9zaXguZ2V0Z3JvdXBzKCkpCiAKLQogZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBvc2l4VGVzdGVyLCBQb3NpeEdyb3Vwc1Rlc3RlcikKKyAgICB0cnk6CisgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBvc2l4VGVzdGVyLCBQb3NpeEdyb3Vwc1Rlc3RlcikKKyAgICBmaW5hbGx5OgorICAgICAgICBzdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CmluZGV4IDI2MmUwOWQuLjcyNGM1MzAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CkBAIC0xLDExICsxLDExIEBACi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgdGVzdF9nZW5lcmljcGF0aAotCiBpbXBvcnQgaXRlcnRvb2xzCi1pbXBvcnQgcG9zaXhwYXRoCiBpbXBvcnQgb3MKK2ltcG9ydCBwb3NpeHBhdGgKIGltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIHBvc2l4cGF0aCBpbXBvcnQgcmVhbHBhdGgsIGFic3BhdGgsIGRpcm5hbWUsIGJhc2VuYW1lCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHRlc3RfZ2VuZXJpY3BhdGgKIAogdHJ5OgogICAgIGltcG9ydCBwb3NpeApAQCAtMjQ1LDcgKzI0NSw5IEBACiAKICAgICBkZWYgdGVzdF9pc21vdW50KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydElzKHBvc2l4cGF0aC5pc21vdW50KCIvIiksIFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMocG9zaXhwYXRoLmlzbW91bnQoYiIvIiksIFRydWUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhwb3NpeHBhdGguaXNtb3VudChiIi8iKSwgVHJ1ZSkKIAogICAgIGRlZiB0ZXN0X2lzbW91bnRfbm9uX2V4aXN0ZW50KHNlbGYpOgogICAgICAgICAjIE5vbi1leGlzdGVudCBtb3VudHBvaW50LgpAQCAtNTk4LDE0ICs2MDAsMTAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeHBhdGguc2FtZW9wZW5maWxlKGEuZmlsZW5vKCksIGIuZmlsZW5vKCkpKQogCiAKLWNsYXNzIFBvc2l4Q29tbW9uVGVzdCh0ZXN0X2dlbmVyaWNwYXRoLkNvbW1vblRlc3QpOgorY2xhc3MgUG9zaXhDb21tb25UZXN0KHRlc3RfZ2VuZXJpY3BhdGguQ29tbW9uVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHBhdGhtb2R1bGUgPSBwb3NpeHBhdGgKICAgICBhdHRyaWJ1dGVzID0gWydyZWxwYXRoJywgJ3NhbWVmaWxlJywgJ3NhbWVvcGVuZmlsZScsICdzYW1lc3RhdCddCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBvc2l4UGF0aFRlc3QsIFBvc2l4Q29tbW9uVGVzdCkKLQotCiBpZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wcHJpbnQucHkgYi9MaWIvdGVzdC90ZXN0X3BwcmludC5weQppbmRleCAwYzkzZDBlLi5kNDkyZDc1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BwcmludC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BwcmludC5weQpAQCAtMjE5LDYgKzIxOSw4IEBACiAgb3RoZXJzLnNob3VsZC5ub3QuYmU6IGxpa2UudGhpc30iIiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEb3R0ZWRQcmV0dHlQcmludGVyKCkucGZvcm1hdChvKSwgZXhwKQogCisgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgICNTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEzOTA3CiAgICAgQHRlc3Quc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zZXRfcmVwcnMoc2VsZik6CiAgICAgICAgICMgVGhpcyB0ZXN0IGNyZWF0ZXMgYSBjb21wbGV4IGFycmFuZ2VtZW50IG9mIGZyb3plbnNldHMgYW5kCkBAIC0yNDEsMTAgKzI0MywxMiBAQAogICAgICAgICAjIENvbnNlcXVlbnRseSwgdGhpcyB0ZXN0IGlzIGZyYWdpbGUgYW5kCiAgICAgICAgICMgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50LiAgU21hbGwgY2hhbmdlcyB0byBQeXRob24ncyBzb3J0CiAgICAgICAgICMgYWxnb3JpdGhtIGNhdXNlIHRoZSB0ZXN0IHRvIGZhaWwgd2hlbiBpdCBzaG91bGQgcGFzcy4KKyAgICAgICAgIyBYWFggT3IgY2hhbmdlcyB0byB0aGUgZGljdGlvbmFyeSBpbXBsbWVudGF0aW9uLi4uCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzZXQoKSksICdzZXQoKScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc2V0KHJhbmdlKDMpKSksICd7MCwgMSwgMn0nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGZyb3plbnNldCgpKSwgJ2Zyb3plbnNldCgpJykKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGZyb3plbnNldChyYW5nZSgzKSkpLCAnZnJvemVuc2V0KHswLCAxLCAyfSknKQogICAgICAgICBjdWJlX3JlcHJfdGd0ID0gIiIiXAoge2Zyb3plbnNldCgpOiBmcm96ZW5zZXQoe2Zyb3plbnNldCh7Mn0pLCBmcm96ZW5zZXQoezB9KSwgZnJvemVuc2V0KHsxfSl9KSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHJpbnQucHkgYi9MaWIvdGVzdC90ZXN0X3ByaW50LnB5CmluZGV4IDhkMzdiYmMuLjlkNmRiZWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHJpbnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wcmludC5weQpAQCAtMTExLDYgKzExMSwzMiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHByaW50LCAnJywgZW5kPTMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBwcmludCwgJycsIGZpbGU9JycpCiAKKyAgICBkZWYgdGVzdF9wcmludF9mbHVzaChzZWxmKToKKyAgICAgICAgIyBvcGVyYXRpb24gb2YgdGhlIGZsdXNoIGZsYWcKKyAgICAgICAgY2xhc3MgZmlsZWxpa2UoKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLndyaXR0ZW4gPSAnJworICAgICAgICAgICAgICAgIHNlbGYuZmx1c2hlZCA9IDAKKyAgICAgICAgICAgIGRlZiB3cml0ZShzZWxmLCBzdHIpOgorICAgICAgICAgICAgICAgIHNlbGYud3JpdHRlbiArPSBzdHIKKyAgICAgICAgICAgIGRlZiBmbHVzaChzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmZsdXNoZWQgKz0gMQorCisgICAgICAgIGYgPSBmaWxlbGlrZSgpCisgICAgICAgIHByaW50KDEsIGZpbGU9ZiwgZW5kPScnLCBmbHVzaD1UcnVlKQorICAgICAgICBwcmludCgyLCBmaWxlPWYsIGVuZD0nJywgZmx1c2g9VHJ1ZSkKKyAgICAgICAgcHJpbnQoMywgZmlsZT1mLCBmbHVzaD1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLndyaXR0ZW4sICcxMjNcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5mbHVzaGVkLCAyKQorCisgICAgICAgICMgZW5zdXJlIGV4Y2VwdGlvbnMgZnJvbSBmbHVzaCBhcmUgcGFzc2VkIHRocm91Z2gKKyAgICAgICAgY2xhc3Mgbm9mbHVzaCgpOgorICAgICAgICAgICAgZGVmIHdyaXRlKHNlbGYsIHN0cik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIGZsdXNoKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHByaW50LCAxLCBmaWxlPW5vZmx1c2goKSwgZmx1c2g9VHJ1ZSkKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RQcmludCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wcm9wZXJ0eS5weSBiL0xpYi90ZXN0L3Rlc3RfcHJvcGVydHkucHkKaW5kZXggYjU4MjcwZi4uOTZlZWI4OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wcm9wZXJ0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Byb3BlcnR5LnB5CkBAIC0xMjgsNiArMTI4LDI5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3Z2V0dGVyLnNwYW0sIDgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3Z2V0dGVyLl9fY2xhc3NfXy5zcGFtLl9fZG9jX18sICJuZXcgZG9jc3RyaW5nIikKIAorICAgIGRlZiB0ZXN0X3Byb3BlcnR5X19faXNhYnN0cmFjdG1ldGhvZF9fZGVzY3JpcHRvcihzZWxmKToKKyAgICAgICAgZm9yIHZhbCBpbiAoVHJ1ZSwgRmFsc2UsIFtdLCBbMV0sICcnLCAnMScpOgorICAgICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgorICAgICAgICAgICAgICAgIGRlZiBmb28oc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBmb28uX19pc2Fic3RyYWN0bWV0aG9kX18gPSB2YWwKKyAgICAgICAgICAgICAgICBmb28gPSBwcm9wZXJ0eShmb28pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEMuZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fLCBib29sKHZhbCkpCisKKyAgICAgICAgIyBjaGVjayB0aGF0IHRoZSBwcm9wZXJ0eSdzIF9faXNhYnN0cmFjdG1ldGhvZF9fIGRlc2NyaXB0b3IgZG9lcyB0aGUKKyAgICAgICAgIyByaWdodCB0aGluZyB3aGVuIHByZXNlbnRlZCB3aXRoIGEgdmFsdWUgdGhhdCBmYWlscyB0cnV0aCB0ZXN0aW5nOgorICAgICAgICBjbGFzcyBOb3RCb29sKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19ub256ZXJvX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigpCisgICAgICAgICAgICBfX2xlbl9fID0gX19ub256ZXJvX18KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKKyAgICAgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fID0gTm90Qm9vbCgpCisgICAgICAgICAgICAgICAgZm9vID0gcHJvcGVydHkoZm9vKQorICAgICAgICAgICAgQy5mb28uX19pc2Fic3RyYWN0bWV0aG9kX18KKwogCiAjIElzc3VlIDU4OTA6IHN1YmNsYXNzZXMgb2YgcHJvcGVydHkgZG8gbm90IHByZXNlcnZlIG1ldGhvZCBfX2RvY19fIHN0cmluZ3MKIGNsYXNzIFByb3BlcnR5U3ViKHByb3BlcnR5KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHR5LnB5IGIvTGliL3Rlc3QvdGVzdF9wdHkucHkKaW5kZXggNGQ0NzFkNS4uMjkyOTdmOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wdHkucHkKQEAgLTIwNSw2ICsyMDUsNyBAQAogICAgICAgICBzZWxmLm9yaWdfc3Rkb3V0X2ZpbGVubyA9IHB0eS5TVERPVVRfRklMRU5PCiAgICAgICAgIHNlbGYub3JpZ19wdHlfc2VsZWN0ID0gcHR5LnNlbGVjdAogICAgICAgICBzZWxmLmZkcyA9IFtdICAjIEEgbGlzdCBvZiBmaWxlIGRlc2NyaXB0b3JzIHRvIGNsb3NlLgorICAgICAgICBzZWxmLmZpbGVzID0gW10KICAgICAgICAgc2VsZi5zZWxlY3RfcmZkc19sZW5ndGhzID0gW10KICAgICAgICAgc2VsZi5zZWxlY3RfcmZkc19yZXN1bHRzID0gW10KIApAQCAtMjEyLDYgKzIxMywxMSBAQAogICAgICAgICBwdHkuU1RESU5fRklMRU5PID0gc2VsZi5vcmlnX3N0ZGluX2ZpbGVubwogICAgICAgICBwdHkuU1RET1VUX0ZJTEVOTyA9IHNlbGYub3JpZ19zdGRvdXRfZmlsZW5vCiAgICAgICAgIHB0eS5zZWxlY3QgPSBzZWxmLm9yaWdfcHR5X3NlbGVjdAorICAgICAgICBmb3IgZmlsZSBpbiBzZWxmLmZpbGVzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBmb3IgZmQgaW4gc2VsZi5mZHM6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZmQpCkBAIC0yMjMsNiArMjI5LDExIEBACiAgICAgICAgIHNlbGYuZmRzLmV4dGVuZChwaXBlX2ZkcykKICAgICAgICAgcmV0dXJuIHBpcGVfZmRzCiAKKyAgICBkZWYgX3NvY2tldHBhaXIoc2VsZik6CisgICAgICAgIHNvY2tldHBhaXIgPSBzb2NrZXQuc29ja2V0cGFpcigpCisgICAgICAgIHNlbGYuZmlsZXMuZXh0ZW5kKHNvY2tldHBhaXIpCisgICAgICAgIHJldHVybiBzb2NrZXRwYWlyCisKICAgICBkZWYgX21vY2tfc2VsZWN0KHNlbGYsIHJmZHMsIHdmZHMsIHhmZHMpOgogICAgICAgICAjIFRoaXMgd2lsbCByYWlzZSBJbmRleEVycm9yIHdoZW4gbm8gbW9yZSBleHBlY3RlZCBjYWxscyBleGlzdC4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlbGVjdF9yZmRzX2xlbmd0aHMucG9wKDApLCBsZW4ocmZkcykpCkBAIC0yMzQsOSArMjQ1LDcgQEAKICAgICAgICAgcHR5LlNURE9VVF9GSUxFTk8gPSBtb2NrX3N0ZG91dF9mZAogICAgICAgICBtb2NrX3N0ZGluX2ZkLCB3cml0ZV90b19zdGRpbl9mZCA9IHNlbGYuX3BpcGUoKQogICAgICAgICBwdHkuU1RESU5fRklMRU5PID0gbW9ja19zdGRpbl9mZAotICAgICAgICBzb2NrZXRwYWlyID0gc29ja2V0LnNvY2tldHBhaXIoKQotICAgICAgICBmb3IgcyBpbiBzb2NrZXRwYWlyOgotICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCisgICAgICAgIHNvY2tldHBhaXIgPSBzZWxmLl9zb2NrZXRwYWlyKCkKICAgICAgICAgbWFzdGVycyA9IFtzLmZpbGVubygpIGZvciBzIGluIHNvY2tldHBhaXJdCiAKICAgICAgICAgIyBGZWVkIGRhdGEuICBTbWFsbGVyIHRoYW4gUElQRUJVRi4gIFRoZXNlIHdyaXRlcyB3aWxsIG5vdCBibG9jay4KQEAgLTI2NCw5ICsyNzMsNyBAQAogICAgICAgICBwdHkuU1RET1VUX0ZJTEVOTyA9IG1vY2tfc3Rkb3V0X2ZkCiAgICAgICAgIG1vY2tfc3RkaW5fZmQsIHdyaXRlX3RvX3N0ZGluX2ZkID0gc2VsZi5fcGlwZSgpCiAgICAgICAgIHB0eS5TVERJTl9GSUxFTk8gPSBtb2NrX3N0ZGluX2ZkCi0gICAgICAgIHNvY2tldHBhaXIgPSBzb2NrZXQuc29ja2V0cGFpcigpCi0gICAgICAgIGZvciBzIGluIHNvY2tldHBhaXI6Ci0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgc29ja2V0cGFpciA9IHNlbGYuX3NvY2tldHBhaXIoKQogICAgICAgICBtYXN0ZXJzID0gW3MuZmlsZW5vKCkgZm9yIHMgaW4gc29ja2V0cGFpcl0KIAogICAgICAgICBvcy5jbG9zZShtYXN0ZXJzWzFdKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5IGIvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MWE1OTUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3B1bGxkb20ucHkKQEAgLTAsMCArMSwzNDcgQEAKK2ltcG9ydCBpbworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3lzCitpbXBvcnQgeG1sLnNheAorCitmcm9tIHhtbC5zYXgueG1scmVhZGVyIGltcG9ydCBBdHRyaWJ1dGVzSW1wbAorZnJvbSB4bWwuZG9tIGltcG9ydCBwdWxsZG9tCisKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGZpbmRmaWxlCisKKwordHN0ZmlsZSA9IGZpbmRmaWxlKCJ0ZXN0LnhtbCIsIHN1YmRpcj0ieG1sdGVzdGRhdGEiKQorCisjIEEgaGFuZHkgWE1MIHNuaXBwZXQsIGNvbnRhaW5pbmcgYXR0cmlidXRlcywgYSBuYW1lc3BhY2UgcHJlZml4LCBhbmQgYQorIyBzZWxmLWNsb3NpbmcgdGFnOgorU01BTExfU0FNUExFID0gIiIiPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6eGRjPSJodHRwOi8vd3d3LnhtbC5jb20vYm9va3MiPgorPCEtLSBBIGNvbW1lbnQgLS0+Cis8dGl0bGU+SW50cm9kdWN0aW9uIHRvIFhTTDwvdGl0bGU+Cis8aHIvPgorPHA+PHhkYzphdXRob3IgeGRjOmF0dHJpYj0icHJlZml4ZWQgYXR0cmlidXRlIiBhdHRyaWI9Im90aGVyIGF0dHJpYiI+QS4gTmFtZXNwYWNlPC94ZGM6YXV0aG9yPjwvcD4KKzwvaHRtbD4iIiIKKworCitjbGFzcyBQdWxsRE9NVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfcGFyc2Uoc2VsZik6CisgICAgICAgICIiIk1pbmltYWwgdGVzdCBvZiBET01FdmVudFN0cmVhbS5wYXJzZSgpIiIiCisKKyAgICAgICAgIyBUaGlzIGp1c3QgdGVzdHMgdGhhdCBwYXJzaW5nIGZyb20gYSBzdHJlYW0gd29ya3MuIEFjdHVhbCBwYXJzZXIKKyAgICAgICAgIyBzZW1hbnRpY3MgYXJlIHRlc3RlZCB1c2luZyBwYXJzZVN0cmluZyB3aXRoIGEgbW9yZSBmb2N1c2VkIFhNTAorICAgICAgICAjIGZyYWdtZW50LgorCisgICAgICAgICMgVGVzdCB3aXRoIGEgZmlsZW5hbWU6CisgICAgICAgIGhhbmRsZXIgPSBwdWxsZG9tLnBhcnNlKHRzdGZpbGUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChoYW5kbGVyLnN0cmVhbS5jbG9zZSkKKyAgICAgICAgbGlzdChoYW5kbGVyKQorCisgICAgICAgICMgVGVzdCB3aXRoIGEgZmlsZSBvYmplY3Q6CisgICAgICAgIHdpdGggb3Blbih0c3RmaWxlLCAicmIiKSBhcyBmaW46CisgICAgICAgICAgICBsaXN0KHB1bGxkb20ucGFyc2UoZmluKSkKKworICAgIGRlZiB0ZXN0X3BhcnNlX3NlbWFudGljcyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBET01FdmVudFN0cmVhbSBwYXJzaW5nIHNlbWFudGljcy4iIiIKKworICAgICAgICBpdGVtcyA9IHB1bGxkb20ucGFyc2VTdHJpbmcoU01BTExfU0FNUExFKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICAjIEp1c3QgY2hlY2sgdGhlIG5vZGUgaXMgYSBEb2N1bWVudDoKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobm9kZSwgImNyZWF0ZUVsZW1lbnQiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLlNUQVJUX0RPQ1VNRU5ULCBldnQpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5TVEFSVF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImh0bWwiLCBub2RlLnRhZ05hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKG5vZGUuYXR0cmlidXRlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9kZS5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgieG1sbnM6eGRjIikudmFsdWUsCisgICAgICAgICAgICAgICJodHRwOi8vd3d3LnhtbC5jb20vYm9va3MiKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ0hBUkFDVEVSUywgZXZ0KSAjIExpbmUgYnJlYWsKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgIyBYWFggLSBBIGNvbW1lbnQgc2hvdWxkIGJlIHJlcG9ydGVkIGhlcmUhCisgICAgICAgICMgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNPTU1FTlQsIGV2dCkKKyAgICAgICAgIyBMaW5lIGJyZWFrIGFmdGVyIHN3YWxsb3dlZCBjb21tZW50OgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ0hBUkFDVEVSUywgZXZ0KQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0aXRsZSIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgdGl0bGVfbm9kZSA9IG5vZGUKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNIQVJBQ1RFUlMsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiSW50cm9kdWN0aW9uIHRvIFhTTCIsIG5vZGUuZGF0YSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkVORF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRpdGxlIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGl0bGVfbm9kZSBpcyBub2RlKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ0hBUkFDVEVSUywgZXZ0KQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uU1RBUlRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJociIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkVORF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImhyIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ0hBUkFDVEVSUywgZXZ0KQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uU1RBUlRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJwIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uU1RBUlRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ4ZGM6YXV0aG9yIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ0hBUkFDVEVSUywgZXZ0KQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uRU5EX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgieGRjOmF1dGhvciIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkVORF9FTEVNRU5ULCBldnQpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5DSEFSQUNURVJTLCBldnQpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRUxFTUVOVCwgZXZ0KQorICAgICAgICAjIFhYWCBObyBFTkRfRE9DVU1FTlQgaXRlbSBpcyBldmVyIG9idGFpbmVkOgorICAgICAgICAjZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgI3NlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRE9DVU1FTlQsIGV2dCkKKworICAgIGRlZiB0ZXN0X2V4cGFuZEl0ZW0oc2VsZik6CisgICAgICAgICIiIkVuc3VyZSBleHBhbmRJdGVtIHdvcmtzIGFzIGV4cGVjdGVkLiIiIgorICAgICAgICBpdGVtcyA9IHB1bGxkb20ucGFyc2VTdHJpbmcoU01BTExfU0FNUExFKQorICAgICAgICAjIExvb3AgdGhyb3VnaCB0aGUgbm9kZXMgdW50aWwgd2UgZ2V0IHRvIGEgInRpdGxlIiBzdGFydCB0YWc6CisgICAgICAgIGZvciBldnQsIGl0ZW0gaW4gaXRlbXM6CisgICAgICAgICAgICBpZiBldnQgPT0gcHVsbGRvbS5TVEFSVF9FTEVNRU5UIGFuZCBpdGVtLnRhZ05hbWUgPT0gInRpdGxlIjoKKyAgICAgICAgICAgICAgICBpdGVtcy5leHBhbmROb2RlKGl0ZW0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oaXRlbS5jaGlsZE5vZGVzKSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBcInRpdGxlXCIgZWxlbWVudCBkZXRlY3RlZCBpbiBTTUFMTF9TQU1QTEUhIikKKyAgICAgICAgIyBMb29wIHVudGlsIHdlIGdldCB0byB0aGUgbmV4dCBzdGFydC1lbGVtZW50OgorICAgICAgICBmb3IgZXZ0LCBub2RlIGluIGl0ZW1zOgorICAgICAgICAgICAgaWYgZXZ0ID09IHB1bGxkb20uU1RBUlRfRUxFTUVOVDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJociIsIG5vZGUudGFnTmFtZSwKKyAgICAgICAgICAgICJleHBhbmROb2RlIGRpZCBub3QgbGVhdmUgRE9NRXZlbnRTdHJlYW0gaW4gdGhlIGNvcnJlY3Qgc3RhdGUuIikKKyAgICAgICAgIyBBdHRlbXB0IHRvIGV4cGFuZCBhIHN0YW5kYWxvbmUgZWxlbWVudDoKKyAgICAgICAgaXRlbXMuZXhwYW5kTm9kZShub2RlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlbXMpWzBdLCBwdWxsZG9tLkNIQVJBQ1RFUlMpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9kZS50YWdOYW1lLCAicCIpCisgICAgICAgIGl0ZW1zLmV4cGFuZE5vZGUobm9kZSkKKyAgICAgICAgbmV4dChpdGVtcykgIyBTa2lwIGNoYXJhY3RlciBkYXRhCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9kZS50YWdOYW1lLCAiaHRtbCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbik6CisgICAgICAgICAgICBuZXh0KGl0ZW1zKQorICAgICAgICBpdGVtcy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGl0ZW1zLnBhcnNlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoaXRlbXMuc3RyZWFtKQorCisgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgIGRlZiB0ZXN0X2NvbW1lbnQoc2VsZik6CisgICAgICAgICIiIlB1bGxET00gZG9lcyBub3QgcmVjZWl2ZSAiY29tbWVudCIgZXZlbnRzLiIiIgorICAgICAgICBpdGVtcyA9IHB1bGxkb20ucGFyc2VTdHJpbmcoU01BTExfU0FNUExFKQorICAgICAgICBmb3IgZXZ0LCBfIGluIGl0ZW1zOgorICAgICAgICAgICAgaWYgZXZ0ID09IHB1bGxkb20uQ09NTUVOVDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBjb21tZW50IHdhcyBlbmNvdW50ZXJlZCIpCisKKyAgICBAdW5pdHRlc3QuZXhwZWN0ZWRGYWlsdXJlCisgICAgZGVmIHRlc3RfZW5kX2RvY3VtZW50KHNlbGYpOgorICAgICAgICAiIiJQdWxsRE9NIGRvZXMgbm90IHJlY2VpdmUgImVuZC1kb2N1bWVudCIgZXZlbnRzLiIiIgorICAgICAgICBpdGVtcyA9IHB1bGxkb20ucGFyc2VTdHJpbmcoU01BTExfU0FNUExFKQorICAgICAgICAjIFJlYWQgYWxsIG9mIHRoZSBub2RlcyB1cCB0byBhbmQgaW5jbHVkaW5nIDwvaHRtbD46CisgICAgICAgIGZvciBldnQsIG5vZGUgaW4gaXRlbXM6CisgICAgICAgICAgICBpZiBldnQgPT0gcHVsbGRvbS5FTkRfRUxFTUVOVCBhbmQgbm9kZS50YWdOYW1lID09ICJodG1sIjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICB0cnk6CisgICAgICAgICAgICAjIEFzc2VydCB0aGF0IHRoZSBuZXh0IG5vZGUgaXMgRU5EX0RPQ1VNRU5UOgorICAgICAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRE9DVU1FTlQsIGV2dCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBzZWxmLmZhaWwoCisgICAgICAgICAgICAgICAgIlJhbiBvdXQgb2YgZXZlbnRzLCBidXQgc2hvdWxkIGhhdmUgcmVjZWl2ZWQgRU5EX0RPQ1VNRU5UIikKKworCitjbGFzcyBUaG9yb3VnaFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRoZSBoYXJkLXRvLXJlYWNoIHBhcnRzIG9mIHB1bGxkb20uIiIiCisKKyAgICBkZWYgdGVzdF90aG9yb3VnaF9wYXJzZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBzb21lIG9mIHRoZSBoYXJkLXRvLXJlYWNoIHBhcnRzIG9mIFB1bGxET00uIiIiCisgICAgICAgIHNlbGYuX3Rlc3RfdGhvcm91Z2gocHVsbGRvbS5wYXJzZShOb25lLCBwYXJzZXI9U0FYRXhlcmNpc2VyKCkpKQorCisgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgIGRlZiB0ZXN0X3NheDJkb21fZmFpbChzZWxmKToKKyAgICAgICAgIiIiU0FYMkRPTSBjYW4idCBoYW5kbGUgYSBQSSBiZWZvcmUgdGhlIHJvb3QgZWxlbWVudC4iIiIKKyAgICAgICAgcGQgPSBTQVgyRE9NVGVzdEhlbHBlcihOb25lLCBTQVhFeGVyY2lzZXIoKSwgMTIpCisgICAgICAgIHNlbGYuX3Rlc3RfdGhvcm91Z2gocGQpCisKKyAgICBkZWYgdGVzdF90aG9yb3VnaF9zYXgyZG9tKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHNvbWUgb2YgdGhlIGhhcmQtdG8tcmVhY2ggcGFydHMgb2YgU0FYMkRPTS4iIiIKKyAgICAgICAgcGQgPSBTQVgyRE9NVGVzdEhlbHBlcihOb25lLCBTQVgyRE9NRXhlcmNpc2VyKCksIDEyKQorICAgICAgICBzZWxmLl90ZXN0X3Rob3JvdWdoKHBkLCBGYWxzZSkKKworICAgIGRlZiBfdGVzdF90aG9yb3VnaChzZWxmLCBwZCwgYmVmb3JlX3Jvb3Q9VHJ1ZSk6CisgICAgICAgICIiIlRlc3Qgc29tZSBvZiB0aGUgaGFyZC10by1yZWFjaCBwYXJ0cyBvZiB0aGUgcGFyc2VyLCB1c2luZyBhIG1vY2sKKyAgICAgICAgcGFyc2VyLiIiIgorCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5TVEFSVF9ET0NVTUVOVCwgZXZ0KQorICAgICAgICAjIEp1c3QgY2hlY2sgdGhlIG5vZGUgaXMgYSBEb2N1bWVudDoKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobm9kZSwgImNyZWF0ZUVsZW1lbnQiKSkKKworICAgICAgICBpZiBiZWZvcmVfcm9vdDoKKyAgICAgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ09NTUVOVCwgZXZ0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYSBjb21tZW50Iiwgbm9kZS5kYXRhKQorICAgICAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OLCBldnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0YXJnZXQiLCBub2RlLnRhcmdldCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImRhdGEiLCBub2RlLmRhdGEpCisKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLlNUQVJUX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiaHRtbCIsIG5vZGUudGFnTmFtZSkKKworICAgICAgICBldnQsIG5vZGUgPSBuZXh0KHBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ09NTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJhIGNvbW1lbnQiLCBub2RlLmRhdGEpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OLCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRhcmdldCIsIG5vZGUudGFyZ2V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJkYXRhIiwgbm9kZS5kYXRhKQorCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5TVEFSVF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInAiLCBub2RlLnRhZ05hbWUpCisKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNIQVJBQ1RFUlMsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGV4dCIsIG5vZGUuZGF0YSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkVORF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInAiLCBub2RlLnRhZ05hbWUpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJodG1sIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KHBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uRU5EX0RPQ1VNRU5ULCBldnQpCisKKworY2xhc3MgU0FYRXhlcmNpc2VyKG9iamVjdCk6CisgICAgIiIiQSBmYWtlIHNheCBwYXJzZXIgdGhhdCBjYWxscyBzb21lIG9mIHRoZSBoYXJkZXItdG8tcmVhY2ggc2F4IG1ldGhvZHMgdG8KKyAgICBlbnN1cmUgaXQgZW1pdHMgdGhlIGNvcnJlY3QgZXZlbnRzIiIiCisKKyAgICBkZWYgc2V0Q29udGVudEhhbmRsZXIoc2VsZiwgaGFuZGxlcik6CisgICAgICAgIHNlbGYuX2hhbmRsZXIgPSBoYW5kbGVyCisKKyAgICBkZWYgcGFyc2Uoc2VsZiwgXyk6CisgICAgICAgIGggPSBzZWxmLl9oYW5kbGVyCisgICAgICAgIGguc3RhcnREb2N1bWVudCgpCisKKyAgICAgICAgIyBUaGUgbmV4dCB0d28gaXRlbXMgZW5zdXJlIHRoYXQgaXRlbXMgcHJlY2VkaW5nIHRoZSBmaXJzdAorICAgICAgICAjIHN0YXJ0X2VsZW1lbnQgYXJlIHByb3Blcmx5IHN0b3JlZCBhbmQgZW1pdHRlZDoKKyAgICAgICAgaC5jb21tZW50KCJhIGNvbW1lbnQiKQorICAgICAgICBoLnByb2Nlc3NpbmdJbnN0cnVjdGlvbigidGFyZ2V0IiwgImRhdGEiKQorCisgICAgICAgIGguc3RhcnRFbGVtZW50KCJodG1sIiwgQXR0cmlidXRlc0ltcGwoe30pKQorCisgICAgICAgIGguY29tbWVudCgiYSBjb21tZW50IikKKyAgICAgICAgaC5wcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oInRhcmdldCIsICJkYXRhIikKKworICAgICAgICBoLnN0YXJ0RWxlbWVudCgicCIsIEF0dHJpYnV0ZXNJbXBsKHsiY2xhc3MiOiAicGFyYWNsYXNzIn0pKQorICAgICAgICBoLmNoYXJhY3RlcnMoInRleHQiKQorICAgICAgICBoLmVuZEVsZW1lbnQoInAiKQorICAgICAgICBoLmVuZEVsZW1lbnQoImh0bWwiKQorICAgICAgICBoLmVuZERvY3VtZW50KCkKKworICAgIGRlZiBzdHViKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICIiIlN0dWIgbWV0aG9kLiBEb2VzIG5vdGhpbmcuIiIiCisgICAgICAgIHBhc3MKKyAgICBzZXRQcm9wZXJ0eSA9IHN0dWIKKyAgICBzZXRGZWF0dXJlID0gc3R1YgorCisKK2NsYXNzIFNBWDJET01FeGVyY2lzZXIoU0FYRXhlcmNpc2VyKToKKyAgICAiIiJUaGUgc2FtZSBhcyBTQVhFeGVyY2lzZXIsIGJ1dCB3aXRob3V0IHRoZSBwcm9jZXNzaW5nIGluc3RydWN0aW9uIGFuZAorICAgIGNvbW1lbnQgYmVmb3JlIHRoZSByb290IGVsZW1lbnQsIGJlY2F1c2UgUzJEIGNhbiJ0IGhhbmRsZSBpdCIiIgorCisgICAgZGVmIHBhcnNlKHNlbGYsIF8pOgorICAgICAgICBoID0gc2VsZi5faGFuZGxlcgorICAgICAgICBoLnN0YXJ0RG9jdW1lbnQoKQorICAgICAgICBoLnN0YXJ0RWxlbWVudCgiaHRtbCIsIEF0dHJpYnV0ZXNJbXBsKHt9KSkKKyAgICAgICAgaC5jb21tZW50KCJhIGNvbW1lbnQiKQorICAgICAgICBoLnByb2Nlc3NpbmdJbnN0cnVjdGlvbigidGFyZ2V0IiwgImRhdGEiKQorICAgICAgICBoLnN0YXJ0RWxlbWVudCgicCIsIEF0dHJpYnV0ZXNJbXBsKHsiY2xhc3MiOiAicGFyYWNsYXNzIn0pKQorICAgICAgICBoLmNoYXJhY3RlcnMoInRleHQiKQorICAgICAgICBoLmVuZEVsZW1lbnQoInAiKQorICAgICAgICBoLmVuZEVsZW1lbnQoImh0bWwiKQorICAgICAgICBoLmVuZERvY3VtZW50KCkKKworCitjbGFzcyBTQVgyRE9NVGVzdEhlbHBlcihwdWxsZG9tLkRPTUV2ZW50U3RyZWFtKToKKyAgICAiIiJBbGxvd3MgdXMgdG8gZHJpdmUgU0FYMkRPTSBmcm9tIGEgRE9NRXZlbnRTdHJlYW0uIiIiCisKKyAgICBkZWYgcmVzZXQoc2VsZik6CisgICAgICAgIHNlbGYucHVsbGRvbSA9IHB1bGxkb20uU0FYMkRPTSgpCisgICAgICAgICMgVGhpcyBjb250ZW50IGhhbmRsZXIgcmVsaWVzIG9uIG5hbWVzcGFjZSBzdXBwb3J0CisgICAgICAgIHNlbGYucGFyc2VyLnNldEZlYXR1cmUoeG1sLnNheC5oYW5kbGVyLmZlYXR1cmVfbmFtZXNwYWNlcywgMSkKKyAgICAgICAgc2VsZi5wYXJzZXIuc2V0Q29udGVudEhhbmRsZXIoc2VsZi5wdWxsZG9tKQorCisKK2NsYXNzIFNBWDJET01UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgY29uZmlybShzZWxmLCB0ZXN0LCB0ZXN0bmFtZT0iVGVzdCIpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUodGVzdCwgdGVzdG5hbWUpCisKKyAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgIiIiRW5zdXJlIFNBWDJET00gY2FuIHBhcnNlIGZyb20gYSBzdHJlYW0uIiIiCisgICAgICAgIHdpdGggaW8uU3RyaW5nSU8oU01BTExfU0FNUExFKSBhcyBmaW46CisgICAgICAgICAgICBzZCA9IFNBWDJET01UZXN0SGVscGVyKGZpbiwgeG1sLnNheC5tYWtlX3BhcnNlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oU01BTExfU0FNUExFKSkKKyAgICAgICAgICAgIGZvciBldnQsIG5vZGUgaW4gc2Q6CisgICAgICAgICAgICAgICAgaWYgZXZ0ID09IHB1bGxkb20uU1RBUlRfRUxFTUVOVCBhbmQgbm9kZS50YWdOYW1lID09ICJodG1sIjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICMgQmVjYXVzZSB0aGUgYnVmZmVyIGlzIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgWE1MLCBhbGwgdGhlCisgICAgICAgICAgICAjIG5vZGVzIHNob3VsZCBoYXZlIGJlZW4gcGFyc2VkIGFuZCBhZGRlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4obm9kZS5jaGlsZE5vZGVzKSwgMCkKKworICAgIGRlZiB0ZXN0U0FYMkRPTShzZWxmKToKKyAgICAgICAgIiIiRW5zdXJlIFNBWDJET00gZXhwYW5kcyBub2RlcyBhcyBleHBlY3RlZC4iIiIKKyAgICAgICAgc2F4MmRvbSA9IHB1bGxkb20uU0FYMkRPTSgpCisgICAgICAgIHNheDJkb20uc3RhcnREb2N1bWVudCgpCisgICAgICAgIHNheDJkb20uc3RhcnRFbGVtZW50KCJkb2MiLCB7fSkKKyAgICAgICAgc2F4MmRvbS5jaGFyYWN0ZXJzKCJ0ZXh0IikKKyAgICAgICAgc2F4MmRvbS5zdGFydEVsZW1lbnQoInN1YmVsbSIsIHt9KQorICAgICAgICBzYXgyZG9tLmNoYXJhY3RlcnMoInRleHQiKQorICAgICAgICBzYXgyZG9tLmVuZEVsZW1lbnQoInN1YmVsbSIpCisgICAgICAgIHNheDJkb20uY2hhcmFjdGVycygidGV4dCIpCisgICAgICAgIHNheDJkb20uZW5kRWxlbWVudCgiZG9jIikKKyAgICAgICAgc2F4MmRvbS5lbmREb2N1bWVudCgpCisKKyAgICAgICAgZG9jID0gc2F4MmRvbS5kb2N1bWVudAorICAgICAgICByb290ID0gZG9jLmRvY3VtZW50RWxlbWVudAorICAgICAgICAodGV4dDEsIGVsbTEsIHRleHQyKSA9IHJvb3QuY2hpbGROb2RlcworICAgICAgICB0ZXh0MyA9IGVsbTEuY2hpbGROb2Rlc1swXQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHRleHQxLnByZXZpb3VzU2libGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0ZXh0MS5uZXh0U2libGluZywgZWxtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhlbG0xLnByZXZpb3VzU2libGluZywgdGV4dDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZWxtMS5uZXh0U2libGluZywgdGV4dDIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGV4dDIucHJldmlvdXNTaWJsaW5nLCBlbG0xKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh0ZXh0Mi5uZXh0U2libGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodGV4dDMucHJldmlvdXNTaWJsaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh0ZXh0My5uZXh0U2libGluZykKKworICAgICAgICBzZWxmLmFzc2VydElzKHJvb3QucGFyZW50Tm9kZSwgZG9jKQorICAgICAgICBzZWxmLmFzc2VydElzKHRleHQxLnBhcmVudE5vZGUsIHJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZWxtMS5wYXJlbnROb2RlLCByb290KQorICAgICAgICBzZWxmLmFzc2VydElzKHRleHQyLnBhcmVudE5vZGUsIHJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGV4dDMucGFyZW50Tm9kZSwgZWxtMSkKKyAgICAgICAgZG9jLnVubGluaygpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdChQdWxsRE9NVGVzdENhc2UsIFRob3JvdWdoVGVzdENhc2UsIFNBWDJET01UZXN0Q2FzZSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5IGIvTGliL3Rlc3QvdGVzdF9weWRvYy5weQppbmRleCBjNzMxOGZmLi5kOThhNTI2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkKQEAgLTIwNyw3ICsyMDcsNyBAQAogbWlzc2luZ19wYXR0ZXJuID0gIm5vIFB5dGhvbiBkb2N1bWVudGF0aW9uIGZvdW5kIGZvciAnJXMnIgogCiAjIG91dHB1dCBwYXR0ZXJuIGZvciBtb2R1bGUgd2l0aCBiYWQgaW1wb3J0cwotYmFkaW1wb3J0X3BhdHRlcm4gPSAicHJvYmxlbSBpbiAlcyAtIEltcG9ydEVycm9yOiBObyBtb2R1bGUgbmFtZWQgJXMiCitiYWRpbXBvcnRfcGF0dGVybiA9ICJwcm9ibGVtIGluICVzIC0gSW1wb3J0RXJyb3I6IE5vIG1vZHVsZSBuYW1lZCAlciIKIAogZGVmIHJ1bl9weWRvYyhtb2R1bGVfbmFtZSwgKmFyZ3MsICoqZW52KToKICAgICAiIiIKQEAgLTI0NSw4ICsyNDUsOCBAQAogZGVmIHByaW50X2RpZmZzKHRleHQxLCB0ZXh0Mik6CiAgICAgIlByaW50cyB1bmlmaWVkIGRpZmZzIGZvciB0d28gdGV4dHMiCiAgICAgIyBYWFggbm93IG9ic29sZXRlLCB1c2UgdW5pdHRlc3QgYnVpbHQtaW4gc3VwcG9ydAotICAgIGxpbmVzMSA9IHRleHQxLnNwbGl0bGluZXMoVHJ1ZSkKLSAgICBsaW5lczIgPSB0ZXh0Mi5zcGxpdGxpbmVzKFRydWUpCisgICAgbGluZXMxID0gdGV4dDEuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQorICAgIGxpbmVzMiA9IHRleHQyLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKICAgICBkaWZmcyA9IGRpZmZsaWIudW5pZmllZF9kaWZmKGxpbmVzMSwgbGluZXMyLCBuPTAsIGZyb21maWxlPSdleHBlY3RlZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2ZpbGU9J2dvdCcpCiAgICAgcHJpbnQoJ1xuJyArICcnLmpvaW4oZGlmZnMpKQpAQCAtMjYzLDYgKzI2Myw4IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAogICAgICAgICAgICAgICAgICAgICAgIkRvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtTzIgYW5kIGFib3ZlIikKKyAgICBAdW5pdHRlc3Quc2tpcElmKGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCksCisgICAgICAgICAgICAgICAgICAgICAndHJhY2UgZnVuY3Rpb24gaW50cm9kdWNlcyBfX2xvY2Fsc19fIHVuZXhwZWN0ZWRseScpCiAgICAgZGVmIHRlc3RfaHRtbF9kb2Moc2VsZik6CiAgICAgICAgIHJlc3VsdCwgZG9jX2xvYyA9IGdldF9weWRvY19odG1sKHB5ZG9jX21vZCkKICAgICAgICAgbW9kX2ZpbGUgPSBpbnNwZWN0LmdldGFic2ZpbGUocHlkb2NfbW9kKQpAQCAtMjgwLDYgKzI4Miw4IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAogICAgICAgICAgICAgICAgICAgICAgIkRvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtTzIgYW5kIGFib3ZlIikKKyAgICBAdW5pdHRlc3Quc2tpcElmKGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCksCisgICAgICAgICAgICAgICAgICAgICAndHJhY2UgZnVuY3Rpb24gaW50cm9kdWNlcyBfX2xvY2Fsc19fIHVuZXhwZWN0ZWRseScpCiAgICAgZGVmIHRlc3RfdGV4dF9kb2Moc2VsZik6CiAgICAgICAgIHJlc3VsdCwgZG9jX2xvYyA9IGdldF9weWRvY190ZXh0KHB5ZG9jX21vZCkKICAgICAgICAgZXhwZWN0ZWRfdGV4dCA9IGV4cGVjdGVkX3RleHRfcGF0dGVybiAlICgKQEAgLTMzNCw2ICszMzgsOCBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKICAgICAgICAgICAgICAgICAgICAgICdEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZScpCisgICAgQHVuaXR0ZXN0LnNraXBJZihoYXNhdHRyKHN5cywgJ2dldHRyYWNlJykgYW5kIHN5cy5nZXR0cmFjZSgpLAorICAgICAgICAgICAgICAgICAgICAgJ3RyYWNlIGZ1bmN0aW9uIGludHJvZHVjZXMgX19sb2NhbHNfXyB1bmV4cGVjdGVkbHknKQogICAgIGRlZiB0ZXN0X2hlbHBfb3V0cHV0X3JlZGlyZWN0KHNlbGYpOgogICAgICAgICAjIGlzc3VlIDk0MDI4NiwgaWYgb3V0cHV0IGlzIHNldCBpbiBIZWxwZXIsIHRoZW4gYWxsIG91dHB1dCBmcm9tCiAgICAgICAgICMgSGVscGVyLmhlbHAgc2hvdWxkIGJlIHJlZGlyZWN0ZWQKQEAgLTQwMywxMSArNDA5LDEwIEBACiAgICAgICAgIG1vZG5hbWUgPSAndGVzdG1vZF94eXp6eScKICAgICAgICAgdGVzdHBhaXJzID0gKAogICAgICAgICAgICAgKCdpX2FtX25vdF9oZXJlJywgJ2lfYW1fbm90X2hlcmUnKSwKLSAgICAgICAgICAgICgndGVzdC5pX2FtX25vdF9oZXJlX2VpdGhlcicsICdpX2FtX25vdF9oZXJlX2VpdGhlcicpLAotICAgICAgICAgICAgKCd0ZXN0LmlfYW1fbm90X2hlcmUubmVpdGhlcl9hbV9pJywgJ2lfYW1fbm90X2hlcmUubmVpdGhlcl9hbV9pJyksCi0gICAgICAgICAgICAoJ2lfYW1fbm90X2hlcmUue30nLmZvcm1hdChtb2RuYW1lKSwKLSAgICAgICAgICAgICAnaV9hbV9ub3RfaGVyZS57fScuZm9ybWF0KG1vZG5hbWUpKSwKLSAgICAgICAgICAgICgndGVzdC57fScuZm9ybWF0KG1vZG5hbWUpLCBtb2RuYW1lKSwKKyAgICAgICAgICAgICgndGVzdC5pX2FtX25vdF9oZXJlX2VpdGhlcicsICd0ZXN0LmlfYW1fbm90X2hlcmVfZWl0aGVyJyksCisgICAgICAgICAgICAoJ3Rlc3QuaV9hbV9ub3RfaGVyZS5uZWl0aGVyX2FtX2knLCAndGVzdC5pX2FtX25vdF9oZXJlJyksCisgICAgICAgICAgICAoJ2lfYW1fbm90X2hlcmUue30nLmZvcm1hdChtb2RuYW1lKSwgJ2lfYW1fbm90X2hlcmUnKSwKKyAgICAgICAgICAgICgndGVzdC57fScuZm9ybWF0KG1vZG5hbWUpLCAndGVzdC57fScuZm9ybWF0KG1vZG5hbWUpKSwKICAgICAgICAgICAgICkKIAogICAgICAgICBzb3VyY2VmbiA9IG9zLnBhdGguam9pbihURVNURk4sIG1vZG5hbWUpICsgb3MuZXh0c2VwICsgInB5IgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yYWlzZS5weSBiL0xpYi90ZXN0L3Rlc3RfcmFpc2UucHkKaW5kZXggZTAyYzFhZi4uYmU1YzFjNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yYWlzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JhaXNlLnB5CkBAIC00LDYgKzQsNyBAQAogIiIiVGVzdHMgZm9yIHRoZSByYWlzZSBzdGF0ZW1lbnQuIiIiCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAoraW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdApAQCAtNzcsNiArNzgsMTYgQEAKICAgICAgICAgICAgICAgICBuZXN0ZWRfcmVyYWlzZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmVyYWlzZSkKIAorICAgIGRlZiB0ZXN0X3JhaXNlX2Zyb21fTm9uZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZm9vIikKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCkgZnJvbSBOb25lCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShlLl9fY29udGV4dF9fLCBUeXBlRXJyb3IpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NhdXNlX18pCisKICAgICBkZWYgdGVzdF93aXRoX3JlcmFpc2UxKHNlbGYpOgogICAgICAgICBkZWYgcmVyYWlzZSgpOgogICAgICAgICAgICAgdHJ5OgpAQCAtMTMwLDggKzE0MSwzNSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICByYWlzZSBNeUV4Y2VwdGlvbgogCisgICAgZGVmIHRlc3RfYXNzZXJ0X3dpdGhfdHVwbGVfYXJnKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBhc3NlcnQgRmFsc2UsICgzLCkKKyAgICAgICAgZXhjZXB0IEFzc2VydGlvbkVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIigzLCkiKQorCisKIAogY2xhc3MgVGVzdENhdXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0Q2F1c2VTeW50YXgoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcgorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IgZnJvbSBOb25lCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjLl9fY2F1c2VfXykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhjLl9fc3VwcHJlc3NfY29udGV4dF9fKQorICAgICAgICAgICAgICAgIGV4Yy5fX3N1cHByZXNzX2NvbnRleHRfXyA9IEZhbHNlCisgICAgICAgICAgICAgICAgcmFpc2UgZXhjCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGUgPSBleGMKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlLl9fY2F1c2VfXykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlLl9fc3VwcHJlc3NfY29udGV4dF9fKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZS5fX2NvbnRleHRfXywgVHlwZUVycm9yKQorCiAgICAgZGVmIHRlc3RfaW52YWxpZF9jYXVzZShzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvciBmcm9tIDUKQEAgLTE3MSw2ICsyMDksNyBAQAogCiAKIGNsYXNzIFRlc3RUcmFjZWJhY2sodW5pdHRlc3QuVGVzdENhc2UpOgorCiAgICAgZGVmIHRlc3Rfc2V0c190cmFjZWJhY2soc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkgYi9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQppbmRleCA5N2Q4MDk4Li5jM2FiN2QyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQpAQCAtMzQsOCArMzQsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYW5kc2VxLCBzZWxmLnJhbmRvbWxpc3QoTikpCiAKICAgICBkZWYgdGVzdF9zZWVkYXJncyhzZWxmKToKKyAgICAgICAgIyBTZWVkIHZhbHVlIHdpdGggYSBuZWdhdGl2ZSBoYXNoLgorICAgICAgICBjbGFzcyBNeVNlZWQob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE3MjkKICAgICAgICAgZm9yIGFyZyBpbiBbTm9uZSwgMCwgMCwgMSwgMSwgLTEsIC0xLCAxMCoqMjAsIC0oMTAqKjIwKSwKLSAgICAgICAgICAgICAgICAgICAgMy4xNCwgMSsyaiwgJ2EnLCB0dXBsZSgnYWJjJyldOgorICAgICAgICAgICAgICAgICAgICAzLjE0LCAxKzJqLCAnYScsIHR1cGxlKCdhYmMnKSwgTXlTZWVkKCldOgogICAgICAgICAgICAgc2VsZi5nZW4uc2VlZChhcmcpCiAgICAgICAgIGZvciBhcmcgaW4gW2xpc3QocmFuZ2UoMykpLCBkaWN0KG9uZT0xKV06CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZ2VuLnNlZWQsIGFyZykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkgYi9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5CmluZGV4IDRkYWI0NDguLjJhMTNiZmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yYW5nZS5weQpAQCAtMzUwLDEzICszNTAsMzUgQEAKIAogICAgIGRlZiB0ZXN0X3BpY2tsaW5nKHNlbGYpOgogICAgICAgICB0ZXN0Y2FzZXMgPSBbKDEzLCksICgwLCAxMSksICgtMjIsIDEwKSwgKDIwLCAzLCAtMSksCi0gICAgICAgICAgICAgICAgICAgICAoMTMsIDIxLCAzKSwgKC0yLCAyLCAyKV0KKyAgICAgICAgICAgICAgICAgICAgICgxMywgMjEsIDMpLCAoLTIsIDIsIDIpLCAoMioqNjUsIDIqKjY1KzIpXQogICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKICAgICAgICAgICAgIGZvciB0IGluIHRlc3RjYXNlczoKICAgICAgICAgICAgICAgICByID0gcmFuZ2UoKnQpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMociwgcHJvdG8pKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHIpKQogCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xpbmcoc2VsZik6CisgICAgICAgIHRlc3RjYXNlcyA9IFsoMTMsKSwgKDAsIDExKSwgKC0yMiwgMTApLCAoMjAsIDMsIC0xKSwKKyAgICAgICAgICAgICAgICAgICAgICgxMywgMjEsIDMpLCAoLTIsIDIsIDIpLCAoMioqNjUsIDIqKjY1KzIpXQorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIGZvciB0IGluIHRlc3RjYXNlczoKKyAgICAgICAgICAgICAgICBpdCA9IGl0b3JnID0gaXRlcihyYW5nZSgqdCkpCisgICAgICAgICAgICAgICAgZGF0YSA9IGxpc3QocmFuZ2UoKnQpKQorCisgICAgICAgICAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGRhdGEpCisKKyAgICAgICAgICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgbmV4dChpdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICAgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgZGF0YVsxOl0pCisKICAgICBkZWYgdGVzdF9vZGRfYnVnKHNlbGYpOgogICAgICAgICAjIFRoaXMgdXNlZCB0byByYWlzZSBhICJTeXN0ZW1FcnJvcjogTlVMTCByZXN1bHQgd2l0aG91dCBlcnJvciIKICAgICAgICAgIyBiZWNhdXNlIHRoZSByYW5nZSB2YWxpZGF0aW9uIHN0ZXAgd2FzIGVhdGluZyB0aGUgZXhjZXB0aW9uCkBAIC01MTYsNiArNTM4LDg3IEBACiAgICAgICAgICAgICAgICAgZm9yIGsgaW4gdmFsdWVzIC0gezB9OgogICAgICAgICAgICAgICAgICAgICByW2k6ajprXQogCisgICAgZGVmIHRlc3RfY29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgdGVzdF9yYW5nZXMgPSBbcmFuZ2UoMCksIHJhbmdlKDAsIC0xKSwgcmFuZ2UoMSwgMSwgMyksCisgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlKDEpLCByYW5nZSg1LCA2KSwgcmFuZ2UoNSwgNiwgMiksCisgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlKDUsIDcsIDIpLCByYW5nZSgyKSwgcmFuZ2UoMCwgNCwgMiksCisgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlKDAsIDUsIDIpLCByYW5nZSgwLCA2LCAyKV0KKyAgICAgICAgdGVzdF90dXBsZXMgPSBsaXN0KG1hcCh0dXBsZSwgdGVzdF9yYW5nZXMpKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCBlcXVhbGl0eSBvZiByYW5nZXMgbWF0Y2hlcyBlcXVhbGl0eSBvZiB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAjIHR1cGxlcyBmb3IgZWFjaCBwYWlyIGZyb20gdGhlIHRlc3QgbGlzdHMgYWJvdmUuCisgICAgICAgIHJhbmdlc19lcSA9IFthID09IGIgZm9yIGEgaW4gdGVzdF9yYW5nZXMgZm9yIGIgaW4gdGVzdF9yYW5nZXNdCisgICAgICAgIHR1cGxlc19lcSA9IFthID09IGIgZm9yIGEgaW4gdGVzdF90dXBsZXMgZm9yIGIgaW4gdGVzdF90dXBsZXNdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZ2VzX2VxLCB0dXBsZXNfZXEpCisKKyAgICAgICAgIyBDaGVjayB0aGF0ICE9IGNvcnJlY3RseSBnaXZlcyB0aGUgbG9naWNhbCBuZWdhdGlvbiBvZiA9PQorICAgICAgICByYW5nZXNfbmUgPSBbYSAhPSBiIGZvciBhIGluIHRlc3RfcmFuZ2VzIGZvciBiIGluIHRlc3RfcmFuZ2VzXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhbmdlc19uZSwgW25vdCB4IGZvciB4IGluIHJhbmdlc19lcV0pCisKKyAgICAgICAgIyBFcXVhbCByYW5nZXMgc2hvdWxkIGhhdmUgZXF1YWwgaGFzaGVzLgorICAgICAgICBmb3IgYSBpbiB0ZXN0X3JhbmdlczoKKyAgICAgICAgICAgIGZvciBiIGluIHRlc3RfcmFuZ2VzOgorICAgICAgICAgICAgICAgIGlmIGEgPT0gYjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGEpLCBoYXNoKGIpKQorCisgICAgICAgICMgUmFuZ2VzIGFyZSB1bmVxdWFsIHRvIG90aGVyIHR5cGVzIChldmVuIHNlcXVlbmNlIHR5cGVzKQorICAgICAgICBzZWxmLmFzc2VydElzKHJhbmdlKDApID09ICgpLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcygoKSA9PSByYW5nZSgwKSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmFuZ2UoMikgPT0gWzAsIDFdLCBGYWxzZSkKKworICAgICAgICAjIEh1Z2UgaW50ZWdlcnMgYXJlbid0IGEgcHJvYmxlbS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYW5nZSgwLCAyKioxMDAgLSAxLCAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSgwLCAyKioxMDAsIDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gocmFuZ2UoMCwgMioqMTAwIC0gMSwgMikpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2gocmFuZ2UoMCwgMioqMTAwLCAyKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmFuZ2UoMCwgMioqMTAwLCAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSgwLCAyKioxMDAgKyAxLCAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYW5nZSgyKioyMDAsIDIqKjIwMSAtIDIqKjk5LCAyKioxMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlKDIqKjIwMCwgMioqMjAxLCAyKioxMDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gocmFuZ2UoMioqMjAwLCAyKioyMDEgLSAyKio5OSwgMioqMTAwKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaChyYW5nZSgyKioyMDAsIDIqKjIwMSwgMioqMTAwKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmFuZ2UoMioqMjAwLCAyKioyMDEsIDIqKjEwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UoMioqMjAwLCAyKioyMDEgKyAxLCAyKioxMDApKQorCisgICAgICAgICMgT3JkZXIgY29tcGFyaXNvbnMgYXJlIG5vdCBpbXBsZW1lbnRlZCBmb3IgcmFuZ2VzLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICByYW5nZSgwKSA8IHJhbmdlKDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHJhbmdlKDApID4gcmFuZ2UoMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgcmFuZ2UoMCkgPD0gcmFuZ2UoMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgcmFuZ2UoMCkgPj0gcmFuZ2UoMCkKKworCisgICAgZGVmIHRlc3RfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IHRoZSBzdGFydCwgc3RvcCBhbmQgc3RlcCBhdHRyaWJ1dGVzIG9mIHJhbmdlIG9iamVjdHMKKyAgICAgICAgc2VsZi5hc3NlcnRfYXR0cnMocmFuZ2UoMCksIDAsIDAsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2F0dHJzKHJhbmdlKDEwKSwgMCwgMTAsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2F0dHJzKHJhbmdlKC0xMCksIDAsIC0xMCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfYXR0cnMocmFuZ2UoMCwgMTAsIDEpLCAwLCAxMCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfYXR0cnMocmFuZ2UoMCwgMTAsIDMpLCAwLCAxMCwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRfYXR0cnMocmFuZ2UoMTAsIDAsIC0xKSwgMTAsIDAsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9hdHRycyhyYW5nZSgxMCwgMCwgLTMpLCAxMCwgMCwgLTMpCisKKyAgICBkZWYgYXNzZXJ0X2F0dHJzKHNlbGYsIHJhbmdlb2JqLCBzdGFydCwgc3RvcCwgc3RlcCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZ2VvYmouc3RhcnQsIHN0YXJ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhbmdlb2JqLnN0b3AsIHN0b3ApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZ2VvYmouc3RlcCwgc3RlcCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHJhbmdlb2JqLnN0YXJ0ID0gMAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHJhbmdlb2JqLnN0b3AgPSAxMAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHJhbmdlb2JqLnN0ZXAgPSAxCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBkZWwgcmFuZ2VvYmouc3RhcnQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBkZWwgcmFuZ2VvYmouc3RvcAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGRlbCByYW5nZW9iai5zdGVwCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KFJhbmdlVGVzdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmUucHkgYi9MaWIvdGVzdC90ZXN0X3JlLnB5CmluZGV4IDBjOTVmNGUuLmVmMTkxNjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yZS5weQpAQCAtOCw5ICs4LDYgQEAKIGltcG9ydCB0cmFjZWJhY2sKIGZyb20gd2Vha3JlZiBpbXBvcnQgcHJveHkKIAotZnJvbSB0ZXN0LnRlc3RfYmlnbWVtIGltcG9ydCBjaGFyYWN0ZXJfc2l6ZQotCi0KICMgTWlzYyB0ZXN0cyBmcm9tIFRpbSBQZXRlcnMnIHJlLmRvYwogCiAjIFdBUk5JTkc6IERvbid0IGNoYW5nZSBkZXRhaWxzIGluIHRoZXNlIHRlc3RzIGlmIHlvdSBkb24ndCBrbm93CkBAIC00OTYsNyArNDkzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnNwYW4oKSwgc3BhbikKIAogICAgIGRlZiB0ZXN0X3JlX2VzY2FwZShzZWxmKToKLSAgICAgICAgYWxudW1fY2hhcnMgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMKKyAgICAgICAgYWxudW1fY2hhcnMgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAnXycKICAgICAgICAgcCA9ICcnLmpvaW4oY2hyKGkpIGZvciBpIGluIHJhbmdlKDI1NikpCiAgICAgICAgIGZvciBjIGluIHA6CiAgICAgICAgICAgICBpZiBjIGluIGFsbnVtX2NoYXJzOgpAQCAtNTA5LDcgKzUwNiw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0TWF0Y2gocmUuZXNjYXBlKHApLCBwKQogCiAgICAgZGVmIHRlc3RfcmVfZXNjYXBlX2J5dGUoc2VsZik6Ci0gICAgICAgIGFsbnVtX2NoYXJzID0gKHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cykuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIGFsbnVtX2NoYXJzID0gKHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICdfJykuZW5jb2RlKCdhc2NpaScpCiAgICAgICAgIHAgPSBieXRlcyhyYW5nZSgyNTYpKQogICAgICAgICBmb3IgaSBpbiBwOgogICAgICAgICAgICAgYiA9IGJ5dGVzKFtpXSkKQEAgLTU1NiwyNCArNTUzLDkzIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLmNvbXBpbGUoJ15wYXR0ZXJuJCcsIGZsYWcpLCBOb25lKQogCiAgICAgZGVmIHRlc3Rfc3JlX2NoYXJhY3Rlcl9saXRlcmFscyhzZWxmKToKLSAgICAgICAgZm9yIGkgaW4gWzAsIDgsIDE2LCAzMiwgNjQsIDEyNywgMTI4LCAyNTVdOgotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIlwlMDNvIiAlIGksIGNocihpKSksIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiXCUwM28wIiAlIGksIGNocihpKSsiMCIpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIlwlMDNvOCIgJSBpLCBjaHIoaSkrIjgiKSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJceCUwMngiICUgaSwgY2hyKGkpKSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJceCUwMngwIiAlIGksIGNocihpKSsiMCIpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIlx4JTAyeHoiICUgaSwgY2hyKGkpKyJ6IiksIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgIlw5MTEiLCAiIikKKyAgICAgICAgZm9yIGkgaW4gWzAsIDgsIDE2LCAzMiwgNjQsIDEyNywgMTI4LCAyNTUsIDI1NiwgMHhGRkZGLCAweDEwMDAwLCAweDEwRkZGRl06CisgICAgICAgICAgICBpZiBpIDwgMjU2OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXCUwM28iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlwlMDNvMCIgJSBpLCBjaHIoaSkrIjAiKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlwlMDNvOCIgJSBpLCBjaHIoaSkrIjgiKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlx4JTAyeCIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXHglMDJ4MCIgJSBpLCBjaHIoaSkrIjAiKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlx4JTAyeHoiICUgaSwgY2hyKGkpKyJ6IikpCisgICAgICAgICAgICBpZiBpIDwgMHgxMDAwMDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlx1JTA0eCIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXHUlMDR4MCIgJSBpLCBjaHIoaSkrIjAiKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlx1JTA0eHoiICUgaSwgY2hyKGkpKyJ6IikpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlxVJTA4eCIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcVSUwOHgwIiAlIGksIGNocihpKSsiMCIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcVSUwOHh6IiAlIGksIGNocihpKSsieiIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlwwIiwgIlwwMDAiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcMDgiLCAiXDAwMDgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcMDEiLCAiXDAwMSIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlwwMTgiLCAiXDAwMTgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcNTY3IiwgY2hyKDBvMTY3KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJcOTExIiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJceDEiLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlx4MXoiLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlx1MTIzIiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJcdTEyM3oiLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlxVMDAwMTIzNCIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXFUwMDAxMjM0eiIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXFUwMDExMDAwMCIsICIiKQogCiAgICAgZGVmIHRlc3Rfc3JlX2NoYXJhY3Rlcl9jbGFzc19saXRlcmFscyhzZWxmKToKKyAgICAgICAgZm9yIGkgaW4gWzAsIDgsIDE2LCAzMiwgNjQsIDEyNywgMTI4LCAyNTUsIDI1NiwgMHhGRkZGLCAweDEwMDAwLCAweDEwRkZGRl06CisgICAgICAgICAgICBpZiBpIDwgMjU2OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1wlb10iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcJW84XSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1wlMDNvXSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1wlMDNvMF0iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcJTAzbzhdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXHglMDJ4XSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1x4JTAyeDBdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXHglMDJ4el0iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgIGlmIGkgPCAweDEwMDAwOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1x1JTA0eF0iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcdSUwNHgwXSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1x1JTA0eHpdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcVSUwOHhdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcVSUwOHgwXSIgJSBpLCBjaHIoaSkrIjAiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1xVJTA4eHpdIiAlIGksIGNocihpKSsieiIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltcVTAwMDFkNDljLVxVMDAwMWQ0YjVdIiwgIlxVMDAwMWQ0OWUiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIltcOTExXSIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiW1x4MXpdIiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJbXHUxMjN6XSIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiW1xVMDAwMTIzNHpdIiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJbXFUwMDExMDAwMF0iLCAiIikKKworICAgIGRlZiB0ZXN0X3NyZV9ieXRlX2xpdGVyYWxzKHNlbGYpOgogICAgICAgICBmb3IgaSBpbiBbMCwgOCwgMTYsIDMyLCA2NCwgMTI3LCAxMjgsIDI1NV06Ci0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiW1wlMDNvXSIgJSBpLCBjaHIoaSkpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIltcJTAzbzBdIiAlIGksIGNocihpKSksIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiW1wlMDNvOF0iICUgaSwgY2hyKGkpKSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJbXHglMDJ4XSIgJSBpLCBjaHIoaSkpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIltceCUwMngwXSIgJSBpLCBjaHIoaSkpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIltceCUwMnh6XSIgJSBpLCBjaHIoaSkpLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsICJbXDkxMV0iLCAiIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIlwlMDNvIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIlwlMDNvMCIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKStiIjAiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIlwlMDNvOCIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKStiIjgiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIlx4JTAyeCIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJceCUwMngwIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pK2IiMCIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiXHglMDJ4eiIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKStiInoiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goYnIiXHUiLCBiJ3UnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goYnIiXFUiLCBiJ1UnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goYnIiXDAiLCBiIlwwMDAiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goYnIiXDA4IiwgYiJcMDAwOCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChiciJcMDEiLCBiIlwwMDEiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goYnIiXDAxOCIsIGIiXDAwMTgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goYnIiXDU2NyIsIGJ5dGVzKFswbzE2N10pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCBiciJcOTExIiwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIGJyIlx4MSIsIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCBiciJceDF6IiwgYiIiKQorCisgICAgZGVmIHRlc3Rfc3JlX2J5dGVfY2xhc3NfbGl0ZXJhbHMoc2VsZik6CisgICAgICAgIGZvciBpIGluIFswLCA4LCAxNiwgMzIsIDY0LCAxMjcsIDEyOCwgMjU1XToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIltcJW9dIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIltcJW84XSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJbXCUwM29dIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIltcJTAzbzBdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIltcJTAzbzhdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIltceCUwMnhdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIltceCUwMngwXSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJbXHglMDJ4el0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChiciJbXHVdIiwgYid1JykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKGJyIltcVV0iLCBiJ1UnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCBiciJbXDkxMV0iLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCBiciJbXHgxel0iLCAiIikKIAogICAgIGRlZiB0ZXN0X2J1Z18xMTMyNTQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocicoYSl8KGIpJywgJ2InKS5zdGFydCgxKSwgLTEpCkBAIC02OTEsNiArNzU3LDI2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2l0ZW0uZ3JvdXAoMCkgZm9yIGl0ZW0gaW4gaXRlcl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgWyI6IiwgIjo6IiwgIjo6OiJdKQogCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUociI6KyIpCisgICAgICAgIGl0ZXIgPSBwYXQuZmluZGl0ZXIoImE6Yjo6Yzo6OmQiLCAxLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbaXRlbS5ncm91cCgwKSBmb3IgaXRlbSBpbiBpdGVyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbIjoiLCAiOjoiLCAiOjo6Il0pCisKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyIjorIikKKyAgICAgICAgaXRlciA9IHBhdC5maW5kaXRlcigiYTpiOjpjOjo6ZCIsIHBvcz0xLCBlbmRwb3M9MTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2l0ZW0uZ3JvdXAoMCkgZm9yIGl0ZW0gaW4gaXRlcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgWyI6IiwgIjo6IiwgIjo6OiJdKQorCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUociI6KyIpCisgICAgICAgIGl0ZXIgPSBwYXQuZmluZGl0ZXIoImE6Yjo6Yzo6OmQiLCBlbmRwb3M9MTAsIHBvcz0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtpdGVtLmdyb3VwKDApIGZvciBpdGVtIGluIGl0ZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsiOiIsICI6OiIsICI6OjoiXSkKKworICAgICAgICBwYXQgPSByZS5jb21waWxlKHIiOisiKQorICAgICAgICBpdGVyID0gcGF0LmZpbmRpdGVyKCJhOmI6OmM6OjpkIiwgcG9zPTMsIGVuZHBvcz04KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtpdGVtLmdyb3VwKDApIGZvciBpdGVtIGluIGl0ZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsiOjoiLCAiOjoiXSkKKwogICAgIGRlZiB0ZXN0X2J1Z185MjYwNzUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5jb21waWxlKCdidWdfOTI2MDc1JykgaXMgbm90CiAgICAgICAgICAgICAgICAgICAgICByZS5jb21waWxlKGInYnVnXzkyNjA3NScpKQpAQCAtODU3LDYgKzk0MywxMyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBfc3JlLmNvbXBpbGUsICJhYmMiLCAwLCBbbG9uZ19vdmVyZmxvd10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX3NyZS5jb21waWxlLCB7fSwgMCwgW10pCiAKKyAgICBkZWYgdGVzdF9zZWFyY2hfZG90X3VuaWNvZGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLnNlYXJjaCgiMTIzLiotIiwgJzEyM2FiYy0nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUuc2VhcmNoKCIxMjMuKi0iLCAnMTIzXHhlOS0nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUuc2VhcmNoKCIxMjMuKi0iLCAnMTIzXHUyMGFjLScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5zZWFyY2goIjEyMy4qLSIsICcxMjNcVTAwMTBmZmZmLScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5zZWFyY2goIjEyMy4qLSIsICcxMjNceGU5XHUyMGFjXFUwMDEwZmZmZi0nKSkKKwogICAgIGRlZiB0ZXN0X2NvbXBpbGUoc2VsZik6CiAgICAgICAgICMgVGVzdCByZXR1cm4gdmFsdWUgd2hlbiBnaXZlbiBzdHJpbmcgYW5kIHBhdHRlcm4gYXMgcGFyYW1ldGVyCiAgICAgICAgIHBhdHRlcm4gPSByZS5jb21waWxlKCdyYW5kb20gcGF0dGVybicpCkBAIC04NzMsNyArOTY2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5maW5kYWxsKHInW1xBXEJcYlxDXFpdJywgJ0FCXGJDWicpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnQScsICdCJywgJ1xiJywgJ0MnLCAnWiddKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT1jaGFyYWN0ZXJfc2l6ZSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTEpCiAgICAgZGVmIHRlc3RfbGFyZ2Vfc2VhcmNoKHNlbGYsIHNpemUpOgogICAgICAgICAjIElzc3VlICMxMDE4MjogaW5kaWNlcyB3ZXJlIDMyLWJpdC10cnVuY2F0ZWQuCiAgICAgICAgIHMgPSAnYScgKiBzaXplCkBAIC04ODQsNyArOTc3LDcgQEAKIAogICAgICMgVGhlIGh1Z2UgbWVtdXNlIGlzIGJlY2F1c2Ugb2YgcmUuc3ViKCkgdXNpbmcgYSBsaXN0IGFuZCBhIGpvaW4oKQogICAgICMgdG8gY3JlYXRlIHRoZSByZXBsYWNlbWVudCByZXN1bHQuCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0xNiArIDIgKiBjaGFyYWN0ZXJfc2l6ZSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTE2ICsgMikKICAgICBkZWYgdGVzdF9sYXJnZV9zdWJuKHNlbGYsIHNpemUpOgogICAgICAgICAjIElzc3VlICMxMDE4MjogaW5kaWNlcyB3ZXJlIDMyLWJpdC10cnVuY2F0ZWQuCiAgICAgICAgIHMgPSAnYScgKiBzaXplCkBAIC04OTIsNiArOTg1LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwociwgcykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCBzaXplICsgMSkKIAorICAgIGRlZiB0ZXN0X2J1Z18xNjY4OChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAxNjY4ODogQmFja3JlZmVyZW5jZXMgbWFrZSBjYXNlLWluc2Vuc2l0aXZlIHJlZ2V4IGZhaWwgb24KKyAgICAgICAgIyBub24tQVNDSUkgc3RyaW5ncy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5maW5kYWxsKHIiKD9pKShhKVwxIiwgImFhIFx1MDEwMCIpLCBbJ2EnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIig/cykuezEsM30iLCAiXHUwMTAwXHUwMTAwIikuc3BhbigpLCAoMCwgMikpCiAKICAgICBkZWYgdGVzdF9yZXBlYXRfbWlubWF4X292ZXJmbG93KHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMzE2OQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yZXBybGliLnB5IGIvTGliL3Rlc3QvdGVzdF9yZXBybGliLnB5CmluZGV4IGIwZGM0ZDcuLjU4OWVjZGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmVwcmxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JlcHJsaWIucHkKQEAgLTMsMTIgKzMsMTQgQEAKICAgTmljayBNYXRoZXdzb24KICIiIgogCitpbXBvcnQgaW1wCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBjcmVhdGVfZW1wdHlfZmlsZSwgdmVyYm9zZQogZnJvbSByZXBybGliIGltcG9ydCByZXByIGFzIHIgIyBEb24ndCBzaGFkb3cgYnVpbHRpbiByZXByCiBmcm9tIHJlcHJsaWIgaW1wb3J0IFJlcHIKIGZyb20gcmVwcmxpYiBpbXBvcnQgcmVjdXJzaXZlX3JlcHIKQEAgLTEyOSw4ICsxMzEsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEluKHMuZmluZCgiLi4uIiksIFsxMiwgMTNdKQogCiAgICAgZGVmIHRlc3RfbGFtYmRhKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihsYW1iZGEgeDogeCkuc3RhcnRzd2l0aCgKLSAgICAgICAgICAgICI8ZnVuY3Rpb24gPGxhbWJkYSIpKQorICAgICAgICByID0gcmVwcihsYW1iZGEgeDogeCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuc3RhcnRzd2l0aCgiPGZ1bmN0aW9uIFJlcHJUZXN0cy50ZXN0X2xhbWJkYS48bG9jYWxzPi48bGFtYmRhIiksIHIpCiAgICAgICAgICMgWFhYIGFub255bW91cyBmdW5jdGlvbnM/ICBzZWUgZnVuY19yZXByCiAKICAgICBkZWYgdGVzdF9idWlsdGluX2Z1bmN0aW9uKHNlbGYpOgpAQCAtMTkzLDI2ICsxOTUsMjkgQEAKICAgICAgICAgcih5KQogICAgICAgICByKHopCiAKLWRlZiB0b3VjaChwYXRoLCB0ZXh0PScnKToKLSAgICBmcCA9IG9wZW4ocGF0aCwgJ3cnKQotICAgIGZwLndyaXRlKHRleHQpCi0gICAgZnAuY2xvc2UoKQorZGVmIHdyaXRlX2ZpbGUocGF0aCwgdGV4dCk6CisgICAgd2l0aCBvcGVuKHBhdGgsICd3JywgZW5jb2Rpbmc9J0FTQ0lJJykgYXMgZnA6CisgICAgICAgIGZwLndyaXRlKHRleHQpCiAKIGNsYXNzIExvbmdSZXByVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbG9uZ25hbWUgPSAnYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uJworCiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBsb25nbmFtZSA9ICdhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24nCi0gICAgICAgIHNlbGYucGtnbmFtZSA9IG9zLnBhdGguam9pbihsb25nbmFtZSkKLSAgICAgICAgc2VsZi5zdWJwa2duYW1lID0gb3MucGF0aC5qb2luKGxvbmduYW1lLCBsb25nbmFtZSkKKyAgICAgICAgc2VsZi5wa2duYW1lID0gb3MucGF0aC5qb2luKHNlbGYubG9uZ25hbWUpCisgICAgICAgIHNlbGYuc3VicGtnbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLmxvbmduYW1lLCBzZWxmLmxvbmduYW1lKQogICAgICAgICAjIE1ha2UgdGhlIHBhY2thZ2UgYW5kIHN1YnBhY2thZ2UKICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnBrZ25hbWUsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKICAgICAgICAgb3MubWtkaXIoc2VsZi5wa2duYW1lKQotICAgICAgICB0b3VjaChvcy5wYXRoLmpvaW4oc2VsZi5wa2duYW1lLCAnX19pbml0X18ucHknKSkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKHNlbGYucGtnbmFtZSwgJ19faW5pdF9fLnB5JykpCiAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5zdWJwa2duYW1lLCBpZ25vcmVfZXJyb3JzPVRydWUpCiAgICAgICAgIG9zLm1rZGlyKHNlbGYuc3VicGtnbmFtZSkKLSAgICAgICAgdG91Y2gob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgJ19faW5pdF9fLnB5JykpCisgICAgICAgIGNyZWF0ZV9lbXB0eV9maWxlKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdfX2luaXRfXy5weScpKQogICAgICAgICAjIFJlbWVtYmVyIHdoZXJlIHdlIGFyZQogICAgICAgICBzZWxmLmhlcmUgPSBvcy5nZXRjd2QoKQogICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgc2VsZi5oZXJlKQorICAgICAgICAjIFdoZW4gcmVncnRlc3QgaXMgcnVuIHdpdGggaXRzIC1qIG9wdGlvbiwgdGhpcyBjb21tYW5kIGFsb25lIGlzIG5vdAorICAgICAgICAjIGVub3VnaC4KKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgYWN0aW9ucyA9IFtdCkBAIC0yMjksMjAgKzIzNCw0MCBAQAogICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwKQogICAgICAgICBkZWwgc3lzLnBhdGhbMF0KIAorICAgIGRlZiBfY2hlY2tfcGF0aF9saW1pdGF0aW9ucyhzZWxmLCBtb2R1bGVfbmFtZSk6CisgICAgICAgICMgYmFzZSBkaXJlY3RvcnkKKyAgICAgICAgc291cmNlX3BhdGhfbGVuID0gbGVuKHNlbGYuaGVyZSkKKyAgICAgICAgIyBhIHBhdGggc2VwYXJhdG9yICsgYGxvbmduYW1lYCAodHdpY2UpCisgICAgICAgIHNvdXJjZV9wYXRoX2xlbiArPSAyICogKGxlbihzZWxmLmxvbmduYW1lKSArIDEpCisgICAgICAgICMgYSBwYXRoIHNlcGFyYXRvciArIGBtb2R1bGVfbmFtZWAgKyAiLnB5IgorICAgICAgICBzb3VyY2VfcGF0aF9sZW4gKz0gbGVuKG1vZHVsZV9uYW1lKSArIDEgKyBsZW4oIi5weSIpCisgICAgICAgIGNhY2hlZF9wYXRoX2xlbiA9IHNvdXJjZV9wYXRoX2xlbiArIGxlbihpbXAuY2FjaGVfZnJvbV9zb3VyY2UoIngucHkiKSkgLSBsZW4oIngucHkiKQorICAgICAgICBpZiBvcy5uYW1lID09ICdudCcgYW5kIGNhY2hlZF9wYXRoX2xlbiA+PSAyNTg6CisgICAgICAgICAgICAjIFVuZGVyIFdpbmRvd3MsIHRoZSBtYXggcGF0aCBsZW4gaXMgMjYwIGluY2x1ZGluZyBDJ3MgdGVybWluYXRpbmcKKyAgICAgICAgICAgICMgTlVMIGNoYXJhY3Rlci4KKyAgICAgICAgICAgICMgKHNlZSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzY1MjQ3JTI4dj12cy44NSUyOS5hc3B4I21heHBhdGgpCisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJ0ZXN0IHBhdGhzIHRvbyBsb25nICglZCBjaGFyYWN0ZXJzKSBmb3IgV2luZG93cycgMjYwIGNoYXJhY3RlciBsaW1pdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJSBjYWNoZWRfcGF0aF9sZW4pCisgICAgICAgIGVsaWYgb3MubmFtZSA9PSAnbnQnIGFuZCB2ZXJib3NlOgorICAgICAgICAgICAgcHJpbnQoImNhY2hlZF9wYXRoX2xlbiA9IiwgY2FjaGVkX3BhdGhfbGVuKQorCiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgotICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKLSAgICAgICAgdG91Y2gob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgc2VsZi5wa2duYW1lICsgJy5weScpKQorICAgICAgICBzZWxmLl9jaGVja19wYXRoX2xpbWl0YXRpb25zKHNlbGYucGtnbmFtZSkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgc2VsZi5wa2duYW1lICsgJy5weScpKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBmcm9tIGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbi5hcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24gaW1wb3J0IGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbgotICAgICAgICBlcShyZXByKGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbiksCi0gICAgICAgICAgICI8bW9kdWxlICclcycgZnJvbSAnJXMnPiIgJSAoYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uLl9fbmFtZV9fLCBhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24uX19maWxlX18pKQotICAgICAgICBlcShyZXByKHN5cyksICI8bW9kdWxlICdzeXMnIChidWlsdC1pbik+IikKKyAgICAgICAgbW9kdWxlID0gYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtb2R1bGUpLCAiPG1vZHVsZSAlciBmcm9tICVyPiIgJSAobW9kdWxlLl9fbmFtZV9fLCBtb2R1bGUuX19maWxlX18pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoc3lzKSwgIjxtb2R1bGUgJ3N5cycgKGJ1aWx0LWluKT4iKQogCiAgICAgZGVmIHRlc3RfdHlwZShzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tfcGF0aF9saW1pdGF0aW9ucygnZm9vJykKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCi0gICAgICAgIHRvdWNoKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdmb28ucHknKSwgJycnXAorICAgICAgICB3cml0ZV9maWxlKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdmb28ucHknKSwgJycnXAogY2xhc3MgZm9vKG9iamVjdCk6CiAgICAgcGFzcwogJycnKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBmcm9tIGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbi5hcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24gaW1wb3J0IGZvbwogICAgICAgICBlcShyZXByKGZvby5mb28pLAogICAgICAgICAgICAgICAgIjxjbGFzcyAnJXMuZm9vJz4iICUgZm9vLl9fbmFtZV9fKQpAQCAtMjUzLDM5ICsyNzgsNDYgQEAKICAgICAgICAgcGFzcwogCiAgICAgZGVmIHRlc3RfY2xhc3Moc2VsZik6Ci0gICAgICAgIHRvdWNoKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdiYXIucHknKSwgJycnXAorICAgICAgICBzZWxmLl9jaGVja19wYXRoX2xpbWl0YXRpb25zKCdiYXInKQorICAgICAgICB3cml0ZV9maWxlKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdiYXIucHknKSwgJycnXAogY2xhc3MgYmFyOgogICAgIHBhc3MKICcnJykKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgZnJvbSBhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24uYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uIGltcG9ydCBiYXIKICAgICAgICAgIyBNb2R1bGUgbmFtZSBtYXkgYmUgcHJlZml4ZWQgd2l0aCAidGVzdC4iLCBkZXBlbmRpbmcgb24gaG93IHJ1bi4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGJhci5iYXIpLCAiPGNsYXNzICclcy5iYXInPiIgJSBiYXIuX19uYW1lX18pCiAKICAgICBkZWYgdGVzdF9pbnN0YW5jZShzZWxmKToKLSAgICAgICAgdG91Y2gob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgJ2Jhei5weScpLCAnJydcCisgICAgICAgIHNlbGYuX2NoZWNrX3BhdGhfbGltaXRhdGlvbnMoJ2JheicpCisgICAgICAgIHdyaXRlX2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgJ2Jhei5weScpLCAnJydcCiBjbGFzcyBiYXo6CiAgICAgcGFzcwogJycnKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBmcm9tIGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbi5hcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24gaW1wb3J0IGJhegogICAgICAgICBpYmF6ID0gYmF6LmJheigpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXByKGliYXopLnN0YXJ0c3dpdGgoCiAgICAgICAgICAgICAiPCVzLmJheiBvYmplY3QgYXQgMHgiICUgYmF6Ll9fbmFtZV9fKSkKIAogICAgIGRlZiB0ZXN0X21ldGhvZChzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tfcGF0aF9saW1pdGF0aW9ucygncXV4JykKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCi0gICAgICAgIHRvdWNoKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdxdXgucHknKSwgJycnXAorICAgICAgICB3cml0ZV9maWxlKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdxdXgucHknKSwgJycnXAogY2xhc3MgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWE6CiAgICAgZGVmIGFtZXRob2Qoc2VsZik6IHBhc3MKICcnJykKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgZnJvbSBhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24uYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uIGltcG9ydCBxdXgKICAgICAgICAgIyBVbmJvdW5kIG1ldGhvZHMgZmlyc3QKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIocXV4LmFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhLmFtZXRob2QpLnN0YXJ0c3dpdGgoCi0gICAgICAgICc8ZnVuY3Rpb24gYW1ldGhvZCcpKQorICAgICAgICByID0gcmVwcihxdXguYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEuYW1ldGhvZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuc3RhcnRzd2l0aCgnPGZ1bmN0aW9uIGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhLmFtZXRob2QnKSwgcikKICAgICAgICAgIyBCb3VuZCBtZXRob2QgbmV4dAogICAgICAgICBpcXV4ID0gcXV4LmFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIoaXF1eC5hbWV0aG9kKS5zdGFydHN3aXRoKAorICAgICAgICByID0gcmVwcihpcXV4LmFtZXRob2QpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLnN0YXJ0c3dpdGgoCiAgICAgICAgICAgICAnPGJvdW5kIG1ldGhvZCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS5hbWV0aG9kIG9mIDwlcy5hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSBvYmplY3QgYXQgMHgnIFwKLSAgICAgICAgICAgICUgKHF1eC5fX25hbWVfXywpICkpCisgICAgICAgICAgICAlIChxdXguX19uYW1lX18sKSApLCByKQogCiAgICAgZGVmIHRlc3RfYnVpbHRpbl9mdW5jdGlvbihzZWxmKToKICAgICAgICAgIyBYWFggdGVzdCBidWlsdC1pbiBmdW5jdGlvbnMgYW5kIG1ldGhvZHMgd2l0aCByZWFsbHkgbG9uZyBuYW1lcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5IGIvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5CmluZGV4IGY4ZjM3MTcuLjBiNjI5ZGMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkKQEAgLTIyMCw2ICsyMjAsNyBAQAogICAgICAgICBmb3IgZnVuYyBpbiAoZG8sIG9wZXJhdG9yLm5vdF8pOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjLCBmdW5jLCBCYWQoKSkKIAorICAgIEBzdXBwb3J0Lm5vX3RyYWNpbmcKICAgICBkZWYgdGVzdF9yZWN1cnNpb24oc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhhdCBjb21wYXJpc29uIGZvciByZWN1cnNpdmUgb2JqZWN0cyBmYWlscyBncmFjZWZ1bGx5CiAgICAgICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJMaXN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JvYm90cGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9yb2JvdHBhcnNlci5weQppbmRleCAxNzg3NjFkLi44YzA5ZTc0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JvYm90cGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfcm9ib3RwYXJzZXIucHkKQEAgLTYsNyArNiwxMCBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIFJvYm90VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmRleCwgcGFyc2VyLCB1cmwsIGdvb2QsIGFnZW50KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaW5kZXg9Tm9uZSwgcGFyc2VyPU5vbmUsIHVybD1Ob25lLCBnb29kPU5vbmUsIGFnZW50PU5vbmUpOgorICAgICAgICAjIHdvcmthcm91bmQgdG8gbWFrZSB1bml0dGVzdCBkaXNjb3Zlcnkgd29yayAoc2VlICMxNzA2NikKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaW5kZXgsIGludCk6CisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UuX19pbml0X18oc2VsZikKICAgICAgICAgaWYgZ29vZDoKICAgICAgICAgICAgIHNlbGYuc3RyID0gIlJvYm90VGVzdCglZCwgZ29vZCwgJXMpIiAlIChpbmRleCwgdXJsKQpAQCAtMjY5LDEwICsyNzIsMTEgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKICAgICAgICAgICAgICAgICBwYXJzZXIuY2FuX2ZldGNoKCIqIiwgImh0dHA6Ly93d3cucHl0aG9uLm9yZy9yb2JvdHMudHh0IikpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChOZXR3b3JrVGVzdENhc2UpCi0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QodGVzdHMpCitkZWYgbG9hZF90ZXN0cyhsb2FkZXIsIHN1aXRlLCBwYXR0ZXJuKToKKyAgICBzdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShOZXR3b3JrVGVzdENhc2UpCisgICAgc3VpdGUuYWRkVGVzdCh0ZXN0cykKKyAgICByZXR1cm4gc3VpdGUKIAogaWYgX19uYW1lX189PSdfX21haW5fXyc6Ci0gICAgc3VwcG9ydC52ZXJib3NlID0gMQotICAgIHRlc3RfbWFpbigpCisgICAgc3VwcG9ydC51c2VfcmVzb3VyY2VzID0gWyduZXR3b3JrJ10KKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkgYi9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5CmluZGV4IDk2ZDJiZWIuLmZlZmVmYzQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ydW5weS5weQpAQCAtNSwxMSArNSwxNSBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHJlCiBpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBweV9jb21waWxlCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZm9yZ2V0LCBtYWtlX2xlZ2FjeV9weWMsIHJ1bl91bml0dGVzdCwgdW5sb2FkLCB2ZXJib3NlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKAorICAgIGZvcmdldCwgbWFrZV9sZWdhY3lfcHljLCBydW5fdW5pdHRlc3QsIHVubG9hZCwgdmVyYm9zZSwgbm9fdHJhY2luZywKKyAgICBjcmVhdGVfZW1wdHlfZmlsZSkKIGZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCAoCiAgICAgbWFrZV9wa2csIG1ha2Vfc2NyaXB0LCBtYWtlX3ppcF9wa2csIG1ha2VfemlwX3NjcmlwdCwgdGVtcF9kaXIpCiAKKwogaW1wb3J0IHJ1bnB5CiBmcm9tIHJ1bnB5IGltcG9ydCBfcnVuX2NvZGUsIF9ydW5fbW9kdWxlX2NvZGUsIHJ1bl9tb2R1bGUsIHJ1bl9wYXRoCiAjIE5vdGU6IFRoaXMgbW9kdWxlIGNhbid0IHNhZmVseSB0ZXN0IF9ydW5fbW9kdWxlX2FzX21haW4gYXMgaXQKQEAgLTE0NSw3ICsxNDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kX3BhY2thZ2UpCiAgICAgICAgIHNlbGYuY2hlY2tfY29kZV9leGVjdXRpb24oY3JlYXRlX25zLCBleHBlY3RlZF9ucykKIAotCisjIFRPRE86IFVzZSBzZWxmLmFkZENsZWFudXAgdG8gZ2V0IHJpZCBvZiBhIGxvdCBvZiB0cnktZmluYWxseSBibG9ja3MKIGNsYXNzIFJ1bk1vZHVsZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlLCBDb2RlRXhlY3V0aW9uTWl4aW4pOgogICAgICIiIlVuaXQgdGVzdHMgZm9yIHJ1bnB5LnJ1bl9tb2R1bGUiIiIKIApAQCAtMTc1LDggKzE3OSw3IEBACiAgICAgZGVmIF9hZGRfcGtnX2RpcihzZWxmLCBwa2dfZGlyKToKICAgICAgICAgb3MubWtkaXIocGtnX2RpcikKICAgICAgICAgcGtnX2ZuYW1lID0gb3MucGF0aC5qb2luKHBrZ19kaXIsICJfX2luaXRfXy5weSIpCi0gICAgICAgIHBrZ19maWxlID0gb3Blbihwa2dfZm5hbWUsICJ3IikKLSAgICAgICAgcGtnX2ZpbGUuY2xvc2UoKQorICAgICAgICBjcmVhdGVfZW1wdHlfZmlsZShwa2dfZm5hbWUpCiAgICAgICAgIHJldHVybiBwa2dfZm5hbWUKIAogICAgIGRlZiBfbWFrZV9wa2coc2VsZiwgc291cmNlLCBkZXB0aCwgbW9kX2Jhc2U9InJ1bnB5X3Rlc3QiKToKQEAgLTI1MiwxMCArMjU1LDEyIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIHZlcmJvc2UgPiAxOiBwcmludCgiUnVubmluZyBmcm9tIHNvdXJjZToiLCBtb2RfbmFtZSkKICAgICAgICAgICAgIHNlbGYuY2hlY2tfY29kZV9leGVjdXRpb24oY3JlYXRlX25zLCBleHBlY3RlZF9ucykKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgICAgICBfX2ltcG9ydF9fKG1vZF9uYW1lKQogICAgICAgICAgICAgb3MucmVtb3ZlKG1vZF9mbmFtZSkKICAgICAgICAgICAgIG1ha2VfbGVnYWN5X3B5Yyhtb2RfZm5hbWUpCiAgICAgICAgICAgICB1bmxvYWQobW9kX25hbWUpICAjIEluIGNhc2UgbG9hZGVyIGNhY2hlcyBwYXRocworICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIGlmIHZlcmJvc2UgPiAxOiBwcmludCgiUnVubmluZyBmcm9tIGNvbXBpbGVkOiIsIG1vZF9uYW1lKQogICAgICAgICAgICAgc2VsZi5fZml4X25zX2Zvcl9sZWdhY3lfcHljKGV4cGVjdGVkX25zLCBhbHRlcl9zeXMpCiAgICAgICAgICAgICBzZWxmLmNoZWNrX2NvZGVfZXhlY3V0aW9uKGNyZWF0ZV9ucywgZXhwZWN0ZWRfbnMpCkBAIC0yODUsMTEgKzI5MCwxMyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIlJ1bm5pbmcgZnJvbSBzb3VyY2U6IiwgcGtnX25hbWUpCiAgICAgICAgICAgICBzZWxmLmNoZWNrX2NvZGVfZXhlY3V0aW9uKGNyZWF0ZV9ucywgZXhwZWN0ZWRfbnMpCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgX19pbXBvcnRfXyhtb2RfbmFtZSkKICAgICAgICAgICAgIG9zLnJlbW92ZShtb2RfZm5hbWUpCiAgICAgICAgICAgICBtYWtlX2xlZ2FjeV9weWMobW9kX2ZuYW1lKQogICAgICAgICAgICAgdW5sb2FkKG1vZF9uYW1lKSAgIyBJbiBjYXNlIGxvYWRlciBjYWNoZXMgcGF0aHMKICAgICAgICAgICAgIGlmIHZlcmJvc2UgPiAxOiBwcmludCgiUnVubmluZyBmcm9tIGNvbXBpbGVkOiIsIHBrZ19uYW1lKQorICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIHNlbGYuX2ZpeF9uc19mb3JfbGVnYWN5X3B5YyhleHBlY3RlZF9ucywgYWx0ZXJfc3lzKQogICAgICAgICAgICAgc2VsZi5jaGVja19jb2RlX2V4ZWN1dGlvbihjcmVhdGVfbnMsIGV4cGVjdGVkX25zKQogICAgICAgICBmaW5hbGx5OgpAQCAtMzA2LDggKzMxMyw3IEBACiAgICAgICAgICAgICBtb2R1bGVfZGlyID0gb3MucGF0aC5qb2luKG1vZHVsZV9kaXIsIHBrZ19uYW1lKQogICAgICAgICAjIEFkZCBzaWJsaW5nIG1vZHVsZQogICAgICAgICBzaWJsaW5nX2ZuYW1lID0gb3MucGF0aC5qb2luKG1vZHVsZV9kaXIsICJzaWJsaW5nLnB5IikKLSAgICAgICAgc2libGluZ19maWxlID0gb3BlbihzaWJsaW5nX2ZuYW1lLCAidyIpCi0gICAgICAgIHNpYmxpbmdfZmlsZS5jbG9zZSgpCisgICAgICAgIGNyZWF0ZV9lbXB0eV9maWxlKHNpYmxpbmdfZm5hbWUpCiAgICAgICAgIGlmIHZlcmJvc2UgPiAxOiBwcmludCgiICBBZGRlZCBzaWJsaW5nIG1vZHVsZToiLCBzaWJsaW5nX2ZuYW1lKQogICAgICAgICAjIEFkZCBuZXBoZXcgbW9kdWxlCiAgICAgICAgIHVuY2xlX2RpciA9IG9zLnBhdGguam9pbihwYXJlbnRfZGlyLCAidW5jbGUiKQpAQCAtMzE3LDggKzMyMyw3IEBACiAgICAgICAgIHNlbGYuX2FkZF9wa2dfZGlyKGNvdXNpbl9kaXIpCiAgICAgICAgIGlmIHZlcmJvc2UgPiAxOiBwcmludCgiICBBZGRlZCBjb3VzaW4gcGFja2FnZToiLCBjb3VzaW5fZGlyKQogICAgICAgICBuZXBoZXdfZm5hbWUgPSBvcy5wYXRoLmpvaW4oY291c2luX2RpciwgIm5lcGhldy5weSIpCi0gICAgICAgIG5lcGhld19maWxlID0gb3BlbihuZXBoZXdfZm5hbWUsICJ3IikKLSAgICAgICAgbmVwaGV3X2ZpbGUuY2xvc2UoKQorICAgICAgICBjcmVhdGVfZW1wdHlfZmlsZShuZXBoZXdfZm5hbWUpCiAgICAgICAgIGlmIHZlcmJvc2UgPiAxOiBwcmludCgiICBBZGRlZCBuZXBoZXcgbW9kdWxlOiIsIG5lcGhld19mbmFtZSkKIAogICAgIGRlZiBfY2hlY2tfcmVsYXRpdmVfaW1wb3J0cyhzZWxmLCBkZXB0aCwgcnVuX25hbWU9Tm9uZSk6CkBAIC0zNDMsMTEgKzM0OCwxMyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigic2libGluZyIsIGQxKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibmVwaGV3IiwgZDEpCiAgICAgICAgICAgICBkZWwgZDEgIyBFbnN1cmUgX19sb2FkZXJfXyBlbnRyeSBkb2Vzbid0IGtlZXAgZmlsZSBvcGVuCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgX19pbXBvcnRfXyhtb2RfbmFtZSkKICAgICAgICAgICAgIG9zLnJlbW92ZShtb2RfZm5hbWUpCiAgICAgICAgICAgICBtYWtlX2xlZ2FjeV9weWMobW9kX2ZuYW1lKQogICAgICAgICAgICAgdW5sb2FkKG1vZF9uYW1lKSAgIyBJbiBjYXNlIHRoZSBsb2FkZXIgY2FjaGVzIHBhdGhzCiAgICAgICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIlJ1bm5pbmcgZnJvbSBjb21waWxlZDoiLCBtb2RfbmFtZSkKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgICAgICBkMiA9IHJ1bl9tb2R1bGUobW9kX25hbWUsIHJ1bl9uYW1lPXJ1bl9uYW1lKSAjIFJlYWQgZnJvbSBieXRlY29kZQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMlsiX19uYW1lX18iXSwgZXhwZWN0ZWRfbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDJbIl9fcGFja2FnZV9fIl0sIHBrZ19uYW1lKQpAQCAtNDA3LDYgKzQxNCw0MCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5fZGVsX3BrZyhwa2dfZGlyLCBkZXB0aCwgbW9kX25hbWUpCiAKKyAgICBkZWYgdGVzdF9wa2d1dGlsX3dhbGtfcGFja2FnZXMoc2VsZik6CisgICAgICAgICMgVGhpcyBpcyBhIGRvZGd5IGhhY2sgdG8gdXNlIHRoZSB0ZXN0X3J1bnB5IGluZnJhc3RydWN0dXJlIHRvIHRlc3QKKyAgICAgICAgIyBpc3N1ZSAjMTUzNDMuIElzc3VlICMxNTM0OCBkZWNsYXJlcyB0aGlzIGlzIGluZGVlZCBhIGRvZGd5IGhhY2sgOykKKyAgICAgICAgaW1wb3J0IHBrZ3V0aWwKKyAgICAgICAgbWF4X2RlcHRoID0gNAorICAgICAgICBiYXNlX25hbWUgPSAiX19ydW5weV9wa2dfXyIKKyAgICAgICAgcGFja2FnZV9zdWZmaXhlcyA9IFsidW5jbGUiLCAidW5jbGUuY291c2luIl0KKyAgICAgICAgbW9kdWxlX3N1ZmZpeGVzID0gWyJ1bmNsZS5jb3VzaW4ubmVwaGV3IiwgYmFzZV9uYW1lICsgIi5zaWJsaW5nIl0KKyAgICAgICAgZXhwZWN0ZWRfcGFja2FnZXMgPSBzZXQoKQorICAgICAgICBleHBlY3RlZF9tb2R1bGVzID0gc2V0KCkKKyAgICAgICAgZm9yIGRlcHRoIGluIHJhbmdlKDEsIG1heF9kZXB0aCk6CisgICAgICAgICAgICBwa2dfbmFtZSA9ICIuIi5qb2luKFtiYXNlX25hbWVdICogZGVwdGgpCisgICAgICAgICAgICBleHBlY3RlZF9wYWNrYWdlcy5hZGQocGtnX25hbWUpCisgICAgICAgICAgICBmb3IgbmFtZSBpbiBwYWNrYWdlX3N1ZmZpeGVzOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2VzLmFkZChwa2dfbmFtZSArICIuIiArIG5hbWUpCisgICAgICAgICAgICBmb3IgbmFtZSBpbiBtb2R1bGVfc3VmZml4ZXM6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbW9kdWxlcy5hZGQocGtnX25hbWUgKyAiLiIgKyBuYW1lKQorICAgICAgICBwa2dfbmFtZSA9ICIuIi5qb2luKFtiYXNlX25hbWVdICogbWF4X2RlcHRoKQorICAgICAgICBleHBlY3RlZF9wYWNrYWdlcy5hZGQocGtnX25hbWUpCisgICAgICAgIGV4cGVjdGVkX21vZHVsZXMuYWRkKHBrZ19uYW1lICsgIi5ydW5weV90ZXN0IikKKyAgICAgICAgcGtnX2RpciwgbW9kX2ZuYW1lLCBtb2RfbmFtZSA9ICgKKyAgICAgICAgICAgICAgIHNlbGYuX21ha2VfcGtnKCIiLCBtYXhfZGVwdGgpKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5fZGVsX3BrZywgcGtnX2RpciwgbWF4X2RlcHRoLCBtb2RfbmFtZSkKKyAgICAgICAgZm9yIGRlcHRoIGluIHJhbmdlKDIsIG1heF9kZXB0aCsxKToKKyAgICAgICAgICAgIHNlbGYuX2FkZF9yZWxhdGl2ZV9tb2R1bGVzKHBrZ19kaXIsICIiLCBkZXB0aCkKKyAgICAgICAgZm9yIGZpbmRlciwgbW9kX25hbWUsIGlzcGtnIGluIHBrZ3V0aWwud2Fsa19wYWNrYWdlcyhbcGtnX2Rpcl0pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZpbmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIpCisgICAgICAgICAgICBpZiBpc3BrZzoKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9wYWNrYWdlcy5yZW1vdmUobW9kX25hbWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkX21vZHVsZXMucmVtb3ZlKG1vZF9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9wYWNrYWdlcyksIDAsIGV4cGVjdGVkX3BhY2thZ2VzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9tb2R1bGVzKSwgMCwgZXhwZWN0ZWRfbW9kdWxlcykKIAogY2xhc3MgUnVuUGF0aFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlLCBDb2RlRXhlY3V0aW9uTWl4aW4pOgogICAgICIiIlVuaXQgdGVzdHMgZm9yIHJ1bnB5LnJ1bl9wYXRoIiIiCkBAIC01MDcsNiArNTQ4LDcgQEAKICAgICAgICAgICAgIG1zZyA9ICJjYW4ndCBmaW5kICdfX21haW5fXycgbW9kdWxlIGluICVyIiAlIHppcF9uYW1lCiAgICAgICAgICAgICBzZWxmLl9jaGVja19pbXBvcnRfZXJyb3IoemlwX25hbWUsIG1zZykKIAorICAgIEBub190cmFjaW5nCiAgICAgZGVmIHRlc3RfbWFpbl9yZWN1cnNpb25fZXJyb3Ioc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyLCB0ZW1wX2RpcigpIGFzIGR1bW15X2RpcjoKICAgICAgICAgICAgIG1vZF9uYW1lID0gJ19fbWFpbl9fJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zYXgucHkgYi9MaWIvdGVzdC90ZXN0X3NheC5weQppbmRleCBiZmE3ZDcyLi4wNWY2NmZkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NheC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NheC5weQpAQCAtMjMsOCArMjMsOCBAQAogVEVTVF9YTUxGSUxFID0gZmluZGZpbGUoInRlc3QueG1sIiwgc3ViZGlyPSJ4bWx0ZXN0ZGF0YSIpCiBURVNUX1hNTEZJTEVfT1VUID0gZmluZGZpbGUoInRlc3QueG1sLm91dCIsIHN1YmRpcj0ieG1sdGVzdGRhdGEiKQogdHJ5OgotICAgIFRFU1RfWE1MRklMRS5lbmNvZGUoInV0ZjgiKQotICAgIFRFU1RfWE1MRklMRV9PVVQuZW5jb2RlKCJ1dGY4IikKKyAgICBURVNUX1hNTEZJTEUuZW5jb2RlKCJ1dGYtOCIpCisgICAgVEVTVF9YTUxGSUxFX09VVC5lbmNvZGUoInV0Zi04IikKIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoImZpbGVuYW1lIGlzIG5vdCBlbmNvZGFibGUgdG8gdXRmOCIpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2NoZWQucHkgYi9MaWIvdGVzdC90ZXN0X3NjaGVkLnB5CmluZGV4IDkxYjhmMGMuLjFmZTZhZDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2NoZWQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zY2hlZC5weQpAQCAtMSw5ICsxLDQ0IEBACiAjIS91c3IvYmluL2VudiBweXRob24KIAoraW1wb3J0IHF1ZXVlCiBpbXBvcnQgc2NoZWQKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB0aHJlYWRpbmcgPSBOb25lCisKK1RJTUVPVVQgPSAxMAorCisKK2NsYXNzIFRpbWVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fY29uZCA9IHRocmVhZGluZy5Db25kaXRpb24oKQorICAgICAgICBzZWxmLl90aW1lID0gMAorICAgICAgICBzZWxmLl9zdG9wID0gMAorCisgICAgZGVmIHRpbWUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5fY29uZDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl90aW1lCisKKyAgICAjIGluY3JlYXNlIHRoZSB0aW1lIGJ1dCBub3QgYmV5b25kIHRoZSBlc3RhYmxpc2hlZCBsaW1pdAorICAgIGRlZiBzbGVlcChzZWxmLCB0KToKKyAgICAgICAgYXNzZXJ0IHQgPj0gMAorICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CisgICAgICAgICAgICB0ICs9IHNlbGYuX3RpbWUKKyAgICAgICAgICAgIHdoaWxlIHNlbGYuX3N0b3AgPCB0OgorICAgICAgICAgICAgICAgIHNlbGYuX3RpbWUgPSBzZWxmLl9zdG9wCisgICAgICAgICAgICAgICAgc2VsZi5fY29uZC53YWl0KCkKKyAgICAgICAgICAgIHNlbGYuX3RpbWUgPSB0CisKKyAgICAjIGFkdmFuY2UgdGltZSBsaW1pdCBmb3IgdXNlciBjb2RlCisgICAgZGVmIGFkdmFuY2Uoc2VsZiwgdCk6CisgICAgICAgIGFzc2VydCB0ID49IDAKKyAgICAgICAgd2l0aCBzZWxmLl9jb25kOgorICAgICAgICAgICAgc2VsZi5fc3RvcCArPSB0CisgICAgICAgICAgICBzZWxmLl9jb25kLm5vdGlmeV9hbGwoKQogCiAKIGNsYXNzIFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTI2LDYgKzYxLDM3IEBACiAgICAgICAgIHNjaGVkdWxlci5ydW4oKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGwsIFswLjAxLCAwLjAyLCAwLjAzLCAwLjA0LCAwLjA1XSkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3RfZW50ZXJfY29uY3VycmVudChzZWxmKToKKyAgICAgICAgcSA9IHF1ZXVlLlF1ZXVlKCkKKyAgICAgICAgZnVuID0gcS5wdXQKKyAgICAgICAgdGltZXIgPSBUaW1lcigpCisgICAgICAgIHNjaGVkdWxlciA9IHNjaGVkLnNjaGVkdWxlcih0aW1lci50aW1lLCB0aW1lci5zbGVlcCkKKyAgICAgICAgc2NoZWR1bGVyLmVudGVyKDEsIDEsIGZ1biwgKDEsKSkKKyAgICAgICAgc2NoZWR1bGVyLmVudGVyKDMsIDEsIGZ1biwgKDMsKSkKKyAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNjaGVkdWxlci5ydW4pCisgICAgICAgIHQuc3RhcnQoKQorICAgICAgICB0aW1lci5hZHZhbmNlKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocS5nZXQodGltZW91dD1USU1FT1VUKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHEuZW1wdHkoKSkKKyAgICAgICAgZm9yIHggaW4gWzQsIDUsIDJdOgorICAgICAgICAgICAgeiA9IHNjaGVkdWxlci5lbnRlcih4IC0gMSwgMSwgZnVuLCAoeCwpKQorICAgICAgICB0aW1lci5hZHZhbmNlKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocS5nZXQodGltZW91dD1USU1FT1VUKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxLmdldCh0aW1lb3V0PVRJTUVPVVQpLCAzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocS5lbXB0eSgpKQorICAgICAgICB0aW1lci5hZHZhbmNlKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocS5nZXQodGltZW91dD1USU1FT1VUKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHEuZW1wdHkoKSkKKyAgICAgICAgdGltZXIuYWR2YW5jZSgxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHEuZ2V0KHRpbWVvdXQ9VElNRU9VVCksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxLmVtcHR5KCkpCisgICAgICAgIHRpbWVyLmFkdmFuY2UoMTAwMCkKKyAgICAgICAgdC5qb2luKHRpbWVvdXQ9VElNRU9VVCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0LmlzX2FsaXZlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxLmVtcHR5KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZXIudGltZSgpLCA1KQorCiAgICAgZGVmIHRlc3RfcHJpb3JpdHkoc2VsZik6CiAgICAgICAgIGwgPSBbXQogICAgICAgICBmdW4gPSBsYW1iZGEgeDogbC5hcHBlbmQoeCkKQEAgLTUwLDYgKzExNiwzOSBAQAogICAgICAgICBzY2hlZHVsZXIucnVuKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsLCBbMC4wMiwgMC4wMywgMC4wNF0pCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIGRlZiB0ZXN0X2NhbmNlbF9jb25jdXJyZW50KHNlbGYpOgorICAgICAgICBxID0gcXVldWUuUXVldWUoKQorICAgICAgICBmdW4gPSBxLnB1dAorICAgICAgICB0aW1lciA9IFRpbWVyKCkKKyAgICAgICAgc2NoZWR1bGVyID0gc2NoZWQuc2NoZWR1bGVyKHRpbWVyLnRpbWUsIHRpbWVyLnNsZWVwKQorICAgICAgICBub3cgPSB0aW1lci50aW1lKCkKKyAgICAgICAgZXZlbnQxID0gc2NoZWR1bGVyLmVudGVyYWJzKG5vdyArIDEsIDEsIGZ1biwgKDEsKSkKKyAgICAgICAgZXZlbnQyID0gc2NoZWR1bGVyLmVudGVyYWJzKG5vdyArIDIsIDEsIGZ1biwgKDIsKSkKKyAgICAgICAgZXZlbnQ0ID0gc2NoZWR1bGVyLmVudGVyYWJzKG5vdyArIDQsIDEsIGZ1biwgKDQsKSkKKyAgICAgICAgZXZlbnQ1ID0gc2NoZWR1bGVyLmVudGVyYWJzKG5vdyArIDUsIDEsIGZ1biwgKDUsKSkKKyAgICAgICAgZXZlbnQzID0gc2NoZWR1bGVyLmVudGVyYWJzKG5vdyArIDMsIDEsIGZ1biwgKDMsKSkKKyAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNjaGVkdWxlci5ydW4pCisgICAgICAgIHQuc3RhcnQoKQorICAgICAgICB0aW1lci5hZHZhbmNlKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocS5nZXQodGltZW91dD1USU1FT1VUKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHEuZW1wdHkoKSkKKyAgICAgICAgc2NoZWR1bGVyLmNhbmNlbChldmVudDIpCisgICAgICAgIHNjaGVkdWxlci5jYW5jZWwoZXZlbnQ1KQorICAgICAgICB0aW1lci5hZHZhbmNlKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxLmVtcHR5KCkpCisgICAgICAgIHRpbWVyLmFkdmFuY2UoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxLmdldCh0aW1lb3V0PVRJTUVPVVQpLCAzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocS5lbXB0eSgpKQorICAgICAgICB0aW1lci5hZHZhbmNlKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocS5nZXQodGltZW91dD1USU1FT1VUKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHEuZW1wdHkoKSkKKyAgICAgICAgdGltZXIuYWR2YW5jZSgxMDAwKQorICAgICAgICB0LmpvaW4odGltZW91dD1USU1FT1VUKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHQuaXNfYWxpdmUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHEuZW1wdHkoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lci50aW1lKCksIDQpCisKICAgICBkZWYgdGVzdF9lbXB0eShzZWxmKToKICAgICAgICAgbCA9IFtdCiAgICAgICAgIGZ1biA9IGxhbWJkYSB4OiBsLmFwcGVuZCh4KQpAQCAtNjMsMTUgKzE2MiwzOSBAQAogCiAgICAgZGVmIHRlc3RfcXVldWUoc2VsZik6CiAgICAgICAgIGwgPSBbXQotICAgICAgICBldmVudHMgPSBbXQogICAgICAgICBmdW4gPSBsYW1iZGEgeDogbC5hcHBlbmQoeCkKICAgICAgICAgc2NoZWR1bGVyID0gc2NoZWQuc2NoZWR1bGVyKHRpbWUudGltZSwgdGltZS5zbGVlcCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY2hlZHVsZXIuX3F1ZXVlLCBbXSkKLSAgICAgICAgZm9yIHggaW4gWzAuMDUsIDAuMDQsIDAuMDMsIDAuMDIsIDAuMDFdOgotICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChzY2hlZHVsZXIuZW50ZXJhYnMoeCwgMSwgZnVuLCAoeCwpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY2hlZHVsZXIuX3F1ZXVlLnNvcnQoKSwgZXZlbnRzLnNvcnQoKSkKKyAgICAgICAgbm93ID0gdGltZS50aW1lKCkKKyAgICAgICAgZTUgPSBzY2hlZHVsZXIuZW50ZXJhYnMobm93ICsgMC4wNSwgMSwgZnVuKQorICAgICAgICBlMSA9IHNjaGVkdWxlci5lbnRlcmFicyhub3cgKyAwLjAxLCAxLCBmdW4pCisgICAgICAgIGUyID0gc2NoZWR1bGVyLmVudGVyYWJzKG5vdyArIDAuMDIsIDEsIGZ1bikKKyAgICAgICAgZTQgPSBzY2hlZHVsZXIuZW50ZXJhYnMobm93ICsgMC4wNCwgMSwgZnVuKQorICAgICAgICBlMyA9IHNjaGVkdWxlci5lbnRlcmFicyhub3cgKyAwLjAzLCAxLCBmdW4pCisgICAgICAgICMgcXVldWUgcHJvcGVydHkgaXMgc3VwcG9zZWQgdG8gcmV0dXJuIGFuIG9yZGVyIGxpc3Qgb2YKKyAgICAgICAgIyB1cGNvbWluZyBldmVudHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNjaGVkdWxlci5xdWV1ZSksIFtlMSwgZTIsIGUzLCBlNCwgZTVdKQorCisgICAgZGVmIHRlc3RfYXJnc19rd2FyZ3Moc2VsZik6CisgICAgICAgIGZsYWcgPSBbXQorCisgICAgICAgIGRlZiBmdW4oKmEsICoqYik6CisgICAgICAgICAgICBmbGFnLmFwcGVuZChOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCAoMSwyLDMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCB7ImZvbyI6MX0pCisKKyAgICAgICAgc2NoZWR1bGVyID0gc2NoZWQuc2NoZWR1bGVyKHRpbWUudGltZSwgdGltZS5zbGVlcCkKKyAgICAgICAgeiA9IHNjaGVkdWxlci5lbnRlcmFicygwLjAxLCAxLCBmdW4sIGFyZ3VtZW50PSgxLDIsMyksIGt3YXJncz17ImZvbyI6MX0pCiAgICAgICAgIHNjaGVkdWxlci5ydW4oKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjaGVkdWxlci5fcXVldWUsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsYWcsIFtOb25lXSkKKworICAgIGRlZiB0ZXN0X3J1bl9ub25fYmxvY2tpbmcoc2VsZik6CisgICAgICAgIGwgPSBbXQorICAgICAgICBmdW4gPSBsYW1iZGEgeDogbC5hcHBlbmQoeCkKKyAgICAgICAgc2NoZWR1bGVyID0gc2NoZWQuc2NoZWR1bGVyKHRpbWUudGltZSwgdGltZS5zbGVlcCkKKyAgICAgICAgZm9yIHggaW4gWzEwLCA5LCA4LCA3LCA2XToKKyAgICAgICAgICAgIHNjaGVkdWxlci5lbnRlcih4LCAxLCBmdW4sICh4LCkpCisgICAgICAgIHNjaGVkdWxlci5ydW4oYmxvY2tpbmc9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobCwgW10pCiAKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zY29wZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc2NvcGUucHkKaW5kZXggZmJjODdhYS4uMTI5YTE4YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zY29wZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Njb3BlLnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2hlY2tfc3ludGF4X2Vycm9yLCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjaGVja19zeW50YXhfZXJyb3IsIGNweXRob25fb25seSwgcnVuX3VuaXR0ZXN0CiAKIAogY2xhc3MgU2NvcGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC00OTYsMjMgKzQ5NiwyMiBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJ4IiwgdmFybmFtZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInkiLCB2YXJuYW1lcykKIAorICAgIEBjcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdExvY2Fsc0NsYXNzX1dpdGhUcmFjZShzZWxmKToKICAgICAgICAgIyBJc3N1ZTIzNzI4OiBhZnRlciB0aGUgdHJhY2UgZnVuY3Rpb24gcmV0dXJucywgdGhlIGxvY2FscygpCiAgICAgICAgICMgZGljdGlvbmFyeSBpcyB1c2VkIHRvIHVwZGF0ZSBhbGwgdmFyaWFibGVzLCB0aGlzIHVzZWQgdG8KICAgICAgICAgIyBpbmNsdWRlIGZyZWUgdmFyaWFibGVzLiBCdXQgaW4gY2xhc3Mgc3RhdGVtZW50cywgZnJlZQogICAgICAgICAjIHZhcmlhYmxlcyBhcmUgbm90IGluc2VydGVkLi4uCiAgICAgICAgIGltcG9ydCBzeXMKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXR0cmFjZSwgc3lzLmdldHRyYWNlKCkpCiAgICAgICAgIHN5cy5zZXR0cmFjZShsYW1iZGEgYSxiLGM6Tm9uZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgeCA9IDEyCisgICAgICAgIHggPSAxMgogCi0gICAgICAgICAgICBjbGFzcyBDOgotICAgICAgICAgICAgICAgIGRlZiBmKHNlbGYpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4geAorICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgZGVmIGYoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHgKIAotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCAxMikgIyBVc2VkIHRvIHJhaXNlIFVuYm91bmRMb2NhbEVycm9yCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzeXMuc2V0dHJhY2UoTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCAxMikgIyBVc2VkIHRvIHJhaXNlIFVuYm91bmRMb2NhbEVycm9yCiAKICAgICBkZWYgdGVzdEJvdW5kQW5kRnJlZShzZWxmKToKICAgICAgICAgIyB2YXIgaXMgYm91bmQgYW5kIGZyZWUgaW4gY2xhc3MKQEAgLTUyNyw2ICs1MjYsNyBAQAogICAgICAgICBpbnN0ID0gZigzKSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zdC5hLCBpbnN0Lm0oKSkKIAorICAgIEBjcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdEludGVyYWN0aW9uV2l0aFRyYWNlRnVuYyhzZWxmKToKIAogICAgICAgICBpbXBvcnQgc3lzCkBAIC01NDMsNiArNTQzLDcgQEAKICAgICAgICAgY2xhc3MgVGVzdENsYXNzOgogICAgICAgICAgICAgcGFzcwogCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQogICAgICAgICBzeXMuc2V0dHJhY2UodHJhY2VyKQogICAgICAgICBhZGFwdGdldHRlcigiZm9vIiwgVGVzdENsYXNzLCAoMSwgIiIpKQogICAgICAgICBzeXMuc2V0dHJhY2UoTm9uZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9zZWxlY3QucHkKaW5kZXggNGRkYzIxNy4uZGRiOWEwZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zZWxlY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zZWxlY3QucHkKQEAgLTEsOCArMSw5IEBACi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHNlbGVjdAoraW1wb3J0IGVycm5vCiBpbXBvcnQgb3MKK2ltcG9ydCBzZWxlY3QKIGltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtWzozXSBpbiAoJ3dpbicsICdvczInLCAncmlzY29zJyksCiAgICAgICAgICAgICAgICAgICJjYW4ndCBlYXNpbHkgdGVzdCBvbiB0aGlzIHN5c3RlbSIpCkBAIC0yMCw2ICsyMSwyMSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGVjdC5zZWxlY3QsIFtzZWxmLk5vcGUoKV0sIFtdLCBbXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxlY3Quc2VsZWN0LCBbc2VsZi5BbG1vc3QoKV0sIFtdLCBbXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxlY3Quc2VsZWN0LCBbXSwgW10sIFtdLCAibm90IGEgbnVtYmVyIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZWN0LnNlbGVjdCwgW10sIFtdLCBbXSwgLTEpCisKKyAgICAjIElzc3VlICMxMjM2NzogaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jZ2kvcXVlcnktcHIuY2dpP3ByPWtlcm4vMTU1NjA2CisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnZnJlZWJzZCcpLAorICAgICAgICAgICAgICAgICAgICAgJ3NraXAgYmVjYXVzZSBvZiBhIEZyZWVCU0QgYnVnOiBrZXJuLzE1NTYwNicpCisgICAgZGVmIHRlc3RfZXJybm8oc2VsZik6CisgICAgICAgIHdpdGggb3BlbihfX2ZpbGVfXywgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICBmZCA9IGZwLmZpbGVubygpCisgICAgICAgICAgICBmcC5jbG9zZSgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbZmRdLCBbXSwgW10sIDApCisgICAgICAgICAgICBleGNlcHQgc2VsZWN0LmVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5lcnJubywgZXJybm8uRUJBREYpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiZXhjZXB0aW9uIG5vdCByYWlzZWQiKQogCiAgICAgZGVmIHRlc3RfcmV0dXJuZWRfbGlzdF9pZGVudGl0eShzZWxmKToKICAgICAgICAgIyBTZWUgaXNzdWUgIzgzMjkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2V0LnB5IGIvTGliL3Rlc3QvdGVzdF9zZXQucHkKaW5kZXggNjY0MjQ0MC4uOGU5ZTU4NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zZXQucHkKQEAgLTksNiArOSw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGNvbGxlY3Rpb25zLmFiYwogCiBjbGFzcyBQYXNzVGhydShFeGNlcHRpb24pOgogICAgIHBhc3MKQEAgLTIzNCw2ICsyMzUsMjYgQEAKICAgICAgICAgICAgICAgICBkdXAgPSBwaWNrbGUubG9hZHMocCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucy54LCBkdXAueCkKIAorICAgIGRlZiB0ZXN0X2l0ZXJhdG9yX3BpY2tsaW5nKHNlbGYpOgorICAgICAgICBpdG9yZyA9IGl0ZXIoc2VsZi5zKQorICAgICAgICBkYXRhID0gc2VsZi50aGV0eXBlKHNlbGYucykKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdG9yZykKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgIyBTZXQgaXRlcmF0b3JzIHVucGlja2xlIGFzIGxpc3QgaXRlcmF0b3JzIGR1ZSB0byB0aGUKKyAgICAgICAgIyB1bmRlZmluZWQgb3JkZXIgb2Ygc2V0IGl0ZW1zLgorICAgICAgICAjIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShpdCwgY29sbGVjdGlvbnMuYWJjLkl0ZXJhdG9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRoZXR5cGUoaXQpLCBkYXRhKQorCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRyb3AgPSBuZXh0KGl0KQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGhldHlwZShpdCksIGRhdGEgLSBzZWxmLnRoZXR5cGUoKGRyb3AsKSkpCisKICAgICBkZWYgdGVzdF9kZWVwY29weShzZWxmKToKICAgICAgICAgY2xhc3MgVHJhY2VyOgogICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2hlbHZlLnB5IGIvTGliL3Rlc3QvdGVzdF9zaGVsdmUucHkKaW5kZXggM2U3M2Y1Mi4uMTNjMTI2NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaGVsdmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaGVsdmUucHkKQEAgLTIsNyArMiw3IEBACiBpbXBvcnQgc2hlbHZlCiBpbXBvcnQgZ2xvYgogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBNdXRhYmxlTWFwcGluZworZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE11dGFibGVNYXBwaW5nCiBmcm9tIHRlc3QudGVzdF9kYm0gaW1wb3J0IGRibV9pdGVyYXRvcgogCiBkZWYgTDEocyk6CkBAIC0xMjksOCArMTI5LDggQEAKICAgICAgICAgc2hlbHZlLlNoZWxmKGQpW2tleV0gPSBbMV0KICAgICAgICAgc2VsZi5hc3NlcnRJbihrZXkuZW5jb2RlKCd1dGYtOCcpLCBkKQogICAgICAgICAjIGJ1dCBhIGRpZmZlcmVudCBvbmUgY2FuIGJlIGdpdmVuCi0gICAgICAgIHNoZWx2ZS5TaGVsZihkLCBrZXllbmNvZGluZz0nbGF0aW4xJylba2V5XSA9IFsxXQotICAgICAgICBzZWxmLmFzc2VydEluKGtleS5lbmNvZGUoJ2xhdGluMScpLCBkKQorICAgICAgICBzaGVsdmUuU2hlbGYoZCwga2V5ZW5jb2Rpbmc9J2xhdGluLTEnKVtrZXldID0gWzFdCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oa2V5LmVuY29kZSgnbGF0aW4tMScpLCBkKQogICAgICAgICAjIHdpdGggYWxsIGNvbnNlcXVlbmNlcwogICAgICAgICBzID0gc2hlbHZlLlNoZWxmKGQsIGtleWVuY29kaW5nPSdhc2NpaScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgcy5fX3NldGl0ZW1fXywga2V5LCBbMV0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NobGV4LnB5IGIvTGliL3Rlc3QvdGVzdF9zaGxleC5weQppbmRleCAyNWU0YjZkLi5kMjgwOWFlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NobGV4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkKQEAgLTEsNiArMSw3IEBACi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcywgc3lzLCBpbworaW1wb3J0IGlvCiBpbXBvcnQgc2hsZXgKK2ltcG9ydCBzdHJpbmcKK2ltcG9ydCB1bml0dGVzdAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApAQCAtMTczLDYgKzE3NCwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXM6ICVzICE9ICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmRhdGFbaV1bMF0sIGwsIHNlbGYuZGF0YVtpXVsxOl0pKQogCisgICAgZGVmIHRlc3RRdW90ZShzZWxmKToKKyAgICAgICAgc2FmZXVucXVvdGVkID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgJ0AlXy0rPTosLi8nCisgICAgICAgIHVuaWNvZGVfc2FtcGxlID0gJ1x4ZTlceGUwXHhkZicgICMgZSArIGFjdXRlIGFjY2VudCwgYSArIGdyYXZlLCBzaGFycCBzCisgICAgICAgIHVuc2FmZSA9ICciYCRcXCEnICsgdW5pY29kZV9zYW1wbGUKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNobGV4LnF1b3RlKCcnKSwgIicnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaGxleC5xdW90ZShzYWZldW5xdW90ZWQpLCBzYWZldW5xdW90ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hsZXgucXVvdGUoJ3Rlc3QgZmlsZSBuYW1lJyksICIndGVzdCBmaWxlIG5hbWUnIikKKyAgICAgICAgZm9yIHUgaW4gdW5zYWZlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaGxleC5xdW90ZSgndGVzdCVzbmFtZScgJSB1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIid0ZXN0JXNuYW1lJyIgJSB1KQorICAgICAgICBmb3IgdSBpbiB1bnNhZmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNobGV4LnF1b3RlKCJ0ZXN0JXMnbmFtZSciICUgdSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIndGVzdCVzJ1wiJ1wiJ25hbWUnXCInXCInJyIgJSB1KQorCiAjIEFsbG93IHRoaXMgdGVzdCB0byBiZSB1c2VkIHdpdGggb2xkIHNobGV4LnB5CiBpZiBub3QgZ2V0YXR0cihzaGxleCwgInNwbGl0IiwgTm9uZSk6CiAgICAgZm9yIG1ldGhuYW1lIGluIGRpcihTaGxleFRlc3QpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkgYi9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQppbmRleCBhOWI0Njc2Li4zYjFiNjk0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQpAQCAtNyw4ICs3LDkgQEAKIGltcG9ydCBzdGF0CiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCi1pbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgZXJybm8KK2ltcG9ydCBmdW5jdG9vbHMKK2ltcG9ydCBzdWJwcm9jZXNzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4KIGZyb20gb3MucGF0aCBpbXBvcnQgc3BsaXRkcml2ZQpAQCAtMjIsNyArMjMsNyBAQAogaW1wb3J0IHdhcm5pbmdzCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgY2hlY2tfd2FybmluZ3MsIGNhcHR1cmVkX3N0ZG91dAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgY2hlY2tfd2FybmluZ3MsIGNhcHR1cmVkX3N0ZG91dCwgcmVxdWlyZXNfemxpYgogCiB0cnk6CiAgICAgaW1wb3J0IGJ6MgpAQCAtNDAsMTEgKzQxLDYgQEAKICAgICBVSURfR0lEX1NVUFBPUlQgPSBGYWxzZQogCiB0cnk6Ci0gICAgaW1wb3J0IHpsaWIKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICB6bGliID0gTm9uZQotCi10cnk6CiAgICAgaW1wb3J0IHppcGZpbGUKICAgICBaSVBfU1VQUE9SVCA9IFRydWUKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTUyLDcgKzQ4LDcgQEAKIAogZGVmIF9mYWtlX3JlbmFtZSgqYXJncywgKiprd2FyZ3MpOgogICAgICMgUHJldGVuZCB0aGUgZGVzdGluYXRpb24gcGF0aCBpcyBvbiBhIGRpZmZlcmVudCBmaWxlc3lzdGVtLgotICAgIHJhaXNlIE9TRXJyb3IoKQorICAgIHJhaXNlIE9TRXJyb3IoZ2V0YXR0cihlcnJubywgJ0VYREVWJywgMTgpLCAiSW52YWxpZCBjcm9zcy1kZXZpY2UgbGluayIpCiAKIGRlZiBtb2NrX3JlbmFtZShmdW5jKToKICAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCkBAIC02NSw2ICs2MSwzMSBAQAogICAgICAgICAgICAgb3MucmVuYW1lID0gYnVpbHRpbl9yZW5hbWUKICAgICByZXR1cm4gd3JhcAogCitkZWYgd3JpdGVfZmlsZShwYXRoLCBjb250ZW50LCBiaW5hcnk9RmFsc2UpOgorICAgICIiIldyaXRlICpjb250ZW50KiB0byBhIGZpbGUgbG9jYXRlZCBhdCAqcGF0aCouCisKKyAgICBJZiAqcGF0aCogaXMgYSB0dXBsZSBpbnN0ZWFkIG9mIGEgc3RyaW5nLCBvcy5wYXRoLmpvaW4gd2lsbCBiZSB1c2VkIHRvCisgICAgbWFrZSBhIHBhdGguICBJZiAqYmluYXJ5KiBpcyB0cnVlLCB0aGUgZmlsZSB3aWxsIGJlIG9wZW5lZCBpbiBiaW5hcnkKKyAgICBtb2RlLgorICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgdHVwbGUpOgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCpwYXRoKQorICAgIHdpdGggb3BlbihwYXRoLCAnd2InIGlmIGJpbmFyeSBlbHNlICd3JykgYXMgZnA6CisgICAgICAgIGZwLndyaXRlKGNvbnRlbnQpCisKK2RlZiByZWFkX2ZpbGUocGF0aCwgYmluYXJ5PUZhbHNlKToKKyAgICAiIiJSZXR1cm4gY29udGVudHMgZnJvbSBhIGZpbGUgbG9jYXRlZCBhdCAqcGF0aCouCisKKyAgICBJZiAqcGF0aCogaXMgYSB0dXBsZSBpbnN0ZWFkIG9mIGEgc3RyaW5nLCBvcy5wYXRoLmpvaW4gd2lsbCBiZSB1c2VkIHRvCisgICAgbWFrZSBhIHBhdGguICBJZiAqYmluYXJ5KiBpcyB0cnVlLCB0aGUgZmlsZSB3aWxsIGJlIG9wZW5lZCBpbiBiaW5hcnkKKyAgICBtb2RlLgorICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgdHVwbGUpOgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCpwYXRoKQorICAgIHdpdGggb3BlbihwYXRoLCAncmInIGlmIGJpbmFyeSBlbHNlICdyJykgYXMgZnA6CisgICAgICAgIHJldHVybiBmcC5yZWFkKCkKKworCiBjbGFzcyBUZXN0U2h1dGlsKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTc3LDE5ICs5OCw2IEBACiAgICAgICAgICAgICBkID0gc2VsZi50ZW1wZGlycy5wb3AoKQogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkLCBvcy5uYW1lIGluICgnbnQnLCAnY3lnd2luJykpCiAKLSAgICBkZWYgd3JpdGVfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50PSd4eHgnKToKLSAgICAgICAgIiIiV3JpdGVzIGEgZmlsZSBpbiB0aGUgZ2l2ZW4gcGF0aC4KLQotCi0gICAgICAgIHBhdGggY2FuIGJlIGEgc3RyaW5nIG9yIGEgc2VxdWVuY2UuCi0gICAgICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIChsaXN0LCB0dXBsZSkpOgotICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbigqcGF0aCkKLSAgICAgICAgZiA9IG9wZW4ocGF0aCwgJ3cnKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmLndyaXRlKGNvbnRlbnQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKIAogICAgIGRlZiBta2R0ZW1wKHNlbGYpOgogICAgICAgICAiIiJDcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRoYXQgd2lsbCBiZSBjbGVhbmVkIHVwLgpAQCAtMTAwLDYgKzEwOCwxNSBAQAogICAgICAgICBzZWxmLnRlbXBkaXJzLmFwcGVuZChkKQogICAgICAgICByZXR1cm4gZAogCisgICAgZGVmIHRlc3Rfcm10cmVlX3dvcmtzX29uX2J5dGVzKHNlbGYpOgorICAgICAgICB0bXAgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICB2aWN0aW0gPSBvcy5wYXRoLmpvaW4odG1wLCAna2lsbG1lJykKKyAgICAgICAgb3MubWtkaXIodmljdGltKQorICAgICAgICB3cml0ZV9maWxlKG9zLnBhdGguam9pbih2aWN0aW0sICdzb21lZmlsZScpLCAnZm9vJykKKyAgICAgICAgdmljdGltID0gb3MuZnNlbmNvZGUodmljdGltKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodmljdGltLCBieXRlcykKKyAgICAgICAgc2h1dGlsLnJtdHJlZSh2aWN0aW0pCisKICAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCiAgICAgZGVmIHRlc3Rfcm10cmVlX2ZhaWxzX29uX3N5bWxpbmsoc2VsZik6CiAgICAgICAgIHRtcCA9IHNlbGYubWtkdGVtcCgpCkBAIC0xMTksMTggKzEzNiw0MCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVycm9yc1swXVsxXSwgbGluaykKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGVycm9yc1swXVsyXVsxXSwgT1NFcnJvcikKIAorICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9ybXRyZWVfd29ya3Nfb25fc3ltbGlua3Moc2VsZik6CisgICAgICAgIHRtcCA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIGRpcjEgPSBvcy5wYXRoLmpvaW4odG1wLCAnZGlyMScpCisgICAgICAgIGRpcjIgPSBvcy5wYXRoLmpvaW4oZGlyMSwgJ2RpcjInKQorICAgICAgICBkaXIzID0gb3MucGF0aC5qb2luKHRtcCwgJ2RpcjMnKQorICAgICAgICBmb3IgZCBpbiBkaXIxLCBkaXIyLCBkaXIzOgorICAgICAgICAgICAgb3MubWtkaXIoZCkKKyAgICAgICAgZmlsZTEgPSBvcy5wYXRoLmpvaW4odG1wLCAnZmlsZTEnKQorICAgICAgICB3cml0ZV9maWxlKGZpbGUxLCAnZm9vJykKKyAgICAgICAgbGluazEgPSBvcy5wYXRoLmpvaW4oZGlyMSwgJ2xpbmsxJykKKyAgICAgICAgb3Muc3ltbGluayhkaXIyLCBsaW5rMSkKKyAgICAgICAgbGluazIgPSBvcy5wYXRoLmpvaW4oZGlyMSwgJ2xpbmsyJykKKyAgICAgICAgb3Muc3ltbGluayhkaXIzLCBsaW5rMikKKyAgICAgICAgbGluazMgPSBvcy5wYXRoLmpvaW4oZGlyMSwgJ2xpbmszJykKKyAgICAgICAgb3Muc3ltbGluayhmaWxlMSwgbGluazMpCisgICAgICAgICMgbWFrZSBzdXJlIHN5bWxpbmtzIGFyZSByZW1vdmVkIGJ1dCBub3QgZm9sbG93ZWQKKyAgICAgICAgc2h1dGlsLnJtdHJlZShkaXIxKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGRpcjEpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZGlyMykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhmaWxlMSkpCisKICAgICBkZWYgdGVzdF9ybXRyZWVfZXJyb3JzKHNlbGYpOgogICAgICAgICAjIGZpbGVuYW1lIGlzIGd1YXJhbnRlZWQgbm90IHRvIGV4aXN0CiAgICAgICAgIGZpbGVuYW1lID0gdGVtcGZpbGUubWt0ZW1wKCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2h1dGlsLnJtdHJlZSwgZmlsZW5hbWUpCi0gICAgICAgICMgdGVzdCB0aGF0IGlnbm9yZV9lcnJvcnMgb3B0aW9uIGlzIGhvbm91cmVkCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBzaHV0aWwucm10cmVlLCBmaWxlbmFtZSkKKyAgICAgICAgIyB0ZXN0IHRoYXQgaWdub3JlX2Vycm9ycyBvcHRpb24gaXMgaG9ub3JlZAogICAgICAgICBzaHV0aWwucm10cmVlKGZpbGVuYW1lLCBpZ25vcmVfZXJyb3JzPVRydWUpCiAKICAgICAgICAgIyBleGlzdGluZyBmaWxlCiAgICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZSgodG1wZGlyLCAidHN0ZmlsZSIpLCAiIikKKyAgICAgICAgd3JpdGVfZmlsZSgodG1wZGlyLCAidHN0ZmlsZSIpLCAiIikKICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAidHN0ZmlsZSIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTm90QURpcmVjdG9yeUVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZmlsZW5hbWUpCiAgICAgICAgICMgVGhlIHJlYXNvbiBmb3IgdGhpcyByYXRoZXIgb2RkIGNvbnN0cnVjdCBpcyB0aGF0IFdpbmRvd3Mgc3ByaW5rbGVzCiAgICAgICAgICMgYSBcKi4qIGF0IHRoZSBlbmQgb2YgZmlsZSBuYW1lcy4gQnV0IG9ubHkgc29tZXRpbWVzIG9uIHNvbWUgYnVpbGRib3RzCkBAIC0xNDcsMTMgKzE4NiwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlcnJvcnMpLCAyKQogICAgICAgICBzZWxmLmFzc2VydElzKGVycm9yc1swXVswXSwgb3MubGlzdGRpcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJvcnNbMF1bMV0sIGZpbGVuYW1lKQotICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXJyb3JzWzBdWzJdWzFdLCBPU0Vycm9yKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXJyb3JzWzBdWzJdWzFdLCBOb3RBRGlyZWN0b3J5RXJyb3IpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXJyb3JzWzBdWzJdWzFdLmZpbGVuYW1lLCBwb3NzaWJsZV9hcmdzKQogICAgICAgICBzZWxmLmFzc2VydElzKGVycm9yc1sxXVswXSwgb3Mucm1kaXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyb3JzWzFdWzFdLCBmaWxlbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGVycm9yc1sxXVsyXVsxXSwgT1NFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGVycm9yc1sxXVsyXVsxXSwgTm90QURpcmVjdG9yeUVycm9yKQogICAgICAgICBzZWxmLmFzc2VydEluKGVycm9yc1sxXVsyXVsxXS5maWxlbmFtZSwgcG9zc2libGVfYXJncykKIAorCiAgICAgIyBTZWUgYnVnICMxMDcxNTEzIGZvciB3aHkgd2UgZG9uJ3QgcnVuIHRoaXMgb24gY3lnd2luCiAgICAgIyBhbmQgYnVnICMxMDc2NDY3IGZvciB3aHkgd2UgZG9uJ3QgcnVuIHRoaXMgYXMgcm9vdC4KICAgICBpZiAoaGFzYXR0cihvcywgJ2NobW9kJykgYW5kIHN5cy5wbGF0Zm9ybVs6Nl0gIT0gJ2N5Z3dpbicKQEAgLTE2MSwzMCArMjAxLDM0IEBACiAgICAgICAgIGRlZiB0ZXN0X29uX2Vycm9yKHNlbGYpOgogICAgICAgICAgICAgc2VsZi5lcnJvclN0YXRlID0gMAogICAgICAgICAgICAgb3MubWtkaXIoVEVTVEZOKQotICAgICAgICAgICAgc2VsZi5jaGlsZHBhdGggPSBvcy5wYXRoLmpvaW4oVEVTVEZOLCAnYScpCi0gICAgICAgICAgICBmID0gb3BlbihzZWxmLmNoaWxkcGF0aCwgJ3cnKQotICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoc2h1dGlsLnJtdHJlZSwgVEVTVEZOKQorCisgICAgICAgICAgICBzZWxmLmNoaWxkX2ZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihURVNURk4sICdhJykKKyAgICAgICAgICAgIHNlbGYuY2hpbGRfZGlyX3BhdGggPSBvcy5wYXRoLmpvaW4oVEVTVEZOLCAnYicpCisgICAgICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKHNlbGYuY2hpbGRfZmlsZV9wYXRoKQorICAgICAgICAgICAgb3MubWtkaXIoc2VsZi5jaGlsZF9kaXJfcGF0aCkKICAgICAgICAgICAgIG9sZF9kaXJfbW9kZSA9IG9zLnN0YXQoVEVTVEZOKS5zdF9tb2RlCi0gICAgICAgICAgICBvbGRfY2hpbGRfbW9kZSA9IG9zLnN0YXQoc2VsZi5jaGlsZHBhdGgpLnN0X21vZGUKKyAgICAgICAgICAgIG9sZF9jaGlsZF9maWxlX21vZGUgPSBvcy5zdGF0KHNlbGYuY2hpbGRfZmlsZV9wYXRoKS5zdF9tb2RlCisgICAgICAgICAgICBvbGRfY2hpbGRfZGlyX21vZGUgPSBvcy5zdGF0KHNlbGYuY2hpbGRfZGlyX3BhdGgpLnN0X21vZGUKICAgICAgICAgICAgICMgTWFrZSB1bndyaXRhYmxlLgotICAgICAgICAgICAgb3MuY2htb2Qoc2VsZi5jaGlsZHBhdGgsIHN0YXQuU19JUkVBRCkKLSAgICAgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgc3RhdC5TX0lSRUFEKQorICAgICAgICAgICAgbmV3X21vZGUgPSBzdGF0LlNfSVJFQUR8c3RhdC5TX0lFWEVDCisgICAgICAgICAgICBvcy5jaG1vZChzZWxmLmNoaWxkX2ZpbGVfcGF0aCwgbmV3X21vZGUpCisgICAgICAgICAgICBvcy5jaG1vZChzZWxmLmNoaWxkX2Rpcl9wYXRoLCBuZXdfbW9kZSkKKyAgICAgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgbmV3X21vZGUpCisKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jaG1vZCwgVEVTVEZOLCBvbGRfZGlyX21vZGUpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2htb2QsIHNlbGYuY2hpbGRfZmlsZV9wYXRoLCBvbGRfY2hpbGRfZmlsZV9tb2RlKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNobW9kLCBzZWxmLmNoaWxkX2Rpcl9wYXRoLCBvbGRfY2hpbGRfZGlyX21vZGUpCiAKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoVEVTVEZOLCBvbmVycm9yPXNlbGYuY2hlY2tfYXJnc190b19vbmVycm9yKQogICAgICAgICAgICAgIyBUZXN0IHdoZXRoZXIgb25lcnJvciBoYXMgYWN0dWFsbHkgYmVlbiBjYWxsZWQuCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZXJyb3JTdGF0ZSwgMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIGNhbGwgdG8gb25lcnJvciBmdW5jdGlvbiBkaWQgbm90IGhhcHBlbi4iKQotCi0gICAgICAgICAgICAjIE1ha2Ugd3JpdGFibGUgYWdhaW4uCi0gICAgICAgICAgICBvcy5jaG1vZChURVNURk4sIG9sZF9kaXJfbW9kZSkKLSAgICAgICAgICAgIG9zLmNobW9kKHNlbGYuY2hpbGRwYXRoLCBvbGRfY2hpbGRfbW9kZSkKLQotICAgICAgICAgICAgIyBDbGVhbiB1cC4KLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoVEVTVEZOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmVycm9yU3RhdGUsIDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBjYWxsIHRvIG9uZXJyb3IgZnVuY3Rpb24gZGlkIG5vdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoYXBwZW4uIikKIAogICAgIGRlZiBjaGVja19hcmdzX3RvX29uZXJyb3Ioc2VsZiwgZnVuYywgYXJnLCBleGMpOgogICAgICAgICAjIHRlc3Rfcm10cmVlX2Vycm9ycyBkZWxpYmVyYXRlbHkgcnVucyBybXRyZWUKLSAgICAgICAgIyBvbiBhIGRpcmVjdG9yeSB0aGF0IGlzIGNobW9kIDQwMCwgd2hpY2ggd2lsbCBmYWlsLgorICAgICAgICAjIG9uIGEgZGlyZWN0b3J5IHRoYXQgaXMgY2htb2QgNTAwLCB3aGljaCB3aWxsIGZhaWwuCiAgICAgICAgICMgVGhpcyBmdW5jdGlvbiBpcyBydW4gd2hlbiBzaHV0aWwucm10cmVlIGZhaWxzLgogICAgICAgICAjIDk5LjklIG9mIHRoZSB0aW1lIGl0IGluaXRpYWxseSBmYWlscyB0byByZW1vdmUKICAgICAgICAgIyBhIGZpbGUgaW4gdGhlIGRpcmVjdG9yeSwgc28gdGhlIGZpcnN0IHRpbWUgdGhyb3VnaApAQCAtMTkzLDk5ICsyMzcsNDQ3IEBACiAgICAgICAgICMgRlVTRSBleHBlcmllbmNlZCBhIGZhaWx1cmUgZWFybGllciBpbiB0aGUgcHJvY2VzcwogICAgICAgICAjIGF0IG9zLmxpc3RkaXIuICBUaGUgZmlyc3QgZmFpbHVyZSBtYXkgbGVnYWxseQogICAgICAgICAjIGJlIGVpdGhlci4KLSAgICAgICAgaWYgc2VsZi5lcnJvclN0YXRlID09IDA6Ci0gICAgICAgICAgICBpZiBmdW5jIGlzIG9zLnJlbW92ZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZywgc2VsZi5jaGlsZHBhdGgpCisgICAgICAgIGlmIHNlbGYuZXJyb3JTdGF0ZSA8IDI6CisgICAgICAgICAgICBpZiBmdW5jIGlzIG9zLnVubGluazoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZywgc2VsZi5jaGlsZF9maWxlX3BhdGgpCisgICAgICAgICAgICBlbGlmIGZ1bmMgaXMgb3Mucm1kaXI6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmcsIHNlbGYuY2hpbGRfZGlyX3BhdGgpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZnVuYywgb3MubGlzdGRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jIG11c3QgYmUgZWl0aGVyIG9zLnJlbW92ZSBvciBvcy5saXN0ZGlyIikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZywgVEVTVEZOKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZnVuYywgb3MubGlzdGRpcikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGFyZywgW1RFU1RGTiwgc2VsZi5jaGlsZF9kaXJfcGF0aF0pCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhleGNbMF0sIE9TRXJyb3IpKQotICAgICAgICAgICAgc2VsZi5lcnJvclN0YXRlID0gMQorICAgICAgICAgICAgc2VsZi5lcnJvclN0YXRlICs9IDEKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYywgb3Mucm1kaXIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZywgVEVTVEZOKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoZXhjWzBdLCBPU0Vycm9yKSkKLSAgICAgICAgICAgIHNlbGYuZXJyb3JTdGF0ZSA9IDIKKyAgICAgICAgICAgIHNlbGYuZXJyb3JTdGF0ZSA9IDMKKworICAgIGRlZiB0ZXN0X3JtdHJlZV9kb2VzX25vdF9jaG9rZV9vbl9mYWlsaW5nX2xzdGF0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcmlnX2xzdGF0ID0gb3MubHN0YXQKKyAgICAgICAgICAgIGRlZiByYWlzZXIoZm4sICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgaWYgZm4gIT0gVEVTVEZOOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ19sc3RhdChmbikKKyAgICAgICAgICAgIG9zLmxzdGF0ID0gcmFpc2VyCisKKyAgICAgICAgICAgIG9zLm1rZGlyKFRFU1RGTikKKyAgICAgICAgICAgIHdyaXRlX2ZpbGUoKFRFU1RGTiwgJ2ZvbycpLCAnZm9vJykKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoVEVTVEZOKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MubHN0YXQgPSBvcmlnX2xzdGF0CisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnY2htb2QnKSwgJ3JlcXVpcmVzIG9zLmNobW9kJykKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3RfY29weW1vZGVfZm9sbG93X3N5bWxpbmtzKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIHNyY19saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXonKQorICAgICAgICBkc3RfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAncXV1eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgd3JpdGVfZmlsZShkc3QsICdmb28nKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgc3JjX2xpbmspCisgICAgICAgIG9zLnN5bWxpbmsoZHN0LCBkc3RfbGluaykKKyAgICAgICAgb3MuY2htb2Qoc3JjLCBzdGF0LlNfSVJXWFV8c3RhdC5TX0lSV1hHKQorICAgICAgICAjIGZpbGUgdG8gZmlsZQorICAgICAgICBvcy5jaG1vZChkc3QsIHN0YXQuU19JUldYTykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5zdGF0KHNyYykuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisgICAgICAgIHNodXRpbC5jb3B5bW9kZShzcmMsIGRzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KHNyYykuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisgICAgICAgICMgZm9sbG93IHNyYyBsaW5rCisgICAgICAgIG9zLmNobW9kKGRzdCwgc3RhdC5TX0lSV1hPKQorICAgICAgICBzaHV0aWwuY29weW1vZGUoc3JjX2xpbmssIGRzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KHNyYykuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisgICAgICAgICMgZm9sbG93IGRzdCBsaW5rCisgICAgICAgIG9zLmNobW9kKGRzdCwgc3RhdC5TX0lSV1hPKQorICAgICAgICBzaHV0aWwuY29weW1vZGUoc3JjLCBkc3RfbGluaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KHNyYykuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisgICAgICAgICMgZm9sbG93IGJvdGggbGlua3MKKyAgICAgICAgb3MuY2htb2QoZHN0LCBzdGF0LlNfSVJXWE8pCisgICAgICAgIHNodXRpbC5jb3B5bW9kZShzcmNfbGluaywgZHN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoc3JjKS5zdF9tb2RlLCBvcy5zdGF0KGRzdCkuc3RfbW9kZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdsY2htb2QnKSwgJ3JlcXVpcmVzIG9zLmxjaG1vZCcpCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X2NvcHltb2RlX3N5bWxpbmtfdG9fc3ltbGluayhzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZm9vJykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXInKQorICAgICAgICBzcmNfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmF6JykKKyAgICAgICAgZHN0X2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ3F1dXgnKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIHdyaXRlX2ZpbGUoZHN0LCAnZm9vJykKKyAgICAgICAgb3Muc3ltbGluayhzcmMsIHNyY19saW5rKQorICAgICAgICBvcy5zeW1saW5rKGRzdCwgZHN0X2xpbmspCisgICAgICAgIG9zLmNobW9kKHNyYywgc3RhdC5TX0lSV1hVfHN0YXQuU19JUldYRykKKyAgICAgICAgb3MuY2htb2QoZHN0LCBzdGF0LlNfSVJXWFUpCisgICAgICAgIG9zLmxjaG1vZChzcmNfbGluaywgc3RhdC5TX0lSV1hPfHN0YXQuU19JUldYRykKKyAgICAgICAgIyBsaW5rIHRvIGxpbmsKKyAgICAgICAgb3MubGNobW9kKGRzdF9saW5rLCBzdGF0LlNfSVJXWE8pCisgICAgICAgIHNodXRpbC5jb3B5bW9kZShzcmNfbGluaywgZHN0X2xpbmssIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5sc3RhdChzcmNfbGluaykuc3RfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcy5sc3RhdChkc3RfbGluaykuc3RfbW9kZSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5zdGF0KHNyYykuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisgICAgICAgICMgc3JjIGxpbmsgLSB1c2UgY2htb2QKKyAgICAgICAgb3MubGNobW9kKGRzdF9saW5rLCBzdGF0LlNfSVJXWE8pCisgICAgICAgIHNodXRpbC5jb3B5bW9kZShzcmNfbGluaywgZHN0LCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChzcmMpLnN0X21vZGUsIG9zLnN0YXQoZHN0KS5zdF9tb2RlKQorICAgICAgICAjIGRzdCBsaW5rIC0gdXNlIGNobW9kCisgICAgICAgIG9zLmxjaG1vZChkc3RfbGluaywgc3RhdC5TX0lSV1hPKQorICAgICAgICBzaHV0aWwuY29weW1vZGUoc3JjLCBkc3RfbGluaywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoc3JjKS5zdF9tb2RlLCBvcy5zdGF0KGRzdCkuc3RfbW9kZSkKKworICAgIEB1bml0dGVzdC5za2lwSWYoaGFzYXR0cihvcywgJ2xjaG1vZCcpLCAncmVxdWlyZXMgb3MubGNobW9kIHRvIGJlIG1pc3NpbmcnKQorICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9jb3B5bW9kZV9zeW1saW5rX3RvX3N5bWxpbmtfd29fbGNobW9kKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIHNyY19saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXonKQorICAgICAgICBkc3RfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAncXV1eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgd3JpdGVfZmlsZShkc3QsICdmb28nKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgc3JjX2xpbmspCisgICAgICAgIG9zLnN5bWxpbmsoZHN0LCBkc3RfbGluaykKKyAgICAgICAgc2h1dGlsLmNvcHltb2RlKHNyY19saW5rLCBkc3RfbGluaywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKSAgIyBzaWxlbnQgZmFpbAorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X2NvcHlzdGF0X3N5bWxpbmtzKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIHNyY19saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXonKQorICAgICAgICBkc3RfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAncXV4JykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICBzcmNfc3RhdCA9IG9zLnN0YXQoc3JjKQorICAgICAgICBvcy51dGltZShzcmMsIChzcmNfc3RhdC5zdF9hdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3JjX3N0YXQuc3RfbXRpbWUgLSA0Mi4wKSkgICMgZW5zdXJlIGRpZmZlcmVudCBtdGltZXMKKyAgICAgICAgd3JpdGVfZmlsZShkc3QsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9zLnN0YXQoc3JjKS5zdF9tdGltZSwgb3Muc3RhdChkc3QpLnN0X210aW1lKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgc3JjX2xpbmspCisgICAgICAgIG9zLnN5bWxpbmsoZHN0LCBkc3RfbGluaykKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgb3MubGNobW9kKHNyY19saW5rLCBzdGF0LlNfSVJXWE8pCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2hmbGFncycpIGFuZCBoYXNhdHRyKHN0YXQsICdVRl9OT0RVTVAnKToKKyAgICAgICAgICAgIG9zLmxjaGZsYWdzKHNyY19saW5rLCBzdGF0LlVGX05PRFVNUCkKKyAgICAgICAgc3JjX2xpbmtfc3RhdCA9IG9zLmxzdGF0KHNyY19saW5rKQorICAgICAgICAjIGZvbGxvdworICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNobW9kJyk6CisgICAgICAgICAgICBzaHV0aWwuY29weXN0YXQoc3JjX2xpbmssIGRzdF9saW5rLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc3JjX2xpbmtfc3RhdC5zdF9tb2RlLCBvcy5zdGF0KGRzdCkuc3RfbW9kZSkKKyAgICAgICAgIyBkb24ndCBmb2xsb3cKKyAgICAgICAgc2h1dGlsLmNvcHlzdGF0KHNyY19saW5rLCBkc3RfbGluaywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBkc3RfbGlua19zdGF0ID0gb3MubHN0YXQoZHN0X2xpbmspCisgICAgICAgIGlmIG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rczoKKyAgICAgICAgICAgIGZvciBhdHRyIGluICdzdF9hdGltZScsICdzdF9tdGltZSc6CisgICAgICAgICAgICAgICAgIyBUaGUgbW9kaWZpY2F0aW9uIHRpbWVzIG1heSBiZSB0cnVuY2F0ZWQgaW4gdGhlIG5ldyBmaWxlLgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGdldGF0dHIoc3JjX2xpbmtfc3RhdCwgYXR0ciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihkc3RfbGlua19zdGF0LCBhdHRyKSArIDEpCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2htb2QnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3JjX2xpbmtfc3RhdC5zdF9tb2RlLCBkc3RfbGlua19zdGF0LnN0X21vZGUpCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2hmbGFncycpIGFuZCBoYXNhdHRyKHNyY19saW5rX3N0YXQsICdzdF9mbGFncycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcmNfbGlua19zdGF0LnN0X2ZsYWdzLCBkc3RfbGlua19zdGF0LnN0X2ZsYWdzKQorICAgICAgICAjIHRlbGwgdG8gZm9sbG93IGJ1dCBkc3QgaXMgbm90IGEgbGluaworICAgICAgICBzaHV0aWwuY29weXN0YXQoc3JjX2xpbmssIGRzdCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYWJzKG9zLnN0YXQoc3JjKS5zdF9tdGltZSAtIG9zLnN0YXQoZHN0KS5zdF9tdGltZSkgPAorICAgICAgICAgICAgICAgICAgICAgICAgMDAwMDAuMSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdjaGZsYWdzJykgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFzYXR0cihlcnJubywgJ0VPUE5PVFNVUFAnKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICBoYXNhdHRyKGVycm5vLCAnRU5PVFNVUCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyBvcy5jaGZsYWdzLCBFT1BOT1RTVVBQICYgRU5PVFNVUCIpCisgICAgZGVmIHRlc3RfY29weXN0YXRfaGFuZGxlc19oYXJtbGVzc19jaGZsYWdzX2Vycm9ycyhzZWxmKToKKyAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgZmlsZTEgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZmlsZTEnKQorICAgICAgICBmaWxlMiA9IG9zLnBhdGguam9pbih0bXBkaXIsICdmaWxlMicpCisgICAgICAgIHdyaXRlX2ZpbGUoZmlsZTEsICd4eHgnKQorICAgICAgICB3cml0ZV9maWxlKGZpbGUyLCAneHh4JykKKworICAgICAgICBkZWYgbWFrZV9jaGZsYWdzX3JhaXNlcihlcnIpOgorICAgICAgICAgICAgZXggPSBPU0Vycm9yKCkKKworICAgICAgICAgICAgZGVmIF9jaGZsYWdzX3JhaXNlcihwYXRoLCBmbGFncywgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOgorICAgICAgICAgICAgICAgIGV4LmVycm5vID0gZXJyCisgICAgICAgICAgICAgICAgcmFpc2UgZXgKKyAgICAgICAgICAgIHJldHVybiBfY2hmbGFnc19yYWlzZXIKKyAgICAgICAgb2xkX2NoZmxhZ3MgPSBvcy5jaGZsYWdzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciBlcnIgaW4gZXJybm8uRU9QTk9UU1VQUCwgZXJybm8uRU5PVFNVUDoKKyAgICAgICAgICAgICAgICBvcy5jaGZsYWdzID0gbWFrZV9jaGZsYWdzX3JhaXNlcihlcnIpCisgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlzdGF0KGZpbGUxLCBmaWxlMikKKyAgICAgICAgICAgICMgYXNzZXJ0IG90aGVycyBlcnJvcnMgYnJlYWsgaXQKKyAgICAgICAgICAgIG9zLmNoZmxhZ3MgPSBtYWtlX2NoZmxhZ3NfcmFpc2VyKGVycm5vLkVPUE5PVFNVUFAgKyBlcnJuby5FTk9UU1VQKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2h1dGlsLmNvcHlzdGF0LCBmaWxlMSwgZmlsZTIpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaGZsYWdzID0gb2xkX2NoZmxhZ3MKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3hhdHRyCisgICAgZGVmIHRlc3RfY29weXhhdHRyKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmFyJykKKyAgICAgICAgd3JpdGVfZmlsZShkc3QsICdiYXInKQorCisgICAgICAgICMgbm8geGF0dHIgPT0gbm8gcHJvYmxlbQorICAgICAgICBzaHV0aWwuX2NvcHl4YXR0cihzcmMsIGRzdCkKKyAgICAgICAgIyBjb21tb24gY2FzZQorICAgICAgICBvcy5zZXR4YXR0cihzcmMsICd1c2VyLmZvbycsIGInNDInKQorICAgICAgICBvcy5zZXR4YXR0cihzcmMsICd1c2VyLmJhcicsIGInNDMnKQorICAgICAgICBzaHV0aWwuX2NvcHl4YXR0cihzcmMsIGRzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5saXN0eGF0dHIoc3JjKSwgb3MubGlzdHhhdHRyKGRzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgb3MuZ2V0eGF0dHIoc3JjLCAndXNlci5mb28nKSwKKyAgICAgICAgICAgICAgICBvcy5nZXR4YXR0cihkc3QsICd1c2VyLmZvbycpKQorICAgICAgICAjIGNoZWNrIGVycm9ycyBkb24ndCBhZmZlY3Qgb3RoZXIgYXR0cnMKKyAgICAgICAgb3MucmVtb3ZlKGRzdCkKKyAgICAgICAgd3JpdGVfZmlsZShkc3QsICdiYXInKQorICAgICAgICBvc19lcnJvciA9IE9TRXJyb3IoZXJybm8uRVBFUk0sICdFUEVSTScpCisKKyAgICAgICAgZGVmIF9yYWlzZV9vbl91c2VyX2ZvbyhmbmFtZSwgYXR0ciwgdmFsLCAqKmt3YXJncyk6CisgICAgICAgICAgICBpZiBhdHRyID09ICd1c2VyLmZvbyc6CisgICAgICAgICAgICAgICAgcmFpc2Ugb3NfZXJyb3IKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb3JpZ19zZXR4YXR0cihmbmFtZSwgYXR0ciwgdmFsLCAqKmt3YXJncykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3JpZ19zZXR4YXR0ciA9IG9zLnNldHhhdHRyCisgICAgICAgICAgICBvcy5zZXR4YXR0ciA9IF9yYWlzZV9vbl91c2VyX2ZvbworICAgICAgICAgICAgc2h1dGlsLl9jb3B5eGF0dHIoc3JjLCBkc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd1c2VyLmJhcicsIG9zLmxpc3R4YXR0cihkc3QpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3Muc2V0eGF0dHIgPSBvcmlnX3NldHhhdHRyCisgICAgICAgICMgdGhlIHNvdXJjZSBmaWxlc3lzdGVtIG5vdCBzdXBwb3J0aW5nIHhhdHRycyBzaG91bGQgYmUgb2ssIHRvby4KKyAgICAgICAgZGVmIF9yYWlzZV9vbl9zcmMoZm5hbWUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKToKKyAgICAgICAgICAgIGlmIGZuYW1lID09IHNyYzoKKyAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKGVycm5vLkVOT1RTVVAsICdPcGVyYXRpb24gbm90IHN1cHBvcnRlZCcpCisgICAgICAgICAgICByZXR1cm4gb3JpZ19saXN0eGF0dHIoZm5hbWUsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9yaWdfbGlzdHhhdHRyID0gb3MubGlzdHhhdHRyCisgICAgICAgICAgICBvcy5saXN0eGF0dHIgPSBfcmFpc2Vfb25fc3JjCisgICAgICAgICAgICBzaHV0aWwuX2NvcHl4YXR0cihzcmMsIGRzdCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmxpc3R4YXR0ciA9IG9yaWdfbGlzdHhhdHRyCisKKyAgICAgICAgIyB0ZXN0IHRoYXQgc2h1dGlsLmNvcHlzdGF0IGNvcGllcyB4YXR0cnMKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICd0aGVfb3JpZ2luYWwnKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgc3JjKQorICAgICAgICBvcy5zZXR4YXR0cihzcmMsICd1c2VyLnRoZV92YWx1ZScsIGInZmlkZGx5JykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICd0aGVfY29weScpCisgICAgICAgIHdyaXRlX2ZpbGUoZHN0LCBkc3QpCisgICAgICAgIHNodXRpbC5jb3B5c3RhdChzcmMsIGRzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXR4YXR0cihkc3QsICd1c2VyLnRoZV92YWx1ZScpLCBiJ2ZpZGRseScpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3NfeGF0dHIKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0ZXVpZCcpIGFuZCBvcy5nZXRldWlkKCkgPT0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncm9vdCBwcml2aWxlZ2VzIHJlcXVpcmVkJykKKyAgICBkZWYgdGVzdF9jb3B5eGF0dHJfc3ltbGlua3Moc2VsZik6CisgICAgICAgICMgT24gTGludXgsIGl0J3Mgb25seSBwb3NzaWJsZSB0byBhY2Nlc3Mgbm9uLXVzZXIgeGF0dHIgZm9yIHN5bWxpbmtzOworICAgICAgICAjIHdoaWNoIGluIHR1cm4gcmVxdWlyZSByb290IHByaXZpbGVnZXMuIFRoaXMgdGVzdCBzaG91bGQgYmUgZXhwYW5kZWQKKyAgICAgICAgIyBhcyBzb29uIGFzIG90aGVyIHBsYXRmb3JtcyBnYWluIHN1cHBvcnQgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZXMuCisgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2ZvbycpCisgICAgICAgIHNyY19saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXonKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBzcmNfbGluaykKKyAgICAgICAgb3Muc2V0eGF0dHIoc3JjLCAndHJ1c3RlZC5mb28nLCBiJzQyJykKKyAgICAgICAgb3Muc2V0eGF0dHIoc3JjX2xpbmssICd0cnVzdGVkLmZvbycsIGInNDMnLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmFyJykKKyAgICAgICAgZHN0X2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ3F1eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoZHN0LCAnYmFyJykKKyAgICAgICAgb3Muc3ltbGluayhkc3QsIGRzdF9saW5rKQorICAgICAgICBzaHV0aWwuX2NvcHl4YXR0cihzcmNfbGluaywgZHN0X2xpbmssIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXR4YXR0cihkc3RfbGluaywgJ3RydXN0ZWQuZm9vJywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKSwgYic0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLmdldHhhdHRyLCBkc3QsICd0cnVzdGVkLmZvbycpCisgICAgICAgIHNodXRpbC5fY29weXhhdHRyKHNyY19saW5rLCBkc3QsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXR4YXR0cihkc3QsICd0cnVzdGVkLmZvbycpLCBiJzQzJykKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9jb3B5X3N5bWxpbmtzKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIHNyY19saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXonKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBzcmNfbGluaykKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgb3MubGNobW9kKHNyY19saW5rLCBzdGF0LlNfSVJXWFUgfCBzdGF0LlNfSVJXWE8pCisgICAgICAgICMgZG9uJ3QgZm9sbG93CisgICAgICAgIHNodXRpbC5jb3B5KHNyY19saW5rLCBkc3QsIGZvbGxvd19zeW1saW5rcz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNsaW5rKGRzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZF9maWxlKHNyYyksIHJlYWRfZmlsZShkc3QpKQorICAgICAgICBvcy5yZW1vdmUoZHN0KQorICAgICAgICAjIGZvbGxvdworICAgICAgICBzaHV0aWwuY29weShzcmNfbGluaywgZHN0LCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhkc3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWRsaW5rKGRzdCksIG9zLnJlYWRsaW5rKHNyY19saW5rKSkKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5sc3RhdChzcmNfbGluaykuc3RfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MubHN0YXQoZHN0KS5zdF9tb2RlKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X2NvcHkyX3N5bWxpbmtzKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIHNyY19saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXonKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBzcmNfbGluaykKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgb3MubGNobW9kKHNyY19saW5rLCBzdGF0LlNfSVJXWFUgfCBzdGF0LlNfSVJXWE8pCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2hmbGFncycpIGFuZCBoYXNhdHRyKHN0YXQsICdVRl9OT0RVTVAnKToKKyAgICAgICAgICAgIG9zLmxjaGZsYWdzKHNyY19saW5rLCBzdGF0LlVGX05PRFVNUCkKKyAgICAgICAgc3JjX3N0YXQgPSBvcy5zdGF0KHNyYykKKyAgICAgICAgc3JjX2xpbmtfc3RhdCA9IG9zLmxzdGF0KHNyY19saW5rKQorICAgICAgICAjIGZvbGxvdworICAgICAgICBzaHV0aWwuY29weTIoc3JjX2xpbmssIGRzdCwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2xpbmsoZHN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkX2ZpbGUoc3JjKSwgcmVhZF9maWxlKGRzdCkpCisgICAgICAgIG9zLnJlbW92ZShkc3QpCisgICAgICAgICMgZG9uJ3QgZm9sbG93CisgICAgICAgIHNodXRpbC5jb3B5MihzcmNfbGluaywgZHN0LCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhkc3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWRsaW5rKGRzdCksIG9zLnJlYWRsaW5rKHNyY19saW5rKSkKKyAgICAgICAgZHN0X3N0YXQgPSBvcy5sc3RhdChkc3QpCisgICAgICAgIGlmIG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rczoKKyAgICAgICAgICAgIGZvciBhdHRyIGluICdzdF9hdGltZScsICdzdF9tdGltZSc6CisgICAgICAgICAgICAgICAgIyBUaGUgbW9kaWZpY2F0aW9uIHRpbWVzIG1heSBiZSB0cnVuY2F0ZWQgaW4gdGhlIG5ldyBmaWxlLgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGdldGF0dHIoc3JjX2xpbmtfc3RhdCwgYXR0ciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihkc3Rfc3RhdCwgYXR0cikgKyAxKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNobW9kJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNyY19saW5rX3N0YXQuc3RfbW9kZSwgZHN0X3N0YXQuc3RfbW9kZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc3JjX3N0YXQuc3RfbW9kZSwgZHN0X3N0YXQuc3RfbW9kZSkKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaGZsYWdzJykgYW5kIGhhc2F0dHIoc3JjX2xpbmtfc3RhdCwgJ3N0X2ZsYWdzJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNyY19saW5rX3N0YXQuc3RfZmxhZ3MsIGRzdF9zdGF0LnN0X2ZsYWdzKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3NfeGF0dHIKKyAgICBkZWYgdGVzdF9jb3B5Ml94YXR0cihzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZm9vJykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXInKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIG9zLnNldHhhdHRyKHNyYywgJ3VzZXIuZm9vJywgYic0MicpCisgICAgICAgIHNodXRpbC5jb3B5MihzcmMsIGRzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBvcy5nZXR4YXR0cihzcmMsICd1c2VyLmZvbycpLAorICAgICAgICAgICAgICAgIG9zLmdldHhhdHRyKGRzdCwgJ3VzZXIuZm9vJykpCisgICAgICAgIG9zLnJlbW92ZShkc3QpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3RfY29weWZpbGVfc3ltbGlua3Moc2VsZik6CisgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ3NyYycpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZHN0JykKKyAgICAgICAgZHN0X2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2RzdF9saW5rJykKKyAgICAgICAgbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnbGluaycpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgb3Muc3ltbGluayhzcmMsIGxpbmspCisgICAgICAgICMgZG9uJ3QgZm9sbG93CisgICAgICAgIHNodXRpbC5jb3B5ZmlsZShsaW5rLCBkc3RfbGluaywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsoZHN0X2xpbmspKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWRsaW5rKGxpbmspLCBvcy5yZWFkbGluayhkc3RfbGluaykpCisgICAgICAgICMgZm9sbG93CisgICAgICAgIHNodXRpbC5jb3B5ZmlsZShsaW5rLCBkc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2xpbmsoZHN0KSkKKworICAgIGRlZiB0ZXN0X3JtdHJlZV91c2VzX3NhZmVfZmRfdmVyc2lvbl9pZl9hdmFpbGFibGUoc2VsZik6CisgICAgICAgIF91c2VfZmRfZnVuY3Rpb25zID0gKHtvcy5vcGVuLCBvcy5zdGF0LCBvcy51bmxpbmssIG9zLnJtZGlyfSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdXBwb3J0c19kaXJfZmQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmxpc3RkaXIgaW4gb3Muc3VwcG9ydHNfZmQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzKQorICAgICAgICBpZiBfdXNlX2ZkX2Z1bmN0aW9uczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzaHV0aWwuX3VzZV9mZF9mdW5jdGlvbnMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2h1dGlsLnJtdHJlZS5hdm9pZHNfc3ltbGlua19hdHRhY2tzKQorICAgICAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgICAgICBkID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdhJykKKyAgICAgICAgICAgIG9zLm1rZGlyKGQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmVhbF9ybXRyZWUgPSBzaHV0aWwuX3JtdHJlZV9zYWZlX2ZkCisgICAgICAgICAgICAgICAgY2xhc3MgQ2FsbGVkKEV4Y2VwdGlvbik6IHBhc3MKKyAgICAgICAgICAgICAgICBkZWYgX3JhaXNlcigqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBDYWxsZWQKKyAgICAgICAgICAgICAgICBzaHV0aWwuX3JtdHJlZV9zYWZlX2ZkID0gX3JhaXNlcgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKENhbGxlZCwgc2h1dGlsLnJtdHJlZSwgZCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc2h1dGlsLl9ybXRyZWVfc2FmZV9mZCA9IHJlYWxfcm10cmVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNodXRpbC5fdXNlX2ZkX2Z1bmN0aW9ucykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2h1dGlsLnJtdHJlZS5hdm9pZHNfc3ltbGlua19hdHRhY2tzKQogCiAgICAgZGVmIHRlc3Rfcm10cmVlX2RvbnRfZGVsZXRlX2ZpbGUoc2VsZik6CiAgICAgICAgICMgV2hlbiBjYWxsZWQgb24gYSBmaWxlIGluc3RlYWQgb2YgYSBkaXJlY3RvcnksIGRvbid0IGRlbGV0ZSBpdC4KICAgICAgICAgaGFuZGxlLCBwYXRoID0gdGVtcGZpbGUubWtzdGVtcCgpCi0gICAgICAgIG9zLmZkb3BlbihoYW5kbGUpLmNsb3NlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2h1dGlsLnJtdHJlZSwgcGF0aCkKKyAgICAgICAgb3MuY2xvc2UoaGFuZGxlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RBRGlyZWN0b3J5RXJyb3IsIHNodXRpbC5ybXRyZWUsIHBhdGgpCiAgICAgICAgIG9zLnJlbW92ZShwYXRoKQogCi0gICAgZGVmIF93cml0ZV9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpOgotICAgICAgICBmID0gb3BlbihwYXRoLCAidyIpCi0gICAgICAgIGYud3JpdGUoZGF0YSkKLSAgICAgICAgZi5jbG9zZSgpCi0KICAgICBkZWYgdGVzdF9jb3B5dHJlZV9zaW1wbGUoc2VsZik6Ci0KLSAgICAgICAgZGVmIHJlYWRfZGF0YShwYXRoKToKLSAgICAgICAgICAgIGYgPSBvcGVuKHBhdGgpCi0gICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgcmV0dXJuIGRhdGEKLQogICAgICAgICBzcmNfZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCiAgICAgICAgIGRzdF9kaXIgPSBvcy5wYXRoLmpvaW4odGVtcGZpbGUubWtkdGVtcCgpLCAnZGVzdGluYXRpb24nKQotICAgICAgICBzZWxmLl93cml0ZV9kYXRhKG9zLnBhdGguam9pbihzcmNfZGlyLCAndGVzdC50eHQnKSwgJzEyMycpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaHV0aWwucm10cmVlLCBzcmNfZGlyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2h1dGlsLnJtdHJlZSwgb3MucGF0aC5kaXJuYW1lKGRzdF9kaXIpKQorICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdC50eHQnKSwgJzEyMycpCiAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihzcmNfZGlyLCAndGVzdF9kaXInKSkKLSAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JyksICc0NTYnKQorICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSwgJzQ1NicpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNyY19kaXIsIGRzdF9kaXIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGRzdF9kaXIsICd0ZXN0LnR4dCcpKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdF9kaXInKSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGRzdF9kaXIsICd0ZXN0X2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0LnR4dCcpKSkKLSAgICAgICAgICAgIGFjdHVhbCA9IHJlYWRfZGF0YShvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3Rlc3QudHh0JykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgJzEyMycpCi0gICAgICAgICAgICBhY3R1YWwgPSByZWFkX2RhdGEob3MucGF0aC5qb2luKGRzdF9kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsICc0NTYnKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZm9yIHBhdGggaW4gKAotICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3QudHh0JyksCi0gICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdC50eHQnKSwKLSAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLAotICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JyksCi0gICAgICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKHBhdGgpCi0gICAgICAgICAgICBmb3IgcGF0aCBpbiAoc3JjX2RpciwKLSAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKGRzdF9kaXIpCi0gICAgICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShwYXRoKQorICAgICAgICBzaHV0aWwuY29weXRyZWUoc3JjX2RpciwgZHN0X2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdC50eHQnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdF9kaXInKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdC50eHQnKSkpCisgICAgICAgIGFjdHVhbCA9IHJlYWRfZmlsZSgoZHN0X2RpciwgJ3Rlc3QudHh0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCAnMTIzJykKKyAgICAgICAgYWN0dWFsID0gcmVhZF9maWxlKChkc3RfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsICc0NTYnKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X2NvcHl0cmVlX3N5bWxpbmtzKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjX2RpciA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnc3JjJykKKyAgICAgICAgZHN0X2RpciA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZHN0JykKKyAgICAgICAgc3ViX2RpciA9IG9zLnBhdGguam9pbihzcmNfZGlyLCAnc3ViJykKKyAgICAgICAgb3MubWtkaXIoc3JjX2RpcikKKyAgICAgICAgb3MubWtkaXIoc3ViX2RpcikKKyAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ2ZpbGUudHh0JyksICdmb28nKQorICAgICAgICBzcmNfbGluayA9IG9zLnBhdGguam9pbihzdWJfZGlyLCAnbGluaycpCisgICAgICAgIGRzdF9saW5rID0gb3MucGF0aC5qb2luKGRzdF9kaXIsICdzdWIvbGluaycpCisgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5qb2luKHNyY19kaXIsICdmaWxlLnR4dCcpLAorICAgICAgICAgICAgICAgICAgIHNyY19saW5rKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNobW9kJyk6CisgICAgICAgICAgICBvcy5sY2htb2Qoc3JjX2xpbmssIHN0YXQuU19JUldYVSB8IHN0YXQuU19JUldYTykKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaGZsYWdzJykgYW5kIGhhc2F0dHIoc3RhdCwgJ1VGX05PRFVNUCcpOgorICAgICAgICAgICAgb3MubGNoZmxhZ3Moc3JjX2xpbmssIHN0YXQuVUZfTk9EVU1QKQorICAgICAgICBzcmNfc3RhdCA9IG9zLmxzdGF0KHNyY19saW5rKQorICAgICAgICBzaHV0aWwuY29weXRyZWUoc3JjX2RpciwgZHN0X2Rpciwgc3ltbGlua3M9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKG9zLnBhdGguam9pbihkc3RfZGlyLCAnc3ViJywgJ2xpbmsnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucmVhZGxpbmsob3MucGF0aC5qb2luKGRzdF9kaXIsICdzdWInLCAnbGluaycpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ2ZpbGUudHh0JykpCisgICAgICAgIGRzdF9zdGF0ID0gb3MubHN0YXQoZHN0X2xpbmspCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2htb2QnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHN0X3N0YXQuc3RfbW9kZSwgc3JjX3N0YXQuc3RfbW9kZSkKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaGZsYWdzJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRzdF9zdGF0LnN0X2ZsYWdzLCBzcmNfc3RhdC5zdF9mbGFncykKIAogICAgIGRlZiB0ZXN0X2NvcHl0cmVlX3dpdGhfZXhjbHVkZShzZWxmKToKLQotICAgICAgICBkZWYgcmVhZF9kYXRhKHBhdGgpOgotICAgICAgICAgICAgZiA9IG9wZW4ocGF0aCkKLSAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICByZXR1cm4gZGF0YQotCiAgICAgICAgICMgY3JlYXRpbmcgZGF0YQogICAgICAgICBqb2luID0gb3MucGF0aC5qb2luCiAgICAgICAgIGV4aXN0cyA9IG9zLnBhdGguZXhpc3RzCiAgICAgICAgIHNyY19kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZHN0X2RpciA9IGpvaW4odGVtcGZpbGUubWtkdGVtcCgpLCAnZGVzdGluYXRpb24nKQotICAgICAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShqb2luKHNyY19kaXIsICd0ZXN0LnR4dCcpLCAnMTIzJykKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEoam9pbihzcmNfZGlyLCAndGVzdC50bXAnKSwgJzEyMycpCisgICAgICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdC50eHQnKSwgJzEyMycpCisgICAgICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdC50bXAnKSwgJzEyMycpCiAgICAgICAgICAgICBvcy5ta2Rpcihqb2luKHNyY19kaXIsICd0ZXN0X2RpcicpKQotICAgICAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShqb2luKHNyY19kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLCAnNDU2JykKKyAgICAgICAgICAgIHdyaXRlX2ZpbGUoKHNyY19kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLCAnNDU2JykKICAgICAgICAgICAgIG9zLm1rZGlyKGpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyMicpKQotICAgICAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShqb2luKHNyY19kaXIsICd0ZXN0X2RpcjInLCAndGVzdC50eHQnKSwgJzQ1NicpCisgICAgICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3Rlc3QudHh0JyksICc0NTYnKQogICAgICAgICAgICAgb3MubWtkaXIoam9pbihzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcicpKQogICAgICAgICAgICAgb3MubWtkaXIoam9pbihzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcjInKSkKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEoam9pbihzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcicsICd0ZXN0LnR4dCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnNDU2JykKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEoam9pbihzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcjInLCAndGVzdC5weScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnNDU2JykKLQorICAgICAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXInLCAndGVzdC50eHQnKSwgJzQ1NicpCisgICAgICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcjInLCAndGVzdC5weScpLCAnNDU2JykKIAogICAgICAgICAgICAgIyB0ZXN0aW5nIGdsb2ItbGlrZSBwYXR0ZXJucwogICAgICAgICAgICAgdHJ5OgpAQCAtMjkzLDIxICs2ODUsMTkgQEAKICAgICAgICAgICAgICAgICBzaHV0aWwuY29weXRyZWUoc3JjX2RpciwgZHN0X2RpciwgaWdub3JlPXBhdHRlcm5zKQogICAgICAgICAgICAgICAgICMgY2hlY2tpbmcgdGhlIHJlc3VsdDogc29tZSBlbGVtZW50cyBzaG91bGQgbm90IGJlIGNvcGllZAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdC50eHQnKSkpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdC50bXAnKSkpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3QudG1wJykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyMicpKSkKICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZHN0X2Rpcik6Ci0gICAgICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZHN0X2RpcikKKyAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRzdF9kaXIpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcGF0dGVybnMgPSBzaHV0aWwuaWdub3JlX3BhdHRlcm5zKCcqLnRtcCcsICdzdWJkaXIqJykKICAgICAgICAgICAgICAgICBzaHV0aWwuY29weXRyZWUoc3JjX2RpciwgZHN0X2RpciwgaWdub3JlPXBhdHRlcm5zKQogICAgICAgICAgICAgICAgICMgY2hlY2tpbmcgdGhlIHJlc3VsdDogc29tZSBlbGVtZW50cyBzaG91bGQgbm90IGJlIGNvcGllZAotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3QudG1wJykpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXIyJykpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXInKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdC50bXAnKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcjInKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcicpKSkKICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZHN0X2Rpcik6Ci0gICAgICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZHN0X2RpcikKKyAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRzdF9kaXIpCiAKICAgICAgICAgICAgICMgdGVzdGluZyBjYWxsYWJsZS1zdHlsZQogICAgICAgICAgICAgdHJ5OgpAQCAtMzI2LDEzICs3MTYsMTIgQEAKICAgICAgICAgICAgICAgICBzaHV0aWwuY29weXRyZWUoc3JjX2RpciwgZHN0X2RpciwgaWdub3JlPV9maWx0ZXIpCiAKICAgICAgICAgICAgICAgICAjIGNoZWNraW5nIHRoZSByZXN1bHQ6IHNvbWUgZWxlbWVudHMgc2hvdWxkIG5vdCBiZSBjb3BpZWQKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyMicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QucHknKSkpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcicpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdC5weScpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyJykpKQogCiAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRzdF9kaXIpOgotICAgICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRzdF9kaXIpCisgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkc3RfZGlyKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzcmNfZGlyKQogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShvcy5wYXRoLmRpcm5hbWUoZHN0X2RpcikpCkBAIC0zNTcsMzUgKzc0Niw2IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKFRFU1RGTiwgaWdub3JlX2Vycm9ycz1UcnVlKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2NoZmxhZ3MnKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICBoYXNhdHRyKGVycm5vLCAnRU9QTk9UU1VQUCcpIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2F0dHIoZXJybm8sICdFTk9UU1VQJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIG9zLmNoZmxhZ3MsIEVPUE5PVFNVUFAgJiBFTk9UU1VQIikKLSAgICBkZWYgdGVzdF9jb3B5c3RhdF9oYW5kbGVzX2hhcm1sZXNzX2NoZmxhZ3NfZXJyb3JzKHNlbGYpOgotICAgICAgICB0bXBkaXIgPSBzZWxmLm1rZHRlbXAoKQotICAgICAgICBmaWxlMSA9IG9zLnBhdGguam9pbih0bXBkaXIsICdmaWxlMScpCi0gICAgICAgIGZpbGUyID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2ZpbGUyJykKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKGZpbGUxLCAneHh4JykKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKGZpbGUyLCAneHh4JykKLQotICAgICAgICBkZWYgbWFrZV9jaGZsYWdzX3JhaXNlcihlcnIpOgotICAgICAgICAgICAgZXggPSBPU0Vycm9yKCkKLQotICAgICAgICAgICAgZGVmIF9jaGZsYWdzX3JhaXNlcihwYXRoLCBmbGFncyk6Ci0gICAgICAgICAgICAgICAgZXguZXJybm8gPSBlcnIKLSAgICAgICAgICAgICAgICByYWlzZSBleAotICAgICAgICAgICAgcmV0dXJuIF9jaGZsYWdzX3JhaXNlcgotICAgICAgICBvbGRfY2hmbGFncyA9IG9zLmNoZmxhZ3MKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIGVyciBpbiBlcnJuby5FT1BOT1RTVVBQLCBlcnJuby5FTk9UU1VQOgotICAgICAgICAgICAgICAgIG9zLmNoZmxhZ3MgPSBtYWtlX2NoZmxhZ3NfcmFpc2VyKGVycikKLSAgICAgICAgICAgICAgICBzaHV0aWwuY29weXN0YXQoZmlsZTEsIGZpbGUyKQotICAgICAgICAgICAgIyBhc3NlcnQgb3RoZXJzIGVycm9ycyBicmVhayBpdAotICAgICAgICAgICAgb3MuY2hmbGFncyA9IG1ha2VfY2hmbGFnc19yYWlzZXIoZXJybm8uRU9QTk9UU1VQUCArIGVycm5vLkVOT1RTVVApCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzaHV0aWwuY29weXN0YXQsIGZpbGUxLCBmaWxlMikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLmNoZmxhZ3MgPSBvbGRfY2hmbGFncwotCiAgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluawogICAgIGRlZiB0ZXN0X2RvbnRfY29weV9maWxlX29udG9fc3ltbGlua190b19pdHNlbGYoc2VsZik6CiAgICAgICAgICMgYnVnIDg1MTEyMy4KQEAgLTQxNiw2ICs3NzYsNyBAQAogICAgICAgICAgICAgb3MubWtkaXIoc3JjKQogICAgICAgICAgICAgb3Muc3ltbGluayhzcmMsIGRzdCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNodXRpbC5ybXRyZWUsIGRzdCkKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZHN0LCBpZ25vcmVfZXJyb3JzPVRydWUpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKFRFU1RGTiwgaWdub3JlX2Vycm9ycz1UcnVlKQogCkBAIC00NTYsOSArODE3LDkgQEAKIAogICAgICAgICBzcmNfZGlyID0gc2VsZi5ta2R0ZW1wKCkKICAgICAgICAgZHN0X2RpciA9IG9zLnBhdGguam9pbihzZWxmLm1rZHRlbXAoKSwgJ2Rlc3RpbmF0aW9uJykKLSAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3QudHh0JyksICcxMjMnKQorICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdC50eHQnKSwgJzEyMycpCiAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihzcmNfZGlyLCAndGVzdF9kaXInKSkKLSAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JyksICc0NTYnKQorICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSwgJzQ1NicpCiAKICAgICAgICAgY29waWVkID0gW10KICAgICAgICAgZGVmIF9jb3B5KHNyYywgZHN0KToKQEAgLTQ3NSw3ICs4MzYsNyBAQAogICAgICAgICBkc3RfZGlyID0gb3MucGF0aC5qb2luKHNlbGYubWtkdGVtcCgpLCAnZGVzdGluYXRpb24nKQogICAgICAgICBvcy5zeW1saW5rKCdJRE9OVEVYSVNUJywgb3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0LnR4dCcpKQogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyJykpCi0gICAgICAgIHNlbGYuX3dyaXRlX2RhdGEob3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLCAnNDU2JykKKyAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JyksICc0NTYnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFcnJvciwgc2h1dGlsLmNvcHl0cmVlLCBzcmNfZGlyLCBkc3RfZGlyKQogCiAgICAgICAgICMgYSBkYW5nbGluZyBzeW1saW5rIGlzIGlnbm9yZWQgd2l0aCB0aGUgcHJvcGVyIGZsYWcKQEAgLTQ5MSw3ICs4NTIsNyBAQAogICAgIGRlZiBfY29weV9maWxlKHNlbGYsIG1ldGhvZCk6CiAgICAgICAgIGZuYW1lID0gJ3Rlc3QudHh0JwogICAgICAgICB0bXBkaXIgPSBzZWxmLm1rZHRlbXAoKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW3RtcGRpciwgZm5hbWVdKQorICAgICAgICB3cml0ZV9maWxlKCh0bXBkaXIsIGZuYW1lKSwgJ3h4eCcpCiAgICAgICAgIGZpbGUxID0gb3MucGF0aC5qb2luKHRtcGRpciwgZm5hbWUpCiAgICAgICAgIHRtcGRpcjIgPSBzZWxmLm1rZHRlbXAoKQogICAgICAgICBtZXRob2QoZmlsZTEsIHRtcGRpcjIpCkBAIC01MjMsMTQgKzg4NCwxNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKGZpbGUxX3N0YXQsICdzdF9mbGFncycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKGZpbGUyX3N0YXQsICdzdF9mbGFncycpKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfbWFrZV90YXJiYWxsKHNlbGYpOgogICAgICAgICAjIGNyZWF0aW5nIHNvbWV0aGluZyB0byB0YXIKICAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsICdmaWxlMSddLCAneHh4JykKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsICdmaWxlMiddLCAneHh4JykKKyAgICAgICAgd3JpdGVfZmlsZSgodG1wZGlyLCAnZmlsZTEnKSwgJ3h4eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoKHRtcGRpciwgJ2ZpbGUyJyksICd4eHgnKQogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4odG1wZGlyLCAnc3ViJykpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnc3ViJywgJ2ZpbGUzJ10sICd4eHgnKQorICAgICAgICB3cml0ZV9maWxlKCh0bXBkaXIsICdzdWInLCAnZmlsZTMnKSwgJ3h4eCcpCiAKICAgICAgICAgdG1wZGlyMiA9IHNlbGYubWtkdGVtcCgpCiAgICAgICAgICMgZm9yY2Ugc2h1dGlsIHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5CkBAIC01NzcsMTYgKzkzOCwxNiBAQAogICAgICAgICB0bXBkaXIgPSBzZWxmLm1rZHRlbXAoKQogICAgICAgICBkaXN0ID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2Rpc3QnKQogICAgICAgICBvcy5ta2RpcihkaXN0KQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW2Rpc3QsICdmaWxlMSddLCAneHh4JykKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFtkaXN0LCAnZmlsZTInXSwgJ3h4eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoKGRpc3QsICdmaWxlMScpLCAneHh4JykKKyAgICAgICAgd3JpdGVfZmlsZSgoZGlzdCwgJ2ZpbGUyJyksICd4eHgnKQogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oZGlzdCwgJ3N1YicpKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW2Rpc3QsICdzdWInLCAnZmlsZTMnXSwgJ3h4eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoKGRpc3QsICdzdWInLCAnZmlsZTMnKSwgJ3h4eCcpCiAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihkaXN0LCAnc3ViMicpKQogICAgICAgICB0bXBkaXIyID0gc2VsZi5ta2R0ZW1wKCkKICAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHRtcGRpcjIsICdhcmNoaXZlJykKICAgICAgICAgcmV0dXJuIHRtcGRpciwgdG1wZGlyMiwgYmFzZV9uYW1lCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh6bGliLCAiUmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhmaW5kX2V4ZWN1dGFibGUoJ3RhcicpIGFuZCBmaW5kX2V4ZWN1dGFibGUoJ2d6aXAnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnTmVlZCB0aGUgdGFyIGNvbW1hbmQgdG8gcnVuJykKICAgICBkZWYgdGVzdF90YXJmaWxlX3ZzX3RhcihzZWxmKToKQEAgLTY0MSwxMyArMTAwMiwxMyBAQAogICAgICAgICB0YXJiYWxsID0gYmFzZV9uYW1lICsgJy50YXInCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh0YXJiYWxsKSkKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHpsaWIsICJSZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFpJUF9TVVBQT1JULCAnTmVlZCB6aXAgc3VwcG9ydCB0byBydW4nKQogICAgIGRlZiB0ZXN0X21ha2VfemlwZmlsZShzZWxmKToKICAgICAgICAgIyBjcmVhdGluZyBzb21ldGhpbmcgdG8gdGFyCiAgICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnZmlsZTEnXSwgJ3h4eCcpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnZmlsZTInXSwgJ3h4eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoKHRtcGRpciwgJ2ZpbGUxJyksICd4eHgnKQorICAgICAgICB3cml0ZV9maWxlKCh0bXBkaXIsICdmaWxlMicpLCAneHh4JykKIAogICAgICAgICB0bXBkaXIyID0gc2VsZi5ta2R0ZW1wKCkKICAgICAgICAgIyBmb3JjZSBzaHV0aWwgdG8gY3JlYXRlIHRoZSBkaXJlY3RvcnkKQEAgLTY2NSw3ICsxMDI2LDcgQEAKICAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2FyY2hpdmUnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYWtlX2FyY2hpdmUsIGJhc2VfbmFtZSwgJ3h4eCcpCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh6bGliLCAiUmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9tYWtlX2FyY2hpdmVfb3duZXJfZ3JvdXAoc2VsZik6CiAgICAgICAgICMgdGVzdGluZyBtYWtlX2FyY2hpdmUgd2l0aCBvd25lciBhbmQgZ3JvdXAsIHdpdGggdmFyaW91cyBjb21iaW5hdGlvbnMKICAgICAgICAgIyB0aGlzIHdvcmtzIGV2ZW4gaWYgdGhlcmUncyBub3QgZ2lkL3VpZCBzdXBwb3J0CkBAIC02OTMsNyArMTA1NCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhyZXMpKQogCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh6bGliLCAiUmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhVSURfR0lEX1NVUFBPUlQsICJSZXF1aXJlcyBncnAgYW5kIHB3ZCBzdXBwb3J0IikKICAgICBkZWYgdGVzdF90YXJmaWxlX3Jvb3Rfb3duZXIoc2VsZik6CiAgICAgICAgIHRtcGRpciwgdG1wZGlyMiwgYmFzZV9uYW1lID0gIHNlbGYuX2NyZWF0ZV9maWxlcygpCkBAIC03NjIsNyArMTEyMyw3IEBACiAgICAgICAgICAgICAgICAgICAgIGRpZmYuYXBwZW5kKGZpbGVfKQogICAgICAgICByZXR1cm4gZGlmZgogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoemxpYiwgIlJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfdW5wYWNrX2FyY2hpdmUoc2VsZik6CiAgICAgICAgIGZvcm1hdHMgPSBbJ3RhcicsICdnenRhcicsICd6aXAnXQogICAgICAgICBpZiBCWjJfU1VQUE9SVEVEOgpAQCAtODEzLDYgKzExNzQsMTg0IEBACiAgICAgICAgIHVucmVnaXN0ZXJfdW5wYWNrX2Zvcm1hdCgnQm9vMicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3VucGFja19mb3JtYXRzKCksIGZvcm1hdHMpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNodXRpbCwgJ2Rpc2tfdXNhZ2UnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZGlza191c2FnZSBub3QgYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0iKQorICAgIGRlZiB0ZXN0X2Rpc2tfdXNhZ2Uoc2VsZik6CisgICAgICAgIHVzYWdlID0gc2h1dGlsLmRpc2tfdXNhZ2Uob3MuZ2V0Y3dkKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcih1c2FnZS50b3RhbCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHVzYWdlLnVzZWQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHVzYWdlLmZyZWUsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHVzYWdlLnRvdGFsLCB1c2FnZS51c2VkKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIodXNhZ2UudG90YWwsIHVzYWdlLmZyZWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhVSURfR0lEX1NVUFBPUlQsICJSZXF1aXJlcyBncnAgYW5kIHB3ZCBzdXBwb3J0IikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnY2hvd24nKSwgJ3JlcXVpcmVzIG9zLmNob3duJykKKyAgICBkZWYgdGVzdF9jaG93bihzZWxmKToKKworICAgICAgICAjIGNsZWFuZWQtdXAgYXV0b21hdGljYWxseSBieSBUZXN0U2h1dGlsLnRlYXJEb3duIG1ldGhvZAorICAgICAgICBkaXJuYW1lID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgZmlsZW5hbWUgPSB0ZW1wZmlsZS5ta3RlbXAoZGlyPWRpcm5hbWUpCisgICAgICAgIHdyaXRlX2ZpbGUoZmlsZW5hbWUsICd0ZXN0aW5nIGNob3duIGZ1bmN0aW9uJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTG9va3VwRXJyb3IpOgorICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCB1c2VyPSdub24tZXhpc2luZyB1c2VybmFtZScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMb29rdXBFcnJvcik6CisgICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIGdyb3VwPSdub24tZXhpc2luZyBncm91cG5hbWUnKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgYidzcGFtJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIDMuMTQpCisKKyAgICAgICAgdWlkID0gb3MuZ2V0dWlkKCkKKyAgICAgICAgZ2lkID0gb3MuZ2V0Z2lkKCkKKworICAgICAgICBkZWYgY2hlY2tfY2hvd24ocGF0aCwgdWlkPU5vbmUsIGdpZD1Ob25lKToKKyAgICAgICAgICAgIHMgPSBvcy5zdGF0KGZpbGVuYW1lKQorICAgICAgICAgICAgaWYgdWlkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodWlkLCBzLnN0X3VpZCkKKyAgICAgICAgICAgIGlmIGdpZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdpZCwgcy5zdF9naWQpCisKKyAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCB1aWQsIGdpZCkKKyAgICAgICAgY2hlY2tfY2hvd24oZmlsZW5hbWUsIHVpZCwgZ2lkKQorICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIHVpZCkKKyAgICAgICAgY2hlY2tfY2hvd24oZmlsZW5hbWUsIHVpZCkKKyAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCB1c2VyPXVpZCkKKyAgICAgICAgY2hlY2tfY2hvd24oZmlsZW5hbWUsIHVpZCkKKyAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCBncm91cD1naWQpCisgICAgICAgIGNoZWNrX2Nob3duKGZpbGVuYW1lLCBnaWQ9Z2lkKQorCisgICAgICAgIHNodXRpbC5jaG93bihkaXJuYW1lLCB1aWQsIGdpZCkKKyAgICAgICAgY2hlY2tfY2hvd24oZGlybmFtZSwgdWlkLCBnaWQpCisgICAgICAgIHNodXRpbC5jaG93bihkaXJuYW1lLCB1aWQpCisgICAgICAgIGNoZWNrX2Nob3duKGRpcm5hbWUsIHVpZCkKKyAgICAgICAgc2h1dGlsLmNob3duKGRpcm5hbWUsIHVzZXI9dWlkKQorICAgICAgICBjaGVja19jaG93bihkaXJuYW1lLCB1aWQpCisgICAgICAgIHNodXRpbC5jaG93bihkaXJuYW1lLCBncm91cD1naWQpCisgICAgICAgIGNoZWNrX2Nob3duKGRpcm5hbWUsIGdpZD1naWQpCisKKyAgICAgICAgdXNlciA9IHB3ZC5nZXRwd3VpZCh1aWQpWzBdCisgICAgICAgIGdyb3VwID0gZ3JwLmdldGdyZ2lkKGdpZClbMF0KKyAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCB1c2VyLCBncm91cCkKKyAgICAgICAgY2hlY2tfY2hvd24oZmlsZW5hbWUsIHVpZCwgZ2lkKQorICAgICAgICBzaHV0aWwuY2hvd24oZGlybmFtZSwgdXNlciwgZ3JvdXApCisgICAgICAgIGNoZWNrX2Nob3duKGRpcm5hbWUsIHVpZCwgZ2lkKQorCisgICAgZGVmIHRlc3RfY29weV9yZXR1cm5fdmFsdWUoc2VsZik6CisgICAgICAgICMgY29weSBhbmQgY29weTIgYm90aCByZXR1cm4gdGhlaXIgZGVzdGluYXRpb24gcGF0aC4KKyAgICAgICAgZm9yIGZuIGluIChzaHV0aWwuY29weSwgc2h1dGlsLmNvcHkyKToKKyAgICAgICAgICAgIHNyY19kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICAgICAgZHN0X2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ2ZvbycpCisgICAgICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgICAgICBydiA9IGZuKHNyYywgZHN0X2RpcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnYsIG9zLnBhdGguam9pbihkc3RfZGlyLCAnZm9vJykpCisgICAgICAgICAgICBydiA9IGZuKHNyYywgb3MucGF0aC5qb2luKGRzdF9kaXIsICdiYXInKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnYsIG9zLnBhdGguam9pbihkc3RfZGlyLCAnYmFyJykpCisKKyAgICBkZWYgdGVzdF9jb3B5ZmlsZV9yZXR1cm5fdmFsdWUoc2VsZik6CisgICAgICAgICMgY29weXRyZWUgcmV0dXJucyBpdHMgZGVzdGluYXRpb24gcGF0aC4KKyAgICAgICAgc3JjX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIGRzdF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBkc3RfZmlsZSA9IG9zLnBhdGguam9pbihkc3RfZGlyLCAnYmFyJykKKyAgICAgICAgc3JjX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ2ZvbycpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjX2ZpbGUsICdmb28nKQorICAgICAgICBydiA9IHNodXRpbC5jb3B5ZmlsZShzcmNfZmlsZSwgZHN0X2ZpbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhydikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZF9maWxlKHNyY19maWxlKSwgcmVhZF9maWxlKGRzdF9maWxlKSkKKworICAgIGRlZiB0ZXN0X2NvcHl0cmVlX3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgIyBjb3B5dHJlZSByZXR1cm5zIGl0cyBkZXN0aW5hdGlvbiBwYXRoLgorICAgICAgICBzcmNfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgZHN0X2RpciA9IHNyY19kaXIgKyAiZGVzdCIKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNodXRpbC5ybXRyZWUsIGRzdF9kaXIsIFRydWUpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbihzcmNfZGlyLCAnZm9vJykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICBydiA9IHNodXRpbC5jb3B5dHJlZShzcmNfZGlyLCBkc3RfZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnZm9vJ10sIG9zLmxpc3RkaXIocnYpKQorCisKK2NsYXNzIFRlc3RXaGljaCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYudGVtcF9kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0iVG1wIikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNodXRpbC5ybXRyZWUsIHNlbGYudGVtcF9kaXIsIFRydWUpCisgICAgICAgICMgR2l2ZSB0aGUgdGVtcF9maWxlIGFuICIuZXhlIiBzdWZmaXggZm9yIGFsbC4KKyAgICAgICAgIyBJdCdzIG5lZWRlZCBvbiBXaW5kb3dzIGFuZCBub3QgaGFybWZ1bCBvbiBvdGhlciBwbGF0Zm9ybXMuCisgICAgICAgIHNlbGYudGVtcF9maWxlID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKGRpcj1zZWxmLnRlbXBfZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9IlRtcCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeD0iLkV4ZSIpCisgICAgICAgIG9zLmNobW9kKHNlbGYudGVtcF9maWxlLm5hbWUsIHN0YXQuU19JWFVTUikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYudGVtcF9maWxlLmNsb3NlKQorICAgICAgICBzZWxmLmRpciwgc2VsZi5maWxlID0gb3MucGF0aC5zcGxpdChzZWxmLnRlbXBfZmlsZS5uYW1lKQorCisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgICMgR2l2ZW4gYW4gRVhFIGluIGEgZGlyZWN0b3J5LCBpdCBzaG91bGQgYmUgcmV0dXJuZWQuCisgICAgICAgIHJ2ID0gc2h1dGlsLndoaWNoKHNlbGYuZmlsZSwgcGF0aD1zZWxmLmRpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydiwgc2VsZi50ZW1wX2ZpbGUubmFtZSkKKworICAgIGRlZiB0ZXN0X2Fic29sdXRlX2NtZChzZWxmKToKKyAgICAgICAgIyBXaGVuIGdpdmVuIHRoZSBmdWxseSBxdWFsaWZpZWQgcGF0aCB0byBhbiBleGVjdXRhYmxlIHRoYXQgZXhpc3RzLAorICAgICAgICAjIGl0IHNob3VsZCBiZSByZXR1cm5lZC4KKyAgICAgICAgcnYgPSBzaHV0aWwud2hpY2goc2VsZi50ZW1wX2ZpbGUubmFtZSwgcGF0aD1zZWxmLnRlbXBfZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ2LCBzZWxmLnRlbXBfZmlsZS5uYW1lKQorCisgICAgZGVmIHRlc3RfcmVsYXRpdmVfY21kKHNlbGYpOgorICAgICAgICAjIFdoZW4gZ2l2ZW4gdGhlIHJlbGF0aXZlIHBhdGggd2l0aCBhIGRpcmVjdG9yeSBwYXJ0IHRvIGFuIGV4ZWN1dGFibGUKKyAgICAgICAgIyB0aGF0IGV4aXN0cywgaXQgc2hvdWxkIGJlIHJldHVybmVkLgorICAgICAgICBiYXNlX2RpciwgdGFpbF9kaXIgPSBvcy5wYXRoLnNwbGl0KHNlbGYuZGlyKQorICAgICAgICByZWxwYXRoID0gb3MucGF0aC5qb2luKHRhaWxfZGlyLCBzZWxmLmZpbGUpCisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZChwYXRoPWJhc2VfZGlyKToKKyAgICAgICAgICAgIHJ2ID0gc2h1dGlsLndoaWNoKHJlbHBhdGgsIHBhdGg9c2VsZi50ZW1wX2RpcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnYsIHJlbHBhdGgpCisgICAgICAgICMgQnV0IGl0IHNob3VsZG4ndCBiZSBzZWFyY2hlZCBpbiBQQVRIIGRpcmVjdG9yaWVzIChpc3N1ZSAjMTY5NTcpLgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QocGF0aD1zZWxmLmRpcik6CisgICAgICAgICAgICBydiA9IHNodXRpbC53aGljaChyZWxwYXRoLCBwYXRoPWJhc2VfZGlyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocnYpCisKKyAgICBkZWYgdGVzdF9jd2Qoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE2OTU3CisgICAgICAgIGJhc2VfZGlyID0gb3MucGF0aC5kaXJuYW1lKHNlbGYuZGlyKQorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QocGF0aD1zZWxmLmRpcik6CisgICAgICAgICAgICBydiA9IHNodXRpbC53aGljaChzZWxmLmZpbGUsIHBhdGg9YmFzZV9kaXIpCisgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKKyAgICAgICAgICAgICAgICAjIFdpbmRvd3M6IGN1cnJlbnQgZGlyZWN0b3J5IGltcGxpY2l0bHkgb24gUEFUSAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnYsIG9zLnBhdGguam9pbihvcy5jdXJkaXIsIHNlbGYuZmlsZSkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgT3RoZXIgcGxhdGZvcm1zOiBzaG91bGRuJ3QgbWF0Y2ggaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJ2KQorCisgICAgZGVmIHRlc3Rfbm9uX21hdGNoaW5nX21vZGUoc2VsZik6CisgICAgICAgICMgU2V0IHRoZSBmaWxlIHJlYWQtb25seSBhbmQgYXNrIGZvciB3cml0ZWFibGUgZmlsZXMuCisgICAgICAgIG9zLmNobW9kKHNlbGYudGVtcF9maWxlLm5hbWUsIHN0YXQuU19JUkVBRCkKKyAgICAgICAgcnYgPSBzaHV0aWwud2hpY2goc2VsZi5maWxlLCBwYXRoPXNlbGYuZGlyLCBtb2RlPW9zLldfT0spCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJ2KQorCisgICAgZGVmIHRlc3RfcmVsYXRpdmVfcGF0aChzZWxmKToKKyAgICAgICAgYmFzZV9kaXIsIHRhaWxfZGlyID0gb3MucGF0aC5zcGxpdChzZWxmLmRpcikKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKHBhdGg9YmFzZV9kaXIpOgorICAgICAgICAgICAgcnYgPSBzaHV0aWwud2hpY2goc2VsZi5maWxlLCBwYXRoPXRhaWxfZGlyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydiwgb3MucGF0aC5qb2luKHRhaWxfZGlyLCBzZWxmLmZpbGUpKQorCisgICAgZGVmIHRlc3Rfbm9uZXhpc3RlbnRfZmlsZShzZWxmKToKKyAgICAgICAgIyBSZXR1cm4gTm9uZSB3aGVuIG5vIG1hdGNoaW5nIGV4ZWN1dGFibGUgZmlsZSBpcyBmb3VuZCBvbiB0aGUgcGF0aC4KKyAgICAgICAgcnYgPSBzaHV0aWwud2hpY2goImZvby5leGUiLCBwYXRoPXNlbGYuZGlyKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShydikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoZXh0IGNoZWNrIGlzIFdpbmRvd3Mtb25seSIpCisgICAgZGVmIHRlc3RfcGF0aGV4dF9jaGVja2luZyhzZWxmKToKKyAgICAgICAgIyBBc2sgZm9yIHRoZSBmaWxlIHdpdGhvdXQgdGhlICIuZXhlIiBleHRlbnNpb24sIHRoZW4gZW5zdXJlIHRoYXQKKyAgICAgICAgIyBpdCBnZXRzIGZvdW5kIHByb3Blcmx5IHdpdGggdGhlIGV4dGVuc2lvbi4KKyAgICAgICAgcnYgPSBzaHV0aWwud2hpY2goc2VsZi5maWxlWzotNF0sIHBhdGg9c2VsZi5kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnYsIHNlbGYudGVtcF9maWxlLm5hbWVbOi00XSArICIuRVhFIikKKwogCiBjbGFzcyBUZXN0TW92ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTkyNiw2ICsxNDY1LDU4IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKFRFU1RGTiwgaWdub3JlX2Vycm9ycz1UcnVlKQogCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIEBtb2NrX3JlbmFtZQorICAgIGRlZiB0ZXN0X21vdmVfZmlsZV9zeW1saW5rKHNlbGYpOgorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4oc2VsZi5zcmNfZGlyLCAnYmFyJykKKyAgICAgICAgb3Muc3ltbGluayhzZWxmLnNyY19maWxlLCBkc3QpCisgICAgICAgIHNodXRpbC5tb3ZlKGRzdCwgc2VsZi5kc3RfZmlsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKHNlbGYuZHN0X2ZpbGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5zYW1lZmlsZShzZWxmLnNyY19maWxlLCBzZWxmLmRzdF9maWxlKSkKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBAbW9ja19yZW5hbWUKKyAgICBkZWYgdGVzdF9tb3ZlX2ZpbGVfc3ltbGlua190b19kaXIoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gImJhciIKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHNlbGYuc3JjX2RpciwgZmlsZW5hbWUpCisgICAgICAgIG9zLnN5bWxpbmsoc2VsZi5zcmNfZmlsZSwgZHN0KQorICAgICAgICBzaHV0aWwubW92ZShkc3QsIHNlbGYuZHN0X2RpcikKKyAgICAgICAgZmluYWxfbGluayA9IG9zLnBhdGguam9pbihzZWxmLmRzdF9kaXIsIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsoZmluYWxfbGluaykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLnNhbWVmaWxlKHNlbGYuc3JjX2ZpbGUsIGZpbmFsX2xpbmspKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIEBtb2NrX3JlbmFtZQorICAgIGRlZiB0ZXN0X21vdmVfZGFuZ2xpbmdfc3ltbGluayhzZWxmKToKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHNlbGYuc3JjX2RpciwgJ2JheicpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihzZWxmLnNyY19kaXIsICdiYXInKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgZHN0KQorICAgICAgICBkc3RfbGluayA9IG9zLnBhdGguam9pbihzZWxmLmRzdF9kaXIsICdxdXV4JykKKyAgICAgICAgc2h1dGlsLm1vdmUoZHN0LCBkc3RfbGluaykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKGRzdF9saW5rKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLnJlYWxwYXRoKHNyYyksIG9zLnBhdGgucmVhbHBhdGgoZHN0X2xpbmspKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIEBtb2NrX3JlbmFtZQorICAgIGRlZiB0ZXN0X21vdmVfZGlyX3N5bWxpbmsoc2VsZik6CisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbihzZWxmLnNyY19kaXIsICdiYXonKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4oc2VsZi5zcmNfZGlyLCAnYmFyJykKKyAgICAgICAgb3MubWtkaXIoc3JjKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgZHN0KQorICAgICAgICBkc3RfbGluayA9IG9zLnBhdGguam9pbihzZWxmLmRzdF9kaXIsICdxdXV4JykKKyAgICAgICAgc2h1dGlsLm1vdmUoZHN0LCBkc3RfbGluaykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKGRzdF9saW5rKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguc2FtZWZpbGUoc3JjLCBkc3RfbGluaykpCisKKyAgICBkZWYgdGVzdF9tb3ZlX3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgcnYgPSBzaHV0aWwubW92ZShzZWxmLnNyY19maWxlLCBzZWxmLmRzdF9kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnYsCisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYuZHN0X2Rpciwgb3MucGF0aC5iYXNlbmFtZShzZWxmLnNyY19maWxlKSkpCisKKyAgICBkZWYgdGVzdF9tb3ZlX2FzX3JlbmFtZV9yZXR1cm5fdmFsdWUoc2VsZik6CisgICAgICAgIHJ2ID0gc2h1dGlsLm1vdmUoc2VsZi5zcmNfZmlsZSwgb3MucGF0aC5qb2luKHNlbGYuZHN0X2RpciwgJ2JhcicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ2LCBvcy5wYXRoLmpvaW4oc2VsZi5kc3RfZGlyLCAnYmFyJykpCisKIAogY2xhc3MgVGVzdENvcHlGaWxlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMTAzNSw2ICsxNjI2LDcgQEAKICAgICAgICAgIyBidXQgYSBkaWZmZXJlbnQgY2FzZS4KIAogICAgICAgICBzZWxmLnNyY19kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNodXRpbC5ybXRyZWUsIHNlbGYuc3JjX2RpciwgVHJ1ZSkKICAgICAgICAgZHN0X2RpciA9IG9zLnBhdGguam9pbigKICAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoc2VsZi5zcmNfZGlyKSwKICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKHNlbGYuc3JjX2RpcikudXBwZXIoKSkKQEAgLTEwNDQsMTMgKzE2MzYsNTcgQEAKICAgICAgICAgICAgIHNodXRpbC5tb3ZlKHNlbGYuc3JjX2RpciwgZHN0X2RpcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKGRzdF9kaXIpKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZHN0X2Rpcik6Ci0gICAgICAgICAgICAgICAgb3Mucm1kaXIoZHN0X2RpcikKKyAgICAgICAgICAgIG9zLnJtZGlyKGRzdF9kaXIpCiAKK2NsYXNzIFRlcm1zaXplVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2RvZXNfbm90X2NyYXNoKHNlbGYpOgorICAgICAgICAiIiJDaGVjayBpZiBnZXRfdGVybWluYWxfc2l6ZSgpIHJldHVybnMgYSBtZWFuaW5nZnVsIHZhbHVlLgorCisgICAgICAgIFRoZXJlJ3Mgbm8gZWFzeSBwb3J0YWJsZSB3YXkgdG8gYWN0dWFsbHkgY2hlY2sgdGhlIHNpemUgb2YgdGhlCisgICAgICAgIHRlcm1pbmFsLCBzbyBsZXQncyBjaGVjayBpZiBpdCByZXR1cm5zIHNvbWV0aGluZyBzZW5zaWJsZSBpbnN0ZWFkLgorICAgICAgICAiIiIKKyAgICAgICAgc2l6ZSA9IHNodXRpbC5nZXRfdGVybWluYWxfc2l6ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNpemUuY29sdW1ucywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoc2l6ZS5saW5lcywgMCkKKworICAgIGRlZiB0ZXN0X29zX2Vudmlyb25fZmlyc3Qoc2VsZik6CisgICAgICAgICJDaGVjayBpZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaGF2ZSBwcmVjZWRlbmNlIgorCisgICAgICAgIHdpdGggc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgorICAgICAgICAgICAgZW52WydDT0xVTU5TJ10gPSAnNzc3JworICAgICAgICAgICAgc2l6ZSA9IHNodXRpbC5nZXRfdGVybWluYWxfc2l6ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZS5jb2x1bW5zLCA3NzcpCisKKyAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CisgICAgICAgICAgICBlbnZbJ0xJTkVTJ10gPSAnODg4JworICAgICAgICAgICAgc2l6ZSA9IHNodXRpbC5nZXRfdGVybWluYWxfc2l6ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZS5saW5lcywgODg4KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MuaXNhdHR5KHN5cy5fX3N0ZG91dF9fLmZpbGVubygpKSwgIm5vdCBvbiB0dHkiKQorICAgIGRlZiB0ZXN0X3N0dHlfbWF0Y2goc2VsZik6CisgICAgICAgICIiIkNoZWNrIGlmIHN0dHkgcmV0dXJucyB0aGUgc2FtZSByZXN1bHRzIGlnbm9yaW5nIGVudgorCisgICAgICAgIFRoaXMgdGVzdCB3aWxsIGZhaWwgaWYgc3RkaW4gYW5kIHN0ZG91dCBhcmUgY29ubmVjdGVkIHRvCisgICAgICAgIGRpZmZlcmVudCB0ZXJtaW5hbHMgd2l0aCBkaWZmZXJlbnQgc2l6ZXMuIE5ldmVydGhlbGVzcywgc3VjaAorICAgICAgICBzaXR1YXRpb25zIHNob3VsZCBiZSBwcmV0dHkgcmFyZS4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNpemUgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ3N0dHknLCAnc2l6ZSddKS5kZWNvZGUoKS5zcGxpdCgpCisgICAgICAgIGV4Y2VwdCAoRmlsZU5vdEZvdW5kRXJyb3IsIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInN0dHkgaW52b2NhdGlvbiBmYWlsZWQiKQorICAgICAgICBleHBlY3RlZCA9IChpbnQoc2l6ZVsxXSksIGludChzaXplWzBdKSkgIyByZXZlcnNlZCBvcmRlcgorCisgICAgICAgIHdpdGggc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgorICAgICAgICAgICAgZGVsIGVudlsnTElORVMnXQorICAgICAgICAgICAgZGVsIGVudlsnQ09MVU1OUyddCisgICAgICAgICAgICBhY3R1YWwgPSBzaHV0aWwuZ2V0X3Rlcm1pbmFsX3NpemUoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKIAogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdFNodXRpbCwgVGVzdE1vdmUsIFRlc3RDb3B5RmlsZSkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0U2h1dGlsLCBUZXN0TW92ZSwgVGVzdENvcHlGaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFRlcm1zaXplVGVzdHMsIFRlc3RXaGljaCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkgYi9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weQppbmRleCA0YTFiNGE2Li45OTI0M2RmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weQpAQCAtMSwxNyArMSwxOSBAQAotaW1wb3J0IGVycm5vCi1pbXBvcnQgZ2MKLWltcG9ydCBvcwotaW1wb3J0IHBpY2tsZQotaW1wb3J0IHNlbGVjdAotaW1wb3J0IHNpZ25hbAotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBzeXMKLWltcG9ydCB0aW1lCi1pbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBjb250ZXh0bGliIGltcG9ydCBjbG9zaW5nCitpbXBvcnQgZ2MKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBzZWxlY3QKK2ltcG9ydCBzaWduYWwKK2ltcG9ydCBzdHJ1Y3QKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgdHJhY2ViYWNrCitpbXBvcnQgc3lzLCBvcywgdGltZSwgZXJybm8KIGZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBzcGF3bl9weXRob24KK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkaW5nID0gTm9uZQogCiBpZiBzeXMucGxhdGZvcm0gaW4gKCdvczInLCAncmlzY29zJyk6CiAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIkNhbid0IHRlc3Qgc2lnbmFsIG9uICVzIiAlIHN5cy5wbGF0Zm9ybSkKQEAgLTU3LDE1ICs1OSw5IEBACiAKICAgICBkZWYgaGFuZGxlckEoc2VsZiwgc2lnbnVtLCBmcmFtZSk6CiAgICAgICAgIHNlbGYuYV9jYWxsZWQgPSBUcnVlCi0gICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgIHByaW50KCJoYW5kbGVyQSBpbnZva2VkIGZyb20gc2lnbmFsICVzIGF0OlxuJXMiICUgKAotICAgICAgICAgICAgICAgIHNpZ251bSwgc2VsZi5mb3JtYXRfZnJhbWUoZnJhbWUsIGxpbWl0PTEpKSkKIAogICAgIGRlZiBoYW5kbGVyQihzZWxmLCBzaWdudW0sIGZyYW1lKToKICAgICAgICAgc2VsZi5iX2NhbGxlZCA9IFRydWUKLSAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgcHJpbnQgKCJoYW5kbGVyQiBpbnZva2VkIGZyb20gc2lnbmFsICVzIGF0OlxuJXMiICUgKAotICAgICAgICAgICAgICAgIHNpZ251bSwgc2VsZi5mb3JtYXRfZnJhbWUoZnJhbWUsIGxpbWl0PTEpKSkKICAgICAgICAgcmFpc2UgSGFuZGxlckJDYWxsZWQoc2lnbnVtLCBzZWxmLmZvcm1hdF9mcmFtZShmcmFtZSkpCiAKICAgICBkZWYgd2FpdChzZWxmLCBjaGlsZCk6CkBAIC05Miw4ICs4OCw2IEBACiAKICAgICAgICAgIyBMZXQgdGhlIHN1Yi1wcm9jZXNzZXMga25vdyB3aG8gdG8gc2VuZCBzaWduYWxzIHRvLgogICAgICAgICBwaWQgPSBvcy5nZXRwaWQoKQotICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICBwcmludCgidGVzdCBydW5uZXIncyBwaWQgaXMiLCBwaWQpCiAKICAgICAgICAgY2hpbGQgPSBpZ25vcmluZ19laW50cihzdWJwcm9jZXNzLlBvcGVuLCBbJ2tpbGwnLCAnLUhVUCcsIHN0cihwaWQpXSkKICAgICAgICAgaWYgY2hpbGQ6CkBAIC0xMTcsOCArMTExLDYgQEAKICAgICAgICAgZXhjZXB0IEhhbmRsZXJCQ2FsbGVkOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuYl9jYWxsZWQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuYV9jYWxsZWQpCi0gICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIkhhbmRsZXJCQ2FsbGVkIGV4Y2VwdGlvbiBjYXVnaHQiKQogCiAgICAgICAgIGNoaWxkID0gaWdub3JpbmdfZWludHIoc3VicHJvY2Vzcy5Qb3BlbiwgWydraWxsJywgJy1VU1IyJywgc3RyKHBpZCldKQogICAgICAgICBpZiBjaGlsZDoKQEAgLTEzNCw4ICsxMjYsNyBAQAogICAgICAgICAgICAgIyBtYXkgcmV0dXJuIGVhcmx5LgogICAgICAgICAgICAgdGltZS5zbGVlcCgxKQogICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIktleWJvYXJkSW50ZXJydXB0ICh0aGUgYWxhcm0oKSB3ZW50IG9mZikiKQorICAgICAgICAgICAgcGFzcwogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIlNvbWUgb3RoZXIgZXhjZXB0aW9uIHdva2UgdXMgZnJvbSBwYXVzZTogJXMiICUKICAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2suZm9ybWF0X2V4YygpKQpAQCAtMTkxLDcgKzE4Miw3IEBACiAKIAogQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIk5vdCB2YWxpZCBvbiBXaW5kb3dzIikKLWNsYXNzIEJhc2ljU2lnbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgUG9zaXhUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRyaXZpYWxfc2lnbmFsX2hhbmRsZXIoc2VsZiwgKmFyZ3MpOgogICAgICAgICBwYXNzCiAKQEAgLTIzMSwzMyArMjIyLDUzIEBACiAgICAgICAgICAgICBzaWduYWwuc2lnbmFsKDcsIGhhbmRsZXIpCiAKIAorY2xhc3MgV2FrZXVwRkRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2ZkKHNlbGYpOgorICAgICAgICBmZCA9IHN1cHBvcnQubWFrZV9iYWRfZmQoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzaWduYWwuc2V0X3dha2V1cF9mZCwgZmQpCisKKwogQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIk5vdCB2YWxpZCBvbiBXaW5kb3dzIikKIGNsYXNzIFdha2V1cFNpZ25hbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgY2hlY2tfd2FrZXVwKHNlbGYsIHRlc3RfYm9keSk6Ci0gICAgICAgICMgdXNlIGEgc3VicHJvY2VzcyB0byBoYXZlIG9ubHkgb25lIHRocmVhZCBhbmQgdG8gbm90IGNoYW5nZSBzaWduYWwKLSAgICAgICAgIyBoYW5kbGluZyBvZiB0aGUgcGFyZW50IHByb2Nlc3MKKyAgICBkZWYgY2hlY2tfd2FrZXVwKHNlbGYsIHRlc3RfYm9keSwgKnNpZ25hbHMsIG9yZGVyZWQ9VHJ1ZSk6CisgICAgICAgICMgdXNlIGEgc3VicHJvY2VzcyB0byBoYXZlIG9ubHkgb25lIHRocmVhZAogICAgICAgICBjb2RlID0gIiIiaWYgMToKICAgICAgICAgaW1wb3J0IGZjbnRsCiAgICAgICAgIGltcG9ydCBvcwogICAgICAgICBpbXBvcnQgc2lnbmFsCisgICAgICAgIGltcG9ydCBzdHJ1Y3QKKworICAgICAgICBzaWduYWxzID0geyFyfQogCiAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgogICAgICAgICAgICAgcGFzcwogCisgICAgICAgIGRlZiBjaGVja19zaWdudW0oc2lnbmFscyk6CisgICAgICAgICAgICBkYXRhID0gb3MucmVhZChyZWFkLCBsZW4oc2lnbmFscykrMSkKKyAgICAgICAgICAgIHJhaXNlZCA9IHN0cnVjdC51bnBhY2soJyV1QicgJSBsZW4oZGF0YSksIGRhdGEpCisgICAgICAgICAgICBpZiBub3QgeyFyfToKKyAgICAgICAgICAgICAgICByYWlzZWQgPSBzZXQocmFpc2VkKQorICAgICAgICAgICAgICAgIHNpZ25hbHMgPSBzZXQoc2lnbmFscykKKyAgICAgICAgICAgIGlmIHJhaXNlZCAhPSBzaWduYWxzOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXIgIT0gJXIiICUgKHJhaXNlZCwgc2lnbmFscykpCisKICAgICAgICAge30KIAogICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBoYW5kbGVyKQogICAgICAgICByZWFkLCB3cml0ZSA9IG9zLnBpcGUoKQotICAgICAgICBmbGFncyA9IGZjbnRsLmZjbnRsKHdyaXRlLCBmY250bC5GX0dFVEZMLCAwKQotICAgICAgICBmbGFncyA9IGZsYWdzIHwgb3MuT19OT05CTE9DSwotICAgICAgICBmY250bC5mY250bCh3cml0ZSwgZmNudGwuRl9TRVRGTCwgZmxhZ3MpCisgICAgICAgIGZvciBmZCBpbiAocmVhZCwgd3JpdGUpOgorICAgICAgICAgICAgZmxhZ3MgPSBmY250bC5mY250bChmZCwgZmNudGwuRl9HRVRGTCwgMCkKKyAgICAgICAgICAgIGZsYWdzID0gZmxhZ3MgfCBvcy5PX05PTkJMT0NLCisgICAgICAgICAgICBmY250bC5mY250bChmZCwgZmNudGwuRl9TRVRGTCwgZmxhZ3MpCiAgICAgICAgIHNpZ25hbC5zZXRfd2FrZXVwX2ZkKHdyaXRlKQogCiAgICAgICAgIHRlc3QoKQorICAgICAgICBjaGVja19zaWdudW0oc2lnbmFscykKIAogICAgICAgICBvcy5jbG9zZShyZWFkKQogICAgICAgICBvcy5jbG9zZSh3cml0ZSkKLSAgICAgICAgIiIiLmZvcm1hdCh0ZXN0X2JvZHkpCisgICAgICAgICIiIi5mb3JtYXQoc2lnbmFscywgb3JkZXJlZCwgdGVzdF9ib2R5KQogCiAgICAgICAgIGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKIApAQCAtMjgzLDcgKzI5NCw3IEBACiAgICAgICAgICAgICBkdCA9IGFmdGVyX3RpbWUgLSBtaWRfdGltZQogICAgICAgICAgICAgaWYgZHQgPj0gVElNRU9VVF9IQUxGOgogICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgPj0gJXMiICUgKGR0LCBUSU1FT1VUX0hBTEYpKQotICAgICAgICAiIiIpCisgICAgICAgICIiIiwgc2lnbmFsLlNJR0FMUk0pCiAKICAgICBkZWYgdGVzdF93YWtldXBfZmRfZHVyaW5nKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3dha2V1cCgiIiJkZWYgdGVzdCgpOgpAQCAtMzA2LDcgKzMxNywzMiBAQAogICAgICAgICAgICAgZHQgPSBhZnRlcl90aW1lIC0gYmVmb3JlX3RpbWUKICAgICAgICAgICAgIGlmIGR0ID49IFRJTUVPVVRfSEFMRjoKICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzID49ICVzIiAlIChkdCwgVElNRU9VVF9IQUxGKSkKLSAgICAgICAgIiIiKQorICAgICAgICAiIiIsIHNpZ25hbC5TSUdBTFJNKQorCisgICAgZGVmIHRlc3Rfc2lnbnVtKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3dha2V1cCgiIiJkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMSwgaGFuZGxlcikKKyAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ25hbC5TSUdVU1IxKQorICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbmFsLlNJR0FMUk0pCisgICAgICAgICIiIiwgc2lnbmFsLlNJR1VTUjEsIHNpZ25hbC5TSUdBTFJNKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwucHRocmVhZF9zaWdtYXNrKCknKQorICAgIGRlZiB0ZXN0X3BlbmRpbmcoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfd2FrZXVwKCIiImRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzaWdudW0xID0gc2lnbmFsLlNJR1VTUjEKKyAgICAgICAgICAgIHNpZ251bTIgPSBzaWduYWwuU0lHVVNSMgorCisgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ251bTEsIGhhbmRsZXIpCisgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ251bTIsIGhhbmRsZXIpCisKKyAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgKHNpZ251bTEsIHNpZ251bTIpKQorICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbnVtMSkKKyAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bTIpCisgICAgICAgICAgICAjIFVuYmxvY2tpbmcgdGhlIDIgc2lnbmFscyBjYWxscyB0aGUgQyBzaWduYWwgaGFuZGxlciB0d2ljZQorICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX1VOQkxPQ0ssIChzaWdudW0xLCBzaWdudW0yKSkKKyAgICAgICAgIiIiLCAgc2lnbmFsLlNJR1VTUjEsIHNpZ25hbC5TSUdVU1IyLCBvcmRlcmVkPUZhbHNlKQorCiAKIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJOb3QgdmFsaWQgb24gV2luZG93cyIpCiBjbGFzcyBTaWdpbnRlcnJ1cHRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTMxNiw5ICszNTIsNiBAQAogICAgICAgICByZWFkIGlzIGludGVycnVwdGVkIGJ5IHRoZSBzaWduYWwgYW5kIHJhaXNlcyBhbiBleGNlcHRpb24uICBSZXR1cm4gRmFsc2UKICAgICAgICAgaWYgaXQgcmV0dXJucyBub3JtYWxseS4KICAgICAgICAgIiIiCi0gICAgICAgIGNsYXNzIFRpbWVvdXQoRXhjZXB0aW9uKToKLSAgICAgICAgICAgIHBhc3MKLQogICAgICAgICAjIHVzZSBhIHN1YnByb2Nlc3MgdG8gaGF2ZSBvbmx5IG9uZSB0aHJlYWQsIHRvIGhhdmUgYSB0aW1lb3V0IG9uIHRoZQogICAgICAgICAjIGJsb2NraW5nIHJlYWQgYW5kIHRvIG5vdCB0b3VjaCBzaWduYWwgaGFuZGxpbmcgaW4gdGhpcyBwcm9jZXNzCiAgICAgICAgIGNvZGUgPSAiIiJpZiAxOgpAQCAtMzU5LDE4ICszOTIsOCBAQAogICAgICAgICAgICAgICAgICMgd2FpdCB1bnRpbCB0aGUgY2hpbGQgcHJvY2VzcyBpcyBsb2FkZWQgYW5kIGhhcyBzdGFydGVkCiAgICAgICAgICAgICAgICAgZmlyc3RfbGluZSA9IHByb2Nlc3Muc3Rkb3V0LnJlYWRsaW5lKCkKIAotICAgICAgICAgICAgICAgICMgV2FpdCB0aGUgcHJvY2VzcyB3aXRoIGEgdGltZW91dCBvZiA1IHNlY29uZHMKLSAgICAgICAgICAgICAgICB0aW1lb3V0ID0gdGltZS50aW1lKCkgKyA1LjAKLSAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IDwgdGltZS50aW1lKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0KCkKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gcHJvY2Vzcy5wb2xsKCkKLSAgICAgICAgICAgICAgICAgICAgaWYgc3RhdHVzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCi0KLSAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQotICAgICAgICAgICAgZXhjZXB0IFRpbWVvdXQ6CisgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKHRpbWVvdXQ9NS4wKQorICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQ6CiAgICAgICAgICAgICAgICAgcHJvY2Vzcy5raWxsKCkKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIGVsc2U6CkBAIC00MTksOCArNDQyLDYgQEAKIAogICAgIGRlZiBzaWdfYWxybShzZWxmLCAqYXJncyk6CiAgICAgICAgIHNlbGYuaG5kbF9jYWxsZWQgPSBUcnVlCi0gICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgIHByaW50KCJTSUdBTFJNIGhhbmRsZXIgaW52b2tlZCIsIGFyZ3MpCiAKICAgICBkZWYgc2lnX3Z0YWxybShzZWxmLCAqYXJncyk6CiAgICAgICAgIHNlbGYuaG5kbF9jYWxsZWQgPSBUcnVlCkBAIC00MzIsMjEgKzQ1MywxMyBAQAogICAgICAgICBlbGlmIHNlbGYuaG5kbF9jb3VudCA9PSAzOgogICAgICAgICAgICAgIyBkaXNhYmxlIElUSU1FUl9WSVJUVUFMLCB0aGlzIGZ1bmN0aW9uIHNob3VsZG4ndCBiZSBjYWxsZWQgYW55bW9yZQogICAgICAgICAgICAgc2lnbmFsLnNldGl0aW1lcihzaWduYWwuSVRJTUVSX1ZJUlRVQUwsIDApCi0gICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoImxhc3QgU0lHVlRBTFJNIGhhbmRsZXIgY2FsbCIpCiAKICAgICAgICAgc2VsZi5obmRsX2NvdW50ICs9IDEKIAotICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICBwcmludCgiU0lHVlRBTFJNIGhhbmRsZXIgaW52b2tlZCIsIGFyZ3MpCi0KICAgICBkZWYgc2lnX3Byb2Yoc2VsZiwgKmFyZ3MpOgogICAgICAgICBzZWxmLmhuZGxfY2FsbGVkID0gVHJ1ZQogICAgICAgICBzaWduYWwuc2V0aXRpbWVyKHNpZ25hbC5JVElNRVJfUFJPRiwgMCkKIAotICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICBwcmludCgiU0lHUFJPRiBoYW5kbGVyIGludm9rZWQiLCBhcmdzKQotCiAgICAgZGVmIHRlc3RfaXRpbWVyX2V4YyhzZWxmKToKICAgICAgICAgIyBYWFggSSdtIGFzc3VtaW5nIC0xIGlzIGFuIGludmFsaWQgaXRpbWVyLCBidXQgbWF5YmUgc29tZSBwbGF0Zm9ybQogICAgICAgICAjIGRlZmluZXMgaXQgPwpAQCAtNDU5LDEwICs0NzIsNyBAQAogICAgIGRlZiB0ZXN0X2l0aW1lcl9yZWFsKHNlbGYpOgogICAgICAgICBzZWxmLml0aW1lciA9IHNpZ25hbC5JVElNRVJfUkVBTAogICAgICAgICBzaWduYWwuc2V0aXRpbWVyKHNlbGYuaXRpbWVyLCAxLjApCi0gICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgIHByaW50KCJcbmNhbGwgcGF1c2UoKS4uLiIpCiAgICAgICAgIHNpZ25hbC5wYXVzZSgpCi0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhuZGxfY2FsbGVkLCBUcnVlKQogCiAgICAgIyBJc3N1ZSAzODY0LCB1bmtub3duIGlmIHRoaXMgYWZmZWN0cyBlYXJsaWVyIHZlcnNpb25zIG9mIGZyZWVic2QgYWxzbwpAQCAtNTExLDExICs1MjEsMzU5IEBACiAgICAgICAgICMgYW5kIHRoZSBoYW5kbGVyIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5obmRsX2NhbGxlZCwgVHJ1ZSkKIAorCitjbGFzcyBQZW5kaW5nU2lnbmFsc1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IHB0aHJlYWRfc2lnbWFzaygpLCBwdGhyZWFkX2tpbGwoKSwgc2lncGVuZGluZygpIGFuZCBzaWd3YWl0KCkKKyAgICBmdW5jdGlvbnMuCisgICAgIiIiCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWdwZW5kaW5nJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3BlbmRpbmcoKScpCisgICAgZGVmIHRlc3Rfc2lncGVuZGluZ19lbXB0eShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYWwuc2lncGVuZGluZygpLCBzZXQoKSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9zaWdtYXNrJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaygpJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3BlbmRpbmcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lncGVuZGluZygpJykKKyAgICBkZWYgdGVzdF9zaWdwZW5kaW5nKHNlbGYpOgorICAgICAgICBjb2RlID0gIiIiaWYgMToKKyAgICAgICAgICAgIGltcG9ydCBvcworICAgICAgICAgICAgaW1wb3J0IHNpZ25hbAorCisgICAgICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICAgICAgc2lnbnVtID0gc2lnbmFsLlNJR1VTUjEKKyAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbnVtLCBoYW5kbGVyKQorCisgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIFtzaWdudW1dKQorICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbnVtKQorICAgICAgICAgICAgcGVuZGluZyA9IHNpZ25hbC5zaWdwZW5kaW5nKCkKKyAgICAgICAgICAgIGlmIHBlbmRpbmcgIT0ge3NpZ251bX06CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCclcyAhPSB7JXN9JyAlIChwZW5kaW5nLCBzaWdudW0pKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19VTkJMT0NLLCBbc2lnbnVtXSkKKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiWmVyb0RpdmlzaW9uRXJyb3Igbm90IHJhaXNlZCIpCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfa2lsbCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5wdGhyZWFkX2tpbGwoKScpCisgICAgZGVmIHRlc3RfcHRocmVhZF9raWxsKHNlbGYpOgorICAgICAgICBjb2RlID0gIiIiaWYgMToKKyAgICAgICAgICAgIGltcG9ydCBzaWduYWwKKyAgICAgICAgICAgIGltcG9ydCB0aHJlYWRpbmcKKyAgICAgICAgICAgIGltcG9ydCBzeXMKKworICAgICAgICAgICAgc2lnbnVtID0gc2lnbmFsLlNJR1VTUjEKKworICAgICAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICAgICAgMS8wCisKKyAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbnVtLCBoYW5kbGVyKQorCisgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2ZyZWVic2Q2JzoKKyAgICAgICAgICAgICAgICAjIElzc3VlICMxMjM5MiBhbmQgIzEyNDY5OiBzZW5kIGEgc2lnbmFsIHRvIHRoZSBtYWluIHRocmVhZAorICAgICAgICAgICAgICAgICMgZG9lc24ndCB3b3JrIGJlZm9yZSB0aGUgY3JlYXRpb24gb2YgdGhlIGZpcnN0IHRocmVhZCBvbgorICAgICAgICAgICAgICAgICMgRnJlZUJTRCA2CisgICAgICAgICAgICAgICAgZGVmIG5vb3AoKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIHRocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PW5vb3ApCisgICAgICAgICAgICAgICAgdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgICAgICAgICB0aHJlYWQuam9pbigpCisKKyAgICAgICAgICAgIHRpZCA9IHRocmVhZGluZy5nZXRfaWRlbnQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX2tpbGwodGlkLCBzaWdudW0pCisgICAgICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlplcm9EaXZpc2lvbkVycm9yIG5vdCByYWlzZWQiKQorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwucHRocmVhZF9zaWdtYXNrKCknKQorICAgIGRlZiB3YWl0X2hlbHBlcihzZWxmLCBibG9ja2VkLCB0ZXN0KToKKyAgICAgICAgIiIiCisgICAgICAgIHRlc3Q6IGJvZHkgb2YgdGhlICJkZWYgdGVzdChzaWdudW0pOiIgZnVuY3Rpb24uCisgICAgICAgIGJsb2NrZWQ6IG51bWJlciBvZiB0aGUgYmxvY2tlZCBzaWduYWwKKyAgICAgICAgIiIiCisgICAgICAgIGNvZGUgPSAnJydpZiAxOgorICAgICAgICBpbXBvcnQgc2lnbmFsCisgICAgICAgIGltcG9ydCBzeXMKKworICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgIDEvMAorCisgICAgICAgICVzCisKKyAgICAgICAgYmxvY2tlZCA9ICVzCisgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdBTFJNCisKKyAgICAgICAgIyBjaGlsZDogYmxvY2sgYW5kIHdhaXQgdGhlIHNpZ25hbAorICAgICAgICB0cnk6CisgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ251bSwgaGFuZGxlcikKKyAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgW2Jsb2NrZWRdKQorCisgICAgICAgICAgICAjIERvIHRoZSB0ZXN0cworICAgICAgICAgICAgdGVzdChzaWdudW0pCisKKyAgICAgICAgICAgICMgVGhlIGhhbmRsZXIgbXVzdCBub3QgYmUgY2FsbGVkIG9uIHVuYmxvY2sKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfVU5CTE9DSywgW2Jsb2NrZWRdKQorICAgICAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICAgICAgICAgIHByaW50KCJ0aGUgc2lnbmFsIGhhbmRsZXIgaGFzIGJlZW4gY2FsbGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXJyOgorICAgICAgICAgICAgcHJpbnQoImVycm9yOiB7fSIuZm9ybWF0KGVyciksIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgJycnICUgKHRlc3Quc3RyaXAoKSwgYmxvY2tlZCkKKworICAgICAgICAjIHNpZyp3YWl0KiBtdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBzaWduYWwgYmxvY2tlZDogc2luY2UgdGhlIGN1cnJlbnQKKyAgICAgICAgIyBwcm9jZXNzIG1pZ2h0IGhhdmUgc2V2ZXJhbCB0aHJlYWRzIHJ1bm5pbmcsIHVzZSBhIHN1YnByb2Nlc3MgdG8gaGF2ZQorICAgICAgICAjIGEgc2luZ2xlIHRocmVhZC4KKyAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd3YWl0JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3dhaXQoKScpCisgICAgZGVmIHRlc3Rfc2lnd2FpdChzZWxmKToKKyAgICAgICAgc2VsZi53YWl0X2hlbHBlcihzaWduYWwuU0lHQUxSTSwgJycnCisgICAgICAgIGRlZiB0ZXN0KHNpZ251bSk6CisgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKKyAgICAgICAgICAgIHJlY2VpdmVkID0gc2lnbmFsLnNpZ3dhaXQoW3NpZ251bV0pCisgICAgICAgICAgICBpZiByZWNlaXZlZCAhPSBzaWdudW06CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdyZWNlaXZlZCAlcywgbm90ICVzJyAlIChyZWNlaXZlZCwgc2lnbnVtKSkKKyAgICAgICAgJycnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd3YWl0aW5mbycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd3YWl0aW5mbygpJykKKyAgICBkZWYgdGVzdF9zaWd3YWl0aW5mbyhzZWxmKToKKyAgICAgICAgc2VsZi53YWl0X2hlbHBlcihzaWduYWwuU0lHQUxSTSwgJycnCisgICAgICAgIGRlZiB0ZXN0KHNpZ251bSk6CisgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKKyAgICAgICAgICAgIGluZm8gPSBzaWduYWwuc2lnd2FpdGluZm8oW3NpZ251bV0pCisgICAgICAgICAgICBpZiBpbmZvLnNpX3NpZ25vICE9IHNpZ251bToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oImluZm8uc2lfc2lnbm8gIT0gJXMiICUgc2lnbnVtKQorICAgICAgICAnJycpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3RpbWVkd2FpdCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd0aW1lZHdhaXQoKScpCisgICAgZGVmIHRlc3Rfc2lndGltZWR3YWl0KHNlbGYpOgorICAgICAgICBzZWxmLndhaXRfaGVscGVyKHNpZ25hbC5TSUdBTFJNLCAnJycKKyAgICAgICAgZGVmIHRlc3Qoc2lnbnVtKToKKyAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQorICAgICAgICAgICAgaW5mbyA9IHNpZ25hbC5zaWd0aW1lZHdhaXQoW3NpZ251bV0sIDEwLjEwMDApCisgICAgICAgICAgICBpZiBpbmZvLnNpX3NpZ25vICE9IHNpZ251bToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2luZm8uc2lfc2lnbm8gIT0gJXMnICUgc2lnbnVtKQorICAgICAgICAnJycpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3RpbWVkd2FpdCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd0aW1lZHdhaXQoKScpCisgICAgZGVmIHRlc3Rfc2lndGltZWR3YWl0X3BvbGwoc2VsZik6CisgICAgICAgICMgY2hlY2sgdGhhdCBwb2xsaW5nIHdpdGggc2lndGltZWR3YWl0IHdvcmtzCisgICAgICAgIHNlbGYud2FpdF9oZWxwZXIoc2lnbmFsLlNJR0FMUk0sICcnJworICAgICAgICBkZWYgdGVzdChzaWdudW0pOgorICAgICAgICAgICAgaW1wb3J0IG9zCisgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWdudW0pCisgICAgICAgICAgICBpbmZvID0gc2lnbmFsLnNpZ3RpbWVkd2FpdChbc2lnbnVtXSwgMCkKKyAgICAgICAgICAgIGlmIGluZm8uc2lfc2lnbm8gIT0gc2lnbnVtOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignaW5mby5zaV9zaWdubyAhPSAlcycgJSBzaWdudW0pCisgICAgICAgICcnJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lndGltZWR3YWl0JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3RpbWVkd2FpdCgpJykKKyAgICBkZWYgdGVzdF9zaWd0aW1lZHdhaXRfdGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi53YWl0X2hlbHBlcihzaWduYWwuU0lHQUxSTSwgJycnCisgICAgICAgIGRlZiB0ZXN0KHNpZ251bSk6CisgICAgICAgICAgICByZWNlaXZlZCA9IHNpZ25hbC5zaWd0aW1lZHdhaXQoW3NpZ251bV0sIDEuMCkKKyAgICAgICAgICAgIGlmIHJlY2VpdmVkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigicmVjZWl2ZWQ9JXIiICUgKHJlY2VpdmVkLCkpCisgICAgICAgICcnJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lndGltZWR3YWl0JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3RpbWVkd2FpdCgpJykKKyAgICBkZWYgdGVzdF9zaWd0aW1lZHdhaXRfbmVnYXRpdmVfdGltZW91dChzZWxmKToKKyAgICAgICAgc2lnbnVtID0gc2lnbmFsLlNJR0FMUk0KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2lnbmFsLnNpZ3RpbWVkd2FpdCwgW3NpZ251bV0sIC0xLjApCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3dhaXRpbmZvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3dhaXRpbmZvKCknKQorICAgIGRlZiB0ZXN0X3NpZ3dhaXRpbmZvX2ludGVycnVwdGVkKHNlbGYpOgorICAgICAgICBzZWxmLndhaXRfaGVscGVyKHNpZ25hbC5TSUdVU1IxLCAnJycKKyAgICAgICAgZGVmIHRlc3Qoc2lnbnVtKToKKyAgICAgICAgICAgIGltcG9ydCBlcnJubworCisgICAgICAgICAgICBobmRsX2NhbGxlZCA9IFRydWUKKyAgICAgICAgICAgIGRlZiBhbGFybV9oYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgICAgIGhuZGxfY2FsbGVkID0gRmFsc2UKKworICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgYWxhcm1faGFuZGxlcikKKyAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNpZ25hbC5zaWd3YWl0aW5mbyhbc2lnbmFsLlNJR1VTUjFdKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVJTlRSOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgaG5kbF9jYWxsZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlNJR0FMUk0gaGFuZGxlciBub3QgY2FsbGVkIikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkV4cGVjdGVkIEVJTlRSIHRvIGJlIHJhaXNlZCBieSBzaWd3YWl0aW5mbyIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRXhwZWN0ZWQgRUlOVFIgdG8gYmUgcmFpc2VkIGJ5IHNpZ3dhaXRpbmZvIikKKyAgICAgICAgJycnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd3YWl0JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3dhaXQoKScpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwucHRocmVhZF9zaWdtYXNrKCknKQorICAgIEB1bml0dGVzdC5za2lwSWYodGhyZWFkaW5nIGlzIE5vbmUsICJ0ZXN0IG5lZWRzIHRocmVhZGluZyBtb2R1bGUiKQorICAgIGRlZiB0ZXN0X3NpZ3dhaXRfdGhyZWFkKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgY2FsbGluZyBzaWd3YWl0KCkgZnJvbSBhIHRocmVhZCBkb2Vzbid0IHN1c3BlbmQgdGhlIHdob2xlCisgICAgICAgICMgcHJvY2Vzcy4gQSBuZXcgaW50ZXJwcmV0ZXIgaXMgc3Bhd25lZCB0byBhdm9pZCBwcm9ibGVtcyB3aGVuIG1peGluZworICAgICAgICAjIHRocmVhZHMgYW5kIGZvcmsoKTogb25seSBhc3luYy1zYWZlIGZ1bmN0aW9ucyBhcmUgYWxsb3dlZCBiZXR3ZWVuCisgICAgICAgICMgZm9yaygpIGFuZCBleGVjKCkuCisgICAgICAgIGFzc2VydF9weXRob25fb2soIi1jIiwgIiIiaWYgVHJ1ZToKKyAgICAgICAgICAgIGltcG9ydCBvcywgdGhyZWFkaW5nLCBzeXMsIHRpbWUsIHNpZ25hbAorCisgICAgICAgICAgICAjIHRoZSBkZWZhdWx0IGhhbmRsZXIgdGVybWluYXRlcyB0aGUgcHJvY2VzcworICAgICAgICAgICAgc2lnbnVtID0gc2lnbmFsLlNJR1VTUjEKKworICAgICAgICAgICAgZGVmIGtpbGxfbGF0ZXIoKToKKyAgICAgICAgICAgICAgICAjIHdhaXQgdW50aWwgdGhlIG1haW4gdGhyZWFkIGlzIHdhaXRpbmcgaW4gc2lnd2FpdCgpCisgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgxKQorICAgICAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bSkKKworICAgICAgICAgICAgIyB0aGUgc2lnbmFsIG11c3QgYmUgYmxvY2tlZCBieSBhbGwgdGhlIHRocmVhZHMKKyAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgW3NpZ251bV0pCisgICAgICAgICAgICBraWxsZXIgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1raWxsX2xhdGVyKQorICAgICAgICAgICAga2lsbGVyLnN0YXJ0KCkKKyAgICAgICAgICAgIHJlY2VpdmVkID0gc2lnbmFsLnNpZ3dhaXQoW3NpZ251bV0pCisgICAgICAgICAgICBpZiByZWNlaXZlZCAhPSBzaWdudW06CisgICAgICAgICAgICAgICAgcHJpbnQoInNpZ3dhaXQoKSByZWNlaXZlZCAlcywgbm90ICVzIiAlIChyZWNlaXZlZCwgc2lnbnVtKSwKKyAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgICAgIGtpbGxlci5qb2luKCkKKyAgICAgICAgICAgICMgdW5ibG9jayB0aGUgc2lnbmFsLCB3aGljaCBzaG91bGQgaGF2ZSBiZWVuIGNsZWFyZWQgYnkgc2lnd2FpdCgpCisgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfVU5CTE9DSywgW3NpZ251bV0pCisgICAgICAgICIiIikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9zaWdtYXNrJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaygpJykKKyAgICBkZWYgdGVzdF9wdGhyZWFkX3NpZ21hc2tfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzaWduYWwucHRocmVhZF9zaWdtYXNrLCAxLCAyLCAzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzaWduYWwucHRocmVhZF9zaWdtYXNrLCAxNzAwLCBbXSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9zaWdtYXNrJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaygpJykKKyAgICBkZWYgdGVzdF9wdGhyZWFkX3NpZ21hc2soc2VsZik6CisgICAgICAgIGNvZGUgPSAiIiJpZiAxOgorICAgICAgICBpbXBvcnQgc2lnbmFsCisgICAgICAgIGltcG9ydCBvczsgaW1wb3J0IHRocmVhZGluZworCisgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgMS8wCisKKyAgICAgICAgZGVmIGtpbGwoc2lnbnVtKToKKyAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bSkKKworICAgICAgICBkZWYgcmVhZF9zaWdtYXNrKCk6CisgICAgICAgICAgICByZXR1cm4gc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbXSkKKworICAgICAgICBzaWdudW0gPSBzaWduYWwuU0lHVVNSMQorCisgICAgICAgICMgSW5zdGFsbCBvdXIgc2lnbmFsIGhhbmRsZXIKKyAgICAgICAgb2xkX2hhbmRsZXIgPSBzaWduYWwuc2lnbmFsKHNpZ251bSwgaGFuZGxlcikKKworICAgICAgICAjIFVuYmxvY2sgU0lHVVNSMSAoYW5kIGNvcHkgdGhlIG9sZCBtYXNrKSB0byB0ZXN0IG91ciBzaWduYWwgaGFuZGxlcgorICAgICAgICBvbGRfbWFzayA9IHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19VTkJMT0NLLCBbc2lnbnVtXSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAga2lsbChzaWdudW0pCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiWmVyb0RpdmlzaW9uRXJyb3Igbm90IHJhaXNlZCIpCisKKyAgICAgICAgIyBCbG9jayBhbmQgdGhlbiByYWlzZSBTSUdVU1IxLiBUaGUgc2lnbmFsIGlzIGJsb2NrZWQ6IHRoZSBzaWduYWwKKyAgICAgICAgIyBoYW5kbGVyIGlzIG5vdCBjYWxsZWQsIGFuZCB0aGUgc2lnbmFsIGlzIG5vdyBwZW5kaW5nCisgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgW3NpZ251bV0pCisgICAgICAgIGtpbGwoc2lnbnVtKQorCisgICAgICAgICMgQ2hlY2sgdGhlIG5ldyBtYXNrCisgICAgICAgIGJsb2NrZWQgPSByZWFkX3NpZ21hc2soKQorICAgICAgICBpZiBzaWdudW0gbm90IGluIGJsb2NrZWQ6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzIG5vdCBpbiAlcyIgJSAoc2lnbnVtLCBibG9ja2VkKSkKKyAgICAgICAgaWYgb2xkX21hc2sgXiBibG9ja2VkICE9IHtzaWdudW19OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyBeICVzICE9IHslc30iICUgKG9sZF9tYXNrLCBibG9ja2VkLCBzaWdudW0pKQorCisgICAgICAgICMgVW5ibG9jayBTSUdVU1IxCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgdW5ibG9jayB0aGUgcGVuZGluZyBzaWduYWwgY2FsbHMgaW1tZWRpYXRseSB0aGUgc2lnbmFsIGhhbmRsZXIKKyAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19VTkJMT0NLLCBbc2lnbnVtXSkKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJaZXJvRGl2aXNpb25FcnJvciBub3QgcmFpc2VkIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAga2lsbChzaWdudW0pCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiWmVyb0RpdmlzaW9uRXJyb3Igbm90IHJhaXNlZCIpCisKKyAgICAgICAgIyBDaGVjayB0aGUgbmV3IG1hc2sKKyAgICAgICAgdW5ibG9ja2VkID0gcmVhZF9zaWdtYXNrKCkKKyAgICAgICAgaWYgc2lnbnVtIGluIHVuYmxvY2tlZDoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgaW4gJXMiICUgKHNpZ251bSwgdW5ibG9ja2VkKSkKKyAgICAgICAgaWYgYmxvY2tlZCBeIHVuYmxvY2tlZCAhPSB7c2lnbnVtfToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgXiAlcyAhPSB7JXN9IiAlIChibG9ja2VkLCB1bmJsb2NrZWQsIHNpZ251bSkpCisgICAgICAgIGlmIG9sZF9tYXNrICE9IHVuYmxvY2tlZDoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgIT0gJXMiICUgKG9sZF9tYXNrLCB1bmJsb2NrZWQpKQorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ2ZyZWVic2Q2JywKKyAgICAgICAgImlzc3VlICMxMjM5Mjogc2VuZCBhIHNpZ25hbCB0byB0aGUgbWFpbiB0aHJlYWQgZG9lc24ndCB3b3JrICIKKyAgICAgICAgImJlZm9yZSB0aGUgY3JlYXRpb24gb2YgdGhlIGZpcnN0IHRocmVhZCBvbiBGcmVlQlNEIDYiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9raWxsJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnB0aHJlYWRfa2lsbCgpJykKKyAgICBkZWYgdGVzdF9wdGhyZWFkX2tpbGxfbWFpbl90aHJlYWQoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGEgc2lnbmFsIGNhbiBiZSBzZW50IHRvIHRoZSBtYWluIHRocmVhZCB3aXRoIHB0aHJlYWRfa2lsbCgpCisgICAgICAgICMgYmVmb3JlIGFueSBvdGhlciB0aHJlYWQgaGFzIGJlZW4gY3JlYXRlZCAoc2VlIGlzc3VlICMxMjM5MikuCisgICAgICAgIGNvZGUgPSAiIiJpZiBUcnVlOgorICAgICAgICAgICAgaW1wb3J0IHRocmVhZGluZworICAgICAgICAgICAgaW1wb3J0IHNpZ25hbAorICAgICAgICAgICAgaW1wb3J0IHN5cworCisgICAgICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgzKQorCisgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdVU1IxLCBoYW5kbGVyKQorICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfa2lsbCh0aHJlYWRpbmcuZ2V0X2lkZW50KCksIHNpZ25hbC5TSUdVU1IxKQorICAgICAgICAgICAgc3lzLmV4aXQoMikKKyAgICAgICAgIiIiCisKKyAgICAgICAgd2l0aCBzcGF3bl9weXRob24oJy1jJywgY29kZSkgYXMgcHJvY2VzczoKKyAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICBleGl0Y29kZSA9IHByb2Nlc3Mud2FpdCgpCisgICAgICAgICAgICBpZiBleGl0Y29kZSAhPSAzOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ2hpbGQgZXJyb3IgKGV4aXQgY29kZSAlcyk6ICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleGl0Y29kZSwgc3Rkb3V0KSkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdHJ5OgotICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChCYXNpY1NpZ25hbFRlc3RzLCBJbnRlclByb2Nlc3NTaWduYWxUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2FrZXVwU2lnbmFsVGVzdHMsIFNpZ2ludGVycnVwdFRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0aW1lclRlc3QsIFdpbmRvd3NTaWduYWxUZXN0cykKKyAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUG9zaXhUZXN0cywgSW50ZXJQcm9jZXNzU2lnbmFsVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdha2V1cEZEVGVzdHMsIFdha2V1cFNpZ25hbFRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWdpbnRlcnJ1cHRUZXN0LCBJdGltZXJUZXN0LCBXaW5kb3dzU2lnbmFsVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdTaWduYWxzVGVzdHMpCiAgICAgZmluYWxseToKICAgICAgICAgc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CmluZGV4IGJhNDI2NDkuLjI5Mjg2YzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NpdGUucHkKQEAgLTM5LDYgKzM5LDcgQEAKICAgICAgICAgc2VsZi5vbGRfYmFzZSA9IHNpdGUuVVNFUl9CQVNFCiAgICAgICAgIHNlbGYub2xkX3NpdGUgPSBzaXRlLlVTRVJfU0lURQogICAgICAgICBzZWxmLm9sZF9wcmVmaXhlcyA9IHNpdGUuUFJFRklYRVMKKyAgICAgICAgc2VsZi5vcmlnaW5hbF92YXJzID0gc3lzY29uZmlnLl9DT05GSUdfVkFSUwogICAgICAgICBzZWxmLm9sZF92YXJzID0gY29weShzeXNjb25maWcuX0NPTkZJR19WQVJTKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgpAQCAtNDcsNyArNDgsOSBAQAogICAgICAgICBzaXRlLlVTRVJfQkFTRSA9IHNlbGYub2xkX2Jhc2UKICAgICAgICAgc2l0ZS5VU0VSX1NJVEUgPSBzZWxmLm9sZF9zaXRlCiAgICAgICAgIHNpdGUuUFJFRklYRVMgPSBzZWxmLm9sZF9wcmVmaXhlcwotICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gc2VsZi5vbGRfdmFycworICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gc2VsZi5vcmlnaW5hbF92YXJzCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMuY2xlYXIoKQorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTLnVwZGF0ZShzZWxmLm9sZF92YXJzKQogCiAgICAgZGVmIHRlc3RfbWFrZXBhdGgoc2VsZik6CiAgICAgICAgICMgVGVzdCBtYWtlcGF0aCgpIGhhdmUgYW4gYWJzb2x1dGUgcGF0aCBmb3IgaXRzIGZpcnN0IHJldHVybiB2YWx1ZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zbXRwZC5weSBiL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkKaW5kZXggNjhjY2MyOS4uOTNmMTRjNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zbXRwZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5CkBAIC0xLDQgKzEsNCBAQAotZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKK2ltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBtb2NrX3NvY2tldAogaW1wb3J0IHNvY2tldAogaW1wb3J0IGlvCkBAIC0yNiw3ICsyNiw3IEBACiAgICAgICAgIHJhaXNlIER1bW15RGlzcGF0Y2hlckJyb2tlbigpCiAKIAotY2xhc3MgU01UUERTZXJ2ZXJUZXN0KFRlc3RDYXNlKToKK2NsYXNzIFNNVFBEU2VydmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAogCkBAIC0zOSw2ICszOSw3IEBACiAgICAgICAgICAgICBjaGFubmVsLnNvY2tldC5xdWV1ZV9yZWN2KGxpbmUpCiAgICAgICAgICAgICBjaGFubmVsLmhhbmRsZV9yZWFkKCkKIAorICAgICAgICB3cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgd3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQogICAgICAgICB3cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQogICAgICAgICB3cml0ZV9saW5lKGInREFUQScpCkBAIC00OSw3ICs1MCw3IEBACiAgICAgICAgIGFzeW5jb3JlLnNvY2tldCA9IHNtdHBkLnNvY2tldCA9IHNvY2tldAogCiAKLWNsYXNzIFNNVFBEQ2hhbm5lbFRlc3QoVGVzdENhc2UpOgorY2xhc3MgU01UUERDaGFubmVsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAogICAgICAgICBzZWxmLm9sZF9kZWJ1Z3N0cmVhbSA9IHNtdHBkLkRFQlVHU1RSRUFNCkBAIC03OCwzMSArNzksOTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDAgRXJyb3I6IGJhZCBzeW50YXhcclxuJykKIAotICAgIGRlZiB0ZXN0X0VITE9fbm90X2ltcGxlbWVudGVkKHNlbGYpOgotICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIHRlc3QuZXhhbXBsZScpCisgICAgZGVmIHRlc3RfRUhMTyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIEhFTFBcclxuJykKKworICAgIGRlZiB0ZXN0X0VITE9fYmFkX3N5bnRheChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAyIEVycm9yOiBjb21tYW5kICJFSExPIiBub3QgaW1wbGVtZW50ZWRcclxuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMSBTeW50YXg6IEVITE8gaG9zdG5hbWVcclxuJykKKworICAgIGRlZiB0ZXN0X0VITE9fZHVwbGljYXRlKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMyBEdXBsaWNhdGUgSEVMTy9FSExPXHJcbicpCisKKyAgICBkZWYgdGVzdF9FSExPX0hFTE9fZHVwbGljYXRlKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMyBEdXBsaWNhdGUgSEVMTy9FSExPXHJcbicpCiAKICAgICBkZWYgdGVzdF9IRUxPKHNlbGYpOgogICAgICAgICBuYW1lID0gc210cGQuc29ja2V0LmdldGZxZG4oKQotICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIHRlc3QuZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICcyNTAge31cclxuJy5mb3JtYXQobmFtZSkuZW5jb2RlKCdhc2NpaScpKQogCisgICAgZGVmIHRlc3RfSEVMT19FSExPX2R1cGxpY2F0ZShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDMgRHVwbGljYXRlIEhFTE8vRUhMT1xyXG4nKQorCisgICAgZGVmIHRlc3RfSEVMUChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMUCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInMjUwIFN1cHBvcnRlZCBjb21tYW5kczogRUhMTyBIRUxPIE1BSUwgUkNQVCAnICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGInREFUQSBSU0VUIE5PT1AgUVVJVCBWUkZZXHJcbicpCisKKyAgICBkZWYgdGVzdF9IRUxQX2NvbW1hbmQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTFAgTUFJTCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInMjUwIFN5bnRheDogTUFJTCBGUk9NOiA8YWRkcmVzcz5cclxuJykKKworICAgIGRlZiB0ZXN0X0hFTFBfY29tbWFuZF91bmtub3duKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxQIFNQQU0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMSBTdXBwb3J0ZWQgY29tbWFuZHM6IEVITE8gSEVMTyBNQUlMIFJDUFQgJyArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ0RBVEEgUlNFVCBOT09QIFFVSVQgVlJGWVxyXG4nKQorCiAgICAgZGVmIHRlc3RfSEVMT19iYWRfc3ludGF4KHNlbGYpOgogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDEgU3ludGF4OiBIRUxPIGhvc3RuYW1lXHJcbicpCiAKICAgICBkZWYgdGVzdF9IRUxPX2R1cGxpY2F0ZShzZWxmKToKLSAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyB0ZXN0LmV4YW1wbGUnKQotICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIHRlc3QuZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAzIER1cGxpY2F0ZSBIRUxPL0VITE9cclxuJykKIAorICAgIGRlZiB0ZXN0X0hFTE9fcGFyYW1ldGVyX3JlamVjdGVkX3doZW5fZXh0ZW5zaW9uc19ub3RfZW5hYmxlZChzZWxmKToKKyAgICAgICAgc2VsZi5leHRlbmRlZF9zbXRwID0gRmFsc2UKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOjxmb29AZXhhbXBsZS5jb20+IFNJWkU9MTIzNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAxIFN5bnRheDogTUFJTCBGUk9NOiA8YWRkcmVzcz5cclxuJykKKworICAgIGRlZiB0ZXN0X01BSUxfYWxsb3dzX3NwYWNlX2FmdGVyX2NvbG9uKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206ICAgPGZvb0BleGFtcGxlLmNvbT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzI1MCBPS1xyXG4nKQorCisgICAgZGVmIHRlc3RfZXh0ZW5kZWRfTUFJTF9hbGxvd3Nfc3BhY2VfYWZ0ZXJfY29sb24oc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTogICA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYicyNTAgT0tcclxuJykKKwogICAgIGRlZiB0ZXN0X05PT1Aoc2VsZik6CiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ05PT1AnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT2tcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICBkZWYgdGVzdF9IRUxPX05PT1Aoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ05PT1AnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKIAogICAgIGRlZiB0ZXN0X05PT1BfYmFkX3N5bnRheChzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTk9PUCBoaScpCkBAIC0xMTMsMjYgKzE3Nyw0NyBAQAogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidRVUlUJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjIxIEJ5ZVxyXG4nKQogCisgICAgZGVmIHRlc3RfSEVMT19RVUlUKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidRVUlUJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjIxIEJ5ZVxyXG4nKQorCiAgICAgZGVmIHRlc3RfUVVJVF9hcmdfaWdub3JlZChzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUVVJVCBieWUgYnllJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjIxIEJ5ZVxyXG4nKQogCiAgICAgZGVmIHRlc3RfYmFkX3N0YXRlKHNlbGYpOgogICAgICAgICBzZWxmLmNoYW5uZWwuc210cF9zdGF0ZSA9ICdCQUQgU1RBVEUnCi0gICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8nKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJzQ1MSBJbnRlcm5hbCBjb25mdXNpb25cclxuJykKIAogICAgIGRlZiB0ZXN0X2NvbW1hbmRfdG9vX2xvbmcoc2VsZik6Ci0gICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbSAnICsKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOiAnICsKICAgICAgICAgICAgICAgICAgICAgICAgIGInYScgKiBzZWxmLmNoYW5uZWwuY29tbWFuZF9zaXplX2xpbWl0ICsKICAgICAgICAgICAgICAgICAgICAgICAgIGInQGV4YW1wbGUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMCBFcnJvcjogbGluZSB0b28gbG9uZ1xyXG4nKQogCi0gICAgZGVmIHRlc3RfZGF0YV90b29fbG9uZyhzZWxmKToKLSAgICAgICAgIyBTbWFsbCBoYWNrLiBTZXR0aW5nIGxpbWl0IHRvIDJLIG9jdGV0cyBoZXJlIHdpbGwgc2F2ZSB1cyBzb21lIHRpbWUuCi0gICAgICAgIHNlbGYuY2hhbm5lbC5kYXRhX3NpemVfbGltaXQgPSAyMDQ4CisgICAgZGVmIHRlc3RfTUFJTF9jb21tYW5kX2xpbWl0X2V4dGVuZGVkX3dpdGhfU0laRShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgZmlsbF9sZW4gPSBzZWxmLmNoYW5uZWwuY29tbWFuZF9zaXplX2xpbWl0IC0gbGVuKCdNQUlMIGZyb206PEBleGFtcGxlPicpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTo8JyArCisgICAgICAgICAgICAgICAgICAgICAgICBiJ2EnICogZmlsbF9sZW4gKworICAgICAgICAgICAgICAgICAgICAgICAgYidAZXhhbXBsZT4gU0laRT0xMjM0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOjwnICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGInYScgKiAoZmlsbF9sZW4gKyAyNikgKworICAgICAgICAgICAgICAgICAgICAgICAgYidAZXhhbXBsZT4gU0laRT0xMjM0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDAgRXJyb3I6IGxpbmUgdG9vIGxvbmdcclxuJykKKworICAgIGRlZiB0ZXN0X2RhdGFfbG9uZ2VyX3RoYW5fZGVmYXVsdF9kYXRhX3NpemVfbGltaXQoc2VsZik6CisgICAgICAgICMgSGFjayB0aGUgZGVmYXVsdCBzbyB3ZSBkb24ndCBoYXZlIHRvIGdlbmVyYXRlIHNvIG11Y2ggZGF0YS4KKyAgICAgICAgc2VsZi5jaGFubmVsLmRhdGFfc2l6ZV9saW1pdCA9IDEwNDgKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCkBAIC0xNDEsNjQgKzIyNiwxODMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYic1NTIgRXJyb3I6IFRvbyBtdWNoIG1haWwgZGF0YVxyXG4nKQogCisgICAgZGVmIHRlc3RfTUFJTF9zaXplX3BhcmFtZXRlcihzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGUk9NOjxlZ2dzQGV4YW1wbGU+IFNJWkU9NTEyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYicyNTAgT0tcclxuJykKKworICAgIGRlZiB0ZXN0X01BSUxfaW52YWxpZF9zaXplX3BhcmFtZXRlcihzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGUk9NOjxlZ2dzQGV4YW1wbGU+IFNJWkU9aW52YWxpZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1MDEgU3ludGF4OiBNQUlMIEZST006IDxhZGRyZXNzPiBbU1AgPG1haWwtcGFyYW1ldGVycz5dXHJcbicpCisKKyAgICBkZWYgdGVzdF9NQUlMX1JDUFRfdW5rbm93bl9wYXJhbWV0ZXJzKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZST006PGVnZ3NAZXhhbXBsZT4gaGFtPWdyZWVuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzU1NSBNQUlMIEZST00gcGFyYW1ldGVycyBub3QgcmVjb2duaXplZCBvciBub3QgaW1wbGVtZW50ZWRcclxuJykKKworICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZST006PGVnZ3NAZXhhbXBsZT4nKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRPOjxlZ2dzQGV4YW1wbGU+IGhhbT1ncmVlbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1NTUgUkNQVCBUTyBwYXJhbWV0ZXJzIG5vdCByZWNvZ25pemVkIG9yIG5vdCBpbXBsZW1lbnRlZFxyXG4nKQorCisgICAgZGVmIHRlc3RfTUFJTF9zaXplX3BhcmFtZXRlcl9sYXJnZXJfdGhhbl9kZWZhdWx0X2RhdGFfc2l6ZV9saW1pdChzZWxmKToKKyAgICAgICAgc2VsZi5jaGFubmVsLmRhdGFfc2l6ZV9saW1pdCA9IDEwNDgKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGUk9NOjxlZ2dzQGV4YW1wbGU+IFNJWkU9MjA5NicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1NTIgRXJyb3I6IG1lc3NhZ2Ugc2l6ZSBleGNlZWRzIGZpeGVkIG1heGltdW0gbWVzc2FnZSBzaXplXHJcbicpCisKICAgICBkZWYgdGVzdF9uZWVkX01BSUwoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgdG86c3BhbUBleGFtcGxlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICBiJzUwMyBFcnJvcjogbmVlZCBNQUlMIGNvbW1hbmRcclxuJykKIAotICAgIGRlZiB0ZXN0X01BSUxfc3ludGF4KHNlbGYpOgorICAgIGRlZiB0ZXN0X01BSUxfc3ludGF4X0hFTE8oc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbSBlZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKLSAgICAgICAgICAgIGInNTAxIFN5bnRheDogTUFJTCBGUk9NOjxhZGRyZXNzPlxyXG4nKQorICAgICAgICAgICAgYic1MDEgU3ludGF4OiBNQUlMIEZST006IDxhZGRyZXNzPlxyXG4nKQogCi0gICAgZGVmIHRlc3RfTUFJTF9taXNzaW5nX2Zyb20oc2VsZik6CisgICAgZGVmIHRlc3RfTUFJTF9zeW50YXhfRUhMTyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tIGVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1MDEgU3ludGF4OiBNQUlMIEZST006IDxhZGRyZXNzPiBbU1AgPG1haWwtcGFyYW1ldGVycz5dXHJcbicpCisKKyAgICBkZWYgdGVzdF9NQUlMX21pc3NpbmdfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAotICAgICAgICAgICAgYic1MDEgU3ludGF4OiBNQUlMIEZST006PGFkZHJlc3M+XHJcbicpCisgICAgICAgICAgICBiJzUwMSBTeW50YXg6IE1BSUwgRlJPTTogPGFkZHJlc3M+XHJcbicpCiAKICAgICBkZWYgdGVzdF9NQUlMX2NoZXZyb25zKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206PGVnZ3NAZXhhbXBsZT4nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT2tcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICBkZWYgdGVzdF9NQUlMX2VtcHR5X2NoZXZyb25zKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206PD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworICAgIGRlZiB0ZXN0X01BSUxfcXVvdGVkX2xvY2FscGFydChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOiA8IkZyZWQgQmxvZ3MiQGV4YW1wbGUuY29tPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5tYWlsZnJvbSwgJyJGcmVkIEJsb2dzIkBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9NQUlMX3F1b3RlZF9sb2NhbHBhcnRfbm9fYW5nbGVzKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206ICJGcmVkIEJsb2dzIkBleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5tYWlsZnJvbSwgJyJGcmVkIEJsb2dzIkBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9NQUlMX3F1b3RlZF9sb2NhbHBhcnRfd2l0aF9zaXplKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206IDwiRnJlZCBCbG9ncyJAZXhhbXBsZS5jb20+IFNJWkU9MTAwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5tYWlsZnJvbSwgJyJGcmVkIEJsb2dzIkBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9NQUlMX3F1b3RlZF9sb2NhbHBhcnRfd2l0aF9zaXplX25vX2FuZ2xlcyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOiAiRnJlZCBCbG9ncyJAZXhhbXBsZS5jb20gU0laRT0xMDAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLm1haWxmcm9tLCAnIkZyZWQgQmxvZ3MiQGV4YW1wbGUuY29tJykKIAogICAgIGRlZiB0ZXN0X25lc3RlZF9NQUlMKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206ZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOnNwYW1AZXhhbXBsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgYic1MDMgRXJyb3I6IG5lc3RlZCBNQUlMIGNvbW1hbmRcclxuJykKIAorICAgIGRlZiB0ZXN0X1ZSRlkoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1ZSRlkgZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzI1MiBDYW5ub3QgVlJGWSB1c2VyLCBidXQgd2lsbCBhY2NlcHQgbWVzc2FnZSBhbmQgYXR0ZW1wdCAnICsgXAorICAgICAgICAgICAgYidkZWxpdmVyeVxyXG4nKQorCisgICAgZGVmIHRlc3RfVlJGWV9zeW50YXgoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1ZSRlknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgIGInNTAxIFN5bnRheDogVlJGWSA8YWRkcmVzcz5cclxuJykKKworICAgIGRlZiB0ZXN0X0VYUE5fbm90X2ltcGxlbWVudGVkKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFWFBOJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzUwMiBFWFBOIG5vdCBpbXBsZW1lbnRlZFxyXG4nKQorCisgICAgZGVmIHRlc3Rfbm9fSEVMT19NQUlMKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206PGZvb0BleGFtcGxlLmNvbT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMyBFcnJvcjogc2VuZCBIRUxPIGZpcnN0XHJcbicpCisKICAgICBkZWYgdGVzdF9uZWVkX1JDUFQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICBiJzUwMyBFcnJvcjogbmVlZCBSQ1BUIGNvbW1hbmRcclxuJykKIAotICAgIGRlZiB0ZXN0X1JDUFRfc3ludGF4KHNlbGYpOgotICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKKyAgICBkZWYgdGVzdF9SQ1BUX3N5bnRheF9IRUxPKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206IGVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgdG8gZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICBiJzUwMSBTeW50YXg6IFJDUFQgVE86IDxhZGRyZXNzPlxyXG4nKQogCisgICAgZGVmIHRlc3RfUkNQVF9zeW50YXhfRUhMTyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOiBlZ2dzQGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIHRvIGVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1MDEgU3ludGF4OiBSQ1BUIFRPOiA8YWRkcmVzcz4gW1NQIDxtYWlsLXBhcmFtZXRlcnM+XVxyXG4nKQorCisgICAgZGVmIHRlc3RfUkNQVF9sb3dlcmNhc2VfdG9fT0soc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTogZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCB0bzogPGVnZ3NAZXhhbXBsZT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworICAgIGRlZiB0ZXN0X25vX0hFTE9fUkNQVChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCB0byBlZ2dzQGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMyBFcnJvcjogc2VuZCBIRUxPIGZpcnN0XHJcbicpCisKICAgICBkZWYgdGVzdF9kYXRhX2RpYWxvZyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPa1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT2tcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCiAKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgYiczNTQgRW5kIGRhdGEgd2l0aCA8Q1I+PExGPi48Q1I+PExGPlxyXG4nKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidkYXRhXHJcbm1vcmVcclxuLicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPa1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZlci5tZXNzYWdlcywKICAgICAgICAgICAgIFsoJ3BlZXInLCAnZWdnc0BleGFtcGxlJywgWydzcGFtQGV4YW1wbGUnXSwgJ2RhdGFcbm1vcmUnKV0pCiAKICAgICBkZWYgdGVzdF9EQVRBX3N5bnRheChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQSBzcGFtJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInNTAxIFN5bnRheDogREFUQVxyXG4nKQogCisgICAgZGVmIHRlc3Rfbm9fSEVMT19EQVRBKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBIHNwYW0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMyBFcnJvcjogc2VuZCBIRUxPIGZpcnN0XHJcbicpCisKICAgICBkZWYgdGVzdF9kYXRhX3RyYW5zcGFyZW5jeV9zZWN0aW9uXzRfNV8yKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKQEAgLTIwNiw2ICs0MTAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5yZWNlaXZlZF9kYXRhLCAnLicpCiAKICAgICBkZWYgdGVzdF9tdWx0aXBsZV9SQ1BUKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOmhhbUBleGFtcGxlJykKQEAgLTIxNiw2ICs0MjEsNyBAQAogCiAgICAgZGVmIHRlc3RfbWFudWFsX3N0YXR1cyhzZWxmKToKICAgICAgICAgIyBjaGVja3MgdGhhdCB0aGUgQ2hhbm5lbCBpcyBhYmxlIHRvIHJldHVybiBhIGN1c3RvbSBzdGF0dXMgbWVzc2FnZQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKQEAgLTIyMywxMCArNDI5LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPa2lzaFxyXG4nKQogCiAgICAgZGVmIHRlc3RfUlNFVChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUlNFVCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPa1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmZvb0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzplZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKQEAgLTIzNCw1OCArNDQxLDExNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLm1lc3NhZ2VzLAogICAgICAgICAgICAgWygncGVlcicsICdmb29AZXhhbXBsZScsIFsnZWdnc0BleGFtcGxlJ10sICdkYXRhJyldKQogCisgICAgZGVmIHRlc3RfSEVMT19SU0VUKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSU0VUJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKICAgICBkZWYgdGVzdF9SU0VUX3N5bnRheChzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUlNFVCBoaScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzUwMSBTeW50YXg6IFJTRVRcclxuJykKIAorICAgIGRlZiB0ZXN0X3Vua25vd25fY29tbWFuZChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInVU5LTk9XTl9DTUQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMCBFcnJvcjogY29tbWFuZCAiVU5LTk9XTl9DTUQiIG5vdCAnICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGIncmVjb2duaXplZFxyXG4nKQorCiAgICAgZGVmIHRlc3RfYXR0cmlidXRlX2RlcHJlY2F0aW9ucyhzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19zZXJ2ZXIKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX3NlcnZlciA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2xpbmUKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2xpbmUgPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19zdGF0ZQotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fc3RhdGUgPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19ncmVldGluZwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fZ3JlZXRpbmcgPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19tYWlsZnJvbQotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fbWFpbGZyb20gPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19yY3B0dG9zCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19yY3B0dG9zID0gJ3NwYW0nCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzcGFtID0gc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fZGF0YQotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fZGF0YSA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2ZxZG4KLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2ZxZG4gPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19wZWVyCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19wZWVyID0gJ3NwYW0nCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzcGFtID0gc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fY29ubgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fY29ubiA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2FkZHIKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2FkZHIgPSAnc3BhbScKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFNNVFBEU2VydmVyVGVzdCwgU01UUERDaGFubmVsVGVzdCkKKworY2xhc3MgU01UUERDaGFubmVsV2l0aERhdGFTaXplTGltaXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc210cGQuc29ja2V0ID0gYXN5bmNvcmUuc29ja2V0ID0gbW9ja19zb2NrZXQKKyAgICAgICAgc2VsZi5vbGRfZGVidWdzdHJlYW0gPSBzbXRwZC5ERUJVR1NUUkVBTQorICAgICAgICBzZWxmLmRlYnVnID0gc210cGQuREVCVUdTVFJFQU0gPSBpby5TdHJpbmdJTygpCisgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlTZXJ2ZXIoJ2EnLCAnYicpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnZlci5hY2NlcHQoKQorICAgICAgICAjIFNldCBEQVRBIHNpemUgbGltaXQgdG8gMzIgYnl0ZXMgZm9yIGVhc3kgdGVzdGluZworICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkciwgMzIpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbCgpCisgICAgICAgIGFzeW5jb3JlLnNvY2tldCA9IHNtdHBkLnNvY2tldCA9IHNvY2tldAorICAgICAgICBzbXRwZC5ERUJVR1NUUkVBTSA9IHNlbGYub2xkX2RlYnVnc3RyZWFtCisKKyAgICBkZWYgd3JpdGVfbGluZShzZWxmLCBsaW5lKToKKyAgICAgICAgc2VsZi5jaGFubmVsLnNvY2tldC5xdWV1ZV9yZWN2KGxpbmUpCisgICAgICAgIHNlbGYuY2hhbm5lbC5oYW5kbGVfcmVhZCgpCisKKyAgICBkZWYgdGVzdF9kYXRhX2xpbWl0X2RpYWxvZyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgIGInMzU0IEVuZCBkYXRhIHdpdGggPENSPjxMRj4uPENSPjxMRj5cclxuJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInZGF0YVxyXG5tb3JlXHJcbi4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZlci5tZXNzYWdlcywKKyAgICAgICAgICAgIFsoJ3BlZXInLCAnZWdnc0BleGFtcGxlJywgWydzcGFtQGV4YW1wbGUnXSwgJ2RhdGFcbm1vcmUnKV0pCisKKyAgICBkZWYgdGVzdF9kYXRhX2xpbWl0X2RpYWxvZ190b29fbXVjaF9kYXRhKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYiczNTQgRW5kIGRhdGEgd2l0aCA8Q1I+PExGPi48Q1I+PExGPlxyXG4nKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidUaGlzIG1lc3NhZ2UgaXMgbG9uZ2VyIHRoYW4gMzIgYnl0ZXNcclxuLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTUyIEVycm9yOiBUb28gbXVjaCBtYWlsIGRhdGFcclxuJykKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NtdHBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3NtdHBsaWIucHkKaW5kZXggMmNiMGQxYS4uYmVmYzQ5ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zbXRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc210cGxpYi5weQpAQCAtOSw2ICs5LDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgc2VsZWN0CitpbXBvcnQgZXJybm8KIAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIG1vY2tfc29ja2V0CkBAIC03Miw2ICs3MywxNCBAQAogICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCkKICAgICAgICAgc210cC5jbG9zZSgpCiAKKyAgICBkZWYgdGVzdFNvdXJjZUFkZHJlc3Moc2VsZik6CisgICAgICAgIG1vY2tfc29ja2V0LnJlcGx5X3dpdGgoYiIyMjAgSG9sYSBtdW5kbyIpCisgICAgICAgICMgY29ubmVjdHMKKyAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsCisgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9KCcxMjcuMC4wLjEnLDE5ODc2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLnNvdXJjZV9hZGRyZXNzLCAoJzEyNy4wLjAuMScsIDE5ODc2KSkKKyAgICAgICAgc210cC5jbG9zZSgpCisKICAgICBkZWYgdGVzdEJhc2ljMihzZWxmKToKICAgICAgICAgbW9ja19zb2NrZXQucmVwbHlfd2l0aChiIjIyMCBIb2xhIG11bmRvIikKICAgICAgICAgIyBjb25uZWN0cywgaW5jbHVkZSBwb3J0IGluIGhvc3QgbmFtZQpAQCAtMjA0LDE1ICsyMTMsMjkgQEAKICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCiAgICAgICAgIHNtdHAucXVpdCgpCiAKKyAgICBkZWYgdGVzdFNvdXJjZUFkZHJlc3Moc2VsZik6CisgICAgICAgICMgY29ubmVjdAorICAgICAgICBwb3J0ID0gc3VwcG9ydC5maW5kX3VudXNlZF9wb3J0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTMsIHNvdXJjZV9hZGRyZXNzPSgnMTI3LjAuMC4xJywgcG9ydCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAuc291cmNlX2FkZHJlc3MsICgnMTI3LjAuMC4xJywgcG9ydCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAubG9jYWxfaG9zdG5hbWUsICdsb2NhbGhvc3QnKQorICAgICAgICAgICAgc210cC5xdWl0KCkKKyAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRUFERFJJTlVTRToKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJjb3VsZG4ndCBiaW5kIHRvIHBvcnQgJWQiICUgcG9ydCkKKyAgICAgICAgICAgIHJhaXNlCisKICAgICBkZWYgdGVzdE5PT1Aoc2VsZik6CiAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQotICAgICAgICBleHBlY3RlZCA9ICgyNTAsIGInT2snKQorICAgICAgICBleHBlY3RlZCA9ICgyNTAsIGInT0snKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAubm9vcCgpLCBleHBlY3RlZCkKICAgICAgICAgc210cC5xdWl0KCkKIAogICAgIGRlZiB0ZXN0UlNFVChzZWxmKToKICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCi0gICAgICAgIGV4cGVjdGVkID0gKDI1MCwgYidPaycpCisgICAgICAgIGV4cGVjdGVkID0gKDI1MCwgYidPSycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5yc2V0KCksIGV4cGVjdGVkKQogICAgICAgICBzbXRwLnF1aXQoKQogCkBAIC0yMjMsMTAgKzI0NiwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAuZWhsbygpLCBleHBlY3RlZCkKICAgICAgICAgc210cC5xdWl0KCkKIAotICAgIGRlZiB0ZXN0VlJGWShzZWxmKToKLSAgICAgICAgIyBWUkZZIGlzbid0IGltcGxlbWVudGVkIGluIERlYnVnZ2luZ1NlcnZlcgorICAgIGRlZiB0ZXN0Tm90SW1wbGVtZW50ZWQoc2VsZik6CisgICAgICAgICMgRVhQTiBpc24ndCBpbXBsZW1lbnRlZCBpbiBEZWJ1Z2dpbmdTZXJ2ZXIKICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCi0gICAgICAgIGV4cGVjdGVkID0gKDUwMiwgYidFcnJvcjogY29tbWFuZCAiVlJGWSIgbm90IGltcGxlbWVudGVkJykKKyAgICAgICAgZXhwZWN0ZWQgPSAoNTAyLCBiJ0VYUE4gbm90IGltcGxlbWVudGVkJykKKyAgICAgICAgc210cC5wdXRjbWQoJ0VYUE4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAuZ2V0cmVwbHkoKSwgZXhwZWN0ZWQpCisgICAgICAgIHNtdHAucXVpdCgpCisKKyAgICBkZWYgdGVzdFZSRlkoc2VsZik6CisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQorICAgICAgICBleHBlY3RlZCA9ICgyNTIsIGInQ2Fubm90IFZSRlkgdXNlciwgYnV0IHdpbGwgYWNjZXB0IG1lc3NhZ2UgJyArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2FuZCBhdHRlbXB0IGRlbGl2ZXJ5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLnZyZnkoJ25vYm9keUBub3doZXJlLmNvbScpLCBleHBlY3RlZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLnZlcmlmeSgnbm9ib2R5QG5vd2hlcmUuY29tJyksIGV4cGVjdGVkKQogICAgICAgICBzbXRwLnF1aXQoKQpAQCAtMjQyLDcgKzI3Myw4IEBACiAKICAgICBkZWYgdGVzdEhFTFAoc2VsZik6CiAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAuaGVscCgpLCBiJ0Vycm9yOiBjb21tYW5kICJIRUxQIiBub3QgaW1wbGVtZW50ZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAuaGVscCgpLCBiJ1N1cHBvcnRlZCBjb21tYW5kczogRUhMTyBIRUxPIE1BSUwgJyArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidSQ1BUIERBVEEgUlNFVCBOT09QIFFVSVQgVlJGWScpCiAgICAgICAgIHNtdHAucXVpdCgpCiAKICAgICBkZWYgdGVzdFNlbmQoc2VsZik6CkBAIC01NjAsNiArNTkyLDkgQEAKICMgU2ltdWxhdGVkIFNNVFAgY2hhbm5lbCAmIHNlcnZlcgogY2xhc3MgU2ltU01UUENoYW5uZWwoc210cGQuU01UUENoYW5uZWwpOgogCisgICAgIyBGb3IgdGVzdGluZyBmYWlsdXJlcyBpbiBRVUlUIHdoZW4gdXNpbmcgdGhlIGNvbnRleHQgbWFuYWdlciBBUEkuCisgICAgcXVpdF9yZXNwb25zZSA9IE5vbmUKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleHRyYV9mZWF0dXJlcywgKmFyZ3MsICoqa3cpOgogICAgICAgICBzZWxmLl9leHRyYWZlYXR1cmVzID0gJycuam9pbigKICAgICAgICAgICAgIFsgIjI1MC17MH1cclxuIi5mb3JtYXQoeCkgZm9yIHggaW4gZXh0cmFfZmVhdHVyZXMgXSkKQEAgLTYxMCwxOSArNjQ1LDMxIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzU1MCBObyBhY2Nlc3MgZm9yIHlvdSEnKQogCisgICAgZGVmIHNtdHBfUVVJVChzZWxmLCBhcmcpOgorICAgICAgICAjIGFyZ3MgaXMgaWdub3JlZAorICAgICAgICBpZiBzZWxmLnF1aXRfcmVzcG9uc2UgaXMgTm9uZToKKyAgICAgICAgICAgIHN1cGVyKFNpbVNNVFBDaGFubmVsLCBzZWxmKS5zbXRwX1FVSVQoYXJnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5wdXNoKHNlbGYucXVpdF9yZXNwb25zZSkKKyAgICAgICAgICAgIHNlbGYuY2xvc2Vfd2hlbl9kb25lKCkKKwogICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZik6CiAgICAgICAgIHJhaXNlCiAKIAogY2xhc3MgU2ltU01UUFNlcnZlcihzbXRwZC5TTVRQU2VydmVyKToKIAorICAgICMgRm9yIHRlc3RpbmcgZmFpbHVyZXMgaW4gUVVJVCB3aGVuIHVzaW5nIHRoZSBjb250ZXh0IG1hbmFnZXIgQVBJLgorICAgIHF1aXRfcmVzcG9uc2UgPSBOb25lCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpOgogICAgICAgICBzZWxmLl9leHRyYV9mZWF0dXJlcyA9IFtdCiAgICAgICAgIHNtdHBkLlNNVFBTZXJ2ZXIuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpCiAKICAgICBkZWYgaGFuZGxlX2FjY2VwdGVkKHNlbGYsIGNvbm4sIGFkZHIpOgotICAgICAgICBzZWxmLl9TTVRQY2hhbm5lbCA9IFNpbVNNVFBDaGFubmVsKHNlbGYuX2V4dHJhX2ZlYXR1cmVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIGNvbm4sIGFkZHIpCisgICAgICAgIHNlbGYuX1NNVFBjaGFubmVsID0gU2ltU01UUENoYW5uZWwoCisgICAgICAgICAgICBzZWxmLl9leHRyYV9mZWF0dXJlcywgc2VsZiwgY29ubiwgYWRkcikKKyAgICAgICAgc2VsZi5fU01UUGNoYW5uZWwucXVpdF9yZXNwb25zZSA9IHNlbGYucXVpdF9yZXNwb25zZQogCiAgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CiAgICAgICAgIHBhc3MKQEAgLTc1Miw2ICs3OTksMjUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2ltX2F1dGhfY3JlZGVudGlhbHNbJ2NyYW0tbWQ1J10sIHN0cihlcnIpKQogICAgICAgICBzbXRwLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICB3aXRoIHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQpIGFzIHNtdHA6CisgICAgICAgICAgICBjb2RlLCBtZXNzYWdlID0gc210cC5ub29wKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZSwgMjUwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzbXRwbGliLlNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQsIHNtdHAuc2VuZCwgYidmb28nKQorICAgICAgICB3aXRoIHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQpIGFzIHNtdHA6CisgICAgICAgICAgICBzbXRwLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc210cGxpYi5TTVRQU2VydmVyRGlzY29ubmVjdGVkLCBzbXRwLnNlbmQsIGInZm9vJykKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50X1FVSVRfZmFpbHVyZShzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2LnF1aXRfcmVzcG9uc2UgPSAnNDIxIFFVSVQgRkFJTEVEJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNtdHBsaWIuU01UUFJlc3BvbnNlRXhjZXB0aW9uKSBhcyBlcnJvcjoKKyAgICAgICAgICAgIHdpdGggc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCkgYXMgc210cDoKKyAgICAgICAgICAgICAgICBzbXRwLm5vb3AoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVycm9yLmV4Y2VwdGlvbi5zbXRwX2NvZGUsIDQyMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJvci5leGNlcHRpb24uc210cF9lcnJvciwgYidRVUlUIEZBSUxFRCcpCisgICAgICAgICMgV2UgZG9uJ3QgbmVlZCB0byBjbGVhbiB1cCBzZWxmLnNlcnYucXVpdF9yZXNwb25zZSBiZWNhdXNlIGEgbmV3CisgICAgICAgICMgc2VydmVyIGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQgaW4gdGhlIHNldFVwKCkuCisKICAgICAjVE9ETzogYWRkIHRlc3RzIGZvciBjb3JyZWN0IEFVVEggbWV0aG9kIGZhbGxiYWNrIG5vdyB0aGF0IHRoZQogICAgICN0ZXN0IGluZnJhc3RydWN0dXJlIGNhbiBzdXBwb3J0IGl0LgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NtdHBuZXQucHkgYi9MaWIvdGVzdC90ZXN0X3NtdHBuZXQucHkKaW5kZXggMDE5OGFiNi4uODYyMjRlZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zbXRwbmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc210cG5ldC5weQpAQCAtNCwyOCArNCw2MCBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgc210cGxpYgogCitzc2wgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoInNzbCIpCisKIHN1cHBvcnQucmVxdWlyZXMoIm5ldHdvcmsiKQogCisKK2NsYXNzIFNtdHBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICB0ZXN0U2VydmVyID0gJ3NtdHAuZ21haWwuY29tJworICAgIHJlbW90ZVBvcnQgPSAyNQorICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF9zdGFydHRscyhzZWxmKToKKyAgICAgICAgc3VwcG9ydC5nZXRfYXR0cmlidXRlKHNtdHBsaWIsICdTTVRQX1NTTCcpCisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoc2VsZi50ZXN0U2VydmVyKToKKyAgICAgICAgICAgIHNlcnZlciA9IHNtdHBsaWIuU01UUChzZWxmLnRlc3RTZXJ2ZXIsIHNlbGYucmVtb3RlUG9ydCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZXJ2ZXIuc3RhcnR0bHMoY29udGV4dD1zZWxmLmNvbnRleHQpCisgICAgICAgICAgICBleGNlcHQgc210cGxpYi5TTVRQRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdID09ICdTVEFSVFRMUyBleHRlbnNpb24gbm90IHN1cHBvcnRlZCBieSBzZXJ2ZXIuJzoKKyAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3Quc2tpcChlLmFyZ3NbMF0pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHNlcnZlci5laGxvKCkKKyAgICAgICAgICAgIHNlcnZlci5xdWl0KCkKKworCiBjbGFzcyBTbXRwU1NMVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdGVzdFNlcnZlciA9ICdzbXRwLmdtYWlsLmNvbScKICAgICByZW1vdGVQb3J0ID0gNDY1CisgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0KHNlbGYpOgogICAgICAgICBzdXBwb3J0LmdldF9hdHRyaWJ1dGUoc210cGxpYiwgJ1NNVFBfU1NMJykKICAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChzZWxmLnRlc3RTZXJ2ZXIpOgogICAgICAgICAgICAgc2VydmVyID0gc210cGxpYi5TTVRQX1NTTChzZWxmLnRlc3RTZXJ2ZXIsIHNlbGYucmVtb3RlUG9ydCkKLSAgICAgICAgc2VydmVyLmVobG8oKQotICAgICAgICBzZXJ2ZXIucXVpdCgpCisgICAgICAgICAgICBzZXJ2ZXIuZWhsbygpCisgICAgICAgICAgICBzZXJ2ZXIucXVpdCgpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0X2RlZmF1bHRfcG9ydChzZWxmKToKICAgICAgICAgc3VwcG9ydC5nZXRfYXR0cmlidXRlKHNtdHBsaWIsICdTTVRQX1NTTCcpCiAgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoc2VsZi50ZXN0U2VydmVyKToKICAgICAgICAgICAgIHNlcnZlciA9IHNtdHBsaWIuU01UUF9TU0woc2VsZi50ZXN0U2VydmVyKQotICAgICAgICBzZXJ2ZXIuZWhsbygpCi0gICAgICAgIHNlcnZlci5xdWl0KCkKKyAgICAgICAgICAgIHNlcnZlci5laGxvKCkKKyAgICAgICAgICAgIHNlcnZlci5xdWl0KCkKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfdXNpbmdfc3NsY29udGV4dChzZWxmKToKKyAgICAgICAgc3VwcG9ydC5nZXRfYXR0cmlidXRlKHNtdHBsaWIsICdTTVRQX1NTTCcpCisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoc2VsZi50ZXN0U2VydmVyKToKKyAgICAgICAgICAgIHNlcnZlciA9IHNtdHBsaWIuU01UUF9TU0woc2VsZi50ZXN0U2VydmVyLCBzZWxmLnJlbW90ZVBvcnQsIGNvbnRleHQ9c2VsZi5jb250ZXh0KQorICAgICAgICAgICAgc2VydmVyLmVobG8oKQorICAgICAgICAgICAgc2VydmVyLnF1aXQoKQorCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTbXRwU1NMVGVzdCkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTbXRwVGVzdCwgU210cFNTTFRlc3QpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5IGIvTGliL3Rlc3QvdGVzdF9zb2NrZXQucHkKaW5kZXggNGVjYWI5NS4uZDIwZTM3YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zb2NrZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zb2NrZXQucHkKQEAgLTIsMTEgKzIsMTMgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdW5pdHRlc3QuY2FzZSBpbXBvcnQgX0V4cGVjdGVkRmFpbHVyZQogCiBpbXBvcnQgZXJybm8KIGltcG9ydCBpbwogaW1wb3J0IHNvY2tldAogaW1wb3J0IHNlbGVjdAoraW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgX3Rlc3RjYXBpCiBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawpAQCAtMTksMzQgKzIxLDE5IEBACiBmcm9tIHdlYWtyZWYgaW1wb3J0IHByb3h5CiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgbWF0aAoraW1wb3J0IHBpY2tsZQoraW1wb3J0IHN0cnVjdAogdHJ5OgogICAgIGltcG9ydCBmY250bAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGZjbnRsID0gRmFsc2UKLQotZGVmIHRyeV9hZGRyZXNzKGhvc3QsIHBvcnQ9MCwgZmFtaWx5PXNvY2tldC5BRl9JTkVUKToKLSAgICAiIiJUcnkgdG8gYmluZCBhIHNvY2tldCBvbiB0aGUgZ2l2ZW4gaG9zdDpwb3J0IGFuZCByZXR1cm4gVHJ1ZQotICAgIGlmIHRoYXQgaGFzIGJlZW4gcG9zc2libGUuIiIiCi0gICAgdHJ5OgotICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChmYW1pbHksIHNvY2tldC5TT0NLX1NUUkVBTSkKLSAgICAgICAgc29jay5iaW5kKChob3N0LCBwb3J0KSkKLSAgICBleGNlcHQgKHNvY2tldC5lcnJvciwgc29ja2V0LmdhaWVycm9yKToKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgZWxzZToKLSAgICAgICAgc29jay5jbG9zZSgpCi0gICAgICAgIHJldHVybiBUcnVlCi0KLWRlZiBsaW51eF92ZXJzaW9uKCk6Ci0gICAgdHJ5OgotICAgICAgICAjIHBsYXRmb3JtLnJlbGVhc2UoKSBpcyBzb21ldGhpbmcgbGlrZSAnMi42LjMzLjctZGVza3RvcC0ybW5iJwotICAgICAgICB2ZXJzaW9uX3N0cmluZyA9IHBsYXRmb3JtLnJlbGVhc2UoKS5zcGxpdCgnLScpWzBdCi0gICAgICAgIHJldHVybiB0dXBsZShtYXAoaW50LCB2ZXJzaW9uX3N0cmluZy5zcGxpdCgnLicpKSkKLSAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgcmV0dXJuIDAsIDAsIDAKK3RyeToKKyAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgbXVsdGlwcm9jZXNzaW5nID0gRmFsc2UKIAogSE9TVCA9IHN1cHBvcnQuSE9TVAotTVNHID0gJ01pY2hhZWwgR2lsZml4IHdhcyBoZXJlXHUxMjM0XHJcbicuZW5jb2RlKCd1dGY4JykgIyMgdGVzdCB1bmljb2RlIHN0cmluZyBhbmQgY2FycmlhZ2UgcmV0dXJuCi1TVVBQT1JUU19JUFY2ID0gc29ja2V0Lmhhc19pcHY2IGFuZCB0cnlfYWRkcmVzcygnOjoxJywgZmFtaWx5PXNvY2tldC5BRl9JTkVUNikKK01TRyA9ICdNaWNoYWVsIEdpbGZpeCB3YXMgaGVyZVx1MTIzNFxyXG4nLmVuY29kZSgndXRmLTgnKSAjIyB0ZXN0IHVuaWNvZGUgc3RyaW5nIGFuZCBjYXJyaWFnZSByZXR1cm4KIAogdHJ5OgogICAgIGltcG9ydCBfdGhyZWFkIGFzIHRocmVhZApAQCAtNTUsNiArNDIsMzMgQEAKICAgICB0aHJlYWQgPSBOb25lCiAgICAgdGhyZWFkaW5nID0gTm9uZQogCitkZWYgX2hhdmVfc29ja2V0X2NhbigpOgorICAgICIiIkNoZWNrIHdoZXRoZXIgQ0FOIHNvY2tldHMgYXJlIHN1cHBvcnRlZCBvbiB0aGlzIGhvc3QuIiIiCisgICAgdHJ5OgorICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKQorICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIHNvY2tldC5lcnJvciwgT1NFcnJvcik6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGVsc2U6CisgICAgICAgIHMuY2xvc2UoKQorICAgIHJldHVybiBUcnVlCisKK2RlZiBfaGF2ZV9zb2NrZXRfcmRzKCk6CisgICAgIiIiQ2hlY2sgd2hldGhlciBSRFMgc29ja2V0cyBhcmUgc3VwcG9ydGVkIG9uIHRoaXMgaG9zdC4iIiIKKyAgICB0cnk6CisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9SRFMsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkKKyAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZWxzZToKKyAgICAgICAgcy5jbG9zZSgpCisgICAgcmV0dXJuIFRydWUKKworSEFWRV9TT0NLRVRfQ0FOID0gX2hhdmVfc29ja2V0X2NhbigpCisKK0hBVkVfU09DS0VUX1JEUyA9IF9oYXZlX3NvY2tldF9yZHMoKQorCisjIFNpemUgaW4gYnl0ZXMgb2YgdGhlIGludCB0eXBlCitTSVpFT0ZfSU5UID0gYXJyYXkuYXJyYXkoImkiKS5pdGVtc2l6ZQorCiBjbGFzcyBTb2NrZXRUQ1BUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTc2LDYgKzkwLDYzIEBACiAgICAgICAgIHNlbGYuc2Vydi5jbG9zZSgpCiAgICAgICAgIHNlbGYuc2VydiA9IE5vbmUKIAorY2xhc3MgVGhyZWFkU2FmZUNsZWFudXBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiU3ViY2xhc3Mgb2YgdW5pdHRlc3QuVGVzdENhc2Ugd2l0aCB0aHJlYWQtc2FmZSBjbGVhbnVwIG1ldGhvZHMuCisKKyAgICBUaGlzIHN1YmNsYXNzIHByb3RlY3RzIHRoZSBhZGRDbGVhbnVwKCkgYW5kIGRvQ2xlYW51cHMoKSBtZXRob2RzCisgICAgd2l0aCBhIHJlY3Vyc2l2ZSBsb2NrLgorICAgICIiIgorCisgICAgaWYgdGhyZWFkaW5nOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgc2VsZi5fY2xlYW51cF9sb2NrID0gdGhyZWFkaW5nLlJMb2NrKCkKKworICAgICAgICBkZWYgYWRkQ2xlYW51cChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgd2l0aCBzZWxmLl9jbGVhbnVwX2xvY2s6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuYWRkQ2xlYW51cCgqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgZGVmIGRvQ2xlYW51cHMoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5fY2xlYW51cF9sb2NrOgorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLmRvQ2xlYW51cHMoKmFyZ3MsICoqa3dhcmdzKQorCitjbGFzcyBTb2NrZXRDQU5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRvIGJlIGFibGUgdG8gcnVuIHRoaXMgdGVzdCwgYSBgdmNhbjBgIENBTiBpbnRlcmZhY2UgY2FuIGJlIGNyZWF0ZWQgd2l0aAorICAgIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CisgICAgIyBtb2Rwcm9iZSB2Y2FuCisgICAgIyBpcCBsaW5rIGFkZCBkZXYgdmNhbjAgdHlwZSB2Y2FuCisgICAgIyBpZmNvbmZpZyB2Y2FuMCB1cAorICAgICIiIgorICAgIGludGVyZmFjZSA9ICd2Y2FuMCcKKyAgICBidWZzaXplID0gMTI4CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYucyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX0NBTiwgc29ja2V0LlNPQ0tfUkFXLCBzb2NrZXQuQ0FOX1JBVykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYucy5jbG9zZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5zLmJpbmQoKHNlbGYuaW50ZXJmYWNlLCkpCisgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCduZXR3b3JrIGludGVyZmFjZSBgJXNgIGRvZXMgbm90IGV4aXN0JyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmludGVyZmFjZSkKKworCitjbGFzcyBTb2NrZXRSRFNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRvIGJlIGFibGUgdG8gcnVuIHRoaXMgdGVzdCwgdGhlIGByZHNgIGtlcm5lbCBtb2R1bGUgbXVzdCBiZSBsb2FkZWQ6CisgICAgIyBtb2Rwcm9iZSByZHMKKyAgICAiIiIKKyAgICBidWZzaXplID0gODE5MgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnYgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9SRFMsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuc2Vydi5jbG9zZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5wb3J0ID0gc3VwcG9ydC5iaW5kX3BvcnQoc2VsZi5zZXJ2KQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3VuYWJsZSB0byBiaW5kIFJEUyBzb2NrZXQnKQorCisKIGNsYXNzIFRocmVhZGFibGVUZXN0OgogICAgICIiIlRocmVhZGFibGUgVGVzdCBjbGFzcwogCkBAIC0xMzMsNiArMjA0LDcgQEAKICAgICAgICAgc2VsZi5jbGllbnRfcmVhZHkgPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICBzZWxmLmRvbmUgPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICBzZWxmLnF1ZXVlID0gcXVldWUuUXVldWUoMSkKKyAgICAgICAgc2VsZi5zZXJ2ZXJfY3Jhc2hlZCA9IEZhbHNlCiAKICAgICAgICAgIyBEbyBzb21lIG11bmdpbmcgdG8gc3RhcnQgdGhlIGNsaWVudCB0ZXN0LgogICAgICAgICBtZXRob2RuYW1lID0gc2VsZi5pZCgpCkBAIC0xNDIsOCArMjE0LDEyIEBACiAgICAgICAgIHNlbGYuY2xpZW50X3RocmVhZCA9IHRocmVhZC5zdGFydF9uZXdfdGhyZWFkKAogICAgICAgICAgICAgc2VsZi5jbGllbnRSdW4sICh0ZXN0X21ldGhvZCwpKQogCi0gICAgICAgIHNlbGYuX19zZXRVcCgpCi0gICAgICAgIGlmIG5vdCBzZWxmLnNlcnZlcl9yZWFkeS5pc19zZXQoKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5fX3NldFVwKCkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY3Jhc2hlZCA9IFRydWUKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnNlcnZlcl9yZWFkeS5zZXQoKQogICAgICAgICBzZWxmLmNsaWVudF9yZWFkeS53YWl0KCkKIApAQCAtMTU5LDEwICsyMzUsMTYgQEAKICAgICAgICAgc2VsZi5zZXJ2ZXJfcmVhZHkud2FpdCgpCiAgICAgICAgIHNlbGYuY2xpZW50U2V0VXAoKQogICAgICAgICBzZWxmLmNsaWVudF9yZWFkeS5zZXQoKQorICAgICAgICBpZiBzZWxmLnNlcnZlcl9jcmFzaGVkOgorICAgICAgICAgICAgc2VsZi5jbGllbnRUZWFyRG93bigpCisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgbm90IGhhc2F0dHIodGVzdF9mdW5jLCAnX19jYWxsX18nKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigidGVzdF9mdW5jIG11c3QgYmUgYSBjYWxsYWJsZSBmdW5jdGlvbiIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHRlc3RfZnVuYygpCisgICAgICAgIGV4Y2VwdCBfRXhwZWN0ZWRGYWlsdXJlOgorICAgICAgICAgICAgIyBXZSBkZWxpYmVyYXRlbHkgaWdub3JlIGV4cGVjdGVkIGZhaWx1cmVzCisgICAgICAgICAgICBwYXNzCiAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICBzZWxmLnF1ZXVlLnB1dChlKQogICAgICAgICBmaW5hbGx5OgpAQCAtMjAzLDYgKzI4NSw0OCBAQAogICAgICAgICBzZWxmLmNsaSA9IE5vbmUKICAgICAgICAgVGhyZWFkYWJsZVRlc3QuY2xpZW50VGVhckRvd24oc2VsZikKIAorY2xhc3MgVGhyZWFkZWRDQU5Tb2NrZXRUZXN0KFNvY2tldENBTlRlc3QsIFRocmVhZGFibGVUZXN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPSdydW5UZXN0Jyk6CisgICAgICAgIFNvY2tldENBTlRlc3QuX19pbml0X18oc2VsZiwgbWV0aG9kTmFtZT1tZXRob2ROYW1lKQorICAgICAgICBUaHJlYWRhYmxlVGVzdC5fX2luaXRfXyhzZWxmKQorCisgICAgZGVmIGNsaWVudFNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmNsaSA9IHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX0NBTiwgc29ja2V0LlNPQ0tfUkFXLCBzb2NrZXQuQ0FOX1JBVykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5jbGkuYmluZCgoc2VsZi5pbnRlcmZhY2UsKSkKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgICAgICMgc2tpcFRlc3Qgc2hvdWxkIG5vdCBiZSBjYWxsZWQgaGVyZSwgYW5kIHdpbGwgYmUgY2FsbGVkIGluIHRoZQorICAgICAgICAgICAgIyBzZXJ2ZXIgaW5zdGVhZAorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIGNsaWVudFRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLmNsaS5jbG9zZSgpCisgICAgICAgIHNlbGYuY2xpID0gTm9uZQorICAgICAgICBUaHJlYWRhYmxlVGVzdC5jbGllbnRUZWFyRG93bihzZWxmKQorCitjbGFzcyBUaHJlYWRlZFJEU1NvY2tldFRlc3QoU29ja2V0UkRTVGVzdCwgVGhyZWFkYWJsZVRlc3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGhvZE5hbWU9J3J1blRlc3QnKToKKyAgICAgICAgU29ja2V0UkRTVGVzdC5fX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPW1ldGhvZE5hbWUpCisgICAgICAgIFRocmVhZGFibGVUZXN0Ll9faW5pdF9fKHNlbGYpCisKKyAgICBkZWYgY2xpZW50U2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuY2xpID0gc29ja2V0LnNvY2tldChzb2NrZXQuUEZfUkRTLCBzb2NrZXQuU09DS19TRVFQQUNLRVQsIDApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgUkRTIHNvY2tldHMgbXVzdCBiZSBib3VuZCBleHBsaWNpdGx5IHRvIHNlbmQgb3IgcmVjZWl2ZSBkYXRhCisgICAgICAgICAgICBzZWxmLmNsaS5iaW5kKChIT1NULCAwKSkKKyAgICAgICAgICAgIHNlbGYuY2xpX2FkZHIgPSBzZWxmLmNsaS5nZXRzb2NrbmFtZSgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgIyBza2lwVGVzdCBzaG91bGQgbm90IGJlIGNhbGxlZCBoZXJlLCBhbmQgd2lsbCBiZSBjYWxsZWQgaW4gdGhlCisgICAgICAgICAgICAjIHNlcnZlciBpbnN0ZWFkCisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgY2xpZW50VGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuY2xpLmNsb3NlKCkKKyAgICAgICAgc2VsZi5jbGkgPSBOb25lCisgICAgICAgIFRocmVhZGFibGVUZXN0LmNsaWVudFRlYXJEb3duKHNlbGYpCisKIGNsYXNzIFNvY2tldENvbm5lY3RlZFRlc3QoVGhyZWFkZWRUQ1BTb2NrZXRUZXN0KToKICAgICAiIiJTb2NrZXQgdGVzdHMgZm9yIGNsaWVudC1zZXJ2ZXIgY29ubmVjdGlvbi4KIApAQCAtMjU4LDYgKzM4MiwyNDMgQEAKICAgICAgICAgVGhyZWFkYWJsZVRlc3QuY2xpZW50VGVhckRvd24oc2VsZikKIAogCisjIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBhcmUgdXNlZCBieSB0aGUgc2VuZG1zZygpL3JlY3Ztc2coKSB0ZXN0cy4KKyMgQ29tYmluaW5nLCBmb3IgaW5zdGFuY2UsIENvbm5lY3RlZFN0cmVhbVRlc3RNaXhpbiBhbmQgVENQVGVzdEJhc2UKKyMgZ2l2ZXMgYSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciBTb2NrZXRDb25uZWN0ZWRUZXN0LCBidXQgZGlmZmVyZW50CisjIGFkZHJlc3MgZmFtaWxpZXMgY2FuIGJlIHVzZWQsIGFuZCB0aGUgYXR0cmlidXRlcyBzZXJ2X2FkZHIgYW5kCisjIGNsaV9hZGRyIHdpbGwgYmUgc2V0IHRvIHRoZSBhZGRyZXNzZXMgb2YgdGhlIGVuZHBvaW50cy4KKworY2xhc3MgU29ja2V0VGVzdEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkEgYmFzZSBjbGFzcyBmb3Igc29ja2V0IHRlc3RzLgorCisgICAgU3ViY2xhc3NlcyBtdXN0IHByb3ZpZGUgbWV0aG9kcyBuZXdTb2NrZXQoKSB0byByZXR1cm4gYSBuZXcgc29ja2V0CisgICAgYW5kIGJpbmRTb2NrKHNvY2spIHRvIGJpbmQgaXQgdG8gYW4gdW51c2VkIGFkZHJlc3MuCisKKyAgICBDcmVhdGVzIGEgc29ja2V0IHNlbGYuc2VydiBhbmQgc2V0cyBzZWxmLnNlcnZfYWRkciB0byBpdHMgYWRkcmVzcy4KKyAgICAiIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2ID0gc2VsZi5uZXdTb2NrZXQoKQorICAgICAgICBzZWxmLmJpbmRTZXJ2ZXIoKQorCisgICAgZGVmIGJpbmRTZXJ2ZXIoc2VsZik6CisgICAgICAgICIiIkJpbmQgc2VydmVyIHNvY2tldCBhbmQgc2V0IHNlbGYuc2Vydl9hZGRyIHRvIGl0cyBhZGRyZXNzLiIiIgorICAgICAgICBzZWxmLmJpbmRTb2NrKHNlbGYuc2VydikKKyAgICAgICAgc2VsZi5zZXJ2X2FkZHIgPSBzZWxmLnNlcnYuZ2V0c29ja25hbWUoKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnYuY2xvc2UoKQorICAgICAgICBzZWxmLnNlcnYgPSBOb25lCisKKworY2xhc3MgU29ja2V0TGlzdGVuaW5nVGVzdE1peGluKFNvY2tldFRlc3RCYXNlKToKKyAgICAiIiJNaXhpbiB0byBsaXN0ZW4gb24gdGhlIHNlcnZlciBzb2NrZXQuIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICBzZWxmLnNlcnYubGlzdGVuKDEpCisKKworY2xhc3MgVGhyZWFkZWRTb2NrZXRUZXN0TWl4aW4oVGhyZWFkU2FmZUNsZWFudXBUZXN0Q2FzZSwgU29ja2V0VGVzdEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWRhYmxlVGVzdCk6CisgICAgIiIiTWl4aW4gdG8gYWRkIGNsaWVudCBzb2NrZXQgYW5kIGFsbG93IGNsaWVudC9zZXJ2ZXIgdGVzdHMuCisKKyAgICBDbGllbnQgc29ja2V0IGlzIHNlbGYuY2xpIGFuZCBpdHMgYWRkcmVzcyBpcyBzZWxmLmNsaV9hZGRyLiAgU2VlCisgICAgVGhyZWFkYWJsZVRlc3QgZm9yIHVzYWdlIGluZm9ybWF0aW9uLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBUaHJlYWRhYmxlVGVzdC5fX2luaXRfXyhzZWxmKQorCisgICAgZGVmIGNsaWVudFNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmNsaSA9IHNlbGYubmV3Q2xpZW50U29ja2V0KCkKKyAgICAgICAgc2VsZi5iaW5kQ2xpZW50KCkKKworICAgIGRlZiBuZXdDbGllbnRTb2NrZXQoc2VsZik6CisgICAgICAgICIiIlJldHVybiBhIG5ldyBzb2NrZXQgZm9yIHVzZSBhcyBjbGllbnQuIiIiCisgICAgICAgIHJldHVybiBzZWxmLm5ld1NvY2tldCgpCisKKyAgICBkZWYgYmluZENsaWVudChzZWxmKToKKyAgICAgICAgIiIiQmluZCBjbGllbnQgc29ja2V0IGFuZCBzZXQgc2VsZi5jbGlfYWRkciB0byBpdHMgYWRkcmVzcy4iIiIKKyAgICAgICAgc2VsZi5iaW5kU29jayhzZWxmLmNsaSkKKyAgICAgICAgc2VsZi5jbGlfYWRkciA9IHNlbGYuY2xpLmdldHNvY2tuYW1lKCkKKworICAgIGRlZiBjbGllbnRUZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5jbGkuY2xvc2UoKQorICAgICAgICBzZWxmLmNsaSA9IE5vbmUKKyAgICAgICAgVGhyZWFkYWJsZVRlc3QuY2xpZW50VGVhckRvd24oc2VsZikKKworCitjbGFzcyBDb25uZWN0ZWRTdHJlYW1UZXN0TWl4aW4oU29ja2V0TGlzdGVuaW5nVGVzdE1peGluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGVkU29ja2V0VGVzdE1peGluKToKKyAgICAiIiJNaXhpbiB0byBhbGxvdyBjbGllbnQvc2VydmVyIHN0cmVhbSB0ZXN0cyB3aXRoIGNvbm5lY3RlZCBjbGllbnQuCisKKyAgICBTZXJ2ZXIncyBzb2NrZXQgcmVwcmVzZW50aW5nIGNvbm5lY3Rpb24gdG8gY2xpZW50IGlzIHNlbGYuY2xpX2Nvbm4KKyAgICBhbmQgY2xpZW50J3MgY29ubmVjdGlvbiB0byBzZXJ2ZXIgaXMgc2VsZi5zZXJ2X2Nvbm4uICAoQmFzZWQgb24KKyAgICBTb2NrZXRDb25uZWN0ZWRUZXN0LikKKyAgICAiIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAgICMgSW5kaWNhdGUgZXhwbGljaXRseSB3ZSdyZSByZWFkeSBmb3IgdGhlIGNsaWVudCB0aHJlYWQgdG8KKyAgICAgICAgIyBwcm9jZWVkIGFuZCB0aGVuIHBlcmZvcm0gdGhlIGJsb2NraW5nIGNhbGwgdG8gYWNjZXB0CisgICAgICAgIHNlbGYuc2VydmVyRXhwbGljaXRSZWFkeSgpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnYuYWNjZXB0KCkKKyAgICAgICAgc2VsZi5jbGlfY29ubiA9IGNvbm4KKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5jbGlfY29ubi5jbG9zZSgpCisgICAgICAgIHNlbGYuY2xpX2Nvbm4gPSBOb25lCisgICAgICAgIHN1cGVyKCkudGVhckRvd24oKQorCisgICAgZGVmIGNsaWVudFNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLmNsaWVudFNldFVwKCkKKyAgICAgICAgc2VsZi5jbGkuY29ubmVjdChzZWxmLnNlcnZfYWRkcikKKyAgICAgICAgc2VsZi5zZXJ2X2Nvbm4gPSBzZWxmLmNsaQorCisgICAgZGVmIGNsaWVudFRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnZfY29ubi5jbG9zZSgpCisgICAgICAgIHNlbGYuc2Vydl9jb25uID0gTm9uZQorICAgICAgICBzdXBlcigpLmNsaWVudFRlYXJEb3duKCkKKworCitjbGFzcyBVbml4U29ja2V0VGVzdEJhc2UoU29ja2V0VGVzdEJhc2UpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIFVuaXgtZG9tYWluIHNvY2tldCB0ZXN0cy4iIiIKKworICAgICMgVGhpcyBjbGFzcyBpcyB1c2VkIGZvciBmaWxlIGRlc2NyaXB0b3IgcGFzc2luZyB0ZXN0cywgc28gd2UKKyAgICAjIGNyZWF0ZSB0aGUgc29ja2V0cyBpbiBhIHByaXZhdGUgZGlyZWN0b3J5IHNvIHRoYXQgb3RoZXIgdXNlcnMKKyAgICAjIGNhbid0IHNlbmQgYW55dGhpbmcgdGhhdCBtaWdodCBiZSBwcm9ibGVtYXRpYyBmb3IgYSBwcml2aWxlZ2VkCisgICAgIyB1c2VyIHJ1bm5pbmcgdGhlIHRlc3RzLgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmRpcl9wYXRoID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5ybWRpciwgc2VsZi5kaXJfcGF0aCkKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisKKyAgICBkZWYgYmluZFNvY2soc2VsZiwgc29jayk6CisgICAgICAgIHBhdGggPSB0ZW1wZmlsZS5ta3RlbXAoZGlyPXNlbGYuZGlyX3BhdGgpCisgICAgICAgIHNvY2suYmluZChwYXRoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHBhdGgpCisKK2NsYXNzIFVuaXhTdHJlYW1CYXNlKFVuaXhTb2NrZXRUZXN0QmFzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgVW5peC1kb21haW4gU09DS19TVFJFQU0gdGVzdHMuIiIiCisKKyAgICBkZWYgbmV3U29ja2V0KHNlbGYpOgorICAgICAgICByZXR1cm4gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorCisKK2NsYXNzIEluZXRUZXN0QmFzZShTb2NrZXRUZXN0QmFzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgSVB2NCBzb2NrZXQgdGVzdHMuIiIiCisKKyAgICBob3N0ID0gSE9TVAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKyAgICAgICAgc2VsZi5wb3J0ID0gc2VsZi5zZXJ2X2FkZHJbMV0KKworICAgIGRlZiBiaW5kU29jayhzZWxmLCBzb2NrKToKKyAgICAgICAgc3VwcG9ydC5iaW5kX3BvcnQoc29jaywgaG9zdD1zZWxmLmhvc3QpCisKK2NsYXNzIFRDUFRlc3RCYXNlKEluZXRUZXN0QmFzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgVENQLW92ZXItSVB2NCB0ZXN0cy4iIiIKKworICAgIGRlZiBuZXdTb2NrZXQoc2VsZik6CisgICAgICAgIHJldHVybiBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisKK2NsYXNzIFVEUFRlc3RCYXNlKEluZXRUZXN0QmFzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgVURQLW92ZXItSVB2NCB0ZXN0cy4iIiIKKworICAgIGRlZiBuZXdTb2NrZXQoc2VsZik6CisgICAgICAgIHJldHVybiBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19ER1JBTSkKKworY2xhc3MgU0NUUFN0cmVhbUJhc2UoSW5ldFRlc3RCYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBTQ1RQIHRlc3RzIGluIG9uZS10by1vbmUgKFNPQ0tfU1RSRUFNKSBtb2RlLiIiIgorCisgICAgZGVmIG5ld1NvY2tldChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQUFJPVE9fU0NUUCkKKworCitjbGFzcyBJbmV0NlRlc3RCYXNlKEluZXRUZXN0QmFzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgSVB2NiBzb2NrZXQgdGVzdHMuIiIiCisKKyAgICAjIERvbid0IHVzZSAibG9jYWxob3N0IiBoZXJlIC0gaXQgbWF5IG5vdCBoYXZlIGFuIElQdjYgYWRkcmVzcworICAgICMgYXNzaWduZWQgdG8gaXQgYnkgZGVmYXVsdCAoZS5nLiBpbiAvZXRjL2hvc3RzKSwgYW5kIGlmIHNvbWVvbmUKKyAgICAjIGhhcyBhc3NpZ25lZCBpdCBhbiBJUHY0LW1hcHBlZCBhZGRyZXNzLCB0aGVuIGl0J3MgdW5saWtlbHkgdG8KKyAgICAjIHdvcmsgd2l0aCB0aGUgZnVsbCBJUHY2IEFQSS4KKyAgICBob3N0ID0gIjo6MSIKKworY2xhc3MgVURQNlRlc3RCYXNlKEluZXQ2VGVzdEJhc2UpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIFVEUC1vdmVyLUlQdjYgdGVzdHMuIiIiCisKKyAgICBkZWYgbmV3U29ja2V0KHNlbGYpOgorICAgICAgICByZXR1cm4gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVDYsIHNvY2tldC5TT0NLX0RHUkFNKQorCisKKyMgVGVzdC1za2lwcGluZyBkZWNvcmF0b3JzIGZvciB1c2Ugd2l0aCBUaHJlYWRhYmxlVGVzdC4KKworZGVmIHNraXBXaXRoQ2xpZW50SWYoY29uZGl0aW9uLCByZWFzb24pOgorICAgICIiIlNraXAgZGVjb3JhdGVkIHRlc3QgaWYgY29uZGl0aW9uIGlzIHRydWUsIGFkZCBjbGllbnRfc2tpcCBkZWNvcmF0b3IuCisKKyAgICBJZiB0aGUgZGVjb3JhdGVkIG9iamVjdCBpcyBub3QgYSBjbGFzcywgc2V0cyBpdHMgYXR0cmlidXRlCisgICAgImNsaWVudF9za2lwIiB0byBhIGRlY29yYXRvciB3aGljaCB3aWxsIHJldHVybiBhbiBlbXB0eSBmdW5jdGlvbgorICAgIGlmIHRoZSB0ZXN0IGlzIHRvIGJlIHNraXBwZWQsIG9yIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBpZiBpdCBpcworICAgIG5vdC4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gYXZvaWQgcnVubmluZyB0aGUgY2xpZW50IHBhcnQgb2YgYQorICAgIHNraXBwZWQgdGVzdCB3aGVuIHVzaW5nIFRocmVhZGFibGVUZXN0LgorICAgICIiIgorICAgIGRlZiBjbGllbnRfcGFzcygqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBwYXNzCisgICAgZGVmIHNraXBkZWMob2JqKToKKyAgICAgICAgcmV0dmFsID0gdW5pdHRlc3Quc2tpcChyZWFzb24pKG9iaikKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob2JqLCB0eXBlKToKKyAgICAgICAgICAgIHJldHZhbC5jbGllbnRfc2tpcCA9IGxhbWJkYSBmOiBjbGllbnRfcGFzcworICAgICAgICByZXR1cm4gcmV0dmFsCisgICAgZGVmIG5vc2tpcGRlYyhvYmopOgorICAgICAgICBpZiBub3QgKGlzaW5zdGFuY2Uob2JqLCB0eXBlKSBvciBoYXNhdHRyKG9iaiwgImNsaWVudF9za2lwIikpOgorICAgICAgICAgICAgb2JqLmNsaWVudF9za2lwID0gbGFtYmRhIGY6IGYKKyAgICAgICAgcmV0dXJuIG9iagorICAgIHJldHVybiBza2lwZGVjIGlmIGNvbmRpdGlvbiBlbHNlIG5vc2tpcGRlYworCisKK2RlZiByZXF1aXJlQXR0cnMob2JqLCAqYXR0cmlidXRlcyk6CisgICAgIiIiU2tpcCBkZWNvcmF0ZWQgdGVzdCBpZiBvYmogaXMgbWlzc2luZyBhbnkgb2YgdGhlIGdpdmVuIGF0dHJpYnV0ZXMuCisKKyAgICBTZXRzIGNsaWVudF9za2lwIGF0dHJpYnV0ZSBhcyBza2lwV2l0aENsaWVudElmKCkgZG9lcy4KKyAgICAiIiIKKyAgICBtaXNzaW5nID0gW25hbWUgZm9yIG5hbWUgaW4gYXR0cmlidXRlcyBpZiBub3QgaGFzYXR0cihvYmosIG5hbWUpXQorICAgIHJldHVybiBza2lwV2l0aENsaWVudElmKAorICAgICAgICBtaXNzaW5nLCAiZG9uJ3QgaGF2ZSAiICsgIiwgIi5qb2luKG5hbWUgZm9yIG5hbWUgaW4gbWlzc2luZykpCisKKworZGVmIHJlcXVpcmVTb2NrZXQoKmFyZ3MpOgorICAgICIiIlNraXAgZGVjb3JhdGVkIHRlc3QgaWYgYSBzb2NrZXQgY2Fubm90IGJlIGNyZWF0ZWQgd2l0aCBnaXZlbiBhcmd1bWVudHMuCisKKyAgICBXaGVuIGFuIGFyZ3VtZW50IGlzIGdpdmVuIGFzIGEgc3RyaW5nLCB3aWxsIHVzZSB0aGUgdmFsdWUgb2YgdGhhdAorICAgIGF0dHJpYnV0ZSBvZiB0aGUgc29ja2V0IG1vZHVsZSwgb3Igc2tpcCB0aGUgdGVzdCBpZiBpdCBkb2Vzbid0CisgICAgZXhpc3QuICBTZXRzIGNsaWVudF9za2lwIGF0dHJpYnV0ZSBhcyBza2lwV2l0aENsaWVudElmKCkgZG9lcy4KKyAgICAiIiIKKyAgICBlcnIgPSBOb25lCisgICAgbWlzc2luZyA9IFtvYmogZm9yIG9iaiBpbiBhcmdzIGlmCisgICAgICAgICAgICAgICBpc2luc3RhbmNlKG9iaiwgc3RyKSBhbmQgbm90IGhhc2F0dHIoc29ja2V0LCBvYmopXQorICAgIGlmIG1pc3Npbmc6CisgICAgICAgIGVyciA9ICJkb24ndCBoYXZlICIgKyAiLCAiLmpvaW4obmFtZSBmb3IgbmFtZSBpbiBtaXNzaW5nKQorICAgIGVsc2U6CisgICAgICAgIGNhbGxhcmdzID0gW2dldGF0dHIoc29ja2V0LCBvYmopIGlmIGlzaW5zdGFuY2Uob2JqLCBzdHIpIGVsc2Ugb2JqCisgICAgICAgICAgICAgICAgICAgIGZvciBvYmogaW4gYXJnc10KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKmNhbGxhcmdzKQorICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGU6CisgICAgICAgICAgICAjIFhYWDogY2hlY2sgZXJybm8/CisgICAgICAgICAgICBlcnIgPSBzdHIoZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHMuY2xvc2UoKQorICAgIHJldHVybiBza2lwV2l0aENsaWVudElmKAorICAgICAgICBlcnIgaXMgbm90IE5vbmUsCisgICAgICAgICJjYW4ndCBjcmVhdGUgc29ja2V0KHswfSk6IHsxfSIuZm9ybWF0KAorICAgICAgICAgICAgIiwgIi5qb2luKHN0cihvKSBmb3IgbyBpbiBhcmdzKSwgZXJyKSkKKworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMgQmVnaW4gVGVzdHMKIApAQCAtMjgzLDE4ICs2NDQsMTMgQEAKIAogICAgIGRlZiB0ZXN0U29ja2V0RXJyb3Ioc2VsZik6CiAgICAgICAgICMgVGVzdGluZyBzb2NrZXQgbW9kdWxlIGV4Y2VwdGlvbnMKLSAgICAgICAgZGVmIHJhaXNlX2Vycm9yKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIG1zZyA9ICJFcnJvciByYWlzaW5nIHNvY2tldCBleGNlcHRpb24gKCVzKS4iCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBtc2c9bXNnICUgJ3NvY2tldC5lcnJvcicpOgogICAgICAgICAgICAgcmFpc2Ugc29ja2V0LmVycm9yCi0gICAgICAgIGRlZiByYWlzZV9oZXJyb3IoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIG1zZz1tc2cgJSAnc29ja2V0LmhlcnJvcicpOgogICAgICAgICAgICAgcmFpc2Ugc29ja2V0LmhlcnJvcgotICAgICAgICBkZWYgcmFpc2VfZ2FpZXJyb3IoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIG1zZz1tc2cgJSAnc29ja2V0LmdhaWVycm9yJyk6CiAgICAgICAgICAgICByYWlzZSBzb2NrZXQuZ2FpZXJyb3IKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCByYWlzZV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciByYWlzaW5nIHNvY2tldCBleGNlcHRpb24uIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCByYWlzZV9oZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3IgcmFpc2luZyBzb2NrZXQgZXhjZXB0aW9uLiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgcmFpc2VfZ2FpZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3IgcmFpc2luZyBzb2NrZXQgZXhjZXB0aW9uLiIpCiAKICAgICBkZWYgdGVzdFNlbmR0b0Vycm9ycyhzZWxmKToKICAgICAgICAgIyBUZXN0aW5nIHRoYXQgc2VuZHRvIGRvZW5zJ3QgbWFza3MgZmFpbHVyZXMuIFNlZSAjMTAxNjkuCkBAIC0zNzAsNiArNzI2LDUyIEBACiAgICAgICAgIGlmIG5vdCBmcWhuIGluIGFsbF9ob3N0X25hbWVzOgogICAgICAgICAgICAgc2VsZi5mYWlsKCJFcnJvciB0ZXN0aW5nIGhvc3QgcmVzb2x1dGlvbiBtZWNoYW5pc21zLiAoZnFkbjogJXMsIGFsbDogJXMpIiAlIChmcWhuLCByZXByKGFsbF9ob3N0X25hbWVzKSkpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNvY2tldCwgJ3NldGhvc3RuYW1lJyksICJ0ZXN0IG5lZWRzIHNvY2tldC5zZXRob3N0bmFtZSgpIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNvY2tldCwgJ2dldGhvc3RuYW1lJyksICJ0ZXN0IG5lZWRzIHNvY2tldC5nZXRob3N0bmFtZSgpIikKKyAgICBkZWYgdGVzdF9zZXRob3N0bmFtZShzZWxmKToKKyAgICAgICAgb2xkaG4gPSBzb2NrZXQuZ2V0aG9zdG5hbWUoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzb2NrZXQuc2V0aG9zdG5hbWUoJ25ldycpCisgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRVBFUk06CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgidGVzdCBzaG91bGQgYmUgcnVuIGFzIHJvb3QiKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIHJ1bm5pbmcgdGVzdCBhcyByb290IQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb2NrZXQuZ2V0aG9zdG5hbWUoKSwgJ25ldycpCisgICAgICAgICAgICAjIFNob3VsZCB3b3JrIHdpdGggYnl0ZXMgb2JqZWN0cyB0b28KKyAgICAgICAgICAgIHNvY2tldC5zZXRob3N0bmFtZShiJ2JhcicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvY2tldC5nZXRob3N0bmFtZSgpLCAnYmFyJykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNvY2tldC5zZXRob3N0bmFtZShvbGRobikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAnaWZfbmFtZWluZGV4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvY2tldC5pZl9uYW1laW5kZXgoKSBub3QgYXZhaWxhYmxlLicpCisgICAgZGVmIHRlc3RJbnRlcmZhY2VOYW1lSW5kZXgoc2VsZik6CisgICAgICAgIGludGVyZmFjZXMgPSBzb2NrZXQuaWZfbmFtZWluZGV4KCkKKyAgICAgICAgZm9yIGluZGV4LCBuYW1lIGluIGludGVyZmFjZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5kZXgsIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShuYW1lLCBzdHIpCisgICAgICAgICAgICAjIGludGVyZmFjZSBpbmRpY2VzIGFyZSBub24temVybyBpbnRlZ2VycworICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGluZGV4LCAwKQorICAgICAgICAgICAgX2luZGV4ID0gc29ja2V0LmlmX25hbWV0b2luZGV4KG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoX2luZGV4LCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZGV4LCBfaW5kZXgpCisgICAgICAgICAgICBfbmFtZSA9IHNvY2tldC5pZl9pbmRleHRvbmFtZShpbmRleCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShfbmFtZSwgc3RyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lLCBfbmFtZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAnaWZfbmFtZWluZGV4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvY2tldC5pZl9uYW1laW5kZXgoKSBub3QgYXZhaWxhYmxlLicpCisgICAgZGVmIHRlc3RJbnZhbGlkSW50ZXJmYWNlTmFtZUluZGV4KHNlbGYpOgorICAgICAgICAjIHRlc3Qgbm9uZXhpc3RlbnQgaW50ZXJmYWNlIGluZGV4L25hbWUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzb2NrZXQuaWZfaW5kZXh0b25hbWUsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc29ja2V0LmlmX25hbWV0b2luZGV4LCAnX0RFQURCRUVGJykKKyAgICAgICAgIyB0ZXN0IHdpdGggaW52YWxpZCB2YWx1ZXMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzb2NrZXQuaWZfbmFtZXRvaW5kZXgsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc29ja2V0LmlmX2luZGV4dG9uYW1lLCAnX0RFQURCRUVGJykKKwogICAgIGRlZiB0ZXN0UmVmQ291bnRHZXROYW1lSW5mbyhzZWxmKToKICAgICAgICAgIyBUZXN0aW5nIHJlZmVyZW5jZSBjb3VudCBmb3IgZ2V0bmFtZWluZm8KICAgICAgICAgaWYgaGFzYXR0cihzeXMsICJnZXRyZWZjb3VudCIpOgpAQCAtNDIyLDEwICs4MjQsOCBAQAogICAgICAgICAjIEZpbmQgb25lIHNlcnZpY2UgdGhhdCBleGlzdHMsIHRoZW4gY2hlY2sgYWxsIHRoZSByZWxhdGVkIGludGVyZmFjZXMuCiAgICAgICAgICMgSSd2ZSBvcmRlcmVkIHRoaXMgYnkgcHJvdG9jb2xzIHRoYXQgaGF2ZSBib3RoIGEgdGNwIGFuZCB1ZHAKICAgICAgICAgIyBwcm90b2NvbCwgYXQgbGVhc3QgZm9yIG1vZGVybiBMaW51eGVzLgotICAgICAgICBpZiAoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jykgb3IKLSAgICAgICAgICAgIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdmcmVlYnNkJykgb3IKLSAgICAgICAgICAgIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCduZXRic2QnKSBvcgotICAgICAgICAgICAgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nKToKKyAgICAgICAgaWYgKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCgnZnJlZWJzZCcsICduZXRic2QnKSkKKyAgICAgICAgICAgIG9yIHN5cy5wbGF0Zm9ybSBpbiAoJ2xpbnV4JywgJ2RhcndpbicpKToKICAgICAgICAgICAgICMgYXZvaWQgdGhlICdlY2hvJyBzZXJ2aWNlIG9uIHRoaXMgcGxhdGZvcm0sIGFzIHRoZXJlIGlzIGFuCiAgICAgICAgICAgICAjIGFzc3VtcHRpb24gYnJlYWtpbmcgbm9uLXN0YW5kYXJkIHBvcnQvcHJvdG9jb2wgZW50cnkKICAgICAgICAgICAgIHNlcnZpY2VzID0gKCdkYXl0aW1lJywgJ3FvdGQnLCAnZG9tYWluJykKQEAgLTcyMCw3ICsxMTIwLDcgQEAKICAgICAgICAgc29ja2V0LmdldGFkZHJpbmZvKCdsb2NhbGhvc3QnLCA4MCkKICAgICAgICAgc29ja2V0LmdldGFkZHJpbmZvKCcxMjcuMC4wLjEnLCA4MCkKICAgICAgICAgc29ja2V0LmdldGFkZHJpbmZvKE5vbmUsIDgwKQotICAgICAgICBpZiBTVVBQT1JUU19JUFY2OgorICAgICAgICBpZiBzdXBwb3J0LklQVjZfRU5BQkxFRDoKICAgICAgICAgICAgIHNvY2tldC5nZXRhZGRyaW5mbygnOjoxJywgODApCiAgICAgICAgICMgcG9ydCBjYW4gYmUgYSBzdHJpbmcgc2VydmljZSBuYW1lIHN1Y2ggYXMgImh0dHAiLCBhIG51bWVyaWMKICAgICAgICAgIyBwb3J0IG51bWJlciBvciBOb25lCkBAIC03NzMsNyArMTE3MywxMiBAQAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuaXNfcmVzb3VyY2VfZW5hYmxlZCgnbmV0d29yaycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICduZXR3b3JrIGlzIG5vdCBlbmFibGVkJykKICAgICBkZWYgdGVzdF9pZG5hKHNlbGYpOgotICAgICAgICBzdXBwb3J0LnJlcXVpcmVzKCduZXR3b3JrJykKKyAgICAgICAgIyBDaGVjayBmb3IgaW50ZXJuZXQgYWNjZXNzIGJlZm9yZSBydW5uaW5nIHRlc3QgKGlzc3VlICMxMjgwNCkuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNvY2tldC5nZXRob3N0YnluYW1lKCdweXRob24ub3JnJykKKyAgICAgICAgZXhjZXB0IHNvY2tldC5nYWllcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBzb2NrZXQuRUFJX05PREFUQToKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdpbnRlcm5ldCBhY2Nlc3MgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdCcpCiAgICAgICAgICMgdGhlc2Ugc2hvdWxkIGFsbCBiZSBzdWNjZXNzZnVsCiAgICAgICAgIHNvY2tldC5nZXRob3N0YnluYW1lKCfQuNGB0L/Ri9GC0LDQvdC40LUucHl0aG9uLm9yZycpCiAgICAgICAgIHNvY2tldC5nZXRob3N0YnluYW1lX2V4KCfQuNGB0L/Ri9GC0LDQvdC40LUucHl0aG9uLm9yZycpCkBAIC04NTEsNiArMTI1NiwxMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnAud3JpdGFibGUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmcC5zZWVrYWJsZSkKIAorICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICB3aXRoIHNvY2s6CisgICAgICAgICAgICBmb3IgcHJvdG9jb2wgaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBpY2tsZS5kdW1wcywgc29jaywgcHJvdG9jb2wpCisKICAgICBkZWYgdGVzdF9saXN0ZW5fYmFja2xvZyhzZWxmKToKICAgICAgICAgZm9yIGJhY2tsb2cgaW4gMCwgLTE6CiAgICAgICAgICAgICBzcnYgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCkBAIC04NjQsNyArMTI3NSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNydi5saXN0ZW4sIF90ZXN0Y2FwaS5JTlRfTUFYICsgMSkKICAgICAgICAgc3J2LmNsb3NlKCkKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFNVUFBPUlRTX0lQVjYsICdJUHY2IHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ0lQdjYgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogICAgIGRlZiB0ZXN0X2Zsb3dpbmZvKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzb2NrZXQuZ2V0bmFtZWluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICgnOjoxJywwLCAweGZmZmZmZmZmKSwgMCkKQEAgLTg3Miw2ICsxMjgzLDIyMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcy5iaW5kLCAoJzo6MScsIDAsIC0xMCkpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9TT0NLRVRfQ0FOLCAnU29ja2V0Q2FuIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIEJhc2ljQ0FOVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdENydWNpYWxDb25zdGFudHMoc2VsZik6CisgICAgICAgIHNvY2tldC5BRl9DQU4KKyAgICAgICAgc29ja2V0LlBGX0NBTgorICAgICAgICBzb2NrZXQuQ0FOX1JBVworCisgICAgZGVmIHRlc3RDcmVhdGVTb2NrZXQoc2VsZik6CisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKSBhcyBzOgorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RCaW5kQW55KHNlbGYpOgorICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX0NBTiwgc29ja2V0LlNPQ0tfUkFXLCBzb2NrZXQuQ0FOX1JBVykgYXMgczoKKyAgICAgICAgICAgIHMuYmluZCgoJycsICkpCisKKyAgICBkZWYgdGVzdFRvb0xvbmdJbnRlcmZhY2VOYW1lKHNlbGYpOgorICAgICAgICAjIG1vc3Qgc3lzdGVtcyBsaW1pdCBJRk5BTVNJWiB0byAxNiwgdGFrZSAxMDI0IHRvIGJlIHN1cmUKKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpIGFzIHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNvY2tldC5lcnJvciwgJ2ludGVyZmFjZSBuYW1lIHRvbyBsb25nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5iaW5kLCAoJ3gnICogMTAyNCwpKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICJDQU5fUkFXX0xPT1BCQUNLIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvY2tldC5DQU5fUkFXX0xPT1BCQUNLIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKKyAgICBkZWYgdGVzdExvb3BiYWNrKHNlbGYpOgorICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX0NBTiwgc29ja2V0LlNPQ0tfUkFXLCBzb2NrZXQuQ0FOX1JBVykgYXMgczoKKyAgICAgICAgICAgIGZvciBsb29wYmFjayBpbiAoMCwgMSk6CisgICAgICAgICAgICAgICAgcy5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfQ0FOX1JBVywgc29ja2V0LkNBTl9SQVdfTE9PUEJBQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BiYWNrKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9vcGJhY2ssCisgICAgICAgICAgICAgICAgICAgIHMuZ2V0c29ja29wdChzb2NrZXQuU09MX0NBTl9SQVcsIHNvY2tldC5DQU5fUkFXX0xPT1BCQUNLKSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAiQ0FOX1JBV19GSUxURVIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc29ja2V0LkNBTl9SQVdfRklMVEVSIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKKyAgICBkZWYgdGVzdEZpbHRlcihzZWxmKToKKyAgICAgICAgY2FuX2lkLCBjYW5fbWFzayA9IDB4MjAwLCAweDcwMAorICAgICAgICBjYW5fZmlsdGVyID0gc3RydWN0LnBhY2soIj1JSSIsIGNhbl9pZCwgY2FuX21hc2spCisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKSBhcyBzOgorICAgICAgICAgICAgcy5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfQ0FOX1JBVywgc29ja2V0LkNBTl9SQVdfRklMVEVSLCBjYW5fZmlsdGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYW5fZmlsdGVyLAorICAgICAgICAgICAgICAgICAgICBzLmdldHNvY2tvcHQoc29ja2V0LlNPTF9DQU5fUkFXLCBzb2NrZXQuQ0FOX1JBV19GSUxURVIsIDgpKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKEhBVkVfU09DS0VUX0NBTiwgJ1NvY2tldENhbiByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgQ0FOVGVzdChUaHJlYWRlZENBTlNvY2tldFRlc3QpOgorCisgICAgIiIiVGhlIENBTiBmcmFtZSBzdHJ1Y3R1cmUgaXMgZGVmaW5lZCBpbiA8bGludXgvY2FuLmg+OgorCisgICAgc3RydWN0IGNhbl9mcmFtZSB7CisgICAgICAgIGNhbmlkX3QgY2FuX2lkOyAgLyogMzIgYml0IENBTl9JRCArIEVGRi9SVFIvRVJSIGZsYWdzICovCisgICAgICAgIF9fdTggICAgY2FuX2RsYzsgLyogZGF0YSBsZW5ndGggY29kZTogMCAuLiA4ICovCisgICAgICAgIF9fdTggICAgZGF0YVs4XSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSk7CisgICAgfTsKKyAgICAiIiIKKyAgICBjYW5fZnJhbWVfZm10ID0gIj1JQjN4OHMiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0aG9kTmFtZT0ncnVuVGVzdCcpOgorICAgICAgICBUaHJlYWRlZENBTlNvY2tldFRlc3QuX19pbml0X18oc2VsZiwgbWV0aG9kTmFtZT1tZXRob2ROYW1lKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGJ1aWxkX2Nhbl9mcmFtZShjbHMsIGNhbl9pZCwgZGF0YSk6CisgICAgICAgICIiIkJ1aWxkIGEgQ0FOIGZyYW1lLiIiIgorICAgICAgICBjYW5fZGxjID0gbGVuKGRhdGEpCisgICAgICAgIGRhdGEgPSBkYXRhLmxqdXN0KDgsIGInXHgwMCcpCisgICAgICAgIHJldHVybiBzdHJ1Y3QucGFjayhjbHMuY2FuX2ZyYW1lX2ZtdCwgY2FuX2lkLCBjYW5fZGxjLCBkYXRhKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRpc3NlY3RfY2FuX2ZyYW1lKGNscywgZnJhbWUpOgorICAgICAgICAiIiJEaXNzZWN0IGEgQ0FOIGZyYW1lLiIiIgorICAgICAgICBjYW5faWQsIGNhbl9kbGMsIGRhdGEgPSBzdHJ1Y3QudW5wYWNrKGNscy5jYW5fZnJhbWVfZm10LCBmcmFtZSkKKyAgICAgICAgcmV0dXJuIChjYW5faWQsIGNhbl9kbGMsIGRhdGFbOmNhbl9kbGNdKQorCisgICAgZGVmIHRlc3RTZW5kRnJhbWUoc2VsZik6CisgICAgICAgIGNmLCBhZGRyID0gc2VsZi5zLnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNmLCBjZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyWzBdLCBzZWxmLmludGVyZmFjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyWzFdLCBzb2NrZXQuQUZfQ0FOKQorCisgICAgZGVmIF90ZXN0U2VuZEZyYW1lKHNlbGYpOgorICAgICAgICBzZWxmLmNmID0gc2VsZi5idWlsZF9jYW5fZnJhbWUoMHgwMCwgYidceDAxXHgwMlx4MDNceDA0XHgwNScpCisgICAgICAgIHNlbGYuY2xpLnNlbmQoc2VsZi5jZikKKworICAgIGRlZiB0ZXN0U2VuZE1heEZyYW1lKHNlbGYpOgorICAgICAgICBjZiwgYWRkciA9IHNlbGYucy5yZWN2ZnJvbShzZWxmLmJ1ZnNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jZiwgY2YpCisKKyAgICBkZWYgX3Rlc3RTZW5kTWF4RnJhbWUoc2VsZik6CisgICAgICAgIHNlbGYuY2YgPSBzZWxmLmJ1aWxkX2Nhbl9mcmFtZSgweDAwLCBiJ1x4MDcnICogOCkKKyAgICAgICAgc2VsZi5jbGkuc2VuZChzZWxmLmNmKQorCisgICAgZGVmIHRlc3RTZW5kTXVsdGlGcmFtZXMoc2VsZik6CisgICAgICAgIGNmLCBhZGRyID0gc2VsZi5zLnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNmMSwgY2YpCisKKyAgICAgICAgY2YsIGFkZHIgPSBzZWxmLnMucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2YyLCBjZikKKworICAgIGRlZiBfdGVzdFNlbmRNdWx0aUZyYW1lcyhzZWxmKToKKyAgICAgICAgc2VsZi5jZjEgPSBzZWxmLmJ1aWxkX2Nhbl9mcmFtZSgweDA3LCBiJ1x4NDRceDMzXHgyMlx4MTEnKQorICAgICAgICBzZWxmLmNsaS5zZW5kKHNlbGYuY2YxKQorCisgICAgICAgIHNlbGYuY2YyID0gc2VsZi5idWlsZF9jYW5fZnJhbWUoMHgxMiwgYidceDk5XHgyMlx4MzMnKQorICAgICAgICBzZWxmLmNsaS5zZW5kKHNlbGYuY2YyKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKEhBVkVfU09DS0VUX1JEUywgJ1JEUyBzb2NrZXRzIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIEJhc2ljUkRTVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdENydWNpYWxDb25zdGFudHMoc2VsZik6CisgICAgICAgIHNvY2tldC5BRl9SRFMKKyAgICAgICAgc29ja2V0LlBGX1JEUworCisgICAgZGVmIHRlc3RDcmVhdGVTb2NrZXQoc2VsZik6CisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuUEZfUkRTLCBzb2NrZXQuU09DS19TRVFQQUNLRVQsIDApIGFzIHM6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdFNvY2tldEJ1ZmZlclNpemUoc2VsZik6CisgICAgICAgIGJ1ZnNpemUgPSAxNjM4NAorICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX1JEUywgc29ja2V0LlNPQ0tfU0VRUEFDS0VULCAwKSBhcyBzOgorICAgICAgICAgICAgcy5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fUkNWQlVGLCBidWZzaXplKQorICAgICAgICAgICAgcy5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fU05EQlVGLCBidWZzaXplKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKEhBVkVfU09DS0VUX1JEUywgJ1JEUyBzb2NrZXRzIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSRFNUZXN0KFRocmVhZGVkUkRTU29ja2V0VGVzdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0aG9kTmFtZT0ncnVuVGVzdCcpOgorICAgICAgICBUaHJlYWRlZFJEU1NvY2tldFRlc3QuX19pbml0X18oc2VsZiwgbWV0aG9kTmFtZT1tZXRob2ROYW1lKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKyAgICAgICAgc2VsZi5ldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQorCisgICAgZGVmIHRlc3RTZW5kQW5kUmVjdihzZWxmKToKKyAgICAgICAgZGF0YSwgYWRkciA9IHNlbGYuc2Vydi5yZWN2ZnJvbShzZWxmLmJ1ZnNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYXRhLCBkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2xpX2FkZHIsIGFkZHIpCisKKyAgICBkZWYgX3Rlc3RTZW5kQW5kUmVjdihzZWxmKToKKyAgICAgICAgc2VsZi5kYXRhID0gYidzcGFtJworICAgICAgICBzZWxmLmNsaS5zZW5kdG8oc2VsZi5kYXRhLCAwLCAoSE9TVCwgc2VsZi5wb3J0KSkKKworICAgIGRlZiB0ZXN0UGVlayhzZWxmKToKKyAgICAgICAgZGF0YSwgYWRkciA9IHNlbGYuc2Vydi5yZWN2ZnJvbShzZWxmLmJ1ZnNpemUsIHNvY2tldC5NU0dfUEVFSykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRhdGEsIGRhdGEpCisgICAgICAgIGRhdGEsIGFkZHIgPSBzZWxmLnNlcnYucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGF0YSwgZGF0YSkKKworICAgIGRlZiBfdGVzdFBlZWsoc2VsZik6CisgICAgICAgIHNlbGYuZGF0YSA9IGInc3BhbScKKyAgICAgICAgc2VsZi5jbGkuc2VuZHRvKHNlbGYuZGF0YSwgMCwgKEhPU1QsIHNlbGYucG9ydCkpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICdyZWN2bXNnJykKKyAgICBkZWYgdGVzdFNlbmRBbmRSZWN2TXNnKHNlbGYpOgorICAgICAgICBkYXRhLCBhbmNkYXRhLCBtc2dfZmxhZ3MsIGFkZHIgPSBzZWxmLnNlcnYucmVjdm1zZyhzZWxmLmJ1ZnNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYXRhLCBkYXRhKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAnc2VuZG1zZycpCisgICAgZGVmIF90ZXN0U2VuZEFuZFJlY3ZNc2coc2VsZik6CisgICAgICAgIHNlbGYuZGF0YSA9IGInaGVsbG8gJyAqIDEwCisgICAgICAgIHNlbGYuY2xpLnNlbmRtc2coW3NlbGYuZGF0YV0sICgpLCAwLCAoSE9TVCwgc2VsZi5wb3J0KSkKKworICAgIGRlZiB0ZXN0U2VuZEFuZFJlY3ZNdWx0aShzZWxmKToKKyAgICAgICAgZGF0YSwgYWRkciA9IHNlbGYuc2Vydi5yZWN2ZnJvbShzZWxmLmJ1ZnNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYXRhMSwgZGF0YSkKKworICAgICAgICBkYXRhLCBhZGRyID0gc2VsZi5zZXJ2LnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRhdGEyLCBkYXRhKQorCisgICAgZGVmIF90ZXN0U2VuZEFuZFJlY3ZNdWx0aShzZWxmKToKKyAgICAgICAgc2VsZi5kYXRhMSA9IGInYmFjb24nCisgICAgICAgIHNlbGYuY2xpLnNlbmR0byhzZWxmLmRhdGExLCAwLCAoSE9TVCwgc2VsZi5wb3J0KSkKKworICAgICAgICBzZWxmLmRhdGEyID0gYidlZ2cnCisgICAgICAgIHNlbGYuY2xpLnNlbmR0byhzZWxmLmRhdGEyLCAwLCAoSE9TVCwgc2VsZi5wb3J0KSkKKworICAgIGRlZiB0ZXN0U2VsZWN0KHNlbGYpOgorICAgICAgICByLCB3LCB4ID0gc2VsZWN0LnNlbGVjdChbc2VsZi5zZXJ2XSwgW10sIFtdLCAzLjApCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5zZXJ2LCByKQorICAgICAgICBkYXRhLCBhZGRyID0gc2VsZi5zZXJ2LnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRhdGEsIGRhdGEpCisKKyAgICBkZWYgX3Rlc3RTZWxlY3Qoc2VsZik6CisgICAgICAgIHNlbGYuZGF0YSA9IGInc2VsZWN0JworICAgICAgICBzZWxmLmNsaS5zZW5kdG8oc2VsZi5kYXRhLCAwLCAoSE9TVCwgc2VsZi5wb3J0KSkKKworICAgIGRlZiB0ZXN0Q29uZ2VzdGlvbihzZWxmKToKKyAgICAgICAgIyB3YWl0IHVudGlsIHRoZSBzZW5kZXIgaXMgZG9uZQorICAgICAgICBzZWxmLmV2dC53YWl0KCkKKworICAgIGRlZiBfdGVzdENvbmdlc3Rpb24oc2VsZik6CisgICAgICAgICMgdGVzdCB0aGUgYmVoYXZpb3IgaW4gY2FzZSBvZiBjb25nZXN0aW9uCisgICAgICAgIHNlbGYuZGF0YSA9IGInZmlsbCcKKyAgICAgICAgc2VsZi5jbGkuc2V0YmxvY2tpbmcoRmFsc2UpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgdHJ5IHRvIGxvd2VyIHRoZSByZWNlaXZlcidzIHNvY2tldCBidWZmZXIgc2l6ZQorICAgICAgICAgICAgc2VsZi5jbGkuc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX1JDVkJVRiwgMTYzODQpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICMgZmlsbCB0aGUgcmVjZWl2ZXIncyBzb2NrZXQgYnVmZmVyCisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGkuc2VuZHRvKHNlbGYuZGF0YSwgMCwgKEhPU1QsIHNlbGYucG9ydCkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICMgc2lnbmFsIHRoZSByZWNlaXZlciB3ZSdyZSBkb25lCisgICAgICAgICAgICAgICAgc2VsZi5ldnQuc2V0KCkKKyAgICAgICAgIyBzZW5kdG8oKSBzaG91bGQgaGF2ZSBmYWlsZWQgd2l0aCBFTk9CVUZTCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9CVUZTKQorICAgICAgICAjIGFuZCB3ZSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvbmdlc3Rpb24gbm90aWZpY2F0aW9uIHRocm91Z2ggcG9sbAorICAgICAgICByLCB3LCB4ID0gc2VsZWN0LnNlbGVjdChbc2VsZi5zZXJ2XSwgW10sIFtdLCAzLjApCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5zZXJ2LCByKQorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiBjbGFzcyBCYXNpY1RDUFRlc3QoU29ja2V0Q29ubmVjdGVkVGVzdCk6CiAKQEAgLTEwMTYsNiArMTY0MywxODY2IEBACiAgICAgZGVmIF90ZXN0UmVjdkZyb21OZWdhdGl2ZShzZWxmKToKICAgICAgICAgc2VsZi5jbGkuc2VuZHRvKE1TRywgMCwgKEhPU1QsIHNlbGYucG9ydCkpCiAKKyMgVGVzdHMgZm9yIHRoZSBzZW5kbXNnKCkvcmVjdm1zZygpIGludGVyZmFjZS4gIFdoZXJlIHBvc3NpYmxlLCB0aGUKKyMgc2FtZSB0ZXN0IGNvZGUgaXMgdXNlZCB3aXRoIGRpZmZlcmVudCBmYW1pbGllcyBhbmQgdHlwZXMgb2Ygc29ja2V0CisjIChlLmcuIHN0cmVhbSwgZGF0YWdyYW0pLCBhbmQgdGVzdHMgdXNpbmcgcmVjdm1zZygpIGFyZSByZXBlYXRlZAorIyB1c2luZyByZWN2bXNnX2ludG8oKS4KKyMKKyMgVGhlIGdlbmVyaWMgdGVzdCBjbGFzc2VzIHN1Y2ggYXMgU2VuZG1zZ1Rlc3RzIGFuZAorIyBSZWN2bXNnR2VuZXJpY1Rlc3RzIGluaGVyaXQgZnJvbSBTZW5kcmVjdm1zZ0Jhc2UgYW5kIGV4cGVjdCB0byBiZQorIyBzdXBwbGllZCB3aXRoIHNvY2tldHMgY2xpX3NvY2sgYW5kIHNlcnZfc29jayByZXByZXNlbnRpbmcgdGhlCisjIGNsaWVudCdzIGFuZCB0aGUgc2VydmVyJ3MgZW5kIG9mIHRoZSBjb25uZWN0aW9uIHJlc3BlY3RpdmVseSwgYW5kCisjIGF0dHJpYnV0ZXMgY2xpX2FkZHIgYW5kIHNlcnZfYWRkciBob2xkaW5nIHRoZWlyIChudW1lcmljIHdoZXJlCisjIGFwcHJvcHJpYXRlKSBhZGRyZXNzZXMuCisjCisjIFRoZSBmaW5hbCBjb25jcmV0ZSB0ZXN0IGNsYXNzZXMgY29tYmluZSB0aGVzZSB3aXRoIHN1YmNsYXNzZXMgb2YKKyMgU29ja2V0VGVzdEJhc2Ugd2hpY2ggc2V0IHVwIGNsaWVudCBhbmQgc2VydmVyIHNvY2tldHMgb2YgYSBzcGVjaWZpYworIyB0eXBlLCBhbmQgd2l0aCBzdWJjbGFzc2VzIG9mIFNlbmRyZWN2bXNnQmFzZSBzdWNoIGFzCisjIFNlbmRyZWN2bXNnRGdyYW1CYXNlIGFuZCBTZW5kcmVjdm1zZ0Nvbm5lY3RlZEJhc2Ugd2hpY2ggbWFwIHRoZXNlCisjIHNvY2tldHMgdG8gY2xpX3NvY2sgYW5kIHNlcnZfc29jayBhbmQgb3ZlcnJpZGUgdGhlIG1ldGhvZHMgYW5kCisjIGF0dHJpYnV0ZXMgb2YgU2VuZHJlY3Ztc2dCYXNlIHRvIGZpbGwgaW4gZGVzdGluYXRpb24gYWRkcmVzc2VzIGlmCisjIG5lZWRlZCB3aGVuIHNlbmRpbmcsIGNoZWNrIGZvciBzcGVjaWZpYyBmbGFncyBpbiBtc2dfZmxhZ3MsIGV0Yy4KKyMKKyMgUmVjdm1zZ0ludG9NaXhpbiBwcm92aWRlcyBhIHZlcnNpb24gb2YgZG9SZWN2bXNnKCkgaW1wbGVtZW50ZWQgdXNpbmcKKyMgcmVjdm1zZ19pbnRvKCkuCisKKyMgWFhYOiBsaWtlIHRoZSBvdGhlciBkYXRhZ3JhbSAoVURQKSB0ZXN0cyBpbiB0aGlzIG1vZHVsZSwgdGhlIGNvZGUKKyMgaGVyZSBhc3N1bWVzIHRoYXQgZGF0YWdyYW0gZGVsaXZlcnkgb24gdGhlIGxvY2FsIG1hY2hpbmUgd2lsbCBiZQorIyByZWxpYWJsZS4KKworY2xhc3MgU2VuZHJlY3Ztc2dCYXNlKFRocmVhZFNhZmVDbGVhbnVwVGVzdENhc2UpOgorICAgICMgQmFzZSBjbGFzcyBmb3Igc2VuZG1zZygpL3JlY3Ztc2coKSB0ZXN0cy4KKworICAgICMgVGltZSBpbiBzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIGNvbnNpZGVyaW5nIGEgdGVzdCBmYWlsZWQsIG9yCisgICAgIyBOb25lIGZvciBubyB0aW1lb3V0LiAgTm90IGFsbCB0ZXN0cyBhY3R1YWxseSBzZXQgYSB0aW1lb3V0LgorICAgIGZhaWxfdGltZW91dCA9IDMuMAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLm1pc2NfZXZlbnQgPSB0aHJlYWRpbmcuRXZlbnQoKQorICAgICAgICBzdXBlcigpLnNldFVwKCkKKworICAgIGRlZiBzZW5kVG9TZXJ2ZXIoc2VsZiwgbXNnKToKKyAgICAgICAgIyBTZW5kIG1zZyB0byB0aGUgc2VydmVyLgorICAgICAgICByZXR1cm4gc2VsZi5jbGlfc29jay5zZW5kKG1zZykKKworICAgICMgVHVwbGUgb2YgYWx0ZXJuYXRpdmUgZGVmYXVsdCBhcmd1bWVudHMgZm9yIHNlbmRtc2coKSB3aGVuIGNhbGxlZAorICAgICMgdmlhIHNlbmRtc2dUb1NlcnZlcigpIChlLmcuIHRvIGluY2x1ZGUgYSBkZXN0aW5hdGlvbiBhZGRyZXNzKS4KKyAgICBzZW5kbXNnX3RvX3NlcnZlcl9kZWZhdWx0cyA9ICgpCisKKyAgICBkZWYgc2VuZG1zZ1RvU2VydmVyKHNlbGYsICphcmdzKToKKyAgICAgICAgIyBDYWxsIHNlbmRtc2coKSBvbiBzZWxmLmNsaV9zb2NrIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cywKKyAgICAgICAgIyBmaWxsaW5nIGluIGFueSBhcmd1bWVudHMgd2hpY2ggYXJlIG5vdCBzdXBwbGllZCB3aXRoIHRoZQorICAgICAgICAjIGNvcnJlc3BvbmRpbmcgaXRlbXMgb2Ygc2VsZi5zZW5kbXNnX3RvX3NlcnZlcl9kZWZhdWx0cywgaWYKKyAgICAgICAgIyBhbnkuCisgICAgICAgIHJldHVybiBzZWxmLmNsaV9zb2NrLnNlbmRtc2coCisgICAgICAgICAgICAqKGFyZ3MgKyBzZWxmLnNlbmRtc2dfdG9fc2VydmVyX2RlZmF1bHRzW2xlbihhcmdzKTpdKSkKKworICAgIGRlZiBkb1JlY3Ztc2coc2VsZiwgc29jaywgYnVmc2l6ZSwgKmFyZ3MpOgorICAgICAgICAjIENhbGwgcmVjdm1zZygpIG9uIHNvY2sgd2l0aCBnaXZlbiBhcmd1bWVudHMgYW5kIHJldHVybiBpdHMKKyAgICAgICAgIyByZXN1bHQuICBTaG91bGQgYmUgdXNlZCBmb3IgdGVzdHMgd2hpY2ggY2FuIHVzZSBlaXRoZXIKKyAgICAgICAgIyByZWN2bXNnKCkgb3IgcmVjdm1zZ19pbnRvKCkgLSBSZWN2bXNnSW50b01peGluIG92ZXJyaWRlcworICAgICAgICAjIHRoaXMgbWV0aG9kIHdpdGggb25lIHdoaWNoIGVtdWxhdGVzIGl0IHVzaW5nIHJlY3Ztc2dfaW50bygpLAorICAgICAgICAjIHRodXMgYWxsb3dpbmcgdGhlIHNhbWUgdGVzdCB0byBiZSB1c2VkIGZvciBib3RoIG1ldGhvZHMuCisgICAgICAgIHJlc3VsdCA9IHNvY2sucmVjdm1zZyhidWZzaXplLCAqYXJncykKKyAgICAgICAgc2VsZi5yZWdpc3RlclJlY3Ztc2dSZXN1bHQocmVzdWx0KQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgcmVnaXN0ZXJSZWN2bXNnUmVzdWx0KHNlbGYsIHJlc3VsdCk6CisgICAgICAgICMgQ2FsbGVkIGJ5IGRvUmVjdm1zZygpIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiByZWN2bXNnKCkgb3IKKyAgICAgICAgIyByZWN2bXNnX2ludG8oKS4gIENhbiBiZSBvdmVycmlkZGVuIHRvIGFycmFuZ2UgY2xlYW51cCBiYXNlZAorICAgICAgICAjIG9uIHRoZSByZXR1cm5lZCBhbmNpbGxhcnkgZGF0YSwgZm9yIGluc3RhbmNlLgorICAgICAgICBwYXNzCisKKyAgICBkZWYgY2hlY2tSZWN2bXNnQWRkcmVzcyhzZWxmLCBhZGRyMSwgYWRkcjIpOgorICAgICAgICAjIENhbGxlZCB0byBjb21wYXJlIHRoZSByZWNlaXZlZCBhZGRyZXNzIHdpdGggdGhlIGFkZHJlc3Mgb2YKKyAgICAgICAgIyB0aGUgcGVlci4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyMSwgYWRkcjIpCisKKyAgICAjIEZsYWdzIHRoYXQgYXJlIG5vcm1hbGx5IHVuc2V0IGluIG1zZ19mbGFncworICAgIG1zZ19mbGFnc19jb21tb25fdW5zZXQgPSAwCisgICAgZm9yIG5hbWUgaW4gKCJNU0dfQ1RSVU5DIiwgIk1TR19PT0IiKToKKyAgICAgICAgbXNnX2ZsYWdzX2NvbW1vbl91bnNldCB8PSBnZXRhdHRyKHNvY2tldCwgbmFtZSwgMCkKKworICAgICMgRmxhZ3MgdGhhdCBhcmUgbm9ybWFsbHkgc2V0CisgICAgbXNnX2ZsYWdzX2NvbW1vbl9zZXQgPSAwCisKKyAgICAjIEZsYWdzIHNldCB3aGVuIGEgY29tcGxldGUgcmVjb3JkIGhhcyBiZWVuIHJlY2VpdmVkIChlLmcuIE1TR19FT1IKKyAgICAjIGZvciBTQ1RQKQorICAgIG1zZ19mbGFnc19lb3JfaW5kaWNhdG9yID0gMAorCisgICAgIyBGbGFncyBzZXQgd2hlbiBhIGNvbXBsZXRlIHJlY29yZCBoYXMgbm90IGJlZW4gcmVjZWl2ZWQKKyAgICAjIChlLmcuIE1TR19UUlVOQyBmb3IgZGF0YWdyYW0gc29ja2V0cykKKyAgICBtc2dfZmxhZ3Nfbm9uX2Vvcl9pbmRpY2F0b3IgPSAwCisKKyAgICBkZWYgY2hlY2tGbGFncyhzZWxmLCBmbGFncywgZW9yPU5vbmUsIGNoZWNrc2V0PTAsIGNoZWNrdW5zZXQ9MCwgaWdub3JlPTApOgorICAgICAgICAjIE1ldGhvZCB0byBjaGVjayB0aGUgdmFsdWUgb2YgbXNnX2ZsYWdzIHJldHVybmVkIGJ5IHJlY3Ztc2dbX2ludG9dKCkuCisgICAgICAgICMKKyAgICAgICAgIyBDaGVja3MgdGhhdCBhbGwgYml0cyBpbiBtc2dfZmxhZ3NfY29tbW9uX3NldCBhdHRyaWJ1dGUgYXJlCisgICAgICAgICMgc2V0IGluICJmbGFncyIgYW5kIGFsbCBiaXRzIGluIG1zZ19mbGFnc19jb21tb25fdW5zZXQgYXJlCisgICAgICAgICMgdW5zZXQuCisgICAgICAgICMKKyAgICAgICAgIyBUaGUgImVvciIgYXJndW1lbnQgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIGZsYWdzIHNob3VsZAorICAgICAgICAjIGluZGljYXRlIHRoYXQgYSBmdWxsIHJlY29yZCAob3IgZGF0YWdyYW0pIGhhcyBiZWVuIHJlY2VpdmVkLgorICAgICAgICAjIElmICJlb3IiIGlzIE5vbmUsIG5vIGNoZWNrcyBhcmUgZG9uZTsgb3RoZXJ3aXNlLCBjaGVja3MKKyAgICAgICAgIyB0aGF0OgorICAgICAgICAjCisgICAgICAgICMgICogaWYgImVvciIgaXMgdHJ1ZSwgYWxsIGJpdHMgaW4gbXNnX2ZsYWdzX2Vvcl9pbmRpY2F0b3IgYXJlCisgICAgICAgICMgICAgc2V0IGFuZCBhbGwgYml0cyBpbiBtc2dfZmxhZ3Nfbm9uX2Vvcl9pbmRpY2F0b3IgYXJlIHVuc2V0CisgICAgICAgICMKKyAgICAgICAgIyAgKiBpZiAiZW9yIiBpcyBmYWxzZSwgYWxsIGJpdHMgaW4gbXNnX2ZsYWdzX25vbl9lb3JfaW5kaWNhdG9yCisgICAgICAgICMgICAgYXJlIHNldCBhbmQgYWxsIGJpdHMgaW4gbXNnX2ZsYWdzX2Vvcl9pbmRpY2F0b3IgYXJlIHVuc2V0CisgICAgICAgICMKKyAgICAgICAgIyBJZiAiY2hlY2tzZXQiIGFuZC9vciAiY2hlY2t1bnNldCIgYXJlIHN1cHBsaWVkLCB0aGV5IHJlcXVpcmUKKyAgICAgICAgIyB0aGUgZ2l2ZW4gYml0cyB0byBiZSBzZXQgb3IgdW5zZXQgcmVzcGVjdGl2ZWx5LCBvdmVycmlkaW5nCisgICAgICAgICMgd2hhdCB0aGUgYXR0cmlidXRlcyByZXF1aXJlIGZvciB0aG9zZSBiaXRzLgorICAgICAgICAjCisgICAgICAgICMgSWYgYW55IGJpdHMgYXJlIHNldCBpbiAiaWdub3JlIiwgdGhleSB3aWxsIG5vdCBiZSBjaGVja2VkLAorICAgICAgICAjIHJlZ2FyZGxlc3Mgb2YgdGhlIG90aGVyIGlucHV0cy4KKyAgICAgICAgIworICAgICAgICAjIFdpbGwgcmFpc2UgRXhjZXB0aW9uIGlmIHRoZSBpbnB1dHMgcmVxdWlyZSBhIGJpdCB0byBiZSBib3RoCisgICAgICAgICMgc2V0IGFuZCB1bnNldCwgYW5kIGl0IGlzIG5vdCBpZ25vcmVkLgorCisgICAgICAgIGRlZmF1bHRzZXQgPSBzZWxmLm1zZ19mbGFnc19jb21tb25fc2V0CisgICAgICAgIGRlZmF1bHR1bnNldCA9IHNlbGYubXNnX2ZsYWdzX2NvbW1vbl91bnNldAorCisgICAgICAgIGlmIGVvcjoKKyAgICAgICAgICAgIGRlZmF1bHRzZXQgfD0gc2VsZi5tc2dfZmxhZ3NfZW9yX2luZGljYXRvcgorICAgICAgICAgICAgZGVmYXVsdHVuc2V0IHw9IHNlbGYubXNnX2ZsYWdzX25vbl9lb3JfaW5kaWNhdG9yCisgICAgICAgIGVsaWYgZW9yIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZGVmYXVsdHNldCB8PSBzZWxmLm1zZ19mbGFnc19ub25fZW9yX2luZGljYXRvcgorICAgICAgICAgICAgZGVmYXVsdHVuc2V0IHw9IHNlbGYubXNnX2ZsYWdzX2Vvcl9pbmRpY2F0b3IKKworICAgICAgICAjIEZ1bmN0aW9uIGFyZ3VtZW50cyBvdmVycmlkZSBkZWZhdWx0cworICAgICAgICBkZWZhdWx0c2V0ICY9IH5jaGVja3Vuc2V0CisgICAgICAgIGRlZmF1bHR1bnNldCAmPSB+Y2hlY2tzZXQKKworICAgICAgICAjIE1lcmdlIGFyZ3VtZW50cyB3aXRoIHJlbWFpbmluZyBkZWZhdWx0cywgYW5kIGNoZWNrIGZvciBjb25mbGljdHMKKyAgICAgICAgY2hlY2tzZXQgfD0gZGVmYXVsdHNldAorICAgICAgICBjaGVja3Vuc2V0IHw9IGRlZmF1bHR1bnNldAorICAgICAgICBpbmJvdGggPSBjaGVja3NldCAmIGNoZWNrdW5zZXQgJiB+aWdub3JlCisgICAgICAgIGlmIGluYm90aDoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiY29udHJhZGljdG9yeSBzZXQsIHVuc2V0IHJlcXVpcmVtZW50cyBmb3IgZmxhZ3MgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7MDojeH0iLmZvcm1hdChpbmJvdGgpKQorCisgICAgICAgICMgQ29tcGFyZSB3aXRoIGdpdmVuIG1zZ19mbGFncyB2YWx1ZQorICAgICAgICBtYXNrID0gKGNoZWNrc2V0IHwgY2hlY2t1bnNldCkgJiB+aWdub3JlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxhZ3MgJiBtYXNrLCBjaGVja3NldCAmIG1hc2spCisKKworY2xhc3MgUmVjdm1zZ0ludG9NaXhpbihTZW5kcmVjdm1zZ0Jhc2UpOgorICAgICMgTWl4aW4gdG8gaW1wbGVtZW50IGRvUmVjdm1zZygpIHVzaW5nIHJlY3Ztc2dfaW50bygpLgorCisgICAgZGVmIGRvUmVjdm1zZyhzZWxmLCBzb2NrLCBidWZzaXplLCAqYXJncyk6CisgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheShidWZzaXplKQorICAgICAgICByZXN1bHQgPSBzb2NrLnJlY3Ztc2dfaW50byhbYnVmXSwgKmFyZ3MpCisgICAgICAgIHNlbGYucmVnaXN0ZXJSZWN2bXNnUmVzdWx0KHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwocmVzdWx0WzBdLCAwKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChyZXN1bHRbMF0sIGJ1ZnNpemUpCisgICAgICAgIHJldHVybiAoYnl0ZXMoYnVmWzpyZXN1bHRbMF1dKSwpICsgcmVzdWx0WzE6XQorCisKK2NsYXNzIFNlbmRyZWN2bXNnRGdyYW1GbGFnc0Jhc2UoU2VuZHJlY3Ztc2dCYXNlKToKKyAgICAjIERlZmluZXMgZmxhZ3MgdG8gYmUgY2hlY2tlZCBpbiBtc2dfZmxhZ3MgZm9yIGRhdGFncmFtIHNvY2tldHMuCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbXNnX2ZsYWdzX25vbl9lb3JfaW5kaWNhdG9yKHNlbGYpOgorICAgICAgICByZXR1cm4gc3VwZXIoKS5tc2dfZmxhZ3Nfbm9uX2Vvcl9pbmRpY2F0b3IgfCBzb2NrZXQuTVNHX1RSVU5DCisKKworY2xhc3MgU2VuZHJlY3Ztc2dTQ1RQRmxhZ3NCYXNlKFNlbmRyZWN2bXNnQmFzZSk6CisgICAgIyBEZWZpbmVzIGZsYWdzIHRvIGJlIGNoZWNrZWQgaW4gbXNnX2ZsYWdzIGZvciBTQ1RQIHNvY2tldHMuCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbXNnX2ZsYWdzX2Vvcl9pbmRpY2F0b3Ioc2VsZik6CisgICAgICAgIHJldHVybiBzdXBlcigpLm1zZ19mbGFnc19lb3JfaW5kaWNhdG9yIHwgc29ja2V0Lk1TR19FT1IKKworCitjbGFzcyBTZW5kcmVjdm1zZ0Nvbm5lY3Rpb25sZXNzQmFzZShTZW5kcmVjdm1zZ0Jhc2UpOgorICAgICMgQmFzZSBjbGFzcyBmb3IgdGVzdHMgb24gY29ubmVjdGlvbmxlc3MtbW9kZSBzb2NrZXRzLiAgVXNlcnMgbXVzdAorICAgICMgc3VwcGx5IHNvY2tldHMgb24gYXR0cmlidXRlcyBjbGkgYW5kIHNlcnYgdG8gYmUgbWFwcGVkIHRvCisgICAgIyBjbGlfc29jayBhbmQgc2Vydl9zb2NrIHJlc3BlY3RpdmVseS4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXJ2X3NvY2soc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnNlcnYKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjbGlfc29jayhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2xpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2VuZG1zZ190b19zZXJ2ZXJfZGVmYXVsdHMoc2VsZik6CisgICAgICAgIHJldHVybiAoW10sIFtdLCAwLCBzZWxmLnNlcnZfYWRkcikKKworICAgIGRlZiBzZW5kVG9TZXJ2ZXIoc2VsZiwgbXNnKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2xpX3NvY2suc2VuZHRvKG1zZywgc2VsZi5zZXJ2X2FkZHIpCisKKworY2xhc3MgU2VuZHJlY3Ztc2dDb25uZWN0ZWRCYXNlKFNlbmRyZWN2bXNnQmFzZSk6CisgICAgIyBCYXNlIGNsYXNzIGZvciB0ZXN0cyBvbiBjb25uZWN0ZWQgc29ja2V0cy4gIFVzZXJzIG11c3Qgc3VwcGx5CisgICAgIyBzb2NrZXRzIG9uIGF0dHJpYnV0ZXMgc2Vydl9jb25uIGFuZCBjbGlfY29ubiAocmVwcmVzZW50aW5nIHRoZQorICAgICMgY29ubmVjdGlvbnMgKnRvKiB0aGUgc2VydmVyIGFuZCB0aGUgY2xpZW50KSwgdG8gYmUgbWFwcGVkIHRvCisgICAgIyBjbGlfc29jayBhbmQgc2Vydl9zb2NrIHJlc3BlY3RpdmVseS4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXJ2X3NvY2soc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmNsaV9jb25uCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY2xpX3NvY2soc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnNlcnZfY29ubgorCisgICAgZGVmIGNoZWNrUmVjdm1zZ0FkZHJlc3Moc2VsZiwgYWRkcjEsIGFkZHIyKToKKyAgICAgICAgIyBBZGRyZXNzIGlzIGN1cnJlbnRseSAidW5zcGVjaWZpZWQiIGZvciBhIGNvbm5lY3RlZCBzb2NrZXQsCisgICAgICAgICMgc28gd2UgZG9uJ3QgZXhhbWluZSBpdAorICAgICAgICBwYXNzCisKKworY2xhc3MgU2VuZHJlY3Ztc2dTZXJ2ZXJUaW1lb3V0QmFzZShTZW5kcmVjdm1zZ0Jhc2UpOgorICAgICMgQmFzZSBjbGFzcyB0byBzZXQgYSB0aW1lb3V0IG9uIHNlcnZlcidzIHNvY2tldC4KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHRpbWVvdXQoc2VsZi5mYWlsX3RpbWVvdXQpCisKKworY2xhc3MgU2VuZG1zZ1Rlc3RzKFNlbmRyZWN2bXNnU2VydmVyVGltZW91dEJhc2UpOgorICAgICMgVGVzdHMgZm9yIHNlbmRtc2coKSB3aGljaCBjYW4gdXNlIGFueSBzb2NrZXQgdHlwZSBhbmQgZG8gbm90CisgICAgIyBpbnZvbHZlIHJlY3Ztc2coKSBvciByZWN2bXNnX2ludG8oKS4KKworICAgIGRlZiB0ZXN0U2VuZG1zZyhzZWxmKToKKyAgICAgICAgIyBTZW5kIGEgc2ltcGxlIG1lc3NhZ2Ugd2l0aCBzZW5kbXNnKCkuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdihsZW4oTVNHKSksIE1TRykKKworICAgIGRlZiBfdGVzdFNlbmRtc2coc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR10pLCBsZW4oTVNHKSkKKworICAgIGRlZiB0ZXN0U2VuZG1zZ0RhdGFHZW5lcmF0b3Ioc2VsZik6CisgICAgICAgICMgU2VuZCBmcm9tIGJ1ZmZlciBvYnRhaW5lZCBmcm9tIGEgZ2VuZXJhdG9yIChub3QgYSBzZXF1ZW5jZSkuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdihsZW4oTVNHKSksIE1TRykKKworICAgIGRlZiBfdGVzdFNlbmRtc2dEYXRhR2VuZXJhdG9yKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VuZG1zZ1RvU2VydmVyKChvIGZvciBvIGluIFtNU0ddKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRykpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dBbmNpbGxhcnlHZW5lcmF0b3Ioc2VsZik6CisgICAgICAgICMgR2F0aGVyIChlbXB0eSkgYW5jaWxsYXJ5IGRhdGEgZnJvbSBhIGdlbmVyYXRvci4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KGxlbihNU0cpKSwgTVNHKQorCisgICAgZGVmIF90ZXN0U2VuZG1zZ0FuY2lsbGFyeUdlbmVyYXRvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlbmRtc2dUb1NlcnZlcihbTVNHXSwgKG8gZm9yIG8gaW4gW10pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSkKKworICAgIGRlZiB0ZXN0U2VuZG1zZ0FycmF5KHNlbGYpOgorICAgICAgICAjIFNlbmQgZGF0YSBmcm9tIGFuIGFycmF5IGluc3RlYWQgb2YgdGhlIHVzdWFsIGJ5dGVzIG9iamVjdC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KGxlbihNU0cpKSwgTVNHKQorCisgICAgZGVmIF90ZXN0U2VuZG1zZ0FycmF5KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VuZG1zZ1RvU2VydmVyKFthcnJheS5hcnJheSgiQiIsIE1TRyldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSkKKworICAgIGRlZiB0ZXN0U2VuZG1zZ0dhdGhlcihzZWxmKToKKyAgICAgICAgIyBTZW5kIG1lc3NhZ2UgZGF0YSBmcm9tIG1vcmUgdGhhbiBvbmUgYnVmZmVyIChnYXRoZXIgd3JpdGUpLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydl9zb2NrLnJlY3YobGVuKE1TRykpLCBNU0cpCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnR2F0aGVyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0dbOjNdLCBNU0dbMzpdXSksIGxlbihNU0cpKQorCisgICAgZGVmIHRlc3RTZW5kbXNnQmFkQXJncyhzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHNlbmRtc2coKSByZWplY3RzIGludmFsaWQgYXJndW1lbnRzLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydl9zb2NrLnJlY3YoMTAwMCksIGIiZG9uZSIpCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnQmFkQXJncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmNsaV9zb2NrLnNlbmRtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGIibm90IGluIGFuIGl0ZXJhYmxlIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtvYmplY3QoKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0csIG9iamVjdCgpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIG9iamVjdCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgW10sIG9iamVjdCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgW10sIDAsIG9iamVjdCgpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihiImRvbmUiKQorCisgICAgZGVmIHRlc3RTZW5kbXNnQmFkQ21zZyhzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGludmFsaWQgYW5jaWxsYXJ5IGRhdGEgaXRlbXMgYXJlIHJlamVjdGVkLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydl9zb2NrLnJlY3YoMTAwMCksIGIiZG9uZSIpCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnQmFkQ21zZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFtvYmplY3QoKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBbKG9iamVjdCgpLCAwLCBiImRhdGEiKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBbKDAsIG9iamVjdCgpLCBiImRhdGEiKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBbKDAsIDAsIG9iamVjdCgpKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBbKDAsIDApXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFsoMCwgMCwgYiJkYXRhIiwgNDIpXSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoYiJkb25lIikKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIpCisgICAgZGVmIHRlc3RTZW5kbXNnQmFkTXVsdGlDbXNnKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgaW52YWxpZCBhbmNpbGxhcnkgZGF0YSBpdGVtcyBhcmUgcmVqZWN0ZWQgd2hlbgorICAgICAgICAjIG1vcmUgdGhhbiBvbmUgaXRlbSBpcyBwcmVzZW50LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydl9zb2NrLnJlY3YoMTAwMCksIGIiZG9uZSIpCisKKyAgICBAdGVzdFNlbmRtc2dCYWRNdWx0aUNtc2cuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTZW5kbXNnQmFkTXVsdGlDbXNnKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgWzAsIDAsIGIiIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBbKDAsIDAsIGIiIiksIG9iamVjdCgpXSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoYiJkb25lIikKKworICAgIGRlZiB0ZXN0U2VuZG1zZ0V4Y2Vzc0Ntc2dSZWplY3Qoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBzZW5kbXNnKCkgcmVqZWN0cyBleGNlc3MgYW5jaWxsYXJ5IGRhdGEgaXRlbXMKKyAgICAgICAgIyB3aGVuIHRoZSBudW1iZXIgdGhhdCBjYW4gYmUgc2VudCBpcyBsaW1pdGVkLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydl9zb2NrLnJlY3YoMTAwMCksIGIiZG9uZSIpCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnRXhjZXNzQ21zZ1JlamVjdChzZWxmKToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoc29ja2V0LCAiQ01TR19TUEFDRSIpOgorICAgICAgICAgICAgIyBDYW4gb25seSBzZW5kIG9uZSBpdGVtCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR10sIFsoMCwgMCwgYiIiKSwgKDAsIDAsIGIiIildKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY20uZXhjZXB0aW9uLmVycm5vKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihiImRvbmUiKQorCisgICAgZGVmIHRlc3RTZW5kbXNnQWZ0ZXJDbG9zZShzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHNlbmRtc2coKSBmYWlscyBvbiBhIGNsb3NlZCBzb2NrZXQuCisgICAgICAgIHBhc3MKKworICAgIGRlZiBfdGVzdFNlbmRtc2dBZnRlckNsb3NlKHNlbGYpOgorICAgICAgICBzZWxmLmNsaV9zb2NrLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwgW01TR10pCisKKworY2xhc3MgU2VuZG1zZ1N0cmVhbVRlc3RzKFNlbmRtc2dUZXN0cyk6CisgICAgIyBUZXN0cyBmb3Igc2VuZG1zZygpIHdoaWNoIHJlcXVpcmUgYSBzdHJlYW0gc29ja2V0IGFuZCBkbyBub3QKKyAgICAjIGludm9sdmUgcmVjdm1zZygpIG9yIHJlY3Ztc2dfaW50bygpLgorCisgICAgZGVmIHRlc3RTZW5kbXNnRXhwbGljaXROb25lQWRkcihzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHBlZXIgYWRkcmVzcyBjYW4gYmUgc3BlY2lmaWVkIGFzIE5vbmUuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdihsZW4oTVNHKSksIE1TRykKKworICAgIGRlZiBfdGVzdFNlbmRtc2dFeHBsaWNpdE5vbmVBZGRyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0ddLCBbXSwgMCwgTm9uZSksIGxlbihNU0cpKQorCisgICAgZGVmIHRlc3RTZW5kbXNnVGltZW91dChzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHRpbWVvdXQgd29ya3Mgd2l0aCBzZW5kbXNnKCkuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdig1MTIpLCBiImEiKjUxMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorCisgICAgZGVmIF90ZXN0U2VuZG1zZ1RpbWVvdXQoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuY2xpX3NvY2suc2V0dGltZW91dCgwLjAzKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQudGltZW91dCk6CisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW2IiYSIqNTEyXSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYubWlzY19ldmVudC5zZXQoKQorCisgICAgIyBYWFg6IHdvdWxkIGJlIG5pY2UgdG8gaGF2ZSBtb3JlIHRlc3RzIGZvciBzZW5kbXNnIGZsYWdzIGFyZ3VtZW50LgorCisgICAgIyBMaW51eCBzdXBwb3J0cyBNU0dfRE9OVFdBSVQgd2hlbiBzZW5kaW5nLCBidXQgaW4gZ2VuZXJhbCwgaXQKKyAgICAjIG9ubHkgd29ya3Mgd2hlbiByZWNlaXZpbmcuICBDb3VsZCBhZGQgb3RoZXIgcGxhdGZvcm1zIGlmIHRoZXkKKyAgICAjIHN1cHBvcnQgaXQgdG9vLgorICAgIEBza2lwV2l0aENsaWVudElmKHN5cy5wbGF0Zm9ybSBub3QgaW4geyJsaW51eDIifSwKKyAgICAgICAgICAgICAgICAgICAgICAiTVNHX0RPTlRXQUlUIG5vdCBrbm93biB0byB3b3JrIG9uIHRoaXMgcGxhdGZvcm0gd2hlbiAiCisgICAgICAgICAgICAgICAgICAgICAgInNlbmRpbmciKQorICAgIGRlZiB0ZXN0U2VuZG1zZ0RvbnRXYWl0KHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgTVNHX0RPTlRXQUlUIGluIGZsYWdzIGNhdXNlcyBub24tYmxvY2tpbmcgYmVoYXZpb3VyLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydl9zb2NrLnJlY3YoNTEyKSwgYiJhIio1MTIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKworICAgIEB0ZXN0U2VuZG1zZ0RvbnRXYWl0LmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2VuZG1zZ0RvbnRXYWl0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW2IiYSIqNTEyXSwgW10sIHNvY2tldC5NU0dfRE9OVFdBSVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGNtLmV4Y2VwdGlvbi5lcnJubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm5vLkVBR0FJTiwgZXJybm8uRVdPVUxEQkxPQ0spKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisKKworY2xhc3MgU2VuZG1zZ0Nvbm5lY3Rpb25sZXNzVGVzdHMoU2VuZG1zZ1Rlc3RzKToKKyAgICAjIFRlc3RzIGZvciBzZW5kbXNnKCkgd2hpY2ggcmVxdWlyZSBhIGNvbm5lY3Rpb25sZXNzLW1vZGUKKyAgICAjIChlLmcuIGRhdGFncmFtKSBzb2NrZXQsIGFuZCBkbyBub3QgaW52b2x2ZSByZWN2bXNnKCkgb3IKKyAgICAjIHJlY3Ztc2dfaW50bygpLgorCisgICAgZGVmIHRlc3RTZW5kbXNnTm9EZXN0QWRkcihzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHNlbmRtc2coKSBmYWlscyB3aGVuIG5vIGRlc3RpbmF0aW9uIGFkZHJlc3MgaXMKKyAgICAgICAgIyBnaXZlbiBmb3IgdW5jb25uZWN0ZWQgc29ja2V0LgorICAgICAgICBwYXNzCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnTm9EZXN0QWRkcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzZWxmLmNsaV9zb2NrLnNlbmRtc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNlbGYuY2xpX3NvY2suc2VuZG1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFtdLCAwLCBOb25lKQorCisKK2NsYXNzIFJlY3Ztc2dHZW5lcmljVGVzdHMoU2VuZHJlY3Ztc2dCYXNlKToKKyAgICAjIFRlc3RzIGZvciByZWN2bXNnKCkgd2hpY2ggY2FuIGFsc28gYmUgZW11bGF0ZWQgdXNpbmcKKyAgICAjIHJlY3Ztc2dfaW50bygpLCBhbmQgY2FuIHVzZSBhbnkgc29ja2V0IHR5cGUuCisKKyAgICBkZWYgdGVzdFJlY3Ztc2coc2VsZik6CisgICAgICAgICMgUmVjZWl2ZSBhIHNpbXBsZSBtZXNzYWdlIHdpdGggcmVjdm1zZ1tfaW50b10oKS4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dFeHBsaWNpdERlZmF1bHRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgcmVjdm1zZ1tfaW50b10oKSB3aXRoIGRlZmF1bHQgYXJndW1lbnRzIHByb3ZpZGVkIGV4cGxpY2l0bHkuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dFeHBsaWNpdERlZmF1bHRzKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dTaG9ydGVyKHNlbGYpOgorICAgICAgICAjIFJlY2VpdmUgYSBtZXNzYWdlIHNtYWxsZXIgdGhhbiBidWZmZXIuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpICsgNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ1Nob3J0ZXIoc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgICMgRnJlZUJTRCA8IDggZG9lc24ndCBhbHdheXMgc2V0IHRoZSBNU0dfVFJVTkMgZmxhZyB3aGVuIGEgdHJ1bmNhdGVkCisgICAgIyBkYXRhZ3JhbSBpcyByZWNlaXZlZCAoaXNzdWUgIzEzMDAxKS4KKyAgICBAc3VwcG9ydC5yZXF1aXJlc19mcmVlYnNkX3ZlcnNpb24oOCkKKyAgICBkZWYgdGVzdFJlY3Ztc2dUcnVuYyhzZWxmKToKKyAgICAgICAgIyBSZWNlaXZlIHBhcnQgb2YgbWVzc2FnZSwgY2hlY2sgZm9yIHRydW5jYXRpb24gaW5kaWNhdG9ycy4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRykgLSAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHWzotM10pCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1GYWxzZSkKKworICAgIEBzdXBwb3J0LnJlcXVpcmVzX2ZyZWVic2RfdmVyc2lvbig4KQorICAgIGRlZiBfdGVzdFJlY3Ztc2dUcnVuYyhzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgZGVmIHRlc3RSZWN2bXNnU2hvcnRBbmNpbGxhcnlCdWYoc2VsZik6CisgICAgICAgICMgVGVzdCBhbmNpbGxhcnkgZGF0YSBidWZmZXIgdG9vIHNtYWxsIHRvIGhvbGQgYW55IGFuY2lsbGFyeSBkYXRhLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnU2hvcnRBbmNpbGxhcnlCdWYoc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIGRlZiB0ZXN0UmVjdm1zZ0xvbmdBbmNpbGxhcnlCdWYoc2VsZik6CisgICAgICAgICMgVGVzdCBsYXJnZSBhbmNpbGxhcnkgZGF0YSBidWZmZXIuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAxMDI0MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnTG9uZ0FuY2lsbGFyeUJ1ZihzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgZGVmIHRlc3RSZWN2bXNnQWZ0ZXJDbG9zZShzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHJlY3Ztc2dbX2ludG9dKCkgZmFpbHMgb24gYSBjbG9zZWQgc29ja2V0LgorICAgICAgICBzZWxmLnNlcnZfc29jay5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc2VsZi5kb1JlY3Ztc2csIHNlbGYuc2Vydl9zb2NrLCAxMDI0KQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ0FmdGVyQ2xvc2Uoc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0UmVjdm1zZ1RpbWVvdXQoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCB0aW1lb3V0IHdvcmtzLgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnNlcnZfc29jay5zZXR0aW1lb3V0KDAuMDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQudGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9SZWN2bXNnLCBzZWxmLnNlcnZfc29jaywgbGVuKE1TRykpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLm1pc2NfZXZlbnQuc2V0KCkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dUaW1lb3V0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIk1TR19QRUVLIikKKyAgICBkZWYgdGVzdFJlY3Ztc2dQZWVrKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgTVNHX1BFRUsgaW4gZmxhZ3MgZW5hYmxlcyBleGFtaW5hdGlvbiBvZiBwZW5kaW5nCisgICAgICAgICMgZGF0YSB3aXRob3V0IGNvbnN1bWluZyBpdC4KKworICAgICAgICAjIFJlY2VpdmUgcGFydCBvZiBkYXRhIHdpdGggTVNHX1BFRUsuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpIC0gMywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5NU0dfUEVFSykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TR1s6LTNdKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgIyBJZ25vcmluZyBNU0dfVFJVTkMgaGVyZSAoc28gdGhpcyB0ZXN0IGlzIHRoZSBzYW1lIGZvciBzdHJlYW0KKyAgICAgICAgIyBhbmQgZGF0YWdyYW0gc29ja2V0cykuICBTb21lIHdvcmRpbmcgaW4gUE9TSVggc2VlbXMgdG8KKyAgICAgICAgIyBzdWdnZXN0IHRoYXQgaXQgbmVlZG4ndCBiZSBzZXQgd2hlbiBwZWVraW5nLCBidXQgdGhhdCBtYXkKKyAgICAgICAgIyBqdXN0IGJlIGEgc2xpcC4KKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmU9Z2V0YXR0cihzb2NrZXQsICJNU0dfVFJVTkMiLCAwKSkKKworICAgICAgICAjIFJlY2VpdmUgYWxsIGRhdGEgd2l0aCBNU0dfUEVFSy4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuTVNHX1BFRUspCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgc2FtZSBkYXRhIGNhbiBzdGlsbCBiZSByZWNlaXZlZCBub3JtYWxseS4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICBAdGVzdFJlY3Ztc2dQZWVrLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0UmVjdm1zZ1BlZWsoc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciKQorICAgIGRlZiB0ZXN0UmVjdm1zZ0Zyb21TZW5kbXNnKHNlbGYpOgorICAgICAgICAjIFRlc3QgcmVjZWl2aW5nIHdpdGggcmVjdm1zZ1tfaW50b10oKSB3aGVuIG1lc3NhZ2UgaXMgc2VudAorICAgICAgICAjIHVzaW5nIHNlbmRtc2coKS4KKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0dGltZW91dChzZWxmLmZhaWxfdGltZW91dCkKKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICBAdGVzdFJlY3Ztc2dGcm9tU2VuZG1zZy5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFJlY3Ztc2dGcm9tU2VuZG1zZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlbmRtc2dUb1NlcnZlcihbTVNHWzozXSwgTVNHWzM6XV0pLCBsZW4oTVNHKSkKKworCitjbGFzcyBSZWN2bXNnR2VuZXJpY1N0cmVhbVRlc3RzKFJlY3Ztc2dHZW5lcmljVGVzdHMpOgorICAgICMgVGVzdHMgd2hpY2ggcmVxdWlyZSBhIHN0cmVhbSBzb2NrZXQgYW5kIGNhbiB1c2UgZWl0aGVyIHJlY3Ztc2coKQorICAgICMgb3IgcmVjdm1zZ19pbnRvKCkuCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dFT0Yoc2VsZik6CisgICAgICAgICMgUmVjZWl2ZSBlbmQtb2Ytc3RyZWFtIGluZGljYXRvciAoYiIiLCBwZWVyIHNvY2tldCBjbG9zZWQpLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIDEwMjQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBiIiIpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1Ob25lKSAjIE1pZ2h0IG5vdCBoYXZlIGVuZC1vZi1yZWNvcmQgbWFya2VyCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnRU9GKHNlbGYpOgorICAgICAgICBzZWxmLmNsaV9zb2NrLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0UmVjdm1zZ092ZXJmbG93KHNlbGYpOgorICAgICAgICAjIFJlY2VpdmUgYSBtZXNzYWdlIGluIG1vcmUgdGhhbiBvbmUgY2h1bmsuCisgICAgICAgIHNlZzEsIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRykgLSAzKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9RmFsc2UpCisKKyAgICAgICAgc2VnMiwgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgMTAyNCkKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICAgICAgbXNnID0gc2VnMSArIHNlZzIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dPdmVyZmxvdyhzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisKK2NsYXNzIFJlY3Ztc2dUZXN0cyhSZWN2bXNnR2VuZXJpY1Rlc3RzKToKKyAgICAjIFRlc3RzIGZvciByZWN2bXNnKCkgd2hpY2ggY2FuIHVzZSBhbnkgc29ja2V0IHR5cGUuCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dCYWRBcmdzKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgcmVjdm1zZygpIHJlamVjdHMgaW52YWxpZCBhcmd1bWVudHMuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsIDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAtMSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYnl0ZWFycmF5KDEwKV0sIDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0KCksIDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIG9iamVjdCgpLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAwLCBvYmplY3QoKSkKKworICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5zZXJ2X3NvY2sucmVjdm1zZyhsZW4oTVNHKSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnQmFkQXJncyhzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisKK2NsYXNzIFJlY3Ztc2dJbnRvVGVzdHMoUmVjdm1zZ0ludG9NaXhpbiwgUmVjdm1zZ0dlbmVyaWNUZXN0cyk6CisgICAgIyBUZXN0cyBmb3IgcmVjdm1zZ19pbnRvKCkgd2hpY2ggY2FuIHVzZSBhbnkgc29ja2V0IHR5cGUuCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dJbnRvQmFkQXJncyhzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHJlY3Ztc2dfaW50bygpIHJlamVjdHMgaW52YWxpZCBhcmd1bWVudHMuCisgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheShsZW4oTVNHKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtvYmplY3QoKV0sIDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYiJJJ20gbm90IHdyaXRhYmxlIl0sIDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYnVmLCBvYmplY3QoKV0sIDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1Zl0sIC0xLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1Zl0sIG9iamVjdCgpLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1Zl0sIDAsIG9iamVjdCgpKQorCisgICAgICAgIG5ieXRlcywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8oW2J1Zl0sIDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmJ5dGVzLCBsZW4oTVNHKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYsIGJ5dGVhcnJheShNU0cpKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dJbnRvQmFkQXJncyhzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgZGVmIHRlc3RSZWN2bXNnSW50b0dlbmVyYXRvcihzZWxmKToKKyAgICAgICAgIyBSZWNlaXZlIGludG8gYnVmZmVyIG9idGFpbmVkIGZyb20gYSBnZW5lcmF0b3IgKG5vdCBhIHNlcXVlbmNlKS4KKyAgICAgICAgYnVmID0gYnl0ZWFycmF5KGxlbihNU0cpKQorICAgICAgICBuYnl0ZXMsIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvKAorICAgICAgICAgICAgKG8gZm9yIG8gaW4gW2J1Zl0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ieXRlcywgbGVuKE1TRykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBieXRlYXJyYXkoTVNHKSkKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnSW50b0dlbmVyYXRvcihzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgZGVmIHRlc3RSZWN2bXNnSW50b0FycmF5KHNlbGYpOgorICAgICAgICAjIFJlY2VpdmUgaW50byBhbiBhcnJheSByYXRoZXIgdGhhbiB0aGUgdXN1YWwgYnl0ZWFycmF5LgorICAgICAgICBidWYgPSBhcnJheS5hcnJheSgiQiIsIFswXSAqIGxlbihNU0cpKQorICAgICAgICBuYnl0ZXMsIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvKFtidWZdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ieXRlcywgbGVuKE1TRykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRvYnl0ZXMoKSwgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dJbnRvQXJyYXkoc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIGRlZiB0ZXN0UmVjdm1zZ0ludG9TY2F0dGVyKHNlbGYpOgorICAgICAgICAjIFJlY2VpdmUgaW50byBtdWx0aXBsZSBidWZmZXJzIChzY2F0dGVyIHdyaXRlKS4KKyAgICAgICAgYjEgPSBieXRlYXJyYXkoYiItLS0tIikKKyAgICAgICAgYjIgPSBieXRlYXJyYXkoYiIwMTIzNDU2Nzg5IikKKyAgICAgICAgYjMgPSBieXRlYXJyYXkoYiItLS0tLS0tLS0tLS0tLSIpCisgICAgICAgIG5ieXRlcywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8oCisgICAgICAgICAgICBbYjEsIG1lbW9yeXZpZXcoYjIpWzI6OV0sIGIzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYnl0ZXMsIGxlbihiIk1hcnkgaGFkIGEgbGl0dGxlIGxhbWIiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiMSwgYnl0ZWFycmF5KGIiTWFyeSIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIyLCBieXRlYXJyYXkoYiIwMSBoYWQgYSA5IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYjMsIGJ5dGVhcnJheShiImxpdHRsZSBsYW1iLS0tIikpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ0ludG9TY2F0dGVyKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihiIk1hcnkgaGFkIGEgbGl0dGxlIGxhbWIiKQorCisKK2NsYXNzIENtc2dNYWNyb1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIFRlc3QgdGhlIGZ1bmN0aW9ucyBDTVNHX0xFTigpIGFuZCBDTVNHX1NQQUNFKCkuICBUZXN0cworICAgICMgYXNzdW1wdGlvbnMgdXNlZCBieSBzZW5kbXNnKCkgYW5kIHJlY3Ztc2dbX2ludG9dKCksIHdoaWNoIHNoYXJlCisgICAgIyBjb2RlIHdpdGggdGhlc2UgZnVuY3Rpb25zLgorCisgICAgIyBNYXRjaCB0aGUgZGVmaW5pdGlvbiBpbiBzb2NrZXRtb2R1bGUuYworICAgIHNvY2tsZW5fdF9saW1pdCA9IG1pbigweDdmZmZmZmZmLCBfdGVzdGNhcGkuSU5UX01BWCkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19MRU4iKQorICAgIGRlZiB0ZXN0Q01TR19MRU4oc2VsZik6CisgICAgICAgICMgVGVzdCBDTVNHX0xFTigpIHdpdGggdmFyaW91cyB2YWxpZCBhbmQgaW52YWxpZCB2YWx1ZXMsCisgICAgICAgICMgY2hlY2tpbmcgdGhlIGFzc3VtcHRpb25zIHVzZWQgYnkgcmVjdm1zZygpIGFuZCBzZW5kbXNnKCkuCisgICAgICAgIHRvb2JpZyA9IHNlbGYuc29ja2xlbl90X2xpbWl0IC0gc29ja2V0LkNNU0dfTEVOKDApICsgMQorICAgICAgICB2YWx1ZXMgPSBsaXN0KHJhbmdlKDI1NykpICsgbGlzdChyYW5nZSh0b29iaWcgLSAyNTcsIHRvb2JpZykpCisKKyAgICAgICAgIyBzdHJ1Y3QgY21zZ2hkciBoYXMgYXQgbGVhc3QgdGhyZWUgbWVtYmVycywgdHdvIG9mIHdoaWNoIGFyZSBpbnRzCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzb2NrZXQuQ01TR19MRU4oMCksIGFycmF5LmFycmF5KCJpIikuaXRlbXNpemUgKiAyKQorICAgICAgICBmb3IgbiBpbiB2YWx1ZXM6CisgICAgICAgICAgICByZXQgPSBzb2NrZXQuQ01TR19MRU4obikKKyAgICAgICAgICAgICMgVGhpcyBpcyBob3cgcmVjdm1zZygpIGNhbGN1bGF0ZXMgdGhlIGRhdGEgc2l6ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXQgLSBzb2NrZXQuQ01TR19MRU4oMCksIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChyZXQsIHNlbGYuc29ja2xlbl90X2xpbWl0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNvY2tldC5DTVNHX0xFTiwgLTEpCisgICAgICAgICMgc2VuZG1zZygpIHNoYXJlcyBjb2RlIHdpdGggdGhlc2UgZnVuY3Rpb25zLCBhbmQgcmVxdWlyZXMKKyAgICAgICAgIyB0aGF0IGl0IHJlamVjdCB2YWx1ZXMgb3ZlciB0aGUgbGltaXQuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNvY2tldC5DTVNHX0xFTiwgdG9vYmlnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzb2NrZXQuQ01TR19MRU4sIHN5cy5tYXhzaXplKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIikKKyAgICBkZWYgdGVzdENNU0dfU1BBQ0Uoc2VsZik6CisgICAgICAgICMgVGVzdCBDTVNHX1NQQUNFKCkgd2l0aCB2YXJpb3VzIHZhbGlkIGFuZCBpbnZhbGlkIHZhbHVlcywKKyAgICAgICAgIyBjaGVja2luZyB0aGUgYXNzdW1wdGlvbnMgdXNlZCBieSBzZW5kbXNnKCkuCisgICAgICAgIHRvb2JpZyA9IHNlbGYuc29ja2xlbl90X2xpbWl0IC0gc29ja2V0LkNNU0dfU1BBQ0UoMSkgKyAxCisgICAgICAgIHZhbHVlcyA9IGxpc3QocmFuZ2UoMjU3KSkgKyBsaXN0KHJhbmdlKHRvb2JpZyAtIDI1NywgdG9vYmlnKSkKKworICAgICAgICBsYXN0ID0gc29ja2V0LkNNU0dfU1BBQ0UoMCkKKyAgICAgICAgIyBzdHJ1Y3QgY21zZ2hkciBoYXMgYXQgbGVhc3QgdGhyZWUgbWVtYmVycywgdHdvIG9mIHdoaWNoIGFyZSBpbnRzCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsYXN0LCBhcnJheS5hcnJheSgiaSIpLml0ZW1zaXplICogMikKKyAgICAgICAgZm9yIG4gaW4gdmFsdWVzOgorICAgICAgICAgICAgcmV0ID0gc29ja2V0LkNNU0dfU1BBQ0UobikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHJldCwgbGFzdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHJldCwgc29ja2V0LkNNU0dfTEVOKG4pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwocmV0LCBuICsgc29ja2V0LkNNU0dfTEVOKDApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwocmV0LCBzZWxmLnNvY2tsZW5fdF9saW1pdCkKKyAgICAgICAgICAgIGxhc3QgPSByZXQKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzb2NrZXQuQ01TR19TUEFDRSwgLTEpCisgICAgICAgICMgc2VuZG1zZygpIHNoYXJlcyBjb2RlIHdpdGggdGhlc2UgZnVuY3Rpb25zLCBhbmQgcmVxdWlyZXMKKyAgICAgICAgIyB0aGF0IGl0IHJlamVjdCB2YWx1ZXMgb3ZlciB0aGUgbGltaXQuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNvY2tldC5DTVNHX1NQQUNFLCB0b29iaWcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNvY2tldC5DTVNHX1NQQUNFLCBzeXMubWF4c2l6ZSkKKworCitjbGFzcyBTQ01SaWdodHNUZXN0KFNlbmRyZWN2bXNnU2VydmVyVGltZW91dEJhc2UpOgorICAgICMgVGVzdHMgZm9yIGZpbGUgZGVzY3JpcHRvciBwYXNzaW5nIG9uIFVuaXgtZG9tYWluIHNvY2tldHMuCisKKyAgICAjIEludmFsaWQgZmlsZSBkZXNjcmlwdG9yIHZhbHVlIHRoYXQncyB1bmxpa2VseSB0byBldmFsdWF0ZSB0byBhCisgICAgIyByZWFsIEZEIGV2ZW4gaWYgb25lIG9mIGl0cyBieXRlcyBpcyByZXBsYWNlZCB3aXRoIGEgZGlmZmVyZW50CisgICAgIyB2YWx1ZSAod2hpY2ggc2hvdWxkbid0IGFjdHVhbGx5IGhhcHBlbikuCisgICAgYmFkZmQgPSAtMHg1NTU1CisKKyAgICBkZWYgbmV3RkRzKHNlbGYsIG4pOgorICAgICAgICAjIFJldHVybiBhIGxpc3Qgb2YgbiBmaWxlIGRlc2NyaXB0b3JzIGZvciBuZXdseS1jcmVhdGVkIGZpbGVzCisgICAgICAgICMgY29udGFpbmluZyB0aGVpciBsaXN0IGluZGljZXMgYXMgQVNDSUkgbnVtYmVycy4KKyAgICAgICAgZmRzID0gW10KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6CisgICAgICAgICAgICBmZCwgcGF0aCA9IHRlbXBmaWxlLm1rc3RlbXAoKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnVubGluaywgcGF0aCkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgZmQpCisgICAgICAgICAgICBvcy53cml0ZShmZCwgc3RyKGkpLmVuY29kZSgpKQorICAgICAgICAgICAgZmRzLmFwcGVuZChmZCkKKyAgICAgICAgcmV0dXJuIGZkcworCisgICAgZGVmIGNoZWNrRkRzKHNlbGYsIGZkcyk6CisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgZmlsZSBkZXNjcmlwdG9ycyBpbiB0aGUgZ2l2ZW4gbGlzdCBjb250YWluCisgICAgICAgICMgdGhlaXIgY29ycmVjdCBsaXN0IGluZGljZXMgYXMgQVNDSUkgbnVtYmVycy4KKyAgICAgICAgZm9yIG4sIGZkIGluIGVudW1lcmF0ZShmZHMpOgorICAgICAgICAgICAgb3MubHNlZWsoZmQsIDAsIG9zLlNFRUtfU0VUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5yZWFkKGZkLCAxMDI0KSwgc3RyKG4pLmVuY29kZSgpKQorCisgICAgZGVmIHJlZ2lzdGVyUmVjdm1zZ1Jlc3VsdChzZWxmLCByZXN1bHQpOgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5jbG9zZVJlY3Ztc2dGRHMsIHJlc3VsdCkKKworICAgIGRlZiBjbG9zZVJlY3Ztc2dGRHMoc2VsZiwgcmVjdm1zZ19yZXN1bHQpOgorICAgICAgICAjIENsb3NlIGFsbCBmaWxlIGRlc2NyaXB0b3JzIHNwZWNpZmllZCBpbiB0aGUgYW5jaWxsYXJ5IGRhdGEKKyAgICAgICAgIyBvZiB0aGUgZ2l2ZW4gcmV0dXJuIHZhbHVlIGZyb20gcmVjdm1zZygpIG9yIHJlY3Ztc2dfaW50bygpLgorICAgICAgICBmb3IgY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEgaW4gcmVjdm1zZ19yZXN1bHRbMV06CisgICAgICAgICAgICBpZiAoY21zZ19sZXZlbCA9PSBzb2NrZXQuU09MX1NPQ0tFVCBhbmQKKyAgICAgICAgICAgICAgICAgICAgY21zZ190eXBlID09IHNvY2tldC5TQ01fUklHSFRTKToKKyAgICAgICAgICAgICAgICBmZHMgPSBhcnJheS5hcnJheSgiaSIpCisgICAgICAgICAgICAgICAgZmRzLmZyb21ieXRlcyhjbXNnX2RhdGFbOgorICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNtc2dfZGF0YSkgLSAobGVuKGNtc2dfZGF0YSkgJSBmZHMuaXRlbXNpemUpXSkKKyAgICAgICAgICAgICAgICBmb3IgZmQgaW4gZmRzOgorICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShmZCkKKworICAgIGRlZiBjcmVhdGVBbmRTZW5kRkRzKHNlbGYsIG4pOgorICAgICAgICAjIFNlbmQgbiBuZXcgZmlsZSBkZXNjcmlwdG9ycyBjcmVhdGVkIGJ5IG5ld0ZEcygpIHRvIHRoZQorICAgICAgICAjIHNlcnZlciwgd2l0aCB0aGUgY29uc3RhbnQgTVNHIGFzIHRoZSBub24tYW5jaWxsYXJ5IGRhdGEuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLnNlbmRtc2dUb1NlcnZlcihbTVNHXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoc29ja2V0LlNPTF9TT0NLRVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIHNlbGYubmV3RkRzKG4pKSldKSwKKyAgICAgICAgICAgIGxlbihNU0cpKQorCisgICAgZGVmIGNoZWNrUmVjdm1zZ0ZEcyhzZWxmLCBudW1mZHMsIHJlc3VsdCwgbWF4Y21zZ3M9MSwgaWdub3JlZmxhZ3M9MCk6CisgICAgICAgICMgQ2hlY2sgdGhhdCBjb25zdGFudCBNU0cgd2FzIHJlY2VpdmVkIHdpdGggbnVtZmRzIGZpbGUKKyAgICAgICAgIyBkZXNjcmlwdG9ycyBpbiBhIG1heGltdW0gb2YgbWF4Y21zZ3MgY29udHJvbCBtZXNzYWdlcyAod2hpY2gKKyAgICAgICAgIyBtdXN0IGNvbnRhaW4gb25seSBjb21wbGV0ZSBpbnRlZ2VycykuICBCeSBkZWZhdWx0LCBjaGVjaworICAgICAgICAjIHRoYXQgTVNHX0NUUlVOQyBpcyB1bnNldCwgYnV0IGlnbm9yZSBhbnkgZmxhZ3MgaW4KKyAgICAgICAgIyBpZ25vcmVmbGFncy4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHJlc3VsdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgY2hlY2t1bnNldD1zb2NrZXQuTVNHX0NUUlVOQywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZT1pZ25vcmVmbGFncykKKworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYW5jZGF0YSwgbGlzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKGFuY2RhdGEpLCBtYXhjbXNncykKKyAgICAgICAgZmRzID0gYXJyYXkuYXJyYXkoImkiKQorICAgICAgICBmb3IgaXRlbSBpbiBhbmNkYXRhOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGl0ZW0sIHR1cGxlKQorICAgICAgICAgICAgY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEgPSBpdGVtCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfbGV2ZWwsIHNvY2tldC5TT0xfU09DS0VUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX3R5cGUsIHNvY2tldC5TQ01fUklHSFRTKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNtc2dfZGF0YSwgYnl0ZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjbXNnX2RhdGEpICUgU0laRU9GX0lOVCwgMCkKKyAgICAgICAgICAgIGZkcy5mcm9tYnl0ZXMoY21zZ19kYXRhKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGZkcyksIG51bWZkcykKKyAgICAgICAgc2VsZi5jaGVja0ZEcyhmZHMpCisKKyAgICBkZWYgdGVzdEZEUGFzc1NpbXBsZShzZWxmKToKKyAgICAgICAgIyBQYXNzIGEgc2luZ2xlIEZEIChhcnJheSByZWFkIGZyb20gYnl0ZXMgb2JqZWN0KS4KKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dGRHMoMSwgc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAxMDI0MCkpCisKKyAgICBkZWYgX3Rlc3RGRFBhc3NTaW1wbGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLnNlbmRtc2dUb1NlcnZlcigKKyAgICAgICAgICAgICAgICBbTVNHXSwKKyAgICAgICAgICAgICAgICBbKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICAgICAgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIHNlbGYubmV3RkRzKDEpKS50b2J5dGVzKCkpXSksCisgICAgICAgICAgICBsZW4oTVNHKSkKKworICAgIGRlZiB0ZXN0TXVsdGlwbGVGRFBhc3Moc2VsZik6CisgICAgICAgICMgUGFzcyBtdWx0aXBsZSBGRHMgaW4gYSBzaW5nbGUgYXJyYXkuCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnRkRzKDQsIHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgMTAyNDApKQorCisgICAgZGVmIF90ZXN0TXVsdGlwbGVGRFBhc3Moc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcyg0KQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIikKKyAgICBkZWYgdGVzdEZEUGFzc0NNU0dfU1BBQ0Uoc2VsZik6CisgICAgICAgICMgVGVzdCB1c2luZyBDTVNHX1NQQUNFKCkgdG8gY2FsY3VsYXRlIGFuY2lsbGFyeSBidWZmZXIgc2l6ZS4KKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dGRHMoCisgICAgICAgICAgICA0LCBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuQ01TR19TUEFDRSg0ICogU0laRU9GX0lOVCkpKQorCisgICAgQHRlc3RGRFBhc3NDTVNHX1NQQUNFLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0RkRQYXNzQ01TR19TUEFDRShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDQpCisKKyAgICBkZWYgdGVzdEZEUGFzc0NNU0dfTEVOKHNlbGYpOgorICAgICAgICAjIFRlc3QgdXNpbmcgQ01TR19MRU4oKSB0byBjYWxjdWxhdGUgYW5jaWxsYXJ5IGJ1ZmZlciBzaXplLgorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0ZEcygxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5DTVNHX0xFTig0ICogU0laRU9GX0lOVCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFJGQyAzNTQyIHNheXMgaW1wbGVtZW50YXRpb25zIG1heSBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBNU0dfQ1RSVU5DIGlmIHRoZXJlIGlzbid0IGVub3VnaCBzcGFjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZvciB0cmFpbGluZyBwYWRkaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVmbGFncz1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgIGRlZiBfdGVzdEZEUGFzc0NNU0dfTEVOKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMSkKKworICAgICMgSXNzdWUgIzEyOTU4OiBUaGUgZm9sbG93aW5nIHRlc3QgaGFzIHByb2JsZW1zIG9uIE1hYyBPUyBYCisgICAgQHN1cHBvcnQuYW50aWNpcGF0ZV9mYWlsdXJlKHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIikKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiKQorICAgIGRlZiB0ZXN0RkRQYXNzU2VwYXJhdGUoc2VsZik6CisgICAgICAgICMgUGFzcyB0d28gRkRzIGluIHR3byBzZXBhcmF0ZSBhcnJheXMuICBBcnJheXMgbWF5IGJlIGNvbWJpbmVkCisgICAgICAgICMgaW50byBhIHNpbmdsZSBjb250cm9sIG1lc3NhZ2UgYnkgdGhlIE9TLgorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0ZEcygyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRyksIDEwMjQwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y21zZ3M9MikKKworICAgIEB0ZXN0RkRQYXNzU2VwYXJhdGUuY2xpZW50X3NraXAKKyAgICBAc3VwcG9ydC5hbnRpY2lwYXRlX2ZhaWx1cmUoc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iKQorICAgIGRlZiBfdGVzdEZEUGFzc1NlcGFyYXRlKHNlbGYpOgorICAgICAgICBmZDAsIGZkMSA9IHNlbGYubmV3RkRzKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLnNlbmRtc2dUb1NlcnZlcihbTVNHXSwgWyhzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbZmQwXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc29ja2V0LlNPTF9TT0NLRVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU0NNX1JJR0hUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW2ZkMV0pKV0pLAorICAgICAgICAgICAgbGVuKE1TRykpCisKKyAgICAjIElzc3VlICMxMjk1ODogVGhlIGZvbGxvd2luZyB0ZXN0IGhhcyBwcm9ibGVtcyBvbiBNYWMgT1MgWAorICAgIEBzdXBwb3J0LmFudGljaXBhdGVfZmFpbHVyZShzeXMucGxhdGZvcm0gPT0gImRhcndpbiIpCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIikKKyAgICBkZWYgdGVzdEZEUGFzc1NlcGFyYXRlTWluU3BhY2Uoc2VsZik6CisgICAgICAgICMgUGFzcyB0d28gRkRzIGluIHR3byBzZXBhcmF0ZSBhcnJheXMsIHJlY2VpdmluZyB0aGVtIGludG8gdGhlCisgICAgICAgICMgbWluaW11bSBzcGFjZSBmb3IgdHdvIGFycmF5cy4KKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dGRHMoMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuQ01TR19TUEFDRShTSVpFT0ZfSU5UKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5DTVNHX0xFTihTSVpFT0ZfSU5UKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNtc2dzPTIsIGlnbm9yZWZsYWdzPXNvY2tldC5NU0dfQ1RSVU5DKQorCisgICAgQHRlc3RGRFBhc3NTZXBhcmF0ZU1pblNwYWNlLmNsaWVudF9za2lwCisgICAgQHN1cHBvcnQuYW50aWNpcGF0ZV9mYWlsdXJlKHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIikKKyAgICBkZWYgX3Rlc3RGRFBhc3NTZXBhcmF0ZU1pblNwYWNlKHNlbGYpOgorICAgICAgICBmZDAsIGZkMSA9IHNlbGYubmV3RkRzKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLnNlbmRtc2dUb1NlcnZlcihbTVNHXSwgWyhzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbZmQwXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc29ja2V0LlNPTF9TT0NLRVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU0NNX1JJR0hUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW2ZkMV0pKV0pLAorICAgICAgICAgICAgbGVuKE1TRykpCisKKyAgICBkZWYgc2VuZEFuY2lsbGFyeUlmUG9zc2libGUoc2VsZiwgbXNnLCBhbmNkYXRhKToKKyAgICAgICAgIyBUcnkgdG8gc2VuZCBtc2cgYW5kIGFuY2RhdGEgdG8gc2VydmVyLCBidXQgaWYgdGhlIHN5c3RlbQorICAgICAgICAjIGNhbGwgZmFpbHMsIGp1c3Qgc2VuZCBtc2cgd2l0aCBubyBhbmNpbGxhcnkgZGF0YS4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmJ5dGVzID0gc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW21zZ10sIGFuY2RhdGEpCisgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKKyAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBpdCB3YXMgdGhlIHN5c3RlbSBjYWxsIHRoYXQgZmFpbGVkCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZS5lcnJubywgaW50KQorICAgICAgICAgICAgbmJ5dGVzID0gc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW21zZ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmJ5dGVzLCBsZW4obXNnKSkKKworICAgIGRlZiB0ZXN0RkRQYXNzRW1wdHkoc2VsZik6CisgICAgICAgICMgVHJ5IHRvIHBhc3MgYW4gZW1wdHkgRkQgYXJyYXkuICBDYW4gcmVjZWl2ZSBlaXRoZXIgbm8gYXJyYXkKKyAgICAgICAgIyBvciBhbiBlbXB0eSBhcnJheS4KKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dGRHMoMCwgc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAxMDI0MCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWZsYWdzPXNvY2tldC5NU0dfQ1RSVU5DKQorCisgICAgZGVmIF90ZXN0RkRQYXNzRW1wdHkoc2VsZik6CisgICAgICAgIHNlbGYuc2VuZEFuY2lsbGFyeUlmUG9zc2libGUoTVNHLCBbKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU0NNX1JJR0hUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiIiKV0pCisKKyAgICBkZWYgdGVzdEZEUGFzc1BhcnRpYWxJbnQoc2VsZik6CisgICAgICAgICMgVHJ5IHRvIHBhc3MgYSB0cnVuY2F0ZWQgRkQgYXJyYXkuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAxMDI0MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUsIGlnbm9yZT1zb2NrZXQuTVNHX0NUUlVOQykKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKGFuY2RhdGEpLCAxKQorICAgICAgICBmb3IgY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEgaW4gYW5jZGF0YToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ19sZXZlbCwgc29ja2V0LlNPTF9TT0NLRVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfdHlwZSwgc29ja2V0LlNDTV9SSUdIVFMpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MobGVuKGNtc2dfZGF0YSksIFNJWkVPRl9JTlQpCisKKyAgICBkZWYgX3Rlc3RGRFBhc3NQYXJ0aWFsSW50KHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRBbmNpbGxhcnlJZlBvc3NpYmxlKAorICAgICAgICAgICAgTVNHLAorICAgICAgICAgICAgWyhzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW3NlbGYuYmFkZmRdKS50b2J5dGVzKClbOi0xXSldKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIikKKyAgICBkZWYgdGVzdEZEUGFzc1BhcnRpYWxJbnRJbk1pZGRsZShzZWxmKToKKyAgICAgICAgIyBUcnkgdG8gcGFzcyB0d28gRkQgYXJyYXlzLCB0aGUgZmlyc3Qgb2Ygd2hpY2ggaXMgdHJ1bmNhdGVkLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgMTAyNDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBpZ25vcmU9c29ja2V0Lk1TR19DVFJVTkMpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihhbmNkYXRhKSwgMikKKyAgICAgICAgZmRzID0gYXJyYXkuYXJyYXkoImkiKQorICAgICAgICAjIEFycmF5cyBtYXkgaGF2ZSBiZWVuIGNvbWJpbmVkIGluIGEgc2luZ2xlIGNvbnRyb2wgbWVzc2FnZQorICAgICAgICBmb3IgY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEgaW4gYW5jZGF0YToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ19sZXZlbCwgc29ja2V0LlNPTF9TT0NLRVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfdHlwZSwgc29ja2V0LlNDTV9SSUdIVFMpCisgICAgICAgICAgICBmZHMuZnJvbWJ5dGVzKGNtc2dfZGF0YVs6CisgICAgICAgICAgICAgICAgICAgIGxlbihjbXNnX2RhdGEpIC0gKGxlbihjbXNnX2RhdGEpICUgZmRzLml0ZW1zaXplKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihmZHMpLCAyKQorICAgICAgICBzZWxmLmNoZWNrRkRzKGZkcykKKworICAgIEB0ZXN0RkRQYXNzUGFydGlhbEludEluTWlkZGxlLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0RkRQYXNzUGFydGlhbEludEluTWlkZGxlKHNlbGYpOgorICAgICAgICBmZDAsIGZkMSA9IHNlbGYubmV3RkRzKDIpCisgICAgICAgIHNlbGYuc2VuZEFuY2lsbGFyeUlmUG9zc2libGUoCisgICAgICAgICAgICBNU0csCisgICAgICAgICAgICBbKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICBzb2NrZXQuU0NNX1JJR0hUUywKKyAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbZmQwLCBzZWxmLmJhZGZkXSkudG9ieXRlcygpWzotMV0pLAorICAgICAgICAgICAgIChzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW2ZkMV0pKV0pCisKKyAgICBkZWYgY2hlY2tUcnVuY2F0ZWRIZWFkZXIoc2VsZiwgcmVzdWx0LCBpZ25vcmVmbGFncz0wKToKKyAgICAgICAgIyBDaGVjayB0aGF0IG5vIGFuY2lsbGFyeSBkYXRhIGl0ZW1zIGFyZSByZXR1cm5lZCB3aGVuIGRhdGEgaXMKKyAgICAgICAgIyB0cnVuY2F0ZWQgaW5zaWRlIHRoZSBjbXNnaGRyIHN0cnVjdHVyZS4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHJlc3VsdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgY2hlY2tzZXQ9c29ja2V0Lk1TR19DVFJVTkMsCisgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmU9aWdub3JlZmxhZ3MpCisKKyAgICBkZWYgdGVzdENtc2dUcnVuY05vQnVmU2l6ZShzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IG5vIGFuY2lsbGFyeSBkYXRhIGlzIHJlY2VpdmVkIHdoZW4gbm8gYnVmZmVyIHNpemUKKyAgICAgICAgIyBpcyBzcGVjaWZpZWQuCisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRIZWFkZXIoc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEJTRCBzZWVtcyB0byBzZXQgTVNHX0NUUlVOQyBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBhbiBpdGVtIGhhcyBiZWVuIHBhcnRpYWxseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVjZWl2ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZmxhZ3M9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmNOb0J1ZlNpemUoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcygxKQorCisgICAgZGVmIHRlc3RDbXNnVHJ1bmMwKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgaXMgcmVjZWl2ZWQgd2hlbiBidWZmZXIgc2l6ZSBpcyAwLgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkSGVhZGVyKHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZmxhZ3M9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmMwKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMSkKKworICAgICMgQ2hlY2sgdGhhdCBubyBhbmNpbGxhcnkgZGF0YSBpcyByZXR1cm5lZCBmb3IgdmFyaW91cyBub24temVybworICAgICMgKGJ1dCBzdGlsbCB0b28gc21hbGwpIGJ1ZmZlciBzaXplcy4KKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jMShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZEhlYWRlcihzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRyksIDEpKQorCisgICAgZGVmIF90ZXN0Q21zZ1RydW5jMShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDEpCisKKyAgICBkZWYgdGVzdENtc2dUcnVuYzJJbnQoc2VsZik6CisgICAgICAgICMgVGhlIGNtc2doZHIgc3RydWN0dXJlIGhhcyBhdCBsZWFzdCB0aHJlZSBtZW1iZXJzLCB0d28gb2YKKyAgICAgICAgIyB3aGljaCBhcmUgaW50cywgc28gd2Ugc3RpbGwgc2hvdWxkbid0IHNlZSBhbnkgYW5jaWxsYXJ5CisgICAgICAgICMgZGF0YS4KKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZEhlYWRlcihzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0laRU9GX0lOVCAqIDIpKQorCisgICAgZGVmIF90ZXN0Q21zZ1RydW5jMkludChzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDEpCisKKyAgICBkZWYgdGVzdENtc2dUcnVuY0xlbjBNaW51czEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRIZWFkZXIoc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5DTVNHX0xFTigwKSAtIDEpKQorCisgICAgZGVmIF90ZXN0Q21zZ1RydW5jTGVuME1pbnVzMShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDEpCisKKyAgICAjIFRoZSBmb2xsb3dpbmcgdGVzdHMgdHJ5IHRvIHRydW5jYXRlIHRoZSBjb250cm9sIG1lc3NhZ2UgaW4gdGhlCisgICAgIyBtaWRkbGUgb2YgdGhlIEZEIGFycmF5LgorCisgICAgZGVmIGNoZWNrVHJ1bmNhdGVkQXJyYXkoc2VsZiwgYW5jYnVmLCBtYXhkYXRhLCBtaW5kYXRhPTApOgorICAgICAgICAjIENoZWNrIHRoYXQgZmlsZSBkZXNjcmlwdG9yIGRhdGEgaXMgdHJ1bmNhdGVkIHRvIGJldHdlZW4KKyAgICAgICAgIyBtaW5kYXRhIGFuZCBtYXhkYXRhIGJ5dGVzIHdoZW4gcmVjZWl2ZWQgd2l0aCBidWZmZXIgc2l6ZQorICAgICAgICAjIGFuY2J1ZiwgYW5kIHRoYXQgYW55IGNvbXBsZXRlIGZpbGUgZGVzY3JpcHRvciBudW1iZXJzIGFyZQorICAgICAgICAjIHZhbGlkLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgYW5jYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgY2hlY2tzZXQ9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICAgICAgaWYgbWluZGF0YSA9PSAwIGFuZCBhbmNkYXRhID09IFtdOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFuY2RhdGEpLCAxKQorICAgICAgICBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSA9IGFuY2RhdGFbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX2xldmVsLCBzb2NrZXQuU09MX1NPQ0tFVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX3R5cGUsIHNvY2tldC5TQ01fUklHSFRTKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChsZW4oY21zZ19kYXRhKSwgbWluZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKGNtc2dfZGF0YSksIG1heGRhdGEpCisgICAgICAgIGZkcyA9IGFycmF5LmFycmF5KCJpIikKKyAgICAgICAgZmRzLmZyb21ieXRlcyhjbXNnX2RhdGFbOgorICAgICAgICAgICAgICAgIGxlbihjbXNnX2RhdGEpIC0gKGxlbihjbXNnX2RhdGEpICUgZmRzLml0ZW1zaXplKV0pCisgICAgICAgIHNlbGYuY2hlY2tGRHMoZmRzKQorCisgICAgZGVmIHRlc3RDbXNnVHJ1bmNMZW4wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkQXJyYXkoYW5jYnVmPXNvY2tldC5DTVNHX0xFTigwKSwgbWF4ZGF0YT0wKQorCisgICAgZGVmIF90ZXN0Q21zZ1RydW5jTGVuMChzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDEpCisKKyAgICBkZWYgdGVzdENtc2dUcnVuY0xlbjBQbHVzMShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZEFycmF5KGFuY2J1Zj1zb2NrZXQuQ01TR19MRU4oMCkgKyAxLCBtYXhkYXRhPTEpCisKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmNMZW4wUGx1czEoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcygyKQorCisgICAgZGVmIHRlc3RDbXNnVHJ1bmNMZW4xKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkQXJyYXkoYW5jYnVmPXNvY2tldC5DTVNHX0xFTihTSVpFT0ZfSU5UKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGRhdGE9U0laRU9GX0lOVCkKKworICAgIGRlZiBfdGVzdENtc2dUcnVuY0xlbjEoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcygyKQorCisgICAgZGVmIHRlc3RDbXNnVHJ1bmNMZW4yTWludXMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkQXJyYXkoYW5jYnVmPXNvY2tldC5DTVNHX0xFTigyICogU0laRU9GX0lOVCkgLSAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4ZGF0YT0oMiAqIFNJWkVPRl9JTlQpIC0gMSkKKworICAgIGRlZiBfdGVzdENtc2dUcnVuY0xlbjJNaW51czEoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcygyKQorCisKK2NsYXNzIFJGQzM1NDJBbmNpbGxhcnlUZXN0KFNlbmRyZWN2bXNnU2VydmVyVGltZW91dEJhc2UpOgorICAgICMgVGVzdCBzZW5kbXNnKCkgYW5kIHJlY3Ztc2dbX2ludG9dKCkgdXNpbmcgdGhlIGFuY2lsbGFyeSBkYXRhCisgICAgIyBmZWF0dXJlcyBvZiB0aGUgUkZDIDM1NDIgQWR2YW5jZWQgU29ja2V0cyBBUEkgZm9yIElQdjYuCisgICAgIyBDdXJyZW50bHkgd2UgY2FuIG9ubHkgaGFuZGxlIGNlcnRhaW4gZGF0YSBpdGVtcyAoZS5nLiB0cmFmZmljCisgICAgIyBjbGFzcywgaG9wIGxpbWl0LCBNVFUgZGlzY292ZXJ5IGFuZCBmcmFnbWVudGF0aW9uIHNldHRpbmdzKQorICAgICMgd2l0aG91dCByZXNvcnRpbmcgdG8gdW5wb3J0YWJsZSBtZWFucyBzdWNoIGFzIHRoZSBzdHJ1Y3QgbW9kdWxlLAorICAgICMgYnV0IHRoZSB0ZXN0cyBoZXJlIGFyZSBhaW1lZCBhdCB0ZXN0aW5nIHRoZSBhbmNpbGxhcnkgZGF0YQorICAgICMgaGFuZGxpbmcgaW4gc2VuZG1zZygpIGFuZCByZWN2bXNnKCkgcmF0aGVyIHRoYW4gdGhlIElQdjYgQVBJCisgICAgIyBpdHNlbGYuCisKKyAgICAjIFRlc3QgdmFsdWUgdG8gdXNlIHdoZW4gc2V0dGluZyBob3AgbGltaXQgb2YgcGFja2V0CisgICAgaG9wX2xpbWl0ID0gMgorCisgICAgIyBUZXN0IHZhbHVlIHRvIHVzZSB3aGVuIHNldHRpbmcgdHJhZmZpYyBjbGFzcyBvZiBwYWNrZXQuCisgICAgIyAtMSBtZWFucyAidXNlIGtlcm5lbCBkZWZhdWx0Ii4KKyAgICB0cmFmZmljX2NsYXNzID0gLTEKKworICAgIGRlZiBhbmNpbGxhcnlNYXBwaW5nKHNlbGYsIGFuY2RhdGEpOgorICAgICAgICAjIEdpdmVuIGFuY2lsbGFyeSBkYXRhIGxpc3QgYW5jZGF0YSwgcmV0dXJuIGEgbWFwcGluZyBmcm9tCisgICAgICAgICMgcGFpcnMgKGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSkgdG8gY29ycmVzcG9uZGluZyBjbXNnX2RhdGEuCisgICAgICAgICMgQ2hlY2sgdGhhdCBubyAobGV2ZWwsIHR5cGUpIHBhaXIgYXBwZWFycyBtb3JlIHRoYW4gb25jZS4KKyAgICAgICAgZCA9IHt9CisgICAgICAgIGZvciBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSBpbiBhbmNkYXRhOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigoY21zZ19sZXZlbCwgY21zZ190eXBlKSwgZCkKKyAgICAgICAgICAgIGRbKGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSldID0gY21zZ19kYXRhCisgICAgICAgIHJldHVybiBkCisKKyAgICBkZWYgY2hlY2tIb3BMaW1pdChzZWxmLCBhbmNidWZzaXplLCBtYXhob3A9MjU1LCBpZ25vcmVmbGFncz0wKToKKyAgICAgICAgIyBSZWNlaXZlIGhvcCBsaW1pdCBpbnRvIGFuY2J1ZnNpemUgYnl0ZXMgb2YgYW5jaWxsYXJ5IGRhdGEKKyAgICAgICAgIyBzcGFjZS4gIENoZWNrIHRoYXQgZGF0YSBpcyBNU0csIGFuY2lsbGFyeSBkYXRhIGlzIG5vdAorICAgICAgICAjIHRydW5jYXRlZCAoYnV0IGlnbm9yZSBhbnkgZmxhZ3MgaW4gaWdub3JlZmxhZ3MpLCBhbmQgaG9wCisgICAgICAgICMgbGltaXQgaXMgYmV0d2VlbiAwIGFuZCBtYXhob3AgaW5jbHVzaXZlLgorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQVjZfUkVDVkhPUExJTUlULCAxKQorICAgICAgICBzZWxmLm1pc2NfZXZlbnQuc2V0KCkKKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIGFuY2J1ZnNpemUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUsIGNoZWNrdW5zZXQ9c29ja2V0Lk1TR19DVFJVTkMsCisgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmU9aWdub3JlZmxhZ3MpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYW5jZGF0YSksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShhbmNkYXRhWzBdLCB0dXBsZSkKKyAgICAgICAgY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEgPSBhbmNkYXRhWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ19sZXZlbCwgc29ja2V0LklQUFJPVE9fSVBWNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX3R5cGUsIHNvY2tldC5JUFY2X0hPUExJTUlUKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY21zZ19kYXRhLCBieXRlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY21zZ19kYXRhKSwgU0laRU9GX0lOVCkKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCJpIikKKyAgICAgICAgYS5mcm9tYnl0ZXMoY21zZ19kYXRhKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChhWzBdLCAwKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChhWzBdLCBtYXhob3ApCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiKQorICAgIGRlZiB0ZXN0UmVjdkhvcExpbWl0KHNlbGYpOgorICAgICAgICAjIFRlc3QgcmVjZWl2aW5nIHRoZSBwYWNrZXQgaG9wIGxpbWl0IGFzIGFuY2lsbGFyeSBkYXRhLgorICAgICAgICBzZWxmLmNoZWNrSG9wTGltaXQoYW5jYnVmc2l6ZT0xMDI0MCkKKworICAgIEB0ZXN0UmVjdkhvcExpbWl0LmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0UmVjdkhvcExpbWl0KHNlbGYpOgorICAgICAgICAjIE5lZWQgdG8gd2FpdCB1bnRpbCBzZXJ2ZXIgaGFzIGFza2VkIHRvIHJlY2VpdmUgYW5jaWxsYXJ5CisgICAgICAgICMgZGF0YSwgYXMgaW1wbGVtZW50YXRpb25zIGFyZSBub3QgcmVxdWlyZWQgdG8gYnVmZmVyIGl0CisgICAgICAgICMgb3RoZXJ3aXNlLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIikKKyAgICBkZWYgdGVzdFJlY3ZIb3BMaW1pdENNU0dfU1BBQ0Uoc2VsZik6CisgICAgICAgICMgVGVzdCByZWNlaXZpbmcgaG9wIGxpbWl0LCB1c2luZyBDTVNHX1NQQUNFIHRvIGNhbGN1bGF0ZSBidWZmZXIgc2l6ZS4KKyAgICAgICAgc2VsZi5jaGVja0hvcExpbWl0KGFuY2J1ZnNpemU9c29ja2V0LkNNU0dfU1BBQ0UoU0laRU9GX0lOVCkpCisKKyAgICBAdGVzdFJlY3ZIb3BMaW1pdENNU0dfU1BBQ0UuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RSZWN2SG9wTGltaXRDTVNHX1NQQUNFKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgICMgQ291bGQgdGVzdCByZWNlaXZpbmcgaW50byBidWZmZXIgc2l6ZWQgdXNpbmcgQ01TR19MRU4sIGJ1dCBSRkMKKyAgICAjIDM1NDIgc2F5cyBwb3J0YWJsZSBhcHBsaWNhdGlvbnMgbXVzdCBwcm92aWRlIHNwYWNlIGZvciB0cmFpbGluZworICAgICMgcGFkZGluZy4gIEltcGxlbWVudGF0aW9ucyBtYXkgc2V0IE1TR19DVFJVTkMgaWYgdGhlcmUgaXNuJ3QKKyAgICAjIGVub3VnaCBzcGFjZSBmb3IgdGhlIHBhZGRpbmcuCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiKQorICAgIGRlZiB0ZXN0U2V0SG9wTGltaXQoc2VsZik6CisgICAgICAgICMgVGVzdCBzZXR0aW5nIGhvcCBsaW1pdCBvbiBvdXRnb2luZyBwYWNrZXQgYW5kIHJlY2VpdmluZyBpdAorICAgICAgICAjIGF0IHRoZSBvdGhlciBlbmQuCisgICAgICAgIHNlbGYuY2hlY2tIb3BMaW1pdChhbmNidWZzaXplPTEwMjQwLCBtYXhob3A9c2VsZi5ob3BfbGltaXQpCisKKyAgICBAdGVzdFNldEhvcExpbWl0LmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2V0SG9wTGltaXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0ddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzb2NrZXQuSVBQUk9UT19JUFY2LCBzb2NrZXQuSVBWNl9IT1BMSU1JVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbc2VsZi5ob3BfbGltaXRdKSldKSwKKyAgICAgICAgICAgIGxlbihNU0cpKQorCisgICAgZGVmIGNoZWNrVHJhZmZpY0NsYXNzQW5kSG9wTGltaXQoc2VsZiwgYW5jYnVmc2l6ZSwgbWF4aG9wPTI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVmbGFncz0wKToKKyAgICAgICAgIyBSZWNlaXZlIHRyYWZmaWMgY2xhc3MgYW5kIGhvcCBsaW1pdCBpbnRvIGFuY2J1ZnNpemUgYnl0ZXMgb2YKKyAgICAgICAgIyBhbmNpbGxhcnkgZGF0YSBzcGFjZS4gIENoZWNrIHRoYXQgZGF0YSBpcyBNU0csIGFuY2lsbGFyeQorICAgICAgICAjIGRhdGEgaXMgbm90IHRydW5jYXRlZCAoYnV0IGlnbm9yZSBhbnkgZmxhZ3MgaW4gaWdub3JlZmxhZ3MpLAorICAgICAgICAjIGFuZCB0cmFmZmljIGNsYXNzIGFuZCBob3AgbGltaXQgYXJlIGluIHJhbmdlIChob3AgbGltaXQgbm8KKyAgICAgICAgIyBtb3JlIHRoYW4gbWF4aG9wKS4KKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19JUFY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFY2X1JFQ1ZIT1BMSU1JVCwgMSkKKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19JUFY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFY2X1JFQ1ZUQ0xBU1MsIDEpCisgICAgICAgIHNlbGYubWlzY19ldmVudC5zZXQoKQorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgYW5jYnVmc2l6ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgY2hlY2t1bnNldD1zb2NrZXQuTVNHX0NUUlVOQywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZT1pZ25vcmVmbGFncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYW5jZGF0YSksIDIpCisgICAgICAgIGFuY21hcCA9IHNlbGYuYW5jaWxsYXJ5TWFwcGluZyhhbmNkYXRhKQorCisgICAgICAgIHRjZGF0YSA9IGFuY21hcFsoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfVENMQVNTKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odGNkYXRhKSwgU0laRU9GX0lOVCkKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCJpIikKKyAgICAgICAgYS5mcm9tYnl0ZXModGNkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChhWzBdLCAwKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChhWzBdLCAyNTUpCisKKyAgICAgICAgaGxkYXRhID0gYW5jbWFwWyhzb2NrZXQuSVBQUk9UT19JUFY2LCBzb2NrZXQuSVBWNl9IT1BMSU1JVCldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGhsZGF0YSksIFNJWkVPRl9JTlQpCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgiaSIpCisgICAgICAgIGEuZnJvbWJ5dGVzKGhsZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoYVswXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoYVswXSwgbWF4aG9wKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIiwKKyAgICAgICAgICAgICAgICAgICJJUFY2X1JFQ1ZUQ0xBU1MiLCAiSVBWNl9UQ0xBU1MiKQorICAgIGRlZiB0ZXN0UmVjdlRyYWZmaWNDbGFzc0FuZEhvcExpbWl0KHNlbGYpOgorICAgICAgICAjIFRlc3QgcmVjZWl2aW5nIHRyYWZmaWMgY2xhc3MgYW5kIGhvcCBsaW1pdCBhcyBhbmNpbGxhcnkgZGF0YS4KKyAgICAgICAgc2VsZi5jaGVja1RyYWZmaWNDbGFzc0FuZEhvcExpbWl0KGFuY2J1ZnNpemU9MTAyNDApCisKKyAgICBAdGVzdFJlY3ZUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdC5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFJlY3ZUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiLCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIsCisgICAgICAgICAgICAgICAgICAiSVBWNl9SRUNWVENMQVNTIiwgIklQVjZfVENMQVNTIikKKyAgICBkZWYgdGVzdFJlY3ZUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdENNU0dfU1BBQ0Uoc2VsZik6CisgICAgICAgICMgVGVzdCByZWNlaXZpbmcgdHJhZmZpYyBjbGFzcyBhbmQgaG9wIGxpbWl0LCB1c2luZworICAgICAgICAjIENNU0dfU1BBQ0UoKSB0byBjYWxjdWxhdGUgYnVmZmVyIHNpemUuCisgICAgICAgIHNlbGYuY2hlY2tUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdCgKKyAgICAgICAgICAgIGFuY2J1ZnNpemU9c29ja2V0LkNNU0dfU1BBQ0UoU0laRU9GX0lOVCkgKiAyKQorCisgICAgQHRlc3RSZWN2VHJhZmZpY0NsYXNzQW5kSG9wTGltaXRDTVNHX1NQQUNFLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0UmVjdlRyYWZmaWNDbGFzc0FuZEhvcExpbWl0Q01TR19TUEFDRShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiLCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIsCisgICAgICAgICAgICAgICAgICAiSVBWNl9SRUNWVENMQVNTIiwgIklQVjZfVENMQVNTIikKKyAgICBkZWYgdGVzdFNldFRyYWZmaWNDbGFzc0FuZEhvcExpbWl0KHNlbGYpOgorICAgICAgICAjIFRlc3Qgc2V0dGluZyB0cmFmZmljIGNsYXNzIGFuZCBob3AgbGltaXQgb24gb3V0Z29pbmcgcGFja2V0LAorICAgICAgICAjIGFuZCByZWNlaXZpbmcgdGhlbSBhdCB0aGUgb3RoZXIgZW5kLgorICAgICAgICBzZWxmLmNoZWNrVHJhZmZpY0NsYXNzQW5kSG9wTGltaXQoYW5jYnVmc2l6ZT0xMDI0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGhvcD1zZWxmLmhvcF9saW1pdCkKKworICAgIEB0ZXN0U2V0VHJhZmZpY0NsYXNzQW5kSG9wTGltaXQuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTZXRUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNvY2tldC5JUFBST1RPX0lQVjYsIHNvY2tldC5JUFY2X1RDTEFTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbc2VsZi50cmFmZmljX2NsYXNzXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzb2NrZXQuSVBQUk9UT19JUFY2LCBzb2NrZXQuSVBWNl9IT1BMSU1JVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbc2VsZi5ob3BfbGltaXRdKSldKSwKKyAgICAgICAgICAgIGxlbihNU0cpKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIpCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIiwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiLAorICAgICAgICAgICAgICAgICAgIklQVjZfUkVDVlRDTEFTUyIsICJJUFY2X1RDTEFTUyIpCisgICAgZGVmIHRlc3RPZGRDbXNnU2l6ZShzZWxmKToKKyAgICAgICAgIyBUcnkgdG8gc2VuZCBhbmNpbGxhcnkgZGF0YSB3aXRoIGZpcnN0IGl0ZW0gb25lIGJ5dGUgdG9vCisgICAgICAgICMgbG9uZy4gIEZhbGwgYmFjayB0byBzZW5kaW5nIHdpdGggY29ycmVjdCBzaXplIGlmIHRoaXMgZmFpbHMsCisgICAgICAgICMgYW5kIGNoZWNrIHRoYXQgc2Vjb25kIGl0ZW0gd2FzIGhhbmRsZWQgY29ycmVjdGx5LgorICAgICAgICBzZWxmLmNoZWNrVHJhZmZpY0NsYXNzQW5kSG9wTGltaXQoYW5jYnVmc2l6ZT0xMDI0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGhvcD1zZWxmLmhvcF9saW1pdCkKKworICAgIEB0ZXN0T2RkQ21zZ1NpemUuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RPZGRDbXNnU2l6ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuYnl0ZXMgPSBzZWxmLnNlbmRtc2dUb1NlcnZlcigKKyAgICAgICAgICAgICAgICBbTVNHXSwKKyAgICAgICAgICAgICAgICBbKHNvY2tldC5JUFBST1RPX0lQVjYsIHNvY2tldC5JUFY2X1RDTEFTUywKKyAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW3NlbGYudHJhZmZpY19jbGFzc10pLnRvYnl0ZXMoKSArIGIiXHgwMCIpLAorICAgICAgICAgICAgICAgICAoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfSE9QTElNSVQsCisgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtzZWxmLmhvcF9saW1pdF0pKV0pCisgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlLmVycm5vLCBpbnQpCisgICAgICAgICAgICBuYnl0ZXMgPSBzZWxmLnNlbmRtc2dUb1NlcnZlcigKKyAgICAgICAgICAgICAgICBbTVNHXSwKKyAgICAgICAgICAgICAgICBbKHNvY2tldC5JUFBST1RPX0lQVjYsIHNvY2tldC5JUFY2X1RDTEFTUywKKyAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW3NlbGYudHJhZmZpY19jbGFzc10pKSwKKyAgICAgICAgICAgICAgICAgKHNvY2tldC5JUFBST1RPX0lQVjYsIHNvY2tldC5JUFY2X0hPUExJTUlULAorICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbc2VsZi5ob3BfbGltaXRdKSldKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYnl0ZXMsIGxlbihNU0cpKQorCisgICAgIyBUZXN0cyBmb3IgcHJvcGVyIGhhbmRsaW5nIG9mIHRydW5jYXRlZCBhbmNpbGxhcnkgZGF0YQorCisgICAgZGVmIGNoZWNrSG9wTGltaXRUcnVuY2F0ZWRIZWFkZXIoc2VsZiwgYW5jYnVmc2l6ZSwgaWdub3JlZmxhZ3M9MCk6CisgICAgICAgICMgUmVjZWl2ZSBob3AgbGltaXQgaW50byBhbmNidWZzaXplIGJ5dGVzIG9mIGFuY2lsbGFyeSBkYXRhCisgICAgICAgICMgc3BhY2UsIHdoaWNoIHNob3VsZCBiZSB0b28gc21hbGwgdG8gY29udGFpbiB0aGUgYW5jaWxsYXJ5CisgICAgICAgICMgZGF0YSBoZWFkZXIgKGlmIGFuY2J1ZnNpemUgaXMgTm9uZSwgcGFzcyBubyBzZWNvbmQgYXJndW1lbnQKKyAgICAgICAgIyB0byByZWN2bXNnKCkpLiAgQ2hlY2sgdGhhdCBkYXRhIGlzIE1TRywgTVNHX0NUUlVOQyBpcyBzZXQKKyAgICAgICAgIyAodW5sZXNzIGluY2x1ZGVkIGluIGlnbm9yZWZsYWdzKSwgYW5kIG5vIGFuY2lsbGFyeSBkYXRhIGlzCisgICAgICAgICMgcmV0dXJuZWQuCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fSVBWNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBWNl9SRUNWSE9QTElNSVQsIDEpCisgICAgICAgIHNlbGYubWlzY19ldmVudC5zZXQoKQorICAgICAgICBhcmdzID0gKCkgaWYgYW5jYnVmc2l6ZSBpcyBOb25lIGVsc2UgKGFuY2J1ZnNpemUsKQorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgKmFyZ3MpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUsIGNoZWNrc2V0PXNvY2tldC5NU0dfQ1RSVU5DLAorICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlPWlnbm9yZWZsYWdzKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIikKKyAgICBkZWYgdGVzdENtc2dUcnVuY05vQnVmU2l6ZShzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IG5vIGFuY2lsbGFyeSBkYXRhIGlzIHJlY2VpdmVkIHdoZW4gbm8gYW5jaWxsYXJ5CisgICAgICAgICMgYnVmZmVyIHNpemUgaXMgcHJvdmlkZWQuCisgICAgICAgIHNlbGYuY2hlY2tIb3BMaW1pdFRydW5jYXRlZEhlYWRlcihhbmNidWZzaXplPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEJTRCBzZWVtcyB0byBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTVNHX0NUUlVOQyBvbmx5IGlmIGFuIGl0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaGFzIGJlZW4gcGFydGlhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlY2VpdmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZmxhZ3M9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICBAdGVzdENtc2dUcnVuY05vQnVmU2l6ZS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdENtc2dUcnVuY05vQnVmU2l6ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiKQorICAgIGRlZiB0ZXN0U2luZ2xlQ21zZ1RydW5jMChzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IG5vIGFuY2lsbGFyeSBkYXRhIGlzIHJlY2VpdmVkIHdoZW4gYW5jaWxsYXJ5CisgICAgICAgICMgYnVmZmVyIHNpemUgaXMgemVyby4KKyAgICAgICAgc2VsZi5jaGVja0hvcExpbWl0VHJ1bmNhdGVkSGVhZGVyKGFuY2J1ZnNpemU9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWZsYWdzPXNvY2tldC5NU0dfQ1RSVU5DKQorCisgICAgQHRlc3RTaW5nbGVDbXNnVHJ1bmMwLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2luZ2xlQ21zZ1RydW5jMChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICAjIENoZWNrIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgaXMgcmV0dXJuZWQgZm9yIHZhcmlvdXMgbm9uLXplcm8KKyAgICAjIChidXQgc3RpbGwgdG9vIHNtYWxsKSBidWZmZXIgc2l6ZXMuCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiKQorICAgIGRlZiB0ZXN0U2luZ2xlQ21zZ1RydW5jMShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0hvcExpbWl0VHJ1bmNhdGVkSGVhZGVyKGFuY2J1ZnNpemU9MSkKKworICAgIEB0ZXN0U2luZ2xlQ21zZ1RydW5jMS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNpbmdsZUNtc2dUcnVuYzEoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIikKKyAgICBkZWYgdGVzdFNpbmdsZUNtc2dUcnVuYzJJbnQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tIb3BMaW1pdFRydW5jYXRlZEhlYWRlcihhbmNidWZzaXplPTIgKiBTSVpFT0ZfSU5UKQorCisgICAgQHRlc3RTaW5nbGVDbXNnVHJ1bmMySW50LmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2luZ2xlQ21zZ1RydW5jMkludChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiKQorICAgIGRlZiB0ZXN0U2luZ2xlQ21zZ1RydW5jTGVuME1pbnVzMShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0hvcExpbWl0VHJ1bmNhdGVkSGVhZGVyKGFuY2J1ZnNpemU9c29ja2V0LkNNU0dfTEVOKDApIC0gMSkKKworICAgIEB0ZXN0U2luZ2xlQ21zZ1RydW5jTGVuME1pbnVzMS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNpbmdsZUNtc2dUcnVuY0xlbjBNaW51czEoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIikKKyAgICBkZWYgdGVzdFNpbmdsZUNtc2dUcnVuY0luRGF0YShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRydW5jYXRpb24gb2YgYSBjb250cm9sIG1lc3NhZ2UgaW5zaWRlIGl0cyBhc3NvY2lhdGVkCisgICAgICAgICMgZGF0YS4gIFRoZSBtZXNzYWdlIG1heSBiZSByZXR1cm5lZCB3aXRoIGl0cyBkYXRhIHRydW5jYXRlZCwKKyAgICAgICAgIyBvciBub3QgcmV0dXJuZWQgYXQgYWxsLgorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQVjZfUkVDVkhPUExJTUlULCAxKQorICAgICAgICBzZWxmLm1pc2NfZXZlbnQuc2V0KCkKKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKAorICAgICAgICAgICAgc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpLCBzb2NrZXQuQ01TR19MRU4oU0laRU9GX0lOVCkgLSAxKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3NldD1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oYW5jZGF0YSksIDEpCisgICAgICAgIGlmIGFuY2RhdGE6CisgICAgICAgICAgICBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSA9IGFuY2RhdGFbMF0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ19sZXZlbCwgc29ja2V0LklQUFJPVE9fSVBWNikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ190eXBlLCBzb2NrZXQuSVBWNl9IT1BMSU1JVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsZW4oY21zZ19kYXRhKSwgU0laRU9GX0lOVCkKKworICAgIEB0ZXN0U2luZ2xlQ21zZ1RydW5jSW5EYXRhLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2luZ2xlQ21zZ1RydW5jSW5EYXRhKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIGRlZiBjaGVja1RydW5jYXRlZFNlY29uZEhlYWRlcihzZWxmLCBhbmNidWZzaXplLCBpZ25vcmVmbGFncz0wKToKKyAgICAgICAgIyBSZWNlaXZlIHRyYWZmaWMgY2xhc3MgYW5kIGhvcCBsaW1pdCBpbnRvIGFuY2J1ZnNpemUgYnl0ZXMgb2YKKyAgICAgICAgIyBhbmNpbGxhcnkgZGF0YSBzcGFjZSwgd2hpY2ggc2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0bworICAgICAgICAjIGNvbnRhaW4gdGhlIGZpcnN0IGl0ZW0sIGJ1dCB0b28gc21hbGwgdG8gY29udGFpbiB0aGUgaGVhZGVyCisgICAgICAgICMgb2YgdGhlIHNlY29uZC4gIENoZWNrIHRoYXQgZGF0YSBpcyBNU0csIE1TR19DVFJVTkMgaXMgc2V0CisgICAgICAgICMgKHVubGVzcyBpbmNsdWRlZCBpbiBpZ25vcmVmbGFncyksIGFuZCBvbmx5IG9uZSBhbmNpbGxhcnkKKyAgICAgICAgIyBkYXRhIGl0ZW0gaXMgcmV0dXJuZWQuCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fSVBWNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBWNl9SRUNWSE9QTElNSVQsIDEpCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fSVBWNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBWNl9SRUNWVENMQVNTLCAxKQorICAgICAgICBzZWxmLm1pc2NfZXZlbnQuc2V0KCkKKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIGFuY2J1ZnNpemUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUsIGNoZWNrc2V0PXNvY2tldC5NU0dfQ1RSVU5DLAorICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlPWlnbm9yZWZsYWdzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFuY2RhdGEpLCAxKQorICAgICAgICBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSA9IGFuY2RhdGFbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX2xldmVsLCBzb2NrZXQuSVBQUk9UT19JUFY2KQorICAgICAgICBzZWxmLmFzc2VydEluKGNtc2dfdHlwZSwge3NvY2tldC5JUFY2X1RDTEFTUywgc29ja2V0LklQVjZfSE9QTElNSVR9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjbXNnX2RhdGEpLCBTSVpFT0ZfSU5UKQorICAgICAgICBhID0gYXJyYXkuYXJyYXkoImkiKQorICAgICAgICBhLmZyb21ieXRlcyhjbXNnX2RhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGFbMF0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGFbMF0sIDI1NSkKKworICAgICMgVHJ5IHRoZSBhYm92ZSB0ZXN0IHdpdGggdmFyaW91cyBidWZmZXIgc2l6ZXMuCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiLCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIsCisgICAgICAgICAgICAgICAgICAiSVBWNl9SRUNWVENMQVNTIiwgIklQVjZfVENMQVNTIikKKyAgICBkZWYgdGVzdFNlY29uZENtc2dUcnVuYzAoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRTZWNvbmRIZWFkZXIoc29ja2V0LkNNU0dfU1BBQ0UoU0laRU9GX0lOVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZmxhZ3M9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICBAdGVzdFNlY29uZENtc2dUcnVuYzAuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTZWNvbmRDbXNnVHJ1bmMwKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIiwKKyAgICAgICAgICAgICAgICAgICJJUFY2X1JFQ1ZUQ0xBU1MiLCAiSVBWNl9UQ0xBU1MiKQorICAgIGRlZiB0ZXN0U2Vjb25kQ21zZ1RydW5jMShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZFNlY29uZEhlYWRlcihzb2NrZXQuQ01TR19TUEFDRShTSVpFT0ZfSU5UKSArIDEpCisKKyAgICBAdGVzdFNlY29uZENtc2dUcnVuYzEuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTZWNvbmRDbXNnVHJ1bmMxKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIiwKKyAgICAgICAgICAgICAgICAgICJJUFY2X1JFQ1ZUQ0xBU1MiLCAiSVBWNl9UQ0xBU1MiKQorICAgIGRlZiB0ZXN0U2Vjb25kQ21zZ1RydW5jMkludChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZFNlY29uZEhlYWRlcihzb2NrZXQuQ01TR19TUEFDRShTSVpFT0ZfSU5UKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAqIFNJWkVPRl9JTlQpCisKKyAgICBAdGVzdFNlY29uZENtc2dUcnVuYzJJbnQuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTZWNvbmRDbXNnVHJ1bmMySW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIiwKKyAgICAgICAgICAgICAgICAgICJJUFY2X1JFQ1ZUQ0xBU1MiLCAiSVBWNl9UQ0xBU1MiKQorICAgIGRlZiB0ZXN0U2Vjb25kQ21zZ1RydW5jTGVuME1pbnVzMShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZFNlY29uZEhlYWRlcihzb2NrZXQuQ01TR19TUEFDRShTSVpFT0ZfSU5UKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LkNNU0dfTEVOKDApIC0gMSkKKworICAgIEB0ZXN0U2Vjb25kQ21zZ1RydW5jTGVuME1pbnVzMS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNlY29uZENtc2dUcnVuY0xlbjBNaW51czEoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIiwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiLAorICAgICAgICAgICAgICAgICAgIklQVjZfUkVDVlRDTEFTUyIsICJJUFY2X1RDTEFTUyIpCisgICAgZGVmIHRlc3RTZWNvbWRDbXNnVHJ1bmNJbkRhdGEoc2VsZik6CisgICAgICAgICMgVGVzdCB0cnVuY2F0aW9uIG9mIHRoZSBzZWNvbmQgb2YgdHdvIGNvbnRyb2wgbWVzc2FnZXMgaW5zaWRlCisgICAgICAgICMgaXRzIGFzc29jaWF0ZWQgZGF0YS4KKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19JUFY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFY2X1JFQ1ZIT1BMSU1JVCwgMSkKKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19JUFY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFY2X1JFQ1ZUQ0xBU1MsIDEpCisgICAgICAgIHNlbGYubWlzY19ldmVudC5zZXQoKQorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coCisgICAgICAgICAgICBzZWxmLnNlcnZfc29jaywgbGVuKE1TRyksCisgICAgICAgICAgICBzb2NrZXQuQ01TR19TUEFDRShTSVpFT0ZfSU5UKSArIHNvY2tldC5DTVNHX0xFTihTSVpFT0ZfSU5UKSAtIDEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUsIGNoZWNrc2V0PXNvY2tldC5NU0dfQ1RSVU5DKQorCisgICAgICAgIGNtc2dfdHlwZXMgPSB7c29ja2V0LklQVjZfVENMQVNTLCBzb2NrZXQuSVBWNl9IT1BMSU1JVH0KKworICAgICAgICBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSA9IGFuY2RhdGEucG9wKDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ19sZXZlbCwgc29ja2V0LklQUFJPVE9fSVBWNikKKyAgICAgICAgY21zZ190eXBlcy5yZW1vdmUoY21zZ190eXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjbXNnX2RhdGEpLCBTSVpFT0ZfSU5UKQorICAgICAgICBhID0gYXJyYXkuYXJyYXkoImkiKQorICAgICAgICBhLmZyb21ieXRlcyhjbXNnX2RhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGFbMF0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGFbMF0sIDI1NSkKKworICAgICAgICBpZiBhbmNkYXRhOgorICAgICAgICAgICAgY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEgPSBhbmNkYXRhLnBvcCgwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX2xldmVsLCBzb2NrZXQuSVBQUk9UT19JUFY2KQorICAgICAgICAgICAgY21zZ190eXBlcy5yZW1vdmUoY21zZ190eXBlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihjbXNnX2RhdGEpLCBTSVpFT0ZfSU5UKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisKKyAgICBAdGVzdFNlY29tZENtc2dUcnVuY0luRGF0YS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNlY29tZENtc2dUcnVuY0luRGF0YShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKworIyBEZXJpdmUgY29uY3JldGUgdGVzdCBjbGFzc2VzIGZvciBkaWZmZXJlbnQgc29ja2V0IHR5cGVzLgorCitjbGFzcyBTZW5kcmVjdm1zZ1VEUFRlc3RCYXNlKFNlbmRyZWN2bXNnRGdyYW1GbGFnc0Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnQ29ubmVjdGlvbmxlc3NCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWRlZFNvY2tldFRlc3RNaXhpbiwgVURQVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgU2VuZG1zZ1VEUFRlc3QoU2VuZG1zZ0Nvbm5lY3Rpb25sZXNzVGVzdHMsIFNlbmRyZWN2bXNnVURQVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ1VEUFRlc3QoUmVjdm1zZ1Rlc3RzLCBTZW5kcmVjdm1zZ1VEUFRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2dfaW50byIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ0ludG9VRFBUZXN0KFJlY3Ztc2dJbnRvVGVzdHMsIFNlbmRyZWN2bXNnVURQVGVzdEJhc2UpOgorICAgIHBhc3MKKworCitjbGFzcyBTZW5kcmVjdm1zZ1VEUDZUZXN0QmFzZShTZW5kcmVjdm1zZ0RncmFtRmxhZ3NCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dDb25uZWN0aW9ubGVzc0Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWRlZFNvY2tldFRlc3RNaXhpbiwgVURQNlRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciKQorQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5JUFY2X0VOQUJMRUQsICdJUHY2IHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK0ByZXF1aXJlU29ja2V0KCJBRl9JTkVUNiIsICJTT0NLX0RHUkFNIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBTZW5kbXNnVURQNlRlc3QoU2VuZG1zZ0Nvbm5lY3Rpb25sZXNzVGVzdHMsIFNlbmRyZWN2bXNnVURQNlRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2ciKQorQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5JUFY2X0VOQUJMRUQsICdJUHY2IHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK0ByZXF1aXJlU29ja2V0KCJBRl9JTkVUNiIsICJTT0NLX0RHUkFNIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnVURQNlRlc3QoUmVjdm1zZ1Rlc3RzLCBTZW5kcmVjdm1zZ1VEUDZUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJyZWN2bXNnX2ludG8iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5JUFY2X0VOQUJMRUQsICdJUHY2IHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK0ByZXF1aXJlU29ja2V0KCJBRl9JTkVUNiIsICJTT0NLX0RHUkFNIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnSW50b1VEUDZUZXN0KFJlY3Ztc2dJbnRvVGVzdHMsIFNlbmRyZWN2bXNnVURQNlRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2ciKQorQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5JUFY2X0VOQUJMRUQsICdJUHY2IHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK0ByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBQUk9UT19JUFY2IikKK0ByZXF1aXJlU29ja2V0KCJBRl9JTkVUNiIsICJTT0NLX0RHUkFNIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnUkZDMzU0MkFuY2lsbGFyeVVEUDZUZXN0KFJGQzM1NDJBbmNpbGxhcnlUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ1VEUDZUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJyZWN2bXNnX2ludG8iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5JUFY2X0VOQUJMRUQsICdJUHY2IHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK0ByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBQUk9UT19JUFY2IikKK0ByZXF1aXJlU29ja2V0KCJBRl9JTkVUNiIsICJTT0NLX0RHUkFNIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnSW50b1JGQzM1NDJBbmNpbGxhcnlVRFA2VGVzdChSZWN2bXNnSW50b01peGluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkZDMzU0MkFuY2lsbGFyeVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ1VEUDZUZXN0QmFzZSk6CisgICAgcGFzcworCisKK2NsYXNzIFNlbmRyZWN2bXNnVENQVGVzdEJhc2UoU2VuZHJlY3Ztc2dDb25uZWN0ZWRCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25uZWN0ZWRTdHJlYW1UZXN0TWl4aW4sIFRDUFRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFNlbmRtc2dUQ1BUZXN0KFNlbmRtc2dTdHJlYW1UZXN0cywgU2VuZHJlY3Ztc2dUQ1BUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJyZWN2bXNnIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnVENQVGVzdChSZWN2bXNnVGVzdHMsIFJlY3Ztc2dHZW5lcmljU3RyZWFtVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ1RDUFRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2dfaW50byIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ0ludG9UQ1BUZXN0KFJlY3Ztc2dJbnRvVGVzdHMsIFJlY3Ztc2dHZW5lcmljU3RyZWFtVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dUQ1BUZXN0QmFzZSk6CisgICAgcGFzcworCisKK2NsYXNzIFNlbmRyZWN2bXNnU0NUUFN0cmVhbVRlc3RCYXNlKFNlbmRyZWN2bXNnU0NUUEZsYWdzQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnQ29ubmVjdGVkQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3RlZFN0cmVhbVRlc3RNaXhpbiwgU0NUUFN0cmVhbUJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIpCitAcmVxdWlyZVNvY2tldCgiQUZfSU5FVCIsICJTT0NLX1NUUkVBTSIsICJJUFBST1RPX1NDVFAiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFNlbmRtc2dTQ1RQU3RyZWFtVGVzdChTZW5kbXNnU3RyZWFtVGVzdHMsIFNlbmRyZWN2bXNnU0NUUFN0cmVhbVRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2ciKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQiLCAiU09DS19TVFJFQU0iLCAiSVBQUk9UT19TQ1RQIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnU0NUUFN0cmVhbVRlc3QoUmVjdm1zZ1Rlc3RzLCBSZWN2bXNnR2VuZXJpY1N0cmVhbVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnU0NUUFN0cmVhbVRlc3RCYXNlKToKKworICAgIGRlZiB0ZXN0UmVjdm1zZ0VPRihzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3VwZXIoUmVjdm1zZ1NDVFBTdHJlYW1UZXN0LCBzZWxmKS50ZXN0UmVjdm1zZ0VPRigpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT1RDT05OOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJzcG9yYWRpYyBFTk9UQ09OTiAoa2VybmVsIGlzc3VlPykgLSBzZWUgaXNzdWUgIzEzODc2IikKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZ19pbnRvIikKK0ByZXF1aXJlU29ja2V0KCJBRl9JTkVUIiwgIlNPQ0tfU1RSRUFNIiwgIklQUFJPVE9fU0NUUCIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ0ludG9TQ1RQU3RyZWFtVGVzdChSZWN2bXNnSW50b1Rlc3RzLCBSZWN2bXNnR2VuZXJpY1N0cmVhbVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ1NDVFBTdHJlYW1UZXN0QmFzZSk6CisKKyAgICBkZWYgdGVzdFJlY3Ztc2dFT0Yoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN1cGVyKFJlY3Ztc2dJbnRvU0NUUFN0cmVhbVRlc3QsIHNlbGYpLnRlc3RSZWN2bXNnRU9GKCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PVENPTk46CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInNwb3JhZGljIEVOT1RDT05OIChrZXJuZWwgaXNzdWU/KSAtIHNlZSBpc3N1ZSAjMTM4NzYiKQorCisKK2NsYXNzIFNlbmRyZWN2bXNnVW5peFN0cmVhbVRlc3RCYXNlKFNlbmRyZWN2bXNnQ29ubmVjdGVkQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3RlZFN0cmVhbVRlc3RNaXhpbiwgVW5peFN0cmVhbUJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIpCitAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkFGX1VOSVgiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFNlbmRtc2dVbml4U3RyZWFtVGVzdChTZW5kbXNnU3RyZWFtVGVzdHMsIFNlbmRyZWN2bXNnVW5peFN0cmVhbVRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2ciKQorQHJlcXVpcmVBdHRycyhzb2NrZXQsICJBRl9VTklYIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnVW5peFN0cmVhbVRlc3QoUmVjdm1zZ1Rlc3RzLCBSZWN2bXNnR2VuZXJpY1N0cmVhbVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnVW5peFN0cmVhbVRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2dfaW50byIpCitAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkFGX1VOSVgiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dJbnRvVW5peFN0cmVhbVRlc3QoUmVjdm1zZ0ludG9UZXN0cywgUmVjdm1zZ0dlbmVyaWNTdHJlYW1UZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dVbml4U3RyZWFtVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIsICJyZWN2bXNnIikKK0ByZXF1aXJlQXR0cnMoc29ja2V0LCAiQUZfVU5JWCIsICJTT0xfU09DS0VUIiwgIlNDTV9SSUdIVFMiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dTQ01SaWdodHNTdHJlYW1UZXN0KFNDTVJpZ2h0c1Rlc3QsIFNlbmRyZWN2bXNnVW5peFN0cmVhbVRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciLCAicmVjdm1zZ19pbnRvIikKK0ByZXF1aXJlQXR0cnMoc29ja2V0LCAiQUZfVU5JWCIsICJTT0xfU09DS0VUIiwgIlNDTV9SSUdIVFMiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dJbnRvU0NNUmlnaHRzU3RyZWFtVGVzdChSZWN2bXNnSW50b01peGluLCBTQ01SaWdodHNUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnVW5peFN0cmVhbVRlc3RCYXNlKToKKyAgICBwYXNzCisKKworIyBUZXN0IGludGVycnVwdGluZyB0aGUgaW50ZXJydXB0aWJsZSBzZW5kL3JlY2VpdmUgbWV0aG9kcyB3aXRoIGEKKyMgc2lnbmFsIHdoZW4gYSB0aW1lb3V0IGlzIHNldC4gIFRoZXNlIHRlc3RzIGF2b2lkIGhhdmluZyBtdWx0aXBsZQorIyB0aHJlYWRzIGFsaXZlIGR1cmluZyB0aGUgdGVzdCBzbyB0aGF0IHRoZSBPUyBjYW5ub3QgZGVsaXZlciB0aGUKKyMgc2lnbmFsIHRvIHRoZSB3cm9uZyBvbmUuCisKK2NsYXNzIEludGVycnVwdGVkVGltZW91dEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgQmFzZSBjbGFzcyBmb3IgaW50ZXJydXB0ZWQgc2VuZC9yZWNlaXZlIHRlc3RzLiAgSW5zdGFsbHMgYW4KKyAgICAjIGVtcHR5IGhhbmRsZXIgZm9yIFNJR0FMUk0gYW5kIHJlbW92ZXMgaXQgb24gdGVhcmRvd24sIGFsb25nIHdpdGgKKyAgICAjIGFueSBzY2hlZHVsZWQgYWxhcm1zLgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKyAgICAgICAgb3JpZ19hbHJtX2hhbmRsZXIgPSBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHNpZ251bSwgZnJhbWU6IE5vbmUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaWduYWwuc2lnbmFsLCBzaWduYWwuU0lHQUxSTSwgb3JpZ19hbHJtX2hhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLnNldEFsYXJtLCAwKQorCisgICAgIyBUaW1lb3V0IGZvciBzb2NrZXQgb3BlcmF0aW9ucworICAgIHRpbWVvdXQgPSA0LjAKKworICAgICMgUHJvdmlkZSBzZXRBbGFybSgpIG1ldGhvZCB0byBzY2hlZHVsZSBkZWxpdmVyeSBvZiBTSUdBTFJNIGFmdGVyCisgICAgIyBnaXZlbiBudW1iZXIgb2Ygc2Vjb25kcywgb3IgY2FuY2VsIGl0IGlmIHplcm8sIGFuZCBhbgorICAgICMgYXBwcm9wcmlhdGUgdGltZSB2YWx1ZSB0byB1c2UuICBVc2Ugc2V0aXRpbWVyKCkgaWYgYXZhaWxhYmxlLgorICAgIGlmIGhhc2F0dHIoc2lnbmFsLCAic2V0aXRpbWVyIik6CisgICAgICAgIGFsYXJtX3RpbWUgPSAwLjA1CisKKyAgICAgICAgZGVmIHNldEFsYXJtKHNlbGYsIHNlY29uZHMpOgorICAgICAgICAgICAgc2lnbmFsLnNldGl0aW1lcihzaWduYWwuSVRJTUVSX1JFQUwsIHNlY29uZHMpCisgICAgZWxzZToKKyAgICAgICAgIyBPbGQgc3lzdGVtcyBtYXkgZGVsaXZlciB0aGUgYWxhcm0gdXAgdG8gb25lIHNlY29uZCBlYXJseQorICAgICAgICBhbGFybV90aW1lID0gMgorCisgICAgICAgIGRlZiBzZXRBbGFybShzZWxmLCBzZWNvbmRzKToKKyAgICAgICAgICAgIHNpZ25hbC5hbGFybShzZWNvbmRzKQorCisKKyMgUmVxdWlyZSBzaWdpbnRlcnJ1cHQoKSBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCBzeXN0ZW0gY2FsbHMgYXJlCisjIGludGVycnVwdGVkIGJ5IGRlZmF1bHQuCitAcmVxdWlyZUF0dHJzKHNpZ25hbCwgInNpZ2ludGVycnVwdCIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgImFsYXJtIikgb3IgaGFzYXR0cihzaWduYWwsICJzZXRpdGltZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICJEb24ndCBoYXZlIHNpZ25hbC5hbGFybSBvciBzaWduYWwuc2V0aXRpbWVyIikKK2NsYXNzIEludGVycnVwdGVkUmVjdlRpbWVvdXRUZXN0KEludGVycnVwdGVkVGltZW91dEJhc2UsIFVEUFRlc3RCYXNlKToKKyAgICAjIFRlc3QgaW50ZXJydXB0aW5nIHRoZSByZWN2KigpIG1ldGhvZHMgd2l0aCBzaWduYWxzIHdoZW4gYQorICAgICMgdGltZW91dCBpcyBzZXQuCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICBzZWxmLnNlcnYuc2V0dGltZW91dChzZWxmLnRpbWVvdXQpCisKKyAgICBkZWYgY2hlY2tJbnRlcnJ1cHRlZFJlY3Yoc2VsZiwgZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGZ1bmMoKmFyZ3MsICoqa3dhcmdzKSByYWlzZXMgc29ja2V0LmVycm9yIHdpdGggYW4KKyAgICAgICAgIyBlcnJubyBvZiBFSU5UUiB3aGVuIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLgorICAgICAgICBzZWxmLnNldEFsYXJtKHNlbGYuYWxhcm1fdGltZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZnVuYygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShjbS5leGNlcHRpb24sIHNvY2tldC50aW1lb3V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUlOVFIpCisKKyAgICBkZWYgdGVzdEludGVycnVwdGVkUmVjdlRpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tJbnRlcnJ1cHRlZFJlY3Yoc2VsZi5zZXJ2LnJlY3YsIDEwMjQpCisKKyAgICBkZWYgdGVzdEludGVycnVwdGVkUmVjdkludG9UaW1lb3V0KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrSW50ZXJydXB0ZWRSZWN2KHNlbGYuc2Vydi5yZWN2X2ludG8sIGJ5dGVhcnJheSgxMDI0KSkKKworICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRSZWN2ZnJvbVRpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tJbnRlcnJ1cHRlZFJlY3Yoc2VsZi5zZXJ2LnJlY3Zmcm9tLCAxMDI0KQorCisgICAgZGVmIHRlc3RJbnRlcnJ1cHRlZFJlY3Zmcm9tSW50b1RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tJbnRlcnJ1cHRlZFJlY3Yoc2VsZi5zZXJ2LnJlY3Zmcm9tX2ludG8sIGJ5dGVhcnJheSgxMDI0KSkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2ciKQorICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRSZWN2bXNnVGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkUmVjdihzZWxmLnNlcnYucmVjdm1zZywgMTAyNCkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2dfaW50byIpCisgICAgZGVmIHRlc3RJbnRlcnJ1cHRlZFJlY3Ztc2dJbnRvVGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkUmVjdihzZWxmLnNlcnYucmVjdm1zZ19pbnRvLCBbYnl0ZWFycmF5KDEwMjQpXSkKKworCisjIFJlcXVpcmUgc2lnaW50ZXJydXB0KCkgaW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgc3lzdGVtIGNhbGxzIGFyZQorIyBpbnRlcnJ1cHRlZCBieSBkZWZhdWx0LgorQHJlcXVpcmVBdHRycyhzaWduYWwsICJzaWdpbnRlcnJ1cHQiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICJhbGFybSIpIG9yIGhhc2F0dHIoc2lnbmFsLCAic2V0aXRpbWVyIiksCisgICAgICAgICAgICAgICAgICAgICAiRG9uJ3QgaGF2ZSBzaWduYWwuYWxhcm0gb3Igc2lnbmFsLnNldGl0aW1lciIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgSW50ZXJydXB0ZWRTZW5kVGltZW91dFRlc3QoSW50ZXJydXB0ZWRUaW1lb3V0QmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZFNhZmVDbGVhbnVwVGVzdENhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb2NrZXRMaXN0ZW5pbmdUZXN0TWl4aW4sIFRDUFRlc3RCYXNlKToKKyAgICAjIFRlc3QgaW50ZXJydXB0aW5nIHRoZSBpbnRlcnJ1cHRpYmxlIHNlbmQqKCkgbWV0aG9kcyB3aXRoIHNpZ25hbHMKKyAgICAjIHdoZW4gYSB0aW1lb3V0IGlzIHNldC4KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAgIHNlbGYuc2Vydl9jb25uID0gc2VsZi5uZXdTb2NrZXQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5zZXJ2X2Nvbm4uY2xvc2UpCisgICAgICAgICMgVXNlIGEgdGhyZWFkIHRvIGNvbXBsZXRlIHRoZSBjb25uZWN0aW9uLCBidXQgd2FpdCBmb3IgaXQgdG8KKyAgICAgICAgIyB0ZXJtaW5hdGUgYmVmb3JlIHJ1bm5pbmcgdGhlIHRlc3QsIHNvIHRoYXQgdGhlcmUgaXMgb25seSBvbmUKKyAgICAgICAgIyB0aHJlYWQgdG8gYWNjZXB0IHRoZSBzaWduYWwuCisgICAgICAgIGNsaV90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLmRvQ29ubmVjdCkKKyAgICAgICAgY2xpX3RocmVhZC5zdGFydCgpCisgICAgICAgIHNlbGYuY2xpX2Nvbm4sIGFkZHIgPSBzZWxmLnNlcnYuYWNjZXB0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuY2xpX2Nvbm4uY2xvc2UpCisgICAgICAgIGNsaV90aHJlYWQuam9pbigpCisgICAgICAgIHNlbGYuc2Vydl9jb25uLnNldHRpbWVvdXQoc2VsZi50aW1lb3V0KQorCisgICAgZGVmIGRvQ29ubmVjdChzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2X2Nvbm4uY29ubmVjdChzZWxmLnNlcnZfYWRkcikKKworICAgIGRlZiBjaGVja0ludGVycnVwdGVkU2VuZChzZWxmLCBmdW5jLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIENoZWNrIHRoYXQgZnVuYygqYXJncywgKiprd2FyZ3MpLCBydW4gaW4gYSBsb29wLCByYWlzZXMKKyAgICAgICAgIyBzb2NrZXQuZXJyb3Igd2l0aCBhbiBlcnJubyBvZiBFSU5UUiB3aGVuIGludGVycnVwdGVkIGJ5IGEKKyAgICAgICAgIyBzaWduYWwuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgc2VsZi5zZXRBbGFybShzZWxmLmFsYXJtX3RpbWUpCisgICAgICAgICAgICAgICAgZnVuYygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShjbS5leGNlcHRpb24sIHNvY2tldC50aW1lb3V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUlOVFIpCisKKyAgICAjIElzc3VlICMxMjk1ODogVGhlIGZvbGxvd2luZyB0ZXN0cyBoYXZlIHByb2JsZW1zIG9uIE1hYyBPUyBYCisgICAgQHN1cHBvcnQuYW50aWNpcGF0ZV9mYWlsdXJlKHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIikKKyAgICBkZWYgdGVzdEludGVycnVwdGVkU2VuZFRpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tJbnRlcnJ1cHRlZFNlbmQoc2VsZi5zZXJ2X2Nvbm4uc2VuZCwgYiJhIio1MTIpCisKKyAgICBAc3VwcG9ydC5hbnRpY2lwYXRlX2ZhaWx1cmUoc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iKQorICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRTZW5kdG9UaW1lb3V0KHNlbGYpOgorICAgICAgICAjIFBhc3NpbmcgYW4gYWN0dWFsIGFkZHJlc3MgaGVyZSBhcyBQeXRob24ncyB3cmFwcGVyIGZvcgorICAgICAgICAjIHNlbmR0bygpIGRvZXNuJ3QgYWxsb3cgcGFzc2luZyBhIHplcm8tbGVuZ3RoIG9uZTsgUE9TSVgKKyAgICAgICAgIyByZXF1aXJlcyB0aGF0IHRoZSBhZGRyZXNzIGlzIGlnbm9yZWQgc2luY2UgdGhlIHNvY2tldCBpcworICAgICAgICAjIGNvbm5lY3Rpb24tbW9kZSwgaG93ZXZlci4KKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkU2VuZChzZWxmLnNlcnZfY29ubi5zZW5kdG8sIGIiYSIqNTEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2Vydl9hZGRyKQorCisgICAgQHN1cHBvcnQuYW50aWNpcGF0ZV9mYWlsdXJlKHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIikKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKKyAgICBkZWYgdGVzdEludGVycnVwdGVkU2VuZG1zZ1RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tJbnRlcnJ1cHRlZFNlbmQoc2VsZi5zZXJ2X2Nvbm4uc2VuZG1zZywgW2IiYSIqNTEyXSkKKworCiBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogY2xhc3MgVENQQ2xvc2VyVGVzdChUaHJlYWRlZFRDUFNvY2tldFRlc3QpOgogCkBAIC0xMDk5LDExICszNTg2LDggQEAKICAgICAgICAgcGFzcwogCiAgICAgaWYgaGFzYXR0cihzb2NrZXQsICJTT0NLX05PTkJMT0NLIik6CisgICAgICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oMiwgNiwgMjgpCiAgICAgICAgIGRlZiB0ZXN0SW5pdE5vbkJsb2NraW5nKHNlbGYpOgotICAgICAgICAgICAgdiA9IGxpbnV4X3ZlcnNpb24oKQotICAgICAgICAgICAgaWYgdiA8ICgyLCA2LCAyOCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiTGludXgga2VybmVsIDIuNi4yOCBvciBoaWdoZXIgcmVxdWlyZWQsIG5vdCAlcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgIi4iLmpvaW4obWFwKHN0ciwgdikpKQogICAgICAgICAgICAgIyByZWluaXQgc2VydmVyIHNvY2tldAogICAgICAgICAgICAgc2VsZi5zZXJ2LmNsb3NlKCkKICAgICAgICAgICAgIHNlbGYuc2VydiA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSB8CkBAIC0xMjA1LDcgKzM2ODksNyBAQAogICAgICIiIgogCiAgICAgYnVmc2l6ZSA9IC0xICMgVXNlIGRlZmF1bHQgYnVmZmVyIHNpemUKLSAgICBlbmNvZGluZyA9ICd1dGY4JworICAgIGVuY29kaW5nID0gJ3V0Zi04JwogICAgIGVycm9ycyA9ICdzdHJpY3QnCiAgICAgbmV3bGluZSA9IE5vbmUKIApAQCAtMTM4Niw3ICszODcwLDcgQEAKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX3JhaXNlX2VpbnRyKCk6Ci0gICAgICAgIHJhaXNlIHNvY2tldC5lcnJvcihlcnJuby5FSU5UUikKKyAgICAgICAgcmFpc2Ugc29ja2V0LmVycm9yKGVycm5vLkVJTlRSLCAiaW50ZXJydXB0ZWQiKQogCiAgICAgZGVmIF90ZXh0aW93cmFwX21vY2tfc29ja2V0KHNlbGYsIG1vY2ssIGJ1ZmZlcmluZz0tMSk6CiAgICAgICAgIHJhdyA9IHNvY2tldC5Tb2NrZXRJTyhtb2NrLCAiciIpCkBAIC0xNDI2LDcgKzM5MTAsNyBAQAogICAgICAgICAgICAgZGF0YSA9IGInJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZGF0YSA9ICcnCi0gICAgICAgICAgICBleHBlY3RpbmcgPSBleHBlY3RpbmcuZGVjb2RlKCd1dGY4JykKKyAgICAgICAgICAgIGV4cGVjdGluZyA9IGV4cGVjdGluZy5kZWNvZGUoJ3V0Zi04JykKICAgICAgICAgd2hpbGUgbGVuKGRhdGEpICE9IGxlbihleHBlY3RpbmcpOgogICAgICAgICAgICAgcGFydCA9IGZvLnJlYWQoc2l6ZSkKICAgICAgICAgICAgIGlmIG5vdCBwYXJ0OgpAQCAtMTU4OCw3ICs0MDcyLDcgQEAKICAgICAiIiJUZXN0cyBmb3Igc29ja2V0Lm1ha2VmaWxlKCkgaW4gdGV4dCBtb2RlIChyYXRoZXIgdGhhbiBiaW5hcnkpIiIiCiAKICAgICByZWFkX21vZGUgPSAncicKLSAgICByZWFkX21zZyA9IE1TRy5kZWNvZGUoJ3V0ZjgnKQorICAgIHJlYWRfbXNnID0gTVNHLmRlY29kZSgndXRmLTgnKQogICAgIHdyaXRlX21vZGUgPSAnd2InCiAgICAgd3JpdGVfbXNnID0gTVNHCiAgICAgbmV3bGluZSA9ICcnCkBAIC0xNjAwLDcgKzQwODQsNyBAQAogICAgIHJlYWRfbW9kZSA9ICdyYicKICAgICByZWFkX21zZyA9IE1TRwogICAgIHdyaXRlX21vZGUgPSAndycKLSAgICB3cml0ZV9tc2cgPSBNU0cuZGVjb2RlKCd1dGY4JykKKyAgICB3cml0ZV9tc2cgPSBNU0cuZGVjb2RlKCd1dGYtOCcpCiAgICAgbmV3bGluZSA9ICcnCiAKIApAQCAtMTYwOCw5ICs0MDkyLDkgQEAKICAgICAiIiJUZXN0cyBmb3Igc29ja2V0Lm1ha2VmaWxlKCkgaW4gdGV4dCBtb2RlIChyYXRoZXIgdGhhbiBiaW5hcnkpIiIiCiAKICAgICByZWFkX21vZGUgPSAncicKLSAgICByZWFkX21zZyA9IE1TRy5kZWNvZGUoJ3V0ZjgnKQorICAgIHJlYWRfbXNnID0gTVNHLmRlY29kZSgndXRmLTgnKQogICAgIHdyaXRlX21vZGUgPSAndycKLSAgICB3cml0ZV9tc2cgPSBNU0cuZGVjb2RlKCd1dGY4JykKKyAgICB3cml0ZV9tc2cgPSBNU0cuZGVjb2RlKCd1dGYtOCcpCiAgICAgbmV3bGluZSA9ICcnCiAKIApAQCAtMTkwMSw2ICs0Mzg1LDc4IEBACiAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzLmJpbmQsIGFkZHJlc3MpCiAKKyAgICBkZWYgdGVzdFN0ck5hbWUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBhbiBhYnN0cmFjdCBuYW1lIGNhbiBiZSBwYXNzZWQgYXMgYSBzdHJpbmcuCisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHMuYmluZCgiXHgwMHB5dGhvblx4MDB0ZXN0XHgwMCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0c29ja25hbWUoKSwgYiJceDAwcHl0aG9uXHgwMHRlc3RceDAwIikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHMuY2xvc2UoKQorCitjbGFzcyBUZXN0VW5peERvbWFpbih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5zb2NrLmNsb3NlKCkKKworICAgIGRlZiBlbmNvZGVkKHNlbGYsIHBhdGgpOgorICAgICAgICAjIFJldHVybiB0aGUgZ2l2ZW4gcGF0aCBlbmNvZGVkIGluIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZywKKyAgICAgICAgIyBvciBza2lwIHRoZSB0ZXN0IGlmIHRoaXMgaXMgbm90IHBvc3NpYmxlLgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gb3MuZnNlbmNvZGUocGF0aCkKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoCisgICAgICAgICAgICAgICAgIlBhdGhuYW1lIHswIWF9IGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBmaWxlICIKKyAgICAgICAgICAgICAgICAic3lzdGVtIGVuY29kaW5nIHsxIXJ9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHBhdGgsIHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkpCisKKyAgICBkZWYgYmluZChzZWxmLCBzb2NrLCBwYXRoKToKKyAgICAgICAgIyBCaW5kIHRoZSBzb2NrZXQKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc29jay5iaW5kKHBhdGgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBzdHIoZSkgPT0gIkFGX1VOSVggcGF0aCB0b28gbG9uZyI6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAgICAgIlBhdGhuYW1lIHswIWF9IGlzIHRvbyBsb25nIHRvIHNlcnZlIGFzIGEgQUZfVU5JWCBwYXRoIgorICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHBhdGgpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZQorCisgICAgZGVmIHRlc3RTdHJBZGRyKHNlbGYpOgorICAgICAgICAjIFRlc3QgYmluZGluZyB0byBhbmQgcmV0cmlldmluZyBhIG5vcm1hbCBzdHJpbmcgcGF0aG5hbWUuCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYmluZChzZWxmLnNvY2ssIHBhdGgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNvY2suZ2V0c29ja25hbWUoKSwgcGF0aCkKKworICAgIGRlZiB0ZXN0Qnl0ZXNBZGRyKHNlbGYpOgorICAgICAgICAjIFRlc3QgYmluZGluZyB0byBhIGJ5dGVzIHBhdGhuYW1lLgorICAgICAgICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmJpbmQoc2VsZi5zb2NrLCBzZWxmLmVuY29kZWQocGF0aCkpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNvY2suZ2V0c29ja25hbWUoKSwgcGF0aCkKKworICAgIGRlZiB0ZXN0U3Vycm9nYXRlZXNjYXBlQmluZChzZWxmKToKKyAgICAgICAgIyBUZXN0IGJpbmRpbmcgdG8gYSB2YWxpZCBub24tQVNDSUkgcGF0aG5hbWUsIHdpdGggdGhlCisgICAgICAgICMgbm9uLUFTQ0lJIGJ5dGVzIHN1cHBsaWVkIHVzaW5nIHN1cnJvZ2F0ZWVzY2FwZSBlbmNvZGluZy4KKyAgICAgICAgcGF0aCA9IG9zLnBhdGguYWJzcGF0aChzdXBwb3J0LlRFU1RGTl9VTklDT0RFKQorICAgICAgICBiID0gc2VsZi5lbmNvZGVkKHBhdGgpCisgICAgICAgIHNlbGYuYmluZChzZWxmLnNvY2ssIGIuZGVjb2RlKCJhc2NpaSIsICJzdXJyb2dhdGVlc2NhcGUiKSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc29jay5nZXRzb2NrbmFtZSgpLCBwYXRoKQorCisgICAgZGVmIHRlc3RVbmVuY29kYWJsZUFkZHIoc2VsZik6CisgICAgICAgICMgVGVzdCBiaW5kaW5nIHRvIGEgcGF0aG5hbWUgdGhhdCBjYW5ub3QgYmUgZW5jb2RlZCBpbiB0aGUKKyAgICAgICAgIyBmaWxlIHN5c3RlbSBlbmNvZGluZy4KKyAgICAgICAgaWYgc3VwcG9ydC5URVNURk5fVU5FTkNPREFCTEUgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIk5vIHVuZW5jb2RhYmxlIGZpbGVuYW1lIGF2YWlsYWJsZSIpCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgoc3VwcG9ydC5URVNURk5fVU5FTkNPREFCTEUpCisgICAgICAgIHNlbGYuYmluZChzZWxmLnNvY2ssIHBhdGgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNvY2suZ2V0c29ja25hbWUoKSwgcGF0aCkKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKIGNsYXNzIEJ1ZmZlcklPVGVzdChTb2NrZXRDb25uZWN0ZWRUZXN0KToKQEAgLTIxMDEsMTEgKzQ2NTcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgIlNPQ0tfQ0xPRVhFQyBub3QgZGVmaW5lZCIpCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhmY250bCwgIm1vZHVsZSBmY250bCBub3QgYXZhaWxhYmxlIikKIGNsYXNzIENsb2V4ZWNDb25zdGFudFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oMiwgNiwgMjgpCiAgICAgZGVmIHRlc3RfU09DS19DTE9FWEVDKHNlbGYpOgotICAgICAgICB2ID0gbGludXhfdmVyc2lvbigpCi0gICAgICAgIGlmIHYgPCAoMiwgNiwgMjgpOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiTGludXgga2VybmVsIDIuNi4yOCBvciBoaWdoZXIgcmVxdWlyZWQsIG5vdCAlcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJSAiLiIuam9pbihtYXAoc3RyLCB2KSkpCiAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TT0NLX1NUUkVBTSB8IHNvY2tldC5TT0NLX0NMT0VYRUMpIGFzIHM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy50eXBlICYgc29ja2V0LlNPQ0tfQ0xPRVhFQykKQEAgLTIxMjMsMTEgKzQ2NzYsOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzLnR5cGUgJiBzb2NrZXQuU09DS19OT05CTE9DSykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR0aW1lb3V0KCksIE5vbmUpCiAKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19saW51eF92ZXJzaW9uKDIsIDYsIDI4KQogICAgIGRlZiB0ZXN0X1NPQ0tfTk9OQkxPQ0soc2VsZik6Ci0gICAgICAgIHYgPSBsaW51eF92ZXJzaW9uKCkKLSAgICAgICAgaWYgdiA8ICgyLCA2LCAyOCk6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJMaW51eCBrZXJuZWwgMi42LjI4IG9yIGhpZ2hlciByZXF1aXJlZCwgbm90ICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAlICIuIi5qb2luKG1hcChzdHIsIHYpKSkKICAgICAgICAgIyBhIGxvdCBvZiBpdCBzZWVtcyBzaWxseSBhbmQgcmVkdW5kYW50LCBidXQgSSB3YW50ZWQgdG8gdGVzdCB0aGF0CiAgICAgICAgICMgY2hhbmdpbmcgYmFjayBhbmQgZm9ydGggd29ya2VkIG9rCiAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwKQEAgLTIxNjAsNiArNDcxMCwxMDkgQEAKICAgICAgICAgc29ja2V0LnNldGRlZmF1bHR0aW1lb3V0KHQpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAibnQiLCAiV2luZG93cyBzcGVjaWZpYyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhtdWx0aXByb2Nlc3NpbmcsICJuZWVkIG11bHRpcHJvY2Vzc2luZyIpCitjbGFzcyBUZXN0U29ja2V0U2hhcmluZyhTb2NrZXRUQ1BUZXN0KToKKyAgICAjIFRoaXMgbXVzdCBiZSBjbGFzc21ldGhvZCBhbmQgbm90IHN0YXRpY21ldGhvZCBvciBtdWx0aXByb2Nlc3NpbmcKKyAgICAjIHdvbid0IGJlIGFibGUgdG8gYm9vdHN0cmFwIGl0LgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiByZW1vdGVQcm9jZXNzU2VydmVyKGNscywgcSk6CisgICAgICAgICMgUmVjcmVhdGUgc29ja2V0IGZyb20gc2hhcmVkIGRhdGEKKyAgICAgICAgc2RhdGEgPSBxLmdldCgpCisgICAgICAgIG1lc3NhZ2UgPSBxLmdldCgpCisKKyAgICAgICAgcyA9IHNvY2tldC5mcm9tc2hhcmUoc2RhdGEpCisgICAgICAgIHMyLCBjID0gcy5hY2NlcHQoKQorCisgICAgICAgICMgU2VuZCB0aGUgbWVzc2FnZQorICAgICAgICBzMi5zZW5kYWxsKG1lc3NhZ2UpCisgICAgICAgIHMyLmNsb3NlKCkKKyAgICAgICAgcy5jbG9zZSgpCisKKyAgICBkZWYgdGVzdFNoYXJlKHNlbGYpOgorICAgICAgICAjIFRyYW5zZmVyIHRoZSBsaXN0ZW5pbmcgc2VydmVyIHNvY2tldCB0byBhbm90aGVyIHByb2Nlc3MKKyAgICAgICAgIyBhbmQgc2VydmljZSBpdCBmcm9tIHRoZXJlLgorCisgICAgICAgICMgQ3JlYXRlIHByb2Nlc3M6CisgICAgICAgIHEgPSBtdWx0aXByb2Nlc3NpbmcuUXVldWUoKQorICAgICAgICBwID0gbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3ModGFyZ2V0PXNlbGYucmVtb3RlUHJvY2Vzc1NlcnZlciwgYXJncz0ocSwpKQorICAgICAgICBwLnN0YXJ0KCkKKworICAgICAgICAjIEdldCB0aGUgc2hhcmVkIHNvY2tldCBkYXRhCisgICAgICAgIGRhdGEgPSBzZWxmLnNlcnYuc2hhcmUocC5waWQpCisKKyAgICAgICAgIyBQYXNzIHRoZSBzaGFyZWQgc29ja2V0IHRvIHRoZSBvdGhlciBwcm9jZXNzCisgICAgICAgIGFkZHIgPSBzZWxmLnNlcnYuZ2V0c29ja25hbWUoKQorICAgICAgICBzZWxmLnNlcnYuY2xvc2UoKQorICAgICAgICBxLnB1dChkYXRhKQorCisgICAgICAgICMgVGhlIGRhdGEgdGhhdCB0aGUgc2VydmVyIHdpbGwgc2VuZCB1cworICAgICAgICBtZXNzYWdlID0gYiJzbGFwbWFoZnJvIgorICAgICAgICBxLnB1dChtZXNzYWdlKQorCisgICAgICAgICMgQ29ubmVjdAorICAgICAgICBzID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHIpCisgICAgICAgICMgIGxpc3RlbiBmb3IgdGhlIGRhdGEKKyAgICAgICAgbSA9IFtdCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBkYXRhID0gcy5yZWN2KDEwMCkKKyAgICAgICAgICAgIGlmIG5vdCBkYXRhOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBtLmFwcGVuZChkYXRhKQorICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgcmVjZWl2ZWQgPSBiIiIuam9pbihtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY2VpdmVkLCBtZXNzYWdlKQorICAgICAgICBwLmpvaW4oKQorCisgICAgZGVmIHRlc3RTaGFyZUxlbmd0aChzZWxmKToKKyAgICAgICAgZGF0YSA9IHNlbGYuc2Vydi5zaGFyZShvcy5nZXRwaWQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc29ja2V0LmZyb21zaGFyZSwgZGF0YVs6LTFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzb2NrZXQuZnJvbXNoYXJlLCBkYXRhK2IiZm9vIikKKworICAgIGRlZiBjb21wYXJlU29ja2V0cyhzZWxmLCBvcmcsIG90aGVyKToKKyAgICAgICAgIyBzb2NrZXQgc2hhcmluZyBpcyBleHBlY3RlZCB0byB3b3JrIG9ubHkgZm9yIGJsb2NraW5nIHNvY2tldAorICAgICAgICAjIHNpbmNlIHRoZSBpbnRlcm5hbCBweXRob24gdGltb3V0IHZhbHVlIGlzbid0IHRyYW5zZmVyZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JnLmdldHRpbWVvdXQoKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmcuZ2V0dGltZW91dCgpLCBvdGhlci5nZXR0aW1lb3V0KCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmcuZmFtaWx5LCBvdGhlci5mYW1pbHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JnLnR5cGUsIG90aGVyLnR5cGUpCisgICAgICAgICMgSWYgdGhlIHVzZXIgc3BlY2lmaWVkICIwIiBmb3IgcHJvdG8sIHRoZW4KKyAgICAgICAgIyBpbnRlcm5hbGx5IHdpbmRvd3Mgd2lsbCBoYXZlIHBpY2tlZCB0aGUgY29ycmVjdCB2YWx1ZS4KKyAgICAgICAgIyBQeXRob24gaW50cm9zcGVjdGlvbiBvbiB0aGUgc29ja2V0IGhvd2V2ZXIgd2lsbCBzdGlsbCByZXR1cm4KKyAgICAgICAgIyAwLiAgRm9yIHRoZSBzaGFyZWQgc29ja2V0LCB0aGUgcHl0aG9uIHZhbHVlIGlzIHJlY3JlYXRlZAorICAgICAgICAjIGZyb20gdGhlIGFjdHVhbCB2YWx1ZSwgc28gaXQgbWF5IG5vdCBjb21wYXJlIGNvcnJlY3RseS4KKyAgICAgICAgaWYgb3JnLnByb3RvICE9IDA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yZy5wcm90bywgb3RoZXIucHJvdG8pCisKKyAgICBkZWYgdGVzdFNoYXJlTG9jYWwoc2VsZik6CisgICAgICAgIGRhdGEgPSBzZWxmLnNlcnYuc2hhcmUob3MuZ2V0cGlkKCkpCisgICAgICAgIHMgPSBzb2NrZXQuZnJvbXNoYXJlKGRhdGEpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuY29tcGFyZVNvY2tldHMoc2VsZi5zZXJ2LCBzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcy5jbG9zZSgpCisKKyAgICBkZWYgdGVzdFR5cGVzKHNlbGYpOgorICAgICAgICBmYW1pbGllcyA9IFtzb2NrZXQuQUZfSU5FVCwgc29ja2V0LkFGX0lORVQ2XQorICAgICAgICB0eXBlcyA9IFtzb2NrZXQuU09DS19TVFJFQU0sIHNvY2tldC5TT0NLX0RHUkFNXQorICAgICAgICBmb3IgZiBpbiBmYW1pbGllczoKKyAgICAgICAgICAgIGZvciB0IGluIHR5cGVzOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc291cmNlID0gc29ja2V0LnNvY2tldChmLCB0KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAjIFRoaXMgY29tYmluYXRpb24gaXMgbm90IHN1cHBvcnRlZAorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNvdXJjZS5zaGFyZShvcy5nZXRwaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgc2hhcmVkID0gc29ja2V0LmZyb21zaGFyZShkYXRhKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbXBhcmVTb2NrZXRzKHNvdXJjZSwgc2hhcmVkKQorICAgICAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBzb3VyY2UuY2xvc2UoKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IFtHZW5lcmFsTW9kdWxlVGVzdHMsIEJhc2ljVENQVGVzdCwgVENQQ2xvc2VyVGVzdCwgVENQVGltZW91dFRlc3QsCiAgICAgICAgICAgICAgVGVzdEV4Y2VwdGlvbnMsIEJ1ZmZlcklPVGVzdCwgQmFzaWNUQ1BUZXN0MiwgQmFzaWNVRFBUZXN0LCBVRFBUaW1lb3V0VGVzdCBdCkBAIC0yMTgzLDExICs0ODM2LDQxIEBACiAgICAgXSkKICAgICBpZiBoYXNhdHRyKHNvY2tldCwgInNvY2tldHBhaXIiKToKICAgICAgICAgdGVzdHMuYXBwZW5kKEJhc2ljU29ja2V0UGFpclRlc3QpCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICdsaW51eDInOgorICAgIGlmIGhhc2F0dHIoc29ja2V0LCAiQUZfVU5JWCIpOgorICAgICAgICB0ZXN0cy5hcHBlbmQoVGVzdFVuaXhEb21haW4pCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICdsaW51eCc6CiAgICAgICAgIHRlc3RzLmFwcGVuZChUZXN0TGludXhBYnN0cmFjdE5hbWVzcGFjZSkKICAgICBpZiBpc1RpcGNBdmFpbGFibGUoKToKICAgICAgICAgdGVzdHMuYXBwZW5kKFRJUENUZXN0KQogICAgICAgICB0ZXN0cy5hcHBlbmQoVElQQ1RocmVhZGFibGVUZXN0KQorICAgIHRlc3RzLmV4dGVuZChbQmFzaWNDQU5UZXN0LCBDQU5UZXN0XSkKKyAgICB0ZXN0cy5leHRlbmQoW0Jhc2ljUkRTVGVzdCwgUkRTVGVzdF0pCisgICAgdGVzdHMuZXh0ZW5kKFsKKyAgICAgICAgQ21zZ01hY3JvVGVzdHMsCisgICAgICAgIFNlbmRtc2dVRFBUZXN0LAorICAgICAgICBSZWN2bXNnVURQVGVzdCwKKyAgICAgICAgUmVjdm1zZ0ludG9VRFBUZXN0LAorICAgICAgICBTZW5kbXNnVURQNlRlc3QsCisgICAgICAgIFJlY3Ztc2dVRFA2VGVzdCwKKyAgICAgICAgUmVjdm1zZ1JGQzM1NDJBbmNpbGxhcnlVRFA2VGVzdCwKKyAgICAgICAgUmVjdm1zZ0ludG9SRkMzNTQyQW5jaWxsYXJ5VURQNlRlc3QsCisgICAgICAgIFJlY3Ztc2dJbnRvVURQNlRlc3QsCisgICAgICAgIFNlbmRtc2dUQ1BUZXN0LAorICAgICAgICBSZWN2bXNnVENQVGVzdCwKKyAgICAgICAgUmVjdm1zZ0ludG9UQ1BUZXN0LAorICAgICAgICBTZW5kbXNnU0NUUFN0cmVhbVRlc3QsCisgICAgICAgIFJlY3Ztc2dTQ1RQU3RyZWFtVGVzdCwKKyAgICAgICAgUmVjdm1zZ0ludG9TQ1RQU3RyZWFtVGVzdCwKKyAgICAgICAgU2VuZG1zZ1VuaXhTdHJlYW1UZXN0LAorICAgICAgICBSZWN2bXNnVW5peFN0cmVhbVRlc3QsCisgICAgICAgIFJlY3Ztc2dJbnRvVW5peFN0cmVhbVRlc3QsCisgICAgICAgIFJlY3Ztc2dTQ01SaWdodHNTdHJlYW1UZXN0LAorICAgICAgICBSZWN2bXNnSW50b1NDTVJpZ2h0c1N0cmVhbVRlc3QsCisgICAgICAgICMgVGhlc2UgYXJlIHNsb3cgd2hlbiBzZXRpdGltZXIoKSBpcyBub3QgYXZhaWxhYmxlCisgICAgICAgIEludGVycnVwdGVkUmVjdlRpbWVvdXRUZXN0LAorICAgICAgICBJbnRlcnJ1cHRlZFNlbmRUaW1lb3V0VGVzdCwKKyAgICAgICAgVGVzdFNvY2tldFNoYXJpbmcsCisgICAgXSkKIAogICAgIHRocmVhZF9pbmZvID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0cykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0c2VydmVyLnB5IGIvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKaW5kZXggMTYwZjViOC4uNDY0MDU3ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKQEAgLTI0NCw3ICsyNDQsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuY2FsbGVkICs9IDEKICAgICAgICAgICAgICAgICBpZiBzZWxmLmNhbGxlZCA9PSAxOgogICAgICAgICAgICAgICAgICAgICAjIHJhaXNlIHRoZSBleGNlcHRpb24gb24gZmlyc3QgY2FsbAotICAgICAgICAgICAgICAgICAgICByYWlzZSBzZWxlY3QuZXJyb3IoZXJybm8uRUlOVFIsIG9zLnN0cmVycm9yKGVycm5vLkVJTlRSKSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcihlcnJuby5FSU5UUiwgb3Muc3RyZXJyb3IoZXJybm8uRUlOVFIpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICMgUmV0dXJuIHJlYWwgc2VsZWN0IHZhbHVlIGZvciBjb25zZWN1dGl2ZSBjYWxscwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2xkX3NlbGVjdCgqYXJncykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5IGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKaW5kZXggZDFjYjNmMS4uODE1NDc1ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zc2wucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKQEAgLTQyLDYgKzQyLDkgQEAKIE9OTFlLRVkgPSBkYXRhX2ZpbGUoInNzbF9rZXkucGVtIikKIEJZVEVTX09OTFlDRVJUID0gb3MuZnNlbmNvZGUoT05MWUNFUlQpCiBCWVRFU19PTkxZS0VZID0gb3MuZnNlbmNvZGUoT05MWUtFWSkKK0NFUlRGSUxFX1BST1RFQ1RFRCA9IGRhdGFfZmlsZSgia2V5Y2VydC5wYXNzd2QucGVtIikKK09OTFlLRVlfUFJPVEVDVEVEID0gZGF0YV9maWxlKCJzc2xfa2V5LnBhc3N3ZC5wZW0iKQorS0VZX1BBU1NXT1JEID0gInNvbWVwYXNzIgogQ0FQQVRIID0gZGF0YV9maWxlKCJjYXBhdGgiKQogQllURVNfQ0FQQVRIID0gb3MuZnNlbmNvZGUoQ0FQQVRIKQogCkBAIC01Myw2ICs1Niw4IEBACiBCQURLRVkgPSBkYXRhX2ZpbGUoImJhZGtleS5wZW0iKQogTk9LSUFDRVJUID0gZGF0YV9maWxlKCJub2tpYS5wZW0iKQogCitESEZJTEUgPSBkYXRhX2ZpbGUoImRoNTEyLnBlbSIpCitCWVRFU19ESEZJTEUgPSBvcy5mc2VuY29kZShESEZJTEUpCiAKIGRlZiBoYW5kbGVfZXJyb3IocHJlZml4KToKICAgICBleGNfZm9ybWF0ID0gJyAnLmpvaW4odHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oKnN5cy5leGNfaW5mbygpKSkKQEAgLTk1LDcgKzEwMCwxNCBAQAogICAgICAgICBzc2wuQ0VSVF9OT05FCiAgICAgICAgIHNzbC5DRVJUX09QVElPTkFMCiAgICAgICAgIHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgIHNzbC5PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UKKyAgICAgICAgc3NsLk9QX1NJTkdMRV9ESF9VU0UKKyAgICAgICAgaWYgc3NsLkhBU19FQ0RIOgorICAgICAgICAgICAgc3NsLk9QX1NJTkdMRV9FQ0RIX1VTRQorICAgICAgICBpZiBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPj0gKDEsIDApOgorICAgICAgICAgICAgc3NsLk9QX05PX0NPTVBSRVNTSU9OCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3NsLkhBU19TTkksIHtUcnVlLCBGYWxzZX0pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3NsLkhBU19FQ0RILCB7VHJ1ZSwgRmFsc2V9KQogCiAgICAgZGVmIHRlc3RfcmFuZG9tKHNlbGYpOgogICAgICAgICB2ID0gc3NsLlJBTkRfc3RhdHVzKCkKQEAgLTEwMyw2ICsxMTUsMTYgQEAKICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuIFJBTkRfc3RhdHVzIGlzICVkICglcylcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAodiwgKHYgYW5kICJzdWZmaWNpZW50IHJhbmRvbW5lc3MiKSBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5zdWZmaWNpZW50IHJhbmRvbW5lc3MiKSkKKworICAgICAgICBkYXRhLCBpc19jcnlwdG9ncmFwaGljID0gc3NsLlJBTkRfcHNldWRvX2J5dGVzKDE2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXNfY3J5cHRvZ3JhcGhpYywgdiA9PSAxKQorICAgICAgICBpZiB2OgorICAgICAgICAgICAgZGF0YSA9IHNzbC5SQU5EX2J5dGVzKDE2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIDE2KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yLCBzc2wuUkFORF9ieXRlcywgMTYpCisKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzc2wuUkFORF9lZ2QsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3NsLlJBTkRfZWdkLCAnZm9vJywgMSkKICAgICAgICAgc3NsLlJBTkRfYWRkKCJ0aGlzIGlzIGEgcmFuZG9tIHN0cmluZyIsIDc1LjApCkBAIC0xODYsMjAgKzIwOCwyMSBAQAogICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKICAgICAgICAgc3MgPSBzc2wud3JhcF9zb2NrZXQocykKICAgICAgICAgd3IgPSB3ZWFrcmVmLnJlZihzcykKLSAgICAgICAgZGVsIHNzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3IoKSwgTm9uZSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgiIiwgUmVzb3VyY2VXYXJuaW5nKSk6CisgICAgICAgICAgICBkZWwgc3MKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3IoKSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X3dyYXBwZWRfdW5jb25uZWN0ZWQoc2VsZik6CiAgICAgICAgICMgTWV0aG9kcyBvbiBhbiB1bmNvbm5lY3RlZCBTU0xTb2NrZXQgcHJvcGFnYXRlIHRoZSBvcmlnaW5hbAogICAgICAgICAjIHNvY2tldC5lcnJvciByYWlzZSBieSB0aGUgdW5kZXJseWluZyBzb2NrZXQgb2JqZWN0LgogICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgc3MgPSBzc2wud3JhcF9zb2NrZXQocykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzcy5yZWN2LCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNzLnJlY3ZfaW50bywgYnl0ZWFycmF5KGIneCcpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNzLnJlY3Zmcm9tLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNzLnJlY3Zmcm9tX2ludG8sIGJ5dGVhcnJheShiJ3gnKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzcy5zZW5kLCBiJ3gnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNzLnNlbmR0bywgYid4JywgKCcwLjAuMC4wJywgMCkpCisgICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHMpIGFzIHNzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzcy5yZWN2LCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzcy5yZWN2X2ludG8sIGJ5dGVhcnJheShiJ3gnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc3MucmVjdmZyb20sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNzLnJlY3Zmcm9tX2ludG8sIGJ5dGVhcnJheShiJ3gnKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc3Muc2VuZCwgYid4JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc3Muc2VuZHRvLCBiJ3gnLCAoJzAuMC4wLjAnLCAwKSkKIAogICAgIGRlZiB0ZXN0X3RpbWVvdXQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzg1MjQ6IHdoZW4gY3JlYXRpbmcgYW4gU1NMIHNvY2tldCwgdGhlIHRpbWVvdXQgb2YgdGhlCkBAIC0yMDcsOCArMjMwLDggQEAKICAgICAgICAgZm9yIHRpbWVvdXQgaW4gKE5vbmUsIDAuMCwgNS4wKToKICAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQogICAgICAgICAgICAgcy5zZXR0aW1lb3V0KHRpbWVvdXQpCi0gICAgICAgICAgICBzcyA9IHNzbC53cmFwX3NvY2tldChzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lb3V0LCBzcy5nZXR0aW1lb3V0KCkpCisgICAgICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzKSBhcyBzczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWVvdXQsIHNzLmdldHRpbWVvdXQoKSkKIAogICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoKQpAQCAtMjIxLDkgKzI0NCw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjZXJ0ZmlsZSBtdXN0IGJlIHNwZWNpZmllZCBmb3Igc2VydmVyLXNpZGUgb3BlcmF0aW9ucyIsCiAgICAgICAgICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQsIHNvY2ssIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPSIiKQotICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2ssIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPUNFUlRGSUxFKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJjYW4ndCBjb25uZWN0IGluIHNlcnZlci1zaWRlIG1vZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIChIT1NULCA4MDgwKSkKKyAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQoc29jaywgc2VydmVyX3NpZGU9VHJ1ZSwgY2VydGZpbGU9Q0VSVEZJTEUpIGFzIHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJjYW4ndCBjb25uZWN0IGluIHNlcnZlci1zaWRlIG1vZGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0LCAoSE9TVCwgODA4MCkpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvcikgYXMgY206CiAgICAgICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoKSBhcyBzb2NrOgogICAgICAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldChzb2NrLCBjZXJ0ZmlsZT1XUk9OR0NFUlQpCkBAIC0zMzMsNiArMzU2LDMzIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjdHgud3JhcF9zb2NrZXQsIHNvY2ssIFRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9InNvbWUuaG9zdG5hbWUiKQogCisgICAgZGVmIHRlc3RfdW5rbm93bl9jaGFubmVsX2JpbmRpbmcoc2VsZik6CisgICAgICAgICMgc2hvdWxkIHJhaXNlIFZhbHVlRXJyb3IgZm9yIHVua25vd24gdHlwZQorICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQocykgYXMgc3M6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInVua25vd24tdHlwZSIpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcygidGxzLXVuaXF1ZSIgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rscy11bmlxdWUnIGNoYW5uZWwgYmluZGluZyBub3QgYXZhaWxhYmxlIikKKyAgICBkZWYgdGVzdF90bHNfdW5pcXVlX2NoYW5uZWxfYmluZGluZyhzZWxmKToKKyAgICAgICAgIyB1bmNvbm5lY3RlZCBzaG91bGQgcmV0dXJuIE5vbmUgZm9yIGtub3duIHR5cGUKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHMpIGFzIHNzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3MuZ2V0X2NoYW5uZWxfYmluZGluZygidGxzLXVuaXF1ZSIpKQorICAgICAgICAjIHRoZSBzYW1lIGZvciBzZXJ2ZXItc2lkZQorICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQocywgc2VydmVyX3NpZGU9VHJ1ZSwgY2VydGZpbGU9Q0VSVEZJTEUpIGFzIHNzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3MuZ2V0X2NoYW5uZWxfYmluZGluZygidGxzLXVuaXF1ZSIpKQorCisgICAgZGVmIHRlc3RfZGVhbGxvY193YXJuKHNlbGYpOgorICAgICAgICBzcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKKyAgICAgICAgciA9IHJlcHIoc3MpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhSZXNvdXJjZVdhcm5pbmcpIGFzIGNtOgorICAgICAgICAgICAgc3MgPSBOb25lCisgICAgICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQorICAgICAgICBzZWxmLmFzc2VydEluKHIsIHN0cihjbS53YXJuaW5nLmFyZ3NbMF0pKQorCiBjbGFzcyBDb250ZXh0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgQHNraXBfaWZfYnJva2VuX3VidW50dV9zc2wKQEAgLTQyMyw2ICs0NzMsNjAgQEAKICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAia2V5IHZhbHVlcyBtaXNtYXRjaCIpOgogICAgICAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihTVk5fUFlUSE9OX09SR19ST09UX0NFUlQsIE9OTFlLRVkpCisgICAgICAgICMgUGFzc3dvcmQgcHJvdGVjdGVkIGtleSBhbmQgY2VydAorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9S0VZX1BBU1NXT1JEKQorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9S0VZX1BBU1NXT1JELmVuY29kZSgpKQorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZD1ieXRlYXJyYXkoS0VZX1BBU1NXT1JELmVuY29kZSgpKSkKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihPTkxZQ0VSVCwgT05MWUtFWV9QUk9URUNURUQsIEtFWV9QQVNTV09SRCkKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihPTkxZQ0VSVCwgT05MWUtFWV9QUk9URUNURUQsIEtFWV9QQVNTV09SRC5lbmNvZGUoKSkKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihPTkxZQ0VSVCwgT05MWUtFWV9QUk9URUNURUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWFycmF5KEtFWV9QQVNTV09SRC5lbmNvZGUoKSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICJzaG91bGQgYmUgYSBzdHJpbmciKToKKyAgICAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1UcnVlKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcik6CisgICAgICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9ImJhZHBhc3MiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImNhbm5vdCBiZSBsb25nZXIiKToKKyAgICAgICAgICAgICMgb3BlbnNzbCBoYXMgYSBmaXhlZCBsaW1pdCBvbiB0aGUgcGFzc3dvcmQgYnVmZmVyLgorICAgICAgICAgICAgIyBQRU1fQlVGU0laRSBpcyBnZW5lcmFsbHkgc2V0IHRvIDFrYi4KKyAgICAgICAgICAgICMgUmV0dXJuIGEgc3RyaW5nIGxhcmdlciB0aGFuIHRoaXMuCisgICAgICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9YidhJyAqIDEwMjQwMCkKKyAgICAgICAgIyBQYXNzd29yZCBjYWxsYmFjaworICAgICAgICBkZWYgZ2V0cGFzc191bmljb2RlKCk6CisgICAgICAgICAgICByZXR1cm4gS0VZX1BBU1NXT1JECisgICAgICAgIGRlZiBnZXRwYXNzX2J5dGVzKCk6CisgICAgICAgICAgICByZXR1cm4gS0VZX1BBU1NXT1JELmVuY29kZSgpCisgICAgICAgIGRlZiBnZXRwYXNzX2J5dGVhcnJheSgpOgorICAgICAgICAgICAgcmV0dXJuIGJ5dGVhcnJheShLRVlfUEFTU1dPUkQuZW5jb2RlKCkpCisgICAgICAgIGRlZiBnZXRwYXNzX2JhZHBhc3MoKToKKyAgICAgICAgICAgIHJldHVybiAiYmFkcGFzcyIKKyAgICAgICAgZGVmIGdldHBhc3NfaHVnZSgpOgorICAgICAgICAgICAgcmV0dXJuIGInYScgKiAoMTAyNCAqIDEwMjQpCisgICAgICAgIGRlZiBnZXRwYXNzX2JhZF90eXBlKCk6CisgICAgICAgICAgICByZXR1cm4gOQorICAgICAgICBkZWYgZ2V0cGFzc19leGNlcHRpb24oKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignZ2V0cGFzcyBlcnJvcicpCisgICAgICAgIGNsYXNzIEdldFBhc3NDYWxsYWJsZToKKyAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gS0VZX1BBU1NXT1JECisgICAgICAgICAgICBkZWYgZ2V0cGFzcyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gS0VZX1BBU1NXT1JECisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1nZXRwYXNzX3VuaWNvZGUpCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1nZXRwYXNzX2J5dGVzKQorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9Z2V0cGFzc19ieXRlYXJyYXkpCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1HZXRQYXNzQ2FsbGFibGUoKSkKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ9R2V0UGFzc0NhbGxhYmxlKCkuZ2V0cGFzcykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpOgorICAgICAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPWdldHBhc3NfYmFkcGFzcykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJjYW5ub3QgYmUgbG9uZ2VyIik6CisgICAgICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9Z2V0cGFzc19odWdlKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAibXVzdCByZXR1cm4gYSBzdHJpbmciKToKKyAgICAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1nZXRwYXNzX2JhZF90eXBlKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiZ2V0cGFzcyBlcnJvciIpOgorICAgICAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPWdldHBhc3NfZXhjZXB0aW9uKQorICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgcGFzc3dvcmQgZnVuY3Rpb24gaXNuJ3QgY2FsbGVkIGlmIGl0IGlzbid0IG5lZWRlZAorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFLCBwYXNzd29yZD1nZXRwYXNzX2V4Y2VwdGlvbikKIAogICAgIGRlZiB0ZXN0X2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhzZWxmKToKICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQpAQCAtNDQzLDYgKzU0NywxOSBAQAogICAgICAgICAjIElzc3VlICMxMDk4OTogY3Jhc2ggaWYgdGhlIHNlY29uZCBhcmd1bWVudCB0eXBlIGlzIGludmFsaWQKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zLCBOb25lLCBUcnVlKQogCisgICAgZGVmIHRlc3RfbG9hZF9kaF9wYXJhbXMoc2VsZik6CisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgY3R4LmxvYWRfZGhfcGFyYW1zKERIRklMRSkKKyAgICAgICAgaWYgb3MubmFtZSAhPSAnbnQnOgorICAgICAgICAgICAgY3R4LmxvYWRfZGhfcGFyYW1zKEJZVEVTX0RIRklMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjdHgubG9hZF9kaF9wYXJhbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3R4LmxvYWRfZGhfcGFyYW1zLCBOb25lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGN0eC5sb2FkX2RoX3BhcmFtcyhXUk9OR0NFUlQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9FTlQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGN0eC5sb2FkX2RoX3BhcmFtcyhDRVJURklMRSkKKwogICAgIEBza2lwX2lmX2Jyb2tlbl91YnVudHVfc3NsCiAgICAgZGVmIHRlc3Rfc2Vzc2lvbl9zdGF0cyhzZWxmKToKICAgICAgICAgZm9yIHByb3RvIGluIFBST1RPQ09MUzoKQEAgLTQ2Nyw2ICs1ODQsNTcgQEAKICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICBjdHguc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHNzbC5IQVNfRUNESCwgIkVDREggZGlzYWJsZWQgb24gdGhpcyBPcGVuU1NMIGJ1aWxkIikKKyAgICBkZWYgdGVzdF9zZXRfZWNkaF9jdXJ2ZShzZWxmKToKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICBjdHguc2V0X2VjZGhfY3VydmUoInByaW1lMjU2djEiKQorICAgICAgICBjdHguc2V0X2VjZGhfY3VydmUoYiJwcmltZTI1NnYxIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjdHguc2V0X2VjZGhfY3VydmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3R4LnNldF9lY2RoX2N1cnZlLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjdHguc2V0X2VjZGhfY3VydmUsICJmb28iKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjdHguc2V0X2VjZGhfY3VydmUsIGIiZm9vIikKKworCitjbGFzcyBTU0xFcnJvclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3N0cihzZWxmKToKKyAgICAgICAgIyBUaGUgc3RyKCkgb2YgYSBTU0xFcnJvciBkb2Vzbid0IGluY2x1ZGUgdGhlIGVycm5vCisgICAgICAgIGUgPSBzc2wuU1NMRXJyb3IoMSwgImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAiZm9vIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmVycm5vLCAxKQorICAgICAgICAjIFNhbWUgZm9yIGEgc3ViY2xhc3MKKyAgICAgICAgZSA9IHNzbC5TU0xaZXJvUmV0dXJuRXJyb3IoMSwgImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAiZm9vIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmVycm5vLCAxKQorCisgICAgZGVmIHRlc3RfbGliX3JlYXNvbihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoZSBsaWJyYXJ5IGFuZCByZWFzb24gYXR0cmlidXRlcworICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGN0eC5sb2FkX2RoX3BhcmFtcyhDRVJURklMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubGlicmFyeSwgJ1BFTScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJlYXNvbiwgJ05PX1NUQVJUX0xJTkUnKQorICAgICAgICBzID0gc3RyKGNtLmV4Y2VwdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuc3RhcnRzd2l0aCgiW1BFTTogTk9fU1RBUlRfTElORV0gbm8gc3RhcnQgbGluZSIpLCBzKQorCisgICAgZGVmIHRlc3Rfc3ViY2xhc3Moc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgYXBwcm9wcmlhdGUgU1NMRXJyb3Igc3ViY2xhc3MgaXMgcmFpc2VkCisgICAgICAgICMgKHRoaXMgb25seSB0ZXN0cyBvbmUgb2YgdGhlbSkKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoKSBhcyBzOgorICAgICAgICAgICAgcy5iaW5kKCgiMTI3LjAuMC4xIiwgMCkpCisgICAgICAgICAgICBzLmxpc3Rlbig1KQorICAgICAgICAgICAgYyA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICAgICAgYy5jb25uZWN0KHMuZ2V0c29ja25hbWUoKSkKKyAgICAgICAgICAgIGMuc2V0YmxvY2tpbmcoRmFsc2UpCisgICAgICAgICAgICB3aXRoIGN0eC53cmFwX3NvY2tldChjLCBGYWxzZSwgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpIGFzIGM6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMV2FudFJlYWRFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgICAgIGMuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgICAgICAgICBzID0gc3RyKGNtLmV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5zdGFydHN3aXRoKCJUaGUgb3BlcmF0aW9uIGRpZCBub3QgY29tcGxldGUgKHJlYWQpIiksIHMpCisgICAgICAgICAgICAgICAgIyBGb3IgY29tcGF0aWJpbGl0eQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBzc2wuU1NMX0VSUk9SX1dBTlRfUkVBRCkKKwogCiBjbGFzcyBOZXR3b3JrZWRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTUyOSwxMyArNjk3LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgIHMuZG9faGFuZHNoYWtlKCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXJyLmFyZ3NbMF0gPT0gc3NsLlNTTF9FUlJPUl9XQU5UX1JFQUQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbc10sIFtdLCBbXSwgNS4wKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBlcnIuYXJnc1swXSA9PSBzc2wuU1NMX0VSUk9SX1dBTlRfV1JJVEU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NdLCBbXSwgNS4wKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRSZWFkRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzXSwgW10sIFtdLCA1LjApCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFdyaXRlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdLCA1LjApCiAgICAgICAgICAgICAgICAgIyBTU0wgZXN0YWJsaXNoZWQKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5nZXRwZWVyY2VydCgpKQogICAgICAgICAgICAgZmluYWxseToKQEAgLTY2Niw0NyArODMxLDQ5IEBACiAgICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKICAgICAgICAgICAgICAgICAgICAgcy5kb19oYW5kc2hha2UoKQogICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgICAgICAgICBpZiBlcnIuYXJnc1swXSA9PSBzc2wuU1NMX0VSUk9SX1dBTlRfUkVBRDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10pCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgZXJyLmFyZ3NbMF0gPT0gc3NsLlNTTF9FUlJPUl9XQU5UX1dSSVRFOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NdLCBbXSkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50UmVhZEVycm9yOgorICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzXSwgW10sIFtdKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFdyaXRlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10pCiAgICAgICAgICAgICBzLmNsb3NlKCkKICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbk5lZWRlZCAlZCBjYWxscyB0byBkb19oYW5kc2hha2UoKSB0byBlc3RhYmxpc2ggc2Vzc2lvbi5cbiIgJSBjb3VudCkKIAogICAgIGRlZiB0ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoInN2bi5weXRob24ub3JnIik6Ci0gICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoInN2bi5weXRob24ub3JnIiwgNDQzKSkKLSAgICAgICAgICAgIGlmIG5vdCBwZW06Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBzZXJ2ZXIgY2VydGlmaWNhdGUgb24gc3ZuLnB5dGhvbi5vcmc6NDQzISIpCisgICAgICAgIGRlZiBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKGhvc3QsIHBvcnQsIGNlcnQ9Tm9uZSk6CisgICAgICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KGhvc3QpOgorICAgICAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSkKKyAgICAgICAgICAgICAgICBpZiBub3QgcGVtOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiAlczolcyEiICUgKGhvc3QsIHBvcnQpKQogCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKCJzdm4ucHl0aG9uLm9yZyIsIDQ0MyksIGNhX2NlcnRzPUNFUlRGSUxFKQotICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyB4OgotICAgICAgICAgICAgICAgICNzaG91bGQgZmFpbAorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpLCBjYV9jZXJ0cz1DRVJURklMRSkKKyAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIHg6CisgICAgICAgICAgICAgICAgICAgICNzaG91bGQgZmFpbAorICAgICAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIlc1xuIiAlIHgpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJHb3Qgc2VydmVyIGNlcnRpZmljYXRlICVzIGZvciAlczolcyEiICUgKHBlbSwgaG9zdCwgcG9ydCkpCisKKyAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCksIGNhX2NlcnRzPWNlcnQpCisgICAgICAgICAgICAgICAgaWYgbm90IHBlbToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBzZXJ2ZXIgY2VydGlmaWNhdGUgb24gJXM6JXMhIiAlIChob3N0LCBwb3J0KSkKICAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiVzXG4iICUgeCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJHb3Qgc2VydmVyIGNlcnRpZmljYXRlICVzIGZvciBzdm4ucHl0aG9uLm9yZyEiICUgcGVtKQorICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcblZlcmlmaWVkIGNlcnRpZmljYXRlIGZvciAlczolcyBpc1xuJXNcbiIgJSAoaG9zdCwgcG9ydCAscGVtKSkKIAotICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKCJzdm4ucHl0aG9uLm9yZyIsIDQ0MyksIGNhX2NlcnRzPVNWTl9QWVRIT05fT1JHX1JPT1RfQ0VSVCkKLSAgICAgICAgICAgIGlmIG5vdCBwZW06Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBzZXJ2ZXIgY2VydGlmaWNhdGUgb24gc3ZuLnB5dGhvbi5vcmc6NDQzISIpCi0gICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5WZXJpZmllZCBjZXJ0aWZpY2F0ZSBmb3Igc3ZuLnB5dGhvbi5vcmc6NDQzIGlzXG4lc1xuIiAlIHBlbSkKKyAgICAgICAgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgnc3ZuLnB5dGhvbi5vcmcnLCA0NDMsIFNWTl9QWVRIT05fT1JHX1JPT1RfQ0VSVCkKKyAgICAgICAgaWYgc3VwcG9ydC5JUFY2X0VOQUJMRUQ6CisgICAgICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKCdpcHY2Lmdvb2dsZS5jb20nLCA0NDMpCiAKICAgICBkZWYgdGVzdF9jaXBoZXJzKHNlbGYpOgogICAgICAgICByZW1vdGUgPSAoInN2bi5weXRob24ub3JnIiwgNDQzKQogICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KHJlbW90ZVswXSk6Ci0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2lwaGVycz0iQUxMIikKLSAgICAgICAgICAgIHMuY29ubmVjdChyZW1vdGUpCi0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2lwaGVycz0iREVGQVVMVCIpCi0gICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQorICAgICAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2lwaGVycz0iQUxMIikgYXMgczoKKyAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQorICAgICAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2lwaGVycz0iREVGQVVMVCIpIGFzIHM6CisgICAgICAgICAgICAgICAgcy5jb25uZWN0KHJlbW90ZSkKICAgICAgICAgICAgICMgRXJyb3IgY2hlY2tpbmcgY2FuIGhhcHBlbiBhdCBpbnN0YW50aWF0aW9uIG9yIHdoZW4gY29ubmVjdGluZwogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgIk5vIGNpcGhlciBjYW4gYmUgc2VsZWN0ZWQiKToKICAgICAgICAgICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpIGFzIHNvY2s6CkBAIC03NzQsMTMgKzk0MSwxMiBAQAogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zc2xjb25uID0gc2VsZi5zZXJ2ZXIuY29udGV4dC53cmFwX3NvY2tldCgKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc29jaywgc2VydmVyX3NpZGU9VHJ1ZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgKHNzbC5TU0xFcnJvciwgc29ja2V0LmVycm9yKSBhcyBlOgotICAgICAgICAgICAgICAgICAgICAjIFRyZWF0IEVDT05OUkVTRVQgYXMgdGhvdWdoIGl0IHdlcmUgYW4gU1NMRXJyb3IgLSBPcGVuU1NMCi0gICAgICAgICAgICAgICAgICAgICMgb24gVWJ1bnR1IGFicnVwdGx5IGNsb3NlcyB0aGUgY29ubmVjdGlvbiB3aGVuIGFza2VkIHRvIHVzZQotICAgICAgICAgICAgICAgICAgICAjIGFuIHVuc3VwcG9ydGVkIHByb3RvY29sLgotICAgICAgICAgICAgICAgICAgICBpZiAobm90IGlzaW5zdGFuY2UoZSwgc3NsLlNTTEVycm9yKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIGUuZXJybm8gIT0gZXJybm8uRUNPTk5SRVNFVCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5zZWxlY3RlZF9wcm90b2NvbHMuYXBwZW5kKHNlbGYuc3NsY29ubi5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKSkKKyAgICAgICAgICAgICAgICBleGNlcHQgKHNzbC5TU0xFcnJvciwgQ29ubmVjdGlvblJlc2V0RXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICMgV2UgdHJlYXQgQ29ubmVjdGlvblJlc2V0RXJyb3IgYXMgdGhvdWdoIGl0IHdlcmUgYW4KKyAgICAgICAgICAgICAgICAgICAgIyBTU0xFcnJvciAtIE9wZW5TU0wgb24gVWJ1bnR1IGFicnVwdGx5IGNsb3NlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgIyBjb25uZWN0aW9uIHdoZW4gYXNrZWQgdG8gdXNlIGFuIHVuc3VwcG9ydGVkIHByb3RvY29sLgorICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICMgWFhYIFZhcmlvdXMgZXJyb3JzIGNhbiBoYXZlIGhhcHBlbmVkIGhlcmUsIGZvciBleGFtcGxlCiAgICAgICAgICAgICAgICAgICAgICMgYSBtaXNtYXRjaGluZyBwcm90b2NvbCB2ZXJzaW9uLCBhbiBpbnZhbGlkIGNlcnRpZmljYXRlLAogICAgICAgICAgICAgICAgICAgICAjIG9yIGEgbG93LWxldmVsIGJ1Zy4gVGhpcyBzaG91bGQgYmUgbWFkZSBtb3JlIGRpc2NyaW1pbmF0aW5nLgpAQCAtODAyLDYgKzk2OCw4IEBACiAgICAgICAgICAgICAgICAgICAgIGNpcGhlciA9IHNlbGYuc3NsY29ubi5jaXBoZXIoKQogICAgICAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2UgYW5kIHNlbGYuc2VydmVyLmNoYXR0eToKICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiBzZXJ2ZXI6IGNvbm5lY3Rpb24gY2lwaGVyIGlzIG5vdyAiICsgc3RyKGNpcGhlcikgKyAiXG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiIHNlcnZlcjogc2VsZWN0ZWQgcHJvdG9jb2wgaXMgbm93ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzdHIoc2VsZi5zc2xjb25uLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpKSArICJcbiIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICAgICAgICAgIGRlZiByZWFkKHNlbGYpOgpAQCAtODU2LDYgKzEwMjQsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNzbGNvbm4gPSBOb25lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlIGFuZCBzZWxmLnNlcnZlci5jb25uZWN0aW9uY2hhdHR5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgc2VydmVyOiBjb25uZWN0aW9uIGlzIG5vdyB1bmVuY3J5cHRlZC4uLlxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgc3RyaXBwZWQgPT0gYidDQiB0bHMtdW5pcXVlJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2UgYW5kIHNlbGYuc2VydmVyLmNvbm5lY3Rpb25jaGF0dHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiBzZXJ2ZXI6IHJlYWQgQ0IgdGxzLXVuaXF1ZSBmcm9tIGNsaWVudCwgc2VuZGluZyBvdXIgQ0IgZGF0YS4uLlxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5zc2xjb25uLmdldF9jaGFubmVsX2JpbmRpbmcoInRscy11bmlxdWUiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud3JpdGUocmVwcihkYXRhKS5lbmNvZGUoInVzLWFzY2lpIikgKyBiIlxuIikKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnQudmVyYm9zZSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuY29ubmVjdGlvbmNoYXR0eSk6CkBAIC04NzUsNyArMTA0OCw3IEBACiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjZXJ0aWZpY2F0ZT1Ob25lLCBzc2xfdmVyc2lvbj1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgY2VydHJlcXM9Tm9uZSwgY2FjZXJ0cz1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UsIHN0YXJ0dGxzX3NlcnZlcj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgIGNpcGhlcnM9Tm9uZSwgY29udGV4dD1Ob25lKToKKyAgICAgICAgICAgICAgICAgICAgIG5wbl9wcm90b2NvbHM9Tm9uZSwgY2lwaGVycz1Ob25lLCBjb250ZXh0PU5vbmUpOgogICAgICAgICAgICAgaWYgY29udGV4dDoKICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQgPSBjb250ZXh0CiAgICAgICAgICAgICBlbHNlOgpAQCAtODg4LDYgKzEwNjEsOCBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhY2VydHMpCiAgICAgICAgICAgICAgICAgaWYgY2VydGlmaWNhdGU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGlmaWNhdGUpCisgICAgICAgICAgICAgICAgaWYgbnBuX3Byb3RvY29sczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzKG5wbl9wcm90b2NvbHMpCiAgICAgICAgICAgICAgICAgaWYgY2lwaGVyczoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LnNldF9jaXBoZXJzKGNpcGhlcnMpCiAgICAgICAgICAgICBzZWxmLmNoYXR0eSA9IGNoYXR0eQpAQCAtODk3LDYgKzEwNzIsNyBAQAogICAgICAgICAgICAgc2VsZi5wb3J0ID0gc3VwcG9ydC5iaW5kX3BvcnQoc2VsZi5zb2NrKQogICAgICAgICAgICAgc2VsZi5mbGFnID0gTm9uZQogICAgICAgICAgICAgc2VsZi5hY3RpdmUgPSBGYWxzZQorICAgICAgICAgICAgc2VsZi5zZWxlY3RlZF9wcm90b2NvbHMgPSBbXQogICAgICAgICAgICAgc2VsZi5jb25uX2Vycm9ycyA9IFtdCiAgICAgICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9fKHNlbGYpCiAgICAgICAgICAgICBzZWxmLmRhZW1vbiA9IFRydWUKQEAgLTk2NCwxMiArMTE0MCwxMSBAQAogICAgICAgICAgICAgICAgIGRlZiBfZG9fc3NsX2hhbmRzaGFrZShzZWxmKToKICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnIuYXJnc1swXSBpbiAoc3NsLlNTTF9FUlJPUl9XQU5UX1JFQUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsLlNTTF9FUlJPUl9XQU5UX1dSSVRFKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgZXJyLmFyZ3NbMF0gPT0gc3NsLlNTTF9FUlJPUl9FT0Y6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaGFuZGxlX2Nsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IChzc2wuU1NMV2FudFJlYWRFcnJvciwgc3NsLlNTTFdhbnRXcml0ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVPRkVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaGFuZGxlX2Nsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXJyLmFyZ3NbMF0gPT0gZXJybm8uRUNPTk5BQk9SVEVEOgpAQCAtMTA5Miw2ICsxMjY3LDcgQEAKICAgICAgICAgTGF1bmNoIGEgc2VydmVyLCBjb25uZWN0IGEgY2xpZW50IHRvIGl0IGFuZCB0cnkgdmFyaW91cyByZWFkcwogICAgICAgICBhbmQgd3JpdGVzLgogICAgICAgICAiIiIKKyAgICAgICAgc3RhdHMgPSB7fQogICAgICAgICBzZXJ2ZXIgPSBUaHJlYWRlZEVjaG9TZXJ2ZXIoY29udGV4dD1zZXJ2ZXJfY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1jaGF0dHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uY2hhdHR5PUZhbHNlKQpAQCAtMTExNyw3ICsxMjkzLDE0IEBACiAgICAgICAgICAgICAgICAgaWYgY29ubmVjdGlvbmNoYXR0eToKICAgICAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiIGNsaWVudDogIGNsb3NpbmcgY29ubmVjdGlvbi5cbiIpCisgICAgICAgICAgICAgICAgc3RhdHMudXBkYXRlKHsKKyAgICAgICAgICAgICAgICAgICAgJ2NvbXByZXNzaW9uJzogcy5jb21wcmVzc2lvbigpLAorICAgICAgICAgICAgICAgICAgICAnY2lwaGVyJzogcy5jaXBoZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgJ2NsaWVudF9ucG5fcHJvdG9jb2wnOiBzLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpCisgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgICAgIHN0YXRzWydzZXJ2ZXJfbnBuX3Byb3RvY29scyddID0gc2VydmVyLnNlbGVjdGVkX3Byb3RvY29scworICAgICAgICByZXR1cm4gc3RhdHMKIAogICAgIGRlZiB0cnlfcHJvdG9jb2xfY29tYm8oc2VydmVyX3Byb3RvY29sLCBjbGllbnRfcHJvdG9jb2wsIGV4cGVjdF9zdWNjZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydHNyZXFzPU5vbmUsIHNlcnZlcl9vcHRpb25zPTAsIGNsaWVudF9vcHRpb25zPTApOgpAQCAtMTI2OSw3ICsxNDUyLDggQEAKICAgICAgICAgICAgICAgICB0LmpvaW4oKQogCiAgICAgICAgIEBza2lwX2lmX2Jyb2tlbl91YnVudHVfc3NsCi0gICAgICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc3NsLCAnUFJPVE9DT0xfU1NMdjInKSwgIm5lZWQgU1NMdjIiKQorICAgICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNzbCwgJ1BST1RPQ09MX1NTTHYyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPcGVuU1NMIGlzIGNvbXBpbGVkIHdpdGhvdXQgU1NMdjIgc3VwcG9ydCIpCiAgICAgICAgIGRlZiB0ZXN0X3Byb3RvY29sX3NzbHYyKHNlbGYpOgogICAgICAgICAgICAgIiIiQ29ubmVjdGluZyB0byBhbiBTU0x2MiBzZXJ2ZXIgd2l0aCB2YXJpb3VzIGNsaWVudCBvcHRpb25zIiIiCiAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CkBAIC0xNTc1LDYgKzE3NTksMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnN1bWUgZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgcy5yZWFkKCkKKworICAgICAgICAgICAgICAgICMgTWFrZSBzdXJlIHNlbmRtc2cgZXQgYWwgYXJlIGRpc2FsbG93ZWQgdG8gYXZvaWQKKyAgICAgICAgICAgICAgICAjIGluYWR2ZXJ0ZW50IGRpc2Nsb3N1cmUgb2YgZGF0YSBhbmQvb3IgY29ycnVwdGlvbgorICAgICAgICAgICAgICAgICMgb2YgdGhlIGVuY3J5cHRlZCBkYXRhIHN0cmVhbQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHMuc2VuZG1zZywgW2IiZGF0YSJdKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHMucmVjdm1zZywgMTAwKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5yZWN2bXNnX2ludG8sIGJ5dGVhcnJheSgxMDApKQorCiAgICAgICAgICAgICAgICAgcy53cml0ZShiIm92ZXJcbiIpCiAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCiAKQEAgLTE2NTksNiArMTg1Miw4IEBACiAgICAgICAgICAgICBjbGllbnRfYWRkciA9IGNsaWVudC5nZXRzb2NrbmFtZSgpCiAgICAgICAgICAgICBjbGllbnQuY2xvc2UoKQogICAgICAgICAgICAgdC5qb2luKCkKKyAgICAgICAgICAgIHJlbW90ZS5jbG9zZSgpCisgICAgICAgICAgICBzZXJ2ZXIuY2xvc2UoKQogICAgICAgICAgICAgIyBTYW5pdHkgY2hlY2tzLgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHJlbW90ZSwgc3NsLlNTTFNvY2tldCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGVlciwgY2xpZW50X2FkZHIpCkBAIC0xNjczLDEyICsxODY4LDE0MCBAQAogICAgICAgICAgICAgd2l0aCBUaHJlYWRlZEVjaG9TZXJ2ZXIoQ0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfU1NMdjIzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PUZhbHNlKSBhcyBzZXJ2ZXI6Ci0gICAgICAgICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KCkgYXMgc29jazoKLSAgICAgICAgICAgICAgICAgICAgcyA9IGNvbnRleHQud3JhcF9zb2NrZXQoc29jaykKKyAgICAgICAgICAgICAgICB3aXRoIGNvbnRleHQud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpKSBhcyBzOgogICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChPU0Vycm9yLCBzc2wuU1NMRXJyb3IpKToKICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibm8gc2hhcmVkIGNpcGhlciIsIHN0cihzZXJ2ZXIuY29ubl9lcnJvcnNbMF0pKQogCisgICAgICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKCJ0bHMtdW5pcXVlIiBpbiBzc2wuQ0hBTk5FTF9CSU5ESU5HX1RZUEVTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rscy11bmlxdWUnIGNoYW5uZWwgYmluZGluZyBub3QgYXZhaWxhYmxlIikKKyAgICAgICAgZGVmIHRlc3RfdGxzX3VuaXF1ZV9jaGFubmVsX2JpbmRpbmcoc2VsZik6CisgICAgICAgICAgICAiIiJUZXN0IHRscy11bmlxdWUgY2hhbm5lbCBiaW5kaW5nLiIiIgorICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuIikKKworICAgICAgICAgICAgc2VydmVyID0gVGhyZWFkZWRFY2hvU2VydmVyKENFUlRGSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRyZXFzPXNzbC5DRVJUX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1RMU3YxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2VydHM9Q0VSVEZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKKyAgICAgICAgICAgIHdpdGggc2VydmVyOgorICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPUNFUlRGSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgIyBnZXQgdGhlIGRhdGEKKyAgICAgICAgICAgICAgICBjYl9kYXRhID0gcy5nZXRfY2hhbm5lbF9iaW5kaW5nKCJ0bHMtdW5pcXVlIikKKyAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiBnb3QgY2hhbm5lbCBiaW5kaW5nIGRhdGE6IHswIXJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChjYl9kYXRhKSkKKworICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgaXQgaXMgc2FuZQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGNiX2RhdGEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2JfZGF0YSksIDEyKSAjIFRydWUgZm9yIFRMU3YxCisKKyAgICAgICAgICAgICAgICAjIGFuZCBjb21wYXJlIHdpdGggdGhlIHBlZXJzIHZlcnNpb24KKyAgICAgICAgICAgICAgICBzLndyaXRlKGIiQ0IgdGxzLXVuaXF1ZVxuIikKKyAgICAgICAgICAgICAgICBwZWVyX2RhdGFfcmVwciA9IHMucmVhZCgpLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBlZXJfZGF0YV9yZXByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihjYl9kYXRhKS5lbmNvZGUoInVzLWFzY2lpIikpCisgICAgICAgICAgICAgICAgcy5jbG9zZSgpCisKKyAgICAgICAgICAgICAgICAjIG5vdywgYWdhaW4KKyAgICAgICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQorICAgICAgICAgICAgICAgIG5ld19jYl9kYXRhID0gcy5nZXRfY2hhbm5lbF9iaW5kaW5nKCJ0bHMtdW5pcXVlIikKKyAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiBnb3QgYW5vdGhlciBjaGFubmVsIGJpbmRpbmcgZGF0YTogezAhcn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KG5ld19jYl9kYXRhKSkKKyAgICAgICAgICAgICAgICAjIGlzIGl0IHJlYWxseSB1bmlxdWUKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNiX2RhdGEsIG5ld19jYl9kYXRhKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGNiX2RhdGEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2JfZGF0YSksIDEyKSAjIFRydWUgZm9yIFRMU3YxCisgICAgICAgICAgICAgICAgcy53cml0ZShiIkNCIHRscy11bmlxdWVcbiIpCisgICAgICAgICAgICAgICAgcGVlcl9kYXRhX3JlcHIgPSBzLnJlYWQoKS5zdHJpcCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwZWVyX2RhdGFfcmVwciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIobmV3X2NiX2RhdGEpLmVuY29kZSgidXMtYXNjaWkiKSkKKyAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKworICAgICAgICBkZWYgdGVzdF9jb21wcmVzc2lvbihzZWxmKToKKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNvbnRleHQsIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiBnb3QgY29tcHJlc3Npb246IHshcn1cbiIuZm9ybWF0KHN0YXRzWydjb21wcmVzc2lvbiddKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3RhdHNbJ2NvbXByZXNzaW9uJ10sIHsgTm9uZSwgJ1pMSUInLCAnUkxFJyB9KQorCisgICAgICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc3NsLCAnT1BfTk9fQ09NUFJFU1NJT04nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNzbC5PUF9OT19DT01QUkVTU0lPTiBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCisgICAgICAgIGRlZiB0ZXN0X2NvbXByZXNzaW9uX2Rpc2FibGVkKHNlbGYpOgorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19DT01QUkVTU0lPTgorICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY29udGV4dCwgY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN0YXRzWydjb21wcmVzc2lvbiddLCBOb25lKQorCisgICAgICAgIGRlZiB0ZXN0X2RoX3BhcmFtcyhzZWxmKToKKyAgICAgICAgICAgICMgQ2hlY2sgd2UgY2FuIGdldCBhIGNvbm5lY3Rpb24gd2l0aCBlcGhlbWVyYWwgRGlmZmllLUhlbGxtYW4KKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF9kaF9wYXJhbXMoREhGSUxFKQorICAgICAgICAgICAgY29udGV4dC5zZXRfY2lwaGVycygia0VESCIpCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjb250ZXh0LCBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKyAgICAgICAgICAgIGNpcGhlciA9IHN0YXRzWyJjaXBoZXIiXVswXQorICAgICAgICAgICAgcGFydHMgPSBjaXBoZXIuc3BsaXQoIi0iKQorICAgICAgICAgICAgaWYgIkFESCIgbm90IGluIHBhcnRzIGFuZCAiRURIIiBub3QgaW4gcGFydHMgYW5kICJESEUiIG5vdCBpbiBwYXJ0czoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vbi1ESCBjaXBoZXI6ICIgKyBjaXBoZXJbMF0pCisKKyAgICAgICAgZGVmIHRlc3Rfc2VsZWN0ZWRfbnBuX3Byb3RvY29sKHNlbGYpOgorICAgICAgICAgICAgIyBzZWxlY3RlZF9ucG5fcHJvdG9jb2woKSBpcyBOb25lIHVubGVzcyBOUE4gaXMgdXNlZAorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY29udGV4dCwgY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN0YXRzWydjbGllbnRfbnBuX3Byb3RvY29sJ10sIE5vbmUpCisKKyAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLkhBU19OUE4sICJOUE4gc3VwcG9ydCBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCisgICAgICAgIGRlZiB0ZXN0X25wbl9wcm90b2NvbHMoc2VsZik6CisgICAgICAgICAgICBzZXJ2ZXJfcHJvdG9jb2xzID0gWydodHRwLzEuMScsICdzcGR5LzInXQorICAgICAgICAgICAgcHJvdG9jb2xfdGVzdHMgPSBbCisgICAgICAgICAgICAgICAgKFsnaHR0cC8xLjEnLCAnc3BkeS8yJ10sICdodHRwLzEuMScpLAorICAgICAgICAgICAgICAgIChbJ3NwZHkvMicsICdodHRwLzEuMSddLCAnaHR0cC8xLjEnKSwKKyAgICAgICAgICAgICAgICAoWydzcGR5LzInLCAndGVzdCddLCAnc3BkeS8yJyksCisgICAgICAgICAgICAgICAgKFsnYWJjJywgJ2RlZiddLCAnYWJjJykKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGZvciBjbGllbnRfcHJvdG9jb2xzLCBleHBlY3RlZCBpbiBwcm90b2NvbF90ZXN0czoKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQuc2V0X25wbl9wcm90b2NvbHMoc2VydmVyX3Byb3RvY29scykKKyAgICAgICAgICAgICAgICBjbGllbnRfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgICAgICBjbGllbnRfY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICAgICAgY2xpZW50X2NvbnRleHQuc2V0X25wbl9wcm90b2NvbHMoY2xpZW50X3Byb3RvY29scykKKyAgICAgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKworICAgICAgICAgICAgICAgIG1zZyA9ICJmYWlsZWQgdHJ5aW5nICVzIChzKSBhbmQgJXMgKGMpLlxuIiBcCisgICAgICAgICAgICAgICAgICAgICAgIndhcyBleHBlY3RpbmcgJXMsIGJ1dCBnb3QgJSVzIGZyb20gdGhlICUlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzdHIoc2VydmVyX3Byb3RvY29scyksIHN0cihjbGllbnRfcHJvdG9jb2xzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGV4cGVjdGVkKSkKKyAgICAgICAgICAgICAgICBjbGllbnRfcmVzdWx0ID0gc3RhdHNbJ2NsaWVudF9ucG5fcHJvdG9jb2wnXQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50X3Jlc3VsdCwgZXhwZWN0ZWQsIG1zZyAlIChjbGllbnRfcmVzdWx0LCAiY2xpZW50IikpCisgICAgICAgICAgICAgICAgc2VydmVyX3Jlc3VsdCA9IHN0YXRzWydzZXJ2ZXJfbnBuX3Byb3RvY29scyddWy0xXSBcCisgICAgICAgICAgICAgICAgICAgIGlmIGxlbihzdGF0c1snc2VydmVyX25wbl9wcm90b2NvbHMnXSkgZWxzZSAnbm90aGluZycKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlcl9yZXN1bHQsIGV4cGVjdGVkLCBtc2cgJSAoc2VydmVyX3Jlc3VsdCwgInNlcnZlciIpKQorCiAKIGRlZiB0ZXN0X21haW4odmVyYm9zZT1GYWxzZSk6CiAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgpAQCAtMTcwNiwxNCArMjAyOSwxNCBAQAogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZmlsZW5hbWUpOgogICAgICAgICAgICAgcmFpc2Ugc3VwcG9ydC5UZXN0RmFpbGVkKCJDYW4ndCByZWFkIGNlcnRpZmljYXRlIGZpbGUgJXIiICUgZmlsZW5hbWUpCiAKLSAgICB0ZXN0cyA9IFtDb250ZXh0VGVzdHMsIEJhc2ljU29ja2V0VGVzdHNdCisgICAgdGVzdHMgPSBbQ29udGV4dFRlc3RzLCBCYXNpY1NvY2tldFRlc3RzLCBTU0xFcnJvclRlc3RzXQogCiAgICAgaWYgc3VwcG9ydC5pc19yZXNvdXJjZV9lbmFibGVkKCduZXR3b3JrJyk6CiAgICAgICAgIHRlc3RzLmFwcGVuZChOZXR3b3JrZWRUZXN0cykKIAogICAgIGlmIF9oYXZlX3RocmVhZHM6CiAgICAgICAgIHRocmVhZF9pbmZvID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQotICAgICAgICBpZiB0aHJlYWRfaW5mbyBhbmQgc3VwcG9ydC5pc19yZXNvdXJjZV9lbmFibGVkKCduZXR3b3JrJyk6CisgICAgICAgIGlmIHRocmVhZF9pbmZvOgogICAgICAgICAgICAgdGVzdHMuYXBwZW5kKFRocmVhZGVkVGVzdHMpCiAKICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0YXJ0ZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RhcnRmaWxlLnB5CmluZGV4IGFlOWFlYjkuLjVhOWMyZGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RhcnRmaWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RhcnRmaWxlLnB5CkBAIC01LDcgKzUsNyBAQAogIwogIyBBIHBvc3NpYmxlIGltcHJvdmVtZW50IHdvdWxkIGJlIHRvIGhhdmUgZW1wdHkudmJzIGRvIHNvbWV0aGluZyB0aGF0CiAjIHdlIGNhbiBkZXRlY3QgaGVyZSwgdG8gbWFrZSBzdXJlIHRoYXQgbm90IG9ubHkgdGhlIG9zLnN0YXJ0ZmlsZSgpCi0jIGNhbGwgc3VjY2VlZGVkLCBidXQgYWxzbyB0aGUgdGhlIHNjcmlwdCBhY3R1YWxseSBoYXMgcnVuLgorIyBjYWxsIHN1Y2NlZWRlZCwgYnV0IGFsc28gdGhlIHNjcmlwdCBhY3R1YWxseSBoYXMgcnVuLgogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdGF0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdGF0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4ZDVlMzgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3N0YXQucHkKQEAgLTAsMCArMSw2NiBAQAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgb3MKK2ltcG9ydCBzdGF0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QKKworCitkZWYgZ2V0X21vZGUoZm5hbWU9VEVTVEZOKToKKyAgICByZXR1cm4gc3RhdC5maWxlbW9kZShvcy5sc3RhdChmbmFtZSkuc3RfbW9kZSkKKworCitjbGFzcyBUZXN0RmlsZW1vZGUodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5yZW1vdmUoVEVTVEZOKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy5ybWRpcihURVNURk4pCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgdGVhckRvd24gPSBzZXRVcAorCisgICAgZGVmIHRlc3RfbW9kZShzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgaWYgb3MubmFtZSA9PSAncG9zaXgnOgorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzcwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJy1yd3gtLS0tLS0nKQorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzA3MCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJy0tLS1yd3gtLS0nKQorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzAwNykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJy0tLS0tLS1yd3gnKQorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzQ0NCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJy1yLS1yLS1yLS0nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCAwbzcwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKVs6M10sICctcncnKQorCisgICAgZGVmIHRlc3RfZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICBvcy5ta2RpcihURVNURk4pCisgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgMG83MDApCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJ2Ryd3gtLS0tLS0nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfbW9kZSgpWzBdLCAnZCcpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnc3ltbGluaycpLCAnb3Muc3ltbGluayBub3QgYXZhaWxhYmxlJykKKyAgICBkZWYgdGVzdF9saW5rKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5zeW1saW5rKG9zLmdldGN3ZCgpLCBURVNURk4pCisgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgTm90SW1wbGVtZW50ZWRFcnJvcikgYXMgZXJyOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3Qoc3RyKGVycikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9tb2RlKClbMF0sICdsJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdta2ZpZm8nKSwgJ29zLm1rZmlmbyBub3QgYXZhaWxhYmxlJykKKyAgICBkZWYgdGVzdF9maWZvKHNlbGYpOgorICAgICAgICBvcy5ta2ZpZm8oVEVTVEZOLCAwbzcwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfbW9kZSgpLCAncHJ3eC0tLS0tLScpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdChUZXN0RmlsZW1vZGUpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJpbmcucHkKaW5kZXggMzRkMWRjZi4uYzJiZGZkYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJpbmcucHkKQEAgLTI2LDYgKzI2LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nLmNhcHdvcmRzKCdcdGFCY1x0RGVGXHQnKSwgJ0FiYyBEZWYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZy5jYXB3b3JkcygnXHRhQmNcdERlRlx0JywgJ1x0JyksICdcdEFiY1x0RGVmXHQnKQogCisgICAgZGVmIHRlc3RfYmFzaWNfZm9ybWF0dGVyKHNlbGYpOgorICAgICAgICBmbXQgPSBzdHJpbmcuRm9ybWF0dGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJmb28iKSwgImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiZm9vezB9IiwgImJhciIpLCAiZm9vYmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJmb297MX17MH0tezF9IiwgImJhciIsIDYpLCAiZm9vNmJhci02IikKKwogICAgIGRlZiB0ZXN0X2NvbnZlcnNpb25fc3BlY2lmaWVycyhzZWxmKToKICAgICAgICAgZm10ID0gc3RyaW5nLkZvcm1hdHRlcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiLXthcmchcn0tIiwgYXJnPSd0ZXN0JyksICItJ3Rlc3QnLSIpCkBAIC0zOCwxNSArNDQsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJ7MCFhfSIsICBjaHIoMjU1KSksICInXFx4ZmYnIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJ7MCFhfSIsICBjaHIoMjU2KSksICInXFx1MDEwMCciKQogCi0gICAgZGVmIHRlc3RfZm9ybWF0dGVyKHNlbGYpOgorICAgIGRlZiB0ZXN0X25hbWVfbG9va3VwKHNlbGYpOgogICAgICAgICBmbXQgPSBzdHJpbmcuRm9ybWF0dGVyKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJmb28iKSwgImZvbyIpCisgICAgICAgIGNsYXNzIEFueUF0dHI6CisgICAgICAgICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0cik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHIKKyAgICAgICAgeCA9IEFueUF0dHIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoInswLmx1bWJlcn17MC5qYWNrfSIsIHgpLCAnbHVtYmVyamFjaycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgZm10LmZvcm1hdCgiezAubHVtYmVyfXswLmphY2t9IiwgJycpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJmb297MH0iLCAiYmFyIiksICJmb29iYXIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoImZvb3sxfXswfS17MX0iLCAiYmFyIiwgNiksICJmb282YmFyLTYiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoIi17YXJnIXJ9LSIsIGFyZz0ndGVzdCcpLCAiLSd0ZXN0Jy0iKQorICAgIGRlZiB0ZXN0X2luZGV4X2xvb2t1cChzZWxmKToKKyAgICAgICAgZm10ID0gc3RyaW5nLkZvcm1hdHRlcigpCisgICAgICAgIGxvb2t1cCA9IFsiZWdncyIsICJhbmQiLCAic3BhbSJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiezBbMl19ezBbMF19IiwgbG9va3VwKSwgJ3NwYW1lZ2dzJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yKToKKyAgICAgICAgICAgIGZtdC5mb3JtYXQoInswWzJdfXswWzBdfSIsIFtdKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGZtdC5mb3JtYXQoInswWzJdfXswWzBdfSIsIHt9KQogCi0gICAgICAgICMgb3ZlcnJpZGUgZ2V0X3ZhbHVlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfZ2V0X3ZhbHVlKHNlbGYpOgogICAgICAgICBjbGFzcyBOYW1lc3BhY2VGb3JtYXR0ZXIoc3RyaW5nLkZvcm1hdHRlcik6CiAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZXNwYWNlPXt9KToKICAgICAgICAgICAgICAgICBzdHJpbmcuRm9ybWF0dGVyLl9faW5pdF9fKHNlbGYpCkBAIC02Niw3ICs4Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgie2dyZWV0aW5nfSwgd29ybGQhIiksICdoZWxsbywgd29ybGQhJykKIAogCi0gICAgICAgICMgb3ZlcnJpZGUgZm9ybWF0X2ZpZWxkICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfZm9ybWF0X2ZpZWxkKHNlbGYpOgogICAgICAgICBjbGFzcyBDYWxsRm9ybWF0dGVyKHN0cmluZy5Gb3JtYXR0ZXIpOgogICAgICAgICAgICAgZGVmIGZvcm1hdF9maWVsZChzZWxmLCB2YWx1ZSwgZm9ybWF0X3NwZWMpOgogICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXQodmFsdWUoKSwgZm9ybWF0X3NwZWMpCkBAIC03NSwxOCArOTIsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCcqezB9KicsIGxhbWJkYSA6ICdyZXN1bHQnKSwgJypyZXN1bHQqJykKIAogCi0gICAgICAgICMgb3ZlcnJpZGUgY29udmVydF9maWVsZCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfY29udmVydF9maWVsZChzZWxmKToKICAgICAgICAgY2xhc3MgWEZvcm1hdHRlcihzdHJpbmcuRm9ybWF0dGVyKToKICAgICAgICAgICAgIGRlZiBjb252ZXJ0X2ZpZWxkKHNlbGYsIHZhbHVlLCBjb252ZXJzaW9uKToKICAgICAgICAgICAgICAgICBpZiBjb252ZXJzaW9uID09ICd4JzoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoWEZvcm1hdHRlciwgc2VsZikuY29udmVydF9maWVsZCh2YWx1ZSwgY29udmVyc2lvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5jb252ZXJ0X2ZpZWxkKHZhbHVlLCBjb252ZXJzaW9uKQogCiAgICAgICAgIGZtdCA9IFhGb3JtYXR0ZXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoInswIXJ9OnswIXh9IiwgJ2ZvbycsICdmb28nKSwgIidmb28nOk5vbmUiKQogCiAKLSAgICAgICAgIyBvdmVycmlkZSBwYXJzZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBkZWYgdGVzdF9vdmVycmlkZV9wYXJzZShzZWxmKToKICAgICAgICAgY2xhc3MgQmFyRm9ybWF0dGVyKHN0cmluZy5Gb3JtYXR0ZXIpOgogICAgICAgICAgICAgIyByZXR1cm5zIGFuIGl0ZXJhYmxlIHRoYXQgY29udGFpbnMgdHVwbGVzIG9mIHRoZSBmb3JtOgogICAgICAgICAgICAgIyAobGl0ZXJhbF90ZXh0LCBmaWVsZF9uYW1lLCBmb3JtYXRfc3BlYywgY29udmVyc2lvbikKQEAgLTEwMiw3ICsxMTksNyBAQAogICAgICAgICBmbXQgPSBCYXJGb3JtYXR0ZXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoJyp8KzA6XjEwc3wqJywgJ2ZvbycpLCAnKiAgIGZvbyAgICAqJykKIAotICAgICAgICAjIHRlc3QgYWxsIHBhcmFtZXRlcnMgdXNlZAorICAgIGRlZiB0ZXN0X2NoZWNrX3VudXNlZF9hcmdzKHNlbGYpOgogICAgICAgICBjbGFzcyBDaGVja0FsbFVzZWRGb3JtYXR0ZXIoc3RyaW5nLkZvcm1hdHRlcik6CiAgICAgICAgICAgICBkZWYgY2hlY2tfdW51c2VkX2FyZ3Moc2VsZiwgdXNlZF9hcmdzLCBhcmdzLCBrd2FyZ3MpOgogICAgICAgICAgICAgICAgICMgVHJhY2sgd2hpY2ggYXJndW1lbnRzIGFjdHVhbGx5IGdvdCB1c2VkCkBAIC0xMjQsMjggKzE0MSwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbXQuZm9ybWF0LCAiezB9IiwgMTAsIDIwLCBpPTEwMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm10LmZvcm1hdCwgIntpfSIsIDEwLCAyMCwgaT0xMDApCiAKLSAgICBkZWYgdGVzdF92Zm9ybWF0X2Fzc2VydChzZWxmKToKLSAgICAgICAgY2xzID0gc3RyaW5nLkZvcm1hdHRlcigpCi0gICAgICAgIGt3YXJncyA9IHsKLSAgICAgICAgICAgICJpIjogMTAwCi0gICAgICAgIH0KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY2xzLl92Zm9ybWF0LAotICAgICAgICAgICAgICAgIGNscy5mb3JtYXQsICJ7MH0iLCBrd2FyZ3MsIHNldCgpLCAtMikKLQotICAgIGRlZiB0ZXN0X2NvbnZlcnRfZmllbGQoc2VsZik6Ci0gICAgICAgIGNscyA9IHN0cmluZy5Gb3JtYXR0ZXIoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNscy5mb3JtYXQoInswIXN9IiwgJ2ZvbycpLCAnZm9vJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY2xzLmZvcm1hdCwgInswIWh9IiwgJ2ZvbycpCi0KLSAgICBkZWYgdGVzdF9nZXRfZmllbGQoc2VsZik6Ci0gICAgICAgIGNscyA9IHN0cmluZy5Gb3JtYXR0ZXIoKQotICAgICAgICBjbGFzcyBNeUNsYXNzOgotICAgICAgICAgICAgbmFtZSA9ICdsdW1iZXJqYWNrJwotICAgICAgICB4ID0gTXlDbGFzcygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xzLmZvcm1hdCgiezAubmFtZX0iLCB4KSwgJ2x1bWJlcmphY2snKQotCi0gICAgICAgIGxvb2t1cCA9IFsiZWdncyIsICJhbmQiLCAic3BhbSJdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xzLmZvcm1hdCgiezBbMl19IiwgbG9va3VwKSwgJ3NwYW0nKQorICAgIGRlZiB0ZXN0X3Zmb3JtYXRfcmVjdXJzaW9uX2xpbWl0KHNlbGYpOgorICAgICAgICBmbXQgPSBzdHJpbmcuRm9ybWF0dGVyKCkKKyAgICAgICAgYXJncyA9ICgpCisgICAgICAgIGt3YXJncyA9IGRpY3QoaT0xMDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgZXJyOgorICAgICAgICAgICAgZm10Ll92Zm9ybWF0KCJ7aX0iLCBhcmdzLCBrd2FyZ3MsIHNldCgpLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigicmVjdXJzaW9uIiwgc3RyKGVyci5leGNlcHRpb24pKQogCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKaW5kZXggYTRhZTE5OC4uZDAxMzIyZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKQEAgLTIsMTAgKzIsMTAgQEAKIAogVGhlcmUgYXJlIGZvdXIgdHlwZXMgb2Ygc3RyaW5nIGxpdGVyYWxzOgogCi0gICAgJ2FiYycgICAtLSBub3JtYWwgc3RyCi0gICAgcidhYmMnICAtLSByYXcgc3RyCi0gICAgYid4eXonICAtLSBub3JtYWwgYnl0ZXMKLSAgICBicid4eXonIC0tIHJhdyBieXRlcworICAgICdhYmMnICAgICAgICAgICAgIC0tIG5vcm1hbCBzdHIKKyAgICByJ2FiYycgICAgICAgICAgICAtLSByYXcgc3RyCisgICAgYid4eXonICAgICAgICAgICAgLS0gbm9ybWFsIGJ5dGVzCisgICAgYnIneHl6JyB8IHJiJ3h5eicgLS0gcmF3IGJ5dGVzCiAKIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gbm9ybWFsIGFuZCByYXcgc3RyaW5ncyBpcyBvZiBjb3Vyc2UgdGhhdCBpbiBhCiByYXcgc3RyaW5nLCBcIGVzY2FwZXMgKHdoaWxlIHN0aWxsIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBlbmQgb2YgdGhlCkBAIC0xMzMsMTggKzEzMywzOCBAQAogCiAgICAgZGVmIHRlc3RfZXZhbF9ieXRlc19yYXcoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgYnIneCcgIiIiKSwgYid4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiByYid4JyAiIiIpLCBiJ3gnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBicidceDAxJyAiIiIpLCBiJ1xcJyArIGIneDAxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgcmInXHgwMScgIiIiKSwgYidcXCcgKyBiJ3gwMScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgYnInXHgwMScgIiIiKSwgYnl0ZSgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiByYidceDAxJyAiIiIpLCBieXRlKDEpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBicidceDgxJyAiIiIpLCBiIlxcIiArIGIieDgxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgcmInXHg4MScgIiIiKSwgYiJcXCIgKyBiIng4MSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYnInXHg4MScgIiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIHJiJ1x4ODEnICIiIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYnInXHUxODgxJyAiIiIpLCBiIlxcIiArIGIidTE4ODEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiByYidcdTE4ODEnICIiIiksIGIiXFwiICsgYiJ1MTg4MSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYnInXHUxODgxJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgcmInXHUxODgxJyAiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIGJyJ1xVMDAwMWQxMjAnICIiIiksIGIiXFwiICsgYiJVMDAwMWQxMjAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiByYidcVTAwMDFkMTIwJyAiIiIpLCBiIlxcIiArIGIiVTAwMDFkMTIwIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBicidcVTAwMDFkMTIwJyAiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgcmInJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgcmInXFUwMDAxZDEyMCcgIiIiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGJiJycgIiIiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIHJyJycgIiIiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGJycicnICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBiYnInJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgcnJiJycgIiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIHJiYicnICIiIikKKworICAgIGRlZiB0ZXN0X2V2YWxfc3RyX3Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgdSd4JyAiIiIpLCAneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgVSdcdTAwZTQnICIiIiksICfDpCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgdSdcTntMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJU30nICIiIiksICfDpCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgdXInJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgcnUnJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYnUnJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgdWInJyAiIiIpCiAKICAgICBkZWYgY2hlY2tfZW5jb2Rpbmcoc2VsZiwgZW5jb2RpbmcsIGV4dHJhPSIiKToKICAgICAgICAgbW9kbmFtZSA9ICJ4eF8iICsgZW5jb2RpbmcucmVwbGFjZSgiLSIsICJfIikKQEAgLTE2Nyw3ICsxODcsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgc2VsZi5jaGVja19lbmNvZGluZywgInV0Zi04IiwgZXh0cmEpCiAKICAgICBkZWYgdGVzdF9maWxlX3V0Zjgoc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tfZW5jb2RpbmcoInV0ZjgiKQorICAgICAgICBzZWxmLmNoZWNrX2VuY29kaW5nKCJ1dGYtOCIpCiAKICAgICBkZWYgdGVzdF9maWxlX2lzb184ODU5XzEoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RpbmcoImlzby04ODU5LTEiKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJ1Y3QucHkgYi9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weQppbmRleCBkY2M3M2FiLi4yMjM3NGQyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weQpAQCAtOCw5ICs4LDE5IEBACiBJU0JJR0VORElBTiA9IHN5cy5ieXRlb3JkZXIgPT0gImJpZyIKIElTMzJCSVQgPSBzeXMubWF4c2l6ZSA9PSAweDdmZmZmZmZmCiAKLWludGVnZXJfY29kZXMgPSAnYicsICdCJywgJ2gnLCAnSCcsICdpJywgJ0knLCAnbCcsICdMJywgJ3EnLCAnUScKK2ludGVnZXJfY29kZXMgPSAnYicsICdCJywgJ2gnLCAnSCcsICdpJywgJ0knLCAnbCcsICdMJywgJ3EnLCAnUScsICduJywgJ04nCiBieXRlb3JkZXJzID0gJycsICdAJywgJz0nLCAnPCcsICc+JywgJyEnCiAKK2RlZiBpdGVyX2ludGVnZXJfZm9ybWF0cyhieXRlb3JkZXJzPWJ5dGVvcmRlcnMpOgorICAgIGZvciBjb2RlIGluIGludGVnZXJfY29kZXM6CisgICAgICAgIGZvciBieXRlb3JkZXIgaW4gYnl0ZW9yZGVyczoKKyAgICAgICAgICAgIGlmIChieXRlb3JkZXIgaW4gKCcnLCAnQCcpIGFuZCBjb2RlIGluICgncScsICdRJykgYW5kCisgICAgICAgICAgICAgICAgbm90IEhBVkVfTE9OR19MT05HKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgKGJ5dGVvcmRlciBub3QgaW4gKCcnLCAnQCcpIGFuZCBjb2RlIGluICgnbicsICdOJykpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICB5aWVsZCBjb2RlLCBieXRlb3JkZXIKKwogIyBOYXRpdmUgJ3EnIHBhY2tpbmcgaXNuJ3QgYXZhaWxhYmxlIG9uIHN5c3RlbXMgdGhhdCBkb24ndCBoYXZlIHRoZSBDCiAjIGxvbmcgbG9uZyB0eXBlLgogdHJ5OgpAQCAtMzAsNyArNDAsNiBAQAogICAgICAgICByZXR1cm4gc3RyaW5nX3JldmVyc2UodmFsdWUpCiAKIGNsYXNzIFN0cnVjdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCiAgICAgZGVmIHRlc3RfaXNiaWdlbmRpYW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKHN0cnVjdC5wYWNrKCc9aScsIDEpWzBdID09IDApLCBJU0JJR0VORElBTikKIApAQCAtMTQyLDE0ICsxNTEsMTMgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAjIHN0YW5kYXJkIGludGVnZXIgc2l6ZXMKLSAgICAgICAgZm9yIGNvZGUgaW4gaW50ZWdlcl9jb2RlczoKLSAgICAgICAgICAgIGZvciBieXRlb3JkZXIgaW4gJz0nLCAnPCcsICc+JywgJyEnOgotICAgICAgICAgICAgICAgIGZvcm1hdCA9IGJ5dGVvcmRlcitjb2RlCi0gICAgICAgICAgICAgICAgc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmb3JtYXQpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplLCBleHBlY3RlZF9zaXplW2NvZGVdKQorICAgICAgICBmb3IgY29kZSwgYnl0ZW9yZGVyIGluIGl0ZXJfaW50ZWdlcl9mb3JtYXRzKCgnPScsICc8JywgJz4nLCAnIScpKToKKyAgICAgICAgICAgIGZvcm1hdCA9IGJ5dGVvcmRlcitjb2RlCisgICAgICAgICAgICBzaXplID0gc3RydWN0LmNhbGNzaXplKGZvcm1hdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZSwgZXhwZWN0ZWRfc2l6ZVtjb2RlXSkKIAogICAgICAgICAjIG5hdGl2ZSBpbnRlZ2VyIHNpemVzCi0gICAgICAgIG5hdGl2ZV9wYWlycyA9ICdiQicsICdoSCcsICdpSScsICdsTCcKKyAgICAgICAgbmF0aXZlX3BhaXJzID0gJ2JCJywgJ2hIJywgJ2lJJywgJ2xMJywgJ25OJwogICAgICAgICBpZiBIQVZFX0xPTkdfTE9ORzoKICAgICAgICAgICAgIG5hdGl2ZV9wYWlycyArPSAncVEnLAogICAgICAgICBmb3IgZm9ybWF0X3BhaXIgaW4gbmF0aXZlX3BhaXJzOgpAQCAtMTY3LDkgKzE3NSwxMSBAQAogICAgICAgICBpZiBIQVZFX0xPTkdfTE9ORzoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKDgsIHN0cnVjdC5jYWxjc2l6ZSgncScpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoc3RydWN0LmNhbGNzaXplKCdsJyksIHN0cnVjdC5jYWxjc2l6ZSgncScpKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzdHJ1Y3QuY2FsY3NpemUoJ24nKSwgc3RydWN0LmNhbGNzaXplKCdpJykpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnbicpLCBzdHJ1Y3QuY2FsY3NpemUoJ1AnKSkKIAogICAgIGRlZiB0ZXN0X2ludGVnZXJzKHNlbGYpOgotICAgICAgICAjIEludGVnZXIgdGVzdHMgKGJCaEhpSWxMcVEpLgorICAgICAgICAjIEludGVnZXIgdGVzdHMgKGJCaEhpSWxMcVFuTikuCiAgICAgICAgIGltcG9ydCBiaW5hc2NpaQogCiAgICAgICAgIGNsYXNzIEludFRlc3Rlcih1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xODMsMTEgKzE5MywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYnl0ZW9yZGVyKQogICAgICAgICAgICAgICAgIHNlbGYuYnl0ZXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm9ybWF0KQogICAgICAgICAgICAgICAgIHNlbGYuYml0c2l6ZSA9IHNlbGYuYnl0ZXNpemUgKiA4Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5jb2RlIGluIHR1cGxlKCdiaGlscScpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuY29kZSBpbiB0dXBsZSgnYmhpbHFuJyk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2lnbmVkID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICBzZWxmLm1pbl92YWx1ZSA9IC0oMioqKHNlbGYuYml0c2l6ZS0xKSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXhfdmFsdWUgPSAyKiooc2VsZi5iaXRzaXplLTEpIC0gMQotICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5jb2RlIGluIHR1cGxlKCdCSElMUScpOgorICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5jb2RlIGluIHR1cGxlKCdCSElMUU4nKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zaWduZWQgPSBGYWxzZQogICAgICAgICAgICAgICAgICAgICBzZWxmLm1pbl92YWx1ZSA9IDAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXhfdmFsdWUgPSAyKipzZWxmLmJpdHNpemUgLSAxCkBAIC0zMTcsMTQgKzMyNywyMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QucGFjaywgc2VsZi5mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iaikKIAotICAgICAgICBmb3IgY29kZSBpbiBpbnRlZ2VyX2NvZGVzOgotICAgICAgICAgICAgZm9yIGJ5dGVvcmRlciBpbiBieXRlb3JkZXJzOgotICAgICAgICAgICAgICAgIGlmIChieXRlb3JkZXIgaW4gKCcnLCAnQCcpIGFuZCBjb2RlIGluICgncScsICdRJykgYW5kCi0gICAgICAgICAgICAgICAgICAgIG5vdCBIQVZFX0xPTkdfTE9ORyk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGZvciBjb2RlLCBieXRlb3JkZXIgaW4gaXRlcl9pbnRlZ2VyX2Zvcm1hdHMoKToKKyAgICAgICAgICAgIGZvcm1hdCA9IGJ5dGVvcmRlcitjb2RlCisgICAgICAgICAgICB0ID0gSW50VGVzdGVyKGZvcm1hdCkKKyAgICAgICAgICAgIHQucnVuKCkKKworICAgIGRlZiB0ZXN0X25OX2NvZGUoc2VsZik6CisgICAgICAgICMgbiBhbmQgTiBkb24ndCBleGlzdCBpbiBzdGFuZGFyZCBzaXplcworICAgICAgICBkZWYgYXNzZXJ0U3RydWN0RXJyb3IoZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImJhZCBjaGFyIGluIHN0cnVjdCBmb3JtYXQiLCBzdHIoY20uZXhjZXB0aW9uKSkKKyAgICAgICAgZm9yIGNvZGUgaW4gJ25OJzoKKyAgICAgICAgICAgIGZvciBieXRlb3JkZXIgaW4gKCc9JywgJzwnLCAnPicsICchJyk6CiAgICAgICAgICAgICAgICAgZm9ybWF0ID0gYnl0ZW9yZGVyK2NvZGUKLSAgICAgICAgICAgICAgICB0ID0gSW50VGVzdGVyKGZvcm1hdCkKLSAgICAgICAgICAgICAgICB0LnJ1bigpCisgICAgICAgICAgICAgICAgYXNzZXJ0U3RydWN0RXJyb3Ioc3RydWN0LmNhbGNzaXplLCBmb3JtYXQpCisgICAgICAgICAgICAgICAgYXNzZXJ0U3RydWN0RXJyb3Ioc3RydWN0LnBhY2ssIGZvcm1hdCwgMCkKKyAgICAgICAgICAgICAgICBhc3NlcnRTdHJ1Y3RFcnJvcihzdHJ1Y3QudW5wYWNrLCBmb3JtYXQsIGIiIikKIAogICAgIGRlZiB0ZXN0X3BfY29kZShzZWxmKToKICAgICAgICAgIyBUZXN0IHAgKCJQYXNjYWwgc3RyaW5nIikgY29kZS4KQEAgLTM3OCwxNCArMzk3LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHN0cnVjdC5wYWNrLCAiPmYiLCBiaWcpCiAKICAgICBkZWYgdGVzdF8xNTMwNTU5KHNlbGYpOgotICAgICAgICBmb3IgYnl0ZW9yZGVyIGluICcnLCAnQCcsICc9JywgJzwnLCAnPicsICchJzoKLSAgICAgICAgICAgIGZvciBjb2RlIGluIGludGVnZXJfY29kZXM6Ci0gICAgICAgICAgICAgICAgaWYgKGJ5dGVvcmRlciBpbiAoJycsICdAJykgYW5kIGNvZGUgaW4gKCdxJywgJ1EnKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgbm90IEhBVkVfTE9OR19MT05HKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBmb3JtYXQgPSBieXRlb3JkZXIgKyBjb2RlCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBzdHJ1Y3QucGFjaywgZm9ybWF0LCAxLjApCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBzdHJ1Y3QucGFjaywgZm9ybWF0LCAxLjUpCisgICAgICAgIGZvciBjb2RlLCBieXRlb3JkZXIgaW4gaXRlcl9pbnRlZ2VyX2Zvcm1hdHMoKToKKyAgICAgICAgICAgIGZvcm1hdCA9IGJ5dGVvcmRlciArIGNvZGUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN0cnVjdC5lcnJvciwgc3RydWN0LnBhY2ssIGZvcm1hdCwgMS4wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBzdHJ1Y3QucGFjaywgZm9ybWF0LCAxLjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN0cnVjdC5lcnJvciwgc3RydWN0LnBhY2ssICdQJywgMS4wKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIHN0cnVjdC5wYWNrLCAnUCcsIDEuNSkKIApAQCAtNTU5LDkgKzU3NCw5IEBACiAKICAgICBkZWYgY2hlY2tfc2l6ZW9mKHNlbGYsIGZvcm1hdF9zdHIsIG51bWJlcl9vZl9jb2Rlcyk6CiAgICAgICAgICMgVGhlIHNpemUgb2YgJ1B5U3RydWN0T2JqZWN0JwotICAgICAgICB0b3RhbHNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCc1UCcpCisgICAgICAgIHRvdGFsc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUoJzJuM1AnKQogICAgICAgICAjIFRoZSBzaXplIHRha2VuIHVwIGJ5IHRoZSAnZm9ybWF0Y29kZScgZHluYW1pYyBhcnJheQotICAgICAgICB0b3RhbHNpemUgKz0gc3RydWN0LmNhbGNzaXplKCczUCcpICogKG51bWJlcl9vZl9jb2RlcyArIDEpCisgICAgICAgIHRvdGFsc2l6ZSArPSBzdHJ1Y3QuY2FsY3NpemUoJ1AybjBQJykgKiAobnVtYmVyX29mX2NvZGVzICsgMSkKICAgICAgICAgc3VwcG9ydC5jaGVja19zaXplb2Yoc2VsZiwgc3RydWN0LlN0cnVjdChmb3JtYXRfc3RyKSwgdG90YWxzaXplKQogCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cnVjdHNlcS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0c2VxLnB5CmluZGV4IGQ2YzYzYjcuLmE4OWU5NTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0c2VxLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0c2VxLnB5CkBAIC03OCw4ICs3OCw5IEBACiAKICAgICBkZWYgdGVzdF9maWVsZHMoc2VsZik6CiAgICAgICAgIHQgPSB0aW1lLmdtdGltZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHQpLCB0Lm5fZmllbGRzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQubl9maWVsZHMsIHQubl9zZXF1ZW5jZV9maWVsZHMrdC5uX3VubmFtZWRfZmllbGRzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0KSwgdC5uX3NlcXVlbmNlX2ZpZWxkcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lm5fdW5uYW1lZF9maWVsZHMsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5uX2ZpZWxkcywgdGltZS5fU1RSVUNUX1RNX0lURU1TKQogCiAgICAgZGVmIHRlc3RfY29uc3RydWN0b3Ioc2VsZik6CiAgICAgICAgIHQgPSB0aW1lLnN0cnVjdF90aW1lCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkgYi9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkKaW5kZXggYjFlOTAyNy4uZThlNzRlZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weQpAQCAtMTYsNiArMTYsNyBAQAogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNodXRpbAogaW1wb3J0IGdjCitpbXBvcnQgdGV4dHdyYXAKIAogdHJ5OgogICAgIGltcG9ydCByZXNvdXJjZQpAQCAtNjIsNiArNjMsOCBAQAogICAgICAgICAjIHNodXRkb3duIHRpbWUuICBUaGF0IGZydXN0cmF0ZXMgdGVzdHMgdHJ5aW5nIHRvIGNoZWNrIHN0ZGVyciBwcm9kdWNlZAogICAgICAgICAjIGZyb20gYSBzcGF3bmVkIFB5dGhvbiBwcm9jZXNzLgogICAgICAgICBhY3R1YWwgPSBzdXBwb3J0LnN0cmlwX3B5dGhvbl9zdGRlcnIoc3RkZXJyKQorICAgICAgICAjIHN0cmlwX3B5dGhvbl9zdGRlcnIgYWxzbyBzdHJpcHMgd2hpdGVzcGFjZSwgc28gd2UgZG8gdG9vLgorICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGVkLnN0cmlwKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtc2cpCiAKIApAQCAtODUsNiArODgsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgc3lzOyBzeXMuZXhpdCg0NykiXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgNDcpCiAKKyAgICBkZWYgdGVzdF9jYWxsX3RpbWVvdXQoc2VsZik6CisgICAgICAgICMgY2FsbCgpIGZ1bmN0aW9uIHdpdGggdGltZW91dCBhcmd1bWVudDsgd2Ugd2FudCB0byB0ZXN0IHRoYXQgdGhlIGNoaWxkCisgICAgICAgICMgcHJvY2VzcyBnZXRzIGtpbGxlZCB3aGVuIHRoZSB0aW1lb3V0IGV4cGlyZXMuICBJZiB0aGUgY2hpbGQgaXNuJ3QKKyAgICAgICAgIyBraWxsZWQsIHRoaXMgY2FsbCB3aWxsIGRlYWRsb2NrIHNpbmNlIHN1YnByb2Nlc3MuY2FsbCB3YWl0cyBmb3IgdGhlCisgICAgICAgICMgY2hpbGQuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQsIHN1YnByb2Nlc3MuY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW3N5cy5leGVjdXRhYmxlLCAiLWMiLCAid2hpbGUgVHJ1ZTogcGFzcyJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTAuMSkKKwogICAgIGRlZiB0ZXN0X2NoZWNrX2NhbGxfemVybyhzZWxmKToKICAgICAgICAgIyBjaGVja19jYWxsKCkgZnVuY3Rpb24gd2l0aCB6ZXJvIHJldHVybiBjb2RlCiAgICAgICAgIHJjID0gc3VicHJvY2Vzcy5jaGVja19jYWxsKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKQEAgLTEyNyw2ICsxMzksMjEgQEAKICAgICAgICAgICAgIHNlbGYuZmFpbCgiRXhwZWN0ZWQgVmFsdWVFcnJvciB3aGVuIHN0ZG91dCBhcmcgc3VwcGxpZWQuIikKICAgICAgICAgc2VsZi5hc3NlcnRJbignc3Rkb3V0JywgYy5leGNlcHRpb24uYXJnc1swXSkKIAorICAgIGRlZiB0ZXN0X2NoZWNrX291dHB1dF90aW1lb3V0KHNlbGYpOgorICAgICAgICAjIGNoZWNrX291dHB1dCgpIGZ1bmN0aW9uIHdpdGggdGltZW91dCBhcmcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkKSBhcyBjOgorICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoCisgICAgICAgICAgICAgICAgICAgIFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKKyAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgc3lzLCB0aW1lXG4iCisgICAgICAgICAgICAgICAgICAgICAic3lzLnN0ZG91dC53cml0ZSgnQkRGTCcpXG4iCisgICAgICAgICAgICAgICAgICAgICAic3lzLnN0ZG91dC5mbHVzaCgpXG4iCisgICAgICAgICAgICAgICAgICAgICAidGltZS5zbGVlcCgzNjAwKSJdLAorICAgICAgICAgICAgICAgICAgICAjIFNvbWUgaGVhdmlseSBsb2FkZWQgYnVpbGRib3RzIChzcGFyYyBEZWJpYW4gMy54KSByZXF1aXJlCisgICAgICAgICAgICAgICAgICAgICMgdGhpcyBtdWNoIHRpbWUgdG8gc3RhcnQgYW5kIHByaW50LgorICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTMpCisgICAgICAgICAgICBzZWxmLmZhaWwoIkV4cGVjdGVkIFRpbWVvdXRFeHBpcmVkLiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5leGNlcHRpb24ub3V0cHV0LCBiJ0JERkwnKQorCiAgICAgZGVmIHRlc3RfY2FsbF9rd2FyZ3Moc2VsZik6CiAgICAgICAgICMgY2FsbCgpIGZ1bmN0aW9uIHdpdGgga2V5d29yZCBhcmdzCiAgICAgICAgIG5ld2VudiA9IG9zLmVudmlyb24uY29weSgpCkBAIC0xODgsNiArMjE1LDQwIEBACiAgICAgICAgIHAud2FpdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRlcnIsIE5vbmUpCiAKKyAgICBkZWYgX2Fzc2VydF9weXRob24oc2VsZiwgcHJlX2FyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIyBXZSBpbmNsdWRlIHN5cy5leGl0KCkgdG8gcHJldmVudCB0aGUgdGVzdCBydW5uZXIgZnJvbSBoYW5naW5nCisgICAgICAgICMgd2hlbmV2ZXIgcHl0aG9uIGlzIGZvdW5kLgorICAgICAgICBhcmdzID0gcHJlX2FyZ3MgKyBbImltcG9ydCBzeXM7IHN5cy5leGl0KDQ3KSJdCisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsICoqa3dhcmdzKQorICAgICAgICBwLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQ3LCBwLnJldHVybmNvZGUpCisKKyAgICBkZWYgdGVzdF9leGVjdXRhYmxlKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGV4ZWN1dGFibGUgYXJndW1lbnQgd29ya3MuCisgICAgICAgICMKKyAgICAgICAgIyBPbiBVbml4IChub24tTWFjIGFuZCBub24tV2luZG93cyksIFB5dGhvbiBsb29rcyBhdCBhcmdzWzBdIHRvCisgICAgICAgICMgZGV0ZXJtaW5lIHdoZXJlIGl0cyBzdGFuZGFyZCBsaWJyYXJ5IGlzLCBzbyB3ZSBuZWVkIHRoZSBkaXJlY3RvcnkKKyAgICAgICAgIyBvZiBhcmdzWzBdIHRvIGJlIHZhbGlkIGZvciB0aGUgUG9wZW4oKSBjYWxsIHRvIFB5dGhvbiB0byBzdWNjZWVkLgorICAgICAgICAjIFNlZSBhbHNvIGlzc3VlICMxNjE3MCBhbmQgaXNzdWUgIzc3NzQuCisgICAgICAgIGRvZXNub3RleGlzdCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvZXNub3RleGlzdCIpCisgICAgICAgIHNlbGYuX2Fzc2VydF9weXRob24oW2RvZXNub3RleGlzdCwgIi1jIl0sIGV4ZWN1dGFibGU9c3lzLmV4ZWN1dGFibGUpCisKKyAgICBkZWYgdGVzdF9leGVjdXRhYmxlX3Rha2VzX3ByZWNlZGVuY2Uoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgZXhlY3V0YWJsZSBhcmd1bWVudCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgYXJnc1swXS4KKyAgICAgICAgIworICAgICAgICAjIFZlcmlmeSBmaXJzdCB0aGF0IHRoZSBjYWxsIHN1Y2NlZWRzIHdpdGhvdXQgdGhlIGV4ZWN1dGFibGUgYXJnLgorICAgICAgICBwcmVfYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgIi1jIl0KKyAgICAgICAgc2VsZi5fYXNzZXJ0X3B5dGhvbihwcmVfYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHNlbGYuX2Fzc2VydF9weXRob24sIHByZV9hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlPSJkb2Vzbm90ZXhpc3QiKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihtc3dpbmRvd3MsICJleGVjdXRhYmxlIGFyZ3VtZW50IHJlcGxhY2VzIHNoZWxsIikKKyAgICBkZWYgdGVzdF9leGVjdXRhYmxlX3JlcGxhY2VzX3NoZWxsKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGV4ZWN1dGFibGUgYXJndW1lbnQgcmVwbGFjZXMgdGhlIGRlZmF1bHQgc2hlbGwKKyAgICAgICAgIyB3aGVuIHNoZWxsPVRydWUuCisgICAgICAgIHNlbGYuX2Fzc2VydF9weXRob24oW10sIGV4ZWN1dGFibGU9c3lzLmV4ZWN1dGFibGUsIHNoZWxsPVRydWUpCisKICAgICAjIEZvciB1c2UgaW4gdGhlIHRlc3RfY3dkKiB0ZXN0cyBiZWxvdy4KICAgICBkZWYgX25vcm1hbGl6ZV9jd2Qoc2VsZiwgY3dkKToKICAgICAgICAgIyBOb3JtYWxpemUgYW4gZXhwZWN0ZWQgY3dkIChmb3IgVHJ1NjQgc3VwcG9ydCkuCkBAIC0yMzgsOSArMjk5LDkgQEAKICAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKCkgYXMgd3JvbmdfZGlyOgogICAgICAgICAgICAgIyBCZWZvcmUgY2FsbGluZyB3aXRoIHRoZSBjb3JyZWN0IGN3ZCwgY29uZmlybSB0aGF0IHRoZSBjYWxsIGZhaWxzCiAgICAgICAgICAgICAjIHdpdGhvdXQgY3dkIGFuZCB3aXRoIHRoZSB3cm9uZyBjd2QuCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzdWJwcm9jZXNzLlBvcGVuLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVsX3B5dGhvbl0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzdWJwcm9jZXNzLlBvcGVuLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVsX3B5dGhvbl0sIGN3ZD13cm9uZ19kaXIpCiAgICAgICAgICAgICBweXRob25fZGlyID0gc2VsZi5fbm9ybWFsaXplX2N3ZChweXRob25fZGlyKQogICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2N3ZChweXRob25fZGlyLCByZWxfcHl0aG9uLCBjd2Q9cHl0aG9uX2RpcikKQEAgLTI1NSw5ICszMTYsOSBAQAogICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QoKSBhcyB3cm9uZ19kaXI6CiAgICAgICAgICAgICAjIEJlZm9yZSBjYWxsaW5nIHdpdGggdGhlIGNvcnJlY3QgY3dkLCBjb25maXJtIHRoYXQgdGhlIGNhbGwgZmFpbHMKICAgICAgICAgICAgICMgd2l0aG91dCBjd2QgYW5kIHdpdGggdGhlIHdyb25nIGN3ZC4KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgc3VicHJvY2Vzcy5Qb3BlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkb2VzbnRleGlzdF0sIGV4ZWN1dGFibGU9cmVsX3B5dGhvbikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgc3VicHJvY2Vzcy5Qb3BlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkb2VzbnRleGlzdF0sIGV4ZWN1dGFibGU9cmVsX3B5dGhvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD13cm9uZ19kaXIpCiAgICAgICAgICAgICBweXRob25fZGlyID0gc2VsZi5fbm9ybWFsaXplX2N3ZChweXRob25fZGlyKQpAQCAtMjczLDE3ICszMzQsMjEgQEAKICAgICAgICAgd2l0aCBzY3JpcHRfaGVscGVyLnRlbXBfZGlyKCkgYXMgd3JvbmdfZGlyOgogICAgICAgICAgICAgIyBCZWZvcmUgY2FsbGluZyB3aXRoIGFuIGFic29sdXRlIHBhdGgsIGNvbmZpcm0gdGhhdCB1c2luZyBhCiAgICAgICAgICAgICAjIHJlbGF0aXZlIHBhdGggZmFpbHMuCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzdWJwcm9jZXNzLlBvcGVuLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVsX3B5dGhvbl0sIGN3ZD13cm9uZ19kaXIpCiAgICAgICAgICAgICB3cm9uZ19kaXIgPSBzZWxmLl9ub3JtYWxpemVfY3dkKHdyb25nX2RpcikKICAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9jd2Qod3JvbmdfZGlyLCBhYnNfcHl0aG9uLCBjd2Q9d3JvbmdfZGlyKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuYmFzZV9wcmVmaXggIT0gc3lzLnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICdUZXN0IGlzIG5vdCB2ZW52LWNvbXBhdGlibGUnKQogICAgIGRlZiB0ZXN0X2V4ZWN1dGFibGVfd2l0aF9jd2Qoc2VsZik6CiAgICAgICAgIHB5dGhvbl9kaXIsIHB5dGhvbl9iYXNlID0gc2VsZi5fc3BsaXRfcHl0aG9uX3BhdGgoKQogICAgICAgICBweXRob25fZGlyID0gc2VsZi5fbm9ybWFsaXplX2N3ZChweXRob25fZGlyKQogICAgICAgICBzZWxmLl9hc3NlcnRfY3dkKHB5dGhvbl9kaXIsICJzb21ldGhpbmd5b3Vkb250aGF2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZT1zeXMuZXhlY3V0YWJsZSwgY3dkPXB5dGhvbl9kaXIpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5iYXNlX3ByZWZpeCAhPSBzeXMucHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgaXMgbm90IHZlbnYtY29tcGF0aWJsZScpCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCksCiAgICAgICAgICAgICAgICAgICAgICAibmVlZCBhbiBpbnN0YWxsZWQgUHl0aG9uLiBTZWUgIzc3NzQiKQogICAgIGRlZiB0ZXN0X2V4ZWN1dGFibGVfd2l0aG91dF9jd2Qoc2VsZik6CkBAIC00MzQsNiArNDk5LDMxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZXR1cm5jb2RlLCAwLCBlcnIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LnJzdHJpcCgpLCBiJ3Rlc3Qgd2l0aCBzdGRvdXQ9MScpCiAKKyAgICBkZWYgdGVzdF9zdGRvdXRfZGV2bnVsbChzZWxmKToKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvciBpIGluIHJhbmdlKDEwMjQwKTonCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnQoIngiICogMTAyNCknXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwpCisgICAgICAgIHAud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9zdGRlcnJfZGV2bnVsbChzZWxmKToKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3IgaSBpbiByYW5nZSgxMDI0MCk6JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5zdGRlcnIud3JpdGUoIngiICogMTAyNCknXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwpCisgICAgICAgIHAud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRlcnIsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9zdGRpbl9kZXZudWxsKHNlbGYpOgorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5czsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZGluLnJlYWQoMSknXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuREVWTlVMTCkKKyAgICAgICAgcC53YWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZGluLCBOb25lKQorCiAgICAgZGVmIHRlc3RfZW52KHNlbGYpOgogICAgICAgICBuZXdlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQogICAgICAgICBuZXdlbnZbIkZSVUlUIl0gPSAib3JhbmdlIgpAQCAtNTA0LDYgKzU5NCw0MSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgYiJiYW5hbmEiKQogICAgICAgICBzZWxmLmFzc2VydFN0ZGVyckVxdWFsKHN0ZGVyciwgYiJwaW5lYXBwbGUiKQogCisgICAgZGVmIHRlc3RfY29tbXVuaWNhdGVfdGltZW91dChzZWxmKToKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXMsb3MsdGltZTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZGVyci53cml0ZSgicGluZWFwcGxlXFxuIik7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbWUuc2xlZXAoMSk7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5zdGRlcnIud3JpdGUoInBlYXJcXG4iKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZShzeXMuc3RkaW4ucmVhZCgpKSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkLCBwLmNvbW11bmljYXRlLCAiYmFuYW5hIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0wLjMpCisgICAgICAgICMgTWFrZSBzdXJlIHdlIGNhbiBrZWVwIHdhaXRpbmcgZm9yIGl0LCBhbmQgdGhhdCB3ZSBnZXQgdGhlIHdob2xlIG91dHB1dAorICAgICAgICAjIGFmdGVyIGl0IGNvbXBsZXRlcy4KKyAgICAgICAgKHN0ZG91dCwgc3RkZXJyKSA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgImJhbmFuYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwoc3RkZXJyLmVuY29kZSgpLCBiInBpbmVhcHBsZVxucGVhclxuIikKKworICAgIGRlZiB0ZXN0X2NvbW11bmljYXRlX3RpbWVvdXRfbGFyZ2Vfb3VwdXQoc2VsZik6CisgICAgICAgICMgVGVzdCBhbiBleHBpcmluZyB0aW1lb3V0IHdoaWxlIHRoZSBjaGlsZCBpcyBvdXRwdXR0aW5nIGxvdHMgb2YgZGF0YS4KKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXMsb3MsdGltZTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZSgiYSIgKiAoNjQgKiAxMDI0KSk7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbWUuc2xlZXAoMC4yKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZSgiYSIgKiAoNjQgKiAxMDI0KSk7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbWUuc2xlZXAoMC4yKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZSgiYSIgKiAoNjQgKiAxMDI0KSk7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbWUuc2xlZXAoMC4yKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZSgiYSIgKiAoNjQgKiAxMDI0KSk7J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQsIHAuY29tbXVuaWNhdGUsIHRpbWVvdXQ9MC40KQorICAgICAgICAoc3Rkb3V0LCBfKSA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzdGRvdXQpLCA0ICogNjQgKiAxMDI0KQorCiAgICAgIyBUZXN0IGZvciB0aGUgZmQgbGVhayByZXBvcnRlZCBpbiBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjc5MS4KICAgICBkZWYgdGVzdF9jb21tdW5pY2F0ZV9waXBlX2ZkX2xlYWsoc2VsZik6CiAgICAgICAgIGZvciBzdGRpbl9waXBlIGluIChGYWxzZSwgVHJ1ZSk6CkBAIC01NDAsMjQgKzY2NSwyMSBAQAogICAgICAgICAjIFRoaXMgdGVzdCB3aWxsIHByb2JhYmx5IGRlYWRsb2NrIHJhdGhlciB0aGFuIGZhaWwsIGlmCiAgICAgICAgICMgY29tbXVuaWNhdGUoKSBkb2VzIG5vdCB3b3JrIHByb3Blcmx5LgogICAgICAgICB4LCB5ID0gb3MucGlwZSgpCi0gICAgICAgIGlmIG1zd2luZG93czoKLSAgICAgICAgICAgIHBpcGVfYnVmID0gNTEyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwaXBlX2J1ZiA9IG9zLmZwYXRoY29uZih4LCAiUENfUElQRV9CVUYiKQogICAgICAgICBvcy5jbG9zZSh4KQogICAgICAgICBvcy5jbG9zZSh5KQogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvczsnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZShzeXMuc3RkaW4ucmVhZCg0NykpOycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3RkZXJyLndyaXRlKCJ4eXoiKiVkKTsnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZShzeXMuc3RkaW4ucmVhZCgpKScgJSBwaXBlX2J1Zl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZGVyci53cml0ZSgieCIgKiAlZCk7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5zdGRvdXQud3JpdGUoc3lzLnN0ZGluLnJlYWQoKSknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQuUElQRV9NQVhfU0laRV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQogICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRlcnIuY2xvc2UpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGluLmNsb3NlKQotICAgICAgICBzdHJpbmdfdG9fd3JpdGUgPSBiImFiYyIqcGlwZV9idWYKKyAgICAgICAgc3RyaW5nX3RvX3dyaXRlID0gYiJhIiAqIHN1cHBvcnQuUElQRV9NQVhfU0laRQogICAgICAgICAoc3Rkb3V0LCBzdGRlcnIpID0gcC5jb21tdW5pY2F0ZShzdHJpbmdfdG9fd3JpdGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCBzdHJpbmdfdG9fd3JpdGUpCiAKQEAgLTYzOSwxMiArNzYxLDEyIEBACiAgICAgZGVmIHRlc3RfdW5pdmVyc2FsX25ld2xpbmVzX2NvbW11bmljYXRlX3N0ZGluKHNlbGYpOgogICAgICAgICAjIHVuaXZlcnNhbCBuZXdsaW5lcyB0aHJvdWdoIGNvbW11bmljYXRlKCksIHdpdGggb25seSBzdGRpbgogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvczsnICsgU0VUQklOQVJZICsgJycnXG5pZiBUcnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBzID09ICJsaW5lMVxcbiIsIHJlcHIocykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gc3lzLnN0ZGluLnJlYWQoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBzID09ICJsaW5lM1xcbiIsIHJlcHIocykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvczsnICsgU0VUQklOQVJZICsgdGV4dHdyYXAuZGVkZW50KCcnJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBzID09ICJsaW5lMVxcbiIsIHJlcHIocykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gc3lzLnN0ZGluLnJlYWQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBzID09ICJsaW5lM1xcbiIsIHJlcHIocykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnJyldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz0xKQogICAgICAgICAoc3Rkb3V0LCBzdGRlcnIpID0gcC5jb21tdW5pY2F0ZSgibGluZTFcbmxpbmUzXG4iKQpAQCAtNjY1LDE4ICs3ODcsMTggQEAKICAgICBkZWYgdGVzdF91bml2ZXJzYWxfbmV3bGluZXNfY29tbXVuaWNhdGVfc3RkaW5fc3Rkb3V0X3N0ZGVycihzZWxmKToKICAgICAgICAgIyB1bml2ZXJzYWwgbmV3bGluZXMgdGhyb3VnaCBjb21tdW5pY2F0ZSgpLCB3aXRoIHN0ZGluLCBzdGRvdXQsIHN0ZGVycgogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvczsnICsgU0VUQklOQVJZICsgJycnXG5pZiBUcnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzeXMuc3RkaW4uYnVmZmVyLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKGIibGluZTJcXHIiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuYnVmZmVyLndyaXRlKGIiZWxpbmUyXFxuIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gc3lzLnN0ZGluLmJ1ZmZlci5yZWFkKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKGIibGluZTRcXG4iKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKGIibGluZTVcXHJcXG4iKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuYnVmZmVyLndyaXRlKGIiZWxpbmU2XFxyIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLmJ1ZmZlci53cml0ZShiImVsaW5lN1xcclxcbnoiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzLG9zOycgKyBTRVRCSU5BUlkgKyB0ZXh0d3JhcC5kZWRlbnQoJycnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHN5cy5zdGRpbi5idWZmZXIucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5idWZmZXIud3JpdGUoYiJsaW5lMlxcciIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci5idWZmZXIud3JpdGUoYiJlbGluZTJcXG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzeXMuc3RkaW4uYnVmZmVyLnJlYWQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5idWZmZXIud3JpdGUoYiJsaW5lNFxcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5idWZmZXIud3JpdGUoYiJsaW5lNVxcclxcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci5idWZmZXIud3JpdGUoYiJlbGluZTZcXHIiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuYnVmZmVyLndyaXRlKGIiZWxpbmU3XFxyXFxueiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJycpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLApAQCAtNzIwLDcgKzg0Miw2IEBACiAgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZShpbnB1dD0nJykKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nID0gb2xkX2dldHByZWZlcnJlZGVuY29kaW5nCi0KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCAnMVxuMlxuM1xuNCcpCiAKICAgICBkZWYgdGVzdF9ub19sZWFraW5nKHNlbGYpOgpAQCAtNzgwLDMwICs5MDEsMzIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWJwcm9jZXNzLmxpc3QyY21kbGluZShbJ2FiJywgJyddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnYWIgIiInKQogCi0KICAgICBkZWYgdGVzdF9wb2xsKHNlbGYpOgotICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICItYyIsICJpbXBvcnQgdGltZTsgdGltZS5zbGVlcCgxKSJdKQotICAgICAgICBjb3VudCA9IDAKLSAgICAgICAgd2hpbGUgcC5wb2xsKCkgaXMgTm9uZToKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4xKQotICAgICAgICAgICAgY291bnQgKz0gMQotICAgICAgICAjIFdlIGV4cGVjdCB0aGF0IHRoZSBwb2xsIGxvb3AgcHJvYmFibHkgd2VudCBhcm91bmQgYWJvdXQgMTAgdGltZXMsCi0gICAgICAgICMgYnV0LCBiYXNlZCBvbiBzeXN0ZW0gc2NoZWR1bGluZyB3ZSBjYW4ndCBjb250cm9sLCBpdCdzIHBvc3NpYmxlCi0gICAgICAgICMgcG9sbCgpIG5ldmVyIHJldHVybmVkIE5vbmUuICBJdCAic2hvdWxkIGJlIiB2ZXJ5IHJhcmUgdGhhdCBpdAotICAgICAgICAjIGRpZG4ndCBnbyBhcm91bmQgYXQgbGVhc3QgdHdpY2UuCi0gICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGNvdW50LCAyKQorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IG9zOyBvcy5yZWFkKDAsIDEpIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkaW4uY2xvc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHAucG9sbCgpKQorICAgICAgICBvcy53cml0ZShwLnN0ZGluLmZpbGVubygpLCBiJ0EnKQorICAgICAgICBwLndhaXQoKQogICAgICAgICAjIFN1YnNlcXVlbnQgaW52b2NhdGlvbnMgc2hvdWxkIGp1c3QgcmV0dXJuIHRoZSByZXR1cm5jb2RlCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5wb2xsKCksIDApCiAKLQogICAgIGRlZiB0ZXN0X3dhaXQoc2VsZik6Ci0gICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jIiwgImltcG9ydCB0aW1lOyB0aW1lLnNsZWVwKDIpIl0pCisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwgInBhc3MiXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLndhaXQoKSwgMCkKICAgICAgICAgIyBTdWJzZXF1ZW50IGludm9jYXRpb25zIHNob3VsZCBqdXN0IHJldHVybiB0aGUgcmV0dXJuY29kZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAud2FpdCgpLCAwKQogCisgICAgZGVmIHRlc3Rfd2FpdF90aW1lb3V0KHNlbGYpOgorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWMiLCAiaW1wb3J0IHRpbWU7IHRpbWUuc2xlZXAoMC4xKSJdKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQpIGFzIGM6CisgICAgICAgICAgICBwLndhaXQodGltZW91dD0wLjAxKQorICAgICAgICBzZWxmLmFzc2VydEluKCIwLjAxIiwgc3RyKGMuZXhjZXB0aW9uKSkgICMgRm9yIGNvdmVyYWdlIG9mIF9fc3RyX18uCisgICAgICAgICMgU29tZSBoZWF2aWx5IGxvYWRlZCBidWlsZGJvdHMgKHNwYXJjIERlYmlhbiAzLngpIHJlcXVpcmUgdGhpcyBtdWNoCisgICAgICAgICMgdGltZSB0byBzdGFydC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLndhaXQodGltZW91dD0zKSwgMCkKIAogICAgIGRlZiB0ZXN0X2ludmFsaWRfYnVmc2l6ZShzZWxmKToKICAgICAgICAgIyBhbiBpbnZhbGlkIHR5cGUgb2YgdGhlIGJ1ZnNpemUgYXJndW1lbnQgc2hvdWxkIHJhaXNlCkBAIC04ODIsMjUgKzEwMDUsMjkgQEAKICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLCAncGFzcyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGluLmNsb3NlKQotICAgICAgICB0aW1lLnNsZWVwKDIpCisgICAgICAgIHAud2FpdCgpCiAgICAgICAgIHAuY29tbXVuaWNhdGUoYiJ4IiAqIDIqKjIwKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdTSUdBTFJNJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVpcmVzIHNpZ25hbC5TSUdBTFJNIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ1NJR1VTUjEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiUmVxdWlyZXMgc2lnbmFsLlNJR1VTUjEiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdraWxsJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVpcmVzIG9zLmtpbGwiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRwcGlkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVpcmVzIG9zLmdldHBwaWQiKQogICAgIGRlZiB0ZXN0X2NvbW11bmljYXRlX2VpbnRyKHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMjQ5MzogY29tbXVuaWNhdGUoKSBzaG91bGQgaGFuZGxlIEVJTlRSCiAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgogICAgICAgICAgICAgcGFzcwotICAgICAgICBvbGRfaGFuZGxlciA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGhhbmRsZXIpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaWduYWwuc2lnbmFsLCBzaWduYWwuU0lHQUxSTSwgb2xkX2hhbmRsZXIpCisgICAgICAgIG9sZF9oYW5kbGVyID0gc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMSwgaGFuZGxlcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNpZ25hbC5zaWduYWwsIHNpZ25hbC5TSUdVU1IxLCBvbGRfaGFuZGxlcikKIAotICAgICAgICAjIHRoZSBwcm9jZXNzIGlzIHJ1bm5pbmcgZm9yIDIgc2Vjb25kcwotICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAiLWMiLCAnaW1wb3J0IHRpbWU7IHRpbWUuc2xlZXAoMiknXQorICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICdpbXBvcnQgb3MsIHNpZ25hbDsnCisgICAgICAgICAgICAgICAgJ29zLmtpbGwob3MuZ2V0cHBpZCgpLCBzaWduYWwuU0lHVVNSMSknXQogICAgICAgICBmb3Igc3RyZWFtIGluICgnc3Rkb3V0JywgJ3N0ZGVycicpOgogICAgICAgICAgICAga3cgPSB7c3RyZWFtOiBzdWJwcm9jZXNzLlBJUEV9CiAgICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4oYXJncywgKiprdykgYXMgcHJvY2VzczoKLSAgICAgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKLSAgICAgICAgICAgICAgICAjIGNvbW11bmljYXRlKCkgd2lsbCBiZSBpbnRlcnJ1cHRlZCBieSBTSUdBTFJNCisgICAgICAgICAgICAgICAgIyBjb21tdW5pY2F0ZSgpIHdpbGwgYmUgaW50ZXJydXB0ZWQgYnkgU0lHVVNSMQogICAgICAgICAgICAgICAgIHByb2Nlc3MuY29tbXVuaWNhdGUoKQogCiAKQEAgLTE1MjQsNiArMTY1MSwxMSBAQAogICAgICAgICBleGl0Y29kZSA9IHN1YnByb2Nlc3MuY2FsbChbYWJzX3Byb2dyYW0sICItYyIsICJwYXNzIl0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCiAKKyAgICAgICAgIyBhYnNvbHV0ZSBieXRlcyBwYXRoIGFzIGEgc3RyaW5nCisgICAgICAgIGNtZCA9IGIiJyIgKyBhYnNfcHJvZ3JhbSArIGIiJyAtYyBwYXNzIgorICAgICAgICBleGl0Y29kZSA9IHN1YnByb2Nlc3MuY2FsbChjbWQsIHNoZWxsPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCisKICAgICAgICAgIyBieXRlcyBwcm9ncmFtLCB1bmljb2RlIFBBVEgKICAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKICAgICAgICAgZW52WyJQQVRIIl0gPSBwYXRoCkBAIC0xNzA3LDcgKzE4MzksNyBAQAogICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHAuY29tbXVuaWNhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHAucmV0dXJuY29kZSwgInNpZ2NoaWxkX2lnbm9yZS5weSBleGl0ZWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiBub24temVybyB3aXRoIHRoaXMgZXJyb3I6XG4lcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVyci5kZWNvZGUoJ3V0ZjgnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnIuZGVjb2RlKCd1dGYtOCcpKQogCiAgICAgZGVmIHRlc3Rfc2VsZWN0X3VuYnVmZmVyZWQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzExNDU5OiBidWZzaXplPTAgc2hvdWxkIHJlYWxseSBzZXQgdGhlIHBpcGVzIGFzCkBAIC0xOTU0LDI4ICsyMDg2LDYgQEAKICAgICAgICAgUHJvY2Vzc1Rlc3RDYXNlLnRlYXJEb3duKHNlbGYpCiAKIAotQHVuaXR0ZXN0LnNraXBVbmxlc3MoZ2V0YXR0cihzdWJwcm9jZXNzLCAnX3Bvc2l4c3VicHJvY2VzcycsIEZhbHNlKSwKLSAgICAgICAgICAgICAgICAgICAgICJfcG9zaXhzdWJwcm9jZXNzIGV4dGVuc2lvbiBtb2R1bGUgbm90IGZvdW5kLiIpCi1jbGFzcyBQcm9jZXNzVGVzdENhc2VQT1NJWFB1cmVQeXRob24oUHJvY2Vzc1Rlc3RDYXNlLCBQT1NJWFByb2Nlc3NUZXN0Q2FzZSk6Ci0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgZ2xvYmFsIHN1YnByb2Nlc3MKLSAgICAgICAgYXNzZXJ0IHN1YnByb2Nlc3MuX3Bvc2l4c3VicHJvY2VzcwotICAgICAgICAjIFJlaW1wb3J0IHN1YnByb2Nlc3Mgd2hpbGUgZm9yY2luZyBfcG9zaXhzdWJwcm9jZXNzIHRvIG5vdCBleGlzdC4KLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnLipfcG9zaXhzdWJwcm9jZXNzIC4qIG5vdCBiZWluZyB1c2VkLionLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nKSk6Ci0gICAgICAgICAgICBzdWJwcm9jZXNzID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKAotICAgICAgICAgICAgICAgICAgICAnc3VicHJvY2VzcycsIGJsb2NrZWQ9WydfcG9zaXhzdWJwcm9jZXNzJ10pCi0gICAgICAgIGFzc2VydCBub3Qgc3VicHJvY2Vzcy5fcG9zaXhzdWJwcm9jZXNzCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICBnbG9iYWwgc3VicHJvY2VzcwotICAgICAgICAjIFJlaW1wb3J0IHN1YnByb2Nlc3MgYXMgaXQgc2hvdWxkIGJlLCByZXN0b3Jpbmcgb3JkZXIgdG8gdGhlIHVuaXZlcnNlLgotICAgICAgICBzdWJwcm9jZXNzID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCdzdWJwcm9jZXNzJykKLSAgICAgICAgYXNzZXJ0IHN1YnByb2Nlc3MuX3Bvc2l4c3VicHJvY2VzcwotCi0KIGNsYXNzIEhlbHBlckZ1bmN0aW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIEB1bml0dGVzdC5za2lwSWYobXN3aW5kb3dzLCAiZXJybm8gYW5kIEVJTlRSIG1ha2Ugbm8gc2Vuc2Ugb24gd2luZG93cyIpCiAgICAgZGVmIHRlc3RfZWludHJfcmV0cnlfY2FsbChzZWxmKToKQEAgLTIwNzAsMjAgKzIxODAsMTcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvYy5yZXR1cm5jb2RlLCAxKQogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9hcmdzKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEVudmlyb25tZW50RXJyb3IpIGFzIGM6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IpIGFzIGM6CiAgICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4oWydub25leGlzdGluZ19pX2hvcGUnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpIGFzIHByb2M6CiAgICAgICAgICAgICAgICAgcGFzcwogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0VOVCkKLQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdW5pdF90ZXN0cyA9IChQcm9jZXNzVGVzdENhc2UsCiAgICAgICAgICAgICAgICAgICBQT1NJWFByb2Nlc3NUZXN0Q2FzZSwKICAgICAgICAgICAgICAgICAgIFdpbjMyUHJvY2Vzc1Rlc3RDYXNlLAotICAgICAgICAgICAgICAgICAgUHJvY2Vzc1Rlc3RDYXNlUE9TSVhQdXJlUHl0aG9uLAogICAgICAgICAgICAgICAgICAgQ29tbWFuZFRlc3RzLAogICAgICAgICAgICAgICAgICAgUHJvY2Vzc1Rlc3RDYXNlTm9Qb2xsLAogICAgICAgICAgICAgICAgICAgSGVscGVyRnVuY3Rpb25UZXN0cywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VuZHJ5LnB5IGIvTGliL3Rlc3QvdGVzdF9zdW5kcnkucHkKaW5kZXggMDc4MDJkNi4uZmNjY2RmNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdW5kcnkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdW5kcnkucHkKQEAgLTksNyArOSw2IEBACiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncyhxdWlldD1UcnVlKToKICAgICAgICAgICAgIGltcG9ydCBiZGIKICAgICAgICAgICAgIGltcG9ydCBjZ2l0YgotICAgICAgICAgICAgaW1wb3J0IGNvZGUKIAogICAgICAgICAgICAgaW1wb3J0IGRpc3R1dGlscy5iY3BwY29tcGlsZXIKICAgICAgICAgICAgIGltcG9ydCBkaXN0dXRpbHMuY2NvbXBpbGVyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9zdXBlci5weQppbmRleCA5MTQyMTZkLi5mNjQ2OWNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkKQEAgLTgxLDYgKzgxLDU1IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFKCkuZigpLCAnQUUnKQogCisgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgIGRlZiB0ZXN0X19fY2xhc3NfX19zZXQoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMxMjM3MAorICAgICAgICBjbGFzcyBYKEEpOgorICAgICAgICAgICAgZGVmIGYoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZigpCisgICAgICAgICAgICBfX2NsYXNzX18gPSA0MTMKKyAgICAgICAgeCA9IFgoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZigpLCAnQScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fX2NsYXNzX18sIDQxMykKKworICAgIGRlZiB0ZXN0X19fY2xhc3NfX19pbnN0YW5jZW1ldGhvZChzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzE0ODU3CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBkZWYgZihzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gX19jbGFzc19fCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoWCgpLmYoKSwgWCkKKworICAgIGRlZiB0ZXN0X19fY2xhc3NfX19jbGFzc21ldGhvZChzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzE0ODU3CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBmKGNscyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworICAgICAgICBzZWxmLmFzc2VydElzKFguZigpLCBYKQorCisgICAgZGVmIHRlc3RfX19jbGFzc19fX3N0YXRpY21ldGhvZChzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzE0ODU3CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgICAgIHJldHVybiBfX2NsYXNzX18KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhYLmYoKSwgWCkKKworICAgIGRlZiB0ZXN0X29ic2N1cmVfc3VwZXJfZXJyb3JzKHNlbGYpOgorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgc3VwZXIoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGYpCisgICAgICAgIGRlZiBmKHgpOgorICAgICAgICAgICAgZGVsIHgKKyAgICAgICAgICAgIHN1cGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBmLCBOb25lKQorICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgZGVmIGYoeCk6CisgICAgICAgICAgICAgICAgbm9ubG9jYWwgX19jbGFzc19fCisgICAgICAgICAgICAgICAgZGVsIF9fY2xhc3NfXworICAgICAgICAgICAgICAgIHN1cGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBYKCkuZikKKwogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdFN1cGVyKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZWY1ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkKQEAgLTAsMCArMSwxOTkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCitpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgc3lzCitpbXBvcnQgb3MKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHNvY2tldAoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgZXJybm8KK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCitURVNURk4gPSBzdXBwb3J0LlRFU1RGTgorVEVTVERJUk4gPSBvcy5wYXRoLmJhc2VuYW1lKHRlbXBmaWxlLm1rZHRlbXAoZGlyPScuJykpCisKKworY2xhc3MgVGVzdFN1cHBvcnQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVEZOKQorICAgICAgICBzdXBwb3J0LnJtdHJlZShURVNURElSTikKKyAgICB0ZWFyRG93biA9IHNldFVwCisKKyAgICBkZWYgdGVzdF9pbXBvcnRfbW9kdWxlKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmltcG9ydF9tb2R1bGUoImZ0cGxpYiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHVuaXR0ZXN0LlNraXBUZXN0LCBzdXBwb3J0LmltcG9ydF9tb2R1bGUsICJmb28iKQorCisgICAgZGVmIHRlc3RfaW1wb3J0X2ZyZXNoX21vZHVsZShzZWxmKToKKyAgICAgICAgc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCJmdHBsaWIiKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0dHJpYnV0ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwb3J0LmdldF9hdHRyaWJ1dGUoc2VsZiwgInRlc3RfZ2V0X2F0dHJpYnV0ZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXN0X2dldF9hdHRyaWJ1dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHVuaXR0ZXN0LlNraXBUZXN0LCBzdXBwb3J0LmdldF9hdHRyaWJ1dGUsIHNlbGYsICJmb28iKQorCisgICAgQHVuaXR0ZXN0LnNraXAoImZhaWxpbmcgYnVpbGRib3RzIikKKyAgICBkZWYgdGVzdF9nZXRfb3JpZ2luYWxfc3Rkb3V0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBvcnQuZ2V0X29yaWdpbmFsX3N0ZG91dCgpLCBzeXMuc3Rkb3V0KQorCisgICAgZGVmIHRlc3RfdW5sb2FkKHNlbGYpOgorICAgICAgICBpbXBvcnQgc2NoZWQKKyAgICAgICAgc2VsZi5hc3NlcnRJbigic2NoZWQiLCBzeXMubW9kdWxlcykKKyAgICAgICAgc3VwcG9ydC51bmxvYWQoInNjaGVkIikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigic2NoZWQiLCBzeXMubW9kdWxlcykKKworICAgIGRlZiB0ZXN0X3VubGluayhzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgInciKSBhcyBmOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzdXBwb3J0LnVubGluayhURVNURk4pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoVEVTVEZOKSkKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVEZOKQorCisgICAgZGVmIHRlc3Rfcm10cmVlKHNlbGYpOgorICAgICAgICBvcy5ta2RpcihURVNURElSTikKKyAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKFRFU1RESVJOLCBURVNURElSTikpCisgICAgICAgIHN1cHBvcnQucm10cmVlKFRFU1RESVJOKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKFRFU1RESVJOKSkKKyAgICAgICAgc3VwcG9ydC5ybXRyZWUoVEVTVERJUk4pCisKKyAgICBkZWYgdGVzdF9mb3JnZXQoc2VsZik6CisgICAgICAgIG1vZF9maWxlbmFtZSA9IFRFU1RGTiArICcucHknCisgICAgICAgIHdpdGggb3Blbihtb2RfZmlsZW5hbWUsICd3JykgYXMgZjoKKyAgICAgICAgICAgIHByaW50KCdmb28gPSAxJywgZmlsZT1mKQorICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MuY3VyZGlyKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2QgPSBfX2ltcG9ydF9fKFRFU1RGTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oVEVTVEZOLCBzeXMubW9kdWxlcykKKworICAgICAgICAgICAgc3VwcG9ydC5mb3JnZXQoVEVTVEZOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihURVNURk4sIHN5cy5tb2R1bGVzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCisgICAgICAgICAgICBzdXBwb3J0LnVubGluayhtb2RfZmlsZW5hbWUpCisKKyAgICBkZWYgdGVzdF9IT1NUKHNlbGYpOgorICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHMuYmluZCgoc3VwcG9ydC5IT1NULCAwKSkKKyAgICAgICAgcy5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9maW5kX3VudXNlZF9wb3J0KHNlbGYpOgorICAgICAgICBwb3J0ID0gc3VwcG9ydC5maW5kX3VudXNlZF9wb3J0KCkKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzLmJpbmQoKHN1cHBvcnQuSE9TVCwgcG9ydCkpCisgICAgICAgIHMuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfYmluZF9wb3J0KHNlbGYpOgorICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHN1cHBvcnQuYmluZF9wb3J0KHMpCisgICAgICAgIHMubGlzdGVuKDEpCisgICAgICAgIHMuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfdGVtcF9jd2Qoc2VsZik6CisgICAgICAgIGhlcmUgPSBvcy5nZXRjd2QoKQorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QobmFtZT1URVNURk4pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmJhc2VuYW1lKG9zLmdldGN3ZCgpKSwgVEVTVEZOKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKFRFU1RGTikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmJhc2VuYW1lKG9zLmdldGN3ZCgpKSwgaGVyZSkKKworICAgIGRlZiB0ZXN0X3RlbXBfY3dkX19jaGRpcl93YXJuaW5nKHNlbGYpOgorICAgICAgICAiIiJDaGVjayB0aGUgd2FybmluZyBtZXNzYWdlIHdoZW4gb3MuY2hkaXIoKSBmYWlscy4iIiIKKyAgICAgICAgcGF0aCA9IFRFU1RGTiArICdfZG9lc19ub3RfZXhpc3QnCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpIGFzIHJlY29yZGVyOgorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKHBhdGg9cGF0aCwgcXVpZXQ9VHJ1ZSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgbWVzc2FnZXMgPSBbc3RyKHcubWVzc2FnZSkgZm9yIHcgaW4gcmVjb3JkZXIud2FybmluZ3NdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVzc2FnZXMsIFsndGVzdHMgbWF5IGZhaWwsIHVuYWJsZSB0byBjaGFuZ2UgdGhlIENXRCB0byAnICsgcGF0aF0pCisKKyAgICBkZWYgdGVzdF9zb3J0ZGljdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwb3J0LnNvcnRkaWN0KHszOjMsIDI6MiwgMToxfSksICJ7MTogMSwgMjogMiwgMzogM30iKQorCisgICAgZGVmIHRlc3RfbWFrZV9iYWRfZmQoc2VsZik6CisgICAgICAgIGZkID0gc3VwcG9ydC5tYWtlX2JhZF9mZCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgICAgICBvcy53cml0ZShmZCwgYiJmb28iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUJBREYpCisKKyAgICBkZWYgdGVzdF9jaGVja19zeW50YXhfZXJyb3Ioc2VsZik6CisgICAgICAgIHN1cHBvcnQuY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgY2xhc3MiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgc3VwcG9ydC5jaGVja19zeW50YXhfZXJyb3IsIHNlbGYsICIxIikKKworICAgIGRlZiB0ZXN0X0NsZWFuSW1wb3J0KHNlbGYpOgorICAgICAgICBpbXBvcnQgaW1wb3J0bGliCisgICAgICAgIHdpdGggc3VwcG9ydC5DbGVhbkltcG9ydCgiYXN5bmNvcmUiKToKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCJhc3luY29yZSIpCisKKyAgICBkZWYgdGVzdF9EaXJzT25TeXNQYXRoKHNlbGYpOgorICAgICAgICB3aXRoIHN1cHBvcnQuRGlyc09uU3lzUGF0aCgnZm9vJywgJ2JhcicpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiZm9vIiwgc3lzLnBhdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJiYXIiLCBzeXMucGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiZm9vIiwgc3lzLnBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oImJhciIsIHN5cy5wYXRoKQorCisgICAgZGVmIHRlc3RfY2FwdHVyZWRfc3Rkb3V0KHNlbGYpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKKyAgICAgICAgICAgIHByaW50KCJoZWxsbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCAiaGVsbG9cbiIpCisKKyAgICBkZWYgdGVzdF9jYXB0dXJlZF9zdGRlcnIoc2VsZik6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBzOgorICAgICAgICAgICAgcHJpbnQoImhlbGxvIiwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgImhlbGxvXG4iKQorCisgICAgZGVmIHRlc3RfY2FwdHVyZWRfc3RkaW4oc2VsZik6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRpbigpIGFzIHM6CisgICAgICAgICAgICBwcmludCgiaGVsbG8iLCBmaWxlPXN5cy5zdGRpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksICJoZWxsb1xuIikKKworICAgIGRlZiB0ZXN0X2djX2NvbGxlY3Qoc2VsZik6CisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisKKyAgICBkZWYgdGVzdF9weXRob25faXNfb3B0aW1pemVkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3VwcG9ydC5weXRob25faXNfb3B0aW1pemVkKCksIGJvb2wpCisKKyAgICBkZWYgdGVzdF9zd2FwX2F0dHIoc2VsZik6CisgICAgICAgIGNsYXNzIE9iajoKKyAgICAgICAgICAgIHggPSAxCisgICAgICAgIG9iaiA9IE9iaigpCisgICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2F0dHIob2JqLCAieCIsIDUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmoueCwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmoueCwgMSkKKworICAgIGRlZiB0ZXN0X3N3YXBfaXRlbShzZWxmKToKKyAgICAgICAgRCA9IHsiaXRlbSI6MX0KKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfaXRlbShELCAiaXRlbSIsIDUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEWyJpdGVtIl0sIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRFsiaXRlbSJdLCAxKQorCisgICAgIyBYWFggLWZvbGxvd3MgYSBsaXN0IG9mIHVudGVzdGVkIEFQSQorICAgICMgbWFrZV9sZWdhY3lfcHljCisgICAgIyBpc19yZXNvdXJjZV9lbmFibGVkCisgICAgIyByZXF1aXJlcworICAgICMgZmNtcAorICAgICMgdW1ha3MKKyAgICAjIGZpbmRmaWxlCisgICAgIyBjaGVja193YXJuaW5ncworICAgICMgRW52aXJvbm1lbnRWYXJHdWFyZAorICAgICMgVHJhbnNpZW50UmVzb3VyY2UKKyAgICAjIHRyYW5zaWVudF9pbnRlcm5ldAorICAgICMgcnVuX3dpdGhfbG9jYWxlCisgICAgIyBzZXRfbWVtbGltaXQKKyAgICAjIGJpZ21lbXRlc3QKKyAgICAjIHByZWNpc2lvbmJpZ21lbXRlc3QKKyAgICAjIGJpZ2FkZHJzcGFjZXRlc3QKKyAgICAjIHJlcXVpcmVzX3Jlc291cmNlCisgICAgIyBydW5fZG9jdGVzdAorICAgICMgdGhyZWFkaW5nX2NsZWFudXAKKyAgICAjIHJlYXBfdGhyZWFkcworICAgICMgcmVhcF9jaGlsZHJlbgorICAgICMgc3RyaXBfcHl0aG9uX3N0ZGVycgorICAgICMgYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzCisgICAgIyBjYW5fc3ltbGluaworICAgICMgc2tpcF91bmxlc3Nfc3ltbGluaworCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICB0ZXN0cyA9IFtUZXN0U3VwcG9ydF0KKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdHMpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXMucHkKaW5kZXggYTUyNzY3YS4uZTVlYzg1YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeXMucHkKQEAgLTMwMyw2ICszMDMsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0ZGxvcGVuZmxhZ3MoKSwgb2xkZmxhZ3MrMSkKICAgICAgICAgICAgIHN5cy5zZXRkbG9wZW5mbGFncyhvbGRmbGFncykKIAorICAgIEB0ZXN0LnN1cHBvcnQucmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0X3JlZmNvdW50KHNlbGYpOgogICAgICAgICAjIG4gaGVyZSBtdXN0IGJlIGEgZ2xvYmFsIGluIG9yZGVyIGZvciB0aGlzIHRlc3QgdG8gcGFzcyB3aGlsZQogICAgICAgICAjIHRyYWNpbmcgd2l0aCBhIHB5dGhvbiBmdW5jdGlvbi4gIFRyYWNpbmcgY2FsbHMgUHlGcmFtZV9GYXN0VG9Mb2NhbHMKQEAgLTM0Miw3ICszNDMsNyBAQAogICAgICMgVGVzdCBzeXMuX2N1cnJlbnRfZnJhbWVzKCkgaW4gYSBXSVRIX1RIUkVBRFMgYnVpbGQuCiAgICAgQHRlc3Quc3VwcG9ydC5yZWFwX3RocmVhZHMKICAgICBkZWYgY3VycmVudF9mcmFtZXNfd2l0aF90aHJlYWRzKHNlbGYpOgotICAgICAgICBpbXBvcnQgdGhyZWFkaW5nLCBfdGhyZWFkCisgICAgICAgIGltcG9ydCB0aHJlYWRpbmcKICAgICAgICAgaW1wb3J0IHRyYWNlYmFjawogCiAgICAgICAgICMgU3Bhd24gYSB0aHJlYWQgdGhhdCBibG9ja3MgYXQgYSBrbm93biBwbGFjZS4gIFRoZW4gdGhlIG1haW4KQEAgLTM1Niw3ICszNTcsNyBAQAogICAgICAgICAgICAgZzQ1NigpCiAKICAgICAgICAgZGVmIGc0NTYoKToKLSAgICAgICAgICAgIHRocmVhZF9pbmZvLmFwcGVuZChfdGhyZWFkLmdldF9pZGVudCgpKQorICAgICAgICAgICAgdGhyZWFkX2luZm8uYXBwZW5kKHRocmVhZGluZy5nZXRfaWRlbnQoKSkKICAgICAgICAgICAgIGVudGVyZWRfZy5zZXQoKQogICAgICAgICAgICAgbGVhdmVfZy53YWl0KCkKIApAQCAtMzcyLDcgKzM3Myw3IEBACiAKICAgICAgICAgZCA9IHN5cy5fY3VycmVudF9mcmFtZXMoKQogCi0gICAgICAgIG1haW5faWQgPSBfdGhyZWFkLmdldF9pZGVudCgpCisgICAgICAgIG1haW5faWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihtYWluX2lkLCBkKQogICAgICAgICBzZWxmLmFzc2VydEluKHRocmVhZF9pZCwgZCkKIApAQCAtNDE4LDYgKzQxOSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMsIHR1cGxlKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLmNvcHlyaWdodCwgc3RyKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLmV4ZWNfcHJlZml4LCBzdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMuYmFzZV9leGVjX3ByZWZpeCwgc3RyKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLmV4ZWN1dGFibGUsIHN0cikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3lzLmZsb2F0X2luZm8pLCAxMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZmxvYXRfaW5mby5yYWRpeCwgMikKQEAgLTQ0Niw4ICs0NDgsMTAgQEAKIAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLm1heHNpemUsIGludCkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy5tYXh1bmljb2RlLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLm1heHVuaWNvZGUsIDB4MTBGRkZGKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLnBsYXRmb3JtLCBzdHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMucHJlZml4LCBzdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMuYmFzZV9wcmVmaXgsIHN0cikKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy52ZXJzaW9uLCBzdHIpCiAgICAgICAgIHZpID0gc3lzLnZlcnNpb25faW5mbwogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodmlbOl0sIHR1cGxlKQpAQCAtNDczLDYgKzQ3NywxNCBAQAogICAgICAgICBpZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy5hYmlmbGFncywgc3RyKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzeXMsICd0aHJlYWRfaW5mbycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIGRlZiB0ZXN0X3RocmVhZF9pbmZvKHNlbGYpOgorICAgICAgICBpbmZvID0gc3lzLnRocmVhZF9pbmZvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGluZm8pLCAzKQorICAgICAgICBzZWxmLmFzc2VydEluKGluZm8ubmFtZSwgKCdudCcsICdvczInLCAncHRocmVhZCcsICdzb2xhcmlzJywgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oaW5mby5sb2NrLCAoJ3NlbWFwaG9yZScsICdtdXRleCtjb25kJywgTm9uZSkpCisKICAgICBkZWYgdGVzdF80MzU4MShzZWxmKToKICAgICAgICAgIyBDYW4ndCB1c2Ugc3lzLnN0ZG91dCwgYXMgdGhpcyBpcyBhIFN0cmluZ0lPIG9iamVjdCB3aGVuCiAgICAgICAgICMgdGhlIHRlc3QgcnVucyB1bmRlciByZWdydGVzdC4KQEAgLTUwMCw3ICs1MTIsNyBAQAogCiAgICAgZGVmIHRlc3Rfc3lzX2ZsYWdzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoc3lzLmZsYWdzKQotICAgICAgICBhdHRycyA9ICgiZGVidWciLCAiZGl2aXNpb25fd2FybmluZyIsCisgICAgICAgIGF0dHJzID0gKCJkZWJ1ZyIsCiAgICAgICAgICAgICAgICAgICJpbnNwZWN0IiwgImludGVyYWN0aXZlIiwgIm9wdGltaXplIiwgImRvbnRfd3JpdGVfYnl0ZWNvZGUiLAogICAgICAgICAgICAgICAgICAibm9fdXNlcl9zaXRlIiwgIm5vX3NpdGUiLCAiaWdub3JlX2Vudmlyb25tZW50IiwgInZlcmJvc2UiLAogICAgICAgICAgICAgICAgICAiYnl0ZXNfd2FybmluZyIsICJxdWlldCIsICJoYXNoX3JhbmRvbWl6YXRpb24iKQpAQCAtNTMyLDYgKzU0NCw4IEBACiAgICAgICAgIG91dCA9IHAuY29tbXVuaWNhdGUoKVswXS5zdHJpcCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LCBiJz8nKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuYmFzZV9wcmVmaXggIT0gc3lzLnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICdUZXN0IGlzIG5vdCB2ZW52LWNvbXBhdGlibGUnKQogICAgIGRlZiB0ZXN0X2V4ZWN1dGFibGUoc2VsZik6CiAgICAgICAgICMgc3lzLmV4ZWN1dGFibGUgc2hvdWxkIGJlIGFic29sdXRlCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5hYnNwYXRoKHN5cy5leGVjdXRhYmxlKSwgc3lzLmV4ZWN1dGFibGUpCkBAIC01NjgsNiArNTgyLDM0IEBACiAgICAgICAgICAgICBleHBlY3RlZCA9IE5vbmUKICAgICAgICAgc2VsZi5jaGVja19mc2VuY29kaW5nKGZzX2VuY29kaW5nLCBleHBlY3RlZCkKIAorICAgIGRlZiB0ZXN0X2ltcGxlbWVudGF0aW9uKHNlbGYpOgorICAgICAgICAjIFRoaXMgdGVzdCBhcHBsaWVzIHRvIGFsbCBpbXBsZW1lbnRhdGlvbnMgZXF1YWxseS4KKworICAgICAgICBsZXZlbHMgPSB7J2FscGhhJzogMHhBLCAnYmV0YSc6IDB4QiwgJ2NhbmRpZGF0ZSc6IDB4QywgJ2ZpbmFsJzogMHhGfQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ25hbWUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAndmVyc2lvbicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdoZXh2ZXJzaW9uJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ2NhY2hlX3RhZycpKQorCisgICAgICAgIHZlcnNpb24gPSBzeXMuaW1wbGVtZW50YXRpb24udmVyc2lvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZlcnNpb25bOjJdLCAodmVyc2lvbi5tYWpvciwgdmVyc2lvbi5taW5vcikpCisKKyAgICAgICAgaGV4dmVyc2lvbiA9ICh2ZXJzaW9uLm1ham9yIDw8IDI0IHwgdmVyc2lvbi5taW5vciA8PCAxNiB8CisgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbi5taWNybyA8PCA4IHwgbGV2ZWxzW3ZlcnNpb24ucmVsZWFzZWxldmVsXSA8PCA0IHwKKyAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLnNlcmlhbCA8PCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5pbXBsZW1lbnRhdGlvbi5oZXh2ZXJzaW9uLCBoZXh2ZXJzaW9uKQorCisgICAgICAgICMgUEVQIDQyMSByZXF1aXJlcyB0aGF0IC5uYW1lIGJlIGxvd2VyIGNhc2UuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmltcGxlbWVudGF0aW9uLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLmltcGxlbWVudGF0aW9uLm5hbWUubG93ZXIoKSkKKworICAgIGRlZiB0ZXN0X2RlYnVnbWFsbG9jc3RhdHMoc2VsZik6CisgICAgICAgICMgVGVzdCBzeXMuX2RlYnVnbWFsbG9jc3RhdHMoKQorICAgICAgICBmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworICAgICAgICBhcmdzID0gWyctYycsICdpbXBvcnQgc3lzOyBzeXMuX2RlYnVnbWFsbG9jc3RhdHMoKSddCisgICAgICAgIHJldCwgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCphcmdzKQorICAgICAgICBzZWxmLmFzc2VydEluKGIiZnJlZSBQeURpY3RPYmplY3RzIiwgZXJyKQogCiBjbGFzcyBTaXplb2ZUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNTkxLDEyICs2MzMsMTIgQEAKICAgICAgICAgIyBib29sIG9iamVjdHMgYXJlIG5vdCBnYyB0cmFja2VkCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHNpemVvZihUcnVlKSwgdnNpemUoJycpICsgc2VsZi5sb25nZGlnaXQpCiAgICAgICAgICMgYnV0IGxpc3RzIGFyZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoW10pLCB2c2l6ZSgnUFAnKSArIGdjX2hlYWRlcl9zaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoW10pLCB2c2l6ZSgnUG4nKSArIGdjX2hlYWRlcl9zaXplKQogCiAgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKLSAgICAgICAgdnNpemUgPSB0ZXN0LnN1cHBvcnQuY2FsY3ZvYmpzaXplCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHNpemVvZihUcnVlKSwgdnNpemUoJycpICsgc2VsZi5sb25nZGlnaXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHNpemVvZihUcnVlLCAtMSksIHZzaXplKCcnKSArIHNlbGYubG9uZ2RpZ2l0KQorICAgICAgICBzaXplID0gdGVzdC5zdXBwb3J0LmNhbGN2b2Jqc2l6ZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoVHJ1ZSksIHNpemUoJycpICsgc2VsZi5sb25nZGlnaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHNpemVvZihUcnVlLCAtMSksIHNpemUoJycpICsgc2VsZi5sb25nZGlnaXQpCiAKICAgICBkZWYgdGVzdF9vYmplY3R0eXBlcyhzZWxmKToKICAgICAgICAgIyBjaGVjayBhbGwgdHlwZXMgZGVmaW5lZCBpbiBPYmplY3RzLwpAQCAtNjEzLDkgKzY1NSw5IEBACiAgICAgICAgIHNhbXBsZXMgPSBbYicnLCBiJ3UnKjEwMDAwMF0KICAgICAgICAgZm9yIHNhbXBsZSBpbiBzYW1wbGVzOgogICAgICAgICAgICAgeCA9IGJ5dGVhcnJheShzYW1wbGUpCi0gICAgICAgICAgICBjaGVjayh4LCB2c2l6ZSgnaVBQJykgKyB4Ll9fYWxsb2NfXygpKQorICAgICAgICAgICAgY2hlY2soeCwgdnNpemUoJ2luUCcpICsgeC5fX2FsbG9jX18oKSkKICAgICAgICAgIyBieXRlYXJyYXlfaXRlcmF0b3IKLSAgICAgICAgY2hlY2soaXRlcihieXRlYXJyYXkoKSksIHNpemUoJ1BQJykpCisgICAgICAgIGNoZWNrKGl0ZXIoYnl0ZWFycmF5KCkpLCBzaXplKCduUCcpKQogICAgICAgICAjIGNlbGwKICAgICAgICAgZGVmIGdldF9jZWxsKCk6CiAgICAgICAgICAgICB4ID0gNDIKQEAgLTYyNCwyNyArNjY2LDMzIEBACiAgICAgICAgICAgICByZXR1cm4gaW5uZXIKICAgICAgICAgY2hlY2soZ2V0X2NlbGwoKS5fX2Nsb3N1cmVfX1swXSwgc2l6ZSgnUCcpKQogICAgICAgICAjIGNvZGUKLSAgICAgICAgY2hlY2soZ2V0X2NlbGwoKS5fX2NvZGVfXywgc2l6ZSgnNWk4UGkzUCcpKQorICAgICAgICBjaGVjayhnZXRfY2VsbCgpLl9fY29kZV9fLCBzaXplKCc1aTlQaTNQJykpCisgICAgICAgIGNoZWNrKGdldF9jZWxsLl9fY29kZV9fLCBzaXplKCc1aTlQaTNQJykpCisgICAgICAgIGRlZiBnZXRfY2VsbDIoeCk6CisgICAgICAgICAgICBkZWYgaW5uZXIoKToKKyAgICAgICAgICAgICAgICByZXR1cm4geAorICAgICAgICAgICAgcmV0dXJuIGlubmVyCisgICAgICAgIGNoZWNrKGdldF9jZWxsMi5fX2NvZGVfXywgc2l6ZSgnNWk5UGkzUCcpICsgMSkKICAgICAgICAgIyBjb21wbGV4CiAgICAgICAgIGNoZWNrKGNvbXBsZXgoMCwxKSwgc2l6ZSgnMmQnKSkKICAgICAgICAgIyBtZXRob2RfZGVzY3JpcHRvciAoZGVzY3JpcHRvciBvYmplY3QpCi0gICAgICAgIGNoZWNrKHN0ci5sb3dlciwgc2l6ZSgnMlBQJykpCisgICAgICAgIGNoZWNrKHN0ci5sb3dlciwgc2l6ZSgnM1BQJykpCiAgICAgICAgICMgY2xhc3NtZXRob2RfZGVzY3JpcHRvciAoZGVzY3JpcHRvciBvYmplY3QpCiAgICAgICAgICMgWFhYCiAgICAgICAgICMgbWVtYmVyX2Rlc2NyaXB0b3IgKGRlc2NyaXB0b3Igb2JqZWN0KQogICAgICAgICBpbXBvcnQgZGF0ZXRpbWUKLSAgICAgICAgY2hlY2soZGF0ZXRpbWUudGltZWRlbHRhLmRheXMsIHNpemUoJzJQUCcpKQorICAgICAgICBjaGVjayhkYXRldGltZS50aW1lZGVsdGEuZGF5cywgc2l6ZSgnM1BQJykpCiAgICAgICAgICMgZ2V0c2V0X2Rlc2NyaXB0b3IgKGRlc2NyaXB0b3Igb2JqZWN0KQogICAgICAgICBpbXBvcnQgY29sbGVjdGlvbnMKLSAgICAgICAgY2hlY2soY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QuZGVmYXVsdF9mYWN0b3J5LCBzaXplKCcyUFAnKSkKKyAgICAgICAgY2hlY2soY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QuZGVmYXVsdF9mYWN0b3J5LCBzaXplKCczUFAnKSkKICAgICAgICAgIyB3cmFwcGVyX2Rlc2NyaXB0b3IgKGRlc2NyaXB0b3Igb2JqZWN0KQotICAgICAgICBjaGVjayhpbnQuX19hZGRfXywgc2l6ZSgnMlAyUCcpKQorICAgICAgICBjaGVjayhpbnQuX19hZGRfXywgc2l6ZSgnM1AyUCcpKQogICAgICAgICAjIG1ldGhvZC13cmFwcGVyIChkZXNjcmlwdG9yIG9iamVjdCkKICAgICAgICAgY2hlY2soe30uX19pdGVyX18sIHNpemUoJzJQJykpCiAgICAgICAgICMgZGljdAotICAgICAgICBjaGVjayh7fSwgc2l6ZSgnM1AyUCcgKyA4KidQMlAnKSkKKyAgICAgICAgY2hlY2soe30sIHNpemUoJ24yUCcgKyAnMm5QbicgKyA4KiduMlAnKSkKICAgICAgICAgbG9uZ2RpY3QgPSB7MToxLCAyOjIsIDM6MywgNDo0LCA1OjUsIDY6NiwgNzo3LCA4Ojh9Ci0gICAgICAgIGNoZWNrKGxvbmdkaWN0LCBzaXplKCczUDJQJyArIDgqJ1AyUCcpICsgMTYqc3RydWN0LmNhbGNzaXplKCdQMlAnKSkKKyAgICAgICAgY2hlY2sobG9uZ2RpY3QsIHNpemUoJ24yUCcgKyAnMm5QbicpICsgMTYqc3RydWN0LmNhbGNzaXplKCduMlAnKSkKICAgICAgICAgIyBkaWN0aW9uYXJ5LWtleWl0ZXJhdG9yCiAgICAgICAgIGNoZWNrKHt9LmtleXMoKSwgc2l6ZSgnUCcpKQogICAgICAgICAjIGRpY3Rpb25hcnktdmFsdWVpdGVyYXRvcgpAQCAtNjUyLDE4ICs3MDAsMTggQEAKICAgICAgICAgIyBkaWN0aW9uYXJ5LWl0ZW1pdGVyYXRvcgogICAgICAgICBjaGVjayh7fS5pdGVtcygpLCBzaXplKCdQJykpCiAgICAgICAgICMgZGljdGlvbmFyeSBpdGVyYXRvcgotICAgICAgICBjaGVjayhpdGVyKHt9KSwgc2l6ZSgnUDJQUFAnKSkKKyAgICAgICAgY2hlY2soaXRlcih7fSksIHNpemUoJ1AyblBuJykpCiAgICAgICAgICMgZGljdHByb3h5CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KTogcGFzcwogICAgICAgICBjaGVjayhDLl9fZGljdF9fLCBzaXplKCdQJykpCiAgICAgICAgICMgQmFzZUV4Y2VwdGlvbgotICAgICAgICBjaGVjayhCYXNlRXhjZXB0aW9uKCksIHNpemUoJzVQJykpCisgICAgICAgIGNoZWNrKEJhc2VFeGNlcHRpb24oKSwgc2l6ZSgnNVBpJykpCiAgICAgICAgICMgVW5pY29kZUVuY29kZUVycm9yCi0gICAgICAgIGNoZWNrKFVuaWNvZGVFbmNvZGVFcnJvcigiIiwgIiIsIDAsIDAsICIiKSwgc2l6ZSgnNVAgMlAyUFAnKSkKKyAgICAgICAgY2hlY2soVW5pY29kZUVuY29kZUVycm9yKCIiLCAiIiwgMCwgMCwgIiIpLCBzaXplKCc1UGkgMlAyblAnKSkKICAgICAgICAgIyBVbmljb2RlRGVjb2RlRXJyb3IKLSAgICAgICAgY2hlY2soVW5pY29kZURlY29kZUVycm9yKCIiLCBiIiIsIDAsIDAsICIiKSwgc2l6ZSgnNVAgMlAyUFAnKSkKKyAgICAgICAgY2hlY2soVW5pY29kZURlY29kZUVycm9yKCIiLCBiIiIsIDAsIDAsICIiKSwgc2l6ZSgnNVBpIDJQMm5QJykpCiAgICAgICAgICMgVW5pY29kZVRyYW5zbGF0ZUVycm9yCi0gICAgICAgIGNoZWNrKFVuaWNvZGVUcmFuc2xhdGVFcnJvcigiIiwgMCwgMSwgIiIpLCBzaXplKCc1UCAyUDJQUCcpKQorICAgICAgICBjaGVjayhVbmljb2RlVHJhbnNsYXRlRXJyb3IoIiIsIDAsIDEsICIiKSwgc2l6ZSgnNVBpIDJQMm5QJykpCiAgICAgICAgICMgZWxsaXBzZXMKICAgICAgICAgY2hlY2soRWxsaXBzaXMsIHNpemUoJycpKQogICAgICAgICAjIEVuY29kaW5nTWFwCkBAIC02NzEsOSArNzE5LDkgQEAKICAgICAgICAgeCA9IGNvZGVjcy5jaGFybWFwX2J1aWxkKGVuY29kaW5ncy5pc284ODU5XzMuZGVjb2RpbmdfdGFibGUpCiAgICAgICAgIGNoZWNrKHgsIHNpemUoJzMyQjJpQicpKQogICAgICAgICAjIGVudW1lcmF0ZQotICAgICAgICBjaGVjayhlbnVtZXJhdGUoW10pLCBzaXplKCdsM1AnKSkKKyAgICAgICAgY2hlY2soZW51bWVyYXRlKFtdKSwgc2l6ZSgnbjNQJykpCiAgICAgICAgICMgcmV2ZXJzZQotICAgICAgICBjaGVjayhyZXZlcnNlZCgnJyksIHNpemUoJ1BQJykpCisgICAgICAgIGNoZWNrKHJldmVyc2VkKCcnKSwgc2l6ZSgnblAnKSkKICAgICAgICAgIyBmbG9hdAogICAgICAgICBjaGVjayhmbG9hdCgwKSwgc2l6ZSgnZCcpKQogICAgICAgICAjIHN5cy5mbG9hdGluZm8KQEAgLTY4OSw3ICs3MzcsNyBAQAogICAgICAgICBjaGVjayh4LCB2c2l6ZSgnMTJQM2knICsgQ09fTUFYQkxPQ0tTKiczaScgKyAnUCcgKyBleHRyYXMqJ1AnKSkKICAgICAgICAgIyBmdW5jdGlvbgogICAgICAgICBkZWYgZnVuYygpOiBwYXNzCi0gICAgICAgIGNoZWNrKGZ1bmMsIHNpemUoJzExUCcpKQorICAgICAgICBjaGVjayhmdW5jLCBzaXplKCcxMlAnKSkKICAgICAgICAgY2xhc3MgYygpOgogICAgICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICAgICAgZGVmIGZvbygpOgpAQCAtNjk4LDEyICs3NDYsMTIgQEAKICAgICAgICAgICAgIGRlZiBiYXIoY2xzKToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAjIHN0YXRpY21ldGhvZAotICAgICAgICAgICAgY2hlY2soZm9vLCBzaXplKCdQJykpCisgICAgICAgICAgICBjaGVjayhmb28sIHNpemUoJ1BQJykpCiAgICAgICAgICAgICAjIGNsYXNzbWV0aG9kCi0gICAgICAgICAgICBjaGVjayhiYXIsIHNpemUoJ1AnKSkKKyAgICAgICAgICAgIGNoZWNrKGJhciwgc2l6ZSgnUFAnKSkKICAgICAgICAgIyBnZW5lcmF0b3IKICAgICAgICAgZGVmIGdldF9nZW4oKTogeWllbGQgMQotICAgICAgICBjaGVjayhnZXRfZ2VuKCksIHNpemUoJ1BpMlAnKSkKKyAgICAgICAgY2hlY2soZ2V0X2dlbigpLCBzaXplKCdQYjJQJykpCiAgICAgICAgICMgaXRlcmF0b3IKICAgICAgICAgY2hlY2soaXRlcignYWJjJyksIHNpemUoJ2xQJykpCiAgICAgICAgICMgY2FsbGFibGUtaXRlcmF0b3IKQEAgLTcxMiw3ICs3NjAsNyBAQAogICAgICAgICAjIGxpc3QKICAgICAgICAgc2FtcGxlcyA9IFtbXSwgWzEsMiwzXSwgWycxJywgJzInLCAnMyddXQogICAgICAgICBmb3Igc2FtcGxlIGluIHNhbXBsZXM6Ci0gICAgICAgICAgICBjaGVjayhzYW1wbGUsIHZzaXplKCdQUCcpICsgbGVuKHNhbXBsZSkqc2VsZi5QKQorICAgICAgICAgICAgY2hlY2soc2FtcGxlLCB2c2l6ZSgnUG4nKSArIGxlbihzYW1wbGUpKnNlbGYuUCkKICAgICAgICAgIyBzb3J0d3JhcHBlciAobGlzdCkKICAgICAgICAgIyBYWFgKICAgICAgICAgIyBjbXB3cmFwcGVyIChsaXN0KQpAQCAtNzIwLDcgKzc2OCw3IEBACiAgICAgICAgICMgbGlzdGl0ZXJhdG9yIChsaXN0KQogICAgICAgICBjaGVjayhpdGVyKFtdKSwgc2l6ZSgnbFAnKSkKICAgICAgICAgIyBsaXN0cmV2ZXJzZWl0ZXJhdG9yIChsaXN0KQotICAgICAgICBjaGVjayhyZXZlcnNlZChbXSksIHNpemUoJ2xQJykpCisgICAgICAgIGNoZWNrKHJldmVyc2VkKFtdKSwgc2l6ZSgnblAnKSkKICAgICAgICAgIyBsb25nCiAgICAgICAgIGNoZWNrKDAsIHZzaXplKCcnKSkKICAgICAgICAgY2hlY2soMSwgdnNpemUoJycpICsgc2VsZi5sb25nZGlnaXQpCkBAIC03MzAsOSArNzc4LDkgQEAKICAgICAgICAgY2hlY2soaW50KFB5TG9uZ19CQVNFKioyLTEpLCB2c2l6ZSgnJykgKyAyKnNlbGYubG9uZ2RpZ2l0KQogICAgICAgICBjaGVjayhpbnQoUHlMb25nX0JBU0UqKjIpLCB2c2l6ZSgnJykgKyAzKnNlbGYubG9uZ2RpZ2l0KQogICAgICAgICAjIG1lbW9yeXZpZXcKLSAgICAgICAgY2hlY2sobWVtb3J5dmlldyhiJycpLCBzaXplKCdQUDJQMmk3UCcpKQorICAgICAgICBjaGVjayhtZW1vcnl2aWV3KGInJyksIHNpemUoJ1BuaW4gMlAybjJpNVAgM2NQbicpKQogICAgICAgICAjIG1vZHVsZQotICAgICAgICBjaGVjayh1bml0dGVzdCwgc2l6ZSgnM1AnKSkKKyAgICAgICAgY2hlY2sodW5pdHRlc3QsIHNpemUoJ1BuUCcpKQogICAgICAgICAjIE5vbmUKICAgICAgICAgY2hlY2soTm9uZSwgc2l6ZSgnJykpCiAgICAgICAgICMgTm90SW1wbGVtZW50ZWRUeXBlCkBAIC03NTEsNyArNzk5LDcgQEAKICAgICAgICAgIyByYW5nZWl0ZXJhdG9yCiAgICAgICAgIGNoZWNrKGl0ZXIocmFuZ2UoMSkpLCBzaXplKCc0bCcpKQogICAgICAgICAjIHJldmVyc2UKLSAgICAgICAgY2hlY2socmV2ZXJzZWQoJycpLCBzaXplKCdQUCcpKQorICAgICAgICBjaGVjayhyZXZlcnNlZCgnJyksIHNpemUoJ25QJykpCiAgICAgICAgICMgcmFuZ2UKICAgICAgICAgY2hlY2socmFuZ2UoMSksIHNpemUoJzRQJykpCiAgICAgICAgIGNoZWNrKHJhbmdlKDY2MDAwKSwgc2l6ZSgnNFAnKSkKQEAgLTc1OSw3ICs4MDcsNyBAQAogICAgICAgICAjIGZyb3plbnNldAogICAgICAgICBQeVNldF9NSU5TSVpFID0gOAogICAgICAgICBzYW1wbGVzID0gW1tdLCByYW5nZSgxMCksIHJhbmdlKDUwKV0KLSAgICAgICAgcyA9IHNpemUoJzNQMlAnICsgUHlTZXRfTUlOU0laRSonUFAnICsgJ1BQJykKKyAgICAgICAgcyA9IHNpemUoJzNuMlAnICsgUHlTZXRfTUlOU0laRSonblAnICsgJ25QJykKICAgICAgICAgZm9yIHNhbXBsZSBpbiBzYW1wbGVzOgogICAgICAgICAgICAgbWludXNlZCA9IGxlbihzYW1wbGUpCiAgICAgICAgICAgICBpZiBtaW51c2VkID09IDA6IHRtcCA9IDEKQEAgLTc3MywxMCArODIxLDEwIEBACiAgICAgICAgICAgICAgICAgY2hlY2soc2V0KHNhbXBsZSksIHMpCiAgICAgICAgICAgICAgICAgY2hlY2soZnJvemVuc2V0KHNhbXBsZSksIHMpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNoZWNrKHNldChzYW1wbGUpLCBzICsgbmV3c2l6ZSpzdHJ1Y3QuY2FsY3NpemUoJ2xQJykpCi0gICAgICAgICAgICAgICAgY2hlY2soZnJvemVuc2V0KHNhbXBsZSksIHMgKyBuZXdzaXplKnN0cnVjdC5jYWxjc2l6ZSgnbFAnKSkKKyAgICAgICAgICAgICAgICBjaGVjayhzZXQoc2FtcGxlKSwgcyArIG5ld3NpemUqc3RydWN0LmNhbGNzaXplKCduUCcpKQorICAgICAgICAgICAgICAgIGNoZWNrKGZyb3plbnNldChzYW1wbGUpLCBzICsgbmV3c2l6ZSpzdHJ1Y3QuY2FsY3NpemUoJ25QJykpCiAgICAgICAgICMgc2V0aXRlcmF0b3IKLSAgICAgICAgY2hlY2soaXRlcihzZXQoKSksIHNpemUoJ1AzUCcpKQorICAgICAgICBjaGVjayhpdGVyKHNldCgpKSwgc2l6ZSgnUDNuJykpCiAgICAgICAgICMgc2xpY2UKICAgICAgICAgY2hlY2soc2xpY2UoMCksIHNpemUoJzNQJykpCiAgICAgICAgICMgc3VwZXIKQEAgLTc4NSwyOCArODMzLDU2IEBACiAgICAgICAgIGNoZWNrKCgpLCB2c2l6ZSgnJykpCiAgICAgICAgIGNoZWNrKCgxLDIsMyksIHZzaXplKCcnKSArIDMqc2VsZi5QKQogICAgICAgICAjIHR5cGUKLSAgICAgICAgIyAoUHlUeXBlT2JqZWN0ICsgUHlOdW1iZXJNZXRob2RzICsgUHlNYXBwaW5nTWV0aG9kcyArCi0gICAgICAgICMgIFB5U2VxdWVuY2VNZXRob2RzICsgUHlCdWZmZXJQcm9jcykKLSAgICAgICAgcyA9IHZzaXplKCdQMlAxNVBsNFBQOVBQMTFQSScpICsgc3RydWN0LmNhbGNzaXplKCcxNlBpMTdQIDNQIDEwUCAyUCAyUCcpCisgICAgICAgICMgc3RhdGljIHR5cGU6IFB5VHlwZU9iamVjdAorICAgICAgICBzID0gdnNpemUoJ1AybjE1UGw0UG45UG4xMVBJJykKICAgICAgICAgY2hlY2soaW50LCBzKQorICAgICAgICAjIChQeVR5cGVPYmplY3QgKyBQeU51bWJlck1ldGhvZHMgKyBQeU1hcHBpbmdNZXRob2RzICsKKyAgICAgICAgIyAgUHlTZXF1ZW5jZU1ldGhvZHMgKyBQeUJ1ZmZlclByb2NzICsgNFApCisgICAgICAgIHMgPSB2c2l6ZSgnUDJuMTVQbDRQbjlQbjExUEknKSArIHN0cnVjdC5jYWxjc2l6ZSgnMzRQIDNQIDEwUCAyUCA0UCcpCisgICAgICAgICMgU2VwYXJhdGUgYmxvY2sgZm9yIFB5RGljdEtleXNPYmplY3Qgd2l0aCA0IGVudHJpZXMKKyAgICAgICAgcyArPSBzdHJ1Y3QuY2FsY3NpemUoIjJuUG4iKSArIDQqc3RydWN0LmNhbGNzaXplKCJuMlAiKQogICAgICAgICAjIGNsYXNzCiAgICAgICAgIGNsYXNzIG5ld3N0eWxlY2xhc3Mob2JqZWN0KTogcGFzcwogICAgICAgICBjaGVjayhuZXdzdHlsZWNsYXNzLCBzKQorICAgICAgICAjIGRpY3Qgd2l0aCBzaGFyZWQga2V5cworICAgICAgICBjaGVjayhuZXdzdHlsZWNsYXNzKCkuX19kaWN0X18sIHNpemUoJ24yUCcgKyAnMm5QbicpKQogICAgICAgICAjIHVuaWNvZGUKLSAgICAgICAgdXNpemUgPSBsZW4oJ1wwJy5lbmNvZGUoJ3VuaWNvZGUtaW50ZXJuYWwnKSkKLSAgICAgICAgc2FtcGxlcyA9IFsnJywgJzEnKjEwMF0KLSAgICAgICAgIyB3ZSBuZWVkIHRvIHRlc3QgZm9yIGJvdGggc2l6ZXMsIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyBpZiB0aGUgc3RyaW5nCi0gICAgICAgICMgaGFzIGJlZW4gY2FjaGVkCisgICAgICAgICMgZWFjaCB0dXBsZSBjb250YWlucyBhIHN0cmluZyBhbmQgaXRzIGV4cGVjdGVkIGNoYXJhY3RlciBzaXplCisgICAgICAgICMgZG9uJ3QgcHV0IGFueSBzdGF0aWMgc3RyaW5ncyBoZXJlLCBhcyB0aGV5IG1heSBjb250YWluCisgICAgICAgICMgd2NoYXJfdCBvciBVVEYtOCByZXByZXNlbnRhdGlvbnMKKyAgICAgICAgc2FtcGxlcyA9IFsnMScqMTAwLCAnXHhmZicqNTAsCisgICAgICAgICAgICAgICAgICAgJ1x1MDEwMCcqNDAsICdcdWZmZmYnKjEwMCwKKyAgICAgICAgICAgICAgICAgICAnXFUwMDAxMDAwMCcqMzAsICdcVTAwMTBmZmZmJyoxMDBdCisgICAgICAgIGFzY2lpZmllbGRzID0gIm5uaVAiCisgICAgICAgIGNvbXBhY3RmaWVsZHMgPSBhc2NpaWZpZWxkcyArICJuUG4iCisgICAgICAgIHVuaWNvZGVmaWVsZHMgPSBjb21wYWN0ZmllbGRzICsgIlAiCiAgICAgICAgIGZvciBzIGluIHNhbXBsZXM6Ci0gICAgICAgICAgICBiYXNpY3NpemUgPSAgc2l6ZSgnUFBQaVAnKSArIHVzaXplICogKGxlbihzKSArIDEpCi0gICAgICAgICAgICBjaGVjayhzLCBiYXNpY3NpemUpCisgICAgICAgICAgICBtYXhjaGFyID0gb3JkKG1heChzKSkKKyAgICAgICAgICAgIGlmIG1heGNoYXIgPCAxMjg6CisgICAgICAgICAgICAgICAgTCA9IHNpemUoYXNjaWlmaWVsZHMpICsgbGVuKHMpICsgMQorICAgICAgICAgICAgZWxpZiBtYXhjaGFyIDwgMjU2OgorICAgICAgICAgICAgICAgIEwgPSBzaXplKGNvbXBhY3RmaWVsZHMpICsgbGVuKHMpICsgMQorICAgICAgICAgICAgZWxpZiBtYXhjaGFyIDwgNjU1MzY6CisgICAgICAgICAgICAgICAgTCA9IHNpemUoY29tcGFjdGZpZWxkcykgKyAyKihsZW4ocykgKyAxKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBMID0gc2l6ZShjb21wYWN0ZmllbGRzKSArIDQqKGxlbihzKSArIDEpCisgICAgICAgICAgICBjaGVjayhzLCBMKQorICAgICAgICAjIHZlcmlmeSB0aGF0IHRoZSBVVEYtOCBzaXplIGlzIGFjY291bnRlZCBmb3IKKyAgICAgICAgcyA9IGNocigweDQwMDApICAgIyA0IGJ5dGVzIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbgorICAgICAgICBjaGVjayhzLCBzaXplKGNvbXBhY3RmaWVsZHMpICsgNCkKKyAgICAgICAgIyBjb21waWxlKCkgd2lsbCB0cmlnZ2VyIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBVVEYtOAorICAgICAgICAjIHJlcHJlc2VudGF0aW9uIGFzIGEgc2lkZSBlZmZlY3QKKyAgICAgICAgY29tcGlsZShzLCAiPHN0ZGluPiIsICJldmFsIikKKyAgICAgICAgY2hlY2socywgc2l6ZShjb21wYWN0ZmllbGRzKSArIDQgKyA0KQorICAgICAgICAjIFRPRE86IGFkZCBjaGVjayB0aGF0IGZvcmNlcyB0aGUgcHJlc2VuY2Ugb2Ygd2NoYXJfdCByZXByZXNlbnRhdGlvbgorICAgICAgICAjIFRPRE86IGFkZCBjaGVjayB0aGF0IGZvcmNlcyBsYXlvdXQgb2YgdW5pY29kZWZpZWxkcwogICAgICAgICAjIHdlYWtyZWYKICAgICAgICAgaW1wb3J0IHdlYWtyZWYKLSAgICAgICAgY2hlY2sod2Vha3JlZi5yZWYoaW50KSwgc2l6ZSgnMlBsMlAnKSkKKyAgICAgICAgY2hlY2sod2Vha3JlZi5yZWYoaW50KSwgc2l6ZSgnMlBuMlAnKSkKICAgICAgICAgIyB3ZWFrcHJveHkKICAgICAgICAgIyBYWFgKICAgICAgICAgIyB3ZWFrY2FsbGFibGVwcm94eQotICAgICAgICBjaGVjayh3ZWFrcmVmLnByb3h5KGludCksIHNpemUoJzJQbDJQJykpCisgICAgICAgIGNoZWNrKHdlYWtyZWYucHJveHkoaW50KSwgc2l6ZSgnMlBuMlAnKSkKIAogICAgIGRlZiB0ZXN0X3B5dGhvbnR5cGVzKHNlbGYpOgogICAgICAgICAjIGNoZWNrIGFsbCB0eXBlcyBkZWZpbmVkIGluIFB5dGhvbi8KQEAgLTgxNSwxNiArODkxLDEzIEBACiAgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19zaXplb2YKICAgICAgICAgIyBfYXN0LkFTVAogICAgICAgICBpbXBvcnQgX2FzdAotICAgICAgICBjaGVjayhfYXN0LkFTVCgpLCBzaXplKCcnKSkKLSAgICAgICAgIyBpbXAuTnVsbEltcG9ydGVyCi0gICAgICAgIGltcG9ydCBpbXAKLSAgICAgICAgY2hlY2soaW1wLk51bGxJbXBvcnRlcihzZWxmLmZpbGUubmFtZSksIHNpemUoJycpKQorICAgICAgICBjaGVjayhfYXN0LkFTVCgpLCBzaXplKCdQJykpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcgogICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgdGIgPSBzeXMuZXhjX2luZm8oKVsyXQogICAgICAgICAgICAgIyB0cmFjZWJhY2sKLSAgICAgICAgICAgIGlmIHRiICE9IE5vbmU6CisgICAgICAgICAgICBpZiB0YiBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBjaGVjayh0Yiwgc2l6ZSgnMlAyaScpKQogICAgICAgICAjIHN5bXRhYmxlIGVudHJ5CiAgICAgICAgICMgWFhYCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5c19zZXR0cmFjZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CmluZGV4IGJhM2JjMmUuLjYzYWUxYjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CkBAIC0yNTEsNiArMjUxLDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYudXNpbmdfZ2MgPSBnYy5pc2VuYWJsZWQoKQogICAgICAgICBnYy5kaXNhYmxlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXR0cmFjZSwgc3lzLmdldHRyYWNlKCkpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGlmIHNlbGYudXNpbmdfZ2M6CkBAIC0zODksNiArMzkwLDkgQEAKIAogCiBjbGFzcyBSYWlzaW5nVHJhY2VGdW5jVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXR0cmFjZSwgc3lzLmdldHRyYWNlKCkpCisKICAgICBkZWYgdHJhY2Uoc2VsZiwgZnJhbWUsIGV2ZW50LCBhcmcpOgogICAgICAgICAiIiJBIHRyYWNlIGZ1bmN0aW9uIHRoYXQgcmFpc2VzIGFuIGV4Y2VwdGlvbiBpbiByZXNwb25zZSB0byBhCiAgICAgICAgIHNwZWNpZmljIHRyYWNlIGV2ZW50LiIiIgpAQCAtNjk2LDYgKzcwMCwxMCBAQAogCiAKIGNsYXNzIEp1bXBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKKyAgICAgICAgc3lzLnNldHRyYWNlKE5vbmUpCisKICAgICBkZWYgY29tcGFyZV9qdW1wX291dHB1dChzZWxmLCBleHBlY3RlZCwgcmVjZWl2ZWQpOgogICAgICAgICBpZiByZWNlaXZlZCAhPSBleHBlY3RlZDoKICAgICAgICAgICAgIHNlbGYuZmFpbCggIk91dHB1dHMgZG9uJ3QgbWF0Y2g6XG4iICsKQEAgLTc0Nyw2ICs3NTUsOCBAQAogICAgIGRlZiB0ZXN0XzE4X25vX2p1bXBfdG9fbm9uX2ludGVnZXJzKHNlbGYpOgogICAgICAgICBzZWxmLnJ1bl90ZXN0KG5vX2p1bXBfdG9fbm9uX2ludGVnZXJzKQogICAgIGRlZiB0ZXN0XzE5X25vX2p1bXBfd2l0aG91dF90cmFjZV9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgIyBNdXN0IHNldCBzeXMuc2V0dHJhY2UoTm9uZSkgaW4gc2V0VXAoKSwgZWxzZSBjb25kaXRpb24gaXMgbm90CisgICAgICAgICMgdHJpZ2dlcmVkLgogICAgICAgICBub19qdW1wX3dpdGhvdXRfdHJhY2VfZnVuY3Rpb24oKQogICAgIGRlZiB0ZXN0X2p1bXBfYWNyb3NzX3dpdGgoc2VsZik6CiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CmluZGV4IDFiNjg5N2QuLjkyMTkzNjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CkBAIC0xLDExICsxLDkgQEAKLSIiIlRlc3RzIGZvciBzeXNjb25maWcuIiIiCi0KIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHNodXRpbAotZnJvbSBjb3B5IGltcG9ydCBjb3B5LCBkZWVwY29weQorZnJvbSBjb3B5IGltcG9ydCBjb3B5CiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAocnVuX3VuaXR0ZXN0LCBURVNURk4sIHVubGluaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZWRfc3Rkb3V0LCBza2lwX3VubGVzc19zeW1saW5rKQpAQCAtMjAsNyArMTgsNiBAQAogY2xhc3MgVGVzdFN5c0NvbmZpZyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgICIiIk1ha2UgYSBjb3B5IG9mIHN5cy5wYXRoIiIiCiAgICAgICAgIHN1cGVyKFRlc3RTeXNDb25maWcsIHNlbGYpLnNldFVwKCkKICAgICAgICAgc2VsZi5zeXNfcGF0aCA9IHN5cy5wYXRoWzpdCiAgICAgICAgICMgcGF0Y2hpbmcgb3MudW5hbWUKQEAgLTI5LDcgKzI2LDcgQEAKICAgICAgICAgICAgIHNlbGYuX3VuYW1lID0gb3MudW5hbWUoKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi51bmFtZSA9IE5vbmUKLSAgICAgICAgICAgIHNlbGYuX3VuYW1lID0gTm9uZQorICAgICAgICAgICAgc2VsZi5fc2V0X3VuYW1lKCgnJywpKjUpCiAgICAgICAgIG9zLnVuYW1lID0gc2VsZi5fZ2V0X3VuYW1lCiAgICAgICAgICMgc2F2aW5nIHRoZSBlbnZpcm9ubWVudAogICAgICAgICBzZWxmLm5hbWUgPSBvcy5uYW1lCkBAIC0zOSwxMSArMzYsMTYgQEAKICAgICAgICAgc2VsZi5qb2luID0gb3MucGF0aC5qb2luCiAgICAgICAgIHNlbGYuaXNhYnMgPSBvcy5wYXRoLmlzYWJzCiAgICAgICAgIHNlbGYuc3BsaXRkcml2ZSA9IG9zLnBhdGguc3BsaXRkcml2ZQotICAgICAgICBzZWxmLl9jb25maWdfdmFycyA9IGNvcHkoc3lzY29uZmlnLl9DT05GSUdfVkFSUykKLSAgICAgICAgc2VsZi5vbGRfZW52aXJvbiA9IGRlZXBjb3B5KG9zLmVudmlyb24pCisgICAgICAgIHNlbGYuX2NvbmZpZ192YXJzID0gc3lzY29uZmlnLl9DT05GSUdfVkFSUywgY29weShzeXNjb25maWcuX0NPTkZJR19WQVJTKQorICAgICAgICBzZWxmLl9hZGRlZF9lbnZ2YXJzID0gW10KKyAgICAgICAgc2VsZi5fY2hhbmdlZF9lbnZ2YXJzID0gW10KKyAgICAgICAgZm9yIHZhciBpbiAoJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCcsICdQQVRIJyk6CisgICAgICAgICAgICBpZiB2YXIgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICBzZWxmLl9jaGFuZ2VkX2VudnZhcnMuYXBwZW5kKCh2YXIsIG9zLmVudmlyb25bdmFyXSkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX2FkZGVkX2VudnZhcnMuYXBwZW5kKHZhcikKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgIiIiUmVzdG9yZSBzeXMucGF0aCIiIgogICAgICAgICBzeXMucGF0aFs6XSA9IHNlbGYuc3lzX3BhdGgKICAgICAgICAgc2VsZi5fY2xlYW51cF90ZXN0Zm4oKQogICAgICAgICBpZiBzZWxmLnVuYW1lIGlzIG5vdCBOb25lOgpAQCAtNTcsMTkgKzU5LDE4IEBACiAgICAgICAgIG9zLnBhdGguam9pbiA9IHNlbGYuam9pbgogICAgICAgICBvcy5wYXRoLmlzYWJzID0gc2VsZi5pc2FicwogICAgICAgICBvcy5wYXRoLnNwbGl0ZHJpdmUgPSBzZWxmLnNwbGl0ZHJpdmUKLSAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUyA9IGNvcHkoc2VsZi5fY29uZmlnX3ZhcnMpCi0gICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYub2xkX2Vudmlyb24uaXRlbXMoKToKLSAgICAgICAgICAgIGlmIG9zLmVudmlyb24uZ2V0KGtleSkgIT0gdmFsdWU6Ci0gICAgICAgICAgICAgICAgb3MuZW52aXJvbltrZXldID0gdmFsdWUKLQotICAgICAgICBmb3Iga2V5IGluIGxpc3Qob3MuZW52aXJvbi5rZXlzKCkpOgotICAgICAgICAgICAgaWYga2V5IG5vdCBpbiBzZWxmLm9sZF9lbnZpcm9uOgotICAgICAgICAgICAgICAgIGRlbCBvcy5lbnZpcm9uW2tleV0KKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUyA9IHNlbGYuX2NvbmZpZ192YXJzWzBdCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMuY2xlYXIoKQorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTLnVwZGF0ZShzZWxmLl9jb25maWdfdmFyc1sxXSkKKyAgICAgICAgZm9yIHZhciwgdmFsdWUgaW4gc2VsZi5fY2hhbmdlZF9lbnZ2YXJzOgorICAgICAgICAgICAgb3MuZW52aXJvblt2YXJdID0gdmFsdWUKKyAgICAgICAgZm9yIHZhciBpbiBzZWxmLl9hZGRlZF9lbnZ2YXJzOgorICAgICAgICAgICAgb3MuZW52aXJvbi5wb3AodmFyLCBOb25lKQogCiAgICAgICAgIHN1cGVyKFRlc3RTeXNDb25maWcsIHNlbGYpLnRlYXJEb3duKCkKIAogICAgIGRlZiBfc2V0X3VuYW1lKHNlbGYsIHVuYW1lKToKLSAgICAgICAgc2VsZi5fdW5hbWUgPSB1bmFtZQorICAgICAgICBzZWxmLl91bmFtZSA9IG9zLnVuYW1lX3Jlc3VsdCh1bmFtZSkKIAogICAgIGRlZiBfZ2V0X3VuYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fdW5hbWUKQEAgLTg4LDIxICs4OSwxOSBAQAogICAgICAgICBzY2hlbWUgPSBnZXRfcGF0aHMoKQogICAgICAgICBkZWZhdWx0X3NjaGVtZSA9IF9nZXRfZGVmYXVsdF9zY2hlbWUoKQogICAgICAgICB3YW50ZWQgPSBfZXhwYW5kX3ZhcnMoZGVmYXVsdF9zY2hlbWUsIE5vbmUpCi0gICAgICAgIHdhbnRlZCA9IGxpc3Qod2FudGVkLml0ZW1zKCkpCi0gICAgICAgIHdhbnRlZC5zb3J0KCkKLSAgICAgICAgc2NoZW1lID0gbGlzdChzY2hlbWUuaXRlbXMoKSkKLSAgICAgICAgc2NoZW1lLnNvcnQoKQorICAgICAgICB3YW50ZWQgPSBzb3J0ZWQod2FudGVkLml0ZW1zKCkpCisgICAgICAgIHNjaGVtZSA9IHNvcnRlZChzY2hlbWUuaXRlbXMoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY2hlbWUsIHdhbnRlZCkKIAogICAgIGRlZiB0ZXN0X2dldF9wYXRoKHNlbGYpOgotICAgICAgICAjIHh4eCBtYWtlIHJlYWwgdGVzdHMgaGVyZQorICAgICAgICAjIFhYWCBtYWtlIHJlYWwgdGVzdHMgaGVyZQogICAgICAgICBmb3Igc2NoZW1lIGluIF9JTlNUQUxMX1NDSEVNRVM6CiAgICAgICAgICAgICBmb3IgbmFtZSBpbiBfSU5TVEFMTF9TQ0hFTUVTW3NjaGVtZV06CiAgICAgICAgICAgICAgICAgcmVzID0gZ2V0X3BhdGgobmFtZSwgc2NoZW1lKQogCiAgICAgZGVmIHRlc3RfZ2V0X2NvbmZpZ192YXJzKHNlbGYpOgogICAgICAgICBjdmFycyA9IGdldF9jb25maWdfdmFycygpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGN2YXJzLCBkaWN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGN2YXJzLCBkaWN0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUoY3ZhcnMpCiAKICAgICBkZWYgdGVzdF9nZXRfcGxhdGZvcm0oc2VsZik6CkBAIC0yNDQsOCArMjQzLDggQEAKICAgICAgICAgIyBPbiBXaW5kb3dzLCB0aGUgRVhFIG5lZWRzIHRvIGtub3cgd2hlcmUgcHl0aG9uWFkuZGxsIGlzIGF0IHNvIHdlIGhhdmUKICAgICAgICAgIyB0byBhZGQgdGhlIGRpcmVjdG9yeSB0byB0aGUgcGF0aC4KICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgICAgICAgICBvcy5lbnZpcm9uWyJQYXRoIl0gPSAie307e30iLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpLCBvcy5lbnZpcm9uWyJQYXRoIl0pCisgICAgICAgICAgICBvcy5lbnZpcm9uWyJQQVRIIl0gPSAie307e30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpLCBvcy5lbnZpcm9uWyJQQVRIIl0pCiAKICAgICAgICAgIyBJc3N1ZSA3ODgwCiAgICAgICAgIGRlZiBnZXQocHl0aG9uKToKQEAgLTI2OSwxMiArMjY4LDE3IEBACiAgICAgICAgICMgdGhlIGdsb2JhbCBzY2hlbWUgbWlycm9ycyB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBwcmVmaXggYW5kCiAgICAgICAgICMgZXhlYy1wcmVmaXggYnV0IG5vdCB0aGUgdXNlciBzY2hlbWUsIHNvIHdlIGhhdmUgdG8gYWRhcHQgdGhlIHBhdGhzCiAgICAgICAgICMgYmVmb3JlIGNvbXBhcmluZyAoaXNzdWUgIzkxMDApCi0gICAgICAgIGFkYXB0ID0gc3lzLnByZWZpeCAhPSBzeXMuZXhlY19wcmVmaXgKKyAgICAgICAgYWRhcHQgPSBzeXMuYmFzZV9wcmVmaXggIT0gc3lzLmJhc2VfZXhlY19wcmVmaXgKICAgICAgICAgZm9yIG5hbWUgaW4gKCdzdGRsaWInLCAncGxhdHN0ZGxpYicsICdwdXJlbGliJywgJ3BsYXRsaWInKToKICAgICAgICAgICAgIGdsb2JhbF9wYXRoID0gZ2V0X3BhdGgobmFtZSwgJ3Bvc2l4X3ByZWZpeCcpCiAgICAgICAgICAgICBpZiBhZGFwdDoKLSAgICAgICAgICAgICAgICBnbG9iYWxfcGF0aCA9IGdsb2JhbF9wYXRoLnJlcGxhY2Uoc3lzLmV4ZWNfcHJlZml4LCBzeXMucHJlZml4KQotICAgICAgICAgICAgICAgIGJhc2UgPSBiYXNlLnJlcGxhY2Uoc3lzLmV4ZWNfcHJlZml4LCBzeXMucHJlZml4KQorICAgICAgICAgICAgICAgIGdsb2JhbF9wYXRoID0gZ2xvYmFsX3BhdGgucmVwbGFjZShzeXMuZXhlY19wcmVmaXgsIHN5cy5iYXNlX3ByZWZpeCkKKyAgICAgICAgICAgICAgICBiYXNlID0gYmFzZS5yZXBsYWNlKHN5cy5leGVjX3ByZWZpeCwgc3lzLmJhc2VfcHJlZml4KQorICAgICAgICAgICAgZWxpZiBzeXMuYmFzZV9wcmVmaXggIT0gc3lzLnByZWZpeDoKKyAgICAgICAgICAgICAgICAjIHZpcnR1YWwgZW52aXJvbm1lbnQ/IExpa2V3aXNlLCB3ZSBoYXZlIHRvIGFkYXB0IHRoZSBwYXRocworICAgICAgICAgICAgICAgICMgYmVmb3JlIGNvbXBhcmluZworICAgICAgICAgICAgICAgIGdsb2JhbF9wYXRoID0gZ2xvYmFsX3BhdGgucmVwbGFjZShzeXMuYmFzZV9wcmVmaXgsIHN5cy5wcmVmaXgpCisgICAgICAgICAgICAgICAgYmFzZSA9IGJhc2UucmVwbGFjZShzeXMuYmFzZV9wcmVmaXgsIHN5cy5wcmVmaXgpCiAgICAgICAgICAgICB1c2VyX3BhdGggPSBnZXRfcGF0aChuYW1lLCAncG9zaXhfdXNlcicpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVzZXJfcGF0aCwgZ2xvYmFsX3BhdGgucmVwbGFjZShiYXNlLCB1c2VyLCAxKSkKIApAQCAtMjkxLDcgKzI5NSw2IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRJbihsZGZsYWdzLCBsZHNoYXJlZCkKIAotCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iLCAidGVzdCBvbmx5IHJlbGV2YW50IG9uIE1hY09TWCIpCiAgICAgZGVmIHRlc3RfcGxhdGZvcm1faW5fc3VicHJvY2VzcyhzZWxmKToKICAgICAgICAgbXlfcGxhdGZvcm0gPSBzeXNjb25maWcuZ2V0X3BsYXRmb3JtKCkKQEAgLTMxNywyOCArMzIwLDU4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15X3BsYXRmb3JtLCB0ZXN0X3BsYXRmb3JtKQogCi0KICAgICAgICAgIyBUZXN0IHdpdGggTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIGluIHRoZSBlbnZpcm9ubWVudCwgYW5kCiAgICAgICAgICMgdXNpbmcgYSB2YWx1ZSB0aGF0IGlzIHVubGlrZWx5IHRvIGJlIHRoZSBkZWZhdWx0IG9uZS4KICAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKICAgICAgICAgZW52WydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9ICcxMC4xJwogCi0gICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFsKLSAgICAgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZSwgJy1jJywKLSAgICAgICAgICAgICAgICAnaW1wb3J0IHN5c2NvbmZpZzsgcHJpbnQoc3lzY29uZmlnLmdldF9wbGF0Zm9ybSgpKScsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgIHN0ZGVycj1vcGVuKCcvZGV2L251bGwnKSwKLSAgICAgICAgICAgIGVudj1lbnYpCi0gICAgICAgIHRlc3RfcGxhdGZvcm0gPSBwLmNvbW11bmljYXRlKClbMF0uc3RyaXAoKQotICAgICAgICB0ZXN0X3BsYXRmb3JtID0gdGVzdF9wbGF0Zm9ybS5kZWNvZGUoJ3V0Zi04JykKLSAgICAgICAgc3RhdHVzID0gcC53YWl0KCkKKyAgICAgICAgd2l0aCBvcGVuKCcvZGV2L251bGwnKSBhcyBkZXZfbnVsbDoKKyAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFsKKyAgICAgICAgICAgICAgICAgICAgc3lzLmV4ZWN1dGFibGUsICctYycsCisgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzY29uZmlnOyBwcmludChzeXNjb25maWcuZ2V0X3BsYXRmb3JtKCkpJywKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgc3RkZXJyPWRldl9udWxsLAorICAgICAgICAgICAgICAgIGVudj1lbnYpCisgICAgICAgICAgICB0ZXN0X3BsYXRmb3JtID0gcC5jb21tdW5pY2F0ZSgpWzBdLnN0cmlwKCkKKyAgICAgICAgICAgIHRlc3RfcGxhdGZvcm0gPSB0ZXN0X3BsYXRmb3JtLmRlY29kZSgndXRmLTgnKQorICAgICAgICAgICAgc3RhdHVzID0gcC53YWl0KCkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteV9wbGF0Zm9ybSwgdGVzdF9wbGF0Zm9ybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteV9wbGF0Zm9ybSwgdGVzdF9wbGF0Zm9ybSkKKworICAgIGRlZiB0ZXN0X3NyY2RpcihzZWxmKToKKyAgICAgICAgIyBTZWUgSXNzdWVzICMxNTMyMiwgIzE1MzY0LgorICAgICAgICBzcmNkaXIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNhYnMoc3JjZGlyKSwgc3JjZGlyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2RpcihzcmNkaXIpLCBzcmNkaXIpCisKKyAgICAgICAgaWYgc3lzY29uZmlnLl9QWVRIT05fQlVJTEQ6CisgICAgICAgICAgICAjIFRoZSBweXRob24gZXhlY3V0YWJsZSBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIHNvIHNyY2RpcgorICAgICAgICAgICAgIyBzaG91bGQgYmUgYSBmdWxsIHNvdXJjZSBjaGVja291dC4KKyAgICAgICAgICAgIFB5dGhvbl9oID0gb3MucGF0aC5qb2luKHNyY2RpciwgJ0luY2x1ZGUnLCAnUHl0aG9uLmgnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKFB5dGhvbl9oKSwgUHl0aG9uX2gpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3lzY29uZmlnLl9pc19weXRob25fc291cmNlX2RpcihzcmNkaXIpKQorICAgICAgICBlbGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5kaXJuYW1lKHN5c2NvbmZpZy5nZXRfbWFrZWZpbGVfZmlsZW5hbWUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY2RpcikKKworICAgIGRlZiB0ZXN0X3NyY2Rpcl9pbmRlcGVuZGVudF9vZl9jd2Qoc2VsZik6CisgICAgICAgICMgc3JjZGlyIHNob3VsZCBiZSBpbmRlcGVuZGVudCBvZiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQorICAgICAgICAjIFNlZSBJc3N1ZXMgIzE1MzIyLCAjMTUzNjQuCisgICAgICAgIHNyY2RpciA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykKKyAgICAgICAgY3dkID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuY2hkaXIoJy4uJykKKyAgICAgICAgICAgIHNyY2RpcjIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaGRpcihjd2QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3JjZGlyLCBzcmNkaXIyKQogCiAKIGNsYXNzIE1ha2VmaWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyksCiAgICAgICAgICAgICAgICAgICAgICAnVGVzdCBpcyBub3QgV2luZG93cyBjb21wYXRpYmxlJykKICAgICBkZWYgdGVzdF9nZXRfbWFrZWZpbGVfZmlsZW5hbWUoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkKaW5kZXggYTUzMTgxZS4uYjIyNGJmMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weQpAQCAtMjEsNiArMjEsMTAgQEAKICAgICBpbXBvcnQgYnoyCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgYnoyID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBsem1hCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgbHptYSA9IE5vbmUKIAogZGVmIG1kNXN1bShkYXRhKToKICAgICByZXR1cm4gbWQ1KGRhdGEpLmhleGRpZ2VzdCgpCkBAIC0yOSw2ICszMyw3IEBACiB0YXJuYW1lID0gc3VwcG9ydC5maW5kZmlsZSgidGVzdHRhci50YXIiKQogZ3ppcG5hbWUgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgInRlc3R0YXIudGFyLmd6IikKIGJ6Mm5hbWUgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgInRlc3R0YXIudGFyLmJ6MiIpCit4em5hbWUgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgInRlc3R0YXIudGFyLnh6IikKIHRtcG5hbWUgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgInRtcC50YXIiKQogCiBtZDVfcmVndHlwZSA9ICI2NWY0NzdjODE4YWQ5ZTE1ZjdmZWFiMGM2ZDM3NzQyZiIKQEAgLTUxLDEzICs1NiwxMCBAQAogCiAgICAgZGVmIHRlc3RfZmlsZW9ial9yZWd1bGFyX2ZpbGUoc2VsZik6CiAgICAgICAgIHRhcmluZm8gPSBzZWxmLnRhci5nZXRtZW1iZXIoInVzdGFyL3JlZ3R5cGUiKQotICAgICAgICBmb2JqID0gc2VsZi50YXIuZXh0cmFjdGZpbGUodGFyaW5mbykKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pIGFzIGZvYmo6CiAgICAgICAgICAgICBkYXRhID0gZm9iai5yZWFkKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgobGVuKGRhdGEpLCBtZDVzdW0oZGF0YSkpID09ICh0YXJpbmZvLnNpemUsIG1kNV9yZWd0eXBlKSwKICAgICAgICAgICAgICAgICAgICAgInJlZ3VsYXIgZmlsZSBleHRyYWN0aW9uIGZhaWxlZCIpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmb2JqLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2ZpbGVvYmpfcmVhZGxpbmVzKHNlbGYpOgogICAgICAgICBzZWxmLnRhci5leHRyYWN0KCJ1c3Rhci9yZWd0eXBlIiwgVEVNUERJUikKQEAgLTY1LDggKzY3LDcgQEAKICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihURU1QRElSLCAidXN0YXIvcmVndHlwZSIpLCAiciIpIGFzIGZvYmoxOgogICAgICAgICAgICAgbGluZXMxID0gZm9iajEucmVhZGxpbmVzKCkKIAotICAgICAgICBmb2JqID0gc2VsZi50YXIuZXh0cmFjdGZpbGUodGFyaW5mbykKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pIGFzIGZvYmo6CiAgICAgICAgICAgICBmb2JqMiA9IGlvLlRleHRJT1dyYXBwZXIoZm9iaikKICAgICAgICAgICAgIGxpbmVzMiA9IGZvYmoyLnJlYWRsaW5lcygpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXMxID09IGxpbmVzMiwKQEAgLTc2LDIxICs3NywxNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVzMls4M10gPT0KICAgICAgICAgICAgICAgICAgICAgIkkgd2lsbCBnbGFkbHkgYWRtaXQgdGhhdCBQeXRob24gaXMgbm90IHRoZSBmYXN0ZXN0IHJ1bm5pbmcgc2NyaXB0aW5nIGxhbmd1YWdlLlxuIiwKICAgICAgICAgICAgICAgICAgICAgImZpbGVvYmoucmVhZGxpbmVzKCkgZmFpbGVkIikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGZvYmouY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfZmlsZW9ial9pdGVyKHNlbGYpOgogICAgICAgICBzZWxmLnRhci5leHRyYWN0KCJ1c3Rhci9yZWd0eXBlIiwgVEVNUERJUikKICAgICAgICAgdGFyaW5mbyA9IHNlbGYudGFyLmdldG1lbWJlcigidXN0YXIvcmVndHlwZSIpCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oVEVNUERJUiwgInVzdGFyL3JlZ3R5cGUiKSwgInJVIikgYXMgZm9iajE6CisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oVEVNUERJUiwgInVzdGFyL3JlZ3R5cGUiKSwgInIiKSBhcyBmb2JqMToKICAgICAgICAgICAgIGxpbmVzMSA9IGZvYmoxLnJlYWRsaW5lcygpCi0gICAgICAgIGZvYmoyID0gc2VsZi50YXIuZXh0cmFjdGZpbGUodGFyaW5mbykKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pIGFzIGZvYmoyOgogICAgICAgICAgICAgbGluZXMyID0gbGlzdChpby5UZXh0SU9XcmFwcGVyKGZvYmoyKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lczEgPT0gbGluZXMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlb2JqLl9faXRlcl9fKCkgZmFpbGVkIikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGZvYmoyLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2ZpbGVvYmpfc2VlayhzZWxmKToKICAgICAgICAgc2VsZi50YXIuZXh0cmFjdCgidXN0YXIvcmVndHlwZSIsIFRFTVBESVIpCkBAIC0xNDIsMTcgKzEzOCwyNCBAQAogICAgICAgICAgICAgICAgICAgICAgInJlYWQoKSBhZnRlciByZWFkbGluZSgpIGZhaWxlZCIpCiAgICAgICAgIGZvYmouY2xvc2UoKQogCisgICAgZGVmIHRlc3RfZmlsZW9ial90ZXh0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKCJ1c3Rhci9yZWd0eXBlIikgYXMgZm9iajoKKyAgICAgICAgICAgIGZvYmogPSBpby5UZXh0SU9XcmFwcGVyKGZvYmopCisgICAgICAgICAgICBkYXRhID0gZm9iai5yZWFkKCkuZW5jb2RlKCJpc284ODU5LTEiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZDVzdW0oZGF0YSksIG1kNV9yZWd0eXBlKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvYmouc2VlaygxMDApCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgIyBJc3N1ZSAjMTM4MTU6IHNlZWsoKSBjb21wbGFpbmVkIGFib3V0IGEgbWlzc2luZworICAgICAgICAgICAgICAgICMgZmx1c2goKSBtZXRob2QuCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJzZWVraW5nIGZhaWxlZCBpbiB0ZXh0IG1vZGUiKQorCiAgICAgIyBUZXN0IGlmIHN5bWJvbGljIGFuZCBoYXJkIGxpbmtzIGFyZSByZXNvbHZlZCBieSBleHRyYWN0ZmlsZSgpLiAgVGhlCiAgICAgIyB0ZXN0IGxpbmsgbWVtYmVycyBlYWNoIHBvaW50IHRvIGEgcmVndWxhciBtZW1iZXIgd2hvc2UgZGF0YSBpcwogICAgICMgc3VwcG9zZWQgdG8gYmUgZXhwb3J0ZWQuCiAgICAgZGVmIF90ZXN0X2ZpbGVvYmpfbGluayhzZWxmLCBsbmt0eXBlLCByZWd0eXBlKToKLSAgICAgICAgYSA9IHNlbGYudGFyLmV4dHJhY3RmaWxlKGxua3R5cGUpCi0gICAgICAgIGIgPSBzZWxmLnRhci5leHRyYWN0ZmlsZShyZWd0eXBlKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi50YXIuZXh0cmFjdGZpbGUobG5rdHlwZSkgYXMgYSwgc2VsZi50YXIuZXh0cmFjdGZpbGUocmVndHlwZSkgYXMgYjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5uYW1lLCBiLm5hbWUpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBhLmNsb3NlKCkKLSAgICAgICAgICAgIGIuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfZmlsZW9ial9saW5rMShzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9maWxlb2JqX2xpbmsoInVzdGFyL2xua3R5cGUiLCAidXN0YXIvcmVndHlwZSIpCkBAIC0yMDQsMTMgKzIwNywxNSBAQAogICAgICAgICAgICAgX29wZW4gPSBnemlwLkd6aXBGaWxlCiAgICAgICAgIGVsaWYgc2VsZi5tb2RlLmVuZHN3aXRoKCI6YnoyIik6CiAgICAgICAgICAgICBfb3BlbiA9IGJ6Mi5CWjJGaWxlCisgICAgICAgIGVsaWYgc2VsZi5tb2RlLmVuZHN3aXRoKCI6eHoiKToKKyAgICAgICAgICAgIF9vcGVuID0gbHptYS5MWk1BRmlsZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgX29wZW4gPSBvcGVuCisgICAgICAgICAgICBfb3BlbiA9IGlvLkZpbGVJTwogCiAgICAgICAgIGZvciBjaGFyIGluIChiJ1wwJywgYidhJyk6CiAgICAgICAgICAgICAjIFRlc3QgaWYgRU9GSGVhZGVyRXJyb3IgKCdcMCcpIGFuZCBJbnZhbGlkSGVhZGVyRXJyb3IgKCdhJykKICAgICAgICAgICAgICMgYXJlIGlnbm9yZWQgY29ycmVjdGx5LgotICAgICAgICAgICAgd2l0aCBfb3Blbih0bXBuYW1lLCAid2IiKSBhcyBmb2JqOgorICAgICAgICAgICAgd2l0aCBfb3Blbih0bXBuYW1lLCAidyIpIGFzIGZvYmo6CiAgICAgICAgICAgICAgICAgZm9iai53cml0ZShjaGFyICogMTAyNCkKICAgICAgICAgICAgICAgICBmb2JqLndyaXRlKHRhcmZpbGUuVGFySW5mbygiZm9vIikudG9idWYoKSkKIApAQCAtMjI1LDYgKzIzMCwxMCBAQAogY2xhc3MgTWlzY1JlYWRUZXN0KENvbW1vblJlYWRUZXN0KToKIAogICAgIGRlZiB0ZXN0X25vX25hbWVfYXJndW1lbnQoc2VsZik6CisgICAgICAgIGlmIHNlbGYubW9kZS5lbmRzd2l0aCgoImJ6MiIsICJ4eiIpKToKKyAgICAgICAgICAgICMgQloyRmlsZSBhbmQgTFpNQUZpbGUgaGF2ZSBubyBuYW1lIGF0dHJpYnV0ZS4KKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5vIG5hbWUgYXR0cmlidXRlIikKKwogICAgICAgICB3aXRoIG9wZW4oc2VsZi50YXJuYW1lLCAicmIiKSBhcyBmb2JqOgogICAgICAgICAgICAgdGFyID0gdGFyZmlsZS5vcGVuKGZpbGVvYmo9Zm9iaiwgbW9kZT1zZWxmLm1vZGUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRhci5uYW1lLCBvcy5wYXRoLmFic3BhdGgoZm9iai5uYW1lKSkKQEAgLTI1NCw5ICsyNjMsOCBAQAogICAgICAgICAgICAgdCA9IHRhci5uZXh0KCkKICAgICAgICAgICAgIG5hbWUgPSB0Lm5hbWUKICAgICAgICAgICAgIG9mZnNldCA9IHQub2Zmc2V0Ci0gICAgICAgICAgICBmID0gdGFyLmV4dHJhY3RmaWxlKHQpCi0gICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgd2l0aCB0YXIuZXh0cmFjdGZpbGUodCkgYXMgZjoKKyAgICAgICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHRhci5jbG9zZSgpCiAKQEAgLTI2NSwxMCArMjczLDEyIEBACiAgICAgICAgICAgICBfb3BlbiA9IGd6aXAuR3ppcEZpbGUKICAgICAgICAgZWxpZiBzZWxmLm1vZGUuZW5kc3dpdGgoIjpiejIiKToKICAgICAgICAgICAgIF9vcGVuID0gYnoyLkJaMkZpbGUKKyAgICAgICAgZWxpZiBzZWxmLm1vZGUuZW5kc3dpdGgoIjp4eiIpOgorICAgICAgICAgICAgX29wZW4gPSBsem1hLkxaTUFGaWxlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBfb3BlbiA9IG9wZW4KLSAgICAgICAgZm9iaiA9IF9vcGVuKHNlbGYudGFybmFtZSwgInJiIikKLSAgICAgICAgdHJ5OgorICAgICAgICAgICAgX29wZW4gPSBpby5GaWxlSU8KKworICAgICAgICB3aXRoIF9vcGVuKHNlbGYudGFybmFtZSkgYXMgZm9iajoKICAgICAgICAgICAgIGZvYmouc2VlayhvZmZzZXQpCiAKICAgICAgICAgICAgICMgVGVzdCBpZiB0aGUgdGFyZmlsZSBzdGFydHMgd2l0aCB0aGUgc2Vjb25kIG1lbWJlci4KQEAgLTI4MSw4ICsyOTEsNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YXIuZXh0cmFjdGZpbGUodCkucmVhZCgpLCBkYXRhLAogICAgICAgICAgICAgICAgICAgICAic2VlayBiYWNrIGRpZCBub3Qgd29yayIpCiAgICAgICAgICAgICB0YXIuY2xvc2UoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZm9iai5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9mYWlsX2NvbXAoc2VsZik6CiAgICAgICAgICMgRm9yIEd6aXAgYW5kIEJ6MiBUZXN0czogZmFpbCB3aXRoIGEgUmVhZEVycm9yIG9uIGFuIHVuY29tcHJlc3NlZCBmaWxlLgpAQCAtNDE4LDI3ICs0MjYsMjYgQEAKICAgICAgICAgZm9yIHRhcmluZm8gaW4gc2VsZi50YXI6CiAgICAgICAgICAgICBpZiBub3QgdGFyaW5mby5pc3JlZygpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBmb2JqID0gc2VsZi50YXIuZXh0cmFjdGZpbGUodGFyaW5mbykKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBidWYgPSBmb2JqLnJlYWQoNTEyKQotICAgICAgICAgICAgICAgIGV4Y2VwdCB0YXJmaWxlLlN0cmVhbUVycm9yOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoInNpbXBsZSByZWFkLXRocm91Z2ggdXNpbmcgVGFyRmlsZS5leHRyYWN0ZmlsZSgpIGZhaWxlZCIpCi0gICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGZvYmouY2xvc2UoKQorICAgICAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvKSBhcyBmb2JqOgorICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiA9IGZvYmoucmVhZCg1MTIpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCB0YXJmaWxlLlN0cmVhbUVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJzaW1wbGUgcmVhZC10aHJvdWdoIHVzaW5nIFRhckZpbGUuZXh0cmFjdGZpbGUoKSBmYWlsZWQiKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgYnVmOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgIGRlZiB0ZXN0X2ZpbGVvYmpfcmVndWxhcl9maWxlKHNlbGYpOgogICAgICAgICB0YXJpbmZvID0gc2VsZi50YXIubmV4dCgpICMgZ2V0ICJyZWd0eXBlIiAoY2FuJ3QgdXNlIGdldG1lbWJlcikKLSAgICAgICAgZm9iaiA9IHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pCi0gICAgICAgIGRhdGEgPSBmb2JqLnJlYWQoKQorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pIGFzIGZvYmo6CisgICAgICAgICAgICBkYXRhID0gZm9iai5yZWFkKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKChsZW4oZGF0YSksIG1kNXN1bShkYXRhKSkgPT0gKHRhcmluZm8uc2l6ZSwgbWQ1X3JlZ3R5cGUpLAogICAgICAgICAgICAgICAgICJyZWd1bGFyIGZpbGUgZXh0cmFjdGlvbiBmYWlsZWQiKQogCiAgICAgZGVmIHRlc3RfcHJvdm9rZV9zdHJlYW1fZXJyb3Ioc2VsZik6CiAgICAgICAgIHRhcmluZm9zID0gc2VsZi50YXIuZ2V0bWVtYmVycygpCi0gICAgICAgIGYgPSBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvc1swXSkgIyByZWFkIHRoZSBmaXJzdCBtZW1iZXIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGFyZmlsZS5TdHJlYW1FcnJvciwgZi5yZWFkKQorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm9zWzBdKSBhcyBmOiAjIHJlYWQgdGhlIGZpcnN0IG1lbWJlcgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGFyZmlsZS5TdHJlYW1FcnJvciwgZi5yZWFkKQogCiAgICAgZGVmIHRlc3RfY29tcGFyZV9tZW1iZXJzKHNlbGYpOgogICAgICAgICB0YXIxID0gdGFyZmlsZS5vcGVuKHRhcm5hbWUsIGVuY29kaW5nPSJpc284ODU5LTEiKQpAQCAtNTE2LDYgKzUyMywxOCBAQAogICAgICAgICAgICAgdGVzdGZ1bmMoYnoybmFtZSwgInJ8KiIpCiAgICAgICAgICAgICB0ZXN0ZnVuYyhiejJuYW1lLCAicnxiejIiKQogCisgICAgICAgIGlmIGx6bWE6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh0YXJmaWxlLlJlYWRFcnJvciwgdGFyZmlsZS5vcGVuLCB0YXJuYW1lLCBtb2RlPSJyOnh6IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRhcmZpbGUuUmVhZEVycm9yLCB0YXJmaWxlLm9wZW4sIHRhcm5hbWUsIG1vZGU9InJ8eHoiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGFyZmlsZS5SZWFkRXJyb3IsIHRhcmZpbGUub3BlbiwgeHpuYW1lLCBtb2RlPSJyOiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh0YXJmaWxlLlJlYWRFcnJvciwgdGFyZmlsZS5vcGVuLCB4em5hbWUsIG1vZGU9InJ8IikKKworICAgICAgICAgICAgdGVzdGZ1bmMoeHpuYW1lLCAiciIpCisgICAgICAgICAgICB0ZXN0ZnVuYyh4em5hbWUsICJyOioiKQorICAgICAgICAgICAgdGVzdGZ1bmMoeHpuYW1lLCAicjp4eiIpCisgICAgICAgICAgICB0ZXN0ZnVuYyh4em5hbWUsICJyfCoiKQorICAgICAgICAgICAgdGVzdGZ1bmMoeHpuYW1lLCAicnx4eiIpCisKICAgICBkZWYgdGVzdF9kZXRlY3RfZmlsZShzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9tb2RlcyhzZWxmLl90ZXN0ZnVuY19maWxlKQogCkBAIC03MTMsNyArNzMyLDcgQEAKICAgICAgICAgIyBSZXR1cm4gVHJ1ZSBpZiB0aGUgcGxhdGZvcm0ga25vd3MgdGhlIHN0X2Jsb2NrcyBzdGF0IGF0dHJpYnV0ZSBhbmQKICAgICAgICAgIyB1c2VzIHN0X2Jsb2NrcyB1bml0cyBvZiA1MTIgYnl0ZXMsIGFuZCBpZiB0aGUgZmlsZXN5c3RlbSBpcyBhYmxlIHRvCiAgICAgICAgICMgc3RvcmUgaG9sZXMgaW4gZmlsZXMuCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAibGludXgyIjoKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoImxpbnV4Iik6CiAgICAgICAgICAgICAjIExpbnV4IGV2aWRlbnRpYWxseSBoYXMgNTEyIGJ5dGUgc3RfYmxvY2tzIHVuaXRzLgogICAgICAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihURU1QRElSLCAic3BhcnNlLXRlc3QiKQogICAgICAgICAgICAgd2l0aCBvcGVuKG5hbWUsICJ3YiIpIGFzIGZvYmo6CkBAIC05MDMsNyArOTIyLDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZm9yIG5hbWUgaW4gKCJmb28iLCAiYmFyIiwgImJheiIpOgogICAgICAgICAgICAgICAgIG5hbWUgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgbmFtZSkKLSAgICAgICAgICAgICAgICBvcGVuKG5hbWUsICJ3YiIpLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKG5hbWUpCiAKICAgICAgICAgICAgIGV4Y2x1ZGUgPSBvcy5wYXRoLmlzZmlsZQogCkBAIC05MzAsNyArOTQ5LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZm9yIG5hbWUgaW4gKCJmb28iLCAiYmFyIiwgImJheiIpOgogICAgICAgICAgICAgICAgIG5hbWUgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgbmFtZSkKLSAgICAgICAgICAgICAgICBvcGVuKG5hbWUsICJ3YiIpLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKG5hbWUpCiAKICAgICAgICAgICAgIGRlZiBmaWx0ZXIodGFyaW5mbyk6CiAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZSh0YXJpbmZvLm5hbWUpID09ICJiYXIiOgpAQCAtOTY5LDcgKzk4OCw3IEBACiAgICAgICAgICMgYW5kIGNvbXBhcmUgdGhlIHN0b3JlZCBuYW1lIHdpdGggdGhlIG9yaWdpbmFsLgogICAgICAgICBmb28gPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgImZvbyIpCiAgICAgICAgIGlmIG5vdCBkaXI6Ci0gICAgICAgICAgICBvcGVuKGZvbywgInciKS5jbG9zZSgpCisgICAgICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKGZvbykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG9zLm1rZGlyKGZvbykKIApAQCAtMTA4Niw2ICsxMTA1LDkgQEAKICAgICAgICAgICAgIGRhdGEgPSBkZWMuZGVjb21wcmVzcyhkYXRhKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihkZWMudW51c2VkX2RhdGEpID09IDAsCiAgICAgICAgICAgICAgICAgICAgICJmb3VuZCB0cmFpbGluZyBkYXRhIikKKyAgICAgICAgZWxpZiBzZWxmLm1vZGUuZW5kc3dpdGgoInh6Iik6CisgICAgICAgICAgICB3aXRoIGx6bWEuTFpNQUZpbGUodG1wbmFtZSkgYXMgZm9iajoKKyAgICAgICAgICAgICAgICBkYXRhID0gZm9iai5yZWFkKCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHdpdGggb3Blbih0bXBuYW1lLCAicmIiKSBhcyBmb2JqOgogICAgICAgICAgICAgICAgIGRhdGEgPSBmb2JqLnJlYWQoKQpAQCAtMTMyOSw3ICsxMzUxLDcgQEAKICAgICAgICAgc2VsZi5fdGVzdF91bmljb2RlX2ZpbGVuYW1lKCJ1dGY3IikKIAogICAgIGRlZiB0ZXN0X3V0ZjhfZmlsZW5hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuX3Rlc3RfdW5pY29kZV9maWxlbmFtZSgidXRmOCIpCisgICAgICAgIHNlbGYuX3Rlc3RfdW5pY29kZV9maWxlbmFtZSgidXRmLTgiKQogCiAgICAgZGVmIF90ZXN0X3VuaWNvZGVfZmlsZW5hbWUoc2VsZiwgZW5jb2RpbmcpOgogICAgICAgICB0YXIgPSB0YXJmaWxlLm9wZW4odG1wbmFtZSwgInciLCBmb3JtYXQ9c2VsZi5mb3JtYXQsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9InN0cmljdCIpCkBAIC0xNDA4LDcgKzE0MzAsNyBAQAogICAgIGRlZiB0ZXN0X2JhZF9wYXhfaGVhZGVyKHNlbGYpOgogICAgICAgICAjIFRlc3QgZm9yIGlzc3VlICM4NjMzLiBHTlUgdGFyIDw9IDEuMjMgY3JlYXRlcyByYXcgYmluYXJ5IGZpZWxkcwogICAgICAgICAjIHdpdGhvdXQgYSBoZHJjaGFyc2V0PUJJTkFSWSBoZWFkZXIuCi0gICAgICAgIGZvciBlbmNvZGluZywgbmFtZSBpbiAoKCJ1dGY4IiwgInBheC9iYWQtcGF4LVx1ZGNlNFx1ZGNmNlx1ZGNmYyIpLAorICAgICAgICBmb3IgZW5jb2RpbmcsIG5hbWUgaW4gKCgidXRmLTgiLCAicGF4L2JhZC1wYXgtXHVkY2U0XHVkY2Y2XHVkY2ZjIiksCiAgICAgICAgICAgICAgICAgKCJpc284ODU5LTEiLCAicGF4L2JhZC1wYXgtXHhlNFx4ZjZceGZjIiksKToKICAgICAgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHRhcm5hbWUsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9InN1cnJvZ2F0ZWVzY2FwZSIpIGFzIHRhcjoKICAgICAgICAgICAgICAgICB0cnk6CkBAIC0xNDIzLDcgKzE0NDUsNyBAQAogCiAgICAgZGVmIHRlc3RfYmluYXJ5X2hlYWRlcihzZWxmKToKICAgICAgICAgIyBUZXN0IGEgUE9TSVguMS0yMDA4IGNvbXBhdGlibGUgaGVhZGVyIHdpdGggYSBoZHJjaGFyc2V0PUJJTkFSWSBmaWVsZC4KLSAgICAgICAgZm9yIGVuY29kaW5nLCBuYW1lIGluICgoInV0ZjgiLCAicGF4L2hkcmNoYXJzZXQtXHVkY2U0XHVkY2Y2XHVkY2ZjIiksCisgICAgICAgIGZvciBlbmNvZGluZywgbmFtZSBpbiAoKCJ1dGYtOCIsICJwYXgvaGRyY2hhcnNldC1cdWRjZTRcdWRjZjZcdWRjZmMiKSwKICAgICAgICAgICAgICAgICAoImlzbzg4NTktMSIsICJwYXgvaGRyY2hhcnNldC1ceGU0XHhmNlx4ZmMiKSwpOgogICAgICAgICAgICAgd2l0aCB0YXJmaWxlLm9wZW4odGFybmFtZSwgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIikgYXMgdGFyOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTE0NDgsMTIgKzE0NzAsOSBAQAogICAgICAgICB3aXRoIHRhcmZpbGUub3Blbih0YXJuYW1lLCBlbmNvZGluZz0iaXNvODg1OS0xIikgYXMgc3JjOgogICAgICAgICAgICAgdCA9IHNyYy5nZXRtZW1iZXIoInVzdGFyL3JlZ3R5cGUiKQogICAgICAgICAgICAgdC5uYW1lID0gImZvbyIKLSAgICAgICAgICAgIGYgPSBzcmMuZXh0cmFjdGZpbGUodCkKLSAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc3JjLmV4dHJhY3RmaWxlKHQpIGFzIGY6CiAgICAgICAgICAgICAgICAgd2l0aCB0YXJmaWxlLm9wZW4oc2VsZi50YXJuYW1lLCBtb2RlKSBhcyB0YXI6CiAgICAgICAgICAgICAgICAgICAgIHRhci5hZGRmaWxlKHQsIGYpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIF90ZXN0KHNlbGYsIG5hbWVzPVsiYmFyIl0sIGZpbGVvYmo9Tm9uZSk6CiAgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHNlbGYudGFybmFtZSwgZmlsZW9iaj1maWxlb2JqKSBhcyB0YXI6CkBAIC0xNTAwLDYgKzE1MTksMTIgQEAKICAgICAgICAgc2VsZi5fY3JlYXRlX3Rlc3R0YXIoInc6YnoyIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGFyZmlsZS5SZWFkRXJyb3IsIHRhcmZpbGUub3BlbiwgdG1wbmFtZSwgImEiKQogCisgICAgZGVmIHRlc3RfYXBwZW5kX2x6bWEoc2VsZik6CisgICAgICAgIGlmIGx6bWEgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImx6bWEgbW9kdWxlIG5vdCBhdmFpbGFibGUiKQorICAgICAgICBzZWxmLl9jcmVhdGVfdGVzdHRhcigidzp4eiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRhcmZpbGUuUmVhZEVycm9yLCB0YXJmaWxlLm9wZW4sIHRtcG5hbWUsICJhIikKKwogICAgICMgQXBwZW5kIG1vZGUgaXMgc3VwcG9zZWQgdG8gZmFpbCBpZiB0aGUgdGFyZmlsZSB0byBhcHBlbmQgdG8KICAgICAjIGRvZXMgbm90IGVuZCB3aXRoIGEgemVybyBibG9jay4KICAgICBkZWYgX3Rlc3RfZXJyb3Ioc2VsZiwgZGF0YSk6CkBAIC0xNzc4LDYgKzE4MDMsMjEgQEAKICAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX2lucHV0KCJyOmJ6MiIpCiAKIAorY2xhc3MgTHptYU1pc2NSZWFkVGVzdChNaXNjUmVhZFRlc3QpOgorICAgIHRhcm5hbWUgPSB4em5hbWUKKyAgICBtb2RlID0gInI6eHoiCitjbGFzcyBMem1hVXN0YXJSZWFkVGVzdChVc3RhclJlYWRUZXN0KToKKyAgICB0YXJuYW1lID0geHpuYW1lCisgICAgbW9kZSA9ICJyOnh6IgorY2xhc3MgTHptYVN0cmVhbVJlYWRUZXN0KFN0cmVhbVJlYWRUZXN0KToKKyAgICB0YXJuYW1lID0geHpuYW1lCisgICAgbW9kZSA9ICJyfHh6IgorY2xhc3MgTHptYVdyaXRlVGVzdChXcml0ZVRlc3QpOgorICAgIG1vZGUgPSAidzp4eiIKK2NsYXNzIEx6bWFTdHJlYW1Xcml0ZVRlc3QoU3RyZWFtV3JpdGVUZXN0KToKKyAgICBtb2RlID0gInd8eHoiCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQudW5saW5rKFRFTVBESVIpCiAgICAgb3MubWFrZWRpcnMoVEVNUERJUikKQEAgLTE4NDAsNiArMTg4MCwyMCBAQAogICAgICAgICAgICAgQnoyUGFydGlhbFJlYWRUZXN0LAogICAgICAgICBdCiAKKyAgICBpZiBsem1hOgorICAgICAgICAjIENyZWF0ZSB0ZXN0dGFyLnRhci54eiBhbmQgYWRkIGx6bWEtc3BlY2lmaWMgdGVzdHMuCisgICAgICAgIHN1cHBvcnQudW5saW5rKHh6bmFtZSkKKyAgICAgICAgd2l0aCBsem1hLkxaTUFGaWxlKHh6bmFtZSwgInciKSBhcyB0YXI6CisgICAgICAgICAgICB0YXIud3JpdGUoZGF0YSkKKworICAgICAgICB0ZXN0cyArPSBbCisgICAgICAgICAgICBMem1hTWlzY1JlYWRUZXN0LAorICAgICAgICAgICAgTHptYVVzdGFyUmVhZFRlc3QsCisgICAgICAgICAgICBMem1hU3RyZWFtUmVhZFRlc3QsCisgICAgICAgICAgICBMem1hV3JpdGVUZXN0LAorICAgICAgICAgICAgTHptYVN0cmVhbVdyaXRlVGVzdCwKKyAgICAgICAgXQorCiAgICAgdHJ5OgogICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdHMpCiAgICAgZmluYWxseToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKaW5kZXggOTVlZWJmMy4uMTFlOTVlNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKQEAgLTM2LDYgKzM2LDcgQEAKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2VsZi50aHJlYWQuam9pbigpCisgICAgICAgIGRlbCBzZWxmLnRocmVhZCAgIyBDbGVhciBvdXQgYW55IGRhbmdsaW5nIFRocmVhZCBvYmplY3RzLgogCiAgICAgZGVmIHRlc3RCYXNpYyhzZWxmKToKICAgICAgICAgIyBjb25uZWN0cwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90ZW1wZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfdGVtcGZpbGUucHkKaW5kZXggY2Y4YjM1YS4uMjk2MjkzOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90ZW1wZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RlbXBmaWxlLnB5CkBAIC0yMyw3ICsyMyw3IEBACiAKICMgVEVTVF9GSUxFUyBtYXkgbmVlZCB0byBiZSB0d2Vha2VkIGZvciBzeXN0ZW1zIGRlcGVuZGluZyBvbiB0aGUgbWF4aW11bQogIyBudW1iZXIgb2YgZmlsZXMgdGhhdCBjYW4gYmUgb3BlbmVkIGF0IG9uZSB0aW1lIChzZWUgdWxpbWl0IC1uKQotaWYgc3lzLnBsYXRmb3JtIGluICgnb3BlbmJzZDMnLCAnb3BlbmJzZDQnKToKK2lmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdvcGVuYnNkJyk6CiAgICAgVEVTVF9GSUxFUyA9IDQ4CiBlbHNlOgogICAgIFRFU1RfRklMRVMgPSAxMDAKQEAgLTMzLDcgKzMzLDcgQEAKICMgdGhyZWFkcyBpcyBub3QgZG9uZSBoZXJlLgogCiAjIENvbW1vbiBmdW5jdGlvbmFsaXR5LgotY2xhc3MgVEModW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgQmFzZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIHN0cl9jaGVjayA9IHJlLmNvbXBpbGUociJbYS16QS1aMC05Xy1dezZ9JCIpCiAKQEAgLTQ3LDExICs0Nyw2IEBACiAgICAgICAgIHNlbGYuX3dhcm5pbmdzX21hbmFnZXIuX19leGl0X18oTm9uZSwgTm9uZSwgTm9uZSkKIAogCi0gICAgZGVmIGZhaWxPbkV4Y2VwdGlvbihzZWxmLCB3aGF0LCBlaT1Ob25lKToKLSAgICAgICAgaWYgZWkgaXMgTm9uZToKLSAgICAgICAgICAgIGVpID0gc3lzLmV4Y19pbmZvKCkKLSAgICAgICAgc2VsZi5mYWlsKCIlcyByYWlzZWQgJXM6ICVzIiAlICh3aGF0LCBlaVswXSwgZWlbMV0pKQotCiAgICAgZGVmIG5hbWVDaGVjayhzZWxmLCBuYW1lLCBkaXIsIHByZSwgc3VmKToKICAgICAgICAgKG5kaXIsIG5iYXNlKSA9IG9zLnBhdGguc3BsaXQobmFtZSkKICAgICAgICAgbnByZSAgPSBuYmFzZVs6bGVuKHByZSldCkBAIC03MCw5ICs2NSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAicmFuZG9tIHN0cmluZyAnJXMnIGRvZXMgbm90IG1hdGNoIC9eW2EtekEtWjAtOV8tXXs2fSQvIgogICAgICAgICAgICAgICAgICAgICAgJSBuYmFzZSkKIAotdGVzdF9jbGFzc2VzID0gW10KIAotY2xhc3MgdGVzdF9leHBvcnRzKFRDKToKK2NsYXNzIFRlc3RFeHBvcnRzKEJhc2VUZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZXhwb3J0cyhzZWxmKToKICAgICAgICAgIyBUaGVyZSBhcmUgbm8gc3VycHJpc2luZyBzeW1ib2xzIGluIHRoZSB0ZW1wZmlsZSBtb2R1bGUKICAgICAgICAgZGljdCA9IHRlbXBmaWxlLl9fZGljdF9fCkBAIC05OSwxMCArOTMsOCBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHVuZXhwKSA9PSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQga2V5czogJXMiICUgdW5leHApCiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9leHBvcnRzKQogCi0KLWNsYXNzIHRlc3RfX1JhbmRvbU5hbWVTZXF1ZW5jZShUQyk6CitjbGFzcyBUZXN0UmFuZG9tTmFtZVNlcXVlbmNlKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB0aGUgaW50ZXJuYWwgaXRlcmF0b3Igb2JqZWN0IF9SYW5kb21OYW1lU2VxdWVuY2UuIiIiCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC0xMzAsMTMgKzEyMiwxMCBAQAogCiAgICAgICAgIGkgPSAwCiAgICAgICAgIHIgPSBzZWxmLnIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIHMgaW4gcjoKLSAgICAgICAgICAgICAgICBpICs9IDEKLSAgICAgICAgICAgICAgICBpZiBpID09IDIwOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiaXRlcmF0aW9uIikKKyAgICAgICAgZm9yIHMgaW4gcjoKKyAgICAgICAgICAgIGkgKz0gMQorICAgICAgICAgICAgaWYgaSA9PSAyMDoKKyAgICAgICAgICAgICAgICBicmVhawogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2ZvcmsnKSwKICAgICAgICAgIm9zLmZvcmsgaXMgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdCIpCkBAIC0xNjksMTAgKzE1OCw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY2hpbGRfdmFsdWUsIHBhcmVudF92YWx1ZSkKIAogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfX1JhbmRvbU5hbWVTZXF1ZW5jZSkKIAotCi1jbGFzcyB0ZXN0X19jYW5kaWRhdGVfdGVtcGRpcl9saXN0KFRDKToKK2NsYXNzIFRlc3RDYW5kaWRhdGVUZW1wZGlyTGlzdChCYXNlVGVzdENhc2UpOgogICAgICIiIlRlc3QgdGhlIGludGVybmFsIGZ1bmN0aW9uIF9jYW5kaWRhdGVfdGVtcGRpcl9saXN0LiIiIgogCiAgICAgZGVmIHRlc3Rfbm9uZW1wdHlfbGlzdChzZWxmKToKQEAgLTIxMSwxMSArMTk4LDEwIEBACiAgICAgICAgICAgICAjIE5vdCBwcmFjdGljYWwgdG8gdHJ5IHRvIHZlcmlmeSB0aGUgcHJlc2VuY2Ugb2YgT1Mtc3BlY2lmaWMKICAgICAgICAgICAgICMgcGF0aHMgaW4gdGhpcyBsaXN0LgogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfX2NhbmRpZGF0ZV90ZW1wZGlyX2xpc3QpCiAKICMgV2UgdGVzdCBfZ2V0X2RlZmF1bHRfdGVtcGRpciBzb21lIG1vcmUgYnkgdGVzdGluZyBnZXR0ZW1wZGlyLgogCi1jbGFzcyBUZXN0R2V0RGVmYXVsdFRlbXBkaXIoVEMpOgorY2xhc3MgVGVzdEdldERlZmF1bHRUZW1wZGlyKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBfZ2V0X2RlZmF1bHRfdGVtcGRpcigpLiIiIgogCiAgICAgZGVmIHRlc3Rfbm9fZmlsZXNfbGVmdF9iZWhpbmQoc2VsZik6CkBAIC0yMzIsMTMgKzIxOCwxMiBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MubGlzdGRpcihvdXJfdGVtcF9kaXJlY3RvcnkpLCBbXSkKIAogICAgICAgICAgICAgICAgIGRlZiByYWlzZV9PU0Vycm9yKCphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoLTEpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoKQogCiAgICAgICAgICAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfYXR0cihpbywgIm9wZW4iLCByYWlzZV9PU0Vycm9yKToKICAgICAgICAgICAgICAgICAgICAgIyB0ZXN0IGFnYWluIHdpdGggZmFpbGluZyBpby5vcGVuKCkKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvcik6CiAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wZmlsZS5fZ2V0X2RlZmF1bHRfdGVtcGRpcigpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmFyZ3NbMF0sIGVycm5vLkVOT0VOVCkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5saXN0ZGlyKG91cl90ZW1wX2RpcmVjdG9yeSksIFtdKQogCiAgICAgICAgICAgICAgICAgb3BlbiA9IGlvLm9wZW4KQEAgLTI0OSwxNSArMjM0LDEyIEBACiAKICAgICAgICAgICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKGlvLCAib3BlbiIsIGJhZF93cml0ZXIpOgogICAgICAgICAgICAgICAgICAgICAjIHRlc3QgYWdhaW4gd2l0aCBmYWlsaW5nIHdyaXRlKCkKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvcik6CiAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wZmlsZS5fZ2V0X2RlZmF1bHRfdGVtcGRpcigpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9FTlQpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MubGlzdGRpcihvdXJfdGVtcF9kaXJlY3RvcnkpLCBbXSkKIAotdGVzdF9jbGFzc2VzLmFwcGVuZChUZXN0R2V0RGVmYXVsdFRlbXBkaXIpCiAKLQotY2xhc3MgdGVzdF9fZ2V0X2NhbmRpZGF0ZV9uYW1lcyhUQyk6CitjbGFzcyBUZXN0R2V0Q2FuZGlkYXRlTmFtZXMoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBfZ2V0X2NhbmRpZGF0ZV9uYW1lcy4iIiIKIAogICAgIGRlZiB0ZXN0X3JldHZhbChzZWxmKToKQEAgLTI3MiwxMCArMjU0LDggQEAKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUoYSBpcyBiKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfX2dldF9jYW5kaWRhdGVfbmFtZXMpCiAKLQotY2xhc3MgdGVzdF9fbWtzdGVtcF9pbm5lcihUQyk6CitjbGFzcyBUZXN0TWtzdGVtcElubmVyKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB0aGUgaW50ZXJuYWwgZnVuY3Rpb24gX21rc3RlbXBfaW5uZXIuIiIiCiAKICAgICBjbGFzcyBta3N0ZW1wZWQ6CkBAIC0zMDAsMTAgKzI4MCw3IEBACiAgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBkaXI9Tm9uZSwgcHJlPSIiLCBzdWY9IiIsIGJpbj0xKToKICAgICAgICAgaWYgZGlyIGlzIE5vbmU6CiAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZSA9IHNlbGYubWtzdGVtcGVkKGRpciwgcHJlLCBzdWYsIGJpbikKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIl9ta3N0ZW1wX2lubmVyIikKKyAgICAgICAgZmlsZSA9IHNlbGYubWtzdGVtcGVkKGRpciwgcHJlLCBzdWYsIGJpbikKIAogICAgICAgICBzZWxmLm5hbWVDaGVjayhmaWxlLm5hbWUsIGRpciwgcHJlLCBzdWYpCiAgICAgICAgIHJldHVybiBmaWxlCkBAIC0zOTUsMTAgKzM3Miw4IEBACiAgICAgICAgIG9zLmxzZWVrKGYuZmQsIDAsIG9zLlNFRUtfU0VUKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWQoZi5mZCwgMjApLCBiImJsYXQiKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfX21rc3RlbXBfaW5uZXIpCiAKLQotY2xhc3MgdGVzdF9nZXR0ZW1wcHJlZml4KFRDKToKK2NsYXNzIFRlc3RHZXRUZW1wUHJlZml4KEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBnZXR0ZW1wcHJlZml4KCkuIiIiCiAKICAgICBkZWYgdGVzdF9zYW5lX3RlbXBsYXRlKHNlbGYpOgpAQCAtNDE4LDE5ICszOTMsMTQgQEAKICAgICAgICAgZCA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSIiKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBwID0gb3MucGF0aC5qb2luKGQsIHApCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZmQgPSBvcy5vcGVuKHAsIG9zLk9fUkRXUiB8IG9zLk9fQ1JFQVQpCi0gICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIm9zLm9wZW4iKQorICAgICAgICAgICAgZmQgPSBvcy5vcGVuKHAsIG9zLk9fUkRXUiB8IG9zLk9fQ1JFQVQpCiAgICAgICAgICAgICBvcy5jbG9zZShmZCkKICAgICAgICAgICAgIG9zLnVubGluayhwKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3Mucm1kaXIoZCkKIAotdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X2dldHRlbXBwcmVmaXgpCiAKLQotY2xhc3MgdGVzdF9nZXR0ZW1wZGlyKFRDKToKK2NsYXNzIFRlc3RHZXRUZW1wRGlyKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBnZXR0ZW1wZGlyKCkuIiIiCiAKICAgICBkZWYgdGVzdF9kaXJlY3RvcnlfZXhpc3RzKHNlbGYpOgpAQCAtNDQ4LDEyICs0MTgsOSBAQAogICAgICAgICAjIHNuZWFreToganVzdCBpbnN0YW50aWF0ZSBhIE5hbWVkVGVtcG9yYXJ5RmlsZSwgd2hpY2gKICAgICAgICAgIyBkZWZhdWx0cyB0byB3cml0aW5nIGludG8gdGhlIGRpcmVjdG9yeSByZXR1cm5lZCBieQogICAgICAgICAjIGdldHRlbXBkaXIuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoKQotICAgICAgICAgICAgZmlsZS53cml0ZShiImJsYXQiKQotICAgICAgICAgICAgZmlsZS5jbG9zZSgpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJjcmVhdGUgZmlsZSBpbiAlcyIgJSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkpCisgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoKQorICAgICAgICBmaWxlLndyaXRlKGIiYmxhdCIpCisgICAgICAgIGZpbGUuY2xvc2UoKQogCiAgICAgZGVmIHRlc3Rfc2FtZV90aGluZyhzZWxmKToKICAgICAgICAgIyBnZXR0ZW1wZGlyIGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIG9iamVjdApAQCAtNDYyLDIzICs0MjksMTggQEAKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUoYSBpcyBiKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfZ2V0dGVtcGRpcikKIAotCi1jbGFzcyB0ZXN0X21rc3RlbXAoVEMpOgorY2xhc3MgVGVzdE1rc3RlbXAoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IG1rc3RlbXAoKS4iIiIKIAogICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgZGlyPU5vbmUsIHByZT0iIiwgc3VmPSIiKToKICAgICAgICAgaWYgZGlyIGlzIE5vbmU6CiAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgKGZkLCBuYW1lKSA9IHRlbXBmaWxlLm1rc3RlbXAoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKLSAgICAgICAgICAgIChuZGlyLCBuYmFzZSkgPSBvcy5wYXRoLnNwbGl0KG5hbWUpCi0gICAgICAgICAgICBhZGlyID0gb3MucGF0aC5hYnNwYXRoKGRpcikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRpciwgbmRpciwKLSAgICAgICAgICAgICAgICAiRGlyZWN0b3J5ICclcycgaW5jb3JyZWN0bHkgcmV0dXJuZWQgYXMgJyVzJyIgJSAoYWRpciwgbmRpcikpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJta3N0ZW1wIikKKyAgICAgICAgKGZkLCBuYW1lKSA9IHRlbXBmaWxlLm1rc3RlbXAoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKKyAgICAgICAgKG5kaXIsIG5iYXNlKSA9IG9zLnBhdGguc3BsaXQobmFtZSkKKyAgICAgICAgYWRpciA9IG9zLnBhdGguYWJzcGF0aChkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRpciwgbmRpciwKKyAgICAgICAgICAgICJEaXJlY3RvcnkgJyVzJyBpbmNvcnJlY3RseSByZXR1cm5lZCBhcyAnJXMnIiAlIChhZGlyLCBuZGlyKSkKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLm5hbWVDaGVjayhuYW1lLCBkaXIsIHByZSwgc3VmKQpAQCAtNTAzLDE5ICs0NjUsMTQgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIG9zLnJtZGlyKGRpcikKIAotdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X21rc3RlbXApCiAKLQotY2xhc3MgdGVzdF9ta2R0ZW1wKFRDKToKK2NsYXNzIFRlc3RNa2R0ZW1wKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBta2R0ZW1wKCkuIiIiCiAKICAgICBkZWYgZG9fY3JlYXRlKHNlbGYsIGRpcj1Ob25lLCBwcmU9IiIsIHN1Zj0iIik6CiAgICAgICAgIGlmIGRpciBpcyBOb25lOgogICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG5hbWUgPSB0ZW1wZmlsZS5ta2R0ZW1wKGRpcj1kaXIsIHByZWZpeD1wcmUsIHN1ZmZpeD1zdWYpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJta2R0ZW1wIikKKyAgICAgICAgbmFtZSA9IHRlbXBmaWxlLm1rZHRlbXAoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLm5hbWVDaGVjayhuYW1lLCBkaXIsIHByZSwgc3VmKQpAQCAtNTcwLDEwICs1MjcsOCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3Mucm1kaXIoZGlyKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfbWtkdGVtcCkKIAotCi1jbGFzcyB0ZXN0X21rdGVtcChUQyk6CitjbGFzcyBUZXN0TWt0ZW1wKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBta3RlbXAoKS4iIiIKIAogICAgICMgRm9yIHNhZmV0eSwgYWxsIHVzZSBvZiBta3RlbXAgbXVzdCBvY2N1ciBpbiBhIHByaXZhdGUgZGlyZWN0b3J5LgpAQCAtNjAyLDEwICs1NTcsNyBAQAogICAgICAgICAgICAgc2VsZi5fdW5saW5rKHNlbGYubmFtZSkKIAogICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgcHJlPSIiLCBzdWY9IiIpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmaWxlID0gc2VsZi5ta3RlbXBlZChzZWxmLmRpciwgcHJlLCBzdWYpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJta3RlbXAiKQorICAgICAgICBmaWxlID0gc2VsZi5ta3RlbXBlZChzZWxmLmRpciwgcHJlLCBzdWYpCiAKICAgICAgICAgc2VsZi5uYW1lQ2hlY2soZmlsZS5uYW1lLCBzZWxmLmRpciwgcHJlLCBzdWYpCiAgICAgICAgIHJldHVybiBmaWxlCkBAIC02MzIsMjMgKzU4NCwxOCBAQAogIyMgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lV2FybmluZywKICMjICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGZpbGUubWt0ZW1wLCBkaXI9c2VsZi5kaXIpCiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9ta3RlbXApCi0KIAogIyBXZSB0ZXN0IF9UZW1wb3JhcnlGaWxlV3JhcHBlciBieSB0ZXN0aW5nIE5hbWVkVGVtcG9yYXJ5RmlsZS4KIAogCi1jbGFzcyB0ZXN0X05hbWVkVGVtcG9yYXJ5RmlsZShUQyk6CitjbGFzcyBUZXN0TmFtZWRUZW1wb3JhcnlGaWxlKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBOYW1lZFRlbXBvcmFyeUZpbGUoKS4iIiIKIAogICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgZGlyPU5vbmUsIHByZT0iIiwgc3VmPSIiLCBkZWxldGU9VHJ1ZSk6CiAgICAgICAgIGlmIGRpciBpcyBOb25lOgogICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlPWRlbGV0ZSkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIk5hbWVkVGVtcG9yYXJ5RmlsZSIpCisgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGU9ZGVsZXRlKQogCiAgICAgICAgIHNlbGYubmFtZUNoZWNrKGZpbGUubmFtZSwgZGlyLCBwcmUsIHN1ZikKICAgICAgICAgcmV0dXJuIGZpbGUKQEAgLTcwMSwxMSArNjQ4LDggQEAKICAgICAgICAgZiA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgpCiAgICAgICAgIGYud3JpdGUoYidhYmNcbicpCiAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiY2xvc2UiKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgZi5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CiAgICAgICAgICMgQSBOYW1lZFRlbXBvcmFyeUZpbGUgY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIKQEAgLTcxOSwxOCArNjYzLDE0IEBACiAKICAgICAjIEhvdyB0byB0ZXN0IHRoZSBtb2RlIGFuZCBidWZzaXplIHBhcmFtZXRlcnM/CiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9OYW1lZFRlbXBvcmFyeUZpbGUpCiAKLWNsYXNzIHRlc3RfU3Bvb2xlZFRlbXBvcmFyeUZpbGUoVEMpOgorY2xhc3MgVGVzdFNwb29sZWRUZW1wb3JhcnlGaWxlKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBTcG9vbGVkVGVtcG9yYXJ5RmlsZSgpLiIiIgogCiAgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBtYXhfc2l6ZT0wLCBkaXI9Tm9uZSwgcHJlPSIiLCBzdWY9IiIpOgogICAgICAgICBpZiBkaXIgaXMgTm9uZToKICAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmaWxlID0gdGVtcGZpbGUuU3Bvb2xlZFRlbXBvcmFyeUZpbGUobWF4X3NpemU9bWF4X3NpemUsIGRpcj1kaXIsIHByZWZpeD1wcmUsIHN1ZmZpeD1zdWYpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJTcG9vbGVkVGVtcG9yYXJ5RmlsZSIpCisgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5TcG9vbGVkVGVtcG9yYXJ5RmlsZShtYXhfc2l6ZT1tYXhfc2l6ZSwgZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKIAogICAgICAgICByZXR1cm4gZmlsZQogCkBAIC04MTgsMTEgKzc1OCw4IEBACiAgICAgICAgIGYud3JpdGUoYidhYmNcbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5fcm9sbGVkKQogICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oImNsb3NlIikKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfY2xvc2VfYWZ0ZXJfcm9sbG92ZXIoc2VsZik6CiAgICAgICAgICMgQSBTcG9vbGVkVGVtcG9yYXJ5RmlsZSBjYW4gYmUgY2xvc2VkIG1hbnkgdGltZXMgd2l0aG91dCBlcnJvcgpAQCAtODMwLDExICs3NjcsOCBAQAogICAgICAgICBmLndyaXRlKGInYWJjXG4nKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5fcm9sbGVkKQogICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oImNsb3NlIikKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfYm91bmRfbWV0aG9kcyhzZWxmKToKICAgICAgICAgIyBJdCBzaG91bGQgYmUgT0sgdG8gc3RlYWwgYSBib3VuZCBtZXRob2QgZnJvbSBhIFNwb29sZWRUZW1wb3JhcnlGaWxlCkBAIC05NTksNjYgKzg5Myw3NiBAQAogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdXNlX2Nsb3NlZCkKIAotCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfU3Bvb2xlZFRlbXBvcmFyeUZpbGUpCi0KLQotY2xhc3MgdGVzdF9UZW1wb3JhcnlGaWxlKFRDKToKLSAgICAiIiJUZXN0IFRlbXBvcmFyeUZpbGUoKS4iIiIKLQotICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgotICAgICAgICAjIFRlbXBvcmFyeUZpbGUgY2FuIGNyZWF0ZSBmaWxlcwotICAgICAgICAjIE5vIHBvaW50IGluIHRlc3RpbmcgdGhlIG5hbWUgcGFyYW1zIC0gdGhlIGZpbGUgaGFzIG5vIG5hbWUuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiVGVtcG9yYXJ5RmlsZSIpCi0KLSAgICBkZWYgdGVzdF9oYXNfbm9fbmFtZShzZWxmKToKLSAgICAgICAgIyBUZW1wb3JhcnlGaWxlIGNyZWF0ZXMgZmlsZXMgd2l0aCBubyBuYW1lcyAob24gdGhpcyBzeXN0ZW0pCi0gICAgICAgIGRpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQotICAgICAgICBmID0gdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZShkaXI9ZGlyKQotICAgICAgICBmLndyaXRlKGInYmxhdCcpCi0KLSAgICAgICAgIyBTbmVha3k6IGJlY2F1c2UgdGhpcyBmaWxlIGhhcyBubyBuYW1lLCBpdCBzaG91bGQgbm90IHByZXZlbnQKLSAgICAgICAgIyB1cyBmcm9tIHJlbW92aW5nIHRoZSBkaXJlY3RvcnkgaXQgd2FzIGNyZWF0ZWQgaW4uCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLnJtZGlyKGRpcikKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgZWkgPSBzeXMuZXhjX2luZm8oKQotICAgICAgICAgICAgIyBjbGVhbnVwCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIG9zLnJtZGlyKGRpcikKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJybWRpciIsIGVpKQotCi0gICAgZGVmIHRlc3RfbXVsdGlwbGVfY2xvc2Uoc2VsZik6Ci0gICAgICAgICMgQSBUZW1wb3JhcnlGaWxlIGNhbiBiZSBjbG9zZWQgbWFueSB0aW1lcyB3aXRob3V0IGVycm9yCi0gICAgICAgIGYgPSB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCkKLSAgICAgICAgZi53cml0ZShiJ2FiY1xuJykKLSAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJjbG9zZSIpCi0KLSAgICAjIEhvdyB0byB0ZXN0IHRoZSBtb2RlIGFuZCBidWZzaXplIHBhcmFtZXRlcnM/Ci0gICAgZGVmIHRlc3RfbW9kZV9hbmRfZW5jb2Rpbmcoc2VsZik6Ci0KLSAgICAgICAgZGVmIHJvdW5kdHJpcChpbnB1dCwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgqYXJncywgKiprd2FyZ3MpIGFzIGZpbGVvYmo6Ci0gICAgICAgICAgICAgICAgZmlsZW9iai53cml0ZShpbnB1dCkKLSAgICAgICAgICAgICAgICBmaWxlb2JqLnNlZWsoMCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlucHV0LCBmaWxlb2JqLnJlYWQoKSkKLQotICAgICAgICByb3VuZHRyaXAoYiIxMjM0IiwgIncrYiIpCi0gICAgICAgIHJvdW5kdHJpcCgiYWJkY1xuIiwgIncrIikKLSAgICAgICAgcm91bmR0cmlwKCJcdTAzOUIiLCAidysiLCBlbmNvZGluZz0idXRmLTE2IikKLSAgICAgICAgcm91bmR0cmlwKCJmb29cclxuIiwgIncrIiwgbmV3bGluZT0iIikKKyAgICBkZWYgdGVzdF90cnVuY2F0ZV93aXRoX3NpemVfcGFyYW1ldGVyKHNlbGYpOgorICAgICAgICAjIEEgU3Bvb2xlZFRlbXBvcmFyeUZpbGUgY2FuIGJlIHRydW5jYXRlZCB0byB6ZXJvIHNpemUKKyAgICAgICAgZiA9IHRlbXBmaWxlLlNwb29sZWRUZW1wb3JhcnlGaWxlKG1heF9zaXplPTEwKQorICAgICAgICBmLndyaXRlKGInYWJjZGVmZ1xuJykKKyAgICAgICAgZi5zZWVrKDApCisgICAgICAgIGYudHJ1bmNhdGUoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuX3JvbGxlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLl9maWxlLmdldHZhbHVlKCksIGInJykKKyAgICAgICAgIyBBIFNwb29sZWRUZW1wb3JhcnlGaWxlIGNhbiBiZSB0cnVuY2F0ZWQgdG8gYSBzcGVjaWZpYyBzaXplCisgICAgICAgIGYgPSB0ZW1wZmlsZS5TcG9vbGVkVGVtcG9yYXJ5RmlsZShtYXhfc2l6ZT0xMCkKKyAgICAgICAgZi53cml0ZShiJ2FiY2RlZmdcbicpCisgICAgICAgIGYudHJ1bmNhdGUoNCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLl9yb2xsZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5fZmlsZS5nZXR2YWx1ZSgpLCBiJ2FiY2QnKQorICAgICAgICAjIEEgU3Bvb2xlZFRlbXBvcmFyeUZpbGUgcm9sbHMgb3ZlciBpZiB0cnVuY2F0ZWQgdG8gbGFyZ2Ugc2l6ZQorICAgICAgICBmID0gdGVtcGZpbGUuU3Bvb2xlZFRlbXBvcmFyeUZpbGUobWF4X3NpemU9MTApCisgICAgICAgIGYud3JpdGUoYidhYmNkZWZnXG4nKQorICAgICAgICBmLnRydW5jYXRlKDIwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5fcm9sbGVkKQorICAgICAgICBpZiBoYXNfc3RhdDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZnN0YXQoZi5maWxlbm8oKSkuc3Rfc2l6ZSwgMjApCiAKIAogaWYgdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlIGlzIG5vdCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlOgotICAgIHRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9UZW1wb3JhcnlGaWxlKQorCisgICAgY2xhc3MgVGVzdFRlbXBvcmFyeUZpbGUoQmFzZVRlc3RDYXNlKToKKyAgICAgICAgIiIiVGVzdCBUZW1wb3JhcnlGaWxlKCkuIiIiCisKKyAgICAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgICAgICAjIFRlbXBvcmFyeUZpbGUgY2FuIGNyZWF0ZSBmaWxlcworICAgICAgICAgICAgIyBObyBwb2ludCBpbiB0ZXN0aW5nIHRoZSBuYW1lIHBhcmFtcyAtIHRoZSBmaWxlIGhhcyBubyBuYW1lLgorICAgICAgICAgICAgdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpCisKKyAgICAgICAgZGVmIHRlc3RfaGFzX25vX25hbWUoc2VsZik6CisgICAgICAgICAgICAjIFRlbXBvcmFyeUZpbGUgY3JlYXRlcyBmaWxlcyB3aXRoIG5vIG5hbWVzIChvbiB0aGlzIHN5c3RlbSkKKyAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICAgICAgZiA9IHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoZGlyPWRpcikKKyAgICAgICAgICAgIGYud3JpdGUoYidibGF0JykKKworICAgICAgICAgICAgIyBTbmVha3k6IGJlY2F1c2UgdGhpcyBmaWxlIGhhcyBubyBuYW1lLCBpdCBzaG91bGQgbm90IHByZXZlbnQKKyAgICAgICAgICAgICMgdXMgZnJvbSByZW1vdmluZyB0aGUgZGlyZWN0b3J5IGl0IHdhcyBjcmVhdGVkIGluLgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnJtZGlyKGRpcikKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAjIGNsZWFudXAKKyAgICAgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBvcy5ybWRpcihkaXIpCisgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICBkZWYgdGVzdF9tdWx0aXBsZV9jbG9zZShzZWxmKToKKyAgICAgICAgICAgICMgQSBUZW1wb3JhcnlGaWxlIGNhbiBiZSBjbG9zZWQgbWFueSB0aW1lcyB3aXRob3V0IGVycm9yCisgICAgICAgICAgICBmID0gdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpCisgICAgICAgICAgICBmLndyaXRlKGInYWJjXG4nKQorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorCisgICAgICAgICMgSG93IHRvIHRlc3QgdGhlIG1vZGUgYW5kIGJ1ZnNpemUgcGFyYW1ldGVycz8KKyAgICAgICAgZGVmIHRlc3RfbW9kZV9hbmRfZW5jb2Rpbmcoc2VsZik6CisKKyAgICAgICAgICAgIGRlZiByb3VuZHRyaXAoaW5wdXQsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCphcmdzLCAqKmt3YXJncykgYXMgZmlsZW9iajoKKyAgICAgICAgICAgICAgICAgICAgZmlsZW9iai53cml0ZShpbnB1dCkKKyAgICAgICAgICAgICAgICAgICAgZmlsZW9iai5zZWVrKDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5wdXQsIGZpbGVvYmoucmVhZCgpKQorCisgICAgICAgICAgICByb3VuZHRyaXAoYiIxMjM0IiwgIncrYiIpCisgICAgICAgICAgICByb3VuZHRyaXAoImFiZGNcbiIsICJ3KyIpCisgICAgICAgICAgICByb3VuZHRyaXAoIlx1MDM5QiIsICJ3KyIsIGVuY29kaW5nPSJ1dGYtMTYiKQorICAgICAgICAgICAgcm91bmR0cmlwKCJmb29cclxuIiwgIncrIiwgbmV3bGluZT0iIikKIAogCiAjIEhlbHBlciBmb3IgdGVzdF9kZWxfb25fc2h1dGRvd24KQEAgLTEwMzcsMTYgKzk4MSwxMyBAQAogICAgICAgICAgICAgZC5jbGVhcigpCiAgICAgICAgICAgICBkLnVwZGF0ZShjKQogCi1jbGFzcyB0ZXN0X1RlbXBvcmFyeURpcmVjdG9yeShUQyk6CitjbGFzcyBUZXN0VGVtcG9yYXJ5RGlyZWN0b3J5KEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBUZW1wb3JhcnlEaXJlY3RvcnkoKS4iIiIKIAogICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgZGlyPU5vbmUsIHByZT0iIiwgc3VmPSIiLCByZWN1cnNlPTEpOgogICAgICAgICBpZiBkaXIgaXMgTm9uZToKICAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0bXAgPSB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIlRlbXBvcmFyeURpcmVjdG9yeSIpCisgICAgICAgIHRtcCA9IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeShkaXI9ZGlyLCBwcmVmaXg9cHJlLCBzdWZmaXg9c3VmKQogICAgICAgICBzZWxmLm5hbWVDaGVjayh0bXAubmFtZSwgZGlyLCBwcmUsIHN1ZikKICAgICAgICAgIyBDcmVhdGUgYSBzdWJkaXJlY3RvcnkgYW5kIHNvbWUgZmlsZXMKICAgICAgICAgaWYgcmVjdXJzZToKQEAgLTEwNjEsOCArMTAwMiw5IEBACiAgICAgICAgICMgKG5vdGVkIGFzIHBhcnQgb2YgSXNzdWUgIzEwMTg4KQogICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIG5vbmV4aXN0ZW50OgogICAgICAgICAgICAgcGFzcwotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKG9zLmVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvcikgYXMgY206CiAgICAgICAgICAgICB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoZGlyPW5vbmV4aXN0ZW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PRU5UKQogCiAgICAgZGVmIHRlc3RfZXhwbGljaXRfY2xlYW51cChzZWxmKToKICAgICAgICAgIyBBIFRlbXBvcmFyeURpcmVjdG9yeSBpcyBkZWxldGVkIHdoZW4gY2xlYW5lZCB1cApAQCAtMTE3MCwxMSArMTExMiw4IEBACiAgICAgICAgICMgQ2FuIGJlIGNsZWFuZWQtdXAgbWFueSB0aW1lcyB3aXRob3V0IGVycm9yCiAgICAgICAgIGQgPSBzZWxmLmRvX2NyZWF0ZSgpCiAgICAgICAgIGQuY2xlYW51cCgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGQuY2xlYW51cCgpCi0gICAgICAgICAgICBkLmNsZWFudXAoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiY2xlYW51cCIpCisgICAgICAgIGQuY2xlYW51cCgpCisgICAgICAgIGQuY2xlYW51cCgpCiAKICAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CiAgICAgICAgICMgQ2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIKQEAgLTExODUsMTAgKzExMjQsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG5hbWUpKQogCiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9UZW1wb3JhcnlEaXJlY3RvcnkpCi0KIGRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RleHR3cmFwLnB5IGIvTGliL3Rlc3QvdGVzdF90ZXh0d3JhcC5weQppbmRleCAzOTAxMTIwLi5jODZmNWNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RleHR3cmFwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGV4dHdyYXAucHkKQEAgLTExLDcgKzExLDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKLWZyb20gdGV4dHdyYXAgaW1wb3J0IFRleHRXcmFwcGVyLCB3cmFwLCBmaWxsLCBkZWRlbnQKK2Zyb20gdGV4dHdyYXAgaW1wb3J0IFRleHRXcmFwcGVyLCB3cmFwLCBmaWxsLCBkZWRlbnQsIGluZGVudAogCiAKIGNsYXNzIEJhc2VUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xMDAsNiArMTAwLDE0IEBACiAgICAgICAgIHJlc3VsdCA9IHdyYXBwZXIuZmlsbCh0ZXh0KQogICAgICAgICBzZWxmLmNoZWNrKHJlc3VsdCwgJ1xuJy5qb2luKGV4cGVjdCkpCiAKKyAgICAgICAgdGV4dCA9ICJcdFRlc3RcdGRlZmF1bHRcdFx0dGFic2l6ZS4iCisgICAgICAgIGV4cGVjdCA9IFsiICAgICAgICBUZXN0ICAgIGRlZmF1bHQgICAgICAgICB0YWJzaXplLiJdCisgICAgICAgIHNlbGYuY2hlY2tfd3JhcCh0ZXh0LCA4MCwgZXhwZWN0KQorCisgICAgICAgIHRleHQgPSAiXHRUZXN0XHRjdXN0b21cdFx0dGFic2l6ZS4iCisgICAgICAgIGV4cGVjdCA9IFsiICAgIFRlc3QgICAgY3VzdG9tICAgICAgdGFic2l6ZS4iXQorICAgICAgICBzZWxmLmNoZWNrX3dyYXAodGV4dCwgODAsIGV4cGVjdCwgdGFic2l6ZT00KQorCiAgICAgZGVmIHRlc3RfZml4X3NlbnRlbmNlX2VuZGluZ3Moc2VsZik6CiAgICAgICAgIHdyYXBwZXIgPSBUZXh0V3JhcHBlcig2MCwgZml4X3NlbnRlbmNlX2VuZGluZ3M9VHJ1ZSkKIApAQCAtNjM0LDExICs2NDIsMTQ3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0LCBkZWRlbnQodGV4dCkpCiAKIAorIyBUZXN0IHRleHR3cmFwLmluZGVudAorY2xhc3MgSW5kZW50VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgVGhlIGV4YW1wbGVzIHVzZWQgZm9yIHRlc3RzLiBJZiBhbnkgb2YgdGhlc2UgY2hhbmdlLCB0aGUgZXhwZWN0ZWQKKyAgICAjIHJlc3VsdHMgaW4gdGhlIHZhcmlvdXMgdGVzdCBjYXNlcyBtdXN0IGFsc28gYmUgdXBkYXRlZC4KKyAgICAjIFRoZSByb3VuZHRyaXAgY2FzZXMgYXJlIHNlcGFyYXRlLCBiZWNhdXNlIHRleHR3cmFwLmRlZGVudCBkb2Vzbid0CisgICAgIyBoYW5kbGUgV2luZG93cyBsaW5lIGVuZGluZ3MKKyAgICBST1VORFRSSVBfQ0FTRVMgPSAoCisgICAgICAjIEJhc2ljIHRlc3QgY2FzZQorICAgICAgIkhpLlxuVGhpcyBpcyBhIHRlc3QuXG5UZXN0aW5nLiIsCisgICAgICAjIEluY2x1ZGUgYSBibGFuayBsaW5lCisgICAgICAiSGkuXG5UaGlzIGlzIGEgdGVzdC5cblxuVGVzdGluZy4iLAorICAgICAgIyBJbmNsdWRlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGJsYW5rIGxpbmVzCisgICAgICAiXG5IaS5cblRoaXMgaXMgYSB0ZXN0LlxuVGVzdGluZy5cbiIsCisgICAgKQorICAgIENBU0VTID0gUk9VTkRUUklQX0NBU0VTICsgKAorICAgICAgIyBVc2UgV2luZG93cyBsaW5lIGVuZGluZ3MKKyAgICAgICJIaS5cclxuVGhpcyBpcyBhIHRlc3QuXHJcblRlc3RpbmcuXHJcbiIsCisgICAgICAjIFBhdGhvbG9naWNhbCBjYXNlCisgICAgICAiXG5IaS5cclxuVGhpcyBpcyBhIHRlc3QuXG5cclxuVGVzdGluZy5cclxuXG4iLAorICAgICkKKworICAgIGRlZiB0ZXN0X2luZGVudF9ub21hcmdpbl9kZWZhdWx0KHNlbGYpOgorICAgICAgICAjIGluZGVudCBzaG91bGQgZG8gbm90aGluZyBpZiAncHJlZml4JyBpcyBlbXB0eS4KKyAgICAgICAgZm9yIHRleHQgaW4gc2VsZi5DQVNFUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZW50KHRleHQsICcnKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X2luZGVudF9ub21hcmdpbl9leHBsaWNpdF9kZWZhdWx0KHNlbGYpOgorICAgICAgICAjIFRoZSBzYW1lIGFzIHRlc3RfaW5kZW50X25vbWFyZ2luLCBidXQgZXhwbGljaXRseSByZXF1ZXN0aW5nCisgICAgICAgICMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIGJ5IHBhc3NpbmcgTm9uZSBhcyB0aGUgcHJlZGljYXRlCisgICAgICAgIGZvciB0ZXh0IGluIHNlbGYuQ0FTRVM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZGVudCh0ZXh0LCAnJywgTm9uZSksIHRleHQpCisKKyAgICBkZWYgdGVzdF9pbmRlbnRfbm9tYXJnaW5fYWxsX2xpbmVzKHNlbGYpOgorICAgICAgICAjIFRoZSBzYW1lIGFzIHRlc3RfaW5kZW50X25vbWFyZ2luLCBidXQgdXNpbmcgdGhlIG9wdGlvbmFsCisgICAgICAgICMgcHJlZGljYXRlIGFyZ3VtZW50CisgICAgICAgIHByZWRpY2F0ZSA9IGxhbWJkYSBsaW5lOiBUcnVlCisgICAgICAgIGZvciB0ZXh0IGluIHNlbGYuQ0FTRVM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZGVudCh0ZXh0LCAnJywgcHJlZGljYXRlKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X2luZGVudF9ub19saW5lcyhzZWxmKToKKyAgICAgICAgIyBFeHBsaWNpdGx5IHNraXAgaW5kZW50aW5nIGFueSBsaW5lcworICAgICAgICBwcmVkaWNhdGUgPSBsYW1iZGEgbGluZTogRmFsc2UKKyAgICAgICAgZm9yIHRleHQgaW4gc2VsZi5DQVNFUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZW50KHRleHQsICcgICAgJywgcHJlZGljYXRlKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X3JvdW5kdHJpcF9zcGFjZXMoc2VsZik6CisgICAgICAgICMgQSB3aGl0ZXNwYWNlIHByZWZpeCBzaG91bGQgcm91bmR0cmlwIHdpdGggZGVkZW50CisgICAgICAgIGZvciB0ZXh0IGluIHNlbGYuUk9VTkRUUklQX0NBU0VTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWRlbnQoaW5kZW50KHRleHQsICcgICAgJykpLCB0ZXh0KQorCisgICAgZGVmIHRlc3Rfcm91bmR0cmlwX3RhYnMoc2VsZik6CisgICAgICAgICMgQSB3aGl0ZXNwYWNlIHByZWZpeCBzaG91bGQgcm91bmR0cmlwIHdpdGggZGVkZW50CisgICAgICAgIGZvciB0ZXh0IGluIHNlbGYuUk9VTkRUUklQX0NBU0VTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWRlbnQoaW5kZW50KHRleHQsICdcdFx0JykpLCB0ZXh0KQorCisgICAgZGVmIHRlc3Rfcm91bmR0cmlwX21peGVkKHNlbGYpOgorICAgICAgICAjIEEgd2hpdGVzcGFjZSBwcmVmaXggc2hvdWxkIHJvdW5kdHJpcCB3aXRoIGRlZGVudAorICAgICAgICBmb3IgdGV4dCBpbiBzZWxmLlJPVU5EVFJJUF9DQVNFUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVkZW50KGluZGVudCh0ZXh0LCAnIFx0ICBcdCAnKSksIHRleHQpCisKKyAgICBkZWYgdGVzdF9pbmRlbnRfZGVmYXVsdChzZWxmKToKKyAgICAgICAgIyBUZXN0IGRlZmF1bHQgaW5kZW50aW5nIG9mIGxpbmVzIHRoYXQgYXJlIG5vdCB3aGl0ZXNwYWNlIG9ubHkKKyAgICAgICAgcHJlZml4ID0gJyAgJworICAgICAgICBleHBlY3RlZCA9ICgKKyAgICAgICAgICAjIEJhc2ljIHRlc3QgY2FzZQorICAgICAgICAgICIgIEhpLlxuICBUaGlzIGlzIGEgdGVzdC5cbiAgVGVzdGluZy4iLAorICAgICAgICAgICMgSW5jbHVkZSBhIGJsYW5rIGxpbmUKKyAgICAgICAgICAiICBIaS5cbiAgVGhpcyBpcyBhIHRlc3QuXG5cbiAgVGVzdGluZy4iLAorICAgICAgICAgICMgSW5jbHVkZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBibGFuayBsaW5lcworICAgICAgICAgICJcbiAgSGkuXG4gIFRoaXMgaXMgYSB0ZXN0LlxuICBUZXN0aW5nLlxuIiwKKyAgICAgICAgICAjIFVzZSBXaW5kb3dzIGxpbmUgZW5kaW5ncworICAgICAgICAgICIgIEhpLlxyXG4gIFRoaXMgaXMgYSB0ZXN0LlxyXG4gIFRlc3RpbmcuXHJcbiIsCisgICAgICAgICAgIyBQYXRob2xvZ2ljYWwgY2FzZQorICAgICAgICAgICJcbiAgSGkuXHJcbiAgVGhpcyBpcyBhIHRlc3QuXG5cclxuICBUZXN0aW5nLlxyXG5cbiIsCisgICAgICAgICkKKyAgICAgICAgZm9yIHRleHQsIGV4cGVjdCBpbiB6aXAoc2VsZi5DQVNFUywgZXhwZWN0ZWQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmRlbnQodGV4dCwgcHJlZml4KSwgZXhwZWN0KQorCisgICAgZGVmIHRlc3RfaW5kZW50X2V4cGxpY2l0X2RlZmF1bHQoc2VsZik6CisgICAgICAgICMgVGVzdCBkZWZhdWx0IGluZGVudGluZyBvZiBsaW5lcyB0aGF0IGFyZSBub3Qgd2hpdGVzcGFjZSBvbmx5CisgICAgICAgIHByZWZpeCA9ICcgICcKKyAgICAgICAgZXhwZWN0ZWQgPSAoCisgICAgICAgICAgIyBCYXNpYyB0ZXN0IGNhc2UKKyAgICAgICAgICAiICBIaS5cbiAgVGhpcyBpcyBhIHRlc3QuXG4gIFRlc3RpbmcuIiwKKyAgICAgICAgICAjIEluY2x1ZGUgYSBibGFuayBsaW5lCisgICAgICAgICAgIiAgSGkuXG4gIFRoaXMgaXMgYSB0ZXN0LlxuXG4gIFRlc3RpbmcuIiwKKyAgICAgICAgICAjIEluY2x1ZGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgYmxhbmsgbGluZXMKKyAgICAgICAgICAiXG4gIEhpLlxuICBUaGlzIGlzIGEgdGVzdC5cbiAgVGVzdGluZy5cbiIsCisgICAgICAgICAgIyBVc2UgV2luZG93cyBsaW5lIGVuZGluZ3MKKyAgICAgICAgICAiICBIaS5cclxuICBUaGlzIGlzIGEgdGVzdC5cclxuICBUZXN0aW5nLlxyXG4iLAorICAgICAgICAgICMgUGF0aG9sb2dpY2FsIGNhc2UKKyAgICAgICAgICAiXG4gIEhpLlxyXG4gIFRoaXMgaXMgYSB0ZXN0LlxuXHJcbiAgVGVzdGluZy5cclxuXG4iLAorICAgICAgICApCisgICAgICAgIGZvciB0ZXh0LCBleHBlY3QgaW4gemlwKHNlbGYuQ0FTRVMsIGV4cGVjdGVkKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZW50KHRleHQsIHByZWZpeCwgTm9uZSksIGV4cGVjdCkKKworICAgIGRlZiB0ZXN0X2luZGVudF9hbGxfbGluZXMoc2VsZik6CisgICAgICAgICMgQWRkICdwcmVmaXgnIHRvIGFsbCBsaW5lcywgaW5jbHVkaW5nIHdoaXRlc3BhY2Utb25seSBvbmVzLgorICAgICAgICBwcmVmaXggPSAnICAnCisgICAgICAgIGV4cGVjdGVkID0gKAorICAgICAgICAgICMgQmFzaWMgdGVzdCBjYXNlCisgICAgICAgICAgIiAgSGkuXG4gIFRoaXMgaXMgYSB0ZXN0LlxuICBUZXN0aW5nLiIsCisgICAgICAgICAgIyBJbmNsdWRlIGEgYmxhbmsgbGluZQorICAgICAgICAgICIgIEhpLlxuICBUaGlzIGlzIGEgdGVzdC5cbiAgXG4gIFRlc3RpbmcuIiwKKyAgICAgICAgICAjIEluY2x1ZGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgYmxhbmsgbGluZXMKKyAgICAgICAgICAiICBcbiAgSGkuXG4gIFRoaXMgaXMgYSB0ZXN0LlxuICBUZXN0aW5nLlxuIiwKKyAgICAgICAgICAjIFVzZSBXaW5kb3dzIGxpbmUgZW5kaW5ncworICAgICAgICAgICIgIEhpLlxyXG4gIFRoaXMgaXMgYSB0ZXN0LlxyXG4gIFRlc3RpbmcuXHJcbiIsCisgICAgICAgICAgIyBQYXRob2xvZ2ljYWwgY2FzZQorICAgICAgICAgICIgIFxuICBIaS5cclxuICBUaGlzIGlzIGEgdGVzdC5cbiAgXHJcbiAgVGVzdGluZy5cclxuICBcbiIsCisgICAgICAgICkKKyAgICAgICAgcHJlZGljYXRlID0gbGFtYmRhIGxpbmU6IFRydWUKKyAgICAgICAgZm9yIHRleHQsIGV4cGVjdCBpbiB6aXAoc2VsZi5DQVNFUywgZXhwZWN0ZWQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmRlbnQodGV4dCwgcHJlZml4LCBwcmVkaWNhdGUpLCBleHBlY3QpCisKKyAgICBkZWYgdGVzdF9pbmRlbnRfZW1wdHlfbGluZXMoc2VsZik6CisgICAgICAgICMgQWRkICdwcmVmaXgnIHNvbGVseSB0byB3aGl0ZXNwYWNlLW9ubHkgbGluZXMuCisgICAgICAgIHByZWZpeCA9ICcgICcKKyAgICAgICAgZXhwZWN0ZWQgPSAoCisgICAgICAgICAgIyBCYXNpYyB0ZXN0IGNhc2UKKyAgICAgICAgICAiSGkuXG5UaGlzIGlzIGEgdGVzdC5cblRlc3RpbmcuIiwKKyAgICAgICAgICAjIEluY2x1ZGUgYSBibGFuayBsaW5lCisgICAgICAgICAgIkhpLlxuVGhpcyBpcyBhIHRlc3QuXG4gIFxuVGVzdGluZy4iLAorICAgICAgICAgICMgSW5jbHVkZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBibGFuayBsaW5lcworICAgICAgICAgICIgIFxuSGkuXG5UaGlzIGlzIGEgdGVzdC5cblRlc3RpbmcuXG4iLAorICAgICAgICAgICMgVXNlIFdpbmRvd3MgbGluZSBlbmRpbmdzCisgICAgICAgICAgIkhpLlxyXG5UaGlzIGlzIGEgdGVzdC5cclxuVGVzdGluZy5cclxuIiwKKyAgICAgICAgICAjIFBhdGhvbG9naWNhbCBjYXNlCisgICAgICAgICAgIiAgXG5IaS5cclxuVGhpcyBpcyBhIHRlc3QuXG4gIFxyXG5UZXN0aW5nLlxyXG4gIFxuIiwKKyAgICAgICAgKQorICAgICAgICBwcmVkaWNhdGUgPSBsYW1iZGEgbGluZTogbm90IGxpbmUuc3RyaXAoKQorICAgICAgICBmb3IgdGV4dCwgZXhwZWN0IGluIHppcChzZWxmLkNBU0VTLCBleHBlY3RlZCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZGVudCh0ZXh0LCBwcmVmaXgsIHByZWRpY2F0ZSksIGV4cGVjdCkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoV3JhcFRlc3RDYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9uZ1dvcmRUZXN0Q2FzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGVudFRlc3RDYXNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZGVudFRlc3RDYXNlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVkZW50VGVzdENhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRlbnRUZXN0Q2FzZSkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aHJlYWRlZF9pbXBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3RocmVhZGVkX2ltcG9ydC5weQppbmRleCA3NzkxOTM1Li42YzI5NjViIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RocmVhZGVkX2ltcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RocmVhZGVkX2ltcG9ydC5weQpAQCAtNywxMiArNywxMyBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBpbXBvcnRfbW9kdWxlLCBydW5fdW5pdHRlc3QsIFRFU1RGTgotdGhyZWFkID0gaW1wb3J0X21vZHVsZSgnX3RocmVhZCcpCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKAorICAgIHZlcmJvc2UsIGltcG9ydF9tb2R1bGUsIHJ1bl91bml0dGVzdCwgVEVTVEZOLCByZWFwX3RocmVhZHMsIGZvcmdldCwgdW5saW5rKQogdGhyZWFkaW5nID0gaW1wb3J0X21vZHVsZSgndGhyZWFkaW5nJykKIAogZGVmIHRhc2soTiwgZG9uZSwgZG9uZV90YXNrcywgZXJyb3JzKToKQEAgLTMwLDcgKzMxLDcgQEAKICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgIGVycm9ycy5hcHBlbmQoZS53aXRoX3RyYWNlYmFjayhOb25lKSkKICAgICBmaW5hbGx5OgotICAgICAgICBkb25lX3Rhc2tzLmFwcGVuZCh0aHJlYWQuZ2V0X2lkZW50KCkpCisgICAgICAgIGRvbmVfdGFza3MuYXBwZW5kKHRocmVhZGluZy5nZXRfaWRlbnQoKSkKICAgICAgICAgZmluaXNoZWQgPSBsZW4oZG9uZV90YXNrcykgPT0gTgogICAgICAgICBpZiBmaW5pc2hlZDoKICAgICAgICAgICAgIGRvbmUuc2V0KCkKQEAgLTYyLDE2ICs2MywxNyBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5udW1jYWxscyA9IDAKICAgICAgICAgc2VsZi54ID0gMAotICAgICAgICBzZWxmLmxvY2sgPSB0aHJlYWQuYWxsb2NhdGVfbG9jaygpCisgICAgICAgIHNlbGYubG9jayA9IHRocmVhZGluZy5Mb2NrKCkKIAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBuYW1lLCBwYXRoPU5vbmUpOgogICAgICAgICAjIFNpbXVsYXRlIHNvbWUgdGhyZWFkLXVuc2FmZSBiZWhhdmlvdXIuIElmIGNhbGxzIHRvIGZpbmRfbW9kdWxlKCkKICAgICAgICAgIyBhcmUgcHJvcGVybHkgc2VyaWFsaXplZCwgYHhgIHdpbGwgZW5kIHVwIHRoZSBzYW1lIGFzIGBudW1jYWxsc2AuCiAgICAgICAgICMgT3RoZXJ3aXNlIG5vdC4KKyAgICAgICAgYXNzZXJ0IGltcC5sb2NrX2hlbGQoKQogICAgICAgICB3aXRoIHNlbGYubG9jazoKICAgICAgICAgICAgIHNlbGYubnVtY2FsbHMgKz0gMQogICAgICAgICB4ID0gc2VsZi54Ci0gICAgICAgIHRpbWUuc2xlZXAoMC4xKQorICAgICAgICB0aW1lLnNsZWVwKDAuMDEpCiAgICAgICAgIHNlbGYueCA9IHggKyAxCiAKIGNsYXNzIEZsdXNoaW5nRmluZGVyOgpAQCAtMTEzLDggKzExNSwxMCBAQAogICAgICAgICAgICAgZG9uZV90YXNrcyA9IFtdCiAgICAgICAgICAgICBkb25lLmNsZWFyKCkKICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKE4pOgotICAgICAgICAgICAgICAgIHRocmVhZC5zdGFydF9uZXdfdGhyZWFkKHRhc2ssIChOLCBkb25lLCBkb25lX3Rhc2tzLCBlcnJvcnMsKSkKLSAgICAgICAgICAgIGRvbmUud2FpdCg2MCkKKyAgICAgICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9dGFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShOLCBkb25lLCBkb25lX3Rhc2tzLCBlcnJvcnMsKSkKKyAgICAgICAgICAgICAgICB0LnN0YXJ0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkb25lLndhaXQoNjApKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlcnJvcnMpCiAgICAgICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgICAgIHByaW50KCJPSy4iKQpAQCAtMTI0LDcgKzEyOCw3IEBACiAKICAgICBkZWYgdGVzdF9wYXJhbGxlbF9tZXRhX3BhdGgoc2VsZik6CiAgICAgICAgIGZpbmRlciA9IEZpbmRlcigpCi0gICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKGZpbmRlcikKKyAgICAgICAgc3lzLm1ldGFfcGF0aC5pbnNlcnQoMCwgZmluZGVyKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmNoZWNrX3BhcmFsbGVsX21vZHVsZV9pbml0KCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihmaW5kZXIubnVtY2FsbHMsIDApCkBAIC0xNDMsNyArMTQ3LDcgQEAKICAgICAgICAgZGVmIHBhdGhfaG9vayhwYXRoKToKICAgICAgICAgICAgIGZpbmRlci5maW5kX21vZHVsZSgnJykKICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCi0gICAgICAgIHN5cy5wYXRoX2hvb2tzLmFwcGVuZChwYXRoX2hvb2spCisgICAgICAgIHN5cy5wYXRoX2hvb2tzLmluc2VydCgwLCBwYXRoX2hvb2spCiAgICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKGZsdXNoaW5nX2ZpbmRlcikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyBGbHVzaCB0aGUgY2FjaGUgYSBmaXJzdCB0aW1lCkBAIC0xODUsOCArMTg5LDkgQEAKICAgICAgICAgICAgIGNvbnRlbnRzID0gY29udGVudHMgJSB7J2RlbGF5JzogZGVsYXl9CiAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKFRFU1RGTiwgbmFtZSArICIucHkiKSwgIndiIikgYXMgZjoKICAgICAgICAgICAgICAgICBmLndyaXRlKGNvbnRlbnRzLmVuY29kZSgndXRmLTgnKSkKLSAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMubW9kdWxlcy5wb3AsIG5hbWUsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoZm9yZ2V0LCBuYW1lKQogCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgIHJlc3VsdHMgPSBbXQogICAgICAgICBkZWYgaW1wb3J0X2FiKCk6CiAgICAgICAgICAgICBpbXBvcnQgQQpAQCAtMjAyLDkgKzIwNywzOCBAQAogICAgICAgICB0Mi5qb2luKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQocmVzdWx0cyksIHsnYScsICdiJ30pCiAKKyAgICBkZWYgdGVzdF9zaWRlX2VmZmVjdF9pbXBvcnQoc2VsZik6CisgICAgICAgIGNvZGUgPSAiIiJpZiAxOgorICAgICAgICAgICAgaW1wb3J0IHRocmVhZGluZworICAgICAgICAgICAgZGVmIHRhcmdldCgpOgorICAgICAgICAgICAgICAgIGltcG9ydCByYW5kb20KKyAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD10YXJnZXQpCisgICAgICAgICAgICB0LnN0YXJ0KCkKKyAgICAgICAgICAgIHQuam9pbigpIiIiCisgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5jdXJkaXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMucGF0aC5yZW1vdmUsIG9zLmN1cmRpcikKKyAgICAgICAgZmlsZW5hbWUgPSBURVNURk4gKyAiLnB5IgorICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGNvZGUuZW5jb2RlKCd1dGYtOCcpKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodW5saW5rLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGZvcmdldCwgVEVTVEZOKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgICAgICBfX2ltcG9ydF9fKFRFU1RGTikKIAorCitAcmVhcF90aHJlYWRzCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFRocmVhZGVkSW1wb3J0VGVzdHMpCisgICAgb2xkX3N3aXRjaGludGVydmFsID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgb2xkX3N3aXRjaGludGVydmFsID0gc3lzLmdldHN3aXRjaGludGVydmFsKCkKKyAgICAgICAgc3lzLnNldHN3aXRjaGludGVydmFsKDFlLTUpCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBwYXNzCisgICAgdHJ5OgorICAgICAgICBydW5fdW5pdHRlc3QoVGhyZWFkZWRJbXBvcnRUZXN0cykKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiBvbGRfc3dpdGNoaW50ZXJ2YWwgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzeXMuc2V0c3dpdGNoaW50ZXJ2YWwob2xkX3N3aXRjaGludGVydmFsKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CmluZGV4IDE3YmU4NGIuLjExZTYzZDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CkBAIC0xNzUsNyArMTc1LDcgQEAKICAgICAgICAgZXhjZXB0aW9uID0gY3R5cGVzLnB5X29iamVjdChBc3luY0V4YykKIAogICAgICAgICAjIEZpcnN0IGNoZWNrIGl0IHdvcmtzIHdoZW4gc2V0dGluZyB0aGUgZXhjZXB0aW9uIGZyb20gdGhlIHNhbWUgdGhyZWFkLgotICAgICAgICB0aWQgPSBfdGhyZWFkLmdldF9pZGVudCgpCisgICAgICAgIHRpZCA9IHRocmVhZGluZy5nZXRfaWRlbnQoKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJlc3VsdCA9IHNldF9hc3luY19leGMoY3R5cGVzLmNfbG9uZyh0aWQpLCBleGNlcHRpb24pCkBAIC0yMDQsNyArMjA0LDcgQEAKIAogICAgICAgICBjbGFzcyBXb3JrZXIodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgICAgICAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICAgICAgICAgIHNlbGYuaWQgPSBfdGhyZWFkLmdldF9pZGVudCgpCisgICAgICAgICAgICAgICAgc2VsZi5pZCA9IHRocmVhZGluZy5nZXRfaWRlbnQoKQogICAgICAgICAgICAgICAgIHNlbGYuZmluaXNoZWQgPSBGYWxzZQogCiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtNDA5LDYgKzQwOSwxNCBAQAogICAgICAgICB0LmRhZW1vbiA9IFRydWUKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdkYWVtb24nIGluIHJlcHIodCkpCiAKKyAgICBkZWYgdGVzdF9kZWFtb25fcGFyYW0oc2VsZik6CisgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0LmRhZW1vbikKKyAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQoZGFlbW9uPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHQuZGFlbW9uKQorICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZChkYWVtb249VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQuZGFlbW9uKQorCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2ZvcmsnKSwgJ3Rlc3QgbmVlZHMgZm9yaygpJykKICAgICBkZWYgdGVzdF9kdW1teV90aHJlYWRfYWZ0ZXJfZm9yayhzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMTQzMDg6IGEgZHVtbXkgdGhyZWFkIGluIHRoZSBhY3RpdmUgbGlzdCBkb2Vzbid0IG1lc3MgdXAKQEAgLTQ0NCw3ICs0NTIsNyBAQAogICAgICMgcHJvYmxlbXMgd2l0aCBzb21lIG9wZXJhdGluZyBzeXN0ZW1zIChpc3N1ZSAjMzg2Myk6IHNraXAgcHJvYmxlbWF0aWMgdGVzdHMKICAgICAjIG9uIHBsYXRmb3JtcyBrbm93biB0byBiZWhhdmUgYmFkbHkuCiAgICAgcGxhdGZvcm1zX3RvX3NraXAgPSAoJ2ZyZWVic2Q0JywgJ2ZyZWVic2Q1JywgJ2ZyZWVic2Q2JywgJ25ldGJzZDUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdvczJlbXgnKQorICAgICAgICAgICAgICAgICAgICAgICAgICdvczJlbXgnLCAnaHAtdXgxMScpCiAKICAgICBkZWYgX3J1bl9hbmRfam9pbihzZWxmLCBzY3JpcHQpOgogICAgICAgICBzY3JpcHQgPSAiIiJpZiAxOgpAQCAtNzQyLDYgKzc1MCwxMCBAQAogICAgICAgICB0aHJlYWQuc3RhcnQoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHNldGF0dHIsIHRocmVhZCwgImRhZW1vbiIsIFRydWUpCiAKKyAgICBkZWYgdGVzdF9yZWxlYXNpbmdfdW5hY3F1aXJlZF9sb2NrKHNlbGYpOgorICAgICAgICBsb2NrID0gdGhyZWFkaW5nLkxvY2soKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGxvY2sucmVsZWFzZSkKKwogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywgJ3Rlc3QgbWFjb3N4IHByb2JsZW0nKQogICAgIGRlZiB0ZXN0X3JlY3Vyc2lvbl9saW1pdChzZWxmKToKICAgICAgICAgIyBJc3N1ZSA5NjcwCkBAIC04MDMsNiArODE1LDcgQEAKIGNsYXNzIEJhcnJpZXJUZXN0cyhsb2NrX3Rlc3RzLkJhcnJpZXJUZXN0cyk6CiAgICAgYmFycmllcnR5cGUgPSBzdGF0aWNtZXRob2QodGhyZWFkaW5nLkJhcnJpZXIpCiAKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoTG9ja1Rlc3RzLCBQeVJMb2NrVGVzdHMsIENSTG9ja1Rlc3RzLCBFdmVudFRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZGl0aW9uQXNSTG9ja1Rlc3RzLCBDb25kaXRpb25UZXN0cywKQEAgLTgxMCw3ICs4MjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWRKb2luT25TaHV0ZG93biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGluZ0V4Y2VwdGlvblRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFycmllclRlc3RzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXJyaWVyVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RocmVhZHNpZ25hbHMucHkgYi9MaWIvdGVzdC90ZXN0X3RocmVhZHNpZ25hbHMucHkKaW5kZXggZTBhZjMxZC4uZjk3NWE3NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aHJlYWRzaWduYWxzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkc2lnbmFscy5weQpAQCAtMTQsMTAgKzE0LDggQEAKIHByb2Nlc3NfcGlkID0gb3MuZ2V0cGlkKCkKIHNpZ25hbGxlZF9hbGw9dGhyZWFkLmFsbG9jYXRlX2xvY2soKQogCi0jIElzc3VlICMxMTIyMzogTG9ja3MgYXJlIGltcGxlbWVudGVkIHVzaW5nIGEgbXV0ZXggYW5kIGEgY29uZGl0aW9uIHZhcmlhYmxlIG9mCi0jIHRoZSBwdGhyZWFkIGxpYnJhcnkgb24gRnJlZUJTRDYuIFBPU0lYIGNvbmRpdGlvbiB2YXJpYWJsZXMgY2Fubm90IGJlCi0jIGludGVycnVwdGVkIGJ5IHNpZ25hbHMgKHNlZSBwdGhyZWFkX2NvbmRfd2FpdCBtYW51YWwgcGFnZSkuCi1VU0lOR19QVEhSRUFEX0NPTkQgPSAoc3lzLnBsYXRmb3JtID09ICdmcmVlYnNkNicpCitVU0lOR19QVEhSRUFEX0NPTkQgPSAoc3lzLnRocmVhZF9pbmZvLm5hbWUgPT0gJ3B0aHJlYWQnCisgICAgICAgICAgICAgICAgICAgICAgYW5kIHN5cy50aHJlYWRfaW5mby5sb2NrID09ICdtdXRleCtjb25kJykKIAogZGVmIHJlZ2lzdGVyU2lnbmFscyhmb3JfdXNyMSwgZm9yX3VzcjIsIGZvcl9hbHJtKToKICAgICB1c3IxID0gc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMSwgZm9yX3VzcjEpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RpbWUucHkgYi9MaWIvdGVzdC90ZXN0X3RpbWUucHkKaW5kZXggZDNjNDliYi4uZGEwZjU1NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aW1lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGltZS5weQpAQCAtNCw3ICs0LDE3IEBACiBpbXBvcnQgbG9jYWxlCiBpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgc3lzCi1pbXBvcnQgd2FybmluZ3MKK2ltcG9ydCBwbGF0Zm9ybQordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB0aHJlYWRpbmcgPSBOb25lCisKKyMgTWF4IHllYXIgaXMgb25seSBsaW1pdGVkIGJ5IHRoZSBzaXplIG9mIEMgaW50LgorU0laRU9GX0lOVCA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignU0laRU9GX0lOVCcpIG9yIDQKK1RJTUVfTUFYWUVBUiA9ICgxIDw8IDggKiBTSVpFT0ZfSU5UIC0gMSkgLSAxCitUSU1FX01JTllFQVIgPSAtVElNRV9NQVhZRUFSIC0gMQorCiAKIGNsYXNzIFRpbWVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTE3LDkgKzI3LDUzIEBACiAgICAgICAgIHRpbWUudGltZXpvbmUKICAgICAgICAgdGltZS50em5hbWUKIAorICAgIGRlZiB0ZXN0X3RpbWUoc2VsZik6CisgICAgICAgIHRpbWUudGltZSgpCisgICAgICAgIGluZm8gPSB0aW1lLmdldF9jbG9ja19pbmZvKCd0aW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbmZvLm1vbm90b25pYykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluZm8uYWRqdXN0YWJsZSkKKwogICAgIGRlZiB0ZXN0X2Nsb2NrKHNlbGYpOgogICAgICAgICB0aW1lLmNsb2NrKCkKIAorICAgICAgICBpbmZvID0gdGltZS5nZXRfY2xvY2tfaW5mbygnY2xvY2snKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5mby5tb25vdG9uaWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5mby5hZGp1c3RhYmxlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cih0aW1lLCAnY2xvY2tfZ2V0dGltZScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHRpbWUuY2xvY2tfZ2V0dGltZSgpJykKKyAgICBkZWYgdGVzdF9jbG9ja19yZWFsdGltZShzZWxmKToKKyAgICAgICAgdGltZS5jbG9ja19nZXR0aW1lKHRpbWUuQ0xPQ0tfUkVBTFRJTUUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHRpbWUsICdjbG9ja19nZXR0aW1lJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGltZS5jbG9ja19nZXR0aW1lKCknKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIodGltZSwgJ0NMT0NLX01PTk9UT05JQycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHRpbWUuQ0xPQ0tfTU9OT1RPTklDJykKKyAgICBkZWYgdGVzdF9jbG9ja19tb25vdG9uaWMoc2VsZik6CisgICAgICAgIGEgPSB0aW1lLmNsb2NrX2dldHRpbWUodGltZS5DTE9DS19NT05PVE9OSUMpCisgICAgICAgIGIgPSB0aW1lLmNsb2NrX2dldHRpbWUodGltZS5DTE9DS19NT05PVE9OSUMpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGEsIGIpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHRpbWUsICdjbG9ja19nZXRyZXMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCB0aW1lLmNsb2NrX2dldHJlcygpJykKKyAgICBkZWYgdGVzdF9jbG9ja19nZXRyZXMoc2VsZik6CisgICAgICAgIHJlcyA9IHRpbWUuY2xvY2tfZ2V0cmVzKHRpbWUuQ0xPQ0tfUkVBTFRJTUUpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihyZXMsIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwocmVzLCAxLjApCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHRpbWUsICdjbG9ja19zZXR0aW1lJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGltZS5jbG9ja19zZXR0aW1lKCknKQorICAgIGRlZiB0ZXN0X2Nsb2NrX3NldHRpbWUoc2VsZik6CisgICAgICAgIHQgPSB0aW1lLmNsb2NrX2dldHRpbWUodGltZS5DTE9DS19SRUFMVElNRSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGltZS5jbG9ja19zZXR0aW1lKHRpbWUuQ0xPQ0tfUkVBTFRJTUUsIHQpCisgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgaWYgaGFzYXR0cih0aW1lLCAnQ0xPQ0tfTU9OT1RPTklDJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZS5jbG9ja19zZXR0aW1lLCB0aW1lLkNMT0NLX01PTk9UT05JQywgMCkKKwogICAgIGRlZiB0ZXN0X2NvbnZlcnNpb25zKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWUuY3RpbWUoc2VsZi50KSwKICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLmFzY3RpbWUodGltZS5sb2NhbHRpbWUoc2VsZi50KSkpCkBAIC0yNyw2ICs4MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYudCkpCiAKICAgICBkZWYgdGVzdF9zbGVlcChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdGltZS5zbGVlcCwgLTIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHRpbWUuc2xlZXAsIC0xKQogICAgICAgICB0aW1lLnNsZWVwKDEuMikKIAogICAgIGRlZiB0ZXN0X3N0cmZ0aW1lKHNlbGYpOgpAQCAtNDcsMjggKzEwMywzNCBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgICAgICB0aW1lLnN0cmZ0aW1lKCclZicpCiAKLSAgICBkZWYgX2JvdW5kc19jaGVja2luZyhzZWxmLCBmdW5jPXRpbWUuc3RyZnRpbWUpOgorICAgIGRlZiBfYm91bmRzX2NoZWNraW5nKHNlbGYsIGZ1bmMpOgogICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHN0cmZ0aW1lKCkgY2hlY2tzIHRoZSBib3VuZHMgb2YgdGhlIHZhcmlvdXMgcGFydHMKLSAgICAgICAgI29mIHRoZSB0aW1lIHR1cGxlICgwIGlzIHZhbGlkIGZvciAqYWxsKiB2YWx1ZXMpLgorICAgICAgICAjIG9mIHRoZSB0aW1lIHR1cGxlICgwIGlzIHZhbGlkIGZvciAqYWxsKiB2YWx1ZXMpLgogCiAgICAgICAgICMgVGhlIHllYXIgZmllbGQgaXMgdGVzdGVkIGJ5IG90aGVyIHRlc3QgY2FzZXMgYWJvdmUKIAogICAgICAgICAjIENoZWNrIG1vbnRoIFsxLCAxMl0gKyB6ZXJvIHN1cHBvcnQKKyAgICAgICAgZnVuYygoMTkwMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgLTEpKQorICAgICAgICBmdW5jKCgxOTAwLCAxMiwgMSwgMCwgMCwgMCwgMCwgMSwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAtMSwgMSwgMCwgMCwgMCwgMCwgMSwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxMywgMSwgMCwgMCwgMCwgMCwgMSwgLTEpKQogICAgICAgICAjIENoZWNrIGRheSBvZiBtb250aCBbMSwgMzFdICsgemVybyBzdXBwb3J0CisgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDAsIDAsIDAsIDAsIDAsIDEsIC0xKSkKKyAgICAgICAgZnVuYygoMTkwMCwgMSwgMzEsIDAsIDAsIDAsIDAsIDEsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgLTEsIDAsIDAsIDAsIDAsIDEsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgMzIsIDAsIDAsIDAsIDAsIDEsIC0xKSkKICAgICAgICAgIyBDaGVjayBob3VyIFswLCAyM10KKyAgICAgICAgZnVuYygoMTkwMCwgMSwgMSwgMjMsIDAsIDAsIDAsIDEsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgMSwgLTEsIDAsIDAsIDAsIDEsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgMSwgMjQsIDAsIDAsIDAsIDEsIC0xKSkKICAgICAgICAgIyBDaGVjayBtaW51dGUgWzAsIDU5XQorICAgICAgICBmdW5jKCgxOTAwLCAxLCAxLCAwLCA1OSwgMCwgMCwgMSwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAxLCAwLCAtMSwgMCwgMCwgMSwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLApAQCAtNzgsMTUgKzE0MCwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAxLCAwLCAwLCAtMSwgMCwgMSwgLTEpKQogICAgICAgICAjIEM5OSBvbmx5IHJlcXVpcmVzIGFsbG93aW5nIGZvciBvbmUgbGVhcCBzZWNvbmQsIGJ1dCBQeXRob24ncyBkb2NzIHNheQogICAgICAgICAjIGFsbG93IHR3byBsZWFwIHNlY29uZHMgKDAuLjYxKQorICAgICAgICBmdW5jKCgxOTAwLCAxLCAxLCAwLCAwLCA2MCwgMCwgMSwgLTEpKQorICAgICAgICBmdW5jKCgxOTAwLCAxLCAxLCAwLCAwLCA2MSwgMCwgMSwgLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAxLCAwLCAwLCA2MiwgMCwgMSwgLTEpKQogICAgICAgICAjIE5vIGNoZWNrIGZvciB1cHBlci1ib3VuZCBkYXkgb2Ygd2VlazsKICAgICAgICAgIyAgdmFsdWUgZm9yY2VkIGludG8gcmFuZ2UgYnkgYSBgYCUgN2BgIGNhbGN1bGF0aW9uLgogICAgICAgICAjIFN0YXJ0IGNoZWNrIGF0IC0yIHNpbmNlIGdldHRtYXJnKCkgaW5jcmVtZW50cyB2YWx1ZSBiZWZvcmUgdGFraW5nCiAgICAgICAgICMgIG1vZHVsby4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKCgxOTAwLCAxLCAxLCAwLCAwLCAwLCAtMSwgMSwgLTEpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKCgxOTAwLCAxLCAxLCAwLCAwLCAwLCArNiwgMSwgLTEpKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgMSwgMCwgMCwgMCwgLTIsIDEsIC0xKSkKICAgICAgICAgIyBDaGVjayBkYXkgb2YgdGhlIHllYXIgWzEsIDM2Nl0gKyB6ZXJvIHN1cHBvcnQKKyAgICAgICAgZnVuYygoMTkwMCwgMSwgMSwgMCwgMCwgMCwgMCwgMCwgLTEpKQorICAgICAgICBmdW5jKCgxOTAwLCAxLCAxLCAwLCAwLCAwLCAwLCAzNjYsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgMSwgMCwgMCwgMCwgMCwgLTEsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKQEAgLTk2LDEyICsxNjQsMTMgQEAKICAgICAgICAgc2VsZi5fYm91bmRzX2NoZWNraW5nKGxhbWJkYSB0dXA6IHRpbWUuc3RyZnRpbWUoJycsIHR1cCkpCiAKICAgICBkZWYgdGVzdF9kZWZhdWx0X3ZhbHVlc19mb3JfemVybyhzZWxmKToKLSAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB1c2luZyBhbGwgemVyb3MgdXNlcyB0aGUgcHJvcGVyIGRlZmF1bHQgdmFsdWVzLgotICAgICAgICAjIE5vIHRlc3QgZm9yIGRheWxpZ2h0IHNhdmluZ3Mgc2luY2Ugc3RyZnRpbWUoKSBkb2VzIG5vdCBjaGFuZ2Ugb3V0cHV0Ci0gICAgICAgICMgYmFzZWQgb24gaXRzIHZhbHVlLgorICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHVzaW5nIGFsbCB6ZXJvcyB1c2VzIHRoZSBwcm9wZXIgZGVmYXVsdAorICAgICAgICAjIHZhbHVlcy4gIE5vIHRlc3QgZm9yIGRheWxpZ2h0IHNhdmluZ3Mgc2luY2Ugc3RyZnRpbWUoKSBkb2VzCisgICAgICAgICMgbm90IGNoYW5nZSBvdXRwdXQgYmFzZWQgb24gaXRzIHZhbHVlIGFuZCBubyB0ZXN0IGZvciB5ZWFyCisgICAgICAgICMgYmVjYXVzZSBzeXN0ZW1zIHZhcnkgaW4gdGhlaXIgc3VwcG9ydCBmb3IgeWVhciAwLgogICAgICAgICBleHBlY3RlZCA9ICIyMDAwIDAxIDAxIDAwIDAwIDAwIDEgMDAxIgogICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHJlc3VsdCA9IHRpbWUuc3RyZnRpbWUoIiVZICVtICVkICVIICVNICVTICV3ICVqIiwgKDAsKSo5KQorICAgICAgICAgICAgcmVzdWx0ID0gdGltZS5zdHJmdGltZSgiJVkgJW0gJWQgJUggJU0gJVMgJXcgJWoiLCAoMjAwMCwpKygwLCkqOCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVzdWx0KQogCiAgICAgZGVmIHRlc3Rfc3RycHRpbWUoc2VsZik6CkBAIC0xMjgsMTEgKzE5NywxMyBAQAogICAgICAgICB0aW1lLmFzY3RpbWUodGltZS5nbXRpbWUoc2VsZi50KSkKIAogICAgICAgICAjIE1heCB5ZWFyIGlzIG9ubHkgbGltaXRlZCBieSB0aGUgc2l6ZSBvZiBDIGludC4KLSAgICAgICAgc2l6ZW9mX2ludCA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignU0laRU9GX0lOVCcpIG9yIDQKLSAgICAgICAgYmlneWVhciA9ICgxIDw8IDggKiBzaXplb2ZfaW50IC0gMSkgLSAxCi0gICAgICAgIGFzYyA9IHRpbWUuYXNjdGltZSgoYmlneWVhciwgNiwgMSkgKyAoMCwpKjYpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXNjWy1sZW4oc3RyKGJpZ3llYXIpKTpdLCBzdHIoYmlneWVhcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHRpbWUuYXNjdGltZSwgKGJpZ3llYXIgKyAxLCkgKyAoMCwpKjgpCisgICAgICAgIGZvciBiaWd5ZWFyIGluIFRJTUVfTUFYWUVBUiwgVElNRV9NSU5ZRUFSOgorICAgICAgICAgICAgYXNjID0gdGltZS5hc2N0aW1lKChiaWd5ZWFyLCA2LCAxKSArICgwLCkgKiA2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc2NbLWxlbihzdHIoYmlneWVhcikpOl0sIHN0cihiaWd5ZWFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgdGltZS5hc2N0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoVElNRV9NQVhZRUFSICsgMSwpICsgKDAsKSAqIDgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHRpbWUuYXNjdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKFRJTUVfTUlOWUVBUiAtIDEsKSArICgwLCkgKiA4KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHRpbWUuYXNjdGltZSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0aW1lLmFzY3RpbWUsICgpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHRpbWUuYXNjdGltZSwgKDAsKSAqIDEwKQpAQCAtMTU1LDggKzIyNiw4IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZS5jdGltZSh0ZXN0dmFsKVsyMDpdLCBzdHIoeWVhcikpCiAKLSAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKHRpbWUsICJ0enNldCIpLAotICAgICAgICAidGltZSBtb2R1bGUgaGFzIG5vIGF0dHJpYnV0ZSB0enNldCIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cih0aW1lLCAidHpzZXQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidGltZSBtb2R1bGUgaGFzIG5vIGF0dHJpYnV0ZSB0enNldCIpCiAgICAgZGVmIHRlc3RfdHpzZXQoc2VsZik6CiAKICAgICAgICAgZnJvbSBvcyBpbXBvcnQgZW52aXJvbgpAQCAtMjA4LDExICsyNzksMTMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodGltZS5nbXRpbWUoeG1hczIwMDIpLCB0aW1lLmxvY2FsdGltZSh4bWFzMjAwMikpCiAKICAgICAgICAgICAgICMgSXNzdWUgIzExODg2OiBBdXN0cmFsaWFuIEVhc3Rlcm4gU3RhbmRhcmQgVGltZSAoVVRDKzEwKSBpcyBjYWxsZWQKLSAgICAgICAgICAgICMgIkVTVCIgKGFzIEVhc3Rlcm4gU3RhbmRhcmQgVGltZSwgVVRDLTUpIGluc3RlYWQgb2YgIkFFU1QiIG9uIHNvbWUKLSAgICAgICAgICAgICMgb3BlcmF0aW5nIHN5c3RlbXMgKGUuZy4gRnJlZUJTRCksIHdoaWNoIGlzIHdyb25nLiBTZWUgZm9yIGV4YW1wbGUKLSAgICAgICAgICAgICMgdGhpcyBidWc6IGh0dHA6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz05MzgxMAorICAgICAgICAgICAgIyAiRVNUIiAoYXMgRWFzdGVybiBTdGFuZGFyZCBUaW1lLCBVVEMtNSkgaW5zdGVhZCBvZiAiQUVTVCIKKyAgICAgICAgICAgICMgKG5vbi1EU1QgdGltZXpvbmUpLCBhbmQgIkVEVCIgaW5zdGVhZCBvZiAiQUVEVCIgKERTVCB0aW1lem9uZSksCisgICAgICAgICAgICAjIG9uIHNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgKGUuZy4gRnJlZUJTRCksIHdoaWNoIGlzIHdyb25nLiBTZWUgZm9yCisgICAgICAgICAgICAjIGV4YW1wbGUgdGhpcyBidWc6CisgICAgICAgICAgICAjIGh0dHA6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz05MzgxMAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbih0aW1lLnR6bmFtZVswXSwgKCdBRVNUJyAnRVNUJyksIHRpbWUudHpuYW1lWzBdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRpbWUudHpuYW1lWzFdID09ICdBRURUJywgc3RyKHRpbWUudHpuYW1lWzFdKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0aW1lLnR6bmFtZVsxXSBpbiAoJ0FFRFQnLCAnRURUJyksIHN0cih0aW1lLnR6bmFtZVsxXSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0aW1lLnR6bmFtZSksIDIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWUuZGF5bGlnaHQsIDEpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWUudGltZXpvbmUsIC0zNjAwMCkKQEAgLTIzNSw3ICszMDgsNyBAQAogICAgICAgICAjIHJlc3VsdHMhKS4KICAgICAgICAgZm9yIGZ1bmMgaW4gdGltZS5jdGltZSwgdGltZS5nbXRpbWUsIHRpbWUubG9jYWx0aW1lOgogICAgICAgICAgICAgZm9yIHVucmVhc29uYWJsZSBpbiAtMWUyMDAsIDFlMjAwOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsIHVucmVhc29uYWJsZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBmdW5jLCB1bnJlYXNvbmFibGUpCiAKICAgICBkZWYgdGVzdF9jdGltZV93aXRob3V0X2FyZyhzZWxmKToKICAgICAgICAgIyBOb3Qgc3VyZSBob3cgdG8gY2hlY2sgdGhlIHZhbHVlcywgc2luY2UgdGhlIGNsb2NrIGNvdWxkIHRpY2sKQEAgLTI1OCw2ICszMzEsMTE3IEBACiAgICAgICAgIHQxID0gdGltZS5ta3RpbWUobHQxKQogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKHQxLCB0MCwgZGVsdGE9MC4yKQogCisgICAgZGVmIHRlc3RfbWt0aW1lKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxNzI2Njg3CisgICAgICAgIGZvciB0IGluICgtMiwgLTEsIDAsIDEpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHR0ID0gdGltZS5sb2NhbHRpbWUodCkKKyAgICAgICAgICAgIGV4Y2VwdCAoT3ZlcmZsb3dFcnJvciwgT1NFcnJvcik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWUubWt0aW1lKHR0KSwgdCkKKworICAgICMgSXNzdWUgIzEzMzA5OiBwYXNzaW5nIGV4dHJlbWUgdmFsdWVzIHRvIG1rdGltZSgpIG9yIGxvY2FsdGltZSgpCisgICAgIyBib3JrcyB0aGUgZ2xpYmMncyBpbnRlcm5hbCB0aW1lem9uZSBkYXRhLgorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHBsYXRmb3JtLmxpYmNfdmVyKClbMF0gIT0gJ2dsaWJjJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZGlzYWJsZWQgYmVjYXVzZSBvZiBhIGJ1ZyBpbiBnbGliYy4gSXNzdWUgIzEzMzA5IikKKyAgICBkZWYgdGVzdF9ta3RpbWVfZXJyb3Ioc2VsZik6CisgICAgICAgICMgSXQgbWF5IG5vdCBiZSBwb3NzaWJsZSB0byByZWxpYWJseSBtYWtlIG1rdGltZSByZXR1cm4gZXJyb3IKKyAgICAgICAgIyBvbiBhbGwgcGxhdGZvbS4gIFRoaXMgd2lsbCBtYWtlIHN1cmUgdGhhdCBubyBvdGhlciBleGNlcHRpb24KKyAgICAgICAgIyB0aGFuIE92ZXJmbG93RXJyb3IgaXMgcmFpc2VkIGZvciBhbiBleHRyZW1lIHZhbHVlLgorICAgICAgICB0dCA9IHRpbWUuZ210aW1lKHNlbGYudCkKKyAgICAgICAgdHpuYW1lID0gdGltZS5zdHJmdGltZSgnJVonLCB0dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0em5hbWUsICdMTVQnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0aW1lLm1rdGltZSgoLTEsIDEsIDEsIDAsIDAsIDAsIC0xLCAtMSwgLTEpKQorICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lLnN0cmZ0aW1lKCclWicsIHR0KSwgdHpuYW1lKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cih0aW1lLCAnbW9ub3RvbmljJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGltZS5tb25vdG9uaWMnKQorICAgIGRlZiB0ZXN0X21vbm90b25pYyhzZWxmKToKKyAgICAgICAgdDEgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgIHRpbWUuc2xlZXAoMC4xKQorICAgICAgICB0MiA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgZHQgPSB0MiAtIHQxCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcih0MiwgdDEpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoZHQsIDAuMSwgZGVsdGE9MC4yKQorCisgICAgICAgIGluZm8gPSB0aW1lLmdldF9jbG9ja19pbmZvKCdtb25vdG9uaWMnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5mby5tb25vdG9uaWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5mby5hZGp1c3RhYmxlKQorCisgICAgZGVmIHRlc3RfcGVyZl9jb3VudGVyKHNlbGYpOgorICAgICAgICB0aW1lLnBlcmZfY291bnRlcigpCisKKyAgICBkZWYgdGVzdF9wcm9jZXNzX3RpbWUoc2VsZik6CisgICAgICAgICMgcHJvY2Vzc190aW1lKCkgc2hvdWxkIG5vdCBpbmNsdWRlIHRpbWUgc3BlbmQgZHVyaW5nIGEgc2xlZXAKKyAgICAgICAgc3RhcnQgPSB0aW1lLnByb2Nlc3NfdGltZSgpCisgICAgICAgIHRpbWUuc2xlZXAoMC4xMDApCisgICAgICAgIHN0b3AgPSB0aW1lLnByb2Nlc3NfdGltZSgpCisgICAgICAgICMgdXNlIDIwIG1zIGJlY2F1c2UgcHJvY2Vzc190aW1lKCkgaGFzIHVzdWFsbHkgYSByZXNvbHV0aW9uIG9mIDE1IG1zCisgICAgICAgICMgb24gV2luZG93cworICAgICAgICBzZWxmLmFzc2VydExlc3Moc3RvcCAtIHN0YXJ0LCAwLjAyMCkKKworICAgICAgICBpbmZvID0gdGltZS5nZXRfY2xvY2tfaW5mbygncHJvY2Vzc190aW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluZm8ubW9ub3RvbmljKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluZm8uYWRqdXN0YWJsZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIodGltZSwgJ21vbm90b25pYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHRpbWUubW9ub3RvbmljJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHRpbWUsICdjbG9ja19zZXR0aW1lJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGltZS5jbG9ja19zZXR0aW1lJykKKyAgICBkZWYgdGVzdF9tb25vdG9uaWNfc2V0dGltZShzZWxmKToKKyAgICAgICAgdDEgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgIHJlYWx0aW1lID0gdGltZS5jbG9ja19nZXR0aW1lKHRpbWUuQ0xPQ0tfUkVBTFRJTUUpCisgICAgICAgICMganVtcCBiYWNrd2FyZCB3aXRoIGFuIG9mZnNldCBvZiAxIGhvdXIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGltZS5jbG9ja19zZXR0aW1lKHRpbWUuQ0xPQ0tfUkVBTFRJTUUsIHJlYWx0aW1lIC0gMzYwMCkKKyAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvciBhcyBlcnI6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KGVycikKKyAgICAgICAgdDIgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgIHRpbWUuY2xvY2tfc2V0dGltZSh0aW1lLkNMT0NLX1JFQUxUSU1FLCByZWFsdGltZSkKKyAgICAgICAgIyBtb25vdG9uaWMgbXVzdCBub3QgYmUgYWZmZWN0ZWQgYnkgc3lzdGVtIGNsb2NrIHVwZGF0ZXMKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwodDIsIHQxKQorCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2ZhaWx1cmUoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzEzODQ3OiBjaGVjayBmb3IgbG9jYWx0aW1lKCkgZmFpbHVyZQorICAgICAgICBpbnZhbGlkX3RpbWVfdCA9IE5vbmUKKyAgICAgICAgZm9yIHRpbWVfdCBpbiAoLTEsIDIqKjMwLCAyKiozMywgMioqNjApOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRpbWUubG9jYWx0aW1lKHRpbWVfdCkKKyAgICAgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5lZWQgNjQtYml0IHRpbWVfdCIpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICBpbnZhbGlkX3RpbWVfdCA9IHRpbWVfdAorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIGludmFsaWRfdGltZV90IGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJ1bmFibGUgdG8gZmluZCBhbiBpbnZhbGlkIHRpbWVfdCB2YWx1ZSIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgdGltZS5sb2NhbHRpbWUsIGludmFsaWRfdGltZV90KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCB0aW1lLmN0aW1lLCBpbnZhbGlkX3RpbWVfdCkKKworICAgIGRlZiB0ZXN0X2dldF9jbG9ja19pbmZvKHNlbGYpOgorICAgICAgICBjbG9ja3MgPSBbJ2Nsb2NrJywgJ3BlcmZfY291bnRlcicsICdwcm9jZXNzX3RpbWUnLCAndGltZSddCisgICAgICAgIGlmIGhhc2F0dHIodGltZSwgJ21vbm90b25pYycpOgorICAgICAgICAgICAgY2xvY2tzLmFwcGVuZCgnbW9ub3RvbmljJykKKworICAgICAgICBmb3IgbmFtZSBpbiBjbG9ja3M6CisgICAgICAgICAgICBpbmZvID0gdGltZS5nZXRfY2xvY2tfaW5mbyhuYW1lKQorICAgICAgICAgICAgI3NlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbmZvLCBkaWN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluZm8uaW1wbGVtZW50YXRpb24sIHN0cikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5mby5pbXBsZW1lbnRhdGlvbiwgJycpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5mby5tb25vdG9uaWMsIGJvb2wpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5mby5yZXNvbHV0aW9uLCBmbG9hdCkKKyAgICAgICAgICAgICMgMC4wIDwgcmVzb2x1dGlvbiA8PSAxLjAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihpbmZvLnJlc29sdXRpb24sIDAuMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGluZm8ucmVzb2x1dGlvbiwgMS4wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluZm8uYWRqdXN0YWJsZSwgYm9vbCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0aW1lLmdldF9jbG9ja19pbmZvLCAneHh4JykKKworCiBjbGFzcyBUZXN0TG9jYWxlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYub2xkbG9jID0gbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQUxMKQpAQCAtMjc2LDE5ICs0NjAsMTIgQEAKIAogCiBjbGFzcyBfQmFzZVllYXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBhY2NlcHQyZHllYXIgPSBOb25lCi0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuc2F2ZWRfYWNjZXB0MmR5ZWFyID0gdGltZS5hY2NlcHQyZHllYXIKLSAgICAgICAgdGltZS5hY2NlcHQyZHllYXIgPSBzZWxmLmFjY2VwdDJkeWVhcgotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICB0aW1lLmFjY2VwdDJkeWVhciA9IHNlbGYuc2F2ZWRfYWNjZXB0MmR5ZWFyCi0KICAgICBkZWYgeWVhcnN0cihzZWxmLCB5KToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAKIGNsYXNzIF9UZXN0QXNjdGltZVllYXI6CisgICAgX2Zvcm1hdCA9ICclZCcKKwogICAgIGRlZiB5ZWFyc3RyKHNlbGYsIHkpOgogICAgICAgICByZXR1cm4gdGltZS5hc2N0aW1lKCh5LCkgKyAoMCwpICogOCkuc3BsaXQoKVstMV0KIApAQCAtMjk4LDExNCArNDc1LDIxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cigxMjM0NTY3ODkpLCAnMTIzNDU2Nzg5JykKIAogY2xhc3MgX1Rlc3RTdHJmdGltZVllYXI6Ci0gICAgZGVmIHllYXJzdHIoc2VsZiwgeSk6Ci0gICAgICAgIHJldHVybiB0aW1lLnN0cmZ0aW1lKCclWScsICh5LCkgKyAoMCwpICogOCkuc3BsaXQoKVstMV0KIAotICAgIGRlZiB0ZXN0X2xhcmdlX3llYXIoc2VsZik6CisgICAgIyBJc3N1ZSAxMzMwNTogIEZvciB5ZWFycyA8IDEwMDAsIHRoZSB2YWx1ZSBpcyBub3QgYWx3YXlzCisgICAgIyBwYWRkZWQgdG8gNCBkaWdpdHMgYWNyb3NzIHBsYXRmb3Jtcy4gIFRoZSBDIHN0YW5kYXJkCisgICAgIyBhc3N1bWVzIHllYXIgPj0gMTkwMCwgc28gaXQgZG9lcyBub3Qgc3BlY2lmeSB0aGUgbnVtYmVyCisgICAgIyBvZiBkaWdpdHMuCisKKyAgICBpZiB0aW1lLnN0cmZ0aW1lKCclWScsICgxLCkgKyAoMCwpICogOCkgPT0gJzAwMDEnOgorICAgICAgICBfZm9ybWF0ID0gJyUwNGQnCisgICAgZWxzZToKKyAgICAgICAgX2Zvcm1hdCA9ICclZCcKKworICAgIGRlZiB5ZWFyc3RyKHNlbGYsIHkpOgorICAgICAgICByZXR1cm4gdGltZS5zdHJmdGltZSgnJVknLCAoeSwpICsgKDAsKSAqIDgpCisKKyAgICBkZWYgdGVzdF80ZHllYXIoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCB3ZSBjYW4gcmV0dXJuIHRoZSB6ZXJvIHBhZGRlZCB2YWx1ZS4KKyAgICAgICAgaWYgc2VsZi5fZm9ybWF0ID09ICclMDRkJzoKKyAgICAgICAgICAgIHNlbGYudGVzdF95ZWFyKCclMDRkJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRlZiB5ZWFyNGQoeSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRpbWUuc3RyZnRpbWUoJyU0WScsICh5LCkgKyAoMCwpICogOCkKKyAgICAgICAgICAgIHNlbGYudGVzdF95ZWFyKCclMDRkJywgZnVuYz15ZWFyNGQpCisKKyAgICBkZWYgc2tpcF9pZl9ub3Rfc3VwcG9ydGVkKHkpOgorICAgICAgICBtc2cgPSAic3RyZnRpbWUoKSBpcyBsaW1pdGVkIHRvIFsxOyA5OTk5XSB3aXRoIFZpc3VhbCBTdHVkaW8iCiAgICAgICAgICMgQ2hlY2sgdGhhdCBpdCBkb2Vzbid0IGNyYXNoIGZvciB5ZWFyID4gOTk5OQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0ZXh0ID0gc2VsZi55ZWFyc3RyKDEyMzQ1KQorICAgICAgICAgICAgdGltZS5zdHJmdGltZSgnJVknLCAoeSwpICsgKDAsKSAqIDgpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgIyBzdHJmdGltZSgpIGlzIGxpbWl0ZWQgdG8gWzE7IDk5OTldIHdpdGggVmlzdWFsIFN0dWRpbwotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgJzEyMzQ1JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoMTIzNDU2Nzg5KSwgJzEyMzQ1Njc4OScpCisgICAgICAgICAgICBjb25kID0gRmFsc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbmQgPSBUcnVlCisgICAgICAgIHJldHVybiB1bml0dGVzdC5za2lwVW5sZXNzKGNvbmQsIG1zZykKIAotY2xhc3MgX1Rlc3QyZFllYXIoX0Jhc2VZZWFyVGVzdCk6Ci0gICAgYWNjZXB0MmR5ZWFyID0gMQorICAgIEBza2lwX2lmX25vdF9zdXBwb3J0ZWQoMTAwMDApCisgICAgZGVmIHRlc3RfbGFyZ2VfeWVhcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkudGVzdF9sYXJnZV95ZWFyKCkKIAotICAgIGRlZiB0ZXN0X3llYXIoc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoMCksICcyMDAwJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKDY5KSwgJzE5NjknKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoNjgpLCAnMjA2OCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cig5OSksICcxOTk5JykKKyAgICBAc2tpcF9pZl9ub3Rfc3VwcG9ydGVkKDApCisgICAgZGVmIHRlc3RfbmVnYXRpdmUoc2VsZik6CisgICAgICAgIHJldHVybiBzdXBlcigpLnRlc3RfbmVnYXRpdmUoKQogCi0gICAgZGVmIHRlc3RfaW52YWxpZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi55ZWFyc3RyLCAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi55ZWFyc3RyLCAxMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYueWVhcnN0ciwgOTk5KQorICAgIGRlbCBza2lwX2lmX25vdF9zdXBwb3J0ZWQKKwogCiBjbGFzcyBfVGVzdDRkWWVhcihfQmFzZVllYXJUZXN0KToKLSAgICBhY2NlcHQyZHllYXIgPSAwCisgICAgX2Zvcm1hdCA9ICclZCcKIAotICAgIGRlZiB0ZXN0X3llYXIoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi55ZWFyc3RyKDEpLCAgICAgKCcxJywgJzAwMDEnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnllYXJzdHIoNjgpLCAgICgnNjgnLCAnMDA2OCcpKQotICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYueWVhcnN0cig2OSksICAgKCc2OScsICcwMDY5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi55ZWFyc3RyKDk5KSwgICAoJzk5JywgJzAwOTknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnllYXJzdHIoOTk5KSwgKCc5OTknLCAnMDk5OScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cig5OTk5KSwgJzk5OTknKQorICAgIGRlZiB0ZXN0X3llYXIoc2VsZiwgZm10PU5vbmUsIGZ1bmM9Tm9uZSk6CisgICAgICAgIGZtdCA9IGZtdCBvciBzZWxmLl9mb3JtYXQKKyAgICAgICAgZnVuYyA9IGZ1bmMgb3Igc2VsZi55ZWFyc3RyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYygxKSwgICAgZm10ICUgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKDY4KSwgICBmbXQgJSA2OCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKDY5KSwgICBmbXQgJSA2OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKDk5KSwgICBmbXQgJSA5OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKDk5OSksICBmbXQgJSA5OTkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYyg5OTk5KSwgZm10ICUgOTk5OSkKKworICAgIGRlZiB0ZXN0X2xhcmdlX3llYXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKDEyMzQ1KSwgJzEyMzQ1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoMTIzNDU2Nzg5KSwgJzEyMzQ1Njc4OScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKFRJTUVfTUFYWUVBUiksIHN0cihUSU1FX01BWFlFQVIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZWxmLnllYXJzdHIsIFRJTUVfTUFYWUVBUiArIDEpCiAKICAgICBkZWYgdGVzdF9uZWdhdGl2ZShzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGV4dCA9IHNlbGYueWVhcnN0cigtMSkKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAjIHN0cmZ0aW1lKCkgaXMgbGltaXRlZCB0byBbMTsgOTk5OV0gd2l0aCBWaXN1YWwgU3R1ZGlvCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXh0LCAoJy0xJywgJy0wMDEnKSkKLQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cigtMSksIHNlbGYuX2Zvcm1hdCAlIC0xKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cigtMTIzNCksICctMTIzNCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKC0xMjM0NTYpLCAnLTEyMzQ1NicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKC0xMjM0NTY3ODkpLCBzdHIoLTEyMzQ1Njc4OSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKC0xMjM0NTY3ODkwKSwgc3RyKC0xMjM0NTY3ODkwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoVElNRV9NSU5ZRUFSICsgMTkwMCksIHN0cihUSU1FX01JTllFQVIgKyAxOTAwKSkKKyAgICAgICAgIyBJc3N1ZSAjMTMzMTI6IGl0IG1heSByZXR1cm4gd3JvbmcgdmFsdWUgZm9yIHllYXIgPCBUSU1FX01JTllFQVIgKyAxOTAwCisgICAgICAgICMgU2tpcCB0aGUgdmFsdWUgdGVzdCwgYnV0IGNoZWNrIHRoYXQgbm8gZXJyb3IgaXMgcmFpc2VkCisgICAgICAgIHNlbGYueWVhcnN0cihUSU1FX01JTllFQVIpCisgICAgICAgICMgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoVElNRV9NSU5ZRUFSKSwgc3RyKFRJTUVfTUlOWUVBUikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNlbGYueWVhcnN0ciwgVElNRV9NSU5ZRUFSIC0gMSkKIAogCi0gICAgZGVmIHRlc3RfbWt0aW1lKHNlbGYpOgotICAgICAgICAjIElzc3VlICMxNzI2Njg3Ci0gICAgICAgIGZvciB0IGluICgtMiwgLTEsIDAsIDEpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHR0ID0gdGltZS5sb2NhbHRpbWUodCkKLSAgICAgICAgICAgIGV4Y2VwdCAoT3ZlcmZsb3dFcnJvciwgVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWUubWt0aW1lKHR0KSwgdCkKLSAgICAgICAgIyBJdCBtYXkgbm90IGJlIHBvc3NpYmxlIHRvIHJlbGlhYmx5IG1ha2UgbWt0aW1lIHJldHVybiBlcnJvcgotICAgICAgICAjIG9uIGFsbCBwbGF0Zm9tLiAgVGhpcyB3aWxsIG1ha2Ugc3VyZSB0aGF0IG5vIG90aGVyIGV4Y2VwdGlvbgotICAgICAgICAjIHRoYW4gT3ZlcmZsb3dFcnJvciBpcyByYWlzZWQgZm9yIGFuIGV4dHJlbWUgdmFsdWUuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRpbWUubWt0aW1lKCgtMSwgMSwgMSwgMCwgMCwgMCwgLTEsIC0xLCAtMSkpCi0gICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgotICAgICAgICAgICAgcGFzcwotCi1jbGFzcyBUZXN0QXNjdGltZUFjY2VwdDJkWWVhcihfVGVzdEFzY3RpbWVZZWFyLCBfVGVzdDJkWWVhcik6Ci0gICAgcGFzcwotCi1jbGFzcyBUZXN0U3RyZnRpbWVBY2NlcHQyZFllYXIoX1Rlc3RTdHJmdGltZVllYXIsIF9UZXN0MmRZZWFyKToKLSAgICBwYXNzCi0KIGNsYXNzIFRlc3RBc2N0aW1lNGR5ZWFyKF9UZXN0QXNjdGltZVllYXIsIF9UZXN0NGRZZWFyKToKICAgICBwYXNzCiAKIGNsYXNzIFRlc3RTdHJmdGltZTRkeWVhcihfVGVzdFN0cmZ0aW1lWWVhciwgX1Rlc3Q0ZFllYXIpOgogICAgIHBhc3MKIAotY2xhc3MgVGVzdDJkeWVhckJvb2woX1Rlc3RBc2N0aW1lWWVhciwgX1Rlc3QyZFllYXIpOgotICAgIGFjY2VwdDJkeWVhciA9IFRydWUKIAotY2xhc3MgVGVzdDRkeWVhckJvb2woX1Rlc3RBc2N0aW1lWWVhciwgX1Rlc3Q0ZFllYXIpOgotICAgIGFjY2VwdDJkeWVhciA9IEZhbHNlCitjbGFzcyBUZXN0UHl0aW1lKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuaW52YWxpZF92YWx1ZXMgPSAoCisgICAgICAgICAgICAtKDIgKiogMTAwKSwgMiAqKiAxMDAsCisgICAgICAgICAgICAtKDIuMCAqKiAxMDAuMCksIDIuMCAqKiAxMDAuMCwKKyAgICAgICAgKQogCi1jbGFzcyBUZXN0QWNjZXB0MlllYXJCYWQoX1Rlc3RBc2N0aW1lWWVhciwgX0Jhc2VZZWFyVGVzdCk6Ci0gICAgY2xhc3MgWDoKLSAgICAgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdib28nKQotICAgIGFjY2VwdDJkeWVhciA9IFgoKQotICAgIGRlZiB0ZXN0XzJkeWVhcihzZWxmKToKLSAgICAgICAgcGFzcwotICAgIGRlZiB0ZXN0X2ludmFsaWQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgc2VsZi55ZWFyc3RyLCAyMDApCisgICAgZGVmIHRlc3RfdGltZV90KHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1lX3QKKyAgICAgICAgZm9yIG9iaiwgdGltZV90IGluICgKKyAgICAgICAgICAgICgwLCAwKSwKKyAgICAgICAgICAgICgtMSwgLTEpLAorICAgICAgICAgICAgKC0xLjAsIC0xKSwKKyAgICAgICAgICAgICgtMS45LCAtMSksCisgICAgICAgICAgICAoMS4wLCAxKSwKKyAgICAgICAgICAgICgxLjksIDEpLAorICAgICAgICApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweXRpbWVfb2JqZWN0X3RvX3RpbWVfdChvYmopLCB0aW1lX3QpCiAKKyAgICAgICAgZm9yIGludmFsaWQgaW4gc2VsZi5pbnZhbGlkX3ZhbHVlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHB5dGltZV9vYmplY3RfdG9fdGltZV90LCBpbnZhbGlkKQorCisgICAgZGVmIHRlc3RfdGltZXZhbChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZXZhbAorICAgICAgICBmb3Igb2JqLCB0aW1ldmFsIGluICgKKyAgICAgICAgICAgICgwLCAoMCwgMCkpLAorICAgICAgICAgICAgKC0xLCAoLTEsIDApKSwKKyAgICAgICAgICAgICgtMS4wLCAoLTEsIDApKSwKKyAgICAgICAgICAgICgxZS02LCAoMCwgMSkpLAorICAgICAgICAgICAgKC0xZS02LCAoLTEsIDk5OTk5OSkpLAorICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwKSksCisgICAgICAgICAgICAoMS4xMjM0NTYwLCAoMSwgMTIzNDU2KSksCisgICAgICAgICAgICAoMS4xMjM0NTY5LCAoMSwgMTIzNDU2KSksCisgICAgICAgICAgICAoLTEuMTIzNDU2MCwgKC0yLCA4NzY1NDQpKSwKKyAgICAgICAgICAgICgtMS4xMjM0NTYxLCAoLTIsIDg3NjU0MykpLAorICAgICAgICApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwob2JqKSwgdGltZXZhbCkKKworICAgICAgICBmb3IgaW52YWxpZCBpbiBzZWxmLmludmFsaWRfdmFsdWVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcHl0aW1lX29iamVjdF90b190aW1ldmFsLCBpbnZhbGlkKQorCisgICAgZGVmIHRlc3RfdGltZXNwZWMoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjCisgICAgICAgIGZvciBvYmosIHRpbWVzcGVjIGluICgKKyAgICAgICAgICAgICgwLCAoMCwgMCkpLAorICAgICAgICAgICAgKC0xLCAoLTEsIDApKSwKKyAgICAgICAgICAgICgtMS4wLCAoLTEsIDApKSwKKyAgICAgICAgICAgICgxZS05LCAoMCwgMSkpLAorICAgICAgICAgICAgKC0xZS05LCAoLTEsIDk5OTk5OTk5OSkpLAorICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwMDAwKSksCisgICAgICAgICAgICAoMS4xMjM0NTY3ODkwLCAoMSwgMTIzNDU2Nzg5KSksCisgICAgICAgICAgICAoMS4xMjM0NTY3ODk5LCAoMSwgMTIzNDU2Nzg5KSksCisgICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MCwgKC0yLCA4NzY1NDMyMTEpKSwKKyAgICAgICAgICAgICgtMS4xMjM0NTY3ODkxLCAoLTIsIDg3NjU0MzIxMCkpLAorICAgICAgICApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjKG9iaiksIHRpbWVzcGVjKQorCisgICAgICAgIGZvciBpbnZhbGlkIGluIHNlbGYuaW52YWxpZF92YWx1ZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjLCBpbnZhbGlkKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGltZS5fU1RSVUNUX1RNX0lURU1TID09IDExLCAibmVlZHMgdG1fem9uZSBzdXBwb3J0IikKKyAgICBkZWYgdGVzdF9sb2NhbHRpbWVfdGltZXpvbmUoc2VsZik6CisKKyAgICAgICAgIyBHZXQgdGhlIGxvY2FsdGltZSBhbmQgZXhhbWluZSBpdCBmb3IgdGhlIG9mZnNldCBhbmQgem9uZS4KKyAgICAgICAgbHQgPSB0aW1lLmxvY2FsdGltZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGx0LCAidG1fZ210b2ZmIikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGx0LCAidG1fem9uZSIpKQorCisgICAgICAgICMgU2VlIGlmIHRoZSBvZmZzZXQgYW5kIHpvbmUgYXJlIHNpbWlsYXIgdG8gdGhlIG1vZHVsZQorICAgICAgICAjIGF0dHJpYnV0ZXMuCisgICAgICAgIGlmIGx0LnRtX2dtdG9mZiBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBoYXNhdHRyKHRpbWUsICJ0aW1lem9uZSIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsdC50bV9nbXRvZmYsIC1bdGltZS50aW1lem9uZSwgdGltZS5hbHR6b25lXVtsdC50bV9pc2RzdF0pCisgICAgICAgIGlmIGx0LnRtX3pvbmUgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgaGFzYXR0cih0aW1lLCAidHpuYW1lIikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGx0LnRtX3pvbmUsIHRpbWUudHpuYW1lW2x0LnRtX2lzZHN0XSkKKworICAgICAgICAjIFRyeSBhbmQgbWFrZSBVTklYIHRpbWVzIGZyb20gdGhlIGxvY2FsdGltZSBhbmQgYSA5LXR1cGxlCisgICAgICAgICMgY3JlYXRlZCBmcm9tIHRoZSBsb2NhbHRpbWUuIFRlc3QgdG8gc2VlIHRoYXQgdGhlIHRpbWVzIGFyZQorICAgICAgICAjIHRoZSBzYW1lLgorICAgICAgICB0ID0gdGltZS5ta3RpbWUobHQpOyB0OSA9IHRpbWUubWt0aW1lKGx0Wzo5XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCB0OSkKKworICAgICAgICAjIE1ha2UgbG9jYWx0aW1lcyBmcm9tIHRoZSBVTklYIHRpbWVzIGFuZCBjb21wYXJlIHRoZW0gdG8KKyAgICAgICAgIyB0aGUgb3JpZ2luYWwgbG9jYWx0aW1lLCB0aHVzIG1ha2luZyBhIHJvdW5kIHRyaXAuCisgICAgICAgIG5ld19sdCA9IHRpbWUubG9jYWx0aW1lKHQpOyBuZXdfbHQ5ID0gdGltZS5sb2NhbHRpbWUodDkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2x0LCBsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbHQudG1fZ210b2ZmLCBsdC50bV9nbXRvZmYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2x0LnRtX3pvbmUsIGx0LnRtX3pvbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2x0OSwgbHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2x0LnRtX2dtdG9mZiwgbHQudG1fZ210b2ZmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19sdDkudG1fem9uZSwgbHQudG1fem9uZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRpbWUuX1NUUlVDVF9UTV9JVEVNUyA9PSAxMSwgIm5lZWRzIHRtX3pvbmUgc3VwcG9ydCIpCisgICAgZGVmIHRlc3Rfc3RycHRpbWVfdGltZXpvbmUoc2VsZik6CisgICAgICAgIHQgPSB0aW1lLnN0cnB0aW1lKCJVVEMiLCAiJVoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQudG1fem9uZSwgJ1VUQycpCisgICAgICAgIHQgPSB0aW1lLnN0cnB0aW1lKCIrMDUwMCIsICIleiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC50bV9nbXRvZmYsIDUgKiAzNjAwKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGltZS5fU1RSVUNUX1RNX0lURU1TID09IDExLCAibmVlZHMgdG1fem9uZSBzdXBwb3J0IikKKyAgICBkZWYgdGVzdF9zaG9ydF90aW1lcyhzZWxmKToKKworICAgICAgICBpbXBvcnQgcGlja2xlCisKKyAgICAgICAgIyBMb2FkIGEgc2hvcnQgdGltZSBzdHJ1Y3R1cmUgdXNpbmcgcGlja2xlLgorICAgICAgICBzdCA9IGIiY3RpbWVcbnN0cnVjdF90aW1lXG5wMFxuKChJMjAwN1xuSThcbkkxMVxuSTFcbkkyNFxuSTQ5XG5JNVxuSTIyM1xuSTFcbnRwMVxuKGRwMlxudHAzXG5ScDRcbi4iCisgICAgICAgIGx0ID0gcGlja2xlLmxvYWRzKHN0KQorICAgICAgICBzZWxmLmFzc2VydElzKGx0LnRtX2dtdG9mZiwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhsdC50bV96b25lLCBOb25lKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCiAgICAgICAgIFRpbWVUZXN0Q2FzZSwKICAgICAgICAgVGVzdExvY2FsZSwKLSAgICAgICAgVGVzdEFzY3RpbWVBY2NlcHQyZFllYXIsCi0gICAgICAgIFRlc3RTdHJmdGltZUFjY2VwdDJkWWVhciwKICAgICAgICAgVGVzdEFzY3RpbWU0ZHllYXIsCiAgICAgICAgIFRlc3RTdHJmdGltZTRkeWVhciwKLSAgICAgICAgVGVzdDJkeWVhckJvb2wsCi0gICAgICAgIFRlc3Q0ZHllYXJCb29sLAotICAgICAgICBUZXN0QWNjZXB0MlllYXJCYWQpCisgICAgICAgIFRlc3RQeXRpbWUpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkgYi9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5CmluZGV4IGY5NjUyY2UuLmI0YTU4ZjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weQpAQCAtMjg5LDYgKzI4OSw2NCBAQAogICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMjkpICgxLCAzMCkKICAgICBTVFJJTkcgICAgICdSIkFCQyInICAgICAgKDEsIDMxKSAoMSwgMzcpCiAKKyAgICA+Pj4gZHVtcF90b2tlbnMoInUnYWJjJyArIFUnYWJjJyIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBTVFJJTkcgICAgICJ1J2FiYyciICAgICAgKDEsIDApICgxLCA2KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgNykgKDEsIDgpCisgICAgU1RSSU5HICAgICAiVSdhYmMnIiAgICAgICgxLCA5KSAoMSwgMTUpCisgICAgPj4+IGR1bXBfdG9rZW5zKCd1ImFiYyIgKyBVImFiYyInKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgU1RSSU5HICAgICAndSJhYmMiJyAgICAgICgxLCAwKSAoMSwgNikKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDcpICgxLCA4KQorICAgIFNUUklORyAgICAgJ1UiYWJjIicgICAgICAoMSwgOSkgKDEsIDE1KQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCJiJ2FiYycgKyBCJ2FiYyciKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgU1RSSU5HICAgICAiYidhYmMnIiAgICAgICgxLCAwKSAoMSwgNikKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDcpICgxLCA4KQorICAgIFNUUklORyAgICAgIkInYWJjJyIgICAgICAoMSwgOSkgKDEsIDE1KQorICAgID4+PiBkdW1wX3Rva2VucygnYiJhYmMiICsgQiJhYmMiJykKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIFNUUklORyAgICAgJ2IiYWJjIicgICAgICAoMSwgMCkgKDEsIDYpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCA3KSAoMSwgOCkKKyAgICBTVFJJTkcgICAgICdCImFiYyInICAgICAgKDEsIDkpICgxLCAxNSkKKyAgICA+Pj4gZHVtcF90b2tlbnMoImJyJ2FiYycgKyBiUidhYmMnICsgQnInYWJjJyArIEJSJ2FiYyciKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgU1RSSU5HICAgICAiYnInYWJjJyIgICAgICgxLCAwKSAoMSwgNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDgpICgxLCA5KQorICAgIFNUUklORyAgICAgImJSJ2FiYyciICAgICAoMSwgMTApICgxLCAxNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDE4KSAoMSwgMTkpCisgICAgU1RSSU5HICAgICAiQnInYWJjJyIgICAgICgxLCAyMCkgKDEsIDI3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMjgpICgxLCAyOSkKKyAgICBTVFJJTkcgICAgICJCUidhYmMnIiAgICAgKDEsIDMwKSAoMSwgMzcpCisgICAgPj4+IGR1bXBfdG9rZW5zKCdiciJhYmMiICsgYlIiYWJjIiArIEJyImFiYyIgKyBCUiJhYmMiJykKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIFNUUklORyAgICAgJ2JyImFiYyInICAgICAoMSwgMCkgKDEsIDcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCA4KSAoMSwgOSkKKyAgICBTVFJJTkcgICAgICdiUiJhYmMiJyAgICAgKDEsIDEwKSAoMSwgMTcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCAxOCkgKDEsIDE5KQorICAgIFNUUklORyAgICAgJ0JyImFiYyInICAgICAoMSwgMjApICgxLCAyNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDI4KSAoMSwgMjkpCisgICAgU1RSSU5HICAgICAnQlIiYWJjIicgICAgICgxLCAzMCkgKDEsIDM3KQorICAgID4+PiBkdW1wX3Rva2VucygicmInYWJjJyArIHJCJ2FiYycgKyBSYidhYmMnICsgUkInYWJjJyIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBTVFJJTkcgICAgICJyYidhYmMnIiAgICAgKDEsIDApICgxLCA3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgOCkgKDEsIDkpCisgICAgU1RSSU5HICAgICAickInYWJjJyIgICAgICgxLCAxMCkgKDEsIDE3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMTgpICgxLCAxOSkKKyAgICBTVFJJTkcgICAgICJSYidhYmMnIiAgICAgKDEsIDIwKSAoMSwgMjcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCAyOCkgKDEsIDI5KQorICAgIFNUUklORyAgICAgIlJCJ2FiYyciICAgICAoMSwgMzApICgxLCAzNykKKyAgICA+Pj4gZHVtcF90b2tlbnMoJ3JiImFiYyIgKyByQiJhYmMiICsgUmIiYWJjIiArIFJCImFiYyInKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgU1RSSU5HICAgICAncmIiYWJjIicgICAgICgxLCAwKSAoMSwgNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDgpICgxLCA5KQorICAgIFNUUklORyAgICAgJ3JCImFiYyInICAgICAoMSwgMTApICgxLCAxNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDE4KSAoMSwgMTkpCisgICAgU1RSSU5HICAgICAnUmIiYWJjIicgICAgICgxLCAyMCkgKDEsIDI3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMjgpICgxLCAyOSkKKyAgICBTVFJJTkcgICAgICdSQiJhYmMiJyAgICAgKDEsIDMwKSAoMSwgMzcpCisKIE9wZXJhdG9ycwogCiAgICAgPj4+IGR1bXBfdG9rZW5zKCJkZWYgZDIyKGEsIGIsIGM9MiwgZD0yLCAqayk6IHBhc3MiKQpAQCAtNTUyLDExICs2MTAsNiBAQAogICAgIERFREVOVCAgICAgJycgICAgICAgICAgICAoNCwgMCkgKDQsIDApCiAgICAgREVERU5UICAgICAnJyAgICAgICAgICAgICg0LCAwKSAoNCwgMCkKIAotUGF0aG9sb2dpY2FsIHdoaXRlc3BhY2UgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNjE1MikKLSAgICA+Pj4gZHVtcF90b2tlbnMoIkAgICAgICAgICAgIikKLSAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQotICAgIE9QICAgICAgICAgJ0AnICAgICAgICAgICAoMSwgMCkgKDEsIDEpCi0KIE5vbi1hc2NpaSBpZGVudGlmaWVycwogCiAgICAgPj4+IGR1bXBfdG9rZW5zKCLDlnJ0ZXIgPSAncGxhY2VzJ1xcbmdyw7xuID0gJ2dyZWVuJyIpCkBAIC01NjgsMTUgKzYyMSwyOCBAQAogICAgIE5BTUUgICAgICAgJ2dyw7xuJyAgICAgICAgKDIsIDApICgyLCA0KQogICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoMiwgNSkgKDIsIDYpCiAgICAgU1RSSU5HICAgICAiJ2dyZWVuJyIgICAgICgyLCA3KSAoMiwgMTQpCisKK0xlZ2FjeSB1bmljb2RlIGxpdGVyYWxzOgorCisgICAgPj4+IGR1bXBfdG9rZW5zKCLDlnJ0ZXIgPSB1J3BsYWNlcydcXG5ncsO8biA9IFUnZ3JlZW4nIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIE5BTUUgICAgICAgJ8OWcnRlcicgICAgICAgKDEsIDApICgxLCA1KQorICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoMSwgNikgKDEsIDcpCisgICAgU1RSSU5HICAgICAidSdwbGFjZXMnIiAgICgxLCA4KSAoMSwgMTcpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMSwgMTcpICgxLCAxOCkKKyAgICBOQU1FICAgICAgICdncsO8bicgICAgICAgICgyLCAwKSAoMiwgNCkKKyAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDIsIDUpICgyLCA2KQorICAgIFNUUklORyAgICAgIlUnZ3JlZW4nIiAgICAoMiwgNykgKDIsIDE1KQogIiIiCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0b2tlbml6ZSBpbXBvcnQgKHRva2VuaXplLCBfdG9rZW5pemUsIHVudG9rZW5pemUsIE5VTUJFUiwgTkFNRSwgT1AsCi0gICAgICAgICAgICAgICAgICAgICBTVFJJTkcsIEVORE1BUktFUiwgdG9rX25hbWUsIGRldGVjdF9lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgIFNUUklORywgRU5ETUFSS0VSLCBFTkNPRElORywgdG9rX25hbWUsIGRldGVjdF9lbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgIG9wZW4gYXMgdG9rZW5pemVfb3BlbikKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIGZyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCiBpbXBvcnQgb3MsIHN5cywgZ2xvYgoraW1wb3J0IHRva2VuCiAKIGRlZiBkdW1wX3Rva2VucyhzKToKICAgICAiIiJQcmludCBvdXQgdGhlIHRva2VucyBpbiBzIGluIGEgdGFibGUgZm9ybWF0LgpAQCAtNjA1LDcgKzY3MSw3IEBACiAgICAgICAgIGYuY2xvc2UoKQogICAgIHRva2VuczEgPSBbdG9rWzoyXSBmb3IgdG9rIGluIHRva2VuX2xpc3RdCiAgICAgbmV3X2J5dGVzID0gdW50b2tlbml6ZSh0b2tlbnMxKQotICAgIHJlYWRsaW5lID0gKGxpbmUgZm9yIGxpbmUgaW4gbmV3X2J5dGVzLnNwbGl0bGluZXMoMSkpLl9fbmV4dF9fCisgICAgcmVhZGxpbmUgPSAobGluZSBmb3IgbGluZSBpbiBuZXdfYnl0ZXMuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSkuX19uZXh0X18KICAgICB0b2tlbnMyID0gW3Rva1s6Ml0gZm9yIHRvayBpbiB0b2tlbml6ZShyZWFkbGluZSldCiAgICAgcmV0dXJuIHRva2VuczEgPT0gdG9rZW5zMgogCkBAIC05MDAsNiArOTY2LDM1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZwLmVuY29kaW5nLCAndXRmLTgtc2lnJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnAubW9kZSwgJ3InKQogCisgICAgZGVmIHRlc3RfZmlsZW5hbWVfaW5fZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICAjIFdoZW4gcG9zc2libGUsIGluY2x1ZGUgdGhlIGZpbGUgbmFtZSBpbiB0aGUgZXhjZXB0aW9uLgorICAgICAgICBwYXRoID0gJ3NvbWVfZmlsZV9wYXRoJworICAgICAgICBsaW5lcyA9ICgKKyAgICAgICAgICAgIGIncHJpbnQoIlx4ZGYiKScsICMgTGF0aW4tMTogTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKKyAgICAgICAgICAgICkKKyAgICAgICAgY2xhc3MgQnVuazoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW5lcywgcGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5uYW1lID0gcGF0aAorICAgICAgICAgICAgICAgIHNlbGYuX2xpbmVzID0gbGluZXMKKyAgICAgICAgICAgICAgICBzZWxmLl9pbmRleCA9IDAKKworICAgICAgICAgICAgZGVmIHJlYWRsaW5lKHNlbGYpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2luZGV4ID09IGxlbihsaW5lcyk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZXNbc2VsZi5faW5kZXhdCisgICAgICAgICAgICAgICAgc2VsZi5faW5kZXggKz0gMQorICAgICAgICAgICAgICAgIHJldHVybiBsaW5lCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBpbnMgPSBCdW5rKGxpbmVzLCBwYXRoKQorICAgICAgICAgICAgIyBNYWtlIHN1cmUgbGFja2luZyBhIG5hbWUgaXNuJ3QgYW4gaXNzdWUuCisgICAgICAgICAgICBkZWwgaW5zLm5hbWUKKyAgICAgICAgICAgIGRldGVjdF9lbmNvZGluZyhpbnMucmVhZGxpbmUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJy4qe30nLmZvcm1hdChwYXRoKSk6CisgICAgICAgICAgICBpbnMgPSBCdW5rKGxpbmVzLCBwYXRoKQorICAgICAgICAgICAgZGV0ZWN0X2VuY29kaW5nKGlucy5yZWFkbGluZSkKKworCiBjbGFzcyBUZXN0VG9rZW5pemUoVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfdG9rZW5pemUoc2VsZik6CkBAIC05NDEsNiArMTAzNiw4MiBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlbmNvZGluZ191c2VkLCBlbmNvZGluZykKIAorICAgIGRlZiBhc3NlcnRFeGFjdFR5cGVFcXVhbChzZWxmLCBvcHN0ciwgKm9wdHlwZXMpOgorICAgICAgICB0b2tlbnMgPSBsaXN0KHRva2VuaXplKEJ5dGVzSU8ob3BzdHIuZW5jb2RlKCd1dGYtOCcpKS5yZWFkbGluZSkpCisgICAgICAgIG51bV9vcHR5cGVzID0gbGVuKG9wdHlwZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRva2VucyksIDIgKyBudW1fb3B0eXBlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b2tlbi50b2tfbmFtZVt0b2tlbnNbMF0uZXhhY3RfdHlwZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4udG9rX25hbWVbRU5DT0RJTkddKQorICAgICAgICBmb3IgaSBpbiByYW5nZShudW1fb3B0eXBlcyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRva2VuLnRva19uYW1lW3Rva2Vuc1tpICsgMV0uZXhhY3RfdHlwZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLnRva19uYW1lW29wdHlwZXNbaV1dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRva2VuLnRva19uYW1lW3Rva2Vuc1sxICsgbnVtX29wdHlwZXNdLmV4YWN0X3R5cGVdLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLnRva19uYW1lW3Rva2VuLkVORE1BUktFUl0pCisKKyAgICBkZWYgdGVzdF9leGFjdF90eXBlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcoKScsIHRva2VuLkxQQVIsIHRva2VuLlJQQVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ1tdJywgdG9rZW4uTFNRQiwgdG9rZW4uUlNRQikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnOicsIHRva2VuLkNPTE9OKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcsJywgdG9rZW4uQ09NTUEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJzsnLCB0b2tlbi5TRU1JKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcrJywgdG9rZW4uUExVUykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLScsIHRva2VuLk1JTlVTKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcqJywgdG9rZW4uU1RBUikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLycsIHRva2VuLlNMQVNIKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCd8JywgdG9rZW4uVkJBUikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnJicsIHRva2VuLkFNUEVSKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc8JywgdG9rZW4uTEVTUykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnPicsIHRva2VuLkdSRUFURVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJz0nLCB0b2tlbi5FUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLicsIHRva2VuLkRPVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnJScsIHRva2VuLlBFUkNFTlQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ3t9JywgdG9rZW4uTEJSQUNFLCB0b2tlbi5SQlJBQ0UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJz09JywgdG9rZW4uRVFFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnIT0nLCB0b2tlbi5OT1RFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnPD0nLCB0b2tlbi5MRVNTRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJz49JywgdG9rZW4uR1JFQVRFUkVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCd+JywgdG9rZW4uVElMREUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ14nLCB0b2tlbi5DSVJDVU1GTEVYKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc8PCcsIHRva2VuLkxFRlRTSElGVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnPj4nLCB0b2tlbi5SSUdIVFNISUZUKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcqKicsIHRva2VuLkRPVUJMRVNUQVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJys9JywgdG9rZW4uUExVU0VRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCctPScsIHRva2VuLk1JTkVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcqPScsIHRva2VuLlNUQVJFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLz0nLCB0b2tlbi5TTEFTSEVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCclPScsIHRva2VuLlBFUkNFTlRFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnJj0nLCB0b2tlbi5BTVBFUkVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCd8PScsIHRva2VuLlZCQVJFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnXj0nLCB0b2tlbi5DSVJDVU1GTEVYRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ149JywgdG9rZW4uQ0lSQ1VNRkxFWEVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc8PD0nLCB0b2tlbi5MRUZUU0hJRlRFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnPj49JywgdG9rZW4uUklHSFRTSElGVEVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcqKj0nLCB0b2tlbi5ET1VCTEVTVEFSRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJy8vJywgdG9rZW4uRE9VQkxFU0xBU0gpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJy8vPScsIHRva2VuLkRPVUJMRVNMQVNIRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ0AnLCB0b2tlbi5BVCkKKworICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCdhKioyK2IqKjI9PWMqKjInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTUUsIHRva2VuLkRPVUJMRVNUQVIsIE5VTUJFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5QTFVTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTUUsIHRva2VuLkRPVUJMRVNUQVIsIE5VTUJFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5FUUVRVUFMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTUUsIHRva2VuLkRPVUJMRVNUQVIsIE5VTUJFUikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnezEsIDIsIDN9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5MQlJBQ0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uTlVNQkVSLCB0b2tlbi5DT01NQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5OVU1CRVIsIHRva2VuLkNPTU1BLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLk5VTUJFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5SQlJBQ0UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ14oeCAmIDB4MSknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLkNJUkNVTUZMRVgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uTFBBUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5OQU1FLCB0b2tlbi5BTVBFUiwgdG9rZW4uTlVNQkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLlJQQVIpCisKKyAgICBkZWYgdGVzdF9wYXRob2xvZ2ljYWxfdHJhaWxpbmdfd2hpdGVzcGFjZShzZWxmKToKKyAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE2MTUyCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ0AgICAgICAgICAgJywgdG9rZW4uQVQpCiAKIF9fdGVzdF9fID0geyJkb2N0ZXN0cyIgOiBkb2N0ZXN0cywgJ2RlY2lzdG10JzogZGVjaXN0bXR9CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMucHkgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzLnB5CmluZGV4IDAwNjIyMGEuLmY5NzE1MTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b29scy5weQpAQCAtNiw4ICs2LDkgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQogaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5c2NvbmZpZwpAQCAtMzY1LDcgKzM2Niw3IEBACiAgICAgIyBhZGRlZCBmb3IgYSBzY3JpcHQgaXQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSB3aGl0ZWxpc3QgYmVsb3cuCiAKICAgICAjIHNjcmlwdHMgdGhhdCBoYXZlIGluZGVwZW5kZW50IHRlc3RzLgotICAgIHdoaXRlbGlzdCA9IFsncmVpbmRlbnQucHknXQorICAgIHdoaXRlbGlzdCA9IFsncmVpbmRlbnQucHknLCAncGRlcHMucHknLCAnZ3Byb2YyaHRtbCddCiAgICAgIyBzY3JpcHRzIHRoYXQgY2FuJ3QgYmUgaW1wb3J0ZWQgd2l0aG91dCBydW5uaW5nCiAgICAgYmxhY2tsaXN0ID0gWydtYWtlX2N0eXBlLnB5J10KICAgICAjIHNjcmlwdHMgdGhhdCB1c2Ugd2luZG93cy1vbmx5IG1vZHVsZXMKQEAgLTQwNCw3ICs0MDUsOCBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNjcmlwdHNkaXIsICdwZGVwcy5weScpCi0gICAgICAgIHNlbGYucGRlcHMgPSBpbXAubG9hZF9zb3VyY2UoJ3BkZXBzJywgcGF0aCkKKyAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdwZGVwcycsIHBhdGgpCisgICAgICAgIHNlbGYucGRlcHMgPSBsb2FkZXIubG9hZF9tb2R1bGUoKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3Moc2VsZik6CkBAIC00MjQsNiArNDI2LDM1IEBACiAgICAgICAgIHNlbGYucGRlcHMuaW52ZXJzZSh7J2EnOiBbXX0pCiAKIAorY2xhc3MgR3Byb2YyaHRtbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzY3JpcHRzZGlyLCAnZ3Byb2YyaHRtbC5weScpCisgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignZ3Byb2YyaHRtbCcsIHBhdGgpCisgICAgICAgIHNlbGYuZ3Byb2YgPSBsb2FkZXIubG9hZF9tb2R1bGUoKQorICAgICAgICBvbGRhcmd2ID0gc3lzLmFyZ3YKKyAgICAgICAgZGVmIGZpeHVwKCk6CisgICAgICAgICAgICBzeXMuYXJndiA9IG9sZGFyZ3YKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGZpeHVwKQorICAgICAgICBzeXMuYXJndiA9IFtdCisKKyAgICBkZWYgdGVzdF9ncHJvZihzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTQ1MDg6IHRoaXMgdXNlZCB0byBmYWlsIHdpdGggYW4gTmFtZUVycm9yLgorICAgICAgICB3aXRoIG1vY2sucGF0Y2gub2JqZWN0KHNlbGYuZ3Byb2YsICd3ZWJicm93c2VyJykgYXMgd21vY2ssIFwKKyAgICAgICAgICAgICAgICB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0bXBkaXI6CisgICAgICAgICAgICBmbiA9IG9zLnBhdGguam9pbih0bXBkaXIsICdhYmMnKQorICAgICAgICAgICAgb3BlbihmbiwgJ3cnKS5jbG9zZSgpCisgICAgICAgICAgICBzeXMuYXJndiA9IFsnZ3Byb2YyaHRtbCcsIGZuXQorICAgICAgICAgICAgc2VsZi5ncHJvZi5tYWluKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHdtb2NrLm9wZW4uY2FsbGVkKQorCisKKyMgUnVuIHRoZSB0ZXN0cyBpbiBUb29scy9wYXJzZXIvdGVzdF91bnBhcnNlLnB5Cit3aXRoIHN1cHBvcnQuRGlyc09uU3lzUGF0aChvcy5wYXRoLmpvaW4oYmFzZXBhdGgsICdwYXJzZXInKSk6CisgICAgZnJvbSB0ZXN0X3VucGFyc2UgaW1wb3J0IFVucGFyc2VUZXN0Q2FzZQorICAgIGZyb20gdGVzdF91bnBhcnNlIGltcG9ydCBEaXJlY3RvcnlUZXN0Q2FzZQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqW29iaiBmb3Igb2JqIGluIGdsb2JhbHMoKS52YWx1ZXMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlKV0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5IGIvTGliL3Rlc3QvdGVzdF90cmFjZS5weQppbmRleCA0NjFkMWQ4Li4xY2VjNzEwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgb3MKK2ltcG9ydCBpbwogaW1wb3J0IHN5cwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChydW5fdW5pdHRlc3QsIFRFU1RGTiwgcm10cmVlLCB1bmxpbmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZWRfc3Rkb3V0KQpAQCAtMTAyLDYgKzEwMyw3IEBACiBjbGFzcyBUZXN0TGluZUNvdW50cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiV2hpdGUtYm94IHRlc3Rpbmcgb2YgbGluZS1jb3VudGluZywgdmlhIHJ1bmZ1bmMiIiIKICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQogICAgICAgICBzZWxmLnRyYWNlciA9IFRyYWNlKGNvdW50PTEsIHRyYWNlPTAsIGNvdW50ZnVuY3M9MCwgY291bnRjYWxsZXJzPTApCiAgICAgICAgIHNlbGYubXlfcHlfZmlsZW5hbWUgPSBmaXhfZXh0X3B5KF9fZmlsZV9fKQogCkBAIC0xOTIsNiArMTk0LDcgQEAKICAgICAiIiJBIHNpbXBsZSBzYW5pdHkgdGVzdCBvZiBsaW5lLWNvdW50aW5nLCB2aWEgcnVuY3R4IChleGVjKSIiIgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5teV9weV9maWxlbmFtZSA9IGZpeF9leHRfcHkoX19maWxlX18pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQogCiAgICAgZGVmIHRlc3RfZXhlY19jb3VudHMoc2VsZik6CiAgICAgICAgIHNlbGYudHJhY2VyID0gVHJhY2UoY291bnQ9MSwgdHJhY2U9MCwgY291bnRmdW5jcz0wLCBjb3VudGNhbGxlcnM9MCkKQEAgLTIxOCw2ICsyMjEsNyBAQAogY2xhc3MgVGVzdEZ1bmNzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJXaGl0ZS1ib3ggdGVzdGluZyBvZiBmdW5jcyB0cmFjaW5nIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKICAgICAgICAgc2VsZi50cmFjZXIgPSBUcmFjZShjb3VudD0wLCB0cmFjZT0wLCBjb3VudGZ1bmNzPTEpCiAgICAgICAgIHNlbGYuZmlsZW1vZCA9IG15X2ZpbGVfYW5kX21vZG5hbWUoKQogCkBAIC0yNDIsNiArMjQ2LDggQEAKICAgICAgICAgfQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHJhY2VyLnJlc3VsdHMoKS5jYWxsZWRmdW5jcywgZXhwZWN0ZWQpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCksCisgICAgICAgICAgICAgICAgICAgICAncHJlLWV4aXN0aW5nIHRyYWNlIGZ1bmN0aW9uIHRocm93cyBvZmYgbWVhc3VyZW1lbnRzJykKICAgICBkZWYgdGVzdF9pbnN0X21ldGhvZF9jYWxsaW5nKHNlbGYpOgogICAgICAgICBvYmogPSBUcmFjZWRDbGFzcygyMCkKICAgICAgICAgc2VsZi50cmFjZXIucnVuZnVuYyhvYmouaW5zdF9tZXRob2RfY2FsbGluZywgMSkKQEAgLTI1Nyw5ICsyNjMsMTIgQEAKIGNsYXNzIFRlc3RDYWxsZXJzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJXaGl0ZS1ib3ggdGVzdGluZyBvZiBjYWxsZXJzIHRyYWNpbmciIiIKICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQogICAgICAgICBzZWxmLnRyYWNlciA9IFRyYWNlKGNvdW50PTAsIHRyYWNlPTAsIGNvdW50Y2FsbGVycz0xKQogICAgICAgICBzZWxmLmZpbGVtb2QgPSBteV9maWxlX2FuZF9tb2RuYW1lKCkKIAorICAgIEB1bml0dGVzdC5za2lwSWYoaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICdwcmUtZXhpc3RpbmcgdHJhY2UgZnVuY3Rpb24gdGhyb3dzIG9mZiBtZWFzdXJlbWVudHMnKQogICAgIGRlZiB0ZXN0X2xvb3BfY2FsbGVyX2ltcG9ydGluZyhzZWxmKToKICAgICAgICAgc2VsZi50cmFjZXIucnVuZnVuYyh0cmFjZWRfZnVuY19pbXBvcnRpbmdfY2FsbGVyLCAxKQogCkBAIC0yODAsNiArMjg5LDkgQEAKIAogIyBDcmVhdGVkIHNlcGFyYXRlbHkgZm9yIGlzc3VlICMzODIxCiBjbGFzcyBUZXN0Q292ZXJhZ2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXR0cmFjZSwgc3lzLmdldHRyYWNlKCkpCisKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHJtdHJlZShURVNURk4pCiAgICAgICAgIHVubGluayhURVNURk4pCkBAIC0zMDUsMTMgKzMxNywxMyBAQAogICAgICAgICAjIElnbm9yZSBhbGwgZmlsZXMsIG5vdGhpbmcgc2hvdWxkIGJlIHRyYWNlZCBub3IgcHJpbnRlZAogICAgICAgICBsaWJwYXRoID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmRpcm5hbWUob3MuX19maWxlX18pKQogICAgICAgICAjIHN5cy5wcmVmaXggZG9lcyBub3Qgd29yayB3aGVuIHJ1bm5pbmcgZnJvbSBhIGNoZWNrb3V0Ci0gICAgICAgIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5wcmVmaXgsIHN5cy5leGVjX3ByZWZpeCwgbGlicGF0aF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlPTAsIGNvdW50PTEpCisgICAgICAgIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5iYXNlX3ByZWZpeCwgc3lzLmJhc2VfZXhlY19wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnBhdGhdLCB0cmFjZT0wLCBjb3VudD0xKQogICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHN0ZG91dDoKICAgICAgICAgICAgIHNlbGYuX2NvdmVyYWdlKHRyYWNlcikKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoVEVTVEZOKToKICAgICAgICAgICAgIGZpbGVzID0gb3MubGlzdGRpcihURVNURk4pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVzLCBbXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZXMsIFsnX2ltcG9ydGxpYi5jb3ZlciddKSAgIyBJZ25vcmUgX19pbXBvcnRfXwogCiAgICAgZGVmIHRlc3RfaXNzdWU5OTM2KHNlbGYpOgogICAgICAgICB0cmFjZXIgPSB0cmFjZS5UcmFjZSh0cmFjZT0wLCBjb3VudD0xKQpAQCAtMzUwLDYgKzM2Miw1MSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoaWdub3JlLm5hbWVzKGpuKCdiYXInLCAnYmF6LnB5JyksICdiYXonKSkKIAogCitjbGFzcyBUZXN0RGVwcmVjYXRlZE1ldGhvZHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZGVwcmVjYXRlZF91c2FnZShzZWxmKToKKyAgICAgICAgc2lvID0gaW8uU3RyaW5nSU8oKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHRyYWNlLnVzYWdlKHNpbykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignVXNhZ2U6Jywgc2lvLmdldHZhbHVlKCkpCisKKyAgICBkZWYgdGVzdF9kZXByZWNhdGVkX0lnbm9yZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICB0cmFjZS5JZ25vcmUoKQorCisgICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9tb2RuYW1lKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInNwYW0iLCB0cmFjZS5tb2RuYW1lKCJzcGFtIikpCisKKyAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2Z1bGxtb2RuYW1lKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInNwYW0iLCB0cmFjZS5mdWxsbW9kbmFtZSgic3BhbSIpKQorCisgICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9maW5kX2xpbmVzX2Zyb21fY29kZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgdHJhY2UuZmluZF9saW5lc19mcm9tX2NvZGUoZm9vLl9fY29kZV9fLCBbImVnZ3MiXSkKKworICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZmluZF9saW5lcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgdHJhY2UuZmluZF9saW5lcyhmb28uX19jb2RlX18sIFsiZWdncyJdKQorCisgICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9maW5kX3N0cmluZ3Moc2VsZik6CisgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3JykgYXMgZmQ6CisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAodW5saW5rLCBURVNURk4pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgdHJhY2UuZmluZF9zdHJpbmdzKGZkLm5hbWUpCisKKyAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2ZpbmRfZXhlY3V0YWJsZV9saW5lbm9zKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAndycpIGFzIGZkOgorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHVubGluaywgVEVTVEZOKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHRyYWNlLmZpbmRfZXhlY3V0YWJsZV9saW5lbm9zKGZkLm5hbWUpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHJ1bl91bml0dGVzdChfX25hbWVfXykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQppbmRleCA0NzUyZDM3Li41YmNlMmFmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQpAQCAtMjQ2LDYgKzI0NiwyMSBAQAogICAgICAgICBzZWxmLmNoZWNrX3plcm9fZGl2KGJsb2Nrc1swXSkKICAgICAgICAgc2VsZi5hc3NlcnRJbignaW5uZXJfcmFpc2UoKSAjIE1hcmtlcicsIGJsb2Nrc1syXSkKIAorICAgIGRlZiB0ZXN0X2NvbnRleHRfc3VwcHJlc3Npb24oc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24KKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICByYWlzZSBaZXJvRGl2aXNpb25FcnJvciBmcm9tIE5vbmUKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIF86CisgICAgICAgICAgICBlID0gXworICAgICAgICBsaW5lcyA9IHNlbGYuZ2V0X3JlcG9ydChlKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGluZXMpLCA0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXNbMF0uc3RhcnRzd2l0aCgnVHJhY2ViYWNrJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lc1sxXS5zdGFydHN3aXRoKCcgIEZpbGUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignWmVyb0RpdmlzaW9uRXJyb3IgZnJvbSBOb25lJywgbGluZXNbMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lc1szXS5zdGFydHN3aXRoKCdaZXJvRGl2aXNpb25FcnJvcicpKQorCiAgICAgZGVmIHRlc3RfY2F1c2VfYW5kX2NvbnRleHQoc2VsZik6CiAgICAgICAgICMgV2hlbiBib3RoIGEgY2F1c2UgYW5kIGEgY29udGV4dCBhcmUgc2V0LCBvbmx5IHRoZSBjYXVzZSBzaG91bGQgYmUKICAgICAgICAgIyBkaXNwbGF5ZWQgYW5kIHRoZSBjb250ZXh0IHNob3VsZCBiZSBtdXRlZC4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHVwbGUucHkgYi9MaWIvdGVzdC90ZXN0X3R1cGxlLnB5CmluZGV4IDZlOTM0ZmIuLmU0MTcxMWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHVwbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90dXBsZS5weQpAQCAtMSw2ICsxLDcgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgc2VxX3Rlc3RzCiAKIGltcG9ydCBnYworaW1wb3J0IHBpY2tsZQogCiBjbGFzcyBUdXBsZVRlc3Qoc2VxX3Rlc3RzLkNvbW1vblRlc3QpOgogICAgIHR5cGUydGVzdCA9IHR1cGxlCkBAIC0xNjQsNiArMTY1LDM0IEBACiAgICAgICAgIGNoZWNrKDEwKSAgICAgICAjIGNoZWNrIG91ciBjaGVja2luZyBjb2RlCiAgICAgICAgIGNoZWNrKDEwMDAwMDApCiAKKyAgICBkZWYgdGVzdF9pdGVyYXRvcl9waWNrbGUoc2VsZik6CisgICAgICAgICMgVXNlcmxpc3QgaXRlcmF0b3JzIGRvbid0IHN1cHBvcnQgcGlja2xpbmcgeWV0IHNpbmNlCisgICAgICAgICMgdGhleSBhcmUgYmFzZWQgb24gZ2VuZXJhdG9ycy4KKyAgICAgICAgZGF0YSA9IHNlbGYudHlwZTJ0ZXN0KFs0LCA1LCA2LCA3XSkKKyAgICAgICAgaXRvcmcgPSBpdGVyKGRhdGEpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXRvcmcpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGl0KSwgc2VsZi50eXBlMnRlc3QoZGF0YSkpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChpdCksIHNlbGYudHlwZTJ0ZXN0KGRhdGEpWzE6XSkKKworICAgIGRlZiB0ZXN0X3JldmVyc2VkX3BpY2tsZShzZWxmKToKKyAgICAgICAgZGF0YSA9IHNlbGYudHlwZTJ0ZXN0KFs0LCA1LCA2LCA3XSkKKyAgICAgICAgaXRvcmcgPSByZXZlcnNlZChkYXRhKQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0b3JnKQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChpdCksIHNlbGYudHlwZTJ0ZXN0KHJldmVyc2VkKGRhdGEpKSkKKworICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBuZXh0KGl0KQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGl0KSwgc2VsZi50eXBlMnRlc3QocmV2ZXJzZWQoZGF0YSkpWzE6XSkKKwogICAgIGRlZiB0ZXN0X25vX2NvbWRhdF9mb2xkaW5nKHNlbGYpOgogICAgICAgICAjIElzc3VlIDg4NDc6IEluIHRoZSBQR08gYnVpbGQsIHRoZSBNU1ZDIGxpbmtlcidzIENPTURBVCBmb2xkaW5nCiAgICAgICAgICMgb3B0aW1pemF0aW9uIGNhdXNlcyBmYWlsdXJlcyBpbiBjb2RlIHRoYXQgcmVsaWVzIG9uIGRpc3RpbmN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5IGIvTGliL3Rlc3QvdGVzdF90eXBlcy5weQppbmRleCA4YTk4YTAzLi4zZWU0YzZiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkKQEAgLTEsOSArMSwxMSBAQAogIyBQeXRob24gdGVzdCBzZXQgLS0gcGFydCA2LCBidWlsdC1pbiB0eXBlcwogCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBydW5fd2l0aF9sb2NhbGUKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHN5cworaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgbG9jYWxlCitpbXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKK2ltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBUeXBlc1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNTY5LDggKzU3MSw1ODMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHR1cGxlLl9faXRlbXNpemVfXywgMCkKIAogCitjbGFzcyBNYXBwaW5nUHJveHlUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbWFwcGluZ3Byb3h5ID0gdHlwZXMuTWFwcGluZ1Byb3h5VHlwZQorCisgICAgZGVmIHRlc3RfY29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIGNsYXNzIHVzZXJkaWN0KGRpY3QpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1hcHBpbmcgPSB7J3gnOiAxLCAneSc6IDJ9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5tYXBwaW5ncHJveHkobWFwcGluZyksIG1hcHBpbmcpCisgICAgICAgIG1hcHBpbmcgPSB1c2VyZGljdCh4PTEsIHk9MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm1hcHBpbmdwcm94eShtYXBwaW5nKSwgbWFwcGluZykKKyAgICAgICAgbWFwcGluZyA9IGNvbGxlY3Rpb25zLkNoYWluTWFwKHsneCc6IDF9LCB7J3knOiAyfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm1hcHBpbmdwcm94eShtYXBwaW5nKSwgbWFwcGluZykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubWFwcGluZ3Byb3h5LCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLm1hcHBpbmdwcm94eSwgKCJhIiwgInR1cGxlIikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5tYXBwaW5ncHJveHksIFsiYSIsICJsaXN0Il0pCisKKyAgICBkZWYgdGVzdF9tZXRob2RzKHNlbGYpOgorICAgICAgICBhdHRycyA9IHNldChkaXIoc2VsZi5tYXBwaW5ncHJveHkoe30pKSkgLSBzZXQoZGlyKG9iamVjdCgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdHRycywgeworICAgICAgICAgICAgICdfX2NvbnRhaW5zX18nLAorICAgICAgICAgICAgICdfX2dldGl0ZW1fXycsCisgICAgICAgICAgICAgJ19faXRlcl9fJywKKyAgICAgICAgICAgICAnX19sZW5fXycsCisgICAgICAgICAgICAgJ2NvcHknLAorICAgICAgICAgICAgICdnZXQnLAorICAgICAgICAgICAgICdpdGVtcycsCisgICAgICAgICAgICAgJ2tleXMnLAorICAgICAgICAgICAgICd2YWx1ZXMnLAorICAgICAgICB9KQorCisgICAgZGVmIHRlc3RfZ2V0KHNlbGYpOgorICAgICAgICB2aWV3ID0gc2VsZi5tYXBwaW5ncHJveHkoeydhJzogJ0EnLCAnYic6ICdCJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1snYSddLCAnQScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1snYiddLCAnQicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCB2aWV3Ll9fZ2V0aXRlbV9fLCAneHh4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgnYScpLCAnQScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHZpZXcuZ2V0KCd4eHgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgneHh4JywgNDIpLCA0MikKKworICAgIGRlZiB0ZXN0X21pc3Npbmcoc2VsZik6CisgICAgICAgIGNsYXNzIGRpY3RtaXNzaW5nKGRpY3QpOgorICAgICAgICAgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6CisgICAgICAgICAgICAgICAgcmV0dXJuICJtaXNzaW5nPSVzIiAlIGtleQorCisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShkaWN0bWlzc2luZyh4PTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXdbJ3gnXSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3Wyd5J10sICdtaXNzaW5nPXknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcuZ2V0KCd4JyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5nZXQoJ3knKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgneScsIDQyKSwgNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgneCcgaW4gdmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgneScgaW4gdmlldykKKworICAgIGRlZiB0ZXN0X2N1c3RvbWRpY3Qoc2VsZik6CisgICAgICAgIGNsYXNzIGN1c3RvbWRpY3QoZGljdCk6CisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleSk6CisgICAgICAgICAgICAgICAgaWYga2V5ID09ICdtYWdpYyc6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRpY3QuX19jb250YWluc19fKHNlbGYsIGtleSkKKworICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKCgnaXRlcicsKSkKKworICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDUwMAorCisgICAgICAgICAgICBkZWYgY29weShzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2NvcHknCisKKyAgICAgICAgICAgIGRlZiBrZXlzKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAna2V5cycKKworICAgICAgICAgICAgZGVmIGl0ZW1zKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAnaXRlbXMnCisKKyAgICAgICAgICAgIGRlZiB2YWx1ZXMoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICd2YWx1ZXMnCisKKyAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgorICAgICAgICAgICAgICAgIHJldHVybiAiZ2V0aXRlbT0lcyIgJSBkaWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSkKKworICAgICAgICAgICAgZGVmIGdldChzZWxmLCBrZXksIGRlZmF1bHQ9Tm9uZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuICJnZXQ9JXMiICUgZGljdC5nZXQoc2VsZiwga2V5LCAnZGVmYXVsdD0lcicgJSBkZWZhdWx0KQorCisgICAgICAgIGN1c3RvbSA9IGN1c3RvbWRpY3QoeydrZXknOiAndmFsdWUnfSkKKyAgICAgICAgdmlldyA9IHNlbGYubWFwcGluZ3Byb3h5KGN1c3RvbSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdrZXknIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbWFnaWMnIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3h4eCcgaW4gdmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3WydrZXknXSwgJ2dldGl0ZW09dmFsdWUnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgdmlldy5fX2dldGl0ZW1fXywgJ3h4eCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUodmlldyksICgnaXRlcicsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odmlldyksIDUwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmNvcHkoKSwgJ2NvcHknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcuZ2V0KCdrZXknKSwgJ2dldD12YWx1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5nZXQoJ3h4eCcpLCAnZ2V0PWRlZmF1bHQ9Tm9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5pdGVtcygpLCAnaXRlbXMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcua2V5cygpLCAna2V5cycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy52YWx1ZXMoKSwgJ3ZhbHVlcycpCisKKyAgICBkZWYgdGVzdF9jaGFpbm1hcChzZWxmKToKKyAgICAgICAgZDEgPSB7J3gnOiAxfQorICAgICAgICBkMiA9IHsneSc6IDJ9CisgICAgICAgIG1hcHBpbmcgPSBjb2xsZWN0aW9ucy5DaGFpbk1hcChkMSwgZDIpCisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShtYXBwaW5nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3gnIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgneScgaW4gdmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgneicgaW4gdmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3Wyd4J10sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1sneSddLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgdmlldy5fX2dldGl0ZW1fXywgJ3onKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR1cGxlKHNvcnRlZCh2aWV3KSksICgneCcsICd5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHZpZXcpLCAyKQorICAgICAgICBjb3B5ID0gdmlldy5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChjb3B5LCBtYXBwaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY29weSwgY29sbGVjdGlvbnMuQ2hhaW5NYXApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29weSwgbWFwcGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgneCcpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcuZ2V0KCd5JyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHZpZXcuZ2V0KCd6JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUoc29ydGVkKHZpZXcuaXRlbXMoKSkpLCAoKCd4JywgMSksICgneScsIDIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0dXBsZShzb3J0ZWQodmlldy5rZXlzKCkpKSwgKCd4JywgJ3knKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0dXBsZShzb3J0ZWQodmlldy52YWx1ZXMoKSkpLCAoMSwgMikpCisKKyAgICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToKKyAgICAgICAgdmlldyA9IHNlbGYubWFwcGluZ3Byb3h5KGRpY3QuZnJvbWtleXMoJ2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2EnIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYicgaW4gdmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdjJyBpbiB2aWV3KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCd4eHgnIGluIHZpZXcpCisKKyAgICBkZWYgdGVzdF92aWV3cyhzZWxmKToKKyAgICAgICAgbWFwcGluZyA9IHt9CisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShtYXBwaW5nKQorICAgICAgICBrZXlzID0gdmlldy5rZXlzKCkKKyAgICAgICAgdmFsdWVzID0gdmlldy52YWx1ZXMoKQorICAgICAgICBpdGVtcyA9IHZpZXcuaXRlbXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoa2V5cyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QodmFsdWVzKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdGVtcyksIFtdKQorICAgICAgICBtYXBwaW5nWydrZXknXSA9ICd2YWx1ZScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGtleXMpLCBbJ2tleSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QodmFsdWVzKSwgWyd2YWx1ZSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXRlbXMpLCBbKCdrZXknLCAndmFsdWUnKV0pCisKKyAgICBkZWYgdGVzdF9sZW4oc2VsZik6CisgICAgICAgIGZvciBleHBlY3RlZCBpbiByYW5nZSg2KToKKyAgICAgICAgICAgIGRhdGEgPSBkaWN0LmZyb21rZXlzKCdhYmNkZSdbOmV4cGVjdGVkXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShkYXRhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odmlldyksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfaXRlcmF0b3JzKHNlbGYpOgorICAgICAgICBrZXlzID0gKCd4JywgJ3knKQorICAgICAgICB2YWx1ZXMgPSAoMSwgMikKKyAgICAgICAgaXRlbXMgPSB0dXBsZSh6aXAoa2V5cywgdmFsdWVzKSkKKyAgICAgICAgdmlldyA9IHNlbGYubWFwcGluZ3Byb3h5KGRpY3QoaXRlbXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh2aWV3KSwgc2V0KGtleXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh2aWV3LmtleXMoKSksIHNldChrZXlzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQodmlldy52YWx1ZXMoKSksIHNldCh2YWx1ZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh2aWV3Lml0ZW1zKCkpLCBzZXQoaXRlbXMpKQorCisgICAgZGVmIHRlc3RfY29weShzZWxmKToKKyAgICAgICAgb3JpZ2luYWwgPSB7J2tleTEnOiAyNywgJ2tleTInOiA1MSwgJ2tleTMnOiA5M30KKyAgICAgICAgdmlldyA9IHNlbGYubWFwcGluZ3Byb3h5KG9yaWdpbmFsKQorICAgICAgICBjb3B5ID0gdmlldy5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGNvcHkpLCBkaWN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHksIG9yaWdpbmFsKQorICAgICAgICBvcmlnaW5hbFsna2V5MSddID0gNzAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3WydrZXkxJ10sIDcwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHlbJ2tleTEnXSwgMjcpCisKKworY2xhc3MgQ2xhc3NDcmVhdGlvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgIGRlZiBfX2luaXRfXyhjbHMsIG5hbWUsIGJhc2VzLCBucywgKiprdyk6CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKG5hbWUsIGJhc2VzLCBucykKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBkZWYgX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgbnMsICoqa3cpOgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgbnMpCisgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICBkZWYgX19wcmVwYXJlX18obWNscywgbmFtZSwgYmFzZXMsICoqa3cpOgorICAgICAgICAgICAgbnMgPSBzdXBlcigpLl9fcHJlcGFyZV9fKG5hbWUsIGJhc2VzKQorICAgICAgICAgICAgbnNbInkiXSA9IDEKKyAgICAgICAgICAgIG5zLnVwZGF0ZShrdykKKyAgICAgICAgICAgIHJldHVybiBucworCisgICAgZGVmIHRlc3RfbmV3X2NsYXNzX2Jhc2ljcyhzZWxmKToKKyAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX25hbWVfXywgIkMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19iYXNlc19fLCAob2JqZWN0LCkpCisKKyAgICBkZWYgdGVzdF9uZXdfY2xhc3Nfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIEMgPSB0eXBlcy5uZXdfY2xhc3MoIkMiLCAoaW50LCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEMsIGludCkpCisKKyAgICBkZWYgdGVzdF9uZXdfY2xhc3NfbWV0YShzZWxmKToKKyAgICAgICAgTWV0YSA9IHNlbGYuTWV0YQorICAgICAgICBzZXR0aW5ncyA9IHsibWV0YWNsYXNzIjogTWV0YSwgInoiOiAyfQorICAgICAgICAjIFdlIGRvIHRoaXMgdHdpY2UgdG8gbWFrZSBzdXJlIHRoZSBwYXNzZWQgaW4gZGljdCBpc24ndCBtdXRhdGVkCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIgKyBzdHIoaSksICgpLCBzZXR0aW5ncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShDLCBNZXRhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLnksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMueiwgMikKKworICAgIGRlZiB0ZXN0X25ld19jbGFzc19leGVjX2JvZHkoc2VsZik6CisgICAgICAgIE1ldGEgPSBzZWxmLk1ldGEKKyAgICAgICAgZGVmIGZ1bmMobnMpOgorICAgICAgICAgICAgbnNbIngiXSA9IDAKKyAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIsICgpLCB7Im1ldGFjbGFzcyI6IE1ldGEsICJ6IjogMn0sIGZ1bmMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShDLCBNZXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMueCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLnksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy56LCAyKQorCisgICAgZGVmIHRlc3RfbmV3X2NsYXNzX21ldGFjbGFzc19rZXl3b3JkcyhzZWxmKToKKyAgICAgICAgI1Rlc3QgdGhhdCBrZXl3b3JkcyBhcmUgcGFzc2VkIHRvIHRoZSBtZXRhY2xhc3M6CisgICAgICAgIGRlZiBtZXRhX2Z1bmMobmFtZSwgYmFzZXMsIG5zLCAqKmt3KToKKyAgICAgICAgICAgIHJldHVybiBuYW1lLCBiYXNlcywgbnMsIGt3CisgICAgICAgIHJlcyA9IHR5cGVzLm5ld19jbGFzcygiWCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50LCBvYmplY3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdChtZXRhY2xhc3M9bWV0YV9mdW5jLCB4PTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgKCJYIiwgKGludCwgb2JqZWN0KSwge30sIHsieCI6IDB9KSkKKworICAgIGRlZiB0ZXN0X25ld19jbGFzc19kZWZhdWx0cyhzZWxmKToKKyAgICAgICAgIyBUZXN0IGRlZmF1bHRzL2tleXdvcmRzOgorICAgICAgICBDID0gdHlwZXMubmV3X2NsYXNzKCJDIiwgKCksIHt9LCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19uYW1lX18sICJDIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fYmFzZXNfXywgKG9iamVjdCwpKQorCisgICAgZGVmIHRlc3RfbmV3X2NsYXNzX21ldGFfd2l0aF9iYXNlKHNlbGYpOgorICAgICAgICBNZXRhID0gc2VsZi5NZXRhCisgICAgICAgIGRlZiBmdW5jKG5zKToKKyAgICAgICAgICAgIG5zWyJ4Il0gPSAwCisgICAgICAgIEMgPSB0eXBlcy5uZXdfY2xhc3MobmFtZT0iQyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZXM9KGludCwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3ZHM9ZGljdChtZXRhY2xhc3M9TWV0YSwgej0yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjX2JvZHk9ZnVuYykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQywgaW50KSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEMsIE1ldGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy54LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMueSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLnosIDIpCisKKyAgICAjIE1hbnkgb2YgdGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgZGVyaXZlZCBmcm9tIHRlc3RfZGVzY3IucHkKKyAgICBkZWYgdGVzdF9wcmVwYXJlX2NsYXNzKHNlbGYpOgorICAgICAgICAjIEJhc2ljIHRlc3Qgb2YgbWV0YWNsYXNzIGRlcml2YXRpb24KKyAgICAgICAgZXhwZWN0ZWRfbnMgPSB7fQorICAgICAgICBjbGFzcyBBKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdHlwZS5fX25ld19fKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICAgICAgZGVmIF9fcHJlcGFyZV9fKCphcmdzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWRfbnMKKworICAgICAgICBCID0gdHlwZXMubmV3X2NsYXNzKCJCIiwgKG9iamVjdCwpKQorICAgICAgICBDID0gdHlwZXMubmV3X2NsYXNzKCJDIiwgKG9iamVjdCwpLCB7Im1ldGFjbGFzcyI6IEF9KQorCisgICAgICAgICMgVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3Mgb2YgRCBpcyBBIHJhdGhlciB0aGFuIHR5cGUuCisgICAgICAgIG1ldGEsIG5zLCBrd2RzID0gdHlwZXMucHJlcGFyZV9jbGFzcygiRCIsIChCLCBDKSwgeyJtZXRhY2xhc3MiOiB0eXBlfSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtZXRhLCBBKQorICAgICAgICBzZWxmLmFzc2VydElzKG5zLCBleHBlY3RlZF9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oa3dkcyksIDApCisKKyAgICBkZWYgdGVzdF9tZXRhY2xhc3NfZGVyaXZhdGlvbihzZWxmKToKKyAgICAgICAgIyBpc3N1ZTEyOTQyMzI6IGNvcnJlY3QgbWV0YWNsYXNzIGNhbGN1bGF0aW9uCisgICAgICAgIG5ld19jYWxscyA9IFtdICAjIHRvIGNoZWNrIHRoZSBvcmRlciBvZiBfX25ld19fIGNhbGxzCisgICAgICAgIGNsYXNzIEFNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5zKToKKyAgICAgICAgICAgICAgICBuZXdfY2FsbHMuYXBwZW5kKCdBTWV0YScpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgbnMpCisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtY2xzLCBuYW1lLCBiYXNlcyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHt9CisKKyAgICAgICAgY2xhc3MgQk1ldGEoQU1ldGEpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5zKToKKyAgICAgICAgICAgICAgICBuZXdfY2FsbHMuYXBwZW5kKCdCTWV0YScpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgbnMpCisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtY2xzLCBuYW1lLCBiYXNlcyk6CisgICAgICAgICAgICAgICAgbnMgPSBzdXBlcigpLl9fcHJlcGFyZV9fKG5hbWUsIGJhc2VzKQorICAgICAgICAgICAgICAgIG5zWydCTWV0YV93YXNfaGVyZSddID0gVHJ1ZQorICAgICAgICAgICAgICAgIHJldHVybiBucworCisgICAgICAgIEEgPSB0eXBlcy5uZXdfY2xhc3MoIkEiLCAoKSwgeyJtZXRhY2xhc3MiOiBBTWV0YX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0FNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgQiA9IHR5cGVzLm5ld19jbGFzcygiQiIsICgpLCB7Im1ldGFjbGFzcyI6IEJNZXRhfSkKKyAgICAgICAgIyBCTWV0YS5fX25ld19fIGNhbGxzIEFNZXRhLl9fbmV3X18gd2l0aCBzdXBlcjoKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk1ldGEnLCAnQU1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKworICAgICAgICBDID0gdHlwZXMubmV3X2NsYXNzKCJDIiwgKEEsIEIpKQorICAgICAgICAjIFRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIEJNZXRhOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydCTWV0YScsICdBTWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorICAgICAgICAjIEJNZXRhLl9fcHJlcGFyZV9fIHNob3VsZCd2ZSBiZWVuIGNhbGxlZDoKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQk1ldGFfd2FzX2hlcmUnLCBDLl9fZGljdF9fKQorCisgICAgICAgICMgVGhlIG9yZGVyIG9mIHRoZSBiYXNlcyBzaG91bGRuJ3QgbWF0dGVyOgorICAgICAgICBDMiA9IHR5cGVzLm5ld19jbGFzcygiQzIiLCAoQiwgQSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JNZXRhJywgJ0FNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgQzIuX19kaWN0X18pCisKKyAgICAgICAgIyBDaGVjayBjb3JyZWN0IG1ldGFjbGFzcyBjYWxjdWxhdGlvbiB3aGVuIGEgbWV0YWNsYXNzIGlzIGRlY2xhcmVkOgorICAgICAgICBEID0gdHlwZXMubmV3X2NsYXNzKCJEIiwgKEMsKSwgeyJtZXRhY2xhc3MiOiB0eXBlfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk1ldGEnLCAnQU1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQk1ldGFfd2FzX2hlcmUnLCBELl9fZGljdF9fKQorCisgICAgICAgIEUgPSB0eXBlcy5uZXdfY2xhc3MoIkUiLCAoQywpLCB7Im1ldGFjbGFzcyI6IEFNZXRhfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk1ldGEnLCAnQU1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQk1ldGFfd2FzX2hlcmUnLCBFLl9fZGljdF9fKQorCisgICAgZGVmIHRlc3RfbWV0YWNsYXNzX292ZXJyaWRlX2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICAjIFNwZWNpYWwgY2FzZTogdGhlIGdpdmVuIG1ldGFjbGFzcyBpc24ndCBhIGNsYXNzLAorICAgICAgICAjIHNvIHRoZXJlIGlzIG5vIG1ldGFjbGFzcyBjYWxjdWxhdGlvbi4KKyAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9c2VsZi5NZXRhKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtYXJrZXIgPSBvYmplY3QoKQorICAgICAgICBkZWYgZnVuYygqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIG1hcmtlcgorCisgICAgICAgIFggPSB0eXBlcy5uZXdfY2xhc3MoIlgiLCAoKSwgeyJtZXRhY2xhc3MiOiBmdW5jfSkKKyAgICAgICAgWSA9IHR5cGVzLm5ld19jbGFzcygiWSIsIChvYmplY3QsKSwgeyJtZXRhY2xhc3MiOiBmdW5jfSkKKyAgICAgICAgWiA9IHR5cGVzLm5ld19jbGFzcygiWiIsIChBLCksIHsibWV0YWNsYXNzIjogZnVuY30pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobWFya2VyLCBYKQorICAgICAgICBzZWxmLmFzc2VydElzKG1hcmtlciwgWSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYXJrZXIsIFopCisKKyAgICBkZWYgdGVzdF9tZXRhY2xhc3Nfb3ZlcnJpZGVfY2FsbGFibGUoc2VsZik6CisgICAgICAgICMgVGhlIGdpdmVuIG1ldGFjbGFzcyBpcyBhIGNsYXNzLAorICAgICAgICAjIGJ1dCBub3QgYSBkZXNjZW5kYW50IG9mIHR5cGUuCisgICAgICAgIG5ld19jYWxscyA9IFtdICAjIHRvIGNoZWNrIHRoZSBvcmRlciBvZiBfX25ld19fIGNhbGxzCisgICAgICAgIHByZXBhcmVfY2FsbHMgPSBbXSAgIyB0byB0cmFjayBfX3ByZXBhcmVfXyBjYWxscworICAgICAgICBjbGFzcyBBTm90TWV0YToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKG1jbHMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgbmV3X2NhbGxzLmFwcGVuZCgnQU5vdE1ldGEnKQorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscykKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1jbHMsIG5hbWUsIGJhc2VzKToKKyAgICAgICAgICAgICAgICBwcmVwYXJlX2NhbGxzLmFwcGVuZCgnQU5vdE1ldGEnKQorICAgICAgICAgICAgICAgIHJldHVybiB7fQorCisgICAgICAgIGNsYXNzIEJOb3RNZXRhKEFOb3RNZXRhKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKG1jbHMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgbmV3X2NhbGxzLmFwcGVuZCgnQk5vdE1ldGEnKQorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscykKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1jbHMsIG5hbWUsIGJhc2VzKToKKyAgICAgICAgICAgICAgICBwcmVwYXJlX2NhbGxzLmFwcGVuZCgnQk5vdE1ldGEnKQorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fcHJlcGFyZV9fKG5hbWUsIGJhc2VzKQorCisgICAgICAgIEEgPSB0eXBlcy5uZXdfY2xhc3MoIkEiLCAoKSwgeyJtZXRhY2xhc3MiOiBBTm90TWV0YX0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQU5vdE1ldGEsIHR5cGUoQSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJlcGFyZV9jYWxscywgWydBTm90TWV0YSddKQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQU5vdE1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKworICAgICAgICBCID0gdHlwZXMubmV3X2NsYXNzKCJCIiwgKCksIHsibWV0YWNsYXNzIjogQk5vdE1ldGF9KQorICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByZXBhcmVfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIsIChBLCBCKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShDKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcmVwYXJlX2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorCisgICAgICAgIEMyID0gdHlwZXMubmV3X2NsYXNzKCJDMiIsIChCLCBBKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShDMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJlcGFyZV9jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKworICAgICAgICAjIFRoaXMgaXMgYSBUeXBlRXJyb3IsIGJlY2F1c2Ugb2YgYSBtZXRhY2xhc3MgY29uZmxpY3Q6CisgICAgICAgICMgQk5vdE1ldGEgaXMgbmVpdGhlciBhIHN1YmNsYXNzLCBub3IgYSBzdXBlcmNsYXNzIG9mIHR5cGUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgRCA9IHR5cGVzLm5ld19jbGFzcygiRCIsIChDLCksIHsibWV0YWNsYXNzIjogdHlwZX0pCisKKyAgICAgICAgRSA9IHR5cGVzLm5ld19jbGFzcygiRSIsIChDLCksIHsibWV0YWNsYXNzIjogQU5vdE1ldGF9KQorICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByZXBhcmVfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgRiA9IHR5cGVzLm5ld19jbGFzcygiRiIsIChvYmplY3QoKSwgQykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQk5vdE1ldGEsIHR5cGUoRikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJlcGFyZV9jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKworICAgICAgICBGMiA9IHR5cGVzLm5ld19jbGFzcygiRjIiLCAoQywgb2JqZWN0KCkpKQorICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEYyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcmVwYXJlX2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorCisgICAgICAgICMgVHlwZUVycm9yOiBCTm90TWV0YSBpcyBuZWl0aGVyIGEKKyAgICAgICAgIyBzdWJjbGFzcywgbm9yIGEgc3VwZXJjbGFzcyBvZiBpbnQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgWCA9IHR5cGVzLm5ld19jbGFzcygiWCIsIChDLCBpbnQoKSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFggPSB0eXBlcy5uZXdfY2xhc3MoIlgiLCAoaW50KCksIEMpKQorCisKK2NsYXNzIFNpbXBsZU5hbWVzcGFjZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBuczEgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorICAgICAgICBuczIgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xLCB5PTIpCisgICAgICAgIG5zMyA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgqKmRpY3QoeD0xLCB5PTIpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgxLCAyLCAzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5zMS5fX2RpY3RfXyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFycyhuczEpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obnMyLl9fZGljdF9fKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzKG5zMiksIHsneSc6IDIsICd4JzogMX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5zMy5fX2RpY3RfXyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFycyhuczMpLCB7J3knOiAyLCAneCc6IDF9KQorCisgICAgZGVmIHRlc3RfdW5ib3VuZChzZWxmKToKKyAgICAgICAgbnMxID0gdmFycyh0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKSkKKyAgICAgICAgbnMyID0gdmFycyh0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xLCB5PTIpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMxLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczIsIHsneSc6IDIsICd4JzogMX0pCisKKyAgICBkZWYgdGVzdF91bmRlcmx5aW5nX2RpY3Qoc2VsZik6CisgICAgICAgIG5zMSA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpCisgICAgICAgIG5zMiA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSh4PTEsIHk9MikKKyAgICAgICAgbnMzID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKGE9VHJ1ZSwgYj1GYWxzZSkKKyAgICAgICAgbWFwcGluZyA9IG5zMy5fX2RpY3RfXworICAgICAgICBkZWwgbnMzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczEuX19kaWN0X18sIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMi5fX2RpY3RfXywgeyd5JzogMiwgJ3gnOiAxfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXBwaW5nLCBkaWN0KGE9VHJ1ZSwgYj1GYWxzZSkpCisKKyAgICBkZWYgdGVzdF9hdHRyZ2V0KHNlbGYpOgorICAgICAgICBucyA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSh4PTEsIHk9Miwgdz0zKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMueCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy55LCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLncsIDMpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgbnMuegorCisgICAgZGVmIHRlc3RfYXR0cnNldChzZWxmKToKKyAgICAgICAgbnMxID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKKyAgICAgICAgbnMyID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9MSwgeT0yLCB3PTMpCisgICAgICAgIG5zMS5hID0gJ3NwYW0nCisgICAgICAgIG5zMS5iID0gJ2hhbScKKyAgICAgICAgbnMyLnogPSA0CisgICAgICAgIG5zMi50aGV0YSA9IE5vbmUKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMS5fX2RpY3RfXywgZGljdChhPSdzcGFtJywgYj0naGFtJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMyLl9fZGljdF9fLCBkaWN0KHg9MSwgeT0yLCB3PTMsIHo9NCwgdGhldGE9Tm9uZSkpCisKKyAgICBkZWYgdGVzdF9hdHRyZGVsKHNlbGYpOgorICAgICAgICBuczEgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorICAgICAgICBuczIgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xLCB5PTIsIHc9MykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGRlbCBuczEuc3BhbQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGRlbCBuczIuc3BhbQorCisgICAgICAgIGRlbCBuczIueQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMyKSwgZGljdCh3PTMsIHg9MSkpCisgICAgICAgIG5zMi55ID0gJ3NwYW0nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFycyhuczIpLCBkaWN0KHc9MywgeD0xLCB5PSdzcGFtJykpCisgICAgICAgIGRlbCBuczIueQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMyKSwgZGljdCh3PTMsIHg9MSkpCisKKyAgICAgICAgbnMxLnNwYW0gPSA1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFycyhuczEpLCBkaWN0KHNwYW09NSkpCisgICAgICAgIGRlbCBuczEuc3BhbQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMxKSwge30pCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBuczEgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xLCB5PTIsIHc9MykKKyAgICAgICAgbnMyID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKKyAgICAgICAgbnMyLnggPSAic3BhbSIKKyAgICAgICAgbnMyLl95ID0gNQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihuczEpLCAibmFtZXNwYWNlKHc9MywgeD0xLCB5PTIpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG5zMiksICJuYW1lc3BhY2UoX3k9NSwgeD0nc3BhbScpIikKKworICAgIGRlZiB0ZXN0X25lc3RlZChzZWxmKToKKyAgICAgICAgbnMxID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKGE9MSwgYj0yKQorICAgICAgICBuczIgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorICAgICAgICBuczMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD1uczEpCisgICAgICAgIG5zMi5zcGFtID0gbnMxCisgICAgICAgIG5zMi5oYW0gPSAnPycKKyAgICAgICAgbnMyLnNwYW0gPSBuczMKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMxKSwgZGljdChhPTEsIGI9MikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFycyhuczIpLCBkaWN0KHNwYW09bnMzLCBoYW09Jz8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczIuc3BhbSwgbnMzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMzKSwgZGljdCh4PW5zMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMzLnguYSwgMSkKKworICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZShzZWxmKToKKyAgICAgICAgbnMxID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKGM9J2Nvb2tpZScpCisgICAgICAgIG5zMiA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpCisgICAgICAgIG5zMyA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSh4PTEpCisgICAgICAgIG5zMS5zcGFtID0gbnMxCisgICAgICAgIG5zMi5zcGFtID0gbnMzCisgICAgICAgIG5zMy5zcGFtID0gbnMyCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczEuc3BhbSwgbnMxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMS5zcGFtLnNwYW0sIG5zMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczEuc3BhbS5zcGFtLCBuczEuc3BhbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczIuc3BhbSwgbnMzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMy5zcGFtLCBuczIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMyLnNwYW0uc3BhbSwgbnMyKQorCisgICAgZGVmIHRlc3RfcmVjdXJzaXZlX3JlcHIoc2VsZik6CisgICAgICAgIG5zMSA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZShjPSdjb29raWUnKQorICAgICAgICBuczIgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorICAgICAgICBuczMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xKQorICAgICAgICBuczEuc3BhbSA9IG5zMQorICAgICAgICBuczIuc3BhbSA9IG5zMworICAgICAgICBuczMuc3BhbSA9IG5zMgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihuczEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lc3BhY2UoYz0nY29va2llJywgc3BhbT1uYW1lc3BhY2UoLi4uKSkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobnMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZXNwYWNlKHNwYW09bmFtZXNwYWNlKHNwYW09bmFtZXNwYWNlKC4uLiksIHg9MSkpIikKKworICAgIGRlZiB0ZXN0X2FzX2RpY3Qoc2VsZik6CisgICAgICAgIG5zID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHNwYW09J3NwYW1zcGFtc3BhbScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgbGVuKG5zKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBpdGVyKG5zKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAnc3BhbScgaW4gbnMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgbnNbJ3NwYW0nXQorCisgICAgZGVmIHRlc3Rfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIFNwYW0odHlwZXMuU2ltcGxlTmFtZXNwYWNlKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzcGFtID0gU3BhbShoYW09OCwgZWdncz05KQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShzcGFtKSwgU3BhbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzKHNwYW0pLCB7J2hhbSc6IDgsICdlZ2dzJzogOX0pCisKKwogZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChUeXBlc1Rlc3RzKQorICAgIHJ1bl91bml0dGVzdChUeXBlc1Rlc3RzLCBNYXBwaW5nUHJveHlUZXN0cywgQ2xhc3NDcmVhdGlvblRlc3RzLAorICAgICAgICAgICAgICAgICBTaW1wbGVOYW1lc3BhY2VUZXN0cykKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91Y24ucHkgYi9MaWIvdGVzdC90ZXN0X3Vjbi5weQppbmRleCBmYmJlNzhiLi4yZTYzNzQ1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Vjbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Vjbi5weQpAQCAtOCw5ICs4LDEyIEBACiAiIiIjIgogCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB1bmljb2RlZGF0YQogaW1wb3J0IF90ZXN0Y2FwaQogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gaHR0cC5jbGllbnQgaW1wb3J0IEhUVFBFeGNlcHRpb24KK2Zyb20gdGVzdC50ZXN0X25vcm1hbGl6YXRpb24gaW1wb3J0IGNoZWNrX3ZlcnNpb24KIAogY2xhc3MgVW5pY29kZU5hbWVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTYwLDggKzYzLDYgQEAKICAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfYXNjaWlfbGV0dGVycyhzZWxmKToKLSAgICAgICAgaW1wb3J0IHVuaWNvZGVkYXRhCi0KICAgICAgICAgZm9yIGNoYXIgaW4gIiIuam9pbihtYXAoY2hyLCByYW5nZShvcmQoImEiKSwgb3JkKCJ6IikpKSk6CiAgICAgICAgICAgICBuYW1lID0gIkxBVElOIFNNQUxMIExFVFRFUiAlcyIgJSBjaGFyLnVwcGVyKCkKICAgICAgICAgICAgIGNvZGUgPSB1bmljb2RlZGF0YS5sb29rdXAobmFtZSkKQEAgLTgyLDcgKzgzLDYgQEAKICAgICAgICAgc2VsZi5jaGVja2xldHRlcigiSEFOR1VMIFNZTExBQkxFIEhXRU9LIiwgIlx1ZDZmOCIpCiAgICAgICAgIHNlbGYuY2hlY2tsZXR0ZXIoIkhBTkdVTCBTWUxMQUJMRSBISUgiLCAiXHVkN2EzIikKIAotICAgICAgICBpbXBvcnQgdW5pY29kZWRhdGEKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdW5pY29kZWRhdGEubmFtZSwgIlx1ZDdhNCIpCiAKICAgICBkZWYgdGVzdF9jamtfdW5pZmllZF9pZGVvZ3JhcGhzKHNlbGYpOgpAQCAtOTgsMTQgKzk4LDExIEBACiAgICAgICAgIHNlbGYuY2hlY2tsZXR0ZXIoIkNKSyBVTklGSUVEIElERU9HUkFQSC0yQjgxRCIsICJcVTAwMDJCODFEIikKIAogICAgIGRlZiB0ZXN0X2JtcF9jaGFyYWN0ZXJzKHNlbGYpOgotICAgICAgICBpbXBvcnQgdW5pY29kZWRhdGEKLSAgICAgICAgY291bnQgPSAwCiAgICAgICAgIGZvciBjb2RlIGluIHJhbmdlKDB4MTAwMDApOgogICAgICAgICAgICAgY2hhciA9IGNocihjb2RlKQogICAgICAgICAgICAgbmFtZSA9IHVuaWNvZGVkYXRhLm5hbWUoY2hhciwgTm9uZSkKICAgICAgICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlZGF0YS5sb29rdXAobmFtZSksIGNoYXIpCi0gICAgICAgICAgICAgICAgY291bnQgKz0gMQogCiAgICAgZGVmIHRlc3RfbWlzY19zeW1ib2xzKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrbGV0dGVyKCJQSUxDUk9XIFNJR04iLCAiXHUwMGI2IikKQEAgLTExMyw4ICsxMTAsODUgQEAKICAgICAgICAgc2VsZi5jaGVja2xldHRlcigiSEFMRldJRFRIIEtBVEFLQU5BIFNFTUktVk9JQ0VEIFNPVU5EIE1BUksiLCAiXHVGRjlGIikKICAgICAgICAgc2VsZi5jaGVja2xldHRlcigiRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBBIiwgIlx1RkY0MSIpCiAKKyAgICBkZWYgdGVzdF9hbGlhc2VzKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGFsaWFzZXMgZGVmaW5lZCBpbiB0aGUgTmFtZUFsaWFzZXMudHh0IGZpbGUgd29yay4KKyAgICAgICAgIyBUaGlzIHNob3VsZCBiZSB1cGRhdGVkIHdoZW4gbmV3IGFsaWFzZXMgYXJlIGFkZGVkIG9yIHRoZSBmaWxlCisgICAgICAgICMgc2hvdWxkIGJlIGRvd25sb2FkZWQgYW5kIHBhcnNlZCBpbnN0ZWFkLiAgU2VlICMxMjc1My4KKyAgICAgICAgYWxpYXNlcyA9IFsKKyAgICAgICAgICAgICgnTEFUSU4gQ0FQSVRBTCBMRVRURVIgR0hBJywgMHgwMUEyKSwKKyAgICAgICAgICAgICgnTEFUSU4gU01BTEwgTEVUVEVSIEdIQScsIDB4MDFBMyksCisgICAgICAgICAgICAoJ0tBTk5BREEgTEVUVEVSIExMTEEnLCAweDBDREUpLAorICAgICAgICAgICAgKCdMQU8gTEVUVEVSIEZPIEZPTicsIDB4MEU5RCksCisgICAgICAgICAgICAoJ0xBTyBMRVRURVIgRk8gRkFZJywgMHgwRTlGKSwKKyAgICAgICAgICAgICgnTEFPIExFVFRFUiBSTycsIDB4MEVBMyksCisgICAgICAgICAgICAoJ0xBTyBMRVRURVIgTE8nLCAweDBFQTUpLAorICAgICAgICAgICAgKCdUSUJFVEFOIE1BUksgQktBLSBTSE9HIEdJIE1HTyBSR1lBTicsIDB4MEZEMCksCisgICAgICAgICAgICAoJ1lJIFNZTExBQkxFIElURVJBVElPTiBNQVJLJywgMHhBMDE1KSwKKyAgICAgICAgICAgICgnUFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFJJR0hUIFdISVRFIExFTlRJQ1VMQVIgQlJBQ0tFVCcsIDB4RkUxOCksCisgICAgICAgICAgICAoJ0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBGVEhPUkEgU0tMSVJPTiBDSFJPTUEgVkFTSVMnLCAweDFEMEM1KQorICAgICAgICBdCisgICAgICAgIGZvciBhbGlhcywgY29kZXBvaW50IGluIGFsaWFzZXM6CisgICAgICAgICAgICBzZWxmLmNoZWNrbGV0dGVyKGFsaWFzLCBjaHIoY29kZXBvaW50KSkKKyAgICAgICAgICAgIG5hbWUgPSB1bmljb2RlZGF0YS5uYW1lKGNocihjb2RlcG9pbnQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChuYW1lLCBhbGlhcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZWRhdGEubG9va3VwKGFsaWFzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZWRhdGEubG9va3VwKG5hbWUpKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICAgICAgdW5pY29kZWRhdGEudWNkXzNfMl8wLmxvb2t1cChhbGlhcykKKworICAgIGRlZiB0ZXN0X2FsaWFzZXNfbmFtZXNfaW5fcHVhX3JhbmdlKHNlbGYpOgorICAgICAgICAjIFdlIGFyZSBzdG9yaW5nIGFsaWFzZXMgaW4gdGhlIFBVQSAxNSwgYnV0IHRoZWlyIG5hbWVzIHNob3VsZG4ndCBsZWFrCisgICAgICAgIGZvciBjcCBpbiByYW5nZSgweGYwMDAwLCAweGYwMTAwKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgdW5pY29kZWRhdGEubmFtZShjaHIoY3ApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgJ25vIHN1Y2ggbmFtZScpCisKKyAgICBkZWYgdGVzdF9uYW1lZF9zZXF1ZW5jZXNfbmFtZXNfaW5fcHVhX3JhbmdlKHNlbGYpOgorICAgICAgICAjIFdlIGFyZSBzdG9yaW5nIG5hbWVkIHNlcSBpbiB0aGUgUFVBIDE1LCBidXQgdGhlaXIgbmFtZXMgc2hvdWxkbid0IGxlYWsKKyAgICAgICAgZm9yIGNwIGluIHJhbmdlKDB4ZjAxMDAsIDB4ZjBmZmYpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICB1bmljb2RlZGF0YS5uYW1lKGNocihjcCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAnbm8gc3VjaCBuYW1lJykKKworICAgIGRlZiB0ZXN0X25hbWVkX3NlcXVlbmNlc19zYW1wbGUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgYSBmZXcgbmFtZWQgc2VxdWVuY2VzLiAgU2VlICMxMjc1My4KKyAgICAgICAgc2VxdWVuY2VzID0gWworICAgICAgICAgICAgKCdMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIFRJTERFJywgJ1x1MDA3Mlx1MDMwMycpLAorICAgICAgICAgICAgKCdUQU1JTCBTWUxMQUJMRSBTQUknLCAnXHUwQkI4XHUwQkM4JyksCisgICAgICAgICAgICAoJ1RBTUlMIFNZTExBQkxFIE1PTycsICdcdTBCQUVcdTBCQ0InKSwKKyAgICAgICAgICAgICgnVEFNSUwgU1lMTEFCTEUgTk5PTycsICdcdTBCQTNcdTBCQ0InKSwKKyAgICAgICAgICAgICgnVEFNSUwgQ09OU09OQU5UIEtTUycsICdcdTBCOTVcdTBCQ0RcdTBCQjdcdTBCQ0QnKSwKKyAgICAgICAgXQorICAgICAgICBmb3Igc2VxbmFtZSwgY29kZXBvaW50cyBpbiBzZXF1ZW5jZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVkYXRhLmxvb2t1cChzZXFuYW1lKSwgY29kZXBvaW50cykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tsZXR0ZXIoc2VxbmFtZSwgTm9uZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhLnVjZF8zXzJfMC5sb29rdXAoc2VxbmFtZSkKKworICAgIGRlZiB0ZXN0X25hbWVkX3NlcXVlbmNlc19mdWxsKHNlbGYpOgorICAgICAgICAjIENoZWNrIGFsbCB0aGUgbmFtZWQgc2VxdWVuY2VzCisgICAgICAgIHVybCA9ICgiaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvJXMvdWNkL05hbWVkU2VxdWVuY2VzLnR4dCIgJQorICAgICAgICAgICAgICAgdW5pY29kZWRhdGEudW5pZGF0YV92ZXJzaW9uKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ZXN0ZGF0YSA9IHN1cHBvcnQub3Blbl91cmxyZXNvdXJjZSh1cmwsIGVuY29kaW5nPSJ1dGYtOCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVjaz1jaGVja192ZXJzaW9uKQorICAgICAgICBleGNlcHQgKElPRXJyb3IsIEhUVFBFeGNlcHRpb24pOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiQ291bGQgbm90IHJldHJpZXZlICIgKyB1cmwpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0ZXN0ZGF0YS5jbG9zZSkKKyAgICAgICAgZm9yIGxpbmUgaW4gdGVzdGRhdGE6CisgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICBpZiBub3QgbGluZSBvciBsaW5lLnN0YXJ0c3dpdGgoJyMnKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgc2VxbmFtZSwgY29kZXBvaW50cyA9IGxpbmUuc3BsaXQoJzsnKQorICAgICAgICAgICAgY29kZXBvaW50cyA9ICcnLmpvaW4oY2hyKGludChjcCwgMTYpKSBmb3IgY3AgaW4gY29kZXBvaW50cy5zcGxpdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlZGF0YS5sb29rdXAoc2VxbmFtZSksIGNvZGVwb2ludHMpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrbGV0dGVyKHNlcW5hbWUsIE5vbmUpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgICAgICB1bmljb2RlZGF0YS51Y2RfM18yXzAubG9va3VwKHNlcW5hbWUpCisKICAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6Ci0gICAgICAgIGltcG9ydCB1bmljb2RlZGF0YQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHVuaWNvZGVkYXRhLm5hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdW5pY29kZWRhdGEubmFtZSwgJ3h4JykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB1bmljb2RlZGF0YS5sb29rdXApCkBAIC0xNDUsNyArMjE5LDcgQEAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhfdGVzdGNhcGkuSU5UX01BWCA8IF90ZXN0Y2FwaS5QWV9TU0laRV9UX01BWCwKICAgICAgICAgICAgICAgICAgICAgICAgICAibmVlZHMgVUlOVF9NQVggPCBTSVpFX01BWCIpCiAgICAgQHN1cHBvcnQuYmlnbWVtdGVzdChzaXplPV90ZXN0Y2FwaS5VSU5UX01BWCArIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICBtZW11c2U9MiArIDQgLy8gbGVuKCdcVTAwMDEwMDAwJyksIGRyeV9ydW49RmFsc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBtZW11c2U9MiArIDEsIGRyeV9ydW49RmFsc2UpCiAgICAgZGVmIHRlc3RfaXNzdWUxNjMzNShzZWxmLCBzaXplKToKICAgICAgICAgIyB2ZXJ5IHZlcnkgbG9uZyBib2d1cyBjaGFyYWN0ZXIgbmFtZQogICAgICAgICB4ID0gYidcXE57U1BBQ0UnICsgYid4JyAqIChfdGVzdGNhcGkuVUlOVF9NQVggKyAxKSArIGInfScKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQppbmRleCA0N2FmOGI5Li5kNGUyMjIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CkBAIC01LDE3ICs1LDEzIEBACiAoYykgQ29weXJpZ2h0IENOUkksIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIE5PIFdBUlJBTlRZLgogCiAiIiIjIgoraW1wb3J0IF9zdHJpbmcKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHN0cmluZ190ZXN0cwotaW1wb3J0IF9zdHJpbmcKLQotIyBkZWNvcmF0b3IgdG8gc2tpcCB0ZXN0cyBvbiBuYXJyb3cgYnVpbGRzCi1yZXF1aXJlc193aWRlX2J1aWxkID0gdW5pdHRlc3Quc2tpcElmKHN5cy5tYXh1bmljb2RlID09IDY1NTM1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgd2lkZSBidWlsZCcpCiAKICMgRXJyb3IgaGFuZGxpbmcgKGJhZCBkZWNvZGVyIHJldHVybikKIGRlZiBzZWFyY2hfZnVuY3Rpb24oZW5jb2RpbmcpOgpAQCAtMzcsNyArMzMsOCBAQAogCiBjbGFzcyBVbmljb2RlVGVzdChzdHJpbmdfdGVzdHMuQ29tbW9uVGVzdCwKICAgICAgICAgc3RyaW5nX3Rlc3RzLk1peGluU3RyVW5pY29kZVVzZXJTdHJpbmdUZXN0LAotICAgICAgICBzdHJpbmdfdGVzdHMuTWl4aW5TdHJVbmljb2RlVGVzdCk6CisgICAgICAgIHN0cmluZ190ZXN0cy5NaXhpblN0clVuaWNvZGVUZXN0LAorICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICB0eXBlMnRlc3QgPSBzdHIKIApAQCAtMTc1LDYgKzE3MiwxNSBAQAogCiAgICAgZGVmIHRlc3RfZmluZChzZWxmKToKICAgICAgICAgc3RyaW5nX3Rlc3RzLkNvbW1vblRlc3QudGVzdF9maW5kKHNlbGYpCisgICAgICAgICMgdGVzdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHRoZSBtZW1jaHIgZmFzdCBwYXRoCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgxMDAsICdhJyAqIDEwMCArICdcdTAxMDInLCAnZmluZCcsICdcdTAxMDInKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdhJyAqIDEwMCArICdcdTAxMDInLCAnZmluZCcsICdcdTAyMDEnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdhJyAqIDEwMCArICdcdTAxMDInLCAnZmluZCcsICdcdTAxMjAnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdhJyAqIDEwMCArICdcdTAxMDInLCAnZmluZCcsICdcdTAyMjAnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMTAwLCAnYScgKiAxMDAgKyAnXFUwMDEwMDMwNCcsICdmaW5kJywgJ1xVMDAxMDAzMDQnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdhJyAqIDEwMCArICdcVTAwMTAwMzA0JywgJ2ZpbmQnLCAnXFUwMDEwMDIwNCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ2EnICogMTAwICsgJ1xVMDAxMDAzMDQnLCAnZmluZCcsICdcVTAwMTAyMDA0JykKKyAgICAgICAgIyBjaGVjayBtaXhlZCBhcmd1bWVudCB0eXBlcwogICAgICAgICBzZWxmLmNoZWNrZXF1YWxub2ZpeCgwLCAgJ2FiY2RlZmdoaWFiYycsICdmaW5kJywgJ2FiYycpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KDksICAnYWJjZGVmZ2hpYWJjJywgJ2ZpbmQnLCAnYWJjJywgMSkKICAgICAgICAgc2VsZi5jaGVja2VxdWFsbm9maXgoLTEsICdhYmNkZWZnaGlhYmMnLCAnZmluZCcsICdkZWYnLCA0KQpAQCAtMTg0LDYgKzE5MCwxNCBAQAogCiAgICAgZGVmIHRlc3RfcmZpbmQoc2VsZik6CiAgICAgICAgIHN0cmluZ190ZXN0cy5Db21tb25UZXN0LnRlc3RfcmZpbmQoc2VsZikKKyAgICAgICAgIyB0ZXN0IGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlIG1lbXJjaHIgZmFzdCBwYXRoCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgwLCAnXHUwMTAyJyArICdhJyAqIDEwMCAsICdyZmluZCcsICdcdTAxMDInKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdcdTAxMDInICsgJ2EnICogMTAwICwgJ3JmaW5kJywgJ1x1MDIwMScpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ1x1MDEwMicgKyAnYScgKiAxMDAgLCAncmZpbmQnLCAnXHUwMTIwJykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnXHUwMTAyJyArICdhJyAqIDEwMCAsICdyZmluZCcsICdcdTAyMjAnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMCwgJ1xVMDAxMDAzMDQnICsgJ2EnICogMTAwLCAncmZpbmQnLCAnXFUwMDEwMDMwNCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ1xVMDAxMDAzMDQnICsgJ2EnICogMTAwLCAncmZpbmQnLCAnXFUwMDEwMDIwNCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ1xVMDAxMDAzMDQnICsgJ2EnICogMTAwLCAncmZpbmQnLCAnXFUwMDEwMjAwNCcpCiAgICAgICAgICMgY2hlY2sgbWl4ZWQgYXJndW1lbnQgdHlwZXMKICAgICAgICAgc2VsZi5jaGVja2VxdWFsbm9maXgoOSwgICAnYWJjZGVmZ2hpYWJjJywgJ3JmaW5kJywgJ2FiYycpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KDEyLCAgJ2FiY2RlZmdoaWFiYycsICdyZmluZCcsICcnKQpAQCAtMjgwLDYgKzI5NCwxMiBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWxub2ZpeCgnb25lQHR3byF0aHJlZSEnLCAnb25lIXR3byF0aHJlZSEnLCAncmVwbGFjZScsICchJywgJ0AnLCAxKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICdyZXBsYWNlJy5yZXBsYWNlLCAiciIsIDQyKQogCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfcmVwbGFjZV9pZChzZWxmKToKKyAgICAgICAgcGF0dGVybiA9ICdhYmMnCisgICAgICAgIHRleHQgPSAnYWJjIGRlZicKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0ZXh0LnJlcGxhY2UocGF0dGVybiwgcGF0dGVybiksIHRleHQpCisKICAgICBkZWYgdGVzdF9ieXRlc19jb21wYXJpc29uKHNlbGYpOgogICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgQnl0ZXNXYXJuaW5nKQpAQCAtMzUwLDYgKzM3MCw4IEBACiAgICAgZGVmIHRlc3RfaXNsb3dlcihzZWxmKToKICAgICAgICAgc3RyaW5nX3Rlc3RzLk1peGluU3RyVW5pY29kZVVzZXJTdHJpbmdUZXN0LnRlc3RfaXNsb3dlcihzZWxmKQogICAgICAgICBzZWxmLmNoZWNrZXF1YWxub2ZpeChGYWxzZSwgJ1x1MUZGYycsICdpc2xvd2VyJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnXHUyMTY3Jy5pc2xvd2VyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnXHUyMTc3Jy5pc2xvd2VyKCkpCiAgICAgICAgICMgbm9uLUJNUCwgdXBwZXJjYXNlCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ1xVMDAwMTA0MDEnLmlzbG93ZXIoKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnXFUwMDAxMDQyNycuaXNsb3dlcigpKQpAQCAtMzY0LDYgKzM4Niw4IEBACiAgICAgICAgIHN0cmluZ190ZXN0cy5NaXhpblN0clVuaWNvZGVVc2VyU3RyaW5nVGVzdC50ZXN0X2lzdXBwZXIoc2VsZikKICAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdqYXZhJyk6CiAgICAgICAgICAgICBzZWxmLmNoZWNrZXF1YWxub2ZpeChGYWxzZSwgJ1x1MUZGYycsICdpc3VwcGVyJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdcdTIxNjcnLmlzdXBwZXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnXHUyMTc3Jy5pc3VwcGVyKCkpCiAgICAgICAgICMgbm9uLUJNUCwgdXBwZXJjYXNlCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnXFUwMDAxMDQwMScuaXN1cHBlcigpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1xVMDAwMTA0MjcnLmlzdXBwZXIoKSkKQEAgLTUyMCw3ICs1NDQsNiBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWV0aChzKSwgJyVhLiVzKCkgaXMgRmFsc2UnICUgKHMsIG1ldGhfbmFtZSkpCiAKIAotICAgIEByZXF1aXJlc193aWRlX2J1aWxkCiAgICAgZGVmIHRlc3RfbG93ZXIoc2VsZik6CiAgICAgICAgIHN0cmluZ190ZXN0cy5Db21tb25UZXN0LnRlc3RfbG93ZXIoc2VsZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAxMDQyNycubG93ZXIoKSwgJ1xVMDAwMTA0NEYnKQpAQCAtNTMwLDggKzU1MywyOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICdcVTAwMDEwNDRGXFUwMDAxMDQ0RicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1hcVTAwMDEwNDI3eFxVMDAwMTA0NEYnLmxvd2VyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3hcVTAwMDEwNDRGeFxVMDAwMTA0NEYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCfvrIEnLmxvd2VyKCksICfvrIEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTAxMzAnLmxvd2VyKCksICdcdTAwNjlcdTAzMDcnKQorICAgICAgICAjIFNwZWNpYWwgY2FzZSBmb3IgR1JFRUsgQ0FQSVRBTCBMRVRURVIgU0lHTUEgVSswM0EzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDNhMycubG93ZXIoKSwgJ1x1MDNjMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDM0NVx1MDNhMycubG93ZXIoKSwgJ1x1MDM0NVx1MDNjMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FcdTAzNDVcdTAzYTMnLmxvd2VyKCksICdhXHUwMzQ1XHUwM2MyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDM0NVx1MDNhM2EnLmxvd2VyKCksICdhXHUwMzQ1XHUwM2MzYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FcdTAzNDVcdTAzYTMnLmxvd2VyKCksICdhXHUwMzQ1XHUwM2MyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDNhM1x1MDM0NScubG93ZXIoKSwgJ2FcdTAzYzJcdTAzNDUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTAzYTNcdTAzNDUgJy5sb3dlcigpLCAnXHUwM2MzXHUwMzQ1ICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwOGZmZmUnLmxvd2VyKCksICdcVTAwMDhmZmZlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUyMTc3Jy5sb3dlcigpLCAnXHUyMTc3JykKIAotICAgIEByZXF1aXJlc193aWRlX2J1aWxkCisgICAgZGVmIHRlc3RfY2FzZWZvbGQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJy5jYXNlZm9sZCgpLCAnaGVsbG8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoRUxsbycuY2FzZWZvbGQoKSwgJ2hlbGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnw58nLmNhc2Vmb2xkKCksICdzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ++sgScuY2FzZWZvbGQoKSwgJ2ZpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwM2EzJy5jYXNlZm9sZCgpLCAnXHUwM2MzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDM0NVx1MDNhMycuY2FzZWZvbGQoKSwgJ2FcdTAzYjlcdTAzYzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTAwYjUnLmNhc2Vmb2xkKCksICdcdTAzYmMnKQorCiAgICAgZGVmIHRlc3RfdXBwZXIoc2VsZik6CiAgICAgICAgIHN0cmluZ190ZXN0cy5Db21tb25UZXN0LnRlc3RfdXBwZXIoc2VsZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAxMDQ0RicudXBwZXIoKSwgJ1xVMDAwMTA0MjcnKQpAQCAtNTQxLDggKzU4NCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICdcVTAwMDEwNDI3XFUwMDAxMDQyNycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1hcVTAwMDEwNDI3eFxVMDAwMTA0NEYnLnVwcGVyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1hcVTAwMDEwNDI3WFxVMDAwMTA0MjcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCfvrIEnLnVwcGVyKCksICdGSScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDEzMCcudXBwZXIoKSwgJ1x1MDEzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDNhMycudXBwZXIoKSwgJ1x1MDNhMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ8OfJy51cHBlcigpLCAnU1MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTFmZDInLnVwcGVyKCksICdcdTAzOTlcdTAzMDhcdTAzMDAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDhmZmZlJy51cHBlcigpLCAnXFUwMDA4ZmZmZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MjE3NycudXBwZXIoKSwgJ1x1MjE2NycpCiAKLSAgICBAcmVxdWlyZXNfd2lkZV9idWlsZAogICAgIGRlZiB0ZXN0X2NhcGl0YWxpemUoc2VsZik6CiAgICAgICAgIHN0cmluZ190ZXN0cy5Db21tb25UZXN0LnRlc3RfY2FwaXRhbGl6ZShzZWxmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDEwNDRGJy5jYXBpdGFsaXplKCksICdcVTAwMDEwNDI3JykKQEAgLTU1NCw4ICs2MDMsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAnXFUwMDAxMDQyN1xVMDAwMTA0NEYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdYXFUwMDAxMDQyN3hcVTAwMDEwNDRGJy5jYXBpdGFsaXplKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1hcVTAwMDEwNDRGeFxVMDAwMTA0NEYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoXHUwMTMwJy5jYXBpdGFsaXplKCksICdIXHUwMDY5XHUwMzA3JykKKyAgICAgICAgZXhwID0gJ1x1MDM5OVx1MDMwOFx1MDMwMFx1MDA2OVx1MDMwNycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUxZmQyXHUwMTMwJy5jYXBpdGFsaXplKCksIGV4cCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn76yBbm5pc2gnLmNhcGl0YWxpemUoKSwgJ0ZJbm5pc2gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwMzQ1XHUwM2EzJy5jYXBpdGFsaXplKCksICdBXHUwMzQ1XHUwM2MyJykKIAotICAgIEByZXF1aXJlc193aWRlX2J1aWxkCiAgICAgZGVmIHRlc3RfdGl0bGUoc2VsZik6CiAgICAgICAgIHN0cmluZ190ZXN0cy5NaXhpblN0clVuaWNvZGVVc2VyU3RyaW5nVGVzdC50ZXN0X3RpdGxlKHNlbGYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwMTA0NEYnLnRpdGxlKCksICdcVTAwMDEwNDI3JykKQEAgLTU2OSw4ICs2MjIsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAnXFUwMDAxMDQyN1xVMDAwMTA0NEYgXFUwMDAxMDQyN1xVMDAwMTA0NEYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdYXFUwMDAxMDQyN3hcVTAwMDEwNDRGIFhcVTAwMDEwNDI3eFxVMDAwMTA0NEYnLnRpdGxlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1hcVTAwMDEwNDRGeFxVMDAwMTA0NEYgWFxVMDAwMTA0NEZ4XFUwMDAxMDQ0RicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ++sgU5OSVNIJy50aXRsZSgpLCAnRmlubmlzaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FcdTAzYTMgXHUxZmExeHknLnRpdGxlKCksICdBXHUwM2MyIFx1MWZhOXh5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDNhM0EnLnRpdGxlKCksICdBXHUwM2MzYScpCiAKLSAgICBAcmVxdWlyZXNfd2lkZV9idWlsZAogICAgIGRlZiB0ZXN0X3N3YXBjYXNlKHNlbGYpOgogICAgICAgICBzdHJpbmdfdGVzdHMuQ29tbW9uVGVzdC50ZXN0X3N3YXBjYXNlKHNlbGYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwMTA0NEYnLnN3YXBjYXNlKCksICdcVTAwMDEwNDI3JykKQEAgLTU4Myw2ICs2MzgsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAnXFUwMDAxMDQyN1xVMDAwMTA0NEYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdYXFUwMDAxMDQyN3hcVTAwMDEwNDRGJy5zd2FwY2FzZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICd4XFUwMDAxMDQ0RlhcVTAwMDEwNDI3JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn76yBJy5zd2FwY2FzZSgpLCAnRkknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTAxMzAnLnN3YXBjYXNlKCksICdcdTAwNjlcdTAzMDcnKQorICAgICAgICAjIFNwZWNpYWwgY2FzZSBmb3IgR1JFRUsgQ0FQSVRBTCBMRVRURVIgU0lHTUEgVSswM0EzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDNhMycuc3dhcGNhc2UoKSwgJ1x1MDNjMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDM0NVx1MDNhMycuc3dhcGNhc2UoKSwgJ1x1MDM5OVx1MDNjMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FcdTAzNDVcdTAzYTMnLnN3YXBjYXNlKCksICdhXHUwMzk5XHUwM2MyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDM0NVx1MDNhM2EnLnN3YXBjYXNlKCksICdhXHUwMzk5XHUwM2MzQScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FcdTAzNDVcdTAzYTMnLnN3YXBjYXNlKCksICdhXHUwMzk5XHUwM2MyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDNhM1x1MDM0NScuc3dhcGNhc2UoKSwgJ2FcdTAzYzJcdTAzOTknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTAzYTNcdTAzNDUgJy5zd2FwY2FzZSgpLCAnXHUwM2MzXHUwMzk5ICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDNhMycuc3dhcGNhc2UoKSwgJ1x1MDNjMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ8OfJy5zd2FwY2FzZSgpLCAnU1MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTFmZDInLnN3YXBjYXNlKCksICdcdTAzOTlcdTAzMDhcdTAzMDAnKQogCiAgICAgZGVmIHRlc3RfY29udGFpbnMoc2VsZik6CiAgICAgICAgICMgVGVzdGluZyBVbmljb2RlIGNvbnRhaW5zIG1ldGhvZApAQCAtNzc2LDcgKzg0NCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3swIXN9Jy5mb3JtYXQoRygnZGF0YScpKSwgJ3N0cmluZyBpcyBkYXRhJykKIAogICAgICAgICBtc2cgPSAnb2JqZWN0Ll9fZm9ybWF0X18gd2l0aCBhIG5vbi1lbXB0eSBmb3JtYXQgc3RyaW5nIGlzIGRlcHJlY2F0ZWQnCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygobXNnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygobXNnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3swOl4xMH0nLmZvcm1hdChFKCdkYXRhJykpLCAnIEUoZGF0YSkgICcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7MDpeMTBzfScuZm9ybWF0KEUoJ2RhdGEnKSksICcgRShkYXRhKSAgJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3swOj4xNXN9Jy5mb3JtYXQoRygnZGF0YScpKSwgJyBzdHJpbmcgaXMgZGF0YScpCkBAIC04NTgsNiArOTI2LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgJycsICcjJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAnJywgJyMyMCcpCiAKKyAgICAgICAgIyBOb24tQVNDSUkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiezA6c317MTpzfSIuZm9ybWF0KCJBQkMiLCAiXHUwNDEwXHUwNDExXHUwNDEyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0FCQ1x1MDQxMFx1MDQxMVx1MDQxMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInswOi4zc30iLmZvcm1hdCgiQUJDXHUwNDEwXHUwNDExXHUwNDEyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0FCQycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInswOi4wc30iLmZvcm1hdCgiQUJDXHUwNDEwXHUwNDExXHUwNDEyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKICAgICBkZWYgdGVzdF9mb3JtYXRfbWFwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmZvcm1hdF9tYXAoe30pLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYScuZm9ybWF0X21hcCh7fSksICdhJykKQEAgLTEwMDUsNiArMTA4MSwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCclZicgJSBJTkYsICdpbmYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCclRicgJSBJTkYsICdJTkYnKQogCisgICAgICAgICMgUEVQIDM5MworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCclLjFzJyAlICJhXHhlOVx1MjBhYyIsICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJS4ycycgJSAiYVx4ZTlcdTIwYWMiLCAnYVx4ZTknKQorCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3RfZm9ybWF0dGluZ19odWdlX3ByZWNpc2lvbihzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IElOVF9NQVgKQEAgLTEwNDEsMTAgKzExMjEsMTMgQEAKICAgICAgICAgY2xhc3MgVW5pY29kZVN1YmNsYXNzKHN0cik6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHN0cihVbmljb2RlU3ViY2xhc3MoJ3VuaWNvZGUgc3ViY2xhc3MgYmVjb21lcyB1bmljb2RlJykpLAotICAgICAgICAgICAgJ3VuaWNvZGUgc3ViY2xhc3MgYmVjb21lcyB1bmljb2RlJwotICAgICAgICApCisgICAgICAgIGZvciB0ZXh0IGluICgnYXNjaWknLCAnXHhlOScsICdcdTIwYWMnLCAnXFUwMDEwRkZGRicpOgorICAgICAgICAgICAgc3ViY2xhc3MgPSBVbmljb2RlU3ViY2xhc3ModGV4dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHN1YmNsYXNzKSwgdGV4dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHN1YmNsYXNzKSwgbGVuKHRleHQpKQorICAgICAgICAgICAgaWYgdGV4dCA9PSAnYXNjaWknOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3ViY2xhc3MuZW5jb2RlKCdhc2NpaScpLCBiJ2FzY2lpJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1YmNsYXNzLmVuY29kZSgndXRmLTgnKSwgYidhc2NpaScpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgIHN0cignc3RyaW5ncyBhcmUgY29udmVydGVkIHRvIHVuaWNvZGUnKSwKQEAgLTExNzAsMTUgKzEyNTMsMTIgQEAKICAgICBkZWYgdGVzdF9jb2RlY3NfdXRmOChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5lbmNvZGUoJ3V0Zi04JyksIGInJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUyMGFjJy5lbmNvZGUoJ3V0Zi04JyksIGInXHhlMlx4ODJceGFjJykKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPT0gNjU1MzU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdWQ4MDBcdWRjMDInLmVuY29kZSgndXRmLTgnKSwgYidceGYwXHg5MFx4ODBceDgyJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1ZDg0ZFx1ZGM1NicuZW5jb2RlKCd1dGYtOCcpLCBiJ1x4ZjBceGEzXHg5MVx4OTYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDEwMDAyJy5lbmNvZGUoJ3V0Zi04JyksIGInXHhmMFx4OTBceDgwXHg4MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwMjM0NTYnLmVuY29kZSgndXRmLTgnKSwgYidceGYwXHhhM1x4OTFceDk2JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHVkODAwJy5lbmNvZGUoJ3V0Zi04JywgJ3N1cnJvZ2F0ZXBhc3MnKSwgYidceGVkXHhhMFx4ODAnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdWRjMDAnLmVuY29kZSgndXRmLTgnLCAnc3Vycm9nYXRlcGFzcycpLCBiJ1x4ZWRceGIwXHg4MCcpCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID09IDY1NTM1OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICAoJ1x1ZDgwMFx1ZGMwMicqMTAwMCkuZW5jb2RlKCd1dGYtOCcpLAotICAgICAgICAgICAgICAgIGInXHhmMFx4OTBceDgwXHg4MicqMTAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoJ1xVMDAwMTAwMDInKjEwKS5lbmNvZGUoJ3V0Zi04JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidceGYwXHg5MFx4ODBceDgyJyoxMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgICdcdTZiNjNcdTc4YmFcdTMwNmJcdThhMDBcdTMwNDZcdTMwNjhcdTdmZmJcdThhMzNcdTMwNmYnCiAgICAgICAgICAgICAnXHUzMDU1XHUzMDhjXHUzMDY2XHUzMDQ0XHUzMDdlXHUzMDViXHUzMDkzXHUzMDAyXHU0ZTAwJwpAQCAtMTI5MCw3ICsxMzcwLDcgQEAKICAgICAgICAgICAgICMgd2l0aCBzdGFydCBieXRlIG9mIGEgMi1ieXRlIHNlcXVlbmNlCiAgICAgICAgICAgICAoYidceGMyJywgRkZGRCksICMgb25seSB0aGUgc3RhcnQgYnl0ZQogICAgICAgICAgICAgKGInXHhjMlx4YzInLCBGRkZEKjIpLCAjIDIgc3RhcnQgYnl0ZXMKLSAgICAgICAgICAgIChiJ1x4YzJceGMyXHhjMicsIEZGRkQqMyksICMgMiBzdGFydCBieXRlcworICAgICAgICAgICAgKGInXHhjMlx4YzJceGMyJywgRkZGRCozKSwgIyAzIHN0YXJ0IGJ5dGVzCiAgICAgICAgICAgICAoYidceGMyXHg0MScsIEZGRkQrJ0EnKSwgIyBpbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlCiAgICAgICAgICAgICAjIHdpdGggc3RhcnQgYnl0ZSBvZiBhIDMtYnl0ZSBzZXF1ZW5jZQogICAgICAgICAgICAgKGInXHhlMScsIEZGRkQpLCAjIG9ubHkgdGhlIHN0YXJ0IGJ5dGUKQEAgLTEzNjAsNiArMTQ0MCwyMjYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VxLmRlY29kZSgndXRmLTgnLCAnaWdub3JlJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5yZXBsYWNlKCdcdUZGRkQnLCAnJykpCiAKKyAgICBkZWYgdG9fYnl0ZXN0cmluZyhzZWxmLCBzZXEpOgorICAgICAgICByZXR1cm4gYnl0ZXMoaW50KGMsIDE2KSBmb3IgYyBpbiBzZXEuc3BsaXQoKSkKKworICAgIGRlZiBhc3NlcnRDb3JyZWN0VVRGOERlY29kaW5nKHNlbGYsIHNlcSwgcmVzLCBlcnIpOgorICAgICAgICAiIiIKKyAgICAgICAgQ2hlY2sgdGhhdCBhbiBpbnZhbGlkIFVURi04IHNlcXVlbmNlIHJhaXNlcyBhbiBVbmljb2RlRGVjb2RlRXJyb3Igd2hlbgorICAgICAgICAnc3RyaWN0JyBpcyB1c2VkLCByZXR1cm5zIHJlcyB3aGVuICdyZXBsYWNlJyBpcyB1c2VkLCBhbmQgdGhhdCBkb2Vzbid0CisgICAgICAgIHJldHVybiBhbnl0aGluZyB3aGVuICdpZ25vcmUnIGlzIHVzZWQuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvcikgYXMgY206CisgICAgICAgICAgICBzZXEuZGVjb2RlKCd1dGYtOCcpCisgICAgICAgIGV4YyA9IGNtLmV4Y2VwdGlvbgorCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXJyLCBzdHIoZXhjKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXEuZGVjb2RlKCd1dGYtOCcsICdyZXBsYWNlJyksIHJlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYidhYWFhJyArIHNlcSArIGInYmJiYicpLmRlY29kZSgndXRmLTgnLCAncmVwbGFjZScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdhYWFhJyArIHJlcyArICdiYmJiJykKKyAgICAgICAgcmVzID0gcmVzLnJlcGxhY2UoJ1x1ZmZmZCcsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcS5kZWNvZGUoJ3V0Zi04JywgJ2lnbm9yZScpLCByZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGInYWFhYScgKyBzZXEgKyBiJ2JiYmInKS5kZWNvZGUoJ3V0Zi04JywgJ2lnbm9yZScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnYWFhYScgKyByZXMgKyAnYmJiYicpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3N0YXJ0X2J5dGUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgYW4gJ2ludmFsaWQgc3RhcnQgYnl0ZScgZXJyb3IgaXMgcmFpc2VkIHdoZW4gdGhlIGZpcnN0IGJ5dGUKKyAgICAgICAgaXMgbm90IGluIHRoZSBBU0NJSSByYW5nZSBvciBpcyBub3QgYSB2YWxpZCBzdGFydCBieXRlIG9mIGEgMi0sIDMtLCBvcgorICAgICAgICA0LWJ5dGVzIHNlcXVlbmNlLiBUaGUgaW52YWxpZCBzdGFydCBieXRlIGlzIHJlcGxhY2VkIHdpdGggYSBzaW5nbGUKKyAgICAgICAgVStGRkZEIHdoZW4gZXJyb3JzPSdyZXBsYWNlJy4KKyAgICAgICAgRS5nLiA8ODA+IGlzIGEgY29udGludWF0aW9uIGJ5dGUgYW5kIGNhbiBhcHBlYXIgb25seSBhZnRlciBhIHN0YXJ0IGJ5dGUuCisgICAgICAgICIiIgorICAgICAgICBGRkZEID0gJ1x1ZmZmZCcKKyAgICAgICAgZm9yIGJ5dGUgaW4gYidceDgwXHhBMFx4OUZceEJGXHhDMFx4QzFceEY1XHhGRic6CisgICAgICAgICAgICBzZWxmLmFzc2VydENvcnJlY3RVVEY4RGVjb2RpbmcoYnl0ZXMoW2J5dGVdKSwgJ1x1ZmZmZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgc3RhcnQgYnl0ZScpCisKKyAgICBkZWYgdGVzdF91bmV4cGVjdGVkX2VuZF9vZl9kYXRhKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IGFuICd1bmV4cGVjdGVkIGVuZCBvZiBkYXRhJyBlcnJvciBpcyByYWlzZWQgd2hlbiB0aGUgc3RyaW5nCisgICAgICAgIGVuZHMgYWZ0ZXIgYSBzdGFydCBieXRlIG9mIGEgMi0sIDMtLCBvciA0LWJ5dGVzIHNlcXVlbmNlIHdpdGhvdXQgaGF2aW5nCisgICAgICAgIGVub3VnaCBjb250aW51YXRpb24gYnl0ZXMuICBUaGUgaW5jb21wbGV0ZSBzZXF1ZW5jZSBpcyByZXBsYWNlZCB3aXRoIGEKKyAgICAgICAgc2luZ2xlIFUrRkZGRCB3aGVuIGVycm9ycz0ncmVwbGFjZScuCisgICAgICAgIEUuZy4gaW4gdGhlIHNlcXVlbmNlIDxGMyA4MCA4MD4sIEYzIGlzIHRoZSBzdGFydCBieXRlIG9mIGEgNC1ieXRlcworICAgICAgICBzZXF1ZW5jZSwgYnV0IGl0J3MgZm9sbG93ZWQgYnkgb25seSAyIHZhbGlkIGNvbnRpbnVhdGlvbiBieXRlcyBhbmQgdGhlCisgICAgICAgIGxhc3QgY29udGludWF0aW9uIGJ5dGVzIGlzIG1pc3NpbmcuCisgICAgICAgIE5vdGU6IHRoZSBjb250aW51YXRpb24gYnl0ZXMgbXVzdCBiZSBhbGwgdmFsaWQsIGlmIG9uZSBvZiB0aGVtIGlzCisgICAgICAgIGludmFsaWQgYW5vdGhlciBlcnJvciB3aWxsIGJlIHJhaXNlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlcXVlbmNlcyA9IFsKKyAgICAgICAgICAgICdDMicsICdERicsCisgICAgICAgICAgICAnRTAgQTAnLCAnRTAgQkYnLCAnRTEgODAnLCAnRTEgQkYnLCAnRUMgODAnLCAnRUMgQkYnLAorICAgICAgICAgICAgJ0VEIDgwJywgJ0VEIDlGJywgJ0VFIDgwJywgJ0VFIEJGJywgJ0VGIDgwJywgJ0VGIEJGJywKKyAgICAgICAgICAgICdGMCA5MCcsICdGMCBCRicsICdGMCA5MCA4MCcsICdGMCA5MCBCRicsICdGMCBCRiA4MCcsICdGMCBCRiBCRicsCisgICAgICAgICAgICAnRjEgODAnLCAnRjEgQkYnLCAnRjEgODAgODAnLCAnRjEgODAgQkYnLCAnRjEgQkYgODAnLCAnRjEgQkYgQkYnLAorICAgICAgICAgICAgJ0YzIDgwJywgJ0YzIEJGJywgJ0YzIDgwIDgwJywgJ0YzIDgwIEJGJywgJ0YzIEJGIDgwJywgJ0YzIEJGIEJGJywKKyAgICAgICAgICAgICdGNCA4MCcsICdGNCA4RicsICdGNCA4MCA4MCcsICdGNCA4MCBCRicsICdGNCA4RiA4MCcsICdGNCA4RiBCRicKKyAgICAgICAgXQorICAgICAgICBGRkZEID0gJ1x1ZmZmZCcKKyAgICAgICAgZm9yIHNlcSBpbiBzZXF1ZW5jZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydENvcnJlY3RVVEY4RGVjb2Rpbmcoc2VsZi50b19ieXRlc3RyaW5nKHNlcSksICdcdWZmZmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmV4cGVjdGVkIGVuZCBvZiBkYXRhJykKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfY2JfZm9yXzJieXRlc19zZXEoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgYW4gJ2ludmFsaWQgY29udGludWF0aW9uIGJ5dGUnIGVycm9yIGlzIHJhaXNlZCB3aGVuIHRoZQorICAgICAgICBjb250aW51YXRpb24gYnl0ZSBvZiBhIDItYnl0ZXMgc2VxdWVuY2UgaXMgaW52YWxpZC4gIFRoZSBzdGFydCBieXRlCisgICAgICAgIGlzIHJlcGxhY2VkIGJ5IGEgc2luZ2xlIFUrRkZGRCBhbmQgdGhlIHNlY29uZCBieXRlIGlzIGhhbmRsZWQKKyAgICAgICAgc2VwYXJhdGVseSB3aGVuIGVycm9ycz0ncmVwbGFjZScuCisgICAgICAgIEUuZy4gaW4gdGhlIHNlcXVlbmNlIDxDMiA0MT4sIEMyIGlzIHRoZSBzdGFydCBieXRlIG9mIGEgMi1ieXRlcworICAgICAgICBzZXF1ZW5jZSwgYnV0IDQxIGlzIG5vdCBhIHZhbGlkIGNvbnRpbnVhdGlvbiBieXRlIGJlY2F1c2UgaXQncyB0aGUKKyAgICAgICAgQVNDSUkgbGV0dGVyICdBJy4KKyAgICAgICAgIiIiCisgICAgICAgIEZGRkQgPSAnXHVmZmZkJworICAgICAgICBGRkZEeDIgPSBGRkZEICogMgorICAgICAgICBzZXF1ZW5jZXMgPSBbCisgICAgICAgICAgICAoJ0MyIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0MyIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdDMiBDMCcsIEZGRkR4MiksICgnQzIgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdERiAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdERiA3RicsIEZGRkQrJ1x4N2YnKSwKKyAgICAgICAgICAgICgnREYgQzAnLCBGRkZEeDIpLCAoJ0RGIEZGJywgRkZGRHgyKSwKKyAgICAgICAgXQorICAgICAgICBmb3Igc2VxLCByZXMgaW4gc2VxdWVuY2VzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRDb3JyZWN0VVRGOERlY29kaW5nKHNlbGYudG9fYnl0ZXN0cmluZyhzZXEpLCByZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgY29udGludWF0aW9uIGJ5dGUnKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jYl9mb3JfM2J5dGVzX3NlcShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBhbiAnaW52YWxpZCBjb250aW51YXRpb24gYnl0ZScgZXJyb3IgaXMgcmFpc2VkIHdoZW4gdGhlCisgICAgICAgIGNvbnRpbnVhdGlvbiBieXRlKHMpIG9mIGEgMy1ieXRlcyBzZXF1ZW5jZSBhcmUgaW52YWxpZC4gIFdoZW4KKyAgICAgICAgZXJyb3JzPSdyZXBsYWNlJywgaWYgdGhlIGZpcnN0IGNvbnRpbnVhdGlvbiBieXRlIGlzIHZhbGlkLCB0aGUgZmlyc3QKKyAgICAgICAgdHdvIGJ5dGVzIChzdGFydCBieXRlICsgMXN0IGNiKSBhcmUgcmVwbGFjZWQgYnkgYSBzaW5nbGUgVStGRkZEIGFuZCB0aGUKKyAgICAgICAgdGhpcmQgYnl0ZSBpcyBoYW5kbGVkIHNlcGFyYXRlbHksIG90aGVyd2lzZSBvbmx5IHRoZSBzdGFydCBieXRlIGlzCisgICAgICAgIHJlcGxhY2VkIHdpdGggYSBVK0ZGRkQgYW5kIHRoZSBvdGhlciBjb250aW51YXRpb24gYnl0ZXMgYXJlIGhhbmRsZWQKKyAgICAgICAgc2VwYXJhdGVseS4KKyAgICAgICAgRS5nLiBpbiB0aGUgc2VxdWVuY2UgPEUxIDgwIDQxPiwgRTEgaXMgdGhlIHN0YXJ0IGJ5dGUgb2YgYSAzLWJ5dGVzCisgICAgICAgIHNlcXVlbmNlLCA4MCBpcyBhIHZhbGlkIGNvbnRpbnVhdGlvbiBieXRlLCBidXQgNDEgaXMgbm90IGEgdmFsaWQgY2IKKyAgICAgICAgYmVjYXVzZSBpdCdzIHRoZSBBU0NJSSBsZXR0ZXIgJ0EnLgorICAgICAgICBOb3RlOiB3aGVuIHRoZSBzdGFydCBieXRlIGlzIEUwIG9yIEVELCB0aGUgdmFsaWQgcmFuZ2VzIGZvciB0aGUgZmlyc3QKKyAgICAgICAgY29udGludWF0aW9uIGJ5dGUgYXJlIGxpbWl0ZWQgdG8gQTAuLkJGIGFuZCA4MC4uOUYgcmVzcGVjdGl2ZWx5LgorICAgICAgICBQeXRob24gMiB1c2VkIHRvIGNvbnNpZGVyIGFsbCB0aGUgYnl0ZXMgaW4gcmFuZ2UgODAuLkJGIHZhbGlkIHdoZW4gdGhlCisgICAgICAgIHN0YXJ0IGJ5dGUgd2FzIEVELiAgVGhpcyBpcyBmaXhlZCBpbiBQeXRob24gMy4KKyAgICAgICAgIiIiCisgICAgICAgIEZGRkQgPSAnXHVmZmZkJworICAgICAgICBGRkZEeDIgPSBGRkZEICogMgorICAgICAgICBzZXF1ZW5jZXMgPSBbCisgICAgICAgICAgICAoJ0UwIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0UwIDdGJywgRkZGRCsnXHg3ZicpLCAoJ0UwIDgwJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRTAgOUYnLCBGRkZEeDIpLCAoJ0UwIEMwJywgRkZGRHgyKSwgKCdFMCBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0UwIEEwIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0UwIEEwIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdFMCBBMCBDMCcsIEZGRkR4MiksICgnRTAgQTAgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdFMCBCRiAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdFMCBCRiA3RicsIEZGRkQrJ1x4N2YnKSwKKyAgICAgICAgICAgICgnRTAgQkYgQzAnLCBGRkZEeDIpLCAoJ0UwIEJGIEZGJywgRkZGRHgyKSwgKCdFMSAwMCcsIEZGRkQrJ1x4MDAnKSwKKyAgICAgICAgICAgICgnRTEgN0YnLCBGRkZEKydceDdmJyksICgnRTEgQzAnLCBGRkZEeDIpLCAoJ0UxIEZGJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRTEgODAgMDAnLCBGRkZEKydceDAwJyksICgnRTEgODAgN0YnLCBGRkZEKydceDdmJyksCisgICAgICAgICAgICAoJ0UxIDgwIEMwJywgRkZGRHgyKSwgKCdFMSA4MCBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0UxIEJGIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0UxIEJGIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdFMSBCRiBDMCcsIEZGRkR4MiksICgnRTEgQkYgRkYnLCBGRkZEeDIpLCAoJ0VDIDAwJywgRkZGRCsnXHgwMCcpLAorICAgICAgICAgICAgKCdFQyA3RicsIEZGRkQrJ1x4N2YnKSwgKCdFQyBDMCcsIEZGRkR4MiksICgnRUMgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdFQyA4MCAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdFQyA4MCA3RicsIEZGRkQrJ1x4N2YnKSwKKyAgICAgICAgICAgICgnRUMgODAgQzAnLCBGRkZEeDIpLCAoJ0VDIDgwIEZGJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRUMgQkYgMDAnLCBGRkZEKydceDAwJyksICgnRUMgQkYgN0YnLCBGRkZEKydceDdmJyksCisgICAgICAgICAgICAoJ0VDIEJGIEMwJywgRkZGRHgyKSwgKCdFQyBCRiBGRicsIEZGRkR4MiksICgnRUQgMDAnLCBGRkZEKydceDAwJyksCisgICAgICAgICAgICAoJ0VEIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdFRCBBMCcsIEZGRkR4MiksICgnRUQgQkYnLCBGRkZEeDIpLCAjIHNlZSBub3RlIF4KKyAgICAgICAgICAgICgnRUQgQzAnLCBGRkZEeDIpLCAoJ0VEIEZGJywgRkZGRHgyKSwgKCdFRCA4MCAwMCcsIEZGRkQrJ1x4MDAnKSwKKyAgICAgICAgICAgICgnRUQgODAgN0YnLCBGRkZEKydceDdmJyksICgnRUQgODAgQzAnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdFRCA4MCBGRicsIEZGRkR4MiksICgnRUQgOUYgMDAnLCBGRkZEKydceDAwJyksCisgICAgICAgICAgICAoJ0VEIDlGIDdGJywgRkZGRCsnXHg3ZicpLCAoJ0VEIDlGIEMwJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRUQgOUYgRkYnLCBGRkZEeDIpLCAoJ0VFIDAwJywgRkZGRCsnXHgwMCcpLAorICAgICAgICAgICAgKCdFRSA3RicsIEZGRkQrJ1x4N2YnKSwgKCdFRSBDMCcsIEZGRkR4MiksICgnRUUgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdFRSA4MCAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdFRSA4MCA3RicsIEZGRkQrJ1x4N2YnKSwKKyAgICAgICAgICAgICgnRUUgODAgQzAnLCBGRkZEeDIpLCAoJ0VFIDgwIEZGJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRUUgQkYgMDAnLCBGRkZEKydceDAwJyksICgnRUUgQkYgN0YnLCBGRkZEKydceDdmJyksCisgICAgICAgICAgICAoJ0VFIEJGIEMwJywgRkZGRHgyKSwgKCdFRSBCRiBGRicsIEZGRkR4MiksICgnRUYgMDAnLCBGRkZEKydceDAwJyksCisgICAgICAgICAgICAoJ0VGIDdGJywgRkZGRCsnXHg3ZicpLCAoJ0VGIEMwJywgRkZGRHgyKSwgKCdFRiBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0VGIDgwIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0VGIDgwIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdFRiA4MCBDMCcsIEZGRkR4MiksICgnRUYgODAgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdFRiBCRiAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdFRiBCRiA3RicsIEZGRkQrJ1x4N2YnKSwKKyAgICAgICAgICAgICgnRUYgQkYgQzAnLCBGRkZEeDIpLCAoJ0VGIEJGIEZGJywgRkZGRHgyKSwKKyAgICAgICAgXQorICAgICAgICBmb3Igc2VxLCByZXMgaW4gc2VxdWVuY2VzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRDb3JyZWN0VVRGOERlY29kaW5nKHNlbGYudG9fYnl0ZXN0cmluZyhzZXEpLCByZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgY29udGludWF0aW9uIGJ5dGUnKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jYl9mb3JfNGJ5dGVzX3NlcShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBhbiAnaW52YWxpZCBjb250aW51YXRpb24gYnl0ZScgZXJyb3IgaXMgcmFpc2VkIHdoZW4gdGhlCisgICAgICAgIGNvbnRpbnVhdGlvbiBieXRlKHMpIG9mIGEgNC1ieXRlcyBzZXF1ZW5jZSBhcmUgaW52YWxpZC4gIFdoZW4KKyAgICAgICAgZXJyb3JzPSdyZXBsYWNlJyx0aGUgc3RhcnQgYnl0ZSBhbmQgYWxsIHRoZSBmb2xsb3dpbmcgdmFsaWQKKyAgICAgICAgY29udGludWF0aW9uIGJ5dGVzIGFyZSByZXBsYWNlZCB3aXRoIGEgc2luZ2xlIFUrRkZGRCwgYW5kIGFsbCB0aGUgYnl0ZXMKKyAgICAgICAgc3RhcnRpbmcgZnJvbSB0aGUgZmlyc3QgaW52YWxpZCBjb250aW51YXRpb24gYnl0ZXMgKGluY2x1ZGVkKSBhcmUKKyAgICAgICAgaGFuZGxlZCBzZXBhcmF0ZWx5LgorICAgICAgICBFLmcuIGluIHRoZSBzZXF1ZW5jZSA8RTEgODAgNDE+LCBFMSBpcyB0aGUgc3RhcnQgYnl0ZSBvZiBhIDMtYnl0ZXMKKyAgICAgICAgc2VxdWVuY2UsIDgwIGlzIGEgdmFsaWQgY29udGludWF0aW9uIGJ5dGUsIGJ1dCA0MSBpcyBub3QgYSB2YWxpZCBjYgorICAgICAgICBiZWNhdXNlIGl0J3MgdGhlIEFTQ0lJIGxldHRlciAnQScuCisgICAgICAgIE5vdGU6IHdoZW4gdGhlIHN0YXJ0IGJ5dGUgaXMgRTAgb3IgRUQsIHRoZSB2YWxpZCByYW5nZXMgZm9yIHRoZSBmaXJzdAorICAgICAgICBjb250aW51YXRpb24gYnl0ZSBhcmUgbGltaXRlZCB0byBBMC4uQkYgYW5kIDgwLi45RiByZXNwZWN0aXZlbHkuCisgICAgICAgIEhvd2V2ZXIsIHdoZW4gdGhlIHN0YXJ0IGJ5dGUgaXMgRUQsIFB5dGhvbiAyIGNvbnNpZGVycyBhbGwgdGhlIGJ5dGVzCisgICAgICAgIGluIHJhbmdlIDgwLi5CRiB2YWxpZC4gIFRoaXMgaXMgZml4ZWQgaW4gUHl0aG9uIDMuCisgICAgICAgICIiIgorICAgICAgICBGRkZEID0gJ1x1ZmZmZCcKKyAgICAgICAgRkZGRHgyID0gRkZGRCAqIDIKKyAgICAgICAgc2VxdWVuY2VzID0gWworICAgICAgICAgICAgKCdGMCAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdGMCA3RicsIEZGRkQrJ1x4N2YnKSwgKCdGMCA4MCcsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0YwIDhGJywgRkZGRHgyKSwgKCdGMCBDMCcsIEZGRkR4MiksICgnRjAgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdGMCA5MCAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdGMCA5MCA3RicsIEZGRkQrJ1x4N2YnKSwKKyAgICAgICAgICAgICgnRjAgOTAgQzAnLCBGRkZEeDIpLCAoJ0YwIDkwIEZGJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRjAgQkYgMDAnLCBGRkZEKydceDAwJyksICgnRjAgQkYgN0YnLCBGRkZEKydceDdmJyksCisgICAgICAgICAgICAoJ0YwIEJGIEMwJywgRkZGRHgyKSwgKCdGMCBCRiBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0YwIDkwIDgwIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0YwIDkwIDgwIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdGMCA5MCA4MCBDMCcsIEZGRkR4MiksICgnRjAgOTAgODAgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdGMCA5MCBCRiAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdGMCA5MCBCRiA3RicsIEZGRkQrJ1x4N2YnKSwKKyAgICAgICAgICAgICgnRjAgOTAgQkYgQzAnLCBGRkZEeDIpLCAoJ0YwIDkwIEJGIEZGJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRjAgQkYgODAgMDAnLCBGRkZEKydceDAwJyksICgnRjAgQkYgODAgN0YnLCBGRkZEKydceDdmJyksCisgICAgICAgICAgICAoJ0YwIEJGIDgwIEMwJywgRkZGRHgyKSwgKCdGMCBCRiA4MCBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0YwIEJGIEJGIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0YwIEJGIEJGIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdGMCBCRiBCRiBDMCcsIEZGRkR4MiksICgnRjAgQkYgQkYgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdGMSAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdGMSA3RicsIEZGRkQrJ1x4N2YnKSwgKCdGMSBDMCcsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0YxIEZGJywgRkZGRHgyKSwgKCdGMSA4MCAwMCcsIEZGRkQrJ1x4MDAnKSwKKyAgICAgICAgICAgICgnRjEgODAgN0YnLCBGRkZEKydceDdmJyksICgnRjEgODAgQzAnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdGMSA4MCBGRicsIEZGRkR4MiksICgnRjEgQkYgMDAnLCBGRkZEKydceDAwJyksCisgICAgICAgICAgICAoJ0YxIEJGIDdGJywgRkZGRCsnXHg3ZicpLCAoJ0YxIEJGIEMwJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRjEgQkYgRkYnLCBGRkZEeDIpLCAoJ0YxIDgwIDgwIDAwJywgRkZGRCsnXHgwMCcpLAorICAgICAgICAgICAgKCdGMSA4MCA4MCA3RicsIEZGRkQrJ1x4N2YnKSwgKCdGMSA4MCA4MCBDMCcsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0YxIDgwIDgwIEZGJywgRkZGRHgyKSwgKCdGMSA4MCBCRiAwMCcsIEZGRkQrJ1x4MDAnKSwKKyAgICAgICAgICAgICgnRjEgODAgQkYgN0YnLCBGRkZEKydceDdmJyksICgnRjEgODAgQkYgQzAnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdGMSA4MCBCRiBGRicsIEZGRkR4MiksICgnRjEgQkYgODAgMDAnLCBGRkZEKydceDAwJyksCisgICAgICAgICAgICAoJ0YxIEJGIDgwIDdGJywgRkZGRCsnXHg3ZicpLCAoJ0YxIEJGIDgwIEMwJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRjEgQkYgODAgRkYnLCBGRkZEeDIpLCAoJ0YxIEJGIEJGIDAwJywgRkZGRCsnXHgwMCcpLAorICAgICAgICAgICAgKCdGMSBCRiBCRiA3RicsIEZGRkQrJ1x4N2YnKSwgKCdGMSBCRiBCRiBDMCcsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0YxIEJGIEJGIEZGJywgRkZGRHgyKSwgKCdGMyAwMCcsIEZGRkQrJ1x4MDAnKSwKKyAgICAgICAgICAgICgnRjMgN0YnLCBGRkZEKydceDdmJyksICgnRjMgQzAnLCBGRkZEeDIpLCAoJ0YzIEZGJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRjMgODAgMDAnLCBGRkZEKydceDAwJyksICgnRjMgODAgN0YnLCBGRkZEKydceDdmJyksCisgICAgICAgICAgICAoJ0YzIDgwIEMwJywgRkZGRHgyKSwgKCdGMyA4MCBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0YzIEJGIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0YzIEJGIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdGMyBCRiBDMCcsIEZGRkR4MiksICgnRjMgQkYgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdGMyA4MCA4MCAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdGMyA4MCA4MCA3RicsIEZGRkQrJ1x4N2YnKSwKKyAgICAgICAgICAgICgnRjMgODAgODAgQzAnLCBGRkZEeDIpLCAoJ0YzIDgwIDgwIEZGJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRjMgODAgQkYgMDAnLCBGRkZEKydceDAwJyksICgnRjMgODAgQkYgN0YnLCBGRkZEKydceDdmJyksCisgICAgICAgICAgICAoJ0YzIDgwIEJGIEMwJywgRkZGRHgyKSwgKCdGMyA4MCBCRiBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0YzIEJGIDgwIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0YzIEJGIDgwIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdGMyBCRiA4MCBDMCcsIEZGRkR4MiksICgnRjMgQkYgODAgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdGMyBCRiBCRiAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdGMyBCRiBCRiA3RicsIEZGRkQrJ1x4N2YnKSwKKyAgICAgICAgICAgICgnRjMgQkYgQkYgQzAnLCBGRkZEeDIpLCAoJ0YzIEJGIEJGIEZGJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRjQgMDAnLCBGRkZEKydceDAwJyksICgnRjQgN0YnLCBGRkZEKydceDdmJyksICgnRjQgOTAnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdGNCBCRicsIEZGRkR4MiksICgnRjQgQzAnLCBGRkZEeDIpLCAoJ0Y0IEZGJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRjQgODAgMDAnLCBGRkZEKydceDAwJyksICgnRjQgODAgN0YnLCBGRkZEKydceDdmJyksCisgICAgICAgICAgICAoJ0Y0IDgwIEMwJywgRkZGRHgyKSwgKCdGNCA4MCBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0Y0IDhGIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0Y0IDhGIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdGNCA4RiBDMCcsIEZGRkR4MiksICgnRjQgOEYgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdGNCA4MCA4MCAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdGNCA4MCA4MCA3RicsIEZGRkQrJ1x4N2YnKSwKKyAgICAgICAgICAgICgnRjQgODAgODAgQzAnLCBGRkZEeDIpLCAoJ0Y0IDgwIDgwIEZGJywgRkZGRHgyKSwKKyAgICAgICAgICAgICgnRjQgODAgQkYgMDAnLCBGRkZEKydceDAwJyksICgnRjQgODAgQkYgN0YnLCBGRkZEKydceDdmJyksCisgICAgICAgICAgICAoJ0Y0IDgwIEJGIEMwJywgRkZGRHgyKSwgKCdGNCA4MCBCRiBGRicsIEZGRkR4MiksCisgICAgICAgICAgICAoJ0Y0IDhGIDgwIDAwJywgRkZGRCsnXHgwMCcpLCAoJ0Y0IDhGIDgwIDdGJywgRkZGRCsnXHg3ZicpLAorICAgICAgICAgICAgKCdGNCA4RiA4MCBDMCcsIEZGRkR4MiksICgnRjQgOEYgODAgRkYnLCBGRkZEeDIpLAorICAgICAgICAgICAgKCdGNCA4RiBCRiAwMCcsIEZGRkQrJ1x4MDAnKSwgKCdGNCA4RiBCRiA3RicsIEZGRkQrJ1x4N2YnKSwKKyAgICAgICAgICAgICgnRjQgOEYgQkYgQzAnLCBGRkZEeDIpLCAoJ0Y0IDhGIEJGIEZGJywgRkZGRHgyKQorICAgICAgICBdCisgICAgICAgIGZvciBzZXEsIHJlcyBpbiBzZXF1ZW5jZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydENvcnJlY3RVVEY4RGVjb2Rpbmcoc2VsZi50b19ieXRlc3RyaW5nKHNlcSksIHJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBjb250aW51YXRpb24gYnl0ZScpCisKICAgICBkZWYgdGVzdF9jb2RlY3NfaWRuYShzZWxmKToKICAgICAgICAgIyBUZXN0IHdoZXRoZXIgdHJhaWxpbmcgZG90IGlzIHByZXNlcnZlZAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucHl0aG9uLm9yZy4iLmVuY29kZSgiaWRuYSIpLCBiInd3dy5weXRob24ub3JnLiIpCkBAIC0xMzkxLDE0ICsxNjkxLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdHIsIGIiaGVsbG8iLCAidGVzdC51bmljb2RlMiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgImhlbGxvIi5lbmNvZGUsICJ0ZXN0LnVuaWNvZGUxIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAiaGVsbG8iLmVuY29kZSwgInRlc3QudW5pY29kZTIiKQotICAgICAgICAjIGV4ZWN1dGVzIFB5VW5pY29kZV9FbmNvZGUoKQotICAgICAgICBpbXBvcnQgaW1wCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICBpbXAuZmluZF9tb2R1bGUsCi0gICAgICAgICAgICAibm9uLWV4aXN0aW5nIG1vZHVsZSIsCi0gICAgICAgICAgICBbIm5vbi1leGlzdGluZyBkaXIiXQotICAgICAgICApCiAKICAgICAgICAgIyBFcnJvciBoYW5kbGluZyAod3JvbmcgYXJndW1lbnRzKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICJoZWxsbyIuZW5jb2RlLCA0MiwgNDIsIDQyKQpAQCAtMTQxNiwxOCArMTcwOCwyNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycuZW5jb2RlKCdhc2NpaScpLCBiJ2hlbGxvJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaGVsbG8nLmVuY29kZSgndXRmLTcnKSwgYidoZWxsbycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJy5lbmNvZGUoJ3V0Zi04JyksIGInaGVsbG8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycuZW5jb2RlKCd1dGY4JyksIGInaGVsbG8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycuZW5jb2RlKCd1dGYtOCcpLCBiJ2hlbGxvJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaGVsbG8nLmVuY29kZSgndXRmLTE2LWxlJyksIGInaFwwMDBlXDAwMGxcMDAwbFwwMDBvXDAwMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJy5lbmNvZGUoJ3V0Zi0xNi1iZScpLCBiJ1wwMDBoXDAwMGVcMDAwbFwwMDBsXDAwMG8nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycuZW5jb2RlKCdsYXRpbi0xJyksIGInaGVsbG8nKQogCisgICAgICAgICMgRGVmYXVsdCBlbmNvZGluZyBpcyB1dGYtOAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTI2MDMnLmVuY29kZSgpLCBiJ1x4ZTJceDk4XHg4MycpCisKICAgICAgICAgIyBSb3VuZHRyaXAgc2FmZXR5IGZvciBCTVAgKGp1c3QgdGhlIGZpcnN0IDEwMjQgY2hhcnMpCiAgICAgICAgIGZvciBjIGluIHJhbmdlKDEwMjQpOgogICAgICAgICAgICAgdSA9IGNocihjKQogICAgICAgICAgICAgZm9yIGVuY29kaW5nIGluICgndXRmLTcnLCAndXRmLTgnLCAndXRmLTE2JywgJ3V0Zi0xNi1sZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1dGYtMTYtYmUnLCAncmF3X3VuaWNvZGVfZXNjYXBlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuaWNvZGVfZXNjYXBlJywgJ3VuaWNvZGVfaW50ZXJuYWwnKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih1LmVuY29kZShlbmNvZGluZyksZW5jb2RpbmcpLCB1KQorICAgICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICAgICAgIyB1bmljb2RlLWludGVybmFsIGhhcyBiZWVuIGRlcHJlY2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodS5lbmNvZGUoZW5jb2RpbmcpLGVuY29kaW5nKSwgdSkKIAogICAgICAgICAjIFJvdW5kdHJpcCBzYWZldHkgZm9yIEJNUCAoanVzdCB0aGUgZmlyc3QgMjU2IGNoYXJzKQogICAgICAgICBmb3IgYyBpbiByYW5nZSgyNTYpOgpAQCAtMTQ0MiwxOCArMTc0MSwyMCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHUuZW5jb2RlKGVuY29kaW5nKSxlbmNvZGluZyksIHUpCiAKICAgICAgICAgIyBSb3VuZHRyaXAgc2FmZXR5IGZvciBub24tQk1QIChqdXN0IGEgZmV3IGNoYXJzKQotICAgICAgICB1ID0gJ1xVMDAwMTAwMDFcVTAwMDIwMDAyXFUwMDAzMDAwM1xVMDAwNDAwMDRcVTAwMDUwMDA1JwotICAgICAgICBmb3IgZW5jb2RpbmcgaW4gKCd1dGYtOCcsICd1dGYtMTYnLCAndXRmLTE2LWxlJywgJ3V0Zi0xNi1iZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIydyYXdfdW5pY29kZV9lc2NhcGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICd1bmljb2RlX2VzY2FwZScsICd1bmljb2RlX2ludGVybmFsJyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih1LmVuY29kZShlbmNvZGluZyksZW5jb2RpbmcpLCB1KQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAjIHVuaWNvZGUtaW50ZXJuYWwgaGFzIGJlZW4gZGVwcmVjYXRlZAorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCiAKLSAgICAgICAgIyBVVEYtOCBtdXN0IGJlIHJvdW5kdHJpcCBzYWZlIGZvciBhbGwgVUNTLTIgY29kZSBwb2ludHMKLSAgICAgICAgIyBUaGlzIGV4Y2x1ZGVzIHN1cnJvZ2F0ZXM6IGluIHRoZSBmdWxsIHJhbmdlLCB0aGVyZSB3b3VsZCBiZQotICAgICAgICAjIGEgc3Vycm9nYXRlIHBhaXIgKFx1ZGJmZlx1ZGMwMCksIHdoaWNoIGdldHMgY29udmVydGVkIGJhY2sKLSAgICAgICAgIyB0byBhIG5vbi1CTVAgY2hhcmFjdGVyIChcVTAwMTBmYzAwKQotICAgICAgICB1ID0gJycuam9pbihtYXAoY2hyLCBsaXN0KHJhbmdlKDAsMHhkODAwKSkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHJhbmdlKDB4ZTAwMCwweDEwMDAwKSkpKQorICAgICAgICAgICAgdSA9ICdcVTAwMDEwMDAxXFUwMDAyMDAwMlxVMDAwMzAwMDNcVTAwMDQwMDA0XFUwMDA1MDAwNScKKyAgICAgICAgICAgIGZvciBlbmNvZGluZyBpbiAoJ3V0Zi04JywgJ3V0Zi0xNicsICd1dGYtMTYtbGUnLCAndXRmLTE2LWJlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jhd191bmljb2RlX2VzY2FwZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmljb2RlX2VzY2FwZScsICd1bmljb2RlX2ludGVybmFsJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodS5lbmNvZGUoZW5jb2RpbmcpLGVuY29kaW5nKSwgdSkKKworICAgICAgICAjIFVURi04IG11c3QgYmUgcm91bmR0cmlwIHNhZmUgZm9yIGFsbCBjb2RlIHBvaW50cworICAgICAgICAjIChleGNlcHQgc3Vycm9nYXRlcywgd2hpY2ggYXJlIGZvcmJpZGRlbikuCisgICAgICAgIHUgPSAnJy5qb2luKG1hcChjaHIsIGxpc3QocmFuZ2UoMCwgMHhkODAwKSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHJhbmdlKDB4ZTAwMCwgMHgxMTAwMDApKSkpCiAgICAgICAgIGZvciBlbmNvZGluZyBpbiAoJ3V0Zi04JywpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodS5lbmNvZGUoZW5jb2RpbmcpLGVuY29kaW5nKSwgdSkKIApAQCAtMTYzOCwxNyArMTkzOSwzOSBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsICd0XHR0XHQnLmV4cGFuZHRhYnMsIHN5cy5tYXhzaXplKQogCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfZXhwYW5kdGFic19vcHRpbWl6YXRpb24oc2VsZik6CisgICAgICAgIHMgPSAnYWJjJworICAgICAgICBzZWxmLmFzc2VydElzKHMuZXhwYW5kdGFicygpLCBzKQorCiAgICAgZGVmIHRlc3RfcmFpc2VNZW1FcnJvcihzZWxmKToKLSAgICAgICAgIyBFbnN1cmUgdGhhdCB0aGUgZnJlZWxpc3QgY29udGFpbnMgYSBjb25zaXN0ZW50IG9iamVjdCwgZXZlbgotICAgICAgICAjIHdoZW4gYSBzdHJpbmcgYWxsb2NhdGlvbiBmYWlscyB3aXRoIGEgTWVtb3J5RXJyb3IuCi0gICAgICAgICMgVGhpcyB1c2VkIHRvIGNyYXNoIHRoZSBpbnRlcnByZXRlciwKLSAgICAgICAgIyBvciBsZWFrIHJlZmVyZW5jZXMgd2hlbiB0aGUgbnVtYmVyIHdhcyBzbWFsbGVyLgotICAgICAgICBjaGFyd2lkdGggPSA0IGlmIHN5cy5tYXh1bmljb2RlID49IDB4MTAwMDAgZWxzZSAyCi0gICAgICAgICMgTm90ZTogc3lzLm1heHNpemUgaXMgaGFsZiBvZiB0aGUgYWN0dWFsIG1heCBhbGxvY2F0aW9uIGJlY2F1c2Ugb2YKLSAgICAgICAgIyB0aGUgc2lnbmVkbmVzcyBvZiBQeV9zc2l6ZV90LgotICAgICAgICBhbGxvYyA9IGxhbWJkYTogImEiICogKHN5cy5tYXhzaXplIC8vIGNoYXJ3aWR0aCAqIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE1lbW9yeUVycm9yLCBhbGxvYykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTWVtb3J5RXJyb3IsIGFsbG9jKQorICAgICAgICBpZiBzdHJ1Y3QuY2FsY3NpemUoJ1AnKSA9PSA4OgorICAgICAgICAgICAgIyA2NCBiaXRzIHBvaW50ZXJzCisgICAgICAgICAgICBhc2NpaV9zdHJ1Y3Rfc2l6ZSA9IDQ4CisgICAgICAgICAgICBjb21wYWN0X3N0cnVjdF9zaXplID0gNzIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgMzIgYml0cyBwb2ludGVycworICAgICAgICAgICAgYXNjaWlfc3RydWN0X3NpemUgPSAyNAorICAgICAgICAgICAgY29tcGFjdF9zdHJ1Y3Rfc2l6ZSA9IDM2CisKKyAgICAgICAgZm9yIGNoYXIgaW4gKCdhJywgJ1x4ZTknLCAnXHUyMGFjJywgJ1xVMDAxMGZmZmYnKToKKyAgICAgICAgICAgIGNvZGUgPSBvcmQoY2hhcikKKyAgICAgICAgICAgIGlmIGNvZGUgPCAweDEwMDoKKyAgICAgICAgICAgICAgICBjaGFyX3NpemUgPSAxICAjIHNpemVvZihQeV9VQ1MxKQorICAgICAgICAgICAgICAgIHN0cnVjdF9zaXplID0gYXNjaWlfc3RydWN0X3NpemUKKyAgICAgICAgICAgIGVsaWYgY29kZSA8IDB4MTAwMDA6CisgICAgICAgICAgICAgICAgY2hhcl9zaXplID0gMiAgIyBzaXplb2YoUHlfVUNTMikKKyAgICAgICAgICAgICAgICBzdHJ1Y3Rfc2l6ZSA9IGNvbXBhY3Rfc3RydWN0X3NpemUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY2hhcl9zaXplID0gNCAgIyBzaXplb2YoUHlfVUNTNCkKKyAgICAgICAgICAgICAgICBzdHJ1Y3Rfc2l6ZSA9IGNvbXBhY3Rfc3RydWN0X3NpemUKKyAgICAgICAgICAgICMgTm90ZTogc3lzLm1heHNpemUgaXMgaGFsZiBvZiB0aGUgYWN0dWFsIG1heCBhbGxvY2F0aW9uIGJlY2F1c2Ugb2YKKyAgICAgICAgICAgICMgdGhlIHNpZ25lZG5lc3Mgb2YgUHlfc3NpemVfdC4gU3RyaW5ncyBvZiBtYXhsZW4tMSBzaG91bGQgaW4gcHJpbmNpcGxlCisgICAgICAgICAgICAjIGJlIGFsbG9jYXRhYmxlLCBnaXZlbiBlbm91Z2ggbWVtb3J5LgorICAgICAgICAgICAgbWF4bGVuID0gKChzeXMubWF4c2l6ZSAtIHN0cnVjdF9zaXplKSAvLyBjaGFyX3NpemUpCisgICAgICAgICAgICBhbGxvYyA9IGxhbWJkYTogY2hhciAqIG1heGxlbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTWVtb3J5RXJyb3IsIGFsbG9jKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTWVtb3J5RXJyb3IsIGFsbG9jKQogCiAgICAgZGVmIHRlc3RfZm9ybWF0X3N1YmNsYXNzKHNlbGYpOgogICAgICAgICBjbGFzcyBTKHN0cik6CkBAIC0xNjYxLDExICsxOTg0LDEwIEBACiAgICAgIyBUZXN0IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCkKICAgICBkZWYgdGVzdF9mcm9tX2Zvcm1hdChzZWxmKToKICAgICAgICAgc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdjdHlwZXMnKQotICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgcHl0aG9uYXBpLCBweV9vYmplY3QsIGNfaW50Ci0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID09IDY1NTM1OgotICAgICAgICAgICAgbmFtZSA9ICJQeVVuaWNvZGVVQ1MyX0Zyb21Gb3JtYXQiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuYW1lID0gIlB5VW5pY29kZVVDUzRfRnJvbUZvcm1hdCIKKyAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IChweXRob25hcGksIHB5X29iamVjdCwKKyAgICAgICAgICAgIGNfaW50LCBjX2xvbmcsIGNfbG9uZ2xvbmcsIGNfc3NpemVfdCwKKyAgICAgICAgICAgIGNfdWludCwgY191bG9uZywgY191bG9uZ2xvbmcsIGNfc2l6ZV90KQorICAgICAgICBuYW1lID0gIlB5VW5pY29kZV9Gcm9tRm9ybWF0IgogICAgICAgICBfUHlVbmljb2RlX0Zyb21Gb3JtYXQgPSBnZXRhdHRyKHB5dGhvbmFwaSwgbmFtZSkKICAgICAgICAgX1B5VW5pY29kZV9Gcm9tRm9ybWF0LnJlc3R5cGUgPSBweV9vYmplY3QKIApAQCAtMTY4NiwxMyArMjAwOCw0MCBAQAogICAgICAgICAgICAgJ3N0cmluZywgZ290IGEgbm9uLUFTQ0lJIGJ5dGU6IDB4ZTkkJywKICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tRm9ybWF0LCBiJ3VuaWNvZGVceGU5PSVzJywgJ2FzY2lpJykKIAorICAgICAgICAjIHRlc3QgIiVjIgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWMnLCBjX2ludCgweGFiY2QpKSwgJ1x1YWJjZCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclYycsIGNfaW50KDB4MTBmZmZmKSksICdcVTAwMTBmZmZmJykKIAotICAgICAgICAjIG90aGVyIHRlc3RzCisgICAgICAgICMgdGVzdCAiJSIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUnKSwgJyUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJSUnKSwgJyUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJSVzJyksICclcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYidbJSVdJyksICdbJV0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJSUlcycsIGInYWJjJyksICclYWJjJykKKworICAgICAgICAjIHRlc3QgaW50ZWdlciBmb3JtYXRzICglaSwgJWQsICV1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJTAzaScsIGNfaW50KDEwKSksICcwMTAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJTAuNGknLCBjX2ludCgxMCkpLCAnMDAxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclaScsIGNfaW50KC0xMjMpKSwgJy0xMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWxpJywgY19sb25nKC0xMjMpKSwgJy0xMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWxsaScsIGNfbG9uZ2xvbmcoLTEyMykpLCAnLTEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclemknLCBjX3NzaXplX3QoLTEyMykpLCAnLTEyMycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVkJywgY19pbnQoLTEyMykpLCAnLTEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclbGQnLCBjX2xvbmcoLTEyMykpLCAnLTEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclbGxkJywgY19sb25nbG9uZygtMTIzKSksICctMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyV6ZCcsIGNfc3NpemVfdCgtMTIzKSksICctMTIzJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJXUnLCBjX3VpbnQoMTIzKSksICcxMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWx1JywgY191bG9uZygxMjMpKSwgJzEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclbGx1JywgY191bG9uZ2xvbmcoMTIzKSksICcxMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJXp1JywgY19zaXplX3QoMTIzKSksICcxMjMnKQorCisgICAgICAgICMgdGVzdCAlQQogICAgICAgICB0ZXh0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclJUE6JUEnLCAnYWJjXHhlOVx1YWJjZFxVMDAxMGZmZmYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIHIiJUE6J2FiY1x4ZTlcdWFiY2RcVTAwMTBmZmZmJyIpCiAKKyAgICAgICAgIyB0ZXN0ICVWCiAgICAgICAgIHRleHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChiJ3JlcHI9JVYnLCAnYWJjJywgYid4eXonKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsICdyZXByPWFiYycpCiAKQEAgLTE3MDYsNiArMjA1NSwxMyBAQAogICAgICAgICB0ZXh0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoYidyZXByPSVWJywgTm9uZSwgYidhYmNceGZmJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCAncmVwcj1hYmNcdWZmZmQnKQogCisgICAgICAgICMgbm90IHN1cHBvcnRlZDogY29weSB0aGUgcmF3IGZvcm1hdCBzdHJpbmcuIHRoZXNlIHRlc3RzIGFyZSBqdXN0IGhlcmUKKyAgICAgICAgIyB0byBjaGVjayBmb3IgY3Jhc2hzIGFuZCBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgYXMgc3BlY2lmaWNhdGlvbnMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUxJXMnLCBiJ2FiYycpLCAnJXMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJTFhYmMnKSwgJyUxYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUraScsIGNfaW50KDEwKSksICclK2knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJS4lcycsIGInYWJjJyksICclLiVzJykKKwogICAgICMgVGVzdCBQeVVuaWNvZGVfQXNXaWRlQ2hhcigpCiAgICAgZGVmIHRlc3RfYXN3aWRlY2hhcihzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHVuaWNvZGVfYXN3aWRlY2hhcgpAQCAtMTc2Niw2ICsyMTIyLDY4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZSwgbmNoYXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2NoYXIsIG5vbmJtcCArICdcMCcpCiAKKyAgICBkZWYgdGVzdF9zdWJjbGFzc19hZGQoc2VsZik6CisgICAgICAgIGNsYXNzIFMoc3RyKToKKyAgICAgICAgICAgIGRlZiBfX2FkZF9fKHNlbGYsIG8pOgorICAgICAgICAgICAgICAgIHJldHVybiAiMyIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTKCI0IikgKyBTKCI1IiksICIzIikKKyAgICAgICAgY2xhc3MgUyhzdHIpOgorICAgICAgICAgICAgZGVmIF9faWFkZF9fKHNlbGYsIG8pOgorICAgICAgICAgICAgICAgIHJldHVybiAiMyIKKyAgICAgICAgcyA9IFMoIjEiKQorICAgICAgICBzICs9ICI0IgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsICIzIikKKworICAgIGRlZiB0ZXN0X2VuY29kZV9kZWNpbWFsKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgdW5pY29kZV9lbmNvZGVkZWNpbWFsCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCcxMjMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCdcdTA2NjMuXHUwNjYxXHUwNjY0JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYiczLjE0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoIlxOe0VNIFNQQUNFfTMuMTRcTntFTiBTUEFDRX0iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJyAzLjE0ICcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZV9lbmNvZGVkZWNpbWFsLCAiMTIzXHUyMGFjIiwgInN0cmljdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBWYWx1ZUVycm9yLAorICAgICAgICAgICAgIl4nZGVjaW1hbCcgY29kZWMgY2FuJ3QgZW5jb2RlIGNoYXJhY3RlciIsCisgICAgICAgICAgICB1bmljb2RlX2VuY29kZWRlY2ltYWwsICIxMjNcdTIwYWMiLCAicmVwbGFjZSIpCisKKyAgICBkZWYgdGVzdF90cmFuc2Zvcm1fZGVjaW1hbChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHVuaWNvZGVfdHJhbnNmb3JtZGVjaW1hbHRvYXNjaWkgYXMgdHJhbnNmb3JtX2RlY2ltYWwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2Zvcm1fZGVjaW1hbCgnMTIzJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmb3JtX2RlY2ltYWwoJ1x1MDY2My5cdTA2NjFcdTA2NjQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMy4xNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmb3JtX2RlY2ltYWwoIlxOe0VNIFNQQUNFfTMuMTRcTntFTiBTUEFDRX0iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiXE57RU0gU1BBQ0V9My4xNFxOe0VOIFNQQUNFfSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmb3JtX2RlY2ltYWwoJzEyM1x1MjBhYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcxMjNcdTIwYWMnKQorCisgICAgZGVmIHRlc3RfZ2V0bmV3YXJncyhzZWxmKToKKyAgICAgICAgdGV4dCA9ICdhYmMnCisgICAgICAgIGFyZ3MgPSB0ZXh0Ll9fZ2V0bmV3YXJnc19fKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChhcmdzWzBdLCB0ZXh0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3NbMF0sIHRleHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFyZ3MpLCAxKQorCisgICAgZGVmIHRlc3RfcmVzaXplKHNlbGYpOgorICAgICAgICBmb3IgbGVuZ3RoIGluIHJhbmdlKDEsIDEwMCwgNyk6CisgICAgICAgICAgICAjIGdlbmVyYXRlIGEgZnJlc2ggc3RyaW5nIChyZWZjb3VudD0xKQorICAgICAgICAgICAgdGV4dCA9ICdhJyAqIGxlbmd0aCArICdiJworCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCd1bmljb2RlX2ludGVybmFsIGNvZGVjIGhhcyBiZWVuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgICAgICAjIGZpbGwgd3N0ciBpbnRlcm5hbCBmaWVsZAorICAgICAgICAgICAgICAgIGFiYyA9IHRleHQuZW5jb2RlKCd1bmljb2RlX2ludGVybmFsJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFiYy5kZWNvZGUoJ3VuaWNvZGVfaW50ZXJuYWwnKSwgdGV4dCkKKworICAgICAgICAgICAgICAgICMgcmVzaXplIHRleHQ6IHdzdHIgZmllbGQgbXVzdCBiZSBjbGVhcmVkIGFuZCB0aGVuIHJlY29tcHV0ZWQKKyAgICAgICAgICAgICAgICB0ZXh0ICs9ICdjJworICAgICAgICAgICAgICAgIGFiY2RlZiA9IHRleHQuZW5jb2RlKCd1bmljb2RlX2ludGVybmFsJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFiYywgYWJjZGVmKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWJjZGVmLmRlY29kZSgndW5pY29kZV9pbnRlcm5hbCcpLCB0ZXh0KQorCiAKIGNsYXNzIFN0cmluZ01vZHVsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Zvcm1hdHRlcl9wYXJzZXIoc2VsZik6CkBAIC0xODE3LDQ1ICsyMjM1LDYgQEAKICAgICAgICAgICAgIF1dKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9zdHJpbmcuZm9ybWF0dGVyX2ZpZWxkX25hbWVfc3BsaXQsIDEpCiAKLSAgICBkZWYgdGVzdF9lbmNvZGVfZGVjaW1hbChzZWxmKToKLSAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHVuaWNvZGVfZW5jb2RlZGVjaW1hbAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgnMTIzJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicxMjMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgnXHUwNjYzLlx1MDY2MVx1MDY2NCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMy4xNCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCJcTntFTSBTUEFDRX0zLjE0XE57RU4gU1BBQ0V9IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicgMy4xNCAnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVfZW5jb2RlZGVjaW1hbCwgIjEyM1x1MjBhYyIsICJzdHJpY3QiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgiMTIzXHUyMGFjIiwgInJlcGxhY2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJzEyMz8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgiMTIzXHUyMGFjIiwgImlnbm9yZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMTIzJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoIjEyM1x1MjBhYyIsICJ4bWxjaGFycmVmcmVwbGFjZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMTIzJiM4MzY0OycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCIxMjNcdTIwYWMiLCAiYmFja3NsYXNocmVwbGFjZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMTIzXFx1MjBhYycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCIxMjNcdTIwYWNcTntFTSBTUEFDRX0iLCAicmVwbGFjZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMTIzPyAnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgiMTIzXHUyMGFjXHUyMGFjIiwgInJlcGxhY2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJzEyMz8/JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoIjEyM1x1MjBhY1x1MDY2MCIsICJyZXBsYWNlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicxMjM/MCcpCi0KLSAgICBkZWYgdGVzdF90cmFuc2Zvcm1fZGVjaW1hbChzZWxmKToKLSAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHVuaWNvZGVfdHJhbnNmb3JtZGVjaW1hbHRvYXNjaWkgYXMgdHJhbnNmb3JtX2RlY2ltYWwKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2Zvcm1fZGVjaW1hbCgnMTIzJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJzEyMycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmb3JtX2RlY2ltYWwoJ1x1MDY2My5cdTA2NjFcdTA2NjQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnMy4xNCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmb3JtX2RlY2ltYWwoIlxOe0VNIFNQQUNFfTMuMTRcTntFTiBTUEFDRX0iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiXE57RU0gU1BBQ0V9My4xNFxOe0VOIFNQQUNFfSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmb3JtX2RlY2ltYWwoJzEyM1x1MjBhYycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICcxMjNcdTIwYWMnKQotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmljb2RlX2ZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVfZmlsZS5weQppbmRleCA2YzIwMTFhLi5mYWE4ZGEzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGVfZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVfZmlsZS5weQpAQCAtNiw3ICs2LDcgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKHJ1bl91bml0dGVzdCwgcm10cmVlLAotICAgIFRFU1RGTl9FTkNPRElORywgVEVTVEZOX1VOSUNPREUsIFRFU1RGTl9VTkVOQ09EQUJMRSkKKyAgICBURVNURk5fRU5DT0RJTkcsIFRFU1RGTl9VTklDT0RFLCBURVNURk5fVU5FTkNPREFCTEUsIGNyZWF0ZV9lbXB0eV9maWxlKQogCiBpZiBub3Qgb3MucGF0aC5zdXBwb3J0c191bmljb2RlX2ZpbGVuYW1lczoKICAgICB0cnk6CkBAIC01NiwxNiArNTYsMjAgQEAKICAgICAgICAgIyBTaG91bGQgYmUgYWJsZSB0byByZW5hbWUgdGhlIGZpbGUgdXNpbmcgZWl0aGVyIG5hbWUuCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShmaWxlbmFtZTEpKSAjIG11c3QgZXhpc3QuCiAgICAgICAgIG9zLnJlbmFtZShmaWxlbmFtZTEsIGZpbGVuYW1lMiArICIubmV3IikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lMSsiLm5ldyIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lMikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShmaWxlbmFtZTEgKyAnLm5ldycpKQogICAgICAgICBvcy5yZW5hbWUoZmlsZW5hbWUxICsgIi5uZXciLCBmaWxlbmFtZTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUxICsgJy5uZXcnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lMikpCiAKICAgICAgICAgc2h1dGlsLmNvcHkoZmlsZW5hbWUxLCBmaWxlbmFtZTIgKyAiLm5ldyIpCiAgICAgICAgIG9zLnVubGluayhmaWxlbmFtZTEgKyAiLm5ldyIpICMgcmVtb3ZlIHVzaW5nIGVxdWl2IG5hbWUuCiAgICAgICAgICMgQW5kIGEgY291cGxlIG9mIG1vdmVzLCBvbmUgdXNpbmcgZWFjaCBuYW1lLgogICAgICAgICBzaHV0aWwubW92ZShmaWxlbmFtZTEsIGZpbGVuYW1lMiArICIubmV3IikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZTIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lMikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZTEgKyAnLm5ldycpKQogICAgICAgICBzaHV0aWwubW92ZShmaWxlbmFtZTEgKyAiLm5ldyIsIGZpbGVuYW1lMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZTIgKyAnLm5ldycpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZmlsZW5hbWUxKSkKICAgICAgICAgIyBOb3RlIC0gZHVlIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBzaHV0aWwubW92ZSwKICAgICAgICAgIyBpdCB0cmllcyBhIHJlbmFtZSBmaXJzdC4gIFRoaXMgb25seSBmYWlscyBvbiBXaW5kb3dzIHdoZW4gb24KQEAgLTczLDEwICs3NywxMiBAQAogICAgICAgICAjIFNvIHdlIHRlc3QgdGhlIHNodXRpbC5jb3B5MiBmdW5jdGlvbiwgd2hpY2ggaXMgdGhlIHRoaW5nIG1vc3QKICAgICAgICAgIyBsaWtlbHkgdG8gZmFpbC4KICAgICAgICAgc2h1dGlsLmNvcHkyKGZpbGVuYW1lMSwgZmlsZW5hbWUyICsgIi5uZXciKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUxICsgJy5uZXcnKSkKICAgICAgICAgb3MudW5saW5rKGZpbGVuYW1lMSArICIubmV3IikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZTIgKyAnLm5ldycpKQogCiAgICAgZGVmIF9kb19kaXJlY3Rvcnkoc2VsZiwgbWFrZV9uYW1lLCBjaGRpcl9uYW1lKToKLSAgICAgICAgY3dkID0gb3MuZ2V0Y3dkYigpCisgICAgICAgIGN3ZCA9IG9zLmdldGN3ZCgpCiAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIobWFrZV9uYW1lKToKICAgICAgICAgICAgIHJtdHJlZShtYWtlX25hbWUpCiAgICAgICAgIG9zLm1rZGlyKG1ha2VfbmFtZSkKQEAgLTk5LDggKzEwNSw3IEBACiAgICAgIyB0b3AtbGV2ZWwgJ3Rlc3QnIGZ1bmN0aW9ucyB3b3VsZCBiZSBpZiB0aGV5IGNvdWxkIHRha2UgcGFyYW1zCiAgICAgZGVmIF90ZXN0X3NpbmdsZShzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgIHJlbW92ZV9pZl9leGlzdHMoZmlsZW5hbWUpCi0gICAgICAgIGYgPSBvcGVuKGZpbGVuYW1lLCAidyIpCi0gICAgICAgIGYuY2xvc2UoKQorICAgICAgICBjcmVhdGVfZW1wdHlfZmlsZShmaWxlbmFtZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5fZG9fc2luZ2xlKGZpbGVuYW1lKQogICAgICAgICBmaW5hbGx5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkKaW5kZXggOTc0NDI1Ni4uOTlhYTAwMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CkBAIC0yMSw3ICsyMSw3IEBACiBjbGFzcyBVbmljb2RlTWV0aG9kc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIyB1cGRhdGUgdGhpcywgaWYgdGhlIGRhdGFiYXNlIGNoYW5nZXMKLSAgICBleHBlY3RlZGNoZWNrc3VtID0gJzIxYjkwZjFhZWQwMDA4MWI4MWNhNzk0MmIyMjE5NmFmMDkwMDE1YTAnCisgICAgZXhwZWN0ZWRjaGVja3N1bSA9ICdiZjdhNzhmMWE1MzI0MjFiNTAzMzYwMDEwMmUyM2E5MjA0NGRiYmE5JwogCiAgICAgZGVmIHRlc3RfbWV0aG9kX2NoZWNrc3VtKHNlbGYpOgogICAgICAgICBoID0gaGFzaGxpYi5zaGExKCkKQEAgLTgwLDcgKzgwLDcgQEAKIGNsYXNzIFVuaWNvZGVGdW5jdGlvbnNUZXN0KFVuaWNvZGVEYXRhYmFzZVRlc3QpOgogCiAgICAgIyB1cGRhdGUgdGhpcywgaWYgdGhlIGRhdGFiYXNlIGNoYW5nZXMKLSAgICBleHBlY3RlZGNoZWNrc3VtID0gJ2MyM2RmYzBiNWVhZjNjYTJhYWQzMmQ3MzNkZTk2YmIxODJjY2RhNTAnCisgICAgZXhwZWN0ZWRjaGVja3N1bSA9ICcxN2ZlMmYxMmI3ODhlNGZmZjU0NzliNDY5YzQ0MDRiYjZlY2Y4NDFmJwogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2NoZWNrc3VtKHNlbGYpOgogICAgICAgICBkYXRhID0gW10KICAgICAgICAgaCA9IGhhc2hsaWIuc2hhMSgpCkBAIC0xMDgsNiArMTA4LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmRpZ2l0KCdcdTIxNWInLCBOb25lKSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmRpZ2l0KCdcdTI0NjgnKSwgOSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmRpZ2l0KCdcVTAwMDIwMDAwJywgTm9uZSksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5kaWdpdCgnXFUwMDAxRDdGRCcpLCA3KQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5kYi5kaWdpdCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmRiLmRpZ2l0LCAneHgnKQpAQCAtMTIwLDYgKzEyMSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5udW1lcmljKCdcdTI0NjgnKSwgOS4wKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIubnVtZXJpYygnXHVhNjI3JyksIDcuMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLm51bWVyaWMoJ1xVMDAwMjAwMDAnLCBOb25lKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLm51bWVyaWMoJ1xVMDAwMTAxMkEnKSwgOTAwMCkKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZGIubnVtZXJpYykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmRiLm51bWVyaWMsICd4eCcpCkBAIC0xMzEsNiArMTMzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmRlY2ltYWwoJ1x1MjE1YicsIE5vbmUpLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZGVjaW1hbCgnXHUyNDY4JywgTm9uZSksIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5kZWNpbWFsKCdcVTAwMDIwMDAwJywgTm9uZSksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5kZWNpbWFsKCdcVTAwMDFEN0ZEJyksIDcpCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmRiLmRlY2ltYWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5kYi5kZWNpbWFsLCAneHgnKQpAQCAtMTQxLDYgKzE0NCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5jYXRlZ29yeSgnYScpLCAnTGwnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuY2F0ZWdvcnkoJ0EnKSwgJ0x1JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmNhdGVnb3J5KCdcVTAwMDIwMDAwJyksICdMbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5jYXRlZ29yeSgnXFUwMDAxMDEyQScpLCAnTm8nKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5kYi5jYXRlZ29yeSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmRiLmNhdGVnb3J5LCAneHgnKQpAQCAtMzA4LDE0ICszMTIsNiBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpbmVzKSwgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiXHUlLjR4IHNob3VsZCBub3QgYmUgYSBsaW5lYnJlYWsiICUgaSkKIAotICAgIGRlZiB0ZXN0X1VDUzQoc2VsZik6Ci0gICAgICAgICMgdW5pY29kZWRhdGEgc2hvdWxkIHdvcmsgd2l0aCBjb2RlIHBvaW50cyBvdXRzaWRlIHRoZSBCTVAKLSAgICAgICAgIyBldmVuIG9uIGEgbmFycm93IFVuaWNvZGUgYnVpbGQKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmNhdGVnb3J5KCJcVTAwMDEwMTJBIiksICJObyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5udW1lcmljKCJcVTAwMDEwMTJBIiksIDkwMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5kZWNpbWFsKCJcVTAwMDFEN0ZEIiksIDcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5kaWdpdCgiXFUwMDAxRDdGRCIpLCA3KQotCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgVW5pY29kZU1pc2NUZXN0LApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQppbmRleCAzZmM0OTllLi40ZjcxYjI0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQpAQCAtMzAsNyArMzAsMTAgQEAKICAgICBpZiBwcm94aWVzIGlzIG5vdCBOb25lOgogICAgICAgICBvcGVuZXIgPSB1cmxsaWIucmVxdWVzdC5GYW5jeVVSTG9wZW5lcihwcm94aWVzPXByb3hpZXMpCiAgICAgZWxpZiBub3QgX3VybG9wZW5lcjoKLSAgICAgICAgb3BlbmVyID0gdXJsbGliLnJlcXVlc3QuRmFuY3lVUkxvcGVuZXIoKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoCisgICAgICAgICAgICAgICAgKCdGYW5jeVVSTG9wZW5lciBzdHlsZSBvZiBpbnZva2luZyByZXF1ZXN0cyBpcyBkZXByZWNhdGVkLicsCisgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICBvcGVuZXIgPSB1cmxsaWIucmVxdWVzdC5GYW5jeVVSTG9wZW5lcigpCiAgICAgICAgIF91cmxvcGVuZXIgPSBvcGVuZXIKICAgICBlbHNlOgogICAgICAgICBvcGVuZXIgPSBfdXJsb3BlbmVyCkBAIC0yNzAsMTAgKzI3Myw5IEBACiAKICAgICBkZWYgdGVzdF9taXNzaW5nX2xvY2FsZmlsZShzZWxmKToKICAgICAgICAgIyBUZXN0IGZvciAjMTA4MzYKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGU6CisgICAgICAgICMgMy4zIC0gVVJMRXJyb3IgaXMgbm90IGNhcHR1cmVkLCBleHBsaWNpdCBJT0Vycm9yIGlzIHJhaXNlZC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKToKICAgICAgICAgICAgIHVybG9wZW4oJ2ZpbGU6Ly9sb2NhbGhvc3QvYS9maWxlL3doaWNoL2RvZXNub3QvZXhpc3RzLnB5JykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGUuZXhjZXB0aW9uLmZpbGVuYW1lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZS5leGNlcHRpb24ucmVhc29uKQogCiAgICAgZGVmIHRlc3RfZmlsZV9ub3RleGlzdHMoc2VsZik6CiAgICAgICAgIGZkLCB0bXBfZmlsZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQpAQCAtMjg2LDIxICsyODgsMjAgQEAKICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQogICAgICAgICAgICAgb3MudW5saW5rKHRtcF9maWxlKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHRtcF9maWxlKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpOgorICAgICAgICAjIDMuMyAtIElPRXJyb3IgaW5zdGVhZCBvZiBVUkxFcnJvcgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IpOgogICAgICAgICAgICAgdXJsb3Blbih0bXBfZmlsZXVybCkKIAogICAgIGRlZiB0ZXN0X2Z0cF9ub2hvc3Qoc2VsZik6CiAgICAgICAgIHRlc3RfZnRwX3VybCA9ICdmdHA6Ly8vcGF0aCcKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGU6CisgICAgICAgICMgMy4zIC0gSU9FcnJvciBpbnN0ZWFkIG9mIFVSTEVycm9yCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvcik6CiAgICAgICAgICAgICB1cmxvcGVuKHRlc3RfZnRwX3VybCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlLmV4Y2VwdGlvbi5maWxlbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGUuZXhjZXB0aW9uLnJlYXNvbikKIAogICAgIGRlZiB0ZXN0X2Z0cF9ub25leGlzdGluZyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGU6CisgICAgICAgICMgMy4zIC0gSU9FcnJvciBpbnN0ZWFkIG9mIFVSTEVycm9yCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvcik6CiAgICAgICAgICAgICB1cmxvcGVuKCdmdHA6Ly9sb2NhbGhvc3QvYS9maWxlL3doaWNoL2RvZXNub3QvZXhpc3RzLnB5JykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlLmV4Y2VwdGlvbi5maWxlbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGUuZXhjZXB0aW9uLnJlYXNvbikKIAogCiAgICAgZGVmIHRlc3RfdXNlcnBhc3NfaW51cmwoc2VsZik6CkBAIC0zMzMsNiArMzM0LDEwIEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnVuZmFrZWh0dHAoKQogCisgICAgZGVmIHRlc3RfVVJMb3BlbmVyX2RlcHJlY2F0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgdXJsbGliLnJlcXVlc3QuVVJMb3BlbmVyKCkKKwogY2xhc3MgdXJscmV0cmlldmVfRmlsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJUZXN0IHVybGxpYi51cmxyZXRyaWV2ZSgpIG9uIGxvY2FsIGZpbGVzIiIiCiAKQEAgLTM2Niw3ICszNzEsNyBAQAogICAgIGRlZiBjb25zdHJ1Y3RMb2NhbEZpbGVVcmwoc2VsZiwgZmlsZVBhdGgpOgogICAgICAgICBmaWxlUGF0aCA9IG9zLnBhdGguYWJzcGF0aChmaWxlUGF0aCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZVBhdGguZW5jb2RlKCJ1dGY4IikKKyAgICAgICAgICAgIGZpbGVQYXRoLmVuY29kZSgidXRmLTgiKQogICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoImZpbGVQYXRoIGlzIG5vdCBlbmNvZGFibGUgdG8gdXRmOCIpCiAgICAgICAgIHJldHVybiAiZmlsZTovLyVzIiAlIHVybGxpYi5yZXF1ZXN0LnBhdGhuYW1lMnVybChmaWxlUGF0aCkKQEAgLTQxOSwxMSArNDI0LDExIEBACiAKICAgICBkZWYgdGVzdF9yZXBvcnRob29rKHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHRoZSByZXBvcnRob29rIHdvcmtzLgotICAgICAgICBkZWYgaG9va3Rlc3Rlcihjb3VudCwgYmxvY2tfc2l6ZSwgdG90YWxfc2l6ZSwgY291bnRfaG9sZGVyPVswXSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY291bnQsIGludCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShibG9ja19zaXplLCBpbnQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodG90YWxfc2l6ZSwgaW50KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3VudCwgY291bnRfaG9sZGVyWzBdKQorICAgICAgICBkZWYgaG9va3Rlc3RlcihibG9ja19jb3VudCwgYmxvY2tfcmVhZF9zaXplLCBmaWxlX3NpemUsIGNvdW50X2hvbGRlcj1bMF0pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGJsb2NrX2NvdW50LCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYmxvY2tfcmVhZF9zaXplLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZmlsZV9zaXplLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJsb2NrX2NvdW50LCBjb3VudF9ob2xkZXJbMF0pCiAgICAgICAgICAgICBjb3VudF9ob2xkZXJbMF0gPSBjb3VudF9ob2xkZXJbMF0gKyAxCiAgICAgICAgIHNlY29uZF90ZW1wID0gIiVzLjIiICUgc3VwcG9ydC5URVNURk4KICAgICAgICAgc2VsZi5yZWdpc3RlckZpbGVGb3JDbGVhblVwKHNlY29uZF90ZW1wKQpAQCAtNDM0LDggKzQzOSw4IEBACiAgICAgZGVmIHRlc3RfcmVwb3J0aG9va18wX2J5dGVzKHNlbGYpOgogICAgICAgICAjIFRlc3Qgb24gemVybyBsZW5ndGggZmlsZS4gU2hvdWxkIGNhbGwgcmVwb3J0aG9vayBvbmx5IDEgdGltZS4KICAgICAgICAgcmVwb3J0ID0gW10KLSAgICAgICAgZGVmIGhvb2t0ZXN0ZXIoY291bnQsIGJsb2NrX3NpemUsIHRvdGFsX3NpemUsIF9yZXBvcnQ9cmVwb3J0KToKLSAgICAgICAgICAgIF9yZXBvcnQuYXBwZW5kKChjb3VudCwgYmxvY2tfc2l6ZSwgdG90YWxfc2l6ZSkpCisgICAgICAgIGRlZiBob29rdGVzdGVyKGJsb2NrX2NvdW50LCBibG9ja19yZWFkX3NpemUsIGZpbGVfc2l6ZSwgX3JlcG9ydD1yZXBvcnQpOgorICAgICAgICAgICAgX3JlcG9ydC5hcHBlbmQoKGJsb2NrX2NvdW50LCBibG9ja19yZWFkX3NpemUsIGZpbGVfc2l6ZSkpCiAgICAgICAgIHNyY0ZpbGVOYW1lID0gc2VsZi5jcmVhdGVOZXdUZW1wRmlsZSgpCiAgICAgICAgIHVybGxpYi5yZXF1ZXN0LnVybHJldHJpZXZlKHNlbGYuY29uc3RydWN0TG9jYWxGaWxlVXJsKHNyY0ZpbGVOYW1lKSwKICAgICAgICAgICAgIHN1cHBvcnQuVEVTVEZOLCBob29rdGVzdGVyKQpAQCAtNDQ1LDMxICs0NTAsMzIgQEAKICAgICBkZWYgdGVzdF9yZXBvcnRob29rXzVfYnl0ZXMoc2VsZik6CiAgICAgICAgICMgVGVzdCBvbiA1IGJ5dGUgZmlsZS4gU2hvdWxkIGNhbGwgcmVwb3J0aG9vayBvbmx5IDIgdGltZXMgKG9uY2Ugd2hlbgogICAgICAgICAjIHRoZSAibmV0d29yayBjb25uZWN0aW9uIiBpcyBlc3RhYmxpc2hlZCBhbmQgb25jZSB3aGVuIHRoZSBibG9jayBpcwotICAgICAgICAjIHJlYWQpLiBTaW5jZSB0aGUgYmxvY2sgc2l6ZSBpcyA4MTkyIGJ5dGVzLCBvbmx5IG9uZSBibG9jayByZWFkIGlzCi0gICAgICAgICMgcmVxdWlyZWQgdG8gcmVhZCB0aGUgZW50aXJlIGZpbGUuCisgICAgICAgICMgcmVhZCkuCiAgICAgICAgIHJlcG9ydCA9IFtdCi0gICAgICAgIGRlZiBob29rdGVzdGVyKGNvdW50LCBibG9ja19zaXplLCB0b3RhbF9zaXplLCBfcmVwb3J0PXJlcG9ydCk6Ci0gICAgICAgICAgICBfcmVwb3J0LmFwcGVuZCgoY291bnQsIGJsb2NrX3NpemUsIHRvdGFsX3NpemUpKQorICAgICAgICBkZWYgaG9va3Rlc3RlcihibG9ja19jb3VudCwgYmxvY2tfcmVhZF9zaXplLCBmaWxlX3NpemUsIF9yZXBvcnQ9cmVwb3J0KToKKyAgICAgICAgICAgIF9yZXBvcnQuYXBwZW5kKChibG9ja19jb3VudCwgYmxvY2tfcmVhZF9zaXplLCBmaWxlX3NpemUpKQogICAgICAgICBzcmNGaWxlTmFtZSA9IHNlbGYuY3JlYXRlTmV3VGVtcEZpbGUoYiJ4IiAqIDUpCiAgICAgICAgIHVybGxpYi5yZXF1ZXN0LnVybHJldHJpZXZlKHNlbGYuY29uc3RydWN0TG9jYWxGaWxlVXJsKHNyY0ZpbGVOYW1lKSwKICAgICAgICAgICAgIHN1cHBvcnQuVEVTVEZOLCBob29rdGVzdGVyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXBvcnQpLCAyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG9ydFswXVsxXSwgODE5MikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRbMF1bMl0sIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwb3J0WzFdWzJdLCA1KQogCiAgICAgZGVmIHRlc3RfcmVwb3J0aG9va184MTkzX2J5dGVzKHNlbGYpOgogICAgICAgICAjIFRlc3Qgb24gODE5MyBieXRlIGZpbGUuIFNob3VsZCBjYWxsIHJlcG9ydGhvb2sgb25seSAzIHRpbWVzIChvbmNlCiAgICAgICAgICMgd2hlbiB0aGUgIm5ldHdvcmsgY29ubmVjdGlvbiIgaXMgZXN0YWJsaXNoZWQsIG9uY2UgZm9yIHRoZSBuZXh0IDgxOTIKICAgICAgICAgIyBieXRlcywgYW5kIG9uY2UgZm9yIHRoZSBsYXN0IGJ5dGUpLgogICAgICAgICByZXBvcnQgPSBbXQotICAgICAgICBkZWYgaG9va3Rlc3Rlcihjb3VudCwgYmxvY2tfc2l6ZSwgdG90YWxfc2l6ZSwgX3JlcG9ydD1yZXBvcnQpOgotICAgICAgICAgICAgX3JlcG9ydC5hcHBlbmQoKGNvdW50LCBibG9ja19zaXplLCB0b3RhbF9zaXplKSkKKyAgICAgICAgZGVmIGhvb2t0ZXN0ZXIoYmxvY2tfY291bnQsIGJsb2NrX3JlYWRfc2l6ZSwgZmlsZV9zaXplLCBfcmVwb3J0PXJlcG9ydCk6CisgICAgICAgICAgICBfcmVwb3J0LmFwcGVuZCgoYmxvY2tfY291bnQsIGJsb2NrX3JlYWRfc2l6ZSwgZmlsZV9zaXplKSkKICAgICAgICAgc3JjRmlsZU5hbWUgPSBzZWxmLmNyZWF0ZU5ld1RlbXBGaWxlKGIieCIgKiA4MTkzKQogICAgICAgICB1cmxsaWIucmVxdWVzdC51cmxyZXRyaWV2ZShzZWxmLmNvbnN0cnVjdExvY2FsRmlsZVVybChzcmNGaWxlTmFtZSksCiAgICAgICAgICAgICBzdXBwb3J0LlRFU1RGTiwgaG9va3Rlc3RlcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVwb3J0KSwgMykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRbMF1bMV0sIDgxOTIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwb3J0WzBdWzJdLCA4MTkzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG9ydFswXVsxXSwgODE5MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRbMV1bMV0sIDgxOTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwb3J0WzJdWzFdLCA4MTkyKQogCiAKIGNsYXNzIHVybHJldHJpZXZlX0h0dHBUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSwgRmFrZUhUVFBNaXhpbik6CkBAIC0xMTkzLDE0ICsxMTk5LDE2IEBACiAgICAgICAgIGNsYXNzIER1bW15VVJMb3BlbmVyKHVybGxpYi5yZXF1ZXN0LlVSTG9wZW5lcik6CiAgICAgICAgICAgICBkZWYgb3Blbl9zcGFtKHNlbGYsIHVybCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHVybAorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoCisgICAgICAgICAgICAgICAgKCdEdW1teVVSTG9wZW5lciBzdHlsZSBvZiBpbnZva2luZyByZXF1ZXN0cyBpcyBkZXByZWNhdGVkLicsCisgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKER1bW15VVJMb3BlbmVyKCkub3BlbigKKyAgICAgICAgICAgICAgICAnc3BhbTovL2V4YW1wbGUvIC8nKSwnLy9leGFtcGxlLyUyMC8nKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRHVtbXlVUkxvcGVuZXIoKS5vcGVuKAotICAgICAgICAgICAgJ3NwYW06Ly9leGFtcGxlLyAvJyksJy8vZXhhbXBsZS8lMjAvJykKLQotICAgICAgICAjIHRlc3QgdGhlIHNhZmUgY2hhcmFjdGVycyBhcmUgbm90IHF1b3RlZCBieSB1cmxvcGVuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRHVtbXlVUkxvcGVuZXIoKS5vcGVuKAotICAgICAgICAgICAgInNwYW06Ly9jOnx3aW5kb3dzJS86PSY/fiMrISQsOydAKCkqW118L3BhdGgvIiksCi0gICAgICAgICAgICAiLy9jOnx3aW5kb3dzJS86PSY/fiMrISQsOydAKCkqW118L3BhdGgvIikKKyAgICAgICAgICAgICMgdGVzdCB0aGUgc2FmZSBjaGFyYWN0ZXJzIGFyZSBub3QgcXVvdGVkIGJ5IHVybG9wZW4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRHVtbXlVUkxvcGVuZXIoKS5vcGVuKAorICAgICAgICAgICAgICAgICJzcGFtOi8vYzp8d2luZG93cyUvOj0mP34jKyEkLDsnQCgpKltdfC9wYXRoLyIpLAorICAgICAgICAgICAgICAgICIvL2M6fHdpbmRvd3MlLzo9Jj9+IyshJCw7J0AoKSpbXXwvcGF0aC8iKQogCiAjIEp1c3QgY29tbWVudGVkIHRoZW0gb3V0LgogIyBDYW4ndCByZWFsbHkgdGVsbCB3aHkga2VlcCBmYWlsaW5nIGluIHdpbmRvd3MgYW5kIHNwYXJjLgpAQCAtMTI4MCw2ICsxMjg4LDI4IEBACiAjICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdHAuZnRwLnNvY2suZ2V0dGltZW91dCgpLCAzMCkKICMgICAgICAgICBmdHAuY2xvc2UoKQogCitjbGFzcyBSZXF1ZXN0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIHVybGxpYi5yZXF1ZXN0LlJlcXVlc3QuIiIiCisKKyAgICBkZWYgdGVzdF9kZWZhdWx0X3ZhbHVlcyhzZWxmKToKKyAgICAgICAgUmVxdWVzdCA9IHVybGxpYi5yZXF1ZXN0LlJlcXVlc3QKKyAgICAgICAgcmVxdWVzdCA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC5nZXRfbWV0aG9kKCksICdHRVQnKQorICAgICAgICByZXF1ZXN0ID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnIiwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC5nZXRfbWV0aG9kKCksICdQT1NUJykKKworICAgIGRlZiB0ZXN0X3dpdGhfbWV0aG9kX2FyZyhzZWxmKToKKyAgICAgICAgUmVxdWVzdCA9IHVybGxpYi5yZXF1ZXN0LlJlcXVlc3QKKyAgICAgICAgcmVxdWVzdCA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZyIsIG1ldGhvZD0nSEVBRCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC5tZXRob2QsICdIRUFEJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0LmdldF9tZXRob2QoKSwgJ0hFQUQnKQorICAgICAgICByZXF1ZXN0ID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnIiwge30sIG1ldGhvZD0nSEVBRCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC5tZXRob2QsICdIRUFEJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0LmdldF9tZXRob2QoKSwgJ0hFQUQnKQorICAgICAgICByZXF1ZXN0ID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnIiwgbWV0aG9kPSdHRVQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcXVlc3QuZ2V0X21ldGhvZCgpLCAnR0VUJykKKyAgICAgICAgcmVxdWVzdC5tZXRob2QgPSAnSEVBRCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0LmdldF9tZXRob2QoKSwgJ0hFQUQnKQogCiAKIGRlZiB0ZXN0X21haW4oKToKQEAgLTEyOTYsNiArMTMyNiw3IEBACiAgICAgICAgIFV0aWxpdHlfVGVzdHMsCiAgICAgICAgIFVSTG9wZW5lcl9UZXN0cywKICAgICAgICAgI0ZUUFdyYXBwZXJUZXN0cywKKyAgICAgICAgUmVxdWVzdFRlc3RzLAogICAgICkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKaW5kZXggNWVhYjMwYS4uY2NkNTQxOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQpAQCAtNSw2ICs1LDcgQEAKIGltcG9ydCBpbwogaW1wb3J0IHNvY2tldAogaW1wb3J0IGFycmF5CitpbXBvcnQgc3lzCiAKIGltcG9ydCB1cmxsaWIucmVxdWVzdAogIyBUaGUgcHJveHkgYnlwYXNzIG1ldGhvZCBpbXBvcnRlZCBiZWxvdyBoYXMgbG9naWMgc3BlY2lmaWMgdG8gdGhlIE9TWApAQCAtMTgsNiArMTksMjIgQEAKICMgcGFyc2Vfa2Vxdl9saXN0LCBwYXJzZV9odHRwX2xpc3QsIEhUVFBEaWdlc3RBdXRoSGFuZGxlcgogCiBjbGFzcyBUcml2aWFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfX19hbGxfXyhzZWxmKToKKyAgICAgICAgIyBWZXJpZnkgd2hpY2ggbmFtZXMgYXJlIGV4cG9zZWQKKyAgICAgICAgZm9yIG1vZHVsZSBpbiAncmVxdWVzdCcsICdyZXNwb25zZScsICdwYXJzZScsICdlcnJvcicsICdyb2JvdHBhcnNlcic6CisgICAgICAgICAgICBjb250ZXh0ID0ge30KKyAgICAgICAgICAgIGV4ZWMoJ2Zyb20gdXJsbGliLiVzIGltcG9ydCAqJyAlIG1vZHVsZSwgY29udGV4dCkKKyAgICAgICAgICAgIGRlbCBjb250ZXh0WydfX2J1aWx0aW5zX18nXQorICAgICAgICAgICAgaWYgbW9kdWxlID09ICdyZXF1ZXN0JyBhbmQgb3MubmFtZSA9PSAnbnQnOgorICAgICAgICAgICAgICAgIHUsIHAgPSBjb250ZXh0LnBvcCgndXJsMnBhdGhuYW1lJyksIGNvbnRleHQucG9wKCdwYXRobmFtZTJ1cmwnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodS5fX21vZHVsZV9fLCAnbnR1cmwycGF0aCcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLl9fbW9kdWxlX18sICdudHVybDJwYXRoJykKKyAgICAgICAgICAgIGZvciBrLCB2IGluIGNvbnRleHQuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYuX19tb2R1bGVfXywgJ3VybGxpYi4lcycgJSBtb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICIlciBpcyBleHBvc2VkIGluICd1cmxsaWIuJXMnIGJ1dCBkZWZpbmVkIGluICVyIiAlCisgICAgICAgICAgICAgICAgICAgIChrLCBtb2R1bGUsIHYuX19tb2R1bGVfXykpCisKICAgICBkZWYgdGVzdF90cml2aWFsKHNlbGYpOgogICAgICAgICAjIEEgY291cGxlIHRyaXZpYWwgdGVzdHMKIApAQCAtNTM2LDEwICs1NTMsNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IsIG8ub3BlbiwgcmVxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG8uY2FsbHMsIFsoaGFuZGxlcnNbMF0sICJodHRwX29wZW4iLCAocmVxLCksIHt9KV0pCiAKLSMjICAgICBkZWYgdGVzdF9lcnJvcihzZWxmKToKLSMjICAgICAgICAgIyBYWFggdGhpcyBkb2Vzbid0IGFjdHVhbGx5IHNlZW0gdG8gYmUgdXNlZCBpbiBzdGFuZGFyZCBsaWJyYXJ5LAotIyMgICAgICAgICAjICBidXQgc2hvdWxkIHJlYWxseSBiZSB0ZXN0ZWQgYW55d2F5Li4uCi0KICAgICBkZWYgdGVzdF9odHRwX2Vycm9yKHNlbGYpOgogICAgICAgICAjIFhYWCBodHRwX2Vycm9yX2RlZmF1bHQKICAgICAgICAgIyBodHRwIGVycm9ycyBhcmUgYSBzcGVjaWFsIGNhc2UKQEAgLTU2Nyw2ICs1ODAsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaGFuZGxlciwgbWV0aG9kX25hbWUpLCBnb3RbOjJdKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBnb3RbMl0pCiAKKwogICAgIGRlZiB0ZXN0X3Byb2Nlc3NvcnMoc2VsZik6CiAgICAgICAgICMgKl9yZXF1ZXN0IC8gKl9yZXNwb25zZSBtZXRob2RzIGdldCBjYWxsZWQgYXBwcm9wcmlhdGVseQogICAgICAgICBvID0gT3BlbmVyRGlyZWN0b3IoKQpAQCAtNjAyLDEwICs2MTYsMzAgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYXJnc1sxXSBpcyBOb25lIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoYXJnc1sxXSwgTW9ja1Jlc3BvbnNlKSkKIAorICAgIGRlZiB0ZXN0X21ldGhvZF9kZXByZWNhdGlvbnMoc2VsZik6CisgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgcmVxLmFkZF9kYXRhKCJkYXRhIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICByZXEuZ2V0X2RhdGEoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHJlcS5oYXNfZGF0YSgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgcmVxLmdldF9ob3N0KCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICByZXEuZ2V0X3NlbGVjdG9yKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICByZXEuaXNfdW52ZXJpZmlhYmxlKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICByZXEuZ2V0X29yaWdpbl9yZXFfaG9zdCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgcmVxLmdldF90eXBlKCkKKwogCiBkZWYgc2FuZXBhdGhuYW1lMnVybChwYXRoKToKICAgICB0cnk6Ci0gICAgICAgIHBhdGguZW5jb2RlKCJ1dGY4IikKKyAgICAgICAgcGF0aC5lbmNvZGUoInV0Zi04IikKICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgicGF0aCBpcyBub3QgZW5jb2RhYmxlIHRvIHV0ZjgiKQogICAgIHVybHBhdGggPSB1cmxsaWIucmVxdWVzdC5wYXRobmFtZTJ1cmwocGF0aCkKQEAgLTk1Nyw4ICs5OTEsOCBAQAogICAgICAgICBuZXdyZXEgPSBoLmh0dHBfcmVxdWVzdChyZXEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoY2ouYWNoX3JlcSwgcmVxKQogICAgICAgICBzZWxmLmFzc2VydElzKGNqLmFjaF9yZXEsIG5ld3JlcSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X29yaWdpbl9yZXFfaG9zdCgpLCAiZXhhbXBsZS5jb20iKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlcS5pc191bnZlcmlmaWFibGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEub3JpZ2luX3JlcV9ob3N0LCAiZXhhbXBsZS5jb20iKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlcS51bnZlcmlmaWFibGUpCiAgICAgICAgIG5ld3IgPSBoLmh0dHBfcmVzcG9uc2UocmVxLCByKQogICAgICAgICBzZWxmLmFzc2VydElzKGNqLmVjX3JlcSwgcmVxKQogICAgICAgICBzZWxmLmFzc2VydElzKGNqLmVjX3IsIHIpCkBAIC05OTAsNyArMTAyNCw3IEBACiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG8ucmVxLmdldF9tZXRob2QoKSwgIkdFVCIpCiAgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG8ucmVxLmhhc19kYXRhKCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoby5yZXEuZGF0YSkKIAogICAgICAgICAgICAgICAgICMgbm93IGl0J3MgYSBHRVQsIHRoZXJlIHNob3VsZCBub3QgYmUgaGVhZGVycyByZWdhcmRpbmcgY29udGVudAogICAgICAgICAgICAgICAgICMgKHBvc3NpYmx5IGRyYWdnZWQgZnJvbSBiZWZvcmUgYmVpbmcgYSBQT1NUKQpAQCAtMTEwNiw5ICsxMTQwLDkgQEAKICAgICAgICAgaGFuZGxlcnMgPSBhZGRfb3JkZXJlZF9tb2NrX2hhbmRsZXJzKG8sIG1ldGhfc3BlYykKIAogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vYWNtZS5leGFtcGxlLmNvbS8iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAiYWNtZS5leGFtcGxlLmNvbSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJhY21lLmV4YW1wbGUuY29tIikKICAgICAgICAgciA9IG8ub3BlbihyZXEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJwcm94eS5leGFtcGxlLmNvbTozMTI4IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInByb3h5LmV4YW1wbGUuY29tOjMxMjgiKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyhoYW5kbGVyc1swXSwgImh0dHBfb3BlbiIpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbdHVwWzA6Ml0gZm9yIHR1cCBpbiBvLmNhbGxzXSkKQEAgLTExMTksMTMgKzExNTMsMTMgQEAKICAgICAgICAgcGggPSB1cmxsaWIucmVxdWVzdC5Qcm94eUhhbmRsZXIoZGljdChodHRwPSJwcm94eS5leGFtcGxlLmNvbSIpKQogICAgICAgICBvLmFkZF9oYW5kbGVyKHBoKQogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnBlcmwub3JnLyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJ3d3cucGVybC5vcmciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAid3d3LnBlcmwub3JnIikKICAgICAgICAgciA9IG8ub3BlbihyZXEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJwcm94eS5leGFtcGxlLmNvbSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJwcm94eS5leGFtcGxlLmNvbSIpCiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJ3d3cucHl0aG9uLm9yZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJ3d3cucHl0aG9uLm9yZyIpCiAgICAgICAgIHIgPSBvLm9wZW4ocmVxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAid3d3LnB5dGhvbi5vcmciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAid3d3LnB5dGhvbi5vcmciKQogICAgICAgICBkZWwgb3MuZW52aXJvblsnbm9fcHJveHknXQogCiAgICAgZGVmIHRlc3RfcHJveHlfbm9fcHJveHlfYWxsKHNlbGYpOgpAQCAtMTEzNCw5ICsxMTY4LDkgQEAKICAgICAgICAgcGggPSB1cmxsaWIucmVxdWVzdC5Qcm94eUhhbmRsZXIoZGljdChodHRwPSJwcm94eS5leGFtcGxlLmNvbSIpKQogICAgICAgICBvLmFkZF9oYW5kbGVyKHBoKQogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmciKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAid3d3LnB5dGhvbi5vcmciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAid3d3LnB5dGhvbi5vcmciKQogICAgICAgICByID0gby5vcGVuKHJlcSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInd3dy5weXRob24ub3JnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInd3dy5weXRob24ub3JnIikKICAgICAgICAgZGVsIG9zLmVudmlyb25bJ25vX3Byb3h5J10KIAogCkBAIC0xMTUwLDkgKzExODQsOSBAQAogICAgICAgICBoYW5kbGVycyA9IGFkZF9vcmRlcmVkX21vY2tfaGFuZGxlcnMobywgbWV0aF9zcGVjKQogCiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tLyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJ3d3cuZXhhbXBsZS5jb20iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAid3d3LmV4YW1wbGUuY29tIikKICAgICAgICAgciA9IG8ub3BlbihyZXEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJwcm94eS5leGFtcGxlLmNvbTozMTI4IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInByb3h5LmV4YW1wbGUuY29tOjMxMjgiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoaGFuZGxlcnNbMF0sICJodHRwc19vcGVuIildLAogICAgICAgICAgICAgICAgICAgICAgICAgIFt0dXBbMDoyXSBmb3IgdHVwIGluIG8uY2FsbHNdKQogCkBAIC0xMTY1LDcgKzExOTksNyBAQAogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwczovL3d3dy5leGFtcGxlLmNvbS8iKQogICAgICAgICByZXEuYWRkX2hlYWRlcigiUHJveHktQXV0aG9yaXphdGlvbiIsIkZvb0JhciIpCiAgICAgICAgIHJlcS5hZGRfaGVhZGVyKCJVc2VyLUFnZW50IiwiR3JhaWwiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAid3d3LmV4YW1wbGUuY29tIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInd3dy5leGFtcGxlLmNvbSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlcS5fdHVubmVsX2hvc3QpCiAgICAgICAgIHIgPSBvLm9wZW4ocmVxKQogICAgICAgICAjIFZlcmlmeSBQcm94eS1BdXRob3JpemF0aW9uIGdldHMgdHVubmVsZWQgdG8gcmVxdWVzdC4KQEAgLTExNzYsOSArMTIxMCwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCgiVXNlci1BZ2VudCIsIkdyYWlsIiksCiAgICAgICAgICAgICAgICAgICAgICAgaHR0cHNfaGFuZGxlci5odHRwY29ubi5yZXFfaGVhZGVycykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmVxLl90dW5uZWxfaG9zdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInByb3h5LmV4YW1wbGUuY29tOjMxMjgiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAicHJveHkuZXhhbXBsZS5jb206MzEyOCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9oZWFkZXIoIlByb3h5LWF1dGhvcml6YXRpb24iKSwiRm9vQmFyIikKIAorICAgICMgVE9ETzogVGhpcyBzaG91bGQgYmUgb25seSBmb3IgT1NYCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nLCAib25seSByZWxldmFudCBmb3IgT1NYIikKICAgICBkZWYgdGVzdF9vc3hfcHJveHlfYnlwYXNzKHNlbGYpOgogICAgICAgICBieXBhc3MgPSB7CiAgICAgICAgICAgICAnZXhjbHVkZV9zaW1wbGUnOiBGYWxzZSwKQEAgLTEyOTgsNiArMTMzNCwyNiBAQAogICAgICAgICAjIF90ZXN0X2Jhc2ljX2F1dGggY2FsbGVkIC5vcGVuKCkgdHdpY2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlbmVyLnJlY29yZGVkLCBbImRpZ2VzdCIsICJiYXNpYyJdKjIpCiAKKyAgICBkZWYgdGVzdF91bnN1cHBvcnRlZF9hdXRoX2RpZ2VzdF9oYW5kbGVyKHNlbGYpOgorICAgICAgICBvcGVuZXIgPSBPcGVuZXJEaXJlY3RvcigpCisgICAgICAgICMgV2hpbGUgdXNpbmcgRGlnZXN0QXV0aEhhbmRsZXIKKyAgICAgICAgZGlnZXN0X2F1dGhfaGFuZGxlciA9IHVybGxpYi5yZXF1ZXN0LkhUVFBEaWdlc3RBdXRoSGFuZGxlcihOb25lKQorICAgICAgICBodHRwX2hhbmRsZXIgPSBNb2NrSFRUUEhhbmRsZXIoCisgICAgICAgICAgICA0MDEsICdXV1ctQXV0aGVudGljYXRlOiBLZXJiZXJvc1xyXG5cclxuJykKKyAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGRpZ2VzdF9hdXRoX2hhbmRsZXIpCisgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihodHRwX2hhbmRsZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3Isb3BlbmVyLm9wZW4sImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKQorCisgICAgZGVmIHRlc3RfdW5zdXBwb3J0ZWRfYXV0aF9iYXNpY19oYW5kbGVyKHNlbGYpOgorICAgICAgICAjIFdoaWxlIHVzaW5nIEJhc2ljQXV0aEhhbmRsZXIKKyAgICAgICAgb3BlbmVyID0gT3BlbmVyRGlyZWN0b3IoKQorICAgICAgICBiYXNpY19hdXRoX2hhbmRsZXIgPSB1cmxsaWIucmVxdWVzdC5IVFRQQmFzaWNBdXRoSGFuZGxlcihOb25lKQorICAgICAgICBodHRwX2hhbmRsZXIgPSBNb2NrSFRUUEhhbmRsZXIoCisgICAgICAgICAgICA0MDEsICdXV1ctQXV0aGVudGljYXRlOiBOVExNXHJcblxyXG4nKQorICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoYmFzaWNfYXV0aF9oYW5kbGVyKQorICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoaHR0cF9oYW5kbGVyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLG9wZW5lci5vcGVuLCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIikKKwogICAgIGRlZiBfdGVzdF9iYXNpY19hdXRoKHNlbGYsIG9wZW5lciwgYXV0aF9oYW5kbGVyLCBhdXRoX2hlYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsbSwgaHR0cF9oYW5kbGVyLCBwYXNzd29yZF9tYW5hZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RfdXJsLCBwcm90ZWN0ZWRfdXJsKToKQEAgLTEzMzUsNiArMTM5MSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGh0dHBfaGFuZGxlci5yZXF1ZXN0cyksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaHR0cF9oYW5kbGVyLnJlcXVlc3RzWzBdLmhhc19oZWFkZXIoYXV0aF9oZWFkZXIpKQogCisKIGNsYXNzIE1pc2NUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9idWlsZF9vcGVuZXIoc2VsZik6CkBAIC0xMzkwLDExICsxNDQ3LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlBPU1QiLCBzZWxmLnBvc3QuZ2V0X21ldGhvZCgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJHRVQiLCBzZWxmLmdldC5nZXRfbWV0aG9kKCkpCiAKLSAgICBkZWYgdGVzdF9hZGRfZGF0YShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmdldC5oYXNfZGF0YSgpKQorICAgIGRlZiB0ZXN0X2RhdGEoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5nZXQuZGF0YSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiR0VUIiwgc2VsZi5nZXQuZ2V0X21ldGhvZCgpKQotICAgICAgICBzZWxmLmdldC5hZGRfZGF0YSgic3BhbSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmdldC5oYXNfZGF0YSgpKQorICAgICAgICBzZWxmLmdldC5kYXRhID0gInNwYW0iCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmdldC5kYXRhKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJQT1NUIiwgc2VsZi5nZXQuZ2V0X21ldGhvZCgpKQogCiAgICAgZGVmIHRlc3RfZ2V0X2Z1bGxfdXJsKHNlbGYpOgpAQCAtMTQwMiwzNiArMTQ1OSwzNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZ2V0LmdldF9mdWxsX3VybCgpKQogCiAgICAgZGVmIHRlc3Rfc2VsZWN0b3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIi9+amVyZW15LyIsIHNlbGYuZ2V0LmdldF9zZWxlY3RvcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIvfmplcmVteS8iLCBzZWxmLmdldC5zZWxlY3RvcikKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnLyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIi8iLCByZXEuZ2V0X3NlbGVjdG9yKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIi8iLCByZXEuc2VsZWN0b3IpCiAKICAgICBkZWYgdGVzdF9nZXRfdHlwZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiaHR0cCIsIHNlbGYuZ2V0LmdldF90eXBlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImh0dHAiLCBzZWxmLmdldC50eXBlKQogCiAgICAgZGVmIHRlc3RfZ2V0X2hvc3Qoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5weXRob24ub3JnIiwgc2VsZi5nZXQuZ2V0X2hvc3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgid3d3LnB5dGhvbi5vcmciLCBzZWxmLmdldC5ob3N0KQogCiAgICAgZGVmIHRlc3RfZ2V0X2hvc3RfdW5xdW90ZShzZWxmKToKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL3d3dy4lNzB5dGhvbi5vcmcvIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgid3d3LnB5dGhvbi5vcmciLCByZXEuZ2V0X2hvc3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgid3d3LnB5dGhvbi5vcmciLCByZXEuaG9zdCkKIAogICAgIGRlZiB0ZXN0X3Byb3h5KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZ2V0Lmhhc19wcm94eSgpKQogICAgICAgICBzZWxmLmdldC5zZXRfcHJveHkoInd3dy5wZXJsLm9yZyIsICJodHRwIikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZ2V0Lmhhc19wcm94eSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucHl0aG9uLm9yZyIsIHNlbGYuZ2V0LmdldF9vcmlnaW5fcmVxX2hvc3QoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgid3d3LnBlcmwub3JnIiwgc2VsZi5nZXQuZ2V0X2hvc3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgid3d3LnB5dGhvbi5vcmciLCBzZWxmLmdldC5vcmlnaW5fcmVxX2hvc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5wZXJsLm9yZyIsIHNlbGYuZ2V0Lmhvc3QpCiAKICAgICBkZWYgdGVzdF93cmFwcGVkX3VybChzZWxmKToKICAgICAgICAgcmVxID0gUmVxdWVzdCgiPFVSTDpodHRwOi8vd3d3LnB5dGhvbi5vcmc+IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgid3d3LnB5dGhvbi5vcmciLCByZXEuZ2V0X2hvc3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgid3d3LnB5dGhvbi5vcmciLCByZXEuaG9zdCkKIAogICAgIGRlZiB0ZXN0X3VybF9mcmFnbWVudChzZWxmKToKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnLz9xcz1xdWVyeSNmcmFnbWVudD10cnVlIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiLz9xcz1xdWVyeSIsIHJlcS5nZXRfc2VsZWN0b3IoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiLz9xcz1xdWVyeSIsIHJlcS5zZWxlY3RvcikKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnLyNmdW49dHJ1ZSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIi8iLCByZXEuZ2V0X3NlbGVjdG9yKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIi8iLCByZXEuc2VsZWN0b3IpCiAKICAgICAgICAgIyBJc3N1ZSAxMTcwMzogZ2V0dXJsKCkgb21pdHMgZnJhZ21lbnQgaW4gdGhlIG9yaWdpbmFsIFVSTC4KICAgICAgICAgdXJsID0gJ2h0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvbGlicmFyeS91cmxsaWIyLmh0bWwjT0snCkBAIC0xNDQzLDcgKzE1MDAsOSBAQAogICAgICAgICBJc3N1ZSAxMzIxMSByZXZlYWxzIHRoYXQgSFRUUEVycm9yIGRpZG4ndCBpbXBsZW1lbnQgdGhlIFVSTEVycm9yCiAgICAgICAgIGludGVyZmFjZSBldmVuIHRob3VnaCBIVFRQRXJyb3IgaXMgYSBzdWJjbGFzcyBvZiBVUkxFcnJvci4KIAotICAgICAgICA+Pj4gZXJyID0gdXJsbGliLmVycm9yLkhUVFBFcnJvcihtc2c9J3NvbWV0aGluZyBiYWQgaGFwcGVuZWQnLCB1cmw9Tm9uZSwgY29kZT1Ob25lLCBoZHJzPU5vbmUsIGZwPU5vbmUpCisgICAgICAgID4+PiBtc2cgPSAnc29tZXRoaW5nIGJhZCBoYXBwZW5lZCcKKyAgICAgICAgPj4+IHVybCA9IGNvZGUgPSBoZHJzID0gZnAgPSBOb25lCisgICAgICAgID4+PiBlcnIgPSB1cmxsaWIuZXJyb3IuSFRUUEVycm9yKHVybCwgY29kZSwgbXNnLCBoZHJzLCBmcCkKICAgICAgICAgPj4+IGFzc2VydCBoYXNhdHRyKGVyciwgJ3JlYXNvbicpCiAgICAgICAgID4+PiBlcnIucmVhc29uCiAgICAgICAgICdzb21ldGhpbmcgYmFkIGhhcHBlbmVkJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5CmluZGV4IGYwNzQ3MWQuLjFlYmExNGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkKQEAgLTQ3Niw2ICs0NzYsMTMgQEAKICAgICAgICAgICAgIHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQogCisgICAgZGVmIHRlc3RfaHR0cHNfd2l0aF9jYWRlZmF1bHQoc2VsZik6CisgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X2h0dHBzX3NlcnZlcihjZXJ0ZmlsZT1DRVJUX2xvY2FsaG9zdCkKKyAgICAgICAgIyBTZWxmLXNpZ25lZCBjZXJ0IHNob3VsZCBmYWlsIHZlcmlmaWNhdGlvbiB3aXRoIHN5c3RlbSBjZXJ0aWZpY2F0ZSBzdG9yZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcikgYXMgY206CisgICAgICAgICAgICBzZWxmLnVybG9wZW4oImh0dHBzOi8vbG9jYWxob3N0OiVzL2JpemFycmUiICUgaGFuZGxlci5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNhZGVmYXVsdD1UcnVlKQorCiAgICAgZGVmIHRlc3Rfc2VuZGluZ19oZWFkZXJzKHNlbGYpOgogICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9zZXJ2ZXIoKQogICAgICAgICByZXEgPSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0KCJodHRwOi8vbG9jYWxob3N0OiVzLyIgJSBoYW5kbGVyLnBvcnQsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYjJuZXQucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjJuZXQucHkKaW5kZXggZTJiMWQ5NS4uN2YzYzkzYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIybmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMm5ldC5weQpAQCAtODMsMTIgKzgzLDEzIEBACiAgICAgZGVmIHRlc3RfY2xvc2Uoc2VsZik6CiAgICAgICAgICMgY2FsbGluZyAuY2xvc2UoKSBvbiB1cmxsaWIyJ3MgcmVzcG9uc2Ugb2JqZWN0cyBzaG91bGQgY2xvc2UgdGhlCiAgICAgICAgICMgdW5kZXJseWluZyBzb2NrZXQKLQotICAgICAgICByZXNwb25zZSA9IF91cmxvcGVuX3dpdGhfcmV0cnkoImh0dHA6Ly93d3cucHl0aG9uLm9yZy8iKQotICAgICAgICBzb2NrID0gcmVzcG9uc2UuZnAKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBzb2NrLmNsb3NlZCkKLSAgICAgICAgcmVzcG9uc2UuY2xvc2UoKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc29jay5jbG9zZWQpCisgICAgICAgIHVybCA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvIgorICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KHVybCk6CisgICAgICAgICAgICByZXNwb25zZSA9IF91cmxvcGVuX3dpdGhfcmV0cnkodXJsKQorICAgICAgICAgICAgc29jayA9IHJlc3BvbnNlLmZwCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IHNvY2suY2xvc2VkKQorICAgICAgICAgICAgcmVzcG9uc2UuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNvY2suY2xvc2VkKQogCiBjbGFzcyBPdGhlck5ldHdvcmtUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWJuZXQucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYm5ldC5weQppbmRleCAzODNiMmFmLi5kM2ZlNjlkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYm5ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYm5ldC5weQpAQCAtMTM3LDEwICsxMzcsMTAgQEAKICAgICAiIiJUZXN0cyB1cmxsaWIucmVxdWVzdC51cmxyZXRyaWV2ZSB1c2luZyB0aGUgbmV0d29yay4iIiIKIAogICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCi0gICAgZGVmIHVybHJldHJpZXZlKHNlbGYsICphcmdzKToKKyAgICBkZWYgdXJscmV0cmlldmUoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgcmVzb3VyY2UgPSBhcmdzWzBdCiAgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQocmVzb3VyY2UpOgotICAgICAgICAgICAgZmlsZV9sb2NhdGlvbiwgaW5mbyA9IHVybGxpYi5yZXF1ZXN0LnVybHJldHJpZXZlKCphcmdzKQorICAgICAgICAgICAgZmlsZV9sb2NhdGlvbiwgaW5mbyA9IHVybGxpYi5yZXF1ZXN0LnVybHJldHJpZXZlKCphcmdzLCAqKmt3YXJncykKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB5aWVsZCBmaWxlX2xvY2F0aW9uLCBpbmZvCiAgICAgICAgICAgICBmaW5hbGx5OgpAQCAtMTcwLDkgKzE3MCwxMCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluZm8sIGVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5mbyBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgZW1haWwubWVzc2FnZS5NZXNzYWdlIikKIAorICAgIGxvZ28gPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2NvbW11bml0eS9sb2dvcy9weXRob24tbG9nby1tYXN0ZXItdjMtVE0ucG5nIgorCiAgICAgZGVmIHRlc3RfZGF0YV9oZWFkZXIoc2VsZik6Ci0gICAgICAgIGxvZ28gPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2NvbW11bml0eS9sb2dvcy9weXRob24tbG9nby1tYXN0ZXItdjMtVE0ucG5nIgotICAgICAgICB3aXRoIHNlbGYudXJscmV0cmlldmUobG9nbykgYXMgKGZpbGVfbG9jYXRpb24sIGZpbGVoZWFkZXJzKToKKyAgICAgICAgd2l0aCBzZWxmLnVybHJldHJpZXZlKHNlbGYubG9nbykgYXMgKGZpbGVfbG9jYXRpb24sIGZpbGVoZWFkZXJzKToKICAgICAgICAgICAgIGRhdGV2YWx1ZSA9IGZpbGVoZWFkZXJzLmdldCgnRGF0ZScpCiAgICAgICAgICAgICBkYXRlZm9ybWF0ID0gJyVhLCAlZCAlYiAlWSAlSDolTTolUyBHTVQnCiAgICAgICAgICAgICB0cnk6CkBAIC0xODAsNiArMTgxLDMxIEBACiAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ0RhdGUgdmFsdWUgbm90IGluICVyIGZvcm1hdCcsIGRhdGVmb3JtYXQpCiAKKyAgICBkZWYgdGVzdF9yZXBvcnRob29rKHNlbGYpOgorICAgICAgICByZWNvcmRzID0gW10KKyAgICAgICAgZGVmIHJlY29yZGluZ19yZXBvcnRob29rKGJsb2NrcywgYmxvY2tfc2l6ZSwgdG90YWxfc2l6ZSk6CisgICAgICAgICAgICByZWNvcmRzLmFwcGVuZCgoYmxvY2tzLCBibG9ja19zaXplLCB0b3RhbF9zaXplKSkKKworICAgICAgICB3aXRoIHNlbGYudXJscmV0cmlldmUoc2VsZi5sb2dvLCByZXBvcnRob29rPXJlY29yZGluZ19yZXBvcnRob29rKSBhcyAoCisgICAgICAgICAgICAgICAgZmlsZV9sb2NhdGlvbiwgZmlsZWhlYWRlcnMpOgorICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IGludChmaWxlaGVhZGVyc1snQ29udGVudC1MZW5ndGgnXSkKKworICAgICAgICByZWNvcmRzX3JlcHIgPSByZXByKHJlY29yZHMpICAjIEZvciB1c2UgaW4gZXJyb3IgbWVzc2FnZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4ocmVjb3JkcyksIDEsIG1zZz0iVGhlcmUgc2hvdWxkIGFsd2F5cyBiZSB0d28gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxzOyB0aGUgZmlyc3Qgb25lIGJlZm9yZSB0aGUgdHJhbnNmZXIgc3RhcnRzLiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3Jkc1swXVswXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHJlY29yZHNbMF1bMV0sIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9ImJsb2NrIHNpemUgY2FuJ3QgYmUgMCBpbiAlcyIgJSByZWNvcmRzX3JlcHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3Jkc1swXVsyXSwgZXhwZWN0ZWRfc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmRzWy0xXVsyXSwgZXhwZWN0ZWRfc2l6ZSkKKworICAgICAgICBibG9ja19zaXplcyA9IHtibG9ja19zaXplIGZvciBfLCBibG9ja19zaXplLCBfIGluIHJlY29yZHN9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoe3JlY29yZHNbMF1bMV19LCBibG9ja19zaXplcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9ImJsb2NrIHNpemVzIGluICVzIG11c3QgYmUgZXF1YWwiICUgcmVjb3Jkc19yZXByKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChyZWNvcmRzWy0xXVswXSpyZWNvcmRzWzBdWzFdLCBleHBlY3RlZF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9Im51bWJlciBvZiBibG9ja3MgKiBibG9jayBzaXplIG11c3QgYmUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgPj0gdG90YWwgc2l6ZSBpbiAlcyIgJSByZWNvcmRzX3JlcHIpCisKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucmVxdWlyZXMoJ25ldHdvcmsnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weSBiL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkKaW5kZXggODY4ZWQyNC4uNjM4MTA3MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5CkBAIC01Miw2ICs1MiwxMiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBzdHIoa2V5KSArICchISEnCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKFQoKDEsMikpKSksICIwISEhIikKIAorICAgIGRlZiB0ZXN0X3VzZXJsaXN0X2NvcHkoc2VsZik6CisgICAgICAgIHUgPSBzZWxmLnR5cGUydGVzdChbNiwgOCwgMSwgOSwgMV0pCisgICAgICAgIHYgPSB1LmNvcHkoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIHYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZSh1KSwgdHlwZSh2KSkKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFVzZXJMaXN0VGVzdCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91c2Vyc3RyaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF91c2Vyc3RyaW5nLnB5CmluZGV4IDdhOGI5MzIuLjcxZmNhYzIgMTAwNzU1Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXNlcnN0cmluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VzZXJzdHJpbmcucHkKQEAgLTMsNiArMyw3IEBACiAjIFVzZXJTdHJpbmcgaW5zdGFuY2VzIHNob3VsZCBiZWhhdmUgc2ltaWxhciB0byBidWlsdGluIHN0cmluZyBvYmplY3RzLgogCiBpbXBvcnQgc3RyaW5nCitpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgc3RyaW5nX3Rlc3RzCiAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJTdHJpbmcKQEAgLTEwLDYgKzExLDcgQEAKIGNsYXNzIFVzZXJTdHJpbmdUZXN0KAogICAgIHN0cmluZ190ZXN0cy5Db21tb25UZXN0LAogICAgIHN0cmluZ190ZXN0cy5NaXhpblN0clVuaWNvZGVVc2VyU3RyaW5nVGVzdCwKKyAgICB1bml0dGVzdC5UZXN0Q2FzZQogICAgICk6CiAKICAgICB0eXBlMnRlc3QgPSBVc2VyU3RyaW5nCkBAIC0xNywxMSArMTksMTEgQEAKICAgICAjIE92ZXJ3cml0ZSB0aGUgdGhyZWUgdGVzdGluZyBtZXRob2RzLCBiZWNhdXNlIFVzZXJTdHJpbmcKICAgICAjIGNhbid0IGNvcGUgd2l0aCBhcmd1bWVudHMgcHJvcGFnYXRlZCB0byBVc2VyU3RyaW5nCiAgICAgIyAoYW5kIHdlIGRvbid0IHRlc3Qgd2l0aCBzdWJjbGFzc2VzKQotICAgIGRlZiBjaGVja2VxdWFsKHNlbGYsIHJlc3VsdCwgb2JqZWN0LCBtZXRob2RuYW1lLCAqYXJncyk6CisgICAgZGVmIGNoZWNrZXF1YWwoc2VsZiwgcmVzdWx0LCBvYmplY3QsIG1ldGhvZG5hbWUsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIHJlc3VsdCA9IHNlbGYuZml4dHlwZShyZXN1bHQpCiAgICAgICAgIG9iamVjdCA9IHNlbGYuZml4dHlwZShvYmplY3QpCiAgICAgICAgICMgd2UgZG9uJ3QgZml4IHRoZSBhcmd1bWVudHMsIGJlY2F1c2UgVXNlclN0cmluZyBjYW4ndCBjb3BlIHdpdGggaXQKLSAgICAgICAgcmVhbHJlc3VsdCA9IGdldGF0dHIob2JqZWN0LCBtZXRob2RuYW1lKSgqYXJncykKKyAgICAgICAgcmVhbHJlc3VsdCA9IGdldGF0dHIob2JqZWN0LCBtZXRob2RuYW1lKSgqYXJncywgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICByZXN1bHQsCiAgICAgICAgICAgICByZWFscmVzdWx0CkBAIC00Miw4ICs0NCw1IEBACiAgICAgICAgIGdldGF0dHIob2JqZWN0LCBtZXRob2RuYW1lKSgqYXJncykKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVXNlclN0cmluZ1Rlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXVpZC5weSBiL0xpYi90ZXN0L3Rlc3RfdXVpZC5weQppbmRleCA0M2ZhNjU2Li43YmM1OWVkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3V1aWQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91dWlkLnB5CkBAIC00NzEsMTQgKzQ3MSwxNCBAQAogICAgICAgICBpZiBwaWQgPT0gMDoKICAgICAgICAgICAgIG9zLmNsb3NlKGZkc1swXSkKICAgICAgICAgICAgIHZhbHVlID0gdXVpZC51dWlkNCgpCi0gICAgICAgICAgICBvcy53cml0ZShmZHNbMV0sIHZhbHVlLmhleC5lbmNvZGUoJ2xhdGluMScpKQorICAgICAgICAgICAgb3Mud3JpdGUoZmRzWzFdLCB2YWx1ZS5oZXguZW5jb2RlKCdsYXRpbi0xJykpCiAgICAgICAgICAgICBvcy5fZXhpdCgwKQogCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBvcy5jbG9zZShmZHNbMV0pCiAgICAgICAgICAgICBwYXJlbnRfdmFsdWUgPSB1dWlkLnV1aWQ0KCkuaGV4CiAgICAgICAgICAgICBvcy53YWl0cGlkKHBpZCwgMCkKLSAgICAgICAgICAgIGNoaWxkX3ZhbHVlID0gb3MucmVhZChmZHNbMF0sIDEwMCkuZGVjb2RlKCdsYXRpbjEnKQorICAgICAgICAgICAgY2hpbGRfdmFsdWUgPSBvcy5yZWFkKGZkc1swXSwgMTAwKS5kZWNvZGUoJ2xhdGluLTEnKQogCiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHBhcmVudF92YWx1ZSwgY2hpbGRfdmFsdWUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdmVudi5weSBiL0xpYi90ZXN0L3Rlc3RfdmVudi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Njk2ODQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF92ZW52LnB5CkBAIC0wLDAgKzEsMjAzIEBACisiIiIKK1Rlc3QgaGFybmVzcyBmb3IgdGhlIHZlbnYgbW9kdWxlLgorCitDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiBWaW5heSBTYWppcC4KK0xpY2Vuc2VkIHRvIHRoZSBQU0YgdW5kZXIgYSBjb250cmlidXRvciBhZ3JlZW1lbnQuCisiIiIKKworaW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChjYXB0dXJlZF9zdGRvdXQsIGNhcHR1cmVkX3N0ZGVyciwgcnVuX3VuaXR0ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5fc3ltbGluaykKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHZlbnYKKworY2xhc3MgQmFzZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIHZlbnYgdGVzdHMuIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZW52X2RpciA9IG9zLnBhdGgucmVhbHBhdGgodGVtcGZpbGUubWtkdGVtcCgpKQorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICBzZWxmLmJpbmRpciA9ICdTY3JpcHRzJworICAgICAgICAgICAgc2VsZi5weWRvY25hbWUgPSAncHlkb2MucHknCisgICAgICAgICAgICBzZWxmLmxpYiA9ICgnTGliJywpCisgICAgICAgICAgICBzZWxmLmluY2x1ZGUgPSAnSW5jbHVkZScKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYmluZGlyID0gJ2JpbicKKyAgICAgICAgICAgIHNlbGYucHlkb2NuYW1lID0gJ3B5ZG9jJworICAgICAgICAgICAgc2VsZi5saWIgPSAoJ2xpYicsICdweXRob24lcycgJSBzeXMudmVyc2lvbls6M10pCisgICAgICAgICAgICBzZWxmLmluY2x1ZGUgPSAnaW5jbHVkZScKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCAnX19QWVZFTlZfTEFVTkNIRVJfXycgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBvcy5lbnZpcm9uWydfX1BZVkVOVl9MQVVOQ0hFUl9fJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBzeXMuZXhlY3V0YWJsZQorICAgICAgICBzZWxmLmV4ZSA9IG9zLnBhdGguc3BsaXQoZXhlY3V0YWJsZSlbLTFdCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5lbnZfZGlyKQorCisgICAgZGVmIHJ1bl93aXRoX2NhcHR1cmUoc2VsZiwgZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZGVycigpIGFzIGVycm9yOgorICAgICAgICAgICAgICAgIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICByZXR1cm4gb3V0cHV0LmdldHZhbHVlKCksIGVycm9yLmdldHZhbHVlKCkKKworICAgIGRlZiBnZXRfZW52X2ZpbGUoc2VsZiwgKmFyZ3MpOgorICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYuZW52X2RpciwgKmFyZ3MpCisKKyAgICBkZWYgZ2V0X3RleHRfZmlsZV9jb250ZW50cyhzZWxmLCAqYXJncyk6CisgICAgICAgIHdpdGggb3BlbihzZWxmLmdldF9lbnZfZmlsZSgqYXJncyksICdyJykgYXMgZjoKKyAgICAgICAgICAgIHJlc3VsdCA9IGYucmVhZCgpCisgICAgICAgIHJldHVybiByZXN1bHQKKworY2xhc3MgQmFzaWNUZXN0KEJhc2VUZXN0KToKKyAgICAiIiJUZXN0IHZlbnYgbW9kdWxlIGZ1bmN0aW9uYWxpdHkuIiIiCisKKyAgICBkZWYgaXNkaXIoc2VsZiwgKmFyZ3MpOgorICAgICAgICBmbiA9IHNlbGYuZ2V0X2Vudl9maWxlKCphcmdzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2RpcihmbikpCisKKyAgICBkZWYgdGVzdF9kZWZhdWx0cyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhlIGNyZWF0ZSBmdW5jdGlvbiB3aXRoIGRlZmF1bHQgYXJndW1lbnRzLgorICAgICAgICAiIiIKKyAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmVudl9kaXIpCisgICAgICAgIHNlbGYucnVuX3dpdGhfY2FwdHVyZSh2ZW52LmNyZWF0ZSwgc2VsZi5lbnZfZGlyKQorICAgICAgICBzZWxmLmlzZGlyKHNlbGYuYmluZGlyKQorICAgICAgICBzZWxmLmlzZGlyKHNlbGYuaW5jbHVkZSkKKyAgICAgICAgc2VsZi5pc2Rpcigqc2VsZi5saWIpCisgICAgICAgIGRhdGEgPSBzZWxmLmdldF90ZXh0X2ZpbGVfY29udGVudHMoJ3B5dmVudi5jZmcnKQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kICgnX19QWVZFTlZfTEFVTkNIRVJfXycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gb3MuZW52aXJvbik6CisgICAgICAgICAgICBleGVjdXRhYmxlID0gIG9zLmVudmlyb25bJ19fUFlWRU5WX0xBVU5DSEVSX18nXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZXhlY3V0YWJsZSA9IHN5cy5leGVjdXRhYmxlCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmRpcm5hbWUoZXhlY3V0YWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignaG9tZSA9ICVzJyAlIHBhdGgsIGRhdGEpCisgICAgICAgIGRhdGEgPSBzZWxmLmdldF90ZXh0X2ZpbGVfY29udGVudHMoc2VsZi5iaW5kaXIsIHNlbGYucHlkb2NuYW1lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGF0YS5zdGFydHN3aXRoKCcjISVzJXMnICUgKHNlbGYuZW52X2Rpciwgb3Muc2VwKSkpCisgICAgICAgIGZuID0gc2VsZi5nZXRfZW52X2ZpbGUoc2VsZi5iaW5kaXIsIHNlbGYuZXhlKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZm4pOiAgIyBkaWFnbm9zdGljcyBmb3IgV2luZG93cyBidWlsZGJvdCBmYWlsdXJlcworICAgICAgICAgICAgYmQgPSBzZWxmLmdldF9lbnZfZmlsZShzZWxmLmJpbmRpcikKKyAgICAgICAgICAgIHByaW50KCdDb250ZW50cyBvZiAlcjonICUgYmQpCisgICAgICAgICAgICBwcmludCgnICAgICVyJyAlIG9zLmxpc3RkaXIoYmQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZm4pLCAnRmlsZSAlciBzaG91bGQgZXhpc3QuJyAlIGZuKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucHJlZml4ICE9IHN5cy5iYXNlX3ByZWZpeCwgJ1Rlc3Qgbm90IGFwcHJvcHJpYXRlICcKKyAgICAgICAgICAgICAgICAgICAgICdpbiBhIHZlbnYnKQorICAgIGRlZiB0ZXN0X3ByZWZpeGVzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBwcmVmaXggdmFsdWVzIGFyZSBhcyBleHBlY3RlZC4KKyAgICAgICAgIiIiCisgICAgICAgICNjaGVjayBvdXIgcHJlZml4ZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuYmFzZV9wcmVmaXgsIHN5cy5wcmVmaXgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmJhc2VfZXhlY19wcmVmaXgsIHN5cy5leGVjX3ByZWZpeCkKKworICAgICAgICAjIGNoZWNrIGEgdmVudidzIHByZWZpeGVzCisgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5lbnZfZGlyKQorICAgICAgICBzZWxmLnJ1bl93aXRoX2NhcHR1cmUodmVudi5jcmVhdGUsIHNlbGYuZW52X2RpcikKKyAgICAgICAgZW52cHkgPSBvcy5wYXRoLmpvaW4oc2VsZi5lbnZfZGlyLCBzZWxmLmJpbmRpciwgc2VsZi5leGUpCisgICAgICAgIGNtZCA9IFtlbnZweSwgJy1jJywgTm9uZV0KKyAgICAgICAgZm9yIHByZWZpeCwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgKCdwcmVmaXgnLCBzZWxmLmVudl9kaXIpLAorICAgICAgICAgICAgKCdwcmVmaXgnLCBzZWxmLmVudl9kaXIpLAorICAgICAgICAgICAgKCdiYXNlX3ByZWZpeCcsIHN5cy5wcmVmaXgpLAorICAgICAgICAgICAgKCdiYXNlX2V4ZWNfcHJlZml4Jywgc3lzLmV4ZWNfcHJlZml4KSk6CisgICAgICAgICAgICBjbWRbMl0gPSAnaW1wb3J0IHN5czsgcHJpbnQoc3lzLiVzKScgJSBwcmVmaXgKKyAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgICAgICBvdXQsIGVyciA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuc3RyaXAoKSwgZXhwZWN0ZWQuZW5jb2RlKCkpCisKKyAgICBkZWYgdGVzdF9vdmVyd3JpdGVfZXhpc3Rpbmcoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGNvbnRyb2wgb2Ygb3ZlcndyaXRpbmcgYW4gZXhpc3RpbmcgZW52aXJvbm1lbnQgZGlyZWN0b3J5LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdmVudi5jcmVhdGUsIHNlbGYuZW52X2RpcikKKyAgICAgICAgYnVpbGRlciA9IHZlbnYuRW52QnVpbGRlcihjbGVhcj1UcnVlKQorICAgICAgICBidWlsZGVyLmNyZWF0ZShzZWxmLmVudl9kaXIpCisKKyAgICBkZWYgdGVzdF91cGdyYWRlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB1cGdyYWRpbmcgYW4gZXhpc3RpbmcgZW52aXJvbm1lbnQgZGlyZWN0b3J5LgorICAgICAgICAiIiIKKyAgICAgICAgYnVpbGRlciA9IHZlbnYuRW52QnVpbGRlcih1cGdyYWRlPVRydWUpCisgICAgICAgIHNlbGYucnVuX3dpdGhfY2FwdHVyZShidWlsZGVyLmNyZWF0ZSwgc2VsZi5lbnZfZGlyKQorICAgICAgICBzZWxmLmlzZGlyKHNlbGYuYmluZGlyKQorICAgICAgICBzZWxmLmlzZGlyKHNlbGYuaW5jbHVkZSkKKyAgICAgICAgc2VsZi5pc2Rpcigqc2VsZi5saWIpCisgICAgICAgIGZuID0gc2VsZi5nZXRfZW52X2ZpbGUoc2VsZi5iaW5kaXIsIHNlbGYuZXhlKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZm4pOiAgIyBkaWFnbm9zdGljcyBmb3IgV2luZG93cyBidWlsZGJvdCBmYWlsdXJlcworICAgICAgICAgICAgYmQgPSBzZWxmLmdldF9lbnZfZmlsZShzZWxmLmJpbmRpcikKKyAgICAgICAgICAgIHByaW50KCdDb250ZW50cyBvZiAlcjonICUgYmQpCisgICAgICAgICAgICBwcmludCgnICAgICVyJyAlIG9zLmxpc3RkaXIoYmQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZm4pLCAnRmlsZSAlciBzaG91bGQgZXhpc3QuJyAlIGZuKQorCisgICAgZGVmIHRlc3RfaXNvbGF0aW9uKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBpc29sYXRpb24gZnJvbSBzeXN0ZW0gc2l0ZS1wYWNrYWdlcworICAgICAgICAiIiIKKyAgICAgICAgZm9yIHNzcCwgcyBpbiAoKFRydWUsICd0cnVlJyksIChGYWxzZSwgJ2ZhbHNlJykpOgorICAgICAgICAgICAgYnVpbGRlciA9IHZlbnYuRW52QnVpbGRlcihjbGVhcj1UcnVlLCBzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1zc3ApCisgICAgICAgICAgICBidWlsZGVyLmNyZWF0ZShzZWxmLmVudl9kaXIpCisgICAgICAgICAgICBkYXRhID0gc2VsZi5nZXRfdGV4dF9maWxlX2NvbnRlbnRzKCdweXZlbnYuY2ZnJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2luY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXMgPSAlc1xuJyAlIHMsIGRhdGEpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhjYW5fc3ltbGluaygpLCAnTmVlZHMgc3ltbGlua3MnKQorICAgIGRlZiB0ZXN0X3N5bWxpbmtpbmcoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHN5bWxpbmtpbmcgd29ya3MgYXMgZXhwZWN0ZWQKKyAgICAgICAgIiIiCisgICAgICAgIGZvciB1c2wgaW4gKEZhbHNlLCBUcnVlKToKKyAgICAgICAgICAgIGJ1aWxkZXIgPSB2ZW52LkVudkJ1aWxkZXIoY2xlYXI9VHJ1ZSwgc3ltbGlua3M9dXNsKQorICAgICAgICAgICAgYnVpbGRlci5jcmVhdGUoc2VsZi5lbnZfZGlyKQorICAgICAgICAgICAgZm4gPSBzZWxmLmdldF9lbnZfZmlsZShzZWxmLmJpbmRpciwgc2VsZi5leGUpCisgICAgICAgICAgICAjIERvbid0IHRlc3Qgd2hlbiBGYWxzZSwgYmVjYXVzZSBlLmcuICdweXRob24nIGlzIGFsd2F5cworICAgICAgICAgICAgIyBzeW1saW5rZWQgdG8gJ3B5dGhvbjMuMycgaW4gdGhlIGVudiwgZXZlbiB3aGVuIHN5bWxpbmtpbmcgaW4KKyAgICAgICAgICAgICMgZ2VuZXJhbCBpc24ndCB3YW50ZWQuCisgICAgICAgICAgICBpZiB1c2w6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKGZuKSkKKworICAgICMgSWYgYSB2ZW52IGlzIGNyZWF0ZWQgZnJvbSBhIHNvdXJjZSBidWlsZCBhbmQgdGhhdCB2ZW52IGlzIHVzZWQgdG8KKyAgICAjIHJ1biB0aGUgdGVzdCwgdGhlIHB5dmVudi5jZmcgaW4gdGhlIHZlbnYgY3JlYXRlZCBpbiB0aGUgdGVzdCB3aWxsCisgICAgIyBwb2ludCB0byB0aGUgdmVudiBiZWluZyB1c2VkIHRvIHJ1biB0aGUgdGVzdCwgYW5kIHdlIGxvc2UgdGhlIGxpbmsKKyAgICAjIHRvIHRoZSBzb3VyY2UgYnVpbGQgLSBzbyBQeXRob24gY2FuJ3QgaW5pdGlhbGlzZSBwcm9wZXJseS4KKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wcmVmaXggIT0gc3lzLmJhc2VfcHJlZml4LCAnVGVzdCBub3QgYXBwcm9wcmlhdGUgJworICAgICAgICAgICAgICAgICAgICAgJ2luIGEgdmVudicpCisgICAgZGVmIHRlc3RfZXhlY3V0YWJsZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgc3lzLmV4ZWN1dGFibGUgdmFsdWUgaXMgYXMgZXhwZWN0ZWQuCisgICAgICAgICIiIgorICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuZW52X2RpcikKKyAgICAgICAgc2VsZi5ydW5fd2l0aF9jYXB0dXJlKHZlbnYuY3JlYXRlLCBzZWxmLmVudl9kaXIpCisgICAgICAgIGVudnB5ID0gb3MucGF0aC5qb2luKG9zLnBhdGgucmVhbHBhdGgoc2VsZi5lbnZfZGlyKSwgc2VsZi5iaW5kaXIsIHNlbGYuZXhlKQorICAgICAgICBjbWQgPSBbZW52cHksICctYycsICdpbXBvcnQgc3lzOyBwcmludChzeXMuZXhlY3V0YWJsZSknXQorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIG91dCwgZXJyID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LnN0cmlwKCksIGVudnB5LmVuY29kZSgpKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoY2FuX3N5bWxpbmsoKSwgJ05lZWRzIHN5bWxpbmtzJykKKyAgICBkZWYgdGVzdF9leGVjdXRhYmxlX3N5bWxpbmtzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBzeXMuZXhlY3V0YWJsZSB2YWx1ZSBpcyBhcyBleHBlY3RlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5lbnZfZGlyKQorICAgICAgICBidWlsZGVyID0gdmVudi5FbnZCdWlsZGVyKGNsZWFyPVRydWUsIHN5bWxpbmtzPVRydWUpCisgICAgICAgIGJ1aWxkZXIuY3JlYXRlKHNlbGYuZW52X2RpcikKKyAgICAgICAgZW52cHkgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5yZWFscGF0aChzZWxmLmVudl9kaXIpLCBzZWxmLmJpbmRpciwgc2VsZi5leGUpCisgICAgICAgIGNtZCA9IFtlbnZweSwgJy1jJywgJ2ltcG9ydCBzeXM7IHByaW50KHN5cy5leGVjdXRhYmxlKSddCisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgb3V0LCBlcnIgPSBwLmNvbW11bmljYXRlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuc3RyaXAoKSwgZW52cHkuZW5jb2RlKCkpCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBydW5fdW5pdHRlc3QoQmFzaWNUZXN0KQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dhaXQzLnB5IGIvTGliL3Rlc3QvdGVzdF93YWl0My5weQppbmRleCA3ODZlNjBiLi5iZDA2YzhkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dhaXQzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2FpdDMucHkKQEAgLTE5LDEzICsxOSwxNiBAQAogCiBjbGFzcyBXYWl0M1Rlc3QoRm9ya1dhaXQpOgogICAgIGRlZiB3YWl0X2ltcGwoc2VsZiwgY3BpZCk6Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKDEwKToKKyAgICAgICAgIyBUaGlzIG1hbnkgaXRlcmF0aW9ucyBjYW4gYmUgcmVxdWlyZWQsIHNpbmNlIHNvbWUgcHJldmlvdXNseSBydW4KKyAgICAgICAgIyB0ZXN0cyAoZS5nLiB0ZXN0X2N0eXBlcykgY291bGQgaGF2ZSBzcGF3bmVkIGEgbG90IG9mIGNoaWxkcmVuCisgICAgICAgICMgdmVyeSBxdWlja2x5LgorICAgICAgICBmb3IgaSBpbiByYW5nZSgzMCk6CiAgICAgICAgICAgICAjIHdhaXQzKCkgc2hvdWxkbid0IGhhbmcsIGJ1dCBzb21lIG9mIHRoZSBidWlsZGJvdHMgc2VlbSB0byBoYW5nCiAgICAgICAgICAgICAjIGluIHRoZSBmb3JraW5nIHRlc3RzLiAgVGhpcyBpcyBhbiBhdHRlbXB0IHRvIGZpeCB0aGUgcHJvYmxlbS4KICAgICAgICAgICAgIHNwaWQsIHN0YXR1cywgcnVzYWdlID0gb3Mud2FpdDMob3MuV05PSEFORykKICAgICAgICAgICAgIGlmIHNwaWQgPT0gY3BpZDoKICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgdGltZS5zbGVlcCgxLjApCisgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwaWQsIGNwaWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCAiY2F1c2UgPSAlZCwgZXhpdCA9ICVkIiAlIChzdGF0dXMmMHhmZiwgc3RhdHVzPj44KSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MucHkgYi9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzLnB5CmluZGV4IDc5YmU4MzUuLjQ2NGZmNDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy5weQpAQCAtNDAsNyArNDAsNyBAQAogICAgICAgICBtb2R1bGUuZmlsdGVycyA9IG9yaWdpbmFsX2ZpbHRlcnMKIAogCi1jbGFzcyBCYXNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBCYXNlVGVzdDoKIAogICAgICIiIkJhc2ljIGJvb2trZWVwaW5nIHJlcXVpcmVkIGZvciB0ZXN0aW5nLiIiIgogCkBAIC02Myw3ICs2Myw3IEBACiAgICAgICAgIHN1cGVyKEJhc2VUZXN0LCBzZWxmKS50ZWFyRG93bigpCiAKIAotY2xhc3MgRmlsdGVyVGVzdHMob2JqZWN0KToKK2NsYXNzIEZpbHRlclRlc3RzKEJhc2VUZXN0KToKIAogICAgICIiIlRlc3RpbmcgdGhlIGZpbHRlcmluZyBmdW5jdGlvbmFsaXR5LiIiIgogCkBAIC0xODYsMTQgKzE4NiwxNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIod1stMV0ubWVzc2FnZSksIHRleHQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUod1stMV0uY2F0ZWdvcnkgaXMgVXNlcldhcm5pbmcpCiAKLWNsYXNzIENGaWx0ZXJUZXN0cyhCYXNlVGVzdCwgRmlsdGVyVGVzdHMpOgorY2xhc3MgQ0ZpbHRlclRlc3RzKEZpbHRlclRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gY193YXJuaW5ncwogCi1jbGFzcyBQeUZpbHRlclRlc3RzKEJhc2VUZXN0LCBGaWx0ZXJUZXN0cyk6CitjbGFzcyBQeUZpbHRlclRlc3RzKEZpbHRlclRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gcHlfd2FybmluZ3MKIAogCi1jbGFzcyBXYXJuVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgV2FyblRlc3RzKEJhc2VUZXN0KToKIAogICAgICIiIlRlc3Qgd2FybmluZ3Mud2FybigpIGFuZCB3YXJuaW5ncy53YXJuX2V4cGxpY2l0KCkuIiIiCiAKQEAgLTM2MCw3ICszNjAsNyBAQAogICAgICAgICAgICAgc2VsZi5tb2R1bGUud2FybihCYWRTdHJXYXJuaW5nKCkpCiAKIAotY2xhc3MgQ1dhcm5UZXN0cyhCYXNlVGVzdCwgV2FyblRlc3RzKToKK2NsYXNzIENXYXJuVGVzdHMoV2FyblRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gY193YXJuaW5ncwogCiAgICAgIyBBcyBhbiBlYXJseSBhZG9wdGVyLCB3ZSBzYW5pdHkgY2hlY2sgdGhlCkBAIC0zNjksNyArMzY5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcmlnaW5hbF93YXJuaW5ncyBpcyBzZWxmLm1vZHVsZSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKHNlbGYubW9kdWxlLndhcm4sICdfX2NvZGVfXycpKQogCi1jbGFzcyBQeVdhcm5UZXN0cyhCYXNlVGVzdCwgV2FyblRlc3RzKToKK2NsYXNzIFB5V2FyblRlc3RzKFdhcm5UZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIG1vZHVsZSA9IHB5X3dhcm5pbmdzCiAKICAgICAjIEFzIGFuIGVhcmx5IGFkb3B0ZXIsIHdlIHNhbml0eSBjaGVjayB0aGUKQEAgLTM3OSw3ICszNzksNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzZWxmLm1vZHVsZS53YXJuLCAnX19jb2RlX18nKSkKIAogCi1jbGFzcyBXQ21kTGluZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFdDbWRMaW5lVGVzdHMoQmFzZVRlc3QpOgogCiAgICAgZGVmIHRlc3RfaW1wcm9wZXJfaW5wdXQoc2VsZik6CiAgICAgICAgICMgVXNlcyB0aGUgcHJpdmF0ZSBfc2V0b3B0aW9uKCkgZnVuY3Rpb24gdG8gdGVzdCB0aGUgcGFyc2luZwpAQCAtNDEwLDE0ICs0MTAsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvdXQuc3RyaXAoKSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihiJ1J1bnRpbWVXYXJuaW5nJywgZXJyKQogCi1jbGFzcyBDV0NtZExpbmVUZXN0cyhCYXNlVGVzdCwgV0NtZExpbmVUZXN0cyk6CitjbGFzcyBDV0NtZExpbmVUZXN0cyhXQ21kTGluZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gY193YXJuaW5ncwogCi1jbGFzcyBQeVdDbWRMaW5lVGVzdHMoQmFzZVRlc3QsIFdDbWRMaW5lVGVzdHMpOgorY2xhc3MgUHlXQ21kTGluZVRlc3RzKFdDbWRMaW5lVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBweV93YXJuaW5ncwogCiAKLWNsYXNzIF9XYXJuaW5nc1Rlc3RzKEJhc2VUZXN0KToKK2NsYXNzIF9XYXJuaW5nc1Rlc3RzKEJhc2VUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAiIiJUZXN0cyBzcGVjaWZpYyB0byB0aGUgX3dhcm5pbmdzIG1vZHVsZS4iIiIKIApAQCAtNTEyLDEyICs1MTIsMTEgQEAKICAgICBkZWYgdGVzdF9zaG93d2FybmluZ19ub3RfY2FsbGFibGUoc2VsZik6CiAgICAgICAgIHdpdGggb3JpZ2luYWxfd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MobW9kdWxlPXNlbGYubW9kdWxlKToKICAgICAgICAgICAgIHNlbGYubW9kdWxlLmZpbHRlcndhcm5pbmdzKCJhbHdheXMiLCBjYXRlZ29yeT1Vc2VyV2FybmluZykKLSAgICAgICAgICAgIG9sZF9zaG93d2FybmluZyA9IHNlbGYubW9kdWxlLnNob3d3YXJuaW5nCisgICAgICAgICAgICBzZWxmLm1vZHVsZS5zaG93d2FybmluZyA9IHByaW50CisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfb3V0cHV0KCdzdGRvdXQnKToKKyAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuKCdXYXJuaW5nIScpCiAgICAgICAgICAgICBzZWxmLm1vZHVsZS5zaG93d2FybmluZyA9IDIzCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLm1vZHVsZS53YXJuLCAiV2FybmluZyEiKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZS5zaG93d2FybmluZyA9IG9sZF9zaG93d2FybmluZworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLm1vZHVsZS53YXJuLCAiV2FybmluZyEiKQogCiAgICAgZGVmIHRlc3Rfc2hvd193YXJuaW5nX291dHB1dChzZWxmKToKICAgICAgICAgIyBXaXRoIHNob3dhcm5pbmcoKSBtaXNzaW5nLCBtYWtlIHN1cmUgdGhhdCBvdXRwdXQgaXMgb2theS4KQEAgLTU0NywxNSArNTQ2LDE4IEBACiAgICAgICAgIGdsb2JhbHNfZGljdCA9IGdsb2JhbHMoKQogICAgICAgICBvbGRmaWxlID0gZ2xvYmFsc19kaWN0WydfX2ZpbGVfXyddCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGggb3JpZ2luYWxfd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MobW9kdWxlPXNlbGYubW9kdWxlKSBhcyB3OgorICAgICAgICAgICAgY2F0Y2ggPSBvcmlnaW5hbF93YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlPXNlbGYubW9kdWxlKQorICAgICAgICAgICAgd2l0aCBjYXRjaCBhcyB3OgogICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlLmZpbHRlcndhcm5pbmdzKCJhbHdheXMiLCBjYXRlZ29yeT1Vc2VyV2FybmluZykKICAgICAgICAgICAgICAgICBnbG9iYWxzX2RpY3RbJ19fZmlsZV9fJ10gPSBOb25lCiAgICAgICAgICAgICAgICAgb3JpZ2luYWxfd2FybmluZ3Mud2FybigndGVzdCcsIFVzZXJXYXJuaW5nKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4odykpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBnbG9iYWxzX2RpY3RbJ19fZmlsZV9fJ10gPSBvbGRmaWxlCiAKIAotY2xhc3MgV2FybmluZ3NEaXNwbGF5VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgV2FybmluZ3NEaXNwbGF5VGVzdHMoQmFzZVRlc3QpOgogCiAgICAgIiIiVGVzdCB0aGUgZGlzcGxheWluZyBvZiB3YXJuaW5ncyBhbmQgdGhlIGFiaWxpdHkgdG8gb3ZlcmxvYWQgZnVuY3Rpb25zCiAgICAgcmVsYXRlZCB0byBkaXNwbGF5aW5nIHdhcm5pbmdzLiIiIgpAQCAtNTk5LDEwICs2MDEsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9vYmplY3QsIGV4cGVjdGVkX2ZpbGVfbGluZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3QsIGZpbGVfb2JqZWN0LmdldHZhbHVlKCkpCiAKLWNsYXNzIENXYXJuaW5nc0Rpc3BsYXlUZXN0cyhCYXNlVGVzdCwgV2FybmluZ3NEaXNwbGF5VGVzdHMpOgorY2xhc3MgQ1dhcm5pbmdzRGlzcGxheVRlc3RzKFdhcm5pbmdzRGlzcGxheVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gY193YXJuaW5ncwogCi1jbGFzcyBQeVdhcm5pbmdzRGlzcGxheVRlc3RzKEJhc2VUZXN0LCBXYXJuaW5nc0Rpc3BsYXlUZXN0cyk6CitjbGFzcyBQeVdhcm5pbmdzRGlzcGxheVRlc3RzKFdhcm5pbmdzRGlzcGxheVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gcHlfd2FybmluZ3MKIAogCkBAIC03MDgsMTAgKzcxMCwxMCBAQAogICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnZm9vJywgUnVudGltZVdhcm5pbmcpKToKICAgICAgICAgICAgICAgICB3bW9kLndhcm4oImZvbyIpCiAKLWNsYXNzIENDYXRjaFdhcm5pbmdUZXN0cyhDYXRjaFdhcm5pbmdUZXN0cyk6CitjbGFzcyBDQ2F0Y2hXYXJuaW5nVGVzdHMoQ2F0Y2hXYXJuaW5nVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBjX3dhcm5pbmdzCiAKLWNsYXNzIFB5Q2F0Y2hXYXJuaW5nVGVzdHMoQ2F0Y2hXYXJuaW5nVGVzdHMpOgorY2xhc3MgUHlDYXRjaFdhcm5pbmdUZXN0cyhDYXRjaFdhcm5pbmdUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIG1vZHVsZSA9IHB5X3dhcm5pbmdzCiAKIApAQCAtNzYwLDEwICs3NjIsMTAgQEAKICAgICAgICAgICAgICAgICAiWydpZ25vcmU6RGVwcmVjYWNpw7NuV2FybmluZyddIi5lbmNvZGUoJ3V0Zi04JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC53YWl0KCksIDApCiAKLWNsYXNzIENFbnZpcm9ubWVudFZhcmlhYmxlVGVzdHMoRW52aXJvbm1lbnRWYXJpYWJsZVRlc3RzKToKK2NsYXNzIENFbnZpcm9ubWVudFZhcmlhYmxlVGVzdHMoRW52aXJvbm1lbnRWYXJpYWJsZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gY193YXJuaW5ncwogCi1jbGFzcyBQeUVudmlyb25tZW50VmFyaWFibGVUZXN0cyhFbnZpcm9ubWVudFZhcmlhYmxlVGVzdHMpOgorY2xhc3MgUHlFbnZpcm9ubWVudFZhcmlhYmxlVGVzdHMoRW52aXJvbm1lbnRWYXJpYWJsZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gcHlfd2FybmluZ3MKIAogCkBAIC03ODYsMjAgKzc4OCwxMiBAQAogICAgICAgICAgICAgICAgIGVudj1lbnYpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldGNvZGUsIDApCiAKLWRlZiB0ZXN0X21haW4oKToKKworZGVmIHNldFVwTW9kdWxlKCk6CiAgICAgcHlfd2FybmluZ3Mub25jZXJlZ2lzdHJ5LmNsZWFyKCkKICAgICBjX3dhcm5pbmdzLm9uY2VyZWdpc3RyeS5jbGVhcigpCi0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCi0gICAgICAgIENGaWx0ZXJUZXN0cywgUHlGaWx0ZXJUZXN0cywKLSAgICAgICAgQ1dhcm5UZXN0cywgUHlXYXJuVGVzdHMsCi0gICAgICAgIENXQ21kTGluZVRlc3RzLCBQeVdDbWRMaW5lVGVzdHMsCi0gICAgICAgIF9XYXJuaW5nc1Rlc3RzLAotICAgICAgICBDV2FybmluZ3NEaXNwbGF5VGVzdHMsIFB5V2FybmluZ3NEaXNwbGF5VGVzdHMsCi0gICAgICAgIENDYXRjaFdhcm5pbmdUZXN0cywgUHlDYXRjaFdhcm5pbmdUZXN0cywKLSAgICAgICAgQ0Vudmlyb25tZW50VmFyaWFibGVUZXN0cywgUHlFbnZpcm9ubWVudFZhcmlhYmxlVGVzdHMsCi0gICAgICAgIEJvb3RzdHJhcFRlc3QsCi0gICAgKQogCit0ZWFyRG93bk1vZHVsZSA9IHNldFVwTW9kdWxlCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2ViYnJvd3Nlci5weSBiL0xpYi90ZXN0L3Rlc3Rfd2ViYnJvd3Nlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGI5MzY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF93ZWJicm93c2VyLnB5CkBAIC0wLDAgKzEsMTkyIEBACitpbXBvcnQgd2ViYnJvd3NlcgoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3VicHJvY2VzcworZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jaworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKworVVJMID0gJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb20nCitDTURfTkFNRSA9ICd0ZXN0JworCisKK2NsYXNzIFBvcGVuTW9jayhtb2NrLk1hZ2ljTW9jayk6CisKKyAgICBkZWYgcG9sbChzZWxmKToKKyAgICAgICAgcmV0dXJuIDAKKworICAgIGRlZiB3YWl0KHNlbGYsIHNlY29uZHM9Tm9uZSk6CisgICAgICAgIHJldHVybiAwCisKKworY2xhc3MgQ29tbWFuZFRlc3RNaXhpbjoKKworICAgIGRlZiBfdGVzdChzZWxmLCBtZXRoLCAqLCBhcmdzPVtVUkxdLCBrdz17fSwgb3B0aW9ucywgYXJndW1lbnRzKToKKyAgICAgICAgIiIiR2l2ZW4gYSB3ZWIgYnJvd3NlciBpbnN0YW5jZSBtZXRob2QgbmFtZSBhbG9uZyB3aXRoIGFyZ3VtZW50cyBhbmQKKyAgICAgICAga2V5d29yZHMgZm9yIHNhbWUgKHdoaWNoIGRlZmF1bHRzIHRvIHRoZSBzaW5nbGUgYXJndW1lbnQgVVJMKSwgY3JlYXRlcworICAgICAgICBhIGJyb3dzZXIgaW5zdGFuY2UgZnJvbSB0aGUgY2xhc3MgcG9pbnRlZCB0byBieSBzZWxmLmJyb3dzZXIsIGNhbGxzIHRoZQorICAgICAgICBpbmRpY2F0ZWQgaW5zdGFuY2UgbWV0aG9kIHdpdGggdGhlIGluZGljYXRlZCBhcmd1bWVudHMsIGFuZCBjb21wYXJlcworICAgICAgICB0aGUgcmVzdWx0aW5nIG9wdGlvbnMgYW5kIGFyZ3VtZW50cyBwYXNzZWQgdG8gUG9wZW4gYnkgdGhlIGJyb3dzZXIKKyAgICAgICAgaW5zdGFuY2UgYWdhaW5zdCB0aGUgJ29wdGlvbnMnIGFuZCAnYXJncycgbGlzdHMuICBPcHRpb25zIGFyZSBjb21wYXJlZAorICAgICAgICBpbiBhIHBvc2l0aW9uIGluZGVwZW5kZW50IGZhc2hpb24sIGFuZCB0aGUgYXJndW1lbnRzIGFyZSBjb21wYXJlZCBpbgorICAgICAgICBzZXF1ZW5jZSBvcmRlciB0byB3aGF0ZXZlciBpcyBsZWZ0IG92ZXIgYWZ0ZXIgcmVtb3ZpbmcgdGhlIG9wdGlvbnMuCisKKyAgICAgICAgIiIiCisgICAgICAgIHBvcGVuID0gUG9wZW5Nb2NrKCkKKyAgICAgICAgc3VwcG9ydC5wYXRjaChzZWxmLCBzdWJwcm9jZXNzLCAnUG9wZW4nLCBwb3BlbikKKyAgICAgICAgYnJvd3NlciA9IHNlbGYuYnJvd3Nlcl9jbGFzcyhuYW1lPUNNRF9OQU1FKQorICAgICAgICBnZXRhdHRyKGJyb3dzZXIsIG1ldGgpKCphcmdzLCAqKmt3KQorICAgICAgICBwb3Blbl9hcmdzID0gc3VicHJvY2Vzcy5Qb3Blbi5jYWxsX2FyZ3NbMF1bMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3Blbl9hcmdzWzBdLCBDTURfTkFNRSkKKyAgICAgICAgcG9wZW5fYXJncy5wb3AoMCkKKyAgICAgICAgZm9yIG9wdGlvbiBpbiBvcHRpb25zOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihvcHRpb24sIHBvcGVuX2FyZ3MpCisgICAgICAgICAgICBwb3Blbl9hcmdzLnBvcChwb3Blbl9hcmdzLmluZGV4KG9wdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9wZW5fYXJncywgYXJndW1lbnRzKQorCisKK2NsYXNzIEdlbmVyaWNCcm93c2VyQ29tbWFuZFRlc3QoQ29tbWFuZFRlc3RNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgYnJvd3Nlcl9jbGFzcyA9IHdlYmJyb3dzZXIuR2VuZXJpY0Jyb3dzZXIKKworICAgIGRlZiB0ZXN0X29wZW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9W10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVtVUkxdKQorCisKK2NsYXNzIEJhY2tncm91bmRCcm93c2VyQ29tbWFuZFRlc3QoQ29tbWFuZFRlc3RNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgYnJvd3Nlcl9jbGFzcyA9IHdlYmJyb3dzZXIuQmFja2dyb3VuZEJyb3dzZXIKKworICAgIGRlZiB0ZXN0X29wZW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9W10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVtVUkxdKQorCisKK2NsYXNzIENocm9tZUNvbW1hbmRUZXN0KENvbW1hbmRUZXN0TWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGJyb3dzZXJfY2xhc3MgPSB3ZWJicm93c2VyLkNocm9tZQorCisgICAgZGVmIHRlc3Rfb3BlbihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9W1VSTF0pCisKKyAgICBkZWYgdGVzdF9vcGVuX3dpdGhfYXV0b3JhaXNlX2ZhbHNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuJywga3c9ZGljdChhdXRvcmFpc2U9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9W10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVtVUkxdKQorCisgICAgZGVmIHRlc3Rfb3Blbl9uZXcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW5fbmV3JywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLS1uZXctd2luZG93J10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVtVUkxdKQorCisgICAgZGVmIHRlc3Rfb3Blbl9uZXdfdGFiKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuX25ld190YWInLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9W10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVtVUkxdKQorCisKK2NsYXNzIE1vemlsbGFDb21tYW5kVGVzdChDb21tYW5kVGVzdE1peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBicm93c2VyX2NsYXNzID0gd2ViYnJvd3Nlci5Nb3ppbGxhCisKKyAgICBkZWYgdGVzdF9vcGVuKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuJywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLXJhaXNlJywgJy1yZW1vdGUnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9KScuZm9ybWF0KFVSTCldKQorCisgICAgZGVmIHRlc3Rfb3Blbl93aXRoX2F1dG9yYWlzZV9mYWxzZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsIGt3PWRpY3QoYXV0b3JhaXNlPUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLW5vcmFpc2UnLCAnLXJlbW90ZSddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bJ29wZW5VUkwoe30pJy5mb3JtYXQoVVJMKV0pCisKKyAgICBkZWYgdGVzdF9vcGVuX25ldyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3Blbl9uZXcnLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctcmFpc2UnLCAnLXJlbW90ZSddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bJ29wZW5VUkwoe30sbmV3LXdpbmRvdyknLmZvcm1hdChVUkwpXSkKKworICAgIGRlZiB0ZXN0X29wZW5fbmV3X3RhYihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3Blbl9uZXdfdGFiJywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLXJhaXNlJywgJy1yZW1vdGUnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9LG5ldy10YWIpJy5mb3JtYXQoVVJMKV0pCisKKworY2xhc3MgR2FsZW9uQ29tbWFuZFRlc3QoQ29tbWFuZFRlc3RNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgYnJvd3Nlcl9jbGFzcyA9IHdlYmJyb3dzZXIuR2FsZW9uCisKKyAgICBkZWYgdGVzdF9vcGVuKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuJywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLW4nXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9W1VSTF0pCisKKyAgICBkZWYgdGVzdF9vcGVuX3dpdGhfYXV0b3JhaXNlX2ZhbHNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuJywga3c9ZGljdChhdXRvcmFpc2U9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9Wyctbm9yYWlzZScsICctbiddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bVVJMXSkKKworICAgIGRlZiB0ZXN0X29wZW5fbmV3KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuX25ldycsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy13J10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVtVUkxdKQorCisgICAgZGVmIHRlc3Rfb3Blbl9uZXdfdGFiKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuX25ld190YWInLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctdyddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bVVJMXSkKKworCitjbGFzcyBPcGVyYUNvbW1hbmRUZXN0KENvbW1hbmRUZXN0TWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGJyb3dzZXJfY2xhc3MgPSB3ZWJicm93c2VyLk9wZXJhCisKKyAgICBkZWYgdGVzdF9vcGVuKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuJywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLXJlbW90ZSddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bJ29wZW5VUkwoe30pJy5mb3JtYXQoVVJMKV0pCisKKyAgICBkZWYgdGVzdF9vcGVuX3dpdGhfYXV0b3JhaXNlX2ZhbHNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuJywga3c9ZGljdChhdXRvcmFpc2U9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctcmVtb3RlJywgJy1ub3JhaXNlJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSknLmZvcm1hdChVUkwpXSkKKworICAgIGRlZiB0ZXN0X29wZW5fbmV3KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuX25ldycsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1yZW1vdGUnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9LG5ldy13aW5kb3cpJy5mb3JtYXQoVVJMKV0pCisKKyAgICBkZWYgdGVzdF9vcGVuX25ldyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3Blbl9uZXdfdGFiJywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLXJlbW90ZSddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bJ29wZW5VUkwoe30sbmV3LXBhZ2UpJy5mb3JtYXQoVVJMKV0pCisKKworY2xhc3MgRUxpbmtzQ29tbWFuZFRlc3QoQ29tbWFuZFRlc3RNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgYnJvd3Nlcl9jbGFzcyA9IHdlYmJyb3dzZXIuRWxpbmtzCisKKyAgICBkZWYgdGVzdF9vcGVuKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuJywgb3B0aW9ucz1bJy1yZW1vdGUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bJ29wZW5VUkwoe30pJy5mb3JtYXQoVVJMKV0pCisKKyAgICBkZWYgdGVzdF9vcGVuX3dpdGhfYXV0b3JhaXNlX2ZhbHNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuJywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLXJlbW90ZSddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bJ29wZW5VUkwoe30pJy5mb3JtYXQoVVJMKV0pCisKKyAgICBkZWYgdGVzdF9vcGVuX25ldyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3Blbl9uZXcnLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctcmVtb3RlJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSxuZXctd2luZG93KScuZm9ybWF0KFVSTCldKQorCisgICAgZGVmIHRlc3Rfb3Blbl9uZXdfdGFiKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuX25ld190YWInLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctcmVtb3RlJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSxuZXctdGFiKScuZm9ybWF0KFVSTCldKQorCisKK2lmIF9fbmFtZV9fPT0nX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weSBiL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkKaW5kZXggMzRjM2RlYS4uZWI3Zjc1ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5CkBAIC0xNiwxNiArMTYsMTIgQEAKICAgICB0cnk6CiAgICAgICAgICMgQXNrIHRoZSBtaXhlciBBUEkgZm9yIHRoZSBudW1iZXIgb2YgZGV2aWNlcyBpdCBrbm93cyBhYm91dC4KICAgICAgICAgIyBXaGVuIHRoZXJlIGFyZSBubyBkZXZpY2VzLCBQbGF5U291bmQgd2lsbCBmYWlsLgotICAgICAgICBpZiBjdHlwZXMud2luZGxsLndpbm1tLm1peGVyR2V0TnVtRGV2cygpIGlzIDA6CisgICAgICAgIGlmIGN0eXBlcy53aW5kbGwud2lubW0ubWl4ZXJHZXROdW1EZXZzKCkgPT0gMDoKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgICAgIGtleSA9IHdpbnJlZy5PcGVuS2V5RXgod2lucmVnLkhLRVlfQ1VSUkVOVF9VU0VSLAogICAgICAgICAgICAgICAgICJBcHBFdmVudHNcU2NoZW1lc1xBcHBzXC5EZWZhdWx0XHswfVwuRGVmYXVsdCIuZm9ybWF0KHNvdW5kKSkKLSAgICAgICAgdmFsdWUgPSB3aW5yZWcuRW51bVZhbHVlKGtleSwgMClbMV0KLSAgICAgICAgaWYgdmFsdWUgaXMgbm90ICIiOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gd2lucmVnLkVudW1WYWx1ZShrZXksIDApWzFdICE9ICIiCiAgICAgZXhjZXB0IFdpbmRvd3NFcnJvcjoKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weSBiL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weQppbmRleCAwOGY4ZDlhLi4wNWMxZjRmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5CkBAIC05LDYgKzksOCBAQAogZnJvbSB3c2dpcmVmLnNpbXBsZV9zZXJ2ZXIgaW1wb3J0IG1ha2Vfc2VydmVyCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTywgQnl0ZXNJTywgQnVmZmVyZWRSZWFkZXIKIGZyb20gc29ja2V0c2VydmVyIGltcG9ydCBCYXNlU2VydmVyCitmcm9tIHBsYXRmb3JtIGltcG9ydCBweXRob25faW1wbGVtZW50YXRpb24KKwogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKQEAgLTEwMCw5ICsxMDIsMTEgQEAKIGNsYXNzIEludGVncmF0aW9uVGVzdHMoVGVzdENhc2UpOgogCiAgICAgZGVmIGNoZWNrX2hlbGxvKHNlbGYsIG91dCwgaGFzX2xlbmd0aD1UcnVlKToKKyAgICAgICAgcHl2ZXIgPSAocHl0aG9uX2ltcGxlbWVudGF0aW9uKCkgKyAiLyIgKworICAgICAgICAgICAgICAgIHN5cy52ZXJzaW9uLnNwbGl0KClbMF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LAogICAgICAgICAgICAgKCJIVFRQLzEuMCAyMDAgT0tcclxuIgotICAgICAgICAgICAgIlNlcnZlcjogV1NHSVNlcnZlci8wLjIgUHl0aG9uLyIrc3lzLnZlcnNpb24uc3BsaXQoKVswXSsiXHJcbiIKKyAgICAgICAgICAgICJTZXJ2ZXI6IFdTR0lTZXJ2ZXIvMC4yICIgKyBweXZlciArIlxyXG4iCiAgICAgICAgICAgICAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluXHJcbiIKICAgICAgICAgICAgICJEYXRlOiBNb24sIDA1IEp1biAyMDA2IDE4OjQ5OjU0IEdNVFxyXG4iICsKICAgICAgICAgICAgIChoYXNfbGVuZ3RoIGFuZCAgIkNvbnRlbnQtTGVuZ3RoOiAxM1xyXG4iIG9yICIiKSArCkBAIC0xNTYsOSArMTYwLDExIEBACiAgICAgICAgIG91dCwgZXJyID0gcnVuX2Ftb2NrKHZhbGlkYXRvcihhcHApKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZXJyLmVuZHN3aXRoKCciR0VUIC8gSFRUUC8xLjAiIDIwMCA0XG4nKSkKICAgICAgICAgdmVyID0gc3lzLnZlcnNpb24uc3BsaXQoKVswXS5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgcHkgID0gcHl0aG9uX2ltcGxlbWVudGF0aW9uKCkuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIHB5dmVyID0gcHkgKyBiIi8iICsgdmVyCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgYiJIVFRQLzEuMCAyMDAgT0tcclxuIgotICAgICAgICAgICAgICAgIGIiU2VydmVyOiBXU0dJU2VydmVyLzAuMiBQeXRob24vIiArIHZlciArIGIiXHJcbiIKKyAgICAgICAgICAgICAgICBiIlNlcnZlcjogV1NHSVNlcnZlci8wLjIgIisgcHl2ZXIgKyBiIlxyXG4iCiAgICAgICAgICAgICAgICAgYiJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLThcclxuIgogICAgICAgICAgICAgICAgIGIiRGF0ZTogV2VkLCAyNCBEZWMgMjAwOCAxMzoyOTozMiBHTVRcclxuIgogICAgICAgICAgICAgICAgIGIiXHJcbiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKaW5kZXggZjYxMjkyZi4uZjM2ODNmMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKQEAgLTEsMjggKzEsMzIgQEAKLSMgeG1sLmV0cmVlIHRlc3QuICBUaGlzIGZpbGUgY29udGFpbnMgZW5vdWdoIHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0Ci0jIGFsbCBpbmNsdWRlZCBjb21wb25lbnRzIHdvcmsgYXMgdGhleSBzaG91bGQuCi0jIExhcmdlIHBhcnRzIGFyZSBleHRyYWN0ZWQgZnJvbSB0aGUgdXBzdHJlYW0gdGVzdCBzdWl0ZS4KLQotIyBJTVBPUlRBTlQ6IHRoZSBzYW1lIGRvY3Rlc3RzIGFyZSBydW4gZnJvbSAidGVzdF94bWxfZXRyZWVfYyIgaW4KLSMgb3JkZXIgdG8gZW5zdXJlIGNvbnNpc3RlbmN5IGJldHdlZW4gdGhlIEMgaW1wbGVtZW50YXRpb24gYW5kIHRoZQotIyBQeXRob24gaW1wbGVtZW50YXRpb24uCisjIElNUE9SVEFOVDogdGhlIHNhbWUgdGVzdHMgYXJlIHJ1biBmcm9tICJ0ZXN0X3htbF9ldHJlZV9jIiBpbiBvcmRlcgorIyB0byBlbnN1cmUgY29uc2lzdGVuY3kgYmV0d2VlbiB0aGUgQyBpbXBsZW1lbnRhdGlvbiBhbmQgdGhlIFB5dGhvbgorIyBpbXBsZW1lbnRhdGlvbi4KICMKICMgRm9yIHRoaXMgcHVycG9zZSwgdGhlIG1vZHVsZS1sZXZlbCAiRVQiIHN5bWJvbCBpcyB0ZW1wb3JhcmlseQogIyBtb25rZXktcGF0Y2hlZCB3aGVuIHJ1bm5pbmcgdGhlICJ0ZXN0X3htbF9ldHJlZV9jIiB0ZXN0IHN1aXRlLgotIyBEb24ndCByZS1pbXBvcnQgInhtbC5ldHJlZS5FbGVtZW50VHJlZSIgbW9kdWxlIGluIHRoZSBkb2NzdHJpbmcsCi0jIGV4Y2VwdCBpZiB0aGUgdGVzdCBpcyBzcGVjaWZpYyB0byB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uLgogCi1pbXBvcnQgc3lzCiBpbXBvcnQgaHRtbAoraW1wb3J0IGlvCitpbXBvcnQgb3BlcmF0b3IKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdlYWtyZWYKIAorZnJvbSBpdGVydG9vbHMgaW1wb3J0IHByb2R1Y3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBmaW5kZmlsZSwgaW1wb3J0X2ZyZXNoX21vZHVsZSwgZ2NfY29sbGVjdAogCi1mcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUgYXMgRVQKKyMgcHlFVCBpcyB0aGUgcHVyZS1QeXRob24gaW1wbGVtZW50YXRpb24uCisjCisjIEVUIGlzIHB5RVQgaW4gdGVzdF94bWxfZXRyZWUgYW5kIGlzIHRoZSBDIGFjY2VsZXJhdGVkIHZlcnNpb24gaW4KKyMgdGVzdF94bWxfZXRyZWVfYy4KK3B5RVQgPSBOb25lCitFVCA9IE5vbmUKIAogU0lNUExFX1hNTEZJTEUgPSBmaW5kZmlsZSgic2ltcGxlLnhtbCIsIHN1YmRpcj0ieG1sdGVzdGRhdGEiKQogdHJ5OgotICAgIFNJTVBMRV9YTUxGSUxFLmVuY29kZSgidXRmOCIpCisgICAgU0lNUExFX1hNTEZJTEUuZW5jb2RlKCJ1dGYtOCIpCiBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJmaWxlbmFtZSBpcyBub3QgZW5jb2RhYmxlIHRvIHV0ZjgiKQogU0lNUExFX05TX1hNTEZJTEUgPSBmaW5kZmlsZSgic2ltcGxlLW5zLnhtbCIsIHN1YmRpcj0ieG1sdGVzdGRhdGEiKQpAQCAtNTcsMjIgKzYxLDQ0IEBACiA8L2JvZHk+CiAiIiIKIAorU0FNUExFX1hNTF9OU19FTEVNUyA9ICIiIgorPHJvb3Q+Cis8aDp0YWJsZSB4bWxuczpoPSJoZWxsbyI+CisgIDxoOnRyPgorICAgIDxoOnRkPkFwcGxlczwvaDp0ZD4KKyAgICA8aDp0ZD5CYW5hbmFzPC9oOnRkPgorICA8L2g6dHI+Cis8L2g6dGFibGU+CiAKLWRlZiBzYW5pdHkoKToKLSAgICAiIiIKLSAgICBJbXBvcnQgc2FuaXR5LgorPGY6dGFibGUgeG1sbnM6Zj0iZm9vIj4KKyAgPGY6bmFtZT5BZnJpY2FuIENvZmZlZSBUYWJsZTwvZjpuYW1lPgorICA8Zjp3aWR0aD44MDwvZjp3aWR0aD4KKyAgPGY6bGVuZ3RoPjEyMDwvZjpsZW5ndGg+Cis8L2Y6dGFibGU+Cis8L3Jvb3Q+CisiIiIKIAotICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUKLSAgICA+Pj4gZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRJbmNsdWRlCi0gICAgPj4+IGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50UGF0aAotICAgICIiIgorRU5USVRZX1hNTCA9ICIiIlwKKzwhRE9DVFlQRSBwb2ludHMgWworPCFFTlRJVFkgJSB1c2VyLWVudGl0aWVzIFNZU1RFTSAndXNlci1lbnRpdGllcy54bWwnPgorJXVzZXItZW50aXRpZXM7CitdPgorPGRvY3VtZW50PiZlbnRpdHk7PC9kb2N1bWVudD4KKyIiIgogCi1kZWYgY2hlY2tfbWV0aG9kKG1ldGhvZCk6Ci0gICAgaWYgbm90IGhhc2F0dHIobWV0aG9kLCAnX19jYWxsX18nKToKLSAgICAgICAgcHJpbnQobWV0aG9kLCAibm90IGNhbGxhYmxlIikKKworY2xhc3MgTW9kdWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBUT0RPOiB0aGlzIHNob3VsZCBiZSByZW1vdmVkIG9uY2Ugd2UgZ2V0IHJpZCBvZiB0aGUgZ2xvYmFsIG1vZHVsZSB2YXJzCisKKyAgICBkZWYgdGVzdF9zYW5pdHkoc2VsZik6CisgICAgICAgICMgSW1wb3J0IHNhbml0eS4KKworICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUKKyAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRJbmNsdWRlCisgICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50UGF0aAorCiAKIGRlZiBzZXJpYWxpemUoZWxlbSwgdG9fc3RyaW5nPVRydWUsIGVuY29kaW5nPSd1bmljb2RlJywgKipvcHRpb25zKToKLSAgICBpbXBvcnQgaW8KICAgICBpZiBlbmNvZGluZyAhPSAndW5pY29kZSc6CiAgICAgICAgIGZpbGUgPSBpby5CeXRlc0lPKCkKICAgICBlbHNlOgpAQCAtODUsMTE4MiArMTExLDc5NyBAQAogICAgICAgICBmaWxlLnNlZWsoMCkKICAgICAgICAgcmV0dXJuIGZpbGUKIAotZGVmIHN1bW1hcml6ZShlbGVtKToKLSAgICBpZiBlbGVtLnRhZyA9PSBFVC5Db21tZW50OgotICAgICAgICByZXR1cm4gIjxDb21tZW50PiIKLSAgICByZXR1cm4gZWxlbS50YWcKLQogZGVmIHN1bW1hcml6ZV9saXN0KHNlcSk6Ci0gICAgcmV0dXJuIFtzdW1tYXJpemUoZWxlbSkgZm9yIGVsZW0gaW4gc2VxXQorICAgIHJldHVybiBbZWxlbS50YWcgZm9yIGVsZW0gaW4gc2VxXQogCi1kZWYgbm9ybWFsaXplX2NybGYodHJlZSk6Ci0gICAgZm9yIGVsZW0gaW4gdHJlZS5pdGVyKCk6Ci0gICAgICAgIGlmIGVsZW0udGV4dDoKLSAgICAgICAgICAgIGVsZW0udGV4dCA9IGVsZW0udGV4dC5yZXBsYWNlKCJcclxuIiwgIlxuIikKLSAgICAgICAgaWYgZWxlbS50YWlsOgotICAgICAgICAgICAgZWxlbS50YWlsID0gZWxlbS50YWlsLnJlcGxhY2UoIlxyXG4iLCAiXG4iKQogCi1kZWYgbm9ybWFsaXplX2V4Y2VwdGlvbihmdW5jLCAqYXJncywgKiprd2FyZ3MpOgotICAgICMgSWdub3JlIHRoZSBleGNlcHRpb24gX19tb2R1bGVfXwotICAgIHRyeToKLSAgICAgICAgZnVuYygqYXJncywgKiprd2FyZ3MpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6Ci0gICAgICAgIHByaW50KCJUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6IikKLSAgICAgICAgcHJpbnQoInt9OiB7fSIuZm9ybWF0KGVyci5fX2NsYXNzX18uX19uYW1lX18sIGVycikpCitjbGFzcyBFbGVtZW50VGVzdENhc2U6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLm1vZHVsZXMgPSB7cHlFVCwgRVR9CiAKLWRlZiBjaGVja19zdHJpbmcoc3RyaW5nKToKLSAgICBsZW4oc3RyaW5nKQotICAgIGZvciBjaGFyIGluIHN0cmluZzoKLSAgICAgICAgaWYgbGVuKGNoYXIpICE9IDE6Ci0gICAgICAgICAgICBwcmludCgiZXhwZWN0ZWQgb25lLWNoYXJhY3RlciBzdHJpbmcsIGdvdCAlciIgJSBjaGFyKQotICAgIG5ld19zdHJpbmcgPSBzdHJpbmcgKyAiIgotICAgIG5ld19zdHJpbmcgPSBzdHJpbmcgKyAiICIKLSAgICBzdHJpbmdbOjBdCisgICAgZGVmIHBpY2tsZVJvdW5kVHJpcChzZWxmLCBvYmosIG5hbWUsIGR1bXBlciwgbG9hZGVyKToKKyAgICAgICAgc2F2ZV9tID0gc3lzLm1vZHVsZXNbbmFtZV0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBkdW1wZXIKKyAgICAgICAgICAgIHRlbXAgPSBwaWNrbGUuZHVtcHMob2JqKQorICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBsb2FkZXIKKyAgICAgICAgICAgIHJlc3VsdCA9IHBpY2tsZS5sb2Fkcyh0ZW1wKQorICAgICAgICBleGNlcHQgcGlja2xlLlBpY2tsaW5nRXJyb3IgYXMgcGU6CisgICAgICAgICAgICAjIHB5RVQgbXVzdCBiZSBzZWNvbmQsIGJlY2F1c2UgcHlFVCBtYXkgYmUgKGVxdWFsIHRvKSBFVC4KKyAgICAgICAgICAgIGh1bWFuID0gZGljdChbKEVULCAiY0VUIiksIChweUVULCAicHlFVCIpXSkKKyAgICAgICAgICAgIHJhaXNlIHN1cHBvcnQuVGVzdEZhaWxlZCgiRmFpbGVkIHRvIHJvdW5kLXRyaXAgJXIgZnJvbSAlciB0byAlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHVtYW4uZ2V0KGR1bXBlciwgZHVtcGVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodW1hbi5nZXQobG9hZGVyLCBsb2FkZXIpKSkgZnJvbSBwZQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBzYXZlX20KKyAgICAgICAgcmV0dXJuIHJlc3VsdAogCi1kZWYgY2hlY2tfbWFwcGluZyhtYXBwaW5nKToKLSAgICBsZW4obWFwcGluZykKLSAgICBrZXlzID0gbWFwcGluZy5rZXlzKCkKLSAgICBpdGVtcyA9IG1hcHBpbmcuaXRlbXMoKQotICAgIGZvciBrZXkgaW4ga2V5czoKLSAgICAgICAgaXRlbSA9IG1hcHBpbmdba2V5XQotICAgIG1hcHBpbmdbImtleSJdID0gInZhbHVlIgotICAgIGlmIG1hcHBpbmdbImtleSJdICE9ICJ2YWx1ZSI6Ci0gICAgICAgIHByaW50KCJleHBlY3RlZCB2YWx1ZSBzdHJpbmcsIGdvdCAlciIgJSBtYXBwaW5nWyJrZXkiXSkKLQotZGVmIGNoZWNrX2VsZW1lbnQoZWxlbWVudCk6Ci0gICAgaWYgbm90IEVULmlzZWxlbWVudChlbGVtZW50KToKLSAgICAgICAgcHJpbnQoIm5vdCBhbiBlbGVtZW50IikKLSAgICBpZiBub3QgaGFzYXR0cihlbGVtZW50LCAidGFnIik6Ci0gICAgICAgIHByaW50KCJubyB0YWcgbWVtYmVyIikKLSAgICBpZiBub3QgaGFzYXR0cihlbGVtZW50LCAiYXR0cmliIik6Ci0gICAgICAgIHByaW50KCJubyBhdHRyaWIgbWVtYmVyIikKLSAgICBpZiBub3QgaGFzYXR0cihlbGVtZW50LCAidGV4dCIpOgotICAgICAgICBwcmludCgibm8gdGV4dCBtZW1iZXIiKQotICAgIGlmIG5vdCBoYXNhdHRyKGVsZW1lbnQsICJ0YWlsIik6Ci0gICAgICAgIHByaW50KCJubyB0YWlsIG1lbWJlciIpCi0KLSAgICBjaGVja19zdHJpbmcoZWxlbWVudC50YWcpCi0gICAgY2hlY2tfbWFwcGluZyhlbGVtZW50LmF0dHJpYikKLSAgICBpZiBlbGVtZW50LnRleHQgaXMgbm90IE5vbmU6Ci0gICAgICAgIGNoZWNrX3N0cmluZyhlbGVtZW50LnRleHQpCi0gICAgaWYgZWxlbWVudC50YWlsIGlzIG5vdCBOb25lOgotICAgICAgICBjaGVja19zdHJpbmcoZWxlbWVudC50YWlsKQotICAgIGZvciBlbGVtIGluIGVsZW1lbnQ6Ci0gICAgICAgIGNoZWNrX2VsZW1lbnQoZWxlbSkKKyAgICBkZWYgYXNzZXJ0RXF1YWxFbGVtZW50cyhzZWxmLCBhbGljZSwgYm9iKToKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGFsaWNlLCAoRVQuRWxlbWVudCwgcHlFVC5FbGVtZW50KSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGJvYiwgKEVULkVsZW1lbnQsIHB5RVQuRWxlbWVudCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpc3QoYWxpY2UpKSwgbGVuKGxpc3QoYm9iKSkpCisgICAgICAgIGZvciB4LCB5IGluIHppcChhbGljZSwgYm9iKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxFbGVtZW50cyh4LCB5KQorICAgICAgICBwcm9wZXJ0aWVzID0gb3BlcmF0b3IuYXR0cmdldHRlcigndGFnJywgJ3RhaWwnLCAndGV4dCcsICdhdHRyaWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3BlcnRpZXMoYWxpY2UpLCBwcm9wZXJ0aWVzKGJvYikpCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgZWxlbWVudCB0cmVlIHRlc3RzCiAKLWRlZiBpbnRlcmZhY2UoKToKLSAgICAiIiIKLSAgICBUZXN0IGVsZW1lbnQgdHJlZSBpbnRlcmZhY2UuCitjbGFzcyBFbGVtZW50VHJlZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgPj4+IGVsZW1lbnQgPSBFVC5FbGVtZW50KCJ0YWciKQotICAgID4+PiBjaGVja19lbGVtZW50KGVsZW1lbnQpCi0gICAgPj4+IHRyZWUgPSBFVC5FbGVtZW50VHJlZShlbGVtZW50KQotICAgID4+PiBjaGVja19lbGVtZW50KHRyZWUuZ2V0cm9vdCgpKQorICAgIGRlZiBzZXJpYWxpemVfY2hlY2soc2VsZiwgZWxlbSwgZXhwZWN0ZWQpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtKSwgZXhwZWN0ZWQpCiAKLSAgICA+Pj4gZWxlbWVudCA9IEVULkVsZW1lbnQoInRcXHhlNGciLCBrZXk9InZhbHVlIikKLSAgICA+Pj4gdHJlZSA9IEVULkVsZW1lbnRUcmVlKGVsZW1lbnQpCi0gICAgPj4+IHJlcHIoZWxlbWVudCkgICAjIGRvY3Rlc3Q6ICtFTExJUFNJUwotICAgICI8RWxlbWVudCAndFxceGU0ZycgYXQgMHguLi4+IgotICAgID4+PiBlbGVtZW50ID0gRVQuRWxlbWVudCgidGFnIiwga2V5PSJ2YWx1ZSIpCisgICAgZGVmIHRlc3RfaW50ZXJmYWNlKHNlbGYpOgorICAgICAgICAjIFRlc3QgZWxlbWVudCB0cmVlIGludGVyZmFjZS4KIAotICAgIE1ha2Ugc3VyZSBhbGwgc3RhbmRhcmQgZWxlbWVudCBtZXRob2RzIGV4aXN0LgorICAgICAgICBkZWYgY2hlY2tfc3RyaW5nKHN0cmluZyk6CisgICAgICAgICAgICBsZW4oc3RyaW5nKQorICAgICAgICAgICAgZm9yIGNoYXIgaW4gc3RyaW5nOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNoYXIpLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJleHBlY3RlZCBvbmUtY2hhcmFjdGVyIHN0cmluZywgZ290ICVyIiAlIGNoYXIpCisgICAgICAgICAgICBuZXdfc3RyaW5nID0gc3RyaW5nICsgIiIKKyAgICAgICAgICAgIG5ld19zdHJpbmcgPSBzdHJpbmcgKyAiICIKKyAgICAgICAgICAgIHN0cmluZ1s6MF0KIAotICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5hcHBlbmQpCi0gICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50LmV4dGVuZCkKLSAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuaW5zZXJ0KQotICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5yZW1vdmUpCi0gICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50LmdldGNoaWxkcmVuKQotICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5maW5kKQotICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5pdGVyZmluZCkKLSAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuZmluZGFsbCkKLSAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuZmluZHRleHQpCi0gICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50LmNsZWFyKQotICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5nZXQpCi0gICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50LnNldCkKLSAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQua2V5cykKLSAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuaXRlbXMpCi0gICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50Lml0ZXIpCi0gICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50Lml0ZXJ0ZXh0KQotICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5nZXRpdGVyYXRvcikKKyAgICAgICAgZGVmIGNoZWNrX21hcHBpbmcobWFwcGluZyk6CisgICAgICAgICAgICBsZW4obWFwcGluZykKKyAgICAgICAgICAgIGtleXMgPSBtYXBwaW5nLmtleXMoKQorICAgICAgICAgICAgaXRlbXMgPSBtYXBwaW5nLml0ZW1zKCkKKyAgICAgICAgICAgIGZvciBrZXkgaW4ga2V5czoKKyAgICAgICAgICAgICAgICBpdGVtID0gbWFwcGluZ1trZXldCisgICAgICAgICAgICBtYXBwaW5nWyJrZXkiXSA9ICJ2YWx1ZSIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFwcGluZ1sia2V5Il0sICJ2YWx1ZSIsCisgICAgICAgICAgICAgICAgICAgIG1zZz0iZXhwZWN0ZWQgdmFsdWUgc3RyaW5nLCBnb3QgJXIiICUgbWFwcGluZ1sia2V5Il0pCiAKLSAgICBUaGVzZSBtZXRob2RzIHJldHVybiBhbiBpdGVyYWJsZS4gU2VlIGJ1ZyA2NDcyLgorICAgICAgICBkZWYgY2hlY2tfZWxlbWVudChlbGVtZW50KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShFVC5pc2VsZW1lbnQoZWxlbWVudCksIG1zZz0ibm90IGFuIGVsZW1lbnQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZWxlbWVudCwgInRhZyIpLCBtc2c9Im5vIHRhZyBtZW1iZXIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZWxlbWVudCwgImF0dHJpYiIpLCBtc2c9Im5vIGF0dHJpYiBtZW1iZXIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZWxlbWVudCwgInRleHQiKSwgbXNnPSJubyB0ZXh0IG1lbWJlciIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAidGFpbCIpLCBtc2c9Im5vIHRhaWwgbWVtYmVyIikKIAotICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5pdGVyKCJ0YWciKS5fX25leHRfXykKLSAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuaXRlcmZpbmQoInRhZyIpLl9fbmV4dF9fKQotICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5pdGVyZmluZCgiKiIpLl9fbmV4dF9fKQotICAgID4+PiBjaGVja19tZXRob2QodHJlZS5pdGVyKCJ0YWciKS5fX25leHRfXykKLSAgICA+Pj4gY2hlY2tfbWV0aG9kKHRyZWUuaXRlcmZpbmQoInRhZyIpLl9fbmV4dF9fKQotICAgID4+PiBjaGVja19tZXRob2QodHJlZS5pdGVyZmluZCgiKiIpLl9fbmV4dF9fKQorICAgICAgICAgICAgY2hlY2tfc3RyaW5nKGVsZW1lbnQudGFnKQorICAgICAgICAgICAgY2hlY2tfbWFwcGluZyhlbGVtZW50LmF0dHJpYikKKyAgICAgICAgICAgIGlmIGVsZW1lbnQudGV4dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBjaGVja19zdHJpbmcoZWxlbWVudC50ZXh0KQorICAgICAgICAgICAgaWYgZWxlbWVudC50YWlsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGNoZWNrX3N0cmluZyhlbGVtZW50LnRhaWwpCisgICAgICAgICAgICBmb3IgZWxlbSBpbiBlbGVtZW50OgorICAgICAgICAgICAgICAgIGNoZWNrX2VsZW1lbnQoZWxlbSkKIAotICAgIFRoZXNlIGFsaWFzZXMgYXJlIHByb3ZpZGVkOgorICAgICAgICBlbGVtZW50ID0gRVQuRWxlbWVudCgidGFnIikKKyAgICAgICAgY2hlY2tfZWxlbWVudChlbGVtZW50KQorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoZWxlbWVudCkKKyAgICAgICAgY2hlY2tfZWxlbWVudCh0cmVlLmdldHJvb3QoKSkKKyAgICAgICAgZWxlbWVudCA9IEVULkVsZW1lbnQoInRceGU0ZyIsIGtleT0idmFsdWUiKQorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoZWxlbWVudCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKGVsZW1lbnQpLCByIl48RWxlbWVudCAndFx4ZTRnJyBhdCAweC4qPiQiKQorICAgICAgICBlbGVtZW50ID0gRVQuRWxlbWVudCgidGFnIiwga2V5PSJ2YWx1ZSIpCiAKLSAgICA+Pj4gYXNzZXJ0IEVULlhNTCA9PSBFVC5mcm9tc3RyaW5nCi0gICAgPj4+IGFzc2VydCBFVC5QSSA9PSBFVC5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KLSAgICA+Pj4gYXNzZXJ0IEVULlhNTFBhcnNlciA9PSBFVC5YTUxUcmVlQnVpbGRlcgotICAgICIiIgorICAgICAgICAjIE1ha2Ugc3VyZSBhbGwgc3RhbmRhcmQgZWxlbWVudCBtZXRob2RzIGV4aXN0LgogCi1kZWYgc2ltcGxlb3BzKCk6Ci0gICAgIiIiCi0gICAgQmFzaWMgbWV0aG9kIHNhbml0eSBjaGVja3MuCisgICAgICAgIGRlZiBjaGVja19tZXRob2QobWV0aG9kKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1ldGhvZCwgJ19fY2FsbF9fJyksCisgICAgICAgICAgICAgICAgICAgIG1zZz0iJXMgbm90IGNhbGxhYmxlIiAlIG1ldGhvZCkKIAotICAgID4+PiBlbGVtID0gRVQuWE1MKCI8Ym9keT48dGFnLz48L2JvZHk+IikKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCi0gICAgJzxib2R5Pjx0YWcgLz48L2JvZHk+JwotICAgID4+PiBlID0gRVQuRWxlbWVudCgidGFnMiIpCi0gICAgPj4+IGVsZW0uYXBwZW5kKGUpCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICc8Ym9keT48dGFnIC8+PHRhZzIgLz48L2JvZHk+JwotICAgID4+PiBlbGVtLnJlbW92ZShlKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPGJvZHk+PHRhZyAvPjwvYm9keT4nCi0gICAgPj4+IGVsZW0uaW5zZXJ0KDAsIGUpCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICc8Ym9keT48dGFnMiAvPjx0YWcgLz48L2JvZHk+JwotICAgID4+PiBlbGVtLnJlbW92ZShlKQotICAgID4+PiBlbGVtLmV4dGVuZChbZV0pCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICc8Ym9keT48dGFnIC8+PHRhZzIgLz48L2JvZHk+JwotICAgID4+PiBlbGVtLnJlbW92ZShlKQorICAgICAgICBjaGVja19tZXRob2QoZWxlbWVudC5hcHBlbmQpCisgICAgICAgIGNoZWNrX21ldGhvZChlbGVtZW50LmV4dGVuZCkKKyAgICAgICAgY2hlY2tfbWV0aG9kKGVsZW1lbnQuaW5zZXJ0KQorICAgICAgICBjaGVja19tZXRob2QoZWxlbWVudC5yZW1vdmUpCisgICAgICAgIGNoZWNrX21ldGhvZChlbGVtZW50LmdldGNoaWxkcmVuKQorICAgICAgICBjaGVja19tZXRob2QoZWxlbWVudC5maW5kKQorICAgICAgICBjaGVja19tZXRob2QoZWxlbWVudC5pdGVyZmluZCkKKyAgICAgICAgY2hlY2tfbWV0aG9kKGVsZW1lbnQuZmluZGFsbCkKKyAgICAgICAgY2hlY2tfbWV0aG9kKGVsZW1lbnQuZmluZHRleHQpCisgICAgICAgIGNoZWNrX21ldGhvZChlbGVtZW50LmNsZWFyKQorICAgICAgICBjaGVja19tZXRob2QoZWxlbWVudC5nZXQpCisgICAgICAgIGNoZWNrX21ldGhvZChlbGVtZW50LnNldCkKKyAgICAgICAgY2hlY2tfbWV0aG9kKGVsZW1lbnQua2V5cykKKyAgICAgICAgY2hlY2tfbWV0aG9kKGVsZW1lbnQuaXRlbXMpCisgICAgICAgIGNoZWNrX21ldGhvZChlbGVtZW50Lml0ZXIpCisgICAgICAgIGNoZWNrX21ldGhvZChlbGVtZW50Lml0ZXJ0ZXh0KQorICAgICAgICBjaGVja19tZXRob2QoZWxlbWVudC5nZXRpdGVyYXRvcikKIAotICAgID4+PiBlbGVtZW50ID0gRVQuRWxlbWVudCgidGFnIiwga2V5PSJ2YWx1ZSIpCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtZW50KSAjIDEKLSAgICAnPHRhZyBrZXk9InZhbHVlIiAvPicKLSAgICA+Pj4gc3ViZWxlbWVudCA9IEVULkVsZW1lbnQoInN1YnRhZyIpCi0gICAgPj4+IGVsZW1lbnQuYXBwZW5kKHN1YmVsZW1lbnQpCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtZW50KSAjIDIKLSAgICAnPHRhZyBrZXk9InZhbHVlIj48c3VidGFnIC8+PC90YWc+JwotICAgID4+PiBlbGVtZW50Lmluc2VydCgwLCBzdWJlbGVtZW50KQotICAgID4+PiBzZXJpYWxpemUoZWxlbWVudCkgIyAzCi0gICAgJzx0YWcga2V5PSJ2YWx1ZSI+PHN1YnRhZyAvPjxzdWJ0YWcgLz48L3RhZz4nCi0gICAgPj4+IGVsZW1lbnQucmVtb3ZlKHN1YmVsZW1lbnQpCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtZW50KSAjIDQKLSAgICAnPHRhZyBrZXk9InZhbHVlIj48c3VidGFnIC8+PC90YWc+JwotICAgID4+PiBlbGVtZW50LnJlbW92ZShzdWJlbGVtZW50KQotICAgID4+PiBzZXJpYWxpemUoZWxlbWVudCkgIyA1Ci0gICAgJzx0YWcga2V5PSJ2YWx1ZSIgLz4nCi0gICAgPj4+IGVsZW1lbnQucmVtb3ZlKHN1YmVsZW1lbnQpCi0gICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgIFZhbHVlRXJyb3I6IGxpc3QucmVtb3ZlKHgpOiB4IG5vdCBpbiBsaXN0Ci0gICAgPj4+IHNlcmlhbGl6ZShlbGVtZW50KSAjIDYKLSAgICAnPHRhZyBrZXk9InZhbHVlIiAvPicKLSAgICA+Pj4gZWxlbWVudFswOjBdID0gW3N1YmVsZW1lbnQsIHN1YmVsZW1lbnQsIHN1YmVsZW1lbnRdCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtZW50WzFdKQotICAgICc8c3VidGFnIC8+JwotICAgID4+PiBlbGVtZW50WzE6OV0gPT0gW2VsZW1lbnRbMV0sIGVsZW1lbnRbMl1dCi0gICAgVHJ1ZQotICAgID4+PiBlbGVtZW50Wzo5OjJdID09IFtlbGVtZW50WzBdLCBlbGVtZW50WzJdXQotICAgIFRydWUKLSAgICA+Pj4gZGVsIGVsZW1lbnRbMToyXQotICAgID4+PiBzZXJpYWxpemUoZWxlbWVudCkKLSAgICAnPHRhZyBrZXk9InZhbHVlIj48c3VidGFnIC8+PHN1YnRhZyAvPjwvdGFnPicKLSAgICAiIiIKKyAgICAgICAgIyBUaGVzZSBtZXRob2RzIHJldHVybiBhbiBpdGVyYWJsZS4gU2VlIGJ1ZyA2NDcyLgogCi1kZWYgY2RhdGEoKToKLSAgICAiIiIKLSAgICBUZXN0IENEQVRBIGhhbmRsaW5nIChldGMpLgorICAgICAgICBkZWYgY2hlY2tfaXRlcihpdCk6CisgICAgICAgICAgICBjaGVja19tZXRob2QoaXQuX19uZXh0X18pCiAKLSAgICA+Pj4gc2VyaWFsaXplKEVULlhNTCgiPHRhZz5oZWxsbzwvdGFnPiIpKQotICAgICc8dGFnPmhlbGxvPC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoRVQuWE1MKCI8dGFnPiYjMTA0OyYjMTAxOyYjMTA4OyYjMTA4OyYjMTExOzwvdGFnPiIpKQotICAgICc8dGFnPmhlbGxvPC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoRVQuWE1MKCI8dGFnPjwhW0NEQVRBW2hlbGxvXV0+PC90YWc+IikpCi0gICAgJzx0YWc+aGVsbG88L3RhZz4nCi0gICAgIiIiCisgICAgICAgIGNoZWNrX2l0ZXIoZWxlbWVudC5pdGVyZmluZCgidGFnIikpCisgICAgICAgIGNoZWNrX2l0ZXIoZWxlbWVudC5pdGVyZmluZCgiKiIpKQorICAgICAgICBjaGVja19pdGVyKHRyZWUuaXRlcmZpbmQoInRhZyIpKQorICAgICAgICBjaGVja19pdGVyKHRyZWUuaXRlcmZpbmQoIioiKSkKIAotIyBPbmx5IHdpdGggUHl0aG9uIGltcGxlbWVudGF0aW9uCi1kZWYgc2ltcGxlZmluZCgpOgotICAgICIiIgotICAgIFRlc3QgZmluZCBtZXRob2RzIHVzaW5nIHRoZSBlbGVtZW50cGF0aCBmYWxsYmFjay4KKyAgICAgICAgIyBUaGVzZSBhbGlhc2VzIGFyZSBwcm92aWRlZDoKIAotICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC5YTUwsIEVULmZyb21zdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQuUEksIEVULlByb2Nlc3NpbmdJbnN0cnVjdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC5YTUxQYXJzZXIsIEVULlhNTFRyZWVCdWlsZGVyKQogCi0gICAgPj4+IEN1cnJlbnRFbGVtZW50UGF0aCA9IEVsZW1lbnRUcmVlLkVsZW1lbnRQYXRoCi0gICAgPj4+IEVsZW1lbnRUcmVlLkVsZW1lbnRQYXRoID0gRWxlbWVudFRyZWUuX1NpbXBsZUVsZW1lbnRQYXRoKCkKLSAgICA+Pj4gZWxlbSA9IEVsZW1lbnRUcmVlLlhNTChTQU1QTEVfWE1MKQotICAgID4+PiBlbGVtLmZpbmQoInRhZyIpLnRhZwotICAgICd0YWcnCi0gICAgPj4+IEVsZW1lbnRUcmVlLkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoInRhZyIpLnRhZwotICAgICd0YWcnCi0gICAgPj4+IGVsZW0uZmluZHRleHQoInRhZyIpCi0gICAgJ3RleHQnCi0gICAgPj4+IGVsZW0uZmluZHRleHQoInRvZyIpCi0gICAgPj4+IGVsZW0uZmluZHRleHQoInRvZyIsICJkZWZhdWx0IikKLSAgICAnZGVmYXVsdCcKLSAgICA+Pj4gRWxlbWVudFRyZWUuRWxlbWVudFRyZWUoZWxlbSkuZmluZHRleHQoInRhZyIpCi0gICAgJ3RleHQnCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgidGFnIikpCi0gICAgWyd0YWcnLCAndGFnJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuLy90YWciKSkKLSAgICBbJ3RhZycsICd0YWcnLCAndGFnJ10KKyAgICBkZWYgdGVzdF9zaW1wbGVvcHMoc2VsZik6CisgICAgICAgICMgQmFzaWMgbWV0aG9kIHNhbml0eSBjaGVja3MuCiAKLSAgICBQYXRoIHN5bnRheCBkb2Vzbid0IHdvcmsgaW4gdGhpcyBjYXNlLgorICAgICAgICBlbGVtID0gRVQuWE1MKCI8Ym9keT48dGFnLz48L2JvZHk+IikKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZWxlbSwgJzxib2R5Pjx0YWcgLz48L2JvZHk+JykKKyAgICAgICAgZSA9IEVULkVsZW1lbnQoInRhZzIiKQorICAgICAgICBlbGVtLmFwcGVuZChlKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLCAnPGJvZHk+PHRhZyAvPjx0YWcyIC8+PC9ib2R5PicpCisgICAgICAgIGVsZW0ucmVtb3ZlKGUpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sICc8Ym9keT48dGFnIC8+PC9ib2R5PicpCisgICAgICAgIGVsZW0uaW5zZXJ0KDAsIGUpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sICc8Ym9keT48dGFnMiAvPjx0YWcgLz48L2JvZHk+JykKKyAgICAgICAgZWxlbS5yZW1vdmUoZSkKKyAgICAgICAgZWxlbS5leHRlbmQoW2VdKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLCAnPGJvZHk+PHRhZyAvPjx0YWcyIC8+PC9ib2R5PicpCisgICAgICAgIGVsZW0ucmVtb3ZlKGUpCiAKLSAgICA+Pj4gZWxlbS5maW5kKCJzZWN0aW9uL3RhZyIpCi0gICAgPj4+IGVsZW0uZmluZHRleHQoInNlY3Rpb24vdGFnIikKLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJzZWN0aW9uL3RhZyIpKQotICAgIFtdCisgICAgICAgIGVsZW1lbnQgPSBFVC5FbGVtZW50KCJ0YWciLCBrZXk9InZhbHVlIikKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZWxlbWVudCwgJzx0YWcga2V5PSJ2YWx1ZSIgLz4nKSAjIDEKKyAgICAgICAgc3ViZWxlbWVudCA9IEVULkVsZW1lbnQoInN1YnRhZyIpCisgICAgICAgIGVsZW1lbnQuYXBwZW5kKHN1YmVsZW1lbnQpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW1lbnQsICc8dGFnIGtleT0idmFsdWUiPjxzdWJ0YWcgLz48L3RhZz4nKSAjIDIKKyAgICAgICAgZWxlbWVudC5pbnNlcnQoMCwgc3ViZWxlbWVudCkKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZWxlbWVudCwKKyAgICAgICAgICAgICAgICAnPHRhZyBrZXk9InZhbHVlIj48c3VidGFnIC8+PHN1YnRhZyAvPjwvdGFnPicpICMgMworICAgICAgICBlbGVtZW50LnJlbW92ZShzdWJlbGVtZW50KQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtZW50LCAnPHRhZyBrZXk9InZhbHVlIj48c3VidGFnIC8+PC90YWc+JykgIyA0CisgICAgICAgIGVsZW1lbnQucmVtb3ZlKHN1YmVsZW1lbnQpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW1lbnQsICc8dGFnIGtleT0idmFsdWUiIC8+JykgIyA1CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBlbGVtZW50LnJlbW92ZShzdWJlbGVtZW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAnbGlzdC5yZW1vdmUoeCk6IHggbm90IGluIGxpc3QnKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtZW50LCAnPHRhZyBrZXk9InZhbHVlIiAvPicpICMgNgorICAgICAgICBlbGVtZW50WzA6MF0gPSBbc3ViZWxlbWVudCwgc3ViZWxlbWVudCwgc3ViZWxlbWVudF0KKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZWxlbWVudFsxXSwgJzxzdWJ0YWcgLz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVsZW1lbnRbMTo5XSwgW2VsZW1lbnRbMV0sIGVsZW1lbnRbMl1dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVsZW1lbnRbOjk6Ml0sIFtlbGVtZW50WzBdLCBlbGVtZW50WzJdXSkKKyAgICAgICAgZGVsIGVsZW1lbnRbMToyXQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtZW50LAorICAgICAgICAgICAgICAgICc8dGFnIGtleT0idmFsdWUiPjxzdWJ0YWcgLz48c3VidGFnIC8+PC90YWc+JykKIAotICAgID4+PiBFbGVtZW50VHJlZS5FbGVtZW50UGF0aCA9IEN1cnJlbnRFbGVtZW50UGF0aAotICAgICIiIgorICAgIGRlZiB0ZXN0X2NkYXRhKHNlbGYpOgorICAgICAgICAjIFRlc3QgQ0RBVEEgaGFuZGxpbmcgKGV0YykuCiAKLWRlZiBmaW5kKCk6Ci0gICAgIiIiCi0gICAgVGVzdCBmaW5kIG1ldGhvZHMgKGluY2x1ZGluZyB4cGF0aCBzeW50YXgpLgorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhFVC5YTUwoIjx0YWc+aGVsbG88L3RhZz4iKSwKKyAgICAgICAgICAgICAgICAnPHRhZz5oZWxsbzwvdGFnPicpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKEVULlhNTCgiPHRhZz4mIzEwNDsmIzEwMTsmIzEwODsmIzEwODsmIzExMTs8L3RhZz4iKSwKKyAgICAgICAgICAgICAgICAnPHRhZz5oZWxsbzwvdGFnPicpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKEVULlhNTCgiPHRhZz48IVtDREFUQVtoZWxsb11dPjwvdGFnPiIpLAorICAgICAgICAgICAgICAgICc8dGFnPmhlbGxvPC90YWc+JykKIAotICAgID4+PiBlbGVtID0gRVQuWE1MKFNBTVBMRV9YTUwpCi0gICAgPj4+IGVsZW0uZmluZCgidGFnIikudGFnCi0gICAgJ3RhZycKLSAgICA+Pj4gRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgidGFnIikudGFnCi0gICAgJ3RhZycKLSAgICA+Pj4gZWxlbS5maW5kKCJzZWN0aW9uL3RhZyIpLnRhZwotICAgICd0YWcnCi0gICAgPj4+IGVsZW0uZmluZCgiLi90YWciKS50YWcKLSAgICAndGFnJwotICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCIuL3RhZyIpLnRhZwotICAgICd0YWcnCi0gICAgPj4+IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoIi90YWciKS50YWcKLSAgICAndGFnJwotICAgID4+PiBlbGVtWzJdID0gRVQuWE1MKFNBTVBMRV9TRUNUSU9OKQotICAgID4+PiBlbGVtLmZpbmQoInNlY3Rpb24vbmV4dHRhZyIpLnRhZwotICAgICduZXh0dGFnJwotICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCJzZWN0aW9uL3RhZyIpLnRhZwotICAgICd0YWcnCi0gICAgPj4+IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoInRvZyIpCi0gICAgPj4+IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoInRvZy9mb28iKQotICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJ0YWciKQotICAgICd0ZXh0JwotICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJzZWN0aW9uL25leHR0YWciKQotICAgICcnCi0gICAgPj4+IGVsZW0uZmluZHRleHQoInNlY3Rpb24vbmV4dHRhZyIsICJkZWZhdWx0IikKLSAgICAnJwotICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJ0b2ciKQotICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJ0b2ciLCAiZGVmYXVsdCIpCi0gICAgJ2RlZmF1bHQnCi0gICAgPj4+IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmR0ZXh0KCJ0YWciKQotICAgICd0ZXh0JwotICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kdGV4dCgidG9nL2ZvbyIpCi0gICAgPj4+IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmR0ZXh0KCJ0b2cvZm9vIiwgImRlZmF1bHQiKQotICAgICdkZWZhdWx0JwotICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kdGV4dCgiLi90YWciKQotICAgICd0ZXh0JwotICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kdGV4dCgiL3RhZyIpCi0gICAgJ3RleHQnCi0gICAgPj4+IGVsZW0uZmluZHRleHQoInNlY3Rpb24vdGFnIikKLSAgICAnc3VidGV4dCcKLSAgICA+Pj4gRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZHRleHQoInNlY3Rpb24vdGFnIikKLSAgICAnc3VidGV4dCcKLSAgICA+Pj4gRVQuWE1MKCc8cm9vdD48ZW1wdHkgLz48L3Jvb3Q+JykuZmluZHRleHQoJ2VtcHR5JykKLSAgICAnJwotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIi4iKSkKLSAgICBbJ2JvZHknXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoInRhZyIpKQotICAgIFsndGFnJywgJ3RhZyddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgidG9nIikpCi0gICAgW10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJ0b2cvZm9vIikpCi0gICAgW10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIqIikpCi0gICAgWyd0YWcnLCAndGFnJywgJ3NlY3Rpb24nXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIi4vL3RhZyIpKQotICAgIFsndGFnJywgJ3RhZycsICd0YWcnLCAndGFnJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJzZWN0aW9uL3RhZyIpKQotICAgIFsndGFnJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJzZWN0aW9uLy90YWciKSkKLSAgICBbJ3RhZycsICd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoInNlY3Rpb24vKiIpKQotICAgIFsndGFnJywgJ25leHR0YWcnLCAnbmV4dHNlY3Rpb24nXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoInNlY3Rpb24vLyoiKSkKLSAgICBbJ3RhZycsICduZXh0dGFnJywgJ25leHRzZWN0aW9uJywgJ3RhZyddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgic2VjdGlvbi8uLy8qIikpCi0gICAgWyd0YWcnLCAnbmV4dHRhZycsICduZXh0c2VjdGlvbicsICd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIiovKiIpKQotICAgIFsndGFnJywgJ25leHR0YWcnLCAnbmV4dHNlY3Rpb24nXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIiovLyoiKSkKLSAgICBbJ3RhZycsICduZXh0dGFnJywgJ25leHRzZWN0aW9uJywgJ3RhZyddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiKi90YWciKSkKLSAgICBbJ3RhZyddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiKi8uL3RhZyIpKQotICAgIFsndGFnJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuL3RhZyIpKQotICAgIFsndGFnJywgJ3RhZyddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiLi8vdGFnIikpCi0gICAgWyd0YWcnLCAndGFnJywgJ3RhZycsICd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIi4vLi90YWciKSkKLSAgICBbJ3RhZycsICd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIi4vL3RhZ1tAY2xhc3NdIikpCi0gICAgWyd0YWcnLCAndGFnJywgJ3RhZyddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiLi8vdGFnW0BjbGFzcz0nYSddIikpCi0gICAgWyd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIi4vL3RhZ1tAY2xhc3M9J2InXSIpKQotICAgIFsndGFnJywgJ3RhZyddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiLi8vdGFnW0BpZF0iKSkKLSAgICBbJ3RhZyddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiLi8vc2VjdGlvblt0YWddIikpCi0gICAgWydzZWN0aW9uJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuLy9zZWN0aW9uW2VsZW1lbnRdIikpCi0gICAgW10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuLi90YWciKSkKLSAgICBbXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoInNlY3Rpb24vLi4vdGFnIikpCi0gICAgWyd0YWcnLCAndGFnJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZGFsbCgiLi90YWciKSkKLSAgICBbJ3RhZycsICd0YWcnXQorICAgIGRlZiB0ZXN0X2ZpbGVfaW5pdChzZWxmKToKKyAgICAgICAgc3RyaW5nZmlsZSA9IGlvLkJ5dGVzSU8oU0FNUExFX1hNTC5lbmNvZGUoInV0Zi04IikpCisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShmaWxlPXN0cmluZ2ZpbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJlZS5maW5kKCJ0YWciKS50YWcsICd0YWcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyZWUuZmluZCgic2VjdGlvbi90YWciKS50YWcsICd0YWcnKQogCi0gICAgRm9sbG93aW5nIGV4YW1wbGUgaXMgaW52YWxpZCBpbiAxLjIuCi0gICAgQSBsZWFkaW5nICcqJyBpcyBhc3N1bWVkIGluIDEuMy4KKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKGZpbGU9U0lNUExFX1hNTEZJTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJlZS5maW5kKCJlbGVtZW50IikudGFnLCAnZWxlbWVudCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJlZS5maW5kKCJlbGVtZW50Ly4uL2VtcHR5LWVsZW1lbnQiKS50YWcsCisgICAgICAgICAgICAgICAgJ2VtcHR5LWVsZW1lbnQnKQogCi0gICAgPj4+IGVsZW0uZmluZGFsbCgic2VjdGlvbi8vIikgPT0gZWxlbS5maW5kYWxsKCJzZWN0aW9uLy8qIikKLSAgICBUcnVlCisgICAgZGVmIHRlc3RfcGF0aF9jYWNoZShzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBwYXRoIGNhY2hlIGJlaGF2ZXMgc2FuZWx5LgogCi0gICAgRVQncyBQYXRoIG1vZHVsZSBoYW5kbGVzIHRoaXMgY2FzZSBpbmNvcnJlY3RseTsgdGhpcyBnaXZlcwotICAgIGEgd2FybmluZyBpbiAxLjMsIGFuZCB0aGUgYmVoYXZpb3VyIHdpbGwgYmUgbW9kaWZpZWQgaW4gMS40LgorICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFBhdGgKIAotICAgID4+PiBzdW1tYXJpemVfbGlzdChFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kYWxsKCIvdGFnIikpCi0gICAgWyd0YWcnLCAndGFnJ10KKyAgICAgICAgZWxlbSA9IEVULlhNTChTQU1QTEVfWE1MKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMCk6IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoJy4vJytzdHIoaSkpCisgICAgICAgIGNhY2hlX2xlbl8xMCA9IGxlbihFbGVtZW50UGF0aC5fY2FjaGUpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwKTogRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgnLi8nK3N0cihpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oRWxlbWVudFBhdGguX2NhY2hlKSwgY2FjaGVfbGVuXzEwKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgyMCk6IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoJy4vJytzdHIoaSkpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oRWxlbWVudFBhdGguX2NhY2hlKSwgY2FjaGVfbGVuXzEwKQorICAgICAgICBmb3IgaSBpbiByYW5nZSg2MDApOiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCcuLycrc3RyKGkpKQorICAgICAgICBzZWxmLmFzc2VydExlc3MobGVuKEVsZW1lbnRQYXRoLl9jYWNoZSksIDUwMCkKIAotICAgID4+PiBlbGVtID0gRVQuWE1MKFNBTVBMRV9YTUxfTlMpCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgidGFnIikpCi0gICAgW10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJ7aHR0cDovL2VmZmJvdC5vcmcvbnN9dGFnIikpCi0gICAgWyd7aHR0cDovL2VmZmJvdC5vcmcvbnN9dGFnJywgJ3todHRwOi8vZWZmYm90Lm9yZy9uc310YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIi4vL3todHRwOi8vZWZmYm90Lm9yZy9uc310YWciKSkKLSAgICBbJ3todHRwOi8vZWZmYm90Lm9yZy9uc310YWcnLCAne2h0dHA6Ly9lZmZib3Qub3JnL25zfXRhZycsICd7aHR0cDovL2VmZmJvdC5vcmcvbnN9dGFnJ10KLSAgICAiIiIKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICAjIFRlc3QgY29weSBoYW5kbGluZyAoZXRjKS4KIAotZGVmIGZpbGVfaW5pdCgpOgotICAgICIiIgotICAgID4+PiBpbXBvcnQgaW8KKyAgICAgICAgaW1wb3J0IGNvcHkKKyAgICAgICAgZTEgPSBFVC5YTUwoIjx0YWc+aGVsbG88Zm9vLz48L3RhZz4iKQorICAgICAgICBlMiA9IGNvcHkuY29weShlMSkKKyAgICAgICAgZTMgPSBjb3B5LmRlZXBjb3B5KGUxKQorICAgICAgICBlMS5maW5kKCJmb28iKS50YWcgPSAiYmFyIgorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlMSwgJzx0YWc+aGVsbG88YmFyIC8+PC90YWc+JykKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZTIsICc8dGFnPmhlbGxvPGJhciAvPjwvdGFnPicpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGUzLCAnPHRhZz5oZWxsbzxmb28gLz48L3RhZz4nKQogCi0gICAgPj4+IHN0cmluZ2ZpbGUgPSBpby5CeXRlc0lPKFNBTVBMRV9YTUwuZW5jb2RlKCJ1dGYtOCIpKQotICAgID4+PiB0cmVlID0gRVQuRWxlbWVudFRyZWUoZmlsZT1zdHJpbmdmaWxlKQotICAgID4+PiB0cmVlLmZpbmQoInRhZyIpLnRhZwotICAgICd0YWcnCi0gICAgPj4+IHRyZWUuZmluZCgic2VjdGlvbi90YWciKS50YWcKLSAgICAndGFnJworICAgIGRlZiB0ZXN0X2F0dHJpYihzZWxmKToKKyAgICAgICAgIyBUZXN0IGF0dHJpYnV0ZSBoYW5kbGluZy4KIAotICAgID4+PiB0cmVlID0gRVQuRWxlbWVudFRyZWUoZmlsZT1TSU1QTEVfWE1MRklMRSkKLSAgICA+Pj4gdHJlZS5maW5kKCJlbGVtZW50IikudGFnCi0gICAgJ2VsZW1lbnQnCi0gICAgPj4+IHRyZWUuZmluZCgiZWxlbWVudC8uLi9lbXB0eS1lbGVtZW50IikudGFnCi0gICAgJ2VtcHR5LWVsZW1lbnQnCi0gICAgIiIiCisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciKQorICAgICAgICBlbGVtLmdldCgia2V5IikgIyAxLjEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbGVtLmdldCgia2V5IiwgImRlZmF1bHQiKSwgJ2RlZmF1bHQnKSAjIDEuMgogCi1kZWYgYmFkX2ZpbmQoKToKLSAgICAiIiIKLSAgICBDaGVjayBiYWQgb3IgdW5zdXBwb3J0ZWQgcGF0aCBleHByZXNzaW9ucy4KKyAgICAgICAgZWxlbS5zZXQoImtleSIsICJ2YWx1ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWxlbS5nZXQoImtleSIpLCAndmFsdWUnKSAjIDEuMwogCi0gICAgPj4+IGVsZW0gPSBFVC5YTUwoU0FNUExFX1hNTCkKLSAgICA+Pj4gZWxlbS5maW5kYWxsKCIvdGFnIikKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgU3ludGF4RXJyb3I6IGNhbm5vdCB1c2UgYWJzb2x1dGUgcGF0aCBvbiBlbGVtZW50Ci0gICAgIiIiCisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciLCBrZXk9InZhbHVlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbGVtLmdldCgia2V5IiksICd2YWx1ZScpICMgMi4xCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWxlbS5hdHRyaWIsIHsna2V5JzogJ3ZhbHVlJ30pICMgMi4yCiAKLWRlZiBwYXRoX2NhY2hlKCk6Ci0gICAgIiIiCi0gICAgQ2hlY2sgdGhhdCB0aGUgcGF0aCBjYWNoZSBiZWhhdmVzIHNhbmVseS4KKyAgICAgICAgYXR0cmliID0geyJrZXkiOiAidmFsdWUifQorICAgICAgICBlbGVtID0gRVQuRWxlbWVudCgidGFnIiwgYXR0cmliKQorICAgICAgICBhdHRyaWIuY2xlYXIoKSAjIGNoZWNrIGZvciBhbGlhc2luZyBpc3N1ZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbGVtLmdldCgia2V5IiksICd2YWx1ZScpICMgMy4xCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWxlbS5hdHRyaWIsIHsna2V5JzogJ3ZhbHVlJ30pICMgMy4yCiAKLSAgICA+Pj4gZWxlbSA9IEVULlhNTChTQU1QTEVfWE1MKQotICAgID4+PiBmb3IgaSBpbiByYW5nZSgxMCk6IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoJy4vJytzdHIoaSkpCi0gICAgPj4+IGNhY2hlX2xlbl8xMCA9IGxlbihFVC5FbGVtZW50UGF0aC5fY2FjaGUpCi0gICAgPj4+IGZvciBpIGluIHJhbmdlKDEwKTogRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgnLi8nK3N0cihpKSkKLSAgICA+Pj4gbGVuKEVULkVsZW1lbnRQYXRoLl9jYWNoZSkgPT0gY2FjaGVfbGVuXzEwCi0gICAgVHJ1ZQotICAgID4+PiBmb3IgaSBpbiByYW5nZSgyMCk6IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoJy4vJytzdHIoaSkpCi0gICAgPj4+IGxlbihFVC5FbGVtZW50UGF0aC5fY2FjaGUpID4gY2FjaGVfbGVuXzEwCi0gICAgVHJ1ZQotICAgID4+PiBmb3IgaSBpbiByYW5nZSg2MDApOiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCcuLycrc3RyKGkpKQotICAgID4+PiBsZW4oRVQuRWxlbWVudFBhdGguX2NhY2hlKSA8IDUwMAotICAgIFRydWUKLSAgICAiIiIKKyAgICAgICAgYXR0cmliID0geyJrZXkiOiAidmFsdWUifQorICAgICAgICBlbGVtID0gRVQuRWxlbWVudCgidGFnIiwgKiphdHRyaWIpCisgICAgICAgIGF0dHJpYi5jbGVhcigpICMgY2hlY2sgZm9yIGFsaWFzaW5nIGlzc3VlcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVsZW0uZ2V0KCJrZXkiKSwgJ3ZhbHVlJykgIyA0LjEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbGVtLmF0dHJpYiwgeydrZXknOiAndmFsdWUnfSkgIyA0LjIKIAotZGVmIGNvcHkoKToKLSAgICAiIiIKLSAgICBUZXN0IGNvcHkgaGFuZGxpbmcgKGV0YykuCisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciLCB7ImtleSI6ICJvdGhlciJ9LCBrZXk9InZhbHVlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbGVtLmdldCgia2V5IiksICd2YWx1ZScpICMgNS4xCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWxlbS5hdHRyaWIsIHsna2V5JzogJ3ZhbHVlJ30pICMgNS4yCiAKLSAgICA+Pj4gaW1wb3J0IGNvcHkKLSAgICA+Pj4gZTEgPSBFVC5YTUwoIjx0YWc+aGVsbG88Zm9vLz48L3RhZz4iKQotICAgID4+PiBlMiA9IGNvcHkuY29weShlMSkKLSAgICA+Pj4gZTMgPSBjb3B5LmRlZXBjb3B5KGUxKQotICAgID4+PiBlMS5maW5kKCJmb28iKS50YWcgPSAiYmFyIgotICAgID4+PiBzZXJpYWxpemUoZTEpCi0gICAgJzx0YWc+aGVsbG88YmFyIC8+PC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZTIpCi0gICAgJzx0YWc+aGVsbG88YmFyIC8+PC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZTMpCi0gICAgJzx0YWc+aGVsbG88Zm9vIC8+PC90YWc+JworICAgICAgICBlbGVtID0gRVQuRWxlbWVudCgndGVzdCcpCisgICAgICAgIGVsZW0udGV4dCA9ICJhYSIKKyAgICAgICAgZWxlbS5zZXQoJ3Rlc3RhJywgJ3Rlc3R2YWwnKQorICAgICAgICBlbGVtLnNldCgndGVzdGInLCAndGVzdDInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULnRvc3RyaW5nKGVsZW0pLAorICAgICAgICAgICAgICAgIGInPHRlc3QgdGVzdGE9InRlc3R2YWwiIHRlc3RiPSJ0ZXN0MiI+YWE8L3Rlc3Q+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoZWxlbS5rZXlzKCkpLCBbJ3Rlc3RhJywgJ3Rlc3RiJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGVsZW0uaXRlbXMoKSksCisgICAgICAgICAgICAgICAgWygndGVzdGEnLCAndGVzdHZhbCcpLCAoJ3Rlc3RiJywgJ3Rlc3QyJyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVsZW0uYXR0cmliWyd0ZXN0YiddLCAndGVzdDInKQorICAgICAgICBlbGVtLmF0dHJpYlsndGVzdGInXSA9ICd0ZXN0MScKKyAgICAgICAgZWxlbS5hdHRyaWJbJ3Rlc3RjJ10gPSAndGVzdDInCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQudG9zdHJpbmcoZWxlbSksCisgICAgICAgICAgICAgICAgYic8dGVzdCB0ZXN0YT0idGVzdHZhbCIgdGVzdGI9InRlc3QxIiB0ZXN0Yz0idGVzdDIiPmFhPC90ZXN0PicpCiAKLSAgICAiIiIKKyAgICBkZWYgdGVzdF9tYWtlZWxlbWVudChzZWxmKToKKyAgICAgICAgIyBUZXN0IG1ha2VlbGVtZW50IGhhbmRsaW5nLgogCi1kZWYgYXR0cmliKCk6Ci0gICAgIiIiCi0gICAgVGVzdCBhdHRyaWJ1dGUgaGFuZGxpbmcuCisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciKQorICAgICAgICBhdHRyaWIgPSB7ImtleSI6ICJ2YWx1ZSJ9CisgICAgICAgIHN1YmVsZW0gPSBlbGVtLm1ha2VlbGVtZW50KCJzdWJ0YWciLCBhdHRyaWIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qoc3ViZWxlbS5hdHRyaWIsIGF0dHJpYiwgbXNnPSJhdHRyaWIgYWxpYXNpbmciKQorICAgICAgICBlbGVtLmFwcGVuZChzdWJlbGVtKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLCAnPHRhZz48c3VidGFnIGtleT0idmFsdWUiIC8+PC90YWc+JykKIAotICAgID4+PiBlbGVtID0gRVQuRWxlbWVudCgidGFnIikKLSAgICA+Pj4gZWxlbS5nZXQoImtleSIpICMgMS4xCi0gICAgPj4+IGVsZW0uZ2V0KCJrZXkiLCAiZGVmYXVsdCIpICMgMS4yCi0gICAgJ2RlZmF1bHQnCi0gICAgPj4+IGVsZW0uc2V0KCJrZXkiLCAidmFsdWUiKQotICAgID4+PiBlbGVtLmdldCgia2V5IikgIyAxLjMKLSAgICAndmFsdWUnCisgICAgICAgIGVsZW0uY2xlYXIoKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLCAnPHRhZyAvPicpCisgICAgICAgIGVsZW0uYXBwZW5kKHN1YmVsZW0pCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sICc8dGFnPjxzdWJ0YWcga2V5PSJ2YWx1ZSIgLz48L3RhZz4nKQorICAgICAgICBlbGVtLmV4dGVuZChbc3ViZWxlbSwgc3ViZWxlbV0pCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sCisgICAgICAgICAgICAnPHRhZz48c3VidGFnIGtleT0idmFsdWUiIC8+PHN1YnRhZyBrZXk9InZhbHVlIiAvPjxzdWJ0YWcga2V5PSJ2YWx1ZSIgLz48L3RhZz4nKQorICAgICAgICBlbGVtWzpdID0gW3N1YmVsZW1dCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sICc8dGFnPjxzdWJ0YWcga2V5PSJ2YWx1ZSIgLz48L3RhZz4nKQorICAgICAgICBlbGVtWzpdID0gdHVwbGUoW3N1YmVsZW1dKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLCAnPHRhZz48c3VidGFnIGtleT0idmFsdWUiIC8+PC90YWc+JykKIAotICAgID4+PiBlbGVtID0gRVQuRWxlbWVudCgidGFnIiwga2V5PSJ2YWx1ZSIpCi0gICAgPj4+IGVsZW0uZ2V0KCJrZXkiKSAjIDIuMQotICAgICd2YWx1ZScKLSAgICA+Pj4gZWxlbS5hdHRyaWIgIyAyLjIKLSAgICB7J2tleSc6ICd2YWx1ZSd9CisgICAgZGVmIHRlc3RfcGFyc2VmaWxlKHNlbGYpOgorICAgICAgICAjIFRlc3QgcGFyc2luZyBmcm9tIGZpbGUuCiAKLSAgICA+Pj4gYXR0cmliID0geyJrZXkiOiAidmFsdWUifQotICAgID4+PiBlbGVtID0gRVQuRWxlbWVudCgidGFnIiwgYXR0cmliKQotICAgID4+PiBhdHRyaWIuY2xlYXIoKSAjIGNoZWNrIGZvciBhbGlhc2luZyBpc3N1ZXMKLSAgICA+Pj4gZWxlbS5nZXQoImtleSIpICMgMy4xCi0gICAgJ3ZhbHVlJwotICAgID4+PiBlbGVtLmF0dHJpYiAjIDMuMgotICAgIHsna2V5JzogJ3ZhbHVlJ30KKyAgICAgICAgdHJlZSA9IEVULnBhcnNlKFNJTVBMRV9YTUxGSUxFKQorICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygpCisgICAgICAgIHRyZWUud3JpdGUoc3RyZWFtLCBlbmNvZGluZz0ndW5pY29kZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmdldHZhbHVlKCksCisgICAgICAgICAgICAgICAgJzxyb290PlxuJworICAgICAgICAgICAgICAgICcgICA8ZWxlbWVudCBrZXk9InZhbHVlIj50ZXh0PC9lbGVtZW50PlxuJworICAgICAgICAgICAgICAgICcgICA8ZWxlbWVudD50ZXh0PC9lbGVtZW50PnRhaWxcbicKKyAgICAgICAgICAgICAgICAnICAgPGVtcHR5LWVsZW1lbnQgLz5cbicKKyAgICAgICAgICAgICAgICAnPC9yb290PicpCisgICAgICAgIHRyZWUgPSBFVC5wYXJzZShTSU1QTEVfTlNfWE1MRklMRSkKKyAgICAgICAgc3RyZWFtID0gaW8uU3RyaW5nSU8oKQorICAgICAgICB0cmVlLndyaXRlKHN0cmVhbSwgZW5jb2Rpbmc9J3VuaWNvZGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgICAgICc8bnMwOnJvb3QgeG1sbnM6bnMwPSJuYW1lc3BhY2UiPlxuJworICAgICAgICAgICAgICAgICcgICA8bnMwOmVsZW1lbnQga2V5PSJ2YWx1ZSI+dGV4dDwvbnMwOmVsZW1lbnQ+XG4nCisgICAgICAgICAgICAgICAgJyAgIDxuczA6ZWxlbWVudD50ZXh0PC9uczA6ZWxlbWVudD50YWlsXG4nCisgICAgICAgICAgICAgICAgJyAgIDxuczA6ZW1wdHktZWxlbWVudCAvPlxuJworICAgICAgICAgICAgICAgICc8L25zMDpyb290PicpCiAKLSAgICA+Pj4gYXR0cmliID0geyJrZXkiOiAidmFsdWUifQotICAgID4+PiBlbGVtID0gRVQuRWxlbWVudCgidGFnIiwgKiphdHRyaWIpCi0gICAgPj4+IGF0dHJpYi5jbGVhcigpICMgY2hlY2sgZm9yIGFsaWFzaW5nIGlzc3VlcwotICAgID4+PiBlbGVtLmdldCgia2V5IikgIyA0LjEKLSAgICAndmFsdWUnCi0gICAgPj4+IGVsZW0uYXR0cmliICMgNC4yCi0gICAgeydrZXknOiAndmFsdWUnfQorICAgICAgICB3aXRoIG9wZW4oU0lNUExFX1hNTEZJTEUpIGFzIGY6CisgICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKIAotICAgID4+PiBlbGVtID0gRVQuRWxlbWVudCgidGFnIiwgeyJrZXkiOiAib3RoZXIifSwga2V5PSJ2YWx1ZSIpCi0gICAgPj4+IGVsZW0uZ2V0KCJrZXkiKSAjIDUuMQotICAgICd2YWx1ZScKLSAgICA+Pj4gZWxlbS5hdHRyaWIgIyA1LjIKLSAgICB7J2tleSc6ICd2YWx1ZSd9CisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocGFyc2VyLnZlcnNpb24sIHInXkV4cGF0ICcpCisgICAgICAgIHBhcnNlci5mZWVkKGRhdGEpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKHBhcnNlci5jbG9zZSgpLAorICAgICAgICAgICAgICAgICc8cm9vdD5cbicKKyAgICAgICAgICAgICAgICAnICAgPGVsZW1lbnQga2V5PSJ2YWx1ZSI+dGV4dDwvZWxlbWVudD5cbicKKyAgICAgICAgICAgICAgICAnICAgPGVsZW1lbnQ+dGV4dDwvZWxlbWVudD50YWlsXG4nCisgICAgICAgICAgICAgICAgJyAgIDxlbXB0eS1lbGVtZW50IC8+XG4nCisgICAgICAgICAgICAgICAgJzwvcm9vdD4nKQogCi0gICAgPj4+IGVsZW0gPSBFVC5FbGVtZW50KCd0ZXN0JykKLSAgICA+Pj4gZWxlbS50ZXh0ID0gImFhIgotICAgID4+PiBlbGVtLnNldCgndGVzdGEnLCAndGVzdHZhbCcpCi0gICAgPj4+IGVsZW0uc2V0KCd0ZXN0YicsICd0ZXN0MicpCi0gICAgPj4+IEVULnRvc3RyaW5nKGVsZW0pCi0gICAgYic8dGVzdCB0ZXN0YT0idGVzdHZhbCIgdGVzdGI9InRlc3QyIj5hYTwvdGVzdD4nCi0gICAgPj4+IHNvcnRlZChlbGVtLmtleXMoKSkKLSAgICBbJ3Rlc3RhJywgJ3Rlc3RiJ10KLSAgICA+Pj4gc29ydGVkKGVsZW0uaXRlbXMoKSkKLSAgICBbKCd0ZXN0YScsICd0ZXN0dmFsJyksICgndGVzdGInLCAndGVzdDInKV0KLSAgICA+Pj4gZWxlbS5hdHRyaWJbJ3Rlc3RiJ10KLSAgICAndGVzdDInCi0gICAgPj4+IGVsZW0uYXR0cmliWyd0ZXN0YiddID0gJ3Rlc3QxJwotICAgID4+PiBlbGVtLmF0dHJpYlsndGVzdGMnXSA9ICd0ZXN0MicKLSAgICA+Pj4gRVQudG9zdHJpbmcoZWxlbSkKLSAgICBiJzx0ZXN0IHRlc3RhPSJ0ZXN0dmFsIiB0ZXN0Yj0idGVzdDEiIHRlc3RjPSJ0ZXN0MiI+YWE8L3Rlc3Q+JwotICAgICIiIgorICAgICAgICBwYXJzZXIgPSBFVC5YTUxUcmVlQnVpbGRlcigpICMgMS4yIGNvbXBhdGliaWxpdHkKKyAgICAgICAgcGFyc2VyLmZlZWQoZGF0YSkKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2socGFyc2VyLmNsb3NlKCksCisgICAgICAgICAgICAgICAgJzxyb290PlxuJworICAgICAgICAgICAgICAgICcgICA8ZWxlbWVudCBrZXk9InZhbHVlIj50ZXh0PC9lbGVtZW50PlxuJworICAgICAgICAgICAgICAgICcgICA8ZWxlbWVudD50ZXh0PC9lbGVtZW50PnRhaWxcbicKKyAgICAgICAgICAgICAgICAnICAgPGVtcHR5LWVsZW1lbnQgLz5cbicKKyAgICAgICAgICAgICAgICAnPC9yb290PicpCiAKLWRlZiBtYWtlZWxlbWVudCgpOgotICAgICIiIgotICAgIFRlc3QgbWFrZWVsZW1lbnQgaGFuZGxpbmcuCisgICAgICAgIHRhcmdldCA9IEVULlRyZWVCdWlsZGVyKCkKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD10YXJnZXQpCisgICAgICAgIHBhcnNlci5mZWVkKGRhdGEpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKHBhcnNlci5jbG9zZSgpLAorICAgICAgICAgICAgICAgICc8cm9vdD5cbicKKyAgICAgICAgICAgICAgICAnICAgPGVsZW1lbnQga2V5PSJ2YWx1ZSI+dGV4dDwvZWxlbWVudD5cbicKKyAgICAgICAgICAgICAgICAnICAgPGVsZW1lbnQ+dGV4dDwvZWxlbWVudD50YWlsXG4nCisgICAgICAgICAgICAgICAgJyAgIDxlbXB0eS1lbGVtZW50IC8+XG4nCisgICAgICAgICAgICAgICAgJzwvcm9vdD4nKQogCi0gICAgPj4+IGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciKQotICAgID4+PiBhdHRyaWIgPSB7ImtleSI6ICJ2YWx1ZSJ9Ci0gICAgPj4+IHN1YmVsZW0gPSBlbGVtLm1ha2VlbGVtZW50KCJzdWJ0YWciLCBhdHRyaWIpCi0gICAgPj4+IGlmIHN1YmVsZW0uYXR0cmliIGlzIGF0dHJpYjoKLSAgICAuLi4gICAgIHByaW50KCJhdHRyaWIgYWxpYXNpbmciKQotICAgID4+PiBlbGVtLmFwcGVuZChzdWJlbGVtKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZz48c3VidGFnIGtleT0idmFsdWUiIC8+PC90YWc+JworICAgIGRlZiB0ZXN0X3BhcnNlbGl0ZXJhbChzZWxmKToKKyAgICAgICAgZWxlbWVudCA9IEVULlhNTCgiPGh0bWw+PGJvZHk+dGV4dDwvYm9keT48L2h0bWw+IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC50b3N0cmluZyhlbGVtZW50LCBlbmNvZGluZz0ndW5pY29kZScpLAorICAgICAgICAgICAgICAgICc8aHRtbD48Ym9keT50ZXh0PC9ib2R5PjwvaHRtbD4nKQorICAgICAgICBlbGVtZW50ID0gRVQuZnJvbXN0cmluZygiPGh0bWw+PGJvZHk+dGV4dDwvYm9keT48L2h0bWw+IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC50b3N0cmluZyhlbGVtZW50LCBlbmNvZGluZz0ndW5pY29kZScpLAorICAgICAgICAgICAgICAgICc8aHRtbD48Ym9keT50ZXh0PC9ib2R5PjwvaHRtbD4nKQorICAgICAgICBzZXF1ZW5jZSA9IFsiPGh0bWw+PGJvZHk+IiwgInRleHQ8L2JvIiwgImR5PjwvaHRtbD4iXQorICAgICAgICBlbGVtZW50ID0gRVQuZnJvbXN0cmluZ2xpc3Qoc2VxdWVuY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQudG9zdHJpbmcoZWxlbWVudCksCisgICAgICAgICAgICAgICAgYic8aHRtbD48Ym9keT50ZXh0PC9ib2R5PjwvaHRtbD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiIi5qb2luKEVULnRvc3RyaW5nbGlzdChlbGVtZW50KSksCisgICAgICAgICAgICAgICAgYic8aHRtbD48Ym9keT50ZXh0PC9ib2R5PjwvaHRtbD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULnRvc3RyaW5nKGVsZW1lbnQsICJhc2NpaSIpLAorICAgICAgICAgICAgICAgIGIiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nYXNjaWknPz5cbiIKKyAgICAgICAgICAgICAgICBiIjxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPiIpCisgICAgICAgIF8sIGlkcyA9IEVULlhNTElEKCI8aHRtbD48Ym9keT50ZXh0PC9ib2R5PjwvaHRtbD4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihpZHMpLCAwKQorICAgICAgICBfLCBpZHMgPSBFVC5YTUxJRCgiPGh0bWw+PGJvZHkgaWQ9J2JvZHknPnRleHQ8L2JvZHk+PC9odG1sPiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGlkcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWRzWyJib2R5Il0udGFnLCAnYm9keScpCiAKLSAgICA+Pj4gZWxlbS5jbGVhcigpCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICc8dGFnIC8+JwotICAgID4+PiBlbGVtLmFwcGVuZChzdWJlbGVtKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZz48c3VidGFnIGtleT0idmFsdWUiIC8+PC90YWc+JwotICAgID4+PiBlbGVtLmV4dGVuZChbc3ViZWxlbSwgc3ViZWxlbV0pCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICc8dGFnPjxzdWJ0YWcga2V5PSJ2YWx1ZSIgLz48c3VidGFnIGtleT0idmFsdWUiIC8+PHN1YnRhZyBrZXk9InZhbHVlIiAvPjwvdGFnPicKLSAgICA+Pj4gZWxlbVs6XSA9IFtzdWJlbGVtXQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZz48c3VidGFnIGtleT0idmFsdWUiIC8+PC90YWc+JwotICAgID4+PiBlbGVtWzpdID0gdHVwbGUoW3N1YmVsZW1dKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZz48c3VidGFnIGtleT0idmFsdWUiIC8+PC90YWc+JworICAgIGRlZiB0ZXN0X2l0ZXJwYXJzZShzZWxmKToKKyAgICAgICAgIyBUZXN0IGl0ZXJwYXJzZSBpbnRlcmZhY2UuCiAKLSAgICAiIiIKKyAgICAgICAgaXRlcnBhcnNlID0gRVQuaXRlcnBhcnNlCiAKLWRlZiBwYXJzZWZpbGUoKToKLSAgICAiIiIKLSAgICBUZXN0IHBhcnNpbmcgZnJvbSBmaWxlLgorICAgICAgICBjb250ZXh0ID0gaXRlcnBhcnNlKFNJTVBMRV9YTUxGSUxFKQorICAgICAgICBhY3Rpb24sIGVsZW0gPSBuZXh0KGNvbnRleHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGFjdGlvbiwgZWxlbS50YWcpLCAoJ2VuZCcsICdlbGVtZW50JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyhhY3Rpb24sIGVsZW0udGFnKSBmb3IgYWN0aW9uLCBlbGVtIGluIGNvbnRleHRdLCBbCisgICAgICAgICAgICAgICAgKCdlbmQnLCAnZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnZW5kJywgJ2VtcHR5LWVsZW1lbnQnKSwKKyAgICAgICAgICAgICAgICAoJ2VuZCcsICdyb290JyksCisgICAgICAgICAgICBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRleHQucm9vdC50YWcsICdyb290JykKIAotICAgID4+PiB0cmVlID0gRVQucGFyc2UoU0lNUExFX1hNTEZJTEUpCi0gICAgPj4+IG5vcm1hbGl6ZV9jcmxmKHRyZWUpCi0gICAgPj4+IHRyZWUud3JpdGUoc3lzLnN0ZG91dCwgZW5jb2Rpbmc9J3VuaWNvZGUnKQotICAgIDxyb290PgotICAgICAgIDxlbGVtZW50IGtleT0idmFsdWUiPnRleHQ8L2VsZW1lbnQ+Ci0gICAgICAgPGVsZW1lbnQ+dGV4dDwvZWxlbWVudD50YWlsCi0gICAgICAgPGVtcHR5LWVsZW1lbnQgLz4KLSAgICA8L3Jvb3Q+Ci0gICAgPj4+IHRyZWUgPSBFVC5wYXJzZShTSU1QTEVfTlNfWE1MRklMRSkKLSAgICA+Pj4gbm9ybWFsaXplX2NybGYodHJlZSkKLSAgICA+Pj4gdHJlZS53cml0ZShzeXMuc3Rkb3V0LCBlbmNvZGluZz0ndW5pY29kZScpCi0gICAgPG5zMDpyb290IHhtbG5zOm5zMD0ibmFtZXNwYWNlIj4KLSAgICAgICA8bnMwOmVsZW1lbnQga2V5PSJ2YWx1ZSI+dGV4dDwvbnMwOmVsZW1lbnQ+Ci0gICAgICAgPG5zMDplbGVtZW50PnRleHQ8L25zMDplbGVtZW50PnRhaWwKLSAgICAgICA8bnMwOmVtcHR5LWVsZW1lbnQgLz4KLSAgICA8L25zMDpyb290PgorICAgICAgICBjb250ZXh0ID0gaXRlcnBhcnNlKFNJTVBMRV9OU19YTUxGSUxFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoYWN0aW9uLCBlbGVtLnRhZykgZm9yIGFjdGlvbiwgZWxlbSBpbiBjb250ZXh0XSwgWworICAgICAgICAgICAgICAgICgnZW5kJywgJ3tuYW1lc3BhY2V9ZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnZW5kJywgJ3tuYW1lc3BhY2V9ZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnZW5kJywgJ3tuYW1lc3BhY2V9ZW1wdHktZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnZW5kJywgJ3tuYW1lc3BhY2V9cm9vdCcpLAorICAgICAgICAgICAgXSkKIAotICAgID4+PiB3aXRoIG9wZW4oU0lNUExFX1hNTEZJTEUpIGFzIGY6Ci0gICAgLi4uICAgICBkYXRhID0gZi5yZWFkKCkKKyAgICAgICAgZXZlbnRzID0gKCkKKyAgICAgICAgY29udGV4dCA9IGl0ZXJwYXJzZShTSU1QTEVfWE1MRklMRSwgZXZlbnRzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoYWN0aW9uLCBlbGVtLnRhZykgZm9yIGFjdGlvbiwgZWxlbSBpbiBjb250ZXh0XSwgW10pCiAKLSAgICA+Pj4gcGFyc2VyID0gRVQuWE1MUGFyc2VyKCkKLSAgICA+Pj4gcGFyc2VyLnZlcnNpb24gICMgZG9jdGVzdDogK0VMTElQU0lTCi0gICAgJ0V4cGF0IC4uLicKLSAgICA+Pj4gcGFyc2VyLmZlZWQoZGF0YSkKLSAgICA+Pj4gcHJpbnQoc2VyaWFsaXplKHBhcnNlci5jbG9zZSgpKSkKLSAgICA8cm9vdD4KLSAgICAgICA8ZWxlbWVudCBrZXk9InZhbHVlIj50ZXh0PC9lbGVtZW50PgotICAgICAgIDxlbGVtZW50PnRleHQ8L2VsZW1lbnQ+dGFpbAotICAgICAgIDxlbXB0eS1lbGVtZW50IC8+Ci0gICAgPC9yb290PgorICAgICAgICBldmVudHMgPSAoKQorICAgICAgICBjb250ZXh0ID0gaXRlcnBhcnNlKFNJTVBMRV9YTUxGSUxFLCBldmVudHM9ZXZlbnRzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoYWN0aW9uLCBlbGVtLnRhZykgZm9yIGFjdGlvbiwgZWxlbSBpbiBjb250ZXh0XSwgW10pCiAKLSAgICA+Pj4gcGFyc2VyID0gRVQuWE1MVHJlZUJ1aWxkZXIoKSAjIDEuMiBjb21wYXRpYmlsaXR5Ci0gICAgPj4+IHBhcnNlci5mZWVkKGRhdGEpCi0gICAgPj4+IHByaW50KHNlcmlhbGl6ZShwYXJzZXIuY2xvc2UoKSkpCi0gICAgPHJvb3Q+Ci0gICAgICAgPGVsZW1lbnQga2V5PSJ2YWx1ZSI+dGV4dDwvZWxlbWVudD4KLSAgICAgICA8ZWxlbWVudD50ZXh0PC9lbGVtZW50PnRhaWwKLSAgICAgICA8ZW1wdHktZWxlbWVudCAvPgotICAgIDwvcm9vdD4KKyAgICAgICAgZXZlbnRzID0gKCJzdGFydCIsICJlbmQiKQorICAgICAgICBjb250ZXh0ID0gaXRlcnBhcnNlKFNJTVBMRV9YTUxGSUxFLCBldmVudHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyhhY3Rpb24sIGVsZW0udGFnKSBmb3IgYWN0aW9uLCBlbGVtIGluIGNvbnRleHRdLCBbCisgICAgICAgICAgICAgICAgKCdzdGFydCcsICdyb290JyksCisgICAgICAgICAgICAgICAgKCdzdGFydCcsICdlbGVtZW50JyksCisgICAgICAgICAgICAgICAgKCdlbmQnLCAnZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnc3RhcnQnLCAnZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnZW5kJywgJ2VsZW1lbnQnKSwKKyAgICAgICAgICAgICAgICAoJ3N0YXJ0JywgJ2VtcHR5LWVsZW1lbnQnKSwKKyAgICAgICAgICAgICAgICAoJ2VuZCcsICdlbXB0eS1lbGVtZW50JyksCisgICAgICAgICAgICAgICAgKCdlbmQnLCAncm9vdCcpLAorICAgICAgICAgICAgXSkKIAotICAgID4+PiB0YXJnZXQgPSBFVC5UcmVlQnVpbGRlcigpCi0gICAgPj4+IHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9dGFyZ2V0KQotICAgID4+PiBwYXJzZXIuZmVlZChkYXRhKQotICAgID4+PiBwcmludChzZXJpYWxpemUocGFyc2VyLmNsb3NlKCkpKQotICAgIDxyb290PgotICAgICAgIDxlbGVtZW50IGtleT0idmFsdWUiPnRleHQ8L2VsZW1lbnQ+Ci0gICAgICAgPGVsZW1lbnQ+dGV4dDwvZWxlbWVudD50YWlsCi0gICAgICAgPGVtcHR5LWVsZW1lbnQgLz4KLSAgICA8L3Jvb3Q+Ci0gICAgIiIiCisgICAgICAgIGV2ZW50cyA9ICgic3RhcnQiLCAiZW5kIiwgInN0YXJ0LW5zIiwgImVuZC1ucyIpCisgICAgICAgIGNvbnRleHQgPSBpdGVycGFyc2UoU0lNUExFX05TX1hNTEZJTEUsIGV2ZW50cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbKGFjdGlvbiwgZWxlbS50YWcpIGlmIGFjdGlvbiBpbiAoInN0YXJ0IiwgImVuZCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChhY3Rpb24sIGVsZW0pCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhY3Rpb24sIGVsZW0gaW4gY29udGV4dF0sIFsKKyAgICAgICAgICAgICAgICAoJ3N0YXJ0LW5zJywgKCcnLCAnbmFtZXNwYWNlJykpLAorICAgICAgICAgICAgICAgICgnc3RhcnQnLCAne25hbWVzcGFjZX1yb290JyksCisgICAgICAgICAgICAgICAgKCdzdGFydCcsICd7bmFtZXNwYWNlfWVsZW1lbnQnKSwKKyAgICAgICAgICAgICAgICAoJ2VuZCcsICd7bmFtZXNwYWNlfWVsZW1lbnQnKSwKKyAgICAgICAgICAgICAgICAoJ3N0YXJ0JywgJ3tuYW1lc3BhY2V9ZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnZW5kJywgJ3tuYW1lc3BhY2V9ZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnc3RhcnQnLCAne25hbWVzcGFjZX1lbXB0eS1lbGVtZW50JyksCisgICAgICAgICAgICAgICAgKCdlbmQnLCAne25hbWVzcGFjZX1lbXB0eS1lbGVtZW50JyksCisgICAgICAgICAgICAgICAgKCdlbmQnLCAne25hbWVzcGFjZX1yb290JyksCisgICAgICAgICAgICAgICAgKCdlbmQtbnMnLCBOb25lKSwKKyAgICAgICAgICAgIF0pCiAKLWRlZiBwYXJzZWxpdGVyYWwoKToKLSAgICAiIiIKLSAgICA+Pj4gZWxlbWVudCA9IEVULlhNTCgiPGh0bWw+PGJvZHk+dGV4dDwvYm9keT48L2h0bWw+IikKLSAgICA+Pj4gRVQuRWxlbWVudFRyZWUoZWxlbWVudCkud3JpdGUoc3lzLnN0ZG91dCwgZW5jb2Rpbmc9J3VuaWNvZGUnKQotICAgIDxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPgotICAgID4+PiBlbGVtZW50ID0gRVQuZnJvbXN0cmluZygiPGh0bWw+PGJvZHk+dGV4dDwvYm9keT48L2h0bWw+IikKLSAgICA+Pj4gRVQuRWxlbWVudFRyZWUoZWxlbWVudCkud3JpdGUoc3lzLnN0ZG91dCwgZW5jb2Rpbmc9J3VuaWNvZGUnKQotICAgIDxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPgotICAgID4+PiBzZXF1ZW5jZSA9IFsiPGh0bWw+PGJvZHk+IiwgInRleHQ8L2JvIiwgImR5PjwvaHRtbD4iXQotICAgID4+PiBlbGVtZW50ID0gRVQuZnJvbXN0cmluZ2xpc3Qoc2VxdWVuY2UpCi0gICAgPj4+IEVULnRvc3RyaW5nKGVsZW1lbnQpCi0gICAgYic8aHRtbD48Ym9keT50ZXh0PC9ib2R5PjwvaHRtbD4nCi0gICAgPj4+IGIiIi5qb2luKEVULnRvc3RyaW5nbGlzdChlbGVtZW50KSkKLSAgICBiJzxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPicKLSAgICA+Pj4gRVQudG9zdHJpbmcoZWxlbWVudCwgImFzY2lpIikKLSAgICBiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2FzY2lpJz8+XFxuPGh0bWw+PGJvZHk+dGV4dDwvYm9keT48L2h0bWw+IgotICAgID4+PiBfLCBpZHMgPSBFVC5YTUxJRCgiPGh0bWw+PGJvZHk+dGV4dDwvYm9keT48L2h0bWw+IikKLSAgICA+Pj4gbGVuKGlkcykKLSAgICAwCi0gICAgPj4+IF8sIGlkcyA9IEVULlhNTElEKCI8aHRtbD48Ym9keSBpZD0nYm9keSc+dGV4dDwvYm9keT48L2h0bWw+IikKLSAgICA+Pj4gbGVuKGlkcykKLSAgICAxCi0gICAgPj4+IGlkc1siYm9keSJdLnRhZwotICAgICdib2R5JwotICAgICIiIgorICAgICAgICBldmVudHMgPSAoInN0YXJ0IiwgImVuZCIsICJib2d1cyIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICB3aXRoIG9wZW4oU0lNUExFX1hNTEZJTEUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgaXRlcnBhcnNlKGYsIGV2ZW50cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgInVua25vd24gZXZlbnQgJ2JvZ3VzJyIpCiAKLWRlZiBpdGVycGFyc2UoKToKLSAgICAiIiIKLSAgICBUZXN0IGl0ZXJwYXJzZSBpbnRlcmZhY2UuCisgICAgICAgIHNvdXJjZSA9IGlvLkJ5dGVzSU8oCisgICAgICAgICAgICBiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2lzby04ODU5LTEnPz5cbiIKKyAgICAgICAgICAgIGIiPGJvZHkgeG1sbnM9J2h0dHA6Ly8mIzIzMztmZmJvdC5vcmcvbnMnXG4iCisgICAgICAgICAgICBiIiAgICAgIHhtbG5zOmNsXHhlOT0naHR0cDovL2VmZmJvdC5vcmcvbnMnPnRleHQ8L2JvZHk+XG4iKQorICAgICAgICBldmVudHMgPSAoInN0YXJ0LW5zIiwpCisgICAgICAgIGNvbnRleHQgPSBpdGVycGFyc2Uoc291cmNlLCBldmVudHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyhhY3Rpb24sIGVsZW0pIGZvciBhY3Rpb24sIGVsZW0gaW4gY29udGV4dF0sIFsKKyAgICAgICAgICAgICAgICAoJ3N0YXJ0LW5zJywgKCcnLCAnaHR0cDovL1x4ZTlmZmJvdC5vcmcvbnMnKSksCisgICAgICAgICAgICAgICAgKCdzdGFydC1ucycsICgnY2xceGU5JywgJ2h0dHA6Ly9lZmZib3Qub3JnL25zJykpLAorICAgICAgICAgICAgXSkKIAotICAgID4+PiBpdGVycGFyc2UgPSBFVC5pdGVycGFyc2UKKyAgICAgICAgc291cmNlID0gaW8uU3RyaW5nSU8oIjxkb2N1bWVudCAvPmp1bmsiKQorICAgICAgICBpdCA9IGl0ZXJwYXJzZShzb3VyY2UpCisgICAgICAgIGFjdGlvbiwgZWxlbSA9IG5leHQoaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGFjdGlvbiwgZWxlbS50YWcpLCAoJ2VuZCcsICdkb2N1bWVudCcpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEVULlBhcnNlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgbmV4dChpdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAnanVuayBhZnRlciBkb2N1bWVudCBlbGVtZW50OiBsaW5lIDEsIGNvbHVtbiAxMicpCiAKLSAgICA+Pj4gY29udGV4dCA9IGl0ZXJwYXJzZShTSU1QTEVfWE1MRklMRSkKLSAgICA+Pj4gYWN0aW9uLCBlbGVtID0gbmV4dChjb250ZXh0KQotICAgID4+PiBwcmludChhY3Rpb24sIGVsZW0udGFnKQotICAgIGVuZCBlbGVtZW50Ci0gICAgPj4+IGZvciBhY3Rpb24sIGVsZW0gaW4gY29udGV4dDoKLSAgICAuLi4gICBwcmludChhY3Rpb24sIGVsZW0udGFnKQotICAgIGVuZCBlbGVtZW50Ci0gICAgZW5kIGVtcHR5LWVsZW1lbnQKLSAgICBlbmQgcm9vdAotICAgID4+PiBjb250ZXh0LnJvb3QudGFnCi0gICAgJ3Jvb3QnCi0KLSAgICA+Pj4gY29udGV4dCA9IGl0ZXJwYXJzZShTSU1QTEVfTlNfWE1MRklMRSkKLSAgICA+Pj4gZm9yIGFjdGlvbiwgZWxlbSBpbiBjb250ZXh0OgotICAgIC4uLiAgIHByaW50KGFjdGlvbiwgZWxlbS50YWcpCi0gICAgZW5kIHtuYW1lc3BhY2V9ZWxlbWVudAotICAgIGVuZCB7bmFtZXNwYWNlfWVsZW1lbnQKLSAgICBlbmQge25hbWVzcGFjZX1lbXB0eS1lbGVtZW50Ci0gICAgZW5kIHtuYW1lc3BhY2V9cm9vdAotCi0gICAgPj4+IGV2ZW50cyA9ICgpCi0gICAgPj4+IGNvbnRleHQgPSBpdGVycGFyc2UoU0lNUExFX1hNTEZJTEUsIGV2ZW50cykKLSAgICA+Pj4gZm9yIGFjdGlvbiwgZWxlbSBpbiBjb250ZXh0OgotICAgIC4uLiAgIHByaW50KGFjdGlvbiwgZWxlbS50YWcpCi0KLSAgICA+Pj4gZXZlbnRzID0gKCkKLSAgICA+Pj4gY29udGV4dCA9IGl0ZXJwYXJzZShTSU1QTEVfWE1MRklMRSwgZXZlbnRzPWV2ZW50cykKLSAgICA+Pj4gZm9yIGFjdGlvbiwgZWxlbSBpbiBjb250ZXh0OgotICAgIC4uLiAgIHByaW50KGFjdGlvbiwgZWxlbS50YWcpCi0KLSAgICA+Pj4gZXZlbnRzID0gKCJzdGFydCIsICJlbmQiKQotICAgID4+PiBjb250ZXh0ID0gaXRlcnBhcnNlKFNJTVBMRV9YTUxGSUxFLCBldmVudHMpCi0gICAgPj4+IGZvciBhY3Rpb24sIGVsZW0gaW4gY29udGV4dDoKLSAgICAuLi4gICBwcmludChhY3Rpb24sIGVsZW0udGFnKQotICAgIHN0YXJ0IHJvb3QKLSAgICBzdGFydCBlbGVtZW50Ci0gICAgZW5kIGVsZW1lbnQKLSAgICBzdGFydCBlbGVtZW50Ci0gICAgZW5kIGVsZW1lbnQKLSAgICBzdGFydCBlbXB0eS1lbGVtZW50Ci0gICAgZW5kIGVtcHR5LWVsZW1lbnQKLSAgICBlbmQgcm9vdAotCi0gICAgPj4+IGV2ZW50cyA9ICgic3RhcnQiLCAiZW5kIiwgInN0YXJ0LW5zIiwgImVuZC1ucyIpCi0gICAgPj4+IGNvbnRleHQgPSBpdGVycGFyc2UoU0lNUExFX05TX1hNTEZJTEUsIGV2ZW50cykKLSAgICA+Pj4gZm9yIGFjdGlvbiwgZWxlbSBpbiBjb250ZXh0OgotICAgIC4uLiAgIGlmIGFjdGlvbiBpbiAoInN0YXJ0IiwgImVuZCIpOgotICAgIC4uLiAgICAgcHJpbnQoYWN0aW9uLCBlbGVtLnRhZykKLSAgICAuLi4gICBlbHNlOgotICAgIC4uLiAgICAgcHJpbnQoYWN0aW9uLCBlbGVtKQotICAgIHN0YXJ0LW5zICgnJywgJ25hbWVzcGFjZScpCi0gICAgc3RhcnQge25hbWVzcGFjZX1yb290Ci0gICAgc3RhcnQge25hbWVzcGFjZX1lbGVtZW50Ci0gICAgZW5kIHtuYW1lc3BhY2V9ZWxlbWVudAotICAgIHN0YXJ0IHtuYW1lc3BhY2V9ZWxlbWVudAotICAgIGVuZCB7bmFtZXNwYWNlfWVsZW1lbnQKLSAgICBzdGFydCB7bmFtZXNwYWNlfWVtcHR5LWVsZW1lbnQKLSAgICBlbmQge25hbWVzcGFjZX1lbXB0eS1lbGVtZW50Ci0gICAgZW5kIHtuYW1lc3BhY2V9cm9vdAotICAgIGVuZC1ucyBOb25lCi0KLSAgICA+Pj4gZXZlbnRzID0gKCJzdGFydCIsICJlbmQiLCAiYm9ndXMiKQotICAgID4+PiB3aXRoIG9wZW4oU0lNUExFX1hNTEZJTEUsICJyYiIpIGFzIGY6Ci0gICAgLi4uICAgICBpdGVycGFyc2UoZiwgZXZlbnRzKQotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICBWYWx1ZUVycm9yOiB1bmtub3duIGV2ZW50ICdib2d1cycKLQotICAgID4+PiBpbXBvcnQgaW8KLQotICAgID4+PiBzb3VyY2UgPSBpby5CeXRlc0lPKAotICAgIC4uLiAgICAgYiI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdpc28tODg1OS0xJz8+XFxuIgotICAgIC4uLiAgICAgYiI8Ym9keSB4bWxucz0naHR0cDovLyYjMjMzO2ZmYm90Lm9yZy9ucydcXG4iCi0gICAgLi4uICAgICBiIiAgICAgIHhtbG5zOmNsXFx4ZTk9J2h0dHA6Ly9lZmZib3Qub3JnL25zJz50ZXh0PC9ib2R5PlxcbiIpCi0gICAgPj4+IGV2ZW50cyA9ICgic3RhcnQtbnMiLCkKLSAgICA+Pj4gY29udGV4dCA9IGl0ZXJwYXJzZShzb3VyY2UsIGV2ZW50cykKLSAgICA+Pj4gZm9yIGFjdGlvbiwgZWxlbSBpbiBjb250ZXh0OgotICAgIC4uLiAgICAgcHJpbnQoYWN0aW9uLCBlbGVtKQotICAgIHN0YXJ0LW5zICgnJywgJ2h0dHA6Ly9cXHhlOWZmYm90Lm9yZy9ucycpCi0gICAgc3RhcnQtbnMgKCdjbFxceGU5JywgJ2h0dHA6Ly9lZmZib3Qub3JnL25zJykKLQotICAgID4+PiBzb3VyY2UgPSBpby5TdHJpbmdJTygiPGRvY3VtZW50IC8+anVuayIpCi0gICAgPj4+IHRyeToKLSAgICAuLi4gICBmb3IgYWN0aW9uLCBlbGVtIGluIGl0ZXJwYXJzZShzb3VyY2UpOgotICAgIC4uLiAgICAgcHJpbnQoYWN0aW9uLCBlbGVtLnRhZykKLSAgICAuLi4gZXhjZXB0IEVULlBhcnNlRXJyb3IgYXMgdjoKLSAgICAuLi4gICBwcmludCh2KQotICAgIGVuZCBkb2N1bWVudAotICAgIGp1bmsgYWZ0ZXIgZG9jdW1lbnQgZWxlbWVudDogbGluZSAxLCBjb2x1bW4gMTIKLSAgICAiIiIKLQotZGVmIHdyaXRlZmlsZSgpOgotICAgICIiIgotICAgID4+PiBlbGVtID0gRVQuRWxlbWVudCgidGFnIikKLSAgICA+Pj4gZWxlbS50ZXh0ID0gInRleHQiCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICc8dGFnPnRleHQ8L3RhZz4nCi0gICAgPj4+IEVULlN1YkVsZW1lbnQoZWxlbSwgInN1YnRhZyIpLnRleHQgPSAic3VidGV4dCIKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCi0gICAgJzx0YWc+dGV4dDxzdWJ0YWc+c3VidGV4dDwvc3VidGFnPjwvdGFnPicKLQotICAgIFRlc3QgdGFnIHN1cHByZXNzaW9uCi0gICAgPj4+IGVsZW0udGFnID0gTm9uZQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAndGV4dDxzdWJ0YWc+c3VidGV4dDwvc3VidGFnPicKLSAgICA+Pj4gZWxlbS5pbnNlcnQoMCwgRVQuQ29tbWVudCgiY29tbWVudCIpKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkgICAgICMgYXNzdW1lcyAxLjMKLSAgICAndGV4dDwhLS1jb21tZW50LS0+PHN1YnRhZz5zdWJ0ZXh0PC9zdWJ0YWc+JwotICAgID4+PiBlbGVtWzBdID0gRVQuUEkoImtleSIsICJ2YWx1ZSIpCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICd0ZXh0PD9rZXkgdmFsdWU/PjxzdWJ0YWc+c3VidGV4dDwvc3VidGFnPicKLSAgICAiIiIKLQotZGVmIGN1c3RvbV9idWlsZGVyKCk6Ci0gICAgIiIiCi0gICAgVGVzdCBwYXJzZXIgdy4gY3VzdG9tIGJ1aWxkZXIuCi0KLSAgICA+Pj4gd2l0aCBvcGVuKFNJTVBMRV9YTUxGSUxFKSBhcyBmOgotICAgIC4uLiAgICAgZGF0YSA9IGYucmVhZCgpCi0gICAgPj4+IGNsYXNzIEJ1aWxkZXI6Ci0gICAgLi4uICAgICBkZWYgc3RhcnQoc2VsZiwgdGFnLCBhdHRyaWIpOgotICAgIC4uLiAgICAgICAgIHByaW50KCJzdGFydCIsIHRhZykKLSAgICAuLi4gICAgIGRlZiBlbmQoc2VsZiwgdGFnKToKLSAgICAuLi4gICAgICAgICBwcmludCgiZW5kIiwgdGFnKQotICAgIC4uLiAgICAgZGVmIGRhdGEoc2VsZiwgdGV4dCk6Ci0gICAgLi4uICAgICAgICAgcGFzcwotICAgID4+PiBidWlsZGVyID0gQnVpbGRlcigpCi0gICAgPj4+IHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9YnVpbGRlcikKLSAgICA+Pj4gcGFyc2VyLmZlZWQoZGF0YSkKLSAgICBzdGFydCByb290Ci0gICAgc3RhcnQgZWxlbWVudAotICAgIGVuZCBlbGVtZW50Ci0gICAgc3RhcnQgZWxlbWVudAotICAgIGVuZCBlbGVtZW50Ci0gICAgc3RhcnQgZW1wdHktZWxlbWVudAotICAgIGVuZCBlbXB0eS1lbGVtZW50Ci0gICAgZW5kIHJvb3QKLQotICAgID4+PiB3aXRoIG9wZW4oU0lNUExFX05TX1hNTEZJTEUpIGFzIGY6Ci0gICAgLi4uICAgICBkYXRhID0gZi5yZWFkKCkKLSAgICA+Pj4gY2xhc3MgQnVpbGRlcjoKLSAgICAuLi4gICAgIGRlZiBzdGFydChzZWxmLCB0YWcsIGF0dHJpYik6Ci0gICAgLi4uICAgICAgICAgcHJpbnQoInN0YXJ0IiwgdGFnKQotICAgIC4uLiAgICAgZGVmIGVuZChzZWxmLCB0YWcpOgotICAgIC4uLiAgICAgICAgIHByaW50KCJlbmQiLCB0YWcpCi0gICAgLi4uICAgICBkZWYgZGF0YShzZWxmLCB0ZXh0KToKLSAgICAuLi4gICAgICAgICBwYXNzCi0gICAgLi4uICAgICBkZWYgcGkoc2VsZiwgdGFyZ2V0LCBkYXRhKToKLSAgICAuLi4gICAgICAgICBwcmludCgicGkiLCB0YXJnZXQsIHJlcHIoZGF0YSkpCi0gICAgLi4uICAgICBkZWYgY29tbWVudChzZWxmLCBkYXRhKToKLSAgICAuLi4gICAgICAgICBwcmludCgiY29tbWVudCIsIHJlcHIoZGF0YSkpCi0gICAgPj4+IGJ1aWxkZXIgPSBCdWlsZGVyKCkKLSAgICA+Pj4gcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD1idWlsZGVyKQotICAgID4+PiBwYXJzZXIuZmVlZChkYXRhKQotICAgIHBpIHBpICdkYXRhJwotICAgIGNvbW1lbnQgJyBjb21tZW50ICcKLSAgICBzdGFydCB7bmFtZXNwYWNlfXJvb3QKLSAgICBzdGFydCB7bmFtZXNwYWNlfWVsZW1lbnQKLSAgICBlbmQge25hbWVzcGFjZX1lbGVtZW50Ci0gICAgc3RhcnQge25hbWVzcGFjZX1lbGVtZW50Ci0gICAgZW5kIHtuYW1lc3BhY2V9ZWxlbWVudAotICAgIHN0YXJ0IHtuYW1lc3BhY2V9ZW1wdHktZWxlbWVudAotICAgIGVuZCB7bmFtZXNwYWNlfWVtcHR5LWVsZW1lbnQKLSAgICBlbmQge25hbWVzcGFjZX1yb290Ci0KLSAgICAiIiIKLQotZGVmIGdldGNoaWxkcmVuKCk6Ci0gICAgIiIiCi0gICAgVGVzdCBFbGVtZW50LmdldGNoaWxkcmVuKCkKLQotICAgID4+PiB3aXRoIG9wZW4oU0lNUExFX1hNTEZJTEUsICJyYiIpIGFzIGY6Ci0gICAgLi4uICAgICB0cmVlID0gRVQucGFyc2UoZikKLSAgICA+Pj4gZm9yIGVsZW0gaW4gdHJlZS5nZXRyb290KCkuaXRlcigpOgotICAgIC4uLiAgICAgc3VtbWFyaXplX2xpc3QoZWxlbS5nZXRjaGlsZHJlbigpKQotICAgIFsnZWxlbWVudCcsICdlbGVtZW50JywgJ2VtcHR5LWVsZW1lbnQnXQotICAgIFtdCi0gICAgW10KLSAgICBbXQotICAgID4+PiBmb3IgZWxlbSBpbiB0cmVlLmdldGl0ZXJhdG9yKCk6Ci0gICAgLi4uICAgICBzdW1tYXJpemVfbGlzdChlbGVtLmdldGNoaWxkcmVuKCkpCi0gICAgWydlbGVtZW50JywgJ2VsZW1lbnQnLCAnZW1wdHktZWxlbWVudCddCi0gICAgW10KLSAgICBbXQotICAgIFtdCi0KLSAgICA+Pj4gZWxlbSA9IEVULlhNTChTQU1QTEVfWE1MKQotICAgID4+PiBsZW4oZWxlbS5nZXRjaGlsZHJlbigpKQotICAgIDMKLSAgICA+Pj4gbGVuKGVsZW1bMl0uZ2V0Y2hpbGRyZW4oKSkKLSAgICAxCi0gICAgPj4+IGVsZW1bOl0gPT0gZWxlbS5nZXRjaGlsZHJlbigpCi0gICAgVHJ1ZQotICAgID4+PiBjaGlsZDEgPSBlbGVtWzBdCi0gICAgPj4+IGNoaWxkMiA9IGVsZW1bMl0KLSAgICA+Pj4gZGVsIGVsZW1bMToyXQotICAgID4+PiBsZW4oZWxlbS5nZXRjaGlsZHJlbigpKQotICAgIDIKLSAgICA+Pj4gY2hpbGQxID09IGVsZW1bMF0KLSAgICBUcnVlCi0gICAgPj4+IGNoaWxkMiA9PSBlbGVtWzFdCi0gICAgVHJ1ZQotICAgID4+PiBlbGVtWzA6Ml0gPSBbY2hpbGQyLCBjaGlsZDFdCi0gICAgPj4+IGNoaWxkMiA9PSBlbGVtWzBdCi0gICAgVHJ1ZQotICAgID4+PiBjaGlsZDEgPT0gZWxlbVsxXQotICAgIFRydWUKLSAgICA+Pj4gY2hpbGQxID09IGVsZW1bMF0KLSAgICBGYWxzZQotICAgID4+PiBlbGVtLmNsZWFyKCkKLSAgICA+Pj4gZWxlbS5nZXRjaGlsZHJlbigpCi0gICAgW10KLSAgICAiIiIKLQotZGVmIHdyaXRlc3RyaW5nKCk6Ci0gICAgIiIiCi0gICAgPj4+IGVsZW0gPSBFVC5YTUwoIjxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPiIpCi0gICAgPj4+IEVULnRvc3RyaW5nKGVsZW0pCi0gICAgYic8aHRtbD48Ym9keT50ZXh0PC9ib2R5PjwvaHRtbD4nCi0gICAgPj4+IGVsZW0gPSBFVC5mcm9tc3RyaW5nKCI8aHRtbD48Ym9keT50ZXh0PC9ib2R5PjwvaHRtbD4iKQotICAgID4+PiBFVC50b3N0cmluZyhlbGVtKQotICAgIGInPGh0bWw+PGJvZHk+dGV4dDwvYm9keT48L2h0bWw+JwotICAgICIiIgotCi1kZWYgY2hlY2tfZW5jb2RpbmcoZW5jb2RpbmcpOgotICAgICIiIgotICAgID4+PiBjaGVja19lbmNvZGluZygiYXNjaWkiKQotICAgID4+PiBjaGVja19lbmNvZGluZygidXMtYXNjaWkiKQotICAgID4+PiBjaGVja19lbmNvZGluZygiaXNvLTg4NTktMSIpCi0gICAgPj4+IGNoZWNrX2VuY29kaW5nKCJpc28tODg1OS0xNSIpCi0gICAgPj4+IGNoZWNrX2VuY29kaW5nKCJjcDQzNyIpCi0gICAgPj4+IGNoZWNrX2VuY29kaW5nKCJtYWMtcm9tYW4iKQotICAgICIiIgotICAgIEVULlhNTCgiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nJXMnPz48eG1sIC8+IiAlIGVuY29kaW5nKQotCi1kZWYgZW5jb2RpbmcoKToKLSAgICByIiIiCi0gICAgVGVzdCBlbmNvZGluZyBpc3N1ZXMuCi0KLSAgICA+Pj4gZWxlbSA9IEVULkVsZW1lbnQoInRhZyIpCi0gICAgPj4+IGVsZW0udGV4dCA9ICJhYmMiCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICc8dGFnPmFiYzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpCi0gICAgYic8dGFnPmFiYzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpCi0gICAgYic8dGFnPmFiYzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJpc28tODg1OS0xIikKLSAgICBiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2lzby04ODU5LTEnPz5cbjx0YWc+YWJjPC90YWc+IgotCi0gICAgPj4+IGVsZW0udGV4dCA9ICI8JlwiXCc+IgotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZz4mbHQ7JmFtcDsiXCcmZ3Q7PC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IikKLSAgICBiJzx0YWc+Jmx0OyZhbXA7IlwnJmd0OzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpICMgY2RhdGEgY2hhcmFjdGVycwotICAgIGInPHRhZz4mbHQ7JmFtcDsiXCcmZ3Q7PC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9Imlzby04ODU5LTEiKQotICAgIGInPD94bWwgdmVyc2lvbj1cJzEuMFwnIGVuY29kaW5nPVwnaXNvLTg4NTktMVwnPz5cbjx0YWc+Jmx0OyZhbXA7IlwnJmd0OzwvdGFnPicKLQotICAgID4+PiBlbGVtLmF0dHJpYlsia2V5Il0gPSAiPCZcIlwnPiIKLSAgICA+Pj4gZWxlbS50ZXh0ID0gTm9uZQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXRmLTgiKQotICAgIGInPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKQotICAgIGInPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0iaXNvLTg4NTktMSIpCi0gICAgYic8P3htbCB2ZXJzaW9uPVwnMS4wXCcgZW5jb2Rpbmc9XCdpc28tODg1OS0xXCc/PlxuPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nCisgICAgZGVmIHRlc3Rfd3JpdGVmaWxlKHNlbGYpOgorICAgICAgICBlbGVtID0gRVQuRWxlbWVudCgidGFnIikKKyAgICAgICAgZWxlbS50ZXh0ID0gInRleHQiCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sICc8dGFnPnRleHQ8L3RhZz4nKQorICAgICAgICBFVC5TdWJFbGVtZW50KGVsZW0sICJzdWJ0YWciKS50ZXh0ID0gInN1YnRleHQiCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sICc8dGFnPnRleHQ8c3VidGFnPnN1YnRleHQ8L3N1YnRhZz48L3RhZz4nKQogCi0gICAgPj4+IGVsZW0udGV4dCA9ICdceGU1XHhmNlx4ZjY8PicKLSAgICA+Pj4gZWxlbS5hdHRyaWIuY2xlYXIoKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZz5ceGU1XHhmNlx4ZjYmbHQ7Jmd0OzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpCi0gICAgYic8dGFnPlx4YzNceGE1XHhjM1x4YjZceGMzXHhiNiZsdDsmZ3Q7PC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIikKLSAgICBiJzx0YWc+JiMyMjk7JiMyNDY7JiMyNDY7Jmx0OyZndDs8L3RhZz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0iaXNvLTg4NTktMSIpCi0gICAgYiI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdpc28tODg1OS0xJz8+XG48dGFnPlx4ZTVceGY2XHhmNiZsdDsmZ3Q7PC90YWc+IgorICAgICAgICAjIFRlc3QgdGFnIHN1cHByZXNzaW9uCisgICAgICAgIGVsZW0udGFnID0gTm9uZQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLCAndGV4dDxzdWJ0YWc+c3VidGV4dDwvc3VidGFnPicpCisgICAgICAgIGVsZW0uaW5zZXJ0KDAsIEVULkNvbW1lbnQoImNvbW1lbnQiKSkKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZWxlbSwKKyAgICAgICAgICAgICAgICAndGV4dDwhLS1jb21tZW50LS0+PHN1YnRhZz5zdWJ0ZXh0PC9zdWJ0YWc+JykgICAgICMgYXNzdW1lcyAxLjMKIAotICAgID4+PiBlbGVtLmF0dHJpYlsia2V5Il0gPSAnXHhlNVx4ZjZceGY2PD4nCi0gICAgPj4+IGVsZW0udGV4dCA9IE5vbmUKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCi0gICAgJzx0YWcga2V5PSJceGU1XHhmNlx4ZjYmbHQ7Jmd0OyIgLz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXRmLTgiKQotICAgIGInPHRhZyBrZXk9Ilx4YzNceGE1XHhjM1x4YjZceGMzXHhiNiZsdDsmZ3Q7IiAvPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpCi0gICAgYic8dGFnIGtleT0iJiMyMjk7JiMyNDY7JiMyNDY7Jmx0OyZndDsiIC8+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9Imlzby04ODU5LTEiKQotICAgIGInPD94bWwgdmVyc2lvbj1cJzEuMFwnIGVuY29kaW5nPVwnaXNvLTg4NTktMVwnPz5cbjx0YWcga2V5PSJceGU1XHhmNlx4ZjYmbHQ7Jmd0OyIgLz4nCi0gICAgIiIiCisgICAgICAgIGVsZW1bMF0gPSBFVC5QSSgia2V5IiwgInZhbHVlIikKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZWxlbSwgJ3RleHQ8P2tleSB2YWx1ZT8+PHN1YnRhZz5zdWJ0ZXh0PC9zdWJ0YWc+JykKIAotZGVmIG1ldGhvZHMoKToKLSAgICByIiIiCi0gICAgVGVzdCBzZXJpYWxpemF0aW9uIG1ldGhvZHMuCisgICAgZGVmIHRlc3RfY3VzdG9tX2J1aWxkZXIoc2VsZik6CisgICAgICAgICMgVGVzdCBwYXJzZXIgdy4gY3VzdG9tIGJ1aWxkZXIuCiAKLSAgICA+Pj4gZSA9IEVULlhNTCgiPGh0bWw+PGxpbmsvPjxzY3JpcHQ+MSAmbHQ7IDI8L3NjcmlwdD48L2h0bWw+IikKLSAgICA+Pj4gZS50YWlsID0gIlxuIgotICAgID4+PiBzZXJpYWxpemUoZSkKLSAgICAnPGh0bWw+PGxpbmsgLz48c2NyaXB0PjEgJmx0OyAyPC9zY3JpcHQ+PC9odG1sPlxuJwotICAgID4+PiBzZXJpYWxpemUoZSwgbWV0aG9kPU5vbmUpCi0gICAgJzxodG1sPjxsaW5rIC8+PHNjcmlwdD4xICZsdDsgMjwvc2NyaXB0PjwvaHRtbD5cbicKLSAgICA+Pj4gc2VyaWFsaXplKGUsIG1ldGhvZD0ieG1sIikKLSAgICAnPGh0bWw+PGxpbmsgLz48c2NyaXB0PjEgJmx0OyAyPC9zY3JpcHQ+PC9odG1sPlxuJwotICAgID4+PiBzZXJpYWxpemUoZSwgbWV0aG9kPSJodG1sIikKLSAgICAnPGh0bWw+PGxpbms+PHNjcmlwdD4xIDwgMjwvc2NyaXB0PjwvaHRtbD5cbicKLSAgICA+Pj4gc2VyaWFsaXplKGUsIG1ldGhvZD0idGV4dCIpCi0gICAgJzEgPCAyXG4nCi0gICAgIiIiCisgICAgICAgIHdpdGggb3BlbihTSU1QTEVfWE1MRklMRSkgYXMgZjoKKyAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQorICAgICAgICBjbGFzcyBCdWlsZGVyKGxpc3QpOgorICAgICAgICAgICAgZGVmIHN0YXJ0KHNlbGYsIHRhZywgYXR0cmliKToKKyAgICAgICAgICAgICAgICBzZWxmLmFwcGVuZCgoInN0YXJ0IiwgdGFnKSkKKyAgICAgICAgICAgIGRlZiBlbmQoc2VsZiwgdGFnKToKKyAgICAgICAgICAgICAgICBzZWxmLmFwcGVuZCgoImVuZCIsIHRhZykpCisgICAgICAgICAgICBkZWYgZGF0YShzZWxmLCB0ZXh0KToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGJ1aWxkZXIgPSBCdWlsZGVyKCkKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD1idWlsZGVyKQorICAgICAgICBwYXJzZXIuZmVlZChkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIsIFsKKyAgICAgICAgICAgICAgICAoJ3N0YXJ0JywgJ3Jvb3QnKSwKKyAgICAgICAgICAgICAgICAoJ3N0YXJ0JywgJ2VsZW1lbnQnKSwKKyAgICAgICAgICAgICAgICAoJ2VuZCcsICdlbGVtZW50JyksCisgICAgICAgICAgICAgICAgKCdzdGFydCcsICdlbGVtZW50JyksCisgICAgICAgICAgICAgICAgKCdlbmQnLCAnZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnc3RhcnQnLCAnZW1wdHktZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnZW5kJywgJ2VtcHR5LWVsZW1lbnQnKSwKKyAgICAgICAgICAgICAgICAoJ2VuZCcsICdyb290JyksCisgICAgICAgICAgICBdKQogCi1kZWYgaXRlcmF0b3JzKCk6Ci0gICAgIiIiCi0gICAgVGVzdCBpdGVyYXRvcnMuCisgICAgICAgIHdpdGggb3BlbihTSU1QTEVfTlNfWE1MRklMRSkgYXMgZjoKKyAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQorICAgICAgICBjbGFzcyBCdWlsZGVyKGxpc3QpOgorICAgICAgICAgICAgZGVmIHN0YXJ0KHNlbGYsIHRhZywgYXR0cmliKToKKyAgICAgICAgICAgICAgICBzZWxmLmFwcGVuZCgoInN0YXJ0IiwgdGFnKSkKKyAgICAgICAgICAgIGRlZiBlbmQoc2VsZiwgdGFnKToKKyAgICAgICAgICAgICAgICBzZWxmLmFwcGVuZCgoImVuZCIsIHRhZykpCisgICAgICAgICAgICBkZWYgZGF0YShzZWxmLCB0ZXh0KToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBkZWYgcGkoc2VsZiwgdGFyZ2V0LCBkYXRhKToKKyAgICAgICAgICAgICAgICBzZWxmLmFwcGVuZCgoInBpIiwgdGFyZ2V0LCBkYXRhKSkKKyAgICAgICAgICAgIGRlZiBjb21tZW50KHNlbGYsIGRhdGEpOgorICAgICAgICAgICAgICAgIHNlbGYuYXBwZW5kKCgiY29tbWVudCIsIGRhdGEpKQorICAgICAgICBidWlsZGVyID0gQnVpbGRlcigpCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9YnVpbGRlcikKKyAgICAgICAgcGFyc2VyLmZlZWQoZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLCBbCisgICAgICAgICAgICAgICAgKCdwaScsICdwaScsICdkYXRhJyksCisgICAgICAgICAgICAgICAgKCdjb21tZW50JywgJyBjb21tZW50ICcpLAorICAgICAgICAgICAgICAgICgnc3RhcnQnLCAne25hbWVzcGFjZX1yb290JyksCisgICAgICAgICAgICAgICAgKCdzdGFydCcsICd7bmFtZXNwYWNlfWVsZW1lbnQnKSwKKyAgICAgICAgICAgICAgICAoJ2VuZCcsICd7bmFtZXNwYWNlfWVsZW1lbnQnKSwKKyAgICAgICAgICAgICAgICAoJ3N0YXJ0JywgJ3tuYW1lc3BhY2V9ZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnZW5kJywgJ3tuYW1lc3BhY2V9ZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnc3RhcnQnLCAne25hbWVzcGFjZX1lbXB0eS1lbGVtZW50JyksCisgICAgICAgICAgICAgICAgKCdlbmQnLCAne25hbWVzcGFjZX1lbXB0eS1lbGVtZW50JyksCisgICAgICAgICAgICAgICAgKCdlbmQnLCAne25hbWVzcGFjZX1yb290JyksCisgICAgICAgICAgICBdKQogCi0gICAgPj4+IGUgPSBFVC5YTUwoIjxodG1sPjxib2R5PnRoaXMgaXMgYSA8aT5wYXJhZ3JhcGg8L2k+LjwvYm9keT4uLjwvaHRtbD4iKQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlLml0ZXIoKSkKLSAgICBbJ2h0bWwnLCAnYm9keScsICdpJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZS5maW5kKCJib2R5IikuaXRlcigpKQotICAgIFsnYm9keScsICdpJ10KLSAgICA+Pj4gc3VtbWFyaXplKG5leHQoZS5pdGVyKCkpKQotICAgICdodG1sJwotICAgID4+PiAiIi5qb2luKGUuaXRlcnRleHQoKSkKLSAgICAndGhpcyBpcyBhIHBhcmFncmFwaC4uLicKLSAgICA+Pj4gIiIuam9pbihlLmZpbmQoImJvZHkiKS5pdGVydGV4dCgpKQotICAgICd0aGlzIGlzIGEgcGFyYWdyYXBoLicKLSAgICA+Pj4gbmV4dChlLml0ZXJ0ZXh0KCkpCi0gICAgJ3RoaXMgaXMgYSAnCiAKLSAgICBNZXRob2QgaXRlcnBhcnNlIHNob3VsZCByZXR1cm4gYW4gaXRlcmF0b3IuIFNlZSBidWcgNjQ3Mi4KKyAgICBkZWYgdGVzdF9nZXRjaGlsZHJlbihzZWxmKToKKyAgICAgICAgIyBUZXN0IEVsZW1lbnQuZ2V0Y2hpbGRyZW4oKQogCi0gICAgPj4+IHNvdXJjZWZpbGUgPSBzZXJpYWxpemUoZSwgdG9fc3RyaW5nPUZhbHNlKQotICAgID4+PiBuZXh0KEVULml0ZXJwYXJzZShzb3VyY2VmaWxlKSkgICMgZG9jdGVzdDogK0VMTElQU0lTCi0gICAgKCdlbmQnLCA8RWxlbWVudCAnaScgYXQgMHguLi4+KQorICAgICAgICB3aXRoIG9wZW4oU0lNUExFX1hNTEZJTEUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICB0cmVlID0gRVQucGFyc2UoZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbc3VtbWFyaXplX2xpc3QoZWxlbS5nZXRjaGlsZHJlbigpKQorICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZWxlbSBpbiB0cmVlLmdldHJvb3QoKS5pdGVyKCldLCBbCisgICAgICAgICAgICAgICAgWydlbGVtZW50JywgJ2VsZW1lbnQnLCAnZW1wdHktZWxlbWVudCddLAorICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbc3VtbWFyaXplX2xpc3QoZWxlbS5nZXRjaGlsZHJlbigpKQorICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZWxlbSBpbiB0cmVlLmdldGl0ZXJhdG9yKCldLCBbCisgICAgICAgICAgICAgICAgWydlbGVtZW50JywgJ2VsZW1lbnQnLCAnZW1wdHktZWxlbWVudCddLAorICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgXSkKIAotICAgID4+PiB0cmVlID0gRVQuRWxlbWVudFRyZWUoTm9uZSkKLSAgICA+Pj4gdHJlZS5pdGVyKCkKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgQXR0cmlidXRlRXJyb3I6ICdOb25lVHlwZScgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ2l0ZXInCi0gICAgIiIiCisgICAgICAgIGVsZW0gPSBFVC5YTUwoU0FNUExFX1hNTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZWxlbS5nZXRjaGlsZHJlbigpKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZWxlbVsyXS5nZXRjaGlsZHJlbigpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbGVtWzpdLCBlbGVtLmdldGNoaWxkcmVuKCkpCisgICAgICAgIGNoaWxkMSA9IGVsZW1bMF0KKyAgICAgICAgY2hpbGQyID0gZWxlbVsyXQorICAgICAgICBkZWwgZWxlbVsxOjJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVsZW0uZ2V0Y2hpbGRyZW4oKSksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hpbGQxLCBlbGVtWzBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoaWxkMiwgZWxlbVsxXSkKKyAgICAgICAgZWxlbVswOjJdID0gW2NoaWxkMiwgY2hpbGQxXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoaWxkMiwgZWxlbVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGlsZDEsIGVsZW1bMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY2hpbGQxLCBlbGVtWzBdKQorICAgICAgICBlbGVtLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbGVtLmdldGNoaWxkcmVuKCksIFtdKQogCi1FTlRJVFlfWE1MID0gIiIiXAotPCFET0NUWVBFIHBvaW50cyBbCi08IUVOVElUWSAlIHVzZXItZW50aXRpZXMgU1lTVEVNICd1c2VyLWVudGl0aWVzLnhtbCc+Ci0ldXNlci1lbnRpdGllczsKLV0+Ci08ZG9jdW1lbnQ+JmVudGl0eTs8L2RvY3VtZW50PgotIiIiCisgICAgZGVmIHRlc3Rfd3JpdGVzdHJpbmcoc2VsZik6CisgICAgICAgIGVsZW0gPSBFVC5YTUwoIjxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQudG9zdHJpbmcoZWxlbSksIGInPGh0bWw+PGJvZHk+dGV4dDwvYm9keT48L2h0bWw+JykKKyAgICAgICAgZWxlbSA9IEVULmZyb21zdHJpbmcoIjxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQudG9zdHJpbmcoZWxlbSksIGInPGh0bWw+PGJvZHk+dGV4dDwvYm9keT48L2h0bWw+JykKIAotZGVmIGVudGl0eSgpOgotICAgICIiIgotICAgIFRlc3QgZW50aXR5IGhhbmRsaW5nLgorICAgIGRlZiB0ZXN0X2VuY29kaW5nKGVuY29kaW5nKToKKyAgICAgICAgZGVmIGNoZWNrKGVuY29kaW5nKToKKyAgICAgICAgICAgIEVULlhNTCgiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nJXMnPz48eG1sIC8+IiAlIGVuY29kaW5nKQorICAgICAgICBjaGVjaygiYXNjaWkiKQorICAgICAgICBjaGVjaygidXMtYXNjaWkiKQorICAgICAgICBjaGVjaygiaXNvLTg4NTktMSIpCisgICAgICAgIGNoZWNrKCJpc28tODg1OS0xNSIpCisgICAgICAgIGNoZWNrKCJjcDQzNyIpCisgICAgICAgIGNoZWNrKCJtYWMtcm9tYW4iKQogCi0gICAgMSkgZ29vZCBlbnRpdGllcworICAgIGRlZiB0ZXN0X21ldGhvZHMoc2VsZik6CisgICAgICAgICMgVGVzdCBzZXJpYWxpemF0aW9uIG1ldGhvZHMuCiAKLSAgICA+Pj4gZSA9IEVULlhNTCgiPGRvY3VtZW50IHRpdGxlPScmI3g4MjMwOyc+dGVzdDwvZG9jdW1lbnQ+IikKLSAgICA+Pj4gc2VyaWFsaXplKGUsIGVuY29kaW5nPSJ1cy1hc2NpaSIpCi0gICAgYic8ZG9jdW1lbnQgdGl0bGU9IiYjMzMzMjg7Ij50ZXN0PC9kb2N1bWVudD4nCi0gICAgPj4+IHNlcmlhbGl6ZShlKQotICAgICc8ZG9jdW1lbnQgdGl0bGU9Ilx1ODIzMCI+dGVzdDwvZG9jdW1lbnQ+JworICAgICAgICBlID0gRVQuWE1MKCI8aHRtbD48bGluay8+PHNjcmlwdD4xICZsdDsgMjwvc2NyaXB0PjwvaHRtbD4iKQorICAgICAgICBlLnRhaWwgPSAiXG4iCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGUpLAorICAgICAgICAgICAgICAgICc8aHRtbD48bGluayAvPjxzY3JpcHQ+MSAmbHQ7IDI8L3NjcmlwdD48L2h0bWw+XG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlLCBtZXRob2Q9Tm9uZSksCisgICAgICAgICAgICAgICAgJzxodG1sPjxsaW5rIC8+PHNjcmlwdD4xICZsdDsgMjwvc2NyaXB0PjwvaHRtbD5cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGUsIG1ldGhvZD0ieG1sIiksCisgICAgICAgICAgICAgICAgJzxodG1sPjxsaW5rIC8+PHNjcmlwdD4xICZsdDsgMjwvc2NyaXB0PjwvaHRtbD5cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGUsIG1ldGhvZD0iaHRtbCIpLAorICAgICAgICAgICAgICAgICc8aHRtbD48bGluaz48c2NyaXB0PjEgPCAyPC9zY3JpcHQ+PC9odG1sPlxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZSwgbWV0aG9kPSJ0ZXh0IiksICcxIDwgMlxuJykKIAotICAgIDIpIGJhZCBlbnRpdGllcworICAgIGRlZiB0ZXN0X2VudGl0eShzZWxmKToKKyAgICAgICAgIyBUZXN0IGVudGl0eSBoYW5kbGluZy4KIAotICAgID4+PiBub3JtYWxpemVfZXhjZXB0aW9uKEVULlhNTCwgIjxkb2N1bWVudD4mZW50aXR5OzwvZG9jdW1lbnQ+IikKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgUGFyc2VFcnJvcjogdW5kZWZpbmVkIGVudGl0eTogbGluZSAxLCBjb2x1bW4gMTAKKyAgICAgICAgIyAxKSBnb29kIGVudGl0aWVzCiAKLSAgICA+Pj4gbm9ybWFsaXplX2V4Y2VwdGlvbihFVC5YTUwsIEVOVElUWV9YTUwpCi0gICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgIFBhcnNlRXJyb3I6IHVuZGVmaW5lZCBlbnRpdHkgJmVudGl0eTs6IGxpbmUgNSwgY29sdW1uIDEwCisgICAgICAgIGUgPSBFVC5YTUwoIjxkb2N1bWVudCB0aXRsZT0nJiN4ODIzMDsnPnRlc3Q8L2RvY3VtZW50PiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGUsIGVuY29kaW5nPSJ1cy1hc2NpaSIpLAorICAgICAgICAgICAgICAgIGInPGRvY3VtZW50IHRpdGxlPSImIzMzMzI4OyI+dGVzdDwvZG9jdW1lbnQ+JykKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZSwgJzxkb2N1bWVudCB0aXRsZT0iXHU4MjMwIj50ZXN0PC9kb2N1bWVudD4nKQogCi0gICAgMykgY3VzdG9tIGVudGl0eQorICAgICAgICAjIDIpIGJhZCBlbnRpdGllcwogCi0gICAgPj4+IHBhcnNlciA9IEVULlhNTFBhcnNlcigpCi0gICAgPj4+IHBhcnNlci5lbnRpdHlbImVudGl0eSJdID0gInRleHQiCi0gICAgPj4+IHBhcnNlci5mZWVkKEVOVElUWV9YTUwpCi0gICAgPj4+IHJvb3QgPSBwYXJzZXIuY2xvc2UoKQotICAgID4+PiBzZXJpYWxpemUocm9vdCkKLSAgICAnPGRvY3VtZW50PnRleHQ8L2RvY3VtZW50PicKLSAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFVC5QYXJzZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIEVULlhNTCgiPGRvY3VtZW50PiZlbnRpdHk7PC9kb2N1bWVudD4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICd1bmRlZmluZWQgZW50aXR5OiBsaW5lIDEsIGNvbHVtbiAxMCcpCiAKLWRlZiBlcnJvcih4bWwpOgotICAgICIiIgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEVULlBhcnNlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgRVQuWE1MKEVOVElUWV9YTUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgJ3VuZGVmaW5lZCBlbnRpdHkgJmVudGl0eTs6IGxpbmUgNSwgY29sdW1uIDEwJykKIAotICAgIFRlc3QgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgICMgMykgY3VzdG9tIGVudGl0eQogCi0gICAgPj4+IGlzc3ViY2xhc3MoRVQuUGFyc2VFcnJvciwgU3ludGF4RXJyb3IpCi0gICAgVHJ1ZQotICAgID4+PiBlcnJvcigiZm9vIikucG9zaXRpb24KLSAgICAoMSwgMCkKLSAgICA+Pj4gZXJyb3IoIjx0YWc+JmZvbzs8L3RhZz4iKS5wb3NpdGlvbgotICAgICgxLCA1KQotICAgID4+PiBlcnJvcigiZm9vYmFyPCIpLnBvc2l0aW9uCi0gICAgKDEsIDYpCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcigpCisgICAgICAgIHBhcnNlci5lbnRpdHlbImVudGl0eSJdID0gInRleHQiCisgICAgICAgIHBhcnNlci5mZWVkKEVOVElUWV9YTUwpCisgICAgICAgIHJvb3QgPSBwYXJzZXIuY2xvc2UoKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhyb290LCAnPGRvY3VtZW50PnRleHQ8L2RvY3VtZW50PicpCiAKLSAgICAiIiIKLSAgICB0cnk6Ci0gICAgICAgIEVULlhNTCh4bWwpCi0gICAgZXhjZXB0IEVULlBhcnNlRXJyb3I6Ci0gICAgICAgIHJldHVybiBzeXMuZXhjX2luZm8oKVsxXQorICAgIGRlZiB0ZXN0X25hbWVzcGFjZShzZWxmKToKKyAgICAgICAgIyBUZXN0IG5hbWVzcGFjZSBpc3N1ZXMuCiAKLWRlZiBuYW1lc3BhY2UoKToKLSAgICAiIiIKLSAgICBUZXN0IG5hbWVzcGFjZSBpc3N1ZXMuCisgICAgICAgICMgMSkgeG1sIG5hbWVzcGFjZQogCi0gICAgMSkgeG1sIG5hbWVzcGFjZQorICAgICAgICBlbGVtID0gRVQuWE1MKCI8dGFnIHhtbDpsYW5nPSdlbicgLz4iKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLCAnPHRhZyB4bWw6bGFuZz0iZW4iIC8+JykgIyAxLjEKIAotICAgID4+PiBlbGVtID0gRVQuWE1MKCI8dGFnIHhtbDpsYW5nPSdlbicgLz4iKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyAxLjEKLSAgICAnPHRhZyB4bWw6bGFuZz0iZW4iIC8+JworICAgICAgICAjIDIpIG90aGVyICJ3ZWxsLWtub3duIiBuYW1lc3BhY2VzCiAKLSAgICAyKSBvdGhlciAid2VsbC1rbm93biIgbmFtZXNwYWNlcworICAgICAgICBlbGVtID0gRVQuWE1MKCI8cmRmOlJERiB4bWxuczpyZGY9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMnIC8+IikKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZWxlbSwKKyAgICAgICAgICAgICc8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIC8+JykgIyAyLjEKIAotICAgID4+PiBlbGVtID0gRVQuWE1MKCI8cmRmOlJERiB4bWxuczpyZGY9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMnIC8+IikKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pICMgMi4xCi0gICAgJzxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgLz4nCisgICAgICAgIGVsZW0gPSBFVC5YTUwoIjxodG1sOmh0bWwgeG1sbnM6aHRtbD0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgLz4iKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLAorICAgICAgICAgICAgJzxodG1sOmh0bWwgeG1sbnM6aHRtbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgLz4nKSAjIDIuMgogCi0gICAgPj4+IGVsZW0gPSBFVC5YTUwoIjxodG1sOmh0bWwgeG1sbnM6aHRtbD0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgLz4iKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyAyLjIKLSAgICAnPGh0bWw6aHRtbCB4bWxuczpodG1sPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiAvPicKKyAgICAgICAgZWxlbSA9IEVULlhNTCgiPHNvYXA6RW52ZWxvcGUgeG1sbnM6c29hcD0naHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZScgLz4iKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLAorICAgICAgICAgICAgJzxuczA6RW52ZWxvcGUgeG1sbnM6bnMwPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlIiAvPicpICMgMi4zCiAKLSAgICA+Pj4gZWxlbSA9IEVULlhNTCgiPHNvYXA6RW52ZWxvcGUgeG1sbnM6c29hcD0naHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZScgLz4iKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyAyLjMKLSAgICAnPG5zMDpFbnZlbG9wZSB4bWxuczpuczA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUiIC8+JworICAgICAgICAjIDMpIHVua25vd24gbmFtZXNwYWNlcworICAgICAgICBlbGVtID0gRVQuWE1MKFNBTVBMRV9YTUxfTlMpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sCisgICAgICAgICAgICAnPG5zMDpib2R5IHhtbG5zOm5zMD0iaHR0cDovL2VmZmJvdC5vcmcvbnMiPlxuJworICAgICAgICAgICAgJyAgPG5zMDp0YWc+dGV4dDwvbnMwOnRhZz5cbicKKyAgICAgICAgICAgICcgIDxuczA6dGFnIC8+XG4nCisgICAgICAgICAgICAnICA8bnMwOnNlY3Rpb24+XG4nCisgICAgICAgICAgICAnICAgIDxuczA6dGFnPnN1YnRleHQ8L25zMDp0YWc+XG4nCisgICAgICAgICAgICAnICA8L25zMDpzZWN0aW9uPlxuJworICAgICAgICAgICAgJzwvbnMwOmJvZHk+JykKIAotICAgIDMpIHVua25vd24gbmFtZXNwYWNlcwotICAgID4+PiBlbGVtID0gRVQuWE1MKFNBTVBMRV9YTUxfTlMpCi0gICAgPj4+IHByaW50KHNlcmlhbGl6ZShlbGVtKSkKLSAgICA8bnMwOmJvZHkgeG1sbnM6bnMwPSJodHRwOi8vZWZmYm90Lm9yZy9ucyI+Ci0gICAgICA8bnMwOnRhZz50ZXh0PC9uczA6dGFnPgotICAgICAgPG5zMDp0YWcgLz4KLSAgICAgIDxuczA6c2VjdGlvbj4KLSAgICAgICAgPG5zMDp0YWc+c3VidGV4dDwvbnMwOnRhZz4KLSAgICAgIDwvbnMwOnNlY3Rpb24+Ci0gICAgPC9uczA6Ym9keT4KLSAgICAiIiIKKyAgICBkZWYgdGVzdF9xbmFtZShzZWxmKToKKyAgICAgICAgIyBUZXN0IFFOYW1lIGhhbmRsaW5nLgogCi1kZWYgcW5hbWUoKToKLSAgICAiIiIKLSAgICBUZXN0IFFOYW1lIGhhbmRsaW5nLgorICAgICAgICAjIDEpIGRlY29yYXRlZCB0YWdzCiAKLSAgICAxKSBkZWNvcmF0ZWQgdGFncworICAgICAgICBlbGVtID0gRVQuRWxlbWVudCgie3VyaX10YWciKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLCAnPG5zMDp0YWcgeG1sbnM6bnMwPSJ1cmkiIC8+JykgIyAxLjEKKyAgICAgICAgZWxlbSA9IEVULkVsZW1lbnQoRVQuUU5hbWUoInt1cml9dGFnIikpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sICc8bnMwOnRhZyB4bWxuczpuczA9InVyaSIgLz4nKSAjIDEuMgorICAgICAgICBlbGVtID0gRVQuRWxlbWVudChFVC5RTmFtZSgidXJpIiwgInRhZyIpKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLCAnPG5zMDp0YWcgeG1sbnM6bnMwPSJ1cmkiIC8+JykgIyAxLjMKKyAgICAgICAgZWxlbSA9IEVULkVsZW1lbnQoRVQuUU5hbWUoInVyaSIsICJ0YWciKSkKKyAgICAgICAgc3ViZWxlbSA9IEVULlN1YkVsZW1lbnQoZWxlbSwgRVQuUU5hbWUoInVyaSIsICJ0YWcxIikpCisgICAgICAgIHN1YmVsZW0gPSBFVC5TdWJFbGVtZW50KGVsZW0sIEVULlFOYW1lKCJ1cmkiLCAidGFnMiIpKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLAorICAgICAgICAgICAgJzxuczA6dGFnIHhtbG5zOm5zMD0idXJpIj48bnMwOnRhZzEgLz48bnMwOnRhZzIgLz48L25zMDp0YWc+JykgIyAxLjQKIAotICAgID4+PiBlbGVtID0gRVQuRWxlbWVudCgie3VyaX10YWciKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyAxLjEKLSAgICAnPG5zMDp0YWcgeG1sbnM6bnMwPSJ1cmkiIC8+JwotICAgID4+PiBlbGVtID0gRVQuRWxlbWVudChFVC5RTmFtZSgie3VyaX10YWciKSkKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pICMgMS4yCi0gICAgJzxuczA6dGFnIHhtbG5zOm5zMD0idXJpIiAvPicKLSAgICA+Pj4gZWxlbSA9IEVULkVsZW1lbnQoRVQuUU5hbWUoInVyaSIsICJ0YWciKSkKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pICMgMS4zCi0gICAgJzxuczA6dGFnIHhtbG5zOm5zMD0idXJpIiAvPicKLSAgICA+Pj4gZWxlbSA9IEVULkVsZW1lbnQoRVQuUU5hbWUoInVyaSIsICJ0YWciKSkKLSAgICA+Pj4gc3ViZWxlbSA9IEVULlN1YkVsZW1lbnQoZWxlbSwgRVQuUU5hbWUoInVyaSIsICJ0YWcxIikpCi0gICAgPj4+IHN1YmVsZW0gPSBFVC5TdWJFbGVtZW50KGVsZW0sIEVULlFOYW1lKCJ1cmkiLCAidGFnMiIpKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyAxLjQKLSAgICAnPG5zMDp0YWcgeG1sbnM6bnMwPSJ1cmkiPjxuczA6dGFnMSAvPjxuczA6dGFnMiAvPjwvbnMwOnRhZz4nCisgICAgICAgICMgMikgZGVjb3JhdGVkIGF0dHJpYnV0ZXMKIAotICAgIDIpIGRlY29yYXRlZCBhdHRyaWJ1dGVzCisgICAgICAgIGVsZW0uY2xlYXIoKQorICAgICAgICBlbGVtLmF0dHJpYlsie3VyaX1rZXkiXSA9ICJ2YWx1ZSIKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZWxlbSwKKyAgICAgICAgICAgICc8bnMwOnRhZyB4bWxuczpuczA9InVyaSIgbnMwOmtleT0idmFsdWUiIC8+JykgIyAyLjEKIAotICAgID4+PiBlbGVtLmNsZWFyKCkKLSAgICA+Pj4gZWxlbS5hdHRyaWJbInt1cml9a2V5Il0gPSAidmFsdWUiCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKSAjIDIuMQotICAgICc8bnMwOnRhZyB4bWxuczpuczA9InVyaSIgbnMwOmtleT0idmFsdWUiIC8+JworICAgICAgICBlbGVtLmNsZWFyKCkKKyAgICAgICAgZWxlbS5hdHRyaWJbRVQuUU5hbWUoInt1cml9a2V5IildID0gInZhbHVlIgorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLAorICAgICAgICAgICAgJzxuczA6dGFnIHhtbG5zOm5zMD0idXJpIiBuczA6a2V5PSJ2YWx1ZSIgLz4nKSAjIDIuMgogCi0gICAgPj4+IGVsZW0uY2xlYXIoKQotICAgID4+PiBlbGVtLmF0dHJpYltFVC5RTmFtZSgie3VyaX1rZXkiKV0gPSAidmFsdWUiCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKSAjIDIuMgotICAgICc8bnMwOnRhZyB4bWxuczpuczA9InVyaSIgbnMwOmtleT0idmFsdWUiIC8+JworICAgICAgICAjIDMpIGRlY29yYXRlZCB2YWx1ZXMgYXJlIG5vdCBjb252ZXJ0ZWQgYnkgZGVmYXVsdCwgYnV0IHRoZQorICAgICAgICAjIFFOYW1lIHdyYXBwZXIgY2FuIGJlIHVzZWQgZm9yIHZhbHVlcwogCi0gICAgMykgZGVjb3JhdGVkIHZhbHVlcyBhcmUgbm90IGNvbnZlcnRlZCBieSBkZWZhdWx0LCBidXQgdGhlCi0gICAgICAgUU5hbWUgd3JhcHBlciBjYW4gYmUgdXNlZCBmb3IgdmFsdWVzCisgICAgICAgIGVsZW0uY2xlYXIoKQorICAgICAgICBlbGVtLmF0dHJpYlsie3VyaX1rZXkiXSA9ICJ7dXJpfXZhbHVlIgorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLAorICAgICAgICAgICAgJzxuczA6dGFnIHhtbG5zOm5zMD0idXJpIiBuczA6a2V5PSJ7dXJpfXZhbHVlIiAvPicpICMgMy4xCiAKLSAgICA+Pj4gZWxlbS5jbGVhcigpCi0gICAgPj4+IGVsZW0uYXR0cmliWyJ7dXJpfWtleSJdID0gInt1cml9dmFsdWUiCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKSAjIDMuMQotICAgICc8bnMwOnRhZyB4bWxuczpuczA9InVyaSIgbnMwOmtleT0ie3VyaX12YWx1ZSIgLz4nCisgICAgICAgIGVsZW0uY2xlYXIoKQorICAgICAgICBlbGVtLmF0dHJpYlsie3VyaX1rZXkiXSA9IEVULlFOYW1lKCJ7dXJpfXZhbHVlIikKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZWxlbSwKKyAgICAgICAgICAgICc8bnMwOnRhZyB4bWxuczpuczA9InVyaSIgbnMwOmtleT0ibnMwOnZhbHVlIiAvPicpICMgMy4yCiAKLSAgICA+Pj4gZWxlbS5jbGVhcigpCi0gICAgPj4+IGVsZW0uYXR0cmliWyJ7dXJpfWtleSJdID0gRVQuUU5hbWUoInt1cml9dmFsdWUiKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyAzLjIKLSAgICAnPG5zMDp0YWcgeG1sbnM6bnMwPSJ1cmkiIG5zMDprZXk9Im5zMDp2YWx1ZSIgLz4nCisgICAgICAgIGVsZW0uY2xlYXIoKQorICAgICAgICBzdWJlbGVtID0gRVQuRWxlbWVudCgidGFnIikKKyAgICAgICAgc3ViZWxlbS5hdHRyaWJbInt1cmkxfWtleSJdID0gRVQuUU5hbWUoInt1cmkyfXZhbHVlIikKKyAgICAgICAgZWxlbS5hcHBlbmQoc3ViZWxlbSkKKyAgICAgICAgZWxlbS5hcHBlbmQoc3ViZWxlbSkKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZWxlbSwKKyAgICAgICAgICAgICc8bnMwOnRhZyB4bWxuczpuczA9InVyaSIgeG1sbnM6bnMxPSJ1cmkxIiB4bWxuczpuczI9InVyaTIiPicKKyAgICAgICAgICAgICc8dGFnIG5zMTprZXk9Im5zMjp2YWx1ZSIgLz4nCisgICAgICAgICAgICAnPHRhZyBuczE6a2V5PSJuczI6dmFsdWUiIC8+JworICAgICAgICAgICAgJzwvbnMwOnRhZz4nKSAjIDMuMwogCi0gICAgPj4+IGVsZW0uY2xlYXIoKQotICAgID4+PiBzdWJlbGVtID0gRVQuRWxlbWVudCgidGFnIikKLSAgICA+Pj4gc3ViZWxlbS5hdHRyaWJbInt1cmkxfWtleSJdID0gRVQuUU5hbWUoInt1cmkyfXZhbHVlIikKLSAgICA+Pj4gZWxlbS5hcHBlbmQoc3ViZWxlbSkKLSAgICA+Pj4gZWxlbS5hcHBlbmQoc3ViZWxlbSkKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pICMgMy4zCi0gICAgJzxuczA6dGFnIHhtbG5zOm5zMD0idXJpIiB4bWxuczpuczE9InVyaTEiIHhtbG5zOm5zMj0idXJpMiI+PHRhZyBuczE6a2V5PSJuczI6dmFsdWUiIC8+PHRhZyBuczE6a2V5PSJuczI6dmFsdWUiIC8+PC9uczA6dGFnPicKKyAgICAgICAgIyA0KSBEaXJlY3QgUU5hbWUgdGVzdHMKIAotICAgIDQpIERpcmVjdCBRTmFtZSB0ZXN0cworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihFVC5RTmFtZSgnbnMnLCAndGFnJykpLCAne25zfXRhZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKEVULlFOYW1lKCd7bnN9dGFnJykpLCAne25zfXRhZycpCisgICAgICAgIHExID0gRVQuUU5hbWUoJ25zJywgJ3RhZycpCisgICAgICAgIHEyID0gRVQuUU5hbWUoJ25zJywgJ3RhZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocTEsIHEyKQorICAgICAgICBxMiA9IEVULlFOYW1lKCducycsICdvdGhlci10YWcnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHExLCBxMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChxMSwgJ25zOnRhZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocTEsICd7bnN9dGFnJykKIAotICAgID4+PiBzdHIoRVQuUU5hbWUoJ25zJywgJ3RhZycpKQotICAgICd7bnN9dGFnJwotICAgID4+PiBzdHIoRVQuUU5hbWUoJ3tuc310YWcnKSkKLSAgICAne25zfXRhZycKLSAgICA+Pj4gcTEgPSBFVC5RTmFtZSgnbnMnLCAndGFnJykKLSAgICA+Pj4gcTIgPSBFVC5RTmFtZSgnbnMnLCAndGFnJykKLSAgICA+Pj4gcTEgPT0gcTIKLSAgICBUcnVlCi0gICAgPj4+IHEyID0gRVQuUU5hbWUoJ25zJywgJ290aGVyLXRhZycpCi0gICAgPj4+IHExID09IHEyCi0gICAgRmFsc2UKLSAgICA+Pj4gcTEgPT0gJ25zOnRhZycKLSAgICBGYWxzZQotICAgID4+PiBxMSA9PSAne25zfXRhZycKLSAgICBUcnVlCi0gICAgIiIiCisgICAgZGVmIHRlc3RfZG9jdHlwZV9wdWJsaWMoc2VsZik6CisgICAgICAgICMgVGVzdCBQVUJMSUMgZG9jdHlwZS4KIAotZGVmIGRvY3R5cGVfcHVibGljKCk6Ci0gICAgIiIiCi0gICAgVGVzdCBQVUJMSUMgZG9jdHlwZS4KKyAgICAgICAgZWxlbSA9IEVULlhNTCgnPCFET0NUWVBFIGh0bWwgUFVCTElDJworICAgICAgICAgICAgICAgICcgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIicKKyAgICAgICAgICAgICAgICAnICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4nCisgICAgICAgICAgICAgICAgJzxodG1sPnRleHQ8L2h0bWw+JykKIAotICAgID4+PiBlbGVtID0gRVQuWE1MKCc8IURPQ1RZUEUgaHRtbCBQVUJMSUMnCi0gICAgLi4uICAgJyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iJwotICAgIC4uLiAgICcgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPicKLSAgICAuLi4gICAnPGh0bWw+dGV4dDwvaHRtbD4nKQorICAgIGRlZiB0ZXN0X3hwYXRoX3Rva2VuaXplcihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoZSBYUGF0aCB0b2tlbml6ZXIuCisgICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50UGF0aAorICAgICAgICBkZWYgY2hlY2socCwgZXhwZWN0ZWQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbb3Agb3IgdGFnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Igb3AsIHRhZyBpbiBFbGVtZW50UGF0aC54cGF0aF90b2tlbml6ZXIocCldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKIAotICAgICIiIgorICAgICAgICAjIHRlc3RzIGZyb20gdGhlIHhtbCBzcGVjaWZpY2F0aW9uCisgICAgICAgIGNoZWNrKCIqIiwgWycqJ10pCisgICAgICAgIGNoZWNrKCJ0ZXh0KCkiLCBbJ3RleHQnLCAnKCknXSkKKyAgICAgICAgY2hlY2soIkBuYW1lIiwgWydAJywgJ25hbWUnXSkKKyAgICAgICAgY2hlY2soIkAqIiwgWydAJywgJyonXSkKKyAgICAgICAgY2hlY2soInBhcmFbMV0iLCBbJ3BhcmEnLCAnWycsICcxJywgJ10nXSkKKyAgICAgICAgY2hlY2soInBhcmFbbGFzdCgpXSIsIFsncGFyYScsICdbJywgJ2xhc3QnLCAnKCknLCAnXSddKQorICAgICAgICBjaGVjaygiKi9wYXJhIiwgWycqJywgJy8nLCAncGFyYSddKQorICAgICAgICBjaGVjaygiL2RvYy9jaGFwdGVyWzVdL3NlY3Rpb25bMl0iLAorICAgICAgICAgICAgICBbJy8nLCAnZG9jJywgJy8nLCAnY2hhcHRlcicsICdbJywgJzUnLCAnXScsCisgICAgICAgICAgICAgICAnLycsICdzZWN0aW9uJywgJ1snLCAnMicsICddJ10pCisgICAgICAgIGNoZWNrKCJjaGFwdGVyLy9wYXJhIiwgWydjaGFwdGVyJywgJy8vJywgJ3BhcmEnXSkKKyAgICAgICAgY2hlY2soIi8vcGFyYSIsIFsnLy8nLCAncGFyYSddKQorICAgICAgICBjaGVjaygiLy9vbGlzdC9pdGVtIiwgWycvLycsICdvbGlzdCcsICcvJywgJ2l0ZW0nXSkKKyAgICAgICAgY2hlY2soIi4iLCBbJy4nXSkKKyAgICAgICAgY2hlY2soIi4vL3BhcmEiLCBbJy4nLCAnLy8nLCAncGFyYSddKQorICAgICAgICBjaGVjaygiLi4iLCBbJy4uJ10pCisgICAgICAgIGNoZWNrKCIuLi9AbGFuZyIsIFsnLi4nLCAnLycsICdAJywgJ2xhbmcnXSkKKyAgICAgICAgY2hlY2soImNoYXB0ZXJbdGl0bGVdIiwgWydjaGFwdGVyJywgJ1snLCAndGl0bGUnLCAnXSddKQorICAgICAgICBjaGVjaygiZW1wbG95ZWVbQHNlY3JldGFyeSBhbmQgQGFzc2lzdGFudF0iLCBbJ2VtcGxveWVlJywKKyAgICAgICAgICAgICAgJ1snLCAnQCcsICdzZWNyZXRhcnknLCAnJywgJ2FuZCcsICcnLCAnQCcsICdhc3Npc3RhbnQnLCAnXSddKQogCi1kZWYgeHBhdGhfdG9rZW5pemVyKHApOgotICAgICIiIgotICAgIFRlc3QgdGhlIFhQYXRoIHRva2VuaXplci4KKyAgICAgICAgIyBhZGRpdGlvbmFsIHRlc3RzCisgICAgICAgIGNoZWNrKCJ7aHR0cDovL3NwYW19ZWdnIiwgWyd7aHR0cDovL3NwYW19ZWdnJ10pCisgICAgICAgIGNoZWNrKCIuL3NwYW0uZWdnIiwgWycuJywgJy8nLCAnc3BhbS5lZ2cnXSkKKyAgICAgICAgY2hlY2soIi4vL3todHRwOi8vc3BhbX1lZ2ciLCBbJy4nLCAnLy8nLCAne2h0dHA6Ly9zcGFtfWVnZyddKQogCi0gICAgPj4+ICMgdGVzdHMgZnJvbSB0aGUgeG1sIHNwZWNpZmljYXRpb24KLSAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCIqIikKLSAgICBbJyonXQotICAgID4+PiB4cGF0aF90b2tlbml6ZXIoInRleHQoKSIpCi0gICAgWyd0ZXh0JywgJygpJ10KLSAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCJAbmFtZSIpCi0gICAgWydAJywgJ25hbWUnXQotICAgID4+PiB4cGF0aF90b2tlbml6ZXIoIkAqIikKLSAgICBbJ0AnLCAnKiddCi0gICAgPj4+IHhwYXRoX3Rva2VuaXplcigicGFyYVsxXSIpCi0gICAgWydwYXJhJywgJ1snLCAnMScsICddJ10KLSAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCJwYXJhW2xhc3QoKV0iKQotICAgIFsncGFyYScsICdbJywgJ2xhc3QnLCAnKCknLCAnXSddCi0gICAgPj4+IHhwYXRoX3Rva2VuaXplcigiKi9wYXJhIikKLSAgICBbJyonLCAnLycsICdwYXJhJ10KLSAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCIvZG9jL2NoYXB0ZXJbNV0vc2VjdGlvblsyXSIpCi0gICAgWycvJywgJ2RvYycsICcvJywgJ2NoYXB0ZXInLCAnWycsICc1JywgJ10nLCAnLycsICdzZWN0aW9uJywgJ1snLCAnMicsICddJ10KLSAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCJjaGFwdGVyLy9wYXJhIikKLSAgICBbJ2NoYXB0ZXInLCAnLy8nLCAncGFyYSddCi0gICAgPj4+IHhwYXRoX3Rva2VuaXplcigiLy9wYXJhIikKLSAgICBbJy8vJywgJ3BhcmEnXQotICAgID4+PiB4cGF0aF90b2tlbml6ZXIoIi8vb2xpc3QvaXRlbSIpCi0gICAgWycvLycsICdvbGlzdCcsICcvJywgJ2l0ZW0nXQotICAgID4+PiB4cGF0aF90b2tlbml6ZXIoIi4iKQotICAgIFsnLiddCi0gICAgPj4+IHhwYXRoX3Rva2VuaXplcigiLi8vcGFyYSIpCi0gICAgWycuJywgJy8vJywgJ3BhcmEnXQotICAgID4+PiB4cGF0aF90b2tlbml6ZXIoIi4uIikKLSAgICBbJy4uJ10KLSAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCIuLi9AbGFuZyIpCi0gICAgWycuLicsICcvJywgJ0AnLCAnbGFuZyddCi0gICAgPj4+IHhwYXRoX3Rva2VuaXplcigiY2hhcHRlclt0aXRsZV0iKQotICAgIFsnY2hhcHRlcicsICdbJywgJ3RpdGxlJywgJ10nXQotICAgID4+PiB4cGF0aF90b2tlbml6ZXIoImVtcGxveWVlW0BzZWNyZXRhcnkgYW5kIEBhc3Npc3RhbnRdIikKLSAgICBbJ2VtcGxveWVlJywgJ1snLCAnQCcsICdzZWNyZXRhcnknLCAnJywgJ2FuZCcsICcnLCAnQCcsICdhc3Npc3RhbnQnLCAnXSddCisgICAgZGVmIHRlc3RfcHJvY2Vzc2luZ2luc3RydWN0aW9uKHNlbGYpOgorICAgICAgICAjIFRlc3QgUHJvY2Vzc2luZ0luc3RydWN0aW9uIGRpcmVjdGx5CiAKLSAgICA+Pj4gIyBhZGRpdGlvbmFsIHRlc3RzCi0gICAgPj4+IHhwYXRoX3Rva2VuaXplcigie2h0dHA6Ly9zcGFtfWVnZyIpCi0gICAgWyd7aHR0cDovL3NwYW19ZWdnJ10KLSAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCIuL3NwYW0uZWdnIikKLSAgICBbJy4nLCAnLycsICdzcGFtLmVnZyddCi0gICAgPj4+IHhwYXRoX3Rva2VuaXplcigiLi8ve2h0dHA6Ly9zcGFtfWVnZyIpCi0gICAgWycuJywgJy8vJywgJ3todHRwOi8vc3BhbX1lZ2cnXQotICAgICIiIgotICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50UGF0aAotICAgIG91dCA9IFtdCi0gICAgZm9yIG9wLCB0YWcgaW4gRWxlbWVudFBhdGgueHBhdGhfdG9rZW5pemVyKHApOgotICAgICAgICBvdXQuYXBwZW5kKG9wIG9yIHRhZykKLSAgICByZXR1cm4gb3V0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQudG9zdHJpbmcoRVQuUHJvY2Vzc2luZ0luc3RydWN0aW9uKCd0ZXN0JywgJ2luc3RydWN0aW9uJykpLAorICAgICAgICAgICAgICAgIGInPD90ZXN0IGluc3RydWN0aW9uPz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULnRvc3RyaW5nKEVULlBJKCd0ZXN0JywgJ2luc3RydWN0aW9uJykpLAorICAgICAgICAgICAgICAgIGInPD90ZXN0IGluc3RydWN0aW9uPz4nKQogCi1kZWYgcHJvY2Vzc2luZ2luc3RydWN0aW9uKCk6Ci0gICAgIiIiCi0gICAgVGVzdCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gZGlyZWN0bHkKKyAgICAgICAgIyBJc3N1ZSAjMjc0NgogCi0gICAgPj4+IEVULnRvc3RyaW5nKEVULlByb2Nlc3NpbmdJbnN0cnVjdGlvbigndGVzdCcsICdpbnN0cnVjdGlvbicpKQotICAgIGInPD90ZXN0IGluc3RydWN0aW9uPz4nCi0gICAgPj4+IEVULnRvc3RyaW5nKEVULlBJKCd0ZXN0JywgJ2luc3RydWN0aW9uJykpCi0gICAgYic8P3Rlc3QgaW5zdHJ1Y3Rpb24/PicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC50b3N0cmluZyhFVC5QSSgndGVzdCcsICc8dGVzdGluZyY+JykpLAorICAgICAgICAgICAgICAgIGInPD90ZXN0IDx0ZXN0aW5nJj4/PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQudG9zdHJpbmcoRVQuUEkoJ3Rlc3QnLCAnPHRlc3RpbmcmPlx4ZTMnKSwgJ2xhdGluLTEnKSwKKyAgICAgICAgICAgICAgICBiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2xhdGluLTEnPz5cbiIKKyAgICAgICAgICAgICAgICBiIjw/dGVzdCA8dGVzdGluZyY+XHhlMz8+IikKIAotICAgIElzc3VlICMyNzQ2CisgICAgZGVmIHRlc3RfaHRtbF9lbXB0eV9lbGVtc19zZXJpYWxpemF0aW9uKHNlbGYpOgorICAgICAgICAjIGlzc3VlIDE1OTcwCisgICAgICAgICMgZnJvbSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNDAxL2luZGV4L2VsZW1lbnRzLmh0bWwKKyAgICAgICAgZm9yIGVsZW1lbnQgaW4gWydBUkVBJywgJ0JBU0UnLCAnQkFTRUZPTlQnLCAnQlInLCAnQ09MJywgJ0ZSQU1FJywgJ0hSJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdJTUcnLCAnSU5QVVQnLCAnSVNJTkRFWCcsICdMSU5LJywgJ01FVEEnLCAnUEFSQU0nXToKKyAgICAgICAgICAgIGZvciBlbGVtIGluIFtlbGVtZW50LCBlbGVtZW50Lmxvd2VyKCldOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gJzwlcz4nICUgZWxlbQorICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWQgPSBzZXJpYWxpemUoRVQuWE1MKCc8JXMgLz4nICUgZWxlbSksIG1ldGhvZD0naHRtbCcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemVkLCBleHBlY3RlZCkKKyAgICAgICAgICAgICAgICBzZXJpYWxpemVkID0gc2VyaWFsaXplKEVULlhNTCgnPCVzPjwvJXM+JyAlIChlbGVtLGVsZW0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZD0naHRtbCcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemVkLCBleHBlY3RlZCkKIAotICAgID4+PiBFVC50b3N0cmluZyhFVC5QSSgndGVzdCcsICc8dGVzdGluZyY+JykpCi0gICAgYic8P3Rlc3QgPHRlc3RpbmcmPj8+JwotICAgID4+PiBFVC50b3N0cmluZyhFVC5QSSgndGVzdCcsICc8dGVzdGluZyY+XHhlMycpLCAnbGF0aW4xJykKLSAgICBiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2xhdGluMSc/Plxcbjw/dGVzdCA8dGVzdGluZyY+XFx4ZTM/PiIKLSAgICAiIiIKIAogIwogIyB4aW5jbHVkZSB0ZXN0cyAoc2FtcGxlcyBmcm9tIGFwcGVuZGl4IEMgb2YgdGhlIHhpbmNsdWRlIHNwZWNpZmljYXRpb24pCkBAIC0xMzM4LDk2ICs5NzksNiBAQAogPC9kb2N1bWVudD4KICIiIi5mb3JtYXQoaHRtbC5lc2NhcGUoU0lNUExFX1hNTEZJTEUsIFRydWUpKQogCi1kZWYgeGluY2x1ZGVfbG9hZGVyKGhyZWYsIHBhcnNlPSJ4bWwiLCBlbmNvZGluZz1Ob25lKToKLSAgICB0cnk6Ci0gICAgICAgIGRhdGEgPSBYSU5DTFVERVtocmVmXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcmFpc2UgSU9FcnJvcigicmVzb3VyY2Ugbm90IGZvdW5kIikKLSAgICBpZiBwYXJzZSA9PSAieG1sIjoKLSAgICAgICAgZnJvbSB4bWwuZXRyZWUuRWxlbWVudFRyZWUgaW1wb3J0IFhNTAotICAgICAgICByZXR1cm4gWE1MKGRhdGEpCi0gICAgcmV0dXJuIGRhdGEKLQotZGVmIHhpbmNsdWRlKCk6Ci0gICAgciIiIgotICAgIEJhc2ljIGluY2x1c2lvbiBleGFtcGxlIChYSW5jbHVkZSBDLjEpCi0KLSAgICA+Pj4gZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRUcmVlIGFzIEVUCi0gICAgPj4+IGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50SW5jbHVkZQotCi0gICAgPj4+IGRvY3VtZW50ID0geGluY2x1ZGVfbG9hZGVyKCJDMS54bWwiKQotICAgID4+PiBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50LCB4aW5jbHVkZV9sb2FkZXIpCi0gICAgPj4+IHByaW50KHNlcmlhbGl6ZShkb2N1bWVudCkpICMgQzEKLSAgICA8ZG9jdW1lbnQ+Ci0gICAgICA8cD4xMjAgTXogaXMgYWRlcXVhdGUgZm9yIGFuIGF2ZXJhZ2UgaG9tZSB1c2VyLjwvcD4KLSAgICAgIDxkaXNjbGFpbWVyPgotICAgICAgPHA+VGhlIG9waW5pb25zIHJlcHJlc2VudGVkIGhlcmVpbiByZXByZXNlbnQgdGhvc2Ugb2YgdGhlIGluZGl2aWR1YWwKLSAgICAgIGFuZCBzaG91bGQgbm90IGJlIGludGVycHJldGVkIGFzIG9mZmljaWFsIHBvbGljeSBlbmRvcnNlZCBieSB0aGlzCi0gICAgICBvcmdhbml6YXRpb24uPC9wPgotICAgIDwvZGlzY2xhaW1lcj4KLSAgICA8L2RvY3VtZW50PgotCi0gICAgVGV4dHVhbCBpbmNsdXNpb24gZXhhbXBsZSAoWEluY2x1ZGUgQy4yKQotCi0gICAgPj4+IGRvY3VtZW50ID0geGluY2x1ZGVfbG9hZGVyKCJDMi54bWwiKQotICAgID4+PiBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50LCB4aW5jbHVkZV9sb2FkZXIpCi0gICAgPj4+IHByaW50KHNlcmlhbGl6ZShkb2N1bWVudCkpICMgQzIKLSAgICA8ZG9jdW1lbnQ+Ci0gICAgICA8cD5UaGlzIGRvY3VtZW50IGhhcyBiZWVuIGFjY2Vzc2VkCi0gICAgICAzMjQzODcgdGltZXMuPC9wPgotICAgIDwvZG9jdW1lbnQ+Ci0KLSAgICBUZXh0dWFsIGluY2x1c2lvbiBhZnRlciBzaWJsaW5nIGVsZW1lbnQgKGJhc2VkIG9uIG1vZGlmaWVkIFhJbmNsdWRlIEMuMikKLQotICAgID4+PiBkb2N1bWVudCA9IHhpbmNsdWRlX2xvYWRlcigiQzJiLnhtbCIpCi0gICAgPj4+IEVsZW1lbnRJbmNsdWRlLmluY2x1ZGUoZG9jdW1lbnQsIHhpbmNsdWRlX2xvYWRlcikKLSAgICA+Pj4gcHJpbnQoc2VyaWFsaXplKGRvY3VtZW50KSkgIyBDMmIKLSAgICA8ZG9jdW1lbnQ+Ci0gICAgICA8cD5UaGlzIGRvY3VtZW50IGhhcyBiZWVuIDxlbT5hY2Nlc3NlZDwvZW0+Ci0gICAgICAzMjQzODcgdGltZXMuPC9wPgotICAgIDwvZG9jdW1lbnQ+Ci0KLSAgICBUZXh0dWFsIGluY2x1c2lvbiBvZiBYTUwgZXhhbXBsZSAoWEluY2x1ZGUgQy4zKQotCi0gICAgPj4+IGRvY3VtZW50ID0geGluY2x1ZGVfbG9hZGVyKCJDMy54bWwiKQotICAgID4+PiBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50LCB4aW5jbHVkZV9sb2FkZXIpCi0gICAgPj4+IHByaW50KHNlcmlhbGl6ZShkb2N1bWVudCkpICMgQzMKLSAgICA8ZG9jdW1lbnQ+Ci0gICAgICA8cD5UaGUgZm9sbG93aW5nIGlzIHRoZSBzb3VyY2Ugb2YgdGhlICJkYXRhLnhtbCIgcmVzb3VyY2U6PC9wPgotICAgICAgPGV4YW1wbGU+Jmx0Oz94bWwgdmVyc2lvbj0nMS4wJz8mZ3Q7Ci0gICAgJmx0O2RhdGEmZ3Q7Ci0gICAgICAmbHQ7aXRlbSZndDsmbHQ7IVtDREFUQVtCcm9va3MgJmFtcDsgU2hpZWxkc11dJmd0OyZsdDsvaXRlbSZndDsKLSAgICAmbHQ7L2RhdGEmZ3Q7Ci0gICAgPC9leGFtcGxlPgotICAgIDwvZG9jdW1lbnQ+Ci0KLSAgICBGYWxsYmFjayBleGFtcGxlIChYSW5jbHVkZSBDLjUpCi0gICAgTm90ZSEgRmFsbGJhY2sgc3VwcG9ydCBpcyBub3QgeWV0IGltcGxlbWVudGVkCi0KLSAgICA+Pj4gZG9jdW1lbnQgPSB4aW5jbHVkZV9sb2FkZXIoIkM1LnhtbCIpCi0gICAgPj4+IEVsZW1lbnRJbmNsdWRlLmluY2x1ZGUoZG9jdW1lbnQsIHhpbmNsdWRlX2xvYWRlcikKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgSU9FcnJvcjogcmVzb3VyY2Ugbm90IGZvdW5kCi0gICAgPj4+ICMgcHJpbnQoc2VyaWFsaXplKGRvY3VtZW50KSkgIyBDNQotICAgICIiIgotCi1kZWYgeGluY2x1ZGVfZGVmYXVsdCgpOgotICAgICIiIgotICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudEluY2x1ZGUKLQotICAgID4+PiBkb2N1bWVudCA9IHhpbmNsdWRlX2xvYWRlcigiZGVmYXVsdC54bWwiKQotICAgID4+PiBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50KQotICAgID4+PiBwcmludChzZXJpYWxpemUoZG9jdW1lbnQpKSAjIGRlZmF1bHQKLSAgICA8ZG9jdW1lbnQ+Ci0gICAgICA8cD5FeGFtcGxlLjwvcD4KLSAgICAgIDxyb290PgotICAgICAgIDxlbGVtZW50IGtleT0idmFsdWUiPnRleHQ8L2VsZW1lbnQ+Ci0gICAgICAgPGVsZW1lbnQ+dGV4dDwvZWxlbWVudD50YWlsCi0gICAgICAgPGVtcHR5LWVsZW1lbnQgLz4KLSAgICA8L3Jvb3Q+Ci0gICAgPC9kb2N1bWVudD4KLSAgICAiIiIKLQogIwogIyBiYWRseSBmb3JtYXR0ZWQgeGk6aW5jbHVkZSB0YWdzCiAKQEAgLTE0NDgsNDMwICs5OTksMTIzMCBAQAogPC9kaXY+CiAiIiIKIAotZGVmIHhpbmNsdWRlX2ZhaWx1cmVzKCk6Ci0gICAgciIiIgotICAgIFRlc3QgZmFpbHVyZSB0byBsb2NhdGUgaW5jbHVkZWQgWE1MIGZpbGUuCitjbGFzcyBYSW5jbHVkZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgPj4+IGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50SW5jbHVkZQorICAgIGRlZiB4aW5jbHVkZV9sb2FkZXIoc2VsZiwgaHJlZiwgcGFyc2U9InhtbCIsIGVuY29kaW5nPU5vbmUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBkYXRhID0gWElOQ0xVREVbaHJlZl0KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigicmVzb3VyY2Ugbm90IGZvdW5kIikKKyAgICAgICAgaWYgcGFyc2UgPT0gInhtbCI6CisgICAgICAgICAgICBkYXRhID0gRVQuWE1MKGRhdGEpCisgICAgICAgIHJldHVybiBkYXRhCiAKLSAgICA+Pj4gZGVmIG5vbmVfbG9hZGVyKGhyZWYsIHBhcnNlciwgZW5jb2Rpbmc9Tm9uZSk6Ci0gICAgLi4uICAgICByZXR1cm4gTm9uZQorICAgIGRlZiBub25lX2xvYWRlcihzZWxmLCBocmVmLCBwYXJzZXIsIGVuY29kaW5nPU5vbmUpOgorICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgPj4+IGRvY3VtZW50ID0gRVQuWE1MKFhJTkNMVURFWyJDMS54bWwiXSkKLSAgICA+Pj4gRWxlbWVudEluY2x1ZGUuaW5jbHVkZShkb2N1bWVudCwgbG9hZGVyPW5vbmVfbG9hZGVyKQotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICB4bWwuZXRyZWUuRWxlbWVudEluY2x1ZGUuRmF0YWxJbmNsdWRlRXJyb3I6IGNhbm5vdCBsb2FkICdkaXNjbGFpbWVyLnhtbCcgYXMgJ3htbCcKKyAgICBkZWYgX215X2xvYWRlcihzZWxmLCBocmVmLCBwYXJzZSk6CisgICAgICAgICMgVXNlZCB0byBhdm9pZCBhIHRlc3QtZGVwZW5kZW5jeSBwcm9ibGVtIHdoZXJlIHRoZSBkZWZhdWx0IGxvYWRlcgorICAgICAgICAjIG9mIEVsZW1lbnRJbmNsdWRlIHVzZXMgdGhlIHB5RVQgcGFyc2VyIGZvciBjRVQgdGVzdHMuCisgICAgICAgIGlmIHBhcnNlID09ICd4bWwnOgorICAgICAgICAgICAgd2l0aCBvcGVuKGhyZWYsICdyYicpIGFzIGY6CisgICAgICAgICAgICAgICAgcmV0dXJuIEVULnBhcnNlKGYpLmdldHJvb3QoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIFRlc3QgZmFpbHVyZSB0byBsb2NhdGUgaW5jbHVkZWQgdGV4dCBmaWxlLgorICAgIGRlZiB0ZXN0X3hpbmNsdWRlX2RlZmF1bHQoc2VsZik6CisgICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50SW5jbHVkZQorICAgICAgICBkb2MgPSBzZWxmLnhpbmNsdWRlX2xvYWRlcignZGVmYXVsdC54bWwnKQorICAgICAgICBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvYywgc2VsZi5fbXlfbG9hZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShkb2MpLAorICAgICAgICAgICAgJzxkb2N1bWVudD5cbicKKyAgICAgICAgICAgICcgIDxwPkV4YW1wbGUuPC9wPlxuJworICAgICAgICAgICAgJyAgPHJvb3Q+XG4nCisgICAgICAgICAgICAnICAgPGVsZW1lbnQga2V5PSJ2YWx1ZSI+dGV4dDwvZWxlbWVudD5cbicKKyAgICAgICAgICAgICcgICA8ZWxlbWVudD50ZXh0PC9lbGVtZW50PnRhaWxcbicKKyAgICAgICAgICAgICcgICA8ZW1wdHktZWxlbWVudCAvPlxuJworICAgICAgICAgICAgJzwvcm9vdD5cbicKKyAgICAgICAgICAgICc8L2RvY3VtZW50PicpCiAKLSAgICA+Pj4gZG9jdW1lbnQgPSBFVC5YTUwoWElOQ0xVREVbIkMyLnhtbCJdKQotICAgID4+PiBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50LCBsb2FkZXI9bm9uZV9sb2FkZXIpCi0gICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgIHhtbC5ldHJlZS5FbGVtZW50SW5jbHVkZS5GYXRhbEluY2x1ZGVFcnJvcjogY2Fubm90IGxvYWQgJ2NvdW50LnR4dCcgYXMgJ3RleHQnCisgICAgZGVmIHRlc3RfeGluY2x1ZGUoc2VsZik6CisgICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50SW5jbHVkZQogCi0gICAgVGVzdCBiYWQgcGFyc2UgdHlwZS4KKyAgICAgICAgIyBCYXNpYyBpbmNsdXNpb24gZXhhbXBsZSAoWEluY2x1ZGUgQy4xKQorICAgICAgICBkb2N1bWVudCA9IHNlbGYueGluY2x1ZGVfbG9hZGVyKCJDMS54bWwiKQorICAgICAgICBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50LCBzZWxmLnhpbmNsdWRlX2xvYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZG9jdW1lbnQpLAorICAgICAgICAgICAgJzxkb2N1bWVudD5cbicKKyAgICAgICAgICAgICcgIDxwPjEyMCBNeiBpcyBhZGVxdWF0ZSBmb3IgYW4gYXZlcmFnZSBob21lIHVzZXIuPC9wPlxuJworICAgICAgICAgICAgJyAgPGRpc2NsYWltZXI+XG4nCisgICAgICAgICAgICAnICA8cD5UaGUgb3BpbmlvbnMgcmVwcmVzZW50ZWQgaGVyZWluIHJlcHJlc2VudCB0aG9zZSBvZiB0aGUgaW5kaXZpZHVhbFxuJworICAgICAgICAgICAgJyAgYW5kIHNob3VsZCBub3QgYmUgaW50ZXJwcmV0ZWQgYXMgb2ZmaWNpYWwgcG9saWN5IGVuZG9yc2VkIGJ5IHRoaXNcbicKKyAgICAgICAgICAgICcgIG9yZ2FuaXphdGlvbi48L3A+XG4nCisgICAgICAgICAgICAnPC9kaXNjbGFpbWVyPlxuJworICAgICAgICAgICAgJzwvZG9jdW1lbnQ+JykgIyBDMQogCi0gICAgPj4+IGRvY3VtZW50ID0gRVQuWE1MKFhJTkNMVURFX0JBRFsiQjEueG1sIl0pCi0gICAgPj4+IEVsZW1lbnRJbmNsdWRlLmluY2x1ZGUoZG9jdW1lbnQsIGxvYWRlcj1ub25lX2xvYWRlcikKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgeG1sLmV0cmVlLkVsZW1lbnRJbmNsdWRlLkZhdGFsSW5jbHVkZUVycm9yOiB1bmtub3duIHBhcnNlIHR5cGUgaW4geGk6aW5jbHVkZSB0YWcgKCdCQURfVFlQRScpCisgICAgICAgICMgVGV4dHVhbCBpbmNsdXNpb24gZXhhbXBsZSAoWEluY2x1ZGUgQy4yKQorICAgICAgICBkb2N1bWVudCA9IHNlbGYueGluY2x1ZGVfbG9hZGVyKCJDMi54bWwiKQorICAgICAgICBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50LCBzZWxmLnhpbmNsdWRlX2xvYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZG9jdW1lbnQpLAorICAgICAgICAgICAgJzxkb2N1bWVudD5cbicKKyAgICAgICAgICAgICcgIDxwPlRoaXMgZG9jdW1lbnQgaGFzIGJlZW4gYWNjZXNzZWRcbicKKyAgICAgICAgICAgICcgIDMyNDM4NyB0aW1lcy48L3A+XG4nCisgICAgICAgICAgICAnPC9kb2N1bWVudD4nKSAjIEMyCiAKLSAgICBUZXN0IHhpOmZhbGxiYWNrIG91dHNpZGUgeGk6aW5jbHVkZS4KKyAgICAgICAgIyBUZXh0dWFsIGluY2x1c2lvbiBhZnRlciBzaWJsaW5nIGVsZW1lbnQgKGJhc2VkIG9uIG1vZGlmaWVkIFhJbmNsdWRlIEMuMikKKyAgICAgICAgZG9jdW1lbnQgPSBzZWxmLnhpbmNsdWRlX2xvYWRlcigiQzJiLnhtbCIpCisgICAgICAgIEVsZW1lbnRJbmNsdWRlLmluY2x1ZGUoZG9jdW1lbnQsIHNlbGYueGluY2x1ZGVfbG9hZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShkb2N1bWVudCksCisgICAgICAgICAgICAnPGRvY3VtZW50PlxuJworICAgICAgICAgICAgJyAgPHA+VGhpcyBkb2N1bWVudCBoYXMgYmVlbiA8ZW0+YWNjZXNzZWQ8L2VtPlxuJworICAgICAgICAgICAgJyAgMzI0Mzg3IHRpbWVzLjwvcD5cbicKKyAgICAgICAgICAgICc8L2RvY3VtZW50PicpICMgQzJiCiAKLSAgICA+Pj4gZG9jdW1lbnQgPSBFVC5YTUwoWElOQ0xVREVfQkFEWyJCMi54bWwiXSkKLSAgICA+Pj4gRWxlbWVudEluY2x1ZGUuaW5jbHVkZShkb2N1bWVudCwgbG9hZGVyPW5vbmVfbG9hZGVyKQotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICB4bWwuZXRyZWUuRWxlbWVudEluY2x1ZGUuRmF0YWxJbmNsdWRlRXJyb3I6IHhpOmZhbGxiYWNrIHRhZyBtdXN0IGJlIGNoaWxkIG9mIHhpOmluY2x1ZGUgKCd7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YSW5jbHVkZX1mYWxsYmFjaycpCi0gICAgIiIiCisgICAgICAgICMgVGV4dHVhbCBpbmNsdXNpb24gb2YgWE1MIGV4YW1wbGUgKFhJbmNsdWRlIEMuMykKKyAgICAgICAgZG9jdW1lbnQgPSBzZWxmLnhpbmNsdWRlX2xvYWRlcigiQzMueG1sIikKKyAgICAgICAgRWxlbWVudEluY2x1ZGUuaW5jbHVkZShkb2N1bWVudCwgc2VsZi54aW5jbHVkZV9sb2FkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGRvY3VtZW50KSwKKyAgICAgICAgICAgICc8ZG9jdW1lbnQ+XG4nCisgICAgICAgICAgICAnICA8cD5UaGUgZm9sbG93aW5nIGlzIHRoZSBzb3VyY2Ugb2YgdGhlICJkYXRhLnhtbCIgcmVzb3VyY2U6PC9wPlxuJworICAgICAgICAgICAgIiAgPGV4YW1wbGU+Jmx0Oz94bWwgdmVyc2lvbj0nMS4wJz8mZ3Q7XG4iCisgICAgICAgICAgICAnJmx0O2RhdGEmZ3Q7XG4nCisgICAgICAgICAgICAnICAmbHQ7aXRlbSZndDsmbHQ7IVtDREFUQVtCcm9va3MgJmFtcDsgU2hpZWxkc11dJmd0OyZsdDsvaXRlbSZndDtcbicKKyAgICAgICAgICAgICcmbHQ7L2RhdGEmZ3Q7XG4nCisgICAgICAgICAgICAnPC9leGFtcGxlPlxuJworICAgICAgICAgICAgJzwvZG9jdW1lbnQ+JykgIyBDMworCisgICAgICAgICMgRmFsbGJhY2sgZXhhbXBsZSAoWEluY2x1ZGUgQy41KQorICAgICAgICAjIE5vdGUhIEZhbGxiYWNrIHN1cHBvcnQgaXMgbm90IHlldCBpbXBsZW1lbnRlZAorICAgICAgICBkb2N1bWVudCA9IHNlbGYueGluY2x1ZGVfbG9hZGVyKCJDNS54bWwiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgRWxlbWVudEluY2x1ZGUuaW5jbHVkZShkb2N1bWVudCwgc2VsZi54aW5jbHVkZV9sb2FkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICdyZXNvdXJjZSBub3QgZm91bmQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShkb2N1bWVudCksCisgICAgICAgICAgICAnPGRpdiB4bWxuczpuczA9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWEluY2x1ZGUiPlxuJworICAgICAgICAgICAgJyAgPG5zMDppbmNsdWRlIGhyZWY9ImV4YW1wbGUudHh0IiBwYXJzZT0idGV4dCI+XG4nCisgICAgICAgICAgICAnICAgIDxuczA6ZmFsbGJhY2s+XG4nCisgICAgICAgICAgICAnICAgICAgPG5zMDppbmNsdWRlIGhyZWY9ImZhbGxiYWNrLWV4YW1wbGUudHh0IiBwYXJzZT0idGV4dCI+XG4nCisgICAgICAgICAgICAnICAgICAgICA8bnMwOmZhbGxiYWNrPjxhIGhyZWY9Im1haWx0bzpib2JAZXhhbXBsZS5vcmciPlJlcG9ydCBlcnJvcjwvYT48L25zMDpmYWxsYmFjaz5cbicKKyAgICAgICAgICAgICcgICAgICA8L25zMDppbmNsdWRlPlxuJworICAgICAgICAgICAgJyAgICA8L25zMDpmYWxsYmFjaz5cbicKKyAgICAgICAgICAgICcgIDwvbnMwOmluY2x1ZGU+XG4nCisgICAgICAgICAgICAnPC9kaXY+JykgIyBDNQorCisgICAgZGVmIHRlc3RfeGluY2x1ZGVfZmFpbHVyZXMoc2VsZik6CisgICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50SW5jbHVkZQorCisgICAgICAgICMgVGVzdCBmYWlsdXJlIHRvIGxvY2F0ZSBpbmNsdWRlZCBYTUwgZmlsZS4KKyAgICAgICAgZG9jdW1lbnQgPSBFVC5YTUwoWElOQ0xVREVbIkMxLnhtbCJdKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEVsZW1lbnRJbmNsdWRlLkZhdGFsSW5jbHVkZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIEVsZW1lbnRJbmNsdWRlLmluY2x1ZGUoZG9jdW1lbnQsIGxvYWRlcj1zZWxmLm5vbmVfbG9hZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICJjYW5ub3QgbG9hZCAnZGlzY2xhaW1lci54bWwnIGFzICd4bWwnIikKKworICAgICAgICAjIFRlc3QgZmFpbHVyZSB0byBsb2NhdGUgaW5jbHVkZWQgdGV4dCBmaWxlLgorICAgICAgICBkb2N1bWVudCA9IEVULlhNTChYSU5DTFVERVsiQzIueG1sIl0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRWxlbWVudEluY2x1ZGUuRmF0YWxJbmNsdWRlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgRWxlbWVudEluY2x1ZGUuaW5jbHVkZShkb2N1bWVudCwgbG9hZGVyPXNlbGYubm9uZV9sb2FkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgImNhbm5vdCBsb2FkICdjb3VudC50eHQnIGFzICd0ZXh0JyIpCisKKyAgICAgICAgIyBUZXN0IGJhZCBwYXJzZSB0eXBlLgorICAgICAgICBkb2N1bWVudCA9IEVULlhNTChYSU5DTFVERV9CQURbIkIxLnhtbCJdKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEVsZW1lbnRJbmNsdWRlLkZhdGFsSW5jbHVkZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIEVsZW1lbnRJbmNsdWRlLmluY2x1ZGUoZG9jdW1lbnQsIGxvYWRlcj1zZWxmLm5vbmVfbG9hZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICJ1bmtub3duIHBhcnNlIHR5cGUgaW4geGk6aW5jbHVkZSB0YWcgKCdCQURfVFlQRScpIikKKworICAgICAgICAjIFRlc3QgeGk6ZmFsbGJhY2sgb3V0c2lkZSB4aTppbmNsdWRlLgorICAgICAgICBkb2N1bWVudCA9IEVULlhNTChYSU5DTFVERV9CQURbIkIyLnhtbCJdKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEVsZW1lbnRJbmNsdWRlLkZhdGFsSW5jbHVkZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIEVsZW1lbnRJbmNsdWRlLmluY2x1ZGUoZG9jdW1lbnQsIGxvYWRlcj1zZWxmLm5vbmVfbG9hZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICJ4aTpmYWxsYmFjayB0YWcgbXVzdCBiZSBjaGlsZCBvZiB4aTppbmNsdWRlICIKKyAgICAgICAgICAgICAgICAiKCd7aHR0cDovL3d3dy53My5vcmcvMjAwMS9YSW5jbHVkZX1mYWxsYmFjaycpIikKIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyByZXBvcnRlZCBidWdzCiAKLWRlZiBidWdfeG1sdG9vbGtpdDIxKCk6Ci0gICAgIiIiCitjbGFzcyBCdWdzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICBtYXJzaGFsbGVyIGdpdmVzIG9ic2N1cmUgZXJyb3JzIGZvciBub24tc3RyaW5nIHZhbHVlcworICAgIGRlZiB0ZXN0X2J1Z194bWx0b29sa2l0MjEoc2VsZik6CisgICAgICAgICMgbWFyc2hhbGxlciBnaXZlcyBvYnNjdXJlIGVycm9ycyBmb3Igbm9uLXN0cmluZyB2YWx1ZXMKIAotICAgID4+PiBlbGVtID0gRVQuRWxlbWVudCgxMjMpCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKSAjIHRhZwotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICBUeXBlRXJyb3I6IGNhbm5vdCBzZXJpYWxpemUgMTIzICh0eXBlIGludCkKLSAgICA+Pj4gZWxlbSA9IEVULkVsZW1lbnQoImVsZW0iKQotICAgID4+PiBlbGVtLnRleHQgPSAxMjMKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pICMgdGV4dAotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICBUeXBlRXJyb3I6IGNhbm5vdCBzZXJpYWxpemUgMTIzICh0eXBlIGludCkKLSAgICA+Pj4gZWxlbSA9IEVULkVsZW1lbnQoImVsZW0iKQotICAgID4+PiBlbGVtLnRhaWwgPSAxMjMKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pICMgdGFpbAotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICBUeXBlRXJyb3I6IGNhbm5vdCBzZXJpYWxpemUgMTIzICh0eXBlIGludCkKLSAgICA+Pj4gZWxlbSA9IEVULkVsZW1lbnQoImVsZW0iKQotICAgID4+PiBlbGVtLnNldCgxMjMsICIxMjMiKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyBhdHRyaWJ1dGUga2V5Ci0gICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgIFR5cGVFcnJvcjogY2Fubm90IHNlcmlhbGl6ZSAxMjMgKHR5cGUgaW50KQotICAgID4+PiBlbGVtID0gRVQuRWxlbWVudCgiZWxlbSIpCi0gICAgPj4+IGVsZW0uc2V0KCIxMjMiLCAxMjMpCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKSAjIGF0dHJpYnV0ZSB2YWx1ZQotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICBUeXBlRXJyb3I6IGNhbm5vdCBzZXJpYWxpemUgMTIzICh0eXBlIGludCkKKyAgICAgICAgZGVmIGNoZWNrKGVsZW0pOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlcmlhbGl6ZShlbGVtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgJ2Nhbm5vdCBzZXJpYWxpemUgMTIzICh0eXBlIGludCknKQogCi0gICAgIiIiCisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KDEyMykKKyAgICAgICAgY2hlY2soZWxlbSkgIyB0YWcKIAotZGVmIGJ1Z194bWx0b29sa2l0MjUoKToKLSAgICAiIiIKKyAgICAgICAgZWxlbSA9IEVULkVsZW1lbnQoImVsZW0iKQorICAgICAgICBlbGVtLnRleHQgPSAxMjMKKyAgICAgICAgY2hlY2soZWxlbSkgIyB0ZXh0CiAKLSAgICB0eXBvIGluIEVsZW1lbnRUcmVlLmZpbmR0ZXh0CisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCJlbGVtIikKKyAgICAgICAgZWxlbS50YWlsID0gMTIzCisgICAgICAgIGNoZWNrKGVsZW0pICMgdGFpbAogCi0gICAgPj4+IGVsZW0gPSBFVC5YTUwoU0FNUExFX1hNTCkKLSAgICA+Pj4gdHJlZSA9IEVULkVsZW1lbnRUcmVlKGVsZW0pCi0gICAgPj4+IHRyZWUuZmluZHRleHQoInRhZyIpCi0gICAgJ3RleHQnCi0gICAgPj4+IHRyZWUuZmluZHRleHQoInNlY3Rpb24vdGFnIikKLSAgICAnc3VidGV4dCcKKyAgICAgICAgZWxlbSA9IEVULkVsZW1lbnQoImVsZW0iKQorICAgICAgICBlbGVtLnNldCgxMjMsICIxMjMiKQorICAgICAgICBjaGVjayhlbGVtKSAjIGF0dHJpYnV0ZSBrZXkKIAotICAgICIiIgorICAgICAgICBlbGVtID0gRVQuRWxlbWVudCgiZWxlbSIpCisgICAgICAgIGVsZW0uc2V0KCIxMjMiLCAxMjMpCisgICAgICAgIGNoZWNrKGVsZW0pICMgYXR0cmlidXRlIHZhbHVlCiAKLWRlZiBidWdfeG1sdG9vbGtpdDI4KCk6Ci0gICAgIiIiCisgICAgZGVmIHRlc3RfYnVnX3htbHRvb2xraXQyNShzZWxmKToKKyAgICAgICAgIyB0eXBvIGluIEVsZW1lbnRUcmVlLmZpbmR0ZXh0CiAKLSAgICAuLy90YWcgY2F1c2VzIGV4Y2VwdGlvbnMKKyAgICAgICAgZWxlbSA9IEVULlhNTChTQU1QTEVfWE1MKQorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoZWxlbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmVlLmZpbmR0ZXh0KCJ0YWciKSwgJ3RleHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyZWUuZmluZHRleHQoInNlY3Rpb24vdGFnIiksICdzdWJ0ZXh0JykKIAotICAgID4+PiB0cmVlID0gRVQuWE1MKCI8ZG9jPjx0YWJsZT48dGJvZHkvPjwvdGFibGU+PC9kb2M+IikKLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QodHJlZS5maW5kYWxsKCIuLy90aGVhZCIpKQotICAgIFtdCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KHRyZWUuZmluZGFsbCgiLi8vdGJvZHkiKSkKLSAgICBbJ3Rib2R5J10KKyAgICBkZWYgdGVzdF9idWdfeG1sdG9vbGtpdDI4KHNlbGYpOgorICAgICAgICAjIC4vL3RhZyBjYXVzZXMgZXhjZXB0aW9ucwogCi0gICAgIiIiCisgICAgICAgIHRyZWUgPSBFVC5YTUwoIjxkb2M+PHRhYmxlPjx0Ym9keS8+PC90YWJsZT48L2RvYz4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KHRyZWUuZmluZGFsbCgiLi8vdGhlYWQiKSksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KHRyZWUuZmluZGFsbCgiLi8vdGJvZHkiKSksIFsndGJvZHknXSkKIAotZGVmIGJ1Z194bWx0b29sa2l0WDEoKToKLSAgICAiIiIKKyAgICBkZWYgdGVzdF9idWdfeG1sdG9vbGtpdFgxKHNlbGYpOgorICAgICAgICAjIGR1bXAoKSBkb2Vzbid0IGZsdXNoIHRoZSBvdXRwdXQgYnVmZmVyCiAKLSAgICBkdW1wKCkgZG9lc24ndCBmbHVzaCB0aGUgb3V0cHV0IGJ1ZmZlcgorICAgICAgICB0cmVlID0gRVQuWE1MKCI8ZG9jPjx0YWJsZT48dGJvZHkvPjwvdGFibGU+PC9kb2M+IikKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIHN0ZG91dDoKKyAgICAgICAgICAgIEVULmR1bXAodHJlZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmdldHZhbHVlKCksICc8ZG9jPjx0YWJsZT48dGJvZHkgLz48L3RhYmxlPjwvZG9jPlxuJykKIAotICAgID4+PiB0cmVlID0gRVQuWE1MKCI8ZG9jPjx0YWJsZT48dGJvZHkvPjwvdGFibGU+PC9kb2M+IikKLSAgICA+Pj4gRVQuZHVtcCh0cmVlKTsgcHJpbnQoInRhaWwiKQotICAgIDxkb2M+PHRhYmxlPjx0Ym9keSAvPjwvdGFibGU+PC9kb2M+Ci0gICAgdGFpbAorICAgIGRlZiB0ZXN0X2J1Z194bWx0b29sa2l0Mzkoc2VsZik6CisgICAgICAgICMgbm9uLWFzY2lpIGVsZW1lbnQgYW5kIGF0dHJpYnV0ZSBuYW1lcyBkb2Vzbid0IHdvcmsKIAotICAgICIiIgorICAgICAgICB0cmVlID0gRVQuWE1MKGIiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0naXNvLTg4NTktMSc/Pjx0XHhlNGcgLz4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULnRvc3RyaW5nKHRyZWUsICJ1dGYtOCIpLCBiJzx0XHhjM1x4YTRnIC8+JykKIAotZGVmIGJ1Z194bWx0b29sa2l0MzkoKToKLSAgICAiIiIKKyAgICAgICAgdHJlZSA9IEVULlhNTChiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2lzby04ODU5LTEnPz4iCisgICAgICAgICAgICAgICAgICAgICAgYiI8dGFnIFx4ZTR0dHI9J3YmIzIyODtsdWUnIC8+IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmVlLmF0dHJpYiwgeydceGU0dHRyJzogJ3ZceGU0bHVlJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQudG9zdHJpbmcodHJlZSwgInV0Zi04IiksCisgICAgICAgICAgICAgICAgYic8dGFnIFx4YzNceGE0dHRyPSJ2XHhjM1x4YTRsdWUiIC8+JykKIAotICAgIG5vbi1hc2NpaSBlbGVtZW50IGFuZCBhdHRyaWJ1dGUgbmFtZXMgZG9lc24ndCB3b3JrCisgICAgICAgIHRyZWUgPSBFVC5YTUwoYiI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdpc28tODg1OS0xJz8+IgorICAgICAgICAgICAgICAgICAgICAgIGInPHRceGU0Zz50ZXh0PC90XHhlNGc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC50b3N0cmluZyh0cmVlLCAidXRmLTgiKSwKKyAgICAgICAgICAgICAgICBiJzx0XHhjM1x4YTRnPnRleHQ8L3RceGMzXHhhNGc+JykKIAotICAgID4+PiB0cmVlID0gRVQuWE1MKGIiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0naXNvLTg4NTktMSc/Pjx0XFx4ZTRnIC8+IikKLSAgICA+Pj4gRVQudG9zdHJpbmcodHJlZSwgInV0Zi04IikKLSAgICBiJzx0XFx4YzNcXHhhNGcgLz4nCisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50KCJ0XHUwMGU0ZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQudG9zdHJpbmcodHJlZSwgInV0Zi04IiksIGInPHRceGMzXHhhNGcgLz4nKQogCi0gICAgPj4+IHRyZWUgPSBFVC5YTUwoYiI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdpc28tODg1OS0xJz8+PHRhZyBcXHhlNHR0cj0ndiYjMjI4O2x1ZScgLz4iKQotICAgID4+PiB0cmVlLmF0dHJpYgotICAgIHsnXFx4ZTR0dHInOiAndlxceGU0bHVlJ30KLSAgICA+Pj4gRVQudG9zdHJpbmcodHJlZSwgInV0Zi04IikKLSAgICBiJzx0YWcgXFx4YzNcXHhhNHR0cj0idlxceGMzXFx4YTRsdWUiIC8+JworICAgICAgICB0cmVlID0gRVQuRWxlbWVudCgidGFnIikKKyAgICAgICAgdHJlZS5zZXQoIlx1MDBlNHR0ciIsICJ2XHUwMGU0bHVlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC50b3N0cmluZyh0cmVlLCAidXRmLTgiKSwKKyAgICAgICAgICAgICAgICBiJzx0YWcgXHhjM1x4YTR0dHI9InZceGMzXHhhNGx1ZSIgLz4nKQogCi0gICAgPj4+IHRyZWUgPSBFVC5YTUwoYiI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdpc28tODg1OS0xJz8+PHRcXHhlNGc+dGV4dDwvdFxceGU0Zz4iKQotICAgID4+PiBFVC50b3N0cmluZyh0cmVlLCAidXRmLTgiKQotICAgIGInPHRcXHhjM1xceGE0Zz50ZXh0PC90XFx4YzNcXHhhNGc+JworICAgIGRlZiB0ZXN0X2J1Z194bWx0b29sa2l0NTQoc2VsZik6CisgICAgICAgICMgcHJvYmxlbXMgaGFuZGxpbmcgaW50ZXJuYWxseSBkZWZpbmVkIGVudGl0aWVzCiAKLSAgICA+Pj4gdHJlZSA9IEVULkVsZW1lbnQoInRcdTAwZTRnIikKLSAgICA+Pj4gRVQudG9zdHJpbmcodHJlZSwgInV0Zi04IikKLSAgICBiJzx0XFx4YzNcXHhhNGcgLz4nCisgICAgICAgIGUgPSBFVC5YTUwoIjwhRE9DVFlQRSBkb2MgWzwhRU5USVRZIGxkb3RzICcmI3g4MjMwOyc+XT4iCisgICAgICAgICAgICAgICAgICAgJzxkb2M+Jmxkb3RzOzwvZG9jPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGUsIGVuY29kaW5nPSJ1cy1hc2NpaSIpLAorICAgICAgICAgICAgICAgIGInPGRvYz4mIzMzMzI4OzwvZG9jPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGUpLCAnPGRvYz5cdTgyMzA8L2RvYz4nKQogCi0gICAgPj4+IHRyZWUgPSBFVC5FbGVtZW50KCJ0YWciKQotICAgID4+PiB0cmVlLnNldCgiXHUwMGU0dHRyIiwgInZcdTAwZTRsdWUiKQotICAgID4+PiBFVC50b3N0cmluZyh0cmVlLCAidXRmLTgiKQotICAgIGInPHRhZyBcXHhjM1xceGE0dHRyPSJ2XFx4YzNcXHhhNGx1ZSIgLz4nCisgICAgZGVmIHRlc3RfYnVnX3htbHRvb2xraXQ1NShzZWxmKToKKyAgICAgICAgIyBtYWtlIHN1cmUgd2UncmUgcmVwb3J0aW5nIHRoZSBmaXJzdCBlcnJvciwgbm90IHRoZSBsYXN0CiAKLSAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFVC5QYXJzZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIEVULlhNTChiIjwhRE9DVFlQRSBkb2MgU1lTVEVNICdkb2MuZHRkJz4iCisgICAgICAgICAgICAgICAgICAgYic8ZG9jPiZsZG90czsmbmRvdHM7JnJkb3RzOzwvZG9jPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgJ3VuZGVmaW5lZCBlbnRpdHkgJmxkb3RzOzogbGluZSAxLCBjb2x1bW4gMzYnKQogCi1kZWYgYnVnX3htbHRvb2xraXQ1NCgpOgotICAgICIiIgorICAgIGRlZiB0ZXN0X2J1Z194bWx0b29sa2l0NjAoc2VsZik6CisgICAgICAgICMgSGFuZGxlIGNyYXNoIGluIHN0cmVhbSBzb3VyY2UuCiAKLSAgICBwcm9ibGVtcyBoYW5kbGluZyBpbnRlcm5hbGx5IGRlZmluZWQgZW50aXRpZXMKKyAgICAgICAgY2xhc3MgRXhjZXB0aW9uRmlsZToKKyAgICAgICAgICAgIGRlZiByZWFkKHNlbGYsIHgpOgorICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IKIAotICAgID4+PiBlID0gRVQuWE1MKCI8IURPQ1RZUEUgZG9jIFs8IUVOVElUWSBsZG90cyAnJiN4ODIzMDsnPl0+PGRvYz4mbGRvdHM7PC9kb2M+IikKLSAgICA+Pj4gc2VyaWFsaXplKGUsIGVuY29kaW5nPSJ1cy1hc2NpaSIpCi0gICAgYic8ZG9jPiYjMzMzMjg7PC9kb2M+JwotICAgID4+PiBzZXJpYWxpemUoZSkKLSAgICAnPGRvYz5cdTgyMzA8L2RvYz4nCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIEVULnBhcnNlLCBFeGNlcHRpb25GaWxlKCkpCiAKLSAgICAiIiIKKyAgICBkZWYgdGVzdF9idWdfeG1sdG9vbGtpdDYyKHNlbGYpOgorICAgICAgICAjIERvbid0IGNyYXNoIHdoZW4gdXNpbmcgY3VzdG9tIGVudGl0aWVzLgogCi1kZWYgYnVnX3htbHRvb2xraXQ1NSgpOgotICAgICIiIgotCi0gICAgbWFrZSBzdXJlIHdlJ3JlIHJlcG9ydGluZyB0aGUgZmlyc3QgZXJyb3IsIG5vdCB0aGUgbGFzdAotCi0gICAgPj4+IG5vcm1hbGl6ZV9leGNlcHRpb24oRVQuWE1MLCBiIjwhRE9DVFlQRSBkb2MgU1lTVEVNICdkb2MuZHRkJz48ZG9jPiZsZG90czsmbmRvdHM7JnJkb3RzOzwvZG9jPiIpCi0gICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgIFBhcnNlRXJyb3I6IHVuZGVmaW5lZCBlbnRpdHkgJmxkb3RzOzogbGluZSAxLCBjb2x1bW4gMzYKLQotICAgICIiIgotCi1jbGFzcyBFeGNlcHRpb25GaWxlOgotICAgIGRlZiByZWFkKHNlbGYsIHgpOgotICAgICAgICByYWlzZSBJT0Vycm9yCi0KLWRlZiB4bWx0b29sa2l0NjAoKToKLSAgICAiIiIKLQotICAgIEhhbmRsZSBjcmFzaCBpbiBzdHJlYW0gc291cmNlLgotICAgID4+PiB0cmVlID0gRVQucGFyc2UoRXhjZXB0aW9uRmlsZSgpKQotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICBJT0Vycm9yCi0KLSAgICAiIiIKLQotWE1MVE9PTEtJVDYyX0RPQyA9ICIiIjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CisgICAgICAgIEVOVElUSUVTID0geydyc3F1byc6ICdcdTIwMTknLCAnbHNxdW8nOiAnXHUyMDE4J30KKyAgICAgICAgcGFyc2VyID0gRVQuWE1MVHJlZUJ1aWxkZXIoKQorICAgICAgICBwYXJzZXIuZW50aXR5LnVwZGF0ZShFTlRJVElFUykKKyAgICAgICAgcGFyc2VyLmZlZWQoIiIiPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KIDwhRE9DVFlQRSBwYXRlbnQtYXBwbGljYXRpb24tcHVibGljYXRpb24gU1lTVEVNICJwYXAtdjE1LTIwMDEtMDEtMzEuZHRkIiBbXT4KIDxwYXRlbnQtYXBwbGljYXRpb24tcHVibGljYXRpb24+CiA8c3ViZG9jLWFic3RyYWN0PgogPHBhcmFncmFwaCBpZD0iQS0wMDAxIiBsdmw9IjAiPkEgbmV3IGN1bHRpdmFyIG9mIEJlZ29uaWEgcGxhbnQgbmFtZWQgJmxzcXVvO0JDVDk4MDFCRUcmcnNxdW87LjwvcGFyYWdyYXBoPgogPC9zdWJkb2MtYWJzdHJhY3Q+Ci08L3BhdGVudC1hcHBsaWNhdGlvbi1wdWJsaWNhdGlvbj4iIiIKKzwvcGF0ZW50LWFwcGxpY2F0aW9uLXB1YmxpY2F0aW9uPiIiIikKKyAgICAgICAgdCA9IHBhcnNlci5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5maW5kKCcuLy9wYXJhZ3JhcGgnKS50ZXh0LAorICAgICAgICAgICAgJ0EgbmV3IGN1bHRpdmFyIG9mIEJlZ29uaWEgcGxhbnQgbmFtZWQgXHUyMDE4QkNUOTgwMUJFR1x1MjAxOS4nKQogCisgICAgZGVmIHRlc3RfYnVnX3htbHRvb2xraXQ2MyhzZWxmKToKKyAgICAgICAgIyBDaGVjayByZWZlcmVuY2UgbGVhay4KKyAgICAgICAgZGVmIHhtbHRvb2xraXQ2MygpOgorICAgICAgICAgICAgdHJlZSA9IEVULlRyZWVCdWlsZGVyKCkKKyAgICAgICAgICAgIHRyZWUuc3RhcnQoInRhZyIsIHt9KQorICAgICAgICAgICAgdHJlZS5kYXRhKCJ0ZXh0IikKKyAgICAgICAgICAgIHRyZWUuZW5kKCJ0YWciKQogCi1kZWYgeG1sdG9vbGtpdDYyKCk6Ci0gICAgIiIiCisgICAgICAgIHhtbHRvb2xraXQ2MygpCisgICAgICAgIGNvdW50ID0gc3lzLmdldHJlZmNvdW50KE5vbmUpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMDApOgorICAgICAgICAgICAgeG1sdG9vbGtpdDYzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0cmVmY291bnQoTm9uZSksIGNvdW50KQogCi0gICAgRG9uJ3QgY3Jhc2ggd2hlbiB1c2luZyBjdXN0b20gZW50aXRpZXMuCisgICAgZGVmIHRlc3RfYnVnXzIwMDcwOF9uZXdsaW5lKHNlbGYpOgorICAgICAgICAjIFByZXNlcnZlIG5ld2xpbmVzIGluIGF0dHJpYnV0ZXMuCiAKLSAgICA+Pj4geG1sdG9vbGtpdDYyKCkKLSAgICAnQSBuZXcgY3VsdGl2YXIgb2YgQmVnb25pYSBwbGFudCBuYW1lZCBcdTIwMThCQ1Q5ODAxQkVHXHUyMDE5LicKKyAgICAgICAgZSA9IEVULkVsZW1lbnQoJ1NvbWVUYWcnLCB0ZXh0PSJkZWYgX2YoKTpcbiAgcmV0dXJuIDNcbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQudG9zdHJpbmcoZSksCisgICAgICAgICAgICAgICAgYic8U29tZVRhZyB0ZXh0PSJkZWYgX2YoKTomIzEwOyAgcmV0dXJuIDMmIzEwOyIgLz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULlhNTChFVC50b3N0cmluZyhlKSkuZ2V0KCJ0ZXh0IiksCisgICAgICAgICAgICAgICAgJ2RlZiBfZigpOlxuICByZXR1cm4gM1xuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC50b3N0cmluZyhFVC5YTUwoRVQudG9zdHJpbmcoZSkpKSwKKyAgICAgICAgICAgICAgICBiJzxTb21lVGFnIHRleHQ9ImRlZiBfZigpOiYjMTA7ICByZXR1cm4gMyYjMTA7IiAvPicpCiAKLSAgICAiIiIKLSAgICBFTlRJVElFUyA9IHsncnNxdW8nOiAnXHUyMDE5JywgJ2xzcXVvJzogJ1x1MjAxOCd9Ci0gICAgcGFyc2VyID0gRVQuWE1MVHJlZUJ1aWxkZXIoKQotICAgIHBhcnNlci5lbnRpdHkudXBkYXRlKEVOVElUSUVTKQotICAgIHBhcnNlci5mZWVkKFhNTFRPT0xLSVQ2Ml9ET0MpCi0gICAgdCA9IHBhcnNlci5jbG9zZSgpCi0gICAgcmV0dXJuIHQuZmluZCgnLi8vcGFyYWdyYXBoJykudGV4dAorICAgIGRlZiB0ZXN0X2J1Z18yMDA3MDhfY2xvc2Uoc2VsZik6CisgICAgICAgICMgVGVzdCBkZWZhdWx0IGJ1aWxkZXIuCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcigpICMgZGVmYXVsdAorICAgICAgICBwYXJzZXIuZmVlZCgiPGVsZW1lbnQ+c29tZSB0ZXh0PC9lbGVtZW50PiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyLmNsb3NlKCkudGFnLCAnZWxlbWVudCcpCiAKLWRlZiB4bWx0b29sa2l0NjMoKToKLSAgICAiIiIKKyAgICAgICAgIyBUZXN0IGN1c3RvbSBidWlsZGVyLgorICAgICAgICBjbGFzcyBFY2hvVGFyZ2V0OgorICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBFVC5FbGVtZW50KCJlbGVtZW50IikgIyBzaW11bGF0ZSByb290CisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcihFY2hvVGFyZ2V0KCkpCisgICAgICAgIHBhcnNlci5mZWVkKCI8ZWxlbWVudD5zb21lIHRleHQ8L2VsZW1lbnQ+IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuY2xvc2UoKS50YWcsICdlbGVtZW50JykKIAotICAgIENoZWNrIHJlZmVyZW5jZSBsZWFrLgotICAgID4+PiB4bWx0b29sa2l0NjMoKQotICAgID4+PiBjb3VudCA9IHN5cy5nZXRyZWZjb3VudChOb25lKQotICAgID4+PiBmb3IgaSBpbiByYW5nZSgxMDAwKToKLSAgICAuLi4gICAgIHhtbHRvb2xraXQ2MygpCi0gICAgPj4+IHN5cy5nZXRyZWZjb3VudChOb25lKSAtIGNvdW50Ci0gICAgMAorICAgIGRlZiB0ZXN0X2J1Z18yMDA3MDlfZGVmYXVsdF9uYW1lc3BhY2Uoc2VsZik6CisgICAgICAgIGUgPSBFVC5FbGVtZW50KCJ7ZGVmYXVsdH1lbGVtIikKKyAgICAgICAgcyA9IEVULlN1YkVsZW1lbnQoZSwgIntkZWZhdWx0fWVsZW0iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlLCBkZWZhdWx0X25hbWVzcGFjZT0iZGVmYXVsdCIpLCAjIDEKKyAgICAgICAgICAgICAgICAnPGVsZW0geG1sbnM9ImRlZmF1bHQiPjxlbGVtIC8+PC9lbGVtPicpCiAKLSAgICAiIiIKLSAgICB0cmVlID0gRVQuVHJlZUJ1aWxkZXIoKQotICAgIHRyZWUuc3RhcnQoInRhZyIsIHt9KQotICAgIHRyZWUuZGF0YSgidGV4dCIpCi0gICAgdHJlZS5lbmQoInRhZyIpCisgICAgICAgIGUgPSBFVC5FbGVtZW50KCJ7ZGVmYXVsdH1lbGVtIikKKyAgICAgICAgcyA9IEVULlN1YkVsZW1lbnQoZSwgIntkZWZhdWx0fWVsZW0iKQorICAgICAgICBzID0gRVQuU3ViRWxlbWVudChlLCAie25vdC1kZWZhdWx0fWVsZW0iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlLCBkZWZhdWx0X25hbWVzcGFjZT0iZGVmYXVsdCIpLCAjIDIKKyAgICAgICAgICAgICc8ZWxlbSB4bWxucz0iZGVmYXVsdCIgeG1sbnM6bnMxPSJub3QtZGVmYXVsdCI+JworICAgICAgICAgICAgJzxlbGVtIC8+JworICAgICAgICAgICAgJzxuczE6ZWxlbSAvPicKKyAgICAgICAgICAgICc8L2VsZW0+JykKKworICAgICAgICBlID0gRVQuRWxlbWVudCgie2RlZmF1bHR9ZWxlbSIpCisgICAgICAgIHMgPSBFVC5TdWJFbGVtZW50KGUsICJ7ZGVmYXVsdH1lbGVtIikKKyAgICAgICAgcyA9IEVULlN1YkVsZW1lbnQoZSwgImVsZW0iKSAjIHVucHJlZml4ZWQgbmFtZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgc2VyaWFsaXplKGUsIGRlZmF1bHRfbmFtZXNwYWNlPSJkZWZhdWx0IikgIyAzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgJ2Nhbm5vdCB1c2Ugbm9uLXF1YWxpZmllZCBuYW1lcyB3aXRoIGRlZmF1bHRfbmFtZXNwYWNlIG9wdGlvbicpCisKKyAgICBkZWYgdGVzdF9idWdfMjAwNzA5X3JlZ2lzdGVyX25hbWVzcGFjZShzZWxmKToKKyAgICAgICAgZSA9IEVULkVsZW1lbnQoIntodHRwOi8vbmFtZXNwYWNlLmludmFsaWQvZG9lcy9ub3QvZXhpc3QvfXRpdGxlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC50b3N0cmluZyhlKSwKKyAgICAgICAgICAgIGInPG5zMDp0aXRsZSB4bWxuczpuczA9Imh0dHA6Ly9uYW1lc3BhY2UuaW52YWxpZC9kb2VzL25vdC9leGlzdC8iIC8+JykKKyAgICAgICAgRVQucmVnaXN0ZXJfbmFtZXNwYWNlKCJmb28iLCAiaHR0cDovL25hbWVzcGFjZS5pbnZhbGlkL2RvZXMvbm90L2V4aXN0LyIpCisgICAgICAgIGUgPSBFVC5FbGVtZW50KCJ7aHR0cDovL25hbWVzcGFjZS5pbnZhbGlkL2RvZXMvbm90L2V4aXN0L310aXRsZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQudG9zdHJpbmcoZSksCisgICAgICAgICAgICBiJzxmb286dGl0bGUgeG1sbnM6Zm9vPSJodHRwOi8vbmFtZXNwYWNlLmludmFsaWQvZG9lcy9ub3QvZXhpc3QvIiAvPicpCisKKyAgICAgICAgIyBBbmQgdGhlIER1YmxpbiBDb3JlIG5hbWVzcGFjZSBpcyBpbiB0aGUgZGVmYXVsdCBsaXN0OgorCisgICAgICAgIGUgPSBFVC5FbGVtZW50KCJ7aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS99dGl0bGUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULnRvc3RyaW5nKGUpLAorICAgICAgICAgICAgYic8ZGM6dGl0bGUgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiAvPicpCisKKyAgICBkZWYgdGVzdF9idWdfMjAwNzA5X2VsZW1lbnRfY29tbWVudChzZWxmKToKKyAgICAgICAgIyBOb3Qgc3VyZSBpZiB0aGlzIGNhbiBiZSBmaXhlZCwgcmVhbGx5IChzaW5jZSB0aGUgc2VyaWFsaXplciBuZWVkcworICAgICAgICAjIEVULkNvbW1lbnQsIG5vdCBjRVQuY29tbWVudCkuCisKKyAgICAgICAgYSA9IEVULkVsZW1lbnQoJ2EnKQorICAgICAgICBhLmFwcGVuZChFVC5Db21tZW50KCdmb28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhWzBdLnRhZywgRVQuQ29tbWVudCkKKworICAgICAgICBhID0gRVQuRWxlbWVudCgnYScpCisgICAgICAgIGEuYXBwZW5kKEVULlBJKCdmb28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhWzBdLnRhZywgRVQuUEkpCisKKyAgICBkZWYgdGVzdF9idWdfMjAwNzA5X2VsZW1lbnRfaW5zZXJ0KHNlbGYpOgorICAgICAgICBhID0gRVQuRWxlbWVudCgnYScpCisgICAgICAgIGIgPSBFVC5TdWJFbGVtZW50KGEsICdiJykKKyAgICAgICAgYyA9IEVULlN1YkVsZW1lbnQoYSwgJ2MnKQorICAgICAgICBkID0gRVQuRWxlbWVudCgnZCcpCisgICAgICAgIGEuaW5zZXJ0KDAsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoYSksIFsnZCcsICdiJywgJ2MnXSkKKyAgICAgICAgYS5pbnNlcnQoLTEsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoYSksIFsnZCcsICdiJywgJ2QnLCAnYyddKQorCisgICAgZGVmIHRlc3RfYnVnXzIwMDcwOV9pdGVyX2NvbW1lbnQoc2VsZik6CisgICAgICAgIGEgPSBFVC5FbGVtZW50KCdhJykKKyAgICAgICAgYiA9IEVULlN1YkVsZW1lbnQoYSwgJ2InKQorICAgICAgICBjb21tZW50X2IgPSBFVC5Db21tZW50KCJURVNULWIiKQorICAgICAgICBiLmFwcGVuZChjb21tZW50X2IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoYS5pdGVyKEVULkNvbW1lbnQpKSwgW0VULkNvbW1lbnRdKQorCisgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICMgcmVwb3J0ZWQgb24gYnVncy5weXRob24ub3JnCisKKyAgICBkZWYgdGVzdF9idWdfMTUzNDYzMChzZWxmKToKKyAgICAgICAgYm9iID0gRVQuVHJlZUJ1aWxkZXIoKQorICAgICAgICBlID0gYm9iLmRhdGEoImRhdGEiKQorICAgICAgICBlID0gYm9iLnN0YXJ0KCJ0YWciLCB7fSkKKyAgICAgICAgZSA9IGJvYi5lbmQoInRhZyIpCisgICAgICAgIGUgPSBib2IuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlKSwgJzx0YWcgLz4nKQorCisgICAgZGVmIHRlc3RfaXNzdWU2MjMzKHNlbGYpOgorICAgICAgICBlID0gRVQuWE1MKGIiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0ndXRmLTgnPz4iCisgICAgICAgICAgICAgICAgICAgYic8Ym9keT50XHhjM1x4YTNnPC9ib2R5PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQudG9zdHJpbmcoZSwgJ2FzY2lpJyksCisgICAgICAgICAgICAgICAgYiI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdhc2NpaSc/PlxuIgorICAgICAgICAgICAgICAgIGInPGJvZHk+dCYjMjI3O2c8L2JvZHk+JykKKyAgICAgICAgZSA9IEVULlhNTChiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2lzby04ODU5LTEnPz4iCisgICAgICAgICAgICAgICAgICAgYic8Ym9keT50XHhlM2c8L2JvZHk+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC50b3N0cmluZyhlLCAnYXNjaWknKSwKKyAgICAgICAgICAgICAgICBiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2FzY2lpJz8+XG4iCisgICAgICAgICAgICAgICAgYic8Ym9keT50JiMyMjc7ZzwvYm9keT4nKQorCisgICAgZGVmIHRlc3RfaXNzdWUzMTUxKHNlbGYpOgorICAgICAgICBlID0gRVQuWE1MKCc8cHJlZml4OmxvY2FsbmFtZSB4bWxuczpwcmVmaXg9IiR7c3R1ZmZ9Ii8+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnRhZywgJ3ske3N0dWZmfX1sb2NhbG5hbWUnKQorICAgICAgICB0ID0gRVQuRWxlbWVudFRyZWUoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC50b3N0cmluZyhlKSwgYic8bnMwOmxvY2FsbmFtZSB4bWxuczpuczA9IiR7c3R1ZmZ9IiAvPicpCisKKyAgICBkZWYgdGVzdF9pc3N1ZTY1NjUoc2VsZik6CisgICAgICAgIGVsZW0gPSBFVC5YTUwoIjxib2R5Pjx0YWcvPjwvYm9keT4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGVsZW0pLCBbJ3RhZyddKQorICAgICAgICBuZXdlbGVtID0gRVQuWE1MKFNBTVBMRV9YTUwpCisgICAgICAgIGVsZW1bOl0gPSBuZXdlbGVtWzpdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZWxlbSksIFsndGFnJywgJ3RhZycsICdzZWN0aW9uJ10pCisKKyAgICBkZWYgdGVzdF9pc3N1ZTEwNzc3KHNlbGYpOgorICAgICAgICAjIFJlZ2lzdGVyaW5nIGEgbmFtZXNwYWNlIHR3aWNlIGNhdXNlZCBhICJkaWN0aW9uYXJ5IGNoYW5nZWQgc2l6ZSBkdXJpbmcKKyAgICAgICAgIyBpdGVyYXRpb24iIGJ1Zy4KKworICAgICAgICBFVC5yZWdpc3Rlcl9uYW1lc3BhY2UoJ3Rlc3QxMDc3NycsICdodHRwOi8vbXl1cmkvJykKKyAgICAgICAgRVQucmVnaXN0ZXJfbmFtZXNwYWNlKCd0ZXN0MTA3NzcnLCAnaHR0cDovL215dXJpLycpCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogCi1kZWYgYnVnXzIwMDcwOF9uZXdsaW5lKCk6Ci0gICAgciIiIgorY2xhc3MgQmFzaWNFbGVtZW50VGVzdChFbGVtZW50VGVzdENhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9hdWdtZW50YXRpb25fdHlwZV9lcnJvcnMoc2VsZik6CisgICAgICAgIGUgPSBFVC5FbGVtZW50KCdqb2UnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGUuYXBwZW5kLCAnYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZS5leHRlbmQsIFtFVC5FbGVtZW50KCdiYXInKSwgJ2ZvbyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGUuaW5zZXJ0LCAwLCAnZm9vJykKIAotICAgIFByZXNlcnZlIG5ld2xpbmVzIGluIGF0dHJpYnV0ZXMuCisgICAgZGVmIHRlc3RfY3ljbGljX2djKHNlbGYpOgorICAgICAgICBjbGFzcyBEdW1teToKKyAgICAgICAgICAgIHBhc3MKIAotICAgID4+PiBlID0gRVQuRWxlbWVudCgnU29tZVRhZycsIHRleHQ9ImRlZiBfZigpOlxuICByZXR1cm4gM1xuIikKLSAgICA+Pj4gRVQudG9zdHJpbmcoZSkKLSAgICBiJzxTb21lVGFnIHRleHQ9ImRlZiBfZigpOiYjMTA7ICByZXR1cm4gMyYjMTA7IiAvPicKLSAgICA+Pj4gRVQuWE1MKEVULnRvc3RyaW5nKGUpKS5nZXQoInRleHQiKQotICAgICdkZWYgX2YoKTpcbiAgcmV0dXJuIDNcbicKLSAgICA+Pj4gRVQudG9zdHJpbmcoRVQuWE1MKEVULnRvc3RyaW5nKGUpKSkKLSAgICBiJzxTb21lVGFnIHRleHQ9ImRlZiBfZigpOiYjMTA7ICByZXR1cm4gMyYjMTA7IiAvPicKKyAgICAgICAgIyBUZXN0IHRoZSBzaG9ydGVzdCBjeWNsZTogZC0+ZWxlbWVudC0+ZAorICAgICAgICBkID0gRHVtbXkoKQorICAgICAgICBkLmR1bW15cmVmID0gRVQuRWxlbWVudCgnam9lJywgYXR0cj1kKQorICAgICAgICB3cmVmID0gd2Vha3JlZi5yZWYoZCkKKyAgICAgICAgZGVsIGQKKyAgICAgICAgZ2NfY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHdyZWYoKSkKIAotICAgICIiIgorICAgICAgICAjIEEgbG9uZ2VyIGN5Y2xlOiBkLT5lLT5lMi0+ZAorICAgICAgICBlID0gRVQuRWxlbWVudCgnam9lJykKKyAgICAgICAgZCA9IER1bW15KCkKKyAgICAgICAgZC5kdW1teXJlZiA9IGUKKyAgICAgICAgd3JlZiA9IHdlYWtyZWYucmVmKGQpCisgICAgICAgIGUyID0gRVQuU3ViRWxlbWVudChlLCAnZm9vJywgYXR0cj1kKQorICAgICAgICBkZWwgZCwgZSwgZTIKKyAgICAgICAgZ2NfY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHdyZWYoKSkKIAotZGVmIGJ1Z18yMDA3MDhfY2xvc2UoKToKLSAgICAiIiIKKyAgICAgICAgIyBBIGN5Y2xlIGJldHdlZW4gRWxlbWVudCBvYmplY3RzIGFzIGNoaWxkcmVuIG9mIG9uZSBhbm90aGVyCisgICAgICAgICMgZTEtPmUyLT5lMy0+ZTEKKyAgICAgICAgZTEgPSBFVC5FbGVtZW50KCdlMScpCisgICAgICAgIGUyID0gRVQuRWxlbWVudCgnZTInKQorICAgICAgICBlMyA9IEVULkVsZW1lbnQoJ2UzJykKKyAgICAgICAgZTEuYXBwZW5kKGUyKQorICAgICAgICBlMi5hcHBlbmQoZTIpCisgICAgICAgIGUzLmFwcGVuZChlMSkKKyAgICAgICAgd3JlZiA9IHdlYWtyZWYucmVmKGUxKQorICAgICAgICBkZWwgZTEsIGUyLCBlMworICAgICAgICBnY19jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUod3JlZigpKQogCi0gICAgVGVzdCBkZWZhdWx0IGJ1aWxkZXIuCi0gICAgPj4+IHBhcnNlciA9IEVULlhNTFBhcnNlcigpICMgZGVmYXVsdAotICAgID4+PiBwYXJzZXIuZmVlZCgiPGVsZW1lbnQ+c29tZSB0ZXh0PC9lbGVtZW50PiIpCi0gICAgPj4+IHN1bW1hcml6ZShwYXJzZXIuY2xvc2UoKSkKLSAgICAnZWxlbWVudCcKKyAgICBkZWYgdGVzdF93ZWFrcmVmKHNlbGYpOgorICAgICAgICBmbGFnID0gRmFsc2UKKyAgICAgICAgZGVmIHdyZWZfY2Iodyk6CisgICAgICAgICAgICBub25sb2NhbCBmbGFnCisgICAgICAgICAgICBmbGFnID0gVHJ1ZQorICAgICAgICBlID0gRVQuRWxlbWVudCgnZScpCisgICAgICAgIHdyZWYgPSB3ZWFrcmVmLnJlZihlLCB3cmVmX2NiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyZWYoKS50YWcsICdlJykKKyAgICAgICAgZGVsIGUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbGFnLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyZWYoKSwgTm9uZSkKIAotICAgIFRlc3QgY3VzdG9tIGJ1aWxkZXIuCi0gICAgPj4+IGNsYXNzIEVjaG9UYXJnZXQ6Ci0gICAgLi4uICAgICBkZWYgY2xvc2Uoc2VsZik6Ci0gICAgLi4uICAgICAgICAgcmV0dXJuIEVULkVsZW1lbnQoImVsZW1lbnQiKSAjIHNpbXVsYXRlIHJvb3QKLSAgICA+Pj4gcGFyc2VyID0gRVQuWE1MUGFyc2VyKEVjaG9UYXJnZXQoKSkKLSAgICA+Pj4gcGFyc2VyLmZlZWQoIjxlbGVtZW50PnNvbWUgdGV4dDwvZWxlbWVudD4iKQotICAgID4+PiBzdW1tYXJpemUocGFyc2VyLmNsb3NlKCkpCi0gICAgJ2VsZW1lbnQnCisgICAgZGVmIHRlc3RfZ2V0X2tleXdvcmRfYXJncyhzZWxmKToKKyAgICAgICAgZTEgPSBFVC5FbGVtZW50KCdmb28nICwgeD0xLCB5PTIsIHo9MykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlMS5nZXQoJ3gnLCBkZWZhdWx0PTcpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUxLmdldCgndycsIGRlZmF1bHQ9NyksIDcpCiAKLSAgICAiIiIKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgICMgaXNzdWUgIzE2MDc2OiB0aGUgQyBpbXBsZW1lbnRhdGlvbiB3YXNuJ3QgcGlja2xlYWJsZS4KKyAgICAgICAgZm9yIGR1bXBlciwgbG9hZGVyIGluIHByb2R1Y3Qoc2VsZi5tb2R1bGVzLCByZXBlYXQ9Mik6CisgICAgICAgICAgICBlID0gZHVtcGVyLkVsZW1lbnQoJ2ZvbycsIGJhcj00MikKKyAgICAgICAgICAgIGUudGV4dCA9ICJ0ZXh0IGdvZXMgaGVyZSIKKyAgICAgICAgICAgIGUudGFpbCA9ICJvcHBvc2l0ZSBvZiBoZWFkIgorICAgICAgICAgICAgZHVtcGVyLlN1YkVsZW1lbnQoZSwgJ2NoaWxkJykuYXBwZW5kKGR1bXBlci5FbGVtZW50KCdncmFuZGNoaWxkJykpCisgICAgICAgICAgICBlLmFwcGVuZChkdW1wZXIuRWxlbWVudCgnY2hpbGQnKSkKKyAgICAgICAgICAgIGUuZmluZGFsbCgnLi8vZ3JhbmRjaGlsZCcpWzBdLnNldCgnYXR0cicsICdvdGhlciB2YWx1ZScpCiAKLWRlZiBidWdfMjAwNzA5X2RlZmF1bHRfbmFtZXNwYWNlKCk6Ci0gICAgIiIiCisgICAgICAgICAgICBlMiA9IHNlbGYucGlja2xlUm91bmRUcmlwKGUsICd4bWwuZXRyZWUuRWxlbWVudFRyZWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wZXIsIGxvYWRlcikKIAotICAgID4+PiBlID0gRVQuRWxlbWVudCgie2RlZmF1bHR9ZWxlbSIpCi0gICAgPj4+IHMgPSBFVC5TdWJFbGVtZW50KGUsICJ7ZGVmYXVsdH1lbGVtIikKLSAgICA+Pj4gc2VyaWFsaXplKGUsIGRlZmF1bHRfbmFtZXNwYWNlPSJkZWZhdWx0IikgIyAxCi0gICAgJzxlbGVtIHhtbG5zPSJkZWZhdWx0Ij48ZWxlbSAvPjwvZWxlbT4nCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUyLnRhZywgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUyLmF0dHJpYlsnYmFyJ10sIDQyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZTIpLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbEVsZW1lbnRzKGUsIGUyKQogCi0gICAgPj4+IGUgPSBFVC5FbGVtZW50KCJ7ZGVmYXVsdH1lbGVtIikKLSAgICA+Pj4gcyA9IEVULlN1YkVsZW1lbnQoZSwgIntkZWZhdWx0fWVsZW0iKQotICAgID4+PiBzID0gRVQuU3ViRWxlbWVudChlLCAie25vdC1kZWZhdWx0fWVsZW0iKQotICAgID4+PiBzZXJpYWxpemUoZSwgZGVmYXVsdF9uYW1lc3BhY2U9ImRlZmF1bHQiKSAjIDIKLSAgICAnPGVsZW0geG1sbnM9ImRlZmF1bHQiIHhtbG5zOm5zMT0ibm90LWRlZmF1bHQiPjxlbGVtIC8+PG5zMTplbGVtIC8+PC9lbGVtPicKIAotICAgID4+PiBlID0gRVQuRWxlbWVudCgie2RlZmF1bHR9ZWxlbSIpCi0gICAgPj4+IHMgPSBFVC5TdWJFbGVtZW50KGUsICJ7ZGVmYXVsdH1lbGVtIikKLSAgICA+Pj4gcyA9IEVULlN1YkVsZW1lbnQoZSwgImVsZW0iKSAjIHVucHJlZml4ZWQgbmFtZQotICAgID4+PiBzZXJpYWxpemUoZSwgZGVmYXVsdF9uYW1lc3BhY2U9ImRlZmF1bHQiKSAjIDMKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgVmFsdWVFcnJvcjogY2Fubm90IHVzZSBub24tcXVhbGlmaWVkIG5hbWVzIHdpdGggZGVmYXVsdF9uYW1lc3BhY2Ugb3B0aW9uCitjbGFzcyBFbGVtZW50VHJlZVR5cGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9pc3R5cGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFVC5QYXJzZUVycm9yLCB0eXBlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRVQuUU5hbWUsIHR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFVC5FbGVtZW50VHJlZSwgdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEVULkVsZW1lbnQsIHR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFVC5UcmVlQnVpbGRlciwgdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEVULlhNTFBhcnNlciwgdHlwZSkKIAotICAgICIiIgorICAgIGRlZiB0ZXN0X0VsZW1lbnRfc3ViY2xhc3NfdHJpdmlhbChzZWxmKToKKyAgICAgICAgY2xhc3MgTXlFbGVtZW50KEVULkVsZW1lbnQpOgorICAgICAgICAgICAgcGFzcwogCi1kZWYgYnVnXzIwMDcwOV9yZWdpc3Rlcl9uYW1lc3BhY2UoKToKLSAgICAiIiIKKyAgICAgICAgbXllID0gTXlFbGVtZW50KCdmb28nKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobXllLCBFVC5FbGVtZW50KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobXllLCBNeUVsZW1lbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXllLnRhZywgJ2ZvbycpCiAKLSAgICA+Pj4gRVQudG9zdHJpbmcoRVQuRWxlbWVudCgie2h0dHA6Ly9uYW1lc3BhY2UuaW52YWxpZC9kb2VzL25vdC9leGlzdC99dGl0bGUiKSkKLSAgICBiJzxuczA6dGl0bGUgeG1sbnM6bnMwPSJodHRwOi8vbmFtZXNwYWNlLmludmFsaWQvZG9lcy9ub3QvZXhpc3QvIiAvPicKLSAgICA+Pj4gRVQucmVnaXN0ZXJfbmFtZXNwYWNlKCJmb28iLCAiaHR0cDovL25hbWVzcGFjZS5pbnZhbGlkL2RvZXMvbm90L2V4aXN0LyIpCi0gICAgPj4+IEVULnRvc3RyaW5nKEVULkVsZW1lbnQoIntodHRwOi8vbmFtZXNwYWNlLmludmFsaWQvZG9lcy9ub3QvZXhpc3QvfXRpdGxlIikpCi0gICAgYic8Zm9vOnRpdGxlIHhtbG5zOmZvbz0iaHR0cDovL25hbWVzcGFjZS5pbnZhbGlkL2RvZXMvbm90L2V4aXN0LyIgLz4nCisgICAgICAgICMgdGVzdCB0aGF0IGF0dHJpYnV0ZSBhc3NpZ25tZW50IHdvcmtzIChpc3N1ZSAxNDg0OSkKKyAgICAgICAgbXllLnRleHQgPSAiam9lIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15ZS50ZXh0LCAiam9lIikKIAotICAgIEFuZCB0aGUgRHVibGluIENvcmUgbmFtZXNwYWNlIGlzIGluIHRoZSBkZWZhdWx0IGxpc3Q6CisgICAgZGVmIHRlc3RfRWxlbWVudF9zdWJjbGFzc19jb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgY2xhc3MgTXlFbGVtZW50KEVULkVsZW1lbnQpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhZywgYXR0cmliPXt9LCAqKmV4dHJhKToKKyAgICAgICAgICAgICAgICBzdXBlcihNeUVsZW1lbnQsIHNlbGYpLl9faW5pdF9fKHRhZyArICdfXycsIGF0dHJpYiwgKipleHRyYSkKIAotICAgID4+PiBFVC50b3N0cmluZyhFVC5FbGVtZW50KCJ7aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS99dGl0bGUiKSkKLSAgICBiJzxkYzp0aXRsZSB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIC8+JworICAgICAgICBteWUgPSBNeUVsZW1lbnQoJ2ZvbycsIHsnYSc6IDEsICdiJzogMn0sIGM9MywgZD00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15ZS50YWcsICdmb29fXycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKG15ZS5pdGVtcygpKSwKKyAgICAgICAgICAgIFsoJ2EnLCAxKSwgKCdiJywgMiksICgnYycsIDMpLCAoJ2QnLCA0KV0pCiAKLSAgICAiIiIKKyAgICBkZWYgdGVzdF9FbGVtZW50X3N1YmNsYXNzX25ld19tZXRob2Qoc2VsZik6CisgICAgICAgIGNsYXNzIE15RWxlbWVudChFVC5FbGVtZW50KToKKyAgICAgICAgICAgIGRlZiBuZXdtZXRob2Qoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudGFnCiAKLWRlZiBidWdfMjAwNzA5X2VsZW1lbnRfY29tbWVudCgpOgotICAgICIiIgorICAgICAgICBteWUgPSBNeUVsZW1lbnQoJ2pvZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXllLm5ld21ldGhvZCgpLCAnam9lJykKIAotICAgIE5vdCBzdXJlIGlmIHRoaXMgY2FuIGJlIGZpeGVkLCByZWFsbHkgKHNpbmNlIHRoZSBzZXJpYWxpemVyIG5lZWRzCi0gICAgRVQuQ29tbWVudCwgbm90IGNFVC5jb21tZW50KS4KIAotICAgID4+PiBhID0gRVQuRWxlbWVudCgnYScpCi0gICAgPj4+IGEuYXBwZW5kKEVULkNvbW1lbnQoJ2ZvbycpKQotICAgID4+PiBhWzBdLnRhZyA9PSBFVC5Db21tZW50Ci0gICAgVHJ1ZQorY2xhc3MgRWxlbWVudEZpbmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9maW5kX3NpbXBsZShzZWxmKToKKyAgICAgICAgZSA9IEVULlhNTChTQU1QTEVfWE1MKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZmluZCgndGFnJykudGFnLCAndGFnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbmQoJ3NlY3Rpb24vdGFnJykudGFnLCAndGFnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbmQoJy4vdGFnJykudGFnLCAndGFnJykKIAotICAgID4+PiBhID0gRVQuRWxlbWVudCgnYScpCi0gICAgPj4+IGEuYXBwZW5kKEVULlBJKCdmb28nKSkKLSAgICA+Pj4gYVswXS50YWcgPT0gRVQuUEkKLSAgICBUcnVlCisgICAgICAgIGVbMl0gPSBFVC5YTUwoU0FNUExFX1NFQ1RJT04pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5maW5kKCdzZWN0aW9uL25leHR0YWcnKS50YWcsICduZXh0dGFnJykKIAotICAgICIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZmluZHRleHQoJy4vdGFnJyksICd0ZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbmR0ZXh0KCdzZWN0aW9uL3RhZycpLCAnc3VidGV4dCcpCiAKLWRlZiBidWdfMjAwNzA5X2VsZW1lbnRfaW5zZXJ0KCk6Ci0gICAgIiIiCisgICAgICAgICMgc2VjdGlvbi9uZXh0dGFnIGlzIGZvdW5kIGJ1dCBoYXMgbm8gdGV4dAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZmluZHRleHQoJ3NlY3Rpb24vbmV4dHRhZycpLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbmR0ZXh0KCdzZWN0aW9uL25leHR0YWcnLCAnZGVmYXVsdCcpLCAnJykKIAotICAgID4+PiBhID0gRVQuRWxlbWVudCgnYScpCi0gICAgPj4+IGIgPSBFVC5TdWJFbGVtZW50KGEsICdiJykKLSAgICA+Pj4gYyA9IEVULlN1YkVsZW1lbnQoYSwgJ2MnKQotICAgID4+PiBkID0gRVQuRWxlbWVudCgnZCcpCi0gICAgPj4+IGEuaW5zZXJ0KDAsIGQpCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGEpCi0gICAgWydkJywgJ2InLCAnYyddCi0gICAgPj4+IGEuaW5zZXJ0KC0xLCBkKQotICAgID4+PiBzdW1tYXJpemVfbGlzdChhKQotICAgIFsnZCcsICdiJywgJ2QnLCAnYyddCisgICAgICAgICMgdG9nIGRvZXNuJ3QgZXhpc3QgYW5kICdkZWZhdWx0JyBraWNrcyBpbgorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlLmZpbmR0ZXh0KCd0b2cnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbmR0ZXh0KCd0b2cnLCAnZGVmYXVsdCcpLCAnZGVmYXVsdCcpCiAKLSAgICAiIiIKKyAgICAgICAgIyBJc3N1ZSAjMTY5MjIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC5YTUwoJzx0YWc+PGVtcHR5IC8+PC90YWc+JykuZmluZHRleHQoJ2VtcHR5JyksICcnKQogCi1kZWYgYnVnXzIwMDcwOV9pdGVyX2NvbW1lbnQoKToKLSAgICAiIiIKKyAgICBkZWYgdGVzdF9maW5kX3hwYXRoKHNlbGYpOgorICAgICAgICBMSU5FQVJfWE1MID0gJycnCisgICAgICAgIDxib2R5PgorICAgICAgICAgICAgPHRhZyBjbGFzcz0nYScvPgorICAgICAgICAgICAgPHRhZyBjbGFzcz0nYicvPgorICAgICAgICAgICAgPHRhZyBjbGFzcz0nYycvPgorICAgICAgICAgICAgPHRhZyBjbGFzcz0nZCcvPgorICAgICAgICA8L2JvZHk+JycnCisgICAgICAgIGUgPSBFVC5YTUwoTElORUFSX1hNTCkKIAotICAgID4+PiBhID0gRVQuRWxlbWVudCgnYScpCi0gICAgPj4+IGIgPSBFVC5TdWJFbGVtZW50KGEsICdiJykKLSAgICA+Pj4gY29tbWVudF9iID0gRVQuQ29tbWVudCgiVEVTVC1iIikKLSAgICA+Pj4gYi5hcHBlbmQoY29tbWVudF9iKQotICAgID4+PiBzdW1tYXJpemVfbGlzdChhLml0ZXIoRVQuQ29tbWVudCkpCi0gICAgWyc8Q29tbWVudD4nXQorICAgICAgICAjIFRlc3QgZm9yIG51bWVyaWMgaW5kZXhpbmcgYW5kIGxhc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZmluZCgnLi90YWdbMV0nKS5hdHRyaWJbJ2NsYXNzJ10sICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbmQoJy4vdGFnWzJdJykuYXR0cmliWydjbGFzcyddLCAnYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5maW5kKCcuL3RhZ1tsYXN0KCldJykuYXR0cmliWydjbGFzcyddLCAnZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5maW5kKCcuL3RhZ1tsYXN0KCktMV0nKS5hdHRyaWJbJ2NsYXNzJ10sICdjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbmQoJy4vdGFnW2xhc3QoKS0yXScpLmF0dHJpYlsnY2xhc3MnXSwgJ2InKQogCi0gICAgIiIiCisgICAgZGVmIHRlc3RfZmluZGFsbChzZWxmKToKKyAgICAgICAgZSA9IEVULlhNTChTQU1QTEVfWE1MKQorICAgICAgICBlWzJdID0gRVQuWE1MKFNBTVBMRV9TRUNUSU9OKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnLicpKSwgWydib2R5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCd0YWcnKSksIFsndGFnJywgJ3RhZyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgndG9nJykpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJ3RvZy9mb28nKSksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnKicpKSwKKyAgICAgICAgICAgIFsndGFnJywgJ3RhZycsICdzZWN0aW9uJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCcuLy90YWcnKSksCisgICAgICAgICAgICBbJ3RhZyddICogNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJ3NlY3Rpb24vdGFnJykpLCBbJ3RhZyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnc2VjdGlvbi8vdGFnJykpLCBbJ3RhZyddICogMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJ3NlY3Rpb24vKicpKSwKKyAgICAgICAgICAgIFsndGFnJywgJ25leHR0YWcnLCAnbmV4dHNlY3Rpb24nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJ3NlY3Rpb24vLyonKSksCisgICAgICAgICAgICBbJ3RhZycsICduZXh0dGFnJywgJ25leHRzZWN0aW9uJywgJ3RhZyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnc2VjdGlvbi8uLy8qJykpLAorICAgICAgICAgICAgWyd0YWcnLCAnbmV4dHRhZycsICduZXh0c2VjdGlvbicsICd0YWcnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJyovKicpKSwKKyAgICAgICAgICAgIFsndGFnJywgJ25leHR0YWcnLCAnbmV4dHNlY3Rpb24nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJyovLyonKSksCisgICAgICAgICAgICBbJ3RhZycsICduZXh0dGFnJywgJ25leHRzZWN0aW9uJywgJ3RhZyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnKi90YWcnKSksIFsndGFnJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCcqLy4vdGFnJykpLCBbJ3RhZyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnLi90YWcnKSksIFsndGFnJ10gKiAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnLi8uL3RhZycpKSwgWyd0YWcnXSAqIDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJy4vL3RhZ1tAY2xhc3NdJykpLAorICAgICAgICAgICAgWyd0YWcnXSAqIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCcuLy90YWdbQGNsYXNzPSJhIl0nKSksCisgICAgICAgICAgICBbJ3RhZyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnLi8vdGFnW0BjbGFzcz0iYiJdJykpLAorICAgICAgICAgICAgWyd0YWcnXSAqIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCcuLy90YWdbQGlkXScpKSwKKyAgICAgICAgICAgIFsndGFnJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCcuLy9zZWN0aW9uW3RhZ10nKSksCisgICAgICAgICAgICBbJ3NlY3Rpb24nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJy4vL3NlY3Rpb25bZWxlbWVudF0nKSksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnLi4vdGFnJykpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJ3NlY3Rpb24vLi4vdGFnJykpLAorICAgICAgICAgICAgWyd0YWcnXSAqIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5maW5kYWxsKCdzZWN0aW9uLy8nKSwgZS5maW5kYWxsKCdzZWN0aW9uLy8qJykpCisKKyAgICBkZWYgdGVzdF90ZXN0X2ZpbmRfd2l0aF9ucyhzZWxmKToKKyAgICAgICAgZSA9IEVULlhNTChTQU1QTEVfWE1MX05TKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgndGFnJykpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgie2h0dHA6Ly9lZmZib3Qub3JnL25zfXRhZyIpKSwKKyAgICAgICAgICAgIFsne2h0dHA6Ly9lZmZib3Qub3JnL25zfXRhZyddICogMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgiLi8ve2h0dHA6Ly9lZmZib3Qub3JnL25zfXRhZyIpKSwKKyAgICAgICAgICAgIFsne2h0dHA6Ly9lZmZib3Qub3JnL25zfXRhZyddICogMykKKworICAgIGRlZiB0ZXN0X2JhZF9maW5kKHNlbGYpOgorICAgICAgICBlID0gRVQuWE1MKFNBTVBMRV9YTUwpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2Nhbm5vdCB1c2UgYWJzb2x1dGUgcGF0aCcpOgorICAgICAgICAgICAgZS5maW5kYWxsKCcvdGFnJykKKworICAgIGRlZiB0ZXN0X2ZpbmRfdGhyb3VnaF9FbGVtZW50VHJlZShzZWxmKToKKyAgICAgICAgZSA9IEVULlhNTChTQU1QTEVfWE1MKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULkVsZW1lbnRUcmVlKGUpLmZpbmQoJ3RhZycpLnRhZywgJ3RhZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQuRWxlbWVudFRyZWUoZSkuZmluZHRleHQoJ3RhZycpLCAndGV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoRVQuRWxlbWVudFRyZWUoZSkuZmluZGFsbCgndGFnJykpLAorICAgICAgICAgICAgWyd0YWcnXSAqIDIpCisgICAgICAgICMgdGhpcyBwcm9kdWNlcyBhIHdhcm5pbmcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChFVC5FbGVtZW50VHJlZShlKS5maW5kYWxsKCcvL3RhZycpKSwKKyAgICAgICAgICAgIFsndGFnJ10gKiAzKQorCisKK2NsYXNzIEVsZW1lbnRJdGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIF9pbGlzdChzZWxmLCBlbGVtLCB0YWc9Tm9uZSk6CisgICAgICAgIHJldHVybiBzdW1tYXJpemVfbGlzdChlbGVtLml0ZXIodGFnKSkKKworICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgICBkb2MgPSBFVC5YTUwoIjxodG1sPjxib2R5PnRoaXMgaXMgYSA8aT5wYXJhZ3JhcGg8L2k+LjwvYm9keT4uLjwvaHRtbD4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGRvYyksIFsnaHRtbCcsICdib2R5JywgJ2knXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChkb2MuZmluZCgnYm9keScpKSwgWydib2R5JywgJ2knXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGRvYy5pdGVyKCkpLnRhZywgJ2h0bWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmpvaW4oZG9jLml0ZXJ0ZXh0KCkpLCAndGhpcyBpcyBhIHBhcmFncmFwaC4uLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihkb2MuZmluZCgnYm9keScpLml0ZXJ0ZXh0KCkpLAorICAgICAgICAgICAgJ3RoaXMgaXMgYSBwYXJhZ3JhcGguJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGRvYy5pdGVydGV4dCgpKSwgJ3RoaXMgaXMgYSAnKQorCisgICAgICAgICMgaXRlcnBhcnNlIHNob3VsZCByZXR1cm4gYW4gaXRlcmF0b3IKKyAgICAgICAgc291cmNlZmlsZSA9IHNlcmlhbGl6ZShkb2MsIHRvX3N0cmluZz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KEVULml0ZXJwYXJzZShzb3VyY2VmaWxlKSlbMF0sICdlbmQnKQorCisgICAgICAgICMgV2l0aCBhbiBleHBsaXRpdCBwYXJzZXIgdG9vIChpc3N1ZSAjOTcwOCkKKyAgICAgICAgc291cmNlZmlsZSA9IHNlcmlhbGl6ZShkb2MsIHRvX3N0cmluZz1GYWxzZSkKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD1FVC5UcmVlQnVpbGRlcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoRVQuaXRlcnBhcnNlKHNvdXJjZWZpbGUsIHBhcnNlcj1wYXJzZXIpKVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZW5kJykKKworICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHRyZWUuaXRlcikKKworICAgICAgICAjIElzc3VlICMxNjkxMworICAgICAgICBkb2MgPSBFVC5YTUwoIjxyb290PmEmYW1wOzxzdWI+YiZhbXA7PC9zdWI+YyZhbXA7PC9yb290PiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihkb2MuaXRlcnRleHQoKSksICdhJmImYyYnKQorCisgICAgZGVmIHRlc3RfY29ybmVycyhzZWxmKToKKyAgICAgICAgIyBzaW5nbGUgcm9vdCwgbm8gc3ViZWxlbWVudHMKKyAgICAgICAgYSA9IEVULkVsZW1lbnQoJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGEpLCBbJ2EnXSkKKworICAgICAgICAjIG9uZSBjaGlsZAorICAgICAgICBiID0gRVQuU3ViRWxlbWVudChhLCAnYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoYSksIFsnYScsICdiJ10pCisKKyAgICAgICAgIyBvbmUgY2hpbGQgYW5kIG9uZSBncmFuZGNoaWxkCisgICAgICAgIGMgPSBFVC5TdWJFbGVtZW50KGIsICdjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChhKSwgWydhJywgJ2InLCAnYyddKQorCisgICAgICAgICMgdHdvIGNoaWxkcmVuLCBvbmx5IGZpcnN0IHdpdGggZ3JhbmRjaGlsZAorICAgICAgICBkID0gRVQuU3ViRWxlbWVudChhLCAnZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoYSksIFsnYScsICdiJywgJ2MnLCAnZCddKQorCisgICAgICAgICMgcmVwbGFjZSBmaXJzdCBjaGlsZCBieSBzZWNvbmQKKyAgICAgICAgYVswXSA9IGFbMV0KKyAgICAgICAgZGVsIGFbMV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChhKSwgWydhJywgJ2QnXSkKKworICAgIGRlZiB0ZXN0X2l0ZXJfYnlfdGFnKHNlbGYpOgorICAgICAgICBkb2MgPSBFVC5YTUwoJycnCisgICAgICAgICAgICA8ZG9jdW1lbnQ+CisgICAgICAgICAgICAgICAgPGhvdXNlPgorICAgICAgICAgICAgICAgICAgICA8cm9vbT5iZWRyb29tMTwvcm9vbT4KKyAgICAgICAgICAgICAgICAgICAgPHJvb20+YmVkcm9vbTI8L3Jvb20+CisgICAgICAgICAgICAgICAgPC9ob3VzZT4KKyAgICAgICAgICAgICAgICA8c2hlZD5ub3RoaW5nIGhlcmUKKyAgICAgICAgICAgICAgICA8L3NoZWQ+CisgICAgICAgICAgICAgICAgPGhvdXNlPgorICAgICAgICAgICAgICAgICAgICA8cm9vbT5iZWRyb29tODwvcm9vbT4KKyAgICAgICAgICAgICAgICA8L2hvdXNlPgorICAgICAgICAgICAgPC9kb2N1bWVudD4nJycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChkb2MsICdyb29tJyksIFsncm9vbSddICogMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChkb2MsICdob3VzZScpLCBbJ2hvdXNlJ10gKiAyKQorCisgICAgICAgICMgdGVzdCB0aGF0IGl0ZXIgYWxzbyBhY2NlcHRzICd0YWcnIGFzIGEga2V5d29yZCBhcmcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN1bW1hcml6ZV9saXN0KGRvYy5pdGVyKHRhZz0ncm9vbScpKSwKKyAgICAgICAgICAgIFsncm9vbSddICogMykKKworICAgICAgICAjIG1ha2Ugc3VyZSBib3RoIHRhZz1Ob25lIGFuZCB0YWc9JyonIHJldHVybiBhbGwgdGFncworICAgICAgICBhbGxfdGFncyA9IFsnZG9jdW1lbnQnLCAnaG91c2UnLCAncm9vbScsICdyb29tJywKKyAgICAgICAgICAgICAgICAgICAgJ3NoZWQnLCAnaG91c2UnLCAncm9vbSddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoZG9jKSwgYWxsX3RhZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoZG9jLCAnKicpLCBhbGxfdGFncykKKworCitjbGFzcyBUcmVlQnVpbGRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHNhbXBsZTEgPSAoJzwhRE9DVFlQRSBodG1sIFBVQkxJQycKKyAgICAgICAgJyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iJworICAgICAgICAnICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4nCisgICAgICAgICc8aHRtbD50ZXh0PGRpdj5zdWJ0ZXh0PC9kaXY+dGFpbDwvaHRtbD4nKQorCisgICAgc2FtcGxlMiA9ICcnJzx0b3BsZXZlbD5zb21ldGV4dDwvdG9wbGV2ZWw+JycnCisKKyAgICBkZWYgX2NoZWNrX3NhbXBsZTFfZWxlbWVudChzZWxmLCBlKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnRhZywgJ2h0bWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudGV4dCwgJ3RleHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudGFpbCwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmF0dHJpYiwge30pCisgICAgICAgIGNoaWxkcmVuID0gbGlzdChlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjaGlsZHJlbiksIDEpCisgICAgICAgIGNoaWxkID0gY2hpbGRyZW5bMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGlsZC50YWcsICdkaXYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoaWxkLnRleHQsICdzdWJ0ZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGlsZC50YWlsLCAndGFpbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hpbGQuYXR0cmliLCB7fSkKKworICAgIGRlZiB0ZXN0X2R1bW15X2J1aWxkZXIoc2VsZik6CisgICAgICAgIGNsYXNzIEJhc2VEdW1teUJ1aWxkZXI6CisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDQyCisKKyAgICAgICAgY2xhc3MgRHVtbXlCdWlsZGVyKEJhc2VEdW1teUJ1aWxkZXIpOgorICAgICAgICAgICAgZGF0YSA9IHN0YXJ0ID0gZW5kID0gbGFtYmRhICphOiBOb25lCisKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD1EdW1teUJ1aWxkZXIoKSkKKyAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlci5jbG9zZSgpLCA0MikKKworICAgICAgICBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PUJhc2VEdW1teUJ1aWxkZXIoKSkKKyAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlci5jbG9zZSgpLCA0MikKKworICAgICAgICBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PW9iamVjdCgpKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhcnNlci5jbG9zZSgpKQorCisgICAgZGVmIHRlc3Rfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIE15VHJlZUJ1aWxkZXIoRVQuVHJlZUJ1aWxkZXIpOgorICAgICAgICAgICAgZGVmIGZvb2JhcihzZWxmLCB4KToKKyAgICAgICAgICAgICAgICByZXR1cm4geCAqIDIKKworICAgICAgICB0YiA9IE15VHJlZUJ1aWxkZXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRiLmZvb2JhcigxMCksIDIwKQorCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9dGIpCisgICAgICAgIHBhcnNlci5mZWVkKHNlbGYuc2FtcGxlMSkKKworICAgICAgICBlID0gcGFyc2VyLmNsb3NlKCkKKyAgICAgICAgc2VsZi5fY2hlY2tfc2FtcGxlMV9lbGVtZW50KGUpCisKKyAgICBkZWYgdGVzdF9lbGVtZW50X2ZhY3Rvcnkoc2VsZik6CisgICAgICAgIGxzdCA9IFtdCisgICAgICAgIGRlZiBteWZhY3RvcnkodGFnLCBhdHRyaWIpOgorICAgICAgICAgICAgbm9ubG9jYWwgbHN0CisgICAgICAgICAgICBsc3QuYXBwZW5kKHRhZykKKyAgICAgICAgICAgIHJldHVybiBFVC5FbGVtZW50KHRhZywgYXR0cmliKQorCisgICAgICAgIHRiID0gRVQuVHJlZUJ1aWxkZXIoZWxlbWVudF9mYWN0b3J5PW15ZmFjdG9yeSkKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD10YikKKyAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUyKQorICAgICAgICBwYXJzZXIuY2xvc2UoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbJ3RvcGxldmVsJ10pCisKKyAgICBkZWYgX2NoZWNrX2VsZW1lbnRfZmFjdG9yeV9jbGFzcyhzZWxmLCBjbHMpOgorICAgICAgICB0YiA9IEVULlRyZWVCdWlsZGVyKGVsZW1lbnRfZmFjdG9yeT1jbHMpCisKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD10YikKKyAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUxKQorICAgICAgICBlID0gcGFyc2VyLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUsIGNscykKKyAgICAgICAgc2VsZi5fY2hlY2tfc2FtcGxlMV9lbGVtZW50KGUpCisKKyAgICBkZWYgdGVzdF9lbGVtZW50X2ZhY3Rvcnlfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIE15RWxlbWVudChFVC5FbGVtZW50KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5fY2hlY2tfZWxlbWVudF9mYWN0b3J5X2NsYXNzKE15RWxlbWVudCkKKworICAgIGRlZiB0ZXN0X2VsZW1lbnRfZmFjdG9yeV9wdXJlX3B5dGhvbl9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgIyBNaW1pY2sgU2ltcGxlVEFMJ3MgYmVoYXZpb3VyIChpc3N1ZSAjMTYwODkpOiBib3RoIHZlcnNpb25zIG9mCisgICAgICAgICMgVHJlZUJ1aWxkZXIgc2hvdWxkIGJlIGFibGUgdG8gY29wZSB3aXRoIGEgc3ViY2xhc3Mgb2YgdGhlCisgICAgICAgICMgcHVyZSBQeXRob24gRWxlbWVudCBjbGFzcy4KKyAgICAgICAgYmFzZSA9IEVULl9FbGVtZW50CisgICAgICAgICMgTm90IGZyb20gYSBDIGV4dGVuc2lvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhc2UuX19tb2R1bGVfXywgJ3htbC5ldHJlZS5FbGVtZW50VHJlZScpCisgICAgICAgICMgRm9yY2Ugc29tZSBtdWx0aXBsZSBpbmhlcml0YW5jZSB3aXRoIGEgQyBjbGFzcyB0byBtYWtlIHRoaW5ncworICAgICAgICAjIG1vcmUgaW50ZXJlc3RpbmcuCisgICAgICAgIGNsYXNzIE15RWxlbWVudChiYXNlLCBWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5fY2hlY2tfZWxlbWVudF9mYWN0b3J5X2NsYXNzKE15RWxlbWVudCkKKworICAgIGRlZiB0ZXN0X2RvY3R5cGUoc2VsZik6CisgICAgICAgIGNsYXNzIERvY3R5cGVQYXJzZXI6CisgICAgICAgICAgICBfZG9jdHlwZSA9IE5vbmUKKworICAgICAgICAgICAgZGVmIGRvY3R5cGUoc2VsZiwgbmFtZSwgcHViaWQsIHN5c3RlbSk6CisgICAgICAgICAgICAgICAgc2VsZi5fZG9jdHlwZSA9IChuYW1lLCBwdWJpZCwgc3lzdGVtKQorCisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2RvY3R5cGUKKworICAgICAgICBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PURvY3R5cGVQYXJzZXIoKSkKKyAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUxKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyLmNsb3NlKCksCisgICAgICAgICAgICAoJ2h0bWwnLCAnLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4nLAorICAgICAgICAgICAgICdodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkJykpCisKKworY2xhc3MgWE1MUGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgc2FtcGxlMSA9ICc8ZmlsZT48bGluZT4yMjwvbGluZT48L2ZpbGU+JworICAgIHNhbXBsZTIgPSAoJzwhRE9DVFlQRSBodG1sIFBVQkxJQycKKyAgICAgICAgJyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iJworICAgICAgICAnICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4nCisgICAgICAgICc8aHRtbD50ZXh0PC9odG1sPicpCisKKyAgICBkZWYgX2NoZWNrX3NhbXBsZV9lbGVtZW50KHNlbGYsIGUpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudGFnLCAnZmlsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZVswXS50YWcsICdsaW5lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlWzBdLnRleHQsICcyMicpCisKKyAgICBkZWYgdGVzdF9jb25zdHJ1Y3Rvcl9hcmdzKHNlbGYpOgorICAgICAgICAjIFBvc2l0aW9uYWwgYXJncy4gVGhlIGZpcnN0IChodG1sKSBpcyBub3Qgc3VwcG9ydGVkLCBidXQgc2hvdWxkIGJlCisgICAgICAgICMgbmV2ZXJ0aGVsZXNzIGNvcnJlY3RseSBhY2NlcHRlZC4KKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKE5vbmUsIEVULlRyZWVCdWlsZGVyKCksICd1dGYtOCcpCisgICAgICAgIHBhcnNlci5mZWVkKHNlbGYuc2FtcGxlMSkKKyAgICAgICAgc2VsZi5fY2hlY2tfc2FtcGxlX2VsZW1lbnQocGFyc2VyLmNsb3NlKCkpCisKKyAgICAgICAgIyBOb3cgYXMga2V5d29yZCBhcmdzLgorICAgICAgICBwYXJzZXIyID0gRVQuWE1MUGFyc2VyKGVuY29kaW5nPSd1dGYtOCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbD1be31dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1FVC5UcmVlQnVpbGRlcigpKQorICAgICAgICBwYXJzZXIyLmZlZWQoc2VsZi5zYW1wbGUxKQorICAgICAgICBzZWxmLl9jaGVja19zYW1wbGVfZWxlbWVudChwYXJzZXIyLmNsb3NlKCkpCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgTXlQYXJzZXIoRVQuWE1MUGFyc2VyKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcGFyc2VyID0gTXlQYXJzZXIoKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisgICAgICAgIHNlbGYuX2NoZWNrX3NhbXBsZV9lbGVtZW50KHBhcnNlci5jbG9zZSgpKQorCisgICAgZGVmIHRlc3Rfc3ViY2xhc3NfZG9jdHlwZShzZWxmKToKKyAgICAgICAgX2RvY3R5cGUgPSBOb25lCisgICAgICAgIGNsYXNzIE15UGFyc2VyV2l0aERvY3R5cGUoRVQuWE1MUGFyc2VyKToKKyAgICAgICAgICAgIGRlZiBkb2N0eXBlKHNlbGYsIG5hbWUsIHB1YmlkLCBzeXN0ZW0pOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIF9kb2N0eXBlCisgICAgICAgICAgICAgICAgX2RvY3R5cGUgPSAobmFtZSwgcHViaWQsIHN5c3RlbSkKKworICAgICAgICBwYXJzZXIgPSBNeVBhcnNlcldpdGhEb2N0eXBlKCkKKyAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUyKQorICAgICAgICBwYXJzZXIuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9kb2N0eXBlLAorICAgICAgICAgICAgKCdodG1sJywgJy0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOJywKKyAgICAgICAgICAgICAnaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCcpKQorCisKK2NsYXNzIE5hbWVzcGFjZVBhcnNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZmluZF93aXRoX25hbWVzcGFjZShzZWxmKToKKyAgICAgICAgbnNtYXAgPSB7J2gnOiAnaGVsbG8nLCAnZic6ICdmb28nfQorICAgICAgICBkb2MgPSBFVC5mcm9tc3RyaW5nKFNBTVBMRV9YTUxfTlNfRUxFTVMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZG9jLmZpbmRhbGwoJ3toZWxsb310YWJsZScsIG5zbWFwKSksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRvYy5maW5kYWxsKCcuLy97aGVsbG99dGQnLCBuc21hcCkpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkb2MuZmluZGFsbCgnLi8ve2Zvb31uYW1lJywgbnNtYXApKSwgMSkKKworCitjbGFzcyBFbGVtZW50U2xpY2luZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBfZWxlbV90YWdzKHNlbGYsIGVsZW1saXN0KToKKyAgICAgICAgcmV0dXJuIFtlLnRhZyBmb3IgZSBpbiBlbGVtbGlzdF0KKworICAgIGRlZiBfc3ViZWxlbV90YWdzKHNlbGYsIGVsZW0pOgorICAgICAgICByZXR1cm4gc2VsZi5fZWxlbV90YWdzKGxpc3QoZWxlbSkpCisKKyAgICBkZWYgX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKHNlbGYsIG51bWNoaWxkcmVuKToKKyAgICAgICAgIiIiQ3JlYXRlIGFuIEVsZW1lbnQgd2l0aCBhIHRhZyAnYScsIHdpdGggdGhlIGdpdmVuIGFtb3VudCBvZiBjaGlsZHJlbgorICAgICAgICAgICBuYW1lZCAnYTAnLCAnYTEnIC4uLiBhbmQgc28gb24uCisKKyAgICAgICAgIiIiCisgICAgICAgIGUgPSBFVC5FbGVtZW50KCdhJykKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobnVtY2hpbGRyZW4pOgorICAgICAgICAgICAgRVQuU3ViRWxlbWVudChlLCAnYSVzJyAlIGkpCisgICAgICAgIHJldHVybiBlCisKKyAgICBkZWYgdGVzdF9nZXRzbGljZV9zaW5nbGVfaW5kZXgoc2VsZik6CisgICAgICAgIGUgPSBzZWxmLl9tYWtlX2VsZW1fd2l0aF9jaGlsZHJlbigxMCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVbMV0udGFnLCAnYTEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVbLTJdLnRhZywgJ2E4JykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBsYW1iZGE6IGVbMTJdKQorCisgICAgZGVmIHRlc3RfZ2V0c2xpY2VfcmFuZ2Uoc2VsZik6CisgICAgICAgIGUgPSBzZWxmLl9tYWtlX2VsZW1fd2l0aF9jaGlsZHJlbig2KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbMzpdKSwgWydhMycsICdhNCcsICdhNSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2VsZW1fdGFncyhlWzM6Nl0pLCBbJ2EzJywgJ2E0JywgJ2E1J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbMzoxNl0pLCBbJ2EzJywgJ2E0JywgJ2E1J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbMzo1XSksIFsnYTMnLCAnYTQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVszOi0xXSksIFsnYTMnLCAnYTQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVs6Ml0pLCBbJ2EwJywgJ2ExJ10pCisKKyAgICBkZWYgdGVzdF9nZXRzbGljZV9zdGVwcyhzZWxmKToKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDEwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbODoxMDoxXSksIFsnYTgnLCAnYTknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVs6OjNdKSwgWydhMCcsICdhMycsICdhNicsICdhOSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2VsZW1fdGFncyhlWzo6OF0pLCBbJ2EwJywgJ2E4J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbMTo6OF0pLCBbJ2ExJywgJ2E5J10pCisKKyAgICBkZWYgdGVzdF9nZXRzbGljZV9uZWdhdGl2ZV9zdGVwcyhzZWxmKToKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVs6Oi0xXSksIFsnYTMnLCAnYTInLCAnYTEnLCAnYTAnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVs6Oi0yXSksIFsnYTMnLCAnYTEnXSkKKworICAgIGRlZiB0ZXN0X2RlbHNsaWNlKHNlbGYpOgorICAgICAgICBlID0gc2VsZi5fbWFrZV9lbGVtX3dpdGhfY2hpbGRyZW4oNCkKKyAgICAgICAgZGVsIGVbMDoyXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3N1YmVsZW1fdGFncyhlKSwgWydhMicsICdhMyddKQorCisgICAgICAgIGUgPSBzZWxmLl9tYWtlX2VsZW1fd2l0aF9jaGlsZHJlbig0KQorICAgICAgICBkZWwgZVswOl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9zdWJlbGVtX3RhZ3MoZSksIFtdKQorCisgICAgICAgIGUgPSBzZWxmLl9tYWtlX2VsZW1fd2l0aF9jaGlsZHJlbig0KQorICAgICAgICBkZWwgZVs6Oi0xXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3N1YmVsZW1fdGFncyhlKSwgW10pCisKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDQpCisgICAgICAgIGRlbCBlWzo6LTJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fc3ViZWxlbV90YWdzKGUpLCBbJ2EwJywgJ2EyJ10pCisKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDQpCisgICAgICAgIGRlbCBlWzE6OjJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fc3ViZWxlbV90YWdzKGUpLCBbJ2EwJywgJ2EyJ10pCisKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDIpCisgICAgICAgIGRlbCBlWzo6Ml0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9zdWJlbGVtX3RhZ3MoZSksIFsnYTEnXSkKKworCitjbGFzcyBJT1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVEZOKQorCisgICAgZGVmIHRlc3RfZW5jb2Rpbmcoc2VsZik6CisgICAgICAgICMgVGVzdCBlbmNvZGluZyBpc3N1ZXMuCisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciKQorICAgICAgICBlbGVtLnRleHQgPSAiYWJjIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtKSwgJzx0YWc+YWJjPC90YWc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IiksCisgICAgICAgICAgICAgICAgYic8dGFnPmFiYzwvdGFnPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpLAorICAgICAgICAgICAgICAgIGInPHRhZz5hYmM8L3RhZz4nKQorICAgICAgICBmb3IgZW5jIGluICgiaXNvLTg4NTktMSIsICJ1dGYtMTYiLCAidXRmLTMyIik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz1lbmMpLAorICAgICAgICAgICAgICAgICAgICAoIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9JyVzJz8+XG4iCisgICAgICAgICAgICAgICAgICAgICAiPHRhZz5hYmM8L3RhZz4iICUgZW5jKS5lbmNvZGUoZW5jKSkKKworICAgICAgICBlbGVtID0gRVQuRWxlbWVudCgidGFnIikKKyAgICAgICAgZWxlbS50ZXh0ID0gIjwmXCJcJz4iCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0pLCAnPHRhZz4mbHQ7JmFtcDsiXCcmZ3Q7PC90YWc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IiksCisgICAgICAgICAgICAgICAgYic8dGFnPiZsdDsmYW1wOyJcJyZndDs8L3RhZz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKSwKKyAgICAgICAgICAgICAgICBiJzx0YWc+Jmx0OyZhbXA7IlwnJmd0OzwvdGFnPicpCisgICAgICAgIGZvciBlbmMgaW4gKCJpc28tODg1OS0xIiwgInV0Zi0xNiIsICJ1dGYtMzIiKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPWVuYyksCisgICAgICAgICAgICAgICAgICAgICgiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nJXMnPz5cbiIKKyAgICAgICAgICAgICAgICAgICAgICI8dGFnPiZsdDsmYW1wO1wiJyZndDs8L3RhZz4iICUgZW5jKS5lbmNvZGUoZW5jKSkKKworICAgICAgICBlbGVtID0gRVQuRWxlbWVudCgidGFnIikKKyAgICAgICAgZWxlbS5hdHRyaWJbImtleSJdID0gIjwmXCJcJz4iCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0pLCAnPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXRmLTgiKSwKKyAgICAgICAgICAgICAgICBiJzx0YWcga2V5PSImbHQ7JmFtcDsmcXVvdDtcJyZndDsiIC8+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIiksCisgICAgICAgICAgICAgICAgYic8dGFnIGtleT0iJmx0OyZhbXA7JnF1b3Q7XCcmZ3Q7IiAvPicpCisgICAgICAgIGZvciBlbmMgaW4gKCJpc28tODg1OS0xIiwgInV0Zi0xNiIsICJ1dGYtMzIiKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPWVuYyksCisgICAgICAgICAgICAgICAgICAgICgiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nJXMnPz5cbiIKKyAgICAgICAgICAgICAgICAgICAgICI8dGFnIGtleT1cIiZsdDsmYW1wOyZxdW90OycmZ3Q7XCIgLz4iICUgZW5jKS5lbmNvZGUoZW5jKSkKKworICAgICAgICBlbGVtID0gRVQuRWxlbWVudCgidGFnIikKKyAgICAgICAgZWxlbS50ZXh0ID0gJ1x4ZTVceGY2XHhmNjw+JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtKSwgJzx0YWc+XHhlNVx4ZjZceGY2Jmx0OyZndDs8L3RhZz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXRmLTgiKSwKKyAgICAgICAgICAgICAgICBiJzx0YWc+XHhjM1x4YTVceGMzXHhiNlx4YzNceGI2Jmx0OyZndDs8L3RhZz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKSwKKyAgICAgICAgICAgICAgICBiJzx0YWc+JiMyMjk7JiMyNDY7JiMyNDY7Jmx0OyZndDs8L3RhZz4nKQorICAgICAgICBmb3IgZW5jIGluICgiaXNvLTg4NTktMSIsICJ1dGYtMTYiLCAidXRmLTMyIik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz1lbmMpLAorICAgICAgICAgICAgICAgICAgICAoIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9JyVzJz8+XG4iCisgICAgICAgICAgICAgICAgICAgICAiPHRhZz7DpcO2w7YmbHQ7Jmd0OzwvdGFnPiIgJSBlbmMpLmVuY29kZShlbmMpKQorCisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciKQorICAgICAgICBlbGVtLmF0dHJpYlsia2V5Il0gPSAnXHhlNVx4ZjZceGY2PD4nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0pLCAnPHRhZyBrZXk9Ilx4ZTVceGY2XHhmNiZsdDsmZ3Q7IiAvPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpLAorICAgICAgICAgICAgICAgIGInPHRhZyBrZXk9Ilx4YzNceGE1XHhjM1x4YjZceGMzXHhiNiZsdDsmZ3Q7IiAvPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpLAorICAgICAgICAgICAgICAgIGInPHRhZyBrZXk9IiYjMjI5OyYjMjQ2OyYjMjQ2OyZsdDsmZ3Q7IiAvPicpCisgICAgICAgIGZvciBlbmMgaW4gKCJpc28tODg1OS0xIiwgInV0Zi0xNiIsICJ1dGYtMTZsZSIsICJ1dGYtMTZiZSIsICJ1dGYtMzIiKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPWVuYyksCisgICAgICAgICAgICAgICAgICAgICgiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nJXMnPz5cbiIKKyAgICAgICAgICAgICAgICAgICAgICI8dGFnIGtleT1cIsOlw7bDtiZsdDsmZ3Q7XCIgLz4iICUgZW5jKS5lbmNvZGUoZW5jKSkKKworICAgIGRlZiB0ZXN0X3dyaXRlX3RvX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoRVQuWE1MKCcnJzxzaXRlIC8+JycnKSkKKyAgICAgICAgdHJlZS53cml0ZShURVNURk4pCisgICAgICAgIHdpdGggb3BlbihURVNURk4sICdyYicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiJycnPHNpdGUgLz4nJycpCisKKyAgICBkZWYgdGVzdF93cml0ZV90b190ZXh0X2ZpbGUoc2VsZik6CisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShFVC5YTUwoJycnPHNpdGUgLz4nJycpKQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAndycsIGVuY29kaW5nPSd1dGYtOCcpIGFzIGY6CisgICAgICAgICAgICB0cmVlLndyaXRlKGYsIGVuY29kaW5nPSd1bmljb2RlJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jbG9zZWQpCisgICAgICAgIHdpdGggb3BlbihURVNURk4sICdyYicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiJycnPHNpdGUgLz4nJycpCisKKyAgICBkZWYgdGVzdF93cml0ZV90b19iaW5hcnlfZmlsZShzZWxmKToKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKEVULlhNTCgnJyc8c2l0ZSAvPicnJykpCisgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3YicpIGFzIGY6CisgICAgICAgICAgICB0cmVlLndyaXRlKGYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuY2xvc2VkKQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAncmInKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYicnJzxzaXRlIC8+JycnKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfdG9fYmluYXJ5X2ZpbGVfd2l0aF9ib20oc2VsZik6CisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShFVC5YTUwoJycnPHNpdGUgLz4nJycpKQorICAgICAgICAjIHRlc3QgQk9NIHdyaXRpbmcgdG8gYnVmZmVyZWQgZmlsZQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgdHJlZS53cml0ZShmLCBlbmNvZGluZz0ndXRmLTE2JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jbG9zZWQpCisgICAgICAgIHdpdGggb3BlbihURVNURk4sICdyYicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLAorICAgICAgICAgICAgICAgICAgICAnJyc8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSd1dGYtMTYnPz5cbicnJworICAgICAgICAgICAgICAgICAgICAnJyc8c2l0ZSAvPicnJy5lbmNvZGUoInV0Zi0xNiIpKQorICAgICAgICAjIHRlc3QgQk9NIHdyaXRpbmcgdG8gbm9uLWJ1ZmZlcmVkIGZpbGUKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3diJywgYnVmZmVyaW5nPTApIGFzIGY6CisgICAgICAgICAgICB0cmVlLndyaXRlKGYsIGVuY29kaW5nPSd1dGYtMTYnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmNsb3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksCisgICAgICAgICAgICAgICAgICAgICcnJzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J3V0Zi0xNic/PlxuJycnCisgICAgICAgICAgICAgICAgICAgICcnJzxzaXRlIC8+JycnLmVuY29kZSgidXRmLTE2IikpCisKKyAgICBkZWYgdGVzdF9yZWFkX2Zyb21fc3RyaW5naW8oc2VsZik6CisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZSgpCisgICAgICAgIHN0cmVhbSA9IGlvLlN0cmluZ0lPKCcnJzw/eG1sIHZlcnNpb249IjEuMCI/PjxzaXRlPjwvc2l0ZT4nJycpCisgICAgICAgIHRyZWUucGFyc2Uoc3RyZWFtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyZWUuZ2V0cm9vdCgpLnRhZywgJ3NpdGUnKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfdG9fc3RyaW5naW8oc2VsZik6CisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShFVC5YTUwoJycnPHNpdGUgLz4nJycpKQorICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygpCisgICAgICAgIHRyZWUud3JpdGUoc3RyZWFtLCBlbmNvZGluZz0ndW5pY29kZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmdldHZhbHVlKCksICcnJzxzaXRlIC8+JycnKQorCisgICAgZGVmIHRlc3RfcmVhZF9mcm9tX2J5dGVzaW8oc2VsZik6CisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZSgpCisgICAgICAgIHJhdyA9IGlvLkJ5dGVzSU8oYicnJzw/eG1sIHZlcnNpb249IjEuMCI/PjxzaXRlPjwvc2l0ZT4nJycpCisgICAgICAgIHRyZWUucGFyc2UocmF3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyZWUuZ2V0cm9vdCgpLnRhZywgJ3NpdGUnKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfdG9fYnl0ZXNpbyhzZWxmKToKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKEVULlhNTCgnJyc8c2l0ZSAvPicnJykpCisgICAgICAgIHJhdyA9IGlvLkJ5dGVzSU8oKQorICAgICAgICB0cmVlLndyaXRlKHJhdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYXcuZ2V0dmFsdWUoKSwgYicnJzxzaXRlIC8+JycnKQorCisgICAgY2xhc3MgZHVtbXk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X3JlYWRfZnJvbV91c2VyX3RleHRfcmVhZGVyKHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygnJyc8P3htbCB2ZXJzaW9uPSIxLjAiPz48c2l0ZT48L3NpdGU+JycnKQorICAgICAgICByZWFkZXIgPSBzZWxmLmR1bW15KCkKKyAgICAgICAgcmVhZGVyLnJlYWQgPSBzdHJlYW0ucmVhZAorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoKQorICAgICAgICB0cmVlLnBhcnNlKHJlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmVlLmdldHJvb3QoKS50YWcsICdzaXRlJykKKworICAgIGRlZiB0ZXN0X3dyaXRlX3RvX3VzZXJfdGV4dF93cml0ZXIoc2VsZik6CisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShFVC5YTUwoJycnPHNpdGUgLz4nJycpKQorICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygpCisgICAgICAgIHdyaXRlciA9IHNlbGYuZHVtbXkoKQorICAgICAgICB3cml0ZXIud3JpdGUgPSBzdHJlYW0ud3JpdGUKKyAgICAgICAgdHJlZS53cml0ZSh3cml0ZXIsIGVuY29kaW5nPSd1bmljb2RlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uZ2V0dmFsdWUoKSwgJycnPHNpdGUgLz4nJycpCisKKyAgICBkZWYgdGVzdF9yZWFkX2Zyb21fdXNlcl9iaW5hcnlfcmVhZGVyKHNlbGYpOgorICAgICAgICByYXcgPSBpby5CeXRlc0lPKGInJyc8P3htbCB2ZXJzaW9uPSIxLjAiPz48c2l0ZT48L3NpdGU+JycnKQorICAgICAgICByZWFkZXIgPSBzZWxmLmR1bW15KCkKKyAgICAgICAgcmVhZGVyLnJlYWQgPSByYXcucmVhZAorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoKQorICAgICAgICB0cmVlLnBhcnNlKHJlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmVlLmdldHJvb3QoKS50YWcsICdzaXRlJykKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKCkKKworICAgIGRlZiB0ZXN0X3dyaXRlX3RvX3VzZXJfYmluYXJ5X3dyaXRlcihzZWxmKToKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKEVULlhNTCgnJyc8c2l0ZSAvPicnJykpCisgICAgICAgIHJhdyA9IGlvLkJ5dGVzSU8oKQorICAgICAgICB3cml0ZXIgPSBzZWxmLmR1bW15KCkKKyAgICAgICAgd3JpdGVyLndyaXRlID0gcmF3LndyaXRlCisgICAgICAgIHRyZWUud3JpdGUod3JpdGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhdy5nZXR2YWx1ZSgpLCBiJycnPHNpdGUgLz4nJycpCisKKyAgICBkZWYgdGVzdF93cml0ZV90b191c2VyX2JpbmFyeV93cml0ZXJfd2l0aF9ib20oc2VsZik6CisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShFVC5YTUwoJycnPHNpdGUgLz4nJycpKQorICAgICAgICByYXcgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgd3JpdGVyID0gc2VsZi5kdW1teSgpCisgICAgICAgIHdyaXRlci53cml0ZSA9IHJhdy53cml0ZQorICAgICAgICB3cml0ZXIuc2Vla2FibGUgPSBsYW1iZGE6IFRydWUKKyAgICAgICAgd3JpdGVyLnRlbGwgPSByYXcudGVsbAorICAgICAgICB0cmVlLndyaXRlKHdyaXRlciwgZW5jb2Rpbmc9InV0Zi0xNiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmF3LmdldHZhbHVlKCksCisgICAgICAgICAgICAgICAgJycnPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0ndXRmLTE2Jz8+XG4nJycKKyAgICAgICAgICAgICAgICAnJyc8c2l0ZSAvPicnJy5lbmNvZGUoInV0Zi0xNiIpKQorCisgICAgZGVmIHRlc3RfdG9zdHJpbmdsaXN0X2ludmFyaWFudChzZWxmKToKKyAgICAgICAgcm9vdCA9IEVULmZyb21zdHJpbmcoJzx0YWc+Zm9vPC90YWc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIEVULnRvc3RyaW5nKHJvb3QsICd1bmljb2RlJyksCisgICAgICAgICAgICAnJy5qb2luKEVULnRvc3RyaW5nbGlzdChyb290LCAndW5pY29kZScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIEVULnRvc3RyaW5nKHJvb3QsICd1dGYtMTYnKSwKKyAgICAgICAgICAgIGInJy5qb2luKEVULnRvc3RyaW5nbGlzdChyb290LCAndXRmLTE2JykpKQorCisKK2NsYXNzIFBhcnNlRXJyb3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEVULlBhcnNlRXJyb3IoKSwgU3ludGF4RXJyb3IpCisKKyAgICBkZWYgX2dldF9lcnJvcihzZWxmLCBzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgRVQuZnJvbXN0cmluZyhzKQorICAgICAgICBleGNlcHQgRVQuUGFyc2VFcnJvciBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGUKKworICAgIGRlZiB0ZXN0X2Vycm9yX3Bvc2l0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2dldF9lcnJvcignZm9vJykucG9zaXRpb24sICgxLCAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9nZXRfZXJyb3IoJzx0YWc+JmZvbzs8L3RhZz4nKS5wb3NpdGlvbiwgKDEsIDUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2dldF9lcnJvcignZm9vYmFyPCcpLnBvc2l0aW9uLCAoMSwgNikpCisKKyAgICBkZWYgdGVzdF9lcnJvcl9jb2RlKHNlbGYpOgorICAgICAgICBpbXBvcnQgeG1sLnBhcnNlcnMuZXhwYXQuZXJyb3JzIGFzIEVSUk9SUworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2dldF9lcnJvcignZm9vJykuY29kZSwKKyAgICAgICAgICAgICAgICBFUlJPUlMuY29kZXNbRVJST1JTLlhNTF9FUlJPUl9TWU5UQVhdKQorCisKK2NsYXNzIEtleXdvcmRBcmdzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBUZXN0IHZhcmlvdXMgaXNzdWVzIHdpdGgga2V5d29yZCBhcmd1bWVudHMgcGFzc2VkIHRvIEVULkVsZW1lbnQKKyAgICAjIGNvbnN0cnVjdG9yIGFuZCBtZXRob2RzCisgICAgZGVmIHRlc3RfaXNzdWUxNDgxOChzZWxmKToKKyAgICAgICAgeCA9IEVULlhNTCgiPGE+Zm9vPC9hPiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5maW5kKCdhJywgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeC5maW5kKHBhdGg9J2EnLCBuYW1lc3BhY2VzPU5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZmluZHRleHQoJ2EnLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB4LmZpbmR0ZXh0KHBhdGg9J2EnLCBkZWZhdWx0PU5vbmUsIG5hbWVzcGFjZXM9Tm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5maW5kYWxsKCdhJywgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeC5maW5kYWxsKHBhdGg9J2EnLCBuYW1lc3BhY2VzPU5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoeC5pdGVyZmluZCgnYScsIE5vbmUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHguaXRlcmZpbmQocGF0aD0nYScsIG5hbWVzcGFjZXM9Tm9uZSkpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQuRWxlbWVudCgnYScpLmF0dHJpYiwge30pCisgICAgICAgIGVsZW1lbnRzID0gWworICAgICAgICAgICAgRVQuRWxlbWVudCgnYScsIGRpY3QoaHJlZj0iIyIsIGlkPSJmb28iKSksCisgICAgICAgICAgICBFVC5FbGVtZW50KCdhJywgYXR0cmliPWRpY3QoaHJlZj0iIyIsIGlkPSJmb28iKSksCisgICAgICAgICAgICBFVC5FbGVtZW50KCdhJywgZGljdChocmVmPSIjIiksIGlkPSJmb28iKSwKKyAgICAgICAgICAgIEVULkVsZW1lbnQoJ2EnLCBocmVmPSIjIiwgaWQ9ImZvbyIpLAorICAgICAgICAgICAgRVQuRWxlbWVudCgnYScsIGRpY3QoaHJlZj0iIyIsIGlkPSJmb28iKSwgaHJlZj0iIyIsIGlkPSJmb28iKSwKKyAgICAgICAgXQorICAgICAgICBmb3IgZSBpbiBlbGVtZW50czoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS50YWcsICdhJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hdHRyaWIsIGRpY3QoaHJlZj0iIyIsIGlkPSJmb28iKSkKKworICAgICAgICBlMiA9IEVULlN1YkVsZW1lbnQoZWxlbWVudHNbMF0sICdmb29iYXInLCBhdHRyaWI9eydrZXkxJzogJ3ZhbHVlMSd9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUyLmF0dHJpYlsna2V5MSddLCAndmFsdWUxJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnbXVzdCBiZSBkaWN0LCBub3Qgc3RyJyk6CisgICAgICAgICAgICBFVC5FbGVtZW50KCdhJywgIkknbSBub3QgYSBkaWN0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ211c3QgYmUgZGljdCwgbm90IHN0cicpOgorICAgICAgICAgICAgRVQuRWxlbWVudCgnYScsIGF0dHJpYj0iSSdtIG5vdCBhIGRpY3QiKQogCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIHJlcG9ydGVkIG9uIGJ1Z3MucHl0aG9uLm9yZwogCi1kZWYgYnVnXzE1MzQ2MzAoKToKLSAgICAiIiIKK2NsYXNzIE5vQWNjZWxlcmF0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGlmIG5vdCBweUVUOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ29ubHkgZm9yIHRoZSBQeXRob24gdmVyc2lvbicpCiAKLSAgICA+Pj4gYm9iID0gRVQuVHJlZUJ1aWxkZXIoKQotICAgID4+PiBlID0gYm9iLmRhdGEoImRhdGEiKQotICAgID4+PiBlID0gYm9iLnN0YXJ0KCJ0YWciLCB7fSkKLSAgICA+Pj4gZSA9IGJvYi5lbmQoInRhZyIpCi0gICAgPj4+IGUgPSBib2IuY2xvc2UoKQotICAgID4+PiBzZXJpYWxpemUoZSkKLSAgICAnPHRhZyAvPicKLQotICAgICIiIgotCi1kZWYgY2hlY2tfaXNzdWU2MjMzKCk6Ci0gICAgIiIiCi0KLSAgICA+Pj4gZSA9IEVULlhNTChiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J3V0Zi04Jz8+PGJvZHk+dFxceGMzXFx4YTNnPC9ib2R5PiIpCi0gICAgPj4+IEVULnRvc3RyaW5nKGUsICdhc2NpaScpCi0gICAgYiI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdhc2NpaSc/Plxcbjxib2R5PnQmIzIyNztnPC9ib2R5PiIKLSAgICA+Pj4gZSA9IEVULlhNTChiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2lzby04ODU5LTEnPz48Ym9keT50XFx4ZTNnPC9ib2R5PiIpCi0gICAgPj4+IEVULnRvc3RyaW5nKGUsICdhc2NpaScpCi0gICAgYiI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdhc2NpaSc/Plxcbjxib2R5PnQmIzIyNztnPC9ib2R5PiIKLQotICAgICIiIgotCi1kZWYgY2hlY2tfaXNzdWUzMTUxKCk6Ci0gICAgIiIiCi0KLSAgICA+Pj4gZSA9IEVULlhNTCgnPHByZWZpeDpsb2NhbG5hbWUgeG1sbnM6cHJlZml4PSIke3N0dWZmfSIvPicpCi0gICAgPj4+IGUudGFnCi0gICAgJ3ske3N0dWZmfX1sb2NhbG5hbWUnCi0gICAgPj4+IHQgPSBFVC5FbGVtZW50VHJlZShlKQotICAgID4+PiBFVC50b3N0cmluZyhlKQotICAgIGInPG5zMDpsb2NhbG5hbWUgeG1sbnM6bnMwPSIke3N0dWZmfSIgLz4nCi0KLSAgICAiIiIKLQotZGVmIGNoZWNrX2lzc3VlNjU2NSgpOgotICAgICIiIgotCi0gICAgPj4+IGVsZW0gPSBFVC5YTUwoIjxib2R5Pjx0YWcvPjwvYm9keT4iKQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtKQotICAgIFsndGFnJ10KLSAgICA+Pj4gbmV3ZWxlbSA9IEVULlhNTChTQU1QTEVfWE1MKQotICAgID4+PiBlbGVtWzpdID0gbmV3ZWxlbVs6XQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtKQotICAgIFsndGFnJywgJ3RhZycsICdzZWN0aW9uJ10KLQotICAgICIiIgotCi1kZWYgY2hlY2tfaXNzdWUxMDc3NygpOgotICAgICIiIgotICAgIFJlZ2lzdGVyaW5nIGEgbmFtZXNwYWNlIHR3aWNlIGNhdXNlZCBhICJkaWN0aW9uYXJ5IGNoYW5nZWQgc2l6ZSBkdXJpbmcKLSAgICBpdGVyYXRpb24iIGJ1Zy4KLQotICAgID4+PiBFVC5yZWdpc3Rlcl9uYW1lc3BhY2UoJ3Rlc3QxMDc3NycsICdodHRwOi8vbXl1cmkvJykKLSAgICA+Pj4gRVQucmVnaXN0ZXJfbmFtZXNwYWNlKCd0ZXN0MTA3NzcnLCAnaHR0cDovL215dXJpLycpCi0gICAgIiIiCi0KLWRlZiBjaGVja19odG1sX2VtcHR5X2VsZW1zX3NlcmlhbGl6YXRpb24oc2VsZik6Ci0gICAgIyBpc3N1ZSAxNTk3MAotICAgICMgZnJvbSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNDAxL2luZGV4L2VsZW1lbnRzLmh0bWwKLSAgICAiIiIKLQotICAgID4+PiBlbXB0eV9lbGVtcyA9IFsnQVJFQScsICdCQVNFJywgJ0JBU0VGT05UJywgJ0JSJywgJ0NPTCcsICdGUkFNRScsICdIUicsCi0gICAgLi4uICAgICAgICAgICAgICAgICdJTUcnLCAnSU5QVVQnLCAnSVNJTkRFWCcsICdMSU5LJywgJ01FVEEnLCAnUEFSQU0nXQotICAgID4+PiBlbGVtcyA9ICcnLmpvaW4oJzwlcyAvPicgJSBlbGVtIGZvciBlbGVtIGluIGVtcHR5X2VsZW1zKQotICAgID4+PiBzZXJpYWxpemUoRVQuWE1MKCc8aHRtbD4lczwvaHRtbD4nICUgZWxlbXMpLCBtZXRob2Q9J2h0bWwnKQotICAgICc8aHRtbD48QVJFQT48QkFTRT48QkFTRUZPTlQ+PEJSPjxDT0w+PEZSQU1FPjxIUj48SU1HPjxJTlBVVD48SVNJTkRFWD48TElOSz48TUVUQT48UEFSQU0+PC9odG1sPicKLSAgICA+Pj4gc2VyaWFsaXplKEVULlhNTCgnPGh0bWw+JXM8L2h0bWw+JyAlIGVsZW1zLmxvd2VyKCkpLCBtZXRob2Q9J2h0bWwnKQotICAgICc8aHRtbD48YXJlYT48YmFzZT48YmFzZWZvbnQ+PGJyPjxjb2w+PGZyYW1lPjxocj48aW1nPjxpbnB1dD48aXNpbmRleD48bGluaz48bWV0YT48cGFyYW0+PC9odG1sPicKLSAgICA+Pj4gZWxlbXMgPSAnJy5qb2luKCc8JXM+PC8lcz4nICUgKGVsZW0sIGVsZW0pIGZvciBlbGVtIGluIGVtcHR5X2VsZW1zKQotICAgID4+PiBzZXJpYWxpemUoRVQuWE1MKCc8aHRtbD4lczwvaHRtbD4nICUgZWxlbXMpLCBtZXRob2Q9J2h0bWwnKQotICAgICc8aHRtbD48QVJFQT48QkFTRT48QkFTRUZPTlQ+PEJSPjxDT0w+PEZSQU1FPjxIUj48SU1HPjxJTlBVVD48SVNJTkRFWD48TElOSz48TUVUQT48UEFSQU0+PC9odG1sPicKLSAgICA+Pj4gc2VyaWFsaXplKEVULlhNTCgnPGh0bWw+JXM8L2h0bWw+JyAlIGVsZW1zLmxvd2VyKCkpLCBtZXRob2Q9J2h0bWwnKQotICAgICc8aHRtbD48YXJlYT48YmFzZT48YmFzZWZvbnQ+PGJyPjxjb2w+PGZyYW1lPjxocj48aW1nPjxpbnB1dD48aXNpbmRleD48bGluaz48bWV0YT48cGFyYW0+PC9odG1sPicKLQotICAgICIiIgorICAgICMgVGVzdCB0aGF0IHRoZSBDIGFjY2VsZXJhdG9yIHdhcyBub3QgaW1wb3J0ZWQgZm9yIHB5RVQKKyAgICBkZWYgdGVzdF9jb3JyZWN0X2ltcG9ydF9weUVUKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB5RVQuRWxlbWVudC5fX21vZHVsZV9fLCAneG1sLmV0cmVlLkVsZW1lbnRUcmVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweUVULlN1YkVsZW1lbnQuX19tb2R1bGVfXywgJ3htbC5ldHJlZS5FbGVtZW50VHJlZScpCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMTg5NCw0NCArMjI0NSw3MSBAQAogICAgICAgICAgICAgKCJUaGlzIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zLiAgIgogICAgICAgICAgICAgICJVc2UgLisgaW5zdGVhZC4iLCBEZXByZWNhdGlvbldhcm5pbmcpLAogICAgICAgICAgICAgKCJUaGlzIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zLiAgIgotICAgICAgICAgICAgICJVc2UgLisgaW5zdGVhZC4iLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSwKLSAgICAgICAgICAgICMgWE1MUGFyc2VyLmRvY3R5cGUoKSBpcyBkZXByZWNhdGVkLgotICAgICAgICAgICAgKCJUaGlzIG1ldGhvZCBvZiBYTUxQYXJzZXIgaXMgZGVwcmVjYXRlZC4gIERlZmluZSBkb2N0eXBlLi4gIgotICAgICAgICAgICAgICJtZXRob2Qgb24gdGhlIFRyZWVCdWlsZGVyIHRhcmdldC4iLCBEZXByZWNhdGlvbldhcm5pbmcpKQorICAgICAgICAgICAgICJVc2UgLisgaW5zdGVhZC4iLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSkKICAgICAgICAgc2VsZi5jaGVja3dhcm5pbmdzID0gc3VwcG9ydC5jaGVja193YXJuaW5ncygqZGVwcmVjYXRpb25zLCBxdWlldD1xdWlldCkKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50VHJlZQotICAgICAgICBzZWxmLl9uc21hcCA9IEVsZW1lbnRUcmVlLl9uYW1lc3BhY2VfbWFwCi0gICAgICAgIHNlbGYuX3BhdGhfY2FjaGUgPSBFbGVtZW50VHJlZS5FbGVtZW50UGF0aC5fY2FjaGUKKyAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRQYXRoCisgICAgICAgIHNlbGYuX25zbWFwID0gRVQucmVnaXN0ZXJfbmFtZXNwYWNlLl9uYW1lc3BhY2VfbWFwCiAgICAgICAgICMgQ29weSB0aGUgZGVmYXVsdCBuYW1lc3BhY2UgbWFwcGluZwotICAgICAgICBFbGVtZW50VHJlZS5fbmFtZXNwYWNlX21hcCA9IHNlbGYuX25zbWFwLmNvcHkoKQorICAgICAgICBzZWxmLl9uc21hcF9jb3B5ID0gc2VsZi5fbnNtYXAuY29weSgpCiAgICAgICAgICMgQ29weSB0aGUgcGF0aCBjYWNoZSAoc2hvdWxkIGJlIGVtcHR5KQotICAgICAgICBFbGVtZW50VHJlZS5FbGVtZW50UGF0aC5fY2FjaGUgPSBzZWxmLl9wYXRoX2NhY2hlLmNvcHkoKQorICAgICAgICBzZWxmLl9wYXRoX2NhY2hlID0gRWxlbWVudFBhdGguX2NhY2hlCisgICAgICAgIEVsZW1lbnRQYXRoLl9jYWNoZSA9IHNlbGYuX3BhdGhfY2FjaGUuY29weSgpCiAgICAgICAgIHNlbGYuY2hlY2t3YXJuaW5ncy5fX2VudGVyX18oKQogCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKLSAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRUcmVlCisgICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50UGF0aAogICAgICAgICAjIFJlc3RvcmUgbWFwcGluZyBhbmQgcGF0aCBjYWNoZQotICAgICAgICBFbGVtZW50VHJlZS5fbmFtZXNwYWNlX21hcCA9IHNlbGYuX25zbWFwCi0gICAgICAgIEVsZW1lbnRUcmVlLkVsZW1lbnRQYXRoLl9jYWNoZSA9IHNlbGYuX3BhdGhfY2FjaGUKKyAgICAgICAgc2VsZi5fbnNtYXAuY2xlYXIoKQorICAgICAgICBzZWxmLl9uc21hcC51cGRhdGUoc2VsZi5fbnNtYXBfY29weSkKKyAgICAgICAgRWxlbWVudFBhdGguX2NhY2hlID0gc2VsZi5fcGF0aF9jYWNoZQogICAgICAgICBzZWxmLmNoZWNrd2FybmluZ3MuX19leGl0X18oKmFyZ3MpCiAKIAotZGVmIHRlc3RfbWFpbihtb2R1bGVfbmFtZT0neG1sLmV0cmVlLkVsZW1lbnRUcmVlJyk6Ci0gICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3htbF9ldHJlZQorZGVmIHRlc3RfbWFpbihtb2R1bGU9Tm9uZSk6CisgICAgIyBXaGVuIGludm9rZWQgd2l0aG91dCBhIG1vZHVsZSwgcnVucyB0aGUgUHl0aG9uIEVUIHRlc3RzIGJ5IGxvYWRpbmcgcHlFVC4KKyAgICAjIE90aGVyd2lzZSwgdXNlcyB0aGUgZ2l2ZW4gbW9kdWxlIGFzIHRoZSBFVC4KKyAgICBnbG9iYWwgcHlFVAorICAgIHB5RVQgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCd4bWwuZXRyZWUuRWxlbWVudFRyZWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrZWQ9WydfZWxlbWVudHRyZWUnXSkKKyAgICBpZiBtb2R1bGUgaXMgTm9uZToKKyAgICAgICAgbW9kdWxlID0gcHlFVAogCi0gICAgdXNlX3B5X21vZHVsZSA9IChtb2R1bGVfbmFtZSA9PSAneG1sLmV0cmVlLkVsZW1lbnRUcmVlJykKKyAgICBnbG9iYWwgRVQKKyAgICBFVCA9IG1vZHVsZQogCi0gICAgIyBUaGUgc2FtZSBkb2N0ZXN0cyBhcmUgdXNlZCBmb3IgYm90aCB0aGUgUHl0aG9uIGFuZCB0aGUgQyBpbXBsZW1lbnRhdGlvbnMKLSAgICBhc3NlcnQgdGVzdF94bWxfZXRyZWUuRVQuX19uYW1lX18gPT0gbW9kdWxlX25hbWUKKyAgICB0ZXN0X2NsYXNzZXMgPSBbCisgICAgICAgIE1vZHVsZVRlc3QsCisgICAgICAgIEVsZW1lbnRTbGljaW5nVGVzdCwKKyAgICAgICAgQmFzaWNFbGVtZW50VGVzdCwKKyAgICAgICAgRWxlbWVudFRyZWVUZXN0LAorICAgICAgICBJT1Rlc3QsCisgICAgICAgIFBhcnNlRXJyb3JUZXN0LAorICAgICAgICBYSW5jbHVkZVRlc3QsCisgICAgICAgIEVsZW1lbnRUcmVlVHlwZVRlc3QsCisgICAgICAgIEVsZW1lbnRGaW5kVGVzdCwKKyAgICAgICAgRWxlbWVudEl0ZXJUZXN0LAorICAgICAgICBUcmVlQnVpbGRlclRlc3QsCisgICAgICAgIEJ1Z3NUZXN0LAorICAgICAgICBdCiAKLSAgICAjIFhYWCB0aGUgQyBtb2R1bGUgc2hvdWxkIGdpdmUgdGhlIHNhbWUgd2FybmluZ3MgYXMgdGhlIFB5dGhvbiBtb2R1bGUKLSAgICB3aXRoIENsZWFuQ29udGV4dChxdWlldD1ub3QgdXNlX3B5X21vZHVsZSk6Ci0gICAgICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QodGVzdF94bWxfZXRyZWUsIHZlcmJvc2l0eT1UcnVlKQorICAgICMgVGhlc2UgdGVzdHMgd2lsbCBvbmx5IHJ1biBmb3IgdGhlIHB1cmUtUHl0aG9uIHZlcnNpb24gdGhhdCBkb2Vzbid0IGltcG9ydAorICAgICMgX2VsZW1lbnR0cmVlLiBXZSBjYW4ndCB1c2Ugc2tpcFVubGVzcyBoZXJlLCBiZWNhdXNlIHB5RVQgaXMgZmlsbGVkIGluIG9ubHkKKyAgICAjIGFmdGVyIHRoZSBtb2R1bGUgaXMgbG9hZGVkLgorICAgIGlmIHB5RVQgaXMgbm90IEVUOgorICAgICAgICB0ZXN0X2NsYXNzZXMuZXh0ZW5kKFsKKyAgICAgICAgICAgIE5vQWNjZWxlcmF0b3JUZXN0LAorICAgICAgICAgICAgXSkKIAotICAgICMgVGhlIG1vZHVsZSBzaG91bGQgbm90IGJlIGNoYW5nZWQgYnkgdGhlIHRlc3RzCi0gICAgYXNzZXJ0IHRlc3RfeG1sX2V0cmVlLkVULl9fbmFtZV9fID09IG1vZHVsZV9uYW1lCisgICAgdHJ5OgorICAgICAgICAjIFhYWCB0aGUgQyBtb2R1bGUgc2hvdWxkIGdpdmUgdGhlIHNhbWUgd2FybmluZ3MgYXMgdGhlIFB5dGhvbiBtb2R1bGUKKyAgICAgICAgd2l0aCBDbGVhbkNvbnRleHQocXVpZXQ9KHB5RVQgaXMgbm90IEVUKSk6CisgICAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQorICAgIGZpbmFsbHk6CisgICAgICAgICMgZG9uJ3QgaW50ZXJmZXJlIHdpdGggc3Vic2VxdWVudCB0ZXN0cworICAgICAgICBFVCA9IHB5RVQgPSBOb25lCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weSBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkKaW5kZXggMmZmMTE4Zi4uYmNhYTcyNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5CkBAIC0xLDM2ICsxLDEzIEBACiAjIHhtbC5ldHJlZSB0ZXN0IGZvciBjRWxlbWVudFRyZWUKLQoraW1wb3J0IHN5cywgc3RydWN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBiaWdtZW10ZXN0LCBfMkcKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBpbXBvcnRfZnJlc2hfbW9kdWxlCiBpbXBvcnQgdW5pdHRlc3QKIAotY0VUID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd4bWwuZXRyZWUuY0VsZW1lbnRUcmVlJykKLQotCi0jIGNFbGVtZW50VHJlZSBzcGVjaWZpYyB0ZXN0cwotCi1kZWYgc2FuaXR5KCk6Ci0gICAgciIiIgotICAgIEltcG9ydCBzYW5pdHkuCi0KLSAgICA+Pj4gZnJvbSB4bWwuZXRyZWUgaW1wb3J0IGNFbGVtZW50VHJlZQotCi0gICAgSXNzdWUgIzY2OTcuCi0KLSAgICA+Pj4gZSA9IGNFbGVtZW50VHJlZS5FbGVtZW50KCdhJykKLSAgICA+Pj4gZ2V0YXR0cihlLCAnXHVEODAwJykgICAgICAgICAgICMgZG9jdGVzdDogK0VMTElQU0lTCi0gICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAgLi4uCi0gICAgVW5pY29kZUVuY29kZUVycm9yOiAuLi4KLQotICAgID4+PiBwID0gY0VsZW1lbnRUcmVlLlhNTFBhcnNlcigpCi0gICAgPj4+IHAudmVyc2lvbi5zcGxpdCgpWzBdCi0gICAgJ0V4cGF0JwotICAgID4+PiBnZXRhdHRyKHAsICdcdUQ4MDAnKQotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgLi4uCi0gICAgQXR0cmlidXRlRXJyb3I6ICdYTUxQYXJzZXInIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdcdWQ4MDAnCi0gICAgIiIiCitjRVQgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCd4bWwuZXRyZWUuRWxlbWVudFRyZWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVzaD1bJ19lbGVtZW50dHJlZSddKQorY0VUX2FsaWFzID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgneG1sLmV0cmVlLmNFbGVtZW50VHJlZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZXNoPVsnX2VsZW1lbnR0cmVlJywgJ3htbC5ldHJlZSddKQogCiAKIGNsYXNzIE1pc2NUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC00NywyNyArMjQsNjQgQEAKICAgICAgICAgICAgIGRhdGEgPSBOb25lCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoY0VULCAncmVxdWlyZXMgX2VsZW1lbnR0cmVlJykKK2NsYXNzIFRlc3RBbGlhc1dvcmtpbmcodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgVGVzdCB0aGF0IHRoZSBjRVQgYWxpYXMgbW9kdWxlIGlzIGFsaXZlCisgICAgZGVmIHRlc3RfYWxpYXNfd29ya2luZyhzZWxmKToKKyAgICAgICAgZSA9IGNFVF9hbGlhcy5FbGVtZW50KCdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudGFnLCAnZm9vJykKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjRVQsICdyZXF1aXJlcyBfZWxlbWVudHRyZWUnKQorY2xhc3MgVGVzdEFjY2VsZXJhdG9ySW1wb3J0ZWQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgVGVzdCB0aGF0IHRoZSBDIGFjY2VsZXJhdG9yIHdhcyBpbXBvcnRlZCwgYXMgZXhwZWN0ZWQKKyAgICBkZWYgdGVzdF9jb3JyZWN0X2ltcG9ydF9jRVQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY0VULlN1YkVsZW1lbnQuX19tb2R1bGVfXywgJ19lbGVtZW50dHJlZScpCisKKyAgICBkZWYgdGVzdF9jb3JyZWN0X2ltcG9ydF9jRVRfYWxpYXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY0VUX2FsaWFzLlN1YkVsZW1lbnQuX19tb2R1bGVfXywgJ19lbGVtZW50dHJlZScpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoY0VULCAncmVxdWlyZXMgX2VsZW1lbnR0cmVlJykKK0BzdXBwb3J0LmNweXRob25fb25seQorY2xhc3MgU2l6ZW9mVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmVsZW1lbnRzaXplID0gc3VwcG9ydC5jYWxjb2Jqc2l6ZSgnNVAnKQorICAgICAgICAjIGV4dHJhCisgICAgICAgIHNlbGYuZXh0cmEgPSBzdHJ1Y3QuY2FsY3NpemUoJ1BpaVA0UCcpCisKKyAgICBjaGVja19zaXplb2YgPSBzdXBwb3J0LmNoZWNrX3NpemVvZgorCisgICAgZGVmIHRlc3RfZWxlbWVudChzZWxmKToKKyAgICAgICAgZSA9IGNFVC5FbGVtZW50KCdhJykKKyAgICAgICAgc2VsZi5jaGVja19zaXplb2YoZSwgc2VsZi5lbGVtZW50c2l6ZSkKKworICAgIGRlZiB0ZXN0X2VsZW1lbnRfd2l0aF9hdHRyaWIoc2VsZik6CisgICAgICAgIGUgPSBjRVQuRWxlbWVudCgnYScsIGhyZWY9J2Fib3V0OicpCisgICAgICAgIHNlbGYuY2hlY2tfc2l6ZW9mKGUsIHNlbGYuZWxlbWVudHNpemUgKyBzZWxmLmV4dHJhKQorCisgICAgZGVmIHRlc3RfZWxlbWVudF93aXRoX2NoaWxkcmVuKHNlbGYpOgorICAgICAgICBlID0gY0VULkVsZW1lbnQoJ2EnKQorICAgICAgICBmb3IgaSBpbiByYW5nZSg1KToKKyAgICAgICAgICAgIGNFVC5TdWJFbGVtZW50KGUsICdzcGFuJykKKyAgICAgICAgIyBzaG91bGQgaGF2ZSBzcGFjZSBmb3IgOCBjaGlsZHJlbiBub3cKKyAgICAgICAgc2VsZi5jaGVja19zaXplb2YoZSwgc2VsZi5lbGVtZW50c2l6ZSArIHNlbGYuZXh0cmEgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QuY2FsY3NpemUoJzhQJykpCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfeG1sX2V0cmVlLCB0ZXN0X3htbF9ldHJlZV9jCiAKICAgICAjIFJ1biB0aGUgdGVzdHMgc3BlY2lmaWMgdG8gdGhlIEMgaW1wbGVtZW50YXRpb24KLSAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHRlc3RfeG1sX2V0cmVlX2MsIHZlcmJvc2l0eT1UcnVlKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAorICAgICAgICBNaXNjVGVzdHMsCisgICAgICAgIFRlc3RBbGlhc1dvcmtpbmcsCisgICAgICAgIFRlc3RBY2NlbGVyYXRvckltcG9ydGVkLAorICAgICAgICBTaXplb2ZUZXN0LAorICAgICAgICApCiAKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChNaXNjVGVzdHMpCisgICAgIyBSdW4gdGhlIHNhbWUgdGVzdCBzdWl0ZSBhcyB0aGUgUHl0aG9uIG1vZHVsZQorICAgIHRlc3RfeG1sX2V0cmVlLnRlc3RfbWFpbihtb2R1bGU9Y0VUKQogCi0gICAgIyBBc3NpZ24gdGhlIEMgaW1wbGVtZW50YXRpb24gYmVmb3JlIHJ1bm5pbmcgdGhlIGRvY3Rlc3RzCi0gICAgIyBQYXRjaCB0aGUgX19uYW1lX18sIHRvIHByZXZlbnQgY29uZnVzaW9uIHdpdGggdGhlIHB1cmUgUHl0aG9uIHRlc3QKLSAgICBweUVUID0gdGVzdF94bWxfZXRyZWUuRVQKLSAgICBweV9fbmFtZV9fID0gdGVzdF94bWxfZXRyZWUuX19uYW1lX18KLSAgICB0ZXN0X3htbF9ldHJlZS5FVCA9IGNFVAotICAgIGlmIF9fbmFtZV9fICE9ICdfX21haW5fXyc6Ci0gICAgICAgIHRlc3RfeG1sX2V0cmVlLl9fbmFtZV9fID0gX19uYW1lX18KLSAgICB0cnk6Ci0gICAgICAgICMgUnVuIHRoZSBzYW1lIHRlc3Qgc3VpdGUgYXMgeG1sLmV0cmVlLkVsZW1lbnRUcmVlCi0gICAgICAgIHRlc3RfeG1sX2V0cmVlLnRlc3RfbWFpbihtb2R1bGVfbmFtZT0neG1sLmV0cmVlLmNFbGVtZW50VHJlZScpCi0gICAgZmluYWxseToKLSAgICAgICAgdGVzdF94bWxfZXRyZWUuRVQgPSBweUVUCi0gICAgICAgIHRlc3RfeG1sX2V0cmVlLl9fbmFtZV9fID0gcHlfX25hbWVfXwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3htbHJwYy5weSBiL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5CmluZGV4IDM4MTQxOTEuLjE2Zjg1YzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5CkBAIC0yNCw2ICsyNCw4IEBACiAgICAgICAgICAgJ2FzaG9ydGxvbmcnOiAyLAogICAgICAgICAgICdhbm90aGVybGlzdCc6IFsnLnp5eC40MSddLAogICAgICAgICAgICdhYmFzZTY0JzogeG1scnBjbGliLkJpbmFyeShiIm15IGRvZyBoYXMgZmxlYXMiKSwKKyAgICAgICAgICAnYjY0Ynl0ZXMnOiBiIm15IGRvZyBoYXMgZmxlYXMiLAorICAgICAgICAgICdiNjRieXRlYXJyYXknOiBieXRlYXJyYXkoYiJteSBkb2cgaGFzIGZsZWFzIiksCiAgICAgICAgICAgJ2Jvb2xlYW4nOiBGYWxzZSwKICAgICAgICAgICAndW5pY29kZSc6ICdcdTQwMDBcdTYwMDBcdTgwMDAnLAogICAgICAgICAgICd1a2V5XHU0MDAwJzogJ3JlZ3VsYXIgdmFsdWUnLApAQCAtNDQsMjcgKzQ2LDU0IEBACiAgICAgZGVmIHRlc3RfZHVtcF9iYXJlX2RhdGV0aW1lKHNlbGYpOgogICAgICAgICAjIFRoaXMgY2hlY2tzIHRoYXQgYW4gdW53cmFwcGVkIGRhdGV0aW1lLmRhdGUgb2JqZWN0IGNhbiBiZSBoYW5kbGVkCiAgICAgICAgICMgYnkgdGhlIG1hcnNoYWxsaW5nIGNvZGUuICBUaGlzIGNhbid0IGJlIGRvbmUgdmlhIHRlc3RfZHVtcF9sb2FkKCkKLSAgICAgICAgIyBzaW5jZSB3aXRoIHVzZV9kYXRldGltZSBzZXQgdG8gMSB0aGUgdW5tYXJzaGFsbGVyIHdvdWxkIGNyZWF0ZQorICAgICAgICAjIHNpbmNlIHdpdGggdXNlX2J1aWx0aW5fdHlwZXMgc2V0IHRvIDEgdGhlIHVubWFyc2hhbGxlciB3b3VsZCBjcmVhdGUKICAgICAgICAgIyBkYXRldGltZSBvYmplY3RzIGZvciB0aGUgJ2RhdGV0aW1lWzEyM10nIGtleXMgYXMgd2VsbAogICAgICAgICBkdCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMDUsIDIsIDEwLCAxMSwgNDEsIDIzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LCB4bWxycGNsaWIuRGF0ZVRpbWUoJzIwMDUwMjEwVDExOjQxOjIzJykpCiAgICAgICAgIHMgPSB4bWxycGNsaWIuZHVtcHMoKGR0LCkpCi0gICAgICAgIChuZXdkdCwpLCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9kYXRldGltZT0xKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCBkdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBOb25lKQogCi0gICAgICAgIChuZXdkdCwpLCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9kYXRldGltZT0wKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCB4bWxycGNsaWIuRGF0ZVRpbWUoJzIwMDUwMjEwVDExOjQxOjIzJykpCisgICAgICAgIHJlc3VsdCwgbSA9IHhtbHJwY2xpYi5sb2FkcyhzLCB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQorICAgICAgICAobmV3ZHQsKSA9IHJlc3VsdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCBkdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5ld2R0KSwgZGF0ZXRpbWUuZGF0ZXRpbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG0pCisKKyAgICAgICAgcmVzdWx0LCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKQorICAgICAgICAobmV3ZHQsKSA9IHJlc3VsdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCBkdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5ld2R0KSwgeG1scnBjbGliLkRhdGVUaW1lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtKQorCisgICAgICAgIHJlc3VsdCwgbSA9IHhtbHJwY2xpYi5sb2FkcyhzLCB1c2VfZGF0ZXRpbWU9VHJ1ZSkKKyAgICAgICAgKG5ld2R0LCkgPSByZXN1bHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdkdCwgZHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuZXdkdCksIGRhdGV0aW1lLmRhdGV0aW1lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtKQorCisgICAgICAgIHJlc3VsdCwgbSA9IHhtbHJwY2xpYi5sb2FkcyhzLCB1c2VfZGF0ZXRpbWU9RmFsc2UpCisgICAgICAgIChuZXdkdCwpID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIGR0KQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmV3ZHQpLCB4bWxycGNsaWIuRGF0ZVRpbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG0pCisKIAogICAgIGRlZiB0ZXN0X2RhdGV0aW1lX2JlZm9yZV8xOTAwKHNlbGYpOgogICAgICAgICAjIHNhbWUgYXMgYmVmb3JlIGJ1dCB3aXRoIGEgZGF0ZSBiZWZvcmUgMTkwMAogICAgICAgICBkdCA9IGRhdGV0aW1lLmRhdGV0aW1lKDEsICAyLCAxMCwgMTEsIDQxLCAyMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdCwgeG1scnBjbGliLkRhdGVUaW1lKCcwMDAxMDIxMFQxMTo0MToyMycpKQogICAgICAgICBzID0geG1scnBjbGliLmR1bXBzKChkdCwpKQotICAgICAgICAobmV3ZHQsKSwgbSA9IHhtbHJwY2xpYi5sb2FkcyhzLCB1c2VfZGF0ZXRpbWU9MSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdkdCwgZHQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgTm9uZSkKIAotICAgICAgICAobmV3ZHQsKSwgbSA9IHhtbHJwY2xpYi5sb2FkcyhzLCB1c2VfZGF0ZXRpbWU9MCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdkdCwgeG1scnBjbGliLkRhdGVUaW1lKCcwMDAxMDIxMFQxMTo0MToyMycpKQorICAgICAgICByZXN1bHQsIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKKyAgICAgICAgKG5ld2R0LCkgPSByZXN1bHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdkdCwgZHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuZXdkdCksIGRhdGV0aW1lLmRhdGV0aW1lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtKQorCisgICAgICAgIHJlc3VsdCwgbSA9IHhtbHJwY2xpYi5sb2FkcyhzLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSkKKyAgICAgICAgKG5ld2R0LCkgPSByZXN1bHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdkdCwgZHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuZXdkdCksIHhtbHJwY2xpYi5EYXRlVGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobSkKIAogICAgIGRlZiB0ZXN0X2J1Z18xMTY0OTEyIChzZWxmKToKICAgICAgICAgZCA9IHhtbHJwY2xpYi5EYXRlVGltZSgpCkBAIC0xMjUsNiArMTU0LDIyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIG0uZHVtcF9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbHJwY2xpYi5NSU5JTlQtMSwgZHVtbXlfd3JpdGUpCiAKKyAgICBkZWYgdGVzdF9kdW1wX2RvdWJsZShzZWxmKToKKyAgICAgICAgeG1scnBjbGliLmR1bXBzKChmbG9hdCgyICoqIDM0KSwpKQorICAgICAgICB4bWxycGNsaWIuZHVtcHMoKGZsb2F0KHhtbHJwY2xpYi5NQVhJTlQpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0KHhtbHJwY2xpYi5NSU5JTlQpKSkKKyAgICAgICAgeG1scnBjbGliLmR1bXBzKChmbG9hdCh4bWxycGNsaWIuTUFYSU5UICsgNDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0KHhtbHJwY2xpYi5NSU5JTlQgLSA0MikpKQorCisgICAgICAgIGRlZiBkdW1teV93cml0ZShzKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtID0geG1scnBjbGliLk1hcnNoYWxsZXIoKQorICAgICAgICBtLmR1bXBfZG91YmxlKHhtbHJwY2xpYi5NQVhJTlQsIGR1bW15X3dyaXRlKQorICAgICAgICBtLmR1bXBfZG91YmxlKHhtbHJwY2xpYi5NSU5JTlQsIGR1bW15X3dyaXRlKQorICAgICAgICBtLmR1bXBfZG91YmxlKHhtbHJwY2xpYi5NQVhJTlQgKyA0MiwgZHVtbXlfd3JpdGUpCisgICAgICAgIG0uZHVtcF9kb3VibGUoeG1scnBjbGliLk1JTklOVCAtIDQyLCBkdW1teV93cml0ZSkKKwogICAgIGRlZiB0ZXN0X2R1bXBfbm9uZShzZWxmKToKICAgICAgICAgdmFsdWUgPSBhbGlzdCArIFtOb25lXQogICAgICAgICBhcmcxID0gKGFsaXN0ICsgW05vbmVdLCkKQEAgLTEzMyw2ICsxNzgsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1scnBjbGliLmxvYWRzKHN0cmcpWzBdWzBdKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHhtbHJwY2xpYi5kdW1wcywgKGFyZzEsKSkKIAorICAgIGRlZiB0ZXN0X2R1bXBfYnl0ZXMoc2VsZik6CisgICAgICAgIHNhbXBsZSA9IGIibXkgZG9nIGhhcyBmbGVhcyIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzYW1wbGUsIHhtbHJwY2xpYi5CaW5hcnkoc2FtcGxlKSkKKyAgICAgICAgZm9yIHR5cGVfIGluIGJ5dGVzLCBieXRlYXJyYXksIHhtbHJwY2xpYi5CaW5hcnk6CisgICAgICAgICAgICB2YWx1ZSA9IHR5cGVfKHNhbXBsZSkKKyAgICAgICAgICAgIHMgPSB4bWxycGNsaWIuZHVtcHMoKHZhbHVlLCkpCisKKyAgICAgICAgICAgIHJlc3VsdCwgbSA9IHhtbHJwY2xpYi5sb2FkcyhzLCB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQorICAgICAgICAgICAgKG5ld3ZhbHVlLCkgPSByZXN1bHQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3dmFsdWUsIHNhbXBsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuZXd2YWx1ZSksIGJ5dGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobSkKKworICAgICAgICAgICAgcmVzdWx0LCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKQorICAgICAgICAgICAgKG5ld3ZhbHVlLCkgPSByZXN1bHQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3dmFsdWUsIHNhbXBsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuZXd2YWx1ZSksIHhtbHJwY2xpYi5CaW5hcnkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtKQorCiAgICAgZGVmIHRlc3RfZ2V0X2hvc3RfaW5mbyhzZWxmKToKICAgICAgICAgIyBzZWUgYnVnICMzNjEzLCB0aGlzIHJhaXNlZCBhIFR5cGVFcnJvcgogICAgICAgICB0cmFuc3AgPSB4bWxycGMuY2xpZW50LlRyYW5zcG9ydCgpCkBAIC0xNDAsOSArMjA0LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdob3N0LnRsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdBdXRob3JpemF0aW9uJywgJ0Jhc2ljIGRYTmxjZz09JyldLCB7fSkpCiAKLSAgICBkZWYgdGVzdF9kdW1wX2J5dGVzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHhtbHJwY2xpYi5kdW1wcywgKGIibXkgZG9nIGhhcyBmbGVhcyIsKSkKLQogICAgIGRlZiB0ZXN0X3NzbF9wcmVzZW5jZShzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wb3J0IHNzbApAQCAtOTgwLDEwICsxMDQxLDQ0IEBACiAgICAgICAgICAgICBsZW4oY29udGVudCkpCiAKIAorY2xhc3MgVXNlQnVpbHRpblR5cGVzVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfdXNlX2J1aWx0aW5fdHlwZXMoc2VsZik6CisgICAgICAgICMgU2ltcGxlWE1MUlBDRGlzcGF0Y2hlci5fX2luaXRfXyBhY2NlcHRzIHVzZV9idWlsdGluX3R5cGVzLCB3aGljaAorICAgICAgICAjIG1ha2VzIGFsbCBkaXNwYXRjaCBvZiBiaW5hcnkgZGF0YSBhcyBieXRlcyBpbnN0YW5jZXMsIGFuZCBhbGwKKyAgICAgICAgIyBkaXNwYXRjaCBvZiBkYXRldGltZSBhcmd1bWVudCBhcyBkYXRldGltZS5kYXRldGltZSBpbnN0YW5jZXMuCisgICAgICAgIHNlbGYubG9nID0gW10KKyAgICAgICAgZXhwZWN0ZWRfYnl0ZXMgPSBiIm15IGRvZyBoYXMgZmxlYXMiCisgICAgICAgIGV4cGVjdGVkX2RhdGUgPSBkYXRldGltZS5kYXRldGltZSgyMDA4LCA1LCAyNiwgMTgsIDI1LCAxMikKKyAgICAgICAgbWFyc2hhbGVkID0geG1scnBjbGliLmR1bXBzKChleHBlY3RlZF9ieXRlcywgZXhwZWN0ZWRfZGF0ZSksICdmb29iYXInKQorICAgICAgICBkZWYgZm9vYmFyKCphcmdzKToKKyAgICAgICAgICAgIHNlbGYubG9nLmV4dGVuZChhcmdzKQorICAgICAgICBoYW5kbGVyID0geG1scnBjLnNlcnZlci5TaW1wbGVYTUxSUENEaXNwYXRjaGVyKAorICAgICAgICAgICAgYWxsb3dfbm9uZT1UcnVlLCBlbmNvZGluZz1Ob25lLCB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQorICAgICAgICBoYW5kbGVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGZvb2JhcikKKyAgICAgICAgaGFuZGxlci5fbWFyc2hhbGVkX2Rpc3BhdGNoKG1hcnNoYWxlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5sb2cpLCAyKQorICAgICAgICBteWJ5dGVzLCBteWRhdGUgPSBzZWxmLmxvZworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9nLCBbZXhwZWN0ZWRfYnl0ZXMsIGV4cGVjdGVkX2RhdGVdKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobXlkYXRlKSwgZGF0ZXRpbWUuZGF0ZXRpbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShteWJ5dGVzKSwgYnl0ZXMpCisKKyAgICBkZWYgdGVzdF9jZ2loYW5kbGVyX2hhc191c2VfYnVpbHRpbl90eXBlc19mbGFnKHNlbGYpOgorICAgICAgICBoYW5kbGVyID0geG1scnBjLnNlcnZlci5DR0lYTUxSUENSZXF1ZXN0SGFuZGxlcih1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFuZGxlci51c2VfYnVpbHRpbl90eXBlcykKKworICAgIGRlZiB0ZXN0X3htbHJwY3NlcnZlcl9oYXNfdXNlX2J1aWx0aW5fdHlwZXNfZmxhZyhzZWxmKToKKyAgICAgICAgc2VydmVyID0geG1scnBjLnNlcnZlci5TaW1wbGVYTUxSUENTZXJ2ZXIoKCJsb2NhbGhvc3QiLCAwKSwKKyAgICAgICAgICAgIHVzZV9idWlsdGluX3R5cGVzPVRydWUpCisgICAgICAgIHNlcnZlci5zZXJ2ZXJfY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLnVzZV9idWlsdGluX3R5cGVzKQorCisKIEBzdXBwb3J0LnJlYXBfdGhyZWFkcwogZGVmIHRlc3RfbWFpbigpOgogICAgIHhtbHJwY190ZXN0cyA9IFtYTUxSUENUZXN0Q2FzZSwgSGVscGVyVGVzdENhc2UsIERhdGVUaW1lVGVzdENhc2UsCiAgICAgICAgICBCaW5hcnlUZXN0Q2FzZSwgRmF1bHRUZXN0Q2FzZV0KKyAgICB4bWxycGNfdGVzdHMuYXBwZW5kKFVzZUJ1aWx0aW5UeXBlc1Rlc3RDYXNlKQogICAgIHhtbHJwY190ZXN0cy5hcHBlbmQoU2ltcGxlU2VydmVyVGVzdENhc2UpCiAgICAgeG1scnBjX3Rlc3RzLmFwcGVuZChLZWVwYWxpdmVTZXJ2ZXJUZXN0Q2FzZTEpCiAgICAgeG1scnBjX3Rlc3RzLmFwcGVuZChLZWVwYWxpdmVTZXJ2ZXJUZXN0Q2FzZTIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3htbHJwY19uZXQucHkgYi9MaWIvdGVzdC90ZXN0X3htbHJwY19uZXQucHkKaW5kZXggZDcyZjhhYy4uZGZiNWY5YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeG1scnBjX25ldC5weQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbjMKIAotaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgY29sbGVjdGlvbnMuYWJjCiBpbXBvcnQgZXJybm8KIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzeXMKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogICAgICAgICAjIFBlcmZvcm0gYSBtaW5pbWFsIHNhbml0eSBjaGVjayBvbiB0aGUgcmVzdWx0LCBqdXN0IHRvIGJlIHN1cmUKICAgICAgICAgIyB0aGUgcmVxdWVzdCBtZWFucyB3aGF0IHdlIHRoaW5rIGl0IG1lYW5zLgotICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYnVpbGRlcnMsIGNvbGxlY3Rpb25zLlNlcXVlbmNlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYnVpbGRlcnMsIGNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFt4IGZvciB4IGluIGJ1aWxkZXJzIGlmICIzLngiIGluIHhdLCBidWlsZGVycykKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkKaW5kZXggYzAwYzgzZS4uNWU4MzdjZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weQpAQCAtMSw5ICsxLDMgQEAKLSMgV2UgY2FuIHRlc3QgcGFydCBvZiB0aGUgbW9kdWxlIHdpdGhvdXQgemxpYi4KLXRyeToKLSAgICBpbXBvcnQgemxpYgotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHpsaWIgPSBOb25lCi0KIGltcG9ydCBpbwogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCkBAIC0yMCw3ICsxNCw4IEBACiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBza2lwVW5sZXNzCiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoVEVTVEZOLCBydW5fdW5pdHRlc3QsIGZpbmRmaWxlLCB1bmxpbmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZWRfc3Rkb3V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlc196bGliLCByZXF1aXJlc19iejIsIHJlcXVpcmVzX2x6bWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVkX3N0ZG91dCkKIAogVEVTVEZOMiA9IFRFU1RGTiArICIyIgogVEVTVEZORElSID0gVEVTVEZOICsgImQiCkBAIC0yNzAsNDQgKzI2NSw0NCBAQAogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfaXRlcmxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfU1RPUkVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9vcGVuX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfcmFuZG9tX29wZW5fZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9yYW5kb21fb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfcmVhZGxpbmVfcmVhZF9kZWZsYXRlZChzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjNzYxMDogY2FsbHMgdG8gcmVhZGxpbmUoKSBpbnRlcmxlYXZlZCB3aXRoIGNhbGxzIHRvIHJlYWQoKS4KICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3JlYWRsaW5lX3JlYWRfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JlYWRsaW5lX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfcmVhZGxpbmVfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JlYWRsaW5lc19kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3JlYWRsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfaXRlcmxpbmVzX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfaXRlcmxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9sb3dfY29tcHJlc3Npb24oc2VsZik6CiAgICAgICAgICIiIkNoZWNrIGZvciBjYXNlcyB3aGVyZSBjb21wcmVzc2VkIGRhdGEgaXMgbGFyZ2VyIHRoYW4gb3JpZ2luYWwuIiIiCiAgICAgICAgICMgQ3JlYXRlIHRoZSBaSVAgYXJjaGl2ZQpAQCAtMzIwLDYgKzMxNSwxMDMgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZW5vYmoucmVhZCgxKSwgYicxJykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZW5vYmoucmVhZCgxKSwgYicyJykKIAorICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3Rfb3Blbl9iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yYW5kb21fb3Blbl9iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3JhbmRvbV9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfcmVhZF9iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3JlYWRsaW5lX3JlYWRfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3JlYWRsaW5lX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfcmVhZGxpbmVzX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmVhZGxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfaXRlcmxpbmVzX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfaXRlcmxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfbG93X2NvbXByZXNzaW9uX2J6aXAyKHNlbGYpOgorICAgICAgICAiIiJDaGVjayBmb3IgY2FzZXMgd2hlcmUgY29tcHJlc3NlZCBkYXRhIGlzIGxhcmdlciB0aGFuIG9yaWdpbmFsLiIiIgorICAgICAgICAjIENyZWF0ZSB0aGUgWklQIGFyY2hpdmUKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgInciLCB6aXBmaWxlLlpJUF9CWklQMikgYXMgemlwZnA6CisgICAgICAgICAgICB6aXBmcC53cml0ZXN0cigic3RyZmlsZSIsICcxMicpCisKKyAgICAgICAgIyBHZXQgYW4gb3BlbiBvYmplY3QgZm9yIHN0cmZpbGUKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgInIiLCB6aXBmaWxlLlpJUF9CWklQMikgYXMgemlwZnA6CisgICAgICAgICAgICB3aXRoIHppcGZwLm9wZW4oInN0cmZpbGUiKSBhcyBvcGVub2JqOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Blbm9iai5yZWFkKDEpLCBiJzEnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Blbm9iai5yZWFkKDEpLCBiJzInKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9vcGVuX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfcmFuZG9tX29wZW5fbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3JhbmRvbV9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfcmVhZF9sem1hKHNlbGYpOgorICAgICAgICAjIElzc3VlICM3NjEwOiBjYWxscyB0byByZWFkbGluZSgpIGludGVybGVhdmVkIHdpdGggY2FsbHMgdG8gcmVhZCgpLgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmVhZGxpbmVfcmVhZF90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JlYWRsaW5lX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZV90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JlYWRsaW5lc19sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmVhZGxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfaXRlcmxpbmVzX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9pdGVybGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9sb3dfY29tcHJlc3Npb25fbHptYShzZWxmKToKKyAgICAgICAgIiIiQ2hlY2sgZm9yIGNhc2VzIHdoZXJlIGNvbXByZXNzZWQgZGF0YSBpcyBsYXJnZXIgdGhhbiBvcmlnaW5hbC4iIiIKKyAgICAgICAgIyBDcmVhdGUgdGhlIFpJUCBhcmNoaXZlCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IiwgemlwZmlsZS5aSVBfTFpNQSkgYXMgemlwZnA6CisgICAgICAgICAgICB6aXBmcC53cml0ZXN0cigic3RyZmlsZSIsICcxMicpCisKKyAgICAgICAgIyBHZXQgYW4gb3BlbiBvYmplY3QgZm9yIHN0cmZpbGUKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgInIiLCB6aXBmaWxlLlpJUF9MWk1BKSBhcyB6aXBmcDoKKyAgICAgICAgICAgIHdpdGggemlwZnAub3Blbigic3RyZmlsZSIpIGFzIG9wZW5vYmo6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVub2JqLnJlYWQoMSksIGInMScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVub2JqLnJlYWQoMSksIGInMicpCisKICAgICBkZWYgdGVzdF9hYnNvbHV0ZV9hcmNuYW1lcyhzZWxmKToKICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgInciLCB6aXBmaWxlLlpJUF9TVE9SRUQpIGFzIHppcGZwOgogICAgICAgICAgICAgemlwZnAud3JpdGUoVEVTVEZOLCAiL2Fic29sdXRlIikKQEAgLTM3OCw3ICs0NzAsNyBAQAogICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgInJiIikgYXMgZjoKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGZwLnJlYWQoVEVTVEZOKSwgZi5yZWFkKCkpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9wZXJfZmlsZV9jb21wcmVzc2lvbihzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBmaWxlcyB3aXRoaW4gYSBaaXAgYXJjaGl2ZSBjYW4gaGF2ZSBkaWZmZXJlbnQKICAgICAgICAgY29tcHJlc3Npb24gb3B0aW9ucy4iIiIKQEAgLTQ0Niw4ICs1MzgsMTUgQEAKICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAncmInKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgY29udGVudCkKIAotICAgIGRlZiB0ZXN0X2V4dHJhY3RfaGFja2Vyc19hcmNuYW1lcyhzZWxmKToKLSAgICAgICAgaGFja25hbWVzID0gWworICAgIGRlZiB0ZXN0X3Nhbml0aXplX3dpbmRvd3NfbmFtZShzZWxmKToKKyAgICAgICAgc2FuID0gemlwZmlsZS5aaXBGaWxlLl9zYW5pdGl6ZV93aW5kb3dzX25hbWUKKyAgICAgICAgIyBQYXNzaW5nIHBhdGhzZXAgaW4gYWxsb3dzIHRoaXMgdGVzdCB0byB3b3JrIHJlZ2FyZGxlc3Mgb2YgcGxhdGZvcm0uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2FuKHInLCw/LEM6LGZvbyxiYXIveicsICcsJyksIHInXyxDXyxmb28sYmFyL3onKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNhbihyJ2FcYixjPGQ+ZXxmImc/aCppJywgJywnKSwgcidhXGIsY19kX2VfZl9nX2hfaScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2FuKCcuLi8uLi9mb28uLi8uLi9iYS4ucicsICcvJyksIHInZm9vL2JhLi5yJykKKworICAgIGRlZiB0ZXN0X2V4dHJhY3RfaGFja2Vyc19hcmNuYW1lc19jb21tb25fY2FzZXMoc2VsZik6CisgICAgICAgIGNvbW1vbl9oYWNrbmFtZXMgPSBbCiAgICAgICAgICAgICAoJy4uL2Zvby9iYXInLCAnZm9vL2JhcicpLAogICAgICAgICAgICAgKCdmb28vLi4vYmFyJywgJ2Zvby9iYXInKSwKICAgICAgICAgICAgICgnZm9vLy4uLy4uL2JhcicsICdmb28vYmFyJyksCkBAIC00NTcsOCArNTU2LDEyIEBACiAgICAgICAgICAgICAoJy9mb28vLi4vYmFyJywgJ2Zvby9iYXInKSwKICAgICAgICAgICAgICgnL2Zvby8uLi8uLi9iYXInLCAnZm9vL2JhcicpLAogICAgICAgICBdCi0gICAgICAgIGlmIG9zLnBhdGguc2VwID09ICdcXCc6ICAjIFdpbmRvd3MuCi0gICAgICAgICAgICBoYWNrbmFtZXMuZXh0ZW5kKFsKKyAgICAgICAgc2VsZi5fdGVzdF9leHRyYWN0X2hhY2tlcnNfYXJjbmFtZXMoY29tbW9uX2hhY2tuYW1lcykKKworICAgIEB1bml0dGVzdC5za2lwSWYob3MucGF0aC5zZXAgIT0gJ1xcJywgJ1JlcXVpcmVzIFxcIGFzIHBhdGggc2VwYXJhdG9yLicpCisgICAgZGVmIHRlc3RfZXh0cmFjdF9oYWNrZXJzX2FyY25hbWVzX3dpbmRvd3Nfb25seShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBjb21iaW5hdGlvbiBvZiBwYXRoIGZpeGluZyBhbmQgd2luZG93cyBuYW1lIHNhbml0aXphdGlvbi4iIiIKKyAgICAgICAgd2luZG93c19oYWNrbmFtZXMgPSBbCiAgICAgICAgICAgICAgICAgKHInLi5cZm9vXGJhcicsICdmb28vYmFyJyksCiAgICAgICAgICAgICAgICAgKHInLi5cL2Zvb1wvYmFyJywgJ2Zvby9iYXInKSwKICAgICAgICAgICAgICAgICAocidmb28vXC4uXC9iYXInLCAnZm9vL2JhcicpLApAQCAtNDc4LDE0ICs1ODEsMTkgQEAKICAgICAgICAgICAgICAgICAocidDOi8uLi9DOi9mb28vYmFyJywgJ0NfL2Zvby9iYXInKSwKICAgICAgICAgICAgICAgICAocidhOmJcYzxkPmV8ZiJnP2gqaScsICdiL2NfZF9lX2ZfZ19oX2knKSwKICAgICAgICAgICAgICAgICAoJy4uLy4uL2Zvby4uLy4uL2JhLi5yJywgJ2Zvby9iYS4ucicpLAotICAgICAgICAgICAgXSkKLSAgICAgICAgZWxzZTogICMgVW5peAotICAgICAgICAgICAgaGFja25hbWVzLmV4dGVuZChbCi0gICAgICAgICAgICAgICAgKCcvL2Zvby9iYXInLCAnZm9vL2JhcicpLAotICAgICAgICAgICAgICAgICgnLi4vLi4vZm9vLi4vLi4vYmEuLnInLCAnZm9vLi4vYmEuLnInKSwKLSAgICAgICAgICAgICAgICAocidmb28vLi5cYmFyJywgcidmb28vLi5cYmFyJyksCi0gICAgICAgICAgICBdKQorICAgICAgICBdCisgICAgICAgIHNlbGYuX3Rlc3RfZXh0cmFjdF9oYWNrZXJzX2FyY25hbWVzKHdpbmRvd3NfaGFja25hbWVzKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihvcy5wYXRoLnNlcCAhPSAnLycsIHInUmVxdWlyZXMgLyBhcyBwYXRoIHNlcGFyYXRvci4nKQorICAgIGRlZiB0ZXN0X2V4dHJhY3RfaGFja2Vyc19hcmNuYW1lc19wb3NpeF9vbmx5KHNlbGYpOgorICAgICAgICBwb3NpeF9oYWNrbmFtZXMgPSBbCisgICAgICAgICAgICAoJy8vZm9vL2JhcicsICdmb28vYmFyJyksCisgICAgICAgICAgICAoJy4uLy4uL2Zvby4uLy4uL2JhLi5yJywgJ2Zvby4uL2JhLi5yJyksCisgICAgICAgICAgICAocidmb28vLi5cYmFyJywgcidmb28vLi5cYmFyJyksCisgICAgICAgIF0KKyAgICAgICAgc2VsZi5fdGVzdF9leHRyYWN0X2hhY2tlcnNfYXJjbmFtZXMocG9zaXhfaGFja25hbWVzKQorCisgICAgZGVmIF90ZXN0X2V4dHJhY3RfaGFja2Vyc19hcmNuYW1lcyhzZWxmLCBoYWNrbmFtZXMpOgogICAgICAgICBmb3IgYXJjbmFtZSwgZml4ZWRuYW1lIGluIGhhY2tuYW1lczoKICAgICAgICAgICAgIGNvbnRlbnQgPSBiJ2Zvb2JhcicgKyBhcmNuYW1lLmVuY29kZSgpCiAgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAndycsIHppcGZpbGUuWklQX1NUT1JFRCkgYXMgemlwZnA6CkBAIC01MDIsNyArNjEwLDggQEAKICAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICdyJykgYXMgemlwZnA6CiAgICAgICAgICAgICAgICAgd3JpdHRlbmZpbGUgPSB6aXBmcC5leHRyYWN0KGFyY25hbWUsIHRhcmdldHBhdGgpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cml0dGVuZmlsZSwgY29ycmVjdGZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9ImV4dHJhY3QgJXIiICUgYXJjbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0nZXh0cmFjdCAlcjogJXIgIT0gJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmNuYW1lLCB3cml0dGVuZmlsZSwgY29ycmVjdGZpbGUpKQogICAgICAgICAgICAgc2VsZi5jaGVja19maWxlKGNvcnJlY3RmaWxlLCBjb250ZW50KQogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSgndGFyZ2V0JykKIApAQCAtNTI3LDE5ICs2MzYsMzIgQEAKIAogICAgICAgICAgICAgb3MucmVtb3ZlKFRFU1RGTjIpCiAKLSAgICBkZWYgdGVzdF93cml0ZXN0cl9jb21wcmVzc2lvbihzZWxmKToKKyAgICBkZWYgdGVzdF93cml0ZXN0cl9jb21wcmVzc2lvbl9zdG9yZWQoc2VsZik6CiAgICAgICAgIHppcGZwID0gemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IikKICAgICAgICAgemlwZnAud3JpdGVzdHIoImEudHh0IiwgImhlbGxvIHdvcmxkIiwgY29tcHJlc3NfdHlwZT16aXBmaWxlLlpJUF9TVE9SRUQpCi0gICAgICAgIGlmIHpsaWI6Ci0gICAgICAgICAgICB6aXBmcC53cml0ZXN0cigiYi50eHQiLCAiaGVsbG8gd29ybGQiLCBjb21wcmVzc190eXBlPXppcGZpbGUuWklQX0RFRkxBVEVEKQotCiAgICAgICAgIGluZm8gPSB6aXBmcC5nZXRpbmZvKCdhLnR4dCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mby5jb21wcmVzc190eXBlLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICAgICAgaWYgemxpYjoKLSAgICAgICAgICAgIGluZm8gPSB6aXBmcC5nZXRpbmZvKCdiLnR4dCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm8uY29tcHJlc3NfdHlwZSwgemlwZmlsZS5aSVBfREVGTEFURUQpCisgICAgQHJlcXVpcmVzX3psaWIKKyAgICBkZWYgdGVzdF93cml0ZXN0cl9jb21wcmVzc2lvbl9kZWZsYXRlZChzZWxmKToKKyAgICAgICAgemlwZnAgPSB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgInciKQorICAgICAgICB6aXBmcC53cml0ZXN0cigiYi50eHQiLCAiaGVsbG8gd29ybGQiLCBjb21wcmVzc190eXBlPXppcGZpbGUuWklQX0RFRkxBVEVEKQorICAgICAgICBpbmZvID0gemlwZnAuZ2V0aW5mbygnYi50eHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm8uY29tcHJlc3NfdHlwZSwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3Rfd3JpdGVzdHJfY29tcHJlc3Npb25fYnppcDIoc2VsZik6CisgICAgICAgIHppcGZwID0gemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IikKKyAgICAgICAgemlwZnAud3JpdGVzdHIoImIudHh0IiwgImhlbGxvIHdvcmxkIiwgY29tcHJlc3NfdHlwZT16aXBmaWxlLlpJUF9CWklQMikKKyAgICAgICAgaW5mbyA9IHppcGZwLmdldGluZm8oJ2IudHh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvLmNvbXByZXNzX3R5cGUsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF93cml0ZXN0cl9jb21wcmVzc2lvbl9sem1hKHNlbGYpOgorICAgICAgICB6aXBmcCA9IHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAidyIpCisgICAgICAgIHppcGZwLndyaXRlc3RyKCJiLnR4dCIsICJoZWxsbyB3b3JsZCIsIGNvbXByZXNzX3R5cGU9emlwZmlsZS5aSVBfTFpNQSkKKyAgICAgICAgaW5mbyA9IHppcGZwLmdldGluZm8oJ2IudHh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvLmNvbXByZXNzX3R5cGUsIHppcGZpbGUuWklQX0xaTUEpCiAKICAgICBkZWYgemlwX3Rlc3Rfd3JpdGVzdHJfcGVybWlzc2lvbnMoc2VsZiwgZiwgY29tcHJlc3Npb24pOgogICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHdyaXRlc3RyIGNyZWF0ZXMgZmlsZXMgd2l0aCBtb2RlIDA2MDAsCkBAIC01OTUsNyArNzE3LDEyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmcC53cml0ZSwgVEVTVEZOKQogCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisKKworCisKKworICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfdW5pY29kZV9maWxlbmFtZXMoc2VsZik6CiAgICAgICAgICMgYnVnICMxMDgwMQogICAgICAgICBmbmFtZSA9IGZpbmRmaWxlKCd6aXBfY3A0MzdfaGVhZGVyLnppcCcpCkBAIC03MDQsMTEgKzgzMSwyMSBAQAogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCiAgICAgZGVmIHRlc3RfYWJzb2x1dGVfYXJjbmFtZXMoc2VsZik6CiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IiwgemlwZmlsZS5aSVBfU1RPUkVELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd1ppcDY0PVRydWUpIGFzIHppcGZwOgpAQCAtODU5LDggKzk5Niw0MCBAQAogICAgICAgICAgICAgYidceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4ODBceDAxXHgwMFx4MDBceDAwJwogICAgICAgICAgICAgYidceDAwYWZpbGVQS1x4MDVceDA2XHgwMFx4MDBceDAwXHgwMFx4MDFceDAwJwogICAgICAgICAgICAgYidceDAxXHgwMDNceDAwXHgwMFx4MDAzXHgwMFx4MDBceDAwXHgwMFx4MDAnKSwKKyAgICAgICAgemlwZmlsZS5aSVBfQlpJUDI6ICgKKyAgICAgICAgICAgIGInUEtceDAzXHgwNFx4MTRceDAzXHgwMFx4MDBceDBjXHgwMG51XHgwYz1GQScKKyAgICAgICAgICAgIGInS0U4XHgwMFx4MDBceDAwblx4MDBceDAwXHgwMFx4MDVceDAwXHgwMFx4MDBhZicKKyAgICAgICAgICAgIGInaWxlQlpoOTFBWSZTWVx4ZDRceGE4XHhjYScKKyAgICAgICAgICAgIGInXHg3Zlx4MDBceDAwXHgwZlx4MTFceDgwQFx4MDBceDA2RFx4OTBceDgwIFx4MDAgXHhhNScKKyAgICAgICAgICAgIGInUFx4ZDkhXHgwM1x4MDNceDEzXHgxM1x4MTNceDg5XHhhOVx4YTlceGMydTU6XHg5ZicKKyAgICAgICAgICAgIGInXHg4Ylx4YjkiXHg5YyhIalRlP1x4ODBQS1x4MDFceDAyXHgxNCcKKyAgICAgICAgICAgIGInXHgwM1x4MTRceDAzXHgwMFx4MDBceDBjXHgwMG51XHgwYz1GQUtFOCcKKyAgICAgICAgICAgIGInXHgwMFx4MDBceDAwblx4MDBceDAwXHgwMFx4MDVceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMCcKKyAgICAgICAgICAgIGInXHgwMCBceDgwXHg4MFx4ODFceDAwXHgwMFx4MDBceDAwYWZpbGVQSycKKyAgICAgICAgICAgIGInXHgwNVx4MDZceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAxXHgwMDNceDAwXHgwMFx4MDBbXHgwMCcKKyAgICAgICAgICAgIGInXHgwMFx4MDBceDAwXHgwMCcpLAorICAgICAgICB6aXBmaWxlLlpJUF9MWk1BOiAoCisgICAgICAgICAgICBiJ1BLXHgwM1x4MDRceDE0XHgwM1x4MDBceDAwXHgwZVx4MDBudVx4MGM9RkEnCisgICAgICAgICAgICBiJ0tFXHgxYlx4MDBceDAwXHgwMG5ceDAwXHgwMFx4MDBceDA1XHgwMFx4MDBceDAwYWYnCisgICAgICAgICAgICBiJ2lsZVx0XHgwNFx4MDVceDAwXVx4MDBceDAwXHgwMFx4MDRceDAwNFx4MTlJJworICAgICAgICAgICAgYidceGVlXHg4ZFx4ZTlceDE3XHg4OTozYFx0cSEuOFx4MDBQSycKKyAgICAgICAgICAgIGInXHgwMVx4MDJceDE0XHgwM1x4MTRceDAzXHgwMFx4MDBceDBlXHgwMG51XHgwYz1GQScKKyAgICAgICAgICAgIGInS0VceDFiXHgwMFx4MDBceDAwblx4MDBceDAwXHgwMFx4MDVceDAwXHgwMFx4MDBceDAwXHgwMCcKKyAgICAgICAgICAgIGInXHgwMFx4MDBceDAwXHgwMCBceDgwXHg4MFx4ODFceDAwXHgwMFx4MDBceDAwYWZpbCcKKyAgICAgICAgICAgIGInZVBLXHgwNVx4MDZceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAxXHgwMDNceDAwXHgwMCcKKyAgICAgICAgICAgIGInXHgwMD5ceDAwXHgwMFx4MDBceDAwXHgwMCcpLAogICAgIH0KIAorICAgIGRlZiB0ZXN0X3Vuc3VwcG9ydGVkX3ZlcnNpb24oc2VsZik6CisgICAgICAgICMgRmlsZSBoYXMgYW4gZXh0cmFjdF92ZXJzaW9uIG9mIDEyMAorICAgICAgICBkYXRhID0gKGInUEtceDAzXHgwNHhceDAwXHgwMFx4MDBceDAwXHgwMCFwXHhhMUBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAnCisgICAgICAgIGInXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAwXHgwMHhQS1x4MDFceDAyeFx4MDN4XHgwMFx4MDBceDAwXHgwMCcKKyAgICAgICAgYidceDAwIXBceGExQFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDFceDAwXHgwMCcKKyAgICAgICAgYidceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDgwXHgwMVx4MDBceDAwXHgwMFx4MDB4UEtceDA1XHgwNicKKyAgICAgICAgYidceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAxXHgwMC9ceDAwXHgwMFx4MDBceDFmXHgwMFx4MDBceDAwXHgwMFx4MDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCB6aXBmaWxlLlppcEZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlvLkJ5dGVzSU8oZGF0YSksICdyJykKKwogICAgIGRlZiB0ZXN0X3VuaWNvZGVfZmlsZW5hbWVzKHNlbGYpOgogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4sICJ3IikgYXMgemY6CiAgICAgICAgICAgICB6Zi53cml0ZXN0cigiZm9vLnR4dCIsICJUZXN0IGZvciB1bmljb2RlIGZpbGVuYW1lIikKQEAgLTExNTEsMTAgKzEzMjAsMTggQEAKICAgICBkZWYgdGVzdF90ZXN0emlwX3dpdGhfYmFkX2NyY19zdG9yZWQoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfdGVzdHppcF93aXRoX2JhZF9jcmMoemlwZmlsZS5aSVBfU1RPUkVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfdGVzdHppcF93aXRoX2JhZF9jcmNfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfdGVzdHppcF93aXRoX2JhZF9jcmMoemlwZmlsZS5aSVBfREVGTEFURUQpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfdGVzdHppcF93aXRoX2JhZF9jcmNfYnppcDIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfdGVzdHppcF93aXRoX2JhZF9jcmMoemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3Rlc3R6aXBfd2l0aF9iYWRfY3JjX2x6bWEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfdGVzdHppcF93aXRoX2JhZF9jcmMoemlwZmlsZS5aSVBfTFpNQSkKKwogICAgIGRlZiBjaGVja19yZWFkX3dpdGhfYmFkX2NyYyhzZWxmLCBjb21wcmVzc2lvbik6CiAgICAgICAgICIiIlRlc3RzIHRoYXQgZmlsZXMgd2l0aCBiYWQgQ1JDcyByYWlzZSBhIEJhZFppcEZpbGUgZXhjZXB0aW9uIHdoZW4gcmVhZC4iIiIKICAgICAgICAgemlwZGF0YSA9IHNlbGYuemlwc193aXRoX2JhZF9jcmNbY29tcHJlc3Npb25dCkBAIC0xMTc5LDEwICsxMzU2LDE4IEBACiAgICAgZGVmIHRlc3RfcmVhZF93aXRoX2JhZF9jcmNfc3RvcmVkKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3JlYWRfd2l0aF9iYWRfY3JjKHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JlYWRfd2l0aF9iYWRfY3JjX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3JlYWRfd2l0aF9iYWRfY3JjKHppcGZpbGUuWklQX0RFRkxBVEVEKQogCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JlYWRfd2l0aF9iYWRfY3JjX2J6aXAyKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JlYWRfd2l0aF9iYWRfY3JjKHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yZWFkX3dpdGhfYmFkX2NyY19sem1hKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JlYWRfd2l0aF9iYWRfY3JjKHppcGZpbGUuWklQX0xaTUEpCisKICAgICBkZWYgY2hlY2tfcmVhZF9yZXR1cm5fc2l6ZShzZWxmLCBjb21wcmVzc2lvbik6CiAgICAgICAgICMgSXNzdWUgIzk4Mzc6IFppcEV4dEZpbGUucmVhZCgpIHNob3VsZG4ndCByZXR1cm4gbW9yZSBieXRlcwogICAgICAgICAjIHRoYW4gcmVxdWVzdGVkLgpAQCAtMTE5OSwxMCArMTM4NCwxOCBAQAogICAgIGRlZiB0ZXN0X3JlYWRfcmV0dXJuX3NpemVfc3RvcmVkKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3JlYWRfcmV0dXJuX3NpemUoemlwZmlsZS5aSVBfU1RPUkVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfcmVhZF9yZXR1cm5fc2l6ZV9kZWZsYXRlZChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19yZWFkX3JldHVybl9zaXplKHppcGZpbGUuWklQX0RFRkxBVEVEKQogCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JlYWRfcmV0dXJuX3NpemVfYnppcDIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcmVhZF9yZXR1cm5fc2l6ZSh6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfcmVhZF9yZXR1cm5fc2l6ZV9sem1hKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JlYWRfcmV0dXJuX3NpemUoemlwZmlsZS5aSVBfTFpNQSkKKwogICAgIGRlZiB0ZXN0X2VtcHR5X3ppcGZpbGUoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhhdCBjcmVhdGluZyBhIGZpbGUgaW4gJ3cnIG9yICdhJyBtb2RlIGFuZCBjbG9zaW5nIHdpdGhvdXQKICAgICAgICAgIyBhZGRpbmcgYW55IGZpbGVzIHRvIHRoZSBhcmNoaXZlcyBjcmVhdGVzIGEgdmFsaWQgZW1wdHkgWklQIGZpbGUKQEAgLTEyODksNyArMTQ4Miw3IEBACiAgICAgICAgIHNlbGYuemlwMi5zZXRwYXNzd29yZChiInBlcmwiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHNlbGYuemlwMi5yZWFkLCAiemVybyIpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9nb29kX3Bhc3N3b3JkKHNlbGYpOgogICAgICAgICBzZWxmLnppcC5zZXRwYXNzd29yZChiInB5dGhvbiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi56aXAucmVhZCgidGVzdC50eHQiKSwgc2VsZi5wbGFpbikKQEAgLTEzMzksMTEgKzE1MzIsMjEgQEAKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3Rlc3QoZiwgemlwZmlsZS5aSVBfU1RPUkVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKwogICAgIGRlZiB6aXBfb3Blbl90ZXN0KHNlbGYsIGYsIGNvbXByZXNzaW9uKToKICAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmLCBjb21wcmVzc2lvbikKIApAQCAtMTM3OSwxMSArMTU4MiwyMSBAQAogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X29wZW5fZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3Rfb3Blbl9iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3Rfb3Blbl9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKICAgICBkZWYgemlwX3JhbmRvbV9vcGVuX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgogICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQogCkBAIC0xNDA3LDEzICsxNjIwLDIzIEBACiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9yYW5kb21fb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JhbmRvbV9vcGVuX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfcmFuZG9tX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAorICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yYW5kb21fb3Blbl9iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3JhbmRvbV9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCiAKLUBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JhbmRvbV9vcGVuX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yYW5kb21fb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKworQHJlcXVpcmVzX3psaWIKIGNsYXNzIFRlc3RzV2l0aE11bHRpcGxlT3BlbnModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgIyBDcmVhdGUgdGhlIFpJUCBhcmNoaXZlCkBAIC0xNjA1LDMyICsxODI4LDgyIEBACiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLml0ZXJsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JlYWRfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnJlYWRfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JlYWRsaW5lX3JlYWRfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzc2MTA6IGNhbGxzIHRvIHJlYWRsaW5lKCkgaW50ZXJsZWF2ZWQgd2l0aCBjYWxscyB0byByZWFkKCkuCiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnJlYWRsaW5lX3JlYWRfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JlYWRsaW5lX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi5yZWFkbGluZV90ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfcmVhZGxpbmVzX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi5yZWFkbGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X2l0ZXJsaW5lc19kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuaXRlcmxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfcmVhZF9iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYucmVhZF90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JlYWRsaW5lX3JlYWRfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnJlYWRsaW5lX3JlYWRfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYucmVhZGxpbmVfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkbGluZXNfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnJlYWRsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X2l0ZXJsaW5lc19iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuaXRlcmxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JlYWRfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYucmVhZF90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JlYWRsaW5lX3JlYWRfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYucmVhZGxpbmVfcmVhZF90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JlYWRsaW5lX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnJlYWRsaW5lX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfcmVhZGxpbmVzX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnJlYWRsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X2l0ZXJsaW5lc19sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi5pdGVybGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBmb3Igc2VwLCBmbiBpbiBzZWxmLmFyY2ZpbGVzLml0ZW1zKCk6CiAgICAgICAgICAgICBvcy5yZW1vdmUoZm4pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGZpbGU2NC5weSBiL0xpYi90ZXN0L3Rlc3RfemlwZmlsZTY0LnB5CmluZGV4IDBlN2Q3M2YuLmE4ZmI3YWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwZmlsZTY0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwZmlsZTY0LnB5CkBAIC0xMSwxMiArMTEsNiBAQAogICAgICAgICAndGVzdCByZXF1aXJlcyBsb2FkcyBvZiBkaXNrLXNwYWNlIGJ5dGVzIGFuZCBhIGxvbmcgdGltZSB0byBydW4nCiAgICAgKQogCi0jIFdlIGNhbiB0ZXN0IHBhcnQgb2YgdGhlIG1vZHVsZSB3aXRob3V0IHpsaWIuCi10cnk6Ci0gICAgaW1wb3J0IHpsaWIKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICB6bGliID0gTm9uZQotCiBpbXBvcnQgemlwZmlsZSwgb3MsIHVuaXR0ZXN0CiBpbXBvcnQgdGltZQogaW1wb3J0IHN5cwpAQCAtMjQsNyArMTgsNyBAQAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIGZyb20gdGVtcGZpbGUgaW1wb3J0IFRlbXBvcmFyeUZpbGUKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QsIHJlcXVpcmVzX3psaWIKIAogVEVTVEZOMiA9IFRFU1RGTiArICIyIgogCkBAIC04MSwxMiArNzUsMTIgQEAKICAgICAgICAgZm9yIGYgaW4gVGVtcG9yYXJ5RmlsZSgpLCBURVNURk4yOgogICAgICAgICAgICAgc2VsZi56aXBUZXN0KGYsIHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIGlmIHpsaWI6Ci0gICAgICAgIGRlZiB0ZXN0RGVmbGF0ZWQoc2VsZik6Ci0gICAgICAgICAgICAjIFRyeSB0aGUgdGVtcCBmaWxlIGZpcnN0LiAgSWYgd2UgZG8gVEVTVEZOMiBmaXJzdCwgdGhlbiBpdCBob2dzCi0gICAgICAgICAgICAjIGdpZ2FieXRlcyBvZiBkaXNrIHNwYWNlIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHRlc3QuCi0gICAgICAgICAgICBmb3IgZiBpbiBUZW1wb3JhcnlGaWxlKCksIFRFU1RGTjI6Ci0gICAgICAgICAgICAgICAgc2VsZi56aXBUZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQorICAgIEByZXF1aXJlc196bGliCisgICAgZGVmIHRlc3REZWZsYXRlZChzZWxmKToKKyAgICAgICAgIyBUcnkgdGhlIHRlbXAgZmlsZSBmaXJzdC4gIElmIHdlIGRvIFRFU1RGTjIgZmlyc3QsIHRoZW4gaXQgaG9ncworICAgICAgICAjIGdpZ2FieXRlcyBvZiBkaXNrIHNwYWNlIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHRlc3QuCisgICAgICAgIGZvciBmIGluIFRlbXBvcmFyeUZpbGUoKSwgVEVTVEZOMjoKKyAgICAgICAgICAgIHNlbGYuemlwVGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgZm9yIGZuYW1lIGluIFRFU1RGTiwgVEVTVEZOMjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkKaW5kZXggZGY1ZmY5ZC4uZjdjYjhiOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkKQEAgLTksMTIgKzksNiBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QudGVzdF9pbXBvcnRob29rcyBpbXBvcnQgSW1wb3J0SG9va3NCYXNlVGVzdENhc2UsIHRlc3Rfc3JjLCB0ZXN0X2NvCiAKLSMgc29tZSB0ZXN0cyBjYW4gYmUgcmFuIGV2ZW4gd2l0aG91dCB6bGliCi10cnk6Ci0gICAgaW1wb3J0IHpsaWIKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICB6bGliID0gTm9uZQotCiBmcm9tIHppcGZpbGUgaW1wb3J0IFppcEZpbGUsIFppcEluZm8sIFpJUF9TVE9SRUQsIFpJUF9ERUZMQVRFRAogCiBpbXBvcnQgemlwaW1wb3J0CkBAIC0yNSw3ICsxOSw3IEBACiBmcm9tIHRyYWNlYmFjayBpbXBvcnQgZXh0cmFjdF90YiwgZXh0cmFjdF9zdGFjaywgcHJpbnRfdGIKIHJhaXNlX3NyYyA9ICdkZWYgZG9fcmFpc2UoKTogcmFpc2UgVHlwZUVycm9yXG4nCiAKLWRlZiBtYWtlX3B5YyhjbywgbXRpbWUpOgorZGVmIG1ha2VfcHljKGNvLCBtdGltZSwgc2l6ZSk6CiAgICAgZGF0YSA9IG1hcnNoYWwuZHVtcHMoY28pCiAgICAgaWYgdHlwZShtdGltZSkgaXMgdHlwZSgwLjApOgogICAgICAgICAjIE1hYyBtdGltZXMgbmVlZCBhIGJpdCBvZiBzcGVjaWFsIGNhc2luZwpAQCAtMzMsMTQgKzI3LDE0IEBACiAgICAgICAgICAgICBtdGltZSA9IGludChtdGltZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG10aW1lID0gaW50KC0weDEwMDAwMDAwMCArIGludChtdGltZSkpCi0gICAgcHljID0gaW1wLmdldF9tYWdpYygpICsgc3RydWN0LnBhY2soIjxpIiwgaW50KG10aW1lKSkgKyBkYXRhCisgICAgcHljID0gaW1wLmdldF9tYWdpYygpICsgc3RydWN0LnBhY2soIjxpaSIsIGludChtdGltZSksIHNpemUgJiAweEZGRkZGRkZGKSArIGRhdGEKICAgICByZXR1cm4gcHljCiAKIGRlZiBtb2R1bGVfcGF0aF90b19kb3R0ZWRfbmFtZShwYXRoKToKICAgICByZXR1cm4gcGF0aC5yZXBsYWNlKG9zLnNlcCwgJy4nKQogCiBOT1cgPSB0aW1lLnRpbWUoKQotdGVzdF9weWMgPSBtYWtlX3B5Yyh0ZXN0X2NvLCBOT1cpCit0ZXN0X3B5YyA9IG1ha2VfcHljKHRlc3RfY28sIE5PVywgbGVuKHRlc3Rfc3JjKSkKIAogCiBURVNUTU9EID0gInppcHRlc3Rtb2R1bGUiCkBAIC0yMTEsNiArMjA1LDEwIEBACiAgICAgICAgICAgICBtb2QgPSB6aS5sb2FkX21vZHVsZShURVNUUEFDSykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuZ2V0X2ZpbGVuYW1lKFRFU1RQQUNLKSwgbW9kLl9fZmlsZV9fKQogCisgICAgICAgICAgICBleGlzdGluZ19wYWNrX3BhdGggPSBfX2ltcG9ydF9fKFRFU1RQQUNLKS5fX3BhdGhfX1swXQorICAgICAgICAgICAgZXhwZWN0ZWRfcGF0aF9wYXRoID0gb3MucGF0aC5qb2luKFRFTVBfWklQLCBURVNUUEFDSykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpc3RpbmdfcGFja19wYXRoLCBleHBlY3RlZF9wYXRoX3BhdGgpCisKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuaXNfcGFja2FnZShwYWNrZGlyICsgJ19faW5pdF9fJyksIEZhbHNlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5pc19wYWNrYWdlKHBhY2tkaXIgKyBURVNUUEFDSzIpLCBUcnVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5pc19wYWNrYWdlKHBhY2tkaXIyICsgVEVTVE1PRCksIEZhbHNlKQpAQCAtMjk5LDcgKzI5Nyw3IEBACiAgICAgICAgICAgICByZXR1cm4gX19maWxlX18KICAgICAgICAgaWYgX19sb2FkZXJfXy5nZXRfZGF0YSgic29tZS5kYXRhIikgIT0gYiJzb21lIGRhdGEiOgogICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoImJhZCBkYXRhIilcbiIiIgotICAgICAgICBweWMgPSBtYWtlX3B5Yyhjb21waWxlKHNyYywgIjw/Pz8+IiwgImV4ZWMiKSwgTk9XKQorICAgICAgICBweWMgPSBtYWtlX3B5Yyhjb21waWxlKHNyYywgIjw/Pz8+IiwgImV4ZWMiKSwgTk9XLCBsZW4oc3JjKSkKICAgICAgICAgZmlsZXMgPSB7VEVTVE1PRCArIHB5Y19leHQ6IChOT1csIHB5YyksCiAgICAgICAgICAgICAgICAgICJzb21lLmRhdGEiOiAoTk9XLCAic29tZSBkYXRhIil9CiAgICAgICAgIHNlbGYuZG9UZXN0KHB5Y19leHQsIGZpbGVzLCBURVNUTU9EKQpAQCAtMzE5LDcgKzMxNyw3IEBACiAgICAgICAgIHNlbGYuZG9UZXN0KCIucHkiLCBmaWxlcywgVEVTVE1PRCwgY2FsbD1zZWxmLmFzc2VydE1vZHVsZVNvdXJjZSkKIAogICAgIGRlZiB0ZXN0R2V0Q29tcGlsZWRTb3VyY2Uoc2VsZik6Ci0gICAgICAgIHB5YyA9IG1ha2VfcHljKGNvbXBpbGUodGVzdF9zcmMsICI8Pz8/PiIsICJleGVjIiksIE5PVykKKyAgICAgICAgcHljID0gbWFrZV9weWMoY29tcGlsZSh0ZXN0X3NyYywgIjw/Pz8+IiwgImV4ZWMiKSwgTk9XLCBsZW4odGVzdF9zcmMpKQogICAgICAgICBmaWxlcyA9IHtURVNUTU9EICsgIi5weSI6IChOT1csIHRlc3Rfc3JjKSwKICAgICAgICAgICAgICAgICAgVEVTVE1PRCArIHB5Y19leHQ6IChOT1csIHB5Yyl9CiAgICAgICAgIHNlbGYuZG9UZXN0KHB5Y19leHQsIGZpbGVzLCBURVNUTU9ELCBjYWxsPXNlbGYuYXNzZXJ0TW9kdWxlU291cmNlKQpAQCAtMzkyLDcgKzM5MCw3IEBACiAgICAgICAgICAgICBvcy5yZW1vdmUoZmlsZW5hbWUpCiAKIAotQHVuaXR0ZXN0LnNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorQHN1cHBvcnQucmVxdWlyZXNfemxpYgogY2xhc3MgQ29tcHJlc3NlZFppcEltcG9ydFRlc3RDYXNlKFVuY29tcHJlc3NlZFppcEltcG9ydFRlc3RDYXNlKToKICAgICBjb21wcmVzc2lvbiA9IFpJUF9ERUZMQVRFRAogCkBAIC00MTcsNyArNDE1LDcgQEAKIAogICAgIGRlZiB0ZXN0RW1wdHlGaWxlKHNlbGYpOgogICAgICAgICBzdXBwb3J0LnVubGluayhURVNUTU9EKQotICAgICAgICBvcGVuKFRFU1RNT0QsICd3KycpLmNsb3NlKCkKKyAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShURVNUTU9EKQogICAgICAgICBzZWxmLmFzc2VydFppcEZhaWx1cmUoVEVTVE1PRCkKIAogICAgIGRlZiB0ZXN0RmlsZVVucmVhZGFibGUoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weQppbmRleCAwNjAxMDhmLi5mN2YzMzk4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkKQEAgLTE2NywyMCArMTY3LDE5IEBACiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF9Eb2NUZXN0UnVubmVyLnZlcmJvc2VfZmxhZywKICAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X0V4YW1wbGUsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF9kZWJ1ZywKLSAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2UsCi0gICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZCwKICAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X3Rlc3Rzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF90cmFpbGluZ19zcGFjZV9pbl90ZXN0LAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfRG9jVGVzdFN1aXRlLAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfRG9jVGVzdEZpbmRlciwKICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgIyBUaGVzZSByZW1haW5pbmcgdGVzdHMgYXJlIHRoZSBvbmVzIHdoaWNoIG5lZWQgYWNjZXNzCisgICAgICAgICAgICAgICAgIyBUaGVzZSB0ZXN0cyBhcmUgdGhlIG9uZXMgd2hpY2ggbmVlZCBhY2Nlc3MKICAgICAgICAgICAgICAgICAjIHRvIHRoZSBkYXRhIGZpbGVzLCBzbyB3ZSBkb24ndCBydW4gdGhlbQogICAgICAgICAgICAgICAgIGZhaWxfZHVlX3RvX21pc3NpbmdfZGF0YV9maWxlcyA9IFsKICAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X0RvY0ZpbGVTdWl0ZSwKICAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X3Rlc3RmaWxlLAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfdW5pdHRlc3RfcmVwb3J0ZmxhZ3MsCiAgICAgICAgICAgICAgICAgXQorCiAgICAgICAgICAgICAgICAgZm9yIG9iaiBpbiBrbm93bl9nb29kX3Rlc3RzOgogICAgICAgICAgICAgICAgICAgICBfcnVuX29iamVjdF9kb2N0ZXN0KG9iaiwgdGVzdF96aXBwZWRfZG9jdGVzdCkKICAgICAgICAgICAgIGZpbmFsbHk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3psaWIucHkgYi9MaWIvdGVzdC90ZXN0X3psaWIucHkKaW5kZXggNDY2MWMxZC4uMmY2Zjg0MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemxpYi5weQpAQCAtNywxMCArNywxNiBAQAogCiB6bGliID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd6bGliJykKIAotdHJ5OgotICAgIGltcG9ydCBtbWFwCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgbW1hcCA9IE5vbmUKKworY2xhc3MgVmVyc2lvblRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2xpYnJhcnlfdmVyc2lvbihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgdGhlIG1ham9yIHZlcnNpb24gb2YgdGhlIGFjdHVhbCBsaWJyYXJ5IGluIHVzZSBtYXRjaGVzIHRoZQorICAgICAgICAjIG1ham9yIHZlcnNpb24gdGhhdCB3ZSB3ZXJlIGNvbXBpbGVkIGFnYWluc3QuIFdlIGNhbid0IGd1YXJhbnRlZSB0aGF0CisgICAgICAgICMgdGhlIG1pbm9yIHZlcnNpb25zIHdpbGwgbWF0Y2ggKGV2ZW4gb24gdGhlIG1hY2hpbmUgb24gd2hpY2ggdGhlIG1vZHVsZQorICAgICAgICAjIHdhcyBjb21waWxlZCksIGFuZCB0aGUgQVBJIGlzIHN0YWJsZSBiZXR3ZWVuIG1pbm9yIHZlcnNpb25zLCBzbworICAgICAgICAjIHRlc3Rpbmcgb25seSB0aGUgbWFqb3IgdmVyc2lvbnMgYXZvaWRzIHNwdXJpb3VzIGZhaWx1cmVzLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpsaWIuWkxJQl9SVU5USU1FX1ZFUlNJT05bMF0sIHpsaWIuWkxJQl9WRVJTSU9OWzBdKQogCiAKIGNsYXNzIENoZWNrc3VtVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTczLDEwICsxNzksOCBAQAogICAgIGRlZiB0ZXN0X2JpZ19kZWNvbXByZXNzX2J1ZmZlcihzZWxmLCBzaXplKToKICAgICAgICAgc2VsZi5jaGVja19iaWdfZGVjb21wcmVzc19idWZmZXIoc2l6ZSwgemxpYi5kZWNvbXByZXNzKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgKyAxMDAsIG1lbXVzZT0xKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHICsgMTAwLCBtZW11c2U9MSwgZHJ5X3J1bj1GYWxzZSkKICAgICBkZWYgdGVzdF9sZW5ndGhfb3ZlcmZsb3coc2VsZiwgc2l6ZSk6Ci0gICAgICAgIGlmIHNpemUgPCBfNEcgKyAxMDA6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJub3QgZW5vdWdoIGZyZWUgbWVtb3J5LCBuZWVkIGF0IGxlYXN0IDQgR0IiKQogICAgICAgICBkYXRhID0gYid4JyAqIHNpemUKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgemxpYi5jb21wcmVzcywgZGF0YSwgMSkKQEAgLTQyMSw2ICs0MjUsMzUgQEAKICAgICAgICAgZGNvID0gemxpYi5kZWNvbXByZXNzb2JqKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkY28uZmx1c2goKSwgYiIiKSAjIFJldHVybnMgbm90aGluZwogCisgICAgZGVmIHRlc3RfZGljdGlvbmFyeShzZWxmKToKKyAgICAgICAgaCA9IEhBTUxFVF9TQ0VORQorICAgICAgICAjIEJ1aWxkIGEgc2ltdWxhdGVkIGRpY3Rpb25hcnkgb3V0IG9mIHRoZSB3b3JkcyBpbiBIQU1MRVQuCisgICAgICAgIHdvcmRzID0gaC5zcGxpdCgpCisgICAgICAgIHJhbmRvbS5zaHVmZmxlKHdvcmRzKQorICAgICAgICB6ZGljdCA9IGInJy5qb2luKHdvcmRzKQorICAgICAgICAjIFVzZSBpdCB0byBjb21wcmVzcyBIQU1MRVQuCisgICAgICAgIGNvID0gemxpYi5jb21wcmVzc29iaih6ZGljdD16ZGljdCkKKyAgICAgICAgY2QgPSBjby5jb21wcmVzcyhoKSArIGNvLmZsdXNoKCkKKyAgICAgICAgIyBWZXJpZnkgdGhhdCBpdCB3aWxsIGRlY29tcHJlc3Mgd2l0aCB0aGUgZGljdGlvbmFyeS4KKyAgICAgICAgZGNvID0gemxpYi5kZWNvbXByZXNzb2JqKHpkaWN0PXpkaWN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRjby5kZWNvbXByZXNzKGNkKSArIGRjby5mbHVzaCgpLCBoKQorICAgICAgICAjIFZlcmlmeSB0aGF0IGl0IGZhaWxzIHdoZW4gbm90IGdpdmVuIHRoZSBkaWN0aW9uYXJ5LgorICAgICAgICBkY28gPSB6bGliLmRlY29tcHJlc3NvYmooKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh6bGliLmVycm9yLCBkY28uZGVjb21wcmVzcywgY2QpCisKKyAgICBkZWYgdGVzdF9kaWN0aW9uYXJ5X3N0cmVhbWluZyhzZWxmKToKKyAgICAgICAgIyBUaGlzIHNpbXVsYXRlcyB0aGUgcmV1c2Ugb2YgYSBjb21wcmVzc29yIG9iamVjdCBmb3IgY29tcHJlc3NpbmcKKyAgICAgICAgIyBzZXZlcmFsIHNlcGFyYXRlIGRhdGEgc3RyZWFtcy4KKyAgICAgICAgY28gPSB6bGliLmNvbXByZXNzb2JqKHpkaWN0PUhBTUxFVF9TQ0VORSkKKyAgICAgICAgZG8gPSB6bGliLmRlY29tcHJlc3NvYmooemRpY3Q9SEFNTEVUX1NDRU5FKQorICAgICAgICBwaWVjZSA9IEhBTUxFVF9TQ0VORVsxMDAwOjE1MDBdCisgICAgICAgIGQwID0gY28uY29tcHJlc3MocGllY2UpICsgY28uZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGQxID0gY28uY29tcHJlc3MocGllY2VbMTAwOl0pICsgY28uZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCisgICAgICAgIGQyID0gY28uY29tcHJlc3MocGllY2VbOi0xMDBdKSArIGNvLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvLmRlY29tcHJlc3MoZDApLCBwaWVjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkby5kZWNvbXByZXNzKGQxKSwgcGllY2VbMTAwOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG8uZGVjb21wcmVzcyhkMiksIHBpZWNlWzotMTAwXSkKKwogICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfaW5jb21wbGV0ZV9zdHJlYW0oc2VsZik6CiAgICAgICAgICMgVGhpcyBpcyAnZm9vJywgZGVmbGF0ZWQKICAgICAgICAgeCA9IGIneFx4OWNLXHhjYlx4Y2ZceDA3XHgwMFx4MDJceDgyXHgwMUUnCkBAIC00MzQsNiArNDY3LDI2IEBACiAgICAgICAgIHkgKz0gZGNvLmZsdXNoKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCBiJ2ZvbycpCiAKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzX2VvZihzZWxmKToKKyAgICAgICAgeCA9IGIneFx4OWNLXHhjYlx4Y2ZceDA3XHgwMFx4MDJceDgyXHgwMUUnICAjICdmb28nCisgICAgICAgIGRjbyA9IHpsaWIuZGVjb21wcmVzc29iaigpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZGNvLmVvZikKKyAgICAgICAgZGNvLmRlY29tcHJlc3MoeFs6LTVdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRjby5lb2YpCisgICAgICAgIGRjby5kZWNvbXByZXNzKHhbLTU6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRjby5lb2YpCisgICAgICAgIGRjby5mbHVzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkY28uZW9mKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc19lb2ZfaW5jb21wbGV0ZV9zdHJlYW0oc2VsZik6CisgICAgICAgIHggPSBiJ3hceDljS1x4Y2JceGNmXHgwN1x4MDBceDAyXHg4Mlx4MDFFJyAgIyAnZm9vJworICAgICAgICBkY28gPSB6bGliLmRlY29tcHJlc3NvYmooKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRjby5lb2YpCisgICAgICAgIGRjby5kZWNvbXByZXNzKHhbOi01XSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkY28uZW9mKQorICAgICAgICBkY28uZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRjby5lb2YpCisKICAgICBkZWYgdGVzdF9kZWNvbXByZXNzX3VudXNlZF9kYXRhKHNlbGYpOgogICAgICAgICAjIFJlcGVhdGVkIGNhbGxzIHRvIGRlY29tcHJlc3MoKSBhZnRlciBFT0Ygc2hvdWxkIGFjY3VtdWxhdGUgZGF0YSBpbgogICAgICAgICAjIGRjby51bnVzZWRfZGF0YSwgaW5zdGVhZCBvZiBqdXN0IHN0b3JpbmcgdGhlIGFyZyB0byB0aGUgbGFzdCBjYWxsLgpAQCAtNDU1LDYgKzUwOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhICs9IGRjby5kZWNvbXByZXNzKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkY28udW5jb25zdW1lZF90YWlsICsgeFtpIDogaSArIHN0ZXBdLCBtYXhsZW4pCiAgICAgICAgICAgICAgICAgZGF0YSArPSBkY28uZmx1c2goKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkY28uZW9mKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgc291cmNlKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGNvLnVuY29uc3VtZWRfdGFpbCwgYicnKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGNvLnVudXNlZF9kYXRhLCByZW1haW5kZXIpCkBAIC01NDcsMTAgKzYwMSw4IEBACiAgICAgICAgIGRlY29tcHJlc3MgPSBsYW1iZGEgczogZC5kZWNvbXByZXNzKHMpICsgZC5mbHVzaCgpCiAgICAgICAgIHNlbGYuY2hlY2tfYmlnX2RlY29tcHJlc3NfYnVmZmVyKHNpemUsIGRlY29tcHJlc3MpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RyArIDEwMCwgbWVtdXNlPTEpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgKyAxMDAsIG1lbXVzZT0xLCBkcnlfcnVuPUZhbHNlKQogICAgIGRlZiB0ZXN0X2xlbmd0aF9vdmVyZmxvdyhzZWxmLCBzaXplKToKLSAgICAgICAgaWYgc2l6ZSA8IF80RyArIDEwMDoKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5vdCBlbm91Z2ggZnJlZSBtZW1vcnksIG5lZWQgYXQgbGVhc3QgNCBHQiIpCiAgICAgICAgIGRhdGEgPSBiJ3gnICogc2l6ZQogICAgICAgICBjID0gemxpYi5jb21wcmVzc29iaigxKQogICAgICAgICBkID0gemxpYi5kZWNvbXByZXNzb2JqKCkKQEAgLTY1MSw2ICs3MDMsNyBAQAogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCisgICAgICAgIFZlcnNpb25UZXN0Q2FzZSwKICAgICAgICAgQ2hlY2tzdW1UZXN0Q2FzZSwKICAgICAgICAgQ2hlY2tzdW1CaWdCdWZmZXJUZXN0Q2FzZSwKICAgICAgICAgRXhjZXB0aW9uVGVzdENhc2UsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0YnoyX2JpZ21lbS5iejIgYi9MaWIvdGVzdC90ZXN0YnoyX2JpZ21lbS5iejIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YTQ2MTYuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdGJ6Ml9iaWdtZW0uYnoyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGhyZWFkZWRfaW1wb3J0X2hhbmdlcnMucHkgYi9MaWIvdGVzdC90aHJlYWRlZF9pbXBvcnRfaGFuZ2Vycy5weQppbmRleCBhZGYwM2UzLi41NDg0ZTYwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90aHJlYWRlZF9pbXBvcnRfaGFuZ2Vycy5weQorKysgYi9MaWIvdGVzdC90aHJlYWRlZF9pbXBvcnRfaGFuZ2Vycy5weQpAQCAtMzUsOCArMzUsMTEgQEAKICAgICAgICAgKCJvcy5wYXRoLmFic3BhdGgiLCBvcy5wYXRoLmFic3BhdGgsICgnLicsKSksCiAgICAgICAgIF06CiAKLSAgICB0ID0gV29ya2VyKGZ1bmMsIGFyZ3MpCi0gICAgdC5zdGFydCgpCi0gICAgdC5qb2luKFRJTUVPVVQpCi0gICAgaWYgdC5pc19hbGl2ZSgpOgotICAgICAgICBlcnJvcnMuYXBwZW5kKCIlcyBhcHBlYXJlZCB0byBoYW5nIiAlIG5hbWUpCisgICAgdHJ5OgorICAgICAgICB0ID0gV29ya2VyKGZ1bmMsIGFyZ3MpCisgICAgICAgIHQuc3RhcnQoKQorICAgICAgICB0LmpvaW4oVElNRU9VVCkKKyAgICAgICAgaWYgdC5pc19hbGl2ZSgpOgorICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgiJXMgYXBwZWFyZWQgdG8gaGFuZyIgJSBuYW1lKQorICAgIGZpbmFsbHk6CisgICAgICAgIGRlbCB0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90b2tlbml6ZV90ZXN0cy50eHQgYi9MaWIvdGVzdC90b2tlbml6ZV90ZXN0cy50eHQKaW5kZXggMDZjODNiMC4uMmM1ZmIxMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdG9rZW5pemVfdGVzdHMudHh0CisrKyBiL0xpYi90ZXN0L3Rva2VuaXplX3Rlc3RzLnR4dApAQCAtMTE0LDggKzExNCwxMiBAQAogeSA9IGIiYWJjIiArIEIiQUJDIgogeCA9IGJyJ2FiYycgKyBCcidBQkMnICsgYlInQUJDJyArIEJSJ0FCQycKIHkgPSBiciJhYmMiICsgQnIiQUJDIiArIGJSIkFCQyIgKyBCUiJBQkMiCit4ID0gcmInYWJjJyArIHJCJ0FCQycgKyBSYidBQkMnICsgUkInQUJDJworeSA9IHJiImFiYyIgKyByQiJBQkMiICsgUmIiQUJDIiArIFJCIkFCQyIKIHggPSBicidcXCcgKyBCUidcXCcKK3ggPSByYidcXCcgKyBSQidcXCcKIHggPSBicidcJycgKyAnJworeCA9IHJiJ1wnJyArICcnCiB5ID0gYnInJycKIGZvbyBiYXIgXFwKIGJheicnJyArIEJSJycnCkBAIC0xMjQsNiArMTI4LDEwIEBACiBiYXIgXFwgYmF6CiAiIiIgKyBiUicnJ3NwYW0KICcnJworeSA9IHJCIiIiZm9vCitiYXIgXFwgYmF6CisiIiIgKyBSYicnJ3NwYW0KKycnJwogCiAjIEluZGVudGF0aW9uCiBpZiAxOgpkaWZmIC0tZ2l0IGEvTGliL3RleHR3cmFwLnB5IGIvTGliL3RleHR3cmFwLnB5CmluZGV4IGRmYjQwMDUuLjcwMjRkNGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXh0d3JhcC5weQorKysgYi9MaWIvdGV4dHdyYXAucHkKQEAgLTUsOSArNSw5IEBACiAjIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMyBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4KICMgV3JpdHRlbiBieSBHcmVnIFdhcmQgPGd3YXJkQHB5dGhvbi5uZXQ+CiAKLWltcG9ydCBzdHJpbmcsIHJlCitpbXBvcnQgcmUKIAotX19hbGxfXyA9IFsnVGV4dFdyYXBwZXInLCAnd3JhcCcsICdmaWxsJywgJ2RlZGVudCddCitfX2FsbF9fID0gWydUZXh0V3JhcHBlcicsICd3cmFwJywgJ2ZpbGwnLCAnZGVkZW50JywgJ2luZGVudCddCiAKICMgSGFyZGNvZGUgdGhlIHJlY29nbml6ZWQgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHRvIHRoZSBVUy1BU0NJSQogIyB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMuICBUaGUgbWFpbiByZWFzb24gZm9yIGRvaW5nIHRoaXMgaXMgdGhhdCBpbgpAQCAtMzksOCArMzksMTEgQEAKICAgICAgICAgb2Ygd3JhcHBlZCBvdXRwdXQ7IGFsc28gY291bnRzIHRvd2FyZHMgZWFjaCBsaW5lJ3Mgd2lkdGguCiAgICAgICBleHBhbmRfdGFicyAoZGVmYXVsdDogdHJ1ZSkKICAgICAgICAgRXhwYW5kIHRhYnMgaW4gaW5wdXQgdGV4dCB0byBzcGFjZXMgYmVmb3JlIGZ1cnRoZXIgcHJvY2Vzc2luZy4KLSAgICAgICAgRWFjaCB0YWIgd2lsbCBiZWNvbWUgMSAuLiA4IHNwYWNlcywgZGVwZW5kaW5nIG9uIGl0cyBwb3NpdGlvbiBpbgotICAgICAgICBpdHMgbGluZS4gIElmIGZhbHNlLCBlYWNoIHRhYiBpcyB0cmVhdGVkIGFzIGEgc2luZ2xlIGNoYXJhY3Rlci4KKyAgICAgICAgRWFjaCB0YWIgd2lsbCBiZWNvbWUgMCAuLiAndGFic2l6ZScgc3BhY2VzLCBkZXBlbmRpbmcgb24gaXRzIHBvc2l0aW9uCisgICAgICAgIGluIGl0cyBsaW5lLiAgSWYgZmFsc2UsIGVhY2ggdGFiIGlzIHRyZWF0ZWQgYXMgYSBzaW5nbGUgY2hhcmFjdGVyLgorICAgICAgdGFic2l6ZSAoZGVmYXVsdDogOCkKKyAgICAgICAgRXhwYW5kIHRhYnMgaW4gaW5wdXQgdGV4dCB0byAwIC4uICd0YWJzaXplJyBzcGFjZXMsIHVubGVzcworICAgICAgICAnZXhwYW5kX3RhYnMnIGlzIGZhbHNlLgogICAgICAgcmVwbGFjZV93aGl0ZXNwYWNlIChkZWZhdWx0OiB0cnVlKQogICAgICAgICBSZXBsYWNlIGFsbCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgaW4gdGhlIGlucHV0IHRleHQgYnkgc3BhY2VzCiAgICAgICAgIGFmdGVyIHRhYiBleHBhbnNpb24uICBOb3RlIHRoYXQgaWYgZXhwYW5kX3RhYnMgaXMgZmFsc2UgYW5kCkBAIC0xMDAsNyArMTAzLDggQEAKICAgICAgICAgICAgICAgICAgZml4X3NlbnRlbmNlX2VuZGluZ3M9RmFsc2UsCiAgICAgICAgICAgICAgICAgIGJyZWFrX2xvbmdfd29yZHM9VHJ1ZSwKICAgICAgICAgICAgICAgICAgZHJvcF93aGl0ZXNwYWNlPVRydWUsCi0gICAgICAgICAgICAgICAgIGJyZWFrX29uX2h5cGhlbnM9VHJ1ZSk6CisgICAgICAgICAgICAgICAgIGJyZWFrX29uX2h5cGhlbnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgdGFic2l6ZT04KToKICAgICAgICAgc2VsZi53aWR0aCA9IHdpZHRoCiAgICAgICAgIHNlbGYuaW5pdGlhbF9pbmRlbnQgPSBpbml0aWFsX2luZGVudAogICAgICAgICBzZWxmLnN1YnNlcXVlbnRfaW5kZW50ID0gc3Vic2VxdWVudF9pbmRlbnQKQEAgLTExMCw2ICsxMTQsNyBAQAogICAgICAgICBzZWxmLmJyZWFrX2xvbmdfd29yZHMgPSBicmVha19sb25nX3dvcmRzCiAgICAgICAgIHNlbGYuZHJvcF93aGl0ZXNwYWNlID0gZHJvcF93aGl0ZXNwYWNlCiAgICAgICAgIHNlbGYuYnJlYWtfb25faHlwaGVucyA9IGJyZWFrX29uX2h5cGhlbnMKKyAgICAgICAgc2VsZi50YWJzaXplID0gdGFic2l6ZQogCiAKICAgICAjIC0tIFByaXZhdGUgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTIzLDcgKzEyOCw3IEBACiAgICAgICAgIGJlY29tZXMgIiBmb28gICAgYmFyICBiYXoiLgogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5leHBhbmRfdGFiczoKLSAgICAgICAgICAgIHRleHQgPSB0ZXh0LmV4cGFuZHRhYnMoKQorICAgICAgICAgICAgdGV4dCA9IHRleHQuZXhwYW5kdGFicyhzZWxmLnRhYnNpemUpCiAgICAgICAgIGlmIHNlbGYucmVwbGFjZV93aGl0ZXNwYWNlOgogICAgICAgICAgICAgdGV4dCA9IHRleHQudHJhbnNsYXRlKHNlbGYudW5pY29kZV93aGl0ZXNwYWNlX3RyYW5zKQogICAgICAgICByZXR1cm4gdGV4dApAQCAtMzgxLDYgKzM4NiwyNSBAQAogICAgICAgICB0ZXh0ID0gcmUuc3ViKHInKD9tKV4nICsgbWFyZ2luLCAnJywgdGV4dCkKICAgICByZXR1cm4gdGV4dAogCisKK2RlZiBpbmRlbnQodGV4dCwgcHJlZml4LCBwcmVkaWNhdGU9Tm9uZSk6CisgICAgIiIiQWRkcyAncHJlZml4JyB0byB0aGUgYmVnaW5uaW5nIG9mIHNlbGVjdGVkIGxpbmVzIGluICd0ZXh0Jy4KKworICAgIElmICdwcmVkaWNhdGUnIGlzIHByb3ZpZGVkLCAncHJlZml4JyB3aWxsIG9ubHkgYmUgYWRkZWQgdG8gdGhlIGxpbmVzCisgICAgd2hlcmUgJ3ByZWRpY2F0ZShsaW5lKScgaXMgVHJ1ZS4gSWYgJ3ByZWRpY2F0ZScgaXMgbm90IHByb3ZpZGVkLAorICAgIGl0IHdpbGwgZGVmYXVsdCB0byBhZGRpbmcgJ3ByZWZpeCcgdG8gYWxsIG5vbi1lbXB0eSBsaW5lcyB0aGF0IGRvIG5vdAorICAgIGNvbnNpc3Qgc29sZWx5IG9mIHdoaXRlc3BhY2UgY2hhcmFjdGVycy4KKyAgICAiIiIKKyAgICBpZiBwcmVkaWNhdGUgaXMgTm9uZToKKyAgICAgICAgZGVmIHByZWRpY2F0ZShsaW5lKToKKyAgICAgICAgICAgIHJldHVybiBsaW5lLnN0cmlwKCkKKworICAgIGRlZiBwcmVmaXhlZF9saW5lcygpOgorICAgICAgICBmb3IgbGluZSBpbiB0ZXh0LnNwbGl0bGluZXMoVHJ1ZSk6CisgICAgICAgICAgICB5aWVsZCAocHJlZml4ICsgbGluZSBpZiBwcmVkaWNhdGUobGluZSkgZWxzZSBsaW5lKQorICAgIHJldHVybiAnJy5qb2luKHByZWZpeGVkX2xpbmVzKCkpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICAjcHJpbnQgZGVkZW50KCJcdGZvb1xuXHRiYXIiKQogICAgICNwcmludCBkZWRlbnQoIiAgXHRoZWxsbyB0aGVyZVxuICBcdCAgaG93IGFyZSB5b3U/IikKZGlmZiAtLWdpdCBhL0xpYi90aHJlYWRpbmcucHkgYi9MaWIvdGhyZWFkaW5nLnB5CmluZGV4IDU4ZmZhN2UuLjZjMzRkNDkgMTAwNjQ0Ci0tLSBhL0xpYi90aHJlYWRpbmcucHkKKysrIGIvTGliL3RocmVhZGluZy5weQpAQCAtMyw3ICszLDExIEBACiBpbXBvcnQgc3lzIGFzIF9zeXMKIGltcG9ydCBfdGhyZWFkCiAKLWZyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZSwgc2xlZXAgYXMgX3NsZWVwCitmcm9tIHRpbWUgaW1wb3J0IHNsZWVwIGFzIF9zbGVlcAordHJ5OgorICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCiBmcm9tIHRyYWNlYmFjayBpbXBvcnQgZm9ybWF0X2V4YyBhcyBfZm9ybWF0X2V4YwogZnJvbSBfd2Vha3JlZnNldCBpbXBvcnQgV2Vha1NldAogCkBAIC0xOSwxMiArMjMsMTIgQEAKIAogX19hbGxfXyA9IFsnYWN0aXZlX2NvdW50JywgJ0NvbmRpdGlvbicsICdjdXJyZW50X3RocmVhZCcsICdlbnVtZXJhdGUnLCAnRXZlbnQnLAogICAgICAgICAgICAnTG9jaycsICdSTG9jaycsICdTZW1hcGhvcmUnLCAnQm91bmRlZFNlbWFwaG9yZScsICdUaHJlYWQnLCAnQmFycmllcicsCi0gICAgICAgICAgICdUaW1lcicsICdzZXRwcm9maWxlJywgJ3NldHRyYWNlJywgJ2xvY2FsJywgJ3N0YWNrX3NpemUnXQorICAgICAgICAgICAnVGltZXInLCAnVGhyZWFkRXJyb3InLCAnc2V0cHJvZmlsZScsICdzZXR0cmFjZScsICdsb2NhbCcsICdzdGFja19zaXplJ10KIAogIyBSZW5hbWUgc29tZSBzdHVmZiBzbyAiZnJvbSB0aHJlYWRpbmcgaW1wb3J0ICoiIGlzIHNhZmUKIF9zdGFydF9uZXdfdGhyZWFkID0gX3RocmVhZC5zdGFydF9uZXdfdGhyZWFkCiBfYWxsb2NhdGVfbG9jayA9IF90aHJlYWQuYWxsb2NhdGVfbG9jawotX2dldF9pZGVudCA9IF90aHJlYWQuZ2V0X2lkZW50CitnZXRfaWRlbnQgPSBfdGhyZWFkLmdldF9pZGVudAogVGhyZWFkRXJyb3IgPSBfdGhyZWFkLmVycm9yCiB0cnk6CiAgICAgX0NSTG9jayA9IF90aHJlYWQuUkxvY2sKQEAgLTM0LDQwICszOCw2IEBACiBkZWwgX3RocmVhZAogCiAKLSMgRGVidWcgc3VwcG9ydCAoYWRhcHRlZCBmcm9tIGlob29rcy5weSkuCi0KLV9WRVJCT1NFID0gRmFsc2UKLQotaWYgX19kZWJ1Z19fOgotCi0gICAgY2xhc3MgX1ZlcmJvc2Uob2JqZWN0KToKLQotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyYm9zZT1Ob25lKToKLSAgICAgICAgICAgIGlmIHZlcmJvc2UgaXMgTm9uZToKLSAgICAgICAgICAgICAgICB2ZXJib3NlID0gX1ZFUkJPU0UKLSAgICAgICAgICAgIHNlbGYuX3ZlcmJvc2UgPSB2ZXJib3NlCi0KLSAgICAgICAgZGVmIF9ub3RlKHNlbGYsIGZvcm1hdCwgKmFyZ3MpOgotICAgICAgICAgICAgaWYgc2VsZi5fdmVyYm9zZToKLSAgICAgICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQgJSBhcmdzCi0gICAgICAgICAgICAgICAgIyBJc3N1ZSAjNDE4ODogY2FsbGluZyBjdXJyZW50X3RocmVhZCgpIGNhbiBpbmN1ciBhbiBpbmZpbml0ZQotICAgICAgICAgICAgICAgICMgcmVjdXJzaW9uIGlmIGl0IGhhcyB0byBjcmVhdGUgYSBEdW1teVRocmVhZCBvbiB0aGUgZmx5LgotICAgICAgICAgICAgICAgIGlkZW50ID0gX2dldF9pZGVudCgpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBuYW1lID0gX2FjdGl2ZVtpZGVudF0ubmFtZQotICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICI8T1MgdGhyZWFkICVkPiIgJSBpZGVudAotICAgICAgICAgICAgICAgIGZvcm1hdCA9ICIlczogJXNcbiIgJSAobmFtZSwgZm9ybWF0KQotICAgICAgICAgICAgICAgIF9zeXMuc3RkZXJyLndyaXRlKGZvcm1hdCkKLQotZWxzZToKLSAgICAjIERpc2FibGUgdGhpcyB3aGVuIHVzaW5nICJweXRob24gLU8iCi0gICAgY2xhc3MgX1ZlcmJvc2Uob2JqZWN0KToKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZlcmJvc2U9Tm9uZSk6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGRlZiBfbm90ZShzZWxmLCAqYXJncyk6Ci0gICAgICAgICAgICBwYXNzCi0KICMgU3VwcG9ydCBmb3IgcHJvZmlsZSBhbmQgdHJhY2UgaG9va3MKIAogX3Byb2ZpbGVfaG9vayA9IE5vbmUKQEAgLTg1LDE3ICs1NSwxNCBAQAogCiBMb2NrID0gX2FsbG9jYXRlX2xvY2sKIAotZGVmIFJMb2NrKHZlcmJvc2U9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICBpZiB2ZXJib3NlIGlzIE5vbmU6Ci0gICAgICAgIHZlcmJvc2UgPSBfVkVSQk9TRQotICAgIGlmIChfX2RlYnVnX18gYW5kIHZlcmJvc2UpIG9yIF9DUkxvY2sgaXMgTm9uZToKLSAgICAgICAgcmV0dXJuIF9QeVJMb2NrKHZlcmJvc2UsICphcmdzLCAqKmt3YXJncykKK2RlZiBSTG9jaygqYXJncywgKiprd2FyZ3MpOgorICAgIGlmIF9DUkxvY2sgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIF9QeVJMb2NrKCphcmdzLCAqKmt3YXJncykKICAgICByZXR1cm4gX0NSTG9jaygqYXJncywgKiprd2FyZ3MpCiAKLWNsYXNzIF9STG9jayhfVmVyYm9zZSk6CitjbGFzcyBfUkxvY2s6CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyYm9zZT1Ob25lKToKLSAgICAgICAgX1ZlcmJvc2UuX19pbml0X18oc2VsZiwgdmVyYm9zZSkKKyAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYuX2Jsb2NrID0gX2FsbG9jYXRlX2xvY2soKQogICAgICAgICBzZWxmLl9vd25lciA9IE5vbmUKICAgICAgICAgc2VsZi5fY291bnQgPSAwCkBAIC0xMTAsMzcgKzc3LDI1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIG93bmVyLCBzZWxmLl9jb3VudCkKIAogICAgIGRlZiBhY3F1aXJlKHNlbGYsIGJsb2NraW5nPVRydWUsIHRpbWVvdXQ9LTEpOgotICAgICAgICBtZSA9IF9nZXRfaWRlbnQoKQorICAgICAgICBtZSA9IGdldF9pZGVudCgpCiAgICAgICAgIGlmIHNlbGYuX293bmVyID09IG1lOgogICAgICAgICAgICAgc2VsZi5fY291bnQgPSBzZWxmLl9jb3VudCArIDEKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5hY3F1aXJlKCVzKTogcmVjdXJzaXZlIHN1Y2Nlc3MiLCBzZWxmLCBibG9ja2luZykKICAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgIHJjID0gc2VsZi5fYmxvY2suYWNxdWlyZShibG9ja2luZywgdGltZW91dCkKICAgICAgICAgaWYgcmM6CiAgICAgICAgICAgICBzZWxmLl9vd25lciA9IG1lCiAgICAgICAgICAgICBzZWxmLl9jb3VudCA9IDEKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5hY3F1aXJlKCVzKTogaW5pdGlhbCBzdWNjZXNzIiwgc2VsZiwgYmxvY2tpbmcpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuYWNxdWlyZSglcyk6IGZhaWx1cmUiLCBzZWxmLCBibG9ja2luZykKICAgICAgICAgcmV0dXJuIHJjCiAKICAgICBfX2VudGVyX18gPSBhY3F1aXJlCiAKICAgICBkZWYgcmVsZWFzZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fb3duZXIgIT0gX2dldF9pZGVudCgpOgorICAgICAgICBpZiBzZWxmLl9vd25lciAhPSBnZXRfaWRlbnQoKToKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiY2Fubm90IHJlbGVhc2UgdW4tYWNxdWlyZWQgbG9jayIpCiAgICAgICAgIHNlbGYuX2NvdW50ID0gY291bnQgPSBzZWxmLl9jb3VudCAtIDEKICAgICAgICAgaWYgbm90IGNvdW50OgogICAgICAgICAgICAgc2VsZi5fb3duZXIgPSBOb25lCiAgICAgICAgICAgICBzZWxmLl9ibG9jay5yZWxlYXNlKCkKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5yZWxlYXNlKCk6IGZpbmFsIHJlbGVhc2UiLCBzZWxmKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLnJlbGVhc2UoKTogbm9uLWZpbmFsIHJlbGVhc2UiLCBzZWxmKQogCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHQsIHYsIHRiKToKICAgICAgICAgc2VsZi5yZWxlYXNlKCkKQEAgLTE1MCwxMiArMTA1LDEwIEBACiAgICAgZGVmIF9hY3F1aXJlX3Jlc3RvcmUoc2VsZiwgc3RhdGUpOgogICAgICAgICBzZWxmLl9ibG9jay5hY3F1aXJlKCkKICAgICAgICAgc2VsZi5fY291bnQsIHNlbGYuX293bmVyID0gc3RhdGUKLSAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuX2FjcXVpcmVfcmVzdG9yZSgpIiwgc2VsZikKIAogICAgIGRlZiBfcmVsZWFzZV9zYXZlKHNlbGYpOgotICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5fcmVsZWFzZV9zYXZlKCkiLCBzZWxmKQorICAgICAgICBpZiBzZWxmLl9jb3VudCA9PSAwOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJjYW5ub3QgcmVsZWFzZSB1bi1hY3F1aXJlZCBsb2NrIikKICAgICAgICAgY291bnQgPSBzZWxmLl9jb3VudAogICAgICAgICBzZWxmLl9jb3VudCA9IDAKICAgICAgICAgb3duZXIgPSBzZWxmLl9vd25lcgpAQCAtMTY0LDE4ICsxMTcsMTQgQEAKICAgICAgICAgcmV0dXJuIChjb3VudCwgb3duZXIpCiAKICAgICBkZWYgX2lzX293bmVkKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fb3duZXIgPT0gX2dldF9pZGVudCgpCisgICAgICAgIHJldHVybiBzZWxmLl9vd25lciA9PSBnZXRfaWRlbnQoKQogCiBfUHlSTG9jayA9IF9STG9jawogCiAKLWRlZiBDb25kaXRpb24oKmFyZ3MsICoqa3dhcmdzKToKLSAgICByZXR1cm4gX0NvbmRpdGlvbigqYXJncywgKiprd2FyZ3MpCitjbGFzcyBDb25kaXRpb246CiAKLWNsYXNzIF9Db25kaXRpb24oX1ZlcmJvc2UpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2s9Tm9uZSwgdmVyYm9zZT1Ob25lKToKLSAgICAgICAgX1ZlcmJvc2UuX19pbml0X18oc2VsZiwgdmVyYm9zZSkKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9jaz1Ob25lKToKICAgICAgICAgaWYgbG9jayBpcyBOb25lOgogICAgICAgICAgICAgbG9jayA9IFJMb2NrKCkKICAgICAgICAgc2VsZi5fbG9jayA9IGxvY2sKQEAgLTIzNCwyMyArMTgzLDE2IEBACiAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgd2FpdGVyLmFjcXVpcmUoKQogICAgICAgICAgICAgICAgIGdvdGl0ID0gVHJ1ZQotICAgICAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMud2FpdCgpOiBnb3QgaXQiLCBzZWxmKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0ID4gMDoKICAgICAgICAgICAgICAgICAgICAgZ290aXQgPSB3YWl0ZXIuYWNxdWlyZShUcnVlLCB0aW1lb3V0KQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGdvdGl0ID0gd2FpdGVyLmFjcXVpcmUoRmFsc2UpCiAgICAgICAgICAgICAgICAgaWYgbm90IGdvdGl0OgotICAgICAgICAgICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy53YWl0KCVzKTogdGltZWQgb3V0Iiwgc2VsZiwgdGltZW91dCkKICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fd2FpdGVycy5yZW1vdmUod2FpdGVyKQogICAgICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy53YWl0KCVzKTogZ290IGl0Iiwgc2VsZiwgdGltZW91dCkKICAgICAgICAgICAgIHJldHVybiBnb3RpdAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5fYWNxdWlyZV9yZXN0b3JlKHNhdmVkX3N0YXRlKQpAQCAtMjY2LDE5ICsyMDgsOSBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHdhaXR0aW1lID0gZW5kdGltZSAtIF90aW1lKCkKICAgICAgICAgICAgICAgICAgICAgaWYgd2FpdHRpbWUgPD0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy53YWl0X2ZvciglciwgJXIpOiBUaW1lZCBvdXQuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIHByZWRpY2F0ZSwgdGltZW91dCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMud2FpdF9mb3IoJXIsICVyKTogV2FpdGluZyB3aXRoIHRpbWVvdXQ9JXMuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIHByZWRpY2F0ZSwgdGltZW91dCwgd2FpdHRpbWUpCiAgICAgICAgICAgICBzZWxmLndhaXQod2FpdHRpbWUpCiAgICAgICAgICAgICByZXN1bHQgPSBwcmVkaWNhdGUoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLndhaXRfZm9yKCVyLCAlcik6IFN1Y2Nlc3MuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIHByZWRpY2F0ZSwgdGltZW91dCkKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIG5vdGlmeShzZWxmLCBuPTEpOgpAQCAtMjg3LDExICsyMTksNyBAQAogICAgICAgICBfX3dhaXRlcnMgPSBzZWxmLl93YWl0ZXJzCiAgICAgICAgIHdhaXRlcnMgPSBfX3dhaXRlcnNbOm5dCiAgICAgICAgIGlmIG5vdCB3YWl0ZXJzOgotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLm5vdGlmeSgpOiBubyB3YWl0ZXJzIiwgc2VsZikKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLl9ub3RlKCIlcy5ub3RpZnkoKTogbm90aWZ5aW5nICVkIHdhaXRlciVzIiwgc2VsZiwgbiwKLSAgICAgICAgICAgICAgICAgICBuIT0xIGFuZCAicyIgb3IgIiIpCiAgICAgICAgIGZvciB3YWl0ZXIgaW4gd2FpdGVyczoKICAgICAgICAgICAgIHdhaXRlci5yZWxlYXNlKCkKICAgICAgICAgICAgIHRyeToKQEAgLTMwNSwxNyArMjMzLDEzIEBACiAgICAgbm90aWZ5QWxsID0gbm90aWZ5X2FsbAogCiAKLWRlZiBTZW1hcGhvcmUoKmFyZ3MsICoqa3dhcmdzKToKLSAgICByZXR1cm4gX1NlbWFwaG9yZSgqYXJncywgKiprd2FyZ3MpCi0KLWNsYXNzIF9TZW1hcGhvcmUoX1ZlcmJvc2UpOgorY2xhc3MgU2VtYXBob3JlOgogCiAgICAgIyBBZnRlciBUaW0gUGV0ZXJzJyBzZW1hcGhvcmUgY2xhc3MsIGJ1dCBub3QgcXVpdGUgdGhlIHNhbWUgKG5vIG1heGltdW0pCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9MSwgdmVyYm9zZT1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9MSk6CiAgICAgICAgIGlmIHZhbHVlIDwgMDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNlbWFwaG9yZSBpbml0aWFsIHZhbHVlIG11c3QgYmUgPj0gMCIpCi0gICAgICAgIF9WZXJib3NlLl9faW5pdF9fKHNlbGYsIHZlcmJvc2UpCiAgICAgICAgIHNlbGYuX2NvbmQgPSBDb25kaXRpb24oTG9jaygpKQogICAgICAgICBzZWxmLl92YWx1ZSA9IHZhbHVlCiAKQEAgLTMyOCw5ICsyNTIsNiBAQAogICAgICAgICB3aGlsZSBzZWxmLl92YWx1ZSA9PSAwOgogICAgICAgICAgICAgaWYgbm90IGJsb2NraW5nOgogICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuYWNxdWlyZSglcyk6IGJsb2NrZWQgd2FpdGluZywgdmFsdWU9JXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgYmxvY2tpbmcsIHNlbGYuX3ZhbHVlKQogICAgICAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBpZiBlbmR0aW1lIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dApAQCAtMzQxLDkgKzI2Miw2IEBACiAgICAgICAgICAgICBzZWxmLl9jb25kLndhaXQodGltZW91dCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX3ZhbHVlID0gc2VsZi5fdmFsdWUgLSAxCi0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuYWNxdWlyZTogc3VjY2VzcywgdmFsdWU9JXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgc2VsZi5fdmFsdWUpCiAgICAgICAgICAgICByYyA9IFRydWUKICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKICAgICAgICAgcmV0dXJuIHJjCkBAIC0zNTMsOSArMjcxLDYgQEAKICAgICBkZWYgcmVsZWFzZShzZWxmKToKICAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKICAgICAgICAgc2VsZi5fdmFsdWUgPSBzZWxmLl92YWx1ZSArIDEKLSAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMucmVsZWFzZTogc3VjY2VzcywgdmFsdWU9JXMiLAotICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBzZWxmLl92YWx1ZSkKICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnkoKQogICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogCkBAIC0zNjMsMzAgKzI3OCwyMyBAQAogICAgICAgICBzZWxmLnJlbGVhc2UoKQogCiAKLWRlZiBCb3VuZGVkU2VtYXBob3JlKCphcmdzLCAqKmt3YXJncyk6Ci0gICAgcmV0dXJuIF9Cb3VuZGVkU2VtYXBob3JlKCphcmdzLCAqKmt3YXJncykKLQotY2xhc3MgX0JvdW5kZWRTZW1hcGhvcmUoX1NlbWFwaG9yZSk6CitjbGFzcyBCb3VuZGVkU2VtYXBob3JlKFNlbWFwaG9yZSk6CiAgICAgIiIiU2VtYXBob3JlIHRoYXQgY2hlY2tzIHRoYXQgIyByZWxlYXNlcyBpcyA8PSAjIGFjcXVpcmVzIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlPTEsIHZlcmJvc2U9Tm9uZSk6Ci0gICAgICAgIF9TZW1hcGhvcmUuX19pbml0X18oc2VsZiwgdmFsdWUsIHZlcmJvc2UpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlPTEpOgorICAgICAgICBTZW1hcGhvcmUuX19pbml0X18oc2VsZiwgdmFsdWUpCiAgICAgICAgIHNlbGYuX2luaXRpYWxfdmFsdWUgPSB2YWx1ZQogCiAgICAgZGVmIHJlbGVhc2Uoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX3ZhbHVlID49IHNlbGYuX2luaXRpYWxfdmFsdWU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJTZW1hcGhvcmUgcmVsZWFzZWQgdG9vIG1hbnkgdGltZXMiKQotICAgICAgICByZXR1cm4gX1NlbWFwaG9yZS5yZWxlYXNlKHNlbGYpCisgICAgICAgIHJldHVybiBTZW1hcGhvcmUucmVsZWFzZShzZWxmKQogCiAKLWRlZiBFdmVudCgqYXJncywgKiprd2FyZ3MpOgotICAgIHJldHVybiBfRXZlbnQoKmFyZ3MsICoqa3dhcmdzKQotCi1jbGFzcyBfRXZlbnQoX1ZlcmJvc2UpOgorY2xhc3MgRXZlbnQ6CiAKICAgICAjIEFmdGVyIFRpbSBQZXRlcnMnIGV2ZW50IGNsYXNzICh3aXRob3V0IGlzX3Bvc3RlZCgpKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHZlcmJvc2U9Tm9uZSk6Ci0gICAgICAgIF9WZXJib3NlLl9faW5pdF9fKHNlbGYsIHZlcmJvc2UpCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLl9jb25kID0gQ29uZGl0aW9uKExvY2soKSkKICAgICAgICAgc2VsZi5fZmxhZyA9IEZhbHNlCiAKQEAgLTQzNiwxMyArMzQ0LDEzIEBACiAjIHNpbmNlIHRoZSBwcmV2aW91cyBjeWNsZS4gIEluIGFkZGl0aW9uLCBhICdyZXNldHRpbmcnIHN0YXRlIGV4aXN0cyB3aGljaCBpcwogIyBzaW1pbGFyIHRvICdkcmFpbmluZycgZXhjZXB0IHRoYXQgdGhyZWFkcyBsZWF2ZSB3aXRoIGEgQnJva2VuQmFycmllckVycm9yLAogIyBhbmQgYSAnYnJva2VuJyBzdGF0ZSBpbiB3aGljaCBhbGwgdGhyZWFkcyBnZXQgdGhlIGV4Y2VwdGlvbi4KLWNsYXNzIEJhcnJpZXIoX1ZlcmJvc2UpOgorY2xhc3MgQmFycmllcjoKICAgICAiIiIKICAgICBCYXJyaWVyLiAgVXNlZnVsIGZvciBzeW5jaHJvbml6aW5nIGEgZml4ZWQgbnVtYmVyIG9mIHRocmVhZHMKICAgICBhdCBrbm93biBzeW5jaHJvbml6YXRpb24gcG9pbnRzLiAgVGhyZWFkcyBibG9jayBvbiAnd2FpdCgpJyBhbmQgYXJlCiAgICAgc2ltdWx0YW5lb3VzbHkgb25jZSB0aGV5IGhhdmUgYWxsIG1hZGUgdGhhdCBjYWxsLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJ0aWVzLCBhY3Rpb249Tm9uZSwgdGltZW91dD1Ob25lLCB2ZXJib3NlPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJ0aWVzLCBhY3Rpb249Tm9uZSwgdGltZW91dD1Ob25lKToKICAgICAgICAgIiIiCiAgICAgICAgIENyZWF0ZSBhIGJhcnJpZXIsIGluaXRpYWxpc2VkIHRvICdwYXJ0aWVzJyB0aHJlYWRzLgogICAgICAgICAnYWN0aW9uJyBpcyBhIGNhbGxhYmxlIHdoaWNoLCB3aGVuIHN1cHBsaWVkLCB3aWxsIGJlIGNhbGxlZApAQCAtNDUxLDcgKzM1OSw2IEBACiAgICAgICAgIElmIGEgJ3RpbWVvdXQnIGlzIHByb3ZpZGVkLCBpdCBpcyB1c2VzIGFzIHRoZSBkZWZhdWx0IGZvcgogICAgICAgICBhbGwgc3Vic2VxdWVudCAnd2FpdCgpJyBjYWxscy4KICAgICAgICAgIiIiCi0gICAgICAgIF9WZXJib3NlLl9faW5pdF9fKHNlbGYsIHZlcmJvc2UpCiAgICAgICAgIHNlbGYuX2NvbmQgPSBDb25kaXRpb24oTG9jaygpKQogICAgICAgICBzZWxmLl9hY3Rpb24gPSBhY3Rpb24KICAgICAgICAgc2VsZi5fdGltZW91dCA9IHRpbWVvdXQKQEAgLTYxMiw3ICs1MTksNyBAQAogCiAjIE1haW4gY2xhc3MgZm9yIHRocmVhZHMKIAotY2xhc3MgVGhyZWFkKF9WZXJib3NlKToKK2NsYXNzIFRocmVhZDoKIAogICAgIF9faW5pdGlhbGl6ZWQgPSBGYWxzZQogICAgICMgTmVlZCB0byBzdG9yZSBhIHJlZmVyZW5jZSB0byBzeXMuZXhjX2luZm8gZm9yIHByaW50aW5nCkBAIC02MjUsMTYgKzUzMiwxOCBAQAogICAgICNYWFggX19leGNfY2xlYXIgPSBfc3lzLmV4Y19jbGVhcgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGdyb3VwPU5vbmUsIHRhcmdldD1Ob25lLCBuYW1lPU5vbmUsCi0gICAgICAgICAgICAgICAgIGFyZ3M9KCksIGt3YXJncz1Ob25lLCB2ZXJib3NlPU5vbmUpOgorICAgICAgICAgICAgICAgICBhcmdzPSgpLCBrd2FyZ3M9Tm9uZSwgKiwgZGFlbW9uPU5vbmUpOgogICAgICAgICBhc3NlcnQgZ3JvdXAgaXMgTm9uZSwgImdyb3VwIGFyZ3VtZW50IG11c3QgYmUgTm9uZSBmb3Igbm93IgotICAgICAgICBfVmVyYm9zZS5fX2luaXRfXyhzZWxmLCB2ZXJib3NlKQogICAgICAgICBpZiBrd2FyZ3MgaXMgTm9uZToKICAgICAgICAgICAgIGt3YXJncyA9IHt9CiAgICAgICAgIHNlbGYuX3RhcmdldCA9IHRhcmdldAogICAgICAgICBzZWxmLl9uYW1lID0gc3RyKG5hbWUgb3IgX25ld25hbWUoKSkKICAgICAgICAgc2VsZi5fYXJncyA9IGFyZ3MKICAgICAgICAgc2VsZi5fa3dhcmdzID0ga3dhcmdzCi0gICAgICAgIHNlbGYuX2RhZW1vbmljID0gc2VsZi5fc2V0X2RhZW1vbigpCisgICAgICAgIGlmIGRhZW1vbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2RhZW1vbmljID0gZGFlbW9uCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9kYWVtb25pYyA9IGN1cnJlbnRfdGhyZWFkKCkuZGFlbW9uCiAgICAgICAgIHNlbGYuX2lkZW50ID0gTm9uZQogICAgICAgICBzZWxmLl9zdGFydGVkID0gRXZlbnQoKQogICAgICAgICBzZWxmLl9zdG9wcGVkID0gRmFsc2UKQEAgLTY1MiwxMCArNTYxLDYgQEAKICAgICAgICAgICAgIHNlbGYuX2Jsb2NrLl9faW5pdF9fKCkKICAgICAgICAgc2VsZi5fc3RhcnRlZC5fcmVzZXRfaW50ZXJuYWxfbG9ja3MoKQogCi0gICAgZGVmIF9zZXRfZGFlbW9uKHNlbGYpOgotICAgICAgICAjIE92ZXJyaWRkZW4gaW4gX01haW5UaHJlYWQgYW5kIF9EdW1teVRocmVhZAotICAgICAgICByZXR1cm4gY3VycmVudF90aHJlYWQoKS5kYWVtb24KLQogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgYXNzZXJ0IHNlbGYuX2luaXRpYWxpemVkLCAiVGhyZWFkLl9faW5pdF9fKCkgd2FzIG5vdCBjYWxsZWQiCiAgICAgICAgIHN0YXR1cyA9ICJpbml0aWFsIgpAQCAtNjc1LDggKzU4MCw2IEBACiAKICAgICAgICAgaWYgc2VsZi5fc3RhcnRlZC5pc19zZXQoKToKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigidGhyZWFkcyBjYW4gb25seSBiZSBzdGFydGVkIG9uY2UiKQotICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5zdGFydCgpOiBzdGFydGluZyB0aHJlYWQiLCBzZWxmKQogICAgICAgICB3aXRoIF9hY3RpdmVfbGltYm9fbG9jazoKICAgICAgICAgICAgIF9saW1ib1tzZWxmXSA9IHNlbGYKICAgICAgICAgdHJ5OgpAQCAtNzE3LDcgKzYyMCw3IEBACiAgICAgICAgICAgICByYWlzZQogCiAgICAgZGVmIF9zZXRfaWRlbnQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2lkZW50ID0gX2dldF9pZGVudCgpCisgICAgICAgIHNlbGYuX2lkZW50ID0gZ2V0X2lkZW50KCkKIAogICAgIGRlZiBfYm9vdHN0cmFwX2lubmVyKHNlbGYpOgogICAgICAgICB0cnk6CkBAIC03MjYsMjQgKzYyOSwxNyBAQAogICAgICAgICAgICAgd2l0aCBfYWN0aXZlX2xpbWJvX2xvY2s6CiAgICAgICAgICAgICAgICAgX2FjdGl2ZVtzZWxmLl9pZGVudF0gPSBzZWxmCiAgICAgICAgICAgICAgICAgZGVsIF9saW1ib1tzZWxmXQotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLl9ib290c3RyYXAoKTogdGhyZWFkIHN0YXJ0ZWQiLCBzZWxmKQogCiAgICAgICAgICAgICBpZiBfdHJhY2VfaG9vazoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5fYm9vdHN0cmFwKCk6IHJlZ2lzdGVyaW5nIHRyYWNlIGhvb2siLCBzZWxmKQogICAgICAgICAgICAgICAgIF9zeXMuc2V0dHJhY2UoX3RyYWNlX2hvb2spCiAgICAgICAgICAgICBpZiBfcHJvZmlsZV9ob29rOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLl9ib290c3RyYXAoKTogcmVnaXN0ZXJpbmcgcHJvZmlsZSBob29rIiwgc2VsZikKICAgICAgICAgICAgICAgICBfc3lzLnNldHByb2ZpbGUoX3Byb2ZpbGVfaG9vaykKIAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYucnVuKCkKICAgICAgICAgICAgIGV4Y2VwdCBTeXN0ZW1FeGl0OgotICAgICAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuX2Jvb3RzdHJhcCgpOiByYWlzZWQgU3lzdGVtRXhpdCIsIHNlbGYpCisgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuX2Jvb3RzdHJhcCgpOiB1bmhhbmRsZWQgZXhjZXB0aW9uIiwgc2VsZikKICAgICAgICAgICAgICAgICAjIElmIHN5cy5zdGRlcnIgaXMgbm8gbW9yZSAobW9zdCBsaWtlbHkgZnJvbSBpbnRlcnByZXRlcgogICAgICAgICAgICAgICAgICMgc2h1dGRvd24pIHVzZSBzZWxmLl9zdGRlcnIuICBPdGhlcndpc2Ugc3RpbGwgdXNlIHN5cyAoYXMgaW4KICAgICAgICAgICAgICAgICAjIF9zeXMpIGluIGNhc2Ugc3lzLnN0ZGVyciB3YXMgcmVkZWZpbmVkIHNpbmNlIHRoZSBjcmVhdGlvbiBvZgpAQCAtNzc0LDkgKzY3MCw2IEBACiAgICAgICAgICAgICAgICAgICAgICMgaG9nOyBkZWxldGluZyBldmVyeXRoaW5nIGVsc2UgaXMganVzdCBmb3IgdGhvcm91Z2huZXNzCiAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuX2Jvb3RzdHJhcCgpOiBub3JtYWwgcmV0dXJuIiwgc2VsZikKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgIyBQcmV2ZW50IGEgcmFjZSBpbgogICAgICAgICAgICAgICAgICMgdGVzdF90aHJlYWRpbmcudGVzdF9ub19yZWZjeWNsZV90aHJvdWdoX3RhcmdldCB3aGVuCkBAIC03OTAsNyArNjgzLDcgQEAKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICMgV2UgZG9uJ3QgY2FsbCBzZWxmLl9kZWxldGUoKSBiZWNhdXNlIGl0IGFsc28KICAgICAgICAgICAgICAgICAgICAgIyBncmFicyBfYWN0aXZlX2xpbWJvX2xvY2suCi0gICAgICAgICAgICAgICAgICAgIGRlbCBfYWN0aXZlW19nZXRfaWRlbnQoKV0KKyAgICAgICAgICAgICAgICAgICAgZGVsIF9hY3RpdmVbZ2V0X2lkZW50KCldCiAgICAgICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAKQEAgLTgyNiw3ICs3MTksNyBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdpdGggX2FjdGl2ZV9saW1ib19sb2NrOgotICAgICAgICAgICAgICAgIGRlbCBfYWN0aXZlW19nZXRfaWRlbnQoKV0KKyAgICAgICAgICAgICAgICBkZWwgX2FjdGl2ZVtnZXRfaWRlbnQoKV0KICAgICAgICAgICAgICAgICAjIFRoZXJlIG11c3Qgbm90IGJlIGFueSBweXRob24gY29kZSBiZXR3ZWVuIHRoZSBwcmV2aW91cyBsaW5lCiAgICAgICAgICAgICAgICAgIyBhbmQgYWZ0ZXIgdGhlIGxvY2sgaXMgcmVsZWFzZWQuICBPdGhlcndpc2UgYSB0cmFjaW5nIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgIyBjb3VsZCB0cnkgdG8gYWNxdWlyZSB0aGUgbG9jayBhZ2FpbiBpbiB0aGUgc2FtZSB0aHJlYWQsIChpbgpAQCAtODQzLDI5ICs3MzYsMTggQEAKICAgICAgICAgaWYgc2VsZiBpcyBjdXJyZW50X3RocmVhZCgpOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJjYW5ub3Qgam9pbiBjdXJyZW50IHRocmVhZCIpCiAKLSAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgaWYgbm90IHNlbGYuX3N0b3BwZWQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuam9pbigpOiB3YWl0aW5nIHVudGlsIHRocmVhZCBzdG9wcyIsIHNlbGYpCi0KICAgICAgICAgc2VsZi5fYmxvY2suYWNxdWlyZSgpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKICAgICAgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fc3RvcHBlZDoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYmxvY2sud2FpdCgpCi0gICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5qb2luKCk6IHRocmVhZCBzdG9wcGVkIiwgc2VsZikKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZGVhZGxpbmUgPSBfdGltZSgpICsgdGltZW91dAogICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLl9zdG9wcGVkOgogICAgICAgICAgICAgICAgICAgICBkZWxheSA9IGRlYWRsaW5lIC0gX3RpbWUoKQogICAgICAgICAgICAgICAgICAgICBpZiBkZWxheSA8PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLmpvaW4oKTogdGltZWQgb3V0Iiwgc2VsZikKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Jsb2NrLndhaXQoZGVsYXkpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuam9pbigpOiB0aHJlYWQgc3RvcHBlZCIsIHNlbGYpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLl9ibG9jay5yZWxlYXNlKCkKIApAQCAtOTE3LDEwICs3OTksNyBAQAogCiAjIFRoZSB0aW1lciBjbGFzcyB3YXMgY29udHJpYnV0ZWQgYnkgSXRhbWFyIFNodHVsbC1UcmF1cmluZwogCi1kZWYgVGltZXIoKmFyZ3MsICoqa3dhcmdzKToKLSAgICByZXR1cm4gX1RpbWVyKCphcmdzLCAqKmt3YXJncykKLQotY2xhc3MgX1RpbWVyKFRocmVhZCk6CitjbGFzcyBUaW1lcihUaHJlYWQpOgogICAgICIiIkNhbGwgYSBmdW5jdGlvbiBhZnRlciBhIHNwZWNpZmllZCBudW1iZXIgb2Ygc2Vjb25kczoKIAogICAgIHQgPSBUaW1lcigzMC4wLCBmLCBhcmdzPVtdLCBrd2FyZ3M9e30pCkBAIC05NTIsMjYgKzgzMSwxOCBAQAogY2xhc3MgX01haW5UaHJlYWQoVGhyZWFkKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgVGhyZWFkLl9faW5pdF9fKHNlbGYsIG5hbWU9Ik1haW5UaHJlYWQiKQorICAgICAgICBUaHJlYWQuX19pbml0X18oc2VsZiwgbmFtZT0iTWFpblRocmVhZCIsIGRhZW1vbj1GYWxzZSkKICAgICAgICAgc2VsZi5fc3RhcnRlZC5zZXQoKQogICAgICAgICBzZWxmLl9zZXRfaWRlbnQoKQogICAgICAgICB3aXRoIF9hY3RpdmVfbGltYm9fbG9jazoKICAgICAgICAgICAgIF9hY3RpdmVbc2VsZi5faWRlbnRdID0gc2VsZgogCi0gICAgZGVmIF9zZXRfZGFlbW9uKHNlbGYpOgotICAgICAgICByZXR1cm4gRmFsc2UKLQogICAgIGRlZiBfZXhpdGZ1bmMoc2VsZik6CiAgICAgICAgIHNlbGYuX3N0b3AoKQogICAgICAgICB0ID0gX3BpY2tTb21lTm9uRGFlbW9uVGhyZWFkKCkKLSAgICAgICAgaWYgdDoKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlczogd2FpdGluZyBmb3Igb3RoZXIgdGhyZWFkcyIsIHNlbGYpCiAgICAgICAgIHdoaWxlIHQ6CiAgICAgICAgICAgICB0LmpvaW4oKQogICAgICAgICAgICAgdCA9IF9waWNrU29tZU5vbkRhZW1vblRocmVhZCgpCi0gICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzOiBleGl0aW5nIiwgc2VsZikKICAgICAgICAgc2VsZi5fZGVsZXRlKCkKIAogZGVmIF9waWNrU29tZU5vbkRhZW1vblRocmVhZCgpOgpAQCAtOTkyLDcgKzg2Myw3IEBACiBjbGFzcyBfRHVtbXlUaHJlYWQoVGhyZWFkKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgVGhyZWFkLl9faW5pdF9fKHNlbGYsIG5hbWU9X25ld25hbWUoIkR1bW15LSVkIikpCisgICAgICAgIFRocmVhZC5fX2luaXRfXyhzZWxmLCBuYW1lPV9uZXduYW1lKCJEdW1teS0lZCIpLCBkYWVtb249VHJ1ZSkKIAogICAgICAgICAjIFRocmVhZC5fYmxvY2sgY29uc3VtZXMgYW4gT1MtbGV2ZWwgbG9ja2luZyBwcmltaXRpdmUsIHdoaWNoCiAgICAgICAgICMgY2FuIG5ldmVyIGJlIHVzZWQgYnkgYSBfRHVtbXlUaHJlYWQuICBTaW5jZSBhIF9EdW1teVRocmVhZApAQCAtMTAwNCw5ICs4NzUsNiBAQAogICAgICAgICB3aXRoIF9hY3RpdmVfbGltYm9fbG9jazoKICAgICAgICAgICAgIF9hY3RpdmVbc2VsZi5faWRlbnRdID0gc2VsZgogCi0gICAgZGVmIF9zZXRfZGFlbW9uKHNlbGYpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCiAgICAgZGVmIF9zdG9wKHNlbGYpOgogICAgICAgICBwYXNzCiAKQEAgLTEwMTgsOSArODg2LDggQEAKIAogZGVmIGN1cnJlbnRfdGhyZWFkKCk6CiAgICAgdHJ5OgotICAgICAgICByZXR1cm4gX2FjdGl2ZVtfZ2V0X2lkZW50KCldCisgICAgICAgIHJldHVybiBfYWN0aXZlW2dldF9pZGVudCgpXQogICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgIyNwcmludCAiY3VycmVudF90aHJlYWQoKTogbm8gY3VycmVudCB0aHJlYWQgZm9yIiwgX2dldF9pZGVudCgpCiAgICAgICAgIHJldHVybiBfRHVtbXlUaHJlYWQoKQogCiBjdXJyZW50VGhyZWFkID0gY3VycmVudF90aHJlYWQKQEAgLTEwNzcsNyArOTQ0LDcgQEAKICAgICAgICAgICAgIGlmIHRocmVhZCBpcyBjdXJyZW50OgogICAgICAgICAgICAgICAgICMgVGhlcmUgaXMgb25seSBvbmUgYWN0aXZlIHRocmVhZC4gV2UgcmVzZXQgdGhlIGlkZW50IHRvCiAgICAgICAgICAgICAgICAgIyBpdHMgbmV3IHZhbHVlIHNpbmNlIGl0IGNhbiBoYXZlIGNoYW5nZWQuCi0gICAgICAgICAgICAgICAgaWRlbnQgPSBfZ2V0X2lkZW50KCkKKyAgICAgICAgICAgICAgICBpZGVudCA9IGdldF9pZGVudCgpCiAgICAgICAgICAgICAgICAgdGhyZWFkLl9pZGVudCA9IGlkZW50CiAgICAgICAgICAgICAgICAgbmV3X2FjdGl2ZVtpZGVudF0gPSB0aHJlYWQKICAgICAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvdGltZWl0LnB5IGIvTGliL3RpbWVpdC5weQppbmRleCAxYWU1OWUwLi40ZjdkMjhmIDEwMDY0NAotLS0gYS9MaWIvdGltZWl0LnB5CisrKyBiL0xpYi90aW1laXQucHkKQEAgLTksMTQgKzksMTUgQEAKIExpYnJhcnkgdXNhZ2U6IHNlZSB0aGUgVGltZXIgY2xhc3MuCiAKIENvbW1hbmQgbGluZSB1c2FnZToKLSAgICBweXRob24gdGltZWl0LnB5IFstbiBOXSBbLXIgTl0gWy1zIFNdIFstdF0gWy1jXSBbLWhdIFstLV0gW3N0YXRlbWVudF0KKyAgICBweXRob24gdGltZWl0LnB5IFstbiBOXSBbLXIgTl0gWy1zIFNdIFstdF0gWy1jXSBbLXBdIFstaF0gWy0tXSBbc3RhdGVtZW50XQogCiBPcHRpb25zOgogICAtbi8tLW51bWJlciBOOiBob3cgbWFueSB0aW1lcyB0byBleGVjdXRlICdzdGF0ZW1lbnQnIChkZWZhdWx0OiBzZWUgYmVsb3cpCiAgIC1yLy0tcmVwZWF0IE46IGhvdyBtYW55IHRpbWVzIHRvIHJlcGVhdCB0aGUgdGltZXIgKGRlZmF1bHQgMykKICAgLXMvLS1zZXR1cCBTOiBzdGF0ZW1lbnQgdG8gYmUgZXhlY3V0ZWQgb25jZSBpbml0aWFsbHkgKGRlZmF1bHQgJ3Bhc3MnKQotICAtdC8tLXRpbWU6IHVzZSB0aW1lLnRpbWUoKSAoZGVmYXVsdCBvbiBVbml4KQotICAtYy8tLWNsb2NrOiB1c2UgdGltZS5jbG9jaygpIChkZWZhdWx0IG9uIFdpbmRvd3MpCisgIC1wLy0tcHJvY2VzczogdXNlIHRpbWUucHJvY2Vzc190aW1lKCkgKGRlZmF1bHQgaXMgdGltZS5wZXJmX2NvdW50ZXIoKSkKKyAgLXQvLS10aW1lOiB1c2UgdGltZS50aW1lKCkgKGRlcHJlY2F0ZWQpCisgIC1jLy0tY2xvY2s6IHVzZSB0aW1lLmNsb2NrKCkgKGRlcHJlY2F0ZWQpCiAgIC12Ly0tdmVyYm9zZTogcHJpbnQgcmF3IHRpbWluZyByZXN1bHRzOyByZXBlYXQgZm9yIG1vcmUgZGlnaXRzIHByZWNpc2lvbgogICAtaC8tLWhlbHA6IHByaW50IHRoaXMgdXNhZ2UgbWVzc2FnZSBhbmQgZXhpdAogICAtLTogc2VwYXJhdGUgb3B0aW9ucyBmcm9tIHN0YXRlbWVudCwgdXNlIHdoZW4gc3RhdGVtZW50IHN0YXJ0cyB3aXRoIC0KQEAgLTY2LDIzICs2NywxNyBAQAogZHVtbXlfc3JjX25hbWUgPSAiPHRpbWVpdC1zcmM+IgogZGVmYXVsdF9udW1iZXIgPSAxMDAwMDAwCiBkZWZhdWx0X3JlcGVhdCA9IDMKLQotaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgIyBPbiBXaW5kb3dzLCB0aGUgYmVzdCB0aW1lciBpcyB0aW1lLmNsb2NrKCkKLSAgICBkZWZhdWx0X3RpbWVyID0gdGltZS5jbG9jawotZWxzZToKLSAgICAjIE9uIG1vc3Qgb3RoZXIgcGxhdGZvcm1zIHRoZSBiZXN0IHRpbWVyIGlzIHRpbWUudGltZSgpCi0gICAgZGVmYXVsdF90aW1lciA9IHRpbWUudGltZQorZGVmYXVsdF90aW1lciA9IHRpbWUucGVyZl9jb3VudGVyCiAKICMgRG9uJ3QgY2hhbmdlIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgdGVtcGxhdGU7IHRoZSByZWluZGVudCgpIGNhbGxzCiAjIGluIFRpbWVyLl9faW5pdF9fKCkgZGVwZW5kIG9uIHNldHVwIGJlaW5nIGluZGVudGVkIDQgc3BhY2VzIGFuZCBzdG10CiAjIGJlaW5nIGluZGVudGVkIDggc3BhY2VzLgogdGVtcGxhdGUgPSAiIiIKIGRlZiBpbm5lcihfaXQsIF90aW1lcik6Ci0gICAgJShzZXR1cClzCisgICAge3NldHVwfQogICAgIF90MCA9IF90aW1lcigpCiAgICAgZm9yIF9pIGluIF9pdDoKLSAgICAgICAgJShzdG10KXMKKyAgICAgICAge3N0bXR9CiAgICAgX3QxID0gX3RpbWVyKCkKICAgICByZXR1cm4gX3QxIC0gX3QwCiAiIiIKQEAgLTEyNiw5ICsxMjEsOSBAQAogICAgICAgICAgICAgc3RtdCA9IHJlaW5kZW50KHN0bXQsIDgpCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNldHVwLCBzdHIpOgogICAgICAgICAgICAgICAgIHNldHVwID0gcmVpbmRlbnQoc2V0dXAsIDQpCi0gICAgICAgICAgICAgICAgc3JjID0gdGVtcGxhdGUgJSB7J3N0bXQnOiBzdG10LCAnc2V0dXAnOiBzZXR1cH0KKyAgICAgICAgICAgICAgICBzcmMgPSB0ZW1wbGF0ZS5mb3JtYXQoc3RtdD1zdG10LCBzZXR1cD1zZXR1cCkKICAgICAgICAgICAgIGVsaWYgY2FsbGFibGUoc2V0dXApOgotICAgICAgICAgICAgICAgIHNyYyA9IHRlbXBsYXRlICUgeydzdG10Jzogc3RtdCwgJ3NldHVwJzogJ19zZXR1cCgpJ30KKyAgICAgICAgICAgICAgICBzcmMgPSB0ZW1wbGF0ZS5mb3JtYXQoc3RtdD1zdG10LCBzZXR1cD0nX3NldHVwKCknKQogICAgICAgICAgICAgICAgIG5zWydfc2V0dXAnXSA9IHNldHVwCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNldHVwIGlzIG5laXRoZXIgYSBzdHJpbmcgbm9yIGNhbGxhYmxlIikKQEAgLTI1NSw5ICsyNTAsMTAgQEAKICAgICAgICAgYXJncyA9IHN5cy5hcmd2WzE6XQogICAgIGltcG9ydCBnZXRvcHQKICAgICB0cnk6Ci0gICAgICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KGFyZ3MsICJuOnM6cjp0Y3ZoIiwKKyAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoYXJncywgIm46czpyOnRjcHZoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJudW1iZXI9IiwgInNldHVwPSIsICJyZXBlYXQ9IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lIiwgImNsb2NrIiwgInZlcmJvc2UiLCAiaGVscCJdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWUiLCAiY2xvY2siLCAicHJvY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmVyYm9zZSIsICJoZWxwIl0pCiAgICAgZXhjZXB0IGdldG9wdC5lcnJvciBhcyBlcnI6CiAgICAgICAgIHByaW50KGVycikKICAgICAgICAgcHJpbnQoInVzZSAtaC8tLWhlbHAgZm9yIGNvbW1hbmQgbGluZSBoZWxwIikKQEAgLTI4Miw2ICsyNzgsOCBAQAogICAgICAgICAgICAgdGltZXIgPSB0aW1lLnRpbWUKICAgICAgICAgaWYgbyBpbiAoIi1jIiwgIi0tY2xvY2siKToKICAgICAgICAgICAgIHRpbWVyID0gdGltZS5jbG9jaworICAgICAgICBpZiBvIGluICgiLXAiLCAiLS1wcm9jZXNzIik6CisgICAgICAgICAgICB0aW1lciA9IHRpbWUucHJvY2Vzc190aW1lCiAgICAgICAgIGlmIG8gaW4gKCItdiIsICItLXZlcmJvc2UiKToKICAgICAgICAgICAgIGlmIHZlcmJvc2U6CiAgICAgICAgICAgICAgICAgcHJlY2lzaW9uICs9IDEKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL19faW5pdF9fLnB5IGIvTGliL3RraW50ZXIvX19pbml0X18ucHkKaW5kZXggYTZhZDg4OC4uZjYxOTc4NiAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvX19pbml0X18ucHkKKysrIGIvTGliL3RraW50ZXIvX19pbml0X18ucHkKQEAgLTMwLDE3ICszMCwxOSBAQAogdGsubWFpbmxvb3AoKQogIiIiCiAKLV9fdmVyc2lvbl9fID0gIiRSZXZpc2lvbiQiCi0KIGltcG9ydCBzeXMKIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgogICAgICMgQXR0ZW1wdCB0byBjb25maWd1cmUgVGNsL1RrIHdpdGhvdXQgcmVxdWlyaW5nIFBBVEgKICAgICBmcm9tIHRraW50ZXIgaW1wb3J0IF9maXgKKworaW1wb3J0IHdhcm5pbmdzCisKIGltcG9ydCBfdGtpbnRlciAjIElmIHRoaXMgZmFpbHMgeW91ciBQeXRob24gbWF5IG5vdCBiZSBjb25maWd1cmVkIGZvciBUawogVGNsRXJyb3IgPSBfdGtpbnRlci5UY2xFcnJvcgogZnJvbSB0a2ludGVyLmNvbnN0YW50cyBpbXBvcnQgKgogaW1wb3J0IHJlCiAKKwogd2FudG9iamVjdHMgPSAxCiAKIFRrVmVyc2lvbiA9IGZsb2F0KF90a2ludGVyLlRLX1ZFUlNJT04pCkBAIC0xOTAsNiArMTkyLDcgQEAKICAgICBTdWJjbGFzc2VzIFN0cmluZ1ZhciwgSW50VmFyLCBEb3VibGVWYXIsIEJvb2xlYW5WYXIgYXJlIHNwZWNpYWxpemF0aW9ucwogICAgIHRoYXQgY29uc3RyYWluIHRoZSB0eXBlIG9mIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGdldCgpLiIiIgogICAgIF9kZWZhdWx0ID0gIiIKKyAgICBfdGsgPSBOb25lCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc3Rlcj1Ob25lLCB2YWx1ZT1Ob25lLCBuYW1lPU5vbmUpOgogICAgICAgICAiIiJDb25zdHJ1Y3QgYSB2YXJpYWJsZQogCkBAIC0yMDAsNiArMjAzLDExIEBACiAgICAgICAgIElmIE5BTUUgbWF0Y2hlcyBhbiBleGlzdGluZyB2YXJpYWJsZSBhbmQgVkFMVUUgaXMgb21pdHRlZAogICAgICAgICB0aGVuIHRoZSBleGlzdGluZyB2YWx1ZSBpcyByZXRhaW5lZC4KICAgICAgICAgIiIiCisgICAgICAgICMgY2hlY2sgZm9yIHR5cGUgb2YgTkFNRSBwYXJhbWV0ZXIgdG8gb3ZlcnJpZGUgd2VpcmQgZXJyb3IgbWVzc2FnZQorICAgICAgICAjIHJhaXNlZCBmcm9tIE1vZHVsZXMvX3RraW50ZXIuYzpTZXRWYXIgbGlrZToKKyAgICAgICAgIyBUeXBlRXJyb3I6IHNldHZhcigpIHRha2VzIGV4YWN0bHkgMyBhcmd1bWVudHMgKDIgZ2l2ZW4pCisgICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKG5hbWUsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm5hbWUgbXVzdCBiZSBhIHN0cmluZyIpCiAgICAgICAgIGdsb2JhbCBfdmFybnVtCiAgICAgICAgIGlmIG5vdCBtYXN0ZXI6CiAgICAgICAgICAgICBtYXN0ZXIgPSBfZGVmYXVsdF9yb290CkBAIC0yMTEsMTggKzIxOSwyMSBAQAogICAgICAgICAgICAgc2VsZi5fbmFtZSA9ICdQWV9WQVInICsgcmVwcihfdmFybnVtKQogICAgICAgICAgICAgX3Zhcm51bSArPSAxCiAgICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5zZXQodmFsdWUpCisgICAgICAgICAgICBzZWxmLmluaXRpYWxpemUodmFsdWUpCiAgICAgICAgIGVsaWYgbm90IHNlbGYuX3RrLmNhbGwoImluZm8iLCAiZXhpc3RzIiwgc2VsZi5fbmFtZSk6Ci0gICAgICAgICAgICBzZWxmLnNldChzZWxmLl9kZWZhdWx0KQorICAgICAgICAgICAgc2VsZi5pbml0aWFsaXplKHNlbGYuX2RlZmF1bHQpCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICIiIlVuc2V0IHRoZSB2YXJpYWJsZSBpbiBUY2wuIiIiCi0gICAgICAgIHNlbGYuX3RrLmdsb2JhbHVuc2V0dmFyKHNlbGYuX25hbWUpCisgICAgICAgIGlmIChzZWxmLl90ayBpcyBub3QgTm9uZSBhbmQgc2VsZi5fdGsuY2FsbCgiaW5mbyIsICJleGlzdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbmFtZSkpOgorICAgICAgICAgICAgc2VsZi5fdGsuZ2xvYmFsdW5zZXR2YXIoc2VsZi5fbmFtZSkKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSBpbiBUY2wuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9uYW1lCiAgICAgZGVmIHNldChzZWxmLCB2YWx1ZSk6CiAgICAgICAgICIiIlNldCB0aGUgdmFyaWFibGUgdG8gVkFMVUUuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl90ay5nbG9iYWxzZXR2YXIoc2VsZi5fbmFtZSwgdmFsdWUpCisgICAgaW5pdGlhbGl6ZSA9IHNldAogICAgIGRlZiBnZXQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB2YWx1ZSBvZiB2YXJpYWJsZS4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3RrLmdsb2JhbGdldHZhcihzZWxmLl9uYW1lKQpAQCAtMjk3LDEyICszMDgsNiBAQAogICAgICAgICAiIiIKICAgICAgICAgVmFyaWFibGUuX19pbml0X18oc2VsZiwgbWFzdGVyLCB2YWx1ZSwgbmFtZSkKIAotICAgIGRlZiBzZXQoc2VsZiwgdmFsdWUpOgotICAgICAgICAiIiJTZXQgdGhlIHZhcmlhYmxlIHRvIHZhbHVlLCBjb252ZXJ0aW5nIGJvb2xlYW5zIHRvIGludGVnZXJzLiIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBib29sKToKLSAgICAgICAgICAgIHZhbHVlID0gaW50KHZhbHVlKQotICAgICAgICByZXR1cm4gVmFyaWFibGUuc2V0KHNlbGYsIHZhbHVlKQotCiAgICAgZGVmIGdldChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgYXMgYW4gaW50ZWdlci4iIiIKICAgICAgICAgcmV0dXJuIGdldGludChzZWxmLl90ay5nbG9iYWxnZXR2YXIoc2VsZi5fbmFtZSkpCkBAIC0zNDMsNyArMzQ4LDEwIEBACiAKICAgICBkZWYgZ2V0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBhcyBhIGJvb2wuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl90ay5nZXRib29sZWFuKHNlbGYuX3RrLmdsb2JhbGdldHZhcihzZWxmLl9uYW1lKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3RrLmdldGJvb2xlYW4oc2VsZi5fdGsuZ2xvYmFsZ2V0dmFyKHNlbGYuX25hbWUpKQorICAgICAgICBleGNlcHQgVGNsRXJyb3I6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIGxpdGVyYWwgZm9yIGdldGJvb2xlYW4oKSIpCiAKIGRlZiBtYWlubG9vcChuPTApOgogICAgICIiIlJ1biB0aGUgbWFpbiBsb29wIG9mIFRjbC4iIiIKQEAgLTM1NSw3ICszNjMsMTAgQEAKIAogZGVmIGdldGJvb2xlYW4ocyk6CiAgICAgIiIiQ29udmVydCB0cnVlIGFuZCBmYWxzZSB0byBpbnRlZ2VyIHZhbHVlcyAxIGFuZCAwLiIiIgotICAgIHJldHVybiBfZGVmYXVsdF9yb290LnRrLmdldGJvb2xlYW4ocykKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBfZGVmYXVsdF9yb290LnRrLmdldGJvb2xlYW4ocykKKyAgICBleGNlcHQgVGNsRXJyb3I6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgbGl0ZXJhbCBmb3IgZ2V0Ym9vbGVhbigpIikKIAogIyBNZXRob2RzIGRlZmluZWQgb24gYm90aCB0b3BsZXZlbCBhbmQgaW50ZXJpb3Igd2lkZ2V0cwogY2xhc3MgTWlzYzoKQEAgLTQ0NSw3ICs0NTYsMTAgQEAKICAgICBnZXRkb3VibGUgPSBmbG9hdAogICAgIGRlZiBnZXRib29sZWFuKHNlbGYsIHMpOgogICAgICAgICAiIiJSZXR1cm4gYSBib29sZWFuIHZhbHVlIGZvciBUY2wgYm9vbGVhbiB2YWx1ZXMgdHJ1ZSBhbmQgZmFsc2UgZ2l2ZW4gYXMgcGFyYW1ldGVyLiIiIgotICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRib29sZWFuKHMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGJvb2xlYW4ocykKKyAgICAgICAgZXhjZXB0IFRjbEVycm9yOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBsaXRlcmFsIGZvciBnZXRib29sZWFuKCkiKQogICAgIGRlZiBmb2N1c19zZXQoc2VsZik6CiAgICAgICAgICIiIkRpcmVjdCBpbnB1dCBmb2N1cyB0byB0aGlzIHdpZGdldC4KIApAQCAtMTIxOCw3ICsxMjMyLDYgQEAKICAgICAgICAgcmV0dXJuIChlLCkKICAgICBkZWYgX3JlcG9ydF9leGNlcHRpb24oc2VsZik6CiAgICAgICAgICIiIkludGVybmFsIGZ1bmN0aW9uLiIiIgotICAgICAgICBpbXBvcnQgc3lzCiAgICAgICAgIGV4YywgdmFsLCB0YiA9IHN5cy5leGNfaW5mbygpCiAgICAgICAgIHJvb3QgPSBzZWxmLl9yb290KCkKICAgICAgICAgcm9vdC5yZXBvcnRfY2FsbGJhY2tfZXhjZXB0aW9uKGV4YywgdmFsLCB0YikKQEAgLTEyOTMsNiArMTMwNiwxMyBAQAogICAgICAgICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgKICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYWNlJywgJ3NsYXZlcycsIHNlbGYuX3cpKV0KICAgICAjIEdyaWQgbWV0aG9kcyB0aGF0IGFwcGx5IHRvIHRoZSBtYXN0ZXIKKyAgICBkZWYgZ3JpZF9hbmNob3Ioc2VsZiwgYW5jaG9yPU5vbmUpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiVGhlIGFuY2hvciB2YWx1ZSBjb250cm9scyBob3cgdG8gcGxhY2UgdGhlIGdyaWQgd2l0aGluIHRoZQorICAgICAgICBtYXN0ZXIgd2hlbiBubyByb3cvY29sdW1uIGhhcyBhbnkgd2VpZ2h0LgorCisgICAgICAgIFRoZSBkZWZhdWx0IGFuY2hvciBpcyBudy4iIiIKKyAgICAgICAgc2VsZi50ay5jYWxsKCdncmlkJywgJ2FuY2hvcicsIHNlbGYuX3csIGFuY2hvcikKKyAgICBhbmNob3IgPSBncmlkX2FuY2hvcgogICAgIGRlZiBncmlkX2Jib3goc2VsZiwgY29sdW1uPU5vbmUsIHJvdz1Ob25lLCBjb2wyPU5vbmUsIHJvdzI9Tm9uZSk6CiAgICAgICAgICIiIlJldHVybiBhIHR1cGxlIG9mIGludGVnZXIgY29vcmRpbmF0ZXMgZm9yIHRoZSBib3VuZGluZwogICAgICAgICBib3ggb2YgdGhpcyB3aWRnZXQgY29udHJvbGxlZCBieSB0aGUgZ2VvbWV0cnkgbWFuYWdlciBncmlkLgpAQCAtMTMxMSw3ICsxMzMxLDYgQEAKICAgICAgICAgaWYgY29sMiBpcyBub3QgTm9uZSBhbmQgcm93MiBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGFyZ3MgPSBhcmdzICsgKGNvbDIsIHJvdzIpCiAgICAgICAgIHJldHVybiBzZWxmLl9nZXRpbnRzKHNlbGYudGsuY2FsbCgqYXJncykpIG9yIE5vbmUKLQogICAgIGJib3ggPSBncmlkX2Jib3gKICAgICBkZWYgX2dyaWRfY29uZmlndXJlKHNlbGYsIGNvbW1hbmQsIGluZGV4LCBjbmYsIGt3KToKICAgICAgICAgIiIiSW50ZXJuYWwgZnVuY3Rpb24uIiIiCkBAIC0xNTcwLDYgKzE1ODksMTQgQEAKICAgICAgICAgdGhlIGZvY3VzLiBSZXR1cm4gY3VycmVudCBmb2N1cyBtb2RlbCBpZiBNT0RFTCBpcyBOb25lLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKCd3bScsICdmb2N1c21vZGVsJywgc2VsZi5fdywgbW9kZWwpCiAgICAgZm9jdXNtb2RlbCA9IHdtX2ZvY3VzbW9kZWwKKyAgICBkZWYgd21fZm9yZ2V0KHNlbGYsIHdpbmRvdyk6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJUaGUgd2luZG93IHdpbGwgYmUgdW5tYXBwZW5kIGZyb20gdGhlIHNjcmVlbiBhbmQgd2lsbCBubyBsb25nZXIKKyAgICAgICAgYmUgbWFuYWdlZCBieSB3bS4gdG9wbGV2ZWwgd2luZG93cyB3aWxsIGJlIHRyZWF0ZWQgbGlrZSBmcmFtZQorICAgICAgICB3aW5kb3dzIG9uY2UgdGhleSBhcmUgbm8gbG9uZ2VyIG1hbmFnZWQgYnkgd20sIGhvd2V2ZXIsIHRoZSBtZW51CisgICAgICAgIG9wdGlvbiBjb25maWd1cmF0aW9uIHdpbGwgYmUgcmVtZW1iZXJlZCBhbmQgdGhlIG1lbnVzIHdpbGwgcmV0dXJuCisgICAgICAgIG9uY2UgdGhlIHdpZGdldCBpcyBtYW5hZ2VkIGFnYWluLiIiIgorICAgICAgICBzZWxmLnRrLmNhbGwoJ3dtJywgJ2ZvcmdldCcsIHdpbmRvdykKKyAgICBmb3JnZXQgPSB3bV9mb3JnZXQKICAgICBkZWYgd21fZnJhbWUoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBpZGVudGlmaWVyIGZvciBkZWNvcmF0aXZlIGZyYW1lIG9mIHRoaXMgd2lkZ2V0IGlmIHByZXNlbnQuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoJ3dtJywgJ2ZyYW1lJywgc2VsZi5fdykKQEAgLTE2MjMsNiArMTY1MCwzMSBAQAogICAgICAgICBOb25lIGlzIGdpdmVuLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKCd3bScsICdpY29ubmFtZScsIHNlbGYuX3csIG5ld05hbWUpCiAgICAgaWNvbm5hbWUgPSB3bV9pY29ubmFtZQorICAgIGRlZiB3bV9pY29ucGhvdG8oc2VsZiwgZGVmYXVsdD1GYWxzZSwgKmFyZ3MpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiU2V0cyB0aGUgdGl0bGViYXIgaWNvbiBmb3IgdGhpcyB3aW5kb3cgYmFzZWQgb24gdGhlIG5hbWVkIHBob3RvCisgICAgICAgIGltYWdlcyBwYXNzZWQgdGhyb3VnaCBhcmdzLiBJZiBkZWZhdWx0IGlzIFRydWUsIHRoaXMgaXMgYXBwbGllZCB0bworICAgICAgICBhbGwgZnV0dXJlIGNyZWF0ZWQgdG9wbGV2ZWxzIGFzIHdlbGwuCisKKyAgICAgICAgVGhlIGRhdGEgaW4gdGhlIGltYWdlcyBpcyB0YWtlbiBhcyBhIHNuYXBzaG90IGF0IHRoZSB0aW1lIG9mCisgICAgICAgIGludm9jYXRpb24uIElmIHRoZSBpbWFnZXMgYXJlIGxhdGVyIGNoYW5nZWQsIHRoaXMgaXMgbm90IHJlZmxlY3RlZAorICAgICAgICB0byB0aGUgdGl0bGViYXIgaWNvbnMuIE11bHRpcGxlIGltYWdlcyBhcmUgYWNjZXB0ZWQgdG8gYWxsb3cKKyAgICAgICAgZGlmZmVyZW50IGltYWdlcyBzaXplcyB0byBiZSBwcm92aWRlZC4gVGhlIHdpbmRvdyBtYW5hZ2VyIG1heSBzY2FsZQorICAgICAgICBwcm92aWRlZCBpY29ucyB0byBhbiBhcHByb3ByaWF0ZSBzaXplLgorCisgICAgICAgIE9uIFdpbmRvd3MsIHRoZSBpbWFnZXMgYXJlIHBhY2tlZCBpbnRvIGEgV2luZG93cyBpY29uIHN0cnVjdHVyZS4KKyAgICAgICAgVGhpcyB3aWxsIG92ZXJyaWRlIGFuIGljb24gc3BlY2lmaWVkIHRvIHdtX2ljb25iaXRtYXAsIGFuZCB2aWNlCisgICAgICAgIHZlcnNhLgorCisgICAgICAgIE9uIFgsIHRoZSBpbWFnZXMgYXJlIGFycmFuZ2VkIGludG8gdGhlIF9ORVRfV01fSUNPTiBYIHByb3BlcnR5LAorICAgICAgICB3aGljaCBtb3N0IG1vZGVybiB3aW5kb3cgbWFuYWdlcnMgc3VwcG9ydC4gQW4gaWNvbiBzcGVjaWZpZWQgYnkKKyAgICAgICAgd21faWNvbmJpdG1hcCBtYXkgZXhpc3Qgc2ltdXVsdGFuZW91c2x5LgorCisgICAgICAgIE9uIE1hY2ludG9zaCwgdGhpcyBjdXJyZW50bHkgZG9lcyBub3RoaW5nLiIiIgorICAgICAgICBpZiBkZWZhdWx0OgorICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3bScsICdpY29ucGhvdG8nLCBzZWxmLl93LCAiLWRlZmF1bHQiLCAqYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd20nLCAnaWNvbnBob3RvJywgc2VsZi5fdywgKmFyZ3MpCisgICAgaWNvbnBob3RvID0gd21faWNvbnBob3RvCiAgICAgZGVmIHdtX2ljb25wb3NpdGlvbihzZWxmLCB4PU5vbmUsIHk9Tm9uZSk6CiAgICAgICAgICIiIlNldCB0aGUgcG9zaXRpb24gb2YgdGhlIGljb24gb2YgdGhpcyB3aWRnZXQgdG8gWCBhbmQgWS4gUmV0dXJuCiAgICAgICAgIGEgdHVwbGUgb2YgdGhlIGN1cnJlbnQgdmFsdWVzIG9mIFggYW5kIFggaWYgTm9uZSBpcyBnaXZlbi4iIiIKQEAgLTE2MzQsNiArMTY4NiwxMiBAQAogICAgICAgICB2YWx1ZSBpZiBOb25lIGlzIGdpdmVuLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKCd3bScsICdpY29ud2luZG93Jywgc2VsZi5fdywgcGF0aE5hbWUpCiAgICAgaWNvbndpbmRvdyA9IHdtX2ljb253aW5kb3cKKyAgICBkZWYgd21fbWFuYWdlKHNlbGYsIHdpZGdldCk6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJUaGUgd2lkZ2V0IHNwZWNpZmllZCB3aWxsIGJlY29tZSBhIHN0YW5kIGFsb25lIHRvcC1sZXZlbCB3aW5kb3cuCisgICAgICAgIFRoZSB3aW5kb3cgd2lsbCBiZSBkZWNvcmF0ZWQgd2l0aCB0aGUgd2luZG93IG1hbmFnZXJzIHRpdGxlIGJhciwKKyAgICAgICAgZXRjLiIiIgorICAgICAgICBzZWxmLnRrLmNhbGwoJ3dtJywgJ21hbmFnZScsIHdpZGdldCkKKyAgICBtYW5hZ2UgPSB3bV9tYW5hZ2UKICAgICBkZWYgd21fbWF4c2l6ZShzZWxmLCB3aWR0aD1Ob25lLCBoZWlnaHQ9Tm9uZSk6CiAgICAgICAgICIiIlNldCBtYXggV0lEVEggYW5kIEhFSUdIVCBmb3IgdGhpcyB3aWRnZXQuIElmIHRoZSB3aW5kb3cgaXMgZ3JpZGRlZAogICAgICAgICB0aGUgdmFsdWVzIGFyZSBnaXZlbiBpbiBncmlkIHVuaXRzLiBSZXR1cm4gdGhlIGN1cnJlbnQgdmFsdWVzIGlmIE5vbmUKQEAgLTE3MjIsNyArMTc4MCw3IEBACiAgICAgICAgICMgZW5zdXJlIHRoYXQgc2VsZi50ayBpcyBhbHdheXMgX3NvbWV0aGluZ18uCiAgICAgICAgIHNlbGYudGsgPSBOb25lCiAgICAgICAgIGlmIGJhc2VOYW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICBpbXBvcnQgc3lzLCBvcworICAgICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgICAgICBiYXNlTmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pCiAgICAgICAgICAgICBiYXNlTmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChiYXNlTmFtZSkKICAgICAgICAgICAgIGlmIGV4dCBub3QgaW4gKCcucHknLCAnLnB5YycsICcucHlvJyk6CkBAIC0xNzk4LDcgKzE4NTYsNyBAQAogICAgICAgICAgICAgZXhlYyhvcGVuKGJhc2VfcHkpLnJlYWQoKSwgZGlyKQogICAgIGRlZiByZXBvcnRfY2FsbGJhY2tfZXhjZXB0aW9uKHNlbGYsIGV4YywgdmFsLCB0Yik6CiAgICAgICAgICIiIkludGVybmFsIGZ1bmN0aW9uLiBJdCByZXBvcnRzIGV4Y2VwdGlvbiBvbiBzeXMuc3RkZXJyLiIiIgotICAgICAgICBpbXBvcnQgdHJhY2ViYWNrLCBzeXMKKyAgICAgICAgaW1wb3J0IHRyYWNlYmFjawogICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJFeGNlcHRpb24gaW4gVGtpbnRlciBjYWxsYmFja1xuIikKICAgICAgICAgc3lzLmxhc3RfdHlwZSA9IGV4YwogICAgICAgICBzeXMubGFzdF92YWx1ZSA9IHZhbApAQCAtMjEyMywyNSArMjE4MSw0NSBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbChzZWxmLl93LCAnaW52b2tlJykKIAorCiAjIEluZGljZXM6CiAjIFhYWCBJIGRvbid0IGxpa2UgdGhlc2UgLS0gdGFrZSB0aGVtIGF3YXkKIGRlZiBBdEVuZCgpOgorICAgIHdhcm5pbmdzLndhcm4oInRraW50ZXIuQXRFbmQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICByZXR1cm4gJ2VuZCcKKworCiBkZWYgQXRJbnNlcnQoKmFyZ3MpOgorICAgIHdhcm5pbmdzLndhcm4oInRraW50ZXIuQXRJbnNlcnQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICBzID0gJ2luc2VydCcKICAgICBmb3IgYSBpbiBhcmdzOgogICAgICAgICBpZiBhOiBzID0gcyArICgnICcgKyBhKQogICAgIHJldHVybiBzCisKKwogZGVmIEF0U2VsRmlyc3QoKToKKyAgICB3YXJuaW5ncy53YXJuKCJ0a2ludGVyLkF0U2VsRmlyc3Qgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICByZXR1cm4gJ3NlbC5maXJzdCcKKworCiBkZWYgQXRTZWxMYXN0KCk6CisgICAgd2FybmluZ3Mud2FybigidGtpbnRlci5BdFNlbExhc3Qgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICByZXR1cm4gJ3NlbC5sYXN0JworCisKIGRlZiBBdCh4LCB5PU5vbmUpOgorICAgIHdhcm5pbmdzLndhcm4oInRraW50ZXIuQXQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICBpZiB5IGlzIE5vbmU6CiAgICAgICAgIHJldHVybiAnQCVyJyAlICh4LCkKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gJ0AlciwlcicgJSAoeCwgeSkKIAorCiBjbGFzcyBDYW52YXMoV2lkZ2V0LCBYVmlldywgWVZpZXcpOgogICAgICIiIkNhbnZhcyB3aWRnZXQgdG8gZGlzcGxheSBncmFwaGljYWwgZWxlbWVudHMgbGlrZSBsaW5lcyBvciB0ZXh0LiIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSwgY25mPXt9LCAqKmt3KToKQEAgLTI3MjcsNiArMjgwNSwxMCBAQAogICAgIGRlZiB1bnBvc3Qoc2VsZik6CiAgICAgICAgICIiIlVubWFwIGEgbWVudS4iIiIKICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICd1bnBvc3QnKQorICAgIGRlZiB4cG9zaXRpb24oc2VsZiwgaW5kZXgpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiUmV0dXJuIHRoZSB4LXBvc2l0aW9uIG9mIHRoZSBsZWZ0bW9zdCBwaXhlbCBvZiB0aGUgbWVudSBpdGVtCisgICAgICAgIGF0IElOREVYLiIiIgorICAgICAgICByZXR1cm4gZ2V0aW50KHNlbGYudGsuY2FsbChzZWxmLl93LCAneHBvc2l0aW9uJywgaW5kZXgpKQogICAgIGRlZiB5cG9zaXRpb24oc2VsZiwgaW5kZXgpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHktcG9zaXRpb24gb2YgdGhlIHRvcG1vc3QgcGl4ZWwgb2YgdGhlIG1lbnUgaXRlbSBhdCBJTkRFWC4iIiIKICAgICAgICAgcmV0dXJuIGdldGludChzZWxmLnRrLmNhbGwoCkBAIC0yODg2LDYgKzI5NjgsMjUgQEAKICAgICAgICAgcmVsYXRpb24gT1AgaXMgc2F0aXNmaWVkLiBPUCBpcyBvbmUgb2YgPCwgPD0sID09LCA+PSwgPiwgb3IgIT0uIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGJvb2xlYW4oc2VsZi50ay5jYWxsKAogICAgICAgICAgICAgc2VsZi5fdywgJ2NvbXBhcmUnLCBpbmRleDEsIG9wLCBpbmRleDIpKQorICAgIGRlZiBjb3VudChzZWxmLCBpbmRleDEsIGluZGV4MiwgKmFyZ3MpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiQ291bnRzIHRoZSBudW1iZXIgb2YgcmVsZXZhbnQgdGhpbmdzIGJldHdlZW4gdGhlIHR3byBpbmRpY2VzLgorICAgICAgICBJZiBpbmRleDEgaXMgYWZ0ZXIgaW5kZXgyLCB0aGUgcmVzdWx0IHdpbGwgYmUgYSBuZWdhdGl2ZSBudW1iZXIKKyAgICAgICAgKGFuZCB0aGlzIGhvbGRzIGZvciBlYWNoIG9mIHRoZSBwb3NzaWJsZSBvcHRpb25zKS4KKworICAgICAgICBUaGUgYWN0dWFsIGl0ZW1zIHdoaWNoIGFyZSBjb3VudGVkIGRlcGVuZHMgb24gdGhlIG9wdGlvbnMgZ2l2ZW4gYnkKKyAgICAgICAgYXJncy4gVGhlIHJlc3VsdCBpcyBhIGxpc3Qgb2YgaW50ZWdlcnMsIG9uZSBmb3IgdGhlIHJlc3VsdCBvZiBlYWNoCisgICAgICAgIGNvdW50aW5nIG9wdGlvbiBnaXZlbi4gVmFsaWQgY291bnRpbmcgb3B0aW9ucyBhcmUgImNoYXJzIiwKKyAgICAgICAgImRpc3BsYXljaGFycyIsICJkaXNwbGF5aW5kaWNlcyIsICJkaXNwbGF5bGluZXMiLCAiaW5kaWNlcyIsCisgICAgICAgICJsaW5lcyIsICJ4cGl4ZWxzIiBhbmQgInlwaXhlbHMiLiBUaGVyZSBpcyBhbiBhZGRpdGlvbmFsIHBvc3NpYmxlCisgICAgICAgIG9wdGlvbiAidXBkYXRlIiwgd2hpY2ggaWYgZ2l2ZW4gdGhlbiBhbGwgc3Vic2VxdWVudCBvcHRpb25zIGVuc3VyZQorICAgICAgICB0aGF0IGFueSBwb3NzaWJsZSBvdXQgb2YgZGF0ZSBpbmZvcm1hdGlvbiBpcyByZWNhbGN1bGF0ZWQuIiIiCisgICAgICAgIGFyZ3MgPSBbJy0lcycgJSBhcmcgZm9yIGFyZyBpbiBhcmdzIGlmIG5vdCBhcmcuc3RhcnRzd2l0aCgnLScpXQorICAgICAgICBhcmdzICs9IFtpbmRleDEsIGluZGV4Ml0KKyAgICAgICAgcmVzID0gc2VsZi50ay5jYWxsKHNlbGYuX3csICdjb3VudCcsICphcmdzKSBvciBOb25lCisgICAgICAgIGlmIHJlcyBpcyBub3QgTm9uZSBhbmQgbGVuKGFyZ3MpIDw9IDM6CisgICAgICAgICAgICByZXR1cm4gKHJlcywgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHJlcwogICAgIGRlZiBkZWJ1ZyhzZWxmLCBib29sZWFuPU5vbmUpOgogICAgICAgICAiIiJUdXJuIG9uIHRoZSBpbnRlcm5hbCBjb25zaXN0ZW5jeSBjaGVja3Mgb2YgdGhlIEItVHJlZSBpbnNpZGUgdGhlIHRleHQKICAgICAgICAgd2lkZ2V0IGFjY29yZGluZyB0byBCT09MRUFOLiIiIgpAQCAtMzA0OCw2ICszMTQ5LDI0IEBACiAgICAgZGVmIG1hcmtfcHJldmlvdXMoc2VsZiwgaW5kZXgpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHByZXZpb3VzIG1hcmsgYmVmb3JlIElOREVYLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKHNlbGYuX3csICdtYXJrJywgJ3ByZXZpb3VzJywgaW5kZXgpIG9yIE5vbmUKKyAgICBkZWYgcGVlcl9jcmVhdGUoc2VsZiwgbmV3UGF0aE5hbWUsIGNuZj17fSwgKiprdyk6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJDcmVhdGVzIGEgcGVlciB0ZXh0IHdpZGdldCB3aXRoIHRoZSBnaXZlbiBuZXdQYXRoTmFtZSwgYW5kIGFueQorICAgICAgICBvcHRpb25hbCBzdGFuZGFyZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEJ5IGRlZmF1bHQgdGhlIHBlZXIgd2lsbAorICAgICAgICBoYXZlIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgbGluZSBhcyB0aGUgcGFyZW50IHdpZGdldCwgYnV0CisgICAgICAgIHRoZXNlIGNhbiBiZSBvdmVycmlkZW4gd2l0aCB0aGUgc3RhbmRhcmQgY29uZmlndXJhdGlvbiBvcHRpb25zLiIiIgorICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3BlZXInLCAnY3JlYXRlJywgbmV3UGF0aE5hbWUsCisgICAgICAgICAgICAqc2VsZi5fb3B0aW9ucyhjbmYsIGt3KSkKKyAgICBkZWYgcGVlcl9uYW1lcyhzZWxmKTogIyBuZXcgaW4gVGsgOC41CisgICAgICAgICIiIlJldHVybnMgYSBsaXN0IG9mIHBlZXJzIG9mIHRoaXMgd2lkZ2V0ICh0aGlzIGRvZXMgbm90IGluY2x1ZGUKKyAgICAgICAgdGhlIHdpZGdldCBpdHNlbGYpLiIiIgorICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICdwZWVyJywgJ25hbWVzJykpCisgICAgZGVmIHJlcGxhY2Uoc2VsZiwgaW5kZXgxLCBpbmRleDIsIGNoYXJzLCAqYXJncyk6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJSZXBsYWNlcyB0aGUgcmFuZ2Ugb2YgY2hhcmFjdGVycyBiZXR3ZWVuIGluZGV4MSBhbmQgaW5kZXgyIHdpdGgKKyAgICAgICAgdGhlIGdpdmVuIGNoYXJhY3RlcnMgYW5kIHRhZ3Mgc3BlY2lmaWVkIGJ5IGFyZ3MuCisKKyAgICAgICAgU2VlIHRoZSBtZXRob2QgaW5zZXJ0IGZvciBzb21lIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYXJncywgYW5kIHRoZQorICAgICAgICBtZXRob2QgZGVsZXRlIGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW5kaWNlcy4iIiIKKyAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICdyZXBsYWNlJywgaW5kZXgxLCBpbmRleDIsIGNoYXJzLCAqYXJncykKICAgICBkZWYgc2Nhbl9tYXJrKHNlbGYsIHgsIHkpOgogICAgICAgICAiIiJSZW1lbWJlciB0aGUgY3VycmVudCBYLCBZIGNvb3JkaW5hdGVzLiIiIgogICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3NjYW4nLCAnbWFyaycsIHgsIHkpCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9fZml4LnB5IGIvTGliL3RraW50ZXIvX2ZpeC5weQppbmRleCA1YTY5ZDg5Li41ZjMyZDI1IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci9fZml4LnB5CisrKyBiL0xpYi90a2ludGVyL19maXgucHkKQEAgLTQ2LDEwICs0NiwxMCBAQAogICAgICAgICAgICAgcyA9ICJcXCIgKyBzWzM6XQogICAgICAgICByZXR1cm4gcwogCi1wcmVmaXggPSBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwidGNsIikKK3ByZWZpeCA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9wcmVmaXgsInRjbCIpCiBpZiBub3Qgb3MucGF0aC5leGlzdHMocHJlZml4KToKICAgICAjIGRldmRpci8uLi90Y2x0ay9saWIKLSAgICBwcmVmaXggPSBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgb3MucGF0aC5wYXJkaXIsICJ0Y2x0ayIsICJsaWIiKQorICAgIHByZWZpeCA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9wcmVmaXgsIG9zLnBhdGgucGFyZGlyLCAidGNsdGsiLCAibGliIikKICAgICBwcmVmaXggPSBvcy5wYXRoLmFic3BhdGgocHJlZml4KQogIyBpZiB0aGlzIGRvZXMgbm90IGV4aXN0LCBubyBmdXJ0aGVyIHNlYXJjaCBpcyBuZWVkZWQKIGlmIG9zLnBhdGguZXhpc3RzKHByZWZpeCk6CmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9maWxlZGlhbG9nLnB5IGIvTGliL3RraW50ZXIvZmlsZWRpYWxvZy5weQppbmRleCA5OGQyZDVjLi4zZmZiMjUyIDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci9maWxlZGlhbG9nLnB5CisrKyBiL0xpYi90a2ludGVyL2ZpbGVkaWFsb2cucHkKQEAgLTMwNiw3ICszMDYsNiBAQAogICAgIGRlZiBfZml4cmVzdWx0KHNlbGYsIHdpZGdldCwgcmVzdWx0KToKICAgICAgICAgaWYgcmVzdWx0OgogICAgICAgICAgICAgIyBrZWVwIGRpcmVjdG9yeSBhbmQgZmlsZW5hbWUgdW50aWwgbmV4dCB0aW1lCi0gICAgICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgICAgICMgY29udmVydCBUY2wgcGF0aCBvYmplY3RzIHRvIHN0cmluZ3MKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc3RyaW5nCkBAIC0zMzMsNyArMzMyLDYgQEAKICAgICAgICAgICAgICMgbXVsdGlwbGUgcmVzdWx0czoKICAgICAgICAgICAgIHJlc3VsdCA9IHR1cGxlKFtnZXRhdHRyKHIsICJzdHJpbmciLCByKSBmb3IgciBpbiByZXN1bHRdKQogICAgICAgICAgICAgaWYgcmVzdWx0OgotICAgICAgICAgICAgICAgIGltcG9ydCBvcwogICAgICAgICAgICAgICAgIHBhdGgsIGZpbGUgPSBvcy5wYXRoLnNwbGl0KHJlc3VsdFswXSkKICAgICAgICAgICAgICAgICBzZWxmLm9wdGlvbnNbImluaXRpYWxkaXIiXSA9IHBhdGgKICAgICAgICAgICAgICAgICAjIGRvbid0IHNldCBpbml0aWFsZmlsZSBvciBmaWxlbmFtZSwgYXMgd2UgaGF2ZSBtdWx0aXBsZSBvZiB0aGVzZQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvZm9udC5weSBiL0xpYi90a2ludGVyL2ZvbnQucHkKaW5kZXggNTQyNWIwNi4uNDkyOTI0MSAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvZm9udC5weQorKysgYi9MaWIvdGtpbnRlci9mb250LnB5CkBAIC0yLDI3ICsyLDI3IEBACiAjCiAjIHdyaXR0ZW4gYnkgRnJlZHJpayBMdW5kaCwgRmVicnVhcnkgMTk5OAogIwotIyBGSVhNRTogc2hvdWxkIGFkZCAnZGlzcGxheW9mJyBvcHRpb24gd2hlcmUgcmVsZXZhbnQgKGFjdHVhbCwgZmFtaWxpZXMsCi0jICAgICAgICBtZWFzdXJlLCBhbmQgbWV0cmljcykKLSMKIAogX192ZXJzaW9uX18gPSAiMC45IgogCitpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgdGtpbnRlcgogCisKICMgd2VpZ2h0L3NsYW50CiBOT1JNQUwgPSAibm9ybWFsIgogUk9NQU4gPSAicm9tYW4iCiBCT0xEICAgPSAiYm9sZCIKIElUQUxJQyA9ICJpdGFsaWMiCiAKKwogZGVmIG5hbWV0b2ZvbnQobmFtZSk6CiAgICAgIiIiR2l2ZW4gdGhlIG5hbWUgb2YgYSB0ayBuYW1lZCBmb250LCByZXR1cm5zIGEgRm9udCByZXByZXNlbnRhdGlvbi4KICAgICAiIiIKICAgICByZXR1cm4gRm9udChuYW1lPW5hbWUsIGV4aXN0cz1UcnVlKQogCi1jbGFzcyBGb250OgogCitjbGFzcyBGb250OgogICAgICIiIlJlcHJlc2VudHMgYSBuYW1lZCBmb250LgogCiAgICAgQ29uc3RydWN0b3Igb3B0aW9ucyBhcmU6CkBAIC00NCw2ICs0NCw4IEBACiAKICAgICAiIiIKIAorICAgIGNvdW50ZXIgPSBpdGVydG9vbHMuY291bnQoMSkKKwogICAgIGRlZiBfc2V0KHNlbGYsIGt3KToKICAgICAgICAgb3B0aW9ucyA9IFtdCiAgICAgICAgIGZvciBrLCB2IGluIGt3Lml0ZW1zKCk6CkBAIC02Myw3ICs2NSw4IEBACiAgICAgICAgICAgICBvcHRpb25zW2FyZ3NbaV1bMTpdXSA9IGFyZ3NbaSsxXQogICAgICAgICByZXR1cm4gb3B0aW9ucwogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJvb3Q9Tm9uZSwgZm9udD1Ob25lLCBuYW1lPU5vbmUsIGV4aXN0cz1GYWxzZSwgKipvcHRpb25zKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdD1Ob25lLCBmb250PU5vbmUsIG5hbWU9Tm9uZSwgZXhpc3RzPUZhbHNlLAorICAgICAgICAgICAgICAgICAqKm9wdGlvbnMpOgogICAgICAgICBpZiBub3Qgcm9vdDoKICAgICAgICAgICAgIHJvb3QgPSB0a2ludGVyLl9kZWZhdWx0X3Jvb3QKICAgICAgICAgaWYgZm9udDoKQEAgLTcyLDcgKzc1LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZvbnQgPSBzZWxmLl9zZXQob3B0aW9ucykKICAgICAgICAgaWYgbm90IG5hbWU6Ci0gICAgICAgICAgICBuYW1lID0gImZvbnQiICsgc3RyKGlkKHNlbGYpKQorICAgICAgICAgICAgbmFtZSA9ICJmb250IiArIHN0cihuZXh0KHNlbGYuY291bnRlcikpCiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKIAogICAgICAgICBpZiBleGlzdHM6CkBAIC0xMTgsMTQgKzEyMSwxNyBAQAogICAgICAgICAiUmV0dXJuIGEgZGlzdGluY3QgY29weSBvZiB0aGUgY3VycmVudCBmb250IgogICAgICAgICByZXR1cm4gRm9udChzZWxmLl9yb290LCAqKnNlbGYuYWN0dWFsKCkpCiAKLSAgICBkZWYgYWN0dWFsKHNlbGYsIG9wdGlvbj1Ob25lKToKKyAgICBkZWYgYWN0dWFsKHNlbGYsIG9wdGlvbj1Ob25lLCBkaXNwbGF5b2Y9Tm9uZSk6CiAgICAgICAgICJSZXR1cm4gYWN0dWFsIGZvbnQgYXR0cmlidXRlcyIKKyAgICAgICAgYXJncyA9ICgpCisgICAgICAgIGlmIGRpc3BsYXlvZjoKKyAgICAgICAgICAgIGFyZ3MgPSAoJy1kaXNwbGF5b2YnLCBkaXNwbGF5b2YpCiAgICAgICAgIGlmIG9wdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsKCJmb250IiwgImFjdHVhbCIsIHNlbGYubmFtZSwgIi0iK29wdGlvbikKKyAgICAgICAgICAgIGFyZ3MgPSBhcmdzICsgKCctJyArIG9wdGlvbiwgKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGwoImZvbnQiLCAiYWN0dWFsIiwgc2VsZi5uYW1lLCAqYXJncykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9ta2RpY3QoCi0gICAgICAgICAgICAgICAgc2VsZi5fc3BsaXQoc2VsZi5fY2FsbCgiZm9udCIsICJhY3R1YWwiLCBzZWxmLm5hbWUpKQotICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxmLl9zcGxpdChzZWxmLl9jYWxsKCJmb250IiwgImFjdHVhbCIsIHNlbGYubmFtZSwgKmFyZ3MpKSkKIAogICAgIGRlZiBjZ2V0KHNlbGYsIG9wdGlvbik6CiAgICAgICAgICJHZXQgZm9udCBhdHRyaWJ1dGUiCkBAIC0xMzgsMzcgKzE0NCw0NyBAQAogICAgICAgICAgICAgICAgICAgKnNlbGYuX3NldChvcHRpb25zKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9ta2RpY3QoCi0gICAgICAgICAgICAgICAgc2VsZi5fc3BsaXQoc2VsZi5fY2FsbCgiZm9udCIsICJjb25maWciLCBzZWxmLm5hbWUpKQotICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxmLl9zcGxpdChzZWxmLl9jYWxsKCJmb250IiwgImNvbmZpZyIsIHNlbGYubmFtZSkpKQogCiAgICAgY29uZmlndXJlID0gY29uZmlnCiAKLSAgICBkZWYgbWVhc3VyZShzZWxmLCB0ZXh0KToKKyAgICBkZWYgbWVhc3VyZShzZWxmLCB0ZXh0LCBkaXNwbGF5b2Y9Tm9uZSk6CiAgICAgICAgICJSZXR1cm4gdGV4dCB3aWR0aCIKLSAgICAgICAgcmV0dXJuIGludChzZWxmLl9jYWxsKCJmb250IiwgIm1lYXN1cmUiLCBzZWxmLm5hbWUsIHRleHQpKQorICAgICAgICBhcmdzID0gKHRleHQsKQorICAgICAgICBpZiBkaXNwbGF5b2Y6CisgICAgICAgICAgICBhcmdzID0gKCctZGlzcGxheW9mJywgZGlzcGxheW9mLCB0ZXh0KQorICAgICAgICByZXR1cm4gaW50KHNlbGYuX2NhbGwoImZvbnQiLCAibWVhc3VyZSIsIHNlbGYubmFtZSwgKmFyZ3MpKQogCi0gICAgZGVmIG1ldHJpY3Moc2VsZiwgKm9wdGlvbnMpOgorICAgIGRlZiBtZXRyaWNzKHNlbGYsICpvcHRpb25zLCAqKmt3KToKICAgICAgICAgIiIiUmV0dXJuIGZvbnQgbWV0cmljcy4KIAogICAgICAgICBGb3IgYmVzdCBwZXJmb3JtYW5jZSwgY3JlYXRlIGEgZHVtbXkgd2lkZ2V0CiAgICAgICAgIHVzaW5nIHRoaXMgZm9udCBiZWZvcmUgY2FsbGluZyB0aGlzIG1ldGhvZC4iIiIKLQorICAgICAgICBhcmdzID0gKCkKKyAgICAgICAgZGlzcGxheW9mID0ga3cucG9wKCdkaXNwbGF5b2YnLCBOb25lKQorICAgICAgICBpZiBkaXNwbGF5b2Y6CisgICAgICAgICAgICBhcmdzID0gKCctZGlzcGxheW9mJywgZGlzcGxheW9mKQogICAgICAgICBpZiBvcHRpb25zOgorICAgICAgICAgICAgYXJncyA9IGFyZ3MgKyBzZWxmLl9nZXQob3B0aW9ucykKICAgICAgICAgICAgIHJldHVybiBpbnQoCi0gICAgICAgICAgICAgICAgc2VsZi5fY2FsbCgiZm9udCIsICJtZXRyaWNzIiwgc2VsZi5uYW1lLCBzZWxmLl9nZXQob3B0aW9ucykpCi0gICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHNlbGYuX2NhbGwoImZvbnQiLCAibWV0cmljcyIsIHNlbGYubmFtZSwgKmFyZ3MpKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVzID0gc2VsZi5fc3BsaXQoc2VsZi5fY2FsbCgiZm9udCIsICJtZXRyaWNzIiwgc2VsZi5uYW1lKSkKKyAgICAgICAgICAgIHJlcyA9IHNlbGYuX3NwbGl0KHNlbGYuX2NhbGwoImZvbnQiLCAibWV0cmljcyIsIHNlbGYubmFtZSwgKmFyZ3MpKQogICAgICAgICAgICAgb3B0aW9ucyA9IHt9CiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4ocmVzKSwgMik6CiAgICAgICAgICAgICAgICAgb3B0aW9uc1tyZXNbaV1bMTpdXSA9IGludChyZXNbaSsxXSkKICAgICAgICAgICAgIHJldHVybiBvcHRpb25zCiAKLWRlZiBmYW1pbGllcyhyb290PU5vbmUpOgorCitkZWYgZmFtaWxpZXMocm9vdD1Ob25lLCBkaXNwbGF5b2Y9Tm9uZSk6CiAgICAgIkdldCBmb250IGZhbWlsaWVzIChhcyBhIHR1cGxlKSIKICAgICBpZiBub3Qgcm9vdDoKICAgICAgICAgcm9vdCA9IHRraW50ZXIuX2RlZmF1bHRfcm9vdAotICAgIHJldHVybiByb290LnRrLnNwbGl0bGlzdChyb290LnRrLmNhbGwoImZvbnQiLCAiZmFtaWxpZXMiKSkKKyAgICBhcmdzID0gKCkKKyAgICBpZiBkaXNwbGF5b2Y6CisgICAgICAgIGFyZ3MgPSAoJy1kaXNwbGF5b2YnLCBkaXNwbGF5b2YpCisgICAgcmV0dXJuIHJvb3QudGsuc3BsaXRsaXN0KHJvb3QudGsuY2FsbCgiZm9udCIsICJmYW1pbGllcyIsICphcmdzKSkKKwogCiBkZWYgbmFtZXMocm9vdD1Ob25lKToKICAgICAiR2V0IG5hbWVzIG9mIGRlZmluZWQgZm9udHMgKGFzIGEgdHVwbGUpIgpAQCAtMTc2LDYgKzE5Miw3IEBACiAgICAgICAgIHJvb3QgPSB0a2ludGVyLl9kZWZhdWx0X3Jvb3QKICAgICByZXR1cm4gcm9vdC50ay5zcGxpdGxpc3Qocm9vdC50ay5jYWxsKCJmb250IiwgIm5hbWVzIikpCiAKKwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyB0ZXN0IHN0dWZmCiAKQEAgLTE5OCwxMCArMjE1LDEwIEBACiAKICAgICBwcmludChmLm1lYXN1cmUoImhlbGxvIiksIGYubWV0cmljcygibGluZXNwYWNlIikpCiAKLSAgICBwcmludChmLm1ldHJpY3MoKSkKKyAgICBwcmludChmLm1ldHJpY3MoZGlzcGxheW9mPXJvb3QpKQogCiAgICAgZiA9IEZvbnQoZm9udD0oIkNvdXJpZXIiLCAyMCwgImJvbGQiKSkKLSAgICBwcmludChmLm1lYXN1cmUoImhlbGxvIiksIGYubWV0cmljcygibGluZXNwYWNlIikpCisgICAgcHJpbnQoZi5tZWFzdXJlKCJoZWxsbyIpLCBmLm1ldHJpY3MoImxpbmVzcGFjZSIsIGRpc3BsYXlvZj1yb290KSkKIAogICAgIHcgPSB0a2ludGVyLkxhYmVsKHJvb3QsIHRleHQ9IkhlbGxvLCB3b3JsZCIsIGZvbnQ9ZikKICAgICB3LnBhY2soKQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF92YXJpYWJsZXMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzhjYzkyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF92YXJpYWJsZXMucHkKQEAgLTAsMCArMSwxNjUgQEAKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHRraW50ZXIgaW1wb3J0IFZhcmlhYmxlLCBTdHJpbmdWYXIsIEludFZhciwgRG91YmxlVmFyLCBCb29sZWFuVmFyLCBUaworCisKK2NsYXNzIFZhcihWYXJpYWJsZSk6CisKKyAgICBfZGVmYXVsdCA9ICJkZWZhdWx0IgorICAgIHNpZGVfZWZmZWN0ID0gRmFsc2UKKworICAgIGRlZiBzZXQoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLnNpZGVfZWZmZWN0ID0gVHJ1ZQorICAgICAgICBzdXBlcigpLnNldCh2YWx1ZSkKKworCitjbGFzcyBUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYucm9vdCA9IFRrKCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5yb290LmRlc3Ryb3koKQorCisKK2NsYXNzIFRlc3RWYXJpYWJsZShUZXN0QmFzZSk6CisKKyAgICBkZWYgdGVzdF9kZWZhdWx0KHNlbGYpOgorICAgICAgICB2ID0gVmFyaWFibGUoc2VsZi5yb290KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIiLCB2LmdldCgpKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0cih2KSwgciJeUFlfVkFSKFxkKykkIikKKworICAgIGRlZiB0ZXN0X25hbWVfYW5kX3ZhbHVlKHNlbGYpOgorICAgICAgICB2ID0gVmFyaWFibGUoc2VsZi5yb290LCAic2FtcGxlIHN0cmluZyIsICJ2YXJuYW1lIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgic2FtcGxlIHN0cmluZyIsIHYuZ2V0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInZhcm5hbWUiLCBzdHIodikpCisKKyAgICBkZWYgdGVzdF9fX2RlbF9fKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucm9vdC5jYWxsKCJpbmZvIiwgImV4aXN0cyIsICJ2YXJuYW1lIikpCisgICAgICAgIHYgPSBWYXJpYWJsZShzZWxmLnJvb3QsICJzYW1wbGUgc3RyaW5nIiwgInZhcm5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5yb290LmNhbGwoImluZm8iLCAiZXhpc3RzIiwgInZhcm5hbWUiKSkKKyAgICAgICAgZGVsIHYKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJvb3QuY2FsbCgiaW5mbyIsICJleGlzdHMiLCAidmFybmFtZSIpKQorCisgICAgZGVmIHRlc3RfZG9udF91bnNldF9ub3RfZXhpc3Rpbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5yb290LmNhbGwoImluZm8iLCAiZXhpc3RzIiwgInZhcm5hbWUiKSkKKyAgICAgICAgdjEgPSBWYXJpYWJsZShzZWxmLnJvb3QsIG5hbWU9Im5hbWUiKQorICAgICAgICB2MiA9IFZhcmlhYmxlKHNlbGYucm9vdCwgbmFtZT0ibmFtZSIpCisgICAgICAgIGRlbCB2MQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucm9vdC5jYWxsKCJpbmZvIiwgImV4aXN0cyIsICJuYW1lIikpCisgICAgICAgICMgc2hvdWxkbid0IHJhaXNlIGV4Y2VwdGlvbgorICAgICAgICBkZWwgdjIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJvb3QuY2FsbCgiaW5mbyIsICJleGlzdHMiLCAibmFtZSIpKQorCisgICAgZGVmIHRlc3RfX19lcV9fKHNlbGYpOgorICAgICAgICAjIHZhbHVlcyBkb2Vzbid0IG1hdHRlciwgb25seSBjbGFzcyBhbmQgbmFtZSBhcmUgY2hlY2tlZAorICAgICAgICB2MSA9IFZhcmlhYmxlKHNlbGYucm9vdCwgbmFtZT0iYWJjIikKKyAgICAgICAgdjIgPSBWYXJpYWJsZShzZWxmLnJvb3QsIG5hbWU9ImFiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodjEsIHYyKQorCisgICAgICAgIHYzID0gVmFyaWFibGUoc2VsZi5yb290LCBuYW1lPSJhYmMiKQorICAgICAgICB2NCA9IFN0cmluZ1ZhcihzZWxmLnJvb3QsIG5hbWU9ImFiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodjMsIHY0KQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9uYW1lKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBWYXJpYWJsZShzZWxmLnJvb3QsIG5hbWU9MTIzKQorCisgICAgZGVmIHRlc3RfaW5pdGlhbGl6ZShzZWxmKToKKyAgICAgICAgdiA9IFZhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uodi5zaWRlX2VmZmVjdCkKKyAgICAgICAgdi5zZXQoInZhbHVlIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHYuc2lkZV9lZmZlY3QpCisKKworY2xhc3MgVGVzdFN0cmluZ1ZhcihUZXN0QmFzZSk6CisKKyAgICBkZWYgdGVzdF9kZWZhdWx0KHNlbGYpOgorICAgICAgICB2ID0gU3RyaW5nVmFyKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiIiwgdi5nZXQoKSkKKworICAgIGRlZiB0ZXN0X2dldChzZWxmKToKKyAgICAgICAgdiA9IFN0cmluZ1ZhcihzZWxmLnJvb3QsICJhYmMiLCAibmFtZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImFiYyIsIHYuZ2V0KCkpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAidmFsdWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ2YWx1ZSIsIHYuZ2V0KCkpCisKKworY2xhc3MgVGVzdEludFZhcihUZXN0QmFzZSk6CisKKyAgICBkZWYgdGVzdF9kZWZhdWx0KHNlbGYpOgorICAgICAgICB2ID0gSW50VmFyKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCB2LmdldCgpKQorCisgICAgZGVmIHRlc3RfZ2V0KHNlbGYpOgorICAgICAgICB2ID0gSW50VmFyKHNlbGYucm9vdCwgMTIzLCAibmFtZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTIzLCB2LmdldCgpKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgIjM0NSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMzQ1LCB2LmdldCgpKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF92YWx1ZShzZWxmKToKKyAgICAgICAgdiA9IEludFZhcihzZWxmLnJvb3QsIG5hbWU9Im5hbWUiKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgInZhbHVlIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHYuZ2V0KCkKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICIzNDUuMCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB2LmdldCgpCisKKworY2xhc3MgVGVzdERvdWJsZVZhcihUZXN0QmFzZSk6CisKKyAgICBkZWYgdGVzdF9kZWZhdWx0KHNlbGYpOgorICAgICAgICB2ID0gRG91YmxlVmFyKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLjAsIHYuZ2V0KCkpCisKKyAgICBkZWYgdGVzdF9nZXQoc2VsZik6CisgICAgICAgIHYgPSBEb3VibGVWYXIoc2VsZi5yb290LCAxLjIzLCAibmFtZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoMS4yMywgdi5nZXQoKSkKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICIzLjQ1IikKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCgzLjQ1LCB2LmdldCgpKQorCisgICAgZGVmIHRlc3RfZ2V0X2Zyb21faW50KHNlbGYpOgorICAgICAgICB2ID0gRG91YmxlVmFyKHNlbGYucm9vdCwgMS4yMywgIm5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKDEuMjMsIHYuZ2V0KCkpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAiMy40NSIpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoMy40NSwgdi5nZXQoKSkKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICI0NTYiKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKDQ1Niwgdi5nZXQoKSkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfdmFsdWUoc2VsZik6CisgICAgICAgIHYgPSBEb3VibGVWYXIoc2VsZi5yb290LCBuYW1lPSJuYW1lIikKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICJ2YWx1ZSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB2LmdldCgpCisKKworY2xhc3MgVGVzdEJvb2xlYW5WYXIoVGVzdEJhc2UpOgorCisgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKKyAgICAgICAgdiA9IEJvb2xlYW5WYXIoc2VsZi5yb290KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCB2LmdldCgpKQorCisgICAgZGVmIHRlc3RfZ2V0KHNlbGYpOgorICAgICAgICB2ID0gQm9vbGVhblZhcihzZWxmLnJvb3QsIFRydWUsICJuYW1lIikKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChUcnVlLCB2LmdldCgpKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgIjAiKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKEZhbHNlLCB2LmdldCgpKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF92YWx1ZV9kb21haW4oc2VsZik6CisgICAgICAgIHYgPSBCb29sZWFuVmFyKHNlbGYucm9vdCwgbmFtZT0ibmFtZSIpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAidmFsdWUiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdi5nZXQoKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgIjEuMCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB2LmdldCgpCisKKwordGVzdHNfZ3VpID0gKFRlc3RWYXJpYWJsZSwgVGVzdFN0cmluZ1ZhciwgVGVzdEludFZhciwKKyAgICAgICAgICAgICBUZXN0RG91YmxlVmFyLCBUZXN0Qm9vbGVhblZhcikKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKyAgICBydW5fdW5pdHRlc3QoKnRlc3RzX2d1aSkKZGlmZiAtLWdpdCBhL0xpYi90b2tlbi5weSBiL0xpYi90b2tlbi5weQppbmRleCA2YjUzMjBkLi4zMWZhZTBhIDEwMDc1NQotLS0gYS9MaWIvdG9rZW4ucHkKKysrIGIvTGliL3Rva2VuLnB5CkBAIC03MCw3ICs3MCw3IEBACiAKIHRva19uYW1lID0ge3ZhbHVlOiBuYW1lCiAgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gZ2xvYmFscygpLml0ZW1zKCkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGludCl9CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBpbnQpIGFuZCBub3QgbmFtZS5zdGFydHN3aXRoKCdfJyl9CiBfX2FsbF9fLmV4dGVuZCh0b2tfbmFtZS52YWx1ZXMoKSkKIAogZGVmIElTVEVSTUlOQUwoeCk6CmRpZmYgLS1naXQgYS9MaWIvdG9rZW5pemUucHkgYi9MaWIvdG9rZW5pemUucHkKaW5kZXggMjljOWUyOS4uY2JmOTFlZiAxMDA2NDQKLS0tIGEvTGliL3Rva2VuaXplLnB5CisrKyBiL0xpYi90b2tlbml6ZS5weQpAQCAtNDUsNiArNDUsNTEgQEAKIEVOQ09ESU5HID0gTl9UT0tFTlMgKyAyCiB0b2tfbmFtZVtFTkNPRElOR10gPSAnRU5DT0RJTkcnCiBOX1RPS0VOUyArPSAzCitFWEFDVF9UT0tFTl9UWVBFUyA9IHsKKyAgICAnKCc6ICAgTFBBUiwKKyAgICAnKSc6ICAgUlBBUiwKKyAgICAnWyc6ICAgTFNRQiwKKyAgICAnXSc6ICAgUlNRQiwKKyAgICAnOic6ICAgQ09MT04sCisgICAgJywnOiAgIENPTU1BLAorICAgICc7JzogICBTRU1JLAorICAgICcrJzogICBQTFVTLAorICAgICctJzogICBNSU5VUywKKyAgICAnKic6ICAgU1RBUiwKKyAgICAnLyc6ICAgU0xBU0gsCisgICAgJ3wnOiAgIFZCQVIsCisgICAgJyYnOiAgIEFNUEVSLAorICAgICc8JzogICBMRVNTLAorICAgICc+JzogICBHUkVBVEVSLAorICAgICc9JzogICBFUVVBTCwKKyAgICAnLic6ICAgRE9ULAorICAgICclJzogICBQRVJDRU5ULAorICAgICd7JzogICBMQlJBQ0UsCisgICAgJ30nOiAgIFJCUkFDRSwKKyAgICAnPT0nOiAgRVFFUVVBTCwKKyAgICAnIT0nOiAgTk9URVFVQUwsCisgICAgJzw9JzogIExFU1NFUVVBTCwKKyAgICAnPj0nOiAgR1JFQVRFUkVRVUFMLAorICAgICd+JzogICBUSUxERSwKKyAgICAnXic6ICAgQ0lSQ1VNRkxFWCwKKyAgICAnPDwnOiAgTEVGVFNISUZULAorICAgICc+Pic6ICBSSUdIVFNISUZULAorICAgICcqKic6ICBET1VCTEVTVEFSLAorICAgICcrPSc6ICBQTFVTRVFVQUwsCisgICAgJy09JzogIE1JTkVRVUFMLAorICAgICcqPSc6ICBTVEFSRVFVQUwsCisgICAgJy89JzogIFNMQVNIRVFVQUwsCisgICAgJyU9JzogIFBFUkNFTlRFUVVBTCwKKyAgICAnJj0nOiAgQU1QRVJFUVVBTCwKKyAgICAnfD0nOiAgVkJBUkVRVUFMLAorICAgICdePSc6IENJUkNVTUZMRVhFUVVBTCwKKyAgICAnPDw9JzogTEVGVFNISUZURVFVQUwsCisgICAgJz4+PSc6IFJJR0hUU0hJRlRFUVVBTCwKKyAgICAnKio9JzogRE9VQkxFU1RBUkVRVUFMLAorICAgICcvLyc6ICBET1VCTEVTTEFTSCwKKyAgICAnLy89JzogRE9VQkxFU0xBU0hFUVVBTCwKKyAgICAnQCc6ICAgQVQKK30KIAogY2xhc3MgVG9rZW5JbmZvKGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoJ1Rva2VuSW5mbycsICd0eXBlIHN0cmluZyBzdGFydCBlbmQgbGluZScpKToKICAgICBkZWYgX19yZXByX18oc2VsZik6CkBAIC01Miw2ICs5NywxMyBAQAogICAgICAgICByZXR1cm4gKCdUb2tlbkluZm8odHlwZT0lcywgc3RyaW5nPSVyLCBzdGFydD0lciwgZW5kPSVyLCBsaW5lPSVyKScgJQogICAgICAgICAgICAgICAgIHNlbGYuX3JlcGxhY2UodHlwZT1hbm5vdGF0ZWRfdHlwZSkpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZXhhY3RfdHlwZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi50eXBlID09IE9QIGFuZCBzZWxmLnN0cmluZyBpbiBFWEFDVF9UT0tFTl9UWVBFUzoKKyAgICAgICAgICAgIHJldHVybiBFWEFDVF9UT0tFTl9UWVBFU1tzZWxmLnN0cmluZ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnR5cGUKKwogZGVmIGdyb3VwKCpjaG9pY2VzKTogcmV0dXJuICcoJyArICd8Jy5qb2luKGNob2ljZXMpICsgJyknCiBkZWYgYW55KCpjaG9pY2VzKTogcmV0dXJuIGdyb3VwKCpjaG9pY2VzKSArICcqJwogZGVmIG1heWJlKCpjaG9pY2VzKTogcmV0dXJuIGdyb3VwKCpjaG9pY2VzKSArICc/JwpAQCAtNzUsNiArMTI3LDggQEAKIEltYWdudW1iZXIgPSBncm91cChyJ1swLTldK1tqSl0nLCBGbG9hdG51bWJlciArIHInW2pKXScpCiBOdW1iZXIgPSBncm91cChJbWFnbnVtYmVyLCBGbG9hdG51bWJlciwgSW50bnVtYmVyKQogCitTdHJpbmdQcmVmaXggPSByJyg/OltiQl1bclJdP3xbclJdW2JCXT98W3VVXSk/JworCiAjIFRhaWwgZW5kIG9mICcgc3RyaW5nLgogU2luZ2xlID0gciJbXidcXF0qKD86XFwuW14nXFxdKikqJyIKICMgVGFpbCBlbmQgb2YgIiBzdHJpbmcuCkBAIC04MywxMCArMTM3LDEwIEBACiBTaW5nbGUzID0gciJbXidcXF0qKD86KD86XFwufCcoPyEnJykpW14nXFxdKikqJycnIgogIyBUYWlsIGVuZCBvZiAiIiIgc3RyaW5nLgogRG91YmxlMyA9IHInW14iXFxdKig/Oig/OlxcLnwiKD8hIiIpKVteIlxcXSopKiIiIicKLVRyaXBsZSA9IGdyb3VwKCJbYkJdP1tyUl0/JycnIiwgJ1tiQl0/W3JSXT8iIiInKQorVHJpcGxlID0gZ3JvdXAoU3RyaW5nUHJlZml4ICsgIicnJyIsIFN0cmluZ1ByZWZpeCArICciIiInKQogIyBTaW5nbGUtbGluZSAnIG9yICIgc3RyaW5nLgotU3RyaW5nID0gZ3JvdXAociJbYkJdP1tyUl0/J1teXG4nXFxdKig/OlxcLlteXG4nXFxdKikqJyIsCi0gICAgICAgICAgICAgICByJ1tiQl0/W3JSXT8iW15cbiJcXF0qKD86XFwuW15cbiJcXF0qKSoiJykKK1N0cmluZyA9IGdyb3VwKFN0cmluZ1ByZWZpeCArIHIiJ1teXG4nXFxdKig/OlxcLlteXG4nXFxdKikqJyIsCisgICAgICAgICAgICAgICBTdHJpbmdQcmVmaXggKyByJyJbXlxuIlxcXSooPzpcXC5bXlxuIlxcXSopKiInKQogCiAjIEJlY2F1c2Ugb2YgbGVmdG1vc3QtdGhlbi1sb25nZXN0IG1hdGNoIHNlbWFudGljcywgYmUgc3VyZSB0byBwdXQgdGhlCiAjIGxvbmdlc3Qgb3BlcmF0b3JzIGZpcnN0IChlLmcuLCBpZiA9IGNhbWUgYmVmb3JlID09LCA9PSB3b3VsZCBnZXQKQEAgLTEwNCw5ICsxNTgsOSBAQAogVG9rZW4gPSBJZ25vcmUgKyBQbGFpblRva2VuCiAKICMgRmlyc3QgKG9yIG9ubHkpIGxpbmUgb2YgJyBvciAiIHN0cmluZy4KLUNvbnRTdHIgPSBncm91cChyIltiQl0/W3JSXT8nW15cbidcXF0qKD86XFwuW15cbidcXF0qKSoiICsKK0NvbnRTdHIgPSBncm91cChTdHJpbmdQcmVmaXggKyByIidbXlxuJ1xcXSooPzpcXC5bXlxuJ1xcXSopKiIgKwogICAgICAgICAgICAgICAgIGdyb3VwKCInIiwgcidcXFxyP1xuJyksCi0gICAgICAgICAgICAgICAgcidbYkJdP1tyUl0/IlteXG4iXFxdKig/OlxcLlteXG4iXFxdKikqJyArCisgICAgICAgICAgICAgICAgU3RyaW5nUHJlZml4ICsgciciW15cbiJcXF0qKD86XFwuW15cbiJcXF0qKSonICsKICAgICAgICAgICAgICAgICBncm91cCgnIicsIHInXFxccj9cbicpKQogUHNldWRvRXh0cmFzID0gZ3JvdXAocidcXFxyP1xufFxaJywgQ29tbWVudCwgVHJpcGxlKQogUHNldWRvVG9rZW4gPSBXaGl0ZXNwYWNlICsgZ3JvdXAoUHNldWRvRXh0cmFzLCBOdW1iZXIsIEZ1bm55LCBDb250U3RyLCBOYW1lKQpAQCAtMTE0LDM3ICsxNjgsNDkgQEAKIGRlZiBfY29tcGlsZShleHByKToKICAgICByZXR1cm4gcmUuY29tcGlsZShleHByLCByZS5VTklDT0RFKQogCi10b2tlbnByb2csIHBzZXVkb3Byb2csIHNpbmdsZTNwcm9nLCBkb3VibGUzcHJvZyA9IG1hcCgKLSAgICBfY29tcGlsZSwgKFRva2VuLCBQc2V1ZG9Ub2tlbiwgU2luZ2xlMywgRG91YmxlMykpCi1lbmRwcm9ncyA9IHsiJyI6IF9jb21waWxlKFNpbmdsZSksICciJzogX2NvbXBpbGUoRG91YmxlKSwKLSAgICAgICAgICAgICInJyciOiBzaW5nbGUzcHJvZywgJyIiIic6IGRvdWJsZTNwcm9nLAotICAgICAgICAgICAgInInJyciOiBzaW5nbGUzcHJvZywgJ3IiIiInOiBkb3VibGUzcHJvZywKLSAgICAgICAgICAgICJiJycnIjogc2luZ2xlM3Byb2csICdiIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAiYnInJyciOiBzaW5nbGUzcHJvZywgJ2JyIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAiUicnJyI6IHNpbmdsZTNwcm9nLCAnUiIiIic6IGRvdWJsZTNwcm9nLAotICAgICAgICAgICAgIkInJyciOiBzaW5nbGUzcHJvZywgJ0IiIiInOiBkb3VibGUzcHJvZywKLSAgICAgICAgICAgICJiUicnJyI6IHNpbmdsZTNwcm9nLCAnYlIiIiInOiBkb3VibGUzcHJvZywKLSAgICAgICAgICAgICJCcicnJyI6IHNpbmdsZTNwcm9nLCAnQnIiIiInOiBkb3VibGUzcHJvZywKLSAgICAgICAgICAgICJCUicnJyI6IHNpbmdsZTNwcm9nLCAnQlIiIiInOiBkb3VibGUzcHJvZywKLSAgICAgICAgICAgICdyJzogTm9uZSwgJ1InOiBOb25lLCAnYic6IE5vbmUsICdCJzogTm9uZX0KK2VuZHBhdHMgPSB7IiciOiBTaW5nbGUsICciJzogRG91YmxlLAorICAgICAgICAgICAiJycnIjogU2luZ2xlMywgJyIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJyJycnIjogU2luZ2xlMywgJ3IiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiYicnJyI6IFNpbmdsZTMsICdiIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgIlInJyciOiBTaW5nbGUzLCAnUiIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJCJycnIjogU2luZ2xlMywgJ0IiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiYnInJyciOiBTaW5nbGUzLCAnYnIiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiYlInJyciOiBTaW5nbGUzLCAnYlIiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiQnInJyciOiBTaW5nbGUzLCAnQnIiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiQlInJyciOiBTaW5nbGUzLCAnQlIiIiInOiBEb3VibGUzLAorICAgICAgICAgICAicmInJyciOiBTaW5nbGUzLCAncmIiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiUmInJyciOiBTaW5nbGUzLCAnUmIiIiInOiBEb3VibGUzLAorICAgICAgICAgICAickInJyciOiBTaW5nbGUzLCAnckIiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiUkInJyciOiBTaW5nbGUzLCAnUkIiIiInOiBEb3VibGUzLAorICAgICAgICAgICAidScnJyI6IFNpbmdsZTMsICd1IiIiJzogRG91YmxlMywKKyAgICAgICAgICAgIlInJyciOiBTaW5nbGUzLCAnUiIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJVJycnIjogU2luZ2xlMywgJ1UiIiInOiBEb3VibGUzLAorICAgICAgICAgICAncic6IE5vbmUsICdSJzogTm9uZSwgJ2InOiBOb25lLCAnQic6IE5vbmUsCisgICAgICAgICAgICd1JzogTm9uZSwgJ1UnOiBOb25lfQogCiB0cmlwbGVfcXVvdGVkID0ge30KIGZvciB0IGluICgiJycnIiwgJyIiIicsCiAgICAgICAgICAgInInJyciLCAnciIiIicsICJSJycnIiwgJ1IiIiInLAogICAgICAgICAgICJiJycnIiwgJ2IiIiInLCAiQicnJyIsICdCIiIiJywKICAgICAgICAgICAiYnInJyciLCAnYnIiIiInLCAiQnInJyciLCAnQnIiIiInLAotICAgICAgICAgICJiUicnJyIsICdiUiIiIicsICJCUicnJyIsICdCUiIiIicpOgorICAgICAgICAgICJiUicnJyIsICdiUiIiIicsICJCUicnJyIsICdCUiIiIicsCisgICAgICAgICAgInJiJycnIiwgJ3JiIiIiJywgInJCJycnIiwgJ3JCIiIiJywKKyAgICAgICAgICAiUmInJyciLCAnUmIiIiInLCAiUkInJyciLCAnUkIiIiInLAorICAgICAgICAgICJ1JycnIiwgJ3UiIiInLCAiVScnJyIsICdVIiIiJywKKyAgICAgICAgICApOgogICAgIHRyaXBsZV9xdW90ZWRbdF0gPSB0CiBzaW5nbGVfcXVvdGVkID0ge30KIGZvciB0IGluICgiJyIsICciJywKICAgICAgICAgICAiciciLCAnciInLCAiUiciLCAnUiInLAogICAgICAgICAgICJiJyIsICdiIicsICJCJyIsICdCIicsCiAgICAgICAgICAgImJyJyIsICdiciInLCAiQnInIiwgJ0JyIicsCi0gICAgICAgICAgImJSJyIsICdiUiInLCAiQlInIiwgJ0JSIicgKToKKyAgICAgICAgICAiYlInIiwgJ2JSIicsICJCUiciLCAnQlIiJyAsCisgICAgICAgICAgInJiJyIsICdyYiInLCAickInIiwgJ3JCIicsCisgICAgICAgICAgIlJiJyIsICdSYiInLCAiUkInIiwgJ1JCIicgLAorICAgICAgICAgICJ1JyIsICd1IicsICJVJyIsICdVIicsCisgICAgICAgICAgKToKICAgICBzaW5nbGVfcXVvdGVkW3RdID0gdAogCi1kZWwgX2NvbXBpbGUKLQogdGFic2l6ZSA9IDgKIAogY2xhc3MgVG9rZW5FcnJvcihFeGNlcHRpb24pOiBwYXNzCkBAIC0yODEsNiArMzQ3LDEwIEBACiAKICAgICBJZiBubyBlbmNvZGluZyBpcyBzcGVjaWZpZWQsIHRoZW4gdGhlIGRlZmF1bHQgb2YgJ3V0Zi04JyB3aWxsIGJlIHJldHVybmVkLgogICAgICIiIgorICAgIHRyeToKKyAgICAgICAgZmlsZW5hbWUgPSByZWFkbGluZS5fX3NlbGZfXy5uYW1lCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBmaWxlbmFtZSA9IE5vbmUKICAgICBib21fZm91bmQgPSBGYWxzZQogICAgIGVuY29kaW5nID0gTm9uZQogICAgIGRlZmF1bHQgPSAndXRmLTgnCkBAIC0yOTcsNyArMzY3LDEwIEBACiAgICAgICAgICAgICAjIHBlciBkZWZhdWx0IGVuY29kaW5nLgogICAgICAgICAgICAgbGluZV9zdHJpbmcgPSBsaW5lLmRlY29kZSgndXRmLTgnKQogICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgotICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IoImludmFsaWQgb3IgbWlzc2luZyBlbmNvZGluZyBkZWNsYXJhdGlvbiIpCisgICAgICAgICAgICBtc2cgPSAiaW52YWxpZCBvciBtaXNzaW5nIGVuY29kaW5nIGRlY2xhcmF0aW9uIgorICAgICAgICAgICAgaWYgZmlsZW5hbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgbXNnID0gJ3t9IGZvciB7IXJ9Jy5mb3JtYXQobXNnLCBmaWxlbmFtZSkKKyAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKG1zZykKIAogICAgICAgICBtYXRjaGVzID0gY29va2llX3JlLmZpbmRhbGwobGluZV9zdHJpbmcpCiAgICAgICAgIGlmIG5vdCBtYXRjaGVzOgpAQCAtMzA3LDEyICszODAsMjEgQEAKICAgICAgICAgICAgIGNvZGVjID0gbG9va3VwKGVuY29kaW5nKQogICAgICAgICBleGNlcHQgTG9va3VwRXJyb3I6CiAgICAgICAgICAgICAjIFRoaXMgYmVoYXZpb3VyIG1pbWljcyB0aGUgUHl0aG9uIGludGVycHJldGVyCi0gICAgICAgICAgICByYWlzZSBTeW50YXhFcnJvcigidW5rbm93biBlbmNvZGluZzogIiArIGVuY29kaW5nKQorICAgICAgICAgICAgaWYgZmlsZW5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBlbmNvZGluZzogIiArIGVuY29kaW5nCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1zZyA9ICJ1bmtub3duIGVuY29kaW5nIGZvciB7IXJ9OiB7fSIuZm9ybWF0KGZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcpCisgICAgICAgICAgICByYWlzZSBTeW50YXhFcnJvcihtc2cpCiAKICAgICAgICAgaWYgYm9tX2ZvdW5kOgogICAgICAgICAgICAgaWYgZW5jb2RpbmcgIT0gJ3V0Zi04JzoKICAgICAgICAgICAgICAgICAjIFRoaXMgYmVoYXZpb3VyIG1pbWljcyB0aGUgUHl0aG9uIGludGVycHJldGVyCi0gICAgICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IoJ2VuY29kaW5nIHByb2JsZW06IHV0Zi04JykKKyAgICAgICAgICAgICAgICBpZiBmaWxlbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBtc2cgPSAnZW5jb2RpbmcgcHJvYmxlbTogdXRmLTgnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gJ2VuY29kaW5nIHByb2JsZW0gZm9yIHshcn06IHV0Zi04Jy5mb3JtYXQoZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IobXNnKQogICAgICAgICAgICAgZW5jb2RpbmcgKz0gJy1zaWcnCiAgICAgICAgIHJldHVybiBlbmNvZGluZwogCkBAIC00NjksNyArNTUxLDcgQEAKICAgICAgICAgICAgIGNvbnRpbnVlZCA9IDAKIAogICAgICAgICB3aGlsZSBwb3MgPCBtYXg6Ci0gICAgICAgICAgICBwc2V1ZG9tYXRjaCA9IHBzZXVkb3Byb2cubWF0Y2gobGluZSwgcG9zKQorICAgICAgICAgICAgcHNldWRvbWF0Y2ggPSBfY29tcGlsZShQc2V1ZG9Ub2tlbikubWF0Y2gobGluZSwgcG9zKQogICAgICAgICAgICAgaWYgcHNldWRvbWF0Y2g6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNjYW4gZm9yIHRva2VucwogICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQgPSBwc2V1ZG9tYXRjaC5zcGFuKDEpCiAgICAgICAgICAgICAgICAgc3BvcywgZXBvcywgcG9zID0gKGxudW0sIHN0YXJ0KSwgKGxudW0sIGVuZCksIGVuZApAQCAtNDg3LDcgKzU2OSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBub3QgdG9rZW4uZW5kc3dpdGgoIlxuIikKICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKENPTU1FTlQsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQogICAgICAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gdHJpcGxlX3F1b3RlZDoKLSAgICAgICAgICAgICAgICAgICAgZW5kcHJvZyA9IGVuZHByb2dzW3Rva2VuXQorICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gX2NvbXBpbGUoZW5kcGF0c1t0b2tlbl0pCiAgICAgICAgICAgICAgICAgICAgIGVuZG1hdGNoID0gZW5kcHJvZy5tYXRjaChsaW5lLCBwb3MpCiAgICAgICAgICAgICAgICAgICAgIGlmIGVuZG1hdGNoOiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsIG9uIG9uZSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSBlbmRtYXRjaC5lbmQoMCkKQEAgLTUwMyw4ICs1ODUsOSBAQAogICAgICAgICAgICAgICAgICAgICB0b2tlbls6M10gaW4gc2luZ2xlX3F1b3RlZDoKICAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW5bLTFdID09ICdcbic6ICAgICAgICAgICAgICAgICAgIyBjb250aW51ZWQgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJzdGFydCA9IChsbnVtLCBzdGFydCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZHByb2cgPSAoZW5kcHJvZ3NbaW5pdGlhbF0gb3IgZW5kcHJvZ3NbdG9rZW5bMV1dIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHByb2dzW3Rva2VuWzJdXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuZHByb2cgPSBfY29tcGlsZShlbmRwYXRzW2luaXRpYWxdIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcGF0c1t0b2tlblsxXV0gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwYXRzW3Rva2VuWzJdXSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRzdHIsIG5lZWRjb250ID0gbGluZVtzdGFydDpdLCAxCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250bGluZSA9IGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCkBAIC01MzUsMjcgKzYxOCw2NSBAQAogZGVmIGdlbmVyYXRlX3Rva2VucyhyZWFkbGluZSk6CiAgICAgcmV0dXJuIF90b2tlbml6ZShyZWFkbGluZSwgTm9uZSkKIAorZGVmIG1haW4oKToKKyAgICBpbXBvcnQgYXJncGFyc2UKKworICAgICMgSGVscGVyIGVycm9yIGhhbmRsaW5nIHJvdXRpbmVzCisgICAgZGVmIHBlcnJvcihtZXNzYWdlKToKKyAgICAgICAgcHJpbnQobWVzc2FnZSwgZmlsZT1zeXMuc3RkZXJyKQorCisgICAgZGVmIGVycm9yKG1lc3NhZ2UsIGZpbGVuYW1lPU5vbmUsIGxvY2F0aW9uPU5vbmUpOgorICAgICAgICBpZiBsb2NhdGlvbjoKKyAgICAgICAgICAgIGFyZ3MgPSAoZmlsZW5hbWUsKSArIGxvY2F0aW9uICsgKG1lc3NhZ2UsKQorICAgICAgICAgICAgcGVycm9yKCIlczolZDolZDogZXJyb3I6ICVzIiAlIGFyZ3MpCisgICAgICAgIGVsaWYgZmlsZW5hbWU6CisgICAgICAgICAgICBwZXJyb3IoIiVzOiBlcnJvcjogJXMiICUgKGZpbGVuYW1lLCBtZXNzYWdlKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBlcnJvcigiZXJyb3I6ICVzIiAlIG1lc3NhZ2UpCisgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICAjIFBhcnNlIHRoZSBhcmd1bWVudHMgYW5kIG9wdGlvbnMKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihwcm9nPSdweXRob24gLW0gdG9rZW5pemUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoZGVzdD0nZmlsZW5hbWUnLCBuYXJncz0nPycsCisgICAgICAgICAgICAgICAgICAgICAgICBtZXRhdmFyPSdmaWxlbmFtZS5weScsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd0aGUgZmlsZSB0byB0b2tlbml6ZTsgZGVmYXVsdHMgdG8gc3RkaW4nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1lJywgJy0tZXhhY3QnLCBkZXN0PSdleGFjdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXNwbGF5IHRva2VuIG5hbWVzIHVzaW5nIHRoZSBleGFjdCB0eXBlJykKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgdHJ5OgorICAgICAgICAjIFRva2VuaXplIHRoZSBpbnB1dAorICAgICAgICBpZiBhcmdzLmZpbGVuYW1lOgorICAgICAgICAgICAgZmlsZW5hbWUgPSBhcmdzLmZpbGVuYW1lCisgICAgICAgICAgICB3aXRoIGJ1aWx0aW5zLm9wZW4oZmlsZW5hbWUsICdyYicpIGFzIGY6CisgICAgICAgICAgICAgICAgdG9rZW5zID0gbGlzdCh0b2tlbml6ZShmLnJlYWRsaW5lKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZpbGVuYW1lID0gIjxzdGRpbj4iCisgICAgICAgICAgICB0b2tlbnMgPSBfdG9rZW5pemUoc3lzLnN0ZGluLnJlYWRsaW5lLCBOb25lKQorCisgICAgICAgICMgT3V0cHV0IHRoZSB0b2tlbml6YXRpb24KKyAgICAgICAgZm9yIHRva2VuIGluIHRva2VuczoKKyAgICAgICAgICAgIHRva2VuX3R5cGUgPSB0b2tlbi50eXBlCisgICAgICAgICAgICBpZiBhcmdzLmV4YWN0OgorICAgICAgICAgICAgICAgIHRva2VuX3R5cGUgPSB0b2tlbi5leGFjdF90eXBlCisgICAgICAgICAgICB0b2tlbl9yYW5nZSA9ICIlZCwlZC0lZCwlZDoiICUgKHRva2VuLnN0YXJ0ICsgdG9rZW4uZW5kKQorICAgICAgICAgICAgcHJpbnQoIiUtMjBzJS0xNXMlLTE1ciIgJQorICAgICAgICAgICAgICAgICAgKHRva2VuX3JhbmdlLCB0b2tfbmFtZVt0b2tlbl90eXBlXSwgdG9rZW4uc3RyaW5nKSkKKyAgICBleGNlcHQgSW5kZW50YXRpb25FcnJvciBhcyBlcnI6CisgICAgICAgIGxpbmUsIGNvbHVtbiA9IGVyci5hcmdzWzFdWzE6M10KKyAgICAgICAgZXJyb3IoZXJyLmFyZ3NbMF0sIGZpbGVuYW1lLCAobGluZSwgY29sdW1uKSkKKyAgICBleGNlcHQgVG9rZW5FcnJvciBhcyBlcnI6CisgICAgICAgIGxpbmUsIGNvbHVtbiA9IGVyci5hcmdzWzFdCisgICAgICAgIGVycm9yKGVyci5hcmdzWzBdLCBmaWxlbmFtZSwgKGxpbmUsIGNvbHVtbikpCisgICAgZXhjZXB0IFN5bnRheEVycm9yIGFzIGVycjoKKyAgICAgICAgZXJyb3IoZXJyLCBmaWxlbmFtZSkKKyAgICBleGNlcHQgSU9FcnJvciBhcyBlcnI6CisgICAgICAgIGVycm9yKGVycikKKyAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgIHByaW50KCJpbnRlcnJ1cHRlZFxuIikKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKKyAgICAgICAgcGVycm9yKCJ1bmV4cGVjdGVkIGVycm9yOiAlcyIgJSBlcnIpCisgICAgICAgIHJhaXNlCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgIyBRdWljayBzYW5pdHkgY2hlY2sKLSAgICBzID0gYicnJ2RlZiBwYXJzZWxpbmUoc2VsZiwgbGluZSk6Ci0gICAgICAgICAgICAiIiJQYXJzZSB0aGUgbGluZSBpbnRvIGEgY29tbWFuZCBuYW1lIGFuZCBhIHN0cmluZyBjb250YWluaW5nCi0gICAgICAgICAgICB0aGUgYXJndW1lbnRzLiAgUmV0dXJucyBhIHR1cGxlIGNvbnRhaW5pbmcgKGNvbW1hbmQsIGFyZ3MsIGxpbmUpLgotICAgICAgICAgICAgJ2NvbW1hbmQnIGFuZCAnYXJncycgbWF5IGJlIE5vbmUgaWYgdGhlIGxpbmUgY291bGRuJ3QgYmUgcGFyc2VkLgotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCi0gICAgICAgICAgICBpZiBub3QgbGluZToKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgbGluZQotICAgICAgICAgICAgZWxpZiBsaW5lWzBdID09ICc/JzoKLSAgICAgICAgICAgICAgICBsaW5lID0gJ2hlbHAgJyArIGxpbmVbMTpdCi0gICAgICAgICAgICBlbGlmIGxpbmVbMF0gPT0gJyEnOgotICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ2RvX3NoZWxsJyk6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUgPSAnc2hlbGwgJyArIGxpbmVbMTpdCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIGxpbmUKLSAgICAgICAgICAgIGksIG4gPSAwLCBsZW4obGluZSkKLSAgICAgICAgICAgIHdoaWxlIGkgPCBuIGFuZCBsaW5lW2ldIGluIHNlbGYuaWRlbnRjaGFyczogaSA9IGkrMQotICAgICAgICAgICAgY21kLCBhcmcgPSBsaW5lWzppXSwgbGluZVtpOl0uc3RyaXAoKQotICAgICAgICAgICAgcmV0dXJuIGNtZCwgYXJnLCBsaW5lCi0gICAgJycnCi0gICAgZm9yIHRvayBpbiB0b2tlbml6ZShpdGVyKHMuc3BsaXRsaW5lcygpKS5fX25leHRfXyk6Ci0gICAgICAgIHByaW50KHRvaykKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90cmFjZS5weSBiL0xpYi90cmFjZS5weQppbmRleCA4NTAzNjliLi5jMDliMzY1IDEwMDY0NAotLS0gYS9MaWIvdHJhY2UucHkKKysrIGIvTGliL3RyYWNlLnB5CkBAIC0zOSw4ICszOSw4IEBACiAKICAgIyBjcmVhdGUgYSBUcmFjZSBvYmplY3QsIHRlbGxpbmcgaXQgd2hhdCB0byBpZ25vcmUsIGFuZCB3aGV0aGVyIHRvCiAgICMgZG8gdHJhY2luZyBvciBsaW5lLWNvdW50aW5nIG9yIGJvdGguCi0gIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5wcmVmaXgsIHN5cy5leGVjX3ByZWZpeCxdLCB0cmFjZT0wLAotICAgICAgICAgICAgICAgICAgICBjb3VudD0xKQorICB0cmFjZXIgPSB0cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMuYmFzZV9wcmVmaXgsIHN5cy5iYXNlX2V4ZWNfcHJlZml4LF0sCisgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlPTAsIGNvdW50PTEpCiAgICMgcnVuIHRoZSBuZXcgY29tbWFuZCB1c2luZyB0aGUgZ2l2ZW4gdHJhY2VyCiAgIHRyYWNlci5ydW4oJ21haW4oKScpCiAgICMgbWFrZSBhIHJlcG9ydCwgcGxhY2luZyBvdXRwdXQgaW4gL3RtcApAQCAtNDgsMTIgKzQ4LDEwIEBACiAgIHIud3JpdGVfcmVzdWx0cyhzaG93X21pc3Npbmc9VHJ1ZSwgY292ZXJkaXI9Ii90bXAiKQogIiIiCiBfX2FsbF9fID0gWydUcmFjZScsICdDb3ZlcmFnZVJlc3VsdHMnXQotaW1wb3J0IGlvCiBpbXBvcnQgbGluZWNhY2hlCiBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKIGltcG9ydCB0b2tlbgogaW1wb3J0IHRva2VuaXplCiBpbXBvcnQgaW5zcGVjdApAQCAtNjEsNiArNTksMTAgQEAKIGltcG9ydCBkaXMKIGltcG9ydCBwaWNrbGUKIGZyb20gd2FybmluZ3MgaW1wb3J0IHdhcm4gYXMgX3dhcm4KK3RyeToKKyAgICBmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZQogCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwpAQCAtMjQ0LDggKzI0Niw3IEBACiAgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBmaWxlbmFtZSBkb2VzIG5vdCByZWZlciB0byBhIGZpbGUKICAgICAgICAgd2Ugd2FudCB0byBoYXZlIHJlcG9ydGVkLgogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIChmaWxlbmFtZSA9PSAiPHN0cmluZz4iIG9yCi0gICAgICAgICAgICAgICAgZmlsZW5hbWUuc3RhcnRzd2l0aCgiPGRvY3Rlc3QgIikpCisgICAgICAgIHJldHVybiBmaWxlbmFtZS5zdGFydHN3aXRoKCc8JykgYW5kIGZpbGVuYW1lLmVuZHN3aXRoKCc+JykKIAogICAgIGRlZiB1cGRhdGUoc2VsZiwgb3RoZXIpOgogICAgICAgICAiIiJNZXJnZSBpbiB0aGUgZGF0YSBmcm9tIGFub3RoZXIgQ292ZXJhZ2VSZXN1bHRzIiIiCkBAIC00NzcsNyArNDc4LDcgQEAKICAgICAgICAgc2VsZi5fY2FsbGVyX2NhY2hlID0ge30KICAgICAgICAgc2VsZi5zdGFydF90aW1lID0gTm9uZQogICAgICAgICBpZiB0aW1pbmc6Ci0gICAgICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgc2VsZi5zdGFydF90aW1lID0gX3RpbWUoKQogICAgICAgICBpZiBjb3VudGNhbGxlcnM6CiAgICAgICAgICAgICBzZWxmLmdsb2JhbHRyYWNlID0gc2VsZi5nbG9iYWx0cmFjZV90cmFja2NhbGxlcnMKICAgICAgICAgZWxpZiBjb3VudGZ1bmNzOgpAQCAtNjE1LDcgKzYxNiw3IEBACiAgICAgICAgICAgICBzZWxmLmNvdW50c1trZXldID0gc2VsZi5jb3VudHMuZ2V0KGtleSwgMCkgKyAxCiAKICAgICAgICAgICAgIGlmIHNlbGYuc3RhcnRfdGltZToKLSAgICAgICAgICAgICAgICBwcmludCgnJS4yZicgJSAodGltZS50aW1lKCkgLSBzZWxmLnN0YXJ0X3RpbWUpLCBlbmQ9JyAnKQorICAgICAgICAgICAgICAgIHByaW50KCclLjJmJyAlIChfdGltZSgpIC0gc2VsZi5zdGFydF90aW1lKSwgZW5kPScgJykKICAgICAgICAgICAgIGJuYW1lID0gb3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSkKICAgICAgICAgICAgIHByaW50KCIlcyglZCk6ICVzIiAlIChibmFtZSwgbGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8pKSwgZW5kPScnKQpAQCAtNjI4LDcgKzYyOSw3IEBACiAgICAgICAgICAgICBsaW5lbm8gPSBmcmFtZS5mX2xpbmVubwogCiAgICAgICAgICAgICBpZiBzZWxmLnN0YXJ0X3RpbWU6Ci0gICAgICAgICAgICAgICAgcHJpbnQoJyUuMmYnICUgKHRpbWUudGltZSgpIC0gc2VsZi5zdGFydF90aW1lKSwgZW5kPScgJykKKyAgICAgICAgICAgICAgICBwcmludCgnJS4yZicgJSAoX3RpbWUoKSAtIHNlbGYuc3RhcnRfdGltZSksIGVuZD0nICcpCiAgICAgICAgICAgICBibmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpCiAgICAgICAgICAgICBwcmludCgiJXMoJWQpOiAlcyIgJSAoYm5hbWUsIGxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lY2FjaGUuZ2V0bGluZShmaWxlbmFtZSwgbGluZW5vKSksIGVuZD0nJykKQEAgLTc1MCwxMCArNzUxLDEwIEBACiAgICAgICAgICAgICAgICAgIyBzaG91bGQgSSBhbHNvIGNhbGwgZXhwYW5kdXNlcj8gKGFmdGVyIGFsbCwgY291bGQgdXNlICRIT01FKQogCiAgICAgICAgICAgICAgICAgcyA9IHMucmVwbGFjZSgiJHByZWZpeCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgImxpYiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCAibGliIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSkpCiAgICAgICAgICAgICAgICAgcyA9IHMucmVwbGFjZSgiJGV4ZWNfcHJlZml4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICJsaWIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5iYXNlX2V4ZWNfcHJlZml4LCAibGliIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSkpCiAgICAgICAgICAgICAgICAgcyA9IG9zLnBhdGgubm9ybXBhdGgocykKICAgICAgICAgICAgICAgICBpZ25vcmVfZGlycy5hcHBlbmQocykKZGlmZiAtLWdpdCBhL0xpYi90cmFjZWJhY2sucHkgYi9MaWIvdHJhY2ViYWNrLnB5CmluZGV4IDhkNGU5NmUuLmVlYjllNzMgMTAwNjQ0Ci0tLSBhL0xpYi90cmFjZWJhY2sucHkKKysrIGIvTGliL3RyYWNlYmFjay5weQpAQCAtMTE5LDE1ICsxMTksMTYgQEAKICAgICAgICAgc2VlbiA9IHNldCgpCiAgICAgc2Vlbi5hZGQoZXhjKQogICAgIGl0cyA9IFtdCisgICAgY29udGV4dCA9IGV4Yy5fX2NvbnRleHRfXwogICAgIGNhdXNlID0gZXhjLl9fY2F1c2VfXwogICAgIGlmIGNhdXNlIGlzIG5vdCBOb25lIGFuZCBjYXVzZSBub3QgaW4gc2VlbjoKLSAgICAgICAgaXRzLmFwcGVuZChfaXRlcl9jaGFpbihjYXVzZSwgTm9uZSwgc2VlbikpCisgICAgICAgIGl0cy5hcHBlbmQoX2l0ZXJfY2hhaW4oY2F1c2UsIEZhbHNlLCBzZWVuKSkKICAgICAgICAgaXRzLmFwcGVuZChbKF9jYXVzZV9tZXNzYWdlLCBOb25lKV0pCi0gICAgZWxzZToKLSAgICAgICAgY29udGV4dCA9IGV4Yy5fX2NvbnRleHRfXwotICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBjb250ZXh0IG5vdCBpbiBzZWVuOgotICAgICAgICAgICAgaXRzLmFwcGVuZChfaXRlcl9jaGFpbihjb250ZXh0LCBOb25lLCBzZWVuKSkKLSAgICAgICAgICAgIGl0cy5hcHBlbmQoWyhfY29udGV4dF9tZXNzYWdlLCBOb25lKV0pCisgICAgZWxpZiAoY29udGV4dCBpcyBub3QgTm9uZSBhbmQKKyAgICAgICAgICBub3QgZXhjLl9fc3VwcHJlc3NfY29udGV4dF9fIGFuZAorICAgICAgICAgIGNvbnRleHQgbm90IGluIHNlZW4pOgorICAgICAgICBpdHMuYXBwZW5kKF9pdGVyX2NoYWluKGNvbnRleHQsIE5vbmUsIHNlZW4pKQorICAgICAgICBpdHMuYXBwZW5kKFsoX2NvbnRleHRfbWVzc2FnZSwgTm9uZSldKQogICAgIGl0cy5hcHBlbmQoWyhleGMsIGN1c3RvbV90YiBvciBleGMuX190cmFjZWJhY2tfXyldKQogICAgICMgaXRlcnRvb2xzLmNoYWluIGlzIGluIGFuIGV4dGVuc2lvbiBtb2R1bGUgYW5kIG1heSBiZSB1bmF2YWlsYWJsZQogICAgIGZvciBpdCBpbiBpdHM6CmRpZmYgLS1naXQgYS9MaWIvdHVydGxlLnB5IGIvTGliL3R1cnRsZS5weQppbmRleCAxODUyOWExLi40OWNkODZkIDEwMDY0NAotLS0gYS9MaWIvdHVydGxlLnB5CisrKyBiL0xpYi90dXJ0bGUucHkKQEAgLTEwOCw3ICsxMDgsNiBAQAogaW1wb3J0IHR5cGVzCiBpbXBvcnQgbWF0aAogaW1wb3J0IHRpbWUKLWltcG9ydCBvcwogaW1wb3J0IGluc3BlY3QKIAogZnJvbSBvcy5wYXRoIGltcG9ydCBpc2ZpbGUsIHNwbGl0LCBqb2luCmRpZmYgLS1naXQgYS9MaWIvdHlwZXMucHkgYi9MaWIvdHlwZXMucHkKaW5kZXggYWIzNTRkMS4uY2ZkMDllYSAxMDA2NDQKLS0tIGEvTGliL3R5cGVzLnB5CisrKyBiL0xpYi90eXBlcy5weQpAQCAtMTIsNiArMTIsOCBAQAogRnVuY3Rpb25UeXBlID0gdHlwZShfZikKIExhbWJkYVR5cGUgPSB0eXBlKGxhbWJkYTogTm9uZSkgICAgICAgICAjIFNhbWUgYXMgRnVuY3Rpb25UeXBlCiBDb2RlVHlwZSA9IHR5cGUoX2YuX19jb2RlX18pCitNYXBwaW5nUHJveHlUeXBlID0gdHlwZSh0eXBlLl9fZGljdF9fKQorU2ltcGxlTmFtZXNwYWNlID0gdHlwZShzeXMuaW1wbGVtZW50YXRpb24pCiAKIGRlZiBfZygpOgogICAgIHlpZWxkIDEKQEAgLTM5LDMgKzQxLDYxIEBACiBNZW1iZXJEZXNjcmlwdG9yVHlwZSA9IHR5cGUoRnVuY3Rpb25UeXBlLl9fZ2xvYmFsc19fKQogCiBkZWwgc3lzLCBfZiwgX2csIF9DLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm90IGZvciBleHBvcnQKKworCisjIFByb3ZpZGUgYSBQRVAgMzExNSBjb21wbGlhbnQgbWVjaGFuaXNtIGZvciBjbGFzcyBjcmVhdGlvbgorZGVmIG5ld19jbGFzcyhuYW1lLCBiYXNlcz0oKSwga3dkcz1Ob25lLCBleGVjX2JvZHk9Tm9uZSk6CisgICAgIiIiQ3JlYXRlIGEgY2xhc3Mgb2JqZWN0IGR5bmFtaWNhbGx5IHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MuIiIiCisgICAgbWV0YSwgbnMsIGt3ZHMgPSBwcmVwYXJlX2NsYXNzKG5hbWUsIGJhc2VzLCBrd2RzKQorICAgIGlmIGV4ZWNfYm9keSBpcyBub3QgTm9uZToKKyAgICAgICAgZXhlY19ib2R5KG5zKQorICAgIHJldHVybiBtZXRhKG5hbWUsIGJhc2VzLCBucywgKiprd2RzKQorCitkZWYgcHJlcGFyZV9jbGFzcyhuYW1lLCBiYXNlcz0oKSwga3dkcz1Ob25lKToKKyAgICAiIiJDYWxsIHRoZSBfX3ByZXBhcmVfXyBtZXRob2Qgb2YgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcy4KKworICAgIFJldHVybnMgKG1ldGFjbGFzcywgbmFtZXNwYWNlLCBrd2RzKSBhcyBhIDMtdHVwbGUKKworICAgICptZXRhY2xhc3MqIGlzIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MKKyAgICAqbmFtZXNwYWNlKiBpcyB0aGUgcHJlcGFyZWQgY2xhc3MgbmFtZXNwYWNlCisgICAgKmt3ZHMqIGlzIGFuIHVwZGF0ZWQgY29weSBvZiB0aGUgcGFzc2VkIGluIGt3ZHMgYXJndW1lbnQgd2l0aCBhbnkKKyAgICAnbWV0YWNsYXNzJyBlbnRyeSByZW1vdmVkLiBJZiBubyBrd2RzIGFyZ3VtZW50IGlzIHBhc3NlZCBpbiwgdGhpcyB3aWxsCisgICAgYmUgYW4gZW1wdHkgZGljdC4KKyAgICAiIiIKKyAgICBpZiBrd2RzIGlzIE5vbmU6CisgICAgICAgIGt3ZHMgPSB7fQorICAgIGVsc2U6CisgICAgICAgIGt3ZHMgPSBkaWN0KGt3ZHMpICMgRG9uJ3QgYWx0ZXIgdGhlIHByb3ZpZGVkIG1hcHBpbmcKKyAgICBpZiAnbWV0YWNsYXNzJyBpbiBrd2RzOgorICAgICAgICBtZXRhID0ga3dkcy5wb3AoJ21ldGFjbGFzcycpCisgICAgZWxzZToKKyAgICAgICAgaWYgYmFzZXM6CisgICAgICAgICAgICBtZXRhID0gdHlwZShiYXNlc1swXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1ldGEgPSB0eXBlCisgICAgaWYgaXNpbnN0YW5jZShtZXRhLCB0eXBlKToKKyAgICAgICAgIyB3aGVuIG1ldGEgaXMgYSB0eXBlLCB3ZSBmaXJzdCBkZXRlcm1pbmUgdGhlIG1vc3QtZGVyaXZlZCBtZXRhY2xhc3MKKyAgICAgICAgIyBpbnN0ZWFkIG9mIGludm9raW5nIHRoZSBpbml0aWFsIGNhbmRpZGF0ZSBkaXJlY3RseQorICAgICAgICBtZXRhID0gX2NhbGN1bGF0ZV9tZXRhKG1ldGEsIGJhc2VzKQorICAgIGlmIGhhc2F0dHIobWV0YSwgJ19fcHJlcGFyZV9fJyk6CisgICAgICAgIG5zID0gbWV0YS5fX3ByZXBhcmVfXyhuYW1lLCBiYXNlcywgKiprd2RzKQorICAgIGVsc2U6CisgICAgICAgIG5zID0ge30KKyAgICByZXR1cm4gbWV0YSwgbnMsIGt3ZHMKKworZGVmIF9jYWxjdWxhdGVfbWV0YShtZXRhLCBiYXNlcyk6CisgICAgIiIiQ2FsY3VsYXRlIHRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzLiIiIgorICAgIHdpbm5lciA9IG1ldGEKKyAgICBmb3IgYmFzZSBpbiBiYXNlczoKKyAgICAgICAgYmFzZV9tZXRhID0gdHlwZShiYXNlKQorICAgICAgICBpZiBpc3N1YmNsYXNzKHdpbm5lciwgYmFzZV9tZXRhKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIGlzc3ViY2xhc3MoYmFzZV9tZXRhLCB3aW5uZXIpOgorICAgICAgICAgICAgd2lubmVyID0gYmFzZV9tZXRhCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAjIGVsc2U6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibWV0YWNsYXNzIGNvbmZsaWN0OiAiCisgICAgICAgICAgICAgICAgICAgICAgICAidGhlIG1ldGFjbGFzcyBvZiBhIGRlcml2ZWQgY2xhc3MgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSAobm9uLXN0cmljdCkgc3ViY2xhc3MgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm9mIHRoZSBtZXRhY2xhc3NlcyBvZiBhbGwgaXRzIGJhc2VzIikKKyAgICByZXR1cm4gd2lubmVyCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvX19tYWluX18ucHkgYi9MaWIvdW5pdHRlc3QvX19tYWluX18ucHkKaW5kZXggNzMyMDA1MC4uNzk4ZWJjMCAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L19fbWFpbl9fLnB5CisrKyBiL0xpYi91bml0dGVzdC9fX21haW5fXy5weQpAQCAtMiw3ICsyLDE0IEBACiAKIGltcG9ydCBzeXMKIGlmIHN5cy5hcmd2WzBdLmVuZHN3aXRoKCJfX21haW5fXy5weSIpOgotICAgIHN5cy5hcmd2WzBdID0gInB5dGhvbiAtbSB1bml0dGVzdCIKKyAgICBpbXBvcnQgb3MucGF0aAorICAgICMgV2UgY2hhbmdlIHN5cy5hcmd2WzBdIHRvIG1ha2UgaGVscCBtZXNzYWdlIG1vcmUgdXNlZnVsCisgICAgIyB1c2UgZXhlY3V0YWJsZSB3aXRob3V0IHBhdGgsIHVucXVvdGVkCisgICAgIyAoaXQncyBqdXN0IGEgaGludCBhbnl3YXkpCisgICAgIyAoaWYgeW91IGhhdmUgc3BhY2VzIGluIHlvdXIgZXhlY3V0YWJsZSB5b3UgZ2V0IHdoYXQgeW91IGRlc2VydmUhKQorICAgIGV4ZWN1dGFibGUgPSBvcy5wYXRoLmJhc2VuYW1lKHN5cy5leGVjdXRhYmxlKQorICAgIHN5cy5hcmd2WzBdID0gZXhlY3V0YWJsZSArICIgLW0gdW5pdHRlc3QiCisgICAgZGVsIG9zCiAKIF9fdW5pdHRlc3QgPSBUcnVlCiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9jYXNlLnB5IGIvTGliL3VuaXR0ZXN0L2Nhc2UucHkKaW5kZXggYmVhODEwNy4uYWQxZmE4NCAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L2Nhc2UucHkKKysrIGIvTGliL3VuaXR0ZXN0L2Nhc2UucHkKQEAgLTksOCArOSw3IEBACiBpbXBvcnQgY29sbGVjdGlvbnMKIAogZnJvbSAuIGltcG9ydCByZXN1bHQKLWZyb20gLnV0aWwgaW1wb3J0IChzdHJjbGFzcywgc2FmZV9yZXByLCBzb3J0ZWRfbGlzdF9kaWZmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgIHVub3JkZXJhYmxlX2xpc3RfZGlmZmVyZW5jZSwgX2NvdW50X2RpZmZfYWxsX3B1cnBvc2UsCitmcm9tIC51dGlsIGltcG9ydCAoc3RyY2xhc3MsIHNhZmVfcmVwciwgX2NvdW50X2RpZmZfYWxsX3B1cnBvc2UsCiAgICAgICAgICAgICAgICAgICAgX2NvdW50X2RpZmZfaGFzaGFibGUpCiAKIF9fdW5pdHRlc3QgPSBUcnVlCkBAIC0xMDQsOSArMTAzLDkgQEAKIGNsYXNzIF9Bc3NlcnRSYWlzZXNCYXNlQ29udGV4dChvYmplY3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4cGVjdGVkLCB0ZXN0X2Nhc2UsIGNhbGxhYmxlX29iaj1Ob25lLAotICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXg9Tm9uZSk6CisgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4PU5vbmUpOgogICAgICAgICBzZWxmLmV4cGVjdGVkID0gZXhwZWN0ZWQKLSAgICAgICAgc2VsZi5mYWlsdXJlRXhjZXB0aW9uID0gdGVzdF9jYXNlLmZhaWx1cmVFeGNlcHRpb24KKyAgICAgICAgc2VsZi50ZXN0X2Nhc2UgPSB0ZXN0X2Nhc2UKICAgICAgICAgaWYgY2FsbGFibGVfb2JqIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYub2JqX25hbWUgPSBjYWxsYWJsZV9vYmouX19uYW1lX18KQEAgLTExNyw2ICsxMTYsMjQgQEAKICAgICAgICAgaWYgaXNpbnN0YW5jZShleHBlY3RlZF9yZWdleCwgKGJ5dGVzLCBzdHIpKToKICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gcmUuY29tcGlsZShleHBlY3RlZF9yZWdleCkKICAgICAgICAgc2VsZi5leHBlY3RlZF9yZWdleCA9IGV4cGVjdGVkX3JlZ2V4CisgICAgICAgIHNlbGYubXNnID0gTm9uZQorCisgICAgZGVmIF9yYWlzZUZhaWx1cmUoc2VsZiwgc3RhbmRhcmRNc2cpOgorICAgICAgICBtc2cgPSBzZWxmLnRlc3RfY2FzZS5fZm9ybWF0TWVzc2FnZShzZWxmLm1zZywgc3RhbmRhcmRNc2cpCisgICAgICAgIHJhaXNlIHNlbGYudGVzdF9jYXNlLmZhaWx1cmVFeGNlcHRpb24obXNnKQorCisgICAgZGVmIGhhbmRsZShzZWxmLCBuYW1lLCBjYWxsYWJsZV9vYmosIGFyZ3MsIGt3YXJncyk6CisgICAgICAgICIiIgorICAgICAgICBJZiBjYWxsYWJsZV9vYmogaXMgTm9uZSwgYXNzZXJ0UmFpc2VzL1dhcm5zIGlzIGJlaW5nIHVzZWQgYXMgYQorICAgICAgICBjb250ZXh0IG1hbmFnZXIsIHNvIGNoZWNrIGZvciBhICdtc2cnIGt3YXJnIGFuZCByZXR1cm4gc2VsZi4KKyAgICAgICAgSWYgY2FsbGFibGVfb2JqIGlzIG5vdCBOb25lLCBjYWxsIGl0IHBhc3NpbmcgYXJncyBhbmQga3dhcmdzLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgY2FsbGFibGVfb2JqIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLm1zZyA9IGt3YXJncy5wb3AoJ21zZycsIE5vbmUpCisgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICB3aXRoIHNlbGY6CisgICAgICAgICAgICBjYWxsYWJsZV9vYmooKmFyZ3MsICoqa3dhcmdzKQorCiAKIAogY2xhc3MgX0Fzc2VydFJhaXNlc0NvbnRleHQoX0Fzc2VydFJhaXNlc0Jhc2VDb250ZXh0KToKQEAgLTEzMiwxMSArMTQ5LDEwIEBACiAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgZXhjX25hbWUgPSBzdHIoc2VsZi5leHBlY3RlZCkKICAgICAgICAgICAgIGlmIHNlbGYub2JqX25hbWU6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKCJ7MH0gbm90IHJhaXNlZCBieSB7MX0iCi0gICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoZXhjX25hbWUsIHNlbGYub2JqX25hbWUpKQorICAgICAgICAgICAgICAgIHNlbGYuX3JhaXNlRmFpbHVyZSgie30gbm90IHJhaXNlZCBieSB7fSIuZm9ybWF0KGV4Y19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub2JqX25hbWUpKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24oInswfSBub3QgcmFpc2VkIgotICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KGV4Y19uYW1lKSkKKyAgICAgICAgICAgICAgICBzZWxmLl9yYWlzZUZhaWx1cmUoInt9IG5vdCByYWlzZWQiLmZvcm1hdChleGNfbmFtZSkpCiAgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKGV4Y190eXBlLCBzZWxmLmV4cGVjdGVkKToKICAgICAgICAgICAgICMgbGV0IHVuZXhwZWN0ZWQgZXhjZXB0aW9ucyBwYXNzIHRocm91Z2gKICAgICAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtMTQ3LDggKzE2Myw4IEBACiAKICAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSBzZWxmLmV4cGVjdGVkX3JlZ2V4CiAgICAgICAgIGlmIG5vdCBleHBlY3RlZF9yZWdleC5zZWFyY2goc3RyKGV4Y192YWx1ZSkpOgotICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKCciJXMiIGRvZXMgbm90IG1hdGNoICIlcyInICUKLSAgICAgICAgICAgICAgICAgICAgIChleHBlY3RlZF9yZWdleC5wYXR0ZXJuLCBzdHIoZXhjX3ZhbHVlKSkpCisgICAgICAgICAgICBzZWxmLl9yYWlzZUZhaWx1cmUoJyJ7fSIgZG9lcyBub3QgbWF0Y2ggInt9IicuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXgucGF0dGVybiwgc3RyKGV4Y192YWx1ZSkpKQogICAgICAgICByZXR1cm4gVHJ1ZQogCiAKQEAgLTE5MiwxNCArMjA4LDEzIEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgIyBOb3cgd2Ugc2ltcGx5IHRyeSB0byBjaG9vc2UgYSBoZWxwZnVsIGZhaWx1cmUgbWVzc2FnZQogICAgICAgICBpZiBmaXJzdF9tYXRjaGluZyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbignIiVzIiBkb2VzIG5vdCBtYXRjaCAiJXMiJyAlCi0gICAgICAgICAgICAgICAgICAgICAoc2VsZi5leHBlY3RlZF9yZWdleC5wYXR0ZXJuLCBzdHIoZmlyc3RfbWF0Y2hpbmcpKSkKKyAgICAgICAgICAgIHNlbGYuX3JhaXNlRmFpbHVyZSgnInt9IiBkb2VzIG5vdCBtYXRjaCAie30iJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVkX3JlZ2V4LnBhdHRlcm4sIHN0cihmaXJzdF9tYXRjaGluZykpKQogICAgICAgICBpZiBzZWxmLm9ial9uYW1lOgotICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKCJ7MH0gbm90IHRyaWdnZXJlZCBieSB7MX0iCi0gICAgICAgICAgICAgICAgLmZvcm1hdChleGNfbmFtZSwgc2VsZi5vYmpfbmFtZSkpCisgICAgICAgICAgICBzZWxmLl9yYWlzZUZhaWx1cmUoInt9IG5vdCB0cmlnZ2VyZWQgYnkge30iLmZvcm1hdChleGNfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub2JqX25hbWUpKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKCJ7MH0gbm90IHRyaWdnZXJlZCIKLSAgICAgICAgICAgICAgICAuZm9ybWF0KGV4Y19uYW1lKSkKKyAgICAgICAgICAgIHNlbGYuX3JhaXNlRmFpbHVyZSgie30gbm90IHRyaWdnZXJlZCIuZm9ybWF0KGV4Y19uYW1lKSkKIAogCiBjbGFzcyBUZXN0Q2FzZShvYmplY3QpOgpAQCAtNDUyLDcgKzQ2Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJUZXN0UmVzdWx0IGhhcyBubyBhZGRFeHBlY3RlZEZhaWx1cmUgbWV0aG9kLCByZXBvcnRpbmcgYXMgcGFzc2VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVudGltZVdhcm5pbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYWRkU3VjY2VzcyhzZWxmKQotCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICByZXN1bHQuc3RvcFRlc3Qoc2VsZikKICAgICAgICAgICAgIGlmIG9yaWdfcmVzdWx0IGlzIE5vbmU6CkBAIC01MjYsNyArNTQxLDYgQEAKICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKICAgICAgICAgICAgIHJldHVybiAgJyVzIDogJXMnICUgKHNhZmVfcmVwcihzdGFuZGFyZE1zZyksIHNhZmVfcmVwcihtc2cpKQogCi0KICAgICBkZWYgYXNzZXJ0UmFpc2VzKHNlbGYsIGV4Y0NsYXNzLCBjYWxsYWJsZU9iaj1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAiIiJGYWlsIHVubGVzcyBhbiBleGNlcHRpb24gb2YgY2xhc3MgZXhjQ2xhc3MgaXMgcmFpc2VkCiAgICAgICAgICAgIGJ5IGNhbGxhYmxlT2JqIHdoZW4gaW52b2tlZCB3aXRoIGFyZ3VtZW50cyBhcmdzIGFuZCBrZXl3b3JkCkBAIC01NDEsNiArNTU1LDkgQEAKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFNvbWVFeGNlcHRpb24pOgogICAgICAgICAgICAgICAgICAgICBkb19zb21ldGhpbmcoKQogCisgICAgICAgICAgIEFuIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnQgJ21zZycgY2FuIGJlIHByb3ZpZGVkIHdoZW4gYXNzZXJ0UmFpc2VzCisgICAgICAgICAgIGlzIHVzZWQgYXMgYSBjb250ZXh0IG9iamVjdC4KKwogICAgICAgICAgICBUaGUgY29udGV4dCBtYW5hZ2VyIGtlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBleGNlcHRpb24gYXMKICAgICAgICAgICAgdGhlICdleGNlcHRpb24nIGF0dHJpYnV0ZS4gVGhpcyBhbGxvd3MgeW91IHRvIGluc3BlY3QgdGhlCiAgICAgICAgICAgIGV4Y2VwdGlvbiBhZnRlciB0aGUgYXNzZXJ0aW9uOjoKQEAgLTU1MSwyNSArNTY4LDI1IEBACiAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoZV9leGNlcHRpb24uZXJyb3JfY29kZSwgMykKICAgICAgICAgIiIiCiAgICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0UmFpc2VzQ29udGV4dChleGNDbGFzcywgc2VsZiwgY2FsbGFibGVPYmopCi0gICAgICAgIGlmIGNhbGxhYmxlT2JqIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dAotICAgICAgICB3aXRoIGNvbnRleHQ6Ci0gICAgICAgICAgICBjYWxsYWJsZU9iaigqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0UmFpc2VzJywgY2FsbGFibGVPYmosIGFyZ3MsIGt3YXJncykKIAogICAgIGRlZiBhc3NlcnRXYXJucyhzZWxmLCBleHBlY3RlZF93YXJuaW5nLCBjYWxsYWJsZV9vYmo9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIiIiRmFpbCB1bmxlc3MgYSB3YXJuaW5nIG9mIGNsYXNzIHdhcm5DbGFzcyBpcyB0cmlnZ2VyZWQKLSAgICAgICAgICAgYnkgY2FsbGFibGVPYmogd2hlbiBpbnZva2VkIHdpdGggYXJndW1lbnRzIGFyZ3MgYW5kIGtleXdvcmQKKyAgICAgICAgICAgYnkgY2FsbGFibGVfb2JqIHdoZW4gaW52b2tlZCB3aXRoIGFyZ3VtZW50cyBhcmdzIGFuZCBrZXl3b3JkCiAgICAgICAgICAgIGFyZ3VtZW50cyBrd2FyZ3MuICBJZiBhIGRpZmZlcmVudCB0eXBlIG9mIHdhcm5pbmcgaXMKICAgICAgICAgICAgdHJpZ2dlcmVkLCBpdCB3aWxsIG5vdCBiZSBoYW5kbGVkOiBkZXBlbmRpbmcgb24gdGhlIG90aGVyCiAgICAgICAgICAgIHdhcm5pbmcgZmlsdGVyaW5nIHJ1bGVzIGluIGVmZmVjdCwgaXQgbWlnaHQgYmUgc2lsZW5jZWQsIHByaW50ZWQKICAgICAgICAgICAgb3V0LCBvciByYWlzZWQgYXMgYW4gZXhjZXB0aW9uLgogCi0gICAgICAgICAgIElmIGNhbGxlZCB3aXRoIGNhbGxhYmxlT2JqIG9taXR0ZWQgb3IgTm9uZSwgd2lsbCByZXR1cm4gYQorICAgICAgICAgICBJZiBjYWxsZWQgd2l0aCBjYWxsYWJsZV9vYmogb21pdHRlZCBvciBOb25lLCB3aWxsIHJldHVybiBhCiAgICAgICAgICAgIGNvbnRleHQgb2JqZWN0IHVzZWQgbGlrZSB0aGlzOjoKIAogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhTb21lV2FybmluZyk6CiAgICAgICAgICAgICAgICAgICAgIGRvX3NvbWV0aGluZygpCiAKKyAgICAgICAgICAgQW4gb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudCAnbXNnJyBjYW4gYmUgcHJvdmlkZWQgd2hlbiBhc3NlcnRXYXJucworICAgICAgICAgICBpcyB1c2VkIGFzIGEgY29udGV4dCBvYmplY3QuCisKICAgICAgICAgICAgVGhlIGNvbnRleHQgbWFuYWdlciBrZWVwcyBhIHJlZmVyZW5jZSB0byB0aGUgZmlyc3QgbWF0Y2hpbmcKICAgICAgICAgICAgd2FybmluZyBhcyB0aGUgJ3dhcm5pbmcnIGF0dHJpYnV0ZTsgc2ltaWxhcmx5LCB0aGUgJ2ZpbGVuYW1lJwogICAgICAgICAgICBhbmQgJ2xpbmVubycgYXR0cmlidXRlcyBnaXZlIHlvdSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGluZQpAQCAtNTgyLDEwICs1OTksNyBAQAogICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGVfd2FybmluZy5zb21lX2F0dHJpYnV0ZSwgMTQ3KQogICAgICAgICAiIiIKICAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRXYXJuc0NvbnRleHQoZXhwZWN0ZWRfd2FybmluZywgc2VsZiwgY2FsbGFibGVfb2JqKQotICAgICAgICBpZiBjYWxsYWJsZV9vYmogaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ci0gICAgICAgIHdpdGggY29udGV4dDoKLSAgICAgICAgICAgIGNhbGxhYmxlX29iaigqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0V2FybnMnLCBjYWxsYWJsZV9vYmosIGFyZ3MsIGt3YXJncykKIAogICAgIGRlZiBfZ2V0QXNzZXJ0RXF1YWxpdHlGdW5jKHNlbGYsIGZpcnN0LCBzZWNvbmQpOgogICAgICAgICAiIiJHZXQgYSBkZXRhaWxlZCBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciB0aGUgdHlwZXMgb2YgdGhlIHR3byBhcmdzLgpAQCAtNzIyLDcgKzczNiw3IEBACiAgICAgICAgICAgICBtc2c6IE9wdGlvbmFsIG1lc3NhZ2UgdG8gdXNlIG9uIGZhaWx1cmUgaW5zdGVhZCBvZiBhIGxpc3Qgb2YKICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZXMuCiAgICAgICAgICIiIgotICAgICAgICBpZiBzZXFfdHlwZSAhPSBOb25lOgorICAgICAgICBpZiBzZXFfdHlwZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlcV90eXBlX25hbWUgPSBzZXFfdHlwZS5fX25hbWVfXwogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2VxMSwgc2VxX3R5cGUpOgogICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbignRmlyc3Qgc2VxdWVuY2UgaXMgbm90IGEgJXM6ICVzJwpAQCAtOTUxLDQ4ICs5NjUsNiBAQAogCiAgICAgICAgIHNlbGYuZmFpbChzZWxmLl9mb3JtYXRNZXNzYWdlKG1zZywgc3RhbmRhcmRNc2cpKQogCi0gICAgZGVmIGFzc2VydFNhbWVFbGVtZW50cyhzZWxmLCBleHBlY3RlZF9zZXEsIGFjdHVhbF9zZXEsIG1zZz1Ob25lKToKLSAgICAgICAgIiIiQW4gdW5vcmRlcmVkIHNlcXVlbmNlIHNwZWNpZmljIGNvbXBhcmlzb24uCi0KLSAgICAgICAgUmFpc2VzIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBsaXN0aW5nIHdoaWNoIGVsZW1lbnRzIG9mIGV4cGVjdGVkX3NlcQotICAgICAgICBhcmUgbWlzc2luZyBmcm9tIGFjdHVhbF9zZXEgYW5kIHZpY2UgdmVyc2EgaWYgYW55LgotCi0gICAgICAgIER1cGxpY2F0ZSBlbGVtZW50cyBhcmUgaWdub3JlZCB3aGVuIGNvbXBhcmluZyAqZXhwZWN0ZWRfc2VxKiBhbmQKLSAgICAgICAgKmFjdHVhbF9zZXEqLiBJdCBpcyB0aGUgZXF1aXZhbGVudCBvZiBgYGFzc2VydEVxdWFsKHNldChleHBlY3RlZCksCi0gICAgICAgIHNldChhY3R1YWwpKWBgIGJ1dCBpdCB3b3JrcyB3aXRoIHNlcXVlbmNlcyBvZiB1bmhhc2hhYmxlIG9iamVjdHMgYXMKLSAgICAgICAgd2VsbC4KLSAgICAgICAgIiIiCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ2Fzc2VydFNhbWVFbGVtZW50cyBpcyBkZXByZWNhdGVkJywKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGV4cGVjdGVkID0gc2V0KGV4cGVjdGVkX3NlcSkKLSAgICAgICAgICAgIGFjdHVhbCA9IHNldChhY3R1YWxfc2VxKQotICAgICAgICAgICAgbWlzc2luZyA9IHNvcnRlZChleHBlY3RlZC5kaWZmZXJlbmNlKGFjdHVhbCkpCi0gICAgICAgICAgICB1bmV4cGVjdGVkID0gc29ydGVkKGFjdHVhbC5kaWZmZXJlbmNlKGV4cGVjdGVkKSkKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgICMgRmFsbCBiYWNrIHRvIHNsb3dlciBsaXN0LWNvbXBhcmUgaWYgYW55IG9mIHRoZSBvYmplY3RzIGFyZQotICAgICAgICAgICAgIyBub3QgaGFzaGFibGUuCi0gICAgICAgICAgICBleHBlY3RlZCA9IGxpc3QoZXhwZWN0ZWRfc2VxKQotICAgICAgICAgICAgYWN0dWFsID0gbGlzdChhY3R1YWxfc2VxKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGV4cGVjdGVkLnNvcnQoKQotICAgICAgICAgICAgICAgIGFjdHVhbC5zb3J0KCkKLSAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgICAgICAgICAgbWlzc2luZywgdW5leHBlY3RlZCA9IHVub3JkZXJhYmxlX2xpc3RfZGlmZmVyZW5jZShleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbWlzc2luZywgdW5leHBlY3RlZCA9IHNvcnRlZF9saXN0X2RpZmZlcmVuY2UoZXhwZWN0ZWQsIGFjdHVhbCkKLSAgICAgICAgZXJyb3JzID0gW10KLSAgICAgICAgaWYgbWlzc2luZzoKLSAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoJ0V4cGVjdGVkLCBidXQgbWlzc2luZzpcbiAgICAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlX3JlcHIobWlzc2luZykpCi0gICAgICAgIGlmIHVuZXhwZWN0ZWQ6Ci0gICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCdVbmV4cGVjdGVkLCBidXQgcHJlc2VudDpcbiAgICAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlX3JlcHIodW5leHBlY3RlZCkpCi0gICAgICAgIGlmIGVycm9yczoKLSAgICAgICAgICAgIHN0YW5kYXJkTXNnID0gJ1xuJy5qb2luKGVycm9ycykKLSAgICAgICAgICAgIHNlbGYuZmFpbChzZWxmLl9mb3JtYXRNZXNzYWdlKG1zZywgc3RhbmRhcmRNc2cpKQotCiAKICAgICBkZWYgYXNzZXJ0Q291bnRFcXVhbChzZWxmLCBmaXJzdCwgc2Vjb25kLCBtc2c9Tm9uZSk6CiAgICAgICAgICIiIkFuIHVub3JkZXJlZCBzZXF1ZW5jZSBjb21wYXJpc29uIGFzc2VydGluZyB0aGF0IHRoZSBzYW1lIGVsZW1lbnRzLApAQCAtMTAzNyw4ICsxMDA5LDggQEAKICAgICAgICAgICAgIGlmIChsZW4oZmlyc3QpID4gc2VsZi5fZGlmZlRocmVzaG9sZCBvcgogICAgICAgICAgICAgICAgIGxlbihzZWNvbmQpID4gc2VsZi5fZGlmZlRocmVzaG9sZCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fYmFzZUFzc2VydEVxdWFsKGZpcnN0LCBzZWNvbmQsIG1zZykKLSAgICAgICAgICAgIGZpcnN0bGluZXMgPSBmaXJzdC5zcGxpdGxpbmVzKFRydWUpCi0gICAgICAgICAgICBzZWNvbmRsaW5lcyA9IHNlY29uZC5zcGxpdGxpbmVzKFRydWUpCisgICAgICAgICAgICBmaXJzdGxpbmVzID0gZmlyc3Quc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQorICAgICAgICAgICAgc2Vjb25kbGluZXMgPSBzZWNvbmQuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICAgICAgaWYgbGVuKGZpcnN0bGluZXMpID09IDEgYW5kIGZpcnN0LnN0cmlwKCdcclxuJykgPT0gZmlyc3Q6CiAgICAgICAgICAgICAgICAgZmlyc3RsaW5lcyA9IFtmaXJzdCArICdcbiddCiAgICAgICAgICAgICAgICAgc2Vjb25kbGluZXMgPSBbc2Vjb25kICsgJ1xuJ10KQEAgLTExMDYsMTUgKzEwNzgsMTUgQEAKICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4OiBSZWdleCAocmUgcGF0dGVybiBvYmplY3Qgb3Igc3RyaW5nKSBleHBlY3RlZAogICAgICAgICAgICAgICAgICAgICB0byBiZSBmb3VuZCBpbiBlcnJvciBtZXNzYWdlLgogICAgICAgICAgICAgY2FsbGFibGVfb2JqOiBGdW5jdGlvbiB0byBiZSBjYWxsZWQuCisgICAgICAgICAgICBtc2c6IE9wdGlvbmFsIG1lc3NhZ2UgdXNlZCBpbiBjYXNlIG9mIGZhaWx1cmUuIENhbiBvbmx5IGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgd2hlbiBhc3NlcnRSYWlzZXNSZWdleCBpcyB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgogICAgICAgICAgICAgYXJnczogRXh0cmEgYXJncy4KICAgICAgICAgICAgIGt3YXJnczogRXh0cmEga3dhcmdzLgogICAgICAgICAiIiIKICAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRSYWlzZXNDb250ZXh0KGV4cGVjdGVkX2V4Y2VwdGlvbiwgc2VsZiwgY2FsbGFibGVfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXgpCi0gICAgICAgIGlmIGNhbGxhYmxlX29iaiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQKLSAgICAgICAgd2l0aCBjb250ZXh0OgotICAgICAgICAgICAgY2FsbGFibGVfb2JqKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICByZXR1cm4gY29udGV4dC5oYW5kbGUoJ2Fzc2VydFJhaXNlc1JlZ2V4JywgY2FsbGFibGVfb2JqLCBhcmdzLCBrd2FyZ3MpCiAKICAgICBkZWYgYXNzZXJ0V2FybnNSZWdleChzZWxmLCBleHBlY3RlZF93YXJuaW5nLCBleHBlY3RlZF9yZWdleCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYWJsZV9vYmo9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKQEAgLTExMjgsMTUgKzExMDAsMTQgQEAKICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4OiBSZWdleCAocmUgcGF0dGVybiBvYmplY3Qgb3Igc3RyaW5nKSBleHBlY3RlZAogICAgICAgICAgICAgICAgICAgICB0byBiZSBmb3VuZCBpbiBlcnJvciBtZXNzYWdlLgogICAgICAgICAgICAgY2FsbGFibGVfb2JqOiBGdW5jdGlvbiB0byBiZSBjYWxsZWQuCisgICAgICAgICAgICBtc2c6IE9wdGlvbmFsIG1lc3NhZ2UgdXNlZCBpbiBjYXNlIG9mIGZhaWx1cmUuIENhbiBvbmx5IGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgd2hlbiBhc3NlcnRXYXJuc1JlZ2V4IGlzIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCiAgICAgICAgICAgICBhcmdzOiBFeHRyYSBhcmdzLgogICAgICAgICAgICAga3dhcmdzOiBFeHRyYSBrd2FyZ3MuCiAgICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0gX0Fzc2VydFdhcm5zQ29udGV4dChleHBlY3RlZF93YXJuaW5nLCBzZWxmLCBjYWxsYWJsZV9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4KQotICAgICAgICBpZiBjYWxsYWJsZV9vYmogaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ci0gICAgICAgIHdpdGggY29udGV4dDoKLSAgICAgICAgICAgIGNhbGxhYmxlX29iaigqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0V2FybnNSZWdleCcsIGNhbGxhYmxlX29iaiwgYXJncywga3dhcmdzKQogCiAgICAgZGVmIGFzc2VydFJlZ2V4KHNlbGYsIHRleHQsIGV4cGVjdGVkX3JlZ2V4LCBtc2c9Tm9uZSk6CiAgICAgICAgICIiIkZhaWwgdGhlIHRlc3QgdW5sZXNzIHRoZSB0ZXh0IG1hdGNoZXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4iIiIKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9tYWluLnB5IGIvTGliL3VuaXR0ZXN0L21haW4ucHkKaW5kZXggNjNjODEzOS4uZWFkNjQ5MyAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L21haW4ucHkKKysrIGIvTGliL3VuaXR0ZXN0L21haW4ucHkKQEAgLTEsOCArMSw4IEBACiAiIiJVbml0dGVzdCBtYWluIHByb2dyYW0iIiIKIAogaW1wb3J0IHN5cworaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgb3MKLWltcG9ydCB0eXBlcwogCiBmcm9tIC4gaW1wb3J0IGxvYWRlciwgcnVubmVyCiBmcm9tIC5zaWduYWxzIGltcG9ydCBpbnN0YWxsSGFuZGxlcgpAQCAtNzcsNiArNzcsNyBAQAogZGVmIF9jb252ZXJ0X25hbWVzKG5hbWVzKToKICAgICByZXR1cm4gW19jb252ZXJ0X25hbWUobmFtZSkgZm9yIG5hbWUgaW4gbmFtZXNdCiAKKwogY2xhc3MgVGVzdFByb2dyYW0ob2JqZWN0KToKICAgICAiIiJBIGNvbW1hbmQtbGluZSBwcm9ncmFtIHRoYXQgcnVucyBhIHNldCBvZiB0ZXN0czsgdGhpcyBpcyBwcmltYXJpbHkKICAgICAgICBmb3IgbWFraW5nIHRlc3QgbW9kdWxlcyBjb252ZW5pZW50bHkgZXhlY3V0YWJsZS4KQEAgLTE0MywzMyArMTQ0LDkgQEAKICAgICAgICAgICAgIHNlbGYuX2RvX2Rpc2NvdmVyeShhcmd2WzI6XSkKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGltcG9ydCBnZXRvcHQKLSAgICAgICAgbG9uZ19vcHRzID0gWydoZWxwJywgJ3ZlcmJvc2UnLCAncXVpZXQnLCAnZmFpbGZhc3QnLCAnY2F0Y2gnLCAnYnVmZmVyJ10KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3B0aW9ucywgYXJncyA9IGdldG9wdC5nZXRvcHQoYXJndlsxOl0sICdoSHZxZmNiJywgbG9uZ19vcHRzKQotICAgICAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIG1zZzoKLSAgICAgICAgICAgIHNlbGYudXNhZ2VFeGl0KG1zZykKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGZvciBvcHQsIHZhbHVlIGluIG9wdGlvbnM6Ci0gICAgICAgICAgICBpZiBvcHQgaW4gKCctaCcsJy1IJywnLS1oZWxwJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi51c2FnZUV4aXQoKQotICAgICAgICAgICAgaWYgb3B0IGluICgnLXEnLCctLXF1aWV0Jyk6Ci0gICAgICAgICAgICAgICAgc2VsZi52ZXJib3NpdHkgPSAwCi0gICAgICAgICAgICBpZiBvcHQgaW4gKCctdicsJy0tdmVyYm9zZScpOgotICAgICAgICAgICAgICAgIHNlbGYudmVyYm9zaXR5ID0gMgotICAgICAgICAgICAgaWYgb3B0IGluICgnLWYnLCctLWZhaWxmYXN0Jyk6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5mYWlsZmFzdCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWxmYXN0ID0gVHJ1ZQotICAgICAgICAgICAgICAgICMgU2hvdWxkIHRoaXMgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIC1mIGlzIG5vdCB2YWxpZD8KLSAgICAgICAgICAgIGlmIG9wdCBpbiAoJy1jJywnLS1jYXRjaCcpOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuY2F0Y2hicmVhayBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmNhdGNoYnJlYWsgPSBUcnVlCi0gICAgICAgICAgICAgICAgIyBTaG91bGQgdGhpcyByYWlzZSBhbiBleGNlcHRpb24gaWYgLWMgaXMgbm90IHZhbGlkPwotICAgICAgICAgICAgaWYgb3B0IGluICgnLWInLCctLWJ1ZmZlcicpOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuYnVmZmVyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gVHJ1ZQotICAgICAgICAgICAgICAgICMgU2hvdWxkIHRoaXMgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIC1iIGlzIG5vdCB2YWxpZD8KKyAgICAgICAgcGFyc2VyID0gc2VsZi5fZ2V0T3B0UGFyc2VyKCkKKyAgICAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3ZbMTpdKQorICAgICAgICBzZWxmLl9zZXRBdHRyaWJ1dGVzRnJvbU9wdGlvbnMob3B0aW9ucykKIAogICAgICAgICBpZiBsZW4oYXJncykgPT0gMCBhbmQgc2VsZi5tb2R1bGUgaXMgTm9uZToKICAgICAgICAgICAgICMgdGhpcyBhbGxvd3MgInB5dGhvbiAtbSB1bml0dGVzdCAtdiIgdG8gc3RpbGwgd29yayBmb3IKQEAgLTE5NywxNyArMTc0LDE1IEBACiAgICAgICAgICAgICBzZWxmLnRlc3QgPSBzZWxmLnRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKHNlbGYudGVzdE5hbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZSkKIAotICAgIGRlZiBfZG9fZGlzY292ZXJ5KHNlbGYsIGFyZ3YsIExvYWRlcj1Ob25lKToKLSAgICAgICAgaWYgTG9hZGVyIGlzIE5vbmU6Ci0gICAgICAgICAgICBMb2FkZXIgPSBsYW1iZGE6IHNlbGYudGVzdExvYWRlcgotCi0gICAgICAgICMgaGFuZGxlIGNvbW1hbmQgbGluZSBhcmdzIGZvciB0ZXN0IGRpc2NvdmVyeQotICAgICAgICBzZWxmLnByb2dOYW1lID0gJyVzIGRpc2NvdmVyJyAlIHNlbGYucHJvZ05hbWUKKyAgICBkZWYgX2dldE9wdFBhcnNlcihzZWxmKToKICAgICAgICAgaW1wb3J0IG9wdHBhcnNlCiAgICAgICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpCiAgICAgICAgIHBhcnNlci5wcm9nID0gc2VsZi5wcm9nTmFtZQogICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLXYnLCAnLS12ZXJib3NlJywgZGVzdD0ndmVyYm9zZScsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1ZlcmJvc2Ugb3V0cHV0JywgYWN0aW9uPSdzdG9yZV90cnVlJykKKyAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1xJywgJy0tcXVpZXQnLCBkZXN0PSdxdWlldCcsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1F1aWV0IG91dHB1dCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCisKICAgICAgICAgaWYgc2VsZi5mYWlsZmFzdCAhPSBGYWxzZToKICAgICAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctZicsICctLWZhaWxmYXN0JywgZGVzdD0nZmFpbGZhc3QnLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU3RvcCBvbiBmaXJzdCBmYWlsIG9yIGVycm9yJywKQEAgLTIyMCwyMCArMTk1LDkgQEAKICAgICAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctYicsICctLWJ1ZmZlcicsIGRlc3Q9J2J1ZmZlcicsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdCdWZmZXIgc3Rkb3V0IGFuZCBzdGRlcnIgZHVyaW5nIHRlc3RzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCi0gICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcycsICctLXN0YXJ0LWRpcmVjdG9yeScsIGRlc3Q9J3N0YXJ0JywgZGVmYXVsdD0nLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRpcmVjdG9yeSB0byBzdGFydCBkaXNjb3ZlcnkgKCcuJyBkZWZhdWx0KSIpCi0gICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcCcsICctLXBhdHRlcm4nLCBkZXN0PSdwYXR0ZXJuJywgZGVmYXVsdD0ndGVzdCoucHknLAotICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXR0ZXJuIHRvIG1hdGNoIHRlc3RzICgndGVzdCoucHknIGRlZmF1bHQpIikKLSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy10JywgJy0tdG9wLWxldmVsLWRpcmVjdG9yeScsIGRlc3Q9J3RvcCcsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nVG9wIGxldmVsIGRpcmVjdG9yeSBvZiBwcm9qZWN0IChkZWZhdWx0cyB0byBzdGFydCBkaXJlY3RvcnkpJykKKyAgICAgICAgcmV0dXJuIHBhcnNlcgogCi0gICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmd2KQotICAgICAgICBpZiBsZW4oYXJncykgPiAzOgotICAgICAgICAgICAgc2VsZi51c2FnZUV4aXQoKQotCi0gICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiB6aXAoKCdzdGFydCcsICdwYXR0ZXJuJywgJ3RvcCcpLCBhcmdzKToKLSAgICAgICAgICAgIHNldGF0dHIob3B0aW9ucywgbmFtZSwgdmFsdWUpCi0KKyAgICBkZWYgX3NldEF0dHJpYnV0ZXNGcm9tT3B0aW9ucyhzZWxmLCBvcHRpb25zKToKICAgICAgICAgIyBvbmx5IHNldCBvcHRpb25zIGZyb20gdGhlIHBhcnNpbmcgaGVyZQogICAgICAgICAjIGlmIHRoZXkgd2VyZW4ndCBzZXQgZXhwbGljaXRseSBpbiB0aGUgY29uc3RydWN0b3IKICAgICAgICAgaWYgc2VsZi5mYWlsZmFzdCBpcyBOb25lOgpAQCAtMjQ1LDYgKzIwOSwzNCBAQAogCiAgICAgICAgIGlmIG9wdGlvbnMudmVyYm9zZToKICAgICAgICAgICAgIHNlbGYudmVyYm9zaXR5ID0gMgorICAgICAgICBlbGlmIG9wdGlvbnMucXVpZXQ6CisgICAgICAgICAgICBzZWxmLnZlcmJvc2l0eSA9IDAKKworICAgIGRlZiBfYWRkRGlzY292ZXJ5T3B0aW9ucyhzZWxmLCBwYXJzZXIpOgorICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLXMnLCAnLS1zdGFydC1kaXJlY3RvcnknLCBkZXN0PSdzdGFydCcsIGRlZmF1bHQ9Jy4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEaXJlY3RvcnkgdG8gc3RhcnQgZGlzY292ZXJ5ICgnLicgZGVmYXVsdCkiKQorICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLXAnLCAnLS1wYXR0ZXJuJywgZGVzdD0ncGF0dGVybicsIGRlZmF1bHQ9J3Rlc3QqLnB5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUGF0dGVybiB0byBtYXRjaCB0ZXN0cyAoJ3Rlc3QqLnB5JyBkZWZhdWx0KSIpCisgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdCcsICctLXRvcC1sZXZlbC1kaXJlY3RvcnknLCBkZXN0PSd0b3AnLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1RvcCBsZXZlbCBkaXJlY3Rvcnkgb2YgcHJvamVjdCAoZGVmYXVsdHMgdG8gc3RhcnQgZGlyZWN0b3J5KScpCisKKyAgICBkZWYgX2RvX2Rpc2NvdmVyeShzZWxmLCBhcmd2LCBMb2FkZXI9Tm9uZSk6CisgICAgICAgIGlmIExvYWRlciBpcyBOb25lOgorICAgICAgICAgICAgTG9hZGVyID0gbGFtYmRhOiBzZWxmLnRlc3RMb2FkZXIKKworICAgICAgICAjIGhhbmRsZSBjb21tYW5kIGxpbmUgYXJncyBmb3IgdGVzdCBkaXNjb3ZlcnkKKyAgICAgICAgc2VsZi5wcm9nTmFtZSA9ICclcyBkaXNjb3ZlcicgJSBzZWxmLnByb2dOYW1lCisgICAgICAgIHBhcnNlciA9IHNlbGYuX2dldE9wdFBhcnNlcigpCisgICAgICAgIHNlbGYuX2FkZERpc2NvdmVyeU9wdGlvbnMocGFyc2VyKQorCisgICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmd2KQorICAgICAgICBpZiBsZW4oYXJncykgPiAzOgorICAgICAgICAgICAgc2VsZi51c2FnZUV4aXQoKQorCisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiB6aXAoKCdzdGFydCcsICdwYXR0ZXJuJywgJ3RvcCcpLCBhcmdzKToKKyAgICAgICAgICAgIHNldGF0dHIob3B0aW9ucywgbmFtZSwgdmFsdWUpCisKKyAgICAgICAgc2VsZi5fc2V0QXR0cmlidXRlc0Zyb21PcHRpb25zKG9wdGlvbnMpCiAKICAgICAgICAgc3RhcnRfZGlyID0gb3B0aW9ucy5zdGFydAogICAgICAgICBwYXR0ZXJuID0gb3B0aW9ucy5wYXR0ZXJuCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvbW9jay5weSBiL0xpYi91bml0dGVzdC9tb2NrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNjFmZGUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvbW9jay5weQpAQCAtMCwwICsxLDIyMTEgQEAKKyMgbW9jay5weQorIyBUZXN0IHRvb2xzIGZvciBtb2NraW5nIGFuZCBwYXRjaGluZy4KKyMgTWFpbnRhaW5lZCBieSBNaWNoYWVsIEZvb3JkCisjIEJhY2twb3J0IGZvciBvdGhlciB2ZXJzaW9ucyBvZiBQeXRob24gYXZhaWxhYmxlIGZyb20KKyMgaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL21vY2sKKworX19hbGxfXyA9ICgKKyAgICAnTW9jaycsCisgICAgJ01hZ2ljTW9jaycsCisgICAgJ3BhdGNoJywKKyAgICAnc2VudGluZWwnLAorICAgICdERUZBVUxUJywKKyAgICAnQU5ZJywKKyAgICAnY2FsbCcsCisgICAgJ2NyZWF0ZV9hdXRvc3BlYycsCisgICAgJ0ZJTFRFUl9ESVInLAorICAgICdOb25DYWxsYWJsZU1vY2snLAorICAgICdOb25DYWxsYWJsZU1hZ2ljTW9jaycsCisgICAgJ21vY2tfb3BlbicsCisgICAgJ1Byb3BlcnR5TW9jaycsCispCisKKworX192ZXJzaW9uX18gPSAnMS4wJworCisKK2ltcG9ydCBpbnNwZWN0CitpbXBvcnQgcHByaW50CitpbXBvcnQgc3lzCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKKworCitCYXNlRXhjZXB0aW9ucyA9IChCYXNlRXhjZXB0aW9uLCkKK2lmICdqYXZhJyBpbiBzeXMucGxhdGZvcm06CisgICAgIyBqeXRob24KKyAgICBpbXBvcnQgamF2YQorICAgIEJhc2VFeGNlcHRpb25zID0gKEJhc2VFeGNlcHRpb24sIGphdmEubGFuZy5UaHJvd2FibGUpCisKKworRklMVEVSX0RJUiA9IFRydWUKKworIyBXb3JrYXJvdW5kIGZvciBpc3N1ZSAjMTIzNzAKKyMgV2l0aG91dCB0aGlzLCB0aGUgX19jbGFzc19fIHByb3BlcnRpZXMgd291bGRuJ3QgYmUgc2V0IGNvcnJlY3RseQorX3NhZmVfc3VwZXIgPSBzdXBlcgorCitkZWYgX2lzX2luc3RhbmNlX21vY2sob2JqKToKKyAgICAjIGNhbid0IHVzZSBpc2luc3RhbmNlIG9uIE1vY2sgb2JqZWN0cyBiZWNhdXNlIHRoZXkgb3ZlcnJpZGUgX19jbGFzc19fCisgICAgIyBUaGUgYmFzZSBjbGFzcyBmb3IgYWxsIG1vY2tzIGlzIE5vbkNhbGxhYmxlTW9jaworICAgIHJldHVybiBpc3N1YmNsYXNzKHR5cGUob2JqKSwgTm9uQ2FsbGFibGVNb2NrKQorCisKK2RlZiBfaXNfZXhjZXB0aW9uKG9iaik6CisgICAgcmV0dXJuICgKKyAgICAgICAgaXNpbnN0YW5jZShvYmosIEJhc2VFeGNlcHRpb25zKSBvcgorICAgICAgICBpc2luc3RhbmNlKG9iaiwgdHlwZSkgYW5kIGlzc3ViY2xhc3Mob2JqLCBCYXNlRXhjZXB0aW9ucykKKyAgICApCisKKworY2xhc3MgX3Nsb3R0ZWQob2JqZWN0KToKKyAgICBfX3Nsb3RzX18gPSBbJ2EnXQorCisKK0Rlc2NyaXB0b3JUeXBlcyA9ICgKKyAgICB0eXBlKF9zbG90dGVkLmEpLAorICAgIHByb3BlcnR5LAorKQorCisKK2RlZiBfZ2V0c2lnbmF0dXJlKGZ1bmMsIHNraXBmaXJzdCwgaW5zdGFuY2U9RmFsc2UpOgorICAgIGlmIGlzaW5zdGFuY2UoZnVuYywgdHlwZSkgYW5kIG5vdCBpbnN0YW5jZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnVuYyA9IGZ1bmMuX19pbml0X18KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNraXBmaXJzdCA9IFRydWUKKyAgICBlbGlmIG5vdCBpc2luc3RhbmNlKGZ1bmMsIEZ1bmN0aW9uVHlwZXMpOgorICAgICAgICAjIGZvciBjbGFzc2VzIHdoZXJlIGluc3RhbmNlIGlzIFRydWUgd2UgZW5kIHVwIGhlcmUgdG9vCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZ1bmMgPSBmdW5jLl9fY2FsbF9fCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgdHJ5OgorICAgICAgICBhcmdzcGVjID0gaW5zcGVjdC5nZXRmdWxsYXJnc3BlYyhmdW5jKQorICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICMgQyBmdW5jdGlvbiAvIG1ldGhvZCwgcG9zc2libHkgaW5oZXJpdGVkIG9iamVjdCgpLl9faW5pdF9fCisgICAgICAgIHJldHVybgorCisgICAgcmVnYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLCBrd29ubHksIGt3b25seWRlZiwgYW5uID0gYXJnc3BlYworCisKKyAgICAjIGluc3RhbmNlIG1ldGhvZHMgYW5kIGNsYXNzbWV0aG9kcyBuZWVkIHRvIGxvc2UgdGhlIHNlbGYgYXJndW1lbnQKKyAgICBpZiBnZXRhdHRyKGZ1bmMsICdfX3NlbGZfXycsIE5vbmUpIGlzIG5vdCBOb25lOgorICAgICAgICByZWdhcmdzID0gcmVnYXJnc1sxOl0KKyAgICBpZiBza2lwZmlyc3Q6CisgICAgICAgICMgdGhpcyBjb25kaXRpb24gYW5kIHRoZSBhYm92ZSBvbmUgYXJlIG5ldmVyIGJvdGggVHJ1ZSAtIHdoeT8KKyAgICAgICAgcmVnYXJncyA9IHJlZ2FyZ3NbMTpdCisKKyAgICBzaWduYXR1cmUgPSBpbnNwZWN0LmZvcm1hdGFyZ3NwZWMoCisgICAgICAgIHJlZ2FyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cywKKyAgICAgICAga3dvbmx5LCBrd29ubHlkZWYsIGFubiwgZm9ybWF0dmFsdWU9bGFtYmRhIHZhbHVlOiAiIikKKyAgICByZXR1cm4gc2lnbmF0dXJlWzE6LTFdLCBmdW5jCisKKworZGVmIF9jaGVja19zaWduYXR1cmUoZnVuYywgbW9jaywgc2tpcGZpcnN0LCBpbnN0YW5jZT1GYWxzZSk6CisgICAgaWYgbm90IF9jYWxsYWJsZShmdW5jKToKKyAgICAgICAgcmV0dXJuCisKKyAgICByZXN1bHQgPSBfZ2V0c2lnbmF0dXJlKGZ1bmMsIHNraXBmaXJzdCwgaW5zdGFuY2UpCisgICAgaWYgcmVzdWx0IGlzIE5vbmU6CisgICAgICAgIHJldHVybgorICAgIHNpZ25hdHVyZSwgZnVuYyA9IHJlc3VsdAorCisgICAgIyBjYW4ndCB1c2Ugc2VsZiBiZWNhdXNlICJzZWxmIiBpcyBjb21tb24gYXMgYW4gYXJndW1lbnQgbmFtZQorICAgICMgdW5mb3J0dW5hdGVseSBldmVuIG5vdCBpbiB0aGUgZmlyc3QgcGxhY2UKKyAgICBzcmMgPSAibGFtYmRhIF9tb2NrX3NlbGYsICVzOiBOb25lIiAlIHNpZ25hdHVyZQorICAgIGNoZWNrc2lnID0gZXZhbChzcmMsIHt9KQorICAgIF9jb3B5X2Z1bmNfZGV0YWlscyhmdW5jLCBjaGVja3NpZykKKyAgICB0eXBlKG1vY2spLl9tb2NrX2NoZWNrX3NpZyA9IGNoZWNrc2lnCisKKworZGVmIF9jb3B5X2Z1bmNfZGV0YWlscyhmdW5jLCBmdW5jb3B5KToKKyAgICBmdW5jb3B5Ll9fbmFtZV9fID0gZnVuYy5fX25hbWVfXworICAgIGZ1bmNvcHkuX19kb2NfXyA9IGZ1bmMuX19kb2NfXworICAgICMgd2UgZXhwbGljaXRseSBkb24ndCBjb3B5IGZ1bmMuX19kaWN0X18gaW50byB0aGlzIGNvcHkgYXMgaXQgd291bGQKKyAgICAjIGV4cG9zZSBvcmlnaW5hbCBhdHRyaWJ1dGVzIHRoYXQgc2hvdWxkIGJlIG1vY2tlZAorICAgIGZ1bmNvcHkuX19tb2R1bGVfXyA9IGZ1bmMuX19tb2R1bGVfXworICAgIGZ1bmNvcHkuX19kZWZhdWx0c19fID0gZnVuYy5fX2RlZmF1bHRzX18KKyAgICBmdW5jb3B5Ll9fa3dkZWZhdWx0c19fID0gZnVuYy5fX2t3ZGVmYXVsdHNfXworCisKK2RlZiBfY2FsbGFibGUob2JqKToKKyAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZSk6CisgICAgICAgIHJldHVybiBUcnVlCisgICAgaWYgZ2V0YXR0cihvYmosICdfX2NhbGxfXycsIE5vbmUpIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIHJldHVybiBGYWxzZQorCisKK2RlZiBfaXNfbGlzdChvYmopOgorICAgICMgY2hlY2tzIGZvciBsaXN0IG9yIHR1cGxlcworICAgICMgWFhYWCBiYWRseSBuYW1lZCEKKyAgICByZXR1cm4gdHlwZShvYmopIGluIChsaXN0LCB0dXBsZSkKKworCitkZWYgX2luc3RhbmNlX2NhbGxhYmxlKG9iaik6CisgICAgIiIiR2l2ZW4gYW4gb2JqZWN0LCByZXR1cm4gVHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGNhbGxhYmxlLgorICAgIEZvciBjbGFzc2VzLCByZXR1cm4gVHJ1ZSBpZiBpbnN0YW5jZXMgd291bGQgYmUgY2FsbGFibGUuIiIiCisgICAgaWYgbm90IGlzaW5zdGFuY2Uob2JqLCB0eXBlKToKKyAgICAgICAgIyBhbHJlYWR5IGFuIGluc3RhbmNlCisgICAgICAgIHJldHVybiBnZXRhdHRyKG9iaiwgJ19fY2FsbF9fJywgTm9uZSkgaXMgbm90IE5vbmUKKworICAgICMgKmNvdWxkKiBiZSBicm9rZW4gYnkgYSBjbGFzcyBvdmVycmlkaW5nIF9fbXJvX18gb3IgX19kaWN0X18gdmlhCisgICAgIyBhIG1ldGFjbGFzcworICAgIGZvciBiYXNlIGluIChvYmosKSArIG9iai5fX21yb19fOgorICAgICAgICBpZiBiYXNlLl9fZGljdF9fLmdldCgnX19jYWxsX18nKSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuIEZhbHNlCisKKworZGVmIF9zZXRfc2lnbmF0dXJlKG1vY2ssIG9yaWdpbmFsLCBpbnN0YW5jZT1GYWxzZSk6CisgICAgIyBjcmVhdGVzIGEgZnVuY3Rpb24gd2l0aCBzaWduYXR1cmUgKCphcmdzLCAqKmt3YXJncykgdGhhdCBkZWxlZ2F0ZXMgdG8gYQorICAgICMgbW9jay4gSXQgc3RpbGwgZG9lcyBzaWduYXR1cmUgY2hlY2tpbmcgYnkgY2FsbGluZyBhIGxhbWJkYSB3aXRoIHRoZSBzYW1lCisgICAgIyBzaWduYXR1cmUgYXMgdGhlIG9yaWdpbmFsLgorICAgIGlmIG5vdCBfY2FsbGFibGUob3JpZ2luYWwpOgorICAgICAgICByZXR1cm4KKworICAgIHNraXBmaXJzdCA9IGlzaW5zdGFuY2Uob3JpZ2luYWwsIHR5cGUpCisgICAgcmVzdWx0ID0gX2dldHNpZ25hdHVyZShvcmlnaW5hbCwgc2tpcGZpcnN0LCBpbnN0YW5jZSkKKyAgICBpZiByZXN1bHQgaXMgTm9uZToKKyAgICAgICAgIyB3YXMgYSBDIGZ1bmN0aW9uIChlLmcuIG9iamVjdCgpLl9faW5pdF9fICkgdGhhdCBjYW4ndCBiZSBtb2NrZWQKKyAgICAgICAgcmV0dXJuCisKKyAgICBzaWduYXR1cmUsIGZ1bmMgPSByZXN1bHQKKworICAgIHNyYyA9ICJsYW1iZGEgJXM6IE5vbmUiICUgc2lnbmF0dXJlCisgICAgY2hlY2tzaWcgPSBldmFsKHNyYywge30pCisgICAgX2NvcHlfZnVuY19kZXRhaWxzKGZ1bmMsIGNoZWNrc2lnKQorCisgICAgbmFtZSA9IG9yaWdpbmFsLl9fbmFtZV9fCisgICAgaWYgbm90IG5hbWUuaXNpZGVudGlmaWVyKCk6CisgICAgICAgIG5hbWUgPSAnZnVuY29weScKKyAgICBjb250ZXh0ID0geydfY2hlY2tzaWdfJzogY2hlY2tzaWcsICdtb2NrJzogbW9ja30KKyAgICBzcmMgPSAiIiJkZWYgJXMoKmFyZ3MsICoqa3dhcmdzKToKKyAgICBfY2hlY2tzaWdfKCphcmdzLCAqKmt3YXJncykKKyAgICByZXR1cm4gbW9jaygqYXJncywgKiprd2FyZ3MpIiIiICUgbmFtZQorICAgIGV4ZWMgKHNyYywgY29udGV4dCkKKyAgICBmdW5jb3B5ID0gY29udGV4dFtuYW1lXQorICAgIF9zZXR1cF9mdW5jKGZ1bmNvcHksIG1vY2spCisgICAgcmV0dXJuIGZ1bmNvcHkKKworCitkZWYgX3NldHVwX2Z1bmMoZnVuY29weSwgbW9jayk6CisgICAgZnVuY29weS5tb2NrID0gbW9jaworCisgICAgIyBjYW4ndCB1c2UgaXNpbnN0YW5jZSB3aXRoIG1vY2tzCisgICAgaWYgbm90IF9pc19pbnN0YW5jZV9tb2NrKG1vY2spOgorICAgICAgICByZXR1cm4KKworICAgIGRlZiBhc3NlcnRfY2FsbGVkX3dpdGgoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKmFyZ3MsICoqa3dhcmdzKQorICAgIGRlZiBhc3NlcnRfaGFzX2NhbGxzKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBtb2NrLmFzc2VydF9oYXNfY2FsbHMoKmFyZ3MsICoqa3dhcmdzKQorICAgIGRlZiBhc3NlcnRfYW55X2NhbGwoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2FueV9jYWxsKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgcmVzZXRfbW9jaygpOgorICAgICAgICBmdW5jb3B5Lm1ldGhvZF9jYWxscyA9IF9DYWxsTGlzdCgpCisgICAgICAgIGZ1bmNvcHkubW9ja19jYWxscyA9IF9DYWxsTGlzdCgpCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisgICAgICAgIHJldCA9IGZ1bmNvcHkucmV0dXJuX3ZhbHVlCisgICAgICAgIGlmIF9pc19pbnN0YW5jZV9tb2NrKHJldCkgYW5kIG5vdCByZXQgaXMgbW9jazoKKyAgICAgICAgICAgIHJldC5yZXNldF9tb2NrKCkKKworICAgIGZ1bmNvcHkuY2FsbGVkID0gRmFsc2UKKyAgICBmdW5jb3B5LmNhbGxfY291bnQgPSAwCisgICAgZnVuY29weS5jYWxsX2FyZ3MgPSBOb25lCisgICAgZnVuY29weS5jYWxsX2FyZ3NfbGlzdCA9IF9DYWxsTGlzdCgpCisgICAgZnVuY29weS5tZXRob2RfY2FsbHMgPSBfQ2FsbExpc3QoKQorICAgIGZ1bmNvcHkubW9ja19jYWxscyA9IF9DYWxsTGlzdCgpCisKKyAgICBmdW5jb3B5LnJldHVybl92YWx1ZSA9IG1vY2sucmV0dXJuX3ZhbHVlCisgICAgZnVuY29weS5zaWRlX2VmZmVjdCA9IG1vY2suc2lkZV9lZmZlY3QKKyAgICBmdW5jb3B5Ll9tb2NrX2NoaWxkcmVuID0gbW9jay5fbW9ja19jaGlsZHJlbgorCisgICAgZnVuY29weS5hc3NlcnRfY2FsbGVkX3dpdGggPSBhc3NlcnRfY2FsbGVkX3dpdGgKKyAgICBmdW5jb3B5LmFzc2VydF9jYWxsZWRfb25jZV93aXRoID0gYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgKKyAgICBmdW5jb3B5LmFzc2VydF9oYXNfY2FsbHMgPSBhc3NlcnRfaGFzX2NhbGxzCisgICAgZnVuY29weS5hc3NlcnRfYW55X2NhbGwgPSBhc3NlcnRfYW55X2NhbGwKKyAgICBmdW5jb3B5LnJlc2V0X21vY2sgPSByZXNldF9tb2NrCisKKyAgICBtb2NrLl9tb2NrX2RlbGVnYXRlID0gZnVuY29weQorCisKK2RlZiBfaXNfbWFnaWMobmFtZSk6CisgICAgcmV0dXJuICdfXyVzX18nICUgbmFtZVsyOi0yXSA9PSBuYW1lCisKKworY2xhc3MgX1NlbnRpbmVsT2JqZWN0KG9iamVjdCk6CisgICAgIkEgdW5pcXVlLCBuYW1lZCwgc2VudGluZWwgb2JqZWN0LiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICdzZW50aW5lbC4lcycgJSBzZWxmLm5hbWUKKworCitjbGFzcyBfU2VudGluZWwob2JqZWN0KToKKyAgICAiIiJBY2Nlc3MgYXR0cmlidXRlcyB0byByZXR1cm4gYSBuYW1lZCBvYmplY3QsIHVzYWJsZSBhcyBhIHNlbnRpbmVsLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fc2VudGluZWxzID0ge30KKworICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgbmFtZSA9PSAnX19iYXNlc19fJzoKKyAgICAgICAgICAgICMgV2l0aG91dCB0aGlzIGhlbHAodW5pdHRlc3QubW9jaykgcmFpc2VzIGFuIGV4Y2VwdGlvbgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NlbnRpbmVscy5zZXRkZWZhdWx0KG5hbWUsIF9TZW50aW5lbE9iamVjdChuYW1lKSkKKworCitzZW50aW5lbCA9IF9TZW50aW5lbCgpCisKK0RFRkFVTFQgPSBzZW50aW5lbC5ERUZBVUxUCitfbWlzc2luZyA9IHNlbnRpbmVsLk1JU1NJTkcKK19kZWxldGVkID0gc2VudGluZWwuREVMRVRFRAorCisKK2RlZiBfY29weSh2YWx1ZSk6CisgICAgaWYgdHlwZSh2YWx1ZSkgaW4gKGRpY3QsIGxpc3QsIHR1cGxlLCBzZXQpOgorICAgICAgICByZXR1cm4gdHlwZSh2YWx1ZSkodmFsdWUpCisgICAgcmV0dXJuIHZhbHVlCisKKworX2FsbG93ZWRfbmFtZXMgPSBzZXQoCisgICAgWworICAgICAgICAncmV0dXJuX3ZhbHVlJywgJ19tb2NrX3JldHVybl92YWx1ZScsICdzaWRlX2VmZmVjdCcsCisgICAgICAgICdfbW9ja19zaWRlX2VmZmVjdCcsICdfbW9ja19wYXJlbnQnLCAnX21vY2tfbmV3X3BhcmVudCcsCisgICAgICAgICdfbW9ja19uYW1lJywgJ19tb2NrX25ld19uYW1lJworICAgIF0KKykKKworCitkZWYgX2RlbGVnYXRpbmdfcHJvcGVydHkobmFtZSk6CisgICAgX2FsbG93ZWRfbmFtZXMuYWRkKG5hbWUpCisgICAgX3RoZV9uYW1lID0gJ19tb2NrXycgKyBuYW1lCisgICAgZGVmIF9nZXQoc2VsZiwgbmFtZT1uYW1lLCBfdGhlX25hbWU9X3RoZV9uYW1lKToKKyAgICAgICAgc2lnID0gc2VsZi5fbW9ja19kZWxlZ2F0ZQorICAgICAgICBpZiBzaWcgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYsIF90aGVfbmFtZSkKKyAgICAgICAgcmV0dXJuIGdldGF0dHIoc2lnLCBuYW1lKQorICAgIGRlZiBfc2V0KHNlbGYsIHZhbHVlLCBuYW1lPW5hbWUsIF90aGVfbmFtZT1fdGhlX25hbWUpOgorICAgICAgICBzaWcgPSBzZWxmLl9tb2NrX2RlbGVnYXRlCisgICAgICAgIGlmIHNpZyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1tfdGhlX25hbWVdID0gdmFsdWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNldGF0dHIoc2lnLCBuYW1lLCB2YWx1ZSkKKworICAgIHJldHVybiBwcm9wZXJ0eShfZ2V0LCBfc2V0KQorCisKKworY2xhc3MgX0NhbGxMaXN0KGxpc3QpOgorCisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB2YWx1ZSk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBsaXN0KToKKyAgICAgICAgICAgIHJldHVybiBsaXN0Ll9fY29udGFpbnNfXyhzZWxmLCB2YWx1ZSkKKyAgICAgICAgbGVuX3ZhbHVlID0gbGVuKHZhbHVlKQorICAgICAgICBsZW5fc2VsZiA9IGxlbihzZWxmKQorICAgICAgICBpZiBsZW5fdmFsdWUgPiBsZW5fc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbl9zZWxmIC0gbGVuX3ZhbHVlICsgMSk6CisgICAgICAgICAgICBzdWJfbGlzdCA9IHNlbGZbaTppK2xlbl92YWx1ZV0KKyAgICAgICAgICAgIGlmIHN1Yl9saXN0ID09IHZhbHVlOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gcHByaW50LnBmb3JtYXQobGlzdChzZWxmKSkKKworCitkZWYgX2NoZWNrX2FuZF9zZXRfcGFyZW50KHBhcmVudCwgdmFsdWUsIG5hbWUsIG5ld19uYW1lKToKKyAgICBpZiBub3QgX2lzX2luc3RhbmNlX21vY2sodmFsdWUpOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBpZiAoKHZhbHVlLl9tb2NrX25hbWUgb3IgdmFsdWUuX21vY2tfbmV3X25hbWUpIG9yCisgICAgICAgICh2YWx1ZS5fbW9ja19wYXJlbnQgaXMgbm90IE5vbmUpIG9yCisgICAgICAgICh2YWx1ZS5fbW9ja19uZXdfcGFyZW50IGlzIG5vdCBOb25lKSk6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgX3BhcmVudCA9IHBhcmVudAorICAgIHdoaWxlIF9wYXJlbnQgaXMgbm90IE5vbmU6CisgICAgICAgICMgc2V0dGluZyBhIG1vY2sgKHZhbHVlKSBhcyBhIGNoaWxkIG9yIHJldHVybiB2YWx1ZSBvZiBpdHNlbGYKKyAgICAgICAgIyBzaG91bGQgbm90IG1vZGlmeSB0aGUgbW9jaworICAgICAgICBpZiBfcGFyZW50IGlzIHZhbHVlOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIF9wYXJlbnQgPSBfcGFyZW50Ll9tb2NrX25ld19wYXJlbnQKKworICAgIGlmIG5ld19uYW1lOgorICAgICAgICB2YWx1ZS5fbW9ja19uZXdfcGFyZW50ID0gcGFyZW50CisgICAgICAgIHZhbHVlLl9tb2NrX25ld19uYW1lID0gbmV3X25hbWUKKyAgICBpZiBuYW1lOgorICAgICAgICB2YWx1ZS5fbW9ja19wYXJlbnQgPSBwYXJlbnQKKyAgICAgICAgdmFsdWUuX21vY2tfbmFtZSA9IG5hbWUKKyAgICByZXR1cm4gVHJ1ZQorCisKKworY2xhc3MgQmFzZShvYmplY3QpOgorICAgIF9tb2NrX3JldHVybl92YWx1ZSA9IERFRkFVTFQKKyAgICBfbW9ja19zaWRlX2VmZmVjdCA9IE5vbmUKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcGFzcworCisKKworY2xhc3MgTm9uQ2FsbGFibGVNb2NrKEJhc2UpOgorICAgICIiIkEgbm9uLWNhbGxhYmxlIHZlcnNpb24gb2YgYE1vY2tgIiIiCisKKyAgICBkZWYgX19uZXdfXyhjbHMsICphcmdzLCAqKmt3KToKKyAgICAgICAgIyBldmVyeSBpbnN0YW5jZSBoYXMgaXRzIG93biBjbGFzcworICAgICAgICAjIHNvIHdlIGNhbiBjcmVhdGUgbWFnaWMgbWV0aG9kcyBvbiB0aGUKKyAgICAgICAgIyBjbGFzcyB3aXRob3V0IHN0b21waW5nIG9uIG90aGVyIG1vY2tzCisgICAgICAgIG5ldyA9IHR5cGUoY2xzLl9fbmFtZV9fLCAoY2xzLCksIHsnX19kb2NfXyc6IGNscy5fX2RvY19ffSkKKyAgICAgICAgaW5zdGFuY2UgPSBvYmplY3QuX19uZXdfXyhuZXcpCisgICAgICAgIHJldHVybiBpbnN0YW5jZQorCisKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgICAgICBzZWxmLCBzcGVjPU5vbmUsIHdyYXBzPU5vbmUsIG5hbWU9Tm9uZSwgc3BlY19zZXQ9Tm9uZSwKKyAgICAgICAgICAgIHBhcmVudD1Ob25lLCBfc3BlY19zdGF0ZT1Ob25lLCBfbmV3X25hbWU9JycsIF9uZXdfcGFyZW50PU5vbmUsCisgICAgICAgICAgICAqKmt3YXJncworICAgICAgICApOgorICAgICAgICBpZiBfbmV3X3BhcmVudCBpcyBOb25lOgorICAgICAgICAgICAgX25ld19wYXJlbnQgPSBwYXJlbnQKKworICAgICAgICBfX2RpY3RfXyA9IHNlbGYuX19kaWN0X18KKyAgICAgICAgX19kaWN0X19bJ19tb2NrX3BhcmVudCddID0gcGFyZW50CisgICAgICAgIF9fZGljdF9fWydfbW9ja19uYW1lJ10gPSBuYW1lCisgICAgICAgIF9fZGljdF9fWydfbW9ja19uZXdfbmFtZSddID0gX25ld19uYW1lCisgICAgICAgIF9fZGljdF9fWydfbW9ja19uZXdfcGFyZW50J10gPSBfbmV3X3BhcmVudAorCisgICAgICAgIGlmIHNwZWNfc2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3BlYyA9IHNwZWNfc2V0CisgICAgICAgICAgICBzcGVjX3NldCA9IFRydWUKKworICAgICAgICBzZWxmLl9tb2NrX2FkZF9zcGVjKHNwZWMsIHNwZWNfc2V0KQorCisgICAgICAgIF9fZGljdF9fWydfbW9ja19jaGlsZHJlbiddID0ge30KKyAgICAgICAgX19kaWN0X19bJ19tb2NrX3dyYXBzJ10gPSB3cmFwcworICAgICAgICBfX2RpY3RfX1snX21vY2tfZGVsZWdhdGUnXSA9IE5vbmUKKworICAgICAgICBfX2RpY3RfX1snX21vY2tfY2FsbGVkJ10gPSBGYWxzZQorICAgICAgICBfX2RpY3RfX1snX21vY2tfY2FsbF9hcmdzJ10gPSBOb25lCisgICAgICAgIF9fZGljdF9fWydfbW9ja19jYWxsX2NvdW50J10gPSAwCisgICAgICAgIF9fZGljdF9fWydfbW9ja19jYWxsX2FyZ3NfbGlzdCddID0gX0NhbGxMaXN0KCkKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX21vY2tfY2FsbHMnXSA9IF9DYWxsTGlzdCgpCisKKyAgICAgICAgX19kaWN0X19bJ21ldGhvZF9jYWxscyddID0gX0NhbGxMaXN0KCkKKworICAgICAgICBpZiBrd2FyZ3M6CisgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyZV9tb2NrKCoqa3dhcmdzKQorCisgICAgICAgIF9zYWZlX3N1cGVyKE5vbkNhbGxhYmxlTW9jaywgc2VsZikuX19pbml0X18oCisgICAgICAgICAgICBzcGVjLCB3cmFwcywgbmFtZSwgc3BlY19zZXQsIHBhcmVudCwKKyAgICAgICAgICAgIF9zcGVjX3N0YXRlCisgICAgICAgICkKKworCisgICAgZGVmIGF0dGFjaF9tb2NrKHNlbGYsIG1vY2ssIGF0dHJpYnV0ZSk6CisgICAgICAgICIiIgorICAgICAgICBBdHRhY2ggYSBtb2NrIGFzIGFuIGF0dHJpYnV0ZSBvZiB0aGlzIG9uZSwgcmVwbGFjaW5nIGl0cyBuYW1lIGFuZAorICAgICAgICBwYXJlbnQuIENhbGxzIHRvIHRoZSBhdHRhY2hlZCBtb2NrIHdpbGwgYmUgcmVjb3JkZWQgaW4gdGhlCisgICAgICAgIGBtZXRob2RfY2FsbHNgIGFuZCBgbW9ja19jYWxsc2AgYXR0cmlidXRlcyBvZiB0aGlzIG9uZS4iIiIKKyAgICAgICAgbW9jay5fbW9ja19wYXJlbnQgPSBOb25lCisgICAgICAgIG1vY2suX21vY2tfbmV3X3BhcmVudCA9IE5vbmUKKyAgICAgICAgbW9jay5fbW9ja19uYW1lID0gJycKKyAgICAgICAgbW9jay5fbW9ja19uZXdfbmFtZSA9IE5vbmUKKworICAgICAgICBzZXRhdHRyKHNlbGYsIGF0dHJpYnV0ZSwgbW9jaykKKworCisgICAgZGVmIG1vY2tfYWRkX3NwZWMoc2VsZiwgc3BlYywgc3BlY19zZXQ9RmFsc2UpOgorICAgICAgICAiIiJBZGQgYSBzcGVjIHRvIGEgbW9jay4gYHNwZWNgIGNhbiBlaXRoZXIgYmUgYW4gb2JqZWN0IG9yIGEKKyAgICAgICAgbGlzdCBvZiBzdHJpbmdzLiBPbmx5IGF0dHJpYnV0ZXMgb24gdGhlIGBzcGVjYCBjYW4gYmUgZmV0Y2hlZCBhcworICAgICAgICBhdHRyaWJ1dGVzIGZyb20gdGhlIG1vY2suCisKKyAgICAgICAgSWYgYHNwZWNfc2V0YCBpcyBUcnVlIHRoZW4gb25seSBhdHRyaWJ1dGVzIG9uIHRoZSBzcGVjIGNhbiBiZSBzZXQuIiIiCisgICAgICAgIHNlbGYuX21vY2tfYWRkX3NwZWMoc3BlYywgc3BlY19zZXQpCisKKworICAgIGRlZiBfbW9ja19hZGRfc3BlYyhzZWxmLCBzcGVjLCBzcGVjX3NldCk6CisgICAgICAgIF9zcGVjX2NsYXNzID0gTm9uZQorCisgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmUgYW5kIG5vdCBfaXNfbGlzdChzcGVjKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc3BlYywgdHlwZSk6CisgICAgICAgICAgICAgICAgX3NwZWNfY2xhc3MgPSBzcGVjCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIF9zcGVjX2NsYXNzID0gX2dldF9jbGFzcyhzcGVjKQorCisgICAgICAgICAgICBzcGVjID0gZGlyKHNwZWMpCisKKyAgICAgICAgX19kaWN0X18gPSBzZWxmLl9fZGljdF9fCisgICAgICAgIF9fZGljdF9fWydfc3BlY19jbGFzcyddID0gX3NwZWNfY2xhc3MKKyAgICAgICAgX19kaWN0X19bJ19zcGVjX3NldCddID0gc3BlY19zZXQKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX21ldGhvZHMnXSA9IHNwZWMKKworCisgICAgZGVmIF9fZ2V0X3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgcmV0ID0gc2VsZi5fbW9ja19yZXR1cm5fdmFsdWUKKyAgICAgICAgaWYgc2VsZi5fbW9ja19kZWxlZ2F0ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldCA9IHNlbGYuX21vY2tfZGVsZWdhdGUucmV0dXJuX3ZhbHVlCisKKyAgICAgICAgaWYgcmV0IGlzIERFRkFVTFQ6CisgICAgICAgICAgICByZXQgPSBzZWxmLl9nZXRfY2hpbGRfbW9jaygKKyAgICAgICAgICAgICAgICBfbmV3X3BhcmVudD1zZWxmLCBfbmV3X25hbWU9JygpJworICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWUgPSByZXQKKyAgICAgICAgcmV0dXJuIHJldAorCisKKyAgICBkZWYgX19zZXRfcmV0dXJuX3ZhbHVlKHNlbGYsIHZhbHVlKToKKyAgICAgICAgaWYgc2VsZi5fbW9ja19kZWxlZ2F0ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX21vY2tfZGVsZWdhdGUucmV0dXJuX3ZhbHVlID0gdmFsdWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX21vY2tfcmV0dXJuX3ZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgIF9jaGVja19hbmRfc2V0X3BhcmVudChzZWxmLCB2YWx1ZSwgTm9uZSwgJygpJykKKworICAgIF9fcmV0dXJuX3ZhbHVlX2RvYyA9ICJUaGUgdmFsdWUgdG8gYmUgcmV0dXJuZWQgd2hlbiB0aGUgbW9jayBpcyBjYWxsZWQuIgorICAgIHJldHVybl92YWx1ZSA9IHByb3BlcnR5KF9fZ2V0X3JldHVybl92YWx1ZSwgX19zZXRfcmV0dXJuX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmV0dXJuX3ZhbHVlX2RvYykKKworCisgICAgQHByb3BlcnR5CisgICAgZGVmIF9fY2xhc3NfXyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fc3BlY19jbGFzcyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NwZWNfY2xhc3MKKworICAgIGNhbGxlZCA9IF9kZWxlZ2F0aW5nX3Byb3BlcnR5KCdjYWxsZWQnKQorICAgIGNhbGxfY291bnQgPSBfZGVsZWdhdGluZ19wcm9wZXJ0eSgnY2FsbF9jb3VudCcpCisgICAgY2FsbF9hcmdzID0gX2RlbGVnYXRpbmdfcHJvcGVydHkoJ2NhbGxfYXJncycpCisgICAgY2FsbF9hcmdzX2xpc3QgPSBfZGVsZWdhdGluZ19wcm9wZXJ0eSgnY2FsbF9hcmdzX2xpc3QnKQorICAgIG1vY2tfY2FsbHMgPSBfZGVsZWdhdGluZ19wcm9wZXJ0eSgnbW9ja19jYWxscycpCisKKworICAgIGRlZiBfX2dldF9zaWRlX2VmZmVjdChzZWxmKToKKyAgICAgICAgZGVsZWdhdGVkID0gc2VsZi5fbW9ja19kZWxlZ2F0ZQorICAgICAgICBpZiBkZWxlZ2F0ZWQgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9tb2NrX3NpZGVfZWZmZWN0CisgICAgICAgIHJldHVybiBkZWxlZ2F0ZWQuc2lkZV9lZmZlY3QKKworICAgIGRlZiBfX3NldF9zaWRlX2VmZmVjdChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHZhbHVlID0gX3RyeV9pdGVyKHZhbHVlKQorICAgICAgICBkZWxlZ2F0ZWQgPSBzZWxmLl9tb2NrX2RlbGVnYXRlCisgICAgICAgIGlmIGRlbGVnYXRlZCBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fbW9ja19zaWRlX2VmZmVjdCA9IHZhbHVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkZWxlZ2F0ZWQuc2lkZV9lZmZlY3QgPSB2YWx1ZQorCisgICAgc2lkZV9lZmZlY3QgPSBwcm9wZXJ0eShfX2dldF9zaWRlX2VmZmVjdCwgX19zZXRfc2lkZV9lZmZlY3QpCisKKworICAgIGRlZiByZXNldF9tb2NrKHNlbGYpOgorICAgICAgICAiUmVzdG9yZSB0aGUgbW9jayBvYmplY3QgdG8gaXRzIGluaXRpYWwgc3RhdGUuIgorICAgICAgICBzZWxmLmNhbGxlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuY2FsbF9hcmdzID0gTm9uZQorICAgICAgICBzZWxmLmNhbGxfY291bnQgPSAwCisgICAgICAgIHNlbGYubW9ja19jYWxscyA9IF9DYWxsTGlzdCgpCisgICAgICAgIHNlbGYuY2FsbF9hcmdzX2xpc3QgPSBfQ2FsbExpc3QoKQorICAgICAgICBzZWxmLm1ldGhvZF9jYWxscyA9IF9DYWxsTGlzdCgpCisKKyAgICAgICAgZm9yIGNoaWxkIGluIHNlbGYuX21vY2tfY2hpbGRyZW4udmFsdWVzKCk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNoaWxkLCBfU3BlY1N0YXRlKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgY2hpbGQucmVzZXRfbW9jaygpCisKKyAgICAgICAgcmV0ID0gc2VsZi5fbW9ja19yZXR1cm5fdmFsdWUKKyAgICAgICAgaWYgX2lzX2luc3RhbmNlX21vY2socmV0KSBhbmQgcmV0IGlzIG5vdCBzZWxmOgorICAgICAgICAgICAgcmV0LnJlc2V0X21vY2soKQorCisKKyAgICBkZWYgY29uZmlndXJlX21vY2soc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAiIiJTZXQgYXR0cmlidXRlcyBvbiB0aGUgbW9jayB0aHJvdWdoIGtleXdvcmQgYXJndW1lbnRzLgorCisgICAgICAgIEF0dHJpYnV0ZXMgcGx1cyByZXR1cm4gdmFsdWVzIGFuZCBzaWRlIGVmZmVjdHMgY2FuIGJlIHNldCBvbiBjaGlsZAorICAgICAgICBtb2NrcyB1c2luZyBzdGFuZGFyZCBkb3Qgbm90YXRpb24gYW5kIHVucGFja2luZyBhIGRpY3Rpb25hcnkgaW4gdGhlCisgICAgICAgIG1ldGhvZCBjYWxsOgorCisgICAgICAgID4+PiBhdHRycyA9IHsnbWV0aG9kLnJldHVybl92YWx1ZSc6IDMsICdvdGhlci5zaWRlX2VmZmVjdCc6IEtleUVycm9yfQorICAgICAgICA+Pj4gbW9jay5jb25maWd1cmVfbW9jaygqKmF0dHJzKSIiIgorICAgICAgICBmb3IgYXJnLCB2YWwgaW4gc29ydGVkKGt3YXJncy5pdGVtcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2Ugc29ydCBvbiB0aGUgbnVtYmVyIG9mIGRvdHMgc28gdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXR0cmlidXRlcyBhcmUgc2V0IGJlZm9yZSB3ZSBzZXQgYXR0cmlidXRlcyBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXR0cmlidXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1sYW1iZGEgZW50cnk6IGVudHJ5WzBdLmNvdW50KCcuJykpOgorICAgICAgICAgICAgYXJncyA9IGFyZy5zcGxpdCgnLicpCisgICAgICAgICAgICBmaW5hbCA9IGFyZ3MucG9wKCkKKyAgICAgICAgICAgIG9iaiA9IHNlbGYKKyAgICAgICAgICAgIGZvciBlbnRyeSBpbiBhcmdzOgorICAgICAgICAgICAgICAgIG9iaiA9IGdldGF0dHIob2JqLCBlbnRyeSkKKyAgICAgICAgICAgIHNldGF0dHIob2JqLCBmaW5hbCwgdmFsKQorCisKKyAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgIGlmIG5hbWUgPT0gJ19tb2NrX21ldGhvZHMnOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKKyAgICAgICAgZWxpZiBzZWxmLl9tb2NrX21ldGhvZHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLl9tb2NrX21ldGhvZHMgb3IgbmFtZSBpbiBfYWxsX21hZ2ljczoKKyAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAlciIgJSBuYW1lKQorICAgICAgICBlbGlmIF9pc19tYWdpYyhuYW1lKToKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCisKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fbW9ja19jaGlsZHJlbi5nZXQobmFtZSkKKyAgICAgICAgaWYgcmVzdWx0IGlzIF9kZWxldGVkOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKKyAgICAgICAgZWxpZiByZXN1bHQgaXMgTm9uZToKKyAgICAgICAgICAgIHdyYXBzID0gTm9uZQorICAgICAgICAgICAgaWYgc2VsZi5fbW9ja193cmFwcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAjIFhYWFggc2hvdWxkIHdlIGdldCB0aGUgYXR0cmlidXRlIHdpdGhvdXQgdHJpZ2dlcmluZyBjb2RlCisgICAgICAgICAgICAgICAgIyBleGVjdXRpb24/CisgICAgICAgICAgICAgICAgd3JhcHMgPSBnZXRhdHRyKHNlbGYuX21vY2tfd3JhcHMsIG5hbWUpCisKKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2dldF9jaGlsZF9tb2NrKAorICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmLCBuYW1lPW5hbWUsIHdyYXBzPXdyYXBzLCBfbmV3X25hbWU9bmFtZSwKKyAgICAgICAgICAgICAgICBfbmV3X3BhcmVudD1zZWxmCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLl9tb2NrX2NoaWxkcmVuW25hbWVdICA9IHJlc3VsdAorCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShyZXN1bHQsIF9TcGVjU3RhdGUpOgorICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRlX2F1dG9zcGVjKAorICAgICAgICAgICAgICAgIHJlc3VsdC5zcGVjLCByZXN1bHQuc3BlY19zZXQsIHJlc3VsdC5pbnN0YW5jZSwKKyAgICAgICAgICAgICAgICByZXN1bHQucGFyZW50LCByZXN1bHQubmFtZQorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5fbW9ja19jaGlsZHJlbltuYW1lXSAgPSByZXN1bHQKKworICAgICAgICByZXR1cm4gcmVzdWx0CisKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgX25hbWVfbGlzdCA9IFtzZWxmLl9tb2NrX25ld19uYW1lXQorICAgICAgICBfcGFyZW50ID0gc2VsZi5fbW9ja19uZXdfcGFyZW50CisgICAgICAgIGxhc3QgPSBzZWxmCisKKyAgICAgICAgZG90ID0gJy4nCisgICAgICAgIGlmIF9uYW1lX2xpc3QgPT0gWycoKSddOgorICAgICAgICAgICAgZG90ID0gJycKKyAgICAgICAgc2VlbiA9IHNldCgpCisgICAgICAgIHdoaWxlIF9wYXJlbnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBsYXN0ID0gX3BhcmVudAorCisgICAgICAgICAgICBfbmFtZV9saXN0LmFwcGVuZChfcGFyZW50Ll9tb2NrX25ld19uYW1lICsgZG90KQorICAgICAgICAgICAgZG90ID0gJy4nCisgICAgICAgICAgICBpZiBfcGFyZW50Ll9tb2NrX25ld19uYW1lID09ICcoKSc6CisgICAgICAgICAgICAgICAgZG90ID0gJycKKworICAgICAgICAgICAgX3BhcmVudCA9IF9wYXJlbnQuX21vY2tfbmV3X3BhcmVudAorCisgICAgICAgICAgICAjIHVzZSBpZHMgaGVyZSBzbyBhcyBub3QgdG8gY2FsbCBfX2hhc2hfXyBvbiB0aGUgbW9ja3MKKyAgICAgICAgICAgIGlmIGlkKF9wYXJlbnQpIGluIHNlZW46CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHNlZW4uYWRkKGlkKF9wYXJlbnQpKQorCisgICAgICAgIF9uYW1lX2xpc3QgPSBsaXN0KHJldmVyc2VkKF9uYW1lX2xpc3QpKQorICAgICAgICBfZmlyc3QgPSBsYXN0Ll9tb2NrX25hbWUgb3IgJ21vY2snCisgICAgICAgIGlmIGxlbihfbmFtZV9saXN0KSA+IDE6CisgICAgICAgICAgICBpZiBfbmFtZV9saXN0WzFdIG5vdCBpbiAoJygpJywgJygpLicpOgorICAgICAgICAgICAgICAgIF9maXJzdCArPSAnLicKKyAgICAgICAgX25hbWVfbGlzdFswXSA9IF9maXJzdAorICAgICAgICBuYW1lID0gJycuam9pbihfbmFtZV9saXN0KQorCisgICAgICAgIG5hbWVfc3RyaW5nID0gJycKKyAgICAgICAgaWYgbmFtZSBub3QgaW4gKCdtb2NrJywgJ21vY2suJyk6CisgICAgICAgICAgICBuYW1lX3N0cmluZyA9ICcgbmFtZT0lcicgJSBuYW1lCisKKyAgICAgICAgc3BlY19zdHJpbmcgPSAnJworICAgICAgICBpZiBzZWxmLl9zcGVjX2NsYXNzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3BlY19zdHJpbmcgPSAnIHNwZWM9JXInCisgICAgICAgICAgICBpZiBzZWxmLl9zcGVjX3NldDoKKyAgICAgICAgICAgICAgICBzcGVjX3N0cmluZyA9ICcgc3BlY19zZXQ9JXInCisgICAgICAgICAgICBzcGVjX3N0cmluZyA9IHNwZWNfc3RyaW5nICUgc2VsZi5fc3BlY19jbGFzcy5fX25hbWVfXworICAgICAgICByZXR1cm4gIjwlcyVzJXMgaWQ9JyVzJz4iICUgKAorICAgICAgICAgICAgdHlwZShzZWxmKS5fX25hbWVfXywKKyAgICAgICAgICAgIG5hbWVfc3RyaW5nLAorICAgICAgICAgICAgc3BlY19zdHJpbmcsCisgICAgICAgICAgICBpZChzZWxmKQorICAgICAgICApCisKKworICAgIGRlZiBfX2Rpcl9fKHNlbGYpOgorICAgICAgICAiIiJGaWx0ZXIgdGhlIG91dHB1dCBvZiBgZGlyKG1vY2spYCB0byBvbmx5IHVzZWZ1bCBtZW1iZXJzLiIiIgorICAgICAgICBpZiBub3QgRklMVEVSX0RJUjoKKyAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19kaXJfXyhzZWxmKQorCisgICAgICAgIGV4dHJhcyA9IHNlbGYuX21vY2tfbWV0aG9kcyBvciBbXQorICAgICAgICBmcm9tX3R5cGUgPSBkaXIodHlwZShzZWxmKSkKKyAgICAgICAgZnJvbV9kaWN0ID0gbGlzdChzZWxmLl9fZGljdF9fKQorCisgICAgICAgIGZyb21fdHlwZSA9IFtlIGZvciBlIGluIGZyb21fdHlwZSBpZiBub3QgZS5zdGFydHN3aXRoKCdfJyldCisgICAgICAgIGZyb21fZGljdCA9IFtlIGZvciBlIGluIGZyb21fZGljdCBpZiBub3QgZS5zdGFydHN3aXRoKCdfJykgb3IKKyAgICAgICAgICAgICAgICAgICAgIF9pc19tYWdpYyhlKV0KKyAgICAgICAgcmV0dXJuIHNvcnRlZChzZXQoZXh0cmFzICsgZnJvbV90eXBlICsgZnJvbV9kaWN0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChzZWxmLl9tb2NrX2NoaWxkcmVuKSkpCisKKworICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgIGlmIG5hbWUgaW4gX2FsbG93ZWRfbmFtZXM6CisgICAgICAgICAgICAjIHByb3BlcnR5IHNldHRlcnMgZ28gdGhyb3VnaCBoZXJlCisgICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQorICAgICAgICBlbGlmIChzZWxmLl9zcGVjX3NldCBhbmQgc2VsZi5fbW9ja19tZXRob2RzIGlzIG5vdCBOb25lIGFuZAorICAgICAgICAgICAgbmFtZSBub3QgaW4gc2VsZi5fbW9ja19tZXRob2RzIGFuZAorICAgICAgICAgICAgbmFtZSBub3QgaW4gc2VsZi5fX2RpY3RfXyk6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnJXMnIiAlIG5hbWUpCisgICAgICAgIGVsaWYgbmFtZSBpbiBfdW5zdXBwb3J0ZWRfbWFnaWNzOgorICAgICAgICAgICAgbXNnID0gJ0F0dGVtcHRpbmcgdG8gc2V0IHVuc3VwcG9ydGVkIG1hZ2ljIG1ldGhvZCAlci4nICUgbmFtZQorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobXNnKQorICAgICAgICBlbGlmIG5hbWUgaW4gX2FsbF9tYWdpY3M6CisgICAgICAgICAgICBpZiBzZWxmLl9tb2NrX21ldGhvZHMgaXMgbm90IE5vbmUgYW5kIG5hbWUgbm90IGluIHNlbGYuX21vY2tfbWV0aG9kczoKKyAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnJXMnIiAlIG5hbWUpCisKKyAgICAgICAgICAgIGlmIG5vdCBfaXNfaW5zdGFuY2VfbW9jayh2YWx1ZSk6CisgICAgICAgICAgICAgICAgc2V0YXR0cih0eXBlKHNlbGYpLCBuYW1lLCBfZ2V0X21ldGhvZChuYW1lLCB2YWx1ZSkpCisgICAgICAgICAgICAgICAgb3JpZ2luYWwgPSB2YWx1ZQorICAgICAgICAgICAgICAgIHZhbHVlID0gbGFtYmRhICphcmdzLCAqKmt3OiBvcmlnaW5hbChzZWxmLCAqYXJncywgKiprdykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBvbmx5IHNldCBfbmV3X25hbWUgYW5kIG5vdCBuYW1lIHNvIHRoYXQgbW9ja19jYWxscyBpcyB0cmFja2VkCisgICAgICAgICAgICAgICAgIyBidXQgbm90IG1ldGhvZCBjYWxscworICAgICAgICAgICAgICAgIF9jaGVja19hbmRfc2V0X3BhcmVudChzZWxmLCB2YWx1ZSwgTm9uZSwgbmFtZSkKKyAgICAgICAgICAgICAgICBzZXRhdHRyKHR5cGUoc2VsZiksIG5hbWUsIHZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuX21vY2tfY2hpbGRyZW5bbmFtZV0gPSB2YWx1ZQorICAgICAgICBlbGlmIG5hbWUgPT0gJ19fY2xhc3NfXyc6CisgICAgICAgICAgICBzZWxmLl9zcGVjX2NsYXNzID0gdmFsdWUKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgX2NoZWNrX2FuZF9zZXRfcGFyZW50KHNlbGYsIHZhbHVlLCBuYW1lLCBuYW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLl9tb2NrX2NoaWxkcmVuW25hbWVdID0gdmFsdWUKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkKKworCisgICAgZGVmIF9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpOgorICAgICAgICBpZiBuYW1lIGluIF9hbGxfbWFnaWNzIGFuZCBuYW1lIGluIHR5cGUoc2VsZikuX19kaWN0X186CisgICAgICAgICAgICBkZWxhdHRyKHR5cGUoc2VsZiksIG5hbWUpCisgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLl9fZGljdF9fOgorICAgICAgICAgICAgICAgICMgZm9yIG1hZ2ljIG1ldGhvZHMgdGhhdCBhcmUgc3RpbGwgTWFnaWNQcm94eSBvYmplY3RzIGFuZAorICAgICAgICAgICAgICAgICMgbm90IHNldCBvbiB0aGUgaW5zdGFuY2UgaXRzZWxmCisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgbmFtZSBpbiBzZWxmLl9fZGljdF9fOgorICAgICAgICAgICAgb2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpCisKKyAgICAgICAgb2JqID0gc2VsZi5fbW9ja19jaGlsZHJlbi5nZXQobmFtZSwgX21pc3NpbmcpCisgICAgICAgIGlmIG9iaiBpcyBfZGVsZXRlZDoKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCisgICAgICAgIGlmIG9iaiBpcyBub3QgX21pc3Npbmc6CisgICAgICAgICAgICBkZWwgc2VsZi5fbW9ja19jaGlsZHJlbltuYW1lXQorICAgICAgICBzZWxmLl9tb2NrX2NoaWxkcmVuW25hbWVdID0gX2RlbGV0ZWQKKworCisKKyAgICBkZWYgX2Zvcm1hdF9tb2NrX2NhbGxfc2lnbmF0dXJlKHNlbGYsIGFyZ3MsIGt3YXJncyk6CisgICAgICAgIG5hbWUgPSBzZWxmLl9tb2NrX25hbWUgb3IgJ21vY2snCisgICAgICAgIHJldHVybiBfZm9ybWF0X2NhbGxfc2lnbmF0dXJlKG5hbWUsIGFyZ3MsIGt3YXJncykKKworCisgICAgZGVmIF9mb3JtYXRfbW9ja19mYWlsdXJlX21lc3NhZ2Uoc2VsZiwgYXJncywga3dhcmdzKToKKyAgICAgICAgbWVzc2FnZSA9ICdFeHBlY3RlZCBjYWxsOiAlc1xuQWN0dWFsIGNhbGw6ICVzJworICAgICAgICBleHBlY3RlZF9zdHJpbmcgPSBzZWxmLl9mb3JtYXRfbW9ja19jYWxsX3NpZ25hdHVyZShhcmdzLCBrd2FyZ3MpCisgICAgICAgIGNhbGxfYXJncyA9IHNlbGYuY2FsbF9hcmdzCisgICAgICAgIGlmIGxlbihjYWxsX2FyZ3MpID09IDM6CisgICAgICAgICAgICBjYWxsX2FyZ3MgPSBjYWxsX2FyZ3NbMTpdCisgICAgICAgIGFjdHVhbF9zdHJpbmcgPSBzZWxmLl9mb3JtYXRfbW9ja19jYWxsX3NpZ25hdHVyZSgqY2FsbF9hcmdzKQorICAgICAgICByZXR1cm4gbWVzc2FnZSAlIChleHBlY3RlZF9zdHJpbmcsIGFjdHVhbF9zdHJpbmcpCisKKworICAgIGRlZiBhc3NlcnRfY2FsbGVkX3dpdGgoX21vY2tfc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIiIiYXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLgorCisgICAgICAgIFJhaXNlcyBhbiBBc3NlcnRpb25FcnJvciBpZiB0aGUgYXJncyBhbmQga2V5d29yZCBhcmdzIHBhc3NlZCBpbiBhcmUKKyAgICAgICAgZGlmZmVyZW50IHRvIHRoZSBsYXN0IGNhbGwgdG8gdGhlIG1vY2suIiIiCisgICAgICAgIHNlbGYgPSBfbW9ja19zZWxmCisgICAgICAgIGlmIHNlbGYuY2FsbF9hcmdzIGlzIE5vbmU6CisgICAgICAgICAgICBleHBlY3RlZCA9IHNlbGYuX2Zvcm1hdF9tb2NrX2NhbGxfc2lnbmF0dXJlKGFyZ3MsIGt3YXJncykKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdFeHBlY3RlZCBjYWxsOiAlc1xuTm90IGNhbGxlZCcgJSAoZXhwZWN0ZWQsKSkKKworICAgICAgICBpZiBzZWxmLmNhbGxfYXJncyAhPSAoYXJncywga3dhcmdzKToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX2Zvcm1hdF9tb2NrX2ZhaWx1cmVfbWVzc2FnZShhcmdzLCBrd2FyZ3MpCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCisKKworICAgIGRlZiBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChfbW9ja19zZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAiIiJhc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIGV4YWN0bHkgb25jZSBhbmQgd2l0aCB0aGUgc3BlY2lmaWVkCisgICAgICAgIGFyZ3VtZW50cy4iIiIKKyAgICAgICAgc2VsZiA9IF9tb2NrX3NlbGYKKyAgICAgICAgaWYgbm90IHNlbGYuY2FsbF9jb3VudCA9PSAxOgorICAgICAgICAgICAgbXNnID0gKCJFeHBlY3RlZCAnJXMnIHRvIGJlIGNhbGxlZCBvbmNlLiBDYWxsZWQgJXMgdGltZXMuIiAlCisgICAgICAgICAgICAgICAgICAgKHNlbGYuX21vY2tfbmFtZSBvciAnbW9jaycsIHNlbGYuY2FsbF9jb3VudCkpCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCisgICAgICAgIHJldHVybiBzZWxmLmFzc2VydF9jYWxsZWRfd2l0aCgqYXJncywgKiprd2FyZ3MpCisKKworICAgIGRlZiBhc3NlcnRfaGFzX2NhbGxzKHNlbGYsIGNhbGxzLCBhbnlfb3JkZXI9RmFsc2UpOgorICAgICAgICAiIiJhc3NlcnQgdGhlIG1vY2sgaGFzIGJlZW4gY2FsbGVkIHdpdGggdGhlIHNwZWNpZmllZCBjYWxscy4KKyAgICAgICAgVGhlIGBtb2NrX2NhbGxzYCBsaXN0IGlzIGNoZWNrZWQgZm9yIHRoZSBjYWxscy4KKworICAgICAgICBJZiBgYW55X29yZGVyYCBpcyBGYWxzZSAodGhlIGRlZmF1bHQpIHRoZW4gdGhlIGNhbGxzIG11c3QgYmUKKyAgICAgICAgc2VxdWVudGlhbC4gVGhlcmUgY2FuIGJlIGV4dHJhIGNhbGxzIGJlZm9yZSBvciBhZnRlciB0aGUKKyAgICAgICAgc3BlY2lmaWVkIGNhbGxzLgorCisgICAgICAgIElmIGBhbnlfb3JkZXJgIGlzIFRydWUgdGhlbiB0aGUgY2FsbHMgY2FuIGJlIGluIGFueSBvcmRlciwgYnV0CisgICAgICAgIHRoZXkgbXVzdCBhbGwgYXBwZWFyIGluIGBtb2NrX2NhbGxzYC4iIiIKKyAgICAgICAgaWYgbm90IGFueV9vcmRlcjoKKyAgICAgICAgICAgIGlmIGNhbGxzIG5vdCBpbiBzZWxmLm1vY2tfY2FsbHM6CisgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdDYWxscyBub3QgZm91bmQuXG5FeHBlY3RlZDogJXJcbicKKyAgICAgICAgICAgICAgICAgICAgJ0FjdHVhbDogJXInICUgKGNhbGxzLCBzZWxmLm1vY2tfY2FsbHMpCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgYWxsX2NhbGxzID0gbGlzdChzZWxmLm1vY2tfY2FsbHMpCisKKyAgICAgICAgbm90X2ZvdW5kID0gW10KKyAgICAgICAgZm9yIGthbGwgaW4gY2FsbHM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYWxsX2NhbGxzLnJlbW92ZShrYWxsKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgbm90X2ZvdW5kLmFwcGVuZChrYWxsKQorICAgICAgICBpZiBub3RfZm91bmQ6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKKyAgICAgICAgICAgICAgICAnJXIgbm90IGFsbCBmb3VuZCBpbiBjYWxsIGxpc3QnICUgKHR1cGxlKG5vdF9mb3VuZCksKQorICAgICAgICAgICAgKQorCisKKyAgICBkZWYgYXNzZXJ0X2FueV9jYWxsKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICIiImFzc2VydCB0aGUgbW9jayBoYXMgYmVlbiBjYWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cy4KKworICAgICAgICBUaGUgYXNzZXJ0IHBhc3NlcyBpZiB0aGUgbW9jayBoYXMgKmV2ZXIqIGJlZW4gY2FsbGVkLCB1bmxpa2UKKyAgICAgICAgYGFzc2VydF9jYWxsZWRfd2l0aGAgYW5kIGBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aGAgdGhhdCBvbmx5IHBhc3MgaWYKKyAgICAgICAgdGhlIGNhbGwgaXMgdGhlIG1vc3QgcmVjZW50IG9uZS4iIiIKKyAgICAgICAga2FsbCA9IGNhbGwoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBpZiBrYWxsIG5vdCBpbiBzZWxmLmNhbGxfYXJnc19saXN0OgorICAgICAgICAgICAgZXhwZWN0ZWRfc3RyaW5nID0gc2VsZi5fZm9ybWF0X21vY2tfY2FsbF9zaWduYXR1cmUoYXJncywga3dhcmdzKQorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgJyVzIGNhbGwgbm90IGZvdW5kJyAlIGV4cGVjdGVkX3N0cmluZworICAgICAgICAgICAgKQorCisKKyAgICBkZWYgX2dldF9jaGlsZF9tb2NrKHNlbGYsICoqa3cpOgorICAgICAgICAiIiJDcmVhdGUgdGhlIGNoaWxkIG1vY2tzIGZvciBhdHRyaWJ1dGVzIGFuZCByZXR1cm4gdmFsdWUuCisgICAgICAgIEJ5IGRlZmF1bHQgY2hpbGQgbW9ja3Mgd2lsbCBiZSB0aGUgc2FtZSB0eXBlIGFzIHRoZSBwYXJlbnQuCisgICAgICAgIFN1YmNsYXNzZXMgb2YgTW9jayBtYXkgd2FudCB0byBvdmVycmlkZSB0aGlzIHRvIGN1c3RvbWl6ZSB0aGUgd2F5CisgICAgICAgIGNoaWxkIG1vY2tzIGFyZSBtYWRlLgorCisgICAgICAgIEZvciBub24tY2FsbGFibGUgbW9ja3MgdGhlIGNhbGxhYmxlIHZhcmlhbnQgd2lsbCBiZSB1c2VkIChyYXRoZXIgdGhhbgorICAgICAgICBhbnkgY3VzdG9tIHN1YmNsYXNzKS4iIiIKKyAgICAgICAgX3R5cGUgPSB0eXBlKHNlbGYpCisgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKF90eXBlLCBDYWxsYWJsZU1peGluKToKKyAgICAgICAgICAgIGlmIGlzc3ViY2xhc3MoX3R5cGUsIE5vbkNhbGxhYmxlTWFnaWNNb2NrKToKKyAgICAgICAgICAgICAgICBrbGFzcyA9IE1hZ2ljTW9jaworICAgICAgICAgICAgZWxpZiBpc3N1YmNsYXNzKF90eXBlLCBOb25DYWxsYWJsZU1vY2spIDoKKyAgICAgICAgICAgICAgICBrbGFzcyA9IE1vY2sKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGtsYXNzID0gX3R5cGUuX19tcm9fX1sxXQorICAgICAgICByZXR1cm4ga2xhc3MoKiprdykKKworCisKK2RlZiBfdHJ5X2l0ZXIob2JqKToKKyAgICBpZiBvYmogaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIG9iagorICAgIGlmIF9pc19leGNlcHRpb24ob2JqKToKKyAgICAgICAgcmV0dXJuIG9iagorICAgIGlmIF9jYWxsYWJsZShvYmopOgorICAgICAgICByZXR1cm4gb2JqCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gaXRlcihvYmopCisgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgIyBYWFhYIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CisgICAgICAgICMgYnV0IHRoaXMgd2lsbCBibG93IHVwIG9uIGZpcnN0IGNhbGwgLSBzbyBtYXliZSB3ZSBzaG91bGQgZmFpbCBlYXJseT8KKyAgICAgICAgcmV0dXJuIG9iagorCisKKworY2xhc3MgQ2FsbGFibGVNaXhpbihCYXNlKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzcGVjPU5vbmUsIHNpZGVfZWZmZWN0PU5vbmUsIHJldHVybl92YWx1ZT1ERUZBVUxULAorICAgICAgICAgICAgICAgICB3cmFwcz1Ob25lLCBuYW1lPU5vbmUsIHNwZWNfc2V0PU5vbmUsIHBhcmVudD1Ob25lLAorICAgICAgICAgICAgICAgICBfc3BlY19zdGF0ZT1Ob25lLCBfbmV3X25hbWU9JycsIF9uZXdfcGFyZW50PU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5fX2RpY3RfX1snX21vY2tfcmV0dXJuX3ZhbHVlJ10gPSByZXR1cm5fdmFsdWUKKworICAgICAgICBfc2FmZV9zdXBlcihDYWxsYWJsZU1peGluLCBzZWxmKS5fX2luaXRfXygKKyAgICAgICAgICAgIHNwZWMsIHdyYXBzLCBuYW1lLCBzcGVjX3NldCwgcGFyZW50LAorICAgICAgICAgICAgX3NwZWNfc3RhdGUsIF9uZXdfbmFtZSwgX25ld19wYXJlbnQsICoqa3dhcmdzCisgICAgICAgICkKKworICAgICAgICBzZWxmLnNpZGVfZWZmZWN0ID0gc2lkZV9lZmZlY3QKKworCisgICAgZGVmIF9tb2NrX2NoZWNrX3NpZyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIHN0dWIgbWV0aG9kIHRoYXQgY2FuIGJlIHJlcGxhY2VkIHdpdGggb25lIHdpdGggYSBzcGVjaWZpYyBzaWduYXR1cmUKKyAgICAgICAgcGFzcworCisKKyAgICBkZWYgX19jYWxsX18oX21vY2tfc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIyBjYW4ndCB1c2Ugc2VsZiBpbi1jYXNlIGEgZnVuY3Rpb24gLyBtZXRob2Qgd2UgYXJlIG1vY2tpbmcgdXNlcyBzZWxmCisgICAgICAgICMgaW4gdGhlIHNpZ25hdHVyZQorICAgICAgICBfbW9ja19zZWxmLl9tb2NrX2NoZWNrX3NpZygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHJldHVybiBfbW9ja19zZWxmLl9tb2NrX2NhbGwoKmFyZ3MsICoqa3dhcmdzKQorCisKKyAgICBkZWYgX21vY2tfY2FsbChfbW9ja19zZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmID0gX21vY2tfc2VsZgorICAgICAgICBzZWxmLmNhbGxlZCA9IFRydWUKKyAgICAgICAgc2VsZi5jYWxsX2NvdW50ICs9IDEKKyAgICAgICAgc2VsZi5jYWxsX2FyZ3MgPSBfQ2FsbCgoYXJncywga3dhcmdzKSwgdHdvPVRydWUpCisgICAgICAgIHNlbGYuY2FsbF9hcmdzX2xpc3QuYXBwZW5kKF9DYWxsKChhcmdzLCBrd2FyZ3MpLCB0d289VHJ1ZSkpCisKKyAgICAgICAgX25ld19uYW1lID0gc2VsZi5fbW9ja19uZXdfbmFtZQorICAgICAgICBfbmV3X3BhcmVudCA9IHNlbGYuX21vY2tfbmV3X3BhcmVudAorICAgICAgICBzZWxmLm1vY2tfY2FsbHMuYXBwZW5kKF9DYWxsKCgnJywgYXJncywga3dhcmdzKSkpCisKKyAgICAgICAgc2VlbiA9IHNldCgpCisgICAgICAgIHNraXBfbmV4dF9kb3QgPSBfbmV3X25hbWUgPT0gJygpJworICAgICAgICBkb19tZXRob2RfY2FsbHMgPSBzZWxmLl9tb2NrX3BhcmVudCBpcyBub3QgTm9uZQorICAgICAgICBuYW1lID0gc2VsZi5fbW9ja19uYW1lCisgICAgICAgIHdoaWxlIF9uZXdfcGFyZW50IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdGhpc19tb2NrX2NhbGwgPSBfQ2FsbCgoX25ld19uYW1lLCBhcmdzLCBrd2FyZ3MpKQorICAgICAgICAgICAgaWYgX25ld19wYXJlbnQuX21vY2tfbmV3X25hbWU6CisgICAgICAgICAgICAgICAgZG90ID0gJy4nCisgICAgICAgICAgICAgICAgaWYgc2tpcF9uZXh0X2RvdDoKKyAgICAgICAgICAgICAgICAgICAgZG90ID0gJycKKworICAgICAgICAgICAgICAgIHNraXBfbmV4dF9kb3QgPSBGYWxzZQorICAgICAgICAgICAgICAgIGlmIF9uZXdfcGFyZW50Ll9tb2NrX25ld19uYW1lID09ICcoKSc6CisgICAgICAgICAgICAgICAgICAgIHNraXBfbmV4dF9kb3QgPSBUcnVlCisKKyAgICAgICAgICAgICAgICBfbmV3X25hbWUgPSBfbmV3X3BhcmVudC5fbW9ja19uZXdfbmFtZSArIGRvdCArIF9uZXdfbmFtZQorCisgICAgICAgICAgICBpZiBkb19tZXRob2RfY2FsbHM6CisgICAgICAgICAgICAgICAgaWYgX25ld19uYW1lID09IG5hbWU6CisgICAgICAgICAgICAgICAgICAgIHRoaXNfbWV0aG9kX2NhbGwgPSB0aGlzX21vY2tfY2FsbAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRoaXNfbWV0aG9kX2NhbGwgPSBfQ2FsbCgobmFtZSwgYXJncywga3dhcmdzKSkKKyAgICAgICAgICAgICAgICBfbmV3X3BhcmVudC5tZXRob2RfY2FsbHMuYXBwZW5kKHRoaXNfbWV0aG9kX2NhbGwpCisKKyAgICAgICAgICAgICAgICBkb19tZXRob2RfY2FsbHMgPSBfbmV3X3BhcmVudC5fbW9ja19wYXJlbnQgaXMgbm90IE5vbmUKKyAgICAgICAgICAgICAgICBpZiBkb19tZXRob2RfY2FsbHM6CisgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBfbmV3X3BhcmVudC5fbW9ja19uYW1lICsgJy4nICsgbmFtZQorCisgICAgICAgICAgICBfbmV3X3BhcmVudC5tb2NrX2NhbGxzLmFwcGVuZCh0aGlzX21vY2tfY2FsbCkKKyAgICAgICAgICAgIF9uZXdfcGFyZW50ID0gX25ld19wYXJlbnQuX21vY2tfbmV3X3BhcmVudAorCisgICAgICAgICAgICAjIHVzZSBpZHMgaGVyZSBzbyBhcyBub3QgdG8gY2FsbCBfX2hhc2hfXyBvbiB0aGUgbW9ja3MKKyAgICAgICAgICAgIF9uZXdfcGFyZW50X2lkID0gaWQoX25ld19wYXJlbnQpCisgICAgICAgICAgICBpZiBfbmV3X3BhcmVudF9pZCBpbiBzZWVuOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBzZWVuLmFkZChfbmV3X3BhcmVudF9pZCkKKworICAgICAgICByZXRfdmFsID0gREVGQVVMVAorICAgICAgICBlZmZlY3QgPSBzZWxmLnNpZGVfZWZmZWN0CisgICAgICAgIGlmIGVmZmVjdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIF9pc19leGNlcHRpb24oZWZmZWN0KToKKyAgICAgICAgICAgICAgICByYWlzZSBlZmZlY3QKKworICAgICAgICAgICAgaWYgbm90IF9jYWxsYWJsZShlZmZlY3QpOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5leHQoZWZmZWN0KQorICAgICAgICAgICAgICAgIGlmIF9pc19leGNlcHRpb24ocmVzdWx0KToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgcmVzdWx0CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgICAgICAgICByZXRfdmFsID0gZWZmZWN0KCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIGlmIHJldF92YWwgaXMgREVGQVVMVDoKKyAgICAgICAgICAgICAgICByZXRfdmFsID0gc2VsZi5yZXR1cm5fdmFsdWUKKworICAgICAgICBpZiAoc2VsZi5fbW9ja193cmFwcyBpcyBub3QgTm9uZSBhbmQKKyAgICAgICAgICAgICBzZWxmLl9tb2NrX3JldHVybl92YWx1ZSBpcyBERUZBVUxUKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9tb2NrX3dyYXBzKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgaWYgcmV0X3ZhbCBpcyBERUZBVUxUOgorICAgICAgICAgICAgcmV0X3ZhbCA9IHNlbGYucmV0dXJuX3ZhbHVlCisgICAgICAgIHJldHVybiByZXRfdmFsCisKKworCitjbGFzcyBNb2NrKENhbGxhYmxlTWl4aW4sIE5vbkNhbGxhYmxlTW9jayk6CisgICAgIiIiCisgICAgQ3JlYXRlIGEgbmV3IGBNb2NrYCBvYmplY3QuIGBNb2NrYCB0YWtlcyBzZXZlcmFsIG9wdGlvbmFsIGFyZ3VtZW50cworICAgIHRoYXQgc3BlY2lmeSB0aGUgYmVoYXZpb3VyIG9mIHRoZSBNb2NrIG9iamVjdDoKKworICAgICogYHNwZWNgOiBUaGlzIGNhbiBiZSBlaXRoZXIgYSBsaXN0IG9mIHN0cmluZ3Mgb3IgYW4gZXhpc3Rpbmcgb2JqZWN0IChhCisgICAgICBjbGFzcyBvciBpbnN0YW5jZSkgdGhhdCBhY3RzIGFzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgbW9jayBvYmplY3QuIElmCisgICAgICB5b3UgcGFzcyBpbiBhbiBvYmplY3QgdGhlbiBhIGxpc3Qgb2Ygc3RyaW5ncyBpcyBmb3JtZWQgYnkgY2FsbGluZyBkaXIgb24KKyAgICAgIHRoZSBvYmplY3QgKGV4Y2x1ZGluZyB1bnN1cHBvcnRlZCBtYWdpYyBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzKS4gQWNjZXNzaW5nCisgICAgICBhbnkgYXR0cmlidXRlIG5vdCBpbiB0aGlzIGxpc3Qgd2lsbCByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgLgorCisgICAgICBJZiBgc3BlY2AgaXMgYW4gb2JqZWN0IChyYXRoZXIgdGhhbiBhIGxpc3Qgb2Ygc3RyaW5ncykgdGhlbgorICAgICAgYG1vY2suX19jbGFzc19fYCByZXR1cm5zIHRoZSBjbGFzcyBvZiB0aGUgc3BlYyBvYmplY3QuIFRoaXMgYWxsb3dzIG1vY2tzCisgICAgICB0byBwYXNzIGBpc2luc3RhbmNlYCB0ZXN0cy4KKworICAgICogYHNwZWNfc2V0YDogQSBzdHJpY3RlciB2YXJpYW50IG9mIGBzcGVjYC4gSWYgdXNlZCwgYXR0ZW1wdGluZyB0byAqc2V0KgorICAgICAgb3IgZ2V0IGFuIGF0dHJpYnV0ZSBvbiB0aGUgbW9jayB0aGF0IGlzbid0IG9uIHRoZSBvYmplY3QgcGFzc2VkIGFzCisgICAgICBgc3BlY19zZXRgIHdpbGwgcmFpc2UgYW4gYEF0dHJpYnV0ZUVycm9yYC4KKworICAgICogYHNpZGVfZWZmZWN0YDogQSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIE1vY2sgaXMgY2FsbGVkLiBTZWUKKyAgICAgIHRoZSBgc2lkZV9lZmZlY3RgIGF0dHJpYnV0ZS4gVXNlZnVsIGZvciByYWlzaW5nIGV4Y2VwdGlvbnMgb3IKKyAgICAgIGR5bmFtaWNhbGx5IGNoYW5naW5nIHJldHVybiB2YWx1ZXMuIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aGUgc2FtZQorICAgICAgYXJndW1lbnRzIGFzIHRoZSBtb2NrLCBhbmQgdW5sZXNzIGl0IHJldHVybnMgYERFRkFVTFRgLCB0aGUgcmV0dXJuCisgICAgICB2YWx1ZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZS4KKworICAgICAgSWYgYHNpZGVfZWZmZWN0YCBpcyBhbiBpdGVyYWJsZSB0aGVuIGVhY2ggY2FsbCB0byB0aGUgbW9jayB3aWxsIHJldHVybgorICAgICAgdGhlIG5leHQgdmFsdWUgZnJvbSB0aGUgaXRlcmFibGUuIElmIGFueSBvZiB0aGUgbWVtYmVycyBvZiB0aGUgaXRlcmFibGUKKyAgICAgIGFyZSBleGNlcHRpb25zIHRoZXkgd2lsbCBiZSByYWlzZWQgaW5zdGVhZCBvZiByZXR1cm5lZC4KKworICAgICAgSWYgYHNpZGVfZWZmZWN0YCBpcyBhbiBpdGVyYWJsZSB0aGVuIGVhY2ggY2FsbCB0byB0aGUgbW9jayB3aWxsIHJldHVybgorICAgICAgdGhlIG5leHQgdmFsdWUgZnJvbSB0aGUgaXRlcmFibGUuCisKKyAgICAqIGByZXR1cm5fdmFsdWVgOiBUaGUgdmFsdWUgcmV0dXJuZWQgd2hlbiB0aGUgbW9jayBpcyBjYWxsZWQuIEJ5IGRlZmF1bHQKKyAgICAgIHRoaXMgaXMgYSBuZXcgTW9jayAoY3JlYXRlZCBvbiBmaXJzdCBhY2Nlc3MpLiBTZWUgdGhlCisgICAgICBgcmV0dXJuX3ZhbHVlYCBhdHRyaWJ1dGUuCisKKyAgICAqIGB3cmFwc2A6IEl0ZW0gZm9yIHRoZSBtb2NrIG9iamVjdCB0byB3cmFwLiBJZiBgd3JhcHNgIGlzIG5vdCBOb25lIHRoZW4KKyAgICAgIGNhbGxpbmcgdGhlIE1vY2sgd2lsbCBwYXNzIHRoZSBjYWxsIHRocm91Z2ggdG8gdGhlIHdyYXBwZWQgb2JqZWN0CisgICAgICAocmV0dXJuaW5nIHRoZSByZWFsIHJlc3VsdCkuIEF0dHJpYnV0ZSBhY2Nlc3Mgb24gdGhlIG1vY2sgd2lsbCByZXR1cm4gYQorICAgICAgTW9jayBvYmplY3QgdGhhdCB3cmFwcyB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgb2YgdGhlIHdyYXBwZWQgb2JqZWN0CisgICAgICAoc28gYXR0ZW1wdGluZyB0byBhY2Nlc3MgYW4gYXR0cmlidXRlIHRoYXQgZG9lc24ndCBleGlzdCB3aWxsIHJhaXNlIGFuCisgICAgICBgQXR0cmlidXRlRXJyb3JgKS4KKworICAgICAgSWYgdGhlIG1vY2sgaGFzIGFuIGV4cGxpY2l0IGByZXR1cm5fdmFsdWVgIHNldCB0aGVuIGNhbGxzIGFyZSBub3QgcGFzc2VkCisgICAgICB0byB0aGUgd3JhcHBlZCBvYmplY3QgYW5kIHRoZSBgcmV0dXJuX3ZhbHVlYCBpcyByZXR1cm5lZCBpbnN0ZWFkLgorCisgICAgKiBgbmFtZWA6IElmIHRoZSBtb2NrIGhhcyBhIG5hbWUgdGhlbiBpdCB3aWxsIGJlIHVzZWQgaW4gdGhlIHJlcHIgb2YgdGhlCisgICAgICBtb2NrLiBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZy4gVGhlIG5hbWUgaXMgcHJvcGFnYXRlZCB0byBjaGlsZAorICAgICAgbW9ja3MuCisKKyAgICBNb2NrcyBjYW4gYWxzbyBiZSBjYWxsZWQgd2l0aCBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMuIFRoZXNlIHdpbGwgYmUKKyAgICB1c2VkIHRvIHNldCBhdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIGFmdGVyIGl0IGlzIGNyZWF0ZWQuCisgICAgIiIiCisKKworCitkZWYgX2RvdF9sb29rdXAodGhpbmcsIGNvbXAsIGltcG9ydF9wYXRoKToKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBnZXRhdHRyKHRoaW5nLCBjb21wKQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgX19pbXBvcnRfXyhpbXBvcnRfcGF0aCkKKyAgICAgICAgcmV0dXJuIGdldGF0dHIodGhpbmcsIGNvbXApCisKKworZGVmIF9pbXBvcnRlcih0YXJnZXQpOgorICAgIGNvbXBvbmVudHMgPSB0YXJnZXQuc3BsaXQoJy4nKQorICAgIGltcG9ydF9wYXRoID0gY29tcG9uZW50cy5wb3AoMCkKKyAgICB0aGluZyA9IF9faW1wb3J0X18oaW1wb3J0X3BhdGgpCisKKyAgICBmb3IgY29tcCBpbiBjb21wb25lbnRzOgorICAgICAgICBpbXBvcnRfcGF0aCArPSAiLiVzIiAlIGNvbXAKKyAgICAgICAgdGhpbmcgPSBfZG90X2xvb2t1cCh0aGluZywgY29tcCwgaW1wb3J0X3BhdGgpCisgICAgcmV0dXJuIHRoaW5nCisKKworZGVmIF9pc19zdGFydGVkKHBhdGNoZXIpOgorICAgICMgWFhYWCBob3JyaWJsZQorICAgIHJldHVybiBoYXNhdHRyKHBhdGNoZXIsICdpc19sb2NhbCcpCisKKworY2xhc3MgX3BhdGNoKG9iamVjdCk6CisKKyAgICBhdHRyaWJ1dGVfbmFtZSA9IE5vbmUKKyAgICBfYWN0aXZlX3BhdGNoZXMgPSBzZXQoKQorCisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICAgICAgc2VsZiwgZ2V0dGVyLCBhdHRyaWJ1dGUsIG5ldywgc3BlYywgY3JlYXRlLAorICAgICAgICAgICAgc3BlY19zZXQsIGF1dG9zcGVjLCBuZXdfY2FsbGFibGUsIGt3YXJncworICAgICAgICApOgorICAgICAgICBpZiBuZXdfY2FsbGFibGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBuZXcgaXMgbm90IERFRkFVTFQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCB1c2UgJ25ldycgYW5kICduZXdfY2FsbGFibGUnIHRvZ2V0aGVyIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGlmIGF1dG9zcGVjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgdXNlICdhdXRvc3BlYycgYW5kICduZXdfY2FsbGFibGUnIHRvZ2V0aGVyIgorICAgICAgICAgICAgICAgICkKKworICAgICAgICBzZWxmLmdldHRlciA9IGdldHRlcgorICAgICAgICBzZWxmLmF0dHJpYnV0ZSA9IGF0dHJpYnV0ZQorICAgICAgICBzZWxmLm5ldyA9IG5ldworICAgICAgICBzZWxmLm5ld19jYWxsYWJsZSA9IG5ld19jYWxsYWJsZQorICAgICAgICBzZWxmLnNwZWMgPSBzcGVjCisgICAgICAgIHNlbGYuY3JlYXRlID0gY3JlYXRlCisgICAgICAgIHNlbGYuaGFzX2xvY2FsID0gRmFsc2UKKyAgICAgICAgc2VsZi5zcGVjX3NldCA9IHNwZWNfc2V0CisgICAgICAgIHNlbGYuYXV0b3NwZWMgPSBhdXRvc3BlYworICAgICAgICBzZWxmLmt3YXJncyA9IGt3YXJncworICAgICAgICBzZWxmLmFkZGl0aW9uYWxfcGF0Y2hlcnMgPSBbXQorCisKKyAgICBkZWYgY29weShzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IF9wYXRjaCgKKyAgICAgICAgICAgIHNlbGYuZ2V0dGVyLCBzZWxmLmF0dHJpYnV0ZSwgc2VsZi5uZXcsIHNlbGYuc3BlYywKKyAgICAgICAgICAgIHNlbGYuY3JlYXRlLCBzZWxmLnNwZWNfc2V0LAorICAgICAgICAgICAgc2VsZi5hdXRvc3BlYywgc2VsZi5uZXdfY2FsbGFibGUsIHNlbGYua3dhcmdzCisgICAgICAgICkKKyAgICAgICAgcGF0Y2hlci5hdHRyaWJ1dGVfbmFtZSA9IHNlbGYuYXR0cmlidXRlX25hbWUKKyAgICAgICAgcGF0Y2hlci5hZGRpdGlvbmFsX3BhdGNoZXJzID0gWworICAgICAgICAgICAgcC5jb3B5KCkgZm9yIHAgaW4gc2VsZi5hZGRpdGlvbmFsX3BhdGNoZXJzCisgICAgICAgIF0KKyAgICAgICAgcmV0dXJuIHBhdGNoZXIKKworCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGZ1bmMpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGZ1bmMsIHR5cGUpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGVjb3JhdGVfY2xhc3MoZnVuYykKKyAgICAgICAgcmV0dXJuIHNlbGYuZGVjb3JhdGVfY2FsbGFibGUoZnVuYykKKworCisgICAgZGVmIGRlY29yYXRlX2NsYXNzKHNlbGYsIGtsYXNzKToKKyAgICAgICAgZm9yIGF0dHIgaW4gZGlyKGtsYXNzKToKKyAgICAgICAgICAgIGlmIG5vdCBhdHRyLnN0YXJ0c3dpdGgocGF0Y2guVEVTVF9QUkVGSVgpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGF0dHJfdmFsdWUgPSBnZXRhdHRyKGtsYXNzLCBhdHRyKQorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoYXR0cl92YWx1ZSwgIl9fY2FsbF9fIik6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgcGF0Y2hlciA9IHNlbGYuY29weSgpCisgICAgICAgICAgICBzZXRhdHRyKGtsYXNzLCBhdHRyLCBwYXRjaGVyKGF0dHJfdmFsdWUpKQorICAgICAgICByZXR1cm4ga2xhc3MKKworCisgICAgZGVmIGRlY29yYXRlX2NhbGxhYmxlKHNlbGYsIGZ1bmMpOgorICAgICAgICBpZiBoYXNhdHRyKGZ1bmMsICdwYXRjaGluZ3MnKToKKyAgICAgICAgICAgIGZ1bmMucGF0Y2hpbmdzLmFwcGVuZChzZWxmKQorICAgICAgICAgICAgcmV0dXJuIGZ1bmMKKworICAgICAgICBAd3JhcHMoZnVuYykKKyAgICAgICAgZGVmIHBhdGNoZWQoKmFyZ3MsICoqa2V5d2FyZ3MpOgorICAgICAgICAgICAgZXh0cmFfYXJncyA9IFtdCisgICAgICAgICAgICBlbnRlcmVkX3BhdGNoZXJzID0gW10KKworICAgICAgICAgICAgZXhjX2luZm8gPSB0dXBsZSgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm9yIHBhdGNoaW5nIGluIHBhdGNoZWQucGF0Y2hpbmdzOgorICAgICAgICAgICAgICAgICAgICBhcmcgPSBwYXRjaGluZy5fX2VudGVyX18oKQorICAgICAgICAgICAgICAgICAgICBlbnRlcmVkX3BhdGNoZXJzLmFwcGVuZChwYXRjaGluZykKKyAgICAgICAgICAgICAgICAgICAgaWYgcGF0Y2hpbmcuYXR0cmlidXRlX25hbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBrZXl3YXJncy51cGRhdGUoYXJnKQorICAgICAgICAgICAgICAgICAgICBlbGlmIHBhdGNoaW5nLm5ldyBpcyBERUZBVUxUOgorICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfYXJncy5hcHBlbmQoYXJnKQorCisgICAgICAgICAgICAgICAgYXJncyArPSB0dXBsZShleHRyYV9hcmdzKQorICAgICAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzLCAqKmtleXdhcmdzKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIGlmIChwYXRjaGluZyBub3QgaW4gZW50ZXJlZF9wYXRjaGVycyBhbmQKKyAgICAgICAgICAgICAgICAgICAgX2lzX3N0YXJ0ZWQocGF0Y2hpbmcpKToKKyAgICAgICAgICAgICAgICAgICAgIyB0aGUgcGF0Y2hlciBtYXkgaGF2ZSBiZWVuIHN0YXJ0ZWQsIGJ1dCBhbiBleGNlcHRpb24KKyAgICAgICAgICAgICAgICAgICAgIyByYWlzZWQgd2hpbHN0IGVudGVyaW5nIG9uZSBvZiBpdHMgYWRkaXRpb25hbF9wYXRjaGVycworICAgICAgICAgICAgICAgICAgICBlbnRlcmVkX3BhdGNoZXJzLmFwcGVuZChwYXRjaGluZykKKyAgICAgICAgICAgICAgICAjIFBhc3MgdGhlIGV4Y2VwdGlvbiB0byBfX2V4aXRfXworICAgICAgICAgICAgICAgIGV4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgICAgICAjIHJlLXJhaXNlIHRoZSBleGNlcHRpb24KKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmb3IgcGF0Y2hpbmcgaW4gcmV2ZXJzZWQoZW50ZXJlZF9wYXRjaGVycyk6CisgICAgICAgICAgICAgICAgICAgIHBhdGNoaW5nLl9fZXhpdF9fKCpleGNfaW5mbykKKworICAgICAgICBwYXRjaGVkLnBhdGNoaW5ncyA9IFtzZWxmXQorICAgICAgICByZXR1cm4gcGF0Y2hlZAorCisKKyAgICBkZWYgZ2V0X29yaWdpbmFsKHNlbGYpOgorICAgICAgICB0YXJnZXQgPSBzZWxmLmdldHRlcigpCisgICAgICAgIG5hbWUgPSBzZWxmLmF0dHJpYnV0ZQorCisgICAgICAgIG9yaWdpbmFsID0gREVGQVVMVAorICAgICAgICBsb2NhbCA9IEZhbHNlCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3JpZ2luYWwgPSB0YXJnZXQuX19kaWN0X19bbmFtZV0KKyAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgS2V5RXJyb3IpOgorICAgICAgICAgICAgb3JpZ2luYWwgPSBnZXRhdHRyKHRhcmdldCwgbmFtZSwgREVGQVVMVCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvY2FsID0gVHJ1ZQorCisgICAgICAgIGlmIG5vdCBzZWxmLmNyZWF0ZSBhbmQgb3JpZ2luYWwgaXMgREVGQVVMVDoKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKAorICAgICAgICAgICAgICAgICIlcyBkb2VzIG5vdCBoYXZlIHRoZSBhdHRyaWJ1dGUgJXIiICUgKHRhcmdldCwgbmFtZSkKKyAgICAgICAgICAgICkKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsLCBsb2NhbAorCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAiIiJQZXJmb3JtIHRoZSBwYXRjaC4iIiIKKyAgICAgICAgbmV3LCBzcGVjLCBzcGVjX3NldCA9IHNlbGYubmV3LCBzZWxmLnNwZWMsIHNlbGYuc3BlY19zZXQKKyAgICAgICAgYXV0b3NwZWMsIGt3YXJncyA9IHNlbGYuYXV0b3NwZWMsIHNlbGYua3dhcmdzCisgICAgICAgIG5ld19jYWxsYWJsZSA9IHNlbGYubmV3X2NhbGxhYmxlCisgICAgICAgIHNlbGYudGFyZ2V0ID0gc2VsZi5nZXR0ZXIoKQorCisgICAgICAgICMgbm9ybWFsaXNlIEZhbHNlIHRvIE5vbmUKKyAgICAgICAgaWYgc3BlYyBpcyBGYWxzZToKKyAgICAgICAgICAgIHNwZWMgPSBOb25lCisgICAgICAgIGlmIHNwZWNfc2V0IGlzIEZhbHNlOgorICAgICAgICAgICAgc3BlY19zZXQgPSBOb25lCisgICAgICAgIGlmIGF1dG9zcGVjIGlzIEZhbHNlOgorICAgICAgICAgICAgYXV0b3NwZWMgPSBOb25lCisKKyAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZSBhbmQgYXV0b3NwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbid0IHNwZWNpZnkgc3BlYyBhbmQgYXV0b3NwZWMiKQorICAgICAgICBpZiAoKHNwZWMgaXMgbm90IE5vbmUgb3IgYXV0b3NwZWMgaXMgbm90IE5vbmUpIGFuZAorICAgICAgICAgICAgc3BlY19zZXQgbm90IGluIChUcnVlLCBOb25lKSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbid0IHByb3ZpZGUgZXhwbGljaXQgc3BlY19zZXQgKmFuZCogc3BlYyBvciBhdXRvc3BlYyIpCisKKyAgICAgICAgb3JpZ2luYWwsIGxvY2FsID0gc2VsZi5nZXRfb3JpZ2luYWwoKQorCisgICAgICAgIGlmIG5ldyBpcyBERUZBVUxUIGFuZCBhdXRvc3BlYyBpcyBOb25lOgorICAgICAgICAgICAgaW5oZXJpdCA9IEZhbHNlCisgICAgICAgICAgICBpZiBzcGVjIGlzIFRydWU6CisgICAgICAgICAgICAgICAgIyBzZXQgc3BlYyB0byB0aGUgb2JqZWN0IHdlIGFyZSByZXBsYWNpbmcKKyAgICAgICAgICAgICAgICBzcGVjID0gb3JpZ2luYWwKKyAgICAgICAgICAgICAgICBpZiBzcGVjX3NldCBpcyBUcnVlOgorICAgICAgICAgICAgICAgICAgICBzcGVjX3NldCA9IG9yaWdpbmFsCisgICAgICAgICAgICAgICAgICAgIHNwZWMgPSBOb25lCisgICAgICAgICAgICBlbGlmIHNwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgc3BlY19zZXQgaXMgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgc3BlY19zZXQgPSBzcGVjCisgICAgICAgICAgICAgICAgICAgIHNwZWMgPSBOb25lCisgICAgICAgICAgICBlbGlmIHNwZWNfc2V0IGlzIFRydWU6CisgICAgICAgICAgICAgICAgc3BlY19zZXQgPSBvcmlnaW5hbAorCisgICAgICAgICAgICBpZiBzcGVjIGlzIG5vdCBOb25lIG9yIHNwZWNfc2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIG9yaWdpbmFsIGlzIERFRkFVTFQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgdXNlICdzcGVjJyB3aXRoIGNyZWF0ZT1UcnVlIikKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9yaWdpbmFsLCB0eXBlKToKKyAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSdyZSBwYXRjaGluZyBvdXQgYSBjbGFzcyBhbmQgdGhlcmUgaXMgYSBzcGVjCisgICAgICAgICAgICAgICAgICAgIGluaGVyaXQgPSBUcnVlCisKKyAgICAgICAgICAgIEtsYXNzID0gTWFnaWNNb2NrCisgICAgICAgICAgICBfa3dhcmdzID0ge30KKyAgICAgICAgICAgIGlmIG5ld19jYWxsYWJsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBLbGFzcyA9IG5ld19jYWxsYWJsZQorICAgICAgICAgICAgZWxpZiBzcGVjIGlzIG5vdCBOb25lIG9yIHNwZWNfc2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHRoaXNfc3BlYyA9IHNwZWMKKyAgICAgICAgICAgICAgICBpZiBzcGVjX3NldCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgdGhpc19zcGVjID0gc3BlY19zZXQKKyAgICAgICAgICAgICAgICBpZiBfaXNfbGlzdCh0aGlzX3NwZWMpOgorICAgICAgICAgICAgICAgICAgICBub3RfY2FsbGFibGUgPSAnX19jYWxsX18nIG5vdCBpbiB0aGlzX3NwZWMKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBub3RfY2FsbGFibGUgPSBub3QgY2FsbGFibGUodGhpc19zcGVjKQorICAgICAgICAgICAgICAgIGlmIG5vdF9jYWxsYWJsZToKKyAgICAgICAgICAgICAgICAgICAgS2xhc3MgPSBOb25DYWxsYWJsZU1hZ2ljTW9jaworCisgICAgICAgICAgICBpZiBzcGVjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIF9rd2FyZ3NbJ3NwZWMnXSA9IHNwZWMKKyAgICAgICAgICAgIGlmIHNwZWNfc2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIF9rd2FyZ3NbJ3NwZWNfc2V0J10gPSBzcGVjX3NldAorCisgICAgICAgICAgICAjIGFkZCBhIG5hbWUgdG8gbW9ja3MKKyAgICAgICAgICAgIGlmIChpc2luc3RhbmNlKEtsYXNzLCB0eXBlKSBhbmQKKyAgICAgICAgICAgICAgICBpc3N1YmNsYXNzKEtsYXNzLCBOb25DYWxsYWJsZU1vY2spIGFuZCBzZWxmLmF0dHJpYnV0ZSk6CisgICAgICAgICAgICAgICAgX2t3YXJnc1snbmFtZSddID0gc2VsZi5hdHRyaWJ1dGUKKworICAgICAgICAgICAgX2t3YXJncy51cGRhdGUoa3dhcmdzKQorICAgICAgICAgICAgbmV3ID0gS2xhc3MoKipfa3dhcmdzKQorCisgICAgICAgICAgICBpZiBpbmhlcml0IGFuZCBfaXNfaW5zdGFuY2VfbW9jayhuZXcpOgorICAgICAgICAgICAgICAgICMgd2UgY2FuIG9ubHkgdGVsbCBpZiB0aGUgaW5zdGFuY2Ugc2hvdWxkIGJlIGNhbGxhYmxlIGlmIHRoZQorICAgICAgICAgICAgICAgICMgc3BlYyBpcyBub3QgYSBsaXN0CisgICAgICAgICAgICAgICAgdGhpc19zcGVjID0gc3BlYworICAgICAgICAgICAgICAgIGlmIHNwZWNfc2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB0aGlzX3NwZWMgPSBzcGVjX3NldAorICAgICAgICAgICAgICAgIGlmIChub3QgX2lzX2xpc3QodGhpc19zcGVjKSBhbmQgbm90CisgICAgICAgICAgICAgICAgICAgIF9pbnN0YW5jZV9jYWxsYWJsZSh0aGlzX3NwZWMpKToKKyAgICAgICAgICAgICAgICAgICAgS2xhc3MgPSBOb25DYWxsYWJsZU1hZ2ljTW9jaworCisgICAgICAgICAgICAgICAgX2t3YXJncy5wb3AoJ25hbWUnKQorICAgICAgICAgICAgICAgIG5ldy5yZXR1cm5fdmFsdWUgPSBLbGFzcyhfbmV3X3BhcmVudD1uZXcsIF9uZXdfbmFtZT0nKCknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKl9rd2FyZ3MpCisgICAgICAgIGVsaWYgYXV0b3NwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIHNwZWMgaXMgaWdub3JlZCwgbmV3ICptdXN0KiBiZSBkZWZhdWx0LCBzcGVjX3NldCBpcyB0cmVhdGVkCisgICAgICAgICAgICAjIGFzIGEgYm9vbGVhbi4gU2hvdWxkIHdlIGNoZWNrIHNwZWMgaXMgbm90IE5vbmUgYW5kIHRoYXQgc3BlY19zZXQKKyAgICAgICAgICAgICMgaXMgYSBib29sPworICAgICAgICAgICAgaWYgbmV3IGlzIG5vdCBERUZBVUxUOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgImF1dG9zcGVjIGNyZWF0ZXMgdGhlIG1vY2sgZm9yIHlvdS4gQ2FuJ3Qgc3BlY2lmeSAiCisgICAgICAgICAgICAgICAgICAgICJhdXRvc3BlYyBhbmQgbmV3LiIKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBpZiBvcmlnaW5hbCBpcyBERUZBVUxUOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgdXNlICdhdXRvc3BlYycgd2l0aCBjcmVhdGU9VHJ1ZSIpCisgICAgICAgICAgICBzcGVjX3NldCA9IGJvb2woc3BlY19zZXQpCisgICAgICAgICAgICBpZiBhdXRvc3BlYyBpcyBUcnVlOgorICAgICAgICAgICAgICAgIGF1dG9zcGVjID0gb3JpZ2luYWwKKworICAgICAgICAgICAgbmV3ID0gY3JlYXRlX2F1dG9zcGVjKGF1dG9zcGVjLCBzcGVjX3NldD1zcGVjX3NldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbmFtZT1zZWxmLmF0dHJpYnV0ZSwgKiprd2FyZ3MpCisgICAgICAgIGVsaWYga3dhcmdzOgorICAgICAgICAgICAgIyBjYW4ndCBzZXQga2V5d29yZCBhcmdzIHdoZW4gd2UgYXJlbid0IGNyZWF0aW5nIHRoZSBtb2NrCisgICAgICAgICAgICAjIFhYWFggSWYgbmV3IGlzIGEgTW9jayB3ZSBjb3VsZCBjYWxsIG5ldy5jb25maWd1cmVfbW9jaygqKmt3YXJncykKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgcGFzcyBrd2FyZ3MgdG8gYSBtb2NrIHdlIGFyZW4ndCBjcmVhdGluZyIpCisKKyAgICAgICAgbmV3X2F0dHIgPSBuZXcKKworICAgICAgICBzZWxmLnRlbXBfb3JpZ2luYWwgPSBvcmlnaW5hbAorICAgICAgICBzZWxmLmlzX2xvY2FsID0gbG9jYWwKKyAgICAgICAgc2V0YXR0cihzZWxmLnRhcmdldCwgc2VsZi5hdHRyaWJ1dGUsIG5ld19hdHRyKQorICAgICAgICBpZiBzZWxmLmF0dHJpYnV0ZV9uYW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZXh0cmFfYXJncyA9IHt9CisgICAgICAgICAgICBpZiBzZWxmLm5ldyBpcyBERUZBVUxUOgorICAgICAgICAgICAgICAgIGV4dHJhX2FyZ3Nbc2VsZi5hdHRyaWJ1dGVfbmFtZV0gPSAgbmV3CisgICAgICAgICAgICBmb3IgcGF0Y2hpbmcgaW4gc2VsZi5hZGRpdGlvbmFsX3BhdGNoZXJzOgorICAgICAgICAgICAgICAgIGFyZyA9IHBhdGNoaW5nLl9fZW50ZXJfXygpCisgICAgICAgICAgICAgICAgaWYgcGF0Y2hpbmcubmV3IGlzIERFRkFVTFQ6CisgICAgICAgICAgICAgICAgICAgIGV4dHJhX2FyZ3MudXBkYXRlKGFyZykKKyAgICAgICAgICAgIHJldHVybiBleHRyYV9hcmdzCisKKyAgICAgICAgcmV0dXJuIG5ldworCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19pbmZvKToKKyAgICAgICAgIiIiVW5kbyB0aGUgcGF0Y2guIiIiCisgICAgICAgIGlmIG5vdCBfaXNfc3RhcnRlZChzZWxmKToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignc3RvcCBjYWxsZWQgb24gdW5zdGFydGVkIHBhdGNoZXInKQorCisgICAgICAgIGlmIHNlbGYuaXNfbG9jYWwgYW5kIHNlbGYudGVtcF9vcmlnaW5hbCBpcyBub3QgREVGQVVMVDoKKyAgICAgICAgICAgIHNldGF0dHIoc2VsZi50YXJnZXQsIHNlbGYuYXR0cmlidXRlLCBzZWxmLnRlbXBfb3JpZ2luYWwpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkZWxhdHRyKHNlbGYudGFyZ2V0LCBzZWxmLmF0dHJpYnV0ZSkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNyZWF0ZSBhbmQgbm90IGhhc2F0dHIoc2VsZi50YXJnZXQsIHNlbGYuYXR0cmlidXRlKToKKyAgICAgICAgICAgICAgICAjIG5lZWRlZCBmb3IgcHJveHkgb2JqZWN0cyBsaWtlIGRqYW5nbyBzZXR0aW5ncworICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZi50YXJnZXQsIHNlbGYuYXR0cmlidXRlLCBzZWxmLnRlbXBfb3JpZ2luYWwpCisKKyAgICAgICAgZGVsIHNlbGYudGVtcF9vcmlnaW5hbAorICAgICAgICBkZWwgc2VsZi5pc19sb2NhbAorICAgICAgICBkZWwgc2VsZi50YXJnZXQKKyAgICAgICAgZm9yIHBhdGNoZXIgaW4gcmV2ZXJzZWQoc2VsZi5hZGRpdGlvbmFsX3BhdGNoZXJzKToKKyAgICAgICAgICAgIGlmIF9pc19zdGFydGVkKHBhdGNoZXIpOgorICAgICAgICAgICAgICAgIHBhdGNoZXIuX19leGl0X18oKmV4Y19pbmZvKQorCisKKyAgICBkZWYgc3RhcnQoc2VsZik6CisgICAgICAgICIiIkFjdGl2YXRlIGEgcGF0Y2gsIHJldHVybmluZyBhbnkgY3JlYXRlZCBtb2NrLiIiIgorICAgICAgICByZXN1bHQgPSBzZWxmLl9fZW50ZXJfXygpCisgICAgICAgIHNlbGYuX2FjdGl2ZV9wYXRjaGVzLmFkZChzZWxmKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKworICAgIGRlZiBzdG9wKHNlbGYpOgorICAgICAgICAiIiJTdG9wIGFuIGFjdGl2ZSBwYXRjaC4iIiIKKyAgICAgICAgc2VsZi5fYWN0aXZlX3BhdGNoZXMuZGlzY2FyZChzZWxmKQorICAgICAgICByZXR1cm4gc2VsZi5fX2V4aXRfXygpCisKKworCitkZWYgX2dldF90YXJnZXQodGFyZ2V0KToKKyAgICB0cnk6CisgICAgICAgIHRhcmdldCwgYXR0cmlidXRlID0gdGFyZ2V0LnJzcGxpdCgnLicsIDEpCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIk5lZWQgYSB2YWxpZCB0YXJnZXQgdG8gcGF0Y2guIFlvdSBzdXBwbGllZDogJXIiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICh0YXJnZXQsKSkKKyAgICBnZXR0ZXIgPSBsYW1iZGE6IF9pbXBvcnRlcih0YXJnZXQpCisgICAgcmV0dXJuIGdldHRlciwgYXR0cmlidXRlCisKKworZGVmIF9wYXRjaF9vYmplY3QoCisgICAgICAgIHRhcmdldCwgYXR0cmlidXRlLCBuZXc9REVGQVVMVCwgc3BlYz1Ob25lLAorICAgICAgICBjcmVhdGU9RmFsc2UsIHNwZWNfc2V0PU5vbmUsIGF1dG9zcGVjPU5vbmUsCisgICAgICAgIG5ld19jYWxsYWJsZT1Ob25lLCAqKmt3YXJncworICAgICk6CisgICAgIiIiCisgICAgcGF0Y2ggdGhlIG5hbWVkIG1lbWJlciAoYGF0dHJpYnV0ZWApIG9uIGFuIG9iamVjdCAoYHRhcmdldGApIHdpdGggYSBtb2NrCisgICAgb2JqZWN0LgorCisgICAgYHBhdGNoLm9iamVjdGAgY2FuIGJlIHVzZWQgYXMgYSBkZWNvcmF0b3IsIGNsYXNzIGRlY29yYXRvciBvciBhIGNvbnRleHQKKyAgICBtYW5hZ2VyLiBBcmd1bWVudHMgYG5ld2AsIGBzcGVjYCwgYGNyZWF0ZWAsIGBzcGVjX3NldGAsCisgICAgYGF1dG9zcGVjYCBhbmQgYG5ld19jYWxsYWJsZWAgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvciBgcGF0Y2hgLiBMaWtlCisgICAgYHBhdGNoYCwgYHBhdGNoLm9iamVjdGAgdGFrZXMgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzIGZvciBjb25maWd1cmluZworICAgIHRoZSBtb2NrIG9iamVjdCBpdCBjcmVhdGVzLgorCisgICAgV2hlbiB1c2VkIGFzIGEgY2xhc3MgZGVjb3JhdG9yIGBwYXRjaC5vYmplY3RgIGhvbm91cnMgYHBhdGNoLlRFU1RfUFJFRklYYAorICAgIGZvciBjaG9vc2luZyB3aGljaCBtZXRob2RzIHRvIHdyYXAuCisgICAgIiIiCisgICAgZ2V0dGVyID0gbGFtYmRhOiB0YXJnZXQKKyAgICByZXR1cm4gX3BhdGNoKAorICAgICAgICBnZXR0ZXIsIGF0dHJpYnV0ZSwgbmV3LCBzcGVjLCBjcmVhdGUsCisgICAgICAgIHNwZWNfc2V0LCBhdXRvc3BlYywgbmV3X2NhbGxhYmxlLCBrd2FyZ3MKKyAgICApCisKKworZGVmIF9wYXRjaF9tdWx0aXBsZSh0YXJnZXQsIHNwZWM9Tm9uZSwgY3JlYXRlPUZhbHNlLCBzcGVjX3NldD1Ob25lLAorICAgICAgICAgICAgICAgICAgICBhdXRvc3BlYz1Ob25lLCBuZXdfY2FsbGFibGU9Tm9uZSwgKiprd2FyZ3MpOgorICAgICIiIlBlcmZvcm0gbXVsdGlwbGUgcGF0Y2hlcyBpbiBhIHNpbmdsZSBjYWxsLiBJdCB0YWtlcyB0aGUgb2JqZWN0IHRvIGJlCisgICAgcGF0Y2hlZCAoZWl0aGVyIGFzIGFuIG9iamVjdCBvciBhIHN0cmluZyB0byBmZXRjaCB0aGUgb2JqZWN0IGJ5IGltcG9ydGluZykKKyAgICBhbmQga2V5d29yZCBhcmd1bWVudHMgZm9yIHRoZSBwYXRjaGVzOjoKKworICAgICAgICB3aXRoIHBhdGNoLm11bHRpcGxlKHNldHRpbmdzLCBGSVJTVF9QQVRDSD0nb25lJywgU0VDT05EX1BBVENIPSd0d28nKToKKyAgICAgICAgICAgIC4uLgorCisgICAgVXNlIGBERUZBVUxUYCBhcyB0aGUgdmFsdWUgaWYgeW91IHdhbnQgYHBhdGNoLm11bHRpcGxlYCB0byBjcmVhdGUKKyAgICBtb2NrcyBmb3IgeW91LiBJbiB0aGlzIGNhc2UgdGhlIGNyZWF0ZWQgbW9ja3MgYXJlIHBhc3NlZCBpbnRvIGEgZGVjb3JhdGVkCisgICAgZnVuY3Rpb24gYnkga2V5d29yZCwgYW5kIGEgZGljdGlvbmFyeSBpcyByZXR1cm5lZCB3aGVuIGBwYXRjaC5tdWx0aXBsZWAgaXMKKyAgICB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgorCisgICAgYHBhdGNoLm11bHRpcGxlYCBjYW4gYmUgdXNlZCBhcyBhIGRlY29yYXRvciwgY2xhc3MgZGVjb3JhdG9yIG9yIGEgY29udGV4dAorICAgIG1hbmFnZXIuIFRoZSBhcmd1bWVudHMgYHNwZWNgLCBgc3BlY19zZXRgLCBgY3JlYXRlYCwKKyAgICBgYXV0b3NwZWNgIGFuZCBgbmV3X2NhbGxhYmxlYCBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yIGBwYXRjaGAuIFRoZXNlCisgICAgYXJndW1lbnRzIHdpbGwgYmUgYXBwbGllZCB0byAqYWxsKiBwYXRjaGVzIGRvbmUgYnkgYHBhdGNoLm11bHRpcGxlYC4KKworICAgIFdoZW4gdXNlZCBhcyBhIGNsYXNzIGRlY29yYXRvciBgcGF0Y2gubXVsdGlwbGVgIGhvbm91cnMgYHBhdGNoLlRFU1RfUFJFRklYYAorICAgIGZvciBjaG9vc2luZyB3aGljaCBtZXRob2RzIHRvIHdyYXAuCisgICAgIiIiCisgICAgaWYgdHlwZSh0YXJnZXQpIGlzIHN0cjoKKyAgICAgICAgZ2V0dGVyID0gbGFtYmRhOiBfaW1wb3J0ZXIodGFyZ2V0KQorICAgIGVsc2U6CisgICAgICAgIGdldHRlciA9IGxhbWJkYTogdGFyZ2V0CisKKyAgICBpZiBub3Qga3dhcmdzOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgJ011c3Qgc3VwcGx5IGF0IGxlYXN0IG9uZSBrZXl3b3JkIGFyZ3VtZW50IHdpdGggcGF0Y2gubXVsdGlwbGUnCisgICAgICAgICkKKyAgICAjIG5lZWQgdG8gd3JhcCBpbiBhIGxpc3QgZm9yIHB5dGhvbiAzLCB3aGVyZSBpdGVtcyBpcyBhIHZpZXcKKyAgICBpdGVtcyA9IGxpc3Qoa3dhcmdzLml0ZW1zKCkpCisgICAgYXR0cmlidXRlLCBuZXcgPSBpdGVtc1swXQorICAgIHBhdGNoZXIgPSBfcGF0Y2goCisgICAgICAgIGdldHRlciwgYXR0cmlidXRlLCBuZXcsIHNwZWMsIGNyZWF0ZSwgc3BlY19zZXQsCisgICAgICAgIGF1dG9zcGVjLCBuZXdfY2FsbGFibGUsIHt9CisgICAgKQorICAgIHBhdGNoZXIuYXR0cmlidXRlX25hbWUgPSBhdHRyaWJ1dGUKKyAgICBmb3IgYXR0cmlidXRlLCBuZXcgaW4gaXRlbXNbMTpdOgorICAgICAgICB0aGlzX3BhdGNoZXIgPSBfcGF0Y2goCisgICAgICAgICAgICBnZXR0ZXIsIGF0dHJpYnV0ZSwgbmV3LCBzcGVjLCBjcmVhdGUsIHNwZWNfc2V0LAorICAgICAgICAgICAgYXV0b3NwZWMsIG5ld19jYWxsYWJsZSwge30KKyAgICAgICAgKQorICAgICAgICB0aGlzX3BhdGNoZXIuYXR0cmlidXRlX25hbWUgPSBhdHRyaWJ1dGUKKyAgICAgICAgcGF0Y2hlci5hZGRpdGlvbmFsX3BhdGNoZXJzLmFwcGVuZCh0aGlzX3BhdGNoZXIpCisgICAgcmV0dXJuIHBhdGNoZXIKKworCitkZWYgcGF0Y2goCisgICAgICAgIHRhcmdldCwgbmV3PURFRkFVTFQsIHNwZWM9Tm9uZSwgY3JlYXRlPUZhbHNlLAorICAgICAgICBzcGVjX3NldD1Ob25lLCBhdXRvc3BlYz1Ob25lLCBuZXdfY2FsbGFibGU9Tm9uZSwgKiprd2FyZ3MKKyAgICApOgorICAgICIiIgorICAgIGBwYXRjaGAgYWN0cyBhcyBhIGZ1bmN0aW9uIGRlY29yYXRvciwgY2xhc3MgZGVjb3JhdG9yIG9yIGEgY29udGV4dAorICAgIG1hbmFnZXIuIEluc2lkZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb24gb3Igd2l0aCBzdGF0ZW1lbnQsIHRoZSBgdGFyZ2V0YAorICAgIGlzIHBhdGNoZWQgd2l0aCBhIGBuZXdgIG9iamVjdC4gV2hlbiB0aGUgZnVuY3Rpb24vd2l0aCBzdGF0ZW1lbnQgZXhpdHMKKyAgICB0aGUgcGF0Y2ggaXMgdW5kb25lLgorCisgICAgSWYgYG5ld2AgaXMgb21pdHRlZCwgdGhlbiB0aGUgdGFyZ2V0IGlzIHJlcGxhY2VkIHdpdGggYQorICAgIGBNYWdpY01vY2tgLiBJZiBgcGF0Y2hgIGlzIHVzZWQgYXMgYSBkZWNvcmF0b3IgYW5kIGBuZXdgIGlzCisgICAgb21pdHRlZCwgdGhlIGNyZWF0ZWQgbW9jayBpcyBwYXNzZWQgaW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgdG8gdGhlCisgICAgZGVjb3JhdGVkIGZ1bmN0aW9uLiBJZiBgcGF0Y2hgIGlzIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIgdGhlIGNyZWF0ZWQKKyAgICBtb2NrIGlzIHJldHVybmVkIGJ5IHRoZSBjb250ZXh0IG1hbmFnZXIuCisKKyAgICBgdGFyZ2V0YCBzaG91bGQgYmUgYSBzdHJpbmcgaW4gdGhlIGZvcm0gYCdwYWNrYWdlLm1vZHVsZS5DbGFzc05hbWUnYC4gVGhlCisgICAgYHRhcmdldGAgaXMgaW1wb3J0ZWQgYW5kIHRoZSBzcGVjaWZpZWQgb2JqZWN0IHJlcGxhY2VkIHdpdGggdGhlIGBuZXdgCisgICAgb2JqZWN0LCBzbyB0aGUgYHRhcmdldGAgbXVzdCBiZSBpbXBvcnRhYmxlIGZyb20gdGhlIGVudmlyb25tZW50IHlvdSBhcmUKKyAgICBjYWxsaW5nIGBwYXRjaGAgZnJvbS4gVGhlIHRhcmdldCBpcyBpbXBvcnRlZCB3aGVuIHRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24KKyAgICBpcyBleGVjdXRlZCwgbm90IGF0IGRlY29yYXRpb24gdGltZS4KKworICAgIFRoZSBgc3BlY2AgYW5kIGBzcGVjX3NldGAga2V5d29yZCBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgYE1hZ2ljTW9ja2AKKyAgICBpZiBwYXRjaCBpcyBjcmVhdGluZyBvbmUgZm9yIHlvdS4KKworICAgIEluIGFkZGl0aW9uIHlvdSBjYW4gcGFzcyBgc3BlYz1UcnVlYCBvciBgc3BlY19zZXQ9VHJ1ZWAsIHdoaWNoIGNhdXNlcworICAgIHBhdGNoIHRvIHBhc3MgaW4gdGhlIG9iamVjdCBiZWluZyBtb2NrZWQgYXMgdGhlIHNwZWMvc3BlY19zZXQgb2JqZWN0LgorCisgICAgYG5ld19jYWxsYWJsZWAgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IGEgZGlmZmVyZW50IGNsYXNzLCBvciBjYWxsYWJsZSBvYmplY3QsCisgICAgdGhhdCB3aWxsIGJlIGNhbGxlZCB0byBjcmVhdGUgdGhlIGBuZXdgIG9iamVjdC4gQnkgZGVmYXVsdCBgTWFnaWNNb2NrYCBpcworICAgIHVzZWQuCisKKyAgICBBIG1vcmUgcG93ZXJmdWwgZm9ybSBvZiBgc3BlY2AgaXMgYGF1dG9zcGVjYC4gSWYgeW91IHNldCBgYXV0b3NwZWM9VHJ1ZWAKKyAgICB0aGVuIHRoZSBtb2NrIHdpdGggYmUgY3JlYXRlZCB3aXRoIGEgc3BlYyBmcm9tIHRoZSBvYmplY3QgYmVpbmcgcmVwbGFjZWQuCisgICAgQWxsIGF0dHJpYnV0ZXMgb2YgdGhlIG1vY2sgd2lsbCBhbHNvIGhhdmUgdGhlIHNwZWMgb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICBhdHRyaWJ1dGUgb2YgdGhlIG9iamVjdCBiZWluZyByZXBsYWNlZC4gTWV0aG9kcyBhbmQgZnVuY3Rpb25zIGJlaW5nCisgICAgbW9ja2VkIHdpbGwgaGF2ZSB0aGVpciBhcmd1bWVudHMgY2hlY2tlZCBhbmQgd2lsbCByYWlzZSBhIGBUeXBlRXJyb3JgIGlmCisgICAgdGhleSBhcmUgY2FsbGVkIHdpdGggdGhlIHdyb25nIHNpZ25hdHVyZS4gRm9yIG1vY2tzIHJlcGxhY2luZyBhIGNsYXNzLAorICAgIHRoZWlyIHJldHVybiB2YWx1ZSAodGhlICdpbnN0YW5jZScpIHdpbGwgaGF2ZSB0aGUgc2FtZSBzcGVjIGFzIHRoZSBjbGFzcy4KKworICAgIEluc3RlYWQgb2YgYGF1dG9zcGVjPVRydWVgIHlvdSBjYW4gcGFzcyBgYXV0b3NwZWM9c29tZV9vYmplY3RgIHRvIHVzZSBhbgorICAgIGFyYml0cmFyeSBvYmplY3QgYXMgdGhlIHNwZWMgaW5zdGVhZCBvZiB0aGUgb25lIGJlaW5nIHJlcGxhY2VkLgorCisgICAgQnkgZGVmYXVsdCBgcGF0Y2hgIHdpbGwgZmFpbCB0byByZXBsYWNlIGF0dHJpYnV0ZXMgdGhhdCBkb24ndCBleGlzdC4gSWYKKyAgICB5b3UgcGFzcyBpbiBgY3JlYXRlPVRydWVgLCBhbmQgdGhlIGF0dHJpYnV0ZSBkb2Vzbid0IGV4aXN0LCBwYXRjaCB3aWxsCisgICAgY3JlYXRlIHRoZSBhdHRyaWJ1dGUgZm9yIHlvdSB3aGVuIHRoZSBwYXRjaGVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgYW5kCisgICAgZGVsZXRlIGl0IGFnYWluIGFmdGVyd2FyZHMuIFRoaXMgaXMgdXNlZnVsIGZvciB3cml0aW5nIHRlc3RzIGFnYWluc3QKKyAgICBhdHRyaWJ1dGVzIHRoYXQgeW91ciBwcm9kdWN0aW9uIGNvZGUgY3JlYXRlcyBhdCBydW50aW1lLiBJdCBpcyBvZmYgYnkKKyAgICBkZWZhdWx0IGJlY2F1c2UgaXQgY2FuIGJlIGRhbmdlcm91cy4gV2l0aCBpdCBzd2l0Y2hlZCBvbiB5b3UgY2FuIHdyaXRlCisgICAgcGFzc2luZyB0ZXN0cyBhZ2FpbnN0IEFQSXMgdGhhdCBkb24ndCBhY3R1YWxseSBleGlzdCEKKworICAgIFBhdGNoIGNhbiBiZSB1c2VkIGFzIGEgYFRlc3RDYXNlYCBjbGFzcyBkZWNvcmF0b3IuIEl0IHdvcmtzIGJ5CisgICAgZGVjb3JhdGluZyBlYWNoIHRlc3QgbWV0aG9kIGluIHRoZSBjbGFzcy4gVGhpcyByZWR1Y2VzIHRoZSBib2lsZXJwbGF0ZQorICAgIGNvZGUgd2hlbiB5b3VyIHRlc3QgbWV0aG9kcyBzaGFyZSBhIGNvbW1vbiBwYXRjaGluZ3Mgc2V0LiBgcGF0Y2hgIGZpbmRzCisgICAgdGVzdHMgYnkgbG9va2luZyBmb3IgbWV0aG9kIG5hbWVzIHRoYXQgc3RhcnQgd2l0aCBgcGF0Y2guVEVTVF9QUkVGSVhgLgorICAgIEJ5IGRlZmF1bHQgdGhpcyBpcyBgdGVzdGAsIHdoaWNoIG1hdGNoZXMgdGhlIHdheSBgdW5pdHRlc3RgIGZpbmRzIHRlc3RzLgorICAgIFlvdSBjYW4gc3BlY2lmeSBhbiBhbHRlcm5hdGl2ZSBwcmVmaXggYnkgc2V0dGluZyBgcGF0Y2guVEVTVF9QUkVGSVhgLgorCisgICAgUGF0Y2ggY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIsIHdpdGggdGhlIHdpdGggc3RhdGVtZW50LiBIZXJlIHRoZQorICAgIHBhdGNoaW5nIGFwcGxpZXMgdG8gdGhlIGluZGVudGVkIGJsb2NrIGFmdGVyIHRoZSB3aXRoIHN0YXRlbWVudC4gSWYgeW91CisgICAgdXNlICJhcyIgdGhlbiB0aGUgcGF0Y2hlZCBvYmplY3Qgd2lsbCBiZSBib3VuZCB0byB0aGUgbmFtZSBhZnRlciB0aGUKKyAgICAiYXMiOyB2ZXJ5IHVzZWZ1bCBpZiBgcGF0Y2hgIGlzIGNyZWF0aW5nIGEgbW9jayBvYmplY3QgZm9yIHlvdS4KKworICAgIGBwYXRjaGAgdGFrZXMgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzLiBUaGVzZSB3aWxsIGJlIHBhc3NlZCB0bworICAgIHRoZSBgTW9ja2AgKG9yIGBuZXdfY2FsbGFibGVgKSBvbiBjb25zdHJ1Y3Rpb24uCisKKyAgICBgcGF0Y2guZGljdCguLi4pYCwgYHBhdGNoLm11bHRpcGxlKC4uLilgIGFuZCBgcGF0Y2gub2JqZWN0KC4uLilgIGFyZQorICAgIGF2YWlsYWJsZSBmb3IgYWx0ZXJuYXRlIHVzZS1jYXNlcy4KKyAgICAiIiIKKyAgICBnZXR0ZXIsIGF0dHJpYnV0ZSA9IF9nZXRfdGFyZ2V0KHRhcmdldCkKKyAgICByZXR1cm4gX3BhdGNoKAorICAgICAgICBnZXR0ZXIsIGF0dHJpYnV0ZSwgbmV3LCBzcGVjLCBjcmVhdGUsCisgICAgICAgIHNwZWNfc2V0LCBhdXRvc3BlYywgbmV3X2NhbGxhYmxlLCBrd2FyZ3MKKyAgICApCisKKworY2xhc3MgX3BhdGNoX2RpY3Qob2JqZWN0KToKKyAgICAiIiIKKyAgICBQYXRjaCBhIGRpY3Rpb25hcnksIG9yIGRpY3Rpb25hcnkgbGlrZSBvYmplY3QsIGFuZCByZXN0b3JlIHRoZSBkaWN0aW9uYXJ5CisgICAgdG8gaXRzIG9yaWdpbmFsIHN0YXRlIGFmdGVyIHRoZSB0ZXN0LgorCisgICAgYGluX2RpY3RgIGNhbiBiZSBhIGRpY3Rpb25hcnkgb3IgYSBtYXBwaW5nIGxpa2UgY29udGFpbmVyLiBJZiBpdCBpcyBhCisgICAgbWFwcGluZyB0aGVuIGl0IG11c3QgYXQgbGVhc3Qgc3VwcG9ydCBnZXR0aW5nLCBzZXR0aW5nIGFuZCBkZWxldGluZyBpdGVtcworICAgIHBsdXMgaXRlcmF0aW5nIG92ZXIga2V5cy4KKworICAgIGBpbl9kaWN0YCBjYW4gYWxzbyBiZSBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIHRoZSBkaWN0aW9uYXJ5LCB3aGljaAorICAgIHdpbGwgdGhlbiBiZSBmZXRjaGVkIGJ5IGltcG9ydGluZyBpdC4KKworICAgIGB2YWx1ZXNgIGNhbiBiZSBhIGRpY3Rpb25hcnkgb2YgdmFsdWVzIHRvIHNldCBpbiB0aGUgZGljdGlvbmFyeS4gYHZhbHVlc2AKKyAgICBjYW4gYWxzbyBiZSBhbiBpdGVyYWJsZSBvZiBgKGtleSwgdmFsdWUpYCBwYWlycy4KKworICAgIElmIGBjbGVhcmAgaXMgVHJ1ZSB0aGVuIHRoZSBkaWN0aW9uYXJ5IHdpbGwgYmUgY2xlYXJlZCBiZWZvcmUgdGhlIG5ldworICAgIHZhbHVlcyBhcmUgc2V0LgorCisgICAgYHBhdGNoLmRpY3RgIGNhbiBhbHNvIGJlIGNhbGxlZCB3aXRoIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cyB0byBzZXQKKyAgICB2YWx1ZXMgaW4gdGhlIGRpY3Rpb25hcnk6OgorCisgICAgICAgIHdpdGggcGF0Y2guZGljdCgnc3lzLm1vZHVsZXMnLCBteW1vZHVsZT1Nb2NrKCksIG90aGVyX21vZHVsZT1Nb2NrKCkpOgorICAgICAgICAgICAgLi4uCisKKyAgICBgcGF0Y2guZGljdGAgY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIsIGRlY29yYXRvciBvciBjbGFzcworICAgIGRlY29yYXRvci4gV2hlbiB1c2VkIGFzIGEgY2xhc3MgZGVjb3JhdG9yIGBwYXRjaC5kaWN0YCBob25vdXJzCisgICAgYHBhdGNoLlRFU1RfUFJFRklYYCBmb3IgY2hvb3Npbmcgd2hpY2ggbWV0aG9kcyB0byB3cmFwLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluX2RpY3QsIHZhbHVlcz0oKSwgY2xlYXI9RmFsc2UsICoqa3dhcmdzKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShpbl9kaWN0LCBzdHIpOgorICAgICAgICAgICAgaW5fZGljdCA9IF9pbXBvcnRlcihpbl9kaWN0KQorICAgICAgICBzZWxmLmluX2RpY3QgPSBpbl9kaWN0CisgICAgICAgICMgc3VwcG9ydCBhbnkgYXJndW1lbnQgc3VwcG9ydGVkIGJ5IGRpY3QoLi4uKSBjb25zdHJ1Y3RvcgorICAgICAgICBzZWxmLnZhbHVlcyA9IGRpY3QodmFsdWVzKQorICAgICAgICBzZWxmLnZhbHVlcy51cGRhdGUoa3dhcmdzKQorICAgICAgICBzZWxmLmNsZWFyID0gY2xlYXIKKyAgICAgICAgc2VsZi5fb3JpZ2luYWwgPSBOb25lCisKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBmKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShmLCB0eXBlKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmRlY29yYXRlX2NsYXNzKGYpCisgICAgICAgIEB3cmFwcyhmKQorICAgICAgICBkZWYgX2lubmVyKCphcmdzLCAqKmt3KToKKyAgICAgICAgICAgIHNlbGYuX3BhdGNoX2RpY3QoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3KQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzZWxmLl91bnBhdGNoX2RpY3QoKQorCisgICAgICAgIHJldHVybiBfaW5uZXIKKworCisgICAgZGVmIGRlY29yYXRlX2NsYXNzKHNlbGYsIGtsYXNzKToKKyAgICAgICAgZm9yIGF0dHIgaW4gZGlyKGtsYXNzKToKKyAgICAgICAgICAgIGF0dHJfdmFsdWUgPSBnZXRhdHRyKGtsYXNzLCBhdHRyKQorICAgICAgICAgICAgaWYgKGF0dHIuc3RhcnRzd2l0aChwYXRjaC5URVNUX1BSRUZJWCkgYW5kCisgICAgICAgICAgICAgICAgIGhhc2F0dHIoYXR0cl92YWx1ZSwgIl9fY2FsbF9fIikpOgorICAgICAgICAgICAgICAgIGRlY29yYXRvciA9IF9wYXRjaF9kaWN0KHNlbGYuaW5fZGljdCwgc2VsZi52YWx1ZXMsIHNlbGYuY2xlYXIpCisgICAgICAgICAgICAgICAgZGVjb3JhdGVkID0gZGVjb3JhdG9yKGF0dHJfdmFsdWUpCisgICAgICAgICAgICAgICAgc2V0YXR0cihrbGFzcywgYXR0ciwgZGVjb3JhdGVkKQorICAgICAgICByZXR1cm4ga2xhc3MKKworCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgIiIiUGF0Y2ggdGhlIGRpY3QuIiIiCisgICAgICAgIHNlbGYuX3BhdGNoX2RpY3QoKQorCisKKyAgICBkZWYgX3BhdGNoX2RpY3Qoc2VsZik6CisgICAgICAgIHZhbHVlcyA9IHNlbGYudmFsdWVzCisgICAgICAgIGluX2RpY3QgPSBzZWxmLmluX2RpY3QKKyAgICAgICAgY2xlYXIgPSBzZWxmLmNsZWFyCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3JpZ2luYWwgPSBpbl9kaWN0LmNvcHkoKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAjIGRpY3QgbGlrZSBvYmplY3Qgd2l0aCBubyBjb3B5IG1ldGhvZAorICAgICAgICAgICAgIyBtdXN0IHN1cHBvcnQgaXRlcmF0aW9uIG92ZXIga2V5cworICAgICAgICAgICAgb3JpZ2luYWwgPSB7fQorICAgICAgICAgICAgZm9yIGtleSBpbiBpbl9kaWN0OgorICAgICAgICAgICAgICAgIG9yaWdpbmFsW2tleV0gPSBpbl9kaWN0W2tleV0KKyAgICAgICAgc2VsZi5fb3JpZ2luYWwgPSBvcmlnaW5hbAorCisgICAgICAgIGlmIGNsZWFyOgorICAgICAgICAgICAgX2NsZWFyX2RpY3QoaW5fZGljdCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBpbl9kaWN0LnVwZGF0ZSh2YWx1ZXMpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICMgZGljdCBsaWtlIG9iamVjdCB3aXRoIG5vIHVwZGF0ZSBtZXRob2QKKyAgICAgICAgICAgIGZvciBrZXkgaW4gdmFsdWVzOgorICAgICAgICAgICAgICAgIGluX2RpY3Rba2V5XSA9IHZhbHVlc1trZXldCisKKworICAgIGRlZiBfdW5wYXRjaF9kaWN0KHNlbGYpOgorICAgICAgICBpbl9kaWN0ID0gc2VsZi5pbl9kaWN0CisgICAgICAgIG9yaWdpbmFsID0gc2VsZi5fb3JpZ2luYWwKKworICAgICAgICBfY2xlYXJfZGljdChpbl9kaWN0KQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGluX2RpY3QudXBkYXRlKG9yaWdpbmFsKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBmb3Iga2V5IGluIG9yaWdpbmFsOgorICAgICAgICAgICAgICAgIGluX2RpY3Rba2V5XSA9IG9yaWdpbmFsW2tleV0KKworCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgIiIiVW5wYXRjaCB0aGUgZGljdC4iIiIKKyAgICAgICAgc2VsZi5fdW5wYXRjaF9kaWN0KCkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBzdGFydCA9IF9fZW50ZXJfXworICAgIHN0b3AgPSBfX2V4aXRfXworCisKK2RlZiBfY2xlYXJfZGljdChpbl9kaWN0KToKKyAgICB0cnk6CisgICAgICAgIGluX2RpY3QuY2xlYXIoKQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAga2V5cyA9IGxpc3QoaW5fZGljdCkKKyAgICAgICAgZm9yIGtleSBpbiBrZXlzOgorICAgICAgICAgICAgZGVsIGluX2RpY3Rba2V5XQorCisKK2RlZiBfcGF0Y2hfc3RvcGFsbCgpOgorICAgICIiIlN0b3AgYWxsIGFjdGl2ZSBwYXRjaGVzLiIiIgorICAgIGZvciBwYXRjaCBpbiBsaXN0KF9wYXRjaC5fYWN0aXZlX3BhdGNoZXMpOgorICAgICAgICBwYXRjaC5zdG9wKCkKKworCitwYXRjaC5vYmplY3QgPSBfcGF0Y2hfb2JqZWN0CitwYXRjaC5kaWN0ID0gX3BhdGNoX2RpY3QKK3BhdGNoLm11bHRpcGxlID0gX3BhdGNoX211bHRpcGxlCitwYXRjaC5zdG9wYWxsID0gX3BhdGNoX3N0b3BhbGwKK3BhdGNoLlRFU1RfUFJFRklYID0gJ3Rlc3QnCisKK21hZ2ljX21ldGhvZHMgPSAoCisgICAgImx0IGxlIGd0IGdlIGVxIG5lICIKKyAgICAiZ2V0aXRlbSBzZXRpdGVtIGRlbGl0ZW0gIgorICAgICJsZW4gY29udGFpbnMgaXRlciAiCisgICAgImhhc2ggc3RyIHNpemVvZiAiCisgICAgImVudGVyIGV4aXQgIgorICAgICJkaXZtb2QgbmVnIHBvcyBhYnMgaW52ZXJ0ICIKKyAgICAiY29tcGxleCBpbnQgZmxvYXQgaW5kZXggIgorICAgICJ0cnVuYyBmbG9vciBjZWlsICIKKyAgICAiYm9vbCBuZXh0ICIKKykKKworbnVtZXJpY3MgPSAiYWRkIHN1YiBtdWwgZGl2IGZsb29yZGl2IG1vZCBsc2hpZnQgcnNoaWZ0IGFuZCB4b3Igb3IgcG93ICIKK2lucGxhY2UgPSAnICcuam9pbignaSVzJyAlIG4gZm9yIG4gaW4gbnVtZXJpY3Muc3BsaXQoKSkKK3JpZ2h0ID0gJyAnLmpvaW4oJ3IlcycgJSBuIGZvciBuIGluIG51bWVyaWNzLnNwbGl0KCkpCisKKyMgbm90IGluY2x1ZGluZyBfX3ByZXBhcmVfXywgX19pbnN0YW5jZWNoZWNrX18sIF9fc3ViY2xhc3NjaGVja19fCisjIChhcyB0aGV5IGFyZSBtZXRhY2xhc3MgbWV0aG9kcykKKyMgX19kZWxfXyBpcyBub3Qgc3VwcG9ydGVkIGF0IGFsbCBhcyBpdCBjYXVzZXMgcHJvYmxlbXMgaWYgaXQgZXhpc3RzCisKK19ub25fZGVmYXVsdHMgPSBzZXQoJ19fJXNfXycgJSBtZXRob2QgZm9yIG1ldGhvZCBpbiBbCisgICAgJ2dldCcsICdzZXQnLCAnZGVsZXRlJywgJ3JldmVyc2VkJywgJ21pc3NpbmcnLCAncmVkdWNlJywgJ3JlZHVjZV9leCcsCisgICAgJ2dldGluaXRhcmdzJywgJ2dldG5ld2FyZ3MnLCAnZ2V0c3RhdGUnLCAnc2V0c3RhdGUnLCAnZ2V0Zm9ybWF0JywKKyAgICAnc2V0Zm9ybWF0JywgJ3JlcHInLCAnZGlyJywgJ3N1YmNsYXNzZXMnLCAnZm9ybWF0JywKK10pCisKKworZGVmIF9nZXRfbWV0aG9kKG5hbWUsIGZ1bmMpOgorICAgICJUdXJucyBhIGNhbGxhYmxlIG9iamVjdCAobGlrZSBhIG1vY2spIGludG8gYSByZWFsIGZ1bmN0aW9uIgorICAgIGRlZiBtZXRob2Qoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICByZXR1cm4gZnVuYyhzZWxmLCAqYXJncywgKiprdykKKyAgICBtZXRob2QuX19uYW1lX18gPSBuYW1lCisgICAgcmV0dXJuIG1ldGhvZAorCisKK19tYWdpY3MgPSBzZXQoCisgICAgJ19fJXNfXycgJSBtZXRob2QgZm9yIG1ldGhvZCBpbgorICAgICcgJy5qb2luKFttYWdpY19tZXRob2RzLCBudW1lcmljcywgaW5wbGFjZSwgcmlnaHRdKS5zcGxpdCgpCispCisKK19hbGxfbWFnaWNzID0gX21hZ2ljcyB8IF9ub25fZGVmYXVsdHMKKworX3Vuc3VwcG9ydGVkX21hZ2ljcyA9IHNldChbCisgICAgJ19fZ2V0YXR0cl9fJywgJ19fc2V0YXR0cl9fJywKKyAgICAnX19pbml0X18nLCAnX19uZXdfXycsICdfX3ByZXBhcmVfXycKKyAgICAnX19pbnN0YW5jZWNoZWNrX18nLCAnX19zdWJjbGFzc2NoZWNrX18nLAorICAgICdfX2RlbF9fJworXSkKKworX2NhbGN1bGF0ZV9yZXR1cm5fdmFsdWUgPSB7CisgICAgJ19faGFzaF9fJzogbGFtYmRhIHNlbGY6IG9iamVjdC5fX2hhc2hfXyhzZWxmKSwKKyAgICAnX19zdHJfXyc6IGxhbWJkYSBzZWxmOiBvYmplY3QuX19zdHJfXyhzZWxmKSwKKyAgICAnX19zaXplb2ZfXyc6IGxhbWJkYSBzZWxmOiBvYmplY3QuX19zaXplb2ZfXyhzZWxmKSwKK30KKworX3JldHVybl92YWx1ZXMgPSB7CisgICAgJ19fbHRfXyc6IE5vdEltcGxlbWVudGVkLAorICAgICdfX2d0X18nOiBOb3RJbXBsZW1lbnRlZCwKKyAgICAnX19sZV9fJzogTm90SW1wbGVtZW50ZWQsCisgICAgJ19fZ2VfXyc6IE5vdEltcGxlbWVudGVkLAorICAgICdfX2ludF9fJzogMSwKKyAgICAnX19jb250YWluc19fJzogRmFsc2UsCisgICAgJ19fbGVuX18nOiAwLAorICAgICdfX2V4aXRfXyc6IEZhbHNlLAorICAgICdfX2NvbXBsZXhfXyc6IDFqLAorICAgICdfX2Zsb2F0X18nOiAxLjAsCisgICAgJ19fYm9vbF9fJzogVHJ1ZSwKKyAgICAnX19pbmRleF9fJzogMSwKK30KKworCitkZWYgX2dldF9lcShzZWxmKToKKyAgICBkZWYgX19lcV9fKG90aGVyKToKKyAgICAgICAgcmV0X3ZhbCA9IHNlbGYuX19lcV9fLl9tb2NrX3JldHVybl92YWx1ZQorICAgICAgICBpZiByZXRfdmFsIGlzIG5vdCBERUZBVUxUOgorICAgICAgICAgICAgcmV0dXJuIHJldF92YWwKKyAgICAgICAgcmV0dXJuIHNlbGYgaXMgb3RoZXIKKyAgICByZXR1cm4gX19lcV9fCisKK2RlZiBfZ2V0X25lKHNlbGYpOgorICAgIGRlZiBfX25lX18ob3RoZXIpOgorICAgICAgICBpZiBzZWxmLl9fbmVfXy5fbW9ja19yZXR1cm5fdmFsdWUgaXMgbm90IERFRkFVTFQ6CisgICAgICAgICAgICByZXR1cm4gREVGQVVMVAorICAgICAgICByZXR1cm4gc2VsZiBpcyBub3Qgb3RoZXIKKyAgICByZXR1cm4gX19uZV9fCisKK2RlZiBfZ2V0X2l0ZXIoc2VsZik6CisgICAgZGVmIF9faXRlcl9fKCk6CisgICAgICAgIHJldF92YWwgPSBzZWxmLl9faXRlcl9fLl9tb2NrX3JldHVybl92YWx1ZQorICAgICAgICBpZiByZXRfdmFsIGlzIERFRkFVTFQ6CisgICAgICAgICAgICByZXR1cm4gaXRlcihbXSkKKyAgICAgICAgIyBpZiByZXRfdmFsIHdhcyBhbHJlYWR5IGFuIGl0ZXJhdG9yLCB0aGVuIGNhbGxpbmcgaXRlciBvbiBpdCBzaG91bGQKKyAgICAgICAgIyByZXR1cm4gdGhlIGl0ZXJhdG9yIHVuY2hhbmdlZAorICAgICAgICByZXR1cm4gaXRlcihyZXRfdmFsKQorICAgIHJldHVybiBfX2l0ZXJfXworCitfc2lkZV9lZmZlY3RfbWV0aG9kcyA9IHsKKyAgICAnX19lcV9fJzogX2dldF9lcSwKKyAgICAnX19uZV9fJzogX2dldF9uZSwKKyAgICAnX19pdGVyX18nOiBfZ2V0X2l0ZXIsCit9CisKKworCitkZWYgX3NldF9yZXR1cm5fdmFsdWUobW9jaywgbWV0aG9kLCBuYW1lKToKKyAgICBmaXhlZCA9IF9yZXR1cm5fdmFsdWVzLmdldChuYW1lLCBERUZBVUxUKQorICAgIGlmIGZpeGVkIGlzIG5vdCBERUZBVUxUOgorICAgICAgICBtZXRob2QucmV0dXJuX3ZhbHVlID0gZml4ZWQKKyAgICAgICAgcmV0dXJuCisKKyAgICByZXR1cm5fY2FsdWxhdG9yID0gX2NhbGN1bGF0ZV9yZXR1cm5fdmFsdWUuZ2V0KG5hbWUpCisgICAgaWYgcmV0dXJuX2NhbHVsYXRvciBpcyBub3QgTm9uZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gcmV0dXJuX2NhbHVsYXRvcihtb2NrKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAjIFhYWFggd2h5IGRvIHdlIHJldHVybiBBdHRyaWJ1dGVFcnJvciBoZXJlPworICAgICAgICAgICAgIyAgICAgIHNldCBpdCBhcyBhIHNpZGVfZWZmZWN0IGluc3RlYWQ/CisgICAgICAgICAgICByZXR1cm5fdmFsdWUgPSBBdHRyaWJ1dGVFcnJvcihuYW1lKQorICAgICAgICBtZXRob2QucmV0dXJuX3ZhbHVlID0gcmV0dXJuX3ZhbHVlCisgICAgICAgIHJldHVybgorCisgICAgc2lkZV9lZmZlY3RvciA9IF9zaWRlX2VmZmVjdF9tZXRob2RzLmdldChuYW1lKQorICAgIGlmIHNpZGVfZWZmZWN0b3IgaXMgbm90IE5vbmU6CisgICAgICAgIG1ldGhvZC5zaWRlX2VmZmVjdCA9IHNpZGVfZWZmZWN0b3IobW9jaykKKworCisKK2NsYXNzIE1hZ2ljTWl4aW4ob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBfc2FmZV9zdXBlcihNYWdpY01peGluLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprdykKKyAgICAgICAgc2VsZi5fbW9ja19zZXRfbWFnaWNzKCkKKworCisgICAgZGVmIF9tb2NrX3NldF9tYWdpY3Moc2VsZik6CisgICAgICAgIHRoZXNlX21hZ2ljcyA9IF9tYWdpY3MKKworICAgICAgICBpZiBzZWxmLl9tb2NrX21ldGhvZHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB0aGVzZV9tYWdpY3MgPSBfbWFnaWNzLmludGVyc2VjdGlvbihzZWxmLl9tb2NrX21ldGhvZHMpCisKKyAgICAgICAgICAgIHJlbW92ZV9tYWdpY3MgPSBzZXQoKQorICAgICAgICAgICAgcmVtb3ZlX21hZ2ljcyA9IF9tYWdpY3MgLSB0aGVzZV9tYWdpY3MKKworICAgICAgICAgICAgZm9yIGVudHJ5IGluIHJlbW92ZV9tYWdpY3M6CisgICAgICAgICAgICAgICAgaWYgZW50cnkgaW4gdHlwZShzZWxmKS5fX2RpY3RfXzoKKyAgICAgICAgICAgICAgICAgICAgIyByZW1vdmUgdW5uZWVkZWQgbWFnaWMgbWV0aG9kcworICAgICAgICAgICAgICAgICAgICBkZWxhdHRyKHNlbGYsIGVudHJ5KQorCisgICAgICAgICMgZG9uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIGF0dHJpYnV0ZXMgaWYgY2FsbGVkIGEgc2Vjb25kIHRpbWUKKyAgICAgICAgdGhlc2VfbWFnaWNzID0gdGhlc2VfbWFnaWNzIC0gc2V0KHR5cGUoc2VsZikuX19kaWN0X18pCisKKyAgICAgICAgX3R5cGUgPSB0eXBlKHNlbGYpCisgICAgICAgIGZvciBlbnRyeSBpbiB0aGVzZV9tYWdpY3M6CisgICAgICAgICAgICBzZXRhdHRyKF90eXBlLCBlbnRyeSwgTWFnaWNQcm94eShlbnRyeSwgc2VsZikpCisKKworCitjbGFzcyBOb25DYWxsYWJsZU1hZ2ljTW9jayhNYWdpY01peGluLCBOb25DYWxsYWJsZU1vY2spOgorICAgICIiIkEgdmVyc2lvbiBvZiBgTWFnaWNNb2NrYCB0aGF0IGlzbid0IGNhbGxhYmxlLiIiIgorICAgIGRlZiBtb2NrX2FkZF9zcGVjKHNlbGYsIHNwZWMsIHNwZWNfc2V0PUZhbHNlKToKKyAgICAgICAgIiIiQWRkIGEgc3BlYyB0byBhIG1vY2suIGBzcGVjYCBjYW4gZWl0aGVyIGJlIGFuIG9iamVjdCBvciBhCisgICAgICAgIGxpc3Qgb2Ygc3RyaW5ncy4gT25seSBhdHRyaWJ1dGVzIG9uIHRoZSBgc3BlY2AgY2FuIGJlIGZldGNoZWQgYXMKKyAgICAgICAgYXR0cmlidXRlcyBmcm9tIHRoZSBtb2NrLgorCisgICAgICAgIElmIGBzcGVjX3NldGAgaXMgVHJ1ZSB0aGVuIG9ubHkgYXR0cmlidXRlcyBvbiB0aGUgc3BlYyBjYW4gYmUgc2V0LiIiIgorICAgICAgICBzZWxmLl9tb2NrX2FkZF9zcGVjKHNwZWMsIHNwZWNfc2V0KQorICAgICAgICBzZWxmLl9tb2NrX3NldF9tYWdpY3MoKQorCisKKworY2xhc3MgTWFnaWNNb2NrKE1hZ2ljTWl4aW4sIE1vY2spOgorICAgICIiIgorICAgIE1hZ2ljTW9jayBpcyBhIHN1YmNsYXNzIG9mIE1vY2sgd2l0aCBkZWZhdWx0IGltcGxlbWVudGF0aW9ucworICAgIG9mIG1vc3Qgb2YgdGhlIG1hZ2ljIG1ldGhvZHMuIFlvdSBjYW4gdXNlIE1hZ2ljTW9jayB3aXRob3V0IGhhdmluZyB0bworICAgIGNvbmZpZ3VyZSB0aGUgbWFnaWMgbWV0aG9kcyB5b3Vyc2VsZi4KKworICAgIElmIHlvdSB1c2UgdGhlIGBzcGVjYCBvciBgc3BlY19zZXRgIGFyZ3VtZW50cyB0aGVuICpvbmx5KiBtYWdpYworICAgIG1ldGhvZHMgdGhhdCBleGlzdCBpbiB0aGUgc3BlYyB3aWxsIGJlIGNyZWF0ZWQuCisKKyAgICBBdHRyaWJ1dGVzIGFuZCB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgYE1hZ2ljTW9ja2Agd2lsbCBhbHNvIGJlIGBNYWdpY01vY2tzYC4KKyAgICAiIiIKKyAgICBkZWYgbW9ja19hZGRfc3BlYyhzZWxmLCBzcGVjLCBzcGVjX3NldD1GYWxzZSk6CisgICAgICAgICIiIkFkZCBhIHNwZWMgdG8gYSBtb2NrLiBgc3BlY2AgY2FuIGVpdGhlciBiZSBhbiBvYmplY3Qgb3IgYQorICAgICAgICBsaXN0IG9mIHN0cmluZ3MuIE9ubHkgYXR0cmlidXRlcyBvbiB0aGUgYHNwZWNgIGNhbiBiZSBmZXRjaGVkIGFzCisgICAgICAgIGF0dHJpYnV0ZXMgZnJvbSB0aGUgbW9jay4KKworICAgICAgICBJZiBgc3BlY19zZXRgIGlzIFRydWUgdGhlbiBvbmx5IGF0dHJpYnV0ZXMgb24gdGhlIHNwZWMgY2FuIGJlIHNldC4iIiIKKyAgICAgICAgc2VsZi5fbW9ja19hZGRfc3BlYyhzcGVjLCBzcGVjX3NldCkKKyAgICAgICAgc2VsZi5fbW9ja19zZXRfbWFnaWNzKCkKKworCisKK2NsYXNzIE1hZ2ljUHJveHkob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGFyZW50KToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIG0gPSBzZWxmLmNyZWF0ZV9tb2NrKCkKKyAgICAgICAgcmV0dXJuIG0oKmFyZ3MsICoqa3dhcmdzKQorCisgICAgZGVmIGNyZWF0ZV9tb2NrKHNlbGYpOgorICAgICAgICBlbnRyeSA9IHNlbGYubmFtZQorICAgICAgICBwYXJlbnQgPSBzZWxmLnBhcmVudAorICAgICAgICBtID0gcGFyZW50Ll9nZXRfY2hpbGRfbW9jayhuYW1lPWVudHJ5LCBfbmV3X25hbWU9ZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9uZXdfcGFyZW50PXBhcmVudCkKKyAgICAgICAgc2V0YXR0cihwYXJlbnQsIGVudHJ5LCBtKQorICAgICAgICBfc2V0X3JldHVybl92YWx1ZShwYXJlbnQsIG0sIGVudHJ5KQorICAgICAgICByZXR1cm4gbQorCisgICAgZGVmIF9fZ2V0X18oc2VsZiwgb2JqLCBfdHlwZT1Ob25lKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY3JlYXRlX21vY2soKQorCisKKworY2xhc3MgX0FOWShvYmplY3QpOgorICAgICJBIGhlbHBlciBvYmplY3QgdGhhdCBjb21wYXJlcyBlcXVhbCB0byBldmVyeXRoaW5nLiIKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJzxBTlk+JworCitBTlkgPSBfQU5ZKCkKKworCisKK2RlZiBfZm9ybWF0X2NhbGxfc2lnbmF0dXJlKG5hbWUsIGFyZ3MsIGt3YXJncyk6CisgICAgbWVzc2FnZSA9ICclcyglJXMpJyAlIG5hbWUKKyAgICBmb3JtYXR0ZWRfYXJncyA9ICcnCisgICAgYXJnc19zdHJpbmcgPSAnLCAnLmpvaW4oW3JlcHIoYXJnKSBmb3IgYXJnIGluIGFyZ3NdKQorICAgIGt3YXJnc19zdHJpbmcgPSAnLCAnLmpvaW4oWworICAgICAgICAnJXM9JXInICUgKGtleSwgdmFsdWUpIGZvciBrZXksIHZhbHVlIGluIGt3YXJncy5pdGVtcygpCisgICAgXSkKKyAgICBpZiBhcmdzX3N0cmluZzoKKyAgICAgICAgZm9ybWF0dGVkX2FyZ3MgPSBhcmdzX3N0cmluZworICAgIGlmIGt3YXJnc19zdHJpbmc6CisgICAgICAgIGlmIGZvcm1hdHRlZF9hcmdzOgorICAgICAgICAgICAgZm9ybWF0dGVkX2FyZ3MgKz0gJywgJworICAgICAgICBmb3JtYXR0ZWRfYXJncyArPSBrd2FyZ3Nfc3RyaW5nCisKKyAgICByZXR1cm4gbWVzc2FnZSAlIGZvcm1hdHRlZF9hcmdzCisKKworCitjbGFzcyBfQ2FsbCh0dXBsZSk6CisgICAgIiIiCisgICAgQSB0dXBsZSBmb3IgaG9sZGluZyB0aGUgcmVzdWx0cyBvZiBhIGNhbGwgdG8gYSBtb2NrLCBlaXRoZXIgaW4gdGhlIGZvcm0KKyAgICBgKGFyZ3MsIGt3YXJncylgIG9yIGAobmFtZSwgYXJncywga3dhcmdzKWAuCisKKyAgICBJZiBhcmdzIG9yIGt3YXJncyBhcmUgZW1wdHkgdGhlbiBhIGNhbGwgdHVwbGUgd2lsbCBjb21wYXJlIGVxdWFsIHRvCisgICAgYSB0dXBsZSB3aXRob3V0IHRob3NlIHZhbHVlcy4gVGhpcyBtYWtlcyBjb21wYXJpc29ucyBsZXNzIHZlcmJvc2U6OgorCisgICAgICAgIF9DYWxsKCgnbmFtZScsICgpLCB7fSkpID09ICgnbmFtZScsKQorICAgICAgICBfQ2FsbCgoJ25hbWUnLCAoMSwpLCB7fSkpID09ICgnbmFtZScsICgxLCkpCisgICAgICAgIF9DYWxsKCgoKSwgeydhJzogJ2InfSkpID09ICh7J2EnOiAnYid9LCkKKworICAgIFRoZSBgX0NhbGxgIG9iamVjdCBwcm92aWRlcyBhIHVzZWZ1bCBzaG9ydGN1dCBmb3IgY29tcGFyaW5nIHdpdGggY2FsbDo6CisKKyAgICAgICAgX0NhbGwoKCgxLCAyKSwgeydhJzogM30pKSA9PSBjYWxsKDEsIDIsIGE9MykKKyAgICAgICAgX0NhbGwoKCdmb28nLCAoMSwgMiksIHsnYSc6IDN9KSkgPT0gY2FsbC5mb28oMSwgMiwgYT0zKQorCisgICAgSWYgdGhlIF9DYWxsIGhhcyBubyBuYW1lIHRoZW4gaXQgd2lsbCBtYXRjaCBhbnkgbmFtZS4KKyAgICAiIiIKKyAgICBkZWYgX19uZXdfXyhjbHMsIHZhbHVlPSgpLCBuYW1lPU5vbmUsIHBhcmVudD1Ob25lLCB0d289RmFsc2UsCisgICAgICAgICAgICAgICAgZnJvbV9rYWxsPVRydWUpOgorICAgICAgICBuYW1lID0gJycKKyAgICAgICAgYXJncyA9ICgpCisgICAgICAgIGt3YXJncyA9IHt9CisgICAgICAgIF9sZW4gPSBsZW4odmFsdWUpCisgICAgICAgIGlmIF9sZW4gPT0gMzoKKyAgICAgICAgICAgIG5hbWUsIGFyZ3MsIGt3YXJncyA9IHZhbHVlCisgICAgICAgIGVsaWYgX2xlbiA9PSAyOgorICAgICAgICAgICAgZmlyc3QsIHNlY29uZCA9IHZhbHVlCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZpcnN0LCBzdHIpOgorICAgICAgICAgICAgICAgIG5hbWUgPSBmaXJzdAorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2Vjb25kLCB0dXBsZSk6CisgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBzZWNvbmQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBrd2FyZ3MgPSBzZWNvbmQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXJncywga3dhcmdzID0gZmlyc3QsIHNlY29uZAorICAgICAgICBlbGlmIF9sZW4gPT0gMToKKyAgICAgICAgICAgIHZhbHVlLCA9IHZhbHVlCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICAgICAgICAgIG5hbWUgPSB2YWx1ZQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCB0dXBsZSk6CisgICAgICAgICAgICAgICAgYXJncyA9IHZhbHVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGt3YXJncyA9IHZhbHVlCisKKyAgICAgICAgaWYgdHdvOgorICAgICAgICAgICAgcmV0dXJuIHR1cGxlLl9fbmV3X18oY2xzLCAoYXJncywga3dhcmdzKSkKKworICAgICAgICByZXR1cm4gdHVwbGUuX19uZXdfXyhjbHMsIChuYW1lLCBhcmdzLCBrd2FyZ3MpKQorCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9KCksIG5hbWU9Tm9uZSwgcGFyZW50PU5vbmUsIHR3bz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgZnJvbV9rYWxsPVRydWUpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50CisgICAgICAgIHNlbGYuZnJvbV9rYWxsID0gZnJvbV9rYWxsCisKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBvdGhlciBpcyBBTlk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBsZW5fb3RoZXIgPSBsZW4ob3RoZXIpCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBzZWxmX25hbWUgPSAnJworICAgICAgICBpZiBsZW4oc2VsZikgPT0gMjoKKyAgICAgICAgICAgIHNlbGZfYXJncywgc2VsZl9rd2FyZ3MgPSBzZWxmCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmX25hbWUsIHNlbGZfYXJncywgc2VsZl9rd2FyZ3MgPSBzZWxmCisKKyAgICAgICAgb3RoZXJfbmFtZSA9ICcnCisgICAgICAgIGlmIGxlbl9vdGhlciA9PSAwOgorICAgICAgICAgICAgb3RoZXJfYXJncywgb3RoZXJfa3dhcmdzID0gKCksIHt9CisgICAgICAgIGVsaWYgbGVuX290aGVyID09IDM6CisgICAgICAgICAgICBvdGhlcl9uYW1lLCBvdGhlcl9hcmdzLCBvdGhlcl9rd2FyZ3MgPSBvdGhlcgorICAgICAgICBlbGlmIGxlbl9vdGhlciA9PSAxOgorICAgICAgICAgICAgdmFsdWUsID0gb3RoZXIKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHR1cGxlKToKKyAgICAgICAgICAgICAgICBvdGhlcl9hcmdzID0gdmFsdWUKKyAgICAgICAgICAgICAgICBvdGhlcl9rd2FyZ3MgPSB7fQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICAgICAgICAgIG90aGVyX25hbWUgPSB2YWx1ZQorICAgICAgICAgICAgICAgIG90aGVyX2FyZ3MsIG90aGVyX2t3YXJncyA9ICgpLCB7fQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvdGhlcl9hcmdzID0gKCkKKyAgICAgICAgICAgICAgICBvdGhlcl9rd2FyZ3MgPSB2YWx1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBsZW4gMgorICAgICAgICAgICAgIyBjb3VsZCBiZSAobmFtZSwgYXJncykgb3IgKG5hbWUsIGt3YXJncykgb3IgKGFyZ3MsIGt3YXJncykKKyAgICAgICAgICAgIGZpcnN0LCBzZWNvbmQgPSBvdGhlcgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmaXJzdCwgc3RyKToKKyAgICAgICAgICAgICAgICBvdGhlcl9uYW1lID0gZmlyc3QKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlY29uZCwgdHVwbGUpOgorICAgICAgICAgICAgICAgICAgICBvdGhlcl9hcmdzLCBvdGhlcl9rd2FyZ3MgPSBzZWNvbmQsIHt9CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgb3RoZXJfYXJncywgb3RoZXJfa3dhcmdzID0gKCksIHNlY29uZAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvdGhlcl9hcmdzLCBvdGhlcl9rd2FyZ3MgPSBmaXJzdCwgc2Vjb25kCisKKyAgICAgICAgaWYgc2VsZl9uYW1lIGFuZCBvdGhlcl9uYW1lICE9IHNlbGZfbmFtZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICMgdGhpcyBvcmRlciBpcyBpbXBvcnRhbnQgZm9yIEFOWSB0byB3b3JrIQorICAgICAgICByZXR1cm4gKG90aGVyX2FyZ3MsIG90aGVyX2t3YXJncykgPT0gKHNlbGZfYXJncywgc2VsZl9rd2FyZ3MpCisKKworICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gbm90IHNlbGYuX19lcV9fKG90aGVyKQorCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgaWYgc2VsZi5uYW1lIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gX0NhbGwoKCcnLCBhcmdzLCBrd2FyZ3MpLCBuYW1lPScoKScpCisKKyAgICAgICAgbmFtZSA9IHNlbGYubmFtZSArICcoKScKKyAgICAgICAgcmV0dXJuIF9DYWxsKChzZWxmLm5hbWUsIGFyZ3MsIGt3YXJncyksIG5hbWU9bmFtZSwgcGFyZW50PXNlbGYpCisKKworICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRyKToKKyAgICAgICAgaWYgc2VsZi5uYW1lIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gX0NhbGwobmFtZT1hdHRyLCBmcm9tX2thbGw9RmFsc2UpCisgICAgICAgIG5hbWUgPSAnJXMuJXMnICUgKHNlbGYubmFtZSwgYXR0cikKKyAgICAgICAgcmV0dXJuIF9DYWxsKG5hbWU9bmFtZSwgcGFyZW50PXNlbGYsIGZyb21fa2FsbD1GYWxzZSkKKworCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5mcm9tX2thbGw6CisgICAgICAgICAgICBuYW1lID0gc2VsZi5uYW1lIG9yICdjYWxsJworICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCcoKScpOgorICAgICAgICAgICAgICAgIG5hbWUgPSAnY2FsbCVzJyAlIG5hbWUKKyAgICAgICAgICAgIHJldHVybiBuYW1lCisKKyAgICAgICAgaWYgbGVuKHNlbGYpID09IDI6CisgICAgICAgICAgICBuYW1lID0gJ2NhbGwnCisgICAgICAgICAgICBhcmdzLCBrd2FyZ3MgPSBzZWxmCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBuYW1lLCBhcmdzLCBrd2FyZ3MgPSBzZWxmCisgICAgICAgICAgICBpZiBub3QgbmFtZToKKyAgICAgICAgICAgICAgICBuYW1lID0gJ2NhbGwnCisgICAgICAgICAgICBlbGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJygpJyk6CisgICAgICAgICAgICAgICAgbmFtZSA9ICdjYWxsLiVzJyAlIG5hbWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmFtZSA9ICdjYWxsJXMnICUgbmFtZQorICAgICAgICByZXR1cm4gX2Zvcm1hdF9jYWxsX3NpZ25hdHVyZShuYW1lLCBhcmdzLCBrd2FyZ3MpCisKKworICAgIGRlZiBjYWxsX2xpc3Qoc2VsZik6CisgICAgICAgICIiIkZvciBhIGNhbGwgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyBtdWx0aXBsZSBjYWxscywgYGNhbGxfbGlzdGAKKyAgICAgICAgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnRlcm1lZGlhdGUgY2FsbHMgYXMgd2VsbCBhcyB0aGUKKyAgICAgICAgZmluYWwgY2FsbC4iIiIKKyAgICAgICAgdmFscyA9IFtdCisgICAgICAgIHRoaW5nID0gc2VsZgorICAgICAgICB3aGlsZSB0aGluZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIHRoaW5nLmZyb21fa2FsbDoKKyAgICAgICAgICAgICAgICB2YWxzLmFwcGVuZCh0aGluZykKKyAgICAgICAgICAgIHRoaW5nID0gdGhpbmcucGFyZW50CisgICAgICAgIHJldHVybiBfQ2FsbExpc3QocmV2ZXJzZWQodmFscykpCisKKworY2FsbCA9IF9DYWxsKGZyb21fa2FsbD1GYWxzZSkKKworCisKK2RlZiBjcmVhdGVfYXV0b3NwZWMoc3BlYywgc3BlY19zZXQ9RmFsc2UsIGluc3RhbmNlPUZhbHNlLCBfcGFyZW50PU5vbmUsCisgICAgICAgICAgICAgICAgICAgIF9uYW1lPU5vbmUsICoqa3dhcmdzKToKKyAgICAiIiJDcmVhdGUgYSBtb2NrIG9iamVjdCB1c2luZyBhbm90aGVyIG9iamVjdCBhcyBhIHNwZWMuIEF0dHJpYnV0ZXMgb24gdGhlCisgICAgbW9jayB3aWxsIHVzZSB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgb24gdGhlIGBzcGVjYCBvYmplY3QgYXMgdGhlaXIKKyAgICBzcGVjLgorCisgICAgRnVuY3Rpb25zIG9yIG1ldGhvZHMgYmVpbmcgbW9ja2VkIHdpbGwgaGF2ZSB0aGVpciBhcmd1bWVudHMgY2hlY2tlZAorICAgIHRvIGNoZWNrIHRoYXQgdGhleSBhcmUgY2FsbGVkIHdpdGggdGhlIGNvcnJlY3Qgc2lnbmF0dXJlLgorCisgICAgSWYgYHNwZWNfc2V0YCBpcyBUcnVlIHRoZW4gYXR0ZW1wdGluZyB0byBzZXQgYXR0cmlidXRlcyB0aGF0IGRvbid0IGV4aXN0CisgICAgb24gdGhlIHNwZWMgb2JqZWN0IHdpbGwgcmFpc2UgYW4gYEF0dHJpYnV0ZUVycm9yYC4KKworICAgIElmIGEgY2xhc3MgaXMgdXNlZCBhcyBhIHNwZWMgdGhlbiB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBtb2NrICh0aGUKKyAgICBpbnN0YW5jZSBvZiB0aGUgY2xhc3MpIHdpbGwgaGF2ZSB0aGUgc2FtZSBzcGVjLiBZb3UgY2FuIHVzZSBhIGNsYXNzIGFzIHRoZQorICAgIHNwZWMgZm9yIGFuIGluc3RhbmNlIG9iamVjdCBieSBwYXNzaW5nIGBpbnN0YW5jZT1UcnVlYC4gVGhlIHJldHVybmVkIG1vY2sKKyAgICB3aWxsIG9ubHkgYmUgY2FsbGFibGUgaWYgaW5zdGFuY2VzIG9mIHRoZSBtb2NrIGFyZSBjYWxsYWJsZS4KKworICAgIGBjcmVhdGVfYXV0b3NwZWNgIGFsc28gdGFrZXMgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHBhc3NlZCB0bworICAgIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgY3JlYXRlZCBtb2NrLiIiIgorICAgIGlmIF9pc19saXN0KHNwZWMpOgorICAgICAgICAjIGNhbid0IHBhc3MgYSBsaXN0IGluc3RhbmNlIHRvIHRoZSBtb2NrIGNvbnN0cnVjdG9yIGFzIGl0IHdpbGwgYmUKKyAgICAgICAgIyBpbnRlcnByZXRlZCBhcyBhIGxpc3Qgb2Ygc3RyaW5ncworICAgICAgICBzcGVjID0gdHlwZShzcGVjKQorCisgICAgaXNfdHlwZSA9IGlzaW5zdGFuY2Uoc3BlYywgdHlwZSkKKworICAgIF9rd2FyZ3MgPSB7J3NwZWMnOiBzcGVjfQorICAgIGlmIHNwZWNfc2V0OgorICAgICAgICBfa3dhcmdzID0geydzcGVjX3NldCc6IHNwZWN9CisgICAgZWxpZiBzcGVjIGlzIE5vbmU6CisgICAgICAgICMgTm9uZSB3ZSBtb2NrIHdpdGggYSBub3JtYWwgbW9jayB3aXRob3V0IGEgc3BlYworICAgICAgICBfa3dhcmdzID0ge30KKworICAgIF9rd2FyZ3MudXBkYXRlKGt3YXJncykKKworICAgIEtsYXNzID0gTWFnaWNNb2NrCisgICAgaWYgdHlwZShzcGVjKSBpbiBEZXNjcmlwdG9yVHlwZXM6CisgICAgICAgICMgZGVzY3JpcHRvcnMgZG9uJ3QgaGF2ZSBhIHNwZWMKKyAgICAgICAgIyBiZWNhdXNlIHdlIGRvbid0IGtub3cgd2hhdCB0eXBlIHRoZXkgcmV0dXJuCisgICAgICAgIF9rd2FyZ3MgPSB7fQorICAgIGVsaWYgbm90IF9jYWxsYWJsZShzcGVjKToKKyAgICAgICAgS2xhc3MgPSBOb25DYWxsYWJsZU1hZ2ljTW9jaworICAgIGVsaWYgaXNfdHlwZSBhbmQgaW5zdGFuY2UgYW5kIG5vdCBfaW5zdGFuY2VfY2FsbGFibGUoc3BlYyk6CisgICAgICAgIEtsYXNzID0gTm9uQ2FsbGFibGVNYWdpY01vY2sKKworICAgIF9uZXdfbmFtZSA9IF9uYW1lCisgICAgaWYgX3BhcmVudCBpcyBOb25lOgorICAgICAgICAjIGZvciBhIHRvcCBsZXZlbCBvYmplY3Qgbm8gX25ld19uYW1lIHNob3VsZCBiZSBzZXQKKyAgICAgICAgX25ld19uYW1lID0gJycKKworICAgIG1vY2sgPSBLbGFzcyhwYXJlbnQ9X3BhcmVudCwgX25ld19wYXJlbnQ9X3BhcmVudCwgX25ld19uYW1lPV9uZXdfbmFtZSwKKyAgICAgICAgICAgICAgICAgbmFtZT1fbmFtZSwgKipfa3dhcmdzKQorCisgICAgaWYgaXNpbnN0YW5jZShzcGVjLCBGdW5jdGlvblR5cGVzKToKKyAgICAgICAgIyBzaG91bGQgb25seSBoYXBwZW4gYXQgdGhlIHRvcCBsZXZlbCBiZWNhdXNlIHdlIGRvbid0CisgICAgICAgICMgcmVjdXJzZSBmb3IgZnVuY3Rpb25zCisgICAgICAgIG1vY2sgPSBfc2V0X3NpZ25hdHVyZShtb2NrLCBzcGVjKQorICAgIGVsc2U6CisgICAgICAgIF9jaGVja19zaWduYXR1cmUoc3BlYywgbW9jaywgaXNfdHlwZSwgaW5zdGFuY2UpCisKKyAgICBpZiBfcGFyZW50IGlzIG5vdCBOb25lIGFuZCBub3QgaW5zdGFuY2U6CisgICAgICAgIF9wYXJlbnQuX21vY2tfY2hpbGRyZW5bX25hbWVdID0gbW9jaworCisgICAgaWYgaXNfdHlwZSBhbmQgbm90IGluc3RhbmNlIGFuZCAncmV0dXJuX3ZhbHVlJyBub3QgaW4ga3dhcmdzOgorICAgICAgICBtb2NrLnJldHVybl92YWx1ZSA9IGNyZWF0ZV9hdXRvc3BlYyhzcGVjLCBzcGVjX3NldCwgaW5zdGFuY2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX25hbWU9JygpJywgX3BhcmVudD1tb2NrKQorCisgICAgZm9yIGVudHJ5IGluIGRpcihzcGVjKToKKyAgICAgICAgaWYgX2lzX21hZ2ljKGVudHJ5KToKKyAgICAgICAgICAgICMgTWFnaWNNb2NrIGFscmVhZHkgZG9lcyB0aGUgdXNlZnVsIG1hZ2ljIG1ldGhvZHMgZm9yIHVzCisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICMgWFhYWCBkbyB3ZSBuZWVkIGEgYmV0dGVyIHdheSBvZiBnZXR0aW5nIGF0dHJpYnV0ZXMgd2l0aG91dAorICAgICAgICAjIHRyaWdnZXJpbmcgY29kZSBleGVjdXRpb24gKD8pIFByb2JhYmx5IG5vdCAtIHdlIG5lZWQgdGhlIGFjdHVhbAorICAgICAgICAjIG9iamVjdCB0byBtb2NrIGl0IHNvIHdlIHdvdWxkIHJhdGhlciB0cmlnZ2VyIGEgcHJvcGVydHkgdGhhbiBtb2NrCisgICAgICAgICMgdGhlIHByb3BlcnR5IGRlc2NyaXB0b3IuIExpa2V3aXNlIHdlIHdhbnQgdG8gbW9jayBvdXQgZHluYW1pY2FsbHkKKyAgICAgICAgIyBwcm92aWRlZCBhdHRyaWJ1dGVzLgorICAgICAgICAjIFhYWFggd2hhdCBhYm91dCBhdHRyaWJ1dGVzIHRoYXQgcmFpc2UgZXhjZXB0aW9ucyBvdGhlciB0aGFuCisgICAgICAgICMgQXR0cmlidXRlRXJyb3Igb24gYmVpbmcgZmV0Y2hlZD8KKyAgICAgICAgIyB3ZSBjb3VsZCBiZSByZXNpbGllbnQgYWdhaW5zdCBpdCwgb3IgY2F0Y2ggYW5kIHByb3BhZ2F0ZSB0aGUKKyAgICAgICAgIyBleGNlcHRpb24gd2hlbiB0aGUgYXR0cmlidXRlIGlzIGZldGNoZWQgZnJvbSB0aGUgbW9jaworICAgICAgICB0cnk6CisgICAgICAgICAgICBvcmlnaW5hbCA9IGdldGF0dHIoc3BlYywgZW50cnkpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAga3dhcmdzID0geydzcGVjJzogb3JpZ2luYWx9CisgICAgICAgIGlmIHNwZWNfc2V0OgorICAgICAgICAgICAga3dhcmdzID0geydzcGVjX3NldCc6IG9yaWdpbmFsfQorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG9yaWdpbmFsLCBGdW5jdGlvblR5cGVzKToKKyAgICAgICAgICAgIG5ldyA9IF9TcGVjU3RhdGUob3JpZ2luYWwsIHNwZWNfc2V0LCBtb2NrLCBlbnRyeSwgaW5zdGFuY2UpCisgICAgICAgICAgICBtb2NrLl9tb2NrX2NoaWxkcmVuW2VudHJ5XSA9IG5ldworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcGFyZW50ID0gbW9jaworICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzcGVjLCBGdW5jdGlvblR5cGVzKToKKyAgICAgICAgICAgICAgICBwYXJlbnQgPSBtb2NrLm1vY2sKKworICAgICAgICAgICAgbmV3ID0gTWFnaWNNb2NrKHBhcmVudD1wYXJlbnQsIG5hbWU9ZW50cnksIF9uZXdfbmFtZT1lbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbmV3X3BhcmVudD1wYXJlbnQsICoqa3dhcmdzKQorICAgICAgICAgICAgbW9jay5fbW9ja19jaGlsZHJlbltlbnRyeV0gPSBuZXcKKyAgICAgICAgICAgIHNraXBmaXJzdCA9IF9tdXN0X3NraXAoc3BlYywgZW50cnksIGlzX3R5cGUpCisgICAgICAgICAgICBfY2hlY2tfc2lnbmF0dXJlKG9yaWdpbmFsLCBuZXcsIHNraXBmaXJzdD1za2lwZmlyc3QpCisKKyAgICAgICAgIyBzbyBmdW5jdGlvbnMgY3JlYXRlZCB3aXRoIF9zZXRfc2lnbmF0dXJlIGJlY29tZSBpbnN0YW5jZSBhdHRyaWJ1dGVzLAorICAgICAgICAjICpwbHVzKiB0aGVpciB1bmRlcmx5aW5nIG1vY2sgZXhpc3RzIGluIF9tb2NrX2NoaWxkcmVuIG9mIHRoZSBwYXJlbnQKKyAgICAgICAgIyBtb2NrLiBBZGRpbmcgdG8gX21vY2tfY2hpbGRyZW4gbWF5IGJlIHVubmVjZXNzYXJ5IHdoZXJlIHdlIGFyZSBhbHNvCisgICAgICAgICMgc2V0dGluZyBhcyBhbiBpbnN0YW5jZSBhdHRyaWJ1dGU/CisgICAgICAgIGlmIGlzaW5zdGFuY2UobmV3LCBGdW5jdGlvblR5cGVzKToKKyAgICAgICAgICAgIHNldGF0dHIobW9jaywgZW50cnksIG5ldykKKworICAgIHJldHVybiBtb2NrCisKKworZGVmIF9tdXN0X3NraXAoc3BlYywgZW50cnksIGlzX3R5cGUpOgorICAgIGlmIG5vdCBpc2luc3RhbmNlKHNwZWMsIHR5cGUpOgorICAgICAgICBpZiBlbnRyeSBpbiBnZXRhdHRyKHNwZWMsICdfX2RpY3RfXycsIHt9KToKKyAgICAgICAgICAgICMgaW5zdGFuY2UgYXR0cmlidXRlIC0gc2hvdWxkbid0IHNraXAKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBzcGVjID0gc3BlYy5fX2NsYXNzX18KKworICAgIGZvciBrbGFzcyBpbiBzcGVjLl9fbXJvX186CisgICAgICAgIHJlc3VsdCA9IGtsYXNzLl9fZGljdF9fLmdldChlbnRyeSwgREVGQVVMVCkKKyAgICAgICAgaWYgcmVzdWx0IGlzIERFRkFVTFQ6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBpc2luc3RhbmNlKHJlc3VsdCwgKHN0YXRpY21ldGhvZCwgY2xhc3NtZXRob2QpKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gaXNfdHlwZQorCisgICAgIyBzaG91bGRuJ3QgZ2V0IGhlcmUgdW5sZXNzIGZ1bmN0aW9uIGlzIGEgZHluYW1pY2FsbHkgcHJvdmlkZWQgYXR0cmlidXRlCisgICAgIyBYWFhYIHVudGVzdGVkIGJlaGF2aW91cgorICAgIHJldHVybiBpc190eXBlCisKKworZGVmIF9nZXRfY2xhc3Mob2JqKToKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBvYmouX19jbGFzc19fCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAjIGl0IGlzIHBvc3NpYmxlIGZvciBvYmplY3RzIHRvIGhhdmUgbm8gX19jbGFzc19fCisgICAgICAgIHJldHVybiB0eXBlKG9iaikKKworCitjbGFzcyBfU3BlY1N0YXRlKG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3BlYywgc3BlY19zZXQ9RmFsc2UsIHBhcmVudD1Ob25lLAorICAgICAgICAgICAgICAgICBuYW1lPU5vbmUsIGlkcz1Ob25lLCBpbnN0YW5jZT1GYWxzZSk6CisgICAgICAgIHNlbGYuc3BlYyA9IHNwZWMKKyAgICAgICAgc2VsZi5pZHMgPSBpZHMKKyAgICAgICAgc2VsZi5zcGVjX3NldCA9IHNwZWNfc2V0CisgICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50CisgICAgICAgIHNlbGYuaW5zdGFuY2UgPSBpbnN0YW5jZQorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKworRnVuY3Rpb25UeXBlcyA9ICgKKyAgICAjIHB5dGhvbiBmdW5jdGlvbgorICAgIHR5cGUoY3JlYXRlX2F1dG9zcGVjKSwKKyAgICAjIGluc3RhbmNlIG1ldGhvZAorICAgIHR5cGUoQU5ZLl9fZXFfXyksCispCisKKworZmlsZV9zcGVjID0gTm9uZQorCisKK2RlZiBtb2NrX29wZW4obW9jaz1Ob25lLCByZWFkX2RhdGE9JycpOgorICAgICIiIgorICAgIEEgaGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG1vY2sgdG8gcmVwbGFjZSB0aGUgdXNlIG9mIGBvcGVuYC4gSXQgd29ya3MKKyAgICBmb3IgYG9wZW5gIGNhbGxlZCBkaXJlY3RseSBvciB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgorCisgICAgVGhlIGBtb2NrYCBhcmd1bWVudCBpcyB0aGUgbW9jayBvYmplY3QgdG8gY29uZmlndXJlLiBJZiBgTm9uZWAgKHRoZQorICAgIGRlZmF1bHQpIHRoZW4gYSBgTWFnaWNNb2NrYCB3aWxsIGJlIGNyZWF0ZWQgZm9yIHlvdSwgd2l0aCB0aGUgQVBJIGxpbWl0ZWQKKyAgICB0byBtZXRob2RzIG9yIGF0dHJpYnV0ZXMgYXZhaWxhYmxlIG9uIHN0YW5kYXJkIGZpbGUgaGFuZGxlcy4KKworICAgIGByZWFkX2RhdGFgIGlzIGEgc3RyaW5nIGZvciB0aGUgYHJlYWRgIG1ldGhvZCBvZiB0aGUgZmlsZSBoYW5kbGUgdG8gcmV0dXJuLgorICAgIFRoaXMgaXMgYW4gZW1wdHkgc3RyaW5nIGJ5IGRlZmF1bHQuCisgICAgIiIiCisgICAgZ2xvYmFsIGZpbGVfc3BlYworICAgIGlmIGZpbGVfc3BlYyBpcyBOb25lOgorICAgICAgICBpbXBvcnQgX2lvCisgICAgICAgIGZpbGVfc3BlYyA9IGxpc3Qoc2V0KGRpcihfaW8uVGV4dElPV3JhcHBlcikpLnVuaW9uKHNldChkaXIoX2lvLkJ5dGVzSU8pKSkpCisKKyAgICBpZiBtb2NrIGlzIE5vbmU6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2sobmFtZT0nb3BlbicsIHNwZWM9b3BlbikKKworICAgIGhhbmRsZSA9IE1hZ2ljTW9jayhzcGVjPWZpbGVfc3BlYykKKyAgICBoYW5kbGUud3JpdGUucmV0dXJuX3ZhbHVlID0gTm9uZQorICAgIGhhbmRsZS5fX2VudGVyX18ucmV0dXJuX3ZhbHVlID0gaGFuZGxlCisgICAgaGFuZGxlLnJlYWQucmV0dXJuX3ZhbHVlID0gcmVhZF9kYXRhCisKKyAgICBtb2NrLnJldHVybl92YWx1ZSA9IGhhbmRsZQorICAgIHJldHVybiBtb2NrCisKKworY2xhc3MgUHJvcGVydHlNb2NrKE1vY2spOgorICAgICIiIgorICAgIEEgbW9jayBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGEgcHJvcGVydHksIG9yIG90aGVyIGRlc2NyaXB0b3IsIG9uIGEgY2xhc3MuCisgICAgYFByb3BlcnR5TW9ja2AgcHJvdmlkZXMgYF9fZ2V0X19gIGFuZCBgX19zZXRfX2AgbWV0aG9kcyBzbyB5b3UgY2FuIHNwZWNpZnkKKyAgICBhIHJldHVybiB2YWx1ZSB3aGVuIGl0IGlzIGZldGNoZWQuCisKKyAgICBGZXRjaGluZyBhIGBQcm9wZXJ0eU1vY2tgIGluc3RhbmNlIGZyb20gYW4gb2JqZWN0IGNhbGxzIHRoZSBtb2NrLCB3aXRoCisgICAgbm8gYXJncy4gU2V0dGluZyBpdCBjYWxscyB0aGUgbW9jayB3aXRoIHRoZSB2YWx1ZSBiZWluZyBzZXQuCisgICAgIiIiCisgICAgZGVmIF9nZXRfY2hpbGRfbW9jayhzZWxmLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBNYWdpY01vY2soKiprd2FyZ3MpCisKKyAgICBkZWYgX19nZXRfXyhzZWxmLCBvYmosIG9ial90eXBlKToKKyAgICAgICAgcmV0dXJuIHNlbGYoKQorICAgIGRlZiBfX3NldF9fKHNlbGYsIG9iaiwgdmFsKToKKyAgICAgICAgc2VsZih2YWwpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvcmVzdWx0LnB5IGIvTGliL3VuaXR0ZXN0L3Jlc3VsdC5weQppbmRleCA0NGJmMTg2Li45N2U1NDI2IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvcmVzdWx0LnB5CisrKyBiL0xpYi91bml0dGVzdC9yZXN1bHQucHkKQEAgLTEsNiArMSw1IEBACiAiIiJUZXN0IHJlc3VsdCBvYmplY3QiIiIKIAotaW1wb3J0IG9zCiBpbXBvcnQgaW8KIGltcG9ydCBzeXMKIGltcG9ydCB0cmFjZWJhY2sKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L19faW5pdF9fLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvX19pbml0X18ucHkKaW5kZXggOTliNzMwYi4uY2RhZThhNyAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvX19pbml0X18ucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvX19pbml0X18ucHkKQEAgLTE0LDYgKzE0LDcgQEAKICAgICAgICAgICAgIF9faW1wb3J0X18obW9kbmFtZSkKICAgICAgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW21vZG5hbWVdCiAgICAgICAgICAgICBzdWl0ZS5hZGRUZXN0KGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKG1vZHVsZSkpCisgICAgc3VpdGUuYWRkVGVzdChsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ3VuaXR0ZXN0LnRlc3QudGVzdG1vY2snKSkKICAgICByZXR1cm4gc3VpdGUKIAogCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC9fdGVzdF93YXJuaW5ncy5weSBiL0xpYi91bml0dGVzdC90ZXN0L190ZXN0X3dhcm5pbmdzLnB5CmluZGV4IGQwYmUxOGQuLjVjYmZiNTMgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L190ZXN0X3dhcm5pbmdzLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L190ZXN0X3dhcm5pbmdzLnB5CkBAIC0xMCw3ICsxMCw2IEBACiBTZWUgIzEwNTM1LgogIiIiCiAKLWltcG9ydCBpbwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weQppbmRleCBhMWQyMGViLi5kNDNmZTVhIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Fzc2VydGlvbnMucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5CkBAIC0xLDYgKzEsNyBAQAogaW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCB1bml0dGVzdAorZnJvbSBpdGVydG9vbHMgaW1wb3J0IHByb2R1Y3QKIAogCiBjbGFzcyBUZXN0X0Fzc2VydGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTQ1LDYgKzE0NiwxNCBAQAogICAgICAgICBzZWxmLnRlc3RhYmxlVHJ1ZS5fZm9ybWF0TWVzc2FnZShvbmUsICdcdUZGRkQnKQogCiAgICAgZGVmIGFzc2VydE1lc3NhZ2VzKHNlbGYsIG1ldGhvZE5hbWUsIGFyZ3MsIGVycm9ycyk6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayB0aGF0IG1ldGhvZE5hbWUoKmFyZ3MpIHJhaXNlcyB0aGUgY29ycmVjdCBlcnJvciBtZXNzYWdlcy4KKyAgICAgICAgZXJyb3JzIHNob3VsZCBiZSBhIGxpc3Qgb2YgNCByZWdleCB0aGF0IG1hdGNoIHRoZSBlcnJvciB3aGVuOgorICAgICAgICAgIDEpIGxvbmdNZXNzYWdlID0gRmFsc2UgYW5kIG5vIG1zZyBwYXNzZWQ7CisgICAgICAgICAgMikgbG9uZ01lc3NhZ2UgPSBGYWxzZSBhbmQgbXNnIHBhc3NlZDsKKyAgICAgICAgICAzKSBsb25nTWVzc2FnZSA9IFRydWUgYW5kIG5vIG1zZyBwYXNzZWQ7CisgICAgICAgICAgNCkgbG9uZ01lc3NhZ2UgPSBUcnVlIGFuZCBtc2cgcGFzc2VkOworICAgICAgICAiIiIKICAgICAgICAgZGVmIGdldE1ldGhvZChpKToKICAgICAgICAgICAgIHVzZVRlc3RhYmxlRmFsc2UgID0gaSA8IDIKICAgICAgICAgICAgIGlmIHVzZVRlc3RhYmxlRmFsc2U6CkBAIC0yODQsMyArMjkzLDY3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJedW5leHBlY3RlZGx5IGlkZW50aWNhbDogTm9uZSQiLCAiXm9vcHMkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl51bmV4cGVjdGVkbHkgaWRlbnRpY2FsOiBOb25lJCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJedW5leHBlY3RlZGx5IGlkZW50aWNhbDogTm9uZSA6IG9vcHMkIl0pCisKKworICAgIGRlZiBhc3NlcnRNZXNzYWdlc0NNKHNlbGYsIG1ldGhvZE5hbWUsIGFyZ3MsIGZ1bmMsIGVycm9ycyk6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayB0aGF0IHRoZSBjb3JyZWN0IGVycm9yIG1lc3NhZ2VzIGFyZSByYWlzZWQgd2hpbGUgZXhlY3V0aW5nOgorICAgICAgICAgIHdpdGggbWV0aG9kKCphcmdzKToKKyAgICAgICAgICAgICAgZnVuYygpCisgICAgICAgICplcnJvcnMqIHNob3VsZCBiZSBhIGxpc3Qgb2YgNCByZWdleCB0aGF0IG1hdGNoIHRoZSBlcnJvciB3aGVuOgorICAgICAgICAgIDEpIGxvbmdNZXNzYWdlID0gRmFsc2UgYW5kIG5vIG1zZyBwYXNzZWQ7CisgICAgICAgICAgMikgbG9uZ01lc3NhZ2UgPSBGYWxzZSBhbmQgbXNnIHBhc3NlZDsKKyAgICAgICAgICAzKSBsb25nTWVzc2FnZSA9IFRydWUgYW5kIG5vIG1zZyBwYXNzZWQ7CisgICAgICAgICAgNCkgbG9uZ01lc3NhZ2UgPSBUcnVlIGFuZCBtc2cgcGFzc2VkOworICAgICAgICAiIiIKKyAgICAgICAgcCA9IHByb2R1Y3QoKHNlbGYudGVzdGFibGVGYWxzZSwgc2VsZi50ZXN0YWJsZVRydWUpLAorICAgICAgICAgICAgICAgICAgICAoe30sIHsibXNnIjogIm9vcHMifSkpCisgICAgICAgIGZvciAoY2xzLCBrd2FyZ3MpLCBlcnIgaW4gemlwKHAsIGVycm9ycyk6CisgICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKGNscywgbWV0aG9kTmFtZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChjbHMuZmFpbHVyZUV4Y2VwdGlvbiwgZXJyKToKKyAgICAgICAgICAgICAgICB3aXRoIG1ldGhvZCgqYXJncywgKiprd2FyZ3MpIGFzIGNtOgorICAgICAgICAgICAgICAgICAgICBmdW5jKCkKKworICAgIGRlZiB0ZXN0QXNzZXJ0UmFpc2VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzQ00oJ2Fzc2VydFJhaXNlcycsIChUeXBlRXJyb3IsKSwgbGFtYmRhOiBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydeVHlwZUVycm9yIG5vdCByYWlzZWQkJywgJ15vb3BzJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15UeXBlRXJyb3Igbm90IHJhaXNlZCQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeVHlwZUVycm9yIG5vdCByYWlzZWQgOiBvb3BzJCddKQorCisgICAgZGVmIHRlc3RBc3NlcnRSYWlzZXNSZWdleChzZWxmKToKKyAgICAgICAgIyB0ZXN0IGVycm9yIG5vdCByYWlzZWQKKyAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlc0NNKCdhc3NlcnRSYWlzZXNSZWdleCcsIChUeXBlRXJyb3IsICd1bnVzZWQgcmVnZXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYTogTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnXlR5cGVFcnJvciBub3QgcmFpc2VkJCcsICdeb29wcyQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeVHlwZUVycm9yIG5vdCByYWlzZWQkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXlR5cGVFcnJvciBub3QgcmFpc2VkIDogb29wcyQnXSkKKyAgICAgICAgIyB0ZXN0IGVycm9yIHJhaXNlZCBidXQgd2l0aCB3cm9uZyBtZXNzYWdlCisgICAgICAgIGRlZiByYWlzZV93cm9uZ19tZXNzYWdlKCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXNDTSgnYXNzZXJ0UmFpc2VzUmVnZXgnLCAoVHlwZUVycm9yLCAncmVnZXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX3dyb25nX21lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ14icmVnZXgiIGRvZXMgbm90IG1hdGNoICJmb28iJCcsICdeb29wcyQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeInJlZ2V4IiBkb2VzIG5vdCBtYXRjaCAiZm9vIiQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeInJlZ2V4IiBkb2VzIG5vdCBtYXRjaCAiZm9vIiA6IG9vcHMkJ10pCisKKyAgICBkZWYgdGVzdEFzc2VydFdhcm5zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzQ00oJ2Fzc2VydFdhcm5zJywgKFVzZXJXYXJuaW5nLCksIGxhbWJkYTogTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnXlVzZXJXYXJuaW5nIG5vdCB0cmlnZ2VyZWQkJywgJ15vb3BzJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15Vc2VyV2FybmluZyBub3QgdHJpZ2dlcmVkJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15Vc2VyV2FybmluZyBub3QgdHJpZ2dlcmVkIDogb29wcyQnXSkKKworICAgIGRlZiB0ZXN0QXNzZXJ0V2FybnNSZWdleChzZWxmKToKKyAgICAgICAgIyB0ZXN0IGVycm9yIG5vdCByYWlzZWQKKyAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlc0NNKCdhc3NlcnRXYXJuc1JlZ2V4JywgKFVzZXJXYXJuaW5nLCAndW51c2VkIHJlZ2V4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGE6IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ15Vc2VyV2FybmluZyBub3QgdHJpZ2dlcmVkJCcsICdeb29wcyQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeVXNlcldhcm5pbmcgbm90IHRyaWdnZXJlZCQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeVXNlcldhcm5pbmcgbm90IHRyaWdnZXJlZCA6IG9vcHMkJ10pCisgICAgICAgICMgdGVzdCB3YXJuaW5nIHJhaXNlZCBidXQgd2l0aCB3cm9uZyBtZXNzYWdlCisgICAgICAgIGRlZiByYWlzZV93cm9uZ19tZXNzYWdlKCk6CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdmb28nKQorICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzQ00oJ2Fzc2VydFdhcm5zUmVnZXgnLCAoVXNlcldhcm5pbmcsICdyZWdleCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Vfd3JvbmdfbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnXiJyZWdleCIgZG9lcyBub3QgbWF0Y2ggImZvbyIkJywgJ15vb3BzJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ14icmVnZXgiIGRvZXMgbm90IG1hdGNoICJmb28iJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ14icmVnZXgiIGRvZXMgbm90IG1hdGNoICJmb28iIDogb29wcyQnXSkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfY2FzZS5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfY2FzZS5weQppbmRleCBjNzRhNTM5Li5mZGIyZTc4IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Nhc2UucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9jYXNlLnB5CkBAIC00LDYgKzQsNyBAQAogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBpbXBvcnQgd2FybmluZ3MKK2ltcG9ydCB3ZWFrcmVmCiBpbXBvcnQgaW5zcGVjdAogCiBmcm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5CkBAIC0zODYsMjcgKzM4Nyw2MiBAQAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRm9vKCkuaWQoKSwgc3RyKQogCiAKLSAgICAjICJJZiByZXN1bHQgaXMgb21pdHRlZCBvciBOb25lLCBhIHRlbXBvcmFyeSByZXN1bHQgb2JqZWN0IGlzIGNyZWF0ZWQKLSAgICAjIGFuZCB1c2VkLCBidXQgaXMgbm90IG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBjYWxsZXIuIEFzIFRlc3RDYXNlIG93bnMgdGhlCisgICAgIyAiSWYgcmVzdWx0IGlzIG9taXR0ZWQgb3IgTm9uZSwgYSB0ZW1wb3JhcnkgcmVzdWx0IG9iamVjdCBpcyBjcmVhdGVkLAorICAgICMgdXNlZCwgYW5kIGlzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBjYWxsZXIuIEFzIFRlc3RDYXNlIG93bnMgdGhlCiAgICAgIyB0ZW1wb3JhcnkgcmVzdWx0IHN0YXJ0VGVzdFJ1biBhbmQgc3RvcFRlc3RSdW4gYXJlIGNhbGxlZC4KIAogICAgIGRlZiB0ZXN0X3J1bl9fdXNlc19kZWZhdWx0VGVzdFJlc3VsdChzZWxmKToKICAgICAgICAgZXZlbnRzID0gW10KKyAgICAgICAgZGVmYXVsdFJlc3VsdCA9IExvZ2dpbmdSZXN1bHQoZXZlbnRzKQogCiAgICAgICAgIGNsYXNzIEZvbyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBkZWYgdGVzdChzZWxmKToKICAgICAgICAgICAgICAgICBldmVudHMuYXBwZW5kKCd0ZXN0JykKIAogICAgICAgICAgICAgZGVmIGRlZmF1bHRUZXN0UmVzdWx0KHNlbGYpOgotICAgICAgICAgICAgICAgIHJldHVybiBMb2dnaW5nUmVzdWx0KGV2ZW50cykKKyAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdFJlc3VsdAogCiAgICAgICAgICMgTWFrZSBydW4oKSBmaW5kIGEgcmVzdWx0IG9iamVjdCBvbiBpdHMgb3duCi0gICAgICAgIEZvbygndGVzdCcpLnJ1bigpCisgICAgICAgIHJlc3VsdCA9IEZvbygndGVzdCcpLnJ1bigpCiAKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXN1bHQsIGRlZmF1bHRSZXN1bHQpCiAgICAgICAgIGV4cGVjdGVkID0gWydzdGFydFRlc3RSdW4nLCAnc3RhcnRUZXN0JywgJ3Rlc3QnLCAnYWRkU3VjY2VzcycsCiAgICAgICAgICAgICAnc3RvcFRlc3QnLCAnc3RvcFRlc3RSdW4nXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50cywgZXhwZWN0ZWQpCiAKKworICAgICMgIlRoZSByZXN1bHQgb2JqZWN0IGlzIHJldHVybmVkIHRvIHJ1bidzIGNhbGxlciIKKyAgICBkZWYgdGVzdF9ydW5fX3JldHVybnNfZ2l2ZW5fcmVzdWx0KHNlbGYpOgorCisgICAgICAgIGNsYXNzIEZvbyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICBkZWYgdGVzdChzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgcmVzdWx0ID0gdW5pdHRlc3QuVGVzdFJlc3VsdCgpCisKKyAgICAgICAgcmV0dmFsID0gRm9vKCd0ZXN0JykucnVuKHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR2YWwsIHJlc3VsdCkKKworCisgICAgIyAiVGhlIHNhbWUgZWZmZWN0IFthcyBtZXRob2QgcnVuXSBtYXkgYmUgaGFkIGJ5IHNpbXBseSBjYWxsaW5nIHRoZQorICAgICMgVGVzdENhc2UgaW5zdGFuY2UuIgorICAgIGRlZiB0ZXN0X2NhbGxfX2ludm9raW5nX2FuX2luc3RhbmNlX2RlbGVnYXRlc190b19ydW4oc2VsZik6CisgICAgICAgIHJlc3VsdEluID0gdW5pdHRlc3QuVGVzdFJlc3VsdCgpCisgICAgICAgIHJlc3VsdE91dCA9IHVuaXR0ZXN0LlRlc3RSZXN1bHQoKQorCisgICAgICAgIGNsYXNzIEZvbyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICBkZWYgdGVzdChzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIGRlZiBydW4oc2VsZiwgcmVzdWx0KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHJlc3VsdCwgcmVzdWx0SW4pCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdE91dAorCisgICAgICAgIHJldHZhbCA9IEZvbygndGVzdCcpKHJlc3VsdEluKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCByZXN1bHRPdXQpCisKKwogICAgIGRlZiB0ZXN0U2hvcnREZXNjcmlwdGlvbldpdGhvdXREb2NzdHJpbmcoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuc2hvcnREZXNjcmlwdGlvbigpKQogCkBAIC0xMTQwLDcgKzExNzYsNiBAQAogICAgICAgICAgICAgKHNlbGYuYXNzZXJ0XywgKFRydWUsKSksCiAgICAgICAgICAgICAoc2VsZi5mYWlsVW5sZXNzUmFpc2VzLCAoVHlwZUVycm9yLCBsYW1iZGEgXzogMy4xNCArICdzcGFtJykpLAogICAgICAgICAgICAgKHNlbGYuZmFpbElmLCAoRmFsc2UsKSksCi0gICAgICAgICAgICAoc2VsZi5hc3NlcnRTYW1lRWxlbWVudHMsIChbMSwgMSwgMiwgM10sIFsxLCAyLCAzXSkpLAogICAgICAgICAgICAgKHNlbGYuYXNzZXJ0RGljdENvbnRhaW5zU3Vic2V0LCAoZGljdChhPTEsIGI9MiksIGRpY3QoYT0xLCBiPTIsIGM9MykpKSwKICAgICAgICAgICAgIChzZWxmLmFzc2VydFJhaXNlc1JlZ2V4cCwgKEtleUVycm9yLCAnZm9vJywgbGFtYmRhOiB7fVsnZm9vJ10pKSwKICAgICAgICAgICAgIChzZWxmLmFzc2VydFJlZ2V4cE1hdGNoZXMsICgnYmFyJywgJ2JhcicpKSwKQEAgLTExNDksMTggKzExODQsMjAgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgogICAgICAgICAgICAgICAgIG1ldGgoKmFyZ3MpCiAKLSAgICBkZWYgdGVzdERlcHJlY2F0ZWRGYWlsTWV0aG9kcyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCB0aGF0IHRoZSBkZXByZWNhdGVkIGZhaWwqIG1ldGhvZHMgZ2V0IHJlbW92ZWQgaW4gMy4zIiIiCisgICAgIyBkaXNhYmxlIHRoaXMgdGVzdCBmb3Igbm93LiBXaGVuIHRoZSB2ZXJzaW9uIHdoZXJlIHRoZSBmYWlsKiBtZXRob2RzIHdpbGwKKyAgICAjIGJlIHJlbW92ZWQgaXMgZGVjaWRlZCwgcmUtZW5hYmxlIGl0IGFuZCB1cGRhdGUgdGhlIHZlcnNpb24KKyAgICBkZWYgX3Rlc3REZXByZWNhdGVkRmFpbE1ldGhvZHMoc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhhdCB0aGUgZGVwcmVjYXRlZCBmYWlsKiBtZXRob2RzIGdldCByZW1vdmVkIGluIDMueCIiIgogICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCAzKToKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBkZXByZWNhdGVkX25hbWVzID0gWwogICAgICAgICAgICAgJ2ZhaWxJZkVxdWFsJywgJ2ZhaWxVbmxlc3NFcXVhbCcsICdmYWlsVW5sZXNzQWxtb3N0RXF1YWwnLAogICAgICAgICAgICAgJ2ZhaWxJZkFsbW9zdEVxdWFsJywgJ2ZhaWxVbmxlc3MnLCAnZmFpbFVubGVzc1JhaXNlcycsICdmYWlsSWYnLAotICAgICAgICAgICAgJ2Fzc2VydFNhbWVFbGVtZW50cycsICdhc3NlcnREaWN0Q29udGFpbnNTdWJzZXQnLAorICAgICAgICAgICAgJ2Fzc2VydERpY3RDb250YWluc1N1YnNldCcsCiAgICAgICAgIF0KICAgICAgICAgZm9yIGRlcHJlY2F0ZWRfbmFtZSBpbiBkZXByZWNhdGVkX25hbWVzOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6Ci0gICAgICAgICAgICAgICAgZ2V0YXR0cihzZWxmLCBkZXByZWNhdGVkX25hbWUpICAjIHJlbW92ZSB0aGVzZSBpbiAzLjMKKyAgICAgICAgICAgICAgICBnZXRhdHRyKHNlbGYsIGRlcHJlY2F0ZWRfbmFtZSkgICMgcmVtb3ZlIHRoZXNlIGluIDMueAogCiAgICAgZGVmIHRlc3REZWVwY29weShzZWxmKToKICAgICAgICAgIyBJc3N1ZTogNTY2MApAQCAtMTI2OCwzICsxMzA1LDExIEBACiAgICAgICAgICAgICBrbGFzcygndGVzdF9zb21ldGhpbmcnKS5ydW4ocmVzdWx0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0LmVycm9ycyksIDEpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC50ZXN0c1J1biwgMSkKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0Tm9DeWNsZXMoc2VsZik6CisgICAgICAgIGNhc2UgPSB1bml0dGVzdC5UZXN0Q2FzZSgpCisgICAgICAgIHdyID0gd2Vha3JlZi5yZWYoY2FzZSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmRpc2FibGVfZ2MoKToKKyAgICAgICAgICAgIGRlbCBjYXNlCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHdyKCkpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2xvYWRlci5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CmluZGV4IGY3ZTMxYTUuLmQxYjllZjUgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CkBAIC0yMzksNyArMjM5LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdzZGFzZmFzZmFzZGYnKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAiTm8gbW9kdWxlIG5hbWVkIHNkYXNmYXNmYXNkZiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIk5vIG1vZHVsZSBuYW1lZCAnc2Rhc2Zhc2Zhc2RmJyIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIlRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUgZmFpbGVkIHRvIHJhaXNlIEltcG9ydEVycm9yIikKIApAQCAtNjE5LDcgKzYxOSw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWydzZGFzZmFzZmFzZGYnXSkKICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIk5vIG1vZHVsZSBuYW1lZCBzZGFzZmFzZmFzZGYiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICJObyBtb2R1bGUgbmFtZWQgJ3NkYXNmYXNmYXNkZiciKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mYWlsKCJUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyBmYWlsZWQgdG8gcmFpc2UgSW1wb3J0RXJyb3IiKQogCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Byb2dyYW0ucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Byb2dyYW0ucHkKaW5kZXggZDVkMGY1YS4uOTc5NDg2OCAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9wcm9ncmFtLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcHJvZ3JhbS5weQpAQCAtMTMxLDIzICsxMzEsNiBAQAogICAgICAgICBGYWtlUnVubmVyLnRlc3QgPSBOb25lCiAgICAgICAgIEZha2VSdW5uZXIucmFpc2VFcnJvciA9IEZhbHNlCiAKLSAgICBkZWYgdGVzdEhlbHBBbmRVbmtub3duKHNlbGYpOgotICAgICAgICBwcm9ncmFtID0gc2VsZi5wcm9ncmFtCi0gICAgICAgIGRlZiB1c2FnZUV4aXQobXNnPU5vbmUpOgotICAgICAgICAgICAgcHJvZ3JhbS5tc2cgPSBtc2cKLSAgICAgICAgICAgIHByb2dyYW0uZXhpdCA9IFRydWUKLSAgICAgICAgcHJvZ3JhbS51c2FnZUV4aXQgPSB1c2FnZUV4aXQKLQotICAgICAgICBmb3Igb3B0IGluICctaCcsICctSCcsICctLWhlbHAnOgotICAgICAgICAgICAgcHJvZ3JhbS5leGl0ID0gRmFsc2UKLSAgICAgICAgICAgIHByb2dyYW0ucGFyc2VBcmdzKFtOb25lLCBvcHRdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb2dyYW0uZXhpdCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHByb2dyYW0ubXNnKQotCi0gICAgICAgIHByb2dyYW0ucGFyc2VBcmdzKFtOb25lLCAnLSQnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb2dyYW0uZXhpdCkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocHJvZ3JhbS5tc2cpCi0KICAgICBkZWYgdGVzdFZlcmJvc2l0eShzZWxmKToKICAgICAgICAgcHJvZ3JhbSA9IHNlbGYucHJvZ3JhbQogCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay9fX2luaXRfXy5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3ZDdhZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay9fX2luaXRfXy5weQpAQCAtMCwwICsxLDE3IEBACitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorCisKK2hlcmUgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCitsb2FkZXIgPSB1bml0dGVzdC5kZWZhdWx0VGVzdExvYWRlcgorCitkZWYgbG9hZF90ZXN0cygqYXJncyk6CisgICAgc3VpdGUgPSB1bml0dGVzdC5UZXN0U3VpdGUoKQorICAgIGZvciBmbiBpbiBvcy5saXN0ZGlyKGhlcmUpOgorICAgICAgICBpZiBmbi5zdGFydHN3aXRoKCJ0ZXN0IikgYW5kIGZuLmVuZHN3aXRoKCIucHkiKToKKyAgICAgICAgICAgIG1vZG5hbWUgPSAidW5pdHRlc3QudGVzdC50ZXN0bW9jay4iICsgZm5bOi0zXQorICAgICAgICAgICAgX19pbXBvcnRfXyhtb2RuYW1lKQorICAgICAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbW9kbmFtZV0KKyAgICAgICAgICAgIHN1aXRlLmFkZFRlc3QobG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobW9kdWxlKSkKKyAgICByZXR1cm4gc3VpdGUKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3N1cHBvcnQucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay9zdXBwb3J0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0NzM4NzkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay9zdXBwb3J0LnB5CkBAIC0wLDAgKzEsMjMgQEAKK2ltcG9ydCBzeXMKKworZGVmIGlzX2luc3RhbmNlKG9iaiwga2xhc3MpOgorICAgICIiIlZlcnNpb24gb2YgaXNfaW5zdGFuY2UgdGhhdCBkb2Vzbid0IGFjY2VzcyBfX2NsYXNzX18iIiIKKyAgICByZXR1cm4gaXNzdWJjbGFzcyh0eXBlKG9iaiksIGtsYXNzKQorCisKK2NsYXNzIFNvbWVDbGFzcyhvYmplY3QpOgorICAgIGNsYXNzX2F0dHJpYnV0ZSA9IE5vbmUKKworICAgIGRlZiB3aWJibGUoc2VsZik6CisgICAgICAgIHBhc3MKKworCitjbGFzcyBYKG9iamVjdCk6CisgICAgcGFzcworCisKK2RlZiBleGFtaW5lX3dhcm5pbmdzKGZ1bmMpOgorICAgIGRlZiB3cmFwcGVyKCk6CisgICAgICAgIHdpdGggY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHdzOgorICAgICAgICAgICAgZnVuYyh3cykKKyAgICByZXR1cm4gd3JhcHBlcgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdGNhbGxhYmxlLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdGNhbGxhYmxlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiMmRkMDAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0Y2FsbGFibGUucHkKQEAgLTAsMCArMSwxNDcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA3LTIwMTIgTWljaGFlbCBGb29yZCAmIHRoZSBtb2NrIHRlYW0KKyMgRS1tYWlsOiBmdXp6eW1hbiBBVCB2b2lkc3BhY2UgRE9UIG9yZyBET1QgdWsKKyMgaHR0cDovL3d3dy52b2lkc3BhY2Uub3JnLnVrL3B5dGhvbi9tb2NrLworCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdW5pdHRlc3QudGVzdC50ZXN0bW9jay5zdXBwb3J0IGltcG9ydCBpc19pbnN0YW5jZSwgWCwgU29tZUNsYXNzCisKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgKAorICAgIE1vY2ssIE1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNYWdpY01vY2ssCisgICAgTm9uQ2FsbGFibGVNb2NrLCBwYXRjaCwgY3JlYXRlX2F1dG9zcGVjLAorICAgIENhbGxhYmxlTWl4aW4KKykKKworCisKK2NsYXNzIFRlc3RDYWxsYWJsZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgYXNzZXJ0Tm90Q2FsbGFibGUoc2VsZiwgbW9jayk6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShtb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jaykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNfaW5zdGFuY2UobW9jaywgQ2FsbGFibGVNaXhpbikpCisKKworICAgIGRlZiB0ZXN0X25vbl9jYWxsYWJsZShzZWxmKToKKyAgICAgICAgZm9yIG1vY2sgaW4gTm9uQ2FsbGFibGVNYWdpY01vY2soKSwgTm9uQ2FsbGFibGVNb2NrKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9jaywgJ19fY2FsbF9fJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG1vY2suX19jbGFzc19fLl9fbmFtZV9fLCByZXByKG1vY2spKQorCisKKyAgICBkZWYgdGVzdF9oZWlyYXJjaHkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE1hZ2ljTW9jaywgTW9jaykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE5vbkNhbGxhYmxlTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1vY2spKQorCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBvbmUgPSBOb25DYWxsYWJsZU1vY2soKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh0eXBlKG9uZS5vbmUpLCBNb2NrKSkKKworICAgICAgICB0d28gPSBOb25DYWxsYWJsZU1hZ2ljTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUodHdvLnR3byksIE1hZ2ljTW9jaykpCisKKworICAgIGRlZiB0ZXN0X3N1YmNsYXNzZXMoc2VsZik6CisgICAgICAgIGNsYXNzIE1vY2tTdWIoTW9jayk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgb25lID0gTW9ja1N1YigpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUob25lLm9uZSksIE1vY2tTdWIpKQorCisgICAgICAgIGNsYXNzIE1hZ2ljU3ViKE1hZ2ljTW9jayk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgdHdvID0gTWFnaWNTdWIoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh0eXBlKHR3by50d28pLCBNYWdpY1N1YikpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3NwZWMoc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBwYXRjaCgnJXMuWCcgJSBfX25hbWVfXywgc3BlYz1UcnVlKQorICAgICAgICBtb2NrID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwYXRjaGVyLnN0b3ApCisKKyAgICAgICAgaW5zdGFuY2UgPSBtb2NrKCkKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RDYWxsYWJsZShpbnN0YW5jZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnN0YW5jZSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc3BlY19zZXQoc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBwYXRjaCgnJXMuWCcgJSBfX25hbWVfXywgc3BlY19zZXQ9VHJ1ZSkKKyAgICAgICAgbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocGF0Y2hlci5zdG9wKQorCisgICAgICAgIGluc3RhbmNlID0gbW9jaygpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q2FsbGFibGUoaW5zdGFuY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zdGFuY2UpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3NwZWNfaW5zdGFuY2Uoc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBwYXRjaCgnJXMuWCcgJSBfX25hbWVfXywgc3BlYz1YKCkpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHBhdGNoZXIuc3RvcCkKKworICAgICAgICBzZWxmLmFzc2VydE5vdENhbGxhYmxlKG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc3BlY19zZXRfaW5zdGFuY2Uoc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBwYXRjaCgnJXMuWCcgJSBfX25hbWVfXywgc3BlY19zZXQ9WCgpKQorICAgICAgICBtb2NrID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwYXRjaGVyLnN0b3ApCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RDYWxsYWJsZShtb2NrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3NwZWNfY2FsbGFibGVfY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIENhbGxhYmxlWChYKToKKyAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgU3ViKENhbGxhYmxlWCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgTXVsdGkoU29tZUNsYXNzLCBTdWIpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGZvciBhcmcgaW4gJ3NwZWMnLCAnc3BlY19zZXQnOgorICAgICAgICAgICAgZm9yIEtsYXNzIGluIENhbGxhYmxlWCwgU3ViLCBNdWx0aToKKyAgICAgICAgICAgICAgICB3aXRoIHBhdGNoKCclcy5YJyAlIF9fbmFtZV9fLCAqKnthcmc6IEtsYXNzfSkgYXMgbW9jazoKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtb2NrKCkKKyAgICAgICAgICAgICAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKGluc3RhbmNlLCBNYWdpY01vY2spKQorICAgICAgICAgICAgICAgICAgICAjIGluaGVyaXRlZCBzcGVjCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBpbnN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb2JhcmJheicpCisKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gaW5zdGFuY2UoKQorICAgICAgICAgICAgICAgICAgICAjIGluc3RhbmNlIGlzIGNhbGxhYmxlLCByZXN1bHQgaGFzIG5vIHNwZWMKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCgzLCAyLCAxKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMywgMiwgMSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZvbygzLCAyLCAxKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuZm9vLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDMsIDIsIDEpCisKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9hdXRvcHNlYyhzZWxmKToKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhYKQorICAgICAgICBpbnN0YW5jZSA9IG1vY2soKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlKQorCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoWCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9hdXRvc3BlY19pbnN0YW5jZShzZWxmKToKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhTb21lQ2xhc3MsIGluc3RhbmNlPVRydWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorICAgICAgICBtb2NrLndpYmJsZSgpCisgICAgICAgIG1vY2sud2liYmxlLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2sud2liYmxlLCAnc29tZScsICAnYXJncycpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0aGVscGVycy5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RoZWxwZXJzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiZmIyOTMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0aGVscGVycy5weQpAQCAtMCwwICsxLDg4OSBAQAoraW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgKAorICAgIGNhbGwsIF9DYWxsLCBjcmVhdGVfYXV0b3NwZWMsIE1hZ2ljTW9jaywKKyAgICBNb2NrLCBBTlksIF9DYWxsTGlzdCwgcGF0Y2gsIFByb3BlcnR5TW9jaworKQorCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorCitjbGFzcyBTb21lQ2xhc3Mob2JqZWN0KToKKyAgICBkZWYgb25lKHNlbGYsIGEsIGIpOgorICAgICAgICBwYXNzCisgICAgZGVmIHR3byhzZWxmKToKKyAgICAgICAgcGFzcworICAgIGRlZiB0aHJlZShzZWxmLCBhPU5vbmUpOgorICAgICAgICBwYXNzCisKKworCitjbGFzcyBBbnlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2FueShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChBTlksIG9iamVjdCgpKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jayhBTlkpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKEFOWSkKKworICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soZm9vPUFOWSkKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoZm9vPUFOWSkKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihBTlkpLCAnPEFOWT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihBTlkpLCAnPEFOWT4nKQorCisKKyAgICBkZWYgdGVzdF9hbnlfYW5kX2RhdGV0aW1lKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soZGF0ZXRpbWUubm93KCksIGZvbz1kYXRldGltZS5ub3coKSkKKworICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aChBTlksIGZvbz1BTlkpCisKKworICAgIGRlZiB0ZXN0X2FueV9tb2NrX2NhbGxzX2NvbXBhcmlzb25fb3JkZXIoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgZCA9IGRhdGV0aW1lLm5vdygpCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIGZvciBkIGluIGRhdGV0aW1lLm5vdygpLCBGb28oKToKKyAgICAgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisKKyAgICAgICAgICAgIG1vY2soZCwgZm9vPWQsIGJhcj1kKQorICAgICAgICAgICAgbW9jay5tZXRob2QoZCwgemluZ2E9ZCwgYWxwaGE9ZCkKKyAgICAgICAgICAgIG1vY2soKS5tZXRob2QoYTE9ZCwgejk5PWQpCisKKyAgICAgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgICAgIGNhbGwoQU5ZLCBmb289QU5ZLCBiYXI9QU5ZKSwKKyAgICAgICAgICAgICAgICBjYWxsLm1ldGhvZChBTlksIHppbmdhPUFOWSwgYWxwaGE9QU5ZKSwKKyAgICAgICAgICAgICAgICBjYWxsKCksIGNhbGwoKS5tZXRob2QoYTE9QU5ZLCB6OTk9QU5ZKQorICAgICAgICAgICAgXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgbW9jay5tb2NrX2NhbGxzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIGV4cGVjdGVkKQorCisKKworY2xhc3MgQ2FsbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfY2FsbF93aXRoX2NhbGwoc2VsZik6CisgICAgICAgIGthbGwgPSBfQ2FsbCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJycsKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCgpLCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCh7fSwpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJycsICgpKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCB7fSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnJywgKCksIHt9KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCdmb28nLCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnYmFyJywgKCkpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJ2JheicsIHt9KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCdzcGFtJywgKCksIHt9KSkpCisKKyAgICAgICAga2FsbCA9IF9DYWxsKCgoMSwgMiwgMyksKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoKDEsIDIsIDMpLCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnJywgKDEsIDIsIDMpKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCgxLCAyLCAzKSwge30pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJycsICgxLCAyLCAzKSwge30pKSkKKworICAgICAgICBrYWxsID0gX0NhbGwoKCgxLCAyLCA0KSwpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGthbGwsIF9DYWxsKCgnJywgKDEsIDIsIDMpKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCAoMSwgMiwgMyksIHt9KSkpCisKKyAgICAgICAga2FsbCA9IF9DYWxsKCgnZm9vJywgKDEsIDIsIDQpLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCAoMSwgMiwgNCkpKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChrYWxsLCBfQ2FsbCgoJycsICgxLCAyLCA0KSwge30pKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChrYWxsLCBfQ2FsbCgoJ2JhcicsICgxLCAyLCA0KSkpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGthbGwsIF9DYWxsKCgnYmFyJywgKDEsIDIsIDQpLCB7fSkpKQorCisgICAgICAgIGthbGwgPSBfQ2FsbCgoeydhJzogM30sKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJycsICgpLCB7J2EnOiAzfSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnJywgeydhJzogM30pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoKCksIHsnYSc6IDN9KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKHsnYSc6IDN9LCkpKQorCisKKyAgICBkZWYgdGVzdF9lbXB0eV9fQ2FsbChzZWxmKToKKyAgICAgICAgYXJncyA9IF9DYWxsKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgoKSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywgKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywoKSwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICh7fSwpKQorCisKKyAgICBkZWYgdGVzdF9uYW1lZF9lbXB0eV9jYWxsKHNlbGYpOgorICAgICAgICBhcmdzID0gX0NhbGwoKCdmb28nLCAoKSwge30pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCAoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCgpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCB7fSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhcmdzLCAoKCksKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhcmdzLCAoKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhcmdzLCAoe30sKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhcmdzLCAoJ2JhcicsKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhcmdzLCAoJ2JhcicsICgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhcmdzLCAoJ2JhcicsIHt9KSkKKworCisgICAgZGVmIHRlc3RfY2FsbF93aXRoX2FyZ3Moc2VsZik6CisgICAgICAgIGFyZ3MgPSBfQ2FsbCgoKDEsIDIsIDMpLCB7fSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoKDEsIDIsIDMpLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCAoMSwgMiwgMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywgKDEsIDIsIDMpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCgxLCAyLCAzKSwge30pKQorCisKKyAgICBkZWYgdGVzdF9uYW1lZF9jYWxsX3dpdGhfYXJncyhzZWxmKToKKyAgICAgICAgYXJncyA9IF9DYWxsKCgnZm9vJywgKDEsIDIsIDMpLCB7fSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsICgxLCAyLCAzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCAoMSwgMiwgMyksIHt9KSkKKworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgoMSwgMiwgMyksKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhcmdzLCAoKDEsIDIsIDMpLCB7fSkpCisKKworICAgIGRlZiB0ZXN0X2NhbGxfd2l0aF9rd2FyZ3Moc2VsZik6CisgICAgICAgIGFyZ3MgPSBfQ2FsbCgoKCksIGRpY3QoYT0zLCBiPTQpKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIChkaWN0KGE9MywgYj00KSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywgZGljdChhPTMsIGI9NCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywgKCksIGRpY3QoYT0zLCBiPTQpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoKCksIGRpY3QoYT0zLCBiPTQpKSkKKworCisgICAgZGVmIHRlc3RfbmFtZWRfY2FsbF93aXRoX2t3YXJncyhzZWxmKToKKyAgICAgICAgYXJncyA9IF9DYWxsKCgnZm9vJywgKCksIGRpY3QoYT0zLCBiPTQpKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywgZGljdChhPTMsIGI9NCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywgKCksIGRpY3QoYT0zLCBiPTQpKSkKKworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsIChkaWN0KGE9MywgYj00KSwpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgoKSwgZGljdChhPTMsIGI9NCkpKQorCisKKyAgICBkZWYgdGVzdF9jYWxsX3dpdGhfYXJnc19jYWxsX2VtcHR5X25hbWUoc2VsZik6CisgICAgICAgIGFyZ3MgPSBfQ2FsbCgoKDEsIDIsIDMpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgY2FsbCgxLCAyLCAzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsKDEsIDIsIDMpLCBhcmdzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY2FsbCgxLCAyLCAzKSBpbiBbYXJnc10pCisKKworICAgIGRlZiB0ZXN0X2NhbGxfbmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoX0NhbGwoKCgxLCAyLCAzKSwpKSwgY2FsbCgxLCAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShfQ2FsbCgoKDEsIDIsIDMpLCkpICE9IGNhbGwoMSwgMiwgMykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShfQ2FsbCgoKDEsIDIpLCB7fSkpICE9IGNhbGwoMSwgMiwgMykpCisKKworICAgIGRlZiB0ZXN0X2NhbGxfbm9uX3R1cGxlcyhzZWxmKToKKyAgICAgICAga2FsbCA9IF9DYWxsKCgoMSwgMiwgMyksKSkKKyAgICAgICAgZm9yIHZhbHVlIGluIDEsIE5vbmUsIHNlbGYsIGludDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoa2FsbCwgdmFsdWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGthbGwgPT0gdmFsdWUpCisKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihfQ2FsbCgpKSwgJ2NhbGwoKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihfQ2FsbCgoJ2ZvbycsKSkpLCAnY2FsbC5mb28oKScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKF9DYWxsKCgoMSwgMiwgMyksIHsnYSc6ICdiJ30pKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGwoMSwgMiwgMywgYT0nYicpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKF9DYWxsKCgnYmFyJywgKDEsIDIsIDMpLCB7J2EnOiAnYid9KSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsLmJhcigxLCAyLCAzLCBhPSdiJykiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjYWxsKSwgJ2NhbGwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjYWxsKSwgJ2NhbGwnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjYWxsKCkpLCAnY2FsbCgpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwoMSkpLCAnY2FsbCgxKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjYWxsKHp6PSd0aGluZycpKSwgImNhbGwoeno9J3RoaW5nJykiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjYWxsKCkuZm9vKSwgJ2NhbGwoKS5mb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY2FsbCgxKS5mb28uYmFyKGE9MykuYmluZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2NhbGwoKS5mb28uYmFyKCkuYmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICByZXByKGNhbGwoKS5mb28oMSwgMiwgYT0zKSksCisgICAgICAgICAgICAiY2FsbCgpLmZvbygxLCAyLCBhPTMpIgorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjYWxsKCkoKSksICJjYWxsKCkoKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjYWxsKDEpKDIpKSwgImNhbGwoKSgyKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICByZXByKGNhbGwoKSgpLmJhcigpLmJhei5iZWVwKDEpKSwKKyAgICAgICAgICAgICJjYWxsKCkoKS5iYXIoKS5iYXouYmVlcCgxKSIKKyAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9jYWxsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGwoKSwgKCcnLCAoKSwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGwoJ2ZvbycsICdiYXInLCBvbmU9MywgdHdvPTQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgnJywgKCdmb28nLCAnYmFyJyksIHsnb25lJzogMywgJ3R3byc6IDR9KSkKKworICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soMSwgMiwgMykKKyAgICAgICAgbW9jayhhPTMsIGI9NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJnc19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFtjYWxsKDEsIDIsIDMpLCBjYWxsKGE9MywgYj02KV0pCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVfY2FsbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsLmZvbygxKSwgKCdmb28nLCAoMSwpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbC5iYXIuYmF6KGZpc2g9J2VnZ3MnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoJ2Jhci5iYXonLCAoKSwgeydmaXNoJzogJ2VnZ3MnfSkpCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLmZvbygxLCAyICwzKQorICAgICAgICBtb2NrLmJhci5iYXooYT0zLCBiPTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgW2NhbGwuZm9vKDEsIDIsIDMpLCBjYWxsLmJhci5iYXooYT0zLCBiPTYpXSkKKworCisgICAgZGVmIHRlc3RfZXh0ZW5kZWRfY2FsbChzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gY2FsbCgxKS5mb28oMikuYmFyKDMsIGE9NCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsICgnKCkuZm9vKCkuYmFyJywgKDMsKSwgZGljdChhPTQpKSkKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgbW9jaygxLCAyLCBhPTMsIGI9NCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJncywgY2FsbCgxLCAyLCBhPTMsIGI9NCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobW9jay5jYWxsX2FyZ3MsIGNhbGwoMSwgMiwgMykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJnc19saXN0LCBbY2FsbCgxLCAyLCBhPTMsIGI9NCldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgW2NhbGwoMSwgMiwgYT0zLCBiPTQpXSkKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgbW9jay5mb28oMSkuYmFyKCkoKS5iYXouYmVlcChhPTYpCisKKyAgICAgICAgbGFzdF9jYWxsID0gY2FsbC5mb28oMSkuYmFyKCkoKS5iYXouYmVlcChhPTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzWy0xXSwgbGFzdF9jYWxsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgbGFzdF9jYWxsLmNhbGxfbGlzdCgpKQorCisKKyAgICBkZWYgdGVzdF9jYWxsX2xpc3Qoc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbCgxKS5jYWxsX2xpc3QoKSwgbW9jay5tb2NrX2NhbGxzKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrKDEpLm1ldGhvZCgyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGwoMSkubWV0aG9kKDIpLmNhbGxfbGlzdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2subW9ja19jYWxscykKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgbW9jaygxKS5tZXRob2QoMikoMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsKDEpLm1ldGhvZCgyKSgzKS5jYWxsX2xpc3QoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLm1vY2tfY2FsbHMpCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIGludChtb2NrKDEpLm1ldGhvZCgyKSgzKS5mb28uYmFyLmJheig0KSg1KSkKKyAgICAgICAga2FsbCA9IGNhbGwoMSkubWV0aG9kKDIpKDMpLmZvby5iYXIuYmF6KDQpKDUpLl9faW50X18oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwuY2FsbF9saXN0KCksIG1vY2subW9ja19jYWxscykKKworCisgICAgZGVmIHRlc3RfY2FsbF9hbnkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbCwgQU5ZKQorCisgICAgICAgIG0gPSBNYWdpY01vY2soKQorICAgICAgICBpbnQobSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1vY2tfY2FsbHMsIFtBTlldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtBTlldLCBtLm1vY2tfY2FsbHMpCisKKworICAgIGRlZiB0ZXN0X3R3b19hcmdzX2NhbGwoc2VsZik6CisgICAgICAgIGFyZ3MgPSBfQ2FsbCgoKDEsIDIpLCB7J2EnOiAzfSksIHR3bz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhcmdzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzWzBdLCAoMSwgMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJnc1sxXSwgeydhJzogM30pCisKKyAgICAgICAgb3RoZXJfYXJncyA9IF9DYWxsKCgoMSwgMiksIHsnYSc6IDN9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBvdGhlcl9hcmdzKQorCisKK2NsYXNzIFNwZWNTaWduYXR1cmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBfY2hlY2tfc29tZWNsYXNzX21vY2soc2VsZiwgbW9jayk6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAnZm9vJykKKyAgICAgICAgbW9jay5vbmUoMSwgMikKKyAgICAgICAgbW9jay5vbmUuYXNzZXJ0X2NhbGxlZF93aXRoKDEsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLm9uZS5hc3NlcnRfY2FsbGVkX3dpdGgsIDMsIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay5vbmUsIDEpCisKKyAgICAgICAgbW9jay50d28oKQorICAgICAgICBtb2NrLnR3by5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay50d28uYXNzZXJ0X2NhbGxlZF93aXRoLCAzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2sudHdvLCAxKQorCisgICAgICAgIG1vY2sudGhyZWUoKQorICAgICAgICBtb2NrLnRocmVlLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLnRocmVlLmFzc2VydF9jYWxsZWRfd2l0aCwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLnRocmVlLCAzLCAyKQorCisgICAgICAgIG1vY2sudGhyZWUoMSkKKyAgICAgICAgbW9jay50aHJlZS5hc3NlcnRfY2FsbGVkX3dpdGgoMSkKKworICAgICAgICBtb2NrLnRocmVlKGE9MSkKKyAgICAgICAgbW9jay50aHJlZS5hc3NlcnRfY2FsbGVkX3dpdGgoYT0xKQorCisKKyAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgZm9yIHNwZWMgaW4gKFNvbWVDbGFzcywgU29tZUNsYXNzKCkpOgorICAgICAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhzcGVjKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfc29tZWNsYXNzX21vY2sobW9jaykKKworCisgICAgZGVmIHRlc3RfY3JlYXRlX2F1dG9zcGVjX3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhmLCByZXR1cm5fdmFsdWU9J2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLCAnZm9vJykKKworICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKEZvbywgcmV0dXJuX3ZhbHVlPSdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKSwgJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X2F1dG9zcGVjX3Jlc2V0X21vY2soc2VsZik6CisgICAgICAgIG0gPSBjcmVhdGVfYXV0b3NwZWMoaW50KQorICAgICAgICBpbnQobSkKKyAgICAgICAgbS5yZXNldF9tb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9faW50X18uY2FsbF9jb3VudCwgMCkKKworCisgICAgZGVmIHRlc3RfbW9ja2luZ191bmJvdW5kX21ldGhvZHMoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIGZvbyhzZWxmLCBmb28pOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcCA9IHBhdGNoLm9iamVjdChGb28sICdmb28nKQorICAgICAgICBtb2NrX2ZvbyA9IHAuc3RhcnQoKQorICAgICAgICBGb28oKS5mb28oMSkKKworICAgICAgICBtb2NrX2Zvby5hc3NlcnRfY2FsbGVkX3dpdGgoMSkKKworCisgICAgZGVmIHRlc3RfY3JlYXRlX2F1dG9zcGVjX3VuYm91bmRfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgIyBzZWUgbW9jayBpc3N1ZSAxMjgKKyAgICAgICAgIyB0aGlzIGlzIGV4cGVjdGVkIHRvIGZhaWwgdW50aWwgdGhlIGlzc3VlIGlzIGZpeGVkCisgICAgICAgIHJldHVybgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGtsYXNzID0gY3JlYXRlX2F1dG9zcGVjKEZvbykKKyAgICAgICAgaW5zdGFuY2UgPSBrbGFzcygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zdGFuY2UuZm9vLCAxKQorCisgICAgICAgICMgTm90ZTogbm8gdHlwZSBjaGVja2luZyBvbiB0aGUgInNlbGYiIHBhcmFtZXRlcgorICAgICAgICBrbGFzcy5mb28oMSkKKyAgICAgICAga2xhc3MuZm9vLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGtsYXNzLmZvbykKKworCisgICAgZGVmIHRlc3RfY3JlYXRlX2F1dG9zcGVjX2tleXdvcmRfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGEgPSAzCisgICAgICAgIG0gPSBjcmVhdGVfYXV0b3NwZWMoRm9vLCBhPSczJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmEsICczJykKKworCisgICAgZGVmIHRlc3RfY3JlYXRlX2F1dG9zcGVjX2tleXdvcmRfb25seV9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIGRlZiBmb28oYSwgKiwgYj1Ob25lKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtID0gY3JlYXRlX2F1dG9zcGVjKGZvbykKKyAgICAgICAgbSgxKQorICAgICAgICBtLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0sIDEsIDIpCisKKyAgICAgICAgbSgyLCBiPTMpCisgICAgICAgIG0uYXNzZXJ0X2NhbGxlZF93aXRoKDIsIGI9MykKKworCisgICAgZGVmIHRlc3RfZnVuY3Rpb25fYXNfaW5zdGFuY2VfYXR0cmlidXRlKHNlbGYpOgorICAgICAgICBvYmogPSBTb21lQ2xhc3MoKQorICAgICAgICBkZWYgZihhKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgb2JqLmYgPSBmCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhvYmopCisgICAgICAgIG1vY2suZignYmluZycpCisgICAgICAgIG1vY2suZi5hc3NlcnRfY2FsbGVkX3dpdGgoJ2JpbmcnKQorCisKKyAgICBkZWYgdGVzdF9zcGVjX2FzX2xpc3Qoc2VsZik6CisgICAgICAgICMgYmVjYXVzZSBzcGVjIGFzIGEgbGlzdCBvZiBzdHJpbmdzIGluIHRoZSBtb2NrIGNvbnN0cnVjdG9yIG1lYW5zCisgICAgICAgICMgc29tZXRoaW5nIHZlcnkgZGlmZmVyZW50IHdlIHRyZWF0IGEgbGlzdCBpbnN0YW5jZSBhcyB0aGUgdHlwZS4KKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhbXSkKKyAgICAgICAgbW9jay5hcHBlbmQoJ2ZvbycpCisgICAgICAgIG1vY2suYXBwZW5kLmFzc2VydF9jYWxsZWRfd2l0aCgnZm9vJykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jaywgJ2ZvbycpCisKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBmb28gPSBbXQorCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorICAgICAgICBtb2NrLmZvby5hcHBlbmQoMykKKyAgICAgICAgbW9jay5mb28uYXBwZW5kLmFzc2VydF9jYWxsZWRfd2l0aCgzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jay5mb28sICdmb28nKQorCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBjbGFzcyBTdWIoU29tZUNsYXNzKToKKyAgICAgICAgICAgIGF0dHIgPSBTb21lQ2xhc3MoKQorCisgICAgICAgIHN1Yl9tb2NrID0gY3JlYXRlX2F1dG9zcGVjKFN1YikKKworICAgICAgICBmb3IgbW9jayBpbiAoc3ViX21vY2ssIHN1Yl9tb2NrLmF0dHIpOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfc29tZWNsYXNzX21vY2sobW9jaykKKworCisgICAgZGVmIHRlc3RfYnVpbHRpbl9mdW5jdGlvbnNfdHlwZXMoc2VsZik6CisgICAgICAgICMgd2UgY291bGQgcmVwbGFjZSBidWlsdGluIGZ1bmN0aW9ucyAvIG1ldGhvZHMgd2l0aCBhIGZ1bmN0aW9uCisgICAgICAgICMgd2l0aCAqYXJncyAvICoqa3dhcmdzIHNpZ25hdHVyZS4gVXNpbmcgdGhlIGJ1aWx0aW4gbWV0aG9kIHR5cGUKKyAgICAgICAgIyBhcyBhIHNwZWMgc2VlbXMgdG8gd29yayBmYWlybHkgd2VsbCB0aG91Z2guCisgICAgICAgIGNsYXNzIEJ1aWx0aW5TdWJjbGFzcyhsaXN0KToKKyAgICAgICAgICAgIGRlZiBiYXIoc2VsZiwgYXJnKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBzb3J0ZWQgPSBzb3J0ZWQKKyAgICAgICAgICAgIGF0dHIgPSB7fQorCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoQnVpbHRpblN1YmNsYXNzKQorICAgICAgICBtb2NrLmFwcGVuZCgzKQorICAgICAgICBtb2NrLmFwcGVuZC5hc3NlcnRfY2FsbGVkX3dpdGgoMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2suYXBwZW5kLCAnZm9vJykKKworICAgICAgICBtb2NrLmJhcignZm9vJykKKyAgICAgICAgbW9jay5iYXIuYXNzZXJ0X2NhbGxlZF93aXRoKCdmb28nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2suYmFyLCAnZm9vJywgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLmJhciwgJ2ZvbycpCisKKyAgICAgICAgbW9jay5zb3J0ZWQoWzEsIDJdKQorICAgICAgICBtb2NrLnNvcnRlZC5hc3NlcnRfY2FsbGVkX3dpdGgoWzEsIDJdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jay5zb3J0ZWQsICdmb28nKQorCisgICAgICAgIG1vY2suYXR0ci5wb3AoMykKKyAgICAgICAgbW9jay5hdHRyLnBvcC5hc3NlcnRfY2FsbGVkX3dpdGgoMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2suYXR0ciwgJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X21ldGhvZF9jYWxscyhzZWxmKToKKyAgICAgICAgY2xhc3MgU3ViKFNvbWVDbGFzcyk6CisgICAgICAgICAgICBhdHRyID0gU29tZUNsYXNzKCkKKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKFN1YikKKyAgICAgICAgbW9jay5vbmUoMSwgMikKKyAgICAgICAgbW9jay50d28oKQorICAgICAgICBtb2NrLnRocmVlKDMpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBbY2FsbC5vbmUoMSwgMiksIGNhbGwudHdvKCksIGNhbGwudGhyZWUoMyldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIGV4cGVjdGVkKQorCisgICAgICAgIG1vY2suYXR0ci5vbmUoMSwgMikKKyAgICAgICAgbW9jay5hdHRyLnR3bygpCisgICAgICAgIG1vY2suYXR0ci50aHJlZSgzKQorCisgICAgICAgIGV4cGVjdGVkLmV4dGVuZCgKKyAgICAgICAgICAgIFtjYWxsLmF0dHIub25lKDEsIDIpLCBjYWxsLmF0dHIudHdvKCksIGNhbGwuYXR0ci50aHJlZSgzKV0KKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBleHBlY3RlZCkKKworCisgICAgZGVmIHRlc3RfbWFnaWNfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgY2xhc3MgQnVpbHRpblN1YmNsYXNzKGxpc3QpOgorICAgICAgICAgICAgYXR0ciA9IHt9CisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhCdWlsdGluU3ViY2xhc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW50LCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGludCwgbW9jay5hdHRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobW9jayksIFtdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrWydmb28nXSwgTWFnaWNNb2NrKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jay5hdHRyWydmb28nXSwgTWFnaWNNb2NrKQorCisKKyAgICBkZWYgdGVzdF9zcGVjX3NldChzZWxmKToKKyAgICAgICAgY2xhc3MgU3ViKFNvbWVDbGFzcyk6CisgICAgICAgICAgICBhdHRyID0gU29tZUNsYXNzKCkKKworICAgICAgICBmb3Igc3BlYyBpbiAoU3ViLCBTdWIoKSk6CisgICAgICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKHNwZWMsIHNwZWNfc2V0PVRydWUpCisgICAgICAgICAgICBzZWxmLl9jaGVja19zb21lY2xhc3NfbW9jayhtb2NrKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgbW9jaywgJ2ZvbycsICdiYXInKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIG1vY2suYXR0ciwgJ2ZvbycsICdiYXInKQorCisKKyAgICBkZWYgdGVzdF9kZXNjcmlwdG9ycyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBmKGNscywgYSwgYik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIGcoYSwgYik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIEJhcihGb28pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIEJheihTb21lQ2xhc3MsIEJhcik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZm9yIHNwZWMgaW4gKEZvbywgRm9vKCksIEJhciwgQmFyKCksIEJheiwgQmF6KCkpOgorICAgICAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhzcGVjKQorICAgICAgICAgICAgbW9jay5mKDEsIDIpCisgICAgICAgICAgICBtb2NrLmYuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSwgMikKKworICAgICAgICAgICAgbW9jay5nKDMsIDQpCisgICAgICAgICAgICBtb2NrLmcuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMywgNCkKKworCisgICAgZGVmIHRlc3RfcmVjdXJzaXZlKHNlbGYpOgorICAgICAgICBjbGFzcyBBKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgYShzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBmb28gPSAnZm9vIGJhciBiYXonCisgICAgICAgICAgICBiYXIgPSBmb28KKworICAgICAgICBBLkIgPSBBCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoQSkKKworICAgICAgICBtb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2NrLkIuY2FsbGVkKQorCisgICAgICAgIG1vY2suYSgpCisgICAgICAgIG1vY2suQi5hKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywgW2NhbGwuYSgpLCBjYWxsLkIuYSgpXSkKKworICAgICAgICBzZWxmLmFzc2VydElzKEEuZm9vLCBBLmJhcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChtb2NrLmZvbywgbW9jay5iYXIpCisgICAgICAgIG1vY2suZm9vLmxvd2VyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIG1vY2suYmFyLmxvd2VyLmFzc2VydF9jYWxsZWRfd2l0aCkKKworCisgICAgZGVmIHRlc3Rfc3BlY19pbmhlcml0YW5jZV9mb3JfY2xhc3NlcyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgYShzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBjbGFzcyBCYXIob2JqZWN0KToKKyAgICAgICAgICAgICAgICBkZWYgZihzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzX21vY2sgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoY2xhc3NfbW9jaywgY2xhc3NfbW9jaygpKQorCisgICAgICAgIGZvciB0aGlzX21vY2sgaW4gY2xhc3NfbW9jaywgY2xhc3NfbW9jaygpOgorICAgICAgICAgICAgdGhpc19tb2NrLmEoKQorICAgICAgICAgICAgdGhpc19tb2NrLmEuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdGhpc19tb2NrLmEsICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIHRoaXNfbW9jaywgJ2InKQorCisgICAgICAgIGluc3RhbmNlX21vY2sgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKCkpCisgICAgICAgIGluc3RhbmNlX21vY2suYSgpCisgICAgICAgIGluc3RhbmNlX21vY2suYS5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlX21vY2suYSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBpbnN0YW5jZV9tb2NrLCAnYicpCisKKyAgICAgICAgIyBUaGUgcmV0dXJuIHZhbHVlIGlzbid0IGlzbid0IGNhbGxhYmxlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zdGFuY2VfbW9jaykKKworICAgICAgICBpbnN0YW5jZV9tb2NrLkJhci5mKCkKKyAgICAgICAgaW5zdGFuY2VfbW9jay5CYXIuZi5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgaW5zdGFuY2VfbW9jay5CYXIsICdnJykKKworICAgICAgICBpbnN0YW5jZV9tb2NrLkJhcigpLmYoKQorICAgICAgICBpbnN0YW5jZV9tb2NrLkJhcigpLmYuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIGluc3RhbmNlX21vY2suQmFyKCksICdnJykKKworCisgICAgZGVmIHRlc3RfaW5oZXJpdChzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBhID0gMworCisgICAgICAgIEZvby5Gb28gPSBGb28KKworICAgICAgICAjIGNsYXNzCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorICAgICAgICBpbnN0YW5jZSA9IG1vY2soKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgaW5zdGFuY2UsICdiJykKKworICAgICAgICBhdHRyX2luc3RhbmNlID0gbW9jay5Gb28oKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgYXR0cl9pbnN0YW5jZSwgJ2InKQorCisgICAgICAgICMgaW5zdGFuY2UKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2ssICdiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorCisgICAgICAgICMgYXR0cmlidXRlIGluc3RhbmNlCisgICAgICAgIGNhbGxfcmVzdWx0ID0gbW9jay5Gb28oKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgY2FsbF9yZXN1bHQsICdiJykKKworCisgICAgZGVmIHRlc3RfYnVpbHRpbnMoc2VsZik6CisgICAgICAgICMgdXNlZCB0byBmYWlsIHdpdGggaW5maW5pdGUgcmVjdXJzaW9uCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYygxKQorCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhpbnQpCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYygnZm9vJykKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKHN0cikKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKHt9KQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoZGljdCkKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKFtdKQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMobGlzdCkKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKHNldCgpKQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoc2V0KQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoMS4wKQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoZmxvYXQpCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYygxaikKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKGNvbXBsZXgpCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhGYWxzZSkKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKFRydWUpCisKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICBkZWYgZihhLCBiKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKGYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKyAgICAgICAgbW9jaygxLCAyKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyKQorCisgICAgICAgIGYuZiA9IGYKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhmKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2suZikKKyAgICAgICAgbW9jay5mKDMsIDQpCisgICAgICAgIG1vY2suZi5hc3NlcnRfY2FsbGVkX3dpdGgoMywgNCkKKworCisgICAgZGVmIHRlc3Rfc2tpcF9hdHRyaWJ1dGVlcnJvcnMoc2VsZik6CisgICAgICAgIGNsYXNzIFJhaXNlcihvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fZ2V0X18oc2VsZiwgb2JqLCB0eXBlPU5vbmUpOgorICAgICAgICAgICAgICAgIGlmIG9iaiBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcignQ2FuIG9ubHkgYmUgYWNjZXNzZWQgdmlhIGFuIGluc3RhbmNlJykKKworICAgICAgICBjbGFzcyBSYWlzZXJDbGFzcyhvYmplY3QpOgorICAgICAgICAgICAgcmFpc2VyID0gUmFpc2VyKCkKKworICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIGV4aXN0aW5nKGEsIGIpOgorICAgICAgICAgICAgICAgIHJldHVybiBhICsgYgorCisgICAgICAgIHMgPSBjcmVhdGVfYXV0b3NwZWMoUmFpc2VyQ2xhc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhIHg6IHMuZXhpc3RpbmcoMSwgMiwgMykpCisgICAgICAgIHMuZXhpc3RpbmcoMSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogcy5ub25leGlzdGluZykKKworICAgICAgICAjIGNoZWNrIHdlIGNhbiBmZXRjaCB0aGUgcmFpc2VyIGF0dHJpYnV0ZSBhbmQgaXQgaGFzIG5vIHNwZWMKKyAgICAgICAgb2JqID0gcy5yYWlzZXIKKyAgICAgICAgb2JqLmZvbywgb2JqLmJhcgorCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGEsIGI9Myk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKyAgICAgICAgbW9jaygxKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEpCisKKyAgICAgICAgbW9jayg0LCA1KQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCg0LCA1KQorCisKKyAgICBkZWYgdGVzdF9jbGFzc193aXRoX25vX2luaXQoc2VsZik6CisgICAgICAgICMgdGhpcyB1c2VkIHRvIHJhaXNlIGFuIGV4Y2VwdGlvbgorICAgICAgICAjIGR1ZSB0byB0cnlpbmcgdG8gZ2V0IGEgc2lnbmF0dXJlIGZyb20gb2JqZWN0Ll9faW5pdF9fCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBjcmVhdGVfYXV0b3NwZWMoRm9vKQorCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfY2FsbGFibGUoc2VsZik6CisgICAgICAgIGNsYXNzIENhbGxhYmxlKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKENhbGxhYmxlKQorICAgICAgICBtb2NrKCkKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaywgJ2EnKQorCisgICAgICAgIGluc3RhbmNlID0gbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zdGFuY2UpCisgICAgICAgIGluc3RhbmNlKGE9J2EnKQorICAgICAgICBpbnN0YW5jZS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChhPSdhJykKKyAgICAgICAgaW5zdGFuY2UoJ2EnKQorICAgICAgICBpbnN0YW5jZS5hc3NlcnRfY2FsbGVkX3dpdGgoJ2EnKQorCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoQ2FsbGFibGUoKSkKKyAgICAgICAgbW9jayhhPSdhJykKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChhPSdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorICAgICAgICBtb2NrKCdhJykKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoJ2EnKQorCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfbm9uY2FsbGFibGUoc2VsZik6CisgICAgICAgIGNsYXNzIE5vbkNhbGxhYmxlKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoTm9uQ2FsbGFibGUpCisgICAgICAgIGluc3RhbmNlID0gbW9jaygpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2ssICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnN0YW5jZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnN0YW5jZSwgJ2EnKQorCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoTm9uQ2FsbGFibGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2ssICdhJykKKworCisgICAgZGVmIHRlc3RfY3JlYXRlX2F1dG9zcGVjX25vbmUoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgYmFyID0gTm9uZQorCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorICAgICAgICBub25lID0gbW9jay5iYXIKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKG5vbmUsIHR5cGUoTm9uZSkpCisKKyAgICAgICAgbm9uZS5mb28oKQorICAgICAgICBub25lLmZvby5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKworICAgIGRlZiB0ZXN0X2F1dG9zcGVjX2Z1bmN0aW9uc193aXRoX3NlbGZfaW5fb2RkX3BsYWNlKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBmKGEsIHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhID0gY3JlYXRlX2F1dG9zcGVjKEZvbykKKyAgICAgICAgYS5mKHNlbGY9MTApCisgICAgICAgIGEuZi5hc3NlcnRfY2FsbGVkX3dpdGgoc2VsZj0xMCkKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfcHJvcGVydHkoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAzCisKKyAgICAgICAgZm9vID0gY3JlYXRlX2F1dG9zcGVjKEZvbykKKyAgICAgICAgbW9ja19wcm9wZXJ0eSA9IGZvby5mb28KKworICAgICAgICAjIG5vIHNwZWMgb24gcHJvcGVydGllcworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtb2NrX3Byb3BlcnR5LCBNYWdpY01vY2spKQorICAgICAgICBtb2NrX3Byb3BlcnR5KDEsIDIsIDMpCisgICAgICAgIG1vY2tfcHJvcGVydHkuYWJjKDQsIDUsIDYpCisgICAgICAgIG1vY2tfcHJvcGVydHkuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSwgMiwgMykKKyAgICAgICAgbW9ja19wcm9wZXJ0eS5hYmMuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoNCwgNSwgNikKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfc2xvdHMoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgX19zbG90c19fID0gWydhJ10KKworICAgICAgICBmb28gPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorICAgICAgICBtb2NrX3Nsb3QgPSBmb28uYQorCisgICAgICAgICMgbm8gc3BlYyBvbiBzbG90cworICAgICAgICBtb2NrX3Nsb3QoMSwgMiwgMykKKyAgICAgICAgbW9ja19zbG90LmFiYyg0LCA1LCA2KQorICAgICAgICBtb2NrX3Nsb3QuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSwgMiwgMykKKyAgICAgICAgbW9ja19zbG90LmFiYy5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCg0LCA1LCA2KQorCisKK2NsYXNzIFRlc3RDYWxsTGlzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hcmdzX2xpc3RfY29udGFpbnNfY2FsbF9saXN0KHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLmNhbGxfYXJnc19saXN0LCBfQ2FsbExpc3QpCisKKyAgICAgICAgbW9jaygxLCAyKQorICAgICAgICBtb2NrKGE9MykKKyAgICAgICAgbW9jaygzLCA0KQorICAgICAgICBtb2NrKGI9NikKKworICAgICAgICBmb3Iga2FsbCBpbiBjYWxsKDEsIDIpLCBjYWxsKGE9MyksIGNhbGwoMywgNCksIGNhbGwoYj02KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShrYWxsIGluIG1vY2suY2FsbF9hcmdzX2xpc3QpCisKKyAgICAgICAgY2FsbHMgPSBbY2FsbChhPTMpLCBjYWxsKDMsIDQpXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY2FsbHMgaW4gbW9jay5jYWxsX2FyZ3NfbGlzdCkKKyAgICAgICAgY2FsbHMgPSBbY2FsbCgxLCAyKSwgY2FsbChhPTMpXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY2FsbHMgaW4gbW9jay5jYWxsX2FyZ3NfbGlzdCkKKyAgICAgICAgY2FsbHMgPSBbY2FsbCgzLCA0KSwgY2FsbChiPTYpXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY2FsbHMgaW4gbW9jay5jYWxsX2FyZ3NfbGlzdCkKKyAgICAgICAgY2FsbHMgPSBbY2FsbCgzLCA0KV0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNhbGxzIGluIG1vY2suY2FsbF9hcmdzX2xpc3QpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjYWxsKCdmaXNoJykgaW4gbW9jay5jYWxsX2FyZ3NfbGlzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShbY2FsbCgnZmlzaCcpXSBpbiBtb2NrLmNhbGxfYXJnc19saXN0KQorCisKKyAgICBkZWYgdGVzdF9jYWxsX2xpc3Rfc3RyKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soMSwgMikKKyAgICAgICAgbW9jay5mb28oYT0zKQorICAgICAgICBtb2NrLmZvby5iYXIoKS5iYXooJ2Zpc2gnLCBjYXQ9J2RvZycpCisKKyAgICAgICAgZXhwZWN0ZWQgPSAoCisgICAgICAgICAgICAiW2NhbGwoMSwgMiksXG4iCisgICAgICAgICAgICAiIGNhbGwuZm9vKGE9MyksXG4iCisgICAgICAgICAgICAiIGNhbGwuZm9vLmJhcigpLFxuIgorICAgICAgICAgICAgIiBjYWxsLmZvby5iYXIoKS5iYXooJ2Zpc2gnLCBjYXQ9J2RvZycpXSIKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtb2NrLm1vY2tfY2FsbHMpLCBleHBlY3RlZCkKKworCisgICAgZGVmIHRlc3RfcHJvcGVydHltb2NrKHNlbGYpOgorICAgICAgICBwID0gcGF0Y2goJyVzLlNvbWVDbGFzcy5vbmUnICUgX19uYW1lX18sIG5ld19jYWxsYWJsZT1Qcm9wZXJ0eU1vY2spCisgICAgICAgIG1vY2sgPSBwLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgU29tZUNsYXNzLm9uZQorICAgICAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKyAgICAgICAgICAgIHMgPSBTb21lQ2xhc3MoKQorICAgICAgICAgICAgcy5vbmUKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBbY2FsbCgpLCBjYWxsKCldKQorCisgICAgICAgICAgICBzLm9uZSA9IDMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBbY2FsbCgpLCBjYWxsKCksIGNhbGwoMyldKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfcHJvcGVydHltb2NrX3JldHVybnZhbHVlKHNlbGYpOgorICAgICAgICBtID0gTWFnaWNNb2NrKCkKKyAgICAgICAgcCA9IFByb3BlcnR5TW9jaygpCisgICAgICAgIHR5cGUobSkuZm9vID0gcAorCisgICAgICAgIHJldHVybmVkID0gbS5mb28KKyAgICAgICAgcC5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyZXR1cm5lZCwgTWFnaWNNb2NrKQorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UocmV0dXJuZWQsIFByb3BlcnR5TW9jaykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RtYWdpY21ldGhvZHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJjZjA4OAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RtYWdpY21ldGhvZHMucHkKQEAgLTAsMCArMSw0MDMgQEAKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IGluc3BlY3QKK2ltcG9ydCBzeXMKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTW9jaywgTWFnaWNNb2NrLCBfbWFnaWNzCisKKworCitjbGFzcyBUZXN0TW9ja2luZ01hZ2ljTWV0aG9kcyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9kZWxldGluZ19tYWdpY19tZXRob2RzKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2NrLCAnX19nZXRpdGVtX18nKSkKKworICAgICAgICBtb2NrLl9fZ2V0aXRlbV9fID0gTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vY2ssICdfX2dldGl0ZW1fXycpKQorCisgICAgICAgIGRlbCBtb2NrLl9fZ2V0aXRlbV9fCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2NrLCAnX19nZXRpdGVtX18nKSkKKworCisgICAgZGVmIHRlc3RfbWFnaWNtb2NrX2RlbChzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgICMgYmVmb3JlIHVzaW5nIGdldGl0ZW0KKyAgICAgICAgZGVsIG1vY2suX19nZXRpdGVtX18KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IG1vY2tbJ2ZvbyddKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICAjIHRoaXMgdGltZSB1c2UgaXQgZmlyc3QKKyAgICAgICAgbW9ja1snZm9vJ10KKyAgICAgICAgZGVsIG1vY2suX19nZXRpdGVtX18KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IG1vY2tbJ2ZvbyddKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tZXRob2Rfd3JhcHBpbmcoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgZGVmIGYoc2VsZiwgbmFtZSk6CisgICAgICAgICAgICByZXR1cm4gc2VsZiwgJ2Zpc2gnCisKKyAgICAgICAgbW9jay5fX2dldGl0ZW1fXyA9IGYKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2NrLl9fZ2V0aXRlbV9fIGlzIGYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9ja1snZm9vJ10sIChtb2NrLCAnZmlzaCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suX19nZXRpdGVtX18oJ2ZvbycpLCAobW9jaywgJ2Zpc2gnKSkKKworICAgICAgICBtb2NrLl9fZ2V0aXRlbV9fID0gbW9jaworICAgICAgICBzZWxmLmFzc2VydFRydWUobW9jay5fX2dldGl0ZW1fXyBpcyBtb2NrKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tZXRob2RzX2lzb2xhdGVkX2JldHdlZW5fbW9ja3Moc2VsZik6CisgICAgICAgIG1vY2sxID0gTW9jaygpCisgICAgICAgIG1vY2syID0gTW9jaygpCisKKyAgICAgICAgbW9jazEuX19pdGVyX18gPSBNb2NrKHJldHVybl92YWx1ZT1pdGVyKFtdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1vY2sxKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBsaXN0KG1vY2syKSkKKworCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobW9jayksICI8TW9jayBpZD0nJXMnPiIgJSBpZChtb2NrKSkKKyAgICAgICAgbW9jay5fX3JlcHJfXyA9IGxhbWJkYSBzOiAnZm9vJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobW9jayksICdmb28nKQorCisKKyAgICBkZWYgdGVzdF9zdHIoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobW9jayksIG9iamVjdC5fX3N0cl9fKG1vY2spKQorICAgICAgICBtb2NrLl9fc3RyX18gPSBsYW1iZGEgczogJ2ZvbycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobW9jayksICdmb28nKQorCisKKyAgICBkZWYgdGVzdF9kaWN0X21ldGhvZHMoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbW9ja1snZm9vJ10pCisgICAgICAgIGRlZiBfZGVsKCk6CisgICAgICAgICAgICBkZWwgbW9ja1snZm9vJ10KKyAgICAgICAgZGVmIF9zZXQoKToKKyAgICAgICAgICAgIG1vY2tbJ2ZvbyddID0gMworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9kZWwpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX3NldCkKKworICAgICAgICBfZGljdCA9IHt9CisgICAgICAgIGRlZiBnZXRpdGVtKHMsIG5hbWUpOgorICAgICAgICAgICAgcmV0dXJuIF9kaWN0W25hbWVdCisgICAgICAgIGRlZiBzZXRpdGVtKHMsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgICAgIF9kaWN0W25hbWVdID0gdmFsdWUKKyAgICAgICAgZGVmIGRlbGl0ZW0ocywgbmFtZSk6CisgICAgICAgICAgICBkZWwgX2RpY3RbbmFtZV0KKworICAgICAgICBtb2NrLl9fc2V0aXRlbV9fID0gc2V0aXRlbQorICAgICAgICBtb2NrLl9fZ2V0aXRlbV9fID0gZ2V0aXRlbQorICAgICAgICBtb2NrLl9fZGVsaXRlbV9fID0gZGVsaXRlbQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBsYW1iZGE6IG1vY2tbJ2ZvbyddKQorICAgICAgICBtb2NrWydmb28nXSA9ICdiYXInCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2RpY3QsIHsnZm9vJzogJ2Jhcid9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2tbJ2ZvbyddLCAnYmFyJykKKyAgICAgICAgZGVsIG1vY2tbJ2ZvbyddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2RpY3QsIHt9KQorCisKKyAgICBkZWYgdGVzdF9udW1lcmljKHNlbGYpOgorICAgICAgICBvcmlnaW5hbCA9IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay52YWx1ZSA9IDAKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbW9jayArIDMpCisKKyAgICAgICAgZGVmIGFkZChzZWxmLCBvdGhlcik6CisgICAgICAgICAgICBtb2NrLnZhbHVlICs9IG90aGVyCisgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICBtb2NrLl9fYWRkX18gPSBhZGQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrICsgMywgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnZhbHVlLCAzKQorCisgICAgICAgIGRlbCBtb2NrLl9fYWRkX18KKyAgICAgICAgZGVmIGlhZGQobW9jayk6CisgICAgICAgICAgICBtb2NrICs9IDMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpYWRkLCBtb2NrKQorICAgICAgICBtb2NrLl9faWFkZF9fID0gYWRkCisgICAgICAgIG1vY2sgKz0gNgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2ssIG9yaWdpbmFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sudmFsdWUsIDkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IDMgKyBtb2NrKQorICAgICAgICBtb2NrLl9fcmFkZF9fID0gYWRkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNyArIG1vY2ssIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay52YWx1ZSwgMTYpCisKKworICAgIGRlZiB0ZXN0X2hhc2goc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgIyB0ZXN0IGRlbGVnYXRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG1vY2spLCBNb2NrLl9faGFzaF9fKG1vY2spKQorCisgICAgICAgIGRlZiBfaGFzaChzKToKKyAgICAgICAgICAgIHJldHVybiAzCisgICAgICAgIG1vY2suX19oYXNoX18gPSBfaGFzaAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobW9jayksIDMpCisKKworICAgIGRlZiB0ZXN0X25vbnplcm8oc2VsZik6CisgICAgICAgIG0gPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJvb2wobSkpCisKKyAgICAgICAgbS5fX2Jvb2xfXyA9IGxhbWJkYSBzOiBGYWxzZQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJvb2wobSkpCisKKworICAgIGRlZiB0ZXN0X2NvbXBhcmlzb24oc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgZGVmIGNvbXAocywgbyk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBtb2NrLl9fbHRfXyA9IG1vY2suX19ndF9fID0gbW9jay5fX2xlX18gPSBtb2NrLl9fZ2VfXyA9IGNvbXAKKyAgICAgICAgc2VsZi4gYXNzZXJ0VHJ1ZShtb2NrIDwgMykKKyAgICAgICAgc2VsZi4gYXNzZXJ0VHJ1ZShtb2NrID4gMykKKyAgICAgICAgc2VsZi4gYXNzZXJ0VHJ1ZShtb2NrIDw9IDMpCisgICAgICAgIHNlbGYuIGFzc2VydFRydWUobW9jayA+PSAzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBNYWdpY01vY2soKSA8IG9iamVjdCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogb2JqZWN0KCkgPCBNYWdpY01vY2soKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE1hZ2ljTW9jaygpIDwgTWFnaWNNb2NrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBNYWdpY01vY2soKSA+IG9iamVjdCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogb2JqZWN0KCkgPiBNYWdpY01vY2soKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE1hZ2ljTW9jaygpID4gTWFnaWNNb2NrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBNYWdpY01vY2soKSA8PSBvYmplY3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IG9iamVjdCgpIDw9IE1hZ2ljTW9jaygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogTWFnaWNNb2NrKCkgPD0gTWFnaWNNb2NrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBNYWdpY01vY2soKSA+PSBvYmplY3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IG9iamVjdCgpID49IE1hZ2ljTW9jaygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogTWFnaWNNb2NrKCkgPj0gTWFnaWNNb2NrKCkpCisKKworICAgIGRlZiB0ZXN0X2VxdWFsaXR5KHNlbGYpOgorICAgICAgICBmb3IgbW9jayBpbiBNb2NrKCksIE1hZ2ljTW9jaygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrID09IG1vY2ssIFRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jayA9PSBtb2NrLCBib29sKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrICE9IG1vY2ssIEZhbHNlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2sgIT0gbW9jaywgYm9vbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jayA9PSBvYmplY3QoKSwgRmFsc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sgIT0gb2JqZWN0KCksIFRydWUpCisKKyAgICAgICAgICAgIGRlZiBlcShzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyID09IDMKKyAgICAgICAgICAgIG1vY2suX19lcV9fID0gZXEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NrID09IDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vY2sgPT0gNCkKKworICAgICAgICAgICAgZGVmIG5lKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgPT0gMworICAgICAgICAgICAgbW9jay5fX25lX18gPSBuZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vY2sgIT0gMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9jayAhPSA0KQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrLl9fZXFfXy5yZXR1cm5fdmFsdWUgPSBUcnVlCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrID09IDMsIGJvb2wpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jayA9PSAzLCBUcnVlKQorCisgICAgICAgIG1vY2suX19uZV9fLnJldHVybl92YWx1ZSA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrICE9IDMsIGJvb2wpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jayAhPSAzLCBGYWxzZSkKKworCisgICAgZGVmIHRlc3RfbGVuX2NvbnRhaW5zX2l0ZXIoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxlbiwgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpdGVyLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogJ2ZvbycgaW4gbW9jaykKKworICAgICAgICBtb2NrLl9fbGVuX18gPSBsYW1iZGEgczogNgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtb2NrKSwgNikKKworICAgICAgICBtb2NrLl9fY29udGFpbnNfXyA9IGxhbWJkYSBzLCBvOiBvID09IDMKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDMgaW4gbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSg2IGluIG1vY2spCisKKyAgICAgICAgbW9jay5fX2l0ZXJfXyA9IGxhbWJkYSBzOiBpdGVyKCdmb29iYXJiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobW9jayksIGxpc3QoJ2Zvb2JhcmJheicpKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY21vY2soc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorCisgICAgICAgIG1vY2suX19pdGVyX18ucmV0dXJuX3ZhbHVlID0gaXRlcihbMSwgMiwgM10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgWzEsIDIsIDNdKQorCisgICAgICAgIGdldGF0dHIobW9jaywgJ19fYm9vbF9fJykucmV0dXJuX3ZhbHVlID0gRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vY2ssICdfX25vbnplcm9fXycpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJvb2wobW9jaykpCisKKyAgICAgICAgZm9yIGVudHJ5IGluIF9tYWdpY3M6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2NrLCBlbnRyeSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2NrLCAnX19pbWFnaW5lcnlfXycpKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tb2NrX2VxdWFsaXR5KHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2sgPT0gb2JqZWN0KCksIGJvb2wpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrICE9IG9iamVjdCgpLCBib29sKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jayA9PSBvYmplY3QoKSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jayAhPSBvYmplY3QoKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrID09IG1vY2ssIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jayAhPSBtb2NrLCBGYWxzZSkKKworCisgICAgZGVmIHRlc3RfbWFnaWNtb2NrX2RlZmF1bHRzKHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobW9jayksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxleChtb2NrKSwgMWopCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQobW9jayksIDEuMCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihvYmplY3QoKSwgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obW9jayksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtb2NrKSwgb2JqZWN0Ll9faGFzaF9fKG1vY2spKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtb2NrKSwgb2JqZWN0Ll9fc3RyX18obW9jaykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShib29sKG1vY2spKQorCisgICAgICAgICMgaW4gUHl0aG9uIDMgb2N0IGFuZCBoZXggdXNlIF9faW5kZXhfXworICAgICAgICAjIHNvIHRoZXNlIHRlc3RzIGFyZSBmb3IgX19pbmRleF9fIGluIHB5M2sKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvY3QobW9jayksICcwbzEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhleChtb2NrKSwgJzB4MScpCisgICAgICAgICMgaG93IHRvIHRlc3QgX19zaXplb2ZfXyA/CisKKworICAgIGRlZiB0ZXN0X21hZ2ljX21ldGhvZHNfYW5kX3NwZWMoc2VsZik6CisgICAgICAgIGNsYXNzIEl0ZXJhYmxlKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9SXRlcmFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IG1vY2suX19pdGVyX18pCisKKyAgICAgICAgbW9jay5fX2l0ZXJfXyA9IE1vY2socmV0dXJuX3ZhbHVlPWl0ZXIoW10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobW9jayksIFtdKQorCisgICAgICAgIGNsYXNzIE5vbkl0ZXJhYmxlKG9iamVjdCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9Tm9uSXRlcmFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IG1vY2suX19pdGVyX18pCisKKyAgICAgICAgZGVmIHNldF9pbnQoKToKKyAgICAgICAgICAgIG1vY2suX19pbnRfXyA9IE1vY2socmV0dXJuX3ZhbHVlPWl0ZXIoW10pKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0X2ludCkKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKHNwZWM9SXRlcmFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRfaW50KQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tZXRob2RzX2FuZF9zcGVjX3NldChzZWxmKToKKyAgICAgICAgY2xhc3MgSXRlcmFibGUob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlY19zZXQ9SXRlcmFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IG1vY2suX19pdGVyX18pCisKKyAgICAgICAgbW9jay5fX2l0ZXJfXyA9IE1vY2socmV0dXJuX3ZhbHVlPWl0ZXIoW10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobW9jayksIFtdKQorCisgICAgICAgIGNsYXNzIE5vbkl0ZXJhYmxlKG9iamVjdCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWNfc2V0PU5vbkl0ZXJhYmxlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBtb2NrLl9faXRlcl9fKQorCisgICAgICAgIGRlZiBzZXRfaW50KCk6CisgICAgICAgICAgICBtb2NrLl9faW50X18gPSBNb2NrKHJldHVybl92YWx1ZT1pdGVyKFtdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldF9pbnQpCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jayhzcGVjX3NldD1JdGVyYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1vY2spLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldF9pbnQpCisKKworICAgIGRlZiB0ZXN0X3NldHRpbmdfdW5zdXBwb3J0ZWRfbWFnaWNfbWV0aG9kKHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgZGVmIHNldF9zZXRhdHRyKCk6CisgICAgICAgICAgICBtb2NrLl9fc2V0YXR0cl9fID0gbGFtYmRhIHNlbGYsIG5hbWU6IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICJBdHRlbXB0aW5nIHRvIHNldCB1bnN1cHBvcnRlZCBtYWdpYyBtZXRob2QgJ19fc2V0YXR0cl9fJy4iLAorICAgICAgICAgICAgc2V0X3NldGF0dHIKKyAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzX2FuZF9yZXR1cm5fdmFsdWUoc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBhdHRyID0gbW9jay5mb28KKyAgICAgICAgZGVmIF9nZXRfdHlwZShvYmopOgorICAgICAgICAgICAgIyB0aGUgdHlwZSBvZiBldmVyeSBtb2NrIChvciBtYWdpY21vY2spIGlzIGEgY3VzdG9tIHN1YmNsYXNzCisgICAgICAgICAgICAjIHNvIHRoZSByZWFsIHR5cGUgaXMgdGhlIHNlY29uZCBpbiB0aGUgbXJvCisgICAgICAgICAgICByZXR1cm4gdHlwZShvYmopLl9fbXJvX19bMV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZ2V0X3R5cGUoYXR0ciksIE1hZ2ljTW9jaykKKworICAgICAgICByZXR1cm5lZCA9IG1vY2soKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9nZXRfdHlwZShyZXR1cm5lZCksIE1hZ2ljTW9jaykKKworCisgICAgZGVmIHRlc3RfbWFnaWNfbWV0aG9kc19hcmVfbWFnaWNfbW9ja3Moc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jay5fX2dldGl0ZW1fXywgTWFnaWNNb2NrKQorCisgICAgICAgIG1vY2tbMV1bMl0uX19nZXRpdGVtX18ucmV0dXJuX3ZhbHVlID0gMworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2tbMV1bMl1bM10sIDMpCisKKworICAgIGRlZiB0ZXN0X21hZ2ljX21ldGhvZF9yZXNldF9tb2NrKHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgc3RyKG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NrLl9fc3RyX18uY2FsbGVkKQorICAgICAgICBtb2NrLnJlc2V0X21vY2soKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vY2suX19zdHJfXy5jYWxsZWQpCisKKworICAgIGRlZiB0ZXN0X2RpcihzZWxmKToKKyAgICAgICAgIyBvdmVycmlkaW5nIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uCisgICAgICAgIGZvciBtb2NrIGluIE1vY2soKSwgTWFnaWNNb2NrKCk6CisgICAgICAgICAgICBkZWYgX2RpcihzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gWydmb28nXQorICAgICAgICAgICAgbW9jay5fX2Rpcl9fID0gX2RpcgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXIobW9jayksIFsnZm9vJ10pCisKKworICAgIEB1bml0dGVzdC5za2lwSWYoJ1B5UHknIGluIHN5cy52ZXJzaW9uLCAiVGhpcyBmYWlscyBkaWZmZXJlbnRseSBvbiBweXB5IikKKyAgICBkZWYgdGVzdF9ib3VuZF9tZXRob2RzKHNlbGYpOgorICAgICAgICBtID0gTW9jaygpCisKKyAgICAgICAgIyBYWFhYIHNob3VsZCB0aGlzIGJlIGFuIGV4cGVjdGVkIGZhaWx1cmUgaW5zdGVhZD8KKworICAgICAgICAjIHRoaXMgc2VlbXMgbGlrZSBpdCBzaG91bGQgd29yaywgYnV0IGlzIGhhcmQgdG8gZG8gd2l0aG91dCBpbnRyb2R1Y2luZworICAgICAgICAjIG90aGVyIGFwaSBpbmNvbnNpc3RlbmNpZXMuIEZhaWx1cmUgbWVzc2FnZSBjb3VsZCBiZSBiZXR0ZXIgdGhvdWdoLgorICAgICAgICBtLl9faXRlcl9fID0gWzNdLl9faXRlcl9fCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXRlciwgbSkKKworCisgICAgZGVmIHRlc3RfbWFnaWNfbWV0aG9kX3R5cGUoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhNYWdpY01vY2spOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGZvbyA9IEZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmb28uX19pbnRfXywgRm9vKQorCisKKyAgICBkZWYgdGVzdF9kZXNjcmlwdG9yX2Zyb21fY2xhc3Moc2VsZik6CisgICAgICAgIG0gPSBNYWdpY01vY2soKQorICAgICAgICB0eXBlKG0pLl9fc3RyX18ucmV0dXJuX3ZhbHVlID0gJ2ZvbycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobSksICdmb28nKQorCisKKyAgICBkZWYgdGVzdF9pdGVyYWJsZV9hc19pdGVyX3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgbSA9IE1hZ2ljTW9jaygpCisgICAgICAgIG0uX19pdGVyX18ucmV0dXJuX3ZhbHVlID0gWzEsIDIsIDNdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtKSwgWzEsIDIsIDNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobSksIFsxLCAyLCAzXSkKKworICAgICAgICBtLl9faXRlcl9fLnJldHVybl92YWx1ZSA9IGl0ZXIoWzQsIDUsIDZdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobSksIFs0LCA1LCA2XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG0pLCBbXSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1vY2sucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzZmMTI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1vY2sucHkKQEAgLTAsMCArMSwxMjc1IEBACitpbXBvcnQgY29weQoraW1wb3J0IHN5cworCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdW5pdHRlc3QudGVzdC50ZXN0bW9jay5zdXBwb3J0IGltcG9ydCBpc19pbnN0YW5jZQorZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jaworZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCAoCisgICAgY2FsbCwgREVGQVVMVCwgcGF0Y2gsIHNlbnRpbmVsLAorICAgIE1hZ2ljTW9jaywgTW9jaywgTm9uQ2FsbGFibGVNb2NrLAorICAgIE5vbkNhbGxhYmxlTWFnaWNNb2NrLCBfQ2FsbExpc3QsCisgICAgY3JlYXRlX2F1dG9zcGVjCispCisKKworY2xhc3MgSXRlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi50aGluZyA9IGl0ZXIoWyd0aGlzJywgJ2lzJywgJ2FuJywgJ2l0ZXInXSkKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBuZXh0KHNlbGYpOgorICAgICAgICByZXR1cm4gbmV4dChzZWxmLnRoaW5nKQorCisgICAgX19uZXh0X18gPSBuZXh0CisKKworCitjbGFzcyBNb2NrVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hbGwoc2VsZik6CisgICAgICAgICMgaWYgX19hbGxfXyBpcyBiYWRseSBkZWZpbmVkIHRoZW4gaW1wb3J0ICogd2lsbCByYWlzZSBhbiBlcnJvcgorICAgICAgICAjIFdlIGhhdmUgdG8gZXhlYyBpdCBiZWNhdXNlIHlvdSBjYW4ndCBpbXBvcnQgKiBpbnNpZGUgYSBtZXRob2QKKyAgICAgICAgIyBpbiBQeXRob24gMworICAgICAgICBleGVjKCJmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0ICoiKQorCisKKyAgICBkZWYgdGVzdF9jb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9jay5jYWxsZWQsICJjYWxsZWQgbm90IGluaXRpYWxpc2VkIGNvcnJlY3RseSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2NvdW50LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsX2NvdW50IG5vdCBpbml0aWFsaXNlZCBjb3JyZWN0bHkiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UobW9jay5yZXR1cm5fdmFsdWUsIE1vY2spLAorICAgICAgICAgICAgICAgICAgICAgICAgInJldHVybl92YWx1ZSBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzLCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsX2FyZ3Mgbm90IGluaXRpYWxpc2VkIGNvcnJlY3RseSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3NfbGlzdCwgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxfYXJnc19saXN0IG5vdCBpbml0aWFsaXNlZCBjb3JyZWN0bHkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZF9jYWxscyBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKworICAgICAgICAjIENhbid0IHVzZSBoYXNhdHRyIGZvciB0aGlzIHRlc3QgYXMgaXQgYWx3YXlzIHJldHVybnMgVHJ1ZSBvbiBhIG1vY2sKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnX2l0ZW1zJyBpbiBtb2NrLl9fZGljdF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IG1vY2sgc2hvdWxkIG5vdCBoYXZlICdfaXRlbXMnIGF0dHJpYnV0ZSIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobW9jay5fbW9ja19wYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJlbnQgbm90IGluaXRpYWxpc2VkIGNvcnJlY3RseSIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1vY2suX21vY2tfbWV0aG9kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZHMgbm90IGluaXRpYWxpc2VkIGNvcnJlY3RseSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5fbW9ja19jaGlsZHJlbiwge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkcmVuIG5vdCBpbml0aWFsaXNlZCBpbmNvcnJlY3RseSIpCisKKworICAgIGRlZiB0ZXN0X3JldHVybl92YWx1ZV9pbl9jb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1vY2sucmV0dXJuX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuIHZhbHVlIGluIGNvbnN0cnVjdG9yIG5vdCBob25vdXJlZCIpCisKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKG5hbWU9J2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2ZvbycsIHJlcHIobW9jaykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiclcyciICUgaWQobW9jayksIHJlcHIobW9jaykpCisKKyAgICAgICAgbW9ja3MgPSBbKE1vY2soKSwgJ21vY2snKSwgKE1vY2sobmFtZT0nYmFyJyksICdiYXInKV0KKyAgICAgICAgZm9yIG1vY2ssIG5hbWUgaW4gbW9ja3M6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCclcy5iYXInICUgbmFtZSwgcmVwcihtb2NrLmJhcikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCclcy5mb28oKScgJSBuYW1lLCByZXByKG1vY2suZm9vKCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignJXMuZm9vKCkuYmluZycgJSBuYW1lLCByZXByKG1vY2suZm9vKCkuYmluZykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCclcygpJyAlIG5hbWUsIHJlcHIobW9jaygpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzKCkoKScgJSBuYW1lLCByZXByKG1vY2soKSgpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzKCkoKS5mb28uYmFyLmJheigpLmJpbmcnICUgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihtb2NrKCkoKS5mb28uYmFyLmJheigpLmJpbmcpKQorCisKKyAgICBkZWYgdGVzdF9yZXByX3dpdGhfc3BlYyhzZWxmKToKKyAgICAgICAgY2xhc3MgWChvYmplY3QpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9WCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiIHNwZWM9J1gnICIsIHJlcHIobW9jaykpCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1YKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBzcGVjPSdYJyAiLCByZXByKG1vY2spKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWNfc2V0PVgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBzcGVjX3NldD0nWCcgIiwgcmVwcihtb2NrKSkKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjX3NldD1YKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBzcGVjX3NldD0nWCcgIiwgcmVwcihtb2NrKSkKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjPVgsIG5hbWU9J2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBzcGVjPSdYJyAiLCByZXByKG1vY2spKQorICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nZm9vJyAiLCByZXByKG1vY2spKQorCisgICAgICAgIG1vY2sgPSBNb2NrKG5hbWU9J2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oInNwZWMiLCByZXByKG1vY2spKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigic3BlYyIsIHJlcHIobW9jaykpCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1bJ2ZvbyddKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJzcGVjIiwgcmVwcihtb2NrKSkKKworCisgICAgZGVmIHRlc3Rfc2lkZV9lZmZlY3Qoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKworICAgICAgICBkZWYgZWZmZWN0KCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICByYWlzZSBTeXN0ZW1FcnJvcigna2FibG9vaWUnKQorCisgICAgICAgIG1vY2suc2lkZV9lZmZlY3QgPSBlZmZlY3QKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXJyb3IsIG1vY2ssIDEsIDIsIGZpc2g9MykKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoMSwgMiwgZmlzaD0zKQorCisgICAgICAgIHJlc3VsdHMgPSBbMSwgMiwgM10KKyAgICAgICAgZGVmIGVmZmVjdCgpOgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHMucG9wKCkKKyAgICAgICAgbW9jay5zaWRlX2VmZmVjdCA9IGVmZmVjdAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW21vY2soKSwgbW9jaygpLCBtb2NrKCldLCBbMywgMiwgMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICJzaWRlIGVmZmVjdCBub3QgdXNlZCBjb3JyZWN0bHkiKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PXNlbnRpbmVsLlNpZGVFZmZlY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5zaWRlX2VmZmVjdCwgc2VudGluZWwuU2lkZUVmZmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZGUgZWZmZWN0IGluIGNvbnN0cnVjdG9yIG5vdCB1c2VkIikKKworICAgICAgICBkZWYgc2lkZV9lZmZlY3QoKToKKyAgICAgICAgICAgIHJldHVybiBERUZBVUxUCisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PXNpZGVfZWZmZWN0LCByZXR1cm5fdmFsdWU9c2VudGluZWwuUkVUVVJOKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKSwgc2VudGluZWwuUkVUVVJOKQorCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcygnamF2YScgaW4gc3lzLnBsYXRmb3JtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyB0ZXN0IG9ubHkgYXBwbGllcyB0byBKeXRob24nKQorICAgIGRlZiB0ZXN0X2phdmFfZXhjZXB0aW9uX3NpZGVfZWZmZWN0KHNlbGYpOgorICAgICAgICBpbXBvcnQgamF2YQorICAgICAgICBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1qYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbigiQm9vbSEiKSkKKworICAgICAgICAjIGNhbid0IHVzZSBhc3NlcnRSYWlzZXMgd2l0aCBqYXZhIGV4Y2VwdGlvbnMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbW9jaygxLCAyLCBmaXNoPTMpCisgICAgICAgIGV4Y2VwdCBqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnamF2YSBleGNlcHRpb24gbm90IHJhaXNlZCcpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKDEsMiwgZmlzaD0zKQorCisKKyAgICBkZWYgdGVzdF9yZXNldF9tb2NrKHNlbGYpOgorICAgICAgICBwYXJlbnQgPSBNb2NrKCkKKyAgICAgICAgc3BlYyA9IFsic29tZXRoaW5nIl0KKyAgICAgICAgbW9jayA9IE1vY2sobmFtZT0iY2hpbGQiLCBwYXJlbnQ9cGFyZW50LCBzcGVjPXNwZWMpCisgICAgICAgIG1vY2soc2VudGluZWwuU29tZXRoaW5nLCBzb21ldGhpbmc9c2VudGluZWwuU29tZXRoaW5nRWxzZSkKKyAgICAgICAgc29tZXRoaW5nID0gbW9jay5zb21ldGhpbmcKKyAgICAgICAgbW9jay5zb21ldGhpbmcoKQorICAgICAgICBtb2NrLnNpZGVfZWZmZWN0ID0gc2VudGluZWwuU2lkZUVmZmVjdAorICAgICAgICByZXR1cm5fdmFsdWUgPSBtb2NrLnJldHVybl92YWx1ZQorICAgICAgICByZXR1cm5fdmFsdWUoKQorCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLl9tb2NrX25hbWUsICJjaGlsZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUgaW5jb3JyZWN0bHkgcmVzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suX21vY2tfcGFyZW50LCBwYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmVudCBpbmNvcnJlY3RseSByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5fbW9ja19tZXRob2RzLCBzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRob2RzIGluY29ycmVjdGx5IHJlc2V0IikKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vY2suY2FsbGVkLCAiY2FsbGVkIG5vdCByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2NvdW50LCAwLCAiY2FsbF9jb3VudCBub3QgcmVzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzLCBOb25lLCAiY2FsbF9hcmdzIG5vdCByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3NfbGlzdCwgW10sICJjYWxsX2FyZ3NfbGlzdCBub3QgcmVzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtZXRob2RfY2FsbHMgbm90IGluaXRpYWxpc2VkIGNvcnJlY3RseTogJXIgIT0gJXIiICUKKyAgICAgICAgICAgICAgICAgICAgICAgIChtb2NrLm1ldGhvZF9jYWxscywgW10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgW10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnNpZGVfZWZmZWN0LCBzZW50aW5lbC5TaWRlRWZmZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAic2lkZV9lZmZlY3QgaW5jb3JyZWN0bHkgcmVzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sucmV0dXJuX3ZhbHVlLCByZXR1cm5fdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5fdmFsdWUgaW5jb3JyZWN0bHkgcmVzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJldHVybl92YWx1ZS5jYWxsZWQsICJyZXR1cm4gdmFsdWUgbW9jayBub3QgcmVzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suX21vY2tfY2hpbGRyZW4sIHsnc29tZXRoaW5nJzogc29tZXRoaW5nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkcmVuIHJlc2V0IGluY29ycmVjdGx5IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnNvbWV0aGluZywgc29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hpbGRyZW4gaW5jb3JyZWN0bHkgY2xlYXJlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9jay5zb21ldGhpbmcuY2FsbGVkLCAiY2hpbGQgbm90IHJlc2V0IikKKworCisgICAgZGVmIHRlc3RfcmVzZXRfbW9ja19yZWN1cnNpb24oc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5yZXR1cm5fdmFsdWUgPSBtb2NrCisKKyAgICAgICAgIyB1c2VkIHRvIGNhdXNlIHJlY3Vyc2lvbgorICAgICAgICBtb2NrLnJlc2V0X21vY2soKQorCisKKyAgICBkZWYgdGVzdF9jYWxsKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShtb2NrLnJldHVybl92YWx1ZSwgTW9jayksCisgICAgICAgICAgICAgICAgICAgICAgICAiRGVmYXVsdCByZXR1cm5fdmFsdWUgc2hvdWxkIGJlIGEgTW9jayIpCisKKyAgICAgICAgcmVzdWx0ID0gbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLCByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgImRpZmZlcmVudCByZXN1bHQgZnJvbSBjb25zZWN1dGl2ZSBjYWxscyIpCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisKKyAgICAgICAgcmV0X3ZhbCA9IG1vY2soc2VudGluZWwuQXJnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9jay5jYWxsZWQsICJjYWxsZWQgbm90IHNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2NvdW50LCAxLCAiY2FsbF9jb3VudCBpbmNvcmVlY3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzLCAoKHNlbnRpbmVsLkFyZywpLCB7fSksCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxfYXJncyBub3Qgc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJnc19saXN0LCBbKChzZW50aW5lbC5BcmcsKSwge30pXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbF9hcmdzX2xpc3Qgbm90IGluaXRpYWxpc2VkIGNvcnJlY3RseSIpCisKKyAgICAgICAgbW9jay5yZXR1cm5fdmFsdWUgPSBzZW50aW5lbC5SZXR1cm5WYWx1ZQorICAgICAgICByZXRfdmFsID0gbW9jayhzZW50aW5lbC5BcmcsIGtleT1zZW50aW5lbC5LZXlBcmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0X3ZhbCwgc2VudGluZWwuUmV0dXJuVmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgImluY29ycmVjdCByZXR1cm4gdmFsdWUiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2NvdW50LCAyLCAiY2FsbF9jb3VudCBpbmNvcnJlY3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoc2VudGluZWwuQXJnLCksIHsna2V5Jzogc2VudGluZWwuS2V5QXJnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxfYXJncyBub3Qgc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJnc19saXN0LCBbCisgICAgICAgICAgICAoKHNlbnRpbmVsLkFyZywpLCB7fSksCisgICAgICAgICAgICAoKHNlbnRpbmVsLkFyZywpLCB7J2tleSc6IHNlbnRpbmVsLktleUFyZ30pCisgICAgICAgIF0sCisgICAgICAgICAgICAiY2FsbF9hcmdzX2xpc3Qgbm90IHNldCIpCisKKworICAgIGRlZiB0ZXN0X2NhbGxfYXJnc19jb21wYXJpc29uKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soKQorICAgICAgICBtb2NrKHNlbnRpbmVsLkFyZykKKyAgICAgICAgbW9jayhrdz1zZW50aW5lbC5Ld2FyZykKKyAgICAgICAgbW9jayhzZW50aW5lbC5BcmcsIGt3PXNlbnRpbmVsLkt3YXJnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzX2xpc3QsIFsKKyAgICAgICAgICAgICgpLAorICAgICAgICAgICAgKChzZW50aW5lbC5BcmcsKSwpLAorICAgICAgICAgICAgKHsia3ciOiBzZW50aW5lbC5Ld2FyZ30sKSwKKyAgICAgICAgICAgICgoc2VudGluZWwuQXJnLCksIHsia3ciOiBzZW50aW5lbC5Ld2FyZ30pCisgICAgICAgIF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgKChzZW50aW5lbC5BcmcsKSwgeyJrdyI6IHNlbnRpbmVsLkt3YXJnfSkpCisKKworICAgIGRlZiB0ZXN0X2Fzc2VydF9jYWxsZWRfd2l0aChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrKCkKKworICAgICAgICAjIFdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIGl0IGZhaWxzCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoLCAxKQorCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCkKKworICAgICAgICBtb2NrKDEsIDIsIDMsIGE9J2Zpc2gnLCBiPSdub3RoaW5nJykKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoMSwgMiwgMywgYT0nZmlzaCcsIGI9J25vdGhpbmcnKQorCisKKyAgICBkZWYgdGVzdF9hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrKCkKKworICAgICAgICAjIFdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIGl0IGZhaWxzCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCisgICAgICAgIG1vY2soKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCkKKworICAgICAgICBtb2NrLnJlc2V0X21vY2soKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCkKKworICAgICAgICBtb2NrKCdmb28nLCAnYmFyJywgYmF6PTIpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2ZvbycsICdiYXInLCBiYXo9MikKKworICAgICAgICBtb2NrLnJlc2V0X21vY2soKQorICAgICAgICBtb2NrKCdmb28nLCAnYmFyJywgYmF6PTIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICBsYW1iZGE6IG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2JvYicsICdiYXInLCBiYXo9MikKKyAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVfYWNjZXNzX3JldHVybnNfbW9ja3Moc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc29tZXRoaW5nID0gbW9jay5zb21ldGhpbmcKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKHNvbWV0aGluZywgTW9jayksICJhdHRyaWJ1dGUgaXNuJ3QgYSBtb2NrIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnNvbWV0aGluZywgc29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJkaWZmZXJlbnQgYXR0cmlidXRlcyByZXR1cm5lZCBmb3Igc2FtZSBuYW1lIikKKworICAgICAgICAjIFVzYWdlIGV4YW1wbGUKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnNvbWV0aGluZy5yZXR1cm5fdmFsdWUgPSAzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnNvbWV0aGluZygpLCAzLCAibWV0aG9kIHJldHVybmVkIHdyb25nIHZhbHVlIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vY2suc29tZXRoaW5nLmNhbGxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtZXRob2QgZGlkbid0IHJlY29yZCBiZWluZyBjYWxsZWQiKQorCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzX2hhdmVfbmFtZV9hbmRfcGFyZW50X3NldChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBzb21ldGhpbmcgPSBtb2NrLnNvbWV0aGluZworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLl9tb2NrX25hbWUsICJzb21ldGhpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dGUgbmFtZSBub3Qgc2V0IGNvcnJlY3RseSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLl9tb2NrX3BhcmVudCwgbW9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0cmlidXRlIHBhcmVudCBub3Qgc2V0IGNvcnJlY3RseSIpCisKKworICAgIGRlZiB0ZXN0X21ldGhvZF9jYWxsc19yZWNvcmRlZChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnNvbWV0aGluZygzLCBmaXNoPU5vbmUpCisgICAgICAgIG1vY2suc29tZXRoaW5nX2Vsc2Uuc29tZXRoaW5nKDYsIGNha2U9c2VudGluZWwuQ2FrZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suc29tZXRoaW5nX2Vsc2UubWV0aG9kX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbKCJzb21ldGhpbmciLCAoNiwpLCB7J2Nha2UnOiBzZW50aW5lbC5DYWtlfSldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0aG9kIGNhbGxzIG5vdCByZWNvcmRlZCBjb3JyZWN0bHkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbCisgICAgICAgICAgICAoInNvbWV0aGluZyIsICgzLCksIHsnZmlzaCc6IE5vbmV9KSwKKyAgICAgICAgICAgICgic29tZXRoaW5nX2Vsc2Uuc29tZXRoaW5nIiwgKDYsKSwgeydjYWtlJzogc2VudGluZWwuQ2FrZX0pCisgICAgICAgIF0sCisgICAgICAgICAgICAibWV0aG9kIGNhbGxzIG5vdCByZWNvcmRlZCBjb3JyZWN0bHkiKQorCisKKyAgICBkZWYgdGVzdF9tZXRob2RfY2FsbHNfY29tcGFyZV9lYXNpbHkoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5zb21ldGhpbmcoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbKCdzb21ldGhpbmcnLCldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbKCdzb21ldGhpbmcnLCAoKSwge30pXSkKKworICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suc29tZXRoaW5nKCdkaWZmZXJlbnQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbKCdzb21ldGhpbmcnLCAoJ2RpZmZlcmVudCcsKSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ3NvbWV0aGluZycsICgnZGlmZmVyZW50JywpLCB7fSldKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5zb21ldGhpbmcoeD0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbKCdzb21ldGhpbmcnLCB7J3gnOiAxfSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbKCdzb21ldGhpbmcnLCAoKSwgeyd4JzogMX0pXSkKKworICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suc29tZXRoaW5nKCdkaWZmZXJlbnQnLCBzb21lPSdtb3JlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywgWworICAgICAgICAgICAgKCdzb21ldGhpbmcnLCAoJ2RpZmZlcmVudCcsKSwgeydzb21lJzogJ21vcmUnfSkKKyAgICAgICAgXSkKKworCisgICAgZGVmIHRlc3Rfb25seV9hbGxvd2VkX21ldGhvZHNfZXhpc3Qoc2VsZik6CisgICAgICAgIGZvciBzcGVjIGluIFsnc29tZXRoaW5nJ10sICgnc29tZXRoaW5nJywpOgorICAgICAgICAgICAgZm9yIGFyZyBpbiAnc3BlYycsICdzcGVjX3NldCc6CisgICAgICAgICAgICAgICAgbW9jayA9IE1vY2soKip7YXJnOiBzcGVjfSkKKworICAgICAgICAgICAgICAgICMgdGhpcyBzaG91bGQgYmUgYWxsb3dlZAorICAgICAgICAgICAgICAgIG1vY2suc29tZXRoaW5nCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJNb2NrIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdzb21ldGhpbmdfZWxzZSciLAorICAgICAgICAgICAgICAgICAgICBnZXRhdHRyLCBtb2NrLCAnc29tZXRoaW5nX2Vsc2UnCisgICAgICAgICAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9mcm9tX3NwZWMoc2VsZik6CisgICAgICAgIGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgICAgICAgICAgeCA9IDMKKyAgICAgICAgICAgIF9fc29tZXRoaW5nX18gPSBOb25lCisgICAgICAgICAgICBkZWYgeShzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZGVmIHRlc3RfYXR0cmlidXRlcyhtb2NrKToKKyAgICAgICAgICAgICMgc2hvdWxkIHdvcmsKKyAgICAgICAgICAgIG1vY2sueAorICAgICAgICAgICAgbW9jay55CisgICAgICAgICAgICBtb2NrLl9fc29tZXRoaW5nX18KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgIk1vY2sgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ3onIiwKKyAgICAgICAgICAgICAgICBnZXRhdHRyLCBtb2NrLCAneicKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgIk1vY2sgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ19fZm9vYmFyX18nIiwKKyAgICAgICAgICAgICAgICBnZXRhdHRyLCBtb2NrLCAnX19mb29iYXJfXycKKyAgICAgICAgICAgICkKKworICAgICAgICB0ZXN0X2F0dHJpYnV0ZXMoTW9jayhzcGVjPVNvbWV0aGluZykpCisgICAgICAgIHRlc3RfYXR0cmlidXRlcyhNb2NrKHNwZWM9U29tZXRoaW5nKCkpKQorCisKKyAgICBkZWYgdGVzdF93cmFwc19jYWxscyhzZWxmKToKKyAgICAgICAgcmVhbCA9IE1vY2soKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHdyYXBzPXJlYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLCByZWFsKCkpCisKKyAgICAgICAgcmVhbC5yZXNldF9tb2NrKCkKKworICAgICAgICBtb2NrKDEsIDIsIGZpc2g9MykKKyAgICAgICAgcmVhbC5hc3NlcnRfY2FsbGVkX3dpdGgoMSwgMiwgZmlzaD0zKQorCisKKyAgICBkZWYgdGVzdF93cmFwc19jYWxsX3dpdGhfbm9uZGVmYXVsdF9yZXR1cm5fdmFsdWUoc2VsZik6CisgICAgICAgIHJlYWwgPSBNb2NrKCkKKworICAgICAgICBtb2NrID0gTW9jayh3cmFwcz1yZWFsKQorICAgICAgICBtb2NrLnJldHVybl92YWx1ZSA9IDMKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZWFsLmNhbGxlZCkKKworCisgICAgZGVmIHRlc3Rfd3JhcHNfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgY2xhc3MgUmVhbChvYmplY3QpOgorICAgICAgICAgICAgYXR0cmlidXRlID0gTW9jaygpCisKKyAgICAgICAgcmVhbCA9IFJlYWwoKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHdyYXBzPXJlYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5hdHRyaWJ1dGUoKSwgcmVhbC5hdHRyaWJ1dGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogbW9jay5maXNoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobW9jay5hdHRyaWJ1dGUsIHJlYWwuYXR0cmlidXRlKQorICAgICAgICByZXN1bHQgPSBtb2NrLmF0dHJpYnV0ZS5mcm9nKDEsIDIsIGZpc2g9MykKKyAgICAgICAgUmVhbC5hdHRyaWJ1dGUuZnJvZy5hc3NlcnRfY2FsbGVkX3dpdGgoMSwgMiwgZmlzaD0zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgUmVhbC5hdHRyaWJ1dGUuZnJvZygpKQorCisKKyAgICBkZWYgdGVzdF9leGNlcHRpb25hbF9zaWRlX2VmZmVjdChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9QXR0cmlidXRlRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBtb2NrKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PUF0dHJpYnV0ZUVycm9yKCdmb28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIG1vY2spCisKKworICAgIGRlZiB0ZXN0X2Jhc2VleGNlcHRpb25hbF9zaWRlX2VmZmVjdChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9S2V5Ym9hcmRJbnRlcnJ1cHQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleWJvYXJkSW50ZXJydXB0LCBtb2NrKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PUtleWJvYXJkSW50ZXJydXB0KCdmb28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5Ym9hcmRJbnRlcnJ1cHQsIG1vY2spCisKKworICAgIGRlZiB0ZXN0X2Fzc2VydF9jYWxsZWRfd2l0aF9tZXNzYWdlKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXNzZXJ0aW9uRXJyb3IsICdOb3QgY2FsbGVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgpCisKKworICAgIGRlZiB0ZXN0X2Fzc2VydF9jYWxsZWRfb25jZV93aXRoX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKG5hbWU9J2dlb2ZmcmV5JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBc3NlcnRpb25FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIHIiRXhwZWN0ZWQgJ2dlb2ZmcmV5JyB0byBiZSBjYWxsZWQgb25jZVwuIiwKKyAgICAgICAgICAgICAgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgpCisKKworICAgIGRlZiB0ZXN0X19uYW1lX18oc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogbW9jay5fX25hbWVfXykKKworICAgICAgICBtb2NrLl9fbmFtZV9fID0gJ2ZvbycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLl9fbmFtZV9fLCAnZm9vJykKKworCisgICAgZGVmIHRlc3Rfc3BlY19saXN0X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBTdWIobGlzdCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9U3ViKFsnZm9vJ10pKQorCisgICAgICAgIG1vY2suYXBwZW5kKDMpCisgICAgICAgIG1vY2suYXBwZW5kLmFzc2VydF9jYWxsZWRfd2l0aCgzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jaywgJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X3NwZWNfY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIFgob2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjPVgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1vY2ssIFgpKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9WCgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtb2NrLCBYKSkKKworICAgICAgICBzZWxmLmFzc2VydElzKG1vY2suX19jbGFzc19fLCBYKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE1vY2soKS5fX2NsYXNzX18uX19uYW1lX18sICdNb2NrJykKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjX3NldD1YKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtb2NrLCBYKSkKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjX3NldD1YKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1vY2ssIFgpKQorCisKKyAgICBkZWYgdGVzdF9zZXR0aW5nX2F0dHJpYnV0ZV93aXRoX3NwZWNfc2V0KHNlbGYpOgorICAgICAgICBjbGFzcyBYKG9iamVjdCk6CisgICAgICAgICAgICB5ID0gMworCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9WCkKKyAgICAgICAgbW9jay54ID0gJ2ZvbycKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjX3NldD1YKQorICAgICAgICBkZWYgc2V0X2F0dHIoKToKKyAgICAgICAgICAgIG1vY2sueCA9ICdmb28nCisKKyAgICAgICAgbW9jay55ID0gJ2ZvbycKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldF9hdHRyKQorCisKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICBjdXJyZW50ID0gc3lzLmdldHJlY3Vyc2lvbmxpbWl0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXRyZWN1cnNpb25saW1pdCwgY3VycmVudCkKKworICAgICAgICAjIGNhbid0IHVzZSBzeXMubWF4aW50IGFzIHRoaXMgZG9lc24ndCBleGlzdCBpbiBQeXRob24gMworICAgICAgICBzeXMuc2V0cmVjdXJzaW9ubGltaXQoaW50KDEwZTgpKQorICAgICAgICAjIHRoaXMgc2VnZmF1bHRzIHdpdGhvdXQgdGhlIGZpeCBpbiBwbGFjZQorICAgICAgICBjb3B5LmNvcHkoTW9jaygpKQorCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzc193aXRoX3Byb3BlcnRpZXMoc2VsZik6CisgICAgICAgIGNsYXNzIFN1YkNsYXNzKE1vY2spOgorICAgICAgICAgICAgZGVmIF9nZXQoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDMKKyAgICAgICAgICAgIGRlZiBfc2V0KHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICByYWlzZSBOYW1lRXJyb3IoJ3N0cmFuZ2UgZXJyb3InKQorICAgICAgICAgICAgc29tZV9hdHRyaWJ1dGUgPSBwcm9wZXJ0eShfZ2V0LCBfc2V0KQorCisgICAgICAgIHMgPSBTdWJDbGFzcyhzcGVjX3NldD1TdWJDbGFzcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNvbWVfYXR0cmlidXRlLCAzKQorCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzLnNvbWVfYXR0cmlidXRlID0gMworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IsIHRlc3QpCisKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHMuZm9vID0gJ2JhcicKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHRlc3QpCisKKworICAgIGRlZiB0ZXN0X3NldHRpbmdfY2FsbChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBkZWYgX19jYWxsX18oc2VsZiwgYSk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fbW9ja19jYWxsKGEpCisKKyAgICAgICAgdHlwZShtb2NrKS5fX2NhbGxfXyA9IF9fY2FsbF9fCisgICAgICAgIG1vY2soJ29uZScpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKCdvbmUnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaywgJ29uZScsICd0d28nKQorCisKKyAgICBkZWYgdGVzdF9kaXIoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgYXR0cnMgPSBzZXQoZGlyKG1vY2spKQorICAgICAgICB0eXBlX2F0dHJzID0gc2V0KFttIGZvciBtIGluIGRpcihNb2NrKSBpZiBub3QgbS5zdGFydHN3aXRoKCdfJyldKQorCisgICAgICAgICMgYWxsIHB1YmxpYyBhdHRyaWJ1dGVzIGZyb20gdGhlIHR5cGUgYXJlIGluY2x1ZGVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KCksIHR5cGVfYXR0cnMgLSBhdHRycykKKworICAgICAgICAjIGNyZWF0ZXMgdGhlc2UgYXR0cmlidXRlcworICAgICAgICBtb2NrLmEsIG1vY2suYgorICAgICAgICBzZWxmLmFzc2VydEluKCdhJywgZGlyKG1vY2spKQorICAgICAgICBzZWxmLmFzc2VydEluKCdiJywgZGlyKG1vY2spKQorCisgICAgICAgICMgaW5zdGFuY2UgYXR0cmlidXRlcworICAgICAgICBtb2NrLmMgPSBtb2NrLmQgPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2MnLCBkaXIobW9jaykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2QnLCBkaXIobW9jaykpCisKKyAgICAgICAgIyBtYWdpYyBtZXRob2RzCisgICAgICAgIG1vY2suX19pdGVyX18gPSBsYW1iZGEgczogaXRlcihbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignX19pdGVyX18nLCBkaXIobW9jaykpCisKKworICAgIGRlZiB0ZXN0X2Rpcl9mcm9tX3NwZWMoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9dW5pdHRlc3QuVGVzdENhc2UpCisgICAgICAgIHRlc3RjYXNlX2F0dHJzID0gc2V0KGRpcih1bml0dGVzdC5UZXN0Q2FzZSkpCisgICAgICAgIGF0dHJzID0gc2V0KGRpcihtb2NrKSkKKworICAgICAgICAjIGFsbCBhdHRyaWJ1dGVzIGZyb20gdGhlIHNwZWMgYXJlIGluY2x1ZGVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KCksIHRlc3RjYXNlX2F0dHJzIC0gYXR0cnMpCisKKyAgICAgICAgIyBzaGFkb3cgYSBzeXMgYXR0cmlidXRlCisgICAgICAgIG1vY2sudmVyc2lvbiA9IDMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXIobW9jaykuY291bnQoJ3ZlcnNpb24nKSwgMSkKKworCisgICAgZGVmIHRlc3RfZmlsdGVyX2RpcihzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm9iamVjdChtb2NrLCAnRklMVEVSX0RJUicsIEZhbHNlKQorICAgICAgICBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYXR0cnMgPSBzZXQoZGlyKE1vY2soKSkpCisgICAgICAgICAgICB0eXBlX2F0dHJzID0gc2V0KGRpcihNb2NrKSkKKworICAgICAgICAgICAgIyBBTEwgYXR0cmlidXRlcyBmcm9tIHRoZSB0eXBlIGFyZSBpbmNsdWRlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoKSwgdHlwZV9hdHRycyAtIGF0dHJzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfY29uZmlndXJlX21vY2soc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKGZvbz0nYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmZvbywgJ2JhcicpCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jayhmb289J2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5mb28sICdiYXInKQorCisgICAgICAgIGt3YXJncyA9IHsnc2lkZV9lZmZlY3QnOiBLZXlFcnJvciwgJ2Zvby5iYXIucmV0dXJuX3ZhbHVlJzogMzMsCisgICAgICAgICAgICAgICAgICAnZm9vJzogTWFnaWNNb2NrKCl9CisgICAgICAgIG1vY2sgPSBNb2NrKCoqa3dhcmdzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmZvby5iYXIoKSwgMzMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLmZvbywgTWFnaWNNb2NrKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5jb25maWd1cmVfbW9jaygqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5mb28uYmFyKCksIDMzKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jay5mb28sIE1hZ2ljTW9jaykKKworCisgICAgZGVmIGFzc2VydFJhaXNlc1dpdGhNc2coc2VsZiwgZXhjZXB0aW9uLCBtZXNzYWdlLCBmdW5jLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIG5lZWRlZCBiZWNhdXNlIGFzc2VydFJhaXNlc1JlZ2V4IGRvZXNuJ3Qgd29yayBlYXNpbHkgd2l0aCBuZXdsaW5lcworICAgICAgICB0cnk6CisgICAgICAgICAgICBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgaW5zdGFuY2UgPSBzeXMuZXhjX2luZm8oKVsxXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluc3RhbmNlLCBleGNlcHRpb24pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ0V4Y2VwdGlvbiAlciBub3QgcmFpc2VkJyAlIChleGNlcHRpb24sKSkKKworICAgICAgICBtc2cgPSBzdHIoaW5zdGFuY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBtZXNzYWdlKQorCisKKyAgICBkZWYgdGVzdF9hc3NlcnRfY2FsbGVkX3dpdGhfZmFpbHVyZV9tZXNzYWdlKHNlbGYpOgorICAgICAgICBtb2NrID0gTm9uQ2FsbGFibGVNb2NrKCkKKworICAgICAgICBleHBlY3RlZCA9ICJtb2NrKDEsICcyJywgMywgYmFyPSdmb28nKSIKKyAgICAgICAgbWVzc2FnZSA9ICdFeHBlY3RlZCBjYWxsOiAlc1xuTm90IGNhbGxlZCcKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNXaXRoTXNnKAorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsIG1lc3NhZ2UgJSAoZXhwZWN0ZWQsKSwKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoLCAxLCAnMicsIDMsIGJhcj0nZm9vJworICAgICAgICApCisKKyAgICAgICAgbW9jay5mb28oMSwgJzInLCAzLCBmb289J2ZvbycpCisKKworICAgICAgICBhc3NlcnRlcnMgPSBbCisgICAgICAgICAgICBtb2NrLmZvby5hc3NlcnRfY2FsbGVkX3dpdGgsIG1vY2suZm9vLmFzc2VydF9jYWxsZWRfb25jZV93aXRoCisgICAgICAgIF0KKyAgICAgICAgZm9yIG1ldGggaW4gYXNzZXJ0ZXJzOgorICAgICAgICAgICAgYWN0dWFsID0gImZvbygxLCAnMicsIDMsIGZvbz0nZm9vJykiCisgICAgICAgICAgICBleHBlY3RlZCA9ICJmb28oMSwgJzInLCAzLCBiYXI9J2ZvbycpIgorICAgICAgICAgICAgbWVzc2FnZSA9ICdFeHBlY3RlZCBjYWxsOiAlc1xuQWN0dWFsIGNhbGw6ICVzJworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNXaXRoTXNnKAorICAgICAgICAgICAgICAgIEFzc2VydGlvbkVycm9yLCBtZXNzYWdlICUgKGV4cGVjdGVkLCBhY3R1YWwpLAorICAgICAgICAgICAgICAgIG1ldGgsIDEsICcyJywgMywgYmFyPSdmb28nCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBqdXN0IGt3YXJncworICAgICAgICBmb3IgbWV0aCBpbiBhc3NlcnRlcnM6CisgICAgICAgICAgICBhY3R1YWwgPSAiZm9vKDEsICcyJywgMywgZm9vPSdmb28nKSIKKyAgICAgICAgICAgIGV4cGVjdGVkID0gImZvbyhiYXI9J2ZvbycpIgorICAgICAgICAgICAgbWVzc2FnZSA9ICdFeHBlY3RlZCBjYWxsOiAlc1xuQWN0dWFsIGNhbGw6ICVzJworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNXaXRoTXNnKAorICAgICAgICAgICAgICAgIEFzc2VydGlvbkVycm9yLCBtZXNzYWdlICUgKGV4cGVjdGVkLCBhY3R1YWwpLAorICAgICAgICAgICAgICAgIG1ldGgsIGJhcj0nZm9vJworICAgICAgICAgICAgKQorCisgICAgICAgICMganVzdCBhcmdzCisgICAgICAgIGZvciBtZXRoIGluIGFzc2VydGVyczoKKyAgICAgICAgICAgIGFjdHVhbCA9ICJmb28oMSwgJzInLCAzLCBmb289J2ZvbycpIgorICAgICAgICAgICAgZXhwZWN0ZWQgPSAiZm9vKDEsIDIsIDMpIgorICAgICAgICAgICAgbWVzc2FnZSA9ICdFeHBlY3RlZCBjYWxsOiAlc1xuQWN0dWFsIGNhbGw6ICVzJworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNXaXRoTXNnKAorICAgICAgICAgICAgICAgIEFzc2VydGlvbkVycm9yLCBtZXNzYWdlICUgKGV4cGVjdGVkLCBhY3R1YWwpLAorICAgICAgICAgICAgICAgIG1ldGgsIDEsIDIsIDMKKyAgICAgICAgICAgICkKKworICAgICAgICAjIGVtcHR5CisgICAgICAgIGZvciBtZXRoIGluIGFzc2VydGVyczoKKyAgICAgICAgICAgIGFjdHVhbCA9ICJmb28oMSwgJzInLCAzLCBmb289J2ZvbycpIgorICAgICAgICAgICAgZXhwZWN0ZWQgPSAiZm9vKCkiCisgICAgICAgICAgICBtZXNzYWdlID0gJ0V4cGVjdGVkIGNhbGw6ICVzXG5BY3R1YWwgY2FsbDogJXMnCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1dpdGhNc2coCisgICAgICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsIG1lc3NhZ2UgJSAoZXhwZWN0ZWQsIGFjdHVhbCksIG1ldGgKKyAgICAgICAgICAgICkKKworCisgICAgZGVmIHRlc3RfbW9ja19jYWxscyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisKKyAgICAgICAgIyBuZWVkIHRvIGRvIHRoaXMgYmVjYXVzZSBNYWdpY01vY2subW9ja19jYWxscyB1c2VkIHRvIGp1c3QgcmV0dXJuCisgICAgICAgICMgYSBNYWdpY01vY2sgd2hpY2ggYWxzbyByZXR1cm5lZCBhIE1hZ2ljTW9jayB3aGVuIF9fZXFfXyB3YXMgY2FsbGVkCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9jay5tb2NrX2NhbGxzID09IFtdLCBUcnVlKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrKCkKKyAgICAgICAgZXhwZWN0ZWQgPSBbKCcnLCAoKSwge30pXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgZXhwZWN0ZWQpCisKKyAgICAgICAgbW9jay5mb28oKQorICAgICAgICBleHBlY3RlZC5hcHBlbmQoY2FsbC5mb28oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIGV4cGVjdGVkKQorICAgICAgICAjIGludGVybWVkaWF0ZSBtb2NrX2NhbGxzIHdvcmsgdG9vCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5mb28ubW9ja19jYWxscywgWygnJywgKCksIHt9KV0pCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIG1vY2soKS5mb28oMSwgMiwgMywgYT00LCBiPTUpCisgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgKCcnLCAoKSwge30pLCAoJygpLmZvbycsICgxLCAyLCAzKSwgZGljdChhPTQsIGI9NSkpCisgICAgICAgIF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sucmV0dXJuX3ZhbHVlLmZvby5tb2NrX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsoJycsICgxLCAyLCAzKSwgZGljdChhPTQsIGI9NSkpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnJldHVybl92YWx1ZS5tb2NrX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2ZvbycsICgxLCAyLCAzKSwgZGljdChhPTQsIGI9NSkpXSkKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgbW9jaygpLmZvby5iYXIoKS5iYXooKQorICAgICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICgnJywgKCksIHt9KSwgKCcoKS5mb28uYmFyJywgKCksIHt9KSwKKyAgICAgICAgICAgICgnKCkuZm9vLmJhcigpLmJheicsICgpLCB7fSkKKyAgICAgICAgXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbC5mb28uYmFyKCkuYmF6KCkuY2FsbF9saXN0KCkpCisKKyAgICAgICAgZm9yIGt3YXJncyBpbiBkaWN0KCksIGRpY3QobmFtZT0nYmFyJyk6CisgICAgICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCoqa3dhcmdzKQorICAgICAgICAgICAgaW50KG1vY2suZm9vKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBbKCdmb28uX19pbnRfXycsICgpLCB7fSldCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgZXhwZWN0ZWQpCisKKyAgICAgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKiprd2FyZ3MpCisgICAgICAgICAgICBtb2NrLmEoKSgpCisgICAgICAgICAgICBleHBlY3RlZCA9IFsoJ2EnLCAoKSwge30pLCAoJ2EoKScsICgpLCB7fSldCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgZXhwZWN0ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suYSgpLm1vY2tfY2FsbHMsIFtjYWxsKCldKQorCisgICAgICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCoqa3dhcmdzKQorICAgICAgICAgICAgbW9jaygxKSgyKSgzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIGNhbGwoMSkoMikoMykuY2FsbF9saXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKS5tb2NrX2NhbGxzLCBjYWxsKDIpKDMpLmNhbGxfbGlzdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCkoKS5tb2NrX2NhbGxzLCBjYWxsKDMpLmNhbGxfbGlzdCgpKQorCisgICAgICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCoqa3dhcmdzKQorICAgICAgICAgICAgbW9jaygxKSgyKSgzKS5hLmIuYyg0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwoMSkoMikoMykuYS5iLmMoNCkuY2FsbF9saXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKS5tb2NrX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsKDIpKDMpLmEuYi5jKDQpLmNhbGxfbGlzdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCkoKS5tb2NrX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsKDMpLmEuYi5jKDQpLmNhbGxfbGlzdCgpKQorCisgICAgICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCoqa3dhcmdzKQorICAgICAgICAgICAgaW50KG1vY2soKS5mb28uYmFyKCkuYmF6KCkpCisgICAgICAgICAgICBsYXN0X2NhbGwgPSAoJygpLmZvby5iYXIoKS5iYXooKS5fX2ludF9fJywgKCksIHt9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHNbLTFdLCBsYXN0X2NhbGwpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKS5tb2NrX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsLmZvby5iYXIoKS5iYXooKS5fX2ludF9fKCkuY2FsbF9saXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKS5mb28uYmFyKCkubW9ja19jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbC5iYXooKS5fX2ludF9fKCkuY2FsbF9saXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKS5mb28uYmFyKCkuYmF6Lm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwoKS5fX2ludF9fKCkuY2FsbF9saXN0KCkpCisKKworICAgIGRlZiB0ZXN0X3N1YmNsYXNzaW5nKHNlbGYpOgorICAgICAgICBjbGFzcyBTdWJjbGFzcyhNb2NrKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtb2NrID0gU3ViY2xhc3MoKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jay5mb28sIFN1YmNsYXNzKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jaygpLCBTdWJjbGFzcykKKworICAgICAgICBjbGFzcyBTdWJjbGFzcyhNb2NrKToKKyAgICAgICAgICAgIGRlZiBfZ2V0X2NoaWxkX21vY2soc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIHJldHVybiBNb2NrKCoqa3dhcmdzKQorCisgICAgICAgIG1vY2sgPSBTdWJjbGFzcygpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShtb2NrLmZvbywgU3ViY2xhc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShtb2NrKCksIFN1YmNsYXNzKQorCisKKyAgICBkZWYgdGVzdF9hcmdfbGlzdHMoc2VsZik6CisgICAgICAgIG1vY2tzID0gWworICAgICAgICAgICAgTW9jaygpLAorICAgICAgICAgICAgTWFnaWNNb2NrKCksCisgICAgICAgICAgICBOb25DYWxsYWJsZU1vY2soKSwKKyAgICAgICAgICAgIE5vbkNhbGxhYmxlTWFnaWNNb2NrKCkKKyAgICAgICAgXQorCisgICAgICAgIGRlZiBhc3NlcnRfYXR0cnMobW9jayk6CisgICAgICAgICAgICBuYW1lcyA9ICdjYWxsX2FyZ3NfbGlzdCcsICdtZXRob2RfY2FsbHMnLCAnbW9ja19jYWxscycKKyAgICAgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgorICAgICAgICAgICAgICAgIGF0dHIgPSBnZXRhdHRyKG1vY2ssIG5hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGF0dHIsIF9DYWxsTGlzdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYXR0ciwgbGlzdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0dHIsIFtdKQorCisgICAgICAgIGZvciBtb2NrIGluIG1vY2tzOgorICAgICAgICAgICAgYXNzZXJ0X2F0dHJzKG1vY2spCisKKyAgICAgICAgICAgIGlmIGNhbGxhYmxlKG1vY2spOgorICAgICAgICAgICAgICAgIG1vY2soKQorICAgICAgICAgICAgICAgIG1vY2soMSwgMikKKyAgICAgICAgICAgICAgICBtb2NrKGE9MykKKworICAgICAgICAgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisgICAgICAgICAgICAgICAgYXNzZXJ0X2F0dHJzKG1vY2spCisKKyAgICAgICAgICAgIG1vY2suZm9vKCkKKyAgICAgICAgICAgIG1vY2suZm9vLmJhcigxLCBhPTMpCisgICAgICAgICAgICBtb2NrLmZvbygxKS5iYXIoKS5iYXooMykKKworICAgICAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKyAgICAgICAgICAgIGFzc2VydF9hdHRycyhtb2NrKQorCisKKyAgICBkZWYgdGVzdF9jYWxsX2FyZ3NfdHdvX3R1cGxlKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soMSwgYT0zKQorICAgICAgICBtb2NrKDIsIGI9NCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtb2NrLmNhbGxfYXJncyksIDIpCisgICAgICAgIGFyZ3MsIGt3YXJncyA9IG1vY2suY2FsbF9hcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKDIsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrd2FyZ3MsIGRpY3QoYj00KSkKKworICAgICAgICBleHBlY3RlZF9saXN0ID0gWygoMSwpLCBkaWN0KGE9MykpLCAoKDIsKSwgZGljdChiPTQpKV0KKyAgICAgICAgZm9yIGV4cGVjdGVkLCBjYWxsX2FyZ3MgaW4gemlwKGV4cGVjdGVkX2xpc3QsIG1vY2suY2FsbF9hcmdzX2xpc3QpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2FsbF9hcmdzKSwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRbMF0sIGNhbGxfYXJnc1swXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRbMV0sIGNhbGxfYXJnc1sxXSkKKworCisgICAgZGVmIHRlc3Rfc2lkZV9lZmZlY3RfaXRlcmF0b3Ioc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PWl0ZXIoWzEsIDIsIDNdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbW9jaygpLCBtb2NrKCksIG1vY2soKV0sIFsxLCAyLCAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbW9jaykKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKHNpZGVfZWZmZWN0PVsnYScsICdiJywgJ2MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbW9jaygpLCBtb2NrKCksIG1vY2soKV0sIFsnYScsICdiJywgJ2MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbW9jaykKKworICAgICAgICBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD0nZ2hpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbW9jaygpLCBtb2NrKCksIG1vY2soKV0sIFsnZycsICdoJywgJ2knXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbW9jaykKKworICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jayhzaWRlX2VmZmVjdD1Gb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrKCksIEZvbykKKworICAgICAgICBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1JdGVyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW21vY2soKSwgbW9jaygpLCBtb2NrKCksIG1vY2soKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgWyd0aGlzJywgJ2lzJywgJ2FuJywgJ2l0ZXInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbW9jaykKKworCisgICAgZGVmIHRlc3Rfc2lkZV9lZmZlY3RfaXRlcmF0b3JfZXhjZXB0aW9ucyhzZWxmKToKKyAgICAgICAgZm9yIEtsYXNzIGluIE1vY2ssIE1hZ2ljTW9jazoKKyAgICAgICAgICAgIGl0ZXJhYmxlID0gKFZhbHVlRXJyb3IsIDMsIEtleUVycm9yLCA2KQorICAgICAgICAgICAgbSA9IEtsYXNzKHNpZGVfZWZmZWN0PWl0ZXJhYmxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSgpLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIG0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0oKSwgNikKKworCisgICAgZGVmIHRlc3Rfc2lkZV9lZmZlY3Rfc2V0dGluZ19pdGVyYXRvcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnNpZGVfZWZmZWN0ID0gaXRlcihbMSwgMiwgM10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW21vY2soKSwgbW9jaygpLCBtb2NrKCldLCBbMSwgMiwgM10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG1vY2spCisgICAgICAgIHNpZGVfZWZmZWN0ID0gbW9jay5zaWRlX2VmZmVjdAorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2lkZV9lZmZlY3QsIHR5cGUoaXRlcihbXSkpKQorCisgICAgICAgIG1vY2suc2lkZV9lZmZlY3QgPSBbJ2EnLCAnYicsICdjJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbW9jaygpLCBtb2NrKCksIG1vY2soKV0sIFsnYScsICdiJywgJ2MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbW9jaykKKyAgICAgICAgc2lkZV9lZmZlY3QgPSBtb2NrLnNpZGVfZWZmZWN0CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzaWRlX2VmZmVjdCwgdHlwZShpdGVyKFtdKSkpCisKKyAgICAgICAgdGhpc19pdGVyID0gSXRlcigpCisgICAgICAgIG1vY2suc2lkZV9lZmZlY3QgPSB0aGlzX2l0ZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbW9jaygpLCBtb2NrKCksIG1vY2soKSwgbW9jaygpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ3RoaXMnLCAnaXMnLCAnYW4nLCAnaXRlciddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydElzKG1vY2suc2lkZV9lZmZlY3QsIHRoaXNfaXRlcikKKworCisgICAgZGVmIHRlc3RfYXNzZXJ0X2hhc19jYWxsc19hbnlfb3JkZXIoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jaygxLCAyKQorICAgICAgICBtb2NrKGE9MykKKyAgICAgICAgbW9jaygzLCA0KQorICAgICAgICBtb2NrKGI9NikKKyAgICAgICAgbW9jayhiPTYpCisKKyAgICAgICAga2FsbHMgPSBbCisgICAgICAgICAgICBjYWxsKDEsIDIpLCAoeydhJzogM30sKSwKKyAgICAgICAgICAgICgoMywgNCksKSwgKCgpLCB7J2EnOiAzfSksCisgICAgICAgICAgICAoJycsICgxLCAyKSksICgnJywgeydhJzogM30pLAorICAgICAgICAgICAgKCcnLCAoMSwgMiksIHt9KSwgKCcnLCAoKSwgeydhJzogM30pCisgICAgICAgIF0KKyAgICAgICAgZm9yIGthbGwgaW4ga2FsbHM6CisgICAgICAgICAgICBtb2NrLmFzc2VydF9oYXNfY2FsbHMoW2thbGxdLCBhbnlfb3JkZXI9VHJ1ZSkKKworICAgICAgICBmb3Iga2FsbCBpbiBjYWxsKDEsICcyJyksIGNhbGwoYj0zKSwgY2FsbCgpLCAzLCBOb25lLCAnZm9vJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgIEFzc2VydGlvbkVycm9yLCBtb2NrLmFzc2VydF9oYXNfY2FsbHMsCisgICAgICAgICAgICAgICAgW2thbGxdLCBhbnlfb3JkZXI9VHJ1ZQorICAgICAgICAgICAgKQorCisgICAgICAgIGthbGxfbGlzdHMgPSBbCisgICAgICAgICAgICBbY2FsbCgxLCAyKSwgY2FsbChiPTYpXSwKKyAgICAgICAgICAgIFtjYWxsKDMsIDQpLCBjYWxsKDEsIDIpXSwKKyAgICAgICAgICAgIFtjYWxsKGI9NiksIGNhbGwoYj02KV0sCisgICAgICAgIF0KKworICAgICAgICBmb3Iga2FsbF9saXN0IGluIGthbGxfbGlzdHM6CisgICAgICAgICAgICBtb2NrLmFzc2VydF9oYXNfY2FsbHMoa2FsbF9saXN0LCBhbnlfb3JkZXI9VHJ1ZSkKKworICAgICAgICBrYWxsX2xpc3RzID0gWworICAgICAgICAgICAgW2NhbGwoYj02KSwgY2FsbChiPTYpLCBjYWxsKGI9NildLAorICAgICAgICAgICAgW2NhbGwoMSwgMiksIGNhbGwoMSwgMildLAorICAgICAgICAgICAgW2NhbGwoMywgNCksIGNhbGwoMSwgMiksIGNhbGwoNSwgNyldLAorICAgICAgICAgICAgW2NhbGwoYj02KSwgY2FsbCgzLCA0KSwgY2FsbChiPTYpLCBjYWxsKDEsIDIpLCBjYWxsKGI9NildLAorICAgICAgICBdCisgICAgICAgIGZvciBrYWxsX2xpc3QgaW4ga2FsbF9saXN0czoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgIEFzc2VydGlvbkVycm9yLCBtb2NrLmFzc2VydF9oYXNfY2FsbHMsCisgICAgICAgICAgICAgICAga2FsbF9saXN0LCBhbnlfb3JkZXI9VHJ1ZQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfYXNzZXJ0X2hhc19jYWxscyhzZWxmKToKKyAgICAgICAga2FsbHMxID0gWworICAgICAgICAgICAgICAgIGNhbGwoMSwgMiksICh7J2EnOiAzfSwpLAorICAgICAgICAgICAgICAgICgoMywgNCksKSwgY2FsbChiPTYpLAorICAgICAgICAgICAgICAgICgnJywgKDEsKSwgeydiJzogNn0pLAorICAgICAgICBdCisgICAgICAgIGthbGxzMiA9IFtjYWxsLmZvbygpLCBjYWxsLmJhcigxKV0KKyAgICAgICAga2FsbHMyLmV4dGVuZChjYWxsLnNwYW0oKS5iYXooYT0zKS5jYWxsX2xpc3QoKSkKKyAgICAgICAga2FsbHMyLmV4dGVuZChjYWxsLmJhbShzZXQoKSwgZm9vPXt9KS5maXNoKFsxXSkuY2FsbF9saXN0KCkpCisKKyAgICAgICAgbW9ja3MgPSBbXQorICAgICAgICBmb3IgbW9jayBpbiBNb2NrKCksIE1hZ2ljTW9jaygpOgorICAgICAgICAgICAgbW9jaygxLCAyKQorICAgICAgICAgICAgbW9jayhhPTMpCisgICAgICAgICAgICBtb2NrKDMsIDQpCisgICAgICAgICAgICBtb2NrKGI9NikKKyAgICAgICAgICAgIG1vY2soMSwgYj02KQorICAgICAgICAgICAgbW9ja3MuYXBwZW5kKChtb2NrLCBrYWxsczEpKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5mb28oKQorICAgICAgICBtb2NrLmJhcigxKQorICAgICAgICBtb2NrLnNwYW0oKS5iYXooYT0zKQorICAgICAgICBtb2NrLmJhbShzZXQoKSwgZm9vPXt9KS5maXNoKFsxXSkKKyAgICAgICAgbW9ja3MuYXBwZW5kKChtb2NrLCBrYWxsczIpKQorCisgICAgICAgIGZvciBtb2NrLCBrYWxscyBpbiBtb2NrczoKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihrYWxscykpOgorICAgICAgICAgICAgICAgIGZvciBzdGVwIGluIDEsIDIsIDM6CisgICAgICAgICAgICAgICAgICAgIHRoZXNlID0ga2FsbHNbaTppK3N0ZXBdCisgICAgICAgICAgICAgICAgICAgIG1vY2suYXNzZXJ0X2hhc19jYWxscyh0aGVzZSkKKworICAgICAgICAgICAgICAgICAgICBpZiBsZW4odGhlc2UpID4gMToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzc2VydGlvbkVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2suYXNzZXJ0X2hhc19jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHJldmVyc2VkKHRoZXNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKworCisgICAgZGVmIHRlc3RfYXNzZXJ0X2FueV9jYWxsKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soMSwgMikKKyAgICAgICAgbW9jayhhPTMpCisgICAgICAgIG1vY2soMSwgYj02KQorCisgICAgICAgIG1vY2suYXNzZXJ0X2FueV9jYWxsKDEsIDIpCisgICAgICAgIG1vY2suYXNzZXJ0X2FueV9jYWxsKGE9MykKKyAgICAgICAgbW9jay5hc3NlcnRfYW55X2NhbGwoMSwgYj02KQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICBtb2NrLmFzc2VydF9hbnlfY2FsbAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICBtb2NrLmFzc2VydF9hbnlfY2FsbCwKKyAgICAgICAgICAgIDEsIDMKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIEFzc2VydGlvbkVycm9yLAorICAgICAgICAgICAgbW9jay5hc3NlcnRfYW55X2NhbGwsCisgICAgICAgICAgICBhPTQKKyAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9tb2NrX2NhbGxzX2NyZWF0ZV9hdXRvc3BlYyhzZWxmKToKKyAgICAgICAgZGVmIGYoYSwgYik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIG9iaiA9IEl0ZXIoKQorICAgICAgICBvYmouZiA9IGYKKworICAgICAgICBmdW5jcyA9IFsKKyAgICAgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhmKSwKKyAgICAgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhvYmopLmYKKyAgICAgICAgXQorICAgICAgICBmb3IgZnVuYyBpbiBmdW5jczoKKyAgICAgICAgICAgIGZ1bmMoMSwgMikKKyAgICAgICAgICAgIGZ1bmMoMywgNCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBmdW5jLm1vY2tfY2FsbHMsIFtjYWxsKDEsIDIpLCBjYWxsKDMsIDQpXQorICAgICAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9tb2NrX2FkZF9zcGVjKHNlbGYpOgorICAgICAgICBjbGFzcyBfT25lKG9iamVjdCk6CisgICAgICAgICAgICBvbmUgPSAxCisgICAgICAgIGNsYXNzIF9Ud28ob2JqZWN0KToKKyAgICAgICAgICAgIHR3byA9IDIKKyAgICAgICAgY2xhc3MgQW55dGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIG9uZSA9IHR3byA9IHRocmVlID0gJ2ZvdXInCisKKyAgICAgICAga2xhc3NlcyA9IFsKKyAgICAgICAgICAgIE1vY2ssIE1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jaworICAgICAgICBdCisgICAgICAgIGZvciBLbGFzcyBpbiBsaXN0KGtsYXNzZXMpOgorICAgICAgICAgICAga2xhc3Nlcy5hcHBlbmQobGFtYmRhIEs9S2xhc3M6IEsoc3BlYz1Bbnl0aGluZykpCisgICAgICAgICAgICBrbGFzc2VzLmFwcGVuZChsYW1iZGEgSz1LbGFzczogSyhzcGVjX3NldD1Bbnl0aGluZykpCisKKyAgICAgICAgZm9yIEtsYXNzIGluIGtsYXNzZXM6CisgICAgICAgICAgICBmb3Iga3dhcmdzIGluIGRpY3QoKSwgZGljdChzcGVjX3NldD1UcnVlKToKKyAgICAgICAgICAgICAgICBtb2NrID0gS2xhc3MoKQorICAgICAgICAgICAgICAgICNubyBlcnJvcgorICAgICAgICAgICAgICAgIG1vY2sub25lLCBtb2NrLnR3bywgbW9jay50aHJlZQorCisgICAgICAgICAgICAgICAgZm9yIE9uZSwgVHdvIGluIFsoX09uZSwgX1R3byksIChbJ29uZSddLCBbJ3R3byddKV06CisgICAgICAgICAgICAgICAgICAgIGZvciBrd2FyZ3MgaW4gZGljdCgpLCBkaWN0KHNwZWNfc2V0PVRydWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5tb2NrX2FkZF9zcGVjKE9uZSwgKiprd2FyZ3MpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vY2sub25lCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jaywgJ3R3bycKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAndGhyZWUnCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAnc3BlY19zZXQnIGluIGt3YXJnczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIG1vY2ssICd0aHJlZScsIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vY2subW9ja19hZGRfc3BlYyhUd28sICoqa3dhcmdzKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2ssICdvbmUnCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLnR3bworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2ssICd0aHJlZScKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICdzcGVjX3NldCcgaW4ga3dhcmdzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgbW9jaywgJ3RocmVlJywgTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICMgbm90ZSB0aGF0IGNyZWF0aW5nIGEgbW9jaywgc2V0dGluZyBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGFuZAorICAgICAgICAgICAgIyAqdGhlbiogc2V0dGluZyBhIHNwZWMgZG9lc24ndCB3b3JrLiBOb3QgdGhlIGludGVuZGVkIHVzZSBjYXNlCisKKworICAgIGRlZiB0ZXN0X21vY2tfYWRkX3NwZWNfbWFnaWNfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgZm9yIEtsYXNzIGluIE1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNYWdpY01vY2s6CisgICAgICAgICAgICBtb2NrID0gS2xhc3MoKQorICAgICAgICAgICAgaW50KG1vY2spCisKKyAgICAgICAgICAgIG1vY2subW9ja19hZGRfc3BlYyhvYmplY3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGludCwgbW9jaykKKworICAgICAgICAgICAgbW9jayA9IEtsYXNzKCkKKyAgICAgICAgICAgIG1vY2tbJ2ZvbyddCisgICAgICAgICAgICBtb2NrLl9faW50X18ucmV0dXJuX3ZhbHVlID00CisKKyAgICAgICAgICAgIG1vY2subW9ja19hZGRfc3BlYyhpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChtb2NrKSwgNCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBtb2NrWydmb28nXSkKKworCisgICAgZGVmIHRlc3RfYWRkaW5nX2NoaWxkX21vY2soc2VsZik6CisgICAgICAgIGZvciBLbGFzcyBpbiBOb25DYWxsYWJsZU1vY2ssIE1vY2ssIE1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNYWdpY01vY2s6CisgICAgICAgICAgICBtb2NrID0gS2xhc3MoKQorCisgICAgICAgICAgICBtb2NrLmZvbyA9IE1vY2soKQorICAgICAgICAgICAgbW9jay5mb28oKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbY2FsbC5mb28oKV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgW2NhbGwuZm9vKCldKQorCisgICAgICAgICAgICBtb2NrID0gS2xhc3MoKQorICAgICAgICAgICAgbW9jay5iYXIgPSBNb2NrKG5hbWU9J25hbWUnKQorICAgICAgICAgICAgbW9jay5iYXIoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgW10pCisKKyAgICAgICAgICAgICMgbW9jayB3aXRoIGFuIGV4aXN0aW5nIF9uZXdfcGFyZW50IGJ1dCBubyBuYW1lCisgICAgICAgICAgICBtb2NrID0gS2xhc3MoKQorICAgICAgICAgICAgbW9jay5iYXogPSBNYWdpY01vY2soKSgpCisgICAgICAgICAgICBtb2NrLmJheigpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBbXSkKKworCisgICAgZGVmIHRlc3RfYWRkaW5nX3JldHVybl92YWx1ZV9tb2NrKHNlbGYpOgorICAgICAgICBmb3IgS2xhc3MgaW4gTW9jaywgTWFnaWNNb2NrOgorICAgICAgICAgICAgbW9jayA9IEtsYXNzKCkKKyAgICAgICAgICAgIG1vY2sucmV0dXJuX3ZhbHVlID0gTWFnaWNNb2NrKCkKKworICAgICAgICAgICAgbW9jaygpKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBbY2FsbCgpLCBjYWxsKCkoKV0pCisKKworICAgIGRlZiB0ZXN0X21hbmFnZXJfbW9jayhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBvbmUgPSAnb25lJworICAgICAgICAgICAgdHdvID0gJ3R3bycKKyAgICAgICAgbWFuYWdlciA9IE1vY2soKQorICAgICAgICBwMSA9IHBhdGNoLm9iamVjdChGb28sICdvbmUnKQorICAgICAgICBwMiA9IHBhdGNoLm9iamVjdChGb28sICd0d28nKQorCisgICAgICAgIG1vY2tfb25lID0gcDEuc3RhcnQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocDEuc3RvcCkKKyAgICAgICAgbW9ja190d28gPSBwMi5zdGFydCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwMi5zdG9wKQorCisgICAgICAgIG1hbmFnZXIuYXR0YWNoX21vY2sobW9ja19vbmUsICdvbmUnKQorICAgICAgICBtYW5hZ2VyLmF0dGFjaF9tb2NrKG1vY2tfdHdvLCAndHdvJykKKworICAgICAgICBGb28udHdvKCkKKyAgICAgICAgRm9vLm9uZSgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5hZ2VyLm1vY2tfY2FsbHMsIFtjYWxsLnR3bygpLCBjYWxsLm9uZSgpXSkKKworCisgICAgZGVmIHRlc3RfbWFnaWNfbWV0aG9kc19tb2NrX2NhbGxzKHNlbGYpOgorICAgICAgICBmb3IgS2xhc3MgaW4gTW9jaywgTWFnaWNNb2NrOgorICAgICAgICAgICAgbSA9IEtsYXNzKCkKKyAgICAgICAgICAgIG0uX19pbnRfXyA9IE1vY2socmV0dXJuX3ZhbHVlPTMpCisgICAgICAgICAgICBtLl9fZmxvYXRfXyA9IE1hZ2ljTW9jayhyZXR1cm5fdmFsdWU9My4wKQorICAgICAgICAgICAgaW50KG0pCisgICAgICAgICAgICBmbG9hdChtKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubW9ja19jYWxscywgW2NhbGwuX19pbnRfXygpLCBjYWxsLl9fZmxvYXRfXygpXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tZXRob2RfY2FsbHMsIFtdKQorCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVfZGVsZXRpb24oc2VsZik6CisgICAgICAgICMgdGhpcyBiZWhhdmlvdXIgaXNuJ3QgKnVzZWZ1bCosIGJ1dCBhdCBsZWFzdCBpdCdzIG5vdyB0ZXN0ZWQuLi4KKyAgICAgICAgZm9yIEtsYXNzIGluIE1vY2ssIE1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNYWdpY01vY2ssIE5vbkNhbGxhYmxlTW9jazoKKyAgICAgICAgICAgIG0gPSBLbGFzcygpCisgICAgICAgICAgICBvcmlnaW5hbCA9IG0uZm9vCisgICAgICAgICAgICBtLmZvbyA9IDMKKyAgICAgICAgICAgIGRlbCBtLmZvbworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmZvbywgb3JpZ2luYWwpCisKKyAgICAgICAgICAgIG5ldyA9IG0uZm9vID0gTW9jaygpCisgICAgICAgICAgICBkZWwgbS5mb28KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5mb28sIG5ldykKKworCisgICAgZGVmIHRlc3RfbW9ja19wYXJlbnRzKHNlbGYpOgorICAgICAgICBmb3IgS2xhc3MgaW4gTW9jaywgTWFnaWNNb2NrOgorICAgICAgICAgICAgbSA9IEtsYXNzKCkKKyAgICAgICAgICAgIG9yaWdpbmFsX3JlcHIgPSByZXByKG0pCisgICAgICAgICAgICBtLnJldHVybl92YWx1ZSA9IG0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobSgpLCBtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0pLCBvcmlnaW5hbF9yZXByKQorCisgICAgICAgICAgICBtLnJlc2V0X21vY2soKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtKCksIG0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksIG9yaWdpbmFsX3JlcHIpCisKKyAgICAgICAgICAgIG0gPSBLbGFzcygpCisgICAgICAgICAgICBtLmIgPSBtLmEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5hbWU9J21vY2suYSciLCByZXByKG0uYikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJuYW1lPSdtb2NrLmEnIiwgcmVwcihtLmEpKQorICAgICAgICAgICAgbS5yZXNldF9tb2NrKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5hbWU9J21vY2suYSciLCByZXByKG0uYikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJuYW1lPSdtb2NrLmEnIiwgcmVwcihtLmEpKQorCisgICAgICAgICAgICBtID0gS2xhc3MoKQorICAgICAgICAgICAgb3JpZ2luYWxfcmVwciA9IHJlcHIobSkKKyAgICAgICAgICAgIG0uYSA9IG0oKQorICAgICAgICAgICAgbS5hLnJldHVybl92YWx1ZSA9IG0KKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0pLCBvcmlnaW5hbF9yZXByKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0uYSgpKSwgb3JpZ2luYWxfcmVwcikKKworCisgICAgZGVmIHRlc3RfYXR0YWNoX21vY2soc2VsZik6CisgICAgICAgIGNsYXNzZXMgPSBNb2NrLCBNYWdpY01vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1vY2sKKyAgICAgICAgZm9yIEtsYXNzIGluIGNsYXNzZXM6CisgICAgICAgICAgICBmb3IgS2xhc3MyIGluIGNsYXNzZXM6CisgICAgICAgICAgICAgICAgbSA9IEtsYXNzKCkKKworICAgICAgICAgICAgICAgIG0yID0gS2xhc3MyKG5hbWU9J2ZvbycpCisgICAgICAgICAgICAgICAgbS5hdHRhY2hfbW9jayhtMiwgJ2JhcicpCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG0uYmFyLCBtMikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJuYW1lPSdtb2NrLmJhciciLCByZXByKG0yKSkKKworICAgICAgICAgICAgICAgIG0uYmFyLmJheigxKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tb2NrX2NhbGxzLCBbY2FsbC5iYXIuYmF6KDEpXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubWV0aG9kX2NhbGxzLCBbY2FsbC5iYXIuYmF6KDEpXSkKKworCisgICAgZGVmIHRlc3RfYXR0YWNoX21vY2tfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICBjbGFzc2VzID0gTW9jaywgTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNb2NrCisgICAgICAgIGZvciBLbGFzcyBpbiBNb2NrLCBNYWdpY01vY2s6CisgICAgICAgICAgICBmb3IgS2xhc3MyIGluIGNsYXNzZXM6CisgICAgICAgICAgICAgICAgbSA9IEtsYXNzKCkKKworICAgICAgICAgICAgICAgIG0yID0gS2xhc3MyKG5hbWU9J2ZvbycpCisgICAgICAgICAgICAgICAgbS5hdHRhY2hfbW9jayhtMiwgJ3JldHVybl92YWx1ZScpCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG0oKSwgbTIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibmFtZT0nbW9jaygpJyIsIHJlcHIobTIpKQorCisgICAgICAgICAgICAgICAgbTIuZm9vKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubW9ja19jYWxscywgY2FsbCgpLmZvbygpLmNhbGxfbGlzdCgpKQorCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVfZGVsZXRpb24oc2VsZik6CisgICAgICAgIGZvciBtb2NrIGluIE1vY2soKSwgTWFnaWNNb2NrKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2NrLCAnbScpKQorCisgICAgICAgICAgICBkZWwgbW9jay5tCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9jaywgJ20nKSkKKworICAgICAgICAgICAgZGVsIG1vY2suZgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vY2ssICdmJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jaywgJ2YnKQorCisKKyAgICBkZWYgdGVzdF9jbGFzc19hc3NpZ25hYmxlKHNlbGYpOgorICAgICAgICBmb3IgbW9jayBpbiBNb2NrKCksIE1hZ2ljTW9jaygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKG1vY2ssIGludCkKKworICAgICAgICAgICAgbW9jay5fX2NsYXNzX18gPSBpbnQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLCBpbnQpCisgICAgICAgICAgICBtb2NrLmZvbworCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RwYXRjaC5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RwYXRjaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTA5MWI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5CkBAIC0wLDAgKzEsMTc4NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDctMjAxMiBNaWNoYWVsIEZvb3JkICYgdGhlIG1vY2sgdGVhbQorIyBFLW1haWw6IGZ1enp5bWFuIEFUIHZvaWRzcGFjZSBET1Qgb3JnIERPVCB1aworIyBodHRwOi8vd3d3LnZvaWRzcGFjZS5vcmcudWsvcHl0aG9uL21vY2svCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdW5pdHRlc3QudGVzdC50ZXN0bW9jayBpbXBvcnQgc3VwcG9ydAorZnJvbSB1bml0dGVzdC50ZXN0LnRlc3Rtb2NrLnN1cHBvcnQgaW1wb3J0IFNvbWVDbGFzcywgaXNfaW5zdGFuY2UKKworZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCAoCisgICAgTm9uQ2FsbGFibGVNb2NrLCBDYWxsYWJsZU1peGluLCBwYXRjaCwgc2VudGluZWwsCisgICAgTWFnaWNNb2NrLCBNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jaywgcGF0Y2gsIF9wYXRjaCwKKyAgICBERUZBVUxULCBjYWxsLCBfZ2V0X3RhcmdldAorKQorCisKK2J1aWx0aW5fc3RyaW5nID0gJ2J1aWx0aW5zJworCitQVE1vZHVsZSA9IHN5cy5tb2R1bGVzW19fbmFtZV9fXQorTU9ETkFNRSA9ICclcy5QVE1vZHVsZScgJSBfX25hbWVfXworCisKK2RlZiBfZ2V0X3Byb3h5KG9iaiwgZ2V0X29ubHk9VHJ1ZSk6CisgICAgY2xhc3MgUHJveHkob2JqZWN0KToKKyAgICAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgorICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIob2JqLCBuYW1lKQorICAgIGlmIG5vdCBnZXRfb25seToKKyAgICAgICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgICAgIHNldGF0dHIob2JqLCBuYW1lLCB2YWx1ZSkKKyAgICAgICAgZGVmIF9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpOgorICAgICAgICAgICAgZGVsYXR0cihvYmosIG5hbWUpCisgICAgICAgIFByb3h5Ll9fc2V0YXR0cl9fID0gX19zZXRhdHRyX18KKyAgICAgICAgUHJveHkuX19kZWxhdHRyX18gPSBfX2RlbGF0dHJfXworICAgIHJldHVybiBQcm94eSgpCisKKworIyBmb3IgdXNlIGluIHRoZSB0ZXN0Citzb21ldGhpbmcgID0gc2VudGluZWwuU29tZXRoaW5nCitzb21ldGhpbmdfZWxzZSAgPSBzZW50aW5lbC5Tb21ldGhpbmdFbHNlCisKKworY2xhc3MgRm9vKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGEpOgorICAgICAgICBwYXNzCisgICAgZGVmIGYoc2VsZiwgYSk6CisgICAgICAgIHBhc3MKKyAgICBkZWYgZyhzZWxmKToKKyAgICAgICAgcGFzcworICAgIGZvbyA9ICdiYXInCisKKyAgICBjbGFzcyBCYXIob2JqZWN0KToKKyAgICAgICAgZGVmIGEoc2VsZik6CisgICAgICAgICAgICBwYXNzCisKK2Zvb19uYW1lID0gJyVzLkZvbycgJSBfX25hbWVfXworCisKK2RlZiBmdW5jdGlvbihhLCBiPUZvbyk6CisgICAgcGFzcworCisKK2NsYXNzIENvbnRhaW5lcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi52YWx1ZXMgPSB7fQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIG5hbWUpOgorICAgICAgICByZXR1cm4gc2VsZi52YWx1ZXNbbmFtZV0KKworICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgIHNlbGYudmFsdWVzW25hbWVdID0gdmFsdWUKKworICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBuYW1lKToKKyAgICAgICAgZGVsIHNlbGYudmFsdWVzW25hbWVdCisKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBpdGVyKHNlbGYudmFsdWVzKQorCisKKworY2xhc3MgUGF0Y2hUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBhc3NlcnROb3RDYWxsYWJsZShzZWxmLCBvYmosIG1hZ2ljPVRydWUpOgorICAgICAgICBNb2NrQ2xhc3MgPSBOb25DYWxsYWJsZU1hZ2ljTW9jaworICAgICAgICBpZiBub3QgbWFnaWM6CisgICAgICAgICAgICBNb2NrQ2xhc3MgPSBOb25DYWxsYWJsZU1vY2sKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9iaikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKG9iaiwgTW9ja0NsYXNzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19pbnN0YW5jZShvYmosIENhbGxhYmxlTWl4aW4pKQorCisKKyAgICBkZWYgdGVzdF9zaW5nbGVfcGF0Y2hvYmplY3Qoc2VsZik6CisgICAgICAgIGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgICAgICAgICAgYXR0cmlidXRlID0gc2VudGluZWwuT3JpZ2luYWwKKworICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWV0aGluZywgJ2F0dHJpYnV0ZScsIHNlbnRpbmVsLlBhdGNoZWQpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLlBhdGNoZWQsICJ1bnBhdGNoZWQiKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLk9yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaG9iamVjdF93aXRoX25vbmUoc2VsZik6CisgICAgICAgIGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgICAgICAgICAgYXR0cmlidXRlID0gc2VudGluZWwuT3JpZ2luYWwKKworICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWV0aGluZywgJ2F0dHJpYnV0ZScsIE5vbmUpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShTb21ldGhpbmcuYXR0cmlidXRlLCAidW5wYXRjaGVkIikKKworICAgICAgICB0ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuYXR0cmlidXRlLCBzZW50aW5lbC5PcmlnaW5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfcGF0Y2hvYmplY3Qoc2VsZik6CisgICAgICAgIGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgICAgICAgICAgYXR0cmlidXRlID0gc2VudGluZWwuT3JpZ2luYWwKKyAgICAgICAgICAgIG5leHRfYXR0cmlidXRlID0gc2VudGluZWwuT3JpZ2luYWwyCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChTb21ldGhpbmcsICdhdHRyaWJ1dGUnLCBzZW50aW5lbC5QYXRjaGVkKQorICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWV0aGluZywgJ25leHRfYXR0cmlidXRlJywgc2VudGluZWwuUGF0Y2hlZDIpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLlBhdGNoZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcubmV4dF9hdHRyaWJ1dGUsIHNlbnRpbmVsLlBhdGNoZWQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5wYXRjaGVkIikKKworICAgICAgICB0ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuYXR0cmlidXRlLCBzZW50aW5lbC5PcmlnaW5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcubmV4dF9hdHRyaWJ1dGUsIHNlbnRpbmVsLk9yaWdpbmFsMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworCisgICAgZGVmIHRlc3Rfb2JqZWN0X2xvb2t1cF9pc19xdWl0ZV9sYXp5KHNlbGYpOgorICAgICAgICBnbG9iYWwgc29tZXRoaW5nCisgICAgICAgIG9yaWdpbmFsID0gc29tZXRoaW5nCisgICAgICAgIEBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fLCBzZW50aW5lbC5Tb21ldGhpbmcyKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNvbWV0aGluZyA9IHNlbnRpbmVsLnJlcGxhY2VtZW50X3ZhbHVlCisgICAgICAgICAgICB0ZXN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBzZW50aW5lbC5yZXBsYWNlbWVudF92YWx1ZSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNvbWV0aGluZyA9IG9yaWdpbmFsCisKKworICAgIGRlZiB0ZXN0X3BhdGNoKHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXywgc2VudGluZWwuU29tZXRoaW5nMikKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5wYXRjaGVkIikKKworICAgICAgICB0ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworICAgICAgICBAcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXywgc2VudGluZWwuU29tZXRoaW5nMikKKyAgICAgICAgQHBhdGNoKCclcy5zb21ldGhpbmdfZWxzZScgJSBfX25hbWVfXywgc2VudGluZWwuU29tZXRoaW5nRWxzZSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5wYXRjaGVkIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuc29tZXRoaW5nX2Vsc2UsIHNlbnRpbmVsLlNvbWV0aGluZ0Vsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuc29tZXRoaW5nX2Vsc2UsIHNlbnRpbmVsLlNvbWV0aGluZ0Vsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisKKyAgICAgICAgIyBUZXN0IHRoZSBwYXRjaGluZyBhbmQgcmVzdG9yaW5nIHdvcmtzIGEgc2Vjb25kIHRpbWUKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmdfZWxzZSwgc2VudGluZWwuU29tZXRoaW5nRWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2sucmV0dXJuX3ZhbHVlID0gc2VudGluZWwuSGFuZGxlCisgICAgICAgIEBwYXRjaCgnJXMub3BlbicgJSBidWlsdGluX3N0cmluZywgbW9jaykKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlbignZmlsZW5hbWUnLCAncicpLCBzZW50aW5lbC5IYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcGVuIG5vdCBwYXRjaGVkIikKKyAgICAgICAgdGVzdCgpCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3BlbiwgbW9jaywgInBhdGNoIG5vdCByZXN0b3JlZCIpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2NsYXNzX2F0dHJpYnV0ZShzZWxmKToKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlJyAlIF9fbmFtZV9fLAorICAgICAgICAgICAgICAgc2VudGluZWwuQ2xhc3NBdHRyaWJ1dGUpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLlNvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbmVsLkNsYXNzQXR0cmlidXRlLCAidW5wYXRjaGVkIikKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoUFRNb2R1bGUuU29tZUNsYXNzLmNsYXNzX2F0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisKKworICAgIGRlZiB0ZXN0X3BhdGNob2JqZWN0X3dpdGhfZGVmYXVsdF9tb2NrKHNlbGYpOgorICAgICAgICBjbGFzcyBUZXN0KG9iamVjdCk6CisgICAgICAgICAgICBzb21ldGhpbmcgPSBzZW50aW5lbC5PcmlnaW5hbAorICAgICAgICAgICAgc29tZXRoaW5nMiA9IHNlbnRpbmVsLk9yaWdpbmFsMgorCisgICAgICAgIEBwYXRjaC5vYmplY3QoVGVzdCwgJ3NvbWV0aGluZycpCisgICAgICAgIGRlZiB0ZXN0KG1vY2spOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLCBUZXN0LnNvbWV0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vY2sgbm90IHBhc3NlZCBpbnRvIHRlc3QgZnVuY3Rpb24iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2ssIE1hZ2ljTW9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggd2l0aCB0d28gYXJndW1lbnRzIGRpZCBub3QgY3JlYXRlIGEgbW9jayIpCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChUZXN0LCAnc29tZXRoaW5nJykKKyAgICAgICAgQHBhdGNoLm9iamVjdChUZXN0LCAnc29tZXRoaW5nMicpCisgICAgICAgIGRlZiB0ZXN0KHRoaXMxLCB0aGlzMiwgbW9jazEsIG1vY2syKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGhpczEsIHNlbnRpbmVsLnRoaXMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGF0Y2hlZCBmdW5jdGlvbiBkaWRuJ3QgcmVjZWl2ZSBpbml0aWFsIGFyZ3VtZW50IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGhpczIsIHNlbnRpbmVsLnRoaXMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGF0Y2hlZCBmdW5jdGlvbiBkaWRuJ3QgcmVjZWl2ZSBzZWNvbmQgYXJndW1lbnQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrMSwgVGVzdC5zb21ldGhpbmcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9jayBub3QgcGFzc2VkIGludG8gdGVzdCBmdW5jdGlvbiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2syLCBUZXN0LnNvbWV0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlY29uZCBNb2NrIG5vdCBwYXNzZWQgaW50byB0ZXN0IGZ1bmN0aW9uIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrMiwgTWFnaWNNb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCB3aXRoIHR3byBhcmd1bWVudHMgZGlkIG5vdCBjcmVhdGUgYSBtb2NrIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrMiwgTWFnaWNNb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCB3aXRoIHR3byBhcmd1bWVudHMgZGlkIG5vdCBjcmVhdGUgYSBtb2NrIikKKworICAgICAgICAgICAgIyBBIGhhY2sgdG8gdGVzdCB0aGF0IG5ldyBtb2NrcyBhcmUgcGFzc2VkIHRoZSBzZWNvbmQgdGltZQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvdXRlck1vY2sxLCBtb2NrMSwgInVuZXhwZWN0ZWQgdmFsdWUgZm9yIG1vY2sxIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3V0ZXJNb2NrMiwgbW9jazIsICJ1bmV4cGVjdGVkIHZhbHVlIGZvciBtb2NrMSIpCisgICAgICAgICAgICByZXR1cm4gbW9jazEsIG1vY2syCisKKyAgICAgICAgb3V0ZXJNb2NrMSA9IG91dGVyTW9jazIgPSBOb25lCisgICAgICAgIG91dGVyTW9jazEsIG91dGVyTW9jazIgPSB0ZXN0KHNlbnRpbmVsLnRoaXMxLCBzZW50aW5lbC50aGlzMikKKworICAgICAgICAjIFRlc3QgdGhhdCBleGVjdXRpbmcgYSBzZWNvbmQgdGltZSBjcmVhdGVzIG5ldyBtb2NrcworICAgICAgICB0ZXN0KHNlbnRpbmVsLnRoaXMxLCBzZW50aW5lbC50aGlzMikKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfd2l0aF9zcGVjKHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgc3BlYz1Tb21lQ2xhc3MpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tTb21lQ2xhc3MpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MsIE1vY2tTb21lQ2xhc3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoU29tZUNsYXNzLndpYmJsZSwgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IFNvbWVDbGFzcy5ub3Rfd2liYmxlKQorCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaG9iamVjdF93aXRoX3NwZWMoc2VsZik6CisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnY2xhc3NfYXR0cmlidXRlJywgc3BlYz1Tb21lQ2xhc3MpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tBdHRyaWJ1dGUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlLCBNb2NrQXR0cmlidXRlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKFNvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUud2liYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBTb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlLm5vdF93aWJibGUpCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3dpdGhfc3BlY19hc19saXN0KHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgc3BlYz1bJ3dpYmJsZSddKQorICAgICAgICBkZWYgdGVzdChNb2NrU29tZUNsYXNzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZUNsYXNzLCBNb2NrU29tZUNsYXNzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKFNvbWVDbGFzcy53aWJibGUsIE1hZ2ljTW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBTb21lQ2xhc3Mubm90X3dpYmJsZSkKKworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hvYmplY3Rfd2l0aF9zcGVjX2FzX2xpc3Qoc2VsZik6CisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnY2xhc3NfYXR0cmlidXRlJywgc3BlYz1bJ3dpYmJsZSddKQorICAgICAgICBkZWYgdGVzdChNb2NrQXR0cmlidXRlKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZUNsYXNzLmNsYXNzX2F0dHJpYnV0ZSwgTW9ja0F0dHJpYnV0ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShTb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlLndpYmJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hZ2ljTW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYTogU29tZUNsYXNzLmNsYXNzX2F0dHJpYnV0ZS5ub3Rfd2liYmxlKQorCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9uZXN0ZWRfcGF0Y2hfd2l0aF9zcGVjX2FzX2xpc3Qoc2VsZik6CisgICAgICAgICMgcmVncmVzc2lvbiB0ZXN0IGZvciBuZXN0ZWQgZGVjb3JhdG9ycworICAgICAgICBAcGF0Y2goJyVzLm9wZW4nICUgYnVpbHRpbl9zdHJpbmcpCisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBzcGVjPVsnd2liYmxlJ10pCisgICAgICAgIGRlZiB0ZXN0KE1vY2tTb21lQ2xhc3MsIE1vY2tPcGVuKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZUNsYXNzLCBNb2NrU29tZUNsYXNzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKFNvbWVDbGFzcy53aWJibGUsIE1hZ2ljTW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBTb21lQ2xhc3Mubm90X3dpYmJsZSkKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3dpdGhfc3BlY19hc19ib29sZWFuKHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgc3BlYz1UcnVlKQorICAgICAgICBkZWYgdGVzdChNb2NrU29tZUNsYXNzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZUNsYXNzLCBNb2NrU29tZUNsYXNzKQorICAgICAgICAgICAgIyBTaG91bGQgbm90IHJhaXNlIGF0dHJpYnV0ZSBlcnJvcgorICAgICAgICAgICAgTW9ja1NvbWVDbGFzcy53aWJibGUKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogTW9ja1NvbWVDbGFzcy5ub3Rfd2liYmxlKQorCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9vYmplY3Rfd2l0aF9zcGVjX2FzX2Jvb2xlYW4oc2VsZik6CisgICAgICAgIEBwYXRjaC5vYmplY3QoUFRNb2R1bGUsICdTb21lQ2xhc3MnLCBzcGVjPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tTb21lQ2xhc3MpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MsIE1vY2tTb21lQ2xhc3MpCisgICAgICAgICAgICAjIFNob3VsZCBub3QgcmFpc2UgYXR0cmlidXRlIGVycm9yCisgICAgICAgICAgICBNb2NrU29tZUNsYXNzLndpYmJsZQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBNb2NrU29tZUNsYXNzLm5vdF93aWJibGUpCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2NsYXNzX2FjdHNfd2l0aF9zcGVjX2lzX2luaGVyaXRlZChzZWxmKToKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sIHNwZWM9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja1NvbWVDbGFzcyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoTW9ja1NvbWVDbGFzcywgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIGluc3RhbmNlID0gTW9ja1NvbWVDbGFzcygpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdENhbGxhYmxlKGluc3RhbmNlKQorICAgICAgICAgICAgIyBTaG91bGQgbm90IHJhaXNlIGF0dHJpYnV0ZSBlcnJvcgorICAgICAgICAgICAgaW5zdGFuY2Uud2liYmxlCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IGluc3RhbmNlLm5vdF93aWJibGUpCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3dpdGhfY3JlYXRlX21vY2tzX25vbl9leGlzdGVudF9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLmZyb29ibGUnICUgYnVpbHRpbl9zdHJpbmcsIHNlbnRpbmVsLkZyb29ibGUsIGNyZWF0ZT1UcnVlKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcm9vYmxlLCBzZW50aW5lbC5Gcm9vYmxlKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IsIGxhbWJkYTogZnJvb2JsZSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hvYmplY3Rfd2l0aF9jcmVhdGVfbW9ja3Nfbm9uX2V4aXN0ZW50X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnZnJvb2JsZScsIHNlbnRpbmVsLkZyb29ibGUsIGNyZWF0ZT1UcnVlKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MuZnJvb2JsZSwgc2VudGluZWwuRnJvb2JsZSkKKworICAgICAgICB0ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKFNvbWVDbGFzcywgJ2Zyb29ibGUnKSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfd29udF9jcmVhdGVfYnlfZGVmYXVsdChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgQHBhdGNoKCclcy5mcm9vYmxlJyAlIGJ1aWx0aW5fc3RyaW5nLCBzZW50aW5lbC5Gcm9vYmxlKQorICAgICAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyb29ibGUsIHNlbnRpbmVsLkZyb29ibGUpCisKKyAgICAgICAgICAgIHRlc3QoKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1BhdGNoaW5nIG5vbiBleGlzdGVudCBhdHRyaWJ1dGVzIHNob3VsZCBmYWlsJykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IsIGxhbWJkYTogZnJvb2JsZSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hvYmplY3Rfd29udF9jcmVhdGVfYnlfZGVmYXVsdChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdmcm9vYmxlJywgc2VudGluZWwuRnJvb2JsZSkKKyAgICAgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdQYXRjaGluZyBub24gZXhpc3RlbnQgYXR0cmlidXRlcyBzaG91bGQgZmFpbCcpCisKKyAgICAgICAgICAgIHRlc3QoKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1BhdGNoaW5nIG5vbiBleGlzdGVudCBhdHRyaWJ1dGVzIHNob3VsZCBmYWlsJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKFNvbWVDbGFzcywgJ2Zyb29ibGUnKSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfd2l0aF9zdGF0aWNfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgd29vdCgpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZW50aW5lbC5TdGF0aWMKKworICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ3dvb3QnLCBzdGF0aWNtZXRob2QobGFtYmRhOiBzZW50aW5lbC5QYXRjaGVkKSkKKyAgICAgICAgZGVmIGFub255bW91cygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28ud29vdCgpLCBzZW50aW5lbC5QYXRjaGVkKQorICAgICAgICBhbm9ueW1vdXMoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLndvb3QoKSwgc2VudGluZWwuU3RhdGljKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9sb2NhbChzZWxmKToKKyAgICAgICAgZm9vID0gc2VudGluZWwuRm9vCisgICAgICAgIEBwYXRjaC5vYmplY3Qoc2VudGluZWwsICdGb28nLCAnRm9vJykKKyAgICAgICAgZGVmIGFub255bW91cygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50aW5lbC5Gb28sICdGb28nKQorICAgICAgICBhbm9ueW1vdXMoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VudGluZWwuRm9vLCBmb28pCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3Nsb3RzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgnRm9vJywpCisKKyAgICAgICAgZm9vID0gRm9vKCkKKyAgICAgICAgZm9vLkZvbyA9IHNlbnRpbmVsLkZvbworCisgICAgICAgIEBwYXRjaC5vYmplY3QoZm9vLCAnRm9vJywgJ0ZvbycpCisgICAgICAgIGRlZiBhbm9ueW1vdXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLkZvbywgJ0ZvbycpCisgICAgICAgIGFub255bW91cygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uRm9vLCBzZW50aW5lbC5Gb28pCisKKworICAgIGRlZiB0ZXN0X3BhdGNob2JqZWN0X2NsYXNzX2RlY29yYXRvcihzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSBzZW50aW5lbC5PcmlnaW5hbAorCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIHRlc3RfbWV0aG9kKG90aGVyX3NlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuUGF0Y2hlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorICAgICAgICAgICAgZGVmIG5vdF90ZXN0X21ldGhvZChvdGhlcl9zZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLk9yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi10ZXN0IG1ldGhvZCBwYXRjaGVkIikKKworICAgICAgICBGb28gPSBwYXRjaC5vYmplY3QoU29tZXRoaW5nLCAnYXR0cmlidXRlJywgc2VudGluZWwuUGF0Y2hlZCkoRm9vKQorCisgICAgICAgIGYgPSBGb28oKQorICAgICAgICBmLnRlc3RfbWV0aG9kKCkKKyAgICAgICAgZi5ub3RfdGVzdF9tZXRob2QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuT3JpZ2luYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2NsYXNzX2RlY29yYXRvcihzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSBzZW50aW5lbC5PcmlnaW5hbAorCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIHRlc3RfbWV0aG9kKG90aGVyX3NlbGYsIG1vY2tfc29tZXRoaW5nKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZywgbW9ja19zb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5wYXRjaGVkIikKKyAgICAgICAgICAgIGRlZiBub3RfdGVzdF9tZXRob2Qob3RoZXJfc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub24tdGVzdCBtZXRob2QgcGF0Y2hlZCIpCisgICAgICAgIEZvbyA9IHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18pKEZvbykKKworICAgICAgICBmID0gRm9vKCkKKyAgICAgICAgZi50ZXN0X21ldGhvZCgpCisgICAgICAgIGYubm90X3Rlc3RfbWV0aG9kKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLk9yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaG9iamVjdF90d2ljZShzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSBzZW50aW5lbC5PcmlnaW5hbAorICAgICAgICAgICAgbmV4dF9hdHRyaWJ1dGUgPSBzZW50aW5lbC5PcmlnaW5hbDIKKworICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWV0aGluZywgJ2F0dHJpYnV0ZScsIHNlbnRpbmVsLlBhdGNoZWQpCisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZXRoaW5nLCAnYXR0cmlidXRlJywgc2VudGluZWwuUGF0Y2hlZCkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuUGF0Y2hlZCwgInVucGF0Y2hlZCIpCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuYXR0cmlidXRlLCBzZW50aW5lbC5PcmlnaW5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfZGljdChzZWxmKToKKyAgICAgICAgZm9vID0geydpbml0aWFsJzogb2JqZWN0KCksICdvdGhlcic6ICdzb21ldGhpbmcnfQorICAgICAgICBvcmlnaW5hbCA9IGZvby5jb3B5KCkKKworICAgICAgICBAcGF0Y2guZGljdChmb28pCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBmb29bJ2EnXSA9IDMKKyAgICAgICAgICAgIGRlbCBmb29bJ2luaXRpYWwnXQorICAgICAgICAgICAgZm9vWydvdGhlciddID0gJ3NvbWV0aGluZyBlbHNlJworCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCBvcmlnaW5hbCkKKworICAgICAgICBAcGF0Y2guZGljdChmb28sIHsnYSc6ICdiJ30pCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmb28pLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb29bJ2EnXSwgJ2InKQorCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCBvcmlnaW5hbCkKKworICAgICAgICBAcGF0Y2guZGljdChmb28sIFsoJ2EnLCAnYicpXSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGZvbyksIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvb1snYSddLCAnYicpCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9kaWN0X3dpdGhfY29udGFpbmVyX29iamVjdChzZWxmKToKKyAgICAgICAgZm9vID0gQ29udGFpbmVyKCkKKyAgICAgICAgZm9vWydpbml0aWFsJ10gPSBvYmplY3QoKQorICAgICAgICBmb29bJ290aGVyJ10gPSAgJ3NvbWV0aGluZycKKworICAgICAgICBvcmlnaW5hbCA9IGZvby52YWx1ZXMuY29weSgpCisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgZm9vWydhJ10gPSAzCisgICAgICAgICAgICBkZWwgZm9vWydpbml0aWFsJ10KKyAgICAgICAgICAgIGZvb1snb3RoZXInXSA9ICdzb21ldGhpbmcgZWxzZScKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby52YWx1ZXMsIG9yaWdpbmFsKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbywgeydhJzogJ2InfSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGZvby52YWx1ZXMpLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb29bJ2EnXSwgJ2InKQorCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnZhbHVlcywgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2RpY3Rfd2l0aF9jbGVhcihzZWxmKToKKyAgICAgICAgZm9vID0geydpbml0aWFsJzogb2JqZWN0KCksICdvdGhlcic6ICdzb21ldGhpbmcnfQorICAgICAgICBvcmlnaW5hbCA9IGZvby5jb3B5KCkKKworICAgICAgICBAcGF0Y2guZGljdChmb28sIGNsZWFyPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywge30pCisgICAgICAgICAgICBmb29bJ2EnXSA9IDMKKyAgICAgICAgICAgIGZvb1snb3RoZXInXSA9ICdzb21ldGhpbmcgZWxzZScKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgb3JpZ2luYWwpCisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vLCB7J2EnOiAnYid9LCBjbGVhcj1UcnVlKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIHsnYSc6ICdiJ30pCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIG9yaWdpbmFsKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbywgWygnYScsICdiJyldLCBjbGVhcj1UcnVlKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIHsnYSc6ICdiJ30pCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9kaWN0X3dpdGhfY29udGFpbmVyX29iamVjdF9hbmRfY2xlYXIoc2VsZik6CisgICAgICAgIGZvbyA9IENvbnRhaW5lcigpCisgICAgICAgIGZvb1snaW5pdGlhbCddID0gb2JqZWN0KCkKKyAgICAgICAgZm9vWydvdGhlciddID0gICdzb21ldGhpbmcnCisKKyAgICAgICAgb3JpZ2luYWwgPSBmb28udmFsdWVzLmNvcHkoKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbywgY2xlYXI9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnZhbHVlcywge30pCisgICAgICAgICAgICBmb29bJ2EnXSA9IDMKKyAgICAgICAgICAgIGZvb1snb3RoZXInXSA9ICdzb21ldGhpbmcgZWxzZScKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby52YWx1ZXMsIG9yaWdpbmFsKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbywgeydhJzogJ2InfSwgY2xlYXI9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnZhbHVlcywgeydhJzogJ2InfSkKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby52YWx1ZXMsIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF9uYW1lX3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgZm9vID0ge30KKworICAgICAgICBAcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgb2JqZWN0KCkpCisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBvYmplY3QoKSwgYXV0b3NwZWM9VHJ1ZSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsIG9iamVjdCgpKQorICAgICAgICBAcGF0Y2guZGljdChmb28pCisgICAgICAgIGRlZiBzb21lX25hbWUoKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWVfbmFtZS5fX25hbWVfXywgJ3NvbWVfbmFtZScpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3dpdGhfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBmb28gPSB7fQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbywgeydhJzogJ2InfSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHJhaXNlIE5hbWVFcnJvcignS29ucmFkJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGVzdCgpCisgICAgICAgIGV4Y2VwdCBOYW1lRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ05hbWVFcnJvciBub3QgcmFpc2VkIGJ5IHRlc3QnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCB7fSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfZGljdF93aXRoX3N0cmluZyhzZWxmKToKKyAgICAgICAgQHBhdGNoLmRpY3QoJ29zLmVudmlyb24nLCB7J2tvbnJhZF9kZWxvbmcnOiAnc29tZSB2YWx1ZSd9KQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigna29ucmFkX2RlbG9uZycsIG9zLmVudmlyb24pCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2Rlc2NyaXB0b3Ioc2VsZik6CisgICAgICAgICMgd291bGQgYmUgc29tZSBlZmZvcnQgdG8gZml4IHRoaXMgLSB3ZSBjb3VsZCBzcGVjaWFsIGNhc2UgdGhlCisgICAgICAgICMgYnVpbHRpbiBkZXNjcmlwdG9yczogY2xhc3NtZXRob2QsIHByb3BlcnR5LCBzdGF0aWNtZXRob2QKKyAgICAgICAgcmV0dXJuCisgICAgICAgIGNsYXNzIE5vdGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGZvbyA9IE5vbmUKKworICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGZvbyA9IHt9CisKKyAgICAgICAgICAgIEBwYXRjaC5vYmplY3QoTm90aGluZywgJ2ZvbycsIDIpCisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBrbGFzcyhjbHMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoY2xzLCBTb21ldGhpbmcpCisKKyAgICAgICAgICAgIEBwYXRjaC5vYmplY3QoTm90aGluZywgJ2ZvbycsIDIpCisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgc3RhdGljKGFyZyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFyZworCisgICAgICAgICAgICBAcGF0Y2guZGljdChmb28pCisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBrbGFzc19kaWN0KGNscyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhjbHMsIFNvbWV0aGluZykKKworICAgICAgICAgICAgQHBhdGNoLmRpY3QoZm9vKQorICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIHN0YXRpY19kaWN0KGFyZyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFyZworCisgICAgICAgICMgdGhlc2Ugd2lsbCByYWlzZSBleGNlcHRpb25zIGlmIHBhdGNoaW5nIGRlc2NyaXB0b3JzIGlzIGJyb2tlbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5zdGF0aWMoJ2YwMCcpLCAnZjAwJykKKyAgICAgICAgU29tZXRoaW5nLmtsYXNzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuc3RhdGljX2RpY3QoJ2YwMCcpLCAnZjAwJykKKyAgICAgICAgU29tZXRoaW5nLmtsYXNzX2RpY3QoKQorCisgICAgICAgIHNvbWV0aGluZyA9IFNvbWV0aGluZygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLnN0YXRpYygnZjAwJyksICdmMDAnKQorICAgICAgICBzb21ldGhpbmcua2xhc3MoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZy5zdGF0aWNfZGljdCgnZjAwJyksICdmMDAnKQorICAgICAgICBzb21ldGhpbmcua2xhc3NfZGljdCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3NwZWNfc2V0KHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgc3BlYz1Tb21lQ2xhc3MsIHNwZWNfc2V0PVRydWUpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tDbGFzcyk6CisgICAgICAgICAgICBNb2NrQ2xhc3MueiA9ICdmb28nCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHRlc3QpCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChzdXBwb3J0LCAnU29tZUNsYXNzJywgc3BlYz1Tb21lQ2xhc3MsIHNwZWNfc2V0PVRydWUpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tDbGFzcyk6CisgICAgICAgICAgICBNb2NrQ2xhc3MueiA9ICdmb28nCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHRlc3QpCisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBzcGVjX3NldD1UcnVlKQorICAgICAgICBkZWYgdGVzdChNb2NrQ2xhc3MpOgorICAgICAgICAgICAgTW9ja0NsYXNzLnogPSAnZm9vJworCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCB0ZXN0KQorCisgICAgICAgIEBwYXRjaC5vYmplY3Qoc3VwcG9ydCwgJ1NvbWVDbGFzcycsIHNwZWNfc2V0PVRydWUpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tDbGFzcyk6CisgICAgICAgICAgICBNb2NrQ2xhc3MueiA9ICdmb28nCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHRlc3QpCisKKworICAgIGRlZiB0ZXN0X3NwZWNfc2V0X2luaGVyaXQoc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBzcGVjX3NldD1UcnVlKQorICAgICAgICBkZWYgdGVzdChNb2NrQ2xhc3MpOgorICAgICAgICAgICAgaW5zdGFuY2UgPSBNb2NrQ2xhc3MoKQorICAgICAgICAgICAgaW5zdGFuY2UueiA9ICdmb28nCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHRlc3QpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3N0YXJ0X3N0b3Aoc2VsZik6CisgICAgICAgIG9yaWdpbmFsID0gc29tZXRoaW5nCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fKQorICAgICAgICBzZWxmLmFzc2VydElzKHNvbWV0aGluZywgb3JpZ2luYWwpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChtb2NrLCBvcmlnaW5hbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc29tZXRoaW5nLCBtb2NrKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzb21ldGhpbmcsIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF9zdG9wX3dpdGhvdXRfc3RhcnQoc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBwYXRjaChmb29fbmFtZSwgJ2JhcicsIDMpCisKKyAgICAgICAgIyBjYWxsaW5nIHN0b3Agd2l0aG91dCBzdGFydCB1c2VkIHRvIHByb2R1Y2UgYSB2ZXJ5IG9ic2N1cmUgZXJyb3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBwYXRjaGVyLnN0b3ApCisKKworICAgIGRlZiB0ZXN0X3BhdGNob2JqZWN0X3N0YXJ0X3N0b3Aoc2VsZik6CisgICAgICAgIG9yaWdpbmFsID0gc29tZXRoaW5nCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5vYmplY3QoUFRNb2R1bGUsICdzb21ldGhpbmcnLCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzb21ldGhpbmcsIG9yaWdpbmFsKQorICAgICAgICByZXBsYWNlZCA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcGxhY2VkLCAnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc29tZXRoaW5nLCByZXBsYWNlZCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc29tZXRoaW5nLCBvcmlnaW5hbCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfZGljdF9zdGFydF9zdG9wKHNlbGYpOgorICAgICAgICBkID0geydmb28nOiAnYmFyJ30KKyAgICAgICAgb3JpZ2luYWwgPSBkLmNvcHkoKQorICAgICAgICBwYXRjaGVyID0gcGF0Y2guZGljdChkLCBbKCdzcGFtJywgJ2VnZ3MnKV0sIGNsZWFyPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgb3JpZ2luYWwpCisKKyAgICAgICAgcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgeydzcGFtJzogJ2VnZ3MnfSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2RpY3RfY2xhc3NfZGVjb3JhdG9yKHNlbGYpOgorICAgICAgICB0aGlzID0gc2VsZgorICAgICAgICBkID0geydzcGFtJzogJ2VnZ3MnfQorICAgICAgICBvcmlnaW5hbCA9IGQuY29weSgpCisKKyAgICAgICAgY2xhc3MgVGVzdChvYmplY3QpOgorICAgICAgICAgICAgZGVmIHRlc3RfZmlyc3Qoc2VsZik6CisgICAgICAgICAgICAgICAgdGhpcy5hc3NlcnRFcXVhbChkLCB7J2Zvbyc6ICdiYXInfSkKKyAgICAgICAgICAgIGRlZiB0ZXN0X3NlY29uZChzZWxmKToKKyAgICAgICAgICAgICAgICB0aGlzLmFzc2VydEVxdWFsKGQsIHsnZm9vJzogJ2Jhcid9KQorCisgICAgICAgIFRlc3QgPSBwYXRjaC5kaWN0KGQsIHsnZm9vJzogJ2Jhcid9LCBjbGVhcj1UcnVlKShUZXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIG9yaWdpbmFsKQorCisgICAgICAgIHRlc3QgPSBUZXN0KCkKKworICAgICAgICB0ZXN0LnRlc3RfZmlyc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIG9yaWdpbmFsKQorCisgICAgICAgIHRlc3QudGVzdF9zZWNvbmQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIG9yaWdpbmFsKQorCisgICAgICAgIHRlc3QgPSBUZXN0KCkKKworICAgICAgICB0ZXN0LnRlc3RfZmlyc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIG9yaWdpbmFsKQorCisgICAgICAgIHRlc3QudGVzdF9zZWNvbmQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF9nZXRfb25seV9wcm94eShzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBmb28gPSAnZm9vJworICAgICAgICBjbGFzcyBTb21ldGhpbmdFbHNlOgorICAgICAgICAgICAgZm9vID0gJ2ZvbycKKworICAgICAgICBmb3IgdGhpbmcgaW4gU29tZXRoaW5nLCBTb21ldGhpbmdFbHNlLCBTb21ldGhpbmcoKSwgU29tZXRoaW5nRWxzZToKKyAgICAgICAgICAgIHByb3h5ID0gX2dldF9wcm94eSh0aGluZykKKworICAgICAgICAgICAgQHBhdGNoLm9iamVjdChwcm94eSwgJ2ZvbycsICdiYXInKQorICAgICAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3h5LmZvbywgJ2JhcicpCisgICAgICAgICAgICB0ZXN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJveHkuZm9vLCAnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGhpbmcuZm9vLCAnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2ZvbycsIHByb3h5Ll9fZGljdF9fKQorCisKKyAgICBkZWYgdGVzdF9nZXRfc2V0X2RlbGV0ZV9wcm94eShzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBmb28gPSAnZm9vJworICAgICAgICBjbGFzcyBTb21ldGhpbmdFbHNlOgorICAgICAgICAgICAgZm9vID0gJ2ZvbycKKworICAgICAgICBmb3IgdGhpbmcgaW4gU29tZXRoaW5nLCBTb21ldGhpbmdFbHNlLCBTb21ldGhpbmcoKSwgU29tZXRoaW5nRWxzZToKKyAgICAgICAgICAgIHByb3h5ID0gX2dldF9wcm94eShTb21ldGhpbmcsIGdldF9vbmx5PUZhbHNlKQorCisgICAgICAgICAgICBAcGF0Y2gub2JqZWN0KHByb3h5LCAnZm9vJywgJ2JhcicpCisgICAgICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJveHkuZm9vLCAnYmFyJykKKyAgICAgICAgICAgIHRlc3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm94eS5mb28sICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGluZy5mb28sICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignZm9vJywgcHJveHkuX19kaWN0X18pCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2tleXdvcmRfYXJncyhzZWxmKToKKyAgICAgICAga3dhcmdzID0geydzaWRlX2VmZmVjdCc6IEtleUVycm9yLCAnZm9vLmJhci5yZXR1cm5fdmFsdWUnOiAzMywKKyAgICAgICAgICAgICAgICAgICdmb28nOiBNYWdpY01vY2soKX0KKworICAgICAgICBwYXRjaGVyID0gcGF0Y2goZm9vX25hbWUsICoqa3dhcmdzKQorICAgICAgICBtb2NrID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5mb28uYmFyKCksIDMzKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jay5mb28sIE1hZ2ljTW9jaykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfb2JqZWN0X2tleXdvcmRfYXJncyhzZWxmKToKKyAgICAgICAga3dhcmdzID0geydzaWRlX2VmZmVjdCc6IEtleUVycm9yLCAnZm9vLmJhci5yZXR1cm5fdmFsdWUnOiAzMywKKyAgICAgICAgICAgICAgICAgICdmb28nOiBNYWdpY01vY2soKX0KKworICAgICAgICBwYXRjaGVyID0gcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAqKmt3YXJncykKKyAgICAgICAgbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suZm9vLmJhcigpLCAzMykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2suZm9vLCBNYWdpY01vY2spCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2RpY3Rfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBvcmlnaW5hbCA9IHsnZm9vJzogJ2Jhcid9CisgICAgICAgIGNvcHkgPSBvcmlnaW5hbC5jb3B5KCkKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2guZGljdChvcmlnaW5hbCwgZm9vPTMsIGJhcj00LCBiYXo9NSkKKyAgICAgICAgcGF0Y2hlci5zdGFydCgpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnaW5hbCwgZGljdChmb289MywgYmFyPTQsIGJhej01KSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnaW5hbCwgY29weSkKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWMoc2VsZik6CisgICAgICAgIGNsYXNzIEJvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGEpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGRlZiBmKHNlbGYsIGEpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGRlZiBnKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGZvbyA9ICdiYXInCisKKyAgICAgICAgICAgIGNsYXNzIEJhcihvYmplY3QpOgorICAgICAgICAgICAgICAgIGRlZiBhKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZGVmIF90ZXN0KG1vY2spOgorICAgICAgICAgICAgbW9jaygxKQorICAgICAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKworICAgICAgICBkZWYgX3Rlc3QyKG1vY2spOgorICAgICAgICAgICAgbW9jay5mKDEpCisgICAgICAgICAgICBtb2NrLmYuYXNzZXJ0X2NhbGxlZF93aXRoKDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2suZikKKworICAgICAgICAgICAgbW9jay5nKCkKKyAgICAgICAgICAgIG1vY2suZy5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLmcsIDEpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAnaCcpCisKKyAgICAgICAgICAgIG1vY2suZm9vLmxvd2VyKCkKKyAgICAgICAgICAgIG1vY2suZm9vLmxvd2VyLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jay5mb28sICdiYXInKQorCisgICAgICAgICAgICBtb2NrLkJhcigpCisgICAgICAgICAgICBtb2NrLkJhci5hc3NlcnRfY2FsbGVkX3dpdGgoKQorCisgICAgICAgICAgICBtb2NrLkJhci5hKCkKKyAgICAgICAgICAgIG1vY2suQmFyLmEuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay5CYXIuYSwgMSkKKworICAgICAgICAgICAgbW9jay5CYXIoKS5hKCkKKyAgICAgICAgICAgIG1vY2suQmFyKCkuYS5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLkJhcigpLmEsIDEpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLkJhciwgJ2InKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2suQmFyKCksICdiJykKKworICAgICAgICBkZWYgZnVuY3Rpb24obW9jayk6CisgICAgICAgICAgICBfdGVzdChtb2NrKQorICAgICAgICAgICAgX3Rlc3QyKG1vY2spCisgICAgICAgICAgICBfdGVzdDIobW9jaygxKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9jaywgRm9vKQorICAgICAgICAgICAgcmV0dXJuIG1vY2sKKworICAgICAgICB0ZXN0ID0gcGF0Y2goZm9vX25hbWUsIGF1dG9zcGVjPVRydWUpKGZ1bmN0aW9uKQorCisgICAgICAgIG1vY2sgPSB0ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChGb28sIG1vY2spCisgICAgICAgICMgdGVzdCBwYXRjaGluZyBhIHNlY29uZCB0aW1lIHdvcmtzCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW19fbmFtZV9fXQorICAgICAgICB0ZXN0ID0gcGF0Y2gub2JqZWN0KG1vZHVsZSwgJ0ZvbycsIGF1dG9zcGVjPVRydWUpKGZ1bmN0aW9uKQorCisgICAgICAgIG1vY2sgPSB0ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChGb28sIG1vY2spCisgICAgICAgICMgdGVzdCBwYXRjaGluZyBhIHNlY29uZCB0aW1lIHdvcmtzCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlY19mdW5jdGlvbihzZWxmKToKKyAgICAgICAgQHBhdGNoKCclcy5mdW5jdGlvbicgJSBfX25hbWVfXywgYXV0b3NwZWM9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QobW9jayk6CisgICAgICAgICAgICBmdW5jdGlvbigxKQorICAgICAgICAgICAgZnVuY3Rpb24uYXNzZXJ0X2NhbGxlZF93aXRoKDEpCisgICAgICAgICAgICBmdW5jdGlvbigyLCAzKQorICAgICAgICAgICAgZnVuY3Rpb24uYXNzZXJ0X2NhbGxlZF93aXRoKDIsIDMpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZnVuY3Rpb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgZnVuY3Rpb24sICdmb28nKQorCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlY19rZXl3b3JkcyhzZWxmKToKKyAgICAgICAgQHBhdGNoKCclcy5mdW5jdGlvbicgJSBfX25hbWVfXywgYXV0b3NwZWM9VHJ1ZSwKKyAgICAgICAgICAgICAgIHJldHVybl92YWx1ZT0zKQorICAgICAgICBkZWYgdGVzdChtb2NrX2Z1bmN0aW9uKToKKyAgICAgICAgICAgICNzZWxmLmFzc2VydEVxdWFsKGZ1bmN0aW9uLmFiYywgJ2ZvbycpCisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oMSwgMikKKworICAgICAgICByZXN1bHQgPSB0ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIDMpCisKKworICAgIGRlZiB0ZXN0X2F1dG9zcGVjX3dpdGhfbmV3KHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gcGF0Y2goJyVzLmZ1bmN0aW9uJyAlIF9fbmFtZV9fLCBuZXc9MywgYXV0b3NwZWM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwYXRjaGVyLnN0YXJ0KQorCisgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW19fbmFtZV9fXQorICAgICAgICBwYXRjaGVyID0gcGF0Y2gub2JqZWN0KG1vZHVsZSwgJ2Z1bmN0aW9uJywgbmV3PTMsIGF1dG9zcGVjPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGF0Y2hlci5zdGFydCkKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfd2l0aF9vYmplY3Qoc2VsZik6CisgICAgICAgIGNsYXNzIEJhcihGb28pOgorICAgICAgICAgICAgZXh0cmEgPSBbXQorCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaChmb29fbmFtZSwgYXV0b3NwZWM9QmFyKQorICAgICAgICBtb2NrID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLCBCYXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jay5leHRyYSwgbGlzdCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X2F1dG9zcGVjX2luaGVyaXRzKHNlbGYpOgorICAgICAgICBGb29DbGFzcyA9IEZvbworICAgICAgICBwYXRjaGVyID0gcGF0Y2goZm9vX25hbWUsIGF1dG9zcGVjPVRydWUpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2ssIEZvb0NsYXNzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2soMyksIEZvb0NsYXNzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfbmFtZShzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKGZvb19uYW1lLCBhdXRvc3BlYz1UcnVlKQorICAgICAgICBtb2NrID0gcGF0Y2hlci5zdGFydCgpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J0ZvbyciLCByZXByKG1vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J0Zvby5mJyIsIHJlcHIobW9jay5mKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBuYW1lPSdGb28oKSciLCByZXByKG1vY2soTm9uZSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J0ZvbygpLmYnIiwgcmVwcihtb2NrKE5vbmUpLmYpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfdHJhY2ViYWNrcyhzZWxmKToKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdmJywgb2JqZWN0KCkpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ZXN0KCkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgZXJyID0gc3lzLmV4Y19pbmZvKCkKKworICAgICAgICByZXN1bHQgPSB1bml0dGVzdC5UZXh0VGVzdFJlc3VsdChOb25lLCBOb25lLCAwKQorICAgICAgICB0cmFjZWJhY2sgPSByZXN1bHQuX2V4Y19pbmZvX3RvX3N0cmluZyhlcnIsIHNlbGYpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3JhaXNlIEFzc2VydGlvbkVycm9yJywgdHJhY2ViYWNrKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfcGF0Y2goc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBwYXRjaChmb29fbmFtZSwgbmV3X2NhbGxhYmxlPU5vbkNhbGxhYmxlTWFnaWNNb2NrKQorCisgICAgICAgIG0xID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHBhdGNoZXIuc3RvcCgpCisgICAgICAgIG0yID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChtMSwgbTIpCisgICAgICAgIGZvciBtb2NrIGluIG0xLCBtMjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q2FsbGFibGUobTEpCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9wYXRjaF9vYmplY3Qoc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5vYmplY3QoRm9vLCAnZicsIG5ld19jYWxsYWJsZT1Ob25DYWxsYWJsZU1hZ2ljTW9jaykKKworICAgICAgICBtMSA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICBwYXRjaGVyLnN0b3AoKQorICAgICAgICBtMiA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobTEsIG0yKQorICAgICAgICBmb3IgbW9jayBpbiBtMSwgbTI6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdENhbGxhYmxlKG0xKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfa2V5d29yZF9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIGNsYXNzIEJhcihvYmplY3QpOgorICAgICAgICAgICAga3dhcmdzID0gTm9uZQorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBCYXIua3dhcmdzID0ga3dhcmdzCisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKGZvb19uYW1lLCBuZXdfY2FsbGFibGU9QmFyLCBhcmcxPTEsIGFyZzI9MikKKyAgICAgICAgbSA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobSksIEJhcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmFyLmt3YXJncywgZGljdChhcmcxPTEsIGFyZzI9MikpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfc3BlYyhzZWxmKToKKyAgICAgICAgY2xhc3MgQmFyKG9iamVjdCk6CisgICAgICAgICAgICBrd2FyZ3MgPSBOb25lCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIEJhci5rd2FyZ3MgPSBrd2FyZ3MKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2goZm9vX25hbWUsIG5ld19jYWxsYWJsZT1CYXIsIHNwZWM9QmFyKQorICAgICAgICBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCYXIua3dhcmdzLCBkaWN0KHNwZWM9QmFyKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKGZvb19uYW1lLCBuZXdfY2FsbGFibGU9QmFyLCBzcGVjX3NldD1CYXIpCisgICAgICAgIHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEJhci5rd2FyZ3MsIGRpY3Qoc3BlY19zZXQ9QmFyKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9jcmVhdGUoc2VsZik6CisgICAgICAgIG5vbl9leGlzdGVudF9hdHRyID0gJyVzLndlZWVlZScgJSBmb29fbmFtZQorICAgICAgICBwID0gcGF0Y2gobm9uX2V4aXN0ZW50X2F0dHIsIG5ld19jYWxsYWJsZT1Ob25DYWxsYWJsZU1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBwLnN0YXJ0KQorCisgICAgICAgIHAgPSBwYXRjaChub25fZXhpc3RlbnRfYXR0ciwgbmV3X2NhbGxhYmxlPU5vbkNhbGxhYmxlTW9jaywKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZT1UcnVlKQorICAgICAgICBtID0gcC5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q2FsbGFibGUobSwgbWFnaWM9RmFsc2UpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfaW5jb21wYXRpYmxlX3dpdGhfbmV3KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsIHBhdGNoLCBmb29fbmFtZSwgbmV3PW9iamVjdCgpLCBuZXdfY2FsbGFibGU9TWFnaWNNb2NrCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBWYWx1ZUVycm9yLCBwYXRjaC5vYmplY3QsIEZvbywgJ2YnLCBuZXc9b2JqZWN0KCksCisgICAgICAgICAgICBuZXdfY2FsbGFibGU9TWFnaWNNb2NrCisgICAgICAgICkKKworCisgICAgZGVmIHRlc3RfbmV3X2NhbGxhYmxlX2luY29tcGF0aWJsZV93aXRoX2F1dG9zcGVjKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsIHBhdGNoLCBmb29fbmFtZSwgbmV3X2NhbGxhYmxlPU1hZ2ljTW9jaywKKyAgICAgICAgICAgIGF1dG9zcGVjPVRydWUKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsIHBhdGNoLm9iamVjdCwgRm9vLCAnZicsIG5ld19jYWxsYWJsZT1NYWdpY01vY2ssCisgICAgICAgICAgICBhdXRvc3BlYz1UcnVlCisgICAgICAgICkKKworCisgICAgZGVmIHRlc3RfbmV3X2NhbGxhYmxlX2luaGVyaXRfZm9yX21vY2tzKHNlbGYpOgorICAgICAgICBjbGFzcyBNb2NrU3ViKE1vY2spOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIE1vY2tDbGFzc2VzID0gKAorICAgICAgICAgICAgTm9uQ2FsbGFibGVNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jaywgTWFnaWNNb2NrLCBNb2NrLCBNb2NrU3ViCisgICAgICAgICkKKyAgICAgICAgZm9yIEtsYXNzIGluIE1vY2tDbGFzc2VzOgorICAgICAgICAgICAgZm9yIGFyZyBpbiAnc3BlYycsICdzcGVjX3NldCc6CisgICAgICAgICAgICAgICAga3dhcmdzID0ge2FyZzogVHJ1ZX0KKyAgICAgICAgICAgICAgICBwID0gcGF0Y2goZm9vX25hbWUsIG5ld19jYWxsYWJsZT1LbGFzcywgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgbSA9IHAuc3RhcnQoKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtLnJldHVybl92YWx1ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgaW5zdGFuY2UsICd4JykKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfaW5oZXJpdF9ub25fbW9jayhzZWxmKToKKyAgICAgICAgY2xhc3MgTm90QU1vY2sob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzcGVjKToKKyAgICAgICAgICAgICAgICBzZWxmLnNwZWMgPSBzcGVjCisKKyAgICAgICAgcCA9IHBhdGNoKGZvb19uYW1lLCBuZXdfY2FsbGFibGU9Tm90QU1vY2ssIHNwZWM9VHJ1ZSkKKyAgICAgICAgbSA9IHAuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UobSwgTm90QU1vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG0sICdyZXR1cm5fdmFsdWUnKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcC5zdG9wKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc3BlYywgRm9vKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfY2xhc3NfZGVjb3JhdGluZyhzZWxmKToKKyAgICAgICAgdGVzdCA9IHNlbGYKKyAgICAgICAgb3JpZ2luYWwgPSBGb28KKyAgICAgICAgY2xhc3MgU29tZVRlc3Qob2JqZWN0KToKKworICAgICAgICAgICAgZGVmIF90ZXN0KHNlbGYsIG1vY2tfZm9vKToKKyAgICAgICAgICAgICAgICB0ZXN0LmFzc2VydElzTm90KEZvbywgb3JpZ2luYWwpCisgICAgICAgICAgICAgICAgdGVzdC5hc3NlcnRJcyhGb28sIG1vY2tfZm9vKQorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0SXNJbnN0YW5jZShGb28sIFNvbWVDbGFzcykKKworICAgICAgICAgICAgZGVmIHRlc3RfdHdvKHNlbGYsIG1vY2tfZm9vKToKKyAgICAgICAgICAgICAgICBzZWxmLl90ZXN0KG1vY2tfZm9vKQorICAgICAgICAgICAgZGVmIHRlc3Rfb25lKHNlbGYsIG1vY2tfZm9vKToKKyAgICAgICAgICAgICAgICBzZWxmLl90ZXN0KG1vY2tfZm9vKQorCisgICAgICAgIFNvbWVUZXN0ID0gcGF0Y2goZm9vX25hbWUsIG5ld19jYWxsYWJsZT1Tb21lQ2xhc3MpKFNvbWVUZXN0KQorICAgICAgICBTb21lVGVzdCgpLnRlc3Rfb25lKCkKKyAgICAgICAgU29tZVRlc3QoKS50ZXN0X3R3bygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLCBvcmlnaW5hbCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGUoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX2ZvbyA9IEZvbworICAgICAgICBvcmlnaW5hbF9mID0gRm9vLmYKKyAgICAgICAgb3JpZ2luYWxfZyA9IEZvby5nCisKKyAgICAgICAgcGF0Y2hlcjEgPSBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZj0xLCBnPTIpCisgICAgICAgIHBhdGNoZXIyID0gcGF0Y2gubXVsdGlwbGUoRm9vLCBmPTEsIGc9MikKKworICAgICAgICBmb3IgcGF0Y2hlciBpbiBwYXRjaGVyMSwgcGF0Y2hlcjI6CisgICAgICAgICAgICBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvbywgb3JpZ2luYWxfZm9vKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgMikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28sIG9yaWdpbmFsX2ZvbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorCisKKyAgICAgICAgQHBhdGNoLm11bHRpcGxlKGZvb19uYW1lLCBmPTMsIGc9NCkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLCBvcmlnaW5hbF9mb28pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgNCkKKworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfbm9fa3dhcmdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXRjaC5tdWx0aXBsZSwgZm9vX25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhdGNoLm11bHRpcGxlLCBGb28pCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX2NyZWF0ZV9tb2NrcyhzZWxmKToKKyAgICAgICAgb3JpZ2luYWxfZm9vID0gRm9vCisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKworICAgICAgICBAcGF0Y2gubXVsdGlwbGUoZm9vX25hbWUsIGY9REVGQVVMVCwgZz0zLCBmb289REVGQVVMVCkKKyAgICAgICAgZGVmIHRlc3QoZiwgZm9vKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLCBvcmlnaW5hbF9mb28pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvby5mLCBmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmZvbywgZm9vKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKGYsIE1hZ2ljTW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoZm9vLCBNYWdpY01vY2spKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCBvcmlnaW5hbF9mKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9jcmVhdGVfbW9ja3NfZGlmZmVyZW50X29yZGVyKHNlbGYpOgorICAgICAgICAjIGJ1ZyByZXZlYWxlZCBieSBKeXRob24hCisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAzKQorICAgICAgICBwYXRjaGVyLmF0dHJpYnV0ZV9uYW1lID0gJ2YnCisKKyAgICAgICAgb3RoZXIgPSBwYXRjaC5vYmplY3QoRm9vLCAnZycsIERFRkFVTFQpCisgICAgICAgIG90aGVyLmF0dHJpYnV0ZV9uYW1lID0gJ2cnCisgICAgICAgIHBhdGNoZXIuYWRkaXRpb25hbF9wYXRjaGVycyA9IFtvdGhlcl0KKworICAgICAgICBAcGF0Y2hlcgorICAgICAgICBkZWYgdGVzdChnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmcsIGcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCAzKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCBvcmlnaW5hbF9mKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9zdGFja2VkX2RlY29yYXRvcnMoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX2ZvbyA9IEZvbworICAgICAgICBvcmlnaW5hbF9mID0gRm9vLmYKKyAgICAgICAgb3JpZ2luYWxfZyA9IEZvby5nCisKKyAgICAgICAgQHBhdGNoLm11bHRpcGxlKGZvb19uYW1lLCBmPURFRkFVTFQpCisgICAgICAgIEBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZm9vPURFRkFVTFQpCisgICAgICAgIEBwYXRjaChmb29fbmFtZSArICcuZycpCisgICAgICAgIGRlZiB0ZXN0MShnLCAqKmt3YXJncyk6CisgICAgICAgICAgICBfdGVzdChnLCAqKmt3YXJncykKKworICAgICAgICBAcGF0Y2gubXVsdGlwbGUoZm9vX25hbWUsIGY9REVGQVVMVCkKKyAgICAgICAgQHBhdGNoKGZvb19uYW1lICsgJy5nJykKKyAgICAgICAgQHBhdGNoLm11bHRpcGxlKGZvb19uYW1lLCBmb289REVGQVVMVCkKKyAgICAgICAgZGVmIHRlc3QyKGcsICoqa3dhcmdzKToKKyAgICAgICAgICAgIF90ZXN0KGcsICoqa3dhcmdzKQorCisgICAgICAgIEBwYXRjaChmb29fbmFtZSArICcuZycpCisgICAgICAgIEBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZj1ERUZBVUxUKQorICAgICAgICBAcGF0Y2gubXVsdGlwbGUoZm9vX25hbWUsIGZvbz1ERUZBVUxUKQorICAgICAgICBkZWYgdGVzdDMoZywgKiprd2FyZ3MpOgorICAgICAgICAgICAgX3Rlc3QoZywgKiprd2FyZ3MpCisKKyAgICAgICAgZGVmIF90ZXN0KGcsICoqa3dhcmdzKToKKyAgICAgICAgICAgIGYgPSBrd2FyZ3MucG9wKCdmJykKKyAgICAgICAgICAgIGZvbyA9IGt3YXJncy5wb3AoJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGt3YXJncykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28sIG9yaWdpbmFsX2ZvbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmYsIGYpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvby5nLCBnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZm9vLCBmb28pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoZiwgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShnLCBNYWdpY01vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKGZvbywgTWFnaWNNb2NrKSkKKworICAgICAgICB0ZXN0MSgpCisgICAgICAgIHRlc3QyKCkKKyAgICAgICAgdGVzdDMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCBvcmlnaW5hbF9mKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9jcmVhdGVfbW9ja3NfcGF0Y2hlcihzZWxmKToKKyAgICAgICAgb3JpZ2luYWxfZm9vID0gRm9vCisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2gubXVsdGlwbGUoZm9vX25hbWUsIGY9REVGQVVMVCwgZz0zLCBmb289REVGQVVMVCkKKworICAgICAgICByZXN1bHQgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZiA9IHJlc3VsdFsnZiddCisgICAgICAgICAgICBmb28gPSByZXN1bHRbJ2ZvbyddCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChyZXN1bHQpLCBzZXQoWydmJywgJ2ZvbyddKSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28sIG9yaWdpbmFsX2ZvbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmYsIGYpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvby5mb28sIGZvbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShmLCBNYWdpY01vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKGZvbywgTWFnaWNNb2NrKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgb3JpZ2luYWxfZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgb3JpZ2luYWxfZykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfZGVjb3JhdGluZ19jbGFzcyhzZWxmKToKKyAgICAgICAgdGVzdCA9IHNlbGYKKyAgICAgICAgb3JpZ2luYWxfZm9vID0gRm9vCisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKworICAgICAgICBjbGFzcyBTb21lVGVzdChvYmplY3QpOgorCisgICAgICAgICAgICBkZWYgX3Rlc3Qoc2VsZiwgZiwgZm9vKToKKyAgICAgICAgICAgICAgICB0ZXN0LmFzc2VydElzKEZvbywgb3JpZ2luYWxfZm9vKQorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0SXMoRm9vLmYsIGYpCisgICAgICAgICAgICAgICAgdGVzdC5hc3NlcnRFcXVhbChGb28uZywgMykKKyAgICAgICAgICAgICAgICB0ZXN0LmFzc2VydElzKEZvby5mb28sIGZvbykKKyAgICAgICAgICAgICAgICB0ZXN0LmFzc2VydFRydWUoaXNfaW5zdGFuY2UoZiwgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgICAgICB0ZXN0LmFzc2VydFRydWUoaXNfaW5zdGFuY2UoZm9vLCBNYWdpY01vY2spKQorCisgICAgICAgICAgICBkZWYgdGVzdF90d28oc2VsZiwgZiwgZm9vKToKKyAgICAgICAgICAgICAgICBzZWxmLl90ZXN0KGYsIGZvbykKKyAgICAgICAgICAgIGRlZiB0ZXN0X29uZShzZWxmLCBmLCBmb28pOgorICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3QoZiwgZm9vKQorCisgICAgICAgIFNvbWVUZXN0ID0gcGF0Y2gubXVsdGlwbGUoCisgICAgICAgICAgICBmb29fbmFtZSwgZj1ERUZBVUxULCBnPTMsIGZvbz1ERUZBVUxUCisgICAgICAgICkoU29tZVRlc3QpCisKKyAgICAgICAgdGhpbmcgPSBTb21lVGVzdCgpCisgICAgICAgIHRoaW5nLnRlc3Rfb25lKCkKKyAgICAgICAgdGhpbmcudGVzdF90d28oKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIG9yaWdpbmFsX2cpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX2NyZWF0ZShzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm11bHRpcGxlKEZvbywgYmxhbT0nYmxhbScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBwYXRjaGVyLnN0YXJ0KQorCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5tdWx0aXBsZShGb28sIGJsYW09J2JsYW0nLCBjcmVhdGU9VHJ1ZSkKKyAgICAgICAgcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmJsYW0sICdibGFtJykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKEZvbywgJ2JsYW0nKSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfc3BlY19zZXQoc2VsZik6CisgICAgICAgICMgaWYgc3BlY19zZXQgd29ya3MgdGhlbiB3ZSBjYW4gYXNzdW1lIHRoYXQgc3BlYyBhbmQgYXV0b3NwZWMgYWxzbworICAgICAgICAjIHdvcmsgYXMgdGhlIHVuZGVybHlpbmcgbWFjaGluZXJ5IGlzIHRoZSBzYW1lCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5tdWx0aXBsZShGb28sIGZvbz1ERUZBVUxULCBzcGVjX3NldD1bJ2EnLCAnYiddKQorICAgICAgICByZXN1bHQgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZm9vLCByZXN1bHRbJ2ZvbyddKQorICAgICAgICAgICAgRm9vLmZvby5hKDEpCisgICAgICAgICAgICBGb28uZm9vLmIoMikKKyAgICAgICAgICAgIEZvby5mb28uYS5hc3NlcnRfY2FsbGVkX3dpdGgoMSkKKyAgICAgICAgICAgIEZvby5mb28uYi5hc3NlcnRfY2FsbGVkX3dpdGgoMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBGb28uZm9vLCAnYycsIE5vbmUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9uZXdfY2FsbGFibGUoc2VsZik6CisgICAgICAgIGNsYXNzIFRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm11bHRpcGxlKAorICAgICAgICAgICAgRm9vLCBmPURFRkFVTFQsIGc9REVGQVVMVCwgbmV3X2NhbGxhYmxlPVRoaW5nCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmYsIHJlc3VsdFsnZiddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZywgcmVzdWx0WydnJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRm9vLmYsIFRoaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEZvby5nLCBUaGluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoRm9vLmYsIEZvby5nKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfbmVzdGVkX3BhdGNoX2ZhaWx1cmUoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKworICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2cnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ21pc3NpbmcnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAxKQorICAgICAgICBkZWYgdGhpbmcxKCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdtaXNzaW5nJywgMSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdnJywgMSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdmJywgMSkKKyAgICAgICAgZGVmIHRoaW5nMigpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZycsIDEpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZicsIDEpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnbWlzc2luZycsIDEpCisgICAgICAgIGRlZiB0aGluZzMoKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBmb3IgZnVuYyBpbiB0aGluZzEsIHRoaW5nMiwgdGhpbmczOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGZ1bmMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCBvcmlnaW5hbF9mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgb3JpZ2luYWxfZykKKworCisgICAgZGVmIHRlc3RfbmV3X2NhbGxhYmxlX2ZhaWx1cmUoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKyAgICAgICAgb3JpZ2luYWxfZm9vID0gRm9vLmZvbworCisgICAgICAgIGRlZiBjcmFzaGVyKCk6CisgICAgICAgICAgICByYWlzZSBOYW1lRXJyb3IoJ2NyYXNoZXInKQorCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZycsIDEpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZm9vJywgbmV3X2NhbGxhYmxlPWNyYXNoZXIpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZicsIDEpCisgICAgICAgIGRlZiB0aGluZzEoKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2ZvbycsIG5ld19jYWxsYWJsZT1jcmFzaGVyKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2cnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAxKQorICAgICAgICBkZWYgdGhpbmcyKCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdnJywgMSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdmJywgMSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdmb28nLCBuZXdfY2FsbGFibGU9Y3Jhc2hlcikKKyAgICAgICAgZGVmIHRoaW5nMygpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGZvciBmdW5jIGluIHRoaW5nMSwgdGhpbmcyLCB0aGluZzM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IsIGZ1bmMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCBvcmlnaW5hbF9mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgb3JpZ2luYWxfZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmZvbywgb3JpZ2luYWxfZm9vKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9mYWlsdXJlKHNlbGYpOgorICAgICAgICBvcmlnaW5hbF9mID0gRm9vLmYKKyAgICAgICAgb3JpZ2luYWxfZyA9IEZvby5nCisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm9iamVjdChGb28sICdmJywgMSkKKyAgICAgICAgcGF0Y2hlci5hdHRyaWJ1dGVfbmFtZSA9ICdmJworCisgICAgICAgIGdvb2QgPSBwYXRjaC5vYmplY3QoRm9vLCAnZycsIDEpCisgICAgICAgIGdvb2QuYXR0cmlidXRlX25hbWUgPSAnZycKKworICAgICAgICBiYWQgPSBwYXRjaC5vYmplY3QoRm9vLCAnbWlzc2luZycsIDEpCisgICAgICAgIGJhZC5hdHRyaWJ1dGVfbmFtZSA9ICdtaXNzaW5nJworCisgICAgICAgIGZvciBhZGRpdGlvbmFscyBpbiBbZ29vZCwgYmFkXSwgW2JhZCwgZ29vZF06CisgICAgICAgICAgICBwYXRjaGVyLmFkZGl0aW9uYWxfcGF0Y2hlcnMgPSBhZGRpdGlvbmFscworCisgICAgICAgICAgICBAcGF0Y2hlcgorICAgICAgICAgICAgZGVmIGZ1bmMoKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBmdW5jKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgb3JpZ2luYWxfZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIG9yaWdpbmFsX2cpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX25ld19jYWxsYWJsZV9mYWlsdXJlKHNlbGYpOgorICAgICAgICBvcmlnaW5hbF9mID0gRm9vLmYKKyAgICAgICAgb3JpZ2luYWxfZyA9IEZvby5nCisgICAgICAgIG9yaWdpbmFsX2ZvbyA9IEZvby5mb28KKworICAgICAgICBkZWYgY3Jhc2hlcigpOgorICAgICAgICAgICAgcmFpc2UgTmFtZUVycm9yKCdjcmFzaGVyJykKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAxKQorICAgICAgICBwYXRjaGVyLmF0dHJpYnV0ZV9uYW1lID0gJ2YnCisKKyAgICAgICAgZ29vZCA9IHBhdGNoLm9iamVjdChGb28sICdnJywgMSkKKyAgICAgICAgZ29vZC5hdHRyaWJ1dGVfbmFtZSA9ICdnJworCisgICAgICAgIGJhZCA9IHBhdGNoLm9iamVjdChGb28sICdmb28nLCBuZXdfY2FsbGFibGU9Y3Jhc2hlcikKKyAgICAgICAgYmFkLmF0dHJpYnV0ZV9uYW1lID0gJ2ZvbycKKworICAgICAgICBmb3IgYWRkaXRpb25hbHMgaW4gW2dvb2QsIGJhZF0sIFtiYWQsIGdvb2RdOgorICAgICAgICAgICAgcGF0Y2hlci5hZGRpdGlvbmFsX3BhdGNoZXJzID0gYWRkaXRpb25hbHMKKworICAgICAgICAgICAgQHBhdGNoZXIKKyAgICAgICAgICAgIGRlZiBmdW5jKCk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IsIGZ1bmMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCBvcmlnaW5hbF9mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgb3JpZ2luYWxfZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmZvbywgb3JpZ2luYWxfZm9vKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9zdHJpbmdfc3ViY2xhc3NlcyhzZWxmKToKKyAgICAgICAgRm9vID0gdHlwZSgnRm9vJywgKHN0ciwpLCB7J2Zpc2gnOiAndGFzdHknfSkKKyAgICAgICAgZm9vID0gRm9vKCkKKyAgICAgICAgQHBhdGNoLm11bHRpcGxlKGZvbywgZmlzaD0nbmVhcmx5IGdvbmUnKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uZmlzaCwgJ25lYXJseSBnb25lJykKKworICAgICAgICB0ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uZmlzaCwgJ3Rhc3R5JykKKworCisgICAgQHBhdGNoKCd1bml0dGVzdC5tb2NrLnBhdGNoLlRFU1RfUFJFRklYJywgJ2ZvbycpCisgICAgZGVmIHRlc3RfcGF0Y2hfdGVzdF9wcmVmaXgoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgdGhpbmcgPSAnb3JpZ2luYWwnCisKKyAgICAgICAgICAgIGRlZiBmb29fb25lKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRoaW5nCisgICAgICAgICAgICBkZWYgZm9vX3R3byhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50aGluZworICAgICAgICAgICAgZGVmIHRlc3Rfb25lKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRoaW5nCisgICAgICAgICAgICBkZWYgdGVzdF90d28oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudGhpbmcKKworICAgICAgICBGb28gPSBwYXRjaC5vYmplY3QoRm9vLCAndGhpbmcnLCAnY2hhbmdlZCcpKEZvbykKKworICAgICAgICBmb28gPSBGb28oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5mb29fb25lKCksICdjaGFuZ2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uZm9vX3R3bygpLCAnY2hhbmdlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnRlc3Rfb25lKCksICdvcmlnaW5hbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnRlc3RfdHdvKCksICdvcmlnaW5hbCcpCisKKworICAgIEBwYXRjaCgndW5pdHRlc3QubW9jay5wYXRjaC5URVNUX1BSRUZJWCcsICdiYXInKQorICAgIGRlZiB0ZXN0X3BhdGNoX2RpY3RfdGVzdF9wcmVmaXgoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIGJhcl9vbmUoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGRpY3QodGhlX2RpY3QpCisgICAgICAgICAgICBkZWYgYmFyX3R3byhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZGljdCh0aGVfZGljdCkKKyAgICAgICAgICAgIGRlZiB0ZXN0X29uZShzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZGljdCh0aGVfZGljdCkKKyAgICAgICAgICAgIGRlZiB0ZXN0X3R3byhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZGljdCh0aGVfZGljdCkKKworICAgICAgICB0aGVfZGljdCA9IHsna2V5JzogJ29yaWdpbmFsJ30KKyAgICAgICAgRm9vID0gcGF0Y2guZGljdCh0aGVfZGljdCwga2V5PSdjaGFuZ2VkJykoRm9vKQorCisgICAgICAgIGZvbyA9Rm9vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uYmFyX29uZSgpLCB7J2tleSc6ICdjaGFuZ2VkJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLmJhcl90d28oKSwgeydrZXknOiAnY2hhbmdlZCd9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50ZXN0X29uZSgpLCB7J2tleSc6ICdvcmlnaW5hbCd9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50ZXN0X3R3bygpLCB7J2tleSc6ICdvcmlnaW5hbCd9KQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF93aXRoX3NwZWNfbW9ja19yZXByKHNlbGYpOgorICAgICAgICBmb3IgYXJnIGluICgnc3BlYycsICdhdXRvc3BlYycsICdzcGVjX3NldCcpOgorICAgICAgICAgICAgcCA9IHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sICoqe2FyZzogVHJ1ZX0pCisgICAgICAgICAgICBtID0gcC5zdGFydCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J1NvbWVDbGFzcyciLCByZXByKG0pKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBuYW1lPSdTb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKG0uY2xhc3NfYXR0cmlidXRlKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nU29tZUNsYXNzKCknIiwgcmVwcihtKCkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBuYW1lPSdTb21lQ2xhc3MoKS5jbGFzc19hdHRyaWJ1dGUnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIobSgpLmNsYXNzX2F0dHJpYnV0ZSkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX25lc3RlZF9hdXRvc3BlY19yZXByKHNlbGYpOgorICAgICAgICB3aXRoIHBhdGNoKCd1bml0dGVzdC50ZXN0LnRlc3Rtb2NrLnN1cHBvcnQnLCBhdXRvc3BlYz1UcnVlKSBhcyBtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J3N1cHBvcnQuU29tZUNsYXNzLndpYmJsZSgpJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIobS5Tb21lQ2xhc3Mud2liYmxlKCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J3N1cHBvcnQuU29tZUNsYXNzKCkud2liYmxlKCknIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihtLlNvbWVDbGFzcygpLndpYmJsZSgpKSkKKworCisKKyAgICBkZWYgdGVzdF9tb2NrX2NhbGxzX3dpdGhfcGF0Y2goc2VsZik6CisgICAgICAgIGZvciBhcmcgaW4gKCdzcGVjJywgJ2F1dG9zcGVjJywgJ3NwZWNfc2V0Jyk6CisgICAgICAgICAgICBwID0gcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgKip7YXJnOiBUcnVlfSkKKyAgICAgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtLndpYmJsZSgpCisKKyAgICAgICAgICAgICAgICBrYWxscyA9IFtjYWxsLndpYmJsZSgpXQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tb2NrX2NhbGxzLCBrYWxscykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubWV0aG9kX2NhbGxzLCBrYWxscykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ud2liYmxlLm1vY2tfY2FsbHMsIFtjYWxsKCldKQorCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbSgpCisgICAgICAgICAgICAgICAga2FsbHMuYXBwZW5kKGNhbGwoKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubW9ja19jYWxscywga2FsbHMpCisKKyAgICAgICAgICAgICAgICByZXN1bHQud2liYmxlKCkKKyAgICAgICAgICAgICAgICBrYWxscy5hcHBlbmQoY2FsbCgpLndpYmJsZSgpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tb2NrX2NhbGxzLCBrYWxscykKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm1vY2tfY2FsbHMsIFtjYWxsLndpYmJsZSgpXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC53aWJibGUubW9ja19jYWxscywgW2NhbGwoKV0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQubWV0aG9kX2NhbGxzLCBbY2FsbC53aWJibGUoKV0pCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2ltcG9ydHNfbGF6aWx5KHNlbGYpOgorICAgICAgICBzeXMubW9kdWxlcy5wb3AoJ3NxdWl6eicsIE5vbmUpCisKKyAgICAgICAgcDEgPSBwYXRjaCgnc3F1aXp6LnNxdW96eicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yLCBwMS5zdGFydCkKKworICAgICAgICBzcXVpenogPSBNb2NrKCkKKyAgICAgICAgc3F1aXp6LnNxdW96eiA9IDYKKyAgICAgICAgc3lzLm1vZHVsZXNbJ3NxdWl6eiddID0gc3F1aXp6CisgICAgICAgIHAxID0gcGF0Y2goJ3NxdWl6ei5zcXVvenonKQorICAgICAgICBzcXVpenouc3F1b3p6ID0gMworICAgICAgICBwMS5zdGFydCgpCisgICAgICAgIHAxLnN0b3AoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNxdWl6ei5zcXVvenosIDMpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3Byb3BvZ3JhdGVzX2V4Y19vbl9leGl0KHNlbGYpOgorICAgICAgICBjbGFzcyBob2xkZXI6CisgICAgICAgICAgICBleGNfaW5mbyA9IE5vbmUsIE5vbmUsIE5vbmUKKworICAgICAgICBjbGFzcyBjdXN0b21fcGF0Y2goX3BhdGNoKToKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBldHlwZT1Ob25lLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6CisgICAgICAgICAgICAgICAgX3BhdGNoLl9fZXhpdF9fKHNlbGYsIGV0eXBlLCB2YWwsIHRiKQorICAgICAgICAgICAgICAgIGhvbGRlci5leGNfaW5mbyA9IGV0eXBlLCB2YWwsIHRiCisgICAgICAgICAgICBzdG9wID0gX19leGl0X18KKworICAgICAgICBkZWYgd2l0aF9jdXN0b21fcGF0Y2godGFyZ2V0KToKKyAgICAgICAgICAgIGdldHRlciwgYXR0cmlidXRlID0gX2dldF90YXJnZXQodGFyZ2V0KQorICAgICAgICAgICAgcmV0dXJuIGN1c3RvbV9wYXRjaCgKKyAgICAgICAgICAgICAgICBnZXR0ZXIsIGF0dHJpYnV0ZSwgREVGQVVMVCwgTm9uZSwgRmFsc2UsIE5vbmUsCisgICAgICAgICAgICAgICAgTm9uZSwgTm9uZSwge30KKyAgICAgICAgICAgICkKKworICAgICAgICBAd2l0aF9jdXN0b21fcGF0Y2goJ3NxdWl6ei5zcXVvenonKQorICAgICAgICBkZWYgdGVzdChtb2NrKToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgdGVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob2xkZXIuZXhjX2luZm9bMF0sIFJ1bnRpbWVFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoaG9sZGVyLmV4Y19pbmZvWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGNlcHRpb24gdmFsdWUgbm90IHByb3BnYXRlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGhvbGRlci5leGNfaW5mb1syXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uIHRyYWNlYmFjayBub3QgcHJvcGdhdGVkJykKKworCisgICAgZGVmIHRlc3RfY3JlYXRlX2FuZF9zcGVjcyhzZWxmKToKKyAgICAgICAgZm9yIGt3YXJnIGluICgnc3BlYycsICdzcGVjX3NldCcsICdhdXRvc3BlYycpOgorICAgICAgICAgICAgcCA9IHBhdGNoKCclcy5kb2Vzbm90ZXhpc3QnICUgX19uYW1lX18sIGNyZWF0ZT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICoqe2t3YXJnOiBUcnVlfSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcC5zdGFydCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvciwgbGFtYmRhOiBkb2Vzbm90ZXhpc3QpCisKKyAgICAgICAgICAgICMgY2hlY2sgdGhhdCBzcGVjIHdpdGggY3JlYXRlIGlzIGlubm9jdW91cyBpZiB0aGUgb3JpZ2luYWwgZXhpc3RzCisgICAgICAgICAgICBwID0gcGF0Y2goTU9ETkFNRSwgY3JlYXRlPVRydWUsICoqe2t3YXJnOiBUcnVlfSkKKyAgICAgICAgICAgIHAuc3RhcnQoKQorICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfc3BlY3Moc2VsZik6CisgICAgICAgIG9yaWdpbmFsID0gUFRNb2R1bGUKKyAgICAgICAgZm9yIGt3YXJnIGluICgnc3BlYycsICdzcGVjX3NldCcpOgorICAgICAgICAgICAgcCA9IHBhdGNoKE1PRE5BTUUsIGF1dG9zcGVjPTAsICoqe2t3YXJnOiAwfSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcC5zdGFydCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoUFRNb2R1bGUsIG9yaWdpbmFsKQorCisgICAgICAgIGZvciBrd2FyZyBpbiAoJ3NwZWMnLCAnYXV0b3NwZWMnKToKKyAgICAgICAgICAgIHAgPSBwYXRjaChNT0ROQU1FLCBzcGVjX3NldD0wLCAqKntrd2FyZzogMH0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHAuc3RhcnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKFBUTW9kdWxlLCBvcmlnaW5hbCkKKworICAgICAgICBmb3Iga3dhcmcgaW4gKCdzcGVjX3NldCcsICdhdXRvc3BlYycpOgorICAgICAgICAgICAgcCA9IHBhdGNoKE1PRE5BTUUsIHNwZWM9MCwgKip7a3dhcmc6IDB9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwLnN0YXJ0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhQVE1vZHVsZSwgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X3NwZWNzX2ZhbHNlX2luc3RlYWRfb2Zfbm9uZShzZWxmKToKKyAgICAgICAgcCA9IHBhdGNoKE1PRE5BTUUsIHNwZWM9RmFsc2UsIHNwZWNfc2V0PUZhbHNlLCBhdXRvc3BlYz1GYWxzZSkKKyAgICAgICAgbW9jayA9IHAuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIG5vIHNwZWMgc2hvdWxkIGhhdmUgYmVlbiBzZXQsIHNvIGF0dHJpYnV0ZSBhY2Nlc3Mgc2hvdWxkIG5vdCBmYWlsCisgICAgICAgICAgICBtb2NrLmRvZXNfbm90X2V4aXN0CisgICAgICAgICAgICBtb2NrLmRvZXNfbm90X2V4aXN0ID0gMworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfZmFsc2V5X3NwZWMoc2VsZik6CisgICAgICAgIGZvciBrd2FyZyBpbiAoJ3NwZWMnLCAnYXV0b3NwZWMnLCAnc3BlY19zZXQnKToKKyAgICAgICAgICAgIHAgPSBwYXRjaChNT0ROQU1FLCAqKntrd2FyZzogMH0pCisgICAgICAgICAgICBtID0gcC5zdGFydCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG0sICdkb2Vzbm90ZXhpdCcpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X3NwZWNfc2V0X3RydWUoc2VsZik6CisgICAgICAgIGZvciBrd2FyZyBpbiAoJ3NwZWMnLCAnYXV0b3NwZWMnKToKKyAgICAgICAgICAgIHAgPSBwYXRjaChNT0ROQU1FLCBzcGVjX3NldD1UcnVlLCAqKntrd2FyZzogVHJ1ZX0pCisgICAgICAgICAgICBtID0gcC5zdGFydCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIG0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvZXNub3RleGlzdCcsICdzb21ldGhpbmcnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtLCAnZG9lc25vdGV4aXN0JykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfY2FsbGFibGVfc3BlY19hc19saXN0KHNlbGYpOgorICAgICAgICBzcGVjID0gKCdfX2NhbGxfXycsKQorICAgICAgICBwID0gcGF0Y2goTU9ETkFNRSwgc3BlYz1zcGVjKQorICAgICAgICBtID0gcC5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjYWxsYWJsZShtKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X25vdF9jYWxsYWJsZV9zcGVjX2FzX2xpc3Qoc2VsZik6CisgICAgICAgIHNwZWMgPSAoJ2ZvbycsICdiYXInKQorICAgICAgICBwID0gcGF0Y2goTU9ETkFNRSwgc3BlYz1zcGVjKQorICAgICAgICBtID0gcC5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2FsbGFibGUobSkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9zdG9wYWxsKHNlbGYpOgorICAgICAgICB1bmxpbmsgPSBvcy51bmxpbmsKKyAgICAgICAgY2hkaXIgPSBvcy5jaGRpcgorICAgICAgICBwYXRoID0gb3MucGF0aAorICAgICAgICBwYXRjaCgnb3MudW5saW5rJywgc29tZXRoaW5nKS5zdGFydCgpCisgICAgICAgIHBhdGNoKCdvcy5jaGRpcicsIHNvbWV0aGluZ19lbHNlKS5zdGFydCgpCisKKyAgICAgICAgQHBhdGNoKCdvcy5wYXRoJykKKyAgICAgICAgZGVmIHBhdGNoZWQobW9ja19wYXRoKToKKyAgICAgICAgICAgIHBhdGNoLnN0b3BhbGwoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhvcy5wYXRoLCBtb2NrX3BhdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG9zLnVubGluaywgdW5saW5rKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhvcy5jaGRpciwgY2hkaXIpCisKKyAgICAgICAgcGF0Y2hlZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMob3MucGF0aCwgcGF0aCkKKworCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0c2VudGluZWwucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0c2VudGluZWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZkYTY4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RzZW50aW5lbC5weQpAQCAtMCwwICsxLDI4IEBACitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgc2VudGluZWwsIERFRkFVTFQKKworCitjbGFzcyBTZW50aW5lbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RTZW50aW5lbHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VudGluZWwud2hhdGV2ZXIsIHNlbnRpbmVsLndoYXRldmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICdzZW50aW5lbCBub3Qgc3RvcmVkJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzZW50aW5lbC53aGF0ZXZlciwgc2VudGluZWwud2hhdGV2ZXJlbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZW50aW5lbCBzaG91bGQgYmUgdW5pcXVlJykKKworCisgICAgZGVmIHRlc3RTZW50aW5lbE5hbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbnRpbmVsLndoYXRldmVyKSwgJ3NlbnRpbmVsLndoYXRldmVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc2VudGluZWwgbmFtZSBpbmNvcnJlY3QnKQorCisKKyAgICBkZWYgdGVzdERFRkFVTFQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShERUZBVUxUIGlzIHNlbnRpbmVsLkRFRkFVTFQpCisKKyAgICBkZWYgdGVzdEJhc2VzKHNlbGYpOgorICAgICAgICAjIElmIHRoaXMgZG9lc24ndCByYWlzZSBhbiBBdHRyaWJ1dGVFcnJvciB0aGVuIGhlbHAobW9jaykgaXMgYnJva2VuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IHNlbnRpbmVsLl9fYmFzZXNfXykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHdpdGgucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0d2l0aC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTBjZmFkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHdpdGgucHkKQEAgLTAsMCArMSwxNzYgQEAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB3YXJuaW5ncyBpbXBvcnQgY2F0Y2hfd2FybmluZ3MKKworZnJvbSB1bml0dGVzdC50ZXN0LnRlc3Rtb2NrLnN1cHBvcnQgaW1wb3J0IGlzX2luc3RhbmNlCitmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IE1hZ2ljTW9jaywgTW9jaywgcGF0Y2gsIHNlbnRpbmVsLCBtb2NrX29wZW4sIGNhbGwKKworCisKK3NvbWV0aGluZyAgPSBzZW50aW5lbC5Tb21ldGhpbmcKK3NvbWV0aGluZ19lbHNlICA9IHNlbnRpbmVsLlNvbWV0aGluZ0Vsc2UKKworCisKK2NsYXNzIFdpdGhUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICB3aXRoIHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18sIHNlbnRpbmVsLlNvbWV0aGluZzIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZzIsICJ1bnBhdGNoZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nKQorCisKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudF9leGNlcHRpb24oc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXywgc2VudGluZWwuU29tZXRoaW5nMik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZzIsICJ1bnBhdGNoZWQiKQorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigncG93JykKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgicGF0Y2ggc3dhbGxvd2VkIGV4Y2VwdGlvbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcpCisKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50X2FzKHNlbGYpOgorICAgICAgICB3aXRoIHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18pIGFzIG1vY2tfc29tZXRoaW5nOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIG1vY2tfc29tZXRoaW5nLCAidW5wYXRjaGVkIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShtb2NrX3NvbWV0aGluZywgTWFnaWNNb2NrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2hpbmcgd3JvbmcgdHlwZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX29iamVjdF93aXRoX3N0YXRlbWVudChzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBzb21ldGhpbmcgPSAnZm9vJworICAgICAgICBvcmlnaW5hbCA9IEZvby5zb21ldGhpbmcKKyAgICAgICAgd2l0aCBwYXRjaC5vYmplY3QoRm9vLCAnc29tZXRoaW5nJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKEZvby5zb21ldGhpbmcsIG9yaWdpbmFsLCAidW5wYXRjaGVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uc29tZXRoaW5nLCBvcmlnaW5hbCkKKworCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRfbmVzdGVkKHNlbGYpOgorICAgICAgICB3aXRoIGNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKToKKyAgICAgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXykgYXMgbW9ja19zb21ldGhpbmcsIHBhdGNoKCclcy5zb21ldGhpbmdfZWxzZScgJSBfX25hbWVfXykgYXMgbW9ja19zb21ldGhpbmdfZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgbW9ja19zb21ldGhpbmcsICJ1bnBhdGNoZWQiKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nX2Vsc2UsIG1vY2tfc29tZXRoaW5nX2Vsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5wYXRjaGVkIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZ19lbHNlLCBzZW50aW5lbC5Tb21ldGhpbmdFbHNlKQorCisKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudF9zcGVjaWZpZWQoc2VsZik6CisgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXywgc2VudGluZWwuUGF0Y2hlZCkgYXMgbW9ja19zb21ldGhpbmc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgbW9ja19zb21ldGhpbmcsICJ1bnBhdGNoZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrX3NvbWV0aGluZywgc2VudGluZWwuUGF0Y2hlZCwgIndyb25nIHBhdGNoIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZykKKworCisgICAgZGVmIHRlc3RDb250ZXh0TWFuYWdlck1vY2tpbmcoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5fX2VudGVyX18gPSBNb2NrKCkKKyAgICAgICAgbW9jay5fX2V4aXRfXyA9IE1vY2soKQorICAgICAgICBtb2NrLl9fZXhpdF9fLnJldHVybl92YWx1ZSA9IEZhbHNlCisKKyAgICAgICAgd2l0aCBtb2NrIGFzIG06CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG1vY2suX19lbnRlcl9fLnJldHVybl92YWx1ZSkKKyAgICAgICAgbW9jay5fX2VudGVyX18uYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgbW9jay5fX2V4aXRfXy5hc3NlcnRfY2FsbGVkX3dpdGgoTm9uZSwgTm9uZSwgTm9uZSkKKworCisgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyX3dpdGhfbWFnaWNfbW9jayhzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBtb2NrOgorICAgICAgICAgICAgICAgICdmb28nICsgMworICAgICAgICBtb2NrLl9fZW50ZXJfXy5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9jay5fX2V4aXRfXy5jYWxsZWQpCisKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50X3NhbWVfYXR0cmlidXRlKHNlbGYpOgorICAgICAgICB3aXRoIHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18sIHNlbnRpbmVsLlBhdGNoZWQpIGFzIG1vY2tfc29tZXRoaW5nOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIG1vY2tfc29tZXRoaW5nLCAidW5wYXRjaGVkIikKKworICAgICAgICAgICAgd2l0aCBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fKSBhcyBtb2NrX2FnYWluOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBtb2NrX2FnYWluLCAidW5wYXRjaGVkIikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIG1vY2tfc29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzdG9yZWQgd2l0aCB3cm9uZyBpbnN0YW5jZSIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZywgIm5vdCByZXN0b3JlZCIpCisKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50X2ltYnJpY2F0ZWQoc2VsZik6CisgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXykgYXMgbW9ja19zb21ldGhpbmc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgbW9ja19zb21ldGhpbmcsICJ1bnBhdGNoZWQiKQorCisgICAgICAgICAgICB3aXRoIHBhdGNoKCclcy5zb21ldGhpbmdfZWxzZScgJSBfX25hbWVfXykgYXMgbW9ja19zb21ldGhpbmdfZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZ19lbHNlLCBtb2NrX3NvbWV0aGluZ19lbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVucGF0Y2hlZCIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmdfZWxzZSwgc2VudGluZWwuU29tZXRoaW5nRWxzZSkKKworCisgICAgZGVmIHRlc3RfZGljdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CisgICAgICAgIGZvbyA9IHt9CisgICAgICAgIHdpdGggcGF0Y2guZGljdChmb28sIHsnYSc6ICdiJ30pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIHsnYSc6ICdiJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCB7fSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICB3aXRoIHBhdGNoLmRpY3QoZm9vLCB7J2EnOiAnYid9KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgeydhJzogJ2InfSkKKyAgICAgICAgICAgICAgICByYWlzZSBOYW1lRXJyb3IoJ0tvbnJhZCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIHt9KQorCisKKworY2xhc3MgVGVzdE1vY2tPcGVuKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X21vY2tfb3BlbihzZWxmKToKKyAgICAgICAgbW9jayA9IG1vY2tfb3BlbigpCisgICAgICAgIHdpdGggcGF0Y2goJyVzLm9wZW4nICUgX19uYW1lX18sIG1vY2ssIGNyZWF0ZT1UcnVlKSBhcyBwYXRjaGVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhwYXRjaGVkLCBtb2NrKQorICAgICAgICAgICAgb3BlbignZm9vJykKKworICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdmb28nKQorCisKKyAgICBkZWYgdGVzdF9tb2NrX29wZW5fY29udGV4dF9tYW5hZ2VyKHNlbGYpOgorICAgICAgICBtb2NrID0gbW9ja19vcGVuKCkKKyAgICAgICAgaGFuZGxlID0gbW9jay5yZXR1cm5fdmFsdWUKKyAgICAgICAgd2l0aCBwYXRjaCgnJXMub3BlbicgJSBfX25hbWVfXywgbW9jaywgY3JlYXRlPVRydWUpOgorICAgICAgICAgICAgd2l0aCBvcGVuKCdmb28nKSBhcyBmOgorICAgICAgICAgICAgICAgIGYucmVhZCgpCisKKyAgICAgICAgZXhwZWN0ZWRfY2FsbHMgPSBbY2FsbCgnZm9vJyksIGNhbGwoKS5fX2VudGVyX18oKSwgY2FsbCgpLnJlYWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCgpLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgZXhwZWN0ZWRfY2FsbHMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZiwgaGFuZGxlKQorCisKKyAgICBkZWYgdGVzdF9leHBsaWNpdF9tb2NrKHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgbW9ja19vcGVuKG1vY2spCisKKyAgICAgICAgd2l0aCBwYXRjaCgnJXMub3BlbicgJSBfX25hbWVfXywgbW9jaywgY3JlYXRlPVRydWUpIGFzIHBhdGNoZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHBhdGNoZWQsIG1vY2spCisgICAgICAgICAgICBvcGVuKCdmb28nKQorCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X3JlYWRfZGF0YShzZWxmKToKKyAgICAgICAgbW9jayA9IG1vY2tfb3BlbihyZWFkX2RhdGE9J2ZvbycpCisgICAgICAgIHdpdGggcGF0Y2goJyVzLm9wZW4nICUgX19uYW1lX18sIG1vY2ssIGNyZWF0ZT1UcnVlKToKKyAgICAgICAgICAgIGggPSBvcGVuKCdiYXInKQorICAgICAgICAgICAgcmVzdWx0ID0gaC5yZWFkKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgJ2ZvbycpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvZXJyb3IucHkgYi9MaWIvdXJsbGliL2Vycm9yLnB5CmluZGV4IGViMTRjMWQuLmI3MTJlYmIgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvZXJyb3IucHkKKysrIGIvTGliL3VybGxpYi9lcnJvci5weQpAQCAtMTMsNiArMTMsOSBAQAogCiBpbXBvcnQgdXJsbGliLnJlc3BvbnNlCiAKK19fYWxsX18gPSBbJ1VSTEVycm9yJywgJ0hUVFBFcnJvcicsICdDb250ZW50VG9vU2hvcnRFcnJvciddCisKKwogIyBkbyB0aGVzZSBlcnJvciBjbGFzc2VzIG1ha2Ugc2Vuc2U/CiAjIG1ha2Ugc3VyZSBhbGwgb2YgdGhlIElPRXJyb3Igc3R1ZmYgaXMgb3ZlcnJpZGRlbi4gIHdlIGp1c3Qgd2FudCB0byBiZQogIyBzdWJ0eXBlcy4KZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvcmVxdWVzdC5weSBiL0xpYi91cmxsaWIvcmVxdWVzdC5weQppbmRleCBlYjQ1YzdlLi41ZGRlYzVmIDEwMDY0NAotLS0gYS9MaWIvdXJsbGliL3JlcXVlc3QucHkKKysrIGIvTGliL3VybGxpYi9yZXF1ZXN0LnB5CkBAIC04OSwxNCArODksMTYgQEAKIGltcG9ydCBpbwogaW1wb3J0IG9zCiBpbXBvcnQgcG9zaXhwYXRoCi1pbXBvcnQgcmFuZG9tCiBpbXBvcnQgcmUKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCB3YXJuaW5ncwogCisKIGZyb20gdXJsbGliLmVycm9yIGltcG9ydCBVUkxFcnJvciwgSFRUUEVycm9yLCBDb250ZW50VG9vU2hvcnRFcnJvcgogZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0ICgKICAgICB1cmxwYXJzZSwgdXJsc3BsaXQsIHVybGpvaW4sIHVud3JhcCwgcXVvdGUsIHVucXVvdGUsCkBAIC0xMTIsMjEgKzExNCw0MCBAQAogZWxzZToKICAgICBfaGF2ZV9zc2wgPSBUcnVlCiAKK19fYWxsX18gPSBbCisgICAgIyBDbGFzc2VzCisgICAgJ1JlcXVlc3QnLCAnT3BlbmVyRGlyZWN0b3InLCAnQmFzZUhhbmRsZXInLCAnSFRUUERlZmF1bHRFcnJvckhhbmRsZXInLAorICAgICdIVFRQUmVkaXJlY3RIYW5kbGVyJywgJ0hUVFBDb29raWVQcm9jZXNzb3InLCAnUHJveHlIYW5kbGVyJywKKyAgICAnSFRUUFBhc3N3b3JkTWdyJywgJ0hUVFBQYXNzd29yZE1ncldpdGhEZWZhdWx0UmVhbG0nLAorICAgICdBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXInLCAnSFRUUEJhc2ljQXV0aEhhbmRsZXInLCAnUHJveHlCYXNpY0F1dGhIYW5kbGVyJywKKyAgICAnQWJzdHJhY3REaWdlc3RBdXRoSGFuZGxlcicsICdIVFRQRGlnZXN0QXV0aEhhbmRsZXInLCAnUHJveHlEaWdlc3RBdXRoSGFuZGxlcicsCisgICAgJ0hUVFBIYW5kbGVyJywgJ0ZpbGVIYW5kbGVyJywgJ0ZUUEhhbmRsZXInLCAnQ2FjaGVGVFBIYW5kbGVyJywKKyAgICAnVW5rbm93bkhhbmRsZXInLCAnSFRUUEVycm9yUHJvY2Vzc29yJywKKyAgICAjIEZ1bmN0aW9ucworICAgICd1cmxvcGVuJywgJ2luc3RhbGxfb3BlbmVyJywgJ2J1aWxkX29wZW5lcicsCisgICAgJ3BhdGhuYW1lMnVybCcsICd1cmwycGF0aG5hbWUnLCAnZ2V0cHJveGllcycsCisgICAgIyBMZWdhY3kgaW50ZXJmYWNlCisgICAgJ3VybHJldHJpZXZlJywgJ3VybGNsZWFudXAnLCAnVVJMb3BlbmVyJywgJ0ZhbmN5VVJMb3BlbmVyJywKK10KKwogIyB1c2VkIGluIFVzZXItQWdlbnQgaGVhZGVyIHNlbnQKIF9fdmVyc2lvbl9fID0gc3lzLnZlcnNpb25bOjNdCiAKIF9vcGVuZXIgPSBOb25lCiBkZWYgdXJsb3Blbih1cmwsIGRhdGE9Tm9uZSwgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsCi0gICAgICAgICAgICAqLCBjYWZpbGU9Tm9uZSwgY2FwYXRoPU5vbmUpOgorICAgICAgICAgICAgKiwgY2FmaWxlPU5vbmUsIGNhcGF0aD1Ob25lLCBjYWRlZmF1bHQ9RmFsc2UpOgogICAgIGdsb2JhbCBfb3BlbmVyCi0gICAgaWYgY2FmaWxlIG9yIGNhcGF0aDoKKyAgICBpZiBjYWZpbGUgb3IgY2FwYXRoIG9yIGNhZGVmYXVsdDoKICAgICAgICAgaWYgbm90IF9oYXZlX3NzbDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1NTTCBzdXBwb3J0IG5vdCBhdmFpbGFibGUnKQogICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKICAgICAgICAgY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19TU0x2MgotICAgICAgICBpZiBjYWZpbGUgb3IgY2FwYXRoOgorICAgICAgICBpZiBjYWZpbGUgb3IgY2FwYXRoIG9yIGNhZGVmYXVsdDoKICAgICAgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlLCBjYXBhdGgpCisgICAgICAgICAgICBpZiBjYWZpbGUgb3IgY2FwYXRoOgorICAgICAgICAgICAgICAgIGNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmlsZSwgY2FwYXRoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpCiAgICAgICAgICAgICBjaGVja19ob3N0bmFtZSA9IFRydWUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGNoZWNrX2hvc3RuYW1lID0gRmFsc2UKQEAgLTE0MiwxNyArMTYzLDc4IEBACiAgICAgZ2xvYmFsIF9vcGVuZXIKICAgICBfb3BlbmVyID0gb3BlbmVyCiAKLSMgVE9ETyhqaHlsdG9uKTogTWFrZSB0aGlzIHdvcmsgd2l0aCB0aGUgc2FtZSBnbG9iYWwgb3BlbmVyLgotX3VybG9wZW5lciA9IE5vbmUKK191cmxfdGVtcGZpbGVzID0gW10KIGRlZiB1cmxyZXRyaWV2ZSh1cmwsIGZpbGVuYW1lPU5vbmUsIHJlcG9ydGhvb2s9Tm9uZSwgZGF0YT1Ob25lKToKLSAgICBnbG9iYWwgX3VybG9wZW5lcgotICAgIGlmIG5vdCBfdXJsb3BlbmVyOgotICAgICAgICBfdXJsb3BlbmVyID0gRmFuY3lVUkxvcGVuZXIoKQotICAgIHJldHVybiBfdXJsb3BlbmVyLnJldHJpZXZlKHVybCwgZmlsZW5hbWUsIHJlcG9ydGhvb2ssIGRhdGEpCisgICAgIiIiCisgICAgUmV0cmlldmUgYSBVUkwgaW50byBhIHRlbXBvcmFyeSBsb2NhdGlvbiBvbiBkaXNrLgorCisgICAgUmVxdWlyZXMgYSBVUkwgYXJndW1lbnQuIElmIGEgZmlsZW5hbWUgaXMgcGFzc2VkLCBpdCBpcyB1c2VkIGFzCisgICAgdGhlIHRlbXBvcmFyeSBmaWxlIGxvY2F0aW9uLiBUaGUgcmVwb3J0aG9vayBhcmd1bWVudCBzaG91bGQgYmUKKyAgICBhIGNhbGxhYmxlIHRoYXQgYWNjZXB0cyBhIGJsb2NrIG51bWJlciwgYSByZWFkIHNpemUsIGFuZCB0aGUKKyAgICB0b3RhbCBmaWxlIHNpemUgb2YgdGhlIFVSTCB0YXJnZXQuIFRoZSBkYXRhIGFyZ3VtZW50IHNob3VsZCBiZQorICAgIHZhbGlkIFVSTCBlbmNvZGVkIGRhdGEuCisKKyAgICBJZiBhIGZpbGVuYW1lIGlzIHBhc3NlZCBhbmQgdGhlIFVSTCBwb2ludHMgdG8gYSBsb2NhbCByZXNvdXJjZSwKKyAgICB0aGUgcmVzdWx0IGlzIGEgY29weSBmcm9tIGxvY2FsIGZpbGUgdG8gbmV3IGZpbGUuCisKKyAgICBSZXR1cm5zIGEgdHVwbGUgY29udGFpbmluZyB0aGUgcGF0aCB0byB0aGUgbmV3bHkgY3JlYXRlZAorICAgIGRhdGEgZmlsZSBhcyB3ZWxsIGFzIHRoZSByZXN1bHRpbmcgSFRUUE1lc3NhZ2Ugb2JqZWN0LgorICAgICIiIgorICAgIHVybF90eXBlLCBwYXRoID0gc3BsaXR0eXBlKHVybCkKKworICAgIHdpdGggY29udGV4dGxpYi5jbG9zaW5nKHVybG9wZW4odXJsLCBkYXRhKSkgYXMgZnA6CisgICAgICAgIGhlYWRlcnMgPSBmcC5pbmZvKCkKKworICAgICAgICAjIEp1c3QgcmV0dXJuIHRoZSBsb2NhbCBwYXRoIGFuZCB0aGUgImhlYWRlcnMiIGZvciBmaWxlOi8vCisgICAgICAgICMgVVJMcy4gTm8gc2Vuc2UgaW4gcGVyZm9ybWluZyBhIGNvcHkgdW5sZXNzIHJlcXVlc3RlZC4KKyAgICAgICAgaWYgdXJsX3R5cGUgPT0gImZpbGUiIGFuZCBub3QgZmlsZW5hbWU6CisgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtcGF0aChwYXRoKSwgaGVhZGVycworCisgICAgICAgICMgSGFuZGxlIHRlbXBvcmFyeSBmaWxlIHNldHVwLgorICAgICAgICBpZiBmaWxlbmFtZToKKyAgICAgICAgICAgIHRmcCA9IG9wZW4oZmlsZW5hbWUsICd3YicpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0ZnAgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoZGVsZXRlPUZhbHNlKQorICAgICAgICAgICAgZmlsZW5hbWUgPSB0ZnAubmFtZQorICAgICAgICAgICAgX3VybF90ZW1wZmlsZXMuYXBwZW5kKGZpbGVuYW1lKQorCisgICAgICAgIHdpdGggdGZwOgorICAgICAgICAgICAgcmVzdWx0ID0gZmlsZW5hbWUsIGhlYWRlcnMKKyAgICAgICAgICAgIGJzID0gMTAyNCo4CisgICAgICAgICAgICBzaXplID0gLTEKKyAgICAgICAgICAgIHJlYWQgPSAwCisgICAgICAgICAgICBibG9ja251bSA9IDAKKyAgICAgICAgICAgIGlmICJjb250ZW50LWxlbmd0aCIgaW4gaGVhZGVyczoKKyAgICAgICAgICAgICAgICBzaXplID0gaW50KGhlYWRlcnNbIkNvbnRlbnQtTGVuZ3RoIl0pCisKKyAgICAgICAgICAgIGlmIHJlcG9ydGhvb2s6CisgICAgICAgICAgICAgICAgcmVwb3J0aG9vayhibG9ja251bSwgYnMsIHNpemUpCisKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgYmxvY2sgPSBmcC5yZWFkKGJzKQorICAgICAgICAgICAgICAgIGlmIG5vdCBibG9jazoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICByZWFkICs9IGxlbihibG9jaykKKyAgICAgICAgICAgICAgICB0ZnAud3JpdGUoYmxvY2spCisgICAgICAgICAgICAgICAgYmxvY2tudW0gKz0gMQorICAgICAgICAgICAgICAgIGlmIHJlcG9ydGhvb2s6CisgICAgICAgICAgICAgICAgICAgIHJlcG9ydGhvb2soYmxvY2tudW0sIGJzLCBzaXplKQorCisgICAgaWYgc2l6ZSA+PSAwIGFuZCByZWFkIDwgc2l6ZToKKyAgICAgICAgcmFpc2UgQ29udGVudFRvb1Nob3J0RXJyb3IoCisgICAgICAgICAgICAicmV0cmlldmFsIGluY29tcGxldGU6IGdvdCBvbmx5ICVpIG91dCBvZiAlaSBieXRlcyIKKyAgICAgICAgICAgICUgKHJlYWQsIHNpemUpLCByZXN1bHQpCisKKyAgICByZXR1cm4gcmVzdWx0CiAKIGRlZiB1cmxjbGVhbnVwKCk6Ci0gICAgaWYgX3VybG9wZW5lcjoKLSAgICAgICAgX3VybG9wZW5lci5jbGVhbnVwKCkKKyAgICBmb3IgdGVtcF9maWxlIGluIF91cmxfdGVtcGZpbGVzOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy51bmxpbmsodGVtcF9maWxlKQorICAgICAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlbCBfdXJsX3RlbXBmaWxlc1s6XQogICAgIGdsb2JhbCBfb3BlbmVyCiAgICAgaWYgX29wZW5lcjoKICAgICAgICAgX29wZW5lciA9IE5vbmUKQEAgLTE3OCw3ICsyNjAsOCBAQAogY2xhc3MgUmVxdWVzdDoKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsIGRhdGE9Tm9uZSwgaGVhZGVycz17fSwKLSAgICAgICAgICAgICAgICAgb3JpZ2luX3JlcV9ob3N0PU5vbmUsIHVudmVyaWZpYWJsZT1GYWxzZSk6CisgICAgICAgICAgICAgICAgIG9yaWdpbl9yZXFfaG9zdD1Ob25lLCB1bnZlcmlmaWFibGU9RmFsc2UsCisgICAgICAgICAgICAgICAgIG1ldGhvZD1Ob25lKToKICAgICAgICAgIyB1bndyYXAoJzxVUkw6dHlwZTovL2hvc3QvcGF0aD4nKSAtLT4gJ3R5cGU6Ly9ob3N0L3BhdGgnCiAgICAgICAgIHNlbGYuZnVsbF91cmwgPSB1bndyYXAodXJsKQogICAgICAgICBzZWxmLmZ1bGxfdXJsLCBzZWxmLmZyYWdtZW50ID0gc3BsaXR0YWcoc2VsZi5mdWxsX3VybCkKQEAgLTE5Miw2ICsyNzUsNyBAQAogICAgICAgICAgICAgb3JpZ2luX3JlcV9ob3N0ID0gcmVxdWVzdF9ob3N0KHNlbGYpCiAgICAgICAgIHNlbGYub3JpZ2luX3JlcV9ob3N0ID0gb3JpZ2luX3JlcV9ob3N0CiAgICAgICAgIHNlbGYudW52ZXJpZmlhYmxlID0gdW52ZXJpZmlhYmxlCisgICAgICAgIHNlbGYubWV0aG9kID0gbWV0aG9kCiAgICAgICAgIHNlbGYuX3BhcnNlKCkKIAogICAgIGRlZiBfcGFyc2Uoc2VsZik6CkBAIC0yMDMsNDEgKzI4Nyw2MCBAQAogICAgICAgICAgICAgc2VsZi5ob3N0ID0gdW5xdW90ZShzZWxmLmhvc3QpCiAKICAgICBkZWYgZ2V0X21ldGhvZChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5kYXRhIGlzIG5vdCBOb25lOgorICAgICAgICAiIiJSZXR1cm4gYSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgSFRUUCByZXF1ZXN0IG1ldGhvZC4iIiIKKyAgICAgICAgaWYgc2VsZi5tZXRob2QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5tZXRob2QKKyAgICAgICAgZWxpZiBzZWxmLmRhdGEgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gIlBPU1QiCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gIkdFVCIKIAotICAgICMgQmVnaW4gZGVwcmVjYXRlZCBtZXRob2RzCi0KLSAgICBkZWYgYWRkX2RhdGEoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKLQotICAgIGRlZiBoYXNfZGF0YShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSBpcyBub3QgTm9uZQotCi0gICAgZGVmIGdldF9kYXRhKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5kYXRhCi0KICAgICBkZWYgZ2V0X2Z1bGxfdXJsKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmZyYWdtZW50OgogICAgICAgICAgICAgcmV0dXJuICclcyMlcycgJSAoc2VsZi5mdWxsX3VybCwgc2VsZi5mcmFnbWVudCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLmZ1bGxfdXJsCiAKKyAgICAjIEJlZ2luIGRlcHJlY2F0ZWQgbWV0aG9kcworCisgICAgZGVmIGFkZF9kYXRhKHNlbGYsIGRhdGEpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5hZGRfZGF0YSBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKKyAgICAgICAgc2VsZi5kYXRhID0gZGF0YQorCisgICAgZGVmIGhhc19kYXRhKHNlbGYpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5oYXNfZGF0YSBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKKyAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSBpcyBub3QgTm9uZQorCisgICAgZGVmIGdldF9kYXRhKHNlbGYpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5nZXRfZGF0YSBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKKyAgICAgICAgcmV0dXJuIHNlbGYuZGF0YQorCiAgICAgZGVmIGdldF90eXBlKHNlbGYpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5nZXRfdHlwZSBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKICAgICAgICAgcmV0dXJuIHNlbGYudHlwZQogCiAgICAgZGVmIGdldF9ob3N0KHNlbGYpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5nZXRfaG9zdCBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKICAgICAgICAgcmV0dXJuIHNlbGYuaG9zdAogCiAgICAgZGVmIGdldF9zZWxlY3RvcihzZWxmKToKKyAgICAgICAgbXNnID0gIlJlcXVlc3QuZ2V0X3NlbGVjdG9yIG1ldGhvZCBpcyBkZXByZWNhdGVkLiIKKyAgICAgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0xKQogICAgICAgICByZXR1cm4gc2VsZi5zZWxlY3RvcgogCiAgICAgZGVmIGlzX3VudmVyaWZpYWJsZShzZWxmKToKKyAgICAgICAgbXNnID0gIlJlcXVlc3QuaXNfdW52ZXJpZmlhYmxlIG1ldGhvZCBpcyBkZXByZWNhdGVkLiIKKyAgICAgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0xKQogICAgICAgICByZXR1cm4gc2VsZi51bnZlcmlmaWFibGUKIAogICAgIGRlZiBnZXRfb3JpZ2luX3JlcV9ob3N0KHNlbGYpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5nZXRfb3JpZ2luX3JlcV9ob3N0IG1ldGhvZCBpcyBkZXByZWNhdGVkLiIKKyAgICAgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0xKQogICAgICAgICByZXR1cm4gc2VsZi5vcmlnaW5fcmVxX2hvc3QKIAogICAgICMgRW5kIGRlcHJlY2F0ZWQgbWV0aG9kcwpAQCAtNjgyLDggKzc4NSw4IEBACiAgICAgICAgIHNlbGYucHJveGllcyA9IHByb3hpZXMKICAgICAgICAgZm9yIHR5cGUsIHVybCBpbiBwcm94aWVzLml0ZW1zKCk6CiAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsICclc19vcGVuJyAlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgIGxhbWJkYSByLCBwcm94eT11cmwsIHR5cGU9dHlwZSwgbWV0aD1zZWxmLnByb3h5X29wZW46IFwKLSAgICAgICAgICAgICAgICAgICAgbWV0aChyLCBwcm94eSwgdHlwZSkpCisgICAgICAgICAgICAgICAgICAgIGxhbWJkYSByLCBwcm94eT11cmwsIHR5cGU9dHlwZSwgbWV0aD1zZWxmLnByb3h5X29wZW46CisgICAgICAgICAgICAgICAgICAgICAgICBtZXRoKHIsIHByb3h5LCB0eXBlKSkKIAogICAgIGRlZiBwcm94eV9vcGVuKHNlbGYsIHJlcSwgcHJveHksIHR5cGUpOgogICAgICAgICBvcmlnX3R5cGUgPSByZXEudHlwZQpAQCAtODI1LDE3ICs5MjgsMjMgQEAKICAgICAgICAgICAgIHNlbGYucmV0cmllZCArPSAxCiAKICAgICAgICAgaWYgYXV0aHJlcToKLSAgICAgICAgICAgIG1vID0gQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyLnJ4LnNlYXJjaChhdXRocmVxKQotICAgICAgICAgICAgaWYgbW86Ci0gICAgICAgICAgICAgICAgc2NoZW1lLCBxdW90ZSwgcmVhbG0gPSBtby5ncm91cHMoKQotICAgICAgICAgICAgICAgIGlmIHF1b3RlIG5vdCBpbiBbIiciLCAnIiddOgotICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJCYXNpYyBBdXRoIFJlYWxtIHdhcyB1bnF1b3RlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcldhcm5pbmcsIDIpCi0gICAgICAgICAgICAgICAgaWYgc2NoZW1lLmxvd2VyKCkgPT0gJ2Jhc2ljJzoKLSAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJldHJ5X2h0dHBfYmFzaWNfYXV0aChob3N0LCByZXEsIHJlYWxtKQotICAgICAgICAgICAgICAgICAgICBpZiByZXNwb25zZSBhbmQgcmVzcG9uc2UuY29kZSAhPSA0MDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHJpZWQgPSAwCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZQorICAgICAgICAgICAgc2NoZW1lID0gYXV0aHJlcS5zcGxpdCgpWzBdCisgICAgICAgICAgICBpZiBzY2hlbWUubG93ZXIoKSAhPSAnYmFzaWMnOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFic3RyYWN0QmFzaWNBdXRoSGFuZGxlciBkb2VzIG5vdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc3VwcG9ydCB0aGUgZm9sbG93aW5nIHNjaGVtZTogJyVzJyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtbyA9IEFic3RyYWN0QmFzaWNBdXRoSGFuZGxlci5yeC5zZWFyY2goYXV0aHJlcSkKKyAgICAgICAgICAgICAgICBpZiBtbzoKKyAgICAgICAgICAgICAgICAgICAgc2NoZW1lLCBxdW90ZSwgcmVhbG0gPSBtby5ncm91cHMoKQorICAgICAgICAgICAgICAgICAgICBpZiBxdW90ZSBub3QgaW4gWyciJywiJyJdOgorICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigiQmFzaWMgQXV0aCBSZWFsbSB3YXMgdW5xdW90ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyV2FybmluZywgMikKKyAgICAgICAgICAgICAgICAgICAgaWYgc2NoZW1lLmxvd2VyKCkgPT0gJ2Jhc2ljJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXRyeV9odHRwX2Jhc2ljX2F1dGgoaG9zdCwgcmVxLCByZWFsbSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlc3BvbnNlIGFuZCByZXNwb25zZS5jb2RlICE9IDQwMToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHJpZWQgPSAwCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UKIAogICAgIGRlZiByZXRyeV9odHRwX2Jhc2ljX2F1dGgoc2VsZiwgaG9zdCwgcmVxLCByZWFsbSk6CiAgICAgICAgIHVzZXIsIHB3ID0gc2VsZi5wYXNzd2QuZmluZF91c2VyX3Bhc3N3b3JkKHJlYWxtLCBob3N0KQpAQCAtODc4LDkgKzk4Nyw5IEBACiAgICAgICAgIHJldHVybiByZXNwb25zZQogCiAKLWRlZiByYW5kb21ieXRlcyhuKToKLSAgICAiIiJSZXR1cm4gbiByYW5kb20gYnl0ZXMuIiIiCi0gICAgcmV0dXJuIG9zLnVyYW5kb20obikKKyMgUmV0dXJuIG4gcmFuZG9tIGJ5dGVzLgorX3JhbmRvbWJ5dGVzID0gb3MudXJhbmRvbQorCiAKIGNsYXNzIEFic3RyYWN0RGlnZXN0QXV0aEhhbmRsZXI6CiAgICAgIyBEaWdlc3QgYXV0aGVudGljYXRpb24gaXMgc3BlY2lmaWVkIGluIFJGQyAyNjE3LgpAQCAtOTIxLDYgKzEwMzAsOSBAQAogICAgICAgICAgICAgc2NoZW1lID0gYXV0aHJlcS5zcGxpdCgpWzBdCiAgICAgICAgICAgICBpZiBzY2hlbWUubG93ZXIoKSA9PSAnZGlnZXN0JzoKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXRyeV9odHRwX2RpZ2VzdF9hdXRoKHJlcSwgYXV0aHJlcSkKKyAgICAgICAgICAgIGVsaWYgc2NoZW1lLmxvd2VyKCkgIT0gJ2Jhc2ljJzoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyIGRvZXMgbm90IHN1cHBvcnQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHRoZSBmb2xsb3dpbmcgc2NoZW1lOiAnJXMnIiAlIHNjaGVtZSkKIAogICAgIGRlZiByZXRyeV9odHRwX2RpZ2VzdF9hdXRoKHNlbGYsIHJlcSwgYXV0aCk6CiAgICAgICAgIHRva2VuLCBjaGFsbGVuZ2UgPSBhdXRoLnNwbGl0KCcgJywgMSkKQEAgLTk0MSw3ICsxMDUzLDcgQEAKICAgICAgICAgIyBhdXRoZW50aWNhdGlvbiwgYW5kIHRvIHByb3ZpZGUgc29tZSBtZXNzYWdlIGludGVncml0eSBwcm90ZWN0aW9uLgogICAgICAgICAjIFRoaXMgaXNuJ3QgYSBmYWJ1bG91cyBlZmZvcnQsIGJ1dCBpdCdzIHByb2JhYmx5IEdvb2QgRW5vdWdoLgogICAgICAgICBzID0gIiVzOiVzOiVzOiIgJSAoc2VsZi5ub25jZV9jb3VudCwgbm9uY2UsIHRpbWUuY3RpbWUoKSkKLSAgICAgICAgYiA9IHMuZW5jb2RlKCJhc2NpaSIpICsgcmFuZG9tYnl0ZXMoOCkKKyAgICAgICAgYiA9IHMuZW5jb2RlKCJhc2NpaSIpICsgX3JhbmRvbWJ5dGVzKDgpCiAgICAgICAgIGRpZyA9IGhhc2hsaWIuc2hhMShiKS5oZXhkaWdlc3QoKQogICAgICAgICByZXR1cm4gZGlnWzoxNl0KIApAQCAtMTA2Niw3ICsxMTc4LDcgQEAKICAgICAgICAgaWYgcmVxdWVzdC5kYXRhIGlzIG5vdCBOb25lOiAgIyBQT1NUCiAgICAgICAgICAgICBkYXRhID0gcmVxdWVzdC5kYXRhCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHN0cik6Ci0gICAgICAgICAgICAgICAgbXNnID0gIlBPU1QgZGF0YSBzaG91bGQgYmUgYnl0ZXMgb3IgYW4gaXRlcmFibGUgb2YgYnl0ZXMuICJcCisgICAgICAgICAgICAgICAgbXNnID0gIlBPU1QgZGF0YSBzaG91bGQgYmUgYnl0ZXMgb3IgYW4gaXRlcmFibGUgb2YgYnl0ZXMuICIgXAogICAgICAgICAgICAgICAgICAgICAgICJJdCBjYW5ub3QgYmUgb2YgdHlwZSBzdHIuIgogICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpCiAgICAgICAgICAgICBpZiBub3QgcmVxdWVzdC5oYXNfaGVhZGVyKCdDb250ZW50LXR5cGUnKToKQEAgLTExNjIsNyArMTI3NCw2IEBACiAgICAgaHR0cF9yZXF1ZXN0ID0gQWJzdHJhY3RIVFRQSGFuZGxlci5kb19yZXF1ZXN0XwogCiBpZiBoYXNhdHRyKGh0dHAuY2xpZW50LCAnSFRUUFNDb25uZWN0aW9uJyk6Ci0gICAgaW1wb3J0IHNzbAogCiAgICAgY2xhc3MgSFRUUFNIYW5kbGVyKEFic3RyYWN0SFRUUEhhbmRsZXIpOgogCkBAIC0xMTc3LDYgKzEyODgsOCBAQAogCiAgICAgICAgIGh0dHBzX3JlcXVlc3QgPSBBYnN0cmFjdEhUVFBIYW5kbGVyLmRvX3JlcXVlc3RfCiAKKyAgICBfX2FsbF9fLmFwcGVuZCgnSFRUUFNIYW5kbGVyJykKKwogY2xhc3MgSFRUUENvb2tpZVByb2Nlc3NvcihCYXNlSGFuZGxlcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvb2tpZWphcj1Ob25lKToKICAgICAgICAgaW1wb3J0IGh0dHAuY29va2llamFyCkBAIC0xNDYzLDYgKzE1NzYsOSBAQAogCiAgICAgIyBDb25zdHJ1Y3RvcgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm94aWVzPU5vbmUsICoqeDUwOSk6CisgICAgICAgIG1zZyA9ICIlKGNsYXNzKXMgc3R5bGUgb2YgaW52b2tpbmcgcmVxdWVzdHMgaXMgZGVwcmVjYXRlZC4gIiBcCisgICAgICAgICAgICAgICJVc2UgbmV3ZXIgdXJsb3BlbiBmdW5jdGlvbnMvbWV0aG9kcyIgJSB7J2NsYXNzJzogc2VsZi5fX2NsYXNzX18uX19uYW1lX199CisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MykKICAgICAgICAgaWYgcHJveGllcyBpcyBOb25lOgogICAgICAgICAgICAgcHJveGllcyA9IGdldHByb3hpZXMoKQogICAgICAgICBhc3NlcnQgaGFzYXR0cihwcm94aWVzLCAna2V5cycpLCAicHJveGllcyBtdXN0IGJlIGEgbWFwcGluZyIKQEAgLTE1NDIsNiArMTY1OCw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgbmFtZSkodXJsKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCBuYW1lKSh1cmwsIGRhdGEpCisgICAgICAgIGV4Y2VwdCBIVFRQRXJyb3I6CisgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIG1zZzoKICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJ3NvY2tldCBlcnJvcicsIG1zZykud2l0aF90cmFjZWJhY2soc3lzLmV4Y19pbmZvKClbMl0pCiAKQEAgLTE3NjAsOCArMTg3OCw4IEBACiAKICAgICBkZWYgb3Blbl9sb2NhbF9maWxlKHNlbGYsIHVybCk6CiAgICAgICAgICIiIlVzZSBsb2NhbCBmaWxlLiIiIgotICAgICAgICBpbXBvcnQgbWltZXR5cGVzLCBlbWFpbC51dGlscwotICAgICAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworICAgICAgICBpbXBvcnQgZW1haWwudXRpbHMKKyAgICAgICAgaW1wb3J0IG1pbWV0eXBlcwogICAgICAgICBob3N0LCBmaWxlID0gc3BsaXRob3N0KHVybCkKICAgICAgICAgbG9jYWxuYW1lID0gdXJsMnBhdGhuYW1lKGZpbGUpCiAgICAgICAgIHRyeToKQEAgLTE4NzcsNyArMTk5NSw3IEBACiAgICAgICAgIG1zZy5hcHBlbmQoJ0NvbnRlbnQtdHlwZTogJXMnICUgdHlwZSkKICAgICAgICAgaWYgZW5jb2RpbmcgPT0gJ2Jhc2U2NCc6CiAgICAgICAgICAgICAjIFhYWCBpcyB0aGlzIGVuY29kaW5nL2RlY29kaW5nIG9rPwotICAgICAgICAgICAgZGF0YSA9IGJhc2U2NC5kZWNvZGVieXRlcyhkYXRhLmVuY29kZSgnYXNjaWknKSkuZGVjb2RlKCdsYXRpbjEnKQorICAgICAgICAgICAgZGF0YSA9IGJhc2U2NC5kZWNvZGVieXRlcyhkYXRhLmVuY29kZSgnYXNjaWknKSkuZGVjb2RlKCdsYXRpbi0xJykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGRhdGEgPSB1bnF1b3RlKGRhdGEpCiAgICAgICAgIG1zZy5hcHBlbmQoJ0NvbnRlbnQtTGVuZ3RoOiAlZCcgJSBsZW4oZGF0YSkpCkBAIC0xOTcwLDcgKzIwODgsNiBAQAogICAgICAgICAgICAgVVJMb3BlbmVyLmh0dHBfZXJyb3JfZGVmYXVsdChzZWxmLCB1cmwsIGZwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJjb2RlLCBlcnJtc2csIGhlYWRlcnMpCiAgICAgICAgIHN0dWZmID0gaGVhZGVyc1snd3d3LWF1dGhlbnRpY2F0ZSddCi0gICAgICAgIGltcG9ydCByZQogICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKCdbIFx0XSooW14gXHRdKylbIFx0XStyZWFsbT0iKFteIl0qKSInLCBzdHVmZikKICAgICAgICAgaWYgbm90IG1hdGNoOgogICAgICAgICAgICAgVVJMb3BlbmVyLmh0dHBfZXJyb3JfZGVmYXVsdChzZWxmLCB1cmwsIGZwLApAQCAtMTk5Niw3ICsyMTEzLDYgQEAKICAgICAgICAgICAgIFVSTG9wZW5lci5odHRwX2Vycm9yX2RlZmF1bHQoc2VsZiwgdXJsLCBmcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyY29kZSwgZXJybXNnLCBoZWFkZXJzKQogICAgICAgICBzdHVmZiA9IGhlYWRlcnNbJ3Byb3h5LWF1dGhlbnRpY2F0ZSddCi0gICAgICAgIGltcG9ydCByZQogICAgICAgICBtYXRjaCA9IHJlLm1hdGNoKCdbIFx0XSooW14gXHRdKylbIFx0XStyZWFsbT0iKFteIl0qKSInLCBzdHVmZikKICAgICAgICAgaWYgbm90IG1hdGNoOgogICAgICAgICAgICAgVVJMb3BlbmVyLmh0dHBfZXJyb3JfZGVmYXVsdChzZWxmLCB1cmwsIGZwLApAQCAtMjI4Miw4ICsyMzk4LDYgQEAKICAgICAgICdleGNlcHRpb25zJzogWydmb28uYmFyJywgJyouYmFyLmNvbScsICcxMjcuMC4wLjEnLCAnMTAuMScsICcxMC4wLzE2J10KICAgICB9CiAgICAgIiIiCi0gICAgaW1wb3J0IHJlCi0gICAgaW1wb3J0IHNvY2tldAogICAgIGZyb20gZm5tYXRjaCBpbXBvcnQgZm5tYXRjaAogCiAgICAgaG9zdG9ubHksIHBvcnQgPSBzcGxpdHBvcnQoaG9zdCkKQEAgLTIzODYsNyArMjUwMCw2IEBACiAgICAgICAgICAgICAgICAgICAgIGZvciBwIGluIHByb3h5U2VydmVyLnNwbGl0KCc7Jyk6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b2NvbCwgYWRkcmVzcyA9IHAuc3BsaXQoJz0nLCAxKQogICAgICAgICAgICAgICAgICAgICAgICAgIyBTZWUgaWYgYWRkcmVzcyBoYXMgYSB0eXBlOi8vIHByZWZpeAotICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHJlCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmUubWF0Y2goJ14oW14vOl0rKTovLycsIGFkZHJlc3MpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MgPSAnJXM6Ly8lcycgJSAocHJvdG9jb2wsIGFkZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICBwcm94aWVzW3Byb3RvY29sXSA9IGFkZHJlc3MKQEAgLTI0MTgsNyArMjUzMSw2IEBACiAgICAgZGVmIHByb3h5X2J5cGFzc19yZWdpc3RyeShob3N0KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wb3J0IHdpbnJlZwotICAgICAgICAgICAgaW1wb3J0IHJlCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICMgU3RkIG1vZHVsZXMsIHNvIHNob3VsZCBiZSBhcm91bmQgLSBidXQgeW91IG5ldmVyIGtub3chCiAgICAgICAgICAgICByZXR1cm4gMApkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9yZXNwb25zZS5weSBiL0xpYi91cmxsaWIvcmVzcG9uc2UucHkKaW5kZXggZmZhYTVmYS4uMWNmMWQxYSAxMDA2NDQKLS0tIGEvTGliL3VybGxpYi9yZXNwb25zZS5weQorKysgYi9MaWIvdXJsbGliL3Jlc3BvbnNlLnB5CkBAIC0zNywxMiArMzcsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYpLCBzZWxmLmZwKQogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmZwOgorICAgICAgICAgICAgc2VsZi5mcC5jbG9zZSgpCisgICAgICAgIHNlbGYuZnAgPSBOb25lCiAgICAgICAgIHNlbGYucmVhZCA9IE5vbmUKICAgICAgICAgc2VsZi5yZWFkbGluZSA9IE5vbmUKICAgICAgICAgc2VsZi5yZWFkbGluZXMgPSBOb25lCiAgICAgICAgIHNlbGYuZmlsZW5vID0gTm9uZQotICAgICAgICBpZiBzZWxmLmZwOiBzZWxmLmZwLmNsb3NlKCkKLSAgICAgICAgc2VsZi5mcCA9IE5vbmUKKyAgICAgICAgc2VsZi5fX2l0ZXJfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5fX25leHRfXyA9IE5vbmUKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgIGlmIHNlbGYuZnAgaXMgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi91dWlkLnB5IGIvTGliL3V1aWQucHkKaW5kZXggNTY4NGFkNy4uMGRmMDc0MyAxMDA2NDQKLS0tIGEvTGliL3V1aWQucHkKKysrIGIvTGliL3V1aWQucHkKQEAgLTQ0MCw3ICs0NDAsNyBAQAogICAgIGltcG9ydCBzeXMKICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgIGltcG9ydCBvcwotICAgICAgICBpZiBpbnQob3MudW5hbWUoKVsyXS5zcGxpdCgnLicpWzBdKSA+PSA5OgorICAgICAgICBpZiBpbnQob3MudW5hbWUoKS5yZWxlYXNlLnNwbGl0KCcuJylbMF0pID49IDk6CiAgICAgICAgICAgICBfdXVpZF9nZW5lcmF0ZV9yYW5kb20gPSBfdXVpZF9nZW5lcmF0ZV90aW1lID0gTm9uZQogCiAgICAgIyBPbiBXaW5kb3dzIHByaW9yIHRvIDIwMDAsIFV1aWRDcmVhdGUgZ2l2ZXMgYSBVVUlEIGNvbnRhaW5pbmcgdGhlCmRpZmYgLS1naXQgYS9MaWIvdmVudi9fX2luaXRfXy5weSBiL0xpYi92ZW52L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MjA3NDcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdmVudi9fX2luaXRfXy5weQpAQCAtMCwwICsxLDQwNyBAQAorIiIiCitWaXJ0dWFsIGVudmlyb25tZW50ICh2ZW52KSBwYWNrYWdlIGZvciBQeXRob24uIEJhc2VkIG9uIFBFUCA0MDUuCisKK0NvcHlyaWdodCAoQykgMjAxMS0yMDEyIFZpbmF5IFNhamlwLgorTGljZW5zZWQgdG8gdGhlIFBTRiB1bmRlciBhIGNvbnRyaWJ1dG9yIGFncmVlbWVudC4KKwordXNhZ2U6IHB5dGhvbiAtbSB2ZW52IFstaF0gWy0tc3lzdGVtLXNpdGUtcGFja2FnZXNdIFstLXN5bWxpbmtzXSBbLS1jbGVhcl0KKyAgICAgICAgICAgIFstLXVwZ3JhZGVdCisgICAgICAgICAgICBFTlZfRElSIFtFTlZfRElSIC4uLl0KKworQ3JlYXRlcyB2aXJ0dWFsIFB5dGhvbiBlbnZpcm9ubWVudHMgaW4gb25lIG9yIG1vcmUgdGFyZ2V0IGRpcmVjdG9yaWVzLgorCitwb3NpdGlvbmFsIGFyZ3VtZW50czoKKyAgRU5WX0RJUiAgICAgICAgICAgICAgIEEgZGlyZWN0b3J5IHRvIGNyZWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4uCisKK29wdGlvbmFsIGFyZ3VtZW50czoKKyAgLWgsIC0taGVscCAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKyAgLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgR2l2ZSB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCBhY2Nlc3MgdG8gdGhlIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZS1wYWNrYWdlcyBkaXIuCisgIC0tc3ltbGlua3MgICAgICAgICAgICBBdHRlbXB0IHRvIHN5bWxpbmsgcmF0aGVyIHRoYW4gY29weS4KKyAgLS1jbGVhciAgICAgICAgICAgICAgIERlbGV0ZSB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IGlmIGl0IGFscmVhZHkgZXhpc3RzLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgbm90IHNwZWNpZmllZCBhbmQgdGhlIGRpcmVjdG9yeSBleGlzdHMsIGFuIGVycm9yIGlzCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZWQuCisgIC0tdXBncmFkZSAgICAgICAgICAgICBVcGdyYWRlIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgdG8gdXNlIHRoaXMgdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgb2YgUHl0aG9uLCBhc3N1bWluZyBQeXRob24gaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuCisiIiIKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBpbworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25maWcKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkaW5nID0gTm9uZQorCitsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworY2xhc3MgQ29udGV4dDoKKyAgICAiIiIKKyAgICBIb2xkcyBpbmZvcm1hdGlvbiBhYm91dCBhIGN1cnJlbnQgdmVudiBjcmVhdGlvbi91cGdyYWRlIHJlcXVlc3QuCisgICAgIiIiCisgICAgcGFzcworCisKK2NsYXNzIEVudkJ1aWxkZXI6CisgICAgIiIiCisgICAgVGhpcyBjbGFzcyBleGlzdHMgdG8gYWxsb3cgdmlydHVhbCBlbnZpcm9ubWVudCBjcmVhdGlvbiB0byBiZQorICAgIGN1c3RvbWlzZWQuIFRoZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIGRldGVybWluZSB0aGUgYnVpbGRlcidzCisgICAgYmVoYXZpb3VyIHdoZW4gY2FsbGVkIHVwb24gdG8gY3JlYXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudC4KKworICAgIEJ5IGRlZmF1bHQsIHRoZSBidWlsZGVyIG1ha2VzIHRoZSBzeXN0ZW0gKGdsb2JhbCkgc2l0ZS1wYWNrYWdlcyBkaXIKKyAgICAqdW4qYXZhaWxhYmxlIHRvIHRoZSBjcmVhdGVkIGVudmlyb25tZW50LgorCisgICAgSWYgaW52b2tlZCB1c2luZyB0aGUgUHl0aG9uIC1tIG9wdGlvbiwgdGhlIGRlZmF1bHQgaXMgdG8gdXNlIGNvcHlpbmcKKyAgICBvbiBXaW5kb3dzIHBsYXRmb3JtcyBidXQgc3ltbGlua3MgZWxzZXdoZXJlLiBJZiBpbnN0YW50aWF0ZWQgc29tZQorICAgIG90aGVyIHdheSwgdGhlIGRlZmF1bHQgaXMgdG8gKm5vdCogdXNlIHN5bWxpbmtzLgorCisgICAgOnBhcmFtIHN5c3RlbV9zaXRlX3BhY2thZ2VzOiBJZiBUcnVlLCB0aGUgc3lzdGVtIChnbG9iYWwpIHNpdGUtcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpciBpcyBhdmFpbGFibGUgdG8gY3JlYXRlZCBlbnZpcm9ubWVudHMuCisgICAgOnBhcmFtIGNsZWFyOiBJZiBUcnVlIGFuZCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBleGlzdHMsIGl0IGlzIGRlbGV0ZWQuCisgICAgICAgICAgICAgICAgICBPdGhlcndpc2UsIGlmIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGV4aXN0cywgYW4gZXJyb3IgaXMKKyAgICAgICAgICAgICAgICAgIHJhaXNlZC4KKyAgICA6cGFyYW0gc3ltbGlua3M6IElmIFRydWUsIGF0dGVtcHQgdG8gc3ltbGluayByYXRoZXIgdGhhbiBjb3B5IGZpbGVzIGludG8KKyAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgZW52aXJvbm1lbnQuCisgICAgOnBhcmFtIHVwZ3JhZGU6IElmIFRydWUsIHVwZ3JhZGUgYW4gZXhpc3RpbmcgdmlydHVhbCBlbnZpcm9ubWVudC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1GYWxzZSwgY2xlYXI9RmFsc2UsCisgICAgICAgICAgICAgICAgIHN5bWxpbmtzPUZhbHNlLCB1cGdyYWRlPUZhbHNlKToKKyAgICAgICAgc2VsZi5zeXN0ZW1fc2l0ZV9wYWNrYWdlcyA9IHN5c3RlbV9zaXRlX3BhY2thZ2VzCisgICAgICAgIHNlbGYuY2xlYXIgPSBjbGVhcgorICAgICAgICBzZWxmLnN5bWxpbmtzID0gc3ltbGlua3MKKyAgICAgICAgc2VsZi51cGdyYWRlID0gdXBncmFkZQorCisgICAgZGVmIGNyZWF0ZShzZWxmLCBlbnZfZGlyKToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQgaW4gYSBkaXJlY3RvcnkuCisKKyAgICAgICAgOnBhcmFtIGVudl9kaXI6IFRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIGNyZWF0ZSBhbiBlbnZpcm9ubWVudCBpbi4KKworICAgICAgICAiIiIKKyAgICAgICAgZW52X2RpciA9IG9zLnBhdGguYWJzcGF0aChlbnZfZGlyKQorICAgICAgICBjb250ZXh0ID0gc2VsZi5lbnN1cmVfZGlyZWN0b3JpZXMoZW52X2RpcikKKyAgICAgICAgc2VsZi5jcmVhdGVfY29uZmlndXJhdGlvbihjb250ZXh0KQorICAgICAgICBzZWxmLnNldHVwX3B5dGhvbihjb250ZXh0KQorICAgICAgICBpZiBub3Qgc2VsZi51cGdyYWRlOgorICAgICAgICAgICAgc2VsZi5zZXR1cF9zY3JpcHRzKGNvbnRleHQpCisgICAgICAgICAgICBzZWxmLnBvc3Rfc2V0dXAoY29udGV4dCkKKworICAgIGRlZiBlbnN1cmVfZGlyZWN0b3JpZXMoc2VsZiwgZW52X2Rpcik6CisgICAgICAgICIiIgorICAgICAgICBDcmVhdGUgdGhlIGRpcmVjdG9yaWVzIGZvciB0aGUgZW52aXJvbm1lbnQuCisKKyAgICAgICAgUmV0dXJucyBhIGNvbnRleHQgb2JqZWN0IHdoaWNoIGhvbGRzIHBhdGhzIGluIHRoZSBlbnZpcm9ubWVudCwKKyAgICAgICAgZm9yIHVzZSBieSBzdWJzZXF1ZW50IGxvZ2ljLgorICAgICAgICAiIiIKKworICAgICAgICBkZWYgY3JlYXRlX2lmX25lZWRlZChkKToKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkKToKKyAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhkKQorCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGVudl9kaXIpIGFuZCBub3QgKHNlbGYuY2xlYXIgb3Igc2VsZi51cGdyYWRlKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0RpcmVjdG9yeSBleGlzdHM6ICVzJyAlIGVudl9kaXIpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGVudl9kaXIpIGFuZCBzZWxmLmNsZWFyOgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShlbnZfZGlyKQorICAgICAgICBjb250ZXh0ID0gQ29udGV4dCgpCisgICAgICAgIGNvbnRleHQuZW52X2RpciA9IGVudl9kaXIKKyAgICAgICAgY29udGV4dC5lbnZfbmFtZSA9IG9zLnBhdGguc3BsaXQoZW52X2RpcilbMV0KKyAgICAgICAgY29udGV4dC5wcm9tcHQgPSAnKCVzKSAnICUgY29udGV4dC5lbnZfbmFtZQorICAgICAgICBjcmVhdGVfaWZfbmVlZGVkKGVudl9kaXIpCisgICAgICAgIGVudiA9IG9zLmVudmlyb24KKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCAnX19QWVZFTlZfTEFVTkNIRVJfXycgaW4gZW52OgorICAgICAgICAgICAgZXhlY3V0YWJsZSA9IG9zLmVudmlyb25bJ19fUFlWRU5WX0xBVU5DSEVSX18nXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZXhlY3V0YWJsZSA9IHN5cy5leGVjdXRhYmxlCisgICAgICAgIGRpcm5hbWUsIGV4ZW5hbWUgPSBvcy5wYXRoLnNwbGl0KG9zLnBhdGguYWJzcGF0aChleGVjdXRhYmxlKSkKKyAgICAgICAgY29udGV4dC5leGVjdXRhYmxlID0gZXhlY3V0YWJsZQorICAgICAgICBjb250ZXh0LnB5dGhvbl9kaXIgPSBkaXJuYW1lCisgICAgICAgIGNvbnRleHQucHl0aG9uX2V4ZSA9IGV4ZW5hbWUKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgICAgICBiaW5uYW1lID0gJ1NjcmlwdHMnCisgICAgICAgICAgICBpbmNwYXRoID0gJ0luY2x1ZGUnCisgICAgICAgICAgICBsaWJwYXRoID0gb3MucGF0aC5qb2luKGVudl9kaXIsICdMaWInLCAnc2l0ZS1wYWNrYWdlcycpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiaW5uYW1lID0gJ2JpbicKKyAgICAgICAgICAgIGluY3BhdGggPSAnaW5jbHVkZScKKyAgICAgICAgICAgIGxpYnBhdGggPSBvcy5wYXRoLmpvaW4oZW52X2RpciwgJ2xpYicsICdweXRob24lZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSwgJ3NpdGUtcGFja2FnZXMnKQorICAgICAgICBjb250ZXh0LmluY19wYXRoID0gcGF0aCA9IG9zLnBhdGguam9pbihlbnZfZGlyLCBpbmNwYXRoKQorICAgICAgICBjcmVhdGVfaWZfbmVlZGVkKHBhdGgpCisgICAgICAgIGNyZWF0ZV9pZl9uZWVkZWQobGlicGF0aCkKKyAgICAgICAgY29udGV4dC5iaW5fcGF0aCA9IGJpbnBhdGggPSBvcy5wYXRoLmpvaW4oZW52X2RpciwgYmlubmFtZSkKKyAgICAgICAgY29udGV4dC5iaW5fbmFtZSA9IGJpbm5hbWUKKyAgICAgICAgY29udGV4dC5lbnZfZXhlID0gb3MucGF0aC5qb2luKGJpbnBhdGgsIGV4ZW5hbWUpCisgICAgICAgIGNyZWF0ZV9pZl9uZWVkZWQoYmlucGF0aCkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQKKworICAgIGRlZiBjcmVhdGVfY29uZmlndXJhdGlvbihzZWxmLCBjb250ZXh0KToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZSBpbmRpY2F0aW5nIHdoZXJlIHRoZSBlbnZpcm9ubWVudCdzIFB5dGhvbgorICAgICAgICB3YXMgY29waWVkIGZyb20sIGFuZCB3aGV0aGVyIHRoZSBzeXN0ZW0gc2l0ZS1wYWNrYWdlcyBzaG91bGQgYmUgbWFkZQorICAgICAgICBhdmFpbGFibGUgaW4gdGhlIGVudmlyb25tZW50LgorCisgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgICIiIgorICAgICAgICBjb250ZXh0LmNmZ19wYXRoID0gcGF0aCA9IG9zLnBhdGguam9pbihjb250ZXh0LmVudl9kaXIsICdweXZlbnYuY2ZnJykKKyAgICAgICAgd2l0aCBvcGVuKHBhdGgsICd3JywgZW5jb2Rpbmc9J3V0Zi04JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoJ2hvbWUgPSAlc1xuJyAlIGNvbnRleHQucHl0aG9uX2RpcikKKyAgICAgICAgICAgIGlmIHNlbGYuc3lzdGVtX3NpdGVfcGFja2FnZXM6CisgICAgICAgICAgICAgICAgaW5jbCA9ICd0cnVlJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpbmNsID0gJ2ZhbHNlJworICAgICAgICAgICAgZi53cml0ZSgnaW5jbHVkZS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcyA9ICVzXG4nICUgaW5jbCkKKyAgICAgICAgICAgIGYud3JpdGUoJ3ZlcnNpb24gPSAlZC4lZC4lZFxuJyAlIHN5cy52ZXJzaW9uX2luZm9bOjNdKQorCisgICAgaWYgb3MubmFtZSA9PSAnbnQnOgorICAgICAgICBkZWYgaW5jbHVkZV9iaW5hcnkoc2VsZiwgZik6CisgICAgICAgICAgICBpZiBmLmVuZHN3aXRoKCgnLnB5ZCcsICcuZGxsJykpOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZi5zdGFydHN3aXRoKCdweXRob24nKSBhbmQgZi5lbmRzd2l0aCgnLmV4ZScpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgc3ltbGlua19vcl9jb3B5KHNlbGYsIHNyYywgZHN0KToKKyAgICAgICAgIiIiCisgICAgICAgIFRyeSBzeW1saW5raW5nIGEgZmlsZSwgYW5kIGlmIHRoYXQgZmFpbHMsIGZhbGwgYmFjayB0byBjb3B5aW5nLgorICAgICAgICAiIiIKKyAgICAgICAgZm9yY2VfY29weSA9IG5vdCBzZWxmLnN5bWxpbmtzCisgICAgICAgIGlmIG5vdCBmb3JjZV9jb3B5OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzbGluayhkc3QpOiAjIGNhbid0IGxpbmsgdG8gaXRzZWxmIQorICAgICAgICAgICAgICAgICAgICBvcy5zeW1saW5rKHNyYywgZHN0KQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjogICAjIG1heSBuZWVkIHRvIHVzZSBhIG1vcmUgc3BlY2lmaWMgZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ1VuYWJsZSB0byBzeW1saW5rICVyIHRvICVyJywgc3JjLCBkc3QpCisgICAgICAgICAgICAgICAgZm9yY2VfY29weSA9IFRydWUKKyAgICAgICAgaWYgZm9yY2VfY29weToKKyAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzcmMsIGRzdCkKKworICAgIGRlZiBzZXR1cF9weXRob24oc2VsZiwgY29udGV4dCk6CisgICAgICAgICIiIgorICAgICAgICBTZXQgdXAgYSBQeXRob24gZXhlY3V0YWJsZSBpbiB0aGUgZW52aXJvbm1lbnQuCisKKyAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGJpbnBhdGggPSBjb250ZXh0LmJpbl9wYXRoCisgICAgICAgIGV4ZW5hbWUgPSBjb250ZXh0LnB5dGhvbl9leGUKKyAgICAgICAgcGF0aCA9IGNvbnRleHQuZW52X2V4ZQorICAgICAgICBjb3BpZXIgPSBzZWxmLnN5bWxpbmtfb3JfY29weQorICAgICAgICBjb3BpZXIoY29udGV4dC5leGVjdXRhYmxlLCBwYXRoKQorICAgICAgICBkaXJuYW1lID0gY29udGV4dC5weXRob25fZGlyCisgICAgICAgIGlmIG9zLm5hbWUgIT0gJ250JzoKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzbGluayhwYXRoKToKKyAgICAgICAgICAgICAgICBvcy5jaG1vZChwYXRoLCAwbzc1NSkKKyAgICAgICAgICAgIGZvciBzdWZmaXggaW4gKCdweXRob24nLCAncHl0aG9uMycpOgorICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oYmlucGF0aCwgc3VmZml4KQorICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwYXRoKToKKyAgICAgICAgICAgICAgICAgICAgb3Muc3ltbGluayhleGVuYW1lLCBwYXRoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3ViZGlyID0gJ0RMTHMnCisgICAgICAgICAgICBpbmNsdWRlID0gc2VsZi5pbmNsdWRlX2JpbmFyeQorICAgICAgICAgICAgZmlsZXMgPSBbZiBmb3IgZiBpbiBvcy5saXN0ZGlyKGRpcm5hbWUpIGlmIGluY2x1ZGUoZildCisgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgZikKKyAgICAgICAgICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4oYmlucGF0aCwgZikKKyAgICAgICAgICAgICAgICBpZiBkc3QgIT0gY29udGV4dC5lbnZfZXhlOiAgIyBhbHJlYWR5IGRvbmUsIGFib3ZlCisgICAgICAgICAgICAgICAgICAgIGNvcGllcihzcmMsIGRzdCkKKyAgICAgICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgc3ViZGlyKQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihkaXJuYW1lKToKKyAgICAgICAgICAgICAgICBmaWxlcyA9IFtmIGZvciBmIGluIG9zLmxpc3RkaXIoZGlybmFtZSkgaWYgaW5jbHVkZShmKV0KKyAgICAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKGRpcm5hbWUsIGYpCisgICAgICAgICAgICAgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihiaW5wYXRoLCBmKQorICAgICAgICAgICAgICAgICAgICBjb3BpZXIoc3JjLCBkc3QpCisgICAgICAgICAgICAjIGNvcHkgaW5pdC50Y2wgb3ZlcgorICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoY29udGV4dC5weXRob25fZGlyKToKKyAgICAgICAgICAgICAgICBpZiAnaW5pdC50Y2wnIGluIGZpbGVzOgorICAgICAgICAgICAgICAgICAgICB0Y2xkaXIgPSBvcy5wYXRoLmJhc2VuYW1lKHJvb3QpCisgICAgICAgICAgICAgICAgICAgIHRjbGRpciA9IG9zLnBhdGguam9pbihjb250ZXh0LmVudl9kaXIsICdMaWInLCB0Y2xkaXIpCisgICAgICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKHRjbGRpcikKKyAgICAgICAgICAgICAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHJvb3QsICdpbml0LnRjbCcpCisgICAgICAgICAgICAgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0Y2xkaXIsICdpbml0LnRjbCcpCisgICAgICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzcmMsIGRzdCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgIGRlZiBzZXR1cF9zY3JpcHRzKHNlbGYsIGNvbnRleHQpOgorICAgICAgICAiIiIKKyAgICAgICAgU2V0IHVwIHNjcmlwdHMgaW50byB0aGUgY3JlYXRlZCBlbnZpcm9ubWVudCBmcm9tIGEgZGlyZWN0b3J5LgorCisgICAgICAgIFRoaXMgbWV0aG9kIGluc3RhbGxzIHRoZSBkZWZhdWx0IHNjcmlwdHMgaW50byB0aGUgZW52aXJvbm1lbnQKKyAgICAgICAgYmVpbmcgY3JlYXRlZC4gWW91IGNhbiBwcmV2ZW50IHRoZSBkZWZhdWx0IGluc3RhbGxhdGlvbiBieSBvdmVycmlkaW5nCisgICAgICAgIHRoaXMgbWV0aG9kIGlmIHlvdSByZWFsbHkgbmVlZCB0bywgb3IgaWYgeW91IG5lZWQgdG8gc3BlY2lmeQorICAgICAgICBhIGRpZmZlcmVudCBsb2NhdGlvbiBmb3IgdGhlIHNjcmlwdHMgdG8gaW5zdGFsbC4gQnkgZGVmYXVsdCwgdGhlCisgICAgICAgICdzY3JpcHRzJyBkaXJlY3RvcnkgaW4gdGhlIHZlbnYgcGFja2FnZSBpcyB1c2VkIGFzIHRoZSBzb3VyY2Ugb2YKKyAgICAgICAgc2NyaXB0cyB0byBpbnN0YWxsLgorICAgICAgICAiIiIKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHBhdGgsICdzY3JpcHRzJykKKyAgICAgICAgc2VsZi5pbnN0YWxsX3NjcmlwdHMoY29udGV4dCwgcGF0aCkKKworICAgIGRlZiBwb3N0X3NldHVwKHNlbGYsIGNvbnRleHQpOgorICAgICAgICAiIiIKKyAgICAgICAgSG9vayBmb3IgcG9zdC1zZXR1cCBtb2RpZmljYXRpb24gb2YgdGhlIHZlbnYuIFN1YmNsYXNzZXMgbWF5IGluc3RhbGwKKyAgICAgICAgYWRkaXRpb25hbCBwYWNrYWdlcyBvciBzY3JpcHRzIGhlcmUsIGFkZCBhY3RpdmF0aW9uIHNoZWxsIHNjcmlwdHMsIGV0Yy4KKworICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAorICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICAiIiIKKyAgICAgICAgcGFzcworCisgICAgZGVmIHJlcGxhY2VfdmFyaWFibGVzKHNlbGYsIHRleHQsIGNvbnRleHQpOgorICAgICAgICAiIiIKKyAgICAgICAgUmVwbGFjZSB2YXJpYWJsZSBwbGFjZWhvbGRlcnMgaW4gc2NyaXB0IHRleHQgd2l0aCBjb250ZXh0LXNwZWNpZmljCisgICAgICAgIHZhcmlhYmxlcy4KKworICAgICAgICBSZXR1cm4gdGhlIHRleHQgcGFzc2VkIGluICwgYnV0IHdpdGggdmFyaWFibGVzIHJlcGxhY2VkLgorCisgICAgICAgIDpwYXJhbSB0ZXh0OiBUaGUgdGV4dCBpbiB3aGljaCB0byByZXBsYWNlIHBsYWNlaG9sZGVyIHZhcmlhYmxlcy4KKyAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoJ19fVkVOVl9ESVJfXycsIGNvbnRleHQuZW52X2RpcikKKyAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgnX19WRU5WX05BTUVfXycsIGNvbnRleHQucHJvbXB0KQorICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCdfX1ZFTlZfQklOX05BTUVfXycsIGNvbnRleHQuYmluX25hbWUpCisgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoJ19fVkVOVl9QWVRIT05fXycsIGNvbnRleHQuZW52X2V4ZSkKKyAgICAgICAgcmV0dXJuIHRleHQKKworICAgIGRlZiBpbnN0YWxsX3NjcmlwdHMoc2VsZiwgY29udGV4dCwgcGF0aCk6CisgICAgICAgICIiIgorICAgICAgICBJbnN0YWxsIHNjcmlwdHMgaW50byB0aGUgY3JlYXRlZCBlbnZpcm9ubWVudCBmcm9tIGEgZGlyZWN0b3J5LgorCisgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgIDpwYXJhbSBwYXRoOiAgICBBYnNvbHV0ZSBwYXRobmFtZSBvZiBhIGRpcmVjdG9yeSBjb250YWluaW5nIHNjcmlwdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNjcmlwdHMgaW4gdGhlICdjb21tb24nIHN1YmRpcmVjdG9yeSBvZiB0aGlzIGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aG9zZSBpbiB0aGUgZGlyZWN0b3J5IG5hbWVkIGZvciB0aGUgcGxhdGZvcm0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIHJ1biBvbiwgYXJlIGluc3RhbGxlZCBpbiB0aGUgY3JlYXRlZCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBsYWNlaG9sZGVyIHZhcmlhYmxlcyBhcmUgcmVwbGFjZWQgd2l0aCBlbnZpcm9ubWVudC0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIHZhbHVlcy4KKyAgICAgICAgIiIiCisgICAgICAgIGJpbnBhdGggPSBjb250ZXh0LmJpbl9wYXRoCisgICAgICAgIHBsZW4gPSBsZW4ocGF0aCkKKyAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsocGF0aCk6CisgICAgICAgICAgICBpZiByb290ID09IHBhdGg6ICMgYXQgdG9wLWxldmVsLCByZW1vdmUgaXJyZWxldmFudCBkaXJzCisgICAgICAgICAgICAgICAgZm9yIGQgaW4gZGlyc1s6XToKKyAgICAgICAgICAgICAgICAgICAgaWYgZCBub3QgaW4gKCdjb21tb24nLCBvcy5uYW1lKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcnMucmVtb3ZlKGQpCisgICAgICAgICAgICAgICAgY29udGludWUgIyBpZ25vcmUgZmlsZXMgaW4gdG9wIGxldmVsCisgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBzcmNmaWxlID0gb3MucGF0aC5qb2luKHJvb3QsIGYpCisgICAgICAgICAgICAgICAgc3VmZml4ID0gcm9vdFtwbGVuOl0uc3BsaXQob3Muc2VwKVsyOl0KKyAgICAgICAgICAgICAgICBpZiBub3Qgc3VmZml4OgorICAgICAgICAgICAgICAgICAgICBkc3RkaXIgPSBiaW5wYXRoCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZHN0ZGlyID0gb3MucGF0aC5qb2luKGJpbnBhdGgsICpzdWZmaXgpCisgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRzdGRpcik6CisgICAgICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRzdGRpcikKKyAgICAgICAgICAgICAgICBkc3RmaWxlID0gb3MucGF0aC5qb2luKGRzdGRpciwgZikKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oc3JjZmlsZSwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCisgICAgICAgICAgICAgICAgaWYgc3JjZmlsZS5lbmRzd2l0aCgnLmV4ZScpOgorICAgICAgICAgICAgICAgICAgICBtb2RlID0gJ3diJworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG1vZGUgPSAndycKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEuZGVjb2RlKCd1dGYtOCcpCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5yZXBsYWNlX3ZhcmlhYmxlcyhkYXRhLCBjb250ZXh0KQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ3VuYWJsZSB0byBjb3B5IHNjcmlwdCAlciwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heSBiZSBiaW5hcnk6ICVzJywgc3JjZmlsZSwgZSkKKyAgICAgICAgICAgICAgICBpZiBkYXRhIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZHN0ZmlsZSwgbW9kZSkgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHltb2RlKHNyY2ZpbGUsIGRzdGZpbGUpCisKKworZGVmIGNyZWF0ZShlbnZfZGlyLCBzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1GYWxzZSwgY2xlYXI9RmFsc2UsIHN5bWxpbmtzPUZhbHNlKToKKyAgICAiIiIKKyAgICBDcmVhdGUgYSB2aXJ0dWFsIGVudmlyb25tZW50IGluIGEgZGlyZWN0b3J5LgorCisgICAgQnkgZGVmYXVsdCwgbWFrZXMgdGhlIHN5c3RlbSAoZ2xvYmFsKSBzaXRlLXBhY2thZ2VzIGRpciAqdW4qYXZhaWxhYmxlIHRvCisgICAgdGhlIGNyZWF0ZWQgZW52aXJvbm1lbnQsIGFuZCB1c2VzIGNvcHlpbmcgcmF0aGVyIHRoYW4gc3ltbGlua2luZyBmb3IgZmlsZXMKKyAgICBvYnRhaW5lZCBmcm9tIHRoZSBzb3VyY2UgUHl0aG9uIGluc3RhbGxhdGlvbi4KKworICAgIDpwYXJhbSBlbnZfZGlyOiBUaGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBjcmVhdGUgYW4gZW52aXJvbm1lbnQgaW4uCisgICAgOnBhcmFtIHN5c3RlbV9zaXRlX3BhY2thZ2VzOiBJZiBUcnVlLCB0aGUgc3lzdGVtIChnbG9iYWwpIHNpdGUtcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpciBpcyBhdmFpbGFibGUgdG8gdGhlIGVudmlyb25tZW50LgorICAgIDpwYXJhbSBjbGVhcjogSWYgVHJ1ZSBhbmQgdGhlIHRhcmdldCBkaXJlY3RvcnkgZXhpc3RzLCBpdCBpcyBkZWxldGVkLgorICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCBpZiB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBleGlzdHMsIGFuIGVycm9yIGlzCisgICAgICAgICAgICAgICAgICByYWlzZWQuCisgICAgOnBhcmFtIHN5bWxpbmtzOiBJZiBUcnVlLCBhdHRlbXB0IHRvIHN5bWxpbmsgcmF0aGVyIHRoYW4gY29weSBmaWxlcyBpbnRvCisgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIGVudmlyb25tZW50LgorICAgICIiIgorICAgIGJ1aWxkZXIgPSBFbnZCdWlsZGVyKHN5c3RlbV9zaXRlX3BhY2thZ2VzPXN5c3RlbV9zaXRlX3BhY2thZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcj1jbGVhciwgc3ltbGlua3M9c3ltbGlua3MpCisgICAgYnVpbGRlci5jcmVhdGUoZW52X2RpcikKKworZGVmIG1haW4oYXJncz1Ob25lKToKKyAgICBjb21wYXRpYmxlID0gVHJ1ZQorICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAgICAgIGNvbXBhdGlibGUgPSBGYWxzZQorICAgIGVsaWYgbm90IGhhc2F0dHIoc3lzLCAnYmFzZV9wcmVmaXgnKToKKyAgICAgICAgY29tcGF0aWJsZSA9IEZhbHNlCisgICAgaWYgbm90IGNvbXBhdGlibGU6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1RoaXMgc2NyaXB0IGlzIG9ubHkgZm9yIHVzZSB3aXRoIFB5dGhvbiAzLjMnKQorICAgIGVsc2U6CisgICAgICAgIGltcG9ydCBhcmdwYXJzZQorCisgICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKHByb2c9X19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdDcmVhdGVzIHZpcnR1YWwgUHl0aG9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vudmlyb25tZW50cyBpbiBvbmUgb3IgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9yZSB0YXJnZXQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyZWN0b3JpZXMuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXBpbG9nPSdPbmNlIGFuIGVudmlyb25tZW50IGhhcyBiZWVuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGVkLCB5b3UgbWF5IHdpc2ggdG8gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGl2YXRlIGl0LCBlLmcuIGJ5ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzb3VyY2luZyBhbiBhY3RpdmF0ZSBzY3JpcHQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luIGl0cyBiaW4gZGlyZWN0b3J5LicpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ2RpcnMnLCBtZXRhdmFyPSdFTlZfRElSJywgbmFyZ3M9JysnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0EgZGlyZWN0b3J5IHRvIGNyZWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4uJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcycsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0nc3lzdGVtX3NpdGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0dpdmUgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgYWNjZXNzIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzdGVtIHNpdGUtcGFja2FnZXMgZGlyLicpCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgIHVzZV9zeW1saW5rcyA9IEZhbHNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB1c2Vfc3ltbGlua3MgPSBUcnVlCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tc3ltbGlua3MnLCBkZWZhdWx0PXVzZV9zeW1saW5rcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBkZXN0PSdzeW1saW5rcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nVHJ5IHRvIHVzZSBzeW1saW5rcyByYXRoZXIgdGhhbiBjb3BpZXMsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aGVuIHN5bWxpbmtzIGFyZSBub3QgdGhlIGRlZmF1bHQgZm9yICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgcGxhdGZvcm0uJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jbGVhcicsIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nY2xlYXInLCBoZWxwPSdEZWxldGUgdGhlIGVudmlyb25tZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdG9yeSBpZiBpdCBhbHJlYWR5ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXN0cy4gSWYgbm90IHNwZWNpZmllZCBhbmQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIGRpcmVjdG9yeSBleGlzdHMsIGFuIGVycm9yJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGlzIHJhaXNlZC4nKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXVwZ3JhZGUnLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3VwZ3JhZGUnLCBoZWxwPSdVcGdyYWRlIHRoZSBlbnZpcm9ubWVudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXJlY3RvcnkgdG8gdXNlIHRoaXMgdmVyc2lvbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvZiBQeXRob24sIGFzc3VtaW5nIFB5dGhvbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYXMgYmVlbiB1cGdyYWRlZCBpbi1wbGFjZS4nKQorICAgICAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykKKyAgICAgICAgaWYgb3B0aW9ucy51cGdyYWRlIGFuZCBvcHRpb25zLmNsZWFyOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigneW91IGNhbm5vdCBzdXBwbHkgLS11cGdyYWRlIGFuZCAtLWNsZWFyIHRvZ2V0aGVyLicpCisgICAgICAgIGJ1aWxkZXIgPSBFbnZCdWlsZGVyKHN5c3RlbV9zaXRlX3BhY2thZ2VzPW9wdGlvbnMuc3lzdGVtX3NpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyPW9wdGlvbnMuY2xlYXIsIHN5bWxpbmtzPW9wdGlvbnMuc3ltbGlua3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZ3JhZGU9b3B0aW9ucy51cGdyYWRlKQorICAgICAgICBmb3IgZCBpbiBvcHRpb25zLmRpcnM6CisgICAgICAgICAgICBidWlsZGVyLmNyZWF0ZShkKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHJjID0gMQorICAgIHRyeToKKyAgICAgICAgbWFpbigpCisgICAgICAgIHJjID0gMAorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgcHJpbnQoJ0Vycm9yOiAlcycgJSBlLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgc3lzLmV4aXQocmMpCmRpZmYgLS1naXQgYS9MaWIvdmVudi9fX21haW5fXy5weSBiL0xpYi92ZW52L19fbWFpbl9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMjQyM2UKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdmVudi9fX21haW5fXy5weQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgc3lzCitmcm9tIC4gaW1wb3J0IG1haW4KKworcmMgPSAxCit0cnk6CisgICAgbWFpbigpCisgICAgcmMgPSAwCitleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgcHJpbnQoJ0Vycm9yOiAlcycgJSBlLCBmaWxlPXN5cy5zdGRlcnIpCitzeXMuZXhpdChyYykKZGlmZiAtLWdpdCBhL0xpYi92ZW52L3NjcmlwdHMvbnQvQWN0aXZhdGUucHMxIGIvTGliL3ZlbnYvc2NyaXB0cy9udC9BY3RpdmF0ZS5wczEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM1ZWY5OAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L3NjcmlwdHMvbnQvQWN0aXZhdGUucHMxCkBAIC0wLDAgKzEsMzQgQEAKKyRlbnY6VklSVFVBTF9FTlY9Il9fVkVOVl9ESVJfXyINCisNCisjIFJldmVydCB0byBvcmlnaW5hbCB2YWx1ZXMNCitpZiAoVGVzdC1QYXRoIGZ1bmN0aW9uOl9PTERfVklSVFVBTF9QUk9NUFQpIHsNCisgICAgY29weS1pdGVtIGZ1bmN0aW9uOl9PTERfVklSVFVBTF9QUk9NUFQgZnVuY3Rpb246cHJvbXB0DQorICAgIHJlbW92ZS1pdGVtIGZ1bmN0aW9uOl9PTERfVklSVFVBTF9QUk9NUFQNCit9DQorDQoraWYgKFRlc3QtUGF0aCBlbnY6X09MRF9WSVJUVUFMX1BZVEhPTkhPTUUpIHsNCisgICAgY29weS1pdGVtIGVudjpfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSBlbnY6UFlUSE9OSE9NRQ0KKyAgICByZW1vdmUtaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BZVEhPTkhPTUUNCit9DQorDQoraWYgKFRlc3QtUGF0aCBlbnY6X09MRF9WSVJUVUFMX1BBVEgpIHsNCisgICAgY29weS1pdGVtIGVudjpfT0xEX1ZJUlRVQUxfUEFUSCBlbnY6UEFUSA0KKyAgICByZW1vdmUtaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BBVEgNCit9DQorDQorIyBTZXQgdGhlIHByb21wdCB0byBpbmNsdWRlIHRoZSBlbnYgbmFtZQ0KK2NvcHktaXRlbSBmdW5jdGlvbjpwcm9tcHQgZnVuY3Rpb246X09MRF9WSVJUVUFMX1BST01QVA0KK2Z1bmN0aW9uIHByb21wdCB7DQorICAgIFdyaXRlLUhvc3QgLU5vTmV3bGluZSAtRm9yZWdyb3VuZENvbG9yIEdyZWVuICdbX19WRU5WX05BTUVfX10nDQorICAgIF9PTERfVklSVFVBTF9QUk9NUFQNCit9DQorDQorIyBDbGVhciBQWVRIT05IT01FDQoraWYgKFRlc3QtUGF0aCBlbnY6UFlUSE9OSE9NRSkgew0KKyAgICBjb3B5LWl0ZW0gZW52OlBZVEhPTkhPTUUgZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FDQorICAgIHJlbW92ZS1pdGVtIGVudjpQWVRIT05IT01FDQorfQ0KKw0KKyMgQWRkIHRoZSB2ZW52IHRvIHRoZSBQQVRIDQorY29weS1pdGVtIGVudjpQQVRIIGVudjpfT0xEX1ZJUlRVQUxfUEFUSA0KKyRlbnY6UEFUSCA9ICIkZW52OlZJUlRVQUxfRU5WXF9fVkVOVl9CSU5fTkFNRV9fOyRlbnY6UEFUSCINCmRpZmYgLS1naXQgYS9MaWIvdmVudi9zY3JpcHRzL250L0RlYWN0aXZhdGUucHMxIGIvTGliL3ZlbnYvc2NyaXB0cy9udC9EZWFjdGl2YXRlLnBzMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDFlOTZiCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3ZlbnYvc2NyaXB0cy9udC9EZWFjdGl2YXRlLnBzMQpAQCAtMCwwICsxLDE5IEBACisjIFJldmVydCB0byBvcmlnaW5hbCB2YWx1ZXMNCitpZiAoVGVzdC1QYXRoIGZ1bmN0aW9uOl9PTERfVklSVFVBTF9QUk9NUFQpIHsNCisgICAgY29weS1pdGVtIGZ1bmN0aW9uOl9PTERfVklSVFVBTF9QUk9NUFQgZnVuY3Rpb246cHJvbXB0DQorICAgIHJlbW92ZS1pdGVtIGZ1bmN0aW9uOl9PTERfVklSVFVBTF9QUk9NUFQNCit9DQorDQoraWYgKFRlc3QtUGF0aCBlbnY6X09MRF9WSVJUVUFMX1BZVEhPTkhPTUUpIHsNCisgICAgY29weS1pdGVtIGVudjpfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSBlbnY6UFlUSE9OSE9NRQ0KKyAgICByZW1vdmUtaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BZVEhPTkhPTUUNCit9DQorDQoraWYgKFRlc3QtUGF0aCBlbnY6X09MRF9WSVJUVUFMX1BBVEgpIHsNCisgICAgY29weS1pdGVtIGVudjpfT0xEX1ZJUlRVQUxfUEFUSCBlbnY6UEFUSA0KKyAgICByZW1vdmUtaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BBVEgNCit9DQorDQoraWYgKFRlc3QtUGF0aCBlbnY6VklSVFVBTF9FTlYpIHsNCisgICAgcmVtb3ZlLWl0ZW0gZW52OlZJUlRVQUxfRU5WDQorfQ0KZGlmZiAtLWdpdCBhL0xpYi92ZW52L3NjcmlwdHMvbnQvYWN0aXZhdGUuYmF0IGIvTGliL3ZlbnYvc2NyaXB0cy9udC9hY3RpdmF0ZS5iYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ1ZTY1YQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L3NjcmlwdHMvbnQvYWN0aXZhdGUuYmF0CkBAIC0wLDAgKzEsMzEgQEAKK0BlY2hvIG9mZg0KK3NldCBWSVJUVUFMX0VOVj1fX1ZFTlZfRElSX18NCisNCitpZiBub3QgZGVmaW5lZCBQUk9NUFQgKA0KKyAgICBzZXQgUFJPTVBUPSRQJEcNCispDQorDQoraWYgZGVmaW5lZCBfT0xEX1ZJUlRVQUxfUFJPTVBUICgNCisgICAgc2V0IFBST01QVD0lX09MRF9WSVJUVUFMX1BST01QVCUNCispDQorDQoraWYgZGVmaW5lZCBfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSAoDQorICAgICBzZXQgUFlUSE9OSE9NRT0lX09MRF9WSVJUVUFMX1BZVEhPTkhPTUUlDQorKQ0KKw0KK3NldCBfT0xEX1ZJUlRVQUxfUFJPTVBUPSVQUk9NUFQlDQorc2V0IFBST01QVD1fX1ZFTlZfTkFNRV9fJVBST01QVCUNCisNCitpZiBkZWZpbmVkIFBZVEhPTkhPTUUgKA0KKyAgICAgc2V0IF9PTERfVklSVFVBTF9QWVRIT05IT01FPSVQWVRIT05IT01FJQ0KKyAgICAgc2V0IFBZVEhPTkhPTUU9DQorKQ0KKw0KK2lmIGRlZmluZWQgX09MRF9WSVJUVUFMX1BBVEggc2V0IFBBVEg9JV9PTERfVklSVFVBTF9QQVRIJTsgZ290byBTS0lQUEFUSA0KKw0KK3NldCBfT0xEX1ZJUlRVQUxfUEFUSD0lUEFUSCUNCisNCis6U0tJUFBBVEgNCitzZXQgUEFUSD0lVklSVFVBTF9FTlYlXF9fVkVOVl9CSU5fTkFNRV9fOyVQQVRIJQ0KKw0KKzpFTkQNCmRpZmYgLS1naXQgYS9MaWIvdmVudi9zY3JpcHRzL250L2RlYWN0aXZhdGUuYmF0IGIvTGliL3ZlbnYvc2NyaXB0cy9udC9kZWFjdGl2YXRlLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmRhNWIxCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3ZlbnYvc2NyaXB0cy9udC9kZWFjdGl2YXRlLmJhdApAQCAtMCwwICsxLDE3IEBACitAZWNobyBvZmYNCisNCitpZiBkZWZpbmVkIF9PTERfVklSVFVBTF9QUk9NUFQgKA0KKyAgICBzZXQgUFJPTVBUPSVfT0xEX1ZJUlRVQUxfUFJPTVBUJQ0KKykNCitzZXQgX09MRF9WSVJUVUFMX1BST01QVD0NCisNCitpZiBkZWZpbmVkIF9PTERfVklSVFVBTF9QWVRIT05IT01FICgNCisgICAgIHNldCBQWVRIT05IT01FPSVfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSUNCisgICAgIHNldCBfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRT0NCispDQorDQoraWYgZGVmaW5lZCBfT0xEX1ZJUlRVQUxfUEFUSCBzZXQgUEFUSD0lX09MRF9WSVJUVUFMX1BBVEglDQorDQorc2V0IF9PTERfVklSVFVBTF9QQVRIPQ0KKw0KKzpFTkQNCmRpZmYgLS1naXQgYS9MaWIvdmVudi9zY3JpcHRzL250L3B5ZG9jLnB5IGIvTGliL3ZlbnYvc2NyaXB0cy9udC9weWRvYy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmYyZGI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3ZlbnYvc2NyaXB0cy9udC9weWRvYy5weQpAQCAtMCwwICsxLDQgQEAKKyMhX19WRU5WX1BZVEhPTl9fCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGltcG9ydCBzeXMsIHB5ZG9jCisgICAgc3lzLmV4aXQocHlkb2MuY2xpKCkpCmRpZmYgLS1naXQgYS9MaWIvdmVudi9zY3JpcHRzL3Bvc2l4L2FjdGl2YXRlIGIvTGliL3ZlbnYvc2NyaXB0cy9wb3NpeC9hY3RpdmF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjQxNDUwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3ZlbnYvc2NyaXB0cy9wb3NpeC9hY3RpdmF0ZQpAQCAtMCwwICsxLDc2IEBACisjIFRoaXMgZmlsZSBtdXN0IGJlIHVzZWQgd2l0aCAic291cmNlIGJpbi9hY3RpdmF0ZSIgKmZyb20gYmFzaCoKKyMgeW91IGNhbm5vdCBydW4gaXQgZGlyZWN0bHkKKworZGVhY3RpdmF0ZSAoKSB7CisgICAgIyByZXNldCBvbGQgZW52aXJvbm1lbnQgdmFyaWFibGVzCisgICAgaWYgWyAtbiAiJF9PTERfVklSVFVBTF9QQVRIIiBdIDsgdGhlbgorICAgICAgICBQQVRIPSIkX09MRF9WSVJUVUFMX1BBVEgiCisgICAgICAgIGV4cG9ydCBQQVRICisgICAgICAgIHVuc2V0IF9PTERfVklSVFVBTF9QQVRICisgICAgZmkKKyAgICBpZiBbIC1uICIkX09MRF9WSVJUVUFMX1BZVEhPTkhPTUUiIF0gOyB0aGVuCisgICAgICAgIFBZVEhPTkhPTUU9IiRfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSIKKyAgICAgICAgZXhwb3J0IFBZVEhPTkhPTUUKKyAgICAgICAgdW5zZXQgX09MRF9WSVJUVUFMX1BZVEhPTkhPTUUKKyAgICBmaQorCisgICAgIyBUaGlzIHNob3VsZCBkZXRlY3QgYmFzaCBhbmQgenNoLCB3aGljaCBoYXZlIGEgaGFzaCBjb21tYW5kIHRoYXQgbXVzdAorICAgICMgYmUgY2FsbGVkIHRvIGdldCBpdCB0byBmb3JnZXQgcGFzdCBjb21tYW5kcy4gIFdpdGhvdXQgZm9yZ2V0dGluZworICAgICMgcGFzdCBjb21tYW5kcyB0aGUgJFBBVEggY2hhbmdlcyB3ZSBtYWRlIG1heSBub3QgYmUgcmVzcGVjdGVkCisgICAgaWYgWyAtbiAiJEJBU0giIC1vIC1uICIkWlNIX1ZFUlNJT04iIF0gOyB0aGVuCisgICAgICAgIGhhc2ggLXIKKyAgICBmaQorCisgICAgaWYgWyAtbiAiJF9PTERfVklSVFVBTF9QUzEiIF0gOyB0aGVuCisgICAgICAgIFBTMT0iJF9PTERfVklSVFVBTF9QUzEiCisgICAgICAgIGV4cG9ydCBQUzEKKyAgICAgICAgdW5zZXQgX09MRF9WSVJUVUFMX1BTMQorICAgIGZpCisKKyAgICB1bnNldCBWSVJUVUFMX0VOVgorICAgIGlmIFsgISAiJDEiID0gIm5vbmRlc3RydWN0aXZlIiBdIDsgdGhlbgorICAgICMgU2VsZiBkZXN0cnVjdCEKKyAgICAgICAgdW5zZXQgLWYgZGVhY3RpdmF0ZQorICAgIGZpCit9CisKKyMgdW5zZXQgaXJyZWxhdmVudCB2YXJpYWJsZXMKK2RlYWN0aXZhdGUgbm9uZGVzdHJ1Y3RpdmUKKworVklSVFVBTF9FTlY9Il9fVkVOVl9ESVJfXyIKK2V4cG9ydCBWSVJUVUFMX0VOVgorCitfT0xEX1ZJUlRVQUxfUEFUSD0iJFBBVEgiCitQQVRIPSIkVklSVFVBTF9FTlYvX19WRU5WX0JJTl9OQU1FX186JFBBVEgiCitleHBvcnQgUEFUSAorCisjIHVuc2V0IFBZVEhPTkhPTUUgaWYgc2V0CisjIHRoaXMgd2lsbCBmYWlsIGlmIFBZVEhPTkhPTUUgaXMgc2V0IHRvIHRoZSBlbXB0eSBzdHJpbmcgKHdoaWNoIGlzIGJhZCBhbnl3YXkpCisjIGNvdWxkIHVzZSBgaWYgKHNldCAtdTsgOiAkUFlUSE9OSE9NRSkgO2AgaW4gYmFzaAoraWYgWyAtbiAiJFBZVEhPTkhPTUUiIF0gOyB0aGVuCisgICAgX09MRF9WSVJUVUFMX1BZVEhPTkhPTUU9IiRQWVRIT05IT01FIgorICAgIHVuc2V0IFBZVEhPTkhPTUUKK2ZpCisKK2lmIFsgLXogIiRWSVJUVUFMX0VOVl9ESVNBQkxFX1BST01QVCIgXSA7IHRoZW4KKyAgICBfT0xEX1ZJUlRVQUxfUFMxPSIkUFMxIgorICAgIGlmIFsgInhfX1ZFTlZfTkFNRV9fIiAhPSB4IF0gOyB0aGVuCisJUFMxPSJfX1ZFTlZfTkFNRV9fJFBTMSIKKyAgICBlbHNlCisgICAgaWYgWyAiYGJhc2VuYW1lIFwiJFZJUlRVQUxfRU5WXCJgIiA9ICJfXyIgXSA7IHRoZW4KKyAgICAgICAgIyBzcGVjaWFsIGNhc2UgZm9yIEFzcGVuIG1hZ2ljIGRpcmVjdG9yaWVzCisgICAgICAgICMgc2VlIGh0dHA6Ly93d3cuemV0YWRldi5jb20vc29mdHdhcmUvYXNwZW4vCisgICAgICAgIFBTMT0iW2BiYXNlbmFtZSBcYGRpcm5hbWUgXCIkVklSVFVBTF9FTlZcIlxgYF0gJFBTMSIKKyAgICBlbHNlCisgICAgICAgIFBTMT0iKGBiYXNlbmFtZSBcIiRWSVJUVUFMX0VOVlwiYCkkUFMxIgorICAgIGZpCisgICAgZmkKKyAgICBleHBvcnQgUFMxCitmaQorCisjIFRoaXMgc2hvdWxkIGRldGVjdCBiYXNoIGFuZCB6c2gsIHdoaWNoIGhhdmUgYSBoYXNoIGNvbW1hbmQgdGhhdCBtdXN0CisjIGJlIGNhbGxlZCB0byBnZXQgaXQgdG8gZm9yZ2V0IHBhc3QgY29tbWFuZHMuICBXaXRob3V0IGZvcmdldHRpbmcKKyMgcGFzdCBjb21tYW5kcyB0aGUgJFBBVEggY2hhbmdlcyB3ZSBtYWRlIG1heSBub3QgYmUgcmVzcGVjdGVkCitpZiBbIC1uICIkQkFTSCIgLW8gLW4gIiRaU0hfVkVSU0lPTiIgXSA7IHRoZW4KKyAgICBoYXNoIC1yCitmaQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvc2NyaXB0cy9wb3NpeC9weWRvYyBiL0xpYi92ZW52L3NjcmlwdHMvcG9zaXgvcHlkb2MKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTIzMzc3MQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L3NjcmlwdHMvcG9zaXgvcHlkb2MKQEAgLTAsMCArMSw1IEBACisjIV9fVkVOVl9QWVRIT05fXworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgc3lzLCBweWRvYworICAgIHN5cy5leGl0KHB5ZG9jLmNsaSgpKQorCmRpZmYgLS1naXQgYS9MaWIvd2ViYnJvd3Nlci5weSBiL0xpYi93ZWJicm93c2VyLnB5CmluZGV4IDIwMmYzNGEuLjk0ZDRhZDQgMTAwNjQ0Ci0tLSBhL0xpYi93ZWJicm93c2VyLnB5CisrKyBiL0xpYi93ZWJicm93c2VyLnB5CkBAIC0yMzAsNyArMjMwLDcgQEAKICAgICAgICAgY21kbGluZSA9IFtzZWxmLm5hbWVdICsgcmFpc2Vfb3B0ICsgYXJncwogCiAgICAgICAgIGlmIHJlbW90ZSBvciBzZWxmLmJhY2tncm91bmQ6Ci0gICAgICAgICAgICBpbm91dCA9IGlvLm9wZW4ob3MuZGV2bnVsbCwgInIrIikKKyAgICAgICAgICAgIGlub3V0ID0gc3VicHJvY2Vzcy5ERVZOVUxMCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIGZvciBUVFkgYnJvd3NlcnMsIHdlIG5lZWQgc3RkaW4vb3V0CiAgICAgICAgICAgICBpbm91dCA9IE5vbmUKQEAgLTIzOCwxNyArMjM4LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0oc2VsZi5yZWRpcmVjdF9zdGRvdXQgYW5kIGlub3V0IG9yIE5vbmUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9aW5vdXQsIHN0YXJ0X25ld19zZXNzaW9uPVRydWUpCiAgICAgICAgIGlmIHJlbW90ZToKLSAgICAgICAgICAgICMgd2FpdCBmaXZlIHNlY29uZHMuIElmIHRoZSBzdWJwcm9jZXNzIGlzIG5vdCBmaW5pc2hlZCwgdGhlCisgICAgICAgICAgICAjIHdhaXQgYXQgbW9zdCBmaXZlIHNlY29uZHMuIElmIHRoZSBzdWJwcm9jZXNzIGlzIG5vdCBmaW5pc2hlZCwgdGhlCiAgICAgICAgICAgICAjIHJlbW90ZSBpbnZvY2F0aW9uIGhhcyAoaG9wZWZ1bGx5KSBzdGFydGVkIGEgbmV3IGluc3RhbmNlLgotICAgICAgICAgICAgdGltZS5zbGVlcCgxKQotICAgICAgICAgICAgcmMgPSBwLnBvbGwoKQotICAgICAgICAgICAgaWYgcmMgaXMgTm9uZToKLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDQpCi0gICAgICAgICAgICAgICAgcmMgPSBwLnBvbGwoKQotICAgICAgICAgICAgICAgIGlmIHJjIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICAjIGlmIHJlbW90ZSBjYWxsIGZhaWxlZCwgb3BlbigpIHdpbGwgdHJ5IGRpcmVjdCBpbnZvY2F0aW9uCi0gICAgICAgICAgICByZXR1cm4gbm90IHJjCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmMgPSBwLndhaXQoNSkKKyAgICAgICAgICAgICAgICAjIGlmIHJlbW90ZSBjYWxsIGZhaWxlZCwgb3BlbigpIHdpbGwgdHJ5IGRpcmVjdCBpbnZvY2F0aW9uCisgICAgICAgICAgICAgICAgcmV0dXJuIG5vdCByYworICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgZWxpZiBzZWxmLmJhY2tncm91bmQ6CiAgICAgICAgICAgICBpZiBwLnBvbGwoKSBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCkBAIC0zMDYsNiArMzAzLDE4IEBACiAgICAgYmFja2dyb3VuZCA9IFRydWUKIAogCitjbGFzcyBDaHJvbWUoVW5peEJyb3dzZXIpOgorICAgICJMYXVuY2hlciBjbGFzcyBmb3IgR29vZ2xlIENocm9tZSBicm93c2VyLiIKKworICAgIHJlbW90ZV9hcmdzID0gWyclYWN0aW9uJywgJyVzJ10KKyAgICByZW1vdGVfYWN0aW9uID0gIiIKKyAgICByZW1vdGVfYWN0aW9uX25ld3dpbiA9ICItLW5ldy13aW5kb3ciCisgICAgcmVtb3RlX2FjdGlvbl9uZXd0YWIgPSAiIgorICAgIGJhY2tncm91bmQgPSBUcnVlCisKK0Nocm9taXVtID0gQ2hyb21lCisKKwogY2xhc3MgT3BlcmEoVW5peEJyb3dzZXIpOgogICAgICJMYXVuY2hlciBjbGFzcyBmb3IgT3BlcmEgYnJvd3Nlci4iCiAKQEAgLTM0NSw3ICszNTQsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgYWN0aW9uID0gIm9wZW5VUkwiCiAKLSAgICAgICAgZGV2bnVsbCA9IGlvLm9wZW4ob3MuZGV2bnVsbCwgInIrIikKKyAgICAgICAgZGV2bnVsbCA9IHN1YnByb2Nlc3MuREVWTlVMTAogICAgICAgICAjIGlmIHBvc3NpYmxlLCBwdXQgYnJvd3NlciBpbiBzZXBhcmF0ZSBwcm9jZXNzIGdyb3VwLCBzbwogICAgICAgICAjIGtleWJvYXJkIGludGVycnVwdHMgZG9uJ3QgYWZmZWN0IGJyb3dzZXIgYXMgd2VsbCBhcyBQeXRob24KICAgICAgICAgc2V0c2lkID0gZ2V0YXR0cihvcywgJ3NldHNpZCcsIE5vbmUpCkBAIC00NDMsNiArNDUyLDE0IEBACiAKIGRlZiByZWdpc3Rlcl9YX2Jyb3dzZXJzKCk6CiAKKyAgICAjIHVzZSB4ZGctb3BlbiBpZiBhcm91bmQKKyAgICBpZiBfaXNjb21tYW5kKCJ4ZGctb3BlbiIpOgorICAgICAgICByZWdpc3RlcigieGRnLW9wZW4iLCBOb25lLCBCYWNrZ3JvdW5kQnJvd3NlcigieGRnLW9wZW4iKSkKKworICAgICMgVGhlIGRlZmF1bHQgR05PTUUzIGJyb3dzZXIKKyAgICBpZiAiR05PTUVfREVTS1RPUF9TRVNTSU9OX0lEIiBpbiBvcy5lbnZpcm9uIGFuZCBfaXNjb21tYW5kKCJndmZzLW9wZW4iKToKKyAgICAgICAgcmVnaXN0ZXIoImd2ZnMtb3BlbiIsIE5vbmUsIEJhY2tncm91bmRCcm93c2VyKCJndmZzLW9wZW4iKSkKKwogICAgICMgVGhlIGRlZmF1bHQgR05PTUUgYnJvd3NlcgogICAgIGlmICJHTk9NRV9ERVNLVE9QX1NFU1NJT05fSUQiIGluIG9zLmVudmlyb24gYW5kIF9pc2NvbW1hbmQoImdub21lLW9wZW4iKToKICAgICAgICAgcmVnaXN0ZXIoImdub21lLW9wZW4iLCBOb25lLCBCYWNrZ3JvdW5kQnJvd3NlcigiZ25vbWUtb3BlbiIpKQpAQCAtNDczLDYgKzQ5MCwxMSBAQAogICAgIGlmIF9pc2NvbW1hbmQoInNraXBzdG9uZSIpOgogICAgICAgICByZWdpc3Rlcigic2tpcHN0b25lIiwgTm9uZSwgQmFja2dyb3VuZEJyb3dzZXIoInNraXBzdG9uZSIpKQogCisgICAgIyBHb29nbGUgQ2hyb21lL0Nocm9taXVtIGJyb3dzZXJzCisgICAgZm9yIGJyb3dzZXIgaW4gKCJnb29nbGUtY2hyb21lIiwgImNocm9tZSIsICJjaHJvbWl1bSIsICJjaHJvbWl1bS1icm93c2VyIik6CisgICAgICAgIGlmIF9pc2NvbW1hbmQoYnJvd3Nlcik6CisgICAgICAgICAgICByZWdpc3Rlcihicm93c2VyLCBOb25lLCBDaHJvbWUoYnJvd3NlcikpCisKICAgICAjIE9wZXJhLCBxdWl0ZSBwb3B1bGFyCiAgICAgaWYgX2lzY29tbWFuZCgib3BlcmEiKToKICAgICAgICAgcmVnaXN0ZXIoIm9wZXJhIiwgTm9uZSwgT3BlcmEoIm9wZXJhIikpCmRpZmYgLS1naXQgYS9MaWIvd3NnaXJlZi5lZ2ctaW5mbyBiL0xpYi93c2dpcmVmLmVnZy1pbmZvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGI3ODkzLi4wMDAwMDAwCi0tLSBhL0xpYi93c2dpcmVmLmVnZy1pbmZvCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1NZXRhZGF0YS1WZXJzaW9uOiAxLjAKLU5hbWU6IHdzZ2lyZWYKLVZlcnNpb246IDAuMS4yCi1TdW1tYXJ5OiBXU0dJIChQRVAgMzMzKSBSZWZlcmVuY2UgTGlicmFyeQotQXV0aG9yOiBQaGlsbGlwIEouIEVieQotQXV0aG9yLWVtYWlsOiB3ZWItc2lnQHB5dGhvbi5vcmcKLUxpY2Vuc2U6IFBTRiBvciBaUEwKLVBsYXRmb3JtOiBVTktOT1dOCmRpZmYgLS1naXQgYS9MaWIvd3NnaXJlZi9zaW1wbGVfc2VydmVyLnB5IGIvTGliL3dzZ2lyZWYvc2ltcGxlX3NlcnZlci5weQppbmRleCBhZjgyZjk1Li5hNjAxNWZiIDEwMDY0NAotLS0gYS9MaWIvd3NnaXJlZi9zaW1wbGVfc2VydmVyLnB5CisrKyBiL0xpYi93c2dpcmVmL3NpbXBsZV9zZXJ2ZXIucHkKQEAgLTE0LDEzICsxNCwxNCBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHVybGxpYi5wYXJzZQogZnJvbSB3c2dpcmVmLmhhbmRsZXJzIGltcG9ydCBTaW1wbGVIYW5kbGVyCitmcm9tIHBsYXRmb3JtIGltcG9ydCBweXRob25faW1wbGVtZW50YXRpb24KIAogX192ZXJzaW9uX18gPSAiMC4yIgogX19hbGxfXyA9IFsnV1NHSVNlcnZlcicsICdXU0dJUmVxdWVzdEhhbmRsZXInLCAnZGVtb19hcHAnLCAnbWFrZV9zZXJ2ZXInXQogCiAKIHNlcnZlcl92ZXJzaW9uID0gIldTR0lTZXJ2ZXIvIiArIF9fdmVyc2lvbl9fCi1zeXNfdmVyc2lvbiA9ICJQeXRob24vIiArIHN5cy52ZXJzaW9uLnNwbGl0KClbMF0KK3N5c192ZXJzaW9uID0gcHl0aG9uX2ltcGxlbWVudGF0aW9uKCkgKyAiLyIgKyBzeXMudmVyc2lvbi5zcGxpdCgpWzBdCiBzb2Z0d2FyZV92ZXJzaW9uID0gc2VydmVyX3ZlcnNpb24gKyAnICcgKyBzeXNfdmVyc2lvbgogCiAKZGlmZiAtLWdpdCBhL0xpYi94ZHJsaWIucHkgYi9MaWIveGRybGliLnB5CmluZGV4IDI5NjM5MTUuLmMwNWNmODcgMTAwNjQ0Ci0tLSBhL0xpYi94ZHJsaWIucHkKKysrIGIvTGliL3hkcmxpYi5weQpAQCAtMTQxLDExICsxNDEsNyBAQAogICAgICAgICBkYXRhID0gc2VsZi5fX2J1ZltpOmpdCiAgICAgICAgIGlmIGxlbihkYXRhKSA8IDQ6CiAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcgotICAgICAgICB4ID0gc3RydWN0LnVucGFjaygnPkwnLCBkYXRhKVswXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gaW50KHgpCi0gICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgotICAgICAgICAgICAgcmV0dXJuIHgKKyAgICAgICAgcmV0dXJuIHN0cnVjdC51bnBhY2soJz5MJywgZGF0YSlbMF0KIAogICAgIGRlZiB1bnBhY2tfaW50KHNlbGYpOgogICAgICAgICBpID0gc2VsZi5fX3BvcwpkaWZmIC0tZ2l0IGEvTGliL3htbC9kb20vX19pbml0X18ucHkgYi9MaWIveG1sL2RvbS9fX2luaXRfXy5weQppbmRleCA0NDAxYmRmLi45N2NmOWE2IDEwMDY0NAotLS0gYS9MaWIveG1sL2RvbS9fX2luaXRfXy5weQorKysgYi9MaWIveG1sL2RvbS9fX2luaXRfXy5weQpAQCAtMTcsNiArMTcsNyBAQAogCiBjbGFzcyBOb2RlOgogICAgICIiIkNsYXNzIGdpdmluZyB0aGUgTm9kZVR5cGUgY29uc3RhbnRzLiIiIgorICAgIF9fc2xvdHNfXyA9ICgpCiAKICAgICAjIERPTSBpbXBsZW1lbnRhdGlvbnMgbWF5IHVzZSB0aGlzIGFzIGEgYmFzZSBjbGFzcyBmb3IgdGhlaXIgb3duCiAgICAgIyBOb2RlIGltcGxlbWVudGF0aW9ucy4gIElmIHRoZXkgZG9uJ3QsIHRoZSBjb25zdGFudHMgZGVmaW5lZCBoZXJlCmRpZmYgLS1naXQgYS9MaWIveG1sL2RvbS9kb21yZWcucHkgYi9MaWIveG1sL2RvbS9kb21yZWcucHkKaW5kZXggY2IzNWJiMC4uOGMzZDkwMSAxMDA2NDQKLS0tIGEvTGliL3htbC9kb20vZG9tcmVnLnB5CisrKyBiL0xpYi94bWwvZG9tL2RvbXJlZy5weQpAQCAtMiw4ICsyLDYgQEAKIGRpcmVjdGx5LiBJbnN0ZWFkLCB0aGUgZnVuY3Rpb25zIGdldERPTUltcGxlbWVudGF0aW9uIGFuZAogcmVnaXN0ZXJET01JbXBsZW1lbnRhdGlvbiBzaG91bGQgYmUgaW1wb3J0ZWQgZnJvbSB4bWwuZG9tLiIiIgogCi1mcm9tIHhtbC5kb20ubWluaWNvbXBhdCBpbXBvcnQgKiAgIyBpc2luc3RhbmNlLCBTdHJpbmdUeXBlcwotCiAjIFRoaXMgaXMgYSBsaXN0IG9mIHdlbGwta25vd24gaW1wbGVtZW50YXRpb25zLiAgV2VsbC1rbm93biBuYW1lcwogIyBzaG91bGQgYmUgcHVibGlzaGVkIGJ5IHBvc3RpbmcgdG8geG1sLXNpZ0BweXRob24ub3JnLCBhbmQgYXJlCiAjIHN1YnNlcXVlbnRseSByZWNvcmRlZCBpbiB0aGlzIGZpbGUuCmRpZmYgLS1naXQgYS9MaWIveG1sL2RvbS9leHBhdGJ1aWxkZXIucHkgYi9MaWIveG1sL2RvbS9leHBhdGJ1aWxkZXIucHkKaW5kZXggYTk4ZmUwMy4uZjA3NGFiOSAxMDA2NDQKLS0tIGEvTGliL3htbC9kb20vZXhwYXRidWlsZGVyLnB5CisrKyBiL0xpYi94bWwvZG9tL2V4cGF0YnVpbGRlci5weQpAQCAtMzMsOCArMzMsNiBAQAogZnJvbSB4bWwuZG9tLm1pbmlkb20gaW1wb3J0IF9hcHBlbmRfY2hpbGQsIF9zZXRfYXR0cmlidXRlX25vZGUKIGZyb20geG1sLmRvbS5Ob2RlRmlsdGVyIGltcG9ydCBOb2RlRmlsdGVyCiAKLWZyb20geG1sLmRvbS5taW5pY29tcGF0IGltcG9ydCAqCi0KIFRFWFRfTk9ERSA9IE5vZGUuVEVYVF9OT0RFCiBDREFUQV9TRUNUSU9OX05PREUgPSBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERQogRE9DVU1FTlRfTk9ERSA9IE5vZGUuRE9DVU1FTlRfTk9ERQpAQCAtMjgzLDI3ICsyODEsMjMgQEAKICAgICAgICAgZWxpZiBjaGlsZE5vZGVzIGFuZCBjaGlsZE5vZGVzWy0xXS5ub2RlVHlwZSA9PSBURVhUX05PREU6CiAgICAgICAgICAgICBub2RlID0gY2hpbGROb2Rlc1stMV0KICAgICAgICAgICAgIHZhbHVlID0gbm9kZS5kYXRhICsgZGF0YQotICAgICAgICAgICAgZCA9IG5vZGUuX19kaWN0X18KLSAgICAgICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gdmFsdWUKKyAgICAgICAgICAgIG5vZGUuZGF0YSA9IHZhbHVlCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG5vZGUgPSBtaW5pZG9tLlRleHQoKQotICAgICAgICAgICAgZCA9IG5vZGUuX19kaWN0X18KLSAgICAgICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gZGF0YQotICAgICAgICAgICAgZFsnb3duZXJEb2N1bWVudCddID0gc2VsZi5kb2N1bWVudAorICAgICAgICAgICAgbm9kZS5kYXRhID0gZGF0YQorICAgICAgICAgICAgbm9kZS5vd25lckRvY3VtZW50ID0gc2VsZi5kb2N1bWVudAogICAgICAgICBfYXBwZW5kX2NoaWxkKHNlbGYuY3VyTm9kZSwgbm9kZSkKIAogICAgIGRlZiBjaGFyYWN0ZXJfZGF0YV9oYW5kbGVyKHNlbGYsIGRhdGEpOgogICAgICAgICBjaGlsZE5vZGVzID0gc2VsZi5jdXJOb2RlLmNoaWxkTm9kZXMKICAgICAgICAgaWYgY2hpbGROb2RlcyBhbmQgY2hpbGROb2Rlc1stMV0ubm9kZVR5cGUgPT0gVEVYVF9OT0RFOgogICAgICAgICAgICAgbm9kZSA9IGNoaWxkTm9kZXNbLTFdCi0gICAgICAgICAgICBkID0gbm9kZS5fX2RpY3RfXwotICAgICAgICAgICAgZFsnZGF0YSddID0gZFsnbm9kZVZhbHVlJ10gPSBub2RlLmRhdGEgKyBkYXRhCisgICAgICAgICAgICBub2RlLmRhdGEgPSBub2RlLmRhdGEgKyBkYXRhCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgbm9kZSA9IG1pbmlkb20uVGV4dCgpCi0gICAgICAgIGQgPSBub2RlLl9fZGljdF9fCi0gICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gbm9kZS5kYXRhICsgZGF0YQotICAgICAgICBkWydvd25lckRvY3VtZW50J10gPSBzZWxmLmRvY3VtZW50CisgICAgICAgIG5vZGUuZGF0YSA9IG5vZGUuZGF0YSArIGRhdGEKKyAgICAgICAgbm9kZS5vd25lckRvY3VtZW50ID0gc2VsZi5kb2N1bWVudAogICAgICAgICBfYXBwZW5kX2NoaWxkKHNlbGYuY3VyTm9kZSwgbm9kZSkKIAogICAgIGRlZiBlbnRpdHlfZGVjbF9oYW5kbGVyKHNlbGYsIGVudGl0eU5hbWUsIGlzX3BhcmFtZXRlcl9lbnRpdHksIHZhbHVlLApAQCAtMzYzLDExICszNTcsOCBAQAogICAgICAgICAgICAgICAgIGEgPSBtaW5pZG9tLkF0dHIoYXR0cmlidXRlc1tpXSwgRU1QVFlfTkFNRVNQQUNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgRU1QVFlfUFJFRklYKQogICAgICAgICAgICAgICAgIHZhbHVlID0gYXR0cmlidXRlc1tpKzFdCi0gICAgICAgICAgICAgICAgZCA9IGEuY2hpbGROb2Rlc1swXS5fX2RpY3RfXwotICAgICAgICAgICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gdmFsdWUKLSAgICAgICAgICAgICAgICBkID0gYS5fX2RpY3RfXwotICAgICAgICAgICAgICAgIGRbJ3ZhbHVlJ10gPSBkWydub2RlVmFsdWUnXSA9IHZhbHVlCi0gICAgICAgICAgICAgICAgZFsnb3duZXJEb2N1bWVudCddID0gc2VsZi5kb2N1bWVudAorICAgICAgICAgICAgICAgIGEudmFsdWUgPSB2YWx1ZQorICAgICAgICAgICAgICAgIGEub3duZXJEb2N1bWVudCA9IHNlbGYuZG9jdW1lbnQKICAgICAgICAgICAgICAgICBfc2V0X2F0dHJpYnV0ZV9ub2RlKG5vZGUsIGEpCiAKICAgICAgICAgaWYgbm9kZSBpcyBub3Qgc2VsZi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ6CkBAIC03NjEsMTUgKzc1MiwxMyBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGEgPSBtaW5pZG9tLkF0dHIoInhtbG5zIiwgWE1MTlNfTkFNRVNQQUNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4bWxucyIsIEVNUFRZX1BSRUZJWCkKLSAgICAgICAgICAgICAgICBkID0gYS5jaGlsZE5vZGVzWzBdLl9fZGljdF9fCi0gICAgICAgICAgICAgICAgZFsnZGF0YSddID0gZFsnbm9kZVZhbHVlJ10gPSB1cmkKLSAgICAgICAgICAgICAgICBkID0gYS5fX2RpY3RfXwotICAgICAgICAgICAgICAgIGRbJ3ZhbHVlJ10gPSBkWydub2RlVmFsdWUnXSA9IHVyaQotICAgICAgICAgICAgICAgIGRbJ293bmVyRG9jdW1lbnQnXSA9IHNlbGYuZG9jdW1lbnQKKyAgICAgICAgICAgICAgICBhLnZhbHVlID0gdXJpCisgICAgICAgICAgICAgICAgYS5vd25lckRvY3VtZW50ID0gc2VsZi5kb2N1bWVudAogICAgICAgICAgICAgICAgIF9zZXRfYXR0cmlidXRlX25vZGUobm9kZSwgYSkKICAgICAgICAgICAgIGRlbCBzZWxmLl9uc19vcmRlcmVkX3ByZWZpeGVzWzpdCiAKICAgICAgICAgaWYgYXR0cmlidXRlczoKKyAgICAgICAgICAgIG5vZGUuX2Vuc3VyZV9hdHRyaWJ1dGVzKCkKICAgICAgICAgICAgIF9hdHRycyA9IG5vZGUuX2F0dHJzCiAgICAgICAgICAgICBfYXR0cnNOUyA9IG5vZGUuX2F0dHJzTlMKICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihhdHRyaWJ1dGVzKSwgMik6CkBAIC03ODUsMTIgKzc3NCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5hbWUsIEVNUFRZX1BSRUZJWCkKICAgICAgICAgICAgICAgICAgICAgX2F0dHJzW2FuYW1lXSA9IGEKICAgICAgICAgICAgICAgICAgICAgX2F0dHJzTlNbKEVNUFRZX05BTUVTUEFDRSwgYW5hbWUpXSA9IGEKLSAgICAgICAgICAgICAgICBkID0gYS5jaGlsZE5vZGVzWzBdLl9fZGljdF9fCi0gICAgICAgICAgICAgICAgZFsnZGF0YSddID0gZFsnbm9kZVZhbHVlJ10gPSB2YWx1ZQotICAgICAgICAgICAgICAgIGQgPSBhLl9fZGljdF9fCi0gICAgICAgICAgICAgICAgZFsnb3duZXJEb2N1bWVudCddID0gc2VsZi5kb2N1bWVudAotICAgICAgICAgICAgICAgIGRbJ3ZhbHVlJ10gPSBkWydub2RlVmFsdWUnXSA9IHZhbHVlCi0gICAgICAgICAgICAgICAgZFsnb3duZXJFbGVtZW50J10gPSBub2RlCisgICAgICAgICAgICAgICAgYS5vd25lckRvY3VtZW50ID0gc2VsZi5kb2N1bWVudAorICAgICAgICAgICAgICAgIGEudmFsdWUgPSB2YWx1ZQorICAgICAgICAgICAgICAgIGEub3duZXJFbGVtZW50ID0gbm9kZQogCiAgICAgaWYgX19kZWJ1Z19fOgogICAgICAgICAjIFRoaXMgb25seSBhZGRzIHNvbWUgYXNzZXJ0cyB0byB0aGUgb3JpZ2luYWwKZGlmZiAtLWdpdCBhL0xpYi94bWwvZG9tL21pbmlkb20ucHkgYi9MaWIveG1sL2RvbS9taW5pZG9tLnB5CmluZGV4IDE4NzBlYmQuLjU1YzRjZTEgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZG9tL21pbmlkb20ucHkKKysrIGIvTGliL3htbC9kb20vbWluaWRvbS5weQpAQCAtMTUsNyArMTUsNiBAQAogICogU0FYIDIgbmFtZXNwYWNlcwogIiIiCiAKLWltcG9ydCBjb2RlY3MKIGltcG9ydCBpbwogaW1wb3J0IHhtbC5kb20KIApAQCAtNDgsMjUgKzQ3LDI1IEBACiAgICAgICAgIHJldHVybiBzZWxmLnRvcHJldHR5eG1sKCIiLCAiIiwgZW5jb2RpbmcpCiAKICAgICBkZWYgdG9wcmV0dHl4bWwoc2VsZiwgaW5kZW50PSJcdCIsIG5ld2w9IlxuIiwgZW5jb2Rpbmc9Tm9uZSk6Ci0gICAgICAgICMgaW5kZW50ID0gdGhlIGluZGVudGF0aW9uIHN0cmluZyB0byBwcmVwZW5kLCBwZXIgbGV2ZWwKLSAgICAgICAgIyBuZXdsID0gdGhlIG5ld2xpbmUgc3RyaW5nIHRvIGFwcGVuZAotICAgICAgICB1c2VfZW5jb2RpbmcgPSAidXRmLTgiIGlmIGVuY29kaW5nIGlzIE5vbmUgZWxzZSBlbmNvZGluZwotICAgICAgICB3cml0ZXIgPSBjb2RlY3MuZ2V0d3JpdGVyKHVzZV9lbmNvZGluZykoaW8uQnl0ZXNJTygpKQorICAgICAgICBpZiBlbmNvZGluZyBpcyBOb25lOgorICAgICAgICAgICAgd3JpdGVyID0gaW8uU3RyaW5nSU8oKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd3JpdGVyID0gaW8uVGV4dElPV3JhcHBlcihpby5CeXRlc0lPKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPWVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9InhtbGNoYXJyZWZyZXBsYWNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZT0nXG4nKQogICAgICAgICBpZiBzZWxmLm5vZGVUeXBlID09IE5vZGUuRE9DVU1FTlRfTk9ERToKICAgICAgICAgICAgICMgQ2FuIHBhc3MgZW5jb2Rpbmcgb25seSB0byBkb2N1bWVudCwgdG8gcHV0IGl0IGludG8gWE1MIGhlYWRlcgogICAgICAgICAgICAgc2VsZi53cml0ZXhtbCh3cml0ZXIsICIiLCBpbmRlbnQsIG5ld2wsIGVuY29kaW5nKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi53cml0ZXhtbCh3cml0ZXIsICIiLCBpbmRlbnQsIG5ld2wpCiAgICAgICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gd3JpdGVyLnN0cmVhbS5nZXR2YWx1ZSgpLmRlY29kZSh1c2VfZW5jb2RpbmcpCisgICAgICAgICAgICByZXR1cm4gd3JpdGVyLmdldHZhbHVlKCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiB3cml0ZXIuc3RyZWFtLmdldHZhbHVlKCkKKyAgICAgICAgICAgIHJldHVybiB3cml0ZXIuZGV0YWNoKCkuZ2V0dmFsdWUoKQogCiAgICAgZGVmIGhhc0NoaWxkTm9kZXMoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuY2hpbGROb2RlczoKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5jaGlsZE5vZGVzKQogCiAgICAgZGVmIF9nZXRfY2hpbGROb2RlcyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuY2hpbGROb2RlcwpAQCAtMjg3LDEwICsyODYsMTAgQEAKICAgICBjaGlsZE5vZGVzID0gc2VsZi5jaGlsZE5vZGVzCiAgICAgaWYgY2hpbGROb2RlczoKICAgICAgICAgbGFzdCA9IGNoaWxkTm9kZXNbLTFdCi0gICAgICAgIG5vZGUuX19kaWN0X19bInByZXZpb3VzU2libGluZyJdID0gbGFzdAotICAgICAgICBsYXN0Ll9fZGljdF9fWyJuZXh0U2libGluZyJdID0gbm9kZQorICAgICAgICBub2RlLnByZXZpb3VzU2libGluZyA9IGxhc3QKKyAgICAgICAgbGFzdC5uZXh0U2libGluZyA9IG5vZGUKICAgICBjaGlsZE5vZGVzLmFwcGVuZChub2RlKQotICAgIG5vZGUuX19kaWN0X19bInBhcmVudE5vZGUiXSA9IHNlbGYKKyAgICBub2RlLnBhcmVudE5vZGUgPSBzZWxmCiAKIGRlZiBfaW5fZG9jdW1lbnQobm9kZSk6CiAgICAgIyByZXR1cm4gVHJ1ZSBpZmYgbm9kZSBpcyBwYXJ0IG9mIGEgZG9jdW1lbnQgdHJlZQpAQCAtMzQzLDkgKzM0MiwxMCBAQAogCiAKIGNsYXNzIEF0dHIoTm9kZSk6CisgICAgX19zbG90c19fPSgnX25hbWUnLCAnX3ZhbHVlJywgJ25hbWVzcGFjZVVSSScsCisgICAgICAgICAgICAgICAnX3ByZWZpeCcsICdjaGlsZE5vZGVzJywgJ19sb2NhbE5hbWUnLCAnb3duZXJEb2N1bWVudCcsICdvd25lckVsZW1lbnQnKQogICAgIG5vZGVUeXBlID0gTm9kZS5BVFRSSUJVVEVfTk9ERQogICAgIGF0dHJpYnV0ZXMgPSBOb25lCi0gICAgb3duZXJFbGVtZW50ID0gTm9uZQogICAgIHNwZWNpZmllZCA9IEZhbHNlCiAgICAgX2lzX2lkID0gRmFsc2UKIApAQCAtMzUzLDEyICszNTMsMTEgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxTmFtZSwgbmFtZXNwYWNlVVJJPUVNUFRZX05BTUVTUEFDRSwgbG9jYWxOYW1lPU5vbmUsCiAgICAgICAgICAgICAgICAgIHByZWZpeD1Ob25lKToKLSAgICAgICAgIyBza2lwIHNldGF0dHIgZm9yIHBlcmZvcm1hbmNlCi0gICAgICAgIGQgPSBzZWxmLl9fZGljdF9fCi0gICAgICAgIGRbIm5vZGVOYW1lIl0gPSBkWyJuYW1lIl0gPSBxTmFtZQotICAgICAgICBkWyJuYW1lc3BhY2VVUkkiXSA9IG5hbWVzcGFjZVVSSQotICAgICAgICBkWyJwcmVmaXgiXSA9IHByZWZpeAotICAgICAgICBkWydjaGlsZE5vZGVzJ10gPSBOb2RlTGlzdCgpCisgICAgICAgIHNlbGYub3duZXJFbGVtZW50ID0gTm9uZQorICAgICAgICBzZWxmLl9uYW1lID0gcU5hbWUKKyAgICAgICAgc2VsZi5uYW1lc3BhY2VVUkkgPSBuYW1lc3BhY2VVUkkKKyAgICAgICAgc2VsZi5fcHJlZml4ID0gcHJlZml4CisgICAgICAgIHNlbGYuY2hpbGROb2RlcyA9IE5vZGVMaXN0KCkKIAogICAgICAgICAjIEFkZCB0aGUgc2luZ2xlIGNoaWxkIG5vZGUgdGhhdCByZXByZXNlbnRzIHRoZSB2YWx1ZSBvZiB0aGUgYXR0cgogICAgICAgICBzZWxmLmNoaWxkTm9kZXMuYXBwZW5kKFRleHQoKSkKQEAgLTM2Niw5ICszNjUsMTAgQEAKICAgICAgICAgIyBub2RlVmFsdWUgYW5kIHZhbHVlIGFyZSBzZXQgZWxzZXdoZXJlCiAKICAgICBkZWYgX2dldF9sb2NhbE5hbWUoc2VsZik6Ci0gICAgICAgIGlmICdsb2NhbE5hbWUnIGluIHNlbGYuX19kaWN0X186Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fX2RpY3RfX1snbG9jYWxOYW1lJ10KLSAgICAgICAgcmV0dXJuIHNlbGYubm9kZU5hbWUuc3BsaXQoIjoiLCAxKVstMV0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2xvY2FsTmFtZQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5ub2RlTmFtZS5zcGxpdCgiOiIsIDEpWy0xXQogCiAgICAgZGVmIF9nZXRfbmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYubmFtZQpAQCAtMzc2LDIwICszNzYsMzAgQEAKICAgICBkZWYgX2dldF9zcGVjaWZpZWQoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnNwZWNpZmllZAogCi0gICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKLSAgICAgICAgZCA9IHNlbGYuX19kaWN0X18KLSAgICAgICAgaWYgbmFtZSBpbiAoInZhbHVlIiwgIm5vZGVWYWx1ZSIpOgotICAgICAgICAgICAgZFsidmFsdWUiXSA9IGRbIm5vZGVWYWx1ZSJdID0gdmFsdWUKLSAgICAgICAgICAgIGQyID0gc2VsZi5jaGlsZE5vZGVzWzBdLl9fZGljdF9fCi0gICAgICAgICAgICBkMlsiZGF0YSJdID0gZDJbIm5vZGVWYWx1ZSJdID0gdmFsdWUKLSAgICAgICAgICAgIGlmIHNlbGYub3duZXJFbGVtZW50IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmLm93bmVyRWxlbWVudCkKLSAgICAgICAgZWxpZiBuYW1lIGluICgibmFtZSIsICJub2RlTmFtZSIpOgotICAgICAgICAgICAgZFsibmFtZSJdID0gZFsibm9kZU5hbWUiXSA9IHZhbHVlCi0gICAgICAgICAgICBpZiBzZWxmLm93bmVyRWxlbWVudCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZi5vd25lckVsZW1lbnQpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkW25hbWVdID0gdmFsdWUKKyAgICBkZWYgX2dldF9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQorCisgICAgZGVmIF9zZXRfbmFtZShzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX25hbWUgPSB2YWx1ZQorICAgICAgICBpZiBzZWxmLm93bmVyRWxlbWVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmLm93bmVyRWxlbWVudCkKKworICAgIG5vZGVOYW1lID0gbmFtZSA9IHByb3BlcnR5KF9nZXRfbmFtZSwgX3NldF9uYW1lKQorCisgICAgZGVmIF9nZXRfdmFsdWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl92YWx1ZQorCisgICAgZGVmIF9zZXRfdmFsdWUoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl92YWx1ZSA9IHZhbHVlCisgICAgICAgIHNlbGYuY2hpbGROb2Rlc1swXS5kYXRhID0gdmFsdWUKKyAgICAgICAgaWYgc2VsZi5vd25lckVsZW1lbnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZi5vd25lckVsZW1lbnQpCisgICAgICAgIHNlbGYuY2hpbGROb2Rlc1swXS5kYXRhID0gdmFsdWUKKworICAgIG5vZGVWYWx1ZSA9IHZhbHVlID0gcHJvcGVydHkoX2dldF92YWx1ZSwgX3NldF92YWx1ZSkKKworICAgIGRlZiBfZ2V0X3ByZWZpeChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ByZWZpeAogCiAgICAgZGVmIF9zZXRfcHJlZml4KHNlbGYsIHByZWZpeCk6CiAgICAgICAgIG5zdXJpID0gc2VsZi5uYW1lc3BhY2VVUkkKQEAgLTM5NywyMiArNDA3LDE2IEBACiAgICAgICAgICAgICBpZiBuc3VyaSBhbmQgbnN1cmkgIT0gWE1MTlNfTkFNRVNQQUNFOgogICAgICAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTmFtZXNwYWNlRXJyKAogICAgICAgICAgICAgICAgICAgICAiaWxsZWdhbCB1c2Ugb2YgJ3htbG5zJyBwcmVmaXggZm9yIHRoZSB3cm9uZyBuYW1lc3BhY2UiKQotICAgICAgICBkID0gc2VsZi5fX2RpY3RfXwotICAgICAgICBkWydwcmVmaXgnXSA9IHByZWZpeAorICAgICAgICBzZWxmLl9wcmVmaXggPSBwcmVmaXgKICAgICAgICAgaWYgcHJlZml4IGlzIE5vbmU6CiAgICAgICAgICAgICBuZXdOYW1lID0gc2VsZi5sb2NhbE5hbWUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG5ld05hbWUgPSAiJXM6JXMiICUgKHByZWZpeCwgc2VsZi5sb2NhbE5hbWUpCiAgICAgICAgIGlmIHNlbGYub3duZXJFbGVtZW50OgogICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYub3duZXJFbGVtZW50KQotICAgICAgICBkWydub2RlTmFtZSddID0gZFsnbmFtZSddID0gbmV3TmFtZQorICAgICAgICBzZWxmLm5hbWUgPSBuZXdOYW1lCiAKLSAgICBkZWYgX3NldF92YWx1ZShzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIGQgPSBzZWxmLl9fZGljdF9fCi0gICAgICAgIGRbJ3ZhbHVlJ10gPSBkWydub2RlVmFsdWUnXSA9IHZhbHVlCi0gICAgICAgIGlmIHNlbGYub3duZXJFbGVtZW50OgotICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYub3duZXJFbGVtZW50KQotICAgICAgICBzZWxmLmNoaWxkTm9kZXNbMF0uZGF0YSA9IHZhbHVlCisgICAgcHJlZml4ID0gcHJvcGVydHkoX2dldF9wcmVmaXgsIF9zZXRfcHJlZml4KQogCiAgICAgZGVmIHVubGluayhzZWxmKToKICAgICAgICAgIyBUaGlzIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGNhbGwgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24KQEAgLTU4Nyw4ICs1OTEsOCBAQAogICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYuX293bmVyRWxlbWVudCkKICAgICAgICAgICAgIGRlbCBzZWxmLl9hdHRyc1tuLm5vZGVOYW1lXQogICAgICAgICAgICAgZGVsIHNlbGYuX2F0dHJzTlNbKG4ubmFtZXNwYWNlVVJJLCBuLmxvY2FsTmFtZSldCi0gICAgICAgICAgICBpZiAnb3duZXJFbGVtZW50JyBpbiBuLl9fZGljdF9fOgotICAgICAgICAgICAgICAgIG4uX19kaWN0X19bJ293bmVyRWxlbWVudCddID0gTm9uZQorICAgICAgICAgICAgaWYgaGFzYXR0cihuLCAnb3duZXJFbGVtZW50Jyk6CisgICAgICAgICAgICAgICAgbi5vd25lckVsZW1lbnQgPSBOb25lCiAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob3RGb3VuZEVycigpCkBAIC01OTksOCArNjAzLDggQEAKICAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmLl9vd25lckVsZW1lbnQpCiAgICAgICAgICAgICBkZWwgc2VsZi5fYXR0cnNOU1sobi5uYW1lc3BhY2VVUkksIG4ubG9jYWxOYW1lKV0KICAgICAgICAgICAgIGRlbCBzZWxmLl9hdHRyc1tuLm5vZGVOYW1lXQotICAgICAgICAgICAgaWYgJ293bmVyRWxlbWVudCcgaW4gbi5fX2RpY3RfXzoKLSAgICAgICAgICAgICAgICBuLl9fZGljdF9fWydvd25lckVsZW1lbnQnXSA9IE5vbmUKKyAgICAgICAgICAgIGlmIGhhc2F0dHIobiwgJ293bmVyRWxlbWVudCcpOgorICAgICAgICAgICAgICAgIG4ub3duZXJFbGVtZW50ID0gTm9uZQogICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm90Rm91bmRFcnIoKQpAQCAtNjYwLDYgKzY2NCw5IEBACiBfbm9fdHlwZSA9IFR5cGVJbmZvKE5vbmUsIE5vbmUpCiAKIGNsYXNzIEVsZW1lbnQoTm9kZSk6CisgICAgX19zbG90c19fPSgnb3duZXJEb2N1bWVudCcsICdwYXJlbnROb2RlJywgJ3RhZ05hbWUnLCAnbm9kZU5hbWUnLCAncHJlZml4JywKKyAgICAgICAgICAgICAgICduYW1lc3BhY2VVUkknLCAnX2xvY2FsTmFtZScsICdjaGlsZE5vZGVzJywgJ19hdHRycycsICdfYXR0cnNOUycsCisgICAgICAgICAgICAgICAnbmV4dFNpYmxpbmcnLCAncHJldmlvdXNTaWJsaW5nJykKICAgICBub2RlVHlwZSA9IE5vZGUuRUxFTUVOVF9OT0RFCiAgICAgbm9kZVZhbHVlID0gTm9uZQogICAgIHNjaGVtYVR5cGUgPSBfbm9fdHlwZQpAQCAtNjc1LDQxICs2ODIsNTcgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YWdOYW1lLCBuYW1lc3BhY2VVUkk9RU1QVFlfTkFNRVNQQUNFLCBwcmVmaXg9Tm9uZSwKICAgICAgICAgICAgICAgICAgbG9jYWxOYW1lPU5vbmUpOgorICAgICAgICBzZWxmLnBhcmVudE5vZGUgPSBOb25lCiAgICAgICAgIHNlbGYudGFnTmFtZSA9IHNlbGYubm9kZU5hbWUgPSB0YWdOYW1lCiAgICAgICAgIHNlbGYucHJlZml4ID0gcHJlZml4CiAgICAgICAgIHNlbGYubmFtZXNwYWNlVVJJID0gbmFtZXNwYWNlVVJJCiAgICAgICAgIHNlbGYuY2hpbGROb2RlcyA9IE5vZGVMaXN0KCkKKyAgICAgICAgc2VsZi5uZXh0U2libGluZyA9IHNlbGYucHJldmlvdXNTaWJsaW5nID0gTm9uZQogCi0gICAgICAgIHNlbGYuX2F0dHJzID0ge30gICAjIGF0dHJpYnV0ZXMgYXJlIGRvdWJsZS1pbmRleGVkOgotICAgICAgICBzZWxmLl9hdHRyc05TID0ge30gIyAgICB0YWdOYW1lIC0+IEF0dHJpYnV0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICBVUkksbG9jYWxOYW1lIC0+IEF0dHJpYnV0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbiB0aGUgZnV0dXJlOiBjb25zaWRlciBsYXp5IGdlbmVyYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb2YgYXR0cmlidXRlIG9iamVjdHMgdGhpcyBpcyB0b28gdHJpY2t5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZvciBub3cgYmVjYXVzZSBvZiBoZWFkYWNoZXMgd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBuYW1lc3BhY2VzLgorICAgICAgICAjIEF0dHJpYnV0ZSBkaWN0aW9uYXJpZXMgYXJlIGxhemlseSBjcmVhdGVkCisgICAgICAgICMgYXR0cmlidXRlcyBhcmUgZG91YmxlLWluZGV4ZWQ6CisgICAgICAgICMgICAgdGFnTmFtZSAtPiBBdHRyaWJ1dGUKKyAgICAgICAgIyAgICBVUkksbG9jYWxOYW1lIC0+IEF0dHJpYnV0ZQorICAgICAgICAjIGluIHRoZSBmdXR1cmU6IGNvbnNpZGVyIGxhenkgZ2VuZXJhdGlvbgorICAgICAgICAjIG9mIGF0dHJpYnV0ZSBvYmplY3RzIHRoaXMgaXMgdG9vIHRyaWNreQorICAgICAgICAjIGZvciBub3cgYmVjYXVzZSBvZiBoZWFkYWNoZXMgd2l0aAorICAgICAgICAjIG5hbWVzcGFjZXMuCisgICAgICAgIHNlbGYuX2F0dHJzID0gTm9uZQorICAgICAgICBzZWxmLl9hdHRyc05TID0gTm9uZQorCisgICAgZGVmIF9lbnN1cmVfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fYXR0cnMgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2F0dHJzID0ge30KKyAgICAgICAgICAgIHNlbGYuX2F0dHJzTlMgPSB7fQogCiAgICAgZGVmIF9nZXRfbG9jYWxOYW1lKHNlbGYpOgotICAgICAgICBpZiAnbG9jYWxOYW1lJyBpbiBzZWxmLl9fZGljdF9fOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19kaWN0X19bJ2xvY2FsTmFtZSddCi0gICAgICAgIHJldHVybiBzZWxmLnRhZ05hbWUuc3BsaXQoIjoiLCAxKVstMV0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2xvY2FsTmFtZQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gc2VsZi50YWdOYW1lLnNwbGl0KCI6IiwgMSlbLTFdCiAKICAgICBkZWYgX2dldF90YWdOYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi50YWdOYW1lCiAKICAgICBkZWYgdW5saW5rKHNlbGYpOgotICAgICAgICBmb3IgYXR0ciBpbiBsaXN0KHNlbGYuX2F0dHJzLnZhbHVlcygpKToKLSAgICAgICAgICAgIGF0dHIudW5saW5rKCkKKyAgICAgICAgaWYgc2VsZi5fYXR0cnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBmb3IgYXR0ciBpbiBsaXN0KHNlbGYuX2F0dHJzLnZhbHVlcygpKToKKyAgICAgICAgICAgICAgICBhdHRyLnVubGluaygpCiAgICAgICAgIHNlbGYuX2F0dHJzID0gTm9uZQogICAgICAgICBzZWxmLl9hdHRyc05TID0gTm9uZQogICAgICAgICBOb2RlLnVubGluayhzZWxmKQogCiAgICAgZGVmIGdldEF0dHJpYnV0ZShzZWxmLCBhdHRuYW1lKToKKyAgICAgICAgaWYgc2VsZi5fYXR0cnMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fYXR0cnNbYXR0bmFtZV0udmFsdWUKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgcmV0dXJuICIiCiAKICAgICBkZWYgZ2V0QXR0cmlidXRlTlMoc2VsZiwgbmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOgorICAgICAgICBpZiBzZWxmLl9hdHRyc05TIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2F0dHJzTlNbKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKV0udmFsdWUKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtNzE5LDE0ICs3NDIsMTEgQEAKICAgICAgICAgYXR0ciA9IHNlbGYuZ2V0QXR0cmlidXRlTm9kZShhdHRuYW1lKQogICAgICAgICBpZiBhdHRyIGlzIE5vbmU6CiAgICAgICAgICAgICBhdHRyID0gQXR0cihhdHRuYW1lKQotICAgICAgICAgICAgIyBmb3IgcGVyZm9ybWFuY2UKLSAgICAgICAgICAgIGQgPSBhdHRyLl9fZGljdF9fCi0gICAgICAgICAgICBkWyJ2YWx1ZSJdID0gZFsibm9kZVZhbHVlIl0gPSB2YWx1ZQotICAgICAgICAgICAgZFsib3duZXJEb2N1bWVudCJdID0gc2VsZi5vd25lckRvY3VtZW50CisgICAgICAgICAgICBhdHRyLnZhbHVlID0gdmFsdWUgIyBhbHNvIHNldHMgbm9kZVZhbHVlCisgICAgICAgICAgICBhdHRyLm93bmVyRG9jdW1lbnQgPSBzZWxmLm93bmVyRG9jdW1lbnQKICAgICAgICAgICAgIHNlbGYuc2V0QXR0cmlidXRlTm9kZShhdHRyKQogICAgICAgICBlbGlmIHZhbHVlICE9IGF0dHIudmFsdWU6Ci0gICAgICAgICAgICBkID0gYXR0ci5fX2RpY3RfXwotICAgICAgICAgICAgZFsidmFsdWUiXSA9IGRbIm5vZGVWYWx1ZSJdID0gdmFsdWUKKyAgICAgICAgICAgIGF0dHIudmFsdWUgPSB2YWx1ZQogICAgICAgICAgICAgaWYgYXR0ci5pc0lkOgogICAgICAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmKQogCkBAIC03MzQsMzMgKzc1NCwzMyBAQAogICAgICAgICBwcmVmaXgsIGxvY2FsbmFtZSA9IF9uc3NwbGl0KHF1YWxpZmllZE5hbWUpCiAgICAgICAgIGF0dHIgPSBzZWxmLmdldEF0dHJpYnV0ZU5vZGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsbmFtZSkKICAgICAgICAgaWYgYXR0ciBpcyBOb25lOgotICAgICAgICAgICAgIyBmb3IgcGVyZm9ybWFuY2UKICAgICAgICAgICAgIGF0dHIgPSBBdHRyKHF1YWxpZmllZE5hbWUsIG5hbWVzcGFjZVVSSSwgbG9jYWxuYW1lLCBwcmVmaXgpCi0gICAgICAgICAgICBkID0gYXR0ci5fX2RpY3RfXwotICAgICAgICAgICAgZFsicHJlZml4Il0gPSBwcmVmaXgKLSAgICAgICAgICAgIGRbIm5vZGVOYW1lIl0gPSBxdWFsaWZpZWROYW1lCi0gICAgICAgICAgICBkWyJ2YWx1ZSJdID0gZFsibm9kZVZhbHVlIl0gPSB2YWx1ZQotICAgICAgICAgICAgZFsib3duZXJEb2N1bWVudCJdID0gc2VsZi5vd25lckRvY3VtZW50CisgICAgICAgICAgICBhdHRyLnZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgIGF0dHIub3duZXJEb2N1bWVudCA9IHNlbGYub3duZXJEb2N1bWVudAogICAgICAgICAgICAgc2VsZi5zZXRBdHRyaWJ1dGVOb2RlKGF0dHIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkID0gYXR0ci5fX2RpY3RfXwogICAgICAgICAgICAgaWYgdmFsdWUgIT0gYXR0ci52YWx1ZToKLSAgICAgICAgICAgICAgICBkWyJ2YWx1ZSJdID0gZFsibm9kZVZhbHVlIl0gPSB2YWx1ZQorICAgICAgICAgICAgICAgIGF0dHIudmFsdWUgPSB2YWx1ZQogICAgICAgICAgICAgICAgIGlmIGF0dHIuaXNJZDoKICAgICAgICAgICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYpCiAgICAgICAgICAgICBpZiBhdHRyLnByZWZpeCAhPSBwcmVmaXg6Ci0gICAgICAgICAgICAgICAgZFsicHJlZml4Il0gPSBwcmVmaXgKLSAgICAgICAgICAgICAgICBkWyJub2RlTmFtZSJdID0gcXVhbGlmaWVkTmFtZQorICAgICAgICAgICAgICAgIGF0dHIucHJlZml4ID0gcHJlZml4CisgICAgICAgICAgICAgICAgYXR0ci5ub2RlTmFtZSA9IHF1YWxpZmllZE5hbWUKIAogICAgIGRlZiBnZXRBdHRyaWJ1dGVOb2RlKHNlbGYsIGF0dHJuYW1lKToKKyAgICAgICAgaWYgc2VsZi5fYXR0cnMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHJldHVybiBzZWxmLl9hdHRycy5nZXQoYXR0cm5hbWUpCiAKICAgICBkZWYgZ2V0QXR0cmlidXRlTm9kZU5TKHNlbGYsIG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKToKKyAgICAgICAgaWYgc2VsZi5fYXR0cnNOUyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgcmV0dXJuIHNlbGYuX2F0dHJzTlMuZ2V0KChuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkpCiAKICAgICBkZWYgc2V0QXR0cmlidXRlTm9kZShzZWxmLCBhdHRyKToKICAgICAgICAgaWYgYXR0ci5vd25lckVsZW1lbnQgbm90IGluIChOb25lLCBzZWxmKToKICAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uSW51c2VBdHRyaWJ1dGVFcnIoImF0dHJpYnV0ZSBub2RlIGFscmVhZHkgb3duZWQiKQorICAgICAgICBzZWxmLl9lbnN1cmVfYXR0cmlidXRlcygpCiAgICAgICAgIG9sZDEgPSBzZWxmLl9hdHRycy5nZXQoYXR0ci5uYW1lLCBOb25lKQogICAgICAgICBpZiBvbGQxIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5yZW1vdmVBdHRyaWJ1dGVOb2RlKG9sZDEpCkBAIC03NzksNiArNzk5LDggQEAKICAgICBzZXRBdHRyaWJ1dGVOb2RlTlMgPSBzZXRBdHRyaWJ1dGVOb2RlCiAKICAgICBkZWYgcmVtb3ZlQXR0cmlidXRlKHNlbGYsIG5hbWUpOgorICAgICAgICBpZiBzZWxmLl9hdHRyc05TIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdEZvdW5kRXJyKCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgYXR0ciA9IHNlbGYuX2F0dHJzW25hbWVdCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKQEAgLTc4Niw2ICs4MDgsOCBAQAogICAgICAgICBzZWxmLnJlbW92ZUF0dHJpYnV0ZU5vZGUoYXR0cikKIAogICAgIGRlZiByZW1vdmVBdHRyaWJ1dGVOUyhzZWxmLCBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzTlMgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm90Rm91bmRFcnIoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBhdHRyID0gc2VsZi5fYXR0cnNOU1sobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpXQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC04MDgsOSArODMyLDEzIEBACiAgICAgcmVtb3ZlQXR0cmlidXRlTm9kZU5TID0gcmVtb3ZlQXR0cmlidXRlTm9kZQogCiAgICAgZGVmIGhhc0F0dHJpYnV0ZShzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgc2VsZi5fYXR0cnMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gbmFtZSBpbiBzZWxmLl9hdHRycwogCiAgICAgZGVmIGhhc0F0dHJpYnV0ZU5TKHNlbGYsIG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKToKKyAgICAgICAgaWYgc2VsZi5fYXR0cnNOUyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiAobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpIGluIHNlbGYuX2F0dHJzTlMKIAogICAgIGRlZiBnZXRFbGVtZW50c0J5VGFnTmFtZShzZWxmLCBuYW1lKToKQEAgLTg1MSw2ICs4NzksNyBAQAogICAgICAgICAgICAgd3JpdGVyLndyaXRlKCIvPiVzIiUobmV3bCkpCiAKICAgICBkZWYgX2dldF9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBzZWxmLl9lbnN1cmVfYXR0cmlidXRlcygpCiAgICAgICAgIHJldHVybiBOYW1lZE5vZGVNYXAoc2VsZi5fYXR0cnMsIHNlbGYuX2F0dHJzTlMsIHNlbGYpCiAKICAgICBkZWYgaGFzQXR0cmlidXRlcyhzZWxmKToKQEAgLTg3NSw3ICs5MDQsNyBAQAogICAgICAgICBpZiBfZ2V0X2NvbnRhaW5pbmdfZW50cmVmKHNlbGYpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob01vZGlmaWNhdGlvbkFsbG93ZWRFcnIoKQogICAgICAgICBpZiBub3QgaWRBdHRyLl9pc19pZDoKLSAgICAgICAgICAgIGlkQXR0ci5fX2RpY3RfX1snX2lzX2lkJ10gPSBUcnVlCisgICAgICAgICAgICBpZEF0dHIuX2lzX2lkID0gVHJ1ZQogICAgICAgICAgICAgc2VsZi5fbWFnaWNfaWRfbm9kZXMgKz0gMQogICAgICAgICAgICAgc2VsZi5vd25lckRvY3VtZW50Ll9tYWdpY19pZF9jb3VudCArPSAxCiAgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZikKQEAgLTg4OCwxOSArOTE3LDIwIEBACiAKIGRlZiBfc2V0X2F0dHJpYnV0ZV9ub2RlKGVsZW1lbnQsIGF0dHIpOgogICAgIF9jbGVhcl9pZF9jYWNoZShlbGVtZW50KQorICAgIGVsZW1lbnQuX2Vuc3VyZV9hdHRyaWJ1dGVzKCkKICAgICBlbGVtZW50Ll9hdHRyc1thdHRyLm5hbWVdID0gYXR0cgogICAgIGVsZW1lbnQuX2F0dHJzTlNbKGF0dHIubmFtZXNwYWNlVVJJLCBhdHRyLmxvY2FsTmFtZSldID0gYXR0cgogCiAgICAgIyBUaGlzIGNyZWF0ZXMgYSBjaXJjdWxhciByZWZlcmVuY2UsIGJ1dCBFbGVtZW50LnVubGluaygpCiAgICAgIyBicmVha3MgdGhlIGN5Y2xlIHNpbmNlIHRoZSByZWZlcmVuY2VzIHRvIHRoZSBhdHRyaWJ1dGUKICAgICAjIGRpY3Rpb25hcmllcyBhcmUgdG9zc2VkLgotICAgIGF0dHIuX19kaWN0X19bJ293bmVyRWxlbWVudCddID0gZWxlbWVudAotCisgICAgYXR0ci5vd25lckVsZW1lbnQgPSBlbGVtZW50CiAKIGNsYXNzIENoaWxkbGVzczoKICAgICAiIiJNaXhpbiB0aGF0IG1ha2VzIGNoaWxkbGVzcy1uZXNzIGVhc3kgdG8gaW1wbGVtZW50IGFuZCBhdm9pZHMKICAgICB0aGUgY29tcGxleGl0eSBvZiB0aGUgTm9kZSBtZXRob2RzIHRoYXQgZGVhbCB3aXRoIGNoaWxkcmVuLgogICAgICIiIgorICAgIF9fc2xvdHNfXyA9ICgpCiAKICAgICBhdHRyaWJ1dGVzID0gTm9uZQogICAgIGNoaWxkTm9kZXMgPSBFbXB0eU5vZGVMaXN0KCkKQEAgLTkzOSw1NCArOTY5LDQ5IEBACiAKIGNsYXNzIFByb2Nlc3NpbmdJbnN0cnVjdGlvbihDaGlsZGxlc3MsIE5vZGUpOgogICAgIG5vZGVUeXBlID0gTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUKKyAgICBfX3Nsb3RzX18gPSAoJ3RhcmdldCcsICdkYXRhJykKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXJnZXQsIGRhdGEpOgotICAgICAgICBzZWxmLnRhcmdldCA9IHNlbGYubm9kZU5hbWUgPSB0YXJnZXQKLSAgICAgICAgc2VsZi5kYXRhID0gc2VsZi5ub2RlVmFsdWUgPSBkYXRhCisgICAgICAgIHNlbGYudGFyZ2V0ID0gdGFyZ2V0CisgICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKIAotICAgIGRlZiBfZ2V0X2RhdGEoc2VsZik6CisgICAgIyBub2RlVmFsdWUgaXMgYW4gYWxpYXMgZm9yIGRhdGEKKyAgICBkZWYgX2dldF9ub2RlVmFsdWUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmRhdGEKLSAgICBkZWYgX3NldF9kYXRhKHNlbGYsIHZhbHVlKToKLSAgICAgICAgZCA9IHNlbGYuX19kaWN0X18KLSAgICAgICAgZFsnZGF0YSddID0gZFsnbm9kZVZhbHVlJ10gPSB2YWx1ZQorICAgIGRlZiBfc2V0X25vZGVWYWx1ZShzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKKyAgICBub2RlVmFsdWUgPSBwcm9wZXJ0eShfZ2V0X25vZGVWYWx1ZSwgX3NldF9ub2RlVmFsdWUpCiAKLSAgICBkZWYgX2dldF90YXJnZXQoc2VsZik6CisgICAgIyBub2RlTmFtZSBpcyBhbiBhbGlhcyBmb3IgdGFyZ2V0CisgICAgZGVmIF9nZXRfbm9kZU5hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnRhcmdldAotICAgIGRlZiBfc2V0X3RhcmdldChzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIGQgPSBzZWxmLl9fZGljdF9fCi0gICAgICAgIGRbJ3RhcmdldCddID0gZFsnbm9kZU5hbWUnXSA9IHZhbHVlCi0KLSAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgotICAgICAgICBpZiBuYW1lID09ICJkYXRhIiBvciBuYW1lID09ICJub2RlVmFsdWUiOgotICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1snZGF0YSddID0gc2VsZi5fX2RpY3RfX1snbm9kZVZhbHVlJ10gPSB2YWx1ZQotICAgICAgICBlbGlmIG5hbWUgPT0gInRhcmdldCIgb3IgbmFtZSA9PSAibm9kZU5hbWUiOgotICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1sndGFyZ2V0J10gPSBzZWxmLl9fZGljdF9fWydub2RlTmFtZSddID0gdmFsdWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX19kaWN0X19bbmFtZV0gPSB2YWx1ZQorICAgIGRlZiBfc2V0X25vZGVOYW1lKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi50YXJnZXQgPSB2YWx1ZQorICAgIG5vZGVOYW1lID0gcHJvcGVydHkoX2dldF9ub2RlTmFtZSwgX3NldF9ub2RlTmFtZSkKIAogICAgIGRlZiB3cml0ZXhtbChzZWxmLCB3cml0ZXIsIGluZGVudD0iIiwgYWRkaW5kZW50PSIiLCBuZXdsPSIiKToKICAgICAgICAgd3JpdGVyLndyaXRlKCIlczw/JXMgJXM/PiVzIiAlIChpbmRlbnQsc2VsZi50YXJnZXQsIHNlbGYuZGF0YSwgbmV3bCkpCiAKIAogY2xhc3MgQ2hhcmFjdGVyRGF0YShDaGlsZGxlc3MsIE5vZGUpOgorICAgIF9fc2xvdHNfXz0oJ19kYXRhJywgJ293bmVyRG9jdW1lbnQnLCdwYXJlbnROb2RlJywgJ3ByZXZpb3VzU2libGluZycsICduZXh0U2libGluZycpCisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYub3duZXJEb2N1bWVudCA9IHNlbGYucGFyZW50Tm9kZSA9IE5vbmUKKyAgICAgICAgc2VsZi5wcmV2aW91c1NpYmxpbmcgPSBzZWxmLm5leHRTaWJsaW5nID0gTm9uZQorICAgICAgICBzZWxmLl9kYXRhID0gJycKKyAgICAgICAgTm9kZS5fX2luaXRfXyhzZWxmKQorCiAgICAgZGVmIF9nZXRfbGVuZ3RoKHNlbGYpOgogICAgICAgICByZXR1cm4gbGVuKHNlbGYuZGF0YSkKICAgICBfX2xlbl9fID0gX2dldF9sZW5ndGgKIAogICAgIGRlZiBfZ2V0X2RhdGEoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fZGljdF9fWydkYXRhJ10KKyAgICAgICAgcmV0dXJuIHNlbGYuX2RhdGEKICAgICBkZWYgX3NldF9kYXRhKHNlbGYsIGRhdGEpOgotICAgICAgICBkID0gc2VsZi5fX2RpY3RfXwotICAgICAgICBkWydkYXRhJ10gPSBkWydub2RlVmFsdWUnXSA9IGRhdGEKKyAgICAgICAgc2VsZi5fZGF0YSA9IGRhdGEKIAotICAgIF9nZXRfbm9kZVZhbHVlID0gX2dldF9kYXRhCi0gICAgX3NldF9ub2RlVmFsdWUgPSBfc2V0X2RhdGEKLQotICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6Ci0gICAgICAgIGlmIG5hbWUgPT0gImRhdGEiIG9yIG5hbWUgPT0gIm5vZGVWYWx1ZSI6Ci0gICAgICAgICAgICBzZWxmLl9fZGljdF9fWydkYXRhJ10gPSBzZWxmLl9fZGljdF9fWydub2RlVmFsdWUnXSA9IHZhbHVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9fZGljdF9fW25hbWVdID0gdmFsdWUKKyAgICBkYXRhID0gbm9kZVZhbHVlID0gcHJvcGVydHkoX2dldF9kYXRhLCBfc2V0X2RhdGEpCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIGRhdGEgPSBzZWxmLmRhdGEKQEAgLTEwNDMsMTAgKzEwNjgsNyBAQAogCiAKIGNsYXNzIFRleHQoQ2hhcmFjdGVyRGF0YSk6Ci0gICAgIyBNYWtlIHN1cmUgd2UgZG9uJ3QgYWRkIGFuIGluc3RhbmNlIF9fZGljdF9fIGlmIHdlIGRvbid0IGFscmVhZHkKLSAgICAjIGhhdmUgb25lLCBhdCBsZWFzdCB3aGVuIHRoYXQncyBwb3NzaWJsZToKLSAgICAjIFhYWCB0aGlzIGRvZXMgbm90IHdvcmssIENoYXJhY3RlckRhdGEgaXMgYW4gb2xkLXN0eWxlIGNsYXNzCi0gICAgIyBfX3Nsb3RzX18gPSAoKQorICAgIF9fc2xvdHNfXyA9ICgpCiAKICAgICBub2RlVHlwZSA9IE5vZGUuVEVYVF9OT0RFCiAgICAgbm9kZU5hbWUgPSAiI3RleHQiCkBAIC0xMTEzLDkgKzExMzUsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBpZiBjb250ZW50OgotICAgICAgICAgICAgZCA9IHNlbGYuX19kaWN0X18KLSAgICAgICAgICAgIGRbJ2RhdGEnXSA9IGNvbnRlbnQKLSAgICAgICAgICAgIGRbJ25vZGVWYWx1ZSddID0gY29udGVudAorICAgICAgICAgICAgc2VsZi5kYXRhID0gY29udGVudAogICAgICAgICAgICAgcmV0dXJuIHNlbGYKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBOb25lCkBAIC0xMTYxLDcgKzExODEsOCBAQAogICAgIG5vZGVOYW1lID0gIiNjb21tZW50IgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLmRhdGEgPSBzZWxmLm5vZGVWYWx1ZSA9IGRhdGEKKyAgICAgICAgQ2hhcmFjdGVyRGF0YS5fX2luaXRfXyhzZWxmKQorICAgICAgICBzZWxmLl9kYXRhID0gZGF0YQogCiAgICAgZGVmIHdyaXRleG1sKHNlbGYsIHdyaXRlciwgaW5kZW50PSIiLCBhZGRpbmRlbnQ9IiIsIG5ld2w9IiIpOgogICAgICAgICBpZiAiLS0iIGluIHNlbGYuZGF0YToKQEAgLTExNzAsMTAgKzExOTEsNyBAQAogCiAKIGNsYXNzIENEQVRBU2VjdGlvbihUZXh0KToKLSAgICAjIE1ha2Ugc3VyZSB3ZSBkb24ndCBhZGQgYW4gaW5zdGFuY2UgX19kaWN0X18gaWYgd2UgZG9uJ3QgYWxyZWFkeQotICAgICMgaGF2ZSBvbmUsIGF0IGxlYXN0IHdoZW4gdGhhdCdzIHBvc3NpYmxlOgotICAgICMgWFhYIHRoaXMgZG9lcyBub3Qgd29yaywgVGV4dCBpcyBhbiBvbGQtc3R5bGUgY2xhc3MKLSAgICAjIF9fc2xvdHNfXyA9ICgpCisgICAgX19zbG90c19fID0gKCkKIAogICAgIG5vZGVUeXBlID0gTm9kZS5DREFUQV9TRUNUSU9OX05PREUKICAgICBub2RlTmFtZSA9ICIjY2RhdGEtc2VjdGlvbiIKQEAgLTEyNTMsOCArMTI3MSw3IEBACiBjbGFzcyBJZGVudGlmaWVkOgogICAgICIiIk1peC1pbiBjbGFzcyB0aGF0IHN1cHBvcnRzIHRoZSBwdWJsaWNJZCBhbmQgc3lzdGVtSWQgYXR0cmlidXRlcy4iIiIKIAotICAgICMgWFhYIHRoaXMgZG9lcyBub3Qgd29yaywgdGhpcyBpcyBhbiBvbGQtc3R5bGUgY2xhc3MKLSAgICAjIF9fc2xvdHNfXyA9ICdwdWJsaWNJZCcsICdzeXN0ZW1JZCcKKyAgICBfX3Nsb3RzX18gPSAncHVibGljSWQnLCAnc3lzdGVtSWQnCiAKICAgICBkZWYgX2lkZW50aWZpZWRfbWl4aW5faW5pdChzZWxmLCBwdWJsaWNJZCwgc3lzdGVtSWQpOgogICAgICAgICBzZWxmLnB1YmxpY0lkID0gcHVibGljSWQKQEAgLTE1MDUsMTggKzE1MjIsMTkgQEAKICAgICAgICAgbm9kZS5vd25lckRvY3VtZW50Ll9pZF9zZWFyY2hfc3RhY2s9IE5vbmUKIAogY2xhc3MgRG9jdW1lbnQoTm9kZSwgRG9jdW1lbnRMUyk6CisgICAgX19zbG90c19fID0gKCdfZWxlbV9pbmZvJywgJ2RvY3R5cGUnLAorICAgICAgICAgICAgICAgICAnX2lkX3NlYXJjaF9zdGFjaycsICdjaGlsZE5vZGVzJywgJ19pZF9jYWNoZScpCiAgICAgX2NoaWxkX25vZGVfdHlwZXMgPSAoTm9kZS5FTEVNRU5UX05PREUsIE5vZGUuUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFLAogICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUuQ09NTUVOVF9OT0RFLCBOb2RlLkRPQ1VNRU5UX1RZUEVfTk9ERSkKIAorICAgIGltcGxlbWVudGF0aW9uID0gRE9NSW1wbGVtZW50YXRpb24oKQogICAgIG5vZGVUeXBlID0gTm9kZS5ET0NVTUVOVF9OT0RFCiAgICAgbm9kZU5hbWUgPSAiI2RvY3VtZW50IgogICAgIG5vZGVWYWx1ZSA9IE5vbmUKICAgICBhdHRyaWJ1dGVzID0gTm9uZQotICAgIGRvY3R5cGUgPSBOb25lCiAgICAgcGFyZW50Tm9kZSA9IE5vbmUKICAgICBwcmV2aW91c1NpYmxpbmcgPSBuZXh0U2libGluZyA9IE5vbmUKIAotICAgIGltcGxlbWVudGF0aW9uID0gRE9NSW1wbGVtZW50YXRpb24oKQogCiAgICAgIyBEb2N1bWVudCBhdHRyaWJ1dGVzIGZyb20gTGV2ZWwgMyAoV0QgOSBBcHJpbCAyMDAyKQogCkBAIC0xNTMxLDYgKzE1NDksNyBAQAogICAgIF9tYWdpY19pZF9jb3VudCA9IDAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5kb2N0eXBlID0gTm9uZQogICAgICAgICBzZWxmLmNoaWxkTm9kZXMgPSBOb2RlTGlzdCgpCiAgICAgICAgICMgbWFwcGluZyBvZiAobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpIC0+IEVsZW1lbnRJbmZvCiAgICAgICAgICMgICAgICAgIGFuZCB0YWdOYW1lIC0+IEVsZW1lbnRJbmZvCkBAIC0xNzcyLDEyICsxNzkxLDEyIEBACiAgICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdFN1cHBvcnRlZEVycigiY2Fubm90IGltcG9ydCBkb2N1bWVudCB0eXBlIG5vZGVzIikKICAgICAgICAgcmV0dXJuIF9jbG9uZV9ub2RlKG5vZGUsIGRlZXAsIHNlbGYpCiAKLSAgICBkZWYgd3JpdGV4bWwoc2VsZiwgd3JpdGVyLCBpbmRlbnQ9IiIsIGFkZGluZGVudD0iIiwgbmV3bD0iIiwKLSAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBOb25lKToKKyAgICBkZWYgd3JpdGV4bWwoc2VsZiwgd3JpdGVyLCBpbmRlbnQ9IiIsIGFkZGluZGVudD0iIiwgbmV3bD0iIiwgZW5jb2Rpbmc9Tm9uZSk6CiAgICAgICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6CiAgICAgICAgICAgICB3cml0ZXIud3JpdGUoJzw/eG1sIHZlcnNpb249IjEuMCIgPz4nK25ld2wpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB3cml0ZXIud3JpdGUoJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IiVzIj8+JXMnICUgKGVuY29kaW5nLCBuZXdsKSkKKyAgICAgICAgICAgIHdyaXRlci53cml0ZSgnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iJXMiPz4lcycgJSAoCisgICAgICAgICAgICAgICAgZW5jb2RpbmcsIG5ld2wpKQogICAgICAgICBmb3Igbm9kZSBpbiBzZWxmLmNoaWxkTm9kZXM6CiAgICAgICAgICAgICBub2RlLndyaXRleG1sKHdyaXRlciwgaW5kZW50LCBhZGRpbmRlbnQsIG5ld2wpCiAKQEAgLTE4MTYsMTcgKzE4MzUsMTUgQEAKICAgICAgICAgICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZU5vZGUobikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGVsZW1lbnQgPSBOb25lCi0gICAgICAgICMgYXZvaWQgX19zZXRhdHRyX18KLSAgICAgICAgZCA9IG4uX19kaWN0X18KLSAgICAgICAgZFsncHJlZml4J10gPSBwcmVmaXgKLSAgICAgICAgZFsnbG9jYWxOYW1lJ10gPSBsb2NhbE5hbWUKLSAgICAgICAgZFsnbmFtZXNwYWNlVVJJJ10gPSBuYW1lc3BhY2VVUkkKLSAgICAgICAgZFsnbm9kZU5hbWUnXSA9IG5hbWUKKyAgICAgICAgbi5wcmVmaXggPSBwcmVmaXgKKyAgICAgICAgbi5fbG9jYWxOYW1lID0gbG9jYWxOYW1lCisgICAgICAgIG4ubmFtZXNwYWNlVVJJID0gbmFtZXNwYWNlVVJJCisgICAgICAgIG4ubm9kZU5hbWUgPSBuYW1lCiAgICAgICAgIGlmIG4ubm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05PREU6Ci0gICAgICAgICAgICBkWyd0YWdOYW1lJ10gPSBuYW1lCisgICAgICAgICAgICBuLnRhZ05hbWUgPSBuYW1lCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIGF0dHJpYnV0ZSBub2RlCi0gICAgICAgICAgICBkWyduYW1lJ10gPSBuYW1lCisgICAgICAgICAgICBuLm5hbWUgPSBuYW1lCiAgICAgICAgICAgICBpZiBlbGVtZW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlTm9kZShuKQogICAgICAgICAgICAgICAgIGlmIGlzX2lkOgpkaWZmIC0tZ2l0IGEvTGliL3htbC9kb20vcHVsbGRvbS5weSBiL0xpYi94bWwvZG9tL3B1bGxkb20ucHkKaW5kZXggZDVhYzhiMi4uNDM1MDRmNyAxMDA2NDQKLS0tIGEvTGliL3htbC9kb20vcHVsbGRvbS5weQorKysgYi9MaWIveG1sL2RvbS9wdWxsZG9tLnB5CkBAIC0xLDYgKzEsNSBAQAogaW1wb3J0IHhtbC5zYXgKIGltcG9ydCB4bWwuc2F4LmhhbmRsZXIKLWltcG9ydCB0eXBlcwogCiBTVEFSVF9FTEVNRU5UID0gIlNUQVJUX0VMRU1FTlQiCiBFTkRfRUxFTUVOVCA9ICJFTkRfRUxFTUVOVCIKQEAgLTMzNCwxMCArMzMzLDcgQEAKICAgICByZXR1cm4gRE9NRXZlbnRTdHJlYW0oc3RyZWFtLCBwYXJzZXIsIGJ1ZnNpemUpCiAKIGRlZiBwYXJzZVN0cmluZyhzdHJpbmcsIHBhcnNlcj1Ob25lKToKLSAgICB0cnk6Ci0gICAgICAgIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworICAgIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiAKICAgICBidWZzaXplID0gbGVuKHN0cmluZykKICAgICBidWYgPSBTdHJpbmdJTyhzdHJpbmcpCmRpZmYgLS1naXQgYS9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5IGIvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weQppbmRleCBlMzYxZWZmLi40YzczMzAzIDEwMDY0NAotLS0gYS9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5CisrKyBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkKQEAgLTY4LDggKzY4LDkgQEAKICAgICAidG9zdHJpbmciLCAidG9zdHJpbmdsaXN0IiwKICAgICAiVHJlZUJ1aWxkZXIiLAogICAgICJWRVJTSU9OIiwKLSAgICAiWE1MIiwKKyAgICAiWE1MIiwgIlhNTElEIiwKICAgICAiWE1MUGFyc2VyIiwgIlhNTFRyZWVCdWlsZGVyIiwKKyAgICAicmVnaXN0ZXJfbmFtZXNwYWNlIiwKICAgICBdCiAKIFZFUlNJT04gPSAiMS4zLjAiCkBAIC05OSwzNCArMTAwLDExIEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgcmUKIGltcG9ydCB3YXJuaW5ncworaW1wb3J0IGlvCitpbXBvcnQgY29udGV4dGxpYgogCitmcm9tIC4gaW1wb3J0IEVsZW1lbnRQYXRoCiAKLWNsYXNzIF9TaW1wbGVFbGVtZW50UGF0aDoKLSAgICAjIGVtdWxhdGUgcHJlLTEuMiBmaW5kL2ZpbmR0ZXh0L2ZpbmRhbGwgYmVoYXZpb3VyCi0gICAgZGVmIGZpbmQoc2VsZiwgZWxlbWVudCwgdGFnLCBuYW1lc3BhY2VzPU5vbmUpOgotICAgICAgICBmb3IgZWxlbSBpbiBlbGVtZW50OgotICAgICAgICAgICAgaWYgZWxlbS50YWcgPT0gdGFnOgotICAgICAgICAgICAgICAgIHJldHVybiBlbGVtCi0gICAgICAgIHJldHVybiBOb25lCi0gICAgZGVmIGZpbmR0ZXh0KHNlbGYsIGVsZW1lbnQsIHRhZywgZGVmYXVsdD1Ob25lLCBuYW1lc3BhY2VzPU5vbmUpOgotICAgICAgICBlbGVtID0gc2VsZi5maW5kKGVsZW1lbnQsIHRhZykKLSAgICAgICAgaWYgZWxlbSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHQKLSAgICAgICAgcmV0dXJuIGVsZW0udGV4dCBvciAiIgotICAgIGRlZiBpdGVyZmluZChzZWxmLCBlbGVtZW50LCB0YWcsIG5hbWVzcGFjZXM9Tm9uZSk6Ci0gICAgICAgIGlmIHRhZ1s6M10gPT0gIi4vLyI6Ci0gICAgICAgICAgICBmb3IgZWxlbSBpbiBlbGVtZW50Lml0ZXIodGFnWzM6XSk6Ci0gICAgICAgICAgICAgICAgeWllbGQgZWxlbQotICAgICAgICBmb3IgZWxlbSBpbiBlbGVtZW50OgotICAgICAgICAgICAgaWYgZWxlbS50YWcgPT0gdGFnOgotICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KLSAgICBkZWYgZmluZGFsbChzZWxmLCBlbGVtZW50LCB0YWcsIG5hbWVzcGFjZXM9Tm9uZSk6Ci0gICAgICAgIHJldHVybiBsaXN0KHNlbGYuaXRlcmZpbmQoZWxlbWVudCwgdGFnLCBuYW1lc3BhY2VzKSkKLQotdHJ5OgotICAgIGZyb20gLiBpbXBvcnQgRWxlbWVudFBhdGgKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBFbGVtZW50UGF0aCA9IF9TaW1wbGVFbGVtZW50UGF0aCgpCiAKICMjCiAjIFBhcnNlciBlcnJvci4gIFRoaXMgaXMgYSBzdWJjbGFzcyBvZiA8Yj5TeW50YXhFcnJvcjwvYj4uCkBAIC0xNDgsOSArMTI2LDkgQEAKICMgQGRlZnJldHVybiBmbGFnCiAKIGRlZiBpc2VsZW1lbnQoZWxlbWVudCk6Ci0gICAgIyBGSVhNRTogbm90IHN1cmUgYWJvdXQgdGhpczsgbWlnaHQgYmUgYSBiZXR0ZXIgaWRlYSB0byBsb29rCi0gICAgIyBmb3IgdGFnL2F0dHJpYi90ZXh0IGF0dHJpYnV0ZXMKLSAgICByZXR1cm4gaXNpbnN0YW5jZShlbGVtZW50LCBFbGVtZW50KSBvciBoYXNhdHRyKGVsZW1lbnQsICJ0YWciKQorICAgICMgRklYTUU6IG5vdCBzdXJlIGFib3V0IHRoaXM7CisgICAgIyBpc2luc3RhbmNlKGVsZW1lbnQsIEVsZW1lbnQpIG9yIGxvb2sgZm9yIHRhZy9hdHRyaWIvdGV4dCBhdHRyaWJ1dGVzCisgICAgcmV0dXJuIGhhc2F0dHIoZWxlbWVudCwgJ3RhZycpCiAKICMjCiAjIEVsZW1lbnQgY2xhc3MuICBUaGlzIGNsYXNzIGRlZmluZXMgdGhlIEVsZW1lbnQgaW50ZXJmYWNlLCBhbmQKQEAgLTIwNSw2ICsxODMsOSBAQAogICAgICMgY29uc3RydWN0b3IKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YWcsIGF0dHJpYj17fSwgKipleHRyYSk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGF0dHJpYiwgZGljdCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImF0dHJpYiBtdXN0IGJlIGRpY3QsIG5vdCAlcyIgJSAoCisgICAgICAgICAgICAgICAgYXR0cmliLl9fY2xhc3NfXy5fX25hbWVfXywpKQogICAgICAgICBhdHRyaWIgPSBhdHRyaWIuY29weSgpCiAgICAgICAgIGF0dHJpYi51cGRhdGUoZXh0cmEpCiAgICAgICAgIHNlbGYudGFnID0gdGFnCkBAIC0yOTgsNyArMjc5LDcgQEAKICAgICAjIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIGFkZC4KIAogICAgIGRlZiBhcHBlbmQoc2VsZiwgZWxlbWVudCk6Ci0gICAgICAgICMgYXNzZXJ0IGlzZWxlbWVudChlbGVtZW50KQorICAgICAgICBzZWxmLl9hc3NlcnRfaXNfZWxlbWVudChlbGVtZW50KQogICAgICAgICBzZWxmLl9jaGlsZHJlbi5hcHBlbmQoZWxlbWVudCkKIAogICAgICMjCkBAIC0zMDgsOCArMjg5LDggQEAKICAgICAjIEBzaW5jZSAxLjMKIAogICAgIGRlZiBleHRlbmQoc2VsZiwgZWxlbWVudHMpOgotICAgICAgICAjIGZvciBlbGVtZW50IGluIGVsZW1lbnRzOgotICAgICAgICAjICAgICBhc3NlcnQgaXNlbGVtZW50KGVsZW1lbnQpCisgICAgICAgIGZvciBlbGVtZW50IGluIGVsZW1lbnRzOgorICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2lzX2VsZW1lbnQoZWxlbWVudCkKICAgICAgICAgc2VsZi5fY2hpbGRyZW4uZXh0ZW5kKGVsZW1lbnRzKQogCiAgICAgIyMKQEAgLTMxOCw5ICsyOTksMTUgQEAKICAgICAjIEBwYXJhbSBpbmRleCBXaGVyZSB0byBpbnNlcnQgdGhlIG5ldyBzdWJlbGVtZW50LgogCiAgICAgZGVmIGluc2VydChzZWxmLCBpbmRleCwgZWxlbWVudCk6Ci0gICAgICAgICMgYXNzZXJ0IGlzZWxlbWVudChlbGVtZW50KQorICAgICAgICBzZWxmLl9hc3NlcnRfaXNfZWxlbWVudChlbGVtZW50KQogICAgICAgICBzZWxmLl9jaGlsZHJlbi5pbnNlcnQoaW5kZXgsIGVsZW1lbnQpCiAKKyAgICBkZWYgX2Fzc2VydF9pc19lbGVtZW50KHNlbGYsIGUpOgorICAgICAgICAjIE5lZWQgdG8gcmVmZXIgdG8gdGhlIGFjdHVhbCBQeXRob24gaW1wbGVtZW50YXRpb24sIG5vdCB0aGUKKyAgICAgICAgIyBzaGFkb3dpbmcgQyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZSwgX0VsZW1lbnQpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdleHBlY3RlZCBhbiBFbGVtZW50LCBub3QgJXMnICUgdHlwZShlKS5fX25hbWVfXykKKwogICAgICMjCiAgICAgIyBSZW1vdmVzIGEgbWF0Y2hpbmcgc3ViZWxlbWVudC4gIFVubGlrZSB0aGUgPGI+ZmluZDwvYj4gbWV0aG9kcywKICAgICAjIHRoaXMgbWV0aG9kIGNvbXBhcmVzIGVsZW1lbnRzIGJhc2VkIG9uIGlkZW50aXR5LCBub3Qgb24gdGFnCkBAIC04MDcsNTkgKzc5NCwzOCBAQAogICAgICMgICAgICJjMTRuIjsgZGVmYXVsdCBpcyAieG1sIikuCiAKICAgICBkZWYgd3JpdGUoc2VsZiwgZmlsZV9vcl9maWxlbmFtZSwKLSAgICAgICAgICAgICAgIyBrZXl3b3JkIGFyZ3VtZW50cwogICAgICAgICAgICAgICBlbmNvZGluZz1Ob25lLAogICAgICAgICAgICAgICB4bWxfZGVjbGFyYXRpb249Tm9uZSwKICAgICAgICAgICAgICAgZGVmYXVsdF9uYW1lc3BhY2U9Tm9uZSwKICAgICAgICAgICAgICAgbWV0aG9kPU5vbmUpOgotICAgICAgICAjIGFzc2VydCBzZWxmLl9yb290IGlzIG5vdCBOb25lCiAgICAgICAgIGlmIG5vdCBtZXRob2Q6CiAgICAgICAgICAgICBtZXRob2QgPSAieG1sIgogICAgICAgICBlbGlmIG1ldGhvZCBub3QgaW4gX3NlcmlhbGl6ZToKLSAgICAgICAgICAgICMgRklYTUU6IHJhaXNlIGFuIEltcG9ydEVycm9yIGZvciBjMTRuIGlmIEVsZW1lbnRDMTROIGlzIG1pc3Npbmc/CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmtub3duIG1ldGhvZCAlciIgJSBtZXRob2QpCiAgICAgICAgIGlmIG5vdCBlbmNvZGluZzoKICAgICAgICAgICAgIGlmIG1ldGhvZCA9PSAiYzE0biI6CiAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTgiCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGVuY29kaW5nID0gInVzLWFzY2lpIgotICAgICAgICBlbGlmIGVuY29kaW5nID09IHN0cjogICMgbHhtbC5ldHJlZSBjb21wYXRpYmlsaXR5LgotICAgICAgICAgICAgZW5jb2RpbmcgPSAidW5pY29kZSIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGVuY29kaW5nID0gZW5jb2RpbmcubG93ZXIoKQotICAgICAgICBpZiBoYXNhdHRyKGZpbGVfb3JfZmlsZW5hbWUsICJ3cml0ZSIpOgotICAgICAgICAgICAgZmlsZSA9IGZpbGVfb3JfZmlsZW5hbWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIGVuY29kaW5nICE9ICJ1bmljb2RlIjoKLSAgICAgICAgICAgICAgICBmaWxlID0gb3BlbihmaWxlX29yX2ZpbGVuYW1lLCAid2IiKQorICAgICAgICB3aXRoIF9nZXRfd3JpdGVyKGZpbGVfb3JfZmlsZW5hbWUsIGVuY29kaW5nKSBhcyB3cml0ZToKKyAgICAgICAgICAgIGlmIG1ldGhvZCA9PSAieG1sIiBhbmQgKHhtbF9kZWNsYXJhdGlvbiBvcgorICAgICAgICAgICAgICAgICAgICAoeG1sX2RlY2xhcmF0aW9uIGlzIE5vbmUgYW5kCisgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyBub3QgaW4gKCJ1dGYtOCIsICJ1cy1hc2NpaSIsICJ1bmljb2RlIikpKToKKyAgICAgICAgICAgICAgICBkZWNsYXJlZF9lbmNvZGluZyA9IGVuY29kaW5nCisgICAgICAgICAgICAgICAgaWYgZW5jb2RpbmcgPT0gInVuaWNvZGUiOgorICAgICAgICAgICAgICAgICAgICAjIFJldHJpZXZlIHRoZSBkZWZhdWx0IGVuY29kaW5nIGZvciB0aGUgeG1sIGRlY2xhcmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBsb2NhbGUKKyAgICAgICAgICAgICAgICAgICAgZGVjbGFyZWRfZW5jb2RpbmcgPSBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoKQorICAgICAgICAgICAgICAgIHdyaXRlKCI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSclcyc/PlxuIiAlICgKKyAgICAgICAgICAgICAgICAgICAgZGVjbGFyZWRfZW5jb2RpbmcsKSkKKyAgICAgICAgICAgIGlmIG1ldGhvZCA9PSAidGV4dCI6CisgICAgICAgICAgICAgICAgX3NlcmlhbGl6ZV90ZXh0KHdyaXRlLCBzZWxmLl9yb290KQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmaWxlID0gb3BlbihmaWxlX29yX2ZpbGVuYW1lLCAidyIpCi0gICAgICAgIGlmIGVuY29kaW5nICE9ICJ1bmljb2RlIjoKLSAgICAgICAgICAgIGRlZiB3cml0ZSh0ZXh0KToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWxlLndyaXRlKHRleHQuZW5jb2RlKGVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieG1sY2hhcnJlZnJlcGxhY2UiKSkKLSAgICAgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICBfcmFpc2Vfc2VyaWFsaXphdGlvbl9lcnJvcih0ZXh0KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgd3JpdGUgPSBmaWxlLndyaXRlCi0gICAgICAgIGlmIG1ldGhvZCA9PSAieG1sIiBhbmQgKHhtbF9kZWNsYXJhdGlvbiBvcgotICAgICAgICAgICAgICAgICh4bWxfZGVjbGFyYXRpb24gaXMgTm9uZSBhbmQKLSAgICAgICAgICAgICAgICAgZW5jb2Rpbmcgbm90IGluICgidXRmLTgiLCAidXMtYXNjaWkiLCAidW5pY29kZSIpKSk6Ci0gICAgICAgICAgICBkZWNsYXJlZF9lbmNvZGluZyA9IGVuY29kaW5nCi0gICAgICAgICAgICBpZiBlbmNvZGluZyA9PSAidW5pY29kZSI6Ci0gICAgICAgICAgICAgICAgIyBSZXRyaWV2ZSB0aGUgZGVmYXVsdCBlbmNvZGluZyBmb3IgdGhlIHhtbCBkZWNsYXJhdGlvbgotICAgICAgICAgICAgICAgIGltcG9ydCBsb2NhbGUKLSAgICAgICAgICAgICAgICBkZWNsYXJlZF9lbmNvZGluZyA9IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpCi0gICAgICAgICAgICB3cml0ZSgiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nJXMnPz5cbiIgJSBkZWNsYXJlZF9lbmNvZGluZykKLSAgICAgICAgaWYgbWV0aG9kID09ICJ0ZXh0IjoKLSAgICAgICAgICAgIF9zZXJpYWxpemVfdGV4dCh3cml0ZSwgc2VsZi5fcm9vdCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHFuYW1lcywgbmFtZXNwYWNlcyA9IF9uYW1lc3BhY2VzKHNlbGYuX3Jvb3QsIGRlZmF1bHRfbmFtZXNwYWNlKQotICAgICAgICAgICAgc2VyaWFsaXplID0gX3NlcmlhbGl6ZVttZXRob2RdCi0gICAgICAgICAgICBzZXJpYWxpemUod3JpdGUsIHNlbGYuX3Jvb3QsIHFuYW1lcywgbmFtZXNwYWNlcykKLSAgICAgICAgaWYgZmlsZV9vcl9maWxlbmFtZSBpcyBub3QgZmlsZToKLSAgICAgICAgICAgIGZpbGUuY2xvc2UoKQorICAgICAgICAgICAgICAgIHFuYW1lcywgbmFtZXNwYWNlcyA9IF9uYW1lc3BhY2VzKHNlbGYuX3Jvb3QsIGRlZmF1bHRfbmFtZXNwYWNlKQorICAgICAgICAgICAgICAgIHNlcmlhbGl6ZSA9IF9zZXJpYWxpemVbbWV0aG9kXQorICAgICAgICAgICAgICAgIHNlcmlhbGl6ZSh3cml0ZSwgc2VsZi5fcm9vdCwgcW5hbWVzLCBuYW1lc3BhY2VzKQogCiAgICAgZGVmIHdyaXRlX2MxNG4oc2VsZiwgZmlsZSk6CiAgICAgICAgICMgbHhtbC5ldHJlZSBjb21wYXRpYmlsaXR5LiAgdXNlIG91dHB1dCBtZXRob2QgaW5zdGVhZApAQCAtODY4LDYgKzgzNCw1OCBAQAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBzZXJpYWxpemF0aW9uIHN1cHBvcnQKIAorQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBfZ2V0X3dyaXRlcihmaWxlX29yX2ZpbGVuYW1lLCBlbmNvZGluZyk6CisgICAgIyByZXR1cm5zIHRleHQgd3JpdGUgbWV0aG9kIGFuZCByZWxlYXNlIGFsbCByZXNvdXJzZXMgYWZ0ZXIgdXNpbmcKKyAgICB0cnk6CisgICAgICAgIHdyaXRlID0gZmlsZV9vcl9maWxlbmFtZS53cml0ZQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgIyBmaWxlX29yX2ZpbGVuYW1lIGlzIGEgZmlsZSBuYW1lCisgICAgICAgIGlmIGVuY29kaW5nID09ICJ1bmljb2RlIjoKKyAgICAgICAgICAgIGZpbGUgPSBvcGVuKGZpbGVfb3JfZmlsZW5hbWUsICJ3IikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZpbGUgPSBvcGVuKGZpbGVfb3JfZmlsZW5hbWUsICJ3IiwgZW5jb2Rpbmc9ZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9InhtbGNoYXJyZWZyZXBsYWNlIikKKyAgICAgICAgd2l0aCBmaWxlOgorICAgICAgICAgICAgeWllbGQgZmlsZS53cml0ZQorICAgIGVsc2U6CisgICAgICAgICMgZmlsZV9vcl9maWxlbmFtZSBpcyBhIGZpbGUtbGlrZSBvYmplY3QKKyAgICAgICAgIyBlbmNvZGluZyBkZXRlcm1pbmVzIGlmIGl0IGlzIGEgdGV4dCBvciBiaW5hcnkgd3JpdGVyCisgICAgICAgIGlmIGVuY29kaW5nID09ICJ1bmljb2RlIjoKKyAgICAgICAgICAgICMgdXNlIGEgdGV4dCB3cml0ZXIgYXMgaXMKKyAgICAgICAgICAgIHlpZWxkIHdyaXRlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIHdyYXAgYSBiaW5hcnkgd3JpdGVyIHdpdGggVGV4dElPV3JhcHBlcgorICAgICAgICAgICAgd2l0aCBjb250ZXh0bGliLkV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZV9vcl9maWxlbmFtZSwgaW8uQnVmZmVyZWRJT0Jhc2UpOgorICAgICAgICAgICAgICAgICAgICBmaWxlID0gZmlsZV9vcl9maWxlbmFtZQorICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShmaWxlX29yX2ZpbGVuYW1lLCBpby5SYXdJT0Jhc2UpOgorICAgICAgICAgICAgICAgICAgICBmaWxlID0gaW8uQnVmZmVyZWRXcml0ZXIoZmlsZV9vcl9maWxlbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgIyBLZWVwIHRoZSBvcmlnaW5hbCBmaWxlIG9wZW4gd2hlbiB0aGUgQnVmZmVyZWRXcml0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgIyBkZXN0cm95ZWQKKyAgICAgICAgICAgICAgICAgICAgc3RhY2suY2FsbGJhY2soZmlsZS5kZXRhY2gpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHRvIGhhbmRsZSBwYXNzZWQgb2JqZWN0cyB0aGF0IGFyZW4ndCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIyBJT0Jhc2UgaGllcmFyY2h5LCBidXQganVzdCBoYXZlIGEgd3JpdGUgbWV0aG9kCisgICAgICAgICAgICAgICAgICAgIGZpbGUgPSBpby5CdWZmZXJlZElPQmFzZSgpCisgICAgICAgICAgICAgICAgICAgIGZpbGUud3JpdGFibGUgPSBsYW1iZGE6IFRydWUKKyAgICAgICAgICAgICAgICAgICAgZmlsZS53cml0ZSA9IHdyaXRlCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgVGV4dElPV3JhcHBlciB1c2VzIHRoaXMgbWV0aG9kcyB0byBkZXRlcm1pbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgQk9NIChmb3IgVVRGLTE2LCBldGMpIHNob3VsZCBiZSBhZGRlZAorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5zZWVrYWJsZSA9IGZpbGVfb3JfZmlsZW5hbWUuc2Vla2FibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUudGVsbCA9IGZpbGVfb3JfZmlsZW5hbWUudGVsbAorICAgICAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgZmlsZSA9IGlvLlRleHRJT1dyYXBwZXIoZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9InhtbGNoYXJyZWZyZXBsYWNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lPSJcbiIpCisgICAgICAgICAgICAgICAgIyBLZWVwIHRoZSBvcmlnaW5hbCBmaWxlIG9wZW4gd2hlbiB0aGUgVGV4dElPV3JhcHBlciBpcworICAgICAgICAgICAgICAgICMgZGVzdHJveWVkCisgICAgICAgICAgICAgICAgc3RhY2suY2FsbGJhY2soZmlsZS5kZXRhY2gpCisgICAgICAgICAgICAgICAgeWllbGQgZmlsZS53cml0ZQorCiBkZWYgX25hbWVzcGFjZXMoZWxlbSwgZGVmYXVsdF9uYW1lc3BhY2U9Tm9uZSk6CiAgICAgIyBpZGVudGlmeSBuYW1lc3BhY2VzIHVzZWQgaW4gdGhpcyB0cmVlCiAKQEAgLTkwNywxMSArOTI1LDcgQEAKICAgICAgICAgICAgIF9yYWlzZV9zZXJpYWxpemF0aW9uX2Vycm9yKHFuYW1lKQogCiAgICAgIyBwb3B1bGF0ZSBxbmFtZSBhbmQgbmFtZXNwYWNlcyB0YWJsZQotICAgIHRyeToKLSAgICAgICAgaXRlcmF0ZSA9IGVsZW0uaXRlcgotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgaXRlcmF0ZSA9IGVsZW0uZ2V0aXRlcmF0b3IgIyBjRVQgY29tcGF0aWJpbGl0eQotICAgIGZvciBlbGVtIGluIGl0ZXJhdGUoKToKKyAgICBmb3IgZWxlbSBpbiBlbGVtLml0ZXIoKToKICAgICAgICAgdGFnID0gZWxlbS50YWcKICAgICAgICAgaWYgaXNpbnN0YW5jZSh0YWcsIFFOYW1lKToKICAgICAgICAgICAgIGlmIHRhZy50ZXh0IG5vdCBpbiBxbmFtZXM6CkBAIC0xMDgzLDYgKzEwOTcsOCBAQAogICAgICMgZHVibGluIGNvcmUKICAgICAiaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iOiAiZGMiLAogfQorIyBGb3IgdGVzdHMgYW5kIHRyb3VibGVzaG9vdGluZworcmVnaXN0ZXJfbmFtZXNwYWNlLl9uYW1lc3BhY2VfbWFwID0gX25hbWVzcGFjZV9tYXAKIAogZGVmIF9yYWlzZV9zZXJpYWxpemF0aW9uX2Vycm9yKHRleHQpOgogICAgIHJhaXNlIFR5cGVFcnJvcigKQEAgLTExNTEsMjIgKzExNjcsMTMgQEAKICMgQGRlZnJldHVybiBzdHJpbmcKIAogZGVmIHRvc3RyaW5nKGVsZW1lbnQsIGVuY29kaW5nPU5vbmUsIG1ldGhvZD1Ob25lKToKLSAgICBjbGFzcyBkdW1teToKLSAgICAgICAgcGFzcwotICAgIGRhdGEgPSBbXQotICAgIGZpbGUgPSBkdW1teSgpCi0gICAgZmlsZS53cml0ZSA9IGRhdGEuYXBwZW5kCi0gICAgRWxlbWVudFRyZWUoZWxlbWVudCkud3JpdGUoZmlsZSwgZW5jb2RpbmcsIG1ldGhvZD1tZXRob2QpCi0gICAgaWYgZW5jb2RpbmcgaW4gKHN0ciwgInVuaWNvZGUiKToKLSAgICAgICAgcmV0dXJuICIiLmpvaW4oZGF0YSkKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gYiIiLmpvaW4oZGF0YSkKKyAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygpIGlmIGVuY29kaW5nID09ICd1bmljb2RlJyBlbHNlIGlvLkJ5dGVzSU8oKQorICAgIEVsZW1lbnRUcmVlKGVsZW1lbnQpLndyaXRlKHN0cmVhbSwgZW5jb2RpbmcsIG1ldGhvZD1tZXRob2QpCisgICAgcmV0dXJuIHN0cmVhbS5nZXR2YWx1ZSgpCiAKICMjCiAjIEdlbmVyYXRlcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBYTUwgZWxlbWVudCwgaW5jbHVkaW5nIGFsbAotIyBzdWJlbGVtZW50cy4gIElmIGVuY29kaW5nIGlzIEZhbHNlLCB0aGUgc3RyaW5nIGlzIHJldHVybmVkIGFzIGEKLSMgc2VxdWVuY2Ugb2Ygc3RyaW5nIGZyYWdtZW50czsgb3RoZXJ3aXNlIGl0IGlzIGEgc2VxdWVuY2Ugb2YKLSMgYnl0ZXN0cmluZ3MuCisjIHN1YmVsZW1lbnRzLgogIwogIyBAcGFyYW0gZWxlbWVudCBBbiBFbGVtZW50IGluc3RhbmNlLgogIyBAa2V5cGFyYW0gZW5jb2RpbmcgT3B0aW9uYWwgb3V0cHV0IGVuY29kaW5nIChkZWZhdWx0IGlzIFVTLUFTQ0lJKS4KQEAgLTExNzcsMTUgKzExODQsMjkgQEAKICMgQGRlZnJldHVybiBzZXF1ZW5jZQogIyBAc2luY2UgMS4zCiAKK2NsYXNzIF9MaXN0RGF0YVN0cmVhbShpby5CdWZmZXJlZElPQmFzZSk6CisgICAgIiIiIEFuIGF1eGlsaWFyeSBzdHJlYW0gYWNjdW11bGF0aW5nIGludG8gYSBsaXN0IHJlZmVyZW5jZQorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsc3QpOgorICAgICAgICBzZWxmLmxzdCA9IGxzdAorCisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHNlZWthYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHdyaXRlKHNlbGYsIGIpOgorICAgICAgICBzZWxmLmxzdC5hcHBlbmQoYikKKworICAgIGRlZiB0ZWxsKHNlbGYpOgorICAgICAgICByZXR1cm4gbGVuKHNlbGYubHN0KQorCiBkZWYgdG9zdHJpbmdsaXN0KGVsZW1lbnQsIGVuY29kaW5nPU5vbmUsIG1ldGhvZD1Ob25lKToKLSAgICBjbGFzcyBkdW1teToKLSAgICAgICAgcGFzcwotICAgIGRhdGEgPSBbXQotICAgIGZpbGUgPSBkdW1teSgpCi0gICAgZmlsZS53cml0ZSA9IGRhdGEuYXBwZW5kCi0gICAgRWxlbWVudFRyZWUoZWxlbWVudCkud3JpdGUoZmlsZSwgZW5jb2RpbmcsIG1ldGhvZD1tZXRob2QpCi0gICAgIyBGSVhNRTogbWVyZ2Ugc21hbGwgZnJhZ21lbnRzIGludG8gbGFyZ2VyIHBhcnRzCi0gICAgcmV0dXJuIGRhdGEKKyAgICBsc3QgPSBbXQorICAgIHN0cmVhbSA9IF9MaXN0RGF0YVN0cmVhbShsc3QpCisgICAgRWxlbWVudFRyZWUoZWxlbWVudCkud3JpdGUoc3RyZWFtLCBlbmNvZGluZywgbWV0aG9kPW1ldGhvZCkKKyAgICByZXR1cm4gbHN0CiAKICMjCiAjIFdyaXRlcyBhbiBlbGVtZW50IHRyZWUgb3IgZWxlbWVudCBzdHJ1Y3R1cmUgdG8gc3lzLnN0ZG91dC4gIFRoaXMKQEAgLTE1MDcsMjQgKzE1MjgsMzAgQEAKICAgICAgICAgc2VsZi50YXJnZXQgPSBzZWxmLl90YXJnZXQgPSB0YXJnZXQKICAgICAgICAgc2VsZi5fZXJyb3IgPSBleHBhdC5lcnJvcgogICAgICAgICBzZWxmLl9uYW1lcyA9IHt9ICMgbmFtZSBtZW1vIGNhY2hlCi0gICAgICAgICMgY2FsbGJhY2tzCisgICAgICAgICMgbWFpbiBjYWxsYmFja3MKICAgICAgICAgcGFyc2VyLkRlZmF1bHRIYW5kbGVyRXhwYW5kID0gc2VsZi5fZGVmYXVsdAotICAgICAgICBwYXJzZXIuU3RhcnRFbGVtZW50SGFuZGxlciA9IHNlbGYuX3N0YXJ0Ci0gICAgICAgIHBhcnNlci5FbmRFbGVtZW50SGFuZGxlciA9IHNlbGYuX2VuZAotICAgICAgICBwYXJzZXIuQ2hhcmFjdGVyRGF0YUhhbmRsZXIgPSBzZWxmLl9kYXRhCi0gICAgICAgICMgb3B0aW9uYWwgY2FsbGJhY2tzCi0gICAgICAgIHBhcnNlci5Db21tZW50SGFuZGxlciA9IHNlbGYuX2NvbW1lbnQKLSAgICAgICAgcGFyc2VyLlByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIgPSBzZWxmLl9waQorICAgICAgICBpZiBoYXNhdHRyKHRhcmdldCwgJ3N0YXJ0Jyk6CisgICAgICAgICAgICBwYXJzZXIuU3RhcnRFbGVtZW50SGFuZGxlciA9IHNlbGYuX3N0YXJ0CisgICAgICAgIGlmIGhhc2F0dHIodGFyZ2V0LCAnZW5kJyk6CisgICAgICAgICAgICBwYXJzZXIuRW5kRWxlbWVudEhhbmRsZXIgPSBzZWxmLl9lbmQKKyAgICAgICAgaWYgaGFzYXR0cih0YXJnZXQsICdkYXRhJyk6CisgICAgICAgICAgICBwYXJzZXIuQ2hhcmFjdGVyRGF0YUhhbmRsZXIgPSB0YXJnZXQuZGF0YQorICAgICAgICAjIG1pc2NlbGxhbmVvdXMgY2FsbGJhY2tzCisgICAgICAgIGlmIGhhc2F0dHIodGFyZ2V0LCAnY29tbWVudCcpOgorICAgICAgICAgICAgcGFyc2VyLkNvbW1lbnRIYW5kbGVyID0gdGFyZ2V0LmNvbW1lbnQKKyAgICAgICAgaWYgaGFzYXR0cih0YXJnZXQsICdwaScpOgorICAgICAgICAgICAgcGFyc2VyLlByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIgPSB0YXJnZXQucGkKICAgICAgICAgIyBsZXQgZXhwYXQgZG8gdGhlIGJ1ZmZlcmluZywgaWYgc3VwcG9ydGVkCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3BhcnNlci5idWZmZXJfdGV4dCA9IDEKKyAgICAgICAgICAgIHBhcnNlci5idWZmZXJfdGV4dCA9IDEKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgcGFzcwogICAgICAgICAjIHVzZSBuZXctc3R5bGUgYXR0cmlidXRlIGhhbmRsaW5nLCBpZiBzdXBwb3J0ZWQKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fcGFyc2VyLm9yZGVyZWRfYXR0cmlidXRlcyA9IDEKLSAgICAgICAgICAgIHNlbGYuX3BhcnNlci5zcGVjaWZpZWRfYXR0cmlidXRlcyA9IDEKLSAgICAgICAgICAgIHBhcnNlci5TdGFydEVsZW1lbnRIYW5kbGVyID0gc2VsZi5fc3RhcnRfbGlzdAorICAgICAgICAgICAgcGFyc2VyLm9yZGVyZWRfYXR0cmlidXRlcyA9IDEKKyAgICAgICAgICAgIHBhcnNlci5zcGVjaWZpZWRfYXR0cmlidXRlcyA9IDEKKyAgICAgICAgICAgIGlmIGhhc2F0dHIodGFyZ2V0LCAnc3RhcnQnKToKKyAgICAgICAgICAgICAgICBwYXJzZXIuU3RhcnRFbGVtZW50SGFuZGxlciA9IHNlbGYuX3N0YXJ0X2xpc3QKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLl9kb2N0eXBlID0gTm9uZQpAQCAtMTU2OCw0NCArMTU5NSwyOSBAQAogICAgICAgICAgICAgICAgIGF0dHJpYltmaXhuYW1lKGF0dHJpYl9pbltpXSldID0gYXR0cmliX2luW2krMV0KICAgICAgICAgcmV0dXJuIHNlbGYudGFyZ2V0LnN0YXJ0KHRhZywgYXR0cmliKQogCi0gICAgZGVmIF9kYXRhKHNlbGYsIHRleHQpOgotICAgICAgICByZXR1cm4gc2VsZi50YXJnZXQuZGF0YSh0ZXh0KQotCiAgICAgZGVmIF9lbmQoc2VsZiwgdGFnKToKICAgICAgICAgcmV0dXJuIHNlbGYudGFyZ2V0LmVuZChzZWxmLl9maXhuYW1lKHRhZykpCiAKLSAgICBkZWYgX2NvbW1lbnQoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvbW1lbnQgPSBzZWxmLnRhcmdldC5jb21tZW50Ci0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBjb21tZW50KGRhdGEpCi0KLSAgICBkZWYgX3BpKHNlbGYsIHRhcmdldCwgZGF0YSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHBpID0gc2VsZi50YXJnZXQucGkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHBpKHRhcmdldCwgZGF0YSkKLQogICAgIGRlZiBfZGVmYXVsdChzZWxmLCB0ZXh0KToKICAgICAgICAgcHJlZml4ID0gdGV4dFs6MV0KICAgICAgICAgaWYgcHJlZml4ID09ICImIjoKICAgICAgICAgICAgICMgZGVhbCB3aXRoIHVuZGVmaW5lZCBlbnRpdGllcwogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYudGFyZ2V0LmRhdGEoc2VsZi5lbnRpdHlbdGV4dFsxOi0xXV0pCisgICAgICAgICAgICAgICAgZGF0YV9oYW5kbGVyID0gc2VsZi50YXJnZXQuZGF0YQorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRhdGFfaGFuZGxlcihzZWxmLmVudGl0eVt0ZXh0WzE6LTFdXSkKICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICBmcm9tIHhtbC5wYXJzZXJzIGltcG9ydCBleHBhdAogICAgICAgICAgICAgICAgIGVyciA9IGV4cGF0LmVycm9yKAogICAgICAgICAgICAgICAgICAgICAidW5kZWZpbmVkIGVudGl0eSAlczogbGluZSAlZCwgY29sdW1uICVkIiAlCi0gICAgICAgICAgICAgICAgICAgICh0ZXh0LCBzZWxmLl9wYXJzZXIuRXJyb3JMaW5lTnVtYmVyLAotICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZXIuRXJyb3JDb2x1bW5OdW1iZXIpCisgICAgICAgICAgICAgICAgICAgICh0ZXh0LCBzZWxmLnBhcnNlci5FcnJvckxpbmVOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgIHNlbGYucGFyc2VyLkVycm9yQ29sdW1uTnVtYmVyKQogICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgZXJyLmNvZGUgPSAxMSAjIFhNTF9FUlJPUl9VTkRFRklORURfRU5USVRZCi0gICAgICAgICAgICAgICAgZXJyLmxpbmVubyA9IHNlbGYuX3BhcnNlci5FcnJvckxpbmVOdW1iZXIKLSAgICAgICAgICAgICAgICBlcnIub2Zmc2V0ID0gc2VsZi5fcGFyc2VyLkVycm9yQ29sdW1uTnVtYmVyCisgICAgICAgICAgICAgICAgZXJyLmxpbmVubyA9IHNlbGYucGFyc2VyLkVycm9yTGluZU51bWJlcgorICAgICAgICAgICAgICAgIGVyci5vZmZzZXQgPSBzZWxmLnBhcnNlci5FcnJvckNvbHVtbk51bWJlcgogICAgICAgICAgICAgICAgIHJhaXNlIGVycgogICAgICAgICBlbGlmIHByZWZpeCA9PSAiPCIgYW5kIHRleHRbOjldID09ICI8IURPQ1RZUEUiOgogICAgICAgICAgICAgc2VsZi5fZG9jdHlwZSA9IFtdICMgaW5zaWRlIGEgZG9jdHlwZSBkZWNsYXJhdGlvbgpAQCAtMTYyMywxNiArMTYzNSwxNiBAQAogICAgICAgICAgICAgICAgIHR5cGUgPSBzZWxmLl9kb2N0eXBlWzFdCiAgICAgICAgICAgICAgICAgaWYgdHlwZSA9PSAiUFVCTElDIiBhbmQgbiA9PSA0OgogICAgICAgICAgICAgICAgICAgICBuYW1lLCB0eXBlLCBwdWJpZCwgc3lzdGVtID0gc2VsZi5fZG9jdHlwZQorICAgICAgICAgICAgICAgICAgICBpZiBwdWJpZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1YmlkID0gcHViaWRbMTotMV0KICAgICAgICAgICAgICAgICBlbGlmIHR5cGUgPT0gIlNZU1RFTSIgYW5kIG4gPT0gMzoKICAgICAgICAgICAgICAgICAgICAgbmFtZSwgdHlwZSwgc3lzdGVtID0gc2VsZi5fZG9jdHlwZQogICAgICAgICAgICAgICAgICAgICBwdWJpZCA9IE5vbmUKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBpZiBwdWJpZDoKLSAgICAgICAgICAgICAgICAgICAgcHViaWQgPSBwdWJpZFsxOi0xXQogICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZi50YXJnZXQsICJkb2N0eXBlIik6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYudGFyZ2V0LmRvY3R5cGUobmFtZSwgcHViaWQsIHN5c3RlbVsxOi0xXSkKLSAgICAgICAgICAgICAgICBlbGlmIHNlbGYuZG9jdHlwZSBpcyBub3Qgc2VsZi5fWE1MUGFyc2VyX19kb2N0eXBlOgorICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5kb2N0eXBlICE9IHNlbGYuX1hNTFBhcnNlcl9fZG9jdHlwZToKICAgICAgICAgICAgICAgICAgICAgIyB3YXJuIGFib3V0IGRlcHJlY2F0ZWQgY2FsbAogICAgICAgICAgICAgICAgICAgICBzZWxmLl9YTUxQYXJzZXJfX2RvY3R5cGUobmFtZSwgcHViaWQsIHN5c3RlbVsxOi0xXSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5kb2N0eXBlKG5hbWUsIHB1YmlkLCBzeXN0ZW1bMTotMV0pCkBAIC0xNjYzLDcgKzE2NzUsNyBAQAogCiAgICAgZGVmIGZlZWQoc2VsZiwgZGF0YSk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3BhcnNlci5QYXJzZShkYXRhLCAwKQorICAgICAgICAgICAgc2VsZi5wYXJzZXIuUGFyc2UoZGF0YSwgMCkKICAgICAgICAgZXhjZXB0IHNlbGYuX2Vycm9yIGFzIHY6CiAgICAgICAgICAgICBzZWxmLl9yYWlzZWVycm9yKHYpCiAKQEAgLTE2NzUsMTIgKzE2ODcsMTEzIEBACiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3BhcnNlci5QYXJzZSgiIiwgMSkgIyBlbmQgb2YgZGF0YQorICAgICAgICAgICAgc2VsZi5wYXJzZXIuUGFyc2UoIiIsIDEpICMgZW5kIG9mIGRhdGEKICAgICAgICAgZXhjZXB0IHNlbGYuX2Vycm9yIGFzIHY6CiAgICAgICAgICAgICBzZWxmLl9yYWlzZWVycm9yKHYpCi0gICAgICAgIHRyZWUgPSBzZWxmLnRhcmdldC5jbG9zZSgpCi0gICAgICAgIGRlbCBzZWxmLnRhcmdldCwgc2VsZi5fcGFyc2VyICMgZ2V0IHJpZCBvZiBjaXJjdWxhciByZWZlcmVuY2VzCi0gICAgICAgIHJldHVybiB0cmVlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNsb3NlX2hhbmRsZXIgPSBzZWxmLnRhcmdldC5jbG9zZQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gY2xvc2VfaGFuZGxlcigpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAjIGdldCByaWQgb2YgY2lyY3VsYXIgcmVmZXJlbmNlcworICAgICAgICAgICAgZGVsIHNlbGYucGFyc2VyLCBzZWxmLl9wYXJzZXIKKyAgICAgICAgICAgIGRlbCBzZWxmLnRhcmdldCwgc2VsZi5fdGFyZ2V0CisKKworIyBJbXBvcnQgdGhlIEMgYWNjZWxlcmF0b3JzCit0cnk6CisgICAgIyBFbGVtZW50LCBTdWJFbGVtZW50LCBQYXJzZUVycm9yLCBUcmVlQnVpbGRlciwgWE1MUGFyc2VyCisgICAgZnJvbSBfZWxlbWVudHRyZWUgaW1wb3J0ICoKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCitlbHNlOgorICAgICMgT3ZlcndyaXRlICdFbGVtZW50VHJlZS5wYXJzZScgYW5kICdpdGVycGFyc2UnIHRvIHVzZSB0aGUgQyBYTUxQYXJzZXIKKworICAgIGNsYXNzIEVsZW1lbnRUcmVlKEVsZW1lbnRUcmVlKToKKyAgICAgICAgZGVmIHBhcnNlKHNlbGYsIHNvdXJjZSwgcGFyc2VyPU5vbmUpOgorICAgICAgICAgICAgY2xvc2Vfc291cmNlID0gRmFsc2UKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNvdXJjZSwgJ3JlYWQnKToKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSBvcGVuKHNvdXJjZSwgJ3JiJykKKyAgICAgICAgICAgICAgICBjbG9zZV9zb3VyY2UgPSBUcnVlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgcGFyc2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNvdXJjZS5yZWFkKDY1NTM2KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci5mZWVkKGRhdGEpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jvb3QgPSBwYXJzZXIuY2xvc2UoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHBhcnNlciA9IFhNTFBhcnNlcigpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jvb3QgPSBwYXJzZXIuX3BhcnNlKHNvdXJjZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcm9vdAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBpZiBjbG9zZV9zb3VyY2U6CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5jbG9zZSgpCisKKyAgICBjbGFzcyBpdGVycGFyc2U6CisgICAgICAgICIiIlBhcnNlcyBhbiBYTUwgc2VjdGlvbiBpbnRvIGFuIGVsZW1lbnQgdHJlZSBpbmNyZW1lbnRhbGx5LgorCisgICAgICAgIFJlcG9ydHMgd2hhdOKAmXMgZ29pbmcgb24gdG8gdGhlIHVzZXIuICdzb3VyY2UnIGlzIGEgZmlsZW5hbWUgb3IgZmlsZQorICAgICAgICBvYmplY3QgY29udGFpbmluZyBYTUwgZGF0YS4gJ2V2ZW50cycgaXMgYSBsaXN0IG9mIGV2ZW50cyB0byByZXBvcnQgYmFjay4KKyAgICAgICAgVGhlIHN1cHBvcnRlZCBldmVudHMgYXJlIHRoZSBzdHJpbmdzICJzdGFydCIsICJlbmQiLCAic3RhcnQtbnMiIGFuZAorICAgICAgICAiZW5kLW5zIiAodGhlICJucyIgZXZlbnRzIGFyZSB1c2VkIHRvIGdldCBkZXRhaWxlZCBuYW1lc3BhY2UKKyAgICAgICAgaW5mb3JtYXRpb24pLiBJZiAnZXZlbnRzJyBpcyBvbWl0dGVkLCBvbmx5ICJlbmQiIGV2ZW50cyBhcmUgcmVwb3J0ZWQuCisgICAgICAgICdwYXJzZXInIGlzIGFuIG9wdGlvbmFsIHBhcnNlciBpbnN0YW5jZS4gSWYgbm90IGdpdmVuLCB0aGUgc3RhbmRhcmQKKyAgICAgICAgWE1MUGFyc2VyIHBhcnNlciBpcyB1c2VkLiBSZXR1cm5zIGFuIGl0ZXJhdG9yIHByb3ZpZGluZworICAgICAgICAoZXZlbnQsIGVsZW0pIHBhaXJzLgorICAgICAgICAiIiIKKworICAgICAgICByb290ID0gTm9uZQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgZXZlbnRzPU5vbmUsIHBhcnNlcj1Ob25lKToKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2ZpbGUgPSBGYWxzZQorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoZmlsZSwgJ3JlYWQnKToKKyAgICAgICAgICAgICAgICBmaWxlID0gb3BlbihmaWxlLCAncmInKQorICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2ZpbGUgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9maWxlID0gZmlsZQorICAgICAgICAgICAgc2VsZi5fZXZlbnRzID0gW10KKyAgICAgICAgICAgIHNlbGYuX2luZGV4ID0gMAorICAgICAgICAgICAgc2VsZi5fZXJyb3IgPSBOb25lCisgICAgICAgICAgICBzZWxmLnJvb3QgPSBzZWxmLl9yb290ID0gTm9uZQorICAgICAgICAgICAgaWYgcGFyc2VyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcGFyc2VyID0gWE1MUGFyc2VyKHRhcmdldD1UcmVlQnVpbGRlcigpKQorICAgICAgICAgICAgc2VsZi5fcGFyc2VyID0gcGFyc2VyCisgICAgICAgICAgICBzZWxmLl9wYXJzZXIuX3NldGV2ZW50cyhzZWxmLl9ldmVudHMsIGV2ZW50cykKKworICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHNlbGYuX2V2ZW50c1tzZWxmLl9pbmRleF0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5kZXggKz0gMQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbQorICAgICAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGUgPSBzZWxmLl9lcnJvcgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJvciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgZQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3BhcnNlciBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnJvb3QgPSBzZWxmLl9yb290CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2Nsb3NlX2ZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlLmNsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorICAgICAgICAgICAgICAgICMgbG9hZCBldmVudCBidWZmZXIKKyAgICAgICAgICAgICAgICBkZWwgc2VsZi5fZXZlbnRzWzpdCisgICAgICAgICAgICAgICAgc2VsZi5faW5kZXggPSAwCisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2ZpbGUucmVhZCgxNjM4NCkKKyAgICAgICAgICAgICAgICBpZiBkYXRhOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZXIuZmVlZChkYXRhKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJyb3IgPSBleGMKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yb290ID0gc2VsZi5fcGFyc2VyLmNsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2VyID0gTm9uZQorCisgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmCiAKICMgY29tcGF0aWJpbGl0eQogWE1MVHJlZUJ1aWxkZXIgPSBYTUxQYXJzZXIKZGlmZiAtLWdpdCBhL0xpYi94bWwvZXRyZWUvY0VsZW1lbnRUcmVlLnB5IGIvTGliL3htbC9ldHJlZS9jRWxlbWVudFRyZWUucHkKaW5kZXggYTZmMTI3YS4uMzY4ZTY3OSAxMDA2NDQKLS0tIGEvTGliL3htbC9ldHJlZS9jRWxlbWVudFRyZWUucHkKKysrIGIvTGliL3htbC9ldHJlZS9jRWxlbWVudFRyZWUucHkKQEAgLTEsMyArMSwzIEBACi0jIFdyYXBwZXIgbW9kdWxlIGZvciBfZWxlbWVudHRyZWUKKyMgRGVwcmVjYXRlZCBhbGlhcyBmb3IgeG1sLmV0cmVlLkVsZW1lbnRUcmVlCiAKLWZyb20gX2VsZW1lbnR0cmVlIGltcG9ydCAqCitmcm9tIHhtbC5ldHJlZS5FbGVtZW50VHJlZSBpbXBvcnQgKgpkaWZmIC0tZ2l0IGEvTGliL3htbC9wYXJzZXJzL2V4cGF0LnB5IGIvTGliL3htbC9wYXJzZXJzL2V4cGF0LnB5CmluZGV4IGE4MDViODIuLmJjYmU5ZmIgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvcGFyc2Vycy9leHBhdC5weQorKysgYi9MaWIveG1sL3BhcnNlcnMvZXhwYXQucHkKQEAgLTEsNiArMSw0IEBACiAiIiJJbnRlcmZhY2UgdG8gdGhlIEV4cGF0IG5vbi12YWxpZGF0aW5nIFhNTCBwYXJzZXIuIiIiCi1fX3ZlcnNpb25fXyA9ICckUmV2aXNpb24kJwotCiBpbXBvcnQgc3lzCiAKIGZyb20gcHlleHBhdCBpbXBvcnQgKgpkaWZmIC0tZ2l0IGEvTGliL3htbHJwYy9jbGllbnQucHkgYi9MaWIveG1scnBjL2NsaWVudC5weQppbmRleCBlYzhkOGU5Li5kN2IyZGIzIDEwMDY0NAotLS0gYS9MaWIveG1scnBjL2NsaWVudC5weQorKysgYi9MaWIveG1scnBjL2NsaWVudC5weQpAQCAtMTI4LDggKzEyOCwxMSBAQAogIiIiCiAKIGltcG9ydCBiYXNlNjQKK2ltcG9ydCBzeXMKIGltcG9ydCB0aW1lCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQogaW1wb3J0IGh0dHAuY2xpZW50CitpbXBvcnQgdXJsbGliLnBhcnNlCiBmcm9tIHhtbC5wYXJzZXJzIGltcG9ydCBleHBhdAogaW1wb3J0IHNvY2tldAogaW1wb3J0IGVycm5vCkBAIC0xNDIsMTcgKzE0NSwxMyBAQAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBJbnRlcm5hbCBzdHVmZgogCi10cnk6Ci0gICAgaW1wb3J0IGRhdGV0aW1lCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZGF0ZXRpbWUgPSBOb25lCi0KIGRlZiBlc2NhcGUocyk6CiAgICAgcyA9IHMucmVwbGFjZSgiJiIsICImYW1wOyIpCiAgICAgcyA9IHMucmVwbGFjZSgiPCIsICImbHQ7IikKICAgICByZXR1cm4gcy5yZXBsYWNlKCI+IiwgIiZndDsiLCkKIAotX192ZXJzaW9uX18gPSAiMS4wLjEiCisjIHVzZWQgaW4gVXNlci1BZ2VudCBoZWFkZXIgc2VudAorX192ZXJzaW9uX18gPSBzeXMudmVyc2lvbls6M10KIAogIyB4bWxycGMgaW50ZWdlciBsaW1pdHMKIE1BWElOVCA9ICAyKiozMS0xCkBAIC0yNTIsMjEgKzI1MSwzMyBAQAogIyBXcmFwcGVyIGZvciBYTUwtUlBDIERhdGVUaW1lIHZhbHVlcy4gIFRoaXMgY29udmVydHMgYSB0aW1lIHZhbHVlIHRvCiAjIHRoZSBmb3JtYXQgdXNlZCBieSBYTUwtUlBDLgogIyA8cD4KLSMgVGhlIHZhbHVlIGNhbiBiZSBnaXZlbiBhcyBhIHN0cmluZyBpbiB0aGUgZm9ybWF0Ci0jICJ5eXl5bW1kZFRoaDptbTpzcyIsIGFzIGEgOS1pdGVtIHRpbWUgdHVwbGUgKGFzIHJldHVybmVkIGJ5CisjIFRoZSB2YWx1ZSBjYW4gYmUgZ2l2ZW4gYXMgYSBkYXRldGltZSBvYmplY3QsIGFzIGEgc3RyaW5nIGluIHRoZQorIyBmb3JtYXQgInl5eXltbWRkVGhoOm1tOnNzIiwgYXMgYSA5LWl0ZW0gdGltZSB0dXBsZSAoYXMgcmV0dXJuZWQgYnkKICMgdGltZS5sb2NhbHRpbWUoKSksIG9yIGFuIGludGVnZXIgdmFsdWUgKGFzIHJldHVybmVkIGJ5IHRpbWUudGltZSgpKS4KICMgVGhlIHdyYXBwZXIgdXNlcyB0aW1lLmxvY2FsdGltZSgpIHRvIGNvbnZlcnQgYW4gaW50ZWdlciB0byBhIHRpbWUKICMgdHVwbGUuCiAjCi0jIEBwYXJhbSB2YWx1ZSBUaGUgdGltZSwgZ2l2ZW4gYXMgYW4gSVNPIDg2MDEgc3RyaW5nLCBhIHRpbWUKLSMgICAgICAgICAgICAgIHR1cGxlLCBvciBhIGludGVnZXIgdGltZSB2YWx1ZS4KKyMgQHBhcmFtIHZhbHVlIFRoZSB0aW1lLCBnaXZlbiBhcyBhIGRhdGV0aW1lIG9iamVjdCwgYW4gSVNPIDg2MDEgc3RyaW5nLAorIyAgICAgICAgICAgICAgYSB0aW1lIHR1cGxlLCBvciBhbiBpbnRlZ2VyIHRpbWUgdmFsdWUuCisKKworIyBJc3N1ZSAjMTMzMDU6IGRpZmZlcmVudCBmb3JtYXQgY29kZXMgYWNyb3NzIHBsYXRmb3JtcworX2RheTAgPSBkYXRldGltZSgxLCAxLCAxKQoraWYgX2RheTAuc3RyZnRpbWUoJyVZJykgPT0gJzAwMDEnOiAgICAgICMgTWFjIE9TIFgKKyAgICBkZWYgX2lzbzg2MDFfZm9ybWF0KHZhbHVlKToKKyAgICAgICAgcmV0dXJuIHZhbHVlLnN0cmZ0aW1lKCIlWSVtJWRUJUg6JU06JVMiKQorZWxpZiBfZGF5MC5zdHJmdGltZSgnJTRZJykgPT0gJzAwMDEnOiAgICMgTGludXgKKyAgICBkZWYgX2lzbzg2MDFfZm9ybWF0KHZhbHVlKToKKyAgICAgICAgcmV0dXJuIHZhbHVlLnN0cmZ0aW1lKCIlNFklbSVkVCVIOiVNOiVTIikKK2Vsc2U6CisgICAgZGVmIF9pc284NjAxX2Zvcm1hdCh2YWx1ZSk6CisgICAgICAgIHJldHVybiB2YWx1ZS5zdHJmdGltZSgiJVklbSVkVCVIOiVNOiVTIikuemZpbGwoMTcpCitkZWwgX2RheTAKKwogCiBkZWYgX3N0cmZ0aW1lKHZhbHVlKToKLSAgICBpZiBkYXRldGltZToKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZGF0ZXRpbWUuZGF0ZXRpbWUpOgotICAgICAgICAgICAgcmV0dXJuICIlMDRkJTAyZCUwMmRUJTAyZDolMDJkOiUwMmQiICUgKAotICAgICAgICAgICAgICAgIHZhbHVlLnllYXIsIHZhbHVlLm1vbnRoLCB2YWx1ZS5kYXksCi0gICAgICAgICAgICAgICAgdmFsdWUuaG91ciwgdmFsdWUubWludXRlLCB2YWx1ZS5zZWNvbmQpCisgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZGF0ZXRpbWUpOgorICAgICAgICByZXR1cm4gX2lzbzg2MDFfZm9ybWF0KHZhbHVlKQogCiAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsICh0dXBsZSwgdGltZS5zdHJ1Y3RfdGltZSkpOgogICAgICAgICBpZiB2YWx1ZSA9PSAwOgpAQCAtMjkxLDkgKzMwMiw5IEBACiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIERhdGVUaW1lKToKICAgICAgICAgICAgIHMgPSBzZWxmLnZhbHVlCiAgICAgICAgICAgICBvID0gb3RoZXIudmFsdWUKLSAgICAgICAgZWxpZiBkYXRldGltZSBhbmQgaXNpbnN0YW5jZShvdGhlciwgZGF0ZXRpbWUuZGF0ZXRpbWUpOgorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uob3RoZXIsIGRhdGV0aW1lKToKICAgICAgICAgICAgIHMgPSBzZWxmLnZhbHVlCi0gICAgICAgICAgICBvID0gb3RoZXIuc3RyZnRpbWUoIiVZJW0lZFQlSDolTTolUyIpCisgICAgICAgICAgICBvID0gX2lzbzg2MDFfZm9ybWF0KG90aGVyKQogICAgICAgICBlbGlmIGlzaW5zdGFuY2Uob3RoZXIsIHN0cik6CiAgICAgICAgICAgICBzID0gc2VsZi52YWx1ZQogICAgICAgICAgICAgbyA9IG90aGVyCkBAIC0zNjEsOCArMzcyLDcgQEAKICAgICByZXR1cm4gdmFsdWUKIAogZGVmIF9kYXRldGltZV90eXBlKGRhdGEpOgotICAgIHQgPSB0aW1lLnN0cnB0aW1lKGRhdGEsICIlWSVtJWRUJUg6JU06JVMiKQotICAgIHJldHVybiBkYXRldGltZS5kYXRldGltZSgqdHVwbGUodClbOjZdKQorICAgIHJldHVybiBkYXRldGltZS5zdHJwdGltZShkYXRhLCAiJVklbSVkVCVIOiVNOiVTIikKIAogIyMKICMgV3JhcHBlciBmb3IgYmluYXJ5IGRhdGEuICBUaGlzIGNhbiBiZSB1c2VkIHRvIHRyYW5zcG9ydCBhbnkga2luZApAQCAtMzc3LDggKzM4Nyw4IEBACiAgICAgICAgIGlmIGRhdGEgaXMgTm9uZToKICAgICAgICAgICAgIGRhdGEgPSBiIiIKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGEsIGJ5dGVzKToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzLCBub3QgJXMiICUKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGEsIChieXRlcywgYnl0ZWFycmF5KSk6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcyBvciBieXRlYXJyYXksIG5vdCAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLl9fY2xhc3NfXy5fX25hbWVfXykKICAgICAgICAgICAgIGRhdGEgPSBieXRlcyhkYXRhKSAgIyBNYWtlIGEgY29weSBvZiB0aGUgYnl0ZXMhCiAgICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKQEAgLTQwOCw3ICs0MTgsNiBAQAogICAgICAgICBvdXQud3JpdGUoIjx2YWx1ZT48YmFzZTY0PlxuIikKICAgICAgICAgZW5jb2RlZCA9IGJhc2U2NC5lbmNvZGVieXRlcyhzZWxmLmRhdGEpCiAgICAgICAgIG91dC53cml0ZShlbmNvZGVkLmRlY29kZSgnYXNjaWknKSkKLSAgICAgICAgb3V0LndyaXRlKCdcbicpCiAgICAgICAgIG91dC53cml0ZSgiPC9iYXNlNjQ+PC92YWx1ZT5cbiIpCiAKIGRlZiBfYmluYXJ5KGRhdGEpOgpAQCAtNTIyLDE1ICs1MzEsNiBAQAogICAgICAgICB3cml0ZSgiPHZhbHVlPjxuaWwvPjwvdmFsdWU+IikKICAgICBkaXNwYXRjaFt0eXBlKE5vbmUpXSA9IGR1bXBfbmlsCiAKLSAgICBkZWYgZHVtcF9pbnQoc2VsZiwgdmFsdWUsIHdyaXRlKToKLSAgICAgICAgIyBpbiBjYXNlIGludHMgYXJlID4gMzIgYml0cwotICAgICAgICBpZiB2YWx1ZSA+IE1BWElOVCBvciB2YWx1ZSA8IE1JTklOVDoKLSAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoImludCBleGNlZWRzIFhNTC1SUEMgbGltaXRzIikKLSAgICAgICAgd3JpdGUoIjx2YWx1ZT48aW50PiIpCi0gICAgICAgIHdyaXRlKHN0cih2YWx1ZSkpCi0gICAgICAgIHdyaXRlKCI8L2ludD48L3ZhbHVlPlxuIikKLSAgICAjZGlzcGF0Y2hbaW50XSA9IGR1bXBfaW50Ci0KICAgICBkZWYgZHVtcF9ib29sKHNlbGYsIHZhbHVlLCB3cml0ZSk6CiAgICAgICAgIHdyaXRlKCI8dmFsdWU+PGJvb2xlYW4+IikKICAgICAgICAgd3JpdGUodmFsdWUgYW5kICIxIiBvciAiMCIpCkBAIC01NDUsNiArNTQ1LDkgQEAKICAgICAgICAgd3JpdGUoIjwvaW50PjwvdmFsdWU+XG4iKQogICAgIGRpc3BhdGNoW2ludF0gPSBkdW1wX2xvbmcKIAorICAgICMgYmFja3dhcmQgY29tcGF0aWJsZQorICAgIGR1bXBfaW50ID0gZHVtcF9sb25nCisKICAgICBkZWYgZHVtcF9kb3VibGUoc2VsZiwgdmFsdWUsIHdyaXRlKToKICAgICAgICAgd3JpdGUoIjx2YWx1ZT48ZG91YmxlPiIpCiAgICAgICAgIHdyaXRlKHJlcHIodmFsdWUpKQpAQCAtNTU3LDYgKzU2MCwxNCBAQAogICAgICAgICB3cml0ZSgiPC9zdHJpbmc+PC92YWx1ZT5cbiIpCiAgICAgZGlzcGF0Y2hbc3RyXSA9IGR1bXBfdW5pY29kZQogCisgICAgZGVmIGR1bXBfYnl0ZXMoc2VsZiwgdmFsdWUsIHdyaXRlKToKKyAgICAgICAgd3JpdGUoIjx2YWx1ZT48YmFzZTY0PlxuIikKKyAgICAgICAgZW5jb2RlZCA9IGJhc2U2NC5lbmNvZGVieXRlcyh2YWx1ZSkKKyAgICAgICAgd3JpdGUoZW5jb2RlZC5kZWNvZGUoJ2FzY2lpJykpCisgICAgICAgIHdyaXRlKCI8L2Jhc2U2ND48L3ZhbHVlPlxuIikKKyAgICBkaXNwYXRjaFtieXRlc10gPSBkdW1wX2J5dGVzCisgICAgZGlzcGF0Y2hbYnl0ZWFycmF5XSA9IGR1bXBfYnl0ZXMKKwogICAgIGRlZiBkdW1wX2FycmF5KHNlbGYsIHZhbHVlLCB3cml0ZSk6CiAgICAgICAgIGkgPSBpZCh2YWx1ZSkKICAgICAgICAgaWYgaSBpbiBzZWxmLm1lbW86CkBAIC01ODksMTIgKzYwMCwxMSBAQAogICAgICAgICBkZWwgc2VsZi5tZW1vW2ldCiAgICAgZGlzcGF0Y2hbZGljdF0gPSBkdW1wX3N0cnVjdAogCi0gICAgaWYgZGF0ZXRpbWU6Ci0gICAgICAgIGRlZiBkdW1wX2RhdGV0aW1lKHNlbGYsIHZhbHVlLCB3cml0ZSk6Ci0gICAgICAgICAgICB3cml0ZSgiPHZhbHVlPjxkYXRlVGltZS5pc284NjAxPiIpCi0gICAgICAgICAgICB3cml0ZShfc3RyZnRpbWUodmFsdWUpKQotICAgICAgICAgICAgd3JpdGUoIjwvZGF0ZVRpbWUuaXNvODYwMT48L3ZhbHVlPlxuIikKLSAgICAgICAgZGlzcGF0Y2hbZGF0ZXRpbWUuZGF0ZXRpbWVdID0gZHVtcF9kYXRldGltZQorICAgIGRlZiBkdW1wX2RhdGV0aW1lKHNlbGYsIHZhbHVlLCB3cml0ZSk6CisgICAgICAgIHdyaXRlKCI8dmFsdWU+PGRhdGVUaW1lLmlzbzg2MDE+IikKKyAgICAgICAgd3JpdGUoX3N0cmZ0aW1lKHZhbHVlKSkKKyAgICAgICAgd3JpdGUoIjwvZGF0ZVRpbWUuaXNvODYwMT48L3ZhbHVlPlxuIikKKyAgICBkaXNwYXRjaFtkYXRldGltZV0gPSBkdW1wX2RhdGV0aW1lCiAKICAgICBkZWYgZHVtcF9pbnN0YW5jZShzZWxmLCB2YWx1ZSwgd3JpdGUpOgogICAgICAgICAjIGNoZWNrIGZvciBzcGVjaWFsIHdyYXBwZXJzCkBAIC02MjgsNyArNjM4LDcgQEAKICAgICAjIGFuZCBhZ2FpbiwgaWYgeW91IGRvbid0IHVuZGVyc3RhbmQgd2hhdCdzIGdvaW5nIG9uIGluIGhlcmUsCiAgICAgIyB0aGF0J3MgcGVyZmVjdGx5IG9rLgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHVzZV9kYXRldGltZT1GYWxzZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVzZV9kYXRldGltZT1GYWxzZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogICAgICAgICBzZWxmLl90eXBlID0gTm9uZQogICAgICAgICBzZWxmLl9zdGFjayA9IFtdCiAgICAgICAgIHNlbGYuX21hcmtzID0gW10KQEAgLTYzNiw5ICs2NDYsOCBAQAogICAgICAgICBzZWxmLl9tZXRob2RuYW1lID0gTm9uZQogICAgICAgICBzZWxmLl9lbmNvZGluZyA9ICJ1dGYtOCIKICAgICAgICAgc2VsZi5hcHBlbmQgPSBzZWxmLl9zdGFjay5hcHBlbmQKLSAgICAgICAgc2VsZi5fdXNlX2RhdGV0aW1lID0gdXNlX2RhdGV0aW1lCi0gICAgICAgIGlmIHVzZV9kYXRldGltZSBhbmQgbm90IGRhdGV0aW1lOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidGhlIGRhdGV0aW1lIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlIikKKyAgICAgICAgc2VsZi5fdXNlX2RhdGV0aW1lID0gdXNlX2J1aWx0aW5fdHlwZXMgb3IgdXNlX2RhdGV0aW1lCisgICAgICAgIHNlbGYuX3VzZV9ieXRlcyA9IHVzZV9idWlsdGluX3R5cGVzCiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgICMgcmV0dXJuIHJlc3BvbnNlIHR1cGxlIGFuZCB0YXJnZXQgbWV0aG9kCkBAIC03NTAsNiArNzU5LDggQEAKICAgICBkZWYgZW5kX2Jhc2U2NChzZWxmLCBkYXRhKToKICAgICAgICAgdmFsdWUgPSBCaW5hcnkoKQogICAgICAgICB2YWx1ZS5kZWNvZGUoZGF0YS5lbmNvZGUoImFzY2lpIikpCisgICAgICAgIGlmIHNlbGYuX3VzZV9ieXRlczoKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuZGF0YQogICAgICAgICBzZWxmLmFwcGVuZCh2YWx1ZSkKICAgICAgICAgc2VsZi5fdmFsdWUgPSAwCiAgICAgZGlzcGF0Y2hbImJhc2U2NCJdID0gZW5kX2Jhc2U2NApAQCAtODYxLDIzICs4NzIsMjYgQEAKICMKICMgcmV0dXJuIEEgKHBhcnNlciwgdW5tYXJzaGFsbGVyKSB0dXBsZS4KIAotZGVmIGdldHBhcnNlcih1c2VfZGF0ZXRpbWU9RmFsc2UpOgorZGVmIGdldHBhcnNlcih1c2VfZGF0ZXRpbWU9RmFsc2UsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKICAgICAiIiJnZXRwYXJzZXIoKSAtPiBwYXJzZXIsIHVubWFyc2hhbGxlcgogCiAgICAgQ3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBmYXN0ZXN0IGF2YWlsYWJsZSBwYXJzZXIsIGFuZCBhdHRhY2ggaXQKICAgICB0byBhbiB1bm1hcnNoYWxsaW5nIG9iamVjdC4gIFJldHVybiBib3RoIG9iamVjdHMuCiAgICAgIiIiCi0gICAgaWYgdXNlX2RhdGV0aW1lIGFuZCBub3QgZGF0ZXRpbWU6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInRoZSBkYXRldGltZSBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSIpCiAgICAgaWYgRmFzdFBhcnNlciBhbmQgRmFzdFVubWFyc2hhbGxlcjoKLSAgICAgICAgaWYgdXNlX2RhdGV0aW1lOgorICAgICAgICBpZiB1c2VfYnVpbHRpbl90eXBlczoKICAgICAgICAgICAgIG1rZGF0ZXRpbWUgPSBfZGF0ZXRpbWVfdHlwZQorICAgICAgICAgICAgbWtieXRlcyA9IGJhc2U2NC5kZWNvZGVieXRlcworICAgICAgICBlbGlmIHVzZV9kYXRldGltZToKKyAgICAgICAgICAgIG1rZGF0ZXRpbWUgPSBfZGF0ZXRpbWVfdHlwZQorICAgICAgICAgICAgbWtieXRlcyA9IF9iaW5hcnkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1rZGF0ZXRpbWUgPSBfZGF0ZXRpbWUKLSAgICAgICAgdGFyZ2V0ID0gRmFzdFVubWFyc2hhbGxlcihUcnVlLCBGYWxzZSwgX2JpbmFyeSwgbWtkYXRldGltZSwgRmF1bHQpCisgICAgICAgICAgICBta2J5dGVzID0gX2JpbmFyeQorICAgICAgICB0YXJnZXQgPSBGYXN0VW5tYXJzaGFsbGVyKFRydWUsIEZhbHNlLCBta2J5dGVzLCBta2RhdGV0aW1lLCBGYXVsdCkKICAgICAgICAgcGFyc2VyID0gRmFzdFBhcnNlcih0YXJnZXQpCiAgICAgZWxzZToKLSAgICAgICAgdGFyZ2V0ID0gVW5tYXJzaGFsbGVyKHVzZV9kYXRldGltZT11c2VfZGF0ZXRpbWUpCisgICAgICAgIHRhcmdldCA9IFVubWFyc2hhbGxlcih1c2VfZGF0ZXRpbWU9dXNlX2RhdGV0aW1lLCB1c2VfYnVpbHRpbl90eXBlcz11c2VfYnVpbHRpbl90eXBlcykKICAgICAgICAgaWYgRmFzdFBhcnNlcjoKICAgICAgICAgICAgIHBhcnNlciA9IEZhc3RQYXJzZXIodGFyZ2V0KQogICAgICAgICBlbHNlOgpAQCAtOTE1LDcgKzkyOSw3IEBACiAKICAgICAgICAgZW5jb2Rpbmc6IHRoZSBwYWNrZXQgZW5jb2RpbmcgKGRlZmF1bHQgaXMgVVRGLTgpCiAKLSAgICBBbGwgOC1iaXQgc3RyaW5ncyBpbiB0aGUgZGF0YSBzdHJ1Y3R1cmUgYXJlIGFzc3VtZWQgdG8gdXNlIHRoZQorICAgIEFsbCBieXRlIHN0cmluZ3MgaW4gdGhlIGRhdGEgc3RydWN0dXJlIGFyZSBhc3N1bWVkIHRvIHVzZSB0aGUKICAgICBwYWNrZXQgZW5jb2RpbmcuICBVbmljb2RlIHN0cmluZ3MgYXJlIGF1dG9tYXRpY2FsbHkgY29udmVydGVkLAogICAgIHdoZXJlIG5lY2Vzc2FyeS4KICAgICAiIiIKQEAgLTk3NCw3ICs5ODgsNyBAQAogIyAgICAgKE5vbmUgaWYgbm90IHByZXNlbnQpLgogIyBAc2VlIEZhdWx0CiAKLWRlZiBsb2FkcyhkYXRhLCB1c2VfZGF0ZXRpbWU9RmFsc2UpOgorZGVmIGxvYWRzKGRhdGEsIHVzZV9kYXRldGltZT1GYWxzZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogICAgICIiImRhdGEgLT4gdW5tYXJzaGFsbGVkIGRhdGEsIG1ldGhvZCBuYW1lCiAKICAgICBDb252ZXJ0IGFuIFhNTC1SUEMgcGFja2V0IHRvIHVubWFyc2hhbGxlZCBkYXRhIHBsdXMgYSBtZXRob2QKQEAgLTk4Myw3ICs5OTcsNyBAQAogICAgIElmIHRoZSBYTUwtUlBDIHBhY2tldCByZXByZXNlbnRzIGEgZmF1bHQgY29uZGl0aW9uLCB0aGlzIGZ1bmN0aW9uCiAgICAgcmFpc2VzIGEgRmF1bHQgZXhjZXB0aW9uLgogICAgICIiIgotICAgIHAsIHUgPSBnZXRwYXJzZXIodXNlX2RhdGV0aW1lPXVzZV9kYXRldGltZSkKKyAgICBwLCB1ID0gZ2V0cGFyc2VyKHVzZV9kYXRldGltZT11c2VfZGF0ZXRpbWUsIHVzZV9idWlsdGluX3R5cGVzPXVzZV9idWlsdGluX3R5cGVzKQogICAgIHAuZmVlZChkYXRhKQogICAgIHAuY2xvc2UoKQogICAgIHJldHVybiB1LmNsb3NlKCksIHUuZ2V0bWV0aG9kbmFtZSgpCkBAIC0xMDg1LDcgKzEwOTksNyBAQAogICAgICIiIkhhbmRsZXMgYW4gSFRUUCB0cmFuc2FjdGlvbiB0byBhbiBYTUwtUlBDIHNlcnZlci4iIiIKIAogICAgICMgY2xpZW50IGlkZW50aWZpZXIgKG1heSBiZSBvdmVycmlkZGVuKQotICAgIHVzZXJfYWdlbnQgPSAieG1scnBjbGliLnB5LyVzIChieSB3d3cucHl0aG9ud2FyZS5jb20pIiAlIF9fdmVyc2lvbl9fCisgICAgdXNlcl9hZ2VudCA9ICJQeXRob24teG1scnBjLyVzIiAlIF9fdmVyc2lvbl9fCiAKICAgICAjaWYgdHJ1ZSwgd2UnbGwgcmVxdWVzdCBnemlwIGVuY29kaW5nCiAgICAgYWNjZXB0X2d6aXBfZW5jb2RpbmcgPSBUcnVlCkBAIC0xMDk1LDggKzExMDksOSBAQAogICAgICMgdGhhdCB0aGV5IGNhbiBkZWNvZGUgc3VjaCBhIHJlcXVlc3QKICAgICBlbmNvZGVfdGhyZXNob2xkID0gTm9uZSAjTm9uZSA9IGRvbid0IGVuY29kZQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHVzZV9kYXRldGltZT1GYWxzZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVzZV9kYXRldGltZT1GYWxzZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogICAgICAgICBzZWxmLl91c2VfZGF0ZXRpbWUgPSB1c2VfZGF0ZXRpbWUKKyAgICAgICAgc2VsZi5fdXNlX2J1aWx0aW5fdHlwZXMgPSB1c2VfYnVpbHRpbl90eXBlcwogICAgICAgICBzZWxmLl9jb25uZWN0aW9uID0gKE5vbmUsIE5vbmUpCiAgICAgICAgIHNlbGYuX2V4dHJhX2hlYWRlcnMgPSBbXQogCkBAIC0xMTU3LDcgKzExNzIsOCBAQAogCiAgICAgZGVmIGdldHBhcnNlcihzZWxmKToKICAgICAgICAgIyBnZXQgcGFyc2VyIGFuZCB1bm1hcnNoYWxsZXIKLSAgICAgICAgcmV0dXJuIGdldHBhcnNlcih1c2VfZGF0ZXRpbWU9c2VsZi5fdXNlX2RhdGV0aW1lKQorICAgICAgICByZXR1cm4gZ2V0cGFyc2VyKHVzZV9kYXRldGltZT1zZWxmLl91c2VfZGF0ZXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2J1aWx0aW5fdHlwZXM9c2VsZi5fdXNlX2J1aWx0aW5fdHlwZXMpCiAKICAgICAjIwogICAgICMgR2V0IGF1dGhvcml6YXRpb24gaW5mbyBmcm9tIGhvc3QgcGFyYW1ldGVyCkBAIC0xMTc1LDcgKzExOTEsNiBAQAogICAgICAgICBpZiBpc2luc3RhbmNlKGhvc3QsIHR1cGxlKToKICAgICAgICAgICAgIGhvc3QsIHg1MDkgPSBob3N0CiAKLSAgICAgICAgaW1wb3J0IHVybGxpYi5wYXJzZQogICAgICAgICBhdXRoLCBob3N0ID0gdXJsbGliLnBhcnNlLnNwbGl0dXNlcihob3N0KQogCiAgICAgICAgIGlmIGF1dGg6CkBAIC0xMzY0LDExICsxMzc5LDEwIEBACiAgICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdXJpLCB0cmFuc3BvcnQ9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSwgdmVyYm9zZT1GYWxzZSwKLSAgICAgICAgICAgICAgICAgYWxsb3dfbm9uZT1GYWxzZSwgdXNlX2RhdGV0aW1lPUZhbHNlKToKKyAgICAgICAgICAgICAgICAgYWxsb3dfbm9uZT1GYWxzZSwgdXNlX2RhdGV0aW1lPUZhbHNlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CiAgICAgICAgICMgZXN0YWJsaXNoIGEgImxvZ2ljYWwiIHNlcnZlciBjb25uZWN0aW9uCiAKICAgICAgICAgIyBnZXQgdGhlIHVybAotICAgICAgICBpbXBvcnQgdXJsbGliLnBhcnNlCiAgICAgICAgIHR5cGUsIHVyaSA9IHVybGxpYi5wYXJzZS5zcGxpdHR5cGUodXJpKQogICAgICAgICBpZiB0eXBlIG5vdCBpbiAoImh0dHAiLCAiaHR0cHMiKToKICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoInVuc3VwcG9ydGVkIFhNTC1SUEMgcHJvdG9jb2wiKQpAQCAtMTM3OCw5ICsxMzkyLDExIEBACiAKICAgICAgICAgaWYgdHJhbnNwb3J0IGlzIE5vbmU6CiAgICAgICAgICAgICBpZiB0eXBlID09ICJodHRwcyI6Ci0gICAgICAgICAgICAgICAgdHJhbnNwb3J0ID0gU2FmZVRyYW5zcG9ydCh1c2VfZGF0ZXRpbWU9dXNlX2RhdGV0aW1lKQorICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBTYWZlVHJhbnNwb3J0CiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRyYW5zcG9ydCA9IFRyYW5zcG9ydCh1c2VfZGF0ZXRpbWU9dXNlX2RhdGV0aW1lKQorICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBUcmFuc3BvcnQKKyAgICAgICAgICAgIHRyYW5zcG9ydCA9IGhhbmRsZXIodXNlX2RhdGV0aW1lPXVzZV9kYXRldGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2J1aWx0aW5fdHlwZXM9dXNlX2J1aWx0aW5fdHlwZXMpCiAgICAgICAgIHNlbGYuX190cmFuc3BvcnQgPSB0cmFuc3BvcnQKIAogICAgICAgICBzZWxmLl9fZW5jb2RpbmcgPSBlbmNvZGluZyBvciAndXRmLTgnCmRpZmYgLS1naXQgYS9MaWIveG1scnBjL3NlcnZlci5weSBiL0xpYi94bWxycGMvc2VydmVyLnB5CmluZGV4IGZkMTcwMjYuLjU0ZTE3MjYgMTAwNjQ0Ci0tLSBhL0xpYi94bWxycGMvc2VydmVyLnB5CisrKyBiL0xpYi94bWxycGMvc2VydmVyLnB5CkBAIC0xNjAsMTEgKzE2MCwxMyBAQAogICAgIGNhbiBiZSBpbnN0YW5jZWQgd2hlbiB1c2VkIGJ5IHRoZSBNdWx0aVBhdGhYTUxSUENTZXJ2ZXIKICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwKKyAgICAgICAgICAgICAgICAgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogICAgICAgICBzZWxmLmZ1bmNzID0ge30KICAgICAgICAgc2VsZi5pbnN0YW5jZSA9IE5vbmUKICAgICAgICAgc2VsZi5hbGxvd19ub25lID0gYWxsb3dfbm9uZQogICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2Rpbmcgb3IgJ3V0Zi04JworICAgICAgICBzZWxmLnVzZV9idWlsdGluX3R5cGVzID0gdXNlX2J1aWx0aW5fdHlwZXMKIAogICAgIGRlZiByZWdpc3Rlcl9pbnN0YW5jZShzZWxmLCBpbnN0YW5jZSwgYWxsb3dfZG90dGVkX25hbWVzPUZhbHNlKToKICAgICAgICAgIiIiUmVnaXN0ZXJzIGFuIGluc3RhbmNlIHRvIHJlc3BvbmQgdG8gWE1MLVJQQyByZXF1ZXN0cy4KQEAgLTI0NSw3ICsyNDcsNyBAQAogICAgICAgICAiIiIKIAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwYXJhbXMsIG1ldGhvZCA9IGxvYWRzKGRhdGEpCisgICAgICAgICAgICBwYXJhbXMsIG1ldGhvZCA9IGxvYWRzKGRhdGEsIHVzZV9idWlsdGluX3R5cGVzPXNlbGYudXNlX2J1aWx0aW5fdHlwZXMpCiAKICAgICAgICAgICAgICMgZ2VuZXJhdGUgcmVzcG9uc2UKICAgICAgICAgICAgIGlmIGRpc3BhdGNoX21ldGhvZCBpcyBub3QgTm9uZToKQEAgLTU3NSwxMCArNTc3LDExIEBACiAgICAgX3NlbmRfdHJhY2ViYWNrX2hlYWRlciA9IEZhbHNlCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkciwgcmVxdWVzdEhhbmRsZXI9U2ltcGxlWE1MUlBDUmVxdWVzdEhhbmRsZXIsCi0gICAgICAgICAgICAgICAgIGxvZ1JlcXVlc3RzPVRydWUsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUpOgorICAgICAgICAgICAgICAgICBsb2dSZXF1ZXN0cz1UcnVlLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLAorICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CiAgICAgICAgIHNlbGYubG9nUmVxdWVzdHMgPSBsb2dSZXF1ZXN0cwogCi0gICAgICAgIFNpbXBsZVhNTFJQQ0Rpc3BhdGNoZXIuX19pbml0X18oc2VsZiwgYWxsb3dfbm9uZSwgZW5jb2RpbmcpCisgICAgICAgIFNpbXBsZVhNTFJQQ0Rpc3BhdGNoZXIuX19pbml0X18oc2VsZiwgYWxsb3dfbm9uZSwgZW5jb2RpbmcsIHVzZV9idWlsdGluX3R5cGVzKQogICAgICAgICBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIsIHJlcXVlc3RIYW5kbGVyLCBiaW5kX2FuZF9hY3RpdmF0ZSkKIAogICAgICAgICAjIFtCdWcgIzEyMjI3OTBdIElmIHBvc3NpYmxlLCBzZXQgY2xvc2Utb24tZXhlYyBmbGFnOyBpZiBhCkBAIC01OTgsMTAgKzYwMSwxMSBAQAogICAgIE1ha2Ugc3VyZSB0aGF0IHRoZSByZXF1ZXN0SGFuZGxlciBhY2NlcHRzIHRoZSBwYXRocyBpbiBxdWVzdGlvbi4KICAgICAiIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkciwgcmVxdWVzdEhhbmRsZXI9U2ltcGxlWE1MUlBDUmVxdWVzdEhhbmRsZXIsCi0gICAgICAgICAgICAgICAgIGxvZ1JlcXVlc3RzPVRydWUsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUpOgorICAgICAgICAgICAgICAgICBsb2dSZXF1ZXN0cz1UcnVlLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLAorICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CiAKICAgICAgICAgU2ltcGxlWE1MUlBDU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIsIHJlcXVlc3RIYW5kbGVyLCBsb2dSZXF1ZXN0cywgYWxsb3dfbm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCBiaW5kX2FuZF9hY3RpdmF0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCBiaW5kX2FuZF9hY3RpdmF0ZSwgdXNlX2J1aWx0aW5fdHlwZXMpCiAgICAgICAgIHNlbGYuZGlzcGF0Y2hlcnMgPSB7fQogICAgICAgICBzZWxmLmFsbG93X25vbmUgPSBhbGxvd19ub25lCiAgICAgICAgIHNlbGYuZW5jb2RpbmcgPSBlbmNvZGluZyBvciAndXRmLTgnCkBAIC02MzEsOCArNjM1LDggQEAKIGNsYXNzIENHSVhNTFJQQ1JlcXVlc3RIYW5kbGVyKFNpbXBsZVhNTFJQQ0Rpc3BhdGNoZXIpOgogICAgICIiIlNpbXBsZSBoYW5kbGVyIGZvciBYTUwtUlBDIGRhdGEgcGFzc2VkIHRocm91Z2ggQ0dJLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUpOgotICAgICAgICBTaW1wbGVYTUxSUENEaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIGFsbG93X25vbmUsIGVuY29kaW5nKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CisgICAgICAgIFNpbXBsZVhNTFJQQ0Rpc3BhdGNoZXIuX19pbml0X18oc2VsZiwgYWxsb3dfbm9uZSwgZW5jb2RpbmcsIHVzZV9idWlsdGluX3R5cGVzKQogCiAgICAgZGVmIGhhbmRsZV94bWxycGMoc2VsZiwgcmVxdWVzdF90ZXh0KToKICAgICAgICAgIiIiSGFuZGxlIGEgc2luZ2xlIFhNTC1SUEMgcmVxdWVzdCIiIgpAQCAtOTI3LDkgKzkzMSwxMCBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIHJlcXVlc3RIYW5kbGVyPURvY1hNTFJQQ1JlcXVlc3RIYW5kbGVyLAogICAgICAgICAgICAgICAgICBsb2dSZXF1ZXN0cz1UcnVlLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLAotICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlKToKKyAgICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogICAgICAgICBTaW1wbGVYTUxSUENTZXJ2ZXIuX19pbml0X18oc2VsZiwgYWRkciwgcmVxdWVzdEhhbmRsZXIsIGxvZ1JlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dfbm9uZSwgZW5jb2RpbmcsIGJpbmRfYW5kX2FjdGl2YXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dfbm9uZSwgZW5jb2RpbmcsIGJpbmRfYW5kX2FjdGl2YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2J1aWx0aW5fdHlwZXMpCiAgICAgICAgIFhNTFJQQ0RvY0dlbmVyYXRvci5fX2luaXRfXyhzZWxmKQogCiBjbGFzcyBEb2NDR0lYTUxSUENSZXF1ZXN0SGFuZGxlciggICBDR0lYTUxSUENSZXF1ZXN0SGFuZGxlciwKQEAgLTk1OSw4ICs5NjQsMTMgQEAKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHByaW50KCdSdW5uaW5nIFhNTC1SUEMgc2VydmVyIG9uIHBvcnQgODAwMCcpCiAgICAgc2VydmVyID0gU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgODAwMCkpCiAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKHBvdykKICAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24obGFtYmRhIHgseTogeCt5LCAnYWRkJykKLSAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCisgICAgcHJpbnQoJ1NlcnZpbmcgWE1MLVJQQyBvbiBsb2NhbGhvc3QgcG9ydCA4MDAwJykKKyAgICB0cnk6CisgICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKKyAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgIHByaW50KCJcbktleWJvYXJkIGludGVycnVwdCByZWNlaXZlZCwgZXhpdGluZy4iKQorICAgICAgICBzZXJ2ZXIuc2VydmVyX2Nsb3NlKCkKKyAgICAgICAgc3lzLmV4aXQoMCkKZGlmZiAtLWdpdCBhL0xpYi96aXBmaWxlLnB5IGIvTGliL3ppcGZpbGUucHkKaW5kZXggYjIyM2I0YS4uMzQ0OGM2MSAxMDA2NDQKLS0tIGEvTGliL3ppcGZpbGUucHkKKysrIGIvTGliL3ppcGZpbGUucHkKQEAgLTIyLDcgKzIyLDE4IEBACiAgICAgemxpYiA9IE5vbmUKICAgICBjcmMzMiA9IGJpbmFzY2lpLmNyYzMyCiAKLV9fYWxsX18gPSBbIkJhZFppcEZpbGUiLCAiQmFkWmlwZmlsZSIsICJlcnJvciIsICJaSVBfU1RPUkVEIiwgIlpJUF9ERUZMQVRFRCIsCit0cnk6CisgICAgaW1wb3J0IGJ6MiAjIFdlIG1heSBuZWVkIGl0cyBjb21wcmVzc2lvbiBtZXRob2QKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBiejIgPSBOb25lCisKK3RyeToKKyAgICBpbXBvcnQgbHptYSAjIFdlIG1heSBuZWVkIGl0cyBjb21wcmVzc2lvbiBtZXRob2QKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBsem1hID0gTm9uZQorCitfX2FsbF9fID0gWyJCYWRaaXBGaWxlIiwgIkJhZFppcGZpbGUiLCAiZXJyb3IiLAorICAgICAgICAgICAiWklQX1NUT1JFRCIsICJaSVBfREVGTEFURUQiLCAiWklQX0JaSVAyIiwgIlpJUF9MWk1BIiwKICAgICAgICAgICAgImlzX3ppcGZpbGUiLCAiWmlwSW5mbyIsICJaaXBGaWxlIiwgIlB5WmlwRmlsZSIsICJMYXJnZVppcEZpbGUiXQogCiBjbGFzcyBCYWRaaXBGaWxlKEV4Y2VwdGlvbik6CkBAIC00NSw4ICs1NiwxNyBAQAogIyBjb25zdGFudHMgZm9yIFppcCBmaWxlIGNvbXByZXNzaW9uIG1ldGhvZHMKIFpJUF9TVE9SRUQgPSAwCiBaSVBfREVGTEFURUQgPSA4CitaSVBfQlpJUDIgPSAxMgorWklQX0xaTUEgPSAxNAogIyBPdGhlciBaSVAgY29tcHJlc3Npb24gbWV0aG9kcyBub3Qgc3VwcG9ydGVkCiAKK0RFRkFVTFRfVkVSU0lPTiA9IDIwCitaSVA2NF9WRVJTSU9OID0gNDUKK0JaSVAyX1ZFUlNJT04gPSA0NgorTFpNQV9WRVJTSU9OID0gNjMKKyMgd2UgcmVjb2duaXplIChidXQgbm90IG5lY2Vzc2FyaWx5IHN1cHBvcnQpIGFsbCBmZWF0dXJlcyB1cCB0byB0aGF0IHZlcnNpb24KK01BWF9FWFRSQUNUX1ZFUlNJT04gPSA2MworCiAjIEJlbG93IGFyZSBzb21lIGZvcm1hdHMgYW5kIGFzc29jaWF0ZWQgZGF0YSBmb3IgcmVhZGluZy93cml0aW5nIGhlYWRlcnMgdXNpbmcKICMgdGhlIHN0cnVjdCBtb2R1bGUuICBUaGUgbmFtZXMgYW5kIHN0cnVjdHVyZXMgb2YgaGVhZGVycy9yZWNvcmRzIGFyZSB0aG9zZSB1c2VkCiAjIGluIHRoZSBQS1dBUkUgZGVzY3JpcHRpb24gb2YgdGhlIFpJUCBmaWxlIGZvcm1hdDoKQEAgLTMyMiw4ICszNDIsOCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBBc3N1bWUgZXZlcnl0aGluZyBlbHNlIGlzIHVuaXgteQogICAgICAgICAgICAgc2VsZi5jcmVhdGVfc3lzdGVtID0gMyAgICAgICAgICAjIFN5c3RlbSB3aGljaCBjcmVhdGVkIFpJUCBhcmNoaXZlCi0gICAgICAgIHNlbGYuY3JlYXRlX3ZlcnNpb24gPSAyMCAgICAgICAgIyBWZXJzaW9uIHdoaWNoIGNyZWF0ZWQgWklQIGFyY2hpdmUKLSAgICAgICAgc2VsZi5leHRyYWN0X3ZlcnNpb24gPSAyMCAgICAgICAjIFZlcnNpb24gbmVlZGVkIHRvIGV4dHJhY3QgYXJjaGl2ZQorICAgICAgICBzZWxmLmNyZWF0ZV92ZXJzaW9uID0gREVGQVVMVF9WRVJTSU9OICAjIFZlcnNpb24gd2hpY2ggY3JlYXRlZCBaSVAgYXJjaGl2ZQorICAgICAgICBzZWxmLmV4dHJhY3RfdmVyc2lvbiA9IERFRkFVTFRfVkVSU0lPTiAjIFZlcnNpb24gbmVlZGVkIHRvIGV4dHJhY3QgYXJjaGl2ZQogICAgICAgICBzZWxmLnJlc2VydmVkID0gMCAgICAgICAgICAgICAgICMgTXVzdCBiZSB6ZXJvCiAgICAgICAgIHNlbGYuZmxhZ19iaXRzID0gMCAgICAgICAgICAgICAgIyBaSVAgZmxhZyBiaXRzCiAgICAgICAgIHNlbGYudm9sdW1lID0gMCAgICAgICAgICAgICAgICAgIyBWb2x1bWUgbnVtYmVyIG9mIGZpbGUgaGVhZGVyCkBAIC0zNTAsNiArMzcwLDcgQEAKIAogICAgICAgICBleHRyYSA9IHNlbGYuZXh0cmEKIAorICAgICAgICBtaW5fdmVyc2lvbiA9IDAKICAgICAgICAgaWYgemlwNjQgaXMgTm9uZToKICAgICAgICAgICAgIHppcDY0ID0gZmlsZV9zaXplID4gWklQNjRfTElNSVQgb3IgY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUCiAgICAgICAgIGlmIHppcDY0OgpAQCAtMzYzLDkgKzM4NCwxNSBAQAogICAgICAgICAgICAgIyBmYWxsIGJhY2sgdG8gdGhlIFpJUDY0IGV4dGVuc2lvbgogICAgICAgICAgICAgZmlsZV9zaXplID0gMHhmZmZmZmZmZgogICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IDB4ZmZmZmZmZmYKLSAgICAgICAgICAgIHNlbGYuZXh0cmFjdF92ZXJzaW9uID0gbWF4KDQ1LCBzZWxmLmV4dHJhY3RfdmVyc2lvbikKLSAgICAgICAgICAgIHNlbGYuY3JlYXRlX3ZlcnNpb24gPSBtYXgoNDUsIHNlbGYuZXh0cmFjdF92ZXJzaW9uKQorICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBaSVA2NF9WRVJTSU9OCiAKKyAgICAgICAgaWYgc2VsZi5jb21wcmVzc190eXBlID09IFpJUF9CWklQMjoKKyAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gbWF4KEJaSVAyX1ZFUlNJT04sIG1pbl92ZXJzaW9uKQorICAgICAgICBlbGlmIHNlbGYuY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gbWF4KExaTUFfVkVSU0lPTiwgbWluX3ZlcnNpb24pCisKKyAgICAgICAgc2VsZi5leHRyYWN0X3ZlcnNpb24gPSBtYXgobWluX3ZlcnNpb24sIHNlbGYuZXh0cmFjdF92ZXJzaW9uKQorICAgICAgICBzZWxmLmNyZWF0ZV92ZXJzaW9uID0gbWF4KG1pbl92ZXJzaW9uLCBzZWxmLmNyZWF0ZV92ZXJzaW9uKQogICAgICAgICBmaWxlbmFtZSwgZmxhZ19iaXRzID0gc2VsZi5fZW5jb2RlRmlsZW5hbWVGbGFncygpCiAgICAgICAgIGhlYWRlciA9IHN0cnVjdC5wYWNrKHN0cnVjdEZpbGVIZWFkZXIsIHN0cmluZ0ZpbGVIZWFkZXIsCiAgICAgICAgICAgICAgICAgIHNlbGYuZXh0cmFjdF92ZXJzaW9uLCBzZWxmLnJlc2VydmVkLCBmbGFnX2JpdHMsCkBAIC00NzYsNiArNTAzLDU3IEBACiAgICAgICAgIHJldHVybiBjCiAKIAorY2xhc3MgTFpNQUNvbXByZXNzb3I6CisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2NvbXAgPSBOb25lCisKKyAgICBkZWYgX2luaXQoc2VsZik6CisgICAgICAgIHByb3BzID0gbHptYS5fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHsnaWQnOiBsem1hLkZJTFRFUl9MWk1BMX0pCisgICAgICAgIHNlbGYuX2NvbXAgPSBsem1hLkxaTUFDb21wcmVzc29yKGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1bCisgICAgICAgICAgICAgICAgbHptYS5fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKGx6bWEuRklMVEVSX0xaTUExLCBwcm9wcykKKyAgICAgICAgXSkKKyAgICAgICAgcmV0dXJuIHN0cnVjdC5wYWNrKCc8QkJIJywgOSwgNCwgbGVuKHByb3BzKSkgKyBwcm9wcworCisgICAgZGVmIGNvbXByZXNzKHNlbGYsIGRhdGEpOgorICAgICAgICBpZiBzZWxmLl9jb21wIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5faW5pdCgpICsgc2VsZi5fY29tcC5jb21wcmVzcyhkYXRhKQorICAgICAgICByZXR1cm4gc2VsZi5fY29tcC5jb21wcmVzcyhkYXRhKQorCisgICAgZGVmIGZsdXNoKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9jb21wIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5faW5pdCgpICsgc2VsZi5fY29tcC5mbHVzaCgpCisgICAgICAgIHJldHVybiBzZWxmLl9jb21wLmZsdXNoKCkKKworCitjbGFzcyBMWk1BRGVjb21wcmVzc29yOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9kZWNvbXAgPSBOb25lCisgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBiJycKKyAgICAgICAgc2VsZi5lb2YgPSBGYWxzZQorCisgICAgZGVmIGRlY29tcHJlc3Moc2VsZiwgZGF0YSk6CisgICAgICAgIGlmIHNlbGYuX2RlY29tcCBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fdW5jb25zdW1lZCArPSBkYXRhCisgICAgICAgICAgICBpZiBsZW4oc2VsZi5fdW5jb25zdW1lZCkgPD0gNDoKKyAgICAgICAgICAgICAgICByZXR1cm4gYicnCisgICAgICAgICAgICBwc2l6ZSwgPSBzdHJ1Y3QudW5wYWNrKCc8SCcsIHNlbGYuX3VuY29uc3VtZWRbMjo0XSkKKyAgICAgICAgICAgIGlmIGxlbihzZWxmLl91bmNvbnN1bWVkKSA8PSA0ICsgcHNpemU6CisgICAgICAgICAgICAgICAgcmV0dXJuIGInJworCisgICAgICAgICAgICBzZWxmLl9kZWNvbXAgPSBsem1hLkxaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgbHptYS5fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKGx6bWEuRklMVEVSX0xaTUExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWRbNDo0ICsgcHNpemVdKQorICAgICAgICAgICAgXSkKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl91bmNvbnN1bWVkWzQgKyBwc2l6ZTpdCisgICAgICAgICAgICBkZWwgc2VsZi5fdW5jb25zdW1lZAorCisgICAgICAgIHJlc3VsdCA9IHNlbGYuX2RlY29tcC5kZWNvbXByZXNzKGRhdGEpCisgICAgICAgIHNlbGYuZW9mID0gc2VsZi5fZGVjb21wLmVvZgorICAgICAgICByZXR1cm4gcmVzdWx0CisKKwogY29tcHJlc3Nvcl9uYW1lcyA9IHsKICAgICAwOiAnc3RvcmUnLAogICAgIDE6ICdzaHJpbmsnLApAQCAtNDk2LDYgKzU3NCw1MyBAQAogICAgIDk4OiAncHBtZCcsCiB9CiAKK2RlZiBfY2hlY2tfY29tcHJlc3Npb24oY29tcHJlc3Npb24pOgorICAgIGlmIGNvbXByZXNzaW9uID09IFpJUF9TVE9SRUQ6CisgICAgICAgIHBhc3MKKyAgICBlbGlmIGNvbXByZXNzaW9uID09IFpJUF9ERUZMQVRFRDoKKyAgICAgICAgaWYgbm90IHpsaWI6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJDb21wcmVzc2lvbiByZXF1aXJlcyB0aGUgKG1pc3NpbmcpIHpsaWIgbW9kdWxlIikKKyAgICBlbGlmIGNvbXByZXNzaW9uID09IFpJUF9CWklQMjoKKyAgICAgICAgaWYgbm90IGJ6MjoKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgIkNvbXByZXNzaW9uIHJlcXVpcmVzIHRoZSAobWlzc2luZykgYnoyIG1vZHVsZSIpCisgICAgZWxpZiBjb21wcmVzc2lvbiA9PSBaSVBfTFpNQToKKyAgICAgICAgaWYgbm90IGx6bWE6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJDb21wcmVzc2lvbiByZXF1aXJlcyB0aGUgKG1pc3NpbmcpIGx6bWEgbW9kdWxlIikKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlRoYXQgY29tcHJlc3Npb24gbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQiKQorCisKK2RlZiBfZ2V0X2NvbXByZXNzb3IoY29tcHJlc3NfdHlwZSk6CisgICAgaWYgY29tcHJlc3NfdHlwZSA9PSBaSVBfREVGTEFURUQ6CisgICAgICAgIHJldHVybiB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLAorICAgICAgICAgICAgIHpsaWIuREVGTEFURUQsIC0xNSkKKyAgICBlbGlmIGNvbXByZXNzX3R5cGUgPT0gWklQX0JaSVAyOgorICAgICAgICByZXR1cm4gYnoyLkJaMkNvbXByZXNzb3IoKQorICAgIGVsaWYgY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgcmV0dXJuIExaTUFDb21wcmVzc29yKCkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gTm9uZQorCisKK2RlZiBfZ2V0X2RlY29tcHJlc3Nvcihjb21wcmVzc190eXBlKToKKyAgICBpZiBjb21wcmVzc190eXBlID09IFpJUF9TVE9SRUQ6CisgICAgICAgIHJldHVybiBOb25lCisgICAgZWxpZiBjb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKKyAgICAgICAgcmV0dXJuIHpsaWIuZGVjb21wcmVzc29iaigtMTUpCisgICAgZWxpZiBjb21wcmVzc190eXBlID09IFpJUF9CWklQMjoKKyAgICAgICAgcmV0dXJuIGJ6Mi5CWjJEZWNvbXByZXNzb3IoKQorICAgIGVsaWYgY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgcmV0dXJuIExaTUFEZWNvbXByZXNzb3IoKQorICAgIGVsc2U6CisgICAgICAgIGRlc2NyID0gY29tcHJlc3Nvcl9uYW1lcy5nZXQoY29tcHJlc3NfdHlwZSkKKyAgICAgICAgaWYgZGVzY3I6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJjb21wcmVzc2lvbiB0eXBlICVkICglcykiICUgKGNvbXByZXNzX3R5cGUsIGRlc2NyKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoImNvbXByZXNzaW9uIHR5cGUgJWQiICUgKGNvbXByZXNzX3R5cGUsKSkKKwogCiBjbGFzcyBaaXBFeHRGaWxlKGlvLkJ1ZmZlcmVkSU9CYXNlKToKICAgICAiIiJGaWxlLWxpa2Ugb2JqZWN0IGZvciByZWFkaW5nIGFuIGFyY2hpdmUgbWVtYmVyLgpAQCAtNTE4LDE5ICs2NDMsMTIgQEAKICAgICAgICAgc2VsZi5fY2xvc2VfZmlsZW9iaiA9IGNsb3NlX2ZpbGVvYmoKIAogICAgICAgICBzZWxmLl9jb21wcmVzc190eXBlID0gemlwaW5mby5jb21wcmVzc190eXBlCi0gICAgICAgIHNlbGYuX2NvbXByZXNzX3NpemUgPSB6aXBpbmZvLmNvbXByZXNzX3NpemUKICAgICAgICAgc2VsZi5fY29tcHJlc3NfbGVmdCA9IHppcGluZm8uY29tcHJlc3Nfc2l6ZQorICAgICAgICBzZWxmLl9sZWZ0ID0gemlwaW5mby5maWxlX3NpemUKIAotICAgICAgICBpZiBzZWxmLl9jb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKLSAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IHpsaWIuZGVjb21wcmVzc29iaigtMTUpCi0gICAgICAgIGVsaWYgc2VsZi5fY29tcHJlc3NfdHlwZSAhPSBaSVBfU1RPUkVEOgotICAgICAgICAgICAgZGVzY3IgPSBjb21wcmVzc29yX25hbWVzLmdldChzZWxmLl9jb21wcmVzc190eXBlKQotICAgICAgICAgICAgaWYgZGVzY3I6Ci0gICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiY29tcHJlc3Npb24gdHlwZSAlZCAoJXMpIiAlIChzZWxmLl9jb21wcmVzc190eXBlLCBkZXNjcikpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoImNvbXByZXNzaW9uIHR5cGUgJWQiICUgKHNlbGYuX2NvbXByZXNzX3R5cGUsKSkKLSAgICAgICAgc2VsZi5fdW5jb25zdW1lZCA9IGInJworICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBfZ2V0X2RlY29tcHJlc3NvcihzZWxmLl9jb21wcmVzc190eXBlKQogCisgICAgICAgIHNlbGYuX2VvZiA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAogCkBAIC02MDUsNyArNzIzLDExIEBACiAgICAgICAgICIiIlJldHVybnMgYnVmZmVyZWQgYnl0ZXMgd2l0aG91dCBhZHZhbmNpbmcgdGhlIHBvc2l0aW9uLiIiIgogICAgICAgICBpZiBuID4gbGVuKHNlbGYuX3JlYWRidWZmZXIpIC0gc2VsZi5fb2Zmc2V0OgogICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnJlYWQobikKLSAgICAgICAgICAgIHNlbGYuX29mZnNldCAtPSBsZW4oY2h1bmspCisgICAgICAgICAgICBpZiBsZW4oY2h1bmspID4gc2VsZi5fb2Zmc2V0OgorICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBjaHVuayArIHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0Ol0KKyAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCAtPSBsZW4oY2h1bmspCiAKICAgICAgICAgIyBSZXR1cm4gdXAgdG8gNTEyIGJ5dGVzIHRvIHJlZHVjZSBhbGxvY2F0aW9uIG92ZXJoZWFkIGZvciB0aWdodCBsb29wcy4KICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0OiBzZWxmLl9vZmZzZXQgKyA1MTJdCkBAIC02MTcsODAgKzczOSwxMjMgQEAKICAgICAgICAgIiIiUmVhZCBhbmQgcmV0dXJuIHVwIHRvIG4gYnl0ZXMuCiAgICAgICAgIElmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkLCBOb25lLCBvciBuZWdhdGl2ZSwgZGF0YSBpcyByZWFkIGFuZCByZXR1cm5lZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4uCiAgICAgICAgICIiIgotICAgICAgICBidWYgPSBiJycKLSAgICAgICAgaWYgbiBpcyBOb25lOgotICAgICAgICAgICAgbiA9IC0xCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBpZiBuIDwgMDoKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5yZWFkMShuKQotICAgICAgICAgICAgZWxpZiBuID4gbGVuKGJ1Zik6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVhZDEobiAtIGxlbihidWYpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gYnVmCi0gICAgICAgICAgICBpZiBsZW4oZGF0YSkgPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gYnVmCi0gICAgICAgICAgICBidWYgKz0gZGF0YQorICAgICAgICBpZiBuIGlzIE5vbmUgb3IgbiA8IDA6CisgICAgICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gYicnCisgICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCisgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fZW9mOgorICAgICAgICAgICAgICAgIGJ1ZiArPSBzZWxmLl9yZWFkMShzZWxmLk1BWF9OKQorICAgICAgICAgICAgcmV0dXJuIGJ1ZgogCi0gICAgZGVmIF91cGRhdGVfY3JjKHNlbGYsIG5ld2RhdGEsIGVvZik6CisgICAgICAgIGVuZCA9IG4gKyBzZWxmLl9vZmZzZXQKKyAgICAgICAgaWYgZW5kIDwgbGVuKHNlbGYuX3JlYWRidWZmZXIpOgorICAgICAgICAgICAgYnVmID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6ZW5kXQorICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gZW5kCisgICAgICAgICAgICByZXR1cm4gYnVmCisKKyAgICAgICAgbiA9IGVuZCAtIGxlbihzZWxmLl9yZWFkYnVmZmVyKQorICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKKyAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAorICAgICAgICB3aGlsZSBuID4gMCBhbmQgbm90IHNlbGYuX2VvZjoKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkMShuKQorICAgICAgICAgICAgaWYgbiA8IGxlbihkYXRhKToKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gZGF0YQorICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCA9IG4KKyAgICAgICAgICAgICAgICBidWYgKz0gZGF0YVs6bl0KKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgYnVmICs9IGRhdGEKKyAgICAgICAgICAgIG4gLT0gbGVuKGRhdGEpCisgICAgICAgIHJldHVybiBidWYKKworICAgIGRlZiBfdXBkYXRlX2NyYyhzZWxmLCBuZXdkYXRhKToKICAgICAgICAgIyBVcGRhdGUgdGhlIENSQyB1c2luZyB0aGUgZ2l2ZW4gZGF0YS4KICAgICAgICAgaWYgc2VsZi5fZXhwZWN0ZWRfY3JjIGlzIE5vbmU6CiAgICAgICAgICAgICAjIE5vIG5lZWQgdG8gY29tcHV0ZSB0aGUgQ1JDIGlmIHdlIGRvbid0IGhhdmUgYSByZWZlcmVuY2UgdmFsdWUKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLl9ydW5uaW5nX2NyYyA9IGNyYzMyKG5ld2RhdGEsIHNlbGYuX3J1bm5pbmdfY3JjKSAmIDB4ZmZmZmZmZmYKICAgICAgICAgIyBDaGVjayB0aGUgQ1JDIGlmIHdlJ3JlIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKLSAgICAgICAgaWYgZW9mIGFuZCBzZWxmLl9ydW5uaW5nX2NyYyAhPSBzZWxmLl9leHBlY3RlZF9jcmM6CisgICAgICAgIGlmIHNlbGYuX2VvZiBhbmQgc2VsZi5fcnVubmluZ19jcmMgIT0gc2VsZi5fZXhwZWN0ZWRfY3JjOgogICAgICAgICAgICAgcmFpc2UgQmFkWmlwRmlsZSgiQmFkIENSQy0zMiBmb3IgZmlsZSAlciIgJSBzZWxmLm5hbWUpCiAKICAgICBkZWYgcmVhZDEoc2VsZiwgbik6CiAgICAgICAgICIiIlJlYWQgdXAgdG8gbiBieXRlcyB3aXRoIGF0IG1vc3Qgb25lIHJlYWQoKSBzeXN0ZW0gY2FsbC4iIiIKIAotICAgICAgICAjIFNpbXBsaWZ5IGFsZ29yaXRobSAoYnJhbmNoaW5nKSBieSB0cmFuc2Zvcm1pbmcgbmVnYXRpdmUgbiB0byBsYXJnZSBuLgotICAgICAgICBpZiBuIDwgMCBvciBuIGlzIE5vbmU6Ci0gICAgICAgICAgICBuID0gc2VsZi5NQVhfTgorICAgICAgICBpZiBuIGlzIE5vbmUgb3IgbiA8IDA6CisgICAgICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gYicnCisgICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCisgICAgICAgICAgICBkYXRhID0gc2VsZi5fcmVhZDEoc2VsZi5NQVhfTikKKyAgICAgICAgICAgIGJ1ZiArPSBkYXRhCisgICAgICAgICAgICByZXR1cm4gYnVmCiAKLSAgICAgICAgIyBCeXRlcyBhdmFpbGFibGUgaW4gcmVhZCBidWZmZXIuCi0gICAgICAgIGxlbl9yZWFkYnVmZmVyID0gbGVuKHNlbGYuX3JlYWRidWZmZXIpIC0gc2VsZi5fb2Zmc2V0CisgICAgICAgIGVuZCA9IG4gKyBzZWxmLl9vZmZzZXQKKyAgICAgICAgaWYgZW5kIDwgbGVuKHNlbGYuX3JlYWRidWZmZXIpOgorICAgICAgICAgICAgYnVmID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6ZW5kXQorICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gZW5kCisgICAgICAgICAgICByZXR1cm4gYnVmCisKKyAgICAgICAgbiA9IGVuZCAtIGxlbihzZWxmLl9yZWFkYnVmZmVyKQorICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKKyAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAorICAgICAgICBpZiBuID4gMDoKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkMShuKQorICAgICAgICAgICAgaWYgbiA8IGxlbihkYXRhKToKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gZGF0YQorICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCA9IG4KKyAgICAgICAgICAgICAgICBkYXRhID0gZGF0YVs6bl0KKyAgICAgICAgICAgIGJ1ZiArPSBkYXRhCisgICAgICAgIHJldHVybiBidWYKKworICAgIGRlZiBfcmVhZDEoc2VsZiwgbik6CisgICAgICAgICMgUmVhZCB1cCB0byBuIGNvbXByZXNzZWQgYnl0ZXMgd2l0aCBhdCBtb3N0IG9uZSByZWFkKCkgc3lzdGVtIGNhbGwsCisgICAgICAgICMgZGVjcnlwdCBhbmQgZGVjb21wcmVzcyB0aGVtLgorICAgICAgICBpZiBzZWxmLl9lb2Ygb3IgbiA8PSAwOgorICAgICAgICAgICAgcmV0dXJuIGInJwogCiAgICAgICAgICMgUmVhZCBmcm9tIGZpbGUuCi0gICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX2xlZnQgPiAwIGFuZCBuID4gbGVuX3JlYWRidWZmZXIgKyBsZW4oc2VsZi5fdW5jb25zdW1lZCk6Ci0gICAgICAgICAgICBuYnl0ZXMgPSBuIC0gbGVuX3JlYWRidWZmZXIgLSBsZW4oc2VsZi5fdW5jb25zdW1lZCkKLSAgICAgICAgICAgIG5ieXRlcyA9IG1heChuYnl0ZXMsIHNlbGYuTUlOX1JFQURfU0laRSkKLSAgICAgICAgICAgIG5ieXRlcyA9IG1pbihuYnl0ZXMsIHNlbGYuX2NvbXByZXNzX2xlZnQpCisgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX3R5cGUgPT0gWklQX0RFRkxBVEVEOgorICAgICAgICAgICAgIyMgSGFuZGxlIHVuY29uc3VtZWQgZGF0YS4KKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9kZWNvbXByZXNzb3IudW5jb25zdW1lZF90YWlsCisgICAgICAgICAgICBpZiBuID4gbGVuKGRhdGEpOgorICAgICAgICAgICAgICAgIGRhdGEgKz0gc2VsZi5fcmVhZDIobiAtIGxlbihkYXRhKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkMihuKQogCi0gICAgICAgICAgICBkYXRhID0gc2VsZi5fZmlsZW9iai5yZWFkKG5ieXRlcykKLSAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzX2xlZnQgLT0gbGVuKGRhdGEpCi0KLSAgICAgICAgICAgIGlmIGRhdGEgYW5kIHNlbGYuX2RlY3J5cHRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBkYXRhID0gYnl0ZXMobWFwKHNlbGYuX2RlY3J5cHRlciwgZGF0YSkpCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX3R5cGUgPT0gWklQX1NUT1JFRDoKLSAgICAgICAgICAgICAgICBzZWxmLl91cGRhdGVfY3JjKGRhdGEsIGVvZj0oc2VsZi5fY29tcHJlc3NfbGVmdD09MCkpCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVhZGJ1ZmZlciA9IHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0Ol0gKyBkYXRhCi0gICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIFByZXBhcmUgZGVmbGF0ZWQgYnl0ZXMgZm9yIGRlY29tcHJlc3Npb24uCi0gICAgICAgICAgICAgICAgc2VsZi5fdW5jb25zdW1lZCArPSBkYXRhCi0KLSAgICAgICAgIyBIYW5kbGUgdW5jb25zdW1lZCBkYXRhLgotICAgICAgICBpZiAobGVuKHNlbGYuX3VuY29uc3VtZWQpID4gMCBhbmQgbiA+IGxlbl9yZWFkYnVmZmVyIGFuZAotICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NfdHlwZSA9PSBaSVBfREVGTEFURUQpOgotICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKAotICAgICAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQsCi0gICAgICAgICAgICAgICAgbWF4KG4gLSBsZW5fcmVhZGJ1ZmZlciwgc2VsZi5NSU5fUkVBRF9TSVpFKQotICAgICAgICAgICAgKQotCi0gICAgICAgICAgICBzZWxmLl91bmNvbnN1bWVkID0gc2VsZi5fZGVjb21wcmVzc29yLnVuY29uc3VtZWRfdGFpbAotICAgICAgICAgICAgZW9mID0gbGVuKHNlbGYuX3VuY29uc3VtZWQpID09IDAgYW5kIHNlbGYuX2NvbXByZXNzX2xlZnQgPT0gMAotICAgICAgICAgICAgaWYgZW9mOgorICAgICAgICBpZiBzZWxmLl9jb21wcmVzc190eXBlID09IFpJUF9TVE9SRUQ6CisgICAgICAgICAgICBzZWxmLl9lb2YgPSBzZWxmLl9jb21wcmVzc19sZWZ0IDw9IDAKKyAgICAgICAgZWxpZiBzZWxmLl9jb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKKyAgICAgICAgICAgIG4gPSBtYXgobiwgc2VsZi5NSU5fUkVBRF9TSVpFKQorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKGRhdGEsIG4pCisgICAgICAgICAgICBzZWxmLl9lb2YgPSAoc2VsZi5fZGVjb21wcmVzc29yLmVvZiBvcgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb21wcmVzc19sZWZ0IDw9IDAgYW5kCisgICAgICAgICAgICAgICAgICAgIG5vdCBzZWxmLl9kZWNvbXByZXNzb3IudW5jb25zdW1lZF90YWlsKQorICAgICAgICAgICAgaWYgc2VsZi5fZW9mOgogICAgICAgICAgICAgICAgIGRhdGEgKz0gc2VsZi5fZGVjb21wcmVzc29yLmZsdXNoKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhkYXRhKQorICAgICAgICAgICAgc2VsZi5fZW9mID0gc2VsZi5fZGVjb21wcmVzc29yLmVvZiBvciBzZWxmLl9jb21wcmVzc19sZWZ0IDw9IDAKIAotICAgICAgICAgICAgc2VsZi5fdXBkYXRlX2NyYyhkYXRhLCBlb2Y9ZW9mKQotICAgICAgICAgICAgc2VsZi5fcmVhZGJ1ZmZlciA9IHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0Ol0gKyBkYXRhCi0gICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCisgICAgICAgIGRhdGEgPSBkYXRhWzpzZWxmLl9sZWZ0XQorICAgICAgICBzZWxmLl9sZWZ0IC09IGxlbihkYXRhKQorICAgICAgICBpZiBzZWxmLl9sZWZ0IDw9IDA6CisgICAgICAgICAgICBzZWxmLl9lb2YgPSBUcnVlCisgICAgICAgIHNlbGYuX3VwZGF0ZV9jcmMoZGF0YSkKKyAgICAgICAgcmV0dXJuIGRhdGEKIAotICAgICAgICAjIFJlYWQgZnJvbSBidWZmZXIuCi0gICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDogc2VsZi5fb2Zmc2V0ICsgbl0KLSAgICAgICAgc2VsZi5fb2Zmc2V0ICs9IGxlbihkYXRhKQorICAgIGRlZiBfcmVhZDIoc2VsZiwgbik6CisgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX2xlZnQgPD0gMDoKKyAgICAgICAgICAgIHJldHVybiBiJycKKworICAgICAgICBuID0gbWF4KG4sIHNlbGYuTUlOX1JFQURfU0laRSkKKyAgICAgICAgbiA9IG1pbihuLCBzZWxmLl9jb21wcmVzc19sZWZ0KQorCisgICAgICAgIGRhdGEgPSBzZWxmLl9maWxlb2JqLnJlYWQobikKKyAgICAgICAgc2VsZi5fY29tcHJlc3NfbGVmdCAtPSBsZW4oZGF0YSkKKworICAgICAgICBpZiBzZWxmLl9kZWNyeXB0ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkYXRhID0gYnl0ZXMobWFwKHNlbGYuX2RlY3J5cHRlciwgZGF0YSkpCiAgICAgICAgIHJldHVybiBkYXRhCiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CkBAIC03MDksNyArODc0LDggQEAKICAgICBmaWxlOiBFaXRoZXIgdGhlIHBhdGggdG8gdGhlIGZpbGUsIG9yIGEgZmlsZS1saWtlIG9iamVjdC4KICAgICAgICAgICBJZiBpdCBpcyBhIHBhdGgsIHRoZSBmaWxlIHdpbGwgYmUgb3BlbmVkIGFuZCBjbG9zZWQgYnkgWmlwRmlsZS4KICAgICBtb2RlOiBUaGUgbW9kZSBjYW4gYmUgZWl0aGVyIHJlYWQgInIiLCB3cml0ZSAidyIgb3IgYXBwZW5kICJhIi4KLSAgICBjb21wcmVzc2lvbjogWklQX1NUT1JFRCAobm8gY29tcHJlc3Npb24pIG9yIFpJUF9ERUZMQVRFRCAocmVxdWlyZXMgemxpYikuCisgICAgY29tcHJlc3Npb246IFpJUF9TVE9SRUQgKG5vIGNvbXByZXNzaW9uKSwgWklQX0RFRkxBVEVEIChyZXF1aXJlcyB6bGliKSwKKyAgICAgICAgICAgICAgICAgWklQX0JaSVAyIChyZXF1aXJlcyBiejIpIG9yIFpJUF9MWk1BIChyZXF1aXJlcyBsem1hKS4KICAgICBhbGxvd1ppcDY0OiBpZiBUcnVlIFppcEZpbGUgd2lsbCBjcmVhdGUgZmlsZXMgd2l0aCBaSVA2NCBleHRlbnNpb25zIHdoZW4KICAgICAgICAgICAgICAgICBuZWVkZWQsIG90aGVyd2lzZSBpdCB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoaXMgd291bGQKICAgICAgICAgICAgICAgICBiZSBuZWNlc3NhcnkuCkBAIC03MTcsMjAgKzg4MywxNCBAQAogICAgICIiIgogCiAgICAgZnAgPSBOb25lICAgICAgICAgICAgICAgICAgICMgU2V0IGhlcmUgc2luY2UgX19kZWxfXyBjaGVja3MgaXQKKyAgICBfd2luZG93c19pbGxlZ2FsX25hbWVfdHJhbnNfdGFibGUgPSBOb25lCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgbW9kZT0iciIsIGNvbXByZXNzaW9uPVpJUF9TVE9SRUQsIGFsbG93WmlwNjQ9RmFsc2UpOgogICAgICAgICAiIiJPcGVuIHRoZSBaSVAgZmlsZSB3aXRoIG1vZGUgcmVhZCAiciIsIHdyaXRlICJ3IiBvciBhcHBlbmQgImEiLiIiIgogICAgICAgICBpZiBtb2RlIG5vdCBpbiAoInIiLCAidyIsICJhIik6CiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1ppcEZpbGUoKSByZXF1aXJlcyBtb2RlICJyIiwgInciLCBvciAiYSInKQogCi0gICAgICAgIGlmIGNvbXByZXNzaW9uID09IFpJUF9TVE9SRUQ6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsaWYgY29tcHJlc3Npb24gPT0gWklQX0RFRkxBVEVEOgotICAgICAgICAgICAgaWYgbm90IHpsaWI6Ci0gICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICJDb21wcmVzc2lvbiByZXF1aXJlcyB0aGUgKG1pc3NpbmcpIHpsaWIgbW9kdWxlIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVGhhdCBjb21wcmVzc2lvbiBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCIpCisgICAgICAgIF9jaGVja19jb21wcmVzc2lvbihjb21wcmVzc2lvbikKIAogICAgICAgICBzZWxmLl9hbGxvd1ppcDY0ID0gYWxsb3daaXA2NAogICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBGYWxzZQpAQCAtODUxLDYgKzEwMTEsOSBAQAogICAgICAgICAgICAgKHguY3JlYXRlX3ZlcnNpb24sIHguY3JlYXRlX3N5c3RlbSwgeC5leHRyYWN0X3ZlcnNpb24sIHgucmVzZXJ2ZWQsCiAgICAgICAgICAgICAgICAgeC5mbGFnX2JpdHMsIHguY29tcHJlc3NfdHlwZSwgdCwgZCwKICAgICAgICAgICAgICAgICB4LkNSQywgeC5jb21wcmVzc19zaXplLCB4LmZpbGVfc2l6ZSkgPSBjZW50ZGlyWzE6MTJdCisgICAgICAgICAgICBpZiB4LmV4dHJhY3RfdmVyc2lvbiA+IE1BWF9FWFRSQUNUX1ZFUlNJT046CisgICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiemlwIGZpbGUgdmVyc2lvbiAlLjFmIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeC5leHRyYWN0X3ZlcnNpb24gLyAxMCkpCiAgICAgICAgICAgICB4LnZvbHVtZSwgeC5pbnRlcm5hbF9hdHRyLCB4LmV4dGVybmFsX2F0dHIgPSBjZW50ZGlyWzE1OjE4XQogICAgICAgICAgICAgIyBDb252ZXJ0IGRhdGUvdGltZSBjb2RlIHRvICh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW4sIHNlYykKICAgICAgICAgICAgIHguX3Jhd190aW1lID0gdApAQCAtODczLDEwICsxMDM2LDcgQEAKIAogICAgIGRlZiBuYW1lbGlzdChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBmaWxlIG5hbWVzIGluIHRoZSBhcmNoaXZlLiIiIgotICAgICAgICBsID0gW10KLSAgICAgICAgZm9yIGRhdGEgaW4gc2VsZi5maWxlbGlzdDoKLSAgICAgICAgICAgIGwuYXBwZW5kKGRhdGEuZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBsCisgICAgICAgIHJldHVybiBbZGF0YS5maWxlbmFtZSBmb3IgZGF0YSBpbiBzZWxmLmZpbGVsaXN0XQogCiAgICAgZGVmIGluZm9saXN0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGNsYXNzIFppcEluZm8gaW5zdGFuY2VzIGZvciBmaWxlcyBpbiB0aGUKQEAgLTk4NSw2ICsxMTQ1LDE0IEBACiAgICAgICAgICAgICBpZiBmaGVhZGVyW19GSF9FWFRSQV9GSUVMRF9MRU5HVEhdOgogICAgICAgICAgICAgICAgIHplZl9maWxlLnJlYWQoZmhlYWRlcltfRkhfRVhUUkFfRklFTERfTEVOR1RIXSkKIAorICAgICAgICAgICAgaWYgemluZm8uZmxhZ19iaXRzICYgMHgyMDoKKyAgICAgICAgICAgICAgICAjIFppcCAyLjc6IGNvbXByZXNzZWQgcGF0Y2hlZCBkYXRhCisgICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiY29tcHJlc3NlZCBwYXRjaGVkIGRhdGEgKGZsYWcgYml0IDUpIikKKworICAgICAgICAgICAgaWYgemluZm8uZmxhZ19iaXRzICYgMHg0MDoKKyAgICAgICAgICAgICAgICAjIHN0cm9uZyBlbmNyeXB0aW9uCisgICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigic3Ryb25nIGVuY3J5cHRpb24gKGZsYWcgYml0IDYpIikKKwogICAgICAgICAgICAgaWYgemluZm8uZmxhZ19iaXRzICYgMHg4MDA6CiAgICAgICAgICAgICAgICAgIyBVVEYtOCBmaWxlbmFtZQogICAgICAgICAgICAgICAgIGZuYW1lX3N0ciA9IGZuYW1lLmRlY29kZSgidXRmLTgiKQpAQCAtMTA1Niw2ICsxMjI0LDIxIEBACiAgICAgICAgIGZvciB6aXBpbmZvIGluIG1lbWJlcnM6CiAgICAgICAgICAgICBzZWxmLmV4dHJhY3QoemlwaW5mbywgcGF0aCwgcHdkKQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9zYW5pdGl6ZV93aW5kb3dzX25hbWUoY2xzLCBhcmNuYW1lLCBwYXRoc2VwKToKKyAgICAgICAgIiIiUmVwbGFjZSBiYWQgY2hhcmFjdGVycyBhbmQgcmVtb3ZlIHRyYWlsaW5nIGRvdHMgZnJvbSBwYXJ0cy4iIiIKKyAgICAgICAgdGFibGUgPSBjbHMuX3dpbmRvd3NfaWxsZWdhbF9uYW1lX3RyYW5zX3RhYmxlCisgICAgICAgIGlmIG5vdCB0YWJsZToKKyAgICAgICAgICAgIGlsbGVnYWwgPSAnOjw+fCI/KicKKyAgICAgICAgICAgIHRhYmxlID0gc3RyLm1ha2V0cmFucyhpbGxlZ2FsLCAnXycgKiBsZW4oaWxsZWdhbCkpCisgICAgICAgICAgICBjbHMuX3dpbmRvd3NfaWxsZWdhbF9uYW1lX3RyYW5zX3RhYmxlID0gdGFibGUKKyAgICAgICAgYXJjbmFtZSA9IGFyY25hbWUudHJhbnNsYXRlKHRhYmxlKQorICAgICAgICAjIHJlbW92ZSB0cmFpbGluZyBkb3RzCisgICAgICAgIGFyY25hbWUgPSAoeC5yc3RyaXAoJy4nKSBmb3IgeCBpbiBhcmNuYW1lLnNwbGl0KHBhdGhzZXApKQorICAgICAgICAjIHJlam9pbiwgcmVtb3ZpbmcgZW1wdHkgcGFydHMuCisgICAgICAgIGFyY25hbWUgPSBwYXRoc2VwLmpvaW4oeCBmb3IgeCBpbiBhcmNuYW1lIGlmIHgpCisgICAgICAgIHJldHVybiBhcmNuYW1lCisKICAgICBkZWYgX2V4dHJhY3RfbWVtYmVyKHNlbGYsIG1lbWJlciwgdGFyZ2V0cGF0aCwgcHdkKToKICAgICAgICAgIiIiRXh0cmFjdCB0aGUgWmlwSW5mbyBvYmplY3QgJ21lbWJlcicgdG8gYSBwaHlzaWNhbAogICAgICAgICAgICBmaWxlIG9uIHRoZSBwYXRoIHRhcmdldHBhdGguCkBAIC0xMDY5LDE2ICsxMjUyLDEyIEBACiAgICAgICAgICMgaW50ZXJwcmV0IGFic29sdXRlIHBhdGhuYW1lIGFzIHJlbGF0aXZlLCByZW1vdmUgZHJpdmUgbGV0dGVyIG9yCiAgICAgICAgICMgVU5DIHBhdGgsIHJlZHVuZGFudCBzZXBhcmF0b3JzLCAiLiIgYW5kICIuLiIgY29tcG9uZW50cy4KICAgICAgICAgYXJjbmFtZSA9IG9zLnBhdGguc3BsaXRkcml2ZShhcmNuYW1lKVsxXQorICAgICAgICBpbnZhbGlkX3BhdGhfcGFydHMgPSAoJycsIG9zLnBhdGguY3VyZGlyLCBvcy5wYXRoLnBhcmRpcikKICAgICAgICAgYXJjbmFtZSA9IG9zLnBhdGguc2VwLmpvaW4oeCBmb3IgeCBpbiBhcmNuYW1lLnNwbGl0KG9zLnBhdGguc2VwKQotICAgICAgICAgICAgICAgICAgICBpZiB4IG5vdCBpbiAoJycsIG9zLnBhdGguY3VyZGlyLCBvcy5wYXRoLnBhcmRpcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHggbm90IGluIGludmFsaWRfcGF0aF9wYXJ0cykKICAgICAgICAgaWYgb3MucGF0aC5zZXAgPT0gJ1xcJzoKICAgICAgICAgICAgICMgZmlsdGVyIGlsbGVnYWwgY2hhcmFjdGVycyBvbiBXaW5kb3dzCi0gICAgICAgICAgICBpbGxlZ2FsID0gJzo8PnwiPyonCi0gICAgICAgICAgICB0YWJsZSA9IHN0ci5tYWtldHJhbnMoaWxsZWdhbCwgJ18nICogbGVuKGlsbGVnYWwpKQotICAgICAgICAgICAgYXJjbmFtZSA9IGFyY25hbWUudHJhbnNsYXRlKHRhYmxlKQotICAgICAgICAgICAgIyByZW1vdmUgdHJhaWxpbmcgZG90cwotICAgICAgICAgICAgYXJjbmFtZSA9ICh4LnJzdHJpcCgnLicpIGZvciB4IGluIGFyY25hbWUuc3BsaXQob3MucGF0aC5zZXApKQotICAgICAgICAgICAgYXJjbmFtZSA9IG9zLnBhdGguc2VwLmpvaW4oeCBmb3IgeCBpbiBhcmNuYW1lIGlmIHgpCisgICAgICAgICAgICBhcmNuYW1lID0gc2VsZi5fc2FuaXRpemVfd2luZG93c19uYW1lKGFyY25hbWUsIG9zLnBhdGguc2VwKQogCiAgICAgICAgIHRhcmdldHBhdGggPSBvcy5wYXRoLmpvaW4odGFyZ2V0cGF0aCwgYXJjbmFtZSkKICAgICAgICAgdGFyZ2V0cGF0aCA9IG9zLnBhdGgubm9ybXBhdGgodGFyZ2V0cGF0aCkKQEAgLTExMDksMTEgKzEyODgsNyBAQAogICAgICAgICBpZiBub3Qgc2VsZi5mcDoKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKICAgICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHdyaXRlIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKLSAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfREVGTEFURUQgYW5kIG5vdCB6bGliOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAotICAgICAgICAgICAgICAgICAgIkNvbXByZXNzaW9uIHJlcXVpcmVzIHRoZSAobWlzc2luZykgemxpYiBtb2R1bGUiKQotICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlIG5vdCBpbiAoWklQX1NUT1JFRCwgWklQX0RFRkxBVEVEKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVGhhdCBjb21wcmVzc2lvbiBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCIpCisgICAgICAgIF9jaGVja19jb21wcmVzc2lvbih6aW5mby5jb21wcmVzc190eXBlKQogICAgICAgICBpZiB6aW5mby5maWxlX3NpemUgPiBaSVA2NF9MSU1JVDoKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9hbGxvd1ppcDY0OgogICAgICAgICAgICAgICAgIHJhaXNlIExhcmdlWmlwRmlsZSgiRmlsZXNpemUgd291bGQgcmVxdWlyZSBaSVA2NCBleHRlbnNpb25zIikKQEAgLTExNTEsNiArMTMyNiw5IEBACiAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IHN0LnN0X3NpemUKICAgICAgICAgemluZm8uZmxhZ19iaXRzID0gMHgwMAogICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkgICAgIyBTdGFydCBvZiBoZWFkZXIgYnl0ZXMKKyAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgICAgICMgQ29tcHJlc3NlZCBkYXRhIGluY2x1ZGVzIGFuIGVuZC1vZi1zdHJlYW0gKEVPUykgbWFya2VyCisgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgogCiAgICAgICAgIHNlbGYuX3dyaXRlY2hlY2soemluZm8pCiAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKQEAgLTExNjQsNiArMTM0Miw3IEBACiAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoRmFsc2UpKQogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgY21wciA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQogICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGZwOgogICAgICAgICAgICAgIyBNdXN0IG92ZXJ3cml0ZSBDUkMgYW5kIHNpemVzIHdpdGggY29ycmVjdCBkYXRhIGxhdGVyCiAgICAgICAgICAgICB6aW5mby5DUkMgPSBDUkMgPSAwCkBAIC0xMTcyLDExICsxMzUxLDYgQEAKICAgICAgICAgICAgIHppcDY0ID0gc2VsZi5fYWxsb3daaXA2NCBhbmQgXAogICAgICAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUgKiAxLjA1ID4gWklQNjRfTElNSVQKICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcih6aXA2NCkpCi0gICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKLSAgICAgICAgICAgICAgICBjbXByID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgIHpsaWIuREVGTEFURUQsIC0xNSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY21wciA9IE5vbmUKICAgICAgICAgICAgIGZpbGVfc2l6ZSA9IDAKICAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICAgYnVmID0gZnAucmVhZCgxMDI0ICogOCkKQEAgLTEyMzUsMTMgKzE0MDksMTUgQEAKICAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAgICMgU3RhcnQgb2YgaGVhZGVyIGRhdGEKICAgICAgICAgaWYgY29tcHJlc3NfdHlwZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBjb21wcmVzc190eXBlCisgICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6CisgICAgICAgICAgICAjIENvbXByZXNzZWQgZGF0YSBpbmNsdWRlcyBhbiBlbmQtb2Ytc3RyZWFtIChFT1MpIG1hcmtlcgorICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDIKIAogICAgICAgICBzZWxmLl93cml0ZWNoZWNrKHppbmZvKQogICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBUcnVlCiAgICAgICAgIHppbmZvLkNSQyA9IGNyYzMyKGRhdGEpICYgMHhmZmZmZmZmZiAgICAgICAjIENSQy0zMiBjaGVja3N1bQotICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKLSAgICAgICAgICAgIGNvID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwKLSAgICAgICAgICAgICAgICAgemxpYi5ERUZMQVRFRCwgLTE1KQorICAgICAgICBjbyA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQorICAgICAgICBpZiBjbzoKICAgICAgICAgICAgIGRhdGEgPSBjby5jb21wcmVzcyhkYXRhKSArIGNvLmZsdXNoKCkKICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBsZW4oZGF0YSkgICAgIyBDb21wcmVzc2VkIHNpemUKICAgICAgICAgZWxzZToKQEAgLTEyOTgsMTggKzE0NzQsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9vZmZzZXQgPSB6aW5mby5oZWFkZXJfb2Zmc2V0CiAKICAgICAgICAgICAgICAgICAgICAgZXh0cmFfZGF0YSA9IHppbmZvLmV4dHJhCisgICAgICAgICAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gMAogICAgICAgICAgICAgICAgICAgICBpZiBleHRyYToKICAgICAgICAgICAgICAgICAgICAgICAgICMgQXBwZW5kIGEgWklQNjQgZmllbGQgdG8gdGhlIGV4dHJhJ3MKICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2RhdGEgPSBzdHJ1Y3QucGFjaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxISCcgKyAnUScqbGVuKGV4dHJhKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgOCpsZW4oZXh0cmEpLCAqZXh0cmEpICsgZXh0cmFfZGF0YQogCi0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0X3ZlcnNpb24gPSBtYXgoNDUsIHppbmZvLmV4dHJhY3RfdmVyc2lvbikKLSAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZV92ZXJzaW9uID0gbWF4KDQ1LCB6aW5mby5jcmVhdGVfdmVyc2lvbikKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RfdmVyc2lvbiA9IHppbmZvLmV4dHJhY3RfdmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlX3ZlcnNpb24gPSB6aW5mby5jcmVhdGVfdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBaSVA2NF9WRVJTSU9OCiAKKyAgICAgICAgICAgICAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfQlpJUDI6CisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fdmVyc2lvbiA9IG1heChCWklQMl9WRVJTSU9OLCBtaW5fdmVyc2lvbikKKyAgICAgICAgICAgICAgICAgICAgZWxpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICAgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBtYXgoTFpNQV9WRVJTSU9OLCBtaW5fdmVyc2lvbikKKworICAgICAgICAgICAgICAgICAgICBleHRyYWN0X3ZlcnNpb24gPSBtYXgobWluX3ZlcnNpb24sIHppbmZvLmV4dHJhY3RfdmVyc2lvbikKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlX3ZlcnNpb24gPSBtYXgobWluX3ZlcnNpb24sIHppbmZvLmNyZWF0ZV92ZXJzaW9uKQogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgZmxhZ19iaXRzID0gemluZm8uX2VuY29kZUZpbGVuYW1lRmxhZ3MoKQogICAgICAgICAgICAgICAgICAgICAgICAgY2VudGRpciA9IHN0cnVjdC5wYWNrKHN0cnVjdENlbnRyYWxEaXIsCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvUkVBRE1FLnR4dCBiL01hYy9CdWlsZFNjcmlwdC9SRUFETUUudHh0CmluZGV4IDNhZTYzOGYuLmZhMDRiOTcgMTAwNjQ0Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9SRUFETUUudHh0CisrKyBiL01hYy9CdWlsZFNjcmlwdC9SRUFETUUudHh0CkBAIC04LDM1ICs4LDM2IEBACiBhbiBJbnN0YWxsZXIgcGFja2FnZSBmcm9tIHRoZSBpbnN0YWxsYXRpb24gcGx1cyBvdGhlciBmaWxlcyBpbiBgYHJlc291cmNlc2BgIAogYW5kIGBgc2NyaXB0c2BgIGFuZCBwbGFjZWQgdGhhdCBvbiBhIGBgLmRtZ2BgIGRpc2sgaW1hZ2UuCiAKLUZvciBQeXRob24gMi43LnggYW5kIDMuMi54LCBQU0YgcHJhY3RpY2UgaXMgdG8gYnVpbGQgdHdvIGluc3RhbGxlciB2YXJpYW50cworQXMgb2YgUHl0aG9uIDMuMy4wLCBQU0YgcHJhY3RpY2UgaXMgdG8gYnVpbGQgdHdvIGluc3RhbGxlciB2YXJpYW50cwogZm9yIGVhY2ggcmVsZWFzZS4KIAogMS4gIDMyLWJpdC1vbmx5LCBpMzg2IGFuZCBQUEMgdW5pdmVyc2FsLCBjYXBhYmxlIG9uIHJ1bm5pbmcgb24gYWxsIG1hY2hpbmVzCi0gICAgc3VwcG9ydGVkIGJ5IE1hYyBPUyBYIDEwLjMuOSB0aHJvdWdoIChhdCBsZWFzdCkgMTAuODo6CisgICAgc3VwcG9ydGVkIGJ5IE1hYyBPUyBYIDEwLjUgdGhyb3VnaCAoYXQgbGVhc3QpIDEwLjg6OgogCiAgICAgICAgIC91c3IvYmluL3B5dGhvbiBidWlsZC1pbnN0YWxsZXIucHkgXAotICAgICAgICAgICAgLS1zZGstcGF0aD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrIFwKKyAgICAgICAgICAgIC0tc2RrLXBhdGg9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjUuc2RrIFwKICAgICAgICAgICAgIC0tdW5pdmVyc2FsLWFyY2hzPTMyLWJpdCBcCi0gICAgICAgICAgICAtLWRlcC10YXJnZXQ9MTAuMyAKKyAgICAgICAgICAgIC0tZGVwLXRhcmdldD0xMC41CiAKICAgICAtIGJ1aWxkcyB0aGUgZm9sbG93aW5nIHRoaXJkLXBhcnR5IGxpYnJhcmllcwogCi0gICAgICAgICogQnppcDIKLSAgICAgICAgKiBOQ3Vyc2VzCi0gICAgICAgICogR05VIFJlYWRsaW5lIChHUEwpCisgICAgICAgICogTkN1cnNlcyA1LjkgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNTAzNykKICAgICAgICAgKiBTUUxpdGUgMy43LjEzCi0gICAgICAgICogWmxpYiAxLjIuMwotICAgICAgICAqIE9yYWNsZSBTbGVlcHljYXQgREIgNC44IChQeXRob24gMi54IG9ubHkpCisgICAgICAgICogWFogNS4wLjMKKworICAgIC0gdXNlcyBzeXN0ZW0tc3VwcGxpZWQgdmVyc2lvbnMgb2YgdGhpcmQtcGFydHkgbGlicmFyaWVzCisKKyAgICAgICAgKiByZWFkbGluZSBtb2R1bGUgbGlua3Mgd2l0aCBBcHBsZSBCU0QgZWRpdGxpbmUgKGxpYmVkaXQpCiAKICAgICAtIHJlcXVpcmVzIEFjdGl2ZVN0YXRlIGBgVGNsL1RrIDguNGBgIChjdXJyZW50bHkgOC40LjE5KSB0byBiZSBpbnN0YWxsZWQgZm9yIGJ1aWxkaW5nCiAKICAgICAtIHJlY29tbWVuZGVkIGJ1aWxkIGVudmlyb25tZW50OgotICAgICAgICAKLSAgICAgICAgKiBNYWMgT1MgWCAxMC41LjggUFBDIG9yIEludGVsCisKKyAgICAgICAgKiBNYWMgT1MgWCAxMC41LjggSW50ZWwgb3IgUFBDCiAgICAgICAgICogWGNvZGUgMy4xLjQKLSAgICAgICAgKiBgYE1hY09TWDEwLjR1YGAgU0RLIChsYXRlciBTREtzIGRvIG5vdCBzdXBwb3J0IFBQQyBHMyBwcm9jZXNzb3JzKQotICAgICAgICAqIGBgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPTEwLjNgYAotICAgICAgICAqIEFwcGxlIGBgZ2NjLTQuMGBgCisgICAgICAgICogYGBNYWNPU1gxMC41YGAgU0RLCisgICAgICAgICogYGBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9MTAuNWBgCisgICAgICAgICogQXBwbGUgYGBnY2MtNC4yYGAKICAgICAgICAgKiBzeXN0ZW0gUHl0aG9uIDIuNSBmb3IgZG9jdW1lbnRhdGlvbiBidWlsZCB3aXRoIFNwaGlueAogCiAgICAgLSBhbHRlcm5hdGUgYnVpbGQgZW52aXJvbm1lbnRzOgpAQCAtNDUsNyArNDYsNiBAQAogICAgICAgICAgICAgLSBuZWVkIHRvIGNoYW5nZSBgYC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL3tUY2wsVGt9LmZyYW1ld29yay9WZXJzaW9uL0N1cnJlbnRgYCB0byBgYDguNGBgCiAgICAgICAgICogTm90ZSBYY29kZSA0LiogZG9lcyBub3Qgc3VwcG9ydCBidWlsZGluZyBmb3IgUFBDIHNvIGNhbm5vdCBiZSB1c2VkIGZvciB0aGlzIGJ1aWxkCiAKLQogMi4gIDY0LWJpdCAvIDMyLWJpdCwgeDg2XzY0IGFuZCBpMzg2IHVuaXZlcnNhbCwgZm9yIE9TIFggMTAuNiAoYW5kIGxhdGVyKTo6CiAKICAgICAgICAgL3Vzci9iaW4vcHl0aG9uIGJ1aWxkLWluc3RhbGxlci5weSBcCkBAIC01Nyw2ICs1Nyw3IEBACiAKICAgICAgICAgKiBOQ3Vyc2VzIDUuOSAoaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE1MDM3KQogICAgICAgICAqIFNRTGl0ZSAzLjcuMTMKKyAgICAgICAgKiBYWiA1LjAuMwogCiAgICAgLSB1c2VzIHN5c3RlbS1zdXBwbGllZCB2ZXJzaW9ucyBvZiB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMKIApAQCAtODEsMTIgKzgyLDUzIEBACiAgICAgICAgICAgY29uc2lkZXJlZCBhIG1pZ3JhdGlvbiBhaWQgYnkgQXBwbGUgYW5kIGlzIG5vdCBsaWtlbHkgdG8gYmUgZml4ZWQsCiAgICAgICAgICAgaXRzIHVzZSBzaG91bGQgYmUgYXZvaWRlZC4gIFRoZSBvdGhlciBjb21waWxlciwgYGBjbGFuZ2BgLCBoYXMgYmVlbgogICAgICAgICAgIHVuZGVyZ29pbmcgcmFwaWQgZGV2ZWxvcG1lbnQuICBXaGlsZSBpdCBhcHBlYXJzIHRvIGhhdmUgYmVjb21lCi0gICAgICAgICAgcHJvZHVjdGlvbi1yZWFkeSBpbiB0aGUgbW9zdCByZWNlbnQgWGNvZGUgNCByZWxlYXNlcyAoWGNvZGUgNC41LngKKyAgICAgICAgICBwcm9kdWN0aW9uLXJlYWR5IGluIHRoZSBtb3N0IHJlY2VudCBYY29kZSA0IHJlbGVhc2VzIChYY29kZSA0LjQuMQogICAgICAgICAgIGFzIG9mIHRoaXMgd3JpdGluZyksIHRoZXJlIGFyZSBzdGlsbCBzb21lIG9wZW4gaXNzdWVzIHdoZW4KICAgICAgICAgICBidWlsZGluZyBQeXRob24gYW5kIHRoZXJlIGhhcyBub3QgeWV0IGJlZW4gdGhlIGxldmVsIG9mIGV4cG9zdXJlIGluCiAgICAgICAgICAgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgdGhhdCB0aGUgWGNvZGUgMyBnY2MtNC4yIGNvbXBpbGVyIGhhcyBoYWQuCiAKIAorKiAgIEZvciBQeXRob24gMi43LnggYW5kIDMuMi54LCB0aGUgMzItYml0LW9ubHkgaW5zdGFsbGVyIHdhcyBjb25maWd1cmVkIHRvCisgICAgc3VwcG9ydCBNYWMgT1MgWCAxMC4zLjkgdGhyb3VnaCAoYXQgbGVhc3QpIDEwLjYuICBCZWNhdXNlIGl0IGlzCisgICAgYmVsaWV2ZWQgdGhhdCB0aGVyZSBhcmUgZmV3IHN5c3RlbXMgc3RpbGwgcnVubmluZyBPUyBYIDEwLjMgb3IgMTAuNAorICAgIGFuZCBiZWNhdXNlIGl0IGhhcyBiZWNvbWUgaW5jcmVhc2luZ2x5IGRpZmZpY3VsdCB0byB0ZXN0IGFuZAorICAgIHN1cHBvcnQgdGhlIGRpZmZlcmVuY2VzIGluIHRoZXNlIGVhcmxpZXIgc3lzdGVtcywgYXMgb2YgUHl0aG9uIDMuMy4wIHRoZSBQU0YKKyAgICAzMi1iaXQgaW5zdGFsbGVyIG5vIGxvbmdlciBzdXBwb3J0cyB0aGVtLiAgRm9yIHJlZmVyZW5jZSBpbiBidWlsZGluZyBzdWNoCisgICAgYW4gaW5zdGFsbGVyIHlvdXJzZWxmLCB0aGUgZGV0YWlscyBhcmU6OgorCisgICAgICAgIC91c3IvYmluL3B5dGhvbiBidWlsZC1pbnN0YWxsZXIucHkgXAorICAgICAgICAgICAgLS1zZGstcGF0aD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrIFwKKyAgICAgICAgICAgIC0tdW5pdmVyc2FsLWFyY2hzPTMyLWJpdCBcCisgICAgICAgICAgICAtLWRlcC10YXJnZXQ9MTAuMyAKKworICAgIC0gYnVpbGRzIHRoZSBmb2xsb3dpbmcgdGhpcmQtcGFydHkgbGlicmFyaWVzCisKKyAgICAgICAgKiBCemlwMgorICAgICAgICAqIE5DdXJzZXMKKyAgICAgICAgKiBHTlUgUmVhZGxpbmUgKEdQTCkKKyAgICAgICAgKiBTUUxpdGUgMworICAgICAgICAqIFhaCisgICAgICAgICogWmxpYiAxLjIuMworICAgICAgICAqIE9yYWNsZSBTbGVlcHljYXQgREIgNC44IChQeXRob24gMi54IG9ubHkpCisKKyAgICAtIHJlcXVpcmVzIEFjdGl2ZVN0YXRlIGBgVGNsL1RrIDguNGBgIChjdXJyZW50bHkgOC40LjE5KSB0byBiZSBpbnN0YWxsZWQgZm9yIGJ1aWxkaW5nCisKKyAgICAtIHJlY29tbWVuZGVkIGJ1aWxkIGVudmlyb25tZW50OgorICAgICAgICAKKyAgICAgICAgKiBNYWMgT1MgWCAxMC41LjggUFBDIG9yIEludGVsCisgICAgICAgICogWGNvZGUgMy4xLjQgKG9yIGxhdGVyKQorICAgICAgICAqIGBgTWFjT1NYMTAuNHVgYCBTREsgKGxhdGVyIFNES3MgZG8gbm90IHN1cHBvcnQgUFBDIEczIHByb2Nlc3NvcnMpCisgICAgICAgICogYGBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9MTAuM2BgCisgICAgICAgICogQXBwbGUgYGBnY2MtNC4wYGAKKyAgICAgICAgKiBzeXN0ZW0gUHl0aG9uIDIuNSBmb3IgZG9jdW1lbnRhdGlvbiBidWlsZCB3aXRoIFNwaGlueAorCisgICAgLSBhbHRlcm5hdGUgYnVpbGQgZW52aXJvbm1lbnRzOgorCisgICAgICAgICogTWFjIE9TIFggMTAuNi44IHdpdGggWGNvZGUgMy4yLjYKKyAgICAgICAgICAgIC0gbmVlZCB0byBjaGFuZ2UgYGAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy97VGNsLFRrfS5mcmFtZXdvcmsvVmVyc2lvbi9DdXJyZW50YGAgdG8gYGA4LjRgYAorCisKKwogR2VuZXJhbCBQcmVyZXF1aXNpdGVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvTWFjL01ha2VmaWxlLmluIGIvTWFjL01ha2VmaWxlLmluCmluZGV4IGUxZDNkMGMuLjM1NGMxZmQgMTAwNjQ0Ci0tLSBhL01hYy9NYWtlZmlsZS5pbgorKysgYi9NYWMvTWFrZWZpbGUuaW4KQEAgLTcxLDcgKzcxLDcgQEAKIAlmb3IgZm4gaW4gcHl0aG9uMyBweXRob253MyBpZGxlMyBweWRvYzMgcHl0aG9uMy1jb25maWcgXAogCQkgIHB5dGhvbiQoVkVSU0lPTikgcHl0aG9udyQoVkVSU0lPTikgaWRsZSQoVkVSU0lPTikgXAogCQkgIHB5ZG9jJChWRVJTSU9OKSBweXRob24kKFZFUlNJT04pLWNvbmZpZyAydG8zIFwKLQkJICAydG8zLSQoVkVSU0lPTikgO1wKKwkJICAydG8zLSQoVkVSU0lPTikgcHl2ZW52IHB5dmVudi0kKFZFUlNJT04pIDtcCiAJZG8gXAogCQlsbiAtZnMgIiQocHJlZml4KS9iaW4vJCR7Zm59IiAiJChERVNURElSKSQoRlJBTUVXT1JLVU5JWFRPT0xTUFJFRklYKS9iaW4vJCR7Zm59IiA7XAogCWRvbmUKQEAgLTkyLDcgKzkyLDcgQEAKIAkJJChJTlNUQUxMKSAtZCAtbSAkKERJUk1PREUpICIkKERFU1RESVIpJChGUkFNRVdPUktVTklYVE9PTFNQUkVGSVgpL2JpbiIgO1wKIAlmaQogCWZvciBmbiBpbiBweXRob24kKFZFUlNJT04pIHB5dGhvbnckKFZFUlNJT04pIGlkbGUkKFZFUlNJT04pIFwKLQkJICBweWRvYyQoVkVSU0lPTikgcHl0aG9uJChWRVJTSU9OKS1jb25maWcgMnRvMy0kKFZFUlNJT04pO1wKKwkJICBweWRvYyQoVkVSU0lPTikgcHl0aG9uJChWRVJTSU9OKS1jb25maWcgMnRvMy0kKFZFUlNJT04pIHB5dmVudi0kKFZFUlNJT04pIDtcCiAJZG8gXAogCQlsbiAtZnMgIiQocHJlZml4KS9iaW4vJCR7Zm59IiAiJChERVNURElSKSQoRlJBTUVXT1JLVU5JWFRPT0xTUFJFRklYKS9iaW4vJCR7Zm59IiA7XAogCWRvbmUKZGlmZiAtLWdpdCBhL01hYy9SRUFETUUgYi9NYWMvUkVBRE1FCmluZGV4IDBiOTA2ZjEuLjkwMWEzMjQgMTAwNjQ0Ci0tLSBhL01hYy9SRUFETUUKKysrIGIvTWFjL1JFQURNRQpAQCAtMSw2ICsxLDEzIEBACi09PT09PT09PT09PT0KLU1hY09TWCBOb3RlcwotPT09PT09PT09PT09Cis9PT09PT09PT09PT09PT09PT09PT09PT09CitQeXRob24gb24gTWFjIE9TIFggUkVBRE1FCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKKzpBdXRob3JzOgorICAgIEphY2sgSmFuc2VuICgyMDA0LTA3KSwKKyAgICBSb25hbGQgT3Vzc29yZW4gKDIwMTAtMDQpLAorICAgIE5lZCBEZWlseSAoMjAxMi0wNikKKworOlZlcnNpb246IDMuMy4wCiAKIFRoaXMgZG9jdW1lbnQgcHJvdmlkZXMgYSBxdWljayBvdmVydmlldyBvZiBzb21lIE1hYyBPUyBYIHNwZWNpZmljIGZlYXR1cmVzIGluCiB0aGUgUHl0aG9uIGRpc3RyaWJ1dGlvbi4KQEAgLTEyLDExICsxOSwxMSBAQAogICBfYEJ1aWxkaW5nIGFuZCB1c2luZyBhIGZyYW1ld29yay1iYXNlZCBQeXRob24gb24gTWFjIE9TIFhgIGZvciBtb3JlIAogICBpbmZvcm1hdGlvbiBvbiBmcmFtZXdvcmtzLgogCi0gIElmIHRoZSBvcHRpb25hbCBkaXJlY3RvcnkgYXJndW1lbnQgaXMgc3BlY2lmaWVkIHRoZSBmcmFtZXdvcmsgaXQgaW5zdGFsbGVkCisgIElmIHRoZSBvcHRpb25hbCBkaXJlY3RvcnkgYXJndW1lbnQgaXMgc3BlY2lmaWVkIHRoZSBmcmFtZXdvcmsgaXMgaW5zdGFsbGVkCiAgIGludG8gdGhhdCBkaXJlY3RvcnkuIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5zdGFsbCBhIHB5dGhvbiBmcmFtZXdvcmsgaW50bwogICB5b3VyIGhvbWUgZGlyZWN0b3J5OjoKIAotICAgICAkIGNvbmZpZ3VyZSAtLWVuYWJsZS1mcmFtZXdvcms9L1VzZXJzL3JvbmFsZC9MaWJyYXJ5L0ZyYW1ld29ya3MKKyAgICAgJCAuL2NvbmZpZ3VyZSAtLWVuYWJsZS1mcmFtZXdvcms9L1VzZXJzL3JvbmFsZC9MaWJyYXJ5L0ZyYW1ld29ya3MKICAgICAgJCBtYWtlICYmIG1ha2UgaW5zdGFsbAogCiAgIFRoaXMgd2lsbCBpbnN0YWxsIHRoZSBmcmFtZXdvcmsgaXRzZWxmIGluIGBgL1VzZXJzL3JvbmFsZC9MaWJyYXJ5L0ZyYW1ld29ya3NgYCwKQEAgLTMzLDkgKzQwLDEwIEBACiAgIENyZWF0ZSBhIHVuaXZlcnNhbCBiaW5hcnkgYnVpbGQgb2YgUHl0aG9uLiBUaGlzIGNhbiBiZSB1c2VkIHdpdGggYm90aAogICByZWd1bGFyIGFuZCBmcmFtZXdvcmsgYnVpbGRzLgogCi0gIFRoZSBvcHRpb25hbCBhcmd1bWVudCBzcGVjaWZpZXMgd2hpY2ggT1NYIFNESyBzaG91bGQgYmUgdXNlZCB0byBwZXJmb3JtIHRoZQotICBidWlsZC4gVGhpcyBkZWZhdWx0cyB0byBgYC9EZXZlbG9wZXIvU0RLcy9NYWNPU1guMTAuNHUuc2RrYGAsIHNwZWNpZnkgCi0gIGBgL2BgIHdoZW4gYnVpbGRpbmcgb24gYSAxMC41IHN5c3RlbSwgZXNwZWNpYWxseSB3aGVuIGJ1aWxkaW5nIDY0LWJpdCBjb2RlLgorICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgc3BlY2lmaWVzIHdoaWNoIE9TIFggU0RLIHNob3VsZCBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlCisgIGJ1aWxkLiAgSWYgeGNvZGVidWlsZCBpcyBhdmFpbGFibGUgYW5kIGNvbmZpZ3VyZWQsIHRoaXMgZGVmYXVsdHMgdG8KKyAgdGhlIFhjb2RlIGRlZmF1bHQgTWFjT1MgWCBTREssIG90aGVyd2lzZSBgYC9EZXZlbG9wZXIvU0RLcy9NYWNPU1guMTAuNHUuc2RrYGAKKyAgaWYgYXZhaWxhYmxlIG9yIGBgL2BgIGlmIG5vdC4KIAogICBTZWUgdGhlIHNlY3Rpb24gX2BCdWlsZGluZyBhbmQgdXNpbmcgYSB1bml2ZXJzYWwgYmluYXJ5IG9mIFB5dGhvbiBvbiBNYWMgT1MgWGAKICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCkBAIC00Myw3ICs1MSw5IEBACiAqIGBgLS13aXRoLXVuaXZlcmFsLWFyY2hzPVZBTFVFYGAKIAogICBTcGVjaWZ5IHRoZSBraW5kIG9mIHVuaXZlcnNhbCBiaW5hcnkgdGhhdCBzaG91bGQgYmUgY3JlYXRlZC4gVGhpcyBvcHRpb24gaXMgCi0gIG9ubHkgdmFsaWQgd2hlbiBgYC0tZW5hYmxlLXVuaXZlcnNhbHNka2BgIGlzIHNwZWNpZmllZC4KKyAgb25seSB2YWxpZCB3aGVuIGBgLS1lbmFibGUtdW5pdmVyc2Fsc2RrYGAgaXMgc3BlY2lmaWVkLiAgVGhlIGRlZmF1bHQgaXMKKyAgYGAzMi1iaXRgYCBpZiBhIGJ1aWxkaW5nIHdpdGggYSBTREsgdGhhdCBzdXBwb3J0cyBQUEMsIG90aGVyd2lzZSBkZWZhdWx0cworICB0byBgYGludGVsYGAuCiAKIAogQnVpbGRpbmcgYW5kIHVzaW5nIGEgdW5pdmVyc2FsIGJpbmFyeSBvZiBQeXRob24gb24gTWFjIE9TIFgKQEAgLTUyLDkgKzYyLDE0IEBACiAxLiBXaGF0IGlzIGEgdW5pdmVyc2FsIGJpbmFyeQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQSB1bml2ZXJzYWwgYmluYXJ5IGJ1aWxkIG9mIFB5dGhvbiBjb250YWlucyBvYmplY3QgY29kZSBmb3IgYm90aCBQUEMgYW5kIGkzODYKLWFuZCBjYW4gdGhlcmVmb3JlIHJ1biBhdCBuYXRpdmUgc3BlZWQgb24gYm90aCBjbGFzc2ljIHBvd2VycGMgYmFzZWQgbWFjcyBhbmQKLXRoZSBuZXdlciBpbnRlbCBiYXNlZCBtYWNzLgorQSB1bml2ZXJzYWwgYmluYXJ5IGJ1aWxkIG9mIFB5dGhvbiBjb250YWlucyBvYmplY3QgY29kZSBmb3IgbW9yZSB0aGFuIG9uZQorQ1BVIGFyY2hpdGVjdHVyZS4gIEEgdW5pdmVyc2FsIE9TIFggZXhlY3V0YWJsZSBmaWxlIG9yIGxpYnJhcnkgY29tYmluZXMgdGhlCithcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSBpbnRvIG9uZSBmaWxlIGFuZCBjYW4gdGhlcmVmb3JlIHJ1biBhdCBuYXRpdmUKK3NwZWVkIG9uIGFsbCBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcy4gIFVuaXZlcnNhbCBmaWxlcyB3ZXJlIGludHJvZHVjZWQgaW4KK09TIFggMTAuNCB0byBhZGQgc3VwcG9ydCBmb3IgSW50ZWwtYmFzZWQgTWFjcyB0byB0aGUgZXhpc3RpbmcgUG93ZXJQQyAoUFBDKQorbWFjaGluZXMuICBJbiBPUyBYIDEwLjUgc3VwcG9ydCB3YXMgZXh0ZW5kZWQgdG8gNjQtYml0IEludGVsIGFuZCA2NC1iaXQgUFBDCithcmNoaXRlY3R1cmVzLiAgSXQgaXMgcG9zc2libGUgdG8gYnVpbGQgUHl0aG9uIHdpdGggdmFyaW91cyBjb21iaW5hdGlvbnMKK29mIGFyY2hpdGVjdHVyZXMgZGVwZW5kaW5nIG9uIHRoZSBidWlsZCB0b29scyBhbmQgT1MgWCB2ZXJzaW9uIGluIHVzZS4KIAogMi4gSG93IGRvIEkgYnVpbGQgYSB1bml2ZXJzYWwgYmluYXJ5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTY3LDM4ICs4Miw1NSBAQAogICAkIG1ha2UgaW5zdGFsbAogCiBUaGlzIGZsYWcgY2FuIGJlIHVzZWQgd2l0aCBhIGZyYW1ld29yayBidWlsZCBvZiBweXRob24sIGJ1dCBhbHNvIHdpdGggYSBjbGFzc2ljCi11bml4IGJ1aWxkLiBFaXRoZXIgd2F5IHlvdSB3aWxsIGhhdmUgdG8gYnVpbGQgcHl0aG9uIG9uIE1hYyBPUyBYIDEwLjQgKG9yIGxhdGVyKQotd2l0aCBYY29kZSAyLjEgKG9yIGxhdGVyKS4gWW91IGFsc28gaGF2ZSB0byBpbnN0YWxsIHRoZSAxMC40dSBTREsgd2hlbiAKLWluc3RhbGxpbmcgWGNvZGUuCit1bml4IGJ1aWxkLiBVbml2ZXJzYWwgYnVpbGRzIHdlcmUgZmlyc3Qgc3VwcG9ydGVkIHdpdGggT1MgWCAxMC40IHdpdGggWGNvZGUgMi4xCithbmQgdGhlIDEwLjR1IFNESy4gIFN0YXJ0aW5nIHdpdGggWGNvZGUgMyBhbmQgT1MgWCAxMC41LCBtb3JlIGNvbmZpZ3VyYXRpb25zIGFyZQorYXZhaWxhYmxlLgogCi0yLjEgRmxhdm91cnMgb2YgdW5pdmVyc2FsIGJpbmFyaWVzCi0uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisyLjEgRmxhdm9ycyBvZiB1bml2ZXJzYWwgYmluYXJpZXMKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogCi1JdCBpcyBwb3NzaWJsZSB0byBidWlsZCBhIG51bWJlciBvZiBmbGF2b3VycyBvZiB0aGUgdW5pdmVyc2FsIGJpbmFyeSBidWlsZCwKLXRoZSBkZWZhdWx0IGlzIGEgMzItYml0IG9ubHkgYmluYXJ5IChpMzg2IGFuZCBwcGMpLiBUaGUgZmxhdm91ciBjYW4gYmUKLXNwZWNpZmllZCB1c2luZyB0aGUgb3B0aW9uIGBgLS13aXRoLXVuaXZlcnNhbC1hcmNocz1WQUxVRWBgLiBUaGUgZm9sbG93aW5nCitJdCBpcyBwb3NzaWJsZSB0byBidWlsZCBhIG51bWJlciBvZiBmbGF2b3JzIG9mIHRoZSB1bml2ZXJzYWwgYmluYXJ5IGJ1aWxkLAordGhlIGRlZmF1bHQgaXMgYSAzMi1iaXQgb25seSBiaW5hcnkgKGkzODYgYW5kIHBwYykgaW4gYnVpbGQgZW52aXJvbm1lbnRzIHRoYXQKK3N1cHBvcnQgcHBjICgxMC40IHdpdGggWGNvZGUgMiwgMTAuNSBhbmQgMTAuNiB3aXRoIFhjb2RlIDMpIG9yIGFuCitJbnRlbC0zMi8tNjQtYml0IGJpbmFyeSAoaTM4NiBhbmQgWDg2XzY0KSBpbiBidWlsZCBlbnZpcm9ubWVudHMgdGhhdCBkbyBub3QKK3N1cHBvcnQgcHBjIChYY29kZSA0IG9uIDEwLjYgYW5kIGxhdGVyIHN5c3RlbXMpLiAgVGhlIGZsYXZvciBjYW4gYmUgc3BlY2lmaWVkCit1c2luZyB0aGUgY29uZmlndXJlIG9wdGlvbiBgYC0td2l0aC11bml2ZXJzYWwtYXJjaHM9VkFMVUVgYC4gVGhlIGZvbGxvd2luZwogdmFsdWVzIGFyZSBhdmFpbGFibGU6CiAKKyAgKiBgYGludGVsYGA6CSAgYGBpMzg2YGAsIGBgeDg2XzY0YGAKKwogICAqIGBgMzItYml0YGA6ICAgYGBwcGNgYCwgYGBpMzg2YGAKIAorICAqIGBgMy13YXlgYDoJICBgYGkzODZgYCwgYGB4ODZfNjRgYCwgYGBwcGNgYAorCiAgICogYGA2NC1iaXRgYDogICBgYHBwYzY0YGAsIGBgeDg2XzY0YGAKIAogICAqIGBgYWxsYGA6ICAgICAgYGBwcGNgYCwgYGBwcGM2NGBgLCBgYGkzODZgYCwgYGB4ODZfNjRgYAogCi0gICogYGAzLXdheWBgOgkgIGBgcHBjYGAsIGBgaTM4NmBgIGFuZCBgYHg4Nl82NGBgCi0KLSAgKiBgYGludGVsYGA6CSAgYGBpMzg2YGAsIGBgeDg2XzY0YGAKLQogVG8gYnVpbGQgYSB1bml2ZXJzYWwgYmluYXJ5IHRoYXQgaW5jbHVkZXMgYSA2NC1iaXQgYXJjaGl0ZWN0dXJlLCB5b3UgbXVzdCBidWlsZAotb24gYSBzeXN0ZW0gcnVubmluZyBPU1ggMTAuNSBvciBsYXRlci4gVGhlIGBgYWxsYGAgZmxhdm91ciBjYW4gb25seSBiZSBidWlsdCBvbgotT1NYIDEwLjUuCitvbiBhIHN5c3RlbSBydW5uaW5nIE9TIFggMTAuNSBvciBsYXRlci4gIFRoZSBgYGFsbGBgIGFuZCBgYDY0LWJpdGBgIGZsYXZvcnMgY2FuCitvbmx5IGJlIGJ1aWx0IHdpdGggYW4gMTAuNSBTREsgYmVjYXVzZSBgYHBwYzY0YGAgc3VwcG9ydCB3YXMgb25seSBpbmNsdWRlZCB3aXRoCitPUyBYIDEwLjUuICBBbHRob3VnaCBsZWdhY3kgYGBwcGNgYCBzdXBwb3J0IHdhcyBpbmNsdWRlZCB3aXRoIFhjb2RlIDMgb24gT1MgWAorMTAuNiwgaXQgd2FzIHJlbW92ZWQgaW4gWGNvZGUgNCwgdmVyc2lvbnMgb2Ygd2hpY2ggd2VyZSByZWxlYXNlZCBvbiBPUyBYIDEwLjYKK2FuZCB3aGljaCBpcyB0aGUgY3VycmVudCBzdGFuZGFyZCBmb3IgT1MgWCAxMC43IGFuZCAxMC44LiAgVG8gc3VtbWFyaXplLCB0aGUKK2ZvbGxvd2luZyBjb21iaW5hdGlvbnMgb2YgU0RLcyBhbmQgdW5pdmVyc2FsLWFyY2hzIGZsYXZvcnMgYXJlIGF2YWlsYWJsZToKIAotVGhlIG1ha2VmaWxlIGZvciBhIGZyYW1ld29yayBidWlsZCB3aWxsIGluc3RhbGwgYGBweXRob24zMmBgIGFuZCBgYHB5dGhvbnczMmBgIAotYmluYXJpZXMgd2hlbiB0aGUgdW5pdmVyc2FsIGFyY2hpdGVjdXJlcyBpbmNsdWRlcyBhdCBsZWFzdCBvbmUgMzItYml0IGFyY2hpdGVjdHVyZQotKHRoYXQgaXMsIGZvciBhbGwgZmxhdm91cnMgYnV0IGBgNjQtYml0YGApLgorICAqIDEwLjR1IFNESyB3aXRoIFhjb2RlIDIgc3VwcG9ydHMgYGAzMi1iaXRgYCBvbmx5CiAKLVJ1bm5pbmcgYSBzcGVjaWZpYyBhcmNoaWN0dXJlCi0uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorICAqIDEwLjUgU0RLIHdpdGggWGNvZGUgMy4xLnggc3VwcG9ydHMgYWxsIGZsYXZvcnMKKworICAqIDEwLjYgU0RLIHdpdGggWGNvZGUgMy4yLnggc3VwcG9ydHMgYGBpbnRlbGBgLCBgYDMtd2F5YGAsIGFuZCBgYDMyLWJpdGBgCisKKyAgKiAxMC42IFNESyB3aXRoIFhjb2RlIDQgc3VwcG9ydHMgYGBpbnRlbGBgIG9ubHkKKworICAqIDEwLjcgYW5kIDEwLjggU0RLcyB3aXRoIFhjb2RlIDQgc3VwcG9ydCBgYGludGVsYGAgb25seQorCitUaGUgbWFrZWZpbGUgZm9yIGEgZnJhbWV3b3JrIGJ1aWxkIHdpbGwgYWxzbyBpbnN0YWxsIGBgcHl0aG9uMy4zLTMyYGAKK2JpbmFyaWVzIHdoZW4gdGhlIHVuaXZlcnNhbCBhcmNoaXRlY3R1cmUgaW5jbHVkZXMgYXQgbGVhc3Qgb25lIDMyLWJpdAorYXJjaGl0ZWN0dXJlICh0aGF0IGlzLCBmb3IgYWxsIGZsYXZvcnMgYnV0IGBgNjQtYml0YGApLgorCitSdW5uaW5nIGEgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlCisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAKIFlvdSBjYW4gcnVuIGNvZGUgdXNpbmcgYSBzcGVjaWZpYyBhcmNoaXRlY3R1cmUgdXNpbmcgdGhlIGBgYXJjaGBgIGNvbW1hbmQ6OgogCkBAIC0xMTMsNiArMTQ1LDE0IEBACiB3cmFwcGVyIHRvb2xzIHRoYXQgZXhlY3V0ZSB0aGUgcmVhbCBpbnRlcnByZXRlciB3aXRob3V0IGVuc3VyaW5nIHRoYXQgdGhlCiByZWFsIGludGVycHJldGVyIHJ1bnMgd2l0aCB0aGUgc2FtZSBhcmNoaXRlY3R1cmUuCiAKK1VzaW5nIGBgYXJjaGBgIGlzIG5vdCBhIHBlcmZlY3Qgc29sdXRpb24gYXMgdGhlIHNlbGVjdGVkIGFyY2hpdGVjdHVyZSB3aWxsCitub3QgYXV0b21hdGljYWxseSBjYXJyeSB0aHJvdWdoIHRvIHN1YnByb2Nlc3NlcyBsYXVuY2hlZCBieSBwcm9ncmFtcyBhbmQgdGVzdHMKK3VuZGVyIHRoYXQgUHl0aG9uLiAgSWYgeW91IHdhbnQgdG8gZW5zdXJlIHRoYXQgUHl0aG9uIGludGVycHJldGVycyBsYXVuY2hlZCBpbgorc3VicHJvY2Vzc2VzIGFsc28gcnVuIGluIDMyLWJpdC1tb2RlIGlmIHRoZSBtYWluIGludGVycHJldGVyIGRvZXMsIHVzZQorYSBgYHB5dGhvbjMuMy0zMmBgIGJpbmFyeSBhbmQgdXNlIHRoZSB2YWx1ZSBvZiBgYHN5cy5leGVjdXRhYmxlYGAgYXMgdGhlCitgYHN1YnByb2Nlc3NgYCBgYFBvcGVuYGAgZXhlY3V0YWJsZSB2YWx1ZS4KKworCiBCdWlsZGluZyBhbmQgdXNpbmcgYSBmcmFtZXdvcmstYmFzZWQgUHl0aG9uIG9uIE1hYyBPUyBYLgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApAQCAtMTIyLDE3ICsxNjIsMTcgQEAKIAogVGhlIG1haW4gcmVhc29uIGlzIGJlY2F1c2UgeW91IHdhbnQgdG8gY3JlYXRlIEdVSSBwcm9ncmFtcyBpbiBQeXRob24uIFdpdGggdGhlCiBleGNlcHRpb24gb2YgWDExL1hEYXJ3aW4tYmFzZWQgR1VJIHRvb2xraXRzIGFsbCBHVUkgcHJvZ3JhbXMgbmVlZCB0byBiZSBydW4gCi1mcm9tIGEgZnVsbGJsb3duIE1hY09TWCBhcHBsaWNhdGlvbiAoYSAiLmFwcCIgYnVuZGxlKS4KK2Zyb20gYSBNYWMgT1NYIGFwcGxpY2F0aW9uIGJ1bmRsZSAoIi5hcHAiKS4KIAogV2hpbGUgaXQgaXMgdGVjaG5pY2FsbHkgcG9zc2libGUgdG8gY3JlYXRlIGEgLmFwcCB3aXRob3V0IHVzaW5nIGZyYW1ld29ya3MgeW91CiB3aWxsIGhhdmUgdG8gZG8gdGhlIHdvcmsgeW91cnNlbGYgaWYgeW91IHJlYWxseSB3YW50IHRoaXMuCiAKIEEgc2Vjb25kIHJlYXNvbiBmb3IgdXNpbmcgZnJhbWV3b3JrcyBpcyB0aGF0IHRoZXkgcHV0IFB5dGhvbi1yZWxhdGVkIGl0ZW1zIGluCiBvbmx5IHR3byBwbGFjZXM6ICIvTGlicmFyeS9GcmFtZXdvcmsvUHl0aG9uLmZyYW1ld29yayIgYW5kIAotIi9BcHBsaWNhdGlvbnMvTWFjUHl0aG9uIDxWRVJTSU9OPiIgd2hlcmUgYGA8VkVSU0lPTj5gYCBjYW4gYmUgZS5nLiAiMi42IiwKLSIzLjEiLCBldGMuLiAgVGhpcyBzaW1wbGlmaWVzIG1hdHRlcnMgZm9yIHVzZXJzIGluc3RhbGxpbmcgCisiL0FwcGxpY2F0aW9ucy9QeXRob24gPFZFUlNJT04+IiB3aGVyZSBgYDxWRVJTSU9OPmBgIGNhbiBiZSBlLmcuICIzLjMiLAorIjIuNyIsIGV0Yy4gIFRoaXMgc2ltcGxpZmllcyBtYXR0ZXJzIGZvciB1c2VycyBpbnN0YWxsaW5nCiBQeXRob24gZnJvbSBhIGJpbmFyeSBkaXN0cmlidXRpb24gaWYgdGhleSB3YW50IHRvIGdldCByaWQgb2YgaXQgYWdhaW4uIE1vcmVvdmVyLAotZHVlIHRvIHRoZSB3YXkgZnJhbWV3b3JrcyB3b3JrIGEgdXNlciB3aXRob3V0IGFkbWluIHByaXZpbGVnZXMgY2FuIGluc3RhbGwgYSAKK2R1ZSB0byB0aGUgd2F5IGZyYW1ld29ya3Mgd29yaywgYSB1c2VyIHdpdGhvdXQgYWRtaW4gcHJpdmlsZWdlcyBjYW4gaW5zdGFsbCBhCiBiaW5hcnkgZGlzdHJpYnV0aW9uIGluIGhpcyBvciBoZXIgaG9tZSBkaXJlY3Rvcnkgd2l0aG91dCByZWNvbXBpbGF0aW9uLgogCiAyLiBIb3cgZG9lcyBhIGZyYW1ld29yayBQeXRob24gZGlmZmVyIGZyb20gYSBub3JtYWwgc3RhdGljIFB5dGhvbj8KQEAgLTE0OCwxOCArMTg4LDI1IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFllcywgcHJvYmFibHkuICBJZiB5b3Ugd2FudCBUa2ludGVyIHN1cHBvcnQgeW91IG5lZWQgdG8gZ2V0IHRoZSBPU1ggQXF1YVRrIAotZGlzdHJpYnV0aW9uLCB0aGlzIGlzIGluc3RhbGxlZCBieSBkZWZhdWx0IG9uIE1hYyBPUyBYIDEwLjQgb3IgbGF0ZXIuIElmCi15b3Ugd2FudCB3eFB5dGhvbiB5b3UgbmVlZCB0byBnZXQgdGhhdC4gSWYgeW91IHdhbnQgQ29jb2EgeW91IG5lZWQgdG8gZ2V0Ci1QeU9iakMuIAorZGlzdHJpYnV0aW9uLCB0aGlzIGlzIGluc3RhbGxlZCBieSBkZWZhdWx0IG9uIE1hYyBPUyBYIDEwLjQgb3IgbGF0ZXIuICBCZQorYXdhcmUsIHRob3VnaCwgdGhhdCB0aGUgQ29jb2EtYmFzZWQgQXF1YVRrJ3Mgc3VwcGxpZWQgc3RhcnRpbmcgd2l0aCBPUyBYCisxMC42IGhhdmUgcHJvdmVuIHRvIGJlIHVuc3RhYmxlLiAgSWYgcG9zc2libGUsIHlvdSBzaG91bGQgY29uc2lkZXIKK2luc3RhbGxpbmcgYSBuZXdlciB2ZXJzaW9uIGJlZm9yZSBidWlsZGluZyBvbiBPUyBYIDEwLjYgb3IgbGF0ZXIsIHN1Y2ggYXMKK3RoZSBBY3RpdmVUY2wgOC41LiAgU2VlIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9tYWMvdGNsdGsvLiAgSWYgeW91CithcmUgYnVpbGRpbmcgd2l0aCBhbiBTREssIGVuc3VyZSB0aGF0IHRoZSBuZXdlciBUY2wgYW5kIFRrIGZyYW1ld29ya3MgYXJlCitzZWVuIGluIHRoZSBTREsncyBgYExpYnJhcnkvRnJhbWV3b3Jrc2BgIGRpcmVjdG9yeTsgeW91IG1heSBuZWVkIHRvCittYW51YWxseSBjcmVhdGUgc3ltbGlua3MgdG8gdGhlaXIgaW5zdGFsbGVkIGxvY2F0aW9uLCBgYC9MaWJyYXJ5L0ZyYW1ld29ya3NgYC4KK0lmIHlvdSB3YW50IHd4UHl0aG9uIHlvdSBuZWVkIHRvIGdldCB0aGF0LgorSWYgeW91IHdhbnQgQ29jb2EgeW91IG5lZWQgdG8gZ2V0IFB5T2JqQy4KIAogNC4gSG93IGRvIEkgYnVpbGQgYSBmcmFtZXdvcmsgUHl0aG9uPwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBhIE1ha2VmaWxlIHRoYXQgd2lsbCBjcmVhdGUgYSBjb3VwbGUgb2YgcHl0aG9uLXJlbGF0ZWQKLWFwcGxpY2F0aW9ucyAoZnVsbGJsb3duIE9TWCAuYXBwIGFwcGxpY2F0aW9ucywgdGhhdCBpcykgaW4KLSIvQXBwbGljYXRpb25zL01hY1B5dGhvbiA8VkVSU0lPTj4iLCBhbmQgYSBoaWRkZW4gaGVscGVyIGFwcGxpY2F0aW9uIFB5dGhvbi5hcHAgCi1pbnNpZGUgdGhlIFB5dGhvbi5mcmFtZXdvcmssIGFuZCB1bml4IHRvb2xzICJweXRob24iIGFuZCAicHl0aG9udyIgaW50byAKLS91c3IvbG9jYWwvYmluLiAgSW4gYWRkaXRpb24gaXQgaGFzIGEgdGFyZ2V0ICJpbnN0YWxsbWFjc3VidHJlZSIgdGhhdCBpbnN0YWxscyAKK2FwcGxpY2F0aW9ucyAoZnVsbC1ibG93biBPU1ggLmFwcCBhcHBsaWNhdGlvbnMsIHRoYXQgaXMpIGluCisiL0FwcGxpY2F0aW9ucy9QeXRob24gPFZFUlNJT04+IiwgYW5kIGEgaGlkZGVuIGhlbHBlciBhcHBsaWNhdGlvbiBQeXRob24uYXBwCitpbnNpZGUgdGhlIFB5dGhvbi5mcmFtZXdvcmssIGFuZCB1bml4IHRvb2xzICJweXRob24iIGFuZCAicHl0aG9udyIgaW50bworL3Vzci9sb2NhbC9iaW4uICBJbiBhZGRpdGlvbiBpdCBoYXMgYSB0YXJnZXQgImluc3RhbGxtYWNzdWJ0cmVlIiB0aGF0IGluc3RhbGxzCiB0aGUgcmVsZXZhbnQgcG9ydGlvbnMgb2YgdGhlIE1hYyBzdWJ0cmVlIGludG8gdGhlIFB5dGhvbi5mcmFtZXdvcmsuCiAKIEl0IGlzIG5vcm1hbGx5IGludm9rZWQgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSBtYWluIE1ha2VmaWxlLCBhcyB0aGUgbGFzdCBzdGVwCkBAIC0xNzEsMTcgKzIxOCwxNSBAQAogIAogIDMuIG1ha2UgaW5zdGFsbAogCi1UaGlzIHNlcXVlbmNlIHdpbGwgcHV0IHRoZSBmcmFtZXdvcmsgaW4gL0xpYnJhcnkvRnJhbWV3b3JrL1B5dGhvbi5mcmFtZXdvcmssCi10aGUgYXBwbGljYXRpb25zIGluICIvQXBwbGljYXRpb25zL01hY1B5dGhvbiA8VkVSU0lPTj4iIGFuZCB0aGUgdW5peCB0b29scyBpbiAKLS91c3IvbG9jYWwvYmluLgorVGhpcyBzZXF1ZW5jZSB3aWxsIHB1dCB0aGUgZnJhbWV3b3JrIGluIGBgL0xpYnJhcnkvRnJhbWV3b3JrL1B5dGhvbi5mcmFtZXdvcmtgYCwKK3RoZSBhcHBsaWNhdGlvbnMgaW4gYGAvQXBwbGljYXRpb25zL1B5dGhvbiA8VkVSU0lPTj5gYCBhbmQgdGhlIHVuaXggdG9vbHMgaW4gCitgYC91c3IvbG9jYWwvYmluYGAuCiAKLUluc3RhbGxpbmcgaW4gYW5vdGhlciBwbGFjZSwgZm9yIGluc3RhbmNlICRIT01FL0xpYnJhcnkvRnJhbWV3b3JrcyBpZiB5b3UgaGF2ZQotbm8gYWRtaW4gcHJpdmlsZWdlcyBvbiB5b3VyIG1hY2hpbmUsIGhhcyBvbmx5IGJlZW4gdGVzdGVkIHZlcnkgbGlnaHRseS4gVGhpcwotY2FuIGJlIGRvbmUgYnkgY29uZmlndXJpbmcgd2l0aCAtLWVuYWJsZS1mcmFtZXdvcms9JEhPTUUvTGlicmFyeS9GcmFtZXdvcmtzLgotVGhlIG90aGVyIHR3byBkaXJlY3RvcmllcywgIi9BcHBsaWNhdGlvbnMvTWFjUHl0aG9uLTxWRVJTSU9OPiIgYW5kCi0vdXNyL2xvY2FsL2Jpbiwgd2lsbCB0aGVuIGFsc28gYmUgZGVwb3NpdGVkIGluICRIT01FLiBUaGlzIGlzIHN1Yi1vcHRpbWFsIGZvcgotdGhlIHVuaXggdG9vbHMsIHdoaWNoIHlvdSB3b3VsZCB3YW50IGluICRIT01FL2JpbiwgYnV0IHRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvCi1maXggdGhpcyByaWdodCBub3cuCitJbnN0YWxsaW5nIGluIGFub3RoZXIgcGxhY2UsIGZvciBpbnN0YW5jZSBgYCRIT01FL0xpYnJhcnkvRnJhbWV3b3Jrc2BgIGlmIHlvdQoraGF2ZSBubyBhZG1pbiBwcml2aWxlZ2VzIG9uIHlvdXIgbWFjaGluZSwgaXMgcG9zc2libGUuIFRoaXMgY2FuIGJlIGFjY29tcGxpc2hlZAorYnkgY29uZmlndXJpbmcgd2l0aCBgYC0tZW5hYmxlLWZyYW1ld29yaz0kSE9NRS9MaWJyYXJ5L0ZyYW1ld29ya3NgYC4KK1RoZSBvdGhlciB0d28gZGlyZWN0b3JpZXMgd2lsbCB0aGVuIGFsc28gYmUgaW5zdGFsbGVkIGluIHlvdXIgaG9tZSBkaXJlY3RvcnksCithdCBgYCRIT01FL0FwcGxpY2F0aW9ucy9QeXRob24tPFZFUlNJT04+YGAgYW5kIGBgJEhPTUUvYmluYGAuCiAKIElmIHlvdSB3YW50IHRvIGluc3RhbGwgc29tZSBwYXJ0LCBidXQgbm90IGFsbCwgcmVhZCB0aGUgbWFpbiBNYWtlZmlsZS4gVGhlCiBmcmFtZXdvcmtpbnN0YWxsIGlzIGNvbXBvc2VkIG9mIGEgY291cGxlIG9mIHN1Yi10YXJnZXRzIHRoYXQgaW5zdGFsbCB0aGUKQEAgLTE4OSw3ICsyMzQsNyBAQAogCiBUaGVyZSBpcyBhbiBleHRyYSB0YXJnZXQgZnJhbWV3b3JraW5zdGFsbGV4dHJhcyB0aGF0IGlzIG5vdCBwYXJ0IG9mIHRoZQogbm9ybWFsIGZyYW1ld29ya2luc3RhbGwgd2hpY2ggaW5zdGFsbHMgdGhlIFRvb2xzIGRpcmVjdG9yeSBpbnRvCi0iL0FwcGxpY2F0aW9ucy9NYWNQeXRob24gPFZFUlNJT04+IiwgdGhpcyBpcyB1c2VmdWwgZm9yIGJpbmFyeQorIi9BcHBsaWNhdGlvbnMvUHl0aG9uIDxWRVJTSU9OPiIsIHRoaXMgaXMgdXNlZnVsIGZvciBiaW5hcnkKIGRpc3RyaWJ1dGlvbnMuCiAKIFdoYXQgZG8gYWxsIHRoZXNlIHByb2dyYW1zIGRvPwpAQCAtMjAyLDI0ICsyNDcsNDEgQEAKIGRvdWJsZS1jbGljayBhIC5weSwgLnB5YyBvciAucHl3IGZpbGUuIEZvciB0aGUgZmlyc3QgdHdvIGl0IGNyZWF0ZXMgYSBUZXJtaW5hbAogd2luZG93IGFuZCBydW5zIHRoZSBzY3JpcHRzIHdpdGggdGhlIG5vcm1hbCBjb21tYW5kLWxpbmUgUHl0aG9uLiBGb3IgdGhlCiBsYXR0ZXIgaXQgcnVucyB0aGUgc2NyaXB0IGluIHRoZSBQeXRob24uYXBwIGludGVycHJldGVyIHNvIHRoZSBzY3JpcHQgY2FuIGRvCi1HVUktdGhpbmdzLiBLZWVwIHRoZSAiYWx0IiBrZXkgZGVwcmVzc2VkIHdoaWxlIGRyYWdnaW5nIG9yIGRvdWJsZS1jbGlja2luZyBhCi1zY3JpcHQgdG8gc2V0IHJ1bnRpbWUgb3B0aW9ucy4gVGhlc2Ugb3B0aW9ucyBjYW4gYmUgc2V0IG9uY2UgYW5kIGZvciBhbGwKK0dVSS10aGluZ3MuIEtlZXAgdGhlIGBgT3B0aW9uYGAga2V5IGRlcHJlc3NlZCB3aGlsZSBkcmFnZ2luZyBvciBkb3VibGUtY2xpY2tpbmcKK2Egc2NyaXB0IHRvIHNldCBydW50aW1lIG9wdGlvbnMuIFRoZXNlIG9wdGlvbnMgY2FuIGJlIHNldCBwZXJzaXN0ZW50bHkKIHRocm91Z2ggUHl0aG9uTGF1bmNoZXIncyBwcmVmZXJlbmNlcyBkaWFsb2cuCiAKLVRoZSBjb21tYW5kbGluZSBzY3JpcHRzIC91c3IvbG9jYWwvYmluL3B5dGhvbiBhbmQgcHl0aG9udyBjYW4gYmUgdXNlZCB0byBydW4KLW5vbi1HVUkgYW5kIEdVSSBweXRob24gc2NyaXB0cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIHJlc3BlY3RpdmVseS4KK1RoZSBwcm9ncmFtIGBgcHl0aG9ueC54YGAgcnVucyBweXRob24gc2NyaXB0cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuICBWYXJpb3VzCitjb21wYXRpYmlsaXR5IGFsaWFzZXMgYXJlIGFsc28gaW5zdGFsbGVkLCBpbmNsdWRpbmcgYGBweXRob253eC54YGAgd2hpY2gKK2luIGVhcmx5IHJlbGVhc2VzIG9mIFB5dGhvbiBvbiBPUyBYIHdhcyByZXF1aXJlZCB0byBydW4gR1VJIHByb2dyYW1zLiAgSW4KK2N1cnJlbnQgcmVsZWFzZXMsIHRoZSBgYHB5dGhvbngueGBgIGFuZCBgYHB5dGhvbnd4LnhgYCBjb21tYW5kcyBhcmUgaWRlbnRpY2FsLgogCiBIb3cgZG8gSSBjcmVhdGUgYSBiaW5hcnkgZGlzdHJpYnV0aW9uPwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotR28gdG8gdGhlIGRpcmVjdG9yeSAiTWFjL09TWC9CdWlsZFNjcmlwdCIuIFRoZXJlIHlvdSdsbCBmaW5kIGEgc2NyaXB0IAotImJ1aWxkLWluc3RhbGxlci5weSIgdGhhdCBkb2VzIGFsbCB0aGUgd29yay4gVGhpcyB3aWxsIGRvd25sb2FkIGFuZCBidWlsZAorRG93bmxvYWQgYW5kIHVucGFjayB0aGUgc291cmNlIHJlbGVhc2UgZnJvbSBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvLgorR28gdG8gdGhlIGRpcmVjdG9yeSBgYE1hYy9CdWlsZFNjcmlwdGBgLiBUaGVyZSB5b3Ugd2lsbCBmaW5kIGEgc2NyaXB0CitgYGJ1aWxkLWluc3RhbGxlci5weWBgIHRoYXQgZG9lcyBhbGwgdGhlIHdvcmsuIFRoaXMgd2lsbCBkb3dubG9hZCBhbmQgYnVpbGQKIGEgbnVtYmVyIG9mIDNyZC1wYXJ0eSBsaWJhcmllcywgY29uZmlndXJlcyBhbmQgYnVpbGRzIGEgZnJhbWV3b3JrIFB5dGhvbiwKIGluc3RhbGxzIGl0LCBjcmVhdGVzIHRoZSBpbnN0YWxsZXIgcGFja2FnZSBmaWxlcyBhbmQgdGhlbiBwYWNrcyB0aGlzIGluIGEKLURNRyBpbWFnZS4KK0RNRyBpbWFnZS4gIFRoZSBzY3JpcHQgYWxzbyBidWlsZHMgYW4gSFRNTCBjb3B5IG9mIHRoZSBjdXJyZW50IFB5dGhvbgorZG9jdW1lbnRhdGlvbiBzZXQgZm9yIHRoaXMgcmVsZWFzZSBmb3IgaW5jbHVzaW9uIGluIHRoZSBmcmFtZXdvcmsuICBUaGUKK2luc3RhbGxlciBwYWNrYWdlIHdpbGwgY3JlYXRlIGxpbmtzIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB1c2UgYnkgSURMRSwKK3B5ZG9jLCBzaGVsbCB1c2VycywgYW5kIEZpbmRlciB1c2VyLgogCi1UaGUgc2NyaXB0IHdpbGwgYnVpbGQgYSB1bml2ZXJzYWwgYmluYXJ5LCB5b3UnbGwgdGhlcmVmb3JlIGhhdmUgdG8gcnVuIHRoaXMKK1RoZSBzY3JpcHQgd2lsbCBidWlsZCBhIHVuaXZlcnNhbCBiaW5hcnkgc28geW91J2xsIHRoZXJlZm9yZSBoYXZlIHRvIHJ1biB0aGlzCiBzY3JpcHQgb24gTWFjIE9TIFggMTAuNCBvciBsYXRlciBhbmQgd2l0aCBYY29kZSAyLjEgb3IgbGF0ZXIgaW5zdGFsbGVkLgorSG93ZXZlciwgdGhlIFB5dGhvbiBidWlsZCBwcm9jZXNzIGl0c2VsZiBoYXMgc2V2ZXJhbCBidWlsZCBkZXBlbmRlbmNpZXMgbm90CithdmFpbGFibGUgb3V0IG9mIHRoZSBib3ggd2l0aCBPUyBYIDEwLjQgc28geW91IG1heSBoYXZlIHRvIGluc3RhbGwKK2FkZGl0aW9uYWwgc29mdHdhcmUgYmV5b25kIHdoYXQgaXMgcHJvdmlkZWQgd2l0aCBYY29kZSAyLiAgT1MgWCAxMC41Citwcm92aWRlcyBhIHJlY2VudCBlbm91Z2ggc3lzdGVtIFB5dGhvbiAoaW4gYGAvdXNyL2JpbmBgKSB0byBidWlsZAordGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uIHNldC4gIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byB1c2UgU0RLcyBhbmQvb3Igb2xkZXIKK3ZlcnNpb25zIG9mIFhjb2RlIHRvIGJ1aWxkIGluc3RhbGxlcnMgdGhhdCBhcmUgY29tcGF0aWJsZSB3aXRoIG9sZGVyIHN5c3RlbXMKK29uIGEgbmV3ZXIgc3lzdGVtIGJ1dCB0aGlzIG1heSBub3QgYmUgY29tcGxldGVseSBmb29scHJvb2Ygc28gdGhlIHJlc3VsdGluZworZXhlY3V0YWJsZXMsIHNoYXJlZCBsaWJyYXJpZXMsIGFuZCBgYC5zb2BgIGJ1bmRsZXMgc2hvdWxkIGJlIGNhcmVmdWxseQorZXhhbWluZWQgYW5kIHRlc3RlZCBvbiBhbGwgc3VwcG9ydGVkIHN5c3RlbXMgZm9yIHByb3BlciBkeW5hbWljIGxpbmtpbmcKK2RlcGVuZGVuY2llcy4gIEl0IGlzIHNhZmVzdCB0byBidWlsZCB0aGUgZGlzdHJpYnV0aW9uIG9uIGEgc3lzdGVtIHJ1bm5pbmcgdGhlCittaW5pbXVtIE9TIFggdmVyc2lvbiBzdXBwb3J0ZWQuCiAKIEFsbCBvZiB0aGlzIGlzIG5vcm1hbGx5IGRvbmUgY29tcGxldGVseSBpc29sYXRlZCBpbiAvdG1wL19weSwgc28gaXQgZG9lcyBub3QKIHVzZSB5b3VyIG5vcm1hbCBidWlsZCBkaXJlY3Rvcnkgbm9yIGRvZXMgaXQgaW5zdGFsbCBpbnRvIC8uCkBAIC0yNDQsNyArMzA2LDcgQEAKICAgIGNvbmZpZ3VyZTogV0FSTklORzogICAgICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCiAKIFRoaXMgYWxtb3N0IGFsd2F5cyBtZWFucyB5b3UgYXJlIHRyeWluZyB0byBidWlsZCBhIHVuaXZlcnNhbCBiaW5hcnkgZm9yCi1QeXRob24gYW5kIGhhdmUgbGliYXJpZXMgaW4gYGAvdXNyL2xvY2FsYGAgdGhhdCBkb24ndCBjb250YWluIHRoZSByZXF1aXJlZAorUHl0aG9uIGFuZCBoYXZlIGxpYnJhcmllcyBpbiBgYC91c3IvbG9jYWxgYCB0aGF0IGRvbid0IGNvbnRhaW4gdGhlIHJlcXVpcmVkCiBhcmNoaXRlY3R1cmVzLiBUZW1wb3JhcmlseSBtb3ZlIGBgL3Vzci9sb2NhbGBgIGFzaWRlIHRvIGZpbmlzaCB0aGUgYnVpbGQuCiAKIApAQCAtMjUzLDcgKzMxNSw3IEBACiAKIFVuaW5zdGFsbGluZyBhIGZyYW1ld29yayBjYW4gYmUgZG9uZSBieSBtYW51YWxseSByZW1vdmluZyBhbGwgYml0cyB0aGF0IGdvdCBpbnN0YWxsZWQuCiBUaGF0J3MgdHJ1ZSBmb3IgYm90aCBpbnN0YWxsYXRpb25zIGZyb20gc291cmNlIGFuZCBpbnN0YWxsYXRpb25zIHVzaW5nIHRoZSBiaW5hcnkgaW5zdGFsbGVyLgotU2FkbHkgZW5vdWdoIE9TWCBkb2VzIG5vdCBoYXZlIGEgY2VudHJhbCB1bmluc3RhbGxlci4KK09TIFggZG9lcyBub3QgcHJvdmlkZSBhIGNlbnRyYWwgdW5pbnN0YWxsZXIuCiAKIFRoZSBtYWluIGJpdCBvZiBhIGZyYW1ld29yayBpbnN0YWxsIGlzIHRoZSBmcmFtZXdvcmsgaXRzZWxmLCBpbnN0YWxsZWQgaW4KIGBgL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrYGAuIFRoaXMgY2FuIGNvbnRhaW4gbXVsdGlwbGUgdmVyc2lvbnMKQEAgLTI2NywxNCArMzI5LDEyIEBACiBBbmQgbGFzdGx5IGEgZnJhbWV3b3JrIGluc3RhbGxhdGlvbiBpbnN0YWxscyBmaWxlcyBpbiBgYC91c3IvbG9jYWwvYmluYGAsIGFsbCBvZgogdGhlbSBzeW1ib2xpYyBsaW5rcyB0byBmaWxlcyBpbiBgYC9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy9YLlkvYmluYGAuCiAKLU9kZHMgYW5kIGVuZHMKLT09PT09PT09PT09PT0KIAotU29tZXRoaW5nIHRvIHRha2Ugbm90ZSBvZiBpcyB0aGF0IHRoZSAiLnJzcmMiIGZpbGVzIGluIHRoZSBkaXN0cmlidXRpb24gYXJlCi1ub3QgYWN0dWFsbHkgcmVzb3VyY2UgZmlsZXMsIHRoZXkncmUgQXBwbGVTaW5nbGUgZW5jb2RlZCByZXNvdXJjZSBmaWxlcy4gVGhlCi1tYWNyZXNvdXJjZSBtb2R1bGUgYW5kIHRoZSBNYWMvT1NYL01ha2VmaWxlIGNhdGVyIGZvciB0aGlzLCBhbmQgY3JlYXRlCi0iLnJzcmMuZGYucnNyYyIgZmlsZXMgb24gdGhlIGZseSB0aGF0IGFyZSBub3JtYWwgZGF0YWZvcmstYmFzZWQgcmVzb3VyY2UKLWZpbGVzLgorUmVzb3VyY2VzCis9PT09PT09PT0KIAotCUphY2sgSmFuc2VuLCBKYWNrLkphbnNlbkBjd2kubmwsIDE1LUp1bC0yMDA0LgotCVJvbmFsZCBPdXNzb3JlbiwgUm9uYWxkT3Vzc29yZW5AbWFjLmNvbSwgMzAtQXByaWwtMjAxMAorICAqICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvbWFjLworCisgICogIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9jb21tdW5pdHkvc2lncy9jdXJyZW50L3B5dGhvbm1hYy1zaWcvCisKKyAgKiAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9NYWMvVG9vbHMvcHl0aG9udy5jIGIvTWFjL1Rvb2xzL3B5dGhvbncuYwppbmRleCAzMGM4MmFjLi4xZDJkYjM4IDEwMDY0NAotLS0gYS9NYWMvVG9vbHMvcHl0aG9udy5jCisrKyBiL01hYy9Ub29scy9weXRob253LmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxkbGZjbi5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPFB5dGhvbi5oPgorI2luY2x1ZGUgPG1hY2gtby9keWxkLmg+CiAKIAogZXh0ZXJuIGNoYXIqKiBlbnZpcm9uOwpAQCAtMTUwLDYgKzE1MSw1MyBAQAogaW50CiBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewogICAgIGNoYXIqIGV4ZWNfcGF0aCA9IGdldF9weXRob25fcGF0aCgpOworICAgIHN0YXRpYyBjaGFyIHBhdGhbUEFUSF9NQVggKiAyXTsKKyAgICBzdGF0aWMgY2hhciByZWFsX3BhdGhbUEFUSF9NQVggKiAyXTsKKyAgICBpbnQgc3RhdHVzOworICAgIHVpbnQzMl90IHNpemUgPSBQQVRIX01BWCAqIDI7CisKKyAgICAvKiBTZXQgdGhlIG9yaWdpbmFsIGV4ZWN1dGFibGUgcGF0aCBpbiB0aGUgZW52aXJvbm1lbnQuICovCisgICAgc3RhdHVzID0gX05TR2V0RXhlY3V0YWJsZVBhdGgocGF0aCwgJnNpemUpOworICAgIGlmIChzdGF0dXMgPT0gMCkgeworICAgICAgICAvKgorICAgICAgICAgKiBOb3RlOiBkb24ndCBjYWxsICdyZWFscGF0aCcsIHRoYXQgd2lsbAorICAgICAgICAgKiBlcmFzZSBzeW1saW5rIGluZm9ybWF0aW9uLCBhbmQgdGhhdAorICAgICAgICAgKiBicmVha3MgInB5dmVudiAtLXN5bWxpbmsiCisgICAgICAgICAqCisgICAgICAgICAqIEl0IGlzIG5pY2UgdG8gaGF2ZSB0aGUgZGlyZWN0b3J5IG5hbWUKKyAgICAgICAgICogYXMgYSBjbGVhbmVkIHVwIGFic29sdXRlIHBhdGggdGhvdWdoLAorICAgICAgICAgKiB0aGVyZWZvcmUgY2FsbCByZWFscGF0aCBvbiBkaXJuYW1lKHBhdGgpCisgICAgICAgICAqLworICAgICAgICBjaGFyKiBzbGFzaCA9IHN0cnJjaHIocGF0aCwgJy8nKTsKKyAgICAgICAgaWYgKHNsYXNoKSB7CisgICAgICAgICAgICBjaGFyICByZXBsYWNlZDsKKyAgICAgICAgICAgIHJlcGxhY2VkID0gc2xhc2hbMV07CisgICAgICAgICAgICBzbGFzaFsxXSA9IDA7CisgICAgICAgICAgICBpZiAocmVhbHBhdGgocGF0aCwgcmVhbF9wYXRoKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZXJyKDEsICJyZWFscGF0aDogJXMiLCBwYXRoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNsYXNoWzFdID0gcmVwbGFjZWQ7CisgICAgICAgICAgICBpZiAoc3RybGNhdChyZWFsX3BhdGgsIHNsYXNoLCBzaXplb2YocmVhbF9wYXRoKSkgPiBzaXplb2YocmVhbF9wYXRoKSkgeworICAgICAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICAgICAgICAgIGVycigxLCAicmVhbHBhdGg6ICVzIiwgcGF0aCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChyZWFscGF0aCgiLiIsIHJlYWxfcGF0aCkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGVycigxLCAicmVhbHBhdGg6ICVzIiwgcGF0aCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3RybGNhdChyZWFsX3BhdGgsICIvIiwgc2l6ZW9mKHJlYWxfcGF0aCkpID4gc2l6ZW9mKHJlYWxfcGF0aCkpIHsKKyAgICAgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAgICAgICAgICAgICBlcnIoMSwgInJlYWxwYXRoOiAlcyIsIHBhdGgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0cmxjYXQocmVhbF9wYXRoLCBwYXRoLCBzaXplb2YocmVhbF9wYXRoKSkgPiBzaXplb2YocmVhbF9wYXRoKSkgeworICAgICAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICAgICAgICAgIGVycigxLCAicmVhbHBhdGg6ICVzIiwgcGF0aCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzZXRlbnYoIl9fUFlWRU5WX0xBVU5DSEVSX18iLCByZWFsX3BhdGgsIDEpOworICAgIH0KIAogICAgIC8qCiAgICAgICogTGV0IGFyZ3ZbMF0gcmVmZXIgdG8gdGhlIG5ldyBpbnRlcnByZXRlci4gVGhpcyBpcyBuZWVkZWQgdG8KZGlmZiAtLWdpdCBhL01ha2VmaWxlLnByZS5pbiBiL01ha2VmaWxlLnByZS5pbgppbmRleCAxZjNlODQwLi41MGRkZDhhIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5wcmUuaW4KKysrIGIvTWFrZWZpbGUucHJlLmluCkBAIC0zNyw3ICszNyw3IEBACiBMSU5LQ0M9CQlATElOS0NDQAogQVI9CQlAQVJACiBSQU5MSUI9CQlAUkFOTElCQAotU1ZOVkVSU0lPTj0JQFNWTlZFUlNJT05ACitSRUFERUxGPQlAUkVBREVMRkAKIFNPQUJJPQkJQFNPQUJJQAogTERWRVJTSU9OPQlATERWRVJTSU9OQAogSEdWRVJTSU9OPQlASEdWRVJTSU9OQApAQCAtMjAxLDYgKzIwMSwxMSBAQAogUFlUSE9OPQkJcHl0aG9uJChFWEUpCiBCVUlMRFBZVEhPTj0JcHl0aG9uJChCVUlMREVYRSkKIAorUFlUSE9OX0ZPUl9CVUlMRD1AUFlUSE9OX0ZPUl9CVUlMREAKK19QWVRIT05fSE9TVF9QTEFURk9STT1AX1BZVEhPTl9IT1NUX1BMQVRGT1JNQAorQlVJTERfR05VX1RZUEU9CUBidWlsZEAKK0hPU1RfR05VX1RZUEU9CUBob3N0QAorCiAjIFRoZSB0YXNrIHRvIHJ1biB3aGlsZSBpbnN0cnVtZW50IHdoZW4gYnVpbGRpbmcgdGhlIHByb2ZpbGUtb3B0IHRhcmdldAogUFJPRklMRV9UQVNLPQkkKHNyY2RpcikvVG9vbHMvcHliZW5jaC9weWJlbmNoLnB5IC1uIDIgLS13aXRoLWdjIC0td2l0aC1zeXNjaGVjawogI1BST0ZJTEVfVEFTSz0JJChzcmNkaXIpL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CkBAIC0yNDMsMjAgKzI0OCw0MSBAQAogIyBQYXJzZXIKIFBHRU49CQlQYXJzZXIvcGdlbiQoRVhFKQogCitQU1JDUz0JCVwKKwkJUGFyc2VyL2FjY2VsZXIuYyBcCisJCVBhcnNlci9ncmFtbWFyMS5jIFwKKwkJUGFyc2VyL2xpc3Rub2RlLmMgXAorCQlQYXJzZXIvbm9kZS5jIFwKKwkJUGFyc2VyL3BhcnNlci5jIFwKKwkJUGFyc2VyL2JpdHNldC5jIFwKKwkJUGFyc2VyL21ldGFncmFtbWFyLmMgXAorCQlQYXJzZXIvZmlyc3RzZXRzLmMgXAorCQlQYXJzZXIvZ3JhbW1hci5jIFwKKwkJUGFyc2VyL3BnZW4uYworCiBQT0JKUz0JCVwKIAkJUGFyc2VyL2FjY2VsZXIubyBcCiAJCVBhcnNlci9ncmFtbWFyMS5vIFwKIAkJUGFyc2VyL2xpc3Rub2RlLm8gXAogCQlQYXJzZXIvbm9kZS5vIFwKIAkJUGFyc2VyL3BhcnNlci5vIFwKLQkJUGFyc2VyL3BhcnNldG9rLm8gXAogCQlQYXJzZXIvYml0c2V0Lm8gXAogCQlQYXJzZXIvbWV0YWdyYW1tYXIubyBcCiAJCVBhcnNlci9maXJzdHNldHMubyBcCiAJCVBhcnNlci9ncmFtbWFyLm8gXAogCQlQYXJzZXIvcGdlbi5vCiAKLVBBUlNFUl9PQkpTPQkkKFBPQkpTKSBQYXJzZXIvbXlyZWFkbGluZS5vIFBhcnNlci90b2tlbml6ZXIubworUEFSU0VSX09CSlM9CSQoUE9CSlMpIFBhcnNlci9teXJlYWRsaW5lLm8gUGFyc2VyL3BhcnNldG9rLm8gUGFyc2VyL3Rva2VuaXplci5vCisKK1BHU1JDUz0JCVwKKwkJT2JqZWN0cy9vYm1hbGxvYy5jIFwKKwkJUHl0aG9uL2R5bmFtaWNfYW5ub3RhdGlvbnMuYyBcCisJCVB5dGhvbi9teXNucHJpbnRmLmMgXAorCQlQeXRob24vcHljdHlwZS5jIFwKKwkJUGFyc2VyL3Rva2VuaXplcl9wZ2VuLmMgXAorCQlQYXJzZXIvcHJpbnRncmFtbWFyLmMgXAorCQlQYXJzZXIvcGFyc2V0b2tfcGdlbi5jIFwKKwkJUGFyc2VyL3BnZW5tYWluLmMKIAogUEdPQkpTPQkJXAogCQlPYmplY3RzL29ibWFsbG9jLm8gXApAQCAtMjY1LDEzICsyOTEsMTYgQEAKIAkJUHl0aG9uL3B5Y3R5cGUubyBcCiAJCVBhcnNlci90b2tlbml6ZXJfcGdlbi5vIFwKIAkJUGFyc2VyL3ByaW50Z3JhbW1hci5vIFwKKwkJUGFyc2VyL3BhcnNldG9rX3BnZW4ubyBcCiAJCVBhcnNlci9wZ2VubWFpbi5vCiAKIFBBUlNFUl9IRUFERVJTPSBcCi0JCVBhcnNlci9wYXJzZXIuaCBcCi0JCVBhcnNlci90b2tlbml6ZXIuaAorCQkkKHNyY2RpcikvUGFyc2VyL3BhcnNlci5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcGFyc2V0b2suaCBcCisJCSQoc3JjZGlyKS9QYXJzZXIvdG9rZW5pemVyLmgKIAotUEdFTk9CSlM9CSQoUEdFTk1BSU4pICQoUE9CSlMpICQoUEdPQkpTKQorUEdFTlNSQ1M9CSQoUFNSQ1MpICQoUEdTUkNTKQorUEdFTk9CSlM9CSQoUE9CSlMpICQoUEdPQkpTKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBBU1QKQEAgLTMwOCw3ICszMzcsNiBAQAogCQlQeXRob24vY29kZWNzLm8gXAogCQlQeXRob24vZHluYW1pY19hbm5vdGF0aW9ucy5vIFwKIAkJUHl0aG9uL2Vycm9ycy5vIFwKLQkJUHl0aG9uL2Zyb3plbi5vIFwKIAkJUHl0aG9uL2Zyb3plbm1haW4ubyBcCiAJCVB5dGhvbi9mdXR1cmUubyBcCiAJCVB5dGhvbi9nZXRhcmdzLm8gXApAQCAtMzc2LDExICs0MDQsMTIgQEAKIAkJT2JqZWN0cy9tZW1vcnlvYmplY3QubyBcCiAJCU9iamVjdHMvbWV0aG9kb2JqZWN0Lm8gXAogCQlPYmplY3RzL21vZHVsZW9iamVjdC5vIFwKKwkJT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QubyBcCiAJCU9iamVjdHMvb2JqZWN0Lm8gXAogCQlPYmplY3RzL29ibWFsbG9jLm8gXAogCQlPYmplY3RzL2NhcHN1bGUubyBcCiAJCU9iamVjdHMvcmFuZ2VvYmplY3QubyBcCi0gICAgICAgICAgICAgICAgT2JqZWN0cy9zZXRvYmplY3QubyBcCisJCU9iamVjdHMvc2V0b2JqZWN0Lm8gXAogCQlPYmplY3RzL3NsaWNlb2JqZWN0Lm8gXAogCQlPYmplY3RzL3N0cnVjdHNlcS5vIFwKIAkJT2JqZWN0cy90dXBsZW9iamVjdC5vIFwKQEAgLTM4OSwxMCArNDE4LDkgQEAKIAkJT2JqZWN0cy91bmljb2RlY3R5cGUubyBcCiAJCU9iamVjdHMvd2Vha3JlZm9iamVjdC5vCiAKLQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgb2JqZWN0cyB0aGF0IGdldCBsaW5rZWQgaW50byB0aGUgUHl0aG9uIGxpYnJhcnkKLUxJQlJBUllfT0JKUz0JXAorTElCUkFSWV9PQkpTX09NSVRfRlJPWkVOPQlcCiAJCU1vZHVsZXMvZ2V0YnVpbGRpbmZvLm8gXAogCQkkKFBBUlNFUl9PQkpTKSBcCiAJCSQoT0JKRUNUX09CSlMpIFwKQEAgLTQwMSw2ICs0MjksMTAgQEAKIAkJJChTSUdOQUxfT0JKUykgXAogCQkkKE1PRE9CSlMpCiAKK0xJQlJBUllfT0JKUz0JXAorCQkkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikgXAorCQlQeXRob24vZnJvemVuLm8KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBSdWxlcwogCkBAIC00MjQsMTAgKzQ1NiwxMSBAQAogCSQoTUFLRSkgYWxsIENGTEFHUz0iJChDRkxBR1MpIC1mcHJvZmlsZS1nZW5lcmF0ZSIgTElCUz0iJChMSUJTKSAtbGdjb3YiCiAKIHJ1bl9wcm9maWxlX3Rhc2s6Ci0JLi8kKEJVSUxEUFlUSE9OKSAkKFBST0ZJTEVfVEFTSykKKwk6ICMgRklYTUU6IGNhbid0IHJ1biBmb3IgYSBjcm9zcyBidWlsZAorCSQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pICQoUFJPRklMRV9UQVNLKQogCiBidWlsZF9hbGxfdXNlX3Byb2ZpbGU6Ci0JJChNQUtFKSBhbGwgQ0ZMQUdTPSIkKENGTEFHUykgLWZwcm9maWxlLXVzZSIKKwkkKE1BS0UpIGFsbCBDRkxBR1M9IiQoQ0ZMQUdTKSAtZnByb2ZpbGUtdXNlIC1mcHJvZmlsZS1jb3JyZWN0aW9uIgogCiBjb3ZlcmFnZToKIAlAZWNobyAiQnVpbGRpbmcgd2l0aCBzdXBwb3J0IGZvciBjb3ZlcmFnZSBjaGVja2luZzoiCkBAIC00MzksMjEgKzQ3MiwyNiBAQAogJChCVUlMRFBZVEhPTik6CU1vZHVsZXMvcHl0aG9uLm8gJChMSUJSQVJZKSAkKExETElCUkFSWSkgJChQWTNMSUJSQVJZKQogCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpICQoTElOS0ZPUlNIQVJFRCkgLW8gJEAgTW9kdWxlcy9weXRob24ubyAkKEJMRExJQlJBUlkpICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQogCi1wbGF0Zm9ybTogJChCVUlMRFBZVEhPTikKLQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAtRSAtYyAnaW1wb3J0IHN5cyA7IGZyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfcGxhdGZvcm0gOyBwcmludChnZXRfcGxhdGZvcm0oKSsiLSIrc3lzLnZlcnNpb25bMDozXSknID5wbGF0Zm9ybQorcGxhdGZvcm06ICQoQlVJTERQWVRIT04pIHB5YnVpbGRkaXIudHh0CisJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgLWMgJ2ltcG9ydCBzeXMgOyBmcm9tIHN5c2NvbmZpZyBpbXBvcnQgZ2V0X3BsYXRmb3JtIDsgcHJpbnQoZ2V0X3BsYXRmb3JtKCkrIi0iK3N5cy52ZXJzaW9uWzA6M10pJyA+cGxhdGZvcm0KIAorIyBDcmVhdGUgYnVpbGQgZGlyZWN0b3J5IGFuZCBnZW5lcmF0ZSB0aGUgc3lzY29uZmlnIGJ1aWxkLXRpbWUgZGF0YSB0aGVyZS4KKyMgcHlidWlsZGRpci50eHQgY29udGFpbnMgdGhlIG5hbWUgb2YgdGhlIGJ1aWxkIGRpciBhbmQgaXMgdXNlZCBmb3IKKyMgc3lzLnBhdGggZml4dXAgLS0gc2VlIE1vZHVsZXMvZ2V0cGF0aC5jLgorcHlidWlsZGRpci50eHQ6ICQoQlVJTERQWVRIT04pCisJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgLVMgLW0gc3lzY29uZmlnIC0tZ2VuZXJhdGUtcG9zaXgtdmFycwogCiAjIEJ1aWxkIHRoZSBzaGFyZWQgbW9kdWxlcwogIyBVbmRlciBHTlUgbWFrZSwgTUFLRUZMQUdTIGFyZSBzb3J0ZWQgYW5kIG5vcm1hbGl6ZWQ7IHRoZSAncycgZm9yCiAjIC1zLCAtLXNpbGVudCBvciAtLXF1aWV0IGlzIGFsd2F5cyB0aGUgZmlyc3QgY2hhci4KICMgVW5kZXIgQlNEIG1ha2UsIE1BS0VGTEFHUyBtaWdodCBiZSAiIC1zIC12IHg9eSIuCi1zaGFyZWRtb2RzOiAkKEJVSUxEUFlUSE9OKQorc2hhcmVkbW9kczogJChCVUlMRFBZVEhPTikgcHlidWlsZGRpci50eHQKIAlAY2FzZSAiJCRNQUtFRkxBR1MiIGluIFwKIAkgICAgKlwgLXMqfHMqKSBxdWlldD0iLXEiOzsgXAogCSAgICAqKSBxdWlldD0iIjs7IFwKIAllc2FjOyBcCiAJJChSVU5TSEFSRUQpIENDPSckKENDKScgTERTSEFSRUQ9JyQoQkxEU0hBUkVEKScgT1BUPSckKE9QVCknIFwKLQkJLi8kKEJVSUxEUFlUSE9OKSAtRSAkKHNyY2Rpcikvc2V0dXAucHkgJCRxdWlldCBidWlsZAorCQkkKFBZVEhPTl9GT1JfQlVJTEQpICQoc3JjZGlyKS9zZXR1cC5weSAkJHF1aWV0IGJ1aWxkCiAKICMgQnVpbGQgc3RhdGljIGxpYnJhcnkKICMgYXZvaWQgbG9uZyBjb21tYW5kIGxpbmVzLCBzYW1lIGFzIExJQlJBUllfT0JKUwpAQCAtNDYyLDcgKzUwMCw3IEBACiAJJChBUikgJChBUkZMQUdTKSAkQCBNb2R1bGVzL2dldGJ1aWxkaW5mby5vCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKFBBUlNFUl9PQkpTKQogCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpFQ1RfT0JKUykKLQkkKEFSKSAkKEFSRkxBR1MpICRAICQoUFlUSE9OX09CSlMpCisJJChBUikgJChBUkZMQUdTKSAkQCAkKFBZVEhPTl9PQkpTKSBQeXRob24vZnJvemVuLm8KIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoTU9EVUxFX09CSlMpICQoU0lHTkFMX09CSlMpCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKE1PRE9CSlMpCiAJJChSQU5MSUIpICRACkBAIC01NjAsNiArNTk4LDE4IEBACiAJJChMSU5LQ0MpICQoUFlfTERGTEFHUykgJChMSU5LRk9SU0hBUkVEKSAtbyAkQCBNb2R1bGVzL190ZXN0ZW1iZWQubyAkKEJMRExJQlJBUlkpICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEltcG9ydGxpYgorCitNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliOiBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLm8gJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pCisJJChMSU5LQ0MpICQoUFlfTERGTEFHUykgLW8gJEAgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5vICQoTElCUkFSWV9PQkpTX09NSVRfRlJPWkVOKSAkKExJQlMpICQoTU9ETElCUykgJChTWVNMSUJTKSAkKExETEFTVCkKKworUHl0aG9uL2ltcG9ydGxpYi5oOiAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYworCSQoTUFLRSkgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYgorCS4vTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYiBcCisJCSQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgUHl0aG9uL2ltcG9ydGxpYi5oCisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBTcGVjaWFsIHJ1bGVzIGZvciBvYmplY3QgZmlsZXMKIAogTW9kdWxlcy9nZXRidWlsZGluZm8ubzogJChQQVJTRVJfT0JKUykgXApAQCAtNTcwLDcgKzYyMCw2IEBACiAJCSQoTU9ET0JKUykgXAogCQkkKHNyY2RpcikvTW9kdWxlcy9nZXRidWlsZGluZm8uYwogCSQoQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIFwKLQkgICAgICAtRFNWTlZFUlNJT049IlwiYExDX0FMTD1DICQoU1ZOVkVSU0lPTilgXCIiIFwKIAkgICAgICAtREhHVkVSU0lPTj0iXCJgTENfQUxMPUMgJChIR1ZFUlNJT04pYFwiIiBcCiAJICAgICAgLURIR1RBRz0iXCJgTENfQUxMPUMgJChIR1RBRylgXCIiIFwKIAkgICAgICAtREhHQlJBTkNIPSJcImBMQ19BTEw9QyAkKEhHQlJBTkNIKWBcIiIgXApAQCAtNTg3LDEyICs2MzYsMTcgQEAKIE1vZHVsZXMvcHl0aG9uLm86ICQoc3JjZGlyKS9Nb2R1bGVzL3B5dGhvbi5jCiAJJChNQUlOQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIC1vICRAICQoc3JjZGlyKS9Nb2R1bGVzL3B5dGhvbi5jCiAKK01vZHVsZXMvX3Rlc3RlbWJlZC5vOiAkKHNyY2RpcikvTW9kdWxlcy9fdGVzdGVtYmVkLmMKKwkkKE1BSU5DQykgLWMgJChQWV9DT1JFX0NGTEFHUykgLW8gJEAgJChzcmNkaXIpL01vZHVsZXMvX3Rlc3RlbWJlZC5jCisKIE1vZHVsZXMvcG9zaXhtb2R1bGUubzogJChzcmNkaXIpL01vZHVsZXMvcG9zaXhtb2R1bGUuYyAkKHNyY2RpcikvTW9kdWxlcy9wb3NpeG1vZHVsZS5oCiAKIE1vZHVsZXMvZ3JwbW9kdWxlLm86ICQoc3JjZGlyKS9Nb2R1bGVzL2dycG1vZHVsZS5jICQoc3JjZGlyKS9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmgKIAogTW9kdWxlcy9wd2Rtb2R1bGUubzogJChzcmNkaXIpL01vZHVsZXMvcHdkbW9kdWxlLmMgJChzcmNkaXIpL01vZHVsZXMvcG9zaXhtb2R1bGUuaAogCitNb2R1bGVzL3NpZ25hbG1vZHVsZS5vOiAkKHNyY2RpcikvTW9kdWxlcy9zaWduYWxtb2R1bGUuYyAkKHNyY2RpcikvTW9kdWxlcy9wb3NpeG1vZHVsZS5oCisKIFB5dGhvbi9keW5sb2FkX3NobGliLm86ICQoc3JjZGlyKS9QeXRob24vZHlubG9hZF9zaGxpYi5jIE1ha2VmaWxlCiAJJChDQykgLWMgJChQWV9DT1JFX0NGTEFHUykgXAogCQktRFNPQUJJPSciJChTT0FCSSkiJyBcCkBAIC02MDUsMTIgKzY1OSwxMyBAQAogCiAkKElPX09CSlMpOiAkKElPX0gpCiAKLSMgVXNlIGEgc3RhbXAgZmlsZSB0byBwcmV2ZW50IG1ha2UgLWogaW52b2tpbmcgcGdlbiB0d2ljZQotJChHUkFNTUFSX0gpICQoR1JBTU1BUl9DKTogUGFyc2VyL3BnZW4uc3RhbXAKLVBhcnNlci9wZ2VuLnN0YW1wOiAkKFBHRU4pICQoR1JBTU1BUl9JTlBVVCkKLQkJLUAkKElOU1RBTEwpIC1kIEluY2x1ZGUKKyQoR1JBTU1BUl9IKTogJChHUkFNTUFSX0lOUFVUKSAkKFBHRU5TUkNTKQorCQlAJChNS0RJUl9QKSBJbmNsdWRlCisJCSQoTUFLRSkgJChQR0VOKQogCQkkKFBHRU4pICQoR1JBTU1BUl9JTlBVVCkgJChHUkFNTUFSX0gpICQoR1JBTU1BUl9DKQotCQktdG91Y2ggUGFyc2VyL3BnZW4uc3RhbXAKKyQoR1JBTU1BUl9DKTogJChHUkFNTUFSX0gpICQoR1JBTU1BUl9JTlBVVCkgJChQR0VOU1JDUykKKwkJJChNQUtFKSAkKEdSQU1NQVJfSCkKKwkJdG91Y2ggJChHUkFNTUFSX0MpCiAKICQoUEdFTik6CSQoUEdFTk9CSlMpCiAJCSQoQ0MpICQoT1BUKSAkKFBZX0xERkxBR1MpICQoUEdFTk9CSlMpICQoTElCUykgLW8gJChQR0VOKQpAQCAtNjIxLDYgKzY3Niw4IEBACiBQYXJzZXIvbWV0YWdyYW1tYXIubzoJJChzcmNkaXIpL1BhcnNlci9tZXRhZ3JhbW1hci5jCiAKIFBhcnNlci90b2tlbml6ZXJfcGdlbi5vOgkkKHNyY2RpcikvUGFyc2VyL3Rva2VuaXplci5jCitQYXJzZXIvcGFyc2V0b2tfcGdlbi5vOgkkKHNyY2RpcikvUGFyc2VyL3BhcnNldG9rLmMKK1BhcnNlci9wcmludGdyYW1tYXIubzogJChzcmNkaXIpL1BhcnNlci9wcmludGdyYW1tYXIuYwogCiBQYXJzZXIvcGdlbm1haW4ubzoJJChzcmNkaXIpL0luY2x1ZGUvcGFyc2V0b2suaAogCkBAIC02MjgsNyArNjg1LDcgQEAKIAkkKE1LRElSX1ApICQoQVNUX0hfRElSKQogCSQoQVNETEdFTikgLWggJChBU1RfSF9ESVIpICQoQVNUX0FTREwpCiAKLSQoQVNUX0MpOiAkKEFTVF9BU0RMKSAkKEFTRExHRU5fRklMRVMpCiskKEFTVF9DKTogJChBU1RfSCkgJChBU1RfQVNETCkgJChBU0RMR0VOX0ZJTEVTKQogCSQoTUtESVJfUCkgJChBU1RfQ19ESVIpCiAJJChBU0RMR0VOKSAtYyAkKEFTVF9DX0RJUikgJChBU1RfQVNETCkKIApAQCAtNjUwLDIwICs3MDcsMjkgQEAKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2VxLmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oIFwKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9maW5kX21heF9jaGFyLmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvcGFydGl0aW9uLmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvc3BsaXQuaCBcCiAJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9zdHJpbmdkZWZzLmggXAotCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvc3RyaW5nX2Zvcm1hdC5oIFwKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oIFwKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmggXAotCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmggXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdW5kZWYuaAorCitVTklDT0RFX0RFUFMgPSAkKEJZVEVTVFJfREVQUykgXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvYXNjaWlsaWIuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi91Y3MxbGliLmggXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdWNzMmxpYi5oIFwKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3VjczRsaWIuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oIFwKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmgKIAogT2JqZWN0cy9ieXRlc29iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9ieXRlc29iamVjdC5jICQoQllURVNUUl9ERVBTKQogCiBPYmplY3RzL2J5dGVhcnJheW9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYyAkKEJZVEVTVFJfREVQUykKIAotT2JqZWN0cy91bmljb2Rlb2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL3VuaWNvZGVvYmplY3QuYyBcCi0JCQkJJChCWVRFU1RSX0RFUFMpCitPYmplY3RzL3VuaWNvZGVvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvdW5pY29kZW9iamVjdC5jICQoVU5JQ09ERV9ERVBTKQogCiBPYmplY3RzL2RpY3RvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2VxLmgKIE9iamVjdHMvc2V0b2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9lcS5oCkBAIC02NzEsMTEgKzczNywxMiBAQAogJChPUENPREVUQVJHRVRTX0gpOiAkKE9QQ09ERVRBUkdFVEdFTl9GSUxFUykKIAkkKE9QQ09ERVRBUkdFVEdFTikgJChPUENPREVUQVJHRVRTX0gpCiAKLVB5dGhvbi9jZXZhbC5vOiAkKE9QQ09ERVRBUkdFVFNfSCkgUHl0aG9uL2NldmFsX2dpbC5oCitQeXRob24vY2V2YWwubzogJChPUENPREVUQVJHRVRTX0gpICQoc3JjZGlyKS9QeXRob24vY2V2YWxfZ2lsLmgKIAogUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLm86ICQoc3JjZGlyKS9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYyBcCi0JCQkJJChCWVRFU1RSX0RFUFMpIFwKLQkJCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZm9ybWF0dGVyLmgKKwkJCQkkKEJZVEVTVFJfREVQUykKKworUHl0aG9uL2Zyb3plbi5vOiBQeXRob24vaW1wb3J0bGliLmgKIAogT2JqZWN0cy90eXBlb2JqZWN0Lm86IE9iamVjdHMvdHlwZXNsb3RzLmluYwogT2JqZWN0cy90eXBlc2xvdHMuaW5jOiAkKHNyY2RpcikvSW5jbHVkZS90eXBlc2xvdHMuaCAkKHNyY2RpcikvT2JqZWN0cy90eXBlc2xvdHMucHkKQEAgLTY4NSw4OSArNzUyLDg5IEBACiAjIEhlYWRlciBmaWxlcwogCiBQWVRIT05fSEVBREVSUz0gXAotCQlJbmNsdWRlL1B5dGhvbi1hc3QuaCBcCi0JCUluY2x1ZGUvUHl0aG9uLmggXAotCQlJbmNsdWRlL2Fic3RyYWN0LmggXAotCQlJbmNsdWRlL2FjY3UuaCBcCi0JCUluY2x1ZGUvYXNkbC5oIFwKLQkJSW5jbHVkZS9hc3QuaCBcCi0gICAgICAgICAgICAgICAgSW5jbHVkZS9ibHRpbm1vZHVsZS5oIFwKLQkJSW5jbHVkZS9iaXRzZXQuaCBcCi0JCUluY2x1ZGUvYm9vbG9iamVjdC5oIFwKLQkJSW5jbHVkZS9ieXRlc19tZXRob2RzLmggXAotCQlJbmNsdWRlL2J5dGVhcnJheW9iamVjdC5oIFwKLQkJSW5jbHVkZS9ieXRlc29iamVjdC5oIFwKLQkJSW5jbHVkZS9jZWxsb2JqZWN0LmggXAotCQlJbmNsdWRlL2NldmFsLmggXAotCQlJbmNsdWRlL2NsYXNzb2JqZWN0LmggXAotCQlJbmNsdWRlL2NvZGUuaCBcCi0JCUluY2x1ZGUvY29kZWNzLmggXAotCQlJbmNsdWRlL2NvbXBpbGUuaCBcCi0JCUluY2x1ZGUvY29tcGxleG9iamVjdC5oIFwKLQkJSW5jbHVkZS9kZXNjcm9iamVjdC5oIFwKLQkJSW5jbHVkZS9kaWN0b2JqZWN0LmggXAotCQlJbmNsdWRlL2R0b2EuaCBcCi0JCUluY2x1ZGUvZHluYW1pY19hbm5vdGF0aW9ucy5oIFwKLQkJSW5jbHVkZS9lbnVtb2JqZWN0LmggXAotCQlJbmNsdWRlL2VycmNvZGUuaCBcCi0JCUluY2x1ZGUvZXZhbC5oIFwKLQkJSW5jbHVkZS9maWxlb2JqZWN0LmggXAotCQlJbmNsdWRlL2ZpbGV1dGlscy5oIFwKLQkJSW5jbHVkZS9mbG9hdG9iamVjdC5oIFwKLQkJSW5jbHVkZS9mcmFtZW9iamVjdC5oIFwKLQkJSW5jbHVkZS9mdW5jb2JqZWN0LmggXAotCQlJbmNsdWRlL2dlbm9iamVjdC5oIFwKLQkJSW5jbHVkZS9pbXBvcnQuaCBcCi0JCUluY2x1ZGUvaW50cmNoZWNrLmggXAotCQlJbmNsdWRlL2l0ZXJvYmplY3QuaCBcCi0JCUluY2x1ZGUvbGlzdG9iamVjdC5oIFwKLQkJSW5jbHVkZS9sb25naW50cmVwci5oIFwKLQkJSW5jbHVkZS9sb25nb2JqZWN0LmggXAotCQlJbmNsdWRlL21hcnNoYWwuaCBcCi0JCUluY2x1ZGUvbWVtb3J5b2JqZWN0LmggXAotCQlJbmNsdWRlL21ldGFncmFtbWFyLmggXAotCQlJbmNsdWRlL21ldGhvZG9iamVjdC5oIFwKLQkJSW5jbHVkZS9tb2RzdXBwb3J0LmggXAotCQlJbmNsdWRlL21vZHVsZW9iamVjdC5oIFwKLQkJSW5jbHVkZS9ub2RlLmggXAotCQlJbmNsdWRlL29iamVjdC5oIFwKLQkJSW5jbHVkZS9vYmppbXBsLmggXAotCQlJbmNsdWRlL29wY29kZS5oIFwKLQkJSW5jbHVkZS9vc2RlZnMuaCBcCi0JCUluY2x1ZGUvcGFyc2V0b2suaCBcCi0JCUluY2x1ZGUvcGF0Y2hsZXZlbC5oIFwKLQkJSW5jbHVkZS9wZ2VuLmggXAotCQlJbmNsdWRlL3BnZW5oZWFkZXJzLmggXAotCQlJbmNsdWRlL3B5YXJlbmEuaCBcCi0JCUluY2x1ZGUvcHlhdG9taWMuaCBcCi0JCUluY2x1ZGUvcHljYXBzdWxlLmggXAotCQlJbmNsdWRlL3B5Y3R5cGUuaCBcCi0JCUluY2x1ZGUvcHlkZWJ1Zy5oIFwKLQkJSW5jbHVkZS9weWVycm9ycy5oIFwKLQkJSW5jbHVkZS9weWZwZS5oIFwKLQkJSW5jbHVkZS9weW1hdGguaCBcCi0JCUluY2x1ZGUvcHlnZXRvcHQuaCBcCi0JCUluY2x1ZGUvcHltZW0uaCBcCi0JCUluY2x1ZGUvcHlwb3J0LmggXAotCQlJbmNsdWRlL3B5c3RhdGUuaCBcCi0JCUluY2x1ZGUvcHlzdHJjbXAuaCBcCi0JCUluY2x1ZGUvcHlzdHJ0b2QuaCBcCi0JCUluY2x1ZGUvcHl0aG9ucnVuLmggXAotCQlJbmNsdWRlL3B5dGhyZWFkLmggXAotCQlJbmNsdWRlL3B5dGltZS5oIFwKLQkJSW5jbHVkZS9yYW5nZW9iamVjdC5oIFwKLQkJSW5jbHVkZS9zZXRvYmplY3QuaCBcCi0JCUluY2x1ZGUvc2xpY2VvYmplY3QuaCBcCi0JCUluY2x1ZGUvc3RydWN0bWVtYmVyLmggXAotCQlJbmNsdWRlL3N0cnVjdHNlcS5oIFwKLQkJSW5jbHVkZS9zeW10YWJsZS5oIFwKLQkJSW5jbHVkZS9zeXNtb2R1bGUuaCBcCi0JCUluY2x1ZGUvdHJhY2ViYWNrLmggXAotCQlJbmNsdWRlL3R1cGxlb2JqZWN0LmggXAotCQlJbmNsdWRlL3Vjbmhhc2guaCBcCi0JCUluY2x1ZGUvdW5pY29kZW9iamVjdC5oIFwKLQkJSW5jbHVkZS93YXJuaW5ncy5oIFwKLQkJSW5jbHVkZS93ZWFrcmVmb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9QeXRob24uaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2Fic3RyYWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9hY2N1LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9hc2RsLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9hc3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2JsdGlubW9kdWxlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9iaXRzZXQuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2Jvb2xvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2J5dGVzX21ldGhvZHMuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2J5dGVhcnJheW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvYnl0ZXNvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2NlbGxvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2NldmFsLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9jbGFzc29iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvY29kZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvY29kZWNzLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9jb21waWxlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9jb21wbGV4b2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9kZXNjcm9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZGljdG9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZHRvYS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZHluYW1pY19hbm5vdGF0aW9ucy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZW51bW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZXJyY29kZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZXZhbC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZmlsZW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZmlsZXV0aWxzLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9mbG9hdG9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZnJhbWVvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2Z1bmNvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2dlbm9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvaW1wb3J0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9pbnRyY2hlY2suaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2l0ZXJvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2xpc3RvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2xvbmdpbnRyZXByLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9sb25nb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9tYXJzaGFsLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9tZW1vcnlvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL21ldGFncmFtbWFyLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9tZXRob2RvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL21vZHN1cHBvcnQuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL21vZHVsZW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvbmFtZXNwYWNlb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9ub2RlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9vYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL29iamltcGwuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL29wY29kZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvb3NkZWZzLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9wYXRjaGxldmVsLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9wZ2VuLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9wZ2VuaGVhZGVycy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlhcmVuYS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlhdG9taWMuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5Y2Fwc3VsZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHljdHlwZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlkZWJ1Zy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHllcnJvcnMuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5ZnBlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weW1hdGguaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5Z2V0b3B0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weW1hY3JvLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weW1lbS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlwb3J0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weXN0YXRlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weXN0cmNtcC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlzdHJ0b2QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5dGhvbnJ1bi5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHl0aHJlYWQuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5dGltZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcmFuZ2VvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3NldG9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvc2xpY2VvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3N0cnVjdG1lbWJlci5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvc3RydWN0c2VxLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9zeW10YWJsZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvc3lzbW9kdWxlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS90cmFjZWJhY2suaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3R1cGxlb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS91Y25oYXNoLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS93YXJuaW5ncy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvd2Vha3JlZm9iamVjdC5oIFwKIAkJcHljb25maWcuaCBcCiAJCSQoUEFSU0VSX0hFQURFUlMpCiAKQEAgLTc3Niw2NSArODQzLDU2IEBACiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotIyBUZXN0IHRoZSBpbnRlcnByZXRlciAodHdpY2UsIG9uY2Ugd2l0aG91dCAucHljIGZpbGVzLCBvbmNlIHdpdGgpCitURVNUT1BUUz0JJChFWFRSQVRFU1RPUFRTKQorVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChURVNUUFlUSE9OT1BUUykKK1RFU1RSVU5ORVI9CSQoVEVTVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5CitURVNUVElNRU9VVD0JMzYwMAorCisjIFJ1biBhIGJhc2ljIHNldCBvZiByZWdyZXNzaW9uIHRlc3RzLgorIyBUaGlzIGV4Y2x1ZGVzIHNvbWUgdGVzdHMgdGhhdCBhcmUgcGFydGljdWxhcmx5IHJlc291cmNlLWludGVuc2l2ZS4KK3Rlc3Q6CQlhbGwgcGxhdGZvcm0KKwkJJChURVNUUlVOTkVSKSAkKFRFU1RPUFRTKQorCisjIFJ1biB0aGUgZnVsbCB0ZXN0IHN1aXRlIHR3aWNlIC0gb25jZSB3aXRob3V0IC5weWMgZmlsZXMsIGFuZCBvbmNlIHdpdGguCiAjIEluIHRoZSBwYXN0LCB3ZSd2ZSBoYWQgcHJvYmxlbXMgd2hlcmUgYnVncyBpbiB0aGUgbWFyc2hhbGxpbmcgb3IKICMgZWxzZXdoZXJlIGNhdXNlZCBieXRlY29kZSByZWFkIGZyb20gLnB5YyBmaWxlcyB0byBiZWhhdmUgZGlmZmVyZW50bHkKICMgdGhhbiBieXRlY29kZSBnZW5lcmF0ZWQgZGlyZWN0bHkgZnJvbSBhIC5weSBzb3VyY2UgZmlsZS4gIFNvbWV0aW1lcwotIyB0aGUgYnl0ZWNvZGUgcmVhZCBmcm9tIGEgLnB5YyBmaWxlIGhhZCB0aGUgYnVnLCBzb210aW1lcyB0aGUgZGlyZWN0bHkKKyMgdGhlIGJ5dGVjb2RlIHJlYWQgZnJvbSBhIC5weWMgZmlsZSBoYWQgdGhlIGJ1Zywgc29tZXRpbWVzIHRoZSBkaXJlY3RseQogIyBnZW5lcmF0ZWQgYnl0ZWNvZGUuICBUaGlzIGlzIHNvbWV0aW1lcyBhIHZlcnkgc2h5IGJ1ZyBuZWVkaW5nIGEgbG90IG9mCiAjIHNhbXBsZSBkYXRhLgotCi1URVNUT1BUUz0JLWwgJChFWFRSQVRFU1RPUFRTKQotVEVTVFBST0c9CSQoc3JjZGlyKS9MaWIvdGVzdC9yZWdydGVzdC5weQotVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgLVdkIC1FIC1SIC1iYiAkKFRFU1RQWVRIT05PUFRTKQotdGVzdDoJCWFsbCBwbGF0Zm9ybQotCQktZmluZCAkKHNyY2RpcikvTGliIC1uYW1lICcqLnB5W2NvXScgLXByaW50IHwgeGFyZ3Mgcm0gLWYKLQkJLSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgJChURVNUT1BUUykKLQkJJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAkKFRFU1RPUFRTKQotCiB0ZXN0YWxsOglhbGwgcGxhdGZvcm0KIAkJLWZpbmQgJChzcmNkaXIpL0xpYiAtbmFtZSAnKi5weVtjb10nIC1wcmludCB8IHhhcmdzIHJtIC1mCi0JCSQoVEVTVFBZVEhPTikgJChzcmNkaXIpL0xpYi9jb21waWxlYWxsLnB5CisJCSQoVEVTVFBZVEhPTikgLUUgJChzcmNkaXIpL0xpYi9jb21waWxlYWxsLnB5CiAJCS1maW5kICQoc3JjZGlyKS9MaWIgLW5hbWUgJyoucHlbY29dJyAtcHJpbnQgfCB4YXJncyBybSAtZgotCQktJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAtdWFsbCAkKFRFU1RPUFRTKQotCQkkKFRFU1RQWVRIT04pICQoVEVTVFBST0cpIC11YWxsICQoVEVTVE9QVFMpCisJCS0kKFRFU1RSVU5ORVIpIC11IGFsbCAkKFRFU1RPUFRTKQorCQkkKFRFU1RSVU5ORVIpIC11IGFsbCAkKFRFU1RPUFRTKQogCi0jICBSdW4gdGhlIHVuaXRlc3RzIGZvciBib3RoIGFyY2hpdGVjdHVyZXMgaW4gYSBVbml2ZXJzYWwgYnVpbGQgb24gT1NYCi0jICBNdXN0IGJlIHJ1biBvbiBhbiBJbnRlbCBib3guCisjIFJ1biB0aGUgdGVzdCBzdWl0ZSBmb3IgYm90aCBhcmNoaXRlY3R1cmVzIGluIGEgVW5pdmVyc2FsIGJ1aWxkIG9uIE9TWC4KKyMgTXVzdCBiZSBydW4gb24gYW4gSW50ZWwgYm94LgogdGVzdHVuaXZlcnNhbDoJYWxsIHBsYXRmb3JtCiAJCWlmIFsgYGFyY2hgICE9ICdpMzg2JyBdO3RoZW4gXAogCQkJZWNobyAiVGhpcyBjYW4gb25seSBiZSB1c2VkIG9uIE9TWC9pMzg2IiA7XAogCQkJZXhpdCAxIDtcCiAJCWZpCi0JCS1maW5kICQoc3JjZGlyKS9MaWIgLW5hbWUgJyoucHlbY29dJyAtcHJpbnQgfCB4YXJncyBybSAtZgotCQktJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAtdWFsbCAkKFRFU1RPUFRTKQotCQkkKFRFU1RQWVRIT04pICQoVEVTVFBST0cpIC11YWxsICQoVEVTVE9QVFMpCi0JCSQoUlVOU0hBUkVEKSAvdXNyL2xpYmV4ZWMvb2FoL3RyYW5zbGF0ZSAuLyQoQlVJTERQWVRIT04pIC1FICQoVEVTVFBST0cpIC11YWxsICQoVEVTVE9QVFMpCisJCSQoVEVTVFJVTk5FUikgLXUgYWxsICQoVEVTVE9QVFMpCisJCSQoUlVOU0hBUkVEKSAvdXNyL2xpYmV4ZWMvb2FoL3RyYW5zbGF0ZSBcCisJCQkuLyQoQlVJTERQWVRIT04pIC1FIC1tIHRlc3QgLWogMCAtdSBhbGwgJChURVNUT1BUUykKIAotCi0jIExpa2UgdGVzdGFsbCwgYnV0IHdpdGggYSBzaW5nbGUgcGFzcyBvbmx5Ci0jIHJ1biBhbiBvcHRpb25hbCBzY3JpcHQgdG8gaW5jbHVkZSBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidWlsZCBlbnZpcm9ubWVudAorIyBMaWtlIHRlc3RhbGwsIGJ1dCB3aXRoIG9ubHkgb25lIHBhc3MgYW5kIHdpdGhvdXQgbXVsdGlwbGUgcHJvY2Vzc2VzLgorIyBSdW4gYW4gb3B0aW9uYWwgc2NyaXB0IHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1aWxkIGVudmlyb25tZW50LgogYnVpbGRib3R0ZXN0OglhbGwgcGxhdGZvcm0KIAkJLUBpZiB3aGljaCBweWJ1aWxkYm90LmlkZW50aWZ5ID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCiAJCQlweWJ1aWxkYm90LmlkZW50aWZ5ICJDQz0nJChDQyknIiAiQ1hYPSckKENYWCknIjsgXAogCQlmaQotCQkkKFRFU1RQWVRIT04pICQoVEVTVFBST0cpIC11YWxsIC1yd1cgJChURVNUT1BUUykKKwkJJChURVNUUlVOTkVSKSAtaiAxIC11IGFsbCAtVyAtLXRpbWVvdXQ9JChURVNUVElNRU9VVCkgJChURVNUT1BUUykKIAogUVVJQ0tURVNUT1BUUz0JJChURVNUT1BUUykgLXggdGVzdF9zdWJwcm9jZXNzIHRlc3RfaW8gdGVzdF9saWIydG8zIFwKIAkJdGVzdF9tdWx0aWJ5dGVjb2RlYyB0ZXN0X3VybGxpYjJfbG9jYWxuZXQgdGVzdF9pdGVydG9vbHMgXAogCQl0ZXN0X211bHRpcHJvY2Vzc2luZyB0ZXN0X21haWxib3ggdGVzdF9zb2NrZXQgdGVzdF9wb2xsIFwKLQkJdGVzdF9zZWxlY3QgdGVzdF96aXBmaWxlCisJCXRlc3Rfc2VsZWN0IHRlc3RfemlwZmlsZSB0ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcwogcXVpY2t0ZXN0OglhbGwgcGxhdGZvcm0KLQkJLWZpbmQgJChzcmNkaXIpL0xpYiAtbmFtZSAnKi5weVtjb10nIC1wcmludCB8IHhhcmdzIHJtIC1mCi0JCS0kKFRFU1RQWVRIT04pICQoVEVTVFBST0cpICQoUVVJQ0tURVNUT1BUUykKLQkJJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAkKFFVSUNLVEVTVE9QVFMpCisJCSQoVEVTVFJVTk5FUikgJChRVUlDS1RFU1RPUFRTKQogCi1NRU1URVNUT1BUUz0gICAgJChRVUlDS1RFU1RPUFRTKSAteCB0ZXN0X2RsIHRlc3RfX19hbGxfXyB0ZXN0X2ZvcmsxIFwKLQkJdGVzdF9sb25nZXhwCi1tZW10ZXN0OglhbGwgcGxhdGZvcm0KLQkJLXJtIC1mICQoc3JjZGlyKS9MaWIvdGVzdC8qLnB5W2NvXQotCQktJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAkKE1FTVRFU1RPUFRTKQotCQkkKFRFU1RQWVRIT04pICQoVEVTVFBST0cpICQoTUVNVEVTVE9QVFMpCiAKIGluc3RhbGw6IGFsdGluc3RhbGwgYmluaW5zdGFsbCBtYW5pbnN0YWxsCiAKQEAgLTg3NSw3ICs5MzMsNyBAQAogCWRvbmUKIAkkKElOU1RBTExfUFJPR1JBTSkgJChCVUlMRFBZVEhPTikgJChERVNURElSKSQoQklORElSKS9weXRob24kKExEVkVSU0lPTikkKEVYRSkKIAktaWYgdGVzdCAiJChWRVJTSU9OKSIgIT0gIiQoTERWRVJTSU9OKSI7IHRoZW4gXAotCQlpZiB0ZXN0IC1mICQoREVTVERJUikkKEJJTkRJUikvJChQWVRIT04pJChWRVJTSU9OKSQoRVhFKSAtbyAtaCAkKERFU1RESVIpJChCSU5ESVIpLyQoUFlUSE9OKSQoVkVSU0lPTikkKEVYRSk7IFwKKwkJaWYgdGVzdCAtZiAkKERFU1RESVIpJChCSU5ESVIpL3B5dGhvbiQoVkVSU0lPTikkKEVYRSkgLW8gLWggJChERVNURElSKSQoQklORElSKS9weXRob24kKFZFUlNJT04pJChFWEUpOyBcCiAJCXRoZW4gcm0gLWYgJChERVNURElSKSQoQklORElSKS9weXRob24kKFZFUlNJT04pJChFWEUpOyBcCiAJCWZpOyBcCiAJCShjZCAkKERFU1RESVIpJChCSU5ESVIpOyAkKExOKSBweXRob24kKExEVkVSU0lPTikkKEVYRSkgcHl0aG9uJChWRVJTSU9OKSQoRVhFKSk7IFwKQEAgLTg5NiwxMSArOTU0LDExIEBACiAJZmkKIAogYmluaW5zdGFsbDogYWx0YmluaW5zdGFsbAotCS1pZiB0ZXN0IC1mICQoREVTVERJUikkKEJJTkRJUikvJChQWVRIT04pMyQoRVhFKSAtbyAtaCAkKERFU1RESVIpJChCSU5ESVIpLyQoUFlUSE9OKTMkKEVYRSk7IFwKLQl0aGVuIHJtIC1mICQoREVTVERJUikkKEJJTkRJUikvJChQWVRIT04pMyQoRVhFKTsgXAorCS1pZiB0ZXN0IC1mICQoREVTVERJUikkKEJJTkRJUikvcHl0aG9uMyQoRVhFKSAtbyAtaCAkKERFU1RESVIpJChCSU5ESVIpL3B5dGhvbjMkKEVYRSk7IFwKKwl0aGVuIHJtIC1mICQoREVTVERJUikkKEJJTkRJUikvcHl0aG9uMyQoRVhFKTsgXAogCWVsc2UgdHJ1ZTsgXAogCWZpCi0JKGNkICQoREVTVERJUikkKEJJTkRJUik7ICQoTE4pIHB5dGhvbiQoVkVSU0lPTikkKEVYRSkgJChQWVRIT04pMyQoRVhFKSkKKwkoY2QgJChERVNURElSKSQoQklORElSKTsgJChMTikgLXMgcHl0aG9uJChWRVJTSU9OKSQoRVhFKSBweXRob24zJChFWEUpKQogCS1pZiB0ZXN0ICIkKFZFUlNJT04pIiAhPSAiJChMRFZFUlNJT04pIjsgdGhlbiBcCiAJCXJtIC1mICQoREVTVERJUikkKEJJTkRJUikvcHl0aG9uJChWRVJTSU9OKS1jb25maWc7IFwKIAkJKGNkICQoREVTVERJUikkKEJJTkRJUik7ICQoTE4pIC1zIHB5dGhvbiQoTERWRVJTSU9OKS1jb25maWcgcHl0aG9uJChWRVJTSU9OKS1jb25maWcpOyBcCkBAIC05MTcsNiArOTc1LDggQEAKIAkoY2QgJChERVNURElSKSQoQklORElSKTsgJChMTikgLXMgcHlkb2MkKFZFUlNJT04pIHB5ZG9jMykKIAktcm0gLWYgJChERVNURElSKSQoQklORElSKS8ydG8zCiAJKGNkICQoREVTVERJUikkKEJJTkRJUik7ICQoTE4pIC1zIDJ0bzMtJChWRVJTSU9OKSAydG8zKQorCS1ybSAtZiAkKERFU1RESVIpJChCSU5ESVIpL3B5dmVudgorCShjZCAkKERFU1RESVIpJChCSU5ESVIpOyAkKExOKSAtcyBweXZlbnYtJChWRVJTSU9OKSBweXZlbnYpCiAKICMgSW5zdGFsbCB0aGUgdmVyc2lvbmVkIG1hbnVhbCBwYWdlCiBhbHRtYW5pbnN0YWxsOgpAQCAtOTQ3LDIxICsxMDA3LDQzIEBACiAJCXRlc3QvY2prZW5jb2RpbmdzIHRlc3QvZGVjaW1hbHRlc3RkYXRhIHRlc3QveG1sdGVzdGRhdGEgXAogCQl0ZXN0L3N1YnByb2Nlc3NkYXRhIHRlc3Qvc25kaGRyZGF0YSBcCiAJCXRlc3QvdHJhY2VkbW9kdWxlcyB0ZXN0L2VuY29kZWRfbW9kdWxlcyBcCi0JCWNvbmN1cnJlbnQgY29uY3VycmVudC9mdXR1cmVzIGVuY29kaW5ncyBcCi0JCWVtYWlsIGVtYWlsL21pbWUgZW1haWwvdGVzdCBlbWFpbC90ZXN0L2RhdGEgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zL2ZvbyBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3Mvbm90X2FfbmFtZXNwYWNlX3BrZyBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3Mvbm90X2FfbmFtZXNwYWNlX3BrZy9mb28gXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24xIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wb3J0aW9uMS9mb28gXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24yIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wb3J0aW9uMi9mb28gXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QxIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0MS9wYXJlbnQgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QxL3BhcmVudC9jaGlsZCBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDIgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QyL3BhcmVudCBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDIvcGFyZW50L2NoaWxkIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0MyBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDMvcGFyZW50IFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0My9wYXJlbnQvY2hpbGQgXAorICAgICAgICAgICAgICAgIHRlc3QvbmFtZXNwYWNlX3BrZ3MvbW9kdWxlX2FuZF9uYW1lc3BhY2VfcGFja2FnZSBcCisgICAgICAgICAgICAgICAgdGVzdC9uYW1lc3BhY2VfcGtncy9tb2R1bGVfYW5kX25hbWVzcGFjZV9wYWNrYWdlL2FfdGVzdCBcCisJCWNvbGxlY3Rpb25zIGNvbmN1cnJlbnQgY29uY3VycmVudC9mdXR1cmVzIGVuY29kaW5ncyBcCisJCWVtYWlsIGVtYWlsL21pbWUgdGVzdC90ZXN0X2VtYWlsIHRlc3QvdGVzdF9lbWFpbC9kYXRhIFwKIAkJaHRtbCBqc29uIHRlc3QvanNvbl90ZXN0cyBodHRwIGRibSB4bWxycGMgXAogCQlzcWxpdGUzIHNxbGl0ZTMvdGVzdCBcCiAJCWxvZ2dpbmcgY3N2IHdzZ2lyZWYgdXJsbGliIFwKIAkJbGliMnRvMyBsaWIydG8zL2ZpeGVzIGxpYjJ0bzMvcGdlbjIgbGliMnRvMy90ZXN0cyBcCi0JCWxpYjJ0bzMvdGVzdHMvZGF0YSBsaWIydG8zL3Rlc3RzL2RhdGEvZml4ZXJzIGxpYjJ0bzMvdGVzdHMvZGF0YS9maXhlcnMvbXlmaXhlcyBcCisJCWxpYjJ0bzMvdGVzdHMvZGF0YSBsaWIydG8zL3Rlc3RzL2RhdGEvZml4ZXJzIFwKKwkJbGliMnRvMy90ZXN0cy9kYXRhL2ZpeGVycy9teWZpeGVzIFwKIAkJY3R5cGVzIGN0eXBlcy90ZXN0IGN0eXBlcy9tYWNob2xpYiBpZGxlbGliIGlkbGVsaWIvSWNvbnMgXAogCQlkaXN0dXRpbHMgZGlzdHV0aWxzL2NvbW1hbmQgZGlzdHV0aWxzL3Rlc3RzICQoWE1MTElCU1VCRElSUykgXAotCQlpbXBvcnRsaWIgaW1wb3J0bGliL3Rlc3QgaW1wb3J0bGliL3Rlc3QvYnVpbHRpbiBcCi0JCWltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbiBpbXBvcnRsaWIvdGVzdC9mcm96ZW4gXAotCQlpbXBvcnRsaWIvdGVzdC9pbXBvcnRfIGltcG9ydGxpYi90ZXN0L3NvdXJjZSBcCisJCWltcG9ydGxpYiB0ZXN0L3Rlc3RfaW1wb3J0bGliIHRlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbiBcCisJCXRlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uIHRlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuIFwKKwkJdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfIHRlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlIFwKIAkJdHVydGxlZGVtbyBcCiAJCW11bHRpcHJvY2Vzc2luZyBtdWx0aXByb2Nlc3NpbmcvZHVtbXkgXAotCQl1bml0dGVzdCB1bml0dGVzdC90ZXN0IFwKKwkJdW5pdHRlc3QgdW5pdHRlc3QvdGVzdCB1bml0dGVzdC90ZXN0L3Rlc3Rtb2NrIFwKKwkJdmVudiB2ZW52L3NjcmlwdHMgdmVudi9zY3JpcHRzL3Bvc2l4IFwKIAkJY3Vyc2VzIHB5ZG9jX2RhdGEgJChNQUNIREVQUykKIGxpYmluc3RhbGw6CWJ1aWxkX2FsbCAkKHNyY2RpcikvTGliLyQoUExBVERJUikgJChzcmNkaXIpL01vZHVsZXMveHhtb2R1bGUuYwogCUBmb3IgaSBpbiAkKFNDUklQVERJUikgJChMSUJERVNUKTsgXApAQCAtOTgzLDcgKzEwNjUsNyBAQAogCQllbHNlCXRydWU7IFwKIAkJZmk7IFwKIAlkb25lCi0JQGZvciBpIGluICQoc3JjZGlyKS9MaWIvKi5weSAkKHNyY2RpcikvTGliLyouZWdnLWluZm8gOyBcCisJQGZvciBpIGluICQoc3JjZGlyKS9MaWIvKi5weSBgY2F0IHB5YnVpbGRkaXIudHh0YC9fc3lzY29uZmlnZGF0YS5weTsgXAogCWRvIFwKIAkJaWYgdGVzdCAteCAkJGk7IHRoZW4gXAogCQkJJChJTlNUQUxMX1NDUklQVCkgJCRpICQoREVTVERJUikkKExJQkRFU1QpOyBcCkBAIC0xMDI0LDI3ICsxMTA2LDI3IEBACiAJCQkkKERFU1RESVIpJChMSUJERVNUKS9kaXN0dXRpbHMvdGVzdHMgOyBcCiAJZmkKIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAgJChSVU5TSEFSRUQpIFwKLQkJLi8kKEJVSUxEUFlUSE9OKSAtV2kgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCisJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAogCQktZCAkKExJQkRFU1QpIC1mIFwKIAkJLXggJ2JhZF9jb2Rpbmd8YmFkc3ludGF4fHNpdGUtcGFja2FnZXN8bGliMnRvMy90ZXN0cy9kYXRhJyBcCiAJCSQoREVTVERJUikkKExJQkRFU1QpCiAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKLQkJLi8kKEJVSUxEUFlUSE9OKSAtV2kgLU8gJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCisJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC1PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAogCQktZCAkKExJQkRFU1QpIC1mIFwKIAkJLXggJ2JhZF9jb2Rpbmd8YmFkc3ludGF4fHNpdGUtcGFja2FnZXN8bGliMnRvMy90ZXN0cy9kYXRhJyBcCiAJCSQoREVTVERJUikkKExJQkRFU1QpCiAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgICQoUlVOU0hBUkVEKSBcCi0JCS4vJChCVUlMRFBZVEhPTikgLVdpICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKIAkJLWQgJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzIC1mIFwKIAkJLXggYmFkc3ludGF4ICQoREVTVERJUikkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMKIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAotCQkuLyQoQlVJTERQWVRIT04pIC1XaSAtTyAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKKwkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgLU8gJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCiAJCS1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCiAJCS14IGJhZHN5bnRheCAkKERFU1RESVIpJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzCiAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKLQkJLi8kKEJVSUxEUFlUSE9OKSAtbSBsaWIydG8zLnBnZW4yLmRyaXZlciAkKERFU1RESVIpJChMSUJERVNUKS9saWIydG8zL0dyYW1tYXIudHh0CisJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9HcmFtbWFyLnR4dAogCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCi0JCS4vJChCVUlMRFBZVEhPTikgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9QYXR0ZXJuR3JhbW1hci50eHQKKwkJJChQWVRIT05fRk9SX0JVSUxEKSAtbSBsaWIydG8zLnBnZW4yLmRyaXZlciAkKERFU1RESVIpJChMSUJERVNUKS9saWIydG8zL1BhdHRlcm5HcmFtbWFyLnR4dAogCiAjIENyZWF0ZSB0aGUgUExBVERJUiBzb3VyY2UgZGlyZWN0b3J5LCBpZiBvbmUgd2Fzbid0IGRpc3RyaWJ1dGVkLi4KICQoc3JjZGlyKS9MaWIvJChQTEFURElSKToKQEAgLTEwNTUsNiArMTEzNywxMiBAQAogCWV4cG9ydCBEWUxEX0ZSQU1FV09SS19QQVRIOyBEWUxEX0ZSQU1FV09SS19QQVRIPSJgcHdkYCI7IFwKIAlleHBvcnQgRVhFOyBFWEU9IiQoQlVJTERFWEUpIjsgXAogCWlmIFsgLW4gIiQoTVVMVElBUkNIKSIgXTsgdGhlbiBleHBvcnQgTVVMVElBUkNIOyBNVUxUSUFSQ0g9JChNVUxUSUFSQ0gpOyBmaTsgXAorCWV4cG9ydCBQWVRIT05fRk9SX0JVSUxEOyBcCisJaWYgWyAiJChCVUlMRF9HTlVfVFlQRSkiID0gIiQoSE9TVF9HTlVfVFlQRSkiIF07IHRoZW4gXAorCSAgUFlUSE9OX0ZPUl9CVUlMRD0iJChCVUlMRFBZVEhPTikiOyBcCisJZWxzZSBcCisJICBQWVRIT05fRk9SX0JVSUxEPSIkKFBZVEhPTl9GT1JfQlVJTEQpIjsgXAorCWZpOyBcCiAJY2QgJChzcmNkaXIpL0xpYi8kKFBMQVRESVIpOyAkKFJVTlNIQVJFRCkgLi9yZWdlbgogCiBweXRob24tY29uZmlnOiAkKHNyY2RpcikvTWlzYy9weXRob24tY29uZmlnLmluCkBAIC0xMTM5LDExICsxMjI3LDEzIEBACiAjIEluc3RhbGwgdGhlIGR5bmFtaWNhbGx5IGxvYWRhYmxlIG1vZHVsZXMKICMgVGhpcyBnb2VzIGludG8gJChleGVjX3ByZWZpeCkKIHNoYXJlZGluc3RhbGw6IHNoYXJlZG1vZHMKLQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAtRSAkKHNyY2Rpcikvc2V0dXAucHkgaW5zdGFsbCBcCisJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgJChzcmNkaXIpL3NldHVwLnB5IGluc3RhbGwgXAogCSAgIAktLXByZWZpeD0kKHByZWZpeCkgXAogCQktLWluc3RhbGwtc2NyaXB0cz0kKEJJTkRJUikgXAogCQktLWluc3RhbGwtcGxhdGxpYj0kKERFU1RTSEFSRUQpIFwKIAkJLS1yb290PSQoREVTVERJUikvCisJLXJtICQoREVTVERJUikkKERFU1RTSEFSRUQpL19zeXNjb25maWdkYXRhLnB5CisJLXJtIC1yICQoREVTVERJUikkKERFU1RTSEFSRUQpL19fcHljYWNoZV9fCiAKICMgSGVyZSBhcmUgYSBjb3VwbGUgb2YgdGFyZ2V0cyBmb3IgTWFjT1NYIGFnYWluLCB0byBpbnN0YWxsIGEgZnVsbAogIyBmcmFtZXdvcmstYmFzZWQgUHl0aG9uLiBmcmFtZXdvcmtpbnN0YWxsIGluc3RhbGxzIGV2ZXJ5dGhpbmcsIHRoZQpAQCAtMTIxNCwxMyArMTMwNCwxMyBAQAogIyBUaGlzIGluc3RhbGxzIGEgZmV3IG9mIHRoZSB1c2VmdWwgc2NyaXB0cyBpbiBUb29scy9zY3JpcHRzCiBzY3JpcHRzaW5zdGFsbDoKIAlTUkNESVI9JChzcmNkaXIpICQoUlVOU0hBUkVEKSBcCi0JLi8kKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9zZXR1cC5weSBpbnN0YWxsIFwKKwkkKFBZVEhPTl9GT1JfQlVJTEQpICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3NldHVwLnB5IGluc3RhbGwgXAogCS0tcHJlZml4PSQocHJlZml4KSBcCiAJLS1pbnN0YWxsLXNjcmlwdHM9JChCSU5ESVIpIFwKIAktLXJvb3Q9JChERVNURElSKS8KIAogIyBCdWlsZCB0aGUgdG9wbGV2ZWwgTWFrZWZpbGUKLU1ha2VmaWxlLnByZTogTWFrZWZpbGUucHJlLmluIGNvbmZpZy5zdGF0dXMKK01ha2VmaWxlLnByZTogJChzcmNkaXIpL01ha2VmaWxlLnByZS5pbiBjb25maWcuc3RhdHVzCiAJQ09ORklHX0ZJTEVTPU1ha2VmaWxlLnByZSBDT05GSUdfSEVBREVSUz0gJChTSEVMTCkgY29uZmlnLnN0YXR1cwogCSQoTUFLRSkgLWYgTWFrZWZpbGUucHJlIE1ha2VmaWxlCiAKQEAgLTEyNjMsNiArMTM1MywxMCBAQAogCWV0YWdzIEluY2x1ZGUvKi5oOyBcCiAJZm9yIGkgaW4gJChTUkNESVJTKTsgZG8gZXRhZ3MgLWEgJCRpLyouW2NoXTsgZG9uZQogCisjIFRvdWNoIGdlbmVyYXRlZCBmaWxlcwordG91Y2g6CisJaGcgLS1jb25maWcgZXh0ZW5zaW9ucy50b3VjaD1Ub29scy9oZy9oZ3RvdWNoLnB5IHRvdWNoIC12CisKICMgU2FuaXRhdGlvbiB0YXJnZXRzIC0tIGNsZWFuIGxlYXZlcyBsaWJyYXJpZXMsIGV4ZWN1dGFibGVzIGFuZCB0YWdzCiAjIGZpbGVzLCB3aGljaCBjbG9iYmVyIHJlbW92ZXMgYXMgd2VsbAogcHljcmVtb3ZhbDoKQEAgLTEyODUsMTYgKzEzNzksMTggQEAKIAlmaW5kIC4gLW5hbWUgJyouc1tvbF0nIC1leGVjIHJtIC1mIHt9ICc7JwogCWZpbmQgLiAtbmFtZSAnKi5zby5bMC05XSouWzAtOV0qJyAtZXhlYyBybSAtZiB7fSAnOycKIAlmaW5kIGJ1aWxkIC1uYW1lICdmZmljb25maWcuaCcgLWV4ZWMgcm0gLWYge30gJzsnIHx8IHRydWUKLQlmaW5kIGJ1aWxkIC1uYW1lICdmZmljb25maWcucHknIC1leGVjIHJtIC1mIHt9ICc7JyB8fCB0cnVlCisJZmluZCBidWlsZCAtbmFtZSAnKi5weScgLWV4ZWMgcm0gLWYge30gJzsnIHx8IHRydWUKKwlmaW5kIGJ1aWxkIC1uYW1lICcqLnB5W2NvXScgLWV4ZWMgcm0gLWYge30gJzsnIHx8IHRydWUKKwktcm0gLWYgcHlidWlsZGRpci50eHQKIAktcm0gLWYgTGliL2xpYjJ0bzMvKkdyYW1tYXIqLnBpY2tsZQotCS1ybSAtZiBNb2R1bGVzL190ZXN0ZW1iZWQKKwktcm0gLWYgTW9kdWxlcy9fdGVzdGVtYmVkIE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIKIAogcHJvZmlsZS1yZW1vdmFsOgogCWZpbmQgLiAtbmFtZSAnKi5nYz8/JyAtZXhlYyBybSAtZiB7fSAnOycKIAogY2xvYmJlcjogY2xlYW4gcHJvZmlsZS1yZW1vdmFsCiAJLXJtIC1mICQoQlVJTERQWVRIT04pICQoUEdFTikgJChMSUJSQVJZKSAkKExETElCUkFSWSkgJChETExMSUJSQVJZKSBcCi0JCXRhZ3MgVEFHUyBQYXJzZXIvcGdlbi5zdGFtcCBcCisJCXRhZ3MgVEFHUyBcCiAJCWNvbmZpZy5jYWNoZSBjb25maWcubG9nIHB5Y29uZmlnLmggTW9kdWxlcy9jb25maWcuYwogCS1ybSAtcmYgYnVpbGQgcGxhdGZvcm0KIAktcm0gLXJmICQoUFlUSE9ORlJBTUVXT1JLRElSKQpAQCAtMTMxMCw3ICsxNDA2LDYgQEAKIAkJTW9kdWxlcy9TZXR1cCBNb2R1bGVzL1NldHVwLmxvY2FsIE1vZHVsZXMvU2V0dXAuY29uZmlnIFwKIAkJTW9kdWxlcy9sZF9zb19haXggTW9kdWxlcy9weXRob24uZXhwIE1pc2MvcHl0aG9uLnBjCiAJLXJtIC1mIHB5dGhvbiotZ2RiLnB5Ci0JLXJtIC1mIHB5YnVpbGRkaXIudHh0CiAJZmluZCAkKHNyY2RpcikgJygnIC1uYW1lICcqLmZkYycgLW8gLW5hbWUgJyp+JyBcCiAJCQkgICAtbyAtbmFtZSAnW0AsI10qJyAtbyAtbmFtZSAnKi5vbGQnIFwKIAkJCSAgIC1vIC1uYW1lICcqLm9yaWcnIC1vIC1uYW1lICcqLnJlaicgXApAQCAtMTMyNSw4ICsxNDIwLDcgQEAKICMgRmluZCBmaWxlcyB3aXRoIGZ1bm55IG5hbWVzCiBmdW5ueToKIAlmaW5kICQoU1VCRElSUykgJChTVUJESVJTVE9PKSBcCi0JCS1uYW1lIC5zdm4gLXBydW5lIFwKLQkJLW8gLXR5cGUgZCBcCisJCS10eXBlIGQgXAogCQktbyAtbmFtZSAnKi5bY2hzXScgXAogCQktbyAtbmFtZSAnKi5weScgXAogCQktbyAtbmFtZSAnKi5weXcnIFwKQEAgLTEzNjUsMTMgKzE0NTksMTMgQEAKIFB5dGhvbi90aHJlYWQubzogQFRIUkVBREhFQURFUlNACiAKICMgRGVjbGFyZSB0YXJnZXRzIHRoYXQgYXJlbid0IHJlYWwgZmlsZXMKLS5QSE9OWTogYWxsIGJ1aWxkX2FsbCBzaGFyZWRtb2RzIG9sZHNoYXJlZG1vZHMgdGVzdCBxdWlja3Rlc3QgbWVtdGVzdAorLlBIT05ZOiBhbGwgYnVpbGRfYWxsIHNoYXJlZG1vZHMgb2xkc2hhcmVkbW9kcyB0ZXN0IHF1aWNrdGVzdAogLlBIT05ZOiBpbnN0YWxsIGFsdGluc3RhbGwgb2xkc2hhcmVkaW5zdGFsbCBiaW5pbnN0YWxsIGFsdGJpbmluc3RhbGwKIC5QSE9OWTogbWFuaW5zdGFsbCBsaWJpbnN0YWxsIGluY2xpbnN0YWxsIGxpYmFpbnN0YWxsIHNoYXJlZGluc3RhbGwKIC5QSE9OWTogZnJhbWV3b3JraW5zdGFsbCBmcmFtZXdvcmtpbnN0YWxsZnJhbWV3b3JrIGZyYW1ld29ya2luc3RhbGxzdHJ1Y3R1cmUKIC5QSE9OWTogZnJhbWV3b3JraW5zdGFsbG1hY2xpYiBmcmFtZXdvcmtpbnN0YWxsYXBwcyBmcmFtZXdvcmtpbnN0YWxsdW5peHRvb2xzCiAuUEhPTlk6IGZyYW1ld29ya2FsdGluc3RhbGx1bml4dG9vbHMgcmVjaGVjayBhdXRvY29uZiBjbGVhbiBjbG9iYmVyIGRpc3RjbGVhbgotLlBIT05ZOiBzbWVsbHkgZnVubnkgcGF0Y2hjaGVjayBhbHRtYW5pbnN0YWxsCisuUEhPTlk6IHNtZWxseSBmdW5ueSBwYXRjaGNoZWNrIHRvdWNoIGFsdG1hbmluc3RhbGwKIC5QSE9OWTogZ2RiaG9va3MKIAogIyBJRiBZT1UgUFVUIEFOWVRISU5HIEhFUkUgSVQgV0lMTCBHTyBBV0FZCmRpZmYgLS1naXQgYS9NaXNjL0FDS1MgYi9NaXNjL0FDS1MKaW5kZXggZjAyZWYyMy4uN2I1YzEwNiAxMDA2NDQKLS0tIGEvTWlzYy9BQ0tTCisrKyBiL01pc2MvQUNLUwpAQCAtMTMsOCArMTMsMTEgQEAKIAogQWFoegogTWljaGFlbCBBYmJvdHQKK1Jhaml2IEFicmFoYW0KIERhdmlkIEFicmFoYW1zCitNYXJjIEFicmFtb3dpdHoKIFJvbiBBZGFtCitBbGkgQWZzaGFyCiBKaW0gQWhsc3Ryb20KIEZhcmhhbiBBaG1hZAogTWF0dGhldyBBaHJlbnMKQEAgLTM2LDIzICszOSwyNSBAQAogRXJpayBBbmRlcnPDqW4KIE9saXZlciBBbmRyaWNoCiBSb3NzIEFuZHJ1cworSnVhbmNhcmxvIEHDsWV6CiBKw6lyw6lteSBBbmdlcgogQW5rdXIgQW5rYW4KIEpvbiBBbmdsaW4KIEhlaWRpIEFubmV4c3RhZAorUmFtY2hhbmRyYSBBcHRlCiDDiXJpYyBBcmF1am8KIEFsaWNpYSBBcmxlbgogSmVmZnJleSBBcm1zdHJvbmcKIEphc29uIEFzYmFocgogRGF2aWQgQXNjaGVyCiBDaHJpcyBBdExlZQorQXltZXJpYyBBdWd1c3RpbgogSm9obiBBeWNvY2sKLUphbi1IZWluIELDvGhybWFuCiBEb25vdmFuIEJhYXJkYQogQXJuZSBCYWJlbmhhdXNlcmhlaWRlCiBBdHRpbGEgQmFibwotQWxmb25zbyBCYWNpZXJvCiBNYXJjaW4gQmFjaHJ5CitBbGZvbnNvIEJhY2llcm8KIER3YXluZSBCYWlsZXkKIFN0aWcgQmFra2VuCiBHcmVnIEJhbGwKQEAgLTY3LDIzICs3MiwyNSBAQAogQW50b24gQmFya292c2t5CiBOaWNrIEJhcm5lcwogUXVlbnRpbiBCYXJuZXMKK0RhdmlkIEJhcm5ldHQKIE1hdHRoZXcgQmFybmV0dAogUmljaGFyZCBCYXJyYW4KIENlc2FyIEVkdWFyZG8gQmFycm9zCiBEZXMgQmFycnkKIFVsZiBCYXJ0ZWx0CiBEb24gQmFzaGZvcmQKK1Bpb3IgQmFzdGlkYQogTmljayBCYXN0aW4KIE5lZCBCYXRjaGVsZGVyCiBKZWZmIEJhdWVyCi1NaWtlIEJheWVyCiBNaWNoYWVsIFIgQmF4CiBBbnRob255IEJheHRlcgorTWlrZSBCYXllcgogU2FtdWVsIEwuIEJheWVyCiBEb25hbGQgQmVhdWRyeQogRGF2aWQgQmVhemxleQotUm9iaW4gQmVja2VyCiBOZWFsIEJlY2tlcgorUm9iaW4gQmVja2VyCiBUb3JzdGVuIEJlY2tlcgogQmlsbCBCZWRmb3JkCiBTdGVmYW4gQmVobmVsCkBAIC05Niw5ICsxMDMsMTEgQEAKIEFuZHJldyBCZW5uZXR0cwogQW5keSBCZW5za3kKIEJlbm5ldHQgQmVuc29uCitFenJhIEJlcmNoCiBNaWNoZWwgVmFuIGRlbiBCZXJnaAogSnVsaWFuIEJlcm1hbgogQnJpY2UgQmVybmEKK09saXZpZXIgQmVybmFyZAogRXJpYyBCZXNlcgogU3RldmVuIEJldGhhcmQKIFN0ZXBoZW4gQmV2YW4KQEAgLTExMSw2ICsxMjAsNyBAQAogU3R1YXJ0IEJpc2hvcAogUm95IEJpeGxlcgogSm9uYXRoYW4gQmxhY2sKK1JlbmF1ZCBCbGFuY2gKIE1pa2UgQmxhbmQKIE1hcnRpbiBCbGVzcwogUGFibG8gQmxleWVyCkBAIC0xMjEsMTEgKzEzMSwxMyBAQAogTWF0dGhldyBCb2VkaWNrZXIKIFJvYmluIEJvZXJkaWprCiBEYXZpZCBCb2xlbgotRm9yZXN0IEJvbmQKIEdhd2FpbiBCb2x0b24KK0ZvcmVzdCBCb25kCiBHcmVnb3J5IEJvbmQKK01hdGlhcyBCb3JkZXNlCiBKdXJqZW4gQm9zCiBQZXRlciBCb3NjaAorRGFuIEJvc3dlbGwKIEVyaWMgQm91Y2sKIFRoaWVycnkgQm91c2NoCiBTZWJhc3RpYW4gQm92aW5nCkBAIC0xMzYsOSArMTQ4LDExIEBACiBHZW9yZyBCcmFuZGwKIENocmlzdG9waGVyIEJyYW5ub24KIFRlcnJlbmNlIEJyYW5ub24KK0VyaWsgQnJheQogQnJpYW4gQnJhemlsCiBEYXZlIEJyZW5uYW4KIFRvbSBCcmlkZ21hbgorQW50aG9ueSBCcmlnZ3MKIEtlaXRoIEJyaWdncwogVG9iaWFzIEJyaW5rCiBSaWNoYXJkIEJyb2RpZQpAQCAtMTQ2LDYgKzE2MCw3IEBACiBEYW5pZWwgQnJvdHNreQogSmVhbiBCcm91d2VycwogR2FyeSBTLiBCcm93bgorVGl0dXMgQnJvd24KIE9sZWcgQnJveXRtYW5uCiBEYXZlIEJydWVjawogRnJhbmNpc2NvIE1hcnTDrW4gQnJ1Z3XDqQpAQCAtMTUzLDYgKzE2OCw3IEBACiBGbG9yaXMgQnJ1eW5vb2doZQogU3RhbiBCdWJyb3Vza2kKIEVyaWsgZGUgQnVlZ2VyCitKYW4tSGVpbiBCw7xocm1hbgogRGljayBCdWx0ZXJtYW4KIEJpbGwgQnVtZ2FybmVyCiBKaW1teSBCdXJnZXR0CkBAIC0xNjIsMTQgKzE3OCwxNSBAQAogVGFybiBXZWlzbmVyIEJ1cnRvbgogTGVlIEJ1c2J5CiBSYWxwaCBCdXRsZXIKK05pY29sYXMgQ2Fkb3UKIEpwIENhbGRlcm9uZQogQXJuYXVkIENhbG1ldHRlcwogRGFuaWVsIENhbHZlbG8KIFRvbnkgQ2FtcGJlbGwKIEJyZXR0IENhbm5vbgogTWlrZSBDYXJsdG9uCitQaWVycmUgQ2FycmllcgogVGVycnkgQ2Fycm9sbAotRGFtaWVuIENhc3NvdQogTG9yZW56byBNLiBDYXR1Y2NpCiBEb25uIENhdmUKIENoYXJsZXMgQ2F6YWJvbgpAQCAtMTgyLDkgKzE5OSwxMCBAQAogSm9obiBDaGFuZGxlcgogSHllLVNoaWsgQ2hhbmcKIEplZmZyZXkgQ2hhbmcKLU1pdGNoIENoYXBtYW4KLUdyZWcgQ2hhcG1hbgorR29kZWZyb2lkIENoYXBlbGxlCiBCcmFkIENoYXBtYW4KK0dyZWcgQ2hhcG1hbgorTWl0Y2ggQ2hhcG1hbgogRGF2aWQgQ2hhdW0KIE5pY29sYXMgQ2hhdXZhdAogSmVycnkgQ2hlbgpAQCAtMTk5LDkgKzIxNywxMSBAQAogRGF2aWQgQ2luZWdlCiBDcmFpZyBDaXRybwogR2lsbGVzIENpdmFyaW8KK0NocmlzIENsYXJrCiBNaWtlIENsYXJrc29uCiBBbmRyZXcgQ2xlZ2cKIEJyYWQgQ2xlbWVudHMKK1JvYmJpZSBDbGVtb25zCiBTdGV2ZSBDbGlmdAogSGVydsOpIENvYXRhbmhheQogTmljayBDb2dobGFuCkBAIC0yMTIsOCArMjMyLDkgQEAKIEplZmZlcnkgQ29sbGlucwogUm9iZXJ0IENvbGxpbnMKIFBhdWwgQ29sb21pZXRzCi1EZW52ZXIgQ29uZXliZWFyZQorQ2hyaXN0b3BoZSBDb21iZWxsZXMKIEdlcmVteSBDb25kcmEKK0RlbnZlciBDb25leWJlYXJlCiBKdWFuIEpvc8OpIENvbnRpCiBNYXR0IENvbndheQogRGF2aWQgTS4gQ29va2UKQEAgLTI0Miw2ICsyNjMsNyBAQAogQW50b25pbyBDdW5pCiBCcmlhbiBDdXJ0aW4KIExpc2FuZHJvIERhbGNpbgorRGFycmVuIERhbGUKIEFuZHJldyBEYWxrZQogTGFycyBEYW1lcm93CiBFdmFuIERhbmRyZWEKQEAgLTI1MCwxMCArMjcyLDEzIEBACiBCZW4gRGFybmVsbAogS3VzaGFsIERhcwogSm9uYXRoYW4gRGFzdGVlbAorUGllcnJlLVl2ZXMgRGF2aWQKK1hhdmllciBkZSBHYXllCiBKb2huIERlR29vZAogTmVkIERlaWx5CiBWaW5jZW50IERlbGZ0CiBBcm5hdWQgRGVsb2JlbGxlCitLb25yYWQgRGVsb25nCiBFcmlrIERlbWFpbmUKIEpvaG4gRGVubmlzCiBMLiBQZXRlciBEZXV0c2NoCkBAIC0yNzAsNiArMjk1LDcgQEAKIEh1bWJlcnRvIERpb2dlbmVzCiBZdmVzIERpb25uZQogRGFuaWVsIERpdHRtYXIKK0pvc2lwIERqb2xvbmdhCiBKYXJvbWlyIERvbGVjZWsKIElzbWFpbCBEb25tZXoKIFJvYmVydCBEb25vaHVlCkBAIC0yOTYsNiArMzIyLDcgQEAKIFdhbHRlciBEw7Zyd2FsZAogSGFucyBFY2thcmR0CiBSb2RvbHBobyBFY2toYXJkdAorSm9obiBFZG1vbmRzCiBHcmFudCBFZHdhcmRzCiBKb2huIEVocmVzbWFuCiBUYWwgRWluYXQKQEAgLTMwMywzMCArMzMwLDM2IEBACiBBbmRyZXcgRWxhbmQKIEp1bGllbiDDiWxpZQogTGFuY2UgRWxsaW5naGF1cworRGFuaWVsIEVsbGlzCiBQaGlsIEVsc29uCiBEYXZpZCBFbHkKIEplZmYgRXBsZXIKK0plZmYgTWNOZWlsCiBUb20gRXBwZXJseQogU3RvZmZlbCBFcmFzbXVzCiBKw7xyZ2VuIEEuIEVyaGFyZAogTWljaGFlbCBFcm5zdAogQmVuIEVzY290bwogQW5keSBFc2tpbHNzb24KK0FuZHLDqSBFc3BhemUKIFN0ZWZhbiBFc3NlcgogTmljb2xhcyBFc3RpYmFscwotU3RlcGhlbiBEIEV2YW5zCiBDYXJleSBFdmFucworU3RlcGhlbiBEIEV2YW5zCiBUaW0gRXZlcmV0dAogUGF1bCBFdmVyaXR0CiBEYXZpZCBFdmVybHkKIERhbmllbCBFdmVycworV2luc3RvbiBFd2VydAogR3JlZyBFd2luZwogTWFydGlqbiBGYWFzc2VuCiBDbG92aXMgRmFicmljaW8KIEFuZHJlYXMgRmFlcmJlcgogQmlsbCBGYW5jaGVyCitNaWNoYWVsIEZhcnJlbGwKIFRyb3kgSi4gRmFycmVsbAogTWFyayBGYXZhcworQm9yaXMgRmVsZAogTmllbHMgRmVyZ3Vzb24KIFNlYmFzdGlhbiBGZXJuYW5kZXoKIEZsb3JpYW4gRmVzdGkKQEAgLTM0NiwxMSArMzc5LDE0IEBACiBBbWF1cnkgRm9yZ2VvdCBkJ0FyYwogRG91ZyBGb3J0CiBKb2huIEZvdWh5CitBbmRyZXcgRnJhbmNpcwogU3RlZmFuIEZyYW5rZQogTWFydGluIEZyYW5rbGluCitCcnVjZSBGcmVkZXJpa3NlbgogUm9iaW4gRnJpZWRyaWNoCiBCcmFkbGV5IEZyb2VobGUKIEl2YW4gRnJvaG5lCitNYXR0aGlhcyBGdWNocwogSmltIEZ1bHRvbgogVGFkYXlvc2hpIEZ1bmFiYQogR3lybyBGdW5jaApAQCAtMzg3LDExICs0MjMsMTQgQEAKIEpvbmF0aGFuIEdpZGR5CiBKb2hhbm5lcyBHaWpzYmVycwogTWljaGFlbCBHaWxmaXgKK1lhbm5pY2sgR2luZ3JhcwogTWF0dCBHaXVjYQogV2ltIEdsZW5uCitNaWNoYWVsIEdvZGVyYmF1ZXIKIENocmlzdG9waCBHb2hsa2UKIFRpbSBHb2xkZW4KIEd1aWxoZXJtZSBHb27Dp2FsdmVzCitUaWFnbyBHb27Dp2FsdmVzCiBDaHJpcyBHb25uZXJtYW4KIFNoZWxsZXkgR29vY2gKIERhdmlkIEdvb2RnZXIKQEAgLTM5OSw2ICs0MzgsNyBAQAogTmF0aGFuaWVsIEdyYXkKIEVkZHkgRGUgR3JlZWYKIEdyYW50IEdyaWZmaW4KK0FuZHJlYSBHcmlmZmluaQogRHVuY2FuIEdyaXNieQogRmFiaWFuIEdyb2ZmZW4KIEVyaWMgR3JvbwpAQCAtNDA4LDE1ICs0NDgsMTggQEAKIE1pY2hhZWwgR3VyYXZhZ2UKIExhcnMgR3VzdMOkYmVsCiBUaG9tYXMgR8O8dHRsZXIKK0pvbmFzIEguCiBCYXJyeSBIYWRkb3cKIFBoaWxpcHAgSGFnZW1laXN0ZXIKIFBhdWwgdGVuIEhhZ2VuCiBSYXNtdXMgSGFobgogUGV0ZXIgSGFpZ2h0CiBWw6FjbGF2IEhhaXNtYW4KK1dhbGtlciBIYWxlIElWCiBCb2IgSGFsbGV5CiBKZXNzZSBIYWxsaW8KIEp1biBIYW1hbm8KK0FsZXhhbmRyZSBIYW1lbGluCiBBbmRlcnMgSGFtbWFycXVpc3QKIE1hcmsgSGFtbW9uZAogSGFyYWxkIEhhbmNoZS1PbHNlbgpAQCAtNDI4LDYgKzQ3MSw3IEBACiBEZXJlayBIYXJsYW5kCiBKYXNvbiBIYXJwZXIKIEJyaWFuIEhhcnJpbmcKK0pvbmF0aGFuIEhhcnRsZXkKIFRyYXZpcyBCLiBIYXJ0d2VsbAogTGFycnkgSGFzdGluZ3MKIFRpbSBIYXRjaApAQCAtNDQyLDYgKzQ4Niw3IEBACiBNYWx0ZSBIZWxtZXJ0CiBMYW5jZSBGaW5uIEhlbHN0ZW4KIEpvbmF0aGFuIEhlbmRyeQorTWljaGFlbCBIZW5yeQogSmFtZXMgSGVuc3RyaWRnZQogS2FzdW4gSGVyYXRoCiBDaHJpcyBIZXJib3J0aApAQCAtNDU0LDEwICs0OTksMTAgQEAKIE1hZ251cyBMLiBIZXRsYW5kCiBSYXltb25kIEhldHRpbmdlcgogS2V2YW4gSGV5ZG9uCitLZWxzZXkgSGlnaHRvd2VyCiBKYXNvbiBIaWxkZWJyYW5kCiBSaWNoaWUgSGluZGxlCiBLb25yYWQgSGluc2VuCi1NaWNoYWVsIEhlbnJ5CiBEYXZpZCBIb2JsZXkKIFRpbSBIb2NoYmVyZwogSm9lcmctQ3lyaWwgSG9laGxlCkBAIC00NzMsNiArNTE4LDcgQEAKIEdlcnJpdCBIb2xsCiBTaGFuZSBIb2xsb3dheQogUnVuZSBIb2xtCitUaG9tYXMgSG9sbWVzCiBQaGlsaXAgSG9tYnVyZwogTmFvZnVtaSBIb25kYQogSmVmZnJleSBIb25pZwpAQCAtNDgxLDIyICs1MjcsMjcgQEAKIEJyaWFuIEhvb3BlcgogUmFuZGFsbCBIb3BwZXIKIE5hZGF2IEhvcmVzaAorQWxvbiBIb3JldgogSmFuIEhvc2FuZwogS2VuIEhvd2FyZAogQnJhZCBIb3dlcwogTWlrZSBIb3kKIENoaWgtSGFvIEh1YW5nCitDaHJpc3RpYW4gSHVkb24KIExhd3JlbmNlIEh1ZHNvbgogTWljaGFlbCBIdWRzb24KIEppbSBIdWd1bmluCiBHcmVnIEh1bXBocmV5cwogRXJpYyBIdXNzCitUYWloeXVuIEh3YW5nCiBKZXJlbXkgSHlsdG9uCiBMdWR3aWcgSMOkaG5lCiBHZXJoYXJkIEjDpHJpbmcKIEZyZWRyaWsgSMOlw6VyZAorQ2F0YWxpbiBJYWNvYgogTWloYWkgSWJhbmVzY3UKIEFsaSBJa2luY2kKK0Fhcm9uIElsZXMKIExhcnMgSW1taXNjaAogQm9iYnkgSW1wb2xsb25pYQogTWVhZG9yIEluZ2UKQEAgLTUxNywxMyArNTY4LDE2IEBACiBKYWNrIEphbnNlbgogQmlsbCBKYW5zc2VuCiBUaG9tYXMgSmFyb3NjaAotWmJ5c3playBKxJlkcnplamV3c2tpLVN6bWVrCitKdWhhbmEgSmF1aGlhaW5lbgorWmJpZ25pZXcgSsSZZHJ6ZWpld3NraS1Tem1laworSnVsaWVuIEplaGFubmV0CiBEcmV3IEplbmtpbnMKIEZsZW1taW5nIEtqw6ZyIEplbnNlbgogUGhpbGlwIEguIEplbnNlbgogUGhpbGlwIEplbnZleQogTXVuU2ljIEplb25nCiBDaHJpcyBKZXJkb25laworSmltIEpld2V0dAogUGVkcm8gRGlheiBKaW1lbmV6CiBPcmphbiBKb2hhbnNlbgogRnJlZHJpayBKb2hhbnNzb24KQEAgLTUzMywxMyArNTg3LDE1IEBACiBNYXR0IEpvaW5lcgogVGhvbWFzIEpvbGxhbnMKIE5pY29sYXMgSm9seQorQnJpYW4gSy4gSm9uZXMKIEV2YW4gSm9uZXMKIEplcmVteSBKb25lcwogUmljaGFyZCBKb25lcwogSXJtZW4gZGUgSm9uZwogTHVjYXMgZGUgSm9uZ2UKLUpvaG4gSm9yZ2Vuc2VuCitLcmlzdGrDoW4gVmFsdXIgSsOzbnNzb24KIEplbnMgQi4gSm9yZ2Vuc2VuCitKb2huIEpvcmdlbnNlbgogU2lqaW4gSm9zZXBoCiBBbmRyZWFzIEp1bmcKIFRhdHRvbyBNYWJvbnpvIEsuCkBAIC01NDcsMjMgKzYwMywyNyBAQAogQm9iIEthaG4KIEt1cnQgQi4gS2Fpc2VyCiBUYW1pdG8gS2FqaXlhbWEKK0phbiBLYWxpc3pld3NraQogUGV0ZXIgdmFuIEthbXBlbgogUmFmZSBLYXBsYW4KIEphY29iIEthcGxhbi1Nb3NzCiBKYW4gS2FsaXN6ZXdza2kKK0phbm5lIEthcmlsYQorUGVyIMOYeXZpbmQgS2FybHNlbgogQW50b24gS2FzeWFub3YKIExvdSBLYXRlcwogSGlyb2FraSBLYXdhaQogU2ViYXN0aWVuIEtlaW0KIFJ5YW4gS2VsbHkKIERhbiBLZW5pZ3NiZXJnCi1Sb2JlcnQgS2VybgogUmFuZGFsbCBLZXJuCitSb2JlcnQgS2VybgogSmltIEtlcnIKIE1hZ251cyBLZXNzbGVyCiBMYXdyZW5jZSBLZXN0ZWxvb3QKIFZpdmVrIEtoZXJhCiBNYWRzIEtpaWxlcmljaAorSmFzb24gS2lsbGVuCiBKYW4gS2ltCiBUYWVrIEpvbyBLaW0KIFcuIFRyZXZvciBLaW5nCkBAIC01ODcsNiArNjQ3LDggQEAKIERhbW9uIEtvaGxlcgogTWFya28gS29odGFsYQogR3VpZG8gS29sbGVyaWUKK0phY2VrIEtvbmllY3pueQor0JzQsNGA0Log0JrQvtGA0LXQvdCx0LXRgNCzCiBBcmthZHkgS29wbHlhcm92CiBQZXRlciBBLiBLb3JlbgogVmxhZCBLb3JvbGV2CkBAIC02MDEsMzUgKzY2Myw0MCBAQAogTWljaGFlbCBLcmVtZXIKIEZhYmlhbiBLcmV1dHoKIEPDqWRyaWMgS3JpZXIKK1BlZHJvIEtyb2dlcgogSGFubnUgS3Jvc2luZwogQW5kcmVqIEtycGljCiBJdmFuIEtyc3RpxIcKIFN0ZXZlbiBLcnlza2FsbGEKIEFuZHJldyBLdWNobGluZwogRGF2ZSBLdWhsbWFuCitKb24gS3VobgogVmxhZGltaXIgS3VzaG5pcgogRXJubyBLdXVzZWxhCiBSb3NzIExhZ2Vyd2FsbAogQ2FtZXJvbiBMYWlyZAogVGhvbWFzIExhbWIKIEplYW4tQmFwdGlzdGUgIkppYmEiIExhbXkKK1JvbmFuIExhbXkKIFRvcnN0ZW4gTGFuZHNjaG9mZgogxYF1a2FzeiBMYW5nYQogVGlubyBMYW5nZQogQW5kcmV3IExhbmdtZWFkCiBEZXRsZWYgTGFubmVydAogU29yZW4gTGFyc2VuCitBbW9zIExhdHRlaWVyCiBQaWVycyBMYXVkZXIKIEJlbiBMYXVyaWUKIFNpbW9uIExhdwogSnVsaWEgTGF3YWxsCiBDaHJpcyBMYXdyZW5jZQogQnJpYW4gTGVhaXIKK01hdGhpZXUgTGVkdWMtSGFtZWwKK0NocmlzdG9waGVyIExlZQorSW55ZW9sIExlZQogSmFtZXMgTGVlCiBKb2huIEouIExlZQotSW55ZW9sIExlZQogVGhvbWFzIExlZQotQ2hyaXN0b3BoZXIgTGVlCiBUZW5uZXNzZWUgTGVldXdlbmJ1cmcKIEx1YyBMZWZlYnZyZQogUGllcnJlIFBhdWwgTGVmZWJ2cmUKQEAgLTY0NCw2ICs3MTEsNyBAQAogTWFyYy1BbmRyw6kgTGVtYnVyZwogSm9obiBMZW50b24KIENocmlzdG9waGVyIFR1ciBMZXNuaWV3c2tpLUxhYXMKK0FsYWluIExldWZyb3kKIE1hcmsgTGV2aW5zb24KIFdpbGxpYW0gTGV3aXMKIEFraXJhIExpCkBAIC02NjQsNiArNzMyLDcgQEAKIE1pcmtvIExpc3MKIE5pY2sgTG9ja3dvb2QKIFN0ZXBoYW5pZSBMb2Nrd29vZAorSHVnbyBMb3BlcyBUYXZhcmVzCiBBbm5lIExvcmQKIFRvbSBMb3JlZG8KIEp1c3RpbiBMb3ZlCkBAIC02NzcsNiArNzQ2LDcgQEAKIEppbSBMeW5jaAogTWlrYWVsIEx5bmd2aWcKIE1hcnRpbiB2b24gTMO2d2lzCitHdWlsbGVybW8gTMOzcGV6LUFuZ2xhZGEKIEplZmYgTWFjRG9uYWxkCiBKb2huIE1hY2hpbgogQW5kcmV3IEkgTWFjSW50eXJlCkBAIC02ODgsNiArNzU4LDcgQEAKIERhdmlkIE1hbGNvbG0KIEtlbiBNYW5oZWltZXIKIFZsYWRpbWlyIE1hcmFuZ296b3YKK0NvbGluIE1hcmMKIFZpbmNlbnQgTWFyY2hldHRpCiBEYXZpZCBNYXJlawogRG91ZyBNYXJpZW4KQEAgLTY5Nyw4ICs3NjgsMTAgQEAKIE93ZW4gTWFydGluCiBXZXN0bGV5IE1hcnTDrW5legogU8OpYmFzdGllbiBNYXJ0aW5pCitTaWRuZXkgU2FuIE1hcnTDrW4KIFJvZ2VyIE1hc3NlCiBOaWNrIE1hdGhld3NvbgorU2ltb24gTWF0aGlldQogTGF1cmEgTWF0c29uCiBHcmFoYW0gTWF0dGhld3MKIERpZXRlciBNYXVyZXIKQEAgLTcxMiw4ICs3ODUsOCBAQAogTWljaGFlbCBNY0xheQogTWFyayBNYyBNYWhvbgogR29yZG9uIE1jTWlsbGFuCi1DYW9sYW4gTWNOYW1hcmEKIEFuZHJldyBNY05hbWFyYQorQ2FvbGFuIE1jTmFtYXJhCiBKZWZmIE1jTmVpbAogQ3JhaWcgTWNQaGVldGVycwogTGFtYmVydCBNZWVydGVucwpAQCAtNzI2LDM4ICs3OTksNDYgQEAKIENhcmwgTWV5ZXIKIE1pa2UgTWV5ZXIKIFBpb3RyIE1leWVyCitBbGV4aXMgTcOpdGFpcmVhdQogU3RldmVuIE1pYWxlCiBUcmVudCBNaWNrCitGcmFuY2sgTWljaGVhCiBUb20gTWlkZGxldG9uCiBTdGFuIE1paGFpCiBTdGVmYW4gTWloYWlsYQogQXJpc3RvdGVsaXMgTWlrcm9wb3Vsb3MKIFBhb2xvIE1pbGFuaQotRGFtaWVuIE1pbGxlcgogQ2hhZCBNaWxsZXIKK0RhbWllbiBNaWxsZXIKIEphc29uIFYuIE1pbGxlcgogSmF5IFQuIE1pbGxlcgogUm9tYW4gTWlsbmVyCitKdWxpZW4gTWlvdHRlCiBBbmRyaWkgVi4gTWlzaGtvdnNreWkKLUR1c3RpbiBKLiBNaXRjaGVsbAogRG9tIE1pdGNoZWxsCitEdXN0aW4gSi4gTWl0Y2hlbGwKK1p1YmluIE1pdGhyYQogRmxvcmlhbiBNbGFkaXRzY2gKIERvdWcgTW9lbgogVGhlIERyYWdvbiBEZSBNb25zeW5lCiBTa2lwIE1vbnRhbmFybworUGV0ZXIgTW9vZHkKIFBhdWwgTW9vcmUKIFJvc3MgTW9vcmUKIEJlbiBNb3JnYW4KIERlcmVrIE1vcnIKIEphbWVzIEEgTW9ycmlzb24KK0RlcmVrIE1jVGF2aXNoIE1vdW5jZQogQWxlc3NhbmRybyBNb3VyYQogUGFibG8gTW91em8KIE1oZXIgTW92c2lzeWFuCiBSdXNsYW4gTXN0b2kKLVNqb2VyZCBNdWxsZW5kZXIKK01pY2hhZWwgTXVsaWNoCiBTYXBlIE11bGxlbmRlcgorU2pvZXJkIE11bGxlbmRlcgogTWljaGFlbCBNdWxsZXIKIE5laWwgTXVsbGVyCitMb3VpcyBNdW5ybwogUi4gRGF2aWQgTXVycmF5CiBNYXR0aSBNw6RraQogRGFsZSBOYWdhdGEKQEAgLTc2NywxNCArODQ4LDE1IEBACiBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkKIFZpbG1vcyBOZWJlaGFqCiBGcmVkcmlrIE5laHIKLVRyZW50IE5lbHNvbgogVG9ueSBOZWxzb24KK1RyZW50IE5lbHNvbgogQ2hhZCBOZXR6ZXIKIE1heCBOZXVuaMO2ZmZlcgogR2VvcmdlIE5ldmlsbGUtTmVpbAogSGlldSBOZ3V5ZW4KIEpvaGFubmVzIE5pY29sYWkKIFNhbXVlbCBOaWNvbGFyeQorSm9uYXRoYW4gTmllaG9mCiBHdXN0YXZvIE5pZW1leWVyCiBPc2NhciBOaWVyc3RyYXN6CiBIcnZvamUgTmlrc2ljCkBAIC03OTMsNiArODc1LDggQEAKIEtldmluIE8nQ29ubm9yCiBUaW0gTydNYWxsZXkKIFpvb2tvIE8nV2hpZWxhY3JvbngKK0phbWVzIE9ha2xleQorSm9uIE9iZXJoZWlkZQogUGFzY2FsIE9iZXJuZG9lcmZlcgogSmVmZnJleSBPbGxpZQogQWRhbSBPbHNlbgpAQCAtODIzLDE1ICs5MDcsMTggQEAKIERhbiBQYXJpc2llbgogV2lsbGlhbSBQYXJrCiBIYXJyaSBQYXNhbmVuCi1CZXJrZXIgUGVrc2FnCi1BbmRyZWFzIFBlbG1lCi1CbyBQZW5nCi1Kb2UgUGV0ZXJzb24KK0dhw6tsIFBhc2dyaW1hdWQKIFJhbmR5IFBhdXNjaAogU2FtdWVsZSBQZWRyb25pCitKdXN0aW4gUGVlbAogTWFyY2VsIHZhbiBkZXIgUGVpamwKK0JlcmtlciBQZWtzYWcKK0FuZHJlYXMgUGVsbWUKIFN0ZXZlbiBQZW1iZXJ0b24KK0JvIFBlbmcKIFNhbnRpYWdvIFBlcmVzw7NuCitHZW9yZ2UgUGVyaXN0ZXJha2lzCitNYXRoaWV1IFBlcnJlYXVsdAogTWFyayBQZXJyZWdvCiBUcmV2b3IgUGVycmluCiBHYWJyaWVsIGRlIFBlcnRodWlzCkBAIC04NDEsNiArOTI4LDcgQEAKIENocmlzIFBldHJpbGxpCiBCam9ybiBQZXR0ZXJzZW4KIEp1c3RpbiBELiBQZXR0aXQKK1Jvbm55IFBmYW5uc2NobWlkdAogR2VvZmYgUGhpbGJyaWNrCiBHYXZyaWUgUGhpbGlwc29uCiBBZHJpYW4gUGhpbGxpcHMKQEAgLTg1NiwyMSArOTQ0LDI1IEBACiBBbnRvaW5lIFBpdHJvdQogSmVhbi1GcmFuw6dvaXMgUGnDqXJvbm5lCiBPbGVnIFBsYWtob3RueXVrCitSZW1pIFBvaW50ZWwKIEd1aWxoZXJtZSBQb2xvCiBNaWNoYWVsIFBvbXJhbmluZwogSXVzdGluIFBvcAogQ2xhdWRpdSBQb3BhCiBKb2huIFBvcHBsZXdlbGwKK0d1aWxsYXVtZSBQcmF0dGUKIEFtcml0IFByZW0KIFBhdWwgUHJlc2NvZAogRG9ub3ZhbiBQcmVzdG9uCitQYXVsIFByaWNlCiBKeXJraSBQdWxsaWFpbmVuCiBTdGV2ZSBQdXJjZWxsCi1GZXJuYW5kbyBQw6lyZXoKIEVkdWFyZG8gUMOpcmV6CitGZXJuYW5kbyBQw6lyZXoKIFBpZXJyZSBRdWVudGVsCiBCcmlhbiBRdWlubGFuCiBBbmRlcnMgUXZpc3QKK0rDqXLDtG1lIFJhZGl4CiBCdXJ0b24gUmFkb25zCiBKZWZmIFJhbW5hbmkKIEJyb2RpZSBSYW8KQEAgLTg4NiwxNyArOTc4LDIxIEBACiBHYXJldGggUmVlcwogU3RldmUgUmVldmVzCiBMZW5uYXJ0IFJlZ2Vicm8KK0pvaG4gUmVnZWhyCitGZWRlcmljbyBSZWdoZW56YW5pCiBPZmlyIFJlaWNoZW5iZXJnCiBTZWFuIFJlaWZzY2huZWlkZXIKIE1pY2hhZWwgUC4gUmVpbGx5CiBCZXJuaGFyZCBSZWl0ZXIKIFN0ZXZlbiBSZWl6CiBSb2VsYW5kIFJlbmdlbGluaworQW50b2luZSBSZXZlcnNhdAogRmzDoXZpbyBSaWJlaXJvCi1UaW0gUmljZQogRnJhbmNlc2NvIFJpY2NpYXJkaQorVGltIFJpY2UKIEphbiBQaWV0ZXIgUmllZ2VsCiBBcm1pbiBSaWdvCitBcmMgUmlsZXkKIE5pY2hvbGFzIFJpbGV5CiBKZWFuLUNsYXVkZSBSaW1iYXVsdAogVmxhZCBSaXNjdXRpYQpAQCAtOTA2LDE3ICsxMDAyLDIxIEBACiBBbnRob255IFJvYWNoCiBDYXJsIFJvYmJlbgogTWFyayBSb2JlcnRzCi1KaW0gUm9iaW5zb24KIEFuZHkgUm9iaW5zb24KK0ppbSBSb2JpbnNvbgogTWFyayBSb2RkeQogS2V2aW4gUm9kZ2VycwogR2lhbXBhb2xvIFJvZG9sYQorRWxzb24gUm9kcmlndWV6CiBBZGkgUm9pYmFuCitMdWlzIFJvamFzCiBNaWtlIFJvbWJlcmcKIEFybWluIFJvbmFjaGVyCiBDYXNlIFJvb2xlCiBUaW1vdGh5IFJvc2NvZQorRXJpayBSb3NlCiBKaW0gUm9za2luZAorQnJpYW4gUm9zbmVyCiBHdWlkbyB2YW4gUm9zc3VtCiBKdXN0IHZhbiBSb3NzdW0KIEh1Z28gdmFuIFJvc3N1bQpAQCAtOTM1LDkgKzEwMzUsMTEgQEAKIEplZmYgUnVzaAogU2FtIFJ1c2hpbmcKIE1hcmsgUnVzc2VsbAorUnVzdHkgUnVzc2VsbAogTmljayBSdXNzbwogQ2hyaXMgUnlsYW5kCiBDb25zdGFudGluYSBTLgorUGF0cmljayBTYWJpbgogU8OpYmFzdGllbiBTYWJsw6kKIFN1bWFuIFNhaGEKIEhhamltZSBTYWl0b3UKQEAgLTk0NSw2ICsxMDQ3LDcgQEAKIFJpY2ggU2FsegogS2V2aW4gU2FtYm9ybgogQWRyaWFuIFNhbXBzb24KK0phbWVzIFNhbmRlcnMKIElseWEgU2FuZGxlcgogTWFyayBTYXBpcm8KIFR5IFNhcm5hCkBAIC05NzMsMTkgKzEwNzYsMjEgQEAKIFN0ZWZhbiBTY2h3YXJ6ZXIKIERpZXRtYXIgU2Nod2VydGJlcmdlcgogRmVkZXJpY28gU2Nod2luZHQKLVN0ZXZlbiBTY290dAogQmFycnkgU2NvdHQKK1N0ZXZlbiBTY290dAogTmljayBTZWlkZW5tYW4KIMW9aWdhIFNlaWxuYWNodAogWXVyeSBTZWxpdmFub3YKIEZyZWQgU2VsbHMKIEppd29uIFNlbworScOxaWdvIFNlcm5hCiBKb2FraW0gU2VybmJyYW50Ci1Sb2dlciBTZXJ3eQorUm9nZXIgRC4gU2Vyd3kKIEplcnJ5IFNldXR0ZXIKIFBldGUgU2V2YW5kZXIKIERlbmlzIFNldmVyc29uCiBJYW4gU2V5ZXIKK0RhbmllbCBTaGFoYWYKIEhhIFNoYW8KIE1hcmsgU2hhbm5vbgogUmljaGFyZCBTaGFwaXJvCkBAIC0xMDA3LDYgKzExMTIsNyBAQAogSW9uZWwgU2ltaW9uZXNjdQogS2lyaWxsIFNpbW9ub3YKIE5hdGhhbiBQYXVsIFNpbW9ucworQWRhbSBTaW1wa2lucwogUmF2aSBTaW5oYQogSmFubmUgU2lua2tvbmVuCiBOZyBQaGVuZyBTaW9uZwpAQCAtMTAxNCwxNCArMTEyMCwxNyBAQAogSi4gU2lwcHJlbGwKIEtyYWdlbiBTaXRha2VyCiBNaWNoYWVsIFNsb2FuCi1FcmljIFYuIFNtaXRoCiBDaHJpc3RvcGhlciBTbWl0aAorRXJpYyBWLiBTbWl0aAogR3JlZ29yeSBQLiBTbWl0aAorTWFyayBTbWl0aAogUm95IFNtaXRoCiBSYWZhbCBTbW90cnp5aworRXJpYyBTbm93CiBEaXJrIFNvZWRlCiBQYXVsIFNva29sb3Zza3kKIENvZHkgU29tZXJ2aWxsZQorRWRvYXJkbyBTcGFkb2xpbmkKIENsYXkgU3BlbmNlCiBTdGVmYW4gU3BlcmxpbmcKIE5pY2hvbGFzIFNwaWVzCkBAIC0xMDMzLDEwICsxMTQyLDEzIEBACiBUYWdlIFN0YWJlbGwtS3VsbwogUXVlbnRpbiBTdGFmZm9yZC1GcmFzZXIKIEZyYW5rIFN0YWphbm8KK0pvZWwgU3RhbmxleQogQW50aG9ueSBTdGFya3MKIE9saXZlciBTdGVlbGUKIEdyZWcgU3RlaW4KK0JhcnVjaCBTdGVyaW4KIENocmlzIFN0ZXJuCitBbGV4IFN0ZXdhcnQKIFZpY3RvciBTdGlubmVyCiBSaWNoYXJkIFN0b2FrbGV5CiBQZXRlciBTdG9laHIKQEAgLTEwNTIsNiArMTE2NCw3IEBACiBOYXRoYW4gU3VsbGl2YW4KIE1hcmsgU3VtbWVyZmllbGQKIFJldWJlbiBTdW1uZXIKK01hcmVrIMWgdXBwYQogSGlzYW8gU3V6dWtpCiBLYWxsZSBTdmVuc3NvbgogQW5kcmV3IFN2ZXRsb3YKQEAgLTEwNjYsOCArMTE3OSw4IEBACiBXaWxsaWFtIFRhbmtzbGV5CiBDaHJpc3RpYW4gVGFuemVyCiBTdGV2ZW4gVGFzY2h1awotTW9udHkgVGF5bG9yCiBBbXkgVGF5bG9yCitNb250eSBUYXlsb3IKIEFuYXRvbHkgVGVjaHRvbmlrCiBNaWtoYWlsIFRlcmVraG92CiBSaWNoYXJkIE0uIFRldwpAQCAtMTA4NiwxNSArMTE5OSwyMCBAQAogQ2hyaXN0aWFuIFRpc21lcgogSmltIFRpdHRzbGVyCiBGcmFuayBKLiBUb2JpbgotUiBMaW5kc2F5IFRvZGQKIEJlbm5ldHQgVG9kZAorUiBMaW5kc2F5IFRvZGQKIEV1Z2VuZSBUb2RlcgogRXJpayBUb2xsZXJ1ZAorU3RlcGhlbiBUb25raW4KIE1hdGlhcyBUb3JjaGluc2t5CiBTYW5kcm8gVG9zaQogUmljaGFyZCBUb3duc2VuZAorRGF2aWQgVG93bnNoZW5kCiBOYXRoYW4gVHJhcHV6emFubwogTGF1cmVuY2UgVHJhdHQKK0FsYmVydG8gVHJldmlubworTWF0dGhpYXMgVHJvZmZhZXMKK1RvbSBUcm9tZXkKIEpvaG4gVHJvbXAKIEphc29uIFRyb3dicmlkZ2UKIEJyZW50IFR1YmJzCkBAIC0xMTMwLDYgKzEyNDgsNyBAQAogS2FubmFuIFZpamF5YW4KIEt1cnQgVmlsZQogTm9ybWFuIFZpbmUKK1BhdWxpIFZpcnRhbmVuCiBGcmFuayBWaXNzZXIKIEpvaGFubmVzIFZvZ2VsCiBNYXJ0aWpuIFZyaWVzCkBAIC0xMTQxLDYgKzEyNjAsNyBAQAogTGFycnkgV2FsbAogS2V2aW4gV2FsemVyCiBSb2RyaWdvIFN0ZWlubXVsbGVyIFdhbmRlcmxleQorS2UgV2FuZwogR3JlZyBXYXJkCiBaYWNoYXJ5IFdhcmUKIEJhcnJ5IFdhcnNhdwpAQCAtMTE2OCwxMCArMTI4OCwxMCBAQAogQnJ5Y2UgIlpvb2tvIiBXaWxjb3gtTydIZWFybgogVGltb3RoeSBXaWxkCiBKYWt1YiBXaWxrCitHZXJhbGQgUy4gV2lsbGlhbXMKIEphc29uIFdpbGxpYW1zCiBKb2huIFdpbGxpYW1zCiBTdWUgV2lsbGlhbXMKLUdlcmFsZCBTLiBXaWxsaWFtcwogU3RldmVuIFdpbGxpcwogRnJhbmsgV2lsbGlzb24KIEdlb2ZmIFdpbHNvbgpAQCAtMTE5NCw4ICsxMzE0LDggQEAKIFJpY2hhcmQgV29sZmYKIEFkYW0gV29vZGJlY2sKIFN0ZXZlbiBXb3JrCi1EYXJyZW4gV29ycmFsbAogR29yZG9uIFdvcmxleQorRGFycmVuIFdvcnJhbGwKIFRob21hcyBXb3V0ZXJzCiBIZWlrbyBXdW5kcmFtCiBEb3VnIFd5YXR0CkBAIC0xMjA0LDYgKzEzMjQsNyBAQAogSGlyb2thenUgWWFtYW1vdG8KIEthLVBpbmcgWWVlCiBKYXNvbiBZZW8KK0V1bmdKdW4gWWkKIEJvYiBZb2Rsb3dza2kKIERhbm55IFlvbwogUm9yeSBZb3JrZQpkaWZmIC0tZ2l0IGEvTWlzYy9ISVNUT1JZIGIvTWlzYy9ISVNUT1JZCmluZGV4IGE3ZmJhMmIuLjgzMjdkY2EgMTAwNjQ0Ci0tLSBhL01pc2MvSElTVE9SWQorKysgYi9NaXNjL0hJU1RPUlkKQEAgLTEwLDYgKzEwLDU0MDMgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwLUZlYi0yMDExKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTEyNDk6IEZpeCBwb3RlbnRpYWwgY3Jhc2hlcyB3aGVuIHVzaW5nIHRoZSBsaW1pdGVkIEFQSS4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzExMjIyOiBGaXggbm9uLWZyYW1ld29yayBzaGFyZWQgbGlicmFyeSBidWlsZCBvbiBNYWMgT1MgWC4KKworLSBJc3N1ZSAjMTExODQ6IEZpeCBsYXJnZS1maWxlIHN1cHBvcnQgb24gQUlYLgorCistIElzc3VlICM5NDEzNDY6IEZpeCBicm9rZW4gc2hhcmVkIGxpYnJhcnkgYnVpbGQgb24gQUlYLgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzEwNzA5OiBBZGQgdXBkYXRlZCBBSVggbm90ZXMgaW4gTWlzYy9SRUFETUUuQUlYLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBSZWxlYXNlIENhbmRpZGF0ZSAzPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDEzLUZlYi0yMDExKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTExMzQ6IEFkZCBtaXNzaW5nIGZpZWxkcyB0byB0eXBlc2xvdHMuaC4KKworLSBJc3N1ZSAjMTExMzU6IFJlbW92ZSByZWR1bmRhbnQgZG9jIGZpZWxkIGZyb20gUHlUeXBlX1NwZWMuCisKKy0gSXNzdWUgIzExMDY3OiBBZGQgUHlUeXBlX0dldEZsYWdzLCB0byBzdXBwb3J0IFB5VW5pY29kZV9DaGVjayBpbiB0aGUgbGltaXRlZAorICBBQkkuCisKKy0gSXNzdWUgIzExMTE4OiBGaXggYm9ndXMgZXhwb3J0IG9mIE5vbmUgaW4gcHl0aG9uMy5kbGwuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTExMTY6IGFueSBlcnJvciBkdXJpbmcgYWRkaXRpb24gb2YgYSBtZXNzYWdlIHRvIGEgbWFpbGJveCBub3cgY2F1c2VzIGEKKyAgcm9sbGJhY2ssIGluc3RlYWQgb2YgbGVhdmluZyB0aGUgbWFpbGJveCBwYXJ0aWFsbHkgbW9kaWZpZWQuCisKKy0gSXNzdWUgIzExMTMyOiBGaXggcGFzc2luZyBvZiAib3B0aW1pemUiIHBhcmFtZXRlciB3aGVuIHJlY3Vyc2luZyBpbgorICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKCkuCisKKy0gSXNzdWUgIzExMTEwOiBGaXggYSBwb3RlbnRpYWwgZGVjcmVmIG9mIGEgTlVMTCBpbiBzcWxpdGUzLgorCistIElzc3VlICM4Mjc1OiBGaXggcGFzc2luZyBvZiBjYWxsYmFjayBhcmd1bWVudHMgd2l0aCBjdHlwZXMgdW5kZXIgV2luNjQuICBQYXRjaAorICBieSBTdGFuIE1paGFpLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTEwNzk6IFRoZSAvQXBwbGljYXRpb25zL1B5dGhvbiB4LnggZm9sZGVyIGNyZWF0ZWQgYnkgdGhlIE1hYyBPUyBYCisgIGluc3RhbGxlcnMgbm93IGluY2x1ZGVzIGEgbGluayB0byB0aGUgaW5zdGFsbGVkIGRvY3VtZW50YXRpb24gYW5kIG5vIGxvbmdlcgorICBpbmNsdWRlcyBhbiBFeHRyYXMgZGlyZWN0b3J5LiAgVGhlIFRvb2xzIGRpcmVjdG9yeSBpcyBub3cgaW5zdGFsbGVkIGluIHRoZQorICBmcmFtZXdvcmsgdW5kZXIgc2hhcmUvZG9jLgorCistIElzc3VlICMxMTEyMTogRml4IGJ1aWxkaW5nIHdpdGggLS1lbmFibGUtc2hhcmVkLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTA5NzE6IHRlc3RfemlwaW1wb3J0X3N1cHBvcnQgaXMgb25jZSBhZ2FpbiBjb21wYXRpYmxlIHdpdGggdGhlIHJlZmxlYWsKKyAgaHVudGVyIGZlYXR1cmUgb2YgdGVzdC5yZWdydGVzdC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgUmVsZWFzZSBDYW5kaWRhdGUgMj8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAzMC1KYW4tMjAxMSoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzEwNDUxOiBtZW1vcnl2aWV3IG9iamVjdHMgY291bGQgYWxsb3cgdG8gbXV0YXRlIGEgcmVhZGFibGUgYnVmZmVyLgorICBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzkxMjQ6IG1haWxib3ggbm93IGFjY2VwdHMgYmluYXJ5IGlucHV0IGFuZCByZWFkcyBhbmQgd3JpdGVzIG1haWxib3gKKyAgZmlsZXMgaW4gYmluYXJ5IG1vZGUsIHVzaW5nIHRoZSBlbWFpbCBwYWNrYWdlJ3MgYmluYXJ5IHN1cHBvcnQgdG8gcGFyc2UKKyAgYXJiaXRyYXJ5IGVtYWlsIG1lc3NhZ2VzLiAgU3RyaW5nSU8gYW5kIHRleHQgZmlsZSBpbnB1dCBpcyBkZXByZWNhdGVkLAorICBhbmQgc3RyaW5nIGlucHV0IGZhaWxzIGVhcmx5IGlmIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGFyZSB1c2VkLCB3aGVyZQorICBwcmV2aW91c2x5IGl0IHdvdWxkIGZhaWwgd2hlbiB0aGUgZW1haWwgd2FzIHByb2Nlc3NlZCBpbiBhIGxhdGVyIHN0ZXAuCisKKy0gSXNzdWUgIzEwODQ1OiBNaXRpZ2F0ZSB0aGUgaW5jb21wYXRpYmlsaXR5IGJldHdlZW4gdGhlIG11bHRpcHJvY2Vzc2luZworICBtb2R1bGUgb24gV2luZG93cyBhbmQgdGhlIHVzZSBvZiBwYWNrYWdlLCB6aXBmaWxlIG9yIGRpcmVjdG9yeSBleGVjdXRpb24KKyAgYnkgc3BlY2lhbCBjYXNpbmcgbWFpbiBtb2R1bGVzIHRoYXQgYWN0dWFsbHkgKmFyZSogY2FsbGVkIF9fbWFpbl9fLnB5LgorCistIElzc3VlICMxMTA0NTogUHJvdGVjdCBsb2dnaW5nIGNhbGwgYWdhaW5zdCBOb25lIGFyZ3VtZW50LgorCistIElzc3VlICMxMTA1MjogQ29ycmVjdCBJRExFIG1lbnUgYWNjZWxlcmF0b3JzIG9uIE1hYyBPUyBYIGZvciBTYXZlCisgIGNvbW1hbmRzLgorCistIElzc3VlICMxMTA1MzogRml4IElETEUgIlN5bnRheCBFcnJvciIgd2luZG93cyB0byBiZWhhdmUgYXMgaW4gMi54LAorICBwcmV2ZW50aW5nIGEgY29uZnVzaW5nIGh1bmcgYXBwZWFyYW5jZSBvbiBPUyBYIHdpdGggdGhlIHdpbmRvd3MKKyAgb2JzY3VyZWQuCisKKy0gSXNzdWUgIzEwOTQwOiBXb3JrYXJvdW5kIGFuIElETEUgaGFuZyBvbiBNYWMgT1MgWCAxMC42IHdoZW4gdXNpbmcgdGhlCisgIG1lbnUgYWNjZWxlcmF0b3JzIGZvciBPcGVuIE1vZHVsZSwgR28gdG8gTGluZSwgYW5kIE5ldyBJbmRlbnQgV2lkdGguCisgIFRoZSBhY2NlbGVyYXRvcnMgc3RpbGwgd29yayBidXQgbm8gbG9uZ2VyIGFwcGVhciBpbiB0aGUgbWVudSBpdGVtcy4KKworLSBJc3N1ZSAjMTA5ODk6IEZpeCBhIGNyYXNoIG9uIFNTTENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKE5vbmUsIFRydWUpLgorCistIElzc3VlICMxMTAyMDogQ29tbWFuZC1saW5lIHB5Y2xiciB3YXMgYnJva2VuIGJlY2F1c2Ugb2YgbWlzc2luZyAyLXRvLTMKKyAgY29udmVyc2lvbi4KKworLSBJc3N1ZSAjMTEwMTk6IEZpeGVkIEJ5dGVzR2VuZXJhdG9yIHNvIHRoYXQgaXQgY29ycmVjdGx5IGhhbmRsZXMgYSBNZXNzYWdlCisgIHdpdGggYSBOb25lIGJvZHkuCisKKy0gSXNzdWUgIzExMDE0OiBNYWtlICdmaWx0ZXInIGFyZ3VtZW50IGluIHRhcmZpbGUuVGFyZmlsZS5hZGQoKSBpbnRvIGEKKyAga2V5d29yZC1vbmx5IGFyZ3VtZW50LiAgVGhlIHByZWNlZGluZyBwb3NpdGlvbmFsIGFyZ3VtZW50IHdhcyBkZXByZWNhdGVkLAorICBzbyBpdCBtYWRlIG5vIHNlbnNlIHRvIGFkZCBmaWx0ZXIgYXMgYSBwb3NpdGlvbmFsIGFyZ3VtZW50LgorCistIElzc3VlICMxMTAwNDogUmVwYWlyZWQgZWRnZSBjYXNlIGluIGRlcXVlLmNvdW50KCkuCisKKy0gSXNzdWUgIzEwOTc0OiBJRExFIG5vIGxvbmdlciBjcmFzaGVzIGlmIGl0cyByZWNlbnQgZmlsZXMgbGlzdCBpbmNsdWRlcyBmaWxlcworICB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluIHRoZWlyIHBhdGggbmFtZXMuCisKKy0gSGF2ZSBoYXNobGliLmFsZ29yaXRobXNfYXZhaWxhYmxlIGFuZCBoYXNobGliLmFsZ29yaXRobXNfZ3VhcmFudGVlZCBib3RoCisgIHJldHVybiBzZXRzIGluc3RlYWQgb2Ygb25lIHJldHVybmluZyBhIHR1cGxlIGFuZCB0aGUgb3RoZXIgYSBmcm96ZW5zZXQuCisKKy0gSXNzdWUgIzEwOTg3OiBGaXggdGhlIHJlY3Vyc2lvbiBsaW1pdCBoYW5kbGluZyBpbiB0aGUgX3BpY2tsZSBtb2R1bGUuCisKKy0gSXNzdWUgIzEwOTgzOiBGaXggc2V2ZXJhbCBidWdzIG1ha2luZyB0dW5uZWwgcmVxdWVzdHMgaW4gaHR0cC5jbGllbnQuCisKKy0gSXNzdWUgIzEwOTU1OiB6aXBpbXBvcnQgdXNlcyBBU0NJSSBlbmNvZGluZyBpbnN0ZWFkIG9mIGNwNDM3IHRvIGRlY29kZQorICBmaWxlbmFtZXMsIGF0IGJvb3RzdHJhcCwgaWYgdGhlIGNvZGVjIHJlZ2lzdHJ5IGlzIG5vdCByZWFkeSB5ZXQuIEl0IGlzIHN0aWxsCisgIHBvc3NpYmxlIHRvIGhhdmUgbm9uLUFTQ0lJIGZpbGVuYW1lcyB1c2luZyB0aGUgVW5pY29kZSBmbGFnIChVVEYtOCBlbmNvZGluZykKKyAgZm9yIGFsbCBmaWxlIGVudHJpZXMgaW4gdGhlIFpJUCBmaWxlLgorCistIElzc3VlICMxMDk0OTogSW1wcm92ZWQgcm9idXN0bmVzcyBvZiByb3RhdGluZyBmaWxlIGhhbmRsZXJzLgorCistIElzc3VlICMxMDk1NTogRml4IGEgcG90ZW50aWFsIGNyYXNoIHdoZW4gdHJ5aW5nIHRvIG1tYXAoKSBhIGZpbGUgcGFzdCBpdHMKKyAgbGVuZ3RoLiAgSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KKworLSBJc3N1ZSAjMTA4OTg6IEFsbG93IGNvbXBpbGluZyB0aGUgcG9zaXggbW9kdWxlIHdoZW4gdGhlIEMgbGlicmFyeSBkZWZpbmVzCisgIGEgc3ltYm9sIG5hbWVkIEZTVEFULgorCistIElzc3VlICMxMDk4MDogdGhlIEhUVFAgc2VydmVyIG5vdyBlbmNvZGVzIGhlYWRlcnMgd2l0aCBpc28tODg1OS0xIChsYXRpbjEpCisgIGVuY29kaW5nLiAgVGhpcyBpcyB0aGUgcHJlZmVycmVkIGVuY29kaW5nIG9mIFBFUCAzMzMzIGFuZCB0aGUgYmFzZSBlbmNvZGluZworICBvZiBIVFRQIDEuMS4KKworLSBUbyBtYXRjaCB0aGUgYmVoYXZpb3VyIG9mIEhUVFAgc2VydmVyLCB0aGUgSFRUUCBjbGllbnQgbGlicmFyeSBub3cgYWxzbworICBlbmNvZGVzIGhlYWRlcnMgd2l0aCBpc28tODg1OS0xIChsYXRpbjEpIGVuY29kaW5nLiAgSXQgd2FzIGFscmVhZHkgZG9pbmcKKyAgdGhhdCBmb3IgaW5jb21pbmcgaGVhZGVycyB3aGljaCBtYWtlcyB0aGlzIGJlaGF2aW91ciBub3cgY29uc2lzdGVudCBpbgorICBib3RoIGluY29taW5nIGFuZCBvdXRnb2luZyBkaXJlY3Rpb24uCisKKy0gSXNzdWUgIzk1MDk6IGFyZ3BhcnNlIG5vdyBwcm9wZXJseSBoYW5kbGVzIElPRXJyb3JzIHJhaXNlZCBieQorICBhcmdwYXJzZS5GaWxlVHlwZS4KKworLSBJc3N1ZSAjMTA5NjE6IFRoZSBuZXcgcHlkb2Mgc2VydmVyIG5vdyBiZXR0ZXIgaGFuZGxlcyBleGNlcHRpb25zIHJhaXNlZAorICBkdXJpbmcgcmVxdWVzdCBoYW5kbGluZy4KKworLSBJc3N1ZSAjMTA2ODA6IEZpeCBtdXR1YWxseSBleGNsdXNpdmUgYXJndW1lbnRzIGZvciBhcmd1bWVudCBncm91cHMgaW4KKyAgYXJncGFyc2UuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxMTA1NDogQWxsb3cgTWFjIE9TIFggaW5zdGFsbGVyIGJ1aWxkcyB0byBhZ2FpbiB3b3JrIG9uIDEwLjUgd2l0aAorICB0aGUgc3lzdGVtLXByb3ZpZGVkIFB5dGhvbi4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgUmVsZWFzZSBDYW5kaWRhdGUgMQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMTYtSmFuLTIwMTEqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxMDg4OTogcmFuZ2UgaW5kZXhpbmcgYW5kIHNsaWNpbmcgbm93IHdvcmtzIGNvcnJlY3RseSBvbiByYW5nZXMgd2l0aAorICBhIGxlbmd0aCB0aGF0IGV4Y2VlZHMgc3lzLm1heHNpemUuCisKKy0gSXNzdWUgIzEwODkyOiBEb24ndCBzZWdmYXVsdCB3aGVuIHRyeWluZyB0byBkZWxldGUgX19hYnN0cmFjdG1ldGhvZHNfXyBmcm9tIGEKKyAgY2xhc3MuCisKKy0gSXNzdWUgIzgwMjA6IEF2b2lkIGEgY3Jhc2ggd2hlcmUgdGhlIHNtYWxsIG9iamVjdHMgYWxsb2NhdG9yIHdvdWxkIHJlYWQKKyAgbm9uLVB5dGhvbiBtYW5hZ2VkIG1lbW9yeSB3aGlsZSBpdCBpcyBiZWluZyBtb2RpZmllZCBieSBhbm90aGVyIHRocmVhZC4gIFBhdGNoCisgIGJ5IE1hdHQgQmFuZHkuCisKKy0gSXNzdWUgIzEwODQxOiBPbiBXaW5kb3dzLCBzZXQgdGhlIGJpbmFyeSBtb2RlIG9uIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciBhbmQgYWxsCisgIGlvLkZpbGVJTyBvYmplY3RzICh0byBub3QgdHJhbnNsYXRlIG5ld2xpbmVzLCBcclxuIDw9PiBcbikuICBUaGUgUHl0aG9uIHBhcnNlcgorICB0cmFuc2xhdGVzIG5ld2xpbmVzIChcclxuID0+IFxuKS4KKworLSBSZW1vdmUgYnVmZmVyIEFQSSBmcm9tIHN0YWJsZSBBQkkgZm9yIG5vdywgc2VlICMxMDE4MS4KKworLSBJc3N1ZSAjODY1MTogUHlBcmdfUGFyc2UqKCkgZnVuY3Rpb25zIHJhaXNlIGFuIE92ZXJmbG93RXJyb3IgaWYgdGhlIGZpbGUKKyAgZG9lc24ndCBoYXZlIFBZX1NTSVpFX1RfQ0xFQU4gZGVmaW5lIGFuZCB0aGUgc2l6ZSBkb2Vzbid0IGZpdCBpbiBhbiBpbnQKKyAgKGxlbmd0aCBiaWdnZXIgdGhhbiAyXjMxLTEgYnl0ZXMpLgorCistIElzc3VlICM5MDE1LCAjOTYxMTogRmlsZUlPLnJlYWRpbnRvKCksIEZpbGVJTy53cml0ZSgpLCBvcy53cml0ZSgpIGFuZAorICBzdGRwcmludGVyLndyaXRlKCkgY2xhbXAgdGhlIGxlbmd0aCB0byBJTlRfTUFYIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzgyNzg6IE9uIFdpbmRvd3MgYW5kIHdpdGggYSBOVEZTIGZpbGVzeXN0ZW0sIG9zLnN0YXQoKSBhbmQgb3MudXRpbWUoKQorICBjYW4gbm93IGhhbmRsZSBkYXRlcyBhZnRlciAyMDM4LgorCistIElzc3VlICMxMDc4MDogUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoKSBhbmQKKyAgUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoKSBkZWNvZGUgdGhlIGZpbGVuYW1lIGZyb20gdGhlCisgIGZpbGVzeXN0ZW0gZW5jb2RpbmcgaW5zdGVhZCBvZiBVVEYtOC4KKworLSBJc3N1ZSAjMTA3Nzk6IFB5RXJyX1dhcm5FeHBsaWNpdCgpIGRlY29kZXMgdGhlIGZpbGVuYW1lIGZyb20gdGhlIGZpbGVzeXN0ZW0KKyAgZW5jb2RpbmcgaW5zdGVhZCBvZiBVVEYtOC4KKworLSBBZGQgc3lzLmZsYWdzIGF0dHJpYnV0ZSBmb3IgdGhlIG5ldyAtcSBjb21tYW5kLWxpbmUgb3B0aW9uLgorCistIElzc3VlICMxMTUwNjogVHJ5aW5nIHRvIGFzc2lnbiB0byBhIGJ5dGVzIGxpdGVyYWwgc2hvdWxkIHJlc3VsdCBpbiBhCisgIFN5bnRheEVycm9yLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzEwOTE2OiBtbWFwIHNob3VsZCBub3Qgc2VnZmF1bHQgd2hlbiBhIGZpbGUgaXMgbWFwcGVkIHVzaW5nIDAgYXMgbGVuZ3RoCisgIGFuZCBhIG5vbi16ZXJvIG9mZnNldCwgYW5kIGFuIGF0dGVtcHQgdG8gcmVhZCBwYXN0IHRoZSBlbmQgb2YgZmlsZSBpcyBtYWRlCisgIChJbmRleEVycm9yIGlzIHJhaXNlZCBpbnN0ZWFkKS4gIFBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgorCistIElzc3VlICMxMDE1NCwgIzEwMDkwOiBjaGFuZ2UgdGhlIG5vcm1hbGl6YXRpb24gb2YgVVRGLTggdG8gIlVURi04IiBpbnN0ZWFkCisgIG9mICJVVEY4IiBpbiB0aGUgbG9jYWxlIG1vZHVsZSBhcyB0aGUgbGF0dGVyIGlzIG5vdCBzdXBwb3J0ZWQgTWFjT1NYIGFuZCBPcGVuQlNELgorCistIElzc3VlICMxMDkwNzogV2FybiBPUyBYIDEwLjYgSURMRSB1c2VycyB0byB1c2UgQWN0aXZlU3RhdGUgVGNsL1RrIDguNSwgcmF0aGVyCisgIHRoYW4gdGhlIGN1cnJlbnRseSBwcm9ibGVtYXRpYyBBcHBsZS1zdXBwbGllZCBvbmUsIHdoZW4gcnVubmluZyB3aXRoIHRoZQorICA2NC0vMzItYml0IGluc3RhbGxlciB2YXJpYW50LgorCistIElzc3VlICM0OTUzOiBjZ2kuRmllbGRTdG9yYWdlIGFuZCBjZ2kucGFyc2UoKSBwYXJzZSB0aGUgcmVxdWVzdCBhcyBieXRlcywgbm90CisgIGFzIHVuaWNvZGUsIGFuZCBhY2NlcHQgYmluYXJ5IGZpbGVzLiBBZGQgZW5jb2RpbmcgYW5kIGVycm9ycyBhdHRyaWJ1dGVzIHRvCisgIGNnaS5GaWVsZFN0b3JhZ2UuIFBhdGNoIHdyaXR0ZW4gYnkgUGllcnJlIFF1ZW50ZWwgKHdpdGggbWFueSBpbnB1dHMgYnkgR2xlbm4KKyAgTGluZGVybWFuKS4KKworLSBBZGQgZW5jb2RpbmcgYW5kIGVycm9ycyBhcmd1bWVudHMgdG8gdXJsbGliLnBhcnNlX3FzKCkgYW5kIHVybGxpYi5wYXJzZV9xc2woKS4KKworLSBJc3N1ZSAjMTA4OTk6IE5vIGZ1bmN0aW9uIHR5cGUgYW5ub3RhdGlvbnMgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkuICBSZW1vdmVkCisgIGZ1bmN0aW9uIHR5cGUgYW5ub3RhdGlvbnMgZnJvbSBfcHlpby5weS4KKworLSBJc3N1ZSAjMTA4NzU6IFVwZGF0ZSBSZWd1bGFyIEV4cHJlc3Npb24gSE9XVE87IHBhdGNoIGJ5ICdTaWxlbnRHaG9zdCcuCisKKy0gSXNzdWUgIzEwODcyOiBUaGUgcmVwcigpIG9mIFRleHRJT1dyYXBwZXIgb2JqZWN0cyBub3cgaW5jbHVkZXMgdGhlIG1vZGUKKyAgaWYgYXZhaWxhYmxlLgorCistIElzc3VlICMxMDg2OTogRml4ZWQgYnVnIHdoZXJlIGFzdC5pbmNyZW1lbnRfbGluZW5vIG1vZGlmaWVkIHRoZSByb290IG5vZGUKKyAgdHdpY2UuCisKKy0gSXNzdWUgIzU4NzE6IGVtYWlsLmhlYWRlci5IZWFkZXIuZW5jb2RlIG5vdyByYWlzZXMgYW4gZXJyb3IgaWYgYW55CisgIGNvbnRpbnVhdGlvbiBsaW5lIGluIHRoZSBmb3JtYXR0ZWQgdmFsdWUgaGFzIG5vIGxlYWRpbmcgd2hpdGUgc3BhY2UgYW5kIGxvb2tzCisgIGxpa2UgYSBoZWFkZXIuICBTaW5jZSBHZW5lcmF0b3IgdXNlcyBIZWFkZXIgdG8gZm9ybWF0IGFsbCBoZWFkZXJzLCB0aGlzIGNoZWNrCisgIGlzIG1hZGUgZm9yIGFsbCBoZWFkZXJzIGluIGFueSBzZXJpYWxpemVkIG1lc3NhZ2UgYXQgc2VyaWFsaXphdGlvbiB0aW1lLiAgVGhpcworICBwcm92aWRlcyBwcm90ZWN0aW9uIGFnYWluc3QgaGVhZGVyIGluamVjdGlvbiBhdHRhY2tzLgorCistIElzc3VlICMxMDg1OTogTWFrZSBgYGNvbnRleHRsaWIuR2VuZXJhdG9yQ29udGV4dE1hbmFnZXJgYCBvZmZpY2lhbGx5CisgIHByaXZhdGUgYnkgcmVuYW1pbmcgaXQgdG8gYGBfR2VuZXJhdG9yQ29udGV4dE1hbmFnZXJgYC4KKworLSBJc3N1ZSAjMTAwNDI6IEZpeGVkIHRoZSB0b3RhbF9vcmRlcmluZyBkZWNvcmF0b3IgdG8gaGFuZGxlIGNyb3NzLXR5cGUKKyAgY29tcGFyaXNvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIGluZmluaXRlIHJlY3Vyc2lvbi4KKworLSBJc3N1ZSAjMTA2ODY6IHRoZSBlbWFpbCBwYWNrYWdlIG5vdyA6cmZjOmAyMDQ3YFwgLWVuY29kZXMgaGVhZGVycyB3aXRoCisgIG5vbi1BU0NJSSBieXRlcyAocGFyc2VkIGJ5IGEgQnl0ZXNQYXJzZXIpIHdoZW4gZG9pbmcgY29udmVyc2lvbiB0byA3Yml0LWNsZWFuCisgIHByZXNlbnRhdGlvbiwgaW5zdGVhZCBvZiByZXBsYWNpbmcgdGhlbSB3aXRoID9zLgorCistIGVtYWlsLmhlYWRlci5IZWFkZXIgd2FzIGluY29ycmVjdGx5IGVuY29kaW5nIGZvbGRpbmcgd2hpdGVzcGFjZSB3aGVuCisgIHJmYzIwNDctZW5jb2RpbmcgaGVhZGVyIHZhbHVlcyB3aXRoIGVtYmVkZGVkIG5ld2xpbmVzLCBsZWF2aW5nIHRoZW0gd2l0aG91dAorICBmb2xkaW5nIHdoaXRlc3BhY2UuICBJdCBub3cgdXNlcyB0aGUgY29udGludWF0aW9uX3dzLCBhcyBpdCBkb2VzIGZvcgorICBjb250aW51YXRpb24gbGluZXMgdGhhdCBpdCBjcmVhdGVzIGl0c2VsZi4KKworLSBJc3N1ZSAjMTc3NzQxMiwgIzEwODI3OiBDaGFuZ2VkIHRoZSBydWxlcyBmb3IgMi1kaWdpdCB5ZWFycy4gVGhlCisgIHRpbWUuYXNjdGltZSgpLCB0aW1lLmN0aW1lKCkgYW5kIHRpbWUuc3RyZnRpbWUoKSBmdW5jdGlvbnMgd2lsbCBub3cgZm9ybWF0CisgIGFueSB5ZWFyIHdoZW4gYGB0aW1lLmFjY2VwdDJkeWVhcmBgIGlzIEZhbHNlIGFuZCB3aWxsIGFjY2VwdCB5ZWFycyA+PSAxMDAwCisgIG90aGVyd2lzZS4gYGB0aW1lLm1rdGltZWBgIGFuZCBgYHRpbWUuc3RyZnRpbWVgYCBub3cgYWNjZXB0IGZ1bGwgcmFuZ2UKKyAgc3VwcG9ydGVkIGJ5IHRoZSBPUy4gV2l0aCBWaXN1YWwgU3R1ZGlvIG9yIG9uIFNvbGFyaXMsIHRoZSB5ZWFyIGlzIGxpbWl0ZWQgdG8KKyAgdGhlIHJhbmdlIFsxOyA5OTk5XS4gQ29udmVyc2lvbiBvZiAyLWRpZ2l0IHllYXJzIHRvIDQtZGlnaXQgaXMgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjNzg1ODogUmFpc2UgYW4gZXJyb3IgcHJvcGVybHkgd2hlbiBvcy51dGltZSgpIGZhaWxzIHVuZGVyIFdpbmRvd3MKKyAgb24gYW4gZXhpc3RpbmcgZmlsZS4KKworLSBJc3N1ZSAjMzgzOTogd3NnaXJlZiBzaG91bGQgbm90IG92ZXJyaWRlIGEgQ29udGVudC1MZW5ndGggaGVhZGVyIHNldCBieQorICB0aGUgYXBwbGljYXRpb24uICBJbml0aWFsIHBhdGNoIGJ5IENsb3ZpcyBGYWJyaWNpby4KKworLSBJc3N1ZSAjMTA0OTI6IGJkYi5CZGIucnVuKCkgb25seSB0cmFjZXMgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY29kZSwgbm90IHRoZQorICBjb21waWxhdGlvbiAoaWYgdGhlIGlucHV0IGlzIGEgc3RyaW5nKS4KKworLSBJc3N1ZSAjNzk5NTogV2hlbiBjYWxsaW5nIGFjY2VwdCgpIG9uIGEgc29ja2V0IHdpdGggYSB0aW1lb3V0LCB0aGUgcmV0dXJuZWQKKyAgc29ja2V0IGlzIG5vdyBhbHdheXMgYmxvY2tpbmcsIHJlZ2FyZGxlc3Mgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0uCisKKy0gSXNzdWUgIzEwNzU2OiBhdGV4aXQgbm9ybWFsaXplcyB0aGUgZXhjZXB0aW9uIGJlZm9yZSBkaXNwbGF5aW5nIGl0LiBQYXRjaCBieQorICBBbmRyZWFzIFN0w7xocmsuCisKKy0gSXNzdWUgIzEwNzkwOiBlbWFpbC5oZWFkZXIuSGVhZGVyLmFwcGVuZCdzIGNoYXJzZXQgbG9naWMgbm93IHdvcmtzIGNvcnJlY3RseQorICBmb3IgY2hhcnNldHMgd2hvc2Ugb3V0cHV0IGNvZGVjIGlzIGRpZmZlcmVudCBmcm9tIGl0cyBpbnB1dCBjb2RlYy4KKworLSBJc3N1ZSAjMTA4MTk6IFNvY2tldElPLm5hbWUgcHJvcGVydHkgcmV0dXJucyAtMSB3aGVuIGl0cyBjbG9zZWQsIGluc3RlYWQgb2YKKyAgcmFpc2luZyBhIFZhbHVlRXJyb3IsIHRvIGZpeCByZXByKCkuCisKKy0gSXNzdWUgIzg2NTA6IHpsaWIuY29tcHJlc3MoKSBhbmQgemxpYi5kZWNvbXByZXNzKCkgcmFpc2UgYW4gT3ZlcmZsb3dFcnJvciBpZgorICB0aGUgaW5wdXQgYnVmZmVyIGxlbmd0aCBkb2Vzbid0IGZpdCBpbnRvIGFuIHVuc2lnbmVkIGludCAobGVuZ3RoIGJpZ2dlciB0aGFuCisgIDJeMzItMSBieXRlcykuCisKKy0gSXNzdWUgIzY2NDM6IFJlaW5pdGlhbGl6ZSBsb2NrcyBoZWxkIHdpdGhpbiB0aGUgdGhyZWFkaW5nIG1vZHVsZSBhZnRlciBmb3JrIHRvCisgIGF2b2lkIGEgcG90ZW50aWFsIHJhcmUgZGVhZGxvY2sgb3IgY3Jhc2ggb24gc29tZSBwbGF0Zm9ybXMuCisKKy0gSXNzdWUgIzEwODA2LCBpc3N1ZSAjOTkwNTogRml4IHN1YnByb2Nlc3MgcGlwZXMgd2hlbiBzb21lIG9mIHRoZSBzdGFuZGFyZCBmaWxlCisgIGRlc2NyaXB0b3JzICgwLCAxLCAyKSBhcmUgY2xvc2VkIGluIHRoZSBwYXJlbnQgcHJvY2Vzcy4gIEluaXRpYWwgcGF0Y2ggYnkgUm9zcworICBMYWdlcndhbGwuCisKKy0gYHVuaXR0ZXN0LlRlc3RDYXNlYCBjYW4gYmUgaW5zdGFudGlhdGVkIHdpdGhvdXQgYSBtZXRob2QgbmFtZTsgZm9yIHNpbXBsZXIKKyAgZXhwbG9yYXRpb24gZnJvbSB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIuCisKKy0gSXNzdWUgIzEwNzk4OiBSZWplY3Qgc3VwcG9ydGluZyBjb25jdXJyZW50LmZ1dHVyZXMgaWYgdGhlIHN5c3RlbSBoYXMgdG9vCisgIGZldyBQT1NJWCBzZW1hcGhvcmVzLgorCistIElzc3VlICMxMDgwNzogUmVtb3ZlIGJhc2U2NCwgYnoyLCBoZXgsIHF1b3ByaSwgcm90MTMsIHV1IGFuZCB6bGliIGNvZGVjcyBmcm9tCisgIHRoZSBjb2RlYyBhbGlhc2VzLiBUaGV5IGFyZSBzdGlsbCBhY2Nlc3NpYmxlIHZpYSBjb2RlY3MubG9va3VwKCkuCisKKy0gSXNzdWUgIzEwODAxOiBJbiB6aXBmaWxlLCBzdXBwb3J0IGRpZmZlcmVudCBlbmNvZGluZ3MgZm9yIHRoZSBoZWFkZXIgYW5kIHRoZQorICBmaWxlbmFtZXMuCisKKy0gSXNzdWUgIzYyODU6IElETEUgbm8gbG9uZ2VyIGNyYXNoZXMgb24gbWlzc2luZyBoZWxwIGZpbGU7IHBhdGNoIGJ5IFNjb3R0CisgIERhdmlkIERhbmllbHMuCisKKy0gRml4IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0LnNldGRlZmF1bHQoKSBzbyB0aGF0IGl0IHdvcmtzIGluIHN1YmNsYXNzZXMgdGhhdAorICBkZWZpbmUgX19taXNzaW5nX18oKS4KKworLSBJc3N1ZSAjMTA3ODY6IHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyIGRlZmF1bHQgc3RyZWFtIG5vIGxvbmdlciBib3VuZCBhdCBpbXBvcnQKKyAgdGltZS4gYHN5cy5zdGRlcnJgIG5vdyBsb29rZWQgdXAgYXQgaW5zdGFudGlhdGlvbiB0aW1lLiAgRml4IGNvbnRyaWJ1dGVkIGJ5CisgIE1hcmsgUm9kZHkuCisKKy0gSXNzdWUgIzEwNzUzOiBDaGFyYWN0ZXJzICc7JywgJz0nIGFuZCAnLCcgaW4gdGhlIFBBVEhfSU5GTyBlbnZpcm9ubWVudCB2YXJpYWJsZQorICB3b24ndCBiZSBxdW90ZWQgd2hlbiB0aGUgVVJJIGlzIGNvbnN0cnVjdGVkIGJ5IHRoZSB3c2dpcmVmLnV0aWwncyByZXF1ZXN0X3VyaQorICBtZXRob2QuIEFjY29yZGluZyB0byBSRkMgMzk4NiwgdGhlc2UgY2hhcmFjdGVycyBjYW4gYmUgYSBwYXJ0IG9mIHBhcmFtcyBpbgorICBQQVRIIGNvbXBvbmVudCBvZiBVUkkgYW5kIG5lZWQgbm90IGJlIHF1b3RlZC4KKworLSBJc3N1ZSAjMTA3Mzg6IEZpeCB3ZWJicm93c2VyLk9wZXJhLnJhaXNlX29wdHMuCisKKy0gSXNzdWUgIzk4MjQ6IFNpbXBsZUNvb2tpZSBub3cgZW5jb2RlcyAsIGFuZCA7IGluIHZhbHVlcyB0byBjYXRlciB0byBob3cKKyAgYnJvd3NlcnMgYWN0dWFsbHkgcGFyc2UgY29va2llcy4KKworLSBJc3N1ZSAjOTMzMzogb3Muc3ltbGluayBub3cgYXZhaWxhYmxlIHJlZ2FyZGxlc3Mgb2YgdXNlciBwcml2aWxlZ2VzLiAgVGhlCisgIGZ1bmN0aW9uIG5vdyByYWlzZXMgT1NFcnJvciBvbiBXaW5kb3dzID49Ni4wIHdoZW4gdGhlIHVzZXIgaXMgdW5hYmxlIHRvIGNyZWF0ZQorICBzeW1ib2xpYyBsaW5rcy4gWFAgYW5kIDIwMDMgc3RpbGwgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvci4KKworLSBJc3N1ZSAjMTA3ODM6IHN0cnVjdC5wYWNrKCkgbm8gbG9uZ2VyIGltcGxpY2l0bHkgZW5jb2RlcyB1bmljb2RlIHRvIFVURi04LgorCistIElzc3VlICMxMDczMDogQWRkIFNWRyBtaW1lIHR5cGVzIHRvIG1pbWV0eXBlcyBtb2R1bGUuCisKKy0gSXNzdWUgIzEwNzY4OiBNYWtlIHRoZSBUa2ludGVyIFNjcm9sbGVkVGV4dCB3aWRnZXQgd29yayBhZ2Fpbi4KKworLSBJc3N1ZSAjMTA3Nzc6IEZpeCAiZGljdGlvbmFyeSBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIgYnVnIGluCisgIEVsZW1lbnRUcmVlIHJlZ2lzdGVyX25hbWVzcGFjZSgpLgorCistIElzc3VlICMxMDYyNjogdGVzdF9sb2dnaW5nIG5vdyBwcmVzZXJ2ZXMgbG9nZ2VyIGRpc2FibGVkIHN0YXRlcy4KKworLSBJc3N1ZSAjMTA3NzQ6IHRlc3RfbG9nZ2luZyBub3cgcmVtb3ZlcyB0ZW1wIGZpbGVzIGNyZWF0ZWQgZHVyaW5nIHRlc3RzLgorCistIElzc3VlICM1MjU4LyMxMDY0MjogaWYgc2l0ZS5weSBlbmNvdW50ZXJzIGEgLnB0aCBmaWxlIHRoYXQgZ2VuZXJhdGVzIGFuIGVycm9yLAorICBpdCBub3cgcHJpbnRzIHRoZSBmaWxlbmFtZSwgbGluZSBudW1iZXIsIGFuZCB0cmFjZWJhY2sgdG8gc3RkZXJyIGFuZCBza2lwcworICB0aGUgcmVzdCBvZiB0aGF0IGluZGl2aWR1YWwgZmlsZSwgaW5zdGVhZCBvZiBzdG9wcGluZyBwcm9jZXNzaW5nIGVudGlyZWx5LgorCistIElzc3VlICMxMDc2Mzogc3VicHJvY2Vzcy5jb21tdW5pY2F0ZSgpIGNsb3NlcyBzdGRvdXQgYW5kIHN0ZGVyciBpZiBib3RoIGFyZQorICBwaXBlcyAoYnVnIHNwZWNpZmljIHRvIFdpbmRvd3MpLgorCistIElzc3VlICMxNjkzNTQ2OiBmaXggZW1haWwubWVzc2FnZSBSRkMgMjIzMSBwYXJhbWV0ZXIgZW5jb2RpbmcgdG8gYmUgaW4gYmV0dGVyCisgIGNvbXBsaWFuY2UgKG5vICJzIGFyb3VuZCBlbmNvZGVkIHZhbHVlcykuCisKKy0gSW1wcm92ZWQgdGhlIGRpZmYgbWVzc2FnZSBpbiB0aGUgdW5pdHRlc3QgbW9kdWxlJ3MgYXNzZXJ0Q291bnRFcXVhbCgpLgorCistIElzc3VlICMxMTU1MzYyOiBlbWFpbC51dGlscy5wYXJzZWRhdGVfdHogbm93IGhhbmRsZXMgYSBtaXNzaW5nIHNwYWNlIGJlZm9yZQorICB0aGUgJy0nIG9mIGEgdGltZXpvbmUgZmllbGQgYXMgd2VsbCBhcyBiZWZvcmUgYSAnKycuCisKKy0gSXNzdWUgIzQ4NzE6IFRoZSB6aXBmaWxlIG1vZHVsZSBub3cgZ2l2ZXMgYSBtb3JlIHVzZWZ1bCBlcnJvciBtZXNzYWdlIGlmCisgIGFuIGF0dGVtcHQgaXMgbWFkZSB0byB1c2UgYSBzdHJpbmcgdG8gc3BlY2lmeSB0aGUgYXJjaGl2ZSBwYXNzd29yZC4KKworLSBJc3N1ZSAjMTA3NTA6IFRoZSBgYHJhd2BgIGF0dHJpYnV0ZSBvZiBidWZmZXJlZCBJTyBvYmplY3RzIGlzIG5vdyByZWFkLW9ubHkuCisKKy0gRGVwcmVjYXRlZCBhc3NlcnREaWN0Q29udGFpbnNTdWJzZXQoKSBpbiB0aGUgdW5pdHRlc3QgbW9kdWxlLgorCitDLUFQSQorLS0tLS0KKworLSBQeU9iamVjdF9DYWxsTWV0aG9kIG5vdyBwYXNzZXMgYWxvbmcgYW55IHVuZGVybHlpbmcgQXR0cmlidXRlRXJyb3IgZnJvbQorICBQeU9iamVjdF9HZXRBdHRyLCBpbnN0ZWFkIG9mIHJlcGxhY2luZyBpdCB3aXRoIHNvbWV0aGluZyBsZXNzIGluZm9ybWF0aXZlCisKKy0gSXNzdWUgIzEwOTEzOiBEZXByZWNhdGUgbWlzbGVhZGluZyBmdW5jdGlvbnMgUHlFdmFsX0FjcXVpcmVMb2NrKCkgYW5kCisgIFB5RXZhbF9SZWxlYXNlTG9jaygpLiAgVGhlIHRocmVhZC1zdGF0ZSBhd2FyZSBBUElzIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCisKKy0gSXNzdWUgIzEwMzMzOiBSZW1vdmUgYW5jaWVudCBHQyBBUEksIHdoaWNoIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgUHl0aG9uCisgIDIuMi4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzEwODQzOiBVcGRhdGUgdGhpcmQtcGFydHkgbGlicmFyeSB2ZXJzaW9ucyB1c2VkIGluIE9TIFggMzItYml0CisgIGluc3RhbGxlciBidWlsZHM6IGJ6aXAyIDEuMC42LCByZWFkbGluZSA2LjEuMiwgU1FMaXRlIDMuNy40ICh3aXRoIEZUUzMvRlRTNAorICBhbmQgUlRSRUUgZW5hYmxlZCksIGFuZCBuY3Vyc2VzdyA1LjUgKHdpZGUtY2hhciBzdXBwb3J0IGVuYWJsZWQpLgorCistIElzc3VlICMxMDgyMDogRml4IE9TIFggZnJhbWV3b3JrIGluc3RhbGxzIHRvIHN1cHBvcnQgdmVyc2lvbi1zcGVjaWZpYworICBzY3JpcHRzICgjMTA2NzkpLgorCistIElzc3VlICM3NzE2OiBVbmRlciBTb2xhcmlzLCBkb24ndCBhc3N1bWUgZXhpc3RlbmNlIG9mIC91c3IveHBnNC9iaW4vZ3JlcCBpbgorICB0aGUgY29uZmlndXJlIHNjcmlwdCBidXQgdXNlICRHUkVQIGluc3RlYWQuICBQYXRjaCBieSBGYWJpYW4gR3JvZmZlbi4KKworLSBJc3N1ZSAjMTA0NzU6IERvbid0IGhhcmRjb2RlIGNvbXBpbGVycyBmb3IgTERTSEFSRUQvTERDWFhTSEFSRUQgb24gTmV0QlNECisgIGFuZCBEcmFnb25GbHkgQlNELiAgUGF0Y2ggYnkgTmljb2xhcyBKb2x5LgorCistIElzc3VlICMxMDY3OTogVGhlICJpZGxlIiwgInB5ZG9jIiBhbmQgIjJ0bzMiIHNjcmlwdHMgYXJlIG5vdyBpbnN0YWxsZWQgd2l0aAorICBhIHZlcnNpb24tc3BlY2lmaWMgc3VmZml4IG9uICJtYWtlIGFsdGluc3RhbGwiLgorCistIElzc3VlICMxMDY1NTogRml4IHRoZSBidWlsZCBvbiBQb3dlclBDIG9uIExpbnV4IHdpdGggR0NDIHdoZW4gYnVpbGRpbmcgd2l0aAorICB0aW1lc3RhbXAgcHJvZmlsaW5nICgtLXdpdGgtdHNjKTogdGhlIHByZXByb2Nlc3NvciB0ZXN0IGZvciB0aGUgUG93ZXJQQworICBzdXBwb3J0IG5vdyBsb29rcyBmb3IgIl9fcG93ZXJwY19fIiBhcyB3ZWxsIGFzICJfX3BwY19fIjogdGhlIGxhdHRlciBzZWVtcyB0bworICBvbmx5IGJlIHByZXNlbnQgb24gT1MgWDsgdGhlIGZvcm1lciBpcyB0aGUgY29ycmVjdCBvbmUgZm9yIExpbnV4IHdpdGggR0NDLgorCistIElzc3VlICMxMDk5OiBGaXggdGhlIGJ1aWxkIG9uIE1hY09TWCB3aGVuIGJ1aWxkaW5nIGEgZnJhbWV3b3JrIHdpdGggcHlkZWJ1ZworICB1c2luZyBHQ0MgNC4wLgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTA4NDM6IEluc3RhbGwgdGhlIFRvb2xzIGRpcmVjdG9yeSBvbiBPUyBYIGluIHRoZSBhcHBsaWNhdGlvbnMgRXh0cmFzCisgICgvQXBwbGljYXRpb25zL1B5dGhvbiAzLm4vRXh0cmFzLykgd2hlcmUgdGhlIERlbW8gZGlyZWN0b3J5IGhhZCBwcmV2aW91cyBiZWVuCisgIGluc3RhbGxlZC4KKworLSBJc3N1ZSAjNzk2MjogVGhlIERlbW8gZGlyZWN0b3J5IGlzIGdvbmUuICBNb3N0IG9mIHRoZSBvbGQgYW5kIHVubWFpbnRhaW5lZAorICBkZW1vcyBoYXZlIGJlZW4gcmVtb3ZlZCwgb3RoZXJzIGludGVncmF0ZWQgaW4gZG9jdW1lbnRhdGlvbiBvciBhIG5ldworICBUb29scy9kZW1vIHN1YmRpcmVjdG9yeS4KKworLSBJc3N1ZSAjMTA1MDI6IEFkZGl0aW9uIG9mIHRoZSB1bml0dGVzdGd1aSB0b29sLiBPcmlnaW5hbGx5IGJ5IFN0ZXZlIFB1cmNlbGwuCisgIFVwZGF0ZWQgZm9yIHRlc3QgZGlzY292ZXJ5IGJ5IE1hcmsgUm9kZHkgYW5kIFB5dGhvbiAzIGNvbXBhdGliaWxpdHkgYnkgQnJpYW4KKyAgQ3VydGluLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTE5MTA6IEZpeCB0ZXN0X2hlYXBxIHRvIHNraXAgdGhlIEMgdGVzdHMgd2hlbiBfaGVhcHEgaXMgbWlzc2luZy4KKworLSBGaXggdGVzdF9zdGFydGZpbGUgdG8gd2FpdCBmb3IgY2hpbGQgcHJvY2VzcyB0byB0ZXJtaW5hdGUgYmVmb3JlIGZpbmlzaGluZy4KKworLSBJc3N1ZSAjMTA4MjI6IEZpeCB0ZXN0X3Bvc2l4OnRlc3RfZ2V0Z3JvdXBzIGZhaWx1cmUgdW5kZXIgU29sYXJpcy4gIFBhdGNoCisgIGJ5IFJvc3MgTGFnZXJ3YWxsLgorCistIE1ha2UgdGhlIC0tY292ZXJhZ2UgZmxhZyB3b3JrIGZvciB0ZXN0LnJlZ3J0ZXN0LgorCistIElzc3VlICMxNjc3Njk0OiBSZWZhY3RvciBhbmQgaW1wcm92ZSB0ZXN0X3RpbWVvdXQuICBPcmlnaW5hbCBwYXRjaCBieQorICBCasO2cm4gTGluZHF2aXN0LgorCistIElzc3VlICM1NDg1OiBBZGQgdGVzdHMgZm9yIHRoZSBVc2VGb3JlaWduRFREIG1ldGhvZCBvZiBleHBhdCBwYXJzZXIgb2JqZWN0cy4KKyAgUGF0Y2ggYnkgSmVhbi1QYXVsIENhbGRlcm9uZSBhbmQgU2FuZHJvIFRvc2kuCisKKy0gSXNzdWUgIzYyOTM6IEhhdmUgcmVncnRlc3QucHkgZWNobyBiYWNrIHN5cy5mbGFncy4gIFRoaXMgaXMgZG9uZSBieSBkZWZhdWx0IGluCisgIHdob2xlIHJ1bnMgYW5kIGVuYWJsZWQgc2VsZWN0aXZlbHkgdXNpbmcgYGAtLWhlYWRlcmBgIHdoZW4gcnVubmluZyBhbiBleHBsaWNpdAorICBsaXN0IG9mIHRlc3RzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQ29sbGluIFdpbnRlci4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgQmV0YSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMTktRGVjLTIwMTAqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM4ODQ0OiBSZWd1bGFyIGFuZCByZWN1cnNpdmUgbG9jayBhY3F1aXNpdGlvbnMgY2FuIG5vdyBiZSBpbnRlcnJ1cHRlZAorICBieSBzaWduYWxzIG9uIHBsYXRmb3JtcyB1c2luZyBwdGhyZWFkcy4gIFBhdGNoIGJ5IFJlaWQgS2xlY2tuZXIuCisKKy0gSXNzdWUgIzQyMzY6IFB5TW9kdWxlX0NyZWF0ZTIgbm93IGNoZWNrcyB0aGUgaW1wb3J0IG1hY2hpbmVyeSBkaXJlY3RseQorICByYXRoZXIgdGhhbiB0aGUgUHlfSXNJbml0aWFsaXplZCBmbGFnLCBhdm9pZGluZyBhIEZhdGFsIFB5dGhvbgorICBlcnJvciBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgd2hlbiBhbiBpbXBvcnQgaXMgZG9uZSBpbiBfX2RlbF9fLgorCistIElzc3VlICM1NTg3OiBhZGQgYSByZXByIHRvIGRpY3RfcHJveHkgb2JqZWN0cy4gIFBhdGNoIGJ5IERhdmlkIFN0YW5layBhbmQKKyAgRGFuaWVsIFVyYmFuLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzMyNDM6ICBTdXBwb3J0IGl0ZXJhYmxlIGJvZGllcyBpbiBodHRwbGliLiBQYXRjaCBDb250cmlidXRpb25zIGJ5CisgIFh1YW5qaSBMaSBhbmQgQ2hyaXMgQXRMZWUuCisKKy0gSXNzdWUgIzEwNjExOiBTeXN0ZW1FeGl0IGV4Y2VwdGlvbiB3aWxsIG5vIGxvbmdlciBraWxsIGEgdW5pdHRlc3QgcnVuLgorCistIElzc3VlICM5ODU3OiBJdCBpcyBub3cgcG9zc2libGUgdG8gc2tpcCBhIHRlc3QgaW4gYSBzZXRVcCwgdGVhckRvd24gb3IgY2xlYW4KKyAgdXAgZnVuY3Rpb24uCisKKy0gSXNzdWUgIzEwNTczOiB1c2UgYWN0dWFsL2V4cGVjdGVkIGNvbnNpc3RlbnRseSBpbiB1bml0dGVzdCBtZXRob2RzLgorICBUaGUgb3JkZXIgb2YgdGhlIGFyZ3Mgb2YgYXNzZXJ0Q291bnRFcXVhbCBpcyBhbHNvIGNoYW5nZWQuCisKKy0gSXNzdWUgIzkyODY6IGVtYWlsLnV0aWxzLnBhcnNlYWRkciBubyBsb25nZXIgY29uY2F0ZW5hdGVzIGJsYW5rLXNlcGFyYXRlZAorICB3b3JkcyBpbiB0aGUgbG9jYWwgcGFydCBvZiBlbWFpbCBhZGRyZXNzZXMsIHRoZXJlYnkgcHJlc2VydmluZyB0aGUgaW5wdXQuCisKKy0gSXNzdWUgIzY3OTE6IExpbWl0IGhlYWRlciBsaW5lIGxlbmd0aCAodG8gNjU1MzUgYnl0ZXMpIGluIGh0dHAuY2xpZW50CisgIGFuZCBodHRwLnNlcnZlciwgdG8gYXZvaWQgZGVuaWFsIG9mIHNlcnZpY2VzIGZyb20gdGhlIG90aGVyIHBhcnR5LgorCistIElzc3VlICMxMDQwNDogVXNlIGN0bC1idXR0b24tMSBvbiBPU1ggZm9yIHRoZSBjb250ZXh0IG1lbnUgaW4gSWRsZS4KKworLSBJc3N1ZSAjOTkwNzogRml4IHRhYiBoYW5kbGluZyBvbiBPU1ggd2hlbiB1c2luZyBlZGl0bGluZSBieSBjYWxsaW5nCisgIHJsX2luaXRpYWxpemUgZmlyc3QsIHRoZW4gc2V0dGluZyBvdXIgY3VzdG9tIGRlZmF1bHRzLCB0aGVuIHJlYWRpbmcgLmVkaXRyYy4KKworLSBJc3N1ZSAjNDE4ODogQXZvaWQgY3JlYXRpbmcgZHVtbXkgdGhyZWFkIG9iamVjdHMgd2hlbiBsb2dnaW5nIG9wZXJhdGlvbnMKKyAgZnJvbSB0aGUgdGhyZWFkaW5nIG1vZHVsZSAod2l0aCB0aGUgaW50ZXJuYWwgdmVyYm9zZSBmbGFnIGFjdGl2YXRlZCkuCisKKy0gSXNzdWUgIzEwNzExOiBSZW1vdmUgSFRUUCAwLjkgc3VwcG9ydCBmcm9tIGh0dHAuY2xpZW50LiAgVGhlIGBgc3RyaWN0YGAKKyAgcGFyYW1ldGVyIHRvIEhUVFBDb25uZWN0aW9uIGFuZCBmcmllbmRzIGlzIGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzk3MjE6IEZpeCB0aGUgYmVoYXZpb3Igb2YgdXJsam9pbiB3aGVuIHRoZSByZWxhdGl2ZSB1cmwgc3RhcnRzIHdpdGggYQorICAnOycgY2hhcmFjdGVyLiBQYXRjaCBieSBXZXMgQ2hvdy4KKworLSBJc3N1ZSAjMTA3MTQ6IExpbWl0IGxlbmd0aCBvZiBpbmNvbWluZyByZXF1ZXN0IGluIGh0dHAuc2VydmVyIHRvIDY1NTM2IGJ5dGVzCisgIGZvciBzZWN1cml0eSByZWFzb25zLiAgSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KKworLSBJc3N1ZSAjOTU1ODogRml4IGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX2V4dCB3aXRoIFZTIDguMC4KKworLSBJc3N1ZSAjMTA2Njc6IEZhc3QgcGF0aCBmb3IgY29sbGVjdGlvbnMuQ291bnRlcigpLgorCistIElzc3VlICMxMDY5NTogcGFzc2luZyB0aGUgcG9ydCBhcyBhIHN0cmluZyB2YWx1ZSB0byB0ZWxuZXRsaWIgbm8gbG9uZ2VyCisgIGNhdXNlcyBkZWJ1ZyBtb2RlIHRvIGZhaWwuCisKKy0gSXNzdWUgIzEwNzg5MTk6IGFkZF9oZWFkZXIgbm93IGF1dG9tYXRpY2FsbHkgUkZDMjIzMSBlbmNvZGVzIHBhcmFtZXRlcnMKKyAgdGhhdCBjb250YWluIG5vbi1hc2NpaSB2YWx1ZXMuCisKKy0gSXNzdWUgIzEwMTg4IChwYXJ0aWFsIHJlc29sdXRpb24pOiB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkgZW1pdHMKKyAgYSB3YXJuaW5nIG9uIHN5cy5zdGRlcnIgcmF0aGVyIHRoYW4gdGhyb3dpbmcgYSBtaXNsZWFkaW5nIGV4Y2VwdGlvbgorICBpZiBjbGVhbnVwIGZhaWxzIGR1ZSB0byBudWxsaW5nIG91dCBvZiBtb2R1bGVzIGR1cmluZyBzaHV0ZG93bi4KKyAgQWxzbyBhdm9pZHMgYW4gQXR0cmlidXRlRXJyb3Igd2hlbiBta2R0ZW1wIGNhbGwgZmFpbHMgYW5kIGlzc3VlcworICBhIFJlc291cmNlV2FybmluZyBvbiBpbXBsaWNpdCBjbGVhbnVwIHZpYSBfX2RlbF9fLgorCistIElzc3VlICMxMDEwNzogV2FybiBhYm91dCB1bnNhdmVkIGZpbGVzIGluIElETEUgb24gT1NYLgorCistIElzc3VlICM3MjEzOiBzdWJwcm9jZXNzLlBvcGVuJ3MgZGVmYXVsdCBmb3IgY2xvc2VfZmRzIGhhcyBiZWVuIGNoYW5nZWQuCisgIEl0IGlzIG5vdyBUcnVlIGluIG1vc3QgY2FzZXMgb3RoZXIgdGhhbiBvbiBXaW5kb3dzIHdoZW4gaW5wdXQsIG91dHB1dCBvcgorICBlcnJvciBoYW5kbGVzIGFyZSBwcm92aWRlZC4KKworLSBJc3N1ZSAjNjU1OTogc3VicHJvY2Vzcy5Qb3BlbiBoYXMgYSBuZXcgcGFzc19mZHMgcGFyYW1ldGVyIChhY3R1YWxseQorICBhZGRlZCBpbiAzLjJiZXRhMSkgdG8gYWxsb3cgc3BlY2lmeWluZyBhIHNwZWNpZmljIGxpc3Qgb2YgZmlsZSBkZXNjcmlwdG9ycworICB0byBrZWVwIG9wZW4gaW4gdGhlIGNoaWxkIHByb2Nlc3MuCisKKy0gSXNzdWUgIzE3MzE3MTc6IEZpeGVkIHRoZSBwcm9ibGVtIHdoZXJlIHN1YnByb2Nlc3Mud2FpdCgpIGNvdWxkIGNhdXNlIGFuCisgIE9TRXJyb3IgZXhjZXB0aW9uIHdoZW4gVGhlIE9TIGhhZCBiZWVuIHRvbGQgdG8gaWdub3JlIFNJR0NMRCBpbiBvdXIgcHJvY2VzcworICBvciBvdGhlcndpc2Ugbm90IHdhaXQgZm9yIGV4aXRpbmcgY2hpbGQgcHJvY2Vzc2VzLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjNzc1OTY0OiB0ZXN0X2dycCBub3cgc2tpcHMgWVAvTklTIGVudHJpZXMgaW5zdGVhZCBvZiBmYWlsaW5nIHdoZW4KKyAgZW5jb3VudGVyaW5nIHRoZW0uCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICM2MDc1OiBJRExFIG9uIE1hYyBPUyBYIG5vdyB3b3JrcyB3aXRoIGJvdGggQ2FyYm9uIEFxdWFUayBhbmQKKyAgQ29jb2EgQXF1YVRrLgorCistIElzc3VlICMxMDcxMDogYGBNaXNjL3NldHVpZC1wcm9nLmNgYCBpcyByZW1vdmVkIGZyb20gdGhlIHNvdXJjZSB0cmVlLgorCistIElzc3VlICMxMDcwNjogUmVtb3ZlIG91dGRhdGVkIHNjcmlwdCBydW50ZXN0cy5zaC4gIEVpdGhlciBgYG1ha2UgdGVzdGBgCisgIG9yIGBgcHl0aG9uIC1tIHRlc3RgYCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgorCitCdWlsZAorLS0tLS0KKworLSBUaGUgV2luZG93cyBidWlsZCBub3cgdXNlcyBUY2wvVGsgOC41LjkgYW5kIHNxbGl0ZTMgMy43LjQuCisKKy0gSXNzdWUgIzkyMzQ6IGFyZ3BhcnNlIHN1cHBvcnRzIGFsaWFzIG5hbWVzIGZvciBzdWJwYXJzZXJzLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBCZXRhIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAwNS1EZWMtMjAxMCoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzEwNjMwOiBSZXR1cm4gZGljdCB2aWV3cyBmcm9tIHRoZSBkaWN0IHByb3h5IGtleXMoKS92YWx1ZXMoKS9pdGVtcygpCisgIG1ldGhvZHMuCisKKy0gSXNzdWUgIzEwNTk2OiBGaXggZmxvYXQuX19tb2RfXyB0byBoYXZlIHRoZSBzYW1lIGJlaGF2aW91ciBhcyBmbG9hdC5fX2Rpdm1vZF9fCisgIHdpdGggcmVzcGVjdCB0byBzaWduZWQgemVyb3MuICAtNC4wICUgNC4wIHNob3VsZCBiZSAwLjAsIG5vdCAtMC4wLgorCistIElzc3VlICMxNzcyODMzOiBBZGQgdGhlIC1xIGNvbW1hbmQtbGluZSBvcHRpb24gdG8gc3VwcHJlc3MgY29weXJpZ2h0IGFuZAorICB2ZXJzaW9uIG91dHB1dCBpbiBpbnRlcmFjdGl2ZSBtb2RlLgorCistIFByb3ZpZGUgYW4gKm9wdGltaXplKiBwYXJhbWV0ZXIgaW4gdGhlIGJ1aWx0LWluIGNvbXBpbGUoKSBmdW5jdGlvbi4KKworLSBGaXhlZCBzZXZlcmFsIGNvcm5lciBjYXNlIGlzc3VlcyBvbiBXaW5kb3dzIGluIG9zLnN0YXQvb3MubHN0YXQgcmVsYXRlZCB0bworICByZXBhcnNlIHBvaW50cy4KKworLSBQRVAgMzg0IChEZWZpbmluZyBhIFN0YWJsZSBBQkkpIGlzIGltcGxlbWVudGVkLgorCistIElzc3VlICMyNjkwOiBSYW5nZSBvYmplY3RzIHN1cHBvcnQgbmVnYXRpdmUgaW5kaWNlcyBhbmQgc2xpY2luZy4KKworLSBJc3N1ZSAjOTkxNTogU3BlZWQgdXAgc29ydGluZyB3aXRoIGEga2V5LgorCistIElzc3VlICM4Njg1OiBTcGVlZCB1cCBzZXQgZGlmZmVyZW5jZSBgYGEgLSBiYGAgd2hlbiBzb3VyY2Ugc2V0IGBgYWBgIGlzIG11Y2gKKyAgbGFyZ2VyIHRoYW4gb3BlcmFuZCBgYGJgYC4gIFBhdGNoIGJ5IEFuZHJldyBCZW5uZXR0cy4KKworLSBJc3N1ZSAjMTA1MTg6IEJyaW5nIGJhY2sgdGhlIGNhbGxhYmxlKCkgYnVpbHRpbi4KKworLSBJc3N1ZSAjNzA5NDogQWRkZWQgYWx0ZXJuYXRlIGZvcm1hdHRpbmcgKHNwZWNpZmllZCBieSAnIycpIHRvIGBgX19mb3JtYXRfX2BgCisgIG1ldGhvZCBvZiBmbG9hdCwgY29tcGxleCwgYW5kIERlY2ltYWwuIFRoaXMgYWxsb3dzIG1vcmUgcHJlY2lzZSBjb250cm9sIG92ZXIKKyAgd2hlbiBkZWNpbWFsIHBvaW50cyBhcmUgZGlzcGxheWVkLgorCistIElzc3VlICMxMDQ3NDogcmFuZ2UuY291bnQoKSBzaG91bGQgcmV0dXJuIGludGVnZXJzLgorCistIElzc3VlICMxNTc0MjE3OiBpc2luc3RhbmNlIG5vdyBjYXRjaGVzIG9ubHkgQXR0cmlidXRlRXJyb3IsIHJhdGhlciB0aGFuCisgIG1hc2tpbmcgYWxsIGVycm9ycy4KKworTGlicmFyeQorLS0tLS0tLQorCistIGxvZ2dpbmc6IGFkZGVkICJoYW5kbGVyIG9mIGxhc3QgcmVzb3J0Ii4gU2VlIGh0dHA6Ly9iaXQubHkvbGFzdC1yZXNvcnQtaGFuZGxlcgorCistIHRlc3Quc3VwcG9ydDogQWRkZWQgVGVzdEhhbmRsZXIgYW5kIE1hdGNoZXIgY2xhc3NlcyBmb3IgYmV0dGVyIHN1cHBvcnQgb2YKKyAgYXNzZXJ0aW9ucyBhYm91dCBsb2dnaW5nLgorCistIElzc3VlICM0MzkxOiBVc2UgcHJvcGVyIHBsdXJhbCBmb3JtcyBpbiBhcmdwYXJzZS4KKworLSBJc3N1ZSAjMTA2MDE6IHN5cy5kaXNwbGF5aG9vayB1c2VzICdiYWNrc2xhc2hyZXBsYWNlJyBlcnJvciBoYW5kbGVyIG9uCisgIFVuaWNvZGVFbmNvZGVFcnJvci4KKworLSBBZGQgdGhlICJkaXNwbGF5IiBhbmQgInVuZGlzcGxheSIgcGRiIGNvbW1hbmRzLgorCistIElzc3VlICM3MjQ1OiBBZGQgYSBTSUdJTlQgaGFuZGxlciBpbiBwZGIgdGhhdCBhbGxvd3MgdG8gYnJlYWsgYSBwcm9ncmFtIGFnYWluCisgIGFmdGVyIGEgImNvbnRpbnVlIiBjb21tYW5kLgorCistIEFkZCB0aGUgImludGVyYWN0IiBwZGIgY29tbWFuZC4KKworLSBJc3N1ZSAjNzkwNTogQWN0dWFsbHkgcmVzcGVjdCB0aGUga2V5ZW5jb2RpbmcgcGFyYW1ldGVyIHRvIHNoZWx2ZS5TaGVsZi4KKworLSBJc3N1ZSAjMTU2OTI5MTogU3BlZWQgdXAgYXJyYXkucmVwZWF0KCkuCisKKy0gUHJvdmlkZSBhbiBpbnRlcmZhY2UgdG8gc2V0IHRoZSBvcHRpbWl6YXRpb24gbGV2ZWwgb2YgY29tcGlsYXRpb24gaW4KKyAgcHlfY29tcGlsZSwgY29tcGlsZWFsbCBhbmQgemlwZmlsZS5QeVppcEZpbGUuCisKKy0gSXNzdWUgIzc5MDQ6IENoYW5nZXMgdG8gdXJsbGliLnBhcnNlLnVybHNwbGl0IHRvIGhhbmRsZSBzY2hlbWVzIGFzIGRlZmluZWQgYnkKKyAgUkZDMzk4Ni4gQW55dGhpbmcgYmVmb3JlIDovLyBpcyBjb25zaWRlcmVkIGEgc2NoZW1lIGFuZCBpcyBmb2xsb3dlZCBieSBhbgorICBhdXRob3JpdHkgKG9yIG5ldGxvYykgYW5kIGJ5ICcvJyBsZWQgcGF0aCwgd2hpY2ggaXMgb3B0aW9uYWwuCisKKy0gSXNzdWUgIzYwNDU6IGRibS5nbnUgZGF0YWJhc2VzIG5vdyBzdXBwb3J0IGdldCgpIGFuZCBzZXRkZWZhdWx0KCkgbWV0aG9kcy4KKworLSBJc3N1ZSAjMTA2MjA6IGBweXRob24gLW0gdW5pdHRlc3RgIGNhbiBhY2NlcHQgZmlsZSBwYXRocyBpbnN0ZWFkIG9mIG1vZHVsZQorICBuYW1lcyBmb3IgcnVubmluZyBzcGVjaWZpYyB0ZXN0cy4KKworLSBJc3N1ZSAjOTQyNDogRGVwcmVjYXRlIHRoZSBgdW5pdHRlc3QuVGVzdENhc2VgIG1ldGhvZHMgYGFzc2VydEVxdWFsc2AsCisgIGBhc3NlcnROb3RFcXVhbHNgLCBgYXNzZXJ0QWxtb3N0RXF1YWxzYCwgYGFzc2VydE5vdEFsbW9zdEVxdWFsc2AgYW5kIGBhc3NlcnRfYAorICBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIGNvcnJlY3QgbWV0aG9kcyBpbiB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUuCisKKy0gSXNzdWUgIzEwMjcyOiBUaGUgc3NsIG1vZHVsZSBub3cgcmFpc2VzIHNvY2tldC50aW1lb3V0IGluc3RlYWQgb2YgYSBnZW5lcmljCisgIFNTTEVycm9yIG9uIHNvY2tldCB0aW1lb3V0cy4KKworLSBJc3N1ZSAjMTA1Mjg6IEFsbG93IHRyYW5zbGF0b3JzIHRvIHJlb3JkZXIgcGxhY2Vob2xkZXJzIGluIGxvY2FsaXphYmxlCisgIG1lc3NhZ2VzIGZyb20gYXJncGFyc2UuCisKKy0gSXNzdWUgIzEwNDk3OiBGaXggaW5jb3JyZWN0IHVzZSBvZiBnZXR0ZXh0IGluIGFyZ3BhcnNlLgorCistIElzc3VlICMxMDQ3ODogUmVlbnRyYW50IGNhbGxzIGluc2lkZSBidWZmZXJlZCBJTyBvYmplY3RzIChmb3IgZXhhbXBsZSBieQorICB3YXkgb2YgYSBzaWduYWwgaGFuZGxlcikgbm93IHJhaXNlIGEgUnVudGltZUVycm9yIGluc3RlYWQgb2YgZnJlZXppbmcgdGhlCisgIGN1cnJlbnQgcHJvY2Vzcy4KKworLSBsb2dnaW5nOiBBZGRlZCBnZXRMb2dSZWNvcmRGYWN0b3J5L3NldExvZ1JlY29yZEZhY3Rvcnkgd2l0aCBkb2NzIGFuZCB0ZXN0cy4KKworLSBJc3N1ZSAjMTA1NDk6IEZpeCBweWRvYyB0cmFjZWJhY2sgd2hlbiB0ZXh0LWRvY3VtZW50aW5nIGNlcnRhaW4gY2xhc3Nlcy4KKworLSBJc3N1ZSAjMjAwMTogTmV3IEhUTUwgc2VydmVyIHdpdGggZW5oYW5jZWQgV2ViIHBhZ2UgZmVhdHVyZXMuICBQYXRjaCBieSBSb24KKyAgQWRhbS4KKworLSBJc3N1ZSAjMTAzNjA6IEluIFdlYWtTZXQsIGRvIG5vdCByYWlzZSBUeXBlRXJyb3JzIHdoZW4gdGVzdGluZyBmb3IgbWVtYmVyc2hpcAorICBvZiBub24td2Vha3JlZmFibGUgb2JqZWN0cy4KKworLSBJc3N1ZSAjOTQwMjg2OiBweWRvYy5IZWxwZXIuaGVscCgpIGlnbm9yZXMgaW5wdXQvb3V0cHV0IGluaXQgcGFyYW1ldGVycy4KKworLSBJc3N1ZSAjMTc0NTAzNTogQWRkIGEgY29tbWFuZCBzaXplIGFuZCBkYXRhIHNpemUgbGltaXQgdG8gc210cGQucHksIHRvIHByZXZlbnQKKyAgRG9TIGF0dGFja3MuICBQYXRjaCBieSBTYXZpbyBTZW5hLgorCistIElzc3VlICM0OTI1OiBBZGQgZmlsZW5hbWUgdG8gZXJyb3IgbWVzc2FnZSB3aGVuIGV4ZWN1dGFibGUgY2FuJ3QgYmUgZm91bmQgaW4KKyAgc3VicHJvY2Vzcy4KKworLSBJc3N1ZSAjMTAzOTE6IERvbid0IGRlcmVmZXJlbmNlIGludmFsaWQgbWVtb3J5IGluIGVycm9yIG1lc3NhZ2VzIGluIHRoZSBhc3QKKyAgbW9kdWxlLgorCistIElzc3VlICMxMDAyNzogc3Rfbmxpbmsgd2FzIG5vdCBiZWluZyBzZXQgb24gV2luZG93cyBjYWxscyB0byBvcy5zdGF0IG9yCisgIG9zLmxzdGF0LiBQYXRjaCBieSBIaXJva2F6dSBZYW1hbW90by4KKworLSBJc3N1ZSAjOTMzMzogRXhwb3NlIG9zLnN5bWxpbmsgb25seSB3aGVuIHRoZSBTZUNyZWF0ZVN5bWJvbGljTGlua1ByaXZpbGVnZSBpcworICBoZWxkIGJ5IHRoZSB1c2VyJ3MgYWNjb3VudCwgaS5lLiwgd2hlbiB0aGUgZnVuY3Rpb24gY2FuIGFjdHVhbGx5IGJlIHVzZWQuCisKKy0gSXNzdWUgIzg4Nzk6IEFkZCBvcy5saW5rIHN1cHBvcnQgZm9yIFdpbmRvd3MuCisKKy0gSXNzdWUgIzc5MTE6IGBgdW5pdHRlc3QuVGVzdENhc2UubG9uZ01lc3NhZ2VgYCBkZWZhdWx0cyB0byBUcnVlIGZvciBpbXByb3ZlZAorICBmYWlsdXJlIG1lc3NhZ2VzIGJ5IGRlZmF1bHQuIFBhdGNoIGJ5IE1hcmsgUm9kZHkuCisKKy0gSXNzdWUgIzE0ODY3MTM6IEhUTUxQYXJzZXIgbm93IGhhcyBhbiBvcHRpb25hbCB0b2xlcmFudCBtb2RlIHdoZXJlIGl0IHRyaWVzIHRvCisgIGd1ZXNzIGF0IHRoZSBjb3JyZWN0IHBhcnNpbmcgb2YgaW52YWxpZCBodG1sLgorCistIElzc3VlICMxMDU1NDogQWRkIGNvbnRleHQgbWFuYWdlciBzdXBwb3J0IHRvIHN1YnByb2Nlc3MuUG9wZW4gb2JqZWN0cy4KKworLSBJc3N1ZSAjODk4OTogZW1haWwudXRpbHMubWFrZV9tc2dpZCBub3cgaGFzIGEgZG9tYWluIHBhcmFtZXRlciB0aGF0IGNhbgorICBvdmVycmlkZSB0aGUgZG9tYWluIG5hbWUgdXNlZCBpbiB0aGUgZ2VuZXJhdGVkIG1zZ2lkLgorCistIElzc3VlICM5Mjk5OiBBZGQgZXhpc3Rfb2sgcGFyYW1ldGVyIHRvIG9zLm1ha2VkaXJzIHRvIHN1cHByZXNzIHRoZSAnRmlsZQorICBleGlzdHMnIGV4Y2VwdGlvbiB3aGVuIGEgdGFyZ2V0IGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cyB3aXRoIHRoZSBzcGVjaWZpZWQKKyAgbW9kZS4gUGF0Y2ggYnkgUmF5IEFsbGVuLgorCistIElzc3VlICM5NTczOiBvcy5mb3JrKCkgbm93IHdvcmtzIGNvcnJlY3RseSB3aGVuIHRyaWdnZXJlZCBhcyBhIHNpZGUgZWZmZWN0IG9mCisgIGEgbW9kdWxlIGltcG9ydC4KKworLSBJc3N1ZSAjMTA0NjQ6IG5ldHJjIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBsaW5lcyB3aXRoIGVtYmVkZGVkICcjJyBjaGFyYWN0ZXJzLgorCistIEFkZGVkIGl0ZXJ0b29scy5hY2N1bXVsYXRlKCkuCisKKy0gSXNzdWUgIzQxMTM6IEFkZGVkIGN1c3RvbSBgYF9fcmVwcl9fYGAgbWV0aG9kIHRvIGBgZnVuY3Rvb2xzLnBhcnRpYWxgYC4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgRGFuaWVsIFVyYmFuLgorCistIElzc3VlICMxMDI3MzogUmVuYW1lIGBhc3NlcnRSZWdleHBNYXRjaGVzYCBhbmQgYGFzc2VydFJhaXNlc1JlZ2V4cGAgdG8KKyAgYGFzc2VydFJlZ2V4YCBhbmQgYGFzc2VydFJhaXNlc1JlZ2V4YC4KKworLSBJc3N1ZSAjMTA1MzU6IEVuYWJsZSBzaWxlbmNlZCB3YXJuaW5ncyBpbiB1bml0dGVzdCBieSBkZWZhdWx0LgorCistIElzc3VlICM5ODczOiBUaGUgVVJMIHBhcnNpbmcgZnVuY3Rpb25zIGluIHVybGxpYi5wYXJzZSBub3cgYWNjZXB0IEFTQ0lJIGJ5dGUKKyAgc2VxdWVuY2VzIGFzIGlucHV0IGluIGFkZGl0aW9uIHRvIGNoYXJhY3RlciBzdHJpbmdzLgorCistIElzc3VlICMxMDU4NjogVGhlIHN0YXRpc3RpY3MgQVBJIGZvciB0aGUgbmV3IGZ1bmN0b29scy5scnVfY2FjaGUgaGFzIGJlZW4KKyAgY2hhbmdlZCB0byBhIHNpbmdsZSBjYWNoZV9pbmZvKCkgbWV0aG9kIHJldHVybmluZyBhIG5hbWVkIHR1cGxlLgorCistIElzc3VlICMxMDMyMzogaXRlcnRvb2xzLmlzbGljZSgpIG5vdyBjb25zdW1lcyB0aGUgbWluaW11bSBudW1iZXIgb2YgaW5wdXRzCisgIGJlZm9yZSBzdG9wcGluZy4gIEZvcm1lcmx5LCB0aGUgZmluYWwgc3RhdGUgb2YgdGhlIHVuZGVybHlpbmcgaXRlcmF0b3Igd2FzCisgIHVuZGVmaW5lZC4KKworLSBJc3N1ZSAjMTA1NjU6IFRoZSBjb2xsZWN0aW9ucy5JdGVyYXRvciBBQkMgbm93IGNoZWNrcyBmb3IgYm90aCBfX2l0ZXJfXyBhbmQKKyAgX19uZXh0X18uCisKKy0gSXNzdWUgIzEwMjQyOiBGaXhlZCBpbXBsZW1lbnRhdGlvbiBvZiB1bml0dGVzdC5JdGVtc0VxdWFsIGFuZCBnYXZlIGl0IGEgbmV3CisgIG1vcmUgaW5mb3JtYXRpdmUgbmFtZSwgdW5pdHRlc3QuQ291bnRFcXVhbC4KKworLSBJc3N1ZSAjMTA1NjE6IEluIHBkYiwgY2xlYXIgdGhlIGJyZWFrcG9pbnRzIGJ5IHRoZSBicmVha3BvaW50IG51bWJlci4KKworLSBJc3N1ZSAjMjk4NjogZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIgZ2V0cyBhIG5ldyBwYXJhbWV0ZXIsIGF1dG9qdW5rLCB3aGljaCBjYW4KKyAgYmUgc2V0IHRvIEZhbHNlIHRvIHR1cm4gb2ZmIHRoZSBwcmV2aW91c2x5IHVuZG9jdW1lbnRlZCAncG9wdWxhcml0eScKKyAgaGV1cmlzdGljLiBQYXRjaCBieSBUZXJyeSBSZWVkeSBhbmQgRWxpIEJlbmRlcnNreS4KKworLSBJc3N1ZSAjMTA1MzQ6IGluIGRpZmZsaWIsIGV4cG9zZSBianVuayBhbmQgYnBvcHVsYXIgc2V0czsgZGVwcmVjYXRlCisgIHVuZG9jdW1lbnRlZCBhbmQgbm93IHJlZHVuZGFudCBpc2JqdW5rIGFuZCBpc2Jwb3B1bGFyIG1ldGhvZHMuCisKKy0gSXNzdWUgIzk4NDY6IHppcGZpbGUgaXMgbm93IGNvcnJlY3RseSBjbG9zaW5nIHVuZGVybHlpbmcgZmlsZSBvYmplY3RzLgorCistIElzc3VlICMxMDQ1OTogVXBkYXRlIENKSyBjaGFyYWN0ZXIgbmFtZXMgdG8gVW5pY29kZSA2LjAuCisKKy0gSXNzdWUgIzQ0OTM6IHVybGxpYi5yZXF1ZXN0IGFkZHMgJy8nIGluIGZyb250IG9mIHBhdGggY29tcG9uZW50cyB3aGljaCBkb2VzIG5vdAorICBzdGFydCB3aXRoICcvLiBDb21tb24gYmVoYXZpb3IgZXhoaWJpdGVkIGJ5IGJyb3dzZXJzIGFuZCBvdGhlciBjbGllbnRzLgorCistIElzc3VlICM2Mzc4OiBpZGxlLmJhdCBub3cgcnVucyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBQeXRob24gdmVyc2lvbiByYXRoZXIgdGhhbgorICB0aGUgc3lzdGVtIGRlZmF1bHQuIFBhdGNoIGJ5IFNyaWRoYXIgUmF0bmFrdW1hci4KKworLSBJc3N1ZSAjMTA0NzA6ICdweXRob24gLW0gdW5pdHRlc3QnIHdpbGwgbm93IHJ1biB0ZXN0IGRpc2NvdmVyeSBieSBkZWZhdWx0LAorICB3aGVuIG5vIGV4dHJhIGFyZ3VtZW50cyBoYXZlIGJlZW4gcHJvdmlkZWQuCisKKy0gSXNzdWUgIzM3MDk6IEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIgd2lsbCBidWZmZXIgdGhlIGhlYWRlcnMgYW5kIHdyaXRlIHRvCisgIG91dHB1dCBzdHJlYW0gb25seSB3aGVuIGVuZF9oZWFkZXJzIGlzIGludm9rZWQuIFRoaXMgaXMgYSBzcGVlZHVwIGFuZCBhbgorICBpbnRlcm5hbCBvcHRpbWl6YXRpb24uICBQYXRjaCBieSBBbmRyZXcgU2hhYWYuCisKKy0gSXNzdWUgIzEwMjIwOiBBZGRlZCBpbnNwZWN0LmdldGdlbmVyYXRvcnN0YXRlLiBJbml0aWFsIHBhdGNoIGJ5IFJvZG9scGhvCisgIEVja2hhcmR0LgorCistIElzc3VlICMxMDQ1MzogY29tcGlsZWFsbCBub3cgdXNlcyBhcmdwYXJzZSBpbnN0ZWFkIG9mIGdldG9wdCwgYW5kIHRodXMKKyAgcHJvdmlkZXMgY2xlYW4gb3V0cHV0IHdoZW4gY2FsbGVkIHdpdGggJy1oJy4KKworLSBJc3N1ZSAjODA3ODogQWRkIGNvbnN0YW50cyBmb3IgaGlnaGVyIGJhdWQgcmF0ZXMgaW4gdGhlIHRlcm1pb3MgbW9kdWxlLiAgUGF0Y2gKKyAgYnkgUm9kb2xwaG8gRWNraGFyZHQuCisKKy0gSXNzdWUgIzEwNDA3OiBGaXggdHdvIE5hbWVFcnJvcnMgaW4gZGlzdHV0aWxzLgorCistIElzc3VlICMxMDM3MTogRGVwcmVjYXRlZCB1bmRvY3VtZW50ZWQgZnVuY3Rpb25zIGluIHRoZSB0cmFjZSBtb2R1bGUuCisKKy0gSXNzdWUgIzEwNDY3OiBGaXggQnl0ZXNJTy5yZWFkaW50bygpIGFmdGVyIHNlZWtpbmcgaW50byBhIHBvc2l0aW9uIGFmdGVyIHRoZQorICBlbmQgb2YgdGhlIGZpbGUuCisKKy0gY29uZmlncGFyc2VyOiAxMDAlIHRlc3QgY292ZXJhZ2UuCisKKy0gSXNzdWUgIzEwNDk5OiBjb25maWdwYXJzZXIgc3VwcG9ydHMgcGx1Z2dhYmxlIGludGVycG9sYXRpb24gaGFuZGxlcnMuIFRoZQorICBkZWZhdWx0IGNsYXNzaWMgaW50ZXJwb2xhdGlvbiBoYW5kbGVyIGlzIGNhbGxlZCBCYXNpY0ludGVycG9sYXRpb24uIEFub3RoZXIKKyAgaW50ZXJwb2xhdGlvbiBoYW5kbGVyIGFkZGVkIChFeHRlbmRlZEludGVycG9sYXRpb24pIHdoaWNoIHN1cHBvcnRzIHRoZSBzeW50YXgKKyAgdXNlZCBieSB6Yy5idWlsZG91dCAoZS5nLiBpbnRlcnBvbGF0aW9uIGJldHdlZW4gc2VjdGlvbnMpLgorCistIGNvbmZpZ3BhcnNlcjogdGhlIFNhZmVDb25maWdQYXJzZXIgY2xhc3MgaGFzIGJlZW4gcmVuYW1lZCB0byBDb25maWdQYXJzZXIuCisgIFRoZSBsZWdhY3kgQ29uZmlnUGFyc2VyIGNsYXNzIGhhcyBiZWVuIHJlbW92ZWQgYnV0IGl0cyBpbnRlcnBvbGF0aW9uIG1lY2hhbmlzbQorICBpcyBzdGlsbCBhdmFpbGFibGUgYXMgTGVnYWN5SW50ZXJwb2xhdGlvbi4KKworLSBjb25maWdwYXJzZXI6IFVzYWdlIG9mIFJhd0NvbmZpZ1BhcnNlciBpcyBub3cgZGlzY291cmFnZWQgZm9yIG5ldyBwcm9qZWN0cworICBpbiBmYXZvciBvZiBDb25maWdQYXJzZXIoaW50ZXJwb2xhdGlvbj1Ob25lKS4KKworLSBJc3N1ZSAjMTY4Mjk0MjogY29uZmlncGFyc2VyIHN1cHBvcnRzIGFsdGVybmF0aXZlIG9wdGlvbi92YWx1ZSBkZWxpbWl0ZXJzLgorCistIElzc3VlICM1NDEyOiBjb25maWdwYXJzZXIgc3VwcG9ydHMgbWFwcGluZyBwcm90b2NvbCBhY2Nlc3MuCisKKy0gSXNzdWUgIzk0MTE6IGNvbmZpZ3BhcnNlciBzdXBwb3J0cyBzcGVjaWZ5aW5nIGVuY29kaW5nIGZvciByZWFkIG9wZXJhdGlvbnMuCisKKy0gSXNzdWUgIzk0MjE6IGNvbmZpZ3BhcnNlcidzIGdldGludCgpLCBnZXRmbG9hdCgpIGFuZCBnZXRib29sZWFuKCkgbWV0aG9kcworICBhY2NlcHQgdmFycyBhbmQgZGVmYXVsdCBhcmd1bWVudHMganVzdCBsaWtlIGdldCgpIGRvZXMuCisKKy0gSXNzdWUgIzk0NTI6IGNvbmZpZ3BhcnNlciBzdXBwb3J0cyByZWFkaW5nIGZyb20gc3RyaW5ncyBhbmQgZGljdGlvbmFyaWVzCisgICh0aGFua3MgdG8gdGhlIG1hcHBpbmcgcHJvdG9jb2wgQVBJLCB0aGUgbGF0dGVyIGNhbiBiZSB1c2VkIHRvIGNvcHkgZGF0YQorICBiZXR3ZWVuIHBhcnNlcnMpLgorCistIGNvbmZpZ3BhcnNlcjogYWNjZXB0ZWQgSU5JIGZpbGUgc3RydWN0dXJlIGlzIG5vdyBjdXN0b21pemFibGUsIGluY2x1ZGluZworICBjb21tZW50IHByZWZpeGVzLCBuYW1lIG9mIHRoZSBERUZBVUxUIHNlY3Rpb24sIGVtcHR5IGxpbmVzIGluIG11bHRpbGluZQorICB2YWx1ZXMsIGFuZCBpbmRlbnRhdGlvbi4KKworLSBJc3N1ZSAjMTAzMjY6IHVuaXR0ZXN0LlRlc3RDYXNlIGluc3RhbmNlcyBjYW4gYmUgcGlja2xlZC4KKworLSBJc3N1ZSAjOTkyNjogV3JhcHBlZCBUZXN0U3VpdGUgc3ViY2xhc3MgZG9lcyBub3QgZ2V0IF9fY2FsbF9fIGV4ZWN1dGVkLgorCistIElzc3VlICM5OTIwOiBTa2lwIHRlc3RzIGZvciBjbWF0aC5hdGFuIGFuZCBjbWF0aC5hdGFuaCBhcHBsaWVkIHRvIGNvbXBsZXgKKyAgemVyb3Mgb24gc3lzdGVtcyB3aGVyZSB0aGUgbG9nMXAgZnVuY3Rpb24gZmFpbHMgdG8gcmVzcGVjdCB0aGUgc2lnbiBvZiB6ZXJvLgorICBUaGlzIGZpeGVzIGEgdGVzdCBmYWlsdXJlIG9uIEFJWC4KKworLSBJc3N1ZSAjOTczMjogQWRkaXRpb24gb2YgZ2V0YXR0cl9zdGF0aWMgdG8gdGhlIGluc3BlY3QgbW9kdWxlLgorCistIElzc3VlICMxMDQ0NjogTW9kdWxlIGRvY3VtZW50YXRpb24gZ2VuZXJhdGVkIGJ5IHB5ZG9jIG5vdyBsaW5rcyB0byBhCisgIHZlcnNpb24tc3BlY2lmaWMgb25saW5lIHJlZmVyZW5jZSBtYW51YWwuCisKKy0gTWFrZSB0aGUgJ05vIG1vZHVsZSBuYW1lZCcgZXhjZXB0aW9uIG1lc3NhZ2UgZnJvbSBpbXBvcnRsaWIgY29uc2lzdGVudC4KKworLSBJc3N1ZSAjMTA0NDM6IEFkZCB0aGUgU1NMQ29udGV4dC5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKSBtZXRob2QuCisKKy0gSXNzdWUgIzEwNDQwOiBTdXBwb3J0IFJVU0FHRV9USFJFQUQgYXMgYSBjb25zdGFudCBpbiB0aGUgcmVzb3VyY2UgbW9kdWxlLgorICBQYXRjaCBieSBSb2JlcnQgQ29sbGlucy4KKworLSBJc3N1ZSAjMTA0Mjk6IElNQVAuc3RhcnR0bHMoKSBzdG9yZWQgdGhlIGNhcGFiaWxpdGllcyBhcyBieXRlcyBvYmplY3RzLCByYXRoZXIKKyAgdGhhbiBzdHJpbmdzLgorCitDLUFQSQorLS0tLS0KKworLSBJc3N1ZSAjMTA1NTc6IEFkZGVkIGEgbmV3IEFQSSBmdW5jdGlvbiwgUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKCksCisgIHdoaWNoIHRyYW5zZm9ybXMgbm9uLUFTQ0lJIGRlY2ltYWwgZGlnaXRzIGluIGEgVW5pY29kZSBzdHJpbmcgdG8gdGhlaXIgQVNDSUkKKyAgZXF1aXZhbGVudHMuCisKKy0gSXNzdWUgIzk1MTg6IEV4dGVuZCB0aGUgUHlNb2R1bGVEZWZfSEVBRF9JTklUIG1hY3JvIHRvIGV4cGxpY2l0bHkKKyAgemVyby1pbml0aWFsaXplIGFsbCBmaWVsZHMsIGZpeGluZyBjb21waWxlciB3YXJuaW5ncyBzZWVuIHdoZW4gYnVpbGRpbmcKKyAgZXh0ZW5zaW9uIG1vZHVsZXMgd2l0aCBnY2Mgd2l0aCAiLVdtaXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyIgKGltcGxpZWQgYnkKKyAgIi1XIikuCisKKy0gSXNzdWUgIzEwMjU1OiBGaXggcmVmZXJlbmNlIGxlYWsgaW4gUHlfSW5pdGlhbGl6ZUV4KCkuICBQYXRjaCBieSBOZWlsCisgIFNjaGVtZW5hdWVyLgorCistIHN0cnVjdHNlcS5oIGlzIG5vdyBpbmNsdWRlZCBpbiBQeXRob24uaC4KKworLSBMb29zZW4gUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzIHRvIGFsbG93IGRpY3Qgc3ViY2xhc3Nlcy4KKworVGVzdHMKKy0tLS0tCisKKy0gcmVncnRlc3QucHkgb25jZSBhZ2FpbiBlbnN1cmVzIHRoZSB0ZXN0IGRpcmVjdG9yeSBpcyByZW1vdmVkIGZyb20gc3lzLnBhdGgKKyAgd2hlbiBpdCBpcyBpbnZva2VkIGRpcmVjdGx5IGFzIHRoZSBfX21haW5fXyBtb2R1bGUuCisKKy0gYHB5dGhvbiAtbSB0ZXN0YCBjYW4gYmUgdXNlZCB0byBydW4gdGhlIHRlc3Qgc3VpdGUgYXMgd2VsbCBhcyBgcHl0aG9uIC1tCisgIHRlc3QucmVncnRlc3RgLgorCistIERvIG5vdCBmYWlsIHRlc3Rfc29ja2V0IHdoZW4gdGhlIElQIGFkZHJlc3Mgb2YgdGhlIGxvY2FsIGhvc3RuYW1lIGNhbm5vdCBiZQorICBsb29rZWQgdXAuCisKKy0gSXNzdWUgIzg4ODY6IFVzZSBjb250ZXh0IG1hbmFnZXJzIHRocm91Z2hvdXQgdGVzdF96aXBmaWxlLiBQYXRjaCBieSBFcmljCisgIENhcnN0ZW5zZW4uCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxMDMyNTogRml4IHR3byBpc3N1ZXMgaW4gdGhlIGZhbGxiYWNrIGRlZmluaXRpb25zIGZvciBQWV9VTExPTkdfTUFYIGFuZAorICBQWV9MTE9OR19NQVggdGhhdCBtYWRlIHRoZW0gdW5zdWl0YWJsZSBmb3IgdXNlIGluIHByZXByb2Nlc3NvciBjb25kaXRpb25hbHMuCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTAyOTk6IExpc3QgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBpbiBhIHRhYmxlIGluIGZ1bmN0aW9ucy5yc3QuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIEFscGhhIDQ/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMTMtTm92LTIwMTAqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxMDM3MjogSW1wb3J0IHRoZSB3YXJuaW5ncyBtb2R1bGUgb25seSBhZnRlciB0aGUgSU8gbGlicmFyeSBpcworICBpbml0aWFsaXplZCwgc28gYXMgdG8gYXZvaWQgYm9vdHN0cmFwIGlzc3VlcyB3aXRoIHRoZSAnLVcnIG9wdGlvbi4KKworLSBJc3N1ZSAjMTAyOTM6IFJlbW92ZSBvYnNvbGV0ZSBmaWVsZCBpbiB0aGUgUHlNZW1vcnlWaWV3IHN0cnVjdHVyZSwgdW51c2VkCisgIHVuZG9jdW1lbnRlZCB2YWx1ZSBQeUJVRl9TSEFET1csIGFuZCBzdHJhbmdlbHktbG9va2luZyBjb2RlIGluCisgIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzLgorCistIElzc3VlICM2MDgxOiBBZGQgc3RyLmZvcm1hdF9tYXAoKSwgc2ltaWxhciB0byBgYHN0ci5mb3JtYXQoKiptYXBwaW5nKWBgLgorCistIElmIEZpbGVJTy5fX2luaXRfXyBmYWlscywgY2xvc2UgdGhlIGZpbGUgZGVzY3JpcHRvci4KKworLSBJc3N1ZSAjMTAyMjE6IGRpY3QucG9wKGspIG5vdyBoYXMgYSBrZXkgZXJyb3IgbWVzc2FnZSB0aGF0IGluY2x1ZGVzIHRoZQorICBtaXNzaW5nIGtleSAoc2FtZSBtZXNzYWdlIGRba10gcmV0dXJucyBmb3IgbWlzc2luZyBrZXlzKS4KKworLSBJc3N1ZSAjNTQzNzogQSBwcmVhbGxvY2F0ZWQgTWVtb3J5RXJyb3IgaW5zdGFuY2Ugc2hvdWxkIG5vdCBrZWVwIHRyYWNlYmFjaworICBkYXRhIChpbmNsdWRpbmcgbG9jYWwgdmFyaWFibGVzIGNhdWdodCBpbiB0aGUgc3RhY2sgdHJhY2UpIGFsaXZlIGluZmluaXRlbHkuCisKKy0gSXNzdWUgIzEwMTg2OiBGaXggdGhlIFN5bnRheEVycm9yIGNhcmV0IHdoZW4gdGhlIG9mZnNldCBpcyBlcXVhbCB0byB0aGUgbGVuZ3RoCisgIG9mIHRoZSBvZmZlbmRpbmcgbGluZS4KKworLSBJc3N1ZSAjMTAwODk6IEFkZCBzdXBwb3J0IGZvciBhcmJpdHJhcnkgLVggb3B0aW9ucyBvbiB0aGUgY29tbWFuZCBsaW5lLiAgVGhleQorICBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggYSBuZXcgYXR0cmlidXRlIGBgc3lzLl94b3B0aW9uc2BgLgorCistIElzc3VlICM0Mzg4OiBPbiBNYWMgT1MgWCwgZGVjb2RlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgZnJvbSBVVEYtOCwgaW5zdGVhZCBvZgorICB0aGUgbG9jYWxlIGVuY29kaW5nLiAgSWYgdGhlIExBTkcgKGFuZCBMQ19BTEwgYW5kIExDX0NUWVBFKSBlbnZpcm9ubWVudAorICB2YXJpYWJsZSBpcyBub3Qgc2V0LCB0aGUgbG9jYWxlIGVuY29kaW5nIGlzIElTTy04ODU5LTEsIHdoZXJlYXMgbW9zdCBwcm9ncmFtcworICAoaW5jbHVkaW5nIFB5dGhvbikgZXhwZWN0IFVURi04LiAgUHl0aG9uIGFscmVhZHkgdXNlcyBVVEYtOCBmb3IgdGhlIGZpbGVzeXN0ZW0KKyAgZW5jb2RpbmcgYW5kIHRvIGVuY29kZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIG9uIHRoaXMgT1MuCisKKy0gSXNzdWUgIzk3MTMsICMxMDExNDogUGFyc2VyIGZ1bmN0aW9ucyAoZS5nLiBQeVBhcnNlcl9BU1RGcm9tRmlsZSkgZXhwZWN0CisgIGZpbGVuYW1lcyBlbmNvZGVkIHRvIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIHdpdGggdGhlIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvcgorICBoYW5kbGVyICh0byBzdXBwb3J0IHVuZGVjb2RhYmxlIGJ5dGVzKSwgaW5zdGVhZCBvZiBVVEYtOCBpbiBzdHJpY3QgbW9kZS4KKworLSBJc3N1ZSAjOTk5NzogRG9uJ3QgbGV0IHRoZSBuYW1lICJ0b3AiIGhhdmUgc3BlY2lhbCBzaWduaWZpY2FuY2UgaW4gc2NvcGUKKyAgcmVzb2x1dGlvbi4KKworLSBJc3N1ZSAjOTg2MjogQ29tcGVuc2F0ZSBmb3IgYnJva2VuIFBJUEVfQlVGIGluIEFJWCBieSBoYXJkIGNvZGluZyBpdHMgdmFsdWUgYXMKKyAgdGhlIGRlZmF1bHQgNTEyIHdoZW4gY29tcGlsaW5nIG9uIEFJWC4KKworLSBVc2UgbG9jYWxlIGVuY29kaW5nIGluc3RlYWQgb2YgVVRGLTggdG8gZW5jb2RlIGFuZCBkZWNvZGUgZmlsZW5hbWVzIGlmCisgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgaXMgbm90IHNldC4KKworLSBJc3N1ZSAjMTAwOTU6IGZwX3NldHJlYWRsKCkgZG9lc24ndCByZW9wZW4gdGhlIGZpbGUsIGluc3RlYWQgcmV1c2UgdGhlIGZpbGUKKyAgZGVzY3JpcHRvci4KKworLSBJc3N1ZSAjOTQxODogTW92ZWQgcHJpdmF0ZSBzdHJpbmcgbWV0aG9kcyBgYF9mb3JtYXR0ZXJfcGFyc2VyYGAgYW5kCisgIGBgX2Zvcm1hdHRlcl9maWVsZF9uYW1lX3NwbGl0YGAgaW50byBhIG5ldyBgYF9zdHJpbmdgYCBtb2R1bGUuCisKKy0gSXNzdWUgIzk5OTI6IFJlbW92ZSBQWVRIT05GU0VOQ09ESU5HIGVudmlyb25tZW50IHZhcmlhYmxlLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzEyOTQzOiBweXRob24gLW0gdG9rZW5pemUgc3VwcG9ydCBoYXMgYmVlbiBhZGRlZCB0byB0b2tlbml6ZS4KKworLSBJc3N1ZSAjMTA0NjU6IGZpeCBicm9rZW4gZGVsZWdhdGluZyBvZiBhdHRyaWJ1dGVzIGJ5IGd6aXAuX1BhZGRlZEZpbGUuCisKKy0gSXNzdWUgIzEwMzU2OiBEZWNpbWFsLl9faGFzaF9fKC0xKSBzaG91bGQgcmV0dXJuIC0yLgorCistIElzc3VlICMxNTUzMzc1OiBsb2dnaW5nOiBBZGRlZCBzdGFja19pbmZvIGt3YXJnIHRvIGRpc3BsYXkgc3RhY2sgaW5mb3JtYXRpb24uCisKKy0gSXNzdWUgIzUxMTE6IElQdjYgSG9zdCBpbiB0aGUgSGVhZGVyIGlzIHdyYXBwZWQgaW5zaWRlIFsgXS4gUGF0Y2ggYnkgQ2hhbmRydS4KKworLSBGaXggRnJhY3Rpb24uX19oYXNoX18gc28gdGhhdCBGcmFjdGlvbi5fX2hhc2hfXygtMSkgaXMgLTIuICAoU2VlIGFsc28gaXNzdWUKKyAgIzEwMzU2LikKKworLSBJc3N1ZSAjNDQ3MTogQWRkIHRoZSBJTUFQLnN0YXJ0dGxzKCkgbWV0aG9kIHRvIGVuYWJsZSBlbmNyeXB0aW9uIG9uIHN0YW5kYXJkCisgIElNQVA0IGNvbm5lY3Rpb25zLiAgT3JpZ2luYWwgcGF0Y2ggYnkgTG9yZW56byBNLiBDYXR1Y2NpLgorCistIElzc3VlICMxNDY2MDY1OiBBZGQgJ3ZhbGlkYXRlJyBvcHRpb24gdG8gYmFzZTY0LmI2NGRlY29kZSB0byByYWlzZSBhbiBlcnJvciBpZgorICB0aGVyZSBhcmUgbm9uLWJhc2U2NCBhbHBoYWJldCBjaGFyYWN0ZXJzIGluIHRoZSBpbnB1dC4KKworLSBJc3N1ZSAjMTAzODY6IEFkZCBfX2FsbF9fIHRvIHRva2VuIG1vZHVsZTsgdGhpcyBzaW1wbGlmaWVzIGltcG9ydGluZyBpbgorICB0b2tlbml6ZSBtb2R1bGUgYW5kIHByZXZlbnRzIGxlYWtpbmcgb2YgcHJpdmF0ZSBuYW1lcyB0aHJvdWdoIGBgaW1wb3J0ICpgYC4KKworLSBJc3N1ZSAjNDQ3MTogUHJvcGVybHkgc2h1dGRvd24gc29ja2V0IGluIElNQVAuc2h1dGRvd24oKS4gIFBhdGNoIGJ5IExvcmVuem8KKyAgTS4gQ2F0dWNjaS4KKworLSBGaXggSU1BUC5sb2dpbigpIHRvIHdvcmsgcHJvcGVybHkuCisKKy0gSXNzdWUgIzkyNDQ6IG11bHRpcHJvY2Vzc2luZyBwb29sIHdvcmtlciBwcm9jZXNzZXMgY291bGQgdGVybWluYXRlCisgIHVuZXhwZWN0ZWRseSBpZiB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgdGFzayBjb3VsZCBub3QgYmUgcGlja2xlZC4gIE9ubHkgdGhlCisgIGBgcmVwcmBgIG9mIHN1Y2ggZXJyb3JzIGFyZSBub3cgc2VudCBiYWNrLCB3cmFwcGVkIGluIGFuCisgIGBgTWF5YmVFbmNvZGluZ0Vycm9yYGAgZXhjZXB0aW9uLgorCistIElzc3VlICM5MjQ0OiBUaGUgYGBhcHBseV9hc3luYygpYGAgYW5kIGBgbWFwX2FzeW5jKClgYCBtZXRob2RzIG9mCisgIGBgbXVsdGlwcm9jZXNzaW5nLlBvb2xgYCBub3cgYWNjZXB0cyBhIGBgZXJyb3JfY2FsbGJhY2tgYCBhcmd1bWVudC4gIFRoaXMgY2FuCisgIGJlIGEgY2FsbGJhY2sgd2l0aCB0aGUgc2lnbmF0dXJlIGBgY2FsbGJhY2soZXhjKWBgLCB3aGljaCB3aWxsIGJlIGNhbGxlZCBpZgorICB0aGUgdGFyZ2V0IHJhaXNlcyBhbiBleGNlcHRpb24uCisKKy0gSXNzdWUgIzEwMDIyOiBUaGUgZGljdGlvbmFyeSByZXR1cm5lZCBieSB0aGUgYGBnZXRwZWVyY2VydCgpYGAgbWV0aG9kIG9mIFNTTAorICBzb2NrZXRzIG5vdyBoYXMgYWRkaXRpb25hbCBpdGVtcyBzdWNoIGFzIGBgaXNzdWVyYGAgYW5kIGBgbm90QmVmb3JlYGAuCisKKy0gYGB1c2VuZXRyY2BgIGlzIG5vdyBmYWxzZSBieSBkZWZhdWx0IGZvciBOTlRQIG9iamVjdHMuCisKKy0gSXNzdWUgIzE5MjY6IEFkZCBzdXBwb3J0IGZvciBOTlRQIG92ZXIgU1NMIG9uIHBvcnQgNTYzLCBhcyB3ZWxsIGFzIFNUQVJUVExTLgorICBQYXRjaCBieSBBbmRyZXcgVmFudC4KKworLSBJc3N1ZSAjMTAzMzU6IEFkZCB0b2tlbml6ZS5vcGVuKCksIGRldGVjdCB0aGUgZmlsZSBlbmNvZGluZyB1c2luZworICB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmcoKSBhbmQgb3BlbiBpdCBpbiByZWFkIG9ubHkgbW9kZS4KKworLSBJc3N1ZSAjMTAzMjE6IEFkZCBzdXBwb3J0IGZvciBiaW5hcnkgZGF0YSB0byBzbXRwbGliLlNNVFAuc2VuZG1haWwsIGFuZCBhIG5ldworICBtZXRob2Qgc2VuZF9tZXNzYWdlIHRvIHNlbmQgYW4gZW1haWwubWVzc2FnZS5NZXNzYWdlIG9iamVjdC4KKworLSBJc3N1ZSAjNjAxMTogc3lzY29uZmlnIGFuZCBkaXN0dXRpbHMuc3lzY29uZmlnIHVzZSB0aGUgc3Vycm9nYXRlZXNjYXBlIGVycm9yCisgIGhhbmRsZXIgdG8gcGFyc2UgdGhlIE1ha2VmaWxlIGZpbGUuICBBdm9pZCBhIFVuaWNvZGVEZWNvZGVFcnJvciBpZiB0aGUgc291cmNlCisgIGNvZGUgZGlyZWN0b3J5IG5hbWUgY29udGFpbnMgYSBub24tQVNDSUkgY2hhcmFjdGVyIGFuZCB0aGUgbG9jYWxlIGVuY29kaW5nIGlzCisgIEFTQ0lJLgorCistIElzc3VlICMxMDMyOTogVGhlIHRyYWNlIG1vZHVsZSB3cml0ZXMgcmVwb3J0cyB1c2luZyB0aGUgaW5wdXQgUHl0aG9uIHNjcmlwdAorICBlbmNvZGluZywgaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nLiAgUGF0Y2ggd3JpdHRlbiBieSBBbGV4YW5kZXIKKyAgQmVsb3BvbHNreS4KKworLSBJc3N1ZSAjMTAxMjY6IEZpeCBkaXN0dXRpbHMnIHRlc3RfYnVpbGQgd2hlbiBQeXRob24gd2FzIGJ1aWx0IHdpdGgKKyAgLS1lbmFibGUtc2hhcmVkLgorCistIElzc3VlICM5MjgxOiBQcmV2ZW50IHJhY2UgY29uZGl0aW9uIHdpdGggbWtkaXIgaW4gZGlzdHV0aWxzLiAgUGF0Y2ggYnkKKyAgQXJmcmV2ZXIuCisKKy0gSXNzdWUgIzEwMjI5OiBGaXggY2FjaGluZyBlcnJvciBpbiBnZXR0ZXh0LgorCistIElzc3VlICMxMDI1MjogQ2xvc2UgZmlsZSBvYmplY3RzIGluIGEgdGltZWx5IG1hbm5lciBpbiBkaXN0dXRpbHMgY29kZSBhbmQKKyAgdGVzdHMuICBQYXRjaCBieSBCcmlhbiBCcmF6aWwsIGNvbXBsZXRlZCBieSDDiXJpYyBBcmF1am8uCisKKy0gSXNzdWUgIzEwMTgwOiBQaWNrbGluZyBmaWxlIG9iamVjdHMgaXMgbm93IGV4cGxpY2l0bHkgZm9yYmlkZGVuLCBzaW5jZQorICB1bnBpY2tsaW5nIHRoZW0gcHJvZHVjZWQgbm9uc2Vuc2ljYWwgcmVzdWx0cy4KKworLSBJc3N1ZSAjMTAzMTE6IFRoZSBzaWduYWwgbW9kdWxlIG5vdyByZXN0b3JlcyBlcnJubyBiZWZvcmUgcmV0dXJuaW5nIGZyb20gaXRzCisgIGxvdy1sZXZlbCBzaWduYWwgaGFuZGxlci4gIFBhdGNoIGJ5IEhhbGx2YXJkIEIgRnVydXNldGguCisKKy0gSXNzdWUgIzEwMjgyOiBBZGQgYSBgYG5udHBfaW1wbGVtZW50YXRpb25gYCBhdHRyaWJ1dGUgdG8gTk5UUCBvYmplY3RzLgorCistIElzc3VlICMxMDI4MzogQWRkIGEgYGBncm91cF9wYXR0ZXJuYGAgYXJndW1lbnQgdG8gTk5UUC5saXN0KCkuCisKKy0gSXNzdWUgIzEwMTU1OiBBZGQgSUlTQ0dJSGFuZGxlciB0byB3c2dpcmVmLmhhbmRsZXJzIHRvIHN1cHBvcnQgSUlTIENHSQorICBlbnZpcm9ubWVudCBiZXR0ZXIsIGFuZCB0byBjb3JyZWN0IHVuaWNvZGUgZW52aXJvbm1lbnQgdmFsdWVzIGZvciBXU0dJIDEuMC4xLgorCistIElzc3VlICMxMDI4MTogbm50cGxpYiBub3cgcmV0dXJucyBOb25lIGZvciBhYnNlbnQgZmllbGRzIGluIHRoZSBPVkVSL1hPVkVSCisgIHJlc3BvbnNlLCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXhjZXB0aW9uLgorCistIHdzZ2lyZWYgbm93IGltcGxlbWVudHMgYW5kIHZhbGlkYXRlcyBQRVAgMzMzMywgcmF0aGVyIHRoYW4gYW4gZXhwZXJpbWVudGFsCisgIGV4dGVuc2lvbiBvZiBQRVAgMzMzLiAgKE5vdGU6IGVhcmxpZXIgdmVyc2lvbnMgb2YgUHl0aG9uIDMueCBtYXkgaGF2ZQorICBpbmNvcnJlY3RseSB2YWxpZGF0ZWQgc29tZSBub24tY29tcGxpYW50IGFwcGxpY2F0aW9ucyBhcyBXU0dJIGNvbXBsaWFudDsgaWYKKyAgeW91ciBhcHAgdmFsaWRhdGVzIHdpdGggUHl0aG9uIDwzLjJiMSssIGJ1dCBub3Qgb24gdGhpcyB2ZXJzaW9uLCBpdCBpcyBsaWtlbHkKKyAgdGhlIGNhc2UgdGhhdCB5b3VyIGFwcCB3YXMgbm90IGNvbXBsaWFudC4pCisKKy0gSXNzdWUgIzEwMjgwOiBOTlRQLm5udHBfdmVyc2lvbiBzaG91bGQgcmVmbGVjdCB0aGUgaGlnaGVzdCB2ZXJzaW9uIGFkdmVydGlzZWQKKyAgYnkgdGhlIHNlcnZlci4KKworLSBJc3N1ZSAjMTAxODQ6IFRvdWNoIGRpcmVjdG9yaWVzIG9ubHkgb25jZSB3aGVuIGV4dHJhY3RpbmcgYSB0YXJmaWxlLgorCistIElzc3VlICMxMDE5OTogTmV3IHBhY2thZ2UsIGBgdHVydGxlZGVtb2BgIG5vdyBjb250YWlucyBzZWxlY3RlZCBkZW1vIHNjcmlwdHMKKyAgdGhhdCB3ZXJlIGZvcm1lcmx5IGZvdW5kIHVuZGVyIERlbW8vdHVydGxlLgorCistIElzc3VlICMxMDI2NTogQ2xvc2UgZmlsZSBvYmplY3RzIGV4cGxpY2l0bHkgaW4gc3VuYXUuICBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCisKKy0gSXNzdWUgIzEwMjY2OiB1dS5kZWNvZGUgZGlkbid0IGNsb3NlIGluX2ZpbGUgZXhwbGljaXRseSB3aGVuIGl0IHdhcyBnaXZlbiBhcyBhCisgIGZpbGVuYW1lLiAgUGF0Y2ggYnkgQnJpYW4gQnJhemlsLgorCistIElzc3VlICMxMDExMDogUXVldWUgb2JqZWN0cyBkaWRuJ3QgcmVjb2duaXplIGZ1bGwgcXVldWVzIHdoZW4gdGhlIG1heHNpemUKKyAgcGFyYW1ldGVyIGhhZCBiZWVuIHJlZHVjZWQuCisKKy0gSXNzdWUgIzEwMTYwOiBTcGVlZCB1cCBvcGVyYXRvci5hdHRyZ2V0dGVyLiAgUGF0Y2ggYnkgQ2hyaXN0b3MgR2Vvcmdpb3UuCisKKy0gbG9nZ2luZzogQWRkZWQgc3R5bGUgb3B0aW9uIHRvIGJhc2ljQ29uZmlnKCkgdG8gYWxsb3cgJSwge30gb3IgJC1mb3JtYXR0aW5nLgorCistIElzc3VlICM1NzI5OiBqc29uLmR1bXBzKCkgbm93IHN1cHBvcnRzIHVzaW5nIGEgc3RyaW5nIHN1Y2ggYXMgJ1x0JyBmb3IKKyAgcHJldHR5LXByaW50aW5nIG11bHRpbGV2ZWwgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTAyNTM6IEZpbGVJTyBsZWFrcyBhIGZpbGUgZGVzY3JpcHRvciB3aGVuIHRyeWluZyB0byBvcGVuIGEgZmlsZSBmb3IKKyAgYXBwZW5kIHRoYXQgaXNuJ3Qgc2Vla2FibGUuICBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCisKKy0gU3VwcG9ydCBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgZm9yIGZpbGUtbGlrZSBvYmplY3RzIHJldHVybmVkIGJ5IG1haWxib3gKKyAgYGBnZXRfZmlsZSgpYGAgbWV0aG9kcy4KKworLSBJc3N1ZSAjMTAyNDY6IHV1LmVuY29kZSBkaWRuJ3QgY2xvc2UgZmlsZSBvYmplY3RzIGV4cGxpY2l0bHkgd2hlbiBmaWxlbmFtZXMKKyAgd2VyZSBnaXZlbiB0byBpdC4gIFBhdGNoIGJ5IEJyaWFuIEJyYXppbC4KKworLSBJc3N1ZSAjMTAxOTg6IGZpeCBkdXBsaWNhdGUgaGVhZGVyIHdyaXR0ZW4gdG8gd2F2ZSBmaWxlcyB3aGVuIHdyaXRlZnJhbWVzKCkgaXMKKyAgY2FsbGVkIHdpdGhvdXQgZGF0YS4KKworLSBDbG9zZSBmaWxlIG9iamVjdHMgaW4gbW9kdWxlZmluZGVyIGluIGEgdGltZWx5IG1hbm5lci4KKworLSBDbG9zZSBhIGlvLlRleHRJT1dyYXBwZXIgb2JqZWN0IGluIGVtYWlsLnBhcnNlciBpbiBhIHRpbWVseSBtYW5uZXIuCisKKy0gQ2xvc2UgYSBmaWxlIG9iamVjdCBpbiBkaXN0dXRpbHMuc3lzY29uZmlnIGluIGEgdGltZWx5IG1hbm5lci4KKworLSBDbG9zZSBhIGZpbGUgb2JqZWN0IGluIHBrZ3V0aWwgaW4gYSB0aW1lbHkgbWFubmVyLgorCistIElzc3VlICMxMDIzMzogQ2xvc2UgZmlsZSBvYmplY3RzIGluIGEgdGltZWx5IG1hbm5lciBpbiB0aGUgdGFyZmlsZSBtb2R1bGUgYW5kCisgIGl0cyB0ZXN0IHN1aXRlLgorCistIElzc3VlICMxMDA5MzogUmVzb3VyY2VXYXJuaW5ncyBhcmUgbm93IGlzc3VlZCB3aGVuIGZpbGVzIGFuZCBzb2NrZXRzIGFyZQorICBkZWFsbG9jYXRlZCB3aXRob3V0IGV4cGxpY2l0IGNsb3NpbmcuICBUaGVzZSB3YXJuaW5ncyBhcmUgc2lsZW5jZWQgYnkgZGVmYXVsdCwKKyAgZXhjZXB0IGluIHB5ZGVidWcgbW9kZS4KKworLSB0YXJmaWxlLnB5OiBBZGQgc3VwcG9ydCBmb3IgYWxsIG1pc3NpbmcgdmFyaWFudHMgb2YgdGhlIEdOVSBzcGFyc2UgZXh0ZW5zaW9ucworICBhbmQgY3JlYXRlIGZpbGVzIHdpdGggaG9sZXMgd2hlbiBleHRyYWN0aW5nIHNwYXJzZSBtZW1iZXJzLgorCistIElzc3VlICMxMDIxODogUmV0dXJuIHRpbWVvdXQgc3RhdHVzIGZyb20gYGBDb25kaXRpb24ud2FpdGBgIGluIHRocmVhZGluZy4KKworLSBJc3N1ZSAjNzM1MTogQWRkIGBgemlwZmlsZS5CYWRaaXBGaWxlYGAgc3BlbGxpbmcgb2YgdGhlIGV4Y2VwdGlvbiBuYW1lIGFuZAorICBkZXByZWNhdGUgdGhlIG9sZCBuYW1lIGBgemlwZmlsZS5CYWRaaXBmaWxlYGAuCisKKy0gSXNzdWUgIzUwMjc6IFRoZSBzdGFuZGFyZCBgYHhtbGBgIG5hbWVzcGFjZSBpcyBub3cgdW5kZXJzdG9vZCBieQorICB4bWwuc2F4LnNheHV0aWxzLlhNTEdlbmVyYXRvciBhcyBiZWluZyBib3VuZCB0bworICBodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UuICBQYXRjaCBieSBUcm95IEouIEZhcnJlbGwuCisKKy0gSXNzdWUgIzU5NzU6IEFkZCBjc3YudW5peF9kaWFsZWN0IGNsYXNzLgorCistIElzc3VlICM3NzYxOiB0ZWxuZXRsaWIuaW50ZXJhY3QgZmFpbHVyZXMgb24gV2luZG93cyBmaXhlZC4KKworLSBsb2dnaW5nOiBBZGRlZCBzdHlsZSBvcHRpb24gdG8gRm9ybWF0dGVyIHRvIGFsbG93ICUsIHt9IG9yICQtZm9ybWF0dGluZy4KKworLSBJc3N1ZSAjNTE3ODogQWRkZWQgdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5IGNsYXNzIHRoYXQgY2FuIGJlIHVzZWQgYXMgYQorICBjb250ZXh0IG1hbmFnZXIuCisKKy0gSXNzdWUgIzEzNDkxMDY6IEdlbmVyYXRvciAoYW5kIEJ5dGVzR2VuZXJhdG9yKSBmbGF0dGVuIG1ldGhvZCBhbmQgSGVhZGVyCisgIGVuY29kZSBtZXRob2Qgbm93IHN1cHBvcnQgYSAnbGluZXNlcCcgYXJndW1lbnQuCisKKy0gSXNzdWUgIzU2Mzk6IEFkZCBhICpzZXJ2ZXJfaG9zdG5hbWUqIGFyZ3VtZW50IHRvIGBgU1NMQ29udGV4dC53cmFwX3NvY2tldGBgIGluCisgIG9yZGVyIHRvIHN1cHBvcnQgdGhlIFRMUyBTTkkgZXh0ZW5zaW9uLiAgYGBIVFRQU0Nvbm5lY3Rpb25gYCBhbmQgYGB1cmxvcGVuKClgYAorICBhbHNvIHVzZSB0aGlzIGFyZ3VtZW50LCBzbyB0aGF0IEhUVFBTIHZpcnR1YWwgaG9zdHMgYXJlIG5vdyBzdXBwb3J0ZWQuCisKKy0gSXNzdWUgIzEwMTY2OiBBdm9pZCByZWN1cnNpb24gaW4gcHN0YXRzIFN0YXRzLmFkZCgpIGZvciBtYW55IHN0YXRzIGl0ZW1zLgorCistIElzc3VlICMxMDE2MzogU2tpcCB1bnJlYWRhYmxlIHJlZ2lzdHJ5IGtleXMgZHVyaW5nIG1pbWV0eXBlcyBpbml0aWFsaXphdGlvbi4KKworLSBsb2dnaW5nOiBNYWRlIFN0cmVhbUhhbmRsZXIgdGVybWluYXRvciBjb25maWd1cmFibGUuCisKKy0gbG9nZ2luZzogQWxsb3dlZCBmaWx0ZXJzIHRvIGJlIGp1c3QgY2FsbGFibGVzLgorCistIGxvZ2dpbmc6IEFkZGVkIHRlc3RzIGZvciBfbG9nUmVjb3JkQ2xhc3MgY2hhbmdlcy4KKworLSBJc3N1ZSAjMTAwOTI6IFByb3Blcmx5IHJlc2V0IGxvY2FsZSBpbiBjYWxlbmRhci5Mb2NhbGUqQ2FsZW5kYXIgY2xhc3Nlcy4KKworLSBsb2dnaW5nOiBBZGRlZCBfbG9nUmVjb3JkQ2xhc3MsIGdldExvZ1JlY29yZENsYXNzLCBzZXRMb2dSZWNvcmRDbGFzcyB0bworICBpbmNyZWFzZSBmbGV4aWJpbGl0eSBvZiBMb2dSZWNvcmQgY3JlYXRpb24uCisKKy0gSXNzdWUgIzUxMTc6IENhc2Ugbm9ybWFsaXphdGlvbiB3YXMgbmVlZGVkIG9uIG50cGF0aC5yZWxwYXRoKCkuICBBbHNvIGZpeGVkCisgIHJvb3QgZGlyZWN0b3J5IGlzc3VlIG9uIHBvc2l4cGF0aC5yZWxwYXRoKCkuICAoUG9ydGVkIHdvcmtpbmcgZml4ZXMgZnJvbQorICBudHBhdGguKQorCistIElzc3VlICMxMzQzOiB4bWwuc2F4LnNheHV0aWxzLlhNTEdlbmVyYXRvciBub3cgaGFzIGFuIG9wdGlvbgorICBzaG9ydF9lbXB0eV9lbGVtZW50cyB0byBkaXJlY3QgaXQgdG8gdXNlIHNlbGYtY2xvc2luZyB0YWdzIHdoZW4gYXBwcm9wcmlhdGUuCisKKy0gSXNzdWUgIzk4MDcgKHBhcnQgMSk6IEV4cG9zZSB0aGUgQUJJIGZsYWdzIGluIHN5cy5hYmlmbGFncy4gIEFkZCAtLWFiaWZsYWdzCisgIHN3aXRjaCB0byBweXRob24tY29uZmlnIGZvciBjb21tYW5kIGxpbmUgYWNjZXNzLgorCistIElzc3VlICM2MDk4OiBEb24ndCBjbGFpbSBET00gbGV2ZWwgMyBjb25mb3JtYW5jZSBpbiBtaW5pZG9tLgorCistIElzc3VlICM1NzYyOiBGaXggQXR0cmlidXRlRXJyb3IgcmFpc2VkIGJ5IGBgeG1sLmRvbS5taW5pZG9tYGAgd2hlbiBhbiBlbXB0eQorICBYTUwgbmFtZXNwYWNlIGF0dHJpYnV0ZSBpcyBlbmNvdW50ZXJlZC4KKworLSBJc3N1ZSAjMjgzMDogQWRkIHRoZSBgYGh0bWwuZXNjYXBlKClgYCBmdW5jdGlvbiwgd2hpY2ggcXVvdGVzIGFsbCBwcm9ibGVtYXRpYworICBjaGFyYWN0ZXJzIGJ5IGRlZmF1bHQuICBEZXByZWNhdGUgYGBjZ2kuZXNjYXBlKClgYC4KKworLSBJc3N1ZSAjOTQwOTogRml4IHRoZSByZWdleCB0byBtYXRjaCBhbGwga2luZCBvZiBmaWxlbmFtZXMsIGZvciBpbnRlcmFjdGl2ZQorICBkZWJ1Z2dpbmcgaW4gZG9jdGVzdHMuCisKKy0gSXNzdWUgIzkxODM6IGBgZGF0ZXRpbWUudGltZXpvbmUoZGF0ZXRpbWUudGltZWRlbHRhKDApKWBgIHdpbGwgbm93IHJldHVybiB0aGUKKyAgc2FtZSBpbnN0YW5jZSBhcyBgYGRhdGV0aW1lLnRpbWV6b25lLnV0Y2BgLgorCistIElzc3VlICM3NTIzOiBBZGQgU09DS19DTE9FWEVDIGFuZCBTT0NLX05PTkJMT0NLIHRvIHRoZSBzb2NrZXQgbW9kdWxlLCB3aGVyZQorICBzdXBwb3J0ZWQgYnkgdGhlIHN5c3RlbS4gIFBhdGNoIGJ5IE5pa2l0YSBWZXRvc2hraW4uCisKKy0gSXNzdWUgIzEwMDYzOiBmaWxlOi8vIHNjaGVtZSB3aWxsIHN0b3AgYWNjZXNzaW5nIHJlbW90ZSBob3N0cyB2aWEgZnRwCisgIHByb3RvY29sLiBmaWxlOi8vIHVybHMgaGFkIGZhbGxiYWNrIHRvIGFjY2VzcyByZW1vdGUgaG9zdHMgdmlhIGZ0cC4gVGhpcyB3YXMKKyAgbm90IGNvcnJlY3QsIGNoYW5nZSBpcyBtYWRlIHRvIHJhaXNlIGEgVVJMRXJyb3Igd2hlbiBhIHJlbW90ZSBob3N0IGlzIHRyaWVkIHRvCisgIGFjY2VzcyB2aWEgZmlsZTovLyBzY2hlbWUuCisKKy0gSXNzdWUgIzE3MTA3MDM6IFdyaXRlIHN0cnVjdHVyZXMgZm9yIGFuIGVtcHR5IFpJUCBhcmNoaXZlIHdoZW4gYSBaaXBGaWxlIGlzCisgIGNyZWF0ZWQgaW4gbW9kZXMgJ2EnIG9yICd3JyBhbmQgdGhlbiBjbG9zZWQgd2l0aG91dCBhZGRpbmcgYW55IGZpbGVzLiBSYWlzZQorICBCYWRaaXBmaWxlIChyYXRoZXIgdGhhbiBJT0Vycm9yKSB3aGVuIG9wZW5pbmcgc21hbGwgbm9uLVpJUCBmaWxlcy4KKworLSBJc3N1ZSAjMTAwNDE6IFRoZSBzaWduYXR1cmUgb2Ygb3B0aW9uYWwgYXJndW1lbnRzIGluIHNvY2tldC5tYWtlZmlsZSgpIGRpZG4ndAorICBtYXRjaCB0aGF0IG9mIGlvLm9wZW4oKSwgYW5kIHRoZXkgYWxzbyBkaWRuJ3QgZ2V0IGZvcndhcmRlZCBwcm9wZXJseSB0bworICBUZXh0SU9XcmFwcGVyIGluIHRleHQgbW9kZS4gIFBhdGNoIGJ5IEthaSBaaHUuCisKKy0gSXNzdWUgIzkwMDM6IGh0dHAuY2xpZW50LkhUVFBTQ29ubmVjdGlvbiwgdXJsbGliLnJlcXVlc3QuSFRUUFNIYW5kbGVyIGFuZAorICB1cmxsaWIucmVxdWVzdC51cmxvcGVuIG5vdyB0YWtlIG9wdGlvbmFsIGFyZ3VtZW50cyB0byBhbGxvdyBmb3Igc2VydmVyCisgIGNlcnRpZmljYXRlIGNoZWNraW5nLCBhcyByZWNvbW1lbmRlZCBpbiBwdWJsaWMgdXNlcyBvZiBIVFRQUy4KKworLSBJc3N1ZSAjNjYxMjogRml4IHNpdGUgYW5kIHN5c2NvbmZpZyB0byBjYXRjaCBvcy5nZXRjd2QoKSBlcnJvciwgZWcuIGlmIHRoZQorICBjdXJyZW50IGRpcmVjdG9yeSB3YXMgZGVsZXRlZC4gUGF0Y2ggd3JpdHRlbiBieSBXLiBUcmV2b3IgS2luZy4KKworLSBJc3N1ZSAjMzg3MzogU3BlZWQgdXAgdW5waWNrbGluZyBmcm9tIGZpbGUgb2JqZWN0cyB0aGF0IGhhdmUgYSBwZWVrKCkgbWV0aG9kLgorCistIElzc3VlICMxMDA3NTogQWRkIGEgc2Vzc2lvbl9zdGF0cygpIG1ldGhvZCB0byBTU0xDb250ZXh0IG9iamVjdHMuCisKKy0gSXNzdWUgIzk5NDg6IEZpeGVkIHByb2JsZW0gb2YgbG9zaW5nIGZpbGVuYW1lIGNhc2UgaW5mb3JtYXRpb24uCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM1MTA5OiBhcnJheS5hcnJheSBjb25zdHJ1Y3RvciB3aWxsIG5vdyB1c2UgZmFzdCBjb2RlIHdoZW4KKyAgaW5pdGlhbCBkYXRhIGlzIHByb3ZpZGVkIGluIGFuIGFycmF5IG9iamVjdCB3aXRoIGNvcnJlY3QgdHlwZS4KKworLSBJc3N1ZSAjNjMxNzogTm93IHdpbnNvdW5kLlBsYXlTb3VuZCBvbmx5IGFjY2VwdHMgdW5pY29kZS4KKworLSBJc3N1ZSAjNjMxNzogTm93IHdpbnNvdW5kLlBsYXlTb3VuZCBjYW4gYWNjZXB0IG5vbiBhc2NpaSBmaWxlbmFtZS4KKworLSBJc3N1ZSAjOTM3NzogVXNlIFVuaWNvZGUgQVBJIGZvciBnZXRob3N0bmFtZSBvbiBXaW5kb3dzLgorCistIElzc3VlICMxMDE0MzogVXBkYXRlICJvcy5wYXRoY29uZiIgdmFsdWVzLgorCistIElzc3VlICM2NTE4OiBTdXBwb3J0IGNvbnRleHQgbWFuYWdlciBwcm90Y29sIGZvciBvc3NhdWRpb2RldiB0eXBlcy4KKworLSBJc3N1ZSAjNjc4MjUwOiBNYWtlIG1tYXAgZmx1c2ggYSBub29wIG9uIEFDQ0VTU19SRUFEIGFuZCBBQ0NFU1NfQ09QWS4KKworLSBJc3N1ZSAjOTA1NDogRml4IGEgY3Jhc2ggb2NjdXJyaW5nIHdoZW4gdXNpbmcgdGhlIHB5ZXhwYXQgbW9kdWxlIHdpdGggZXhwYXQKKyAgdmVyc2lvbiAyLjAuMS4KKworLSBJc3N1ZSAjNTM1NTogUHJvdmlkZSBtYXBwaW5ncyBmcm9tIEV4cGF0IGVycm9yIG51bWJlcnMgdG8gc3RyaW5nIGRlc2NyaXB0aW9ucworICBhbmQgYmFja3dhcmRzLCBpbiBvcmRlciB0byBhY3R1YWxseSBtYWtlIGl0IHBvc3NpYmxlIHRvIGFuYWx5emUgZXJyb3IgY29kZXMKKyAgcHJvdmlkZWQgYnkgRXhwYXRFcnJvci4KKworLSBUaGUgVW5pY29kZSBkYXRhYmFzZSB3YXMgdXBkYXRlZCB0byA2LjAuMC4KKworQy1BUEkKKy0tLS0tCisKKy0gSXNzdWUgIzEwMjg4OiBUaGUgZGVwcmVjYXRlZCBmYW1pbHkgb2YgImNoYXIiLWhhbmRsaW5nIG1hY3JvcworICAoSVNMT1dFUigpL0lTVVBQRVIoKS9ldGMpIGhhdmUgbm93IGJlZW4gcmVtb3ZlZDogdXNlIFB5X0lTTE9XRVIoKSBldGMgaW5zdGVhZC4KKworLSBJc3N1ZSAjOTc3ODogSGFzaCB2YWx1ZXMgYXJlIG5vdyBhbHdheXMgdGhlIHNpemUgb2YgcG9pbnRlcnMuIEEgbmV3IFB5X2hhc2hfdAorICB0eXBlIGhhcyBiZWVuIGludHJvZHVjZWQuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMxMDExNzogVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weSBub3cgYWNjZXB0cyBzb3VyY2UgZmlsZXMgdGhhdCB1c2UKKyAgZW5jb2Rpbmcgb3RoZXIgdGhhbiBBU0NJSSBvciBVVEYtOC4gIFNvdXJjZSBlbmNvZGluZyBpcyBwcmVzZXJ2ZWQgd2hlbgorICByZWluZGVudGVkIGNvZGUgaXMgd3JpdHRlbiB0byBhIGZpbGUuCisKKy0gSXNzdWUgIzcyODc6IERlbW8vaW1wdXRpbC9rbmVlLnB5IHdhcyByZW1vdmVkLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMzY5OTogRml4IHRlc3RfYmlnYWRkcnNwYWNlIGFuZCBleHRlbmQgaXQgdG8gdGVzdCBieXRlc3RyaW5ncyBhcyB3ZWxsCisgIGFzIHVuaWNvZGUgc3RyaW5ncy4gIEluaXRpYWwgcGF0Y2ggYnkgU2FuZHJvIFRvc2kuCisKKy0gSXNzdWUgIzEwMjk0OiBSZW1vdmUgZGVhZCBjb2RlIGZvcm0gdGVzdF91bmljb2RlX2ZpbGUuCisKKy0gSXNzdWUgIzEwMTIzOiBEb24ndCB1c2Ugbm9uLWFzY2lpIGZpbGVuYW1lcyBpbiB0ZXN0X2RvY3Rlc3QgdGVzdHMuIEFkZCBhIG5ldworICB0ZXN0IHNwZWNpZmljIHRvIHVuaWNvZGUgKG5vbi1hc2NpaSBuYW1lIGFuZCBmaWxlbmFtZSkuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxMDI2ODogQWRkIGEgLS1lbmFibGUtbG9hZGFibGUtc3FsaXRlLWV4dGVuc2lvbnMgb3B0aW9uIHRvIGNvbmZpZ3VyZS4KKworLSBJc3N1ZSAjODg1MjogQWxsb3cgdGhlIHNvY2tldCBtb2R1bGUgdG8gYnVpbGQgb24gT3BlblNvbGFyaXMuCisKKy0gRHJvcCAtT1BUOk9saW1pdCBjb21waWxlciBvcHRpb24uCisKKy0gSXNzdWUgIzEwMDk0OiBVc2UgdmVyc2lvbmVkIC5zbyBmaWxlcyBvbiBHTlUva2ZyZWVCU0QgYW5kIHRoZSBHTlUgSHVyZC4KKworLSBBY2NlcHQgT3JhY2xlIEJlcmtlbGV5IERCIDUuMCBhbmQgNS4xIGFzIGJhY2tlbmQgZm9yIHRoZSBkYm0gZXh0ZW5zaW9uLgorCistIElzc3VlICM3NDczOiBhdm9pZCBsaW5rIGVycm9ycyB3aGVuIGJ1aWxkaW5nIGEgZnJhbWV3b3JrIHdpdGggYSBkaWZmZXJlbnQgc2V0CisgIG9mIGFyY2hpdGVjdHVyZXMgdGhhbiB0aGUgb25lIHRoYXQgaXMgY3VycmVudGx5IGluc3RhbGxlZC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgQWxwaGEgMz8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAwOS1PY3QtMjAxMCoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzEwMDY4OiBHbG9iYWwgb2JqZWN0cyB3aGljaCBoYXZlIHJlZmVyZW5jZSBjeWNsZXMgd2l0aCB0aGVpciBtb2R1bGUncworICBkaWN0IGFyZSBub3cgY2xlYXJlZCBhZ2Fpbi4gVGhpcyBjYXVzZXMgaXNzdWUgIzcxNDAgdG8gYXBwZWFyIGFnYWluLgorCistIElzc3VlICM5NzM4OiBEb2N1bWVudCBQeUVycl9TZXRTdHJpbmcoKSBhbmQgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lKCkKKyAgZW5jb2RpbmdzLgorCistIGFzdC5saXRlcmFsX2V2YWwoKSBjYW4gbm93IGhhbmRsZSBuZWdhdGl2ZSBudW1iZXJzLiAgSXQgaXMgYWxzbyBhIGxpdHRsZSBtb3JlCisgIGxpYmVyYWwgaW4gd2hhdCBpdCBhY2NlcHRzIHdpdGhvdXQgY29tcHJvbWlzaW5nIHRoZSBzYWZldHkgb2YgdGhlIGV2YWx1YXRpb24uCisgIEZvciBleGFtcGxlLCAzais0IGFuZCAzKzQrNSBhcmUgYm90aCBhY2NlcHRlZC4KKworLSBJc3N1ZSAjMTAwMDY6IHR5cGUuX19hYnN0cmFjdG1ldGhvZHNfXyBub3cgcmFpc2VzIGFuIEF0dHJpYnV0ZUVycm9yLiAgQXMgYQorICByZXN1bHQgbWV0YWNsYXNzZXMgY2FuIG5vdyBiZSBBQkNzIChzZWUgIzk1MzMpLgorCistIElzc3VlICM4NjcwOiBjdHlwZXMuY193Y2hhciBzdXBwb3J0cyBub24tQk1QIGNoYXJhY3RlcnMgd2l0aCAzMiBiaXRzIHdjaGFyX3QuCisKKy0gSXNzdWUgIzg2NzA6IFB5VW5pY29kZV9Bc1dpZGVDaGFyKCkgYW5kIFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKCkgcmVwbGFjZQorICBVVEYtMTYgc3Vycm9nYXRlIHBhaXJzIGJ5IHNpbmdsZSBub24tQk1QIGNoYXJhY3RlcnMgZm9yIDE2IGJpdHMgUHlfVU5JQ09ERSBhbmQKKyAgMzIgYml0cyB3Y2hhcl90IChlZy4gTGludXggaW4gbmFycm93IGJ1aWxkKS4KKworLSBJc3N1ZSAjMTAwMDM6IEFsbG93IGhhbmRsaW5nIG9mIFNJR0JSRUFLIG9uIFdpbmRvd3MuIEZpeGVzIGEgcmVncmVzc2lvbgorICBpbnRyb2R1Y2VkIGJ5IGlzc3VlICM5MzI0LgorCistIElzc3VlICM5OTc5OiBDcmVhdGUgZnVuY3Rpb24gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcoKS4KKworLSBJc3N1ZSAjNzM5NzogTWVudGlvbiB0aGF0IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCkgaXMgcHJvYmFibHkgd2hhdCBzb21lb25lCisgIHJlYWxseSB3YW50cyB0byBiZSB1c2luZyBpbiBfX2ltcG9ydF9fJ3MgZG9jc3RyaW5nLgorCistIElzc3VlICM4NTIxOiBBbGxvdyBDcmVhdGVLZXlFeCwgT3BlbktleUV4LCBhbmQgRGVsZXRlS2V5RXggZnVuY3Rpb25zIG9mIHdpbnJlZworICB0byB1c2UgbmFtZWQgYXJndW1lbnRzLgorCistIElzc3VlICM5OTMwOiBSZW1vdmUgYm9ndXMgc3VidHlwZSBjaGVjayB0aGF0IHdhcyBjYXVzaW5nIChlLmcuKQorICBmbG9hdC5fX3JkaXZfXygyLjAsIDMpIHRvIHJldHVybiBOb3RJbXBsZW1lbnRlZCBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAxLjUuCisKKy0gSXNzdWUgIzk4MDg6IEltcGxlbWVudCBvcy5nZXRsb2dpbiBmb3IgV2luZG93cy4gUGF0Y2ggYnkgSm9uIEFuZ2xpbi4KKworLSBJc3N1ZSAjOTkwMTogRGVzdHJveWluZyB0aGUgR0lMIGluIFB5X0ZpbmFsaXplKCkgY2FuIGZhaWwgaWYgc29tZSBvdGhlcgorICB0aHJlYWRzIGFyZSBzdGlsbCBydW5uaW5nLiAgSW5zdGVhZCwgcmVpbml0aWFsaXplIHRoZSBHSUwgb24gYSBzZWNvbmQgY2FsbCB0bworICBQeV9Jbml0aWFsaXplKCkuCisKKy0gQWxsIFN5bnRheEVycm9ycyBub3cgaGF2ZSBhIGNvbHVtbiBvZmZzZXQgYW5kIHRoZXJlZm9yZSBhIGNhcmV0IHdoZW4gdGhlIGVycm9yCisgIGlzIHByaW50ZWQuCisKKy0gSXNzdWUgIzkyNTI6IFB5SW1wb3J0X0ltcG9ydCBubyBsb25nZXIgdXNlcyBhIGZyb21saXN0IGhhY2sgdG8gcmV0dXJuIHRoZQorICBtb2R1bGUgdGhhdCB3YXMgaW1wb3J0ZWQsIGJ1dCBpbnN0ZWFkIGdldHMgdGhlIG1vZHVsZSBmcm9tIHN5cy5tb2R1bGVzLgorCistIElzc3VlICM5MjEzOiBUaGUgcmFuZ2UgdHlwZV9pdGVtcyBub3cgcHJvdmlkZXMgaW5kZXgoKSBhbmQgY291bnQoKSBtZXRob2RzLCB0bworICBjb25mb3JtIHRvIHRoZSBTZXF1ZW5jZSBBQkMuICBQYXRjaCBieSBEYW5pZWwgVXJiYW4gYW5kIERhbmllbCBTdHV0emJhY2guCisKKy0gSXNzdWUgIzc5OTQ6IElzc3VlIGEgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyBpZiBvYmplY3QuX19mb3JtYXRfXyBpcyBjYWxsZWQKKyAgd2l0aCBhIG5vbi1lbXB0eSBmb3JtYXQgc3RyaW5nLiAgVGhpcyBpcyBhbiBlZmZvcnQgdG8gZnV0dXJlLXByb29mIHVzZXIKKyAgY29kZS4gSWYgYSBkZXJpdmVkIGNsYXNzIGRvZXMgbm90IGN1cnJlbnRseSBpbXBsZW1lbnQgX19mb3JtYXRfXyBidXQgbGF0ZXIKKyAgYWRkcyBpdHMgb3duIF9fZm9ybWF0X18sIGl0IHdvdWxkIG1vc3QgbGlrZWx5IGJyZWFrIHVzZXIgY29kZSB0aGF0IGhhZAorICBzdXBwbGllZCBhIGZvcm1hdCBzdHJpbmcuICBUaGlzIHdpbGwgYmUgY2hhbmdlZCB0byBhIERlcHJlY2F0aW9uV2FyaW5nIGluCisgIFB5dGhvbiAzLjMgYW5kIGl0IHdpbGwgYmUgYW4gZXJyb3IgaW4gUHl0aG9uIDMuNC4KKworLSBJc3N1ZSAjOTgyODogRGVzdHJveSB0aGUgR0lMIGluIFB5X0ZpbmFsaXplKCksIHNvIHRoYXQgaXQgZ2V0cyBwcm9wZXJseQorICByZS1jcmVhdGVkIG9uIGEgc3Vic2VxdWVudCBjYWxsIHRvIFB5X0luaXRpYWxpemUoKS4gIFRoZSBwcm9ibGVtIChhIGNyYXNoKQorICB3b3VsZG4ndCBhcHBlYXIgaW4gMy4xIG9yIDIuNyB3aGVyZSB0aGUgR0lMJ3Mgc3RydWN0dXJlIGlzIG1vcmUgdHJpdmlhbC4KKworLSBJc3N1ZSAjOTIxMDogQ29uZmlndXJlIG9wdGlvbiAtLXdpdGgtd2N0eXBlLWZ1bmN0aW9ucyB3YXMgcmVtb3ZlZC4gIFVzaW5nIHRoZQorICBmdW5jdGlvbnMgZnJvbSB0aGUgbGliYyBjYXVzZWQgdGhlIG1ldGhvZHMgLnVwcGVyKCkgYW5kIGxvd2VyKCkgdG8gYmVjb21lCisgIGxvY2FsZSBhd2FyZSBhbmQgY3JlYXRlZCBzdWJ0bHkgd3JvbmcgcmVzdWx0cy4KKworLSBJc3N1ZSAjOTczODogUHlVbmljb2RlX0Zyb21Gb3JtYXQoKSBhbmQgUHlFcnJfRm9ybWF0KCkgcmFpc2UgYW4gZXJyb3Igb24gYQorICBub24tQVNDSUkgYnl0ZSBpbiB0aGUgZm9ybWF0IHN0cmluZy4KKworLSBJc3N1ZSAjNDYxNzogUHJldmlvdXNseSBpdCB3YXMgaWxsZWdhbCB0byBkZWxldGUgYSBuYW1lIGZyb20gdGhlIGxvY2FsCisgIG5hbWVzcGFjZSBpZiBpdCBvY2N1cnMgYXMgYSBmcmVlIHZhcmlhYmxlIGluIGEgbmVzdGVkIGJsb2NrLiAgVGhpcyBsaW1pdGF0aW9uCisgIG9mIHRoZSBjb21waWxlciBoYXMgYmVlbiBsaWZ0ZWQsIGFuZCBhIG5ldyBvcGNvZGUgaW50cm9kdWNlZCAoREVMRVRFX0RFUkVGKS4KKworLSBJc3N1ZSAjOTgwNDogYXNjaWkoKSBub3cgYWx3YXlzIHJlcHJlc2VudHMgdW5pY29kZSBzdXJyb2dhdGUgcGFpcnMgYXMgYSBzaW5nbGUKKyAgYGBcVVhYWFhYWFhYYGAsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgY2hhcmFjdGVyIGlzIHByaW50YWJsZSBvciBub3QuCisgIEFsc28sIHRoZSAiYmFja3NsYXNocmVwbGFjZSIgZXJyb3IgaGFuZGxlciBub3cgam9pbnMgc3Vycm9nYXRlIHBhaXJzIGludG8gYQorICBzaW5nbGUgY2hhcmFjdGVyIG9uIFVDUy0yIGJ1aWxkcy4KKworLSBJc3N1ZSAjOTc1NzogbWVtb3J5dmlldyBvYmplY3RzIGdldCBhIHJlbGVhc2UoKSBtZXRob2QgdG8gcmVsZWFzZSB0aGUKKyAgdW5kZXJseWluZyBidWZmZXIgKHByZXZpb3VzbHkgdGhpcyB3YXMgb25seSBkb25lIHdoZW4gZGVhbGxvY2F0aW5nIHRoZQorICBtZW1vcnl2aWV3KSwgYW5kIGdhaW4gc3VwcG9ydCBmb3IgdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbC4KKworLSBJc3N1ZSAjOTc5NzogcHlzdGF0ZS5jIHdyb25nbHkgYXNzdW1lZCB0aGF0IHplcm8gY291bGRuJ3QgYmUgYSB2YWxpZAorICB0aHJlYWQtbG9jYWwgc3RvcmFnZSBrZXkuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjIzNjogZGlzdHV0aWxzJyBta3BhdGggaWdub3JlZCB0aGUgbW9kZSBwYXJhbWV0ZXIuCisKKy0gRml4IHR5cG8gaW4gb25lIHNkaXN0IG9wdGlvbiAobWVkYXRhLWNoZWNrKS4KKworLSBJc3N1ZSAjOTE5OTogRml4IGluY29ycmVjdCB1c2Ugb2YgZGlzdHV0aWxzLmNtZC5Db21tYW5kLmFubm91bmNlLgorCistIElzc3VlICMxNzE4NTc0OiBGaXggb3B0aW9ucyB0aGF0IHdlcmUgc3VwcG9zZWQgdG8gYWNjZXB0IGFyZ3VtZW50cyBidXQgZGlkCisgIG5vdCBpbiBidWlsZF9jbGliLgorCistIElzc3VlICM5NDM3OiBGaXggYnVpbGRpbmcgQyBleHRlbnNpb25zIHdpdGggbm9uLWRlZmF1bHQgTERGTEFHUy4KKworLSBJc3N1ZSAjNDY2MTogZW1haWwgY2FuIG5vdyBwYXJzZSBieXRlcyBpbnB1dCBhbmQgZ2VuZXJhdGUgZWl0aGVyIGNvbnZlcnRlZAorICA3Yml0IG91dHB1dCBvciBieXRlcyBvdXRwdXQuICBFbWFpbCB2ZXJzaW9uIGJ1bXBlZCB0byA1LjEuMC4KKworLSBJc3N1ZSAjMTU4OTogQWRkIHNzbC5tYXRjaF9ob3N0bmFtZSgpLCB0byBoZWxwIGltcGxlbWVudCBzZXJ2ZXIgaWRlbnRpdHkKKyAgdmVyaWZpY2F0aW9uIGZvciBoaWdoZXItbGV2ZWwgcHJvdG9jb2xzLgorCistIElzc3VlICM5NzU5OiBHemlwRmlsZSBub3cgcmFpc2VzIFZhbHVlRXJyb3Igd2hlbiBhbiBvcGVyYXRpb24gaXMgYXR0ZW1wdGVkCisgIGFmdGVyIHRoZSBmaWxlIGlzIGNsb3NlZC4gIFBhdGNoIGJ5IEplZmZyZXkgRmlua2Vsc3RlaW4uCisKKy0gSXNzdWUgIzkwNDI6IEZpeCBpbnRlcmFjdGlvbiBvZiBjdXN0b20gdHJhbnNsYXRpb24gY2xhc3NlcyBhbmQgY2FjaGluZyBpbgorICBnZXR0ZXh0LgorCistIElzc3VlICM2NzA2OiBhc3luY29yZS5kaXNwYXRjaGVyIG5vdyBwcm92aWRlcyBhIGhhbmRsZV9hY2NlcHRlZCgpIG1ldGhvZAorICByZXR1cm5pbmcgYSAoc29jaywgYWRkcikgcGFpciB3aGljaCBpcyBjYWxsZWQgd2hlbiBhIGNvbm5lY3Rpb24gaGFzIGJlZW4KKyAgZXN0YWJsaXNoZWQgd2l0aCBhIG5ldyByZW1vdGUgZW5kcG9pbnQuICBUaGlzIGlzIHN1cHBvc2VkIHRvIGJlIHVzZWQgYXMgYQorICByZXBsYWNlbWVudCBmb3Igb2xkIGhhbmRsZV9hY2NlcHQoKSBhbmQgYXZvaWRzIHRoZSB1c2VyIHRvIGNhbGwgYWNjZXB0KCkKKyAgZGlyZWN0bHkuCisKKy0gSXNzdWUgIzkwNjU6IHRhcmZpbGUgbm8gbG9uZ2VyIHVzZXMgInJvb3QiIGFzIHRoZSBkZWZhdWx0IGZvciB0aGUgdW5hbWUgYW5kCisgIGduYW1lIGZpZWxkLgorCistIElzc3VlICM4OTgwOiBGaXhlZCBhIGZhaWx1cmUgaW4gZGlzdHV0aWxzLmNvbW1hbmQgY2hlY2sgdGhhdCB3YXMgc2hhZG93ZWQgYnkKKyAgYW4gZW52aXJvbm1lbnQgdGhhdCBkb2VzIG5vdCBoYXZlIGRvY3V0aWxzLiAgUGF0Y2ggYnkgQXJmcmV2ZXIuCisKKy0gSXNzdWUgIzEwNTAyNjg6IHBhcnNlYWRkciBub3cgY29ycmVjdGx5IHF1b3RlcyBkb3VibGUgcXVvdGUgYW5kIGJhY2tzbGFzaAorICBjaGFyYWN0ZXJzIHRoYXQgYXBwZWFyIGluc2lkZSBxdW90ZWQgc3RyaW5ncyBpbiBlbWFpbCBhZGRyZXNzZXMuCisKKy0gSXNzdWUgIzEwMDA0OiBxdW9wcmltaW1lIG5vIGxvbmdlciBnZW5lcmF0ZXMgYSB0cmFjZWJhY2sgd2hlbiBjb25mcm9udGVkIHdpdGgKKyAgaW52YWxpZCBjaGFyYWN0ZXJzIGFmdGVyICc9JyBpbiBhIFEtZW5jb2RlZCB3b3JkLgorCistIElzc3VlICMxNDkxOiBCYXNlSFRUUFNlcnZlciBub3dzIHNlbmQgYSBgYDEwMCBDb250aW51ZWBgIHJlc3BvbnNlIGJlZm9yZQorICBzZW5kaW5nIGEgMjAwIE9LIGZvciB0aGUgRXhwZWN0OiAxMDAtY29udGludWUgcmVxdWVzdCBoZWFkZXIuCisKKy0gSXNzdWUgIzkzNjA6IENsZWFudXAgYW5kIGltcHJvdmVtZW50cyB0byB0aGUgbm50cGxpYiBtb2R1bGUuICBUaGUgQVBJIG5vdworICBjb25mb3JtcyB0byB0aGUgcGhpbG9zb3BoeSBvZiBieXRlcyBhbmQgdW5pY29kZSBzZXBhcmF0aW9uIGluIFB5dGhvbiAzLiAgQQorICB0ZXN0IHN1aXRlIGhhcyBhbHNvIGJlZW4gYWRkZWQuCisKKy0gSXNzdWUgIzk5NjI6IEd6aXBGaWxlIG5vdyBoYXMgdGhlIHBlZWsoKSBtZXRob2QuCisKKy0gSXNzdWUgIzkwOTA6IFdoZW4gYSBzb2NrZXQgd2l0aCBhIHRpbWVvdXQgZmFpbHMgd2l0aCBFV09VTERCTE9DSyBvciBFQUdBSU4sCisgIHJldHJ5IHRoZSBzZWxlY3QoKSBsb29wIGluc3RlYWQgb2YgYmFpbGluZyBvdXQuICBUaGlzIGlzIGJlY2F1c2Ugc2VsZWN0KCkgY2FuCisgIGluY29ycmVjdGx5IHJlcG9ydCBhIHNvY2tldCBhcyByZWFkeSBmb3IgcmVhZGluZyAoZm9yIGV4YW1wbGUsIGlmIGl0IHJlY2VpdmVkCisgIHNvbWUgZGF0YSB3aXRoIGFuIGludmFsaWQgY2hlY2tzdW0pLgorCistIElzc3VlICMzNjEyOiBBZGRlZCBuZXcgdHlwZXMgdG8gY3R5cGVzLndpbnR5cGVzLiAoQ0hBUiBhbmQgcG9pbnRlcnMpCisKKy0gSXNzdWUgIzk5NTA6IEZpeCBzb2NrZXQuc2VuZGFsbCgpIGNyYXNoIG9yIG1pc2JlaGF2aW91ciB3aGVuIGEgc2lnbmFsIGlzCisgIHJlY2VpdmVkLiAgTm93IHNlbmRhbGwoKSBwcm9wZXJseSBjYWxscyBzaWduYWwgaGFuZGxlcnMgaWYgbmVjZXNzYXJ5LCBhbmQKKyAgcmV0cmllcyBzZW5kaW5nIGlmIHRoZXNlIHJldHVybmVkIHN1Y2Nlc3NmdWxseSwgaW5jbHVkaW5nIG9uIHNvY2tldHMgd2l0aCBhCisgIHRpbWVvdXQuCisKKy0gSXNzdWUgIzk5NDc6IGxvZ2dpbmc6IEZpeGVkIGxvY2tpbmcgYnVnIGluIHN0b3BMaXN0ZW5pbmcuCisKKy0gSXNzdWUgIzk5NDU6IGxvZ2dpbmc6IEZpeGVkIGxvY2tpbmcgYnVncyBpbiBhZGRIYW5kbGVyL3JlbW92ZUhhbmRsZXIuCisKKy0gSXNzdWUgIzk5MzY6IEZpeGVkIGV4ZWN1dGFibGUgbGluZXMnIHNlYXJjaCBpbiB0aGUgdHJhY2UgbW9kdWxlLgorCistIElzc3VlICM5NzkwOiBSZXdvcmsgaW1wb3J0cyBuZWNlc3NhcnkgZm9yIHNhbWVmaWxlIGFuZCBzYW1lb3BlbmZpbGUKKyAgaW4gbnRwYXRoLgorCistIElzc3VlICM5OTI4OiBQcm9wZXJseSBpbml0aWFsaXplIHRoZSB0eXBlcyBleHBvcnRlZCBieSB0aGUgYnoyIG1vZHVsZS4KKworLSBJc3N1ZSAjMTY3NTk1MTogQWxsb3cgR3ppcEZpbGUgdG8gd29yayB3aXRoIHVuc2Vla2FibGUgZmlsZSBvYmplY3RzLiAgUGF0Y2ggYnkKKyAgRmxvcmlhbiBGZXN0aS4KKworLSBMb2dnaW5nOiBBZGRlZCBRdWV1ZUxpc3RlbmVyIGNsYXNzIHRvIGZhY2lsaXRhdGUgbG9nZ2luZyB1c2FnZSBmb3IKKyAgcGVyZm9ybWFuY2UtY3JpdGljYWwgdGhyZWFkcy4KKworLSBJc3N1ZSAjOTkxNjogQWRkIHNvbWUgbWlzc2luZyBlcnJubyBzeW1ib2xzLgorCistIElzc3VlICM5ODc3OiBFeHBvc2Ugc3lzY29uZmlnLmdldF9tYWtlZmlsZV9maWxlbmFtZSgpCisKKy0gbG9nZ2luZzogQWRkZWQgaGFzSGFuZGxlcnMoKSBtZXRob2QgdG8gTG9nZ2VyIGFuZCBMb2dnZXJBZGFwdGVyLgorCistIElzc3VlICM5OTA4OiBGaXggb3Muc3RhdCgpIG9uIGJ5dGVzIHBhdGhzIHVuZGVyIFdpbmRvd3MgNy4KKworLSBJc3N1ZSAjMjY0MzogbXN5bmMoKSBpcyBub3QgY2FsbGVkIGFueW1vcmUgd2hlbiBkZWFsbG9jYXRpbmcgYW4gb3BlbiBtbWFwCisgIG9iamVjdCwgb25seSBtdW5tYXAoKS4KKworLSBsb2dnaW5nOiBDaGFuZ2VkIExvZ2dlckFkYXB0ZXIgaW1wbGVtZW50YXRpb24gaW50ZXJuYWxseSwgdG8gbWFrZSBpdCBlYXNpZXIgdG8KKyAgc3ViY2xhc3MgaW4gYSB1c2VmdWwgd2F5LgorCistIGxvZ2dpbmc6IGhhc0hhbmRsZXJzIG1ldGhvZCB3YXMgYWRkZWQgdG8gTG9nZ2VyLCBhbmQgaXNFbmFibGVkRm9yLAorICBnZXRFZmZlY3RpdmVMZXZlbCwgaGFzSGFuZGxlcnMgYW5kIHNldExldmVsIHdlcmUgYWRkZWQgdG8gTG9nZ2VyQWRhcHRlci4KKyAgTG9nZ2VyQWRhcHRlciB3YXMgaW50cm9kdWNlZCBpbnRvIHRoZSB1bml0IHRlc3RzIGZvciBsb2dnaW5nLgorCistIElzc3VlICMxNjg2OiBGaXggc3RyaW5nLlRlbXBsYXRlIHdoZW4gb3ZlcnJpZGluZyB0aGUgcGF0dGVybiBhdHRyaWJ1dGUuCisKKy0gSXNzdWUgIzk4NTQ6IFNvY2tldElPIG9iamVjdHMgbm93IG9ic2VydmUgdGhlIFJhd0lPQmFzZSBpbnRlcmZhY2UgaW4KKyAgbm9uLWJsb2NraW5nIG1vZGU6IHRoZXkgcmV0dXJuIE5vbmUgd2hlbiBhbiBvcGVyYXRpb24gd291bGQgYmxvY2sgKGluc3RlYWQgb2YKKyAgcmFpc2luZyBhbiBleGNlcHRpb24pLgorCistIElzc3VlICMxNzMwMTM2OiBGaXggdGhlIGNvbXBhcmlzb24gYmV0d2VlbiBhIHRrLmZvbnQuRm9udCBhbmQgYW4gb2JqZWN0IG9mCisgIGFub3RoZXIga2luZC4KKworLSBJc3N1ZSAjOTQ0MTogbG9nZ2luZyBoYXMgYmV0dGVyIGNvdmVyYWdlIGZvciByb3RhdGluZyBmaWxlIGhhbmRsZXJzLgorCistIElzc3VlICM5ODY1OiBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCBub3cgaGFzIGEgX19zaXplb2ZfXyBtZXRob2QuCisKKy0gSXNzdWUgIzk4NTQ6IFRoZSBkZWZhdWx0IHJlYWQoKSBpbXBsZW1lbnRhdGlvbiBpbiBpby5SYXdJT0Jhc2Ugbm93IGhhbmRsZXMKKyAgbm9uLWJsb2NraW5nIHJlYWRpbnRvKCkgcmV0dXJuaW5nIE5vbmUgY29ycmVjdGx5LgorCistIElzc3VlICMxNTUyOiBzb2NrZXQuc29ja2V0cGFpcigpIG5vdyByZXR1cm5zIHJlZ3VsYXIgc29ja2V0LnNvY2tldCBvYmplY3RzCisgIHN1cHBvcnRpbmcgdGhlIHdob2xlIHNvY2tldCBBUEkgKHJhdGhlciB0aGFuIHRoZSAicmF3IiBfc29ja2V0LnNvY2tldAorICBvYmplY3RzKS4KKworLSBJc3N1ZSAjOTg1MzogRml4IHRoZSBzaWduYXR1cmUgb2YgU1NMU29ja2V0LnJlY3Zmcm9tKCkgYW5kIFNTTFNvY2tldC5zZW5kdG8oKQorICB0byBtYXRjaCB0aGUgY29ycmVzcG9uZGluZyBzb2NrZXQgbWV0aG9kcy4KKworLSBJc3N1ZSAjOTg0MDogQWRkZWQgYSBkZWNvcmF0b3IgdG8gcmVwcmxpYiBmb3Igd3JhcHBpbmcgX19yZXByX18gbWV0aG9kcyB0byBtYWtlCisgIHRoZW0gaGFuZGxlIHJlY3Vyc2l2ZSBjYWxscyB3aXRoaW4gdGhlIHNhbWUgdGhyZWFkLgorCistIGxvZ2dpbmc6IEVuaGFuY2VkIEhUVFBIYW5kbGVyIHdpdGggc2VjdXJlIGFuZCBjcmVkZW50aWFscyBpbml0aWFsaXplcnMuCisKKy0gSXNzdWUgIzc2NzY0NTogU2V0IG9zLnBhdGguc3VwcG9ydHNfdW5pY29kZV9maWxlbmFtZXMgdG8gVHJ1ZSBvbiBNYWMgT1MgWC4KKworLSBJc3N1ZSAjOTgzNzogVGhlIHJlYWQoKSBtZXRob2Qgb2YgWmlwRXh0RmlsZSBvYmplY3RzIChhcyByZXR1cm5lZCBieQorICBaaXBGaWxlLm9wZW4oKSkgY291bGQgcmV0dXJuIG1vcmUgYnl0ZXMgdGhhbiByZXF1ZXN0ZWQuCisKKy0gSXNzdWUgIzk4MjY6IE9yZGVyZWREaWN0Ll9fcmVwcl9fIGNhbiBub3cgaGFuZGxlIHNlbGYtcmVmZXJlbnRpYWwgdmFsdWVzOgorICBkWyd4J10gPSBkLgorCistIElzc3VlICM5ODI1OiBVc2luZyBfX2RlbF9fIGluIHRoZSBkZWZpbml0aW9uIG9mIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IG1hZGUKKyAgaXQgcG9zc2libGUgZm9yIHRoZSB1c2VyIHRvIGNyZWF0ZSBzZWxmLXJlZmVyZW5jaW5nIG9yZGVyZWQgZGljdGlvbmFyaWVzIHdoaWNoCisgIGJlY29tZSBwZXJtYW5lbnRseSB1bmNvbGxlY3RhYmxlIEdDIGdhcmJhZ2UuICBSZWluc3RhdGVkIHRoZSBQeXRob24gMy4xCisgIGFwcHJvYWNoIG9mIHVzaW5nIHdlYWtyZWYgcHJveGllcyBzbyB0aGF0IHJlZmVyZW5jZSBjeWNsZXMgbmV2ZXIgZ2V0IGNyZWF0ZWQKKyAgaW4gdGhlIGZpcnN0IHBsYWNlLgorCistIElzc3VlICM5NTc5LCAjOTU4MDogRml4IG9zLmNvbmZzdHIoKSBmb3IgdmFsdWUgbG9uZ2VyIHRoYW4gMjU1IGJ5dGVzIGFuZAorICBlbmNvZGUgdGhlIHZhbHVlIHdpdGggZmlsZXN5c3RlbSBlbmNvZGluZyBhbmQgc3Vycm9nYXRlZXNjYXBlIChpbnN0ZWFkIG9mCisgIHV0Zi04IGluIHN0cmljdCBtb2RlKSAuIFBhdGNoIHdyaXR0ZW4gYnkgRGF2aWQgV2F0c29uLgorCistIElzc3VlICM5NjMyOiBSZW1vdmUgc3lzLnNldGZpbGVzeXN0ZW1lbmNvZGluZygpIGZ1bmN0aW9uOiB1c2UgUFlUSE9ORlNFTkNPRElORworICBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBzZXQgdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgYXQgUHl0aG9uIHN0YXJ0dXAuCisgIHN5cy5zZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSBjcmVhdGVzIGluY29uc2lzdGVuY2llcyBiZWNhdXNlIGl0IGlzIHVuYWJsZSB0bworICByZWVuY29kZSBhbGwgZmlsZW5hbWVzIGluIGFsbCBvYmplY3RzLgorCistIElzc3VlICM5NDEwOiBWYXJpb3VzIG9wdGltaXphdGlvbnMgdG8gdGhlIHBpY2tsZSBtb2R1bGUsIGxlYWRpbmcgdG8gc3BlZWR1cHMKKyAgdXAgdG8gNHggKGRlcGVuZGluZyBvbiB0aGUgYmVuY2htYXJrKS4gIE1vc3RseSBwb3J0ZWQgZnJvbSBVbmxhZGVuIFN3YWxsb3c7CisgIGluaXRpYWwgcGF0Y2ggYnkgQWxleGFuZHJlIFZhc3NhbG90dGkuCisKKy0gVGhlIHBwcmludCBtb2R1bGUgbm93IHN1cHBvcnRzIHByaW50aW5nIE9yZGVyZWREaWN0cyBpbiB0aGVpciBnaXZlbiBvcmRlcgorICAoZm9ybWVybHksIGl0IHdvdWxkIHNvcnQgdGhlIGtleXMpLgorCistIExvZ2dpbmc6IEFkZGVkIFF1ZXVlSGFuZGxlciBjbGFzcyB0byBmYWNpbGl0YXRlIGxvZ2dpbmcgdXNhZ2Ugd2l0aAorICBtdWx0aXByb2Nlc3NpbmcuCisKKy0gSXNzdWUgIzk3MDc6IFJld3JpdHRlbiByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgdGhyZWFkaW5nLmxvY2FsIHdoaWNoIGlzCisgIGZyaWVuZGxpZXIgdG93YXJkcyByZWZlcmVuY2UgY3ljbGVzLiAgVGhpcyBjaGFuZ2UgaXMgbm90IG5vcm1hbGx5IHZpc2libGUKKyAgc2luY2UgYW4gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb24gKF90aHJlYWQuX2xvY2FsKSBpcyB1c2VkIGluc3RlYWQuCisKKy0gSXNzdWUgIzYzOTQ6IG9zLmdldHBwaWQoKSBpcyBub3cgc3VwcG9ydGVkIG9uIFdpbmRvd3MuICBOb3RlIHRoYXQgaXQgd2lsbAorICBzdGlsbCByZXR1cm4gdGhlIGlkIG9mIHRoZSBwYXJlbnQgcHJvY2VzcyBhZnRlciBpdCBoYXMgZXhpdGVkLiAgVGhpcyBwcm9jZXNzCisgIGlkIG1heSBldmVuIGhhdmUgYmVlbiByZXVzZWQgYnkgYW5vdGhlciB1bnJlbGF0ZWQgcHJvY2Vzcy4KKworLSBJc3N1ZSAjOTc5MjogSW4gY2FzZSBvZiBjb25uZWN0aW9uIGZhaWx1cmUsIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigpIHdvdWxkCisgIHN3YWxsb3cgdGhlIGV4Y2VwdGlvbiBhbmQgcmFpc2UgYSBuZXcgb25lLCBtYWtpbmcgaXQgaW1wb3NzaWJsZSB0byBmZXRjaCB0aGUKKyAgb3JpZ2luYWwgZXJybm8sIG9yIHRvIGZpbHRlciB0aW1lb3V0IGVycm9ycy4gIE5vdyB0aGUgb3JpZ2luYWwgZXJyb3IgaXMKKyAgcmUtcmFpc2VkLgorCistIElzc3VlICM5NzU4OiBXaGVuIGZjbnRsLmlvY3RsKCkgd2FzIGNhbGxlZCB3aXRoIG11dGFibGVfZmxhZyBzZXQgdG8gVHJ1ZSwgYW5kCisgIHRoZSBwYXNzZWQgYnVmZmVyIHdhcyBleGFjdGx5IDEwMjQgYnl0ZXMgbG9uZywgdGhlIGJ1ZmZlciB3b3VsZG4ndCBiZSB1cGRhdGVkCisgIGJhY2sgYWZ0ZXIgdGhlIHN5c3RlbSBjYWxsLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQnJpYW4gQnJhemlsLgorCistIFVwZGF0ZXMgdG8gdGhlIHJhbmRvbSBtb2R1bGU6CisKKyAgKiBEb2N1bWVudCB3aGljaCBwYXJ0cyBvZiB0aGUgbW9kdWxlIGFyZSBndWFyYW50ZWVkIHRvIHN0YXkgdGhlIHNhbWUgYWNyb3NzCisgICAgdmVyc2lvbnMgYW5kIHdoaWNoIHBhcnRzIGFyZSBzdWJqZWN0IHRvIGNoYW5nZS4KKworICAqIFVwZGF0ZSB0aGUgc2VlZCgpIG1ldGhvZCB0byB1c2UgYWxsIG9mIHRoZSBiaXRzIGluIGEgc3RyaW5nIGluc3RlYWQgb2YganVzdAorICAgIHRoZSBoYXNoIHZhbHVlLiAgVGhpcyBtYWtlcyBiZXR0ZXIgdXNlIG9mIHRoZSBzZWVkIHZhbHVlIGFuZCBhc3N1cmVzIHRoZQorICAgIHNlZWRpbmcgaXMgcGxhdGZvcm0gaW5kZXBlbmRlbnQuICBJc3N1ZSAjNzg4OS4KKworICAqIEltcHJvdmVkIHRoZSByYW5kb20oKS0tPmludGVnZXIgYWxnb3JpdGhtIHVzZWQgaW4gY2hvaWNlKCksIHNodWZmbGUoKSwKKyAgICBzYW1wbGUoKSwgcmFuZHJhbmdlKCksIGFuZCByYW5kaW50KCkuICBGb3JtZXJseSwgaXQgdXNlZCBpbnQobipyYW5kb20oKSkKKyAgICB3aGljaCBoYXMgYSBzbGlnaHQgYmlhcyB3aGVuZXZlciBuIGlzIG5vdCBhIHBvd2VyIG9mIHR3by4gIElzc3VlICM5MDI1LgorCisgICogSW1wcm92ZWQgZG9jdW1lbnRhdGlvbiBvZiBhcmd1bWVudHMgdG8gcmFuZHJhbmdlKCkuICBJc3N1ZSAjOTM3OS4KKworLSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCBub3cgc3VwcG9ydHMgYSBuZXcgbWV0aG9kIGZvciByZXBvc2l0aW9uaW5nIGtleXMgdG8KKyAgZWl0aGVyIGVuZC4KKworLSBJc3N1ZSAjOTc1NDogU2ltaWxhcmx5IHRvIGFzc2VydFJhaXNlcyBhbmQgYXNzZXJ0UmFpc2VzUmVnZXhwLCB1bml0dGVzdCB0ZXN0CisgIGNhc2VzIG5vdyBhbHNvIGhhdmUgYXNzZXJ0V2FybnMgYW5kIGFzc2VydFdhcm5zUmVnZXhwIG1ldGhvZHMgdG8gY2hlY2sgdGhhdCBhCisgIGdpdmVuIHdhcm5pbmcgdHlwZSB3YXMgdHJpZ2dlcmVkIGJ5IHRoZSBjb2RlIHVuZGVyIHRlc3QuCisKKy0gSXNzdWUgIzU1MDY6IEJ5dGVzSU8gb2JqZWN0cyBub3cgaGF2ZSBhIGdldGJ1ZmZlcigpIG1ldGhvZCBleHBvcnRpbmcgYSB2aWV3IG9mCisgIHRoZWlyIGNvbnRlbnRzIHdpdGhvdXQgZHVwbGljYXRpbmcgdGhlbS4gIFRoZSB2aWV3IGlzIGJvdGggcmVhZGFibGUgYW5kCisgIHdyaXRhYmxlLgorCistIElzc3VlICM3NTY2OiBJbXBsZW1lbnQgb3MucGF0aC5zYW1lb3BlbmZpbGUgZm9yIFdpbmRvd3MuCisKKy0gSXNzdWUgIzkyOTM6IEkvTyBzdHJlYW1zIG5vdyByYWlzZSBgYGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uYGAgd2hlbiBhbgorICB1bnN1cHBvcnRlZCBvcGVyYXRpb24gaXMgYXR0ZW1wdGVkIChmb3IgZXhhbXBsZSwgd3JpdGluZyB0byBhIGZpbGUgb3BlbiBvbmx5CisgIGZvciByZWFkaW5nKS4KKworLSBoYXNobGliIGhhcyB0d28gbmV3IGNvbnN0YW50IGF0dHJpYnV0ZXM6IGFsZ29yaXRobXNfZ3VhcmFudGVlZCBhbmQKKyAgYWxnb3JpdGhtc19hdmFpYWJsZSB0aGF0IHJlc3BlY3RpdmVseSBsaXN0IHRoZSBuYW1lcyBvZiBoYXNoIGFsZ29yaXRobXMKKyAgZ3VhcmFudGVlZCB0byBleGlzdCBpbiBhbGwgUHl0aG9uIGltcGxlbWVudGF0aW9ucyBhbmQgdGhlIG5hbWVzIG9mIGhhc2gKKyAgYWxnb3JpdGhtcyBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgcHJvY2Vzcy4KKworLSBBIG5ldyBwYWNrYWdlIGBgY29uY3VycmVudC5mdXR1cmVzYGAgYXMgZGVmaW5lZCBieSBQRVAgMzE0OC4KKworQy1BUEkKKy0tLS0tCisKKy0gQWRkIFB5RXJyX1N5bnRheExvY2F0aW9uRXgsIHdoaWNoIHN1cHBvcnRzIHBhc3NpbmcgYSBjb2x1bW4gb2Zmc2V0LgorCistIElzc3VlICM5ODM0OiBEb24ndCBzZWdmYXVsdCBpbiBQeVNlcXVlbmNlX0dldFNsaWNlLCBQeVNlcXVlbmNlX1NldFNsaWNlLCBvcgorICBQeVNlcXVlbmNlX0RlbFNsaWNlIHdoZW4gdGhlIG9iamVjdCBkb2Vzbid0IGhhdmUgYW55IG1hcHBpbmcgb3BlcmF0aW9ucworICBkZWZpbmVkLgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjOTE4ODogVGhlIGdkYiBleHRlbnNpb24gbm93IGhhbmRsZXMgY29ycmVjdGx5IG5hcnJvdyAoVUNTMikgYXMgd2VsbCBhcworICB3aWRlIChVQ1M0KSB1bmljb2RlIGJ1aWxkcyBmb3IgYm90aCB0aGUgaG9zdCBpbnRlcnByZXRlciAoZW1iZWRkZWQgaW5zaWRlIGdkYikKKyAgYW5kIHRoZSBpbnRlcnByZXRlciB1bmRlciB0ZXN0LgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjOTMwODogQWRkZWQgdGVzdHMgZm9yIGltcG9ydGluZyBlbmNvZGVkIG1vZHVsZXMgdGhhdCBkbyBub3QKKyAgZGVwZW5kIG9uIHNwZWNpZmljIHN0ZGxpYiBtb2R1bGVzIGJlaW5nIGVuY29kZWQgaW4gYSBjZXJ0YWluIHdheS4KKworLSBJc3N1ZSAjMTA1MTogQWRkIGEgc2NyaXB0IChMaWIvdGVzdC9tYWtlX3NzbF9jZXJ0cy5weSkgdG8gZ2VuZXJhdGUgdGhlIGN1c3RvbQorICBjZXJ0aWZpY2F0ZSBhbmQgcHJpdmF0ZSBrZXkgZmlsZXMgdXNlZCBieSBTU0wtcmVsYXRlZCBjZXJ0cy4KKworLSBJc3N1ZSAjOTk3ODogV2FpdCB1bnRpbCBzdWJwcm9jZXNzIGNvbXBsZXRlcyBpbml0aWFsaXphdGlvbi4gKFdpbjMyS2lsbFRlc3RzCisgIGluIHRlc3Rfb3MpCisKKy0gSXNzdWUgIzcxMTA6IHJlZ3J0ZXN0IG5vdyBzZW5kcyB0ZXN0IGZhaWx1cmUgcmVwb3J0cyBhbmQgc2luZ2xlLWZhaWx1cmUKKyAgdHJhY2ViYWNrcyB0byBzdGRlcnIgcmF0aGVyIHRoYW4gc3Rkb3V0LgorCistIElzc3VlICM5NjI4OiBmaXggcnVudGVzdHMuc2ggLXggb3B0aW9uIHNvIG1vcmUgdGhhbiBvbmUgdGVzdCBjYW4gYmUgZXhjbHVkZWQuCisKKy0gSXNzdWUgIzk4OTk6IEZpeCB0ZXN0X3RraW50ZXIudGVzdF9mb250IG9uIHZhcmlvdXMgcGxhdGZvcm1zLiAgUGF0Y2ggYnkgTmVkCisgIERlaWx5LgorCistIElzc3VlICM5ODk0OiBEbyBub3QgaGFyZGNvZGUgRU5PRU5UIGluIHRlc3Rfc3VicHJvY2Vzcy4KKworLSBJc3N1ZSAjOTMxNTogQWRkZWQgdGVzdHMgZm9yIHRoZSB0cmFjZSBtb2R1bGUuICBQYXRjaCBieSBFbGkgQmVuZGVyc2t5LgorCistIElzc3VlICM5MzIzOiBNYWtlIHRlc3QucmVncnRlc3QuX19maWxlX18gYWJzb2x1dGUsIHRoaXMgd2FzIG5vdCBhbHdheXMgdGhlCisgIGNhc2Ugd2hlbiBydW5uaW5nIHByb2ZpbGUgb3IgdHJhY2UsIGZvciBleGFtcGxlLgorCistIElzc3VlICM5NTY4OiBGaXggdGVzdF91cmxsaWIyX2xvY2FsbmV0IG9uIE9TIFggMTAuMy4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzEwMDYyOiBBbGxvdyBidWlsZGluZyBvbiBwbGF0Zm9ybXMgd2hpY2ggZG8gbm90IGhhdmUgc2VtX3RpbWVkd2FpdC4KKworLSBJc3N1ZSAjMTAwNTQ6IFNvbWUgcGxhdGZvcm1zIHByb3ZpZGUgdWludHB0cl90IGluIGludHR5cGVzLmguICBQYXRjaCBieSBBa2lyYQorICBLaXRhZGEuCisKKy0gSXNzdWUgIzEwMDU1OiBNYWtlIGpzb24gQzg5LWNvbXBsaWFudCBpbiBVQ1M0IG1vZGUuCisKKy0gSXNzdWUgIzk1NTI6IEF2b2lkIHVubmVjZXNzYXJ5IHJlYnVpbGQgb2YgT3BlblNTTC4gKFdpbmRvd3MpCisKKy0gSXNzdWUgIzE2MzM4NjM6IERvbid0IGlnbm9yZSAkQ0MgdW5kZXIgQUlYLgorCistIElzc3VlICM5ODEwOiBDb21waWxlIGJ6aXAyIHNvdXJjZSBmaWxlcyBpbiBQeXRob24ncyBwcm9qZWN0IGZpbGUgZGlyZWN0bHkuIEl0CisgIHVzZWQgdG8gYmUgYnVpbHQgd2l0aCBiemlwMidzIG1ha2VmaWxlLgorCistIElzc3VlICM5ODQ4OiBTdG9wcGluZyB0cnlpbmcgdG8gYnVpbGQgX3dlYWtyZWYgaW4gc2V0dXAucHkgYXMgaXQgaXMgYSBidWlsdC1pbgorICBtb2R1bGUuCisKKy0gSXNzdWUgIzk4MDY6IHB5dGhvbi1jb25maWcgbm93IGhhcyBhbiBgYC0tZXh0ZW5zaW9uLXN1ZmZpeGBgIG9wdGlvbiB0aGF0CisgIG91dHB1dHMgdGhlIHN1ZmZpeCBmb3IgZHluYW1pYyBsaWJyYXJpZXMgaW5jbHVkaW5nIHRoZSBBQkkgdmVyc2lvbiBuYW1lCisgIGRlZmluZWQgYnkgUEVQIDMxNDkuCisKKy0gSXNzdWUgIzk0MTM0NjogSW1wcm92ZSB0aGUgYnVpbGQgcHJvY2VzcyB1bmRlciBBSVggYW5kIGFsbG93IFB5dGhvbiB0byBiZQorICBidWlsdCBhcyBhIHNoYXJlZCBsaWJyYXJ5LiAgUGF0Y2ggYnkgU8OpYmFzdGllbiBTYWJsw6kuCisKKy0gSXNzdWUgIzQwMjY6IE1ha2UgdGhlIGZjbnRsIGV4dGVuc2lvbiBidWlsZCB1bmRlciBBSVguICBQYXRjaCBieSBTw6liYXN0aWVuCisgIFNhYmzDqS4KKworLSBJc3N1ZSAjOTcwMTogVGhlIE1hY09TWCBpbnN0YWxsZXIgY2FuIHBhdGNoIHRoZSBzaGVsbCBwcm9maWxlIHRvIGVuc3VyZSB0aGF0CisgIHRoZSAiYmluIiBkaXJlY3RvcnkgaW5zaWRlIHRoZSBmcmFtZXdvcmsgaXMgb24gdGhlIHNoZWxsJ3Mgc2VhcmNoIHBhdGguIFRoaXMKKyAgZmVhdHVyZSBub3cgYWxzbyBzdXBwb3J0cyB0aGUgWlNIIHNoZWxsLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBBbHBoYSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDA1LVNlcC0yMDEwKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjOTIyNTogUmVtb3ZlIHRoZSBST1RfRk9VUiBhbmQgRFVQX1RPUFggb3Bjb2RlLCB0aGUgbGF0dGVyIHJlcGxhY2VkIGJ5CisgIHRoZSBuZXcgKGFuZCBzaW1wbGVyKSBEVVBfVE9QX1RXTy4gIFBlcmZvcm1hbmNlIGlzbid0IGNoYW5nZWQsIGJ1dCBvdXIKKyAgYnl0ZWNvZGUgaXMgYSBiaXQgc2ltcGxpZmllZC4gIFBhdGNoIGJ5IERlbXVyIFJ1bWVkLgorCistIElzc3VlICM5NzY2OiBSZW5hbWUgcG9vcmx5IG5hbWVkIHZhcmlhYmxlcyBleHBvc2VkIGJ5IF93YXJuaW5ncyB0byBwcmV2ZW50CisgIGNvbmZ1c2lvbiB3aXRoIHRoZSBwcm9wZXIgdmFyaWFibGVzIG5hbWVzIGZyb20gJ3dhcm5pbmdzJyBpdHNlbGYuCisKKy0gSXNzdWUgIzkyMTI6IGRpY3Rfa2V5cyBhbmQgZGljdF9pdGVtcyBub3cgcHJvdmlkZSB0aGUgaXNkaXNqb2ludCgpIG1ldGhvZCwgdG8KKyAgY29uZm9ybSB0byB0aGUgU2V0IEFCQy4gIFBhdGNoIGJ5IERhbmllbCBVcmJhbi4KKworLSBJc3N1ZSAjOTczNzogRml4IGEgY3Jhc2ggd2hlbiB0cnlpbmcgdG8gZGVsZXRlIGEgc2xpY2Ugb3IgYW4gaXRlbSBmcm9tIGEKKyAgbWVtb3J5dmlldyBvYmplY3QuCisKKy0gSXNzdWUgIzk1NDk6IHN5cy5zZXRkZWZhdWx0ZW5jb2RpbmcoKSBhbmQgUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZygpIGFyZQorICBub3cgcmVtb3ZlZCwgc2luY2UgdGhlaXIgZWZmZWN0IHdhcyBpbmV4aXN0ZW50IGluIDMueCAodGhlIGRlZmF1bHQgZW5jb2RpbmcgaXMKKyAgaGFyZGNvZGVkIHRvIHV0Zi04IGFuZCBjYW5ub3QgYmUgY2hhbmdlZCkuCisKKy0gSXNzdWUgIzc0MTU6IFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdCgpIG5vdyB1c2VzIHRoZSBuZXcgYnVmZmVyIEFQSQorICBwcm9wZXJseS4gIFBhdGNoIGJ5IFN0ZWZhbiBCZWhuZWwuCisKKy0gSXNzdWUgIzU1NTM6IFRoZSBQeV9MT0NBTF9JTkxJTkUgbWFjcm8gbm93IHJlc3VsdHMgaW4gaW5saW5pbmcgb24gbW9zdAorICBwbGF0Zm9ybXMuICBQcmV2aW91c2x5LCBpdCBpbmxpbmVkIG9ubHkgd2hlbiB1c2luZyBNaWNyb3NvZnQgVmlzdWFsIEMuCisKKy0gSXNzdWUgIzk3MTI6IEZpeCB0b2tlbml6ZSBvbiBpZGVudGlmaWVycyB0aGF0IHN0YXJ0IHdpdGggbm9uLWFzY2lpIG5hbWVzLgorCistIElzc3VlICM5Njg4OiBfX2Jhc2ljc2l6ZV9fIGFuZCBfX2l0ZW1zaXplX18gbXVzdCBiZSBhY2Nlc3NlZCBhcyBQeV9zc2l6ZV90LgorCistIElzc3VlICM5Njg0OiBBZGRlZCBhIGRlZmluaXRpb24gZm9yIFNJWkVPRl9XQ0hBUl9UIHRvIFBDL3B5Y29uZmlnLmgsIHRvIG1hdGNoCisgIHRoZSBweWNvbmZpZy5oIGdlbmVyYXRlZCBieSBjb25maWd1cmUgb24gb3RoZXIgc3lzdGVtcy4KKworLSBJc3N1ZSAjOTY2NjogT25seSBjYXRjaCBBdHRyaWJ1dGVFcnJvciBpbiBoYXNhdHRyKCkuIEFsbCBvdGhlciBleGNlcHRpb25zIHRoYXQKKyAgb2NjdXIgZHVyaW5nIGF0dHJpYnV0ZSBsb29rdXAgYXJlIG5vdyBwcm9wYWdhdGVkIHRvIHRoZSBjYWxsZXIuCisKKy0gSXNzdWUgIzg2MjI6IEFkZCBQWVRIT05GU0VOQ09ESU5HIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIG92ZXJyaWRlIHRoZQorICBmaWxlc3lzdGVtIGVuY29kaW5nLgorCistIElzc3VlICM1MTI3OiBUaGUgQyBmdW5jdGlvbnMgdGhhdCBhY2Nlc3MgdGhlIFVuaWNvZGUgRGF0YWJhc2Ugbm93IGFjY2VwdCBhbmQKKyAgcmV0dXJuIGNoYXJhY3RlcnMgZnJvbSB0aGUgZnVsbCBVbmljb2RlIHJhbmdlLCBldmVuIG9uIG5hcnJvdyB1bmljb2RlIGJ1aWxkcworICAoUHlfVU5JQ09ERV9UT0xPV0VSLCBQeV9VTklDT0RFX0lTREVDSU1BTCwgYW5kIG90aGVycykuICBBIHZpc2libGUgZGlmZmVyZW5jZQorICBpbiBQeXRob24gaXMgdGhhdCB1bmljb2RlZGF0YS5udW1lcmljKCkgbm93IHJldHVybnMgdGhlIGNvcnJlY3QgdmFsdWUgZm9yCisgIGxhcmdlIGNvZGUgcG9pbnRzLCBhbmQgcmVwcigpIG1heSBjb25zaWRlciBtb3JlIGNoYXJhY3RlcnMgYXMgcHJpbnRhYmxlLgorCistIElzc3VlICM5NDI1OiBDcmVhdGUgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QoKSBmdW5jdGlvbiB0byBnZXQgdGhlIGZpbGVuYW1lCisgIGFzIGEgdW5pY29kZSBvYmplY3QsIGluc3RlYWQgb2YgYSBieXRlIHN0cmluZy4gRnVuY3Rpb24gbmVlZGVkIHRvIHN1cHBvcnQKKyAgdW5lbmNvZGFibGUgZmlsZW5hbWVzLiBEZXByZWNhdGUgUHlNb2R1bGVfR2V0RmlsZW5hbWUoKSBpbiBmYXZvciBvbiB0aGUgbmV3CisgIGZ1bmN0aW9uLgorCistIElzc3VlICM4MDYzOiBDYWxsIF9QeUdJTFN0YXRlX0luaXQoKSBlYXJsaWVyIGluIFB5X0luaXRpYWxpemVFeCgpLgorCistIElzc3VlICM5NjEyOiBUaGUgc2V0IG9iamVjdCBpcyBub3cgNjQtYml0IGNsZWFuIHVuZGVyIFdpbmRvd3MuCisKKy0gSXNzdWUgIzgyMDI6IHN5cy5hcmd2WzBdIGlzIG5vdyBzZXQgdG8gJy1tJyBpbnN0ZWFkIG9mICctYycgd2hlbiBzZWFyY2hpbmcgZm9yCisgIHRoZSBtb2R1bGUgZmlsZSB0byBiZSBleGVjdXRlZCB3aXRoIHRoZSAtbSBjb21tYW5kIGxpbmUgb3B0aW9uLgorCistIElzc3VlICM5NTk5OiBDcmVhdGUgUHlTeXNfRm9ybWF0U3Rkb3V0KCkgYW5kIFB5U3lzX0Zvcm1hdFN0ZGVycigpIGZ1bmN0aW9ucyB0bworICB3cml0ZSBhIG1lc3NhZ2UgZm9ybWF0dGVkIGJ5IFB5VW5pY29kZV9Gcm9tRm9ybWF0VigpIHRvIHN5cy5zdGRvdXQgYW5kCisgIHN5cy5zdGRlcnIuCisKKy0gSXNzdWUgIzk1NDI6IENyZWF0ZSBQeVVuaWNvZGVfRlNEZWNvZGVyKCkgZnVuY3Rpb24sIGEgUGFyc2VUdXBsZSBjb252ZXJ0ZXI6CisgIGRlY29kZSBieXRlcyBvYmplY3RzIHRvIHVuaWNvZGUgdXNpbmcgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoKTsgc3RyCisgIG9iamVjdHMgYXJlIG91dHB1dCBhcy1pcy4KKworLSBJc3N1ZSAjOTIwMzogQ29tcHV0ZWQgZ290b3MgYXJlIG5vdyBlbmFibGVkIGJ5IGRlZmF1bHQgb24gc3VwcG9ydGVkIGNvbXBpbGVycworICAod2hpY2ggYXJlIGRldGVjdGVkIGJ5IHRoZSBjb25maWd1cmUgc2NyaXB0KS4gIFRoZXkgY2FuIHN0aWxsIGJlIGRpc2FibGUKKyAgc2VsZWN0aXZlbHkgYnkgc3BlY2lmeWluZyAtLXdpdGhvdXQtY29tcHV0ZWQtZ290b3MuCisKKy0gSXNzdWUgIzk0MjU6IENyZWF0ZSBQeUVycl9XYXJuRm9ybWF0KCkgZnVuY3Rpb24sIHNpbWlsYXIgdG8gUHlFcnJfV2FybkV4KCkgYnV0CisgIHVzZSBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKSB0byBmb3JtYXQgdGhlIHdhcm5pbmcgbWVzc2FnZS4KKworLSBJc3N1ZSAjODUzMDogUHJldmVudCBzdHJpbmdsaWIgZmFzdHNlYXJjaCBmcm9tIHJlYWRpbmcgYmV5b25kIHRoZSBmcm9udCBvZiBhbgorICBhcnJheS4KKworLSBJc3N1ZSAjNTMxOTogUHJpbnQgYW4gZXJyb3IgaWYgZmx1c2hpbmcgc3Rkb3V0IGZhaWxzIGF0IGludGVycHJldGVyIHNodXRkb3duLgorCistIElzc3VlICM5MzM3OiBUaGUgc3RyKCkgb2YgYSBmbG9hdCBvciBjb21wbGV4IG51bWJlciBpcyBub3cgaWRlbnRpY2FsIHRvIGl0cworICByZXByKCkuCisKKy0gSXNzdWUgIzk0MTY6IEZpeCBzb21lIGlzc3VlcyB3aXRoIGNvbXBsZXggZm9ybWF0dGluZyB3aGVyZSB0aGUgb3V0cHV0IHdpdGggbm8KKyAgdHlwZSBzcGVjaWZpZXIgZmFpbGVkIHRvIG1hdGNoIHRoZSBzdHIgb3V0cHV0OgorCisgICAgLSBmb3JtYXQoY29tcGxleCgtMC4wLCAyLjApLCAnLScpIG9taXR0ZWQgdGhlIHJlYWwgcGFydCBmcm9tIHRoZSBvdXRwdXQsCisgICAgLSBmb3JtYXQoY29tcGxleCgwLjAsIDIuMCksICctJykgaW5jbHVkZWQgYSBzaWduIGFuZCBwYXJlbnRoZXNlcy4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzgwMTM6IHRpbWUuYXNjdGltZSBhbmQgdGltZS5jdGltZSBubyBsb25nZXIgY2FsbCBzeXN0ZW0KKyAgYXNjdGltZSBhbmQgY3RpbWUgZnVuY3Rpb25zLiAgVGhlIHllYXIgcmFuZ2UgZm9yIHRpbWUuYXNjdGltZSBpcyBub3cKKyAgMTkwMCB0aHJvdWdoIG1heGludC4gIFRoZSByYW5nZSBmb3IgdGltZS5jdGltZSBpcyB0aGUgc2FtZSBhcyBmb3IKKyAgdGltZS5sb2NhbHRpbWUuICBUaGUgc3RyaW5nIHByb2R1Y2VkIGJ5IHRoZXNlIGZ1bmN0aW9ucyBpcyBsb25nZXIKKyAgdGhhbiAyNCBjaGFyYWN0ZXJzIHdoZW4geWVhciBpcyBncmVhdGVyIHRoYW4gOTk5OS4KKworLSBJc3N1ZSAjNjYwODogdGltZS5hc2N0aW1lIGlzIG5vdyBjaGVja2luZyBzdHJ1Y3QgdG0gZmllbGRzIGl0cyBpbnB1dAorICBiZWZvcmUgcGFzc2luZyBpdCB0byB0aGUgc3lzdGVtIGFzY3RpbWUuICBQYXRjaCBieSBNdW5TaWMgSmVvbmcuCisKKy0gSXNzdWUgIzg3MzQ6IEF2b2lkIGNyYXNoIGluIG1zdmNydC5nZXRfb3NmaGFuZGxlKCkgd2hlbiBhbiBpbnZhbGlkIGZpbGUKKyAgZGVzY3JpcHRvciBpcyBwcm92aWRlZC4gIFBhdGNoIGJ5IFBhc2NhbCBDaGFtYm9uLgorCistIElzc3VlICM3NzM2OiBSZWxlYXNlIHRoZSBHSUwgYXJvdW5kIGNhbGxzIHRvIG9wZW5kaXIoKSBhbmQgY2xvc2VkaXIoKSBpbiB0aGUKKyAgcG9zaXggbW9kdWxlLiAgUGF0Y2ggYnkgTWFyY2luIEJhY2hyeS4KKworLSBJc3N1ZSAjNDgzNTogbWFrZSBQeUxvbmdfRnJvbVNvY2tldF90KCkgYW5kIFB5TG9uZ19Bc1NvY2tldF90KCkgcHJpdmF0ZSB0byB0aGUKKyAgc29ja2V0IG1vZHVsZSwgYW5kIGZpeCB0aGUgd2lkdGggb2Ygc29ja2V0IGRlc2NyaXB0b3JzIHRvIGJlIGNvcnJlY3RseQorICBkZXRlY3RlZCB1bmRlciA2NC1iaXQgV2luZG93cy4KKworLSBJc3N1ZSAjMTAyNzIwNjogU3VwcG9ydCBJRE5BIGluIGdldGhvc3RieW5hbWUsIGdldGhvc3RieW5hbWVfZXgsIGdldGFkZHJpbmZvCisgIGFuZCBnZXRob3N0YnlhZGRyLiAgZ2V0bmFtZWluZm8gaXMgbm93IHJlc3RyaWN0ZWQgdG8gbnVtZXJpYyBhZGRyZXNzZXMgYXMKKyAgaW5wdXQuCisKKy0gSXNzdWUgIzkyMTQ6IFNldCBvcGVyYXRpb25zIG9uIGEgS2V5c1ZpZXcgb3IgSXRlbXNWaWV3IGluIGNvbGxlY3Rpb25zIG5vdworICBjb3JyZWN0bHkgcmV0dXJuIGEgc2V0LiAgUGF0Y2ggYnkgRWxpIEJlbmRlcnNreS4KKworLSBJc3N1ZSAjNTczNzogQWRkIFNvbGFyaXMtc3BlY2lmaWMgbW5lbW9uaWNzIGluIHRoZSBlcnJubyBtb2R1bGUuICBQYXRjaCBieQorICBNYXR0aGV3IEFocmVucy4KKworLSBSZXN0b3JlIEdJTCBpbiBuaXNfY2F0IGluIGNhc2Ugb2YgZXJyb3IuIERlY29kZSBOSVMgZGF0YSB0byBmcyBlbmNvZGluZywgdXNpbmcKKyAgdGhlIHN1cnJvZ2F0ZSBlcnJvciBoYW5kbGVyLgorCistIElzc3VlICM2NjU3NjE6IGBgZnVuY3Rvb2xzLnJlZHVjZSgpYGAgd2lsbCBubyBsb25nZXIgbWFzayBleGNlcHRpb25zIG90aGVyCisgIHRoYW4gYGBUeXBlRXJyb3JgYCByYWlzZWQgYnkgdGhlIGl0ZXJhdG9yIGFyZ3VtZW50LgorCistIElzc3VlICM5NTcwOiBVc2UgUEVQIDM4MyBkZWNvZGluZyBpbiBvcy5ta25vZCBhbmQgb3MubWtmaWZvLgorCistIElzc3VlICM2OTE1OiBVbmRlciBXaW5kb3dzLCBvcy5saXN0ZGlyKCkgZGlkbid0IHJlbGVhc2UgdGhlIEdsb2JhbCBJbnRlcnByZXRlcgorICBMb2NrIGFyb3VuZCBhbGwgc3lzdGVtIGNhbGxzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgUnlhbiBLZWxseS4KKworLSBJc3N1ZSAjODUyNDogQWRkIGEgZGV0YWNoKCkgbWV0aG9kIHRvIHNvY2tldCBvYmplY3RzLCBzbyBhcyB0byBwdXQgdGhlIHNvY2tldAorICBpbnRvIHRoZSBjbG9zZWQgc3RhdGUgd2l0aG91dCBjbG9zaW5nIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvci4KKworLSBJc3N1ZSAjNDc3ODYzOiBFbWl0IGEgUmVzb3VyY2VXYXJuaW5nIGF0IHNodXRkb3duIGlmIGdjLmdhcmJhZ2UgaXMgbm90IGVtcHR5LgorCistIElzc3VlICM2ODY5OiBGaXggYSByZWZjb3VudCBwcm9ibGVtIGluIHRoZSBfY3R5cGVzIGV4dGVuc2lvbi4KKworLSBJc3N1ZSAjNTUwNDogY3R5cGVzIHNob3VsZCBub3cgd29yayB3aXRoIHN5c3RlbXMgd2hlcmUgbW1hcCBjYW4ndCBiZQorICBQUk9UX1dSSVRFIGFuZCBQUk9UX0VYRUMuCisKKy0gSXNzdWUgIzk1MDc6IE5hbWVkIHR1cGxlIHJlcHIgd2lsbCBub3cgYXV0b21hdGljYWxseSBkaXNwbGF5IHRoZSByaWdodCBuYW1lIGluCisgIGEgdHVwbGUgc3ViY2xhc3MuCisKKy0gSXNzdWUgIzkzMjQ6IEFkZCBwYXJhbWV0ZXIgdmFsaWRhdGlvbiB0byBzaWduYWwuc2lnbmFsIG9uIFdpbmRvd3MgaW4gb3JkZXIgdG8KKyAgcHJldmVudCBjcmFzaGVzLgorCistIElzc3VlICM5NTI2OiBSZW1vdmUgc29tZSBvdXRkYXRlZCAoaW50KSBjYXN0cyB0aGF0IHdlcmUgcHJldmVudGluZyB0aGUgYXJyYXkKKyAgbW9kdWxlIGZyb20gd29ya2luZyBjb3JyZWN0bHkgd2l0aCBhcnJheXMgb2YgbW9yZSB0aGFuIDIqKjMxIGVsZW1lbnRzLgorCistIEZpeCBtZW1vcnkgbGVhayBpbiBzc2wuX3NzbC5fdGVzdF9kZWNvZGVfY2VydC4KKworLSBJc3N1ZSAjODA2NTogRml4IG1lbW9yeSBsZWFrIGluIHJlYWRsaW5lIG1vZHVsZSAoZnJvbSBmYWlsdXJlIHRvIGZyZWUgdGhlCisgIHJlc3VsdCBvZiBoaXN0b3J5X2dldF9oaXN0b3J5X3N0YXRlKCkpLgorCistIElzc3VlICM5NDUwOiBGaXggbWVtb3J5IGxlYWsgaW4gcmVhZGxpbmUucmVwbGFjZV9oaXN0b3J5X2l0ZW0gYW5kCisgIHJlYWRsaW5lLnJlbW92ZV9oaXN0b3J5X2l0ZW0gZm9yIHJlYWRsaW5lIHZlcnNpb24gPj0gNS4wLgorCistIElzc3VlICM4MTA1OiBWYWxpZGF0ZSBmaWxlIGRlc2NyaXB0b3IgcGFzc2VkIHRvIG1tYXAubW1hcCBvbiBXaW5kb3dzLgorCistIElzc3VlICM4MDQ2OiBBZGQgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIHN1cHBvcnQgYW5kIC5jbG9zZWQgcHJvcGVydHkgdG8gbW1hcAorICBvYmplY3RzLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzc0NTE6IEltcHJvdmUgZGVjb2RpbmcgcGVyZm9ybWFuY2Ugb2YgSlNPTiBvYmplY3RzLCBhbmQgcmVkdWNlIHRoZQorICBtZW1vcnkgY29uc3VtcHRpb24gb2Ygc2FpZCBkZWNvZGVkIG9iamVjdHMgd2hlbiB0aGV5IHVzZSB0aGUgc2FtZSBzdHJpbmdzIGFzCisgIGtleXMuCisKKy0gSXNzdWUgIzExMDA1NjI6IEZpeCBkZWVwLWNvcHlpbmcgb2Ygb2JqZWN0cyBkZXJpdmVkIGZyb20gdGhlIGxpc3QgYW5kIGRpY3QKKyAgdHlwZXMuICBQYXRjaCBieSBNaWNoZWxlIE9ycsO5IGFuZCBCasO2cm4gTGluZHF2aXN0LgorCistIElzc3VlICM5NzUzOiBGaXhlZCBzb2NrZXQuZHVwLCB3aGljaCBkaWQgbm90IGFsd2F5cyB3b3JrIGNvcnJlY3RseSBvbiBXaW5kb3dzLgorCistIElzc3VlICM5NDIxOiBNYWRlIHRoZSBnZXQ8dHlwZT4gbWV0aG9kcyBjb25zaXN0ZW50bHkgYWNjZXB0IHRoZSB2YXJzIGFuZAorICBkZWZhdWx0IGFyZ3VtZW50cyBvbiBhbGwgcGFyc2VyIGNsYXNzZXMuCisKKy0gSXNzdWUgIzcwMDU6IEZpeGVkIG91dHB1dCBvZiBOb25lIHZhbHVlcyBmb3IgUmF3Q29uZmlnUGFyc2VyLndyaXRlIGFuZAorICBDb25maWdQYXJzZXIud3JpdGUuCisKKy0gSXNzdWUgIzg5OTA6IGFycmF5LmZyb21zdHJpbmcoKSBhbmQgYXJyYXkudG9zdHJpbmcoKSBnZXQgcmVuYW1lZCB0bworICBmcm9tYnl0ZXMoKSBhbmQgdG9ieXRlcygpLCByZXNwZWN0aXZlbHksIHRvIGF2b2lkIGNvbmZ1c2lvbi4gIEZ1cnRoZXJtb3JlLAorICBhcnJheS5mcm9tYnl0ZXMoKSwgYXJyYXkuZXh0ZW5kKCkgYXMgd2VsbCBhcyB0aGUgYXJyYXkuYXJyYXkoKSBjb25zdHJ1Y3RvciBub3cKKyAgYWNjZXB0IGJ5dGVhcnJheSBvYmplY3RzLiAgUGF0Y2ggYnkgVGhvbWFzIEpvbGxhbnMuCisKKy0gSXNzdWUgIzgwODE2NDogRml4ZWQgc29ja2V0LmNsb3NlIHRvIGF2b2lkIHJlZmVyZW5jZXMgdG8gZ2xvYmFscywgdG8gYXZvaWQKKyAgaXNzdWVzIHdoZW4gc29ja2V0LmNsb3NlIGlzIGNhbGxlZCBmcm9tIGEgX19kZWxfXyBtZXRob2QuCisKKy0gSXNzdWUgIzk3MDY6IHNzbCBtb2R1bGUgcHJvdmlkZXMgYSBiZXR0ZXIgZXJyb3IgaGFuZGxpbmcgaW4gdmFyaW91cworICBjaXJjdW1zdGFuY2VzLgorCistIElzc3VlICMxODY4OiBFbGltaW5hdGUgc3VidGxlIHRpbWluZyBpc3N1ZXMgaW4gdGhyZWFkLWxvY2FsIG9iamVjdHMgYnkgZ2V0dGluZworICByaWQgb2YgdGhlIGNhY2hlZCBjb3B5IG9mIHRocmVhZC1sb2NhbCBhdHRyaWJ1dGUgZGljdGlvbmFyeS4KKworLSBJc3N1ZSAjMTUxMjc5MTogSW4gc2V0ZnJhbWVyYXRlKCkgaW4gdGhlIHdhdmUgbW9kdWxlLCBub24taW50ZWdyYWwgZnJhbWUgcmF0ZXMKKyAgYXJlIHJvdW5kZWQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlci4KKworLSBJc3N1ZSAjODc5NzogdXJsbGliMiBkb2VzIGEgcmV0cnkgZm9yIEJhc2ljIEF1dGhlbnRpY2F0aW9uIGZhaWx1cmUgaW5zdGVhZCBvZgorICBmYWxsaW5nIGludG8gcmVjdXJzaW9uLgorCistIElzc3VlICMxMTk0MjIyOiBlbWFpbC51dGlscy5wYXJzZWRhdGUgbm93IHJldHVybnMgUkZDMjgyMiBjb21wbGlhbnQgZm91cgorICBjaGFyYWN0ZXIgeWVhcnMgZXZlbiBpZiB0aGUgbWVzc2FnZSBjb250YWlucyBSRkM4MjIgdHdvIGNoYXJhY3RlciB5ZWFycy4KKworLSBJc3N1ZSAjODc1MDogRml4ZWQgTXV0YWJsZVNldCdzIG1ldGhvZHMgdG8gY29ycmVjdGx5IGhhbmRsZSByZWZsZXhpdmUKKyAgb3BlcmF0aW9ucyBvbiBpdHMgc2VsZiwgbmFtZWx5IHggLT0geCBhbmQgeCBePSB4LgorCistIElzc3VlICM5MTI5OiBzbXRwZC5weSBpcyB2dWxuZXJhYmxlIHRvIERvUyBhdHRhY2tzIGRlcml2aW5nIGZyb20gbWlzc2luZyBlcnJvcgorICBoYW5kbGluZyB3aGVuIGFjY2VwdGluZyBhIG5ldyBjb25uZWN0aW9uLgorCistIElzc3VlICM5NjAxOiBmdHBsaWIgbm93IHByb3ZpZGVzIGEgd29ya2Fyb3VuZCBmb3Igbm9uLWNvbXBsaWFudAorICBpbXBsZW1lbnRhdGlvbnMgc3VjaCBhcyBJSVMgc2hpcHBlZCB3aXRoIFdpbmRvd3Mgc2VydmVyIDIwMDMgcmV0dXJuaW5nIGludmFsaWQKKyAgcmVzcG9uc2UgY29kZXMgZm9yIE1LRCBhbmQgUFdEIGNvbW1hbmRzLgorCistIElzc3VlICM2NTg3NDk6IGFzeW5jb3JlJ3MgY29ubmVjdCgpIG1ldGhvZCBub3cgY29ycmVjdGx5IGludGVycHJldHMgd2luc29jaworICBlcnJvcnMuCisKKy0gSXNzdWUgIzk1MDE6IEZpeGVkIGxvZ2dpbmcgcmVncmVzc2lvbnMgaW4gY2xlYW51cCBjb2RlLgorCistIEZpeCBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSB0byBza2lwIG1ldGhvZHMgaW5oZXJpdGVkIGZyb20gb2JqZWN0LgorCistIElzc3VlICM5NTcyOiBJbXBvcnRsaWIgc2hvdWxkIG5vdCByYWlzZSBhbiBleGNlcHRpb24gaWYgYSBkaXJlY3RvcnkgaXQgdGhvdWdodAorICBpdCBuZWVkZWQgdG8gY3JlYXRlIHdhcyBkb25lIGNvbmN1cnJlbnRseSBieSBhbm90aGVyIHByb2Nlc3MuCisKKy0gSXNzdWUgIzk2MTc6IFNpZ25hbHMgcmVjZWl2ZWQgZHVyaW5nIGEgbG93LWxldmVsIHdyaXRlIG9wZXJhdGlvbiBhcmVuJ3QKKyAgaWdub3JlZCBieSB0aGUgYnVmZmVyZWQgSU8gbGF5ZXIgYW55bW9yZS4KKworLSBJc3N1ZSAjODQzNTkwOiBNYWtlICJtYWNpbnRvc2giIGFuIGFsaWFzIHRvIHRoZSAibWFjX3JvbWFuIiBlbmNvZGluZy4KKworLSBDcmVhdGUgb3MuZnNkZWNvZGUoKTogZGVjb2RlIGZyb20gdGhlIGZpbGVzeXN0ZW0gZW5jb2Rpbmcgd2l0aCBzdXJyb2dhdGVlc2NhcGUKKyAgZXJyb3IgaGFuZGxlciwgb3Igc3RyaWN0IGVycm9yIGhhbmRsZXIgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMzQ4ODogUHJvdmlkZSBjb252ZW5pZW50IHNob3J0aGFuZCBmdW5jdGlvbnMgYGBnemlwLmNvbXByZXNzYGAgYW5kCisgIGBgZ3ppcC5kZWNvbXByZXNzYGAuICBPcmlnaW5hbCBwYXRjaCBieSBBbmFuZCBCLiBQaWxsYWkuCisKKy0gSXNzdWUgIzg4MDc6IHBvcGxpYi5QT1AzX1NTTCBjbGFzcyBub3cgYWNjZXB0cyBhIGNvbnRleHQgcGFyYW1ldGVyLCB3aGljaCBpcyBhCisgIHNzbC5TU0xDb250ZXh0IG9iamVjdCBhbGxvd2luZyBidW5kbGluZyBTU0wgY29uZmlndXJhdGlvbiBvcHRpb25zLAorICBjZXJ0aWZpY2F0ZXMgYW5kIHByaXZhdGUga2V5cyBpbnRvIGEgc2luZ2xlIChwb3RlbnRpYWxseSBsb25nLWxpdmVkKQorICBzdHJ1Y3R1cmUuCisKKy0gSXNzdWUgIzg4NjY6IHBhcmFtZXRlcnMgcGFzc2VkIHRvIHNvY2tldC5nZXRhZGRyaW5mbyBjYW4gbm93IGJlIHNwZWNpZmllZCBhcworICBzaW5nbGUga2V5d29yZCBhcmd1bWVudHMuCisKKy0gQWRkcmVzcyBYWFggY29tbWVudCBpbiBkaXMucHkgYnkgaGF2aW5nIGluc3BlY3QucHkgcHJlZmVyIHRvIHJldXNlIHRoZSBkaXMucHkKKyAgY29tcGlsZXIgZmxhZyB2YWx1ZXMgb3ZlciBkZWZpbmluZyBpdHMgb3duLgorCistIElzc3VlICM5MTQ3OiBBZGRlZCBkaXMuY29kZV9pbmZvKCkgd2hpY2ggaXMgc2ltaWxhciB0byBzaG93X2NvZGUoKSBidXQgcmV0dXJucworICBmb3JtYXR0ZWQgY29kZSBpbmZvcm1hdGlvbiBpbiBhIHN0cmluZyByYXRoZXIgdGhhbiBkaXNwbGF5aW5nIG9uIHNjcmVlbi4KKworLSBJc3N1ZSAjOTU2NzogZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyIG5vdyBhZGRzIGEgX193cmFwcGVkX18gYXR0cmlidXRlCisgIHBvaW50aW5nIHRvIHRoZSBvcmlnaW5hbCBjYWxsYWJsZS4KKworLSBJc3N1ZSAjMzQ0NTogZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyIG5vdyB0b2xlcmF0ZXMgbWlzc2luZyBhdHRyaWJ1dGVzIG9uCisgIHdyYXBwZWQgY2FsbGFibGVzLgorCistIElzc3VlICM1ODY3OiBBZGQgYWJjLmFic3RyYWN0Y2xhc3NtZXRob2QgYW5kIGFiYy5hYnN0cmFjdHN0YXRpY21ldGhvZC4KKworLSBJc3N1ZSAjOTYwNTogcG9zaXguZ2V0bG9naW4oKSBkZWNvZGVzIHRoZSB1c2VybmFtZSB3aXRoIGZpbGUgZmlsZXN5c3RlbQorICBlbmNvZGluZyBhbmQgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIuIFBhdGNoIHdyaXR0ZW4gYnkgRGF2aWQgV2F0c29uLgorCistIElzc3VlICM5NjA0OiBwb3NpeC5pbml0Z3JvdXBzKCkgZW5jb2RlcyB0aGUgdXNlcm5hbWUgdXNpbmcgdGhlIGZpbGV5c3RlbQorICBlbmNvZGluZyBhbmQgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIuIFBhdGNoIHdyaXR0ZW4gYnkgRGF2aWQgV2F0c29uLgorCistIElzc3VlICM5NjAzOiBwb3NpeC50dHluYW1lKCkgYW5kIHBvc2l4LmN0ZXJtaWQoKSBkZWNvZGUgdGhlIHRlcm1pbmFsIG5hbWUKKyAgdXNpbmcgdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgYW5kIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyLiBQYXRjaCB3cml0dGVuCisgIGJ5IERhdmlkIFdhdHNvbi4KKworLSBJc3N1ZSAjNzY0NzogVGhlIHBvc2l4IG1vZHVsZSBub3cgaGFzIHRoZSBTVF9SRE9OTFkgYW5kIFNUX05PU1VJRCBjb25zdGFudHMsCisgIGZvciB1c2Ugd2l0aCB0aGUgc3RhdHZmcygpIGZ1bmN0aW9uLiAgUGF0Y2ggYnkgQWRhbSBKYWNrc29uLgorCistIElzc3VlICM4Njg4OiBNQU5JRkVTVCBmaWxlcyBjcmVhdGVkIGJ5IGRpc3R1dGlscyBub3cgaW5jbHVkZSBhIG1hZ2ljIGNvbW1lbnQKKyAgaW5kaWNhdGluZyB0aGV5IGFyZSBnZW5lcmF0ZWQuICBNYW51YWxseSBtYWludGFpbmVkIE1BTklGRVNUcyB3aXRob3V0IHRoaXMKKyAgbWFya2VyIHdpbGwgbm90IGJlIG92ZXJ3cml0dGVuIG9yIHJlbW92ZWQuCisKKy0gSXNzdWUgIzc0Njc6IHdoZW4gcmVhZGluZyBhIGZpbGUgZnJvbSBhIFpJUCBhcmNoaXZlLCBpdHMgQ1JDIGlzIGNoZWNrZWQgYW5kIGEKKyAgQmFkWmlwZmlsZSBlcnJvciBpcyByYWlzZWQgaWYgaXQgZG9lc24ndCBtYXRjaCAoYXMgdXNlZCB0byBiZSB0aGUgY2FzZSBpbgorICBQeXRob24gMi41IGFuZCBlYXJsaWVyKS4KKworLSBJc3N1ZSAjOTU1MDogYSBCdWZmZXJlZFJlYWRlciBjb3VsZCBpc3N1ZSBhbiBhZGRpdGlvbmFsIHJlYWQgd2hlbiB0aGUgb3JpZ2luYWwKKyAgcmVhZCByZXF1ZXN0IGhhZCBiZWVuIHNhdGlzZmllZCwgd2hpY2ggY291bGQgYmxvY2sgaW5kZWZpbml0ZWx5IHdoZW4gdGhlCisgIHVuZGVybHlpbmcgcmF3IElPIGNoYW5uZWwgd2FzIGUuZy4gYSBzb2NrZXQuICBSZXBvcnQgYW5kIG9yaWdpbmFsIHBhdGNoIGJ5CisgIEphc29uIFYuIE1pbGxlci4KKworLSBJc3N1ZSAjMzc1NzogdGhyZWFkLWxvY2FsIG9iamVjdHMgbm93IHN1cHBvcnQgY3ljbGljIGdhcmJhZ2UgY29sbGVjdGlvbi4KKyAgVGhyZWFkLWxvY2FsIG9iamVjdHMgaW52b2x2ZWQgaW4gcmVmZXJlbmNlIGN5Y2xlcyB3aWxsIGJlIGRlYWxsb2NhdGVkIHRpbWVseQorICBieSB0aGUgY3ljbGljIEdDLCBldmVuIGlmIHRoZSB1bmRlcmx5aW5nIHRocmVhZCBpcyBzdGlsbCBydW5uaW5nLgorCistIElzc3VlICM5NDUyOiBBZGQgcmVhZF9maWxlLCByZWFkX3N0cmluZywgYW5kIHJlYWRfZGljdCB0byB0aGUgY29uZmlncGFyc2VyCisgIEFQSTsgbmV3IHNvdXJjZSBhdHRyaWJ1dGUgdG8gZXhjZXB0aW9ucy4KKworLSBJc3N1ZSAjNjIzMTogRml4IHhtbC5ldHJlZS5FbGVtZW50SW5jbHVkZSB0byBpbmNsdWRlIHRoZSB0YWlsIG9mIHRoZSBjdXJyZW50CisgIG5vZGUuCisKKy0gSXNzdWUgIzgwNDc6IEZpeCB0aGUgeG1sLmV0cmVlIHNlcmlhbGl6ZXIgdG8gcmV0dXJuIGJ5dGVzIGJ5IGRlZmF1bHQuICBVc2UKKyAgYGBlbmNvZGluZz0idW5pY29kZSJgYCB0byBnZW5lcmF0ZSBhIFVuaWNvZGUgc3RyaW5nLgorCistIElzc3VlICM4MjgwOiB1cmxsaWIyJ3MgUmVxdWVzdCBtZXRob2Qgd2lsbCByZW1vdmUgZnJhZ21lbnRzIGluIHRoZSB1cmwuICBUaGlzCisgIGlzIGhvdyBpdCBpcyBzdXBwb3NlZCB0byB3b3JrLCB3Z2V0IGFuZCBjdXJsIGRvIHRoZSBzYW1lLiAgUHJldmlvdXMgYmVoYXZpb3IKKyAgd2FzIHdyb25nLgorCistIElzc3VlICM2NjgzOiBGb3IgU01UUCBsb2dpbnMgd2Ugbm93IHRyeSBhbGwgYXV0aGVudGljYXRpb24gbWV0aG9kcyBhZHZlcnRpc2VkCisgIGJ5IHRoZSBzZXJ2ZXIuICBNYW55IHNlcnZlcnMgYXJlIGJ1Z2d5IGFuZCBhZHZlcnRpc2UgYXV0aGVudGljYXRpb24gbWV0aG9kcworICB0aGV5IGRvIG5vdCBzdXBwb3J0IGluIHJlYWxpdHkuCisKKy0gSXNzdWUgIzg4MTQ6IGZ1bmN0aW9uIGFubm90YXRpb25zICh0aGUgYGBfX2Fubm90YXRpb25zX19gYCBhdHRyaWJ1dGUpIGFyZSBub3cKKyAgaW5jbHVkZWQgaW4gdGhlIHNldCBvZiBhdHRyaWJ1dGVzIGNvcGllZCBieSBkZWZhdWx0IGJ5IGZ1bmN0b29scy53cmFwcyBhbmQKKyAgZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyLiAgUGF0Y2ggYnkgVGVycmVuY2UgQ29sZS4KKworLSBJc3N1ZSAjMjk0NDogYXN5bmNvcmUgZG9lc24ndCBoYW5kbGUgY29ubmVjdGlvbiByZWZ1c2VkIGNvcnJlY3RseS4KKworLSBJc3N1ZSAjNDE4NDogUHJpdmF0ZSBhdHRyaWJ1dGVzIG9uIHNtdHBkLlNNVFBDaGFubmVsIG1hZGUgcHVibGljIGFuZCBkZXByZWNhdGUKKyAgdGhlIHByaXZhdGUgYXR0cmlidXRlcy4gQWRkIHRlc3RzIGZvciBzbXRwZCBtb2R1bGUuCisKKy0gSXNzdWUgIzMxOTY6IGVtYWlsIGhlYWRlciBkZWNvZGluZyBpcyBub3cgZm9yZ2l2aW5nIGlmIGFuIFJGQzIwNDcgZW5jb2RlZCB3b3JkCisgIGVuY29kZWQgaW4gYmFzZTY0IGlzIGxhY2tpbmcgcGFkZGluZy4KKworLSBJc3N1ZSAjOTQ0NDogQXJncGFyc2Ugbm93IHVzZXMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgcHJlZml4X2NoYXJzIGFzIHRoZSBvcHRpb24KKyAgY2hhcmFjdGVyIGZvciB0aGUgYWRkZWQgJ2gvaGVscCcgb3B0aW9uIGlmIHByZWZpeF9jaGFycyBkb2VzIG5vdCBjb250YWluIGEKKyAgJy0nLCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IuCisKKy0gSXNzdWUgIzczNzI6IEZpeCBwc3RhdHMgcmVncmVzc2lvbiB3aGVuIHN0cmlwcGluZyBwYXRocyBmcm9tIHByb2ZpbGUgZGF0YQorICBnZW5lcmF0ZWQgd2l0aCB0aGUgcHJvZmlsZSBtb2R1bGUuCisKKy0gSXNzdWUgIzk0Mjg6IEZpeCBydW5uaW5nIHNjcmlwdHMgd2l0aCB0aGUgcHJvZmlsZS9jUHJvZmlsZSBtb2R1bGVzIGZyb20gdGhlCisgIGNvbW1hbmQgbGluZS4KKworLSBJc3N1ZSAjNzc4MTogRml4IHJlc3RyaWN0aW5nIHN0YXRzIGJ5IGVudHJ5IGNvdW50cyBpbiB0aGUgcHN0YXRzIGludGVyYWN0aXZlCisgIGJyb3dzZXIuCisKKy0gSXNzdWUgIzkyMDk6IERvIG5vdCBjcmFzaCBpbiB0aGUgcHN0YXRzIGludGVyYWN0aXZlIGJyb3dzZXIgb24gaW52YWxpZCByZWd1bGFyCisgIGV4cHJlc3Npb25zLgorCistIFVwZGF0ZSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCB0byBtYXRjaCB0aGUgaW1wbGVtZW50YXRpb24gaW4gUHkyLjcgKGJhc2VkIG9uCisgIGxpc3RzIGluc3RlYWQgb2Ygd2Vha2x5IHJlZmVyZW5jZWQgTGluayBvYmplY3RzKS4KKworLSBJc3N1ZSAjODM5NzogUmFpc2UgYW4gZXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIG1peCBpdGVyYXRpb24gYW5kIHJlZ3VsYXIgcmVhZHMKKyAgb24gYSBCWjJGaWxlIG9iamVjdCwgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIGluY29ycmVjdCByZXN1bHRzLgorCistIElzc3VlICM5NDQ4OiBGaXggYSBsZWFrIG9mIE9TIHJlc291cmNlcyAobXV0ZXhlcyBvciBzZW1hcGhvcmVzKSB3aGVuCisgIHJlLWluaXRpYWxpemluZyBhIGJ1ZmZlcmVkIElPIG9iamVjdCBieSBjYWxsaW5nIGl0cyBgYF9faW5pdF9fYGAgbWV0aG9kLgorCistIElzc3VlICMxNzEzOiBGaXggb3MucGF0aC5pc21vdW50KCksIHdoaWNoIHJldHVybmVkIHRydWUgZm9yIHN5bWJvbGljIGxpbmtzCisgIGFjcm9zcyBkZXZpY2VzLgorCistIElzc3VlICM4ODI2OiBQcm9wZXJseSBsb2FkIG9sZC1zdHlsZSAiZXhwaXJlcyIgYXR0cmlidXRlIGluIGh0dHAuY29va2llcy4KKworLSBJc3N1ZSAjMTY5MDEwMzogRml4IGluaXRpYWwgbmFtZXNwYWNlIGZvciBjb2RlIHJ1biB3aXRoIHRyYWNlLm1haW4oKS4KKworLSBJc3N1ZSAjNzM5NTogRml4IHRyYWNlYmFja3MgaW4gcHN0YXRzIGludGVyYWN0aXZlIGJyb3dzZXIuCisKKy0gSXNzdWUgIzgyMzA6IEZpeCBMaWIvdGVzdC9zb3J0cGVyZi5weS4KKworLSBJc3N1ZSAjODYyMDogd2hlbiBhIGNtZC5DbWQoKSBpcyBmZWQgaW5wdXQgdGhhdCByZWFjaGVzIEVPRiB3aXRob3V0IGEgZmluYWwKKyAgbmV3bGluZSwgaXQgbm8gbG9uZ2VyIHRydW5jYXRlcyB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIGxhc3QgY29tbWFuZCBsaW5lLgorCistIElzc3VlICM1MTQ2OiBIYW5kbGUgVUlEIFRIUkVBRCBjb21tYW5kIGNvcnJlY3RseSBpbiBpbWFwbGliLgorCistIElzc3VlICM1MTQ3OiBGaXggdGhlIGhlYWRlciBnZW5lcmF0ZWQgZm9yIGNvb2tpZSBmaWxlcyB3cml0dGVuIGJ5CisgIGh0dHAuY29va2llamFyLk1vemlsbGFDb29raWVKYXIuCisKKy0gSXNzdWUgIzgxOTg6IEluIHB5ZG9jLCBvdXRwdXQgYWxsIGhlbHAgdGV4dCB0byB0aGUgY29ycmVjdCBzdHJlYW0gd2hlbgorICBzeXMuc3Rkb3V0IGlzIHJlYXNzaWduZWQuCisKKy0gSXNzdWUgIzc5MDk6IERvIG5vdCB0b3VjaCBwYXRocyB3aXRoIHRoZSBzcGVjaWFsIHByZWZpeGVzIGBgXFwuXGBgIG9yIGBgXFw/XGBgCisgIGluIG50cGF0aC5ub3JtcGF0aCgpLgorCistIElzc3VlICMxMjg2OiBBbGxvdyB1c2luZyBmaWxlaW5wdXQuRmlsZUlucHV0IGFzIGEgY29udGV4dCBtYW5hZ2VyLgorCistIEFkZCBscnVfY2FjaGUoKSBkZWNvcmF0b3IgdG8gdGhlIGZ1bmN0b29scyBtb2R1bGUuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIEZpeCBgYFRvb2xzL3NjcmlwdHMvY2hlY2tweWMucHlgYCBhZnRlciBQRVAgMzE0Ny4KKworLSBJc3N1ZSAjODg2NzogRml4IGBgVG9vbHMvc2NyaXB0cy9zZXJ2ZS5weWBgIHRvIHdvcmsgd2l0aCBmaWxlcyBjb250YWluaW5nCisgIG5vbi1BU0NJSSBjb250ZW50LgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjOTYwMTogUHJvdmlkZSBhIHRlc3QgY2FzZSBmb3IgZnRwbGliLnBhcnNlMjU3LgorCistIElzc3VlICM4ODU3OiBQcm92aWRlIGEgdGVzdCBjYXNlIGZvciBzb2NrZXQuZ2V0YWRkcmluZm8uCisKKy0gSXNzdWUgIzc1NjQ6IFNraXAgdGVzdF9pb2N0bCBpZiBhbm90aGVyIHByb2Nlc3MgaXMgYXR0YWNoZWQgdG8gL2Rldi90dHkuCisKKy0gSXNzdWUgIzg0MzM6IEZpeCB0ZXN0X2N1cnNlcyBmYWlsdXJlIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgbmN1cnNlcy4KKworLSBJc3N1ZSAjOTQ5NjogUHJvdmlkZSBhIHRlc3Qgc3VpdGUgZm9yIHRoZSBybGNvbXBsZXRlciBtb2R1bGUuICBQYXRjaCBieQorICBNaWNoZWxlIE9ycsO5LgorCistIElzc3VlICM4Njg3OiBwcm92aWRlIGEgdGVzdCBzdWl0ZSBmb3Igc2NoZWQucHkgbW9kdWxlLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTMwMzQzNDogR2VuZXJhdGUgWklQIGZpbGUgY29udGFpbmluZyBhbGwgUERCcy4KKworLSBJc3N1ZSAjOTE5MzogUEVQIDMxNDkgaXMgYWNjZXB0ZWQuCisKKy0gSXNzdWUgIzMxMDE6IEhlbHBlciBmdW5jdGlvbnMgX2FkZF9vbmVfdG9faW5kZXhfQygpIGFuZCBfYWRkX29uZV90b19pbmRleF9GKCkKKyAgYmVjb21lIF9QeV9hZGRfb25lX3RvX2luZGV4X0MoKSBhbmQgX1B5X2FkZF9vbmVfdG9faW5kZXhfRigpLCByZXNwZWN0aXZlbHkuCisKKy0gSXNzdWUgIzk3MDA6IGRlZmluZSBIQVZFX0JST0tFTl9QT1NJWF9TRU1BUEhPUkVTIHVuZGVyIEFJWCA2LnguICBQYXRjaCBieQorICBTw6liYXN0aWVuIFNhYmzDqS4KKworLSBEb24ndCBydW4gcGdlbiB0d2ljZSB3aGVuIHVzaW5nIG1ha2UgLWouCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIEFscGhhIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMDEtQXVnLTIwMTAqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM4OTkxOiBjb252ZXJ0YnVmZmVyKCkgcmVqZWN0cyBkaXNjb250aWdpb3VzIGJ1ZmZlcnMuCisKKy0gSXNzdWUgIzc2MTY6IEZpeCBjb3B5aW5nIG9mIG92ZXJsYXBwaW5nIG1lbW9yeXZpZXcgc2xpY2VzIHdpdGggdGhlIEludGVsCisgIGNvbXBpbGVyLgorCistIElzc3VlICM4NDEzOiBzdHJ1Y3RzZXF1ZW5jZSBub3cgc3ViY2xhc3NlcyB0dXBsZS4KKworLSBJc3N1ZSAjODI3MTogZHVyaW5nIHRoZSBkZWNvZGluZyBvZiBhbiBpbnZhbGlkIFVURi04IGJ5dGUgc2VxdWVuY2UsIG9ubHkgdGhlCisgIHN0YXJ0IGJ5dGUgYW5kIHRoZSBjb250aW51YXRpb24gYnl0ZShzKSBhcmUgbm93IGNvbnNpZGVyZWQgaW52YWxpZCwgaW5zdGVhZCBvZgorICB0aGUgbnVtYmVyIG9mIGJ5dGVzIHNwZWNpZmllZCBieSB0aGUgc3RhcnQgYnl0ZS4gIEUuZy46CisgICdceGYxXHg4MEFCJy5kZWNvZGUoJ3V0Zi04JywgJ3JlcGxhY2UnKSBub3cgcmV0dXJucyB1J1x1ZmZmZEFCJyBhbmQgcmVwbGFjZXMKKyAgd2l0aCBVK0ZGRkQgb25seSB0aGUgc3RhcnQgYnl0ZSAoJ1x4ZjEnKSBhbmQgdGhlIGNvbnRpbnVhdGlvbiBieXRlICgnXHg4MCcpCisgIGV2ZW4gaWYgJ1x4ZjEnIGlzIHRoZSBzdGFydCBieXRlIG9mIGEgNC1ieXRlcyBzZXF1ZW5jZS4gIFByZXZpb3VzIHZlcnNpb25zCisgIHJldHVybmVkIGEgc2luZ2xlIHUnXHVmZmZkJy4KKworLSBJc3N1ZSAjOTAxMTogQSBuZWdhdGVkIGltYWdpbmFyeSBsaXRlcmFsIChlLmcuLCAiLTdqIikgbm93IGhhcyByZWFsIHBhcnQgLTAuMAorICByYXRoZXIgdGhhbiAwLjAuICBTbyAiLTdqIiBpcyBub3cgZXhhY3RseSBlcXVpdmFsZW50IHRvICItKDdqKSIuCisKKy0gQmUgbW9yZSBzcGVjaWZpYyBpbiBlcnJvciBtZXNzYWdlcyBhYm91dCBwb3NpdGlvbmFsIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjODk0OTogInoiIGZvcm1hdCBvZiBQeUFyZ19QYXJzZSooKSBmdW5jdGlvbnMgZG9lc24ndCBhY2NlcHQgYnl0ZXMKKyAgb2JqZWN0cywgYXMgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICM2NTQzOiBXcml0ZSB0aGUgdHJhY2ViYWNrIGluIHRoZSB0ZXJtaW5hbCBlbmNvZGluZyBpbnN0ZWFkIG9mIHV0Zi04LgorICBGaXggdGhlIGVuY29kaW5nIG9mIHRoZSBtb2R1bGVzIGZpbGVuYW1lLiAgUGF0Y2ggd3JpdHRlbiBieSBBbWF1cnkgRm9yZ2VvdAorICBkJ0FyYy4KKworLSBJc3N1ZSAjOTAxMTogUmVtb3ZlIGJ1Z2d5IGFuZCB1bm5lY2Vzc2FyeSAoaW4gMy54KSBTVC0+QVNUIGNvbXBpbGF0aW9uIGNvZGUKKyAgZGVhbGluZyB3aXRoIHVuYXJ5IG1pbnVzIGFwcGxpZWQgdG8gYSBjb25zdGFudC4gIFRoZSByZW1vdmVkIGNvZGUgd2FzIG11dGF0aW5nCisgIHRoZSBTVCwgY2F1c2luZyBhIHNlY29uZCBjb21waWxhdGlvbiB0byBmYWlsLgorCistIElzc3VlICM4NTA5OTc6IG1iY3MgZW5jb2RpbmcgKFdpbmRvd3Mgb25seSkgaGFuZGxlcyBlcnJvcnMgYXJndW1lbnQ6IHN0cmljdAorICBtb2RlIHJhaXNlcyB1bmljb2RlIGVycm9ycy4gIFRoZSBlbmNvZGVyIG9ubHkgc3VwcG9ydHMgInN0cmljdCIgYW5kICJyZXBsYWNlIgorICBlcnJvciBoYW5kbGVycywgdGhlIGRlY29kZXIgb25seSBzdXBwb3J0cyAic3RyaWN0IiBhbmQgImlnbm9yZSIgZXJyb3IKKyAgaGFuZGxlcnMuICBQYXRjaCB3cml0dGVuIGJ5IE1hcmsgSGFtbW9uZC4KKworLSBJc3N1ZSAjODg1MDogUmVtb3ZlICJ3IiBhbmQgIncjIiBmb3JtYXRzIGZyb20gUHlBcmdfUGFyc2UqKCkgZnVuY3Rpb25zLCB1c2UKKyAgIncqIiBmb3JtYXQgaW5zdGVhZC4gQWRkIHRlc3RzIGZvciAidyoiIGZvcm1hdC4KKworLSBJc3N1ZSAjODU5MjogUHlBcmdfUGFyc2UqKCkgZnVuY3Rpb25zIHJhaXNlIGEgVHlwZUVycm9yIGZvciAieSIsICJ1IiBhbmQgIloiCisgIGZvcm1hdHMgaWYgdGhlIHN0cmluZyBjb250YWlucyBhIG51bGwgYnl0ZS9jaGFyYWN0ZXIuICBXcml0ZSB1bml0IHRlc3RzIGZvcgorICBzdHJpbmcgZm9ybWF0cy4KKworLSBJc3N1ZSAjNzQ5MDogVG8gZmFjaWxpdGF0ZSBzaGFyaW5nIG9mIGRvY3Rlc3RzIGJldHdlZW4gMi54IGFuZCAzLnggdGVzdAorICBzdWl0ZXMsIHRoZSBJR05PUkVfRVhDRVBUSU9OX0RFVEFJTCBkaXJlY3RpdmUgbm93IGFsc28gaWdub3JlcyB0aGUgbW9kdWxlCisgIGxvY2F0aW9uIG9mIHRoZSByYWlzZWQgZXhjZXB0aW9uLgorCistIElzc3VlICM4OTY5OiBPbiBXaW5kb3dzLCB1c2UgbWJjcyBjb2RlYyBpbiBzdHJpY3QgbW9kZSB0byBlbmNvZGUgYW5kIGRlY29kZQorICBmaWxlbmFtZXMgYW5kIGVuYWJsZSBvcy5mc2VuY29kZSgpLgorCistIElzc3VlICM5MDU4OiBSZW1vdmUgYXNzZXJ0aW9ucyBhYm91dCBJTlRfTUFYIGluIFVuaWNvZGVEZWNvZGVFcnJvci4KKworLSBJc3N1ZSAjODk0MTogRGVjb2RpbmcgYmlnIGVuZGlhbiBVVEYtMzIgZGF0YSBpbiBVQ1MtMiBidWlsZHMgY291bGQgY3Jhc2ggdGhlCisgIGludGVycHJldGVyIHdpdGggY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUgKGhpZ2hlciB0aGFuCisgIDB4MTAwMDApLgorCistIElzc3VlICM4OTUwOiAoU2VlIGFsc28gaXNzdWUgIzUwODApLiAgUHlfQXJnUGFyc2UqKCkgZnVuY3Rpb25zIG5vdyByYWlzZQorICBUeXBlRXJyb3IgaW5zdGVhZCBvZiBnaXZpbmcgYSBEZXByZWNhdGlvbldhcm5pbmcgd2hlbiBhIGZsb2F0IGlzIHBhcnNlZCB1c2luZworICB0aGUgJ0wnIGNvZGUgKGZvciBsb25nIGxvbmcpLiAgKEFsbCBvdGhlciBpbnRlZ2VyIGNvZGVzIGFscmVhZHkgcmFpc2UKKyAgVHlwZUVycm9yIGluIHRoaXMgY2FzZS4pCisKKy0gSXNzdWUgIzg5MjI6IE5vcm1hbGl6ZSB0aGUgZW5jb2RpbmcgbmFtZSBpbiBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKCkgdG8KKyAgZW5hYmxlIHNob3J0Y3V0cyBmb3IgdXBwZXIgY2FzZSBlbmNvZGluZyBuYW1lLiBBZGQgYWxzbyBhIHNob3J0Y3V0IGZvcgorICAiaXNvLTg4NTktMSIgaW4gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZygpIGFuZCBQeVVuaWNvZGVfRGVjb2RlKCkuCisKKy0gSXNzdWUgIzg4Mzg6IFJlbW92ZSBjb2RlY3MuY2hhcmJ1ZmZlcl9lbmNvZGUoKSBmdW5jdGlvbi4gIFRoZSBidWZmZXIgcHJvdG9jb2wKKyAgZG9lc24ndCBzdXBwb3J0ICJjaGFyIGJ1ZmZlciIgYW55bW9yZSBpbiBQeXRob24gMy4KKworLSBJc3N1ZSAjODMzOTogUmVtb3ZlICJ0IyIgZm9ybWF0IG9mIFB5QXJnX1BhcnNlKigpIGZ1bmN0aW9ucywgdXNlICJzIyIgb3IgInMqIgorICBpbnN0ZWFkLiAgY29kZWNzLmNoYXJidWZmZXJfZW5jb2RlKCkgbm93IGFjY2VwdHMgbW9kaWZpYWJsZSBidWZmZXIgb2JqZWN0cworICBsaWtlIGJ5dGVhcnJheS4KKworLSBJc3N1ZSAjODgzNzogUmVtb3ZlICJPPyIgZm9ybWF0IG9mIFB5QXJnX1BhcnNlKigpIGZ1bmN0aW9ucy4gIFRoZSBmb3JtYXQgaXMgbm8KKyAgdXNlZCBhbnltb3JlIGFuZCBpdCB3YXMgbmV2ZXIgZG9jdW1lbnRlZC4KKworLSBJbiBzdHIuZm9ybWF0KCksIHJhaXNlIGEgVmFsdWVFcnJvciB3aGVuIGluZGV4ZXMgdG8gYXJndW1lbnRzIGFyZSB0b28gbGFyZ2UuCisKKy0gSXNzdWUgIzI4NDQ6IE1ha2UgaW50KCc0MicsIG4pIGNvbnNpc3RlbnRseSByYWlzZSBWYWx1ZUVycm9yIGZvciBpbnZhbGlkCisgIGludGVnZXJzIG4gKGluY2x1ZGluZyBuID0gLTkwOSkuCisKKy0gSXNzdWUgIzgxODg6IEludHJvZHVjZSBhIG5ldyBzY2hlbWUgZm9yIGNvbXB1dGluZyBoYXNoZXMgb2YgbnVtYmVycyAoaW5zdGFuY2VzCisgIG9mIGludCwgZmxvYXQsIGNvbXBsZXgsIGRlY2ltYWwuRGVjaW1hbCBhbmQgZnJhY3Rpb25zLkZyYWN0aW9uKSB0aGF0IG1ha2VzIGl0CisgIGVhc3kgdG8gbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IGhhc2goeCkgPT0gaGFzaCh5KSB3aGVuZXZlciB4IGFuZCB5IGhhdmUKKyAgZXF1YWwgdmFsdWUuCisKKy0gSXNzdWUgIzg3NDg6IEZpeCB0d28gaXNzdWVzIHdpdGggY29tcGFyaXNvbnMgYmV0d2VlbiBjb21wbGV4IGFuZCBpbnRlZ2VyCisgIG9iamVjdHMuICAoMSkgVGhlIGNvbXBhcmlzb24gY291bGQgaW5jb3JyZWN0bHkgcmV0dXJuIFRydWUgaW4gc29tZSBjYXNlcworICAoMioqNTMrMSA9PSBjb21wbGV4KDIqKjUzKSA9PSAyKio1MyksIGJyZWFraW5nIHRyYW5zaXRpdml0eSBvZiBlcXVhbGl0eS4KKyAgKDIpIFRoZSBjb21wYXJpc29uIHJhaXNlZCBhbiBPdmVyZmxvd0Vycm9yIGZvciBsYXJnZSBpbnRlZ2VycywgbGVhZGluZyB0bworICB1bnByZWRpY3RhYmxlIGV4Y2VwdGlvbnMgd2hlbiBjb21iaW5pbmcgaW50ZWdlcnMgYW5kIGNvbXBsZXggb2JqZWN0cyBpbiBzZXRzCisgIG9yIGRpY3RzLgorCistIElzc3VlICM4NzY2OiBJbml0aWFsaXplIF93YXJuaW5ncyBtb2R1bGUgYmVmb3JlIGltcG9ydGluZyB0aGUgZmlyc3QgbW9kdWxlLgorICBGaXggYSBjcmFzaCBpZiBhbiBlbXB0eSBkaXJlY3RvcnkgY2FsbGVkICJlbmNvZGluZ3MiIGV4aXN0cyBpbiBzeXMucGF0aC4KKworLSBJc3N1ZSAjODU4OTogRGVjb2RlIFBZVEhPTldBUk5JTkdTIGVudmlyb25tZW50IHZhcmlhYmxlIHdpdGggdGhlIGZpbGUgc3lzdGVtCisgIGVuY29kaW5nIGFuZCBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlciBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcgdG8KKyAgYmUgY29uc2lzdGVudCB3aXRoIG9zLmVudmlyb24uICBBZGQgUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUoKSBmdW5jdGlvbi4KKworLSBQeU9iamVjdF9EdW1wKCkgZW5jb2RlcyB1bmljb2RlIG9iamVjdHMgdG8gdXRmOCB3aXRoIGJhY2tzbGFzaHJlcGxhY2UgKGluc3RlYWQKKyAgb2Ygc3RyaWN0KSBlcnJvciBoYW5kbGVyIHRvIGVzY2FwZSBzdXJyb2dhdGVzLgorCistIElzc3VlICM4NzE1OiBDcmVhdGUgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdCgpIGZ1bmN0aW9uOiBFbmNvZGUgYSBVbmljb2RlCisgIG9iamVjdCB0byBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIHdpdGggdGhlICJzdXJyb2dhdGVlc2NhcGUiIGVycm9yCisgIGhhbmRsZXIsIGFuZCByZXR1cm4gYnl0ZXMuICBJZiBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIGlzIG5vdCBzZXQsIGZhbGwKKyAgYmFjayB0byBVVEYtOC4KKworLSBFbmFibGUgc2hvcnRjdXRzIGZvciBjb21tb24gZW5jb2RpbmdzIGluIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKSBmb3IgYW55CisgIGVycm9yIGhhbmRsZXIsIG5vdCBvbmx5IHRoZSBkZWZhdWx0IGVycm9yIGhhbmRsZXIgKHN0cmljdCkuCisKKy0gSXNzdWUgIzg2MTA6IExvYWQgZmlsZSBzeXN0ZW0gY29kZWMgYXQgc3RhcnR1cCwgYW5kIGRpc3BsYXkgYSBmYXRhbCBlcnJvciBvbgorICBmYWlsdXJlLiAgU2V0IHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyB0byB1dGYtOCAoaW5zdGVhZCBvZiBOb25lKSBpZiBnZXR0aW5nCisgIHRoZSBsb2NhbGUgZW5jb2RpbmcgZmFpbGVkLCBvciBpZiBubF9sYW5naW5mbyhDT0RFU0VUKSBmdW5jdGlvbiBpcyBtaXNzaW5nLgorCistIFB5RmlsZV9Gcm9tRmQoKSB1c2VzIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoKSBpbnN0ZWFkIG9mCisgIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCkgdG8gc3VwcG9ydCBzdXJyb2dhdGVzIGluIHRoZSBmaWxlbmFtZSBhbmQgdXNlIHRoZSByaWdodAorICBlbmNvZGluZy4KKworLSBJc3N1ZSAjNzUwNzogUXVvdGUgIiEiIGluIHBpcGVzLnF1b3RlKCk7IGl0IGlzIHNwZWNpYWwgdG8gc29tZSBzaGVsbHMuCisKKy0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoKSB1c2VzIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyLgorCistIElzc3VlICM4NDE5OiBQcmV2ZW50IHRoZSBkaWN0IGNvbnN0cnVjdG9yIGZyb20gYWNjZXB0aW5nIG5vbi1zdHJpbmcga2V5d29yZAorICBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzgxMjQ6IFB5U3lzX1dyaXRlU3Rkb3V0KCkgYW5kIFB5U3lzX1dyaXRlU3RkZXJyKCkgZG9uJ3QgZXhlY3V0ZQorICBpbmRpcmVjdGx5IFB5dGhvbiBzaWduYWwgaGFuZGxlcnMgYW55bW9yZSBiZWNhdXNlIG15d3JpdGUoKSBpZ25vcmVzIGV4Y2VwdGlvbnMKKyAgKEtleWJvYXJkSW50ZXJydXB0KS4KKworLSBJc3N1ZSAjODA5MjogRml4IFB5VW5pY29kZV9FbmNvZGVVVEY4KCkgdG8gc3VwcG9ydCBlcnJvciBoYW5kbGVyIHByb2R1Y2luZworICB1bmljb2RlIHN0cmluZyAoZWcuIGJhY2tzbGFzaHJlcGxhY2UpLgorCistIElzc3VlICM4NDg1OiBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoKSBkb2Vzbid0IGFjY2VwdCBieXRlZWFycmF5IG9iamVjdHMKKyAgYW55bW9yZSwgeW91IGhhdmUgdG8gY29udmVydCB5b3VyIGJ5dGVhcnJheSBmaWxlbmFtZXMgdG8gYnl0ZXMuCisKKy0gSXNzdWUgIzczMzI6IFJlbW92ZSB0aGUgMTZLQiBzdGFjay1iYXNlZCBidWZmZXIgaW4KKyAgUHlNYXJzaGFsX1JlYWRMYXN0T2JqZWN0RnJvbUZpbGUsIHdoaWNoIGRvZXNuJ3QgYnJpbmcgYW55IG5vdGljZWFibGUgYmVuZWZpdAorICBjb21wYXJlZCB0byB0aGUgZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbiBmYWxsYmFjay4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzCisgIE5hdGFsaS4KKworLSBJc3N1ZSAjODQxNzogUmFpc2UgYW4gT3ZlcmZsb3dFcnJvciB3aGVuIGFuIGludGVnZXIgbGFyZ2VyIHRoYW4gc3lzLm1heHNpemUgaXMKKyAgcGFzc2VkIHRvIGJ5dGVzIG9yIGJ5dGVhcnJheS4KKworLSBJc3N1ZSAjNzMwMTogQWRkIGVudmlyb25tZW50IHZhcmlhYmxlICRQWVRIT05XQVJOSU5HUy4KKworLSBJc3N1ZSAjODMyOTogRG9uJ3QgcmV0dXJuIHRoZSBzYW1lIGxpc3RzIGZyb20gc2VsZWN0LnNlbGVjdCB3aGVuIG5vIGZkcyBhcmUKKyAgY2hhbmdlZC4KKworLSBJc3N1ZSAjODI1OTogMUwgPDwgKDIqKjMxKSBubyBsb25nZXIgcHJvZHVjZXMgYW4gJ291dHJhZ2VvdXMgc2hpZnQgZXJyb3InIG9uCisgIDY0LWJpdCBtYWNoaW5lcy4gIFRoZSBzaGlmdCBjb3VudCBmb3IgZWl0aGVyIGxlZnQgb3IgcmlnaHQgc2hpZnQgaXMgcGVybWl0dGVkCisgIHRvIGJlIHVwIHRvIHN5cy5tYXhzaXplLgorCistIEVuc3VyZSB0aGF0IHRva2VuaXphdGlvbiBvZiBpZGVudGlmaWVycyBpcyBub3QgYWZmZWN0ZWQgYnkgbG9jYWxlLgorCistIElzc3VlICMxMjIyNTg1OiBBZGRlZCBMRENYWFNIQVJFRCBmb3IgQysrIHN1cHBvcnQuIFBhdGNoIGJ5IEFyZnJldmVyLgorCistIFJhaXNlIGEgVHlwZUVycm9yIHdoZW4gdHJ5aW5nIHRvIGRlbGV0ZSBhIFRfU1RSSU5HX0lOUExBQ0Ugc3RydWN0IG1lbWJlci4KKworLSBJc3N1ZSAjODIxMTogU2F2ZS9yZXN0b3JlIENGTEFHUyBhcm91bmQgQUNfUFJPR19DQyBpbiBjb25maWd1cmUuaW4sIGluIGNhc2UgaXQKKyAgaXMgc2V0LgorCistIElzc3VlICM4MjI2OiBzeXMuc2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgcmFpc2VzIGEgTG9va3VwRXJyb3IgaWYgdGhlIGVuY29kaW5nCisgIGlzIHVua25vd24uCisKKy0gSXNzdWUgIzE1ODM4NjM6IEEgc3RyIHN1YmNsYXNzIGNhbiBub3cgb3ZlcnJpZGUgdGhlIF9fc3RyX18gbWV0aG9kLgorCistIElzc3VlICM4MDE0OiBTZXR0aW5nIGEgVF9VSU5UIG9yIFRfUFlTU0laRVQgYXR0cmlidXRlIG9mIGFuIG9iamVjdCB3aXRoCisgIFB5TWVtYmVyRGVmcyBjb3VsZCBwcm9kdWNlIGFuIGludGVybmFsIGVycm9yOyByYWlzZSBUeXBlRXJyb3IgaW5zdGVhZC4KKworLSBJc3N1ZSAjNzg0NTogUmljaCBjb21wYXJpc29uIG1ldGhvZHMgb24gdGhlIGNvbXBsZXggdHlwZSBub3cgcmV0dXJuCisgIE5vdEltcGxlbWVudGVkIHJhdGhlciB0aGFuIHJhaXNpbmcgYSBUeXBlRXJyb3Igd2hlbiBjb21wYXJpbmcgd2l0aCBhbgorICBpbmNvbXBhdGlibGUgdHlwZTsgdGhpcyBhbGxvd3MgdXNlci1kZWZpbmVkIGNsYXNzZXMgdG8gaW1wbGVtZW50IHRoZWlyIG93bgorICBjb21wYXJpc29ucyB3aXRoIGNvbXBsZXguCisKKy0gSXNzdWUgIzMxMzc6IERvbid0IGlnbm9yZSBlcnJvcnMgYXQgc3RhcnR1cCwgZXNwZWNpYWxseSBhIGtleWJvYXJkIGludGVycnVwdAorICAoU0lHSU5UKS4gSWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIGltcG9ydGluZyB0aGUgc2l0ZSBtb2R1bGUsIHRoZSBlcnJvciBpcworICBwcmludGVkIGFuZCBQeXRob24gZXhpdHMuIEluaXRpYWxpemUgdGhlIEdJTCBiZWZvcmUgaW1wb3J0aW5nIHRoZSBzaXRlIG1vZHVsZS4KKworLSBJc3N1ZSAjNzE3MzogR2VuZXJhdG9yIGZpbmFsaXphdGlvbiBjb3VsZCBpbnZhbGlkYXRlIHN5cy5leGNfaW5mbygpLgorCistIElzc3VlICM3NTQ0OiBQcmVhbGxvY2F0ZSB0aHJlYWQgbWVtb3J5IGJlZm9yZSBjcmVhdGluZyB0aGUgdGhyZWFkIHRvIGF2b2lkIGEKKyAgZmF0YWwgZXJyb3IgaW4gbG93IG1lbW9yeSBjb25kaXRpb24uCisKKy0gSXNzdWUgIzc4MjA6IFRoZSBwYXJzZXIgdG9rZW5pemVyIHJlc3RvcmVzIGFsbCBieXRlcyBpbiB0aGUgcmlnaHQgaWYgdGhlIEJPTQorICBjaGVjayBmYWlscy4KKworLSBIYW5kbGUgZXJyb3JzIGZyb20gbG9va2luZyB1cCBfX3ByZXBhcmVfXyBjb3JyZWN0bHkuCisKKy0gSXNzdWUgIzU5Mzk6IEFkZCBhZGRpdGlvbmFsIHJ1bnRpbWUgY2hlY2tpbmcgdG8gZW5zdXJlIGEgdmFsaWQgY2Fwc3VsZSBpbgorICBNb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYy4KKworLSBJc3N1ZSAjNzMwOTogRml4IHVuY2hlY2tlZCBhdHRyaWJ1dGUgYWNjZXNzIHdoZW4gY29udmVydGluZworICBVbmljb2RlRW5jb2RlRXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvciwgYW5kIFVuaWNvZGVUcmFuc2xhdGVFcnJvciB0byBzdHJpbmdzLgorCistIElzc3VlICM2OTAyOiBGaXggcHJvYmxlbSB3aXRoIGJ1aWx0LWluIHR5cGVzIGZvcm1hdCBpbmNvcnJlY3RseSB3aXRoIDAKKyAgcGFkZGluZy4KKworLSBJc3N1ZSAjNzk4ODogRml4IGRlZmF1bHQgYWxpZ25tZW50IHRvIGJlIHJpZ2h0IGFsaWduZWQgZm9yIGNvbXBsZXguX19mb3JtYXRfXy4KKyAgTm93IGl0IG1hdGNoZXMgb3RoZXIgbnVtZXJpYyB0eXBlcy4KKworLSBJc3N1ZSAjNTk4ODogUmVtb3ZlIGRlcHJlY2F0ZWQgZnVuY3Rpb25zIFB5T1NfYXNjaWlfZm9ybWF0ZCwKKyAgUHlPU19hc2NpaV9zdHJ0b2QsIGFuZCBQeU9TX2FzY2lpX2F0b2YuICBVc2UgUHlPU19kb3VibGVfdG9fc3RyaW5nIGFuZAorICBQeU9TX3N0cmluZ190b19kb3VibGUgaW5zdGVhZC4gIFNlZSBpc3N1ZSAjNTgzNSBmb3IgdGhlIG9yaWdpbmFsIGRlcHJlY2F0aW9ucy4KKworLSBJc3N1ZSAjNzM4NTogRml4IGEgY3Jhc2ggaW4gYE1lbW9yeVZpZXdfRnJvbU9iamVjdGAgd2hlbiBgUHlPYmplY3RfR2V0QnVmZmVyYAorICBmYWlscy4gIFBhdGNoIGJ5IEZsb3JlbnQgWGljbHVuYS4KKworLSBJc3N1ZSAjNzc4ODogRml4IGFuIGludGVycHJldGVyIGNyYXNoIHByb2R1Y2VkIGJ5IGRlbGV0aW5nIGEgbGlzdCBzbGljZSB3aXRoCisgIHZlcnkgbGFyZ2Ugc3RlcCB2YWx1ZS4KKworLSBJc3N1ZSAjNzc2NjogQ2hhbmdlIHN5cy5nZXR3aW5kb3dzdmVyc2lvbigpIHJldHVybiB2YWx1ZSB0byBhIG5hbWVkIHR1cGxlIGFuZAorICBhZGQgdGhlIGFkZGl0aW9uYWwgbWVtYmVycyByZXR1cm5lZCBpbiBhbiBPU1ZFUlNJT05JTkZPRVggc3RydWN0dXJlLiAgVGhlIG5ldworICBtZW1iZXJzIGFyZSBzZXJ2aWNlX3BhY2tfbWFqb3IsIHNlcnZpY2VfcGFja19taW5vciwgc3VpdGVfbWFzaywgYW5kCisgIHByb2R1Y3RfdHlwZS4KKworLSBJc3N1ZSAjNzU2MTogT3BlcmF0aW9ucyBvbiBlbXB0eSBieXRlYXJyYXlzIChzdWNoIGFzIGBpbnQoYnl0ZWFycmF5KCkpYCkgY291bGQKKyAgY3Jhc2ggaW4gbWFueSBwbGFjZXMgYmVjYXVzZSBvZiB0aGUgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKCkgbWFjcm8gcmV0dXJuaW5nCisgIE5VTEwuICBUaGUgbWFjcm8gbm93IHJldHVybnMgYSBzdGF0aWNhbGx5IGFsbG9jYXRlZCBlbXB0eSBzdHJpbmcgaW5zdGVhZC4KKworLSBJc3N1ZSAjNjY5MDogT3B0aW1pemUgdGhlIGJ5dGVjb2RlIGZvciBleHByZXNzaW9ucyBzdWNoIGFzIGB4IGluIHsxLCAyLCAzfWAsCisgIHdoZXJlIHRoZSByaWdodCBoYW5kIG9wZXJhbmQgaXMgYSBzZXQgb2YgY29uc3RhbnRzLCBieSB0dXJuaW5nIHRoZSBzZXQgaW50byBhCisgIGZyb3plbnNldCBhbmQgcHJlLWJ1aWxkaW5nIGl0IGFzIGEgY29uc3RhbnQuICBUaGUgY29tcGFyaXNvbiBvcGVyYXRpb24gaXMgbWFkZQorICBhZ2FpbnN0IHRoZSBjb25zdGFudCBpbnN0ZWFkIG9mIGJ1aWxkaW5nIGEgbmV3IHNldCBlYWNoIHRpbWUgaXQgaXMgZXhlY3V0ZWQgKGEKKyAgc2ltaWxhciBvcHRpbWl6YXRpb24gYWxyZWFkeSBleGlzdGVkIHdoaWNoIHR1cm5lZCBhIGxpc3Qgb2YgY29uc3RhbnRzIGludG8gYQorICBwcmUtYnVpbHQgdHVwbGUpLiAgUGF0Y2ggYW5kIGFkZGl0aW9uYWwgdGVzdHMgYnkgRGF2ZSBNYWxjb2xtLgorCistIElzc3VlICM3NjIyOiBJbXByb3ZlIHRoZSBzcGxpdCgpLCByc3BsaXQoKSwgc3BsaXRsaW5lcygpIGFuZCByZXBsYWNlKCkgbWV0aG9kcworICBvZiBieXRlcywgYnl0ZWFycmF5IGFuZCB1bmljb2RlIG9iamVjdHMgYnkgdXNpbmcgYSBjb21tb24gaW1wbGVtZW50YXRpb24gYmFzZWQKKyAgb24gc3RyaW5nbGliJ3MgZmFzdCBzZWFyY2guICBQYXRjaCBieSBGbG9yZW50IFhpY2x1bmEuCisKKy0gSXNzdWUgIzc2MzI6IEZpeCB2YXJpb3VzIHN0ciAtPiBmbG9hdCBjb252ZXJzaW9uIGJ1Z3MgcHJlc2VudCBpbiAyLjcgYWxwaGEgMiwKKyAgaW5jbHVkaW5nOiAoMSkgYSBzZXJpb3VzICd3cm9uZyBvdXRwdXQnIGJ1ZyB0aGF0IGNvdWxkIG9jY3VyIGZvciBsb25nICg+IDQwCisgIGRpZ2l0KSBpbnB1dCBzdHJpbmdzLCAoMikgYSBjcmFzaCBpbiBkdG9hLmMgdGhhdCBvY2N1cnJlZCBpbiBkZWJ1ZyBidWlsZHMgd2hlbgorICBwYXJzaW5nIGNlcnRhaW4gbG9uZyBudW1lcmljIHN0cmluZ3MgY29ycmVzcG9uZGluZyB0byBzdWJub3JtYWwgdmFsdWVzLCAoMykgYQorICBtZW1vcnkgbGVhayBmb3Igc29tZSB2YWx1ZXMgbGFyZ2UgZW5vdWdoIHRvIGNhdXNlIG92ZXJmbG93LCBhbmQgKDQpIGEgbnVtYmVyCisgIG9mIGZsYXdzIHRoYXQgY291bGQgbGVhZCB0byBpbmNvcnJlY3RseSByb3VuZGVkIHJlc3VsdHMuCisKKy0gVGhlIF9fY29tcGxleF9fIG1ldGhvZCBpcyBub3cgbG9va2VkIHVwIG9uIHRoZSBjbGFzcyBvZiBpbnN0YW5jZXMgdG8gbWFrZSBpdAorICBjb25zaXN0ZW50IHdpdGggb3RoZXIgc3BlY2lhbCBtZXRob2RzLgorCistIElzc3VlICM3NDYyOiBJbXBsZW1lbnQgdGhlIHN0cmluZ2xpYiBmYXN0IHNlYXJjaCBhbGdvcml0aG0gZm9yIHRoZSBgcmZpbmRgLAorICBgcmluZGV4YCwgYHJzcGxpdGAgYW5kIGBycGFydGl0aW9uYCBtZXRob2RzLiAgUGF0Y2ggYnkgRmxvcmVudCBYaWNsdW5hLgorCistIElzc3VlICM3NjA0OiBEZWxldGluZyBhbiB1bnNldCBzbG90dGVkIGF0dHJpYnV0ZSBkaWQgbm90IHJhaXNlIGFuCisgIEF0dHJpYnV0ZUVycm9yLgorCistIElzc3VlICM3NTM0OiBGaXggaGFuZGxpbmcgb2YgSUVFRSBzcGVjaWFscyAoaW5maW5pdGllcywgbmFucywgbmVnYXRpdmUgemVybykKKyAgaW4gKiogb3BlcmF0b3IuICBUaGUgYmVoYXZpb3VyIG5vdyBjb25mb3JtcyB0byB0aGF0IGRlc2NyaWJlZCBpbiBDOTkgQW5uZXggRi4KKworLSBJc3N1ZSAjMTgxMTogaW1wcm92ZSBhY2N1cmFjeSBhbmQgY3Jvc3MtcGxhdGZvcm0gY29uc2lzdGVuY3kgZm9yIHRydWUgZGl2aXNpb24KKyAgb2YgaW50ZWdlcnM6IHRoZSByZXN1bHQgb2YgYS9iIGlzIG5vdyBjb3JyZWN0bHkgcm91bmRlZCBmb3IgaW50cyBhIGFuZCBiIChhdAorICBsZWFzdCBvbiBJRUVFIDc1NCBwbGF0Zm9ybXMpLCBhbmQgaW4gcGFydGljdWxhciBkb2VzIG5vdCBkZXBlbmQgb24gdGhlCisgIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludC4KKworLSBJc3N1ZSAjNjgzNDogcmVwbGFjZSB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHRoZSAncHl0aG9uJyBhbmQgJ3B5dGhvbncnCisgIGV4ZWN1dGFibGVzIG9uIE9TWC4KKworICBUaGVzZSBleGVjdXRhYmxlcyBub3cgd29yayBwcm9wZXJseSB3aXRoIHRoZSBhcmNoKDEpIGNvbW1hbmQ6IGBgYXJjaCAtcHBjCisgIHB5dGhvbmBgIHdpbGwgc3RhcnQgYSB1bml2ZXJzYWwgYmluYXJ5IHZlcnNpb24gb2YgcHl0aG9uIGluIFBQQyBtb2RlICh1bmxpa2UKKyAgcHJldmlvdXMgcmVsZWFzZXMpLgorCistIElzc3VlICM3NDY2OiBTZWdtZW50YXRpb24gZmF1bHQgd2hlbiB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgaXMgY2FsbGVkIGluIHRoZQorICBtaWRkbGUgb2YgcG9wdWxhdGluZyBhIHR1cGxlLiAgUGF0Y2ggYnkgRmxvcmVudCBYaWNsdW5hLgorCistIElzc3VlICM3NDE5OiBzZXRsb2NhbGUoKSBjb3VsZCBjcmFzaCB0aGUgaW50ZXJwcmV0ZXIgb24gV2luZG93cyB3aGVuIGNhbGxlZAorICB3aXRoIGludmFsaWQgdmFsdWVzLgorCistIElzc3VlICM2MDc3OiBPbiBXaW5kb3dzLCBmaWxlcyBvcGVuZWQgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlIGluICJ3dCsiCisgIG1vZGUgd291bGQgYXBwZWFyIHRydW5jYXRlZCBvbiB0aGUgZmlyc3QgJzB4MWEnIGJ5dGUgKGFrYS4gQ3RybCtaKS4KKworLSBJc3N1ZSAjNzA4NTogRml4IGNyYXNoIHdoZW4gaW1wb3J0aW5nIHNvbWUgZXh0ZW5zaW9ucyBpbiBhIHRocmVhZCBvbiBNYWNPU1gKKyAgMTAuNi4KKworLSBJc3N1ZSAjMTc1NzEyNjogRml4IHRoZSBjeXJpbGxpYy1hc2lhbiBhbGlhcyBmb3IgdGhlIHB0Y3AxNTQgZW5jb2RpbmcuCisKKy0gSXNzdWUgIzY5NzA6IFJlbW92ZSByZWR1bmRhbnQgY2FsbHMgd2hlbiBjb21wYXJpbmcgb2JqZWN0cyB0aGF0IGRvbid0CisgIGltcGxlbWVudCB0aGUgcmVsZXZhbnQgcmljaCBjb21wYXJpc29uIG1ldGhvZHMuCisKKy0gSXNzdWUgIzcyOTg6IEZpeGVzIGZvciByYW5nZSBhbmQgcmV2ZXJzZWQocmFuZ2UoLi4uKSkuICBJdGVyYXRpb24gb3ZlcgorICByYW5nZShhLCBiLCBjKSBpbmNvcnJlY3RseSBnYXZlIGFuIGVtcHR5IGl0ZXJhdG9yIHdoZW4gYSwgYiBhbmQgYyBmaXQgaW4gQworICBsb25nIGJ1dCB0aGUgbGVuZ3RoIG9mIHRoZSByYW5nZSBkaWQgbm90LiAgQWxzbyBmaXggc2V2ZXJhbCBjYXNlcyB3aGVyZQorICByZXZlcnNlZChyYW5nZShhLCBiLCBjKSkgZ2F2ZSB3cm9uZyByZXN1bHRzLCBhbmQgZml4IGEgcmVmbGVhayBmb3IKKyAgcmV2ZXJzZWQocmFuZ2UoYSwgYiwgYykpIHdpdGggbGFyZ2UgYXJndW1lbnRzLgorCistIElzc3VlICM3MjQ0OiBpdGVydG9vbHMuaXppcF9sb25nZXN0KCkgbm8gbG9uZ2VyIGlnbm9yZXMgZXhjZXB0aW9ucyByYWlzZWQKKyAgZHVyaW5nIHRoZSBmb3JtYXRpb24gb2YgYW4gb3V0cHV0IHR1cGxlLgorCistIElzc3VlICMzMjk3OiBPbiB3aWRlIHVuaWNvZGUgYnVpbGRzLCBkbyBub3Qgc3BsaXQgdW5pY29kZSBjaGFyYWN0ZXJzIGludG8KKyAgc3Vycm9nYXRlcy4KKworLSBSZW1vdmUgbGVuZ3RoIGxpbWl0YXRpb24gd2hlbiBjb25zdHJ1Y3RpbmcgYSBjb21wbGV4IG51bWJlciBmcm9tIGEgc3RyaW5nLgorCistIElzc3VlICMxMDg3NDE4OiBCb29zdCBwZXJmb3JtYW5jZSBvZiBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yIGxvbmdzLgorCistIFN1cHBvcnQgZm9yIEF0aGVPUyBoYXMgYmVlbiBjb21wbGV0ZWx5IHJlbW92ZWQgZnJvbSB0aGUgY29kZSBiYXNlLiBJdCB3YXMKKyAgZGlzYWJsZWQgc2luY2UgUHl0aG9uIDMuMC4KKworLSBTdXBwb3J0IGZvciBzZXZlcmFsIGxlZ2FjeSB0aHJlYWRpbmcgbGlicmFyaWVzIGhhcyBiZWVuIGRpc2FibGVkLiBUaGVzZQorICBsaWJyYXJpZXMgYXJlOiBNYWNoIEMgdGhyZWFkcywgU3VuT1MgTFdQLCBHTlUgcHRoLCBJcml4IHRocmVhZHMuIFN1cHBvcnQgY29kZQorICB3aWxsIGJlIGVudGlyZWx5IHJlbW92ZWQgaW4gMy4zLgorCistIFN1cHBvcnQgZm9yIE9TRiogaGFzIGJlZW4gZGlzYWJsZWQuIElmIG5vYm9keSBzdGFuZHMgdXAsIHN1cHBvcnQgd2lsbCBiZQorICByZW1vdmVkIGluIDMuMy4gU2VlIDxodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlODYwNj4uCisKKy0gUGVlcGhvbGUgY29uc3RhbnQgZm9sZGluZyBoYWQgbWlzc2VkIFVOQVJZX1BPU0lUSVZFLgorCistIElzc3VlICMxNzIyMzQ0OiB0aHJlYWRpbmcuX3NodXRkb3duKCkgaXMgbm93IGNhbGxlZCBpbiBQeV9GaW5hbGl6ZSgpLCB3aGljaAorICBmaXhlcyB0aGUgcHJvYmxlbSBvZiBzb21lIGV4Y2VwdGlvbnMgYmVpbmcgdGhyb3duIGF0IHNodXRkb3duIHdoZW4gdGhlCisgIGludGVycHJldGVyIGlzIGtpbGxlZC4gUGF0Y2ggYnkgQWRhbSBPbHNlbi4KKworLSBJc3N1ZSAjNzE0NzogUmVtb3ZlIHN1cHBvcnQgZm9yIGNvbXBpbGluZyBQeXRob24gd2l0aG91dCBjb21wbGV4IG51bWJlcgorICBzdXBwb3J0LgorCistIElzc3VlICM3MTIwOiBsb2dnaW5nOiBSZW1vdmVkIGltcG9ydCBvZiBtdWx0aXByb2Nlc3Npbmcgd2hpY2ggaXMgY2F1c2luZyBjcmFzaAorICBpbiBHQUUuCisKKy0gSXNzdWUgIzE3NTQwOTQ6IEltcHJvdmUgdGhlIHN0YWNrIGRlcHRoIGNhbGN1bGF0aW9uIGluIHRoZSBjb21waWxlci4gIFRoZXJlCisgIHNob3VsZCBiZSBubyBvdGhlciBlZmZlY3QgdGhhbiBhIHNtYWxsIGRlY3JlYXNlIGluIG1lbW9yeSB1c2UuICBQYXRjaCBieQorICBDaHJpc3RvcGhlciBUdXIgTGVzbmlld3NraS1MYWFzLgorCistIElzc3VlICM3MDY1OiBGaXggYSBjcmFzaCBpbiBieXRlcy5tYWtldHJhbnMgYW5kIGJ5dGVhcnJheS5tYWtldHJhbnMgd2hlbiB1c2luZworICBieXRlIHZhbHVlcyBncmVhdGVyIHRoYW4gMTI3LiAgUGF0Y2ggYnkgRGVyayBEcnVra2VyLgorCistIElzc3VlICMxNTcxMTg0OiBUaGUgVW5pY29kZSBkYXRhYmFzZSBjb250YWlucyBwcm9wZXJ0aWVzIGZvciBtb3JlIGNoYXJhY3RlcnMuCisgIFRoZSB0YWJsZXMgZm9yIGNvZGUgcG9pbnRzIHJlcHJlc2VudGluZyBudW1lcmljIHZhbHVlcywgd2hpdGUgc3BhY2VzIG9yIGxpbmUKKyAgYnJlYWtzIGFyZSBub3cgZ2VuZXJhdGVkIGZyb20gdGhlIG9mZmljaWFsIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIGZpbGVzLAorICBhbmQgaW5jbHVkZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBVbmloYW4udHh0IGZpbGUuCisKKy0gSXNzdWUgIzcwMTk6IFJhaXNlIFZhbHVlRXJyb3Igd2hlbiB1bm1hcnNoYWxsaW5nIGJhZCBsb25nIGRhdGEsIGluc3RlYWQgb2YKKyAgcHJvZHVjaW5nIGludGVybmFsbHkgaW5jb25zaXN0ZW50IFB5dGhvbiBsb25ncy4KKworLSBJc3N1ZSAjNjk5MDogRml4IHRocmVhZGluZy5sb2NhbCBzdWJjbGFzc2VzIGxlYXZpbmcgb2xkIHN0YXRlIGFyb3VuZCBhZnRlciBhCisgIHJlZmVyZW5jZSBjeWNsZSBHQyB3aGljaCBjb3VsZCBiZSByZWN5Y2xlZCBieSBuZXcgbG9jYWxzLgorCistIElzc3VlICM1NDYwOiBGaXggYW4gYW1iaWd1aXR5IGluIHRoZSBncmFtbWFyLgorCistIElzc3VlICMxNzY2MzA0OiBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIG1lbWJlcnNoaXAgdGVzdHMgb24gcmFuZ2Ugb2JqZWN0cy4KKworLSBJc3N1ZSAjNjcxMzogSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBpbnRlZ2VyIC0+IHN0cmluZyBjb252ZXJzaW9ucy4KKworLSBJc3N1ZSAjNjg0NjogRml4IGJ1ZyB3aGVyZSBieXRlYXJyYXkucG9wKCkgcmV0dXJucyBuZWdhdGl2ZSBpbnRlZ2Vycy4KKworLSBJc3N1ZSAjNjc1MDogQSB0ZXh0IGZpbGUgb3BlbmVkIHdpdGggaW8ub3BlbigpIGNvdWxkIGR1cGxpY2F0ZSBpdHMgb3V0cHV0IHdoZW4KKyAgd3JpdGluZyBmcm9tIG11bHRpcGxlIHRocmVhZHMgYXQgdGhlIHNhbWUgdGltZS4KKworLSBJc3N1ZSAjNjcwNzogZGlyKCkgb24gYW4gdW5pbml0aWFsaXplZCBtb2R1bGUgY2F1c2VkIGEgY3Jhc2guCisKKy0gSXNzdWUgIzY1NDA6IEZpeGVkIGNyYXNoIGZvciBieXRlYXJyYXkudHJhbnNsYXRlKCkgd2l0aCBpbnZhbGlkIHBhcmFtZXRlcnMuCisKKy0gSXNzdWUgIzY1NzM6IHNldC51bmlvbigpIHN0b3BwZWQgcHJvY2Vzc2luZyBpbnB1dHMgaWYgYW4gaW5zdGFuY2Ugb2Ygc2VsZgorICBvY2N1cnJlZCBpbiB0aGUgYXJndW1lbnQgY2hhaW4uCisKKy0gSXNzdWUgIzYwNzA6IE9uIHBvc2l4IHBsYXRmb3JtcyBpbXBvcnQgbm8gbG9uZ2VyIGNvcGllcyB0aGUgZXhlY3V0ZSBiaXQgZnJvbQorICB0aGUgLnB5IGZpbGUgdG8gdGhlIC5weWMgZmlsZSBpZiBpdCBpcyBzZXQuCisKKy0gSXNzdWUgIzE2MTY5Nzk6IEFkZGVkIHRoZSBjcDcyMCAoQXJhYmljIERPUykgZW5jb2RpbmcuCisKKy0gSXNzdWUgIzY0Mjg6IFNpbmNlIFB5dGhvbiAzLjAsIHRoZSBfX2Jvb2xfXyBtZXRob2QgbXVzdCByZXR1cm4gYSBib29sIG9iamVjdCwKKyAgYW5kIG5vdCBhbiBpbnQuICBGaXggdGhlIGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZSwgYW5kIHRoZSBkb2N1bWVudGF0aW9uLgorCistIFRoZSBkZXByZWNhdGVkIFB5Q09iamVjdCBoYXMgYmVlbiByZW1vdmVkLgorCistIElzc3VlICM2MzQ3OiBJbmNsdWRlIGludHR5cGVzLmggYXMgd2VsbCBhcyBzdGRpbnQuaCBpbiBweXBvcnQuaC4gIFRoaXMgZml4ZXMgYQorICBidWlsZCBmYWlsdXJlIG9uIEhQLVVYOiBpbnQzMl90IGFuZCB1aW50MzJfdCBhcmUgZGVmaW5lZCBpbiBpbnR0eXBlcy5oIGluc3RlYWQKKyAgb2Ygc3RkaW50Lmggb24gdGhhdCBwbGF0Zm9ybS4KKworLSBJc3N1ZSAjNjM3MzogRml4ZWQgYSBTeXN0ZW1FcnJvciB3aGVuIGVuY29kaW5nIHdpdGggdGhlIGxhdGluLTEgY29kZWMgYW5kIHRoZQorICAnc3Vycm9nYXRlZXNjYXBlJyBlcnJvciBoYW5kbGVyLCBhIHN0cmluZyB3aGljaCBjb250YWlucyB1bnBhaXJlZCBzdXJyb2dhdGVzLgorCistIElzc3VlICM0ODU2OiBSZW1vdmUgY2hlY2tzIGZvciB3aW4gTlQuCisKKy0gSXNzdWUgIzY2ODc6IFB5Qnl0ZXNfRnJvbU9iamVjdCgpIG5vIGxvbmdlciBhY2NlcHRzIGFuIGludGVnZXIgYXMgaXRzIGFyZ3VtZW50CisgIHRvIGNvbnN0cnVjdCBhIG51bGwtaW5pdGlhbGl6ZWQgYnl0ZXMgb2JqZWN0LgorCistIElzc3VlICMxMDIzMjkwOiBBZGQgZnJvbV9ieXRlcygpIGFuZCB0b19ieXRlcygpIG1ldGhvZHMgdG8gaW50ZWdlcnMuICBUaGVzZQorICBtZXRob2RzIGFsbG93IHRoZSBjb252ZXJzaW9uIG9mIGludGVnZXJzIHRvIGJ5dGVzLCBhbmQgdmljZS12ZXJzYS4KKworLSBJc3N1ZSAjNzM4MjogRml4IGJ1ZyBpbiBieXRlcy5fX2dldG5ld2FyZ3NfXyB0aGF0IHByZXZlbnRlZCBieXRlcyBpbnN0YW5jZXMKKyAgZnJvbSBiZWluZyBjb3BpZWQgd2l0aCBjb3B5LmNvcHkoKSwgYW5kIGJ5dGVzIHN1YmNsYXNzZXMgZnJvbSBiZWluZyBwaWNrbGVkCisgIHByb3Blcmx5LgorCistIENvZGUgb2JqZWN0cyBub3cgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMuCisKKy0gSXNzdWUgIzcwNzI6IGlzc3BhY2UoMHhhMCkgaXMgdHJ1ZSBvbiBNYWMgT1MgWC4KKworLSBJc3N1ZSAjODA4NDogUEVQIDM3MCBub3cgY29uZm9ybXMgdG8gc3lzdGVtIGNvbnZlbnRpb25zIGZvciBmcmFtZXdvcmsgYnVpbGRzCisgIG9uIE1hY09TIFguIFRoYXQgaXMsICJweXRob24gc2V0dXAucHkgaW5zdGFsbCAtLXVzZXIiIHdpbGwgaW5zdGFsbCBpbnRvCisgICJ+L0xpYnJhcnkvUHl0aG9uLzIuNyIgaW5zdGVhZCBvZiAifi8ubG9jYWwiLgorCitDLUFQSQorLS0tLS0KKworLSBJc3N1ZSAjMjQ0MzogQSBuZXcgbWFjcm8sIGBQeV9WQV9DT1BZYCwgY29waWVzIHRoZSBzdGF0ZSBvZiB0aGUKKyAgdmFyaWFibGUgYXJndW1lbnQgbGlzdC4gIGBQeV9WQV9DT1BZYCBpcyBlcXVpdmFsZW50IHRvIEM5OQorICBgdmFfY29weWAsIGJ1dCBhdmFpbGFibGUgb24gYWxsIHB5dGhvbiBwbGF0Zm9ybXMuCisKKy0gUHlTbGljZV9HZXRJbmRpY2VzRXggbm93IGNsaXBzIHRoZSBzdGVwIHRvIFstUFlfU1NJWkVfVF9NQVgsIFBZX1NTSVpFX1RfTUFYXQorICBpbnN0ZWFkIG9mIFstUFlfU1NJWkVfVF9NQVgtMSwgUFlfU1NJWkVfVF9NQVhdLiAgVGhpcyBtYWtlcyBpdCBzYWZlIHRvIGRvCisgICJzdGVwID0gLXN0ZXAiIHdoZW4gcmV2ZXJzaW5nIGEgc2xpY2UuCisKKy0gSXNzdWUgIzU3NTM6IEEgbmV3IEMgQVBJIGZ1bmN0aW9uLCBgUHlTeXNfU2V0QXJndkV4YCwgYWxsb3dzIGVtYmVkZGVycyBvZiB0aGUKKyAgaW50ZXJwcmV0ZXIgdG8gc2V0IHN5cy5hcmd2IHdpdGhvdXQgYWxzbyBtb2RpZnlpbmcgc3lzLnBhdGguICBUaGlzIGhlbHBzIGZpeAorICBgQ1ZFLTIwMDgtNTk4MworICA8aHR0cDovL2N2ZS5taXRyZS5vcmcvY2dpLWJpbi9jdmVuYW1lLmNnaT9uYW1lPUNWRS0yMDA4LTU5ODM+YF8uCisKKy0gQWRkIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cywgd2hpY2ggY2hlY2tzIGlmIGFsbCBrZXl3b3JkIGFyZ3VtZW50cyBhcmUKKyAgc3RyaW5ncyBpbiBhbiBlZmZpY2llbnQgbWFubmVyLgorCistIElzc3VlICM4Mjc2OiBQeUV2YWxfQ2FsbE9iamVjdCgpIGlzIG5vdyBvbmx5IGF2YWlsYWJsZSBpbiBtYWNybyBmb3JtLiAgVGhlCisgIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLCB3aGljaCB3YXMga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucywgaXMKKyAgbm93IHJlbW92ZWQgKHRoZSBtYWNybyB3YXMgaW50cm9kdWNlZCBpbiAxOTk3ISkuCisKKy0gSXNzdWUgIzc3Njc6IE5ldyBmdW5jdGlvbiBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93IGFkZGVkLCBhbmFsb2dvdXMgdG8KKyAgUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93LgorCistIE1ha2UgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcgcmV0dXJuIG5vdCBlcXVhbCBpZiB0aGUgUHl0aG9uIHN0cmluZworICBoYXMgJ1wwJyBhdCB0aGUgZW5kLgorCistIElzc3VlICM1MDgwOiBUaGUgYXJndW1lbnQgcGFyc2luZyBmdW5jdGlvbnMgUHlBcmdfUGFyc2VUdXBsZSwKKyAgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzLCBQeUFyZ19WYVBhcnNlLCBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcyBhbmQKKyAgUHlBcmdfUGFyc2Ugbm93IHJhaXNlIGEgRGVwcmVjYXRpb25XYXJuaW5nIGZvciBmbG9hdCBhcmd1bWVudHMgcGFzc2VkIHdpdGggdGhlCisgICdMJyBmb3JtYXQgY29kZS4gIFRoaXMgd2lsbCBiZWNvbWUgYSBUeXBlRXJyb3IgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24sCisgIHRvIG1hdGNoIHRoZSBiZWhhdmlvdXIgb2YgdGhlIG90aGVyIGludGVnZXIgZm9ybWF0IGNvZGVzLgorCistIElzc3VlICM3MDMzOiBGdW5jdGlvbiBgYFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MoKWBgIGFkZGVkLgorCistIElzc3VlICM3NDE0OiAnQycgY29kZSB3YXNuJ3QgYmVpbmcgc2tpcHBlZCBwcm9wZXJseSAoZm9yIGtleXdvcmQgYXJndW1lbnRzKSBpbgorICBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMuCisKKy0gSXNzdWUgIzcyMjg6IEFkZCAnJWxsZCcgYW5kICclbGx1JyBzdXBwb3J0IHRvIFB5U3RyaW5nX0Zyb21Gb3JtYXQoVikgYW5kCisgIFB5RXJyX0Zvcm1hdCwgb24gbWFjaGluZXMgd2l0aCBIQVZFX0xPTkdfTE9ORyBkZWZpbmVkLgorCistIElzc3VlICM2MTUxOiBNYWRlIFB5RGVzY3JfQ09NTU9OIGNvbmZvcm0gdG8gc3RhbmRhcmQgQyAobGlrZSBQeU9iamVjdF9IRUFEIGluCisgIFBFUCAzMTIzKS4gIFRoZSBQeURlc2NyX1RZUEUgYW5kIFB5RGVzY3JfTkFNRSBtYWNyb3Mgc2hvdWxkIGJlIHNob3VsZCB1c2VkIGZvcgorICBhY2Nlc3NpbmcgdGhlIGRfdHlwZSBhbmQgZF9uYW1lIG1lbWJlcnMgb2Ygc3RydWN0dXJlcyB1c2luZyBQeURlc2NyX0NPTU1PTi4KKworLSBJc3N1ZSAjNjQwNTogUmVtb3ZlIGR1cGxpY2F0ZSB0eXBlIGRlY2xhcmF0aW9ucyBpbiBkZXNjcm9iamVjdC5oLgorCistIFRoZSBjb2RlIGZsYWdzIGZvciBvbGQgX19mdXR1cmVfXyBmZWF0dXJlcyBhcmUgbm93IGF2YWlsYWJsZSBhZ2Fpbi4KKworLSBJc3N1ZSAjNTk1NDogQWRkIGEgUHlGcmFtZV9HZXRMaW5lTnVtYmVyKCkgZnVuY3Rpb24gdG8gcmVwbGFjZSBtb3N0IHVzZXMgb2YKKyAgUHlDb2RlX0FkZHIyTGluZSgpLgorCistIElzc3VlICM1OTU5OiBBZGQgYSBQeUNvZGVfTmV3RW1wdHkoKSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgZW1wdHkgY29kZQorICBvYmplY3QgYXQgYSBzcGVjaWZpZWQgZmlsZSwgZnVuY3Rpb24sIGFuZCBsaW5lIG51bWJlci4KKworLSBJc3N1ZSAjMTQxOTY1MjogQ2hhbmdlIHRoZSBmaXJzdCBhcmd1bWVudCB0byBQeUltcG9ydF9BcHBlbmRJbml0dGFiKCkgdG8KKyAgYGBjb25zdCBjaGFyICpgYCBhcyB0aGUgc3RyaW5nIGlzIHN0b3JlZCBiZXlvbmQgdGhlIGNhbGwuCisKKy0gSXNzdWUgIzI0MjI6IFdoZW4gY29tcGlsZWQgd2l0aCB0aGUgYGAtLXdpdGgtdmFsZ3JpbmRgYCBvcHRpb24sIHRoZSBweW1hbGxvYworICBhbGxvY2F0b3Igd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIHdoZW4gcnVubmluZyB1bmRlciBWYWxncmluZC4gIFRoaXMKKyAgZ2l2ZXMgaW1wcm92ZWQgbWVtb3J5IGxlYWsgZGV0ZWN0aW9uIHdoZW4gcnVubmluZyB1bmRlciBWYWxncmluZCwgd2hpbGUgdGFraW5nCisgIGFkdmFudGFnZSBvZiBweW1hbGxvYyBhdCBvdGhlciB0aW1lcy4KKworTGlicmFyeQorLS0tLS0tLQorCistIEluIHBkYiwgd2hlbiBDdHJsLUMgaXMgZW50ZXJlZCB3aGlsZSBkZWZpbmluZyBjb21tYW5kcyBmb3IgYSBicmVha3BvaW50LCB0aGUKKyAgb2xkIGNvbW1hbmRzIGFyZSByZXN0b3JlZC4KKworLSBGb3IgdHJhY2ViYWNrIGRlYnVnZ2luZywgdGhlIHBkYiBsaXN0aW5nIG5vdyBhbHNvIHNob3dzIHRoZSBsb2NhdGlvbnMgd2hlcmUKKyAgdGhlIGV4Y2VwdGlvbiB3YXMgb3JpZ2luYWxseSAocmUpcmFpc2VkLCBpZiBpdCBkaWZmZXJzIGZyb20gdGhlIGxhc3QgbGluZQorICBleGVjdXRlZCAoZS5nLiBpbiBjYXNlIG9mIGZpbmFsbHkgY2xhdXNlcykuCisKKy0gVGhlIHBkYiBjb21tYW5kICJzb3VyY2UiIGhhcyBiZWVuIGFkZGVkLiAgSXQgZGlzcGxheXMgdGhlIHNvdXJjZSBjb2RlIGZvciBhCisgIGdpdmVuIG9iamVjdCwgaWYgcG9zc2libGUuCisKKy0gVGhlIHBkYiBjb21tYW5kICJsb25nbGlzdCIgaGFzIGJlZW4gYWRkZWQuICBJdCBkaXNwbGF5cyB0aGUgd2hvbGUgc291cmNlIGNvZGUKKyAgZm9yIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgorCistIElzc3VlICMxNTAzNTAyOiBNYWtlIHBkYi5QZGIgZWFzaWVyIHRvIHN1YmNsYXNzIGJ5IHB1dHRpbmcgbWVzc2FnZSBhbmQgZXJyb3IKKyAgb3V0cHV0IGludG8gbWV0aG9kcy4KKworLSBJc3N1ZSAjODA5ODg3OiBNYWtlIHRoZSBvdXRwdXQgb2YgcGRiJ3MgYnJlYWtwb2ludCBkZWxldGlvbnMgbW9yZSBjb25zaXN0ZW50OworICBlbWl0IGEgbWVzc2FnZSB3aGVuIGEgYnJlYWtwb2ludCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgorCistIElzc3VlICM1Mjk0OiBGaXggdGhlIGJlaGF2aW9yIG9mIHBkYidzICJjb250aW51ZSIgY29tbWFuZCB3aGVuIGNhbGxlZCBpbiB0aGUKKyAgdG9wLWxldmVsIGRlYnVnZ2VkIGZyYW1lLgorCistIElzc3VlICM1NzI3OiBSZXN0b3JlIHRoZSBhYmlsaXR5IHRvIHVzZSByZWFkbGluZSB3aGVuIGNhbGxpbmcgaW50byBwZGIgaW4KKyAgZG9jdGVzdHMuCisKKy0gSXNzdWUgIzY3MTk6IEluIHBkYiwgZG8gbm90IHN0b3Agc29tZXdoZXJlIGluIHRoZSBlbmNvZGluZ3MgbWFjaGluZXJ5IGlmIHRoZQorICBzb3VyY2UgZmlsZSB0byBiZSBkZWJ1Z2dlZCBpcyBpbiBhIG5vbi1idWlsdGluIGVuY29kaW5nLgorCistIElzc3VlICM4MDQ4OiBQcmV2ZW50IGRvY3Rlc3RzIGZyb20gZmFpbGluZyB3aGVuIHN5cy5kaXNwbGF5aG9vayBoYXMgYmVlbgorICByZWFzc2lnbmVkLgorCistIElzc3VlICM4MDE1OiBJbiBwZGIsIGRvIG5vdCBjcmFzaCB3aGVuIGFuIGVtcHR5IGxpbmUgaXMgZW50ZXJlZCBhcyBhCisgIGJyZWFrcG9pbnQgY29tbWFuZC4KKworLSBJbiBwZGIsIGFsbG93IGdpdmluZyBhIGxpbmUgbnVtYmVyIHRvIHRoZSAidW50aWwiIGNvbW1hbmQuCisKKy0gSXNzdWUgIzE0MzcwNTE6IEZvciBwZGIsIGFsbG93ICJjb250aW51ZSIgYW5kIHJlbGF0ZWQgY29tbWFuZHMgaW4gLnBkYnJjCisgIGZpbGVzLiAgQWxzbywgYWRkIGEgY29tbWFuZC1saW5lIG9wdGlvbiAiLWMiIHRoYXQgcnVucyBhIGNvbW1hbmQgYXMgaWYgZ2l2ZW4KKyAgaW4gLnBkYnJjLgorCistIElzc3VlICM0MTc5OiBJbiBwZGIsIGFsbG93ICJsaXN0IC4iIGFzIGEgY29tbWFuZCB0byByZXR1cm4gdG8gdGhlIGN1cnJlbnRseQorICBkZWJ1Z2dlZCBsaW5lLgorCistIElzc3VlICM0MTA4OiBJbiB1cmxsaWIucm9ib3RwYXJzZXIsIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBgYFVzZXItYWdlbnQ6ICpgYAorICBlbnRyaWVzLCBjb25zaWRlciB0aGUgZmlyc3Qgb25lLgorCistIElzc3VlICM2NjMwOiBBbGxvdyBjdXN0b21pemluZyByZWdleCBmbGFncyB3aGVuIHN1YmNsYXNzaW5nIHRoZQorICBzdHJpbmcuVGVtcGxhdGUgY2xhc3MuCisKKy0gSXNzdWUgIzk0MTE6IEFsbG93IHNwZWNpZnlpbmcgYW4gZW5jb2RpbmcgZm9yIGNvbmZpZyBmaWxlcyBpbiB0aGUgY29uZmlncGFyc2VyCisgIG1vZHVsZS4KKworLSBJc3N1ZSAjMTY4Mjk0MjogSW1wcm92ZW1lbnRzIHRvIGNvbmZpZ3BhcnNlcjogc3VwcG9ydCBhbHRlcm5hdGUgZGVsaW1pdGVycywKKyAgYWx0ZXJuYXRlIGNvbW1lbnQgcHJlZml4ZXMgYW5kIGVtcHR5IGxpbmVzIGluIHZhbHVlcy4KKworLSBJc3N1ZSAjOTM1NDogUHJvdmlkZSBnZXRzb2Nrb3B0KCkgaW4gYXN5bmNvcmUncyBmaWxlX3dyYXBwZXIuCisKKy0gSXNzdWUgIzg5NjY6IGN0eXBlczogUmVtb3ZlIGltcGxpY2l0IGJ5dGVzLXVuaWNvZGUgY29udmVyc2lvbi4KKworLSBJc3N1ZSAjOTM3ODogcHl0aG9uIC1tIHBpY2tsZSA8cGlja2xlIGZpbGU+IHdpbGwgbm93IGxvYWQgYW5kIGRpc3BsYXkgdGhlCisgIGZpcnN0IG9iamVjdCBpbiB0aGUgcGlja2xlIGZpbGUuCisKKy0gSXNzdWUgIzQ3NzA6IFJlc3RyaWN0IGJpbmFzY2lpIG1vZHVsZSB0byBhY2NlcHQgb25seSBieXRlcyAoYXMgc3BlY2lmaWVkKS4KKyAgQW5kIGZpeCB0aGUgZW1haWwgcGFja2FnZSB0byBlbmNvZGUgdG8gQVNDSUkgaW5zdGVhZCBvZiBgYHJhdy11bmljb2RlLWVzY2FwZWBgCisgIGJlZm9yZSBBU0NJSS10by1iaW5hcnkgZGVjb2RpbmcuCisKKy0gSXNzdWUgIzkzODQ6IGBgcHl0aG9uIC1tIHRraW50ZXJgYCB3aWxsIG5vdyBkaXNwbGF5IGEgc2ltcGxlIGRlbW8gYXBwbGV0LgorCistIFRoZSBkZWZhdWx0IHNpemUgb2YgdGhlIHJlIG1vZHVsZSdzIGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBjYWNoZSBoYXMgYmVlbgorICBpbmNyZWFzZWQgZnJvbSAxMDAgdG8gNTAwIGFuZCB0aGUgY2FjaGUgcmVwbGFjZW1lbnQgcG9saWN5IGhhcyBjaGFuZ2VkIGZyb20KKyAgc2ltcGx5IGNsZWFyaW5nIHRoZSBlbnRpcmUgY2FjaGUgb24gb3ZlcmZsb3cgdG8gZm9yZ2V0dGluZyB0aGUgbGVhc3QgcmVjZW50bHkKKyAgdXNlZCBjYWNoZWQgY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9ucy4gIFRoaXMgaXMgYSBwZXJmb3JtYW5jZSB3aW4gZm9yCisgIGFwcGxpY2F0aW9ucyB0aGF0IHVzZSBhIGxvdCBvZiByZWd1bGFyIGV4cHJlc3Npb25zIGFuZCBsaW1pdHMgdGhlIGltcGFjdCBvZgorICB0aGUgcGVyZm9ybWFuY2UgaGl0IGFueXRpbWUgdGhlIGNhY2hlIGlzIGV4Y2VlZGVkLgorCistIElzc3VlICM3MTEzOiBTcGVlZCB1cCBsb2FkaW5nIGluIGNvbmZpZ3BhcnNlci4gUGF0Y2ggYnkgxYF1a2FzeiBMYW5nYS4KKworLSBJc3N1ZSAjOTAzMjogWE1MLVJQQyBjbGllbnQgcmV0cmllcyB0aGUgcmVxdWVzdCBvbiBFUElQRSBlcnJvci4gIFRoZSBFUElQRQorICBlcnJvciBvY2N1cnMgd2hlbiB0aGUgc2VydmVyIGNsb3NlcyB0aGUgc29ja2V0IGFuZCB0aGUgY2xpZW50IHNlbmRzIGEgYmlnCisgIFhNTC1SUEMgcmVxdWVzdC4KKworLSBJc3N1ZSAjNDYyOTogZ2V0b3B0IHJhaXNlcyBhbiBlcnJvciBpZiBhbiBhcmd1bWVudCBlbmRzIHdpdGggIj0iLCB3aGVyZWFzCisgIGdldG9wdCBkb2Vzbid0IGFjY2VwdCBhIHZhbHVlIChlZy4gLS1oZWxwPSBpcyByZWplY3RlZCBpZiBnZXRvcHQgdXNlcworICBbJ2hlbHA9J10gbG9uZyBvcHRpb25zKS4KKworLSBJc3N1ZSAjNzk4OTogQWRkZWQgcHVyZSBweXRob24gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBkYXRldGltZWAgbW9kdWxlLiAgVGhlIEMKKyAgbW9kdWxlIGlzIHJlbmFtZWQgdG8gYF9kYXRldGltZWAgYW5kIGlmIGF2YWlsYWJsZSwgb3ZlcnJpZGVzIGFsbCBjbGFzc2VzCisgIGRlZmluZWQgaW4gZGF0ZXRpbWUgd2l0aCBmYXN0IEMgaW1wZW1lbnRhdGlvbi4gIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZAorICBvbiB0aGUgb3JpZ2luYWwgcHl0aG9uIHByb3RvdHlwZSBmb3IgdGhlIGRhdGV0aW1lIG1vZHVsZSBieSBUaW0gUGV0ZXJzIHdpdGgKKyAgbWlub3IgbW9kaWZpY2F0aW9ucyBieSB0aGUgUHlQeSBwcm9qZWN0LiAgVGhlIHRlc3Qgc3VpdGUgbm93IHRlc3RzIGBkYXRldGltZWAKKyAgbW9kdWxlIHdpdGggYW5kIHdpdGhvdXQgYF9kYXRldGltZWAgYWNjZWxlcmF0aW9uIHVzaW5nIHRoZSBzYW1lIHRlc3QgY2FzZXMuCisKKy0gSXNzdWUgIzc4OTU6IHBsYXRmb3JtLm1hY192ZXIoKSBubyBsb25nZXIgY3Jhc2hlcyBhZnRlciBjYWxsaW5nIG9zLmZvcmsoKS4KKworLSBJc3N1ZSAjOTMyMzogRml4ZWQgYSBidWcgaW4gdHJhY2UucHkgdGhhdCByZXN1bHRlZCBpbiBsb29zaW5nIHRoZSBuYW1lIG9mIHRoZQorICBzY3JpcHQgYmVpbmcgdHJhY2VkLiAgUGF0Y2ggYnkgRWxpIEJlbmRlcnNreS4KKworLSBJc3N1ZSAjOTI4MjogRml4ZWQgLS1saXN0ZnVuY3Mgb3B0aW9uIG9mIHRyYWNlLnB5LiAgVGhhbmtzIEVsaSBCZW5kZXJza3kgZm9yCisgIHRoZSBwYXRjaC4KKworLSBJc3N1ZSAjMzcwNDogaHR0cC5jb29raWVqYXIgd2FzIG5vdCBwcm9wZXJseSBoYW5kbGluZyBVUkxzIHdpdGggYSAvIGluIHRoZQorICBwYXJhbWV0ZXJzLgorCistIElzc3VlICM5MjY4OiBgYHBpY2tsZXRvb2xzLmRpcygpYGAgbm93IGhhcyBhbiBvcHRpb25hbCAqYW5ub3RhdGUqIGFyZ3VtZW50CisgIHdoaWNoIGNvbnRyb2xzIHByaW50aW5nIG9mIG9wY29kZSBkZXNjcmlwdGlvbnMgaW4gYGBkaXMoKWBgIG91dHB1dC4KKworLSBJc3N1ZSAjMTU1NTU3MDogZW1haWwgbm8gbG9uZ2VyIGluc2VydHMgZXh0cmEgYmxhbmsgbGluZXMgd2hlbiBhIFxyXG4gY29tYm8KKyAgY3Jvc3NlcyBhbiA4MTkyIGJ5dGUgYm91bmRhcnkuCisKKy0gSXNzdWUgIzkyNDM6IEZpeCBzbmRoZHIgbW9kdWxlIGFuZCBhZGQgdW5pdCB0ZXN0cywgY29udHJpYnV0ZWQgYnkgSmFtZXMgTGVlLgorCistIGBgYXN0LmxpdGVyYWxfZXZhbCgpYGAgbm93IGFsbG93cyBieXRlIGxpdGVyYWxzLgorCistIElzc3VlICM5MTM3OiBGaXggaXNzdWUgaW4gTXV0YWJsZU1hcHBpbmcudXBkYXRlLCB3aGljaCBpbmNvcnJlY3RseSB0cmVhdGVkCisgIGtleXdvcmQgYXJndW1lbnRzIGNhbGxlZCAnc2VsZicgb3IgJ290aGVyJyBzcGVjaWFsbHkuCisKKy0gYGBhc3QubGl0ZXJhbF9ldmFsKClgYCBub3cgYWxsb3dzIHNldCBsaXRlcmFscy4KKworLSBJc3N1ZSAjOTE2NDogRW5zdXJlIHRoYXQgc3lzY29uZmlnIGhhbmRsZXMgZHVwbGljYXRlIC1hcmNoIGZsYWdzIGluIENGTEFHUy4KKworLSBJc3N1ZSAjNzY0NjogVGhlIGZubWF0Y2ggcGF0dGVybiBjYWNoZSBubyBsb25nZXIgZ3Jvd3Mgd2l0aG91dCBib3VuZC4KKworLSBJc3N1ZSAjOTEzNjogRml4ICdkaWN0aW9uYXJ5IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uJyBSdW50aW1lRXJyb3IKKyAgcHJvZHVjZWQgd2hlbiBwcm9maWxpbmcgdGhlIGRlY2ltYWwgbW9kdWxlLiAgVGhpcyB3YXMgZHVlIHRvIGEgZGFuZ2Vyb3VzCisgIGl0ZXJhdGlvbiBvdmVyICdsb2NhbHMoKScgaW4gQ29udGV4dC5fX2luaXRfXy4KKworLSBGaXggZXh0cmVtZSBzcGVlZCBpc3N1ZSBpbiBEZWNpbWFsLnBvdyB3aGVuIHRoZSBiYXNlIGlzIGFuIGV4YWN0IHBvd2VyIG9mIDEwCisgIGFuZCB0aGUgZXhwb25lbnQgaXMgdGlueSAoZm9yIGV4YW1wbGUsIGBgRGVjaW1hbCgxMCkgKioKKyAgRGVjaW1hbCgnMWUtOTk5OTk5OTk5JylgYCkuCisKKy0gSXNzdWUgIzkxODY6IEZpeCBtYXRoLmxvZzFwKC0xLjApIHRvIHJhaXNlIFZhbHVlRXJyb3IsIG5vdCBPdmVyZmxvd0Vycm9yLgorCistIElzc3VlICM5MTMwOiBGaXggdmFsaWRhdGlvbiBvZiByZWxhdGl2ZSBpbXBvcnRzIGluIHBhcnNlciBtb2R1bGUuCisKKy0gSXNzdWUgIzkxMjg6IEZpeCB2YWxpZGF0aW9uIG9mIGNsYXNzIGRlY29yYXRvcnMgaW4gcGFyc2VyIG1vZHVsZS4KKworLSBJc3N1ZSAjOTA5NDogcHl0aG9uIC1tIHBpY2tsZXRvb2xzIHdpbGwgbm93IGRpc2Fzc2VtYmxlIHBpY2tsZSBmaWxlcyBsaXN0ZWQgaW4KKyAgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuICBTZWUgb3V0cHV0IG9mIHB5dGhvbiAtbSBwaWNrbGV0b29scyAtaCBmb3IgbW9yZQorICBkZXRhaWxzLgorCistIElzc3VlICM1NDY4OiB1cmxlbmNvZGUgdG8gaGFuZGxlIGJ5dGVzIHR5cGUgYW5kIG90aGVyIGVuY29kaW5ncyBpbiBpdHMgcXVlcnkKKyAgcGFyYW1ldGVyLiBQYXRjaCBieSBEYW4gTWFobi4KKworLSBJc3N1ZSAjNzY3MzogRml4IHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgKENWRS0yMDEwLTIwODkpIGluIHRoZSBhdWRpb29wIG1vZHVsZSwKKyAgZW5zdXJlIHRoYXQgdGhlIGlucHV0IHN0cmluZyBsZW5ndGggaXMgYSBtdWx0aXBsZSBvZiB0aGUgZnJhbWUgc2l6ZS4KKworLSBJc3N1ZSAjNjUwNzogQWNjZXB0IHNvdXJjZSBzdHJpbmdzIGluIGRpcy5kaXMoKS4gIE9yaWdpbmFsIHBhdGNoIGJ5IERhbmllbAorICBVcmJhbi4KKworLSBJc3N1ZSAjNzgyOTogQ2xlYXJseSBkb2N1bWVudCB0aGF0IHRoZSBkaXMgbW9kdWxlIGlzIGV4cG9zaW5nIGFuCisgIGltcGxlbWVudGF0aW9uIGRldGFpbCB0aGF0IGlzIG5vdCBzdGFibGUgYmV0d2VlbiBQeXRob24gVk1zIG9yIHJlbGVhc2VzLgorCistIElzc3VlICM2NTg5OiBjbGVhbnVwIGFzeW5jb3JlLnNvY2tldF9tYXAgaW4gY2FzZSBzbXRwZC5TTVRQU2VydmVyIGNvbnN0cnVjdG9yCisgIHJhaXNlcyBhbiBleGNlcHRpb24uCisKKy0gSXNzdWUgIzkxMTA6IEFkZGl0aW9uIG9mIENvbnRleHREZWNvcmF0b3IgdG8gY29udGV4dGxpYiwgZm9yIGNyZWF0aW5nIEFQSXMKKyAgdGhhdCBhY3QgYXMgYm90aCBjb250ZXh0IG1hbmFnZXJzIGFuZCBkZWNvcmF0b3JzLiBjb250ZXh0bWFuYWdlciBjaGFuZ2VzIHRvCisgIHVzZSBDb250ZXh0RGVjb3JhdG9yLgorCistIEltcGxlbWVudCBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlciBhbmQgZGVwcmVjYXRlIFB5TG9hZGVyIGFuZCBQeVB5Y0xvYWRlcgorICBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy40LgorCistIElzc3VlICM5MDY0OiBwZGIncyAidXAiIGFuZCAiZG93biIgY29tbWFuZHMgbm93IGFjY2VwdCBhbiBvcHRpb25hbCBhcmd1bWVudAorICBnaXZpbmcgdGhlIG51bWJlciBvZiBmcmFtZXMgdG8gZ28uCisKKy0gSXNzdWUgIzkwMTg6IG9zLnBhdGgubm9ybWNhc2UoKSBub3cgcmFpc2VzIGEgVHlwZUVycm9yIGlmIHRoZSBhcmd1bWVudCBpcyBub3QKKyAgYGBzdHJgYCBvciBgYGJ5dGVzYGAuCisKKy0gSXNzdWUgIzkwNzU6IEluIHRoZSBzc2wgbW9kdWxlLCByZW1vdmUgdGhlIHNldHRpbmcgb2YgYSBgYGRlYnVnYGAgZmxhZyBvbiBhbgorICBPcGVuU1NMIHN0cnVjdHVyZS4KKworLSBJc3N1ZSAjODY4MjogVGhlIHNzbCBtb2R1bGUgbm93IHRlbXBvcmFyeSBpbmNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgYQorICBzb2NrZXQgb2JqZWN0IGdvdCB0aHJvdWdoIGBgUHlXZWFrcmVmX0dldE9iamVjdGBgLCBzbyBhcyB0byBhdm9pZCBwb3NzaWJsZQorICBkZWFsbG9jYXRpb24gd2hpbGUgdGhlIG9iamVjdCBpcyBzdGlsbCBiZWluZyB1c2VkLgorCistIElzc3VlICMxMzY4MzY4OiBGYW5jeVVSTE9wZW5lciBjbGFzcyBjaGFuZ2VkIHRvIHRocm93IGFuIEV4Y2VwdGlvbiBvbiB3cm9uZworICBwYXNzd29yZCBpbnN0ZWFkIG9mIHByZXNlbnRpbmcgYW4gaW50ZXJhY3RpdmUgcHJvbXB0LiAgT2xkZXIgYmVoYXZpb3IgY2FuIGJlCisgIG9idGFpbmVkIGJ5IHBhc3NpbmcgcmV0cnk9VHJ1ZSB0byBodHRwX2Vycm9yX3h4eCBtZXRob2RzIG9mIEZhbmN5VVJMT3BlbmVyLgorCistIElzc3VlICM4NzIwOiBGaXggcmVncmVzc2lvbiBjYXVzZWQgYnkgZml4IGZvciAjNDA1MCBieSBtYWtpbmcgZ2V0c291cmNlZmlsZQorICBzbWFydCBlbm91Z2ggdG8gZmluZCBzb3VyY2UgZmlsZXMgaW4gdGhlIGxpbmVjYWNoZS4KKworLSBJc3N1ZSAjNTYxMDogZmVlZHBhcnNlciBubyBsb25nZXIgZWF0cyBleHRyYSBjaGFyYWN0ZXJzIGF0IHRoZSBlbmQgb2YgYSBib2R5CisgIHBhcnQgaWYgdGhlIGJvZHkgcGFydCBlbmRzIHdpdGggYSBgYFxyXG5gYC4KKworLSBJc3N1ZSAjODk4NjogbWF0aC5lcmZjIHdhcyBpbmNvcnJlY3RseSByYWlzaW5nIE92ZXJmbG93RXJyb3IgZm9yIHZhbHVlcworICBiZXR3ZWVuIC0yNy4zIGFuZCAtMzAuMCBvbiBzb21lIHBsYXRmb3Jtcy4KKworLSBJc3N1ZSAjODc4NDogU2V0IHRhcmZpbGUgZGVmYXVsdCBlbmNvZGluZyB0byAndXRmLTgnIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzg5NjY6IElmIGEgY3R5cGVzIHN0cnVjdHVyZSBmaWVsZCBpcyBhbiBhcnJheSBvZiBjX2NoYXIsIGNvbnZlcnQgaXRzCisgIHZhbHVlIHRvIGJ5dGVzIGluc3RlYWQgb2Ygc3RyIChhcyBkb25lIGZvciBjX2NoYXIgYW5kIGNfY2hhcl9wKS4KKworLSBJc3N1ZSAjODE4ODogQ29tcGFyaXNvbnMgYmV0d2VlbiBEZWNpbWFsIGFuZCBGcmFjdGlvbiBvYmplY3RzIGFyZSBub3cKKyAgcGVybWl0dGVkLCByZXR1cm5pbmcgYSByZXN1bHQgYmFzZWQgb24gdGhlIGV4YWN0IG51bWVyaWNhbCB2YWx1ZXMgb2YgdGhlCisgIG9wZXJhbmRzLiAgVGhpcyBidWlsZHMgb24gaXNzdWUgIzI1MzEsIHdoaWNoIGFsbG93ZWQgRGVjaW1hbC10by1mbG9hdAorICBjb21wYXJpc29uczsgYWxsIGNvbXBhcmlzb25zIGludm9sdmluZyBudW1lcmljIHR5cGVzIChib29sLCBpbnQsIGZsb2F0LAorICBjb21wbGV4LCBEZWNpbWFsLCBGcmFjdGlvbikgc2hvdWxkIG5vdyBhY3QgYXMgZXhwZWN0ZWQuCisKKy0gSXNzdWUgIzg4OTc6IEZpeCBzdW5hdSBtb2R1bGUsIHVzZSBieXRlcyB0byB3cml0ZSB0aGUgaGVhZGVyLiBQYXRjaCB3cml0dGVuIGJ5CisgIFRob21hcyBKb2xsYW5zLgorCistIElzc3VlICM4ODk5OiB0aW1lLnN0cnVjdF90aW1lIG5vdyBoYXMgY2xhc3MgYW5kIGF0dHJpYnV0ZSBkb2NzdHJpbmdzLgorCistIElzc3VlICM2NDcwOiBEcm9wIFVOQyBwcmVmaXggaW4gRml4VGsuCisKKy0gSXNzdWUgIzQ3Njg6IGJhc2U2NCBlbmNvZGVkIGVtYWlsIGJvZHkgcGFydHMgd2VyZSBpbmNvcnJlY3RseSBzdG9yZWQgYXMgYmluYXJ5CisgIHN0cmluZ3MuICBUaGV5IGFyZSBub3cgY29ycmVjdGx5IGNvbnZlcnRlZCB0byBzdHJpbmdzLgorCistIElzc3VlICM4ODMzOiB0YXJmaWxlIGNyZWF0ZWQgaGFyZCBsaW5rIGVudHJpZXMgd2l0aCBhIHNpemUgZmllbGQgIT0gMCBieQorICBtaXN0YWtlLgorCistIENoYXJzZXQuYm9keV9lbmNvZGUgbm93IGNvcnJlY3RseSBoYW5kbGVzIGJhc2U2NCBlbmNvZGluZyBieSBlbmNvZGluZyB3aXRoIHRoZQorICBvdXRwdXRfY2hhcnNldCBiZWZvcmUgY2FsbGluZyBiYXNlNjRtaW1lLmVuY29kZS4gIFBhc3NlcyB0aGUgdGVzdHMgZnJvbSAyLngKKyAgaXNzdWUgIzEzNjgyNDcuCisKKy0gSXNzdWUgIzg4NDU6IHNxbGl0ZTMgQ29ubmVjdGlvbiBvYmplY3RzIG5vdyBoYXZlIGEgcmVhZC1vbmx5IGluX3RyYW5zYWN0aW9uCisgIGF0dHJpYnV0ZSB0aGF0IGlzIFRydWUgaWZmIHRoZXJlIGFyZSB1bmNvbW1pdHRlZCBjaGFuZ2VzLgorCistIElzc3VlICMxMjg5MTE4OiBkYXRldGltZS50aW1lZGVsdGEgb2JqZWN0cyBjYW4gbm93IGJlIG11bHRpcGxpZWQgYnkgZmxvYXQgYW5kCisgIGRpdmlkZWQgYnkgZmxvYXQgYW5kIGludCBvYmplY3RzLiAgUmVzdWx0cyBhcmUgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZQorICBvZiB0aW1lZGVsdGEucmVzb2x1dGlvbiB3aXRoIHRpZXMgcmVzb2x2ZWQgdXNpbmcgcm91bmQtaGFsZi10by1ldmVuIG1ldGhvZC4KKworLSBJc3N1ZSAjNzE1MDogUmFpc2UgT3ZlcmZsb3dFcnJvciBpZiB0aGUgcmVzdWx0IG9mIGFkZGluZyBvciBzdWJ0cmFjdGluZworICB0aW1lZGVsdGEgZnJvbSBkYXRlIG9yIGRhdGV0aW1lIGZhbGxzIG91dHNpZGUgb2YgdGhlIE1JTllFQVI6TUFYWUVBUiByYW5nZS4KKworLSBJc3N1ZSAjODgwNjogYWRkIFNTTCBjb250ZXh0cyBzdXBwb3J0IHRvIGZ0cGxpYi4KKworLSBJc3N1ZSAjNDc2OTogRml4IG1haW4oKSBmdW5jdGlvbiBvZiB0aGUgYmFzZTY0IG1vZHVsZSwgdXNlIHN5cy5zdGRpbi5idWZmZXIKKyAgYW5kIHN5cy5zdGRvdXQuYnVmZmVyIChpbnN0ZWFkIG9mIHN5cy5zdGRpbiBhbmQgc3lzLnN0ZG91dCkgdG8gdXNlIHRoZSBieXRlcworICBBUEkuCisKKy0gSXNzdWUgIzg3NzA6IE5vdyBzeXNjb25maWcgZGlzcGxheXMgaW5mb3JtYXRpb24gd2hlbiBpdCdzIGNhbGxlZCBhcyBhIHNjcmlwdC4KKyAgSW5pdGlhbCBpZGVhIGJ5IFNyaWRoYXIgUmF0bmFrdW1hci4KKworLSBJc3N1ZSAjNjY2MjogRml4IHBhcnNpbmcgb2YgbWFsZm9ybWF0dGVkIGNoYXJyZWYgKCYjYmFkOyksIHBhdGNoIHdyaXR0ZW4gYnkKKyAgRnJlZHJpayBIw6XDpXJkLgorCistIElzc3VlICM4NTQwOiBEZWNpbWFsIG1vZHVsZTogcmVuYW1lIHRoZSBDb250ZXh0Ll9jbGFtcCBhdHRyaWJ1dGUgdG8KKyAgQ29udGV4dC5jbGFtcCBhbmQgbWFrZSBpdCBwdWJsaWMuICBUaGlzIGlzIHVzZWZ1bCBpbiBjcmVhdGluZyBjb250ZXh0cyB0aGF0CisgIGNvcnJlc3BvbmQgdG8gdGhlIGRlY2ltYWwgaW50ZXJjaGFuZ2UgZm9ybWF0cyBzcGVjaWZpZWQgaW4gSUVFRSA3NTQuCisKKy0gSXNzdWUgIzYyNjg6IEZpeCBzZWVrKCkgbWV0aG9kIG9mIGNvZGVjcy5vcGVuKCksIGRvbid0IHJlYWQgb3Igd3JpdGUgdGhlIEJPTQorICB0d2ljZSBhZnRlciBzZWVrKDApLiBGaXggYWxzbyByZXNldCgpIG1ldGhvZCBvZiBjb2RlY3MsIFVURi0xNiwgVVRGLTMyIGFuZAorICBTdHJlYW1Xcml0ZXIgY2xhc3Nlcy4KKworLSBJc3N1ZSAjMzc5ODogc3lzLmV4aXQobWVzc2FnZSkgd3JpdGVzIHRoZSBtZXNzYWdlIHRvIHN5cy5zdGRlcnIgZmlsZSwgaW5zdGVhZAorICBvZiB0aGUgQyBmaWxlIHN0ZGVyciwgdG8gdXNlIHN0ZGVyciBlbmNvZGluZyBhbmQgZXJyb3IgaGFuZGxlci4KKworLSBJc3N1ZSAjODc4MjogQWRkIGEgdHJhaWxpbmcgbmV3bGluZSBpbiBsaW5lY2FjaGUudXBkYXRlY2FjaGUgdG8gdGhlIGxhc3QgbGluZQorICBvZiBmaWxlcyB3aXRob3V0IG9uZS4KKworLSBJc3N1ZSAjODcyOTogUmV0dXJuIE5vdEltcGxlbWVudGVkIGZyb20gY29sbGVjdGlvbnMuTWFwcGluZy5fX2VxX18gd2hlbgorICBjb21wYXJpbmcgdG8gYSBub24tbWFwcGluZy4KKworLSBJc3N1ZSAjODc3NDogdGFibmFubnkgdXNlcyB0aGUgZW5jb2RpbmcgY29va2llICgjY29kaW5nOi4uLikgdG8gdXNlIHRoZQorICBjb3JyZWN0IGVuY29kaW5nLgorCistIElzc3VlICM0ODcwOiBBZGQgYW4gYG9wdGlvbnNgIGF0dHJpYnV0ZSB0byBTU0wgY29udGV4dHMsIGFzIHdlbGwgYXMgc2V2ZXJhbAorICBgYE9QXypgYCBjb25zdGFudHMgdG8gdGhlIGBzc2xgIG1vZHVsZS4gIFRoaXMgYWxsb3dzIHRvIHNlbGVjdGl2ZWx5IGRpc2FibGUKKyAgcHJvdG9jb2wgdmVyc2lvbnMsIHdoZW4gdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGBQUk9UT0NPTF9TU0x2MjNgLgorCistIElzc3VlICM4NzU5OiBGaXhlZCB1c2VyIHBhdGhzIGluIHN5c2NvbmZpZyBmb3IgcG9zaXggYW5kIG9zMiBzY2hlbWVzLgorCistIElzc3VlICM4NjYzOiBkaXN0dXRpbHMubG9nIGVtdWxhdGVzIGJhY2tzbGFzaHJlcGxhY2UgZXJyb3IgaGFuZGxlci4gRml4CisgIGNvbXBpbGF0aW9uIGluIGEgbm9uLUFTQ0lJIGRpcmVjdG9yeSBpZiBzdGRvdXQgZW5jb2RpbmcgaXMgQVNDSUkgKGVnLiBpZgorICBzdGRvdXQgaXMgbm90IGEgVFRZKS4KKworLSBJc3N1ZSAjODUxMzogb3MuZ2V0X2V4ZWNfcGF0aCgpIHN1cHBvcnRzIGInUEFUSCcga2V5IGFuZCBieXRlcyB2YWx1ZS4KKyAgc3VicHJvY2Vzcy5Qb3BlbigpIGFuZCBvcy5fZXhlY3ZwZSgpIHN1cHBvcnQgYnl0ZXMgcHJvZ3JhbSBuYW1lLiBBZGQKKyAgb3Muc3VwcG9ydHNfYnl0ZXNfZW52aXJvbiBmbGFnOiBUcnVlIGlmIHRoZSBuYXRpdmUgT1MgdHlwZSBvZiB0aGUgZW52aXJvbm1lbnQKKyAgaXMgYnl0ZXMgKGVnLiBGYWxzZSBvbiBXaW5kb3dzKS4KKworLSBJc3N1ZSAjODYzMzogdGFyZmlsZSBpcyBub3cgYWJsZSB0byByZWFkIGFuZCB3cml0ZSBhcmNoaXZlcyB3aXRoICJyYXciIGJpbmFyeQorICBwYXggaGVhZGVycyBhcyBkZXNjcmliZWQgaW4gUE9TSVguMS0yMDA4LgorCistIElzc3VlICMxMjg1MDg2OiBTcGVlZCB1cCB1cmxsaWIucGFyc2UgZnVuY3Rpb25zOiBxdW90ZSwgcXVvdGVfZnJvbV9ieXRlcywKKyAgdW5xdW90ZSwgdW5xdW90ZV90b19ieXRlcy4KKworLSBJc3N1ZSAjODY4ODogRGlzdHV0aWxzIG5vdyByZWNhbGN1bGF0ZXMgTUFOSUZFU1QgZXZlcnl0aW1lLgorCistIElzc3VlICM4NDc3OiBzc2wuUkFORF9lZ2QoKSBhbmQgc3NsLl90ZXN0X2RlY29kZV9jZXJ0KCkgc3VwcG9ydCBzdHIgd2l0aAorICBzdXJyb2dhdGVzIGFuZCBieXRlcyBmb3IgdGhlIGZpbGVuYW1lLgorCistIElzc3VlICM4NTUwOiBBZGQgZmlyc3QgY2xhc3MgYGBTU0xDb250ZXh0YGAgb2JqZWN0cyB0byB0aGUgc3NsIG1vZHVsZS4KKworLSBJc3N1ZSAjODY4MTogTWFrZSB0aGUgemxpYiBtb2R1bGUncyBlcnJvciBtZXNzYWdlcyBtb3JlIGluZm9ybWF0aXZlIHdoZW4gdGhlCisgIHpsaWIgaXRzZWxmIGRvZXNuJ3QgZ2l2ZSBhbnkgZGV0YWlsZWQgZXhwbGFuYXRpb24uCisKKy0gVGhlIGF1ZGlvb3AgbW9kdWxlIG5vdyBzdXBwb3J0cyBzb3VuZCBmcmFnbWVudHMgb2YgbGVuZ3RoIGdyZWF0ZXIgdGhhbiAyKiozMQorICBieXRlcyBvbiA2NC1iaXQgbWFjaGluZXMsIGFuZCBpcyBQWV9TU0laRV9UX0NMRUFOLgorCistIElzc3VlICM0OTcyOiBBZGQgc3VwcG9ydCBmb3IgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCB0byB0aGUgZnRwbGliLkZUUAorICBjbGFzcy4KKworLSBJc3N1ZSAjODY2NDogSW4gcHlfY29tcGlsZSwgY3JlYXRlIF9fcHljYWNoZV9fIHdoZW4gdGhlIGNvbXBpbGVkIHBhdGggaXMKKyAgZ2l2ZW4uCisKKy0gSXNzdWUgIzg1MTQ6IEFkZCBvcy5mc2VuY29kZSgpIGZ1bmN0aW9uIChVbml4IG9ubHkpOiBlbmNvZGUgYSBzdHJpbmcgdG8gYnl0ZXMKKyAgZm9yIHVzZSBpbiB0aGUgZmlsZSBzeXN0ZW0sIGVudmlyb25tZW50IHZhcmlhYmxlcyBvciB0aGUgY29tbWFuZCBsaW5lLgorCistIElzc3VlICM4NTcxOiBGaXggYW4gaW50ZXJuYWwgZXJyb3Igd2hlbiBjb21wcmVzc2luZyBvciBkZWNvbXByZXNzaW5nIGEgY2h1bmsKKyAgbGFyZ2VyIHRoYW4gMUdCIHdpdGggdGhlIHpsaWIgbW9kdWxlJ3MgY29tcHJlc3NvciBhbmQgZGVjb21wcmVzc29yIG9iamVjdHMuCisKKy0gSXNzdWUgIzg2MDM6IFN1cHBvcnQgYnl0ZXMgZW52aXJvbm1lbnRhbCB2YXJpYWJsZXMgb24gVW5peDogQWRkIG9zLmVudmlyb25iCisgIG1hcHBpbmcgYW5kIG9zLmdldGVudmIoKSBmdW5jdGlvbi4gb3MudW5zZXRlbnYoKSBlbmNvZGVzIHN0ciBhcmd1bWVudCB0byB0aGUKKyAgZmlsZSBzeXN0ZW0gZW5jb2Rpbmcgd2l0aCB0aGUgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIgKGluc3RlYWQgb2YKKyAgdXRmOC9zdHJpY3QpIGFuZCBhY2NlcHRzIGJ5dGVzLiBwb3NpeC5lbnZpcm9uIGtleXMgYW5kIHZhbHVlcyBhcmUgbm93IGJ5dGVzLgorCistIElzc3VlICM4NTczOiBhc3luY29yZSBfc3RyZXJyb3IoKSBmdW5jdGlvbiBtaWdodCB0aHJvdyBWYWx1ZUVycm9yLgorCistIElzc3VlICM4NDgzOiBhc3luY29yZS5kaXNwYXRjaGVyJ3MgX19nZXRhdHRyX18gbWV0aG9kIHByb2R1Y2VkIGNvbmZ1c2luZyBlcnJvcgorICBtZXNzYWdlcyB3aGVuIGFjY2Vzc2luZyB1bmRlZmluZWQgY2xhc3MgYXR0cmlidXRlcyBiZWNhdXNlIG9mIHRoZSBjaGVhcAorICBpbmhlcml0YW5jZSB3aXRoIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuICBUaGUgY2hlYXAgaW5oZXJpdGFuY2UgaGFzIGJlZW4KKyAgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjNDI2NTogc2h1dGlsLmNvcHlmaWxlKCkgd2FzIGxlYWtpbmcgZmlsZSBkZXNjcmlwdG9ycyB3aGVuIGRpc2sgZmlsbHMuCisgIFBhdGNoIGJ5IFRyZXMgU2VhdmVyLgorCistIElzc3VlICM4MzkwOiB0YXJmaWxlIHVzZXMgc3Vycm9nYXRlZXNjYXBlIGFzIHRoZSBkZWZhdWx0IGVycm9yIGhhbmRsZXIKKyAgKGluc3RlYWQgb2YgcmVwbGFjZSBpbiByZWFkIG1vZGUgb3Igc3RyaWN0IGluIHdyaXRlIG1vZGUpLgorCistIElzc3VlICM3NzU1OiBVc2UgYW4gdW5lbmN1bWJlcmVkIGF1ZGlvIGZpbGUgZm9yIHRlc3RzLgorCistIElzc3VlICM4NjIxOiB1dWlkLnV1aWQ0KCkgcmV0dXJuZWQgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgdmFsdWVzIGluIHRoZSBwYXJlbnQKKyAgYW5kIGFueSBjaGlsZHJlbiBjcmVhdGVkIHVzaW5nIGBgb3MuZm9ya2BgIG9uIE1hY09TIFggMTAuNi4KKworLSBJc3N1ZSAjODU2NzogRml4IHByZWNlZGVuY2Ugb2Ygc2lnbmFscyBpbiBEZWNpbWFsIG1vZHVsZTogd2hlbiBhIERlY2ltYWwKKyAgb3BlcmF0aW9uIHJhaXNlcyBtdWx0aXBsZSBzaWduYWxzIGFuZCBtb3JlIHRoYW4gb25lIG9mIHRob3NlIHNpZ25hbHMgaXMKKyAgdHJhcHBlZCwgdGhlIHNwZWNpZmljYXRpb24gZGV0ZXJtaW5lcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIHNpZ25hbHMgc2hvdWxkIGJlCisgIGhhbmRsZWQuICBJbiBtYW55IGNhc2VzIHRoaXMgb3JkZXIgd2Fzbid0IGJlaW5nIGZvbGxvd2VkLCBsZWFkaW5nIHRvIHRoZSB3cm9uZworICBQeXRob24gZXhjZXB0aW9uIGJlaW5nIHJhaXNlZC4KKworLSBJc3N1ZSAjNzg2NTogVGhlIGNsb3NlKCkgbWV0aG9kIG9mIGBgaW9gYCBvYmplY3RzIHNob3VsZCBub3Qgc3dhbGxvdworICBleGNlcHRpb25zIHJhaXNlZCBieSB0aGUgaW1wbGljaXQgZmx1c2goKS4gIEFsc28gcWVuc3VyZSB0aGF0IGNhbGxpbmcgY2xvc2UoKQorICBzZXZlcmFsIHRpbWVzIGlzIHN1cHBvcnRlZC4gIFBhdGNoIGJ5IFBhc2NhbCBDaGFtYm9uLgorCistIElzc3VlICM0Njg3OiBGaXggYWNjdXJhY3kgb2YgZ2FyYmFnZSBjb2xsZWN0aW9uIHJ1bnRpbWVzIGRpc3BsYXllZCB3aXRoCisgIGdjLkRFQlVHX1NUQVRTLgorCistIElzc3VlICM4MzU0OiBUaGUgc2lnaW50ZXJydXB0IHNldHRpbmcgaXMgbm93IHByZXNlcnZlZCBmb3IgYWxsIHNpZ25hbHMsIG5vdAorICBqdXN0IFNJR0NITEQuCisKKy0gSXNzdWUgIzcxOTI6IHdlYmJyb3dzZXIuZ2V0KCJmaXJlZm94Iikgbm93IHdvcmtzIG9uIE1hYyBPUyBYLCBhcyBkb2VzCisgIHdlYmJyb3dzZXIuZ2V0KCJzYWZhcmkiKS4KKworLSBJc3N1ZSAjODQ2NDogdGFyZmlsZSBubyBsb25nZXIgY3JlYXRlcyBmaWxlcyB3aXRoIGV4ZWN1dGUgcGVybWlzc2lvbnMgc2V0IHdoZW4KKyAgbW9kZT0id3wiIGlzIHVzZWQuCisKKy0gSXNzdWUgIzc4MzQ6IEZpeCBjb25uZWN0KCkgb2YgQmx1ZXRvb3RoIEwyQ0FQIHNvY2tldHMgd2l0aCByZWNlbnQgdmVyc2lvbnMgb2YKKyAgdGhlIExpbnV4IGtlcm5lbC4gIFBhdGNoIGJ5IFlhbml2IEFrbmluLgorCistIElzc3VlICM4Mjk1OiBBZGRlZCBzaHV0aWwudW5wYWNrX2FyY2hpdmUuCisKKy0gSXNzdWUgIzYzMTI6IEZpeGVkIGh0dHAgSEVBRCByZXF1ZXN0IHdoZW4gdGhlIHRyYW5zZmVyIGVuY29kaW5nIGlzIGNodW5rZWQuCisgIEl0IHNob3VsZCBjb3JyZWN0bHkgcmV0dXJuIGFuIGVtcHR5IHJlc3BvbnNlIG5vdy4KKworLSBJc3N1ZSAjODU0NjogUmVqZWN0IE5vbmUgZ2l2ZW4gYXMgdGhlIGJ1ZmZlcmluZyBhcmd1bWVudCB0byBfcHlpby5vcGVuLgorCistIElzc3VlICM4NTQ5OiBGaXggY29tcGlsaW5nIHRoZSBfc3NsIGV4dGVuc2lvbiB1bmRlciBBSVguICBQYXRjaCBieQorICBTcmlkaGFyIFJhdG5ha3VtYXIuCisKKy0gSXNzdWUgIzY2NTY6IGZpeCBsb2NhbGUuZm9ybWF0X3N0cmluZyB0byBoYW5kbGUgZXNjYXBlZCBwZXJjZW50cworICBhbmQgbWFwcGluZ3MuCisKKy0gSXNzdWUgIzIzMDI6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIFNvY2tldFNlcnZlci5CYXNlU2VydmVyLnNodXRkb3duLCB3aGVyZQorICB0aGUgbWV0aG9kIGNvdWxkIGJsb2NrIGluZGVmaW5pdGVseSBpZiBjYWxsZWQganVzdCBiZWZvcmUgdGhlIGV2ZW50IGxvb3AKKyAgc3RhcnRlZCBydW5uaW5nLiAgVGhpcyBhbHNvIGZpeGVzIHRoZSBvY2Nhc2lvbmFsIGZyZWV6ZXMgd2l0bmVzc2VkIGluCisgIHRlc3RfaHR0cHNlcnZlcnMuCisKKy0gSXNzdWUgIzg1MjQ6IFdoZW4gY3JlYXRpbmcgYW4gU1NMIHNvY2tldCwgdGhlIHRpbWVvdXQgdmFsdWUgb2YgdGhlIG9yaWdpbmFsCisgIHNvY2tldCB3YXNuJ3QgcmV0YWluZWQgKGluc3RlYWQsIGEgc29ja2V0IHdpdGggYSBwb3NpdGl2ZSB0aW1lb3V0IHdvdWxkIGJlCisgIHR1cm5lZCBpbnRvIGEgbm9uLWJsb2NraW5nIFNTTCBzb2NrZXQpLgorCistIElzc3VlICM1MTAzOiBTU0wgaGFuZHNoYWtlIHdvdWxkIGlnbm9yZSB0aGUgc29ja2V0IHRpbWVvdXQgYW5kIGJsb2NrCisgIGluZGVmaW5pdGVseSBpZiB0aGUgb3RoZXIgZW5kIGRpZG4ndCByZXNwb25kLgorCistIFRoZSBkb19oYW5kc2hha2UoKSBtZXRob2Qgb2YgU1NMIG9iamVjdHMgbm93IGFkanVzdHMgdGhlIGJsb2NraW5nIG1vZGUgb2YgdGhlCisgIFNTTCBzdHJ1Y3R1cmUgaWYgbmVjZXNzYXJ5IChhcyBvdGhlciBtZXRob2RzIGFscmVhZHkgZG8pLgorCistIElzc3VlICM4MzkxOiBvcy5leGVjdnBlKCkgYW5kIG9zLmdldGVudigpIHN1cHBvcnRzIHVuaWNvZGUgd2l0aCBzdXJyb2dhdGVzIGFuZAorICBieXRlcyBzdHJpbmdzIGZvciBlbnZpcm9ubWVudCBrZXlzIGFuZCB2YWx1ZXMuCisKKy0gSXNzdWUgIzg0Njc6IFB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIHN1YnByb2Nlc3MgZW5jb2RlcyB0aGUgZXJyb3IKKyAgbWVzc2FnZSB1c2luZyBzdXJyb2dhdGVwYXNzIGVycm9yIGhhbmRsZXIgdG8gc3VwcG9ydCBzdXJyb2dhdGVzIGluIHRoZQorICBtZXNzYWdlLgorCistIElzc3VlICM4NDY4OiBiejIuQloyRmlsZSgpIGFjY2VwdHMgc3RyIHdpdGggc3Vycm9nYXRlcyBhbmQgYnl0ZXMgZmlsZW5hbWVzLgorCistIElzc3VlICM4NDUxOiBTeXNsb2cgbW9kdWxlIG5vdyB1c2VzIGJhc2VuYW1lKHN5cy5hcmd2WzBdKSBpbnN0ZWFkIG9mIHRoZQorICBzdHJpbmcgInB5dGhvbiIgYXMgdGhlICppZGVudCouICBvcGVubG9nKCkgYXJndW1lbnRzIGFyZSBhbGwgb3B0aW9uYWwgYW5kCisgIGtleXdvcmRzLgorCistIElzc3VlICM4MTA4OiBGaXggdGhlIHVud3JhcCgpIG1ldGhvZCBvZiBTU0wgb2JqZWN0cyB3aGVuIHRoZSBzb2NrZXQgaGFzIGEKKyAgbm9uLWluZmluaXRlIHRpbWVvdXQuICBBbHNvIG1ha2UgdGhhdCBtZXRob2QgZnJpZW5kbGllciB3aXRoIGFwcGxpY2F0aW9ucworICB3YW50aW5nIHRvIGNvbnRpbnVlIHVzaW5nIHRoZSBzb2NrZXQgaW4gY2xlYXItdGV4dCBtb2RlLCBieSBkaXNhYmxpbmcKKyAgT3BlblNTTCdzIGludGVybmFsIHJlYWRhaGVhZC4gIFRoYW5rcyB0byBEYXJyeWwgTWlsZXMgZm9yIGd1aWRhbmNlLgorCistIElzc3VlICM4NDk2OiBtYWtlIG1haWxjYXAubG9va3VwKCkgYWx3YXlzIHJldHVybiBhIGxpc3QsIHJhdGhlciB0aGFuIGFuCisgIGl0ZXJhdG9yLiAgUGF0Y2ggYnkgR3JlZ29yeSBOb2ZpLgorCistIElzc3VlICM4MTk1OiBGaXggYSBjcmFzaCBpbiBzcWxpdGUgQ29ubmVjdGlvbi5jcmVhdGVfY29sbGF0aW9uKCkgaWYgdGhlCisgIGNvbGxhdGlvbiBuYW1lIGNvbnRhaW5zIGEgc3Vycm9nYXRlIGNoYXJhY3Rlci4KKworLSBJc3N1ZSAjODQ4NDogTG9hZCBhbGwgY2lwaGVycyBhbmQgZGlnZXN0IGFsZ29yaXRobXMgd2hlbiBpbml0aWFsaXppbmcgdGhlIF9zc2wKKyAgZXh0ZW5zaW9uLCBzdWNoIHRoYXQgdmVyaWZpY2F0aW9uIG9mIHNvbWUgU1NMIGNlcnRpZmljYXRlcyBkb2Vzbid0IGZhaWwKKyAgYmVjYXVzZSBvZiBhbiAidW5rbm93biBhbGdvcml0aG0iLgorCistIElzc3VlICM2NTQ3OiBBZGRlZCB0aGUgaWdub3JlX2RhbmdsaW5nX3N5bWxpbmtzIG9wdGlvbiB0byBzaHV0aWwuY29weXRyZWUuCisKKy0gSXNzdWUgIzE1NDAxMTI6IE5vdyBhbGxvd2luZyB0aGUgY2hvaWNlIG9mIGEgY29weSBmdW5jdGlvbiBpbiBzaHV0aWwuY29weXRyZWUuCisKKy0gSXNzdWUgIzQ4MTQ6IHRpbWVvdXQgcGFyYW1ldGVyIGlzIG5vdyBhcHBsaWVkIGFsc28gZm9yIGNvbm5lY3Rpb25zIHJlc3VsdGluZworICBmcm9tIFBPUlQvRVBSVCBjb21tYW5kcy4KKworLSBJc3N1ZSAjODQ2MzogYWRkZWQgbWlzc2luZyByZWZlcmVuY2UgdG8gYnp0YXIgaW4gc2h1dGlsJ3MgZG9jdW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjNzE1NDogdXJsbGliLnJlcXVlc3QgY2FuIG5vdyBkZXRlY3QgdGhlIHByb3h5IHNldHRpbmdzIG9uIE9TWCAxMC42IChhcworICBsb25nIGFzIHRoZSB1c2VyIGRpZG4ndCBzcGVjaWZ5ICdhdXRvbWF0aWMgcHJveHkgY29uZmlndXJhdGlvbicpLgorCistIElzc3VlICMzODE3OiBmdHBsaWIuRlRQLmFib3J0KCkgbWV0aG9kIG5vdyBjb25zaWRlcnMgMjI1IGEgdmFsaWQgcmVzcG9uc2UgY29kZQorICBhcyBzdGF0ZWQgaW4gUkZDLTk1OSBhdCBjaGFwdGVyIDUuNC4KKworLSBJc3N1ZSAjODM5NDogX2N0eXBlcy5kbG9wZW4oKSBhY2NlcHRzIGJ5dGVzLCBieXRlYXJyYXkgYW5kIHN0ciB3aXRoCisgIHN1cnJvZ2F0ZXMuCisKKy0gSXNzdWUgIzg1MDcyODogQWRkIGEgKnRpbWVvdXQqIHBhcmFtZXRlciB0byB0aGUgYGFjcXVpcmUoKWAgbWV0aG9kIG9mCisgIGB0aHJlYWRpbmcuU2VtYXBob3JlYCBvYmplY3RzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgVG9yc3RlbiBMYW5kc2Nob2ZmLgorCistIElzc3VlICM4MzIyOiBBZGQgYSAqY2lwaGVycyogYXJndW1lbnQgdG8gU1NMIHNvY2tldHMsIHNvIGFzIHRvIGNoYW5nZSB0aGUKKyAgYXZhaWxhYmxlIGNpcGhlciBsaXN0LiAgSGVscHMgZml4IHRlc3Rfc3NsIHdpdGggT3BlblNTTCAxLjAuMC4KKworLSBJc3N1ZSAjODM5Mzogc3VicHJvY2VzcyBhY2NlcHRzIGJ5dGVzLCBieXRlYXJyYXkgYW5kIHN0ciB3aXRoIHN1cnJvZ2F0ZXMgZm9yCisgIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorCistIElzc3VlICM3NjA2OiBYTUwtUlBDIHRyYWNlYmFjayBzdG9yZWQgaW4gWC10cmFjZWJhY2sgaXMgbm93IGVuY29kZWQgdG8gQVNDSUkKKyAgdXNpbmcgYmFja3NsYXNocmVwbGFjZSBlcnJvciBoYW5kbGVyLgorCistIElzc3VlICM4NDEyOiBvcy5zeXN0ZW0oKSBub3cgYWNjZXB0cyBieXRlcywgYnl0ZWFycmF5IGFuZCBzdHIgd2l0aCBzdXJyb2dhdGVzLgorCistIElzc3VlICMyOTg3OiBSRkMyNzMyIHN1cHBvcnQgZm9yIHVybHBhcnNlIChJUHY2IGFkZHJlc3NlcykuIFBhdGNoIGJ5IFRvbnkKKyAgTG9ja2UgYW5kIEhhbnMgVWxyaWNoIE5pZWRlcm1hbm4uCisKKy0gSXNzdWUgIzUyNzc6IEZpeCBxdW90ZSBjb3VudGluZyB3aGVuIHBhcnNpbmcgUkZDIDIyMzEgZW5jb2RlZCBwYXJhbWV0ZXJzLgorCistIElzc3VlICM3MzE2OiBUaGUgYWNxdWlyZSgpIG1ldGhvZCBvZiBsb2NrIG9iamVjdHMgaW4gdGhlIGBgdGhyZWFkaW5nYGAKKyAgbW9kdWxlIG5vdyB0YWtlcyBhbiBvcHRpb25hbCB0aW1lb3V0IGFyZ3VtZW50IGluIHNlY29uZHMuICBUaW1lb3V0IHN1cHBvcnQKKyAgcmVsaWVzIG9uIHRoZSBzeXN0ZW0gdGhyZWFkaW5nIGxpYnJhcnksIHNvIGFzIHRvIGF2b2lkIGEgc2VtaS1idXN5IHdhaXQgbG9vcC4KKworLSBJc3N1ZSAjODM4MzogcGlja2xlIGFuZCBwaWNrbGV0b29scyB1c2Ugc3Vycm9nYXRlcGFzcyBlcnJvciBoYW5kbGVyIHdoZW4KKyAgZW5jb2RpbmcgdW5pY29kZSBhcyB1dGY4IHRvIHN1cHBvcnQgbG9uZSBzdXJyb2dhdGVzIGFuZCBzdGF5IGNvbXBhdGlibGUgd2l0aAorICBQeXRob24gMi54IGFuZCAzLnguCisKKy0gSXNzdWUgIzc1ODU6IGRpZmZsaWIgY29udGV4dCBhbmQgdW5pZmllZCBkaWZmcyBub3cgcGxhY2UgYSB0YWIgYmV0d2VlbgorICBmaWxlbmFtZSBhbmQgZGF0ZSwgY29uZm9ybWluZyB0byB0aGUgJ3N0YW5kYXJkcycgdGhleSB3ZXJlIG9yaWdpbmFsbHkgZGVzaWduZWQKKyAgdG8gZm9sbG93LiAgVGhpcyBpbXByb3ZlcyBjb21wYXRpYmlsaXR5IHdpdGggcGF0Y2ggdG9vbHMuCisKKy0gSXNzdWUgIzc0NzI6IEZpeGVkIHR5cG8gaW4gZW1haWwuZW5jb2RlcnMgbW9kdWxlOyBtZXNzYWdlcyB1c2luZyBJU08tMjAyMgorICBjaGFyYWN0ZXIgc2V0cyB3aWxsIG5vdyBjb25zaXN0ZW50bHkgdXNlIGEgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZyBvZiA3Yml0CisgIHJhdGhlciB0aGFuIHNvbWV0aW1lcyBiZWluZyBtYXJrZWQgYXMgOGJpdC4KKworLSBJc3N1ZSAjODM3NTogdGVzdF9kaXN0dXRpbHMgbm93IGNoZWNrcyBpZiB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBhcmUgc3RpbGwKKyAgcHJlc2VudCBiZWZvcmUgaXQgY2xlYW5zIHRoZW0uCisKKy0gSXNzdWUgIzgzNzQ6IFVwZGF0ZSB0aGUgaW50ZXJuYWwgYWxpYXMgdGFibGUgaW4gdGhlIGBgbG9jYWxlYGAgbW9kdWxlIHRvCisgIGNvdmVyIHJlY2VudCBsb2NhbGUgY2hhbmdlcyBhbmQgYWRkaXRpb25zLgorCistIElzc3VlICM4MzIxOiBHaXZlIGFjY2VzcyB0byBPcGVuU1NMIHZlcnNpb24gbnVtYmVycyBmcm9tIHRoZSBgc3NsYCBtb2R1bGUsCisgIHVzaW5nIHRoZSBuZXcgYXR0cmlidXRlcyBgc3NsLk9QRU5TU0xfVkVSU0lPTmAsIGBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk9gIGFuZAorICBgc3NsLk9QRU5TU0xfVkVSU0lPTl9OVU1CRVJgLgorCistIEFkZCBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSBhbmQgZnVuY3Rvb2xzLmNtcF90b19rZXkoKS4KKworLSBJc3N1ZSAjODI1NzogVGhlIERlY2ltYWwgY29uc3RydWN0IG5vdyBhY2NlcHRzIGEgZmxvYXQgaW5zdGFuY2UgZGlyZWN0bHksCisgIGNvbnZlcnRpbmcgdGhhdCBmbG9hdCB0byBhIERlY2ltYWwgb2YgZXF1YWwgdmFsdWU6CisKKyAgICAgPj4+IERlY2ltYWwoMS4xKQorICAgICBEZWNpbWFsKCcxLjEwMDAwMDAwMDAwMDAwMDA4ODgxNzg0MTk3MDAxMjUyMzIzMzg5MDUzMzQ0NzI2NTYyNScpCisKKy0gSXNzdWUgIzgyOTQ6IFRoZSBGcmFjdGlvbiBjb25zdHJ1Y3RvciBub3cgYWNjZXB0cyBEZWNpbWFsIGFuZCBmbG9hdCBpbnN0YW5jZXMKKyAgZGlyZWN0bHkuCisKKy0gSXNzdWUgIzcyNzk6IENvbXBhcmlzb25zIGludm9sdmluZyBhIERlY2ltYWwgc2lnbmFsaW5nIE5hTiBub3cgc2lnbmFsCisgIEludmFsaWRPcGVyYXRpb24gaW5zdGVhZCBvZiByZXR1cm5pbmcgRmFsc2UuICAoQ29tcGFyaXNvbnMgaW52b2x2aW5nIGEgcXVpZXQKKyAgTmFOIGFyZSB1bmNoYW5nZWQuKSAgQWxzbywgRGVjaW1hbCBxdWlldCBOYU5zIGFyZSBub3cgaGFzaGFibGU7IERlY2ltYWwKKyAgc2lnbmFsaW5nIE5hTnMgcmVtYWluIHVuaGFzaGFibGUuCisKKy0gSXNzdWUgIzI1MzE6IENvbXBhcmlzb24gb3BlcmF0aW9ucyBiZXR3ZWVuIGZsb2F0cyBhbmQgRGVjaW1hbCBpbnN0YW5jZXMgbm93CisgIHJldHVybiBhIHJlc3VsdCBiYXNlZCBvbiB0aGUgbnVtZXJpYyB2YWx1ZXMgb2YgdGhlIG9wZXJhbmRzOyBwcmV2aW91c2x5IHRoZXkKKyAgcmV0dXJuZWQgYW4gYXJiaXRyYXJ5IHJlc3VsdCBiYXNlZCBvbiB0aGUgcmVsYXRpdmUgb3JkZXJpbmcgb2YgaWQoZmxvYXQpIGFuZAorICBpZChEZWNpbWFsKS4gIFNlZSBhbHNvIGlzc3VlICM4MTg4LCB3aGljaCBhZGRzIERlY2ltYWwtdG8tRnJhY3Rpb24KKyAgY29tcGFyaXNvbnMuCisKKy0gQWRkZWQgYSBzdWJ0cmFjdCgpIG1ldGhvZCB0byBjb2xsZWN0aW9ucy5Db3VudGVyKCkuCisKKy0gSXNzdWUgIzgyMzM6IFdoZW4gcnVuIGFzIGEgc2NyaXB0LCBweV9jb21waWxlLnB5IG9wdGlvbmFsbHkgdGFrZXMgYSBzaW5nbGUKKyAgYXJndW1lbnQgYC1gIHdoaWNoIHRlbGxzIGl0IHRvIHJlYWQgZmlsZXMgdG8gY29tcGlsZSBmcm9tIHN0ZGluLiAgRWFjaCBsaW5lIGlzCisgIHJlYWQgb24gZGVtYW5kIGFuZCB0aGUgbmFtZWQgZmlsZSBpcyBjb21waWxlZCBpbW1lZGlhdGVseS4gIChPcmlnaW5hbCBwYXRjaCBieQorICBQaW90ciBPxbxhcm93c2tpKS4KKworLSBCYWNrd2FyZHMgaW5jb21wYXRpYmxlIGNoYW5nZTogVW5pY29kZSBjb2RlcG9pbnRzIGxpbmUgdGFidWxhdGlvbiAoMHgwQikgYW5kCisgIGZvcm0gZmVlZCAoMHgwQykgYXJlIG5vdyBjb25zaWRlcmVkIGxpbmVicmVha3MsIGFzIHNwZWNpZmllZCBpbiBVbmljb2RlCisgIFN0YW5kYXJkIEFubmV4ICMxNC4gIFNlZSBpc3N1ZSAjNzY0My4gIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjE0LworCistIENvbXBhcmlzb25zIHVzaW5nIG9uZSBvZiA8LCA8PSwgPiwgPj0gYmV0d2VlbiBhIGNvbXBsZXggaW5zdGFuY2UgYW5kIGEKKyAgRnJhY3Rpb25zIGluc3RhbmNlIG5vdyByYWlzZSBUeXBlRXJyb3IgaW5zdGVhZCBvZiByZXR1cm5pbmcgVHJ1ZS9GYWxzZS4gIFRoaXMKKyAgbWFrZXMgRnJhY3Rpb24gPD0+IGNvbXBsZXggY29tcGFyaXNvbnMgY29uc2lzdGVudCB3aXRoIGludCA8PT4gY29tcGxleCwgZmxvYXQKKyAgPD0+IGNvbXBsZXgsIGFuZCBjb21wbGV4IDw9PiBjb21wbGV4IGNvbXBhcmlzb25zLgorCistIElzc3VlICM4MTM5OiBvc3NhdWRpb2RldiBkaWRuJ3QgaW5pdGlhbGl6ZSBpdHMgdHlwZXMgcHJvcGVybHksIHRoZXJlZm9yZSBzb21lCisgIG1ldGhvZHMgKHN1Y2ggYXMgb3NzX21peGVyX2RldmljZS5maWxlbm8oKSkgd2VyZSBub3QgYXZhaWxhYmxlLiAgSW5pdGlhbCBwYXRjaAorICBieSBCZXJ0cmFuZCBKYW5pbi4KKworLSBJc3N1ZSAjODIwNTogUmVtb3ZlIHRoZSAiTW9kdWxlcyIgZGlyZWN0b3J5IGZyb20gc3lzLnBhdGggd2hlbiBQeXRob24gaXMKKyAgcnVubmluZyBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkgKFBPU0lYIG9ubHkpLgorCistIElzc3VlICM3NTEyOiBzaHV0aWwuY29weXN0YXQoKSBjb3VsZCByYWlzZSBhbiBPU0Vycm9yIHdoZW4gdGhlIGZpbGVzeXN0ZW0KKyAgZGlkbid0IHN1cHBvcnQgY2hmbGFncygpIChmb3IgZXhhbXBsZSBaRlMgdW5kZXIgRnJlZUJTRCkuICBUaGUgZXJyb3IgaXMgbm93CisgIHNpbGVuY2VkLgorCistIElzc3VlICM3ODYwOiBwbGF0Zm9ybS51bmFtZSBub3cgcmVwb3J0cyB0aGUgY29ycmVjdCAnbWFjaGluZScgdHlwZSB3aGVuIFB5dGhvbgorICBpcyBydW5uaW5nIGluIFdPVzY0IG1vZGUgb24gNjQgYml0IFdpbmRvd3MuCisKKy0gSXNzdWUgIzM4OTAsICM4MjIyOiBGaXggcmVjdigpIGFuZCByZWN2X2ludG8oKSBvbiBub24tYmxvY2tpbmcgU1NMIHNvY2tldHMuCisgIEFsc28sIGVuYWJsZSB0aGUgU1NMX01PREVfQVVUT19SRVRSWSBmbGFnIG9uIFNTTCBzb2NrZXRzLCBzbyB0aGF0IGJsb2NraW5nCisgIHJlYWRzIGFuZCB3cml0ZXMgYXJlIGFsd2F5cyByZXRyaWVkIGJ5IE9wZW5TU0wgaXRzZWxmLgorCistIElzc3VlICM0MjgyOiBGaXggdGhlIG1haW4gZnVuY3Rpb24gb2YgdGhlIHByb2ZpbGUgbW9kdWxlIGZvciBhIG5vbi1BU0NJSQorICBzY3JpcHQsIG9wZW4gdGhlIGZpbGUgaW4gYmluYXJ5IG1vZGUgYW5kIG5vdCBpbiB0ZXh0IG1vZGUgd2l0aCB0aGUgZGVmYXVsdAorICAodXRmOCkgZW5jb2RpbmcuCisKKy0gSXNzdWUgIzgxNzk6IEZpeCBtYWNwYXRoLnJlYWxwYXRoKCkgb24gYSBub24tZXhpc3RpbmcgcGF0aC4KKworLSBJc3N1ZSAjODAyNDogVXBkYXRlIHRoZSBVbmljb2RlIGRhdGFiYXNlIHRvIDUuMi4KKworLSBJc3N1ZSAjODE2ODogcHlfY29tcGlsZSBub3cgaGFuZGxlcyBmaWxlcyB3aXRoIHV0Zi04IEJPTVMuCisKKy0gYGB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmdgYCBub3cgcmV0dXJucyBgYCd1dGYtOC1zaWcnYGAgd2hlbiBhIFVURi04IEJPTSBpcworICBkZXRlY3RlZC4KKworLSBJc3N1ZSAjNjcxNi8yOiBCYWNrc2xhc2gtcmVwbGFjZSBlcnJvciBvdXRwdXQgaW4gY29tcGlsYWxsLgorCistIElzc3VlICM0OTYxOiBJbmNvbnNpc3RlbnQvd3JvbmcgcmVzdWx0IG9mIGFza3llc25vIGZ1bmN0aW9uIGluIHRrTWVzc2FnZUJveAorICB3aXRoIFRjbC9Uay04LjUuCisKKy0gSXNzdWUgIzgxNDA6IGV4dGVuZCBjb21waWxlYWxsIHRvIGNvbXBpbGUgc2luZ2xlIGZpbGVzLiAgQWRkIC1pIG9wdGlvbi4KKworLSBJc3N1ZSAjNzM1NjogY3R5cGVzLnV0aWw6IE1ha2UgcGFyc2luZyBvZiBsZGNvbmZpZyBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgdGhlCisgIGxvY2FsZS4KKworLSBUaGUgaW50ZXJuYWxzIG9mIHRoZSBzdWJwcm9jZXNzIG1vZHVsZSBvbiBQT1NJWCBzeXN0ZW1zIGhhdmUgYmVlbiByZXBsYWNlZCBieQorICBhbiBleHRlbnNpb24gbW9kdWxlIChfcG9zaXhzdWJwcm9jZXNzKSBzbyB0aGF0IHRoZSBmb3JrKCkrZXhlYygpIGNhbiBiZSBkb25lCisgIHNhZmVseSB3aXRob3V0IHRoZSBwb3NzaWJpbGl0eSBvZiBkZWFkbG9jayBpbiBtdWx0aXRocmVhZGVkIGFwcGxpY2F0aW9ucy4KKworLSBzdWJwcm9jZXNzLlBvcGVuIG5vdyBoYXMgcmVzdG9yZV9zaWduYWxzIGFuZCBzdGFydF9uZXdfc2Vzc2lvbiBmZWF0dXJlcy4gIFRoZQorICBkZWZhdWx0IG9mIHJlc3RvcmVfc2lnbmFscz1UcnVlIGlzIGEgbmV3IGJlaGF2aW9yIGNvbXBhcmVkIHRvIGVhcmxpZXIgUHl0aG9uCisgIHZlcnNpb25zLiAgVGhpcyBtZWFucyB0aGF0IHNpZ25hbHMgc3VjaCBhcyBTSUdQSVBFIGFyZSBub3QgaWdub3JlZCBieSBkZWZhdWx0CisgIGluIHN1YnByb2Nlc3NlcyBsYXVuY2hlZCBieSBQeXRob24gKElzc3VlICMxNjUyKS4KKworLSBJc3N1ZSAjNjQ3MjogVGhlIHhtbC5ldHJlZSBwYWNrYWdlIGlzIHVwZGF0ZWQgdG8gRWxlbWVudFRyZWUgMS4zLiAgVGhlCisgIGNFbGVtZW50VHJlZSBtb2R1bGUgaXMgdXBkYXRlZCB0b28uCisKKy0gSXNzdWUgIzc3NzQ6IFNldCBzeXMuZXhlY3V0YWJsZSB0byBhbiBlbXB0eSBzdHJpbmcgaWYgYXJndlswXSBoYXMgYmVlbiBzZXQgdG8KKyAgYW4gbm9uIGV4aXN0ZW50IHByb2dyYW0gbmFtZSBhbmQgUHl0aG9uIGlzIHVuYWJsZSB0byByZXRyaWV2ZSB0aGUgcmVhbCBwcm9ncmFtCisgIG5hbWUuCisKKy0gSXNzdWUgIzc4ODA6IEZpeCBzeXNjb25maWcgd2hlbiB0aGUgcHl0aG9uIGV4ZWN1dGFibGUgaXMgYSBzeW1ib2xpYyBsaW5rLgorCistIElzc3VlICM2NTA5OiBmaXggcmUuc3ViIHRvIHdvcmsgcHJvcGVybHkgd2hlbiB0aGUgcGF0dGVybiwgdGhlIHN0cmluZywgYW5kIHRoZQorICByZXBsYWNlbWVudCB3ZXJlIGFsbCBieXRlcy4gIFBhdGNoIGJ5IEFudG9pbmUgUGl0cm91LgorCistIFRoZSBzcWxpdGUzIG1vZHVsZSB3YXMgdXBkYXRlZCB0byBweXNxbGl0ZSAyLjYuMC4gVGhpcyBmaXhlcyBzZXZlcmFsIG9ic2N1cmUKKyAgYnVncyBhbmQgYWxsb3dzIGxvYWRpbmcgU1FMaXRlIGV4dGVuc2lvbnMgZnJvbSBzaGFyZWQgbGlicmFyaWVzLgorCistIElzc3VlICMxMDU0OTQzOiBGaXggYGB1bmljb2RlZGF0YS5ub3JtYWxpemUoJ05GQycsIHRleHQpYGAgZm9yIHRoZSBQdWJsaWMKKyAgUmV2aWV3IElzc3VlICMyOSAoaHR0cDovL3VuaWNvZGUub3JnL3Jldmlldy9wci0yOS5odG1sKS4KKworLSBJc3N1ZSAjNzQ5NDogZml4IGEgY3Jhc2ggaW4gX2xzcHJvZiAoY1Byb2ZpbGUpIGFmdGVyIGNsZWFyaW5nIHRoZSBwcm9maWxlciwKKyAgcmVzZXQgYWxzbyB0aGUgcG9pbnRlciB0byB0aGUgY3VycmVudCBwb2ludGVyIGNvbnRleHQuCisKKy0gSXNzdWUgIzcyMzI6IEFkZCBzdXBwb3J0IGZvciB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIHRvIHRoZSBUYXJGaWxlCisgIGNsYXNzLgorCistIElzc3VlICM3MjUwOiBGaXggaW5mbyBsZWFrIG9mIG9zLmVudmlyb24gYWNyb3NzIG11bHRpLXJ1biB1c2VzIG9mCisgIHdzZ2lyZWYuaGFuZGxlcnMuQ0dJSGFuZGxlci4KKworLSBJc3N1ZSAjMTcyOTMwNTogRml4IGRvY3Rlc3QgdG8gaGFuZGxlIGVuY29kZSBlcnJvciB3aXRoICJiYWNrc2xhc2hyZXBsYWNlIi4KKworLSBJc3N1ZSAjNjkxMjkxOiBjb2RlY3Mub3BlbigpIHNob3VsZCBub3QgY29udmVydCBlbmQgb2YgbGluZXMgb24gcmVhZGluZyBhbmQKKyAgd3JpdGluZy4KKworLSBJc3N1ZSAjNzg2OTogbG9nZ2luZzogaW1wcm92ZWQgZGlhZ25vc3RpYyBmb3IgZm9ybWF0LXRpbWUgZXJyb3JzLgorCistIElzc3VlICM3ODY4OiBsb2dnaW5nOiBhZGRlZCBsb2dnZXJDbGFzcyBhdHRyaWJ1dGUgdG8gTWFuYWdlci4KKworLSBsb2dnaW5nOiBJbXBsZW1lbnRlZCBQRVAgMzkxLgorCistIElzc3VlICMxNTM3NzIxOiBBZGQgYSB3cml0ZWhlYWRlcigpIG1ldGhvZCB0byBjc3YuRGljdFdyaXRlci4KKworLSBJc3N1ZSAjNzk1OTogY3R5cGVzIGNhbGxiYWNrIGZ1bmN0aW9ucyBhcmUgbm93IHJlZ2lzdGVyZWQgY29ycmVjdGx5IHdpdGggdGhlCisgIGN5Y2xlIGdhcmJhZ2UgY29sbGVjdG9yLgorCistIElzc3VlICM1ODAxOiByZW1vdmVkIHNwdXJpb3VzIGVtcHR5IGxpbmVzIGluIHdzZ2lyZWYuCisKKy0gSXNzdWUgIzY2NjY6IGZpeCBidWcgaW4gdHJhY2UucHkgdGhhdCBhcHBsaWVkIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJlCisgIGlnbm9yZWQgb25seSB0byB0aGUgZmlyc3QgZmlsZS4gIE5vdGVkIGJ5IEJvZ2RhbiBPcGFuY2h1ay4KKworLSBJc3N1ZSAjNzU5NzogY3Vyc2VzLnVzZV9lbnYoKSBjYW4gbm93IGJlIGNhbGxlZCBiZWZvcmUgaW5pdHNjcigpLiAgTm90ZWQgYnkKKyAgS2FuLVJ1IENoZW4uCisKKy0gSXNzdWUgIzczMTA6IGZpeCB0aGUgX19yZXByX18gb2Ygb3MuZW52aXJvbiB0byBzaG93IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCisKKy0gSXNzdWUgIzc5NzA6IGVtYWlsLkdlbmVyYXRvci5mbGF0dGVuIG5vdyBjb3JyZWN0bHkgZmxhdHRlbnMgbWVzc2FnZS9yZmM4MjIKKyAgbWVzc2FnZXMgcGFyc2VkIGJ5IGVtYWlsLlBhcnNlci5IZWFkZXJQYXJzZXIuCisKKy0gSXNzdWUgIzczNjE6IEltcG9ydGxpYiB3YXMgbm90IHByb3Blcmx5IGNoZWNraW5nIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4KKyAgYnl0ZWNvZGUgZmlsZSB3aGVuIGl0IHdhcyBsZXNzIHRoZW4gOCBieXRlcy4KKworLSBJc3N1ZSAjNzYzMzogSW4gdGhlIGRlY2ltYWwgbW9kdWxlLCBDb250ZXh0IGNsYXNzIG1ldGhvZHMgKHdpdGggdGhlIGV4Y2VwdGlvbgorICBvZiBjYW5vbmljYWwgYW5kIGlzX2Nhbm9uaWNhbCkgbm93IGFjY2VwdCBpbnN0YW5jZXMgb2YgaW50IGFuZCBsb25nIHdoZXJldmVyIGEKKyAgRGVjaW1hbCBpbnN0YW5jZSBpcyBhY2NlcHRlZCwgYW5kIGltcGxpY2l0bHkgY29udmVydCB0aGF0IGFyZ3VtZW50IHRvIERlY2ltYWwuCisgIFByZXZpb3VzbHkgb25seSBzb21lIGFyZ3VtZW50cyB3ZXJlIGNvbnZlcnRlZC4KKworLSBJc3N1ZSAjNzgzNTogc2hlbHZlIHNob3VsZCBubyBsb25nZXIgcHJvZHVjZSBteXN0ZXJpb3VzIHdhcm5pbmdzIGR1cmluZworICBpbnRlcnByZXRlciBzaHV0ZG93bi4KKworLSBJc3N1ZSAjMjc0NjogRG9uJ3QgZXNjYXBlIGFtcGVyc2FuZHMgYW5kIGFuZ2xlIGJyYWNrZXRzICgiJiIsICI8IiwgIj4iKSBpbiBYTUwKKyAgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMgYW5kIGNvbW1lbnRzLiAgVGhlc2UgcmF3IGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQgYnkgdGhlCisgIFhNTCBzcGVjaWZpY2F0aW9uLCBhbmQgYXJlIG5lY2Vzc2FyeSB3aGVuIG91dHB1dHRpbmcgZS5nLiAgUEhQIGNvZGUgaW4gYQorICBwcm9jZXNzaW5nIGluc3RydWN0aW9uLiAgUGF0Y2ggYnkgTmVpbCBNdWxsZXIuCisKKy0gSXNzdWUgIzYyMzM6IEVsZW1lbnRUcmVlIGZhaWxlZCBjb252ZXJ0aW5nIHVuaWNvZGUgY2hhcmFjdGVycyB0byBYTUwgZW50aXRpZXMKKyAgd2hlbiB0aGV5IGNvdWxkJ3QgYmUgcmVwcmVzZW50ZWQgaW4gdGhlIHJlcXVlc3RlZCBvdXRwdXQgZW5jb2RpbmcuICBQYXRjaCBieQorICBKZXJyeSBDaGVuLgorCistIElzc3VlICM2MDAzOiBhZGQgYW4gYXJndW1lbnQgdG8gYGB6aXBmaWxlLlppcGZpbGUud3JpdGVzdHJgYCB0byBzcGVjaWZ5IHRoZQorICBjb21wcmVzc2lvbiB0eXBlLgorCistIElzc3VlICM0NzcyOiBSYWlzZSBhIFZhbHVlRXJyb3Igd2hlbiBhbiB1bmtub3duIEJsdWV0b290aCBwcm90b2NvbCBpcworICBzcGVjaWZpZWQsIHJhdGhlciB0aGFuIGZhbGwgdGhyb3VnaCB0byBBRl9QQUNLRVQgKGluIHRoZSBgc29ja2V0YCBtb2R1bGUpLgorICBBbHNvLCByYWlzZSBWYWx1ZUVycm9yIHJhdGhlciB0aGFuIFR5cGVFcnJvciB3aGVuIGFuIHVua25vd24gVElQQyBhZGRyZXNzIHR5cGUKKyAgaXMgc3BlY2lmaWVkLiAgUGF0Y2ggYnkgQnJpYW4gQ3VydGluLgorCistIElzc3VlICM2OTM5OiBGaXggZmlsZSBJL08gb2JqZWN0cyBpbiB0aGUgYGlvYCBtb2R1bGUgdG8ga2VlcCB0aGUgb3JpZ2luYWwgZmlsZQorICBwb3NpdGlvbiB3aGVuIGNhbGxpbmcgYHRydW5jYXRlKClgLiAgSXQgd291bGQgcHJldmlvdXNseSBjaGFuZ2UgdGhlIGZpbGUKKyAgcG9zaXRpb24gdG8gdGhlIGdpdmVuIGFyZ3VtZW50LCB3aGljaCBnb2VzIGFnYWluc3QgdGhlIHRyYWRpdGlvbiBvZgorICBmdHJ1bmNhdGUoKSBhbmQgb3RoZXIgdHJ1bmNhdGlvbiBBUElzLiAgUGF0Y2ggYnkgUGFzY2FsIENoYW1ib24uCisKKy0gSXNzdWUgIzc2MTA6IFJld29ya2VkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnRlcm5hbAorICBgYHppcGZpbGUuWmlwRXh0RmlsZWBgIGNsYXNzIHVzZWQgdG8gcmVwcmVzZW50IGZpbGVzIHN0b3JlZCBpbnNpZGUgYW4KKyAgYXJjaGl2ZS4gIFRoZSBuZXcgaW1wbGVtZW50YXRpb24gaXMgc2lnbmlmaWNhbnRseSBmYXN0ZXIgYW5kIGNhbiBiZSB3cmFwcGVkIGluCisgIGEgYGBpby5CdWZmZXJlZFJlYWRlcmBgIG9iamVjdCBmb3IgbW9yZSBzcGVlZHVwcy4gIEl0IGFsc28gc29sdmVzIGFuCisgIGlzc3VlIHdoZXJlIGludGVybGVhdmVkIGNhbGxzIHRvIGByZWFkKClgIGFuZCBgcmVhZGxpbmUoKWAgZ2l2ZSB3cm9uZyByZXN1bHRzLgorICBQYXRjaCBieSBOaXIgQWlkZXMuCisKKy0gSXNzdWUgIzY5NjM6IEFkZGVkICJtYXh0YXNrc3BlcmNoaWxkIiBhcmd1bWVudCB0byBtdWx0aXByb2Nlc3NpbmcuUG9vbCwKKyAgYWxsb3dpbmcgZm9yIGEgbWF4aW11bSBudW1iZXIgb2YgdGFza3Mgd2l0aGluIHRoZSBwb29sIHRvIGJlIGNvbXBsZXRlZCBieSB0aGUKKyAgd29ya2VyIGJlZm9yZSB0aGF0IHdvcmtlciBpcyB0ZXJtaW5hdGVkLCBhbmQgYSBuZXcgb25lIGNyZWF0ZWQgdG8gcmVwbGFjZSBpdC4KKworLSBJc3N1ZSAjNzc5MjogUmVnaXN0ZXJpbmcgbm9uLWNsYXNzZXMgdG8gQUJDcyByYWlzZWQgYW4gb2JzY3VyZSBlcnJvci4KKworLSBJc3N1ZSAjNzc4NTogRG9uJ3QgYWNjZXB0IGJ5dGVzIGluIEZpbGVJTy53cml0ZSgpLgorCistIFJlbW92ZWQgdGhlIGZ1bmN0aW9ucyAndmVyaWZ5JyBhbmQgJ3ZlcmVxJyBmcm9tIExpYi90ZXN0L3N1cHBvcnQucHkuCisKKy0gSXNzdWUgIzc3NzM6IEZpeCBhbiBVbmJvdW5kTG9jYWxFcnJvciBpbiBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKSB3aGVuCisgIHRoZSByZWxlYXNlIGZpbGUgaXMgZW1wdHkuCisKKy0gSXNzdWUgIzc1NjE6IEZpeCBjcmFzaGVzIHdoZW4gdXNpbmcgYnl0ZWFycmF5IG9iamVjdHMgd2l0aCB0aGUgcG9zaXgKKyAgbW9kdWxlLgorCistIElzc3VlICMxNjcwNzY1OiBQcmV2ZW50IGVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3IgZnJvbSByZS13cmFwcGluZyBoZWFkZXJzIGluCisgIG11bHRpcGFydC9zaWduZWQgTUlNRSBwYXJ0cywgd2hpY2ggZml4ZXMgb25lIG9mIHRoZSBzb3VyY2VzIG9mIGludmFsaWQKKyAgbW9kaWZpY2F0aW9ucyB0byBzdWNoIHBhcnRzIGJ5IEdlbmVyYXRvci4KKworLSBJc3N1ZSAjNzcwMzogQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgYnVmZmVyIEFQSSB0byBgYmluYXNjaWkuYTJiaHF4YC4gIFBhdGNoCisgIGJ5IEZsb3JlbnQgWGljbHVuYSwgYWxvbmcgd2l0aCBzb21lIGFkZGl0aW9uYWwgdGVzdHMuCisKKy0gSXNzdWUgIzc3MDE6IEZpeCBjcmFzaCBpbiBiaW5hc2NpaS5iMmFfdXUoKSBpbiBkZWJ1ZyBtb2RlIHdoZW4gZ2l2ZW4gYSAxLWJ5dGUKKyAgYXJndW1lbnQuICBQYXRjaCBieSBWaWN0b3IgU3Rpbm5lci4KKworLSBJc3N1ZSAjMzI5OTogRml4IHBvc3NpYmxlIGNyYXNoIGluIHRoZSBfc3JlIG1vZHVsZSB3aGVuIGdpdmVuIGJhZCBhcmd1bWVudAorICB2YWx1ZXMgaW4gZGVidWcgbW9kZS4gIFBhdGNoIGJ5IFZpY3RvciBTdGlubmVyLgorCistIElzc3VlICMyODQ2OiBBZGQgc3VwcG9ydCBmb3IgZ3ppcC5HemlwRmlsZSByZWFkaW5nIHplcm8tcGFkZGVkIGZpbGVzLiAgUGF0Y2gKKyAgYnkgQnJpYW4gQ3VydGluLgorCistIElzc3VlICM3NjgxOiBVc2UgZmxvb3IgZGl2aXNpb24gaW4gYXBwcm9waWF0ZSBwbGFjZXMgaW4gdGhlIHdhdmUgbW9kdWxlLgorCistIElzc3VlICM1MzcyOiBEcm9wIHRoZSByZXVzZSBvZiAubyBmaWxlcyBpbiBEaXN0dXRpbHMnIGNjb21waWxlciAoc2luY2UKKyAgRXh0ZW5zaW9uIGV4dHJhIG9wdGlvbnMgbWF5IGNoYW5nZSB0aGUgb3V0cHV0IHdpdGhvdXQgY2hhbmdpbmcgdGhlIC5jCisgIGZpbGUpLiBJbml0aWFsIHBhdGNoIGJ5IENvbGxpbiBXaW50ZXIuCisKKy0gSXNzdWUgIzc2MTc6IE1ha2Ugc3VyZSBkaXN0dXRpbHMudW5peGNjb21waWxlci5Vbml4Q0NvbXBpbGVyIHJlY29nbml6ZXMgZ2NjCisgIHdoZW4gaXQgaGFzIGEgZnVsbHkgcXVhbGlmaWVkIGNvbmZpZ3VyYXRpb24gcHJlZml4LiBJbml0aWFsIHBhdGNoIGJ5IEFyZnJldmVyLgorCistIElzc3VlICM3MTA1OiBNYWtlIFdlYWtLZXlEaWN0aW9uYXJ5IGFuZCBXZWFrVmFsdWVEaWN0aW9uYXJ5IHJvYnVzdCBhZ2FpbnN0IHRoZQorICBkZXN0cnVjdGlvbiBvZiB3ZWFrcmVmJ2VkIG9iamVjdHMgd2hpbGUgaXRlcmF0aW5nLgorCistIElzc3VlICM3NDU1OiBGaXggcG9zc2libGUgY3Jhc2ggaW4gY1BpY2tsZSBvbiBpbnZhbGlkIGlucHV0LiAgUGF0Y2ggYnkgVmljdG9yCisgIFN0aW5uZXIuCisKKy0gSXNzdWUgIzE2MjgyMDU6IFNvY2tldCBmaWxlIG9iamVjdHMgcmV0dXJuZWQgYnkgc29ja2V0LnNvY2tldC5tYWtlZmlsZSgpIG5vdworICBwcm9wZXJseSBoYW5kbGVzIEVJTlRSIHdpdGhpbiB0aGUgcmVhZCwgcmVhZGxpbmUsIHdyaXRlICYgZmx1c2ggbWV0aG9kcy4gIFRoZQorICBzb2NrZXQuc2VuZGFsbCgpIG1ldGhvZCBub3cgcHJvcGVybHkgaGFuZGxlcyBpbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbHMuCisKKy0gSXNzdWUgIzc0NzE6IEltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIEd6aXBGaWxlJ3MgYnVmZmVyaW5nIG1lY2hhbmlzbSwgYW5kCisgIG1ha2UgaXQgaW1wbGVtZW50IHRoZSBgaW8uQnVmZmVyZWRJT0Jhc2VgIEFCQyB0byBhbGxvdyBmb3IgZnVydGhlciBzcGVlZHVwcyBieQorICB3cmFwcGluZyBpdCBpbiBhbiBgaW8uQnVmZmVyZWRSZWFkZXJgLiAgUGF0Y2ggYnkgTmlyIEFpZGVzLgorCistIElzc3VlICMzOTcyOiBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbiBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCBzb3VyY2VfYWRkcmVzcworICBwYXJhbWV0ZXIgdG8gYWxsb3cgc3BlY2lmeWluZyB3aGVyZSB5b3VyIGNvbm5lY3Rpb25zIGNvbWUgZnJvbS4KKworLSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24gbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwgc291cmNlX2FkZHJlc3MgcGFyYW1ldGVyLgorCistIElzc3VlICM1NTExOiBub3cgemlwZmlsZS5aaXBGaWxlIGNhbiBiZSB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLiAgSW5pdGlhbAorICBwYXRjaCBieSBCcmlhbiBDdXJ0aW4uCisKKy0gSXNzdWUgIzc1NTY6IE1ha2Ugc3VyZSBEaXN0dXRpbHMnIG1zdmM5Y29tcGlsZSByZWFkcyBhbmQgd3JpdGVzIHRoZSBNU1ZDIFhNTAorICBNYW5pZmVzdCBmaWxlIGluIHRleHQgbW9kZSBzbyBzdHJpbmcgcGF0dGVybnMgY2FuIGJlIHVzZWQgaW4gcmVndWxhcgorICBleHByZXNzaW9ucy4KKworLSBJc3N1ZSAjNzU1MjogUmVtb3ZlZCBsaW5lIGZlZWQgaW4gdGhlIGJhc2U2NCBBdXRob3JpemF0aW9uIGhlYWRlciBpbiB0aGUKKyAgRGlzdHV0aWxzIHVwbG9hZCBjb21tYW5kIHRvIGF2b2lkIGFuIGVycm9yIHdoZW4gUHlQSSByZWFkcyBpdC4gIFRoaXMgb2NjdXJzIG9uCisgIGxvbmcgcGFzc3dvcmRzLiBJbml0aWFsIHBhdGNoIGJ5IEpQIFN0LiBQaWVycmUuCisKKy0gSXNzdWUgIzcyMzE6IHVybGxpYjIgY2Fubm90IGhhbmRsZSBodHRwcyB3aXRoIHByb3h5IHJlcXVpcmluZyBhdXRoLiAgUGF0Y2ggYnkKKyAgVGF0c3VoaXJvIFRzdWppa2F3YS4KKworLSBJc3N1ZSAjNDc1NzogYHpsaWIuY29tcHJlc3NgIGFuZCBvdGhlciBtZXRob2RzIGluIHRoZSB6bGliIG1vZHVsZSBub3cgcmFpc2UgYQorICBUeXBlRXJyb3Igd2hlbiBnaXZlbiBhbiBgc3RyYCBvYmplY3QgKHJhdGhlciB0aGFuIGEgYGJ5dGVzYC1saWtlIG9iamVjdCkuCisgIFBhdGNoIGJ5IFZpY3RvciBTdGlubmVyIGFuZCBGbG9yZW50IFhpY2x1bmEuCisKKy0gSXNzdWUgIzczNDk6IE1ha2UgbWV0aG9kcyBvZiBmaWxlIG9iamVjdHMgaW4gdGhlIGlvIG1vZHVsZSBhY2NlcHQgTm9uZSBhcyBhbgorICBhcmd1bWVudCB3aGVyZSBmaWxlLWxpa2Ugb2JqZWN0cyAoaWUgU3RyaW5nSU8gYW5kIEJ5dGVzSU8pIGFjY2VwdCB0aGVtIHRvIG1lYW4KKyAgdGhlIHNhbWUgYXMgcGFzc2luZyBubyBhcmd1bWVudC4KKworLSBJc3N1ZSAjNzM1NzogdGFyZmlsZSBubyBsb25nZXIgc3VwcHJlc3NlcyBmYXRhbCBleHRyYWN0aW9uIGVycm9ycyBieSBkZWZhdWx0LgorCistIElzc3VlICM1OTQ5OiBhZGRlZCBjaGVjayBmb3IgY29ycmVjdCBsaW5lZW5kcyBpbiBpbnB1dCBmcm9tIElNQVAgc2VydmVyIGluCisgIGltYXBsaWIuCisKKy0gQWRkIGNvdW50KCkgYW5kIHJldmVyc2UoKSBtZXRob2RzIHRvIGNvbGxlY3Rpb25zLmRlcXVlKCkuCisKKy0gRml4IHZhcmlhdGlvbnMgb2YgZXh0ZW5kaW5nIGRlcXVlczogIGQuZXh0ZW5kKGQpICBkLmV4dGVuZGxlZnQoZCkgIGQrPWQKKworLSBJc3N1ZSAjNjk4NjogRml4IGNyYXNoIGluIHRoZSBKU09OIEMgYWNjZWxlcmF0b3Igd2hlbiBjYWxsZWQgd2l0aCB0aGUgd3JvbmcKKyAgcGFyYW1ldGVyIHR5cGVzLiAgUGF0Y2ggYnkgVmljdG9yIFN0aW5uZXIuCisKKy0gSXNzdWUgIzc0NTc6IGFkZGVkIGEgcmVhZF9wa2dfZmlsZSBtZXRob2QgdG8KKyAgZGlzdHV0aWxzLmRpc3QuRGlzdHJpYnV0aW9uTWV0YWRhdGEuCisKKy0gbG9nZ2luZzogQWRkZWQgb3B0aW9uYWwgYHNlY3VyZWAgcGFyYW1ldGVyIHRvIFNNVFBIYW5kbGVyLCB0byBlbmFibGUgdXNlIG9mCisgIFRMUyB3aXRoIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzLgorCistIElzc3VlICMxOTIzOiBGaXhlZCB0aGUgcmVtb3ZhbCBvZiBtZWFuaW5nZnVsIHNwYWNlcyB3aGVuIFBLRy1JTkZPIGlzIGdlbmVyYXRlZAorICBpbiBEaXN0dXRpbHMuICBQYXRjaCBieSBTdGVwaGVuIEVtc2xpZS4KKworLSBJc3N1ZSAjNDEyMDogRHJvcCByZWZlcmVuY2UgdG8gQ1JUIGZyb20gbWFuaWZlc3Qgd2hlbiBidWlsZGluZyBleHRlbnNpb25zIHdpdGgKKyAgbXN2Yzljb21waWxlci4KKworLSBJc3N1ZSAjNzMzMzogVGhlIGBwb3NpeGAgbW9kdWxlIGdhaW5zIGFuIGBpbml0Z3JvdXBzKClgIGZ1bmN0aW9uIHByb3ZpZGluZworICBhY2Nlc3MgdG8gdGhlIGluaXRncm91cHMoMykgQyBsaWJyYXJ5IGNhbGwgb24gVW5peCBzeXN0ZW1zIHdoaWNoIGltcGxlbWVudCBpdC4KKyAgUGF0Y2ggYnkgSmVhbi1QYXVsIENhbGRlcm9uZS4KKworLSBJc3N1ZSAjNzQwODogRml4ZWQgZGlzdHV0aWxzLnRlc3RzLnNkaXN0IHNvIGl0IGRvZXNuJ3QgY2hlY2sgZm9yIGdyb3VwCisgIG93bmVyc2hpcCB3aGVuIHRoZSBncm91cCBpcyBub3QgZm9yY2VkLCBiZWNhdXNlIHRoZSBncm91cCBtYXkgYmUgZGlmZmVyZW50CisgIGZyb20gdGhlIHVzZXIncyBncm91cCBhbmQgaW5oZXJpdCBmcm9tIGl0cyBjb250YWluZXIgd2hlbiB0aGUgdGVzdCBpcyBydW4uCisKKy0gSXNzdWUgIzQ0ODY6IFdoZW4gYW4gZXhjZXB0aW9uIGhhcyBhbiBleHBsaWNpdCBjYXVzZSwgZG8gbm90IHByaW50IGl0cworICBpbXBsaWNpdCBjb250ZXh0IHRvby4gIFRoaXMgYWZmZWN0cyB0aGUgYHRyYWNlYmFja2AgbW9kdWxlIGFzIHdlbGwgYXMgYnVpbHQtaW4KKyAgZXhjZXB0aW9uIHByaW50aW5nLgorCistIElzc3VlICMxNTE1OiBFbmFibGUgdXNlIG9mIGRlZXBjb3B5KCkgd2l0aCBpbnN0YW5jZSBtZXRob2RzLiAgUGF0Y2ggYnkgUm9iZXJ0CisgIENvbGxpbnMuCisKKy0gSXNzdWUgIzc0MDM6IGxvZ2dpbmc6IEZpeGVkIHBvc3NpYmxlIHJhY2UgY29uZGl0aW9uIGluIGxvY2sgY3JlYXRpb24uCisKKy0gSXNzdWUgIzY4NDU6IEFkZCByZXN0YXJ0IHN1cHBvcnQgZm9yIGJpbmFyeSB1cGxvYWQgaW4gZnRwbGliLiAgVGhlCisgIGBzdG9yYmluYXJ5KClgIG1ldGhvZCBvZiBGVFAgYW5kIEZUUF9UTFMgb2JqZWN0cyBnYWlucyBhbiBvcHRpb25hbCBgcmVzdGAKKyAgYXJndW1lbnQuICBQYXRjaCBieSBQYWJsbyBNb3V6by4KKworLSBJc3N1ZSAjNTc4ODogYGRhdGV0aW1lLnRpbWVkZWx0YWAgb2JqZWN0cyBnZXQgYSBuZXcgYHRvdGFsX3NlY29uZHMoKWAgbWV0aG9kCisgIHJldHVybmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIHNlY29uZHMgaW4gdGhlIGR1cmF0aW9uLiAgUGF0Y2ggYnkgQnJpYW4KKyAgUXVpbmxhbi4KKworLSBJc3N1ZSAjNzEzMzogU1NMIG9iamVjdHMgbm93IHN1cHBvcnQgdGhlIG5ldyBidWZmZXIgQVBJLgorCistIElzc3VlICMxNDg4OTQzOiBkaWZmbGliLkRpZmZlcigpIGRvZXNuJ3QgYWx3YXlzIGFkZCBoaW50cyBmb3IgdGFiIGNoYXJhY3RlcnMuCisKKy0gSXNzdWUgIzYxMjM6IHRhcmZpbGUgbm93IG9wZW5zIGVtcHR5IGFyY2hpdmVzIGNvcnJlY3RseSBhbmQgY29uc2lzdGVudGx5CisgIHJhaXNlcyBSZWFkRXJyb3Igb24gZW1wdHkgZmlsZXMuCisKKy0gSXNzdWUgIzczNTQ6IGRpc3R1dGlscy50ZXN0cy50ZXN0X21zdmM5Y29tcGlsZXIgLSBkcmFnZnVsbHdpbmRvd3MgY2FuIGJlIDIuCisKKy0gSXNzdWUgIzUwMzc6IFByb3h5IHRoZSBfX2J5dGVzX18gc3BlY2lhbCBtZXRob2QgaW5zdGVhZCB0byBfX2J5dGVzX18gaW5zdGVhZAorICBvZiBfX3N0cl9fLgorCistIElzc3VlICM3MzQxOiBDbG9zZSB0aGUgaW50ZXJuYWwgZmlsZSBvYmplY3QgaW4gdGhlIFRhckZpbGUgY29uc3RydWN0b3IgaW4gY2FzZQorICBvZiBhbiBlcnJvci4KKworLSBJc3N1ZSAjNzI5MzogZGlzdHV0aWxzLnRlc3RfbXN2Yzljb21waWxlciBpcyBmaXhlZCB0byB3b3JrIG9uIGFueSBmcmVzaAorICBXaW5kb3dzIGJveC4gSGVscCBwcm92aWRlZCBieSBEYXZpZCBCb2xlbi4KKworLSBJc3N1ZSAjMjA1NDogZnRwbGliIG5vdyBwcm92aWRlcyBhbiBGVFBfVExTIGNsYXNzIHRvIGRvIHNlY3VyZSBGVFAgdXNpbmcgVExTCisgIG9yIFNTTC4gIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbGEnLgorCistIElzc3VlICM3MzI4OiBweWRvYyBubyBsb25nZXIgY29ycnVwdHMgc3lzLnBhdGggd2hlbiBydW4gd2l0aCB0aGUgJy1tJyBzd2l0Y2guCisKKy0gSXNzdWUgIzQ5Njk6IFRoZSBtaW1ldHlwZXMgbW9kdWxlIG5vdyByZWFkcyB0aGUgTUlNRSBkYXRhYmFzZSBmcm9tIHRoZQorICByZWdpc3RyeSB1bmRlciBXaW5kb3dzLiAgUGF0Y2ggYnkgR2FicmllbCBHZW5lbGxpbmEuCisKKy0gSXNzdWUgIzY4MTY6IHJ1bnB5IG5vdyBwcm92aWRlcyBhIHJ1bl9wYXRoIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIFB5dGhvbiBjb2RlIHRvCisgIGV4ZWN1dGUgZmlsZSBwYXRocyB0aGF0IHJlZmVyIHRvIHNvdXJjZSBvciBjb21waWxlZCBQeXRob24gZmlsZXMgYXMgd2VsbCBhcworICB6aXBmaWxlcywgZGlyZWN0b3JpZXMgYW5kIG90aGVyIHZhbGlkIHN5cy5wYXRoIGVudHJpZXMgdGhhdCBjb250YWluIGEKKyAgX19tYWluX18ucHkgZmlsZS4gIFRoaXMgYWxsb3dzIGFwcGxpY2F0aW9ucyB0aGF0IHJ1biBvdGhlciBQeXRob24gc2NyaXB0cyB0bworICBzdXBwb3J0IHRoZSBzYW1lIGZsZXhpYmlsaXR5IGFzIHRoZSBDUHl0aG9uIGNvbW1hbmQgbGluZSBpdHNlbGYuCisKKy0gSXNzdWUgIzczMTg6IG11bHRpcHJvY2Vzc2luZyBub3cgdXNlcyBhIHRpbWVvdXQgd2hlbiBpdCBmYWlscyB0byBlc3RhYmxpc2ggYQorICBjb25uZWN0aW9uIHdpdGggYW5vdGhlciBwcm9jZXNzLCByYXRoZXIgdGhhbiBsb29waW5nIGVuZGxlc3NseS4gIFRoZSBkZWZhdWx0CisgIHRpbWVvdXQgaXMgMjAgc2Vjb25kcywgd2hpY2ggc2hvdWxkIGJlIGFtcGx5IHN1ZmZpY2llbnQgZm9yIGxvY2FsIGNvbm5lY3Rpb25zLgorCistIElzc3VlICM3MTk3OiBBbGxvdyB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lciBvYmplY3RzIHRvIGJlIHBpY2tsZWQgYW5kCisgIHVucGlja2xlZC4gIFRoaXMgZml4ZXMgY3Jhc2hlcyB1bmRlciBXaW5kb3dzIHdoZW4gdHJ5aW5nIHRvIHJ1bgorICB0ZXN0X211bHRpcHJvY2Vzc2luZyBpbiB2ZXJib3NlIG1vZGUuCisKKy0gSXNzdWUgIzc4OTM6IGBgdW5pdHRlc3QuVGV4dFRlc3RSZXN1bHRgYCBpcyBtYWRlIHB1YmxpYyBhbmQgYSBgYHJlc3VsdGNsYXNzYGAKKyAgYXJndW1lbnQgYWRkZWQgdG8gdGhlIFRleHRUZXN0UnVubmVyIGNvbnN0cnVjdG9yIGFsbG93aW5nIGEgZGlmZmVyZW50IHJlc3VsdAorICBjbGFzcyB0byBiZSB1c2VkIHdpdGhvdXQgaGF2aW5nIHRvIHN1YmNsYXNzLgorCistIElzc3VlICM3NTg4OiBgYHVuaXR0ZXN0LlRleHRUZXN0UmVzdWx0LmdldERlc2NyaXB0aW9uYGAgbm93IGluY2x1ZGVzIHRoZSB0ZXN0CisgIG5hbWUgaW4gZmFpbHVyZSByZXBvcnRzIGV2ZW4gaWYgdGhlIHRlc3QgaGFzIGEgZG9jc3RyaW5nLgorCistIElzc3VlICMzMDAxOiBBZGQgYSBDIGltcGxlbWVudGF0aW9uIG9mIHJlY3Vyc2l2ZSBsb2NrcyB3aGljaCBpcyB1c2VkIGJ5CisgIGRlZmF1bHQgd2hlbiBpbnN0YW50aWF0aW5nIGEgYHRocmVhZGluZy5STG9ja2Agb2JqZWN0LiBUaGlzIG1ha2VzIHJlY3Vyc2l2ZQorICBsb2NrcyBhcyBmYXN0IGFzIHJlZ3VsYXIgbm9uLXJlY3Vyc2l2ZSBsb2NrcyAocHJldmlvdXNseSwgdGhleSB3ZXJlIHNsb3dlciBieQorICAxMHggdG8gMTV4KS4KKworLSBJc3N1ZSAjNzI4MjogRml4IGEgbWVtb3J5IGxlYWsgd2hlbiBhbiBSTG9jayB3YXMgdXNlZCBpbiBhIHRocmVhZCBvdGhlciB0aGFuCisgIHRob3NlIHN0YXJ0ZWQgdGhyb3VnaCBgdGhyZWFkaW5nLlRocmVhZGAgKGZvciBleGFtcGxlLCB1c2luZworICBgX3RocmVhZC5zdGFydF9uZXdfdGhyZWFkKClgKS4KKworLSBJc3N1ZSAjNzE4NzogSW1wb3J0bGliIHdvdWxkIG5vdCBzaWxlbmNlIHRoZSBJT0Vycm9yIHJhaXNlZCB3aGVuIHRyeWluZyB0bworICB3cml0ZSBuZXcgYnl0ZWNvZGUgd2hlbiBpdCB3YXMgbWFkZSByZWFkLW9ubHkuCisKKy0gSXNzdWUgIzcyNjQ6IEZpeCBhIHBvc3NpYmxlIGRlYWRsb2NrIHdoZW4gZGVhbGxvY2F0aW5nIHRocmVhZC1sb2NhbCBvYmplY3RzCisgIHdoaWNoIGFyZSBwYXJ0IG9mIGEgcmVmZXJlbmNlIGN5Y2xlLgorCistIElzc3VlICM3MjExOiBBbGxvdyA2NC1iaXQgdmFsdWVzIGZvciB0aGUgYGlkZW50YCBhbmQgYGRhdGFgIGZpZWxkcyBvZiBrZXZlbnQKKyAgb2JqZWN0cyBvbiA2NC1iaXQgc3lzdGVtcy4gIFBhdGNoIGJ5IE1pY2hhZWwgQnJvZ2h0b24uCisKKy0gSXNzdWUgIzY4OTY6IG1haWxib3guTWFpbGRpciBub3cgaW52YWxpZGF0ZXMgaXRzIGludGVybmFsIGNhY2hlIGVhY2ggdGltZSBhCisgIG1vZGlmaWNhdGlvbiBpcyBkb25lIHRocm91Z2ggaXQuICBUaGlzIGZpeGVzIGluY29uc2lzdGVuY2llcyBhbmQgdGVzdCBmYWlsdXJlcworICBvbiBzeXN0ZW1zIHdpdGggc2xpZ2h0bHkgYm9ndXMgbXRpbWUgYmVoYXZpb3VyLgorCistIElzc3VlICM3MjQ2ICYgSXNzdWUgIzcyMDg6IGdldHBhc3Mgbm93IHByb3Blcmx5IGZsdXNoZXMgaW5wdXQgYmVmb3JlIHJlYWRpbmcKKyAgZnJvbSBzdGRpbiBzbyB0aGF0IGV4aXN0aW5nIGlucHV0IGRvZXMgbm90IGNvbmZ1c2UgaXQgYW5kIGxlYWQgdG8gaW5jb3JyZWN0CisgIGVudHJ5IG9yIGFuIElPRXJyb3IuICBJdCBhbHNvIHByb3Blcmx5IGZsdXNoZXMgaXQgYWZ0ZXJ3YXJkcyB0byBhdm9pZCB0aGUKKyAgdGVybWluYWwgZWNob2luZyB0aGUgaW5wdXQgYWZ0ZXJ3YXJkcyBvbiBPU2VzIHN1Y2ggYXMgU29sYXJpcy4KKworLSBJc3N1ZSAjNzIzMzogRml4IGEgbnVtYmVyIG9mIHR3by1hcmd1bWVudCBEZWNpbWFsIG1ldGhvZHMgdG8gbWFrZSBzdXJlIHRoYXQKKyAgdGhleSBhY2NlcHQgYW4gaW50IG9yIGxvbmcgYXMgdGhlIHNlY29uZCBhcmd1bWVudC4gIEFsc28gZml4IGJ1Z2d5IGhhbmRsaW5nIG9mCisgIGxhcmdlIGFyZ3VtZW50cyAodGhvc2Ugd2l0aCBjb2VmZmljaWVudCBsb25nZXIgdGhhbiB0aGUgY3VycmVudCBwcmVjaXNpb24pIGluCisgIHNoaWZ0IGFuZCByb3RhdGUuCisKKy0gSXNzdWUgIzQ3NTA6IFN0b3JlIHRoZSBiYXNlbmFtZSBvZiB0aGUgb3JpZ2luYWwgZmlsZW5hbWUgaW4gdGhlIGd6aXAgRk5BTUUKKyAgaGVhZGVyIGFzIHJlcXVpcmVkIGJ5IFJGQyAxOTUyLgorCistIElzc3VlICMxMTgwOiBBZGRlZCBhIG5ldyBnbG9iYWwgb3B0aW9uIHRvIGlnbm9yZSB+Ly5weWRpc3R1dGlscy5jZmcgaW4KKyAgRGlzdHV0aWxzLgorCistIElzc3VlICM3MjE4OiBGaXggdGVzdF9zaXRlIGZvciB3aW4zMiwgdGhlIGRpcmVjdG9yeSBjb21wYXJpc29uIHdhcyBkb25lIHdpdGgKKyAgYW4gdXBwZXJjYXNlLgorCistIElzc3VlICM3MjA1OiBGaXggYSBwb3NzaWJsZSBkZWFkbG9jayB3aGVuIHVzaW5nIGEgQloyRmlsZSBvYmplY3QgZnJvbQorICBzZXZlcmFsIHRocmVhZHMgYXQgb25jZS4KKworLSBJc3N1ZSAjNzA3NzogbG9nZ2luZzogU3lzTG9nSGFuZGxlciBub3cgdHJlYXRzIFVuaWNvZGUgYXMgcGVyIFJGQyA1NDI0LgorCistIElzc3VlICM3MDk5OiBEZWNpbWFsLmlzX25vcm1hbCBub3cgcmV0dXJucyBUcnVlIGZvciBudW1iZXJzIHdpdGggZXhwb25lbnQKKyAgbGFyZ2VyIHRoYW4gZW1heC4KKworLSBJc3N1ZSAjNzA4MDogbG9jYWxlLnN0cnhmcm0oKSByYWlzZXMgYSBNZW1vcnlFcnJvciBvbiA2NC1iaXQgbm9uLVdpbmRvd3MKKyAgcGxhdGZvcm1zLCBhbmQgYXNzb3J0ZWQgbG9jYWxlIGZpeGVzIGJ5IERlcmsgRHJ1a2tlci4KKworLSBJc3N1ZSAjNTgzMzogRml4IGV4dHJhIHNwYWNlIGNoYXJhY3RlciBpbiByZWFkbGluZSBjb21wbGV0aW9uIHdpdGggdGhlIEdOVQorICByZWFkbGluZSBsaWJyYXJ5IHZlcnNpb24gNi4wLgorCistIElzc3VlICM2ODk0OiBGaXhlZCB0aGUgaXNzdWUgdXJsbGliMiBkb2Vzbid0IHJlc3BlY3QgIm5vX3Byb3h5IiBlbnZpcm9ubWVudC4KKworLSBJc3N1ZSAjNzA4NjogQWRkZWQgVENQIHN1cHBvcnQgdG8gU3lzTG9nSGFuZGxlciwgYW5kIHRpZGllZCB1cCBzb21lCisgIGFuYWNocm9uaXNtcyBpbiB0aGUgY29kZSB3aGljaCB3ZXJlIGEgcmVsaWMgb2YgMS41LjIgY29tcGF0aWJpbGl0eS4KKworLSBJc3N1ZSAjNzA4MjogV2hlbiBmYWxsaW5nIGJhY2sgdG8gdGhlIE1JTUUgJ25hbWUnIHBhcmFtZXRlciwgdGhlIGNvcnJlY3QgcGxhY2UKKyAgdG8gbG9vayBmb3IgaXQgaXMgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIuCisKKy0gTWFrZSB0b2tlbml6ZS5kZXRlY3RfY29kaW5nKCkgbm9ybWFsaXplIHV0Zi04IGFuZCBpc28tODg1OS0xIHZhcmlhbnRzIGxpa2UgdGhlCisgIGJ1aWx0aW4gdG9rZW5pemVyLgorCistIElzc3VlICM3MDQ4OiBGb3JjZSBEZWNpbWFsLmxvZ2IgdG8gcm91bmQgaXRzIHJlc3VsdCB3aGVuIHRoYXQgcmVzdWx0IGlzIHRvbworICBsYXJnZSB0byBmaXQgaW4gdGhlIGN1cnJlbnQgcHJlY2lzaW9uLgorCistIElzc3VlICM2MjM2LCAjNjM0ODogRml4IHZhcmlvdXMgZmFpbHVyZXMgaW4gdGhlIEkvTyBsaWJyYXJ5IHVuZGVyIEFJWCBhbmQKKyAgb3RoZXIgcGxhdGZvcm1zLCB3aGVuIHVzaW5nIGEgbm9uLWdjYyBjb21waWxlci4gUGF0Y2ggYnkgRGVyayBEcnVra2VyLgorCistIElzc3VlICM0NjA2OiBQYXNzaW5nICdOb25lJyBpZiBjdHlwZXMgYXJndHlwZSBpcyBzZXQgdG8gUE9JTlRFUiguLi4pICBkb2VzIG5vdworICBhbHdheXMgcmVzdWx0IGluIE5VTEwuCisKKy0gSXNzdWUgIzUwNDI6IFN0cnVjdHVyZSBzdWItc3ViY2xhc3MgZG9lcyBub3cgaW5pdGlhbGl6ZSBjb3JyZWN0bHkgd2l0aCBiYXNlCisgIGNsYXNzIHBvc2l0aW9uYWwgYXJndW1lbnRzLgorCistIElzc3VlICM2ODgyOiBJbXBvcnQgdXVpZCBjcmVhdGVzIHpvbWJpZXMgcHJvY2Vzc2VzLgorCistIElzc3VlICM2NjM1OiBGaXggcHJvZmlsZXIgcHJpbnRpbmcgdXNhZ2UgbWVzc2FnZS4KKworLSBJc3N1ZSAjNjg1NjogQWRkIGEgZmlsdGVyIGtleXdvcmQgYXJndW1lbnQgdG8gVGFyRmlsZS5hZGQoKS4KKworLSBJc3N1ZSAjNjg4ODogcGRiJ3MgYWxpYXMgY29tbWFuZCB3YXMgYnJva2VuIHdoZW4gbm8gYXJndW1lbnRzIHdlcmUgZ2l2ZW4uCisKKy0gSXNzdWUgIzY4NTc6IERlZmF1bHQgZm9ybWF0KCkgYWxpZ25tZW50IHNob3VsZCBiZSAnPicgZm9yIERlY2ltYWwgaW5zdGFuY2VzLgorCistIElzc3VlICM2Nzk1OiBpbnQoRGVjaW1hbCgnbmFuJykpIG5vdyByYWlzZXMgVmFsdWVFcnJvciBpbnN0ZWFkIG9mIHJldHVybmluZworICBOYU4gb3IgcmFpc2luZyBJbnZhbGlkQ29udGV4dC4gIEFsc28sIGZpeCBpbmZpbml0ZSByZWN1cnNpb24gaW4KKyAgbG9uZyhEZWNpbWFsKCduYW4nKSkuCisKKy0gSXNzdWUgIzY4NTA6IEZpeCBidWcgaW4gRGVjaW1hbC5fcGFyc2VfZm9ybWF0X3NwZWNpZmllciBmb3IgZm9ybWF0cyB3aXRoIG5vCisgIHR5cGUgc3BlY2lmaWVyLgorCistIElzc3VlICM2MjM5OiBjdHlwZXMuY19jaGFyX3AgcmV0dXJuIHZhbHVlIG11c3QgcmV0dXJuIGJ5dGVzLgorCistIElzc3VlICM2ODM4OiBVc2UgYSBsaXN0IHRvIGFjY3VtdWxhdGUgdGhlIHZhbHVlIGluc3RlYWQgb2YgcmVwZWF0ZWRseQorICBjb25jYXRlbmF0aW5nIHN0cmluZ3MgaW4gaHR0cC5jbGllbnQncyBIVFRQUmVzcG9uc2UuX3JlYWRfY2h1bmtlZCBwcm92aWRpbmcgYQorICBzaWduaWZpY2FudCBzcGVlZCBpbmNyZWFzZSB3aGVuIGRvd25sb2FkaW5nIGxhcmdlIGZpbGVzIHNlcnZlbmQgd2l0aCBhCisgIFRyYW5zZmVyLUVuY29kaW5nIG9mICdjaHVua2VkJy4KKworLSBUcnlpbmcgdG8gaW1wb3J0IGEgc3VibW9kdWxlIGZyb20gYSBtb2R1bGUgdGhhdCBpcyBub3QgYSBwYWNrYWdlLCBJbXBvcnRFcnJvcgorICBzaG91bGQgYmUgcmFpc2VkLCBub3QgQXR0cmlidXRlRXJyb3IuCisKKy0gV2hlbiB0aGUgZ2xvYmFscyBwYXN0IHRvIGltcG9ydGxpYi5fX2ltcG9ydF9fKCkgaGFzIF9fcGFja2FnZV9fIHNldCB0byBOb25lLAorICBmYWxsIGJhY2sgdG8gY29tcHV0aW5nIHdoYXQgX19wYWNrYWdlX18gc2hvdWxkIGJlIGluc3RlYWQgb2YgZ2l2aW5nIHVwLgorCistIFJhaXNlIGEgVHlwZUVycm9yIHdoZW4gdGhlIG5hbWUgb2YgYSBtb2R1bGUgdG8gYmUgaW1wb3J0ZWQgZm9yCisgIGltcG9ydGxpYi5fX2ltcG9ydF9fIGlzIG5vdCBhIHN0cmluZyAod2FzIHJhaXNpbmcgYW4gQXR0cmlidXRlRXJyb3IgYmVmb3JlKS4KKworLSBBbGxvdyB0aGUgZnJvbWxpc3QgcGFzc2VkIGludG8gaW1wb3J0bGliLl9faW1wb3J0X18gdG8gYmUgYW55IGl0ZXJhYmxlLgorCistIEhhdmUgaW1wb3J0bGliIHJhaXNlIEltcG9ydEVycm9yIGlmIE5vbmUgaXMgZm91bmQgaW4gc3lzLm1vZHVsZXMuCisKKy0gSXNzdWUgIzYwNTQ6IERvIG5vdCBub3JtYWxpemUgc3RvcmVkIHBhdGhuYW1lcyBpbiB0YXJmaWxlLgorCistIElzc3VlICM2Nzk0OiBGaXggRGVjaW1hbC5jb21wYXJlX3RvdGFsIGFuZCBEZWNpbWFsLmNvbXBhcmVfdG90YWxfbWFnOiBOYU4KKyAgcGF5bG9hZHMgYXJlIG5vdyBvcmRlcmVkIGJ5IGludGVnZXIgdmFsdWUgcmF0aGVyIHRoYW4gbGV4aWNvZ3JhcGhpY2FsbHkuCisKKy0gSXNzdWUgIzEzNTY5Njk6IEFkZCBtaXNzaW5nIGluZm8gbWV0aG9kcyBpbiB0aXguSExpc3QuCisKKy0gSXNzdWUgIzE1MjI1ODc6IE5ldyBjb25zdGFudHMgYW5kIG1ldGhvZHMgZm9yIHRoZSB0aXguR3JpZCB3aWRnZXQuCisKKy0gSXNzdWUgIzEyNTA0Njk6IEZpeCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRpeC5QYW5lZFdpbmRvdy5wYW5lcy4KKworLSBJc3N1ZSAjMTExOTY3MzogRG8gbm90IG92ZXJyaWRlIHRraW50ZXIuVGV4dCBtZXRob2RzIHdoZW4gY3JlYXRpbmcgYQorICBTY3JvbGxlZFRleHQuCisKKy0gSXNzdWUgIzY2NjU6IEZpeCBmbm1hdGNoIHRvIHByb3Blcmx5IG1hdGNoIGZpbGVuYW1lcyB3aXRoIG5ld2xpbmVzIGluIHRoZW0uCisKKy0gSXNzdWUgIzExMzU6IEFkZCB0aGUgWFZpZXcgYW5kIFlWaWV3IG1peC1pbnMgdG8gYXZvaWQgZHVwbGljYXRpbmcgdGhlIHh2aWV3KgorICBhbmQgeXZpZXcqIG1ldGhvZHMuCisKKy0gSXNzdWUgIzY2Mjk6IEZpeCBhIGRhdGEgY29ycnVwdGlvbiBpc3N1ZSBpbiB0aGUgbmV3IEkvTyBsaWJyYXJ5LCB3aGljaCBjb3VsZAorICBvY2N1ciB3aGVuIHdyaXRpbmcgdG8gYSBCdWZmZXJlZFJhbmRvbSBvYmplY3QgKGUuZy4gYSBmaWxlIG9wZW5lZCBpbiAicmIrIiBvcgorICAid2IrIiBtb2RlKSBhZnRlciBoYXZpbmcgYnVmZmVyZWQgYSBjZXJ0YWluIGFtb3VudCBvZiBkYXRhIGZvciByZWFkaW5nLiBUaGlzCisgIGJ1ZyB3YXMgbm90IHByZXNlbnQgaW4gdGhlIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uLgorCistIElzc3VlICM2NjIyOiBGaXggImxvY2FsIHZhcmlhYmxlICdzZWNyZXQnIHJlZmVyZW5jZWQgYmVmb3JlIGFzc2lnbm1lbnQiIGJ1ZyBpbgorICBQT1AzLmFwb3AuCisKKy0gSXNzdWUgIzI3MTU6IFJlbW92ZSByZW1uYW50cyBvZiBDYXJib24uRmlsZSBmcm9tIGJpbmhleCBtb2R1bGUuCisKKy0gSXNzdWUgIzY1OTU6IFRoZSBEZWNpbWFsIGNvbnN0cnVjdG9yIG5vdyBhbGxvd3MgYXJiaXRyYXJ5IFVuaWNvZGUgZGVjaW1hbAorICBkaWdpdHMgaW4gaW5wdXQsIGFzIHJlY29tbWVuZGVkIGJ5IHRoZSBzdGFuZGFyZC4gIFByZXZpb3VzbHkgaXQgd2FzIHJlc3RyaWN0ZWQKKyAgdG8gYWNjZXB0aW5nIFswLTldLgorCistIElzc3VlICM2MTA2OiB0ZWxuZXRsaWIuVGVsbmV0LnByb2Nlc3NfcmF3cSBkb2Vzbid0IGhhbmRsZSBkZWZhdWx0IFdJTEwvV09OVAorICBETy9ET05UIGNvcnJlY3RseS4KKworLSBJc3N1ZSAjMTQyNDE1MjogRml4IGZvciBodHRwLmNsaWVudCwgdXJsbGliLnJlcXVlc3QgdG8gc3VwcG9ydCBTU0wgd2hpbGUKKyAgd29ya2luZyB0aHJvdWdoIHByb3h5LiAgT3JpZ2luYWwgcGF0Y2ggYnkgQ2hyaXN0b3BoZXIgTGksIGNoYW5nZXMgbWFkZSBieQorICBTZW50aGlsIEt1bWFyYW4uCisKKy0gQWRkIGltcG9ydGxpYi5hYmMuRXhlY3V0aW9uTG9hZGVyIHRvIHJlcHJlc2VudCB0aGUgUEVQIDMwMiBwcm90b2NvbCBmb3IKKyAgbG9hZGVycyB0aGF0IGFsbG93IGZvciBtb2R1bGVzIHRvIGJlIGV4ZWN1dGVkLiBCb3RoIGltcG9ydGxpYi5hYmMuUHlMb2FkZXIgYW5kCisgIFB5UHljTG9hZGVyIGluaGVyaXQgZnJvbSB0aGlzIGNsYXNzIGFuZCBwcm92aWRlIGltcGxlbWVudGF0aW9ucyBpbiByZWxhdGlvbiB0bworICBvdGhlciBtZXRob2RzIHJlcXVpcmVkIGJ5IHRoZSBBQkNzLgorCistIGltcG9ydGxpYi5hYmMuUHlMb2FkZXIgZGlkIG5vdCBpbmhlcml0IGZyb20gaW1wb3J0bGliLmFiYy5SZXNvdXJjZUxvYWRlciBsaWtlCisgIHRoZSBkb2N1bWVudGF0aW9uIHNhaWQgaXQgZGlkIGV2ZW4gdGhvdWdoIHRoZSBjb2RlIGluIFB5TG9hZGVyIHJlbGllZCBvbiB0aGUKKyAgYWJzdHJhY3QgbWV0aG9kIHJlcXVpcmVkIGJ5IFJlc291cmNlTG9hZGVyLgorCistIElzc3VlICM2NDMxOiBNYWtlIEZyYWN0aW9uIHR5cGUgcmV0dXJuIE5vdEltcGxlbWVudGVkIHdoZW4gaXQgZG9lc24ndCBrbm93IGhvdworICB0byBoYW5kbGUgYSBjb21wYXJpc29uIHdpdGhvdXQgbG9zcyBvZiBwcmVjaXNpb24uICBBbHNvIGFkZCBjb3JyZWN0IGhhbmRsaW5nCisgIG9mIGluZmluaXRpZXMgYW5kIG5hbnMgZm9yIGNvbXBhcmlzb25zIHdpdGggZmxvYXQuCisKKy0gSXNzdWUgIzY0MTU6IEZpeGVkIHdhcm5pbmdzLndhcm4gc2VnZmF1bHQgb24gYmFkIGZvcm1hdHRlZCBzdHJpbmcuCisKKy0gSXNzdWUgIzYzNTg6IFRoZSBleGl0IHN0YXR1cyBvZiBhIGNvbW1hbmQgc3RhcnRlZCB3aXRoIG9zLnBvcGVuKCkgd2FzIHJlcG9ydGVkCisgIGRpZmZlcmVudGx5IHRoYW4gaXQgZGlkIHdpdGggcHl0aG9uIDIueC4KKworLSBJc3N1ZSAjNjMyMzogVGhlIHBkYiBkZWJ1Z2dlciBkaWQgbm90IGV4aXQgd2hlbiBydW5uaW5nIGEgc2NyaXB0IHdpdGggYSBzeW50YXgKKyAgZXJyb3IuCisKKy0gSXNzdWUgIzMzOTI6IFRoZSBzdWJwcm9jZXNzIGNvbW11bmljYXRlKCkgbWV0aG9kIG5vIGxvbmdlciBmYWlscyBpbiBzZWxlY3QoKQorICB3aGVuIGZpbGUgZGVzY3JpcHRvcnMgYXJlIGxhcmdlOyBjb21tdW5pY2F0ZSgpIG5vdyB1c2VzIHBvbGwoKSB3aGVuIHBvc3NpYmxlLgorCistIElzc3VlICM2MzY5OiBGaXggYW4gUkxFIGRlY29tcHJlc3Npb24gYnVnIGluIHRoZSBiaW5oZXggbW9kdWxlLgorCistIElzc3VlICM2MzQ0OiBGaXhlZCBhIGNyYXNoIG9mIG1tYXAucmVhZCgpIHdoZW4gcGFzc2VkIGEgbmVnYXRpdmUgYXJndW1lbnQuCisKKy0gVGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gc3RyaW5nLm1ha2V0cmFucyBoYXMgYmVlbiByZW1vdmVkLgorCistIElzc3VlICM0MDA1OiBGaXhlZCBhIGNyYXNoIG9mIHB5ZG9jIHdoZW4gdGhlcmUgd2FzIGEgemlwIGZpbGUgcHJlc2VudCBpbgorICBzeXMucGF0aC4KKworLSBJc3N1ZSAjNjIxODogaW8uU3RyaW5nSU8gYW5kIGlvLkJ5dGVzSU8gaW5zdGFuY2VzIGFyZSBub3cgcGlja2xhYmxlLgorCistIFRoZSBvcy5nZXRfZXhlY19wYXRoKCkgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRoYXQgd2lsbCBiZQorICBzZWFyY2hlZCBmb3IgYW4gZXhlY3V0YWJsZSB3aGVuIGxhdW5jaGluZyBhIHN1YnByb2Nlc3Mgd2FzIGFkZGVkLgorCistIElzc3VlICM3NDgxOiBXaGVuIGEgdGhyZWFkaW5nLlRocmVhZCBmYWlsZWQgdG8gc3RhcnQgaXQgd291bGQgbGVhdmUgdGhlCisgIGluc3RhbmNlIHN0dWNrIGluIGluaXRpYWwgc3RhdGUgYW5kIHByZXNlbnQgaW4gdGhyZWFkaW5nLmVudW1lcmF0ZSgpLgorCistIElzc3VlICMxMDY4MjY4OiBUaGUgc3VicHJvY2VzcyBtb2R1bGUgbm93IGhhbmRsZXMgRUlOVFIgaW4gaW50ZXJuYWwgb3Mud2FpdHBpZAorICBhbmQgb3MucmVhZCBzeXN0ZW0gY2FsbHMgd2hlcmUgYXBwcm9wcmlhdGUuCisKKy0gSXNzdWUgIzY3Mjk6IEFkZGVkIGN0eXBlcy5jX3NzaXplX3QgdG8gcmVwcmVzZW50IHNzaXplX3QuCisKKy0gSXNzdWUgIzYyNDc6IFRoZSBhcmdwYXJzZSBtb2R1bGUgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkuCisKKy0gSXNzdWUgIzgyMzU6IF9zb2NrZXQ6IEFkZCB0aGUgY29uc3RhbnQgYGBTT19TRVRGSUJgYC4gIFNPX1NFVEZJQiBpcyBhIHNvY2tldAorICBvcHRpb24gYXZhaWxhYmxlIG9uIEZyZWVCU0QgNy4xIGFuZCBuZXdlci4KKworLSBJc3N1ZSAjOTMxNTogRml4IGZvciB0aGUgdHJhY2UgbW9kdWxlIHRvIHJlY29yZCBjb3JyZWN0IGNsYXNzIG5hbWUKKyAgZm9yIHRyYWNpbmcgbWV0aG9kcy4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzk5NTk6IFR3ZWFrIGZvcm11bGEgdXNlZCBmb3IgY29tcHV0aW5nIG1hdGgubG9nIG9mIGFuIGludGVnZXIsCisgIG1ha2luZyBpdCBtYXJnaW5hbGx5IG1vcmUgYWNjdXJhdGUgZm9yIGV4YWN0IHBvd2VycyBvZiAyLgorCistIElzc3VlICM5NDIyOiBGaXggbWVtb3J5IGxlYWsgd2hlbiByZS1pbml0aWFsaXppbmcgYSBzdHJ1Y3QuU3RydWN0IG9iamVjdC4KKworLSBJc3N1ZSAjNzkwMDogVGhlIGdldGdyb3VwcygyKSBzeXN0ZW0gY2FsbCBvbiBNYWNPU1ggYmVoYXZlcyByYXRoZXIgb2RkbHkKKyAgY29tcGFyZWQgdG8gb3RoZXIgdW5peCBzeXN0ZW1zLiBJbiBwYXJ0aWN1bGFyLCBvcy5nZXRncm91cHMoKSBkb2VzIG5vdCByZWZsZWN0CisgIGFueSBjaGFuZ2VzIG1hZGUgdXNpbmcgb3Muc2V0Z3JvdXBzKCkgYnV0IGJhc2ljbHkgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUKKyAgaW5mb3JtYXRpb24gYXMgdGhlIGlkIGNvbW1hbmQuIG9zLmdldGdyb3VwcygpIGNhbiBub3cgcmV0dXJuIG1vcmUgdGhhbiAxNgorICBncm91cHMgb24gTWFjT1NYLgorCistIElzc3VlICM2MDk1OiBNYWtlIGRpcmVjdG9yeSBhcmd1bWVudCB0byBvcy5saXN0ZGlyIG9wdGlvbmFsLgorCistIElzc3VlICM5Mjc3OiBGaXggYnVnIGluIHN0cnVjdC5wYWNrIGZvciBib29scyBpbiBzdGFuZGFyZCBtb2RlIChlLmcuLAorICBzdHJ1Y3QucGFjaygnPj8nKSk6IGlmIGNvbnZlcnNpb24gdG8gYm9vbCByYWlzZWQgYW4gZXhjZXB0aW9uIHRoZW4gdGhhdAorICBleGNlcHRpb24gd2Fzbid0IHByb3Blcmx5IHByb3BhZ2F0ZWQgb24gbWFjaGluZXMgd2hlcmUgY2hhciBpcyB1bnNpZ25lZC4KKworLSBJc3N1ZSAjNTE4MDogRml4ZWQgYSBidWcgdGhhdCBwcmV2ZW50ZWQgbG9hZGluZyAyLnggcGlja2xlcyBpbiAzLnggcHl0aG9uIHdoZW4KKyAgdGhleSBjb250YWluIGluc3RhbmNlcyBvZiBvbGQtc3R5bGUgY2xhc3Nlcy4KKworLSBJc3N1ZSAjOTE2NTogQWRkIG5ldyBmdW5jdGlvbnMgbWF0aC5pc2Zpbml0ZSBhbmQgY21hdGguaXNmaW5pdGUsIHRvIGFjY29tcGFueQorICBleGlzdGluZyBpc2luZiBhbmQgaXNuYW4gZnVuY3Rpb25zLgorCistIElzc3VlICMxNTc4MjY5OiBJbXBsZW1lbnQgb3Muc3ltbGluayBmb3IgV2luZG93cyA2LjArLiAgUGF0Y2ggYnkgSmFzb24KKyAgUi4gQ29vbWJzLgorCistIEluIHN0cnVjdC5wYWNrLCBjb3JyZWN0bHkgcHJvcG9nYXRlIGV4Y2VwdGlvbnMgZnJvbSBjb21wdXRpbmcgdGhlIHRydXRoIG9mIGFuCisgIG9iamVjdCBpbiB0aGUgJz8nIGZvcm1hdC4KKworLSBJc3N1ZSAjOTAwMDogZGF0ZXRpbWUudGltZXpvbmUgb2JqZWN0cyBub3cgaGF2ZSBldmFsLWZyaWVuZGx5IHJlcHIuCisKKy0gSW4gdGhlIG1hdGggbW9kdWxlLCBjb3JyZWN0bHkgbG9va3VwIF9fdHJ1bmNfXywgX19jZWlsX18sIGFuZCBfX2Zsb29yX18gYXMKKyAgc3BlY2lhbCBtZXRob2RzLgorCistIElzc3VlICM5MDA1OiBQcmV2ZW50IHV0Y3RpbWV0dXBsZSgpIGZyb20gcHJvZHVjaW5nIHllYXIgMCBvciB5ZWFyIDEwLDAwMC4KKyAgUHJpb3IgdG8gdGhpcyBjaGFuZ2UsIHRpbWV6b25lIGFkanVzdG1lbnQgaW4gdXRjdGltZXR1cGxlKCkgY291bGQgcHJvZHVjZQorICB0bV95ZWFyIHZhbHVlIG9mIDAgb3IgMTAsMDAwLiAgTm93IGFuIE92ZXJmbG93RXJyb3IgaXMgcmFpc2VkIGluIHRoZXNlIGVkZ2UKKyAgY2FzZXMuCisKKy0gSXNzdWUgIzY2NDE6IFRoZSBgYGRhdGV0aW1lLnN0cnB0aW1lYGAgbWV0aG9kIG5vdyBzdXBwb3J0cyB0aGUgYGAlemBgCisgIGRpcmVjdGl2ZS4gIFdoZW4gdGhlIGBgJXpgYCBkaXJlY3RpdmUgaXMgcHJlc2VudCBpbiB0aGUgZm9ybWF0IHN0cmluZywgYW4KKyAgYXdhcmUgYGBkYXRldGltZWBgIG9iamVjdCBpcyByZXR1cm5lZCB3aXRoIGBgdHppbmZvYGAgYm91bmQgdG8gYQorICBgYGRhdGV0aW1lLnRpbWV6b25lYGAgaW5zdGFuY2UgY29uc3RydWN0ZWQgZnJvbSB0aGUgcGFyc2VkIG9mZnNldC4gIElmIGJvdGgKKyAgYGAlemBgIGFuZCBgYCVaYGAgYXJlIHByZXNlbnQsIHRoZSBkYXRhIGluIGBgJVpgYCBmaWVsZCBpcyB1c2VkIGZvciB0aW1lem9uZQorICBuYW1lLCBidXQgYGAlWmBgIGRhdGEgd2l0aG91dCBgYCV6YGAgaXMgZGlzY2FyZGVkLgorCistIElzc3VlICM1MDk0OiBUaGUgYGBkYXRldGltZWBgIG1vZHVsZSBub3cgaGFzIGEgc2ltcGxlIGNvbmNyZXRlIGNsYXNzCisgIGltcGxlbWVudGluZyBgYGRhdGV0aW1lLnR6aW5mb2BgIGludGVyZmFjZS4gIEluc3RhbmNlcyBvZiB0aGUgbmV3IGNsYXNzLAorICBgYGRhdGV0aW1lLnRpbWV6b25lYGAsIHJldHVybiBmaXhlZCBuYW1lIGFuZCBVVEMgb2Zmc2V0IGZyb20gdGhlaXIKKyAgYGB0em5hbWUoZHQpYGAgYW5kIGBgdXRjb2Zmc2V0KGR0KWBgIG1ldGhvZHMuICBUaGUgYGBkc3QoZHQpYGAgbWV0aG9kIGFsd2F5cworICByZXR1cm5zIGBgTm9uZWBgLiAgQSBjbGFzcyBhdHRyaWJ1dGUsIGBgdXRjYGAgY29udGFpbnMgYW4gaW5zdGFuY2UKKyAgcmVwcmVzZW50aW5nIHRoZSBVVEMgdGltZXpvbmUuICBPcmlnaW5hbCBwYXRjaCBieSBSYWZlIEthcGxhbi4KKworLSBJc3N1ZSAjODk3MzogQWRkIF9fYWxsX18gdG8gc3RydWN0IG1vZHVsZTsgdGhpcyBlbnN1cmVzIHRoYXQgaGVscChzdHJ1Y3QpCisgIGluY2x1ZGVzIGRvY3VtZW50YXRpb24gZm9yIHRoZSBzdHJ1Y3QuU3RydWN0IGNsYXNzLgorCistIElzc3VlICMzMTI5OiBUcmFpbGluZyBkaWdpdHMgaW4gc3RydWN0IGZvcm1hdCBzdHJpbmcgYXJlIG5vIGxvbmdlciBpZ25vcmVkLgorICBGb3IgZXhhbXBsZSwgIjEiIG9yICJpbGliMTIzIiBhcmUgbm93IGludmFsaWQgZm9ybWF0cyBhbmQgY2F1c2UKKyAgYGBzdHJ1Y3QuZXJyb3JgYCB0byBiZSByYWlzZWQuICBQYXRjaCBieSBDYWxlYiBEZXZlcmF1eC4KKworLSBJc3N1ZSAjNzM4NDogSWYgdGhlIHN5c3RlbSByZWFkbGluZSBsaWJyYXJ5IGlzIGxpbmtlZCBhZ2FpbnN0IG5jdXJzZXMsIHRoZQorICBjdXJzZXMgbW9kdWxlIG11c3QgYmUgbGlua2VkIGFnYWluc3QgbmN1cnNlcyBhcyB3ZWxsLiBPdGhlcndpc2UgaXQgaXMgbm90IHNhZmUKKyAgdG8gbG9hZCBib3RoIHRoZSByZWFkbGluZSBhbmQgY3Vyc2VzIG1vZHVsZXMgaW4gYW4gYXBwbGljYXRpb24uCisKKy0gSXNzdWUgIzI4MTA6IEZpeCBjYXNlcyB3aGVyZSB0aGUgV2luZG93cyByZWdpc3RyeSBBUEkgcmV0dXJucyBFUlJPUl9NT1JFX0RBVEEsCisgIHJlcXVpcmluZyBhIHJlLXRyeSBpbiBvcmRlciB0byBnZXQgdGhlIGNvbXBsZXRlIHJlc3VsdC4KKworLSBJc3N1ZSAjODY5MjogT3B0aW1pemUgbWF0aC5mYWN0b3JpYWw6IHJlcGxhY2UgdGhlIHByZXZpb3VzIG5haXZlIGFsZ29yaXRobQorICB3aXRoIGFuIGltcHJvdmVkICdiaW5hcnktc3BsaXQnIGFsZ29yaXRobSB0aGF0IHVzZXMgZmV3ZXIgbXVsdGlwbGljYXRpb25zIGFuZAorICBhbGxvd3MgbWFueSBvZiB0aGUgbXVsdGlwbGljYXRpb25zIHRvIGJlIHBlcmZvcm1lZCB1c2luZyBwbGFpbiBDIGludGVnZXIKKyAgYXJpdGhtZXRpYyBpbnN0ZWFkIG9mIFB5TG9uZyBhcml0aG1ldGljLiAgQWxzbyB1c2VzIGEgbG9va3VwIHRhYmxlIGZvciBzbWFsbAorICBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzg2NzQ6IEZpeGVkIGEgbnVtYmVyIG9mIGluY29ycmVjdCBvciB1bmRlZmluZWQtYmVoYXZpb3VyLWluZHVjaW5nCisgIG92ZXJmbG93IGNoZWNrcyBpbiB0aGUgYXVkaW9vcCBtb2R1bGUuCisKKy0gSXNzdWUgIzg2NDQ6IFRoZSBhY2N1cmFjeSBvZiB0ZC50b3RhbF9zZWNvbmRzKCkgaGFzIGJlZW4gaW1wcm92ZWQgKGJ5CisgIGNhbGN1bGF0aW5nIHdpdGggaW50ZWdlciBhcml0aG1ldGljIGluc3RlYWQgb2YgZmxvYXQgYXJpdGhtZXRpYyBpbnRlcm5hbGx5KToKKyAgdGhlIHJlc3VsdCBpcyBub3cgYWx3YXlzIGNvcnJlY3RseSByb3VuZGVkLCBhbmQgaXMgZXF1aXZhbGVudCB0byBgYHRkIC8KKyAgdGltZWRlbHRhKHNlY29uZHM9MSlgYC4KKworLSBJc3N1ZSAjMjcwNjogQWxsb3cgZGl2aXNpb24gb2YgYSB0aW1lZGVsdGEgYnkgYW5vdGhlciB0aW1lZGVsdGE6IHRpbWVkZWx0YSAvCisgIHRpbWVkZWx0YSwgdGltZWRlbHRhICUgdGltZWRlbHRhLCB0aW1lZGVsdGEgLy8gdGltZWRlbHRhIGFuZCBkaXZtb2QodGltZWRlbHRhLAorICB0aW1lZGVsdGEpIGFyZSBhbGwgc3VwcG9ydGVkLgorCistIElzc3VlICM4MzE0OiBGaXggdW5zaWduZWQgbG9uZyBsb25nIGJ1ZyBpbiBsaWJmZmkgb24gU3BhcmMgdjguCisKKy0gSXNzdWUgIzgzMDA6IFdoZW4gcGFzc2luZyBhIG5vbi1pbnRlZ2VyIGFyZ3VtZW50IHRvIHN0cnVjdC5wYWNrIHdpdGggYW55CisgIGludGVnZXIgZm9ybWF0IGNvZGUsIHN0cnVjdC5wYWNrIGZpcnN0IGF0dGVtcHRzIHRvIGNvbnZlcnQgdGhlIG5vbi1pbnRlZ2VyCisgIHVzaW5nIGl0cyBfX2luZGV4X18gbWV0aG9kLiAgSWYgdGhhdCBtZXRob2QgaXMgbm9uLWV4aXN0ZW50IG9yIHJhaXNlcworICBUeXBlRXJyb3IgaXQgZ29lcyBvbiB0byB0cnkgdGhlIF9faW50X18gbWV0aG9kLCBhcyBkZXNjcmliZWQgYmVsb3cuCisKKy0gSXNzdWUgIzgxNDI6IFVwZGF0ZSBsaWJmZmkgdG8gdGhlIDMuMC45IHJlbGVhc2UuCisKKy0gSXNzdWUgIzY5NDk6IEFsbG93IHRoZSBfZGJtIGV4dGVuc2lvbiB0byBiZSBidWlsdCB3aXRoIGRiIDQuOC54LgorCistIElzc3VlICM2NTQ0OiBGaXggYSByZWZlcmVuY2UgbGVhayBpbiB0aGUga3F1ZXVlIGltcGxlbWVudGF0aW9uJ3MgZXJyb3IKKyAgaGFuZGxpbmcuCisKKy0gU3RvcCBwcm92aWRpbmcgY3J0YXNzZW0uaCBzeW1ib2xzIHdoZW4gY29tcGlsaW5nIHdpdGggVmlzdWFsIFN0dWRpbyAyMDEwLCBhcworICBtc3ZjcjEwMC5kbGwgaXMgbm90IGEgcGxhdGZvcm0gYXNzZW1ibHkgYW55bW9yZS4KKworLSBJc3N1ZSAjNjUwODogQWRkIHBvc2l4LntnZXRyZXN1aWQsZ2V0cmVzZ2lkLHNldHJlc3VpZCxzZXRyZXNnaWR9LgorCistIElzc3VlICM3MDc4OiBTZXQgc3RydWN0Ll9fZG9jX18gZnJvbSBfc3RydWN0Ll9fZG9jX18uCisKKy0gSXNzdWUgIzMzNjY6IEFkZCBlcmYsIGVyZmMsIGV4cG0xLCBnYW1tYSwgbGdhbW1hIGZ1bmN0aW9ucyB0byBtYXRoIG1vZHVsZS4KKworLSBJc3N1ZSAjNjg3NzogSXQgaXMgbm93IHBvc3NpYmxlIHRvIGxpbmsgdGhlIHJlYWRsaW5lIGV4dGVuc2lvbiB0byB0aGUgbGliZWRpdAorICByZWFkbGluZSBlbXVsYXRpb24gb24gT1NYIDEwLjUgb3IgbGF0ZXIuCisKKy0gSXNzdWUgIzY4NDg6IEZpeCBjdXJzZXMgbW9kdWxlIGJ1aWxkIGZhaWx1cmUgb24gT1MgWCAxMC42LgorCistIEZpeCBhIHNlZ2ZhdWx0IHRoYXQgY291bGQgYmUgdHJpZ2dlcmVkIGJ5IGV4cGF0IHdpdGggc3BlY2lhbGx5IGZvcm1lZCBpbnB1dC4KKworLSBJc3N1ZSAjNjU2MTogJ1xkJyBpbiBhIHJlZ2V4IG5vdyBtYXRjaGVzIG9ubHkgY2hhcmFjdGVycyB3aXRoIFVuaWNvZGUgY2F0ZWdvcnkKKyAgJ05kJyAoTnVtYmVyLCBEZWNpbWFsIERpZ2l0KS4gIFByZXZpb3VzbHkgaXQgYWxzbyBtYXRjaGVkIGNoYXJhY3RlcnMgd2l0aAorICBjYXRlZ29yeSAnTm8nLgorCistIElzc3VlICM0NTA5OiBBcnJheSBvYmplY3RzIGFyZSBubyBsb25nZXIgbW9kaWZpZWQgYWZ0ZXIgYW4gb3BlcmF0aW9uIGZhaWxpbmcKKyAgZHVlIHRvIHRoZSByZXNpemUgcmVzdHJpY3Rpb24gaW4tcGxhY2Ugd2hlbiB0aGUgb2JqZWN0IGhhcyBleHBvcnRlZCBidWZmZXJzLgorCistIElzc3VlICMyMzg5OiBBcnJheSBvYmplY3RzIGFyZSBub3cgcGlja2xlZCBpbiBhIHBvcnRhYmxlIG1hbm5lci4KKworLSBFeHBhdDogRml4IERvUyB2aWEgWE1MIGRvY3VtZW50IHdpdGggbWFsZm9ybWVkIFVURi04IHNlcXVlbmNlcworICAoQ1ZFXzIwMDlfMzU2MCkuCisKKy0gSXNzdWUgIzcyNDI6IE9uIFNvbGFyaXMgOSBhbmQgZWFybGllciBjYWxsaW5nIG9zLmZvcmsoKSBmcm9tIHdpdGhpbiBhIHRocmVhZAorICBjb3VsZCByYWlzZSBhbiBpbmNvcnJlY3QgUnVudGltZUVycm9yIGFib3V0IG5vdCBob2xkaW5nIHRoZSBpbXBvcnQgbG9jay4gIFRoZQorICBpbXBvcnQgbG9jayBpcyBub3cgcmVpbml0aWFsaXplZCBhZnRlciBmb3JrLgorCistIElzc3VlICM3OTk5OiBvcy5zZXRyZXVpZCgpIGFuZCBvcy5zZXRyZWdpZCgpIHdvdWxkIHJlZnVzZSB0byBhY2NlcHQgYSAtMQorICBwYXJhbWV0ZXIgb24gc29tZSBwbGF0Zm9ybXMgc3VjaCBhcyBPUyBYLgorCistIEJ1aWxkIHRoZSBvc3NhdWRpbyBleHRlbnNpb24gb24gR05VL2tGcmVlQlNELgorCistIElzc3VlICM3MzQ3OiB3aW5yZWc6IEFkZCBDcmVhdGVLZXlFeCBhbmQgRGVsZXRlS2V5RXgsIGFzIHdlbGwgYXMgZml4IGEgYnVnIGluCisgIHRoZSByZXR1cm4gdmFsdWUgb2YgUXVlcnlSZWZsZWN0aW9uS2V5LgorCistIElzc3VlICM3NTY3OiBQeUN1cnNlc19zZXR1cHRlcm06IERvbid0IGNhbGwgYGBzZXR1cHRlcm1gYCB0d2ljZS4KKworQnVpbGQKKy0tLS0tCisKKy0gVXNlIE9wZW5TU0wgMS4wLjBhIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzkyODA6IE1ha2Ugc2hhcmVkaW5zdGFsbCBkZXBlbmQgb24gc2hhcmVkbW9kcy4KKworLSBJc3N1ZSAjOTE4OTogTWFrZSBhIHVzZXItc3BlY2lmaWVkIENGTEFHUywgQ1BQRkxBR1MsIG9yIExERkxBR1Mgc2V0dGluZworICBvdmVycmlkZSB0aGUgY29uZmlndXJlIGFuZCBtYWtlZmlsZSBkZWZhdWx0cywgd2l0aG91dCBkZWxldGluZyBvcHRpb25zIHRoZQorICB1c2VyIGRpZG4ndCBpbnRlbmQgdG8gb3ZlcnJpZGUuICBEZXZlbG9wZXJzIHNob3VsZCBubyBsb25nZXIgbmVlZCB0byBzcGVjaWZ5CisgIE9QVCBvciBFWFRSQV9DRkxBR1MsIGFsdGhvdWdoIHRob3NlIHZhcmlhYmxlcyBhcmUgc3RpbGwgcHJlc2VudCBmb3IKKyAgYmFja3dhcmQtY29tcGF0aWJpbGl0eS4KKworLSBJc3N1ZSAjODg1NDogRml4IGZpbmRpbmcgVmlzdWFsIFN0dWRpbyAyMDA4IG9uIFdpbmRvd3MgeDY0LgorCistIElzc3VlICMxNzU5MTY5LCAjODg2NDogRHJvcCBfWE9QRU5fU09VUkNFIG9uIFNvbGFyaXMsIGRlZmluZSBpdCBmb3IKKyAgbXVsdGlwcm9jZXNzaW5nIG9ubHkuCisKKy0gSXNzdWUgIzg2MjU6IFR1cm4gb2ZmIG9wdGltaXphdGlvbiBpbiAtLXdpdGgtcHlkZWJ1ZyBidWlsZHMgd2l0aCBnY2MuCisgIChPcHRpbWl6YXRpb24gd2FzIHVuaW50ZW50aW9uYWxseSB0dXJuZWQgb24gaW4gZ2NjIC0td2l0aC1weWRlYnVnIGJ1aWxkcyBhcyBhCisgIHJlc3VsdCBvZiB0aGUgaXNzdWUgIzE2Mjg0ODQgZml4LCBjb21iaW5lZCB3aXRoIGF1dG9jb25mJ3Mgc3RyYW5nZSBjaG9pY2Ugb2YKKyAgZGVmYXVsdCBDRkxBR1MgcHJvZHVjZWQgYnkgQUNfUFJPR19DQyBmb3IgZ2NjLikKKworLSBJc3N1ZSAjMzY0NjogSXQgaXMgbm93IGVhc2lseSBwb3NzaWJsZSB0byBpbnN0YWxsIGEgUHl0aG9uIGZyYW1ld29yayBpbnRvIHlvdXIKKyAgaG9tZSBkaXJlY3Rvcnkgb24gTWFjT1NYLCBzZWUgTWFjL1JFQURNRSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworLSBJc3N1ZSAjMzkyODogb3MubWtub2QoKSBub3cgYXZhaWxhYmxlIGluIFNvbGFyaXMsIGFsc28uCisKKy0gSXNzdWUgIzMzMjY6IEJ1aWxkIFB5dGhvbiB3aXRob3V0IC1mbm8tc3RyaWN0LWFsaWFzaW5nIHdoZW4gdGhlIGdjYyBkb2VzIG5vdAorICBnaXZlIGZhbHNlIHdhcm5pbmdzLgorCistIElzc3VlICMxNjI4NDg0OiBUaGUgTWFrZWZpbGUgZG9lc24ndCBpZ25vcmUgdGhlIENGTEFHUyBlbnZpcm9ubWVudCB2YXJpYWJsZQorICBhbnltb3JlLiAgSXQgYWxzbyBmb3J3YXJkcyB0aGUgTERGTEFHUyBzZXR0aW5ncyB0byB0aGUgbGlua2VyIHdoZW4gYnVpbGRpbmcgYQorICBzaGFyZWQgbGlicmFyeS4KKworLSBJc3N1ZSAjNjcxNjogUXVvdGUgLXggYXJndW1lbnRzIG9mIGNvbXBpbGVhbGwgaW4gTVNJIGluc3RhbGxlci4gIEV4Y2x1ZGUgMnRvMworICB0ZXN0cyBmcm9tIGNvbXBpbGVhbGwuCisKKy0gSXNzdWUgIzM5MjAsICM3OTAzOiBEZWZpbmUgX0JTRF9TT1VSQ0Ugb24gT3BlbkJTRCA0LjQgdGhyb3VnaCA0LjkuCisKKy0gSXNzdWUgIzc2MzI6IFdoZW4gUHlfVVNJTkdfTUVNT1JZX0RFQlVHR0VSIGlzIGRlZmluZWQsIGRpc2FibGUgdGhlIHByaXZhdGUKKyAgbWVtb3J5IGFsbG9jYXRpb24gc2NoZW1lIGluIGR0b2EuYyBhbmQgdXNlIFB5TWVtX01hbGxvYyBhbmQgUHlNZW1fRnJlZQorICBpbnN0ZWFkLiAgQWxzbyBkaXNhYmxlIGNhY2hpbmcgb2YgcG93ZXJzIG9mIDUuCisKKy0gSXNzdWUgIzY0OTE6IEFsbG93IC0td2l0aC1kYm1saWJvcmRlciB0byBzcGVjaWZ5IHRoYXQgbm8gZGJtcyB3aWxsIGJlIGJ1aWx0LgorCistIElzc3VlICM2OTQzOiBVc2UgcGtnLWNvbmZpZyB0byBmaW5kIHRoZSBsaWJmZmkgaGVhZGVycyB3aGVuIHRoZQorICAtLXdpdGgtc3lzdGVtLWZmaSBmbGFnIGlzIHVzZWQuCisKKy0gSXNzdWUgIzc2MDk6IEFkZCBhIC0td2l0aC1zeXN0ZW0tZXhwYXQgb3B0aW9uIHRoYXQgY2F1c2VzIHRoZSBzeXN0ZW0ncyBleHBhdAorICBsaWJyYXJ5IHRvIGJlIHVzZWQgZm9yIHRoZSBweWV4cGF0IG1vZHVsZSBpbnN0ZWFkIG9mIHRoZSBvbmUgaW5jbHVkZWQgd2l0aAorICBQeXRob24uCisKKy0gSXNzdWUgIzc1ODk6IE9ubHkgYnVpbGQgdGhlIG5pcyBtb2R1bGUgd2hlbiB0aGUgY29ycmVjdCBoZWFkZXIgZmlsZXMgYXJlCisgIGZvdW5kLgorCistIFN3aXRjaCB0byBPcGVuU1NMIDAuOS44bCBhbmQgc3FsaXRlIDMuNi4yMSBvbiBXaW5kb3dzLgorCistIElzc3VlICM1NzkyOiBFeHRlbmQgdGhlIHNob3J0IGZsb2F0IHJlcHIgc3VwcG9ydCB0byB4ODYgc3lzdGVtcyB1c2luZworICBpY2Mgb3Igc3VuY2MuCisKKy0gSXNzdWUgIzY2MDM6IENoYW5nZSBSRUFEX1RJTUVTVEFNUCBtYWNybyBpbiBjZXZhbC5jIHNvIHRoYXQgaXQgY29tcGlsZXMKKyAgY29ycmVjdGx5IHVuZGVyIGdjYyBvbiB4ODYtNjQuICBUaGlzIGZpeGVzIGEgcmVwb3J0ZWQgcHJvYmxlbSB3aXRoIHRoZQorICAtLXdpdGgtdHNjIGJ1aWxkIG9uIHg4Ni02NC4KKworLSBJc3N1ZSAjNjgwMjogRml4IGJ1aWxkIGlzc3VlcyBvbiBNYWNPU1ggMTAuNi4KKworLSBJc3N1ZSAjNjI0NDogQWxsb3cgZGV0ZWN0X3RraW50ZXIgdG8gbG9vayBmb3IgVGNsL1RrIDguNi4KKworLSBJc3N1ZSAjNDYwMTogJ21ha2UgaW5zdGFsbCcgZGlkIG5vdCBzZXQgdGhlIGFwcHJvcHJpYXRlIHBlcm1pc3Npb25zIG9uCisgIGRpcmVjdG9yaWVzLgorCistIElzc3VlICM1MzkwOiBBZGQgdW5pbnN0YWxsIGljb24gaW5kZXBlbmRlbnQgb2Ygd2hldGhlciBmaWxlIGV4dGVuc2lvbnMgYXJlCisgIGluc3RhbGxlZC4KKworLSBJc3N1ZSAjNzU0MTogV2hlbiB1c2luZyBgYHB5dGhvbi1jb25maWdgYCB3aXRoIGEgZnJhbWV3b3JrIGluc3RhbGwgdGhlCisgIGNvbXBpbGVyIG1pZ2h0IHVzZSB0aGUgd3JvbmcgbGlicmFyeS4KKworLSBweXRob24tY29uZmlnIG5vdyBzdXBwb3J0cyBtdWx0aXBsZSBvcHRpb25zIG9uIHRoZSBzYW1lIGNvbW1hbmQgbGluZS4KKworLSBJc3N1ZSAjODUwOTogRml4IHF1b3RpbmcgaW4gaGVscCBzdHJpbmdzIGFuZCBjb2RlIHNuaXBwZXRzIGluIGNvbmZpZ3VyZS5pbi4KKworLSBJc3N1ZSAjODUxMDogVXBkYXRlIHRvIGF1dG9jb25mMi42NS4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM5ODE3OiBBZGQgZXhwYXQgQ09QWUlORyBmaWxlOyBhZGQgZXhwYXQsIGxpYmZmaSBhbmQgZXhwYXQgbGljZW5zZXMKKyAgdG8gRG9jL2xpY2Vuc2UucnN0LgorCistIElzc3VlICM5NTI0OiBEb2N1bWVudCB0aGF0IHR3byBDVFJMKiBzaWduYWxzIGFyZSBtZWFudCBmb3IgdXNlIG9ubHkKKyAgd2l0aCBvcy5raWxsLgorCistIElzc3VlICM5MjU1OiBEb2N1bWVudCB0aGF0IHRoZSAndGVzdCcgcGFja2FnZSBpcyBtZWFudCBmb3IgaW50ZXJuYWwgUHl0aG9uIHVzZQorICBvbmx5LgorCistIEEgc21hbGwgV1NHSSBzZXJ2ZXIgd2FzIGFkZGVkIGFzIFRvb2xzL3NjcmlwdHMvc2VydmUucHksIGFuZCBpcyB1c2VkIHRvCisgIGltcGxlbWVudCBhIGxvY2FsIGRvY3VtZW50YXRpb24gc2VydmVyIHZpYSAnbWFrZSBzZXJ2ZScgaW4gdGhlIGRvYyBkaXJlY3RvcnkuCisKKy0gVXBkYXRpbmcgYFVzaW5nIFB5dGhvbmAgZG9jdW1lbnRhdGlvbiB0byBpbmNsdWRlIGRlc2NyaXB0aW9uIG9mIENQeXRob24ncyAtSgorICBhbmQgLVggb3B0aW9ucy4KKworLSBEb2N1bWVudCB0aGF0IGltcG9ydGluZyBhIG1vZHVsZSB0aGF0IGhhcyBOb25lIGluIHN5cy5tb2R1bGVzIHRyaWdnZXJzIGFuCisgIEltcG9ydEVycm9yLgorCistIElzc3VlICM2NTU2OiBGaXhlZCB0aGUgRGlzdHV0aWxzIGNvbmZpZ3VyYXRpb24gZmlsZXMgbG9jYXRpb24gZXhwbGFuYXRpb24gZm9yCisgIFdpbmRvd3MuCisKKy0gVXBkYXRlIHB5dGhvbiBtYW51YWwgcGFnZSAob3B0aW9ucyAtQiwgLU8wLCAtcywgZW52aXJvbm1lbnQgdmFyaWFibGVzCisgIFBZVEhPTkRPTlRXUklURUJZVEVDT0RFLCBQWVRIT05OT1VTRVJTSVRFKS4KKworLSBJc3N1ZSAjODkwOTogQWRkZWQgdGhlIHNpemUgb2YgdGhlIGJpdG1hcCB1c2VkIGluIHRoZSBpbnN0YWxsZXIgY3JlYXRlZCBieQorICBkaXN0dXRpbHMnIGJkaXN0X3dpbmluc3QuIFBhdGNoIGJ5IEFuYXRvbHkgVGVjaHRvbmlrLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjOTI1MTogdGVzdF90aHJlYWRlZF9pbXBvcnQgZGlkbid0IGZhaWwgd2hlbiBydW4gdGhyb3VnaCByZWdydGVzdCBpZiB0aGUKKyAgaW1wb3J0IGxvY2sgd2FzIGRpc2FibGVkLgorCistIElzc3VlICM4NjA1OiBTa2lwIHRlc3RfZ2RiIGlmIFB5dGhvbiBpcyBjb21waWxlZCB3aXRoIG9wdGltaXphdGlvbnMuCisKKy0gSXNzdWUgIzc0NDk6IFNraXAgdGVzdF9zb2NrZXRzZXJ2ZXIgaWYgdGhyZWFkaW5nIHN1cHBvcnQgaXMgZGlzYWJsZWQuCisKKy0gSXNzdWUgIzg2NzI6IEFkZCBhIHpsaWIgdGVzdCBlbnN1cmluZyB0aGF0IGFuIGluY29tcGxldGUgc3RyZWFtIGNhbiBiZSBoYW5kbGVkCisgIGJ5IGEgZGVjb21wcmVzc29yIG9iamVjdCB3aXRob3V0IGVycm9ycyAoaXQgcmV0dXJucyBpbmNvbXBsZXRlIHVuY29tcHJlc3NlZAorICBkYXRhKS4KKworLSBJc3N1ZSAjODUzMzogcmVncnRlc3QgdXNlcyBiYWNrc2xhc2hyZXBsYWNlIGVycm9yIGhhbmRsZXIgZm9yIHN0ZG91dCB0byBhdm9pZAorICBVbmljb2RlRW5jb2RlRXJyb3IgKHdyaXRlIG5vbi1BU0NJSSBjaGFyYWN0ZXIgdG8gc3Rkb3V0IHVzaW5nIEFTQ0lJIGVuY29kaW5nKS4KKworLSBJc3N1ZSAjODU3NjogUmVtb3ZlIHVzZSBvZiBmaW5kX3VudXNlZF9wb3J0KCkgaW4gdGVzdF9zbXRwbGliIGFuZAorICB0ZXN0X211bHRpcHJvY2Vzc2luZy4gIFBhdGNoIGJ5IFBhdWwgTW9vcmUuCisKKy0gSXNzdWUgIzc0NDk6IEZpeCBtYW55IHRlc3RzIHRvIHN1cHBvcnQgUHl0aG9uIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkCisgIHN1cHBvcnQuIFBhdGNoZXMgd3JpdHRlbiBieSBKZXJyeSBTZXV0dGVyLgorCistIElzc3VlICM4MTA4OiB0ZXN0X2Z0cGxpYidzIG5vbi1ibG9ja2luZyBTU0wgc2VydmVyIG5vdyBoYXMgcHJvcGVyIGhhbmRsaW5nIG9mCisgIFNTTCBzaHV0ZG93bnMuCisKKy0gSXNzdWVzICM4Mjc5LCAjODMzMCwgIzg0MzcsICM4NDgwLCAjODQ5NTogRml4IHRlc3RfZ2RiIGZhaWx1cmVzLCBwYXRjaCB3cml0dGVuCisgIGJ5IERhdmUgTWFsY29sbS4KKworLSBJc3N1ZSAjMzg2NDogU2tpcCB0aHJlZSB0ZXN0X3NpZ25hbCB0ZXN0cyBvbiBmcmVlYnNkNiBiZWNhdXNlIHRoZXkgZmFpbCBpZiBhbnkKKyAgdGhyZWFkIHdhcyBwcmV2aW91c2x5IHN0YXJ0ZWQsIG1vc3QgbGlrZWx5IGR1ZSB0byBhIHBsYXRmb3JtIGJ1Zy4KKworLSBJc3N1ZSAjODE5MzogRml4IHRlc3RfemxpYiBmYWlsdXJlIHdpdGggemxpYiAxLjIuNC4KKworLSBJc3N1ZSAjODI0ODogQWRkIHNvbWUgdGVzdHMgZm9yIHRoZSBib29sIHR5cGUuICBQYXRjaCBieSBHcmVnb3J5IE5vZmkuCisKKy0gSXNzdWUgIzgyNjM6IE5vdyByZWdydGVzdC5weSB3aWxsIHJlcG9ydCBhIGZhaWx1cmUgaWYgaXQgcmVjZWl2ZXMgYQorICBLZXlib2FyZEludGVycnVwdCAoU0lHSU5UKS4KKworLSBJc3N1ZSAjODE4MCBhbmQgIzgyMDc6IEZpeCB0ZXN0X3BlcDI3NyBvbiBPUyBYIGFuZCBhZGQgbW9yZSB0ZXN0cyBmb3Igc3BlY2lhbAorICBVbmljb2RlIG5vcm1hbGl6YXRpb24gY2FzZXMuCisKKy0gSXNzdWUgIzc3ODM6IHRlc3Quc3VwcG9ydC5vcGVuX3VybHJlc291cmNlIGludmFsaWRhdGVzIHRoZSBvdXRkYXRlZCBmaWxlcyBmcm9tCisgIHRoZSBsb2NhbCBjYWNoZS4KKworLSBJc3N1ZSAjNzg0OTogTm93IHRoZSB1dGlsaXR5IGBgY2hlY2tfd2FybmluZ3NgYCB2ZXJpZmllcyBpZiB0aGUgd2FybmluZ3MgYXJlCisgIGVmZmVjdGl2ZWx5IHJhaXNlZC4KKworLSBUaGUgZm91ciBwYXRoIG1vZHVsZXMgKGdlbmVyaWNwYXRoLCBtYWNwYXRoLCBudHBhdGgsIHBvc2l4cGF0aCkgc2hhcmUgYSBjb21tb24KKyAgVGVzdENhc2UgZm9yIHNvbWUgdGVzdHM6IHRlc3RfZ2VuZXJpY3BhdGguQ29tbW9uVGVzdC4KKworLSBQcmludCBwbGF0Zm9ybSBpbmZvcm1hdGlvbiB3aGVuIHJ1bm5pbmcgdGhlIHdob2xlIHRlc3Qgc3VpdGUsIG9yIHVzaW5nIHRoZQorICAtLXZlcmJvc2UgZmxhZy4KKworLSBJc3N1ZSAjNzY3Njc1OiBlbmFibGUgdGVzdF9wZXAyNzcgb24gUE9TSVggcGxhdGZvcm1zIHdpdGggVW5pY29kZS1mcmllbmRseQorICBmaWxlc3lzdGVtIGVuY29kaW5nLgorCistIElzc3VlICM2MjkyOiBmb3IgdGhlIG1vbWVudCBhdCBsZWFzdCwgdGhlIHRlc3Qgc3VpdGUgcnVucyBjbGVhbmx5IGlmIHB5dGhvbiBpcworICBydW4gd2l0aCB0aGUgLU9PIGZsYWcuICBUZXN0cyByZXF1aXJpbmcgZG9jc3RyaW5ncyBhcmUgc2tpcHBlZC4KKworLSBJc3N1ZSAjNzcxMjogdGVzdC5zdXBwb3J0IGdhaW5lZCBhIG5ldyBgdGVtcF9jd2RgIGNvbnRleHQgbWFuYWdlciB3aGljaCBpcyBub3cKKyAgYWxzbyB1c2VkIGJ5IHJlZ3J0ZXN0IHRvIHJ1biBhbGwgdGhlIHRlc3RzIGluIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeS4gIFRoZQorICBvcmlnaW5hbCBDV0QgaXMgc2F2ZWQgaW4gYHN1cHBvcnQuU0FWRURDV0RgLiAgVGhhbmtzIHRvIEZsb3JlbnQgWGljbHVuYSB3aG8KKyAgaGVscGVkIHdpdGggdGhlIHBhdGNoLgorCistIElzc3VlICM3OTI0OiBGaXggYW4gaW50ZXJtaXR0ZW50ICdYWFggdW5kZXRlY3RlZCBlcnJvcicgZmFpbHVyZSBpbiB0ZXN0X2NhcGkKKyAgKG9ubHkgc2VlbiBzbyBmYXIgb24gcGxhdGZvcm1zIHdoZXJlIHRoZSBjdXJzZXMgbW9kdWxlIHdhc24ndCBidWlsdCksIGR1ZSB0bworICBhbiB1bmNsZWFyZWQgZXhjZXB0aW9uLgorCistIElzc3VlICM3NzI4OiB0ZXN0X3RpbWVvdXQgd2FzIGNoYW5nZWQgdG8gdXNlIHN1cHBvcnQuYmluZF9wb3J0IGluc3RlYWQgb2YgYQorICBoYXJkIGNvZGVkIHBvcnQuCisKKy0gSXNzdWUgIzczNzY6IEluc3RlYWQgb2YgcnVubmluZyBhIHNlbGYtdGVzdCAod2hpY2ggd2FzIGZhaWxpbmcpIHdoZW4gY2FsbGVkCisgIHdpdGggbm8gYXJndW1lbnRzLCBkb2N0ZXN0LnB5IG5vdyBnaXZlcyBhIHVzYWdlIG1lc3NhZ2UuCisKKy0gSXNzdWUgIzczOTY6IGZpeCByZWdydGVzdCAtcywgd2hpY2ggd2FzIGJyb2tlbiBieSB0aGUgLWogZW5oYW5jZW1lbnQuCisKKy0gSXNzdWUgIzc0OTg6IHRlc3RfbXVsdGlwcm9jZXNzaW5nIG5vdyB1c2VzIHRlc3Quc3VwcG9ydC5maW5kX3VudXNlZF9wb3J0CisgIGluc3RlYWQgb2YgYSBoYXJkY29kZWQgcG9ydCBudW1iZXIgaW4gdGVzdF9yYXBpZF9yZXN0YXJ0LgorCistIElzc3VlICM3NDMxOiBVc2UgVEVTVEZOIGluIHRlc3RfbGluZWNhY2hlIGluc3RlYWQgb2YgdHJ5aW5nIHRvIGNyZWF0ZSBhIGZpbGUKKyAgaW4gdGhlIExpYi90ZXN0IGRpcmVjdG9yeSwgd2hpY2ggbWlnaHQgYmUgcmVhZC1vbmx5IGZvciB0aGUgdXNlciBydW5uaW5nIHRoZQorICB0ZXN0cy4KKworLSBJc3N1ZSAjNzMyNDogQWRkIGEgc2FuaXR5IGNoZWNrIHRvIHJlZ3J0ZXN0IGFyZ3VtZW50IHBhcnNpbmcgdG8gY2F0Y2ggdGhlIGNhc2UKKyAgb2YgYW4gb3B0aW9uIHdpdGggbm8gaGFuZGxlci4KKworLSBJc3N1ZSAjNzMxMjogQWRkIGEgLUYgZmxhZyB0byBydW4gdGhlIHNlbGVjdGVkIHRlc3RzIGluIGEgbG9vcCB1bnRpbCBhIHRlc3QKKyAgZmFpbHMuICBDYW4gYmUgY29tYmluZWQgd2l0aCAtai4KKworLSBJc3N1ZSAjNjU1MTogdGVzdF96aXBpbXBvcnQgY291bGQgaW1wb3J0IGFuZCB0aGVuIGRlc3Ryb3kgc29tZSBtb2R1bGVzIG9mIHRoZQorICBlbmNvZGluZ3MgcGFja2FnZSwgd2hpY2ggd291bGQgbWFrZSBvdGhlciB0ZXN0cyBmYWlsIGZ1cnRoZXIgZG93biB0aGUgcm9hZAorICBiZWNhdXNlIHRoZSBpbnRlcm5hbGx5IGNhY2hlZCBlbmNvZGVycyBhbmQgZGVjb2RlcnMgd291bGQgcG9pbnQgdG8gZW1wdHkKKyAgZ2xvYmFsIHZhcmlhYmxlcy4KKworLSBJc3N1ZSAjNzI5NTogRG8gbm90IHVzZSBhIGhhcmRjb2RlZCBmaWxlIG5hbWUgaW4gdGVzdF90YXJmaWxlLgorCistIElzc3VlICM3MjcwOiBBZGQgc29tZSBkZWRpY2F0ZWQgdW5pdCB0ZXN0cyBmb3IgbXVsdGktdGhyZWFkIHN5bmNocm9uaXphdGlvbgorICBwcmltaXRpdmVzIHN1Y2ggYXMgTG9jaywgUkxvY2ssIENvbmRpdGlvbiwgRXZlbnQgYW5kIFNlbWFwaG9yZS4KKworLSBJc3N1ZSAjNzI0OCAocGFydCAyKTogVXNlIGEgdW5pcXVlIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm9yIGltcG9ydGxpYiBzb3VyY2UKKyAgdGVzdHMgaW5zdGVhZCBvZiB0ZW1wZmlsZS50ZW1wZGlyLiBUaGlzIHByZXZlbnRzIHRoZSB0ZXN0cyBmcm9tIHNoYXJpbmcgc3RhdGUKKyAgYmV0d2VlbiBjb25jdXJyZW50IGV4ZWN1dGlvbnMgb24gdGhlIHNhbWUgc3lzdGVtLgorCistIElzc3VlICM3MjQ4OiBJbiBpbXBvcnRsaWIudGVzdC5zb3VyY2UudXRpbCBhIHRyeS9maW5hbGx5IGJsb2NrIGRpZCBub3QgbWFrZQorICBzdXJlIHRoYXQgc29tZSByZWZlcmVuY2VkIG9iamVjdHMgYWN0dWFsbHkgd2VyZSBjcmVhdGVkIGluIHRoZSBibG9jayBiZWZvcmUKKyAgY2FsbGluZyBtZXRob2RzIG9uIHRoZSBvYmplY3QuCisKKy0gSXNzdWUgIzcyMjI6IE1ha2UgdGhyZWFkICJyZWFwaW5nIiBtb3JlIHJlbGlhYmxlIHNvIHRoYXQgcmVmZXJlbmNlCisgIGxlYWstY2hhc2luZyB0ZXN0IHJ1bnMgZ2l2ZSBzZW5zaWJsZSByZXN1bHRzLiAgVGhlIHByZXZpb3VzIG1ldGhvZCBvZiByZWFwaW5nCisgIHRocmVhZHMgY291bGQgcmV0dXJuIHN1Y2Nlc3NmdWxseSB3aGlsZSBzb21lIFRocmVhZCBvYmplY3RzIHdlcmUgc3RpbGwKKyAgcmVmZXJlbmNlZC4gIFRoaXMgYWxzbyBpbnRyb2R1Y2VzIGEgbmV3IHByaXZhdGUgZnVuY3Rpb246CisgIGBgX3RocmVhZC5fY291bnQoKWBgLgorCistIElzc3VlICM3MTUxOiBGaXhlZCByZWdydGVzdCAtaiBzbyB0aGF0IG91dHB1dCB0byBzdGRlcnIgZnJvbSBhIHRlc3Qgbm8gbG9uZ2VyCisgIHJ1bnMgdGhlIHJpc2sgb2YgY2F1c2luZyB0aGUgd29ya2VyIHRocmVhZCB0byBmYWlsLgorCistIElzc3VlICM3MDU1OiB0ZXN0X19fYWxsX18gbm93IGdyZWVkaWx5IGRldGVjdHMgYWxsIG1vZHVsZXMgd2hpY2ggaGF2ZSBhbgorICBfX2FsbF9fIGF0dHJpYnV0ZSwgcmF0aGVyIHRoYW4gdXNpbmcgYSBoYXJkY29kZWQgYW5kIGluY29tcGxldGUgbGlzdC4KKworLSBJc3N1ZSAjNzA1ODogQWRkZWQgc2F2ZS9yZXN0b3JlIGZvciB0aGluZ3MgbGlrZSBzeXMuYXJndiBhbmQgY3dkIHRvCisgIHJ1bnRlc3RfaW5uZXIgaW4gcmVncnRlc3QsIHdpdGggd2FybmluZ3MgaWYgdGhlIGNhbGxlZCB0ZXN0IG1vZGlmaWVzIHRoZW0sIGFuZAorICBhIG5ldyBzZWN0aW9uIGluIHRoZSBzdW1tYXJ5IHJlcG9ydCBhdCB0aGUgZW5kLgorCistIElzc3VlICM3MDQyOiBGaXggdGVzdF9zaWduYWwgKHRlc3RfaXRpbWVyX3ZpcnR1YWwpIGZhaWx1cmUgb24gT1MgWCAxMC42LgorCistIEZpeGVkIHRlc3RzIGluIGltcG9ydGxpYi50ZXN0LnNvdXJjZS50ZXN0X2FiY19sb2FkZXIgdGhhdCB3ZXJlIG1hc2tpbmcgdGhlCisgIHByb3BlciBleGNlcHRpb25zIHRoYXQgc2hvdWxkIGJlIHJhaXNlZCBmb3IgbWlzc2luZyBvciBpbXByb3BlciBjb2RlIG9iamVjdAorICBieXRlY29kZS4KKworLSBSZW1vdmVkIGltcG9ydGxpYidzIGN1c3RvbSB0ZXN0IGRpc2NvdmVyeSBjb2RlIGFuZCBzd2l0Y2hlZCB0bworICB1bml0dGVzdC5UZXN0TG9hZGVyLmRpc2NvdmVyKCkuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICM1NDY0LCAjODk3NDogSW1wbGVtZW50IHBsdXJhbCBmb3JtcyBpbiBtc2dmbXQucHkuCisKKy0gaW9iZW5jaCAoYSBmaWxlIEkvTyBiZW5jaG1hcmspIGFuZCBjY2JlbmNoIChhIGNvbmN1cnJlbmN5IGJlbmNobWFyaykgd2VyZQorICBhZGRlZCB0byB0aGUgYFRvb2xzL2AgZGlyZWN0b3J5LiAgVGhleSB3ZXJlIHByZXZpb3VzbHkgbGl2aW5nIGluIHRoZSBzYW5kYm94LgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjctSnVuZS0yMDA5KgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNjMzNDogRml4IGJ1ZyBpbiByYW5nZSBsZW5ndGggY2FsY3VsYXRpb24gZm9yIHJhbmdlcyB3aXRoCisgIGxhcmdlIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjNjMyOTogRml4ZWQgaXRlcmF0aW9uIGZvciBtZW1vcnl2aWV3IG9iamVjdHMgKGl0IHdhcyBiZWluZyBibG9ja2VkCisgIGJlY2F1c2UgaXQgd2Fzbid0IHJlY29nbml6ZWQgYXMgYSBzZXF1ZW5jZSkuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjNjEyNjogRml4ZWQgcGRiIGNvbW1hbmQtbGluZSB1c2FnZS4KKworLSBJc3N1ZSAjNjMxNDogbG9nZ2luZzogcGVyZm9ybXMgZXh0cmEgY2hlY2tzIG9uIHRoZSAibGV2ZWwiIGFyZ3VtZW50LgorCistIElzc3VlICM2Mjc0OiBGaXhlZCBwb3NzaWJsZSBmaWxlIGRlc2NyaXB0b3JzIGxlYWsgaW4gc3VicHJvY2Vzcy5weQorCistIEFjY2Vzc2luZyBpby5TdHJpbmdJTy5idWZmZXIgbm93IHJhaXNlcyBhbiBBdHRyaWJ1dGVFcnJvciBpbnN0ZWFkIG9mCisgIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uLgorCistIElzc3VlICM2MjcxOiBtbWFwIHRyaWVkIHRvIGNsb3NlIGludmFsaWQgZmlsZSBoYW5kbGUgKC0xKSB3aGVuIGFub255bW91cy4KKyAgKE9uIFVuaXgpCisKKy0gSXNzdWUgIzEyMDI6IHppcGZpbGUgbW9kdWxlIHdvdWxkIGNhdXNlIGEgc3RydWN0LmVycm9yIHdoZW4gYXR0ZW1wdGluZyB0bworICBzdG9yZSBmaWxlcyB3aXRoIGEgQ1JDMzIgPiAyKiozMS0xLgorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNTU5MDogUmVtb3ZlIHVudXNlZCBnbG9iYWwgdmFyaWFibGUgaW4gcHlleHBhdCBleHRlbnNpb24uCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xIFJlbGVhc2UgQ2FuZGlkYXRlIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMTMtSnVuZS0yMDA5KgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBGaXhlZCBTeXN0ZW1FcnJvciB0cmlnZ2VyZWQgYnkgInJhbmdlKFtdLCAxLCAtMSkiLgorCistIElzc3VlICM1OTI0OiBPbiBXaW5kb3dzLCBhIGxhcmdlIFBZVEhPTlBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgKG1vcmUgdGhhbiAyNTUgY2hhcmFjdGVycykgd291bGQgYmUgY29tcGxldGVseSBpZ25vcmVkLgorCistIElzc3VlICM0NTQ3OiBXaGVuIGRlYnVnZ2luZyBhIHZlcnkgbGFyZ2UgZnVuY3Rpb24sIGl0IHdhcyBub3QgYWx3YXlzCisgIHBvc3NpYmxlIHRvIHVwZGF0ZSB0aGUgbGluZW5vIGF0dHJpYnV0ZSBvZiB0aGUgY3VycmVudCBmcmFtZS4KKworLSBJc3N1ZSAjNTMzMDogQyBmdW5jdGlvbnMgY2FsbGVkIHdpdGgga2V5d29yZCBhcmd1bWVudHMgd2VyZSBub3QgcmVwb3J0ZWQgYnkKKyAgdGhlIHZhcmlvdXMgcHJvZmlsaW5nIG1vZHVsZXMgKHByb2ZpbGUsIGNQcm9maWxlKS4gUGF0Y2ggYnkgSGFnZW4gRsO8cnN0ZW5hdS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICM2NDM4OiBGaXhlZCBkaXN0dXRpbHMuY3lnd2luY2NvbXBpbGVyLmdldF92ZXJzaW9ucyA6IHRoZSByZWd1bGFyCisgIGV4cHJlc3Npb24gc3RyaW5nIHBhdHRlcm4gd2FzIHRyeWluZyB0byBtYXRjaCBhZ2FpbnN0IGEgYnl0ZXMgcmV0dXJuZWQgYnkKKyAgUG9wZW4uIFRlc3RlZCB1bmRlciB3aW4zMiB0byBidWlsZCB0aGUgcHktcG9zdGdyZXNxbCBwcm9qZWN0LgorCistIElzc3VlICM2MjU4OiBTdXBwb3J0IEFNRDY0IGluIGJkaXN0X21zaS4KKworLSBJc3N1ZSAjNjE5NTogZml4ZWQgZG9jdGVzdCB0byBubyBsb25nZXIgdHJ5IHRvIHJlYWQgJ3NvdXJjZScgZGF0YSBmcm9tCisgIGJpbmFyeSBmaWxlcy4KKworLSBJc3N1ZSAjNTI2MjogRml4ZWQgYnVnIGluIG5leHQgcm9sbG92ZXIgdGltZSBjb21wdXRhdGlvbiBpbgorICBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIuCisKKy0gSXNzdWUgIzYyMTc6IFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIGlvLlRleHRJT1dyYXBwZXIgZGlkbid0IGluY2x1ZGUgdGhlCisgIGVycm9ycyBwcm9wZXJ0eS4gIEFkZGl0aW9uYWxseSwgdGhlIGVycm9ycyBhbmQgZW5jb2RpbmcgcHJvcGVydGllcyBvZiBTdHJpbmdJTworICBhcmUgYWx3YXlzIE5vbmUgbm93LgorCistIElzc3VlICM2MTM3OiBUaGUgcGlja2xlIG1vZHVsZSBub3cgdHJhbnNsYXRlcyBtb2R1bGUgbmFtZXMgd2hlbiBsb2FkaW5nCisgIG9yIGR1bXBpbmcgcGlja2xlcyB3aXRoIGEgMi54LWNvbXBhdGlibGUgcHJvdG9jb2wsIGluIG9yZGVyIHRvIG1ha2UgZGF0YQorICBzaGFyaW5nIGFuZCBtaWdyYXRpb24gZWFzaWVyLiBUaGlzIGJlaGF2aW91ciBjYW4gYmUgZGlzYWJsZWQgdXNpbmcgdGhlCisgIG5ldyBgZml4X2ltcG9ydHNgIG9wdGlvbmFsIGFyZ3VtZW50LgorCistIFJlbW92ZWQgdGhlIGlwYWRkciBtb2R1bGUuCisKKy0gSXNzdWUgIzM2MTM6IGJhc2U2NC57ZW5jb2RlLGRlY29kZX1zdHJpbmcgYXJlIG5vdyBjYWxsZWQKKyAgYmFzZTY0LntlbmNvZGUsZGVjb2RlfWJ5dGVzIHdoaWNoIHJlZmxlY3RzIHdoYXQgdHlwZSB0aGV5IGFjY2VwdCBhbmQgcmV0dXJuLgorICBUaGUgb2xkIG5hbWVzIGFyZSBzdGlsbCB0aGVyZSBhcyBkZXByZWNhdGVkIGFsaWFzZXMuCisKKy0gSXNzdWUgIzU3Njc6IFJlbW92ZSBzZ21sb3Agc3VwcG9ydCBmcm9tIHhtbHJwYy5jbGllbnQuCisKKy0gSXNzdWUgIzYxNTA6IEZpeCB0ZXN0X3VuaWNvZGUgb24gd2lkZS11bmljb2RlIGJ1aWxkcy4KKworLSBJc3N1ZSAjNjE0OTogRml4IGluaXRpYWxpemF0aW9uIG9mIFdlYWtWYWx1ZURpY3Rpb25hcnkgb2JqZWN0cyBmcm9tIG5vbi1lbXB0eQorICBwYXJhbWV0ZXJzLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzYyMjE6IERlbGV0ZSB0ZXN0IHJlZ2lzdHJ5IGtleSBiZWZvcmUgcnVubmluZyB0aGUgdGVzdC4KKworLSBJc3N1ZSAjNjE1ODogUGFja2FnZSBTaW5lLTEwMDBIei0zMDBtcy5haWYgaW4gTVNJIGZpbGUuCisKK0MtQVBJCistLS0tLQorCistIElzc3VlICM1NzM1OiBQeXRob24gY29tcGlsZWQgd2l0aCAtLXdpdGgtcHlkZWJ1ZyBzaG91bGQgdGhyb3cgYW4KKyAgSW1wb3J0RXJyb3Igd2hlbiB0cnlpbmcgdG8gaW1wb3J0IG1vZHVsZXMgY29tcGlsZWQgd2l0aG91dAorICAtLXdpdGgtcHlkZWJ1ZywgYW5kIHZpY2UtdmVyc2EuCisKKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzYxNTQ6IE1ha2Ugc3VyZSB0aGUgaW50bCBsaWJyYXJ5IGlzIGFkZGVkIHRvIExJQlMgaWYgbmVlZGVkLiBBbHNvCisgIGFkZGVkIExJQlMgdG8gT1MgWCBmcmFtZXdvcmsgYnVpbGRzLgorCistIElzc3VlICM1ODA5OiBTcGVjaWZ5aW5nIGJvdGggLS1lbmFibGUtZnJhbWV3b3JrIGFuZCAtLWVuYWJsZS1zaGFyZWQgaXMKKyAgYW4gZXJyb3IuIENvbmZpZ3VyZSBub3cgZXhwbGljaXR5IHRlbGxzIHlvdSBhYm91dCB0aGlzLgorCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xIHJlbGVhc2UgY2FuZGlkYXRlIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjAwOS0wNS0zMCoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzYwOTc6IEVzY2FwZSBVVEYtOCBzdXJyb2dhdGVzIHJlc3VsdGluZyBmcm9tIG1ic3RvY3MgY29udmVyc2lvbgorICBvZiB0aGUgY29tbWFuZCBsaW5lLgorCistIElzc3VlICM2MDEyOiBBZGQgY2xlYW51cCBzdXBwb3J0IHRvIE8mIGFyZ3VtZW50IHBhcnNpbmcuCisKKy0gSXNzdWUgIzYwODk6IEZpeGVkIHN0ci5mb3JtYXQgd2l0aCBjZXJ0YWluIGludmFsaWQgZmllbGQgc3BlY2lmaWVycworICB0aGF0IHdvdWxkIHJhaXNlIFN5c3RlbUVycm9yLgorCistIElzc3VlICM1OTgyOiBzdGF0aWNtZXRob2QgYW5kIGNsYXNzbWV0aG9kIG5vdyBleHBvc2UgdGhlIHdyYXBwZWQKKyAgZnVuY3Rpb24gd2l0aCBfX2Z1bmNfXy4KKworLSBBZGRlZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IG1hbmFnZXJzIGluIHRoZSBzYW1lIHdpdGgtc3RhdGVtZW50LgorICBEZXByZWNhdGVkIGNvbnRleHRsaWIubmVzdGVkKCkgd2hpY2ggaXMgbm8gbG9uZ2VyIG5lZWRlZC4KKworLSBJc3N1ZSAjNTgyOTogY29tcGxleCgiMWU1MDAiKSBubyBsb25nZXIgcmFpc2VzIE92ZXJmbG93RXJyb3IuICBUaGlzCisgIG1ha2VzIGl0IGNvbnNpc3RlbnQgd2l0aCBmbG9hdCgiMWU1MDAiKSBhbmQgaW50ZXJwcmV0YXRpb24gb2YgcmVhbAorICBhbmQgaW1hZ2luYXJ5IGxpdGVyYWxzLgorCistIElzc3VlICMzNTI3OiBSZW1vdmVkIFB5X1dJTl9XSURFX0ZJTEVOQU1FUyB3aGljaCBpcyBub3QgdXNlZCBhbnkgbW9yZS4KKworLSBJc3N1ZSAjNTk5NDogdGhlIG1hcnNoYWwgbW9kdWxlIG5vdyBoYXMgZG9jc3RyaW5ncy4KKworLSBJc3N1ZSAjNTk4MTogRml4IHRocmVlIG1pbm9yIGluZi9uYW4gaXNzdWVzIGluIGZsb2F0LmZyb21oZXg6CisgICgxKSBpbmYgYW5kIG5hbiBzdHJpbmdzIHdpdGggdHJhaWxpbmcgd2hpdGVzcGFjZSB3ZXJlIGluY29ycmVjdGx5CisgIHJlamVjdGVkOyAgKDIpIHBhcnNpbmcgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgaW5maW5pdGllcyBhbmQgbmFucworICB3YXMgbG9jYWxlIGF3YXJlOyBhbmQgKDMpIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmcm9taGV4KCctbmFuJykKKyAgZGlkbid0IG1hdGNoIHRoYXQgb2YgZmxvYXQoJy1uYW4nKS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICM0ODU5OiBJbXBsZW1lbnQgUEVQIDM4MyBmb3IgcHdkLCBzcHdkLCBhbmQgZ3JwLgorCistIHNtdHBsaWIgJ2xvZ2luJyBhbmQgJ2NyYW0tbWQ1JyBsb2dpbiBhcmUgYWxzbyBmaXhlZCAoc2VlIElzc3VlICM1MjU5KS4KKworLSBJc3N1ZSAjNjEyMTogcHlkb2Mgbm93IGlnbm9yZXMgbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2VzIGluIHRoZQorICBhcmd1bWVudCB0byB0aGUgJ2hlbHAnIGZ1bmN0aW9uLgorCistIElzc3VlICM2MTE4OiB1cmxsaWIucGFyc2UucXVvdGVfcGx1cyBpZ25vcmVkIHRoZSBlbmNvZGluZyBhbmQgZXJyb3JzCisgIGFyZ3VtZW50cyBmb3Igc3RyaW5ncyB3aXRoIGEgc3BhY2UgaW4gdGhlbS4KKworLSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkgd2FzIG5vdCB3b3JraW5nIHdpdGggdGhlIGZvbGxvd2luZyBmaWVsZAorICBuYW1lczogIGNscywgc2VsZiwgdHVwbGUsIGl0ZW1nZXR0ZXIsIGFuZCBwcm9wZXJ0eS4KKworLSBJbiB1bml0dGVzdCwgdXNpbmcgYSBza2lwcGluZyBkZWNvcmF0b3Igb24gYSBjbGFzcyBpcyBub3cgZXF1aXZhbGVudCB0bworICBza2lwcGluZyBldmVyeSB0ZXN0IG9uIHRoZSBjbGFzcy4gIFRoZSBDbGFzc1Rlc3RTdWl0ZSBjbGFzcyBoYXMgYmVlbiByZW1vdmVkLgorCistIElzc3VlICM2MDUwOiBEb24ndCBmYWlsIGV4dHJhY3RpbmcgYSBkaXJlY3RvcnkgZnJvbSBhIHppcGZpbGUgaWYKKyAgdGhlIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cy4KKworLSBJc3N1ZSAjMTMwOTM1MjogZmNudGwgbm93IGNvbnZlcnRzIGl0cyB0aGlyZCBhcmd1bWVudHMgdG8gYSBDIGBsb25nYCByYXRoZXIKKyAgdGhhbiBhbiBpbnQsIHdoaWNoIG1ha2VzIHNvbWUgb3BlcmF0aW9ucyBwb3NzaWJsZSB1bmRlciA2NC1iaXQgTGludXggKGUuZy4KKyAgRE5fTVVMVElTSE9UIHdpdGggRl9OT1RJRlkpLgorCistIElzc3VlICM1NzYxOiBBZGQgdGhlIG5hbWUgb2YgdGhlIHVuZGVybHlpbmcgZmlsZSB0byB0aGUgcmVwcigpIG9mIHZhcmlvdXMKKyAgSU8gb2JqZWN0cy4KKworLSBJc3N1ZSAjNTI1OTogc210cGxpYiBwbGFpbiBhdXRoIGxvZ2luIG5vIGxvbmdlciBnaXZlcyBhIHRyYWNlYmFjay4gIEZpeAorICBieSBNdXNhc2hpIFRhbXVyYSwgdGVzdHMgYnkgTWFyY2luIEJhY2hyeS4KKworLSBJc3N1ZSAjMTk4MzogRml4IGZ1bmN0aW9ucyB0YWtpbmcgb3IgcmV0dXJuaW5nIGEgcHJvY2VzcyBpZGVudGlmaWVyIHRvIHVzZQorICB0aGUgZGVkaWNhdGVkIEMgdHlwZSBgYHBpZF90YGAgaW5zdGVhZCBvZiBhIEMgYGBpbnRgYC4gU29tZSBwbGF0Zm9ybXMgaGF2ZQorICBhIHByb2Nlc3MgaWRlbnRpZmllciB0eXBlIHdpZGVyIHRoYW4gdGhlIHN0YW5kYXJkIEMgaW50ZWdlciB0eXBlLgorCistIElzc3VlICM0MDY2OiBzbXRwbGliLlNNVFBfU1NMLl9nZXRfc29ja2V0IG5vdyBjb3JyZWN0bHkgcmV0dXJucyB0aGUgc29ja2V0LgorICBQYXRjaCBieSBGYXJoYW4gQWhtYWQsIHRlc3QgYnkgTWFyY2luIEJhY2hyeS4KKworLSBJc3N1ZSAjMjExNjogV2VhayByZWZlcmVuY2VzIGFuZCB3ZWFrIGRpY3Rpb25hcmllcyBub3cgc3VwcG9ydCBjb3B5KClpbmcgYW5kCisgIGRlZXBjb3B5KClpbmcuCisKKy0gSXNzdWUgIzE2NTU6IE1ha2UgaW1hcGxpYiBJUHY2LWNhcGFibGUuIFBhdGNoIGJ5IERlcmVrIE1vcnIuCisKKy0gSXNzdWUgIzU5MTg6IEZpeCBhIGNyYXNoIGluIHRoZSBwYXJzZXIgbW9kdWxlLgorCistIElzc3VlICMxNjY0OiBNYWtlIG5udHBsaWIgSVB2Ni1jYXBhYmxlLiBQYXRjaCBieSBEZXJlayBNb3JyLgorCistIElzc3VlICM1MDA2OiBCZXR0ZXIgaGFuZGxpbmcgb2YgdW5pY29kZSBieXRlLW9yZGVyIG1hcmtzIChCT00pIGluIHRoZSBpbworICBsaWJyYXJ5LiBUaGlzIG1lYW5zLCBmb3IgZXhhbXBsZSwgdGhhdCBvcGVuaW5nIGFuIFVURi0xNiB0ZXh0IGZpbGUgaW4KKyAgYXBwZW5kIG1vZGUgZG9lc24ndCBhZGQgYSBCT00gYXQgdGhlIGVuZCBvZiB0aGUgZmlsZSBpZiB0aGUgZmlsZSBpc24ndAorICBlbXB0eS4KKworLSBJc3N1ZSAjNDA1MDogaW5zcGVjdC5maW5kc291cmNlL2dldHNvdXJjZSBub3cgcmFpc2UgYW4gSU9FcnJvciBpZiB0aGUgJ3NvdXJjZScKKyAgZmlsZSBpcyBhIGJpbmFyeS4gIFBhdGNoIGJ5IEJyb2RpZSBSYW8sIHRlc3RzIGJ5IERhbmllbCBEaW5pei4gIFRoaXMgZml4CisgIGNvcnJlY3RzIGEgcHlkb2MgcmVncmVzc2lvbi4KKworLSBJc3N1ZSAjNTk1NTogYWlmYydzIGNsb3NlIG1ldGhvZCBkaWQgbm90IGNsb3NlIHRoZSBmaWxlIGl0IHdyYXBwZWQsCisgIG5vdyBpdCBkb2VzLiAgVGhpcyBhbHNvIG1lYW5zIGdldGZwIG1ldGhvZCBub3cgcmV0dXJucyB0aGUgcmVhbCBmcC4KKworSW5zdGFsbGF0aW9uCistLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNjA0NzogZnVsbGluc3RhbGwgaGFzIGJlZW4gcmVtb3ZlZCBiZWNhdXNlIFB5dGhvbiAzJ3MgZXhlY3V0YWJsZSB3aWxsCisgIG5vdyBiZSBrbm93biBhcyBweXRob24zLgorCistIExpYi9zbXRwZC5weSBpcyBubyBsb25nZXIgaW5zdGFsbGVkIGFzIGEgc2NyaXB0LgorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMzA2MTogVXNlIHdjc2Z0aW1lIGZvciB0aW1lLnN0cmZ0aW1lIHdoZXJlIGF2YWlsYWJsZS4KKworLSBJc3N1ZSAjNDg3MzogRml4IHJlc291cmNlIGxlYWtzIGluIGVycm9yIGNhc2VzIG9mIHB3ZCBhbmQgZ3JwLgorCistIElzc3VlICM2MDkzOiBGaXggb2ZmLWJ5LW9uZSBlcnJvciBpbiBsb2NhbGUuc3RyeGZybS4KKworLSBUaGUgX2Z1bmN0b29scyBhbmQgX2xvY2FsZSBtb2R1bGVzIGFyZSBub3cgYnVpbHQgaW50byB0aGUgbGlicHl0aG9uIHNoYXJlZAorICBsaWJyYXJ5IGluc3RlYWQgb2YgYXMgZXh0ZW5zaW9uIG1vZHVsZXMuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMzNTg1OiBBZGQgcGtnLWNvbmZpZyBzdXBwb3J0LiBJdCBjcmVhdGVzIGEgcHl0aG9uLTIuNy5wYyBmaWxlCisgIGFuZCBhIHB5dGhvbjMucGMgc3ltbGluayBpbiB0aGUgJChMSUJESVIpL3BrZ2NvbmZpZyBkaXJlY3RvcnkuIFBhdGNoIGJ5CisgIENsaW50b24gUm95LgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjNTQ0MjogVGVzdHMgZm9yIGltcG9ydGxpYiB3ZXJlIG5vdCBwcm9wZXJseSBza2lwcGluZyBjYXNlLXNlbnNpdGl2aXR5CisgIHRlc3RzIG9uIGRhcndpbiBldmVuIHdoZW4gdGhlIE9TIHdhcyBpbnN0YWxsZWQgb24gYSBjYXNlLXNlbnNpdGl2ZQorICBmaWxlc3lzdGVtLiBBbHNvIGZpeGVkIHRlc3RzIHRoYXQgc2hvdWxkIG5vdCBiZSBydW4gd2hlbgorICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBpcyB0cnVlLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMSBiZXRhIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyMDA5LTA1LTA2KgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNTkxNDogQWRkIG5ldyBDIEFQSSBmdW5jdGlvbiBQeU9TX3N0cmluZ190b19kb3VibGUsIGFuZAorICBkZXByZWNhdGUgUHlPU19hc2NpaV9zdHJ0b2QgYW5kIFB5T1NfYXNjaWlfYXRvZi4KKworLSBJc3N1ZSAjMzM4MjogZmxvYXQuX19mb3JtYXRfXywgY29tcGxleC5fX2Zvcm1hdF9fLCBhbmQgJS1mb3JtYXR0aW5nCisgIG5vIGxvbmdlciBtYXAgJ0YnIHRvICdmJy4gQmVjYXVzZSBvZiBpc3N1ZSAjNTg1OSAoYmVsb3cpLCB0aGlzIG9ubHkKKyAgYWZmZWN0cyBuYW4gLT4gTkFOIGFuZCBpbmYgLT4gSU5GLgorCistIElzc3VlICM1Nzk5OiBudHBhdGggKGllLCBvcy5wYXRoIG9uIFdpbmRvd3MpIGZ1bGx5IHN1cHBvcnRzIFVOQyBwYXRobmFtZXMKKyAgaW4gYWxsIG9wZXJhdGlvbnMsIGluY2x1ZGluZyBzcGxpdGRyaXZlLCBzcGxpdCwgZXRjLiAgc3BsaXR1bmMoKSBub3cgaXNzdWVzCisgIGEgUGVuZGluZ0RlcHJlY2F0aW9uIHdhcm5pbmcuCisKKy0gSXNzdWUgIzU5MjA6IEZvciBmbG9hdC5fX2Zvcm1hdF9fLCBjaGFuZ2UgdGhlIGJlaGF2aW9yIHdpdGggdGhlCisgIGVtcHR5IHByZXNlbnRhdGlvbiB0eXBlICh0aGF0IGlzLCBub3Qgb25lIG9mICdlJywgJ2YnLCAnZycsIG9yICduJykKKyAgdG8gYmUgbGlrZSAnZycgYnV0IHdpdGggYXQgbGVhc3Qgb25lIGRlY2ltYWwgcG9pbnQgYW5kIHdpdGggYQorICBkZWZhdWx0IHByZWNpc2lvbiBvZiAxMi4gUHJldmlvdXNseSwgdGhlIGJlaGF2aW9yIHRoZSBzYW1lIGJ1dCB3aXRoCisgIGEgZGVmYXVsdCBwcmVjaXNpb24gb2YgNi4gIFRoaXMgbW9yZSBjbG9zZWx5IG1hdGNoZXMgc3RyKCksIGFuZAorICByZWR1Y2VzIHN1cnByaXNlcyB3aGVuIGFkZGluZyBhbGlnbm1lbnQgZmxhZ3MgdG8gdGhlIGVtcHR5CisgIHByZXNlbnRhdGlvbiB0eXBlLiBUaGlzIGFsc28gYWZmZWN0cyB0aGUgbmV3IGNvbXBsZXguX19mb3JtYXRfXyBpbgorICB0aGUgc2FtZSB3YXkuCisKKy0gSW1wbGVtZW50IFBFUCAzODMsIE5vbi1kZWNvZGFibGUgQnl0ZXMgaW4gU3lzdGVtIENoYXJhY3RlciBJbnRlcmZhY2VzLgorCistIElzc3VlICM1ODkwOiBpbiBzdWJjbGFzc2VzIG9mICdwcm9wZXJ0eScgdGhlIF9fZG9jX18gYXR0cmlidXRlIHdhcworICBzaGFkb3dlZCBieSBjbGFzc3R5cGUncywgZXZlbiBpZiBpdCB3YXMgTm9uZS4gIHByb3BlcnR5IG5vdworICBpbnNlcnRzIHRoZSBfX2RvY19fIGludG8gdGhlIHN1YmNsYXNzIGluc3RhbmNlIF9fZGljdF9fLgorCistIElzc3VlICM0NDI2OiBUaGUgVVRGLTcgZGVjb2RlciB3YXMgdG9vIHN0cmljdCBhbmQgZGlkbid0IGFjY2VwdCBzb21lIGxlZ2FsCisgIHNlcXVlbmNlcy4gUGF0Y2ggYnkgTmljayBCYXJuZXMgYW5kIFZpY3RvciBTdGlubmVyLgorCistIElzc3VlICMzNjcyOiBSZWplY3Qgc3Vycm9nYXRlcyBpbiB1dGYtOCBjb2RlYzsgYWRkIHN1cnJvZ2F0ZXBhc3MgZXJyb3IgaGFuZGxlci4KKworLSBJc3N1ZSAjNTg4MzogSW4gdGhlIGlvIG1vZHVsZSwgdGhlIEJ1ZmZlcmVkSU9CYXNlIGFuZCBUZXh0SU9CYXNlIEFCQ3MgaGF2ZQorICByZWNlaXZlZCBhIG5ldyBtZXRob2QsIGRldGFjaCgpLiAgZGV0YWNoKCkgZGlzY29ubmVjdHMgdGhlIHVuZGVybHlpbmcgc3RyZWFtCisgIGZyb20gdGhlIGJ1ZmZlciBvciB0ZXh0IElPIGFuZCByZXR1cm5zIGl0LgorCistIElzc3VlICM1ODU5OiBSZW1vdmUgc3dpdGNoIGZyb20gJyVmJyB0byAnJWcnLXN0eWxlIGZvcm1hdHRpbmcgZm9yCisgIGZsb2F0cyB3aXRoIGFic29sdXRlIHZhbHVlIG92ZXIgMWU1MC4gIEFsc28gcmVtb3ZlIGxlbmd0aAorICByZXN0cmljdGlvbnMgZm9yIGZsb2F0IGZvcm1hdHRpbmc6ICclLjY3ZicgJSAxMi4zNCBhbmQgJyUuMTIwZScgJQorICAxMi4zNCBubyBsb25nZXIgcmFpc2UgYW4gZXhjZXB0aW9uLgorCistIElzc3VlICMxNTg4OiBBZGQgY29tcGxleC5fX2Zvcm1hdF9fLiBGb3IgZXhhbXBsZSwKKyAgZm9ybWF0KGNvbXBsZXgoMSwgMi4vMyksICcuNScpIG5vdyBwcm9kdWNlcyBhIHNlbnNpYmxlIHJlc3VsdC4KKworLSBJc3N1ZSAjNTg2NDogRml4IGVtcHR5IGZvcm1hdCBjb2RlIGZvcm1hdHRpbmcgZm9yIGZsb2F0cyBzbyB0aGF0IGl0CisgIG5ldmVyIGdpdmVzIG1vcmUgdGhhbiB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMuCisKKy0gSXNzdWUgIzU3OTM6IFJhdGlvbmFsaXplIGlzZGlnaXQgLyBpc2FscGhhIC8gdG9sb3dlciwgZXRjLiBJbmNsdWRlcworICBuZXcgUHlfSVNESUdJVCAvIFB5X0lTQUxQSEEgLyBQeV9UT0xPV0VSLCBldGMuIGluIHBjdHlwZXMuaC4KKworLSBJc3N1ZSAjNTgzNTogRGVwcmVjYXRlIFB5T1NfYXNjaWlfZm9ybWF0ZC4KKworLSBJc3N1ZSAjNDk3MTogRml4IHRpdGxlY2FzZSBmb3IgY2hhcmFjdGVycyB0aGF0IGFyZSB0aGVpciBvd24KKyAgdGl0bGVjYXNlLCBidXQgbm90IHRoZWlyIG93biB1cHBlcmNhc2UuCisKKy0gSXNzdWUgIzUyODM6IFNldHRpbmcgX19jbGFzc19fIGluIF9fZGVsX18gY2F1c2VkIGEgc2VnZmF1bHQuCisKKy0gSXNzdWUgIzU4MTY6IGNvbXBsZXgocmVwcih6KSkgbm93IHJlY292ZXJzIHogZXhhY3RseSwgZXZlbiB3aGVuCisgIHogaW52b2x2ZXMgbmFucywgaW5mcyBvciBuZWdhdGl2ZSB6ZXJvcy4KKworLSBJc3N1ZSAjMzE2NjogTWFrZSBpbnQgLT4gZmxvYXQgY29udmVyc2lvbnMgY29ycmVjdGx5IHJvdW5kZWQuCisKKy0gSXNzdWUgIzE4NjkgKGFuZCBtYW55IGR1cGxpY2F0ZXMpOiBtYWtlIHJvdW5kKHgsIG4pIGNvcnJlY3RseQorICByb3VuZGVkIGZvciBhIGZsb2F0IHgsIGJ5IHVzaW5nIHRoZSBkZWNpbWFsIDwtPiBiaW5hcnkgY29udmVyc2lvbnMKKyAgZnJvbSBQeXRob24vZHRvYS5jLiAgQXMgYSBjb25zZXF1ZW5jZSwgKGUuZy4pIHJvdW5kKHgsIDIpIG5vdworICBjb25zaXN0ZW50bHkgYWdyZWVzIHdpdGggZm9ybWF0KHgsICcuMmYnKS4KKworLSBJc3N1ZSAjNTc4Nzogb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc29tZV90eXBlLCAiX19iYXNlc19fIikgc2VnZmF1bHRlZCBvbgorICBzb21lIGJ1aWx0aW4gdHlwZXMuCisKKy0gSXNzdWUgIzU3NzI6IGZvcm1hdCgxZTEwMCwgJzwnKSBwcm9kdWNlcyAnMWUrMTAwJywgbm90ICcxLjBlKzEwMCcuCisKKy0gSXNzdWUgIzU1MTU6IHN0ci5mb3JtYXQoKSB0eXBlICduJyBjb21iaW5lZCB3aXRoIGNvbW1hcyBhbmQgbGVhZGluZworICB6ZXJvcyBubyBsb25nZXIgZ2l2ZXMgb2RkIHJlc3VsdHMgd2l0aCBpbnRzIGFuZCBmbG9hdHMuCisKKy0gSW1wbGVtZW50IFBFUCAzNzgsIEZvcm1hdCBTcGVjaWZpZXIgZm9yIFRob3VzYW5kcyBTZXBhcmF0b3IsIGZvcgorICBmbG9hdHMuCisKKy0gVGhlIHN0ciBmdW5jdGlvbiBzd2l0Y2hlcyB0byBleHBvbmVudGlhbCBub3RhdGlvbiBhdAorICAxZTExLCBub3QgMWUxMi4gIFRoaXMgYXZvaWRzIHByaW50aW5nIDEzIHNpZ25pZmljYW50IGRpZ2l0cyBpbgorICBzaXR1YXRpb25zIHdoZXJlIG9ubHkgMTIgb2YgdGhlbSBhcmUgY29ycmVjdC4gIEV4YW1wbGUgcHJvYmxlbQorICB2YWx1ZTogc3RyKDFlMTEgKyAwLjUpLiAgKFRoaXMgbWlub3IgaXNzdWUgaGFzIGV4aXN0ZWQgaW4gMi54IGZvciBhCisgIGxvbmcgdGltZS4pCisKKy0gSXNzdWUgIzE1ODA6IE9uIG1vc3QgcGxhdGZvcm1zLCB1c2UgYSAnc2hvcnQnIGZsb2F0IHJlcHI6IGZvciBhCisgIGZpbml0ZSBmbG9hdCB4LCByZXByKHgpIG5vdyBvdXRwdXRzIGEgc3RyaW5nIGJhc2VkIG9uIHRoZSBzaG9ydGVzdAorICBzZXF1ZW5jZSBvZiBkZWNpbWFsIGRpZ2l0cyB0aGF0IHJvdW5kcyB0byB4LiAgUHJldmlvdXMgYmVoYXZpb3VyIHdhcworICB0byBvdXRwdXQgMTcgc2lnbmlmaWNhbnQgZGlnaXRzIGFuZCB0aGVuIHN0cmlwIHRyYWlsaW5nIHplcm9zLgorICBBbm90aGVyIG1pbm9yIGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUgbmV3IHJlcHIgc3dpdGNoZXMgdG8KKyAgZXhwb25lbnRpYWwgbm90YXRpb24gYXQgMWUxNiBpbnN0ZWFkIG9mIHRoZSBwcmV2aW91cyAxZTE3OyB0aGlzCisgIGF2b2lkcyBtaXNsZWFkaW5nIG91dHB1dCBpbiBzb21lIGNhc2VzLgorCisgIFRoZXJlJ3MgYSBuZXcgc3lzIGF0dHJpYnV0ZSBzeXMuZmxvYXRfcmVwcl9zdHlsZSwgd2hpY2ggdGFrZXMKKyAgdGhlIHZhbHVlICdzaG9ydCcgdG8gaW5kaWNhdGUgdGhhdCB3ZSdyZSB1c2luZyBzaG9ydCBmbG9hdCByZXByLAorICBhbmQgJ2xlZ2FjeScgaWYgdGhlIHNob3J0IGZsb2F0IHJlcHIgaXNuJ3QgYXZhaWxhYmxlIGZvciBvbmUKKyAgcmVhc29uIG9yIGFub3RoZXIuCisKKyAgVGhlIGZsb2F0IHJlcHIgY2hhbmdlIGludm9sdmVzIGluY29ycG9yYXRpbmcgRGF2aWQgR2F5J3MgJ3BlcmZlY3QKKyAgcm91bmRpbmcnIGNvZGUgaW50byB0aGUgUHl0aG9uIGNvcmUgKGl0J3MgaW4gUHl0aG9uL2R0b2EuYykuICBBcyBhCisgIHNlY29uZGFyeSBjb25zZXF1ZW5jZSwgYWxsIHN0cmluZy10by1mbG9hdCBhbmQgZmxvYXQtdG8tc3RyaW5nCisgIGNvbnZlcnNpb25zIChpbmNsdWRpbmcgYWxsIGZsb2F0IGZvcm1hdHRpbmcgb3BlcmF0aW9ucykgd2lsbCBiZQorICBjb3JyZWN0bHkgcm91bmRlZCBvbiB0aGVzZSBwbGF0Zm9ybXMuCisKKyAgU2VlIGlzc3VlICMxNTgwIGRpc2N1c3Npb25zIGZvciBkZXRhaWxzIG9mIHBsYXRmb3JtcyBmb3Igd2hpY2gKKyAgdGhpcyBjaGFuZ2UgZG9lcyBub3QgYXBwbHkuCisKKy0gSXNzdWUgIzU3NTk6IGZsb2F0KCkgZGlkbid0IGNhbGwgX19mbG9hdF9fIG9uIHN0ciBzdWJjbGFzc2VzLgorCistIFRoZSBzdHJpbmcubWFrZXRyYW5zKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDsgdGhlcmUgaXMgYSBuZXcgc3RhdGljIG1ldGhvZAorICBtYWtldHJhbnMoKSBvbiB0aGUgYnl0ZXMgYW5kIGJ5dGVhcnJheSBjbGFzc2VzLiAgVGhpcyByZW1vdmVzIGNvbmZ1c2lvbiBhYm91dAorICB0aGUgdHlwZXMgc3RyaW5nLm1ha2V0cmFucygpIGlzIHN1cHBvc2VkIHRvIHdvcmsgd2l0aCwgYW5kIG1pcnJvcnMgdGhlCisgIG1ldGhvZHMgYXZhaWxhYmxlIG9uIHRoZSBzdHIgY2xhc3MuCisKKy0gSXNzdWUgIzIxNzA6IHJlZmFjdG9yZWQgeG1sLmRvbS5taW5pZG9tLm5vcm1hbGl6ZSwgaW5jcmVhc2luZyBib3RoCisgIGl0cyBjbGFyaXR5IGFuZCBpdHMgc3BlZWQuCisKKy0gSXNzdWUgIzExMTMyNDQ6IFB5X1hJTkNSRUYsIFB5X0RFQ1JFRiwgUHlfWERFQ1JFRjogQWRkIGBgZG8geyAuLi4gfSB3aGlsZSAoMClgYAorICB0byBhdm9pZCBjb21waWxlciB3YXJuaW5ncy4KKworLSBJc3N1ZSAjMzczOTogVGhlIHVuaWNvZGUtaW50ZXJuYWwgZW5jb2RlciBub3cgcmVwb3J0cyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMKKyAgY29uc3VtZWQgbGlrZSBhbnkgb3RoZXIgZW5jb2RlciAoaW5zdGVhZCBvZiB0aGUgbnVtYmVyIG9mIGJ5dGVzKS4KKworSW5zdGFsbGF0aW9uCistLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNTc1NjogSW5zdGFsbCBpZGxlIGFuZCBweWRvYyB3aXRoIGEgMyBzdWZmaXguCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjODIwMzogRml4IElETEUgQ3JlZGl0cyBkaWFsb2c6IHZpZXdfZmlsZSgpIHVzZXMgaXRzIGVuY29kaW5nIGFyZ3VtZW50LgorCistIElzc3VlICM1MzExOiBiZGlzdF9tc2kgY2FuIG5vdyBidWlsZCBwYWNrYWdlcyB0aGF0IGRvIG5vdCBkZXBlbmQgb24gYQorICBzcGVjaWZpYyBQeXRob24gdmVyc2lvbi4KKworLSBJc3N1ZSAjNTE1MDogSURMRSdzIGZvcm1hdCBtZW51IG5vdyBoYXMgYW4gb3B0aW9uIHRvIHN0cmlwIHRyYWlsaW5nCisgIHdoaXRlc3BhY2UuCisKKy0gSXNzdWUgIzU5NDA6IGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX2NsaWIuY2hlY2tfbGlicmFyeV9saXN0IHdhcyBub3QgZG9pbmcKKyAgdGhlIHJpZ2h0IHR5cGUgY2hlY2tpbmdzIGFueW1vcmUuCisKKy0gSXNzdWUgIzQ4NzU6IE9uIHdpbjMyLCBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkgZG9lcyBubyBsb25nZXIKKyAgcmV0dXJuIGRpcmVjdG9yaWVzLgorCistIElzc3VlICM1MTQyOiBBZGQgdGhlIGFiaWxpdHkgdG8gc2tpcCBtb2R1bGVzIHdoaWxlIHN0ZXBwaW5nIHRvIHBkYi4KKworLSBJc3N1ZSAjMTMwOTU2NzogRml4IGxpbmVjYWNoZSBiZWhhdmlvciBvZiBzdHJpcHBpbmcgc3ViZGlyZWN0b3JpZXMgd2hlbgorICBsb29raW5nIGZvciBmaWxlcyBnaXZlbiBieSBhIHJlbGF0aXZlIGZpbGVuYW1lLgorCistIElzc3VlICM1OTIzOiBVcGRhdGUgdGhlIGBgdHVydGxlYGAgbW9kdWxlIHRvIHZlcnNpb24gMS4xLCBhZGQgdHdvIG5ldworICB0dXJ0bGUgZGVtb3MgaW4gRGVtby90dXJ0bGUuCisKKy0gSXNzdWUgIzU2OTI6IEluIGBgemlwZmlsZS5aaXBmaWxlYGAsIGZpeCB3cm9uZyBwYXRoIGNhbGN1bGF0aW9uIHdoZW4KKyAgZXh0cmFjdGluZyBhIGZpbGUgdG8gdGhlIHJvb3QgZGlyZWN0b3J5LgorCistIElzc3VlICM1OTEzOiBvcy5saXN0ZGlyKCkgc2hvdWxkIGZhaWwgZm9yIGVtcHR5IHBhdGggb24gd2luZG93cy4KKworLSBJc3N1ZSAjNTA4NDogdW5waWNrbGluZyBub3cgaW50ZXJucyB0aGUgYXR0cmlidXRlIG5hbWVzIG9mIHBpY2tsZWQgb2JqZWN0cywKKyAgc2F2aW5nIG1lbW9yeSBhbmQgYXZvaWRpbmcgZ3Jvd3RoIGluIHNpemUgb2Ygc3Vic2VxdWVudCBwaWNrbGVzLiBQcm9wb3NhbAorICBhbmQgb3JpZ2luYWwgcGF0Y2ggYnkgSmFrZSBNY0d1aXJlLgorCistIFRoZSBqc29uIG1vZHVsZSBub3cgd29ya3MgZXhjbHVzaXZlbHkgd2l0aCBzdHIgYW5kIG5vdCBieXRlcy4KKworLSBJc3N1ZSAjMzk1OTogVGhlIGlwYWRkciBtb2R1bGUgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkuCisgIENvbnRyaWJ1dGVkIGJ5IEdvb2dsZS4KKworLSBJc3N1ZSAjMzAwMjogYGBzaHV0aWwuY29weWZpbGUoKWBgIGFuZCBgYHNodXRpbC5jb3B5dHJlZSgpYGAgbm93IHJhaXNlIGFuCisgIGVycm9yIHdoZW4gYSBuYW1lZCBwaXBlIGlzIGVuY291bnRlcmVkLCByYXRoZXIgdGhhbiBibG9ja2luZyBpbmZpbml0ZWx5LgorCistIElzc3VlICM1ODU3OiB0b2tlbml6ZS50b2tlbml6ZSgpIG5vdyByZXR1cm5zIG5hbWVkIHR1cGxlcy4KKworLSBJc3N1ZSAjNDMwNTogY3R5cGVzIHNob3VsZCBub3cgYnVpbGQgYWdhaW4gb24gbWlwc2VsLWxpbnV4LWdudQorCistIElzc3VlICMxNzM0MjM0OiBNYXNzaXZlbHkgc3BlZWR1cCBgYHVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgpYGAgd2hlbiB0aGUKKyAgc3RyaW5nIGlzIGFscmVhZHkgaW4gbm9ybWFsaXplZCBmb3JtLCBieSBwZXJmb3JtaW5nIGEgcXVpY2sgY2hlY2sgYmVmb3JlaGFuZC4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgUmF1bGkgUnVvaG9uZW4uCisKKy0gSXNzdWUgIzU4NTM6IGNhbGxpbmcgYSBmdW5jdGlvbiBvZiB0aGUgbWltZXR5cGVzIG1vZHVsZSBmcm9tIHNldmVyYWwgdGhyZWFkcworICBhdCBvbmNlIGNvdWxkIGhpdCB0aGUgcmVjdXJzaW9uIGxpbWl0IGlmIHRoZSBtaW1ldHlwZXMgZGF0YWJhc2UgaGFkbid0IGJlZW4KKyAgaW5pdGlhbGl6ZWQgYmVmb3JlLgorCistIElzc3VlICM1ODU0OiBVcGRhdGVkIF9fYWxsX18gdG8gaW5jbHVkZSBzb21lIG1pc3NpbmcgbmFtZXMgYW5kIHJlbW92ZSBzb21lCisgIG5hbWVzIHdoaWNoIHNob3VsZCBub3QgYmUgZXhwb3J0ZWQuCisKKy0gSXNzdWUgIzMxMDI6ICBBbGwgZ2xvYmFsIHN5bWJvbHMgdGhhdCB0aGUgX2N0eXBlcyBleHRlbnNpb24gZGVmaW5lcworICBhcmUgbm93IHByZWZpeGVkIHdpdGggJ1B5JyBvciAnX2N0eXBlcycuCisKKy0gSXNzdWUgIzUwNDE6IGN0eXBlcyBkb2VzIG5vdyBhbGxvdyBwaWNrbGluZyB3aWRlIGNoYXJhY3Rlci4KKworLSBJc3N1ZSAjNTgxMjogRm9yIHRoZSB0d28tYXJndW1lbnQgZm9ybSBvZiB0aGUgRnJhY3Rpb24gY29uc3RydWN0b3IsCisgIEZyYWN0aW9uKG0sIG4pLCBtIGFuZCBuIGFyZSBwZXJtaXR0ZWQgdG8gYmUgYXJiaXRyYXJ5IFJhdGlvbmFsCisgIGluc3RhbmNlcy4KKworLSBJc3N1ZSAjNTgxMjogRnJhY3Rpb24oJzFlNicpIGlzIHZhbGlkOiBtb3JlIGdlbmVyYWxseSwgYW55IHN0cmluZworICB0aGF0J3MgdmFsaWQgZm9yIGZsb2F0KCkgaXMgbm93IHZhbGlkIGZvciBGcmFjdGlvbigpLCB3aXRoIHRoZQorICBleGNlcHRpb24gb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgTmFOcyBhbmQgaW5maW5pdGllcy4KKworLSBJc3N1ZSAjNTczNDogQnVmZmVyZWRSV1BhaXIgd2FzIHBvb3JseSB0ZXN0ZWQgYW5kIGhhZCBzZXZlcmFsIGdsYXJpbmcKKyAgYnVncy4gUGF0Y2ggYnkgQnJpYW4gUXVpbmxhbi4KKworLSBJc3N1ZSAjMTE2MTAzMTogZml4IHJlYWR3cml0ZSBzZWxlY3QgZmxhZyBoYW5kbGluZzogUE9MTFBSSSBub3cKKyAgcmVzdWx0cyBpbiBhIGhhbmRsZV9leHB0X2V2ZW50IGNhbGwsIG5vdCBoYW5kbGVfcmVhZF9ldmVudCwgYW5kIFBPTExFUlIKKyAgYW5kIFBPTExOVkFMIG5vdyBjYWxsIGhhbmRsZV9jbG9zZSwgbm90IGhhbmRsZV9leHB0X2V2ZW50LiAgQWxzbywKKyAgZGlzcGF0Y2hlciBub3cgaGFzIGFuICdpZ25vcmVfbG9nX3R5cGVzJyBhdHRyaWJ1dGUgZm9yIHN1cHByZXNzaW5nCisgIGxvZyBtZXNzYWdlcywgd2hpY2ggaXMgc2V0IHRvICd3YXJuaW5nJyBieSBkZWZhdWx0LgorCistIElzc3VlICMyNzAzOiBTaW1wbGVYTUxSUENEaXNwYXRjaGVyLl9faW5pdF9fOiBQcm92aWRlIGRlZmF1bHQgdmFsdWVzIGZvcgorICBuZXcgYXJndW1lbnRzIGludHJvZHVjZWQgaW4gMi41LgorCistIElzc3VlICM1ODI4IChJbnZhbGlkIGJlaGF2aW9yIG9mIHVuaWNvZGUubG93ZXIpOiBGaXhlZCBib2d1cyBsb2dpYyBpbgorICBtYWtldW5pY29kZWRhdGEucHkgYW5kIHJlZ2VuZXJhdGVkIHRoZSBVbmljb2RlIGRhdGFiYXNlIChUaGlzIGZpeGVzCisgIHUnXHUxZDc5Jy5sb3dlcigpID09ICdceDAwJykuCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM1ODgxOiBSZW1vdmUgb2xkIHVuZG9jdW1lbnRlZCBjb21wYXRpYmlsaXR5IGludGVyZmFjZXMgaW4gaGFzaGxpYiBhbmQKKyAgcHdkLgorCistIElzc3VlICM1NDYzOiBJbiBzdHJ1Y3QgbW9kdWxlLCByZW1vdmUgZGVwcmVjYXRlZCBmbG9hdCBjb2VyY2lvbgorICBmb3IgaW50ZWdlciB0eXBlIGNvZGVzOiBzdHJ1Y3QucGFjaygnTCcsIDAuMykgc2hvdWxkIG5vdyByYWlzZQorICBhbiBlcnJvci4gIFRoZSBfUFlfU1RSVUNUX0ZMT0FUX0NPRVJDRSBjb25zdGFudCBoYXMgYmVlbiByZW1vdmVkLgorICBUaGUgdmVyc2lvbiBudW1iZXIgaGFzIGJlZW4gYnVtcGVkIHRvIDAuMy4KKworLSBJc3N1ZSAjNTM1OTogUmVhZGQgdGhlIEJlcmtlbGV5IERCIGRldGVjdGlvbiBjb2RlIHRvIGFsbG93IF9kYm0gYmUgYnVpbHQKKyAgdXNpbmcgQmVya2VsZXkgREIuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICM1MzU0OiBOZXcgdGVzdCBzdXBwb3J0IGZ1bmN0aW9uIGltcG9ydF9mcmVzaF9tb2R1bGUoKSBtYWtlcworICBpdCBlYXN5IHRvIGltcG9ydCBib3RoIG5vcm1hbCBhbmQgb3B0aW1pc2VkIHZlcnNpb25zIG9mIG1vZHVsZXMuCisgIHRlc3RfaGVhcHEgYW5kIHRlc3Rfd2FybmluZ3MgaGF2ZSBiZWVuIGFkanVzdGVkIHRvIHVzZSBpdCwgdGVzdHMgZm9yCisgIG90aGVyIG1vZHVsZXMgd2l0aCBib3RoIEMgYW5kIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIHN0ZGxpYgorICBjYW4gYmUgYWRqdXN0ZWQgdG8gdXNlIGl0IG92ZXIgdGltZS4KKworLSBJc3N1ZSAjNTgzNzogQ2VydGFpbiBzZXF1ZW5jZXMgb2YgY2FsbHMgdG8gc2V0KCkgYW5kIHVuc2V0KCkgZm9yCisgIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCBvYmplY3RzIHJlc3RvcmVkIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKyAgaW5jb3JyZWN0bHkgb24gX19leGl0X18uCisKK0MtQVBJCistLS0tLQorCistIElzc3VlICM1NjMwOiBBIHJlcGxhY2VtZW50IFB5Q09iamVjdCBBUEksIFB5Q2Fwc3VsZSwgaGFzIGJlZW4gYWRkZWQuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xIGFscGhhIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjAwOS00LTQqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIEltcGxlbWVudCBQRVAgMzc4LCBGb3JtYXQgU3BlY2lmaWVyIGZvciBUaG91c2FuZHMgU2VwYXJhdG9yLCBmb3IKKyAgaW50ZWdlcnMuCisKKy0gSXNzdWUgIzU2NjY6IFB5X0J1aWxkVmFsdWUncyAnYycgY29kZSBzaG91bGQgY3JlYXRlIGJ5dGUgc3RyaW5ncy4KKworLSBJc3N1ZSAjNTQ5OTogVGhlICdjJyBjb2RlIGZvciBhcmd1bWVudCBwYXJzaW5nIGZ1bmN0aW9ucyBub3cgb25seSBhY2NlcHRzIGEKKyAgYnl0ZSwgYW5kIHRoZSAnQycgY29kZSBvbmx5IGFjY2VwdHMgYSB1bmljb2RlIGNoYXJhY3Rlci4KKworLSBGaXggYSBwcm9ibGVtIGluIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbiB0aGF0IGxlYWRzIHRvICJ1bmRldGVjdGVkIGVycm9ycyIKKyAgd2hlbiBoaXR0aW5nIHRoZSByZWN1cnNpb24gbGltaXQgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLgorCistIElzc3VlICMxNjY1MjA2OiBSZW1vdmUgdGhlIGxhc3QgZWFnZXIgaW1wb3J0IGluIF93YXJuaW5ncy5jIGFuZCBtYWtlIGl0IGxhenkuCisKKy0gRml4IGEgc2VnZmF1bHQgd2hlbiBydW5uaW5nIHRlc3RfZXhjZXB0aW9ucyB3aXRoIGNvdmVyYWdlLCBjYXVzZWQgYnkKKyAgaW5zdWZmaWNpZW50IGNoZWNrcyBpbiBhY2Nlc3NvcnMgb2YgRXhjZXB0aW9uLl9fY29udGV4dF9fLgorCistIElzc3VlICM1NjA0OiBub24tQVNDSUkgY2hhcmFjdGVycyBpbiBtb2R1bGUgbmFtZSBwYXNzZWQgdG8KKyAgaW1wLmZpbmRfbW9kdWxlKCkgd2VyZSBjb252ZXJ0ZWQgdG8gVVRGLTggd2hpbGUgdGhlIHBhdGggaXMKKyAgY29udmVydGVkIHRvIHRoZSBkZWZhdWx0IGZpbGVzeXN0ZW0gZW5jb2RpbmcsIGNhdXNpbmcgbm9uc2Vuc2UuCisKKy0gSXNzdWUgIzUxMjY6IHN0ci5pc3ByaW50YWJsZSgpIHJldHVybmVkIEZhbHNlIGZvciBzcGFjZSBjaGFyYWN0ZXJzLgorCistIElzc3VlICM0ODY1OiBPbiBNYWNPU1ggL0xpYnJhcnkvUHl0aG9uLzIuNy9zaXRlLXBhY2thZ2VzIGlzIGFkZGVkIHRvCisgIHRoZSBlbmQgc3lzLnBhdGgsIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHN5c3RlbSBpbnN0YWxsIG9mIFB5dGhvbi4KKworLSBJc3N1ZSAjNDY4ODogQWRkIGEgaGV1cmlzdGljIHNvIHRoYXQgdHVwbGVzIGFuZCBkaWN0cyBjb250YWluaW5nIG9ubHkKKyAgdW50cmFja2FibGUgb2JqZWN0cyBhcmUgbm90IHRyYWNrZWQgYnkgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLiBUaGlzIGNhbgorICByZWR1Y2UgdGhlIHNpemUgb2YgY29sbGVjdGlvbnMgYW5kIHRoZXJlZm9yZSB0aGUgZ2FyYmFnZSBjb2xsZWN0aW9uIG92ZXJoZWFkCisgIG9uIGxvbmctcnVubmluZyBwcm9ncmFtcywgZGVwZW5kaW5nIG9uIHRoZWlyIHBhcnRpY3VsYXIgdXNlIG9mIGRhdGF0eXBlcy4KKworLSBJc3N1ZSAjNTUxMjogUmV3cml0ZSBQeUxvbmcgbG9uZyBkaXZpc2lvbiBhbGdvcml0aG0gKHhfZGl2cmVtKSB0bworICBpbXByb3ZlIGl0cyBwZXJmb3JtYW5jZS4gIExvbmcgZGl2aXNpb25zIGFuZCByZW1haW5kZXIgb3BlcmF0aW9ucworICBhcmUgbm93IGJldHdlZW4gNTAlIGFuZCAxNTAlIGZhc3Rlci4KKworLSBJc3N1ZSAjNDI1ODogTWFrZSBpdCBwb3NzaWJsZSB0byB1c2UgYmFzZSAyKiozMCBpbnN0ZWFkIG9mIGJhc2UKKyAgMioqMTUgZm9yIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBpbnRlZ2VycywgZm9yIHBlcmZvcm1hbmNlCisgIHJlYXNvbnMuICBCYXNlIDIqKjMwIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiA2NC1iaXQgbWFjaGluZXMuICBBZGQKKyAgLS1lbmFibGUtYmlnLWRpZ2l0cyBvcHRpb24gdG8gY29uZmlndXJlLCB3aGljaCBvdmVycmlkZXMgdGhlCisgIGRlZmF1bHQuICBBZGQgc3lzLmludF9pbmZvIHN0cnVjdHNlcSB0byBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0CisgIHRoZSBpbnRlcm5hbCBmb3JtYXQuCisKKy0gSXNzdWUgIzQ0NzQ6IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIgbm93IGNvbnZlcnRzIGNoYXJhY3RlcnMgb3V0c2lkZQorICB0aGUgQk1QIHRvIHN1cnJvZ2F0ZSBwYWlycywgb24gc3lzdGVtcyB3aXRoIHNpemVvZih3Y2hhcl90KSA9PSA0CisgIGFuZCBzaXplb2YoUHlfVU5JQ09ERSkgPT0gMi4KKworLSBJc3N1ZSAjNTIzNzogQWxsb3cgYXV0by1udW1iZXJlZCBmaWVsZHMgaW4gc3RyLmZvcm1hdCgpLiBGb3IKKyAgZXhhbXBsZTogJ3t9IHt9Jy5mb3JtYXQoMSwgMikgPT0gJzEgMicuCisKKy0gSXNzdWUgIzUzOTI6IHdoZW4gYSB2ZXJ5IGxvdyByZWN1cnNpb24gbGltaXQgd2FzIHNldCwgdGhlIGludGVycHJldGVyIHdvdWxkCisgIGFib3J0IHdpdGggYSBmYXRhbCBlcnJvciBhZnRlciB0aGUgcmVjdXJzaW9uIGxpbWl0IHdhcyBoaXQgdHdpY2UuCisKKy0gSXNzdWUgIzM4NDU6IEluIFB5UnVuX1NpbXBsZUZpbGVFeEZsYWdzIGF2b2lkIGludmFsaWQgbWVtb3J5IGFjY2VzcyB3aXRoCisgIHNob3J0IGZpbGUgbmFtZXMuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjYyNTogYWRkZWQgbWlzc2luZyBpdGVtcygpIGNhbGwgdG8gdGhlIGZvciBsb29wIGluCisgIG1haWxib3guTUguZ2V0X21lc3NhZ2UoKS4KKworLSBJc3N1ZSAjNTY0MDogRml4IF9tdWx0aWJ5dGVjb2RlYyBzbyB0aGF0IENKSyBjb2RlY3MgZG9uJ3QgcmVwZWF0CisgIGVycm9yIHN1YnN0aXR1dGlvbnMgZnJvbSBub24tc3RyaWN0IGNvZGVjIGVycm9yIGNhbGxiYWNrcyBpbgorICBpbmNyZW1lbnRhbGVuY29kZXIgYW5kIFN0cmVhbVdyaXRlci4KKworLSBJc3N1ZSAjNTY1NjogRml4IHRoZSBjb3ZlcmFnZSByZXBvcnRpbmcgd2hlbiBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlIHdpdGgKKyAgdGhlIC1UIGFyZ3VtZW50LgorCistIElzc3VlICM1NjQ3OiBNdXRhYmxlU2V0Ll9faWFuZF9fKCkgbm8gbG9uZ2VyIG11dGF0ZXMgc2VsZiBkdXJpbmcgaXRlcmF0aW9uLgorCistIElzc3VlICM1NjI0OiBGaXggdGhlIF93aW5yZWcgbW9kdWxlIG5hbWUgc3RpbGwgdXNlZCBpbiBzZXZlcmFsIG1vZHVsZXMuCisKKy0gSXNzdWUgIzU2Mjg6IEZpeCBpby5UZXh0SU9XcmFwcGVyLnJlYWQoKSB3aXRoIGEgdW5yZWFkYWJsZSBidWZmZXIuCisKKy0gSXNzdWUgIzU2MTk6IE11bHRpcHJvY2Vzc2luZyBjaGlsZHJlbiBkaXNvYmV5IHRoZSBkZWJ1ZyBmbGFnIGFuZCBjYXVzZXMKKyAgcG9wdXBzIG9uIHdpbmRvd3MgYnVpbGRib3RzLiBQYXRjaCBhcHBsaWVkIHRvIHdvcmsgYXJvdW5kIHRoaXMgaXNzdWUuCisKKy0gSXNzdWUgIzU0MDA6IEFkZGVkIHBhdGNoIGZvciBtdWx0aXByb2Nlc3Npbmcgb24gbmV0YnNkIGNvbXBpbGF0aW9uL3N1cHBvcnQKKworLSBJc3N1ZSAjNTM4NzogRml4ZWQgbW1hcC5tb3ZlIGNyYXNoIGJ5IGludGVnZXIgb3ZlcmZsb3cuCisKKy0gSXNzdWUgIzUyNjE6IFBhdGNoIG11bHRpcHJvY2Vzc2luZydzIHNlbWFwaG9yZS5jIHRvIHN1cHBvcnQgY29udGV4dAorICBtYW5hZ2VyIHVzZTogIndpdGggbXVsdGlwcm9jZXNzaW5nLkxvY2soKSIgd29ya3Mgbm93LgorCistIElzc3VlICM1MjM2OiBDaGFuZ2UgdGltZS5zdHJwdGltZSgpIHRvIG9ubHkgdGFrZSBzdHJpbmdzLiBEaWRuJ3Qgd29yayB3aXRoCisgIGJ5dGVzIGFscmVhZHkgYnV0IHRoZSBmYWlsdXJlIHdhcyBub24tb2J2aW91cy4KKworLSBJc3N1ZSAjNTE3NzogTXVsdGlwcm9jZXNzaW5nJ3MgU29ja2V0TGlzdGVuZXIgY2xhc3Mgbm93IHVzZXMKKyAgc29ja2V0LlNPX1JFVVNFQUREUiBvbiBhbGwgY29ubmVjdGlvbnMgc28gdGhhdCB0aGUgdXNlciBubyBsb25nZXIgbmVlZHMKKyAgdG8gd2FpdCAxMjAgc2Vjb25kcyBmb3IgdGhlIHNvY2tldCB0byBleHBpcmUuCisKKy0gSXNzdWUgIzU1OTU6IEZpeCBVbmJvdW5kZWRMb2NhbEVycm9yIGluIG50cGF0aC5pc21vdW50KCkuCisKKy0gSXNzdWUgIzExNzQ2MDY6IENhbGxpbmcgcmVhZCgpIHdpdGhvdXQgYXJndW1lbnRzIG9mIGFuIHVuYm91bmRlZCBmaWxlCisgICh0eXBpY2FsbHkgL2Rldi96ZXJvIHVuZGVyIFVuaXgpIGNvdWxkIGNyYXNoIHRoZSBpbnRlcnByZXRlci4KKworLSBUaGUgbWF4X2J1ZmZlcl9zaXplIGFyZ3VtZW50cyBvZiBpby5CdWZmZXJlZFdyaXRlciwgaW8uQnVmZmVyZWRSV1BhaXIsIGFuZAorICBpby5CdWZmZXJlZFJhbmRvbSBoYXZlIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4yLgorCistIElzc3VlICM1MDY4OiBGaXhlZCB0aGUgdGFyZmlsZS5fQloyUHJveHkucmVhZCgpIG1ldGhvZCB0aGF0IHdvdWxkIGxvb3AKKyAgZm9yZXZlciBvbiBpbmNvbXBsZXRlIGlucHV0LiBUaGF0IGNhdXNlZCB0YXJmaWxlLm9wZW4oKSB0byBoYW5nIHdoZW4gdXNlZAorICB3aXRoIG1vZGUgJ3InIG9yICdyOmJ6MicgYW5kIGEgZmlsZW9iaiBhcmd1bWVudCB0aGF0IGNvbnRhaW5lZCBubyBkYXRhIG9yCisgIHBhcnRpYWwgYnppcDIgY29tcHJlc3NlZCBkYXRhLgorCistIElzc3VlICMyMTEwOiBBZGQgc3VwcG9ydCBmb3IgdGhvdXNhbmRzIHNlcGFyYXRvciBhbmQgJ24nIHR5cGUKKyAgc3BlY2lmaWVyIHRvIERlY2ltYWwuX19mb3JtYXRfXworCistIEZpeCBEZWNpbWFsLl9fZm9ybWF0X18gYnVnIHRoYXQgc3dhcHBlZCB0aGUgbWVhbmluZ3Mgb2YgdGhlICc8JyBhbmQKKyAgJz4nIGFsaWdubWVudCBjaGFyYWN0ZXJzLgorCistIFRoZSBlcnJvciBkZXRlY3Rpb24gY29kZSBpbiBGaWxlSU8uY2xvc2UoKSBjb3VsZCBmYWlsIHRvIHJlZmxlY3QgdGhlIGBlcnJub2AKKyAgdmFsdWUsIGFuZCByZXBvcnQgaXQgYXMgLTEgaW5zdGVhZC4KKworLSBJc3N1ZSAjNTAxNjogRmlsZUlPLnNlZWthYmxlKCkgY291bGQgcmV0dXJuIEZhbHNlIGlmIHRoZSBmaWxlIHBvc2l0aW9uCisgIHdhcyBuZWdhdGl2ZSB3aGVuIHRydW5jYXRlZCB0byBhIEMgaW50LiBQYXRjaCBieSBWaWN0b3IgU3Rpbm5lci4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzUzOTE6IG1tYXAgbm93IGRlYWxzIGV4Y2x1c2l2ZWx5IHdpdGggYnl0ZXMuCisKKy0gSXNzdWUgIzU0NjM6IEluIHN0cnVjdCBtb2R1bGUsIHJlbW92ZSBkZXByZWNhdGVkIG92ZXJmbG93IHdyYXBwaW5nCisgIHdoZW4gcGFja2luZyBhbiBpbnRlZ2VyOiBzdHJ1Y3QucGFjaygnPUwnLCAtMSkgbm93IHJhaXNlcworICBzdHJ1Y3QuZXJyb3IgaW5zdGVhZCBvZiByZXR1cm5pbmcgYidceGZmXHhmZlx4ZmZceGZmJy4gIFRoZQorICBfUFlfU1RSVUNUX1JBTkdFX0NIRUNLSU5HIGFuZCBfUFlfU1RSVUNUX09WRVJGTE9XX01BU0tJTkcgY29uc3RhbnRzCisgIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIHN0cnVjdCBtb2R1bGUuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xIGFscGhhIDEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwMDktMDMtMDcqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIFRoZSBpbyBtb2R1bGUgaGFzIGJlZW4gcmVpbXBsZW1lbnRlZCBpbiBDIGZvciBzcGVlZC4KKworLSBHaXZlIGRpY3Qgdmlld3MgYW4gaW5mb3JtYXRpdmUgX19yZXByX18uCisKKy0gSXNzdWUgIzUyNDc6IEltcHJvdmUgZXJyb3IgbWVzc2FnZSB3aGVuIHVua25vd24gZm9ybWF0IGNvZGVzIGFyZQorICB1c2VkIHdoZW4gdXNpbmcgc3RyLmZvcm1hdCgpIHdpdGggc3RyLCBpbnQsIGFuZCBmbG9hdCBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzUyNDk6IHRpbWUuc3RyZnRpbWUgcmV0dXJuZWQgbWFsZm9ybWVkIHN0cmluZyB3aGVuIGZvcm1hdCBzdHJpbmcKKyAgY29udGFpbmVkIG5vbiBhc2NpaSBjaGFyYWN0ZXIgb24gd2luZG93cy4KKworLSBJc3N1ZSAjNDYyNjogY29tcGlsZSgpLCBleGVjKCksIGFuZCBldmFsKCkgaWdub3JlIHRoZSBjb2RpbmcgY29va2llIGlmIHRoZQorICBzb3VyY2UgaGFzIGFscmVhZHkgYmVlbiBkZWNvZGVkIGludG8gc3RyLgorCistIElzc3VlICM1MTg2OiBSZWR1Y2UgaGFzaCBjb2xsaXNpb25zIGZvciBvYmplY3RzIHdpdGggbm8gX19oYXNoX18gbWV0aG9kIGJ5CisgIHJvdGF0aW5nIHRoZSBvYmplY3QgcG9pbnRlciBieSA0IGJpdHMgdG8gdGhlIHJpZ2h0LgorCistIElzc3VlICM0NTc1OiBGaXggUHlfSVNfSU5GSU5JVFkgbWFjcm8gdG8gd29yayBjb3JyZWN0bHkgb24geDg3IEZQVXM6CisgIGl0IG5vdyBmb3JjZXMgaXRzIGFyZ3VtZW50IHRvIGRvdWJsZSBiZWZvcmUgdGVzdGluZyBmb3IgaW5maW5pdHkuCisKKy0gSXNzdWUgIzUxMzc6IE1ha2UgbGVuKCkgY29ycmVjdGx5IHJhaXNlIGEgVHlwZUVycm9yIHdoZW4gYSBfX2xlbl9fIG1ldGhvZAorICByZXR1cm5zIGEgbm9uLW51bWJlciB0eXBlLgorCistIElzc3VlICM1MTgyOiBSZW1vdmVkIG1lbW9yeXZpZXcuX19zdHJfXy4KKworLSBJc3N1ZSAjMTcxNzogUmVtb3ZlZCBidWlsdGluIGNtcCgpIGZ1bmN0aW9uLCBkcm9wcGVkIHRwX2NvbXBhcmUKKyAgc2xvdCwgdGhlIEMgQVBJIGZ1bmN0aW9ucyBQeU9iamVjdF9Db21wYXJlIGFuZCBQeVVuaWNvZGVfQ29tcGFyZSBhbmQKKyAgdGhlIHR5cGUgZGVmaW5pdGlvbiBjbXBmdW5jLiAgVGhlIHRwX2NvbXBhcmUgc2xvdCBoYXMgYmVlbiByZW5hbWVkCisgIHRvIHRwX3Jlc2VydmVkLCBhbmQgaXMgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2FnZS4KKworLSBJc3N1ZSAjMTI0MjY1NzogdGhlIF9fbGVuX18oKSBhbmQgX19sZW5ndGhfaGludF9fKCkgY2FsbHMgaW4gc2V2ZXJhbCB0b29scworICB3ZXJlIHN1cHByZXNzaW5nIGFsbCBleGNlcHRpb25zLiAgVGhlc2UgaW5jbHVkZSBsaXN0KCkgYW5kIGJ5dGVhcnJheSgpLgorCistIElzc3VlICM0NzA3OiByb3VuZCh4LCBuKSBub3cgcmV0dXJucyBhbiBpbnRlZ2VyIGlmIHggaXMgYW4gaW50ZWdlci4KKyAgUHJldmlvdXNseSBpdCByZXR1cm5lZCBhIGZsb2F0LgorCistIElzc3VlICM0NzUzOiBCeSBlbmFibGluZyBhIGNvbmZpZ3VyZSBvcHRpb24gbmFtZWQgJy0td2l0aC1jb21wdXRlZC1nb3RvcycKKyAgb24gY29tcGlsZXJzIHRoYXQgc3VwcG9ydCBpdCAobm90YWJseTogZ2NjLCBTdW5Qcm8sIGljYyksIHRoZSBieXRlY29kZQorICBldmFsdWF0aW9uIGxvb3AgaXMgY29tcGlsZWQgd2l0aCBhIG5ldyBkaXNwYXRjaCBtZWNoYW5pc20gd2hpY2ggZ2l2ZXMKKyAgc3BlZWR1cHMgb2YgdXAgdG8gMjAlLCBkZXBlbmRpbmcgb24gdGhlIHN5c3RlbSwgb24gdmFyaW91cyBiZW5jaG1hcmtzLgorCistIElzc3VlICM0ODc0OiBNb3N0IGJ1aWx0aW4gZGVjb2RlcnMgbm93IHJlamVjdCB1bmljb2RlIGlucHV0LgorCistIElzc3VlICM0ODQyOiBEb24ndCBhbGxvdyB0cmFpbGluZyAnTCcgd2hlbiBjb25zdHJ1Y3RpbmcgYW4gaW50ZWdlcgorICBmcm9tIGEgc3RyaW5nLgorCistIElzc3VlICM0OTkxOiBvcy5mZG9wZW4gbm93IHJhaXNlcyBhbiBPU0Vycm9yIGZvciBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvcnMuCisKKy0gSXNzdWUgIzQ4Mzg6IFdoZW4gYSBtb2R1bGUgaXMgZGVhbGxvY2F0ZWQsIGZyZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRoZQorICBvcHRpb25hbCBtb2R1bGUgc3RhdGUgZGF0YS4KKworLSBJc3N1ZSAjNDkxMDogUmVuYW1lIG5iX2xvbmcgc2xvdCB0byBuYl9yZXNlcnZlZCwgYW5kIGNoYW5nZSBpdHMKKyAgdHlwZSB0byBgYCh2b2lkICopYGAuCisKKy0gSXNzdWUgIzQ5MzU6IFRoZSBvdmVyZmxvdyBjaGVja2luZyBjb2RlIGluIHRoZSBleHBhbmR0YWJzKCkgbWV0aG9kIGNvbW1vbgorICB0byBzdHIsIGJ5dGVzIGFuZCBieXRlYXJyYXkgY291bGQgYmUgb3B0aW1pemVkIGF3YXkgYnkgdGhlIGNvbXBpbGVyLCBsZXR0aW5nCisgIHRoZSBpbnRlcnByZXRlciBzZWdmYXVsdCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IuCisKKy0gSXNzdWUgIzM3MjA6IEZpeCBhIGNyYXNoIHdoZW4gYW4gaXRlcmF0b3IgbW9kaWZpZXMgaXRzIGNsYXNzIGFuZCByZW1vdmVzIGl0cworICBfX25leHRfXyBtZXRob2QuCisKKy0gSXNzdWUgIzQ5MTA6IEJ1aWx0aW4gaW50KCkgZnVuY3Rpb24gYW5kIFB5TnVtYmVyX0xvbmcvUHlOdW1iZXJfSW50IEFQSQorICBmdW5jdGlvbiBubyBsb25nZXIgYXR0ZW1wdCB0byBjYWxsIHRoZSBfX2xvbmdfXyBzbG90IHRvIGNvbnZlcnQgYW4gb2JqZWN0CisgIHRvIGFuIGludGVnZXIuICBPbmx5IHRoZSBfX2ludF9fIGFuZCBfX3RydW5jX18gc2xvdHMgYXJlIGV4YW1pbmVkLgorCistIElzc3VlICM0ODkzOiBVc2UgTlQgdGhyZWFkaW5nIG9uIENFLgorCistIElzc3VlICM0OTE1OiBQb3J0IHN5c21vZHVsZSB0byBXaW5kb3dzIENFLgorCistIElzc3VlICM0ODY4OiB1dGYtOCwgdXRmLTE2IGFuZCBsYXRpbjEgZGVjb2RpbmcgYXJlIG5vdyAyeCB0byA0eCBmYXN0ZXIuIFRoZQorICBjb21tb24gY2FzZXMgYXJlIG9wdGltaXplZCB0aGFua3MgdG8gYSBkZWRpY2F0ZWQgZmFzdCBwYXRoIGFuZCBhIG1vZGVyYXRlCisgIGFtb3VudCBvZiBsb29wIHVucm9sbGluZy4KKworLSBJc3N1ZSAjNDA3NDogQ2hhbmdlIHRoZSBjcml0ZXJpYSBmb3IgZG9pbmcgYSBmdWxsIGdhcmJhZ2UgY29sbGVjdGlvbiAoaS5lLgorICBjb2xsZWN0aW5nIHRoZSBvbGRlc3QgZ2VuZXJhdGlvbikgc28gdGhhdCBhbGxvY2F0aW5nIGxvdHMgb2Ygb2JqZWN0cyB3aXRob3V0CisgIGRlc3Ryb3lpbmcgdGhlbSBkb2VzIG5vdCBzaG93IHF1YWRyYXRpYyBwZXJmb3JtYW5jZS4gQmFzZWQgb24gYSBwcm9wb3NhbCBieQorICBNYXJ0aW4gdm9uIEzDtndpcyBhdAorICBodHRwOi8vbWFpbC5weXRob24ub3JnL3BpcGVybWFpbC9weXRob24tZGV2LzIwMDgtSnVuZS8wODA1NzkuaHRtbC4KKworLSBJc3N1ZSAjNDYwNDogU29tZSBvYmplY3RzIG9mIHRoZSBJL08gbGlicmFyeSBjb3VsZCBzdGlsbCBiZSB1c2VkIGFmdGVyCisgIGhhdmluZyBiZWVuIGNsb3NlZCAoZm9yIGluc3RhbmNlLCBhIHJlYWQoKSBjYWxsIGNvdWxkIHJldHVybiBzb21lCisgIHByZXZpb3VzbHkgYnVmZmVyZWQgZGF0YSkuIFBhdGNoIGJ5IERtaXRyeSBWYXNpbGlldi4KKworLSBJc3N1ZSAjNDcwNTogRml4IHRoZSAtdSAoInVuYnVmZmVyZWQgYmluYXJ5IHN0ZG91dCBhbmQgc3RkZXJyIikgY29tbWFuZC1saW5lCisgIGZsYWcgdG8gd29yayBwcm9wZXJseS4gRnVydGhlcm1vcmUsIHdoZW4gc3BlY2lmeWluZyAtdSwgdGhlIHRleHQgc3Rkb3V0CisgIGFuZCBzdGRlcnIgc3RyZWFtcyBoYXZlIGxpbmUtYnktbGluZSBidWZmZXJpbmcgZW5hYmxlZCAodGhlIGRlZmF1bHQgYmVpbmcKKyAgdG8gYnVmZmVyIGFyYml0cmFyeSBjaHVua3Mgb2YgZGF0YSkuCisKKy0gVGhlIGludGVybmFsIHRhYmxlLCBfUHlMb25nX0RpZ2l0VmFsdWUsIGlzIG5vdyBhbiBhcnJheSBvZiB1bnNpZ25lZCBjaGFycworICBpbnN0ZWFkIG9mIGludHMgKHJlZHVjaW5nIGl0cyBzaXplIGZyb20gNCB0byA4IHRpbWVzIHRoZXJlYnkgcmVkdWNpbmcKKyAgUHl0aG9uJ3Mgb3ZlcmFsbCBtZW1vcnkpLgorCistIElzc3VlICMxMTgwMTkzOiBXaGVuIGltcG9ydGluZyBhIG1vZHVsZSBmcm9tIGEgLnB5YyAob3IgLnB5bykgZmlsZSB3aXRoCisgIGFuIGV4aXN0aW5nIC5weSBjb3VudGVycGFydCwgb3ZlcnJpZGUgdGhlIGNvX2ZpbGVuYW1lIGF0dHJpYnV0ZXMgb2YgYWxsCisgIGNvZGUgb2JqZWN0cyBpZiB0aGUgb3JpZ2luYWwgZmlsZW5hbWUgaXMgb2Jzb2xldGUgKHdoaWNoIGNhbiBoYXBwZW4gaWYgdGhlCisgIGZpbGUgaGFzIGJlZW4gcmVuYW1lZCwgbW92ZWQsIG9yIGlmIGl0IGlzIGFjY2Vzc2VkIHRocm91Z2ggZGlmZmVyZW50IHBhdGhzKS4KKyAgUGF0Y2ggYnkgWmlnYSBTZWlsbmFjaHQgYW5kIEplYW4tUGF1bCBDYWxkZXJvbmUuCisKKy0gSXNzdWUgIzQ1ODA6IEZpeCBzbGljaW5nIG9mIG1lbW9yeXZpZXdzIHdoZW4gdGhlIGl0ZW0gc2l6ZSBpcyBncmVhdGVyIHRoYW4KKyAgb25lIGJ5dGUuIEFsc28gZml4ZXMgdGhlIG1lYW5pbmcgb2YgbGVuKCkgc28gdGhhdCBpdCByZXR1cm5zIHRoZSBudW1iZXIgb2YKKyAgaXRlbXMsIHJhdGhlciB0aGFuIHRoZSBzaXplIGluIGJ5dGVzLgorCistIElzc3VlICM0MDc1OiBVc2UgT3V0cHV0RGVidWdTdHJpbmdXIGluIFB5X0ZhdGFsRXJyb3IuCisKKy0gSXNzdWUgIzQ3NDc6IFdoZW4gdGhlIHRlcm1pbmFsIGRvZXMgbm90IHVzZSB1dGYtOCwgZXhlY3V0aW5nIGEgc2NyaXB0IHdpdGgKKyAgbm9uLWFzY2lpIGNoYXJhY3RlcnMgaW4gaXRzIG5hbWUgY291bGQgZmFpbCB3aXRoIGEgIlN5bnRheEVycm9yOiBOb25lIiBlcnJvci4KKworLSBJc3N1ZSAjNDc5NzogSU9FcnJvci5maWxlbmFtZSB3YXMgbm90IHNldCB3aGVuIGBgX2ZpbGVpby5GaWxlSU9gYCBmYWlsZWQKKyAgdG8gb3BlbiBmaWxlIHdpdGggYSBieXRlcyBmaWxlbmFtZSBvbiBXaW5kb3dzLgorCistIElzc3VlICMzNjgwOiBSZWZlcmVuY2UgY3ljbGVzIGNyZWF0ZWQgdGhyb3VnaCBhIGRpY3QsIHNldCBvciBkZXF1ZSBpdGVyYXRvcgorICBkaWQgbm90IGdldCBjb2xsZWN0ZWQuCisKKy0gSXNzdWUgIzQ3MDE6IFB5T2JqZWN0X0hhc2ggbm93IGltcGxpY2l0bHkgY2FsbHMgUHlUeXBlX1JlYWR5IG9uIHR5cGVzCisgIHdoZXJlIHRoZSB0cF9oYXNoIGFuZCB0cF9kaWN0IHNsb3RzIGFyZSBib3RoIE5VTEwuCisKKy0gSXNzdWUgIzQ3NTk6IE5vbmUgaXMgbm93IGFsbG93ZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IG9mCisgIGJ5dGVhcnJheS50cmFuc2xhdGUoKS4gIEl0IHdhcyBhbHdheXMgYWxsb3dlZCBmb3IgYnl0ZXMudHJhbnNsYXRlKCkuCisKKy0gQWRkZWQgdGVzdCBjYXNlIHRvIGVuc3VyZSBhdHRlbXB0cyB0byByZWFkIGZyb20gYSBmaWxlIG9wZW5lZCBmb3Igd3JpdGluZworICBmYWlsLgorCistIElzc3VlICMzMTA2OiBTcGVlZHVwIHNvbWUgY29tcGFyaXNvbnMgKHN0ci9zdHIgYW5kIGludC9pbnQpLgorCistIElzc3VlICMyMTgzOiBTaW1wbGlmeSBhbmQgb3B0aW1pemUgYnl0ZWNvZGUgZm9yIGxpc3QsIGRpY3QgYW5kIHNldAorICBjb21wcmVoZW5zaW9ucy4gT3JpZ2luYWwgcGF0Y2ggZm9yIGxpc3QgY29tcHJlaGVuc2lvbnMgYnkgTmVhbCBOb3J3aXR6LgorCistIElzc3VlICMyNDY3OiBnYy5ERUJVR19TVEFUUyByZXBvcnRlZCBpbnZhbGlkIGVsYXBzZWQgdGltZXMuIEFsc28sIGFsd2F5cworICBwcmludCBlbGFwc2VkIHRpbWVzLCBub3Qgb25seSB3aGVuIHNvbWUgb2JqZWN0cyBhcmUgdW5jb2xsZWN0YWJsZSAvCisgIHVucmVhY2hhYmxlLiBPcmlnaW5hbCBwYXRjaCBieSBOZWlsIFNjaGVtZW5hdWVyLgorCistIElzc3VlICMzNDM5OiBBZGQgYSBiaXRfbGVuZ3RoIG1ldGhvZCB0byBpbnQuCisKKy0gSXNzdWUgIzIxNzM6IFdoZW4gZ2V0dGluZyBkZXZpY2UgZW5jb2RpbmcsIGNoZWNrIHRoYXQgcmV0dXJuIHZhbHVlIG9mCisgIG5sX2xhbmdpbmZvIGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5nLiAgVGhpcyB3YXMgY2F1c2luZyBzaWxlbnQgYnVpbGQKKyAgZmFpbHVyZXMgb24gT1MgWC4KKworLSBJc3N1ZSAjNDU5NzogRml4ZWQgc2V2ZXJhbCBvcGNvZGVzIHRoYXQgd2VyZW4ndCBhbHdheXMgcHJvcGFnYXRpbmcKKyAgZXhjZXB0aW9ucy4KKworLSBJc3N1ZSAjNDU4OTogRml4ZWQgZXhjZXB0aW9uIGhhbmRsaW5nIHdoZW4gdGhlIF9fZXhpdF9fIGZ1bmN0aW9uIG9mIGEKKyAgY29udGV4dCBtYW5hZ2VyIHJldHVybnMgYSB2YWx1ZSB0aGF0IGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBib29sLgorCistIElzc3VlICM0NDQ1OiBSZXBsYWNlICJzaXplb2YoUHlCeXRlc09iamVjdCkiIHdpdGgKKyAgIm9mZnNldG9mKFB5Qnl0ZXNPYmplY3QsIG9iX3N2YWwpICsgMSIgd2hlbiBhbGxvY2F0aW5nIG1lbW9yeSBmb3IKKyAgYnl0ZXMgaW5zdGFuY2VzLiAgT24gYSB0eXBpY2FsIG1hY2hpbmUgdGhpcyBzYXZlcyAzIGJ5dGVzIG9mIG1lbW9yeQorICAob24gYXZlcmFnZSkgcGVyIGFsbG9jYXRpb24gb2YgYSBieXRlcyBpbnN0YW5jZS4KKworLSBJc3N1ZSAjNDUzMzogRmlsZSByZWFkIG9wZXJhdGlvbiB3YXMgZHJlYWRmdWxseSBzbG93IGR1ZSB0byBhIHNsb3dseQorICBncm93aW5nIHJlYWQgYnVmZmVyLiBGaXhlZCBieSB1c2luZyB0aGUgc2FtZSBncm93dGggcmF0ZSBhbGdvcml0aG0gYXMKKyAgUHl0aG9uIDIueC4KKworLSBJc3N1ZSAjNDUwOTogVmFyaW91cyBpc3N1ZXMgc3Vycm91bmRpbmcgcmVzaXplIG9mIGJ5dGVhcnJheSBvYmplY3RzIHRvCisgIHdoaWNoIHRoZXJlIGFyZSBidWZmZXIgZXhwb3J0cyAoZS5nLiBtZW1vcnl2aWV3IGluc3RhbmNlcykuCisKKy0gSXNzdWUgIzQyMzM6IENoYW5nZWQgc2VtYW50aWMgb2YgYGBfZmlsZWlvLkZpbGVJT2BgJ3MgYGBjbG9zZSgpYGAKKyAgbWV0aG9kIG9uIGZpbGUgb2JqZWN0cyB3aXRoIGNsb3NlZmQ9RmFsc2UuIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgc3RpbGwKKyAga2VwdCBvcGVuIGJ1dCB0aGUgZmlsZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgY2xvc2VkIGZpbGUuIFRoZSBgYEZpbGVJT2BgCisgIG9iamVjdCBhbHNvIGdvdCBhIG5ldyByZWFkb25seSBhdHRyaWJ1dGUgYGBjbG9zZWZkYGAuCisKKy0gSXNzdWUgIzQ1Njk6IEludGVycHJldGVyIGNyYXNoIHdoZW4gbXV0YXRpbmcgYSBtZW1vcnl2aWV3IHdpdGggYW4gaXRlbSBzaXplCisgIGxhcmdlciB0aGFuIDEuCisKKy0gSXNzdWUgIzQ3NDg6IExhbWJkYSBnZW5lcmF0b3JzIG5vIGxvbmdlciByZXR1cm4gYSB2YWx1ZS4KKworLSBUaGUgcmUuc3ViKCksIHJlLnN1Ym4oKSBhbmQgcmUuc3BsaXQoKSBmdW5jdGlvbnMgbm93IGFjY2VwdCBhIGZsYWdzIHBhcmFtZXRlci4KKworLSBJc3N1ZSAjNTEwODogSGFuZGxlICVzIGxpa2UgJVMsICVSIGFuZCAlQSBpbiBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKTogQ2FsbAorICBQeVVuaWNvZGVfRGVjb2RlVVRGOCgpIG9uY2UsIHJlbWVtYmVyIHRoZSByZXN1bHQgYW5kIG91dHB1dCBpdCBpbiBhIHNlY29uZAorICBzdGVwLiBUaGlzIGF2b2lkcyBwcm9ibGVtcyB3aXRoIGNvdW50aW5nIFVURi04IGJ5dGVzIHRoYXQgaWdub3JlcyB0aGUgZWZmZWN0CisgIG9mIHVzaW5nIHRoZSByZXBsYWNlIGVycm9yIGhhbmRsZXIgaW4gUHlVbmljb2RlX0RlY29kZVVURjgoKS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICM3MDcxOiBieXRlLWNvbXBpbGF0aW9uIGluIERpc3R1dGlscyBpcyBub3cgZG9uZSB3aXRoIHJlc3BlY3QgdG8KKyAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUuCisKKy0gSXNzdWUgIzcwNjY6IGFyY2hpdmVfdXRpbC5tYWtlX2FyY2hpdmUgbm93IHJlc3RvcmVzIHRoZSBjd2QgaWYgYW4gZXJyb3IgaXMKKyAgcmFpc2VkLiBJbml0aWFsIHBhdGNoIGJ5IEV6aW8gTWVsb3R0aS4KKworLSBJc3N1ZSAjNjUxNjogQWRkZWQgb3duZXIvZ3JvdXAgc3VwcG9ydCB3aGVuIGNyZWF0aW5nIHRhciBhcmNoaXZlcyBpbgorICBEaXN0dXRpbHMuCisKKy0gSXNzdWUgIzY5NTQ6IEZpeGVkIGNyYXNoIHdoZW4gdXNpbmcgRElTVFVUSUxTX0RFQlVHIGZsYWcgaW4gRGlzdHV0aWxzLgorCistIElzc3VlICM2MTYzOiBGaXhlZCBIUC1VWCBydW50aW1lIGxpYnJhcnkgZGlyIG9wdGlvbnMgaW4KKyAgZGlzdHV0aWxzLnVuaXhjb21waWxlci4gSW5pdGlhbCBwYXRjaCBieSBTcmlkaGFyIFJhdG5ha3VtYXIgYW5kCisgIE1pY2hhZWwgSGF1YmVud2FsbG5lci4KKworLSBJc3N1ZSAjNjY5MzogTmV3IGZ1bmN0aW9ucyBpbiBzaXRlLnB5IHRvIGdldCB1c2VyL2dsb2JhbCBzaXRlIHBhY2thZ2VzIHBhdGhzLgorCistIElzc3VlICM2NTExOiBaaXBGaWxlIG5vdyByYWlzZXMgQmFkWmlwZmlsZSAoaW5zdGVhZCBvZiBhbiBJT0Vycm9yKSB3aGVuCisgIG9wZW5pbmcgYW4gZW1wdHkgb3IgdmVyeSBzbWFsbCBmaWxlLgorCistIElzc3VlICM2NTQ1OiBSZW1vdmVkIGFzc2VydCBzdGF0ZW1lbnRzIGluIGRpc3R1dGlscy5FeHRlbnNpb24sIHNvIHRoZQorICBiZWhhdmlvciBpcyBzaW1pbGFyIHdoZW4gdXNlZCB3aXRoIC1PLgorCistIHVuaXR0ZXN0IGhhcyBiZWVuIHNwbGl0IHVwIGludG8gYSBwYWNrYWdlLiAgQWxsIG9sZCBuYW1lcyBzaG91bGQgc3RpbGwgd29yay4KKworLSBJc3N1ZSAjNjQ2Njogbm93IGRpc3R1dGlscy5jeWd3aW5jY29tcGlsZXIgYW5kIGRpc3R1dGlscy5lbXhjY29tcGlsZXIKKyAgdXNlcyB0aGUgc2FtZSByZWZhY3RvcmVkIGZ1bmN0aW9uIHRvIGdldCBnY2MvbGQvZGxsd3JhcCB2ZXJzaW9ucyBudW1iZXJzLgorICBJdCdzIGBkaXN0dXRpbHMudXRpbC5nZXRfY29tcGlsZXJfdmVyc2lvbnNgLiBBZGRlZCBkZXByZWNhdGlvbiB3YXJuaW5ncworICBmb3IgdGhlIG9ic29sZXRlIGdldF92ZXJzaW9ucygpIGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjNjQzMzogZml4ZWQgaXNzdWVzIHdpdGggbXVsdGlwcm9jZXNzaW5nLnBvb2wubWFwIGhhbmdpbmcgb24gZW1wdHkgbGlzdAorCistIElzc3VlICM2MzE0OiBsb2dnaW5nOiBFeHRyYSBjaGVja3Mgb24gdGhlICJsZXZlbCIgYXJndW1lbnQgaW4gbW9yZSBwbGFjZXMuCisKKy0gSXNzdWUgIzI2MjI6IEZpeGVkIGFuIEltcG9ydEVycm9yIHdoZW4gaW1wb3J0aW5nIGVtYWlsLm1lc3NhZ2UgZnJvbSBhCisgIHN0YW5kYWxvbmUgYXBwbGljYXRpb24gYnVpbHQgd2l0aCBweTJleGUgb3IgcHkyYXBwLgorCistIElzc3VlICM2NDU1OiBGaXhlZCB0ZXN0X2J1aWxkX2V4dCB1bmRlciB3aW4zMi4KKworLSBJc3N1ZSAjNjM3NzogRW5hYmxlZCB0aGUgY29tcGlsZXIgb3B0aW9uLCBhbmQgZGVwcmVjYXRlIGl0cyB1c2FnZSBhcyBhbgorICBhdHRyaWJ1dGUuCisKKy0gSXNzdWUgIzY0MTM6IEZpeGVkIHRoZSBsb2cgbGV2ZWwgaW4gZGlzdHV0aWxzLmRpc3QgZm9yIGFubm91bmNlLgorCistIElzc3VlICM2NDAzOiBGaXhlZCBwYWNrYWdlIHBhdGggdXNhZ2UgaW4gYnVpbGRfZXh0LgorCistIElzc3VlcyAjNTE1NSwgNTMxMywgNTMzMTogbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MuX2Jvb3RzdHJhcCB3YXMKKyAgdW5jb25kaXRpb25hbGx5IGNhbGxpbmcgIm9zLmNsb3NlKHN5cy5zdGRpbi5maWxlbm8oKSkiIHJlc3VsdGluZyBpbiBmaWxlCisgIGRlc2NyaXB0b3IgZXJyb3JzCisKKy0gSXNzdWUgIzYzNjU6IERpc3R1dGlscyBidWlsZF9leHQgaW5wbGFjZSBtb2RlIHdhcyBjb3B5aW5nIHRoZSBjb21waWxlZAorICBleHRlbnNpb24gaW4gYSBzdWJkaXJlY3RvcnkgaWYgdGhlIGV4dGVuc2lvbiBuYW1lIGhhZCBkb3RzLgorCistIElzc3VlICM2MTY0OiBBZGRlZCBhbiBBSVggc3BlY2lmaWMgbGlua2VyIGFyZ3VtZW50IGluIERpc3R1dGlscworICB1bml4Y29tcGlsZXIuIE9yaWdpbmFsIHBhdGNoIGJ5IFNyaWRoYXIgUmF0bmFrdW1hci4KKworLSBJc3N1ZSAjNjI4NjogTm93IERpc3R1dGlscyB1cGxvYWQgY29tbWFuZCBpcyBiYXNlZCBvbiB1cmxsaWIyIGluc3RlYWQgb2YKKyAgaHR0cGxpYiwgYWxsb3dpbmcgdGhlIHVzYWdlIG9mIGh0dHBfcHJveHkuCisKKy0gSXNzdWUgIzYyODc6IEFkZGVkIHRoZSBsaWNlbnNlIGZpZWxkIGluIERpc3R1dGlscyBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICM2MjYzOiBGaXhlZCBzeW50YXggZXJyb3IgaW4gZGlzdHV0aWxzLmN5Z3dpbmNvbXBpbGVyLgorCistIElzc3VlICM1MjAxOiBkaXN0dXRpbHMuc3lzY29uZmlnLnBhcnNlX21ha2VmaWxlKCkgbm93IHVuZGVyc3RhbmRzIGAkJGAKKyAgaW4gTWFrZWZpbGVzLiBUaGlzIHByZXZlbnRzIGNvbXBpbGUgZXJyb3JzIHdoZW4gdXNpbmcgc3ludGF4IGxpa2U6CisgIGBMREZMQUdTPSctcnBhdGg9XCQkTElCOi9zb21lL290aGVyL3BhdGgnYC4gUGF0Y2ggYnkgRmxvcmlzIEJydXlub29naGUuCisKKy0gSXNzdWUgIzYxMzE6IHRlc3RfbW9kdWxlZmluZGVyIGxlYWtlZCB3aGVuIHJ1biBhZnRlciB0ZXN0X2Rpc3R1dGlscy4KKyAgUGF0Y2ggYnkgSGlyb2thenUgWWFtYW1vdG8uCisKKy0gSXNzdWUgIzYwNDg6IE5vdyBEaXN0dXRpbHMgdXNlcyB0aGUgdGFyZmlsZSBtb2R1bGUgaW4gYXJjaGl2ZV91dGlsLgorCistIElzc3VlICM2MDYyOiBJbiBkaXN0dXRpbHMsIGZpeGVkIHRoZSBwYWNrYWdlIG9wdGlvbiBvZiBidWlsZF9leHQuIEZlZWRiYWNrCisgIGFuZCB0ZXN0cyBvbiBweXdpbjMyIGJ5IFRpbSBHb2xkZW4uCisKKy0gSXNzdWUgIzYwNTM6IEZpeGVkIGRpc3R1dGlscyB0ZXN0cyBvbiB3aW4zMi4gcGF0Y2ggYnkgSGlyb2thenUgWWFtYW1vdG8uCisKKy0gSXNzdWUgIzYwNDY6IEZpeGVkIHRoZSBsaWJyYXJ5IGV4dGVuc2lvbiB3aGVuIGRpc3R1dGlscyBidWlsZF9leHQgaXMgdXNlZAorICBpbnBsYWNlLiBJbml0aWFsIHBhdGNoIGJ5IFJvdW1lbiBQZXRyb3YuCisKKy0gSXNzdWUgIzYwNDE6IE5vdyBkaXN0dXRpbHMgYHNkaXN0YCBhbmQgYHJlZ2lzdGVyYCBjb21tYW5kcyB1c2UgYGNoZWNrYCBhcyBhCisgIHN1YmNvbW1hbmQuCisKKy0gSXNzdWUgIzYwMjI6IGEgdGVzdCBmaWxlIHdhcyBjcmVhdGVkIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGJ5CisgIHRlc3RfZ2V0X291dHB1dHMgaW4gRGlzdHV0aWxzLgorCistIElzc3VlICM1OTc3OiBkaXN0dXRpbHMgYnVpbGRfZXh0LmdldF9vdXRwdXRzIHdhcyBub3QgdGFraW5nIGludG8gYWNjb3VudCB0aGUKKyAgaW5wbGFjZSBvcHRpb24uIEluaXRpYWwgcGF0Y2ggYnkga3hyb2JlcnRvLgorCistIElzc3VlICM1OTg0OiBkaXN0dXRpbHMuY29tbWFuZC5idWlsZF9leHQuY2hlY2tfZXh0ZW5zaW9uc19saXN0IGNoZWNrcyB3ZXJlIGJyb2tlbgorICBmb3Igb2xkLXN0eWxlIGV4dGVuc2lvbnMuCisKKy0gSXNzdWUgIzU5NzY6IEZpeGVkIERpc3R1dGlscyB0ZXN0X2NoZWNrX2Vudmlyb24uCisKKy0gSXNzdWUgIzU5NDE6IERpc3R1dGlscyBidWlsZF9jbGliIGNvbW1hbmQgd2FzIG5vdCB3b3JraW5nIGFueW1vcmUgYmVjYXVzZQorICBvZiBhbiBpbmNvbXBsZXRlIGNvc3R1bWl6YXRpb24gb2YgdGhlIGFyY2hpdmVyIGNvbW1hbmQuIEFkZGVkIEFSRkxBR1MgaW4gdGhlCisgIE1ha2VmaWxlIGJlc2lkZXMgQVIgYW5kIG1ha2UgRGlzdHV0aWxzIHVzZSBpdC4gT3JpZ2luYWwgcGF0Y2ggYnkgRGF2aWQKKyAgQ291cm5hcGVhdS4KKworLSBJc3N1ZSAjMjI0NTogYWlmYyBub3cgc2tpcHMgY2h1bmsgdHlwZXMgaXQgZG9lc24ndCByZWNvZ25pemUsIHBlciBzcGVjLgorCistIElzc3VlICM1ODc0OiBkaXN0dXRpbHMudGVzdHMudGVzdF9jb25maWdfY21kIGlzIG5vdCBsb2NhbGUtc2Vuc2l0aXZlCisgIGFueW1vcmUuCisKKy0gSXNzdWUgIzU4MTA6IEZpeGVkIERpc3R1dGlscyB0ZXN0X2J1aWxkX3NjcmlwdHMgc28gaXQgdXNlcworICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzLgorCistIElzc3VlICM0OTUxOiBGaXhlZCBmYWlsdXJlIGluIHRlc3RfaHR0cHNlcnZlcnMuCisKKy0gSXNzdWUgIzU3OTU6IEZpeGVkIHRlc3RfZGlzdHV0aWxzIGZhaWx1cmUgb24gRGViaWFuIHBwYy4KKworLSBJc3N1ZSAjNTYwNzogZml4ZWQgRGlzdHV0aWxzIHRlc3RfZ2V0X3BsYXRmb3JtIGZvciBNYWMgT1MgWCBmYXQgYmluYXJpZXMuCisKKy0gSXNzdWUgIzU3NDE6IGRvbid0IGRpc2FsbG93ICIlJSIgKHdoaWNoIGlzIGFuIGVzY2FwZSBmb3IgIiUiKSB3aGVuIHNldHRpbmcKKyAgYSB2YWx1ZSBpbiBTYWZlQ29uZmlnUGFyc2VyLgorCistIElzc3VlICM1NzMyOiBhZGRlZCBhIG5ldyBjb21tYW5kIGluIERpc3R1dGlsczogY2hlY2suCisKKy0gSXNzdWUgIzU3MzE6IERpc3R1dGlscyBiZGlzdF93aW5pbnN0IG5vIGxvbmdlciB3b3JrZWQgb24gbm9uLVdpbmRvd3MKKyAgcGxhdGZvcm1zLiBJbml0aWFsIHBhdGNoIGJ5IFBhdWwgTW9vcmUuCisKKy0gSXNzdWUgIzUwOTU6IEFkZGVkIGJkaXN0X21zaSB0byB0aGUgbGlzdCBvZiBiZGlzdCBzdXBwb3J0ZWQgZm9ybWF0cy4KKyAgSW5pdGlhbCBmaXggYnkgU3RldmVuIEJldGhhcmQuCisKKy0gSXNzdWUgIzE0OTE0MzE6IEZpeGVkIGRpc3R1dGlscy5maWxlbGlzdC5nbG9iX3RvX3JlIGZvciBlZGdlIGNhc2VzLgorICBJbml0aWFsIGZpeCBieSBXYXluZSBEYXZpc29uLgorCistIElzc3VlICM1Njk0OiByZW1vdmVkIHNwdXJpb3VzIHRlc3Qgb3V0cHV0IGluIERpc3R1dGlscyAodGVzdF9jbGVhbikuCisKKy0gSXNzdWUgIzEzMjYwNzc6IGZpeCB0aGUgZm9ybWF0dGluZyBvZiBTeW50YXhFcnJvcnMgYnkgdGhlIHRyYWNlYmFjayBtb2R1bGUuCisKKy0gSXNzdWUgIzE2NjUyMDYgKHBhcnRpYWxseSk6IE1vdmUgaW1wb3J0cyBpbiBjZ2l0YiB0byB0aGUgdG9wIG9mIHRoZSBtb2R1bGUKKyAgaW5zdGVhZCBvZiBwZXJmb3JtaW5nIHRoZW0gaW4gZnVuY3Rpb25zLiBIZWxwcyBwcmV2ZW50IGltcG9ydCBkZWFkbG9ja2luZyBpbgorICB0aHJlYWRzLgorCistIElzc3VlICMyNTIyOiBsb2NhbGUuZm9ybWF0IG5vdyBjaGVja3MgaXRzIGZpcnN0IGFyZ3VtZW50IHRvIGVuc3VyZSBpdCBoYXMKKyAgYmVlbiBwYXNzZWQgb25seSBvbmUgcGF0dGVybiwgYXZvaWRpbmcgbXlzdGVyaW91cyBlcnJvcnMgd2hlcmUgaXQgYXBwZWFyZWQKKyAgdGhhdCBpdCB3YXMgZmFpbGluZyB0byBkbyBsb2NhbGl6YXRpb24uCisKKy0gSXNzdWUgIzU1ODM6IEFkZGVkIG9wdGlvbmFsIEV4dGVuc2lvbnMgaW4gRGlzdHV0aWxzLiBJbml0aWFsIHBhdGNoIGJ5IEdlb3JnCisgIEJyYW5kbC4KKworLSBJc3N1ZSAjMTIyMjogbG9jYWxlLmZvcm1hdCgpIGJ1ZyB3aGVuIHRoZSB0aG91c2FuZHMgc2VwYXJhdG9yIGlzIGEgc3BhY2UKKyAgY2hhcmFjdGVyLgorCistIElzc3VlICM1NDcyOiBGaXhlZCBkaXN0dXRpbHMudGVzdF91dGlsIHRlYXIgZG93bi4gT3JpZ2luYWwgcGF0Y2ggYnkKKyAgVGltIEdvbGRlbi4KKworLSBjb2xsZWN0aW9ucy5kZXF1ZSgpIG9iamVjdHMgbm93IGhhdmUgYSByZWFkLW9ubHkgYXR0cmlidXRlIGNhbGxlZCBtYXhsZW4uCisKKy0gSXNzdWUgIzI2Mzg6IFNob3cgYSB3aW5kb3cgY29uc3RydWN0ZWQgd2l0aCB0a1NpbXBsZURpYWxvZy5EaWFsb2cgb25seSBhZnRlcgorICBpdCBpcyBoYXMgYmVlbiBwb3B1bGF0ZWQgYW5kIHByb3Blcmx5IGNvbmZpZ3VyZWQgaW4gb3JkZXIgdG8gcHJldmVudAorICB3aW5kb3cgZmxhc2hpbmcuCisKKy0gSXNzdWUgIzQ3OTI6IFByZXZlbnQgYSBzZWdmYXVsdCBpbiBfdGtpbnRlciBieSB1c2luZyB0aGUKKyAgZ3VhcmFudGVlZCB0byBiZSBzYWZlIGludGVycCBhcmd1bWVudCBnaXZlbiB0byB0aGUgUHl0aG9uQ21kIGluIHBsYWNlIG9mCisgIHRoZSBUY2wgaW50ZXJwcmV0ZXIgdGFrZW4gZnJvbSBhIFB5dGhvbkNtZF9DbGllbnREYXRhLgorCistIElzc3VlICM1MTkzOiBHdWFyYW50ZWUgdGhhdCB0a2ludGVyLlRleHQuc2VhcmNoIHJldHVybnMgYSBzdHJpbmcuCisKKy0gSXNzdWUgIzUzOTQ6IHJlbW92ZWQgPiAyLjMgc3ludGF4IGZyb20gZGlzdHV0aWxzLm1zdmM5Y29tcGlsZXIuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IEFraXJhIEtpdGFkYS4KKworLSBJc3N1ZSAjNTMzNDogYXJyYXkuZnJvbWZpbGUoKSBmYWlsZWQgdG8gaW5zZXJ0IHZhbHVlcyB3aGVuIEVPRkVycm9yIHdhcyByYWlzZWQuCisKKy0gSXNzdWUgIzUzODU6IEZpeGVkIG1tYXAgY3Jhc2ggYWZ0ZXIgcmVzaXplIGZhaWx1cmUgb24gd2luZG93cy4KKworLSBJc3N1ZSAjNTE3OTogRml4ZWQgc3VicHJvY2VzcyBoYW5kbGUgbGVhayBvbiBmYWlsdXJlIG9uIHdpbmRvd3MuCisKKy0gUEVQIDM3MjogIEFkZGVkIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkuCisKKy0gVGhlIF9hc2RpY3QoKSBmb3IgbWV0aG9kIGZvciBuYW1lZHR1cGxlcyBub3cgcmV0dXJucyBhbiBPcmRlcmVkRGljdCgpLgorCistIGNvbmZpZ3BhcnNlciBub3cgZGVmYXVsdHMgdG8gdXNpbmcgYW4gb3JkZXJlZCBkaWN0aW9uYXJ5LgorCistIElzc3VlICM1NDAxOiBGaXhlZCBhIHBlcmZvcm1hbmNlIHByb2JsZW0gaW4gbWltZXR5cGVzIHdoZW4gYGBmcm9tIG1pbWV0eXBlcworICBpbXBvcnQgZ3Vlc3NfZXh0ZW5zaW9uYGAgd2FzIHVzZWQuCisKKy0gSXNzdWUgIzE3MzM5ODY6IEZpeGVkIG1tYXAgY3Jhc2ggaW4gYWNjZXNzaW5nIGVsZW1lbnRzIG9mIHNlY29uZCBtYXAgb2JqZWN0CisgIHdpdGggc2FtZSB0YWduYW1lIGJ1dCBsYXJnZXIgc2l6ZSB0aGFuIGZpcnN0IG1hcC4gKFdpbmRvd3MpCisKKy0gSXNzdWUgIzUzODY6IG1tYXAud3JpdGVfYnl0ZSBkaWRuJ3QgY2hlY2sgbWFwIHNpemUsIHNvIGl0IGNvdWxkIGNhdXNlIGJ1ZmZlcgorICBvdmVycnVuLgorCistIElzc3VlICMxNTMzMTY0OiBJbnN0YWxsZWQgYnV0IG5vdCBsaXN0ZWQgYGAqLnB5b2BgIHdhcyBicmVha2luZyBEaXN0dXRpbHMKKyAgYmRpc3RfcnBtIGNvbW1hbmQuCisKKy0gSXNzdWUgIzUzNzg6IGFkZGVkIC0tcXVpZXQgb3B0aW9uIHRvIERpc3R1dGlscyBiZGlzdF9ycG0gY29tbWFuZC4KKworLSBJc3N1ZSAjNTA1MjogbWFrZSBEaXN0dXRpbHMgY29tcGF0aWJsZSB3aXRoIDIuMyBhZ2Fpbi4KKworLSBJc3N1ZSAjNTMxNjogRml4ZWQgYnVpbGRib3QgZmFpbHVyZXMgaW50cm9kdWNlZCBieSBtdWx0aXBsZSBpbmhlcml0YW5jZQorICBpbiBEaXN0dXRpbHMgdGVzdHMuCisKKy0gSXNzdWUgIzUyODc6IEFkZCBleGNlcHRpb24gaGFuZGxpbmcgYXJvdW5kIGZpbmRDYWxsZXIoKSBjYWxsIHRvIGhlbHAgb3V0CisgIElyb25QeXRob24uCisKKy0gSXNzdWUgIzUyODI6IEZpeGVkIG1tYXAgcmVzaXplIG9uIDMyYml0IHdpbmRvd3MgYW5kIHVuaXguIFdoZW4gb2Zmc2V0ID4gMCwKKyAgVGhlIGZpbGUgd2FzIHJlc2l6ZWQgdG8gd3Jvbmcgc2l6ZS4KKworLSBJc3N1ZSAjNTI5MjogRml4ZWQgbW1hcCBjcmFzaCBvbiBpdHMgYm91bmRhcnkgYWNjZXNzIG1bbGVuKG0pXS4KKworLSBJc3N1ZSAjMjI3OTogZGlzdHV0aWxzLnNkaXN0LmFkZF9kZWZhdWx0cyBub3cgYWRkIGZpbGVzCisgIGZyb20gdGhlIHBhY2thZ2VfZGF0YSBhbmQgdGhlIGRhdGFfZmlsZXMgbWV0YWRhdGEuCisKKy0gSXNzdWUgIzUyNTc6IHJlZmFjdG9yZWQgYWxsIHRlc3RzIGluIGRpc3R1dGlscywgc28gdGhleSB1c2UKKyAgc3VwcG9ydC5UZW1wZGlyTWFuYWdlciwgdG8gYXZvaWQgd3JpdGluZyBpbiB0aGUgdGVzdHMgZGlyZWN0b3J5LgorCistIElzc3VlICM0NTI0OiBkaXN0dXRpbHMgYnVpbGRfc2NyaXB0IGNvbW1hbmQgZmFpbGVkIHdpdGggLS13aXRoLXN1ZmZpeD0zLgorICBJbml0aWFsIHBhdGNoIGJ5IEFtYXVyeSBGb3JnZW90IGQnQXJjLgorCistIElzc3VlICMyNDYxOiBhZGRlZCB0ZXN0cyBmb3IgZGlzdHV0aWxzLnV0aWwKKworLSBJc3N1ZSAjNDk5ODogVGhlIG1lbW9yeSBzYXZpbmcgZWZmZWN0IG9mIF9fc2xvdHNfXyBoYWQgYmVlbiBsb3N0IG9uIEZyYWN0aW9ucworICB3aGljaCBpbmhlcml0ZWQgZnJvbSBudW1iZXJzLnB5IHdoaWNoIGRpZCBub3QgaGF2ZSBfX3Nsb3RzX18gZGVmaW5lZC4gIFRoZQorICBudW1iZXJzIGhpZXJhcmNoeSBub3cgaGFzIGl0cyBvd24gX19zbG90c19fIGRlY2xhcmF0aW9ucy4KKworLSBJc3N1ZSAjNDYzMTogRml4IHVybG9wZW4oKSByZXN1bHQgd2hlbiBhbiBIVFRQIHJlc3BvbnNlIHVzZXMgY2h1bmtlZAorICBlbmNvZGluZy4KKworLSBJc3N1ZSAjNTIwMzogRml4ZWQgY3R5cGVzIHNlZ2ZhdWx0cyB3aGVuIHBhc3NpbmcgYSB1bmljb2RlIHN0cmluZyB0byBhCisgIGZ1bmN0aW9uIHdpdGhvdXQgYXJndHlwZXMgKG9ubHkgb2NjdXJzIGlmIEhBVkVfVVNBQkxFX1dDSEFSX1QgaXMgZmFsc2UpLgorCistIElzc3VlICMzMzg2OiBkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9weXRob25fbGliIHByZWZpeCBhcmd1bWVudCB3YXMgaWdub3JlZAorICB1bmRlciBOVCBhbmQgT1MyLiBQYXRjaCBieSBQaGlsaXAgSmVudmV5LgorCistIElzc3VlICM1MTI4OiBNYWtlIGNvbXBpbGVhbGwgcHJvcGVybHkgaW5zcGVjdCBieXRlY29kZSB0byBkZXRlcm1pbmUgaWYgbmVlZHMKKyAgdG8gYmUgcmVjcmVhdGVkLiBUaGlzIGF2b2lkcyBhIHRpbWluZyBob2xlIHRoYW5rcyB0byB0aGUgb2xkIHJlbGlhbmNlIG9uIHRoZQorICBjdGltZSBvZiB0aGUgZmlsZXMgaW52b2x2ZWQuCisKKy0gSXNzdWUgIzUxMjI6IFN5bmNocm9uaXplIHRrIGxvYWQgZmFpbHVyZSBjaGVjayB0byBwcmV2ZW50IGEgcG90ZW50aWFsCisgIGRlYWRsb2NrLgorCistIElzc3VlICMxODE4OiBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkgbm93IHN1cHBvcnRzIGEga2V5d29yZCBhcmd1bWVudAorICAncmVuYW1lJyB3aGljaCBsZXRzIGludmFsaWQgZmllbGRuYW1lcyBiZSBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0bworICBwb3NpdGlvbmFsIG5hbWVzIGluIHRoZSBmb3JtLCBfMSwgXzIsIC4uLgorCistIElzc3VlICM0ODkwOiBIYW5kbGUgZW1wdHkgdGV4dCBzZWFyY2ggcGF0dGVybiBpbiBUa2ludGVyLlRleHQuc2VhcmNoLgorCistIElzc3VlICM0NTEyIChwYXJ0IDIpOiBQcm9tb3RlIGBgWmlwSW1wb3J0ZXIuX2dldF9maWxlbmFtZSgpYGAgdG8gYmUgYQorICBwdWJsaWMgZG9jdW1lbnRlZCBtZXRob2QgYGBaaXBJbXBvcnRlci5nZXRfZmlsZW5hbWUoKWBgLgorCistIElzc3VlICM0MTk1OiBUaGUgYGBydW5weWBgIG1vZHVsZSAoYW5kIHRoZSBgYC1tYGAgc3dpdGNoKSBub3cgc3VwcG9ydAorICB0aGUgZXhlY3V0aW9uIG9mIHBhY2thZ2VzIGJ5IGxvb2tpbmcgZm9yIGFuZCBleGVjdXRpbmcgYSBgYF9fbWFpbl9fYGAKKyAgc3VibW9kdWxlIHdoZW4gYSBwYWNrYWdlIG5hbWUgaXMgc3VwcGxpZWQuIEluaXRpYWwgcGF0Y2ggYnkgQW5kaQorICBWYWpkYS4KKworLSBJc3N1ZSAjMTczMTcwNjogQ2FsbCBUY2xfQ29uZGl0aW9uRmluYWxpemUgZm9yIFRjbF9Db25kaXRpb25zIHRoYXQgd2lsbAorICBub3QgYmUgdXNlZCBhZ2FpbiAodGhpcyByZXF1aXJlcyBUY2wvVGsgOC4zLjEpLCBhbHNvIGZpeCBhIG1lbW9yeSBsZWFrIGluCisgIFRrYXBwX0NhbGwgd2hlbiBjYWxsaW5nIGZyb20gYSB0aHJlYWQgZGlmZmVyZW50IHRoYW4gdGhlIG9uZSB0aGF0IGNyZWF0ZWQKKyAgdGhlIFRjbCBpbnRlcnByZXRlci4gUGF0Y2ggYnkgUm9iZXJ0IEhhbmNvY2suCisKKy0gSXNzdWUgIzQyODU6IENoYW5nZSBzeXMudmVyc2lvbl9pbmZvIHRvIGJlIGEgbmFtZWQgdHVwbGUuIFBhdGNoIGJ5CisgIFJvc3MgTGlnaHQuCisKKy0gSXNzdWUgIzE1MjA4Nzc6IE5vdyBkaXN0dXRpbHMuc3lzY29uZmlnIHJlYWRzICRBUiBmcm9tIHRoZQorICBlbnZpcm9ubWVudC9NYWtlZmlsZS4gUGF0Y2ggYnkgRG91Z2xhcyBHcmVpbWFuLgorCistIElzc3VlICMxMjc2NzY4OiBUaGUgdmVyYm9zZSBvcHRpb24gd2FzIG5vdCB1c2VkIGluIHRoZSBjb2RlIG9mCisgIGRpc3R1dGlscy5maWxlX3V0aWwgYW5kIGRpc3R1dGlscy5kaXJfdXRpbC4KKworLSBJc3N1ZSAjNTEzMjogRml4ZWQgdHJvdWJsZSBidWlsZGluZyBleHRlbnNpb25zIHVuZGVyIFNvbGFyaXMgd2l0aAorICAtLWVuYWJsZWQtc2hhcmVkIGFjdGl2YXRlZC4gSW5pdGlhbCBwYXRjaCBieSBEYXZlIFBldGVyc29uLgorCistIElzc3VlICMxNTgxNDc2OiBBbHdheXMgdXNlIHRoZSBUY2wgZ2xvYmFsIG5hbWVzcGFjZSB3aGVuIGNhbGxpbmcgaW50byBUY2wuCisKKy0gVGhlIHNoZWx2ZSBtb2R1bGUgbm93IGRlZmF1bHRzIHRvIHBpY2tsZSBwcm90b2NvbCAzLgorCistIEZpeCBhIGJ1ZyBpbiB0aGUgdHJhY2UgbW9kdWxlIHdoZXJlIGEgYnl0ZXMgb2JqZWN0IGZyb20gY29fbG5vdGFiIGhhZCBpdHMKKyAgaXRlbXMgYmVpbmcgcGFzc2VkIHRocm91Z2ggb3JkKCkuCisKKy0gSXNzdWUgIzIwNDc6IHNodXRpbC5tb3ZlKCkgY291bGQgYmVsaWV2ZSB0aGF0IGl0cyBkZXN0aW5hdGlvbiBwYXRoIHdhcworICBpbnNpZGUgaXRzIHNvdXJjZSBwYXRoIGlmIGl0IGJlZ2FuIHdpdGggdGhlIHNhbWUgbGV0dGVycyAoZS5nLiAic3JjIiB2cy4KKyAgInNyYy5uZXciKS4KKworLSBBZGRlZCB0aGUgdHRrIG1vZHVsZS4gU2VlIGlzc3VlICMyOTgzOiBUdGsgc3VwcG9ydCBmb3IgVGtpbnRlci4KKworLSBSZW1vdmVkIGlzU2VxdWVuY2VUeXBlKCksIGlzTWFwcGluZ1R5cGUsIGFuZCBpc051bWJlclR5cGUoKSBmcm9tIHRoZQorICBvcGVyYXRvciBtb2R1bGU7IHVzZSB0aGUgYWJzdHJhY3QgYmFzZSBjbGFzc2VzIGluc3RlYWQuICBBbHNvIHJlbW92ZWQKKyAgdGhlIHJlcGVhdCgpIGZ1bmN0aW9uOyB1c2UgbXVsKCkgaW5zdGVhZC4KKworLSBJc3N1ZSAjNTAyMTogIGRvY3Rlc3QudGVzdGZpbGUoKSBkaWQgbm90IGNyZWF0ZSBfX25hbWVfXyBhbmQKKyAgY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpIHJlbGllZCBvbiBfX25hbWVfXyBiZWluZyBkZWZpbmVkLgorCistIEJhY2twb3J0IGltcG9ydGxpYiBmcm9tIFB5dGhvbiAzLjEuIE9ubHkgdGhlIGltcG9ydF9tb2R1bGUoKSBmdW5jdGlvbiBoYXMKKyAgYmVlbiBiYWNrcG9ydGVkIHRvIGhlbHAgZmFjaWxpdGF0ZSB0cmFuc2l0aW9ucyBmcm9tIDIuNyB0byAzLjEuCisKKy0gSXNzdWUgIzE4ODU6IGRpc3R1dGlscy4gV2hlbiBydW5uaW5nIHNkaXN0IHdpdGggLS1mb3JtYXRzPXRhcixnenRhcgorICB0aGUgdGFyIGZpbGUgd2FzIG92ZXJyaWRlbiBieSB0aGUgZ3p0YXIgb25lLgorCistIElzc3VlICM0ODYzOiBkaXN0dXRpbHMubXdlcmtzY29tcGlsZXIgaGFzIGJlZW4gcmVtb3ZlZC4KKworLSBBZGRlZCBhIG5ldyBpdGVydG9vbHMgZnVuY3Rpb25zOiAgY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQoKQorICBhbmQgY29tcHJlc3MoKS4KKworLSBJc3N1ZSAjNTAzMjogIGFkZGVkIGEgc3RlcCBhcmd1bWVudCB0byBpdGVydG9vbHMuY291bnQoKSBhbmQKKyAgYWxsb3dlZCBub24taW50ZWdlciBhcmd1bWVudHMuCisKKy0gRml4IGFuZCBwcm9wZXJseSBkb2N1bWVudCB0aGUgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSdzIGxvZ2dpbmcKKyAgc3VwcG9ydCwgZXhwb3NlIHRoZSBpbnRlcm5hbCBsZXZlbHMgYW5kIHByb3ZpZGUgcHJvcGVyIHVzYWdlCisgIGV4YW1wbGVzLgorCistIElzc3VlICMxNjcyMzMyOiBmaXggdW5waWNrbGluZyBvZiBzdWJub3JtYWwgZmxvYXRzLCB3aGljaCB3YXMKKyAgcHJvZHVjaW5nIGEgVmFsdWVFcnJvciBvbiBzb21lIHBsYXRmb3Jtcy4KKworLSBJc3N1ZSAjMzg4MTogSGVscCBUY2wgdG8gbG9hZCBldmVuIHdoZW4gc3RhcnRlZCB0aHJvdWdoIHRoZQorICB1bnJlYWRhYmxlIGxvY2FsIHN5bWxpbmsgdG8gIlByb2dyYW0gRmlsZXMiIG9uIFZpc3RhLgorCistIElzc3VlICM0NzEwOiBFeHRyYWN0IGRpcmVjdG9yaWVzIHByb3Blcmx5IGluIHRoZSB6aXBmaWxlIG1vZHVsZTsKKyAgYWxsb3cgYWRkaW5nIGRpcmVjdG9yaWVzIHRvIGEgemlwZmlsZS4KKworLSBJc3N1ZSAjMzgwNzogX211bHRpcHJvY2Vzc2luZyBidWlsZCBmYWlscyB3aGVuIGNvbmZpZ3VyZSBpcyBwYXNzZWQKKyAgLS13aXRob3V0LXRocmVhZHMgYXJndW1lbnQuIFdoZW4gdGhpcyBvY2N1cnMsIF9tdWx0aXByb2Nlc3Npbmcgd2lsbAorICBiZSBkaXNhYmxlZCwgYW5kIG5vdCBjb21waWxlZC4KKworLSBJc3N1ZSAjNTAwODogV2hlbiBhIGZpbGUgaXMgb3BlbmVkIGluIGFwcGVuZCBtb2RlIHdpdGggdGhlIG5ldyBJTyBsaWJyYXJ5LAorICBkbyBhbiBleHBsaWNpdCBzZWVrIHRvIHRoZSBlbmQgb2YgZmlsZSAoc28gdGhhdCBlLmcuIHRlbGwoKSByZXR1cm5zIHRoZQorICBmaWxlIHNpemUgcmF0aGVyIHRoYW4gMCkuIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBiZWhhdmlvdXIgb2YgdGhlCisgIHRyYWRpdGlvbmFsIDIueCBmaWxlIG9iamVjdC4KKworLSBJc3N1ZSAjNTAxMzogRml4ZWQgYSBidWcgaW4gRmlsZUhhbmRsZXIgd2hpY2ggb2NjdXJyZWQgd2hlbiB0aGUgZGVsYXkKKyAgcGFyYW1ldGVyIHdhcyBzZXQuCisKKy0gSXNzdWUgIzQ4NDI6IEFsd2F5cyBhcHBlbmQgYSB0cmFpbGluZyAnTCcgd2hlbiBwaWNrbGluZyBsb25ncyB1c2luZworICBwaWNrbGUgcHJvdG9jb2wgMC4gIFdoZW4gcmVhZGluZywgdGhlICdMJyBpcyBvcHRpb25hbC4KKworLSBBZGQgdGhlIGltcG9ydGxpYiBwYWNrYWdlLgorCistIElzc3VlICM0MzAxOiBQYXRjaCB0aGUgbG9nZ2luZyBtb2R1bGUgdG8gYWRkIHByb2Nlc3NOYW1lIHN1cHBvcnQsIHJlbW92ZQorICBfY2hlY2tfbG9nZ2VyX2NsYXNzIGZyb20gbXVsdGlwcm9jZXNzaW5nLgorCistIElzc3VlICMzMzI1OiBSZW1vdmUgcHl0aG9uMi54IHRyeTogZXhjZXB0OiBpbXBvcnRzIGZvciBvbGQgY1BpY2tsZSBmcm9tCisgIG11bHRpcHJvY2Vzc2luZy4KKworLSBJc3N1ZSAjNDk1OTogaW5zcGVjdC5mb3JtYXRhcmdzcGVjIG5vdyB3b3JrcyBmb3Iga2V5d29yZCBvbmx5IGFyZ3VtZW50cworICB3aXRob3V0IGRlZmF1bHRzLgorCistIElzc3VlICMzMzIxOiBgYF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbigpYGAgZG9lc24ndCBjaGVjayBoYW5kbGU7IGFkZGVkIGNoZWNrcworICBmb3IgVW5peCBtYWNoaW5lcyBmb3IgbmVnYXRpdmUgaGFuZGxlcyBhbmQgbGFyZ2UgaW50IGhhbmRsZXMuIFdpdGhvdXQgdGhpcyBjaGVjaworICBpdCBpcyBwb3NzaWJsZSB0byBzZWdmYXVsdCB0aGUgaW50ZXJwcmV0ZXIuCisKKy0gSXNzdWUgIzQ0NDk6IEFzc2VydGlvbkVycm9yIGluIG1wX2JlbmNobWFya3MucHksIGNhdXNlZCBieSBhbiB1bmRlcmx5aW5nIGlzc3VlCisgIGluIHNoYXJlZGN0eXBlcy5weS4KKworLSBJc3N1ZSAjMTIyNTEwNzogaW5zcGVjdC5pc2NsYXNzKCkgcmV0dXJuZWQgVHJ1ZSBmb3IgaW5zdGFuY2VzIHdpdGggYSBjdXN0b20KKyAgX19nZXRhdHRyX18uCisKKy0gSXNzdWUgIzM4MjYgYW5kICM0NzkxOiBUaGUgc29ja2V0IG1vZHVsZSBub3cgY2xvc2VzIHRoZSB1bmRlcmx5aW5nIHNvY2tldAorICBhcHByb3ByaWF0ZWx5IHdoZW4gaXQgaXMgYmVpbmcgdXNlZCB2aWEgc29ja2V0Lm1ha2VmaWxlKCkgb2JqZWN0cworICByYXRoZXIgdGhhbiBkZWxheWluZyB0aGUgY2xvc2UgYnkgd2FpdGluZyBmb3IgZ2FyYmFnZSBjb2xsZWN0aW9uIHRvIGRvIGl0LgorCistIElzc3VlICMxNjk2MTk5OiAgQWRkIGNvbGxlY3Rpb25zLkNvdW50ZXIoKSBmb3IgcmFwaWQgYW5kIGNvbnZlbmllbnQKKyAgY291bnRpbmcuCisKKy0gSXNzdWUgIzM4NjA6IEd6aXBGaWxlIGFuZCBCWjJGaWxlIG5vdyBzdXBwb3J0IHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wuCisKKy0gSXNzdWUgIzQ4Njc6IEZpeGVkIGEgY3Jhc2ggaW4gY3R5cGVzIHdoZW4gcGFzc2luZyBhIHN0cmluZyB0byBhCisgIGZ1bmN0aW9uIHdpdGhvdXQgZGVmaW5pbmcgYXJndHlwZXMuCisKKy0gSXNzdWUgIzQyNzI6IEFkZCBhbiBvcHRpb25hbCBhcmd1bWVudCB0byB0aGUgR3ppcEZpbGUgY29uc3RydWN0b3IgdG8gb3ZlcnJpZGUKKyAgdGhlIHRpbWVzdGFtcCBpbiB0aGUgZ3ppcCBzdHJlYW0uIFRoZSBkZWZhdWx0IHZhbHVlIHJlbWFpbnMgdGhlIGN1cnJlbnQgdGltZS4KKyAgVGhlIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VkIGJ5IGUuZy4gZ3VuemlwIHdoZW4gZGVjb21wcmVzc2luZy4gUGF0Y2ggYnkKKyAgSmFjcXVlcyBGcmVjaGV0LgorCistIFJlc3RvcmUgUHl0aG9uIDIuMyBjb21wYXRpYmlsaXR5IGZvciBkZWNpbWFsLnB5LgorCistIElzc3VlICMzNjM4OiBSZW1vdmUgZnVuY3Rpb25zIGZyb20gX3RraW50ZXIgbW9kdWxlIGxldmVsIHRoYXQgZGVwZW5kIG9uCisgIFRrYXBwT2JqZWN0IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSB0aHJlYWRzLgorCistIElzc3VlICM0NzE4OiBBZGFwdCB0aGUgd3NnaXJlZiBwYWNrYWdlIHNvIHRoYXQgaXQgYWN0dWFsbHkgd29ya3Mgd2l0aAorICBQeXRob24gMy54LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGBvZmZpY2lhbCBhbWVuZG1lbnRzIG9mIHRoZSBzcGVjCisgIDxodHRwOi8vd3d3LndzZ2kub3JnL3dzZ2kvQW1lbmRtZW50c18xLjA+YF8uCisKKy0gSXNzdWUgIzQ3OTY6IEFkZGVkIERlY2ltYWwuZnJvbV9mbG9hdCgpIGFuZCBDb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoKQorICB0byB0aGUgZGVjaW1hbCBtb2R1bGUuCisKKy0gRnJhY3Rpb25zLmZyb21fZmxvYXQoKSBubyBsb25nZXIgbG9zZXMgcHJlY2lzaW9uIGZvciBpbnRlZ2VycyB0b28gYmlnIHRvCisgIGNhc3QgYXMgZmxvYXRzLgorCistIElzc3VlICM0ODEyOiBhZGQgbWlzc2luZyB1bmRlcnNjb3JlIHByZWZpeCB0byBzb21lIGludGVybmFsLXVzZS1vbmx5CisgIGNvbnN0YW50cyBpbiB0aGUgZGVjaW1hbCBtb2R1bGUuICAoRGVjXzAgYmVjb21lcyBfRGVjXzAsIGV0Yy4pCisKKy0gSXNzdWUgIzQ3OTA6IFRoZSBuc21hbGxlc3QoKSBhbmQgbmxhcmdlc3QoKSBmdW5jdGlvbnMgaW4gdGhlIGhlYXBxIG1vZHVsZQorICBkaWQgdW5uZWNlc3Nhcnkgd29yayBpbiB0aGUgY29tbW9uIGNhc2Ugd2hlcmUgbm8ga2V5IGZ1bmN0aW9uIHdhcyBzcGVjaWZpZWQuCisKKy0gSXNzdWUgIzQ3OTU6IGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbigpIHJldHVybnMgRmFsc2UgaW5zdGVhZCBvZiBOb25lIHdoZW4KKyAgdGhlIGZ1bmN0aW9uIGlzIG5vdCBhIGdlbmVyYXRvci4KKworLSBJc3N1ZSAjNDcwMjogVGhyb3dpbmcgYSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yIGluc3RlYWQgb2YgSU9FcnJvciBpbiBjYXNlCisgIG5vIE1TVkMgY29tcGlsZXIgaXMgZm91bmQgdW5kZXIgV2luZG93cy4gT3JpZ2luYWwgcGF0Y2ggYnkgUGhpbGlwIEplbnZleS4KKworLSBJc3N1ZSAjNDY0NjogZGlzdHV0aWxzIHdhcyBjaG9raW5nIG9uIGVtcHR5IG9wdGlvbnMgYXJnIGluIHRoZSBzZXR1cAorICBmdW5jdGlvbi4gT3JpZ2luYWwgcGF0Y2ggYnkgVGhvbWFzIEhlbGxlci4KKworLSBJc3N1ZSAjMzc2NzogQ29udmVydCBUayBvYmplY3QgdG8gc3RyaW5nIGluIHRrQ29sb3JDaG9vc2VyLgorCistIElzc3VlICMzMjQ4OiBBbGxvdyBwbGFjaW5nIFNjcm9sbGVkVGV4dCBpbiBhIFBhbmVkV2luZG93LgorCistIElzc3VlICM0NDQ0OiBBbGxvdyBhc3NlcnRSYWlzZXMoKSB0byBiZSB1c2VkIGFzIGEgY29udGV4dCBoYW5kbGVyLCBzbyB0aGF0CisgIHRoZSBjb2RlIHVuZGVyIHRlc3QgY2FuIGJlIHdyaXR0ZW4gaW5saW5lIGlmIG1vcmUgcHJhY3RpY2FsLgorCistIElzc3VlICM0NzM5OiBBZGQgcHlkb2MgaGVscCB0b3BpY3MgZm9yIHN5bWJvbHMsIHNvIHRoYXQgZS5nLiBoZWxwKCdAJykKKyAgd29ya3MgYXMgZXhwZWN0ZWQgaW4gdGhlIGludGVyYWN0aXZlIGVudmlyb25tZW50LgorCistIElzc3VlICM0NzU2OiB6aXBmaWxlLmlzX3ppcGZpbGUoKSBub3cgc3VwcG9ydHMgZmlsZS1saWtlIG9iamVjdHMuIFBhdGNoIGJ5CisgIEdhYnJpZWwgR2VuZWxsaW5hLgorCistIElzc3VlICM0NTc0OiByZWFkaW5nIGFuIFVURjE2LWVuY29kZWQgdGV4dCBmaWxlIGNyYXNoZXMgaWYgXHIgb24gNjQtY2hhcgorICBib3VuZGFyeS4KKworLSBJc3N1ZSAjNDIyMzogaW5zcGVjdC5nZXRzb3VyY2UoKSB3aWxsIG5vdyBjb3JyZWN0bHkgZGlzcGxheSBzb3VyY2UgY29kZQorICBmb3IgcGFja2FnZXMgbG9hZGVkIHZpYSB6aXBpbXBvcnQgKG9yIGFueSBvdGhlciBjb25mb3JtYW50IFBFUCAzMDIKKyAgbG9hZGVyKS4gT3JpZ2luYWwgcGF0Y2ggYnkgQWxleGFuZGVyIEJlbG9wb2xza3kuCisKKy0gSXNzdWUgIzQyMDE6IHBkYiBjYW4gbm93IGFjY2VzcyBhbmQgZGlzcGxheSBzb3VyY2UgY29kZSBsb2FkZWQgdmlhCisgIHppcGltcG9ydCAob3IgYW55IG90aGVyIGNvbmZvcm1hbnQgUEVQIDMwMiBsb2FkZXIpLiBPcmlnaW5hbCBwYXRjaCBieQorICBBbGV4YW5kZXIgQmVsb3BvbHNreS4KKworLSBJc3N1ZSAjNDE5NzogZG9jdGVzdHMgaW4gbW9kdWxlcyBsb2FkZWQgdmlhIHppcGltcG9ydCAob3IgYW55IG90aGVyIFBFUAorICAzMDIgY29uZm9ybWFudCBsb2FkZXIpIHdpbGwgbm93IHdvcmsgY29ycmVjdGx5IGluIG1vc3QgY2FzZXMgKHRoZXkKKyAgYXJlIHN0aWxsIHN1YmplY3QgdG8gdGhlIGNvbnN0cmFpbnRzIHRoYXQgZXhpc3QgZm9yIGFsbCBjb2RlIHJ1bm5pbmcKKyAgZnJvbSBpbnNpZGUgYSBtb2R1bGUgbG9hZGVkIHZpYSBhIFBFUCAzMDIgbG9hZGVyIGFuZCBhdHRlbXB0aW5nIHRvCisgIHBlcmZvcm0gSU8gb3BlcmF0aW9ucyBiYXNlZCBvbiBfX2ZpbGVfXykuIE9yaWdpbmFsIHBhdGNoIGJ5CisgIEFsZXhhbmRlciBCZWxvcG9sc2t5LgorCistIElzc3VlcyAjNDA4MiBhbmQgIzQ1MTI6IEFkZCBydW5weSBzdXBwb3J0IHRvIHppcGltcG9ydCBpbiBhIG1hbm5lciB0aGF0CisgIGFsbG93cyBiYWNrcG9ydGluZyB0byBtYWludGVuYW5jZSBicmFuY2hlcy4gT3JpZ2luYWwgcGF0Y2ggYnkKKyAgQWxleGFuZGVyIEJlbG9wb2xza3kuCisKKy0gSXNzdWUgIzQxNjM6IHRleHR3cmFwIG1vZHVsZTogYWxsb3cgd29yZCBzcGxpdHRpbmcgb24gYSBoeXBoZW4gcHJlY2VkZWQgYnkKKyAgYSBub24tQVNDSUkgbGV0dGVyLgorCistIElzc3VlICM0NjE2OiBUYXJGaWxlLnV0aW1lKCk6IFJlc3RvcmUgZGlyZWN0b3J5IHRpbWVzIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzQwMjE6IHRva2VuaXplLmRldGVjdF9lbmNvZGluZygpIG5vdyByYWlzZXMgYSBTeW50YXhFcnJvciB3aGVuIHRoZQorICBjb2RlYyBjYW5ub3QgYmUgZm91bmQuICBUaGlzIGlzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGJ1aWx0aW4gYmVoYXZpb3IuCisKKy0gSXNzdWUgIzQwODQ6IEZpeCBtYXgsIG1pbiwgbWF4X21hZyBhbmQgbWluX21hZyBEZWNpbWFsIG1ldGhvZHMgdG8KKyAgZ2l2ZSBjb3JyZWN0IHJlc3VsdHMgaW4gdGhlIGNhc2Ugd2hlcmUgb25lIGFyZ3VtZW50IGlzIGEgcXVpZXQgTmFOCisgIGFuZCB0aGUgb3RoZXIgaXMgYSBmaW5pdGUgbnVtYmVyIHRoYXQgcmVxdWlyZXMgcm91bmRpbmcuCisKKy0gSXNzdWUgIzQ0ODM6IF9kYm0gbW9kdWxlIG5vdyBidWlsZHMgb24gc3lzdGVtcyB3aXRoIGdkYm0gJiBnZGJtX2NvbXBhdAorICBsaWJzLgorCistIEFkZGVkIHRoZSBzdWJwcm9jZXNzLmNoZWNrX2NhbGxfb3V0cHV0KCkgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZ2V0IG91dHB1dAorICBmcm9tIGEgc3VicHJvY2VzcyBvbiBzdWNjZXNzIG9yIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4KKworLSBJc3N1ZSAjMTA1NTIzNDogY2dpLnBhcnNlX2hlYWRlcigpOiBGaXhlZCBwYXJzaW5nIG9mIGhlYWRlciBwYXJhbWV0ZXJzIHRvCisgIHN1cHBvcnQgdW51c3VhbCBmaWxlbmFtZXMgKHN1Y2ggYXMgdGhvc2UgY29udGFpbmluZyBzZW1pLWNvbG9ucykgaW4KKyAgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXJzLgorCistIElzc3VlICM0Mzg0OiBBZGRlZCBsb2dnaW5nIGludGVncmF0aW9uIHdpdGggd2FybmluZ3MgbW9kdWxlIHVzaW5nCisgIGNhcHR1cmVXYXJuaW5ncygpLiBUaGlzIGNoYW5nZSBpbmNsdWRlcyBhIE51bGxIYW5kbGVyIHdoaWNoIGRvZXMgbm90aGluZzsKKyAgaXQgd2lsbCBiZSBvZiB1c2UgdG8gbGlicmFyeSBkZXZlbG9wZXJzIHdobyB3YW50IHRvIGF2b2lkIHRoZSAiTm8gaGFuZGxlcnMKKyAgY291bGQgYmUgZm91bmQgZm9yIGxvZ2dlciBYWFgiIG1lc3NhZ2Ugd2hpY2ggY2FuIGFwcGVhciBpZiB0aGUgbGlicmFyeSB1c2VyCisgIGRvZXNuJ3QgY29uZmlndXJlIGxvZ2dpbmcuCisKKy0gSXNzdWUgIzM3NDE6IERJU1RVVElMU19VU0VfU0RLIHNldCBjYXVzZXMgbXN2Yzljb21waWxlci5weSB0byByYWlzZSBhbgorICBleGNlcHRpb24uCisKKy0gSXNzdWUgIzQ1Mjk6IGZpeCB0aGUgcGFyc2VyIG1vZHVsZSdzIHZhbGlkYXRpb24gb2YgdHJ5LWV4Y2VwdC1maW5hbGx5CisgIHN0YXRlbWVudHMuCisKKy0gSXNzdWUgIzQ0NTg6IGdldG9wdC5nbnVfZ2V0b3B0KCkgbm93IHJlY29nbml6ZXMgYSBzaW5nbGUgIi0iIGFzIGFuIGFyZ3VtZW50LAorICBub3QgYSBtYWxmb3JtZWQgb3B0aW9uLgorCistIEFkZGVkIHRoZSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgpIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGdldCBvdXRwdXQKKyAgZnJvbSBhIHN1YnByb2Nlc3Mgb24gc3VjY2VzcyBvciByYWlzZSBhbiBleGNlcHRpb24gb24gZXJyb3IuCisKKy0gSXNzdWUgIzQ1NDI6IE9uIFdpbmRvd3MsIGJpbmFzY2lpLmNyYzMyIHN0aWxsIGFjY2VwdGVkIHN0ciBhcyBiaW5hcnkgaW5wdXQ7CisgIHRoZSBjb3JyZXNwb25kaW5nIHRlc3RzIG5vdyBwYXNzLgorCistIElzc3VlICM0NTM3OiB3ZWJicm93c2VyLlVuaXhCcm93c2VyIHdvdWxkIGZhaWwgdG8gb3BlbiB0aGUgYnJvd3NlciBiZWNhdXNlCisgIGl0IHdhcyBjYWxsaW5nIHRoZSB3cm9uZyBvcGVuKCkgZnVuY3Rpb24uCisKKy0gSXNzdWUgIzEwNTUyMzQ6IGNnaS5wYXJzZV9oZWFkZXIoKTogRml4ZWQgcGFyc2luZyBvZiBoZWFkZXIgcGFyYW1ldGVycyB0bworICBzdXBwb3J0IHVudXN1YWwgZmlsZW5hbWVzIChzdWNoIGFzIHRob3NlIGNvbnRhaW5pbmcgc2VtaS1jb2xvbnMpIGluCisgIENvbnRlbnQtRGlzcG9zaXRpb24gaGVhZGVycy4KKworLSBJc3N1ZSAjNDg2MTogY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5KCk6IFJvYnVzdGlmeS4gRml4IGxpYnJhcnkgZGV0ZWN0aW9uIG9uCisgIGJpYXJjaCBzeXN0ZW1zLiBUcnkgdG8gcmVseSBvbiBsZGNvbmZpZyBvbmx5LCB3aXRob3V0IHVzaW5nIG9iamR1bXAgYW5kIGdjYy4KKworLSBJc3N1ZSAjNTEwNDogVGhlIHNvY2tldCBtb2R1bGUgbm93IHJhaXNlcyBPdmVyZmxvd0Vycm9yIHdoZW4gMTYtYml0IHBvcnQgYW5kCisgIHByb3RvY29sIG51bWJlcnMgYXJlIHN1cHBsaWVkIG91dHNpZGUgdGhlIGFsbG93ZWQgMC02NTUzNiByYW5nZSBvbiBiaW5kKCkKKyAgYW5kIGdldHNlcnZieXBvcnQoKS4KKworLSBXaW5kb3dzIGxvY2FsZSBtYXBwaW5nIHVwZGF0ZWQgdG8gVmlzdGEuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICM0NzA0OiByZW1vdmUgdXNlIG9mIGNtcCgpIGluIHB5YmVuY2gsIGJ1bXAgaXRzIHZlcnNpb24gbnVtYmVyIHRvIDIuMSwKKyAgYW5kIG1ha2UgaXQgMi42LWNvbXBhdGlibGUuCisKKy0gVHRrIGRlbW9zIGFkZGVkIGluIERlbW8vdGtpbnRlci90dGsvCisKKy0gSXNzdWUgIzQ2Nzc6IGFkZCB0d28gbGlzdCBjb21wcmVoZW5zaW9uIHRlc3RzIHRvIHB5YmVuY2guCisKKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzYwOTQ6IEJ1aWxkIGNvcnJlY3RseSB3aXRoIFN1YnZlcnNpb24gMS43LgorCistIElzc3VlICM1ODQ3OiBSZW1vdmUgLW4gc3dpdGNoIG9uICJFZGl0IHdpdGggSURMRSIgbWVudSBpdGVtLgorCistIElzc3VlICM1NzI2OiBNYWtlIE1vZHVsZXMvbGRfc29fYWl4IHJldHVybiB0aGUgYWN0dWFsIGV4aXQgY29kZSBvZiB0aGUKKyAgbGlua2VyLCByYXRoZXIgdGhhbiBhbHdheXMgZXhpdCBzdWNjZXNzZnVsbHkuIFBhdGNoIGJ5IEZsb3JpcyBCcnV5bm9vZ2hlLgorCistIElzc3VlICM0NTg3OiBBZGQgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtZGJtbGlib3JkZXI9ZGIxOmRiMjouLi4gdG8gc3BlY2lmeQorICB0aGUgb3JkZXIgdGhhdCBiYWNrZW5kcyBmb3IgdGhlIGRibSBleHRlbnNpb24gYXJlIGNoZWNrZWQuCisKKy0gTGluayB0aGUgc2hhcmVkIHB5dGhvbiBsaWJyYXJ5IHdpdGggJChNT0RMSUJTKS4KKworLSBJc3N1ZSAjNTEzNDogU2lsZW5jZSBjb21waWxlciB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZyBzcWxpdGUgd2l0aCBWQysrLgorCistIElzc3VlICM0NDk0OiBGaXggYnVpbGQgd2l0aCBQeV9OT19FTkFCTEVfU0hBUkVEIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzQ4OTU6IFVzZSBfc3RyZHVwIG9uIFdpbmRvd3MgQ0UuCisKKy0gSXNzdWUgIzQ0NzI6ICJjb25maWd1cmUgLS1lbmFibGUtc2hhcmVkIiBub3cgd29ya3Mgb24gT1NYCisKKy0gSXNzdWVzICM0NzI4IGFuZCAjNDA2MDogV09SRFNfQklHRURJQU4gaXMgbm93IGNvcnJlY3QgaW4gVW5pdmVyc2FsIGJ1aWxkcy4KKworLSBJc3N1ZSAjNDM4OTogQWRkIGljb24gdG8gdGhlIHVuaW5zdGFsbCBlbnRyeSBpbiAiYWRkLWFuZC1yZW1vdmUtcHJvZ3JhbXMiLgorCistIElzc3VlICM0Mjg5OiBSZW1vdmUgQ2FuY2VsIGJ1dHRvbiBmcm9tIEFkdmFuY2VkRGxnLgorCistIElzc3VlICMxNjU2Njc1OiBSZWdpc3RlciBhIGRyb3AgaGFuZGxlciBmb3IgLnB5KiBmaWxlcyBvbiBXaW5kb3dzLgorCistIElzc3VlICM0MTIwOiBFeGNsdWRlIG1hbmlmZXN0IGZyb20gZXh0ZW5zaW9uIG1vZHVsZXMgaW4gVlMyMDA4LgorCistIElzc3VlICM0MDkxOiBJbnN0YWxsIHB5dGhvbnh5LmRsbCBpbiBzeXN0ZW0zMiBhZ2Fpbi4KKworLSBJc3N1ZSAjNDAxODogRGlzYWJsZSAiZm9yIG1lIiBpbnN0YWxsYXRpb25zIG9uIFZpc3RhLgorCistIElzc3VlICMzNzU4OiBBZGQgYGBwYXRjaGNoZWNrYGAgYnVpbGQgdGFyZ2V0IHRvIC5QSE9OWS4KKworLSBJc3N1ZSAjNDIwNDogRml4ZWQgbW9kdWxlIGJ1aWxkIGVycm9ycyBvbiBGcmVlQlNEIDQuCisKKworQy1BUEkKKy0tLS0tCisKKy0gSXNzdWUgIzY2MjQ6IHlBcmdfUGFyc2VUdXBsZSB3aXRoICJzIiBmb3JtYXQgd2hlbiBwYXJzaW5nIGFyZ3VtZW50IHdpdGgKKyAgTlVMOiBCb2d1cyBUeXBlRXJyb3IgZGV0YWlsIHN0cmluZy4KKworLSBJc3N1ZSAjNTE3NTogUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyBub3cgcmFpc2VzIE92ZXJmbG93RXJyb3IKKyAgZm9yIG5lZ2F0aXZlIGFyZ3VtZW50cy4gIFByZXZpb3VzbHksIGl0IHJhaXNlZCBUeXBlRXJyb3IuCisKKy0gSXNzdWUgIzQ3MjA6IFRoZSBmb3JtYXQgZm9yIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyBjYW4gYmVnaW4gd2l0aCAnfCcuCisKKy0gSXNzdWUgIzM2MzI6IGZyb20gdGhlIGdkYiBkZWJ1Z2dlciwgdGhlICdweW8nIG1hY3JvIGNhbiBub3cgYmUgY2FsbGVkIHdoZW4KKyAgdGhlIEdJTCBpcyByZWxlYXNlZCwgb3Igb3duZWQgYnkgYW5vdGhlciB0aHJlYWQuCisKKy0gSXNzdWUgIzQxMjI6IE9uIFdpbmRvd3MsIGZpeCBhIGNvbXBpbGF0aW9uIGVycm9yIHdoZW4gdXNpbmcgdGhlCisgIFB5X1VOSUNPREVfSVNTUEFDRSBtYWNybyBpbiBhbiBleHRlbnNpb24gbW9kdWxlLgorCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMzNzQ1OiBGaXggaGFzaGxpYiB0byBhbHdheXMgcmVqZWN0IHVuaWNvZGUgYW5kIG5vbiBidWZmZXItYXBpCisgIHN1cHBvcnRpbmcgb2JqZWN0cyBhcyBpbnB1dCBubyBtYXR0ZXIgaG93IGl0IHdhcyBjb21waWxlZCAoYnVpbHQgaW4KKyAgaW1wbGVtZW50YXRpb25zIG9yIGV4dGVybmFsIG9wZW5zc2wgbGlicmFyeSkuCisKKy0gSXNzdWUgIzQzOTc6IEZpeCBvY2Nhc2lvbmFsIHRlc3Rfc29ja2V0IGZhaWx1cmUgb24gT1MgWC4KKworLSBJc3N1ZSAjNDI3OTogRml4IGJ1aWxkIG9mIHBhcnNlcm1vZHVsZSB1bmRlciBDeWd3aW4uCisKKy0gSXNzdWUgIzQ3NTE6IGhhc2hsaWIgbm93IHJlbGVhc2VzIHRoZSBHSUwgd2hlbiBoYXNoaW5nIGxhcmdlIGJ1ZmZlcnMKKyAgKHdpdGggYSBoYXJkd2lyZWQgdGhyZXNob2xkIG9mIDIwNDggYnl0ZXMpLCBhbGxvd2luZyBiZXR0ZXIgcGFyYWxsZWxpemF0aW9uCisgIG9uIG11bHRpLUNQVSBzeXN0ZW1zLiBDb250cmlidXRlZCBieSBMdWthcyBMdWVnIChlYmZlKSBhbmQgVmljdG9yIFN0aW5uZXIuCisKKy0gSXNzdWUgIzQwNTE6IFByZXZlbnQgY29uZmxpY3Qgb2YgVU5JQ09ERSBtYWNyb3MgaW4gY1BpY2tsZS4KKworLSBJc3N1ZSAjNDczODogRWFjaCB6bGliIG9iamVjdCBub3cgaGFzIGEgc2VwYXJhdGUgbG9jaywgYWxsb3dpbmcgdG8gY29tcHJlc3MKKyAgb3IgZGVjb21wcmVzcyBzZXZlcmFsIHN0cmVhbXMgYXQgb25jZSBvbiBtdWx0aS1DUFUgc3lzdGVtcy4gQWxzbywgdGhlIEdJTAorICBpcyBub3cgcmVsZWFzZWQgd2hlbiBjb21wdXRpbmcgdGhlIENSQyBvZiBhIGxhcmdlIGJ1ZmZlci4gUGF0Y2ggYnkgZWJmZS4KKworLSBJc3N1ZSAjNDIyODogUGFjayBuZWdhdGl2ZSB2YWx1ZXMgdGhlIHNhbWUgd2F5IGFzIDIuNCBpbiBzdHJ1Y3QncyBMIGZvcm1hdC4KKworLSBJc3N1ZSAjMTA0MDAyNjogRml4IG9zLnRpbWVzIHJlc3VsdCBvbiBzeXN0ZW1zIHdoZXJlIEhaIGlzIGluY29ycmVjdC4KKworLSBJc3N1ZXMgIzMxNjcsICMzNjgyOiBGaXggdGVzdF9tYXRoIGZhaWx1cmVzIGZvciBsb2csIGxvZzEwIG9uIFNvbGFyaXMsCisgIE9wZW5CU0QuCisKKy0gSXNzdWUgIzQ1ODM6IGFycmF5LmFycmF5IHdvdWxkIG5vdCBhbHdheXMgcHJvaGliaXQgcmVzaXppbmcgd2hlbiBhIGJ1ZmZlcgorICBoYXMgYmVlbiBleHBvcnRlZCwgcmVzdWx0aW5nIGluIGFuIGludGVycHJldGVyIGNyYXNoIHdoZW4gYWNjZXNzaW5nIHRoZQorICBidWZmZXIuCisKKworLSBJc3N1ZSAjNTIyODogTWFrZSBmdW5jdG9vbHMucGFydGlhbCBvYmplY3RzIGNhbiBub3cgYmUgcGlja2xlZC4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzYxNTI6IE5ldyBvcHRpb24gJy1qJy8nLS1tdWx0aXByb2Nlc3MnIGZvciByZWdydGVzdCBhbGxvd3MgcnVubmluZworICByZWdyZXNzaW9uIHRlc3RzIGluIHBhcmFsbGVsLCBzaG9ydGVuaW5nIHRoZSB0b3RhbCBydW50aW1lLgorCistIElzc3VlICM1NDUwOiBNb3ZlZCB0ZXN0cyBpbnZvbHZpbmcgbG9hZGluZyB0ayBmcm9tIExpYi90ZXN0L3Rlc3RfdGNsIHRvCisgIExpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfbG9hZHRrLiBXaXRoIHRoaXMsIHRoZXNlIHRlc3RzIGRlbW9uc3RyYXRlCisgIHRoZSBzYW1lIGJlaGF2aW91ciBhcyB0ZXN0X3R0a2d1aW9ubHkgKGFuZCBub3cgYWxzbyB0ZXN0X3RrKSB3aGljaCBpcyB0bworICBza2lwIHRoZSB0ZXN0cyBpZiBESVNQTEFZIGlzIGRlZmluZWQgYnV0IGNhbid0IGJlIHVzZWQuCisKKy0gcmVncnRlc3Qgbm8gbG9uZ2VyIHRyZWF0cyBJbXBvcnRFcnJvciBhcyBlcXVpdmFsZW50IHRvIFNraXBUZXN0LiAgSW1wb3J0cworICB0aGF0IHNob3VsZCBjYXVzZSBhIHRlc3QgdG8gYmUgc2tpcHBlZCBhcmUgbm93IGRvbmUgdXNpbmcgaW1wb3J0X21vZHVsZQorICBmcm9tIHRlc3Qgc3VwcG9ydCwgd2hpY2ggZG9lcyB0aGUgY29udmVyc2lvbi4KKworLSBJc3N1ZSAjNTA4MzogTmV3ICdndWknIHJlc291cmNlIGZvciByZWdydGVzdC4KKworCitEb2NzCistLS0tCisKKwogV2hhdCdzIE5ldyBpbiBQeXRob24gMy4wIGZpbmFsCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTIGIvTWlzYy9ORVdTCmluZGV4IDliNGFhNTIuLjFiNTYxZGYgMTAwNjQ0Ci0tLSBhL01pc2MvTkVXUworKysgYi9NaXNjL05FV1MKQEAgLTIsMTYgKzIsMjQgQEAKIFB5dGhvbiBOZXdzCiArKysrKysrKysrKwogCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIuNAotPT09PT09PT09PT09PT09PT09PT09PT09PT0KK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4xPworPT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLSpSZWxlYXNlIGRhdGU6IFhYLVhYLVhYWFgqCisqTm90IHlldCByZWxlYXNlZCwgc2VlIHNlY3Rpb25zIGJlbG93IGZvciBjaGFuZ2VzIHJlbGVhc2VkIGluIDMuMy4wKgorCisuLiAqUmVsZWFzZSBkYXRlOiBYWC1YWFgtMjAxMioKIAogQ29yZSBhbmQgQnVpbHRpbnMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzE2OTIzMzU6IE1vdmUgaW5pdGlhbCBhcmdzIGFzc2lnbm1lbnQgdG8KLSAgQmFzZUV4Y2VwdGlvbi5fX25ld19fIHRvIGhlbHAgcGlja2xpbmcgb2YgbmFpdmUgc3ViY2xhc3Nlcy4KKy0gSXNzdWUgIzE3MzI4OiBGaXggcG9zc2libGUgcmVmbGVhayBpbiBkaWN0LnNldGRlZmF1bHQuCisKKy0gSXNzdWUgIzE3MjIzOiBhcnJheSBtb2R1bGU6IEZpeCBhIGNyYXNoZXIgd2hlbiBjb252ZXJ0aW5nIGFuIGFycmF5IGNvbnRhaW5pbmcKKyAgaW52YWxpZCBjaGFyYWN0ZXJzIChvdXRzaWRlIHJhbmdlIFtVKzAwMDA7IFUrMTBmZmZmXSkgdG8gVW5pY29kZToKKyAgcmVwcihhcnJheSksIHN0cihhcnJheSkgYW5kIGFycmF5LnRvdW5pY29kZSgpLiBQYXRjaCB3cml0dGVuIGJ5IE1hbnVlbCBKYWNvYi4KKworLSBJc3N1ZSAjMTcyMjM6IEZpeCBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoKSBmb3Igc3RyaW5nIG9mIDEgY2hhcmFjdGVyIG91dHNpZGUKKyAgdGhlIHJhbmdlIFUrMDAwMC1VKzEwZmZmZi4KIAogLSBJc3N1ZSAjMTcyNzU6IENvcnJlY3RlZCBjbGFzcyBuYW1lIGluIGluaXQgZXJyb3IgbWVzc2FnZXMgb2YgdGhlIEMgdmVyc2lvbiBvZgogICBCdWZmZXJlZFdyaXRlciBhbmQgQnVmZmVyZWRSYW5kb20uCkBAIC0yOCwyMiArMzYsNDQgQEAKIC0gSXNzdWUgIzE3MTczOiBSZW1vdmUgdXNlcyBvZiBsb2NhbGUtZGVwZW5kZW50IEMgZnVuY3Rpb25zIChpc2FscGhhKCkgZXRjLikKICAgaW4gdGhlIGludGVycHJldGVyLgogCistIElzc3VlICMxNzEzNzogV2hlbiBhbiBVbmljb2RlIHN0cmluZyBpcyByZXNpemVkLCB0aGUgaW50ZXJuYWwgd2lkZSBjaGFyYWN0ZXIKKyAgc3RyaW5nICh3c3RyKSBmb3JtYXQgaXMgbm93IGNsZWFyZWQuCisKIC0gSXNzdWUgIzE3MDQzOiBUaGUgdW5pY29kZS1pbnRlcm5hbCBkZWNvZGVyIG5vIGxvbmdlciByZWFkIHBhc3QgdGhlIGVuZCBvZgogICBpbnB1dCBidWZmZXIuCiAKKy0gSXNzdWUgIzE3MDk4OiBBbGwgbW9kdWxlcyBub3cgaGF2ZSBfX2xvYWRlcl9fIHNldCBldmVuIGlmIHRoZXkgcHJlLWV4aXN0IHRoZQorICBib290c3RyYXBwaW5nIG9mIGltcG9ydGxpYi4KKwogLSBJc3N1ZSAjMTY5Nzk6IEZpeCBlcnJvciBoYW5kbGluZyBidWdzIGluIHRoZSB1bmljb2RlLWVzY2FwZS1kZWNvZGUgZGVjb2Rlci4KIAogLSBJc3N1ZSAjMTAxNTY6IEluIHRoZSBpbnRlcnByZXRlcidzIGluaXRpYWxpemF0aW9uIHBoYXNlLCB1bmljb2RlIGdsb2JhbHMKICAgYXJlIG5vdyBpbml0aWFsaXplZCBkeW5hbWljYWxseSBhcyBuZWVkZWQuCiAKKy0gSXNzdWUgIzE2OTgwOiBGaXggcHJvY2Vzc2luZyBvZiBlc2NhcGVkIG5vbi1hc2NpaSBieXRlcyBpbiB0aGUKKyAgdW5pY29kZS1lc2NhcGUtZGVjb2RlIGRlY29kZXIuCisKIC0gSXNzdWUgIzE2OTc1OiBGaXggZXJyb3IgaGFuZGxpbmcgYnVnIGluIHRoZSBlc2NhcGUtZGVjb2RlIGJ5dGVzIGRlY29kZXIuCiAKIC0gSXNzdWUgIzE0ODUwOiBOb3cgYSBjaGFybWFwIGRlY29kZXIgdHJlYXRzIFUrRkZGRSBhcyAidW5kZWZpbmVkIG1hcHBpbmciCiAgIGluIGFueSBtYXBwaW5nLCBub3Qgb25seSBpbiBhIHN0cmluZy4KIAorLSBJc3N1ZSAjMTY3MzA6IGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlciBub3cgbm8gbG9uZ2VycyByYWlzZXMgYW4KKyAgZXhjZXB0aW9uIHdoZW4gdHJ5aW5nIHRvIHBvcHVsYXRlIGl0cyBjYWNoZSBhbmQgaXQgZmluZHMgb3V0IHRoZSBkaXJlY3RvcnkgaXMKKyAgdW5yZWFkYWJsZSBvciBoYXMgdHVybmVkIGludG8gYSBmaWxlLiBSZXBvcnRlZCBhbmQgZGlhZ25vc2VkIGJ5CisgIERhdmlkIFByaXRjaGFyZC4KKworLSBJc3N1ZSAjMTY5MDY6IEZpeCBhIGxvZ2ljIGVycm9yIHRoYXQgcHJldmVudGVkIG1vc3Qgc3RhdGljIHN0cmluZ3MgZnJvbSBiZWluZworICBjbGVhcmVkLgorCiAtIElzc3VlICMxMTQ2MTogRml4IHRoZSBpbmNyZW1lbnRhbCBVVEYtMTYgZGVjb2Rlci4gT3JpZ2luYWwgcGF0Y2ggYnkKICAgQW1hdXJ5IEZvcmdlb3QgZCdBcmMuCiAKKy0gSXNzdWUgIzE2ODgxOiBGaXggUHlfQVJSQVlfTEVOR1RIIG1hY3JvIGZvciBHQ0MgPCAzLjEuCisKKy0gSXNzdWUgIzE2ODU2OiBGaXggYSBzZWdtZW50YXRpb24gZmF1bHQgZnJvbSBjYWxsaW5nIHJlcHIoKSBvbiBhIGRpY3Qgd2l0aAorICBhIGtleSB3aG9zZSByZXByIHJhaXNlIGFuIGV4Y2VwdGlvbi4KKwogLSBJc3N1ZSAjMTYzNjc6IEZpeCBGaWxlSU8ucmVhZGFsbCgpIG9uIFdpbmRvd3MgZm9yIGZpbGVzIGxhcmdlciB0aGFuIDIgR0IuCiAKIC0gSXNzdWUgIzE2NDU1OiBPbiBGcmVlQlNEIGFuZCBTb2xhcmlzLCBpZiB0aGUgbG9jYWxlIGlzIEMsIHRoZQpAQCAtNjEsNiArOTEsMTIgQEAKIC0gSXNzdWUgIzE0NDIwOiBTdXBwb3J0IHRoZSBmdWxsIERXT1JEICh1bnNpZ25lZCBsb25nKSByYW5nZSBpbiBQeTJSZWcKICAgd2hlbiBwYXNzZWQgYSBSRUdfRFdPUkQgdmFsdWUuIEZpeGVzIE92ZXJmbG93RXJyb3IgaW4gd2lucmVnLlNldFZhbHVlRXguCiAKKy0gSXNzdWUgIzE2NTk3OiBJbiBidWZmZXJlZCBhbmQgdGV4dCBJTywgY2FsbCBjbG9zZSgpIG9uIHRoZSB1bmRlcmx5aW5nIHN0cmVhbQorICBpZiBpbnZva2luZyBmbHVzaCgpIGZhaWxzLgorCistIElzc3VlICMxNjcyMjogSW4gdGhlIGJ5dGVzKCkgY29uc3RydWN0b3IsIHRyeSB0byBjYWxsIF9fYnl0ZXNfXyBvbiB0aGUKKyAgYXJndW1lbnQgYmVmb3JlIF9faW5kZXhfXy4KKwogLSBJc3N1ZSAjMTY2MDI6IFdoZW4gYSB3ZWFrcmVmJ3MgdGFyZ2V0IHdhcyBwYXJ0IG9mIGEgbG9uZyBkZWFsbG9jYXRpb24KICAgY2hhaW4sIHRoZSBvYmplY3QgY291bGQgcmVtYWluIHJlYWNoYWJsZSB0aHJvdWdoIGl0cyB3ZWFrcmVmIGV2ZW4gdGhvdWdoCiAgIGl0cyByZWZjb3VudCBoYWQgZHJvcHBlZCB0byB6ZXJvLgpAQCAtNzEsMjIgKzEwNywzMyBAQAogICBpbmNvbnNpc3RlbmNpZXMgd2l0aCBvcy5mc2VuY29kZSgpIGFuZCBvcy5mc2RlY29kZSgpIGZ1bmN0aW9ucyB3aGljaCBhcmUKICAgYWxyZWFkeSB1c2luZyBVVEYtOC9zdXJyb2dhdGVlc2NhcGUuCiAKLS0gSXNzdWUgIzE2NTg4OiBTaWxlbmNlIHVudXNlZC1idXQtc2V0IHdhcm5pbmdzIGluIFB5dGhvbi90aHJlYWRfcHRocmVhZC5oCistIElzc3VlICMxNjU4ODogU2lsZW5jZSB1bnVzZWQtYnV0LXNldCB3YXJuaW5ncyBpbiBQeXRob24vdGhyZWFkX3B0aHJlYWQKKworLSBJc3N1ZSAjMTY1NDY6IEZpeDogYXN0LllpZWxkRnJvbSBhcmd1bWVudCBpcyBub3cgbWFuZGF0b3J5LgorCistIElzc3VlICMxNjUxNDogRml4IHJlZ3Jlc3Npb24gY2F1c2luZyBhIHRyYWNlYmFjayB3aGVuIHN5cy5wYXRoWzBdIGlzIE5vbmUKKyAgKGFjdHVhbGx5LCBhbnkgbm9uLXN0cmluZyBvciBub24tYnl0ZXMgdHlwZSkuCiAKIC0gSXNzdWUgIzE2MzA2OiBGaXggbXVsdGlwbGUgZXJyb3IgbWVzc2FnZXMgd2hlbiB1bmtub3duIGNvbW1hbmQgbGluZQogICBwYXJhbWV0ZXJzIHdoZXJlIHBhc3NlZCB0byB0aGUgaW50ZXJwcmV0ZXIuICBQYXRjaCBieSBIaWV1IE5ndXllbi4KIAorLSBJc3N1ZSAjMTYyMTU6IEZpeCBwb3RlbnRpYWwgZG91YmxlIG1lbW9yeSBmcmVlIGluIHN0ci5yZXBsYWNlKCkuICBQYXRjaAorICBieSBTZXJoaXkgU3RvcmNoYWthLgorCiAtIElzc3VlICMxNjQ1MzogRml4IGVxdWFsaXR5IHRlc3Rpbmcgb2YgZGVhZCB3ZWFrcmVmIG9iamVjdHMuCiAKIC0gSXNzdWUgIzk1MzU6IEZpeCBwZW5kaW5nIHNpZ25hbHMgdGhhdCBoYXZlIGJlZW4gcmVjZWl2ZWQgYnV0IG5vdCB5ZXQKICAgaGFuZGxlZCBieSBQeXRob24gdG8gbm90IHBlcnNpc3QgYWZ0ZXIgb3MuZm9yaygpIGluIHRoZSBjaGlsZCBwcm9jZXNzLgogCi0tIElzc3VlICMxNTAwMTogZml4IHNlZ2ZhdWx0IG9uICJkZWwgc3lzLm1vZHVsZVsnX19tYWluX18nXSIuIFBhdGNoIGJ5IFZpY3RvcgorLSBJc3N1ZSAjMTUwMDE6IGZpeCBzZWdmYXVsdCBvbiAiZGVsIHN5cy5tb2R1bGVzWydfX21haW5fXyddIi4gUGF0Y2ggYnkgVmljdG9yCiAgIFN0aW5uZXIuCiAKLS0gSXNzdWUgIzUwNTc6IHRoZSBwZWVwaG9sZXIgbm8gbG9uZ2VyIG9wdGltaXplcyBzdWJzY3JpcHRpb24gb24gdW5pY29kZQotICBsaXRlcmFscyAoZS5nLiB1J2ZvbydbMF0pIGluIG9yZGVyIHRvIHByb2R1Y2UgY29tcGF0aWJsZSBweWMgZmlsZXMgYmV0d2VlbgotICBuYXJyb3cgYW5kIHdpZGUgYnVpbGRzLgorLSBJc3N1ZSAjODI3MTogdGhlIHV0Zi04IGRlY29kZXIgbm93IG91dHB1dHMgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIFUrRkZGRAorICBjaGFyYWN0ZXJzIHdoZW4gdXNlZCB3aXRoIHRoZSAncmVwbGFjZScgZXJyb3IgaGFuZGxlciBvbiBpbnZhbGlkIHV0Zi04CisgIHNlcXVlbmNlcy4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EsIHRlc3RzIGJ5IEV6aW8gTWVsb3R0aS4KKworLSBJc3N1ZSAjNTc2NTogQXBwbHkgYSBoYXJkIHJlY3Vyc2lvbiBsaW1pdCBpbiB0aGUgY29tcGlsZXIgaW5zdGVhZCBvZgorICBibG93aW5nIHRoZSBzdGFjayBhbmQgc2VnZmF1bHRpbmcuIEluaXRpYWwgcGF0Y2ggYnkgQW5kcmVhIEdyaWZmaW5pLgogCiAtIElzc3VlICMxNjQwMjogV2hlbiBzbGljaW5nIGEgcmFuZ2UsIGZpeCBzaGFkb3dpbmcgb2YgZXhjZXB0aW9ucyBmcm9tCiAgIF9faW5kZXhfXy4KQEAgLTk3LDE0ICsxNDQsMjAgQEAKIC0gSXNzdWUgIzg0MDE6IGFzc2lnbmluZyBhbiBpbnQgdG8gYSBieXRlYXJyYXkgc2xpY2UgKGUuZy4gYlszOjRdID0gNSkgbm93CiAgIHJhaXNlcyBhbiBlcnJvci4KIAorLSBGaXggc2VnZmF1bHRzIG9uIHNldHRpbmcgX19xdWFsbmFtZV9fIG9uIGJ1aWx0aW4gdHlwZXMgYW5kIGF0dGVtcHRpbmcgdG8KKyAgZGVsZXRlIGl0IG9uIGFueSB0eXBlLgorCiAtIElzc3VlICMxNjM0NTogRml4IGFuIGluZmluaXRlIGxvb3Agd2hlbiBgYGZyb21rZXlzYGAgb24gYSBkaWN0IHN1YmNsYXNzCiAgIHJlY2VpdmVkIGEgbm9uZW1wdHkgZGljdCBmcm9tIHRoZSBjb25zdHJ1Y3Rvci4KIAorLSBJc3N1ZSAjMTYyNzE6IEZpeCBzdHJhbmdlIGJ1Z3MgdGhhdCByZXN1bHRlZCBmcm9tIF9fcXVhbG5hbWVfXyBhcHBlYXJpbmcgaW4gYQorICBjbGFzcydzIF9fZGljdF9fIGFuZCBvbiB0eXBlLgorCiAtIElzc3VlICMxNjE5NzogVXBkYXRlIHdpbnJlZyBkb2NzdHJpbmdzIGFuZCBkb2N1bWVudGF0aW9uIHRvIG1hdGNoIGNvZGUuCiAgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KIAotLSBJc3N1ZSAjMTQ3MDA6IEZpeCBidWdneSBvdmVyZmxvdyBjaGVja3Mgd2hlbiBoYW5kbGluZyBsYXJnZSBwcmVjaXNpb25zIGFuZAotICB3aWR0aHMgaW4gb2xkLXN0eWxlIGFuZCBuZXctc3R5bGUgZm9ybWF0dGluZy4KKy0gSXNzdWUgIzE2MjQxOiBEb2N1bWVudCAtWCBmYXVsdGhhbmRsZXIgY29tbWFuZCBsaW5lIG9wdGlvbi4KKyAgUGF0Y2ggYnkgTWFyZWsgxaB1cHBhLgogCiAtIElzc3VlICM2MDc0OiBFbnN1cmUgY2FjaGVkIGJ5dGVjb2RlIGZpbGVzIGNhbiBhbHdheXMgYmUgdXBkYXRlZCBieSB0aGUKICAgdXNlciB0aGF0IGNyZWF0ZWQgdGhlbSwgZXZlbiB3aGVuIHRoZSBzb3VyY2UgZmlsZSBpcyByZWFkLW9ubHkuCkBAIC0xMTIsMTIzICsxNjUsMzAgQEAKIC0gSXNzdWUgIzE0NzgzOiBJbXByb3ZlIGludCgpIGRvY3N0cmluZyBhbmQgc3dpdGNoIGRvY3N0cmluZ3MgZm9yIHN0cigpLAogICByYW5nZSgpLCBhbmQgc2xpY2UoKSB0byB1c2UgbXVsdGktbGluZSBzaWduYXR1cmVzLgogCistIElzc3VlICMxNjE2MDogU3ViY2xhc3Mgc3VwcG9ydCBub3cgd29ya3MgZm9yIHR5cGVzLlNpbXBsZU5hbWVzcGFjZS4KKwogLSBJc3N1ZSAjMTUzNzk6IEZpeCBwYXNzaW5nIG9mIG5vbi1CTVAgY2hhcmFjdGVycyBhcyBpbnRlZ2VycyBmb3IgdGhlIGNoYXJtYXAKICAgZGVjb2RlciAoYWxyZWFkeSB3b3JraW5nIGFzIHVuaWNvZGUgc3RyaW5ncykuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCi0tIElzc3VlICMxMzk5MjogVGhlIHRyYXNoY2FuIG1lY2hhbmlzbSBpcyBub3cgdGhyZWFkLXNhZmUuICBUaGlzIGVsaW1pbmF0ZXMKLSAgc3BvcmFkaWMgY3Jhc2hlcyBpbiBtdWx0aS10aHJlYWQgcHJvZ3JhbXMgd2hlbiBzZXZlcmFsIGxvbmcgZGVhbGxvY2F0b3IKLSAgY2hhaW5zIHJhbiBjb25jdXJyZW50bHkgYW5kIGludm9sdmVkIHN1YmNsYXNzZXMgb2YgYnVpbHQtaW4gY29udGFpbmVyCi0gIHR5cGVzLgorLSBJc3N1ZSAjMTUxNDQ6IEZpeCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IHdoZW4gaGFuZGxpbmcgcG9pbnRlcnMgYXMgaW50ZWdlcgorICB2YWx1ZXMsIGJ5IHVzaW5nIGBQeV91aW50cHRyX3RgIGluc3RlYWQgb2YgYHNpemVfdGAuICBQYXRjaCBieSBTZXJoaXkKKyAgU3RvcmNoYWthLgogCi0tIElzc3VlICMxNTg0NjogRml4IFN5c3RlbUVycm9yIHdoaWNoIGhhcHBlbmVkIHdoZW4gdXNpbmcgYXN0LnBhcnNlIGluIGFuCistIElzc3VlICMxNTk2NTogRXhwbGljaXRseSBjYXN0IGBBVF9GRENXRGAgYXMgKGludCkuICBSZXF1aXJlZCBvbiBTb2xhcmlzIDEwCisgICh3aGljaCBkZWZpbmVzIGBBVF9GRENXRGAgYXMgYGAweGZmZDE5NTUzYGApLCBoYXJtbGVzcyBvbiBvdGhlciBwbGF0Zm9ybXMuCisKKy0gSXNzdWUgIzE1ODM5OiBDb252ZXJ0IFN5c3RlbUVycm9ycyBpbiBgc3VwZXIoKWAgdG8gUnVudGltZUVycm9ycy4KKworLSBJc3N1ZSAjMTU4NDY6IEZpeCBTeXN0ZW1FcnJvciB3aGljaCBoYXBwZW5lZCB3aGVuIHVzaW5nIGBhc3QucGFyc2UoKWAgaW4gYW4KICAgZXhjZXB0aW9uIGhhbmRsZXIgb24gY29kZSB3aXRoIHN5bnRheCBlcnJvcnMuCiAKLS0gSXNzdWUgIzE1NzYxOiBGaXggY3Jhc2ggd2hlbiBQWVRIT05FWEVDVVRBQkxFIGlzIHNldCBvbiBNYWMgT1MgWC4KLQogLSBJc3N1ZSAjMTU4MDE6IE1ha2Ugc3VyZSBtYXBwaW5ncyBwYXNzZWQgdG8gJyUnIGZvcm1hdHRpbmcgYXJlIGFjdHVhbGx5CiAgIHN1YnNjcmlwdGFibGUuCiAKLS0gSXNzdWUgIzE1NzI2OiBGaXggaW5jb3JyZWN0IGJvdW5kcyBjaGVja2luZyBpbiBQeVN0YXRlX0ZpbmRNb2R1bGUuCi0gIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KKy0gSXNzdWUgIzE1MTExOiBfX2ltcG9ydF9fIHNob3VsZCBsZXQgSW1wb3J0RXJyb3IgcHJvcGFnYXRlIHdoZW4gYSBtb2R1bGUgdGhhdAorICBpcyBpbXBvcnRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHVzaW5nIGZyb21saXN0IHRyaWVzIHRvIGltcG9ydCBhIG1vZHVsZQorICB0aGF0IGNhbm5vdCBiZSBmb3VuZC4KIAotLSBJc3N1ZSAjMTU2MDQ6IFVwZGF0ZSB1c2VzIG9mIFB5T2JqZWN0X0lzVHJ1ZSgpIHRvIGNoZWNrIGZvciBhbmQgaGFuZGxlCi0gIGVycm9ycyBjb3JyZWN0bHkuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxMzExOTogc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVyciBhcmUgbm93IHVzaW5nICJcclxuIiBuZXdsaW5lIG9uCi0gIFdpbmRvd3MsIGFzIFB5dGhvbiAyLgotCi0tIElzc3VlICMxNDU3OTogRml4IENWRS0yMDEyLTIxMzU6IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIHV0Zi0xNiBkZWNvZGVyIGFmdGVyCi0gIGVycm9yIGhhbmRsaW5nLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTU0MDQ6IFJlZmxlYWsgaW4gUHlNZXRob2RPYmplY3QgcmVwci4KLQotLSBJc3N1ZSAjMTUzOTQ6IEFuIGlzc3VlIGluIFB5TW9kdWxlX0NyZWF0ZSB0aGF0IGNhdXNlZCByZWZlcmVuY2VzIHRvCi0gIGJlIGxlYWtlZCBvbiBzb21lIGVycm9yIHBhdGhzIGhhcyBiZWVuIGZpeGVkLiAgUGF0Y2ggYnkgSnVsaWEgTGF3YWxsLgotCi0tIElzc3VlICMxNTM2ODogQW4gaXNzdWUgdGhhdCBjYXVzZWQgYnl0ZWNvZGUgZ2VuZXJhdGlvbiB0byBiZQotICBub24tZGV0ZXJtaW5pc3RpYyB3aGVuIHVzaW5nIHJhbmRvbWl6ZWQgaGFzaGluZyAoLVIpIGhhcyBiZWVuIGZpeGVkLgotCi0tIElzc3VlICMxNjM2OTogR2xvYmFsIFB5VHlwZU9iamVjdHMgbm90IGluaXRpYWxpemVkIHdpdGggUHlUeXBlX1JlYWR5KC4uLikuCi0KLS0gSXNzdWUgIzE1MDIwOiBUaGUgcHJvZ3JhbSBuYW1lIHVzZWQgdG8gc2VhcmNoIGZvciBQeXRob24ncyBwYXRoIGlzIG5vdwotICAicHl0aG9uMyIgdW5kZXIgVW5peCwgbm90ICJweXRob24iLgotCi0tIElzc3VlICMxNTg5NzogemlwaW1wb3J0LmMgZG9lc24ndCBjaGVjayByZXR1cm4gdmFsdWUgb2YgZnNlZWsoKS4KLSAgUGF0Y2ggYnkgRmVsaXBlIENydXouCi0KLS0gSXNzdWUgIzE1MDMzOiBGaXggdGhlIGV4aXQgc3RhdHVzIGJ1ZyB3aGVuIG1vZHVsZXMgaW52b2tlZCB1c2luZyAtbSBzd2l0Y2gsCi0gIHJldHVybiB0aGUgcHJvcGVyIGZhaWx1cmUgcmV0dXJuIHZhbHVlICgxKS4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgSmVmZiBLbnVwcC4KLQotLSBJc3N1ZSAjMTIyNjg6IEZpbGUgcmVhZGxpbmUsIHJlYWRsaW5lcyBhbmQgcmVhZCgpIG9yIHJlYWRhbGwoKSBtZXRob2RzCi0gIG5vIGxvbmdlciBsb3NlIGRhdGEgd2hlbiBhbiB1bmRlcmx5aW5nIHJlYWQgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQuCi0gIElPRXJyb3IgaXMgbm8gbG9uZ2VyIHJhaXNlZCBkdWUgdG8gYSByZWFkIHN5c3RlbSBjYWxsIHJldHVybmluZyBFSU5UUgotICBmcm9tIHdpdGhpbiB0aGVzZSBtZXRob2RzLgotCi0tIElzc3VlICMxNTE0MjogRml4IHJlZmVyZW5jZSBsZWFrIHdoZW4gZGVhbGxvY2F0aW5nIGluc3RhbmNlcyBvZiB0eXBlcwotICBjcmVhdGVkIHVzaW5nIFB5VHlwZV9Gcm9tU3BlYygpLgotCi0tIElzc3VlICMxMDA1MzogRG9uJ3QgY2xvc2UgRkRzIHdoZW4gRmlsZUlPLl9faW5pdF9fIGZhaWxzLiBMb29zZWx5IGJhc2VkIG9uCi0gIHRoZSB3b3JrIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgotCi0tIElzc3VlICMxNDc3NTogRml4IGEgcG90ZW50aWFsIHF1YWRyYXRpYyBkaWN0IGJ1aWxkLXVwIGR1ZSB0byB0aGUgZ2FyYmFnZQotICBjb2xsZWN0b3IgcmVwZWF0ZWRseSB0cnlpbmcgdG8gdW50cmFjayBkaWN0cy4KLQotLSBJc3N1ZSAjMTQ0OTQ6IEZpeCBfX2Z1dHVyZV9fLnB5IGFuZCBpdHMgZG9jdW1lbnRhdGlvbiB0byBub3RlIHRoYXQKLSAgYWJzb2x1dGUgaW1wb3J0cyBhcmUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaW4gMy4wIGluc3RlYWQgb2YgMi43LgotICBQYXRjaCBieSBTdmVuIE1hcm5hY2guCi0KLS0gSXNzdWUgIzE0NzYxOiBGaXggcG90ZW50aWFsIGxlYWsgb24gYW4gZXJyb3IgY2FzZSBpbiB0aGUgaW1wb3J0IG1hY2hpbmVyeS4KLQotLSBJc3N1ZSAjMTQ2OTk6IEZpeCBjYWxsaW5nIHRoZSBjbGFzc21ldGhvZCBkZXNjcmlwdG9yIGRpcmVjdGx5LgotCi0tIElzc3VlICMxNDQzMzogUHJldmVudCBtc3ZjcnQgY3Jhc2ggaW4gaW50ZXJhY3RpdmUgcHJvbXB0IHdoZW4gc3RkaW4KLSAgaXMgY2xvc2VkLgotCi0tIElzc3VlICMxMTYwMyAoYWdhaW4pOiBTZXR0aW5nIF9fcmVwcl9fIHRvIF9fc3RyX18gbm93IHJhaXNlcyBhIFJ1bnRpbWVFcnJvcgotICB3aGVuIHJlcHIoKSBvciBzdHIoKSBpcyBjYWxsZWQgb24gc3VjaCBhbiBvYmplY3QuCi0KLS0gSXNzdWUgIzE0NjU4OiBGaXggYmluZGluZyBhIHNwZWNpYWwgbWV0aG9kIHRvIGEgYnVpbHRpbiBpbXBsZW1lbnRhdGlvbiBvZiBhCi0gIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBkaWZmZXJlbnQgbmFtZS4KLQotLSBJc3N1ZSAjMTQ2MzA6IEZpeCBhIG1lbW9yeSBhY2Nlc3MgYnVnIGZvciBpbnN0YW5jZXMgb2YgYSBzdWJjbGFzcyBvZiBpbnQKLSAgd2l0aCB2YWx1ZSAwLgotCi0tIElzc3VlICMxNDYxMjogRml4IGp1bXBpbmcgYXJvdW5kIHdpdGggYmxvY2tzIGJ5IHNldHRpbmcgZl9saW5lbm8uCi0KLS0gSXNzdWUgIzE0NjA3OiBGaXgga2V5d29yZC1vbmx5IGFyZ3VtZW50cyB3aGljaCBzdGFydGVkIHdpdGggYGBfX2BgLgotCi0tIElzc3VlICMxMzg4OTogQ2hlY2sgYW5kIChpZiBuZWNlc3NhcnkpIHNldCBGUFUgY29udHJvbCB3b3JkIGJlZm9yZSBjYWxsaW5nCi0gIGFueSBvZiB0aGUgZHRvYS5jIHN0cmluZyA8LT4gZmxvYXQgY29udmVyc2lvbiBmdW5jdGlvbnMsIG9uIE1TVkMgYnVpbGRzIG9mCi0gIFB5dGhvbi4gIFRoaXMgZml4ZXMgaXNzdWVzIHdoZW4gZW1iZWRkaW5nIFB5dGhvbiBpbiBhIERlbHBoaSBhcHAuCi0KLS0gSXNzdWUgIzE0NDc0OiBTYXZlIGFuZCByZXN0b3JlIGV4Y2VwdGlvbiBzdGF0ZSBpbiB0aHJlYWQuc3RhcnRfbmV3X3RocmVhZCgpCi0gIHdoaWxlIHdyaXRpbmcgZXJyb3IgbWVzc2FnZSBpZiB0aGUgdGhyZWFkIGxlYXZlcyBhIHVuaGFuZGxlZCBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzEzMDE5OiBGaXggcG90ZW50aWFsIHJlZmVyZW5jZSBsZWFrcyBpbiBieXRlYXJyYXkuZXh0ZW5kKCkuICBQYXRjaAotICBieSBTdW1hbiBTYWhhLgotCi0tIElzc3VlICMxNDM3ODogRml4IGNvbXBpbGluZyBhc3QuSW1wb3J0RnJvbSBub2RlcyB3aXRoIGEgIl9fZnV0dXJlX18iIHN0cmluZyBhcwotICB0aGUgbW9kdWxlIG5hbWUgdGhhdCB3YXMgbm90IGludGVybmVkLgotCi0tIElzc3VlICMxNDMzMTogVXNlIHNpZ25pZmljYW50bHkgbGVzcyBzdGFjayBzcGFjZSB3aGVuIGltcG9ydGluZyBtb2R1bGVzIGJ5Ci0gIGFsbG9jYXRpbmcgcGF0aCBidWZmZXJzIG9uIHRoZSBoZWFwIGluc3RlYWQgb2YgdGhlIHN0YWNrLgotCi0tIElzc3VlICMxNDMzNDogUHJldmVudCBpbiBhIHNlZ2ZhdWx0IGluIHR5cGUuX19nZXRhdHRyaWJ1dGVfXyB3aGVuIGl0IHdhcyBub3QKLSAgcGFzc2VkIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzE0Njk2Mjk6IEFsbG93IGN5Y2xlcyB0aHJvdWdoIGFuIG9iamVjdCdzIF9fZGljdF9fIHNsb3QgdG8gYmUKLSAgY29sbGVjdGVkLiAoRm9yIGV4YW1wbGUgaWYgYGB4Ll9fZGljdF9fIGlzIHhgYCkuCi0KLS0gSXNzdWUgIzE0MTcyOiBGaXggcmVmZXJlbmNlIGxlYWsgd2hlbiBtYXJzaGFsbGluZyBhIGJ1ZmZlci1saWtlIG9iamVjdAotICAob3RoZXIgdGhhbiBhIGJ5dGVzIG9iamVjdCkuCi0KLS0gSXNzdWUgIzEzNTIxOiBkaWN0LnNldGRlZmF1bHQoKSBub3cgZG9lcyBvbmx5IG9uZSBsb29rdXAgZm9yIHRoZSBnaXZlbiBrZXksCi0gIG1ha2luZyBpdCAiYXRvbWljIiBmb3IgbWFueSBwdXJwb3Nlcy4gIFBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kuCi0KLS0gSXNzdWUgIzE2MDIxMzM6IG9uIE1hYyBPUyBYIGEgc2hhcmVkIGxpYnJhcnkgYnVpbGQgKGBgLS1lbmFibGUtc2hhcmVkYGApCi0gIG5vdyBmaWxscyB0aGUgYGBvcy5lbnZpcm9uYGAgdmFyaWFibGUgY29ycmVjdGx5LgotCi0tIElzc3VlICMxNDQ3MTogRml4IGEgcG9zc2libGUgYnVmZmVyIG92ZXJydW4gaW4gdGhlIHdpbnJlZyBtb2R1bGUuCiAKIExpYnJhcnkKIC0tLS0tLS0KQEAgLTI0NSw2ICsyMDUsOSBAQAogLSBJc3N1ZSAjMTcyNzg6IEZpeCBhIGNyYXNoIGluIGhlYXBxLmhlYXBwdXNoKCkgYW5kIGhlYXBxLmhlYXBwb3AoKSB3aGVuCiAgIHRoZSBsaXN0IGlzIGJlaW5nIHJlc2l6ZWQgY29uY3VycmVudGx5LgogCistIElzc3VlICMxNjk2MjogVXNlIGdldGRlbnRzNjQgaW5zdGVhZCBvZiB0aGUgb2Jzb2xldGUgZ2V0ZGVudHMgc3lzY2FsbAorICBpbiB0aGUgc3VicHJvY2VzcyBtb2R1bGUgb24gTGludXguCisKIC0gSXNzdWUgIzE3MDE4OiBNYWtlIFByb2Nlc3Muam9pbigpIHJldHJ5IGlmIG9zLndhaXRwaWQoKSBmYWlscyB3aXRoIEVJTlRSLgogCiAtIElzc3VlICMxNDcyMDogc3FsaXRlMzogQ29udmVydCBkYXRldGltZSBtaWNyb3NlY29uZHMgY29ycmVjdGx5LgpAQCAtMjY2LDYgKzIyOSw5IEBACiAgIGluY3JlYXNlZCBmcm9tIDY1NTM0IHRvIDIxNDc0ODM2NDcgKG9uIDMyLWJpdCBwbGF0Zm9ybSkgb3IgNDI5NDk2NzI5NCAob24KICAgNjQtYml0KS4KIAorLSBJc3N1ZSAjMTcxNDM6IEZpeCBhIG1pc3NpbmcgaW1wb3J0IGluIHRoZSB0cmFjZSBtb2R1bGUuICBJbml0aWFsIHBhdGNoIGJ5CisgIEJlcmtlciBQZWtzYWcuCisKIC0gSXNzdWUgIzE2NzQzOiBGaXggbW1hcCBvdmVyZmxvdyBjaGVjayBvbiAzMiBiaXQgV2luZG93cy4KIAogLSBJc3N1ZSAjMTY4MDA6IHRlbXBmaWxlLmdldHRlbXBkaXIoKSBubyBsb25nZXIgbGVmdCB0ZW1wb3JhcnkgZmlsZXMgd2hlbgpAQCAtMzE0LDE2ICsyODAsMjMgQEAKIC0gSXNzdWUgIzE2OTQ4OiBGaXggcXVvdGVkIHByaW50YWJsZSBib2R5IGVuY29kaW5nIGZvciBub24tbGF0aW4xIGNoYXJhY3RlcgogICBzZXRzIGluIHRoZSBlbWFpbCBwYWNrYWdlLgogCistIElzc3VlICMxNjgxMTogRml4IGZvbGRpbmcgb2YgaGVhZGVycyB3aXRoIG5vIHZhbHVlIGluIHRoZSBwcm92aXNpb25hbCBlbWFpbAorICBwb2xpY2llcy4KKworLSBJc3N1ZSAjMTcxMzI6IFVwZGF0ZSBzeW1ib2wgZm9yICJ5aWVsZCBmcm9tIiBncmFtbWFyIGNoYW5nZXMuCisKKy0gSXNzdWUgIzE3MDc2OiBNYWtlIGNvcHlpbmcgb2YgeGF0dHJzIG1vcmUgcGVybWlzc2l2ZSBvZiBtaXNzaW5nIEZTIHN1cHBvcnQuCisgIFBhdGNoIGJ5IFRob21hcyBXb3V0ZXJzLgorCiAtIElzc3VlICMxNzA4OTogRXhwYXQgcGFyc2VyIG5vdyBjb3JyZWN0bHkgd29ya3Mgd2l0aCBzdHJpbmcgaW5wdXQgbm90IG9ubHkgd2hlbgogICBhbiBpbnRlcm5hbCBYTUwgZW5jb2RpbmcgaXMgVVRGLTggb3IgVVMtQVNDSUkuICBJdCBub3cgYWNjZXB0cyBieXRlcyBhbmQKICAgc3RyaW5ncyBsYXJnZXIgdGhhbiAyIEdpQi4KIAotLSBJc3N1ZSAjMTY5MDM6IFBvcGVuLmNvbW11bmljYXRlKCkgb24gVW5peCBub3cgYWNjZXB0cyBzdHJpbmdzIHdoZW4KLSAgdW5pdmVyc2FsX25ld2xpbmVzIGlzIHRydWUgYXMgb24gV2luZG93cy4KLQogLSBJc3N1ZSAjNjA4MzogRml4IG11bHRpcGxlIHNlZ21lbnRhdGlvbiBmYXVsdHMgb2NjdXJlZCB3aGVuIFB5QXJnX1BhcnNlVHVwbGUKICAgcGFyc2VzIG5lc3RlZCBtdXRhdGluZyBzZXF1ZW5jZS4KIAorLSBJc3N1ZSAjNTI4OTogRml4IGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSBvbiBTb2xhcmlzLgorCiAtIElzc3VlICMxNzEwNjogRml4IGEgc2VnbWVudGF0aW9uIGZhdWx0IGluIGlvLlRleHRJT1dyYXBwZXIgd2hlbiBhbiB1bmRlcmx5aW5nCiAgIHN0cmVhbSBvciBhIGRlY29kZXIgcHJvZHVjZXMgZGF0YSBvZiBhbiB1bmV4cGVjdGVkIHR5cGUgKGkuZS4gd2hlbgogICBpby5UZXh0SU9XcmFwcGVyIGluaXRpYWxpemVkIHdpdGggdGV4dCBzdHJlYW0gb3IgdXNlIGJ5dGVzLXRvLWJ5dGVzIGNvZGVjKS4KQEAgLTMzOCwxMiArMzExLDE4IEBACiAgIGluY29tcGxldGUgIkVuZCBvZiBDZW50cmFsIERpcmVjdG9yeSIgcmVjb3JkLiAgT3JpZ2luYWwgcGF0Y2ggYnkgR3VpbGhlcm1lCiAgIFBvbG8gYW5kIEFsYW4gTWNJbnR5cmUuCiAKLS0gSXNzdWUgIzE1NTA1OiBgdW5pdHRlc3QuaW5zdGFsbEhhbmRsZXJgIG5vIGxvbmdlciBhc3N1bWVzIFNJR0lOVCBoYW5kbGVyIGlzCi0gIHNldCB0byBhIGNhbGxhYmxlIG9iamVjdC4KKy0gSXNzdWUgIzE3MDcxOiBTaWduYXR1cmUuYmluZCgpIG5vdyB3b3JrcyB3aGVuIG9uZSBvZiB0aGUga2V5d29yZCBhcmd1bWVudHMKKyAgaXMgbmFtZWQgYGBzZWxmYGAuCiAKIC0gSXNzdWUgIzEyMDA0OiBGaXggYW4gaW50ZXJuYWwgZXJyb3IgaW4gUHlaaXBGaWxlIHdoZW4gd3JpdGluZyBhbiBpbnZhbGlkCiAgIFB5dGhvbiBmaWxlLiAgUGF0Y2ggYnkgQmVuIE1vcmdhbi4KIAorLSBJc3N1ZSAjMTYwMjEzMzogb24gTWFjIE9TIFggYSBzaGFyZWQgbGlicmFyeSBidWlsZCAoYGAtLWVuYWJsZS1zaGFyZWRgYCkKKyAgbm93IGZpbGxzIHRoZSBgYG9zLmVudmlyb25gYCB2YXJpYWJsZSBjb3JyZWN0bHkuCisKKy0gSXNzdWUgIzE1NTA1OiBgdW5pdHRlc3QuaW5zdGFsbEhhbmRsZXJgIG5vIGxvbmdlciBhc3N1bWVzIFNJR0lOVCBoYW5kbGVyIGlzCisgIHNldCB0byBhIGNhbGxhYmxlIG9iamVjdC4KKwogLSBJc3N1ZSAjOTI5MDogSW4gSURMRSB0aGUgc3lzLnN0ZCogc3RyZWFtcyBub3cgaW1wbGVtZW50IGlvLlRleHRJT0Jhc2UKICAgaW50ZXJmYWNlIGFuZCBzdXBwb3J0IGFsbCBtYW5kYXRvcnkgbWV0aG9kcyBhbmQgcHJvcGVydGllcy4KIApAQCAtMzUzLDkgKzMzMiwyMiBAQAogLSBJc3N1ZSAjMTI0MTE6IEZpeCB0byBjZ2kucGFyc2VfbXVsdGlwYXJ0IHRvIGNvcnJlY3RseSB1c2UgYnl0ZXMgYm91bmRhcmllcwogICBhbmQgYnl0ZXMgZGF0YS4gUGF0Y2ggYnkgSm9uYXMgV2FnbmVyLgogCistIElzc3VlICMxNjk1Nzogc2h1dGlsLndoaWNoKCkgbm8gbG9uZ2VyIHNlYXJjaGVzIGEgYmFyZSBmaWxlIG5hbWUgaW4gdGhlCisgIGN1cnJlbnQgZGlyZWN0b3J5IG9uIFVuaXggYW5kIG5vIGxvbmdlciBzZWFyY2hlcyBhIHJlbGF0aXZlIGZpbGUgcGF0aCB3aXRoCisgIGEgZGlyZWN0b3J5IHBhcnQgaW4gUEFUSCBkaXJlY3Rvcmllcy4gIFBhdGNoIGJ5IFRob21hcyBLbHV5dmVyLgorCiAtIElzc3VlICMxMTU5MDUxOiBHemlwRmlsZSBub3cgcmFpc2VzIEVPRkVycm9yIHdoZW4gcmVhZGluZyBhIGNvcnJ1cHRlZCBmaWxlCiAgIHdpdGggdHJ1bmNhdGVkIGhlYWRlciBvciBmb290ZXIuCiAKKy0gSXNzdWUgIzE2OTkzOiBzaHV0aWwud2hpY2goKSBub3cgcHJlc2VydmVzIHRoZSBjYXNlIG9mIHRoZSBwYXRoIGFuZCBleHRlbnNpb24KKyAgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMTY5OTI6IE9uIFdpbmRvd3MgaW4gc2lnbmFsLnNldF93YWtldXBfZmQsIHZhbGlkYXRlIHRoZSBmaWxlCisgIGRlc2NyaXB0b3IgYXJndW1lbnQuCisKKy0gSXNzdWUgIzE2NDIyOiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBQeXRob24gdmVyc2lvbiwgdGhlIEMgdmVyc2lvbiBvZgorICBkZWNpbWFsIG5vdyB1c2VzIHN0cmluZ3MgaW5zdGVhZCBvZiBpbnRlZ2VycyBmb3Igcm91bmRpbmcgbW9kZSBjb25zdGFudHMuCisKIC0gSXNzdWUgIzE1ODYxOiB0a2ludGVyIG5vdyBjb3JyZWN0bHkgd29ya3Mgd2l0aCBsaXN0cyBhbmQgdHVwbGVzIGNvbnRhaW5pbmcKICAgc3RyaW5ncyB3aXRoIHdoaXRlc3BhY2VzLCBiYWNrc2xhc2hlcyBvciB1bmJhbGFuY2VkIGJyYWNlcy4KIApAQCAtMzY0LDkgKzM1NiwxNiBAQAogLSBJc3N1ZSAjOTcyMDogemlwZmlsZSBub3cgd3JpdGVzIGNvcnJlY3QgbG9jYWwgaGVhZGVycyBmb3IgZmlsZXMgbGFyZ2VyIHRoYW4KICAgNCBHaUIuCiAKKy0gSXNzdWUgIzE2OTU1OiBGaXggdGhlIHBvbGwoKSBtZXRob2QgZm9yIG11bHRpcHJvY2Vzc2luZydzIHNvY2tldAorICBjb25uZWN0aW9ucyBvbiBXaW5kb3dzLgorCistIFNTTENvbnRleHQubG9hZF9kaF9wYXJhbXMoKSBub3cgcHJvcGVybHkgY2xvc2VzIHRoZSBpbnB1dCBmaWxlLgorCiAtIElzc3VlICMxNjgyOTogSURMRSBwcmludGluZyBubyBsb25nZXIgZmFpbHMgaWYgdGhlcmUgYXJlIHNwYWNlcyBvciBvdGhlcgogICBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gdGhlIGZpbGUgcGF0aC4KIAorLSBJc3N1ZSAjMTY5MDA6IElzc3VlIGEgUmVzb3VyY2VXYXJuaW5nIHdoZW4gYW4gc3NsIHNvY2tldCBpcyBsZWZ0IHVuY2xvc2VkLgorCiAtIElzc3VlICMxMzg5OTogXEEsIFxaLCBhbmQgXEIgbm93IGNvcnJlY3RseSBtYXRjaCB0aGUgQSwgWiwgYW5kIEIgbGl0ZXJhbHMKICAgd2hlbiB1c2VkIGluc2lkZSBjaGFyYWN0ZXIgY2xhc3NlcyAoZS5nLiAnW1xBXScpLiAgUGF0Y2ggYnkgTWF0dGhldyBCYXJuZXR0LgogCkBAIC0zNzYsOCArMzc1LDExIEBACiAKIC0gSXNzdWUgIzE2NDkxOiBJRExFIG5vdyBwcmludHMgY2hhaW5lZCBleGNlcHRpb24gdHJhY2ViYWNrcy4KIAotLSBJc3N1ZSAjMTY4Mjg6IEZpeCBlcnJvciBpbmNvcnJlY3RseSByYWlzZWQgYnkgYnoyLmNvbXByZXNzKCcnKS4gUGF0Y2ggYnkKLSAgTWFydGluIFBhY2ttYW4uCistIElzc3VlICMxNTk3MjogRml4IGVycm9yIG1lc3NhZ2VzIHdoZW4gb3MgZnVuY3Rpb25zIGV4cGVjdGluZyBhIGZpbGUgbmFtZSBvcgorICBmaWxlIGRlc2NyaXB0b3IgcmVjZWl2ZSB0aGUgaW5jb3JyZWN0IHR5cGUuCisKKy0gSXNzdWUgIzE2ODI4OiBGaXggZXJyb3IgaW5jb3JyZWN0bHkgcmFpc2VkIGJ5IGJ6Mi5jb21wcmVzcyhiJycpIGFuZAorICBiejIuQloyQ29tcHJlc3Nvci5jb21wcmVzcyhiJycpLiBJbml0aWFsIHBhdGNoIGJ5IE1hcnRpbiBQYWNrbWFuLgogCiAtIElzc3VlICMxNjU0MTogdGtfc2V0UGFsZXR0ZSgpIG5vdyB3b3JrcyB3aXRoIGtleXdvcmQgYXJndW1lbnRzLgogCkBAIC0zODgsOSArMzkwLDkgQEAKICAgc2VjdGlvbiBvcmRlciB3aXRoaW4gdGhlIHBhcnNlci4gVGhpcyBtYWtlcyBgcGFyc2VyLnVwZGF0ZSgpYCBwcmVzZXJ2ZSBzZWN0aW9uCiAgIG9yZGVyIGFzIHdlbGwuCiAKLS0gSXNzdWUgIzk2NDQ6IEZpeCB0aGUgZW5jb2RpbmcgdXNlZCBieSBvcy5zdGF0dmZzKCk6IHVzZSB0aGUgZmlsZXN5c3RlbQotICBlbmNvZGluZyB3aXRoIHRoZSBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlciwgaW5zdGVhZCBvZiBVVEYtOCBpbiBzdHJpY3QKLSAgbW9kZS4KKy0gSXNzdWUgIzE2ODIwOiBJbiBjb25maWdwYXJzZXIsIGBgcGFyc2VyWydERUZBVUxUJ10gPSB7fWBgIG5vdyBjb3JyZWN0bHkKKyAgY2xlYXJzIHByZXZpb3VzIHZhbHVlcyBzdG9yZWQgaW4gdGhlIGRlZmF1bHQgc2VjdGlvbi4gU2FtZSBnb2VzIGZvcgorICBgYHBhcnNlci51cGRhdGUoeydERUZBVUxUJzoge319KWBgLgogCiAtIElzc3VlICMxNjgxOTogSURMRSBtZXRob2QgY29tcGxldGlvbiBub3cgY29ycmVjdGx5IHdvcmtzIGZvciBieXRlcyBsaXRlcmFscy4KIApAQCAtMzk4LDkgKzQwMCwxOCBAQAogCiAtIElzc3VlICMxMDUyNzogbWFrZSBtdWx0aXByb2Nlc3NpbmcgdXNlIHBvbGwoKSBpbnN0ZWFkIG9mIHNlbGVjdCgpIGlmIGF2YWlsYWJsZS4KIAorLSBJc3N1ZSAjMTY2ODg6IE5vdyByZWdleGVzIGNvbnRhaW5lZCBiYWNrcmVmZXJlbmNlcyBjb3JyZWN0bHkgd29yayB3aXRoCisgIG5vbi1BU0NJSSBzdHJpbmdzLiAgUGF0Y2ggYnkgTWF0dGhldyBCYXJuZXR0LgorCiAtIElzc3VlICMxNjQ4NTogTm93IGZpbGUgZGVzY3JpcHRvcnMgYXJlIGNsb3NlZCBpZiBmaWxlIGhlYWRlciBwYXRjaGluZyBmYWlsZWQKICAgb24gY2xvc2luZyBhbiBhaWZjIGZpbGUuCiAKKy0gSXNzdWUgIzE2MTY1OiBzY2hlZC5zY2hlZHVsZXIucnVuKCkgbm8gbG9uZ2VyIGJsb2NrcyBhIHNjaGVkdWxlciBmb3Igb3RoZXIKKyAgdGhyZWFkcy4KKworLSBJc3N1ZSAjMTY2NDE6IERlZmF1bHQgdmFsdWVzIG9mIHNjaGVkLnNjaGVkdWxlci5lbnRlcigpIGFyZSBubyBsb25nZXIKKyAgbW9kaWZpYWJsZS4KKwogLSBJc3N1ZSAjMTY1MDQ6IElETEUgbm93IGNhdGNoZXMgU3ludGF4RXJyb3JzIHJhaXNlZCBieSB0b2tlbml6ZXIuIFBhdGNoIGJ5CiAgIFJvZ2VyIFNlcnd5LgogCkBAIC00MjEsNiArNDMyLDggQEAKIAogLSBJc3N1ZSAjMTU3MDE6IEZpeCBIVFRQRXJyb3IgaW5mbyBtZXRob2QgY2FsbCB0byByZXR1cm4gdGhlIGhlYWRlcnMgaW5mb3JtYXRpb24uCiAKKy0gSXNzdWUgIzE2NzUyOiBBZGQgYSBtaXNzaW5nIGltcG9ydCB0byBtb2R1bGVmaW5kZXIuIFBhdGNoIGJ5IEJlcmtlciBQZWtzYWcuCisKIC0gSXNzdWUgIzE2NjQ2OiBmdHBsaWIuRlRQLm1ha2Vwb3J0KCkgbWlnaHQgbG9zZSBzb2NrZXQgZXJyb3IgZGV0YWlscy4KICAgKHBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EpCiAKQEAgLTQyOCwxMCArNDQxLDE4IEBACiAgIHBhdHRlcm4gY29udGFpbnMgYSB3aWxkY2FyZCBpbiB0aGUgZHJpdmUgb3IgVU5DIHBhdGguICBQYXRjaCBieSBTZXJoaXkKICAgU3RvcmNoYWthLgogCistIElzc3VlICMxNTc4MzogRXhjZXB0IGZvciB0aGUgbnVtYmVyIG1ldGhvZHMsIHRoZSBDIHZlcnNpb24gb2YgZGVjaW1hbCBub3cKKyAgc3VwcG9ydHMgYWxsIE5vbmUgZGVmYXVsdCB2YWx1ZXMgcHJlc2VudCBpbiBkZWNpbWFsLnB5LiBUaGVzZSB2YWx1ZXMgd2VyZQorICBsYXJnZWx5IHVuZG9jdW1lbnRlZC4KKwogLSBJc3N1ZSAjMTYyOTg6IEluIEhUVFBSZXNwb25zZS5yZWFkKCksIGNsb3NlIHRoZSBzb2NrZXQgd2hlbiB0aGVyZSBpcyBubwogICBDb250ZW50LUxlbmd0aCBhbmQgdGhlIGluY29taW5nIHN0cmVhbSBpcyBmaW5pc2hlZC4gIFBhdGNoIGJ5IEVyYW4KICAgUnVuZHN0ZWluLgogCistIElzc3VlICMxNTg3MjogRml4IDMuMyByZWdyZXNzaW9uIGludHJvZHVjZWQgYnkgdGhlIG5ldyBmZC1iYXNlZCBzaHV0aWwucm10cmVlCisgIHRoYXQgY2F1c2VkIGl0IHRvIG5vdCBpZ25vcmUgY2VydGFpbiBlcnJvcnMgd2hlbiBpZ25vcmVfZXJyb3JzIHdhcyBzZXQuCisgIFBhdGNoIGJ5IEFsZXNzYW5kcm8gTW91cmEgYW5kIFNlcmhpeSBTdG9yY2hha2EuCisKIC0gSXNzdWUgIzE2MjQ4OiBEaXNhYmxlIGNvZGUgZXhlY3V0aW9uIGZyb20gdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeSBieQogICB0a2ludGVyIHdoZW4gdGhlIC1FIGZsYWcgaXMgcGFzc2VkIHRvIFB5dGhvbi4gIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KIApAQCAtNDQ5LDYgKzQ3MCw5IEBACiAtIElzc3VlICMxMzEyMDogQWxsb3cgdG8gY2FsbCBwZGIuc2V0X3RyYWNlKCkgZnJvbSB0aHJlYWQuCiAgIFBhdGNoIGJ5IElseWEgU2FuZGxlci4KIAorLSBJc3N1ZSAjMTY1ODU6IE1ha2UgQ0pLIGVuY29kZXJzIHN1cHBvcnQgZXJyb3IgaGFuZGxlcnMgdGhhdCByZXR1cm4gYnl0ZXMgcGVyCisgIFBFUCAzODMuCisKIC0gSXNzdWUgIzEwMTgyOiBUaGUgcmUgbW9kdWxlIGRvZXNuJ3QgdHJ1bmNhdGUgaW5kaWNlcyB0byAzMiBiaXRzIGFueW1vcmUuCiAgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKQEAgLTQ2NSwxNSArNDg5LDExIEBACiAgIGxlbmd0aHMgYXMgdW5zaWduZWQgMzItYml0IGludGVnZXJzLCBsaWtlIHRoZSBDIGltcGxlbWVudGF0aW9uIGRvZXMuCiAgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKLS0gSXNzdWUgIzExNjA6IEZpeCBjb21waWxpbmcgbGFyZ2UgcmVndWxhciBleHByZXNzaW9ucyBvbiBVQ1MyIGJ1aWxkcy4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTQzMTM6IHppcGZpbGUgbm93IHJhaXNlcyBOb3RJbXBsZW1lbnRlZEVycm9yIHdoZW4gdGhlIGNvbXByZXNzaW9uCi0gIHR5cGUgaXMgdW5rbm93bi4KLQogLSBJc3N1ZSAjMTY0MDg6IEZpeCBmaWxlIGRlc2NyaXB0b3JzIG5vdCBiZWluZyBjbG9zZWQgaW4gZXJyb3IgY29uZGl0aW9ucwogICBpbiB0aGUgemlwZmlsZSBtb2R1bGUuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCistIElzc3VlICMxNjQ4MTogbXVsdGlwcm9jZXNzaW5nIG5vIGxvbmdlciBsZWFrcyBwcm9jZXNzIGhhbmRsZXMgb24gV2luZG93cy4KKwogLSBJc3N1ZSAjMTYxNDA6IFRoZSBzdWJwcm9jZXNzIG1vZHVsZSBubyBsb25nZXIgZG91YmxlIGNsb3NlcyBpdHMgY2hpbGQKICAgc3VicHJvY2Vzcy5QSVBFIHBhcmVudCBmaWxlIGRlc2NyaXB0b3JzIG9uIGNoaWxkIGVycm9yIHByaW9yIHRvIGV4ZWMoKS4KIApAQCAtNDkyLDYgKzUxMiwxNCBAQAogLSBJc3N1ZSAjMTYzNTc6IGZpeCBjYWxsaW5nIGFjY2VwdCgpIG9uIGEgU1NMU29ja2V0IGNyZWF0ZWQgdGhyb3VnaAogICBTU0xDb250ZXh0LndyYXBfc29ja2V0KCkuICBPcmlnaW5hbCBwYXRjaCBieSBKZWZmIE1jTmVpbC4KIAorLSBJc3N1ZSAjMTY0MDk6IFRoZSByZXBvcnRob29rIGNhbGxiYWNrIG1hZGUgYnkgdGhlIGxlZ2FjeQorICB1cmxsaWIucmVxdWVzdC51cmxyZXRyaWV2ZSBBUEkgbm93IHByb3Blcmx5IHN1cHBsaWVzIGEgY29uc3RhbnQgbm9uLXplcm8KKyAgYmxvY2tfc2l6ZSBhcyBpdCBkaWQgaW4gUHl0aG9uIDMuMiBhbmQgMi43LiAgVGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZgorICB1cmxsaWIucmVxdWVzdC5VUkxvcGVuZXIucmV0cmlldmUuCisKKy0gSXNzdWUgIzE2NDMxOiBVc2UgdGhlIHR5cGUgaW5mb3JtYXRpb24gd2hlbiBjb25zdHJ1Y3RpbmcgYSBEZWNpbWFsIHN1YnR5cGUKKyAgZnJvbSBhIERlY2ltYWwgYXJndW1lbnQuCisKIC0gSXNzdWUgIzE2MzUwOiB6bGliLmRlY29tcHJlc3NvYmooKS5kZWNvbXByZXNzKCkgbm93IGFjY3VtdWxhdGVzIGRhdGEgZnJvbQogICBzdWNjZXNzaXZlIGNhbGxzIGFmdGVyIEVPRiBpbiB1bnVzZWRfZGF0YSwgaW5zdGVhZCBvZiBvbmx5IHNhdmluZyB0aGUgYXJndW1lbnQKICAgdG8gdGhlIGxhc3QgY2FsbC4gZGVjb21wcmVzc29iaigpLmZsdXNoKCkgbm93IGNvcnJlY3RseSBzZXRzIHVudXNlZF9kYXRhIGFuZApAQCAtNTE5LDEwICs1NDcsMTUgQEAKIC0gSXNzdWUgIzEyODkwOiBjZ2l0YiBubyBsb25nZXIgcHJpbnRzIHNwdXJpb3VzIDxwPiB0YWdzIGluIHRleHQKICAgbW9kZSB3aGVuIHRoZSBsb2dkaXIgb3B0aW9uIGlzIHNwZWNpZmllZC4KIAorLSBJc3N1ZSAjMTYzMDc6IEZpeCBtdWx0aXByb2Nlc3NpbmcuUG9vbC5tYXBfYXN5bmMgbm90IGNhbGxpbmcgaXRzIGNhbGxiYWNrcy4KKyAgUGF0Y2ggYnkgSmFubmUgS2FyaWxhLgorCiAtIElzc3VlICMxNjI1MDogRml4IFVSTEVycm9yIGludm9jYXRpb24gd2l0aCBwcm9wZXIgYXJncy4KIAotLSBJc3N1ZSAjMTYzMDU6IEZpeCBhIHNlZ21lbnRhdGlvbiBmYXVsdCBvY2N1cnJpbmcgd2hlbiBpbnRlcnJ1cHRpbmcKLSAgbWF0aC5mYWN0b3JpYWwuCistIElzc3VlICMxNjExNjogRml4IGluY2x1ZGUgYW5kIGxpYnJhcnkgcGF0aHMgdG8gYmUgY29ycmVjdCB3aGVuIGJ1aWxkaW5nIEMKKyAgZXh0ZW5zaW9ucyBpbiB2ZW52cy4KKworLSBJc3N1ZSAjMTYyNDU6IEZpeCB0aGUgdmFsdWUgb2YgYSBmZXcgZW50aXRpZXMgaW4gaHRtbC5lbnRpdGllcy5odG1sNS4KIAogLSBJc3N1ZSAjMTQzOTg6IEZpeCBzaXplIHRydW5jYXRpb24gYW5kIG92ZXJmbG93IGJ1Z3MgaW4gdGhlIGJ6MiBtb2R1bGUuCiAKQEAgLTUzNyw0MzIgKzU3MCw5MCBAQAogCiAtIElzc3VlICMxNjE3NjogUHJvcGVybHkgaWRlbnRpZnkgV2luZG93cyA4IHZpYSBwbGF0Zm9ybS5wbGF0Zm9ybSgpCiAKLS0gSXNzdWUgIzE2MTE0OiBUaGUgc3VicHJvY2VzcyBtb2R1bGUgbm8gbG9uZ2VyIHByb3ZpZGVzIGEgbWlzbGVhZGluZwotICBlcnJvciBtZXNzYWdlIHN0YXRpbmcgdGhhdCBhcmdzWzBdIGRpZCBub3QgZXhpc3Qgd2hlbiBlaXRoZXIgdGhlIGN3ZCBvcgotICBleGVjdXRhYmxlIGtleXdvcmQgYXJndW1lbnRzIHNwZWNpZmllZCBhIHBhdGggdGhhdCBkaWQgbm90IGV4aXN0LgorLSBJc3N1ZSAjMTYxMTQ6IFRoZSBzdWJwcm9jZXNzIG1vZHVsZSBubyBsb25nZXIgcHJvdmlkZXMgYSBtaXNsZWFkaW5nIGVycm9yCisgIG1lc3NhZ2Ugc3RhdGluZyB0aGF0IGFyZ3NbMF0gZGlkIG5vdCBleGlzdCB3aGVuIGVpdGhlciB0aGUgY3dkIG9yIGV4ZWN1dGFibGUKKyAga2V5d29yZCBhcmd1bWVudHMgc3BlY2lmaWVkIGEgcGF0aCB0aGF0IGRpZCBub3QgZXhpc3QuCiAKLS0gSXNzdWUgIzE1NzU2OiBzdWJwcm9jZXNzLnBvbGwoKSBub3cgcHJvcGVybHkgaGFuZGxlcyBlcnJuby5FQ0hJTEQgdG8KLSAgcmV0dXJuIGEgcmV0dXJuY29kZSBvZiAwIHdoZW4gdGhlIGNoaWxkIGhhcyBhbHJlYWR5IGV4aXRlZCBvciBjYW5ub3QKLSAgYmUgd2FpdGVkIG9uLgorLSBJc3N1ZSAjMTYxNjk6IEZpeCBjdHlwZXMuV2luRXJyb3IoKSdzIGNvbmZ1c2lvbiBiZXR3ZWVuIGVycm5vIGFuZCB3aW5lcnJvci4KIAotLSBJc3N1ZSAjMTIzNzY6IFBhc3Mgb24gcGFyYW1ldGVycyBpbiBUZXh0VGVzdFJlc3VsdC5fX2luaXRfXyBzdXBlciBjYWxsCistIElzc3VlICMxNjA3NjogTWFkZSBfZWxlbWVudHRyZWUuRWxlbWVudCBwaWNrbGVhYmxlIGluIGEgd2F5IHRoYXQgaXMgY29tcGF0aWJsZQorICB3aXRoIHRoZSBQeXRob24gRWxlbWVudC4gUGlja2xpbmcvdW5waWNrbGluZyBvZiB4bWwuZXRyZWUuRWxlbWVudFRyZWUuRWxlbWVudAorICB3b3JrcyBhZ2FpbiAtIHRoaXMgd2FzIGEgdGVtcG9yYXJ5IHJlZ3Jlc3Npb24gZnJvbSAzLjIgd2hlcmUgdGhlIGJ5LWRlZmF1bHQKKyAgaW1wb3J0ZWQgX2VsZW1lbnR0cmVlIGhhZCBubyBwaWNrbGluZyBjYXBhYmlsaXR5LgogCi0tIElzc3VlICMxNTIyMjogSW5zZXJ0IGJsYW5rIGxpbmUgYWZ0ZXIgZWFjaCBtZXNzYWdlIGluIG1ib3ggbWFpbGJveGVzCistIElzc3VlICMxNjA4OTogQWxsb3cgRWxlbWVudFRyZWUuVHJlZUJ1aWxkZXIgdG8gd29yayBhZ2FpbiB3aXRoIGEgbm9uLUVsZW1lbnQKKyAgZWxlbWVudF9mYWN0b3J5IChmaXhlcyBhIHJlZ3Jlc3Npb24gaW4gU2ltcGxlVEFMKS4KIAotLSBJc3N1ZSAjMTYwMTM6IEZpeCBDU1YgUmVhZGVyIHBhcnNpbmcgaXNzdWUgd2l0aCBlbmRpbmcgcXVvdGUgY2hhcmFjdGVycy4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKy0gSXNzdWUgIzE2OTEzOiBGaXggRWxlbWVudC5pdGVydGV4dCgpJ3MgaGFuZGxpbmcgb2YgdGV4dCB3aXRoIFhNTCBlbnRpdGllcy4sCiAKLS0gSXNzdWUgIzE1NDIxOiBmaXggYW4gT3ZlcmZsb3dFcnJvciBpbiBDYWxlbmRhci5pdGVybW9udGhkYXRlcygpIGFmdGVyCi0gIGRhdGV0aW1lLk1BWFlFQVIuICBQYXRjaCBieSBDw6lkcmljIEtyaWVyLgotCi0tIElzc3VlICMxNTk3MDogeG1sLmV0cmVlLkVsZW1lbnRUcmVlIG5vdyBzZXJpYWxpemVzIGNvcnJlY3RseSB0aGUgZW1wdHkgSFRNTAotICBlbGVtZW50cyAnbWV0YScgYW5kICdwYXJhbScuCi0KLS0gSXNzdWUgIzE1ODQyOiB0aGUgU29ja2V0SU8ue3JlYWRhYmxlLHdyaXRhYmxlLHNlZWthYmxlfSBtZXRob2RzIG5vdwotICByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIGZpbGUtbGlrZSBvYmplY3QgaXMgY2xvc2VkLiAgUGF0Y2ggYnkgQWxlc3NhbmRybwotICBNb3VyYS4KLQotLSBJc3N1ZSAjMTU4ODE6IEZpeGVkIGF0ZXhpdCBob29rIGluIG11bHRpcHJvY2Vzc2luZy4gIE9yaWdpbmFsIHBhdGNoCi0gIGJ5IENocmlzIE1jRG9ub3VnaC4KLQotLSBJc3N1ZSAjMTUzNDA6IEZpeCBpbXBvcnRpbmcgdGhlIHJhbmRvbSBtb2R1bGUgd2hlbiAvZGV2L3VyYW5kb20gY2Fubm90Ci0gIGJlIG9wZW5lZC4gIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBjYXVzZWQgYnkgdGhlIGhhc2ggcmFuZG9taXphdGlvbiBwYXRjaC4KLQotLSBJc3N1ZSAjMTU4NDE6IFRoZSByZWFkYWJsZSgpLCB3cml0YWJsZSgpIGFuZCBzZWVrYWJsZSgpIG1ldGhvZHMgb2YgQnl0ZXNJTwotICBhbmQgU3RyaW5nSU8gb2JqZWN0cyBub3cgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBvYmplY3QgaGFzIGJlZW4gY2xvc2VkLgotICBQYXRjaCBieSBBbGVzc2FuZHJvIE1vdXJhLgotCi0tIElzc3VlICMxNTUwOTogd2ViYnJvd3Nlci5Vbml4QnJvd3NlciBubyBsb25nZXIgcGFzc2VzIGVtcHR5IGFyZ3VtZW50cyB0bwotICBQb3BlbiB3aGVuICVhY3Rpb24gc3Vic3RpdHV0aW9ucyBwcm9kdWNlIGVtcHR5IHN0cmluZ3MuCistIElzc3VlICMxNjAzNDogRml4IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zIGluIHRoZSBuZXcgYGJ6Mi5CWjJGaWxlYAorICBpbXBsZW1lbnRhdGlvbi4gIEluaXRpYWwgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAogLSBJc3N1ZSAjMTYxMTI6IHBsYXRmb3JtLmFyY2hpdGVjdHVyZSBkb2VzIG5vdCBjb3JyZWN0bHkgZXNjYXBlIGFyZ3VtZW50IHRvCiAgIC91c3IvYmluL2ZpbGUuICBQYXRjaCBieSBEYXZpZCBCZW5qYW1pbi4KIAotLSBJc3N1ZSAjMTI3NzYsIzExODM5OiBjYWxsIGFyZ3BhcnNlIHR5cGUgZnVuY3Rpb24gKHNwZWNpZmllZCBieSBhZGRfYXJndW1lbnQpCi0gIG9ubHkgb25jZS4gQmVmb3JlLCB0aGUgdHlwZSBmdW5jdGlvbiB3YXMgY2FsbGVkIHR3aWNlIGluIHRoZSBjYXNlIHdoZXJlIHRoZQotICBkZWZhdWx0IHdhcyBzcGVjaWZpZWQgYW5kIHRoZSBhcmd1bWVudCB3YXMgZ2l2ZW4gYXMgd2VsbC4gIFRoaXMgd2FzCi0gIGVzcGVjaWFsbHkgcHJvYmxlbWF0aWMgZm9yIHRoZSBGaWxlVHlwZSB0eXBlLCBhcyBhIGRlZmF1bHQgZmlsZSB3b3VsZCBhbHdheXMKLSAgYmUgb3BlbmVkLCBldmVuIGlmIGEgZmlsZSBhcmd1bWVudCB3YXMgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCistIElzc3VlICMxNTc1NjogYHN1YnByb2Nlc3MucG9sbCgpYCBub3cgcHJvcGVybHkgaGFuZGxlcyBgZXJybm8uRUNISUxEYCB0bworICByZXR1cm4gYSByZXR1cm5jb2RlIG9mIDAgd2hlbiB0aGUgY2hpbGQgaGFzIGFscmVhZHkgZXhpdGVkIG9yIGNhbm5vdCBiZSB3YWl0ZWQKKyAgb24uCiAKLS0gSXNzdWUgIzE1OTA2OiBGaXggYSByZWdyZXNzaW9uIGluIGFyZ3BhcnNlIGNhdXNlZCBieSB0aGUgcHJlY2VkaW5nIGNoYW5nZSwKLSAgd2hlbiBhY3Rpb249J2FwcGVuZCcsIHR5cGU9J3N0cicgYW5kIGRlZmF1bHQ9W10uCistIElzc3VlICMxNTMyMzogSW1wcm92ZSBmYWlsdXJlIG1lc3NhZ2Ugb2YgYE1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKWAuCiAKLS0gSXNzdWUgIzEzMzcwOiBFbnN1cmUgdGhhdCBjdHlwZXMgd29ya3Mgb24gTWFjIE9TIFggd2hlbiBQeXRob24gaXMKLSAgY29tcGlsZWQgdXNpbmcgdGhlIGNsYW5nIGNvbXBpbGVyCistIElzc3VlICMxNjA2NDogYGB1bml0dGVzdCAtbWBgIGNsYWltcyBleGVjdXRhYmxlIGlzICJweXRob24iLCBub3QgInB5dGhvbjMiLgogCi0tIElzc3VlICMxNTU0NDogRml4IERlY2ltYWwuX19mbG9hdF9fIHRvIHdvcmsgd2l0aCBwYXlsb2FkLWNhcnJ5aW5nIE5hTnMuCistIElzc3VlICMxMjM3NjogUGFzcyBvbiBwYXJhbWV0ZXJzIGluIGBUZXh0VGVzdFJlc3VsdC5fX2luaXRfXygpYCBzdXBlciBjYWxsLgogCi0tIElzc3VlICMxNTI0OTogQnl0ZXNHZW5lcmF0b3Igbm93IGNvcnJlY3RseSBtYW5nbGVzIEZyb20gbGluZXMgKHdoZW4KLSAgcmVxdWVzdGVkKSBldmVuIGlmIHRoZSBib2R5IGNvbnRhaW5zIHVuZGVjb2RhYmxlIGJ5dGVzLgorLSBJc3N1ZSAjMTUyMjI6IEluc2VydCBibGFuayBsaW5lIGFmdGVyIGVhY2ggbWVzc2FnZSBpbiBtYm94IG1haWxib3hlcy4KIAotLSBJc3N1ZSAjMTU3Nzc6IEZpeCBhIHJlZmxlYWsgaW4gX3Bvc2l4c3VicHJvY2Vzcy4KLQotLSBJc3N1ZSAjMTUxOTk6IEZpeCBKYXZhU2NyaXB0J3MgZGVmYXVsdCBNSU1FIHR5cGUgdG8gYXBwbGljYXRpb24vamF2YXNjcmlwdC4KLSAgUGF0Y2ggYnkgQm9odXNsYXYgS2FicmRhLgotCi0tIElzc3VlICMxMzU3OTogc3RyaW5nLkZvcm1hdHRlciBub3cgdW5kZXJzdGFuZHMgdGhlICdhJyBjb252ZXJzaW9uIHNwZWNpZmllci4KLQotLSBJc3N1ZSAjMTU3OTM6IFN0YWNrIGNvcnJ1cHRpb24gaW4gc3NsLlJBTkRfZWdkKCkuCistIElzc3VlICMxNjAxMzogRml4IGBjc3YuUmVhZGVyYCBwYXJzaW5nIGlzc3VlIHdpdGggZW5kaW5nIHF1b3RlIGNoYXJhY3RlcnMuCiAgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKLS0gSXNzdWUgIzE1NTk1OiBGaXggc3VicHJvY2Vzcy5Qb3Blbih1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKLSAgZm9yIGNlcnRhaW4gbG9jYWxlcyAodXRmLTE2IGFuZCB1dGYtMzIgZmFtaWx5KS4gUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCistIElzc3VlICMxNTQyMTogRml4IGFuIE92ZXJmbG93RXJyb3IgaW4gYENhbGVuZGFyLml0ZXJtb250aGRhdGVzKClgIGFmdGVyCisgIGBkYXRldGltZS5NQVhZRUFSYC4gIFBhdGNoIGJ5IEPDqWRyaWMgS3JpZXIuCiAKLS0gSXNzdWUgIzE1NDc3OiBJbiBjbWF0aCBhbmQgbWF0aCBtb2R1bGVzLCBhZGQgd29ya2Fyb3VuZCBmb3IgcGxhdGZvcm1zIHdob3NlCi0gIHN5c3RlbS1zdXBwbGllZCBsb2cxcCBmdW5jdGlvbiBkb2Vzbid0IHJlc3BlY3Qgc2lnbnMgb2YgemVyb3MuCistIElzc3VlICMxNTk3MDogYHhtbC5ldHJlZS5FbGVtZW50VHJlZWAgbm93IHNlcmlhbGl6ZXMgY29ycmVjdGx5IHRoZSBlbXB0eSBIVE1MCisgIGVsZW1lbnRzICdtZXRhJyBhbmQgJ3BhcmFtJy4KIAotLSBJc3N1ZSAjMTEwNjI6IEZpeCBhZGRpbmcgYSBtZXNzYWdlIGZyb20gZmlsZSB0byBCYWJ5bCBtYWlsYm94LgorLSBJc3N1ZSAjMTU4NDI6IFRoZSBgU29ja2V0SU8ue3JlYWRhYmxlLHdyaXRhYmxlLHNlZWthYmxlfWAgbWV0aG9kcyBub3cgcmFpc2UKKyAgVmFsdWVFcnJvciB3aGVuIHRoZSBmaWxlLWxpa2Ugb2JqZWN0IGlzIGNsb3NlZC4gIFBhdGNoIGJ5IEFsZXNzYW5kcm8gTW91cmEuCiAKLS0gSXNzdWUgIzE1NjQ2OiBQcmV2ZW50IGVxdWl2YWxlbnQgb2YgYSBmb3JrIGJvbWIgd2hlbiB1c2luZwotICBtdWx0aXByb2Nlc3Npbmcgb24gV2luZG93cyB3aXRob3V0IHRoZSAiaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJyIKLSAgaWRpb20uCistIElzc3VlICMxNTg3NjogRml4IGEgcmVmbGVhayBpbiB0aGUgYGN1cnNlc2AgbW9kdWxlOiB3aW5kb3cuZW5jb2RpbmcuCiAKLS0gSXNzdWUgIzE1NDI0OiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBhcnJheSBvYmplY3RzLgotICBQYXRjaCBieSBMdWR3aWcgSMOkaG5lLgorLSBJc3N1ZSAjMTU4ODE6IEZpeCBgYXRleGl0YCBob29rIGluIGBtdWx0aXByb2Nlc3NpbmdgLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQ2hyaXMKKyAgTWNEb25vdWdoLgogCi0tIElzc3VlICMxNTU0NjogRml4IGhhbmRsaW5nIG9mIHBhdGhvbG9naWNhbCBpbnB1dCBkYXRhIGluIHRoZSBwZWVrKCkgbWV0aG9kCi0gIG9mIHRoZSBHemlwRmlsZSBjbGFzcy4KKy0gSXNzdWUgIzE1ODQxOiBUaGUgcmVhZGFibGUoKSwgd3JpdGFibGUoKSBhbmQgc2Vla2FibGUoKSBtZXRob2RzIG9mCisgIGBpby5CeXRlc0lPYCBhbmQgYGlvLlN0cmluZ0lPYCBvYmplY3RzIG5vdyByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIG9iamVjdAorICBoYXMgYmVlbiBjbG9zZWQuICBQYXRjaCBieSBBbGVzc2FuZHJvIE1vdXJhLgogCi0tIElzc3VlICMxMzA1MjogRml4IElETEUgY3Jhc2hpbmcgd2hlbiByZXBsYWNlIHN0cmluZyBpbiBTZWFyY2gvUmVwbGFjZSBkaWFsb2cKLSAgZW5kZWQgd2l0aCAnXCcuIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgotCi0tIElzc3VlICMxNTUzODogRml4IGNvbXBpbGF0aW9uIG9mIHRoZSBnZXRuYW1laW5mbygpIC8gZ2V0YWRkcmluZm8oKQotICBlbXVsYXRpb24gY29kZS4gIFBhdGNoIGJ5IFBoaWxpcHAgSGFnZW1laXN0ZXIuCi0KLS0gSXNzdWUgIzk4MDM6IERvbid0IGNsb3NlIElETEUgb24gc2F2aW5nIGlmIGJyZWFrcG9pbnQgaXMgb3Blbi4KLSAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzEyMjg4OiBDb25zaWRlciAnMCcgYW5kICcwLjAnIGFzIHZhbGlkIGluaXRpYWx2YWx1ZQotICBmb3IgdGtpbnRlciBTaW1wbGVEaWFsb2cuCi0KLS0gSXNzdWUgIzE1NTEyOiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBwYXJzZXIuCistIElzc3VlICMxNjEyNjogUHlFcnJfRm9ybWF0IGZvcm1hdCBtaXNtYXRjaCBpbiBfdGVzdGNhcGltb2R1bGUuYy4KICAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjMTU0Njk6IEFkZCBhIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIGRlcXVlIG9iamVjdHMuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCistIElzc3VlICMxNTQ0NzogVXNlIGBzdWJwcm9jZXNzLkRFVk5VTExgIGluIHdlYmJyb3dzZXIsIGluc3RlYWQgb2Ygb3BlbmluZworICBgb3MuZGV2bnVsbGAgZXhwbGljaXRseSBhbmQgbGVhdmluZyBpdCBvcGVuLgogCi0tIElzc3VlICMxNTQ4OTogQWRkIGEgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgQnl0ZXNJTyBvYmplY3RzLgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorLSBJc3N1ZSAjMTU1MDk6IGB3ZWJicm93c2VyLlVuaXhCcm93c2VyYCBubyBsb25nZXIgcGFzc2VzIGVtcHR5IGFyZ3VtZW50cyB0bworICBQb3BlbiB3aGVuIGBgJWFjdGlvbmBgIHN1YnN0aXR1dGlvbnMgcHJvZHVjZSBlbXB0eSBzdHJpbmdzLgogCi0tIElzc3VlICMxNTQ4NzogQWRkIGEgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgYnVmZmVyZWQgSS9PIG9iamVjdHMuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCistIElzc3VlICMxMjc3NiwgaXNzdWUgIzExODM5OiBDYWxsIGBhcmdwYXJzZWAgdHlwZSBmdW5jdGlvbiAoc3BlY2lmaWVkIGJ5CisgIGFkZF9hcmd1bWVudCkgb25seSBvbmNlLiAgQmVmb3JlLCB0aGUgdHlwZSBmdW5jdGlvbiB3YXMgY2FsbGVkIHR3aWNlIGluIHRoZQorICBjYXNlIHdoZXJlIHRoZSBkZWZhdWx0IHdhcyBzcGVjaWZpZWQgYW5kIHRoZSBhcmd1bWVudCB3YXMgZ2l2ZW4gYXMgd2VsbC4gIFRoaXMKKyAgd2FzIGVzcGVjaWFsbHkgcHJvYmxlbWF0aWMgZm9yIHRoZSBGaWxlVHlwZSB0eXBlLCBhcyBhIGRlZmF1bHQgZmlsZSB3b3VsZAorICBhbHdheXMgYmUgb3BlbmVkLCBldmVuIGlmIGEgZmlsZSBhcmd1bWVudCB3YXMgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCiAKLS0gSXNzdWUgIzYwNTY6IE1ha2UgbXVsdGlwcm9jZXNzaW5nIHVzZSBzZXRibG9ja2luZyhUcnVlKSBvbiB0aGUKLSAgc29ja2V0cyBpdCB1c2VzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgSiBEZXJlayBXaWxzb24uCi0KLS0gSXNzdWUgIzE1MDQxOiB1cGRhdGUgInNlZSBhbHNvIiBsaXN0IGluIHRraW50ZXIgZG9jdW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjMTU0MDI6IEFuIGlzc3VlIGluIHRoZSBzdHJ1Y3QgbW9kdWxlIHRoYXQgY2F1c2VkIHN5cy5nZXRzaXplb2YgdG8KLSAgcmV0dXJuIGluY29ycmVjdCByZXN1bHRzIGZvciBzdHJ1Y3QuU3RydWN0IGluc3RhbmNlcyBoYXMgYmVlbiBmaXhlZC4KLSAgSW5pdGlhbCBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTIzMjogd2hlbiBtYW5nbGVfZnJvbSBpcyBUcnVlLCBlbWFpbC5HZW5lcmF0b3Igbm93IGNvcnJlY3RseSBtYW5nbGVzCi0gIGxpbmVzIHRoYXQgc3RhcnQgd2l0aCAnRnJvbSAnIHRoYXQgb2NjdXIgaW4gYSBNSU1FIHByZWFtYmxlIG9yIGVwaWxvZ3VlLgotCi0tIElzc3VlICMxMzkyMjogYXJncGFyc2Ugbm8gbG9uZ2VyIGluY29ycmVjdGx5IHN0cmlwcyAnLS0ncyB0aGF0IGFwcGVhcgotICBhZnRlciB0aGUgZmlyc3Qgb25lLgotCi0tIElzc3VlICMxMjM1MzogYXJncGFyc2Ugbm93IGNvcnJlY3RseSBoYW5kbGVzIG51bGwgYXJndW1lbnQgdmFsdWVzLgotCi0tIElzc3VlcyAjMTAwMTcgYW5kICMxNDk5ODogRml4IFR5cGVFcnJvciB1c2luZyBwcHJpbnQgb24gZGljdGlvbmFyaWVzIHdpdGgKLSAgdXNlci1kZWZpbmVkIHR5cGVzIGFzIGtleXMgb3Igb3RoZXIgdW5vcmRlcmFibGUga2V5cy4KLQotLSBJc3N1ZSAjMTQ2MzU6IHRlbG5ldGxpYiB3aWxsIHVzZSBwb2xsKCkgcmF0aGVyIHRoYW4gc2VsZWN0KCkgd2hlbiBwb3NzaWJsZQotICB0byBhdm9pZCBmYWlsaW5nIGR1ZSB0byB0aGUgc2VsZWN0KCkgZmlsZSBkZXNjcmlwdG9yIGxpbWl0LgotCi0tIElzc3VlICMxNTE4MDogQ2xhcmlmeSBwb3NpeHBhdGguam9pbigpIGVycm9yIG1lc3NhZ2Ugd2hlbiBtaXhpbmcgc3RyICYgYnl0ZXMKLQotLSBJc3N1ZSAjMTUyMzA6IHJ1bnB5LnJ1bl9wYXRoIG5vdyBjb3JyZWN0bHkgc2V0cyBfX3BhY2thZ2VfXyBhcyBkZXNjcmliZWQKLSAgaW4gdGhlIGRvY3VtZW50YXRpb24KLQotLSBJc3N1ZSAjMTQ5OTA6IENvcnJlY3RseSBmYWlsIHdpdGggU3ludGF4RXJyb3Igb24gaW52YWxpZCBlbmNvZGluZwotICBkZWNsYXJhdGlvbi4KLQotLSBJc3N1ZSAjMTUyNDc6IEZpbGVJTyBub3cgcmFpc2VzIGFuIGVycm9yIHdoZW4gZ2l2ZW4gYSBmaWxlIGRlc2NyaXB0b3IKLSAgcG9pbnRpbmcgdG8gYSBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzUzNDY6IFByZXNlcnZlIHBlcm1pc3Npb25zIG9mIG1ib3gsIE1NREYgYW5kIEJhYnlsIG1haWxib3gKLSAgZmlsZXMgb24gZmx1c2goKS4KLQotLSBJc3N1ZSAjMTA1NzE6IEZpeCB0aGUgIi0tc2lnbiIgb3B0aW9uIG9mIGRpc3R1dGlscycgdXBsb2FkIGNvbW1hbmQuCi0gIFBhdGNoIGJ5IEpha3ViIFdpbGsuCi0KLS0gSXNzdWUgIzk1NTk6IElmIG1lc3NhZ2VzIHdlcmUgb25seSBhZGRlZCwgYSBuZXcgZmlsZSBpcyBubyBsb25nZXIKLSAgY3JlYXRlZCBhbmQgcmVuYW1lZCBvdmVyIHRoZSBvbGQgZmlsZSB3aGVuIGZsdXNoKCkgaXMgY2FsbGVkIG9uIGFuCi0gIG1ib3gsIE1NREYgb3IgQmFieWwgbWFpbGJveC4KLQotLSBJc3N1ZSAjMTQ2NTM6IGVtYWlsLnV0aWxzLm1rdGltZV90eigpIG5vIGxvbmdlciByZWxpZXMgb24gc3lzdGVtCi0gIG1rdGltZSgpIHdoZW4gdGltZXpvbmUgb2ZmZXN0IGlzIHN1cHBsaWVkLgotCi0tIEZpeCBHemlwRmlsZSdzIGhhbmRsaW5nIG9mIGZpbGVuYW1lcyBnaXZlbiBhcyBieXRlcyBvYmplY3RzLgotCi0tIElzc3VlICMxNTEwMTogTWFrZSBwb29sIGZpbmFsaXplciBhdm9pZCBqb2luaW5nIGN1cnJlbnQgdGhyZWFkLgotCi0tIElzc3VlICMxNTAzNjogTWFpbGJveCBubyBsb25nZXIgdGhyb3dzIGFuIGVycm9yIGlmIGEgZmx1c2ggaXMgZG9uZQotICBiZXR3ZWVuIG9wZXJhdGlvbnMgd2hlbiByZW1vdmluZyBvciBjaGFuZ2luZyBtdWx0aXBsZSBpdGVtcyBpbiBtYm94LAotICBNTURGLCBvciBCYWJ5bCBtYWlsYm94ZXMuCi0KLS0gSXNzdWUgIzEwMTMzOiBNYWtlIG11bHRpcHJvY2Vzc2luZyBkZWFsbG9jYXRlIGJ1ZmZlciBpZiBzb2NrZXQgcmVhZAotICBmYWlscy4gIFBhdGNoIGJ5IEhhbGx2YXJkIEIgRnVydXNldGguCi0KLS0gSXNzdWUgIzEzODU0OiBNYWtlIG11bHRpcHJvY2Vzc2luZyBwcm9wZXJseSBoYW5kbGUgbm9uLWludGVnZXIKLSAgbm9uLXN0cmluZyBhcmd1bWVudCB0byBTeXN0ZW1FeGl0LgotCi0tIElzc3VlICMxMjE1NzogTWFrZSBwb29sLm1hcCgpIGVtcHR5IGl0ZXJhYmxlcyBjb3JyZWN0bHkuICBJbml0aWFsCi0gIHBhdGNoIGJ5IG1vdWFkLgotCi0tIElzc3VlICMxNDk5Mjogb3MubWFrZWRpcnMocGF0aCwgZXhpc3Rfb2s9VHJ1ZSkgd291bGQgcmFpc2UgYW4gT1NFcnJvcgotICB3aGVuIHRoZSBwYXRoIGV4aXN0ZWQgYW5kIGhhZCB0aGUgU19JU0dJRCBtb2RlIGJpdCBzZXQgd2hlbiBpdCB3YXMKLSAgbm90IGV4cGxpY2l0bHkgYXNrZWQgZm9yLiAgVGhpcyBpcyBubyBsb25nZXIgYW4gZXhjZXB0aW9uIGFzIG1rZGlyCi0gIGNhbm5vdCBjb250cm9sIGlmIHRoZSBPUyBzZXRzIHRoYXQgYml0IGZvciBpdCBvciBub3QuCi0KLS0gSXNzdWUgIzE0OTYyOiBVcGRhdGUgdGV4dCBjb2xvcmluZyBpbiBJRExFIHNoZWxsIHdpbmRvdyBhZnRlciBjaGFuZ2luZwotICBvcHRpb25zLiAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzEwOTk3OiBQcmV2ZW50IGEgZHVwbGljYXRlIGVudHJ5IGluIElETEUncyAiUmVjZW50IEZpbGVzIiBtZW51LgotCi0tIElzc3VlICMxNDQ0MzogVGVsbCBycG1idWlsZCB0byB1c2UgdGhlIGNvcnJlY3QgdmVyc2lvbiBvZiBQeXRob24gaW4KLSAgYmRpc3RfcnBtLiBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgotCi0tIElzc3VlICMxNDkyOTogU3RvcCBJZGxlIDMueCBmcm9tIGNsb3Npbmcgb24gVW5pY29kZSBkZWNvZGUgZXJyb3JzIHdoZW4KLSAgZ3JlcHBpbmcuIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgotCi0tIElzc3VlICMxMjUxMDogQXR0ZW1wdGluZyB0byBnZXQgaW52YWxpZCB0b29sdGlwIG5vIGxvbmdlciBjbG9zZXMgSWRsZS4KLSAgT3RoZXIgdG9vbHRpcHNzIGhhdmUgYmVlbiBjb3JyZWN0ZWQgb3IgaW1wcm92ZWQgYW5kIHRoZSBudW1iZXIgb2YgdGVzdHMKLSAgaGFzIGJlZW4gdHJpcGxlZC4gT3JpZ2luYWwgcGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzEwMzY1OiBGaWxlIG9wZW4gZGlhbG9nIG5vdyB3b3JrcyBpbnN0ZWFkIG9mIGNyYXNoaW5nIGV2ZW4gd2hlbgotICB0aGUgcGFyZW50IHdpbmRvdyBpcyBjbG9zZWQgYmVmb3JlIHRoZSBkaWFsb2cuIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgotCi0tIElzc3VlICMxNDg3NjogVXNlIHVzZXItc2VsZWN0ZWQgZm9udCBmb3IgaGlnaGxpZ2h0IGNvbmZpZ3VyYXRpb24uCi0KLS0gSXNzdWUgIzE0OTIwOiBGaXggdGhlIGhlbHAodXJsbGliLnBhcnNlKSBmYWlsdXJlIG9uIGxvY2FsZSBDIG9uIHRlcm1pbmFscy4KLSAgSGF2ZSBhc2NpaSBjaGFyYWN0ZXJzIGluIGhlbHAuCi0KLS0gSXNzdWUgIzE0ODYzOiBVcGRhdGUgdGhlIGRvY3VtZW50YXRpb24gb2Ygb3MuZmRvcGVuKCkgdG8gcmVmbGVjdCB0aGUKLSAgZmFjdCB0aGF0IGl0J3Mgb25seSBhIHRoaW4gd3JhcHBlciBhcm91bmQgb3BlbigpIGFueW1vcmUuCi0KLS0gSXNzdWUgIzE0MDM2OiBBZGQgYW4gYWRkaXRpb25hbCBjaGVjayB0byB2YWxpZGF0ZSB0aGF0IHBvcnQgaW4gdXJscGFyc2UgZG9lcwotICBub3QgZ28gaW4gaWxsZWdhbCByYW5nZSBhbmQgcmV0dXJucyBOb25lLgotCi0tIElzc3VlICMxNDg3NTogVXNlIGZsb2F0KCdpbmYnKSBpbnN0ZWFkIG9mIGZsb2F0KCcxZTY2NjY2JykgaW4gdGhlIGpzb24gbW9kdWxlLgotCi0tIElzc3VlICMxNDQyNjogQ29ycmVjdCB0aGUgRGF0ZSBmb3JtYXQgaW4gRXhwaXJlcyBhdHRyaWJ1dGUgb2YgU2V0LUNvb2tpZQotICBIZWFkZXIgaW4gQ29va2llLnB5LgotCi0tIElzc3VlICMxNDcyMTogU2VuZCB0aGUgY29ycmVjdCAnQ29udGVudC1sZW5ndGg6IDAnIGhlYWRlciB3aGVuIHRoZSBib2R5IGlzIGFuCi0gIGVtcHR5IHN0cmluZyAnJy4gSW5pdGlhbCBQYXRjaCBjb250cmlidXRlZCBieSBBcnZlIEtudWRzZW4uCi0KLS0gSXNzdWUgIzE0MDcyOiBGaXggcGFyc2luZyBvZiAndGVsJyBVUklzIGluIHVybHBhcnNlIGJ5IG1ha2luZyB0aGUgY2hlY2sgZm9yCi0gIHBvcnRzIHN0cmljdGVyLgotCi0tIElzc3VlICM5Mzc0OiBHZW5lcmljIHBhcnNpbmcgb2YgcXVlcnkgYW5kIGZyYWdtZW50IHBvcnRpb25zIG9mIHVybCBmb3IgYW55Ci0gIHNjaGVtZS4gU3VwcG9ydGVkIGJvdGggYnkgUkZDMzk4NiBhbmQgUkZDMjM5Ni4KLQotLSBJc3N1ZSAjMTQ3OTg6IEZpeCB0aGUgZnVuY3Rpb25zIGluIHB5Y2xiciB0byByYWlzZSBhbiBJbXBvcnRFcnJvcgotICB3aGVuIHRoZSBmaXJzdCBwYXJ0IG9mIGEgZG90dGVkIG5hbWUgaXMgbm90IGEgcGFja2FnZS4gUGF0Y2ggYnkKLSAgWGF2aWVyIGRlIEdheWUuCi0KLS0gSXNzdWUgIzE0ODI5OiBGaXggYmlzZWN0IGFuZCByYW5nZSgpIGluZGV4aW5nIHdpdGggbGFyZ2UgaW5kaWNlcwotICAoPj0gMiAqKiAzMikgdW5kZXIgNjQtYml0IFdpbmRvd3MuCi0KLS0gSXNzdWUgIzE0Nzc3OiB0a2ludGVyIG1heSByZXR1cm4gdW5kZWNvZGVkIFVURi04IGJ5dGVzIGFzIGEgc3RyaW5nIHdoZW4KLSAgYWNjZXNzaW5nIHRoZSBUayBjbGlwYm9hcmQuICBNb2RpZnkgY2xpcGJvYWRfZ2V0KCkgdG8gZmlyc3QgcmVxdWVzdCB0eXBlCi0gIFVURjhfU1RSSU5HIHdoZW4gbm8gc3BlY2lmaWMgdHlwZSBpcyByZXF1ZXN0ZWQgaW4gYW4gWDExIHdpbmRvd2luZwotICBlbnZpcm9ubWVudCwgZmFsbGluZyBiYWNrIHRvIHRoZSBjdXJyZW50IGRlZmF1bHQgdHlwZSBTVFJJTkcgaWYgdGhhdCBmYWlscy4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgVGhvbWFzIEtsdXl2ZXIuCi0KLS0gSXNzdWUgIzEyNTQxOiBCZSBsZW5pZW50IHdpdGggcXVvdGVzIGFyb3VuZCBSZWFsbSBmaWVsZCBvZiBIVFRQIEJhc2ljCi0gIEF1dGhlbnRhdGlvbiBpbiB1cmxsaWIyLgotCi0tIElzc3VlICMxNDY2MjogUHJldmVudCBzaHV0aWwgZmFpbHVyZXMgb24gT1MgWCB3aGVuIGRlc3RpbmF0aW9uIGRvZXMgbm90Ci0gIHN1cHBvcnQgY2hmbGFnIG9wZXJhdGlvbnMuICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCi0KLS0gSXNzdWUgIzE0MTU3OiBGaXggdGltZS5zdHJwdGltZSBmYWlsaW5nIHdpdGhvdXQgYSB5ZWFyIG9uIEZlYnJ1YXJ5IDI5dGguCi0gIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KLQotLSBJc3N1ZSAjMTQ3Njg6IG9zLnBhdGguZXhwYW5kdXNlcignfi9hJykgZG9lc24ndCB3b3JrcyBjb3JyZWN0bHkgd2hlbiBIT01FIGlzICcvJy4KLQotLSBJc3N1ZSAjMTQ3NDE6IEZpeCBtaXNzaW5nIHN1cHBvcnQgZm9yIEVsbGlwc2lzICgnLi4uJykgaW4gcGFyc2VyIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTQ2OTc6IEZpeCBtaXNzaW5nIHN1cHBvcnQgZm9yIHNldCBkaXNwbGF5cyBhbmQgc2V0IGNvbXByZWhlbnNpb25zIGluCi0gIHBhcnNlciBtb2R1bGUuCi0KLS0gSXNzdWUgIzE0NzAxOiBGaXggbWlzc2luZyBzdXBwb3J0IGZvciAncmFpc2UgLi4uIGZyb20nIGluIHBhcnNlciBtb2R1bGUuCi0KLS0gSXNzdWUgIzEzMTgzOiBGaXggcGRiIHNraXBwaW5nIGZyYW1lcyBhZnRlciBoaXR0aW5nIGEgYnJlYWtwb2ludCBhbmQgcnVubmluZwotICBzdGVwLiAgUGF0Y2ggYnkgWGF2aWVyIGRlIEdheWUuCi0KLS0gSXNzdWUgIzE0Njk2OiBGaXggcGFyc2VyIG1vZHVsZSB0byB1bmRlcnN0YW5kICdub25sb2NhbCcgZGVjbGFyYXRpb25zLgotCi0tIElzc3VlICMxMDk0MTogRml4IGltYXBsaWIuSW50ZXJuYWxkYXRlMnR1cGxlIHRvIHByb2R1Y2UgY29ycmVjdCByZXN1bHQgbmVhcgotICB0aGUgRFNUIHRyYW5zaXRpb24uICBQYXRjaCBieSBKb2UgUGV0ZXJzb24uCi0KLS0gSXNzdWUgIzkxNTQ6IEZpeCBwYXJzZXIgbW9kdWxlIHRvIHVuZGVyc3RhbmQgZnVuY3Rpb24gYW5ub3RhdGlvbnMuCi0KLS0gSXNzdWUgIzE0NjY0OiBJdCBpcyBub3cgcG9zc2libGUgdG8gdXNlIEB1bml0dGVzdC5za2lwe0lmLFVubGVzc30gb24gYQotICB0ZXN0IGNsYXNzIHRoYXQgZG9lc24ndCBpbmhlcml0IGZyb20gVGVzdENhc2UgKGkuZS4gYSBtaXhpbikuCi0KLS0gSXNzdWUgIzE0MTYwOiBUYXJGaWxlLmV4dHJhY3RmaWxlKCkgZmFpbGVkIHRvIHJlc29sdmUgc3ltYm9saWMgbGlua3Mgd2hlbgotICB0aGUgbGlua3Mgd2VyZSBub3QgbG9jYXRlZCBpbiBhbiBhcmNoaXZlIHN1YmRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjMTQ2Mzg6IHB5ZG9jIG5vdyB0cmVhdHMgbm9uLXN0cmluZyBfX25hbWVfXyB2YWx1ZXMgYXMgaWYgdGhleQotICB3ZXJlIG1pc3NpbmcsIGluc3RlYWQgb2YgcmFpc2luZyBhbiBlcnJvci4KLQotLSBJc3N1ZSAjMTM2ODQ6IEZpeCBodHRwbGliIHR1bm5lbCBpc3N1ZSBvZiBpbmZpbml0ZSBsb29wcyBmb3IgY2VydGFpbiBzaXRlcwotICB3aGljaCBzZW5kIEVPRiB3aXRob3V0IHRyYWlsaW5nIFxyXG4uCi0KLS0gSXNzdWUgIzE0NjI5OiBSYWlzZSBTeW50YXhFcnJvciBpbiB0b2tlbml6ZXIuZGV0ZWN0X2VuY29kaW5nIGlmIHRoZQotICBmaXJzdCB0d28gbGluZXMgaGF2ZSBub24tVVRGLTggY2hhcmFjdGVycyB3aXRob3V0IGFuIGVuY29kaW5nIGRlY2xhcmF0aW9uLgotCi0tIElzc3VlICMxNDMwODogRml4IGFuIGV4Y2VwdGlvbiB3aGVuIGEgImR1bW15IiB0aHJlYWQgaXMgaW4gdGhlIHRocmVhZGluZwotICBtb2R1bGUncyBhY3RpdmUgbGlzdCBhZnRlciBhIGZvcmsoKS4KLQotLSBJc3N1ZSAjMTQ1Mzg6IEhUTUxQYXJzZXIgY2FuIG5vdyBwYXJzZSBjb3JyZWN0bHkgc3RhcnQgdGFncyB0aGF0IGNvbnRhaW4KLSAgYSBiYXJlICcvJy4KLQotLSBJc3N1ZSAjMTQ0NTI6IFN5c0xvZ0hhbmRsZXIgbm8gbG9uZ2VyIGluc2VydHMgYSBVVEYtOCBCT00gaW50byB0aGUgbWVzc2FnZS4KLQotLSBJc3N1ZSAjMTM0OTY6IEZpeCBwb3RlbnRpYWwgb3ZlcmZsb3cgaW4gYmlzZWN0LmJpc2VjdCBhbGdvcml0aG0gd2hlbiBhcHBsaWVkCi0gIHRvIGEgY29sbGVjdGlvbiBvZiBzaXplID4gc3lzLm1heHNpemUgLyAyLgotCi0tIElzc3VlICMxNDM5OTogemlwZmlsZSBub3cgcmVjb2duaXplcyB0aGF0IHRoZSBhcmNoaXZlIGhhcyBiZWVuIG1vZGlmaWVkIGV2ZW4KLSAgaWYgb25seSB0aGUgY29tbWVudCBpcyBjaGFuZ2VkLiAgSW4gYWRkaXRpb24sIHRoZSBUeXBlRXJyb3IgdGhhdCByZXN1bHRzIGZyb20KLSAgdHJ5aW5nIHRvIHNldCBhIG5vbi1iaW5hcnkgdmFsdWUgYXMgYSBjb21tZW50IGlzIG5vdyByYWlzZWQgYXQgdGhlIHRpbWUKLSAgdGhlIGNvbW1lbnQgaXMgc2V0IHJhdGhlciB0aGFuIGF0IHRoZSB0aW1lIHRoZSB6aXBmaWxlIGlzIHdyaXR0ZW4uCi0KLS0gSXNzdWUgIzc5Nzg6IHNvY2tldHNlcnZlciBub3cgcmVzdGFydHMgdGhlIHNlbGVjdCgpIGNhbGwgd2hlbiBFSU5UUiBpcwotICByZXR1cm5lZC4gIFRoaXMgYXZvaWRzIGNyYXNoaW5nIHRoZSBzZXJ2ZXIgbG9vcCB3aGVuIGEgc2lnbmFsIGlzIHJlY2VpdmVkLgotICBQYXRjaCBieSBKZXJ6eSBLb3plcmEuCi0KLS0gSXNzdWUgIzE0NDk2OiBGaXggd3JvbmcgbmFtZSBpbiBpZGxlbGliL3RhYmJlZHBhZ2VzLnB5LgotICBQYXRjaCBieSBQb3BhIENsYXVkaXUuCi0KLS0gSXNzdWUgIzE0NDgyOiBSYWlzZSBhIFZhbHVlRXJyb3IsIG5vdCBhIE5hbWVFcnJvciwgd2hlbiB0cnlpbmcgdG8gY3JlYXRlCi0gIGEgbXVsdGlwcm9jZXNzaW5nIENsaWVudCBvciBMaXN0ZW5lciB3aXRoIGFuIEFGX1VOSVggdHlwZSBhZGRyZXNzIHVuZGVyCi0gIFdpbmRvd3MuICBQYXRjaCBieSBQb3BhIENsYXVkaXUuCi0KLS0gSXNzdWUgIzE0MTUxOiBSYWlzZSBhIFZhbHVlRXJyb3IsIG5vdCBhIE5hbWVFcnJvciwgd2hlbiB0cnlpbmcgdG8gY3JlYXRlCi0gIGEgbXVsdGlwcm9jZXNzaW5nIENsaWVudCBvciBMaXN0ZW5lciB3aXRoIGFuIEFGX1BJUEUgdHlwZSBhZGRyZXNzIHVuZGVyCi0gIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy4gIFBhdGNoIGJ5IFBvcGEgQ2xhdWRpdS4KLQotLSBJc3N1ZSAjMTM4NzI6IHNvY2tldC5kZXRhY2goKSBub3cgbWFya3MgdGhlIHNvY2tldCBjbG9zZWQgKGFzIG1pcnJvcmVkCi0gIGluIHRoZSBzb2NrZXQgcmVwcigpKS4gIFBhdGNoIGJ5IE1hdHQgSm9pbmVyLgotCi0tIElzc3VlICMxNDQwNjogRml4IGEgcmFjZSBjb25kaXRpb24gd2hlbiB1c2luZyBgYGNvbmN1cnJlbnQuZnV0dXJlcy53YWl0KAotICByZXR1cm5fd2hlbj1BTExfQ09NUExFVEVEKWBgLiAgUGF0Y2ggYnkgTWF0dCBKb2luZXIuCi0KLS0gSXNzdWUgIzE0NDA5OiBJRExFIG5vdyBwcm9wZXJseSBleGVjdXRlcyBjb21tYW5kcyBpbiB0aGUgU2hlbGwgd2luZG93Ci0gIHdoZW4gaXQgY2Fubm90IHJlYWQgdGhlIG5vcm1hbCBjb25maWcgZmlsZXMgb24gc3RhcnR1cCBhbmQKLSAgaGFzIHRvIHVzZSB0aGUgYnVpbHQtaW4gZGVmYXVsdCBrZXkgYmluZGluZ3MuCi0gIFRoZXJlIHdhcyBwcmV2aW91c2x5IGEgYnVnIGluIG9uZSBvZiB0aGUgZGVmYXVsdHMuCi0KLS0gSXNzdWUgIzEwMzQwOiBhc3luY29yZSAtIHByb3Blcmx5IGhhbmRsZSBFSU5WQUwgaW4gZGlzcGF0Y2hlciBjb25zdHJ1Y3RvciBvbgotICBPU1g7IGF2b2lkIHRvIGNhbGwgaGFuZGxlX2Nvbm5lY3QgaW4gY2FzZSBvZiBhIGRpc2Nvbm5lY3RlZCBzb2NrZXQgd2hpY2gKLSAgd2FzIG5vdCBtZWFudCB0byBjb25uZWN0LgotCi0tIElzc3VlICMxMjc1NzogRml4IHRoZSBza2lwcGluZyBvZiBkb2N0ZXN0cyB3aGVuIHB5dGhvbiBpcyBydW4gd2l0aCAtT08gc28KLSAgdGhhdCBpdCB3b3JrcyBpbiB1bml0dGVzdCdzIHZlcmJvc2UgbW9kZSBhcyB3ZWxsIGFzIG5vbi12ZXJib3NlIG1vZGUuCi0KLS0gSXNzdWUgIzM1NzM6IElETEUgaGFuZ3Mgd2hlbiBwYXNzaW5nIGludmFsaWQgY29tbWFuZCBsaW5lIGFyZ3MKLSAgKGRpcmVjdG9yeShpZXMpIGluc3RlYWQgb2YgZmlsZShzKSkgKFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvKQotCi0tIElzc3VlICMxMzY5NDogYXN5bmNocm9ub3VzIGNvbm5lY3QgaW4gYXN5bmNvcmUuZGlzcGF0Y2hlciBkb2VzIG5vdCBzZXQgYWRkcgotICBhdHRyaWJ1dGUuCi0KLS0gSXNzdWUgIzExNjg2OiBBZGRlZCBtaXNzaW5nIGVudHJpZXMgdG8gZW1haWwgcGFja2FnZSBfX2FsbF9fIGxpc3RzCi0gIChtb3N0bHkgdGhlIG5ldyBCeXRlcyBjbGFzc2VzKS4KLQotLSBJc3N1ZSAjMTA0ODQ6IEZpeCB0aGUgQ0dJSFRUUFNlcnZlcidzIFBBVEhfSU5GTyBoYW5kbGluZyBwcm9ibGVtLgotCi0tIElzc3VlICMxMTE5OTogRml4IHRoZSB3aXRoIHVybGxpYiB3aGljaCBoYW5ncyBvbiBwYXJ0aWN1bGFyIGZ0cCB1cmxzLgotCi0tIElzc3VlICMxNDA2MjogSGVhZGVyIG9iamVjdHMgbm93IGNvcnJlY3RseSByZXNwZWN0IHRoZSAnbGluZXNlcCcgc2V0dGluZwotICB3aGVuIHByb2Nlc3NlZCBieSBCeXRlc1BhcnNlciAod2hpY2ggc210cGxpYi5TTVRQLnNlbmRfbWVzc2FnZSB1c2VzKS4KLQotLSBJc3N1ZSAjMTQyOTE6IEVtYWlsIG5vdyBkZWZhdWx0cyB0byB1dGYtOCBmb3Igbm9uLUFTQ0lJIHVuaWNvZGUgaGVhZGVycwotICBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IuICBUaGlzIGZpeGVzIGEgcmVncmVzc2lvbiByZWxhdGl2ZSB0byAyLjcuCi0KLS0gSXNzdWUgIzUyMTk6IFByZXZlbnQgZXZlbnQgaGFuZGxlciBjYXNjYWRlIGluIElETEUuCi0KLS0gSXNzdWUgIzE0MTg0OiBJbmNyZWFzZSB0aGUgZGVmYXVsdCBzdGFjayBzaXplIGZvciBzZWNvbmRhcnkgdGhyZWFkcyBvbgotICBNYWMgT1MgWCB0byBhdm9pZCBpbnRlcnByZXRlciBjcmFzaGVzIHdoZW4gdXNpbmcgdGhyZWFkcyBvbiAxMC43LgotCi0tIElzc3VlICMxMDU0MzogRml4IHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5IHdpdGggSnl0aG9uIGJ5dGVjb2RlIGZpbGVzLgotCi0tIElzc3VlICMxNDI1MjogRml4IHN1YnByb2Nlc3MuUG9wZW4udGVybWluYXRlKCkgdG8gbm90IHJhaXNlIGFuIGVycm9yIHVuZGVyCi0gIFdpbmRvd3Mgd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBoYXMgYWxyZWFkeSBleGl0ZWQuCi0KLS0gSXNzdWUgIzE0MTk1OiBBbiBpc3N1ZSB0aGF0IGNhdXNlZCB3ZWFrcmVmLldlYWtTZXQgaW5zdGFuY2VzIHRvIGluY29ycmVjdGx5Ci0gIHJldHVybiBUcnVlIGZvciBhIFdlYWtTZXQgaW5zdGFuY2UgJ2EnIGluIGJvdGggJ2EgPCBhJyBhbmQgJ2EgPiBhJyBoYXMgYmVlbgotICBmaXhlZC4KLQotLSBJc3N1ZSAjMTQxNzc6IG1hcnNoYWwubG9hZHMoKSBub3cgcmFpc2VzIFR5cGVFcnJvciB3aGVuIGdpdmVuIGFuIHVuaWNvZGUKLSAgc3RyaW5nLiAgUGF0Y2ggYnkgR3VpbGhlcm1lIEdvbsOnYWx2ZXMuCi0KLS0gSXNzdWUgIzE0MTU5OiBGaXggdGhlIGxlbigpIG9mIHdlYWsgY29udGFpbmVycyAoV2Vha1NldCwgV2Vha0tleURpY3Rpb25hcnksCi0gIFdlYWtWYWx1ZURpY3Rpb25hcnkpIHRvIHJldHVybiBhIGJldHRlciBhcHByb3hpbWF0aW9uIHdoZW4gc29tZSBvYmplY3RzCi0gIGFyZSBkZWFkIG9yIGR5aW5nLiAgTW9yZW92ZXIsIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBub3cgTygxKSByYXRoZXIgdGhhbgotICBPKG4pLgotCi0tIElzc3VlICMxMzEyNTogU2lsZW5jZSBzcHVyaW91cyB0ZXN0X2xpYjJ0bzMgb3V0cHV0IHdoZW4gaW4gbm9uLXZlcmJvc2UgbW9kZS4KLSAgUGF0Y2ggYnkgTWlraGFpbCBOb3Zpa292LgotCi0tIElzc3VlICMxMzQ0NzogQWRkIGEgdGVzdCBmaWxlIHRvIGhvc3QgcmVncmVzc2lvbiB0ZXN0cyBmb3IgYnVncyBpbiB0aGUKLSAgc2NyaXB0cyBmb3VuZCBpbiB0aGUgVG9vbHMgZGlyZWN0b3J5LgotCi0tIElzc3VlICM4MDMzOiBzcWxpdGUzOiBGaXggNjQtYml0IGludGVnZXIgaGFuZGxpbmcgaW4gdXNlciBmdW5jdGlvbnMKLSAgb24gMzItYml0IGFyY2hpdGVjdHVyZXMuIEluaXRpYWwgcGF0Y2ggYnkgUGhpbGlwcGUgRGV2YWxrZW5lZXIuCi0KLS0gSXNzdWUgIzEzNTkwOiBPUyBYIFhjb2RlIDQgLSBpbXByb3ZlIHN1cHBvcnQgZm9yIHVuaXZlcnNhbCBleHRlbnNpb24gbW9kdWxlcwotICBJbiBwYXJ0aWN1bGFyLCBmaXggZXh0ZW5zaW9uIG1vZHVsZSBidWlsZCBmYWlsdXJlcyB3aGVuIHRyeWluZyB0byB1c2UKLSAgMzItYml0LW9ubHkgaW5zdGFsbGVyIFB5dGhvbnMgb24gc3lzdGVtcyB3aXRoIFhjb2RlIDQgKGN1cnJlbnRseQotICBPUyBYIDEwLjgsIDEwLjcsIGFuZCBvcHRpb25hbGx5IDEwLjYpLgotICAqIEJhY2twb3J0IDMuMy4wIGZpeGVzIHRvIDMuMiBicmFuY2ggKGZvciByZWxlYXNlIGluIDMuMi40KQotICAqIFNpbmNlIFhjb2RlIDQgcmVtb3ZlcyBwcGMgc3VwcG9ydCwgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZHMgbm93Ci0gICAgY2hlY2sgZm9yIHBwYyBjb21waWxlciBzdXBwb3J0IGFuZCBieSBkZWZhdWx0IHJlbW92ZSBwcGMgYW5kCi0gICAgcHBjNjQgYXJjaHMgd2hlbiB0aGV5IGFyZSBub3QgYXZhaWxhYmxlLgotICAqIEV4dGVuc2lvbiBtb2R1bGUgYnVpbGRzIG5vdyByZXZlcnQgdG8gdXNpbmcgc3lzdGVtIGluc3RhbGxlZAotICAgIGhlYWRlcnMgYW5kIGxpYnMgKC91c3IgYW5kIC9TeXN0ZW0vTGlicmFyeSkgaWYgdGhlIFNESyB1c2VkCi0gICAgdG8gYnVpbGQgdGhlIGludGVycHJldGVyIGlzIG5vdCBpbnN0YWxsZWQgb3IgaGFzIG1vdmVkLgotICAqIFRyeSB0byBhdm9pZCBidWlsZGluZyBleHRlbnNpb24gbW9kdWxlcyB3aXRoIGRlcHJlY2F0ZWQKLSAgICBhbmQgcHJvYmxlbWF0aWMgQXBwbGUgbGx2bS1nY2MgY29tcGlsZXIuICBJZiBvcmlnaW5hbCBjb21waWxlcgotICAgIGlzIG5vdCBhdmFpbGFibGUsIHVzZSBjbGFuZyBpbnN0ZWFkIGJ5IGRlZmF1bHQuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQorLSBJc3N1ZSAjMTU5MDY6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gYGFyZ3BhcnNlYCBjYXVzZWQgYnkgdGhlIHByZWNlZGluZyBjaGFuZ2UsCisgIHdoZW4gYGBhY3Rpb249J2FwcGVuZCdgYCwgYGB0eXBlPSdzdHInYGAgYW5kIGBgZGVmYXVsdD1bXWBgLgogCiAtIElzc3VlICMxMjI2ODogVGhlIGlvIG1vZHVsZSBmaWxlIG9iamVjdCB3cml0ZSBtZXRob2RzIG5vIGxvbmdlciBhYm9ydCBlYXJseQogICB3aGVuIG9uZSBvZiBpdHMgd3JpdGUgc3lzdGVtIGNhbGxzIGlzIGludGVycnVwdGVkIChFSU5UUikuCiAKLS0gRml4IHRoZSBsZWFrIG9mIGEgZGljdCBpbiB0aGUgdGltZSBtb2R1bGUgd2hlbiB1c2VkIGluIGFuIGVtYmVkZGVkCi0gIGludGVycHJldGVyIHRoYXQgaXMgcmVwZWF0ZWRseSBpbml0aWFsaXplZCBhbmQgc2h1dGRvd24gYW5kIHJlaW5pdGlhbGl6ZWQuCi0KLS0gSXNzdWUgIzE2MDEyOiBGaXggYSByZWdyZXNzaW9uIGluIHB5ZXhwYXQuIFRoZSBwYXJzZXIncyBVc2VGb3JlaWduRFREKCkKLSAgbWV0aG9kIGRvZXNuJ3QgcmVxdWlyZSBhbiBhcmd1bWVudCBhZ2Fpbi4KLQotLSBJc3N1ZSAjMTU2NzY6IE5vdyAibW1hcCIgY2hlY2sgZm9yIGVtcHR5IGZpbGVzIGJlZm9yZSBkb2luZyB0aGUKLSAgb2Zmc2V0IGNoZWNrLiAgUGF0Y2ggYnkgU3RldmVuIFdpbGxpcy4KLQotLSBJc3N1ZSAjNjQ5MzogQW4gaXNzdWUgaW4gY3R5cGVzIG9uIFdpbmRvd3MgdGhhdCBjYXVzZWQgc3RydWN0dXJlIGJpdGZpZWxkcwotICBvZiB0eXBlIGN0eXBlcy5jX3VpbnQzMiBhbmQgd2lkdGggMzIgdG8gaW5jb3JyZWN0bHkgYmUgc2V0IGhhcyBiZWVuIGZpeGVkLgotCi0tIElzc3VlICMxNTAwMDogU3VwcG9ydCB0aGUgInVuaXF1ZSIgeDMyIGFyY2hpdGVjdHVyZSBpbiBfcG9zaXhzdWJwcm9jZXNzLmMuCi0KLS0gSXNzdWUgIzkwNDE6IEFuIGlzc3VlIGluIGN0eXBlcy5jX2xvbmdkb3VibGUsIGN0eXBlcy5jX2RvdWJsZSwgYW5kCi0gIGN0eXBlcy5jX2Zsb2F0IHRoYXQgY2F1c2VkIGFuIGluY29ycmVjdCBleGNlcHRpb24gdG8gYmUgcmV0dXJuZWQgaW4gdGhlCi0gIGNhc2Ugb2Ygb3ZlcmZsb3cgaGFzIGJlZW4gZml4ZWQuCi0KLS0gSXNzdWUgIzE0MjEyOiBUaGUgcmUgbW9kdWxlIGRpZG4ndCByZXRhaW4gYSByZWZlcmVuY2UgdG8gYnVmZmVycyBpdCB3YXMKLSAgc2Nhbm5pbmcsIHJlc3VsdGluZyBpbiBzZWdmYXVsdHMuCi0KIFRlc3RzCiAtLS0tLQogCiAtIElzc3VlICMxMTk2MzogcmVtb3ZlIGh1bWFuIHZlcmlmaWNhdGlvbiBmcm9tIHRlc3RfcGFyc2VyIGFuZCB0ZXN0X3N1YnByb2Nlc3MuCiAKIC0gSXNzdWUgIzExNzMyOiBhZGQgYSBuZXcgc3VwcHJlc3NfY3Jhc2hfcG9wdXAoKSBjb250ZXh0IG1hbmFnZXIgdG8gdGVzdC5zdXBwb3J0Ci0gIHRoYXQgZGlzYWJsZXMgY3Jhc2ggcG9wdXBzIG9uIFdpbmRvd3MgYW5kIHVzZSBpdCBpbiB0ZXN0X2NhcGkuCisgIHRoYXQgZGlzYWJsZXMgY3Jhc2ggcG9wdXBzIG9uIFdpbmRvd3MgYW5kIHVzZSBpdCBpbiB0ZXN0X2ZhdWx0aGFuZGxlciBhbmQKKyAgdGVzdF9jYXBpLgogCiAtIElzc3VlICMxMzg5ODogdGVzdF9zc2wgbm8gbG9uZ2VyIHByaW50cyBhIHNwdXJpb3VzIHN0YWNrIHRyYWNlIG9uIFVidW50dS4KIApAQCAtOTcxLDY3ICs2NjIsODkgQEAKIC0gSXNzdWUgIzE3MDQxOiBGaXggdGVzdGluZyB3aGVuIFB5dGhvbiBpcyBjb25maWd1cmVkIHdpdGggdGhlCiAgIC0td2l0aG91dC1kb2Mtc3RyaW5ncy4KIAorLSBJc3N1ZSAjMTY5MjM6IEZpeCBSZXNvdXJjZVdhcm5pbmdzIGluIHRlc3Rfc3NsLgorCiAtIElzc3VlICMxNTUzOTogQWRkZWQgcmVncmVzc2lvbiB0ZXN0cyBmb3IgVG9vbHMvc2NyaXB0cy9waW5kZW50LnB5LgogCistIElzc3VlICMxNzA2NjogdGVzdF9yb2JvdHBhcnNlciBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNzMzNDogdGVzdF9pbmRleCBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNzMzMzogdGVzdF9pbWFwbGliIG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgorICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCisKKy0gSXNzdWUgIzE3MDgyOiB0ZXN0X2RibSogbm93IHdvcmsgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNzA3OTogdGVzdF9jdHlwZXMgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTczMDQ6IHRlc3RfaGFzaCBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNzMwMzogdGVzdF9mdXR1cmUqIG5vdyB3b3JrIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTcxNjM6IHRlc3RfZmlsZSBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKyAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNjkyNTogdGVzdF9jb25maWdwYXJzZXIgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTY5MTg6IHRlc3RfY29kZWNzIG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgorICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCisKKy0gSXNzdWUgIzE2OTE5OiB0ZXN0X2NyeXB0IG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgorICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCisKKy0gSXNzdWUgIzE2OTEwOiB0ZXN0X2J5dGVzLCB0ZXN0X3VuaWNvZGUsIGFuZCB0ZXN0X3VzZXJzdHJpbmcgbm93IHdvcmsgd2l0aAorICB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4gIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTY5MDU6IHRlc3Rfd2FybmluZ3Mgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIEluaXRpYWwgcGF0Y2ggYnkgQmVya2VyIFBla3NhZy4KKworLSBJc3N1ZSAjMTY4OTg6IHRlc3RfYnVmaW8gbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTY4ODg6IHRlc3RfYXJyYXkgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTY4OTY6IHRlc3RfYXN5bmNvcmUgbm93IHdvcmtzIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTY4OTc6IHRlc3RfYmlzZWN0IG5vdyB3b3JrcyB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgorICBJbml0aWFsIHBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMTY4NTI6IHRlc3RfZ2VuZXJpY3BhdGgsIHRlc3RfcG9zaXhwYXRoLCB0ZXN0X250cGF0aCwgYW5kIHRlc3RfbWFjcGF0aAorICBub3cgd29yayB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LiAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCistIElzc3VlICMxNjc0ODogdGVzdF9oZWFwcSBub3cgd29ya3Mgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKwogLSBJc3N1ZSAjMTUzMjQ6IEZpeCByZWdydGVzdCBwYXJzaW5nIG9mIC0tZnJvbWZpbGUsIC0tbWF0Y2gsIGFuZCAtLXJhbmRvbWl6ZQogICBvcHRpb25zLgogCiAtIElzc3VlICMxNjY2NDogQWRkIHJlZ3Jlc3Npb24gdGVzdHMgZm9yIGdsb2IncyBiZWhhdmlvdXIgY29uY2VybmluZyBlbnRyaWVzCiAgIHN0YXJ0aW5nIHdpdGggYSAiLiIuICBQYXRjaCBieSBTZWJhc3RpYW4gS3JlZnQuCiAKLS0gSXNzdWUgIzE1ODcyOiBBZGQgdGVzdHMgZm9yIGEgMy4zIHJlZ3Jlc3Npb24gd2hpY2ggY2F1c2VkIHRoZSBuZXcgZmQtYmFzZWQKLSAgc2h1dGlsLnJtdHJlZSBub3QgaWdub3JlIGFsbCBlcnJvcnMuIEFsc28gYWRkIGEgdGVzdCBlbnN1cmluZyB0aGF0IHJtdHJlZQotICBmYWlscyB3aGVuIGJlaW5nIGNhbGxlZCBvbiBhIHN5bWxpbmsuIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KIC0gSXNzdWUgIzE2NTU5OiBBZGQgbW9yZSB0ZXN0cyBmb3IgdGhlIGpzb24gbW9kdWxlLCBpbmNsdWRpbmcgc29tZSBmcm9tIHRoZQogICBvZmZpY2lhbCB0ZXN0IHN1aXRlIGF0IGpzb24ub3JnLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjMTUzMDQ6IEZpeCB3YXJuaW5nIG1lc3NhZ2Ugd2hlbiBvcy5jaGRpcigpIGZhaWxzIGluc2lkZQotICB0ZXN0LnN1cHBvcnQudGVtcF9jd2QoKS4gIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgorLSBJc3N1ZSAjMTY2NjE6IEZpeCB0aGUgYG9zLmdldGdyb3VwbGlzdCgpYCB0ZXN0IGJ5IG5vdCBhc3N1bWluZyB0aGF0IGl0IGdpdmVzCisgIHRoZSBzYW1lIG91dHB1dCBhcyA6Y29tbWFuZDpgaWQgLUdgLgogCi0tIElzc3VlICMxNTgwMjogRml4IHRlc3QgbG9naWMgaW4gVGVzdE1haWxkaXIudGVzdF9jcmVhdGVfdG1wLiBQYXRjaAotICBieSBTZXJoaXkgU3RvcmNoYWthLgorLSBJc3N1ZSAjMTYxMTU6IEFkZCBzb21lIHRlc3RzIGZvciB0aGUgZXhlY3V0YWJsZSBhcmd1bWVudCB0bworICBzdWJwcm9jZXNzLlBvcGVuKCkuICBJbml0aWFsIHBhdGNoIGJ5IEt1c2hhbCBEYXMuCiAKLS0gSXNzdWUgIzE1NzQ3OiBaRlMgYWx3YXlzIHJldHVybnMgRU9QTk9UU1VQUCB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IHRoZQotICBVRl9JTU1VVEFCTEUgZmxhZyAodmlhIGVpdGhlciBjaGZsYWdzIG9yIGxjaGZsYWdzKTsgcmVmYWN0b3IgYWZmZWN0ZWQKLSAgdGVzdHMgaW4gdGVzdF9wb3NpeC5weSB0byBhY2NvdW50IGZvciB0aGlzLgorLSBJc3N1ZSAjMTUzMDQ6IEZpeCB3YXJuaW5nIG1lc3NhZ2Ugd2hlbiBgb3MuY2hkaXIoKWAgZmFpbHMgaW5zaWRlCisgIGB0ZXN0LnN1cHBvcnQudGVtcF9jd2QoKWAuICBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KIAotLSBJc3N1ZSAjMTUyODU6IFJlZmFjdG9yIHRoZSBhcHByb2FjaCBmb3IgdGVzdGluZyBjb25uZWN0IHRpbWVvdXRzIHVzaW5nCi0gIHR3byBleHRlcm5hbCBob3N0cyB0aGF0IGhhdmUgYmVlbiBjb25maWd1cmVkIHNwZWNpZmljYWxseSBmb3IgdGhpcyB0eXBlCi0gIG9mIHRlc3QuCistIElzc3VlICMxNTgwMjogRml4IHRlc3QgbG9naWMgaW4gYFRlc3RNYWlsZGlyLnRlc3RfY3JlYXRlX3RtcCgpYC4gUGF0Y2ggYnkKKyAgU2VyaGl5IFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjMTU2MTU6IEFkZCBzb21lIHRlc3RzIGZvciB0aGUganNvbiBtb2R1bGUncyBoYW5kbGluZyBvZiBpbnZhbGlkCi0gIGlucHV0IGRhdGEuICBQYXRjaCBieSBLdXNoYWwgRGFzLgotCi0tIElzc3VlICMxNTQ5NjogQWRkIGRpcmVjdG9yeSByZW1vdmFsIGhlbHBlcnMgZm9yIHRlc3RzIG9uIFdpbmRvd3MuCi0gIFBhdGNoIGJ5IEplcmVteSBLbG90aC4KLQotLSBJc3N1ZSAjMTU0Njc6IE1vdmUgaGVscGVycyBmb3IgX19zaXplb2ZfXyB0ZXN0cyBpbnRvIHRlc3Rfc3VwcG9ydC4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTUzMjA6IE1ha2UgaXRlcmF0aW5nIHRoZSBsaXN0IG9mIHRlc3RzIHRocmVhZC1zYWZlIHdoZW4gcnVubmluZwotICB0ZXN0cyBpbiBtdWx0aXByb2Nlc3MgbW9kZS4gUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCi0KLS0gSXNzdWUgIzE1MjMwOiBBZG9wdGVkIGEgbW9yZSBzeXN0ZW1hdGljIGFwcHJvYWNoIGluIHRoZSBydW5weSB0ZXN0cwotCi0tIElzc3VlICMxNTMwMDogRW5zdXJlIHRoZSB0ZW1wb3JhcnkgdGVzdCB3b3JraW5nIGRpcmVjdG9yaWVzIGFyZSBpbiB0aGUgc2FtZQotICBwYXJlbnQgZm9sZGVyIHdoZW4gcnVubmluZyB0ZXN0cyBpbiBtdWx0aXByb2Nlc3MgbW9kZSBmcm9tIGEgUHl0aG9uIGJ1aWxkLgotICBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KLQotLSB0ZXN0X25udHBsaWIgbm93IHRvbGVyYXRlcyBiZWluZyBydW4gZnJvbSBiZWhpbmQgTk5UUCBnYXRld2F5cyB0aGF0IGFkZAotICAiWC1BbnRpdmlydXMiIGhlYWRlcnMgdG8gYXJ0aWNsZXMKLQotLSBJc3N1ZSAjMTUwNDM6IHRlc3RfZ2RiIGlzIG5vdyBza2lwcGVkIGVudGlyZWx5IGlmIGdkYiBzZWN1cml0eSBzZXR0aW5ncwotICBibG9jayBsb2FkaW5nIG9mIHRoZSBnZGIgaG9va3MKLQotLSBJc3N1ZSAjMTQwMjY6IEluIHRlc3RfY21kX2xpbmVfc2NyaXB0LCBjaGVjayB0aGF0IHN5cy5hcmd2IGlzIHBvcHVsYXRlZAotICBjb3JyZWN0bHkgZm9yIHRoZSB2YXJpb3VzIGludm9jYXRpb24gYXBwcm9hY2hlcyAoUGF0Y2ggYnkgSmFzb24gWWVvKQotCi0tIElzc3VlICMxNDAzMjogRml4IGluY29ycmVjdCB2YXJpYWJsZSBuYW1lIGluIHRlc3RfY21kX2xpbmVfc2NyaXB0IGRlYnVnZ2luZwotICBtZXNzYWdlIChQYXRjaCBieSBKYXNvbiBZZW8pCi0KLS0gSXNzdWUgIzE0NTg5OiBVcGRhdGUgY2VydGlmaWNhdGUgY2hhaW4gZm9yIHNoYTI1Ni50YnMtaW50ZXJuZXQuY29tLCBmaXhpbmcKLSAgYSB0ZXN0IGZhaWx1cmUgaW4gdGVzdF9zc2wuCistIElzc3VlICMxNTU1NzogQWRkIGEgdGVzdCBzdWl0ZSBmb3IgdGhlIGB3ZWJicm93c2VyYCBtb2R1bGUsIHRoYW5rcyB0byBBbnRvbgorICBCYXJrb3Zza3kuCiAKIC0gSXNzdWUgIzE2Njk4OiBTa2lwIHBvc2l4IHRlc3RfZ2V0Z3JvdXBzIHdoZW4gYnVpbHQgd2l0aCBPUyBYCiAgIGRlcGxveW1lbnQgdGFyZ2V0IHByaW9yIHRvIDEwLjYuCkBAIC0xMDQyLDggKzc1NSwxNyBAQAogLSBJc3N1ZSAjNTAzMzogRml4IGJ1aWxkaW5nIG9mIHRoZSBzcWxpdGUzIGV4dGVuc2lvbiBtb2R1bGUgd2hlbiB0aGUKICAgU1FMaXRlIGxpYnJhcnkgdmVyc2lvbiBoYXMgImJldGEiIGluIGl0LiBQYXRjaCBieSBBbmRyZWFzIFBlbG1lLgogCistIElzc3VlICMxNzIyODogRml4IGJ1aWxkaW5nIHdpdGhvdXQgcHltYWxsb2MuCisKKy0gSXNzdWUgIzM3MTg6IFVzZSBBQ19BUkdfVkFSIHRvIHNldCBNQUNIREVQIGluIGNvbmZpZ3VyZS5hYy4KKworLSBJc3N1ZSAjMTcwMzE6IEZpeCBydW5uaW5nIHJlZ2VuIGluIGNyb3NzIGJ1aWxkcy4KKwogLSBJc3N1ZSAjMzc1NDogZml4IHR5cG8gaW4gcHRocmVhZCBBQ19DQUNIRV9WQUwuCiAKKy0gSXNzdWUgIzE1NDg0OiBGaXggX1BZVEhPTl9QUk9KRUNUX0JBU0UgZm9yIHNyY2RpciAhPSBidWlsZGRpciBidWlsZHM7CisgIHVzZSBfUFlUSE9OX1BST0pFQ1RfQkFTRSBpbiBkaXN0dXRpbHMvc3lzY29uZmlnLnB5LgorCiAtIElzc3VlICMxNzAyOTogTGV0IGgycHkgc2VhcmNoIHRoZSBtdWx0aWFyY2ggc3lzdGVtIGluY2x1ZGUgZGlyZWN0b3J5LgogCiAtIElzc3VlICMxNjk1MzogRml4IHNvY2tldCBtb2R1bGUgY29tcGlsYXRpb24gb24gcGxhdGZvcm1zIHdpdGgKQEAgLTEwNTEsNDQgKzc3MywyOCBAQAogCiAtIElzc3VlICMxNjgzNjogRW5hYmxlIElQdjYgc3VwcG9ydCBldmVuIGlmIElQdjYgaXMgZGlzYWJsZWQgb24gdGhlIGJ1aWxkIGhvc3QuCiAKKy0gQ3Jvc3MgY29tcGlsaW5nIG5lZWRzIGhvc3QgYW5kIGJ1aWxkIHNldHRpbmdzLiBjb25maWd1cmUgbm8gbG9uZ2VyCisgIGNyZWF0ZXMgYSBicm9rZW4gUFlUSE9OX0ZPUl9CVUlMRCB2YXJpYWJsZSB3aGVuIC0tYnVpbGQgaXMgbWlzc2luZy4KKworLSBGaXggY3Jvc3MgY29tcGlsaW5nIGlzc3VlIGluIHNldHVwLnB5LCBlbnN1cmUgdGhhdCBsaWJfZGlycyBhbmQgaW5jX2RpcnMgYXJlCisgIGRlZmluZWQgaW4gY3Jvc3MgY29tcGlsaW5nIG1vZGUsIHRvby4KKwogLSBJc3N1ZSAjMTY1OTM6IEhhdmUgQlNEICdtYWtlIC1zJyBkbyB0aGUgcmlnaHQgdGhpbmcsIHRoYW5rcyB0byBEYW5pZWwgU2hhaGFmCiAKIC0gSXNzdWUgIzE2MjYyOiBmaXggb3V0LW9mLXNyYy10cmVlIGJ1aWxkcywgaWYgbWVyY3VyaWFsIGlzIG5vdCBpbnN0YWxsZWQuCiAKLS0gSXNzdWUgIzE1OTIzOiBmaXggYSBtaXN0YWtlIGluIGFzZGxfYy5weSB0aGF0IHJlc3VsdGVkIGluIGEgVHlwZUVycm9yIGFmdGVyCi0gIDI4MDFiZjg3NWEyNCAoc2VlICMxNTgwMSkuCistIElzc3VlICMxNTI5ODogZW5zdXJlIF9zeXNjb25maWdkYXRhIGlzIGdlbmVyYXRlZCBpbiBidWlsZCBkaXJlY3RvcnksIG5vdAorICBzb3VyY2UgZGlyZWN0b3J5LgogCi0tIElzc3VlICMxMTcxNTogRml4IG11bHRpYXJjaCBkZXRlY3Rpb24gd2l0aG91dCBoYXZpbmcgRGViaWFuIGRldmVsb3BtZW50Ci0gIHRvb2xzIChkcGtnLWRldikgaW5zdGFsbGVkLgorLSBJc3N1ZSAjMTU4MzM6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gMy4zIHRoYXQgcmVzdWx0ZWQgaW4gZXhjZXB0aW9ucyBiZWluZworICByYWlzZWQgaWYgaW1wb3J0bGliIGZhaWxlZCB0byB3cml0ZSBieXRlLWNvbXBpbGVkIGZpbGVzLiAgVGhpcyBhZmZlY3RlZAorICBhdHRlbXB0cyB0byBidWlsZCBQeXRob24gb3V0LW9mLXRyZWUgZnJvbSBhIHJlYWQtb25seSBzb3VyY2UgZGlyZWN0b3J5LgogCi0tIElzc3VlICMxNTgxOTogTWFrZSBzdXJlIHdlIGNhbiBidWlsZCBQeXRob24gb3V0LW9mLXRyZWUgZnJvbSBhIHJlYWRvbmx5Ci0gIHNvdXJjZSBkaXJlY3RvcnkuICAoU29tZXdoYXQgcmVsYXRlZCB0byBJc3N1ZSAjOTg2MC4pCistIElzc3VlICMxNTkyMzogRml4IGEgbWlzdGFrZSBpbiBgYGFzZGxfYy5weWBgIHRoYXQgcmVzdWx0ZWQgaW4gYSBUeXBlRXJyb3IKKyAgYWZ0ZXIgMjgwMWJmODc1YTI0IChzZWUgIzE1ODAxKS4KIAotLSBJc3N1ZSAjMTU4MjI6IEVuc3VyZSAydG8zIGdyYW1tYXIgcGlja2xlcyBhcmUgcHJvcGVybHkgaW5zdGFsbGVkLgotCi0tIElzc3VlICMxNTU2MDogRml4IGJ1aWxkaW5nIF9zcWxpdGUzIGV4dGVuc2lvbiBvbiBPUyBYIHdpdGggYW4gU0RLLgotCi0tIElzc3VlICM4ODQ3OiBEaXNhYmxlIENPTURBVCBmb2xkaW5nIGluIFdpbmRvd3MgUEdPIGJ1aWxkcy4KLQotLSBJc3N1ZSAjMTQxOTc6IEZvciBPUyBYIGZyYW1ld29yayBidWlsZHMsIGVuc3VyZSBsaW5rcyB0byB0aGUgc2hhcmVkCi0gIGxpYnJhcnkgYXJlIGNyZWF0ZWQgd2l0aCB0aGUgcHJvcGVyIEFCSSBzdWZmaXguCi0KLS0gSXNzdWUgIzE0NDcyOiBVcGRhdGUgLmdpdGlnbm9yZS4gUGF0Y2ggYnkgTWF0ZWogQ2VwbC4KLQotLSBUaGUgV2luZG93cyBidWlsZCBub3cgdXNlcyBPcGVuU1NMIDEuMC4waiBhbmQgYnppcDIgMS4wLjYuCi0KLS0gSXNzdWUgIzE0NTU3OiBGaXggZXh0ZW5zaW9ucyBidWlsZCBvbiBIUC1VWC4gUGF0Y2ggYnkgQWRpIFJvaWJhbi4KLQotLSBJc3N1ZSAjMTQ0Mzc6IEZpeCBidWlsZGluZyB0aGUgX2lvIG1vZHVsZSB1bmRlciBDeWd3aW4uCi0KLS0gSXNzdWUgIzE0Mzg3OiBEbyBub3QgaW5jbHVkZSBhY2N1LmggZnJvbSBQeXRob24uaC4KLQotLSBJc3N1ZSAjMTQzNTk6IE9ubHkgdXNlIE9fQ0xPRVhFQyBpbiBfcG9zaXhtb2R1bGUuYyBpZiBpdCBpcyBkZWZpbmVkLgotICBCYXNlZCBvbiBwYXRjaCBmcm9tIEhlcnbDqSBDb2F0YW5oYXkuCi0KLS0gSXNzdWUgIzE0MDE4OiBGaXggT1MgWCBUY2wvVGsgZnJhbWV3b3JrIGNoZWNraW5nIHdoZW4gdXNpbmcgT1MgWCBTREtzLgotCi0tIElzc3VlICMxNjI1NjogT1MgWCBpbnN0YWxsZXIgbm93IHNldHMgY29ycmVjdCBwZXJtaXNzaW9ucyBmb3IgZG9jIGRpcmVjdG9yeS4KKy0gSXNzdWUgIzE1ODE5OiBNYWtlIHN1cmUgd2UgY2FuIGJ1aWxkIFB5dGhvbiBvdXQtb2YtdHJlZSBmcm9tIGEgcmVhZC1vbmx5CisgIHNvdXJjZSBkaXJlY3RvcnkuICAoU29tZXdoYXQgcmVsYXRlZCB0byBpc3N1ZSAjOTg2MC4pCiAKIC0gSXNzdWUgIzE1NTg3OiBFbmFibGUgVGsgaGlnaC1yZXNvbHV0aW9uIHRleHQgcmVuZGVyaW5nIG9uIE1hY3Mgd2l0aAogICBSZXRpbmEgZGlzcGxheXMuICBBcHBsaWVzIHRvIFRraW50ZXIgYXBwcywgc3VjaCBhcyBJRExFLCBvbiBPUyBYCkBAIC0xMTA1LDYgKzgxMSwxMiBAQAogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMxNjY0Mjogc2NoZWQuc2NoZWR1bGVyIHRpbWVmdW5jIGluaXRpYWwgZGVmYXVsdCBpcyB0aW1lLm1vbm90b25pYy4KKyAgUGF0Y2ggYnkgUmFtY2hhbmRyYSBBcHRlCisKKy0gSXNzdWUgIzE1NDY1OiBEb2N1bWVudCB0aGUgdmVyc2lvbmluZyBtYWNyb3MgaW4gdGhlIEMgQVBJIGRvY3MgcmF0aGVyIHRoYW4KKyAgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9jcy4gUGF0Y2ggYnkgS3VzaGFsIERhcy4KKwogLSBJc3N1ZSAjMTY0MDY6IENvbWJpbmUgdGhlIHBhZ2VzIGZvciB1cGxvYWRpbmcgYW5kIHJlZ2lzdGVyaW5nIHRvIFB5UEkuCiAKIC0gSXNzdWUgIzE2NDAzOiBEb2N1bWVudCBob3cgZGlzdHV0aWxzIHVzZXMgdGhlIG1haW50YWluZXIgZmllbGQgaW4KQEAgLTExMjUsMTAgKzgzNywyMiBAQAogLSBJc3N1ZSAjMTQ5MDE6IFVwZGF0ZSBwb3J0aW9ucyBvZiB0aGUgV2luZG93cyBGQVEuCiAgIFBhdGNoIGJ5IEFzaGlzaCBOaXRpbiBQYXRpbC4KIAorLSBJc3N1ZSAjMTYyNjc6IEJldHRlciBkb2N1bWVudCB0aGUgMy4zKyBhcHByb2FjaCB0byBjb21iaW5pbmcKKyAgQGFic3RyYWN0bWV0aG9kIHdpdGggQHN0YXRpY21ldGhvZCwgQGNsYXNzbWV0aG9kIGFuZCBAcHJvcGVydHkKKworLSBJc3N1ZSAjMTUyMDk6IENsYXJpZnkgZXhjZXB0aW9uIGNoYWluaW5nIGRlc2NyaXB0aW9uIGluIGV4Y2VwdGlvbnMgbW9kdWxlCisgIGRvY3VtZW50YXRpb24KKwogLSBJc3N1ZSAjMTU5OTA6IEltcHJvdmUgYXJndW1lbnQvcGFyYW1ldGVyIGRvY3VtZW50YXRpb24uCiAKKy0gSXNzdWUgIzE2MjA5OiBNb3ZlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgc3RyIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGEgbmV3CisgIHN0ciBjbGFzcyBlbnRyeSBpbiB0aGUgIlRleHQgU2VxdWVuY2UgVHlwZSIgc2VjdGlvbi4KKwogLSBJc3N1ZSAjMTM1Mzg6IEltcHJvdmUgc3RyKCkgYW5kIG9iamVjdC5fX3N0cl9fKCkgZG9jdW1lbnRhdGlvbi4KIAorLSBJc3N1ZSAjMTY0ODk6IE1ha2UgaXQgY2xlYXJlciB0aGF0IGltcG9ydGxpYi5maW5kX2xvYWRlcigpIHJlcXVpcmVzIGFueSBhbmQKKyAgYWxsIHBhY2thZ2VzIHRvIGJlIHNlcGFyYXRlbHkgaW1wb3J0ZWQuCisKIC0gSXNzdWUgIzE2NDAwOiBVcGRhdGUgdGhlIGRlc2NyaXB0aW9uIG9mIHdoaWNoIHZlcnNpb25zIG9mIGEgZ2l2ZW4gcGFja2FnZQogICBQeVBJIGRpc3BsYXlzLgogCkBAIC0xMTM4LDUzICs4NjIsMjggQEAKIC0gSXNzdWUgIzgwNDA6IGFkZGVkIGEgdmVyc2lvbiBzd2l0Y2hlciB0byB0aGUgZG9jdW1lbnRhdGlvbi4gIFBhdGNoIGJ5CiAgIFl1cnkgU2VsaXZhbm92LgogCistIEFkZGl0aW9uYWwgY29tbWVudHMgYW5kIHNvbWUgc3R5bGUgY2hhbmdlcyBpbiB0aGUgY29uY3VycmVudC5mdXR1cmVzIFVSTAorICByZXRyaWV2YWwgZXhhbXBsZQorCiAtIElzc3VlICMxNjExNTogSW1wcm92ZSBzdWJwcm9jZXNzLlBvcGVuKCkgZG9jdW1lbnRhdGlvbiBhcm91bmQgYXJncywgc2hlbGwsCiAgIGFuZCBleGVjdXRhYmxlIGFyZ3VtZW50cy4KIAotLSBJc3N1ZSAjMTM0OTg6IENsYXJpZnkgZG9jcyBvZiBvcy5tYWtlZGlycygpJ3MgZXhpc3Rfb2sgYXJndW1lbnQuICBEb25lIHdpdGgKLSAgZ3JlYXQgbmF0aXZlLXNwZWFrZXIgaGVscCBmcm9tIFIuIERhdmlkIE11cnJheS4KLQotLSBJc3N1ZSAjMTU1MzM6IENsYXJpZnkgZG9jcyBhbmQgYWRkIHRlc3RzIGZvciBzdWJwcm9jZXNzLlBvcGVuKCkncyBjd2QKKy0gSXNzdWUgIzE1NTMzOiBDbGFyaWZ5IGRvY3MgYW5kIGFkZCB0ZXN0cyBmb3IgYHN1YnByb2Nlc3MuUG9wZW4oKWAncyBjd2QKICAgYXJndW1lbnQuCiAKIC0gSXNzdWUgIzE1OTc5OiBJbXByb3ZlIHRpbWVpdCBkb2N1bWVudGF0aW9uLgogCi0tIElzc3VlICMxNjAzNjogSW1wcm92ZSBkb2N1bWVudGF0aW9uIG9mIGJ1aWx0LWluIGludCgpJ3Mgc2lnbmF0dXJlIGFuZAorLSBJc3N1ZSAjMTYwMzY6IEltcHJvdmUgZG9jdW1lbnRhdGlvbiBvZiBidWlsdC1pbiBgaW50KClgJ3Mgc2lnbmF0dXJlIGFuZAogICBhcmd1bWVudHMuCiAKLS0gSXNzdWUgIzE1OTM1OiBDbGFyaWZpY2F0aW9uIG9mIGFyZ3BhcnNlIGRvY3MsIHJlOiBhZGRfYXJndW1lbnQoKSB0eXBlIGFuZAorLSBJc3N1ZSAjMTU5MzU6IENsYXJpZmljYXRpb24gb2YgYGFyZ3BhcnNlYCBkb2NzLCByZTogYWRkX2FyZ3VtZW50KCkgdHlwZSBhbmQKICAgZGVmYXVsdCBhcmd1bWVudHMuICBQYXRjaCBjb250cmlidXRlZCBieSBDaHJpcyBKZXJkb25lay4KIAogLSBJc3N1ZSAjMTE5NjQ6IERvY3VtZW50IGEgY2hhbmdlIGluIHYzLjIgdG8gdGhlIGJlaGF2aW9yIG9mIHRoZSBpbmRlbnQKICAgcGFyYW1ldGVyIG9mIGpzb24gZW5jb2Rpbmcgb3BlcmF0aW9ucy4KIAotLSBJc3N1ZSAjMTQ2NzQ6IEFkZCBhIGRpc2N1c3Npb24gb2YgdGhlIGpzb24gbW9kdWxlJ3Mgc3RhbmRhcmQgY29tcGxpYW5jZS4KLSAgUGF0Y2ggYnkgQ2hyaXMgUmViZXJ0LgotCi0tIElzc3VlICMxNTYzMDogQWRkIGFuIGV4YW1wbGUgZm9yICJjb250aW51ZSIgc3RtdCBpbiB0aGUgdHV0b3JpYWwuIFBhdGNoIGJ5Ci0gIERhbmllbCBFbGxpcy4KLQotLSBJc3N1ZSAjMTU0NDQ6IFVzZSBwcm9wZXIgc3BlbGxpbmcgZm9yIG5vbi1BU0NJSSBjb250cmlidXRvciBuYW1lcy4gIFBhdGNoCi0gIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NDgyOiBQcm9wZXJseSBkb2N1bWVudCB0aGUgZGVmYXVsdCAnbGV2ZWwnIHZhbHVlIGZvciBfX2ltcG9ydF9fKCkKLSAgd2hpbGUgd2FybmluZyBhYm91dCB1c2luZyBuZWdhdGl2ZSB2YWx1ZXMuCi0KLS0gSXNzdWUgIzE1MjMwOiBDbGVhcmx5IGRvY3VtZW50IHNvbWUgb2YgdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBydW5weQotICBtb2R1bGUgYW5kIG51ZGdlIHJlYWRlcnMgdG93YXJkcyBpbXBvcnRsaWIgd2hlbiBhcHByb3ByaWF0ZS4KLQotLSBJc3N1ZSAjMTM1NTc6IENsYXJpZnkgZWZmZWN0IG9mIGdpdmluZyB0d28gZGlmZmVyZW50IG5hbWVzcGFjZXMgdG8gZXhlYyBvcgotICBleGVjZmlsZSgpLgotCi0tIElzc3VlICM4Nzk5OiBGaXggYW5kIGltcHJvdmUgdGhlIHRocmVhZGluZy5Db25kaXRpb24gZG9jdW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjMTQ5NDM6IENvcnJlY3QgYSBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlIGZvciB3aW5yZWcuT3BlbktleQotICBhbmQgY29ycmVjdGx5IGxpc3QgdGhlIGFyZ3VtZW50IG5hbWVzIGluIHRoZSBmdW5jdGlvbidzIGV4cGxhbmF0aW9uLgotCi0tIElzc3VlICMxNDAzNDogYWRkZWQgdGhlIGFyZ3BhcnNlIHR1dG9yaWFsLgotCi0tIElzc3VlICMxNTI1MDogRG9jdW1lbnQgdGhhdCBmaWxlY21wLmRpcmNtcCBjb21wYXJlcyBmaWxlcyBzaGFsbG93bHkuIFBhdGNoCi0gIGNvbnRyaWJ1dGVkIGJ5IENocmlzIEplcmRvbmVrLgorLSBJc3N1ZSAjMTUxMTY6IFJlbW92ZSByZWZlcmVuY2VzIHRvIGFwcHNjcmlwdCBhcyBpdCBpcyBubyBsb25nZXIgYmVpbmcKKyAgc3VwcG9ydGVkLgogCiAtIElzc3VlICMxNTExNjogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYXBwc2NyaXB0IGFzIGl0IGlzIG5vIGxvbmdlciBiZWluZwogICBzdXBwb3J0ZWQuCkBAIC0xMTk5LDU4ICs4OTgsMTc4MCBAQAogCiAtIElzc3VlICMxNTM3ODogRml4IFRvb2xzL3VuaWNvZGUvY29tcGFyZWNvZGVjcy5weS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKLS0gSXNzdWUgIzE0Njk1OiBGaXggbWlzc2luZyBzdXBwb3J0IGZvciBzdGFycmVkIGFzc2lnbm1lbnRzIGluCi0gIFRvb2xzL3BhcnNlci91bnBhcnNlLnB5LgogCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4zPworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjA/CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotKlJlbGVhc2UgZGF0ZTogMTAtQXByLTIwMTIqCisqUmVsZWFzZSBkYXRlOiAyOS1TZXAtMjAxMioKIAotQnVpbGQKLS0tLS0tCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMTQzODc6IFdvcmsgYXJvdW5kIGEgcHJvYmxlbSBidWlsZGluZyBleHRlbnNpb24gbW9kdWxlcyB1bmRlciBXaW5kb3dzCi0gIGJ5IHVuZGVmaW5pbmcgYGBzbWFsbGBgIGJlZm9yZSB1c2UgaW4gdGhlIFB5dGhvbiBoZWFkZXJzLgorLSBJc3N1ZSAjMTYwNDY6IEZpeCBsb2FkaW5nIHNvdXJjZWxlc3MgbGVnYWN5IC5weW8gZmlsZXMuCisKKy0gSXNzdWUgIzE2MDYwOiBGaXggcmVmY291bnRpbmcgYnVnIHdoZW4gYF9fdHJ1bmNfXygpYCByZXR1cm5zIGFuIG9iamVjdCB3aG9zZQorICBgX19pbnRfXygpYCBnaXZlcyBhIG5vbi1pbnRlZ2VyLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE2MDEyOiBGaXggYSByZWdyZXNzaW9uIGluIHB5ZXhwYXQuIFRoZSBwYXJzZXIncyBgVXNlRm9yZWlnbkRURCgpYAorICBtZXRob2QgZG9lc24ndCByZXF1aXJlIGFuIGFyZ3VtZW50IGFnYWluLgogCiAKLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4zIHJlbGVhc2UgY2FuZGlkYXRlIDI/CitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBSZWxlYXNlIENhbmRpZGF0ZSAzPwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotKlJlbGVhc2UgZGF0ZTogMTgtTWFyLTIwMTIqCisqUmVsZWFzZSBkYXRlOiAyMy1TZXAtMjAxMioKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE1OTAwOiBGaXggcmVmZXJlbmNlIGxlYWsgaW4gYFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKClgLgorCistIElzc3VlICMxNTkyNjogRml4IGNyYXNoIGFmdGVyIG11bHRpcGxlIHJlaW5pdGlhbGl6YXRpb25zIG9mIHRoZSBpbnRlcnByZXRlci4KKworLSBJc3N1ZSAjMTU4OTU6IEZpeCBGSUxFIHBvaW50ZXIgbGVhayBpbiBvbmUgZXJyb3IgYnJhbmNoIG9mCisgIGBQeVJ1bl9TaW1wbGVGaWxlRXhGbGFncygpYCB3aGVuIGZpbGVuYW1lIHBvaW50cyB0byBhIHB5Yy9weW8gZmlsZSwgY2xvc2VpdCBpcworICBmYWxzZSBhbiBhbmQgc2V0X21haW5fbG9hZGVyKCkgZmFpbHMuCisKKy0gRml4ZXMgZm9yIGEgZmV3IGNyYXNoIGFuZCBtZW1vcnkgbGVhayByZWdyZXNzaW9ucyBmb3VuZCBieSBDb3Zlcml0eS4KIAogTGlicmFyeQogLS0tLS0tLQogCi0tIElzc3VlICM2ODg0OiBGaXggbG9uZy1zdGFuZGluZyBidWdzIHdpdGggTUFOSUZFU1QuaW4gcGFyc2luZyBpbiBkaXN0dXRpbHMKLSAgb24gV2luZG93cy4KKy0gSXNzdWUgIzE1ODgyOiBDaGFuZ2UgYF9kZWNpbWFsYCB0byBhY2NlcHQgYW55IGNvZWZmaWNpZW50IHR1cGxlIHdoZW4KKyAgY29uc3RydWN0aW5nIGluZmluaXRpZXMuIFRoaXMgaXMgZG9uZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aAorICBkZWNpbWFsLnB5OiBJbmZpbml0eSBjb2VmZmljaWVudHMgYXJlIHVuZGVmaW5lZCBpbiBfZGVjaW1hbCAoaW4gYWNjb3JkYW5jZQorICB3aXRoIHRoZSBzcGVjaWZpY2F0aW9uKS4KKworLSBJc3N1ZSAjMTU5MjU6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gYGVtYWlsLnV0aWxgIHdoZXJlIHRoZSBgcGFyc2VkYXRlKClgIGFuZAorICBgcGFyc2VkYXRlX3R6KClgIGZ1bmN0aW9ucyBkaWQgbm90IHJldHVybiBOb25lIGFueW1vcmUgd2hlbiB0aGUgYXJndW1lbnQgY291bGQKKyAgbm90IGJlIHBhcnNlZC4KIAogRXh0ZW5zaW9uIE1vZHVsZXMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzE1OTczOiBGaXggYSBzZWdtZW50YXRpb24gZmF1bHQgd2hlbiBjb21wYXJpbmcgZGF0ZXRpbWUgdGltZXpvbmUKKyAgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTU5Nzc6IEZpeCBtZW1vcnkgbGVhayBpbiBNb2R1bGVzL19zc2wuYyB3aGVuIHRoZSBmdW5jdGlvbgorICBfc2V0X25wbl9wcm90b2NvbHMoKSBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIHRoYW5rcyB0byBEYW5pZWwgU29tbWVybWFubi4KKworLSBJc3N1ZSAjMTU5Njk6IGBmYXVsdGhhbmRsZXJgIG1vZHVsZTogcmVuYW1lIGR1bXBfdHJhY2ViYWNrc19sYXRlcigpIHRvCisgIGR1bXBfdHJhY2ViYWNrX2xhdGVyKCkgYW5kIGNhbmNlbF9kdW1wX3RyYWNlYmFja3NfbGF0ZXIoKSB0bworICBjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKS4KKworLSBfZGVjaW1hbCBtb2R1bGU6IHVzZSBvbmx5IEMgODkgc3R5bGUgY29tbWVudHMuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgUmVsZWFzZSBDYW5kaWRhdGUgMj8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDA5LVNlcC0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTM5OTI6IFRoZSB0cmFzaGNhbiBtZWNoYW5pc20gaXMgbm93IHRocmVhZC1zYWZlLiAgVGhpcyBlbGltaW5hdGVzCisgIHNwb3JhZGljIGNyYXNoZXMgaW4gbXVsdGktdGhyZWFkIHByb2dyYW1zIHdoZW4gc2V2ZXJhbCBsb25nIGRlYWxsb2NhdG9yIGNoYWlucworICByYW4gY29uY3VycmVudGx5IGFuZCBpbnZvbHZlZCBzdWJjbGFzc2VzIG9mIGJ1aWx0LWluIGNvbnRhaW5lciB0eXBlcy4KKworLSBJc3N1ZSAjMTU3ODQ6IE1vZGlmeSBgT1NFcnJvcmAuX19zdHJfXygpIHRvIGJldHRlciBkaXN0aW5ndWlzaCBiZXR3ZWVuIGVycm5vCisgIGVycm9yIG51bWJlcnMgYW5kIFdpbmRvd3MgZXJyb3IgbnVtYmVycy4KKworLSBJc3N1ZSAjMTU3ODE6IEZpeCB0d28gc21hbGwgcmFjZSBjb25kaXRpb25zIGluIGltcG9ydCdzIG1vZHVsZSBsb2NraW5nLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzE1ODQ3OiBGaXggYSByZWdyZXNzaW9uIGluIGFyZ3BhcnNlLCB3aGljaCBkaWQgbm90IGFjY2VwdCB0dXBsZXMgYXMKKyAgYXJndW1lbnQgbGlzdHMgYW55bW9yZS4KKworLSBJc3N1ZSAjMTU4Mjg6IFJlc3RvcmUgc3VwcG9ydCBmb3IgQyBleHRlbnNpb25zIGluIGBpbXAubG9hZF9tb2R1bGUoKWAuCisKKy0gSXNzdWUgIzE1MzQwOiBGaXggaW1wb3J0aW5nIHRoZSByYW5kb20gbW9kdWxlIHdoZW4gYGAvZGV2L3VyYW5kb21gYCBjYW5ub3QgYmUKKyAgb3BlbmVkLiAgVGhpcyB3YXMgYSByZWdyZXNzaW9uIGNhdXNlZCBieSB0aGUgaGFzaCByYW5kb21pemF0aW9uIHBhdGNoLgorCistIElzc3VlICMxMDY1MDogRGVwcmVjYXRlIHRoZSB3YXRjaGV4cCBwYXJhbWV0ZXIgb2YgdGhlIGBEZWNpbWFsLnF1YW50aXplKClgCisgIG1ldGhvZC4KKworLSBJc3N1ZSAjMTU3ODU6IE1vZGlmeSBgd2luZG93LmdldF93Y2goKWAgQVBJIG9mIHRoZSBjdXJzZXMgbW9kdWxlOiByZXR1cm4gYQorICBjaGFyYWN0ZXIgZm9yIG1vc3Qga2V5cywgYW5kIGFuIGludGVnZXIgZm9yIHNwZWNpYWwga2V5cywgaW5zdGVhZCBvZiBhbHdheXMKKyAgcmV0dXJuaW5nIGFuIGludGVnZXIuIFNvIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBkaXN0aW5ndWlzaCBzcGVjaWFsIGtleXMgbGlrZQorICBrZXlwYWQga2V5cy4KKworLSBJc3N1ZSAjMTQyMjM6IEZpeCBgd2luZG93LmFkZGNoKClgIG9mIHRoZSBjdXJzZXMgbW9kdWxlIGZvciBzcGVjaWFsIGNoYXJhY3RlcnMKKyAgbGlrZSBjdXJzZXMuQUNTX0hMSU5FOiB0aGUgUHl0aG9uIGZ1bmN0aW9uIGFkZGNoKGludCkgYW5kIGFkZGNoKGJ5dGVzKSBpcyBub3cKKyAgY2FsbGluZyB0aGUgQyBmdW5jdGlvbiB3YWRkY2goKS9tdndhZGRjaCgpIChhcyBpdCB3YXMgZG9uZSBpbiBQeXRob24gMy4yKSwKKyAgaW5zdGVhZCBvZiB3YWRkX3djaCgpL212d2FkZF93Y2goKS4gVGhlIFB5dGhvbiBmdW5jdGlvbiBhZGRjaChzdHIpIGlzIHN0aWxsCisgIGNhbGxpbmcgdGhlIEMgZnVuY3Rpb24gd2FkZF93Y2goKS9tdndhZGRfd2NoKCkgaWYgdGhlIFB5dGhvbiBjdXJzZXMgaXMgbGlua2VkCisgIHRvIGxpYm5jdXJzZXN3LgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTU4MjI6IFJlYWxseSBlbnN1cmUgMnRvMyBncmFtbWFyIHBpY2tsZXMgYXJlIHByb3Blcmx5IGluc3RhbGxlZAorICAocmVwbGFjZXMgZml4ZXMgZm9yIElzc3VlICMxNTY0NSkuCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTU4MTQ6IFRoZSBtZW1vcnl2aWV3IGVuaGFuY2VtZW50cyBpbiAzLjMuMCBhY2NpZGVudGFsbHkgcGVybWl0dGVkIHRoZQorICBoYXNoaW5nIG9mIG11bHRpLWRpbWVuc2lvbmFsIG1lbW9ydmlld3MgYW5kIG1lbW9yeXZpZXdzIHdpdGggbXVsdGktYnl0ZSBpdGVtCisgIGZvcm1hdHMuIFRoZSBpbnRlbmRlZCByZXN0cmljdGlvbnMgaGF2ZSBub3cgYmVlbiBkb2N1bWVudGVkIC0gdGhleSB3aWxsIGJlCisgIGNvcnJlY3RseSBlbmZvcmNlZCBpbiAzLjMuMS4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBSZWxlYXNlIENhbmRpZGF0ZSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjUtQXVnLTIwMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNTU3MzogbWVtb3J5dmlldyBjb21wYXJpc29ucyBhcmUgbm93IHBlcmZvcm1lZCBieSB2YWx1ZSB3aXRoIGZ1bGwKKyAgc3VwcG9ydCBmb3IgYW55IHZhbGlkIHN0cnVjdCBtb2R1bGUgZm9ybWF0IGRlZmluaXRpb24uCisKKy0gSXNzdWUgIzE1MzE2OiBXaGVuIGFuIGl0ZW0gaW4gdGhlIGZyb21saXN0IGZvciBgX19pbXBvcnRfXygpYCBkb2Vzbid0IGV4aXN0LAorICBkb24ndCByYWlzZSBhbiBlcnJvciwgYnV0IGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgYXMgcGFydCBvZiBhbiBpbXBvcnQgZG8KKyAgbGV0IHRoYXQgcHJvcGFnYXRlLgorCistIElzc3VlICMxNTc3ODogRW5zdXJlIHRoYXQgYGBzdHIoSW1wb3J0RXJyb3IobXNnKSlgYCByZXR1cm5zIGEgc3RyIGV2ZW4gd2hlbgorICBtc2cgaXNuJ3QgYSBzdHIuCisKKy0gSXNzdWUgIzIwNTE6IFNvdXJjZSBmaWxlIHBlcm1pc3Npb24gYml0cyBhcmUgb25jZSBhZ2FpbiBjb3JyZWN0bHkgY29waWVkIHRvCisgIHRoZSBjYWNoZWQgYnl0ZWNvZGUgZmlsZS4gKFRoZSBtaWdyYXRpb24gdG8gaW1wb3J0bGliIHJlaW50cm9kdWNlZCB0aGlzCisgIHByb2JsZW0gYmVjYXVzZSB0aGVzZSB3YXMgbm8gcmVncmVzc2lvbiB0ZXN0LiBBIHRlc3QgaGFzIGJlZW4gYWRkZWQgYXMgcGFydCBvZgorICB0aGlzIHBhdGNoKQorCistIElzc3VlICMxNTc2MTogRml4IGNyYXNoIHdoZW4gYGBQWVRIT05FWEVDVVRBQkxFYGAgaXMgc2V0IG9uIE1hYyBPUyBYLgorCistIElzc3VlICMxNTcyNjogRml4IGluY29ycmVjdCBib3VuZHMgY2hlY2tpbmcgaW4gUHlTdGF0ZV9GaW5kTW9kdWxlLiAgUGF0Y2ggYnkKKyAgUm9iaW4gU2NocmVpYmVyLgorCistIElzc3VlICMxNTYwNDogVXBkYXRlIHVzZXMgb2YgYFB5T2JqZWN0X0lzVHJ1ZSgpYCB0byBjaGVjayBmb3IgYW5kIGhhbmRsZQorICBlcnJvcnMgY29ycmVjdGx5LiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTQ4NDY6IGBpbXBvcnRsaWIuRmlsZUZpbmRlcmAgbm93IGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgdGhlIGRpcmVjdG9yeQorICBiZWluZyBzZWFyY2hlZCBpcyByZW1vdmVkIGFmdGVyIGEgcHJldmlvdXMgaW1wb3J0IGF0dGVtcHQuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTMzNzA6IEVuc3VyZSB0aGF0IGN0eXBlcyB3b3JrcyBvbiBNYWMgT1MgWCB3aGVuIFB5dGhvbiBpcyBjb21waWxlZAorICB1c2luZyB0aGUgY2xhbmcgY29tcGlsZXIuCisKKy0gSXNzdWUgIzEzMDcyOiBUaGUgYXJyYXkgbW9kdWxlJ3MgJ3UnIGZvcm1hdCBjb2RlIGlzIG5vdyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlCisgIHJlbW92ZWQgaW4gUHl0aG9uIDQuMC4KKworLSBJc3N1ZSAjMTU1NDQ6IEZpeCBEZWNpbWFsLl9fZmxvYXRfXyB0byB3b3JrIHdpdGggcGF5bG9hZC1jYXJyeWluZyBOYU5zLgorCistIElzc3VlICMxNTc3NjogQWxsb3cgcHl2ZW52IHRvIHdvcmsgaW4gZXhpc3RpbmcgZGlyZWN0b3J5IHdpdGggLS1jbGVhbi4KKworLSBJc3N1ZSAjMTUyNDk6IGVtYWlsJ3MgQnl0ZXNHZW5lcmF0b3Igbm93IGNvcnJlY3RseSBtYW5nbGVzIEZyb20gbGluZXMgKHdoZW4KKyAgcmVxdWVzdGVkKSBldmVuIGlmIHRoZSBib2R5IGNvbnRhaW5zIHVuZGVjb2RhYmxlIGJ5dGVzLgorCistIElzc3VlICMxNTc3NzogRml4IGEgcmVmbGVhayBpbiBfcG9zaXhzdWJwcm9jZXNzLgorCistIElzc3VlICMjNjY1MTk0OiBVcGRhdGUgYGVtYWlsLnV0aWxzLmxvY2FsdGltZWAgdG8gdXNlIGRhdGV0aW1lLmFzdGltZXpvbmUgYW5kCisgIGNvcnJlY3RseSBoYW5kbGUgaGlzdG9yaWMgY2hhbmdlcyBpbiBVVEMgb2Zmc2V0cy4KKworLSBJc3N1ZSAjMTUxOTk6IEZpeCBKYXZhU2NyaXB0J3MgZGVmYXVsdCBNSU1FIHR5cGUgdG8gYXBwbGljYXRpb24vamF2YXNjcmlwdC4KKyAgUGF0Y2ggYnkgQm9odXNsYXYgS2FicmRhLgorCistIElzc3VlICMxMjY0MzogYGNvZGUuSW50ZXJhY3RpdmVDb25zb2xlYCBub3cgcmVzcGVjdHMgYHN5cy5leGNlcHRob29rYCB3aGVuCisgIGRpc3BsYXlpbmcgZXhjZXB0aW9ucy4gIFBhdGNoIGJ5IEFhcm9uIElsZXMuCisKKy0gSXNzdWUgIzEzNTc5OiBgc3RyaW5nLkZvcm1hdHRlcmAgbm93IHVuZGVyc3RhbmRzIHRoZSAnYScgY29udmVyc2lvbiBzcGVjaWZpZXIuCisKKy0gSXNzdWUgIzE1NTk1OiBGaXggYGBzdWJwcm9jZXNzLlBvcGVuKHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKWBgIGZvciBjZXJ0YWluCisgIGxvY2FsZXMgKHV0Zi0xNiBhbmQgdXRmLTMyIGZhbWlseSkuIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgorCistIElzc3VlICMxNTQ3NzogSW4gY21hdGggYW5kIG1hdGggbW9kdWxlcywgYWRkIHdvcmthcm91bmQgZm9yIHBsYXRmb3JtcyB3aG9zZQorICBzeXN0ZW0tc3VwcGxpZWQgbG9nMXAgZnVuY3Rpb24gZG9lc24ndCByZXNwZWN0IHNpZ25zIG9mIHplcm9zLgorCistIElzc3VlICMxNTcxNTogYGltcG9ydGxpYi5fX2ltcG9ydF9fKClgIHdpbGwgc2lsZW5jZSBhbiBJbXBvcnRFcnJvciB3aGVuIHRoZQorICB1c2Ugb2YgZnJvbWxpc3QgbGVhZHMgdG8gYSBmYWlsZWQgaW1wb3J0LgorCistIElzc3VlICMxNDY2OTogRml4IHBpY2tsaW5nIG9mIGNvbm5lY3Rpb25zIGFuZCBzb2NrZXRzIG9uIE1hYyBPUyBYIGJ5CisgIHNlbmRpbmcvcmVjZWl2aW5nIGFuIGFja25vd2xlZGdtZW50IGFmdGVyIGZpbGUgZGVzY3JpcHRvciB0cmFuc2Zlci4KKyAgVGVzdFBpY2tsaW5nQ29ubmVjdGlvbiBoYXMgYmVlbiByZWVuYWJsZWQgZm9yIE1hYyBPUyBYLgorCistIElzc3VlICMxMTA2MjogRml4IGFkZGluZyBhIG1lc3NhZ2UgZnJvbSBmaWxlIHRvIEJhYnlsIG1haWxib3guCisKKy0gSXNzdWUgIzE1NjQ2OiBQcmV2ZW50IGVxdWl2YWxlbnQgb2YgYSBmb3JrIGJvbWIgd2hlbiB1c2luZyBgbXVsdGlwcm9jZXNzaW5nYAorICBvbiBXaW5kb3dzIHdpdGhvdXQgdGhlIGBgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJ2BgIGlkaW9tLgorCistIElzc3VlICMxNTY3ODogRml4IElETEUgbWVudXMgd2hlbiBzdGFydGVkIGZyb20gT1MgWCBjb21tYW5kIGxpbmUgKDMuMy4wYjIKKyAgcmVncmVzc2lvbikuCisKK0MgQVBJCistLS0tLQorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBUb3VjaGVkIHVwIHRoZSBQeXRob24gMiB0byAzIHBvcnRpbmcgZ3VpZGUuCisKKy0gSXNzdWUgIzE0Njc0OiBBZGQgYSBkaXNjdXNzaW9uIG9mIHRoZSBganNvbmAgbW9kdWxlJ3Mgc3RhbmRhcmQgY29tcGxpYW5jZS4KKyAgUGF0Y2ggYnkgQ2hyaXMgUmViZXJ0LgorCistIENyZWF0ZSBhICdDb25jdXJyZW50IEV4ZWN1dGlvbicgc2VjdGlvbiBpbiB0aGUgZG9jcywgYW5kIHNwbGl0IHVwIHRoZQorICAnT3B0aW9uYWwgT3BlcmF0aW5nIFN5c3RlbSBTZXJ2aWNlcycgc2VjdGlvbiB0byB1c2UgYSBtb3JlIHVzZXItY2VudHJpYworICBjbGFzc2lmaWNhdGlvbiBzY2hlbWUgKHNwbGl0dGluZyB0aGVtIGFjcm9zcyB0aGUgbmV3IENFIHNlY3Rpb24sIElQQyBhbmQgdGV4dAorICBwcm9jZXNzaW5nKS4gT3BlcmF0aW5nIHN5c3RlbSBsaW1pdGF0b25zIGNhbiBiZSByZWZsZWN0ZWQgd2l0aCB0aGUgU3BoaW54CisgIGBgOnBsYXRmb3JtOmBgIHRhZywgaXQgZG9lc24ndCBtYWtlIHNlbnNlIGFzIHBhcnQgb2YgdGhlIFRhYmxlIG9mIENvbnRlbnRzLgorCistIElzc3VlICM0OTY2OiBCcmluZyB0aGUgc2VxdWVuY2UgZG9jcyB1cCB0byBkYXRlIGZvciB0aGUgUHkzayB0cmFuc2l0aW9uIGFuZAorICB0aGUgbWFueSBsYW5ndWFnZSBlbmhhbmNlbWVudHMgc2luY2UgdGhleSB3ZXJlIG9yaWdpbmFsIHdyaXR0ZW4uCisKKy0gVGhlICJwYXRoIGltcG9ydGVyIiBtaXNub21lciBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIEVyaWMgU25vdydzCisgIG1vcmUtYXdrd2FyZC1idXQtYXQtbGVhc3Qtbm90LXdyb25nIHN1Z2dlc3Rpb24gb2YgInBhdGggYmFzZWQgZmluZGVyIiBpbiB0aGUKKyAgaW1wb3J0IHN5c3RlbSByZWZlcmVuY2UgZG9jcy4KKworLSBJc3N1ZSAjMTU2NDA6IERvY3VtZW50IGBpbXBvcnRsaWIuYWJjLkZpbmRlcmAgYXMgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMTU2MzA6IEFkZCBhbiBleGFtcGxlIGZvciAiY29udGludWUiIHN0bXQgaW4gdGhlIHR1dG9yaWFsLiAgUGF0Y2ggYnkKKyAgRGFuaWVsIEVsbGlzLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTU3NDc6IFpGUyBhbHdheXMgcmV0dXJucyBFT1BOT1RTVVBQIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgdGhlCisgIFVGX0lNTVVUQUJMRSBmbGFnICh2aWEgZWl0aGVyIGNoZmxhZ3Mgb3IgbGNoZmxhZ3MpOyByZWZhY3RvciBhZmZlY3RlZCB0ZXN0cyBpbgorICB0ZXN0X3Bvc2l4LnB5IHRvIGFjY291bnQgZm9yIHRoaXMuCisKKy0gSXNzdWUgIzE1Mjg1OiBSZWZhY3RvciB0aGUgYXBwcm9hY2ggZm9yIHRlc3RpbmcgY29ubmVjdCB0aW1lb3V0cyB1c2luZyB0d28KKyAgZXh0ZXJuYWwgaG9zdHMgdGhhdCBoYXZlIGJlZW4gY29uZmlndXJlZCBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgdHlwZSBvZiB0ZXN0LgorCistIElzc3VlICMxNTc0MzogUmVtb3ZlIHRoZSBkZXByZWNhdGVkIG1ldGhvZCB1c2FnZSBpbiBgdXJsbGliYCB0ZXN0cy4gUGF0Y2ggYnkKKyAgSmVmZiBLbnVwcC4KKworLSBJc3N1ZSAjMTU2MTU6IEFkZCBzb21lIHRlc3RzIGZvciB0aGUgYGpzb25gIG1vZHVsZSdzIGhhbmRsaW5nIG9mIGludmFsaWQgaW5wdXQKKyAgZGF0YS4gIFBhdGNoIGJ5IEt1c2hhbCBEYXMuCisKK0J1aWxkCistLS0tLQorCistIE91dHB1dCBsaWIgZmlsZXMgZm9yIFBHTyBidWlsZCBpbnRvIFBHTyBkaXJlY3RvcnkuCisKKy0gUGljayB1cCAzMi1iaXQgbGF1bmNoZXIgZnJvbSBQR08gZGlyZWN0b3J5IG9uIDY0LWJpdCBQR08gYnVpbGQuCisKKy0gRHJvcCBgYFBDXHB5dGhvbl9udC5oYGAgYXMgaXQncyBub3QgdXNlZC4gIEFkZCBpbnB1dCBkZXBlbmRlbmN5IG9uIGN1c3RvbQorICBidWlsZCBzdGVwLgorCistIElzc3VlICMxNTUxMTogRHJvcCBleHBsaWNpdCBkZXBlbmRlbmN5IG9uIHB5dGhvbnh5LmxpYiBmcm9tIF9kZWNpbWFsIGFtZDY0CisgIGNvbmZpZ3VyYXRpb24uCisKKy0gQWRkIG1pc3NpbmcgUEdJL1BHTyBjb25maWd1cmF0aW9ucyBmb3IgcHl3bGF1bmNoZXIuCisKKy0gSXNzdWUgIzE1NjQ1OiBFbnN1cmUgMnRvMyBncmFtbWFyIHBpY2tsZXMgYXJlIHByb3Blcmx5IGluc3RhbGxlZC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBCZXRhIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDEyLUF1Zy0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTU1Njg6IEZpeCB0aGUgcmV0dXJuIHZhbHVlIG9mIGBgeWllbGQgZnJvbWBgIHdoZW4gU3RvcEl0ZXJhdGlvbiBpcworICByYWlzZWQgYnkgYSBjdXN0b20gaXRlcmF0b3IuCisKKy0gSXNzdWUgIzEzMTE5OiBgc3lzLnN0ZG91dGAgYW5kIGBzeXMuc3RkZXJyYCBhcmUgbm93IHVzaW5nICJcclxuIiBuZXdsaW5lIG9uCisgIFdpbmRvd3MsIGFzIFB5dGhvbiAyLgorCistIElzc3VlICMxNTUzNDogRml4IHRoZSBmYXN0LXNlYXJjaCBmdW5jdGlvbiBmb3Igbm9uLUFTQ0lJIFVuaWNvZGUgc3RyaW5ncy4KKworLSBJc3N1ZSAjMTU1MDg6IEZpeCB0aGUgZG9jc3RyaW5nIGZvciBgX19pbXBvcnRfXygpYCB0byBoYXZlIHRoZSBwcm9wZXIgZGVmYXVsdAorICB2YWx1ZSBvZiAwIGZvciAnbGV2ZWwnIGFuZCB0byBub3QgbWVudGlvbiBuZWdhdGl2ZSBsZXZlbHMgc2luY2UgdGhleSBhcmUgbm90CisgIHN1cHBvcnRlZC4KKworLSBJc3N1ZSAjMTU0MjU6IEVsaW1pbmF0ZWQgdHJhY2ViYWNrIG5vaXNlIGZyb20gbW9yZSBzaXR1YXRpb25zIGludm9sdmluZworICBpbXBvcnRsaWIuCisKKy0gSXNzdWUgIzE0NTc4OiBTdXBwb3J0IG1vZHVsZXMgcmVnaXN0ZXJlZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeSBhZ2Fpbi4KKworLSBJc3N1ZSAjMTU0NjY6IFN0b3AgdXNpbmcgVFlQRV9JTlQ2NCBpbiBtYXJzaGFsLCB0byBtYWtlIGltcG9ydGxpYi5oIChhbmQgb3RoZXIKKyAgYnl0ZSBjb2RlIGZpbGVzKSBlcXVhbCBiZXR3ZWVuIDMyLWJpdCBhbmQgNjQtYml0IHN5c3RlbXMuCisKKy0gSXNzdWUgIzE2OTIzMzU6IE1vdmUgaW5pdGlhbCBleGNlcHRpb24gYXJncyBhc3NpZ25tZW50IHRvCisgIGBCYXNlRXhjZXB0aW9uLl9fbmV3X18oKWAgdG8gaGVscCBwaWNrbGluZyBvZiBuYWl2ZSBzdWJjbGFzc2VzLgorCistIElzc3VlICMxMjgzNDogRml4IGBQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoKWAgZm9yIG5vbi1jb250aWd1b3VzIGFycmF5cy4KKworLSBJc3N1ZSAjMTU0NTY6IEZpeCBjb2RlIGBfX3NpemVvZl9fKClgIGFmdGVyICMxMjM5OSBjaGFuZ2UuICBQYXRjaCBieSBTZXJoaXkKKyAgU3RvcmNoYWthLgorCistIElzc3VlICMxNTQwNDogUmVmbGVhayBpbiBQeU1ldGhvZE9iamVjdCByZXByLgorCistIElzc3VlICMxNTM5NDogQW4gaXNzdWUgaW4gYFB5TW9kdWxlX0NyZWF0ZSgpYCB0aGF0IGNhdXNlZCByZWZlcmVuY2VzIHRvIGJlCisgIGxlYWtlZCBvbiBzb21lIGVycm9yIHBhdGhzIGhhcyBiZWVuIGZpeGVkLiAgUGF0Y2ggYnkgSnVsaWEgTGF3YWxsLgorCistIElzc3VlICMxNTM2ODogQW4gaXNzdWUgdGhhdCBjYXVzZWQgYnl0ZWNvZGUgZ2VuZXJhdGlvbiB0byBiZSBub24tZGV0ZXJtaW5pc3RpYworICBoYXMgYmVlbiBmaXhlZC4KKworLSBJc3N1ZSAjMTUyMDI6IENvbnNpc3RlbnRseSB1c2UgdGhlIG5hbWUgImZvbGxvd19zeW1saW5rcyIgZm9yIG5ldyBwYXJhbWV0ZXJzCisgIGluIG9zIGFuZCBzaHV0aWwgZnVuY3Rpb25zLgorCistIElzc3VlICMxNTMxNDogYGBfX21haW5fXy5fX2xvYWRlcl9fYGAgaXMgbm93IHNldCBjb3JyZWN0bHkgZHVyaW5nIGludGVycHJldGVyCisgIHN0YXJ0dXAuCisKKy0gSXNzdWUgIzE1MTExOiBXaGVuIGEgbW9kdWxlIGltcG9ydGVkIHVzaW5nICdmcm9tIGltcG9ydCcgaGFzIGFuIEltcG9ydEVycm9yCisgIGluc2lkZSBpdHNlbGYsIGRvbid0IG1hc2sgdGhhdCBmYWN0IGJlaGluZCBhIGdlbmVyaWMgSW1wb3J0RXJyb3IgZm9yIHRoZQorICBtb2R1bGUgaXRzZWxmLgorCistIElzc3VlICMxNTI5MzogQWRkIEdDIHN1cHBvcnQgdG8gdGhlIEFTVCBiYXNlIG5vZGUgdHlwZS4KKworLSBJc3N1ZSAjMTUyOTE6IEZpeCBhIG1lbW9yeSBsZWFrIHdoZXJlIEFTVCBub2RlcyB3aGVyZSBub3QgcHJvcGVybHkKKyAgZGVhbGxvY2F0ZWQuCisKKy0gSXNzdWUgIzE1MTEwOiBGaXggdGhlIHRyYWNlYmFja3MgZ2VuZXJhdGVkIGJ5ICJpbXBvcnQgeHh4IiB0byBub3Qgc2hvdyB0aGUKKyAgaW1wb3J0bGliIHN0YWNrIGZyYW1lcy4KKworLSBJc3N1ZSAjMTYzNjk6IEdsb2JhbCBQeVR5cGVPYmplY3RzIG5vdCBpbml0aWFsaXplZCB3aXRoIFB5VHlwZV9SZWFkeSguLi4pLgorCistIElzc3VlICMxNTAyMDogVGhlIHByb2dyYW0gbmFtZSB1c2VkIHRvIHNlYXJjaCBmb3IgUHl0aG9uJ3MgcGF0aCBpcyBub3cKKyAgInB5dGhvbjMiIHVuZGVyIFVuaXgsIG5vdCAicHl0aG9uIi4KKworLSBJc3N1ZSAjMTU4OTc6IHppcGltcG9ydC5jIGRvZXNuJ3QgY2hlY2sgcmV0dXJuIHZhbHVlIG9mIGZzZWVrKCkuCisgIFBhdGNoIGJ5IEZlbGlwZSBDcnV6LgorCistIElzc3VlICMxNTAzMzogRml4IHRoZSBleGl0IHN0YXR1cyBidWcgd2hlbiBtb2R1bGVzIGludm9rZWQgdXNpbmcgLW0gc3dpdGNoLAorICByZXR1cm4gdGhlIHByb3BlciBmYWlsdXJlIHJldHVybiB2YWx1ZSAoMSkuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEplZmYgS251cHAuCisKKy0gSXNzdWUgIzE1MjI5OiBBbiBgT1NFcnJvcmAgc3ViY2xhc3Mgd2hvc2UgX19pbml0X18gZG9lc24ndCBjYWxsIGJhY2sKKyAgT1NFcnJvci5fX2luaXRfXyBjb3VsZCBwcm9kdWNlIGluY29tcGxldGUgaW5zdGFuY2VzLCBsZWFkaW5nIHRvIGNyYXNoZXMgd2hlbgorICBjYWxsaW5nIHN0cigpIG9uIHRoZW0uCisKKy0gSXNzdWUgIzE1MzA3OiBWaXJ0dWFsIGVudmlyb25tZW50cyBub3cgdXNlIHN5bWxpbmtzIHdpdGggZnJhbWV3b3JrIGJ1aWxkcyBvbgorICBNYWMgT1MgWCwgbGlrZSBvdGhlciBQT1NJWCBidWlsZHMuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTQ1OTA6IGNvbmZpZ3BhcnNlciBub3cgY29ycmVjdGx5IHN0cmlwcyBpbmxpbmUgY29tbWVudHMgd2hlbiBkZWxpbWl0ZXIKKyAgb2NjdXJzIGVhcmxpZXIgd2l0aG91dCBwcmVjZWRpbmcgc3BhY2UuCisKKy0gSXNzdWUgIzE1NDI0OiBBZGQgYSBgX19zaXplb2ZfXygpYCBpbXBsZW1lbnRhdGlvbiBmb3IgYXJyYXkgb2JqZWN0cy4gIFBhdGNoIGJ5CisgIEx1ZHdpZyBIw6RobmUuCisKKy0gSXNzdWUgIzE1NTc2OiBBbGxvdyBleHRlbnNpb24gbW9kdWxlcyB0byBhY3QgYXMgYSBwYWNrYWdlJ3MgX19pbml0X18gbW9kdWxlLgorCistIElzc3VlICMxNTUwMjogSGF2ZSBgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKClgIHdvcmsgb24gYHN5cy5tZXRhX3BhdGhgCisgIGluc3RlYWQgb2YgYHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYC4KKworLSBJc3N1ZSAjMTUxNjM6IFB5ZG9jIHNob3VsZG4ndCBsaXN0IF9fbG9hZGVyX18gYXMgbW9kdWxlIGRhdGEuCisKKy0gSXNzdWUgIzE1NDcxOiBEbyBub3QgdXNlIG11dGFibGUgb2JqZWN0cyBhcyBkZWZhdWx0cyBmb3IKKyAgYGltcG9ydGxpYi5fX2ltcG9ydF9fKClgLgorCistIElzc3VlICMxNTU1OTogVG8gYXZvaWQgYSBwcm9ibGVtYXRpYyBmYWlsdXJlIG1vZGUgd2hlbiBwYXNzZWQgdG8gdGhlIGJ5dGVzCisgIGNvbnN0cnVjdG9yLCBvYmplY3RzIGluIHRoZSBpcGFkZHJlc3MgbW9kdWxlIG5vIGxvbmdlciBpbXBsZW1lbnQgYF9faW5kZXhfXygpYAorICAodGhleSBzdGlsbCBpbXBsZW1lbnQgYF9faW50X18oKWAgYXMgYXBwcm9wcmlhdGUpLgorCistIElzc3VlICMxNTU0NjogRml4IGhhbmRsaW5nIG9mIHBhdGhvbG9naWNhbCBpbnB1dCBkYXRhIGluIHRoZSBwZWVrKCkgYW5kCisgIHJlYWQxKCkgbWV0aG9kcyBvZiB0aGUgQloyRmlsZSwgR3ppcEZpbGUgYW5kIExaTUFGaWxlIGNsYXNzZXMuCisKKy0gSXNzdWUgIzEzMDUyOiBGaXggSURMRSBjcmFzaGluZyB3aGVuIHJlcGxhY2Ugc3RyaW5nIGluIFNlYXJjaC9SZXBsYWNlIGRpYWxvZworICBlbmRlZCB3aXRoIGBgXGBgLiAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCisKKy0gSXNzdWUgIzEyNjU1OiBJbnN0ZWFkIG9mIHJlcXVpcmluZyBhIGN1c3RvbSB0eXBlLCBgb3Muc2NoZWRfZ2V0YWZmaW5pdHkoKWAgYW5kCisgIGBvcy5zY2hlZF9zZXRhZmZpbml0eSgpYCBub3cgdXNlIHJlZ3VsYXIgc2V0cyBvZiBpbnRlZ2VycyB0byByZXByZXNlbnQgdGhlCisgIENQVXMgYSBwcm9jZXNzIGlzIHJlc3RyaWN0ZWQgdG8uCisKKy0gSXNzdWUgIzE1NTM4OiBGaXggY29tcGlsYXRpb24gb2YgdGhlIGBzb2NrZXQuZ2V0bmFtZWluZm8oKWAgLworICBgc29ja2V0LmdldGFkZHJpbmZvKClgIGVtdWxhdGlvbiBjb2RlLiAgUGF0Y2ggYnkgUGhpbGlwcCBIYWdlbWVpc3Rlci4KKworLSBJc3N1ZSAjMTU1MTk6IFByb3Blcmx5IGV4cG9zZSBXaW5kb3dzUmVnaXN0cnlGaW5kZXIgaW4gaW1wb3J0bGliIChhbmQgdXNlIHRoZQorICBjb3JyZWN0IHRlcm0gZm9yIGl0KS4gIE9yaWdpbmFsIHBhdGNoIGJ5IEVyaWMgU25vdy4KKworLSBJc3N1ZSAjMTU1MDI6IEJyaW5nIHRoZSBpbXBvcnRsaWIgQUJDcyBpbnRvIGxpbmUgd2l0aCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUKKyAgaW1wb3J0IHByb3RvY29scyBnaXZlbiBQRVAgNDIwLiAgT3JpZ2luYWwgcGF0Y2ggYnkgRXJpYyBTbm93LgorCistIElzc3VlICMxNTQ5OTogTGF1bmNoaW5nIGEgd2ViYnJvd3NlciBpbiBVbml4IHVzZWQgdG8gc2xlZXAgZm9yIGEgZmV3IHNlY29uZHMuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IEFudG9uIEJhcmtvdnNreS4KKworLSBJc3N1ZSAjMTU0NjM6IFRoZSBmYXVsdGhhbmRsZXIgbW9kdWxlIHRydW5jYXRlcyBzdHJpbmdzIHRvIDUwMCBjaGFyYWN0ZXJzLAorICBpbnN0ZWFkIG9mIDEwMCwgdG8gYmUgYWJsZSB0byBkaXNwbGF5IGxvbmcgZmlsZSBwYXRocy4KKworLSBJc3N1ZSAjNjA1NjogTWFrZSBgbXVsdGlwcm9jZXNzaW5nYCB1c2Ugc2V0YmxvY2tpbmcoVHJ1ZSkgb24gdGhlIHNvY2tldHMgaXQKKyAgdXNlcy4gIE9yaWdpbmFsIHBhdGNoIGJ5IEogRGVyZWsgV2lsc29uLgorCistIElzc3VlICMxNTM2NDogRml4IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykgdG8gYmUgYW4gYWJzb2x1dGUgcGF0aC4KKworLSBJc3N1ZSAjMTUwNDE6IFVwZGF0ZSAic2VlIGFsc28iIGxpc3QgaW4gdGtpbnRlciBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICMxNTQxMzogYG9zLnRpbWVzKClgIGhhZCBkaXNhcHBlYXJlZCB1bmRlciBXaW5kb3dzLgorCistIElzc3VlICMxNTQwMjogQW4gaXNzdWUgaW4gdGhlIHN0cnVjdCBtb2R1bGUgdGhhdCBjYXVzZWQgYHN5cy5nZXRzaXplb2YoKWAgdG8KKyAgcmV0dXJuIGluY29ycmVjdCByZXN1bHRzIGZvciBzdHJ1Y3QuU3RydWN0IGluc3RhbmNlcyBoYXMgYmVlbiBmaXhlZC4gIEluaXRpYWwKKyAgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTUyMzI6IFdoZW4gbWFuZ2xlX2Zyb20gaXMgVHJ1ZSwgYGVtYWlsLkdlbmVyYXRvcmAgbm93IGNvcnJlY3RseQorICBtYW5nbGVzIGxpbmVzIHRoYXQgc3RhcnQgd2l0aCAnRnJvbSAnIHRoYXQgb2NjdXIgaW4gYSBNSU1FIHByZWFtYmxlIG9yCisgIGVwaWxvZ3VlLgorCistIElzc3VlICMxNTA5NDogSW5jb3JyZWN0bHkgcGxhY2VkICNlbmRpZiBpbiBfdGtpbnRlci5jLiAgUGF0Y2ggYnkgU2VyaGl5CisgIFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTM5MjI6IGBhcmdwYXJzZWAgbm8gbG9uZ2VyIGluY29ycmVjdGx5IHN0cmlwcyAnLS0ncyB0aGF0IGFwcGVhciBhZnRlcgorICB0aGUgZmlyc3Qgb25lLgorCistIElzc3VlICMxMjM1MzogYGFyZ3BhcnNlYCBub3cgY29ycmVjdGx5IGhhbmRsZXMgbnVsbCBhcmd1bWVudCB2YWx1ZXMuCisKKy0gSXNzdWUgIzEwMDE3LCBpc3N1ZSAjMTQ5OTg6IEZpeCBUeXBlRXJyb3IgdXNpbmcgcHByaW50IG9uIGRpY3Rpb25hcmllcyB3aXRoCisgIHVzZXItZGVmaW5lZCB0eXBlcyBhcyBrZXlzIG9yIG90aGVyIHVub3JkZXJhYmxlIGtleXMuCisKKy0gSXNzdWUgIzE1Mzk3OiBgaW5zcGVjdC5nZXRtb2R1bGVuYW1lKClgIGlzIG5vdyBiYXNlZCBkaXJlY3RseSBvbiBpbXBvcnRsaWIgdmlhCisgIGEgbmV3IGBpbXBvcnRsaWIubWFjaGluZXJ5LmFsbF9zdWZmaXhlcygpYCBBUEkuCisKKy0gSXNzdWUgIzE0NjM1OiBgdGVsbmV0bGliYCB3aWxsIHVzZSBwb2xsKCkgcmF0aGVyIHRoYW4gc2VsZWN0KCkgd2hlbiBwb3NzaWJsZSB0bworICBhdm9pZCBmYWlsaW5nIGR1ZSB0byB0aGUgc2VsZWN0KCkgZmlsZSBkZXNjcmlwdG9yIGxpbWl0LgorCistIElzc3VlICMxNTE4MDogQ2xhcmlmeSBwb3NpeHBhdGguam9pbigpIGVycm9yIG1lc3NhZ2Ugd2hlbiBtaXhpbmcgc3RyICYgYnl0ZXMuCisKKy0gSXNzdWUgIzE1MzQzOiBwa2d1dGlsIG5vdyBpbmNsdWRlcyBhbiBpdGVyX2ltcG9ydGVyX21vZHVsZXMgaW1wbGVtZW50YXRpb24gZm9yCisgIGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlciAoc2ltaWxhciB0byB0aGUgd2F5IGl0IGFscmVhZHkgaGFuZGxlZAorICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpLgorCistIElzc3VlICMxNTMxNDogcnVucHkgbm93IHNldHMgX19tYWluX18uX19sb2FkZXJfXyBjb3JyZWN0bHkuCisKKy0gSXNzdWUgIzE1MzU3OiBUaGUgaW1wb3J0IGVtdWxhdGlvbiBpbiBwa2d1dGlsIGlzIG5vdyBkZXByZWNhdGVkLiBwa2d1dGlsIHVzZXMKKyAgaW1wb3J0bGliIGludGVybmFsbHkgcmF0aGVyIHRoYW4gdGhlIGVtdWxhdGlvbi4KKworLSBJc3N1ZSAjMTUyMzM6IFB5dGhvbiBub3cgZ3VhcmFudGVlcyB0aGF0IGNhbGxhYmxlcyByZWdpc3RlcmVkIHdpdGggdGhlIGF0ZXhpdAorICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgaW4gYSBkZXRlcm1pbmlzdGljIG9yZGVyLgorCistIElzc3VlICMxNTIzODogYHNodXRpbC5jb3B5c3RhdCgpYCBub3cgY29waWVzIExpbnV4ICJleHRlbmRlZCBhdHRyaWJ1dGVzIi4KKworLSBJc3N1ZSAjMTUyMzA6IHJ1bnB5LnJ1bl9wYXRoIG5vdyBjb3JyZWN0bHkgc2V0cyBfX3BhY2thZ2VfXyBhcyBkZXNjcmliZWQgaW4KKyAgdGhlIGRvY3VtZW50YXRpb24uCisKKy0gSXNzdWUgIzE1MzE1OiBTdXBwb3J0IFZTIDIwMTAgaW4gZGlzdHV0aWxzIGN5Z3dpbmNvbXBpbGVyLgorCistIElzc3VlICMxNTI5NDogRml4IGEgcmVncmVzc2lvbiBpbiBwa2d1dGlsLmV4dGVuZF9wYXRoKCkncyBoYW5kbGluZyBvZiBuZXN0ZWQKKyAgbmFtZXNwYWNlIHBhY2thZ2VzLgorCistIElzc3VlICMxNTA1NjogYGltcC5jYWNoZV9mcm9tX3NvdXJjZSgpYCBhbmQgYGltcC5zb3VyY2VfZnJvbV9jYWNoZSgpYCByYWlzZQorICBOb3RJbXBsZW1lbnRlZEVycm9yIHdoZW4gYHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIHNldCB0byBOb25lLgorCistIElzc3VlICMxNTI1NjogR3JhbW1hdGljYWwgbWlzdGFrZSBpbiBleGNlcHRpb24gcmFpc2VkIGJ5IGBpbXAuZmluZF9tb2R1bGUoKWAuCisKKy0gSXNzdWUgIzU5MzE6IGB3c2dpcmVmYCBlbnZpcm9uIHZhcmlhYmxlIFNFUlZFUl9TT0ZUV0FSRSB3aWxsIHNwZWNpZnkgYW4KKyAgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgdGVybSBsaWtlIENQeXRob24sIEp5dGhvbiBpbnN0ZWFkIG9mIGdlbmVyaWMgIlB5dGhvbiIuCisKKy0gSXNzdWUgIzEzMjQ4OiBSZW1vdmUgb2Jzb2xldGUgYXJndW1lbnQgIm1heF9idWZmZXJfc2l6ZSIgb2YgQnVmZmVyZWRXcml0ZXIgYW5kCisgIEJ1ZmZlcmVkUldQYWlyLCBmcm9tIHRoZSBpbyBtb2R1bGUuCisKKy0gSXNzdWUgIzEzMjQ4OiBSZW1vdmUgb2Jzb2xldGUgYXJndW1lbnQgInZlcnNpb24iIG9mIGBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcmAuCisKKy0gSXNzdWUgIzE0ODE0OiBJbXBsZW1lbnQgbW9yZSBjb25zaXN0ZW50IG9yZGVyaW5nIGFuZCBzb3J0aW5nIGJlaGF2aW91ciBmb3IKKyAgaXBhZGRyZXNzIG9iamVjdHMuCisKKy0gSXNzdWUgIzE0ODE0OiBgaXBhZGRyZXNzYCBuZXR3b3JrIG9iamVjdHMgY29ycmVjdGx5IHJldHVybiBOb3RJbXBsZW1lbnRlZCB3aGVuCisgIGNvbXBhcmVkIHRvIGFyYml0cmFyeSBvYmplY3RzIGluc3RlYWQgb2YgcmFpc2luZyBUeXBlRXJyb3IuCisKKy0gSXNzdWUgIzE0OTkwOiBDb3JyZWN0bHkgZmFpbCB3aXRoIFN5bnRheEVycm9yIG9uIGludmFsaWQgZW5jb2RpbmcgZGVjbGFyYXRpb24uCisKKy0gSXNzdWUgIzE0ODE0OiBgaXBhZGRyZXNzYCBub3cgcHJvdmlkZXMgbW9yZSBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlcyB3aGVuCisgIGNvbnN0cnVjdGluZyBpbnN0YW5jZXMgZGlyZWN0bHkgKGNoYW5nZXMgcGVybWl0dGVkIGR1cmluZyBiZXRhIGR1ZSB0bworICBwcm92aXNpb25hbCBBUEkgc3RhdHVzKS4KKworLSBJc3N1ZSAjMTUyNDc6IGBpby5GaWxlSU9gIG5vdyByYWlzZXMgYW4gZXJyb3Igd2hlbiBnaXZlbiBhIGZpbGUgZGVzY3JpcHRvcgorICBwb2ludGluZyB0byBhIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjMTUyNjE6IFN0b3Agb3Muc3RhdChmZCkgY3Jhc2hpbmcgb24gV2luZG93cyB3aGVuIGZkIG5vdCBvcGVuLgorCistIElzc3VlICMxNTE2NjogSW1wbGVtZW50IGBpbXAuZ2V0X3RhZygpYCB1c2luZyBgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZ2AuCisKKy0gSXNzdWUgIzE1MjEwOiBDYXRjaCBLZXlFcnJvciB3aGVuIGBpbXBvcnRsaWIuX19pbml0X18oKWAgY2FuJ3QgZmluZAorICBfZnJvemVuX2ltcG9ydGxpYiBpbiBzeXMubW9kdWxlcywgbm90IEltcG9ydEVycm9yLgorCistIElzc3VlICMxNTAzMDogYGltcG9ydGxpYi5hYmMuUHlQeWNMb2FkZXJgIG5vdyBzdXBwb3J0cyB0aGUgbmV3IHNvdXJjZSBzaXplCisgIGhlYWRlciBmaWVsZCBpbiAucHljIGZpbGVzLgorCistIElzc3VlICM1MzQ2OiBQcmVzZXJ2ZSBwZXJtaXNzaW9ucyBvZiBtYm94LCBNTURGIGFuZCBCYWJ5bCBtYWlsYm94IGZpbGVzIG9uCisgIGZsdXNoKCkuCisKKy0gSXNzdWUgIzEwNTcxOiBGaXggdGhlICItLXNpZ24iIG9wdGlvbiBvZiBkaXN0dXRpbHMnIHVwbG9hZCBjb21tYW5kLiAgUGF0Y2ggYnkKKyAgSmFrdWIgV2lsay4KKworLSBJc3N1ZSAjOTU1OTogSWYgbWVzc2FnZXMgd2VyZSBvbmx5IGFkZGVkLCBhIG5ldyBmaWxlIGlzIG5vIGxvbmdlciBjcmVhdGVkIGFuZAorICByZW5hbWVkIG92ZXIgdGhlIG9sZCBmaWxlIHdoZW4gZmx1c2goKSBpcyBjYWxsZWQgb24gYW4gbWJveCwgTU1ERiBvciBCYWJ5bAorICBtYWlsYm94LgorCistIElzc3VlICMxMDkyNDogRml4ZWQgYGNyeXB0Lm1rc2FsdCgpYCB0byB1c2UgYSBSTkcgdGhhdCBpcyBzdWl0YWJsZSBmb3IKKyAgY3J5cHRvZ3JhcGhpYyBwdXJwb3NlLgorCistIElzc3VlICMxNTE4NDogRW5zdXJlIGNvbnNpc3RlbnQgcmVzdWx0cyBvZiBPUyBYIGNvbmZpZ3VyYXRpb24gdGFpbG9yaW5nIGZvcgorICB1bml2ZXJzYWwgYnVpbGRzIGJ5IGZhY3RvcmluZyBvdXQgY29tbW9uIE9TIFgtc3BlY2lmaWMgY3VzdG9taXphdGlvbnMgZnJvbQorICBzeXNjb25maWcsIGRpc3R1dGlscy5zeXNjb25maWcsIGRpc3R1dGlscy51dGlsLCBhbmQgZGlzdHV0aWxzLnVuaXhjY29tcGlsZXIKKyAgaW50byBhIG5ldyBtb2R1bGUgX29zeF9zdXBwb3J0LgorCitDIEFQSQorLS0tLS0KKworLSBJc3N1ZSAjMTU2MTA6IGBQeUltcG9ydF9JbXBvcnRNb2R1bGVFeCgpYCBub3cgdXNlcyBhICdsZXZlbCcgb2YgMCBpbnN0ZWFkIG9mIC0xLgorCistIElzc3VlICMxNTE2OSwgaXNzdWUgIzE0NTk5OiBTdHJpcCBvdXQgdGhlIEMgaW1wbGVtZW50YXRpb24gb2YKKyAgYGltcC5zb3VyY2VfZnJvbV9jYWNoZSgpYCB1c2VkIGJ5IFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcygpIGFuZAorICB1c2VkIHRoZSBQeXRob24gY29kZSBpbnN0ZWFkLiBMZWFkcyB0byBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdCgpIHRvIG5vdAorICB0cnkgdG8gaW5mZXIgdGhlIHNvdXJjZSBwYXRoIGZyb20gdGhlIGJ5dGVjb2RlIHBhdGggYXMKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKCkgZG9lcy4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzY0OTM6IEFuIGlzc3VlIGluIGN0eXBlcyBvbiBXaW5kb3dzIHRoYXQgY2F1c2VkIHN0cnVjdHVyZSBiaXRmaWVsZHMgb2YKKyAgdHlwZSBgY3R5cGVzLmNfdWludDMyYCBhbmQgd2lkdGggMzIgdG8gaW5jb3JyZWN0bHkgYmUgc2V0IGhhcyBiZWVuIGZpeGVkLgorCistIElzc3VlICMxNTE5NDogVXBkYXRlIGxpYmZmaSB0byB0aGUgMy4wLjExIHJlbGVhc2UuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMxNTQ1ODogcHl0aG9uLWNvbmZpZyBnZXRzIGEgbmV3IG9wdGlvbiAtLWNvbmZpZ2RpciB0byBwcmludCB0aGUgJExJQlBMCisgIHZhbHVlLgorCistIE1vdmUgaW1wb3J0bGliLnRlc3QuYmVuY2htYXJrIHRvIFRvb2xzL2ltcG9ydGJlbmNoLgorCistIElzc3VlICMxMjYwNTogVGhlIGdkYiBob29rcyBmb3IgZGVidWdnaW5nIENQeXRob24gKHdpdGhpbiBUb29scy9nZGIpIGhhdmUgYmVlbgorICBlbmhhbmNlZCB0byBzaG93IGluZm9ybWF0aW9uIG9uIG1vcmUgQyBmcmFtZXMgcmVsZXZhbnQgdG8gQ1B5dGhvbiB3aXRoaW4gdGhlCisgICJweS1idCIgYW5kICJweS1idC1mdWxsIiBjb21tYW5kczoKKworICAqIEMgZnJhbWVzIHRoYXQgYXJlIHdhaXRpbmcgb24gdGhlIEdJTAorICAqIEMgZnJhbWVzIHRoYXQgYXJlIGdhcmJhZ2UtY29sbGVjdGluZworICAqIEMgZnJhbWVzIHRoYXQgYXJlIGR1ZSB0byB0aGUgaW52b2NhdGlvbiBvZiBhIFB5Q0Z1bmN0aW9uCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTU0NDQ6IFVzZSBwcm9wZXIgc3BlbGxpbmcgZm9yIG5vbi1BU0NJSSBjb250cmlidXRvciBuYW1lcy4gIFBhdGNoIGJ5CisgIFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1Mjk1OiBSZW9yZ2FuaXplIGFuZCByZXdyaXRlIHRoZSBkb2N1bWVudGF0aW9uIG9uIHRoZSBpbXBvcnQgc3lzdGVtLgorCistIElzc3VlICMxNTIzMDogQ2xlYXJseSBkb2N1bWVudCBzb21lIG9mIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgcnVucHkgbW9kdWxlIGFuZAorICBudWRnZSByZWFkZXJzIHRvd2FyZHMgaW1wb3J0bGliIHdoZW4gYXBwcm9wcmlhdGUuCisKKy0gSXNzdWUgIzE1MDUzOiBDb3B5IFB5dGhvbiAzLjMgaW1wb3J0IGxvY2sgY2hhbmdlIG5vdGljZSB0byBhbGwgcmVsZXZhbnQKKyAgZnVuY3Rpb25zIGluIGltcCBpbnN0ZWFkIG9mIGp1c3QgYXQgdGhlIHRvcCBvZiB0aGUgcmVsZXZhbnQgc2VjdGlvbi4KKworLSBJc3N1ZSAjMTUyODg6IExpbmsgdG8gdGhlIHRlcm0gImxvYWRlciIgaW4gbm90ZXMgaW4gcGtndXRpbCBhYm91dCBob3cgdGhpbmdzCisgIHdvbid0IHdvcmsgYXMgZXhwZWN0ZWQgaW4gUHl0aG9uIDMuMyBhbmQgbWFyayB0aGUgcmVxdWlzaXRlIGZ1bmN0aW9ucyBhcworICAiY2hhbmdlZCIgc2luY2UgdGhleSB3aWxsIG5vIGxvbmdlciB3b3JrIHdpdGggbW9kdWxlcyBkaXJlY3RseSBpbXBvcnRlZCBieQorICBpbXBvcnQgaXRzZWxmLgorCistIElzc3VlICMxMzU1NzogQ2xhcmlmeSBlZmZlY3Qgb2YgZ2l2aW5nIHR3byBkaWZmZXJlbnQgbmFtZXNwYWNlcyB0byBgZXhlYygpYCBvcgorICBgZXhlY2ZpbGUoKWAuCisKKy0gSXNzdWUgIzE1MjUwOiBEb2N1bWVudCB0aGF0IGBmaWxlY21wLmRpcmNtcCgpYCBjb21wYXJlcyBmaWxlcyBzaGFsbG93bHkuIFBhdGNoCisgIGNvbnRyaWJ1dGVkIGJ5IENocmlzIEplcmRvbmVrLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTU0Njc6IE1vdmUgaGVscGVycyBmb3IgYF9fc2l6ZW9mX18oKWAgdGVzdHMgaW50byB0ZXN0X3N1cHBvcnQuICBQYXRjaAorICBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTMyMDogTWFrZSBpdGVyYXRpbmcgdGhlIGxpc3Qgb2YgdGVzdHMgdGhyZWFkLXNhZmUgd2hlbiBydW5uaW5nIHRlc3RzCisgIGluIG11bHRpcHJvY2VzcyBtb2RlLiBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KKworLSBJc3N1ZSAjMTUxNjg6IE1vdmUgYGltcG9ydGxpYi50ZXN0YCB0byBgdGVzdC50ZXN0X2ltcG9ydGxpYmAuCisKKy0gSXNzdWUgIzE1MDkxOiBSZWFjdGl2YXRlIGEgdGVzdCBvbiBVTklYIHdoaWNoIHdhcyBmYWlsaW5nIHRoYW5rcyB0byBhCisgIGZvcmdvdHRlbiBgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKClgIGNhbGwuCisKKy0gSXNzdWUgIzE1MjMwOiBBZG9wdGVkIGEgbW9yZSBzeXN0ZW1hdGljIGFwcHJvYWNoIGluIHRoZSBydW5weSB0ZXN0cy4KKworLSBJc3N1ZSAjMTUzMDA6IEVuc3VyZSB0aGUgdGVtcG9yYXJ5IHRlc3Qgd29ya2luZyBkaXJlY3RvcmllcyBhcmUgaW4gdGhlIHNhbWUKKyAgcGFyZW50IGZvbGRlciB3aGVuIHJ1bm5pbmcgdGVzdHMgaW4gbXVsdGlwcm9jZXNzIG1vZGUgZnJvbSBhIFB5dGhvbiBidWlsZC4KKyAgUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCisKKy0gSXNzdWUgIzE1Mjg0OiBTa2lwIHtzZW5kLHJlY3Z9bXNnIHRlc3RzIGluIHRlc3Rfc29ja2V0IHdoZW4gSVB2NiBpcyBub3QKKyAgZW5hYmxlZC4gUGF0Y2ggYnkgQnJpYW4gQnJhemlsLgorCistIElzc3VlICMxNTI3NzogRml4IGEgcmVzb3VyY2UgbGVhayBpbiBzdXBwb3J0LnB5IHdoZW4gSVB2NiBpcyBkaXNhYmxlZC4gIFBhdGNoCisgIGJ5IEJyaWFuIEJyYXppbC4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzExNzE1OiBGaXggbXVsdGlhcmNoIGRldGVjdGlvbiB3aXRob3V0IGhhdmluZyBEZWJpYW4gZGV2ZWxvcG1lbnQgdG9vbHMKKyAgKGRwa2ctZGV2KSBpbnN0YWxsZWQuCisKKy0gSXNzdWUgIzE1MDM3OiBCdWlsZCBPUyBYIGluc3RhbGxlcnMgd2l0aCBsb2NhbCBjb3B5IG9mIG5jdXJzZXMgNS45IGxpYnJhcmllcworICB0byBhdm9pZCBjdXJzZXMudW5nZXRfd2NoIGJ1ZyBwcmVzZW50IGluIG9sZGVyIHZlcnNpb25zIG9mIG5jdXJzZXMgc3VjaCBhcworICB0aG9zZSBzaGlwcGVkIHdpdGggT1MgWC4KKworLSBJc3N1ZSAjMTU1NjA6IEZpeCBidWlsZGluZyBfc3FsaXRlMyBleHRlbnNpb24gb24gT1MgWCB3aXRoIGFuIFNESy4gIEFsc28sIGZvcgorICBPUyBYIGluc3RhbGxlcnMsIGVuc3VyZSBjb25zaXN0ZW50IHNxbGl0ZTMgYmVoYXZpb3IgYW5kIGZlYXR1cmUgYXZhaWxhYmlsaXR5CisgIGJ5IGJ1aWxkaW5nIGEgbG9jYWwgY29weSBvZiBsaWJzcWxpdGUzIHJhdGhlciB0aGFuIGRlcGVuZGluZyBvbiB0aGUgd2lkZSByYW5nZQorICBvZiB2ZXJzaW9ucyBzdXBwbGllZCB3aXRoIHZhcmlvdXMgT1MgWCByZWxlYXNlcy4KKworLSBJc3N1ZSAjODg0NzogRGlzYWJsZSBDT01EQVQgZm9sZGluZyBpbiBXaW5kb3dzIFBHTyBidWlsZHMuCisKKy0gSXNzdWUgIzE0MDE4OiBGaXggT1MgWCBUY2wvVGsgZnJhbWV3b3JrIGNoZWNraW5nIHdoZW4gdXNpbmcgT1MgWCBTREtzLgorCistIElzc3VlICMxNjI1NjogT1MgWCBpbnN0YWxsZXIgbm93IHNldHMgY29ycmVjdCBwZXJtaXNzaW9ucyBmb3IgZG9jIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjMTU0MzE6IEFkZCBfZnJlZXplX2ltcG9ydGxpYiBwcm9qZWN0IHRvIHJlZ2VuZXJhdGUgaW1wb3J0bGliLmggb24KKyAgV2luZG93cy4gUGF0Y2ggYnkgS3Jpc3Rqw6FuIFZhbHVyIErDs25zc29uLgorCistIElzc3VlICMxNDE5NzogRm9yIE9TIFggZnJhbWV3b3JrIGJ1aWxkcywgZW5zdXJlIGxpbmtzIHRvIHRoZSBzaGFyZWQgbGlicmFyeQorICBhcmUgY3JlYXRlZCB3aXRoIHRoZSBwcm9wZXIgQUJJIHN1ZmZpeC4KKworLSBJc3N1ZSAjMTQzMzA6IEZvciBjcm9zcyBidWlsZHMsIGRvbid0IHVzZSBob3N0IHB5dGhvbiwgdXNlIGhvc3Qgc2VhcmNoIHBhdGhzCisgIGZvciBob3N0IGNvbXBpbGVyLgorCistIElzc3VlICMxNTIzNTogQWxsb3cgQmVya2xleSBEQiB2ZXJzaW9ucyB1cCB0byA1LjMgdG8gYnVpbGQgdGhlIGRibSBtb2R1bGUuCisKKy0gSXNzdWUgIzE1MjY4OiBTZWFyY2ggY3Vyc2VzLmggaW4gL3Vzci9pbmNsdWRlL25jdXJzZXN3LgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIEJldGEgMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjctSnVuLTIwMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIEZpeCBhIChtb3N0IGxpa2VseSkgdmVyeSByYXJlIG1lbW9yeSBsZWFrIHdoZW4gY2FsbGluZyBtYWluKCkgYW5kIG5vdCBiZWluZworICBhYmxlIHRvIGRlY29kZSBhIGNvbW1hbmQtbGluZSBhcmd1bWVudC4KKworLSBJc3N1ZSAjMTQ4MTU6IFVzZSBQeV9zc2l6ZV90IGluc3RlYWQgb2YgbG9uZyBmb3IgdGhlIG9iamVjdCBoYXNoLCB0bworICBwcmVzZXJ2ZSBhbGwgNjQgYml0cyBvZiBoYXNoIG9uIFdpbjY0LgorCistIElzc3VlICMxMjI2ODogRmlsZSByZWFkbGluZSwgcmVhZGxpbmVzIGFuZCByZWFkKCkgb3IgcmVhZGFsbCgpIG1ldGhvZHMKKyAgbm8gbG9uZ2VyIGxvc2UgZGF0YSB3aGVuIGFuIHVuZGVybHlpbmcgcmVhZCBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZC4KKyAgSU9FcnJvciBpcyBubyBsb25nZXIgcmFpc2VkIGR1ZSB0byBhIHJlYWQgc3lzdGVtIGNhbGwgcmV0dXJuaW5nIEVJTlRSCisgIGZyb20gd2l0aGluIHRoZXNlIG1ldGhvZHMuCisKKy0gSXNzdWUgIzExNjI2OiBBZGQgX1NpemVUIGZ1bmN0aW9ucyB0byBzdGFibGUgQUJJLgorCistIElzc3VlICMxNTE0NjogQWRkIFB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcy4gUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgorCistIElzc3VlICMxNTE0MjogRml4IHJlZmVyZW5jZSBsZWFrIHdoZW4gZGVhbGxvY2F0aW5nIGluc3RhbmNlcyBvZiB0eXBlcworICBjcmVhdGVkIHVzaW5nIFB5VHlwZV9Gcm9tU3BlYygpLgorCistIElzc3VlICMxNTA0MjogQWRkIFB5U3RhdGVfQWRkTW9kdWxlIGFuZCBQeVN0YXRlX1JlbW92ZU1vZHVsZS4gQWRkIHZlcnNpb24KKyAgZ3VhcmQgZm9yIFB5X0xJTUlURURfQVBJIGFkZGl0aW9ucy4gUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgorCistIElzc3VlICMxMDA1MzogRG9uJ3QgY2xvc2UgRkRzIHdoZW4gRmlsZUlPLl9faW5pdF9fIGZhaWxzLiBMb29zZWx5IGJhc2VkIG9uCisgIHRoZSB3b3JrIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgorCistIElzc3VlICMxNTA5NjogUmVtb3ZlZCBzdXBwb3J0IGZvciB1cicnIGFzIHRoZSByYXcgbm90YXRpb24gaXNuJ3QKKyAgY29tcGF0aWJsZSB3aXRoIFB5dGhvbiAyLngncyByYXcgdW5pY29kZSBzdHJpbmdzLgorCistIElzc3VlICMxMzc4MzogR2VuZXJhdG9yIG9iamVjdHMgbm93IHVzZSB0aGUgaWRlbnRpZmllciBBUElzIGludGVybmFsbHkKKworLSBJc3N1ZSAjMTQ4NzQ6IFJlc3RvcmUgY2hhcm1hcCBkZWNvZGluZyBzcGVlZCB0byBwcmUtUEVQIDM5MyBsZXZlbHMuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1MDI2OiB1dGYtMTYgZW5jb2RpbmcgaXMgbm93IHNpZ25pZmljYW50bHkgZmFzdGVyICh1cCB0byAxMHgpLgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxMTAyMjogb3BlbigpIGFuZCBpby5UZXh0SU9XcmFwcGVyIGFyZSBub3cgY2FsbGluZworICBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpIGluc3RlYWQgb2YgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKCkKKyAgaW4gdGV4dCBtb2RlIGlmIHRoZSBlbmNvZGluZyBpcyBub3Qgc3BlY2lmaWVkLiBEb24ndCBjaGFuZ2UgdGVtcG9yYXJ5IHRoZQorICBsb2NhbGUgZW5jb2RpbmcgdXNpbmcgbG9jYWxlLnNldGxvY2FsZSgpLCB1c2UgdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nCisgIGluc3RlYWQgb2YgdGhlIHVzZXIgcHJlZmVycmVkIGVuY29kaW5nLgorCistIElzc3VlICMxNDY3MzogQWRkIEVyaWMgU25vdydzIHN5cy5pbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjMTUwMzg6IE9wdGltaXplIHB5dGhvbiBMb2NrcyBvbiBXaW5kb3dzLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzE2MzA1OiBGaXggYSBzZWdtZW50YXRpb24gZmF1bHQgb2NjdXJyaW5nIHdoZW4gaW50ZXJydXB0aW5nCisgIG1hdGguZmFjdG9yaWFsLgorCistIElzc3VlICM5ODAzOiBEb24ndCBjbG9zZSBJRExFIG9uIHNhdmluZyBpZiBicmVha3BvaW50IGlzIG9wZW4uCisgIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorCistIElzc3VlICMxMjI4ODogQ29uc2lkZXIgJzAnIGFuZCAnMC4wJyBhcyB2YWxpZCBpbml0aWFsdmFsdWUKKyAgZm9yIHRraW50ZXIgU2ltcGxlRGlhbG9nLgorCistIElzc3VlICMxNTUxMjogQWRkIGEgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgcGFyc2VyLgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTQ2OTogQWRkIGEgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgZGVxdWUgb2JqZWN0cy4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTU0ODk6IEFkZCBhIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIEJ5dGVzSU8gb2JqZWN0cy4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTU0ODc6IEFkZCBhIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIGJ1ZmZlcmVkIEkvTyBvYmplY3RzLgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTUxNDogQ29ycmVjdCBfX3NpemVvZl9fIHN1cHBvcnQgZm9yIGNwdV9zZXQuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1MTg3OiBCdWdmaXg6IHJlbW92ZSB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMgdGVzdF9zaHV0aWwgd2FzIGxlYXZpbmcKKyAgYmVoaW5kLgorCistIElzc3VlICMxNTE3NzogQWRkZWQgZGlyX2ZkIHBhcmFtZXRlciB0byBvcy5md2FsaygpLgorCistIElzc3VlICMxNTE3NjogQ2xhcmlmaWVkIGJlaGF2aW9yLCBkb2N1bWVudGF0aW9uLCBhbmQgaW1wbGVtZW50YXRpb24KKyAgb2Ygb3MubGlzdGRpcigpLgorCistIElzc3VlICMxNTA2MTogUmUtaW1wbGVtZW50ZWQgaG1hYy5jb21wYXJlX2RpZ2VzdCgpIGluIEMgdG8gcHJldmVudCBmdXJ0aGVyCisgIHRpbWluZyBhbmFseXNpcyBhbmQgdG8gc3VwcG9ydCBhbGwgYnVmZmVyIHByb3RvY29sIGF3YXJlIG9iamVjdHMgYXMgd2VsbCBhcworICBBU0NJSSBvbmx5IHN0ciBpbnN0YW5jZXMgc2FmZWx5LgorCistIElzc3VlICMxNTE2NDogQ2hhbmdlIHJldHVybiB2YWx1ZSBvZiBwbGF0Zm9ybS51bmFtZSgpIGZyb20gYQorICBwbGFpbiB0dXBsZSB0byBhIGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUuCisKKy0gU3VwcG9ydCBNYWdlaWEgTGludXggaW4gdGhlIHBsYXRmb3JtIG1vZHVsZS4KKworLSBJc3N1ZSAjMTE2Nzg6IFN1cHBvcnQgQXJjaCBsaW51eCBpbiB0aGUgcGxhdGZvcm0gbW9kdWxlLgorCistIElzc3VlICMxNTExODogQ2hhbmdlIHJldHVybiB2YWx1ZSBvZiBvcy51bmFtZSgpIGFuZCBvcy50aW1lcygpIGZyb20KKyAgcGxhaW4gdHVwbGVzIHRvIGltbXV0YWJsZSBpdGVyYWJsZSBvYmplY3RzIHdpdGggbmFtZWQgYXR0cmlidXRlcworICAoc3RydWN0c2VxIG9iamVjdHMpLgorCistIFNwZWVkIHVwIF9kZWNpbWFsIGJ5IGFub3RoZXIgMTAtMTUlIGJ5IGNhY2hpbmcgdGhlIHRocmVhZCBsb2NhbCBjb250ZXh0CisgIHRoYXQgd2FzIGxhc3QgYWNjZXNzZWQuIEluIHRoZSBwaSBiZW5jaG1hcmsgKDY0LWJpdCBwbGF0Zm9ybSwgcHJlYz05KSwKKyAgX2RlY2ltYWwgaXMgbm93IG9ubHkgMS41eCBzbG93ZXIgdGhhbiBmbG9hdC4KKworLSBSZW1vdmUgdGhlIHBhY2thZ2luZyBtb2R1bGUsIHdoaWNoIGlzIG5vdCByZWFkeSBmb3IgcHJpbWUgdGltZS4KKworLSBJc3N1ZSAjMTUxNTQ6IEFkZCAiZGlyX2ZkIiBwYXJhbWV0ZXIgdG8gb3Mucm1kaXIsIHJlbW92ZSAicm1kaXIiCisgIHBhcmFtZXRlciBmcm9tIG9zLnJlbW92ZSAvIG9zLnVubGluay4KKworLSBJc3N1ZSAjNDQ4OTogQWRkIGEgc2h1dGlsLnJtdHJlZSB0aGF0IGlzbid0IHN1c2NlcHRpYmxlIHRvIHN5bWxpbmsgYXR0YWNrcy4KKyAgSXQgaXMgdXNlZCBhdXRvbWF0aWNhbGx5IG9uIHBsYXRmb3JtcyBzdXBwb3J0aW5nIHRoZSBuZWNlc3Nhcnkgb3Mub3BlbmF0KCkKKyAgYW5kIG9zLnVubGlua2F0KCkgZnVuY3Rpb25zLiBNYWluIGNvZGUgYnkgTWFydGluIHZvbiBMw7Z3aXMuCisKKy0gSXNzdWUgIzE1MTU2OiBIVE1MUGFyc2VyIG5vdyB1c2VzIHRoZSBuZXcgImh0bWwuZW50aXRpZXMuaHRtbDUiIGRpY3Rpb25hcnkuCisKKy0gSXNzdWUgIzExMTEzOiBhZGQgYSBuZXcgImh0bWw1IiBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIG5hbWVkIGNoYXJhY3RlcgorICByZWZlcmVuY2VzIGRlZmluZWQgYnkgdGhlIEhUTUw1IHN0YW5kYXJkIGFuZCB0aGUgZXF1aXZhbGVudCBVbmljb2RlCisgIGNoYXJhY3RlcihzKSB0byB0aGUgaHRtbC5lbnRpdGllcyBtb2R1bGUuCisKKy0gSXNzdWUgIzE1MTE0OiB0aGUgc3RyaWN0IG1vZGUgb2YgSFRNTFBhcnNlciBhbmQgdGhlIEhUTUxQYXJzZUVycm9yIGV4Y2VwdGlvbgorICBhcmUgZGVwcmVjYXRlZCBub3cgdGhhdCB0aGUgcGFyc2VyIGlzIGFibGUgdG8gcGFyc2UgaW52YWxpZCBtYXJrdXAuCisKKy0gSXNzdWUgIzM2NjU6IFx1IGFuZCBcVSBlc2NhcGVzIGFyZSBub3cgc3VwcG9ydGVkIGluIHVuaWNvZGUgcmVndWxhcgorICBleHByZXNzaW9ucy4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1MTUzOiBBZGRlZCBpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscyB0byBzaW1wbGlmeSB3aGl0ZSBib3gKKyAgdGVzdGluZyBvZiBnZW5lcmF0b3Igc3RhdGUgdXBkYXRlcworCistIElzc3VlICMxMzA2MjogQWRkZWQgaW5zcGVjdC5nZXRjbG9zdXJldmFycyB0byBzaW1wbGlmeSB0ZXN0aW5nIHN0YXRlZnVsCisgIGNsb3N1cmVzCisKKy0gSXNzdWUgIzExMDI0OiBGaXhlcyBhbmQgYWRkaXRpb25hbCB0ZXN0cyBmb3IgVGltZTJJbnRlcm5hbGRhdGUuCisKKy0gSXNzdWUgIzE0NjI2OiBMYXJnZSByZWZhY3RvcmluZyBvZiBmdW5jdGlvbnMgLyBwYXJhbWV0ZXJzIGluIHRoZSBvcyBtb2R1bGUuCisgIE1hbnkgZnVuY3Rpb25zIG5vdyBzdXBwb3J0ICJkaXJfZmQiIGFuZCAiZm9sbG93X3N5bWxpbmtzIiBwYXJhbWV0ZXJzOworICBzb21lIGFsc28gc3VwcG9ydCBhY2NlcHRpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgaW4gcGxhY2Ugb2YgYSBwYXRoCisgIHN0cmluZy4gIEFkZGVkIG9zLnN1cHBvcnRfKiBjb2xsZWN0aW9ucyBhcyBMQllMIGhlbHBlcnMuICBSZW1vdmVkIG1hbnkKKyAgZnVuY3Rpb25zIG9ubHkgcHJldmlvdXNseSBzZWVuIGluIDMuMyBhbHBoYSByZWxlYXNlcyAob2Z0ZW4gc3RhcnRpbmcgd2l0aAorICAiZiIgb3IgImwiLCBvciBlbmRpbmcgd2l0aCAiYXQiKS4gIE9yaWdpbmFsbHkgc3VnZ2VzdGVkIGJ5IFNlcmhpeSBTdG9yY2hha2E7CisgIGltcGxlbWVudGVkIGJ5IExhcnJ5IEhhc3RpbmdzLgorCistIElzc3VlICMxNTAwODogSW1wbGVtZW50IFBFUCAzNjIgIlNpZ25hdHVyZSBPYmplY3RzIi4KKyAgUGF0Y2ggYnkgWXVyeSBTZWxpdmFub3YuCisKKy0gSXNzdWU6ICMxNTEzODogYmFzZTY0LnVybHNhZmVfe2VuLGRlfWNvZGUoKSBhcmUgbm93IDMtNHggZmFzdGVyLgorCistIElzc3VlICM0NDQ1ODI6IEFkZCBzaHV0aWwud2hpY2gsIGZvciBmaW5kaW5nIHByb2dyYW1zIG9uIHRoZSBzeXN0ZW0gcGF0aC4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgRXJpayBEZW1haW5lLCB3aXRoIGxhdGVyIGl0ZXJhdGlvbnMgYnkgSmFuIEtpbGxpYW4KKyAgYW5kIEJyaWFuIEN1cnRpbi4KKworLSBJc3N1ZSAjMTQ4Mzc6IFNTTCBlcnJvcnMgbm93IGhhdmUgYGBsaWJyYXJ5YGAgYW5kIGBgcmVhc29uYGAgYXR0cmlidXRlcworICBkZXNjcmliaW5nIHByZWNpc2VseSB3aGF0IGhhcHBlbmVkIGFuZCBpbiB3aGljaCBPcGVuU1NMIHN1Ym1vZHVsZS4gIFRoZQorICBzdHIoKSBvZiBhIFNTTEVycm9yIGlzIGFsc28gZW5oYW5jZWQgYWNjb3JkaW5nbHkuCisKKy0gSXNzdWUgIzk1Mjc6IGRhdGV0aW1lLmFzdGltZXpvbmUoKSBtZXRob2Qgd2lsbCBub3cgc3VwcGx5IGEgY2xhc3MKKyAgdGltZXpvbmUgaW5zdGFuY2UgY29ycmVzcG9uZGluZyB0byB0aGUgc3lzdGVtIGxvY2FsIHRpbWV6b25lIHdoZW4KKyAgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzLgorCistIElzc3VlICMxNDY1MzogZW1haWwudXRpbHMubWt0aW1lX3R6KCkgbm8gbG9uZ2VyIHJlbGllcyBvbiBzeXN0ZW0KKyAgbWt0aW1lKCkgd2hlbiB0aW1lem9uZSBvZmZlc3QgaXMgc3VwcGxpZWQuCisKKy0gSXNzdWUgIzE0Njg0OiB6bGliLmNvbXByZXNzb2JqKCkgYW5kIHpsaWIuZGVjb21wcmVzc29iaigpIG5vdyBzdXBwb3J0IHRoZSB1c2UKKyAgb2YgcHJlZGVmaW5lZCBjb21wcmVzc2lvbiBkaWN0aW9uYXJpZXMuIE9yaWdpbmFsIHBhdGNoIGJ5IFNhbSBSdXNoaW5nLgorCistIEZpeCBHemlwRmlsZSdzIGhhbmRsaW5nIG9mIGZpbGVuYW1lcyBnaXZlbiBhcyBieXRlcyBvYmplY3RzLgorCistIElzc3VlICMxNDc3MjogUmV0dXJuIGRlc3RpbmF0aW9uIHZhbHVlcyBmcm9tIHNvbWUgc2h1dGlsIGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjMTUwNjQ6IEltcGxlbWVudCBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgZm9yIG11bHRpcHJvY2Vzc2luZyB0eXBlcworCistIElzc3VlICMxNTEwMTogTWFrZSBwb29sIGZpbmFsaXplciBhdm9pZCBqb2luaW5nIGN1cnJlbnQgdGhyZWFkLgorCistIElzc3VlICMxNDY1NzogVGhlIGZyb3plbiBpbnN0YW5jZSBvZiBpbXBvcnRsaWIgdXNlZCBmb3IgYm9vdHN0cmFwIGlzIG5vdworICBhbHNvIHRoZSBtb2R1bGUgaW1wb3J0ZWQgYXMgaW1wb3J0bGliLl9ib290c3RyYXAuCisKKy0gSXNzdWUgIzE0MDU1OiBBZGQgX19zaXplb2ZfXyBzdXBwb3J0IHRvIF9lbGVtZW50dHJlZS4KKworLSBJc3N1ZSAjMTUwNTQ6IEEgYnVnIGluIHRva2VuaXplLnRva2VuaXplIHRoYXQgY2F1c2VkIHN0cmluZyBsaXRlcmFscworICB3aXRoICdiJyBwcmVmaXhlcyB0byBiZSBpbmNvcnJlY3RseSB0b2tlbml6ZWQgaGFzIGJlZW4gZml4ZWQuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1MDA2OiBBbGxvdyBlcXVhbGl0eSBjb21wYXJpc29uIGJldHdlZW4gbmFpdmUgYW5kIGF3YXJlCisgIHRpbWUgb3IgZGF0ZXRpbWUgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTQ5ODI6IERvY3VtZW50IHRoYXQgcGtndXRpbCdzIGl0ZXJhdGlvbiBmdW5jdGlvbnMgcmVxdWlyZSB0aGUKKyAgbm9uLXN0YW5kYXJkIGl0ZXJfbW9kdWxlcygpIG1ldGhvZCB0byBiZSBkZWZpbmVkIGJ5IGFuIGltcG9ydGVyIChzb21ldGhpbmcKKyAgdGhlIGltcG9ydGxpYiBpbXBvcnRlcnMgZG8gbm90IGRlZmluZSkuCisKKy0gSXNzdWUgIzE1MDM2OiBNYWlsYm94IG5vIGxvbmdlciB0aHJvd3MgYW4gZXJyb3IgaWYgYSBmbHVzaCBpcyBkb25lCisgIGJldHdlZW4gb3BlcmF0aW9ucyB3aGVuIHJlbW92aW5nIG9yIGNoYW5naW5nIG11bHRpcGxlIGl0ZW1zIGluIG1ib3gsCisgIE1NREYsIG9yIEJhYnlsIG1haWxib3hlcy4KKworLSBJc3N1ZSAjMTQwNTk6IEltcGxlbWVudCBtdWx0aXByb2Nlc3NpbmcuQmFycmllci4KKworLSBJc3N1ZSAjMTUwNjE6IFRoZSBpbmFwcHJvcHJpYXRlbHkgbmFtZWQgaG1hYy5zZWN1cmVfY29tcGFyZSBoYXMgYmVlbgorICByZW5hbWVkIHRvIGhtYWMuY29tcGFyZV9kaWdlc3QsIHJlc3RyaWN0ZWQgdG8gb3BlcmF0aW5nIG9uIGJ5dGVzIGlucHV0cworICBvbmx5IGFuZCBoYWQgaXRzIGRvY3VtZW50YXRpb24gdXBkYXRlZCB0byBtb3JlIGFjY3VyYXRlbHkgcmVmbGVjdCBib3RoIGl0cworICBpbnRlbnQgYW5kIGl0cyBsaW1pdGF0aW9ucworCistIElzc3VlICMxMzg0MTogTWFrZSBjaGlsZCBwcm9jZXNzZXMgZXhpdCB1c2luZyBzeXMuZXhpdCgpIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzE0OTM2OiBjdXJzZXNfcGFuZWwgd2FzIGNvbnZlcnRlZCB0byBQRVAgMzEyMSBhbmQgUEVQIDM4NCBBUEkuCisgIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KKworLSBJc3N1ZSAjMTY2NzU0NjogT24gcGxhdGZvcm1zIHN1cHBvcnRpbmcgdG1fem9uZSBhbmQgdG1fZ210b2ZmIGZpZWxkcworICBpbiBzdHJ1Y3QgdG0sIHRpbWUuc3RydWN0X3RpbWUgb2JqZWN0cyByZXR1cm5lZCBieSB0aW1lLmdtdGltZSgpLAorICB0aW1lLmxvY2FsdGltZSgpIGFuZCB0aW1lLnN0cnB0aW1lKCkgZnVuY3Rpb25zIG5vdyBoYXZlIHRtX3pvbmUgYW5kCisgIHRtX2dtdG9mZiBhdHRyaWJ1dGVzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgUGF1bCBCb2RkaWUuCisKKy0gUmVuYW1lIGFkanVzdGVkIGF0dHJpYnV0ZSB0byBhZGp1c3RhYmxlIGluIHRpbWUuZ2V0X2Nsb2NrX2luZm8oKSByZXN1bHQuCisKKy0gSXNzdWUgIzM1MTg6IFJlbW92ZSByZWZlcmVuY2VzIHRvIG5vbi1leGlzdGVudCBCYXNlTWFuYWdlci5mcm9tX2FkZHJlc3MoKQorICBtZXRob2QuCisKKy0gSXNzdWUgIzEzODU3OiBBZGRlZCB0ZXh0d3JhcC5pbmRlbnQoKSBmdW5jdGlvbiAoaW5pdGlhbCBwYXRjaCBieSBFenJhCisgIEJlcmNoKQorCistIElzc3VlICMyNzM2OiBBZGRlZCBkYXRldGltZS50aW1lc3RhbXAoKSBtZXRob2QuCisKKy0gSXNzdWUgIzEzODU0OiBNYWtlIG11bHRpcHJvY2Vzc2luZyBwcm9wZXJseSBoYW5kbGUgbm9uLWludGVnZXIKKyAgbm9uLXN0cmluZyBhcmd1bWVudCB0byBTeXN0ZW1FeGl0LgorCistIElzc3VlICMxMjE1NzogTWFrZSBwb29sLm1hcCgpIGVtcHR5IGl0ZXJhYmxlcyBjb3JyZWN0bHkuICBJbml0aWFsCisgIHBhdGNoIGJ5IG1vdWFkLgorCistIElzc3VlICMxMTgyMzogZGlzYXNzZW1ibHkgbm93IHNob3dzIGFyZ3VtZW50IGNvdW50cyBvbiBjYWxscyB3aXRoIGtleXdvcmQgYXJncy4KKworLSBJc3N1ZSAjMTQ3MTE6IG9zLnN0YXRfZmxvYXRfdGltZXMoKSBoYXMgYmVlbiBkZXByZWNhdGVkLgorCistIExaTUFGaWxlIG5vdyBhY2NlcHRzIHRoZSBtb2RlcyAicmIiLyJ3YiIvImFiIiBhcyBzeW5vbnltcyBvZiAiciIvInciLyJhIi4KKworLSBUaGUgYnoyIGFuZCBsem1hIG1vZHVsZXMgbm93IGVhY2ggY29udGFpbiBhbiBvcGVuKCkgZnVuY3Rpb24sIGFsbG93aW5nCisgIGNvbXByZXNzZWQgZmlsZXMgdG8gcmVhZGlseSBiZSBvcGVuZWQgaW4gdGV4dCBtb2RlIGFzIHdlbGwgYXMgYmluYXJ5IG1vZGUuCisKKy0gQloyRmlsZS5fX2luaXRfXygpIGFuZCBMWk1BRmlsZS5fX2luaXRfXygpIG5vdyBhY2NlcHQgYSBmaWxlIG9iamVjdCBhcyB0aGVpcgorICBmaXJzdCBhcmd1bWVudCwgcmF0aGVyIHRoYW4gcmVxdWlyaW5nIGEgc2VwYXJhdGUgImZpbGVvYmoiIGFyZ3VtZW50LgorCistIGd6aXAub3BlbigpIG5vdyBhY2NlcHRzIGZpbGUgb2JqZWN0cyBhcyB3ZWxsIGFzIGZpbGVuYW1lcy4KKworLSBJc3N1ZSAjMTQ5OTI6IG9zLm1ha2VkaXJzKHBhdGgsIGV4aXN0X29rPVRydWUpIHdvdWxkIHJhaXNlIGFuIE9TRXJyb3IKKyAgd2hlbiB0aGUgcGF0aCBleGlzdGVkIGFuZCBoYWQgdGhlIFNfSVNHSUQgbW9kZSBiaXQgc2V0IHdoZW4gaXQgd2FzCisgIG5vdCBleHBsaWNpdGx5IGFza2VkIGZvci4gIFRoaXMgaXMgbm8gbG9uZ2VyIGFuIGV4Y2VwdGlvbiBhcyBta2RpcgorICBjYW5ub3QgY29udHJvbCBpZiB0aGUgT1Mgc2V0cyB0aGF0IGJpdCBmb3IgaXQgb3Igbm90LgorCistIElzc3VlICMxNDk4OTogTWFrZSB0aGUgQ0dJIGVuYWJsZSBvcHRpb24gdG8gaHR0cC5zZXJ2ZXIgYXZhaWxhYmxlIHZpYSBjb21tYW5kCisgIGxpbmUuCisKKy0gSXNzdWUgIzE0OTg3OiBBZGQgYSBtaXNzaW5nIGltcG9ydCBzdGF0ZW1lbnQgdG8gaW5zcGVjdC4KKworLSBJc3N1ZSAjMTA3OTogZW1haWwuaGVhZGVyLmRlY29kZV9oZWFkZXIgbm93IGNvcnJlY3RseSBwYXJzZXMgYWxsIHRoZSBleGFtcGxlcworICBpbiBSRkMyMDQ3LiAgVGhlcmUgaXMgYSBuZWNlc3NhcnkgdmlzaWJsZSBiZWhhdmlvciBjaGFuZ2U6IHRoZSBsZWFkaW5nIGFuZC9vcgorICB0cmFpbGluZyB3aGl0ZXNwYWNlIG9uIEFTQ0lJIHBhcnRzIGlzIG5vdyBwcmVzZXJ2ZWQuCisKKy0gSXNzdWUgIzE0OTY5OiBCZXR0ZXIgaGFuZGxpbmcgb2YgZXhjZXB0aW9uIGNoYWluaW5nIGluIGNvbnRleHRsaWIuRXhpdFN0YWNrCisKKy0gSXNzdWUgIzE0OTYyOiBVcGRhdGUgdGV4dCBjb2xvcmluZyBpbiBJRExFIHNoZWxsIHdpbmRvdyBhZnRlciBjaGFuZ2luZworICBvcHRpb25zLiAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCisKKy0gSXNzdWUgIzE0OTYzOiBDb252ZXJ0IGNvbnRleHRsaWIuRXhpdFN0YWNrLl9fZXhpdF9fIHRvIHVzZSBhbiBpdGVyYXRpdmUKKyAgYWxnb3JpdGhtIChQYXRjaCBieSBBbG9uIEhvcmV2KQorCistIElzc3VlICMxNDc4NTogQWRkIHN5cy5fZGVidWdtYWxsb2NzdGF0cygpIHRvIGhlbHAgZGVidWcgbG93LWxldmVsIG1lbW9yeQorICBhbGxvY2F0aW9uIGlzc3VlcworCistIElzc3VlICMxNDQ0MzogRW5zdXJlIHRoYXQgLnB5IGZpbGVzIGFyZSBieXRlLWNvbXBpbGVkIHdpdGggdGhlIGNvcnJlY3QgUHl0aG9uCisgIGV4ZWN1dGFibGUgd2l0aGluIGJkaXN0X3JwbSBldmVuIG9uIG9sZGVyIHZlcnNpb25zIG9mIFJQTQorCitDLUFQSQorLS0tLS0KKworLSBJc3N1ZSAjMTM3ODM6IEluYWR2ZXJ0ZW50IGFkZGl0aW9ucyB0byB0aGUgcHVibGljIEMgQVBJIGluIHRoZSBQRVAgMzgwCisgIGltcGxlbWVudGF0aW9uIGhhdmUgZWl0aGVyIGJlZW4gcmVtb3ZlZCBvciBtYXJrZWQgYXMgcHJpdmF0ZSBpbnRlcmZhY2VzLgorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTUwMDA6IFN1cHBvcnQgdGhlICJ1bmlxdWUiIHgzMiBhcmNoaXRlY3R1cmUgaW4gX3Bvc2l4c3VicHJvY2Vzcy5jLgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE1MDgxOiBEb2N1bWVudCBQeVN0YXRlX0ZpbmRNb2R1bGUuCisgIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KKworLSBJc3N1ZSAjMTQ4MTQ6IEFkZGVkIGZpcnN0IGRyYWZ0IG9mIGlwYWRkcmVzcyBtb2R1bGUgQVBJIHJlZmVyZW5jZQorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTQ3Njk6IHRlc3RfY2FwaSBub3cgaGFzIFNraXBpdGVtVGVzdCwgd2hpY2ggY2xldmVybHkgY2hlY2tzCisgIGZvciAicGFyaXR5IiBiZXR3ZWVuIFB5QXJnX1BhcnNlVHVwbGUoKSBhbmQgdGhlIFB5dGhvbi9nZXRhcmdzLmMgc3RhdGljCisgIGZ1bmN0aW9uIHNraXBpdGVtKCkgZm9yIGFsbCBwb3NzaWJsZSAiZm9ybWF0IHVuaXRzIi4KKworLSB0ZXN0X25udHBsaWIgbm93IHRvbGVyYXRlcyBiZWluZyBydW4gZnJvbSBiZWhpbmQgTk5UUCBnYXRld2F5cyB0aGF0IGFkZAorICAiWC1BbnRpdmlydXMiIGhlYWRlcnMgdG8gYXJ0aWNsZXMKKworLSBJc3N1ZSAjMTUwNDM6IHRlc3RfZ2RiIGlzIG5vdyBza2lwcGVkIGVudGlyZWx5IGlmIGdkYiBzZWN1cml0eSBzZXR0aW5ncworICBibG9jayBsb2FkaW5nIG9mIHRoZSBnZGIgaG9va3MKKworLSBJc3N1ZSAjMTQ5NjM6IEFkZCB0ZXN0IGNhc2VzIGZvciBleGNlcHRpb24gaGFuZGxpbmcgYmVoYXZpb3VyCisgIGluIGNvbnRleHRsaWIuRXhpdFN0YWNrIChJbml0aWFsIHBhdGNoIGJ5IEFsb24gSG9yZXYpCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxMzU5MDogSW1wcm92ZSBzdXBwb3J0IGZvciBPUyBYIFhjb2RlIDQ6CisgICAgKiBUcnkgdG8gYXZvaWQgYnVpbGRpbmcgUHl0aG9uIG9yIGV4dGVuc2lvbiBtb2R1bGVzIHdpdGggcHJvYmxlbWF0aWMKKyAgICAgIGxsdm0tZ2NjIGNvbXBpbGVyLgorICAgICogU2luY2UgWGNvZGUgNCByZW1vdmVzIHBwYyBzdXBwb3J0LCBleHRlbnNpb24gbW9kdWxlIGJ1aWxkcyBub3cKKyAgICAgIGNoZWNrIGZvciBwcGMgY29tcGlsZXIgc3VwcG9ydCBhbmQgYXV0b21hdGljYWxseSByZW1vdmUgcHBjIGFuZAorICAgICAgcHBjNjQgYXJjaHMgd2hlbiBub3QgYXZhaWxhYmxlLgorICAgICogU2luY2UgWGNvZGUgNCBubyBsb25nZXIgaW5zdGFsbCBTREtzIGluIGRlZmF1bHQgbG9jYXRpb25zLAorICAgICAgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZHMgbm93IHJldmVydCB0byB1c2luZyBpbnN0YWxsZWQgaGVhZGVycworICAgICAgYW5kIGxpYnMgaWYgdGhlIFNESyB1c2VkIHRvIGJ1aWxkIHRoZSBpbnRlcnByZXRlciBpcyBub3QKKyAgICAgIGF2YWlsYWJsZS4KKyAgICAqIFVwZGF0ZSAuL2NvbmZpZ3VyZSB0byB1c2UgYmV0dGVyIGRlZmF1bHRzIGZvciB1bml2ZXJzYWwgYnVpbGRzOworICAgICAgaW4gcGFydGljdWxhciwgLS1lbmFibGUtdW5pdmVyc2Fsc2RrPXllcyB1c2VzIHRoZSBYY29kZSBkZWZhdWx0CisgICAgICBTREsgYW5kIC0td2l0aC11bml2ZXJzYWwtYXJjaHMgbm93IGRlZmF1bHRzIHRvICJpbnRlbCIgaWYgcHBjCisgICAgICBub3QgYXZhaWxhYmxlLgorCistIElzc3VlICMxNDIyNTogRml4IFVuaWNvZGUgc3VwcG9ydCBmb3IgY3Vyc2VzICgjMTI1NjcpIG9uIE9TIFgKKworLSBJc3N1ZSAjMTQ5Mjg6IEZpeCBpbXBvcnRsaWIgYm9vdHN0cmFwIGlzc3VlcyBieSB1c2luZyBhIGN1c3RvbSBleGVjdXRhYmxlCisgIChNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliKSB0byBidWlsZCBQeXRob24vaW1wb3J0bGliLmguCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQWxwaGEgND8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDMxLU1heS0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTQ4MzU6IE1ha2UgcGxpc3RsaWIgb3V0cHV0IGVtcHR5IGFycmF5cyAmIGRpY3RzIGxpa2UgT1MgWC4KKyAgUGF0Y2ggYnkgU2lkbmV5IFNhbiBNYXJ0w61uLgorCistIElzc3VlICMxNDc0NDogVXNlIHRoZSBuZXcgX1B5VW5pY29kZVdyaXRlciBpbnRlcm5hbCBBUEkgdG8gc3BlZWQgdXAKKyAgc3RyJWFyZ3MgYW5kIHN0ci5mb3JtYXQoYXJncykuCisKKy0gSXNzdWUgIzE0OTMwOiBNYWtlIG1lbW9yeXZpZXcgb2JqZWN0cyB3ZWFrcmVmYWJsZS4KKworLSBJc3N1ZSAjMTQ3NzU6IEZpeCBhIHBvdGVudGlhbCBxdWFkcmF0aWMgZGljdCBidWlsZC11cCBkdWUgdG8gdGhlIGdhcmJhZ2UKKyAgY29sbGVjdG9yIHJlcGVhdGVkbHkgdHJ5aW5nIHRvIHVudHJhY2sgZGljdHMuCisKKy0gSXNzdWUgIzE0ODU3OiBmaXggcmVncmVzc2lvbiBpbiByZWZlcmVuY2VzIHRvIFBFUCAzMTM1IGltcGxpY2l0IF9fY2xhc3NfXworICBjbG9zdXJlIHZhcmlhYmxlIChSZW9wZW5zIGlzc3VlICMxMjM3MCkKKworLSBJc3N1ZSAjMTQ3MTIgKFBFUCA0MDUpOiBWaXJ0dWFsIGVudmlyb25tZW50cy4gSW1wbGVtZW50ZWQgYnkgVmluYXkgU2FqaXAuCisKKy0gSXNzdWUgIzE0NjYwIChQRVAgNDIwKTogTmFtZXNwYWNlIHBhY2thZ2VzLiBJbXBsZW1lbnRlZCBieSBFcmljIFNtaXRoLgorCistIElzc3VlICMxNDQ5NDogRml4IF9fZnV0dXJlX18ucHkgYW5kIGl0cyBkb2N1bWVudGF0aW9uIHRvIG5vdGUgdGhhdAorICBhYnNvbHV0ZSBpbXBvcnRzIGFyZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBpbiAzLjAgaW5zdGVhZCBvZiAyLjcuCisgIFBhdGNoIGJ5IFN2ZW4gTWFybmFjaC4KKworLSBJc3N1ZSAjOTI2MDogQSBmaW5lci1ncmFpbmVkIGltcG9ydCBsb2NrLiAgTW9zdCBvZiB0aGUgaW1wb3J0IHNlcXVlbmNlCisgIG5vdyB1c2VzIHBlci1tb2R1bGUgbG9ja3MgcmF0aGVyIHRoYW4gdGhlIGdsb2JhbCBpbXBvcnQgbG9jaywgZWxpbWluYXRpbmcKKyAgd2VsbC1rbm93biBpc3N1ZXMgd2l0aCB0aHJlYWRzIGFuZCBpbXBvcnRzLgorCistIElzc3VlICMxNDYyNDogVVRGLTE2IGRlY29kaW5nIGlzIG5vdyAzeCB0byA0eCBmYXN0ZXIgb24gdmFyaW91cyBpbnB1dHMuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gYXNkbF9zZXEgYW5kIGFzZGxfaW50X3NlcSBhcmUgbm93IFB5X3NzaXplX3Qgc2l6ZWQuCisKKy0gSXNzdWUgIzE0MTMzIChQRVAgNDE1KTogSW1wbGVtZW50IHN1cHByZXNzaW9uIG9mIF9fY29udGV4dF9fIGRpc3BsYXkgd2l0aCBhbgorICBhdHRyaWJ1dGUgb24gQmFzZUV4Y2VwdGlvbi4gVGhpcyByZXBsYWNlcyB0aGUgb3JpZ2luYWwgbWVjaGFuaXNtIG9mIFBFUCA0MDkuCisKKy0gSXNzdWUgIzE0NDE3OiBNdXRhdGluZyBhIGRpY3QgZHVyaW5nIGxvb2t1cCBub3cgcmVzdGFydHMgdGhlIGxvb2t1cCBpbnN0ZWFkCisgIG9mIHJhaXNpbmcgYSBSdW50aW1lRXJyb3IgKHVuZG9lcyBpc3N1ZSAjMTQyMDUpLgorCistIElzc3VlICMxNDczODogU3BlZWQtdXAgVVRGLTggZGVjb2Rpbmcgb24gbm9uLUFTQ0lJIGRhdGEuICBQYXRjaCBieSBTZXJoaXkKKyAgU3RvcmNoYWthLgorCistIElzc3VlICMxNDcwMDogRml4IHR3byBicm9rZW4gYW5kIHVuZGVmaW5lZC1iZWhhdmlvdXItaW5kdWNpbmcgb3ZlcmZsb3cgY2hlY2tzCisgIGluIG9sZC1zdHlsZSBzdHJpbmcgZm9ybWF0dGluZy4KKworLSBJc3N1ZSAjMTQ3MDU6IFRoZSBQeUFyZ19QYXJzZSgpIGZhbWlseSBvZiBmdW5jdGlvbnMgbm93IHN1cHBvcnQgdGhlICdwJyBmb3JtYXQKKyAgdW5pdCwgd2hpY2ggYWNjZXB0cyBhICJib29sZWFuIHByZWRpY2F0ZSIgYXJndW1lbnQuICBJdCBjb252ZXJ0cyBhbnkgUHl0aG9uCisgIHZhbHVlIGludG8gYW4gaW50ZWdlci0tMCBpZiBpdCBpcyAiZmFsc2UiLCBhbmQgMSBvdGhlcndpc2UuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTQ2OTA6IFVzZSBtb25vdG9uaWMgY2xvY2sgaW5zdGVhZCBvZiBzeXN0ZW0gY2xvY2sgaW4gdGhlIHNjaGVkLAorICBzdWJwcm9jZXNzIGFuZCB0cmFjZSBtb2R1bGVzLgorCistIElzc3VlICMxNDk1ODogQ2hhbmdlIElETEUgc3lzdGF4IGhpZ2hsaWdodGluZyB0byByZWNvZ25pemUgYWxsIHN0cmluZyBhbmQKKyAgYnl0ZSBsaXRlcmFscyBzdXBwb3J0ZWQgaW4gUHl0aG9uIDMuMy4KKworLSBJc3N1ZSAjMTA5OTc6IFByZXZlbnQgYSBkdXBsaWNhdGUgZW50cnkgaW4gSURMRSdzICJSZWNlbnQgRmlsZXMiIG1lbnUuCisKKy0gSXNzdWUgIzE0NDQzOiBUZWxsIHJwbWJ1aWxkIHRvIHVzZSB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mIFB5dGhvbiBpbgorICBiZGlzdF9ycG0uIEluaXRpYWwgcGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCisKKy0gSXNzdWUgIzE0OTI5OiBTdG9wIElkbGUgMy54IGZyb20gY2xvc2luZyBvbiBVbmljb2RlIGRlY29kZSBlcnJvcnMgd2hlbgorICBncmVwcGluZy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCisKKy0gSXNzdWUgIzEyNTE1OiBlbWFpbCBub3cgcmVnaXN0ZXJzIGEgZGVmZWN0IGlmIGl0IGdldHMgdG8gRU9GIHdoaWxlIHBhcnNpbmcKKyAgYSBNSU1FIHBhcnQgd2l0aG91dCBzZWVpbmcgdGhlIGNsb3NpbmcgTUlNRSBib3VuZGFyeS4KKworLSBJc3N1ZSAjMTI1MTA6IEF0dGVtcHRpbmcgdG8gZ2V0IGludmFsaWQgdG9vbHRpcCBubyBsb25nZXIgY2xvc2VzIElkbGUuCisgIE90aGVyIHRvb2x0aXBzcyBoYXZlIGJlZW4gY29ycmVjdGVkIG9yIGltcHJvdmVkIGFuZCB0aGUgbnVtYmVyIG9mIHRlc3RzCisgIGhhcyBiZWVuIHRyaXBsZWQuIE9yaWdpbmFsIHBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorCistIElzc3VlICMxNjcyNTY4OiBlbWFpbCBub3cgYWx3YXlzIGRlY29kZXMgYmFzZTY0IHBheWxvYWRzLCBhZGRpbmcgcGFkZGluZyBhbmQKKyAgaWdub3Jpbmcgbm9uLWJhc2U2NC1hbHBoYWJldCBjaGFyYWN0ZXJzIGlmIG5lZWRlZCwgYW5kIHJlZ2lzdGVyaW5nIGRlZmVjdHMKKyAgZm9yIGFueSBzdWNoIHByb2JsZW1zLgorCistIElzc3VlICMxNDkyNTogZW1haWwgbm93IHJlZ2lzdGVycyBhIGRlZmVjdCB3aGVuIHRoZSBwYXJzZXIgZGVjaWRlcyB0aGF0IHRoZXJlCisgIGlzIGEgbWlzc2luZyBoZWFkZXIvYm9keSBzZXBhcmF0b3IgbGluZS4gIE1hbGZvcm1lZEhlYWRlckRlZmVjdCwgd2hpY2ggdGhlCisgIGV4aXN0aW5nIGNvZGUgd291bGQgbmV2ZXIgYWN0dWFsbHkgZ2VuZXJhdGUsIGlzIGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzEwMzY1OiBGaWxlIG9wZW4gZGlhbG9nIG5vdyB3b3JrcyBpbnN0ZWFkIG9mIGNyYXNoaW5nIGV2ZW4gd2hlbgorICB0aGUgcGFyZW50IHdpbmRvdyBpcyBjbG9zZWQgYmVmb3JlIHRoZSBkaWFsb2cuIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorCistIElzc3VlICM4NzM5OiBVcGRhdGVkIHNtdHBkIHRvIHN1cHBvcnQgUkZDIDUzMjEsIGFuZCBhZGRlZCBzdXBwb3J0IGZvciB0aGUKKyAgUkZDIDE4NzAgU0laRSBleHRlbnNpb24uCisKKy0gSXNzdWUgIzY2NTE5NDogQWRkZWQgYSBsb2NhbHRpbWUgZnVuY3Rpb24gdG8gZW1haWwudXRpbHMgdG8gcHJvdmlkZSBhbgorICBhd2FyZSBsb2NhbCBkYXRldGltZSBmb3IgdXNlIGluIHNldHRpbmcgRGF0ZSBoZWFkZXJzLgorCistIElzc3VlICMxMjU4NjogQWRkZWQgbmV3IHByb3Zpc2lvbmFsIHBvbGljaWVzIHRoYXQgaW1wbGVtZW50IGNvbnZlbmllbnQKKyAgdW5pY29kZSBzdXBwb3J0IGZvciBlbWFpbCBoZWFkZXJzLiAgU2VlIFdoYXQncyBOZXcgZm9yIGRldGFpbHMuCisKKy0gSXNzdWUgIzE0NzMxOiBSZWZhY3RvcmVkIGVtYWlsIFBvbGljeSBmcmFtZXdvcmsgdG8gc3VwcG9ydCBmdWxsIGJhY2t3YXJkCisgIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMy4yIGJ5IGRlZmF1bHQgeWV0IGFsbG93IGZvciB0aGUgaW50cm9kdWN0aW9uIG9mCisgIG5ldyBmZWF0dXJlcyB0aHJvdWdoIG5ldyBwb2xpY2llcy4gIE5vdGUgdGhhdCBQb2xpY3kubXVzdF9iZV83Yml0IGlzIHJlbmFtZWQKKyAgdG8gY3RlX3R5cGUuCisKKy0gSXNzdWUgIzE0ODc2OiBVc2UgdXNlci1zZWxlY3RlZCBmb250IGZvciBoaWdobGlnaHQgY29uZmlndXJhdGlvbi4KKworLSBJc3N1ZSAjMTQ5MjA6IEZpeCB0aGUgaGVscCh1cmxsaWIucGFyc2UpIGZhaWx1cmUgb24gbG9jYWxlIEMgb24gdGVybWluYWxzLgorICBIYXZlIGFzY2lpIGNoYXJhY3RlcnMgaW4gaGVscC4KKworLSBJc3N1ZSAjMTQ1NDg6IE1ha2UgbXVsdGlwcm9jZXNzaW5nIGZpbmFsaXplcnMgY2hlY2sgcGlkIGJlZm9yZQorICBydW5uaW5nIHRvIGNvcGUgd2l0aCBwb3NzaWJpbGl0eSBvZiBnYyBydW5uaW5nIGp1c3QgYWZ0ZXIgZm9yay4KKworLSBJc3N1ZSAjMTQ4NjM6IFVwZGF0ZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBvcy5mZG9wZW4oKSB0byByZWZsZWN0IHRoZQorICBmYWN0IHRoYXQgaXQncyBvbmx5IGEgdGhpbiB3cmFwcGVyIGFyb3VuZCBvcGVuKCkgYW55bW9yZS4KKworLSBJc3N1ZSAjMTQwMzY6IEFkZCBhbiBhZGRpdGlvbmFsIGNoZWNrIHRvIHZhbGlkYXRlIHRoYXQgcG9ydCBpbiB1cmxwYXJzZSBkb2VzCisgIG5vdCBnbyBpbiBpbGxlZ2FsIHJhbmdlIGFuZCByZXR1cm5zIE5vbmUuCisKKy0gSXNzdWUgIzE0ODYyOiBBZGQgbWlzc2luZyBuYW1lcyB0byBvcy5fX2FsbF9fCisKKy0gSXNzdWUgIzE0ODc1OiBVc2UgZmxvYXQoJ2luZicpIGluc3RlYWQgb2YgZmxvYXQoJzFlNjY2NjYnKSBpbiB0aGUganNvbiBtb2R1bGUuCisKKy0gSXNzdWUgIzEzNTg1OiBBZGRlZCBjb250ZXh0bGliLkV4aXRTdGFjaworCistIFBFUCAzMTQ0LCBJc3N1ZSAjMTQ4MTQ6IEFkZGVkIHRoZSBpcGFkZHJlc3MgbW9kdWxlCisKKy0gSXNzdWUgIzE0NDI2OiBDb3JyZWN0IHRoZSBEYXRlIGZvcm1hdCBpbiBFeHBpcmVzIGF0dHJpYnV0ZSBvZiBTZXQtQ29va2llCisgIEhlYWRlciBpbiBDb29raWUucHkuCisKKy0gSXNzdWUgIzE0NTg4OiBUaGUgdHlwZXMgbW9kdWxlIG5vdyBwcm92aWRlIG5ld19jbGFzcygpIGFuZCBwcmVwYXJlX2NsYXNzKCkKKyAgZnVuY3Rpb25zIHRvIHN1cHBvcnQgUEVQIDMxMTUgY29tcGxpYW50IGR5bmFtaWMgY2xhc3MgY3JlYXRpb24uIFBhdGNoIGJ5CisgIERhbmllbCBVcmJhbiBhbmQgTmljayBDb2dobGFuLgorCistIElzc3VlICMxMzE1MjogQWxsb3cgdG8gc3BlY2lmeSBhIGN1c3RvbSB0YWJzaXplIGZvciBleHBhbmRpbmcgdGFicyBpbgorICB0ZXh0d3JhcC4gUGF0Y2ggYnkgSm9obiBGZXVlcnN0ZWluLgorCistIElzc3VlICMxNDcyMTogU2VuZCB0aGUgY29ycmVjdCAnQ29udGVudC1sZW5ndGg6IDAnIGhlYWRlciB3aGVuIHRoZSBib2R5IGlzIGFuCisgIGVtcHR5IHN0cmluZyAnJy4gSW5pdGlhbCBQYXRjaCBjb250cmlidXRlZCBieSBBcnZlIEtudWRzZW4uCisKKy0gSXNzdWUgIzE0MDcyOiBGaXggcGFyc2luZyBvZiAndGVsJyBVUklzIGluIHVybHBhcnNlIGJ5IG1ha2luZyB0aGUgY2hlY2sgZm9yCisgIHBvcnRzIHN0cmljdGVyLgorCistIElzc3VlICM5Mzc0OiBHZW5lcmljIHBhcnNpbmcgb2YgcXVlcnkgYW5kIGZyYWdtZW50IHBvcnRpb25zIG9mIHVybCBmb3IgYW55CisgIHNjaGVtZS4gU3VwcG9ydGVkIGJvdGggYnkgUkZDMzk4NiBhbmQgUkZDMjM5Ni4KKworLSBJc3N1ZSAjMTQ3OTg6IEZpeCB0aGUgZnVuY3Rpb25zIGluIHB5Y2xiciB0byByYWlzZSBhbiBJbXBvcnRFcnJvcgorICB3aGVuIHRoZSBmaXJzdCBwYXJ0IG9mIGEgZG90dGVkIG5hbWUgaXMgbm90IGEgcGFja2FnZS4gUGF0Y2ggYnkKKyAgWGF2aWVyIGRlIEdheWUuCisKKy0gSXNzdWUgIzEyMDk4OiBtdWx0aXByb2Nlc3Npbmcgb24gV2luZG93cyBub3cgc3RhcnRzIGNoaWxkIHByb2Nlc3NlcworICB1c2luZyB0aGUgc2FtZSBzeXMuZmxhZ3MgYXMgdGhlIGN1cnJlbnQgcHJvY2Vzcy4gIEluaXRpYWwgcGF0Y2ggYnkKKyAgU2VyZ2V5IE1lemVudHNldi4KKworLSBJc3N1ZSAjMTMwMzE6IFNtYWxsIHNwZWVkLXVwIGZvciB0YXJmaWxlIHdoZW4gdW56aXBwaW5nIHRhcmZpbGVzLgorICBQYXRjaCBieSBKdXN0aW4gUGVlbC4KKworLSBJc3N1ZSAjMTQ3ODA6IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oKSBub3cgaGFzIGEgYGBjYWRlZmF1bHRgYCBhcmd1bWVudAorICB0byB1c2UgdGhlIGRlZmF1bHQgY2VydGlmaWNhdGUgc3RvcmUuICBJbml0aWFsIHBhdGNoIGJ5IEphbWVzIE9ha2xleS4KKworLSBJc3N1ZSAjMTQ4Mjk6IEZpeCBiaXNlY3QgYW5kIHJhbmdlKCkgaW5kZXhpbmcgd2l0aCBsYXJnZSBpbmRpY2VzCisgICg+PSAyICoqIDMyKSB1bmRlciA2NC1iaXQgV2luZG93cy4KKworLSBJc3N1ZSAjMTQ3MzI6IFRoZSBfY3N2IG1vZHVsZSBub3cgdXNlcyBQRVAgMzEyMSBtb2R1bGUgaW5pdGlhbGl6YXRpb24uCisgIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KKworLSBJc3N1ZSAjMTQ4MDk6IEFkZCBIVFRQIHN0YXR1cyBjb2RlcyBpbnRyb2R1Y2VkIGJ5IFJGQyA2NTg1IHRvIGh0dHAuc2VydmVyCisgIGFuZCBodHRwLmNsaWVudC4gUGF0Y2ggYnkgRXVuZ0p1biBZaS4KKworLSBJc3N1ZSAjMTQ3Nzc6IHRraW50ZXIgbWF5IHJldHVybiB1bmRlY29kZWQgVVRGLTggYnl0ZXMgYXMgYSBzdHJpbmcgd2hlbgorICBhY2Nlc3NpbmcgdGhlIFRrIGNsaXBib2FyZC4gIE1vZGlmeSBjbGlwYm9hZF9nZXQoKSB0byBmaXJzdCByZXF1ZXN0IHR5cGUKKyAgVVRGOF9TVFJJTkcgd2hlbiBubyBzcGVjaWZpYyB0eXBlIGlzIHJlcXVlc3RlZCBpbiBhbiBYMTEgd2luZG93aW5nCisgIGVudmlyb25tZW50LCBmYWxsaW5nIGJhY2sgdG8gdGhlIGN1cnJlbnQgZGVmYXVsdCB0eXBlIFNUUklORyBpZiB0aGF0IGZhaWxzLgorICBPcmlnaW5hbCBwYXRjaCBieSBUaG9tYXMgS2x1eXZlci4KKworLSBJc3N1ZSAjMTQ3NzM6IEZpeCBvcy5md2FsaygpIGZhaWxpbmcgb24gZGFuZ2xpbmcgc3ltbGlua3MuCisKKy0gSXNzdWUgIzEyNTQxOiBCZSBsZW5pZW50IHdpdGggcXVvdGVzIGFyb3VuZCBSZWFsbSBmaWVsZCBvZiBIVFRQIEJhc2ljCisgIEF1dGhlbnRhdGlvbiBpbiB1cmxsaWIyLgorCistIElzc3VlICMxNDgwNzogbW92ZSB1bmRvY3VtZW50ZWQgdGFyZmlsZS5maWxlbW9kZSgpIHRvIHN0YXQuZmlsZW1vZGUoKSBhbmQgYWRkCisgIGRvYyBlbnRyeS4gQWRkIHRhcmZpbGUuZmlsZW1vZGUgYWxpYXMgd2l0aCBkZXByZWNhdGlvbiB3YXJuaW5nLgorCistIElzc3VlICMxMzgxNTogVGFyRmlsZS5leHRyYWN0ZmlsZSgpIG5vdyByZXR1cm5zIGlvLkJ1ZmZlcmVkUmVhZGVyIG9iamVjdHMuCisKKy0gSXNzdWUgIzE0NTMyOiBBZGQgYSBzZWN1cmVfY29tcGFyZSgpIGhlbHBlciB0byB0aGUgaG1hYyBtb2R1bGUsIHRvIG1pdGlnYXRlCisgIHRpbWluZyBhdHRhY2tzLiBQYXRjaCBieSBKb24gT2JlcmhlaWRlLgorCistIEFkZCBpbXBvcnRsaWIudXRpbC5yZXNvbHZlX25hbWUoKS4KKworLSBJc3N1ZSAjMTQzNjY6IFN1cHBvcnQgbHptYSBjb21wcmVzc2lvbiBpbiB6aXAgZmlsZXMuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzEzOTU5OiBJbnRyb2R1Y2UgaW1wb3J0bGliLmZpbmRfbG9hZGVyKCkgYW5kIGRvY3VtZW50CisgIGltcC5maW5kX21vZHVsZS9sb2FkX21vZHVsZSBhcyBkZXByZWNhdGVkLgorCistIElzc3VlICMxNDA4Mjogc2h1dGlsLmNvcHkyKCkgbm93IGNvcGllcyBleHRlbmRlZCBhdHRyaWJ1dGVzLCBpZiBwb3NzaWJsZS4KKyAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgorCistIElzc3VlICMxMzk1OTogTWFrZSBpbXBvcnRsaWIuYWJjLkZpbGVMb2FkZXIubG9hZF9tb2R1bGUoKS9nZXRfZmlsZW5hbWUoKSBhbmQKKyAgaW1wb3J0bGliLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyLmxvYWRfbW9kdWxlKCkgaGF2ZSB0aGVpciBzaW5nbGUKKyAgYXJndW1lbnQgYmUgb3B0aW9uYWwuIEFsbG93cyBmb3IgdGhlIHJlcGxhY2VtZW50IChhbmQgdGh1cyBkZXByZWNhdGlvbikgb2YKKyAgaW1wLmxvYWRfc291cmNlKCkvbG9hZF9wYWNrYWdlKCkvbG9hZF9jb21waWxlZCgpLgorCistIElzc3VlICMxMzk1OTogaW1wLmdldF9zdWZmaXhlcygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIHRoZSBuZXcKKyAgYXR0cmlidXRlcyBvbiBpbXBvcnRsaWIubWFjaGluZXJ5OiBTT1VSQ0VfU1VGRklYRVMsIERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTLAorICBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMsIEJZVEVDT0RFX1NVRkZJWEVTLCBhbmQgRVhURU5TSU9OX1NVRkZJWEVTLiBUaGlzCisgIGxlZCB0byBhbiBpbmRpcmVjdCBkZXByZWNhdGlvbiBvZiBpbnNwZWN0LmdldG1vZHVsZWluZm8oKS4KKworLSBJc3N1ZSAjMTQ2NjI6IFByZXZlbnQgc2h1dGlsIGZhaWx1cmVzIG9uIE9TIFggd2hlbiBkZXN0aW5hdGlvbiBkb2VzIG5vdAorICBzdXBwb3J0IGNoZmxhZyBvcGVyYXRpb25zLiAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgorCistIElzc3VlICMxNDE1NzogRml4IHRpbWUuc3RycHRpbWUgZmFpbGluZyB3aXRob3V0IGEgeWVhciBvbiBGZWJydWFyeSAyOXRoLgorICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCisKKy0gSXNzdWUgIzE0NzUzOiBNYWtlIG11bHRpcHJvY2Vzc2luZydzIGhhbmRsaW5nIG9mIG5lZ2F0aXZlIHRpbWVvdXRzCisgIHRoZSBzYW1lIGFzIGl0IHdhcyBpbiBQeXRob24gMy4yLgorCistIElzc3VlICMxNDU4MzogRml4IGltcG9ydGxpYiBidWcgd2hlbiBhIHBhY2thZ2UncyBfX2luaXRfXy5weSB3b3VsZCBmaXJzdAorICBpbXBvcnQgb25lIG9mIGl0cyBtb2R1bGVzIHRoZW4gcmFpc2UgYW4gZXJyb3IuCisKKy0gSXNzdWUgIzE0NzQxOiBGaXggbWlzc2luZyBzdXBwb3J0IGZvciBFbGxpcHNpcyAoJy4uLicpIGluIHBhcnNlciBtb2R1bGUuCisKKy0gSXNzdWUgIzE0Njk3OiBGaXggbWlzc2luZyBzdXBwb3J0IGZvciBzZXQgZGlzcGxheXMgYW5kIHNldCBjb21wcmVoZW5zaW9ucyBpbgorICBwYXJzZXIgbW9kdWxlLgorCistIElzc3VlICMxNDcwMTogRml4IG1pc3Npbmcgc3VwcG9ydCBmb3IgJ3JhaXNlIC4uLiBmcm9tJyBpbiBwYXJzZXIgbW9kdWxlLgorCistIEFkZCBzdXBwb3J0IGZvciB0aW1lb3V0cyB0byB0aGUgYWNxdWlyZSgpIG1ldGhvZHMgb2YKKyAgbXVsdGlwcm9jZXNzaW5nJ3MgbG9jay9zZW1hcGhvcmUvY29uZGl0aW9uIHByb3hpZXMuCisKKy0gSXNzdWUgIzEzOTg5OiBBZGQgc3VwcG9ydCBmb3IgdGV4dCBtb2RlIHRvIGd6aXAub3BlbigpLgorCistIElzc3VlICMxNDEyNzogVGhlIG9zLnN0YXQoKSByZXN1bHQgb2JqZWN0IG5vdyBwcm92aWRlcyB0aHJlZSBhZGRpdGlvbmFsCisgIGZpZWxkczogc3RfY3RpbWVfbnMsIHN0X210aW1lX25zLCBhbmQgc3RfYXRpbWVfbnMsIHByb3ZpZGluZyB0aG9zZSB0aW1lcyBhcyBhbgorICBpbnRlZ2VyIHdpdGggbmFub3NlY29uZCByZXNvbHV0aW9uLiAgVGhlIGZ1bmN0aW9ucyBvcy51dGltZSgpLCBvcy5sdXRpbWVzKCksCisgIGFuZCBvcy5mdXRpbWVzKCkgbm93IGFjY2VwdCBhIG5ldyBwYXJhbWV0ZXIsIG5zLCB3aGljaCBhY2NlcHRzIG10aW1lIGFuZCBhdGltZQorICBhcyBpbnRlZ2VycyB3aXRoIG5hbm9zZWNvbmQgcmVzb2x1dGlvbi4KKworLSBJc3N1ZSAjMTQxMjcgYW5kICMxMDE0ODogc2h1dGlsLmNvcHlzdGF0IG5vdyBwcmVzZXJ2ZXMgZXhhY3QgbXRpbWUgYW5kIGF0aW1lCisgIG9uIGZpbGVzeXN0ZW1zIHByb3ZpZGluZyBuYW5vc2Vjb25kIHJlc29sdXRpb24uCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMxNDY5NTogQnJpbmcgVG9vbHMvcGFyc2VyL3VucGFyc2UucHkgc3VwcG9ydCB1cCB0byBkYXRlIHdpdGgKKyAgdGhlIFB5dGhvbiAzLjMgR3JhbW1hci4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzE0NDcyOiBVcGRhdGUgLmdpdGlnbm9yZS4gUGF0Y2ggYnkgTWF0ZWogQ2VwbC4KKworLSBVcGdyYWRlIFdpbmRvd3MgbGlicmFyeSB2ZXJzaW9uczogYnppcCAxLjAuNiwgT3BlblNTTCAxLjAuMWMuCisKKy0gSXNzdWUgIzE0NjkzOiBVbmRlciBub24tV2luZG93cyBwbGF0Zm9ybXMsIGhhc2hsaWIncyBmYWxsYmFjayBtb2R1bGVzIGFyZQorICBhbHdheXMgY29tcGlsZWQsIGV2ZW4gaWYgT3BlblNTTCBpcyBwcmVzZW50IGF0IGJ1aWxkIHRpbWUuCisKKy0gSXNzdWUgIzEzMjEwOiBXaW5kb3dzIGJ1aWxkIG5vdyB1c2VzIFZTMjAxMCwgcG9ydGVkIGZyb20gVlMyMDA4LgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE0NTg4OiBUaGUgbGFuZ3VhZ2UgcmVmZXJlbmNlIG5vdyBhY2N1cmF0ZWx5IGRvY3VtZW50cyB0aGUgUHl0aG9uIDMKKyAgY2xhc3MgZGVmaW5pdGlvbiBwcm9jZXNzLiBQYXRjaCBieSBOaWNrIENvZ2hsYW4uCisKKy0gSXNzdWUgIzE0OTQzOiBDb3JyZWN0IGEgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZSBmb3Igd2lucmVnLk9wZW5LZXkKKyAgYW5kIGNvcnJlY3RseSBsaXN0IHRoZSBhcmd1bWVudCBuYW1lcyBpbiB0aGUgZnVuY3Rpb24ncyBleHBsYW5hdGlvbi4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBBbHBoYSAzPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMDEtTWF5LTIwMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNDY5OTogRml4IGNhbGxpbmcgdGhlIGNsYXNzbWV0aG9kIGRlc2NyaXB0b3IgZGlyZWN0bHkuCisKKy0gSXNzdWUgIzE0NDMzOiBQcmV2ZW50IG1zdmNydCBjcmFzaCBpbiBpbnRlcmFjdGl2ZSBwcm9tcHQgd2hlbiBzdGRpbiBpcyBjbG9zZWQuCisKKy0gSXNzdWUgIzE0NTIxOiBNYWtlIHJlc3VsdCBvZiBmbG9hdCgnbmFuJykgYW5kIGZsb2F0KCctbmFuJykgbW9yZSBjb25zaXN0ZW50CisgIGFjcm9zcyBwbGF0Zm9ybXMuCisKKy0gSXNzdWUgIzE0NjQ2OiBfX2ltcG9ydF9fKCkgc2V0cyBfX2xvYWRlcl9fIGlmIHRoZSBsb2FkZXIgZGlkIG5vdC4KKworLSBJc3N1ZSAjMTQ2MDU6IE5vIGxvbmdlciBoYXZlIGltcGxpY2l0IGVudHJpZXMgaW4gc3lzLm1ldGFfcGF0aC4gSWYKKyAgc3lzLm1ldGFfcGF0aCBpcyBmb3VuZCB0byBiZSBlbXB0eSwgcmFpc2UgSW1wb3J0V2FybmluZy4KKworLSBJc3N1ZSAjMTQ2MDU6IE5vIGxvbmdlciBoYXZlIGltcGxpY2l0IGVudHJpZXMgaW4gc3lzLnBhdGhfaG9va3MuIElmCisgIHN5cy5wYXRoX2hvb2tzIGlzIGZvdW5kIHRvIGJlIGVtcHR5LCBhIHdhcm5pbmcgd2lsbCBiZSByYWlzZWQuIE5vbmUgaXMgbm93CisgIGluc2VydGVkIGludG8gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgaWYgbm8gZmluZGVyIHdhcyBkaXNjb3ZlcmVkLiBUaGlzIGFsc28KKyAgbWVhbnMgaW1wLk51bGxJbXBvcnRlciBpcyBubyBsb25nZXIgaW1wbGljaXRseSB1c2VkLgorCistIElzc3VlICMxMzkwMzogSW1wbGVtZW50IFBFUCA0MTIuIEluZGl2aWR1YWwgZGljdGlvbmFyeSBpbnN0YW5jZXMgY2FuIG5vdyBzaGFyZQorICB0aGVpciBrZXlzIHdpdGggb3RoZXIgZGljdGlvbmFyaWVzLiBDbGFzc2VzIHRha2UgYWR2YW50YWdlIG9mIHRoaXMgdG8gc2hhcmUKKyAgdGhlaXIgaW5zdGFuY2UgZGljdGlvbmFyeSBrZXlzIGZvciBpbXByb3ZlZCBtZW1vcnkgYW5kIHBlcmZvcm1hbmNlLgorCistIElzc3VlICMxMTYwMyAoYWdhaW4pOiBTZXR0aW5nIF9fcmVwcl9fIHRvIF9fc3RyX18gbm93IHJhaXNlcyBhIFJ1bnRpbWVFcnJvcgorICB3aGVuIHJlcHIoKSBvciBzdHIoKSBpcyBjYWxsZWQgb24gc3VjaCBhbiBvYmplY3QuCisKKy0gSXNzdWUgIzE0NjU4OiBGaXggYmluZGluZyBhIHNwZWNpYWwgbWV0aG9kIHRvIGEgYnVpbHRpbiBpbXBsZW1lbnRhdGlvbiBvZiBhCisgIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBkaWZmZXJlbnQgbmFtZS4KKworLSBJc3N1ZSAjMTQ2MzA6IEZpeCBhIG1lbW9yeSBhY2Nlc3MgYnVnIGZvciBpbnN0YW5jZXMgb2YgYSBzdWJjbGFzcyBvZiBpbnQKKyAgd2l0aCB2YWx1ZSAwLgorCistIElzc3VlICMxNDMzOTogU3BlZWQgaW1wcm92ZW1lbnRzIHRvIGJpbiwgb2N0IGFuZCBoZXggZnVuY3Rpb25zLiAgUGF0Y2ggYnkKKyAgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTQwOTg6IE5ldyBmdW5jdGlvbnMgUHlFcnJfR2V0RXhjSW5mbyBhbmQgUHlFcnJfU2V0RXhjSW5mby4KKyAgUGF0Y2ggYnkgU3RlZmFuIEJlaG5lbC4KKworLSBJc3N1ZSAjMTQzODU6IEl0IGlzIG5vdyBwb3NzaWJsZSB0byB1c2UgYSBjdXN0b20gdHlwZSBmb3IgdGhlIF9fYnVpbHRpbnNfXworICBuYW1lc3BhY2UsIGluc3RlYWQgb2YgYSBkaWN0LiBJdCBjYW4gYmUgdXNlZCBmb3Igc2FuZGJveGluZyBmb3IgZXhhbXBsZS4KKyAgUmFpc2UgYWxzbyBhIE5hbWVFcnJvciBpbnN0ZWFkIG9mIEltcG9ydEVycm9yIGlmIF9fYnVpbGRfY2xhc3NfXyBuYW1lIGlmIG5vdAorICBmb3VuZCBpbiBfX2J1aWx0aW5zX18uCisKKy0gSXNzdWUgIzEyNTk5OiBCZSBtb3JlIHN0cmljdCBpbiBhY2NlcHRpbmcgTm9uZSBjb21wYXJlZCB0byBhIGZhbHNlLWxpa2UKKyAgb2JqZWN0IGZvciBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZm9yX2xvYWRlciBhbmQKKyAgaW1wb3J0bGliLm1hY2hpbmVyeS5QYXRoRmluZGVyLgorCistIElzc3VlICMxNDYxMjogRml4IGp1bXBpbmcgYXJvdW5kIHdpdGggYmxvY2tzIGJ5IHNldHRpbmcgZl9saW5lbm8uCisKKy0gSXNzdWUgIzE0NTkyOiBBdHRlbXB0aW5nIGEgcmVsYXRpdmUgaW1wb3J0IHcvbyBfX3BhY2thZ2VfXyBvciBfX25hbWVfXyBzZXQgaW4KKyAgZ2xvYmFscyByYWlzZXMgYSBLZXlFcnJvci4KKworLSBJc3N1ZSAjMTQ2MDc6IEZpeCBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIHdoaWNoIHN0YXJ0ZWQgd2l0aCBgYF9fYGAuCisKKy0gSXNzdWUgIzEwODU0OiBUaGUgSW1wb3J0RXJyb3IgcmFpc2VkIHdoZW4gYW4gZXh0ZW5zaW9uIG1vZHVsZSBvbiBXaW5kb3dzCisgIGZhaWxzIHRvIGltcG9ydCBub3cgdXNlcyB0aGUgbmV3IHBhdGggYW5kIG5hbWUgYXR0cmlidXRlcyBmcm9tCisgIElzc3VlICMxNTU5NTQ5LgorCistIElzc3VlICMxMzg4OTogQ2hlY2sgYW5kIChpZiBuZWNlc3NhcnkpIHNldCBGUFUgY29udHJvbCB3b3JkIGJlZm9yZSBjYWxsaW5nCisgIGFueSBvZiB0aGUgZHRvYS5jIHN0cmluZyA8LT4gZmxvYXQgY29udmVyc2lvbiBmdW5jdGlvbnMsIG9uIE1TVkMgYnVpbGRzIG9mCisgIFB5dGhvbi4gIFRoaXMgZml4ZXMgaXNzdWVzIHdoZW4gZW1iZWRkaW5nIFB5dGhvbiBpbiBhIERlbHBoaSBhcHAuCisKKy0gX19pbXBvcnRfXygpIG5vdyBtYXRjaGVzIFBFUCAzMjggYW5kIGRvY3VtZW50YXRpb24gYnkgZGVmYXVsdGluZyAnaW5kZXgnIHRvIDAKKyAgaW5zdGVhZCBvZiAtMSBhbmQgcmVtb3Zpbmcgc3VwcG9ydCBmb3IgbmVnYXRpdmUgdmFsdWVzLgorCistIElzc3VlICMyMzc3OiBNYWtlIGltcG9ydGxpYiB0aGUgaW1wbGVtZW50YXRpb24gb2YgX19pbXBvcnRfXygpLgorCistIElzc3VlICMxNTU5NTQ5OiBJbXBvcnRFcnJvciBub3cgaGFzICduYW1lJyBhbmQgJ3BhdGgnIGF0dHJpYnV0ZXMgdGhhdCBhcmUgc2V0CisgIHVzaW5nIGtleXdvcmQgYXJndW1lbnRzIHRvIGl0cyBjb25zdHJ1Y3Rvci4gVGhleSBhcmUgY3VycmVudGx5IG5vdCBzZXQgYnkKKyAgaW1wb3J0IGFzIHRoZXkgYXJlIG1lYW50IGZvciB1c2UgYnkgaW1wb3J0bGliLgorCistIElzc3VlICMxNDQ3NDogU2F2ZSBhbmQgcmVzdG9yZSBleGNlcHRpb24gc3RhdGUgaW4gdGhyZWFkLnN0YXJ0X25ld190aHJlYWQoKQorICB3aGlsZSB3cml0aW5nIGVycm9yIG1lc3NhZ2UgaWYgdGhlIHRocmVhZCBsZWF2ZXMgYSB1bmhhbmRsZWQgZXhjZXB0aW9uLgorCistIElzc3VlICMxMzAxOTogRml4IHBvdGVudGlhbCByZWZlcmVuY2UgbGVha3MgaW4gYnl0ZWFycmF5LmV4dGVuZCgpLiAgUGF0Y2gKKyAgYnkgU3VtYW4gU2FoYS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxNDc2ODogb3MucGF0aC5leHBhbmR1c2VyKCd+L2EnKSBkb2Vzbid0IHdvcmtzIGNvcnJlY3RseSB3aGVuIEhPTUUgaXMgJy8nLgorCistIElzc3VlICMxNDM3MTogU3VwcG9ydCBiemlwMiBpbiB6aXBmaWxlIG1vZHVsZS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzEzMTgzOiBGaXggcGRiIHNraXBwaW5nIGZyYW1lcyBhZnRlciBoaXR0aW5nIGEgYnJlYWtwb2ludCBhbmQgcnVubmluZworICBzdGVwLiAgUGF0Y2ggYnkgWGF2aWVyIGRlIEdheWUuCisKKy0gSXNzdWUgIzE0Njk2OiBGaXggcGFyc2VyIG1vZHVsZSB0byB1bmRlcnN0YW5kICdub25sb2NhbCcgZGVjbGFyYXRpb25zLgorCistIElzc3VlICMxMDk0MTogRml4IGltYXBsaWIuSW50ZXJuYWxkYXRlMnR1cGxlIHRvIHByb2R1Y2UgY29ycmVjdCByZXN1bHQgbmVhcgorICB0aGUgRFNUIHRyYW5zaXRpb24uICBQYXRjaCBieSBKb2UgUGV0ZXJzb24uCisKKy0gSXNzdWUgIzkxNTQ6IEZpeCBwYXJzZXIgbW9kdWxlIHRvIHVuZGVyc3RhbmQgZnVuY3Rpb24gYW5ub3RhdGlvbnMuCisKKy0gSXNzdWUgIzYwODU6IEluIGh0dHAuc2VydmVyLnB5IFNpbXBsZUhUVFBTZXJ2ZXIuYWRkcmVzc19zdHJpbmcgcmV0dXJucyB0aGUKKyAgY2xpZW50IGlwIGFkZHJlc3MgaW5zdGVhZCBjbGllbnQgaG9zdG5hbWUuIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjMTQzMDk6IERlcHJlY2F0ZSB0aW1lLmNsb2NrKCksIHVzZSB0aW1lLnBlcmZfY291bnRlcigpIG9yCisgIHRpbWUucHJvY2Vzc190aW1lKCkgaW5zdGVhZC4KKworLSBJc3N1ZSAjMTQ0Mjg6IEltcGxlbWVudCB0aGUgUEVQIDQxOC4gQWRkIHRpbWUuZ2V0X2Nsb2NrX2luZm8oKSwKKyAgdGltZS5wZXJmX2NvdW50ZXIoKSBhbmQgdGltZS5wcm9jZXNzX3RpbWUoKSBmdW5jdGlvbnMsIGFuZCByZW5hbWUKKyAgdGltZS5zdGVhZHkoKSB0byB0aW1lLm1vbm90b25pYygpLgorCistIElzc3VlICMxNDY0NjogaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zvcl9sb2FkZXIoKSBub3cgc2V0cyBfX2xvYWRlcl9fIGFuZAorICBfX3BhY2thZ2VfXyAod2hlbiBwb3NzaWJsZSkuCisKKy0gSXNzdWUgIzE0NjY0OiBJdCBpcyBub3cgcG9zc2libGUgdG8gdXNlIEB1bml0dGVzdC5za2lwe0lmLFVubGVzc30gb24gYQorICB0ZXN0IGNsYXNzIHRoYXQgZG9lc24ndCBpbmhlcml0IGZyb20gVGVzdENhc2UgKGkuZS4gYSBtaXhpbikuCisKKy0gSXNzdWUgIzQ4OTI6IG11bHRpcHJvY2Vzc2luZyBDb25uZWN0aW9ucyBjYW4gbm93IGJlIHRyYW5zZmVycmVkIG92ZXIKKyAgbXVsdGlwcm9jZXNzaW5nIENvbm5lY3Rpb25zLiAgUGF0Y2ggYnkgUmljaGFyZCBPdWRrZXJrIChzYnQpLgorCistIElzc3VlICMxNDE2MDogVGFyRmlsZS5leHRyYWN0ZmlsZSgpIGZhaWxlZCB0byByZXNvbHZlIHN5bWJvbGljIGxpbmtzIHdoZW4KKyAgdGhlIGxpbmtzIHdlcmUgbm90IGxvY2F0ZWQgaW4gYW4gYXJjaGl2ZSBzdWJkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzE0NjM4OiBweWRvYyBub3cgdHJlYXRzIG5vbi1zdHJpbmcgX19uYW1lX18gdmFsdWVzIGFzIGlmIHRoZXkKKyAgd2VyZSBtaXNzaW5nLCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IuCisKKy0gSXNzdWUgIzEzNjg0OiBGaXggaHR0cGxpYiB0dW5uZWwgaXNzdWUgb2YgaW5maW5pdGUgbG9vcHMgZm9yIGNlcnRhaW4gc2l0ZXMKKyAgd2hpY2ggc2VuZCBFT0Ygd2l0aG91dCB0cmFpbGluZyBcclxuLgorCistIElzc3VlICMxNDYwNTogQWRkIGltcG9ydGxpYi5hYmMuRmlsZUxvYWRlciwgaW1wb3J0bGliLm1hY2hpbmVyeS4oRmlsZUZpbmRlciwKKyAgU291cmNlRmlsZUxvYWRlciwgU291cmNlbGVzc0ZpbGVMb2FkZXIsIEV4dGVuc2lvbkZpbGVMb2FkZXIpLgorCistIElzc3VlICMxMzk1OTogaW1wLmNhY2hlX2Zyb21fc291cmNlKCkvc291cmNlX2Zyb21fY2FjaGUoKSBub3cgZm9sbG93CisgIG9zLnBhdGguam9pbigpL3NwbGl0KCkgc2VtYW50aWNzIGZvciBwYXRoIG1hbmlwdWxhdGlvbiBpbnN0ZWFkIG9mIGl0cyBwcmlvciwKKyAgY3VzdG9tIHNlbWFudGljcyBvZiBjYXJpbmcgdGhlIHJpZ2h0LW1vc3QgcGF0aCBzZXBhcmF0b3IgZm9yd2FyZCBpbiBwYXRoCisgIGpvaW5pbmcuCisKKy0gSXNzdWUgIzIxOTM6IEFsbG93ICI6IiBjaGFyYWN0ZXIgaW4gQ29va2llIE5BTUUgdmFsdWVzLgorCistIElzc3VlICMxNDYyOTogdG9rZW5pemVyLmRldGVjdF9lbmNvZGluZyB3aWxsIHNwZWNpZnkgdGhlIGZpbGVuYW1lIGluIHRoZQorICBTeW50YXhFcnJvciBleGNlcHRpb24gaWYgZm91bmQgYXQgcmVhZGxpbmUuX19zZWxmX18ubmFtZS4KKworLSBJc3N1ZSAjMTQ2Mjk6IFJhaXNlIFN5bnRheEVycm9yIGluIHRva2VuaXplci5kZXRlY3RfZW5jb2RpbmcgaWYgdGhlCisgIGZpcnN0IHR3byBsaW5lcyBoYXZlIG5vbi1VVEYtOCBjaGFyYWN0ZXJzIHdpdGhvdXQgYW4gZW5jb2RpbmcgZGVjbGFyYXRpb24uCisKKy0gSXNzdWUgIzE0MzA4OiBGaXggYW4gZXhjZXB0aW9uIHdoZW4gYSAiZHVtbXkiIHRocmVhZCBpcyBpbiB0aGUgdGhyZWFkaW5nCisgIG1vZHVsZSdzIGFjdGl2ZSBsaXN0IGFmdGVyIGEgZm9yaygpLgorCistIElzc3VlICMxMTc1MDogVGhlIFdpbmRvd3MgQVBJIGZ1bmN0aW9ucyBzY2F0dGVyZWQgaW4gdGhlIF9zdWJwcm9jZXNzIGFuZAorICBfbXVsdGlwcm9jZXNzaW5nLndpbjMyIG1vZHVsZXMgbm93IGxpdmUgaW4gYSBzaW5nbGUgbW9kdWxlICJfd2luYXBpIi4KKyAgUGF0Y2ggYnkgc2J0LgorCistIElzc3VlICMxNDA4NzogbXVsdGlwcm9jZXNzaW5nOiBhZGQgQ29uZGl0aW9uLndhaXRfZm9yKCkuIFBhdGNoIGJ5IHNidC4KKworLSBJc3N1ZSAjMTQ1Mzg6IEhUTUxQYXJzZXIgY2FuIG5vdyBwYXJzZSBjb3JyZWN0bHkgc3RhcnQgdGFncyB0aGF0IGNvbnRhaW4KKyAgYSBiYXJlICcvJy4KKworLSBJc3N1ZSAjMTQ0NTI6IFN5c0xvZ0hhbmRsZXIgbm8gbG9uZ2VyIGluc2VydHMgYSBVVEYtOCBCT00gaW50byB0aGUgbWVzc2FnZS4KKworLSBJc3N1ZSAjMTQzODY6IEV4cG9zZSB0aGUgZGljdF9wcm94eSBpbnRlcm5hbCB0eXBlIGFzIHR5cGVzLk1hcHBpbmdQcm94eVR5cGUuCisKKy0gSXNzdWUgIzEzOTU5OiBNYWtlIGltcC5yZWxvYWQoKSBhbHdheXMgdXNlIGEgbW9kdWxlJ3MgX19sb2FkZXJfXyB0byBwZXJmb3JtCisgIHRoZSByZWxvYWQuCisKKy0gSXNzdWUgIzEzOTU5OiBBZGQgaW1wLnB5IGFuZCByZW5hbWUgdGhlIGJ1aWx0LWluIG1vZHVsZSB0byBfaW1wLCBhbGxvd2luZyBmb3IKKyAgcmUtaW1wbGVtZW50aW5nIHBhcnRzIG9mIHRoZSBtb2R1bGUgaW4gcHVyZSBQeXRob24uCisKKy0gSXNzdWUgIzEzNDk2OiBGaXggcG90ZW50aWFsIG92ZXJmbG93IGluIGJpc2VjdC5iaXNlY3QgYWxnb3JpdGhtIHdoZW4gYXBwbGllZAorICB0byBhIGNvbGxlY3Rpb24gb2Ygc2l6ZSA+IHN5cy5tYXhzaXplIC8gMi4KKworLSBIYXZlIGltcG9ydGxpYiB0YWtlIGFkdmFudGFnZSBvZiBJbXBvcnRFcnJvcidzIG5ldyAnbmFtZScgYW5kICdwYXRoJworICBhdHRyaWJ1dGVzLgorCistIElzc3VlICMxNDM5OTogemlwZmlsZSBub3cgcmVjb2duaXplcyB0aGF0IHRoZSBhcmNoaXZlIGhhcyBiZWVuIG1vZGlmaWVkIGV2ZW4KKyAgaWYgb25seSB0aGUgY29tbWVudCBpcyBjaGFuZ2VkLiAgSW4gYWRkaXRpb24sIHRoZSBUeXBlRXJyb3IgdGhhdCByZXN1bHRzIGZyb20KKyAgdHJ5aW5nIHRvIHNldCBhIG5vbi1iaW5hcnkgdmFsdWUgYXMgYSBjb21tZW50IGlzIG5vdyByYWlzZWQgYXQgdGhlIHRpbWUKKyAgdGhlIGNvbW1lbnQgaXMgc2V0IHJhdGhlciB0aGFuIGF0IHRoZSB0aW1lIHRoZSB6aXBmaWxlIGlzIHdyaXR0ZW4uCisKKy0gdHJhY2UuQ292ZXJhZ2VSZXN1bHRzLmlzX2lnbm9yZWRfZmlsZW5hbWUoKSBub3cgaWdub3JlcyBhbnkgbmFtZSB0aGF0IHN0YXJ0cworICB3aXRoICI8IiBhbmQgZW5kcyB3aXRoICI+IiBpbnN0ZWFkIG9mIHNwZWNpYWwtY2FzaW5nICI8c3RyaW5nPiIgYW5kCisgICI8ZG9jdGVzdCAiLgorCistIElzc3VlICMxMjUzNzogVGhlIG1haWxib3ggbW9kdWxlIG5vIGxvbmdlciBkZXBlbmRzIG9uIGtub3dsZWRnZSBvZiBpbnRlcm5hbAorICBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHRoZSBlbWFpbCBwYWNrYWdlIE1lc3NhZ2Ugb2JqZWN0LgorCistIElzc3VlICM3OTc4OiBzb2NrZXRzZXJ2ZXIgbm93IHJlc3RhcnRzIHRoZSBzZWxlY3QoKSBjYWxsIHdoZW4gRUlOVFIgaXMKKyAgcmV0dXJuZWQuICBUaGlzIGF2b2lkcyBjcmFzaGluZyB0aGUgc2VydmVyIGxvb3Agd2hlbiBhIHNpZ25hbCBpcyByZWNlaXZlZC4KKyAgUGF0Y2ggYnkgSmVyenkgS296ZXJhLgorCistIElzc3VlICMxNDUyMjogQXZvaWQgZHVwbGljYXRpbmcgc29ja2V0IGhhbmRsZXMgaW4gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24uCisgIFBhdGNoIGJ5IHNidC4KKworLSBEb24ndCBQeV9ERUNSRUYgTlVMTCB2YXJpYWJsZSBpbiBpby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyLgorCistIElzc3VlICM4NTE1OiBTZXQgX19maWxlX18gd2hlbiBydW4gZmlsZSBpbiBJRExFLgorICBJbml0aWFsIHBhdGNoIGJ5IEJydWNlIEZyZWRlcmlrc2VuLgorCistIElzc3VlICMxNDQ5NjogRml4IHdyb25nIG5hbWUgaW4gaWRsZWxpYi90YWJiZWRwYWdlcy5weS4KKyAgUGF0Y2ggYnkgUG9wYSBDbGF1ZGl1LgorCistIElzc3VlICMzMDMzOiBBZGQgZGlzcGxheW9mIHBhcmFtZXRlciB0byB0a2ludGVyIGZvbnQuIFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvLgorCistIElzc3VlICMxNDQ4MjogUmFpc2UgYSBWYWx1ZUVycm9yLCBub3QgYSBOYW1lRXJyb3IsIHdoZW4gdHJ5aW5nIHRvIGNyZWF0ZQorICBhIG11bHRpcHJvY2Vzc2luZyBDbGllbnQgb3IgTGlzdGVuZXIgd2l0aCBhbiBBRl9VTklYIHR5cGUgYWRkcmVzcyB1bmRlcgorICBXaW5kb3dzLiAgUGF0Y2ggYnkgUG9wYSBDbGF1ZGl1LgorCistIElzc3VlICM4MDIzMTA6IEdlbmVyYXRlIGFsd2F5cyB1bmlxdWUgdGtpbnRlciBmb250IG5hbWVzIGlmIG5vdCBkaXJlY3RseSBwYXNzZWQuCisKKy0gSXNzdWUgIzE0MTUxOiBSYWlzZSBhIFZhbHVlRXJyb3IsIG5vdCBhIE5hbWVFcnJvciwgd2hlbiB0cnlpbmcgdG8gY3JlYXRlCisgIGEgbXVsdGlwcm9jZXNzaW5nIENsaWVudCBvciBMaXN0ZW5lciB3aXRoIGFuIEFGX1BJUEUgdHlwZSBhZGRyZXNzIHVuZGVyCisgIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy4gIFBhdGNoIGJ5IFBvcGEgQ2xhdWRpdS4KKworLSBJc3N1ZSAjMTQ0OTM6IFVzZSBndmZzLW9wZW4gb3IgeGRnLW9wZW4gaW4gd2ViYnJvd3Nlci4KKworQnVpbGQKKy0tLS0tCisKKy0gIm1ha2UgdG91Y2giIHdpbGwgbm93IHRvdWNoIGdlbmVyYXRlZCBmaWxlcyB0aGF0IGFyZSBjaGVja2VkIGludG8gTWVyY3VyaWFsLAorICBhZnRlciBhICJoZyB1cGRhdGUiIHdoaWNoIGZhaWxlZCB0byBicmluZyB0aGUgdGltZXN0YW1wcyBpbnRvIHRoZSByaWdodCBvcmRlci4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzE0MDI2OiBJbiB0ZXN0X2NtZF9saW5lX3NjcmlwdCwgY2hlY2sgdGhhdCBzeXMuYXJndiBpcyBwb3B1bGF0ZWQKKyAgY29ycmVjdGx5IGZvciB0aGUgdmFyaW91cyBpbnZvY2F0aW9uIGFwcHJvYWNoZXMgKFBhdGNoIGJ5IEphc29uIFllbykKKworLSBJc3N1ZSAjMTQwMzI6IEZpeCBpbmNvcnJlY3QgdmFyaWFibGUgbmFtZSBpbiB0ZXN0X2NtZF9saW5lX3NjcmlwdCBkZWJ1Z2dpbmcKKyAgbWVzc2FnZSAoUGF0Y2ggYnkgSmFzb24gWWVvKQorCistIElzc3VlICMxNDU4OTogVXBkYXRlIGNlcnRpZmljYXRlIGNoYWluIGZvciBzaGEyNTYudGJzLWludGVybmV0LmNvbSwgZml4aW5nCisgIGEgdGVzdCBmYWlsdXJlIGluIHRlc3Rfc3NsLgorCistIElzc3VlICMxNDM1NTogUmVncnRlc3Qgbm93IHN1cHBvcnRzIHRoZSBzdGFuZGFyZCB1bml0dGVzdCB0ZXN0IGxvYWRpbmcsIGFuZAorICB3aWxsIHVzZSBpdCBpZiBhIHRlc3QgZmlsZSBjb250YWlucyBubyBgdGVzdF9tYWluYCBtZXRob2QuCisKK1Rvb2xzIC8gRGVtb3MKKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMzU2MTogVGhlIFdpbmRvd3MgaW5zdGFsbGVyIG5vdyBoYXMgYW4gb3B0aW9uLCBvZmYgYnkgZGVmYXVsdCwgZm9yCisgIHBsYWNpbmcgdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24gaW50byB0aGUgc3lzdGVtICJQYXRoIiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKworLSBJc3N1ZSAjMTMxNjU6IHN0cmluZ2JlbmNoIGlzIG5vdyBhdmFpbGFibGUgaW4gdGhlIFRvb2xzL3N0cmluZ2JlbmNoIGZvbGRlci4KKyAgSXQgdXNlZCB0byBsaXZlIGluIGl0cyBvd24gU1ZOIHByb2plY3QuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQWxwaGEgMj8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDAxLUFwci0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTY4MzM2ODogb2JqZWN0Ll9fbmV3X18gYW5kIG9iamVjdC5fX2luaXRfXyByYWlzZSBhIFR5cGVFcnJvciBpZiB0aGV5CisgIGFyZSBwYXNzZWQgYXJndW1lbnRzIGFuZCB0aGVpciBjb21wbGVtZW50YXJ5IG1ldGhvZCBpcyBub3Qgb3ZlcnJpZGRlbi4KKworLSBJc3N1ZSAjMTQzNzg6IEZpeCBjb21waWxpbmcgYXN0LkltcG9ydEZyb20gbm9kZXMgd2l0aCBhICJfX2Z1dHVyZV9fIiBzdHJpbmcgYXMKKyAgdGhlIG1vZHVsZSBuYW1lIHRoYXQgd2FzIG5vdCBpbnRlcm5lZC4KKworLSBJc3N1ZSAjMTQzMzE6IFVzZSBzaWduaWZpY2FudGx5IGxlc3Mgc3RhY2sgc3BhY2Ugd2hlbiBpbXBvcnRpbmcgbW9kdWxlcyBieQorICBhbGxvY2F0aW5nIHBhdGggYnVmZmVycyBvbiB0aGUgaGVhcCBpbnN0ZWFkIG9mIHRoZSBzdGFjay4KKworLSBJc3N1ZSAjMTQzMzQ6IFByZXZlbnQgaW4gYSBzZWdmYXVsdCBpbiB0eXBlLl9fZ2V0YXR0cmlidXRlX18gd2hlbiBpdCB3YXMgbm90CisgIHBhc3NlZCBzdHJpbmdzLgorCistIElzc3VlICMxNDY5NjI5OiBBbGxvdyBjeWNsZXMgdGhyb3VnaCBhbiBvYmplY3QncyBfX2RpY3RfXyBzbG90IHRvIGJlCisgIGNvbGxlY3RlZC4gKEZvciBleGFtcGxlIGlmIGBgeC5fX2RpY3RfXyBpcyB4YGApLgorCistIElzc3VlICMxNDIwNTogZGljdCBsb29rdXAgcmFpc2VzIGEgUnVudGltZUVycm9yIGlmIHRoZSBkaWN0IGlzIG1vZGlmaWVkCisgIGR1cmluZyBhIGxvb2t1cC4KKworLSBJc3N1ZSAjMTQyMjA6IFdoZW4gYSBnZW5lcmF0b3IgaXMgZGVsZWdhdGluZyB0byBhbm90aGVyIGl0ZXJhdG9yIHdpdGggdGhlCisgIHlpZWxkIGZyb20gc3ludGF4LCBpdCBuZWVkcyB0byBoYXZlIGl0cyBgYGdpX3J1bm5pbmdgYCBmbGFnIHNldCB0byBUcnVlLgorCistIElzc3VlICMxNDQzNTogUmVtb3ZlIGRlZGljYXRlZCBibG9jayBhbGxvY2F0b3IgZnJvbSBmbG9hdG9iamVjdC5jIGFuZCByZWx5CisgIG9uIHRoZSBQeU9iamVjdF9NYWxsb2MoKSBhcGkgbGlrZSBhbGwgb3RoZXIgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTQ0NzE6IEZpeCBhIHBvc3NpYmxlIGJ1ZmZlciBvdmVycnVuIGluIHRoZSB3aW5yZWcgbW9kdWxlLgorCistIElzc3VlICMxNDI4ODogQWxsb3cgdGhlIHNlcmlhbGl6YXRpb24gb2YgYnVpbHRpbiBpdGVyYXRvcnMKKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxNDMwMDogVW5kZXIgV2luZG93cywgc29ja2V0cyBjcmVhdGVkIHVzaW5nIHNvY2tldC5kdXAoKSBub3cgYWxsb3cKKyAgb3ZlcmxhcHBlZCBJL08uICBQYXRjaCBieSBzYnQuCisKKy0gSXNzdWUgIzEzODcyOiBzb2NrZXQuZGV0YWNoKCkgbm93IG1hcmtzIHRoZSBzb2NrZXQgY2xvc2VkIChhcyBtaXJyb3JlZAorICBpbiB0aGUgc29ja2V0IHJlcHIoKSkuICBQYXRjaCBieSBNYXR0IEpvaW5lci4KKworLSBJc3N1ZSAjMTQ0MDY6IEZpeCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gdXNpbmcgYGBjb25jdXJyZW50LmZ1dHVyZXMud2FpdCgKKyAgcmV0dXJuX3doZW49QUxMX0NPTVBMRVRFRClgYC4gIFBhdGNoIGJ5IE1hdHQgSm9pbmVyLgorCistIElzc3VlICM1MTM2OiBkZXByZWNhdGUgb2xkLCB1bnVzZWQgZnVuY3Rpb25zIGZyb20gdGtpbnRlci4KKworLSBJc3N1ZSAjMTQ0MDk6IElETEUgbm93IHByb3Blcmx5IGV4ZWN1dGVzIGNvbW1hbmRzIGluIHRoZSBTaGVsbCB3aW5kb3cKKyAgd2hlbiBpdCBjYW5ub3QgcmVhZCB0aGUgbm9ybWFsIGNvbmZpZyBmaWxlcyBvbiBzdGFydHVwIGFuZAorICBoYXMgdG8gdXNlIHRoZSBidWlsdC1pbiBkZWZhdWx0IGtleSBiaW5kaW5ncy4KKyAgVGhlcmUgd2FzIHByZXZpb3VzbHkgYSBidWcgaW4gb25lIG9mIHRoZSBkZWZhdWx0cy4KKworLSBJc3N1ZSAjMTQ0MTY6IHN5c2xvZyBub3cgZGVmaW5lcyB0aGUgTE9HX09ERUxBWSBhbmQgTE9HX0FVVEhQUklWIGNvbnN0YW50cworICBpZiB0aGV5IGFyZSBkZWZpbmVkIGluIDxzeXNsb2cuaD4uCisKKy0gSURMRSBjYW4gYmUgbGF1bmNoZWQgYXMgcHl0aG9uIC1tIGlkbGVsaWIKKworLSBJc3N1ZSAjMTQyOTU6IEFkZCB1bml0dGVzdC5tb2NrCisKKy0gSXNzdWUgIzc2NTI6IEFkZCAtLXdpdGgtc3lzdGVtLWxpYm1wZGVjIG9wdGlvbiB0byBjb25maWd1cmUgZm9yIGxpbmtpbmcKKyAgdGhlIF9kZWNpbWFsIG1vZHVsZSBhZ2FpbnN0IGFuIGluc3RhbGxlZCBsaWJtcGRlYy4KKworLSBJc3N1ZSAjMTQzODA6IE1JTUVUZXh0IG5vdyBkZWZhdWx0cyB0byB1dGYtOCB3aGVuIHBhc3NlZCBub24tQVNDSUkgdW5pY29kZQorICB3aXRoIG5vIGNoYXJzZXQgc3BlY2lmaWVkLgorCistIElzc3VlICMxMDM0MDogYXN5bmNvcmUgLSBwcm9wZXJseSBoYW5kbGUgRUlOVkFMIGluIGRpc3BhdGNoZXIgY29uc3RydWN0b3Igb24KKyAgT1NYOyBhdm9pZCB0byBjYWxsIGhhbmRsZV9jb25uZWN0IGluIGNhc2Ugb2YgYSBkaXNjb25uZWN0ZWQgc29ja2V0IHdoaWNoCisgIHdhcyBub3QgbWVhbnQgdG8gY29ubmVjdC4KKworLSBJc3N1ZSAjMTQyMDQ6IFRoZSBzc2wgbW9kdWxlIG5vdyBoYXMgc3VwcG9ydCBmb3IgdGhlIE5leHQgUHJvdG9jb2wKKyAgTmVnb3RpYXRpb24gZXh0ZW5zaW9uLCBpZiBhdmFpbGFibGUgaW4gdGhlIHVuZGVybHlpbmcgT3BlblNTTCBsaWJyYXJ5LgorICBQYXRjaCBieSBDb2xpbiBNYXJjLgorCistIElzc3VlICMzMDM1OiBVbnVzZWQgZnVuY3Rpb25zIGZyb20gdGtpbnRlciBhcmUgbWFya2VkIGFzIHBlbmRpbmcgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMTI3NTc6IEZpeCB0aGUgc2tpcHBpbmcgb2YgZG9jdGVzdHMgd2hlbiBweXRob24gaXMgcnVuIHdpdGggLU9PIHNvCisgIHRoYXQgaXQgd29ya3MgaW4gdW5pdHRlc3QncyB2ZXJib3NlIG1vZGUgYXMgd2VsbCBhcyBub24tdmVyYm9zZSBtb2RlLgorCistIElzc3VlICM3NjUyOiBJbnRlZ3JhdGUgdGhlIGRlY2ltYWwgZmxvYXRpbmcgcG9pbnQgbGlibXBkZWMgbGlicmFyeSB0byBzcGVlZAorICB1cCB0aGUgZGVjaW1hbCBtb2R1bGUuIFBlcmZvcm1hbmNlIGdhaW5zIG9mIHRoZSBuZXcgQyBpbXBsZW1lbnRhdGlvbiBhcmUKKyAgYmV0d2VlbiAxMHggYW5kIDEwMHgsIGRlcGVuZGluZyBvbiB0aGUgYXBwbGljYXRpb24uCisKKy0gSXNzdWUgIzM1NzM6IElETEUgaGFuZ3Mgd2hlbiBwYXNzaW5nIGludmFsaWQgY29tbWFuZCBsaW5lIGFyZ3MKKyAgKGRpcmVjdG9yeShpZXMpIGluc3RlYWQgb2YgZmlsZShzKSkgKFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvKQorCistIElzc3VlICMxNDI2OTogU01UUEQgbm93IGNvbmZvcm1zIHRvIHRoZSBSRkMgYW5kIHJlcXVpcmVzIGEgSEVMTyBjb21tYW5kCisgIGJlZm9yZSBNQUlMLCBSQ1BULCBvciBEQVRBLgorCistIElzc3VlICMxMzY5NDogYXN5bmNocm9ub3VzIGNvbm5lY3QgaW4gYXN5bmNvcmUuZGlzcGF0Y2hlciBkb2VzIG5vdCBzZXQgYWRkcgorICBhdHRyaWJ1dGUuCisKKy0gSXNzdWUgIzE0MzQ0OiBmaXhlZCB0aGUgcmVwciBvZiBlbWFpbC5wb2xpY3kgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTE2ODY6IEFkZGVkIG1pc3NpbmcgZW50cmllcyB0byBlbWFpbCBwYWNrYWdlIF9fYWxsX18gbGlzdHMKKyAgKG1vc3RseSB0aGUgbmV3IEJ5dGVzIGNsYXNzZXMpLgorCistIElzc3VlICMxNDMzNTogbXVsdGlwcm9jZXNzaW5nJ3MgY3VzdG9tIFBpY2tsZXIgc3ViY2xhc3Mgbm93IGluaGVyaXRzIGZyb20KKyAgdGhlIEMtYWNjZWxlcmF0ZWQgaW1wbGVtZW50YXRpb24uICBQYXRjaCBieSBzYnQuCisKKy0gSXNzdWUgIzEwNDg0OiBGaXggdGhlIENHSUhUVFBTZXJ2ZXIncyBQQVRIX0lORk8gaGFuZGxpbmcgcHJvYmxlbS4KKworLSBJc3N1ZSAjMTExOTk6IEZpeCB0aGUgd2l0aCB1cmxsaWIgd2hpY2ggaGFuZ3Mgb24gcGFydGljdWxhciBmdHAgdXJscy4KKworLSBJbXByb3ZlIHRoZSBtZW1vcnkgdXRpbGl6YXRpb24gYW5kIHNwZWVkIG9mIGZ1bmN0b29scy5scnVfY2FjaGUuCisKKy0gSXNzdWUgIzE0MjIyOiBVc2UgdGhlIG5ldyB0aW1lLnN0ZWFkeSgpIGZ1bmN0aW9uIGluc3RlYWQgb2YgdGltZS50aW1lKCkgZm9yCisgIHRpbWVvdXQgaW4gcXVldWUgYW5kIHRocmVhZGluZyBtb2R1bGVzIHRvIG5vdCBiZSBhZmZlY3RlZCBvZiBzeXN0ZW0gdGltZQorICB1cGRhdGUuCisKKy0gSXNzdWUgIzEzMjQ4OiBSZW1vdmUgbGliMnRvMy5weXRyZWUuQmFzZS5nZXRfcHJlZml4L3NldF9wcmVmaXguCisKIC0gSXNzdWUgIzE0MjM0OiBDVkUtMjAxMi0wODc2OiBSYW5kb21pemUgaGFzaGVzIG9mIHhtbCBhdHRyaWJ1dGVzIGluIHRoZSBoYXNoCiAgIHRhYmxlIGludGVybmFsIHRvIHRoZSBweWV4cGF0IG1vZHVsZSdzIGNvcHkgb2YgdGhlIGV4cGF0IGxpYnJhcnkgdG8gYXZvaWQgYQogICBkZW5pYWwgb2Ygc2VydmljZSBkdWUgdG8gaGFzaCBjb2xsaXNpb25zLiAgUGF0Y2ggYnkgRGF2aWQgTWFsY29sbSB3aXRoIHNvbWUKICAgbW9kaWZpY2F0aW9ucyBieSB0aGUgZXhwYXQgcHJvamVjdC4KIAorLSBJc3N1ZSAjMTQyMDA6IElkbGUgc2hlbGwgY3Jhc2ggb24gcHJpbnRpbmcgbm9uLUJNUCB1bmljb2RlIGNoYXJhY3Rlci4KIAotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yLjMgcmVsZWFzZSBjYW5kaWRhdGUgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistIElzc3VlICMxMjgxODogZm9ybWF0IGFkZHJlc3Mgbm8gbG9uZ2VyIG5lZWRsZXNzbHkgXCBlc2NhcGVzICgpcyBpbiBuYW1lcyB3aGVuCisgIHRoZSBuYW1lIGVuZHMgdXAgYmVpbmcgcXVvdGVkLgogCi0qUmVsZWFzZSBkYXRlOiAyNC1GZWItMjAxMioKKy0gSXNzdWUgIzE0MDYyOiBCeXRlc0dlbmVyYXRvciBub3cgY29ycmVjdGx5IGZvbGRzIEhlYWRlciBvYmplY3RzLAorICBpbmNsdWRpbmcgdXNpbmcgbGluZXNlcCB3aGVuIGZvbGRpbmcuCisKKy0gSXNzdWUgIzEzODM5OiBXaGVuIGludm9rZWQgb24gdGhlIGNvbW1hbmQtbGluZSwgdGhlIHBzdGF0cyBtb2R1bGUgbm93CisgIGFjY2VwdHMgc2V2ZXJhbCBmaWxlbmFtZXMgb2YgcHJvZmlsZSBzdGF0IGZpbGVzIGFuZCBtZXJnZXMgdGhlbSBhbGwuCisgIFBhdGNoIGJ5IE1hdHQgSm9pbmVyLgorCistIElzc3VlICMxNDI5MTogRW1haWwgbm93IGRlZmF1bHRzIHRvIHV0Zi04IGZvciBub24tQVNDSUkgdW5pY29kZSBoZWFkZXJzCisgIGluc3RlYWQgb2YgcmFpc2luZyBhbiBlcnJvci4gIFRoaXMgZml4ZXMgYSByZWdyZXNzaW9uIHJlbGF0aXZlIHRvIDIuNy4KKworLSBJc3N1ZSAjOTg5NzEyOiBTdXBwb3J0IHVzaW5nIFRrIHdpdGhvdXQgYSBtYWlubG9vcC4KKworLSBJc3N1ZSAjNTIxOTogUHJldmVudCBldmVudCBoYW5kbGVyIGNhc2NhZGUgaW4gSURMRS4KKworLSBJc3N1ZSAjMzgzNTogUmVmdXNlIHRvIHVzZSB1bnRocmVhZGVkIFRjbCBpbiB0aHJlYWRlZCBQeXRob24uCisKKy0gSXNzdWUgIzI4NDM6IEFkZCBuZXcgVGsgQVBJIHRvIFRraW50ZXIuCisKKy0gSXNzdWUgIzE0MTg0OiBJbmNyZWFzZSB0aGUgZGVmYXVsdCBzdGFjayBzaXplIGZvciBzZWNvbmRhcnkgdGhyZWFkcyBvbgorICBNYWMgT1MgWCB0byBhdm9pZCBpbnRlcnByZXRlciBjcmFzaGVzIHdoZW4gdXNpbmcgdGhyZWFkcyBvbiAxMC43LgorCistIElzc3VlICMxNDE4MDogZGF0ZXRpbWUuZGF0ZS5mcm9tdGltZXN0YW1wKCksCisgIGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAoKSBhbmQgZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCgpCisgIG5vdyByYWlzZSBhbiBPU0Vycm9yIGluc3RlYWQgb2YgVmFsdWVFcnJvciBpZiBsb2NhbHRpbWUoKSBvciBnbXRpbWUoKSBmYWlsZWQuCisKKy0gSXNzdWUgIzE0MTgwOiB0aW1lLmN0aW1lKCksIGdtdGltZSgpLCB0aW1lLmxvY2FsdGltZSgpLAorICBkYXRldGltZS5kYXRlLmZyb210aW1lc3RhbXAoKSwgZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgpIGFuZAorICBkYXRldGltZS5kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKCkgbm93IHJhaXNlcyBhbiBPdmVyZmxvd0Vycm9yLCBpbnN0ZWFkIG9mCisgIGEgVmFsdWVFcnJvciwgaWYgdGhlIHRpbWVzdGFtcCBkb2VzIG5vdCBmaXQgaW4gdGltZV90LgorCistIElzc3VlICMxNDE4MDogZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgpIGFuZAorICBkYXRldGltZS5kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKCkgbm93IHJvdW5kIG1pY3Jvc2Vjb25kcyB0b3dhcmRzIHplcm8KKyAgaW5zdGVhZCBvZiByb3VuZGluZyB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyBhd2F5IGZyb20gemVyby4KKworLSBJc3N1ZSAjMTA1NDM6IEZpeCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeSB3aXRoIEp5dGhvbiBieXRlY29kZSBmaWxlcy4KKworLSBJc3N1ZSAjMTE3ODg2MzogU2VwYXJhdGUgaW5pdGlhbGlzYXRpb24gZnJvbSBzZXR0aW5nIHdoZW4gaW5pdGlhbGl6aW5nCisgIFRraW50ZXIuVmFyaWFibGVzOyBoYXJtb25pemUgZXhjZXB0aW9ucyB0byBWYWx1ZUVycm9yOyBvbmx5IGRlbGV0ZSB2YXJpYWJsZXMKKyAgdGhhdCBoYXZlIG5vdCBiZWVuIGRlbGV0ZWQ7IGFzc2VydCB0aGF0IHZhcmlhYmxlIG5hbWVzIGFyZSBzdHJpbmdzLgorCistIElzc3VlICMxNDEwNDogSW1wbGVtZW50IHRpbWUubW9ub3RvbmljKCkgb24gTWFjIE9TIFgsIHBhdGNoIHdyaXR0ZW4gYnkKKyAgTmljaG9sYXMgUmlsZXkuCisKKy0gSXNzdWUgIzEzMzk0OiB0aGUgYWlmYyBtb2R1bGUgbm93IHVzZXMgd2FybmluZ3Mud2FybigpIHRvIHNpZ25hbCB3YXJuaW5ncy4KKworLSBJc3N1ZSAjMTQyNTI6IEZpeCBzdWJwcm9jZXNzLlBvcGVuLnRlcm1pbmF0ZSgpIHRvIG5vdCByYWlzZSBhbiBlcnJvciB1bmRlcgorICBXaW5kb3dzIHdoZW4gdGhlIGNoaWxkIHByb2Nlc3MgaGFzIGFscmVhZHkgZXhpdGVkLgorCistIElzc3VlICMxNDIyMzogY3Vyc2VzLmFkZGNoKCkgaXMgbm8gbW9yZSBsaW1pdGVkIHRvIHRoZSByYW5nZSAwLTI1NSB3aGVuIHRoZQorICBQeXRob24gY3Vyc2VzIGlzIG5vdCBsaW5rZWQgdG8gbGlibmN1cnNlc3cuIEl0IHdhcyBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZAorICBpbiBQeXRob24gMy4zYTEuCisKKy0gSXNzdWUgIzE0MTY4OiBDaGVjayBmb3IgcHJlc2VuY2Ugb2YgRWxlbWVudC5fYXR0cnMgaW4gbWluaWRvbSBiZWZvcmUKKyAgYWNjZXNzaW5nIGl0LgorCistIElzc3VlICMxMjMyODogRml4IG11bHRpcHJvY2Vzc2luZydzIHVzZSBvZiBvdmVybGFwcGVkIEkvTyBvbiBXaW5kb3dzLgorICBBbHNvLCBhZGQgYSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi53YWl0KHJsaXN0LCB0aW1lb3V0PU5vbmUpIGZ1bmN0aW9uCisgIGZvciBwb2xsaW5nIG11bHRpcGxlIG9iamVjdHMgYXQgb25jZS4gIFBhdGNoIGJ5IHNidC4KKworLSBJc3N1ZSAjMTQwMDc6IEFjY2VwdCBpbmNvbXBsZXRlIFRyZWVCdWlsZGVyIG9iamVjdHMgKG1pc3Npbmcgc3RhcnQsIGVuZCwKKyAgZGF0YSBvciBjbG9zZSBtZXRob2QpIGZvciB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uIGFzIHdlbGwuCisgIERyb3AgdGhlIG5vLW9wIFRyZWVCdWlsZGVyKCkueG1sKCkgbWV0aG9kIGZyb20gdGhlIEMgaW1wbGVtZW50YXRpb24uCisKKy0gSXNzdWUgIzE0MjEwOiBwZGIgbm93IGhhcyB0YWItY29tcGxldGlvbiBub3Qgb25seSBmb3IgY29tbWFuZCBuYW1lcywgYnV0CisgIGFsc28gZm9yIHRoZWlyIGFyZ3VtZW50cywgd2hlcmV2ZXIgcG9zc2libGUuCisKKy0gSXNzdWUgIzE0MzEwOiBTb2NrZXRzIGNhbiBub3cgYmUgd2l0aCBvdGhlciBwcm9jZXNzZXMgb24gV2luZG93cyB1c2luZworICB0aGUgYXBpIHNvY2tldC5zb2NrZXQuc2hhcmUoKSBhbmQgc29ja2V0LmZyb21zaGFyZSgpLgorCistIElzc3VlICMxMDU3NjogVGhlIGdjIG1vZHVsZSBub3cgaGFzIGEgJ2NhbGxiYWNrcycgbWVtYmVyIHRoYXQgd2lsbCBnZXQKKyAgY2FsbGVkIHdoZW4gZ2FyYmFnZSBjb2xsZWN0aW9uIHRha2VzIHBsYWNlLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTQ1NTc6IEZpeCBleHRlbnNpb25zIGJ1aWxkIG9uIEhQLVVYLiBQYXRjaCBieSBBZGkgUm9pYmFuLgorCistIElzc3VlICMxNDM4NzogRG8gbm90IGluY2x1ZGUgYWNjdS5oIGZyb20gUHl0aG9uLmguCisKKy0gSXNzdWUgIzE0MzU5OiBPbmx5IHVzZSBPX0NMT0VYRUMgaW4gX3Bvc2l4bW9kdWxlLmMgaWYgaXQgaXMgZGVmaW5lZC4KKyAgQmFzZWQgb24gcGF0Y2ggZnJvbSBIZXJ2w6kgQ29hdGFuaGF5LgorCistIElzc3VlICMxNDMyMTogRG8gbm90IHJ1biBwZ2VuIGR1cmluZyB0aGUgYnVpbGQgaWYgZmlsZXMgYXJlIHVwIHRvIGRhdGUuCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTQwMzQ6IGFkZGVkIHRoZSBhcmdwYXJzZSB0dXRvcmlhbC4KKworLSBJc3N1ZSAjMTQzMjQ6IEZpeCBjb25maWd1cmUgdGVzdHMgZm9yIGNyb3NzIGJ1aWxkcy4KKworLSBJc3N1ZSAjMTQzMjc6IENhbGwgQUNfQ0FOT05JQ0FMX0hPU1QgaW4gY29uZmlndXJlLmFjIGFuZCBjaGVjayBpbgorICBjb25maWcue2d1ZXNzLHN1Yn0uIERvbid0IHVzZSB1bmFtZSBjYWxscyBmb3IgY3Jvc3MgYnVpbGRzLgorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjOTA0MTogQW4gaXNzdWUgaW4gY3R5cGVzLmNfbG9uZ2RvdWJsZSwgY3R5cGVzLmNfZG91YmxlLCBhbmQKKyAgY3R5cGVzLmNfZmxvYXQgdGhhdCBjYXVzZWQgYW4gaW5jb3JyZWN0IGV4Y2VwdGlvbiB0byBiZSByZXR1cm5lZCBpbiB0aGUKKyAgY2FzZSBvZiBvdmVyZmxvdyBoYXMgYmVlbiBmaXhlZC4KKworLSBJc3N1ZSAjMTQyMTI6IFRoZSByZSBtb2R1bGUgZGlkbid0IHJldGFpbiBhIHJlZmVyZW5jZSB0byBidWZmZXJzIGl0IHdhcworICBzY2FubmluZywgcmVzdWx0aW5nIGluIHNlZ2ZhdWx0cy4KKworLSBJc3N1ZSAjMTQyNTk6IFRoZSBmaW5kaXRlcigpIG1ldGhvZCBvZiByZSBvYmplY3RzIGRpZCBub3QgdGFrZSBhbnkKKyAga2V5d29yZCBhcmd1bWVudHMsIGNvbnRyYXJ5IHRvIHRoZSBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICMxMDE0MjogU3VwcG9ydCBmb3IgU0VFS19IT0xFL1NFRUtfREFUQSAoZm9yIGV4YW1wbGUsIHVuZGVyIFpGUykuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMxNDQ0MjogQWRkIG1pc3NpbmcgZXJybm8gaW1wb3J0IGluIHRlc3Rfc210cGxpYi4KKworLSBJc3N1ZSAjODMxNTogKHBhcnRpYWwgZml4KSBweXRob24gLW0gdW5pdHRlc3QgdGVzdC50ZXN0X2VtYWlsIG5vdyB3b3Jrcy4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBBbHBoYSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMDUtTWFyLTIwMTIqCiAKIENvcmUgYW5kIEJ1aWx0aW5zCiAtLS0tLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMxMzcwMzogb0NFUlQtMjAxMS0wMDM6IGFkZCAtUiBjb21tYW5kLWxpbmUgb3B0aW9uIGFuZCBQWVRIT05IQVNIU0VFRAotICBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdG8gcHJvdmlkZSBhbiBvcHQtaW4gd2F5IHRvIHByb3RlY3QgYWdhaW5zdCBkZW5pYWwgb2YKLSAgc2VydmljZSBhdHRhY2tzIGR1ZSB0byBoYXNoIGNvbGxpc2lvbnMgd2l0aGluIHRoZSBkaWN0IGFuZCBzZXQgdHlwZXMuICBQYXRjaAotICBieSBEYXZpZCBNYWxjb2xtLCBiYXNlZCBvbiB3b3JrIGJ5IFZpY3RvciBTdGlubmVyLgorLSBJc3N1ZSAjMTQxNzI6IEZpeCByZWZlcmVuY2UgbGVhayB3aGVuIG1hcnNoYWxsaW5nIGEgYnVmZmVyLWxpa2Ugb2JqZWN0CisgIChvdGhlciB0aGFuIGEgYnl0ZXMgb2JqZWN0KS4KKworLSBJc3N1ZSAjMTM1MjE6IGRpY3Quc2V0ZGVmYXVsdCgpIG5vdyBkb2VzIG9ubHkgb25lIGxvb2t1cCBmb3IgdGhlIGdpdmVuIGtleSwKKyAgbWFraW5nIGl0ICJhdG9taWMiIGZvciBtYW55IHB1cnBvc2VzLiAgUGF0Y2ggYnkgRmlsaXAgR3J1c3pjennFhHNraS4KKworLSBQRVAgNDA5LCBJc3N1ZSAjNjIxMDogInJhaXNlIFggZnJvbSBOb25lIiBpcyBub3cgc3VwcG9ydGVkIGFzIGEgbWVhbnMgb2YKKyAgc3VwcHJlc3NpbmcgdGhlIGRpc3BsYXkgb2YgdGhlIGNoYWluZWQgZXhjZXB0aW9uIGNvbnRleHQuIFRoZSBjaGFpbmVkCisgIGNvbnRleHQgc3RpbGwgcmVtYWlucyBhdmFpbGFibGUgYXMgdGhlIF9fY29udGV4dF9fIGF0dHJpYnV0ZS4KKworLSBJc3N1ZSAjMTAxODE6IE5ldyBtZW1vcnl2aWV3IGltcGxlbWVudGF0aW9uIGZpeGVzIG11bHRpcGxlIG93bmVyc2hpcAorICBhbmQgbGlmZXRpbWUgaXNzdWVzIG9mIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBQeV9idWZmZXIgbWVtYmVycyAoIzk5OTApCisgIGFzIHdlbGwgYXMgY3Jhc2hlcyAoIzgzMDUsICM3NDMzKS4gTWFueSBuZXcgZmVhdHVyZXMgaGF2ZSBiZWVuIGFkZGVkCisgIChTZWUgd2hhdHNuZXcvMy4zKSwgYW5kIHRoZSBkb2N1bWVudGF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQgZXh0ZW5zaXZlbHkuCisgIFRoZSBuZGFycmF5IHRlc3Qgb2JqZWN0IGZyb20gX3Rlc3RidWZmZXIuYyBpbXBsZW1lbnRzIGFsbCBhc3BlY3RzIG9mCisgIFBFUC0zMTE4LCBzbyBmdXJ0aGVyIGRldmVsb3BtZW50IHRvd2FyZHMgdGhlIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uCisgIG9mIHRoZSBQRVAgY2FuIHByb2NlZWQgaW4gYSB0ZXN0LWRyaXZlbiBtYW5uZXIuCisKKyAgVGhhbmtzIHRvIE5pY2sgQ29naGxhbiwgQW50b2luZSBQaXRyb3UgYW5kIFBhdWxpIFZpcnRhbmVuIGZvciByZXZpZXcKKyAgYW5kIG1hbnkgaWRlYXMuCisKKy0gSXNzdWUgIzEyODM0OiBGaXggaW5jb3JyZWN0IHJlc3VsdHMgb2YgbWVtb3J5dmlldy50b2J5dGVzKCkgZm9yCisgIG5vbi1jb250aWd1b3VzIGFycmF5cy4KKworLSBJc3N1ZSAjNTIzMTogSW50cm9kdWNlIG1lbW9yeXZpZXcuY2FzdCgpIG1ldGhvZCB0aGF0IGFsbG93cyBjaGFuZ2luZworICBmb3JtYXQgYW5kIHNoYXBlIHdpdGhvdXQgbWFraW5nIGEgY29weSBvZiB0aGUgdW5kZXJseWluZyBtZW1vcnkuCiAKIC0gSXNzdWUgIzE0MDg0OiBGaXggYSBmaWxlIGRlc2NyaXB0b3IgbGVhayB3aGVuIGltcG9ydGluZyBhIG1vZHVsZSB3aXRoIGEKICAgYmFkIGVuY29kaW5nLgogCistIFVwZ3JhZGUgVW5pY29kZSBkYXRhIHRvIFVuaWNvZGUgNi4xLgorCistIElzc3VlICMxNDA0MDogUmVtb3ZlIHJhcmVseSB1c2VkIGZpbGUgbmFtZSBzdWZmaXhlcyBmb3IgQyBleHRlbnNpb25zCisgICh1bmRlciBQT1NJWCBtYWlubHkpLgorCistIElzc3VlICMxNDA1MTogQWxsb3cgYXJiaXRyYXJ5IGF0dHJpYnV0ZXMgdG8gYmUgc2V0IG9mIGNsYXNzbWV0aG9kIGFuZAorICBzdGF0aWNtZXRob2QuCisKKy0gSXNzdWUgIzEzNzAzOiBvQ0VSVC0yMDExLTAwMzogUmFuZG9taXplIGhhc2hlcyBvZiBzdHIgYW5kIGJ5dGVzIHRvIHByb3RlY3QKKyAgYWdhaW5zdCBkZW5pYWwgb2Ygc2VydmljZSBhdHRhY2tzIGR1ZSB0byBoYXNoIGNvbGxpc2lvbnMgd2l0aGluIHRoZSBkaWN0IGFuZAorICBzZXQgdHlwZXMuICBQYXRjaCBieSBEYXZpZCBNYWxjb2xtLCBiYXNlZCBvbiB3b3JrIGJ5IFZpY3RvciBTdGlubmVyLgorCiAtIElzc3VlICMxMzAyMDogRml4IGEgcmVmZXJlbmNlIGxlYWsgd2hlbiBhbGxvY2F0aW5nIGEgc3RydWN0c2VxdWVuY2Ugb2JqZWN0CiAgIGZhaWxzLiAgUGF0Y2ggYnkgU3VtYW4gU2FoYS4KIApAQCAtMTI1OSw2ICsyNjgwLDkgQEAKIC0gSXNzdWUgIzExMjM1OiBGaXggT3ZlcmZsb3dFcnJvciB3aGVuIHRyeWluZyB0byBpbXBvcnQgYSBzb3VyY2UgZmlsZSB3aG9zZQogICBtb2RpZmljYXRpb24gdGltZSBkb2Vzbid0IGZpdCBpbiBhIDMyLWJpdCB0aW1lc3RhbXAuCiAKKy0gSXNzdWUgIzEyNzA1OiBBIFN5bnRheEVycm9yIGV4Y2VwdGlvbiBpcyBub3cgcmFpc2VkIHdoZW4gYXR0ZW1wdGluZyB0bworICBjb21waWxlIG11bHRpcGxlIHN0YXRlbWVudHMgYXMgYSBzaW5nbGUgaW50ZXJhY3RpdmUgc3RhdGVtZW50LgorCiAtIEZpeCB0aGUgYnVpbHRpbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24gY29kZSB0byBzdG9yZSB0aGUgaW5pdCBmdW5jdGlvbiBmb3IKICAgZnV0dXJlIHJlaW5pdGlhbGl6YXRpb24uCiAKQEAgLTEyNzAsNiArMjY5NCwzNyBAQAogLSBJc3N1ZSAjMTM2Mjk6IFJlbnVtYmVyIHRoZSB0b2tlbnMgaW4gdG9rZW4uaCBzbyB0aGF0IHRoZXkgbWF0Y2ggdGhlIGluZGV4ZXMKICAgaW50byBfUHlQYXJzZXJfVG9rZW5OYW1lcy4KIAorLSBJc3N1ZSAjMTM3NTI6IEFkZCBhIGNhc2Vmb2xkKCkgbWV0aG9kIHRvIHN0ci4KKworLSBJc3N1ZSAjMTM3NjE6IEFkZCBhICJmbHVzaCIga2V5d29yZCBhcmd1bWVudCB0byB0aGUgcHJpbnQoKSBmdW5jdGlvbiwKKyAgdXNlZCB0byBlbnN1cmUgZmx1c2hpbmcgdGhlIG91dHB1dCBzdHJlYW0uCisKKy0gSXNzdWUgIzEzNjQ1OiBweWMgZmlsZXMgbm93IGNvbnRhaW4gdGhlIHNpemUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlCisgIGNvZGUsIHRvIGF2b2lkIHRpbWVzdGFtcCBjb2xsaXNpb25zIChlc3BlY2lhbGx5IG9uIGZpbGVzeXN0ZW1zIHdpdGggYSBsb3cKKyAgdGltZXN0YW1wIHJlc29sdXRpb24pIHdoZW4gY2hlY2tpbmcgZm9yIGZyZXNobmVzcyBvZiB0aGUgYnl0ZWNvZGUuCisKKy0gUEVQIDM4MCwgSXNzdWUgIzExNjgyOiBBZGQgInlpZWxkIGZyb20gPHg+IiB0byBzdXBwb3J0IGVhc3kgZGVsZWdhdGlvbiB0bworICBzdWJnZW5lcmF0b3JzIChpbml0aWFsIHBhdGNoIGJ5IEdyZWcgRXdpbmcsIGludGVncmF0aW9uIGludG8gMy4zIGJ5CisgIFJlbmF1ZCBCbGFuY2gsIFJ5YW4gS2VsbHksIFpiaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsgYW5kIE5pY2sgQ29naGxhbikKKworLSBJc3N1ZSAjMTM3NDg6IFJhdyBieXRlcyBsaXRlcmFscyBjYW4gbm93IGJlIHdyaXR0ZW4gd2l0aCB0aGUgYGByYmBgIHByZWZpeAorICBhcyB3ZWxsIGFzIGBgYnJgYC4KKworLSBJc3N1ZSAjMTI3MzY6IFVzZSBmdWxsIHVuaWNvZGUgY2FzZSBtYXBwaW5ncyBmb3IgdXBwZXIsIGxvd2VyLCBhbmQgdGl0bGUgY2FzZS4KKworLSBJc3N1ZSAjMTI3NjA6IEFkZCBhIGNyZWF0ZSBtb2RlIHRvIG9wZW4oKS4gUGF0Y2ggYnkgRGF2aWQgVG93bnNoZW5kLgorCistIElzc3VlICMxMzczODogU2ltcGxpZnkgaW1wbGVtZW50YXRpb24gb2YgYnl0ZXMubG93ZXIoKSBhbmQgYnl0ZXMudXBwZXIoKS4KKworLSBJc3N1ZSAjMTM1Nzc6IEJ1aWx0LWluIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBub3cgaGF2ZSBhIF9fcXVhbG5hbWVfXy4KKyAgUGF0Y2ggYnkgc2J0LgorCistIElzc3VlICM2Njk1OiBGdWxsIGdhcmJhZ2UgY29sbGVjdGlvbiBydW5zIG5vdyBjbGVhciB0aGUgZnJlZWxpc3Qgb2Ygc2V0CisgIG9iamVjdHMuICBJbml0aWFsIHBhdGNoIGJ5IE1hdHRoaWFzIFRyb2ZmYWVzLgorCistIEZpeCBPU0Vycm9yLl9faW5pdF9fIGFuZCBPU0Vycm9yLl9fbmV3X18gc28gdGhhdCBlYWNoIG9mIHRoZW0gY2FuIGJlCisgIG92ZXJyaWRlbiBhbmQgdGFrZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyAoZm9sbG93dXAgdG8gaXNzdWUgIzEyNTU1KS4KKwogLSBGaXggdGhlIGZpeCBmb3IgaXNzdWUgIzEyMTQ5OiBpdCB3YXMgaW5jb3JyZWN0LCBhbHRob3VnaCBpdCBoYWQgdGhlIHNpZGUKICAgZWZmZWN0IG9mIGFwcGVhcmluZyB0byByZXNvbHZlIHRoZSBpc3N1ZS4gIFRoYW5rcyB0byBNYXJrIFNoYW5ub24gZm9yCiAgIG5vdGljaW5nLgpAQCAtMTI4MCwyNiArMjczNSw2OCBAQAogLSBJc3N1ZSAjMTExNDc6IEZpeCBhbiB1bnVzZWQgYXJndW1lbnQgaW4gX1B5X0FOTk9UQVRFX01FTU9SWV9PUkRFUi4gIChGaXgKICAgZ2l2ZW4gYnkgQ2FtcGJlbGwgQmFydG9uKS4KIAorLSBJc3N1ZSAjMTM1MDM6IFVzZSBhIG1vcmUgZWZmaWNpZW50IHJlZHVjdGlvbiBmb3JtYXQgZm9yIGJ5dGVhcnJheXMgd2l0aAorICBwaWNrbGUgcHJvdG9jb2wgPj0gMy4gIFRoZSBvbGQgcmVkdWN0aW9uIGZvcm1hdCBpcyBrZXB0IHdpdGggb2xkZXIgcHJvdG9jb2xzCisgIGluIG9yZGVyIHRvIGFsbG93IHVucGlja2xpbmcgdW5kZXIgUHl0aG9uIDIuICBQYXRjaCBieSBJcm1lbiBkZSBKb25nLgorCiAtIElzc3VlICM3MTExOiBQeXRob24gY2FuIG5vdyBiZSBydW4gd2l0aG91dCBhIHN0ZGluLCBzdGRvdXQgb3Igc3RkZXJyCiAgIHN0cmVhbS4gIEl0IHdhcyBhbHJlYWR5IHRoZSBjYXNlIHdpdGggUHl0aG9uIDIuICBIb3dldmVyLCB0aGUgY29ycmVzcG9uZGluZwogICBzeXMgbW9kdWxlIGVudHJpZXMgYXJlIG5vdyBzZXQgdG8gTm9uZSAoaW5zdGVhZCBvZiBhbiB1bnVzYWJsZSBmaWxlIG9iamVjdCkuCiAKKy0gSXNzdWUgIzExODQ5OiBFbnN1cmUgdGhhdCBmcmVlKClkIG1lbW9yeSBhcmVuYXMgYXJlIHJlYWxseSByZWxlYXNlZAorICBvbiBQT1NJWCBzeXN0ZW1zIHN1cHBvcnRpbmcgYW5vbnltb3VzIG1lbW9yeSBtYXBwaW5ncy4gIFBhdGNoIGJ5CisgIENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjMTM0NTI6IFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsKCkgZG9lc24ndCBzdXBwb3J0IGVycm9yIGhhbmRsZXJzCisgIGRpZmZlcmVudCB0aGFuICJzdHJpY3QiIGFueW1vcmUuIFRoZSBjYWxsZXIgd2FzIHVuYWJsZSB0byBjb21wdXRlIHRoZQorICBzaXplIG9mIHRoZSBvdXRwdXQgYnVmZmVyOiBpdCBkZXBlbmRzIG9uIHRoZSBlcnJvciBoYW5kbGVyLgorCistIFBFUCAzMTU1IC8gaXNzdWUgIzEzNDQ4OiBRdWFsaWZpZWQgbmFtZSBmb3IgY2xhc3NlcyBhbmQgZnVuY3Rpb25zLgorCiAtIElzc3VlICMxMzQzNjogRml4IGEgYm9ndXMgZXJyb3IgbWVzc2FnZSB3aGVuIGFuIEFTVCBvYmplY3Qgd2FzIHBhc3NlZAogICBhbiBpbnZhbGlkIGludGVnZXIgdmFsdWUuCiAKKy0gSXNzdWUgIzEzNDExOiBtZW1vcnl2aWV3IG9iamVjdHMgYXJlIG5vdyBoYXNoYWJsZSB3aGVuIHRoZSB1bmRlcmx5aW5nCisgIG9iamVjdCBpcyBoYXNoYWJsZS4KKwogLSBJc3N1ZSAjMTMzMzg6IEhhbmRsZSBhbGwgZW51bWVyYXRpb25zIGluIF9QeV9BTk5PVEFURV9NRU1PUllfT1JERVIKICAgdG8gYWxsb3cgY29tcGlsaW5nIGV4dGVuc2lvbiBtb2R1bGVzIHdpdGggLVdzd2l0Y2gtZW51bSBvbiBnY2MuCiAgIEluaXRpYWwgcGF0Y2ggYnkgRmxvcmlzIEJydXlub29naGUuCiAKKy0gSXNzdWUgIzEwMjI3OiBBZGQgYW4gYWxsb2NhdGlvbiBjYWNoZSBmb3IgYSBzaW5nbGUgc2xpY2Ugb2JqZWN0LiAgUGF0Y2ggYnkKKyAgU3RlZmFuIEJlaG5lbC4KKworLSBJc3N1ZSAjMTMzOTM6IEJ1ZmZlcmVkUmVhZGVyLnJlYWQxKCkgbm93IGFza3MgdGhlIGZ1bGwgcmVxdWVzdGVkIHNpemUgdG8KKyAgdGhlIHJhdyBzdHJlYW0gaW5zdGVhZCBvZiBsaW1pdGluZyBpdHNlbGYgdG8gdGhlIGJ1ZmZlciBzaXplLgorCistIElzc3VlICMxMzM5MjogV3JpdGluZyBhIHB5YyBmaWxlIHNob3VsZCBub3cgYmUgYXRvbWljIHVuZGVyIFdpbmRvd3MgYXMgd2VsbC4KKwogLSBJc3N1ZSAjMTMzMzM6IFRoZSBVVEYtNyBkZWNvZGVyIG5vdyBhY2NlcHRzIGxvbmUgc3Vycm9nYXRlcyAodGhlIGVuY29kZXIKICAgYWxyZWFkeSBhY2NlcHRzIHRoZW0pLgogCistIElzc3VlICMxMzM4OTogRnVsbCBnYXJiYWdlIGNvbGxlY3Rpb24gcGFzc2VzIG5vdyBjbGVhciB0aGUgZnJlZWxpc3RzIGZvcgorICBsaXN0IGFuZCBkaWN0IG9iamVjdHMuICBUaGV5IGFscmVhZHkgY2xlYXJlZCBvdGhlciBmcmVlbGlzdHMgaW4gdGhlCisgIGludGVycHJldGVyLgorCistIElzc3VlICMxMzMyNzogUmVtb3ZlIHRoZSBuZWVkIGZvciBhbiBleHBsaWNpdCBOb25lIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQKKyAgdG8gb3MudXRpbWUsIG9zLmx1dGltZXMsIG9zLmZ1dGltZXMsIG9zLmZ1dGltZW5zLCBvcy5mdXRpbWVzYXQsIGluCisgIG9yZGVyIHRvIHVwZGF0ZSB0byB0aGUgY3VycmVudCB0aW1lLiBBbHNvIGFkZGVkIGtleXdvcmQgYXJndW1lbnQKKyAgaGFuZGxpbmcgdG8gb3MudXRpbWVuc2F0IGluIG9yZGVyIHRvIHJlbW92ZSB0aGUgbmVlZCBmb3IgZXhwbGljaXQgTm9uZS4KKworLSBJc3N1ZSAjMTMzNTA6IFNpbXBsaWZ5IHNvbWUgQyBjb2RlIGJ5IHJlcGxhY2luZyBtb3N0IHVzYWdlcyBvZgorICBQeVVuaWNvZGVfRm9ybWF0IGJ5IFB5VW5pY29kZV9Gcm9tRm9ybWF0LgorCiAtIElzc3VlICMxMzM0MjogaW5wdXQoKSB1c2VkIHRvIGlnbm9yZSBzeXMuc3RkaW4ncyBhbmQgc3lzLnN0ZG91dCdzIHVuaWNvZGUKICAgZXJyb3IgaGFuZGxlciBpbiBpbnRlcmFjdGl2ZSBtb2RlICh3aGVuIGNhbGxpbmcgaW50byBQeU9TX1JlYWRsaW5lKCkpLgogCistIElzc3VlICM5ODk2OiBBZGQgc3RhcnQsIHN0b3AsIGFuZCBzdGVwIGF0dHJpYnV0ZXMgdG8gcmFuZ2Ugb2JqZWN0cy4KKwogLSBJc3N1ZSAjMTMzNDM6IEZpeCBhIFN5c3RlbUVycm9yIHdoZW4gYSBsYW1iZGEgZXhwcmVzc2lvbiB1c2VzIGEgZ2xvYmFsCi0gIHZhcmlhYmxlIGluIHRoZSBkZWZhdWx0IHZhbHVlIG9mIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50OgotICAobGFtYmRhICosIGFyZz1HTE9CQUxfTkFNRTogTm9uZSkKKyAgdmFyaWFibGUgaW4gdGhlIGRlZmF1bHQgdmFsdWUgb2YgYSBrZXl3b3JkLW9ubHkgYXJndW1lbnQ6IGBgbGFtYmRhICosCisgIGFyZz1HTE9CQUxfTkFNRTogTm9uZWBgCisKKy0gSXNzdWUgIzEyNzk3OiBBZGRlZCBjdXN0b20gb3BlbmVyIHBhcmFtZXRlciB0byBidWlsdGluIG9wZW4oKSBhbmQKKyAgRmlsZUlPLm9wZW4oKS4KIAogLSBJc3N1ZSAjMTA1MTk6IEF2b2lkIHVubmVjZXNzYXJ5IHJlY3Vyc2l2ZSBmdW5jdGlvbiBjYWxscyBpbgogICBzZXRvYmplY3QuYy4KQEAgLTEzMDksMjEgKzI4MDYsNDcgQEAKIC0gSXNzdWUgIzEzMDE4OiBGaXggcmVmZXJlbmNlIGxlYWtzIGluIGVycm9yIHBhdGhzIGluIGRpY3RvYmplY3QuYy4KICAgUGF0Y2ggYnkgU3VtYW4gU2FoYS4KIAorLSBJc3N1ZSAjMTMyMDE6IERlZmluZSAnPT0nIGFuZCAnIT0nIHRvIGNvbXBhcmUgcmFuZ2Ugb2JqZWN0cyBiYXNlZCBvbgorICB0aGUgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoZXkgZGVmaW5lIChpbnN0ZWFkIG9mIGNvbXBhcmluZyBiYXNlZCBvbgorICBvYmplY3QgaWRlbnRpdHkpLgorCiAtIElzc3VlICMxMjk0MjMyOiBJbiBhIGZldyBjYXNlcyBpbnZvbHZpbmcgbWV0YWNsYXNzIGluaGVyaXRhbmNlLCB0aGUKICAgaW50ZXJwcmV0ZXIgd291bGQgc29tZXRpbWVzIGludm9rZSB0aGUgd3JvbmcgbWV0YWNsYXNzIHdoZW4gYnVpbGRpbmcgYSBuZXcKICAgY2xhc3Mgb2JqZWN0LiBUaGVzZSBjYXNlcyBub3cgYmVoYXZlIGNvcnJlY3RseS4gUGF0Y2ggYnkgRGFuaWVsIFVyYmFuLgogCistIElzc3VlICMxMjc1MzogQWRkIHN1cHBvcnQgZm9yIFVuaWNvZGUgbmFtZSBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMuCisgIEJvdGggYGB1bmljb2RlZGF0YS5sb29rdXAoKWBgIGFuZCAnXE57Li4ufScgbm93IHJlc29sdmUgYWxpYXNlcywKKyAgYW5kIGBgdW5pY29kZWRhdGEubG9va3VwKClgYCByZXNvbHZlcyBuYW1lZCBzZXF1ZW5jZXMgdG9vLgorCistIElzc3VlICMxMjE3MDogVGhlIGNvdW50KCksIGZpbmQoKSwgcmZpbmQoKSwgaW5kZXgoKSBhbmQgcmluZGV4KCkgbWV0aG9kcworICBvZiBieXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgbm93IGFjY2VwdCBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMjU1CisgIGFzIHRoZWlyIGZpcnN0IGFyZ3VtZW50LiAgUGF0Y2ggYnkgUGV0cmkgTGVodGluZW4uCisKIC0gSXNzdWUgIzEyNjA0OiBWVFJBQ0UgbWFjcm8gZXhwYW5kZWQgdG8gbm8tb3AgaW4gX3NyZS5jIHRvIGF2b2lkIGNvbXBpbGVyCiAgIHdhcm5pbmdzLiBQYXRjaCBieSBKb3NoIFRyaXBsZXR0IGFuZCBQZXRyaSBMZWh0aW5lbi4KIAorLSBJc3N1ZSAjMTIyODE6IFJld3JpdGUgdGhlIE1CQ1MgY29kZWMgdG8gaGFuZGxlIGNvcnJlY3RseSByZXBsYWNlIGFuZCBpZ25vcmUKKyAgZXJyb3IgaGFuZGxlcnMgb24gYWxsIFdpbmRvd3MgdmVyc2lvbnMuIFRoZSBNQkNTIGNvZGVjIGlzIG5vdyBzdXBwb3J0aW5nIGFsbAorICBlcnJvciBoYW5kbGVycywgaW5zdGVhZCBvZiBvbmx5IHJlcGxhY2UgdG8gZW5jb2RlIGFuZCBpZ25vcmUgdG8gZGVjb2RlLgorCiAtIElzc3VlICMxMzE4ODogV2hlbiBjYWxsZWQgd2l0aG91dCBhbiBleHBsaWNpdCB0cmFjZWJhY2sgYXJndW1lbnQsCiAgIGdlbmVyYXRvci50aHJvdygpIG5vdyBnZXRzIHRoZSB0cmFjZWJhY2sgZnJvbSB0aGUgcGFzc2VkIGV4Y2VwdGlvbidzCiAgIGBgX190cmFjZWJhY2tfX2BgIGF0dHJpYnV0ZS4gIFBhdGNoIGJ5IFBldHJpIExlaHRpbmVuLgogCistIElzc3VlICMxMzE0NjogV3JpdGluZyBhIHB5YyBmaWxlIGlzIG5vdyBhdG9taWMgdW5kZXIgUE9TSVguCisKIC0gSXNzdWUgIzc4MzM6IEV4dGVuc2lvbiBtb2R1bGVzIGJ1aWx0IHVzaW5nIGRpc3R1dGlscyBvbiBXaW5kb3dzIHdpbGwgbm8KICAgbG9uZ2VyIGluY2x1ZGUgYSAibWFuaWZlc3QiIHRvIHByZXZlbnQgdGhlbSBmYWlsaW5nIGF0IGltcG9ydCB0aW1lIGluIHNvbWUKICAgZW1iZWRkZWQgc2l0dWF0aW9ucy4KIAorLSBQRVAgMzE1MSAvIGlzc3VlICMxMjU1NTogcmV3b3JraW5nIHRoZSBPUyBhbmQgSU8gZXhjZXB0aW9uIGhpZXJhcmNoeS4KKworLSBJc3N1ZSAjMTM1NjA6IEFkZCBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKCksIFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKCkKKyAgYW5kIFB5VW5pY29kZV9FbmNvZGVMb2NhbGUoKSBmdW5jdGlvbnMgdG8gdGhlIEMgQVBJIHRvIGRlY29kZS9lbmNvZGUgZnJvbS90bworICB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuCisKKy0gQWRkIGludGVybmFsIEFQSSBmb3Igc3RhdGljIHN0cmluZ3MgKF9QeV9pZGVudGlmaWVyIGV0IGFsLikuCisKIC0gSXNzdWUgIzEzMDYzOiB0aGUgV2luZG93cyBlcnJvciBFUlJPUl9OT19EQVRBIChudW1iZXJlZCAyMzIgYW5kIGRlc2NyaWJlZAogICBhcyAiVGhlIHBpcGUgaXMgYmVpbmcgY2xvc2VkIikgaXMgbm93IG1hcHBlZCB0byBQT1NJWCBlcnJubyBFUElQRQogICAocHJldmlvdXNseSBFSU5WQUwpLgpAQCAtMTMzMSw2ICsyODU0LDE2IEBACiAtIElzc3VlICMxMjkxMTogRml4IG1lbW9yeSBjb25zdW1wdGlvbiB3aGVuIGNhbGN1bGF0aW5nIHRoZSByZXByKCkgb2YgaHVnZQogICB0dXBsZXMgb3IgbGlzdHMuCiAKKy0gUEVQIDM5MzogZmxleGlibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiBUaGFua3MgdG8gVG9yc3RlbiBCZWNrZXIgZm9yIHRoZQorICBpbml0aWFsIGltcGxlbWVudGF0aW9uLCBhbmQgVmljdG9yIFN0aW5uZXIgZm9yIHZhcmlvdXMgYnVnIGZpeGVzLgorCistIElzc3VlICMxNDA4MTogVGhlICdzZXAnIGFuZCAnbWF4c3BsaXQnIHBhcmFtZXRlciB0byBzdHIuc3BsaXQsIGJ5dGVzLnNwbGl0LAorICBhbmQgYnl0ZWFycmF5LnNwbGl0IG1heSBub3cgYmUgcGFzc2VkIGFzIGtleXdvcmQgYXJndW1lbnRzLgorCistIElzc3VlICMxMzAxMjogVGhlICdrZWVwZW5kcycgcGFyYW1ldGVyIHRvIHN0ci5zcGxpdGxpbmVzIG1heSBub3cgYmUgcGFzc2VkCisgIGFzIGEga2V5d29yZCBhcmd1bWVudDogICJteV9zdHJpbmcuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSIuICBUaGUgc2FtZQorICBjaGFuZ2UgYWxzbyBhcHBsaWVzIHRvIGJ5dGVzLnNwbGl0bGluZXMgYW5kIGJ5dGVhcnJheS5zcGxpdGxpbmVzLgorCiAtIElzc3VlICM3NzMyOiBEb24ndCBvcGVuIGEgZGlyZWN0b3J5IGFzIGEgZmlsZSBhbnltb3JlIHdoaWxlIGltcG9ydGluZyBhCiAgIG1vZHVsZS4gSWdub3JlIHRoZSBkaXJlY290cnkgaWYgaXRzIG5hbWUgbWF0Y2hzIHRoZSBtb2R1bGUgbmFtZSAoZS5nLgogICAiX19pbml0X18ucHkiKSBhbmQgcmFpc2UgYSBJbXBvcnRFcnJvciBpbnN0ZWFkLgpAQCAtMTM0Miw2ICsyODc1LDkgQEAKICAgbGlzdF9yZXBlYXQgKGxpc3RvYmplY3QuYykgYW5kIGlzbGljZV9uZXh0IChpdGVydG9vbHNtb2R1bGUuYykuICBUaGVzZSBidWdzCiAgIGNhdXNlZCB0ZXN0IGZhaWx1cmVzIHdpdGggcmVjZW50IHZlcnNpb25zIG9mIENsYW5nLgogCistIElzc3VlICMxMjkwNDogb3MudXRpbWUsIG9zLmZ1dGltZXMsIG9zLmx1dGltZXMsIGFuZCBvcy5mdXRpbWVzYXQgbm93IHdyaXRlCisgIGF0aW1lIGFuZCBtdGltZSB3aXRoIG5hbm9zZWNvbmQgcHJlY2lzaW9uIG9uIG1vZGVybiBQT1NJWCBwbGF0Zm9ybXMuCisKIC0gSXNzdWUgIzEyODAyOiB0aGUgV2luZG93cyBlcnJvciBFUlJPUl9ESVJFQ1RPUlkgKG51bWJlcmVkIDI2NykgaXMgbm93CiAgIG1hcHBlZCB0byBQT1NJWCBlcnJubyBFTk9URElSIChwcmV2aW91c2x5IEVJTlZBTCkuCiAKQEAgLTEzNTEsMzcgKzI4ODcsMzI5IEBACiAtIElzc3VlICMxMjc5MTogQnJlYWsgcmVmZXJlbmNlIGN5Y2xlcyBlYXJseSB3aGVuIGEgZ2VuZXJhdG9yIGV4aXRzIHdpdGgKICAgYW4gZXhjZXB0aW9uLgogCistIElzc3VlICMxMjc3MzogTWFrZSBfX2RvY19fIG11dGFibGUgb24gdXNlci1kZWZpbmVkIGNsYXNzZXMuCisKKy0gSXNzdWUgIzEyNzY2OiBSYWlzZSBhIFZhbHVlRXJyb3Igd2hlbiBjcmVhdGluZyBhIGNsYXNzIHdpdGggYSBjbGFzcyB2YXJpYWJsZQorICB0aGF0IGNvbmZsaWN0cyB3aXRoIGEgbmFtZSBpbiBfX3Nsb3RzX18uCisKIC0gSXNzdWUgIzEyMjY2OiBGaXggc3RyLmNhcGl0YWxpemUoKSB0byBjb3JyZWN0bHkgdXBwZXJjYXNlL2xvd2VyY2FzZQogICB0aXRsZWNhc2VkIGFuZCBjYXNlZCBub24tbGV0dGVyIGNoYXJhY3RlcnMuCiAKKy0gSXNzdWUgIzEyNzMyOiBJbiBuYXJyb3cgdW5pY29kZSBidWlsZHMsIGFsbG93IFVuaWNvZGUgaWRlbnRpZmllcnMgd2hpY2ggZmFsbAorICBvdXRzaWRlIHRoZSBCTVAuCisKKy0gSXNzdWUgIzEyNTc1OiBWYWxpZGF0ZSB1c2VyLWdlbmVyYXRlZCBBU1QgYmVmb3JlIGl0IGlzIGNvbXBpbGVkLgorCistIE1ha2UgdHlwZShOb25lKSwgdHlwZShFbGxpcHNpcyksIGFuZCB0eXBlKE5vdEltcGxlbWVudGVkKSBjYWxsYWJsZS4gVGhleQorICByZXR1cm4gdGhlIHJlc3BlY3RpdmUgc2luZ2xldG9uIGluc3RhbmNlcy4KKworLSBGb3JiaWQgc3VtbWluZyBieXRlcyB3aXRoIHN1bSgpLgorCistIFZlcmlmeSB0aGUgdHlwZXMgb2YgQVNUIHN0cmluZ3MgYW5kIGlkZW50aWZpZXJzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyIGJlZm9yZQorICBjb21waWxpbmcgdGhlbS4KKworLSBJc3N1ZSAjMTI2NDc6IFRoZSBOb25lIG9iamVjdCBub3cgaGFzIGEgX19ib29sX18oKSBtZXRob2QgdGhhdCByZXR1cm5zIEZhbHNlLgorICBGb3JtZXJseSwgYm9vbChOb25lKSByZXR1cm5lZCBGYWxzZSBvbmx5IGJlY2F1c2Ugb2Ygc3BlY2lhbCBjYXNlIGxvZ2ljCisgIGluIFB5T2JqZWN0X0lzVHJ1ZSgpLgorCistIElzc3VlICMxMjU3OTogc3RyLmZvcm1hdF9tYXAoKSBub3cgcmFpc2VzIGEgVmFsdWVFcnJvciBpZiB1c2VkIG9uIGEKKyAgZm9ybWF0IHN0cmluZyB0aGF0IGNvbnRhaW5zIHBvc2l0aW9uYWwgZmllbGRzLiBJbml0aWFsIHBhdGNoIGJ5CisgIEp1bGlhbiBCZXJtYW4uCisKKy0gSXNzdWUgIzEwMjcxOiBBbGxvdyB3YXJuaW5ncy5zaG93d2FybmluZygpIGJlIGFueSBjYWxsYWJsZS4KKworLSBJc3N1ZSAjMTE2Mjc6IEZpeCBzZWdmYXVsdCB3aGVuIF9fbmV3X18gb24gYSBleGNlcHRpb24gcmV0dXJucyBhCisgIG5vbi1leGNlcHRpb24gY2xhc3MuCisKKy0gSXNzdWUgIzEyMTQ5OiBVcGRhdGUgdGhlIG1ldGhvZCBjYWNoZSBhZnRlciBhIHR5cGUncyBkaWN0aW9uYXJ5IGdldHMKKyAgY2xlYXJlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuICBUaGlzIGZpeGVzIGEgc2VnZmF1bHQgd2hlbiBhbiBpbnN0YW5jZQorICBhbmQgaXRzIHR5cGUgZ2V0IGNhdWdodCBpbiBhIHJlZmVyZW5jZSBjeWNsZSwgYW5kIHRoZSBpbnN0YW5jZSdzCisgIGRlYWxsb2NhdG9yIGNhbGxzIG9uZSBvZiB0aGUgbWV0aG9kcyBvbiB0aGUgdHlwZSAoZS5nLiB3aGVuIHN1YmNsYXNzaW5nCisgIElPQmFzZSkuICBEaWFnbm9zaXMgYW5kIHBhdGNoIGJ5IERhdmlkZSBSaXp6by4KKworLSBJc3N1ZSAjOTYxMSwgIzkwMTU6IEZpbGVJTy5yZWFkKCkgY2xhbXBzIHRoZSBsZW5ndGggdG8gSU5UX01BWCBvbiBXaW5kb3dzLgorCistIElzc3VlICM5NjQyOiBVbmlmb3JtaXplIHRoZSB0ZXN0cyBvbiB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoZSBtYmNzIGNvZGVjLCBhZGQKKyAgYSBuZXcgSEFWRV9NQkNTIGRlZmluZS4KKworLSBJc3N1ZSAjOTY0MjogRml4IGZpbGVzeXN0ZW0gZW5jb2RpbmcgaW5pdGlhbGl6YXRpb246IHVzZSB0aGUgQU5TSSBjb2RlIHBhZ2UKKyAgb24gV2luZG93cyBpZiB0aGUgbWJjcyBjb2RlYyBpcyBub3QgYXZhaWxhYmxlLCBhbmQgZmFpbCB3aXRoIGEgZmF0YWwgZXJyb3IgaWYKKyAgd2UgY2Fubm90IGdldCB0aGUgbG9jYWxlIGVuY29kaW5nIChpZiBubF9sYW5naW5mbyhDT0RFU0VUKSBpcyBub3QgYXZhaWxhYmxlKQorICBpbnN0ZWFkIG9mIHVzaW5nIFVURi04LgorCistIFdoZW4gYSBnZW5lcmF0b3IgeWllbGRzLCBkbyBub3QgcmV0YWluIHRoZSBjYWxsZXIncyBleGNlcHRpb24gc3RhdGUgb24gdGhlCisgIGdlbmVyYXRvci4KKworLSBJc3N1ZSAjMTI0NzU6IFByZXZlbnQgZ2VuZXJhdG9ycyBmcm9tIGxlYWtpbmcgdGhlaXIgZXhjZXB0aW9uIHN0YXRlIGludG8gdGhlCisgIGNhbGxlcidzIGZyYW1lIGFzIHRoZXkgcmV0dXJuIGZvciB0aGUgbGFzdCB0aW1lLgorCistIElzc3VlICMxMjI5MTogWW91IGNhbiBub3cgbG9hZCBtdWx0aXBsZSBtYXJzaGFsbGVkIG9iamVjdHMgZnJvbSBhIHN0cmVhbSwKKyAgd2l0aCBvdGhlciBkYXRhIGludGVybGVhdmVkIGJldHdlZW4gbWFyc2hhbGxlZCBvYmplY3RzLgorCistIElzc3VlICMxMjM1NjogV2hlbiByZXF1aXJlZCBwb3NpdGlvbmFsIG9yIGtleXdvcmQtb25seSBhcmd1bWVudHMgYXJlIG5vdAorICBnaXZlbiwgcHJvZHVjZSBhIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2Ugd2hpY2ggaW5jbHVkZXMgdGhlIG5hbWUocykgb2YgdGhlCisgIG1pc3NpbmcgYXJndW1lbnRzLgorCistIElzc3VlICMxMjM3MDogRml4IHN1cGVyIHdpdGggbm8gYXJndW1lbnRzIHdoZW4gX19jbGFzc19fIGlzIG92ZXJyaWRlbiBpbiB0aGUKKyAgY2xhc3MgYm9keS4KKworLSBJc3N1ZSAjMTIwODQ6IG9zLnN0YXQgb24gV2luZG93cyBub3cgd29ya3MgcHJvcGVybHkgd2l0aCByZWxhdGl2ZSBzeW1ib2xpYworICBsaW5rcyB3aGVuIGNhbGxlZCBmcm9tIGFueSBkaXJlY3RvcnkuCisKKy0gTG9vc2VuIHR5cGUgcmVzdHJpY3Rpb25zIG9uIHRoZSBfX2Rpcl9fIG1ldGhvZC4gX19kaXJfXyBjYW4gbm93IHJldHVybiBhbnkKKyAgc2VxdWVuY2UsIHdoaWNoIHdpbGwgYmUgY29udmVydGVkIHRvIGEgbGlzdCBhbmQgc29ydGVkIGJ5IGRpcigpLgorCistIElzc3VlICMxMjI2NTogTWFrZSBlcnJvciBtZXNzYWdlcyBwcm9kdWNlZCBieSBwYXNzaW5nIGFuIGludmFsaWQgc2V0IG9mCisgIGFyZ3VtZW50cyB0byBhIGZ1bmN0aW9uIG1vcmUgaW5mb3JtYXRpdmUuCisKKy0gSXNzdWUgIzEyMjI1OiBTdGlsbCBhbGxvdyBQeXRob24gdG8gYnVpbGQgaWYgUHl0aG9uIGlzIG5vdCBpbiBpdHMgaGcgcmVwbyBvcgorICBtZXJjdXJpYWwgaXMgbm90IGluc3RhbGxlZC4KKworLSBJc3N1ZSAjMTE5NTogbXlfZmdldHMoKSBub3cgYWx3YXlzIGNsZWFycyBlcnJvcnMgYmVmb3JlIGNhbGxpbmcgZmdldHMoKS4gRml4CisgIHRoZSBmb2xsb3dpbmcgY2FzZTogc3lzLnN0ZGluLnJlYWQoKSBzdG9wcGVkIHdpdGggQ1RSTCtkIChlbmQgb2YgZmlsZSksCisgIHJhd19pbnB1dCgpIGludGVycnVwdGVkIGJ5IENUUkwrYy4KKworLSBJc3N1ZSAjMTIyMTY6IEFsbG93IHVuZXhwZWN0ZWQgRU9GIGVycm9ycyB0byBoYXBwZW4gb24gYW55IGxpbmUgb2YgdGhlIGZpbGUuCisKKy0gSXNzdWUgIzEyMTk5OiBUaGUgVHJ5RXhjZXB0IGFuZCBUcnlGaW5hbGx5IGFuZCBBU1Qgbm9kZXMgaGF2ZSBiZWVuIHVuaWZpZWQKKyAgaW50byBhIFRyeSBub2RlLgorCistIElzc3VlICM5NjcwOiBJbmNyZWFzZSB0aGUgZGVmYXVsdCBzdGFjayBzaXplIGZvciBzZWNvbmRhcnkgdGhyZWFkcyBvbgorICBNYWMgT1MgWCBhbmQgRnJlZUJTRCB0byByZWR1Y2UgdGhlIGNoYW5jZXMgb2YgYSBjcmFzaCBpbnN0ZWFkIG9mIGEKKyAgIm1heGltdW0gcmVjdXJzaW9uIGRlcHRoIiBSdW50aW1lRXJyb3IgZXhjZXB0aW9uLgorICAocGF0Y2ggYnkgUm9uYWxkIE91c3NvcmVuKQorCistIElzc3VlICMxMjEwNjogVGhlIHVzZSBvZiB0aGUgbXVsdGlwbGUtd2l0aCBzaG9ydGhhbmQgc3ludGF4IGlzIG5vdyByZWZsZWN0ZWQKKyAgaW4gdGhlIEFTVC4KKworLSBJc3N1ZSAjMTIxOTA6IFRyeSB0byB1c2UgdGhlIHNhbWUgZmlsZW5hbWUgb2JqZWN0IHdoZW4gY29tcGlsaW5nIHVubWFyc2hhbGxpbmcKKyAgYSBjb2RlIG9iamVjdHMgaW4gdGhlIHNhbWUgZmlsZS4KKworLSBJc3N1ZSAjMTIxNjY6IE1vdmUgaW1wbGVtZW50YXRpb25zIG9mIGRpcigpIHNwZWNpYWxpemVkIGZvciB2YXJpb3VzIHR5cGVzIGludG8KKyAgdGhlIF9fZGlyX18oKSBtZXRob2RzIG9mIHRob3NlIHR5cGVzLgorCistIElzc3VlICM1NzE1OiBJbiBzb2NrZXRzZXJ2ZXIsIGNsb3NlIHRoZSBzZXJ2ZXIgc29ja2V0IGluIHRoZSBjaGlsZCBwcm9jZXNzLgorCistIENvcnJlY3QgbG9va3VwIG9mIF9fZGlyX18gb24gb2JqZWN0cy4gQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGlzIGNhdXNlcyBlcnJvcnMKKyAgYmVzaWRlcyBBdHRyaWJ1dGVFcnJvciBmb3VuZCBvbiBsb29rdXAgdG8gYmUgcHJvcGFnYXRlZC4KKworLSBJc3N1ZSAjMTIwNjA6IFVzZSBzaWdfYXRvbWljX3QgdHlwZSBhbmQgdm9sYXRpbGUga2V5d29yZCBpbiB0aGUgc2lnbmFsCisgIG1vZHVsZS4gUGF0Y2ggd3JpdHRlbiBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzE3NDY2NTY6IEFkZGVkIHRoZSBpZl9uYW1laW5kZXgsIGlmX2luZGV4dG9uYW1lLCBpZl9uYW1ldG9pbmRleAorICBtZXRob2RzIHRvIHRoZSBzb2NrZXQgbW9kdWxlLgorCistIElzc3VlICMxMjA0NDogRml4ZWQgc3VicHJvY2Vzcy5Qb3BlbiB3aGVuIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIgdG8KKyAgd2FpdCBmb3IgdGhlIHByb2Nlc3MgdG8gZW5kIHdoZW4gZXhpdGluZyB0aGUgY29udGV4dCB0byBhdm9pZCB1bmludGVudGlvbmFsbHkKKyAgbGVhdmluZyB6b21iaWUgcHJvY2Vzc2VzIGFyb3VuZC4KKworLSBJc3N1ZSAjMTE5NTogRml4IGlucHV0KCkgaWYgaXQgaXMgaW50ZXJydXB0ZWQgYnkgQ1RSTCtkIGFuZCB0aGVuIENUUkwrYywKKyAgY2xlYXIgdGhlIGVuZC1vZi1maWxlIGluZGljYXRvciBhZnRlciBDVFJMK2QuCisKKy0gSXNzdWUgIzE4NTY6IEF2b2lkIGNyYXNoZXMgYW5kIGxvY2t1cHMgd2hlbiBkYWVtb24gdGhyZWFkcyBydW4gd2hpbGUgdGhlCisgIGludGVycHJldGVyIGlzIHNodXR0aW5nIGRvd247IGluc3RlYWQsIHRoZXNlIHRocmVhZHMgYXJlIG5vdyBraWxsZWQgd2hlbgorICB0aGV5IHRyeSB0byB0YWtlIHRoZSBHSUwuCisKKy0gSXNzdWUgIzk3NTY6IFdoZW4gY2FsbGluZyBhIG1ldGhvZCBkZXNjcmlwdG9yIG9yIGEgc2xvdCB3cmFwcGVyIGRlc2NyaXB0b3IsCisgIHRoZSBjaGVjayBvZiB0aGUgb2JqZWN0IHR5cGUgZG9lc24ndCByZWFkIHRoZSBfX2NsYXNzX18gYXR0cmlidXRlIGFueW1vcmUuCisgIEZpeCBhIGNyYXNoIGlmIGEgY2xhc3Mgb3ZlcnJpZGUgaXRzIF9fY2xhc3NfXyBhdHRyaWJ1dGUgKGUuZy4gYSBwcm94eSBvZiB0aGUKKyAgc3RyIHR5cGUpLiBQYXRjaCB3cml0dGVuIGJ5IEFuZHJlYXMgU3TDvGhyay4KKworLSBJc3N1ZSAjMTA1MTc6IEFmdGVyIGZvcmsoKSwgcmVpbml0aWFsaXplIHRoZSBUTFMgdXNlZCBieSB0aGUgUHlHSUxTdGF0ZV8qCisgIEFQSXMsIHRvIGF2b2lkIGEgY3Jhc2ggd2l0aCB0aGUgcHRocmVhZCBpbXBsZW1lbnRhdGlvbiBpbiBSSEVMIDUuICBQYXRjaAorICBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzEwOTE0OiBJbml0aWFsaXplIGNvcnJlY3RseSB0aGUgZmlsZXN5c3RlbSBjb2RlYyB3aGVuIGNyZWF0aW5nIGEgbmV3CisgIHN1YmludGVycHJldGVyIHRvIGZpeCBhIGJvb3RzdHJhcCBpc3N1ZSB3aXRoIGNvZGVjcyBpbXBsZW1lbnRlZCBpbiBQeXRob24sIGFzCisgIHRoZSBJU08tODg1OS0xNSBjb2RlYy4KKworLSBJc3N1ZSAjMTE5MTg6IE9TLzIgYW5kIFZNUyBhcmUgbm8gbW9yZSBzdXBwb3J0ZWQgYmVjYXVzZSBvZiB0aGUgbGFjayBvZgorICBtYWludGFpbmVyLgorCistIElzc3VlICM2NzgwOiBmaXggc3RhcnRzL2VuZHN3aXRoIGVycm9yIG1lc3NhZ2UgdG8gbWVudGlvbiB0aGF0IHR1cGxlcyBhcmUKKyAgYWNjZXB0ZWQgdG9vLgorCistIElzc3VlICM1MDU3OiBmaXggYSBidWcgaW4gdGhlIHBlZXBob2xlciB0aGF0IGxlZCB0byBub24tcG9ydGFibGUgcHljIGZpbGVzCisgIGJldHdlZW4gbmFycm93IGFuZCB3aWRlIGJ1aWxkcyB3aGlsZSBvcHRpbWl6aW5nIEJJTkFSWV9TVUJTQ1Igb24gbm9uLUJNUAorICBjaGFycyAoZS5nLiAiXFUwMDAxMjM0NSJbMF0pLgorCistIElzc3VlICMxMTg0NTogRml4IHR5cG8gaW4gcmFuZ2VvYmplY3QuYyB0aGF0IGNhdXNlZCBhIGNyYXNoIGluCisgIGNvbXB1dGVfc2xpY2VfaW5kaWNlcy4gIFBhdGNoIGJ5IERhbmllbCBVcmJhbi4KKworLSBJc3N1ZSAjNTY3MzogQWRkZWQgYSBgdGltZW91dGAga2V5d29yZCBhcmd1bWVudCB0byBzdWJwcm9jZXNzLlBvcGVuLndhaXQsCisgIHN1YnByb2Nlc3MuUG9wZW4uY29tbXVuaWNhdGVkLCBzdWJwcm9jZXNzLmNhbGwsIHN1YnByb2Nlc3MuY2hlY2tfY2FsbCwgYW5kCisgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0LiAgSWYgdGhlIGJsb2NraW5nIG9wZXJhdGlvbiB0YWtlcyBtb3JlIHRoYW4gYHRpbWVvdXRgCisgIHNlY29uZHMsIHRoZSBgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZGAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKworLSBJc3N1ZSAjMTE2NTA6IFB5T1NfU3RkaW9SZWFkbGluZSgpIHJldHJpZXMgZmdldHMoKSBpZiBpdCB3YXMgaW50ZXJydXB0ZWQKKyAgKEVJTlRSKSwgZm9yIGV4YW1wbGUgaWYgdGhlIHByb2dyYW0gaXMgc3RvcHBlZCB3aXRoIENUUkwreiBvbiBNYWMgT1MgWC4gUGF0Y2gKKyAgd3JpdHRlbiBieSBDaGFybGVzLUZyYW5jb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjOTMxOTogSW5jbHVkZSB0aGUgZmlsZW5hbWUgaW4gIk5vbi1VVEY4IGNvZGUgLi4uIiBzeW50YXggZXJyb3IuCisKKy0gSXNzdWUgIzEwNzg1OiBTdG9yZSB0aGUgZmlsZW5hbWUgYXMgVW5pY29kZSBpbiB0aGUgUHl0aG9uIHBhcnNlci4KKworLSBJc3N1ZSAjMTE2MTk6IF9QeUltcG9ydF9Mb2FkRHluYW1pY01vZHVsZSgpIGRvZXNuJ3QgZW5jb2RlIHRoZSBwYXRoIHRvIGJ5dGVzCisgIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzEwOTk4OiBSZW1vdmUgbWVudGlvbnMgb2YgLVEsIHN5cy5mbGFncy5kaXZpc2lvbl93YXJuaW5nIGFuZAorICBQeV9EaXZpc2lvbldhcm5pbmdGbGFnIGxlZnQgb3ZlciBmcm9tIFB5dGhvbiAyLgorCistIElzc3VlICMxMTI0NDogUmVtb3ZlIGFuIHVubmVjZXNzYXJ5IHBlZXBob2xlciBjaGVjayB0aGF0IHdhcyBwcmV2ZW50aW5nCisgIG5lZ2F0aXZlIHplcm9zIGZyb20gYmVpbmcgY29uc3RhbnQtZm9sZGVkIHByb3Blcmx5LgorCistIElzc3VlICMxMTM5NTogaW8uRmlsZUlPKCkud3JpdGUoKSBjbGFtcHMgdGhlIGRhdGEgbGVuZ3RoIHRvIDMyLDc2NyBieXRlcyBvbgorICBXaW5kb3dzIGlmIHRoZSBmaWxlIGlzIGEgVFRZIHRvIHdvcmthcm91bmQgYSBXaW5kb3dzIGJ1Zy4gVGhlIFdpbmRvd3MgY29uc29sZQorICByZXR1cm5zIGFuIGVycm9yICgxMjogbm90IGVub3VnaCBzcGFjZSBlcnJvcikgb24gd3JpdGluZyBpbnRvIHN0ZG91dCBpZgorICBzdGRvdXQgbW9kZSBpcyBiaW5hcnkgYW5kIHRoZSBsZW5ndGggaXMgZ3JlYXRlciB0aGFuIDY2LDAwMCBieXRlcyAob3IgbGVzcywKKyAgZGVwZW5kaW5nIG9uIGhlYXAgdXNhZ2UpLgorCistIElzc3VlICMxMTMyMDogZml4IGJvZ3VzIG1lbW9yeSBtYW5hZ2VtZW50IGluIE1vZHVsZXMvZ2V0cGF0aC5jLCBsZWFkaW5nIHRvCisgIGEgcG9zc2libGUgY3Jhc2ggd2hlbiBjYWxsaW5nIFB5X1NldFBhdGgoKS4KKworLSBJc3N1ZSAjMTE0MzI6IEEgYnVnIHdhcyBpbnRyb2R1Y2VkIGluIHN1YnByb2Nlc3MuUG9wZW4gb24gcG9zaXggc3lzdGVtcyB3aXRoCisgIDMuMi4wIHdoZXJlIHRoZSBzdGRvdXQgb3Igc3RkZXJyIGZpbGUgZGVzY3JpcHRvciBiZWluZyB0aGUgc2FtZSBhcyB0aGUgc3RkaW4KKyAgZmlsZSBkZXNjcmlwdG9yIHdvdWxkIHJhaXNlIGFuIGV4Y2VwdGlvbi4gd2ViYnJvd3Nlci5vcGVuIHdvdWxkIGZhaWwuIGZpeGVkLgorCistIElzc3VlICM5ODU2OiBDaGFuZ2Ugb2JqZWN0Ll9fZm9ybWF0X18gd2l0aCBhIG5vbi1lbXB0eSBmb3JtYXQgc3RyaW5nCisgIHRvIGJlIGEgRGVwcmVjYXRpb25XYXJuaW5nLiBJbiAzLjIgaXQgd2FzIGEgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZy4KKyAgSW4gMy40IGl0IHdpbGwgYmUgYSBUeXBlRXJyb3IuCisKKy0gSXNzdWUgIzExMjQ0OiBUaGUgcGVlcGhvbGUgb3B0aW1pemVyIGlzIG5vdyBhYmxlIHRvIGNvbnN0YW50LWZvbGQKKyAgYXJiaXRyYXJpbHkgY29tcGxleCBleHByZXNzaW9ucy4gIFRoaXMgYWxzbyBmaXhlcyBhIDMuMiByZWdyZXNzaW9uIHdoZXJlCisgIG9wZXJhdGlvbnMgaW52b2x2aW5nIG5lZ2F0aXZlIG51bWJlcnMgd2VyZSBub3QgY29uc3RhbnQtZm9sZGVkLgorCistIElzc3VlICMxMTQ1MDogRG9uJ3QgdHJ1bmNhdGUgaGcgdmVyc2lvbiBpbmZvIGluIFB5X0dldEJ1aWxkSW5mbygpIHdoZW4KKyAgdGhlcmUgYXJlIG1hbnkgdGFncyAoZS5nLiB3aGVuIHVzaW5nIG1xKS4gIFBhdGNoIGJ5IE5hZGVlbSBWYXdkYS4KKworLSBJc3N1ZSAjMTEzMzU6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gbGlzdC5zb3J0IHdoZW4gdGhlIGtleSBmdW5jdGlvbgorICB0aHJvd3MgYW4gZXhjZXB0aW9uLgorCistIElzc3VlICM4OTIzOiBXaGVuIGEgc3RyaW5nIGlzIGVuY29kZWQgdG8gVVRGLTggaW4gc3RyaWN0IG1vZGUsIHRoZSByZXN1bHQgaXMKKyAgY2FjaGVkIGludG8gdGhlIG9iamVjdC4gRXhhbXBsZXM6IHN0ci5lbmNvZGUoKSwgc3RyLmVuY29kZSgndXRmLTgnKSwKKyAgUHlVbmljb2RlX0FzVVRGOFN0cmluZygpIGFuZCBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHVuaWNvZGUsICJ1dGYtOCIsCisgIE5VTEwpLgorCistIElzc3VlICMxMDgzMTogUHlVbmljb2RlX0Zyb21Gb3JtYXQoKSBzdXBwb3J0cyAlbGksICVsbGkgYW5kICV6aSBmb3JtYXRzLgorCistIElzc3VlICMxMDgyOTogUmVmYWN0b3IgUHlVbmljb2RlX0Zyb21Gb3JtYXQoKSwgdXNlIHRoZSBzYW1lIGZ1bmN0aW9uIHRvIHBhcnNlCisgIHRoZSBmb3JtYXQgc3RyaW5nIGluIHRoZSAzIHN0ZXBzLCBmaXggY3Jhc2hzIG9uIGludmFsaWQgZm9ybWF0IHN0cmluZ3MuCisKKy0gSXNzdWUgIzEzMDA3OiB3aGljaGRiIHNob3VsZCByZWNvZ25pemUgZ2RibSAxLjkgbWFnaWMgbnVtYmVycy4KKworLSBJc3N1ZSAjMTEyNDY6IEZpeCBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVYiKSB0byBkZWNvZGUgdGhlIGJ5dGUgc3RyaW5nIGZyb20KKyAgVVRGLTggKHdpdGggcmVwbGFjZSBlcnJvciBoYW5kbGVyKSBpbnN0ZWFkIG9mIElTTy04ODU5LTEgKGluIHN0cmljdCBtb2RlKS4KKyAgUGF0Y2ggd3JpdHRlbiBieSBSYXkgQWxsZW4uCisKKy0gSXNzdWUgIzExMjg2OiBSYWlzZSBhIFZhbHVlRXJyb3IgZnJvbSBjYWxsaW5nIFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyIHdpdGgKKyAgYSBidWZmZXIgc3RydWN0IGhhdmluZyBhIE5VTEwgZGF0YSBwb2ludGVyLgorCistIElzc3VlICMxMTI3MjogT24gV2luZG93cywgaW5wdXQoKSBzdHJpcHMgJ1xyJyAoYW5kIG5vdCBvbmx5ICdcbicpLCBhbmQKKyAgc3lzLnN0ZGluIHVzZXMgdW5pdmVyc2FsIG5ld2xpbmUgKHJlcGxhY2UgJ1xyXG4nIGJ5ICdcbicpLgorCistIElzc3VlICMxMTgyODogc3RhcnRzd2l0aCBhbmQgZW5kc3dpdGggbm93IGFjY2VwdCBOb25lIGFzIHNsaWNlIGluZGV4LgorICBQYXRjaCBieSBUb3JzdGVuIEJlY2tlci4KKworLSBJc3N1ZSAjMTA4MzA6IEZpeCBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoIiVjIikgZm9yIG5vbi1CTVAgY2hhcmFjdGVycyBvbgorICBuYXJyb3cgYnVpbGQuCisKKy0gSXNzdWUgIzExMTY4OiBSZW1vdmUgZmlsZW5hbWUgZGVidWcgdmFyaWFibGUgZnJvbSBQeUV2YWxfRXZhbEZyYW1lRXgoKS4KKyAgSXQgZW5jb2RlZCB0aGUgVW5pY29kZSBmaWxlbmFtZSB0byBVVEYtOCwgYnV0IHRoZSBlbmNvZGluZyBmYWlscyBvbgorICB1bmRlY29kYWJsZSBmaWxlbmFtZSAob24gc3Vycm9nYXRlIGNoYXJhY3RlcnMpIHdoaWNoIHJhaXNlcyBhbiB1bmV4cGVjdGVkCisgIFVuaWNvZGVFbmNvZGVFcnJvciBvbiByZWN1cnNpb24gbGltaXQuCisKKy0gSXNzdWUgIzExMTg3OiBSZW1vdmUgYm9vdHN0cmFwIGNvZGUgKHVzZSBBU0NJSSkgb2YKKyAgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZygpLCBpdCB3YXMgcmVwbGFjZWQgYnkgYSBiZXR0ZXIgZmFsbGJhY2sgKHVzZSB0aGUKKyAgbG9jYWxlIGVuY29kaW5nKSBpbiBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KCkuCisKKy0gQ2hlY2sgZm9yIE5VTEwgcmVzdWx0IGluIFB5VHlwZV9Gcm9tU3BlYy4KKworLSBJc3N1ZSAjMTA1MTY6IE5ldyBjb3B5KCkgYW5kIGNsZWFyKCkgbWV0aG9kcyBmb3IgbGlzdHMgYW5kIGJ5dGVhcnJheXMuCisKKy0gSXNzdWUgIzExMzg2OiBieXRlYXJyYXkucG9wKCkgbm93IHRocm93cyBJbmRleEVycm9yIHdoZW4gdGhlIGJ5dGVhcnJheSBpcworICBlbXB0eSwgaW5zdGVhZCBvZiBPdmVyZmxvd0Vycm9yLgorCistIElzc3VlICMxMjM4MDogVGhlIHJqdXN0LCBsanVzdCBhbmQgY2VudGVyIG1ldGhvZHMgb2YgYnl0ZXMgYW5kIGJ5dGVhcnJheQorICBub3cgYWNjZXB0IGEgYnl0ZWFycmF5IGFyZ3VtZW50LgorCiBMaWJyYXJ5CiAtLS0tLS0tCiAKKy0gSXNzdWUgIzE0MTk1OiBBbiBpc3N1ZSB0aGF0IGNhdXNlZCB3ZWFrcmVmLldlYWtTZXQgaW5zdGFuY2VzIHRvIGluY29ycmVjdGx5CisgIHJldHVybiBUcnVlIGZvciBhIFdlYWtTZXQgaW5zdGFuY2UgJ2EnIGluIGJvdGggJ2EgPCBhJyBhbmQgJ2EgPiBhJyBoYXMgYmVlbgorICBmaXhlZC4KKworLSBJc3N1ZSAjMTQxNjY6IFBpY2tsZXIgb2JqZWN0cyBub3cgaGF2ZSBhbiBvcHRpb25hbCBgYGRpc3BhdGNoX3RhYmxlYGAKKyAgYXR0cmlidXRlIHdoaWNoIGFsbG93cyB0byBzZXQgY3VzdG9tIHBlci1waWNrbGVyIHJlZHVjdGlvbiBmdW5jdGlvbnMuCisgIFBhdGNoIGJ5IHNidC4KKworLSBJc3N1ZSAjMTQxNzc6IG1hcnNoYWwubG9hZHMoKSBub3cgcmFpc2VzIFR5cGVFcnJvciB3aGVuIGdpdmVuIGFuIHVuaWNvZGUKKyAgc3RyaW5nLiAgUGF0Y2ggYnkgR3VpbGhlcm1lIEdvbsOnYWx2ZXMuCisKKy0gSXNzdWUgIzEzNTUwOiBSZW1vdmUgdGhlIGRlYnVnIG1hY2hpbmVyeSBmcm9tIHRoZSB0aHJlYWRpbmcgbW9kdWxlOiByZW1vdmUKKyAgdmVyYm9zZSBhcmd1bWVudHMgZnJvbSBhbGwgdGhyZWFkaW5nIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjMTQxNTk6IEZpeCB0aGUgbGVuKCkgb2Ygd2VhayBjb250YWluZXJzIChXZWFrU2V0LCBXZWFrS2V5RGljdGlvbmFyeSwKKyAgV2Vha1ZhbHVlRGljdGlvbmFyeSkgdG8gcmV0dXJuIGEgYmV0dGVyIGFwcHJveGltYXRpb24gd2hlbiBzb21lIG9iamVjdHMKKyAgYXJlIGRlYWQgb3IgZHlpbmcuICBNb3Jlb3ZlciwgdGhlIGltcGxlbWVudGF0aW9uIGlzIG5vdyBPKDEpIHJhdGhlciB0aGFuCisgIE8obikuCisKKy0gSXNzdWUgIzEzMTI1OiBTaWxlbmNlIHNwdXJpb3VzIHRlc3RfbGliMnRvMyBvdXRwdXQgd2hlbiBpbiBub24tdmVyYm9zZSBtb2RlLgorICBQYXRjaCBieSBNaWtoYWlsIE5vdmlrb3YuCisKKy0gSXNzdWUgIzExODQxOiBGaXggY29tcGFyaXNvbiBidWcgd2l0aCAncmMnIHZlcnNpb25zIGluIHBhY2thZ2luZy52ZXJzaW9uLgorICBQYXRjaCBieSBGaWxpcCBHcnVzemN6ecWEc2tpLgorCistIElzc3VlICMxMzQ0NzogQWRkIGEgdGVzdCBmaWxlIHRvIGhvc3QgcmVncmVzc2lvbiB0ZXN0cyBmb3IgYnVncyBpbiB0aGUKKyAgc2NyaXB0cyBmb3VuZCBpbiB0aGUgVG9vbHMgZGlyZWN0b3J5LgorCistIElzc3VlICM2ODg0OiBGaXggbG9uZy1zdGFuZGluZyBidWdzIHdpdGggTUFOSUZFU1QuaW4gcGFyc2luZyBpbiBkaXN0dXRpbHMKKyAgb24gV2luZG93cy4gIEFsc28gZml4ZWQgaW4gcGFja2FnaW5nLgorCistIElzc3VlICM4MDMzOiBzcWxpdGUzOiBGaXggNjQtYml0IGludGVnZXIgaGFuZGxpbmcgaW4gdXNlciBmdW5jdGlvbnMKKyAgb24gMzItYml0IGFyY2hpdGVjdHVyZXMuIEluaXRpYWwgcGF0Y2ggYnkgUGhpbGlwcGUgRGV2YWxrZW5lZXIuCisKIC0gSFRNTFBhcnNlciBpcyBub3cgYWJsZSB0byBoYW5kbGUgc2xhc2hlcyBpbiB0aGUgc3RhcnQgdGFnLgogCistIElzc3VlICMxMzY0MTogRGVjb2RpbmcgZnVuY3Rpb25zIGluIHRoZSBiYXNlNjQgbW9kdWxlIG5vdyBhY2NlcHQgQVNDSUktb25seQorICB1bmljb2RlIHN0cmluZ3MuICBQYXRjaCBieSBDYXRhbGluIElhY29iLgorCistIElzc3VlICMxNDA0MzogU3BlZWQgdXAgaW1wb3J0bGliJ3MgX0ZpbGVGaW5kZXIgYnkgYXQgbGVhc3QgOHgsIGFuZCBhZGQgYQorICBuZXcgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkgZnVuY3Rpb24uCisKIC0gSXNzdWUgIzE0MDAxOiBDVkUtMjAxMi0wODQ1OiB4bWxycGM6IEZpeCBhbiBlbmRsZXNzIGxvb3AgaW4KICAgU2ltcGxlWE1MUlBDU2VydmVyIHVwb24gbWFsZm9ybWVkIFBPU1QgcmVxdWVzdC4KIAorLSBJc3N1ZSAjMTM5NjE6IE1vdmUgaW1wb3J0bGliIG92ZXIgdG8gdXNpbmcgb3MucmVwbGFjZSgpIGZvciBhdG9taWMgcmVuYW1pbmcuCisKKy0gRG8gYXdheSB3aXRoIGFtYmlndW91cyBsZXZlbCB2YWx1ZXMgKGFzIHN1Z2dlc3RlZCBieSBQRVAgMzI4KSBpbgorICBpbXBvcnRsaWIuX19pbXBvcnRfXygpIGJ5IHJhaXNpbmcgVmFsdWVFcnJvciB3aGVuIGxldmVsIDwgMC4KKwogLSBJc3N1ZSAjMjQ4OTogcHR5LnNwYXduIGNvdWxkIGNvbnN1bWUgMTAwJSBjcHUgd2hlbiBpdCBlbmNvdW50ZXJlZCBhbiBFT0YuCiAKIC0gSXNzdWUgIzEzMDE0OiBGaXggYSBwb3NzaWJsZSByZWZlcmVuY2UgbGVhayBpbiBTU0xTb2NrZXQuZ2V0cGVlcmNlcnQoKS4KIAorLSBJc3N1ZSAjMTM3Nzc6IEFkZCBQRl9TWVNURU0gc29ja2V0cyBvbiBPUyBYLgorICBQYXRjaCBieSBNaWNoYWVsIEdvZGVyYmF1ZXIuCisKIC0gSXNzdWUgIzEzMDE1OiBGaXggYSBwb3NzaWJsZSByZWZlcmVuY2UgbGVhayBpbiBkZWZhdWx0ZGljdC5fX3JlcHJfXy4KICAgUGF0Y2ggYnkgU3VtYW4gU2FoYS4KIAotLSBJc3N1ZSAjMTMyNjExMzogZGlzdHV0aWxzJyBidWlsZF9leHQgY29tbWFuZCAtLWxpYnJhcmllcyBvcHRpb24gbm93Ci0gIGNvcnJlY3RseSBwYXJzZXMgbXVsdGlwbGUgdmFsdWVzIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlIG9yIGNvbW1hcy4KKy0gSXNzdWUgIzEzMjYxMTM6IGRpc3R1dGlscycgYW5kIHBhY2thZ2luZydzIGJ1aWxkX2V4dCBjb21tYW5kcyBvcHRpb24gbm93CisgIGNvcnJlY3RseSBwYXJzZXMgbXVsdGlwbGUgdmFsdWVzIChzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZSBvciBjb21tYXMpIGdpdmVuCisgIHRvIHRoZWlyIC0tbGlicmFyaWVzIG9wdGlvbi4KIAogLSBJc3N1ZSAjMTAyODc6IG5udHBsaWIgbm93IHF1ZXJpZXMgdGhlIHNlcnZlcidzIENBUEFCSUxJVElFUyBmaXJzdCBiZWZvcmUKICAgc2VuZGluZyBNT0RFIFJFQURFUiwgYW5kIG9ubHkgc2VuZHMgaXQgaWYgbm90IGFscmVhZHkgaW4gUkVBREVSIG1vZGUuCiAgIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KIAotLSBJc3N1ZSAjMTM5Nzk6IEEgYnVnIGluIGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSB0aGF0IGNhdXNlZAotICB0aGUgd3JvbmcgbGlicmFyeSBuYW1lIHRvIGJlIHJldHVybmVkIGhhcyBiZWVuIGZpeGVkLgotCiAtIElzc3VlICMxMzk5MzogSFRNTFBhcnNlciBpcyBub3cgYWJsZSB0byBoYW5kbGUgYnJva2VuIGVuZCB0YWdzIHdoZW4KICAgc3RyaWN0PUZhbHNlLgogCistIElzc3VlICMxMzkzMDogbGliMnRvMyBub3cgc3VwcG9ydHMgd3JpdGluZyBjb252ZXJ0ZWQgb3V0cHV0IGZpbGVzIHRvIGFub3RoZXIKKyAgZGlyZWN0b3J5IHRyZWUgYXMgd2VsbCBhcyBjb3B5aW5nIHVuY2hhbmdlZCBmaWxlcyBhbmQgYWx0ZXJpbmcgdGhlIGZpbGUKKyAgc3VmZml4LgorCiAtIElzc3VlICM5NzUwOiBGaXggc3FsaXRlMy5Db25uZWN0aW9uLml0ZXJkdW1wIG9uIHRhYmxlcyBhbmQgZmllbGRzCiAgIHdpdGggYSBuYW1lIHRoYXQgaXMgYSBrZXl3b3JkIG9yIGNvbnRhaW5zIHF1b3Rlcy4gUGF0Y2ggYnkgTWFya28KICAgS29odGFsYS4KQEAgLTE0MDksMTAgKzMyMzcsMjcgQEAKIC0gSXNzdWUgIzEzOTYwOiBIVE1MUGFyc2VyIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBicm9rZW4gY29tbWVudHMgd2hlbgogICBzdHJpY3Q9RmFsc2UuCiAKLS0gSXNzdWUgIzkwMjE6IEFkZCBhbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIGNvcHkgbW9kdWxlIGRvY3VtZW50YXRpb24uCistIElzc3VlICMxMzkyMTogVW5kb2N1bWVudCBhbmQgY2xlYW4gdXAgc3FsaXRlMy5PcHRpbWl6ZWRVbmljb2RlLAorICB3aGljaCBpcyBvYnNvbGV0ZSBpbiBQeXRob24gMy54LiBJdCdzIG5vdyBhbGlhc2VkIHRvIHN0ciBmb3IKKyAgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCiAKLS0gSXNzdWUgIzYwMDU6IEV4YW1wbGVzIGluIHRoZSBzb2NrZXQgbGlicmFyeSBkb2N1bWVudGF0aW9uIHVzZSBzZW5kYWxsLCB3aGVyZQotICByZWxldmFudCwgaW5zdGVhZCBzZW5kIG1ldGhvZC4KKy0gV2hlbiAnJyBpcyBhIHBhdGggKGUuZy4gaW4gc3lzLnBhdGgpLCBtYWtlIHN1cmUgX19maWxlX18gdXNlcyB0aGUgY3VycmVudAorICB3b3JraW5nIGRpcmVjdG9yeSBpbnN0ZWFkIG9mICcnIGluIGltcG9ydGxpYi4KKworLSBJc3N1ZSAjMTM2MDk6IEFkZCB0d28gZnVuY3Rpb25zIHRvIHF1ZXJ5IHRoZSB0ZXJtaW5hbCBzaXplOgorICBvcy5nZXRfdGVybWluYWxfc2l6ZSAobG93IGxldmVsKSBhbmQgc2h1dGlsLmdldF90ZXJtaW5hbF9zaXplIChoaWdoIGxldmVsKS4KKyAgUGF0Y2ggYnkgWmJpZ25pZXcgSsSZZHJ6ZWpld3NraS1Tem1lay4KKworLSBJc3N1ZSAjMTM4NDU6IE9uIFdpbmRvd3MsIHRpbWUudGltZSgpIG5vdyB1c2VzIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCkKKyAgaW5zdGVhZCBvZiBmdGltZSgpIHRvIGhhdmUgYSByZXNvbHV0aW9uIG9mIDEwMCBucyBpbnN0ZWFkIG9mIDEgbXMgKHRoZSBjbG9jaworICBhY2N1cmFjeSBpcyBiZXR3ZWVuIDAuNSBtcyBhbmQgMTUgbXMpLgorCistIElzc3VlICMxMzg0NjogQWRkIHRpbWUubW9ub3RvbmljKCksIG1vbm90b25pYyBjbG9jay4KKworLSBJc3N1ZSAjODE4NDogbXVsdGlwcm9jZXNzaW5nOiBPbiBXaW5kb3dzLCBkb24ndCBzZXQgU09fUkVVU0VBRERSIG9uCisgIENvbm5lY3Rpb24gc29ja2V0cywgYW5kIHNldCBGSUxFX0ZMQUdfRklSU1RfUElQRV9JTlNUQU5DRSBvbiBuYW1lZCBwaXBlcywgdG8KKyAgbWFrZSBzdXJlIHR3byBsaXN0ZW5lcnMgY2FuJ3QgYmluZCB0byB0aGUgc2FtZSBzb2NrZXQvcGlwZSAob3IgYW55IGV4aXN0aW5nCisgIHNvY2tldC9waXBlKS4KIAogLSBJc3N1ZSAjMTA4MTE6IEZpeCByZWN1cnNpdmUgdXNhZ2Ugb2YgY3Vyc29ycy4gSW5zdGVhZCBvZiBjcmFzaGluZywKICAgcmFpc2UgYSBQcm9ncmFtbWluZ0Vycm9yIG5vdy4KQEAgLTE0MjIsOCArMzI2NywxNSBAQAogLSBJc3N1ZSAjOTY0NDM3OiBNYWtlIElETEUgaGVscCB3aW5kb3cgbm9uLW1vZGFsLgogICBQYXRjaCBieSBHdWlsaGVybWUgUG9sbyBhbmQgUm9nZXIgU2Vyd3kuCiAKKy0gSXNzdWUgIzEzNzM0OiBBZGQgb3MuZndhbGsoKSwgYSBkaXJlY3Rvcnkgd2Fsa2luZyBmdW5jdGlvbiB5aWVsZGluZyBmaWxlCisgIGRlc2NyaXB0b3JzLgorCiAtIElzc3VlICMyOTQ1OiBNYWtlIHRoZSBkaXN0dXRpbHMgdXBsb2FkIGNvbW1hbmQgYXdhcmUgb2YgYmRpc3RfcnBtIHByb2R1Y3RzLgogCistIElzc3VlICMxMzcxMjogcHlzZXR1cCBjcmVhdGUgc2hvdWxkIG5vdCBjb252ZXJ0IHBhY2thZ2VfZGF0YSB0byBleHRyYV9maWxlcy4KKworLSBJc3N1ZSAjMTE4MDU6IHBhY2thZ2VfZGF0YSBpbiBzZXR1cC5jZmcgc2hvdWxkIGFsbG93IG1vcmUgdGhhbiBvbmUgdmFsdWUuCisKIC0gSXNzdWUgIzEzOTMzOiBJRExFIGF1dG8tY29tcGxldGUgZGlkIG5vdCB3b3JrIHdpdGggc29tZSBpbXBvcnRlZAogICBtb2R1bGUsIGxpa2UgaGFzaGxpYi4gIChQYXRjaCBieSBSb2dlciBTZXJ3eSkKIApAQCAtMTQzNCw2ICszMjg2LDkgQEAKIC0gSXNzdWUgIzEzNTA2OiBBZGQgJycgdG8gcGF0aCBmb3IgSURMRSBTaGVsbCB3aGVuIHN0YXJ0ZWQgYW5kIHJlc3RhcnRlZCB3aXRoIFJlc3RhcnQgU2hlbGwuCiAgIE9yaWdpbmFsIHBhdGNoZXMgYnkgTWFyY28gU2NhdGFnbGluaSBhbmQgUm9nZXIgU2Vyd3kuCiAKKy0gSXNzdWUgIzg4Mjg6IEFkZCBuZXcgZnVuY3Rpb24gb3MucmVwbGFjZSgpLCBmb3IgY3Jvc3MtcGxhdGZvcm0gcmVuYW1pbmcKKyAgd2l0aCBvdmVyd3JpdGluZy4KKwogLSBJc3N1ZSAjMTM4NDg6IG9wZW4oKSBhbmQgdGhlIEZpbGVJTyBjb25zdHJ1Y3RvciBub3cgY2hlY2sgZm9yIE5VTAogICBjaGFyYWN0ZXJzIGluIHRoZSBmaWxlIG5hbWUuICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCiAKQEAgLTE0NDYsNiArMzMwMSwxNyBAQAogLSBJc3N1ZSAjMTM4ODU6IENWRS0yMDExLTMzODk6IHRoZSBfc3NsIG1vZHVsZSB3b3VsZCBhbHdheXMgZGlzYWJsZSB0aGUgQ0JDCiAgIElWIGF0dGFjayBjb3VudGVybWVhc3VyZS4KIAorLSBJc3N1ZSAjMTM4NDc6IHRpbWUubG9jYWx0aW1lKCkgYW5kIHRpbWUuZ210aW1lKCkgbm93IHJhaXNlIGFuIE9TRXJyb3IgaW5zdGVhZAorICBvZiBWYWx1ZUVycm9yIG9uIGZhaWx1cmUuIHRpbWUuY3RpbWUoKSBhbmQgdGltZS5hc2N0aW1lKCkgbm93IHJhaXNlcyBhbgorICBPU0Vycm9yIGlmIGxvY2FsdGltZSgpIGZhaWxlZC4gdGltZS5jbG9jaygpIG5vdyByYWlzZXMgYSBSdW50aW1lRXJyb3IgaWYgdGhlCisgIHByb2Nlc3NvciB0aW1lIHVzZWQgaXMgbm90IGF2YWlsYWJsZSBvciBpdHMgdmFsdWUgY2Fubm90IGJlIHJlcHJlc2VudGVkCisKKy0gSXNzdWUgIzEzODYyOiBGaXggc3B1cmlvdXMgZmFpbHVyZSBpbiB0ZXN0X3psaWIgZHVlIHRvIHJ1bnRpbWUvY29tcGlsZSB0aW1lCisgIG1pbm9yIHZlcnNpb25zIG5vdCBtYXRjaGluZy4KKworLSBJc3N1ZSAjMTI4MDQ6IEZpeCB0ZXN0X3NvY2tldCBhbmQgdGVzdF91cmxsaWIybmV0IGZhaWx1cmVzIHdoZW4gcnVubmluZyB0ZXN0cworICBvbiBhIHN5c3RlbSB3aXRob3V0IGludGVybmV0IGFjY2Vzcy4KKwogLSBJc3N1ZSAjMTM3NzI6IEluIG9zLnN5bWxpbmsoKSB1bmRlciBXaW5kb3dzLCBkbyBub3QgdHJ5IHRvIGd1ZXNzIHRoZSBsaW5rCiAgIHRhcmdldCdzIHR5cGUgKGZpbGUgb3IgZGlyZWN0b3J5KS4gIFRoZSBkZXRlY3Rpb24gd2FzIGJ1Z2d5IGFuZCBtYWRlIHRoZQogICBjYWxsIG5vbi1hdG9taWMgKHRoZXJlZm9yZSBwcm9uZSB0byByYWNlIGNvbmRpdGlvbnMpLgpAQCAtMTQ2MSw2ICszMzI3LDExIEBACiAtIElzc3VlICMxMzgwMzogVW5kZXIgU29sYXJpcywgZGlzdHV0aWxzIGRvZXNuJ3QgaW5jbHVkZSBiaXRuZXNzCiAgIGluIHRoZSBkaXJlY3RvcnkgbmFtZS4KIAorLSBJc3N1ZSAjMTAyNzg6IEFkZCB0aW1lLndhbGxjbG9jaygpIGZ1bmN0aW9uLCBtb25vdG9uaWMgY2xvY2suCisKKy0gSXNzdWUgIzEzODA5OiBGaXggcmVncmVzc2lvbiB3aGVyZSBiejIgbW9kdWxlIHdvdWxkbid0IHdvcmsgd2hlbiB0aHJlYWRzIGFyZQorICBkaXNhYmxlZC4gT3JpZ2luYWwgcGF0Y2ggYnkgQW1hdXJ5IEZvcmdlb3QgZCdBcmMuCisKIC0gSXNzdWUgIzEzNTg5OiBGaXggc29tZSBzZXJpYWxpemF0aW9uIHByaW1pdGl2ZXMgaW4gdGhlIGFpZmMgbW9kdWxlLgogICBQYXRjaCBieSBPbGVnIFBsYWtob3RueXVrLgogCkBAIC0xNDc3LDYgKzMzNDgsMTEgQEAKIC0gSXNzdWUgIzEzNTAyOiB0aHJlYWRpbmc6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIEV2ZW50LndhaXQoKSB0aGF0IG1hZGUgaXQKICAgcmV0dXJuIEZhbHNlIHdoZW4gdGhlIGV2ZW50IHdhcyBzZXQgYW5kIGNsZWFyZWQgcmlnaHQgYWZ0ZXIuCiAKKy0gSXNzdWUgIzk5OTM6IFdoZW4gdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYXJlIG9uIGRpZmZlcmVudCBmaWxlc3lzdGVtcywKKyAgYW5kIHRoZSBzb3VyY2UgaXMgYSBzeW1saW5rLCBzaHV0aWwubW92ZSgpIG5vdyByZWNyZWF0ZXMgYSBzeW1saW5rIG9uIHRoZQorICBkZXN0aW5hdGlvbiBpbnN0ZWFkIG9mIGNvcHlpbmcgdGhlIGZpbGUgY29udGVudHMuICBQYXRjaCBieSBKb25hdGhhbiBOaWVob2YKKyAgYW5kIEh5bmVrIFNjaGxhd2Fjay4KKwogLSBJc3N1ZSAjMTI5MjY6IEZpeCBhIGJ1ZyBpbiB0YXJmaWxlJ3MgbGluayBleHRyYWN0aW9uLgogCiAtIElzc3VlICMxMzY5NjogRml4IHRoZSAzMDIgUmVsYXRpdmUgVVJMIFJlZGlyZWN0aW9uIHByb2JsZW0uCkBAIC0xNDg0LDE1ICszMzYwLDQyIEBACiAtIElzc3VlICMxMzYzNjogV2VhayBjaXBoZXJzIGFyZSBub3cgZGlzYWJsZWQgYnkgZGVmYXVsdCBpbiB0aGUgc3NsIG1vZHVsZQogICAoZXhjZXB0IHdoZW4gU1NMdjIgaXMgZXhwbGljaXRseSBhc2tlZCBmb3IpLgogCi0tIElzc3VlICMxMjc5ODogVXBkYXRlZCB0aGUgbWltZXR5cGVzIGRvY3VtZW50YXRpb24uCistIElzc3VlICMxMjcxNTogQWRkIGFuIG9wdGlvbmFsIHN5bWxpbmtzIGFyZ3VtZW50IHRvIHNodXRpbCBmdW5jdGlvbnMKKyAgKGNvcHlmaWxlLCBjb3B5bW9kZSwgY29weXN0YXQsIGNvcHksIGNvcHkyKS4gIFdoZW4gdGhhdCBwYXJhbWV0ZXIgaXMKKyAgdHJ1ZSwgc3ltbGlua3MgYXJlbid0IGRlcmVmZXJlbmNlZCBhbmQgdGhlIG9wZXJhdGlvbiBpbnN0ZWFkIGFjdHMgb24gdGhlCisgIHN5bWxpbmsgaXRzZWxmIChvciBjcmVhdGVzIG9uZSwgaWYgcmVsZXZhbnQpLiAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgorCistIEFkZCBhIGZsYWdzIHBhcmFtZXRlciB0byBzZWxlY3QuZXBvbGwuCisKKy0gSXNzdWUgIzEzNjI2OiBBZGQgc3VwcG9ydCBmb3IgU1NMIERpZmZpZS1IZWxsbWFuIGtleSBleGNoYW5nZSwgdGhyb3VnaCB0aGUKKyAgU1NMQ29udGV4dC5sb2FkX2RoX3BhcmFtcygpIG1ldGhvZCBhbmQgdGhlIHNzbC5PUF9TSU5HTEVfREhfVVNFIG9wdGlvbi4KIAogLSBJc3N1ZSAjMTEwMDY6IERvbid0IGlzc3VlIGxvdyBsZXZlbCB3YXJuaW5nIGluIHN1YnByb2Nlc3Mgd2hlbiBwaXBlMigpIGZhaWxzLgogCistIElzc3VlICMxMzYyMDogU3VwcG9ydCBmb3IgQ2hyb21lIGJyb3dzZXIgaW4gd2ViYnJvd3Nlci4gIFBhdGNoIGNvbnRyaWJ1dGVkCisgIGJ5IEFybmF1ZCBDYWxtZXR0ZXMuCisKIC0gSXNzdWUgIzExODI5OiBGaXggY29kZSBleGVjdXRpb24gaG9sZXMgaW4gaW5zcGVjdC5nZXRhdHRyX3N0YXRpYyBmb3IKICAgbWV0YWNsYXNzZXMgd2l0aCBtZXRhY2xhc3Nlcy4gUGF0Y2ggYnkgQW5kcmVhcyBTdMO8aHJrLgogCistIElzc3VlICMxMjcwODogQWRkIHN0YXJtYXAoKSBhbmQgc3Rhcm1hcF9hc3luYygpIG1ldGhvZHMgKHNpbWlsYXIgdG8KKyAgaXRlcnRvb2xzLnN0YXJtYXAoKSkgdG8gbXVsdGlwcm9jZXNzaW5nLlBvb2wuICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCisKIC0gSXNzdWUgIzE3ODU6IEZpeCBpbnNwZWN0IGFuZCBweWRvYyB3aXRoIG1pc2JlaGF2aW5nIGRlc2NyaXB0b3JzLgogCistIElzc3VlICMxMzYzNzogImEyYiIgZnVuY3Rpb25zIGluIHRoZSBiaW5hc2NpaSBtb2R1bGUgbm93IGFjY2VwdCBBU0NJSS1vbmx5CisgIHVuaWNvZGUgc3RyaW5ncy4KKworLSBJc3N1ZSAjMTM2MzQ6IEFkZCBzdXBwb3J0IGZvciBxdWVyeWluZyBhbmQgZGlzYWJsaW5nIFNTTCBjb21wcmVzc2lvbi4KKworLSBJc3N1ZSAjMTM2Mjc6IEFkZCBzdXBwb3J0IGZvciBTU0wgRWxsaXB0aWMgQ3VydmUtYmFzZWQgRGlmZmllLUhlbGxtYW4KKyAga2V5IGV4Y2hhbmdlLCB0aHJvdWdoIHRoZSBTU0xDb250ZXh0LnNldF9lY2RoX2N1cnZlKCkgbWV0aG9kIGFuZCB0aGUKKyAgc3NsLk9QX1NJTkdMRV9FQ0RIX1VTRSBvcHRpb24uCisKKy0gSXNzdWUgIzEzNjM1OiBBZGQgc3NsLk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSwgc28gdGhhdCBTU0wgc2VydmVycworICBjaG9vc2UgdGhlIGNpcGhlciBiYXNlZCBvbiB0aGVpciBvd24gcHJlZmVyZW5jZXMsIHJhdGhlciB0aGFuIG9uIHRoZQorICBjbGllbnQncy4KKwogLSBJc3N1ZSAjMTE4MTM6IEZpeCBpbnNwZWN0LmdldGF0dHJfc3RhdGljIGZvciBtb2R1bGVzLiBQYXRjaCBieSBBbmRyZWFzCiAgIFN0w7xocmsuCiAKQEAgLTE1MDUsMjcgKzM0MDgsNTggQEAKIC0gSXNzdWUgIzgwMzU6IHVybGxpYjogRml4IGEgYnVnIHdoZXJlIHRoZSBjbGllbnQgY291bGQgcmVtYWluIHN0dWNrIGFmdGVyIGEKICAgcmVkaXJlY3Rpb24gb3IgYW4gZXJyb3IuCiAKKy0gSXNzdWUgIzEzNTYwOiBvcy5zdHJlcnJvcigpIG5vdyB1c2VzIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZyBpbnN0ZWFkIG9mCisgIFVURi04LgorCistIElzc3VlICM4MzczOiBUaGUgZmlsZXN5c3RlbSBwYXRoIG9mIEFGX1VOSVggc29ja2V0cyBub3cgdXNlcyB0aGUgZmlsZXN5c3RlbQorICBlbmNvZGluZyBhbmQgdGhlIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyLCByYXRoZXIgdGhhbiBVVEYtOC4gIFBhdGNoCisgIGJ5IERhdmlkIFdhdHNvbi4KKwogLSBJc3N1ZSAjMTAzNTA6IFJlYWQgYW5kIHNhdmUgZXJybm8gYmVmb3JlIGNhbGxpbmcgYSBmdW5jdGlvbiB3aGljaCBtaWdodAogICBvdmVyd3JpdGUgaXQuICBPcmlnaW5hbCBwYXRjaCBieSBIYWxsdmFyZCBCIEZ1cnVzZXRoLgogCistIElzc3VlICMxMTYxMDogSW50cm9kdWNlIGEgbW9yZSBnZW5lcmFsIHdheSB0byBkZWNsYXJlIGFic3RyYWN0IHByb3BlcnRpZXMuCisKIC0gSXNzdWUgIzEzNTkxOiBBIGJ1ZyBpbiBpbXBvcnRsaWIgaGFzIGJlZW4gZml4ZWQgdGhhdCBjYXVzZWQgaW1wb3J0X21vZHVsZQogICB0byBsb2FkIGEgbW9kdWxlIHR3aWNlLgogCi0tIElzc3VlICM0NjI1OiBJZiBJRExFIGNhbm5vdCB3cml0ZSB0byBpdHMgcmVjZW50IGZpbGUgb3IgYnJlYWtwb2ludAotICBmaWxlcywgZGlzcGxheSBhIG1lc3NhZ2UgcG9wdXAgYW5kIGNvbnRpbnVlIHJhdGhlciB0aGFuIGNyYXNoLgotICAob3JpZ2luYWwgcGF0Y2ggYnkgUm9nZXIgU2Vyd3kpCistIElzc3VlICM0NjI1OiBJZiBJRExFIGNhbm5vdCB3cml0ZSB0byBpdHMgcmVjZW50IGZpbGUgb3IgYnJlYWtwb2ludCBmaWxlcywKKyAgZGlzcGxheSBhIG1lc3NhZ2UgcG9wdXAgYW5kIGNvbnRpbnVlIHJhdGhlciB0aGFuIGNyYXNoLiAgT3JpZ2luYWwgcGF0Y2ggYnkKKyAgUm9nZXIgU2Vyd3kuCiAKLS0gSXNzdWUgIzU5MDU6IHRpbWUuc3RyZnRpbWUoKSBpcyBub3cgdXNpbmcgdGhlIGxvY2FsZSBlbmNvZGluZywgaW5zdGVhZCBvZgotICBVVEYtOCwgaWYgdGhlIHdjc2Z0aW1lKCkgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZS4KKy0gSXNzdWUgIzEzNDQ5IHNjaGVkLnNjaGVkdWxlci5ydW4oKSBtZXRob2QgaGFzIGEgbmV3ICJibG9ja2luZyIgcGFyYW1ldGVyIHdoaWNoCisgIHdoZW4gc2V0IHRvIEZhbHNlIG1ha2VzIHJ1bigpIGV4ZWN1dGUgdGhlIHNjaGVkdWxlZCBldmVudHMgZHVlIHRvIGV4cGlyZQorICBzb29uZXN0IChpZiBhbnkpIGFuZCB0aGVuIHJldHVybi4gIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbMOgLgorCistIElzc3VlICM4Njg0IHNjaGVkLnNjaGVkdWxlciBjbGFzcyBjYW4gYmUgc2FmZWx5IHVzZWQgaW4gbXVsdGktdGhyZWFkZWQKKyAgZW52aXJvbm1lbnRzLiAgUGF0Y2ggYnkgSm9zaWFoIENhcmxzb24gYW5kIEdpYW1wYW9sbyBSb2RvbMOgLgorCistIEFsaWFzIHJlc291cmNlLmVycm9yIHRvIE9TRXJyb3IgYWxhIFBFUCAzMTUxLgorCistIElzc3VlICM1Njg5OiBBZGQgc3VwcG9ydCBmb3IgbHptYSBjb21wcmVzc2lvbiB0byB0aGUgdGFyZmlsZSBtb2R1bGUuCisKKy0gSXNzdWUgIzEzMjQ4OiBUdXJuIDMuMidzIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgaW50byAzLjMncworICBEZXByZWNhdGlvbldhcm5pbmcuICBJdCBjb3ZlcnMgJ2NnaS5lc2NhcGUnLCAnaW1wb3J0bGliLmFiYy5QeUxvYWRlcicsCisgICdpbXBvcnRsaWIuYWJjLlB5UHljTG9hZGVyJywgJ25udHBsaWIuTk5UUC54Z3RpdGxlJywgJ25udHBsaWIuTk5UUC54cGF0aCcsCisgIGFuZCBwcml2YXRlIGF0dHJpYnV0ZXMgb2YgJ3NtdHBkLlNNVFBDaGFubmVsJy4KKworLSBJc3N1ZSAjNTkwNSwgIzEzNTYwOiB0aW1lLnN0cmZ0aW1lKCkgaXMgbm93IHVzaW5nIHRoZSBjdXJyZW50IGxvY2FsZQorICBlbmNvZGluZywgaW5zdGVhZCBvZiBVVEYtOCwgaWYgdGhlIHdjc2Z0aW1lKCkgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZS4KIAogLSBJc3N1ZSAjODY0MTogVXBkYXRlIElETEUgMyBzeW50YXggY29sb3JpbmcgdG8gcmVjb2duaXplIGIiLi4iIGFuZCBub3QgdSIuLiIuCiAgIFBhdGNoIGJ5IFRhbCBFaW5hdC4KIAorLSBJc3N1ZSAjMTM0NjQ6IEFkZCBhIHJlYWRpbnRvKCkgbWV0aG9kIHRvIGh0dHAuY2xpZW50LkhUVFBSZXNwb25zZS4gIFBhdGNoCisgIGJ5IEpvbiBLdWhuLgorCiAtIHRhcmZpbGUucHk6IENvcnJlY3RseSBkZXRlY3QgYnppcDIgY29tcHJlc3NlZCBzdHJlYW1zIHdpdGggYmxvY2tzaXplcwogICBvdGhlciB0aGFuIDkwMGsuCiAKIC0gSXNzdWUgIzEzNDM5OiBGaXggbWFueSBlcnJvcnMgaW4gdHVydGxlIGRvY3N0cmluZ3MuCiAKKy0gSXNzdWUgIzY3MTU6IEFkZCBhIG1vZHVsZSAnbHptYScgZm9yIGNvbXByZXNzaW9uIHVzaW5nIHRoZSBMWk1BIGFsZ29yaXRobS4KKyAgVGhhbmtzIHRvIFBlciDDmHl2aW5kIEthcmxzZW4gZm9yIHRoZSBpbml0aWFsIGltcGxlbWVudGF0aW9uLgorCiAtIElzc3VlICMxMzQ4NzogTWFrZSBpbnNwZWN0LmdldG1vZHVsZSByb2J1c3QgYWdhaW5zdCBjaGFuZ2VzIGRvbmUgdG8KICAgc3lzLm1vZHVsZXMgd2hpbGUgaXQgaXMgaXRlcmF0aW5nIG92ZXIgaXQuCiAKQEAgLTE1MzUsMTUgKzM0NjksMzEgQEAKIC0gSXNzdWUgIzEzNDQ0OiBXaGVuIHN0ZG91dCBoYXMgYmVlbiBjbG9zZWQgZXhwbGljaXRseSwgd2Ugc2hvdWxkIG5vdCBhdHRlbXB0CiAgIHRvIGZsdXNoIGl0IGF0IHNodXRkb3duIGFuZCBwcmludCBhbiBlcnJvci4KIAorLSBJc3N1ZSAjMTI1Njc6IFRoZSBjdXJzZXMgbW9kdWxlIHVzZXMgVW5pY29kZSBmdW5jdGlvbnMgZm9yIFVuaWNvZGUgYXJndW1lbnRzCisgIHdoZW4gaXQgaXMgbGlua2VkIHRvIHRoZSBuY3Vyc2VzIGxpYnJhcnkuIEl0IGVuY29kZXMgYWxzbyBVbmljb2RlIHN0cmluZ3MgdG8KKyAgdGhlIGxvY2FsZSBlbmNvZGluZyBpbnN0ZWFkIG9mIFVURi04LgorCiAtIElzc3VlICMxMjg1NjogRW5zdXJlIGNoaWxkIHByb2Nlc3NlcyBkbyBub3QgaW5oZXJpdCB0aGUgcGFyZW50J3MgcmFuZG9tCiAgIHNlZWQgZm9yIGZpbGVuYW1lIGdlbmVyYXRpb24gaW4gdGhlIHRlbXBmaWxlIG1vZHVsZS4gIFBhdGNoIGJ5IEJyaWFuCiAgIEhhcnJpbmcuCiAKKy0gSXNzdWUgIzk5NTc6IFNwb29sZWRUZW1wb3JhcnlGaWxlLnRydW5jYXRlKCkgbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwgc2l6ZQorICBwYXJhbWV0ZXIsIGFzIG90aGVyIGZpbGUtbGlrZSBvYmplY3RzLiAgUGF0Y2ggYnkgUnlhbiBLZWxseS4KKwogLSBJc3N1ZSAjMTM0NTg6IEZpeCBhIG1lbW9yeSBsZWFrIGluIHRoZSBzc2wgbW9kdWxlIHdoZW4gZGVjb2RpbmcgYQogICBjZXJ0aWZpY2F0ZSB3aXRoIGEgc3ViamVjdEFsdE5hbWUuICBQYXRjaCBieSBSb2JlcnQgWGlhby4KIAogLSBJc3N1ZSAjMTM0MTU6IG9zLnVuc2V0ZW52KCkgZG9lc24ndCBpZ25vcmUgZXJyb3JzIGFueW1vcmUuCiAKKy0gSXNzdWUgIzEzMjQ1OiBzY2hlZC5zY2hlZHVsZXIgY2xhc3MgY29uc3RydWN0b3IncyB0aW1lZnVuYyBhbmQKKyAgZGVsYXlmdW5jdCBwYXJhbWV0ZXJzIGFyZSBub3cgb3B0aW9uYWwuCisgIHNjaGVkdWxlci5lbnRlciBhbmQgc2NoZWR1bGVyLmVudGVyYWJzIG1ldGhvZHMgZ2FpbmVkIGEgbmV3IGt3YXJncyBwYXJhbWV0ZXIuCisgIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IENocmlzIENsYXJrLgorCistIElzc3VlICMxMjMyODogVW5kZXIgV2luZG93cywgcmVmYWN0b3IgaGFuZGxpbmcgb2YgQ3RybC1DIGV2ZW50cyBhbmQKKyAgbWFrZSBfbXVsdGlwcm9jZXNzaW5nLndpbjMyLldhaXRGb3JNdWx0aXBsZU9iamVjdHMgaW50ZXJydXB0aWJsZSB3aGVuCisgIHRoZSB3YWl0X2ZsYWcgcGFyYW1ldGVyIGlzIGZhbHNlLiAgUGF0Y2ggYnkgc2J0LgorCiAtIElzc3VlICMxMzMyMjogRml4IEJ1ZmZlcmVkV3JpdGVyLndyaXRlKCkgdG8gZW5zdXJlIHRoYXQgQmxvY2tpbmdJT0Vycm9yIGlzCiAgIHJhaXNlZCB3aGVuIHRoZSB3cmFwcGVkIHJhdyBmaWxlIGlzIG5vbi1ibG9ja2luZyBhbmQgdGhlIHdyaXRlIHdvdWxkIGJsb2NrLgogICBQcmV2aW91cyBjb2RlIGFzc3VtZWQgdGhhdCB0aGUgcmF3IHdyaXRlKCkgd291bGQgcmFpc2UgQmxvY2tpbmdJT0Vycm9yLCBidXQKQEAgLTE1NTYsMTMgKzM1MDYsMjUgQEAKICAgbm9kZSB3aGVuIGl0IGlzIHRoZSBvbmx5IGNoaWxkIG9mIGFuIGVsZW1lbnQuICBJbml0aWFsIHBhdGNoIGJ5IERhbgogICBLZW5pZ3NiZXJnLgogCistIElzc3VlICMxMzM3NDogVGhlIFdpbmRvd3MgYnl0ZXMgQVBJIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gdGhlIG9zIG1vZHVsZS4gVXNlCisgIFVuaWNvZGUgZmlsZW5hbWVzIGluc3RlYWQgb2YgYnl0ZXMgZmlsZW5hbWVzIHRvIG5vdCBkZXBlbmQgb24gdGhlIEFOU0kgY29kZQorICBwYWdlIGFueW1vcmUgYW5kIHRvIHN1cHBvcnQgYW55IGZpbGVuYW1lLgorCistIElzc3VlICMxMzI5NzogVXNlIGJ5dGVzIHR5cGUgdG8gc2VuZCBhbmQgcmVjZWl2ZSBiaW5hcnkgZGF0YSB0aHJvdWdoIFhNTFJQQy4KKworLSBJc3N1ZSAjNjM5NzogU3VwcG9ydCAiL2Rldi9wb2xsIiBwb2xsaW5nIG9iamVjdHMgaW4gc2VsZWN0IG1vZHVsZSwKKyAgdW5kZXIgU29sYXJpcyAmIGRlcml2YXRpdmVzLgorCiAtIElzc3VlcyAjMTc0NTc2MSwgIzc1NTY3MCwgIzEzMzU3LCAjMTI2MjksICMxMjAwMzEzOiBIVE1MUGFyc2VyIG5vdyBjb3JyZWN0bHkKICAgaGFuZGxlcyBub24tdmFsaWQgYXR0cmlidXRlcywgaW5jbHVkaW5nIGFkamFjZW50IGFuZCB1bnF1b3RlZCBhdHRyaWJ1dGVzLgogCi0tIElzc3VlICMxMzE5MzogRml4IGRpc3R1dGlscy5maWxlbGlzdC5GaWxlTGlzdCB1bmRlciBXaW5kb3dzLgorLSBJc3N1ZSAjMTMxOTM6IEZpeCBkaXN0dXRpbHMuZmlsZWxpc3QuRmlsZUxpc3QgYW5kIHBhY2thZ2luZy5tYW5pZmVzdC5NYW5pZmVzdAorICB1bmRlciBXaW5kb3dzLgogCiAtIElzc3VlICMxMzM4NDogUmVtb3ZlIHVubmVjZXNzYXJ5IF9fZnV0dXJlX18gaW1wb3J0IGluIExpYi9yYW5kb20ucHkKIAorLSBJc3N1ZSAjMTMxNDk6IFNwZWVkIHVwIGFwcGVuZC1vbmx5IFN0cmluZ0lPIG9iamVjdHMuCisKIC0gSXNzdWUgIzEzMzczOiBtdWx0aXByb2Nlc3NpbmcuUXVldWUuZ2V0KCkgY291bGQgc29tZXRpbWVzIGJsb2NrIGluZGVmaW5pdGVseQogICB3aGVuIGNhbGxlZCB3aXRoIGEgdGltZW91dC4gIFBhdGNoIGJ5IEFybmF1ZCBZc21hbC4KIApAQCAtMTU3OCwxMSArMzU0MCwyMCBAQAogLSBJc3N1ZSAjMTMzMzk6IEZpeCBjb21waWxlIGVycm9yIGluIHBvc2l4bW9kdWxlLmMgZHVlIHRvIG1pc3Npbmcgc2VtaWNvbG9uLgogICBUaGFua3MgdG8gUm9iZXJ0IFhpYW8uCiAKKy0gQnl0ZSBjb21waWxhdGlvbiBpbiBwYWNrYWdpbmcgaXMgbm93IGlzb2xhdGVkIGZyb20gdGhlIGNhbGxpbmcgUHl0aG9uIC1CIG9yCisgIC1PIG9wdGlvbnMsIGluc3RlYWQgb2YgYmVpbmcgZGlzYWxsb3dlZCB1bmRlciAtQiBvciBidWdneSB1bmRlciAtTy4KKwogLSBJc3N1ZSAjMTA1NzA6IGN1cnNlcy5wdXRwKCkgYW5kIGN1cnNlcy50cGFybSgpIGFyZSBub3cgZXhwZWN0aW5nIGEgYnl0ZQogICBzdHJpbmcsIGluc3RlYWQgb2YgYSBVbmljb2RlIHN0cmluZy4KIAorLSBJc3N1ZSAjMTMyOTU6IGh0dHAuc2VydmVyIG5vdyBwcm9kdWNlcyB2YWxpZCBIVE1MIDQuMDEgc3RyaWN0LgorCiAtIElzc3VlICMyODkyOiBwcmVzZXJ2ZSBpdGVycGFyc2UgZXZlbnRzIGluIGNhc2Ugb2YgU3ludGF4RXJyb3IuCiAKKy0gSXNzdWUgIzEzMjg3OiB1cmxsaWIucmVxdWVzdCBhbmQgdXJsbGliLmVycm9yIG5vdyBjb250YWlucyBhbiBfX2FsbF9fCisgIGF0dHJpYnV0ZSB0byBleHBvc2Ugb25seSByZWxldmFudCBjbGFzc2VzIGFuZCBmdW5jdGlvbnMuICBQYXRjaCBieSBGbG9yZW50CisgIFhpY2x1bmEuCisKIC0gSXNzdWUgIzY3MDY2NDogRml4IEhUTUxQYXJzZXIgdG8gY29ycmVjdGx5IGhhbmRsZSB0aGUgY29udGVudCBvZgogICBgYDxzY3JpcHQ+Li4uPC9zY3JpcHQ+YGAgYW5kIGBgPHN0eWxlPi4uLjwvc3R5bGU+YGAuCiAKQEAgLTE1OTIsNiArMzU2Myw5IEBACiAtIElzc3VlICMxMzI5NjogRml4IElETEUgdG8gY2xlYXIgY29tcGlsZSBfX2Z1dHVyZV9fIGZsYWdzIG9uIHNoZWxsIHJlc3RhcnQuCiAgIChQYXRjaCBieSBSb2dlciBTZXJ3eSkKIAorLSBGaXggdGhlIHhtbHJwYy5jbGllbnQgdXNlciBhZ2VudCB0byByZXR1cm4gc29tZXRoaW5nIHNpbWlsYXIgdG8KKyAgdXJsbGliLnJlcXVlc3QgdXNlciBhZ2VudDogIlB5dGhvbi14bWxycGMvMy4zIi4KKwogLSBJc3N1ZSAjMTMyOTM6IEJldHRlciBlcnJvciBtZXNzYWdlIHdoZW4gdHJ5aW5nIHRvIG1hcnNoYWwgYnl0ZXMgdXNpbmcKICAgeG1scnBjLmNsaWVudC4KIApAQCAtMTYwMiw1MSArMzU3Niw4MSBAQAogLSBJc3N1ZSAjMTMyNzM6IGZpeCBhIGJ1ZyB0aGF0IHByZXZlbnRlZCBIVE1MUGFyc2VyIHRvIHByb3Blcmx5IGRldGVjdCBzb21lCiAgIHRhZ3Mgd2hlbiBzdHJpY3Q9RmFsc2UuCiAKKy0gSXNzdWUgIzExMTgzOiBBZGQgZmluZXItZ3JhaW5lZCBleGNlcHRpb25zIHRvIHRoZSBzc2wgbW9kdWxlLCBzbyB0aGF0CisgIHlvdSBkb24ndCBoYXZlIHRvIGluc3BlY3QgdGhlIGV4Y2VwdGlvbidzIGF0dHJpYnV0ZXMgaW4gdGhlIGNvbW1vbiBjYXNlLgorCistIElzc3VlICMxMzIxNjogQWRkIGNwNjUwMDEgY29kZWMsIHRoZSBXaW5kb3dzIFVURi04IChDUF9VVEY4KS4KKworLSBJc3N1ZSAjMTMyMjY6IEFkZCBSVExEX3h4eCBjb25zdGFudHMgdG8gdGhlIG9zIG1vZHVsZS4gVGhlc2UgY29uc3RhbnRzIGNhbiBiZQorICB1c2VkIHdpdGggc3lzLnNldGRsb3BlbmZsYWdzKCkuCisKKy0gSXNzdWUgIzEwMjc4OiBBZGQgY2xvY2tfZ2V0cmVzKCksIGNsb2NrX2dldHRpbWUoKSBhbmQgQ0xPQ0tfeHh4IGNvbnN0YW50cyB0bworICB0aGUgdGltZSBtb2R1bGUuIHRpbWUuY2xvY2tfZ2V0dGltZSh0aW1lLkNMT0NLX01PTk9UT05JQykgcHJvdmlkZXMgYQorICBtb25vdG9uaWMgY2xvY2sKKwogLSBJc3N1ZSAjMTAzMzI6IG11bHRpcHJvY2Vzc2luZzogZml4IGEgcmFjZSBjb25kaXRpb24gd2hlbiBhIFBvb2wgaXMgY2xvc2VkCiAgIGJlZm9yZSBhbGwgdGFza3MgaGF2ZSBjb21wbGV0ZWQuCiAKIC0gSXNzdWUgIzEzMjU1OiB3cm9uZyBkb2NzdHJpbmdzIGluIGFycmF5IG1vZHVsZS4KIAorLSBJc3N1ZSAjODU0MDogUmVtb3ZlIGRlcHJlY2F0ZWQgQ29udGV4dC5fY2xhbXAgYXR0cmlidXRlIGluIERlY2ltYWwgbW9kdWxlLgorCistIElzc3VlICMxMzIzNTogQWRkZWQgRGVwcmVjYXRpb25XYXJuaW5nIHRvIGxvZ2dpbmcud2FybigpIG1ldGhvZCBhbmQgZnVuY3Rpb24uCisKIC0gSXNzdWUgIzkxNjg6IG5vdyBzbXRwZCBpcyBhYmxlIHRvIGJpbmQgcHJpdmlsZWdlZCBwb3J0LgogCiAtIElzc3VlICMxMjUyOTogZml4IGNnaS5wYXJzZV9oZWFkZXIgaXNzdWUgb24gc3RyaW5ncyB3aXRoIGRvdWJsZS1xdW90ZXMgYW5kCiAgIHNlbWljb2xvbnMgdG9nZXRoZXIuIFBhdGNoIGJ5IEJlbiBEYXJuZWxsIGFuZCBQZXRyaSBMZWh0aW5lbi4KIAotLSBJc3N1ZSAjMTI0NDg6IHNtdHBsaWIgbm93IGZsdXNoZXMgc3Rkb3V0IHdoaWxlIHJ1bm5pbmcgYGBweXRob24gLW0gc210cGxpYmBgCi0gIGluIG9yZGVyIHRvIGRpc3BsYXkgdGhlIHByb21wdCBjb3JyZWN0bHkuCistIElzc3VlICMxMzIyNzogZnVuY3Rvb2xzLmxydV9jYWNoZSgpIG5vdyBoYXMgYSBvcHRpb24gdG8gZGlzdGluZ3Vpc2gKKyAgY2FsbHMgd2l0aCBkaWZmZXJlbnQgYXJndW1lbnQgdHlwZXMuCiAKIC0gSXNzdWUgIzYwOTA6IHppcGZpbGUgcmFpc2VzIGEgVmFsdWVFcnJvciB3aGVuIGEgZG9jdW1lbnQgd2l0aCBhIHRpbWVzdGFtcAogICBlYXJsaWVyIHRoYW4gMTk4MCBpcyBwcm92aWRlZC4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgUGV0cmkgTGVodGluZW4uCiAKKy0gSXNzdWUgIzEzMTUwOiBzeXNjb25maWcgbm8gbG9uZ2VyIHBhcnNlcyB0aGUgTWFrZWZpbGUgYW5kIGNvbmZpZy5oIGZpbGVzCisgIHdoZW4gaW1wb3J0ZWQsIGluc3RlYWQgZG9pbmcgaXQgYXQgYnVpbGQgdGltZS4gIFRoaXMgbWFrZXMgaW1wb3J0aW5nCisgIHN5c2NvbmZpZyBmYXN0ZXIgYW5kIHJlZHVjZXMgUHl0aG9uIHN0YXJ0dXAgdGltZSBieSAyMCUuCisKKy0gSXNzdWUgIzEyNDQ4OiBzbXRwbGliIG5vdyBmbHVzaGVzIHN0ZG91dCB3aGlsZSBydW5uaW5nIGBgcHl0aG9uIC1tIHNtdHBsaWJgYAorICBpbiBvcmRlciB0byBkaXNwbGF5IHRoZSBwcm9tcHQgY29ycmVjdGx5LgorCistIElzc3VlICMxMjQ1NDogVGhlIG1haWxib3ggbW9kdWxlIGlzIG5vdyB1c2luZyBBU0NJSSwgaW5zdGVhZCBvZiB0aGUgbG9jYWxlCisgIGVuY29kaW5nLCB0byByZWFkIGFuZCB3cml0ZSAubWhfc2VxdWVuY2VzIGZpbGVzLgorCiAtIElzc3VlICMxMzE5NDogemxpYi5jb21wcmVzc29iaigpLmNvcHkoKSBhbmQgemxpYi5kZWNvbXByZXNzb2JqKCkuY29weSgpIGFyZQogICBub3cgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCiAKKy0gSXNzdWUgIzE2NzMwMDc6IHVybGxpYi5yZXF1ZXN0IG5vdyBzdXBwb3J0cyBIRUFEIHJlcXVlc3QgdmlhIG5ldyBtZXRob2QgYXJndW1lbnQuCisgIFBhdGNoIGNvbnRyaWJ1dGlvbnMgYnkgRGF2aWQgU3RhbmVrLCBQYXRyaWNrIFdlc3RlcmhvZmYgYW5kIEV6aW8gTWVsb3R0aS4KKworLSBJc3N1ZSAjMTIzODY6IHBhY2thZ2luZyBkb2VzIG5vdCBmYWlsIGFueW1vcmUgd2hlbiB3cml0aW5nIHRoZSBSRVNPVVJDRVMKKyAgZmlsZS4KKwogLSBJc3N1ZSAjMTMxNTg6IEZpeCBkZWNvZGluZyBhbmQgZW5jb2Rpbmcgb2YgR05VIHRhciBzcGVjaWZpYyBiYXNlLTI1NiBudW1iZXIKICAgZmllbGRzIGluIHRhcmZpbGUuCiAKLS0gSXNzdWUgIzEzMTc3OiAgRnVuY3Rvb2xzIGxydV9jYWNoZSgpIG5vIGxvbmdlciBjYWxscyB0aGUgb3JpZ2luYWwgZnVuY3Rpb24KLSAgaW5zaWRlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLiAgVGhpcyBtYWtlcyB0cmFjZWJhY2tzIGVhc2llciB0byByZWFkIGJlY2F1c2UKLSAgY2hhaW5lZCBleGNlcHRpb25zIGFyZSBhdm9pZGVkLgotCiAtIElzc3VlICMxMzAyNTogbWltZXR5cGVzIGlzIG5vdyByZWFkaW5nIE1JTUUgdHlwZXMgdXNpbmcgdGhlIFVURi04IGVuY29kaW5nLAogICBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcuCiAKIC0gSXNzdWUgIzEwNjUzOiBPbiBXaW5kb3dzLCB1c2Ugc3RyZnRpbWUoKSBpbnN0ZWFkIG9mIHdjc2Z0aW1lKCkgYmVjYXVzZQogICB3Y3NmdGltZSgpIGRvZXNuJ3QgZm9ybWF0IHRpbWUgem9uZSBjb3JyZWN0bHkuCiAKKy0gSXNzdWUgIzEzMTUwOiBUaGUgdG9rZW5pemUgbW9kdWxlIGRvZXNuJ3QgY29tcGlsZSBsYXJnZSByZWd1bGFyIGV4cHJlc3Npb25zCisgIGF0IHN0YXJ0dXAgYW55bW9yZS4KKwogLSBJc3N1ZSAjMTExNzE6IEZpeCBkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9tYWtlZmlsZV9maWxlbmFtZSB3aGVuIFB5dGhvbiB3YXMKICAgY29uZmlndXJlZCB3aXRoIGRpZmZlcmVudCBwcmVmaXggYW5kIGV4ZWMtcHJlZml4LgogCi0tIElzc3VlICMxMTI1NDogVGVhY2ggZGlzdHV0aWxzIHRvIGNvbXBpbGUgLnB5YyBhbmQgLnB5byBmaWxlcyBpbgorLSBJc3N1ZSAjMTEyNTQ6IFRlYWNoIGRpc3R1dGlscyBhbmQgcGFja2FnaW5nIHRvIGNvbXBpbGUgLnB5YyBhbmQgLnB5byBmaWxlcyBpbgogICBQRVAgMzE0Ny1jb21wbGlhbnQgX19weWNhY2hlX18gZGlyZWN0b3JpZXMuCiAKLS0gSXNzdWUgIzExMjUwOiBCYWNrIHBvcnQgZml4IGZyb20gMy4zIGJyYW5jaCwgc28gdGhhdCAydG8zIGNhbiBoYW5kbGUgZmlsZXMKLSAgd2l0aCBsaW5lIGZlZWRzLiAgVGhpcyB3YXMgcG9ydGVkIGZyb20gdGhlIHNhbmRib3ggdG8gdGhlIDMuMyBicmFuY2gsIGJ1dAotICBkaWRuJ3QgbWFrZSBpdCBpbnRvIDMuMi4KLQogLSBJc3N1ZSAjNzM2NzogRml4IHBrZ3V0aWwud2Fsa19wYXRocyB0byBza2lwIGRpcmVjdG9yaWVzIHdob3NlCiAgIGNvbnRlbnRzIGNhbm5vdCBiZSByZWFkLgogCistIElzc3VlICMzMTYzOiBUaGUgc3RydWN0IG1vZHVsZSBnZXRzIG5ldyBmb3JtYXQgY2hhcmFjdGVycyAnbicgYW5kICdOJworICBzdXBwb3J0aW5nIEMgaW50ZWdlciB0eXBlcyBgYHNzaXplX3RgYCBhbmQgYGBzaXplX3RgYCwgcmVzcGVjdGl2ZWx5LgorCiAtIElzc3VlICMxMzA5OTogRml4IHNxbGl0ZTMuQ3Vyc29yLmxhc3Ryb3dpZCB1bmRlciBhIFR1cmtpc2ggbG9jYWxlLgogICBSZXBvcnRlZCBhbmQgZGlhZ25vc2VkIGJ5IFRob21hcyBLbHV5dmVyLgogCkBAIC0xNjU4LDggKzM2NjIsNiBAQAogICBtZXRhY2xhc3MgaXMgcmVnaXN0ZXJlZCB3aXRoIGNvcHlyZWcuICBQYXRjaCBieSBOaWNvbGFzIE0uIFRoacOpcnkgYW5kIENyYWlnCiAgIENpdHJvLgogCi0tIElzc3VlICM0MTQ3OiBtaW5pZG9tJ3MgdG9wcmV0dHl4bWwgbm8gbG9uZ2VyIGFkZHMgd2hpdGVzcGFjZSB0byB0ZXh0IG5vZGVzLgotCiAtIElzc3VlICMxMzAzNDogV2hlbiBkZWNvZGluZyBzb21lIFNTTCBjZXJ0aWZpY2F0ZXMsIHRoZSBzdWJqZWN0QWx0TmFtZQogICBleHRlbnNpb24gY291bGQgYmUgdW5yZXBvcnRlZC4KIApAQCAtMTY2NywxMyArMzY2OSwyOSBAQAogICB3aXRoIGludmFsaWQgaGV4IGVzY2FwZSBzZXF1ZW5jZXMsIGxpa2UgYidceDAnLgogICAoT3JpZ2luYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLikKIAotLSBJc3N1ZSAjODkzMzogZGlzdHV0aWxzJyBQS0ctSU5GTyBmaWxlcyB3aWxsIG5vdyBjb3JyZWN0bHkgcmVwb3J0Ci0gIE1ldGFkYXRhLVZlcnNpb246IDEuMSBpbnN0ZWFkIG9mIDEuMCBpZiBhIENsYXNzaWZpZXIgb3IgRG93bmxvYWQtVVJMIGZpZWxkIGlzCi0gIHByZXNlbnQuCistIElzc3VlICMxMjMwNjogRXhwb3NlIHRoZSBydW50aW1lIHZlcnNpb24gb2YgdGhlIHpsaWIgQyBsaWJyYXJ5IGFzIGEgY29uc3RhbnQsCisgIFpMSUJfUlVOVElNRV9WRVJTSU9OLCBpbiB0aGUgemxpYiBtb2R1bGUuIFBhdGNoIGJ5IFRvcnN0ZW4gTGFuZHNjaG9mZi4KIAotLSBJc3N1ZSAjOTU2MTogZGlzdHV0aWxzIG5vdyByZWFkcyBhbmQgd3JpdGVzIGVnZy1pbmZvIGZpbGVzIHVzaW5nIFVURi04LAorLSBJc3N1ZSAjMTI5NTk6IEFkZCBjb2xsZWN0aW9ucy5DaGFpbk1hcCB0byBjb2xsZWN0aW9ucy5fX2FsbF9fLgorCistIElzc3VlICM4OTMzOiBkaXN0dXRpbHMnIFBLRy1JTkZPIGZpbGVzIGFuZCBwYWNrYWdpbmcncyBNRVRBREFUQSBmaWxlcyB3aWxsCisgIG5vdyBjb3JyZWN0bHkgcmVwb3J0IE1ldGFkYXRhLVZlcnNpb246IDEuMSBpbnN0ZWFkIG9mIDEuMCBpZiBhIENsYXNzaWZpZXIgb3IKKyAgRG93bmxvYWQtVVJMIGZpZWxkIGlzIHByZXNlbnQuCisKKy0gSXNzdWUgIzEyNTY3OiBBZGQgY3Vyc2VzLnVuZ2V0X3djaCgpIGZ1bmN0aW9uLiBQdXNoIGEgY2hhcmFjdGVyIHNvIHRoZSBuZXh0CisgIGdldF93Y2goKSB3aWxsIHJldHVybiBpdC4KKworLSBJc3N1ZSAjOTU2MTogZGlzdHV0aWxzIGFuZCBwYWNrYWdpbmcgbm93IHdyaXRlcyBlZ2ctaW5mbyBmaWxlcyB1c2luZyBVVEYtOCwKICAgaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nLgogCistIElzc3VlICM4Mjg2OiBUaGUgZGlzdHV0aWxzIGNvbW1hbmQgc2Rpc3Qgd2lsbCBwcmludCBhIHdhcm5pbmcgbWVzc2FnZSBpbnN0ZWFkCisgIG9mIGNyYXNoaW5nIHdoZW4gYW4gaW52YWxpZCBwYXRoIGlzIGdpdmVuIGluIHRoZSBtYW5pZmVzdCB0ZW1wbGF0ZS4KKworLSBJc3N1ZSAjMTI4NDE6IHRhcmZpbGUgdW5uZWNlc3NhcmlseSBjaGVja2VkIHRoZSBleGlzdGVuY2Ugb2YgbnVtZXJpY2FsIHVzZXIKKyAgYW5kIGdyb3VwIGlkcyBvbiBleHRyYWN0aW9uLiBJZiBvbmUgb2YgdGhlbSBkaWQgbm90IGV4aXN0IHRoZSByZXNwZWN0aXZlIGlkCisgIG9mIHRoZSBjdXJyZW50IHVzZXIgKGkuZS4gcm9vdCkgd2FzIHVzZWQgZm9yIHRoZSBmaWxlIGFuZCBvd25lcnNoaXAKKyAgaW5mb3JtYXRpb24gd2FzIGxvc3QuCisKIC0gSXNzdWUgIzEyODg4OiBGaXggYSBidWcgaW4gSFRNTFBhcnNlci51bmVzY2FwZSB0aGF0IHByZXZlbnRlZCBpdCB0byBlc2NhcGUKICAgbW9yZSB0aGFuIDEyOCBlbnRpdGllcy4gIFBhdGNoIGJ5IFBldGVyIE90dGVuLgogCkBAIC0xNjgxLDYgKzM2OTksMTYgQEAKIAogLSBJc3N1ZSAjMTI2MzY6IElETEUgcmVhZHMgdGhlIGNvZGluZyBjb29raWUgd2hlbiBleGVjdXRpbmcgYSBQeXRob24gc2NyaXB0LgogCistIElzc3VlICMxMjQ5NDogT24gZXJyb3IsIGNhbGwoKSwgY2hlY2tfY2FsbCgpLCBjaGVja19vdXRwdXQoKSBhbmQKKyAgZ2V0c3RhdHVzb3V0cHV0KCkgZnVuY3Rpb25zIG9mIHRoZSBzdWJwcm9jZXNzIG1vZHVsZSBub3cga2lsbCB0aGUgcHJvY2VzcywKKyAgcmVhZCBpdHMgc3RhdHVzICh0byBhdm9pZCB6b21iaXMpIGFuZCBjbG9zZSBwaXBlcy4KKworLSBJc3N1ZSAjMTI3MjA6IEV4cG9zZSBsb3ctbGV2ZWwgTGludXggZXh0ZW5kZWQgZmlsZSBhdHRyaWJ1dGUgZnVuY3Rpb25zIGluIG9zLgorCistIElzc3VlICMxMDk0NjogVGhlIGRpc3R1dGlscyBjb21tYW5kcyBiZGlzdF9kdW1iLCBiZGlzdF93aW5pbnN0IGFuZCBiZGlzdF9tc2kKKyAgbm93IHJlc3BlY3QgYSAtLXNraXAtYnVpbGQgb3B0aW9uIGdpdmVuIHRvIGJkaXN0LiAgVGhlIHBhY2thZ2luZyBjb21tYW5kcworICB3ZXJlIGZpeGVkIHRvby4KKwogLSBJc3N1ZSAjMTI4NDc6IEZpeCBhIGNyYXNoIHdpdGggbmVnYXRpdmUgUFVUIGFuZCBMT05HX0JJTlBVVCBhcmd1bWVudHMgaW4KICAgdGhlIEMgcGlja2xlIGltcGxlbWVudGF0aW9uLgogCkBAIC0xNjkwLDIwMSArMzcxOCw0NyBAQAogLSBJc3N1ZSAjMTIyODc6IEZpeCBhIHN0YWNrIGNvcnJ1cHRpb24gaW4gb3NzYXVkaW9kZXYgbW9kdWxlIHdoZW4gdGhlIEZEIGlzCiAgIGdyZWF0ZXIgdGhhbiBGRF9TRVRTSVpFLgogCistIElzc3VlICMxMjgzOTogRml4IGNyYXNoIGluIHpsaWIgbW9kdWxlIGR1ZSB0byB2ZXJzaW9uIG1pc21hdGNoLgorICBGaXggYnkgUmljaGFyZCBNLiBUZXcuCisKKy0gSXNzdWUgIzk5MjM6IFRoZSBtYWlsY2FwIG1vZHVsZSBub3cgY29ycmVjdGx5IHVzZXMgdGhlIHBsYXRmb3JtIHBhdGgKKyAgc2VwYXJhdG9yIGZvciB0aGUgTUFJTENBUCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvbiBub24tUE9TSVggcGxhdGZvcm1zLgorCistIElzc3VlICMxMjgzNTogRm9sbG93IHVwIHRvICM2NTYwIHRoYXQgdW5jb25kaXRpb25hbGx5IHByZXZlbnRzIHVzZSBvZiB0aGUKKyAgdW5lbmNyeXB0ZWQgc2VuZG1zZy9yZWN2bXNnIEFQSXMgb24gU1NMIHdyYXBwZWQgc29ja2V0cy4gUGF0Y2ggYnkgRGF2aWQKKyAgV2F0c29uLgorCistIElzc3VlICMxMjgwMzogU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW4oKSBub3cgYWNjZXB0cyBhIHBhc3N3b3JkIGFyZ3VtZW50CisgIHRvIGJlIHVzZWQgaWYgdGhlIHByaXZhdGUga2V5IGlzIGVuY3J5cHRlZC4gIFBhdGNoIGJ5IEFkYW0gU2ltcGtpbnMuCisKIC0gSXNzdWUgIzExNjU3OiBGaXggc2VuZGluZyBmaWxlIGRlc2NyaXB0b3JzIG92ZXIgMjU1IG92ZXIgYSBtdWx0aXByb2Nlc3NpbmcKICAgUGlwZS4KIAotLSBJc3N1ZSAjMTMwMDc6IHdoaWNoZGIgc2hvdWxkIHJlY29nbml6ZSBnZGJtIDEuOSBtYWdpYyBudW1iZXJzLgorLSBJc3N1ZSAjMTI4MTE6IHRhYm5hbm55LmNoZWNrKCkgbm93IHByb21wdGx5IGNsb3NlcyBjaGVja2VkIGZpbGVzLiBQYXRjaCBieQorICBBbnRob255IEJyaWdncy4KKworLSBJc3N1ZSAjNjU2MDogVGhlIHNlbmRtc2cvcmVjdm1zZyBBUEkgaXMgbm93IGV4cG9zZWQgYnkgdGhlIHNvY2tldCBtb2R1bGUKKyAgd2hlbiBwcm92aWRlZCBieSB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybSwgc3VwcG9ydGluZyBwcm9jZXNzaW5nIG9mCisgIGFuY2lsbGFyeSBkYXRhIGluIHB1cmUgUHl0aG9uIGNvZGUuIFBhdGNoIGJ5IERhdmlkIFdhdHNvbiBhbmQgSGVpa28gV3VuZHJhbS4KKworLSBJc3N1ZSAjMTIzMjY6IE9uIExpbnV4LCBzeXMucGxhdGZvcm0gZG9lc24ndCBjb250YWluIHRoZSBtYWpvciB2ZXJzaW9uCisgIGFueW1vcmUuIEl0IGlzIG5vdyBhbHdheXMgJ2xpbnV4JywgaW5zdGVhZCBvZiAnbGludXgyJyBvciAnbGludXgzJyBkZXBlbmRpbmcKKyAgb24gdGhlIExpbnV4IHZlcnNpb24gdXNlZCB0byBidWlsZCBQeXRob24uCiAKIC0gSXNzdWUgIzEyMjEzOiBGaXggYSBidWZmZXJpbmcgYnVnIHdpdGggaW50ZXJsZWF2ZWQgcmVhZHMgYW5kIHdyaXRlcyB0aGF0CiAgIGNvdWxkIGFwcGVhciBvbiBCdWZmZXJlZFJhbmRvbSBzdHJlYW1zLgogCistIElzc3VlICMxMjc3ODogUmVkdWNlIG1lbW9yeSBjb25zdW1wdGlvbiB3aGVuIEpTT04tZW5jb2RpbmcgYSBsYXJnZQorICBjb250YWluZXIgb2YgbWFueSBzbWFsbCBvYmplY3RzLgorCiAtIElzc3VlICMxMjY1MDogRml4IGEgcmFjZSBjb25kaXRpb24gd2hlcmUgYSBzdWJwcm9jZXNzLlBvcGVuIGNvdWxkIGxlYWsKICAgcmVzb3VyY2VzIChGRC96b21iaWUpIHdoZW4ga2lsbGVkIGF0IHRoZSB3cm9uZyB0aW1lLgogCi0tIElzc3VlICMxMDg2MDogaHR0cC5jbGllbnQgbm93IGNvcnJlY3RseSBoYW5kbGVzIGFuIGVtcHR5IHBvcnQgYWZ0ZXIgcG9ydAotICBkZWxpbWl0ZXIgaW4gVVJMcy4KKy0gSXNzdWUgIzEyNzQ0OiBGaXggaW5lZmZpY2llbnQgcmVwcmVzZW50YXRpb24gb2YgaW50ZWdlcnMgYmV0d2VlbiAyKiozMSBhbmQKKyAgMioqNjMgb24gc3lzdGVtcyB3aXRoIGEgNjQtYml0IEMgImxvbmciLgogCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjNjgwNzogUnVuIG1zaXN1cHBvcnQubWFrIGVhcmxpZXIuCi0KLS0gSXNzdWUgIzEwNTgwOiBNaW5vciBncmFtbWFyIGNoYW5nZSBpbiBXaW5kb3dzIGluc3RhbGxlci4KLQotLSBJc3N1ZSAjMTMzMjY6IENsZWFuIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzIGNvcnJlY3RseSBvbiBPcGVuQlNELgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQwNTM6IHBhdGNoY2hlY2sucHkgKCJtYWtlIHBhdGNoY2hlY2siKSBub3cgd29ya3Mgd2l0aCBNUSBwYXRjaGVzLgotICBQYXRjaCBieSBGcmFuY2lzY28gTWFydMOtbiBCcnVndcOpLgotCi0tIElzc3VlICMxMzkzMDogMnRvMyBpcyBub3cgYWJsZSB0byB3cml0ZSBpdHMgY29udmVydGVkIG91dHB1dCBmaWxlcyB0byBhbm90aGVyCi0gIGRpcmVjdG9yeSB0cmVlIGFzIHdlbGwgYXMgY29weWluZyB1bmNoYW5nZWQgZmlsZXMgYW5kIGFsdGVyaW5nIHRoZSBmaWxlCi0gIHN1ZmZpeC4gIFNlZSBpdHMgbmV3IC1vLCAtVyBhbmQgLS1hZGQtc3VmZml4IG9wdGlvbnMuICBUaGlzIG1ha2VzIGl0IG1vcmUKLSAgdXNlZnVsIGluIG1hbnkgYXV0b21hdGVkIGNvZGUgdHJhbnNsYXRpb24gd29ya2Zsb3dzLgotCi0tIElzc3VlICMxMzYyODogcHl0aG9uLWdkYi5weSBpcyBub3cgYWJsZSB0byByZXRyaWV2ZSBtb3JlIGZyYW1lcyBpbiB0aGUgUHl0aG9uCi0gIHRyYWNlYmFjayBpZiBQeXRob24gaXMgb3B0aW1pemVkLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTE2ODk6IEZpeCBhIHZhcmlhYmxlIHNjb3BpbmcgZXJyb3IgaW4gYW4gc3FsaXRlMyB0ZXN0Ci0KLS0gSXNzdWUgIzEzNzg2OiBSZW1vdmUgdW5pbXBsZW1lbnRlZCAndHJhY2UnIGxvbmcgb3B0aW9uIGZyb20gcmVncnRlc3QucHkuCi0KLS0gSXNzdWUgIzEzNzI1OiBGaXggcmVncnRlc3QgdG8gcmVjb2duaXplIHRoZSBkb2N1bWVudGVkIC1kIGZsYWcuCi0gIFBhdGNoIGJ5IEVybm8gVHVraWEuCi0KLS0gSXNzdWUgIzEzMzA0OiBTa2lwIHRlc3QgY2FzZSBpZiB1c2VyIHNpdGUtcGFja2FnZXMgZGlzYWJsZWQgKC1zIG9yCi0gIFBZVEhPTk5PVVNFUlNJVEUpLiAgKFBhdGNoIGJ5IENhcmwgTWV5ZXIpCi0KLS0gSXNzdWUgIzEzMjE4OiBGaXggdGVzdF9zc2wgZmFpbHVyZXMgb24gRGViaWFuL1VidW50dS4KLQotLSBJc3N1ZSAjMTI4MjE6IEZpeCB0ZXN0X2ZjbnRsIGZhaWx1cmVzIG9uIE9wZW5CU0QgNS4KLQotLSBSZS1lbmFibGUgbGliMnRvMydzIHRlc3RfcGFyc2VyLnB5IHRlc3RzLCB0aG91Z2ggd2l0aCBhbiBleHBlY3RlZCBmYWlsdXJlCi0gIChzZWUgaXNzdWUgMTMxMjUpLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTM4NDA6IFRoZSBlcnJvciBtZXNzYWdlIHByb2R1Y2VkIGJ5IGN0eXBlcy5jcmVhdGVfc3RyaW5nX2J1ZmZlcgotICB3aGVuIGdpdmVuIGEgVW5pY29kZSBzdHJpbmcgaGFzIGJlZW4gZml4ZWQuCi0KLS0gSXNzdWUgIzk5NzU6IHNvY2tldDogRml4IGluY29ycmVjdCB1c2Ugb2YgZmxvd2luZm8gYW5kIHNjb3BlX2lkLiBQYXRjaCBieQotICBWaWxtb3MgTmViZWhhai4KLQotLSBJc3N1ZSAjMTMxNTk6IEZpbGVJTyBhbmQgQloyRmlsZSBub3cgdXNlIGEgbGluZWFyLXRpbWUgYnVmZmVyIGdyb3d0aAotICBzdHJhdGVneSBpbnN0ZWFkIG9mIGEgcXVhZHJhdGljLXRpbWUgb25lLgotCi0tIElzc3VlICMxMzA3MDogRml4IGEgY3Jhc2ggd2hlbiBhIFRleHRJT1dyYXBwZXIgY2F1Z2h0IGluIGEgcmVmZXJlbmNlIGN5Y2xlCi0gIHdvdWxkIGJlIGZpbmFsaXplZCBhZnRlciB0aGUgcmVmZXJlbmNlIHRvIGl0cyB1bmRlcmx5aW5nIEJ1ZmZlcmVkUldQYWlyJ3MKLSAgd3JpdGVyIGdvdCBjbGVhcmVkIGJ5IHRoZSBHQy4KLQotLSBJc3N1ZSAjMTI4ODE6IGN0eXBlczogRml4IHNlZ2ZhdWx0IHdpdGggbGFyZ2Ugc3RydWN0dXJlIGZpZWxkIG5hbWVzLgotCi0tIElzc3VlICMxMzA1ODogb3NzYXVkaW9kZXY6IGZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIG9uIGVycm9yLiBQYXRjaCBieQotICBUaG9tYXMgSmFyb3NjaC4KLQotLSBJc3N1ZSAjMTMwMTM6IGN0eXBlczogRml4IGEgcmVmZXJlbmNlIGxlYWsgaW4gUHlDQXJyYXlUeXBlX2Zyb21fY3R5cGUuCi0gIFRoYW5rcyB0byBTdW1hbiBTYWhhIGZvciBmaW5kaW5nIHRoZSBidWcgYW5kIHByb3ZpZGluZyBhIHBhdGNoLgotCi0tIElzc3VlICMxMzAyMjogRml4OiBfbXVsdGlwcm9jZXNzaW5nLnJlY3ZmZCgpIGRvZXNuJ3QgY2hlY2sgdGhhdAotICBmaWxlIGRlc2NyaXB0b3Igd2FzIGFjdHVhbGx5IHJlY2VpdmVkLgotCi0tIElzc3VlICMxMjQ4MzogY3R5cGVzOiBGaXggYSBjcmFzaCB3aGVuIHRoZSBkZXN0cnVjdGlvbiBvZiBhIGNhbGxiYWNrCi0gIG9iamVjdCB0cmlnZ2VycyB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuCi0KLS0gSXNzdWUgIzEyOTUwOiBGaXggcGFzc2luZyBmaWxlIGRlc2NyaXB0b3JzIGluIG11bHRpcHJvY2Vzc2luZywgdW5kZXIKLSAgT3BlbkluZGlhbmEvSWxsdW1vcy4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlcyAjMTM0OTEgYW5kICMxMzk5NTogRml4IG1hbnkgZXJyb3JzIGluIHNxbGl0ZTMgZG9jdW1lbnRhdGlvbi4KLSAgSW5pdGlhbCBwYXRjaCBmb3IgIzEzNDkxIGJ5IEpvaGFubmVzIFZvZ2VsLgotCi0tIElzc3VlICMxMzQwMjogRG9jdW1lbnQgYWJzb2x1dGVuZXNzIG9mIHN5cy5leGVjdXRhYmxlLgotCi0tIElzc3VlICMxMzg4MzogUFlUSE9OQ0FTRU9LIGFsc28gdXNlZCBvbiBPUyBYIGFuZCBPUy8yLgotCi0tIElzc3VlICMxMjk0OTogRG9jdW1lbnQgdGhlIGt3b25seWFyZ2NvdW50IGFyZ3VtZW50IGZvciB0aGUgUHlDb2RlX05ldwotICBDIEFQSSBmdW5jdGlvbi4KLQotLSBJc3N1ZSAjMjEzNDogVGhlIHRva2VuaXplIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gY2xhcmlmaWVkIHRvIGV4cGxhaW4gd2h5Ci0gIGFsbCBvcGVyYXRvciBhbmQgZGVsaW1pdGVyIHRva2VucyBhcmUgdHJlYXRlZCBhcyB0b2tlbi5PUCB0b2tlbnMuCi0KLS0gSXNzdWUgIzEzNTEzOiBGaXggaW8uSU9CYXNlIGRvY3VtZW50YXRpb24gdG8gY29ycmVjdGx5IGxpbmsgdG8gdGhlCi0gIGlvLklPQmFzZS5yZWFkbGluZSBtZXRob2QgaW5zdGVhZCBvZiB0aGUgcmVhZGxpbmUgbW9kdWxlLgotCi0tIElzc3VlICMxMzIzNzogUmVvcmdhbmlzZSBzdWJwcm9jZXNzIGRvY3VtZW50YXRpb24gdG8gZW1waGFzaXNlIGNvbnZlbmllbmNlCi0gIGZ1bmN0aW9ucyBhbmQgdGhlIG1vc3QgY29tbW9ubHkgbmVlZGVkIGFyZ3VtZW50cyB0byBQb3Blbi4KLQotLSBJc3N1ZSAjMTMxNDE6IERlbW9uc3RyYXRlIHJlY29tbWVuZGVkIHN0eWxlIGZvciBzb2NrZXRzZXJ2ZXIgZXhhbXBsZXMuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yLjI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMDMtU2VwLTIwMTEqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMjMyNjogc3lzLnBsYXRmb3JtIGlzIG5vdyBhbHdheXMgJ2xpbnV4Micgb24gTGludXgsIGV2ZW4gaWYgUHl0aG9uCi0gIGlzIGNvbXBpbGVkIG9uIExpbnV4IDMuCi0KLS0gQWNjZXB0IGJ5dGVzIGZvciB0aGUgQVNUIHN0cmluZyB0eXBlLiBUaGlzIGlzIHRlbXBvcmFyeSB1bnRpbCBhIHByb3BlciBmaXggaW4KLSAgMy4zLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzgyODY6IFRoZSBkaXN0dXRpbHMgY29tbWFuZCBzZGlzdCB3aWxsIHByaW50IGEgd2FybmluZyBtZXNzYWdlIGluc3RlYWQKLSAgb2YgY3Jhc2hpbmcgd2hlbiBhbiBpbnZhbGlkIHBhdGggaXMgZ2l2ZW4gaW4gdGhlIG1hbmlmZXN0IHRlbXBsYXRlLgotCi0tIElzc3VlICMxMjg0MTogdGFyZmlsZSB1bm5lY2Vzc2FyaWx5IGNoZWNrZWQgdGhlIGV4aXN0ZW5jZSBvZiBudW1lcmljYWwgdXNlcgotICBhbmQgZ3JvdXAgaWRzIG9uIGV4dHJhY3Rpb24uIElmIG9uZSBvZiB0aGVtIGRpZCBub3QgZXhpc3QgdGhlIHJlc3BlY3RpdmUgaWQKLSAgb2YgdGhlIGN1cnJlbnQgdXNlciAoaS5lLiByb290KSB3YXMgdXNlZCBmb3IgdGhlIGZpbGUgYW5kIG93bmVyc2hpcAotICBpbmZvcm1hdGlvbiB3YXMgbG9zdC4KLQotLSBJc3N1ZSAjMTA5NDY6IFRoZSBkaXN0dXRpbHMgY29tbWFuZHMgYmRpc3RfZHVtYiwgYmRpc3Rfd2luaW5zdCBhbmQgYmRpc3RfbXNpCi0gIG5vdyByZXNwZWN0IGEgLS1za2lwLWJ1aWxkIG9wdGlvbiBnaXZlbiB0byBiZGlzdC4KLQotLSBJc3N1ZSAjMTI4Mzk6IEZpeCBjcmFzaCBpbiB6bGliIG1vZHVsZSBkdWUgdG8gdmVyc2lvbiBtaXNtYXRjaC4KLSAgRml4IGJ5IFJpY2hhcmQgTS4gVGV3LgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjOTY1MTogRml4IGEgY3Jhc2ggd2hlbiBjdHlwZXMuY3JlYXRlX3N0cmluZ19idWZmZXIoMCkgd2FzIHBhc3NlZCB0bwotICBzb21lIGZ1bmN0aW9ucyBsaWtlIGZpbGUud3JpdGUoKS4KLQotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4yIHJlbGVhc2UgY2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAxNC1BdWctMjAxMSoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEyNzMyOiBJbiBuYXJyb3cgdW5pY29kZSBidWlsZHMsIGFsbG93IFVuaWNvZGUgaWRlbnRpZmllcnMgd2hpY2ggZmFsbAotICBvdXRzaWRlIHRoZSBCTVAuCi0KLS0gSXNzdWUgIzExNjAzOiBGaXggYSBjcmFzaCB3aGVuIF9fc3RyX18gaXMgcmVib3VuZCBhcyBfX3JlcHJfXy4gIFBhdGNoIGJ5Ci0gIEFuZHJlYXMgU3TDvGhyay4KLQotLSBJc3N1ZSAjMTEzMjE6IEZpeCBhIGNyYXNoIHdpdGggbXVsdGlwbGUgaW1wb3J0cyBvZiB0aGUgX3BpY2tsZSBtb2R1bGUgd2hlbgotICBlbWJlZGRpbmcgUHl0aG9uLiAgUGF0Y2ggYnkgQW5kcmVhcyBTdMO8aHJrLgotCi0tIFZlcmlmeSB0aGUgdHlwZXMgb2YgQVNUIHN0cmluZ3MgYW5kIGlkZW50aWZpZXJzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyIGJlZm9yZQotICBjb21waWxpbmcgdGhlbS4KLQotLSBJc3N1ZSAjMTI1Nzk6IHN0ci5mb3JtYXRfbWFwKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IgaWYgdXNlZCBvbiBhCi0gIGZvcm1hdCBzdHJpbmcgdGhhdCBjb250YWlucyBwb3NpdGlvbmFsIGZpZWxkcy4gSW5pdGlhbCBwYXRjaCBieQotICBKdWxpYW4gQmVybWFuLgotCi0tIElzc3VlICMxMTYyNzogRml4IHNlZ2ZhdWx0IHdoZW4gX19uZXdfXyBvbiBhIGV4Y2VwdGlvbiByZXR1cm5zIGEKLSAgbm9uLWV4Y2VwdGlvbiBjbGFzcy4KLQotLSBJc3N1ZSAjMTIxNDk6IFVwZGF0ZSB0aGUgbWV0aG9kIGNhY2hlIGFmdGVyIGEgdHlwZSdzIGRpY3Rpb25hcnkgZ2V0cwotICBjbGVhcmVkIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4gIFRoaXMgZml4ZXMgYSBzZWdmYXVsdCB3aGVuIGFuIGluc3RhbmNlCi0gIGFuZCBpdHMgdHlwZSBnZXQgY2F1Z2h0IGluIGEgcmVmZXJlbmNlIGN5Y2xlLCBhbmQgdGhlIGluc3RhbmNlJ3MKLSAgZGVhbGxvY2F0b3IgY2FsbHMgb25lIG9mIHRoZSBtZXRob2RzIG9uIHRoZSB0eXBlIChlLmcuIHdoZW4gc3ViY2xhc3NpbmcKLSAgSU9CYXNlKS4gIERpYWdub3NpcyBhbmQgcGF0Y2ggYnkgRGF2aWRlIFJpenpvLgotCi0tIFdoZW4gYSBnZW5lcmF0b3IgeWllbGRzLCBkbyBub3QgcmV0YWluIHRoZSBjYWxsZXIncyBleGNlcHRpb24gc3RhdGUgb24gdGhlCi0gIGdlbmVyYXRvci4KLQotLSBJc3N1ZSAjMTI0NzU6IFByZXZlbnQgZ2VuZXJhdG9ycyBmcm9tIGxlYWtpbmcgdGhlaXIgZXhjZXB0aW9uIHN0YXRlIGludG8gdGhlCi0gIGNhbGxlcidzIGZyYW1lIGFzIHRoZXkgcmV0dXJuIGZvciB0aGUgbGFzdCB0aW1lLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCistIElzc3VlICMxMjY0NjogQWRkIGFuICdlb2YnIGF0dHJpYnV0ZSB0byB6bGliLkRlY29tcHJlc3MsIHRvIG1ha2UgaXQgZWFzaWVyIHRvCisgIGRldGVjdCB0cnVuY2F0ZWQgaW5wdXQgc3RyZWFtcy4KIAogLSBJc3N1ZSAjMTE1MTM6IEZpeCBleGNlcHRpb24gaGFuZGxpbmcgYGB0YXJmaWxlLlRhckZpbGUuZ3pvcGVuKClgYCB3aGVuCiAgIHRoZSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQuCkBAIC0xODk3LDE4ICszNzcxLDQzIEBACiAtIElzc3VlICMxMjU0MDogUHJldmVudCB6b21iaWUgSURMRSBwcm9jZXNzZXMgb24gV2luZG93cyBkdWUgdG8gY2hhbmdlcwogICBpbiBvcy5raWxsKCkuCiAKKy0gSXNzdWUgIzEzMTIxOiBhZGQgc3VwcG9ydCBmb3IgaW5wbGFjZSBtYXRoIG9wZXJhdG9ycyB0byBjb2xsZWN0aW9ucy5Db3VudGVyLgorCistIEFkZCBzdXBwb3J0IGZvciB1bmFyeSBwbHVzIGFuZCB1bmFyeSBtaW51cyB0byBjb2xsZWN0aW9ucy5Db3VudGVyLgorCiAtIElzc3VlICMxMjY4MzogdXJscGFyc2UgdXBkYXRlZCB0byBpbmNsdWRlIHN2biBhcyBzY2hlbWVzIHRoYXQgdXNlcyByZWxhdGl2ZQogICBwYXRocy4gKHN2biBmcm9tIDEuNSBvbndhcmRzIHN1cHBvcnQgcmVsYXRpdmUgcGF0aCkuCiAKKy0gSXNzdWUgIzEyNjU1OiBFeHBvc2UgZnVuY3Rpb25zIGZyb20gc2NoZWQuaCBpbiB0aGUgb3MgbW9kdWxlOiBzY2hlZF95aWVsZCgpLAorICBzY2hlZF9zZXRzY2hlZHVsZXIoKSwgc2NoZWRfZ2V0c2NoZWR1bGVyKCksIHNjaGVkX3NldHBhcmFtKCksCisgIHNjaGVkX2dldF9taW5fcHJpb3JpdHkoKSwgc2NoZWRfZ2V0X21heF9wcmlvcml0eSgpLCBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwoKSwKKyAgc2NoZWRfZ2V0YWZmaW5pdHkoKSwgc2NoZWRfc2V0YWZmaW5pdHkoKS4KKworLSBBZGQgVGhyZWFkRXJyb3IgdG8gdGhyZWFkaW5nLl9fYWxsX18uCisKIC0gSXNzdWVzICMxMTEwNCwgIzg2ODg6IEZpeCB0aGUgYmVoYXZpb3Igb2YgZGlzdHV0aWxzJyBzZGlzdCBjb21tYW5kIHdpdGgKICAgbWFudWFsbHktbWFpbnRhaW5lZCBNQU5JRkVTVCBmaWxlcy4KIAorLSBJc3N1ZSAjMTEyODE6IHNtdHBsaWIuU1RNUCBnZXRzIHNvdXJjZV9hZGRyZXNzIHBhcmFtZXRlciwgd2hpY2ggYWRkcyB0aGUKKyAgYWJpbGl0eSB0byBiaW5kIHRvIHNwZWNpZmljIHNvdXJjZSBhZGRyZXNzIG9uIGEgbWFjaGluZSB3aXRoIG11bHRpcGxlCisgIGludGVyZmFjZXMuIFBhdGNoIGJ5IFBhdWxvIFNjYXJkaW5lLgorCiAtIElzc3VlICMxMjQ2NDogdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5LmNsZWFudXAoKSBzaG91bGQgbm90IGZvbGxvdwogICBzeW1saW5rczogZml4IGl0LiBQYXRjaCBieSBQZXRyaSBMZWh0aW5lbi4KIAogLSBJc3N1ZSAjODg4NzogInB5ZG9jIHNvbWVidWlsdGluLnNvbWVtZXRob2QiIChvciBoZWxwKCdzb21lYnVpbHRpbi5zb21lbWV0aG9kJykKICAgaW4gUHl0aG9uIGNvZGUpIG5vdyBmaW5kcyB0aGUgZG9jIG9mIHRoZSBtZXRob2QuCiAKKy0gSXNzdWUgIzEwOTY4OiBSZW1vdmUgaW5kaXJlY3Rpb24gaW4gdGhyZWFkaW5nLiAgVGhlIHB1YmxpYyBuYW1lcyAoRXZlbnQsCisgIENvbmRpdGlvbiwgZXRjLikgdXNlZCB0byBiZSBmYWN0b3J5IGZ1bmN0aW9ucyByZXR1cm5pbmcgaW5zdGFuY2VzIG9mIGhpZGRlbgorICBjbGFzc2VzIChfRXZlbnQsIF9Db25kaXRpb24sIGV0Yy4pLCBiZWNhdXNlIChpZiBHdWlkbyByZWNhbGxzIGNvcnJlY3RseSkgdGhpcworICBjb2RlIHByZS1kYXRlcyB0aGUgYWJpbGl0eSB0byBzdWJjbGFzcyBleHRlbnNpb24gdHlwZXMuICBJdCBpcyBub3cgcG9zc2libGUKKyAgdG8gaW5oZXJpdCBmcm9tIHRoZXNlIGNsYXNzZXMsIHdpdGhvdXQgaGF2aW5nIHRvIGltcG9ydCB0aGUgcHJpdmF0ZQorICB1bmRlcnNjb3JlZCBuYW1lcyBsaWtlIG11bHRpcHJvY2Vzc2luZyBkaWQuCisKKy0gSXNzdWUgIzk3MjM6IEFkZCBzaGxleC5xdW90ZSBmdW5jdGlvbnMsIHRvIGVzY2FwZSBmaWxlbmFtZXMgYW5kIGNvbW1hbmQKKyAgbGluZXMuCisKIC0gSXNzdWUgIzEyNjAzOiBGaXggcHlkb2Muc3lub3BzaXMoKSBvbiBmaWxlcyB3aXRoIG5vbi1uZWdhdGl2ZSBzdF9tdGltZS4KIAogLSBJc3N1ZSAjMTI1MTQ6IFVzZSB0cnkvZmluYWxseSB0byBhc3N1cmUgdGhlIHRpbWVpdCBtb2R1bGUgcmVzdG9yZXMgZ2FyYmFnZQpAQCAtMTkyMywxOSArMzgyMiwzNSBAQAogLSBJc3N1ZSAjMTI1NzY6IEZpeCB1cmxvcGVuIGJlaGF2aW9yIG9uIHNpdGVzIHdoaWNoIGRvIG5vdCBzZW5kIChvciBvYmZ1c2NhdGVzKQogICBDb25uZWN0aW9uOmNsb3NlIGhlYWRlci4KIAorLSBJc3N1ZSAjMTIxMDI6IERvY3VtZW50IHRoYXQgYnVmZmVyZWQgZmlsZXMgbXVzdCBiZSBmbHVzaGVkIGJlZm9yZSBiZWluZyB1c2VkCisgIHdpdGggbW1hcC4gUGF0Y2ggYnkgU3RlZmZlbiBEYW9kZSBOdXJwbWVzby4KKworLSBJc3N1ZSAjMTI1NjA6IEJ1aWxkIGxpYnB5dGhvbi5zbyBvbiBPcGVuQlNELiBQYXRjaCBieSBTdGVmYW4gU3BlcmxpbmcuCisKIC0gSXNzdWUgIzE4MTM6IEZpeCBjb2RlYyBsb29rdXAgdW5kZXIgVHVya2lzaCBsb2NhbGVzLgogCiAtIElzc3VlICMxMjU5MTogSW1wcm92ZSBzdXBwb3J0IG9mICJ1bml2ZXJzYWwgbmV3bGluZXMiIGluIHRoZSBzdWJwcm9jZXNzCiAgIG1vZHVsZTogdGhlIHBpcGVkIHN0cmVhbXMgY2FuIG5vdyBiZSBwcm9wZXJseSByZWFkIGZyb20gb3Igd3JpdHRlbiB0by4KIAogLSBJc3N1ZSAjMTI1OTE6IEFsbG93IGlvLlRleHRJT1dyYXBwZXIgdG8gd29yayB3aXRoIHJhdyBJTyBvYmplY3RzICh3aXRob3V0Ci0gIGEgcmVhZDEoKSBtZXRob2QpLCBhbmQgYWRkIGFuIHVuZG9jdW1lbnRlZCAqd3JpdGVfdGhyb3VnaCogcGFyYW1ldGVyIHRvCi0gIG1hbmRhdGUgdW5idWZmZXJlZCB3cml0ZXMuCi0KLS0gSXNzdWUgIzk2MTEsICM5MDE1OiBGaWxlSU8ucmVhZCgpIGNsYW1wcyB0aGUgbGVuZ3RoIHRvIElOVF9NQVggb24gV2luZG93cy4KKyAgYSByZWFkMSgpIG1ldGhvZCksIGFuZCBhZGQgYSAqd3JpdGVfdGhyb3VnaCogcGFyYW1ldGVyIHRvIG1hbmRhdGUKKyAgdW5idWZmZXJlZCB3cml0ZXMuCiAKIC0gSXNzdWUgIzEwODgzOiBGaXggc29ja2V0IGxlYWtzIGluIHVybGxpYi5yZXF1ZXN0IHdoZW4gdXNpbmcgRlRQLgogCistIElzc3VlICMxMjU5MjogTWFrZSBQeXRob24gYnVpbGQgb24gT3BlbkJTRCA1IChhbmQgZnV0dXJlIG1ham9yIHJlbGVhc2VzKS4KKworLSBJc3N1ZSAjMTIzNzI6IFBPU0lYIHNlbWFwaG9yZXMgYXJlIGJyb2tlbiBvbiBBSVg6IGRvbid0IHVzZSB0aGVtLgorCistIElzc3VlICMxMjU1MTogUHJvdmlkZSBhIGdldF9jaGFubmVsX2JpbmRpbmcoKSBtZXRob2Qgb24gU1NMIHNvY2tldHMgc28gYXMKKyAgdG8gZ2V0IGNoYW5uZWwgYmluZGluZyBkYXRhIGZvciB0aGUgY3VycmVudCBTU0wgc2Vzc2lvbiAob25seSB0aGUKKyAgInRscy11bmlxdWUiIGNoYW5uZWwgYmluZGluZyBpcyBpbXBsZW1lbnRlZCkuICBUaGlzIGFsbG93cyB0aGUgaW1wbGVtZW50YXRpb24KKyAgb2YgY2VydGFpbiBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc21zIHN1Y2ggYXMgU0NSQU0tU0hBLTEtUExVUy4gIFBhdGNoIGJ5CisgIEphY2VrIEtvbmllY3pueS4KKworLSBJc3N1ZSAjNjY1MTk0OiBlbWFpbC51dGlscyBub3cgaGFzIGZvcm1hdF9kYXRldGltZSBhbmQgcGFyc2VkYXRlX3RvX2RhdGV0aW1lCisgIGZ1bmN0aW9ucywgYWxsb3dpbmcgZm9yIHJvdW5kIHRyaXBwaW5nIG9mIFJGQzI4MjIgZm9ybWF0IGRhdGVzLgorCiAtIElzc3VlICMxMjU3MTogQWRkIGEgcGxhdC1saW51eDMgZGlyZWN0b3J5IG1pcnJvcmluZyB0aGUgcGxhdC1saW51eDIKICAgZGlyZWN0b3J5LCBzbyB0aGF0ICJpbXBvcnQgRExGQ04iIGFuZCBvdGhlciBzaW1pbGFyIGltcG9ydHMgd29yayBvbgogICBMaW51eCAzLjAuCkBAIC0xOTQzLDE4NCArMzg1OCw5MSBAQAogLSBJc3N1ZSAjNzQ4NDogc210cGxpYiBubyBsb25nZXIgcHV0cyA8PiBhcm91bmQgYWRkcmVzc2VzIGluIFZSRlkgYW5kIEVYUE4KICAgY29tbWFuZHM7IHRoZXkgYXJlbid0IHJlcXVpcmVkIGFuZCBpbiBmYWN0IHBvc3RmaXggZG9lc24ndCBzdXBwb3J0IHRoYXQgZm9ybS4KIAotLSBDbG9zZSB0aGUgY2FsbCBxdWV1ZSBpbiBjb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvciB3aGVuCi0gIHNodXRkb3duKCkgaXMgY2FsbGVkLCB3aXRob3V0IHdhaXRpbmcgZm9yIHRoZSBnYXJiYWdlIGNvbGxlY3RvciB0byBraWNrIGluLgorLSBJc3N1ZSAjMTIyNzM6IFJlbW92ZSBhc3QuX192ZXJzaW9uX18uIEFTVCBjaGFuZ2VzIGNhbiBiZSBhY2NvdW50ZWQgZm9yIGJ5CisgIGNoZWNraW5nIHN5cy52ZXJzaW9uX2luZm8gb3Igc3lzLl9tZXJjdXJpYWwuCisKKy0gU2lsZW5jZSBzcHVyaW91cyAiYnJva2VuIHBpcGUiIHRyYWNlYmFja3Mgd2hlbiBzaHV0dGluZyBkb3duIGEKKyAgUHJvY2Vzc1Bvb2xFeGVjdXRvci4KKworLSBGaXggcG90ZW50aWFsIHJlc291cmNlIGxlYWtzIGluIGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yCisgIGJ5IGpvaW5pbmcgYWxsIHF1ZXVlcyBhbmQgcHJvY2Vzc2VzIHdoZW4gc2h1dGRvd24oKSBpcyBjYWxsZWQuCisKKy0gSXNzdWUgIzExNjAzOiBGaXggYSBjcmFzaCB3aGVuIF9fc3RyX18gaXMgcmVib3VuZCBhcyBfX3JlcHJfXy4gIFBhdGNoIGJ5CisgIEFuZHJlYXMgU3TDvGhyay4KKworLSBJc3N1ZSAjMTEzMjE6IEZpeCBhIGNyYXNoIHdpdGggbXVsdGlwbGUgaW1wb3J0cyBvZiB0aGUgX3BpY2tsZSBtb2R1bGUgd2hlbgorICBlbWJlZGRpbmcgUHl0aG9uLiAgUGF0Y2ggYnkgQW5kcmVhcyBTdMO8aHJrLgorCistIElzc3VlICM2NzU1OiBBZGQgZ2V0X3djaCgpIG1ldGhvZCB0byBjdXJzZXMud2luZG93IGNsYXNzLiBQYXRjaCBieSBJw7FpZ28KKyAgU2VybmEuCisKKy0gQWRkIGNnaS5jbG9zZWxvZygpIGZ1bmN0aW9uIHRvIGNsb3NlIHRoZSBsb2cgZmlsZS4KIAogLSBJc3N1ZSAjMTI1MDI6IGFzeW5jb3JlOiBmaXggcG9sbGluZyBsb29wIHdpdGggQUZfVU5JWCBzb2NrZXRzLgogCi0tIElzc3VlICM0Mzc2OiBjdHlwZXMgbm93IHN1cHBvcnRzIG5lc3RlZCBzdHJ1Y3R1cmVzIHdpdGggYW4gZW5kaWFubmVzcwotICBkaWZmZXJlbnQgdGhhbiB0aGF0IG9mIHRoZSBwYXJlbnQgc3RydWN0dXJlLiAgUGF0Y2ggYnkgVmxhZCBSaXNjdXRpYS4KKy0gSXNzdWUgIzQzNzY6IGN0eXBlcyBub3cgc3VwcG9ydHMgbmVzdGVkIHN0cnVjdHVyZXMgaW4gYSBlbmRpYW4gZGlmZmVyZW50IHRoYW4KKyAgdGhlIHBhcmVudCBzdHJ1Y3R1cmUuIFBhdGNoIGJ5IFZsYWQgUmlzY3V0aWEuCiAKIC0gUmFpc2UgVmFsdWVFcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IHRoZSBfQ0hVTktfU0laRSBhdHRyaWJ1dGUgb2YgYQogICBUZXh0SU9XcmFwcGVyIHRvIGEgaHVnZSB2YWx1ZSwgbm90IFR5cGVFcnJvci4KIAotLSBJc3N1ZSAjMTI0OTM6IHN1YnByb2Nlc3M6IFBvcGVuLmNvbW11bmljYXRlKCkgbm93IGFsc28gaGFuZGxlcyBFSU5UUiBlcnJvcnMKLSAgaWYgdGhlIHByb2Nlc3MgaGFzIG9ubHkgb25lIHBpcGUuCistIElzc3VlICMxMjUwNDogQ2xvc2UgZmlsZSBoYW5kbGVzIGluIGEgdGltZWx5IG1hbm5lciBpbiBwYWNrYWdpbmcuZGF0YWJhc2UuCisgIFRoaXMgZml4ZXMgYSBidWcgd2l0aCB0aGUgcmVtb3ZlICh1bmluc3RhbGwpIGZlYXR1cmUgb24gV2luZG93cy4KKworLSBJc3N1ZXMgIzEyMTY5IGFuZCAjMTA1MTA6IEZhY3RvciBvdXQgY29kZSB1c2VkIGJ5IHZhcmlvdXMgcGFja2FnaW5nIGNvbW1hbmRzCisgIHRvIG1ha2UgSFRUUCBQT1NUIHJlcXVlc3RzLCBhbmQgbWFrZSBzdXJlIGl0IHVzZXMgQ1JMRi4KKworLSBJc3N1ZSAjMTIwMTY6IE11bHRpYnl0ZSBDSksgZGVjb2RlcnMgbm93IHJlc3luY2hyb25pemUgZmFzdGVyLiBUaGV5IG9ubHkKKyAgaWdub3JlIHRoZSBmaXJzdCBieXRlIG9mIGFuIGludmFsaWQgYnl0ZSBzZXF1ZW5jZS4gRm9yIGV4YW1wbGUsCisgIGInXHhmZlxuJy5kZWNvZGUoJ2diMjMxMicsICdyZXBsYWNlJykgZ2l2ZXMgJ1x1ZmZmZFxuJyBpbnN0ZWFkIG9mICdcdWZmZmQnLgorCistIElzc3VlICMxMjQ1OTogdGltZS5zbGVlcCgpIG5vdyByYWlzZXMgYSBWYWx1ZUVycm9yIGlmIHRoZSBzbGVlcCBsZW5ndGggaXMKKyAgbmVnYXRpdmUsIGluc3RlYWQgb2YgYW4gaW5maW5pdGUgc2xlZXAgb24gV2luZG93cyBvciByYWlzaW5nIGFuIElPRXJyb3Igb24KKyAgTGludXggZm9yIGV4YW1wbGUsIHRvIGhhdmUgdGhlIHNhbWUgYmVoYXZpb3VyIG9uIGFsbCBwbGF0Zm9ybXMuCiAKIC0gSXNzdWUgIzEyNDUxOiBweWRvYzogaHRtbF9nZXRmaWxlKCkgbm93IHVzZXMgdG9rZW5pemUub3BlbigpIHRvIHN1cHBvcnQKLSAgUHl0aG9uIG1vZHVsZXMgdXNpbmcgYSBlbmNvZGluZyBkaWZmZXJlbnQgdGhhbiBVVEYtOCAocmVhZGluZyB0aGUgY29kaW5nCi0gIGNvb2tpZSBvZiB0aGUgbW9kdWxlKS4KKyAgUHl0aG9uIHNjcmlwdHMgdXNpbmcgYSBlbmNvZGluZyBkaWZmZXJlbnQgdGhhbiBVVEYtOCAocmVhZCB0aGUgY29kaW5nIGNvb2tpZQorICBvZiB0aGUgc2NyaXB0KS4KIAotLSBJc3N1ZSAjMTI0NTE6IHB5ZG9jOiBpbXBvcnRmaWxlKCkgbm93IG9wZW5zIHRoZSBQeXRob24gbW9kdWxlIGluIGJpbmFyeSBtb2RlLAotICBpbnN0ZWFkIG9mIHRleHQgbW9kZSB1c2luZyB0aGUgbG9jYWxlIGVuY29kaW5nLCB0byBhdm9pZCBlbmNvZGluZyBpc3N1ZXMuCi0KLS0gSXNzdWUgIzEyNDUxOiBydW5weTogcnVuX3BhdGgoKSBub3cgb3BlbnMgdGhlIFB5dGhvbiBtb2R1bGUgaW4gYmluYXJ5IG1vZGUsCi0gIGluc3RlYWQgb2YgdGV4dCBtb2RlIHVzaW5nIHRoZSBsb2NhbGUgZW5jb2RpbmcsIHRvIHN1cHBvcnQgb3RoZXIgZW5jb2RpbmdzCi0gIHRoYW4gVVRGLTggKG1vZHVsZXMgdXNpbmcgdGhlIGNvZGluZyBjb29raWUpLgotCi0tIElzc3VlICMxMjQ1MTogeG1sLmRvbS5wdWxsZG9tOiBwYXJzZSgpIG5vdyBvcGVucyBmaWxlcyBpbiBiaW5hcnkgbW9kZSBpbnN0ZWFkCi0gIG9mIHRoZSB0ZXh0IG1vZGUgKHVzaW5nIHRoZSBsb2NhbGUgZW5jb2RpbmcpIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KLQotLSBJc3N1ZSAjMTQ0NDM6IEVuc3VyZSB0aGF0IC5weSBmaWxlcyBhcmUgYnl0ZS1jb21waWxlZCB3aXRoIHRoZSBjb3JyZWN0IFB5dGhvbgotICBleGVjdXRhYmxlIHdpdGhpbiBiZGlzdF9ycG0gZXZlbiBvbiBvbGRlciB2ZXJzaW9ucyBvZiBSUE0KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEyNzY0OiBGaXggYSBjcmFzaCBpbiBjdHlwZXMgd2hlbiB0aGUgbmFtZSBvZiBhIFN0cnVjdHVyZSBmaWVsZCBpcyBub3QKLSAgYSBzdHJpbmcuCi0KLS0gSXNzdWUgIzExMjQxOiBzdWJjbGFzc2VzIG9mIGN0eXBlcy5BcnJheSBjYW4gbm93IGJlIHN1YmNsYXNzZWQuCi0KLS0gSXNzdWUgIzEwMzA5OiBEZWZpbmUgX0dOVV9TT1VSQ0Ugc28gdGhhdCBtcmVtYXAoKSBnZXRzIHRoZSBwcm9wZXIKLSAgc2lnbmF0dXJlLiAgV2l0aG91dCB0aGlzLCBhcmNoaXRlY3R1cmVzIHdoZXJlIHNpemVvZiB2b2lkKiAhPSBzaXplb2YgaW50IGFyZQotICBicm9rZW4uICBQYXRjaCBnaXZlbiBieSBIYWxsdmFyZCBCIEZ1cnVzZXRoLgotCi1DLUFQSQotLS0tLS0KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzEyNTYwOiBCdWlsZCBsaWJweXRob24uc28gb24gT3BlbkJTRC4gIFBhdGNoIGJ5IFN0ZWZhbiBTcGVybGluZy4KLQotLSBJc3N1ZSAjMTI1OTI6IE1ha2UgUHl0aG9uIGJ1aWxkIG9uIE9wZW5CU0QgNSAoYW5kIGZ1dHVyZSBtYWpvciByZWxlYXNlcykuCi0KLS0gSXNzdWUgIzEyMzcyOiBQT1NJWCBzZW1hcGhvcmVzIGFyZSBicm9rZW4gb24gQUlYOiBkb24ndCB1c2UgdGhlbS4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEwNjM5OiByZWluZGVudC5weSBubyBsb25nZXIgY29udmVydHMgbmV3bGluZXMgYW5kIHdpbGwgcmFpc2UKLSAgYW4gZXJyb3IgaWYgYXR0ZW1wdGluZyB0byBjb252ZXJ0IGEgZmlsZSB3aXRoIG1peGVkIG5ld2xpbmVzLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTIzMzE6IFRoZSB0ZXN0IHN1aXRlIGZvciBsaWIydG8zIGNhbiBub3cgcnVuIGZyb20gYW4gaW5zdGFsbGVkCi0gIFB5dGhvbi4KLQotLSBJc3N1ZSAjMTI2MjY6IEluIHJlZ3J0ZXN0LCBhbGxvdyB0byBmaWx0ZXIgdGVzdHMgdXNpbmcgYSBnbG9iIGZpbHRlcgotICB3aXRoIHRoZSBgYC1tYGAgKG9yIGBgLS1tYXRjaGBgKSBvcHRpb24uICBUaGlzIHdvcmtzIHdpdGggYWxsIHRlc3QgY2FzZXMKLSAgdXNpbmcgdGhlIHVuaXR0ZXN0IG1vZHVsZS4gIFRoaXMgaXMgdXNlZnVsIHdpdGggbG9uZyB0ZXN0IHN1aXRlcwotICBzdWNoIGFzIHRlc3RfaW8gb3IgdGVzdF9zdWJwcm9jZXNzLgotCi0tIElzc3VlICMxMjYyNDogSXQgaXMgbm93IHBvc3NpYmxlIHRvIGZhaWwgYWZ0ZXIgdGhlIGZpcnN0IGZhaWx1cmUgd2hlbgotICBydW5uaW5nIGluIHZlcmJvc2UgbW9kZSAoYGAtdmBgIG9yIGBgLVdgYCksIGJ5IHVzaW5nIHRoZSBgYC0tZmFpbGZhc3RgYAotICAob3IgYGAtR2BgKSBvcHRpb24gdG8gcmVncnRlc3QuICBUaGlzIGlzIHVzZWZ1bCB3aXRoIGxvbmcgdGVzdCBzdWl0ZXMKLSAgc3VjaCBhcyB0ZXN0X2lvIG9yIHRlc3Rfc3VicHJvY2Vzcy4KLQotLSBJc3N1ZSAjMTI1ODc6IENvcnJlY3QgZmF1bHR5IHRlc3QgZmlsZSBhbmQgcmVmZXJlbmNlIGluIHRlc3RfdG9rZW5pemUuCi0gIChQYXRjaCBieSBSb2JlcnQgWGlhbykKLQotLSBUcnkgaGFyZGVyIHRvIHJlYXAgZGFuZ2xpbmcgdGhyZWFkcyBpbiB0ZXN0LnN1cHBvcnQucmVhcF90aHJlYWRzKCkuCi0KLS0gSXNzdWUgIzEyNTczOiBBZGQgcmVzb3VyY2UgY2hlY2tzIGZvciBkYW5nbGluZyBUaHJlYWQgYW5kIFByb2Nlc3Mgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTI1NDk6IENvcnJlY3QgdGVzdF9wbGF0Zm9ybSB0byBub3QgZmFpbCB3aGVuIE9TIFggcmV0dXJucyAneDg2XzY0JwotICBhcyB0aGUgcHJvY2Vzc29yIHR5cGUgb24gc29tZSBNYWMgc3lzdGVtcy4KLQotLSBBdm9pZCBmYWlsaW5nIGluIHRlc3Rfcm9ib3RwYXJzZXIgd2hlbiBtdWVibGVzbW9yYWxlZGEuY29tIGlzIGZsYWt5IGFuZAotICBhbiBvdmVyemVhbG91cyBETlMgc2VydmljZSAoZS5nLiBPcGVuRE5TKSByZWRpcmVjdHMgdG8gYSBwbGFjZWhvbGRlcgotICBXZWIgc2l0ZS4KLQotLSBJc3N1ZSAjMTI0NDA6IFdoZW4gdGVzdGluZyB3aGV0aGVyIHNvbWUgYml0cyBpbiBTU0xDb250ZXh0Lm9wdGlvbnMgY2FuIGJlCi0gIHJlc2V0LCBjaGVjayB0aGUgdmVyc2lvbiBvZiB0aGUgT3BlblNTTCBoZWFkZXJzIFB5dGhvbiB3YXMgY29tcGlsZWQgYWdhaW5zdCwKLSAgcmF0aGVyIHRoYW4gdGhlIHJ1bnRpbWUgdmVyc2lvbiBvZiB0aGUgT3BlblNTTCBsaWJyYXJ5LgotCi0tIElzc3VlICMxMjQ5NzogSW5zdGFsbCB0ZXN0L2RhdGEgdG8gcHJldmVudCBmYWlsdXJlcyBvZiB0aGUgdmFyaW91cyBjb2RlY21hcHMKLSAgdGVzdHMuCi0KLS0gSXNzdWUgIzEyNDk2OiBJbnN0YWxsIHRlc3QvY2FwYXRoIGRpcmVjdG9yeSB0byBwcmV2ZW50IHRlc3RfY29ubmVjdF9jYXBhdGgKLSAgdGVzdGNhc2UgZmFpbHVyZSBpbiB0ZXN0X3NzbC4KLQotLSBJc3N1ZSAjMTI0Njk6IFJ1biAid2FrZXVwIiBzaWduYWwgdGVzdHMgaW4gc3VicHJvY2VzcyB0byBydW4gdGhlIHRlc3QgaW4gYQotICBmcmVzaCBwcm9jZXNzIHdpdGggb25seSBvbmUgdGhyZWFkIGFuZCB0byBub3QgY2hhbmdlIHNpZ25hbCBoYW5kbGluZyBvZiB0aGUKLSAgcGFyZW50IHByb2Nlc3MuCi0KLS0gSXNzdWUgIzg3MTY6IEF2b2lkIGNyYXNoZXMgY2F1c2VkIGJ5IEFxdWEgVGsgb24gT1NYIHdoZW4gYXR0ZW1wdGluZyB0byBydW4KLSAgdGVzdF90ayBvciB0ZXN0X3R0a19ndWlvbmx5IHVuZGVyIGEgdXNlcm5hbWUgdGhhdCBpcyBub3QgY3VycmVudGx5IGxvZ2dlZAotICBpbiB0byB0aGUgY29uc29sZSB3aW5kb3dzZXJ2ZXIgKGFzIG1heSBiZSB0aGUgY2FzZSB1bmRlciBidWlsZGJvdCBvciBzc2gpLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4xPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDEwLUp1bC0yMDExKgotCi1MaWJyYXJ5Ci0tLS0tLS0tCistIElzc3VlICMxMjQ5Mzogc3VicHJvY2VzczogUG9wZW4uY29tbXVuaWNhdGUoKSBub3cgYWxzbyBoYW5kbGVzIEVJTlRSIGVycm9ycworICBpZiB0aGUgcHJvY2VzcyBoYXMgb25seSBvbmUgcGlwZS4KIAogLSBJc3N1ZSAjMTI0Njc6IHdhcm5pbmdzOiBmaXggYSByYWNlIGNvbmRpdGlvbiBpZiBhIHdhcm5pbmcgaXMgZW1pdHRlZCBhdAogICBzaHV0ZG93biwgaWYgZ2xvYmFscygpWydfX2ZpbGVfXyddIGlzIE5vbmUuCiAKLVRlc3RzCi0tLS0tLQorLSBJc3N1ZSAjMTI0NTE6IHB5ZG9jOiBpbXBvcnRmaWxlKCkgbm93IG9wZW5zIHRoZSBQeXRob24gc2NyaXB0IGluIGJpbmFyeSBtb2RlLAorICBpbnN0ZWFkIG9mIHRleHQgbW9kZSB1c2luZyB0aGUgbG9jYWxlIGVuY29kaW5nLCB0byBhdm9pZCBlbmNvZGluZyBpc3N1ZXMuCiAKLS0gU2tpcCBuZXR3b3JrIHRlc3RzIHdoZW4gZ2V0YWRkcmluZm8oKSByZXR1cm5zIEVBSV9BR0FJTiwgbWVhbmluZyBhIHRlbXBvcmFyeQotICBmYWlsdXJlIGluIG5hbWUgcmVzb2x1dGlvbi4KKy0gSXNzdWUgIzEyNDUxOiBydW5weTogcnVuX3BhdGgoKSBub3cgb3BlbnMgdGhlIFB5dGhvbiBzY3JpcHQgaW4gYmluYXJ5IG1vZGUsCisgIGluc3RlYWQgb2YgdGV4dCBtb2RlIHVzaW5nIHRoZSBsb2NhbGUgZW5jb2RpbmcsIHRvIHN1cHBvcnQgb3RoZXIgZW5jb2RpbmdzCisgIHRoYW4gVVRGLTggKHNjcmlwdHMgdXNpbmcgdGhlIGNvZGluZyBjb29raWUpLgogCi0tIElzc3VlICMxMTgxMjogU29sdmUgdHJhbnNpZW50IHNvY2tldCBmYWlsdXJlIHRvIGNvbm5lY3QgdG8gJ2xvY2FsaG9zdCcKLSAgaW4gdGVzdF90ZWxuZXRsaWIucHkuCi0KLS0gU29sdmVkIGEgcG90ZW50aWFsIGRlYWRsb2NrIGluIHRlc3RfdGVsbmV0bGliLnB5LiBSZWxhdGVkIHRvIGlzc3VlICMxMTgxMi4KLQotLSBBdm9pZCBmYWlsaW5nIGluIHRlc3RfdXJsbGlibmV0LnRlc3RfYmFkX2FkZHJlc3Mgd2hlbiBzb21lIG92ZXJ6ZWFsb3VzCi0gIEROUyBzZXJ2aWNlIChlLmcuIE9wZW5ETlMpIHJlc29sdmVzIGEgbm9uLWV4aXN0ZW50IGRvbWFpbiBuYW1lLiAgVGhlIHRlc3QKLSAgaXMgbm93IHNraXBwZWQgaW5zdGVhZC4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIuMSByZWxlYXNlIGNhbmRpZGF0ZSAyPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMDMtSnVsLTIwMTEqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMjI5MTogWW91IGNhbiBub3cgbG9hZCBtdWx0aXBsZSBtYXJzaGFsbGVkIG9iamVjdHMgZnJvbSBhIHN0cmVhbSwgd2l0aAotICBvdGhlciBkYXRhIGludGVybGVhdmVkIGJldHdlZW4gbWFyc2hhbGxlZCBvYmplY3RzLgotCi0tIElzc3VlICMxMjA4NDogb3Muc3RhdCBvbiBXaW5kb3dzIG5vdyB3b3JrcyBwcm9wZXJseSB3aXRoIHJlbGF0aXZlIHN5bWJvbGljCi0gIGxpbmtzIHdoZW4gY2FsbGVkIGZyb20gYW55IGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjMTE5NTogbXlfZmdldHMoKSBub3cgYWx3YXlzIGNsZWFycyBlcnJvcnMgYmVmb3JlIGNhbGxpbmcgZmdldHMoKS4gRml4Ci0gIHRoZSBmb2xsb3dpbmcgY2FzZTogc3lzLnN0ZGluLnJlYWQoKSBzdG9wcGVkIHdpdGggQ1RSTCtkIChlbmQgb2YgZmlsZSksCi0gIHJhd19pbnB1dCgpIGludGVycnVwdGVkIGJ5IENUUkwrYy4KLQotLSBJc3N1ZSAjOTY3MDogSW5jcmVhc2UgdGhlIGRlZmF1bHQgc3RhY2sgc2l6ZSBmb3Igc2Vjb25kYXJ5IHRocmVhZHMgb24gTWFjIE9TIFgKLSAgYW5kIEZyZWVCU0QgdG8gcmVkdWNlIHRoZSBjaGFuY2VzIG9mIGEgY3Jhc2ggaW5zdGVhZCBvZiBhICJtYXhpbXVtIHJlY3Vyc2lvbgotICBkZXB0aCIgUnVudGltZUVycm9yIGV4Y2VwdGlvbiAocGF0Y2ggYnkgUm9uYWxkIE91c3NvcmVuKS4KLQotTGlicmFyeQotLS0tLS0tLQorLSBJc3N1ZSAjMTI0NTE6IHhtbC5kb20ucHVsbGRvbTogcGFyc2UoKSBub3cgb3BlbnMgZmlsZXMgaW4gYmluYXJ5IG1vZGUgaW5zdGVhZAorICBvZiB0aGUgdGV4dCBtb2RlICh1c2luZyB0aGUgbG9jYWxlIGVuY29kaW5nKSB0byBhdm9pZCBlbmNvZGluZyBpc3N1ZXMuCiAKIC0gSXNzdWUgIzEyMTQ3OiBBZGp1c3QgdGhlIG5ldy1pbi0zLjIgc210cGxpYi5zZW5kX21lc3NhZ2UgbWV0aG9kIGZvciBiZXR0ZXIKLSAgY29uZm9ybWFuY2UgdG8gdGhlIFJGQ3M6IGNvcnJlY3RseSBoYW5kbGUgU2VuZGVyIGFuZCBSZXNlbnQgaGVhZGVycy4KKyAgY29uZm9ybWFuY2UgdG8gdGhlIFJGQ3M6ICBjb3JyZWN0bHkgaGFuZGxlIFNlbmRlciBhbmQgUmVzZW50LSBoZWFkZXJzLgogCiAtIElzc3VlICMxMjM1MjogRml4IGEgZGVhZGxvY2sgaW4gbXVsdGlwcm9jZXNzaW5nLkhlYXAgd2hlbiBhIGJsb2NrIGlzIGZyZWVkIGJ5CiAgIHRoZSBnYXJiYWdlIGNvbGxlY3RvciB3aGlsZSB0aGUgSGVhcCBsb2NrIGlzIGhlbGQuCiAKKy0gSXNzdWUgIzEyNDYyOiB0aW1lLnNsZWVwKCkgbm93IGltbWVkaWF0ZWx5IGNhbGxzIHRoZSAoUHl0aG9uKSBzaWduYWwgaGFuZGxlcgorICBpZiBpdCBpcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCwgaW5zdGVhZCBvZiBoYXZpbmcgdG8gd2FpdCB1bnRpbCB0aGUgbmV4dAorICBpbnN0cnVjdGlvbi4KKworLSBJc3N1ZSAjMTI0NDI6IG5ldyBzaHV0aWwuZGlza191c2FnZSBmdW5jdGlvbiwgcHJvdmlkaW5nIHRvdGFsLCB1c2VkIGFuZCBmcmVlCisgIGRpc2sgc3BhY2Ugc3RhdGlzdGljcy4KKwogLSBJc3N1ZSAjMTI0NTE6IFRoZSBYSW5jbHVkZSBkZWZhdWx0IGxvYWRlciBvZiB4bWwuZXRyZWUgbm93IGRlY29kZXMgZmlsZXMgZnJvbQogICBVVEYtOCBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcgaWYgdGhlIGVuY29kaW5nIGlzIG5vdCBzcGVjaWZpZWQuIEl0IG5vdwotICBhbHNvIG9wZW5zIFhNTCBmaWxlcyBmb3IgdGhlIHBhcnNlciBpbiBiaW5hcnkgbW9kZSBpbnN0ZWFkIG9mIHRoZSB0ZXh0IG1vZGUgdG8KLSAgYXZvaWQgZW5jb2RpbmcgaXNzdWVzLgotCi0tIElzc3VlICMxMjQ1MTogZG9jdGVzdC5kZWJ1Z19zY3JpcHQoKSBkb2Vzbid0IGNyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlIGFueW1vcmUKKyAgYWxzbyBvcGVucyBYTUwgZmlsZXMgZm9yIHRoZSBwYXJzZXIgaW4gYmluYXJ5IG1vZGUgaW5zdGVhZCBvZiB0aGUgdGV4dCBtb2RlCiAgIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KIAotLSBJc3N1ZSAjMTI0NTE6IHB5ZG9jLnN5bm9wc2lzKCkgbm93IHJlYWRzIHRoZSBlbmNvZGluZyBjb29raWUgaWYgYXZhaWxhYmxlLCB0bwotICByZWFkIHRoZSBQeXRob24gbW9kdWxlIGZyb20gdGhlIHJpZ2h0IGVuY29kaW5nLgorLSBJc3N1ZSAjMTI0NTE6IGRvY3Rlc3QuZGVidWdfc2NyaXB0KCkgZG9lc24ndCBjcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZQorICBhbnltb3JlIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KKworLSBJc3N1ZSAjMTI0NTE6IHB5ZG9jLnN5bm9wc2lzKCkgbm93IHJlYWRzIHRoZSBlbmNvZGluZyBjb29raWUgaWYgYXZhaWxhYmxlLAorICB0byByZWFkIHRoZSBQeXRob24gc2NyaXB0IGZyb20gdGhlIHJpZ2h0IGVuY29kaW5nLgogCiAtIElzc3VlICMxMjQ1MTogZGlzdHV0aWxzIG5vdyBvcGVucyB0aGUgc2V0dXAgc2NyaXB0IGluIGJpbmFyeSBtb2RlIHRvIHJlYWQgdGhlCiAgIGVuY29kaW5nIGNvb2tpZSwgaW5zdGVhZCBvZiBvcGVuaW5nIGl0IGluIFVURi04LgpAQCAtMjEzNCwxNCArMzk1NiwzMiBAQAogICBzdGlsbCBwb3NzaWJsZSB0byBnbG9iYWxseSBvdmVycmlkZSB0aGUgZGVmYXVsdCBieSBzZXR0aW5nCiAgIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBiZWZvcmUgbGF1bmNoaW5nIHRoZSBpbnRlcnByZXRlcjsgaXRzIHZhbHVlIG11c3QgYmUKICAgZ3JlYXRlciBvciBlcXVhbCB0byB0aGUgZGVmYXVsdCB2YWx1ZSwgdGhlIHZhbHVlIHdpdGggd2hpY2ggdGhlIGludGVycHJldGVyCi0gIHdhcyBidWlsdC4KKyAgd2FzIGJ1aWx0LiAgQWxzbywgaW1wbGVtZW50IHRoZSBzYW1lIGhhbmRsaW5nIGluIHBhY2thZ2luZy4KKworLSBJc3N1ZSAjMTI0MjI6IEluIHRoZSBjb3B5IG1vZHVsZSwgZG9uJ3Qgc3RvcmUgb2JqZWN0cyB0aGF0IGFyZSB0aGVpciBvd24gY29weQorICBpbiB0aGUgbWVtbyBkaWN0LgorCistIElzc3VlICMxMjMwMzogQWRkIHNpZ3dhaXRpbmZvKCkgYW5kIHNpZ3RpbWVkd2FpdCgpIHRvIHRoZSBzaWduYWwgbW9kdWxlLgorCistIElzc3VlICMxMjQwNDogUmVtb3ZlIEM4OSBpbmNvbXBhdGlibGUgY29kZSBmcm9tIG1tYXAgbW9kdWxlLiBQYXRjaCBieSBBa2lyYQorICBLaXRhZGEuCisKKy0gSXNzdWUgIzE4NzQ6IGVtYWlsIG5vdyBkZXRlY3RzIGFuZCByZXBvcnRzIGFzIGEgZGVmZWN0IHRoZSBwcmVzZW5jZSBvZgorICBhbnkgQ1RFIG90aGVyIHRoYW4gN2JpdCwgOGJpdCwgb3IgYmluYXJ5IG9uIGEgbXVsdGlwYXJ0LgogCiAtIElzc3VlICMxMjM4MzogRml4IHN1YnByb2Nlc3MgbW9kdWxlIHdpdGggZW52PXt9OiBkb24ndCBjb3B5IHRoZSBlbnZpcm9ubWVudAogICB2YXJpYWJsZXMsIHN0YXJ0IHdpdGggYW4gZW1wdHkgZW52aXJvbm1lbnQuCiAKLS0gSXNzdWUgIzExNTg0OiBlbWFpbC5oZWFkZXIuZGVjb2RlX2hlYWRlciBubyBsb25nZXIgZmFpbHMgaWYgdGhlIGhlYWRlciBwYXNzZWQKLSAgdG8gaXQgaXMgYSBIZWFkZXIgb2JqZWN0LCBhbmQgSGVhZGVyL21ha2VfaGVhZGVyIG5vIGxvbmdlciBmYWlsIGlmIGdpdmVuCi0gIGJpbmFyeSB1bmtub3duLThiaXQgaW5wdXQuCistIElzc3VlICMxMTYzNzogRml4IHN1cHBvcnQgZm9yIGltcG9ydGluZyBwYWNrYWdpbmcgc2V0dXAgaG9va3MgZnJvbSB0aGUKKyAgcHJvamVjdCBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzY3NzE6IE1vdmVkIHRoZSBjdXJzZXMud3JhcHBlciBmdW5jdGlvbiBmcm9tIHRoZSBzaW5nbGUtZnVuY3Rpb24KKyAgd3JhcHBlciBtb2R1bGUgaW50byBfX2luaXRfXywgZWxpbWluYXRpbmcgdGhlIG1vZHVsZS4gIFNpbmNlIF9faW5pdF9fIHdhcworICBhbHJlYWR5IGltcG9ydGluZyB0aGUgZnVuY3Rpb24gdG8gY3Vyc2VzLndyYXBwZXIsIHRoZXJlIGlzIG5vIEFQSSBjaGFuZ2UuCisKKy0gSXNzdWUgIzExNTg0OiBlbWFpbC5oZWFkZXIuZGVjb2RlX2hlYWRlciBubyBsb25nZXIgZmFpbHMgaWYgdGhlIGhlYWRlcgorICBwYXNzZWQgdG8gaXQgaXMgYSBIZWFkZXIgb2JqZWN0LCBhbmQgSGVhZGVyL21ha2VfaGVhZGVyIG5vIGxvbmdlciBmYWlsCisgIGlmIGdpdmVuIGJpbmFyeSB1bmtub3duLThiaXQgaW5wdXQuCiAKIC0gSXNzdWUgIzExNzAwOiBtYWlsYm94IHByb3h5IG9iamVjdCBjbG9zZSBtZXRob2RzIGNhbiBub3cgYmUgY2FsbGVkIG11bHRpcGxlCiAgIHRpbWVzIHdpdGhvdXQgZXJyb3IuCkBAIC0yMTUyLDM1ICszOTkyLDEwNSBAQAogICBjb25uZWN0aW9uIGlmIGl0cyBnZXRyZXNwb25zZSgpIG1ldGhvZCBmYWlscyB3aXRoIGEgc29ja2V0IGVycm9yLiBQYXRjaAogICB3cml0dGVuIGJ5IEV6aW8gTWVsb3R0aS4KIAorLSBJc3N1ZSAjMTIyNDA6IEFsbG93IG11bHRpcGxlIHNldHVwIGhvb2tzIGluIHBhY2thZ2luZydzIHNldHVwLmNmZyBmaWxlcy4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgRXJpayBCcmF5LgorCiAtIElzc3VlICM5Mjg0OiBBbGxvdyBpbnNwZWN0LmZpbmRzb3VyY2UoKSB0byBmaW5kIHRoZSBzb3VyY2Ugb2YgZG9jdGVzdAogICBmdW5jdGlvbnMuCiAKKy0gSXNzdWUgIzExNTk1OiBGaXggYXNzb3J0ZWQgYnVncyBpbiBwYWNrYWdpbmcudXRpbC5jZmdfdG9fYXJncywgYQorICBjb21wYXRpYmlsaXR5IGhlbHBlciBmb3IgdGhlIGRpc3R1dGlscy1wYWNrYWdpbmcgdHJhbnNpdGlvbi4gIE9yaWdpbmFsIHBhdGNoCisgIGJ5IEVyaWsgQnJheS4KKworLSBJc3N1ZSAjMTIyODc6IEluIG9zc2F1ZGlvZGV2LCBjaGVjayB0aGF0IHRoZSBkZXZpY2UgaXNuJ3QgY2xvc2VkIGluIHNldmVyYWwKKyAgbWV0aG9kcy4KKwogLSBJc3N1ZSAjMTIwMDk6IEZpeGVkIHJlZ3Jlc3Npb24gaW4gbmV0cmMgZmlsZSBjb21tZW50IGhhbmRsaW5nLgogCistIElzc3VlICMxMjI0NjogV2FybiBhbmQgZmFpbCB3aGVuIHRyeWluZyB0byBpbnN0YWxsIGEgdGhpcmQtcGFydHkgcHJvamVjdCBmcm9tCisgIGFuIHVuaW5zdGFsbGVkIFB5dGhvbiAoYnVpbHQgaW4gYSBzb3VyY2UgY2hlY2tvdXQpLiAgT3JpZ2luYWwgcGF0Y2ggYnkKKyAgVHNoZXBhbmcgTGVraG9ua2hvYmUuCisKIC0gSXNzdWUgIzEwNjk0OiB6aXBmaWxlIG5vdyBpZ25vcmVzIGdhcmJhZ2UgYXQgdGhlIGVuZCBvZiBhIHppcGZpbGUuCiAKIC0gSXNzdWUgIzEyMjgzOiBGaXhlZCByZWdyZXNzaW9uIGluIHNtdHBsaWIgcXVvdGluZyBvZiBsZWFkaW5nIGRvdHMgaW4gREFUQS4KIAorLSBJc3N1ZSAjMTA0MjQ6IEFyZ3BhcnNlIG5vdyBpbmNsdWRlcyB0aGUgbmFtZXMgb2YgdGhlIG1pc3NpbmcgcmVxdWlyZWQKKyAgYXJndW1lbnRzIGluIHRoZSBtaXNzaW5nIGFyZ3VtZW50cyBlcnJvciBtZXNzYWdlLgorCiAtIElzc3VlICMxMjE2ODogU3lzTG9nSGFuZGxlciBub3cgYWxsb3dzIE5VTCB0ZXJtaW5hdGlvbiB0byBiZSBjb250cm9sbGVkIHVzaW5nCiAgIGEgbmV3ICdhcHBlbmRfbnVsJyBhdHRyaWJ1dGUgb24gdGhlIGhhbmRsZXIuCiAKIC0gSXNzdWUgIzExNTgzOiBTcGVlZCB1cCBvcy5wYXRoLmlzZGlyIG9uIFdpbmRvd3MgYnkgdXNpbmcgR2V0RmlsZUF0dHJpYnV0ZXMKICAgaW5zdGVhZCBvZiBvcy5zdGF0LgogCistIElzc3VlICMxMjAyMTogTWFrZSBtbWFwJ3MgcmVhZCgpIG1ldGhvZCBhcmd1bWVudCBvcHRpb25hbC4gUGF0Y2ggYnkgUGV0cmkKKyAgTGVodGluZW4uCisKKy0gSXNzdWUgIzkyMDU6IGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yIG5vdyBkZXRlY3RzIGtpbGxlZAorICBjaGlsZHJlbiBhbmQgcmFpc2VzIEJyb2tlblByb2Nlc3NQb29sIGluIHN1Y2ggYSBzaXR1YXRpb24uICBQcmV2aW91c2x5IGl0CisgIHdvdWxkIHJlbGlhYmx5IGZyZWV6ZS9kZWFkbG9jay4KKworLSBJc3N1ZSAjMTIwNDA6IEV4cG9zZSBhIG5ldyBhdHRyaWJ1dGUgYGBzZW50aW5lbGBgIG9uIGluc3RhbmNlcyBvZgorICBgYG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzYGAuICBBbHNvLCBmaXggUHJvY2Vzcy5qb2luKCkgdG8gbm90IHVzZSBwb2xsaW5nCisgIGFueW1vcmUsIHdoZW4gZ2l2ZW4gYSB0aW1lb3V0LgorCistIElzc3VlICMxMTg5MzogUmVtb3ZlIG9ic29sZXRlIGludGVybmFsIHdyYXBwZXIgY2xhc3MgYGBTU0xGYWtlRmlsZWBgIGluIHRoZQorICBzbXRwbGliIG1vZHVsZS4gIFBhdGNoIGJ5IENhdGFsaW4gSWFjb2IuCisKKy0gSXNzdWUgIzEyMDgwOiBGaXggYSBEZWNpbWFsLnBvd2VyKCkgY2FzZSB0aGF0IHRvb2sgYW4gdW5yZWFzb25hYmx5IGxvbmcgdGltZQorICB0byBjb21wdXRlLgorCistIElzc3VlICMxMjIyMTogUmVtb3ZlIF9fdmVyc2lvbl9fIGF0dHJpYnV0ZXMgZnJvbSBweWV4cGF0LCBwaWNrbGUsIHRhcmZpbGUsCisgIHB5ZG9jLCB0a2ludGVyLCBhbmQgeG1sLnBhcnNlcnMuZXhwYXQuIFRoaXMgd2VyZSB1c2VsZXNzIHZlcnNpb24gY29uc3RhbnRzCisgIGxlZnQgb3ZlciBmcm9tIHRoZSBNZXJjdXJpYWwgdHJhbnNpdGlvbgorCiAtIE5hbWVkIHR1cGxlcyBub3cgd29yayBjb3JyZWN0bHkgd2l0aCB2YXJzKCkuCiAKIC0gSXNzdWUgIzEyMDg1OiBGaXggYW4gYXR0cmlidXRlIGVycm9yIGluIHN1YnByb2Nlc3MuUG9wZW4gZGVzdHJ1Y3RvciBpZiB0aGUKICAgY29uc3RydWN0b3IgaGFzIGZhaWxlZCwgZS5nLiBiZWNhdXNlIG9mIGFuIHVuZGVjbGFyZWQga2V5d29yZCBhcmd1bWVudC4gUGF0Y2gKICAgd3JpdHRlbiBieSBPbGVnIE9zaG15YW4uCiAKLS0gSXNzdWUgIzk4NTA2NDogTWFrZSBwbGlzdGxpYiBtb3JlIHJlc2lsaWVudCB0byBmYXVsdHkgaW5wdXQgcGxpc3RzLiAgUGF0Y2ggYnkKLSAgTWhlciBNb3ZzaXN5YW4uCistIElzc3VlICMxMjAyODogTWFrZSB0aHJlYWRpbmcuX2dldF9pZGVudCgpIHB1YmxpYywgcmVuYW1lIGl0IHRvCisgIHRocmVhZGluZy5nZXRfaWRlbnQoKSBhbmQgZG9jdW1lbnQgaXQuIFRoaXMgZnVuY3Rpb24gd2FzIGFscmVhZHkgdXNlZCB1c2luZworICBfdGhyZWFkLmdldF9pZGVudCgpLgorCistIElzc3VlICMxMjE3MTogSW5jcmVtZW50YWxFbmNvZGVyLnJlc2V0KCkgb2YgQ0pLIGNvZGVjcyAobXVsdGlieXRlY29kZWMpIGNhbGxzCisgIGVuY3Jlc2V0KCkgaW5zdGVhZCBvZiBkZWNyZXNldCgpLgorCistIElzc3VlICMxMjIxODogUmVtb3ZlZCB3c2dpcmVmLmVnZy1pbmZvLgorCistIElzc3VlICMxMjE5NjogQWRkIHBpcGUyKCkgdG8gdGhlIG9zIG1vZHVsZS4KKworLSBJc3N1ZSAjOTg1MDY0OiBNYWtlIHBsaXN0bGliIG1vcmUgcmVzaWxpZW50IHRvIGZhdWx0eSBpbnB1dCBwbGlzdHMuCisgIFBhdGNoIGJ5IE1oZXIgTW92c2lzeWFuLgorCistIElzc3VlICMxNjI1OiBCWjJGaWxlIGFuZCBiejIuZGVjb21wcmVzcygpIG5vdyBzdXBwb3J0IG11bHRpLXN0cmVhbSBmaWxlcy4KKyAgSW5pdGlhbCBwYXRjaCBieSBOaXIgQWlkZXMuCisKKy0gSXNzdWUgIzEyMTc1OiBCdWZmZXJlZFJlYWRlci5yZWFkKC0xKSBub3cgY2FsbHMgcmF3LnJlYWRhbGwoKSBpZiBhdmFpbGFibGUuCisKKy0gSXNzdWUgIzEyMTc1OiBGaWxlSU8ucmVhZGFsbCgpIG5vdyBvbmx5IHJlYWRzIHRoZSBmaWxlIHBvc2l0aW9uIGFuZCBzaXplCisgIG9uY2UuCiAKIC0gSXNzdWUgIzEyMTc1OiBSYXdJT0Jhc2UucmVhZGFsbCgpIG5vdyByZXR1cm5zIE5vbmUgaWYgcmVhZCgpIHJldHVybnMgTm9uZS4KIAogLSBJc3N1ZSAjMTIxNzU6IEZpbGVJTy5yZWFkYWxsKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IgaW5zdGVhZCBvZiBhbiBJT0Vycm9yCiAgIGlmIHRoZSBmaWxlIGlzIGNsb3NlZC4KIAorLSBJc3N1ZSAjMTExMDk6IE5ldyBzZXJ2aWNlX2FjdGlvbiBtZXRob2QgZm9yIEJhc2VTZXJ2ZXIsIHVzZWQgYnkgRm9ya2luZ01peGluCisgIGNsYXNzIGZvciBjbGVhbnVwLiBJbml0aWFsIFBhdGNoIGJ5IEp1c3RpbiBXYXJrZW50aW4uCisKKy0gSXNzdWUgIzEyMDQ1OiBBdm9pZCBkdXBsaWNhdGUgZXhlY3V0aW9uIG9mIGNvbW1hbmQgaW4KKyAgY3R5cGVzLnV0aWwuX2dldF9zb25hbWUoKS4gIFBhdGNoIGJ5IFNpamluIEpvc2VwaC4KKworLSBJc3N1ZSAjMTA4MTg6IFJlbW92ZSB0aGUgVGsgR1VJIGFuZCB0aGUgc2VydmUoKSBmdW5jdGlvbiBvZiB0aGUgcHlkb2MgbW9kdWxlLAorICBweWRvYyAtZyBoYXMgYmVlbiBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjIgYW5kIGl0IGhhcyBhIG5ldyBlbmhhbmNlZCB3ZWIKKyAgc2VydmVyLgorCistIElzc3VlICMxNDQxNTMwOiBJbiBpbWFwbGliLCByZWFkIHRoZSBkYXRhIGluIG9uZSBjaHVuayB0byBzcGVlZCB1cCBsYXJnZQorICByZWFkcyBhbmQgc2ltcGxpZnkgY29kZS4KKwogLSBJc3N1ZSAjMTIwNzA6IEZpeCB0aGUgTWFrZWZpbGUgcGFyc2VyIG9mIHRoZSBzeXNjb25maWcgbW9kdWxlIHRvIGhhbmRsZQogICBjb3JyZWN0bHkgcmVmZXJlbmNlcyB0byAiYm9ndXMgdmFyaWFibGUiIChlLmcuICJwcmVmaXg9JC9vcHQvcHl0aG9uIikuCiAKQEAgLTIxODgsODEgKzQwOTgsMzAgQEAKICAgdGhlaXIgZW5jb2RlKCkgbWV0aG9kIGFueW1vcmUsIGJ1dCBjb250aW51ZSB0byBjYWxsIHRoZSByZXNldCgpIG1ldGhvZCBpZiB0aGUKICAgZmluYWwgYXJndW1lbnQgaXMgVHJ1ZS4KIAotLSBJc3N1ZSAjNTcxNTogSW4gc29ja2V0c2VydmVyLCBjbG9zZSB0aGUgc2VydmVyIHNvY2tldCBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4KKy0gSXNzdWUgIzEyMDQ5OiBBZGQgUkFORF9ieXRlcygpIGFuZCBSQU5EX3BzZXVkb19ieXRlcygpIGZ1bmN0aW9ucyB0byB0aGUgc3NsCisgIG1vZHVsZS4KIAotLSBDb3JyZWN0IGxvb2t1cCBvZiBfX2Rpcl9fIG9uIG9iamVjdHMuIEFtb25nIG90aGVyIHRoaW5ncywgdGhpcyBjYXVzZXMgZXJyb3JzCi0gIGJlc2lkZXMgQXR0cmlidXRlRXJyb3IgZm91bmQgb24gbG9va3VwIHRvIGJlIHByb3BhZ2F0ZWQuCistIElzc3VlICM2NTAxOiBvcy5kZXZpY2VfZW5jb2RpbmcoKSByZXR1cm5zIE5vbmUgb24gV2luZG93cyBpZiB0aGUgYXBwbGljYXRpb24KKyAgaGFzIG5vIGNvbnNvbGUuCisKKy0gSXNzdWUgIzEyMTA1OiBBZGQgT19DTE9FWEVDIHRvIHRoZSBvcyBtb2R1bGUuCisKKy0gSXNzdWUgIzEyMDc5OiBEZWNpbWFsKCdJbmZpbml0eScpLmZtYShEZWNpbWFsKCcwJyksICgzLjkxMjI0MzE4MTI2Nzg2ZSsxOSswaikpCisgIG5vdyByYWlzZXMgVHlwZUVycm9yIChyZWZsZWN0aW5nIHRoZSBpbnZhbGlkIHR5cGUgb2YgdGhlIDNyZCBhcmd1bWVudCkgcmF0aGVyCisgIHRoYW4gRGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLgogCiAtIElzc3VlICMxMjEyNDogemlwaW1wb3J0IGRvZXNuJ3Qga2VlcCBhIHJlZmVyZW5jZSB0byB6bGliLmRlY29tcHJlc3MoKSBhbnltb3JlCiAgIHRvIGJlIGFibGUgdG8gdW5sb2FkIHRoZSBtb2R1bGUuCiAKKy0gQWRkIHRoZSBwYWNrYWdpbmcgbW9kdWxlLCBhbiBpbXByb3ZlZCBmb3JrIG9mIGRpc3R1dGlscyAoYWxzbyBrbm93biBhcworICBkaXN0dXRpbHMyKS4KKwogLSBJc3N1ZSAjMTIwNjU6IGNvbm5lY3RfZXgoKSBvbiBhbiBTU0wgc29ja2V0IG5vdyByZXR1cm5zIHRoZSBvcmlnaW5hbCBlcnJubwogICB3aGVuIHRoZSBzb2NrZXQncyB0aW1lb3V0IGV4cGlyZXMgKGl0IHVzZWQgdG8gcmV0dXJuIE5vbmUpLgogCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTI0MDQ6IFJlbW92ZSBDODkgaW5jb21wYXRpYmxlIGNvZGUgZnJvbSBtbWFwIG1vZHVsZS4gUGF0Y2ggYnkgQWtpcmEKLSAgS2l0YWRhLgotCi0tIElzc3VlICMxMjIyMTogUmVwbGFjZSBweWV4cGF0Ll9fdmVyc2lvbl9fIHdpdGggdGhlIFB5dGhvbiB2ZXJzaW9uLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjODc0NjogQ29ycmVjdCBmYXVsdHkgY29uZmlndXJlIGNoZWNrcyBzbyB0aGF0IG9zLmNoZmxhZ3MoKSBhbmQKLSAgb3MubGNoZmxhZ3MoKSBhcmUgb25jZSBhZ2FpbiBidWlsdCBvbiBzeXN0ZW1zIHRoYXQgc3VwcG9ydCB0aGVzZSBmdW5jdGlvbnMKLSAgKCpCU0QgYW5kIE9TIFgpLiAgQWxzbyBhZGQgbmV3IHN0YXQgZmlsZSBmbGFncyBmb3IgT1MgWCAoVUZfSElEREVOIGFuZAotICBVRl9DT01QUkVTU0VEKS4KLQotLSBJc3N1ZSAjMTEyMTc6IEZvciA2NC1iaXQvMzItYml0IE1hYyBPUyBYIHVuaXZlcnNhbCBmcmFtZXdvcmsgYnVpbGRzLCBlbnN1cmUKLSAgIm1ha2UgaW5zdGFsbCIgY3JlYXRlcyBzeW1saW5rcyBpbiAtLXByZWZpeCBiaW4gZm9yIHRoZSAiLTMyIiBmaWxlcyBpbiB0aGUKLSAgZnJhbWV3b3JrIGJpbiBkaXJlY3RvcnkgbGlrZSB0aGUgaW5zdGFsbGVyIGRvZXMuCi0KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzEyNDA3OiBFeHBsaWNpdGx5IHNraXAgdGVzdF9jYXBpLkVtYmVkZGluZ1Rlc3QgdW5kZXIgV2luZG93cy4KLQotLSBJc3N1ZSAjMTI0MDA6IHJlZ3J0ZXN0IC1XIGRvZXNuJ3QgcmVydW4gdGhlIHRlc3RzIHR3aWNlIGFueW1vcmUsIGJ1dCBjYXB0dXJlcwotICB0aGUgb3V0cHV0IGFuZCBkaXNwbGF5cyBpdCBvbiBmYWlsdXJlIGluc3RlYWQuIHJlZ3J0ZXN0IC12IGRvZXNuJ3QgcHJpbnQgdGhlCi0gIGVycm9yIHR3aWNlIGFueW1vcmUgaWYgdGhlcmUgaXMgb25seSBvbmUgZXJyb3IuCi0KLS0gSXNzdWUgIzEyMTQxOiBJbnN0YWxsIGEgY29weSBvZiB0ZW1wbGF0ZSBDIG1vZHVsZSBmaWxlIHNvIHRoYXQgdGVzdF9idWlsZF9leHQKLSAgb2YgdGVzdF9kaXN0dXRpbHMgaXMgbm8gbG9uZ2VyIHNpbGVudGx5IHNraXBwZWQgd2hlbiBydW4gb3V0c2lkZSBvZiBhIGJ1aWxkCi0gIGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjODc0NjogQWRkIGFkZGl0aW9uYWwgdGVzdHMgZm9yIG9zLmNoZmxhZ3MoKSBhbmQgb3MubGNoZmxhZ3MoKS4gIFBhdGNoCi0gIGJ5IEdhcnJldHQgQ29vcGVyLgotCi0tIElzc3VlICMxMDczNjogRml4IHRlc3RfdHRrIHRlc3Rfd2lkZ2V0cyBmYWlsdXJlcyB3aXRoIENvY29hIFRrIDguNS45IG9uIE1hYwotICBPUyBYLiAgKFBhdGNoIGJ5IFJvbmFsZCBPdXNzb3JlbikKLQotLSBJc3N1ZSAjMTIwNTc6IEFkZCB0ZXN0cyBmb3IgSVNPIDIwMjIgY29kZWNzIChpc28yMDIyX2pwLCBpc28yMDIyX2pwXzIsCi0gIGlzbzIwMjJfa3IpLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4xIHJlbGVhc2UgY2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAxNS1NYXktMjAxMSoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEyMDYwOiBVc2Ugc2lnX2F0b21pY190IHR5cGUgYW5kIHZvbGF0aWxlIGtleXdvcmQgaW4gdGhlIHNpZ25hbAotICBtb2R1bGUuIFBhdGNoIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIElzc3VlICMxMjA0NDogRml4ZWQgc3VicHJvY2Vzcy5Qb3BlbiB3aGVuIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIgdG8KLSAgd2FpdCBmb3IgdGhlIHByb2Nlc3MgdG8gZW5kIHdoZW4gZXhpdGluZyB0aGUgY29udGV4dCB0byBhdm9pZCB1bmludGVudGlvbmFsbHkKLSAgbGVhdmluZyB6b21iaWUgcHJvY2Vzc2VzIGFyb3VuZC4KLQotLSBJc3N1ZSAjMTE5NTogRml4IGlucHV0KCkgaWYgaXQgaXMgaW50ZXJydXB0ZWQgYnkgQ1RSTCtkIGFuZCB0aGVuIENUUkwrYywKLSAgY2xlYXIgdGhlIGVuZC1vZi1maWxlIGluZGljYXRvciBhZnRlciBDVFJMK2QuCi0KLUxpYnJhcnkKLS0tLS0tLS0KKy0gSXNzdWUgIzg4MDk6IFRoZSBTTVRQX1NTTCBjb25zdHJ1Y3RvciBhbmQgU01UUC5zdGFydHRscygpIG5vdyBzdXBwb3J0CisgIHBhc3NpbmcgYSBgYGNvbnRleHRgYCBhcmd1bWVudCBwb2ludGluZyB0byBhbiBzc2wuU1NMQ29udGV4dCBpbnN0YW5jZS4KKyAgUGF0Y2ggYnkgS2FzdW4gSGVyYXRoLgogCiAtIElzc3VlICMxMTA4ODogZG9uJ3QgY3Jhc2ggd2hlbiB1c2luZyBGNSB0byBydW4gYSBzY3JpcHQgaW4gSURMRSBvbiBNYWNPU1gKICAgd2l0aCBUayA4LjUuCkBAIC0yMjcwLDggKzQxMjksNiBAQAogLSBJc3N1ZSAjOTUxNjogSXNzdWUgIzk1MTY6IGF2b2lkIGVycm9ycyBpbiBzeXNjb25maWcgd2hlbiBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQKICAgaXMgc2V0IGluIHNoZWxsLgogCi0tIElzc3VlICMxMjAxMjogc3NsLlBST1RPQ09MX1NTTHYyIGJlY29tZXMgb3B0aW9uYWwuCi0KIC0gSXNzdWUgIzg2NTA6IE1ha2UgemxpYiBtb2R1bGUgNjQtYml0IGNsZWFuLiBjb21wcmVzcygpLCBkZWNvbXByZXNzKCkgYW5kCiAgIHRoZWlyIGluY3JlbWVudGFsIGNvdW50ZXJwYXJ0cyBub3cgcmFpc2UgT3ZlcmZsb3dFcnJvciBpZiBnaXZlbiBhbiBpbnB1dAogICBsYXJnZXIgdGhhbiA0R0IsIGluc3RlYWQgb2Ygc2lsZW50bHkgdHJ1bmNhdGluZyB0aGUgaW5wdXQgYW5kIHJldHVybmluZwpAQCAtMjI4NSwxMiArNDE0MiwxNiBAQAogICB3cml0aW5nLCB0aGVuIHNlZWtpbmcgYmVmb3JlIHRoZSBwcmV2aW91cyB3cml0ZSBidXQgc3RpbGwgd2l0aGluIGJ1ZmZlcmVkCiAgIGRhdGEsIGFuZCB3cml0aW5nIGFnYWluKS4KIAorLSBJc3N1ZSAjOTk3MTogV3JpdGUgYW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIG9mIEJ1ZmZlcmVkUmVhZGVyLnJlYWRpbnRvKCkuCisgIFBhdGNoIGJ5IEpvaG4gTydDb25ub3IuCisKIC0gSXNzdWUgIzEwMjg6IFRrIHJldHVybnMgaW52YWxpZCBVbmljb2RlIG51bGwgaW4gJUE6IFVuaWNvZGVEZWNvZGVFcnJvci4KICAgV2l0aCBUayA8IDguNSBfdGtpbnRlci5jOlB5dGhvbkNtZCgpIHJhaXNlZCBVbmljb2RlRGVjb2RlRXJyb3IsIGNhdXNlZAogICBJRExFIHRvIGV4aXQuICBDb252ZXJ0ZWQgdG8gdmFsaWQgVW5pY29kZSBudWxsIGluIFB5dGhvbkNtZCgpLgogCi0tIElzc3VlICMxMTE2OTogY29tcGlsZWFsbCBtb2R1bGUgdXNlcyByZXByKCkgdG8gZm9ybWF0IGZpbGVuYW1lcyBhbmQgcGF0aHMgdG8KLSAgZXNjYXBlIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzIGFuZCBzaG93IHNwYWNlcy4KKy0gSXNzdWUgIzExNzk5OiB1cmxsaWIucmVxdWVzdCBBdXRoZW50aWNhdGlvbiBIYW5kbGVycyB3aWxsIHJhaXNlIGEgVmFsdWVFcnJvcgorICB3aGVuIHByZXNlbnRlZCB3aXRoIGFuIHVuc3VwcG9ydGVkIEF1dGhlbnRpY2F0aW9uIFNjaGVtZS4gUGF0Y2ggY29udHJpYnV0ZWQKKyAgYnkgWXV2YWwgR3JlZW5maWVsZC4KIAogLSBJc3N1ZSAjMTA0MTksICM2MDExOiBidWlsZF9zY3JpcHRzIGNvbW1hbmQgb2YgZGlzdHV0aWxzIGhhbmRsZXMgY29ycmVjdGx5CiAgIG5vbi1BU0NJSSBwYXRoIChwYXRoIHRvIHRoZSBQeXRob24gZXhlY3V0YWJsZSkuIE9wZW4gYW5kIHdyaXRlIHRoZSBzY3JpcHQgaW4KQEAgLTIzMDAsMTMzICs0MTYxLDY4IEBACiAtIElzc3VlICM4NDk4OiBJbiBzb2NrZXQuYWNjZXB0KCksIGFsbG93IHRvIHNwZWNpZnkgMCBhcyBhIGJhY2tsb2cgdmFsdWUgaW4KICAgb3JkZXIgdG8gYWNjZXB0IGV4YWN0bHkgb25lIGNvbm5lY3Rpb24uICBQYXRjaCBieSBEYW5pZWwgRXZlcnMuCiAKKy0gSXNzdWUgIzEyMDExOiBzaWduYWwuc2lnbmFsKCkgYW5kIHNpZ25hbC5zaWdpbnRlcnJ1cHQoKSByYWlzZSBhbiBPU0Vycm9yLAorICBpbnN0ZWFkIG9mIGEgUnVudGltZUVycm9yOiBPU0Vycm9yIGhhcyBhbiBlcnJubyBhdHRyaWJ1dGUuCisKKy0gSXNzdWUgIzM3MDk6IGFkZCBhIGZsdXNoX2hlYWRlcnMgbWV0aG9kIHRvIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIsIHdoaWNoCisgIG1hbmFnZXMgdGhlIHNlbmRpbmcgb2YgaGVhZGVycyB0byBvdXRwdXQgc3RyZWFtIGFuZCBmbHVzaGluZyB0aGUgaW50ZXJuYWwKKyAgaGVhZGVycyBidWZmZXIuIFBhdGNoIGNvbnRyaWJ1dGlvbiBieSBBbmRyZXcgU2NoYWFmCisKKy0gSXNzdWUgIzExNzQzOiBSZXdyaXRlIG11bHRpcHJvY2Vzc2luZyBjb25uZWN0aW9uIGNsYXNzZXMgaW4gcHVyZSBQeXRob24uCisKIC0gSXNzdWUgIzExMTY0OiBTdG9wIHRyeWluZyB0byB1c2UgX3htbHBsdXMgaW4gdGhlIHhtbCBtb2R1bGUuCiAKLUJ1aWxkCi0tLS0tLQorLSBJc3N1ZSAjMTE4ODg6IEFkZCBsb2cyIGZ1bmN0aW9uIHRvIG1hdGggbW9kdWxlLiBQYXRjaCB3cml0dGVuIGJ5IE1hcmsKKyAgRGlja2luc29uLgogCi0tIElzc3VlICMxMTM0NzogVXNlIC0tbm8tYXMtbmVlZGVkIHdoZW4gbGlua2luZyBsaWJweXRob24zLnNvLgorLSBJc3N1ZSAjMTIwMTI6IHNzbC5QUk9UT0NPTF9TU0x2MiBiZWNvbWVzIG9wdGlvbmFsLgogCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KKy0gSXNzdWUgIzg0MDc6IFRoZSBzaWduYWwgaGFuZGxlciB3cml0ZXMgdGhlIHNpZ25hbCBudW1iZXIgYXMgYSBzaW5nbGUgYnl0ZQorICBpbnN0ZWFkIG9mIGEgbnVsIGJ5dGUgaW50byB0aGUgd2FrZXVwIGZpbGUgZGVzY3JpcHRvci4gU28gaXQgaXMgcG9zc2libGUgdG8KKyAgd2FpdCBtb3JlIHRoYW4gb25lIHNpZ25hbCBhbmQga25vdyB3aGljaCBzaWduYWxzIHdlcmUgcmFpc2VkLgogCi0tIElzc3VlICMxMTk5NjogbGlicHl0aG9uIChnZGIpLCByZXBsYWNlICJweS1idCIgY29tbWFuZCBieSAicHktYnQtZnVsbCIgYW5kCi0gIGFkZCBhIHNtYXJ0ZXIgInB5LWJ0IiBjb21tYW5kIHByaW50aW5nIGEgY2xhc3NpYyBQeXRob24gdHJhY2ViYWNrLgorLSBJc3N1ZSAjODQwNzogQWRkIHB0aHJlYWRfa2lsbCgpLCBzaWdwZW5kaW5nKCkgYW5kIHNpZ3dhaXQoKSBmdW5jdGlvbnMgdG8gdGhlCisgIHNpZ25hbCBtb2R1bGUuCiAKLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxMjA5NjogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gdGVzdF90aHJlYWRpbmcudGVzdF93YWl0Zm9yKCkuIFBhdGNoCi0gIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIElzc3VlICMxMTYxNDogaW1wb3J0IF9faGVsbG9fXyBwcmludHMgIkhlbGxvIFdvcmxkISIuIFBhdGNoIHdyaXR0ZW4gYnkKLSAgQW5kcmVhcyBTdMO8aHJrLgotCi0tIElzc3VlICM1NzIzOiBJbXByb3ZlIGpzb24gdGVzdHMgdG8gYmUgZXhlY3V0ZWQgd2l0aCBhbmQgd2l0aG91dCBhY2NlbGVyYXRpb25zLgotCi0tIElzc3VlICMxMTkxMDogRml4IHRlc3RfaGVhcHEgdG8gc2tpcCB0aGUgQyB0ZXN0cyB3aGVuIF9oZWFwcSBpcyBtaXNzaW5nLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4xIGJldGEgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMDgtTWF5LTIwMTEqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxODU2OiBBdm9pZCBjcmFzaGVzIGFuZCBsb2NrdXBzIHdoZW4gZGFlbW9uIHRocmVhZHMgcnVuIHdoaWxlIHRoZQotICBpbnRlcnByZXRlciBpcyBzaHV0dGluZyBkb3duOyBpbnN0ZWFkLCB0aGVzZSB0aHJlYWRzIGFyZSBub3cga2lsbGVkIHdoZW4gdGhleQotICB0cnkgdG8gdGFrZSB0aGUgR0lMLgotCi0tIElzc3VlICM5NzU2OiBXaGVuIGNhbGxpbmcgYSBtZXRob2QgZGVzY3JpcHRvciBvciBhIHNsb3Qgd3JhcHBlciBkZXNjcmlwdG9yLAotICB0aGUgY2hlY2sgb2YgdGhlIG9iamVjdCB0eXBlIGRvZXNuJ3QgcmVhZCB0aGUgX19jbGFzc19fIGF0dHJpYnV0ZSBhbnltb3JlLgotICBGaXggYSBjcmFzaCBpZiBhIGNsYXNzIG92ZXJyaWRlIGl0cyBfX2NsYXNzX18gYXR0cmlidXRlIChlLmcuIGEgcHJveHkgb2YgdGhlCi0gIHN0ciB0eXBlKS4gUGF0Y2ggd3JpdHRlbiBieSBBbmRyZWFzIFN0w7xocmsuCi0KLS0gSXNzdWUgIzEwOTE0OiBJbml0aWFsaXplIGNvcnJlY3RseSB0aGUgZmlsZXN5c3RlbSBjb2RlYyB3aGVuIGNyZWF0aW5nIGEgbmV3Ci0gIHN1YmludGVycHJldGVyIHRvIGZpeCBhIGJvb3RzdHJhcCBpc3N1ZSB3aXRoIGNvZGVjcyBpbXBsZW1lbnRlZCBpbiBQeXRob24sIGFzCi0gIHRoZSBJU08tODg1OS0xNSBjb2RlYy4KLQotLSBJc3N1ZSAjMTA1MTc6IEFmdGVyIGZvcmsoKSwgcmVpbml0aWFsaXplIHRoZSBUTFMgdXNlZCBieSB0aGUgUHlHSUxTdGF0ZV8qCi0gIEFQSXMsIHRvIGF2b2lkIGEgY3Jhc2ggd2l0aCB0aGUgcHRocmVhZCBpbXBsZW1lbnRhdGlvbiBpbiBSSEVMIDUuICBQYXRjaCBieQotICBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzY3ODA6IGZpeCBzdGFydHMvZW5kc3dpdGggZXJyb3IgbWVzc2FnZSB0byBtZW50aW9uIHRoYXQgdHVwbGVzIGFyZQotICBhY2NlcHRlZCB0b28uCi0KLS0gSXNzdWUgIzUwNTc6IGZpeCBhIGJ1ZyBpbiB0aGUgcGVlcGhvbGVyIHRoYXQgbGVkIHRvIG5vbi1wb3J0YWJsZSBweWMgZmlsZXMKLSAgYmV0d2VlbiBuYXJyb3cgYW5kIHdpZGUgYnVpbGRzIHdoaWxlIG9wdGltaXppbmcgQklOQVJZX1NVQlNDUiBvbiBub24tQk1QIGNoYXJzCi0gIChlLmcuICJcVTAwMDEyMzQ1IlswXSkuCi0KLS0gSXNzdWUgIzExODQ1OiBGaXggdHlwbyBpbiByYW5nZW9iamVjdC5jIHRoYXQgY2F1c2VkIGEgY3Jhc2ggaW4KLSAgY29tcHV0ZV9zbGljZV9pbmRpY2VzLiAgUGF0Y2ggYnkgRGFuaWVsIFVyYmFuLgotCi0tIElzc3VlICMxMTY1MDogUHlPU19TdGRpb1JlYWRsaW5lKCkgcmV0cmllcyBmZ2V0cygpIGlmIGl0IHdhcyBpbnRlcnJ1cHRlZAotICAoRUlOVFIpLCBmb3IgZXhhbXBsZSBpZiB0aGUgcHJvZ3JhbSBpcyBzdG9wcGVkIHdpdGggQ1RSTCt6IG9uIE1hYyBPUyBYLiBQYXRjaAotICB3cml0dGVuIGJ5IENoYXJsZXMtRnJhbmNvaXMgTmF0YWxpLgotCi0tIElzc3VlICMxMTM5NTogaW8uRmlsZUlPKCkud3JpdGUoKSBjbGFtcHMgdGhlIGRhdGEgbGVuZ3RoIHRvIDMyLDc2NyBieXRlcyBvbgotICBXaW5kb3dzIGlmIHRoZSBmaWxlIGlzIGEgVFRZIHRvIHdvcmthcm91bmQgYSBXaW5kb3dzIGJ1Zy4gVGhlIFdpbmRvd3MgY29uc29sZQotICByZXR1cm5zIGFuIGVycm9yICgxMjogbm90IGVub3VnaCBzcGFjZSBlcnJvcikgb24gd3JpdGluZyBpbnRvIHN0ZG91dCBpZiBzdGRvdXQKLSAgbW9kZSBpcyBiaW5hcnkgYW5kIHRoZSBsZW5ndGggaXMgZ3JlYXRlciB0aGFuIDY2LDAwMCBieXRlcyAob3IgbGVzcywgZGVwZW5kaW5nCi0gIG9uIGhlYXAgdXNhZ2UpLgotCi0tIElzc3VlICMxMTMyMDogZml4IGJvZ3VzIG1lbW9yeSBtYW5hZ2VtZW50IGluIE1vZHVsZXMvZ2V0cGF0aC5jLCBsZWFkaW5nIHRvIGEKLSAgcG9zc2libGUgY3Jhc2ggd2hlbiBjYWxsaW5nIFB5X1NldFBhdGgoKS4KLQotLSBJc3N1ZSAjMTE1MTA6IEZpeGVkIG9wdGltaXplciBidWcgd2hpY2ggdHVybmVkICJhLGI9ezEsMX0iIGludG8gImEsYj0oMSwxKSIuCi0KLS0gSXNzdWUgIzExNDMyOiBBIGJ1ZyB3YXMgaW50cm9kdWNlZCBpbiBzdWJwcm9jZXNzLlBvcGVuIG9uIHBvc2l4IHN5c3RlbXMgd2l0aAotICAzLjIuMCB3aGVyZSB0aGUgc3Rkb3V0IG9yIHN0ZGVyciBmaWxlIGRlc2NyaXB0b3IgYmVpbmcgdGhlIHNhbWUgYXMgdGhlIHN0ZGluCi0gIGZpbGUgZGVzY3JpcHRvciB3b3VsZCByYWlzZSBhbiBleGNlcHRpb24uIHdlYmJyb3dzZXIub3BlbiB3b3VsZCBmYWlsLiBmaXhlZC4KLQotLSBJc3N1ZSAjMTE0NTA6IERvbid0IHRydW5jYXRlIGhnIHZlcnNpb24gaW5mbyBpbiBQeV9HZXRCdWlsZEluZm8oKSB3aGVuIHRoZXJlCi0gIGFyZSBtYW55IHRhZ3MgKGUuZy4gd2hlbiB1c2luZyBtcSkuICBQYXRjaCBieSBOYWRlZW0gVmF3ZGEuCi0KLS0gSXNzdWUgIzExMjQ2OiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVWIikgdG8gZGVjb2RlIHRoZSBieXRlIHN0cmluZyBmcm9tCi0gIFVURi04ICh3aXRoIHJlcGxhY2UgZXJyb3IgaGFuZGxlcikgaW5zdGVhZCBvZiBJU08tODg1OS0xIChpbiBzdHJpY3QgbW9kZSkuCi0gIFBhdGNoIHdyaXR0ZW4gYnkgUmF5IEFsbGVuLgotCi0tIElzc3VlICMxMTI4NjogUmFpc2UgYSBWYWx1ZUVycm9yIGZyb20gY2FsbGluZyBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlciB3aXRoIGEKLSAgYnVmZmVyIHN0cnVjdCBoYXZpbmcgYSBOVUxMIGRhdGEgcG9pbnRlci4KLQotLSBJc3N1ZSAjMTEyNzI6IE9uIFdpbmRvd3MsIGlucHV0KCkgc3RyaXBzICdccicgKGFuZCBub3Qgb25seSAnXG4nKSwgYW5kCi0gIHN5cy5zdGRpbiB1c2VzIHVuaXZlcnNhbCBuZXdsaW5lIChyZXBsYWNlICdcclxuJyBieSAnXG4nKS4KLQotLSBJc3N1ZSAjMTE4Mjg6IHN0YXJ0c3dpdGggYW5kIGVuZHN3aXRoIGRvbid0IGFjY2VwdCBOb25lIGFzIHNsaWNlIGluZGV4LiAgUGF0Y2gKLSAgYnkgVG9yc3RlbiBCZWNrZXIuCi0KLS0gSXNzdWUgIzEwODMwOiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCIlYyIpIGZvciBub24tQk1QIGNoYXJhY3RlcnMgb24KLSAgbmFycm93IGJ1aWxkLgotCi0tIENoZWNrIGZvciBOVUxMIHJlc3VsdCBpbiBQeVR5cGVfRnJvbVNwZWMuCi0KLS0gSXNzdWUgIzExMzg2OiBieXRlYXJyYXkucG9wKCkgbm93IHRocm93cyBJbmRleEVycm9yIHdoZW4gdGhlIGJ5dGVhcnJheSBpcwotICBlbXB0eSwgaW5zdGVhZCBvZiBPdmVyZmxvd0Vycm9yLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzExOTI3OiBTTVRQX1NTTCBub3cgdXNlcyBwb3J0IDQ2NSBieSBkZWZhdWx0IGFzIGRvY3VtZW50ZWQuICBQYXRjaCBieQotICBLYXN1biBIZXJhdGguCistIElzc3VlICMxMTkyNzogU01UUF9TU0wgbm93IHVzZXMgcG9ydCA0NjUgYnkgZGVmYXVsdCBhcyBkb2N1bWVudGVkLiAgUGF0Y2gKKyAgYnkgS2FzdW4gSGVyYXRoLgogCiAtIElzc3VlICMxMjAwMjogZnRwbGliJ3MgYWJvcnQoKSBtZXRob2QgcmFpc2VzIFR5cGVFcnJvci4KIAorLSBJc3N1ZSAjMTE5MTY6IEFkZCBhIG51bWJlciBvZiBNYWNPU1ggc3BlY2lmaWMgZGVmaW5pdGlvbnMgdG8gdGhlIGVycm5vIG1vZHVsZS4KKyAgUGF0Y2ggYnkgUGllcnJlIENhcnJpZXIuCisKIC0gSXNzdWUgIzExOTk5OiBmaXhlZCBzcG9yYWRpYyBzeW5jIGZhaWx1cmUgbWFpbGJveC5NYWlsZGlyIGR1ZSB0byBpdHMgdHJ5aW5nIHRvCiAgIGRldGVjdCBtdGltZSBjaGFuZ2VzIGJ5IGNvbXBhcmluZyB0byB0aGUgc3lzdGVtIGNsb2NrIGluc3RlYWQgb2YgdG8gdGhlCiAgIHByZXZpb3VzIHZhbHVlIG9mIHRoZSBtdGltZS4KIAorLSBJc3N1ZSAjMTEwNzI6IGFkZGVkIE1MU0QgY29tbWFuZCAoUkZDLTM2NTkpIHN1cHBvcnQgdG8gZnRwbGliLgorCistIElzc3VlICM4ODA4OiBUaGUgSU1BUDRfU1NMIGNvbnN0cnVjdG9yIG5vdyBhbGxvd3MgcGFzc2luZyBhbiBTU0xDb250ZXh0CisgIHBhcmFtZXRlciB0byBjb250cm9sIHBhcmFtZXRlcnMgb2YgdGhlIHNlY3VyZSBjaGFubmVsLiAgUGF0Y2ggYnkgU2lqaW4KKyAgSm9zZXBoLgorCiAtIG50cGF0aC5zYW1lZmlsZSBmYWlsZWQgdG8gbm90aWNlIHRoYXQgImEudHh0IiBhbmQgIkEuVFhUIiByZWZlciB0byB0aGUgc2FtZQogICBmaWxlIG9uIFdpbmRvd3MgWFAuIEFzIG5vdGljZWQgaW4gaXNzdWUgIzEwNjg0LgogCi0tIElzc3VlICMxMjAwMDogV2hlbiBhIFNTTCBjZXJ0aWZpY2F0ZSBoYXMgYSBzdWJqZWN0QWx0TmFtZSB3aXRob3V0IGFueSBkTlNOYW1lCi0gIGVudHJ5LCBzc2wubWF0Y2hfaG9zdG5hbWUoKSBzaG91bGQgdXNlIHRoZSBzdWJqZWN0J3MgY29tbW9uTmFtZS4gIFBhdGNoIGJ5Ci0gIE5pY29sYXMgQmFyZWlsLgorLSBJc3N1ZSAjMTIwMDA6IFdoZW4gYSBTU0wgY2VydGlmaWNhdGUgaGFzIGEgc3ViamVjdEFsdE5hbWUgd2l0aG91dCBhbnkKKyAgZE5TTmFtZSBlbnRyeSwgc3NsLm1hdGNoX2hvc3RuYW1lKCkgc2hvdWxkIHVzZSB0aGUgc3ViamVjdCdzIGNvbW1vbk5hbWUuCisgIFBhdGNoIGJ5IE5pY29sYXMgQmFyZWlsLgogCi0tIElzc3VlICMxMTY0Nzogb2JqZWN0cyBjcmVhdGVkIHVzaW5nIGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIgbm93IHN1cHBvcnQgbW9yZQotICB0aGFuIG9uZSBjYWxsIHRvIHRoZSBmdW5jdGlvbiB3aGVuIHVzZWQgYXMgYSBkZWNvcmF0b3IuIEluaXRpYWwgcGF0Y2ggYnkgWXNqCi0gIFJheS4KKy0gSXNzdWUgIzEwNzc1OiBhc3NlcnRSYWlzZXMsIGFzc2VydFJhaXNlc1JlZ2V4LCBhc3NlcnRXYXJucywgYW5kCisgIGFzc2VydFdhcm5zUmVnZXggbm93IGFjY2VwdCBhIGtleXdvcmQgYXJndW1lbnQgJ21zZycgd2hlbiB1c2VkIGFzIGNvbnRleHQKKyAgbWFuYWdlcnMuICBJbml0aWFsIHBhdGNoIGJ5IFdpbnN0b24gRXdlcnQuCisKKy0gSXNzdWUgIzEwNjg0OiBzaHV0aWwubW92ZSB1c2VkIHRvIGRlbGV0ZSBhIGZvbGRlciBvbiBjYXNlIGluc2Vuc2l0aXZlCisgIGZpbGVzeXN0ZW1zIHdoZW4gdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gbmFtZSB3aGVyZSB0aGUgc2FtZSBleGNlcHQKKyAgZm9yIHRoZSBjYXNlLgorCistIElzc3VlICMxMTY0Nzogb2JqZWN0cyBjcmVhdGVkIHVzaW5nIGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIgbm93IHN1cHBvcnQKKyAgbW9yZSB0aGFuIG9uZSBjYWxsIHRvIHRoZSBmdW5jdGlvbiB3aGVuIHVzZWQgYXMgYSBkZWNvcmF0b3IuIEluaXRpYWwgcGF0Y2gKKyAgYnkgWXNqIFJheS4KKworLSBJc3N1ZSAjMTE5MzA6IFJlbW92ZWQgZGVwcmVjYXRlZCB0aW1lLmFjY2VwdDJkeWVhciB2YXJpYWJsZS4KKyAgUmVtb3ZlZCB5ZWFyID49IDEwMDAgcmVzdHJpY3Rpb24gZnJvbSBkYXRldGltZS5zdHJmdGltZS4KIAogLSBsb2dnaW5nOiBkb24ndCBkZWZpbmUgUXVldWVMaXN0ZW5lciBpZiBQeXRob24gaGFzIG5vIHRocmVhZCBzdXBwb3J0LgogCkBAIC0yNDM1LDE2ICs0MjMxLDM5IEBACiAtIElzc3VlICMxMTI3NzogbW1hcC5tbWFwKCkgY2FsbHMgZmNudGwoZmQsIEZfRlVMTEZTWU5DKSBvbiBNYWMgT1MgWCB0byBnZXQKICAgYXJvdW5kIGEgbW1hcCBidWcgd2l0aCBzcGFyc2UgZmlsZXMuIFBhdGNoIHdyaXR0ZW4gYnkgU3RlZmZlbiBEYW9kZSBOdXJwbWVzby4KIAorLSBJc3N1ZSAjODQwNzogQWRkIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soKSBmdW5jdGlvbiB0byBmZXRjaCBhbmQvb3IgY2hhbmdlIHRoZQorICBzaWduYWwgbWFzayBvZiB0aGUgY2FsbGluZyB0aHJlYWQuCisKIC0gSXNzdWUgIzExODU4OiBjb25maWdwYXJzZXIuRXh0ZW5kZWRJbnRlcnBvbGF0aW9uIGV4cGVjdGVkIGxvd2VyLWNhc2Ugc2VjdGlvbgogICBuYW1lcy4KIAogLSBJc3N1ZSAjMTEzMjQ6IENvbmZpZ1BhcnNlcihpbnRlcnBvbGF0aW9uPU5vbmUpIG5vdyB3b3JrcyBjb3JyZWN0bHkuCiAKKy0gSXNzdWUgIzExODExOiBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgpIGlzIG5vdyBJUHY2LWNvbXBhdGlibGUuICBQYXRjaAorICBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKIC0gSXNzdWUgIzExNzYzOiBkb24ndCB1c2UgZGlmZmxpYiBpbiBUZXN0Q2FzZS5hc3NlcnRNdWx0aUxpbmVFcXVhbCBpZiB0aGUKICAgc3RyaW5ncyBhcmUgdG9vIGxvbmcuCiAKIC0gSXNzdWUgIzExMjM2OiBnZXRwYXNzLmdldHBhc3MgcmVzcG9uZHMgdG8gY3RybC1jIG9yIGN0cmwteiBvbiB0ZXJtaW5hbC4KIAorLSBJc3N1ZSAjMTE4NTY6IFNwZWVkIHVwIHBhcnNpbmcgb2YgSlNPTiBudW1iZXJzLgorCistIElzc3VlICMxMTAwNTogdGhyZWFkaW5nLlJMb2NrKCkuX3JlbGVhc2Vfc2F2ZSgpIHJhaXNlcyBhIFJ1bnRpbWVFcnJvciBpZiB0aGUKKyAgbG9jayB3YXMgbm90IGFjcXVpcmVkLgorCistIElzc3VlICMxMTI1ODogU3BlZWQgdXAgY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5KCkgdW5kZXIgTGludXggYnkgYSBmYWN0b3IKKyAgb2YgNSB0byAxMC4gIEluaXRpYWwgcGF0Y2ggYnkgSm9uYXMgSC4KKworLSBJc3N1ZSAjMTEzODI6IFRyaXZpYWwgc3lzdGVtIGNhbGxzLCBzdWNoIGFzIGR1cCgpIG9yIHBpcGUoKSwgbmVlZG4ndAorICByZWxlYXNlIHRoZSBHSUwuICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzExMjIzOiBBZGQgdGhyZWFkaW5nLl9pbmZvKCkgZnVuY3Rpb24gcHJvdmlkaW5nIGluZm9ybWF0aW9ucyBhYm91dAorICB0aGUgdGhyZWFkIGltcGxlbWVudGF0aW9uLgorCistIElzc3VlICMxMTczMTogc2ltcGxpZnkvZW5oYW5jZSBlbWFpbCBwYXJzZXIvZ2VuZXJhdG9yIEFQSSBieSBpbnRyb2R1Y2luZworICBwb2xpY3kgb2JqZWN0cy4KKwogLSBJc3N1ZSAjMTE3Njg6IFRoZSBzaWduYWwgaGFuZGxlciBvZiB0aGUgc2lnbmFsIG1vZHVsZSBvbmx5IGNhbGxzCiAgIFB5X0FkZFBlbmRpbmdDYWxsKCkgZm9yIHRoZSBmaXJzdCBzaWduYWwgdG8gZml4IGEgZGVhZGxvY2sgb24gcmVlbnRyYW50IG9yCiAgIHBhcmFsbGVsIGNhbGxzLiBQeUVycl9TZXRJbnRlcnJ1cHQoKSB3cml0ZXMgYWxzbyBpbnRvIHRoZSB3YWtlIHVwIGZpbGUuCkBAIC0yNDY0LDYgKzQyODMsMTAgQEAKIC0gSXNzdWUgIzExNDc0OiBGaXggdGhlIGJ1ZyB3aXRoIHVybDJwYXRobmFtZSgpIGhhbmRsaW5nIG9mICcvQ3wvJyBvbiBXaW5kb3dzLgogICBQYXRjaCBieSBTYW50b3NvIFdpamF5YS4KIAorLSBJc3N1ZSAjMTE2ODQ6IGNvbXBsZXRlIGVtYWlsLnBhcnNlciBieXRlcyBBUEkgYnkgYWRkaW5nIEJ5dGVzSGVhZGVyUGFyc2VyLgorCistIFRoZSBiejIgbW9kdWxlIG5vdyBoYW5kbGVzIDRHaUIrIGlucHV0IGJ1ZmZlcnMgY29ycmVjdGx5LgorCiAtIElzc3VlICM5MjMzOiBGaXgganNvbi5sb2Fkcygne30nKSB0byByZXR1cm4gYSBkaWN0IChpbnN0ZWFkIG9mIGEgbGlzdCksIHdoZW4KICAgX2pzb24gaXMgbm90IGF2YWlsYWJsZS4KIApAQCAtMjQ3NSwxNyArNDI5OCwzMyBAQAogLSBJc3N1ZSAjMTAwMTk6IEZpeGVkIHJlZ3Jlc3Npb24gaW4ganNvbiBtb2R1bGUgd2hlcmUgYW4gaW5kZW50IG9mIDAgc3RvcHBlZAogICBhZGRpbmcgbmV3bGluZXMgYW5kIGFjdGVkIGluc3RlYWQgbGlrZSAnTm9uZScuCiAKKy0gSXNzdWUgIzExMTg2OiBweWRvYyBpZ25vcmVzIGEgbW9kdWxlIGlmIGl0cyBuYW1lIGNvbnRhaW5zIGEgc3Vycm9nYXRlCisgIGNoYXJhY3RlciBpbiB0aGUgaW5kZXggb2YgbW9kdWxlcy4KKworLSBJc3N1ZSAjMTE4MTU6IFVzZSBhIGxpZ2h0LXdlaWdodCBTaW1wbGVRdWV1ZSBmb3IgdGhlIHJlc3VsdCBxdWV1ZSBpbgorICBjb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvci4KKwogLSBJc3N1ZSAjNTE2MjogVHJlYXQgc2VydmljZXMgbGlrZSBmcm96ZW4gZXhlY3V0YWJsZXMgdG8gYWxsb3cgY2hpbGQgc3Bhd25pbmcKICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuZm9ya2luZyBvbiBXaW5kb3dzLgogCistIGxvZ2dpbmcuYmFzaWNDb25maWcgbm93IHN1cHBvcnRzIGFuIG9wdGlvbmFsICdoYW5kbGVycycgYXJndW1lbnQgdGFraW5nIGFuCisgIGl0ZXJhYmxlIG9mIGhhbmRsZXJzIHRvIGJlIGFkZGVkIHRvIHRoZSByb290IGxvZ2dlci4gQWRkaXRpb25hbCBwYXJhbWV0ZXIKKyAgY2hlY2tzIHdlcmUgYWxzbyBhZGRlZCB0byBiYXNpY0NvbmZpZy4KKwogLSBJc3N1ZSAjMTE4MTQ6IEZpeCBsaWtlbHkgdHlwbyBpbiBtdWx0aXByb2Nlc3NpbmcuUG9vbC5fdGVybWluYXRlKCkuCiAKIC0gSXNzdWUgIzExNzQ3OiBGaXggcmFuZ2UgZm9ybWF0dGluZyBpbiBkaWZmbGliLmNvbnRleHRfZGlmZigpIGFuZAogICBkaWZmbGliLnVuaWZpZWRfZGlmZigpLgogCiAtIElzc3VlICM4NDI4OiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiBtdWx0aXByb2Nlc3NpbmcuUG9vbCB3aGVuIHRlcm1pbmF0aW5nCi0gIHdvcmtlciBwcm9jZXNzZXM6IG5ldyBwcm9jZXNzZXMgd291bGQgYmUgc3Bhd25lZCB3aGlsZSB0aGUgcG9vbCBpcyBiZWluZyBzaHV0Ci0gIGRvd24uICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisgIHdvcmtlciBwcm9jZXNzZXM6IG5ldyBwcm9jZXNzZXMgd291bGQgYmUgc3Bhd25lZCB3aGlsZSB0aGUgcG9vbCBpcyBiZWluZworICBzaHV0IGRvd24uICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzI2NTA6IHJlLmVzY2FwZSgpIG5vIGxvbmdlciBlc2NhcGVzIHRoZSAnXycuCisKKy0gSXNzdWUgIzExNzU3OiBzZWxlY3Quc2VsZWN0KCkgbm93IHJhaXNlcyBWYWx1ZUVycm9yIHdoZW4gYSBuZWdhdGl2ZSB0aW1lb3V0CisgIGlzIHBhc3NlZCAocHJldmlvdXNseSwgYSBzZWxlY3QuZXJyb3Igd2l0aCBFSU5WQUwgd291bGQgYmUgcmFpc2VkKS4gIFBhdGNoCisgIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KIAogLSBJc3N1ZSAjNzMxMTogZml4IGh0bWwucGFyc2VyIHRvIGFjY2VwdCBub24tQVNDSUkgYXR0cmlidXRlIHZhbHVlcy4KIApAQCAtMjQ5MywyMSArNDMzMiw1MCBAQAogICBtdWx0aXBhcnQgc3VicGFydHMgd2l0aCBhbiA4LWJpdCBDVEUgaW50byB1bmljb2RlIGluc3RlYWQgb2YgcHJlc2VydmluZyB0aGUKICAgYnl0ZXMuCiAKKy0gSXNzdWUgIzE2OTA2MDg6IGVtYWlsLnV0aWwuZm9ybWF0YWRkciBpcyBub3cgUkZDIDIwNDcgYXdhcmU6ICBpdCBub3cgaGFzIGEKKyAgY2hhcnNldCBwYXJhbWV0ZXIgdGhhdCBkZWZhdWx0cyB0byB1dGYtOCBhbmQgaXMgdXNlZCBhcyB0aGUgY2hhcnNldCBmb3IgUkZDCisgIDIwNDcgZW5jb2Rpbmcgd2hlbiB0aGUgcmVhbG5hbWUgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuCisKIC0gSXNzdWUgIzEwOTYzOiBFbnN1cmUgdGhhdCBzdWJwcm9jZXNzLmNvbW11bmljYXRlKCkgbmV2ZXIgcmFpc2VzIEVQSVBFLgogCistIElzc3VlICMxMDc5MTogSW1wbGVtZW50IG1pc3NpbmcgbWV0aG9kIEd6aXBGaWxlLnJlYWQxKCksIGFsbG93aW5nIEd6aXBGaWxlCisgIHRvIGJlIHdyYXBwZWQgaW4gYSBUZXh0SU9XcmFwcGVyLiAgUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgorCistIElzc3VlICMxMTcwNzogQWRkZWQgYSBmYXN0IEMgdmVyc2lvbiBvZiBmdW5jdG9vbHMuY21wX3RvX2tleSgpLgorICBQYXRjaCBieSBGaWxpcCBHcnVzemN6ecWEc2tpLgorCistIElzc3VlICMxMTY4ODogQWRkIHNxbGl0ZTMuQ29ubmVjdGlvbi5zZXRfdHJhY2VfY2FsbGJhY2soKS4gIFBhdGNoIGJ5CisgIFRvcnN0ZW4gTGFuZHNjaG9mZi4KKwogLSBJc3N1ZSAjMTE3NDY6IEZpeCBTU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbigpIHRvIGFjY2VwdCBlbGxpcHRpYyBjdXJ2ZQogICBwcml2YXRlIGtleXMuCiAKKy0gSXNzdWUgIzU4NjM6IFJld3JpdGUgQloyRmlsZSBpbiBwdXJlIFB5dGhvbiwgYW5kIGFsbG93IGl0IHRvIGFjY2VwdAorICBmaWxlLWxpa2Ugb2JqZWN0cyB1c2luZyBhIG5ldyBgYGZpbGVvYmpgYCBjb25zdHJ1Y3RvciBhcmd1bWVudC4gIFBhdGNoIGJ5CisgIE5hZGVlbSBWYXdkYS4KKworLSB1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRTYW1lRWxlbWVudHMgaGFzIGJlZW4gcmVtb3ZlZC4KKwogLSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgcmFpc2VzIGEgUnVudGltZUVycm9yIGlmIGluaXRmc2VuY29kaW5nKCkgd2FzIG5vdAogICBjYWxsZWQgeWV0OiBkZXRlY3QgYm9vdHN0cmFwIChzdGFydHVwKSBpc3N1ZXMgZWFybGllci4KIAorLSBJc3N1ZSAjMTEzOTM6IEFkZCB0aGUgbmV3IGZhdWx0aGFuZGxlciBtb2R1bGUuCisKIC0gSXNzdWUgIzExNjE4OiBGaXggdGhlIHRpbWVvdXQgbG9naWMgaW4gdGhyZWFkaW5nLkxvY2suYWNxdWlyZSgpIHVuZGVyIFdpbmRvd3MuCiAKKy0gUmVtb3ZlZCB0aGUgJ3N0cmljdCcgYXJndW1lbnQgdG8gZW1haWwucGFyc2VyLlBhcnNlciwgd2hpY2ggaGFzIGJlZW4KKyAgZGVwcmVjYXRlZCBzaW5jZSBQeXRob24gMi40LgorCiAtIElzc3VlICMxMTI1NjogRml4IGluc3BlY3QuZ2V0Y2FsbGFyZ3Mgb24gZnVuY3Rpb25zIHRoYXQgdGFrZSBvbmx5IGtleXdvcmQKICAgYXJndW1lbnRzLgogCiAtIElzc3VlICMxMTY5NjogRml4IElEIGdlbmVyYXRpb24gaW4gbXNpbGliLgogCistIGl0ZXJ0b29scy5hY2N1bXVsYXRlIG5vdyBzdXBwb3J0cyBhbiBvcHRpb25hbCAqZnVuYyogYXJndW1lbnQgZm9yCisgIGEgdXNlci1zdXBwbGllZCBiaW5hcnkgZnVuY3Rpb24uCisKKy0gSXNzdWUgIzExNjkyOiBSZW1vdmUgdW5uZWNlc3NhcnkgZGVtbyBmdW5jdGlvbnMgaW4gc3VicHJvY2VzcyBtb2R1bGUuCisKIC0gSXNzdWUgIzk2OTY6IEZpeCBleGNlcHRpb24gaW5jb3JyZWN0bHkgcmFpc2VkIGJ5IHhkcmxpYi5QYWNrZXIucGFja19pbnQgd2hlbgogICB0cnlpbmcgdG8gcGFjayBhIG5lZ2F0aXZlIChpbi1yYW5nZSkgaW50ZWdlci4KIApAQCAtMjUyMyw3ICs0MzkxLDI2IEBACiAtIElzc3VlICMxMTYzNTogRG9uJ3QgdXNlIHBvbGxpbmcgaW4gd29ya2VyIHRocmVhZHMgYW5kIHByb2Nlc3NlcyBsYXVuY2hlZCBieQogICBjb25jdXJyZW50LmZ1dHVyZXMuCiAKLS0gSXNzdWUgIzExNjI4OiBjbXBfdG9fa2V5IGdlbmVyYXRlZCBjbGFzcyBzaG91bGQgdXNlIF9fc2xvdHNfXworLSBJc3N1ZSAjNjgxMTogQWxsb3cgaW1wb3J0bGliIHRvIGNoYW5nZSBhIGNvZGUgb2JqZWN0J3MgY29fZmlsZW5hbWUgYXR0cmlidXRlCisgIHRvIG1hdGNoIHRoZSBwYXRoIHRvIHdoZXJlIHRoZSBzb3VyY2UgY29kZSBjdXJyZW50bHkgaXMsIG5vdCB3aGVyZSB0aGUgY29kZQorICBvYmplY3Qgb3JpZ2luYWxseSBjYW1lIGZyb20uCisKKy0gSXNzdWUgIzg3NTQ6IEhhdmUgaW1wb3J0bGliIHVzZSB0aGUgcmVwciBvZiBhIG1vZHVsZSBuYW1lIGluIGVycm9yIG1lc3NhZ2VzLgorCistIElzc3VlICMxMTU5MTogUHJldmVudCAiaW1wb3J0IHNpdGUiIGZyb20gbW9kaWZ5aW5nIHN5cy5wYXRoIHdoZW4gcHl0aG9uCisgIHdhcyBzdGFydGVkIHdpdGggLVMuCisKKy0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpIG5vdyBhZGRzIGEgX3NvdXJjZSBhdHRyaWJ1dGUgdG8gdGhlIGdlbmVyYXRlZAorICBjbGFzcy4gIFRoaXMgbWFrZSB0aGUgc291cmNlIG1vcmUgYWNjZXNzaWJsZSB0aGFuIHRoZSBvdXRkYXRlZAorICAidmVyYm9zZSIgb3B0aW9uIHdoaWNoIHByaW50cyB0byBzdGRvdXQgYnV0IGRvZXNuJ3QgbWFrZSB0aGUgc291cmNlCisgIHN0cmluZyBhdmFpbGFibGUuCisKKy0gSXNzdWUgIzExMzcxOiBNYXJrIGdldG9wdCBlcnJvciBtZXNzYWdlcyBhcyBsb2NhbGl6YWJsZS4gIFBhdGNoIGJ5IEZpbGlwCisgIEdydXN6Y3p5xYRza2kuCisKKy0gSXNzdWUgIzExMzMzOiBBZGQgX19zbG90c19fIHRvIGNvbGxlY3Rpb25zIEFCQ3MuCisKKy0gSXNzdWUgIzExNjI4OiBjbXBfdG9fa2V5IGdlbmVyYXRlZCBjbGFzcyBzaG91bGQgdXNlIF9fc2xvdHNfXy4KIAogLSBJc3N1ZSAjMTE2NjY6IGxldCBoZWxwKCkgZGlzcGxheSBuYW1lZCB0dXBsZSBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzCiAgIHRoYXQgc3RhcnQgd2l0aCBhIGxlYWRpbmcgdW5kZXJzY29yZS4KQEAgLTI1MzQsNiArNDQyMSwxMCBAQAogLSBJc3N1ZSAjNTUzNzogRml4IHRpbWUyaXNveigpIGFuZCB0aW1lMm5ldHNjYXBlKCkgZnVuY3Rpb25zIG9mCiAgIGh0dHBsaWIuY29va2llamFyIGZvciBleHBpcmF0aW9uIHllYXIgZ3JlYXRlciB0aGFuIDIwMzggb24gMzItYml0IHN5c3RlbXMuCiAKKy0gSXNzdWUgIzQzOTE6IFVzZSBwcm9wZXIgZ2V0dGV4dCBwbHVyYWwgZm9ybXMgaW4gb3B0cGFyc2UuCisKKy0gSXNzdWUgIzExMTI3OiBSYWlzZSBhIFR5cGVFcnJvciB3aGVuIHRyeWluZyB0byBwaWNrbGUgYSBzb2NrZXQgb2JqZWN0LgorCiAtIElzc3VlICMxMTU2MzogQ29ubmVjdGlvbjpjbG9zZSBoZWFkZXIgaXMgc2VudCBieSByZXF1ZXN0cyB1c2luZyBVUkxPcGVuZXIKICAgY2xhc3Mgd2hpY2ggaGVscHMgaW4gY2xvc2luZyBvZiBzb2NrZXRzIGFmdGVyIGNvbm5lY3Rpb24gaXMgb3Zlci4gUGF0Y2gKICAgY29udHJpYnV0aW9ucyBieSBKZWZmIE1jTmVpbCBhbmQgTmFkZWVtIFZhd2RhLgpAQCAtMjU0NCw2ICs0NDM1LDggQEAKIC0gSXNzdWUgIzU0MjE6IEZpeCBtaXNsZWFkaW5nIGVycm9yIG1lc3NhZ2Ugd2hlbiBvbmUgb2Ygc29ja2V0LnNlbmR0bygpJ3MKICAgYXJndW1lbnRzIGhhcyB0aGUgd3JvbmcgdHlwZS4gIFBhdGNoIGJ5IE5pa2l0YSBWZXRvc2hraW4uCiAKKy0gSXNzdWUgIzEwODEyOiBBZGQgc29tZSBleHRyYSBwb3NpeCBmdW5jdGlvbnMgdG8gdGhlIG9zIG1vZHVsZS4KKwogLSBJc3N1ZSAjMTA5Nzk6IHVuaXR0ZXN0IHN0ZG91dCBidWZmZXJpbmcgbm93IHdvcmtzIHdpdGggY2xhc3MgYW5kIG1vZHVsZQogICBzZXR1cCBhbmQgdGVhcmRvd24uCiAKQEAgLTI1NTYsNzUgKzQ0NDksMTU0IEBACiAgIHJlbGF0aXZlIHRvIFB5dGhvbjIgYW5kIHRoZSByZXN1bHQgaXMgbm93IHRoZSBzYW1lIGFzIGl0IHdhcyBpbiBQeXRob24yLgogCiAtIElzc3VlICM5Mjk4OiBiYXNlNjQgYm9kaWVzIHdlcmVuJ3QgYmVpbmcgZm9sZGVkIHRvIGxpbmUgbGVuZ3RocyBsZXNzIHRoYW4gNzgsCi0gIHdoaWNoIHdhcyBhIHJlZ3Jlc3Npb24gcmVsYXRpdmUgdG8gUHl0aG9uMi4gIFVubGlrZSBQeXRob24yLCB0aGUgbGFzdCBsaW5lIG9mCi0gIHRoZSBmb2xkZWQgYm9keSBub3cgZW5kcyB3aXRoIGEgY2FycmlhZ2UgcmV0dXJuLgorICB3aGljaCB3YXMgYSByZWdyZXNzaW9uIHJlbGF0aXZlIHRvIFB5dGhvbjIuICBVbmxpa2UgUHl0aG9uMiwgdGhlIGxhc3QgbGluZQorICBvZiB0aGUgZm9sZGVkIGJvZHkgbm93IGVuZHMgd2l0aCBhIGNhcnJpYWdlIHJldHVybi4KIAogLSBJc3N1ZSAjMTE1NjA6IHNodXRpbC51bnBhY2tfYXJjaGl2ZSBub3cgY29ycmVjdGx5IGhhbmRsZXMgdGhlIGZvcm1hdAogICBwYXJhbWV0ZXIuIFBhdGNoIGJ5IEV2YW4gRGFuZHJlYS4KIAorLSBJc3N1ZSAjNTg3MDogQWRkIGBzdWJwcm9jZXNzLkRFVk5VTExgIGNvbnN0YW50LgorCiAtIElzc3VlICMxMTEzMzogZml4IHR3byBjYXNlcyB3aGVyZSBpbnNwZWN0LmdldGF0dHJfc3RhdGljIGNhbiB0cmlnZ2VyIGNvZGUKICAgZXhlY3V0aW9uLiBQYXRjaCBieSBBbmRyZWFzIFN0w7xocmsuCiAKIC0gSXNzdWUgIzExNTY5OiB1c2UgYWJzb2x1dGUgcGF0aCB0byB0aGUgc3lzY3RsIGNvbW1hbmQgaW4gbXVsdGlwcm9jZXNzaW5nIHRvCi0gIGVuc3VyZSB0aGF0IGl0IHdpbGwgYmUgZm91bmQgcmVnYXJkbGVzcyBvZiB0aGUgc2hlbGwgUEFUSC4gVGhpcyBlbnN1cmVzIHRoYXQKLSAgbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCB3b3JrcyBvbiBkZWZhdWx0IGluc3RhbGxzIG9mIE1hY09TWC4KKyAgZW5zdXJlIHRoYXQgaXQgd2lsbCBiZSBmb3VuZCByZWdhcmRsZXNzIG9mIHRoZSBzaGVsbCBQQVRILiBUaGlzIGVuc3VyZXMKKyAgdGhhdCBtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50IHdvcmtzIG9uIGRlZmF1bHQgaW5zdGFsbHMgb2YgTWFjT1NYLgogCiAtIElzc3VlICMxMTUwMTogZGlzdXRpbHMuYXJjaGl2ZV91dGlscy5tYWtlX3ppcGZpbGUgbm8gbG9uZ2VyIGZhaWxzIGlmIHpsaWIgaXMKICAgbm90IGluc3RhbGxlZC4gSW5zdGVhZCwgdGhlIHppcGZpbGUuWklQX1NUT1JFRCBjb21wcmVzc2lvbiBpcyB1c2VkIHRvIGNyZWF0ZQogICB0aGUgWmlwRmlsZS4gUGF0Y2ggYnkgTmF0YWxpYSBCLiBCaWRhcnQuCiAKKy0gSXNzdWUgIzExMjg5OiBgc210cC5TTVRQYCBjbGFzcyBpcyBub3cgYSBjb250ZXh0IG1hbmFnZXIgc28gaXQgY2FuIGJlIHVzZWQKKyAgaW4gYSBgd2l0aGAgc3RhdGVtZW50LiAgQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sYS4KKwogLSBJc3N1ZSAjMTE1NTQ6IEZpeGVkIHN1cHBvcnQgZm9yIEphcGFuZXNlIGNvZGVjczsgcHJldmlvdXNseSB0aGUgYm9keSBvdXRwdXQKICAgZW5jb2Rpbmcgd2FzIG5vdCBkb25lIGlmIGV1Yy1qcCBvciBzaGlmdC1qaXMgd2FzIHNwZWNpZmllZCBhcyB0aGUgY2hhcnNldC4KIAotLSBJc3N1ZSAjMTE1MDA6IEZpeGVkIGEgYnVnIGluIHRoZSBvcyB4IHByb3h5IGJ5cGFzcyBjb2RlIGZvciBmdWxseSBxdWFsaWZpZWQgSVAKLSAgYWRkcmVzc2VzIGluIHRoZSBwcm94eSBleGNlcHRpb24gbGlzdC4KKy0gSXNzdWUgIzExNTA5OiBTaWduaWZpY2FudGx5IGluY3JlYXNlIHRlc3QgY292ZXJhZ2Ugb2YgZmlsZWlucHV0LgorICBQYXRjaCBieSBEZW52ZXIgQ29uZXliZWFyZSBhdCBQeUNvbiAyMDExIFNwcmludHMuCiAKLS0gSXNzdWUgIzExNDkxOiBkYm0uZXJyb3IgaXMgbm8gbG9uZ2VyIHJhaXNlZCB3aGVuIGRibS5vcGVuIGlzIGNhbGxlZCB3aXRoIHRoZQotICAibiIgYXMgdGhlIGZsYWcgYXJndW1lbnQgYW5kIHRoZSBmaWxlIGV4aXN0cy4gVGhlIGJlaGF2aW9yIG1hdGNoZXMgdGhlCi0gIGRvY3VtZW50YXRpb24gYW5kIGdlbmVyYWwgbG9naWMuCistIElzc3VlICMxMTQwNzogYFRlc3RDYXNlLnJ1bmAgcmV0dXJucyB0aGUgcmVzdWx0IG9iamVjdCB1c2VkIG9yIGNyZWF0ZWQuCisgIENvbnRyaWJ1dGVkIGJ5IEphbmF0aGFuIEhhcnRsZXkuCiAKLS0gSXNzdWUgIzExMTMxOiBGaXggc2lnbiBvZiB6ZXJvIGluIGRlY2ltYWwuRGVjaW1hbCBwbHVzIGFuZCBtaW51cyBvcGVyYXRpb25zCi0gIHdoZW4gdGhlIHJvdW5kaW5nIG1vZGUgaXMgUk9VTkRfRkxPT1IuCistIElzc3VlICMxMTUwMDogRml4ZWQgYSBidWcgaW4gdGhlIE9TIFggcHJveHkgYnlwYXNzIGNvZGUgZm9yIGZ1bGx5IHF1YWxpZmllZAorICBJUCBhZGRyZXNzZXMgaW4gdGhlIHByb3h5IGV4Y2VwdGlvbiBsaXN0LgorCistIElzc3VlICMxMTQ5MTogZGJtLmVycm9yIGlzIG5vIGxvbmdlciByYWlzZWQgd2hlbiBkYm0ub3BlbiBpcyBjYWxsZWQgd2l0aAorICB0aGUgIm4iIGFzIHRoZSBmbGFnIGFyZ3VtZW50IGFuZCB0aGUgZmlsZSBleGlzdHMuIFRoZSBiZWhhdmlvciBtYXRjaGVzCisgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBnZW5lcmFsIGxvZ2ljLgorCistIElzc3VlICMxMTYyNDc3OiBQb3N0ZWwgUHJpbmNpcGxlIGFkanVzdG1lbnQgdG8gZW1haWwgZGF0ZSBwYXJzaW5nOiBoYW5kbGUgdGhlCisgIGZhY3QgdGhhdCBzb21lIG5vbi1jb21wbGlhbnQgTVVBcyB1c2UgJy4nIGluc3RlYWQgb2YgJzonIGluIHRpbWUgc3BlY3MuCisKKy0gSXNzdWUgIzExMTMxOiBGaXggc2lnbiBvZiB6ZXJvIGluIGRlY2ltYWwuRGVjaW1hbCBwbHVzIGFuZCBtaW51cworICBvcGVyYXRpb25zIHdoZW4gdGhlIHJvdW5kaW5nIG1vZGUgaXMgUk9VTkRfRkxPT1IuCisKKy0gSXNzdWUgIzk5MzU6IFNwZWVkIHVwIHBpY2tsaW5nIG9mIGluc3RhbmNlcyBvZiB1c2VyLWRlZmluZWQgY2xhc3Nlcy4KIAogLSBJc3N1ZSAjNTYyMjogRml4IGN1cnNlcy53cmFwcGVyIHRvIHJhaXNlIGNvcnJlY3QgZXhjZXB0aW9uIGlmIGN1cnNlcwogICBpbml0aWFsaXphdGlvbiBmYWlscy4KIAorLSBJc3N1ZSAjMTE0MDg6IEluIHRocmVhZGluZy5Mb2NrLmFjcXVpcmUoKSwgb25seSBjYWxsIGdldHRpbWVvZmRheSgpIHdoZW4KKyAgcmVhbGx5IG5lY2Vzc2FyeS4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKwogLSBJc3N1ZSAjMTEzOTE6IFdyaXRpbmcgdG8gYSBtbWFwIG9iamVjdCBjcmVhdGVkIHdpdGgKICAgYGBtbWFwLlBST1RfUkVBRHxtbWFwLlBST1RfRVhFQ2BgIHdvdWxkIHNlZ2ZhdWx0IGluc3RlYWQgb2YgcmFpc2luZyBhCiAgIFR5cGVFcnJvci4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KIAotLSBJc3N1ZSAjMTEzMDY6IG1haWxib3ggaW4gY2VydGFpbiBjYXNlcyBhZGFwdHMgdG8gYW4gaW5hYmlsaXR5IHRvIG9wZW4gY2VydGFpbgotICBmaWxlcyBpbiByZWFkLXdyaXRlIG1vZGUuICBQcmV2aW91c2x5IGl0IGRldGVjdGVkIHRoaXMgYnkgY2hlY2tpbmcgZm9yIEVBQ0NFUywKLSAgbm93IGl0IGFsc28gY2hlY2tzIGZvciBFUk9GUy4KKy0gSXNzdWUgIzk3OTU6IGFkZCBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgc3VwcG9ydCBmb3Igbm50cGxpYi5OTlRQIGNsYXNzLgogCi0tIElzc3VlICMxMTI2NTogYXN5bmNvcmUgbm93IGNvcnJlY3RseSBoYW5kbGVzIEVQSVBFLCBFQkFERiBhbmQgRUFHQUlOIGVycm9ycyBvbgotICBhY2NlcHQoKSwgc2VuZCgpIGFuZCByZWN2KCkuCistIElzc3VlICMxMTMwNjogbWFpbGJveCBpbiBjZXJ0YWluIGNhc2VzIGFkYXB0cyB0byBhbiBpbmFiaWxpdHkgdG8gb3BlbgorICBjZXJ0YWluIGZpbGVzIGluIHJlYWQtd3JpdGUgbW9kZS4gIFByZXZpb3VzbHkgaXQgZGV0ZWN0ZWQgdGhpcyBieQorICBjaGVja2luZyBmb3IgRUFDQ0VTLCBub3cgaXQgYWxzbyBjaGVja3MgZm9yIEVST0ZTLgorCistIElzc3VlICMxMTI2NTogYXN5bmNvcmUgbm93IGNvcnJlY3RseSBoYW5kbGVzIEVQSVBFLCBFQkFERiBhbmQgRUFHQUlOIGVycm9ycworICBvbiBhY2NlcHQoKSwgc2VuZCgpIGFuZCByZWN2KCkuCisKKy0gSXNzdWUgIzExMzc3OiBEZXByZWNhdGUgcGxhdGZvcm0ucG9wZW4oKSBhbmQgcmVpbXBsZW1lbnQgaXQgd2l0aCBvcy5wb3BlbigpLgorCistIElzc3VlICM4NTEzOiBPbiBVTklYLCBzdWJwcm9jZXNzIHN1cHBvcnRzIGJ5dGVzIGNvbW1hbmQgc3RyaW5nLgorCistIElzc3VlICMxMDg2NjogQWRkIHNvY2tldC5zZXRob3N0bmFtZSgpLiAgSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KKworLSBJc3N1ZSAjMTExNDA6IExvY2sucmVsZWFzZSgpIG5vdyByYWlzZXMgYSBSdW50aW1lRXJyb3Igd2hlbiBhdHRlbXB0aW5nCisgIHRvIHJlbGVhc2UgYW4gdW5hY3F1aXJlZCBsb2NrLCBhcyBjbGFpbWVkIGluIHRoZSB0aHJlYWRpbmcgZG9jdW1lbnRhdGlvbi4KKyAgVGhlIF90aHJlYWQuZXJyb3IgZXhjZXB0aW9uIGlzIG5vdyBhbiBhbGlhcyBvZiBSdW50aW1lRXJyb3IuICBQYXRjaCBieQorICBGaWxpcCBHcnVzemN6ecWEc2tpLiAgUGF0Y2ggZm9yIF9kdW1teV90aHJlYWQgYnkgQXltZXJpYyBBdWd1c3Rpbi4KKworLSBJc3N1ZSAjODU5NDogZnRwbGliIG5vdyBwcm92aWRlcyBhIHNvdXJjZV9hZGRyZXNzIHBhcmFtZXRlciB0byBzcGVjaWZ5IHdoaWNoCisgIChhZGRyZXNzLCBwb3J0KSB0byBiaW5kIHRvIGJlZm9yZSBjb25uZWN0aW5nLgogCiAtIElzc3VlICMxMTMyNjogQWRkIHRoZSBtaXNzaW5nIGNvbm5lY3RfZXgoKSBpbXBsZW1lbnRhdGlvbiBmb3IgU1NMIHNvY2tldHMsCiAgIGFuZCBtYWtlIGl0IHdvcmsgZm9yIG5vbi1ibG9ja2luZyBjb25uZWN0cy4KIAorLSBJc3N1ZSAjMTEyOTc6IEFkZCBjb2xsZWN0aW9ucy5DaGFpbk1hcCgpLgorCistIElzc3VlICMxMDc1NTogQWRkIHRoZSBwb3NpeC5mbGlzdGRpcigpIGZ1bmN0aW9uLiAgUGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCisKKy0gSXNzdWUgIzQ3NjE6IEFkZCB0aGUgYGAqYXQoKWBgIGZhbWlseSBvZiBmdW5jdGlvbnMgKG9wZW5hdCgpLCBldGMuKSB0byB0aGUKKyAgcG9zaXggbW9kdWxlLiAgUGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCisKIC0gSXNzdWUgIzczMjI6IFRyeWluZyB0byByZWFkIGZyb20gYSBzb2NrZXQncyBmaWxlLWxpa2Ugb2JqZWN0IGFmdGVyIGEgdGltZW91dAogICBvY2N1cnJlZCBub3cgcmFpc2VzIGFuIGVycm9yIGluc3RlYWQgb2Ygc2lsZW50bHkgbG9zaW5nIGRhdGEuCiAKKy0gSXNzdWUgIzExMjkxOiBwb3BsaWIuUE9QIG5vIGxvbmdlciBzdXBwcmVzc2VzIGVycm9ycyBvbiBxdWl0KCkuCisKKy0gSXNzdWUgIzExMTc3OiBhc3luY29yZSdzIGNyZWF0ZV9zb2NrZXQoKSBhcmd1bWVudHMgY2FuIG5vdyBiZSBvbWl0dGVkLgorCistIElzc3VlICM2MDY0OiBBZGQgYSBgYGRhZW1vbmBgIGtleXdvcmQgYXJndW1lbnQgdG8gdGhlIHRocmVhZGluZy5UaHJlYWQKKyAgYW5kIG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzIGNvbnN0cnVjdG9ycyBpbiBvcmRlciB0byBvdmVycmlkZSB0aGUKKyAgZGVmYXVsdCBiZWhhdmlvdXIgb2YgaW5oZXJpdGluZyB0aGUgZGFlbW9uaWMgcHJvcGVydHkgZnJvbSB0aGUgY3VycmVudAorICB0aHJlYWQvcHJvY2Vzcy4KKwogLSBJc3N1ZSAjMTA5NTY6IEJ1ZmZlcmVkIEkvTyBjbGFzc2VzIHJldHJ5IHJlYWRpbmcgb3Igd3JpdGluZyBhZnRlciBhIHNpZ25hbAogICBoYXMgYXJyaXZlZCBhbmQgdGhlIGhhbmRsZXIgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5LgogCistIElzc3VlICMxMDc4NDogTmV3IG9zLmdldHByaW9yaXR5KCkgYW5kIG9zLnNldHByaW9yaXR5KCkgZnVuY3Rpb25zLgorCistIElzc3VlICMxMTExNDogRml4IGNhdGFzdHJvcGhpYyBwZXJmb3JtYW5jZSBvZiB0ZWxsKCkgb24gdGV4dCBmaWxlcyAodXAKKyAgdG8gMTAwMHggZmFzdGVyIGluIHNvbWUgY2FzZXMpLiAgSXQgaXMgc3RpbGwgb25lIHRvIHR3byBvcmRlciBvZiBtYWduaXR1ZGVzCisgIHNsb3dlciB0aGFuIGJpbmFyeSB0ZWxsKCkuCisKKy0gSXNzdWUgIzEwODgyOiBBZGQgb3Muc2VuZGZpbGUgZnVuY3Rpb24uCisKKy0gSXNzdWUgIzEwODY4OiBBbGxvdyB1c2FnZSBvZiB0aGUgcmVnaXN0ZXIgbWV0aG9kIG9mIGFuIEFCQyBhcyBhIGNsYXNzCisgIGRlY29yYXRvci4KKwogLSBJc3N1ZSAjMTEyMjQ6IEZpeGVkIGEgcmVncmVzc2lvbiBpbiB0YXJmaWxlIHRoYXQgYWZmZWN0ZWQgdGhlIGZpbGUtbGlrZQogICBvYmplY3RzIHJldHVybmVkIGJ5IFRhckZpbGUuZXh0cmFjdGZpbGUoKSByZWdhcmRpbmcgcGVyZm9ybWFuY2UsIG1lbW9yeQogICBjb25zdW1wdGlvbiBhbmQgZmFpbHVyZXMgd2l0aCB0aGUgc3RyZWFtIGludGVyZmFjZS4KIAorLSBJc3N1ZSAjMTA5MjQ6IEFkZGluZyBzYWx0IGFuZCBNb2R1bGFyIENyeXB0IEZvcm1hdCB0byBjcnlwdCBsaWJyYXJ5LgorICBNb3ZlZCBvbGQgQyB3cmFwcGVyIHRvIF9jcnlwdCwgYW5kIGFkZGVkIGEgUHl0aG9uIHdyYXBwZXIgd2l0aAorICBlbmhhbmNlZCBzYWx0IGdlbmVyYXRpb24gYW5kIHNpbXBsZXIgQVBJIGZvciBwYXNzd29yZCBnZW5lcmF0aW9uLgorCiAtIElzc3VlICMxMTA3NDogTWFrZSAndG9rZW5pemUnIHNvIGl0IGNhbiBiZSByZWxvYWRlZC4KIAorLSBJc3N1ZSAjMTEwODU6IE1vdmVkIGNvbGxlY3Rpb25zIGFic3RyYWN0IGJhc2UgY2xhc3NlcyBpbnRvIGEgc2VwYXJhdGUKKyAgbW9kdWxlIGNhbGxlZCBjb2xsZWN0aW9ucy5hYmMsIGZvbGxvd2luZyB0aGUgcGF0dGVybiB1c2VkIGJ5IGltcG9ydGxpYi5hYmMuCisgIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgdGhlIG5hbWVzIGFyZSBpbXBvcnRlZCBpbnRvIHRoZSBjb2xsZWN0aW9ucworICBtb2R1bGUuCisKIC0gSXNzdWUgIzQ2ODE6IEFsbG93IG1tYXAoKSB0byB3b3JrIG9uIGZpbGUgc2l6ZXMgYW5kIG9mZnNldHMgbGFyZ2VyIHRoYW4KICAgNEdCLCBldmVuIG9uIDMyLWJpdCBidWlsZHMuICBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLCBhZGFwdGVkIGZvcgogICAzMi1iaXQgV2luZG93cy4KIAorLSBJc3N1ZSAjMTExNjk6IGNvbXBpbGVhbGwgbW9kdWxlIHVzZXMgcmVwcigpIHRvIGZvcm1hdCBmaWxlbmFtZXMgYW5kIHBhdGhzIHRvCisgIGVzY2FwZSBzdXJyb2dhdGUgY2hhcmFjdGVycyBhbmQgc2hvdyBzcGFjZXMuCisKIC0gSXNzdWUgIzExMDg5OiBGaXggcGVyZm9ybWFuY2UgaXNzdWUgbGltaXRpbmcgdGhlIHVzZSBvZiBDb25maWdQYXJzZXIoKQogICB3aXRoIGxhcmdlIGNvbmZpZyBmaWxlcy4KIAogLSBJc3N1ZSAjMTAyNzY6IEZpeCB0aGUgcmVzdWx0cyBvZiB6bGliLmNyYzMyKCkgYW5kIHpsaWIuYWRsZXIzMigpIG9uIGJ1ZmZlcnMKICAgbGFyZ2VyIHRoYW4gNEdCLiAgUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgogCistIElzc3VlICMxMTM4ODogQWRkZWQgYSBjbGVhcigpIG1ldGhvZCB0byBNdXRhYmxlU2VxdWVuY2UKKworLSBJc3N1ZSAjMTExNzQ6IEFkZCBhcmdwYXJzZS5NZXRhdmFyVHlwZUhlbHBGb3JtYXR0ZXIsIHdoaWNoIHVzZXMgdHlwZSBuYW1lcworICBmb3IgdGhlIG5hbWVzIG9mIG9wdGlvbmFsIGFuZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyBpbiBoZWxwIG1lc3NhZ2VzLgorCiAtIElzc3VlICM5MzQ4OiBSYWlzZSBhbiBlYXJseSBlcnJvciBpZiBhcmdwYXJzZSBuYXJncyBhbmQgbWV0YXZhciBkb24ndCBtYXRjaC4KIAogLSBJc3N1ZSAjODk4MjogSW1wcm92ZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGFyZ3BhcnNlIE5hbWVzcGFjZSBvYmplY3QuCkBAIC0yNjM2LDI4ICs0NjA4LDE0MSBAQAogCiAtIElzc3VlICM5MzQ3OiBGaXggZm9ybWF0dGluZyBmb3IgdHVwbGVzIGluIGFyZ3BhcnNlIHR5cGU9IGVycm9yIG1lc3NhZ2VzLgogCistIElzc3VlICMxMjE5MTogQWRkZWQgc2h1dGlsLmNob3duKCkgdG8gY2hhbmdlIHVzZXIgYW5kL29yIGdyb3VwIG93bmVyIG9mIGEKKyAgZ2l2ZW4gcGF0aCBhbHNvIHNwZWNpZnlpbmcgdGhlaXIgbmFtZXMuCisKKy0gSXNzdWUgIzEzOTg4OiBUaGUgX2VsZW1lbnR0cmVlIGFjY2VsZXJhdG9yIGlzIHVzZWQgd2hlbmV2ZXIgYXZhaWxhYmxlLgorICBOb3cgeG1sLmV0cmVlLmNFbGVtZW50VHJlZSBiZWNvbWVzIGEgZGVwcmVjYXRlZCBhbGlhcyB0byBFbGVtZW50VHJlZS4KKwogQnVpbGQKIC0tLS0tCiAKKy0gSXNzdWUgIzY4MDc6IFJ1biBtc2lzdXBwb3J0Lm1hayBlYXJsaWVyLgorCistIElzc3VlICMxMDU4MDogTWlub3IgZ3JhbW1hciBjaGFuZ2UgaW4gV2luZG93cyBpbnN0YWxsZXIuCisKKy0gSXNzdWUgIzEzMzI2OiBDbGVhbiBfX3B5Y2FjaGVfXyBkaXJlY3RvcmllcyBjb3JyZWN0bHkgb24gT3BlbkJTRC4KKworLSBQRVAgMzkzOiB0aGUgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtd2lkZS11bmljb2RlIGlzIHJlbW92ZWQuCisKKy0gSXNzdWUgIzEyODUyOiBTZXQgX1hPUEVOX1NPVVJDRSB0byA3MDAsIGluc3RlYWQgb2YgNjAwLCB0byBnZXQgUE9TSVggMjAwOAorICBmdW5jdGlvbnMgb24gT3BlbkJTRCAoZS5nLiBmZG9wZW5kaXIpLgorCistIElzc3VlICMxMTg2MzogUmVtb3ZlIHN1cHBvcnQgZm9yIGxlZ2FjeSBzeXN0ZW1zIGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuMgorICAoZm9sbG93aW5nIFBFUCAxMSkuICBUaGVzZSBzeXN0ZW1zIGFyZSBzeXN0ZW1zIHVzaW5nIE1hY2ggQyBUaHJlYWRzLAorICBTdW5PUyBsaWdodHdlaWdodCBwcm9jZXNzZXMsIEdOVSBwdGggdGhyZWFkcyBhbmQgSVJJWCB0aHJlYWRzLgorCistIElzc3VlICM4NzQ2OiBDb3JyZWN0IGZhdWx0eSBjb25maWd1cmUgY2hlY2tzIHNvIHRoYXQgb3MuY2hmbGFncygpIGFuZAorICBvcy5sY2hmbGFncygpIGFyZSBvbmNlIGFnYWluIGJ1aWx0IG9uIHN5c3RlbXMgdGhhdCBzdXBwb3J0IHRoZXNlCisgIGZ1bmN0aW9ucyAoQlNEIGFuZCBPUyBYKS4gIEFsc28gYWRkIG5ldyBzdGF0IGZpbGUgZmxhZ3MgZm9yIE9TIFgKKyAgKFVGX0hJRERFTiBhbmQgVUZfQ09NUFJFU1NFRCkuCisKKy0gSXNzdWUgIzEwNjQ1OiBJbnN0YWxsaW5nIFB5dGhvbiBubyBsb25nZXIgY3JlYXRlcyBhCisgIFB5dGhvbi1YLlkuWi1weVguWS5lZ2ctaW5mbyBmaWxlIGluIHRoZSBsaWItZHlubG9hZCBkaXJlY3RvcnkuCisKKy0gRG8gbm90IGFjY2lkZW50YWxseSBpbmNsdWRlIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBzcWxpdGUuaCB0d2ljZSB3aGVuCisgIGJ1aWxkaW5nIHNxbGl0ZTMuCisKKy0gSXNzdWUgIzExMjE3OiBGb3IgNjQtYml0LzMyLWJpdCBNYWMgT1MgWCB1bml2ZXJzYWwgZnJhbWV3b3JrIGJ1aWxkcywKKyAgZW5zdXJlICJtYWtlIGluc3RhbGwiIGNyZWF0ZXMgc3ltbGlua3MgaW4gLS1wcmVmaXggYmluIGZvciB0aGUgIi0zMiIKKyAgZmlsZXMgaW4gdGhlIGZyYW1ld29yayBiaW4gZGlyZWN0b3J5IGxpa2UgdGhlIGluc3RhbGxlciBkb2VzLgorCistIElzc3VlICMxMTM0NzogVXNlIC0tbm8tYXMtbmVlZGVkIHdoZW4gbGlua2luZyBsaWJweXRob24zLnNvLgorCiAtIElzc3VlICMxMTQxMTogRml4ICdtYWtlIERFU1RESVI9JyB3aXRoIGEgcmVsYXRpdmUgZGVzdGluYXRpb24uCiAKLS0gSXNzdWUgIzExMjY4OiBQcmV2ZW50IE1hYyBPUyBYIEluc3RhbGxlciBmYWlsdXJlIGlmIERvY3VtZW50YXRpb24gcGFja2FnZSBoYWQKLSAgcHJldmlvdXNseSBiZWVuIGluc3RhbGxlZC4KKy0gSXNzdWUgIzExMjY4OiBQcmV2ZW50IE1hYyBPUyBYIEluc3RhbGxlciBmYWlsdXJlIGlmIERvY3VtZW50YXRpb24KKyAgcGFja2FnZSBoYWQgcHJldmlvdXNseSBiZWVuIGluc3RhbGxlZC4KKworLSBJc3N1ZSAjMTE0OTU6IE9TRiBzdXBwb3J0IGlzIGVsaW1pbmF0ZWQuIEl0IHdhcyBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjIuCisKIAogSURMRQogLS0tLQogCi0tIElzc3VlICMxMTcxODogSURMRSdzIG9wZW4gbW9kdWxlIGRpYWxvZyBjb3VsZG4ndCBmaW5kIHRoZSBfX2luaXRfXy5weSBmaWxlIGluCi0gIGEgcGFja2FnZS4KKy0gSXNzdWUgIzExNzE4OiBJRExFJ3Mgb3BlbiBtb2R1bGUgZGlhbG9nIGNvdWxkbid0IGZpbmQgdGhlIF9faW5pdF9fLnB5CisgIGZpbGUgaW4gYSBwYWNrYWdlLgogCiBUb29scy9EZW1vcwogLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjMTQwNTM6IHBhdGNoY2hlY2sucHkgKCJtYWtlIHBhdGNoY2hlY2siKSBub3cgd29ya3Mgd2l0aCBNUSBwYXRjaGVzLgorICBQYXRjaCBieSBGcmFuY2lzY28gTWFydMOtbiBCcnVndcOpLgorCistIElzc3VlICMxMzkzMDogMnRvMyBpcyBub3cgYWJsZSB0byB3cml0ZSBpdHMgY29udmVydGVkIG91dHB1dCBmaWxlcyB0byBhbm90aGVyCisgIGRpcmVjdG9yeSB0cmVlIGFzIHdlbGwgYXMgY29weWluZyB1bmNoYW5nZWQgZmlsZXMgYW5kIGFsdGVyaW5nIHRoZSBmaWxlCisgIHN1ZmZpeC4gIFNlZSBpdHMgbmV3IC1vLCAtVyBhbmQgLS1hZGQtc3VmZml4IG9wdGlvbnMuICBUaGlzIG1ha2VzIGl0IG1vcmUKKyAgdXNlZnVsIGluIG1hbnkgYXV0b21hdGVkIGNvZGUgdHJhbnNsYXRpb24gd29ya2Zsb3dzLgorCistIElzc3VlICMxMzYyODogcHl0aG9uLWdkYi5weSBpcyBub3cgYWJsZSB0byByZXRyaWV2ZSBtb3JlIGZyYW1lcyBpbiB0aGUgUHl0aG9uCisgIHRyYWNlYmFjayBpZiBQeXRob24gaXMgb3B0aW1pemVkLgorCistIElzc3VlICMxMTk5NjogbGlicHl0aG9uIChnZGIpLCByZXBsYWNlICJweS1idCIgY29tbWFuZCBieSAicHktYnQtZnVsbCIgYW5kCisgIGFkZCBhIHNtYXJ0ZXIgInB5LWJ0IiBjb21tYW5kIHByaW50aW5nIGEgY2xhc3NpYyBQeXRob24gdHJhY2ViYWNrLgorCiAtIElzc3VlICMxMTE3OTogTWFrZSBjY2JlbmNoIHdvcmsgdW5kZXIgUHl0aG9uIDMuMSBhbmQgMi43IGFnYWluLgogCistIElzc3VlICMxMDYzOTogcmVpbmRlbnQucHkgbm8gbG9uZ2VyIGNvbnZlcnRzIG5ld2xpbmVzIGFuZCB3aWxsIHJhaXNlCisgIGFuIGVycm9yIGlmIGF0dGVtcHRpbmcgdG8gY29udmVydCBhIGZpbGUgd2l0aCBtaXhlZCBuZXdsaW5lcy4KKyAgIi0tbmV3bGluZSIgb3B0aW9uIGFkZGVkIHRvIHNwZWNpZnkgbmV3IGxpbmUgY2hhcmFjdGVyLgorCiBFeHRlbnNpb24gTW9kdWxlcwogLS0tLS0tLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjMTY4NDc6IEZpeGVkIGltcHJvcGVyIHVzZSBvZiBfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koKSBpbgorICBub24tcHlkZWJ1ZyBidWlsZHMuIFNldmVyYWwgZXh0ZW5zaW9uIG1vZHVsZXMgbm93IGNvbXBpbGUgY2xlYW5seSB3aGVuCisgIGFzc2VydCgpcyBhcmUgZW5hYmxlZCBpbiBzdGFuZGFyZCBidWlsZHMgKC1EREVCVUcgZmxhZykuCisKKy0gSXNzdWUgIzEzODQwOiBUaGUgZXJyb3IgbWVzc2FnZSBwcm9kdWNlZCBieSBjdHlwZXMuY3JlYXRlX3N0cmluZ19idWZmZXIKKyAgd2hlbiBnaXZlbiBhIFVuaWNvZGUgc3RyaW5nIGhhcyBiZWVuIGZpeGVkLgorCistIElzc3VlICM5OTc1OiBzb2NrZXQ6IEZpeCBpbmNvcnJlY3QgdXNlIG9mIGZsb3dpbmZvIGFuZCBzY29wZV9pZC4gUGF0Y2ggYnkKKyAgVmlsbW9zIE5lYmVoYWouCisKKy0gSXNzdWUgIzc3Nzc6IHNvY2tldDogQWRkIFJlbGlhYmxlIERhdGFncmFtIFNvY2tldHMgKFBGX1JEUykgc3VwcG9ydC4KKworLSBJc3N1ZSAjMTMxNTk6IEZpbGVJTyBhbmQgQloyQ29tcHJlc3Nvci9CWjJEZWNvbXByZXNzb3Igbm93IHVzZSBhIGxpbmVhci10aW1lCisgIGJ1ZmZlciBncm93dGggc3RyYXRlZ3kgaW5zdGVhZCBvZiBhIHF1YWRyYXRpYy10aW1lIG9uZS4KKworLSBJc3N1ZSAjMTAxNDE6IHNvY2tldDogQWRkIFNvY2tldENBTiAoUEZfQ0FOKSBzdXBwb3J0LiBJbml0aWFsIHBhdGNoIGJ5CisgIE1hdHRoaWFzIEZ1Y2hzLCB1cGRhdGVkIGJ5IFRpYWdvIEdvbsOnYWx2ZXMuCisKKy0gSXNzdWUgIzEzMDcwOiBGaXggYSBjcmFzaCB3aGVuIGEgVGV4dElPV3JhcHBlciBjYXVnaHQgaW4gYSByZWZlcmVuY2UgY3ljbGUKKyAgd291bGQgYmUgZmluYWxpemVkIGFmdGVyIHRoZSByZWZlcmVuY2UgdG8gaXRzIHVuZGVybHlpbmcgQnVmZmVyZWRSV1BhaXIncworICB3cml0ZXIgZ290IGNsZWFyZWQgYnkgdGhlIEdDLgorCistIElzc3VlICMxMjg4MTogY3R5cGVzOiBGaXggc2VnZmF1bHQgd2l0aCBsYXJnZSBzdHJ1Y3R1cmUgZmllbGQgbmFtZXMuCisKKy0gSXNzdWUgIzEzMDU4OiBvc3NhdWRpb2RldjogZml4IGEgZmlsZSBkZXNjcmlwdG9yIGxlYWsgb24gZXJyb3IuIFBhdGNoIGJ5CisgIFRob21hcyBKYXJvc2NoLgorCistIElzc3VlICMxMzAxMzogY3R5cGVzOiBGaXggYSByZWZlcmVuY2UgbGVhayBpbiBQeUNBcnJheVR5cGVfZnJvbV9jdHlwZS4KKyAgVGhhbmtzIHRvIFN1bWFuIFNhaGEgZm9yIGZpbmRpbmcgdGhlIGJ1ZyBhbmQgcHJvdmlkaW5nIGEgcGF0Y2guCisKKy0gSXNzdWUgIzEzMDIyOiBGaXg6IF9tdWx0aXByb2Nlc3NpbmcucmVjdmZkKCkgZG9lc24ndCBjaGVjayB0aGF0CisgIGZpbGUgZGVzY3JpcHRvciB3YXMgYWN0dWFsbHkgcmVjZWl2ZWQuCisKKy0gSXNzdWUgIzExNzI3MTE6IEFkZCAnbG9uZyBsb25nJyBzdXBwb3J0IHRvIHRoZSBhcnJheSBtb2R1bGUuCisgIEluaXRpYWwgcGF0Y2ggYnkgT3JlbiBUaXJvc2ggYW5kIEhpcm9rYXp1IFlhbWFtb3RvLgorCistIElzc3VlICMxMjQ4MzogY3R5cGVzOiBGaXggYSBjcmFzaCB3aGVuIHRoZSBkZXN0cnVjdGlvbiBvZiBhIGNhbGxiYWNrCisgIG9iamVjdCB0cmlnZ2VycyB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuCisKKy0gSXNzdWUgIzEyOTUwOiBGaXggcGFzc2luZyBmaWxlIGRlc2NyaXB0b3JzIGluIG11bHRpcHJvY2Vzc2luZywgdW5kZXIKKyAgT3BlbkluZGlhbmEvSWxsdW1vcy4KKworLSBJc3N1ZSAjMTI3NjQ6IEZpeCBhIGNyYXNoIGluIGN0eXBlcyB3aGVuIHRoZSBuYW1lIG9mIGEgU3RydWN0dXJlIGZpZWxkIGlzIG5vdAorICBhIHN0cmluZy4KKworLSBJc3N1ZSAjMTEyNDE6IHN1YmNsYXNzZXMgb2YgY3R5cGVzLkFycmF5IGNhbiBub3cgYmUgc3ViY2xhc3NlZC4KKworLSBJc3N1ZSAjOTY1MTogRml4IGEgY3Jhc2ggd2hlbiBjdHlwZXMuY3JlYXRlX3N0cmluZ19idWZmZXIoMCkgd2FzIHBhc3NlZCB0bworICBzb21lIGZ1bmN0aW9ucyBsaWtlIGZpbGUud3JpdGUoKS4KKworLSBJc3N1ZSAjMTAzMDk6IERlZmluZSBfR05VX1NPVVJDRSBzbyB0aGF0IG1yZW1hcCgpIGdldHMgdGhlIHByb3BlcgorICBzaWduYXR1cmUuICBXaXRob3V0IHRoaXMsIGFyY2hpdGVjdHVyZXMgd2hlcmUgc2l6ZW9mIHZvaWQqICE9IHNpemVvZiBpbnQgYXJlCisgIGJyb2tlbi4gIFBhdGNoIGdpdmVuIGJ5IEhhbGx2YXJkIEIgRnVydXNldGguCisKIC0gSXNzdWUgIzEyMDUxOiBGaXggc2VnZmF1bHQgaW4ganNvbi5kdW1wcygpIHdoaWxlIGVuY29kaW5nIGhpZ2hseS1uZXN0ZWQKICAgb2JqZWN0cyB1c2luZyB0aGUgQyBhY2NlbGVyYXRpb25zLgogCkBAIC0yNjcwLDM1ICs0NzU1LDE4NCBAQAogVGVzdHMKIC0tLS0tCiAKKy0gSXNzdWUgIzExNjg5OiBGaXggYSB2YXJpYWJsZSBzY29waW5nIGVycm9yIGluIGFuIHNxbGl0ZTMgdGVzdAorCistIElzc3VlICMxMzc4NjogUmVtb3ZlIHVuaW1wbGVtZW50ZWQgJ3RyYWNlJyBsb25nIG9wdGlvbiBmcm9tIHJlZ3J0ZXN0LnB5LgorCistIElzc3VlICMxMzcyNTogRml4IHJlZ3J0ZXN0IHRvIHJlY29nbml6ZSB0aGUgZG9jdW1lbnRlZCAtZCBmbGFnLgorICBQYXRjaCBieSBFcm5vIFR1a2lhLgorCistIElzc3VlICMxMzMwNDogU2tpcCB0ZXN0IGNhc2UgaWYgdXNlciBzaXRlLXBhY2thZ2VzIGRpc2FibGVkICgtcyBvcgorICBQWVRIT05OT1VTRVJTSVRFKS4gIChQYXRjaCBieSBDYXJsIE1leWVyKQorCistIElzc3VlICM1NjYxOiBBZGQgYSB0ZXN0IGZvciBFQ09OTlJFU0VUL0VQSVBFIGhhbmRsaW5nIHRvIHRlc3RfYXN5bmNvcmUuIFBhdGNoCisgIGJ5IFhhdmllciBkZSBHYXllLgorCistIElzc3VlICMxMzIxODogRml4IHRlc3Rfc3NsIGZhaWx1cmVzIG9uIERlYmlhbi9VYnVudHUuCisKKy0gUmUtZW5hYmxlIGxpYjJ0bzMncyB0ZXN0X3BhcnNlci5weSB0ZXN0cywgdGhvdWdoIHdpdGggYW4gZXhwZWN0ZWQgZmFpbHVyZQorICAoc2VlIGlzc3VlIDEzMTI1KS4KKworLSBJc3N1ZSAjMTI2NTY6IEFkZCB0ZXN0cyBmb3IgSVB2NiBhbmQgVW5peCBzb2NrZXRzIHRvIHRlc3RfYXN5bmNvcmUuCisKKy0gSXNzdWUgIzY0ODQ6IEFkZCB1bml0IHRlc3RzIGZvciBtYWlsY2FwIG1vZHVsZSAocGF0Y2ggYnkgR3JlZ29yeSBOb2ZpKQorCistIElzc3VlICMxMTY1MTogSW1wcm92ZSB0aGUgTWFrZWZpbGUgdGVzdCB0YXJnZXRzIHRvIHJ1biBtb3JlIG9mIHRoZSB0ZXN0IHN1aXRlCisgIG1vcmUgcXVpY2tseS4gVGhlIC0tbXVsdGlwcm9jZXNzIG9wdGlvbiBpcyBub3cgZW5hYmxlZCBieSBkZWZhdWx0LCByZWR1Y2luZworICB0aGUgYW1vdW50IG9mIHRpbWUgbmVlZGVkIHRvIHJ1biB0aGUgdGVzdHMuICJtYWtlIHRlc3QiIGFuZCAibWFrZSBxdWlja3Rlc3QiCisgIG5vdyBpbmNsdWRlIHNvbWUgcmVzb3VyY2UtaW50ZW5zaXZlIHRlc3RzLCBidXQgbm8gbG9uZ2VyIHJ1biB0aGUgdGVzdCBzdWl0ZQorICB0d2ljZSB0byBjaGVjayBmb3IgYnVncyBpbiAucHljIGdlbmVyYXRpb24uIFRvb2xzL3NjcmlwdHMvcnVuX3Rlc3QucHkgcHJvdmlkZXMKKyAgYW4gZWFzeSBwbGF0Zm9ybS1pbmRlcGVuZGVudCB3YXkgdG8gcnVuIHRlc3Qgc3VpdGUgd2l0aCBzZW5zaWJsZSBkZWZhdWx0cy4KKworLSBJc3N1ZSAjMTIzMzE6IFRoZSB0ZXN0IHN1aXRlIGZvciB0aGUgcGFja2FnaW5nIG1vZHVsZSBjYW4gbm93IHJ1biBmcm9tIGFuCisgIGluc3RhbGxlZCBQeXRob24uCisKKy0gSXNzdWUgIzEyMzMxOiBUaGUgdGVzdCBzdWl0ZSBmb3IgbGliMnRvMyBjYW4gbm93IHJ1biBmcm9tIGFuIGluc3RhbGxlZAorICBQeXRob24uCisKKy0gSXNzdWUgIzEyNjI2OiBJbiByZWdydGVzdCwgYWxsb3cgdG8gZmlsdGVyIHRlc3RzIHVzaW5nIGEgZ2xvYiBmaWx0ZXIKKyAgd2l0aCB0aGUgYGAtbWBgIChvciBgYC0tbWF0Y2hgYCkgb3B0aW9uLiAgVGhpcyB3b3JrcyB3aXRoIGFsbCB0ZXN0IGNhc2VzCisgIHVzaW5nIHRoZSB1bml0dGVzdCBtb2R1bGUuICBUaGlzIGlzIHVzZWZ1bCB3aXRoIGxvbmcgdGVzdCBzdWl0ZXMKKyAgc3VjaCBhcyB0ZXN0X2lvIG9yIHRlc3Rfc3VicHJvY2Vzcy4KKworLSBJc3N1ZSAjMTI2MjQ6IEl0IGlzIG5vdyBwb3NzaWJsZSB0byBmYWlsIGFmdGVyIHRoZSBmaXJzdCBmYWlsdXJlIHdoZW4KKyAgcnVubmluZyBpbiB2ZXJib3NlIG1vZGUgKGBgLXZgYCBvciBgYC1XYGApLCBieSB1c2luZyB0aGUgYGAtLWZhaWxmYXN0YGAKKyAgKG9yIGBgLUdgYCkgb3B0aW9uIHRvIHJlZ3J0ZXN0LiAgVGhpcyBpcyB1c2VmdWwgd2l0aCBsb25nIHRlc3Qgc3VpdGVzCisgIHN1Y2ggYXMgdGVzdF9pbyBvciB0ZXN0X3N1YnByb2Nlc3MuCisKKy0gSXNzdWUgIzEyNTg3OiBDb3JyZWN0IGZhdWx0eSB0ZXN0IGZpbGUgYW5kIHJlZmVyZW5jZSBpbiB0ZXN0X3Rva2VuaXplLgorICAoUGF0Y2ggYnkgUm9iZXJ0IFhpYW8pCisKKy0gSXNzdWUgIzEyNTczOiBBZGQgcmVzb3VyY2UgY2hlY2tzIGZvciBkYW5nbGluZyBUaHJlYWQgYW5kIFByb2Nlc3Mgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTI1NDk6IENvcnJlY3QgdGVzdF9wbGF0Zm9ybSB0byBub3QgZmFpbCB3aGVuIE9TIFggcmV0dXJucyAneDg2XzY0JworICBhcyB0aGUgcHJvY2Vzc29yIHR5cGUgb24gc29tZSBNYWMgc3lzdGVtcy4KKworLSBTa2lwIG5ldHdvcmsgdGVzdHMgd2hlbiBnZXRhZGRyaW5mbygpIHJldHVybnMgRUFJX0FHQUlOLCBtZWFuaW5nIGEgdGVtcG9yYXJ5CisgIGZhaWx1cmUgaW4gbmFtZSByZXNvbHV0aW9uLgorCistIElzc3VlICMxMTgxMjogU29sdmUgdHJhbnNpZW50IHNvY2tldCBmYWlsdXJlIHRvIGNvbm5lY3QgdG8gJ2xvY2FsaG9zdCcKKyAgaW4gdGVzdF90ZWxuZXRsaWIucHkuCisKKy0gU29sdmVkIGEgcG90ZW50aWFsIGRlYWRsb2NrIGluIHRlc3RfdGVsbmV0bGliLnB5LiBSZWxhdGVkIHRvIGlzc3VlICMxMTgxMi4KKworLSBBdm9pZCBmYWlsaW5nIGluIHRlc3Rfcm9ib3RwYXJzZXIgd2hlbiBtdWVibGVzbW9yYWxlZGEuY29tIGlzIGZsYWt5IGFuZAorICBhbiBvdmVyemVhbG91cyBETlMgc2VydmljZSAoZS5nLiBPcGVuRE5TKSByZWRpcmVjdHMgdG8gYSBwbGFjZWhvbGRlcgorICBXZWIgc2l0ZS4KKworLSBBdm9pZCBmYWlsaW5nIGluIHRlc3RfdXJsbGlibmV0LnRlc3RfYmFkX2FkZHJlc3Mgd2hlbiBzb21lIG92ZXJ6ZWFsb3VzCisgIEROUyBzZXJ2aWNlIChlLmcuIE9wZW5ETlMpIHJlc29sdmVzIGEgbm9uLWV4aXN0ZW50IGRvbWFpbiBuYW1lLiAgVGhlIHRlc3QKKyAgaXMgbm93IHNraXBwZWQgaW5zdGVhZC4KKworLSBJc3N1ZSAjMTI0NDA6IFdoZW4gdGVzdGluZyB3aGV0aGVyIHNvbWUgYml0cyBpbiBTU0xDb250ZXh0Lm9wdGlvbnMgY2FuIGJlCisgIHJlc2V0LCBjaGVjayB0aGUgdmVyc2lvbiBvZiB0aGUgT3BlblNTTCBoZWFkZXJzIFB5dGhvbiB3YXMgY29tcGlsZWQgYWdhaW5zdCwKKyAgcmF0aGVyIHRoYW4gdGhlIHJ1bnRpbWUgdmVyc2lvbiBvZiB0aGUgT3BlblNTTCBsaWJyYXJ5LgorCistIElzc3VlICMxMTUxMjogQWRkIGEgdGVzdCBzdWl0ZSBmb3IgdGhlIGNnaXRiIG1vZHVsZS4gUGF0Y2ggYnkgUm9iYmllIENsZW1vbnMuCisKKy0gSXNzdWUgIzEyNDk3OiBJbnN0YWxsIHRlc3QvZGF0YSB0byBwcmV2ZW50IGZhaWx1cmVzIG9mIHRoZSB2YXJpb3VzIGNvZGVjbWFwcworICB0ZXN0cy4KKworLSBJc3N1ZSAjMTI0OTY6IEluc3RhbGwgdGVzdC9jYXBhdGggZGlyZWN0b3J5IHRvIHByZXZlbnQgdGVzdF9jb25uZWN0X2NhcGF0aAorICB0ZXN0Y2FzZSBmYWlsdXJlIGluIHRlc3Rfc3NsLgorCistIElzc3VlICMxMjQ2OTogUnVuIHdha2V1cCBhbmQgcGVuZGluZyBzaWduYWwgdGVzdHMgaW4gYSBzdWJwcm9jZXNzIHRvIHJ1biB0aGUKKyAgdGVzdCBpbiBhIGZyZXNoIHByb2Nlc3Mgd2l0aCBvbmx5IG9uZSB0aHJlYWQgYW5kIHRvIG5vdCBjaGFuZ2Ugc2lnbmFsCisgIGhhbmRsaW5nIG9mIHRoZSBwYXJlbnQgcHJvY2Vzcy4KKworLSBJc3N1ZSAjODcxNjogQXZvaWQgY3Jhc2hlcyBjYXVzZWQgYnkgQXF1YSBUayBvbiBPU1ggd2hlbiBhdHRlbXB0aW5nIHRvIHJ1bgorICB0ZXN0X3RrIG9yIHRlc3RfdHRrX2d1aW9ubHkgdW5kZXIgYSB1c2VybmFtZSB0aGF0IGlzIG5vdCBjdXJyZW50bHkgbG9nZ2VkCisgIGluIHRvIHRoZSBjb25zb2xlIHdpbmRvd3NlcnZlciAoYXMgbWF5IGJlIHRoZSBjYXNlIHVuZGVyIGJ1aWxkYm90IG9yIHNzaCkuCisKKy0gSXNzdWUgIzEyNDA3OiBFeHBsaWNpdGx5IHNraXAgdGVzdF9jYXBpLkVtYmVkZGluZ1Rlc3QgdW5kZXIgV2luZG93cy4KKworLSBJc3N1ZSAjMTI0MDA6IHJlZ3J0ZXN0IC1XIGRvZXNuJ3QgcmVydW4gdGhlIHRlc3RzIHR3aWNlIGFueW1vcmUsIGJ1dCBjYXB0dXJlcworICB0aGUgb3V0cHV0IGFuZCBkaXNwbGF5cyBpdCBvbiBmYWlsdXJlIGluc3RlYWQuIHJlZ3J0ZXN0IC12IGRvZXNuJ3QgcHJpbnQgdGhlCisgIGVycm9yIHR3aWNlIGFueW1vcmUgaWYgdGhlcmUgaXMgb25seSBvbmUgZXJyb3IuCisKKy0gSXNzdWUgIzEyMTQxOiBJbnN0YWxsIGNvcGllcyBvZiB0ZW1wbGF0ZSBDIG1vZHVsZSBmaWxlIHNvIHRoYXQKKyAgdGVzdF9idWlsZF9leHQgb2YgdGVzdF9kaXN0dXRpbHMgYW5kIHRlc3RfY29tbWFuZF9idWlsZF9leHQgb2YKKyAgdGVzdF9wYWNrYWdpbmcgYXJlIG5vIGxvbmdlciBzaWxlbnRseSBza2lwcGVkIHdoZW4KKyAgcnVuIG91dHNpZGUgb2YgYSBidWlsZCBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzg3NDY6IEFkZCBhZGRpdGlvbmFsIHRlc3RzIGZvciBvcy5jaGZsYWdzKCkgYW5kIG9zLmxjaGZsYWdzKCkuCisgIFBhdGNoIGJ5IEdhcnJldHQgQ29vcGVyLgorCistIElzc3VlICMxMDczNjogRml4IHRlc3RfdHRrIHRlc3Rfd2lkZ2V0cyBmYWlsdXJlcyB3aXRoIENvY29hIFRrIDguNS45CisgIDIuOCArICBvbiBNYWMgT1MgWC4gIChQYXRjaCBieSBSb25hbGQgT3Vzc29yZW4pCisKKy0gSXNzdWUgIzEyMDU3OiBBZGQgdGVzdHMgZm9yIElTTyAyMDIyIGNvZGVjcyAoaXNvMjAyMl9qcCwgaXNvMjAyMl9qcF8yLAorICBpc28yMDIyX2tyKS4KKworLSBJc3N1ZSAjMTIwOTY6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIHRlc3RfdGhyZWFkaW5nLnRlc3Rfd2FpdGZvcigpLiBQYXRjaAorICB3cml0dGVuIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjMTE2MTQ6IGltcG9ydCBfX2hlbGxvX18gcHJpbnRzICJIZWxsbyBXb3JsZCEiLiBQYXRjaCB3cml0dGVuIGJ5CisgIEFuZHJlYXMgU3TDvGhyay4KKworLSBJc3N1ZSAjNTcyMzogSW1wcm92ZSBqc29uIHRlc3RzIHRvIGJlIGV4ZWN1dGVkIHdpdGggYW5kIHdpdGhvdXQgYWNjZWxlcmF0aW9ucy4KKworLSBJc3N1ZSAjMTIwNDE6IE1ha2UgdGVzdF93YWl0MyBtb3JlIHJvYnVzdC4KKwogLSBJc3N1ZSAjMTE4NzM6IENoYW5nZSByZWdleCBpbiB0ZXN0X2NvbXBpbGVhbGwgdG8gZml4IG9jY2FzaW9uYWwgZmFpbHVyZXMgd2hlbgogICB3aGVuIHRoZSByYW5kb21seSBnZW5lcmF0ZWQgdGVtcG9yYXJ5IHBhdGggaGFwcGVuZWQgdG8gbWF0Y2ggdGhlIHJlZ2V4LgogCistIElzc3VlICMxMTk1ODogRml4IEZUUCB0ZXN0cyBmb3IgSVB2NiwgYmluZCB0byAiOjoxIiBpbnN0ZWFkIG9mICJsb2NhbGhvc3QiLgorICBQYXRjaCB3cml0dGVuIGJ5IENoYXJsZXMtRnJhbmNvaXMgTmF0YWxpLgorCistIElzc3VlICM4NDA3LCAjMTE4NTk6IEZpeCB0ZXN0cyBvZiB0ZXN0X2lvIHVzaW5nIHRocmVhZHMgYW5kIGFuIGFsYXJtOiB1c2UKKyAgcHRocmVhZF9zaWdtYXNrKCkgdG8gZW5zdXJlIHRoYXQgdGhlIFNJR0FMUk0gc2lnbmFsIGlzIHJlY2VpdmVkIGJ5IHRoZSBtYWluCisgIHRocmVhZC4KKworLSBJc3N1ZSAjMTE4MTE6IEZhY3RvciBvdXQgZGV0ZWN0aW9uIG9mIElQdjYgc3VwcG9ydCBvbiB0aGUgY3VycmVudCBob3N0CisgIGFuZCBtYWtlIGl0IGF2YWlsYWJsZSBhcyBgYHRlc3Quc3VwcG9ydC5JUFY2X0VOQUJMRURgYC4gIFBhdGNoIGJ5CisgIENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKwogLSBJc3N1ZSAjMTA5MTQ6IEFkZCBhIG1pbmltYWwgZW1iZWRkaW5nIHRlc3QgdG8gdGVzdF9jYXBpLgogCi0tIElzc3VlICMxMTc5MDogRml4IHNwb3JhZGljIGZhaWx1cmVzIGluCi0gIHRlc3RfbXVsdGlwcm9jZXNzaW5nLldpdGhQcm9jZXNzZXNUZXN0Q29uZGl0aW9uLgorLSBJc3N1ZSAjMTEyMjM6IFNraXAgdGVzdF9sb2NrX2FjcXVpcmVfaW50ZXJydXB0aW9uKCkgYW5kCisgIHRlc3RfcmxvY2tfYWNxdWlyZV9pbnRlcnJ1cHRpb24oKSBvZiB0ZXN0X3RocmVhZHNpZ25hbHMgaWYgYSB0aHJlYWQgbG9jayBpcworICBpbXBsZW1lbnRlZCB1c2luZyBhIFBPU0lYIG11dGV4IGFuZCBhIFBPU0lYIGNvbmRpdGlvbiB2YXJpYWJsZS4gQSBQT1NJWAorICBjb25kaXRpb24gdmFyaWFibGUgY2Fubm90IGJlIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIChlLmcuIG9uIExpbnV4LCB0aGUKKyAgZnV0ZXggc3lzdGVtIGNhbGwgaXMgcmVzdGFydGVkKS4KKworLSBJc3N1ZSAjMTE3OTA6IEZpeCBzcG9yYWRpYyBmYWlsdXJlcyBpbiB0ZXN0X211bHRpcHJvY2Vzc2luZy5XaXRoUHJvY2Vzc2VzVGVzdENvbmRpdGlvbi4KIAogLSBGaXggcG9zc2libGUgImZpbGUgYWxyZWFkeSBleGlzdHMiIGVycm9yIHdoZW4gcnVubmluZyB0aGUgdGVzdHMgaW4gcGFyYWxsZWwuCiAKIC0gSXNzdWUgIzExNzE5OiBGaXggbWVzc2FnZSBhYm91dCB1bmV4cGVjdGVkIHRlc3RfbXNpbGliIHNraXAgb24gbm9uLVdpbmRvd3MKICAgcGxhdGZvcm1zLiBQYXRjaCBieSBOYWRlZW0gVmF3ZGEuCiAKKy0gSXNzdWUgIzExNzI3OiBBZGQgYSAtLXRpbWVvdXQgb3B0aW9uIHRvIHJlZ3J0ZXN0OiBpZiBhIHRlc3QgdGFrZXMgbW9yZSB0aGFuCisgIFRJTUVPVVQgc2Vjb25kcywgZHVtcHMgdGhlIHRyYWNlYmFjayBvZiBhbGwgdGhyZWFkcyBhbmQgZXhpdHMuCisKIC0gSXNzdWUgIzExNjUzOiBmaXggLVcgd2l0aCAtaiBpbiByZWdydGVzdC4KIAorLSBUaGUgZW1haWwgdGVzdCBzdWl0ZSBub3cgbGl2ZXMgaW4gdGhlIExpYi90ZXN0L3Rlc3RfZW1haWwgcGFja2FnZS4gIFRoZSB0ZXN0CisgIGhhcm5lc3MgY29kZSBoYXMgYWxzbyBiZWVuIG1vZGVybml6ZWQgdG8gYWxsb3cgdXNlIG9mIG5ldyB1bml0dGVzdCBmZWF0dXJlcy4KKworLSByZWdydGVzdCBub3cgZGlzY292ZXJzIHRlc3QgcGFja2FnZXMgYXMgd2VsbCBhcyB0ZXN0IG1vZHVsZXMuCisKIC0gSXNzdWUgIzExNTc3OiBpbXByb3ZlIHRlc3QgY292ZXJhZ2Ugb2YgYmluaGV4LnB5LiBQYXRjaCBieSBBcmthZHkgS29wbHlhcm92LgogCistIE5ldyB0ZXN0X2NyYXNoZXJzIGFkZGVkIHRvIGV4ZXJjaXNlIHRoZSBzY3JpcHRzIGluIHRoZSBMaWIvdGVzdC9jcmFzaGVycworICBkaXJlY3RvcnkgYW5kIGNvbmZpcm0gdGhleSBmYWlsIGFzIGV4cGVjdGVkCisKIC0gSXNzdWUgIzExNTc4OiBhZGRlZCB0ZXN0IGZvciB0aGUgdGltZWl0IG1vZHVsZS4gIFBhdGNoIGJ5IE1pY2hhZWwgSGVucnkuCiAKIC0gSXNzdWUgIzExNTAzOiBpbXByb3ZlIHRlc3QgY292ZXJhZ2Ugb2YgcG9zaXhwYXRoLnB5LiBQYXRjaCBieSBFdmFuIERhbmRyZWEuCiAKLS0gSXNzdWUgIzExNTA1OiBpbXByb3ZlcyB0ZXN0IGNvdmVyYWdlIG9mIHN0cmluZy5weS4gUGF0Y2ggYnkgQWxpY2lhCi0gIEFybGVuLgorLSBJc3N1ZSAjMTE1MDU6IGltcHJvdmVzIHRlc3QgY292ZXJhZ2Ugb2Ygc3RyaW5nLnB5LCBpbmNyZWFzZXMgZ3JhbnVsYXJpdHkgb2YKKyAgc3RyaW5nLkZvcm1hdHRlciB0ZXN0cy4gSW5pdGlhbCBwYXRjaCBieSBBbGljaWEgQXJsZW4uCiAKIC0gSXNzdWUgIzExNTQ4OiBJbXByb3ZlIHRlc3QgY292ZXJhZ2Ugb2YgdGhlIHNodXRpbCBtb2R1bGUuIFBhdGNoIGJ5CiAgIEV2YW4gRGFuZHJlYS4KIAogLSBJc3N1ZSAjMTE1NTQ6IFJlYWN0aXZhdGVkIHRlc3RfZW1haWxfY29kZWNzLgogCistIElzc3VlICMxMTUwNTogaW1wcm92ZXMgdGVzdCBjb3ZlcmFnZSBvZiBzdHJpbmcucHkuIFBhdGNoIGJ5IEFsaWNpYQorICBBcmxlbgorCiAtIElzc3VlICMxMTQ5MDogdGVzdF9zdWJwcm9jZXNzOnRlc3RfbGVha2luZ19mZHNfb25fZXJyb3Igbm8gbG9uZ2VyIGdpdmVzIGEKICAgZmFsc2UgcG9zaXRpdmUgaWYgdGhlIGxhc3QgZGlyZWN0b3J5IGluIHRoZSBwYXRoIGlzIGluYWNjZXNzaWJsZS4KIApAQCAtMjcxMSw1NDA3ICs0OTQ1LDcyIEBACiAtIElzc3VlICM5OTMxOiBGaXggaGFuZ3MgaW4gR1VJIHRlc3RzIHVuZGVyIFdpbmRvd3MgaW4gY2VydGFpbiBjb25kaXRpb25zLgogICBQYXRjaCBieSBIaXJva2F6dSBZYW1hbW90by4KIAorLSBJc3N1ZSAjMTA1MTI6IFByb3Blcmx5IGNsb3NlIHNvY2tldHMgdW5kZXIgdGVzdC50ZXN0X2NnaS4KKworLSBJc3N1ZSAjMTA5OTI6IE1ha2UgdGVzdHMgcGFzcyB1bmRlciBjb3ZlcmFnZS4KKwogLSBJc3N1ZSAjMTA4MjY6IFByZXZlbnQgc3BvcmFkaWMgZmFpbHVyZSBpbiB0ZXN0X3N1YnByb2Nlc3Mgb24gU29sYXJpcyBkdWUKICAgdG8gb3BlbiBkb29yIGZpbGVzLgogCistIElzc3VlICMxMDk5MDogUHJldmVudCB0ZXN0cyBmcm9tIGNsb2JiZXJpbmcgYSBzZXQgdHJhY2UgZnVuY3Rpb24uCisKK0MtQVBJCistLS0tLQorCistIEFkZCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCBhbmQgUHlPYmplY3RfR2VuZXJpU2V0RGljdC4gVGhleSBhcmUgZ2VuZXJpYworICBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZSBnZXR0ZXIgYW5kIHNldHRlciBvZiBhIGBgX19kaWN0X19gYCBkZXNjcmlwdG9yIG9mIEMKKyAgdHlwZXMuCisKKy0gSXNzdWUgIzEzNzI3OiBBZGQgMyBtYWNyb3MgdG8gYWNjZXNzIFB5RGF0ZVRpbWVfRGVsdGEgbWVtYmVyczoKKyAgUHlEYXRlVGltZV9ERUxUQV9HRVRfREFZUywgUHlEYXRlVGltZV9ERUxUQV9HRVRfU0VDT05EUywKKyAgUHlEYXRlVGltZV9ERUxUQV9HRVRfTUlDUk9TRUNPTkRTLgorCistIElzc3VlICMxMDU0MjogQWRkIDQgbWFjcm9zIHRvIHdvcmsgd2l0aCBzdXJyb2dhdGVzOiBQeV9VTklDT0RFX0lTX1NVUlJPR0FURSwKKyAgUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURSwgUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFLAorICBQeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUy4KKworLSBJc3N1ZSAjMTI3MjQ6IEFkZCBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQgbWFjcm8gZm9yIHJldHVybmluZyBOb3RJbXBsZW1lbnRlZC4KKworLSBQWV9QQVRDSExFVkVMX1JFVklTSU9OIGhhcyBiZWVuIHJlbW92ZWQsIHNpbmNlIGl0J3MgbWVhbmluZ2xlc3Mgd2l0aAorICBNZXJjdXJpYWwuCisKKy0gSXNzdWUgIzEyMTczOiBUaGUgZmlyc3QgYXJndW1lbnQgb2YgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwgaXMgbm93IGBjb25zdAorICBjaGFyICpgIGluc3RlYWQgb2YgYGNoYXIgKmAuCisKKy0gSXNzdWUgIzEyMzgwOiBQeUFyZ19QYXJzZVR1cGxlIG5vdyBhY2NlcHRzIGEgYnl0ZWFycmF5IGZvciB0aGUgJ2MnIGZvcm1hdC4KKwogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMxMzQ5ODogQ2xhcmlmeSBkb2NzIG9mIG9zLm1ha2VkaXJzKCkncyBleGlzdF9vayBhcmd1bWVudC4gIERvbmUgd2l0aAorICBncmVhdCBuYXRpdmUtc3BlYWtlciBoZWxwIGZyb20gUi4gRGF2aWQgTXVycmF5LgorCistIElzc3VlcyAjMTM0OTEgYW5kICMxMzk5NTogRml4IG1hbnkgZXJyb3JzIGluIHNxbGl0ZTMgZG9jdW1lbnRhdGlvbi4KKyAgSW5pdGlhbCBwYXRjaCBmb3IgIzEzNDkxIGJ5IEpvaGFubmVzIFZvZ2VsLgorCistIElzc3VlICMxMzQwMjogRG9jdW1lbnQgYWJzb2x1dGVuZXNzIG9mIHN5cy5leGVjdXRhYmxlLgorCistIElzc3VlICMxMzg4MzogUFlUSE9OQ0FTRU9LIGFsc28gd29ya3Mgb24gT1MgWC4KKworLSBJc3N1ZSAjOTAyMTogQWRkIGFuIGludHJvZHVjdGlvbiB0byB0aGUgY29weSBtb2R1bGUgZG9jdW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjNjAwNTogRXhhbXBsZXMgaW4gdGhlIHNvY2tldCBsaWJyYXJ5IGRvY3VtZW50YXRpb24gdXNlIHNlbmRhbGwsIHdoZXJlCisgIHJlbGV2YW50LCBpbnN0ZWFkIHNlbmQgbWV0aG9kLgorCistIElzc3VlICMxMjc5ODogVXBkYXRlZCB0aGUgbWltZXR5cGVzIGRvY3VtZW50YXRpb24uCisKKy0gSXNzdWUgIzEyOTQ5OiBEb2N1bWVudCB0aGUga3dvbmx5YXJnY291bnQgYXJndW1lbnQgZm9yIHRoZSBQeUNvZGVfTmV3CisgIEMgQVBJIGZ1bmN0aW9uLgorCistIElzc3VlICMxMzUxMzogRml4IGlvLklPQmFzZSBkb2N1bWVudGF0aW9uIHRvIGNvcnJlY3RseSBsaW5rIHRvIHRoZQorICBpby5JT0Jhc2UucmVhZGxpbmUgbWV0aG9kIGluc3RlYWQgb2YgdGhlIHJlYWRsaW5lIG1vZHVsZS4KKworLSBJc3N1ZSAjMTMyMzc6IFJlb3JnYW5pc2Ugc3VicHJvY2VzcyBkb2N1bWVudGF0aW9uIHRvIGVtcGhhc2lzZSBjb252ZW5pZW5jZQorICBmdW5jdGlvbnMgYW5kIHRoZSBtb3N0IGNvbW1vbmx5IG5lZWRlZCBhcmd1bWVudHMgdG8gUG9wZW4uCisKKy0gSXNzdWUgIzEzMTQxOiBEZW1vbnN0cmF0ZSByZWNvbW1lbmRlZCBzdHlsZSBmb3Igc29ja2V0c2VydmVyIGV4YW1wbGVzLgorCiAtIElzc3VlICMxMTgxODogRml4IHRlbXBmaWxlIGV4YW1wbGVzIGZvciBQeXRob24gMy4KIAogCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDIwLUZlYi0yMDExKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTEyNDk6IEZpeCBwb3RlbnRpYWwgY3Jhc2hlcyB3aGVuIHVzaW5nIHRoZSBsaW1pdGVkIEFQSS4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzExMjIyOiBGaXggbm9uLWZyYW1ld29yayBzaGFyZWQgbGlicmFyeSBidWlsZCBvbiBNYWMgT1MgWC4KLQotLSBJc3N1ZSAjMTExODQ6IEZpeCBsYXJnZS1maWxlIHN1cHBvcnQgb24gQUlYLgotCi0tIElzc3VlICM5NDEzNDY6IEZpeCBicm9rZW4gc2hhcmVkIGxpYnJhcnkgYnVpbGQgb24gQUlYLgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEwNzA5OiBBZGQgdXBkYXRlZCBBSVggbm90ZXMgaW4gTWlzYy9SRUFETUUuQUlYLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBSZWxlYXNlIENhbmRpZGF0ZSAzPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDEzLUZlYi0yMDExKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTExMzQ6IEFkZCBtaXNzaW5nIGZpZWxkcyB0byB0eXBlc2xvdHMuaC4KLQotLSBJc3N1ZSAjMTExMzU6IFJlbW92ZSByZWR1bmRhbnQgZG9jIGZpZWxkIGZyb20gUHlUeXBlX1NwZWMuCi0KLS0gSXNzdWUgIzExMDY3OiBBZGQgUHlUeXBlX0dldEZsYWdzLCB0byBzdXBwb3J0IFB5VW5pY29kZV9DaGVjayBpbiB0aGUgbGltaXRlZAotICBBQkkuCi0KLS0gSXNzdWUgIzExMTE4OiBGaXggYm9ndXMgZXhwb3J0IG9mIE5vbmUgaW4gcHl0aG9uMy5kbGwuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTExMTY6IGFueSBlcnJvciBkdXJpbmcgYWRkaXRpb24gb2YgYSBtZXNzYWdlIHRvIGEgbWFpbGJveCBub3cgY2F1c2VzIGEKLSAgcm9sbGJhY2ssIGluc3RlYWQgb2YgbGVhdmluZyB0aGUgbWFpbGJveCBwYXJ0aWFsbHkgbW9kaWZpZWQuCi0KLS0gSXNzdWUgIzExMTMyOiBGaXggcGFzc2luZyBvZiAib3B0aW1pemUiIHBhcmFtZXRlciB3aGVuIHJlY3Vyc2luZyBpbgotICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKCkuCi0KLS0gSXNzdWUgIzExMTEwOiBGaXggYSBwb3RlbnRpYWwgZGVjcmVmIG9mIGEgTlVMTCBpbiBzcWxpdGUzLgotCi0tIElzc3VlICM4Mjc1OiBGaXggcGFzc2luZyBvZiBjYWxsYmFjayBhcmd1bWVudHMgd2l0aCBjdHlwZXMgdW5kZXIgV2luNjQuICBQYXRjaAotICBieSBTdGFuIE1paGFpLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTEwNzk6IFRoZSAvQXBwbGljYXRpb25zL1B5dGhvbiB4LnggZm9sZGVyIGNyZWF0ZWQgYnkgdGhlIE1hYyBPUyBYCi0gIGluc3RhbGxlcnMgbm93IGluY2x1ZGVzIGEgbGluayB0byB0aGUgaW5zdGFsbGVkIGRvY3VtZW50YXRpb24gYW5kIG5vIGxvbmdlcgotICBpbmNsdWRlcyBhbiBFeHRyYXMgZGlyZWN0b3J5LiAgVGhlIFRvb2xzIGRpcmVjdG9yeSBpcyBub3cgaW5zdGFsbGVkIGluIHRoZQotICBmcmFtZXdvcmsgdW5kZXIgc2hhcmUvZG9jLgotCi0tIElzc3VlICMxMTEyMTogRml4IGJ1aWxkaW5nIHdpdGggLS1lbmFibGUtc2hhcmVkLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTA5NzE6IHRlc3RfemlwaW1wb3J0X3N1cHBvcnQgaXMgb25jZSBhZ2FpbiBjb21wYXRpYmxlIHdpdGggdGhlIHJlZmxlYWsKLSAgaHVudGVyIGZlYXR1cmUgb2YgdGVzdC5yZWdydGVzdC4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgUmVsZWFzZSBDYW5kaWRhdGUgMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAzMC1KYW4tMjAxMSoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEwNDUxOiBtZW1vcnl2aWV3IG9iamVjdHMgY291bGQgYWxsb3cgdG8gbXV0YXRlIGEgcmVhZGFibGUgYnVmZmVyLgotICBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzkxMjQ6IG1haWxib3ggbm93IGFjY2VwdHMgYmluYXJ5IGlucHV0IGFuZCByZWFkcyBhbmQgd3JpdGVzIG1haWxib3gKLSAgZmlsZXMgaW4gYmluYXJ5IG1vZGUsIHVzaW5nIHRoZSBlbWFpbCBwYWNrYWdlJ3MgYmluYXJ5IHN1cHBvcnQgdG8gcGFyc2UKLSAgYXJiaXRyYXJ5IGVtYWlsIG1lc3NhZ2VzLiAgU3RyaW5nSU8gYW5kIHRleHQgZmlsZSBpbnB1dCBpcyBkZXByZWNhdGVkLAotICBhbmQgc3RyaW5nIGlucHV0IGZhaWxzIGVhcmx5IGlmIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGFyZSB1c2VkLCB3aGVyZQotICBwcmV2aW91c2x5IGl0IHdvdWxkIGZhaWwgd2hlbiB0aGUgZW1haWwgd2FzIHByb2Nlc3NlZCBpbiBhIGxhdGVyIHN0ZXAuCi0KLS0gSXNzdWUgIzEwODQ1OiBNaXRpZ2F0ZSB0aGUgaW5jb21wYXRpYmlsaXR5IGJldHdlZW4gdGhlIG11bHRpcHJvY2Vzc2luZwotICBtb2R1bGUgb24gV2luZG93cyBhbmQgdGhlIHVzZSBvZiBwYWNrYWdlLCB6aXBmaWxlIG9yIGRpcmVjdG9yeSBleGVjdXRpb24KLSAgYnkgc3BlY2lhbCBjYXNpbmcgbWFpbiBtb2R1bGVzIHRoYXQgYWN0dWFsbHkgKmFyZSogY2FsbGVkIF9fbWFpbl9fLnB5LgotCi0tIElzc3VlICMxMTA0NTogUHJvdGVjdCBsb2dnaW5nIGNhbGwgYWdhaW5zdCBOb25lIGFyZ3VtZW50LgotCi0tIElzc3VlICMxMTA1MjogQ29ycmVjdCBJRExFIG1lbnUgYWNjZWxlcmF0b3JzIG9uIE1hYyBPUyBYIGZvciBTYXZlCi0gIGNvbW1hbmRzLgotCi0tIElzc3VlICMxMTA1MzogRml4IElETEUgIlN5bnRheCBFcnJvciIgd2luZG93cyB0byBiZWhhdmUgYXMgaW4gMi54LAotICBwcmV2ZW50aW5nIGEgY29uZnVzaW5nIGh1bmcgYXBwZWFyYW5jZSBvbiBPUyBYIHdpdGggdGhlIHdpbmRvd3MKLSAgb2JzY3VyZWQuCi0KLS0gSXNzdWUgIzEwOTQwOiBXb3JrYXJvdW5kIGFuIElETEUgaGFuZyBvbiBNYWMgT1MgWCAxMC42IHdoZW4gdXNpbmcgdGhlCi0gIG1lbnUgYWNjZWxlcmF0b3JzIGZvciBPcGVuIE1vZHVsZSwgR28gdG8gTGluZSwgYW5kIE5ldyBJbmRlbnQgV2lkdGguCi0gIFRoZSBhY2NlbGVyYXRvcnMgc3RpbGwgd29yayBidXQgbm8gbG9uZ2VyIGFwcGVhciBpbiB0aGUgbWVudSBpdGVtcy4KLQotLSBJc3N1ZSAjMTA5ODk6IEZpeCBhIGNyYXNoIG9uIFNTTENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKE5vbmUsIFRydWUpLgotCi0tIElzc3VlICMxMTAyMDogQ29tbWFuZC1saW5lIHB5Y2xiciB3YXMgYnJva2VuIGJlY2F1c2Ugb2YgbWlzc2luZyAyLXRvLTMKLSAgY29udmVyc2lvbi4KLQotLSBJc3N1ZSAjMTEwMTk6IEZpeGVkIEJ5dGVzR2VuZXJhdG9yIHNvIHRoYXQgaXQgY29ycmVjdGx5IGhhbmRsZXMgYSBNZXNzYWdlCi0gIHdpdGggYSBOb25lIGJvZHkuCi0KLS0gSXNzdWUgIzExMDE0OiBNYWtlICdmaWx0ZXInIGFyZ3VtZW50IGluIHRhcmZpbGUuVGFyZmlsZS5hZGQoKSBpbnRvIGEKLSAga2V5d29yZC1vbmx5IGFyZ3VtZW50LiAgVGhlIHByZWNlZGluZyBwb3NpdGlvbmFsIGFyZ3VtZW50IHdhcyBkZXByZWNhdGVkLAotICBzbyBpdCBtYWRlIG5vIHNlbnNlIHRvIGFkZCBmaWx0ZXIgYXMgYSBwb3NpdGlvbmFsIGFyZ3VtZW50LgotCi0tIElzc3VlICMxMTAwNDogUmVwYWlyZWQgZWRnZSBjYXNlIGluIGRlcXVlLmNvdW50KCkuCi0KLS0gSXNzdWUgIzEwOTc0OiBJRExFIG5vIGxvbmdlciBjcmFzaGVzIGlmIGl0cyByZWNlbnQgZmlsZXMgbGlzdCBpbmNsdWRlcyBmaWxlcwotICB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluIHRoZWlyIHBhdGggbmFtZXMuCi0KLS0gSGF2ZSBoYXNobGliLmFsZ29yaXRobXNfYXZhaWxhYmxlIGFuZCBoYXNobGliLmFsZ29yaXRobXNfZ3VhcmFudGVlZCBib3RoCi0gIHJldHVybiBzZXRzIGluc3RlYWQgb2Ygb25lIHJldHVybmluZyBhIHR1cGxlIGFuZCB0aGUgb3RoZXIgYSBmcm96ZW5zZXQuCi0KLS0gSXNzdWUgIzEwOTg3OiBGaXggdGhlIHJlY3Vyc2lvbiBsaW1pdCBoYW5kbGluZyBpbiB0aGUgX3BpY2tsZSBtb2R1bGUuCi0KLS0gSXNzdWUgIzEwOTgzOiBGaXggc2V2ZXJhbCBidWdzIG1ha2luZyB0dW5uZWwgcmVxdWVzdHMgaW4gaHR0cC5jbGllbnQuCi0KLS0gSXNzdWUgIzEwOTU1OiB6aXBpbXBvcnQgdXNlcyBBU0NJSSBlbmNvZGluZyBpbnN0ZWFkIG9mIGNwNDM3IHRvIGRlY29kZQotICBmaWxlbmFtZXMsIGF0IGJvb3RzdHJhcCwgaWYgdGhlIGNvZGVjIHJlZ2lzdHJ5IGlzIG5vdCByZWFkeSB5ZXQuIEl0IGlzIHN0aWxsCi0gIHBvc3NpYmxlIHRvIGhhdmUgbm9uLUFTQ0lJIGZpbGVuYW1lcyB1c2luZyB0aGUgVW5pY29kZSBmbGFnIChVVEYtOCBlbmNvZGluZykKLSAgZm9yIGFsbCBmaWxlIGVudHJpZXMgaW4gdGhlIFpJUCBmaWxlLgotCi0tIElzc3VlICMxMDk0OTogSW1wcm92ZWQgcm9idXN0bmVzcyBvZiByb3RhdGluZyBmaWxlIGhhbmRsZXJzLgotCi0tIElzc3VlICMxMDk1NTogRml4IGEgcG90ZW50aWFsIGNyYXNoIHdoZW4gdHJ5aW5nIHRvIG1tYXAoKSBhIGZpbGUgcGFzdCBpdHMKLSAgbGVuZ3RoLiAgSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KLQotLSBJc3N1ZSAjMTA4OTg6IEFsbG93IGNvbXBpbGluZyB0aGUgcG9zaXggbW9kdWxlIHdoZW4gdGhlIEMgbGlicmFyeSBkZWZpbmVzCi0gIGEgc3ltYm9sIG5hbWVkIEZTVEFULgotCi0tIElzc3VlICMxMDk4MDogdGhlIEhUVFAgc2VydmVyIG5vdyBlbmNvZGVzIGhlYWRlcnMgd2l0aCBpc28tODg1OS0xIChsYXRpbjEpCi0gIGVuY29kaW5nLiAgVGhpcyBpcyB0aGUgcHJlZmVycmVkIGVuY29kaW5nIG9mIFBFUCAzMzMzIGFuZCB0aGUgYmFzZSBlbmNvZGluZwotICBvZiBIVFRQIDEuMS4KLQotLSBUbyBtYXRjaCB0aGUgYmVoYXZpb3VyIG9mIEhUVFAgc2VydmVyLCB0aGUgSFRUUCBjbGllbnQgbGlicmFyeSBub3cgYWxzbwotICBlbmNvZGVzIGhlYWRlcnMgd2l0aCBpc28tODg1OS0xIChsYXRpbjEpIGVuY29kaW5nLiAgSXQgd2FzIGFscmVhZHkgZG9pbmcKLSAgdGhhdCBmb3IgaW5jb21pbmcgaGVhZGVycyB3aGljaCBtYWtlcyB0aGlzIGJlaGF2aW91ciBub3cgY29uc2lzdGVudCBpbgotICBib3RoIGluY29taW5nIGFuZCBvdXRnb2luZyBkaXJlY3Rpb24uCi0KLS0gSXNzdWUgIzk1MDk6IGFyZ3BhcnNlIG5vdyBwcm9wZXJseSBoYW5kbGVzIElPRXJyb3JzIHJhaXNlZCBieQotICBhcmdwYXJzZS5GaWxlVHlwZS4KLQotLSBJc3N1ZSAjMTA5NjE6IFRoZSBuZXcgcHlkb2Mgc2VydmVyIG5vdyBiZXR0ZXIgaGFuZGxlcyBleGNlcHRpb25zIHJhaXNlZAotICBkdXJpbmcgcmVxdWVzdCBoYW5kbGluZy4KLQotLSBJc3N1ZSAjMTA2ODA6IEZpeCBtdXR1YWxseSBleGNsdXNpdmUgYXJndW1lbnRzIGZvciBhcmd1bWVudCBncm91cHMgaW4KLSAgYXJncGFyc2UuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxMTA1NDogQWxsb3cgTWFjIE9TIFggaW5zdGFsbGVyIGJ1aWxkcyB0byBhZ2FpbiB3b3JrIG9uIDEwLjUgd2l0aAotICB0aGUgc3lzdGVtLXByb3ZpZGVkIFB5dGhvbi4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgUmVsZWFzZSBDYW5kaWRhdGUgMQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMTYtSmFuLTIwMTEqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMDg4OTogcmFuZ2UgaW5kZXhpbmcgYW5kIHNsaWNpbmcgbm93IHdvcmtzIGNvcnJlY3RseSBvbiByYW5nZXMgd2l0aAotICBhIGxlbmd0aCB0aGF0IGV4Y2VlZHMgc3lzLm1heHNpemUuCi0KLS0gSXNzdWUgIzEwODkyOiBEb24ndCBzZWdmYXVsdCB3aGVuIHRyeWluZyB0byBkZWxldGUgX19hYnN0cmFjdG1ldGhvZHNfXyBmcm9tIGEKLSAgY2xhc3MuCi0KLS0gSXNzdWUgIzgwMjA6IEF2b2lkIGEgY3Jhc2ggd2hlcmUgdGhlIHNtYWxsIG9iamVjdHMgYWxsb2NhdG9yIHdvdWxkIHJlYWQKLSAgbm9uLVB5dGhvbiBtYW5hZ2VkIG1lbW9yeSB3aGlsZSBpdCBpcyBiZWluZyBtb2RpZmllZCBieSBhbm90aGVyIHRocmVhZC4gIFBhdGNoCi0gIGJ5IE1hdHQgQmFuZHkuCi0KLS0gSXNzdWUgIzEwODQxOiBPbiBXaW5kb3dzLCBzZXQgdGhlIGJpbmFyeSBtb2RlIG9uIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciBhbmQgYWxsCi0gIGlvLkZpbGVJTyBvYmplY3RzICh0byBub3QgdHJhbnNsYXRlIG5ld2xpbmVzLCBcclxuIDw9PiBcbikuICBUaGUgUHl0aG9uIHBhcnNlcgotICB0cmFuc2xhdGVzIG5ld2xpbmVzIChcclxuID0+IFxuKS4KLQotLSBSZW1vdmUgYnVmZmVyIEFQSSBmcm9tIHN0YWJsZSBBQkkgZm9yIG5vdywgc2VlICMxMDE4MS4KLQotLSBJc3N1ZSAjODY1MTogUHlBcmdfUGFyc2UqKCkgZnVuY3Rpb25zIHJhaXNlIGFuIE92ZXJmbG93RXJyb3IgaWYgdGhlIGZpbGUKLSAgZG9lc24ndCBoYXZlIFBZX1NTSVpFX1RfQ0xFQU4gZGVmaW5lIGFuZCB0aGUgc2l6ZSBkb2Vzbid0IGZpdCBpbiBhbiBpbnQKLSAgKGxlbmd0aCBiaWdnZXIgdGhhbiAyXjMxLTEgYnl0ZXMpLgotCi0tIElzc3VlICM5MDE1LCAjOTYxMTogRmlsZUlPLnJlYWRpbnRvKCksIEZpbGVJTy53cml0ZSgpLCBvcy53cml0ZSgpIGFuZAotICBzdGRwcmludGVyLndyaXRlKCkgY2xhbXAgdGhlIGxlbmd0aCB0byBJTlRfTUFYIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzgyNzg6IE9uIFdpbmRvd3MgYW5kIHdpdGggYSBOVEZTIGZpbGVzeXN0ZW0sIG9zLnN0YXQoKSBhbmQgb3MudXRpbWUoKQotICBjYW4gbm93IGhhbmRsZSBkYXRlcyBhZnRlciAyMDM4LgotCi0tIElzc3VlICMxMDc4MDogUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoKSBhbmQKLSAgUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoKSBkZWNvZGUgdGhlIGZpbGVuYW1lIGZyb20gdGhlCi0gIGZpbGVzeXN0ZW0gZW5jb2RpbmcgaW5zdGVhZCBvZiBVVEYtOC4KLQotLSBJc3N1ZSAjMTA3Nzk6IFB5RXJyX1dhcm5FeHBsaWNpdCgpIGRlY29kZXMgdGhlIGZpbGVuYW1lIGZyb20gdGhlIGZpbGVzeXN0ZW0KLSAgZW5jb2RpbmcgaW5zdGVhZCBvZiBVVEYtOC4KLQotLSBBZGQgc3lzLmZsYWdzIGF0dHJpYnV0ZSBmb3IgdGhlIG5ldyAtcSBjb21tYW5kLWxpbmUgb3B0aW9uLgotCi0tIElzc3VlICMxMTUwNjogVHJ5aW5nIHRvIGFzc2lnbiB0byBhIGJ5dGVzIGxpdGVyYWwgc2hvdWxkIHJlc3VsdCBpbiBhCi0gIFN5bnRheEVycm9yLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzEwOTE2OiBtbWFwIHNob3VsZCBub3Qgc2VnZmF1bHQgd2hlbiBhIGZpbGUgaXMgbWFwcGVkIHVzaW5nIDAgYXMgbGVuZ3RoCi0gIGFuZCBhIG5vbi16ZXJvIG9mZnNldCwgYW5kIGFuIGF0dGVtcHQgdG8gcmVhZCBwYXN0IHRoZSBlbmQgb2YgZmlsZSBpcyBtYWRlCi0gIChJbmRleEVycm9yIGlzIHJhaXNlZCBpbnN0ZWFkKS4gIFBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgotCi0tIElzc3VlICMxMDE1NCwgIzEwMDkwOiBjaGFuZ2UgdGhlIG5vcm1hbGl6YXRpb24gb2YgVVRGLTggdG8gIlVURi04IiBpbnN0ZWFkCi0gIG9mICJVVEY4IiBpbiB0aGUgbG9jYWxlIG1vZHVsZSBhcyB0aGUgbGF0dGVyIGlzIG5vdCBzdXBwb3J0ZWQgTWFjT1NYIGFuZCBPcGVuQlNELgotCi0tIElzc3VlICMxMDY4NDogc2h1dGlsLm1vdmUgdXNlZCB0byBkZWxldGUgYSBmb2xkZXIgb24gY2FzZSBpbnNlbnNpdGl2ZQotICBmaWxlc3lzdGVtcyB3aGVuIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIG5hbWUgd2hlcmUgdGhlIHNhbWUgZXhjZXB0Ci0gIGZvciB0aGUgY2FzZS4KLQotLSBJc3N1ZSAjMTA5MDc6IFdhcm4gT1MgWCAxMC42IElETEUgdXNlcnMgdG8gdXNlIEFjdGl2ZVN0YXRlIFRjbC9UayA4LjUsIHJhdGhlcgotICB0aGFuIHRoZSBjdXJyZW50bHkgcHJvYmxlbWF0aWMgQXBwbGUtc3VwcGxpZWQgb25lLCB3aGVuIHJ1bm5pbmcgd2l0aCB0aGUKLSAgNjQtLzMyLWJpdCBpbnN0YWxsZXIgdmFyaWFudC4KLQotLSBJc3N1ZSAjNDk1MzogY2dpLkZpZWxkU3RvcmFnZSBhbmQgY2dpLnBhcnNlKCkgcGFyc2UgdGhlIHJlcXVlc3QgYXMgYnl0ZXMsIG5vdAotICBhcyB1bmljb2RlLCBhbmQgYWNjZXB0IGJpbmFyeSBmaWxlcy4gQWRkIGVuY29kaW5nIGFuZCBlcnJvcnMgYXR0cmlidXRlcyB0bwotICBjZ2kuRmllbGRTdG9yYWdlLiBQYXRjaCB3cml0dGVuIGJ5IFBpZXJyZSBRdWVudGVsICh3aXRoIG1hbnkgaW5wdXRzIGJ5IEdsZW5uCi0gIExpbmRlcm1hbikuCi0KLS0gQWRkIGVuY29kaW5nIGFuZCBlcnJvcnMgYXJndW1lbnRzIHRvIHVybGxpYi5wYXJzZV9xcygpIGFuZCB1cmxsaWIucGFyc2VfcXNsKCkuCi0KLS0gSXNzdWUgIzEwODk5OiBObyBmdW5jdGlvbiB0eXBlIGFubm90YXRpb25zIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LiAgUmVtb3ZlZAotICBmdW5jdGlvbiB0eXBlIGFubm90YXRpb25zIGZyb20gX3B5aW8ucHkuCi0KLS0gSXNzdWUgIzEwODc1OiBVcGRhdGUgUmVndWxhciBFeHByZXNzaW9uIEhPV1RPOyBwYXRjaCBieSAnU2lsZW50R2hvc3QnLgotCi0tIElzc3VlICMxMDg3MjogVGhlIHJlcHIoKSBvZiBUZXh0SU9XcmFwcGVyIG9iamVjdHMgbm93IGluY2x1ZGVzIHRoZSBtb2RlCi0gIGlmIGF2YWlsYWJsZS4KLQotLSBJc3N1ZSAjMTA4Njk6IEZpeGVkIGJ1ZyB3aGVyZSBhc3QuaW5jcmVtZW50X2xpbmVubyBtb2RpZmllZCB0aGUgcm9vdCBub2RlCi0gIHR3aWNlLgotCi0tIElzc3VlICM1ODcxOiBlbWFpbC5oZWFkZXIuSGVhZGVyLmVuY29kZSBub3cgcmFpc2VzIGFuIGVycm9yIGlmIGFueQotICBjb250aW51YXRpb24gbGluZSBpbiB0aGUgZm9ybWF0dGVkIHZhbHVlIGhhcyBubyBsZWFkaW5nIHdoaXRlIHNwYWNlIGFuZCBsb29rcwotICBsaWtlIGEgaGVhZGVyLiAgU2luY2UgR2VuZXJhdG9yIHVzZXMgSGVhZGVyIHRvIGZvcm1hdCBhbGwgaGVhZGVycywgdGhpcyBjaGVjawotICBpcyBtYWRlIGZvciBhbGwgaGVhZGVycyBpbiBhbnkgc2VyaWFsaXplZCBtZXNzYWdlIGF0IHNlcmlhbGl6YXRpb24gdGltZS4gIFRoaXMKLSAgcHJvdmlkZXMgcHJvdGVjdGlvbiBhZ2FpbnN0IGhlYWRlciBpbmplY3Rpb24gYXR0YWNrcy4KLQotLSBJc3N1ZSAjMTA4NTk6IE1ha2UgYGBjb250ZXh0bGliLkdlbmVyYXRvckNvbnRleHRNYW5hZ2VyYGAgb2ZmaWNpYWxseQotICBwcml2YXRlIGJ5IHJlbmFtaW5nIGl0IHRvIGBgX0dlbmVyYXRvckNvbnRleHRNYW5hZ2VyYGAuCi0KLS0gSXNzdWUgIzEwMDQyOiBGaXhlZCB0aGUgdG90YWxfb3JkZXJpbmcgZGVjb3JhdG9yIHRvIGhhbmRsZSBjcm9zcy10eXBlCi0gIGNvbXBhcmlzb25zIHRoYXQgY291bGQgbGVhZCB0byBpbmZpbml0ZSByZWN1cnNpb24uCi0KLS0gSXNzdWUgIzEwNjg2OiB0aGUgZW1haWwgcGFja2FnZSBub3cgOnJmYzpgMjA0N2BcIC1lbmNvZGVzIGhlYWRlcnMgd2l0aAotICBub24tQVNDSUkgYnl0ZXMgKHBhcnNlZCBieSBhIEJ5dGVzUGFyc2VyKSB3aGVuIGRvaW5nIGNvbnZlcnNpb24gdG8gN2JpdC1jbGVhbgotICBwcmVzZW50YXRpb24sIGluc3RlYWQgb2YgcmVwbGFjaW5nIHRoZW0gd2l0aCA/cy4KLQotLSBlbWFpbC5oZWFkZXIuSGVhZGVyIHdhcyBpbmNvcnJlY3RseSBlbmNvZGluZyBmb2xkaW5nIHdoaXRlc3BhY2Ugd2hlbgotICByZmMyMDQ3LWVuY29kaW5nIGhlYWRlciB2YWx1ZXMgd2l0aCBlbWJlZGRlZCBuZXdsaW5lcywgbGVhdmluZyB0aGVtIHdpdGhvdXQKLSAgZm9sZGluZyB3aGl0ZXNwYWNlLiAgSXQgbm93IHVzZXMgdGhlIGNvbnRpbnVhdGlvbl93cywgYXMgaXQgZG9lcyBmb3IKLSAgY29udGludWF0aW9uIGxpbmVzIHRoYXQgaXQgY3JlYXRlcyBpdHNlbGYuCi0KLS0gSXNzdWUgIzE3Nzc0MTIsICMxMDgyNzogQ2hhbmdlZCB0aGUgcnVsZXMgZm9yIDItZGlnaXQgeWVhcnMuIFRoZQotICB0aW1lLmFzY3RpbWUoKSwgdGltZS5jdGltZSgpIGFuZCB0aW1lLnN0cmZ0aW1lKCkgZnVuY3Rpb25zIHdpbGwgbm93IGZvcm1hdAotICBhbnkgeWVhciB3aGVuIGBgdGltZS5hY2NlcHQyZHllYXJgYCBpcyBGYWxzZSBhbmQgd2lsbCBhY2NlcHQgeWVhcnMgPj0gMTAwMAotICBvdGhlcndpc2UuIGBgdGltZS5ta3RpbWVgYCBhbmQgYGB0aW1lLnN0cmZ0aW1lYGAgbm93IGFjY2VwdCBmdWxsIHJhbmdlCi0gIHN1cHBvcnRlZCBieSB0aGUgT1MuIFdpdGggVmlzdWFsIFN0dWRpbyBvciBvbiBTb2xhcmlzLCB0aGUgeWVhciBpcyBsaW1pdGVkIHRvCi0gIHRoZSByYW5nZSBbMTsgOTk5OV0uIENvbnZlcnNpb24gb2YgMi1kaWdpdCB5ZWFycyB0byA0LWRpZ2l0IGlzIGRlcHJlY2F0ZWQuCi0KLS0gSXNzdWUgIzc4NTg6IFJhaXNlIGFuIGVycm9yIHByb3Blcmx5IHdoZW4gb3MudXRpbWUoKSBmYWlscyB1bmRlciBXaW5kb3dzCi0gIG9uIGFuIGV4aXN0aW5nIGZpbGUuCi0KLS0gSXNzdWUgIzM4Mzk6IHdzZ2lyZWYgc2hvdWxkIG5vdCBvdmVycmlkZSBhIENvbnRlbnQtTGVuZ3RoIGhlYWRlciBzZXQgYnkKLSAgdGhlIGFwcGxpY2F0aW9uLiAgSW5pdGlhbCBwYXRjaCBieSBDbG92aXMgRmFicmljaW8uCi0KLS0gSXNzdWUgIzEwNDkyOiBiZGIuQmRiLnJ1bigpIG9ubHkgdHJhY2VzIHRoZSBleGVjdXRpb24gb2YgdGhlIGNvZGUsIG5vdCB0aGUKLSAgY29tcGlsYXRpb24gKGlmIHRoZSBpbnB1dCBpcyBhIHN0cmluZykuCi0KLS0gSXNzdWUgIzc5OTU6IFdoZW4gY2FsbGluZyBhY2NlcHQoKSBvbiBhIHNvY2tldCB3aXRoIGEgdGltZW91dCwgdGhlIHJldHVybmVkCi0gIHNvY2tldCBpcyBub3cgYWx3YXlzIGJsb2NraW5nLCByZWdhcmRsZXNzIG9mIHRoZSBvcGVyYXRpbmcgc3lzdGVtLgotCi0tIElzc3VlICMxMDc1NjogYXRleGl0IG5vcm1hbGl6ZXMgdGhlIGV4Y2VwdGlvbiBiZWZvcmUgZGlzcGxheWluZyBpdC4gUGF0Y2ggYnkKLSAgQW5kcmVhcyBTdMO8aHJrLgotCi0tIElzc3VlICMxMDc5MDogZW1haWwuaGVhZGVyLkhlYWRlci5hcHBlbmQncyBjaGFyc2V0IGxvZ2ljIG5vdyB3b3JrcyBjb3JyZWN0bHkKLSAgZm9yIGNoYXJzZXRzIHdob3NlIG91dHB1dCBjb2RlYyBpcyBkaWZmZXJlbnQgZnJvbSBpdHMgaW5wdXQgY29kZWMuCi0KLS0gSXNzdWUgIzEwODE5OiBTb2NrZXRJTy5uYW1lIHByb3BlcnR5IHJldHVybnMgLTEgd2hlbiBpdHMgY2xvc2VkLCBpbnN0ZWFkIG9mCi0gIHJhaXNpbmcgYSBWYWx1ZUVycm9yLCB0byBmaXggcmVwcigpLgotCi0tIElzc3VlICM4NjUwOiB6bGliLmNvbXByZXNzKCkgYW5kIHpsaWIuZGVjb21wcmVzcygpIHJhaXNlIGFuIE92ZXJmbG93RXJyb3IgaWYKLSAgdGhlIGlucHV0IGJ1ZmZlciBsZW5ndGggZG9lc24ndCBmaXQgaW50byBhbiB1bnNpZ25lZCBpbnQgKGxlbmd0aCBiaWdnZXIgdGhhbgotICAyXjMyLTEgYnl0ZXMpLgotCi0tIElzc3VlICM2NjQzOiBSZWluaXRpYWxpemUgbG9ja3MgaGVsZCB3aXRoaW4gdGhlIHRocmVhZGluZyBtb2R1bGUgYWZ0ZXIgZm9yayB0bwotICBhdm9pZCBhIHBvdGVudGlhbCByYXJlIGRlYWRsb2NrIG9yIGNyYXNoIG9uIHNvbWUgcGxhdGZvcm1zLgotCi0tIElzc3VlICMxMDgwNiwgaXNzdWUgIzk5MDU6IEZpeCBzdWJwcm9jZXNzIHBpcGVzIHdoZW4gc29tZSBvZiB0aGUgc3RhbmRhcmQgZmlsZQotICBkZXNjcmlwdG9ycyAoMCwgMSwgMikgYXJlIGNsb3NlZCBpbiB0aGUgcGFyZW50IHByb2Nlc3MuICBJbml0aWFsIHBhdGNoIGJ5IFJvc3MKLSAgTGFnZXJ3YWxsLgotCi0tIGB1bml0dGVzdC5UZXN0Q2FzZWAgY2FuIGJlIGluc3RhbnRpYXRlZCB3aXRob3V0IGEgbWV0aG9kIG5hbWU7IGZvciBzaW1wbGVyCi0gIGV4cGxvcmF0aW9uIGZyb20gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyLgotCi0tIElzc3VlICMxMDc5ODogUmVqZWN0IHN1cHBvcnRpbmcgY29uY3VycmVudC5mdXR1cmVzIGlmIHRoZSBzeXN0ZW0gaGFzIHRvbwotICBmZXcgUE9TSVggc2VtYXBob3Jlcy4KLQotLSBJc3N1ZSAjMTA4MDc6IFJlbW92ZSBiYXNlNjQsIGJ6MiwgaGV4LCBxdW9wcmksIHJvdDEzLCB1dSBhbmQgemxpYiBjb2RlY3MgZnJvbQotICB0aGUgY29kZWMgYWxpYXNlcy4gVGhleSBhcmUgc3RpbGwgYWNjZXNzaWJsZSB2aWEgY29kZWNzLmxvb2t1cCgpLgotCi0tIElzc3VlICMxMDgwMTogSW4gemlwZmlsZSwgc3VwcG9ydCBkaWZmZXJlbnQgZW5jb2RpbmdzIGZvciB0aGUgaGVhZGVyIGFuZCB0aGUKLSAgZmlsZW5hbWVzLgotCi0tIElzc3VlICM2Mjg1OiBJRExFIG5vIGxvbmdlciBjcmFzaGVzIG9uIG1pc3NpbmcgaGVscCBmaWxlOyBwYXRjaCBieSBTY290dAotICBEYXZpZCBEYW5pZWxzLgotCi0tIEZpeCBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdC5zZXRkZWZhdWx0KCkgc28gdGhhdCBpdCB3b3JrcyBpbiBzdWJjbGFzc2VzIHRoYXQKLSAgZGVmaW5lIF9fbWlzc2luZ19fKCkuCi0KLS0gSXNzdWUgIzEwNzg2OiB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lciBkZWZhdWx0IHN0cmVhbSBubyBsb25nZXIgYm91bmQgYXQgaW1wb3J0Ci0gIHRpbWUuIGBzeXMuc3RkZXJyYCBub3cgbG9va2VkIHVwIGF0IGluc3RhbnRpYXRpb24gdGltZS4gIEZpeCBjb250cmlidXRlZCBieQotICBNYXJrIFJvZGR5LgotCi0tIElzc3VlICMxMDc1MzogQ2hhcmFjdGVycyAnOycsICc9JyBhbmQgJywnIGluIHRoZSBQQVRIX0lORk8gZW52aXJvbm1lbnQgdmFyaWFibGUKLSAgd29uJ3QgYmUgcXVvdGVkIHdoZW4gdGhlIFVSSSBpcyBjb25zdHJ1Y3RlZCBieSB0aGUgd3NnaXJlZi51dGlsJ3MgcmVxdWVzdF91cmkKLSAgbWV0aG9kLiBBY2NvcmRpbmcgdG8gUkZDIDM5ODYsIHRoZXNlIGNoYXJhY3RlcnMgY2FuIGJlIGEgcGFydCBvZiBwYXJhbXMgaW4KLSAgUEFUSCBjb21wb25lbnQgb2YgVVJJIGFuZCBuZWVkIG5vdCBiZSBxdW90ZWQuCi0KLS0gSXNzdWUgIzEwNzM4OiBGaXggd2ViYnJvd3Nlci5PcGVyYS5yYWlzZV9vcHRzLgotCi0tIElzc3VlICM5ODI0OiBTaW1wbGVDb29raWUgbm93IGVuY29kZXMgLCBhbmQgOyBpbiB2YWx1ZXMgdG8gY2F0ZXIgdG8gaG93Ci0gIGJyb3dzZXJzIGFjdHVhbGx5IHBhcnNlIGNvb2tpZXMuCi0KLS0gSXNzdWUgIzkzMzM6IG9zLnN5bWxpbmsgbm93IGF2YWlsYWJsZSByZWdhcmRsZXNzIG9mIHVzZXIgcHJpdmlsZWdlcy4gIFRoZQotICBmdW5jdGlvbiBub3cgcmFpc2VzIE9TRXJyb3Igb24gV2luZG93cyA+PTYuMCB3aGVuIHRoZSB1c2VyIGlzIHVuYWJsZSB0byBjcmVhdGUKLSAgc3ltYm9saWMgbGlua3MuIFhQIGFuZCAyMDAzIHN0aWxsIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IuCi0KLS0gSXNzdWUgIzEwNzgzOiBzdHJ1Y3QucGFjaygpIG5vIGxvbmdlciBpbXBsaWNpdGx5IGVuY29kZXMgdW5pY29kZSB0byBVVEYtOC4KLQotLSBJc3N1ZSAjMTA3MzA6IEFkZCBTVkcgbWltZSB0eXBlcyB0byBtaW1ldHlwZXMgbW9kdWxlLgotCi0tIElzc3VlICMxMDc2ODogTWFrZSB0aGUgVGtpbnRlciBTY3JvbGxlZFRleHQgd2lkZ2V0IHdvcmsgYWdhaW4uCi0KLS0gSXNzdWUgIzEwNzc3OiBGaXggImRpY3Rpb25hcnkgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iIGJ1ZyBpbgotICBFbGVtZW50VHJlZSByZWdpc3Rlcl9uYW1lc3BhY2UoKS4KLQotLSBJc3N1ZSAjMTA2MjY6IHRlc3RfbG9nZ2luZyBub3cgcHJlc2VydmVzIGxvZ2dlciBkaXNhYmxlZCBzdGF0ZXMuCi0KLS0gSXNzdWUgIzEwNzc0OiB0ZXN0X2xvZ2dpbmcgbm93IHJlbW92ZXMgdGVtcCBmaWxlcyBjcmVhdGVkIGR1cmluZyB0ZXN0cy4KLQotLSBJc3N1ZSAjNTI1OC8jMTA2NDI6IGlmIHNpdGUucHkgZW5jb3VudGVycyBhIC5wdGggZmlsZSB0aGF0IGdlbmVyYXRlcyBhbiBlcnJvciwKLSAgaXQgbm93IHByaW50cyB0aGUgZmlsZW5hbWUsIGxpbmUgbnVtYmVyLCBhbmQgdHJhY2ViYWNrIHRvIHN0ZGVyciBhbmQgc2tpcHMKLSAgdGhlIHJlc3Qgb2YgdGhhdCBpbmRpdmlkdWFsIGZpbGUsIGluc3RlYWQgb2Ygc3RvcHBpbmcgcHJvY2Vzc2luZyBlbnRpcmVseS4KLQotLSBJc3N1ZSAjMTA3NjM6IHN1YnByb2Nlc3MuY29tbXVuaWNhdGUoKSBjbG9zZXMgc3Rkb3V0IGFuZCBzdGRlcnIgaWYgYm90aCBhcmUKLSAgcGlwZXMgKGJ1ZyBzcGVjaWZpYyB0byBXaW5kb3dzKS4KLQotLSBJc3N1ZSAjMTY5MzU0NjogZml4IGVtYWlsLm1lc3NhZ2UgUkZDIDIyMzEgcGFyYW1ldGVyIGVuY29kaW5nIHRvIGJlIGluIGJldHRlcgotICBjb21wbGlhbmNlIChubyAicyBhcm91bmQgZW5jb2RlZCB2YWx1ZXMpLgotCi0tIEltcHJvdmVkIHRoZSBkaWZmIG1lc3NhZ2UgaW4gdGhlIHVuaXR0ZXN0IG1vZHVsZSdzIGFzc2VydENvdW50RXF1YWwoKS4KLQotLSBJc3N1ZSAjMTE1NTM2MjogZW1haWwudXRpbHMucGFyc2VkYXRlX3R6IG5vdyBoYW5kbGVzIGEgbWlzc2luZyBzcGFjZSBiZWZvcmUKLSAgdGhlICctJyBvZiBhIHRpbWV6b25lIGZpZWxkIGFzIHdlbGwgYXMgYmVmb3JlIGEgJysnLgotCi0tIElzc3VlICM0ODcxOiBUaGUgemlwZmlsZSBtb2R1bGUgbm93IGdpdmVzIGEgbW9yZSB1c2VmdWwgZXJyb3IgbWVzc2FnZSBpZgotICBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gdXNlIGEgc3RyaW5nIHRvIHNwZWNpZnkgdGhlIGFyY2hpdmUgcGFzc3dvcmQuCi0KLS0gSXNzdWUgIzEwNzUwOiBUaGUgYGByYXdgYCBhdHRyaWJ1dGUgb2YgYnVmZmVyZWQgSU8gb2JqZWN0cyBpcyBub3cgcmVhZC1vbmx5LgotCi0tIERlcHJlY2F0ZWQgYXNzZXJ0RGljdENvbnRhaW5zU3Vic2V0KCkgaW4gdGhlIHVuaXR0ZXN0IG1vZHVsZS4KLQotQy1BUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzEwOTEzOiBEZXByZWNhdGUgbWlzbGVhZGluZyBmdW5jdGlvbnMgUHlFdmFsX0FjcXVpcmVMb2NrKCkgYW5kCi0gIFB5RXZhbF9SZWxlYXNlTG9jaygpLiAgVGhlIHRocmVhZC1zdGF0ZSBhd2FyZSBBUElzIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCi0KLS0gSXNzdWUgIzEwMzMzOiBSZW1vdmUgYW5jaWVudCBHQyBBUEksIHdoaWNoIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgUHl0aG9uCi0gIDIuMi4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzEwODQzOiBVcGRhdGUgdGhpcmQtcGFydHkgbGlicmFyeSB2ZXJzaW9ucyB1c2VkIGluIE9TIFggMzItYml0Ci0gIGluc3RhbGxlciBidWlsZHM6IGJ6aXAyIDEuMC42LCByZWFkbGluZSA2LjEuMiwgU1FMaXRlIDMuNy40ICh3aXRoIEZUUzMvRlRTNAotICBhbmQgUlRSRUUgZW5hYmxlZCksIGFuZCBuY3Vyc2VzdyA1LjUgKHdpZGUtY2hhciBzdXBwb3J0IGVuYWJsZWQpLgotCi0tIElzc3VlICMxMDgyMDogRml4IE9TIFggZnJhbWV3b3JrIGluc3RhbGxzIHRvIHN1cHBvcnQgdmVyc2lvbi1zcGVjaWZpYwotICBzY3JpcHRzICgjMTA2NzkpLgotCi0tIElzc3VlICM3NzE2OiBVbmRlciBTb2xhcmlzLCBkb24ndCBhc3N1bWUgZXhpc3RlbmNlIG9mIC91c3IveHBnNC9iaW4vZ3JlcCBpbgotICB0aGUgY29uZmlndXJlIHNjcmlwdCBidXQgdXNlICRHUkVQIGluc3RlYWQuICBQYXRjaCBieSBGYWJpYW4gR3JvZmZlbi4KLQotLSBJc3N1ZSAjMTA0NzU6IERvbid0IGhhcmRjb2RlIGNvbXBpbGVycyBmb3IgTERTSEFSRUQvTERDWFhTSEFSRUQgb24gTmV0QlNECi0gIGFuZCBEcmFnb25GbHkgQlNELiAgUGF0Y2ggYnkgTmljb2xhcyBKb2x5LgotCi0tIElzc3VlICMxMDY3OTogVGhlICJpZGxlIiwgInB5ZG9jIiBhbmQgIjJ0bzMiIHNjcmlwdHMgYXJlIG5vdyBpbnN0YWxsZWQgd2l0aAotICBhIHZlcnNpb24tc3BlY2lmaWMgc3VmZml4IG9uICJtYWtlIGFsdGluc3RhbGwiLgotCi0tIElzc3VlICMxMDY1NTogRml4IHRoZSBidWlsZCBvbiBQb3dlclBDIG9uIExpbnV4IHdpdGggR0NDIHdoZW4gYnVpbGRpbmcgd2l0aAotICB0aW1lc3RhbXAgcHJvZmlsaW5nICgtLXdpdGgtdHNjKTogdGhlIHByZXByb2Nlc3NvciB0ZXN0IGZvciB0aGUgUG93ZXJQQwotICBzdXBwb3J0IG5vdyBsb29rcyBmb3IgIl9fcG93ZXJwY19fIiBhcyB3ZWxsIGFzICJfX3BwY19fIjogdGhlIGxhdHRlciBzZWVtcyB0bwotICBvbmx5IGJlIHByZXNlbnQgb24gT1MgWDsgdGhlIGZvcm1lciBpcyB0aGUgY29ycmVjdCBvbmUgZm9yIExpbnV4IHdpdGggR0NDLgotCi0tIElzc3VlICMxMDk5OiBGaXggdGhlIGJ1aWxkIG9uIE1hY09TWCB3aGVuIGJ1aWxkaW5nIGEgZnJhbWV3b3JrIHdpdGggcHlkZWJ1ZwotICB1c2luZyBHQ0MgNC4wLgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTA4NDM6IEluc3RhbGwgdGhlIFRvb2xzIGRpcmVjdG9yeSBvbiBPUyBYIGluIHRoZSBhcHBsaWNhdGlvbnMgRXh0cmFzCi0gICgvQXBwbGljYXRpb25zL1B5dGhvbiAzLm4vRXh0cmFzLykgd2hlcmUgdGhlIERlbW8gZGlyZWN0b3J5IGhhZCBwcmV2aW91cyBiZWVuCi0gIGluc3RhbGxlZC4KLQotLSBJc3N1ZSAjNzk2MjogVGhlIERlbW8gZGlyZWN0b3J5IGlzIGdvbmUuICBNb3N0IG9mIHRoZSBvbGQgYW5kIHVubWFpbnRhaW5lZAotICBkZW1vcyBoYXZlIGJlZW4gcmVtb3ZlZCwgb3RoZXJzIGludGVncmF0ZWQgaW4gZG9jdW1lbnRhdGlvbiBvciBhIG5ldwotICBUb29scy9kZW1vIHN1YmRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjMTA1MDI6IEFkZGl0aW9uIG9mIHRoZSB1bml0dGVzdGd1aSB0b29sLiBPcmlnaW5hbGx5IGJ5IFN0ZXZlIFB1cmNlbGwuCi0gIFVwZGF0ZWQgZm9yIHRlc3QgZGlzY292ZXJ5IGJ5IE1hcmsgUm9kZHkgYW5kIFB5dGhvbiAzIGNvbXBhdGliaWxpdHkgYnkgQnJpYW4KLSAgQ3VydGluLgotCi1UZXN0cwotLS0tLS0KLQotLSBGaXggdGVzdF9zdGFydGZpbGUgdG8gd2FpdCBmb3IgY2hpbGQgcHJvY2VzcyB0byB0ZXJtaW5hdGUgYmVmb3JlIGZpbmlzaGluZy4KLQotLSBJc3N1ZSAjMTA4MjI6IEZpeCB0ZXN0X3Bvc2l4OnRlc3RfZ2V0Z3JvdXBzIGZhaWx1cmUgdW5kZXIgU29sYXJpcy4gIFBhdGNoCi0gIGJ5IFJvc3MgTGFnZXJ3YWxsLgotCi0tIE1ha2UgdGhlIC0tY292ZXJhZ2UgZmxhZyB3b3JrIGZvciB0ZXN0LnJlZ3J0ZXN0LgotCi0tIElzc3VlICMxNjc3Njk0OiBSZWZhY3RvciBhbmQgaW1wcm92ZSB0ZXN0X3RpbWVvdXQuICBPcmlnaW5hbCBwYXRjaCBieQotICBCasO2cm4gTGluZHF2aXN0LgotCi0tIElzc3VlICM1NDg1OiBBZGQgdGVzdHMgZm9yIHRoZSBVc2VGb3JlaWduRFREIG1ldGhvZCBvZiBleHBhdCBwYXJzZXIgb2JqZWN0cy4KLSAgUGF0Y2ggYnkgSmVhbi1QYXVsIENhbGRlcm9uZSBhbmQgU2FuZHJvIFRvc2kuCi0KLS0gSXNzdWUgIzYyOTM6IEhhdmUgcmVncnRlc3QucHkgZWNobyBiYWNrIHN5cy5mbGFncy4gIFRoaXMgaXMgZG9uZSBieSBkZWZhdWx0IGluCi0gIHdob2xlIHJ1bnMgYW5kIGVuYWJsZWQgc2VsZWN0aXZlbHkgdXNpbmcgYGAtLWhlYWRlcmBgIHdoZW4gcnVubmluZyBhbiBleHBsaWNpdAotICBsaXN0IG9mIHRlc3RzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQ29sbGluIFdpbnRlci4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgQmV0YSAyPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMTktRGVjLTIwMTAqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM4ODQ0OiBSZWd1bGFyIGFuZCByZWN1cnNpdmUgbG9jayBhY3F1aXNpdGlvbnMgY2FuIG5vdyBiZSBpbnRlcnJ1cHRlZAotICBieSBzaWduYWxzIG9uIHBsYXRmb3JtcyB1c2luZyBwdGhyZWFkcy4gIFBhdGNoIGJ5IFJlaWQgS2xlY2tuZXIuCi0KLS0gSXNzdWUgIzQyMzY6IFB5TW9kdWxlX0NyZWF0ZTIgbm93IGNoZWNrcyB0aGUgaW1wb3J0IG1hY2hpbmVyeSBkaXJlY3RseQotICByYXRoZXIgdGhhbiB0aGUgUHlfSXNJbml0aWFsaXplZCBmbGFnLCBhdm9pZGluZyBhIEZhdGFsIFB5dGhvbgotICBlcnJvciBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgd2hlbiBhbiBpbXBvcnQgaXMgZG9uZSBpbiBfX2RlbF9fLgotCi0tIElzc3VlICM1NTg3OiBhZGQgYSByZXByIHRvIGRpY3RfcHJveHkgb2JqZWN0cy4gIFBhdGNoIGJ5IERhdmlkIFN0YW5layBhbmQKLSAgRGFuaWVsIFVyYmFuLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzMyNDM6ICBTdXBwb3J0IGl0ZXJhYmxlIGJvZGllcyBpbiBodHRwbGliLiBQYXRjaCBDb250cmlidXRpb25zIGJ5Ci0gIFh1YW5qaSBMaSBhbmQgQ2hyaXMgQXRMZWUuCi0KLS0gSXNzdWUgIzEwNjExOiBTeXN0ZW1FeGl0IGV4Y2VwdGlvbiB3aWxsIG5vIGxvbmdlciBraWxsIGEgdW5pdHRlc3QgcnVuLgotCi0tIElzc3VlICM5ODU3OiBJdCBpcyBub3cgcG9zc2libGUgdG8gc2tpcCBhIHRlc3QgaW4gYSBzZXRVcCwgdGVhckRvd24gb3IgY2xlYW4KLSAgdXAgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzEwNTczOiB1c2UgYWN0dWFsL2V4cGVjdGVkIGNvbnNpc3RlbnRseSBpbiB1bml0dGVzdCBtZXRob2RzLgotICBUaGUgb3JkZXIgb2YgdGhlIGFyZ3Mgb2YgYXNzZXJ0Q291bnRFcXVhbCBpcyBhbHNvIGNoYW5nZWQuCi0KLS0gSXNzdWUgIzkyODY6IGVtYWlsLnV0aWxzLnBhcnNlYWRkciBubyBsb25nZXIgY29uY2F0ZW5hdGVzIGJsYW5rLXNlcGFyYXRlZAotICB3b3JkcyBpbiB0aGUgbG9jYWwgcGFydCBvZiBlbWFpbCBhZGRyZXNzZXMsIHRoZXJlYnkgcHJlc2VydmluZyB0aGUgaW5wdXQuCi0KLS0gSXNzdWUgIzY3OTE6IExpbWl0IGhlYWRlciBsaW5lIGxlbmd0aCAodG8gNjU1MzUgYnl0ZXMpIGluIGh0dHAuY2xpZW50Ci0gIGFuZCBodHRwLnNlcnZlciwgdG8gYXZvaWQgZGVuaWFsIG9mIHNlcnZpY2VzIGZyb20gdGhlIG90aGVyIHBhcnR5LgotCi0tIElzc3VlICMxMDQwNDogVXNlIGN0bC1idXR0b24tMSBvbiBPU1ggZm9yIHRoZSBjb250ZXh0IG1lbnUgaW4gSWRsZS4KLQotLSBJc3N1ZSAjOTkwNzogRml4IHRhYiBoYW5kbGluZyBvbiBPU1ggd2hlbiB1c2luZyBlZGl0bGluZSBieSBjYWxsaW5nCi0gIHJsX2luaXRpYWxpemUgZmlyc3QsIHRoZW4gc2V0dGluZyBvdXIgY3VzdG9tIGRlZmF1bHRzLCB0aGVuIHJlYWRpbmcgLmVkaXRyYy4KLQotLSBJc3N1ZSAjNDE4ODogQXZvaWQgY3JlYXRpbmcgZHVtbXkgdGhyZWFkIG9iamVjdHMgd2hlbiBsb2dnaW5nIG9wZXJhdGlvbnMKLSAgZnJvbSB0aGUgdGhyZWFkaW5nIG1vZHVsZSAod2l0aCB0aGUgaW50ZXJuYWwgdmVyYm9zZSBmbGFnIGFjdGl2YXRlZCkuCi0KLS0gSXNzdWUgIzEwNzExOiBSZW1vdmUgSFRUUCAwLjkgc3VwcG9ydCBmcm9tIGh0dHAuY2xpZW50LiAgVGhlIGBgc3RyaWN0YGAKLSAgcGFyYW1ldGVyIHRvIEhUVFBDb25uZWN0aW9uIGFuZCBmcmllbmRzIGlzIGRlcHJlY2F0ZWQuCi0KLS0gSXNzdWUgIzk3MjE6IEZpeCB0aGUgYmVoYXZpb3Igb2YgdXJsam9pbiB3aGVuIHRoZSByZWxhdGl2ZSB1cmwgc3RhcnRzIHdpdGggYQotICAnOycgY2hhcmFjdGVyLiBQYXRjaCBieSBXZXMgQ2hvdy4KLQotLSBJc3N1ZSAjMTA3MTQ6IExpbWl0IGxlbmd0aCBvZiBpbmNvbWluZyByZXF1ZXN0IGluIGh0dHAuc2VydmVyIHRvIDY1NTM2IGJ5dGVzCi0gIGZvciBzZWN1cml0eSByZWFzb25zLiAgSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KLQotLSBJc3N1ZSAjOTU1ODogRml4IGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX2V4dCB3aXRoIFZTIDguMC4KLQotLSBJc3N1ZSAjMTA2Njc6IEZhc3QgcGF0aCBmb3IgY29sbGVjdGlvbnMuQ291bnRlcigpLgotCi0tIElzc3VlICMxMDY5NTogcGFzc2luZyB0aGUgcG9ydCBhcyBhIHN0cmluZyB2YWx1ZSB0byB0ZWxuZXRsaWIgbm8gbG9uZ2VyCi0gIGNhdXNlcyBkZWJ1ZyBtb2RlIHRvIGZhaWwuCi0KLS0gSXNzdWUgIzEwNzg5MTk6IGFkZF9oZWFkZXIgbm93IGF1dG9tYXRpY2FsbHkgUkZDMjIzMSBlbmNvZGVzIHBhcmFtZXRlcnMKLSAgdGhhdCBjb250YWluIG5vbi1hc2NpaSB2YWx1ZXMuCi0KLS0gSXNzdWUgIzEwMTg4IChwYXJ0aWFsIHJlc29sdXRpb24pOiB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkgZW1pdHMKLSAgYSB3YXJuaW5nIG9uIHN5cy5zdGRlcnIgcmF0aGVyIHRoYW4gdGhyb3dpbmcgYSBtaXNsZWFkaW5nIGV4Y2VwdGlvbgotICBpZiBjbGVhbnVwIGZhaWxzIGR1ZSB0byBudWxsaW5nIG91dCBvZiBtb2R1bGVzIGR1cmluZyBzaHV0ZG93bi4KLSAgQWxzbyBhdm9pZHMgYW4gQXR0cmlidXRlRXJyb3Igd2hlbiBta2R0ZW1wIGNhbGwgZmFpbHMgYW5kIGlzc3VlcwotICBhIFJlc291cmNlV2FybmluZyBvbiBpbXBsaWNpdCBjbGVhbnVwIHZpYSBfX2RlbF9fLgotCi0tIElzc3VlICMxMDEwNzogV2FybiBhYm91dCB1bnNhdmVkIGZpbGVzIGluIElETEUgb24gT1NYLgotCi0tIElzc3VlICM3MjEzOiBzdWJwcm9jZXNzLlBvcGVuJ3MgZGVmYXVsdCBmb3IgY2xvc2VfZmRzIGhhcyBiZWVuIGNoYW5nZWQuCi0gIEl0IGlzIG5vdyBUcnVlIGluIG1vc3QgY2FzZXMgb3RoZXIgdGhhbiBvbiBXaW5kb3dzIHdoZW4gaW5wdXQsIG91dHB1dCBvcgotICBlcnJvciBoYW5kbGVzIGFyZSBwcm92aWRlZC4KLQotLSBJc3N1ZSAjNjU1OTogc3VicHJvY2Vzcy5Qb3BlbiBoYXMgYSBuZXcgcGFzc19mZHMgcGFyYW1ldGVyIChhY3R1YWxseQotICBhZGRlZCBpbiAzLjJiZXRhMSkgdG8gYWxsb3cgc3BlY2lmeWluZyBhIHNwZWNpZmljIGxpc3Qgb2YgZmlsZSBkZXNjcmlwdG9ycwotICB0byBrZWVwIG9wZW4gaW4gdGhlIGNoaWxkIHByb2Nlc3MuCi0KLS0gSXNzdWUgIzE3MzE3MTc6IEZpeGVkIHRoZSBwcm9ibGVtIHdoZXJlIHN1YnByb2Nlc3Mud2FpdCgpIGNvdWxkIGNhdXNlIGFuCi0gIE9TRXJyb3IgZXhjZXB0aW9uIHdoZW4gVGhlIE9TIGhhZCBiZWVuIHRvbGQgdG8gaWdub3JlIFNJR0NMRCBpbiBvdXIgcHJvY2VzcwotICBvciBvdGhlcndpc2Ugbm90IHdhaXQgZm9yIGV4aXRpbmcgY2hpbGQgcHJvY2Vzc2VzLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjNzc1OTY0OiB0ZXN0X2dycCBub3cgc2tpcHMgWVAvTklTIGVudHJpZXMgaW5zdGVhZCBvZiBmYWlsaW5nIHdoZW4KLSAgZW5jb3VudGVyaW5nIHRoZW0uCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM2MDc1OiBJRExFIG9uIE1hYyBPUyBYIG5vdyB3b3JrcyB3aXRoIGJvdGggQ2FyYm9uIEFxdWFUayBhbmQKLSAgQ29jb2EgQXF1YVRrLgotCi0tIElzc3VlICMxMDcxMDogYGBNaXNjL3NldHVpZC1wcm9nLmNgYCBpcyByZW1vdmVkIGZyb20gdGhlIHNvdXJjZSB0cmVlLgotCi0tIElzc3VlICMxMDcwNjogUmVtb3ZlIG91dGRhdGVkIHNjcmlwdCBydW50ZXN0cy5zaC4gIEVpdGhlciBgYG1ha2UgdGVzdGBgCi0gIG9yIGBgcHl0aG9uIC1tIHRlc3RgYCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgotCi1CdWlsZAotLS0tLS0KLQotLSBUaGUgV2luZG93cyBidWlsZCBub3cgdXNlcyBUY2wvVGsgOC41LjkgYW5kIHNxbGl0ZTMgMy43LjQuCi0KLS0gSXNzdWUgIzkyMzQ6IGFyZ3BhcnNlIHN1cHBvcnRzIGFsaWFzIG5hbWVzIGZvciBzdWJwYXJzZXJzLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBCZXRhIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAwNS1EZWMtMjAxMCoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEwNjMwOiBSZXR1cm4gZGljdCB2aWV3cyBmcm9tIHRoZSBkaWN0IHByb3h5IGtleXMoKS92YWx1ZXMoKS9pdGVtcygpCi0gIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzEwNTk2OiBGaXggZmxvYXQuX19tb2RfXyB0byBoYXZlIHRoZSBzYW1lIGJlaGF2aW91ciBhcyBmbG9hdC5fX2Rpdm1vZF9fCi0gIHdpdGggcmVzcGVjdCB0byBzaWduZWQgemVyb3MuICAtNC4wICUgNC4wIHNob3VsZCBiZSAwLjAsIG5vdCAtMC4wLgotCi0tIElzc3VlICMxNzcyODMzOiBBZGQgdGhlIC1xIGNvbW1hbmQtbGluZSBvcHRpb24gdG8gc3VwcHJlc3MgY29weXJpZ2h0IGFuZAotICB2ZXJzaW9uIG91dHB1dCBpbiBpbnRlcmFjdGl2ZSBtb2RlLgotCi0tIFByb3ZpZGUgYW4gKm9wdGltaXplKiBwYXJhbWV0ZXIgaW4gdGhlIGJ1aWx0LWluIGNvbXBpbGUoKSBmdW5jdGlvbi4KLQotLSBGaXhlZCBzZXZlcmFsIGNvcm5lciBjYXNlIGlzc3VlcyBvbiBXaW5kb3dzIGluIG9zLnN0YXQvb3MubHN0YXQgcmVsYXRlZCB0bwotICByZXBhcnNlIHBvaW50cy4KLQotLSBQRVAgMzg0IChEZWZpbmluZyBhIFN0YWJsZSBBQkkpIGlzIGltcGxlbWVudGVkLgotCi0tIElzc3VlICMyNjkwOiBSYW5nZSBvYmplY3RzIHN1cHBvcnQgbmVnYXRpdmUgaW5kaWNlcyBhbmQgc2xpY2luZy4KLQotLSBJc3N1ZSAjOTkxNTogU3BlZWQgdXAgc29ydGluZyB3aXRoIGEga2V5LgotCi0tIElzc3VlICM4Njg1OiBTcGVlZCB1cCBzZXQgZGlmZmVyZW5jZSBgYGEgLSBiYGAgd2hlbiBzb3VyY2Ugc2V0IGBgYWBgIGlzIG11Y2gKLSAgbGFyZ2VyIHRoYW4gb3BlcmFuZCBgYGJgYC4gIFBhdGNoIGJ5IEFuZHJldyBCZW5uZXR0cy4KLQotLSBJc3N1ZSAjMTA1MTg6IEJyaW5nIGJhY2sgdGhlIGNhbGxhYmxlKCkgYnVpbHRpbi4KLQotLSBJc3N1ZSAjNzA5NDogQWRkZWQgYWx0ZXJuYXRlIGZvcm1hdHRpbmcgKHNwZWNpZmllZCBieSAnIycpIHRvIGBgX19mb3JtYXRfX2BgCi0gIG1ldGhvZCBvZiBmbG9hdCwgY29tcGxleCwgYW5kIERlY2ltYWwuIFRoaXMgYWxsb3dzIG1vcmUgcHJlY2lzZSBjb250cm9sIG92ZXIKLSAgd2hlbiBkZWNpbWFsIHBvaW50cyBhcmUgZGlzcGxheWVkLgotCi0tIElzc3VlICMxMDQ3NDogcmFuZ2UuY291bnQoKSBzaG91bGQgcmV0dXJuIGludGVnZXJzLgotCi0tIElzc3VlICMxNTc0MjE3OiBpc2luc3RhbmNlIG5vdyBjYXRjaGVzIG9ubHkgQXR0cmlidXRlRXJyb3IsIHJhdGhlciB0aGFuCi0gIG1hc2tpbmcgYWxsIGVycm9ycy4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIGxvZ2dpbmc6IGFkZGVkICJoYW5kbGVyIG9mIGxhc3QgcmVzb3J0Ii4gU2VlIGh0dHA6Ly9iaXQubHkvbGFzdC1yZXNvcnQtaGFuZGxlcgotCi0tIHRlc3Quc3VwcG9ydDogQWRkZWQgVGVzdEhhbmRsZXIgYW5kIE1hdGNoZXIgY2xhc3NlcyBmb3IgYmV0dGVyIHN1cHBvcnQgb2YKLSAgYXNzZXJ0aW9ucyBhYm91dCBsb2dnaW5nLgotCi0tIElzc3VlICM0MzkxOiBVc2UgcHJvcGVyIHBsdXJhbCBmb3JtcyBpbiBhcmdwYXJzZS4KLQotLSBJc3N1ZSAjMTA2MDE6IHN5cy5kaXNwbGF5aG9vayB1c2VzICdiYWNrc2xhc2hyZXBsYWNlJyBlcnJvciBoYW5kbGVyIG9uCi0gIFVuaWNvZGVFbmNvZGVFcnJvci4KLQotLSBBZGQgdGhlICJkaXNwbGF5IiBhbmQgInVuZGlzcGxheSIgcGRiIGNvbW1hbmRzLgotCi0tIElzc3VlICM3MjQ1OiBBZGQgYSBTSUdJTlQgaGFuZGxlciBpbiBwZGIgdGhhdCBhbGxvd3MgdG8gYnJlYWsgYSBwcm9ncmFtIGFnYWluCi0gIGFmdGVyIGEgImNvbnRpbnVlIiBjb21tYW5kLgotCi0tIEFkZCB0aGUgImludGVyYWN0IiBwZGIgY29tbWFuZC4KLQotLSBJc3N1ZSAjNzkwNTogQWN0dWFsbHkgcmVzcGVjdCB0aGUga2V5ZW5jb2RpbmcgcGFyYW1ldGVyIHRvIHNoZWx2ZS5TaGVsZi4KLQotLSBJc3N1ZSAjMTU2OTI5MTogU3BlZWQgdXAgYXJyYXkucmVwZWF0KCkuCi0KLS0gUHJvdmlkZSBhbiBpbnRlcmZhY2UgdG8gc2V0IHRoZSBvcHRpbWl6YXRpb24gbGV2ZWwgb2YgY29tcGlsYXRpb24gaW4KLSAgcHlfY29tcGlsZSwgY29tcGlsZWFsbCBhbmQgemlwZmlsZS5QeVppcEZpbGUuCi0KLS0gSXNzdWUgIzc5MDQ6IENoYW5nZXMgdG8gdXJsbGliLnBhcnNlLnVybHNwbGl0IHRvIGhhbmRsZSBzY2hlbWVzIGFzIGRlZmluZWQgYnkKLSAgUkZDMzk4Ni4gQW55dGhpbmcgYmVmb3JlIDovLyBpcyBjb25zaWRlcmVkIGEgc2NoZW1lIGFuZCBpcyBmb2xsb3dlZCBieSBhbgotICBhdXRob3JpdHkgKG9yIG5ldGxvYykgYW5kIGJ5ICcvJyBsZWQgcGF0aCwgd2hpY2ggaXMgb3B0aW9uYWwuCi0KLS0gSXNzdWUgIzYwNDU6IGRibS5nbnUgZGF0YWJhc2VzIG5vdyBzdXBwb3J0IGdldCgpIGFuZCBzZXRkZWZhdWx0KCkgbWV0aG9kcy4KLQotLSBJc3N1ZSAjMTA2MjA6IGBweXRob24gLW0gdW5pdHRlc3RgIGNhbiBhY2NlcHQgZmlsZSBwYXRocyBpbnN0ZWFkIG9mIG1vZHVsZQotICBuYW1lcyBmb3IgcnVubmluZyBzcGVjaWZpYyB0ZXN0cy4KLQotLSBJc3N1ZSAjOTQyNDogRGVwcmVjYXRlIHRoZSBgdW5pdHRlc3QuVGVzdENhc2VgIG1ldGhvZHMgYGFzc2VydEVxdWFsc2AsCi0gIGBhc3NlcnROb3RFcXVhbHNgLCBgYXNzZXJ0QWxtb3N0RXF1YWxzYCwgYGFzc2VydE5vdEFsbW9zdEVxdWFsc2AgYW5kIGBhc3NlcnRfYAotICBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIGNvcnJlY3QgbWV0aG9kcyBpbiB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUuCi0KLS0gSXNzdWUgIzEwMjcyOiBUaGUgc3NsIG1vZHVsZSBub3cgcmFpc2VzIHNvY2tldC50aW1lb3V0IGluc3RlYWQgb2YgYSBnZW5lcmljCi0gIFNTTEVycm9yIG9uIHNvY2tldCB0aW1lb3V0cy4KLQotLSBJc3N1ZSAjMTA1Mjg6IEFsbG93IHRyYW5zbGF0b3JzIHRvIHJlb3JkZXIgcGxhY2Vob2xkZXJzIGluIGxvY2FsaXphYmxlCi0gIG1lc3NhZ2VzIGZyb20gYXJncGFyc2UuCi0KLS0gSXNzdWUgIzEwNDk3OiBGaXggaW5jb3JyZWN0IHVzZSBvZiBnZXR0ZXh0IGluIGFyZ3BhcnNlLgotCi0tIElzc3VlICMxMDQ3ODogUmVlbnRyYW50IGNhbGxzIGluc2lkZSBidWZmZXJlZCBJTyBvYmplY3RzIChmb3IgZXhhbXBsZSBieQotICB3YXkgb2YgYSBzaWduYWwgaGFuZGxlcikgbm93IHJhaXNlIGEgUnVudGltZUVycm9yIGluc3RlYWQgb2YgZnJlZXppbmcgdGhlCi0gIGN1cnJlbnQgcHJvY2Vzcy4KLQotLSBsb2dnaW5nOiBBZGRlZCBnZXRMb2dSZWNvcmRGYWN0b3J5L3NldExvZ1JlY29yZEZhY3Rvcnkgd2l0aCBkb2NzIGFuZCB0ZXN0cy4KLQotLSBJc3N1ZSAjMTA1NDk6IEZpeCBweWRvYyB0cmFjZWJhY2sgd2hlbiB0ZXh0LWRvY3VtZW50aW5nIGNlcnRhaW4gY2xhc3Nlcy4KLQotLSBJc3N1ZSAjMjAwMTogTmV3IEhUTUwgc2VydmVyIHdpdGggZW5oYW5jZWQgV2ViIHBhZ2UgZmVhdHVyZXMuICBQYXRjaCBieSBSb24KLSAgQWRhbS4KLQotLSBJc3N1ZSAjMTAzNjA6IEluIFdlYWtTZXQsIGRvIG5vdCByYWlzZSBUeXBlRXJyb3JzIHdoZW4gdGVzdGluZyBmb3IgbWVtYmVyc2hpcAotICBvZiBub24td2Vha3JlZmFibGUgb2JqZWN0cy4KLQotLSBJc3N1ZSAjOTQwMjg2OiBweWRvYy5IZWxwZXIuaGVscCgpIGlnbm9yZXMgaW5wdXQvb3V0cHV0IGluaXQgcGFyYW1ldGVycy4KLQotLSBJc3N1ZSAjMTc0NTAzNTogQWRkIGEgY29tbWFuZCBzaXplIGFuZCBkYXRhIHNpemUgbGltaXQgdG8gc210cGQucHksIHRvIHByZXZlbnQKLSAgRG9TIGF0dGFja3MuICBQYXRjaCBieSBTYXZpbyBTZW5hLgotCi0tIElzc3VlICM0OTI1OiBBZGQgZmlsZW5hbWUgdG8gZXJyb3IgbWVzc2FnZSB3aGVuIGV4ZWN1dGFibGUgY2FuJ3QgYmUgZm91bmQgaW4KLSAgc3VicHJvY2Vzcy4KLQotLSBJc3N1ZSAjMTAzOTE6IERvbid0IGRlcmVmZXJlbmNlIGludmFsaWQgbWVtb3J5IGluIGVycm9yIG1lc3NhZ2VzIGluIHRoZSBhc3QKLSAgbW9kdWxlLgotCi0tIElzc3VlICMxMDAyNzogc3Rfbmxpbmsgd2FzIG5vdCBiZWluZyBzZXQgb24gV2luZG93cyBjYWxscyB0byBvcy5zdGF0IG9yCi0gIG9zLmxzdGF0LiBQYXRjaCBieSBIaXJva2F6dSBZYW1hbW90by4KLQotLSBJc3N1ZSAjOTMzMzogRXhwb3NlIG9zLnN5bWxpbmsgb25seSB3aGVuIHRoZSBTZUNyZWF0ZVN5bWJvbGljTGlua1ByaXZpbGVnZSBpcwotICBoZWxkIGJ5IHRoZSB1c2VyJ3MgYWNjb3VudCwgaS5lLiwgd2hlbiB0aGUgZnVuY3Rpb24gY2FuIGFjdHVhbGx5IGJlIHVzZWQuCi0KLS0gSXNzdWUgIzg4Nzk6IEFkZCBvcy5saW5rIHN1cHBvcnQgZm9yIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzc5MTE6IGBgdW5pdHRlc3QuVGVzdENhc2UubG9uZ01lc3NhZ2VgYCBkZWZhdWx0cyB0byBUcnVlIGZvciBpbXByb3ZlZAotICBmYWlsdXJlIG1lc3NhZ2VzIGJ5IGRlZmF1bHQuIFBhdGNoIGJ5IE1hcmsgUm9kZHkuCi0KLS0gSXNzdWUgIzE0ODY3MTM6IEhUTUxQYXJzZXIgbm93IGhhcyBhbiBvcHRpb25hbCB0b2xlcmFudCBtb2RlIHdoZXJlIGl0IHRyaWVzIHRvCi0gIGd1ZXNzIGF0IHRoZSBjb3JyZWN0IHBhcnNpbmcgb2YgaW52YWxpZCBodG1sLgotCi0tIElzc3VlICMxMDU1NDogQWRkIGNvbnRleHQgbWFuYWdlciBzdXBwb3J0IHRvIHN1YnByb2Nlc3MuUG9wZW4gb2JqZWN0cy4KLQotLSBJc3N1ZSAjODk4OTogZW1haWwudXRpbHMubWFrZV9tc2dpZCBub3cgaGFzIGEgZG9tYWluIHBhcmFtZXRlciB0aGF0IGNhbgotICBvdmVycmlkZSB0aGUgZG9tYWluIG5hbWUgdXNlZCBpbiB0aGUgZ2VuZXJhdGVkIG1zZ2lkLgotCi0tIElzc3VlICM5Mjk5OiBBZGQgZXhpc3Rfb2sgcGFyYW1ldGVyIHRvIG9zLm1ha2VkaXJzIHRvIHN1cHByZXNzIHRoZSAnRmlsZQotICBleGlzdHMnIGV4Y2VwdGlvbiB3aGVuIGEgdGFyZ2V0IGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cyB3aXRoIHRoZSBzcGVjaWZpZWQKLSAgbW9kZS4gUGF0Y2ggYnkgUmF5IEFsbGVuLgotCi0tIElzc3VlICM5NTczOiBvcy5mb3JrKCkgbm93IHdvcmtzIGNvcnJlY3RseSB3aGVuIHRyaWdnZXJlZCBhcyBhIHNpZGUgZWZmZWN0IG9mCi0gIGEgbW9kdWxlIGltcG9ydC4KLQotLSBJc3N1ZSAjMTA0NjQ6IG5ldHJjIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBsaW5lcyB3aXRoIGVtYmVkZGVkICcjJyBjaGFyYWN0ZXJzLgotCi0tIEFkZGVkIGl0ZXJ0b29scy5hY2N1bXVsYXRlKCkuCi0KLS0gSXNzdWUgIzQxMTM6IEFkZGVkIGN1c3RvbSBgYF9fcmVwcl9fYGAgbWV0aG9kIHRvIGBgZnVuY3Rvb2xzLnBhcnRpYWxgYC4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgRGFuaWVsIFVyYmFuLgotCi0tIElzc3VlICMxMDI3MzogUmVuYW1lIGBhc3NlcnRSZWdleHBNYXRjaGVzYCBhbmQgYGFzc2VydFJhaXNlc1JlZ2V4cGAgdG8KLSAgYGFzc2VydFJlZ2V4YCBhbmQgYGFzc2VydFJhaXNlc1JlZ2V4YC4KLQotLSBJc3N1ZSAjMTA1MzU6IEVuYWJsZSBzaWxlbmNlZCB3YXJuaW5ncyBpbiB1bml0dGVzdCBieSBkZWZhdWx0LgotCi0tIElzc3VlICM5ODczOiBUaGUgVVJMIHBhcnNpbmcgZnVuY3Rpb25zIGluIHVybGxpYi5wYXJzZSBub3cgYWNjZXB0IEFTQ0lJIGJ5dGUKLSAgc2VxdWVuY2VzIGFzIGlucHV0IGluIGFkZGl0aW9uIHRvIGNoYXJhY3RlciBzdHJpbmdzLgotCi0tIElzc3VlICMxMDU4NjogVGhlIHN0YXRpc3RpY3MgQVBJIGZvciB0aGUgbmV3IGZ1bmN0b29scy5scnVfY2FjaGUgaGFzIGJlZW4KLSAgY2hhbmdlZCB0byBhIHNpbmdsZSBjYWNoZV9pbmZvKCkgbWV0aG9kIHJldHVybmluZyBhIG5hbWVkIHR1cGxlLgotCi0tIElzc3VlICMxMDMyMzogaXRlcnRvb2xzLmlzbGljZSgpIG5vdyBjb25zdW1lcyB0aGUgbWluaW11bSBudW1iZXIgb2YgaW5wdXRzCi0gIGJlZm9yZSBzdG9wcGluZy4gIEZvcm1lcmx5LCB0aGUgZmluYWwgc3RhdGUgb2YgdGhlIHVuZGVybHlpbmcgaXRlcmF0b3Igd2FzCi0gIHVuZGVmaW5lZC4KLQotLSBJc3N1ZSAjMTA1NjU6IFRoZSBjb2xsZWN0aW9ucy5JdGVyYXRvciBBQkMgbm93IGNoZWNrcyBmb3IgYm90aCBfX2l0ZXJfXyBhbmQKLSAgX19uZXh0X18uCi0KLS0gSXNzdWUgIzEwMjQyOiBGaXhlZCBpbXBsZW1lbnRhdGlvbiBvZiB1bml0dGVzdC5JdGVtc0VxdWFsIGFuZCBnYXZlIGl0IGEgbmV3Ci0gIG1vcmUgaW5mb3JtYXRpdmUgbmFtZSwgdW5pdHRlc3QuQ291bnRFcXVhbC4KLQotLSBJc3N1ZSAjMTA1NjE6IEluIHBkYiwgY2xlYXIgdGhlIGJyZWFrcG9pbnRzIGJ5IHRoZSBicmVha3BvaW50IG51bWJlci4KLQotLSBJc3N1ZSAjMjk4NjogZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIgZ2V0cyBhIG5ldyBwYXJhbWV0ZXIsIGF1dG9qdW5rLCB3aGljaCBjYW4KLSAgYmUgc2V0IHRvIEZhbHNlIHRvIHR1cm4gb2ZmIHRoZSBwcmV2aW91c2x5IHVuZG9jdW1lbnRlZCAncG9wdWxhcml0eScKLSAgaGV1cmlzdGljLiBQYXRjaCBieSBUZXJyeSBSZWVkeSBhbmQgRWxpIEJlbmRlcnNreS4KLQotLSBJc3N1ZSAjMTA1MzQ6IGluIGRpZmZsaWIsIGV4cG9zZSBianVuayBhbmQgYnBvcHVsYXIgc2V0czsgZGVwcmVjYXRlCi0gIHVuZG9jdW1lbnRlZCBhbmQgbm93IHJlZHVuZGFudCBpc2JqdW5rIGFuZCBpc2Jwb3B1bGFyIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzk4NDY6IHppcGZpbGUgaXMgbm93IGNvcnJlY3RseSBjbG9zaW5nIHVuZGVybHlpbmcgZmlsZSBvYmplY3RzLgotCi0tIElzc3VlICMxMDQ1OTogVXBkYXRlIENKSyBjaGFyYWN0ZXIgbmFtZXMgdG8gVW5pY29kZSA2LjAuCi0KLS0gSXNzdWUgIzQ0OTM6IHVybGxpYi5yZXF1ZXN0IGFkZHMgJy8nIGluIGZyb250IG9mIHBhdGggY29tcG9uZW50cyB3aGljaCBkb2VzIG5vdAotICBzdGFydCB3aXRoICcvLiBDb21tb24gYmVoYXZpb3IgZXhoaWJpdGVkIGJ5IGJyb3dzZXJzIGFuZCBvdGhlciBjbGllbnRzLgotCi0tIElzc3VlICM2Mzc4OiBpZGxlLmJhdCBub3cgcnVucyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBQeXRob24gdmVyc2lvbiByYXRoZXIgdGhhbgotICB0aGUgc3lzdGVtIGRlZmF1bHQuIFBhdGNoIGJ5IFNyaWRoYXIgUmF0bmFrdW1hci4KLQotLSBJc3N1ZSAjMTA0NzA6ICdweXRob24gLW0gdW5pdHRlc3QnIHdpbGwgbm93IHJ1biB0ZXN0IGRpc2NvdmVyeSBieSBkZWZhdWx0LAotICB3aGVuIG5vIGV4dHJhIGFyZ3VtZW50cyBoYXZlIGJlZW4gcHJvdmlkZWQuCi0KLS0gSXNzdWUgIzM3MDk6IEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIgd2lsbCBidWZmZXIgdGhlIGhlYWRlcnMgYW5kIHdyaXRlIHRvCi0gIG91dHB1dCBzdHJlYW0gb25seSB3aGVuIGVuZF9oZWFkZXJzIGlzIGludm9rZWQuIFRoaXMgaXMgYSBzcGVlZHVwIGFuZCBhbgotICBpbnRlcm5hbCBvcHRpbWl6YXRpb24uICBQYXRjaCBieSBlbmRpYW4uCi0KLS0gSXNzdWUgIzEwMjIwOiBBZGRlZCBpbnNwZWN0LmdldGdlbmVyYXRvcnN0YXRlLiBJbml0aWFsIHBhdGNoIGJ5IFJvZG9scGhvCi0gIEVja2hhcmR0LgotCi0tIElzc3VlICMxMDQ1MzogY29tcGlsZWFsbCBub3cgdXNlcyBhcmdwYXJzZSBpbnN0ZWFkIG9mIGdldG9wdCwgYW5kIHRodXMKLSAgcHJvdmlkZXMgY2xlYW4gb3V0cHV0IHdoZW4gY2FsbGVkIHdpdGggJy1oJy4KLQotLSBJc3N1ZSAjODA3ODogQWRkIGNvbnN0YW50cyBmb3IgaGlnaGVyIGJhdWQgcmF0ZXMgaW4gdGhlIHRlcm1pb3MgbW9kdWxlLiAgUGF0Y2gKLSAgYnkgUm9kb2xwaG8gRWNraGFyZHQuCi0KLS0gSXNzdWUgIzEwNDA3OiBGaXggdHdvIE5hbWVFcnJvcnMgaW4gZGlzdHV0aWxzLgotCi0tIElzc3VlICMxMDM3MTogRGVwcmVjYXRlZCB1bmRvY3VtZW50ZWQgZnVuY3Rpb25zIGluIHRoZSB0cmFjZSBtb2R1bGUuCi0KLS0gSXNzdWUgIzEwNDY3OiBGaXggQnl0ZXNJTy5yZWFkaW50bygpIGFmdGVyIHNlZWtpbmcgaW50byBhIHBvc2l0aW9uIGFmdGVyIHRoZQotICBlbmQgb2YgdGhlIGZpbGUuCi0KLS0gY29uZmlncGFyc2VyOiAxMDAlIHRlc3QgY292ZXJhZ2UuCi0KLS0gSXNzdWUgIzEwNDk5OiBjb25maWdwYXJzZXIgc3VwcG9ydHMgcGx1Z2dhYmxlIGludGVycG9sYXRpb24gaGFuZGxlcnMuIFRoZQotICBkZWZhdWx0IGNsYXNzaWMgaW50ZXJwb2xhdGlvbiBoYW5kbGVyIGlzIGNhbGxlZCBCYXNpY0ludGVycG9sYXRpb24uIEFub3RoZXIKLSAgaW50ZXJwb2xhdGlvbiBoYW5kbGVyIGFkZGVkIChFeHRlbmRlZEludGVycG9sYXRpb24pIHdoaWNoIHN1cHBvcnRzIHRoZSBzeW50YXgKLSAgdXNlZCBieSB6Yy5idWlsZG91dCAoZS5nLiBpbnRlcnBvbGF0aW9uIGJldHdlZW4gc2VjdGlvbnMpLgotCi0tIGNvbmZpZ3BhcnNlcjogdGhlIFNhZmVDb25maWdQYXJzZXIgY2xhc3MgaGFzIGJlZW4gcmVuYW1lZCB0byBDb25maWdQYXJzZXIuCi0gIFRoZSBsZWdhY3kgQ29uZmlnUGFyc2VyIGNsYXNzIGhhcyBiZWVuIHJlbW92ZWQgYnV0IGl0cyBpbnRlcnBvbGF0aW9uIG1lY2hhbmlzbQotICBpcyBzdGlsbCBhdmFpbGFibGUgYXMgTGVnYWN5SW50ZXJwb2xhdGlvbi4KLQotLSBjb25maWdwYXJzZXI6IFVzYWdlIG9mIFJhd0NvbmZpZ1BhcnNlciBpcyBub3cgZGlzY291cmFnZWQgZm9yIG5ldyBwcm9qZWN0cwotICBpbiBmYXZvciBvZiBDb25maWdQYXJzZXIoaW50ZXJwb2xhdGlvbj1Ob25lKS4KLQotLSBJc3N1ZSAjMTY4Mjk0MjogY29uZmlncGFyc2VyIHN1cHBvcnRzIGFsdGVybmF0aXZlIG9wdGlvbi92YWx1ZSBkZWxpbWl0ZXJzLgotCi0tIElzc3VlICM1NDEyOiBjb25maWdwYXJzZXIgc3VwcG9ydHMgbWFwcGluZyBwcm90b2NvbCBhY2Nlc3MuCi0KLS0gSXNzdWUgIzk0MTE6IGNvbmZpZ3BhcnNlciBzdXBwb3J0cyBzcGVjaWZ5aW5nIGVuY29kaW5nIGZvciByZWFkIG9wZXJhdGlvbnMuCi0KLS0gSXNzdWUgIzk0MjE6IGNvbmZpZ3BhcnNlcidzIGdldGludCgpLCBnZXRmbG9hdCgpIGFuZCBnZXRib29sZWFuKCkgbWV0aG9kcwotICBhY2NlcHQgdmFycyBhbmQgZGVmYXVsdCBhcmd1bWVudHMganVzdCBsaWtlIGdldCgpIGRvZXMuCi0KLS0gSXNzdWUgIzk0NTI6IGNvbmZpZ3BhcnNlciBzdXBwb3J0cyByZWFkaW5nIGZyb20gc3RyaW5ncyBhbmQgZGljdGlvbmFyaWVzCi0gICh0aGFua3MgdG8gdGhlIG1hcHBpbmcgcHJvdG9jb2wgQVBJLCB0aGUgbGF0dGVyIGNhbiBiZSB1c2VkIHRvIGNvcHkgZGF0YQotICBiZXR3ZWVuIHBhcnNlcnMpLgotCi0tIGNvbmZpZ3BhcnNlcjogYWNjZXB0ZWQgSU5JIGZpbGUgc3RydWN0dXJlIGlzIG5vdyBjdXN0b21pemFibGUsIGluY2x1ZGluZwotICBjb21tZW50IHByZWZpeGVzLCBuYW1lIG9mIHRoZSBERUZBVUxUIHNlY3Rpb24sIGVtcHR5IGxpbmVzIGluIG11bHRpbGluZQotICB2YWx1ZXMsIGFuZCBpbmRlbnRhdGlvbi4KLQotLSBJc3N1ZSAjMTAzMjY6IHVuaXR0ZXN0LlRlc3RDYXNlIGluc3RhbmNlcyBjYW4gYmUgcGlja2xlZC4KLQotLSBJc3N1ZSAjOTkyNjogV3JhcHBlZCBUZXN0U3VpdGUgc3ViY2xhc3MgZG9lcyBub3QgZ2V0IF9fY2FsbF9fIGV4ZWN1dGVkLgotCi0tIElzc3VlICM5OTIwOiBTa2lwIHRlc3RzIGZvciBjbWF0aC5hdGFuIGFuZCBjbWF0aC5hdGFuaCBhcHBsaWVkIHRvIGNvbXBsZXgKLSAgemVyb3Mgb24gc3lzdGVtcyB3aGVyZSB0aGUgbG9nMXAgZnVuY3Rpb24gZmFpbHMgdG8gcmVzcGVjdCB0aGUgc2lnbiBvZiB6ZXJvLgotICBUaGlzIGZpeGVzIGEgdGVzdCBmYWlsdXJlIG9uIEFJWC4KLQotLSBJc3N1ZSAjOTczMjogQWRkaXRpb24gb2YgZ2V0YXR0cl9zdGF0aWMgdG8gdGhlIGluc3BlY3QgbW9kdWxlLgotCi0tIElzc3VlICMxMDQ0NjogTW9kdWxlIGRvY3VtZW50YXRpb24gZ2VuZXJhdGVkIGJ5IHB5ZG9jIG5vdyBsaW5rcyB0byBhCi0gIHZlcnNpb24tc3BlY2lmaWMgb25saW5lIHJlZmVyZW5jZSBtYW51YWwuCi0KLS0gTWFrZSB0aGUgJ05vIG1vZHVsZSBuYW1lZCcgZXhjZXB0aW9uIG1lc3NhZ2UgZnJvbSBpbXBvcnRsaWIgY29uc2lzdGVudC4KLQotLSBJc3N1ZSAjMTA0NDM6IEFkZCB0aGUgU1NMQ29udGV4dC5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKSBtZXRob2QuCi0KLS0gSXNzdWUgIzEwNDQwOiBTdXBwb3J0IFJVU0FHRV9USFJFQUQgYXMgYSBjb25zdGFudCBpbiB0aGUgcmVzb3VyY2UgbW9kdWxlLgotICBQYXRjaCBieSBSb2JlcnQgQ29sbGlucy4KLQotLSBJc3N1ZSAjMTA0Mjk6IElNQVAuc3RhcnR0bHMoKSBzdG9yZWQgdGhlIGNhcGFiaWxpdGllcyBhcyBieXRlcyBvYmplY3RzLCByYXRoZXIKLSAgdGhhbiBzdHJpbmdzLgotCi1DLUFQSQotLS0tLS0KLQotLSBJc3N1ZSAjMTA1NTc6IEFkZGVkIGEgbmV3IEFQSSBmdW5jdGlvbiwgUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKCksCi0gIHdoaWNoIHRyYW5zZm9ybXMgbm9uLUFTQ0lJIGRlY2ltYWwgZGlnaXRzIGluIGEgVW5pY29kZSBzdHJpbmcgdG8gdGhlaXIgQVNDSUkKLSAgZXF1aXZhbGVudHMuCi0KLS0gSXNzdWUgIzk1MTg6IEV4dGVuZCB0aGUgUHlNb2R1bGVEZWZfSEVBRF9JTklUIG1hY3JvIHRvIGV4cGxpY2l0bHkKLSAgemVyby1pbml0aWFsaXplIGFsbCBmaWVsZHMsIGZpeGluZyBjb21waWxlciB3YXJuaW5ncyBzZWVuIHdoZW4gYnVpbGRpbmcKLSAgZXh0ZW5zaW9uIG1vZHVsZXMgd2l0aCBnY2Mgd2l0aCAiLVdtaXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyIgKGltcGxpZWQgYnkKLSAgIi1XIikuCi0KLS0gSXNzdWUgIzEwMjU1OiBGaXggcmVmZXJlbmNlIGxlYWsgaW4gUHlfSW5pdGlhbGl6ZUV4KCkuICBQYXRjaCBieSBOZWlsCi0gIFNjaGVtZW5hdWVyLgotCi0tIHN0cnVjdHNlcS5oIGlzIG5vdyBpbmNsdWRlZCBpbiBQeXRob24uaC4KLQotLSBMb29zZW4gUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzIHRvIGFsbG93IGRpY3Qgc3ViY2xhc3Nlcy4KLQotVGVzdHMKLS0tLS0tCi0KLS0gcmVncnRlc3QucHkgb25jZSBhZ2FpbiBlbnN1cmVzIHRoZSB0ZXN0IGRpcmVjdG9yeSBpcyByZW1vdmVkIGZyb20gc3lzLnBhdGgKLSAgd2hlbiBpdCBpcyBpbnZva2VkIGRpcmVjdGx5IGFzIHRoZSBfX21haW5fXyBtb2R1bGUuCi0KLS0gYHB5dGhvbiAtbSB0ZXN0YCBjYW4gYmUgdXNlZCB0byBydW4gdGhlIHRlc3Qgc3VpdGUgYXMgd2VsbCBhcyBgcHl0aG9uIC1tCi0gIHRlc3QucmVncnRlc3RgLgotCi0tIERvIG5vdCBmYWlsIHRlc3Rfc29ja2V0IHdoZW4gdGhlIElQIGFkZHJlc3Mgb2YgdGhlIGxvY2FsIGhvc3RuYW1lIGNhbm5vdCBiZQotICBsb29rZWQgdXAuCi0KLS0gSXNzdWUgIzg4ODY6IFVzZSBjb250ZXh0IG1hbmFnZXJzIHRocm91Z2hvdXQgdGVzdF96aXBmaWxlLiBQYXRjaCBieSBFcmljCi0gIENhcnN0ZW5zZW4uCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxMDMyNTogRml4IHR3byBpc3N1ZXMgaW4gdGhlIGZhbGxiYWNrIGRlZmluaXRpb25zIGZvciBQWV9VTExPTkdfTUFYIGFuZAotICBQWV9MTE9OR19NQVggdGhhdCBtYWRlIHRoZW0gdW5zdWl0YWJsZSBmb3IgdXNlIGluIHByZXByb2Nlc3NvciBjb25kaXRpb25hbHMuCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTAyOTk6IExpc3QgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBpbiBhIHRhYmxlIGluIGZ1bmN0aW9ucy5yc3QuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIEFscGhhIDQ/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMTMtTm92LTIwMTAqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMDM3MjogSW1wb3J0IHRoZSB3YXJuaW5ncyBtb2R1bGUgb25seSBhZnRlciB0aGUgSU8gbGlicmFyeSBpcwotICBpbml0aWFsaXplZCwgc28gYXMgdG8gYXZvaWQgYm9vdHN0cmFwIGlzc3VlcyB3aXRoIHRoZSAnLVcnIG9wdGlvbi4KLQotLSBJc3N1ZSAjMTAyOTM6IFJlbW92ZSBvYnNvbGV0ZSBmaWVsZCBpbiB0aGUgUHlNZW1vcnlWaWV3IHN0cnVjdHVyZSwgdW51c2VkCi0gIHVuZG9jdW1lbnRlZCB2YWx1ZSBQeUJVRl9TSEFET1csIGFuZCBzdHJhbmdlbHktbG9va2luZyBjb2RlIGluCi0gIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzLgotCi0tIElzc3VlICM2MDgxOiBBZGQgc3RyLmZvcm1hdF9tYXAoKSwgc2ltaWxhciB0byBgYHN0ci5mb3JtYXQoKiptYXBwaW5nKWBgLgotCi0tIElmIEZpbGVJTy5fX2luaXRfXyBmYWlscywgY2xvc2UgdGhlIGZpbGUgZGVzY3JpcHRvci4KLQotLSBJc3N1ZSAjMTAyMjE6IGRpY3QucG9wKGspIG5vdyBoYXMgYSBrZXkgZXJyb3IgbWVzc2FnZSB0aGF0IGluY2x1ZGVzIHRoZQotICBtaXNzaW5nIGtleSAoc2FtZSBtZXNzYWdlIGRba10gcmV0dXJucyBmb3IgbWlzc2luZyBrZXlzKS4KLQotLSBJc3N1ZSAjNTQzNzogQSBwcmVhbGxvY2F0ZWQgTWVtb3J5RXJyb3IgaW5zdGFuY2Ugc2hvdWxkIG5vdCBrZWVwIHRyYWNlYmFjawotICBkYXRhIChpbmNsdWRpbmcgbG9jYWwgdmFyaWFibGVzIGNhdWdodCBpbiB0aGUgc3RhY2sgdHJhY2UpIGFsaXZlIGluZmluaXRlbHkuCi0KLS0gSXNzdWUgIzEwMTg2OiBGaXggdGhlIFN5bnRheEVycm9yIGNhcmV0IHdoZW4gdGhlIG9mZnNldCBpcyBlcXVhbCB0byB0aGUgbGVuZ3RoCi0gIG9mIHRoZSBvZmZlbmRpbmcgbGluZS4KLQotLSBJc3N1ZSAjMTAwODk6IEFkZCBzdXBwb3J0IGZvciBhcmJpdHJhcnkgLVggb3B0aW9ucyBvbiB0aGUgY29tbWFuZCBsaW5lLiAgVGhleQotICBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggYSBuZXcgYXR0cmlidXRlIGBgc3lzLl94b3B0aW9uc2BgLgotCi0tIElzc3VlICM0Mzg4OiBPbiBNYWMgT1MgWCwgZGVjb2RlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgZnJvbSBVVEYtOCwgaW5zdGVhZCBvZgotICB0aGUgbG9jYWxlIGVuY29kaW5nLiAgSWYgdGhlIExBTkcgKGFuZCBMQ19BTEwgYW5kIExDX0NUWVBFKSBlbnZpcm9ubWVudAotICB2YXJpYWJsZSBpcyBub3Qgc2V0LCB0aGUgbG9jYWxlIGVuY29kaW5nIGlzIElTTy04ODU5LTEsIHdoZXJlYXMgbW9zdCBwcm9ncmFtcwotICAoaW5jbHVkaW5nIFB5dGhvbikgZXhwZWN0IFVURi04LiAgUHl0aG9uIGFscmVhZHkgdXNlcyBVVEYtOCBmb3IgdGhlIGZpbGVzeXN0ZW0KLSAgZW5jb2RpbmcgYW5kIHRvIGVuY29kZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIG9uIHRoaXMgT1MuCi0KLS0gSXNzdWUgIzk3MTMsICMxMDExNDogUGFyc2VyIGZ1bmN0aW9ucyAoZS5nLiBQeVBhcnNlcl9BU1RGcm9tRmlsZSkgZXhwZWN0Ci0gIGZpbGVuYW1lcyBlbmNvZGVkIHRvIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIHdpdGggdGhlIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvcgotICBoYW5kbGVyICh0byBzdXBwb3J0IHVuZGVjb2RhYmxlIGJ5dGVzKSwgaW5zdGVhZCBvZiBVVEYtOCBpbiBzdHJpY3QgbW9kZS4KLQotLSBJc3N1ZSAjOTk5NzogRG9uJ3QgbGV0IHRoZSBuYW1lICJ0b3AiIGhhdmUgc3BlY2lhbCBzaWduaWZpY2FuY2UgaW4gc2NvcGUKLSAgcmVzb2x1dGlvbi4KLQotLSBJc3N1ZSAjOTg2MjogQ29tcGVuc2F0ZSBmb3IgYnJva2VuIFBJUEVfQlVGIGluIEFJWCBieSBoYXJkIGNvZGluZyBpdHMgdmFsdWUgYXMKLSAgdGhlIGRlZmF1bHQgNTEyIHdoZW4gY29tcGlsaW5nIG9uIEFJWC4KLQotLSBVc2UgbG9jYWxlIGVuY29kaW5nIGluc3RlYWQgb2YgVVRGLTggdG8gZW5jb2RlIGFuZCBkZWNvZGUgZmlsZW5hbWVzIGlmCi0gIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgaXMgbm90IHNldC4KLQotLSBJc3N1ZSAjMTAwOTU6IGZwX3NldHJlYWRsKCkgZG9lc24ndCByZW9wZW4gdGhlIGZpbGUsIGluc3RlYWQgcmV1c2UgdGhlIGZpbGUKLSAgZGVzY3JpcHRvci4KLQotLSBJc3N1ZSAjOTQxODogTW92ZWQgcHJpdmF0ZSBzdHJpbmcgbWV0aG9kcyBgYF9mb3JtYXR0ZXJfcGFyc2VyYGAgYW5kCi0gIGBgX2Zvcm1hdHRlcl9maWVsZF9uYW1lX3NwbGl0YGAgaW50byBhIG5ldyBgYF9zdHJpbmdgYCBtb2R1bGUuCi0KLS0gSXNzdWUgIzk5OTI6IFJlbW92ZSBQWVRIT05GU0VOQ09ESU5HIGVudmlyb25tZW50IHZhcmlhYmxlLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzEwNDY1OiBmaXggYnJva2VuIGRlbGVnYXRpbmcgb2YgYXR0cmlidXRlcyBieSBnemlwLl9QYWRkZWRGaWxlLgotCi0tIElzc3VlICMxMDM1NjogRGVjaW1hbC5fX2hhc2hfXygtMSkgc2hvdWxkIHJldHVybiAtMi4KLQotLSBJc3N1ZSAjMTU1MzM3NTogbG9nZ2luZzogQWRkZWQgc3RhY2tfaW5mbyBrd2FyZyB0byBkaXNwbGF5IHN0YWNrIGluZm9ybWF0aW9uLgotCi0tIElzc3VlICM1MTExOiBJUHY2IEhvc3QgaW4gdGhlIEhlYWRlciBpcyB3cmFwcGVkIGluc2lkZSBbIF0uIFBhdGNoIGJ5IENoYW5kcnUuCi0KLS0gRml4IEZyYWN0aW9uLl9faGFzaF9fIHNvIHRoYXQgRnJhY3Rpb24uX19oYXNoX18oLTEpIGlzIC0yLiAgKFNlZSBhbHNvIGlzc3VlCi0gICMxMDM1Ni4pCi0KLS0gSXNzdWUgIzQ0NzE6IEFkZCB0aGUgSU1BUC5zdGFydHRscygpIG1ldGhvZCB0byBlbmFibGUgZW5jcnlwdGlvbiBvbiBzdGFuZGFyZAotICBJTUFQNCBjb25uZWN0aW9ucy4gIE9yaWdpbmFsIHBhdGNoIGJ5IExvcmVuem8gTS4gQ2F0dWNjaS4KLQotLSBJc3N1ZSAjMTQ2NjA2NTogQWRkICd2YWxpZGF0ZScgb3B0aW9uIHRvIGJhc2U2NC5iNjRkZWNvZGUgdG8gcmFpc2UgYW4gZXJyb3IgaWYKLSAgdGhlcmUgYXJlIG5vbi1iYXNlNjQgYWxwaGFiZXQgY2hhcmFjdGVycyBpbiB0aGUgaW5wdXQuCi0KLS0gSXNzdWUgIzEwMzg2OiBBZGQgX19hbGxfXyB0byB0b2tlbiBtb2R1bGU7IHRoaXMgc2ltcGxpZmllcyBpbXBvcnRpbmcgaW4KLSAgdG9rZW5pemUgbW9kdWxlIGFuZCBwcmV2ZW50cyBsZWFraW5nIG9mIHByaXZhdGUgbmFtZXMgdGhyb3VnaCBgYGltcG9ydCAqYGAuCi0KLS0gSXNzdWUgIzQ0NzE6IFByb3Blcmx5IHNodXRkb3duIHNvY2tldCBpbiBJTUFQLnNodXRkb3duKCkuICBQYXRjaCBieSBMb3JlbnpvCi0gIE0uIENhdHVjY2kuCi0KLS0gRml4IElNQVAubG9naW4oKSB0byB3b3JrIHByb3Blcmx5LgotCi0tIElzc3VlICM5MjQ0OiBtdWx0aXByb2Nlc3NpbmcgcG9vbCB3b3JrZXIgcHJvY2Vzc2VzIGNvdWxkIHRlcm1pbmF0ZQotICB1bmV4cGVjdGVkbHkgaWYgdGhlIHJldHVybiB2YWx1ZSBvZiBhIHRhc2sgY291bGQgbm90IGJlIHBpY2tsZWQuICBPbmx5IHRoZQotICBgYHJlcHJgYCBvZiBzdWNoIGVycm9ycyBhcmUgbm93IHNlbnQgYmFjaywgd3JhcHBlZCBpbiBhbgotICBgYE1heWJlRW5jb2RpbmdFcnJvcmBgIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjOTI0NDogVGhlIGBgYXBwbHlfYXN5bmMoKWBgIGFuZCBgYG1hcF9hc3luYygpYGAgbWV0aG9kcyBvZgotICBgYG11bHRpcHJvY2Vzc2luZy5Qb29sYGAgbm93IGFjY2VwdHMgYSBgYGVycm9yX2NhbGxiYWNrYGAgYXJndW1lbnQuICBUaGlzIGNhbgotICBiZSBhIGNhbGxiYWNrIHdpdGggdGhlIHNpZ25hdHVyZSBgYGNhbGxiYWNrKGV4YylgYCwgd2hpY2ggd2lsbCBiZSBjYWxsZWQgaWYKLSAgdGhlIHRhcmdldCByYWlzZXMgYW4gZXhjZXB0aW9uLgotCi0tIElzc3VlICMxMDAyMjogVGhlIGRpY3Rpb25hcnkgcmV0dXJuZWQgYnkgdGhlIGBgZ2V0cGVlcmNlcnQoKWBgIG1ldGhvZCBvZiBTU0wKLSAgc29ja2V0cyBub3cgaGFzIGFkZGl0aW9uYWwgaXRlbXMgc3VjaCBhcyBgYGlzc3VlcmBgIGFuZCBgYG5vdEJlZm9yZWBgLgotCi0tIGBgdXNlbmV0cmNgYCBpcyBub3cgZmFsc2UgYnkgZGVmYXVsdCBmb3IgTk5UUCBvYmplY3RzLgotCi0tIElzc3VlICMxOTI2OiBBZGQgc3VwcG9ydCBmb3IgTk5UUCBvdmVyIFNTTCBvbiBwb3J0IDU2MywgYXMgd2VsbCBhcyBTVEFSVFRMUy4KLSAgUGF0Y2ggYnkgQW5kcmV3IFZhbnQuCi0KLS0gSXNzdWUgIzEwMzM1OiBBZGQgdG9rZW5pemUub3BlbigpLCBkZXRlY3QgdGhlIGZpbGUgZW5jb2RpbmcgdXNpbmcKLSAgdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKCkgYW5kIG9wZW4gaXQgaW4gcmVhZCBvbmx5IG1vZGUuCi0KLS0gSXNzdWUgIzEwMzIxOiBBZGQgc3VwcG9ydCBmb3IgYmluYXJ5IGRhdGEgdG8gc210cGxpYi5TTVRQLnNlbmRtYWlsLCBhbmQgYSBuZXcKLSAgbWV0aG9kIHNlbmRfbWVzc2FnZSB0byBzZW5kIGFuIGVtYWlsLm1lc3NhZ2UuTWVzc2FnZSBvYmplY3QuCi0KLS0gSXNzdWUgIzYwMTE6IHN5c2NvbmZpZyBhbmQgZGlzdHV0aWxzLnN5c2NvbmZpZyB1c2UgdGhlIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvcgotICBoYW5kbGVyIHRvIHBhcnNlIHRoZSBNYWtlZmlsZSBmaWxlLiAgQXZvaWQgYSBVbmljb2RlRGVjb2RlRXJyb3IgaWYgdGhlIHNvdXJjZQotICBjb2RlIGRpcmVjdG9yeSBuYW1lIGNvbnRhaW5zIGEgbm9uLUFTQ0lJIGNoYXJhY3RlciBhbmQgdGhlIGxvY2FsZSBlbmNvZGluZyBpcwotICBBU0NJSS4KLQotLSBJc3N1ZSAjMTAzMjk6IFRoZSB0cmFjZSBtb2R1bGUgd3JpdGVzIHJlcG9ydHMgdXNpbmcgdGhlIGlucHV0IFB5dGhvbiBzY3JpcHQKLSAgZW5jb2RpbmcsIGluc3RlYWQgb2YgdGhlIGxvY2FsZSBlbmNvZGluZy4gIFBhdGNoIHdyaXR0ZW4gYnkgQWxleGFuZGVyCi0gIEJlbG9wb2xza3kuCi0KLS0gSXNzdWUgIzEwMTI2OiBGaXggZGlzdHV0aWxzJyB0ZXN0X2J1aWxkIHdoZW4gUHl0aG9uIHdhcyBidWlsdCB3aXRoCi0gIC0tZW5hYmxlLXNoYXJlZC4KLQotLSBJc3N1ZSAjOTI4MTogUHJldmVudCByYWNlIGNvbmRpdGlvbiB3aXRoIG1rZGlyIGluIGRpc3R1dGlscy4gIFBhdGNoIGJ5Ci0gIEFyZnJldmVyLgotCi0tIElzc3VlICMxMDIyOTogRml4IGNhY2hpbmcgZXJyb3IgaW4gZ2V0dGV4dC4KLQotLSBJc3N1ZSAjMTAyNTI6IENsb3NlIGZpbGUgb2JqZWN0cyBpbiBhIHRpbWVseSBtYW5uZXIgaW4gZGlzdHV0aWxzIGNvZGUgYW5kCi0gIHRlc3RzLiAgUGF0Y2ggYnkgQnJpYW4gQnJhemlsLCBjb21wbGV0ZWQgYnkgw4lyaWMgQXJhdWpvLgotCi0tIElzc3VlICMxMDE4MDogUGlja2xpbmcgZmlsZSBvYmplY3RzIGlzIG5vdyBleHBsaWNpdGx5IGZvcmJpZGRlbiwgc2luY2UKLSAgdW5waWNrbGluZyB0aGVtIHByb2R1Y2VkIG5vbnNlbnNpY2FsIHJlc3VsdHMuCi0KLS0gSXNzdWUgIzEwMzExOiBUaGUgc2lnbmFsIG1vZHVsZSBub3cgcmVzdG9yZXMgZXJybm8gYmVmb3JlIHJldHVybmluZyBmcm9tIGl0cwotICBsb3ctbGV2ZWwgc2lnbmFsIGhhbmRsZXIuICBQYXRjaCBieSBIYWxsdmFyZCBCIEZ1cnVzZXRoLgotCi0tIElzc3VlICMxMDI4MjogQWRkIGEgYGBubnRwX2ltcGxlbWVudGF0aW9uYGAgYXR0cmlidXRlIHRvIE5OVFAgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTAyODM6IEFkZCBhIGBgZ3JvdXBfcGF0dGVybmBgIGFyZ3VtZW50IHRvIE5OVFAubGlzdCgpLgotCi0tIElzc3VlICMxMDE1NTogQWRkIElJU0NHSUhhbmRsZXIgdG8gd3NnaXJlZi5oYW5kbGVycyB0byBzdXBwb3J0IElJUyBDR0kKLSAgZW52aXJvbm1lbnQgYmV0dGVyLCBhbmQgdG8gY29ycmVjdCB1bmljb2RlIGVudmlyb25tZW50IHZhbHVlcyBmb3IgV1NHSSAxLjAuMS4KLQotLSBJc3N1ZSAjMTAyODE6IG5udHBsaWIgbm93IHJldHVybnMgTm9uZSBmb3IgYWJzZW50IGZpZWxkcyBpbiB0aGUgT1ZFUi9YT1ZFUgotICByZXNwb25zZSwgaW5zdGVhZCBvZiByYWlzaW5nIGFuIGV4Y2VwdGlvbi4KLQotLSB3c2dpcmVmIG5vdyBpbXBsZW1lbnRzIGFuZCB2YWxpZGF0ZXMgUEVQIDMzMzMsIHJhdGhlciB0aGFuIGFuIGV4cGVyaW1lbnRhbAotICBleHRlbnNpb24gb2YgUEVQIDMzMy4gIChOb3RlOiBlYXJsaWVyIHZlcnNpb25zIG9mIFB5dGhvbiAzLnggbWF5IGhhdmUKLSAgaW5jb3JyZWN0bHkgdmFsaWRhdGVkIHNvbWUgbm9uLWNvbXBsaWFudCBhcHBsaWNhdGlvbnMgYXMgV1NHSSBjb21wbGlhbnQ7IGlmCi0gIHlvdXIgYXBwIHZhbGlkYXRlcyB3aXRoIFB5dGhvbiA8My4yYjErLCBidXQgbm90IG9uIHRoaXMgdmVyc2lvbiwgaXQgaXMgbGlrZWx5Ci0gIHRoZSBjYXNlIHRoYXQgeW91ciBhcHAgd2FzIG5vdCBjb21wbGlhbnQuKQotCi0tIElzc3VlICMxMDI4MDogTk5UUC5ubnRwX3ZlcnNpb24gc2hvdWxkIHJlZmxlY3QgdGhlIGhpZ2hlc3QgdmVyc2lvbiBhZHZlcnRpc2VkCi0gIGJ5IHRoZSBzZXJ2ZXIuCi0KLS0gSXNzdWUgIzEwMTg0OiBUb3VjaCBkaXJlY3RvcmllcyBvbmx5IG9uY2Ugd2hlbiBleHRyYWN0aW5nIGEgdGFyZmlsZS4KLQotLSBJc3N1ZSAjMTAxOTk6IE5ldyBwYWNrYWdlLCBgYHR1cnRsZWRlbW9gYCBub3cgY29udGFpbnMgc2VsZWN0ZWQgZGVtbyBzY3JpcHRzCi0gIHRoYXQgd2VyZSBmb3JtZXJseSBmb3VuZCB1bmRlciBEZW1vL3R1cnRsZS4KLQotLSBJc3N1ZSAjMTAyNjU6IENsb3NlIGZpbGUgb2JqZWN0cyBleHBsaWNpdGx5IGluIHN1bmF1LiAgUGF0Y2ggYnkgQnJpYW4gQnJhemlsLgotCi0tIElzc3VlICMxMDI2NjogdXUuZGVjb2RlIGRpZG4ndCBjbG9zZSBpbl9maWxlIGV4cGxpY2l0bHkgd2hlbiBpdCB3YXMgZ2l2ZW4gYXMgYQotICBmaWxlbmFtZS4gIFBhdGNoIGJ5IEJyaWFuIEJyYXppbC4KLQotLSBJc3N1ZSAjMTAxMTA6IFF1ZXVlIG9iamVjdHMgZGlkbid0IHJlY29nbml6ZSBmdWxsIHF1ZXVlcyB3aGVuIHRoZSBtYXhzaXplCi0gIHBhcmFtZXRlciBoYWQgYmVlbiByZWR1Y2VkLgotCi0tIElzc3VlICMxMDE2MDogU3BlZWQgdXAgb3BlcmF0b3IuYXR0cmdldHRlci4gIFBhdGNoIGJ5IENocmlzdG9zIEdlb3JnaW91LgotCi0tIGxvZ2dpbmc6IEFkZGVkIHN0eWxlIG9wdGlvbiB0byBiYXNpY0NvbmZpZygpIHRvIGFsbG93ICUsIHt9IG9yICQtZm9ybWF0dGluZy4KLQotLSBJc3N1ZSAjNTcyOToganNvbi5kdW1wcygpIG5vdyBzdXBwb3J0cyB1c2luZyBhIHN0cmluZyBzdWNoIGFzICdcdCcgZm9yCi0gIHByZXR0eS1wcmludGluZyBtdWx0aWxldmVsIG9iamVjdHMuCi0KLS0gSXNzdWUgIzEwMjUzOiBGaWxlSU8gbGVha3MgYSBmaWxlIGRlc2NyaXB0b3Igd2hlbiB0cnlpbmcgdG8gb3BlbiBhIGZpbGUgZm9yCi0gIGFwcGVuZCB0aGF0IGlzbid0IHNlZWthYmxlLiAgUGF0Y2ggYnkgQnJpYW4gQnJhemlsLgotCi0tIFN1cHBvcnQgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIGZvciBmaWxlLWxpa2Ugb2JqZWN0cyByZXR1cm5lZCBieSBtYWlsYm94Ci0gIGBgZ2V0X2ZpbGUoKWBgIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzEwMjQ2OiB1dS5lbmNvZGUgZGlkbid0IGNsb3NlIGZpbGUgb2JqZWN0cyBleHBsaWNpdGx5IHdoZW4gZmlsZW5hbWVzCi0gIHdlcmUgZ2l2ZW4gdG8gaXQuICBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCi0KLS0gSXNzdWUgIzEwMTk4OiBmaXggZHVwbGljYXRlIGhlYWRlciB3cml0dGVuIHRvIHdhdmUgZmlsZXMgd2hlbiB3cml0ZWZyYW1lcygpIGlzCi0gIGNhbGxlZCB3aXRob3V0IGRhdGEuCi0KLS0gQ2xvc2UgZmlsZSBvYmplY3RzIGluIG1vZHVsZWZpbmRlciBpbiBhIHRpbWVseSBtYW5uZXIuCi0KLS0gQ2xvc2UgYSBpby5UZXh0SU9XcmFwcGVyIG9iamVjdCBpbiBlbWFpbC5wYXJzZXIgaW4gYSB0aW1lbHkgbWFubmVyLgotCi0tIENsb3NlIGEgZmlsZSBvYmplY3QgaW4gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbiBhIHRpbWVseSBtYW5uZXIuCi0KLS0gQ2xvc2UgYSBmaWxlIG9iamVjdCBpbiBwa2d1dGlsIGluIGEgdGltZWx5IG1hbm5lci4KLQotLSBJc3N1ZSAjMTAyMzM6IENsb3NlIGZpbGUgb2JqZWN0cyBpbiBhIHRpbWVseSBtYW5uZXIgaW4gdGhlIHRhcmZpbGUgbW9kdWxlIGFuZAotICBpdHMgdGVzdCBzdWl0ZS4KLQotLSBJc3N1ZSAjMTAwOTM6IFJlc291cmNlV2FybmluZ3MgYXJlIG5vdyBpc3N1ZWQgd2hlbiBmaWxlcyBhbmQgc29ja2V0cyBhcmUKLSAgZGVhbGxvY2F0ZWQgd2l0aG91dCBleHBsaWNpdCBjbG9zaW5nLiAgVGhlc2Ugd2FybmluZ3MgYXJlIHNpbGVuY2VkIGJ5IGRlZmF1bHQsCi0gIGV4Y2VwdCBpbiBweWRlYnVnIG1vZGUuCi0KLS0gdGFyZmlsZS5weTogQWRkIHN1cHBvcnQgZm9yIGFsbCBtaXNzaW5nIHZhcmlhbnRzIG9mIHRoZSBHTlUgc3BhcnNlIGV4dGVuc2lvbnMKLSAgYW5kIGNyZWF0ZSBmaWxlcyB3aXRoIGhvbGVzIHdoZW4gZXh0cmFjdGluZyBzcGFyc2UgbWVtYmVycy4KLQotLSBJc3N1ZSAjMTAyMTg6IFJldHVybiB0aW1lb3V0IHN0YXR1cyBmcm9tIGBgQ29uZGl0aW9uLndhaXRgYCBpbiB0aHJlYWRpbmcuCi0KLS0gSXNzdWUgIzczNTE6IEFkZCBgYHppcGZpbGUuQmFkWmlwRmlsZWBgIHNwZWxsaW5nIG9mIHRoZSBleGNlcHRpb24gbmFtZSBhbmQKLSAgZGVwcmVjYXRlIHRoZSBvbGQgbmFtZSBgYHppcGZpbGUuQmFkWmlwZmlsZWBgLgotCi0tIElzc3VlICM1MDI3OiBUaGUgc3RhbmRhcmQgYGB4bWxgYCBuYW1lc3BhY2UgaXMgbm93IHVuZGVyc3Rvb2QgYnkKLSAgeG1sLnNheC5zYXh1dGlscy5YTUxHZW5lcmF0b3IgYXMgYmVpbmcgYm91bmQgdG8KLSAgaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlLiAgUGF0Y2ggYnkgVHJveSBKLiBGYXJyZWxsLgotCi0tIElzc3VlICM1OTc1OiBBZGQgY3N2LnVuaXhfZGlhbGVjdCBjbGFzcy4KLQotLSBJc3N1ZSAjNzc2MTogdGVsbmV0bGliLmludGVyYWN0IGZhaWx1cmVzIG9uIFdpbmRvd3MgZml4ZWQuCi0KLS0gbG9nZ2luZzogQWRkZWQgc3R5bGUgb3B0aW9uIHRvIEZvcm1hdHRlciB0byBhbGxvdyAlLCB7fSBvciAkLWZvcm1hdHRpbmcuCi0KLS0gSXNzdWUgIzUxNzg6IEFkZGVkIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSBjbGFzcyB0aGF0IGNhbiBiZSB1c2VkIGFzIGEKLSAgY29udGV4dCBtYW5hZ2VyLgotCi0tIElzc3VlICMxMzQ5MTA2OiBHZW5lcmF0b3IgKGFuZCBCeXRlc0dlbmVyYXRvcikgZmxhdHRlbiBtZXRob2QgYW5kIEhlYWRlcgotICBlbmNvZGUgbWV0aG9kIG5vdyBzdXBwb3J0IGEgJ2xpbmVzZXAnIGFyZ3VtZW50LgotCi0tIElzc3VlICM1NjM5OiBBZGQgYSAqc2VydmVyX2hvc3RuYW1lKiBhcmd1bWVudCB0byBgYFNTTENvbnRleHQud3JhcF9zb2NrZXRgYCBpbgotICBvcmRlciB0byBzdXBwb3J0IHRoZSBUTFMgU05JIGV4dGVuc2lvbi4gIGBgSFRUUFNDb25uZWN0aW9uYGAgYW5kIGBgdXJsb3BlbigpYGAKLSAgYWxzbyB1c2UgdGhpcyBhcmd1bWVudCwgc28gdGhhdCBIVFRQUyB2aXJ0dWFsIGhvc3RzIGFyZSBub3cgc3VwcG9ydGVkLgotCi0tIElzc3VlICMxMDE2NjogQXZvaWQgcmVjdXJzaW9uIGluIHBzdGF0cyBTdGF0cy5hZGQoKSBmb3IgbWFueSBzdGF0cyBpdGVtcy4KLQotLSBJc3N1ZSAjMTAxNjM6IFNraXAgdW5yZWFkYWJsZSByZWdpc3RyeSBrZXlzIGR1cmluZyBtaW1ldHlwZXMgaW5pdGlhbGl6YXRpb24uCi0KLS0gbG9nZ2luZzogTWFkZSBTdHJlYW1IYW5kbGVyIHRlcm1pbmF0b3IgY29uZmlndXJhYmxlLgotCi0tIGxvZ2dpbmc6IEFsbG93ZWQgZmlsdGVycyB0byBiZSBqdXN0IGNhbGxhYmxlcy4KLQotLSBsb2dnaW5nOiBBZGRlZCB0ZXN0cyBmb3IgX2xvZ1JlY29yZENsYXNzIGNoYW5nZXMuCi0KLS0gSXNzdWUgIzEwMDkyOiBQcm9wZXJseSByZXNldCBsb2NhbGUgaW4gY2FsZW5kYXIuTG9jYWxlKkNhbGVuZGFyIGNsYXNzZXMuCi0KLS0gbG9nZ2luZzogQWRkZWQgX2xvZ1JlY29yZENsYXNzLCBnZXRMb2dSZWNvcmRDbGFzcywgc2V0TG9nUmVjb3JkQ2xhc3MgdG8KLSAgaW5jcmVhc2UgZmxleGliaWxpdHkgb2YgTG9nUmVjb3JkIGNyZWF0aW9uLgotCi0tIElzc3VlICM1MTE3OiBDYXNlIG5vcm1hbGl6YXRpb24gd2FzIG5lZWRlZCBvbiBudHBhdGgucmVscGF0aCgpLiAgQWxzbyBmaXhlZAotICByb290IGRpcmVjdG9yeSBpc3N1ZSBvbiBwb3NpeHBhdGgucmVscGF0aCgpLiAgKFBvcnRlZCB3b3JraW5nIGZpeGVzIGZyb20KLSAgbnRwYXRoLikKLQotLSBJc3N1ZSAjMTM0MzogeG1sLnNheC5zYXh1dGlscy5YTUxHZW5lcmF0b3Igbm93IGhhcyBhbiBvcHRpb24KLSAgc2hvcnRfZW1wdHlfZWxlbWVudHMgdG8gZGlyZWN0IGl0IHRvIHVzZSBzZWxmLWNsb3NpbmcgdGFncyB3aGVuIGFwcHJvcHJpYXRlLgotCi0tIElzc3VlICM5ODA3IChwYXJ0IDEpOiBFeHBvc2UgdGhlIEFCSSBmbGFncyBpbiBzeXMuYWJpZmxhZ3MuICBBZGQgLS1hYmlmbGFncwotICBzd2l0Y2ggdG8gcHl0aG9uLWNvbmZpZyBmb3IgY29tbWFuZCBsaW5lIGFjY2Vzcy4KLQotLSBJc3N1ZSAjNjA5ODogRG9uJ3QgY2xhaW0gRE9NIGxldmVsIDMgY29uZm9ybWFuY2UgaW4gbWluaWRvbS4KLQotLSBJc3N1ZSAjNTc2MjogRml4IEF0dHJpYnV0ZUVycm9yIHJhaXNlZCBieSBgYHhtbC5kb20ubWluaWRvbWBgIHdoZW4gYW4gZW1wdHkKLSAgWE1MIG5hbWVzcGFjZSBhdHRyaWJ1dGUgaXMgZW5jb3VudGVyZWQuCi0KLS0gSXNzdWUgIzI4MzA6IEFkZCB0aGUgYGBodG1sLmVzY2FwZSgpYGAgZnVuY3Rpb24sIHdoaWNoIHF1b3RlcyBhbGwgcHJvYmxlbWF0aWMKLSAgY2hhcmFjdGVycyBieSBkZWZhdWx0LiAgRGVwcmVjYXRlIGBgY2dpLmVzY2FwZSgpYGAuCi0KLS0gSXNzdWUgIzk0MDk6IEZpeCB0aGUgcmVnZXggdG8gbWF0Y2ggYWxsIGtpbmQgb2YgZmlsZW5hbWVzLCBmb3IgaW50ZXJhY3RpdmUKLSAgZGVidWdnaW5nIGluIGRvY3Rlc3RzLgotCi0tIElzc3VlICM5MTgzOiBgYGRhdGV0aW1lLnRpbWV6b25lKGRhdGV0aW1lLnRpbWVkZWx0YSgwKSlgYCB3aWxsIG5vdyByZXR1cm4gdGhlCi0gIHNhbWUgaW5zdGFuY2UgYXMgYGBkYXRldGltZS50aW1lem9uZS51dGNgYC4KLQotLSBJc3N1ZSAjNzUyMzogQWRkIFNPQ0tfQ0xPRVhFQyBhbmQgU09DS19OT05CTE9DSyB0byB0aGUgc29ja2V0IG1vZHVsZSwgd2hlcmUKLSAgc3VwcG9ydGVkIGJ5IHRoZSBzeXN0ZW0uICBQYXRjaCBieSBOaWtpdGEgVmV0b3Noa2luLgotCi0tIElzc3VlICMxMDA2MzogZmlsZTovLyBzY2hlbWUgd2lsbCBzdG9wIGFjY2Vzc2luZyByZW1vdGUgaG9zdHMgdmlhIGZ0cAotICBwcm90b2NvbC4gZmlsZTovLyB1cmxzIGhhZCBmYWxsYmFjayB0byBhY2Nlc3MgcmVtb3RlIGhvc3RzIHZpYSBmdHAuIFRoaXMgd2FzCi0gIG5vdCBjb3JyZWN0LCBjaGFuZ2UgaXMgbWFkZSB0byByYWlzZSBhIFVSTEVycm9yIHdoZW4gYSByZW1vdGUgaG9zdCBpcyB0cmllZCB0bwotICBhY2Nlc3MgdmlhIGZpbGU6Ly8gc2NoZW1lLgotCi0tIElzc3VlICMxNzEwNzAzOiBXcml0ZSBzdHJ1Y3R1cmVzIGZvciBhbiBlbXB0eSBaSVAgYXJjaGl2ZSB3aGVuIGEgWmlwRmlsZSBpcwotICBjcmVhdGVkIGluIG1vZGVzICdhJyBvciAndycgYW5kIHRoZW4gY2xvc2VkIHdpdGhvdXQgYWRkaW5nIGFueSBmaWxlcy4gUmFpc2UKLSAgQmFkWmlwZmlsZSAocmF0aGVyIHRoYW4gSU9FcnJvcikgd2hlbiBvcGVuaW5nIHNtYWxsIG5vbi1aSVAgZmlsZXMuCi0KLS0gSXNzdWUgIzEwMDQxOiBUaGUgc2lnbmF0dXJlIG9mIG9wdGlvbmFsIGFyZ3VtZW50cyBpbiBzb2NrZXQubWFrZWZpbGUoKSBkaWRuJ3QKLSAgbWF0Y2ggdGhhdCBvZiBpby5vcGVuKCksIGFuZCB0aGV5IGFsc28gZGlkbid0IGdldCBmb3J3YXJkZWQgcHJvcGVybHkgdG8KLSAgVGV4dElPV3JhcHBlciBpbiB0ZXh0IG1vZGUuICBQYXRjaCBieSBLYWkgWmh1LgotCi0tIElzc3VlICM5MDAzOiBodHRwLmNsaWVudC5IVFRQU0Nvbm5lY3Rpb24sIHVybGxpYi5yZXF1ZXN0LkhUVFBTSGFuZGxlciBhbmQKLSAgdXJsbGliLnJlcXVlc3QudXJsb3BlbiBub3cgdGFrZSBvcHRpb25hbCBhcmd1bWVudHMgdG8gYWxsb3cgZm9yIHNlcnZlcgotICBjZXJ0aWZpY2F0ZSBjaGVja2luZywgYXMgcmVjb21tZW5kZWQgaW4gcHVibGljIHVzZXMgb2YgSFRUUFMuCi0KLS0gSXNzdWUgIzY2MTI6IEZpeCBzaXRlIGFuZCBzeXNjb25maWcgdG8gY2F0Y2ggb3MuZ2V0Y3dkKCkgZXJyb3IsIGVnLiBpZiB0aGUKLSAgY3VycmVudCBkaXJlY3Rvcnkgd2FzIGRlbGV0ZWQuIFBhdGNoIHdyaXR0ZW4gYnkgVy4gVHJldm9yIEtpbmcuCi0KLS0gSXNzdWUgIzM4NzM6IFNwZWVkIHVwIHVucGlja2xpbmcgZnJvbSBmaWxlIG9iamVjdHMgdGhhdCBoYXZlIGEgcGVlaygpIG1ldGhvZC4KLQotLSBJc3N1ZSAjMTAwNzU6IEFkZCBhIHNlc3Npb25fc3RhdHMoKSBtZXRob2QgdG8gU1NMQ29udGV4dCBvYmplY3RzLgotCi0tIElzc3VlICM5OTQ4OiBGaXhlZCBwcm9ibGVtIG9mIGxvc2luZyBmaWxlbmFtZSBjYXNlIGluZm9ybWF0aW9uLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNTEwOTogYXJyYXkuYXJyYXkgY29uc3RydWN0b3Igd2lsbCBub3cgdXNlIGZhc3QgY29kZSB3aGVuCi0gIGluaXRpYWwgZGF0YSBpcyBwcm92aWRlZCBpbiBhbiBhcnJheSBvYmplY3Qgd2l0aCBjb3JyZWN0IHR5cGUuCi0KLS0gSXNzdWUgIzYzMTc6IE5vdyB3aW5zb3VuZC5QbGF5U291bmQgb25seSBhY2NlcHRzIHVuaWNvZGUuCi0KLS0gSXNzdWUgIzYzMTc6IE5vdyB3aW5zb3VuZC5QbGF5U291bmQgY2FuIGFjY2VwdCBub24gYXNjaWkgZmlsZW5hbWUuCi0KLS0gSXNzdWUgIzkzNzc6IFVzZSBVbmljb2RlIEFQSSBmb3IgZ2V0aG9zdG5hbWUgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjMTAxNDM6IFVwZGF0ZSAib3MucGF0aGNvbmYiIHZhbHVlcy4KLQotLSBJc3N1ZSAjNjUxODogU3VwcG9ydCBjb250ZXh0IG1hbmFnZXIgcHJvdGNvbCBmb3Igb3NzYXVkaW9kZXYgdHlwZXMuCi0KLS0gSXNzdWUgIzY3ODI1MDogTWFrZSBtbWFwIGZsdXNoIGEgbm9vcCBvbiBBQ0NFU1NfUkVBRCBhbmQgQUNDRVNTX0NPUFkuCi0KLS0gSXNzdWUgIzkwNTQ6IEZpeCBhIGNyYXNoIG9jY3VycmluZyB3aGVuIHVzaW5nIHRoZSBweWV4cGF0IG1vZHVsZSB3aXRoIGV4cGF0Ci0gIHZlcnNpb24gMi4wLjEuCi0KLS0gSXNzdWUgIzUzNTU6IFByb3ZpZGUgbWFwcGluZ3MgZnJvbSBFeHBhdCBlcnJvciBudW1iZXJzIHRvIHN0cmluZyBkZXNjcmlwdGlvbnMKLSAgYW5kIGJhY2t3YXJkcywgaW4gb3JkZXIgdG8gYWN0dWFsbHkgbWFrZSBpdCBwb3NzaWJsZSB0byBhbmFseXplIGVycm9yIGNvZGVzCi0gIHByb3ZpZGVkIGJ5IEV4cGF0RXJyb3IuCi0KLS0gVGhlIFVuaWNvZGUgZGF0YWJhc2Ugd2FzIHVwZGF0ZWQgdG8gNi4wLjAuCi0KLUMtQVBJCi0tLS0tLQotCi0tIElzc3VlICMxMDI4ODogVGhlIGRlcHJlY2F0ZWQgZmFtaWx5IG9mICJjaGFyIi1oYW5kbGluZyBtYWNyb3MKLSAgKElTTE9XRVIoKS9JU1VQUEVSKCkvZXRjKSBoYXZlIG5vdyBiZWVuIHJlbW92ZWQ6IHVzZSBQeV9JU0xPV0VSKCkgZXRjIGluc3RlYWQuCi0KLS0gSXNzdWUgIzk3Nzg6IEhhc2ggdmFsdWVzIGFyZSBub3cgYWx3YXlzIHRoZSBzaXplIG9mIHBvaW50ZXJzLiBBIG5ldyBQeV9oYXNoX3QKLSAgdHlwZSBoYXMgYmVlbiBpbnRyb2R1Y2VkLgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTAxMTc6IFRvb2xzL3NjcmlwdHMvcmVpbmRlbnQucHkgbm93IGFjY2VwdHMgc291cmNlIGZpbGVzIHRoYXQgdXNlCi0gIGVuY29kaW5nIG90aGVyIHRoYW4gQVNDSUkgb3IgVVRGLTguICBTb3VyY2UgZW5jb2RpbmcgaXMgcHJlc2VydmVkIHdoZW4KLSAgcmVpbmRlbnRlZCBjb2RlIGlzIHdyaXR0ZW4gdG8gYSBmaWxlLgotCi0tIElzc3VlICM3Mjg3OiBEZW1vL2ltcHV0aWwva25lZS5weSB3YXMgcmVtb3ZlZC4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzM2OTk6IEZpeCB0ZXN0X2JpZ2FkZHJzcGFjZSBhbmQgZXh0ZW5kIGl0IHRvIHRlc3QgYnl0ZXN0cmluZ3MgYXMgd2VsbAotICBhcyB1bmljb2RlIHN0cmluZ3MuICBJbml0aWFsIHBhdGNoIGJ5IFNhbmRybyBUb3NpLgotCi0tIElzc3VlICMxMDI5NDogUmVtb3ZlIGRlYWQgY29kZSBmb3JtIHRlc3RfdW5pY29kZV9maWxlLgotCi0tIElzc3VlICMxMDEyMzogRG9uJ3QgdXNlIG5vbi1hc2NpaSBmaWxlbmFtZXMgaW4gdGVzdF9kb2N0ZXN0IHRlc3RzLiBBZGQgYSBuZXcKLSAgdGVzdCBzcGVjaWZpYyB0byB1bmljb2RlIChub24tYXNjaWkgbmFtZSBhbmQgZmlsZW5hbWUpLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTAyNjg6IEFkZCBhIC0tZW5hYmxlLWxvYWRhYmxlLXNxbGl0ZS1leHRlbnNpb25zIG9wdGlvbiB0byBjb25maWd1cmUuCi0KLS0gSXNzdWUgIzg4NTI6IEFsbG93IHRoZSBzb2NrZXQgbW9kdWxlIHRvIGJ1aWxkIG9uIE9wZW5Tb2xhcmlzLgotCi0tIERyb3AgLU9QVDpPbGltaXQgY29tcGlsZXIgb3B0aW9uLgotCi0tIElzc3VlICMxMDA5NDogVXNlIHZlcnNpb25lZCAuc28gZmlsZXMgb24gR05VL2tmcmVlQlNEIGFuZCB0aGUgR05VIEh1cmQuCi0KLS0gQWNjZXB0IE9yYWNsZSBCZXJrZWxleSBEQiA1LjAgYW5kIDUuMSBhcyBiYWNrZW5kIGZvciB0aGUgZGJtIGV4dGVuc2lvbi4KLQotLSBJc3N1ZSAjNzQ3MzogYXZvaWQgbGluayBlcnJvcnMgd2hlbiBidWlsZGluZyBhIGZyYW1ld29yayB3aXRoIGEgZGlmZmVyZW50IHNldAotICBvZiBhcmNoaXRlY3R1cmVzIHRoYW4gdGhlIG9uZSB0aGF0IGlzIGN1cnJlbnRseSBpbnN0YWxsZWQuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIEFscGhhIDM/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMDktT2N0LTIwMTAqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMDA2ODogR2xvYmFsIG9iamVjdHMgd2hpY2ggaGF2ZSByZWZlcmVuY2UgY3ljbGVzIHdpdGggdGhlaXIgbW9kdWxlJ3MKLSAgZGljdCBhcmUgbm93IGNsZWFyZWQgYWdhaW4uIFRoaXMgY2F1c2VzIGlzc3VlICM3MTQwIHRvIGFwcGVhciBhZ2Fpbi4KLQotLSBJc3N1ZSAjOTczODogRG9jdW1lbnQgUHlFcnJfU2V0U3RyaW5nKCkgYW5kIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZSgpCi0gIGVuY29kaW5ncy4KLQotLSBhc3QubGl0ZXJhbF9ldmFsKCkgY2FuIG5vdyBoYW5kbGUgbmVnYXRpdmUgbnVtYmVycy4gIEl0IGlzIGFsc28gYSBsaXR0bGUgbW9yZQotICBsaWJlcmFsIGluIHdoYXQgaXQgYWNjZXB0cyB3aXRob3V0IGNvbXByb21pc2luZyB0aGUgc2FmZXR5IG9mIHRoZSBldmFsdWF0aW9uLgotICBGb3IgZXhhbXBsZSwgM2orNCBhbmQgMys0KzUgYXJlIGJvdGggYWNjZXB0ZWQuCi0KLS0gSXNzdWUgIzEwMDA2OiB0eXBlLl9fYWJzdHJhY3RtZXRob2RzX18gbm93IHJhaXNlcyBhbiBBdHRyaWJ1dGVFcnJvci4gIEFzIGEKLSAgcmVzdWx0IG1ldGFjbGFzc2VzIGNhbiBub3cgYmUgQUJDcyAoc2VlICM5NTMzKS4KLQotLSBJc3N1ZSAjODY3MDogY3R5cGVzLmNfd2NoYXIgc3VwcG9ydHMgbm9uLUJNUCBjaGFyYWN0ZXJzIHdpdGggMzIgYml0cyB3Y2hhcl90LgotCi0tIElzc3VlICM4NjcwOiBQeVVuaWNvZGVfQXNXaWRlQ2hhcigpIGFuZCBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZygpIHJlcGxhY2UKLSAgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycyBieSBzaW5nbGUgbm9uLUJNUCBjaGFyYWN0ZXJzIGZvciAxNiBiaXRzIFB5X1VOSUNPREUgYW5kCi0gIDMyIGJpdHMgd2NoYXJfdCAoZWcuIExpbnV4IGluIG5hcnJvdyBidWlsZCkuCi0KLS0gSXNzdWUgIzEwMDAzOiBBbGxvdyBoYW5kbGluZyBvZiBTSUdCUkVBSyBvbiBXaW5kb3dzLiBGaXhlcyBhIHJlZ3Jlc3Npb24KLSAgaW50cm9kdWNlZCBieSBpc3N1ZSAjOTMyNC4KLQotLSBJc3N1ZSAjOTk3OTogQ3JlYXRlIGZ1bmN0aW9uIFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKCkuCi0KLS0gSXNzdWUgIzczOTc6IE1lbnRpb24gdGhhdCBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIGlzIHByb2JhYmx5IHdoYXQgc29tZW9uZQotICByZWFsbHkgd2FudHMgdG8gYmUgdXNpbmcgaW4gX19pbXBvcnRfXydzIGRvY3N0cmluZy4KLQotLSBJc3N1ZSAjODUyMTogQWxsb3cgQ3JlYXRlS2V5RXgsIE9wZW5LZXlFeCwgYW5kIERlbGV0ZUtleUV4IGZ1bmN0aW9ucyBvZiB3aW5yZWcKLSAgdG8gdXNlIG5hbWVkIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjOTkzMDogUmVtb3ZlIGJvZ3VzIHN1YnR5cGUgY2hlY2sgdGhhdCB3YXMgY2F1c2luZyAoZS5nLikKLSAgZmxvYXQuX19yZGl2X18oMi4wLCAzKSB0byByZXR1cm4gTm90SW1wbGVtZW50ZWQgaW5zdGVhZCBvZiB0aGUgZXhwZWN0ZWQgMS41LgotCi0tIElzc3VlICM5ODA4OiBJbXBsZW1lbnQgb3MuZ2V0bG9naW4gZm9yIFdpbmRvd3MuIFBhdGNoIGJ5IEpvbiBBbmdsaW4uCi0KLS0gSXNzdWUgIzk5MDE6IERlc3Ryb3lpbmcgdGhlIEdJTCBpbiBQeV9GaW5hbGl6ZSgpIGNhbiBmYWlsIGlmIHNvbWUgb3RoZXIKLSAgdGhyZWFkcyBhcmUgc3RpbGwgcnVubmluZy4gIEluc3RlYWQsIHJlaW5pdGlhbGl6ZSB0aGUgR0lMIG9uIGEgc2Vjb25kIGNhbGwgdG8KLSAgUHlfSW5pdGlhbGl6ZSgpLgotCi0tIEFsbCBTeW50YXhFcnJvcnMgbm93IGhhdmUgYSBjb2x1bW4gb2Zmc2V0IGFuZCB0aGVyZWZvcmUgYSBjYXJldCB3aGVuIHRoZSBlcnJvcgotICBpcyBwcmludGVkLgotCi0tIElzc3VlICM5MjUyOiBQeUltcG9ydF9JbXBvcnQgbm8gbG9uZ2VyIHVzZXMgYSBmcm9tbGlzdCBoYWNrIHRvIHJldHVybiB0aGUKLSAgbW9kdWxlIHRoYXQgd2FzIGltcG9ydGVkLCBidXQgaW5zdGVhZCBnZXRzIHRoZSBtb2R1bGUgZnJvbSBzeXMubW9kdWxlcy4KLQotLSBJc3N1ZSAjOTIxMzogVGhlIHJhbmdlIHR5cGVfaXRlbXMgbm93IHByb3ZpZGVzIGluZGV4KCkgYW5kIGNvdW50KCkgbWV0aG9kcywgdG8KLSAgY29uZm9ybSB0byB0aGUgU2VxdWVuY2UgQUJDLiAgUGF0Y2ggYnkgRGFuaWVsIFVyYmFuIGFuZCBEYW5pZWwgU3R1dHpiYWNoLgotCi0tIElzc3VlICM3OTk0OiBJc3N1ZSBhIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgaWYgb2JqZWN0Ll9fZm9ybWF0X18gaXMgY2FsbGVkCi0gIHdpdGggYSBub24tZW1wdHkgZm9ybWF0IHN0cmluZy4gIFRoaXMgaXMgYW4gZWZmb3J0IHRvIGZ1dHVyZS1wcm9vZiB1c2VyCi0gIGNvZGUuIElmIGEgZGVyaXZlZCBjbGFzcyBkb2VzIG5vdCBjdXJyZW50bHkgaW1wbGVtZW50IF9fZm9ybWF0X18gYnV0IGxhdGVyCi0gIGFkZHMgaXRzIG93biBfX2Zvcm1hdF9fLCBpdCB3b3VsZCBtb3N0IGxpa2VseSBicmVhayB1c2VyIGNvZGUgdGhhdCBoYWQKLSAgc3VwcGxpZWQgYSBmb3JtYXQgc3RyaW5nLiAgVGhpcyB3aWxsIGJlIGNoYW5nZWQgdG8gYSBEZXByZWNhdGlvbldhcmluZyBpbgotICBQeXRob24gMy4zIGFuZCBpdCB3aWxsIGJlIGFuIGVycm9yIGluIFB5dGhvbiAzLjQuCi0KLS0gSXNzdWUgIzk4Mjg6IERlc3Ryb3kgdGhlIEdJTCBpbiBQeV9GaW5hbGl6ZSgpLCBzbyB0aGF0IGl0IGdldHMgcHJvcGVybHkKLSAgcmUtY3JlYXRlZCBvbiBhIHN1YnNlcXVlbnQgY2FsbCB0byBQeV9Jbml0aWFsaXplKCkuICBUaGUgcHJvYmxlbSAoYSBjcmFzaCkKLSAgd291bGRuJ3QgYXBwZWFyIGluIDMuMSBvciAyLjcgd2hlcmUgdGhlIEdJTCdzIHN0cnVjdHVyZSBpcyBtb3JlIHRyaXZpYWwuCi0KLS0gSXNzdWUgIzkyMTA6IENvbmZpZ3VyZSBvcHRpb24gLS13aXRoLXdjdHlwZS1mdW5jdGlvbnMgd2FzIHJlbW92ZWQuICBVc2luZyB0aGUKLSAgZnVuY3Rpb25zIGZyb20gdGhlIGxpYmMgY2F1c2VkIHRoZSBtZXRob2RzIC51cHBlcigpIGFuZCBsb3dlcigpIHRvIGJlY29tZQotICBsb2NhbGUgYXdhcmUgYW5kIGNyZWF0ZWQgc3VidGx5IHdyb25nIHJlc3VsdHMuCi0KLS0gSXNzdWUgIzk3Mzg6IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCkgYW5kIFB5RXJyX0Zvcm1hdCgpIHJhaXNlIGFuIGVycm9yIG9uIGEKLSAgbm9uLUFTQ0lJIGJ5dGUgaW4gdGhlIGZvcm1hdCBzdHJpbmcuCi0KLS0gSXNzdWUgIzQ2MTc6IFByZXZpb3VzbHkgaXQgd2FzIGlsbGVnYWwgdG8gZGVsZXRlIGEgbmFtZSBmcm9tIHRoZSBsb2NhbAotICBuYW1lc3BhY2UgaWYgaXQgb2NjdXJzIGFzIGEgZnJlZSB2YXJpYWJsZSBpbiBhIG5lc3RlZCBibG9jay4gIFRoaXMgbGltaXRhdGlvbgotICBvZiB0aGUgY29tcGlsZXIgaGFzIGJlZW4gbGlmdGVkLCBhbmQgYSBuZXcgb3Bjb2RlIGludHJvZHVjZWQgKERFTEVURV9ERVJFRikuCi0KLS0gSXNzdWUgIzk4MDQ6IGFzY2lpKCkgbm93IGFsd2F5cyByZXByZXNlbnRzIHVuaWNvZGUgc3Vycm9nYXRlIHBhaXJzIGFzIGEgc2luZ2xlCi0gIGBgXFVYWFhYWFhYWGBgLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBpcyBwcmludGFibGUgb3Igbm90LgotICBBbHNvLCB0aGUgImJhY2tzbGFzaHJlcGxhY2UiIGVycm9yIGhhbmRsZXIgbm93IGpvaW5zIHN1cnJvZ2F0ZSBwYWlycyBpbnRvIGEKLSAgc2luZ2xlIGNoYXJhY3RlciBvbiBVQ1MtMiBidWlsZHMuCi0KLS0gSXNzdWUgIzk3NTc6IG1lbW9yeXZpZXcgb2JqZWN0cyBnZXQgYSByZWxlYXNlKCkgbWV0aG9kIHRvIHJlbGVhc2UgdGhlCi0gIHVuZGVybHlpbmcgYnVmZmVyIChwcmV2aW91c2x5IHRoaXMgd2FzIG9ubHkgZG9uZSB3aGVuIGRlYWxsb2NhdGluZyB0aGUKLSAgbWVtb3J5dmlldyksIGFuZCBnYWluIHN1cHBvcnQgZm9yIHRoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wuCi0KLS0gSXNzdWUgIzk3OTc6IHB5c3RhdGUuYyB3cm9uZ2x5IGFzc3VtZWQgdGhhdCB6ZXJvIGNvdWxkbid0IGJlIGEgdmFsaWQKLSAgdGhyZWFkLWxvY2FsIHN0b3JhZ2Uga2V5LgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzIyMzY6IGRpc3R1dGlscycgbWtwYXRoIGlnbm9yZWQgdGhlIG1vZGUgcGFyYW1ldGVyLgotCi0tIEZpeCB0eXBvIGluIG9uZSBzZGlzdCBvcHRpb24gKG1lZGF0YS1jaGVjaykuCi0KLS0gSXNzdWUgIzkxOTk6IEZpeCBpbmNvcnJlY3QgdXNlIG9mIGRpc3R1dGlscy5jbWQuQ29tbWFuZC5hbm5vdW5jZS4KLQotLSBJc3N1ZSAjMTcxODU3NDogRml4IG9wdGlvbnMgdGhhdCB3ZXJlIHN1cHBvc2VkIHRvIGFjY2VwdCBhcmd1bWVudHMgYnV0IGRpZAotICBub3QgaW4gYnVpbGRfY2xpYi4KLQotLSBJc3N1ZSAjOTQzNzogRml4IGJ1aWxkaW5nIEMgZXh0ZW5zaW9ucyB3aXRoIG5vbi1kZWZhdWx0IExERkxBR1MuCi0KLS0gSXNzdWUgIzQ2NjE6IGVtYWlsIGNhbiBub3cgcGFyc2UgYnl0ZXMgaW5wdXQgYW5kIGdlbmVyYXRlIGVpdGhlciBjb252ZXJ0ZWQKLSAgN2JpdCBvdXRwdXQgb3IgYnl0ZXMgb3V0cHV0LiAgRW1haWwgdmVyc2lvbiBidW1wZWQgdG8gNS4xLjAuCi0KLS0gSXNzdWUgIzE1ODk6IEFkZCBzc2wubWF0Y2hfaG9zdG5hbWUoKSwgdG8gaGVscCBpbXBsZW1lbnQgc2VydmVyIGlkZW50aXR5Ci0gIHZlcmlmaWNhdGlvbiBmb3IgaGlnaGVyLWxldmVsIHByb3RvY29scy4KLQotLSBJc3N1ZSAjOTc1OTogR3ppcEZpbGUgbm93IHJhaXNlcyBWYWx1ZUVycm9yIHdoZW4gYW4gb3BlcmF0aW9uIGlzIGF0dGVtcHRlZAotICBhZnRlciB0aGUgZmlsZSBpcyBjbG9zZWQuICBQYXRjaCBieSBKZWZmcmV5IEZpbmtlbHN0ZWluLgotCi0tIElzc3VlICM5MDQyOiBGaXggaW50ZXJhY3Rpb24gb2YgY3VzdG9tIHRyYW5zbGF0aW9uIGNsYXNzZXMgYW5kIGNhY2hpbmcgaW4KLSAgZ2V0dGV4dC4KLQotLSBJc3N1ZSAjNjcwNjogYXN5bmNvcmUuZGlzcGF0Y2hlciBub3cgcHJvdmlkZXMgYSBoYW5kbGVfYWNjZXB0ZWQoKSBtZXRob2QKLSAgcmV0dXJuaW5nIGEgKHNvY2ssIGFkZHIpIHBhaXIgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYSBjb25uZWN0aW9uIGhhcyBiZWVuCi0gIGVzdGFibGlzaGVkIHdpdGggYSBuZXcgcmVtb3RlIGVuZHBvaW50LiAgVGhpcyBpcyBzdXBwb3NlZCB0byBiZSB1c2VkIGFzIGEKLSAgcmVwbGFjZW1lbnQgZm9yIG9sZCBoYW5kbGVfYWNjZXB0KCkgYW5kIGF2b2lkcyB0aGUgdXNlciB0byBjYWxsIGFjY2VwdCgpCi0gIGRpcmVjdGx5LgotCi0tIElzc3VlICM5MDY1OiB0YXJmaWxlIG5vIGxvbmdlciB1c2VzICJyb290IiBhcyB0aGUgZGVmYXVsdCBmb3IgdGhlIHVuYW1lIGFuZAotICBnbmFtZSBmaWVsZC4KLQotLSBJc3N1ZSAjODk4MDogRml4ZWQgYSBmYWlsdXJlIGluIGRpc3R1dGlscy5jb21tYW5kIGNoZWNrIHRoYXQgd2FzIHNoYWRvd2VkIGJ5Ci0gIGFuIGVudmlyb25tZW50IHRoYXQgZG9lcyBub3QgaGF2ZSBkb2N1dGlscy4gIFBhdGNoIGJ5IEFyZnJldmVyLgotCi0tIElzc3VlICMxMDUwMjY4OiBwYXJzZWFkZHIgbm93IGNvcnJlY3RseSBxdW90ZXMgZG91YmxlIHF1b3RlIGFuZCBiYWNrc2xhc2gKLSAgY2hhcmFjdGVycyB0aGF0IGFwcGVhciBpbnNpZGUgcXVvdGVkIHN0cmluZ3MgaW4gZW1haWwgYWRkcmVzc2VzLgotCi0tIElzc3VlICMxMDAwNDogcXVvcHJpbWltZSBubyBsb25nZXIgZ2VuZXJhdGVzIGEgdHJhY2ViYWNrIHdoZW4gY29uZnJvbnRlZCB3aXRoCi0gIGludmFsaWQgY2hhcmFjdGVycyBhZnRlciAnPScgaW4gYSBRLWVuY29kZWQgd29yZC4KLQotLSBJc3N1ZSAjMTQ5MTogQmFzZUhUVFBTZXJ2ZXIgbm93cyBzZW5kIGEgYGAxMDAgQ29udGludWVgYCByZXNwb25zZSBiZWZvcmUKLSAgc2VuZGluZyBhIDIwMCBPSyBmb3IgdGhlIEV4cGVjdDogMTAwLWNvbnRpbnVlIHJlcXVlc3QgaGVhZGVyLgotCi0tIElzc3VlICM5MzYwOiBDbGVhbnVwIGFuZCBpbXByb3ZlbWVudHMgdG8gdGhlIG5udHBsaWIgbW9kdWxlLiAgVGhlIEFQSSBub3cKLSAgY29uZm9ybXMgdG8gdGhlIHBoaWxvc29waHkgb2YgYnl0ZXMgYW5kIHVuaWNvZGUgc2VwYXJhdGlvbiBpbiBQeXRob24gMy4gIEEKLSAgdGVzdCBzdWl0ZSBoYXMgYWxzbyBiZWVuIGFkZGVkLgotCi0tIElzc3VlICM5OTYyOiBHemlwRmlsZSBub3cgaGFzIHRoZSBwZWVrKCkgbWV0aG9kLgotCi0tIElzc3VlICM5MDkwOiBXaGVuIGEgc29ja2V0IHdpdGggYSB0aW1lb3V0IGZhaWxzIHdpdGggRVdPVUxEQkxPQ0sgb3IgRUFHQUlOLAotICByZXRyeSB0aGUgc2VsZWN0KCkgbG9vcCBpbnN0ZWFkIG9mIGJhaWxpbmcgb3V0LiAgVGhpcyBpcyBiZWNhdXNlIHNlbGVjdCgpIGNhbgotICBpbmNvcnJlY3RseSByZXBvcnQgYSBzb2NrZXQgYXMgcmVhZHkgZm9yIHJlYWRpbmcgKGZvciBleGFtcGxlLCBpZiBpdCByZWNlaXZlZAotICBzb21lIGRhdGEgd2l0aCBhbiBpbnZhbGlkIGNoZWNrc3VtKS4KLQotLSBJc3N1ZSAjMzYxMjogQWRkZWQgbmV3IHR5cGVzIHRvIGN0eXBlcy53aW50eXBlcy4gKENIQVIgYW5kIHBvaW50ZXJzKQotCi0tIElzc3VlICM5OTUwOiBGaXggc29ja2V0LnNlbmRhbGwoKSBjcmFzaCBvciBtaXNiZWhhdmlvdXIgd2hlbiBhIHNpZ25hbCBpcwotICByZWNlaXZlZC4gIE5vdyBzZW5kYWxsKCkgcHJvcGVybHkgY2FsbHMgc2lnbmFsIGhhbmRsZXJzIGlmIG5lY2Vzc2FyeSwgYW5kCi0gIHJldHJpZXMgc2VuZGluZyBpZiB0aGVzZSByZXR1cm5lZCBzdWNjZXNzZnVsbHksIGluY2x1ZGluZyBvbiBzb2NrZXRzIHdpdGggYQotICB0aW1lb3V0LgotCi0tIElzc3VlICM5OTQ3OiBsb2dnaW5nOiBGaXhlZCBsb2NraW5nIGJ1ZyBpbiBzdG9wTGlzdGVuaW5nLgotCi0tIElzc3VlICM5OTQ1OiBsb2dnaW5nOiBGaXhlZCBsb2NraW5nIGJ1Z3MgaW4gYWRkSGFuZGxlci9yZW1vdmVIYW5kbGVyLgotCi0tIElzc3VlICM5OTM2OiBGaXhlZCBleGVjdXRhYmxlIGxpbmVzJyBzZWFyY2ggaW4gdGhlIHRyYWNlIG1vZHVsZS4KLQotLSBJc3N1ZSAjOTc5MDogUmV3b3JrIGltcG9ydHMgbmVjZXNzYXJ5IGZvciBzYW1lZmlsZSBhbmQgc2FtZW9wZW5maWxlCi0gIGluIG50cGF0aC4KLQotLSBJc3N1ZSAjOTkyODogUHJvcGVybHkgaW5pdGlhbGl6ZSB0aGUgdHlwZXMgZXhwb3J0ZWQgYnkgdGhlIGJ6MiBtb2R1bGUuCi0KLS0gSXNzdWUgIzE2NzU5NTE6IEFsbG93IEd6aXBGaWxlIHRvIHdvcmsgd2l0aCB1bnNlZWthYmxlIGZpbGUgb2JqZWN0cy4gIFBhdGNoIGJ5Ci0gIEZsb3JpYW4gRmVzdGkuCi0KLS0gTG9nZ2luZzogQWRkZWQgUXVldWVMaXN0ZW5lciBjbGFzcyB0byBmYWNpbGl0YXRlIGxvZ2dpbmcgdXNhZ2UgZm9yCi0gIHBlcmZvcm1hbmNlLWNyaXRpY2FsIHRocmVhZHMuCi0KLS0gSXNzdWUgIzk5MTY6IEFkZCBzb21lIG1pc3NpbmcgZXJybm8gc3ltYm9scy4KLQotLSBJc3N1ZSAjOTg3NzogRXhwb3NlIHN5c2NvbmZpZy5nZXRfbWFrZWZpbGVfZmlsZW5hbWUoKQotCi0tIGxvZ2dpbmc6IEFkZGVkIGhhc0hhbmRsZXJzKCkgbWV0aG9kIHRvIExvZ2dlciBhbmQgTG9nZ2VyQWRhcHRlci4KLQotLSBJc3N1ZSAjOTkwODogRml4IG9zLnN0YXQoKSBvbiBieXRlcyBwYXRocyB1bmRlciBXaW5kb3dzIDcuCi0KLS0gSXNzdWUgIzI2NDM6IG1zeW5jKCkgaXMgbm90IGNhbGxlZCBhbnltb3JlIHdoZW4gZGVhbGxvY2F0aW5nIGFuIG9wZW4gbW1hcAotICBvYmplY3QsIG9ubHkgbXVubWFwKCkuCi0KLS0gbG9nZ2luZzogQ2hhbmdlZCBMb2dnZXJBZGFwdGVyIGltcGxlbWVudGF0aW9uIGludGVybmFsbHksIHRvIG1ha2UgaXQgZWFzaWVyIHRvCi0gIHN1YmNsYXNzIGluIGEgdXNlZnVsIHdheS4KLQotLSBsb2dnaW5nOiBoYXNIYW5kbGVycyBtZXRob2Qgd2FzIGFkZGVkIHRvIExvZ2dlciwgYW5kIGlzRW5hYmxlZEZvciwKLSAgZ2V0RWZmZWN0aXZlTGV2ZWwsIGhhc0hhbmRsZXJzIGFuZCBzZXRMZXZlbCB3ZXJlIGFkZGVkIHRvIExvZ2dlckFkYXB0ZXIuCi0gIExvZ2dlckFkYXB0ZXIgd2FzIGludHJvZHVjZWQgaW50byB0aGUgdW5pdCB0ZXN0cyBmb3IgbG9nZ2luZy4KLQotLSBJc3N1ZSAjMTY4NjogRml4IHN0cmluZy5UZW1wbGF0ZSB3aGVuIG92ZXJyaWRpbmcgdGhlIHBhdHRlcm4gYXR0cmlidXRlLgotCi0tIElzc3VlICM5ODU0OiBTb2NrZXRJTyBvYmplY3RzIG5vdyBvYnNlcnZlIHRoZSBSYXdJT0Jhc2UgaW50ZXJmYWNlIGluCi0gIG5vbi1ibG9ja2luZyBtb2RlOiB0aGV5IHJldHVybiBOb25lIHdoZW4gYW4gb3BlcmF0aW9uIHdvdWxkIGJsb2NrIChpbnN0ZWFkIG9mCi0gIHJhaXNpbmcgYW4gZXhjZXB0aW9uKS4KLQotLSBJc3N1ZSAjMTczMDEzNjogRml4IHRoZSBjb21wYXJpc29uIGJldHdlZW4gYSB0ay5mb250LkZvbnQgYW5kIGFuIG9iamVjdCBvZgotICBhbm90aGVyIGtpbmQuCi0KLS0gSXNzdWUgIzk0NDE6IGxvZ2dpbmcgaGFzIGJldHRlciBjb3ZlcmFnZSBmb3Igcm90YXRpbmcgZmlsZSBoYW5kbGVycy4KLQotLSBJc3N1ZSAjOTg2NTogY29sbGVjdGlvbnMuT3JkZXJlZERpY3Qgbm93IGhhcyBhIF9fc2l6ZW9mX18gbWV0aG9kLgotCi0tIElzc3VlICM5ODU0OiBUaGUgZGVmYXVsdCByZWFkKCkgaW1wbGVtZW50YXRpb24gaW4gaW8uUmF3SU9CYXNlIG5vdyBoYW5kbGVzCi0gIG5vbi1ibG9ja2luZyByZWFkaW50bygpIHJldHVybmluZyBOb25lIGNvcnJlY3RseS4KLQotLSBJc3N1ZSAjMTU1Mjogc29ja2V0LnNvY2tldHBhaXIoKSBub3cgcmV0dXJucyByZWd1bGFyIHNvY2tldC5zb2NrZXQgb2JqZWN0cwotICBzdXBwb3J0aW5nIHRoZSB3aG9sZSBzb2NrZXQgQVBJIChyYXRoZXIgdGhhbiB0aGUgInJhdyIgX3NvY2tldC5zb2NrZXQKLSAgb2JqZWN0cykuCi0KLS0gSXNzdWUgIzk4NTM6IEZpeCB0aGUgc2lnbmF0dXJlIG9mIFNTTFNvY2tldC5yZWN2ZnJvbSgpIGFuZCBTU0xTb2NrZXQuc2VuZHRvKCkKLSAgdG8gbWF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgc29ja2V0IG1ldGhvZHMuCi0KLS0gSXNzdWUgIzk4NDA6IEFkZGVkIGEgZGVjb3JhdG9yIHRvIHJlcHJsaWIgZm9yIHdyYXBwaW5nIF9fcmVwcl9fIG1ldGhvZHMgdG8gbWFrZQotICB0aGVtIGhhbmRsZSByZWN1cnNpdmUgY2FsbHMgd2l0aGluIHRoZSBzYW1lIHRocmVhZC4KLQotLSBsb2dnaW5nOiBFbmhhbmNlZCBIVFRQSGFuZGxlciB3aXRoIHNlY3VyZSBhbmQgY3JlZGVudGlhbHMgaW5pdGlhbGl6ZXJzLgotCi0tIElzc3VlICM3Njc2NDU6IFNldCBvcy5wYXRoLnN1cHBvcnRzX3VuaWNvZGVfZmlsZW5hbWVzIHRvIFRydWUgb24gTWFjIE9TIFguCi0KLS0gSXNzdWUgIzk4Mzc6IFRoZSByZWFkKCkgbWV0aG9kIG9mIFppcEV4dEZpbGUgb2JqZWN0cyAoYXMgcmV0dXJuZWQgYnkKLSAgWmlwRmlsZS5vcGVuKCkpIGNvdWxkIHJldHVybiBtb3JlIGJ5dGVzIHRoYW4gcmVxdWVzdGVkLgotCi0tIElzc3VlICM5ODI2OiBPcmRlcmVkRGljdC5fX3JlcHJfXyBjYW4gbm93IGhhbmRsZSBzZWxmLXJlZmVyZW50aWFsIHZhbHVlczoKLSAgZFsneCddID0gZC4KLQotLSBJc3N1ZSAjOTgyNTogVXNpbmcgX19kZWxfXyBpbiB0aGUgZGVmaW5pdGlvbiBvZiBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCBtYWRlCi0gIGl0IHBvc3NpYmxlIGZvciB0aGUgdXNlciB0byBjcmVhdGUgc2VsZi1yZWZlcmVuY2luZyBvcmRlcmVkIGRpY3Rpb25hcmllcyB3aGljaAotICBiZWNvbWUgcGVybWFuZW50bHkgdW5jb2xsZWN0YWJsZSBHQyBnYXJiYWdlLiAgUmVpbnN0YXRlZCB0aGUgUHl0aG9uIDMuMQotICBhcHByb2FjaCBvZiB1c2luZyB3ZWFrcmVmIHByb3hpZXMgc28gdGhhdCByZWZlcmVuY2UgY3ljbGVzIG5ldmVyIGdldCBjcmVhdGVkCi0gIGluIHRoZSBmaXJzdCBwbGFjZS4KLQotLSBJc3N1ZSAjOTU3OSwgIzk1ODA6IEZpeCBvcy5jb25mc3RyKCkgZm9yIHZhbHVlIGxvbmdlciB0aGFuIDI1NSBieXRlcyBhbmQKLSAgZW5jb2RlIHRoZSB2YWx1ZSB3aXRoIGZpbGVzeXN0ZW0gZW5jb2RpbmcgYW5kIHN1cnJvZ2F0ZWVzY2FwZSAoaW5zdGVhZCBvZgotICB1dGYtOCBpbiBzdHJpY3QgbW9kZSkgLiBQYXRjaCB3cml0dGVuIGJ5IERhdmlkIFdhdHNvbi4KLQotLSBJc3N1ZSAjOTYzMjogUmVtb3ZlIHN5cy5zZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSBmdW5jdGlvbjogdXNlIFBZVEhPTkZTRU5DT0RJTkcKLSAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gc2V0IHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIGF0IFB5dGhvbiBzdGFydHVwLgotICBzeXMuc2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgY3JlYXRlcyBpbmNvbnNpc3RlbmNpZXMgYmVjYXVzZSBpdCBpcyB1bmFibGUgdG8KLSAgcmVlbmNvZGUgYWxsIGZpbGVuYW1lcyBpbiBhbGwgb2JqZWN0cy4KLQotLSBJc3N1ZSAjOTQxMDogVmFyaW91cyBvcHRpbWl6YXRpb25zIHRvIHRoZSBwaWNrbGUgbW9kdWxlLCBsZWFkaW5nIHRvIHNwZWVkdXBzCi0gIHVwIHRvIDR4IChkZXBlbmRpbmcgb24gdGhlIGJlbmNobWFyaykuICBNb3N0bHkgcG9ydGVkIGZyb20gVW5sYWRlbiBTd2FsbG93OwotICBpbml0aWFsIHBhdGNoIGJ5IEFsZXhhbmRyZSBWYXNzYWxvdHRpLgotCi0tIFRoZSBwcHJpbnQgbW9kdWxlIG5vdyBzdXBwb3J0cyBwcmludGluZyBPcmRlcmVkRGljdHMgaW4gdGhlaXIgZ2l2ZW4gb3JkZXIKLSAgKGZvcm1lcmx5LCBpdCB3b3VsZCBzb3J0IHRoZSBrZXlzKS4KLQotLSBMb2dnaW5nOiBBZGRlZCBRdWV1ZUhhbmRsZXIgY2xhc3MgdG8gZmFjaWxpdGF0ZSBsb2dnaW5nIHVzYWdlIHdpdGgKLSAgbXVsdGlwcm9jZXNzaW5nLgotCi0tIElzc3VlICM5NzA3OiBSZXdyaXR0ZW4gcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9mIHRocmVhZGluZy5sb2NhbCB3aGljaCBpcwotICBmcmllbmRsaWVyIHRvd2FyZHMgcmVmZXJlbmNlIGN5Y2xlcy4gIFRoaXMgY2hhbmdlIGlzIG5vdCBub3JtYWxseSB2aXNpYmxlCi0gIHNpbmNlIGFuIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9uIChfdGhyZWFkLl9sb2NhbCkgaXMgdXNlZCBpbnN0ZWFkLgotCi0tIElzc3VlICM2Mzk0OiBvcy5nZXRwcGlkKCkgaXMgbm93IHN1cHBvcnRlZCBvbiBXaW5kb3dzLiAgTm90ZSB0aGF0IGl0IHdpbGwKLSAgc3RpbGwgcmV0dXJuIHRoZSBpZCBvZiB0aGUgcGFyZW50IHByb2Nlc3MgYWZ0ZXIgaXQgaGFzIGV4aXRlZC4gIFRoaXMgcHJvY2VzcwotICBpZCBtYXkgZXZlbiBoYXZlIGJlZW4gcmV1c2VkIGJ5IGFub3RoZXIgdW5yZWxhdGVkIHByb2Nlc3MuCi0KLS0gSXNzdWUgIzk3OTI6IEluIGNhc2Ugb2YgY29ubmVjdGlvbiBmYWlsdXJlLCBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKSB3b3VsZAotICBzd2FsbG93IHRoZSBleGNlcHRpb24gYW5kIHJhaXNlIGEgbmV3IG9uZSwgbWFraW5nIGl0IGltcG9zc2libGUgdG8gZmV0Y2ggdGhlCi0gIG9yaWdpbmFsIGVycm5vLCBvciB0byBmaWx0ZXIgdGltZW91dCBlcnJvcnMuICBOb3cgdGhlIG9yaWdpbmFsIGVycm9yIGlzCi0gIHJlLXJhaXNlZC4KLQotLSBJc3N1ZSAjOTc1ODogV2hlbiBmY250bC5pb2N0bCgpIHdhcyBjYWxsZWQgd2l0aCBtdXRhYmxlX2ZsYWcgc2V0IHRvIFRydWUsIGFuZAotICB0aGUgcGFzc2VkIGJ1ZmZlciB3YXMgZXhhY3RseSAxMDI0IGJ5dGVzIGxvbmcsIHRoZSBidWZmZXIgd291bGRuJ3QgYmUgdXBkYXRlZAotICBiYWNrIGFmdGVyIHRoZSBzeXN0ZW0gY2FsbC4gIE9yaWdpbmFsIHBhdGNoIGJ5IEJyaWFuIEJyYXppbC4KLQotLSBVcGRhdGVzIHRvIHRoZSByYW5kb20gbW9kdWxlOgotCi0gICogRG9jdW1lbnQgd2hpY2ggcGFydHMgb2YgdGhlIG1vZHVsZSBhcmUgZ3VhcmFudGVlZCB0byBzdGF5IHRoZSBzYW1lIGFjcm9zcwotICAgIHZlcnNpb25zIGFuZCB3aGljaCBwYXJ0cyBhcmUgc3ViamVjdCB0byBjaGFuZ2UuCi0KLSAgKiBVcGRhdGUgdGhlIHNlZWQoKSBtZXRob2QgdG8gdXNlIGFsbCBvZiB0aGUgYml0cyBpbiBhIHN0cmluZyBpbnN0ZWFkIG9mIGp1c3QKLSAgICB0aGUgaGFzaCB2YWx1ZS4gIFRoaXMgbWFrZXMgYmV0dGVyIHVzZSBvZiB0aGUgc2VlZCB2YWx1ZSBhbmQgYXNzdXJlcyB0aGUKLSAgICBzZWVkaW5nIGlzIHBsYXRmb3JtIGluZGVwZW5kZW50LiAgSXNzdWUgIzc4ODkuCi0KLSAgKiBJbXByb3ZlZCB0aGUgcmFuZG9tKCktLT5pbnRlZ2VyIGFsZ29yaXRobSB1c2VkIGluIGNob2ljZSgpLCBzaHVmZmxlKCksCi0gICAgc2FtcGxlKCksIHJhbmRyYW5nZSgpLCBhbmQgcmFuZGludCgpLiAgRm9ybWVybHksIGl0IHVzZWQgaW50KG4qcmFuZG9tKCkpCi0gICAgd2hpY2ggaGFzIGEgc2xpZ2h0IGJpYXMgd2hlbmV2ZXIgbiBpcyBub3QgYSBwb3dlciBvZiB0d28uICBJc3N1ZSAjOTAyNS4KLQotICAqIEltcHJvdmVkIGRvY3VtZW50YXRpb24gb2YgYXJndW1lbnRzIHRvIHJhbmRyYW5nZSgpLiAgSXNzdWUgIzkzNzkuCi0KLS0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3Qgbm93IHN1cHBvcnRzIGEgbmV3IG1ldGhvZCBmb3IgcmVwb3NpdGlvbmluZyBrZXlzIHRvCi0gIGVpdGhlciBlbmQuCi0KLS0gSXNzdWUgIzk3NTQ6IFNpbWlsYXJseSB0byBhc3NlcnRSYWlzZXMgYW5kIGFzc2VydFJhaXNlc1JlZ2V4cCwgdW5pdHRlc3QgdGVzdAotICBjYXNlcyBub3cgYWxzbyBoYXZlIGFzc2VydFdhcm5zIGFuZCBhc3NlcnRXYXJuc1JlZ2V4cCBtZXRob2RzIHRvIGNoZWNrIHRoYXQgYQotICBnaXZlbiB3YXJuaW5nIHR5cGUgd2FzIHRyaWdnZXJlZCBieSB0aGUgY29kZSB1bmRlciB0ZXN0LgotCi0tIElzc3VlICM1NTA2OiBCeXRlc0lPIG9iamVjdHMgbm93IGhhdmUgYSBnZXRidWZmZXIoKSBtZXRob2QgZXhwb3J0aW5nIGEgdmlldyBvZgotICB0aGVpciBjb250ZW50cyB3aXRob3V0IGR1cGxpY2F0aW5nIHRoZW0uICBUaGUgdmlldyBpcyBib3RoIHJlYWRhYmxlIGFuZAotICB3cml0YWJsZS4KLQotLSBJc3N1ZSAjNzU2NjogSW1wbGVtZW50IG9zLnBhdGguc2FtZW9wZW5maWxlIGZvciBXaW5kb3dzLgotCi0tIElzc3VlICM5MjkzOiBJL08gc3RyZWFtcyBub3cgcmFpc2UgYGBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbmBgIHdoZW4gYW4KLSAgdW5zdXBwb3J0ZWQgb3BlcmF0aW9uIGlzIGF0dGVtcHRlZCAoZm9yIGV4YW1wbGUsIHdyaXRpbmcgdG8gYSBmaWxlIG9wZW4gb25seQotICBmb3IgcmVhZGluZykuCi0KLS0gaGFzaGxpYiBoYXMgdHdvIG5ldyBjb25zdGFudCBhdHRyaWJ1dGVzOiBhbGdvcml0aG1zX2d1YXJhbnRlZWQgYW5kCi0gIGFsZ29yaXRobXNfYXZhaWFibGUgdGhhdCByZXNwZWN0aXZlbHkgbGlzdCB0aGUgbmFtZXMgb2YgaGFzaCBhbGdvcml0aG1zCi0gIGd1YXJhbnRlZWQgdG8gZXhpc3QgaW4gYWxsIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMgYW5kIHRoZSBuYW1lcyBvZiBoYXNoCi0gIGFsZ29yaXRobXMgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IHByb2Nlc3MuCi0KLS0gQSBuZXcgcGFja2FnZSBgYGNvbmN1cnJlbnQuZnV0dXJlc2BgIGFzIGRlZmluZWQgYnkgUEVQIDMxNDguCi0KLUMtQVBJCi0tLS0tLQotCi0tIEFkZCBQeUVycl9TeW50YXhMb2NhdGlvbkV4LCB3aGljaCBzdXBwb3J0cyBwYXNzaW5nIGEgY29sdW1uIG9mZnNldC4KLQotLSBJc3N1ZSAjOTgzNDogRG9uJ3Qgc2VnZmF1bHQgaW4gUHlTZXF1ZW5jZV9HZXRTbGljZSwgUHlTZXF1ZW5jZV9TZXRTbGljZSwgb3IKLSAgUHlTZXF1ZW5jZV9EZWxTbGljZSB3aGVuIHRoZSBvYmplY3QgZG9lc24ndCBoYXZlIGFueSBtYXBwaW5nIG9wZXJhdGlvbnMKLSAgZGVmaW5lZC4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzkxODg6IFRoZSBnZGIgZXh0ZW5zaW9uIG5vdyBoYW5kbGVzIGNvcnJlY3RseSBuYXJyb3cgKFVDUzIpIGFzIHdlbGwgYXMKLSAgd2lkZSAoVUNTNCkgdW5pY29kZSBidWlsZHMgZm9yIGJvdGggdGhlIGhvc3QgaW50ZXJwcmV0ZXIgKGVtYmVkZGVkIGluc2lkZSBnZGIpCi0gIGFuZCB0aGUgaW50ZXJwcmV0ZXIgdW5kZXIgdGVzdC4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzkzMDg6IEFkZGVkIHRlc3RzIGZvciBpbXBvcnRpbmcgZW5jb2RlZCBtb2R1bGVzIHRoYXQgZG8gbm90Ci0gIGRlcGVuZCBvbiBzcGVjaWZpYyBzdGRsaWIgbW9kdWxlcyBiZWluZyBlbmNvZGVkIGluIGEgY2VydGFpbiB3YXkuCi0KLS0gSXNzdWUgIzEwNTE6IEFkZCBhIHNjcmlwdCAoTGliL3Rlc3QvbWFrZV9zc2xfY2VydHMucHkpIHRvIGdlbmVyYXRlIHRoZSBjdXN0b20KLSAgY2VydGlmaWNhdGUgYW5kIHByaXZhdGUga2V5IGZpbGVzIHVzZWQgYnkgU1NMLXJlbGF0ZWQgY2VydHMuCi0KLS0gSXNzdWUgIzk5Nzg6IFdhaXQgdW50aWwgc3VicHJvY2VzcyBjb21wbGV0ZXMgaW5pdGlhbGl6YXRpb24uIChXaW4zMktpbGxUZXN0cwotICBpbiB0ZXN0X29zKQotCi0tIElzc3VlICM3MTEwOiByZWdydGVzdCBub3cgc2VuZHMgdGVzdCBmYWlsdXJlIHJlcG9ydHMgYW5kIHNpbmdsZS1mYWlsdXJlCi0gIHRyYWNlYmFja3MgdG8gc3RkZXJyIHJhdGhlciB0aGFuIHN0ZG91dC4KLQotLSBJc3N1ZSAjOTYyODogZml4IHJ1bnRlc3RzLnNoIC14IG9wdGlvbiBzbyBtb3JlIHRoYW4gb25lIHRlc3QgY2FuIGJlIGV4Y2x1ZGVkLgotCi0tIElzc3VlICM5ODk5OiBGaXggdGVzdF90a2ludGVyLnRlc3RfZm9udCBvbiB2YXJpb3VzIHBsYXRmb3Jtcy4gIFBhdGNoIGJ5IE5lZAotICBEZWlseS4KLQotLSBJc3N1ZSAjOTg5NDogRG8gbm90IGhhcmRjb2RlIEVOT0VOVCBpbiB0ZXN0X3N1YnByb2Nlc3MuCi0KLS0gSXNzdWUgIzkzMTU6IEFkZGVkIHRlc3RzIGZvciB0aGUgdHJhY2UgbW9kdWxlLiAgUGF0Y2ggYnkgRWxpIEJlbmRlcnNreS4KLQotLSBJc3N1ZSAjOTMyMzogTWFrZSB0ZXN0LnJlZ3J0ZXN0Ll9fZmlsZV9fIGFic29sdXRlLCB0aGlzIHdhcyBub3QgYWx3YXlzIHRoZQotICBjYXNlIHdoZW4gcnVubmluZyBwcm9maWxlIG9yIHRyYWNlLCBmb3IgZXhhbXBsZS4KLQotLSBJc3N1ZSAjOTU2ODogRml4IHRlc3RfdXJsbGliMl9sb2NhbG5ldCBvbiBPUyBYIDEwLjMuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxMDA2MjogQWxsb3cgYnVpbGRpbmcgb24gcGxhdGZvcm1zIHdoaWNoIGRvIG5vdCBoYXZlIHNlbV90aW1lZHdhaXQuCi0KLS0gSXNzdWUgIzEwMDU0OiBTb21lIHBsYXRmb3JtcyBwcm92aWRlIHVpbnRwdHJfdCBpbiBpbnR0eXBlcy5oLiAgUGF0Y2ggYnkgQWtpcmEKLSAgS2l0YWRhLgotCi0tIElzc3VlICMxMDA1NTogTWFrZSBqc29uIEM4OS1jb21wbGlhbnQgaW4gVUNTNCBtb2RlLgotCi0tIElzc3VlICM5NTUyOiBBdm9pZCB1bm5lY2Vzc2FyeSByZWJ1aWxkIG9mIE9wZW5TU0wuIChXaW5kb3dzKQotCi0tIElzc3VlICMxNjMzODYzOiBEb24ndCBpZ25vcmUgJENDIHVuZGVyIEFJWC4KLQotLSBJc3N1ZSAjOTgxMDogQ29tcGlsZSBiemlwMiBzb3VyY2UgZmlsZXMgaW4gUHl0aG9uJ3MgcHJvamVjdCBmaWxlIGRpcmVjdGx5LiBJdAotICB1c2VkIHRvIGJlIGJ1aWx0IHdpdGggYnppcDIncyBtYWtlZmlsZS4KLQotLSBJc3N1ZSAjOTg0ODogU3RvcHBpbmcgdHJ5aW5nIHRvIGJ1aWxkIF93ZWFrcmVmIGluIHNldHVwLnB5IGFzIGl0IGlzIGEgYnVpbHQtaW4KLSAgbW9kdWxlLgotCi0tIElzc3VlICM5ODA2OiBweXRob24tY29uZmlnIG5vdyBoYXMgYW4gYGAtLWV4dGVuc2lvbi1zdWZmaXhgYCBvcHRpb24gdGhhdAotICBvdXRwdXRzIHRoZSBzdWZmaXggZm9yIGR5bmFtaWMgbGlicmFyaWVzIGluY2x1ZGluZyB0aGUgQUJJIHZlcnNpb24gbmFtZQotICBkZWZpbmVkIGJ5IFBFUCAzMTQ5LgotCi0tIElzc3VlICM5NDEzNDY6IEltcHJvdmUgdGhlIGJ1aWxkIHByb2Nlc3MgdW5kZXIgQUlYIGFuZCBhbGxvdyBQeXRob24gdG8gYmUKLSAgYnVpbHQgYXMgYSBzaGFyZWQgbGlicmFyeS4gIFBhdGNoIGJ5IFPDqWJhc3RpZW4gU2FibMOpLgotCi0tIElzc3VlICM0MDI2OiBNYWtlIHRoZSBmY250bCBleHRlbnNpb24gYnVpbGQgdW5kZXIgQUlYLiAgUGF0Y2ggYnkgU8OpYmFzdGllbgotICBTYWJsw6kuCi0KLS0gSXNzdWUgIzk3MDE6IFRoZSBNYWNPU1ggaW5zdGFsbGVyIGNhbiBwYXRjaCB0aGUgc2hlbGwgcHJvZmlsZSB0byBlbnN1cmUgdGhhdAotICB0aGUgImJpbiIgZGlyZWN0b3J5IGluc2lkZSB0aGUgZnJhbWV3b3JrIGlzIG9uIHRoZSBzaGVsbCdzIHNlYXJjaCBwYXRoLiBUaGlzCi0gIGZlYXR1cmUgbm93IGFsc28gc3VwcG9ydHMgdGhlIFpTSCBzaGVsbC4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgQWxwaGEgMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAwNS1TZXAtMjAxMCoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzkyMjU6IFJlbW92ZSB0aGUgUk9UX0ZPVVIgYW5kIERVUF9UT1BYIG9wY29kZSwgdGhlIGxhdHRlciByZXBsYWNlZCBieQotICB0aGUgbmV3IChhbmQgc2ltcGxlcikgRFVQX1RPUF9UV08uICBQZXJmb3JtYW5jZSBpc24ndCBjaGFuZ2VkLCBidXQgb3VyCi0gIGJ5dGVjb2RlIGlzIGEgYml0IHNpbXBsaWZpZWQuICBQYXRjaCBieSBEZW11ciBSdW1lZC4KLQotLSBJc3N1ZSAjOTc2NjogUmVuYW1lIHBvb3JseSBuYW1lZCB2YXJpYWJsZXMgZXhwb3NlZCBieSBfd2FybmluZ3MgdG8gcHJldmVudAotICBjb25mdXNpb24gd2l0aCB0aGUgcHJvcGVyIHZhcmlhYmxlcyBuYW1lcyBmcm9tICd3YXJuaW5ncycgaXRzZWxmLgotCi0tIElzc3VlICM5MjEyOiBkaWN0X2tleXMgYW5kIGRpY3RfaXRlbXMgbm93IHByb3ZpZGUgdGhlIGlzZGlzam9pbnQoKSBtZXRob2QsIHRvCi0gIGNvbmZvcm0gdG8gdGhlIFNldCBBQkMuICBQYXRjaCBieSBEYW5pZWwgVXJiYW4uCi0KLS0gSXNzdWUgIzk3Mzc6IEZpeCBhIGNyYXNoIHdoZW4gdHJ5aW5nIHRvIGRlbGV0ZSBhIHNsaWNlIG9yIGFuIGl0ZW0gZnJvbSBhCi0gIG1lbW9yeXZpZXcgb2JqZWN0LgotCi0tIElzc3VlICM5NTQ5OiBzeXMuc2V0ZGVmYXVsdGVuY29kaW5nKCkgYW5kIFB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2RpbmcoKSBhcmUKLSAgbm93IHJlbW92ZWQsIHNpbmNlIHRoZWlyIGVmZmVjdCB3YXMgaW5leGlzdGVudCBpbiAzLnggKHRoZSBkZWZhdWx0IGVuY29kaW5nIGlzCi0gIGhhcmRjb2RlZCB0byB1dGYtOCBhbmQgY2Fubm90IGJlIGNoYW5nZWQpLgotCi0tIElzc3VlICM3NDE1OiBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QoKSBub3cgdXNlcyB0aGUgbmV3IGJ1ZmZlciBBUEkKLSAgcHJvcGVybHkuICBQYXRjaCBieSBTdGVmYW4gQmVobmVsLgotCi0tIElzc3VlICM1NTUzOiBUaGUgUHlfTE9DQUxfSU5MSU5FIG1hY3JvIG5vdyByZXN1bHRzIGluIGlubGluaW5nIG9uIG1vc3QKLSAgcGxhdGZvcm1zLiAgUHJldmlvdXNseSwgaXQgaW5saW5lZCBvbmx5IHdoZW4gdXNpbmcgTWljcm9zb2Z0IFZpc3VhbCBDLgotCi0tIElzc3VlICM5NzEyOiBGaXggdG9rZW5pemUgb24gaWRlbnRpZmllcnMgdGhhdCBzdGFydCB3aXRoIG5vbi1hc2NpaSBuYW1lcy4KLQotLSBJc3N1ZSAjOTY4ODogX19iYXNpY3NpemVfXyBhbmQgX19pdGVtc2l6ZV9fIG11c3QgYmUgYWNjZXNzZWQgYXMgUHlfc3NpemVfdC4KLQotLSBJc3N1ZSAjOTY4NDogQWRkZWQgYSBkZWZpbml0aW9uIGZvciBTSVpFT0ZfV0NIQVJfVCB0byBQQy9weWNvbmZpZy5oLCB0byBtYXRjaAotICB0aGUgcHljb25maWcuaCBnZW5lcmF0ZWQgYnkgY29uZmlndXJlIG9uIG90aGVyIHN5c3RlbXMuCi0KLS0gSXNzdWUgIzk2NjY6IE9ubHkgY2F0Y2ggQXR0cmlidXRlRXJyb3IgaW4gaGFzYXR0cigpLiBBbGwgb3RoZXIgZXhjZXB0aW9ucyB0aGF0Ci0gIG9jY3VyIGR1cmluZyBhdHRyaWJ1dGUgbG9va3VwIGFyZSBub3cgcHJvcGFnYXRlZCB0byB0aGUgY2FsbGVyLgotCi0tIElzc3VlICM4NjIyOiBBZGQgUFlUSE9ORlNFTkNPRElORyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBvdmVycmlkZSB0aGUKLSAgZmlsZXN5c3RlbSBlbmNvZGluZy4KLQotLSBJc3N1ZSAjNTEyNzogVGhlIEMgZnVuY3Rpb25zIHRoYXQgYWNjZXNzIHRoZSBVbmljb2RlIERhdGFiYXNlIG5vdyBhY2NlcHQgYW5kCi0gIHJldHVybiBjaGFyYWN0ZXJzIGZyb20gdGhlIGZ1bGwgVW5pY29kZSByYW5nZSwgZXZlbiBvbiBuYXJyb3cgdW5pY29kZSBidWlsZHMKLSAgKFB5X1VOSUNPREVfVE9MT1dFUiwgUHlfVU5JQ09ERV9JU0RFQ0lNQUwsIGFuZCBvdGhlcnMpLiAgQSB2aXNpYmxlIGRpZmZlcmVuY2UKLSAgaW4gUHl0aG9uIGlzIHRoYXQgdW5pY29kZWRhdGEubnVtZXJpYygpIG5vdyByZXR1cm5zIHRoZSBjb3JyZWN0IHZhbHVlIGZvcgotICBsYXJnZSBjb2RlIHBvaW50cywgYW5kIHJlcHIoKSBtYXkgY29uc2lkZXIgbW9yZSBjaGFyYWN0ZXJzIGFzIHByaW50YWJsZS4KLQotLSBJc3N1ZSAjOTQyNTogQ3JlYXRlIFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0KCkgZnVuY3Rpb24gdG8gZ2V0IHRoZSBmaWxlbmFtZQotICBhcyBhIHVuaWNvZGUgb2JqZWN0LCBpbnN0ZWFkIG9mIGEgYnl0ZSBzdHJpbmcuIEZ1bmN0aW9uIG5lZWRlZCB0byBzdXBwb3J0Ci0gIHVuZW5jb2RhYmxlIGZpbGVuYW1lcy4gRGVwcmVjYXRlIFB5TW9kdWxlX0dldEZpbGVuYW1lKCkgaW4gZmF2b3Igb24gdGhlIG5ldwotICBmdW5jdGlvbi4KLQotLSBJc3N1ZSAjODA2MzogQ2FsbCBfUHlHSUxTdGF0ZV9Jbml0KCkgZWFybGllciBpbiBQeV9Jbml0aWFsaXplRXgoKS4KLQotLSBJc3N1ZSAjOTYxMjogVGhlIHNldCBvYmplY3QgaXMgbm93IDY0LWJpdCBjbGVhbiB1bmRlciBXaW5kb3dzLgotCi0tIElzc3VlICM4MjAyOiBzeXMuYXJndlswXSBpcyBub3cgc2V0IHRvICctbScgaW5zdGVhZCBvZiAnLWMnIHdoZW4gc2VhcmNoaW5nIGZvcgotICB0aGUgbW9kdWxlIGZpbGUgdG8gYmUgZXhlY3V0ZWQgd2l0aCB0aGUgLW0gY29tbWFuZCBsaW5lIG9wdGlvbi4KLQotLSBJc3N1ZSAjOTU5OTogQ3JlYXRlIFB5U3lzX0Zvcm1hdFN0ZG91dCgpIGFuZCBQeVN5c19Gb3JtYXRTdGRlcnIoKSBmdW5jdGlvbnMgdG8KLSAgd3JpdGUgYSBtZXNzYWdlIGZvcm1hdHRlZCBieSBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKSB0byBzeXMuc3Rkb3V0IGFuZAotICBzeXMuc3RkZXJyLgotCi0tIElzc3VlICM5NTQyOiBDcmVhdGUgUHlVbmljb2RlX0ZTRGVjb2RlcigpIGZ1bmN0aW9uLCBhIFBhcnNlVHVwbGUgY29udmVydGVyOgotICBkZWNvZGUgYnl0ZXMgb2JqZWN0cyB0byB1bmljb2RlIHVzaW5nIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKCk7IHN0cgotICBvYmplY3RzIGFyZSBvdXRwdXQgYXMtaXMuCi0KLS0gSXNzdWUgIzkyMDM6IENvbXB1dGVkIGdvdG9zIGFyZSBub3cgZW5hYmxlZCBieSBkZWZhdWx0IG9uIHN1cHBvcnRlZCBjb21waWxlcnMKLSAgKHdoaWNoIGFyZSBkZXRlY3RlZCBieSB0aGUgY29uZmlndXJlIHNjcmlwdCkuICBUaGV5IGNhbiBzdGlsbCBiZSBkaXNhYmxlCi0gIHNlbGVjdGl2ZWx5IGJ5IHNwZWNpZnlpbmcgLS13aXRob3V0LWNvbXB1dGVkLWdvdG9zLgotCi0tIElzc3VlICM5NDI1OiBDcmVhdGUgUHlFcnJfV2FybkZvcm1hdCgpIGZ1bmN0aW9uLCBzaW1pbGFyIHRvIFB5RXJyX1dhcm5FeCgpIGJ1dAotICB1c2UgUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCkgdG8gZm9ybWF0IHRoZSB3YXJuaW5nIG1lc3NhZ2UuCi0KLS0gSXNzdWUgIzg1MzA6IFByZXZlbnQgc3RyaW5nbGliIGZhc3RzZWFyY2ggZnJvbSByZWFkaW5nIGJleW9uZCB0aGUgZnJvbnQgb2YgYW4KLSAgYXJyYXkuCi0KLS0gSXNzdWUgIzUzMTk6IFByaW50IGFuIGVycm9yIGlmIGZsdXNoaW5nIHN0ZG91dCBmYWlscyBhdCBpbnRlcnByZXRlciBzaHV0ZG93bi4KLQotLSBJc3N1ZSAjOTMzNzogVGhlIHN0cigpIG9mIGEgZmxvYXQgb3IgY29tcGxleCBudW1iZXIgaXMgbm93IGlkZW50aWNhbCB0byBpdHMKLSAgcmVwcigpLgotCi0tIElzc3VlICM5NDE2OiBGaXggc29tZSBpc3N1ZXMgd2l0aCBjb21wbGV4IGZvcm1hdHRpbmcgd2hlcmUgdGhlIG91dHB1dCB3aXRoIG5vCi0gIHR5cGUgc3BlY2lmaWVyIGZhaWxlZCB0byBtYXRjaCB0aGUgc3RyIG91dHB1dDoKLQotICAgIC0gZm9ybWF0KGNvbXBsZXgoLTAuMCwgMi4wKSwgJy0nKSBvbWl0dGVkIHRoZSByZWFsIHBhcnQgZnJvbSB0aGUgb3V0cHV0LAotICAgIC0gZm9ybWF0KGNvbXBsZXgoMC4wLCAyLjApLCAnLScpIGluY2x1ZGVkIGEgc2lnbiBhbmQgcGFyZW50aGVzZXMuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM4MDEzOiB0aW1lLmFzY3RpbWUgYW5kIHRpbWUuY3RpbWUgbm8gbG9uZ2VyIGNhbGwgc3lzdGVtCi0gIGFzY3RpbWUgYW5kIGN0aW1lIGZ1bmN0aW9ucy4gIFRoZSB5ZWFyIHJhbmdlIGZvciB0aW1lLmFzY3RpbWUgaXMgbm93Ci0gIDE5MDAgdGhyb3VnaCBtYXhpbnQuICBUaGUgcmFuZ2UgZm9yIHRpbWUuY3RpbWUgaXMgdGhlIHNhbWUgYXMgZm9yCi0gIHRpbWUubG9jYWx0aW1lLiAgVGhlIHN0cmluZyBwcm9kdWNlZCBieSB0aGVzZSBmdW5jdGlvbnMgaXMgbG9uZ2VyCi0gIHRoYW4gMjQgY2hhcmFjdGVycyB3aGVuIHllYXIgaXMgZ3JlYXRlciB0aGFuIDk5OTkuCi0KLS0gSXNzdWUgIzY2MDg6IHRpbWUuYXNjdGltZSBpcyBub3cgY2hlY2tpbmcgc3RydWN0IHRtIGZpZWxkcyBpdHMgaW5wdXQKLSAgYmVmb3JlIHBhc3NpbmcgaXQgdG8gdGhlIHN5c3RlbSBhc2N0aW1lLiAgUGF0Y2ggYnkgTXVuU2ljIEplb25nLgotCi0tIElzc3VlICM4NzM0OiBBdm9pZCBjcmFzaCBpbiBtc3ZjcnQuZ2V0X29zZmhhbmRsZSgpIHdoZW4gYW4gaW52YWxpZCBmaWxlCi0gIGRlc2NyaXB0b3IgaXMgcHJvdmlkZWQuICBQYXRjaCBieSBQYXNjYWwgQ2hhbWJvbi4KLQotLSBJc3N1ZSAjNzczNjogUmVsZWFzZSB0aGUgR0lMIGFyb3VuZCBjYWxscyB0byBvcGVuZGlyKCkgYW5kIGNsb3NlZGlyKCkgaW4gdGhlCi0gIHBvc2l4IG1vZHVsZS4gIFBhdGNoIGJ5IE1hcmNpbiBCYWNocnkuCi0KLS0gSXNzdWUgIzQ4MzU6IG1ha2UgUHlMb25nX0Zyb21Tb2NrZXRfdCgpIGFuZCBQeUxvbmdfQXNTb2NrZXRfdCgpIHByaXZhdGUgdG8gdGhlCi0gIHNvY2tldCBtb2R1bGUsIGFuZCBmaXggdGhlIHdpZHRoIG9mIHNvY2tldCBkZXNjcmlwdG9ycyB0byBiZSBjb3JyZWN0bHkKLSAgZGV0ZWN0ZWQgdW5kZXIgNjQtYml0IFdpbmRvd3MuCi0KLS0gSXNzdWUgIzEwMjcyMDY6IFN1cHBvcnQgSUROQSBpbiBnZXRob3N0YnluYW1lLCBnZXRob3N0YnluYW1lX2V4LCBnZXRhZGRyaW5mbwotICBhbmQgZ2V0aG9zdGJ5YWRkci4gIGdldG5hbWVpbmZvIGlzIG5vdyByZXN0cmljdGVkIHRvIG51bWVyaWMgYWRkcmVzc2VzIGFzCi0gIGlucHV0LgotCi0tIElzc3VlICM5MjE0OiBTZXQgb3BlcmF0aW9ucyBvbiBhIEtleXNWaWV3IG9yIEl0ZW1zVmlldyBpbiBjb2xsZWN0aW9ucyBub3cKLSAgY29ycmVjdGx5IHJldHVybiBhIHNldC4gIFBhdGNoIGJ5IEVsaSBCZW5kZXJza3kuCi0KLS0gSXNzdWUgIzU3Mzc6IEFkZCBTb2xhcmlzLXNwZWNpZmljIG1uZW1vbmljcyBpbiB0aGUgZXJybm8gbW9kdWxlLiAgUGF0Y2ggYnkKLSAgTWF0dGhldyBBaHJlbnMuCi0KLS0gUmVzdG9yZSBHSUwgaW4gbmlzX2NhdCBpbiBjYXNlIG9mIGVycm9yLiBEZWNvZGUgTklTIGRhdGEgdG8gZnMgZW5jb2RpbmcsIHVzaW5nCi0gIHRoZSBzdXJyb2dhdGUgZXJyb3IgaGFuZGxlci4KLQotLSBJc3N1ZSAjNjY1NzYxOiBgYGZ1bmN0b29scy5yZWR1Y2UoKWBgIHdpbGwgbm8gbG9uZ2VyIG1hc2sgZXhjZXB0aW9ucyBvdGhlcgotICB0aGFuIGBgVHlwZUVycm9yYGAgcmFpc2VkIGJ5IHRoZSBpdGVyYXRvciBhcmd1bWVudC4KLQotLSBJc3N1ZSAjOTU3MDogVXNlIFBFUCAzODMgZGVjb2RpbmcgaW4gb3MubWtub2QgYW5kIG9zLm1rZmlmby4KLQotLSBJc3N1ZSAjNjkxNTogVW5kZXIgV2luZG93cywgb3MubGlzdGRpcigpIGRpZG4ndCByZWxlYXNlIHRoZSBHbG9iYWwgSW50ZXJwcmV0ZXIKLSAgTG9jayBhcm91bmQgYWxsIHN5c3RlbSBjYWxscy4gIE9yaWdpbmFsIHBhdGNoIGJ5IFJ5YW4gS2VsbHkuCi0KLS0gSXNzdWUgIzg1MjQ6IEFkZCBhIGRldGFjaCgpIG1ldGhvZCB0byBzb2NrZXQgb2JqZWN0cywgc28gYXMgdG8gcHV0IHRoZSBzb2NrZXQKLSAgaW50byB0aGUgY2xvc2VkIHN0YXRlIHdpdGhvdXQgY2xvc2luZyB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IuCi0KLS0gSXNzdWUgIzQ3Nzg2MzogRW1pdCBhIFJlc291cmNlV2FybmluZyBhdCBzaHV0ZG93biBpZiBnYy5nYXJiYWdlIGlzIG5vdCBlbXB0eS4KLQotLSBJc3N1ZSAjNjg2OTogRml4IGEgcmVmY291bnQgcHJvYmxlbSBpbiB0aGUgX2N0eXBlcyBleHRlbnNpb24uCi0KLS0gSXNzdWUgIzU1MDQ6IGN0eXBlcyBzaG91bGQgbm93IHdvcmsgd2l0aCBzeXN0ZW1zIHdoZXJlIG1tYXAgY2FuJ3QgYmUKLSAgUFJPVF9XUklURSBhbmQgUFJPVF9FWEVDLgotCi0tIElzc3VlICM5NTA3OiBOYW1lZCB0dXBsZSByZXByIHdpbGwgbm93IGF1dG9tYXRpY2FsbHkgZGlzcGxheSB0aGUgcmlnaHQgbmFtZSBpbgotICBhIHR1cGxlIHN1YmNsYXNzLgotCi0tIElzc3VlICM5MzI0OiBBZGQgcGFyYW1ldGVyIHZhbGlkYXRpb24gdG8gc2lnbmFsLnNpZ25hbCBvbiBXaW5kb3dzIGluIG9yZGVyIHRvCi0gIHByZXZlbnQgY3Jhc2hlcy4KLQotLSBJc3N1ZSAjOTUyNjogUmVtb3ZlIHNvbWUgb3V0ZGF0ZWQgKGludCkgY2FzdHMgdGhhdCB3ZXJlIHByZXZlbnRpbmcgdGhlIGFycmF5Ci0gIG1vZHVsZSBmcm9tIHdvcmtpbmcgY29ycmVjdGx5IHdpdGggYXJyYXlzIG9mIG1vcmUgdGhhbiAyKiozMSBlbGVtZW50cy4KLQotLSBGaXggbWVtb3J5IGxlYWsgaW4gc3NsLl9zc2wuX3Rlc3RfZGVjb2RlX2NlcnQuCi0KLS0gSXNzdWUgIzgwNjU6IEZpeCBtZW1vcnkgbGVhayBpbiByZWFkbGluZSBtb2R1bGUgKGZyb20gZmFpbHVyZSB0byBmcmVlIHRoZQotICByZXN1bHQgb2YgaGlzdG9yeV9nZXRfaGlzdG9yeV9zdGF0ZSgpKS4KLQotLSBJc3N1ZSAjOTQ1MDogRml4IG1lbW9yeSBsZWFrIGluIHJlYWRsaW5lLnJlcGxhY2VfaGlzdG9yeV9pdGVtIGFuZAotICByZWFkbGluZS5yZW1vdmVfaGlzdG9yeV9pdGVtIGZvciByZWFkbGluZSB2ZXJzaW9uID49IDUuMC4KLQotLSBJc3N1ZSAjODEwNTogVmFsaWRhdGUgZmlsZSBkZXNjcmlwdG9yIHBhc3NlZCB0byBtbWFwLm1tYXAgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjODA0NjogQWRkIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCBzdXBwb3J0IGFuZCAuY2xvc2VkIHByb3BlcnR5IHRvIG1tYXAKLSAgb2JqZWN0cy4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICM3NDUxOiBJbXByb3ZlIGRlY29kaW5nIHBlcmZvcm1hbmNlIG9mIEpTT04gb2JqZWN0cywgYW5kIHJlZHVjZSB0aGUKLSAgbWVtb3J5IGNvbnN1bXB0aW9uIG9mIHNhaWQgZGVjb2RlZCBvYmplY3RzIHdoZW4gdGhleSB1c2UgdGhlIHNhbWUgc3RyaW5ncyBhcwotICBrZXlzLgotCi0tIElzc3VlICMxMTAwNTYyOiBGaXggZGVlcC1jb3B5aW5nIG9mIG9iamVjdHMgZGVyaXZlZCBmcm9tIHRoZSBsaXN0IGFuZCBkaWN0Ci0gIHR5cGVzLiAgUGF0Y2ggYnkgTWljaGVsZSBPcnLDuSBhbmQgQmrDtnJuIExpbmRxdmlzdC4KLQotLSBJc3N1ZSAjOTc1MzogRml4ZWQgc29ja2V0LmR1cCwgd2hpY2ggZGlkIG5vdCBhbHdheXMgd29yayBjb3JyZWN0bHkgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjOTQyMTogTWFkZSB0aGUgZ2V0PHR5cGU+IG1ldGhvZHMgY29uc2lzdGVudGx5IGFjY2VwdCB0aGUgdmFycyBhbmQKLSAgZGVmYXVsdCBhcmd1bWVudHMgb24gYWxsIHBhcnNlciBjbGFzc2VzLgotCi0tIElzc3VlICM3MDA1OiBGaXhlZCBvdXRwdXQgb2YgTm9uZSB2YWx1ZXMgZm9yIFJhd0NvbmZpZ1BhcnNlci53cml0ZSBhbmQKLSAgQ29uZmlnUGFyc2VyLndyaXRlLgotCi0tIElzc3VlICM4OTkwOiBhcnJheS5mcm9tc3RyaW5nKCkgYW5kIGFycmF5LnRvc3RyaW5nKCkgZ2V0IHJlbmFtZWQgdG8KLSAgZnJvbWJ5dGVzKCkgYW5kIHRvYnl0ZXMoKSwgcmVzcGVjdGl2ZWx5LCB0byBhdm9pZCBjb25mdXNpb24uICBGdXJ0aGVybW9yZSwKLSAgYXJyYXkuZnJvbWJ5dGVzKCksIGFycmF5LmV4dGVuZCgpIGFzIHdlbGwgYXMgdGhlIGFycmF5LmFycmF5KCkgY29uc3RydWN0b3Igbm93Ci0gIGFjY2VwdCBieXRlYXJyYXkgb2JqZWN0cy4gIFBhdGNoIGJ5IFRob21hcyBKb2xsYW5zLgotCi0tIElzc3VlICM4MDgxNjQ6IEZpeGVkIHNvY2tldC5jbG9zZSB0byBhdm9pZCByZWZlcmVuY2VzIHRvIGdsb2JhbHMsIHRvIGF2b2lkCi0gIGlzc3VlcyB3aGVuIHNvY2tldC5jbG9zZSBpcyBjYWxsZWQgZnJvbSBhIF9fZGVsX18gbWV0aG9kLgotCi0tIElzc3VlICM5NzA2OiBzc2wgbW9kdWxlIHByb3ZpZGVzIGEgYmV0dGVyIGVycm9yIGhhbmRsaW5nIGluIHZhcmlvdXMKLSAgY2lyY3Vtc3RhbmNlcy4KLQotLSBJc3N1ZSAjMTg2ODogRWxpbWluYXRlIHN1YnRsZSB0aW1pbmcgaXNzdWVzIGluIHRocmVhZC1sb2NhbCBvYmplY3RzIGJ5IGdldHRpbmcKLSAgcmlkIG9mIHRoZSBjYWNoZWQgY29weSBvZiB0aHJlYWQtbG9jYWwgYXR0cmlidXRlIGRpY3Rpb25hcnkuCi0KLS0gSXNzdWUgIzE1MTI3OTE6IEluIHNldGZyYW1lcmF0ZSgpIGluIHRoZSB3YXZlIG1vZHVsZSwgbm9uLWludGVncmFsIGZyYW1lIHJhdGVzCi0gIGFyZSByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IGludGVnZXIuCi0KLS0gSXNzdWUgIzg3OTc6IHVybGxpYjIgZG9lcyBhIHJldHJ5IGZvciBCYXNpYyBBdXRoZW50aWNhdGlvbiBmYWlsdXJlIGluc3RlYWQgb2YKLSAgZmFsbGluZyBpbnRvIHJlY3Vyc2lvbi4KLQotLSBJc3N1ZSAjMTE5NDIyMjogZW1haWwudXRpbHMucGFyc2VkYXRlIG5vdyByZXR1cm5zIFJGQzI4MjIgY29tcGxpYW50IGZvdXIKLSAgY2hhcmFjdGVyIHllYXJzIGV2ZW4gaWYgdGhlIG1lc3NhZ2UgY29udGFpbnMgUkZDODIyIHR3byBjaGFyYWN0ZXIgeWVhcnMuCi0KLS0gSXNzdWUgIzg3NTA6IEZpeGVkIE11dGFibGVTZXQncyBtZXRob2RzIHRvIGNvcnJlY3RseSBoYW5kbGUgcmVmbGV4aXZlCi0gIG9wZXJhdGlvbnMgb24gaXRzIHNlbGYsIG5hbWVseSB4IC09IHggYW5kIHggXj0geC4KLQotLSBJc3N1ZSAjOTEyOTogc210cGQucHkgaXMgdnVsbmVyYWJsZSB0byBEb1MgYXR0YWNrcyBkZXJpdmluZyBmcm9tIG1pc3NpbmcgZXJyb3IKLSAgaGFuZGxpbmcgd2hlbiBhY2NlcHRpbmcgYSBuZXcgY29ubmVjdGlvbi4KLQotLSBJc3N1ZSAjOTYwMTogZnRwbGliIG5vdyBwcm92aWRlcyBhIHdvcmthcm91bmQgZm9yIG5vbi1jb21wbGlhbnQKLSAgaW1wbGVtZW50YXRpb25zIHN1Y2ggYXMgSUlTIHNoaXBwZWQgd2l0aCBXaW5kb3dzIHNlcnZlciAyMDAzIHJldHVybmluZyBpbnZhbGlkCi0gIHJlc3BvbnNlIGNvZGVzIGZvciBNS0QgYW5kIFBXRCBjb21tYW5kcy4KLQotLSBJc3N1ZSAjNjU4NzQ5OiBhc3luY29yZSdzIGNvbm5lY3QoKSBtZXRob2Qgbm93IGNvcnJlY3RseSBpbnRlcnByZXRzIHdpbnNvY2sKLSAgZXJyb3JzLgotCi0tIElzc3VlICM5NTAxOiBGaXhlZCBsb2dnaW5nIHJlZ3Jlc3Npb25zIGluIGNsZWFudXAgY29kZS4KLQotLSBGaXggZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKCkgdG8gc2tpcCBtZXRob2RzIGluaGVyaXRlZCBmcm9tIG9iamVjdC4KLQotLSBJc3N1ZSAjOTU3MjogSW1wb3J0bGliIHNob3VsZCBub3QgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIGEgZGlyZWN0b3J5IGl0IHRob3VnaHQKLSAgaXQgbmVlZGVkIHRvIGNyZWF0ZSB3YXMgZG9uZSBjb25jdXJyZW50bHkgYnkgYW5vdGhlciBwcm9jZXNzLgotCi0tIElzc3VlICM5NjE3OiBTaWduYWxzIHJlY2VpdmVkIGR1cmluZyBhIGxvdy1sZXZlbCB3cml0ZSBvcGVyYXRpb24gYXJlbid0Ci0gIGlnbm9yZWQgYnkgdGhlIGJ1ZmZlcmVkIElPIGxheWVyIGFueW1vcmUuCi0KLS0gSXNzdWUgIzg0MzU5MDogTWFrZSAibWFjaW50b3NoIiBhbiBhbGlhcyB0byB0aGUgIm1hY19yb21hbiIgZW5jb2RpbmcuCi0KLS0gQ3JlYXRlIG9zLmZzZGVjb2RlKCk6IGRlY29kZSBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIHdpdGggc3Vycm9nYXRlZXNjYXBlCi0gIGVycm9yIGhhbmRsZXIsIG9yIHN0cmljdCBlcnJvciBoYW5kbGVyIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzM0ODg6IFByb3ZpZGUgY29udmVuaWVudCBzaG9ydGhhbmQgZnVuY3Rpb25zIGBgZ3ppcC5jb21wcmVzc2BgIGFuZAotICBgYGd6aXAuZGVjb21wcmVzc2BgLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQW5hbmQgQi4gUGlsbGFpLgotCi0tIElzc3VlICM4ODA3OiBwb3BsaWIuUE9QM19TU0wgY2xhc3Mgbm93IGFjY2VwdHMgYSBjb250ZXh0IHBhcmFtZXRlciwgd2hpY2ggaXMgYQotICBzc2wuU1NMQ29udGV4dCBvYmplY3QgYWxsb3dpbmcgYnVuZGxpbmcgU1NMIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywKLSAgY2VydGlmaWNhdGVzIGFuZCBwcml2YXRlIGtleXMgaW50byBhIHNpbmdsZSAocG90ZW50aWFsbHkgbG9uZy1saXZlZCkKLSAgc3RydWN0dXJlLgotCi0tIElzc3VlICM4ODY2OiBwYXJhbWV0ZXJzIHBhc3NlZCB0byBzb2NrZXQuZ2V0YWRkcmluZm8gY2FuIG5vdyBiZSBzcGVjaWZpZWQgYXMKLSAgc2luZ2xlIGtleXdvcmQgYXJndW1lbnRzLgotCi0tIEFkZHJlc3MgWFhYIGNvbW1lbnQgaW4gZGlzLnB5IGJ5IGhhdmluZyBpbnNwZWN0LnB5IHByZWZlciB0byByZXVzZSB0aGUgZGlzLnB5Ci0gIGNvbXBpbGVyIGZsYWcgdmFsdWVzIG92ZXIgZGVmaW5pbmcgaXRzIG93bi4KLQotLSBJc3N1ZSAjOTE0NzogQWRkZWQgZGlzLmNvZGVfaW5mbygpIHdoaWNoIGlzIHNpbWlsYXIgdG8gc2hvd19jb2RlKCkgYnV0IHJldHVybnMKLSAgZm9ybWF0dGVkIGNvZGUgaW5mb3JtYXRpb24gaW4gYSBzdHJpbmcgcmF0aGVyIHRoYW4gZGlzcGxheWluZyBvbiBzY3JlZW4uCi0KLS0gSXNzdWUgIzk1Njc6IGZ1bmN0b29scy51cGRhdGVfd3JhcHBlciBub3cgYWRkcyBhIF9fd3JhcHBlZF9fIGF0dHJpYnV0ZQotICBwb2ludGluZyB0byB0aGUgb3JpZ2luYWwgY2FsbGFibGUuCi0KLS0gSXNzdWUgIzM0NDU6IGZ1bmN0b29scy51cGRhdGVfd3JhcHBlciBub3cgdG9sZXJhdGVzIG1pc3NpbmcgYXR0cmlidXRlcyBvbgotICB3cmFwcGVkIGNhbGxhYmxlcy4KLQotLSBJc3N1ZSAjNTg2NzogQWRkIGFiYy5hYnN0cmFjdGNsYXNzbWV0aG9kIGFuZCBhYmMuYWJzdHJhY3RzdGF0aWNtZXRob2QuCi0KLS0gSXNzdWUgIzk2MDU6IHBvc2l4LmdldGxvZ2luKCkgZGVjb2RlcyB0aGUgdXNlcm5hbWUgd2l0aCBmaWxlIGZpbGVzeXN0ZW0KLSAgZW5jb2RpbmcgYW5kIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyLiBQYXRjaCB3cml0dGVuIGJ5IERhdmlkIFdhdHNvbi4KLQotLSBJc3N1ZSAjOTYwNDogcG9zaXguaW5pdGdyb3VwcygpIGVuY29kZXMgdGhlIHVzZXJuYW1lIHVzaW5nIHRoZSBmaWxleXN0ZW0KLSAgZW5jb2RpbmcgYW5kIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyLiBQYXRjaCB3cml0dGVuIGJ5IERhdmlkIFdhdHNvbi4KLQotLSBJc3N1ZSAjOTYwMzogcG9zaXgudHR5bmFtZSgpIGFuZCBwb3NpeC5jdGVybWlkKCkgZGVjb2RlIHRoZSB0ZXJtaW5hbCBuYW1lCi0gIHVzaW5nIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIGFuZCBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlci4gUGF0Y2ggd3JpdHRlbgotICBieSBEYXZpZCBXYXRzb24uCi0KLS0gSXNzdWUgIzc2NDc6IFRoZSBwb3NpeCBtb2R1bGUgbm93IGhhcyB0aGUgU1RfUkRPTkxZIGFuZCBTVF9OT1NVSUQgY29uc3RhbnRzLAotICBmb3IgdXNlIHdpdGggdGhlIHN0YXR2ZnMoKSBmdW5jdGlvbi4gIFBhdGNoIGJ5IEFkYW0gSmFja3Nvbi4KLQotLSBJc3N1ZSAjODY4ODogTUFOSUZFU1QgZmlsZXMgY3JlYXRlZCBieSBkaXN0dXRpbHMgbm93IGluY2x1ZGUgYSBtYWdpYyBjb21tZW50Ci0gIGluZGljYXRpbmcgdGhleSBhcmUgZ2VuZXJhdGVkLiAgTWFudWFsbHkgbWFpbnRhaW5lZCBNQU5JRkVTVHMgd2l0aG91dCB0aGlzCi0gIG1hcmtlciB3aWxsIG5vdCBiZSBvdmVyd3JpdHRlbiBvciByZW1vdmVkLgotCi0tIElzc3VlICM3NDY3OiB3aGVuIHJlYWRpbmcgYSBmaWxlIGZyb20gYSBaSVAgYXJjaGl2ZSwgaXRzIENSQyBpcyBjaGVja2VkIGFuZCBhCi0gIEJhZFppcGZpbGUgZXJyb3IgaXMgcmFpc2VkIGlmIGl0IGRvZXNuJ3QgbWF0Y2ggKGFzIHVzZWQgdG8gYmUgdGhlIGNhc2UgaW4KLSAgUHl0aG9uIDIuNSBhbmQgZWFybGllcikuCi0KLS0gSXNzdWUgIzk1NTA6IGEgQnVmZmVyZWRSZWFkZXIgY291bGQgaXNzdWUgYW4gYWRkaXRpb25hbCByZWFkIHdoZW4gdGhlIG9yaWdpbmFsCi0gIHJlYWQgcmVxdWVzdCBoYWQgYmVlbiBzYXRpc2ZpZWQsIHdoaWNoIGNvdWxkIGJsb2NrIGluZGVmaW5pdGVseSB3aGVuIHRoZQotICB1bmRlcmx5aW5nIHJhdyBJTyBjaGFubmVsIHdhcyBlLmcuIGEgc29ja2V0LiAgUmVwb3J0IGFuZCBvcmlnaW5hbCBwYXRjaCBieQotICBKYXNvbiBWLiBNaWxsZXIuCi0KLS0gSXNzdWUgIzM3NTc6IHRocmVhZC1sb2NhbCBvYmplY3RzIG5vdyBzdXBwb3J0IGN5Y2xpYyBnYXJiYWdlIGNvbGxlY3Rpb24uCi0gIFRocmVhZC1sb2NhbCBvYmplY3RzIGludm9sdmVkIGluIHJlZmVyZW5jZSBjeWNsZXMgd2lsbCBiZSBkZWFsbG9jYXRlZCB0aW1lbHkKLSAgYnkgdGhlIGN5Y2xpYyBHQywgZXZlbiBpZiB0aGUgdW5kZXJseWluZyB0aHJlYWQgaXMgc3RpbGwgcnVubmluZy4KLQotLSBJc3N1ZSAjOTQ1MjogQWRkIHJlYWRfZmlsZSwgcmVhZF9zdHJpbmcsIGFuZCByZWFkX2RpY3QgdG8gdGhlIGNvbmZpZ3BhcnNlcgotICBBUEk7IG5ldyBzb3VyY2UgYXR0cmlidXRlIHRvIGV4Y2VwdGlvbnMuCi0KLS0gSXNzdWUgIzYyMzE6IEZpeCB4bWwuZXRyZWUuRWxlbWVudEluY2x1ZGUgdG8gaW5jbHVkZSB0aGUgdGFpbCBvZiB0aGUgY3VycmVudAotICBub2RlLgotCi0tIElzc3VlICM4MDQ3OiBGaXggdGhlIHhtbC5ldHJlZSBzZXJpYWxpemVyIHRvIHJldHVybiBieXRlcyBieSBkZWZhdWx0LiAgVXNlCi0gIGBgZW5jb2Rpbmc9InVuaWNvZGUiYGAgdG8gZ2VuZXJhdGUgYSBVbmljb2RlIHN0cmluZy4KLQotLSBJc3N1ZSAjODI4MDogdXJsbGliMidzIFJlcXVlc3QgbWV0aG9kIHdpbGwgcmVtb3ZlIGZyYWdtZW50cyBpbiB0aGUgdXJsLiAgVGhpcwotICBpcyBob3cgaXQgaXMgc3VwcG9zZWQgdG8gd29yaywgd2dldCBhbmQgY3VybCBkbyB0aGUgc2FtZS4gIFByZXZpb3VzIGJlaGF2aW9yCi0gIHdhcyB3cm9uZy4KLQotLSBJc3N1ZSAjNjY4MzogRm9yIFNNVFAgbG9naW5zIHdlIG5vdyB0cnkgYWxsIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgYWR2ZXJ0aXNlZAotICBieSB0aGUgc2VydmVyLiAgTWFueSBzZXJ2ZXJzIGFyZSBidWdneSBhbmQgYWR2ZXJ0aXNlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMKLSAgdGhleSBkbyBub3Qgc3VwcG9ydCBpbiByZWFsaXR5LgotCi0tIElzc3VlICM4ODE0OiBmdW5jdGlvbiBhbm5vdGF0aW9ucyAodGhlIGBgX19hbm5vdGF0aW9uc19fYGAgYXR0cmlidXRlKSBhcmUgbm93Ci0gIGluY2x1ZGVkIGluIHRoZSBzZXQgb2YgYXR0cmlidXRlcyBjb3BpZWQgYnkgZGVmYXVsdCBieSBmdW5jdG9vbHMud3JhcHMgYW5kCi0gIGZ1bmN0b29scy51cGRhdGVfd3JhcHBlci4gIFBhdGNoIGJ5IFRlcnJlbmNlIENvbGUuCi0KLS0gSXNzdWUgIzI5NDQ6IGFzeW5jb3JlIGRvZXNuJ3QgaGFuZGxlIGNvbm5lY3Rpb24gcmVmdXNlZCBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzQxODQ6IFByaXZhdGUgYXR0cmlidXRlcyBvbiBzbXRwZC5TTVRQQ2hhbm5lbCBtYWRlIHB1YmxpYyBhbmQgZGVwcmVjYXRlCi0gIHRoZSBwcml2YXRlIGF0dHJpYnV0ZXMuIEFkZCB0ZXN0cyBmb3Igc210cGQgbW9kdWxlLgotCi0tIElzc3VlICMzMTk2OiBlbWFpbCBoZWFkZXIgZGVjb2RpbmcgaXMgbm93IGZvcmdpdmluZyBpZiBhbiBSRkMyMDQ3IGVuY29kZWQgd29yZAotICBlbmNvZGVkIGluIGJhc2U2NCBpcyBsYWNraW5nIHBhZGRpbmcuCi0KLS0gSXNzdWUgIzk0NDQ6IEFyZ3BhcnNlIG5vdyB1c2VzIHRoZSBmaXJzdCBlbGVtZW50IG9mIHByZWZpeF9jaGFycyBhcyB0aGUgb3B0aW9uCi0gIGNoYXJhY3RlciBmb3IgdGhlIGFkZGVkICdoL2hlbHAnIG9wdGlvbiBpZiBwcmVmaXhfY2hhcnMgZG9lcyBub3QgY29udGFpbiBhCi0gICctJywgaW5zdGVhZCBvZiByYWlzaW5nIGFuIGVycm9yLgotCi0tIElzc3VlICM3MzcyOiBGaXggcHN0YXRzIHJlZ3Jlc3Npb24gd2hlbiBzdHJpcHBpbmcgcGF0aHMgZnJvbSBwcm9maWxlIGRhdGEKLSAgZ2VuZXJhdGVkIHdpdGggdGhlIHByb2ZpbGUgbW9kdWxlLgotCi0tIElzc3VlICM5NDI4OiBGaXggcnVubmluZyBzY3JpcHRzIHdpdGggdGhlIHByb2ZpbGUvY1Byb2ZpbGUgbW9kdWxlcyBmcm9tIHRoZQotICBjb21tYW5kIGxpbmUuCi0KLS0gSXNzdWUgIzc3ODE6IEZpeCByZXN0cmljdGluZyBzdGF0cyBieSBlbnRyeSBjb3VudHMgaW4gdGhlIHBzdGF0cyBpbnRlcmFjdGl2ZQotICBicm93c2VyLgotCi0tIElzc3VlICM5MjA5OiBEbyBub3QgY3Jhc2ggaW4gdGhlIHBzdGF0cyBpbnRlcmFjdGl2ZSBicm93c2VyIG9uIGludmFsaWQgcmVndWxhcgotICBleHByZXNzaW9ucy4KLQotLSBVcGRhdGUgY29sbGVjdGlvbnMuT3JkZXJlZERpY3QgdG8gbWF0Y2ggdGhlIGltcGxlbWVudGF0aW9uIGluIFB5Mi43IChiYXNlZCBvbgotICBsaXN0cyBpbnN0ZWFkIG9mIHdlYWtseSByZWZlcmVuY2VkIExpbmsgb2JqZWN0cykuCi0KLS0gSXNzdWUgIzgzOTc6IFJhaXNlIGFuIGVycm9yIHdoZW4gYXR0ZW1wdGluZyB0byBtaXggaXRlcmF0aW9uIGFuZCByZWd1bGFyIHJlYWRzCi0gIG9uIGEgQloyRmlsZSBvYmplY3QsIHJhdGhlciB0aGFuIHJldHVybmluZyBpbmNvcnJlY3QgcmVzdWx0cy4KLQotLSBJc3N1ZSAjOTQ0ODogRml4IGEgbGVhayBvZiBPUyByZXNvdXJjZXMgKG11dGV4ZXMgb3Igc2VtYXBob3Jlcykgd2hlbgotICByZS1pbml0aWFsaXppbmcgYSBidWZmZXJlZCBJTyBvYmplY3QgYnkgY2FsbGluZyBpdHMgYGBfX2luaXRfX2BgIG1ldGhvZC4KLQotLSBJc3N1ZSAjMTcxMzogRml4IG9zLnBhdGguaXNtb3VudCgpLCB3aGljaCByZXR1cm5lZCB0cnVlIGZvciBzeW1ib2xpYyBsaW5rcwotICBhY3Jvc3MgZGV2aWNlcy4KLQotLSBJc3N1ZSAjODgyNjogUHJvcGVybHkgbG9hZCBvbGQtc3R5bGUgImV4cGlyZXMiIGF0dHJpYnV0ZSBpbiBodHRwLmNvb2tpZXMuCi0KLS0gSXNzdWUgIzE2OTAxMDM6IEZpeCBpbml0aWFsIG5hbWVzcGFjZSBmb3IgY29kZSBydW4gd2l0aCB0cmFjZS5tYWluKCkuCi0KLS0gSXNzdWUgIzczOTU6IEZpeCB0cmFjZWJhY2tzIGluIHBzdGF0cyBpbnRlcmFjdGl2ZSBicm93c2VyLgotCi0tIElzc3VlICM4MjMwOiBGaXggTGliL3Rlc3Qvc29ydHBlcmYucHkuCi0KLS0gSXNzdWUgIzg2MjA6IHdoZW4gYSBjbWQuQ21kKCkgaXMgZmVkIGlucHV0IHRoYXQgcmVhY2hlcyBFT0Ygd2l0aG91dCBhIGZpbmFsCi0gIG5ld2xpbmUsIGl0IG5vIGxvbmdlciB0cnVuY2F0ZXMgdGhlIGxhc3QgY2hhcmFjdGVyIG9mIHRoZSBsYXN0IGNvbW1hbmQgbGluZS4KLQotLSBJc3N1ZSAjNTE0NjogSGFuZGxlIFVJRCBUSFJFQUQgY29tbWFuZCBjb3JyZWN0bHkgaW4gaW1hcGxpYi4KLQotLSBJc3N1ZSAjNTE0NzogRml4IHRoZSBoZWFkZXIgZ2VuZXJhdGVkIGZvciBjb29raWUgZmlsZXMgd3JpdHRlbiBieQotICBodHRwLmNvb2tpZWphci5Nb3ppbGxhQ29va2llSmFyLgotCi0tIElzc3VlICM4MTk4OiBJbiBweWRvYywgb3V0cHV0IGFsbCBoZWxwIHRleHQgdG8gdGhlIGNvcnJlY3Qgc3RyZWFtIHdoZW4KLSAgc3lzLnN0ZG91dCBpcyByZWFzc2lnbmVkLgotCi0tIElzc3VlICM3OTA5OiBEbyBub3QgdG91Y2ggcGF0aHMgd2l0aCB0aGUgc3BlY2lhbCBwcmVmaXhlcyBgYFxcLlxgYCBvciBgYFxcP1xgYAotICBpbiBudHBhdGgubm9ybXBhdGgoKS4KLQotLSBJc3N1ZSAjMTI4NjogQWxsb3cgdXNpbmcgZmlsZWlucHV0LkZpbGVJbnB1dCBhcyBhIGNvbnRleHQgbWFuYWdlci4KLQotLSBBZGQgbHJ1X2NhY2hlKCkgZGVjb3JhdG9yIHRvIHRoZSBmdW5jdG9vbHMgbW9kdWxlLgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBGaXggYGBUb29scy9zY3JpcHRzL2NoZWNrcHljLnB5YGAgYWZ0ZXIgUEVQIDMxNDcuCi0KLS0gSXNzdWUgIzg4Njc6IEZpeCBgYFRvb2xzL3NjcmlwdHMvc2VydmUucHlgYCB0byB3b3JrIHdpdGggZmlsZXMgY29udGFpbmluZwotICBub24tQVNDSUkgY29udGVudC4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzk2MDE6IFByb3ZpZGUgYSB0ZXN0IGNhc2UgZm9yIGZ0cGxpYi5wYXJzZTI1Ny4KLQotLSBJc3N1ZSAjODg1NzogUHJvdmlkZSBhIHRlc3QgY2FzZSBmb3Igc29ja2V0LmdldGFkZHJpbmZvLgotCi0tIElzc3VlICM3NTY0OiBTa2lwIHRlc3RfaW9jdGwgaWYgYW5vdGhlciBwcm9jZXNzIGlzIGF0dGFjaGVkIHRvIC9kZXYvdHR5LgotCi0tIElzc3VlICM4NDMzOiBGaXggdGVzdF9jdXJzZXMgZmFpbHVyZSB3aXRoIG5ld2VyIHZlcnNpb25zIG9mIG5jdXJzZXMuCi0KLS0gSXNzdWUgIzk0OTY6IFByb3ZpZGUgYSB0ZXN0IHN1aXRlIGZvciB0aGUgcmxjb21wbGV0ZXIgbW9kdWxlLiAgUGF0Y2ggYnkKLSAgTWljaGVsZSBPcnLDuS4KLQotLSBJc3N1ZSAjODY4NzogcHJvdmlkZSBhIHRlc3Qgc3VpdGUgZm9yIHNjaGVkLnB5IG1vZHVsZS4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzEzMDM0MzQ6IEdlbmVyYXRlIFpJUCBmaWxlIGNvbnRhaW5pbmcgYWxsIFBEQnMuCi0KLS0gSXNzdWUgIzkxOTM6IFBFUCAzMTQ5IGlzIGFjY2VwdGVkLgotCi0tIElzc3VlICMzMTAxOiBIZWxwZXIgZnVuY3Rpb25zIF9hZGRfb25lX3RvX2luZGV4X0MoKSBhbmQgX2FkZF9vbmVfdG9faW5kZXhfRigpCi0gIGJlY29tZSBfUHlfYWRkX29uZV90b19pbmRleF9DKCkgYW5kIF9QeV9hZGRfb25lX3RvX2luZGV4X0YoKSwgcmVzcGVjdGl2ZWx5LgotCi0tIElzc3VlICM5NzAwOiBkZWZpbmUgSEFWRV9CUk9LRU5fUE9TSVhfU0VNQVBIT1JFUyB1bmRlciBBSVggNi54LiAgUGF0Y2ggYnkKLSAgU8OpYmFzdGllbiBTYWJsw6kuCi0KLS0gRG9uJ3QgcnVuIHBnZW4gdHdpY2Ugd2hlbiB1c2luZyBtYWtlIC1qLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBBbHBoYSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDAxLUF1Zy0yMDEwKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjODk5MTogY29udmVydGJ1ZmZlcigpIHJlamVjdHMgZGlzY29udGlnaW91cyBidWZmZXJzLgotCi0tIElzc3VlICM3NjE2OiBGaXggY29weWluZyBvZiBvdmVybGFwcGluZyBtZW1vcnl2aWV3IHNsaWNlcyB3aXRoIHRoZSBJbnRlbAotICBjb21waWxlci4KLQotLSBJc3N1ZSAjODQxMzogc3RydWN0c2VxdWVuY2Ugbm93IHN1YmNsYXNzZXMgdHVwbGUuCi0KLS0gSXNzdWUgIzgyNzE6IGR1cmluZyB0aGUgZGVjb2Rpbmcgb2YgYW4gaW52YWxpZCBVVEYtOCBieXRlIHNlcXVlbmNlLCBvbmx5IHRoZQotICBzdGFydCBieXRlIGFuZCB0aGUgY29udGludWF0aW9uIGJ5dGUocykgYXJlIG5vdyBjb25zaWRlcmVkIGludmFsaWQsIGluc3RlYWQgb2YKLSAgdGhlIG51bWJlciBvZiBieXRlcyBzcGVjaWZpZWQgYnkgdGhlIHN0YXJ0IGJ5dGUuICBFLmcuOgotICAnXHhmMVx4ODBBQicuZGVjb2RlKCd1dGYtOCcsICdyZXBsYWNlJykgbm93IHJldHVybnMgdSdcdWZmZmRBQicgYW5kIHJlcGxhY2VzCi0gIHdpdGggVStGRkZEIG9ubHkgdGhlIHN0YXJ0IGJ5dGUgKCdceGYxJykgYW5kIHRoZSBjb250aW51YXRpb24gYnl0ZSAoJ1x4ODAnKQotICBldmVuIGlmICdceGYxJyBpcyB0aGUgc3RhcnQgYnl0ZSBvZiBhIDQtYnl0ZXMgc2VxdWVuY2UuICBQcmV2aW91cyB2ZXJzaW9ucwotICByZXR1cm5lZCBhIHNpbmdsZSB1J1x1ZmZmZCcuCi0KLS0gSXNzdWUgIzkwMTE6IEEgbmVnYXRlZCBpbWFnaW5hcnkgbGl0ZXJhbCAoZS5nLiwgIi03aiIpIG5vdyBoYXMgcmVhbCBwYXJ0IC0wLjAKLSAgcmF0aGVyIHRoYW4gMC4wLiAgU28gIi03aiIgaXMgbm93IGV4YWN0bHkgZXF1aXZhbGVudCB0byAiLSg3aikiLgotCi0tIEJlIG1vcmUgc3BlY2lmaWMgaW4gZXJyb3IgbWVzc2FnZXMgYWJvdXQgcG9zaXRpb25hbCBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzg5NDk6ICJ6IiBmb3JtYXQgb2YgUHlBcmdfUGFyc2UqKCkgZnVuY3Rpb25zIGRvZXNuJ3QgYWNjZXB0IGJ5dGVzCi0gIG9iamVjdHMsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjNjU0MzogV3JpdGUgdGhlIHRyYWNlYmFjayBpbiB0aGUgdGVybWluYWwgZW5jb2RpbmcgaW5zdGVhZCBvZiB1dGYtOC4KLSAgRml4IHRoZSBlbmNvZGluZyBvZiB0aGUgbW9kdWxlcyBmaWxlbmFtZS4gIFBhdGNoIHdyaXR0ZW4gYnkgQW1hdXJ5IEZvcmdlb3QKLSAgZCdBcmMuCi0KLS0gSXNzdWUgIzkwMTE6IFJlbW92ZSBidWdneSBhbmQgdW5uZWNlc3NhcnkgKGluIDMueCkgU1QtPkFTVCBjb21waWxhdGlvbiBjb2RlCi0gIGRlYWxpbmcgd2l0aCB1bmFyeSBtaW51cyBhcHBsaWVkIHRvIGEgY29uc3RhbnQuICBUaGUgcmVtb3ZlZCBjb2RlIHdhcyBtdXRhdGluZwotICB0aGUgU1QsIGNhdXNpbmcgYSBzZWNvbmQgY29tcGlsYXRpb24gdG8gZmFpbC4KLQotLSBJc3N1ZSAjODUwOTk3OiBtYmNzIGVuY29kaW5nIChXaW5kb3dzIG9ubHkpIGhhbmRsZXMgZXJyb3JzIGFyZ3VtZW50OiBzdHJpY3QKLSAgbW9kZSByYWlzZXMgdW5pY29kZSBlcnJvcnMuICBUaGUgZW5jb2RlciBvbmx5IHN1cHBvcnRzICJzdHJpY3QiIGFuZCAicmVwbGFjZSIKLSAgZXJyb3IgaGFuZGxlcnMsIHRoZSBkZWNvZGVyIG9ubHkgc3VwcG9ydHMgInN0cmljdCIgYW5kICJpZ25vcmUiIGVycm9yCi0gIGhhbmRsZXJzLiAgUGF0Y2ggd3JpdHRlbiBieSBNYXJrIEhhbW1vbmQuCi0KLS0gSXNzdWUgIzg4NTA6IFJlbW92ZSAidyIgYW5kICJ3IyIgZm9ybWF0cyBmcm9tIFB5QXJnX1BhcnNlKigpIGZ1bmN0aW9ucywgdXNlCi0gICJ3KiIgZm9ybWF0IGluc3RlYWQuIEFkZCB0ZXN0cyBmb3IgIncqIiBmb3JtYXQuCi0KLS0gSXNzdWUgIzg1OTI6IFB5QXJnX1BhcnNlKigpIGZ1bmN0aW9ucyByYWlzZSBhIFR5cGVFcnJvciBmb3IgInkiLCAidSIgYW5kICJaIgotICBmb3JtYXRzIGlmIHRoZSBzdHJpbmcgY29udGFpbnMgYSBudWxsIGJ5dGUvY2hhcmFjdGVyLiAgV3JpdGUgdW5pdCB0ZXN0cyBmb3IKLSAgc3RyaW5nIGZvcm1hdHMuCi0KLS0gSXNzdWUgIzc0OTA6IFRvIGZhY2lsaXRhdGUgc2hhcmluZyBvZiBkb2N0ZXN0cyBiZXR3ZWVuIDIueCBhbmQgMy54IHRlc3QKLSAgc3VpdGVzLCB0aGUgSUdOT1JFX0VYQ0VQVElPTl9ERVRBSUwgZGlyZWN0aXZlIG5vdyBhbHNvIGlnbm9yZXMgdGhlIG1vZHVsZQotICBsb2NhdGlvbiBvZiB0aGUgcmFpc2VkIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjODk2OTogT24gV2luZG93cywgdXNlIG1iY3MgY29kZWMgaW4gc3RyaWN0IG1vZGUgdG8gZW5jb2RlIGFuZCBkZWNvZGUKLSAgZmlsZW5hbWVzIGFuZCBlbmFibGUgb3MuZnNlbmNvZGUoKS4KLQotLSBJc3N1ZSAjOTA1ODogUmVtb3ZlIGFzc2VydGlvbnMgYWJvdXQgSU5UX01BWCBpbiBVbmljb2RlRGVjb2RlRXJyb3IuCi0KLS0gSXNzdWUgIzg5NDE6IERlY29kaW5nIGJpZyBlbmRpYW4gVVRGLTMyIGRhdGEgaW4gVUNTLTIgYnVpbGRzIGNvdWxkIGNyYXNoIHRoZQotICBpbnRlcnByZXRlciB3aXRoIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgQmFzaWMgTXVsdGlsaW5ndWFsIFBsYW5lIChoaWdoZXIgdGhhbgotICAweDEwMDAwKS4KLQotLSBJc3N1ZSAjODk1MDogKFNlZSBhbHNvIGlzc3VlICM1MDgwKS4gIFB5X0FyZ1BhcnNlKigpIGZ1bmN0aW9ucyBub3cgcmFpc2UKLSAgVHlwZUVycm9yIGluc3RlYWQgb2YgZ2l2aW5nIGEgRGVwcmVjYXRpb25XYXJuaW5nIHdoZW4gYSBmbG9hdCBpcyBwYXJzZWQgdXNpbmcKLSAgdGhlICdMJyBjb2RlIChmb3IgbG9uZyBsb25nKS4gIChBbGwgb3RoZXIgaW50ZWdlciBjb2RlcyBhbHJlYWR5IHJhaXNlCi0gIFR5cGVFcnJvciBpbiB0aGlzIGNhc2UuKQotCi0tIElzc3VlICM4OTIyOiBOb3JtYWxpemUgdGhlIGVuY29kaW5nIG5hbWUgaW4gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZygpIHRvCi0gIGVuYWJsZSBzaG9ydGN1dHMgZm9yIHVwcGVyIGNhc2UgZW5jb2RpbmcgbmFtZS4gQWRkIGFsc28gYSBzaG9ydGN1dCBmb3IKLSAgImlzby04ODU5LTEiIGluIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKSBhbmQgUHlVbmljb2RlX0RlY29kZSgpLgotCi0tIElzc3VlICM4ODM4OiBSZW1vdmUgY29kZWNzLmNoYXJidWZmZXJfZW5jb2RlKCkgZnVuY3Rpb24uICBUaGUgYnVmZmVyIHByb3RvY29sCi0gIGRvZXNuJ3Qgc3VwcG9ydCAiY2hhciBidWZmZXIiIGFueW1vcmUgaW4gUHl0aG9uIDMuCi0KLS0gSXNzdWUgIzgzMzk6IFJlbW92ZSAidCMiIGZvcm1hdCBvZiBQeUFyZ19QYXJzZSooKSBmdW5jdGlvbnMsIHVzZSAicyMiIG9yICJzKiIKLSAgaW5zdGVhZC4gIGNvZGVjcy5jaGFyYnVmZmVyX2VuY29kZSgpIG5vdyBhY2NlcHRzIG1vZGlmaWFibGUgYnVmZmVyIG9iamVjdHMKLSAgbGlrZSBieXRlYXJyYXkuCi0KLS0gSXNzdWUgIzg4Mzc6IFJlbW92ZSAiTz8iIGZvcm1hdCBvZiBQeUFyZ19QYXJzZSooKSBmdW5jdGlvbnMuICBUaGUgZm9ybWF0IGlzIG5vCi0gIHVzZWQgYW55bW9yZSBhbmQgaXQgd2FzIG5ldmVyIGRvY3VtZW50ZWQuCi0KLS0gSW4gc3RyLmZvcm1hdCgpLCByYWlzZSBhIFZhbHVlRXJyb3Igd2hlbiBpbmRleGVzIHRvIGFyZ3VtZW50cyBhcmUgdG9vIGxhcmdlLgotCi0tIElzc3VlICMyODQ0OiBNYWtlIGludCgnNDInLCBuKSBjb25zaXN0ZW50bHkgcmFpc2UgVmFsdWVFcnJvciBmb3IgaW52YWxpZAotICBpbnRlZ2VycyBuIChpbmNsdWRpbmcgbiA9IC05MDkpLgotCi0tIElzc3VlICM4MTg4OiBJbnRyb2R1Y2UgYSBuZXcgc2NoZW1lIGZvciBjb21wdXRpbmcgaGFzaGVzIG9mIG51bWJlcnMgKGluc3RhbmNlcwotICBvZiBpbnQsIGZsb2F0LCBjb21wbGV4LCBkZWNpbWFsLkRlY2ltYWwgYW5kIGZyYWN0aW9ucy5GcmFjdGlvbikgdGhhdCBtYWtlcyBpdAotICBlYXN5IHRvIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCBoYXNoKHgpID09IGhhc2goeSkgd2hlbmV2ZXIgeCBhbmQgeSBoYXZlCi0gIGVxdWFsIHZhbHVlLgotCi0tIElzc3VlICM4NzQ4OiBGaXggdHdvIGlzc3VlcyB3aXRoIGNvbXBhcmlzb25zIGJldHdlZW4gY29tcGxleCBhbmQgaW50ZWdlcgotICBvYmplY3RzLiAgKDEpIFRoZSBjb21wYXJpc29uIGNvdWxkIGluY29ycmVjdGx5IHJldHVybiBUcnVlIGluIHNvbWUgY2FzZXMKLSAgKDIqKjUzKzEgPT0gY29tcGxleCgyKio1MykgPT0gMioqNTMpLCBicmVha2luZyB0cmFuc2l0aXZpdHkgb2YgZXF1YWxpdHkuCi0gICgyKSBUaGUgY29tcGFyaXNvbiByYWlzZWQgYW4gT3ZlcmZsb3dFcnJvciBmb3IgbGFyZ2UgaW50ZWdlcnMsIGxlYWRpbmcgdG8KLSAgdW5wcmVkaWN0YWJsZSBleGNlcHRpb25zIHdoZW4gY29tYmluaW5nIGludGVnZXJzIGFuZCBjb21wbGV4IG9iamVjdHMgaW4gc2V0cwotICBvciBkaWN0cy4KLQotLSBJc3N1ZSAjODc2NjogSW5pdGlhbGl6ZSBfd2FybmluZ3MgbW9kdWxlIGJlZm9yZSBpbXBvcnRpbmcgdGhlIGZpcnN0IG1vZHVsZS4KLSAgRml4IGEgY3Jhc2ggaWYgYW4gZW1wdHkgZGlyZWN0b3J5IGNhbGxlZCAiZW5jb2RpbmdzIiBleGlzdHMgaW4gc3lzLnBhdGguCi0KLS0gSXNzdWUgIzg1ODk6IERlY29kZSBQWVRIT05XQVJOSU5HUyBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aXRoIHRoZSBmaWxlIHN5c3RlbQotICBlbmNvZGluZyBhbmQgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIgaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nIHRvCi0gIGJlIGNvbnNpc3RlbnQgd2l0aCBvcy5lbnZpcm9uLiAgQWRkIFB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlKCkgZnVuY3Rpb24uCi0KLS0gUHlPYmplY3RfRHVtcCgpIGVuY29kZXMgdW5pY29kZSBvYmplY3RzIHRvIHV0Zjggd2l0aCBiYWNrc2xhc2hyZXBsYWNlIChpbnN0ZWFkCi0gIG9mIHN0cmljdCkgZXJyb3IgaGFuZGxlciB0byBlc2NhcGUgc3Vycm9nYXRlcy4KLQotLSBJc3N1ZSAjODcxNTogQ3JlYXRlIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoKSBmdW5jdGlvbjogRW5jb2RlIGEgVW5pY29kZQotICBvYmplY3QgdG8gUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyB3aXRoIHRoZSAic3Vycm9nYXRlZXNjYXBlIiBlcnJvcgotICBoYW5kbGVyLCBhbmQgcmV0dXJuIGJ5dGVzLiAgSWYgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBpcyBub3Qgc2V0LCBmYWxsCi0gIGJhY2sgdG8gVVRGLTguCi0KLS0gRW5hYmxlIHNob3J0Y3V0cyBmb3IgY29tbW9uIGVuY29kaW5ncyBpbiBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKCkgZm9yIGFueQotICBlcnJvciBoYW5kbGVyLCBub3Qgb25seSB0aGUgZGVmYXVsdCBlcnJvciBoYW5kbGVyIChzdHJpY3QpLgotCi0tIElzc3VlICM4NjEwOiBMb2FkIGZpbGUgc3lzdGVtIGNvZGVjIGF0IHN0YXJ0dXAsIGFuZCBkaXNwbGF5IGEgZmF0YWwgZXJyb3Igb24KLSAgZmFpbHVyZS4gIFNldCB0aGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgdG8gdXRmLTggKGluc3RlYWQgb2YgTm9uZSkgaWYgZ2V0dGluZwotICB0aGUgbG9jYWxlIGVuY29kaW5nIGZhaWxlZCwgb3IgaWYgbmxfbGFuZ2luZm8oQ09ERVNFVCkgZnVuY3Rpb24gaXMgbWlzc2luZy4KLQotLSBQeUZpbGVfRnJvbUZkKCkgdXNlcyBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KCkgaW5zdGVhZCBvZgotICBQeVVuaWNvZGVfRnJvbVN0cmluZygpIHRvIHN1cHBvcnQgc3Vycm9nYXRlcyBpbiB0aGUgZmlsZW5hbWUgYW5kIHVzZSB0aGUgcmlnaHQKLSAgZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzc1MDc6IFF1b3RlICIhIiBpbiBwaXBlcy5xdW90ZSgpOyBpdCBpcyBzcGVjaWFsIHRvIHNvbWUgc2hlbGxzLgotCi0tIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKCkgdXNlcyBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlci4KLQotLSBJc3N1ZSAjODQxOTogUHJldmVudCB0aGUgZGljdCBjb25zdHJ1Y3RvciBmcm9tIGFjY2VwdGluZyBub24tc3RyaW5nIGtleXdvcmQKLSAgYXJndW1lbnRzLgotCi0tIElzc3VlICM4MTI0OiBQeVN5c19Xcml0ZVN0ZG91dCgpIGFuZCBQeVN5c19Xcml0ZVN0ZGVycigpIGRvbid0IGV4ZWN1dGUKLSAgaW5kaXJlY3RseSBQeXRob24gc2lnbmFsIGhhbmRsZXJzIGFueW1vcmUgYmVjYXVzZSBteXdyaXRlKCkgaWdub3JlcyBleGNlcHRpb25zCi0gIChLZXlib2FyZEludGVycnVwdCkuCi0KLS0gSXNzdWUgIzgwOTI6IEZpeCBQeVVuaWNvZGVfRW5jb2RlVVRGOCgpIHRvIHN1cHBvcnQgZXJyb3IgaGFuZGxlciBwcm9kdWNpbmcKLSAgdW5pY29kZSBzdHJpbmcgKGVnLiBiYWNrc2xhc2hyZXBsYWNlKS4KLQotLSBJc3N1ZSAjODQ4NTogUHlVbmljb2RlX0ZTQ29udmVydGVyKCkgZG9lc24ndCBhY2NlcHQgYnl0ZWVhcnJheSBvYmplY3RzCi0gIGFueW1vcmUsIHlvdSBoYXZlIHRvIGNvbnZlcnQgeW91ciBieXRlYXJyYXkgZmlsZW5hbWVzIHRvIGJ5dGVzLgotCi0tIElzc3VlICM3MzMyOiBSZW1vdmUgdGhlIDE2S0Igc3RhY2stYmFzZWQgYnVmZmVyIGluCi0gIFB5TWFyc2hhbF9SZWFkTGFzdE9iamVjdEZyb21GaWxlLCB3aGljaCBkb2Vzbid0IGJyaW5nIGFueSBub3RpY2VhYmxlIGJlbmVmaXQKLSAgY29tcGFyZWQgdG8gdGhlIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24gZmFsbGJhY2suICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcwotICBOYXRhbGkuCi0KLS0gSXNzdWUgIzg0MTc6IFJhaXNlIGFuIE92ZXJmbG93RXJyb3Igd2hlbiBhbiBpbnRlZ2VyIGxhcmdlciB0aGFuIHN5cy5tYXhzaXplIGlzCi0gIHBhc3NlZCB0byBieXRlcyBvciBieXRlYXJyYXkuCi0KLS0gSXNzdWUgIzczMDE6IEFkZCBlbnZpcm9ubWVudCB2YXJpYWJsZSAkUFlUSE9OV0FSTklOR1MuCi0KLS0gSXNzdWUgIzgzMjk6IERvbid0IHJldHVybiB0aGUgc2FtZSBsaXN0cyBmcm9tIHNlbGVjdC5zZWxlY3Qgd2hlbiBubyBmZHMgYXJlCi0gIGNoYW5nZWQuCi0KLS0gSXNzdWUgIzgyNTk6IDFMIDw8ICgyKiozMSkgbm8gbG9uZ2VyIHByb2R1Y2VzIGFuICdvdXRyYWdlb3VzIHNoaWZ0IGVycm9yJyBvbgotICA2NC1iaXQgbWFjaGluZXMuICBUaGUgc2hpZnQgY291bnQgZm9yIGVpdGhlciBsZWZ0IG9yIHJpZ2h0IHNoaWZ0IGlzIHBlcm1pdHRlZAotICB0byBiZSB1cCB0byBzeXMubWF4c2l6ZS4KLQotLSBFbnN1cmUgdGhhdCB0b2tlbml6YXRpb24gb2YgaWRlbnRpZmllcnMgaXMgbm90IGFmZmVjdGVkIGJ5IGxvY2FsZS4KLQotLSBJc3N1ZSAjMTIyMjU4NTogQWRkZWQgTERDWFhTSEFSRUQgZm9yIEMrKyBzdXBwb3J0LiBQYXRjaCBieSBBcmZyZXZlci4KLQotLSBSYWlzZSBhIFR5cGVFcnJvciB3aGVuIHRyeWluZyB0byBkZWxldGUgYSBUX1NUUklOR19JTlBMQUNFIHN0cnVjdCBtZW1iZXIuCi0KLS0gSXNzdWUgIzgyMTE6IFNhdmUvcmVzdG9yZSBDRkxBR1MgYXJvdW5kIEFDX1BST0dfQ0MgaW4gY29uZmlndXJlLmluLCBpbiBjYXNlIGl0Ci0gIGlzIHNldC4KLQotLSBJc3N1ZSAjODIyNjogc3lzLnNldGZpbGVzeXN0ZW1lbmNvZGluZygpIHJhaXNlcyBhIExvb2t1cEVycm9yIGlmIHRoZSBlbmNvZGluZwotICBpcyB1bmtub3duLgotCi0tIElzc3VlICMxNTgzODYzOiBBIHN0ciBzdWJjbGFzcyBjYW4gbm93IG92ZXJyaWRlIHRoZSBfX3N0cl9fIG1ldGhvZC4KLQotLSBJc3N1ZSAjODAxNDogU2V0dGluZyBhIFRfVUlOVCBvciBUX1BZU1NJWkVUIGF0dHJpYnV0ZSBvZiBhbiBvYmplY3Qgd2l0aAotICBQeU1lbWJlckRlZnMgY291bGQgcHJvZHVjZSBhbiBpbnRlcm5hbCBlcnJvcjsgcmFpc2UgVHlwZUVycm9yIGluc3RlYWQuCi0KLS0gSXNzdWUgIzc4NDU6IFJpY2ggY29tcGFyaXNvbiBtZXRob2RzIG9uIHRoZSBjb21wbGV4IHR5cGUgbm93IHJldHVybgotICBOb3RJbXBsZW1lbnRlZCByYXRoZXIgdGhhbiByYWlzaW5nIGEgVHlwZUVycm9yIHdoZW4gY29tcGFyaW5nIHdpdGggYW4KLSAgaW5jb21wYXRpYmxlIHR5cGU7IHRoaXMgYWxsb3dzIHVzZXItZGVmaW5lZCBjbGFzc2VzIHRvIGltcGxlbWVudCB0aGVpciBvd24KLSAgY29tcGFyaXNvbnMgd2l0aCBjb21wbGV4LgotCi0tIElzc3VlICMzMTM3OiBEb24ndCBpZ25vcmUgZXJyb3JzIGF0IHN0YXJ0dXAsIGVzcGVjaWFsbHkgYSBrZXlib2FyZCBpbnRlcnJ1cHQKLSAgKFNJR0lOVCkuIElmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBpbXBvcnRpbmcgdGhlIHNpdGUgbW9kdWxlLCB0aGUgZXJyb3IgaXMKLSAgcHJpbnRlZCBhbmQgUHl0aG9uIGV4aXRzLiBJbml0aWFsaXplIHRoZSBHSUwgYmVmb3JlIGltcG9ydGluZyB0aGUgc2l0ZSBtb2R1bGUuCi0KLS0gSXNzdWUgIzcxNzM6IEdlbmVyYXRvciBmaW5hbGl6YXRpb24gY291bGQgaW52YWxpZGF0ZSBzeXMuZXhjX2luZm8oKS4KLQotLSBJc3N1ZSAjNzU0NDogUHJlYWxsb2NhdGUgdGhyZWFkIG1lbW9yeSBiZWZvcmUgY3JlYXRpbmcgdGhlIHRocmVhZCB0byBhdm9pZCBhCi0gIGZhdGFsIGVycm9yIGluIGxvdyBtZW1vcnkgY29uZGl0aW9uLgotCi0tIElzc3VlICM3ODIwOiBUaGUgcGFyc2VyIHRva2VuaXplciByZXN0b3JlcyBhbGwgYnl0ZXMgaW4gdGhlIHJpZ2h0IGlmIHRoZSBCT00KLSAgY2hlY2sgZmFpbHMuCi0KLS0gSGFuZGxlIGVycm9ycyBmcm9tIGxvb2tpbmcgdXAgX19wcmVwYXJlX18gY29ycmVjdGx5LgotCi0tIElzc3VlICM1OTM5OiBBZGQgYWRkaXRpb25hbCBydW50aW1lIGNoZWNraW5nIHRvIGVuc3VyZSBhIHZhbGlkIGNhcHN1bGUgaW4KLSAgTW9kdWxlcy9fY3R5cGVzL2NhbGxwcm9jLmMuCi0KLS0gSXNzdWUgIzczMDk6IEZpeCB1bmNoZWNrZWQgYXR0cmlidXRlIGFjY2VzcyB3aGVuIGNvbnZlcnRpbmcKLSAgVW5pY29kZUVuY29kZUVycm9yLCBVbmljb2RlRGVjb2RlRXJyb3IsIGFuZCBVbmljb2RlVHJhbnNsYXRlRXJyb3IgdG8gc3RyaW5ncy4KLQotLSBJc3N1ZSAjNjkwMjogRml4IHByb2JsZW0gd2l0aCBidWlsdC1pbiB0eXBlcyBmb3JtYXQgaW5jb3JyZWN0bHkgd2l0aCAwCi0gIHBhZGRpbmcuCi0KLS0gSXNzdWUgIzc5ODg6IEZpeCBkZWZhdWx0IGFsaWdubWVudCB0byBiZSByaWdodCBhbGlnbmVkIGZvciBjb21wbGV4Ll9fZm9ybWF0X18uCi0gIE5vdyBpdCBtYXRjaGVzIG90aGVyIG51bWVyaWMgdHlwZXMuCi0KLS0gSXNzdWUgIzU5ODg6IFJlbW92ZSBkZXByZWNhdGVkIGZ1bmN0aW9ucyBQeU9TX2FzY2lpX2Zvcm1hdGQsCi0gIFB5T1NfYXNjaWlfc3RydG9kLCBhbmQgUHlPU19hc2NpaV9hdG9mLiAgVXNlIFB5T1NfZG91YmxlX3RvX3N0cmluZyBhbmQKLSAgUHlPU19zdHJpbmdfdG9fZG91YmxlIGluc3RlYWQuICBTZWUgaXNzdWUgIzU4MzUgZm9yIHRoZSBvcmlnaW5hbCBkZXByZWNhdGlvbnMuCi0KLS0gSXNzdWUgIzczODU6IEZpeCBhIGNyYXNoIGluIGBNZW1vcnlWaWV3X0Zyb21PYmplY3RgIHdoZW4gYFB5T2JqZWN0X0dldEJ1ZmZlcmAKLSAgZmFpbHMuICBQYXRjaCBieSBGbG9yZW50IFhpY2x1bmEuCi0KLS0gSXNzdWUgIzc3ODg6IEZpeCBhbiBpbnRlcnByZXRlciBjcmFzaCBwcm9kdWNlZCBieSBkZWxldGluZyBhIGxpc3Qgc2xpY2Ugd2l0aAotICB2ZXJ5IGxhcmdlIHN0ZXAgdmFsdWUuCi0KLS0gSXNzdWUgIzc3NjY6IENoYW5nZSBzeXMuZ2V0d2luZG93c3ZlcnNpb24oKSByZXR1cm4gdmFsdWUgdG8gYSBuYW1lZCB0dXBsZSBhbmQKLSAgYWRkIHRoZSBhZGRpdGlvbmFsIG1lbWJlcnMgcmV0dXJuZWQgaW4gYW4gT1NWRVJTSU9OSU5GT0VYIHN0cnVjdHVyZS4gIFRoZSBuZXcKLSAgbWVtYmVycyBhcmUgc2VydmljZV9wYWNrX21ham9yLCBzZXJ2aWNlX3BhY2tfbWlub3IsIHN1aXRlX21hc2ssIGFuZAotICBwcm9kdWN0X3R5cGUuCi0KLS0gSXNzdWUgIzc1NjE6IE9wZXJhdGlvbnMgb24gZW1wdHkgYnl0ZWFycmF5cyAoc3VjaCBhcyBgaW50KGJ5dGVhcnJheSgpKWApIGNvdWxkCi0gIGNyYXNoIGluIG1hbnkgcGxhY2VzIGJlY2F1c2Ugb2YgdGhlIFB5Qnl0ZUFycmF5X0FTX1NUUklORygpIG1hY3JvIHJldHVybmluZwotICBOVUxMLiAgVGhlIG1hY3JvIG5vdyByZXR1cm5zIGEgc3RhdGljYWxseSBhbGxvY2F0ZWQgZW1wdHkgc3RyaW5nIGluc3RlYWQuCi0KLS0gSXNzdWUgIzY2OTA6IE9wdGltaXplIHRoZSBieXRlY29kZSBmb3IgZXhwcmVzc2lvbnMgc3VjaCBhcyBgeCBpbiB7MSwgMiwgM31gLAotICB3aGVyZSB0aGUgcmlnaHQgaGFuZCBvcGVyYW5kIGlzIGEgc2V0IG9mIGNvbnN0YW50cywgYnkgdHVybmluZyB0aGUgc2V0IGludG8gYQotICBmcm96ZW5zZXQgYW5kIHByZS1idWlsZGluZyBpdCBhcyBhIGNvbnN0YW50LiAgVGhlIGNvbXBhcmlzb24gb3BlcmF0aW9uIGlzIG1hZGUKLSAgYWdhaW5zdCB0aGUgY29uc3RhbnQgaW5zdGVhZCBvZiBidWlsZGluZyBhIG5ldyBzZXQgZWFjaCB0aW1lIGl0IGlzIGV4ZWN1dGVkIChhCi0gIHNpbWlsYXIgb3B0aW1pemF0aW9uIGFscmVhZHkgZXhpc3RlZCB3aGljaCB0dXJuZWQgYSBsaXN0IG9mIGNvbnN0YW50cyBpbnRvIGEKLSAgcHJlLWJ1aWx0IHR1cGxlKS4gIFBhdGNoIGFuZCBhZGRpdGlvbmFsIHRlc3RzIGJ5IERhdmUgTWFsY29sbS4KLQotLSBJc3N1ZSAjNzYyMjogSW1wcm92ZSB0aGUgc3BsaXQoKSwgcnNwbGl0KCksIHNwbGl0bGluZXMoKSBhbmQgcmVwbGFjZSgpIG1ldGhvZHMKLSAgb2YgYnl0ZXMsIGJ5dGVhcnJheSBhbmQgdW5pY29kZSBvYmplY3RzIGJ5IHVzaW5nIGEgY29tbW9uIGltcGxlbWVudGF0aW9uIGJhc2VkCi0gIG9uIHN0cmluZ2xpYidzIGZhc3Qgc2VhcmNoLiAgUGF0Y2ggYnkgRmxvcmVudCBYaWNsdW5hLgotCi0tIElzc3VlICM3NjMyOiBGaXggdmFyaW91cyBzdHIgLT4gZmxvYXQgY29udmVyc2lvbiBidWdzIHByZXNlbnQgaW4gMi43IGFscGhhIDIsCi0gIGluY2x1ZGluZzogKDEpIGEgc2VyaW91cyAnd3Jvbmcgb3V0cHV0JyBidWcgdGhhdCBjb3VsZCBvY2N1ciBmb3IgbG9uZyAoPiA0MAotICBkaWdpdCkgaW5wdXQgc3RyaW5ncywgKDIpIGEgY3Jhc2ggaW4gZHRvYS5jIHRoYXQgb2NjdXJyZWQgaW4gZGVidWcgYnVpbGRzIHdoZW4KLSAgcGFyc2luZyBjZXJ0YWluIGxvbmcgbnVtZXJpYyBzdHJpbmdzIGNvcnJlc3BvbmRpbmcgdG8gc3Vibm9ybWFsIHZhbHVlcywgKDMpIGEKLSAgbWVtb3J5IGxlYWsgZm9yIHNvbWUgdmFsdWVzIGxhcmdlIGVub3VnaCB0byBjYXVzZSBvdmVyZmxvdywgYW5kICg0KSBhIG51bWJlcgotICBvZiBmbGF3cyB0aGF0IGNvdWxkIGxlYWQgdG8gaW5jb3JyZWN0bHkgcm91bmRlZCByZXN1bHRzLgotCi0tIFRoZSBfX2NvbXBsZXhfXyBtZXRob2QgaXMgbm93IGxvb2tlZCB1cCBvbiB0aGUgY2xhc3Mgb2YgaW5zdGFuY2VzIHRvIG1ha2UgaXQKLSAgY29uc2lzdGVudCB3aXRoIG90aGVyIHNwZWNpYWwgbWV0aG9kcy4KLQotLSBJc3N1ZSAjNzQ2MjogSW1wbGVtZW50IHRoZSBzdHJpbmdsaWIgZmFzdCBzZWFyY2ggYWxnb3JpdGhtIGZvciB0aGUgYHJmaW5kYCwKLSAgYHJpbmRleGAsIGByc3BsaXRgIGFuZCBgcnBhcnRpdGlvbmAgbWV0aG9kcy4gIFBhdGNoIGJ5IEZsb3JlbnQgWGljbHVuYS4KLQotLSBJc3N1ZSAjNzYwNDogRGVsZXRpbmcgYW4gdW5zZXQgc2xvdHRlZCBhdHRyaWJ1dGUgZGlkIG5vdCByYWlzZSBhbgotICBBdHRyaWJ1dGVFcnJvci4KLQotLSBJc3N1ZSAjNzUzNDogRml4IGhhbmRsaW5nIG9mIElFRUUgc3BlY2lhbHMgKGluZmluaXRpZXMsIG5hbnMsIG5lZ2F0aXZlIHplcm8pCi0gIGluICoqIG9wZXJhdG9yLiAgVGhlIGJlaGF2aW91ciBub3cgY29uZm9ybXMgdG8gdGhhdCBkZXNjcmliZWQgaW4gQzk5IEFubmV4IEYuCi0KLS0gSXNzdWUgIzE4MTE6IGltcHJvdmUgYWNjdXJhY3kgYW5kIGNyb3NzLXBsYXRmb3JtIGNvbnNpc3RlbmN5IGZvciB0cnVlIGRpdmlzaW9uCi0gIG9mIGludGVnZXJzOiB0aGUgcmVzdWx0IG9mIGEvYiBpcyBub3cgY29ycmVjdGx5IHJvdW5kZWQgZm9yIGludHMgYSBhbmQgYiAoYXQKLSAgbGVhc3Qgb24gSUVFRSA3NTQgcGxhdGZvcm1zKSwgYW5kIGluIHBhcnRpY3VsYXIgZG9lcyBub3QgZGVwZW5kIG9uIHRoZQotICBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnQuCi0KLS0gSXNzdWUgIzY4MzQ6IHJlcGxhY2UgdGhlIGltcGxlbWVudGF0aW9uIGZvciB0aGUgJ3B5dGhvbicgYW5kICdweXRob253JwotICBleGVjdXRhYmxlcyBvbiBPU1guCi0KLSAgVGhlc2UgZXhlY3V0YWJsZXMgbm93IHdvcmsgcHJvcGVybHkgd2l0aCB0aGUgYXJjaCgxKSBjb21tYW5kOiBgYGFyY2ggLXBwYwotICBweXRob25gYCB3aWxsIHN0YXJ0IGEgdW5pdmVyc2FsIGJpbmFyeSB2ZXJzaW9uIG9mIHB5dGhvbiBpbiBQUEMgbW9kZSAodW5saWtlCi0gIHByZXZpb3VzIHJlbGVhc2VzKS4KLQotLSBJc3N1ZSAjNzQ2NjogU2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gdGhlIGdhcmJhZ2UgY29sbGVjdG9yIGlzIGNhbGxlZCBpbiB0aGUKLSAgbWlkZGxlIG9mIHBvcHVsYXRpbmcgYSB0dXBsZS4gIFBhdGNoIGJ5IEZsb3JlbnQgWGljbHVuYS4KLQotLSBJc3N1ZSAjNzQxOTogc2V0bG9jYWxlKCkgY291bGQgY3Jhc2ggdGhlIGludGVycHJldGVyIG9uIFdpbmRvd3Mgd2hlbiBjYWxsZWQKLSAgd2l0aCBpbnZhbGlkIHZhbHVlcy4KLQotLSBJc3N1ZSAjNjA3NzogT24gV2luZG93cywgZmlsZXMgb3BlbmVkIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSBpbiAid3QrIgotICBtb2RlIHdvdWxkIGFwcGVhciB0cnVuY2F0ZWQgb24gdGhlIGZpcnN0ICcweDFhJyBieXRlIChha2EuIEN0cmwrWikuCi0KLS0gSXNzdWUgIzcwODU6IEZpeCBjcmFzaCB3aGVuIGltcG9ydGluZyBzb21lIGV4dGVuc2lvbnMgaW4gYSB0aHJlYWQgb24gTWFjT1NYCi0gIDEwLjYuCi0KLS0gSXNzdWUgIzE3NTcxMjY6IEZpeCB0aGUgY3lyaWxsaWMtYXNpYW4gYWxpYXMgZm9yIHRoZSBwdGNwMTU0IGVuY29kaW5nLgotCi0tIElzc3VlICM2OTcwOiBSZW1vdmUgcmVkdW5kYW50IGNhbGxzIHdoZW4gY29tcGFyaW5nIG9iamVjdHMgdGhhdCBkb24ndAotICBpbXBsZW1lbnQgdGhlIHJlbGV2YW50IHJpY2ggY29tcGFyaXNvbiBtZXRob2RzLgotCi0tIElzc3VlICM3Mjk4OiBGaXhlcyBmb3IgcmFuZ2UgYW5kIHJldmVyc2VkKHJhbmdlKC4uLikpLiAgSXRlcmF0aW9uIG92ZXIKLSAgcmFuZ2UoYSwgYiwgYykgaW5jb3JyZWN0bHkgZ2F2ZSBhbiBlbXB0eSBpdGVyYXRvciB3aGVuIGEsIGIgYW5kIGMgZml0IGluIEMKLSAgbG9uZyBidXQgdGhlIGxlbmd0aCBvZiB0aGUgcmFuZ2UgZGlkIG5vdC4gIEFsc28gZml4IHNldmVyYWwgY2FzZXMgd2hlcmUKLSAgcmV2ZXJzZWQocmFuZ2UoYSwgYiwgYykpIGdhdmUgd3JvbmcgcmVzdWx0cywgYW5kIGZpeCBhIHJlZmxlYWsgZm9yCi0gIHJldmVyc2VkKHJhbmdlKGEsIGIsIGMpKSB3aXRoIGxhcmdlIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjNzI0NDogaXRlcnRvb2xzLml6aXBfbG9uZ2VzdCgpIG5vIGxvbmdlciBpZ25vcmVzIGV4Y2VwdGlvbnMgcmFpc2VkCi0gIGR1cmluZyB0aGUgZm9ybWF0aW9uIG9mIGFuIG91dHB1dCB0dXBsZS4KLQotLSBJc3N1ZSAjMzI5NzogT24gd2lkZSB1bmljb2RlIGJ1aWxkcywgZG8gbm90IHNwbGl0IHVuaWNvZGUgY2hhcmFjdGVycyBpbnRvCi0gIHN1cnJvZ2F0ZXMuCi0KLS0gUmVtb3ZlIGxlbmd0aCBsaW1pdGF0aW9uIHdoZW4gY29uc3RydWN0aW5nIGEgY29tcGxleCBudW1iZXIgZnJvbSBhIHN0cmluZy4KLQotLSBJc3N1ZSAjMTA4NzQxODogQm9vc3QgcGVyZm9ybWFuY2Ugb2YgYml0d2lzZSBvcGVyYXRpb25zIGZvciBsb25ncy4KLQotLSBTdXBwb3J0IGZvciBBdGhlT1MgaGFzIGJlZW4gY29tcGxldGVseSByZW1vdmVkIGZyb20gdGhlIGNvZGUgYmFzZS4gSXQgd2FzCi0gIGRpc2FibGVkIHNpbmNlIFB5dGhvbiAzLjAuCi0KLS0gU3VwcG9ydCBmb3Igc2V2ZXJhbCBsZWdhY3kgdGhyZWFkaW5nIGxpYnJhcmllcyBoYXMgYmVlbiBkaXNhYmxlZC4gVGhlc2UKLSAgbGlicmFyaWVzIGFyZTogTWFjaCBDIHRocmVhZHMsIFN1bk9TIExXUCwgR05VIHB0aCwgSXJpeCB0aHJlYWRzLiBTdXBwb3J0IGNvZGUKLSAgd2lsbCBiZSBlbnRpcmVseSByZW1vdmVkIGluIDMuMy4KLQotLSBTdXBwb3J0IGZvciBPU0YqIGhhcyBiZWVuIGRpc2FibGVkLiBJZiBub2JvZHkgc3RhbmRzIHVwLCBzdXBwb3J0IHdpbGwgYmUKLSAgcmVtb3ZlZCBpbiAzLjMuIFNlZSA8aHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTg2MDY+LgotCi0tIFBlZXBob2xlIGNvbnN0YW50IGZvbGRpbmcgaGFkIG1pc3NlZCBVTkFSWV9QT1NJVElWRS4KLQotLSBJc3N1ZSAjMTcyMjM0NDogdGhyZWFkaW5nLl9zaHV0ZG93bigpIGlzIG5vdyBjYWxsZWQgaW4gUHlfRmluYWxpemUoKSwgd2hpY2gKLSAgZml4ZXMgdGhlIHByb2JsZW0gb2Ygc29tZSBleGNlcHRpb25zIGJlaW5nIHRocm93biBhdCBzaHV0ZG93biB3aGVuIHRoZQotICBpbnRlcnByZXRlciBpcyBraWxsZWQuIFBhdGNoIGJ5IEFkYW0gT2xzZW4uCi0KLS0gSXNzdWUgIzcxNDc6IFJlbW92ZSBzdXBwb3J0IGZvciBjb21waWxpbmcgUHl0aG9uIHdpdGhvdXQgY29tcGxleCBudW1iZXIKLSAgc3VwcG9ydC4KLQotLSBJc3N1ZSAjNzEyMDogbG9nZ2luZzogUmVtb3ZlZCBpbXBvcnQgb2YgbXVsdGlwcm9jZXNzaW5nIHdoaWNoIGlzIGNhdXNpbmcgY3Jhc2gKLSAgaW4gR0FFLgotCi0tIElzc3VlICMxNzU0MDk0OiBJbXByb3ZlIHRoZSBzdGFjayBkZXB0aCBjYWxjdWxhdGlvbiBpbiB0aGUgY29tcGlsZXIuICBUaGVyZQotICBzaG91bGQgYmUgbm8gb3RoZXIgZWZmZWN0IHRoYW4gYSBzbWFsbCBkZWNyZWFzZSBpbiBtZW1vcnkgdXNlLiAgUGF0Y2ggYnkKLSAgQ2hyaXN0b3BoZXIgVHVyIExlc25pZXdza2ktTGFhcy4KLQotLSBJc3N1ZSAjNzA2NTogRml4IGEgY3Jhc2ggaW4gYnl0ZXMubWFrZXRyYW5zIGFuZCBieXRlYXJyYXkubWFrZXRyYW5zIHdoZW4gdXNpbmcKLSAgYnl0ZSB2YWx1ZXMgZ3JlYXRlciB0aGFuIDEyNy4gIFBhdGNoIGJ5IERlcmsgRHJ1a2tlci4KLQotLSBJc3N1ZSAjMTU3MTE4NDogVGhlIFVuaWNvZGUgZGF0YWJhc2UgY29udGFpbnMgcHJvcGVydGllcyBmb3IgbW9yZSBjaGFyYWN0ZXJzLgotICBUaGUgdGFibGVzIGZvciBjb2RlIHBvaW50cyByZXByZXNlbnRpbmcgbnVtZXJpYyB2YWx1ZXMsIHdoaXRlIHNwYWNlcyBvciBsaW5lCi0gIGJyZWFrcyBhcmUgbm93IGdlbmVyYXRlZCBmcm9tIHRoZSBvZmZpY2lhbCBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSBmaWxlcywKLSAgYW5kIGluY2x1ZGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgVW5paGFuLnR4dCBmaWxlLgotCi0tIElzc3VlICM3MDE5OiBSYWlzZSBWYWx1ZUVycm9yIHdoZW4gdW5tYXJzaGFsbGluZyBiYWQgbG9uZyBkYXRhLCBpbnN0ZWFkIG9mCi0gIHByb2R1Y2luZyBpbnRlcm5hbGx5IGluY29uc2lzdGVudCBQeXRob24gbG9uZ3MuCi0KLS0gSXNzdWUgIzY5OTA6IEZpeCB0aHJlYWRpbmcubG9jYWwgc3ViY2xhc3NlcyBsZWF2aW5nIG9sZCBzdGF0ZSBhcm91bmQgYWZ0ZXIgYQotICByZWZlcmVuY2UgY3ljbGUgR0Mgd2hpY2ggY291bGQgYmUgcmVjeWNsZWQgYnkgbmV3IGxvY2Fscy4KLQotLSBJc3N1ZSAjNTQ2MDogRml4IGFuIGFtYmlndWl0eSBpbiB0aGUgZ3JhbW1hci4KLQotLSBJc3N1ZSAjMTc2NjMwNDogSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBtZW1iZXJzaGlwIHRlc3RzIG9uIHJhbmdlIG9iamVjdHMuCi0KLS0gSXNzdWUgIzY3MTM6IEltcHJvdmUgcGVyZm9ybWFuY2Ugb2YgaW50ZWdlciAtPiBzdHJpbmcgY29udmVyc2lvbnMuCi0KLS0gSXNzdWUgIzY4NDY6IEZpeCBidWcgd2hlcmUgYnl0ZWFycmF5LnBvcCgpIHJldHVybnMgbmVnYXRpdmUgaW50ZWdlcnMuCi0KLS0gSXNzdWUgIzY3NTA6IEEgdGV4dCBmaWxlIG9wZW5lZCB3aXRoIGlvLm9wZW4oKSBjb3VsZCBkdXBsaWNhdGUgaXRzIG91dHB1dCB3aGVuCi0gIHdyaXRpbmcgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIGF0IHRoZSBzYW1lIHRpbWUuCi0KLS0gSXNzdWUgIzY3MDc6IGRpcigpIG9uIGFuIHVuaW5pdGlhbGl6ZWQgbW9kdWxlIGNhdXNlZCBhIGNyYXNoLgotCi0tIElzc3VlICM2NTQwOiBGaXhlZCBjcmFzaCBmb3IgYnl0ZWFycmF5LnRyYW5zbGF0ZSgpIHdpdGggaW52YWxpZCBwYXJhbWV0ZXJzLgotCi0tIElzc3VlICM2NTczOiBzZXQudW5pb24oKSBzdG9wcGVkIHByb2Nlc3NpbmcgaW5wdXRzIGlmIGFuIGluc3RhbmNlIG9mIHNlbGYKLSAgb2NjdXJyZWQgaW4gdGhlIGFyZ3VtZW50IGNoYWluLgotCi0tIElzc3VlICM2MDcwOiBPbiBwb3NpeCBwbGF0Zm9ybXMgaW1wb3J0IG5vIGxvbmdlciBjb3BpZXMgdGhlIGV4ZWN1dGUgYml0IGZyb20KLSAgdGhlIC5weSBmaWxlIHRvIHRoZSAucHljIGZpbGUgaWYgaXQgaXMgc2V0LgotCi0tIElzc3VlICMxNjE2OTc5OiBBZGRlZCB0aGUgY3A3MjAgKEFyYWJpYyBET1MpIGVuY29kaW5nLgotCi0tIElzc3VlICM2NDI4OiBTaW5jZSBQeXRob24gMy4wLCB0aGUgX19ib29sX18gbWV0aG9kIG11c3QgcmV0dXJuIGEgYm9vbCBvYmplY3QsCi0gIGFuZCBub3QgYW4gaW50LiAgRml4IHRoZSBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2UsIGFuZCB0aGUgZG9jdW1lbnRhdGlvbi4KLQotLSBUaGUgZGVwcmVjYXRlZCBQeUNPYmplY3QgaGFzIGJlZW4gcmVtb3ZlZC4KLQotLSBJc3N1ZSAjNjM0NzogSW5jbHVkZSBpbnR0eXBlcy5oIGFzIHdlbGwgYXMgc3RkaW50LmggaW4gcHlwb3J0LmguICBUaGlzIGZpeGVzIGEKLSAgYnVpbGQgZmFpbHVyZSBvbiBIUC1VWDogaW50MzJfdCBhbmQgdWludDMyX3QgYXJlIGRlZmluZWQgaW4gaW50dHlwZXMuaCBpbnN0ZWFkCi0gIG9mIHN0ZGludC5oIG9uIHRoYXQgcGxhdGZvcm0uCi0KLS0gSXNzdWUgIzYzNzM6IEZpeGVkIGEgU3lzdGVtRXJyb3Igd2hlbiBlbmNvZGluZyB3aXRoIHRoZSBsYXRpbi0xIGNvZGVjIGFuZCB0aGUKLSAgJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IgaGFuZGxlciwgYSBzdHJpbmcgd2hpY2ggY29udGFpbnMgdW5wYWlyZWQgc3Vycm9nYXRlcy4KLQotLSBJc3N1ZSAjNDg1NjogUmVtb3ZlIGNoZWNrcyBmb3Igd2luIE5ULgotCi0tIElzc3VlICM2Njg3OiBQeUJ5dGVzX0Zyb21PYmplY3QoKSBubyBsb25nZXIgYWNjZXB0cyBhbiBpbnRlZ2VyIGFzIGl0cyBhcmd1bWVudAotICB0byBjb25zdHJ1Y3QgYSBudWxsLWluaXRpYWxpemVkIGJ5dGVzIG9iamVjdC4KLQotLSBJc3N1ZSAjMTAyMzI5MDogQWRkIGZyb21fYnl0ZXMoKSBhbmQgdG9fYnl0ZXMoKSBtZXRob2RzIHRvIGludGVnZXJzLiAgVGhlc2UKLSAgbWV0aG9kcyBhbGxvdyB0aGUgY29udmVyc2lvbiBvZiBpbnRlZ2VycyB0byBieXRlcywgYW5kIHZpY2UtdmVyc2EuCi0KLS0gSXNzdWUgIzczODI6IEZpeCBidWcgaW4gYnl0ZXMuX19nZXRuZXdhcmdzX18gdGhhdCBwcmV2ZW50ZWQgYnl0ZXMgaW5zdGFuY2VzCi0gIGZyb20gYmVpbmcgY29waWVkIHdpdGggY29weS5jb3B5KCksIGFuZCBieXRlcyBzdWJjbGFzc2VzIGZyb20gYmVpbmcgcGlja2xlZAotICBwcm9wZXJseS4KLQotLSBDb2RlIG9iamVjdHMgbm93IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzLgotCi0tIElzc3VlICM3MDcyOiBpc3NwYWNlKDB4YTApIGlzIHRydWUgb24gTWFjIE9TIFguCi0KLS0gSXNzdWUgIzgwODQ6IFBFUCAzNzAgbm93IGNvbmZvcm1zIHRvIHN5c3RlbSBjb252ZW50aW9ucyBmb3IgZnJhbWV3b3JrIGJ1aWxkcwotICBvbiBNYWNPUyBYLiBUaGF0IGlzLCAicHl0aG9uIHNldHVwLnB5IGluc3RhbGwgLS11c2VyIiB3aWxsIGluc3RhbGwgaW50bwotICAifi9MaWJyYXJ5L1B5dGhvbi8yLjciIGluc3RlYWQgb2YgIn4vLmxvY2FsIi4KLQotQy1BUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzI0NDM6IEEgbmV3IG1hY3JvLCBgUHlfVkFfQ09QWWAsIGNvcGllcyB0aGUgc3RhdGUgb2YgdGhlCi0gIHZhcmlhYmxlIGFyZ3VtZW50IGxpc3QuICBgUHlfVkFfQ09QWWAgaXMgZXF1aXZhbGVudCB0byBDOTkKLSAgYHZhX2NvcHlgLCBidXQgYXZhaWxhYmxlIG9uIGFsbCBweXRob24gcGxhdGZvcm1zLgotCi0tIFB5U2xpY2VfR2V0SW5kaWNlc0V4IG5vdyBjbGlwcyB0aGUgc3RlcCB0byBbLVBZX1NTSVpFX1RfTUFYLCBQWV9TU0laRV9UX01BWF0KLSAgaW5zdGVhZCBvZiBbLVBZX1NTSVpFX1RfTUFYLTEsIFBZX1NTSVpFX1RfTUFYXS4gIFRoaXMgbWFrZXMgaXQgc2FmZSB0byBkbwotICAic3RlcCA9IC1zdGVwIiB3aGVuIHJldmVyc2luZyBhIHNsaWNlLgotCi0tIElzc3VlICM1NzUzOiBBIG5ldyBDIEFQSSBmdW5jdGlvbiwgYFB5U3lzX1NldEFyZ3ZFeGAsIGFsbG93cyBlbWJlZGRlcnMgb2YgdGhlCi0gIGludGVycHJldGVyIHRvIHNldCBzeXMuYXJndiB3aXRob3V0IGFsc28gbW9kaWZ5aW5nIHN5cy5wYXRoLiAgVGhpcyBoZWxwcyBmaXgKLSAgYENWRS0yMDA4LTU5ODMKLSAgPGh0dHA6Ly9jdmUubWl0cmUub3JnL2NnaS1iaW4vY3ZlbmFtZS5jZ2k/bmFtZT1DVkUtMjAwOC01OTgzPmBfLgotCi0tIEFkZCBQeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMsIHdoaWNoIGNoZWNrcyBpZiBhbGwga2V5d29yZCBhcmd1bWVudHMgYXJlCi0gIHN0cmluZ3MgaW4gYW4gZWZmaWNpZW50IG1hbm5lci4KLQotLSBJc3N1ZSAjODI3NjogUHlFdmFsX0NhbGxPYmplY3QoKSBpcyBub3cgb25seSBhdmFpbGFibGUgaW4gbWFjcm8gZm9ybS4gIFRoZQotICBmdW5jdGlvbiBkZWNsYXJhdGlvbiwgd2hpY2ggd2FzIGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIGlzCi0gIG5vdyByZW1vdmVkICh0aGUgbWFjcm8gd2FzIGludHJvZHVjZWQgaW4gMTk5NyEpLgotCi0tIElzc3VlICM3NzY3OiBOZXcgZnVuY3Rpb24gUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyBhZGRlZCwgYW5hbG9nb3VzIHRvCi0gIFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdy4KLQotLSBNYWtlIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nIHJldHVybiBub3QgZXF1YWwgaWYgdGhlIFB5dGhvbiBzdHJpbmcKLSAgaGFzICdcMCcgYXQgdGhlIGVuZC4KLQotLSBJc3N1ZSAjNTA4MDogVGhlIGFyZ3VtZW50IHBhcnNpbmcgZnVuY3Rpb25zIFB5QXJnX1BhcnNlVHVwbGUsCi0gIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcywgUHlBcmdfVmFQYXJzZSwgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMgYW5kCi0gIFB5QXJnX1BhcnNlIG5vdyByYWlzZSBhIERlcHJlY2F0aW9uV2FybmluZyBmb3IgZmxvYXQgYXJndW1lbnRzIHBhc3NlZCB3aXRoIHRoZQotICAnTCcgZm9ybWF0IGNvZGUuICBUaGlzIHdpbGwgYmVjb21lIGEgVHlwZUVycm9yIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUHl0aG9uLAotICB0byBtYXRjaCB0aGUgYmVoYXZpb3VyIG9mIHRoZSBvdGhlciBpbnRlZ2VyIGZvcm1hdCBjb2Rlcy4KLQotLSBJc3N1ZSAjNzAzMzogRnVuY3Rpb24gYGBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jKClgYCBhZGRlZC4KLQotLSBJc3N1ZSAjNzQxNDogJ0MnIGNvZGUgd2Fzbid0IGJlaW5nIHNraXBwZWQgcHJvcGVybHkgKGZvciBrZXl3b3JkIGFyZ3VtZW50cykgaW4KLSAgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzLgotCi0tIElzc3VlICM3MjI4OiBBZGQgJyVsbGQnIGFuZCAnJWxsdScgc3VwcG9ydCB0byBQeVN0cmluZ19Gcm9tRm9ybWF0KFYpIGFuZAotICBQeUVycl9Gb3JtYXQsIG9uIG1hY2hpbmVzIHdpdGggSEFWRV9MT05HX0xPTkcgZGVmaW5lZC4KLQotLSBJc3N1ZSAjNjE1MTogTWFkZSBQeURlc2NyX0NPTU1PTiBjb25mb3JtIHRvIHN0YW5kYXJkIEMgKGxpa2UgUHlPYmplY3RfSEVBRCBpbgotICBQRVAgMzEyMykuICBUaGUgUHlEZXNjcl9UWVBFIGFuZCBQeURlc2NyX05BTUUgbWFjcm9zIHNob3VsZCBiZSBzaG91bGQgdXNlZCBmb3IKLSAgYWNjZXNzaW5nIHRoZSBkX3R5cGUgYW5kIGRfbmFtZSBtZW1iZXJzIG9mIHN0cnVjdHVyZXMgdXNpbmcgUHlEZXNjcl9DT01NT04uCi0KLS0gSXNzdWUgIzY0MDU6IFJlbW92ZSBkdXBsaWNhdGUgdHlwZSBkZWNsYXJhdGlvbnMgaW4gZGVzY3JvYmplY3QuaC4KLQotLSBUaGUgY29kZSBmbGFncyBmb3Igb2xkIF9fZnV0dXJlX18gZmVhdHVyZXMgYXJlIG5vdyBhdmFpbGFibGUgYWdhaW4uCi0KLS0gSXNzdWUgIzU5NTQ6IEFkZCBhIFB5RnJhbWVfR2V0TGluZU51bWJlcigpIGZ1bmN0aW9uIHRvIHJlcGxhY2UgbW9zdCB1c2VzIG9mCi0gIFB5Q29kZV9BZGRyMkxpbmUoKS4KLQotLSBJc3N1ZSAjNTk1OTogQWRkIGEgUHlDb2RlX05ld0VtcHR5KCkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IGVtcHR5IGNvZGUKLSAgb2JqZWN0IGF0IGEgc3BlY2lmaWVkIGZpbGUsIGZ1bmN0aW9uLCBhbmQgbGluZSBudW1iZXIuCi0KLS0gSXNzdWUgIzE0MTk2NTI6IENoYW5nZSB0aGUgZmlyc3QgYXJndW1lbnQgdG8gUHlJbXBvcnRfQXBwZW5kSW5pdHRhYigpIHRvCi0gIGBgY29uc3QgY2hhciAqYGAgYXMgdGhlIHN0cmluZyBpcyBzdG9yZWQgYmV5b25kIHRoZSBjYWxsLgotCi0tIElzc3VlICMyNDIyOiBXaGVuIGNvbXBpbGVkIHdpdGggdGhlIGBgLS13aXRoLXZhbGdyaW5kYGAgb3B0aW9uLCB0aGUgcHltYWxsb2MKLSAgYWxsb2NhdG9yIHdpbGwgYmUgYXV0b21hdGljYWxseSBkaXNhYmxlZCB3aGVuIHJ1bm5pbmcgdW5kZXIgVmFsZ3JpbmQuICBUaGlzCi0gIGdpdmVzIGltcHJvdmVkIG1lbW9yeSBsZWFrIGRldGVjdGlvbiB3aGVuIHJ1bm5pbmcgdW5kZXIgVmFsZ3JpbmQsIHdoaWxlIHRha2luZwotICBhZHZhbnRhZ2Ugb2YgcHltYWxsb2MgYXQgb3RoZXIgdGltZXMuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJbiBwZGIsIHdoZW4gQ3RybC1DIGlzIGVudGVyZWQgd2hpbGUgZGVmaW5pbmcgY29tbWFuZHMgZm9yIGEgYnJlYWtwb2ludCwgdGhlCi0gIG9sZCBjb21tYW5kcyBhcmUgcmVzdG9yZWQuCi0KLS0gRm9yIHRyYWNlYmFjayBkZWJ1Z2dpbmcsIHRoZSBwZGIgbGlzdGluZyBub3cgYWxzbyBzaG93cyB0aGUgbG9jYXRpb25zIHdoZXJlCi0gIHRoZSBleGNlcHRpb24gd2FzIG9yaWdpbmFsbHkgKHJlKXJhaXNlZCwgaWYgaXQgZGlmZmVycyBmcm9tIHRoZSBsYXN0IGxpbmUKLSAgZXhlY3V0ZWQgKGUuZy4gaW4gY2FzZSBvZiBmaW5hbGx5IGNsYXVzZXMpLgotCi0tIFRoZSBwZGIgY29tbWFuZCAic291cmNlIiBoYXMgYmVlbiBhZGRlZC4gIEl0IGRpc3BsYXlzIHRoZSBzb3VyY2UgY29kZSBmb3IgYQotICBnaXZlbiBvYmplY3QsIGlmIHBvc3NpYmxlLgotCi0tIFRoZSBwZGIgY29tbWFuZCAibG9uZ2xpc3QiIGhhcyBiZWVuIGFkZGVkLiAgSXQgZGlzcGxheXMgdGhlIHdob2xlIHNvdXJjZSBjb2RlCi0gIGZvciB0aGUgY3VycmVudCBmdW5jdGlvbi4KLQotLSBJc3N1ZSAjMTUwMzUwMjogTWFrZSBwZGIuUGRiIGVhc2llciB0byBzdWJjbGFzcyBieSBwdXR0aW5nIG1lc3NhZ2UgYW5kIGVycm9yCi0gIG91dHB1dCBpbnRvIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzgwOTg4NzogTWFrZSB0aGUgb3V0cHV0IG9mIHBkYidzIGJyZWFrcG9pbnQgZGVsZXRpb25zIG1vcmUgY29uc2lzdGVudDsKLSAgZW1pdCBhIG1lc3NhZ2Ugd2hlbiBhIGJyZWFrcG9pbnQgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KLQotLSBJc3N1ZSAjNTI5NDogRml4IHRoZSBiZWhhdmlvciBvZiBwZGIncyAiY29udGludWUiIGNvbW1hbmQgd2hlbiBjYWxsZWQgaW4gdGhlCi0gIHRvcC1sZXZlbCBkZWJ1Z2dlZCBmcmFtZS4KLQotLSBJc3N1ZSAjNTcyNzogUmVzdG9yZSB0aGUgYWJpbGl0eSB0byB1c2UgcmVhZGxpbmUgd2hlbiBjYWxsaW5nIGludG8gcGRiIGluCi0gIGRvY3Rlc3RzLgotCi0tIElzc3VlICM2NzE5OiBJbiBwZGIsIGRvIG5vdCBzdG9wIHNvbWV3aGVyZSBpbiB0aGUgZW5jb2RpbmdzIG1hY2hpbmVyeSBpZiB0aGUKLSAgc291cmNlIGZpbGUgdG8gYmUgZGVidWdnZWQgaXMgaW4gYSBub24tYnVpbHRpbiBlbmNvZGluZy4KLQotLSBJc3N1ZSAjODA0ODogUHJldmVudCBkb2N0ZXN0cyBmcm9tIGZhaWxpbmcgd2hlbiBzeXMuZGlzcGxheWhvb2sgaGFzIGJlZW4KLSAgcmVhc3NpZ25lZC4KLQotLSBJc3N1ZSAjODAxNTogSW4gcGRiLCBkbyBub3QgY3Jhc2ggd2hlbiBhbiBlbXB0eSBsaW5lIGlzIGVudGVyZWQgYXMgYQotICBicmVha3BvaW50IGNvbW1hbmQuCi0KLS0gSW4gcGRiLCBhbGxvdyBnaXZpbmcgYSBsaW5lIG51bWJlciB0byB0aGUgInVudGlsIiBjb21tYW5kLgotCi0tIElzc3VlICMxNDM3MDUxOiBGb3IgcGRiLCBhbGxvdyAiY29udGludWUiIGFuZCByZWxhdGVkIGNvbW1hbmRzIGluIC5wZGJyYwotICBmaWxlcy4gIEFsc28sIGFkZCBhIGNvbW1hbmQtbGluZSBvcHRpb24gIi1jIiB0aGF0IHJ1bnMgYSBjb21tYW5kIGFzIGlmIGdpdmVuCi0gIGluIC5wZGJyYy4KLQotLSBJc3N1ZSAjNDE3OTogSW4gcGRiLCBhbGxvdyAibGlzdCAuIiBhcyBhIGNvbW1hbmQgdG8gcmV0dXJuIHRvIHRoZSBjdXJyZW50bHkKLSAgZGVidWdnZWQgbGluZS4KLQotLSBJc3N1ZSAjNDEwODogSW4gdXJsbGliLnJvYm90cGFyc2VyLCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgYGBVc2VyLWFnZW50OiAqYGAKLSAgZW50cmllcywgY29uc2lkZXIgdGhlIGZpcnN0IG9uZS4KLQotLSBJc3N1ZSAjNjYzMDogQWxsb3cgY3VzdG9taXppbmcgcmVnZXggZmxhZ3Mgd2hlbiBzdWJjbGFzc2luZyB0aGUKLSAgc3RyaW5nLlRlbXBsYXRlIGNsYXNzLgotCi0tIElzc3VlICM5NDExOiBBbGxvdyBzcGVjaWZ5aW5nIGFuIGVuY29kaW5nIGZvciBjb25maWcgZmlsZXMgaW4gdGhlIGNvbmZpZ3BhcnNlcgotICBtb2R1bGUuCi0KLS0gSXNzdWUgIzE2ODI5NDI6IEltcHJvdmVtZW50cyB0byBjb25maWdwYXJzZXI6IHN1cHBvcnQgYWx0ZXJuYXRlIGRlbGltaXRlcnMsCi0gIGFsdGVybmF0ZSBjb21tZW50IHByZWZpeGVzIGFuZCBlbXB0eSBsaW5lcyBpbiB2YWx1ZXMuCi0KLS0gSXNzdWUgIzkzNTQ6IFByb3ZpZGUgZ2V0c29ja29wdCgpIGluIGFzeW5jb3JlJ3MgZmlsZV93cmFwcGVyLgotCi0tIElzc3VlICM4OTY2OiBjdHlwZXM6IFJlbW92ZSBpbXBsaWNpdCBieXRlcy11bmljb2RlIGNvbnZlcnNpb24uCi0KLS0gSXNzdWUgIzkzNzg6IHB5dGhvbiAtbSBwaWNrbGUgPHBpY2tsZSBmaWxlPiB3aWxsIG5vdyBsb2FkIGFuZCBkaXNwbGF5IHRoZQotICBmaXJzdCBvYmplY3QgaW4gdGhlIHBpY2tsZSBmaWxlLgotCi0tIElzc3VlICM0NzcwOiBSZXN0cmljdCBiaW5hc2NpaSBtb2R1bGUgdG8gYWNjZXB0IG9ubHkgYnl0ZXMgKGFzIHNwZWNpZmllZCkuCi0gIEFuZCBmaXggdGhlIGVtYWlsIHBhY2thZ2UgdG8gZW5jb2RlIHRvIEFTQ0lJIGluc3RlYWQgb2YgYGByYXctdW5pY29kZS1lc2NhcGVgYAotICBiZWZvcmUgQVNDSUktdG8tYmluYXJ5IGRlY29kaW5nLgotCi0tIElzc3VlICM5Mzg0OiBgYHB5dGhvbiAtbSB0a2ludGVyYGAgd2lsbCBub3cgZGlzcGxheSBhIHNpbXBsZSBkZW1vIGFwcGxldC4KLQotLSBUaGUgZGVmYXVsdCBzaXplIG9mIHRoZSByZSBtb2R1bGUncyBjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb24gY2FjaGUgaGFzIGJlZW4KLSAgaW5jcmVhc2VkIGZyb20gMTAwIHRvIDUwMCBhbmQgdGhlIGNhY2hlIHJlcGxhY2VtZW50IHBvbGljeSBoYXMgY2hhbmdlZCBmcm9tCi0gIHNpbXBseSBjbGVhcmluZyB0aGUgZW50aXJlIGNhY2hlIG9uIG92ZXJmbG93IHRvIGZvcmdldHRpbmcgdGhlIGxlYXN0IHJlY2VudGx5Ci0gIHVzZWQgY2FjaGVkIGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbnMuICBUaGlzIGlzIGEgcGVyZm9ybWFuY2Ugd2luIGZvcgotICBhcHBsaWNhdGlvbnMgdGhhdCB1c2UgYSBsb3Qgb2YgcmVndWxhciBleHByZXNzaW9ucyBhbmQgbGltaXRzIHRoZSBpbXBhY3Qgb2YKLSAgdGhlIHBlcmZvcm1hbmNlIGhpdCBhbnl0aW1lIHRoZSBjYWNoZSBpcyBleGNlZWRlZC4KLQotLSBJc3N1ZSAjNzExMzogU3BlZWQgdXAgbG9hZGluZyBpbiBjb25maWdwYXJzZXIuIFBhdGNoIGJ5IMWBdWthc3ogTGFuZ2EuCi0KLS0gSXNzdWUgIzkwMzI6IFhNTC1SUEMgY2xpZW50IHJldHJpZXMgdGhlIHJlcXVlc3Qgb24gRVBJUEUgZXJyb3IuICBUaGUgRVBJUEUKLSAgZXJyb3Igb2NjdXJzIHdoZW4gdGhlIHNlcnZlciBjbG9zZXMgdGhlIHNvY2tldCBhbmQgdGhlIGNsaWVudCBzZW5kcyBhIGJpZwotICBYTUwtUlBDIHJlcXVlc3QuCi0KLS0gSXNzdWUgIzQ2Mjk6IGdldG9wdCByYWlzZXMgYW4gZXJyb3IgaWYgYW4gYXJndW1lbnQgZW5kcyB3aXRoICI9Iiwgd2hlcmVhcwotICBnZXRvcHQgZG9lc24ndCBhY2NlcHQgYSB2YWx1ZSAoZWcuIC0taGVscD0gaXMgcmVqZWN0ZWQgaWYgZ2V0b3B0IHVzZXMKLSAgWydoZWxwPSddIGxvbmcgb3B0aW9ucykuCi0KLS0gSXNzdWUgIzc5ODk6IEFkZGVkIHB1cmUgcHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIHRoZSBgZGF0ZXRpbWVgIG1vZHVsZS4gIFRoZSBDCi0gIG1vZHVsZSBpcyByZW5hbWVkIHRvIGBfZGF0ZXRpbWVgIGFuZCBpZiBhdmFpbGFibGUsIG92ZXJyaWRlcyBhbGwgY2xhc3NlcwotICBkZWZpbmVkIGluIGRhdGV0aW1lIHdpdGggZmFzdCBDIGltcGVtZW50YXRpb24uICBQeXRob24gaW1wbGVtZW50YXRpb24gaXMgYmFzZWQKLSAgb24gdGhlIG9yaWdpbmFsIHB5dGhvbiBwcm90b3R5cGUgZm9yIHRoZSBkYXRldGltZSBtb2R1bGUgYnkgVGltIFBldGVycyB3aXRoCi0gIG1pbm9yIG1vZGlmaWNhdGlvbnMgYnkgdGhlIFB5UHkgcHJvamVjdC4gIFRoZSB0ZXN0IHN1aXRlIG5vdyB0ZXN0cyBgZGF0ZXRpbWVgCi0gIG1vZHVsZSB3aXRoIGFuZCB3aXRob3V0IGBfZGF0ZXRpbWVgIGFjY2VsZXJhdGlvbiB1c2luZyB0aGUgc2FtZSB0ZXN0IGNhc2VzLgotCi0tIElzc3VlICM3ODk1OiBwbGF0Zm9ybS5tYWNfdmVyKCkgbm8gbG9uZ2VyIGNyYXNoZXMgYWZ0ZXIgY2FsbGluZyBvcy5mb3JrKCkuCi0KLS0gSXNzdWUgIzkzMjM6IEZpeGVkIGEgYnVnIGluIHRyYWNlLnB5IHRoYXQgcmVzdWx0ZWQgaW4gbG9vc2luZyB0aGUgbmFtZSBvZiB0aGUKLSAgc2NyaXB0IGJlaW5nIHRyYWNlZC4gIFBhdGNoIGJ5IEVsaSBCZW5kZXJza3kuCi0KLS0gSXNzdWUgIzkyODI6IEZpeGVkIC0tbGlzdGZ1bmNzIG9wdGlvbiBvZiB0cmFjZS5weS4gIFRoYW5rcyBFbGkgQmVuZGVyc2t5IGZvcgotICB0aGUgcGF0Y2guCi0KLS0gSXNzdWUgIzM3MDQ6IGh0dHAuY29va2llamFyIHdhcyBub3QgcHJvcGVybHkgaGFuZGxpbmcgVVJMcyB3aXRoIGEgLyBpbiB0aGUKLSAgcGFyYW1ldGVycy4KLQotLSBJc3N1ZSAjOTI2ODogYGBwaWNrbGV0b29scy5kaXMoKWBgIG5vdyBoYXMgYW4gb3B0aW9uYWwgKmFubm90YXRlKiBhcmd1bWVudAotICB3aGljaCBjb250cm9scyBwcmludGluZyBvZiBvcGNvZGUgZGVzY3JpcHRpb25zIGluIGBgZGlzKClgYCBvdXRwdXQuCi0KLS0gSXNzdWUgIzE1NTU1NzA6IGVtYWlsIG5vIGxvbmdlciBpbnNlcnRzIGV4dHJhIGJsYW5rIGxpbmVzIHdoZW4gYSBcclxuIGNvbWJvCi0gIGNyb3NzZXMgYW4gODE5MiBieXRlIGJvdW5kYXJ5LgotCi0tIElzc3VlICM5MjQzOiBGaXggc25kaGRyIG1vZHVsZSBhbmQgYWRkIHVuaXQgdGVzdHMsIGNvbnRyaWJ1dGVkIGJ5IEphbWVzIExlZS4KLQotLSBgYGFzdC5saXRlcmFsX2V2YWwoKWBgIG5vdyBhbGxvd3MgYnl0ZSBsaXRlcmFscy4KLQotLSBJc3N1ZSAjOTEzNzogRml4IGlzc3VlIGluIE11dGFibGVNYXBwaW5nLnVwZGF0ZSwgd2hpY2ggaW5jb3JyZWN0bHkgdHJlYXRlZAotICBrZXl3b3JkIGFyZ3VtZW50cyBjYWxsZWQgJ3NlbGYnIG9yICdvdGhlcicgc3BlY2lhbGx5LgotCi0tIGBgYXN0LmxpdGVyYWxfZXZhbCgpYGAgbm93IGFsbG93cyBzZXQgbGl0ZXJhbHMuCi0KLS0gSXNzdWUgIzkxNjQ6IEVuc3VyZSB0aGF0IHN5c2NvbmZpZyBoYW5kbGVzIGR1cGxpY2F0ZSAtYXJjaCBmbGFncyBpbiBDRkxBR1MuCi0KLS0gSXNzdWUgIzc2NDY6IFRoZSBmbm1hdGNoIHBhdHRlcm4gY2FjaGUgbm8gbG9uZ2VyIGdyb3dzIHdpdGhvdXQgYm91bmQuCi0KLS0gSXNzdWUgIzkxMzY6IEZpeCAnZGljdGlvbmFyeSBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbicgUnVudGltZUVycm9yCi0gIHByb2R1Y2VkIHdoZW4gcHJvZmlsaW5nIHRoZSBkZWNpbWFsIG1vZHVsZS4gIFRoaXMgd2FzIGR1ZSB0byBhIGRhbmdlcm91cwotICBpdGVyYXRpb24gb3ZlciAnbG9jYWxzKCknIGluIENvbnRleHQuX19pbml0X18uCi0KLS0gRml4IGV4dHJlbWUgc3BlZWQgaXNzdWUgaW4gRGVjaW1hbC5wb3cgd2hlbiB0aGUgYmFzZSBpcyBhbiBleGFjdCBwb3dlciBvZiAxMAotICBhbmQgdGhlIGV4cG9uZW50IGlzIHRpbnkgKGZvciBleGFtcGxlLCBgYERlY2ltYWwoMTApICoqCi0gIERlY2ltYWwoJzFlLTk5OTk5OTk5OScpYGApLgotCi0tIElzc3VlICM5MTg2OiBGaXggbWF0aC5sb2cxcCgtMS4wKSB0byByYWlzZSBWYWx1ZUVycm9yLCBub3QgT3ZlcmZsb3dFcnJvci4KLQotLSBJc3N1ZSAjOTEzMDogRml4IHZhbGlkYXRpb24gb2YgcmVsYXRpdmUgaW1wb3J0cyBpbiBwYXJzZXIgbW9kdWxlLgotCi0tIElzc3VlICM5MTI4OiBGaXggdmFsaWRhdGlvbiBvZiBjbGFzcyBkZWNvcmF0b3JzIGluIHBhcnNlciBtb2R1bGUuCi0KLS0gSXNzdWUgIzkwOTQ6IHB5dGhvbiAtbSBwaWNrbGV0b29scyB3aWxsIG5vdyBkaXNhc3NlbWJsZSBwaWNrbGUgZmlsZXMgbGlzdGVkIGluCi0gIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzLiAgU2VlIG91dHB1dCBvZiBweXRob24gLW0gcGlja2xldG9vbHMgLWggZm9yIG1vcmUKLSAgZGV0YWlscy4KLQotLSBJc3N1ZSAjNTQ2ODogdXJsZW5jb2RlIHRvIGhhbmRsZSBieXRlcyB0eXBlIGFuZCBvdGhlciBlbmNvZGluZ3MgaW4gaXRzIHF1ZXJ5Ci0gIHBhcmFtZXRlci4gUGF0Y2ggYnkgRGFuIE1haG4uCi0KLS0gSXNzdWUgIzc2NzM6IEZpeCBzZWN1cml0eSB2dWxuZXJhYmlsaXR5IChDVkUtMjAxMC0yMDg5KSBpbiB0aGUgYXVkaW9vcCBtb2R1bGUsCi0gIGVuc3VyZSB0aGF0IHRoZSBpbnB1dCBzdHJpbmcgbGVuZ3RoIGlzIGEgbXVsdGlwbGUgb2YgdGhlIGZyYW1lIHNpemUuCi0KLS0gSXNzdWUgIzY1MDc6IEFjY2VwdCBzb3VyY2Ugc3RyaW5ncyBpbiBkaXMuZGlzKCkuICBPcmlnaW5hbCBwYXRjaCBieSBEYW5pZWwKLSAgVXJiYW4uCi0KLS0gSXNzdWUgIzc4Mjk6IENsZWFybHkgZG9jdW1lbnQgdGhhdCB0aGUgZGlzIG1vZHVsZSBpcyBleHBvc2luZyBhbgotICBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgdGhhdCBpcyBub3Qgc3RhYmxlIGJldHdlZW4gUHl0aG9uIFZNcyBvciByZWxlYXNlcy4KLQotLSBJc3N1ZSAjNjU4OTogY2xlYW51cCBhc3luY29yZS5zb2NrZXRfbWFwIGluIGNhc2Ugc210cGQuU01UUFNlcnZlciBjb25zdHJ1Y3RvcgotICByYWlzZXMgYW4gZXhjZXB0aW9uLgotCi0tIElzc3VlICM5MTEwOiBBZGRpdGlvbiBvZiBDb250ZXh0RGVjb3JhdG9yIHRvIGNvbnRleHRsaWIsIGZvciBjcmVhdGluZyBBUElzCi0gIHRoYXQgYWN0IGFzIGJvdGggY29udGV4dCBtYW5hZ2VycyBhbmQgZGVjb3JhdG9ycy4gY29udGV4dG1hbmFnZXIgY2hhbmdlcyB0bwotICB1c2UgQ29udGV4dERlY29yYXRvci4KLQotLSBJbXBsZW1lbnQgaW1wb3J0bGliLmFiYy5Tb3VyY2VMb2FkZXIgYW5kIGRlcHJlY2F0ZSBQeUxvYWRlciBhbmQgUHlQeWNMb2FkZXIKLSAgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuNC4KLQotLSBJc3N1ZSAjOTA2NDogcGRiJ3MgInVwIiBhbmQgImRvd24iIGNvbW1hbmRzIG5vdyBhY2NlcHQgYW4gb3B0aW9uYWwgYXJndW1lbnQKLSAgZ2l2aW5nIHRoZSBudW1iZXIgb2YgZnJhbWVzIHRvIGdvLgotCi0tIElzc3VlICM5MDE4OiBvcy5wYXRoLm5vcm1jYXNlKCkgbm93IHJhaXNlcyBhIFR5cGVFcnJvciBpZiB0aGUgYXJndW1lbnQgaXMgbm90Ci0gIGBgc3RyYGAgb3IgYGBieXRlc2BgLgotCi0tIElzc3VlICM5MDc1OiBJbiB0aGUgc3NsIG1vZHVsZSwgcmVtb3ZlIHRoZSBzZXR0aW5nIG9mIGEgYGBkZWJ1Z2BgIGZsYWcgb24gYW4KLSAgT3BlblNTTCBzdHJ1Y3R1cmUuCi0KLS0gSXNzdWUgIzg2ODI6IFRoZSBzc2wgbW9kdWxlIG5vdyB0ZW1wb3JhcnkgaW5jcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGEKLSAgc29ja2V0IG9iamVjdCBnb3QgdGhyb3VnaCBgYFB5V2Vha3JlZl9HZXRPYmplY3RgYCwgc28gYXMgdG8gYXZvaWQgcG9zc2libGUKLSAgZGVhbGxvY2F0aW9uIHdoaWxlIHRoZSBvYmplY3QgaXMgc3RpbGwgYmVpbmcgdXNlZC4KLQotLSBJc3N1ZSAjMTM2ODM2ODogRmFuY3lVUkxPcGVuZXIgY2xhc3MgY2hhbmdlZCB0byB0aHJvdyBhbiBFeGNlcHRpb24gb24gd3JvbmcKLSAgcGFzc3dvcmQgaW5zdGVhZCBvZiBwcmVzZW50aW5nIGFuIGludGVyYWN0aXZlIHByb21wdC4gIE9sZGVyIGJlaGF2aW9yIGNhbiBiZQotICBvYnRhaW5lZCBieSBwYXNzaW5nIHJldHJ5PVRydWUgdG8gaHR0cF9lcnJvcl94eHggbWV0aG9kcyBvZiBGYW5jeVVSTE9wZW5lci4KLQotLSBJc3N1ZSAjODcyMDogRml4IHJlZ3Jlc3Npb24gY2F1c2VkIGJ5IGZpeCBmb3IgIzQwNTAgYnkgbWFraW5nIGdldHNvdXJjZWZpbGUKLSAgc21hcnQgZW5vdWdoIHRvIGZpbmQgc291cmNlIGZpbGVzIGluIHRoZSBsaW5lY2FjaGUuCi0KLS0gSXNzdWUgIzU2MTA6IGZlZWRwYXJzZXIgbm8gbG9uZ2VyIGVhdHMgZXh0cmEgY2hhcmFjdGVycyBhdCB0aGUgZW5kIG9mIGEgYm9keQotICBwYXJ0IGlmIHRoZSBib2R5IHBhcnQgZW5kcyB3aXRoIGEgYGBcclxuYGAuCi0KLS0gSXNzdWUgIzg5ODY6IG1hdGguZXJmYyB3YXMgaW5jb3JyZWN0bHkgcmFpc2luZyBPdmVyZmxvd0Vycm9yIGZvciB2YWx1ZXMKLSAgYmV0d2VlbiAtMjcuMyBhbmQgLTMwLjAgb24gc29tZSBwbGF0Zm9ybXMuCi0KLS0gSXNzdWUgIzg3ODQ6IFNldCB0YXJmaWxlIGRlZmF1bHQgZW5jb2RpbmcgdG8gJ3V0Zi04JyBvbiBXaW5kb3dzLgotCi0tIElzc3VlICM4OTY2OiBJZiBhIGN0eXBlcyBzdHJ1Y3R1cmUgZmllbGQgaXMgYW4gYXJyYXkgb2YgY19jaGFyLCBjb252ZXJ0IGl0cwotICB2YWx1ZSB0byBieXRlcyBpbnN0ZWFkIG9mIHN0ciAoYXMgZG9uZSBmb3IgY19jaGFyIGFuZCBjX2NoYXJfcCkuCi0KLS0gSXNzdWUgIzgxODg6IENvbXBhcmlzb25zIGJldHdlZW4gRGVjaW1hbCBhbmQgRnJhY3Rpb24gb2JqZWN0cyBhcmUgbm93Ci0gIHBlcm1pdHRlZCwgcmV0dXJuaW5nIGEgcmVzdWx0IGJhc2VkIG9uIHRoZSBleGFjdCBudW1lcmljYWwgdmFsdWVzIG9mIHRoZQotICBvcGVyYW5kcy4gIFRoaXMgYnVpbGRzIG9uIGlzc3VlICMyNTMxLCB3aGljaCBhbGxvd2VkIERlY2ltYWwtdG8tZmxvYXQKLSAgY29tcGFyaXNvbnM7IGFsbCBjb21wYXJpc29ucyBpbnZvbHZpbmcgbnVtZXJpYyB0eXBlcyAoYm9vbCwgaW50LCBmbG9hdCwKLSAgY29tcGxleCwgRGVjaW1hbCwgRnJhY3Rpb24pIHNob3VsZCBub3cgYWN0IGFzIGV4cGVjdGVkLgotCi0tIElzc3VlICM4ODk3OiBGaXggc3VuYXUgbW9kdWxlLCB1c2UgYnl0ZXMgdG8gd3JpdGUgdGhlIGhlYWRlci4gUGF0Y2ggd3JpdHRlbiBieQotICBUaG9tYXMgSm9sbGFucy4KLQotLSBJc3N1ZSAjODg5OTogdGltZS5zdHJ1Y3RfdGltZSBub3cgaGFzIGNsYXNzIGFuZCBhdHRyaWJ1dGUgZG9jc3RyaW5ncy4KLQotLSBJc3N1ZSAjNjQ3MDogRHJvcCBVTkMgcHJlZml4IGluIEZpeFRrLgotCi0tIElzc3VlICM0NzY4OiBiYXNlNjQgZW5jb2RlZCBlbWFpbCBib2R5IHBhcnRzIHdlcmUgaW5jb3JyZWN0bHkgc3RvcmVkIGFzIGJpbmFyeQotICBzdHJpbmdzLiAgVGhleSBhcmUgbm93IGNvcnJlY3RseSBjb252ZXJ0ZWQgdG8gc3RyaW5ncy4KLQotLSBJc3N1ZSAjODgzMzogdGFyZmlsZSBjcmVhdGVkIGhhcmQgbGluayBlbnRyaWVzIHdpdGggYSBzaXplIGZpZWxkICE9IDAgYnkKLSAgbWlzdGFrZS4KLQotLSBDaGFyc2V0LmJvZHlfZW5jb2RlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBiYXNlNjQgZW5jb2RpbmcgYnkgZW5jb2Rpbmcgd2l0aCB0aGUKLSAgb3V0cHV0X2NoYXJzZXQgYmVmb3JlIGNhbGxpbmcgYmFzZTY0bWltZS5lbmNvZGUuICBQYXNzZXMgdGhlIHRlc3RzIGZyb20gMi54Ci0gIGlzc3VlICMxMzY4MjQ3LgotCi0tIElzc3VlICM4ODQ1OiBzcWxpdGUzIENvbm5lY3Rpb24gb2JqZWN0cyBub3cgaGF2ZSBhIHJlYWQtb25seSBpbl90cmFuc2FjdGlvbgotICBhdHRyaWJ1dGUgdGhhdCBpcyBUcnVlIGlmZiB0aGVyZSBhcmUgdW5jb21taXR0ZWQgY2hhbmdlcy4KLQotLSBJc3N1ZSAjMTI4OTExODogZGF0ZXRpbWUudGltZWRlbHRhIG9iamVjdHMgY2FuIG5vdyBiZSBtdWx0aXBsaWVkIGJ5IGZsb2F0IGFuZAotICBkaXZpZGVkIGJ5IGZsb2F0IGFuZCBpbnQgb2JqZWN0cy4gIFJlc3VsdHMgYXJlIHJvdW5kZWQgdG8gdGhlIG5lYXJlc3QgbXVsdGlwbGUKLSAgb2YgdGltZWRlbHRhLnJlc29sdXRpb24gd2l0aCB0aWVzIHJlc29sdmVkIHVzaW5nIHJvdW5kLWhhbGYtdG8tZXZlbiBtZXRob2QuCi0KLS0gSXNzdWUgIzcxNTA6IFJhaXNlIE92ZXJmbG93RXJyb3IgaWYgdGhlIHJlc3VsdCBvZiBhZGRpbmcgb3Igc3VidHJhY3RpbmcKLSAgdGltZWRlbHRhIGZyb20gZGF0ZSBvciBkYXRldGltZSBmYWxscyBvdXRzaWRlIG9mIHRoZSBNSU5ZRUFSOk1BWFlFQVIgcmFuZ2UuCi0KLS0gSXNzdWUgIzg4MDY6IGFkZCBTU0wgY29udGV4dHMgc3VwcG9ydCB0byBmdHBsaWIuCi0KLS0gSXNzdWUgIzQ3Njk6IEZpeCBtYWluKCkgZnVuY3Rpb24gb2YgdGhlIGJhc2U2NCBtb2R1bGUsIHVzZSBzeXMuc3RkaW4uYnVmZmVyCi0gIGFuZCBzeXMuc3Rkb3V0LmJ1ZmZlciAoaW5zdGVhZCBvZiBzeXMuc3RkaW4gYW5kIHN5cy5zdGRvdXQpIHRvIHVzZSB0aGUgYnl0ZXMKLSAgQVBJLgotCi0tIElzc3VlICM4NzcwOiBOb3cgc3lzY29uZmlnIGRpc3BsYXlzIGluZm9ybWF0aW9uIHdoZW4gaXQncyBjYWxsZWQgYXMgYSBzY3JpcHQuCi0gIEluaXRpYWwgaWRlYSBieSBTcmlkaGFyIFJhdG5ha3VtYXIuCi0KLS0gSXNzdWUgIzY2NjI6IEZpeCBwYXJzaW5nIG9mIG1hbGZvcm1hdHRlZCBjaGFycmVmICgmI2JhZDspLCBwYXRjaCB3cml0dGVuIGJ5Ci0gIEZyZWRyaWsgSMOlw6VyZC4KLQotLSBJc3N1ZSAjODU0MDogRGVjaW1hbCBtb2R1bGU6IHJlbmFtZSB0aGUgQ29udGV4dC5fY2xhbXAgYXR0cmlidXRlIHRvCi0gIENvbnRleHQuY2xhbXAgYW5kIG1ha2UgaXQgcHVibGljLiAgVGhpcyBpcyB1c2VmdWwgaW4gY3JlYXRpbmcgY29udGV4dHMgdGhhdAotICBjb3JyZXNwb25kIHRvIHRoZSBkZWNpbWFsIGludGVyY2hhbmdlIGZvcm1hdHMgc3BlY2lmaWVkIGluIElFRUUgNzU0LgotCi0tIElzc3VlICM2MjY4OiBGaXggc2VlaygpIG1ldGhvZCBvZiBjb2RlY3Mub3BlbigpLCBkb24ndCByZWFkIG9yIHdyaXRlIHRoZSBCT00KLSAgdHdpY2UgYWZ0ZXIgc2VlaygwKS4gRml4IGFsc28gcmVzZXQoKSBtZXRob2Qgb2YgY29kZWNzLCBVVEYtMTYsIFVURi0zMiBhbmQKLSAgU3RyZWFtV3JpdGVyIGNsYXNzZXMuCi0KLS0gSXNzdWUgIzM3OTg6IHN5cy5leGl0KG1lc3NhZ2UpIHdyaXRlcyB0aGUgbWVzc2FnZSB0byBzeXMuc3RkZXJyIGZpbGUsIGluc3RlYWQKLSAgb2YgdGhlIEMgZmlsZSBzdGRlcnIsIHRvIHVzZSBzdGRlcnIgZW5jb2RpbmcgYW5kIGVycm9yIGhhbmRsZXIuCi0KLS0gSXNzdWUgIzg3ODI6IEFkZCBhIHRyYWlsaW5nIG5ld2xpbmUgaW4gbGluZWNhY2hlLnVwZGF0ZWNhY2hlIHRvIHRoZSBsYXN0IGxpbmUKLSAgb2YgZmlsZXMgd2l0aG91dCBvbmUuCi0KLS0gSXNzdWUgIzg3Mjk6IFJldHVybiBOb3RJbXBsZW1lbnRlZCBmcm9tIGNvbGxlY3Rpb25zLk1hcHBpbmcuX19lcV9fIHdoZW4KLSAgY29tcGFyaW5nIHRvIGEgbm9uLW1hcHBpbmcuCi0KLS0gSXNzdWUgIzg3NzQ6IHRhYm5hbm55IHVzZXMgdGhlIGVuY29kaW5nIGNvb2tpZSAoI2NvZGluZzouLi4pIHRvIHVzZSB0aGUKLSAgY29ycmVjdCBlbmNvZGluZy4KLQotLSBJc3N1ZSAjNDg3MDogQWRkIGFuIGBvcHRpb25zYCBhdHRyaWJ1dGUgdG8gU1NMIGNvbnRleHRzLCBhcyB3ZWxsIGFzIHNldmVyYWwKLSAgYGBPUF8qYGAgY29uc3RhbnRzIHRvIHRoZSBgc3NsYCBtb2R1bGUuICBUaGlzIGFsbG93cyB0byBzZWxlY3RpdmVseSBkaXNhYmxlCi0gIHByb3RvY29sIHZlcnNpb25zLCB3aGVuIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBgUFJPVE9DT0xfU1NMdjIzYC4KLQotLSBJc3N1ZSAjODc1OTogRml4ZWQgdXNlciBwYXRocyBpbiBzeXNjb25maWcgZm9yIHBvc2l4IGFuZCBvczIgc2NoZW1lcy4KLQotLSBJc3N1ZSAjODY2MzogZGlzdHV0aWxzLmxvZyBlbXVsYXRlcyBiYWNrc2xhc2hyZXBsYWNlIGVycm9yIGhhbmRsZXIuIEZpeAotICBjb21waWxhdGlvbiBpbiBhIG5vbi1BU0NJSSBkaXJlY3RvcnkgaWYgc3Rkb3V0IGVuY29kaW5nIGlzIEFTQ0lJIChlZy4gaWYKLSAgc3Rkb3V0IGlzIG5vdCBhIFRUWSkuCi0KLS0gSXNzdWUgIzg1MTM6IG9zLmdldF9leGVjX3BhdGgoKSBzdXBwb3J0cyBiJ1BBVEgnIGtleSBhbmQgYnl0ZXMgdmFsdWUuCi0gIHN1YnByb2Nlc3MuUG9wZW4oKSBhbmQgb3MuX2V4ZWN2cGUoKSBzdXBwb3J0IGJ5dGVzIHByb2dyYW0gbmFtZS4gQWRkCi0gIG9zLnN1cHBvcnRzX2J5dGVzX2Vudmlyb24gZmxhZzogVHJ1ZSBpZiB0aGUgbmF0aXZlIE9TIHR5cGUgb2YgdGhlIGVudmlyb25tZW50Ci0gIGlzIGJ5dGVzIChlZy4gRmFsc2Ugb24gV2luZG93cykuCi0KLS0gSXNzdWUgIzg2MzM6IHRhcmZpbGUgaXMgbm93IGFibGUgdG8gcmVhZCBhbmQgd3JpdGUgYXJjaGl2ZXMgd2l0aCAicmF3IiBiaW5hcnkKLSAgcGF4IGhlYWRlcnMgYXMgZGVzY3JpYmVkIGluIFBPU0lYLjEtMjAwOC4KLQotLSBJc3N1ZSAjMTI4NTA4NjogU3BlZWQgdXAgdXJsbGliLnBhcnNlIGZ1bmN0aW9uczogcXVvdGUsIHF1b3RlX2Zyb21fYnl0ZXMsCi0gIHVucXVvdGUsIHVucXVvdGVfdG9fYnl0ZXMuCi0KLS0gSXNzdWUgIzg2ODg6IERpc3R1dGlscyBub3cgcmVjYWxjdWxhdGVzIE1BTklGRVNUIGV2ZXJ5dGltZS4KLQotLSBJc3N1ZSAjODQ3Nzogc3NsLlJBTkRfZWdkKCkgYW5kIHNzbC5fdGVzdF9kZWNvZGVfY2VydCgpIHN1cHBvcnQgc3RyIHdpdGgKLSAgc3Vycm9nYXRlcyBhbmQgYnl0ZXMgZm9yIHRoZSBmaWxlbmFtZS4KLQotLSBJc3N1ZSAjODU1MDogQWRkIGZpcnN0IGNsYXNzIGBgU1NMQ29udGV4dGBgIG9iamVjdHMgdG8gdGhlIHNzbCBtb2R1bGUuCi0KLS0gSXNzdWUgIzg2ODE6IE1ha2UgdGhlIHpsaWIgbW9kdWxlJ3MgZXJyb3IgbWVzc2FnZXMgbW9yZSBpbmZvcm1hdGl2ZSB3aGVuIHRoZQotICB6bGliIGl0c2VsZiBkb2Vzbid0IGdpdmUgYW55IGRldGFpbGVkIGV4cGxhbmF0aW9uLgotCi0tIFRoZSBhdWRpb29wIG1vZHVsZSBub3cgc3VwcG9ydHMgc291bmQgZnJhZ21lbnRzIG9mIGxlbmd0aCBncmVhdGVyIHRoYW4gMioqMzEKLSAgYnl0ZXMgb24gNjQtYml0IG1hY2hpbmVzLCBhbmQgaXMgUFlfU1NJWkVfVF9DTEVBTi4KLQotLSBJc3N1ZSAjNDk3MjogQWRkIHN1cHBvcnQgZm9yIHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgdG8gdGhlIGZ0cGxpYi5GVFAKLSAgY2xhc3MuCi0KLS0gSXNzdWUgIzg2NjQ6IEluIHB5X2NvbXBpbGUsIGNyZWF0ZSBfX3B5Y2FjaGVfXyB3aGVuIHRoZSBjb21waWxlZCBwYXRoIGlzCi0gIGdpdmVuLgotCi0tIElzc3VlICM4NTE0OiBBZGQgb3MuZnNlbmNvZGUoKSBmdW5jdGlvbiAoVW5peCBvbmx5KTogZW5jb2RlIGEgc3RyaW5nIHRvIGJ5dGVzCi0gIGZvciB1c2UgaW4gdGhlIGZpbGUgc3lzdGVtLCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3IgdGhlIGNvbW1hbmQgbGluZS4KLQotLSBJc3N1ZSAjODU3MTogRml4IGFuIGludGVybmFsIGVycm9yIHdoZW4gY29tcHJlc3Npbmcgb3IgZGVjb21wcmVzc2luZyBhIGNodW5rCi0gIGxhcmdlciB0aGFuIDFHQiB3aXRoIHRoZSB6bGliIG1vZHVsZSdzIGNvbXByZXNzb3IgYW5kIGRlY29tcHJlc3NvciBvYmplY3RzLgotCi0tIElzc3VlICM4NjAzOiBTdXBwb3J0IGJ5dGVzIGVudmlyb25tZW50YWwgdmFyaWFibGVzIG9uIFVuaXg6IEFkZCBvcy5lbnZpcm9uYgotICBtYXBwaW5nIGFuZCBvcy5nZXRlbnZiKCkgZnVuY3Rpb24uIG9zLnVuc2V0ZW52KCkgZW5jb2RlcyBzdHIgYXJndW1lbnQgdG8gdGhlCi0gIGZpbGUgc3lzdGVtIGVuY29kaW5nIHdpdGggdGhlIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyIChpbnN0ZWFkIG9mCi0gIHV0Zjgvc3RyaWN0KSBhbmQgYWNjZXB0cyBieXRlcy4gcG9zaXguZW52aXJvbiBrZXlzIGFuZCB2YWx1ZXMgYXJlIG5vdyBieXRlcy4KLQotLSBJc3N1ZSAjODU3MzogYXN5bmNvcmUgX3N0cmVycm9yKCkgZnVuY3Rpb24gbWlnaHQgdGhyb3cgVmFsdWVFcnJvci4KLQotLSBJc3N1ZSAjODQ4MzogYXN5bmNvcmUuZGlzcGF0Y2hlcidzIF9fZ2V0YXR0cl9fIG1ldGhvZCBwcm9kdWNlZCBjb25mdXNpbmcgZXJyb3IKLSAgbWVzc2FnZXMgd2hlbiBhY2Nlc3NpbmcgdW5kZWZpbmVkIGNsYXNzIGF0dHJpYnV0ZXMgYmVjYXVzZSBvZiB0aGUgY2hlYXAKLSAgaW5oZXJpdGFuY2Ugd2l0aCB0aGUgdW5kZXJseWluZyBzb2NrZXQgb2JqZWN0LiAgVGhlIGNoZWFwIGluaGVyaXRhbmNlIGhhcyBiZWVuCi0gIGRlcHJlY2F0ZWQuCi0KLS0gSXNzdWUgIzQyNjU6IHNodXRpbC5jb3B5ZmlsZSgpIHdhcyBsZWFraW5nIGZpbGUgZGVzY3JpcHRvcnMgd2hlbiBkaXNrIGZpbGxzLgotICBQYXRjaCBieSBUcmVzIFNlYXZlci4KLQotLSBJc3N1ZSAjODM5MDogdGFyZmlsZSB1c2VzIHN1cnJvZ2F0ZWVzY2FwZSBhcyB0aGUgZGVmYXVsdCBlcnJvciBoYW5kbGVyCi0gIChpbnN0ZWFkIG9mIHJlcGxhY2UgaW4gcmVhZCBtb2RlIG9yIHN0cmljdCBpbiB3cml0ZSBtb2RlKS4KLQotLSBJc3N1ZSAjNzc1NTogVXNlIGFuIHVuZW5jdW1iZXJlZCBhdWRpbyBmaWxlIGZvciB0ZXN0cy4KLQotLSBJc3N1ZSAjODYyMTogdXVpZC51dWlkNCgpIHJldHVybmVkIHRoZSBzYW1lIHNlcXVlbmNlIG9mIHZhbHVlcyBpbiB0aGUgcGFyZW50Ci0gIGFuZCBhbnkgY2hpbGRyZW4gY3JlYXRlZCB1c2luZyBgYG9zLmZvcmtgYCBvbiBNYWNPUyBYIDEwLjYuCi0KLS0gSXNzdWUgIzg1Njc6IEZpeCBwcmVjZWRlbmNlIG9mIHNpZ25hbHMgaW4gRGVjaW1hbCBtb2R1bGU6IHdoZW4gYSBEZWNpbWFsCi0gIG9wZXJhdGlvbiByYWlzZXMgbXVsdGlwbGUgc2lnbmFscyBhbmQgbW9yZSB0aGFuIG9uZSBvZiB0aG9zZSBzaWduYWxzIGlzCi0gIHRyYXBwZWQsIHRoZSBzcGVjaWZpY2F0aW9uIGRldGVybWluZXMgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBzaWduYWxzIHNob3VsZCBiZQotICBoYW5kbGVkLiAgSW4gbWFueSBjYXNlcyB0aGlzIG9yZGVyIHdhc24ndCBiZWluZyBmb2xsb3dlZCwgbGVhZGluZyB0byB0aGUgd3JvbmcKLSAgUHl0aG9uIGV4Y2VwdGlvbiBiZWluZyByYWlzZWQuCi0KLS0gSXNzdWUgIzc4NjU6IFRoZSBjbG9zZSgpIG1ldGhvZCBvZiA6bW9kOmBpb2Agb2JqZWN0cyBzaG91bGQgbm90IHN3YWxsb3cKLSAgZXhjZXB0aW9ucyByYWlzZWQgYnkgdGhlIGltcGxpY2l0IGZsdXNoKCkuICBBbHNvIHFlbnN1cmUgdGhhdCBjYWxsaW5nIGNsb3NlKCkKLSAgc2V2ZXJhbCB0aW1lcyBpcyBzdXBwb3J0ZWQuICBQYXRjaCBieSBQYXNjYWwgQ2hhbWJvbi4KLQotLSBJc3N1ZSAjNDY4NzogRml4IGFjY3VyYWN5IG9mIGdhcmJhZ2UgY29sbGVjdGlvbiBydW50aW1lcyBkaXNwbGF5ZWQgd2l0aAotICBnYy5ERUJVR19TVEFUUy4KLQotLSBJc3N1ZSAjODM1NDogVGhlIHNpZ2ludGVycnVwdCBzZXR0aW5nIGlzIG5vdyBwcmVzZXJ2ZWQgZm9yIGFsbCBzaWduYWxzLCBub3QKLSAganVzdCBTSUdDSExELgotCi0tIElzc3VlICM3MTkyOiB3ZWJicm93c2VyLmdldCgiZmlyZWZveCIpIG5vdyB3b3JrcyBvbiBNYWMgT1MgWCwgYXMgZG9lcwotICB3ZWJicm93c2VyLmdldCgic2FmYXJpIikuCi0KLS0gSXNzdWUgIzg0NjQ6IHRhcmZpbGUgbm8gbG9uZ2VyIGNyZWF0ZXMgZmlsZXMgd2l0aCBleGVjdXRlIHBlcm1pc3Npb25zIHNldCB3aGVuCi0gIG1vZGU9Ind8IiBpcyB1c2VkLgotCi0tIElzc3VlICM3ODM0OiBGaXggY29ubmVjdCgpIG9mIEJsdWV0b290aCBMMkNBUCBzb2NrZXRzIHdpdGggcmVjZW50IHZlcnNpb25zIG9mCi0gIHRoZSBMaW51eCBrZXJuZWwuICBQYXRjaCBieSBZYW5pdiBBa25pbi4KLQotLSBJc3N1ZSAjODI5NTogQWRkZWQgc2h1dGlsLnVucGFja19hcmNoaXZlLgotCi0tIElzc3VlICM2MzEyOiBGaXhlZCBodHRwIEhFQUQgcmVxdWVzdCB3aGVuIHRoZSB0cmFuc2ZlciBlbmNvZGluZyBpcyBjaHVua2VkLgotICBJdCBzaG91bGQgY29ycmVjdGx5IHJldHVybiBhbiBlbXB0eSByZXNwb25zZSBub3cuCi0KLS0gSXNzdWUgIzg1NDY6IFJlamVjdCBOb25lIGdpdmVuIGFzIHRoZSBidWZmZXJpbmcgYXJndW1lbnQgdG8gX3B5aW8ub3Blbi4KLQotLSBJc3N1ZSAjODU0OTogRml4IGNvbXBpbGluZyB0aGUgX3NzbCBleHRlbnNpb24gdW5kZXIgQUlYLiAgUGF0Y2ggYnkKLSAgU3JpZGhhciBSYXRuYWt1bWFyLgotCi0tIElzc3VlICM2NjU2OiBmaXggbG9jYWxlLmZvcm1hdF9zdHJpbmcgdG8gaGFuZGxlIGVzY2FwZWQgcGVyY2VudHMKLSAgYW5kIG1hcHBpbmdzLgotCi0tIElzc3VlICMyMzAyOiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiBTb2NrZXRTZXJ2ZXIuQmFzZVNlcnZlci5zaHV0ZG93biwgd2hlcmUKLSAgdGhlIG1ldGhvZCBjb3VsZCBibG9jayBpbmRlZmluaXRlbHkgaWYgY2FsbGVkIGp1c3QgYmVmb3JlIHRoZSBldmVudCBsb29wCi0gIHN0YXJ0ZWQgcnVubmluZy4gIFRoaXMgYWxzbyBmaXhlcyB0aGUgb2NjYXNpb25hbCBmcmVlemVzIHdpdG5lc3NlZCBpbgotICB0ZXN0X2h0dHBzZXJ2ZXJzLgotCi0tIElzc3VlICM4NTI0OiBXaGVuIGNyZWF0aW5nIGFuIFNTTCBzb2NrZXQsIHRoZSB0aW1lb3V0IHZhbHVlIG9mIHRoZSBvcmlnaW5hbAotICBzb2NrZXQgd2Fzbid0IHJldGFpbmVkIChpbnN0ZWFkLCBhIHNvY2tldCB3aXRoIGEgcG9zaXRpdmUgdGltZW91dCB3b3VsZCBiZQotICB0dXJuZWQgaW50byBhIG5vbi1ibG9ja2luZyBTU0wgc29ja2V0KS4KLQotLSBJc3N1ZSAjNTEwMzogU1NMIGhhbmRzaGFrZSB3b3VsZCBpZ25vcmUgdGhlIHNvY2tldCB0aW1lb3V0IGFuZCBibG9jawotICBpbmRlZmluaXRlbHkgaWYgdGhlIG90aGVyIGVuZCBkaWRuJ3QgcmVzcG9uZC4KLQotLSBUaGUgZG9faGFuZHNoYWtlKCkgbWV0aG9kIG9mIFNTTCBvYmplY3RzIG5vdyBhZGp1c3RzIHRoZSBibG9ja2luZyBtb2RlIG9mIHRoZQotICBTU0wgc3RydWN0dXJlIGlmIG5lY2Vzc2FyeSAoYXMgb3RoZXIgbWV0aG9kcyBhbHJlYWR5IGRvKS4KLQotLSBJc3N1ZSAjODM5MTogb3MuZXhlY3ZwZSgpIGFuZCBvcy5nZXRlbnYoKSBzdXBwb3J0cyB1bmljb2RlIHdpdGggc3Vycm9nYXRlcyBhbmQKLSAgYnl0ZXMgc3RyaW5ncyBmb3IgZW52aXJvbm1lbnQga2V5cyBhbmQgdmFsdWVzLgotCi0tIElzc3VlICM4NDY3OiBQdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBzdWJwcm9jZXNzIGVuY29kZXMgdGhlIGVycm9yCi0gIG1lc3NhZ2UgdXNpbmcgc3Vycm9nYXRlcGFzcyBlcnJvciBoYW5kbGVyIHRvIHN1cHBvcnQgc3Vycm9nYXRlcyBpbiB0aGUKLSAgbWVzc2FnZS4KLQotLSBJc3N1ZSAjODQ2ODogYnoyLkJaMkZpbGUoKSBhY2NlcHRzIHN0ciB3aXRoIHN1cnJvZ2F0ZXMgYW5kIGJ5dGVzIGZpbGVuYW1lcy4KLQotLSBJc3N1ZSAjODQ1MTogU3lzbG9nIG1vZHVsZSBub3cgdXNlcyBiYXNlbmFtZShzeXMuYXJndlswXSkgaW5zdGVhZCBvZiB0aGUKLSAgc3RyaW5nICJweXRob24iIGFzIHRoZSAqaWRlbnQqLiAgb3BlbmxvZygpIGFyZ3VtZW50cyBhcmUgYWxsIG9wdGlvbmFsIGFuZAotICBrZXl3b3Jkcy4KLQotLSBJc3N1ZSAjODEwODogRml4IHRoZSB1bndyYXAoKSBtZXRob2Qgb2YgU1NMIG9iamVjdHMgd2hlbiB0aGUgc29ja2V0IGhhcyBhCi0gIG5vbi1pbmZpbml0ZSB0aW1lb3V0LiAgQWxzbyBtYWtlIHRoYXQgbWV0aG9kIGZyaWVuZGxpZXIgd2l0aCBhcHBsaWNhdGlvbnMKLSAgd2FudGluZyB0byBjb250aW51ZSB1c2luZyB0aGUgc29ja2V0IGluIGNsZWFyLXRleHQgbW9kZSwgYnkgZGlzYWJsaW5nCi0gIE9wZW5TU0wncyBpbnRlcm5hbCByZWFkYWhlYWQuICBUaGFua3MgdG8gRGFycnlsIE1pbGVzIGZvciBndWlkYW5jZS4KLQotLSBJc3N1ZSAjODQ5NjogbWFrZSBtYWlsY2FwLmxvb2t1cCgpIGFsd2F5cyByZXR1cm4gYSBsaXN0LCByYXRoZXIgdGhhbiBhbgotICBpdGVyYXRvci4gIFBhdGNoIGJ5IEdyZWdvcnkgTm9maS4KLQotLSBJc3N1ZSAjODE5NTogRml4IGEgY3Jhc2ggaW4gc3FsaXRlIENvbm5lY3Rpb24uY3JlYXRlX2NvbGxhdGlvbigpIGlmIHRoZQotICBjb2xsYXRpb24gbmFtZSBjb250YWlucyBhIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIuCi0KLS0gSXNzdWUgIzg0ODQ6IExvYWQgYWxsIGNpcGhlcnMgYW5kIGRpZ2VzdCBhbGdvcml0aG1zIHdoZW4gaW5pdGlhbGl6aW5nIHRoZSBfc3NsCi0gIGV4dGVuc2lvbiwgc3VjaCB0aGF0IHZlcmlmaWNhdGlvbiBvZiBzb21lIFNTTCBjZXJ0aWZpY2F0ZXMgZG9lc24ndCBmYWlsCi0gIGJlY2F1c2Ugb2YgYW4gInVua25vd24gYWxnb3JpdGhtIi4KLQotLSBJc3N1ZSAjNjU0NzogQWRkZWQgdGhlIGlnbm9yZV9kYW5nbGluZ19zeW1saW5rcyBvcHRpb24gdG8gc2h1dGlsLmNvcHl0cmVlLgotCi0tIElzc3VlICMxNTQwMTEyOiBOb3cgYWxsb3dpbmcgdGhlIGNob2ljZSBvZiBhIGNvcHkgZnVuY3Rpb24gaW4gc2h1dGlsLmNvcHl0cmVlLgotCi0tIElzc3VlICM0ODE0OiB0aW1lb3V0IHBhcmFtZXRlciBpcyBub3cgYXBwbGllZCBhbHNvIGZvciBjb25uZWN0aW9ucyByZXN1bHRpbmcKLSAgZnJvbSBQT1JUL0VQUlQgY29tbWFuZHMuCi0KLS0gSXNzdWUgIzg0NjM6IGFkZGVkIG1pc3NpbmcgcmVmZXJlbmNlIHRvIGJ6dGFyIGluIHNodXRpbCdzIGRvY3VtZW50YXRpb24uCi0KLS0gSXNzdWUgIzcxNTQ6IHVybGxpYi5yZXF1ZXN0IGNhbiBub3cgZGV0ZWN0IHRoZSBwcm94eSBzZXR0aW5ncyBvbiBPU1ggMTAuNiAoYXMKLSAgbG9uZyBhcyB0aGUgdXNlciBkaWRuJ3Qgc3BlY2lmeSAnYXV0b21hdGljIHByb3h5IGNvbmZpZ3VyYXRpb24nKS4KLQotLSBJc3N1ZSAjMzgxNzogZnRwbGliLkZUUC5hYm9ydCgpIG1ldGhvZCBub3cgY29uc2lkZXJzIDIyNSBhIHZhbGlkIHJlc3BvbnNlIGNvZGUKLSAgYXMgc3RhdGVkIGluIFJGQy05NTkgYXQgY2hhcHRlciA1LjQuCi0KLS0gSXNzdWUgIzgzOTQ6IF9jdHlwZXMuZGxvcGVuKCkgYWNjZXB0cyBieXRlcywgYnl0ZWFycmF5IGFuZCBzdHIgd2l0aAotICBzdXJyb2dhdGVzLgotCi0tIElzc3VlICM4NTA3Mjg6IEFkZCBhICp0aW1lb3V0KiBwYXJhbWV0ZXIgdG8gdGhlIGBhY3F1aXJlKClgIG1ldGhvZCBvZgotICBgdGhyZWFkaW5nLlNlbWFwaG9yZWAgb2JqZWN0cy4gIE9yaWdpbmFsIHBhdGNoIGJ5IFRvcnN0ZW4gTGFuZHNjaG9mZi4KLQotLSBJc3N1ZSAjODMyMjogQWRkIGEgKmNpcGhlcnMqIGFyZ3VtZW50IHRvIFNTTCBzb2NrZXRzLCBzbyBhcyB0byBjaGFuZ2UgdGhlCi0gIGF2YWlsYWJsZSBjaXBoZXIgbGlzdC4gIEhlbHBzIGZpeCB0ZXN0X3NzbCB3aXRoIE9wZW5TU0wgMS4wLjAuCi0KLS0gSXNzdWUgIzgzOTM6IHN1YnByb2Nlc3MgYWNjZXB0cyBieXRlcywgYnl0ZWFycmF5IGFuZCBzdHIgd2l0aCBzdXJyb2dhdGVzIGZvcgotICB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjNzYwNjogWE1MLVJQQyB0cmFjZWJhY2sgc3RvcmVkIGluIFgtdHJhY2ViYWNrIGlzIG5vdyBlbmNvZGVkIHRvIEFTQ0lJCi0gIHVzaW5nIGJhY2tzbGFzaHJlcGxhY2UgZXJyb3IgaGFuZGxlci4KLQotLSBJc3N1ZSAjODQxMjogb3Muc3lzdGVtKCkgbm93IGFjY2VwdHMgYnl0ZXMsIGJ5dGVhcnJheSBhbmQgc3RyIHdpdGggc3Vycm9nYXRlcy4KLQotLSBJc3N1ZSAjMjk4NzogUkZDMjczMiBzdXBwb3J0IGZvciB1cmxwYXJzZSAoSVB2NiBhZGRyZXNzZXMpLiBQYXRjaCBieSBUb255Ci0gIExvY2tlIGFuZCBIYW5zIFVscmljaCBOaWVkZXJtYW5uLgotCi0tIElzc3VlICM1Mjc3OiBGaXggcXVvdGUgY291bnRpbmcgd2hlbiBwYXJzaW5nIFJGQyAyMjMxIGVuY29kZWQgcGFyYW1ldGVycy4KLQotLSBJc3N1ZSAjNzMxNjogVGhlIGFjcXVpcmUoKSBtZXRob2Qgb2YgbG9jayBvYmplY3RzIGluIHRoZSA6bW9kOmB0aHJlYWRpbmdgCi0gIG1vZHVsZSBub3cgdGFrZXMgYW4gb3B0aW9uYWwgdGltZW91dCBhcmd1bWVudCBpbiBzZWNvbmRzLiAgVGltZW91dCBzdXBwb3J0Ci0gIHJlbGllcyBvbiB0aGUgc3lzdGVtIHRocmVhZGluZyBsaWJyYXJ5LCBzbyBhcyB0byBhdm9pZCBhIHNlbWktYnVzeSB3YWl0IGxvb3AuCi0KLS0gSXNzdWUgIzgzODM6IHBpY2tsZSBhbmQgcGlja2xldG9vbHMgdXNlIHN1cnJvZ2F0ZXBhc3MgZXJyb3IgaGFuZGxlciB3aGVuCi0gIGVuY29kaW5nIHVuaWNvZGUgYXMgdXRmOCB0byBzdXBwb3J0IGxvbmUgc3Vycm9nYXRlcyBhbmQgc3RheSBjb21wYXRpYmxlIHdpdGgKLSAgUHl0aG9uIDIueCBhbmQgMy54LgotCi0tIElzc3VlICM3NTg1OiBkaWZmbGliIGNvbnRleHQgYW5kIHVuaWZpZWQgZGlmZnMgbm93IHBsYWNlIGEgdGFiIGJldHdlZW4KLSAgZmlsZW5hbWUgYW5kIGRhdGUsIGNvbmZvcm1pbmcgdG8gdGhlICdzdGFuZGFyZHMnIHRoZXkgd2VyZSBvcmlnaW5hbGx5IGRlc2lnbmVkCi0gIHRvIGZvbGxvdy4gIFRoaXMgaW1wcm92ZXMgY29tcGF0aWJpbGl0eSB3aXRoIHBhdGNoIHRvb2xzLgotCi0tIElzc3VlICM3NDcyOiBGaXhlZCB0eXBvIGluIGVtYWlsLmVuY29kZXJzIG1vZHVsZTsgbWVzc2FnZXMgdXNpbmcgSVNPLTIwMjIKLSAgY2hhcmFjdGVyIHNldHMgd2lsbCBub3cgY29uc2lzdGVudGx5IHVzZSBhIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmcgb2YgN2JpdAotICByYXRoZXIgdGhhbiBzb21ldGltZXMgYmVpbmcgbWFya2VkIGFzIDhiaXQuCi0KLS0gSXNzdWUgIzgzNzU6IHRlc3RfZGlzdHV0aWxzIG5vdyBjaGVja3MgaWYgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkgYXJlIHN0aWxsCi0gIHByZXNlbnQgYmVmb3JlIGl0IGNsZWFucyB0aGVtLgotCi0tIElzc3VlICM4Mzc0OiBVcGRhdGUgdGhlIGludGVybmFsIGFsaWFzIHRhYmxlIGluIHRoZSA6bW9kOmBsb2NhbGVgIG1vZHVsZSB0bwotICBjb3ZlciByZWNlbnQgbG9jYWxlIGNoYW5nZXMgYW5kIGFkZGl0aW9ucy4KLQotLSBJc3N1ZSAjODMyMTogR2l2ZSBhY2Nlc3MgdG8gT3BlblNTTCB2ZXJzaW9uIG51bWJlcnMgZnJvbSB0aGUgYHNzbGAgbW9kdWxlLAotICB1c2luZyB0aGUgbmV3IGF0dHJpYnV0ZXMgYHNzbC5PUEVOU1NMX1ZFUlNJT05gLCBgc3NsLk9QRU5TU0xfVkVSU0lPTl9JTkZPYCBhbmQKLSAgYHNzbC5PUEVOU1NMX1ZFUlNJT05fTlVNQkVSYC4KLQotLSBBZGQgZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKCkgYW5kIGZ1bmN0b29scy5jbXBfdG9fa2V5KCkuCi0KLS0gSXNzdWUgIzgyNTc6IFRoZSBEZWNpbWFsIGNvbnN0cnVjdCBub3cgYWNjZXB0cyBhIGZsb2F0IGluc3RhbmNlIGRpcmVjdGx5LAotICBjb252ZXJ0aW5nIHRoYXQgZmxvYXQgdG8gYSBEZWNpbWFsIG9mIGVxdWFsIHZhbHVlOgotCi0gICAgID4+PiBEZWNpbWFsKDEuMSkKLSAgICAgRGVjaW1hbCgnMS4xMDAwMDAwMDAwMDAwMDAwODg4MTc4NDE5NzAwMTI1MjMyMzM4OTA1MzM0NDcyNjU2MjUnKQotCi0tIElzc3VlICM4Mjk0OiBUaGUgRnJhY3Rpb24gY29uc3RydWN0b3Igbm93IGFjY2VwdHMgRGVjaW1hbCBhbmQgZmxvYXQgaW5zdGFuY2VzCi0gIGRpcmVjdGx5LgotCi0tIElzc3VlICM3Mjc5OiBDb21wYXJpc29ucyBpbnZvbHZpbmcgYSBEZWNpbWFsIHNpZ25hbGluZyBOYU4gbm93IHNpZ25hbAotICBJbnZhbGlkT3BlcmF0aW9uIGluc3RlYWQgb2YgcmV0dXJuaW5nIEZhbHNlLiAgKENvbXBhcmlzb25zIGludm9sdmluZyBhIHF1aWV0Ci0gIE5hTiBhcmUgdW5jaGFuZ2VkLikgIEFsc28sIERlY2ltYWwgcXVpZXQgTmFOcyBhcmUgbm93IGhhc2hhYmxlOyBEZWNpbWFsCi0gIHNpZ25hbGluZyBOYU5zIHJlbWFpbiB1bmhhc2hhYmxlLgotCi0tIElzc3VlICMyNTMxOiBDb21wYXJpc29uIG9wZXJhdGlvbnMgYmV0d2VlbiBmbG9hdHMgYW5kIERlY2ltYWwgaW5zdGFuY2VzIG5vdwotICByZXR1cm4gYSByZXN1bHQgYmFzZWQgb24gdGhlIG51bWVyaWMgdmFsdWVzIG9mIHRoZSBvcGVyYW5kczsgcHJldmlvdXNseSB0aGV5Ci0gIHJldHVybmVkIGFuIGFyYml0cmFyeSByZXN1bHQgYmFzZWQgb24gdGhlIHJlbGF0aXZlIG9yZGVyaW5nIG9mIGlkKGZsb2F0KSBhbmQKLSAgaWQoRGVjaW1hbCkuICBTZWUgYWxzbyBpc3N1ZSAjODE4OCwgd2hpY2ggYWRkcyBEZWNpbWFsLXRvLUZyYWN0aW9uCi0gIGNvbXBhcmlzb25zLgotCi0tIEFkZGVkIGEgc3VidHJhY3QoKSBtZXRob2QgdG8gY29sbGVjdGlvbnMuQ291bnRlcigpLgotCi0tIElzc3VlICM4MjMzOiBXaGVuIHJ1biBhcyBhIHNjcmlwdCwgcHlfY29tcGlsZS5weSBvcHRpb25hbGx5IHRha2VzIGEgc2luZ2xlCi0gIGFyZ3VtZW50IGAtYCB3aGljaCB0ZWxscyBpdCB0byByZWFkIGZpbGVzIHRvIGNvbXBpbGUgZnJvbSBzdGRpbi4gIEVhY2ggbGluZSBpcwotICByZWFkIG9uIGRlbWFuZCBhbmQgdGhlIG5hbWVkIGZpbGUgaXMgY29tcGlsZWQgaW1tZWRpYXRlbHkuICAoT3JpZ2luYWwgcGF0Y2ggYnkKLSAgUGlvdHIgT8W8YXJvd3NraSkuCi0KLS0gQmFja3dhcmRzIGluY29tcGF0aWJsZSBjaGFuZ2U6IFVuaWNvZGUgY29kZXBvaW50cyBsaW5lIHRhYnVsYXRpb24gKDB4MEIpIGFuZAotICBmb3JtIGZlZWQgKDB4MEMpIGFyZSBub3cgY29uc2lkZXJlZCBsaW5lYnJlYWtzLCBhcyBzcGVjaWZpZWQgaW4gVW5pY29kZQotICBTdGFuZGFyZCBBbm5leCAjMTQuICBTZWUgaXNzdWUgIzc2NDMuICBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIxNC8KLQotLSBDb21wYXJpc29ucyB1c2luZyBvbmUgb2YgPCwgPD0sID4sID49IGJldHdlZW4gYSBjb21wbGV4IGluc3RhbmNlIGFuZCBhCi0gIEZyYWN0aW9ucyBpbnN0YW5jZSBub3cgcmFpc2UgVHlwZUVycm9yIGluc3RlYWQgb2YgcmV0dXJuaW5nIFRydWUvRmFsc2UuICBUaGlzCi0gIG1ha2VzIEZyYWN0aW9uIDw9PiBjb21wbGV4IGNvbXBhcmlzb25zIGNvbnNpc3RlbnQgd2l0aCBpbnQgPD0+IGNvbXBsZXgsIGZsb2F0Ci0gIDw9PiBjb21wbGV4LCBhbmQgY29tcGxleCA8PT4gY29tcGxleCBjb21wYXJpc29ucy4KLQotLSBJc3N1ZSAjODEzOTogb3NzYXVkaW9kZXYgZGlkbid0IGluaXRpYWxpemUgaXRzIHR5cGVzIHByb3Blcmx5LCB0aGVyZWZvcmUgc29tZQotICBtZXRob2RzIChzdWNoIGFzIG9zc19taXhlcl9kZXZpY2UuZmlsZW5vKCkpIHdlcmUgbm90IGF2YWlsYWJsZS4gIEluaXRpYWwgcGF0Y2gKLSAgYnkgQmVydHJhbmQgSmFuaW4uCi0KLS0gSXNzdWUgIzgyMDU6IFJlbW92ZSB0aGUgIk1vZHVsZXMiIGRpcmVjdG9yeSBmcm9tIHN5cy5wYXRoIHdoZW4gUHl0aG9uIGlzCi0gIHJ1bm5pbmcgZnJvbSB0aGUgYnVpbGQgZGlyZWN0b3J5IChQT1NJWCBvbmx5KS4KLQotLSBJc3N1ZSAjNzUxMjogc2h1dGlsLmNvcHlzdGF0KCkgY291bGQgcmFpc2UgYW4gT1NFcnJvciB3aGVuIHRoZSBmaWxlc3lzdGVtCi0gIGRpZG4ndCBzdXBwb3J0IGNoZmxhZ3MoKSAoZm9yIGV4YW1wbGUgWkZTIHVuZGVyIEZyZWVCU0QpLiAgVGhlIGVycm9yIGlzIG5vdwotICBzaWxlbmNlZC4KLQotLSBJc3N1ZSAjNzg2MDogcGxhdGZvcm0udW5hbWUgbm93IHJlcG9ydHMgdGhlIGNvcnJlY3QgJ21hY2hpbmUnIHR5cGUgd2hlbiBQeXRob24KLSAgaXMgcnVubmluZyBpbiBXT1c2NCBtb2RlIG9uIDY0IGJpdCBXaW5kb3dzLgotCi0tIElzc3VlICMzODkwLCAjODIyMjogRml4IHJlY3YoKSBhbmQgcmVjdl9pbnRvKCkgb24gbm9uLWJsb2NraW5nIFNTTCBzb2NrZXRzLgotICBBbHNvLCBlbmFibGUgdGhlIFNTTF9NT0RFX0FVVE9fUkVUUlkgZmxhZyBvbiBTU0wgc29ja2V0cywgc28gdGhhdCBibG9ja2luZwotICByZWFkcyBhbmQgd3JpdGVzIGFyZSBhbHdheXMgcmV0cmllZCBieSBPcGVuU1NMIGl0c2VsZi4KLQotLSBJc3N1ZSAjNDI4MjogRml4IHRoZSBtYWluIGZ1bmN0aW9uIG9mIHRoZSBwcm9maWxlIG1vZHVsZSBmb3IgYSBub24tQVNDSUkKLSAgc2NyaXB0LCBvcGVuIHRoZSBmaWxlIGluIGJpbmFyeSBtb2RlIGFuZCBub3QgaW4gdGV4dCBtb2RlIHdpdGggdGhlIGRlZmF1bHQKLSAgKHV0ZjgpIGVuY29kaW5nLgotCi0tIElzc3VlICM4MTc5OiBGaXggbWFjcGF0aC5yZWFscGF0aCgpIG9uIGEgbm9uLWV4aXN0aW5nIHBhdGguCi0KLS0gSXNzdWUgIzgwMjQ6IFVwZGF0ZSB0aGUgVW5pY29kZSBkYXRhYmFzZSB0byA1LjIuCi0KLS0gSXNzdWUgIzgxNjg6IHB5X2NvbXBpbGUgbm93IGhhbmRsZXMgZmlsZXMgd2l0aCB1dGYtOCBCT01TLgotCi0tIGBgdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nYGAgbm93IHJldHVybnMgYGAndXRmLTgtc2lnJ2BgIHdoZW4gYSBVVEYtOCBCT00gaXMKLSAgZGV0ZWN0ZWQuCi0KLS0gSXNzdWUgIzY3MTYvMjogQmFja3NsYXNoLXJlcGxhY2UgZXJyb3Igb3V0cHV0IGluIGNvbXBpbGFsbC4KLQotLSBJc3N1ZSAjNDk2MTogSW5jb25zaXN0ZW50L3dyb25nIHJlc3VsdCBvZiBhc2t5ZXNubyBmdW5jdGlvbiBpbiB0a01lc3NhZ2VCb3gKLSAgd2l0aCBUY2wvVGstOC41LgotCi0tIElzc3VlICM4MTQwOiBleHRlbmQgY29tcGlsZWFsbCB0byBjb21waWxlIHNpbmdsZSBmaWxlcy4gIEFkZCAtaSBvcHRpb24uCi0KLS0gSXNzdWUgIzczNTY6IGN0eXBlcy51dGlsOiBNYWtlIHBhcnNpbmcgb2YgbGRjb25maWcgb3V0cHV0IGluZGVwZW5kZW50IG9mIHRoZQotICBsb2NhbGUuCi0KLS0gVGhlIGludGVybmFscyBvZiB0aGUgc3VicHJvY2VzcyBtb2R1bGUgb24gUE9TSVggc3lzdGVtcyBoYXZlIGJlZW4gcmVwbGFjZWQgYnkKLSAgYW4gZXh0ZW5zaW9uIG1vZHVsZSAoX3Bvc2l4c3VicHJvY2Vzcykgc28gdGhhdCB0aGUgZm9yaygpK2V4ZWMoKSBjYW4gYmUgZG9uZQotICBzYWZlbHkgd2l0aG91dCB0aGUgcG9zc2liaWxpdHkgb2YgZGVhZGxvY2sgaW4gbXVsdGl0aHJlYWRlZCBhcHBsaWNhdGlvbnMuCi0KLS0gc3VicHJvY2Vzcy5Qb3BlbiBub3cgaGFzIHJlc3RvcmVfc2lnbmFscyBhbmQgc3RhcnRfbmV3X3Nlc3Npb24gZmVhdHVyZXMuICBUaGUKLSAgZGVmYXVsdCBvZiByZXN0b3JlX3NpZ25hbHM9VHJ1ZSBpcyBhIG5ldyBiZWhhdmlvciBjb21wYXJlZCB0byBlYXJsaWVyIFB5dGhvbgotICB2ZXJzaW9ucy4gIFRoaXMgbWVhbnMgdGhhdCBzaWduYWxzIHN1Y2ggYXMgU0lHUElQRSBhcmUgbm90IGlnbm9yZWQgYnkgZGVmYXVsdAotICBpbiBzdWJwcm9jZXNzZXMgbGF1bmNoZWQgYnkgUHl0aG9uIChJc3N1ZSAjMTY1MikuCi0KLS0gSXNzdWUgIzY0NzI6IFRoZSB4bWwuZXRyZWUgcGFja2FnZSBpcyB1cGRhdGVkIHRvIEVsZW1lbnRUcmVlIDEuMy4gIFRoZQotICBjRWxlbWVudFRyZWUgbW9kdWxlIGlzIHVwZGF0ZWQgdG9vLgotCi0tIElzc3VlICM3Nzc0OiBTZXQgc3lzLmV4ZWN1dGFibGUgdG8gYW4gZW1wdHkgc3RyaW5nIGlmIGFyZ3ZbMF0gaGFzIGJlZW4gc2V0IHRvCi0gIGFuIG5vbiBleGlzdGVudCBwcm9ncmFtIG5hbWUgYW5kIFB5dGhvbiBpcyB1bmFibGUgdG8gcmV0cmlldmUgdGhlIHJlYWwgcHJvZ3JhbQotICBuYW1lLgotCi0tIElzc3VlICM3ODgwOiBGaXggc3lzY29uZmlnIHdoZW4gdGhlIHB5dGhvbiBleGVjdXRhYmxlIGlzIGEgc3ltYm9saWMgbGluay4KLQotLSBJc3N1ZSAjNjUwOTogZml4IHJlLnN1YiB0byB3b3JrIHByb3Blcmx5IHdoZW4gdGhlIHBhdHRlcm4sIHRoZSBzdHJpbmcsIGFuZCB0aGUKLSAgcmVwbGFjZW1lbnQgd2VyZSBhbGwgYnl0ZXMuICBQYXRjaCBieSBBbnRvaW5lIFBpdHJvdS4KLQotLSBUaGUgc3FsaXRlMyBtb2R1bGUgd2FzIHVwZGF0ZWQgdG8gcHlzcWxpdGUgMi42LjAuIFRoaXMgZml4ZXMgc2V2ZXJhbCBvYnNjdXJlCi0gIGJ1Z3MgYW5kIGFsbG93cyBsb2FkaW5nIFNRTGl0ZSBleHRlbnNpb25zIGZyb20gc2hhcmVkIGxpYnJhcmllcy4KLQotLSBJc3N1ZSAjMTA1NDk0MzogRml4IGBgdW5pY29kZWRhdGEubm9ybWFsaXplKCdORkMnLCB0ZXh0KWBgIGZvciB0aGUgUHVibGljCi0gIFJldmlldyBJc3N1ZSAjMjkgKGh0dHA6Ly91bmljb2RlLm9yZy9yZXZpZXcvcHItMjkuaHRtbCkuCi0KLS0gSXNzdWUgIzc0OTQ6IGZpeCBhIGNyYXNoIGluIF9sc3Byb2YgKGNQcm9maWxlKSBhZnRlciBjbGVhcmluZyB0aGUgcHJvZmlsZXIsCi0gIHJlc2V0IGFsc28gdGhlIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgcG9pbnRlciBjb250ZXh0LgotCi0tIElzc3VlICM3MjMyOiBBZGQgc3VwcG9ydCBmb3IgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCB0byB0aGUgVGFyRmlsZQotICBjbGFzcy4KLQotLSBJc3N1ZSAjNzI1MDogRml4IGluZm8gbGVhayBvZiBvcy5lbnZpcm9uIGFjcm9zcyBtdWx0aS1ydW4gdXNlcyBvZgotICB3c2dpcmVmLmhhbmRsZXJzLkNHSUhhbmRsZXIuCi0KLS0gSXNzdWUgIzE3MjkzMDU6IEZpeCBkb2N0ZXN0IHRvIGhhbmRsZSBlbmNvZGUgZXJyb3Igd2l0aCAiYmFja3NsYXNocmVwbGFjZSIuCi0KLS0gSXNzdWUgIzY5MTI5MTogY29kZWNzLm9wZW4oKSBzaG91bGQgbm90IGNvbnZlcnQgZW5kIG9mIGxpbmVzIG9uIHJlYWRpbmcgYW5kCi0gIHdyaXRpbmcuCi0KLS0gSXNzdWUgIzc4Njk6IGxvZ2dpbmc6IGltcHJvdmVkIGRpYWdub3N0aWMgZm9yIGZvcm1hdC10aW1lIGVycm9ycy4KLQotLSBJc3N1ZSAjNzg2ODogbG9nZ2luZzogYWRkZWQgbG9nZ2VyQ2xhc3MgYXR0cmlidXRlIHRvIE1hbmFnZXIuCi0KLS0gbG9nZ2luZzogSW1wbGVtZW50ZWQgUEVQIDM5MS4KLQotLSBJc3N1ZSAjMTUzNzcyMTogQWRkIGEgd3JpdGVoZWFkZXIoKSBtZXRob2QgdG8gY3N2LkRpY3RXcml0ZXIuCi0KLS0gSXNzdWUgIzc5NTk6IGN0eXBlcyBjYWxsYmFjayBmdW5jdGlvbnMgYXJlIG5vdyByZWdpc3RlcmVkIGNvcnJlY3RseSB3aXRoIHRoZQotICBjeWNsZSBnYXJiYWdlIGNvbGxlY3Rvci4KLQotLSBJc3N1ZSAjNTgwMTogcmVtb3ZlZCBzcHVyaW91cyBlbXB0eSBsaW5lcyBpbiB3c2dpcmVmLgotCi0tIElzc3VlICM2NjY2OiBmaXggYnVnIGluIHRyYWNlLnB5IHRoYXQgYXBwbGllZCB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBiZQotICBpZ25vcmVkIG9ubHkgdG8gdGhlIGZpcnN0IGZpbGUuICBOb3RlZCBieSBCb2dkYW4gT3BhbmNodWsuCi0KLS0gSXNzdWUgIzc1OTc6IGN1cnNlcy51c2VfZW52KCkgY2FuIG5vdyBiZSBjYWxsZWQgYmVmb3JlIGluaXRzY3IoKS4gIE5vdGVkIGJ5Ci0gIEthbi1SdSBDaGVuLgotCi0tIElzc3VlICM3MzEwOiBmaXggdGhlIF9fcmVwcl9fIG9mIG9zLmVudmlyb24gdG8gc2hvdyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLgotCi0tIElzc3VlICM3OTcwOiBlbWFpbC5HZW5lcmF0b3IuZmxhdHRlbiBub3cgY29ycmVjdGx5IGZsYXR0ZW5zIG1lc3NhZ2UvcmZjODIyCi0gIG1lc3NhZ2VzIHBhcnNlZCBieSBlbWFpbC5QYXJzZXIuSGVhZGVyUGFyc2VyLgotCi0tIElzc3VlICM3MzYxOiBJbXBvcnRsaWIgd2FzIG5vdCBwcm9wZXJseSBjaGVja2luZyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluCi0gIGJ5dGVjb2RlIGZpbGUgd2hlbiBpdCB3YXMgbGVzcyB0aGVuIDggYnl0ZXMuCi0KLS0gSXNzdWUgIzc2MzM6IEluIHRoZSBkZWNpbWFsIG1vZHVsZSwgQ29udGV4dCBjbGFzcyBtZXRob2RzICh3aXRoIHRoZSBleGNlcHRpb24KLSAgb2YgY2Fub25pY2FsIGFuZCBpc19jYW5vbmljYWwpIG5vdyBhY2NlcHQgaW5zdGFuY2VzIG9mIGludCBhbmQgbG9uZyB3aGVyZXZlciBhCi0gIERlY2ltYWwgaW5zdGFuY2UgaXMgYWNjZXB0ZWQsIGFuZCBpbXBsaWNpdGx5IGNvbnZlcnQgdGhhdCBhcmd1bWVudCB0byBEZWNpbWFsLgotICBQcmV2aW91c2x5IG9ubHkgc29tZSBhcmd1bWVudHMgd2VyZSBjb252ZXJ0ZWQuCi0KLS0gSXNzdWUgIzc4MzU6IHNoZWx2ZSBzaG91bGQgbm8gbG9uZ2VyIHByb2R1Y2UgbXlzdGVyaW91cyB3YXJuaW5ncyBkdXJpbmcKLSAgaW50ZXJwcmV0ZXIgc2h1dGRvd24uCi0KLS0gSXNzdWUgIzI3NDY6IERvbid0IGVzY2FwZSBhbXBlcnNhbmRzIGFuZCBhbmdsZSBicmFja2V0cyAoIiYiLCAiPCIsICI+IikgaW4gWE1MCi0gIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb25zIGFuZCBjb21tZW50cy4gIFRoZXNlIHJhdyBjaGFyYWN0ZXJzIGFyZSBhbGxvd2VkIGJ5IHRoZQotICBYTUwgc3BlY2lmaWNhdGlvbiwgYW5kIGFyZSBuZWNlc3Nhcnkgd2hlbiBvdXRwdXR0aW5nIGUuZy4gIFBIUCBjb2RlIGluIGEKLSAgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbi4gIFBhdGNoIGJ5IE5laWwgTXVsbGVyLgotCi0tIElzc3VlICM2MjMzOiBFbGVtZW50VHJlZSBmYWlsZWQgY29udmVydGluZyB1bmljb2RlIGNoYXJhY3RlcnMgdG8gWE1MIGVudGl0aWVzCi0gIHdoZW4gdGhleSBjb3VsZCd0IGJlIHJlcHJlc2VudGVkIGluIHRoZSByZXF1ZXN0ZWQgb3V0cHV0IGVuY29kaW5nLiAgUGF0Y2ggYnkKLSAgSmVycnkgQ2hlbi4KLQotLSBJc3N1ZSAjNjAwMzogYWRkIGFuIGFyZ3VtZW50IHRvIGBgemlwZmlsZS5aaXBmaWxlLndyaXRlc3RyYGAgdG8gc3BlY2lmeSB0aGUKLSAgY29tcHJlc3Npb24gdHlwZS4KLQotLSBJc3N1ZSAjNDc3MjogUmFpc2UgYSBWYWx1ZUVycm9yIHdoZW4gYW4gdW5rbm93biBCbHVldG9vdGggcHJvdG9jb2wgaXMKLSAgc3BlY2lmaWVkLCByYXRoZXIgdGhhbiBmYWxsIHRocm91Z2ggdG8gQUZfUEFDS0VUIChpbiB0aGUgYHNvY2tldGAgbW9kdWxlKS4KLSAgQWxzbywgcmFpc2UgVmFsdWVFcnJvciByYXRoZXIgdGhhbiBUeXBlRXJyb3Igd2hlbiBhbiB1bmtub3duIFRJUEMgYWRkcmVzcyB0eXBlCi0gIGlzIHNwZWNpZmllZC4gIFBhdGNoIGJ5IEJyaWFuIEN1cnRpbi4KLQotLSBJc3N1ZSAjNjkzOTogRml4IGZpbGUgSS9PIG9iamVjdHMgaW4gdGhlIGBpb2AgbW9kdWxlIHRvIGtlZXAgdGhlIG9yaWdpbmFsIGZpbGUKLSAgcG9zaXRpb24gd2hlbiBjYWxsaW5nIGB0cnVuY2F0ZSgpYC4gIEl0IHdvdWxkIHByZXZpb3VzbHkgY2hhbmdlIHRoZSBmaWxlCi0gIHBvc2l0aW9uIHRvIHRoZSBnaXZlbiBhcmd1bWVudCwgd2hpY2ggZ29lcyBhZ2FpbnN0IHRoZSB0cmFkaXRpb24gb2YKLSAgZnRydW5jYXRlKCkgYW5kIG90aGVyIHRydW5jYXRpb24gQVBJcy4gIFBhdGNoIGJ5IFBhc2NhbCBDaGFtYm9uLgotCi0tIElzc3VlICM3NjEwOiBSZXdvcmtlZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaW50ZXJuYWwKLSAgOmNsYXNzOmB6aXBmaWxlLlppcEV4dEZpbGVgIGNsYXNzIHVzZWQgdG8gcmVwcmVzZW50IGZpbGVzIHN0b3JlZCBpbnNpZGUgYW4KLSAgYXJjaGl2ZS4gIFRoZSBuZXcgaW1wbGVtZW50YXRpb24gaXMgc2lnbmlmaWNhbnRseSBmYXN0ZXIgYW5kIGNhbiBiZSB3cmFwcGVkIGluCi0gIGEgOmNsYXNzOmBpby5CdWZmZXJlZFJlYWRlcmAgb2JqZWN0IGZvciBtb3JlIHNwZWVkdXBzLiAgSXQgYWxzbyBzb2x2ZXMgYW4KLSAgaXNzdWUgd2hlcmUgaW50ZXJsZWF2ZWQgY2FsbHMgdG8gYHJlYWQoKWAgYW5kIGByZWFkbGluZSgpYCBnaXZlIHdyb25nIHJlc3VsdHMuCi0gIFBhdGNoIGJ5IE5pciBBaWRlcy4KLQotLSBJc3N1ZSAjNjk2MzogQWRkZWQgIm1heHRhc2tzcGVyY2hpbGQiIGFyZ3VtZW50IHRvIG11bHRpcHJvY2Vzc2luZy5Qb29sLAotICBhbGxvd2luZyBmb3IgYSBtYXhpbXVtIG51bWJlciBvZiB0YXNrcyB3aXRoaW4gdGhlIHBvb2wgdG8gYmUgY29tcGxldGVkIGJ5IHRoZQotICB3b3JrZXIgYmVmb3JlIHRoYXQgd29ya2VyIGlzIHRlcm1pbmF0ZWQsIGFuZCBhIG5ldyBvbmUgY3JlYXRlZCB0byByZXBsYWNlIGl0LgotCi0tIElzc3VlICM3NzkyOiBSZWdpc3RlcmluZyBub24tY2xhc3NlcyB0byBBQkNzIHJhaXNlZCBhbiBvYnNjdXJlIGVycm9yLgotCi0tIElzc3VlICM3Nzg1OiBEb24ndCBhY2NlcHQgYnl0ZXMgaW4gRmlsZUlPLndyaXRlKCkuCi0KLS0gUmVtb3ZlZCB0aGUgZnVuY3Rpb25zICd2ZXJpZnknIGFuZCAndmVyZXEnIGZyb20gTGliL3Rlc3Qvc3VwcG9ydC5weS4KLQotLSBJc3N1ZSAjNzc3MzogRml4IGFuIFVuYm91bmRMb2NhbEVycm9yIGluIHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbigpIHdoZW4KLSAgdGhlIHJlbGVhc2UgZmlsZSBpcyBlbXB0eS4KLQotLSBJc3N1ZSAjNzU2MTogRml4IGNyYXNoZXMgd2hlbiB1c2luZyBieXRlYXJyYXkgb2JqZWN0cyB3aXRoIHRoZSBwb3NpeAotICBtb2R1bGUuCi0KLS0gSXNzdWUgIzE2NzA3NjU6IFByZXZlbnQgZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvciBmcm9tIHJlLXdyYXBwaW5nIGhlYWRlcnMgaW4KLSAgbXVsdGlwYXJ0L3NpZ25lZCBNSU1FIHBhcnRzLCB3aGljaCBmaXhlcyBvbmUgb2YgdGhlIHNvdXJjZXMgb2YgaW52YWxpZAotICBtb2RpZmljYXRpb25zIHRvIHN1Y2ggcGFydHMgYnkgR2VuZXJhdG9yLgotCi0tIElzc3VlICM3NzAzOiBBZGQgc3VwcG9ydCBmb3IgdGhlIG5ldyBidWZmZXIgQVBJIHRvIGBiaW5hc2NpaS5hMmJocXhgLiAgUGF0Y2gKLSAgYnkgRmxvcmVudCBYaWNsdW5hLCBhbG9uZyB3aXRoIHNvbWUgYWRkaXRpb25hbCB0ZXN0cy4KLQotLSBJc3N1ZSAjNzcwMTogRml4IGNyYXNoIGluIGJpbmFzY2lpLmIyYV91dSgpIGluIGRlYnVnIG1vZGUgd2hlbiBnaXZlbiBhIDEtYnl0ZQotICBhcmd1bWVudC4gIFBhdGNoIGJ5IFZpY3RvciBTdGlubmVyLgotCi0tIElzc3VlICMzMjk5OiBGaXggcG9zc2libGUgY3Jhc2ggaW4gdGhlIF9zcmUgbW9kdWxlIHdoZW4gZ2l2ZW4gYmFkIGFyZ3VtZW50Ci0gIHZhbHVlcyBpbiBkZWJ1ZyBtb2RlLiAgUGF0Y2ggYnkgVmljdG9yIFN0aW5uZXIuCi0KLS0gSXNzdWUgIzI4NDY6IEFkZCBzdXBwb3J0IGZvciBnemlwLkd6aXBGaWxlIHJlYWRpbmcgemVyby1wYWRkZWQgZmlsZXMuICBQYXRjaAotICBieSBCcmlhbiBDdXJ0aW4uCi0KLS0gSXNzdWUgIzc2ODE6IFVzZSBmbG9vciBkaXZpc2lvbiBpbiBhcHByb3BpYXRlIHBsYWNlcyBpbiB0aGUgd2F2ZSBtb2R1bGUuCi0KLS0gSXNzdWUgIzUzNzI6IERyb3AgdGhlIHJldXNlIG9mIC5vIGZpbGVzIGluIERpc3R1dGlscycgY2NvbXBpbGVyIChzaW5jZQotICBFeHRlbnNpb24gZXh0cmEgb3B0aW9ucyBtYXkgY2hhbmdlIHRoZSBvdXRwdXQgd2l0aG91dCBjaGFuZ2luZyB0aGUgLmMKLSAgZmlsZSkuIEluaXRpYWwgcGF0Y2ggYnkgQ29sbGluIFdpbnRlci4KLQotLSBJc3N1ZSAjNzYxNzogTWFrZSBzdXJlIGRpc3R1dGlscy51bml4Y2NvbXBpbGVyLlVuaXhDQ29tcGlsZXIgcmVjb2duaXplcyBnY2MKLSAgd2hlbiBpdCBoYXMgYSBmdWxseSBxdWFsaWZpZWQgY29uZmlndXJhdGlvbiBwcmVmaXguIEluaXRpYWwgcGF0Y2ggYnkgQXJmcmV2ZXIuCi0KLS0gSXNzdWUgIzcxMDU6IE1ha2UgV2Vha0tleURpY3Rpb25hcnkgYW5kIFdlYWtWYWx1ZURpY3Rpb25hcnkgcm9idXN0IGFnYWluc3QgdGhlCi0gIGRlc3RydWN0aW9uIG9mIHdlYWtyZWYnZWQgb2JqZWN0cyB3aGlsZSBpdGVyYXRpbmcuCi0KLS0gSXNzdWUgIzc0NTU6IEZpeCBwb3NzaWJsZSBjcmFzaCBpbiBjUGlja2xlIG9uIGludmFsaWQgaW5wdXQuICBQYXRjaCBieSBWaWN0b3IKLSAgU3Rpbm5lci4KLQotLSBJc3N1ZSAjMTYyODIwNTogU29ja2V0IGZpbGUgb2JqZWN0cyByZXR1cm5lZCBieSBzb2NrZXQuc29ja2V0Lm1ha2VmaWxlKCkgbm93Ci0gIHByb3Blcmx5IGhhbmRsZXMgRUlOVFIgd2l0aGluIHRoZSByZWFkLCByZWFkbGluZSwgd3JpdGUgJiBmbHVzaCBtZXRob2RzLiAgVGhlCi0gIHNvY2tldC5zZW5kYWxsKCkgbWV0aG9kIG5vdyBwcm9wZXJseSBoYW5kbGVzIGludGVycnVwdGVkIHN5c3RlbSBjYWxscy4KLQotLSBJc3N1ZSAjNzQ3MTogSW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ugb2YgR3ppcEZpbGUncyBidWZmZXJpbmcgbWVjaGFuaXNtLCBhbmQKLSAgbWFrZSBpdCBpbXBsZW1lbnQgdGhlIGBpby5CdWZmZXJlZElPQmFzZWAgQUJDIHRvIGFsbG93IGZvciBmdXJ0aGVyIHNwZWVkdXBzIGJ5Ci0gIHdyYXBwaW5nIGl0IGluIGFuIGBpby5CdWZmZXJlZFJlYWRlcmAuICBQYXRjaCBieSBOaXIgQWlkZXMuCi0KLS0gSXNzdWUgIzM5NzI6IGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uIG5vdyBhY2NlcHRzIGFuIG9wdGlvbmFsIHNvdXJjZV9hZGRyZXNzCi0gIHBhcmFtZXRlciB0byBhbGxvdyBzcGVjaWZ5aW5nIHdoZXJlIHlvdXIgY29ubmVjdGlvbnMgY29tZSBmcm9tLgotCi0tIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbiBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCBzb3VyY2VfYWRkcmVzcyBwYXJhbWV0ZXIuCi0KLS0gSXNzdWUgIzU1MTE6IG5vdyB6aXBmaWxlLlppcEZpbGUgY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuICBJbml0aWFsCi0gIHBhdGNoIGJ5IEJyaWFuIEN1cnRpbi4KLQotLSBJc3N1ZSAjNzU1NjogTWFrZSBzdXJlIERpc3R1dGlscycgbXN2Yzljb21waWxlIHJlYWRzIGFuZCB3cml0ZXMgdGhlIE1TVkMgWE1MCi0gIE1hbmlmZXN0IGZpbGUgaW4gdGV4dCBtb2RlIHNvIHN0cmluZyBwYXR0ZXJucyBjYW4gYmUgdXNlZCBpbiByZWd1bGFyCi0gIGV4cHJlc3Npb25zLgotCi0tIElzc3VlICM3NTUyOiBSZW1vdmVkIGxpbmUgZmVlZCBpbiB0aGUgYmFzZTY0IEF1dGhvcml6YXRpb24gaGVhZGVyIGluIHRoZQotICBEaXN0dXRpbHMgdXBsb2FkIGNvbW1hbmQgdG8gYXZvaWQgYW4gZXJyb3Igd2hlbiBQeVBJIHJlYWRzIGl0LiAgVGhpcyBvY2N1cnMgb24KLSAgbG9uZyBwYXNzd29yZHMuIEluaXRpYWwgcGF0Y2ggYnkgSlAgU3QuIFBpZXJyZS4KLQotLSBJc3N1ZSAjNzIzMTogdXJsbGliMiBjYW5ub3QgaGFuZGxlIGh0dHBzIHdpdGggcHJveHkgcmVxdWlyaW5nIGF1dGguICBQYXRjaCBieQotICBUYXRzdWhpcm8gVHN1amlrYXdhLgotCi0tIElzc3VlICM0NzU3OiBgemxpYi5jb21wcmVzc2AgYW5kIG90aGVyIG1ldGhvZHMgaW4gdGhlIHpsaWIgbW9kdWxlIG5vdyByYWlzZSBhCi0gIFR5cGVFcnJvciB3aGVuIGdpdmVuIGFuIGBzdHJgIG9iamVjdCAocmF0aGVyIHRoYW4gYSBgYnl0ZXNgLWxpa2Ugb2JqZWN0KS4KLSAgUGF0Y2ggYnkgVmljdG9yIFN0aW5uZXIgYW5kIEZsb3JlbnQgWGljbHVuYS4KLQotLSBJc3N1ZSAjNzM0OTogTWFrZSBtZXRob2RzIG9mIGZpbGUgb2JqZWN0cyBpbiB0aGUgaW8gbW9kdWxlIGFjY2VwdCBOb25lIGFzIGFuCi0gIGFyZ3VtZW50IHdoZXJlIGZpbGUtbGlrZSBvYmplY3RzIChpZSBTdHJpbmdJTyBhbmQgQnl0ZXNJTykgYWNjZXB0IHRoZW0gdG8gbWVhbgotICB0aGUgc2FtZSBhcyBwYXNzaW5nIG5vIGFyZ3VtZW50LgotCi0tIElzc3VlICM3MzU3OiB0YXJmaWxlIG5vIGxvbmdlciBzdXBwcmVzc2VzIGZhdGFsIGV4dHJhY3Rpb24gZXJyb3JzIGJ5IGRlZmF1bHQuCi0KLS0gSXNzdWUgIzU5NDk6IGFkZGVkIGNoZWNrIGZvciBjb3JyZWN0IGxpbmVlbmRzIGluIGlucHV0IGZyb20gSU1BUCBzZXJ2ZXIgaW4KLSAgaW1hcGxpYi4KLQotLSBBZGQgY291bnQoKSBhbmQgcmV2ZXJzZSgpIG1ldGhvZHMgdG8gY29sbGVjdGlvbnMuZGVxdWUoKS4KLQotLSBGaXggdmFyaWF0aW9ucyBvZiBleHRlbmRpbmcgZGVxdWVzOiAgZC5leHRlbmQoZCkgIGQuZXh0ZW5kbGVmdChkKSAgZCs9ZAotCi0tIElzc3VlICM2OTg2OiBGaXggY3Jhc2ggaW4gdGhlIEpTT04gQyBhY2NlbGVyYXRvciB3aGVuIGNhbGxlZCB3aXRoIHRoZSB3cm9uZwotICBwYXJhbWV0ZXIgdHlwZXMuICBQYXRjaCBieSBWaWN0b3IgU3Rpbm5lci4KLQotLSBJc3N1ZSAjNzQ1NzogYWRkZWQgYSByZWFkX3BrZ19maWxlIG1ldGhvZCB0bwotICBkaXN0dXRpbHMuZGlzdC5EaXN0cmlidXRpb25NZXRhZGF0YS4KLQotLSBsb2dnaW5nOiBBZGRlZCBvcHRpb25hbCBgc2VjdXJlYCBwYXJhbWV0ZXIgdG8gU01UUEhhbmRsZXIsIHRvIGVuYWJsZSB1c2Ugb2YKLSAgVExTIHdpdGggYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMuCi0KLS0gSXNzdWUgIzE5MjM6IEZpeGVkIHRoZSByZW1vdmFsIG9mIG1lYW5pbmdmdWwgc3BhY2VzIHdoZW4gUEtHLUlORk8gaXMgZ2VuZXJhdGVkCi0gIGluIERpc3R1dGlscy4gIFBhdGNoIGJ5IFN0ZXBoZW4gRW1zbGllLgotCi0tIElzc3VlICM0MTIwOiBEcm9wIHJlZmVyZW5jZSB0byBDUlQgZnJvbSBtYW5pZmVzdCB3aGVuIGJ1aWxkaW5nIGV4dGVuc2lvbnMgd2l0aAotICBtc3ZjOWNvbXBpbGVyLgotCi0tIElzc3VlICM3MzMzOiBUaGUgYHBvc2l4YCBtb2R1bGUgZ2FpbnMgYW4gYGluaXRncm91cHMoKWAgZnVuY3Rpb24gcHJvdmlkaW5nCi0gIGFjY2VzcyB0byB0aGUgaW5pdGdyb3VwcygzKSBDIGxpYnJhcnkgY2FsbCBvbiBVbml4IHN5c3RlbXMgd2hpY2ggaW1wbGVtZW50IGl0LgotICBQYXRjaCBieSBKZWFuLVBhdWwgQ2FsZGVyb25lLgotCi0tIElzc3VlICM3NDA4OiBGaXhlZCBkaXN0dXRpbHMudGVzdHMuc2Rpc3Qgc28gaXQgZG9lc24ndCBjaGVjayBmb3IgZ3JvdXAKLSAgb3duZXJzaGlwIHdoZW4gdGhlIGdyb3VwIGlzIG5vdCBmb3JjZWQsIGJlY2F1c2UgdGhlIGdyb3VwIG1heSBiZSBkaWZmZXJlbnQKLSAgZnJvbSB0aGUgdXNlcidzIGdyb3VwIGFuZCBpbmhlcml0IGZyb20gaXRzIGNvbnRhaW5lciB3aGVuIHRoZSB0ZXN0IGlzIHJ1bi4KLQotLSBJc3N1ZSAjNDQ4NjogV2hlbiBhbiBleGNlcHRpb24gaGFzIGFuIGV4cGxpY2l0IGNhdXNlLCBkbyBub3QgcHJpbnQgaXRzCi0gIGltcGxpY2l0IGNvbnRleHQgdG9vLiAgVGhpcyBhZmZlY3RzIHRoZSBgdHJhY2ViYWNrYCBtb2R1bGUgYXMgd2VsbCBhcyBidWlsdC1pbgotICBleGNlcHRpb24gcHJpbnRpbmcuCi0KLS0gSXNzdWUgIzE1MTU6IEVuYWJsZSB1c2Ugb2YgZGVlcGNvcHkoKSB3aXRoIGluc3RhbmNlIG1ldGhvZHMuICBQYXRjaCBieSBSb2JlcnQKLSAgQ29sbGlucy4KLQotLSBJc3N1ZSAjNzQwMzogbG9nZ2luZzogRml4ZWQgcG9zc2libGUgcmFjZSBjb25kaXRpb24gaW4gbG9jayBjcmVhdGlvbi4KLQotLSBJc3N1ZSAjNjg0NTogQWRkIHJlc3RhcnQgc3VwcG9ydCBmb3IgYmluYXJ5IHVwbG9hZCBpbiBmdHBsaWIuICBUaGUKLSAgYHN0b3JiaW5hcnkoKWAgbWV0aG9kIG9mIEZUUCBhbmQgRlRQX1RMUyBvYmplY3RzIGdhaW5zIGFuIG9wdGlvbmFsIGByZXN0YAotICBhcmd1bWVudC4gIFBhdGNoIGJ5IFBhYmxvIE1vdXpvLgotCi0tIElzc3VlICM1Nzg4OiBgZGF0ZXRpbWUudGltZWRlbHRhYCBvYmplY3RzIGdldCBhIG5ldyBgdG90YWxfc2Vjb25kcygpYCBtZXRob2QKLSAgcmV0dXJuaW5nIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2Vjb25kcyBpbiB0aGUgZHVyYXRpb24uICBQYXRjaCBieSBCcmlhbgotICBRdWlubGFuLgotCi0tIElzc3VlICM3MTMzOiBTU0wgb2JqZWN0cyBub3cgc3VwcG9ydCB0aGUgbmV3IGJ1ZmZlciBBUEkuCi0KLS0gSXNzdWUgIzE0ODg5NDM6IGRpZmZsaWIuRGlmZmVyKCkgZG9lc24ndCBhbHdheXMgYWRkIGhpbnRzIGZvciB0YWIgY2hhcmFjdGVycy4KLQotLSBJc3N1ZSAjNjEyMzogdGFyZmlsZSBub3cgb3BlbnMgZW1wdHkgYXJjaGl2ZXMgY29ycmVjdGx5IGFuZCBjb25zaXN0ZW50bHkKLSAgcmFpc2VzIFJlYWRFcnJvciBvbiBlbXB0eSBmaWxlcy4KLQotLSBJc3N1ZSAjNzM1NDogZGlzdHV0aWxzLnRlc3RzLnRlc3RfbXN2Yzljb21waWxlciAtIGRyYWdmdWxsd2luZG93cyBjYW4gYmUgMi4KLQotLSBJc3N1ZSAjNTAzNzogUHJveHkgdGhlIF9fYnl0ZXNfXyBzcGVjaWFsIG1ldGhvZCBpbnN0ZWFkIHRvIF9fYnl0ZXNfXyBpbnN0ZWFkCi0gIG9mIF9fc3RyX18uCi0KLS0gSXNzdWUgIzczNDE6IENsb3NlIHRoZSBpbnRlcm5hbCBmaWxlIG9iamVjdCBpbiB0aGUgVGFyRmlsZSBjb25zdHJ1Y3RvciBpbiBjYXNlCi0gIG9mIGFuIGVycm9yLgotCi0tIElzc3VlICM3MjkzOiBkaXN0dXRpbHMudGVzdF9tc3ZjOWNvbXBpbGVyIGlzIGZpeGVkIHRvIHdvcmsgb24gYW55IGZyZXNoCi0gIFdpbmRvd3MgYm94LiBIZWxwIHByb3ZpZGVkIGJ5IERhdmlkIEJvbGVuLgotCi0tIElzc3VlICMyMDU0OiBmdHBsaWIgbm93IHByb3ZpZGVzIGFuIEZUUF9UTFMgY2xhc3MgdG8gZG8gc2VjdXJlIEZUUCB1c2luZyBUTFMKLSAgb3IgU1NMLiAgUGF0Y2ggYnkgR2lhbXBhb2xvIFJvZG9sYScuCi0KLS0gSXNzdWUgIzczMjg6IHB5ZG9jIG5vIGxvbmdlciBjb3JydXB0cyBzeXMucGF0aCB3aGVuIHJ1biB3aXRoIHRoZSAnLW0nIHN3aXRjaC4KLQotLSBJc3N1ZSAjNDk2OTogVGhlIG1pbWV0eXBlcyBtb2R1bGUgbm93IHJlYWRzIHRoZSBNSU1FIGRhdGFiYXNlIGZyb20gdGhlCi0gIHJlZ2lzdHJ5IHVuZGVyIFdpbmRvd3MuICBQYXRjaCBieSBHYWJyaWVsIEdlbmVsbGluYS4KLQotLSBJc3N1ZSAjNjgxNjogcnVucHkgbm93IHByb3ZpZGVzIGEgcnVuX3BhdGggZnVuY3Rpb24gdGhhdCBhbGxvd3MgUHl0aG9uIGNvZGUgdG8KLSAgZXhlY3V0ZSBmaWxlIHBhdGhzIHRoYXQgcmVmZXIgdG8gc291cmNlIG9yIGNvbXBpbGVkIFB5dGhvbiBmaWxlcyBhcyB3ZWxsIGFzCi0gIHppcGZpbGVzLCBkaXJlY3RvcmllcyBhbmQgb3RoZXIgdmFsaWQgc3lzLnBhdGggZW50cmllcyB0aGF0IGNvbnRhaW4gYQotICBfX21haW5fXy5weSBmaWxlLiAgVGhpcyBhbGxvd3MgYXBwbGljYXRpb25zIHRoYXQgcnVuIG90aGVyIFB5dGhvbiBzY3JpcHRzIHRvCi0gIHN1cHBvcnQgdGhlIHNhbWUgZmxleGliaWxpdHkgYXMgdGhlIENQeXRob24gY29tbWFuZCBsaW5lIGl0c2VsZi4KLQotLSBJc3N1ZSAjNzMxODogbXVsdGlwcm9jZXNzaW5nIG5vdyB1c2VzIGEgdGltZW91dCB3aGVuIGl0IGZhaWxzIHRvIGVzdGFibGlzaCBhCi0gIGNvbm5lY3Rpb24gd2l0aCBhbm90aGVyIHByb2Nlc3MsIHJhdGhlciB0aGFuIGxvb3BpbmcgZW5kbGVzc2x5LiAgVGhlIGRlZmF1bHQKLSAgdGltZW91dCBpcyAyMCBzZWNvbmRzLCB3aGljaCBzaG91bGQgYmUgYW1wbHkgc3VmZmljaWVudCBmb3IgbG9jYWwgY29ubmVjdGlvbnMuCi0KLS0gSXNzdWUgIzcxOTc6IEFsbG93IHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyIG9iamVjdHMgdG8gYmUgcGlja2xlZCBhbmQKLSAgdW5waWNrbGVkLiAgVGhpcyBmaXhlcyBjcmFzaGVzIHVuZGVyIFdpbmRvd3Mgd2hlbiB0cnlpbmcgdG8gcnVuCi0gIHRlc3RfbXVsdGlwcm9jZXNzaW5nIGluIHZlcmJvc2UgbW9kZS4KLQotLSBJc3N1ZSAjNzg5MzogYGB1bml0dGVzdC5UZXh0VGVzdFJlc3VsdGBgIGlzIG1hZGUgcHVibGljIGFuZCBhIGBgcmVzdWx0Y2xhc3NgYAotICBhcmd1bWVudCBhZGRlZCB0byB0aGUgVGV4dFRlc3RSdW5uZXIgY29uc3RydWN0b3IgYWxsb3dpbmcgYSBkaWZmZXJlbnQgcmVzdWx0Ci0gIGNsYXNzIHRvIGJlIHVzZWQgd2l0aG91dCBoYXZpbmcgdG8gc3ViY2xhc3MuCi0KLS0gSXNzdWUgIzc1ODg6IGBgdW5pdHRlc3QuVGV4dFRlc3RSZXN1bHQuZ2V0RGVzY3JpcHRpb25gYCBub3cgaW5jbHVkZXMgdGhlIHRlc3QKLSAgbmFtZSBpbiBmYWlsdXJlIHJlcG9ydHMgZXZlbiBpZiB0aGUgdGVzdCBoYXMgYSBkb2NzdHJpbmcuCi0KLS0gSXNzdWUgIzMwMDE6IEFkZCBhIEMgaW1wbGVtZW50YXRpb24gb2YgcmVjdXJzaXZlIGxvY2tzIHdoaWNoIGlzIHVzZWQgYnkKLSAgZGVmYXVsdCB3aGVuIGluc3RhbnRpYXRpbmcgYSBgdGhyZWFkaW5nLlJMb2NrYCBvYmplY3QuIFRoaXMgbWFrZXMgcmVjdXJzaXZlCi0gIGxvY2tzIGFzIGZhc3QgYXMgcmVndWxhciBub24tcmVjdXJzaXZlIGxvY2tzIChwcmV2aW91c2x5LCB0aGV5IHdlcmUgc2xvd2VyIGJ5Ci0gIDEweCB0byAxNXgpLgotCi0tIElzc3VlICM3MjgyOiBGaXggYSBtZW1vcnkgbGVhayB3aGVuIGFuIFJMb2NrIHdhcyB1c2VkIGluIGEgdGhyZWFkIG90aGVyIHRoYW4KLSAgdGhvc2Ugc3RhcnRlZCB0aHJvdWdoIGB0aHJlYWRpbmcuVGhyZWFkYCAoZm9yIGV4YW1wbGUsIHVzaW5nCi0gIGBfdGhyZWFkLnN0YXJ0X25ld190aHJlYWQoKWApLgotCi0tIElzc3VlICM3MTg3OiBJbXBvcnRsaWIgd291bGQgbm90IHNpbGVuY2UgdGhlIElPRXJyb3IgcmFpc2VkIHdoZW4gdHJ5aW5nIHRvCi0gIHdyaXRlIG5ldyBieXRlY29kZSB3aGVuIGl0IHdhcyBtYWRlIHJlYWQtb25seS4KLQotLSBJc3N1ZSAjNzI2NDogRml4IGEgcG9zc2libGUgZGVhZGxvY2sgd2hlbiBkZWFsbG9jYXRpbmcgdGhyZWFkLWxvY2FsIG9iamVjdHMKLSAgd2hpY2ggYXJlIHBhcnQgb2YgYSByZWZlcmVuY2UgY3ljbGUuCi0KLS0gSXNzdWUgIzcyMTE6IEFsbG93IDY0LWJpdCB2YWx1ZXMgZm9yIHRoZSBgaWRlbnRgIGFuZCBgZGF0YWAgZmllbGRzIG9mIGtldmVudAotICBvYmplY3RzIG9uIDY0LWJpdCBzeXN0ZW1zLiAgUGF0Y2ggYnkgTWljaGFlbCBCcm9naHRvbi4KLQotLSBJc3N1ZSAjNjg5NjogbWFpbGJveC5NYWlsZGlyIG5vdyBpbnZhbGlkYXRlcyBpdHMgaW50ZXJuYWwgY2FjaGUgZWFjaCB0aW1lIGEKLSAgbW9kaWZpY2F0aW9uIGlzIGRvbmUgdGhyb3VnaCBpdC4gIFRoaXMgZml4ZXMgaW5jb25zaXN0ZW5jaWVzIGFuZCB0ZXN0IGZhaWx1cmVzCi0gIG9uIHN5c3RlbXMgd2l0aCBzbGlnaHRseSBib2d1cyBtdGltZSBiZWhhdmlvdXIuCi0KLS0gSXNzdWUgIzcyNDYgJiBJc3N1ZSAjNzIwODogZ2V0cGFzcyBub3cgcHJvcGVybHkgZmx1c2hlcyBpbnB1dCBiZWZvcmUgcmVhZGluZwotICBmcm9tIHN0ZGluIHNvIHRoYXQgZXhpc3RpbmcgaW5wdXQgZG9lcyBub3QgY29uZnVzZSBpdCBhbmQgbGVhZCB0byBpbmNvcnJlY3QKLSAgZW50cnkgb3IgYW4gSU9FcnJvci4gIEl0IGFsc28gcHJvcGVybHkgZmx1c2hlcyBpdCBhZnRlcndhcmRzIHRvIGF2b2lkIHRoZQotICB0ZXJtaW5hbCBlY2hvaW5nIHRoZSBpbnB1dCBhZnRlcndhcmRzIG9uIE9TZXMgc3VjaCBhcyBTb2xhcmlzLgotCi0tIElzc3VlICM3MjMzOiBGaXggYSBudW1iZXIgb2YgdHdvLWFyZ3VtZW50IERlY2ltYWwgbWV0aG9kcyB0byBtYWtlIHN1cmUgdGhhdAotICB0aGV5IGFjY2VwdCBhbiBpbnQgb3IgbG9uZyBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LiAgQWxzbyBmaXggYnVnZ3kgaGFuZGxpbmcgb2YKLSAgbGFyZ2UgYXJndW1lbnRzICh0aG9zZSB3aXRoIGNvZWZmaWNpZW50IGxvbmdlciB0aGFuIHRoZSBjdXJyZW50IHByZWNpc2lvbikgaW4KLSAgc2hpZnQgYW5kIHJvdGF0ZS4KLQotLSBJc3N1ZSAjNDc1MDogU3RvcmUgdGhlIGJhc2VuYW1lIG9mIHRoZSBvcmlnaW5hbCBmaWxlbmFtZSBpbiB0aGUgZ3ppcCBGTkFNRQotICBoZWFkZXIgYXMgcmVxdWlyZWQgYnkgUkZDIDE5NTIuCi0KLS0gSXNzdWUgIzExODA6IEFkZGVkIGEgbmV3IGdsb2JhbCBvcHRpb24gdG8gaWdub3JlIH4vLnB5ZGlzdHV0aWxzLmNmZyBpbgotICBEaXN0dXRpbHMuCi0KLS0gSXNzdWUgIzcyMTg6IEZpeCB0ZXN0X3NpdGUgZm9yIHdpbjMyLCB0aGUgZGlyZWN0b3J5IGNvbXBhcmlzb24gd2FzIGRvbmUgd2l0aAotICBhbiB1cHBlcmNhc2UuCi0KLS0gSXNzdWUgIzcyMDU6IEZpeCBhIHBvc3NpYmxlIGRlYWRsb2NrIHdoZW4gdXNpbmcgYSBCWjJGaWxlIG9iamVjdCBmcm9tCi0gIHNldmVyYWwgdGhyZWFkcyBhdCBvbmNlLgotCi0tIElzc3VlICM3MDc3OiBsb2dnaW5nOiBTeXNMb2dIYW5kbGVyIG5vdyB0cmVhdHMgVW5pY29kZSBhcyBwZXIgUkZDIDU0MjQuCi0KLS0gSXNzdWUgIzcwOTk6IERlY2ltYWwuaXNfbm9ybWFsIG5vdyByZXR1cm5zIFRydWUgZm9yIG51bWJlcnMgd2l0aCBleHBvbmVudAotICBsYXJnZXIgdGhhbiBlbWF4LgotCi0tIElzc3VlICM3MDgwOiBsb2NhbGUuc3RyeGZybSgpIHJhaXNlcyBhIE1lbW9yeUVycm9yIG9uIDY0LWJpdCBub24tV2luZG93cwotICBwbGF0Zm9ybXMsIGFuZCBhc3NvcnRlZCBsb2NhbGUgZml4ZXMgYnkgRGVyayBEcnVra2VyLgotCi0tIElzc3VlICM1ODMzOiBGaXggZXh0cmEgc3BhY2UgY2hhcmFjdGVyIGluIHJlYWRsaW5lIGNvbXBsZXRpb24gd2l0aCB0aGUgR05VCi0gIHJlYWRsaW5lIGxpYnJhcnkgdmVyc2lvbiA2LjAuCi0KLS0gSXNzdWUgIzY4OTQ6IEZpeGVkIHRoZSBpc3N1ZSB1cmxsaWIyIGRvZXNuJ3QgcmVzcGVjdCAibm9fcHJveHkiIGVudmlyb25tZW50LgotCi0tIElzc3VlICM3MDg2OiBBZGRlZCBUQ1Agc3VwcG9ydCB0byBTeXNMb2dIYW5kbGVyLCBhbmQgdGlkaWVkIHVwIHNvbWUKLSAgYW5hY2hyb25pc21zIGluIHRoZSBjb2RlIHdoaWNoIHdlcmUgYSByZWxpYyBvZiAxLjUuMiBjb21wYXRpYmlsaXR5LgotCi0tIElzc3VlICM3MDgyOiBXaGVuIGZhbGxpbmcgYmFjayB0byB0aGUgTUlNRSAnbmFtZScgcGFyYW1ldGVyLCB0aGUgY29ycmVjdCBwbGFjZQotICB0byBsb29rIGZvciBpdCBpcyB0aGUgQ29udGVudC1UeXBlIGhlYWRlci4KLQotLSBNYWtlIHRva2VuaXplLmRldGVjdF9jb2RpbmcoKSBub3JtYWxpemUgdXRmLTggYW5kIGlzby04ODU5LTEgdmFyaWFudHMgbGlrZSB0aGUKLSAgYnVpbHRpbiB0b2tlbml6ZXIuCi0KLS0gSXNzdWUgIzcwNDg6IEZvcmNlIERlY2ltYWwubG9nYiB0byByb3VuZCBpdHMgcmVzdWx0IHdoZW4gdGhhdCByZXN1bHQgaXMgdG9vCi0gIGxhcmdlIHRvIGZpdCBpbiB0aGUgY3VycmVudCBwcmVjaXNpb24uCi0KLS0gSXNzdWUgIzYyMzYsICM2MzQ4OiBGaXggdmFyaW91cyBmYWlsdXJlcyBpbiB0aGUgSS9PIGxpYnJhcnkgdW5kZXIgQUlYIGFuZAotICBvdGhlciBwbGF0Zm9ybXMsIHdoZW4gdXNpbmcgYSBub24tZ2NjIGNvbXBpbGVyLiBQYXRjaCBieSBEZXJrIERydWtrZXIuCi0KLS0gSXNzdWUgIzQ2MDY6IFBhc3NpbmcgJ05vbmUnIGlmIGN0eXBlcyBhcmd0eXBlIGlzIHNldCB0byBQT0lOVEVSKC4uLikgIGRvZXMgbm93Ci0gIGFsd2F5cyByZXN1bHQgaW4gTlVMTC4KLQotLSBJc3N1ZSAjNTA0MjogU3RydWN0dXJlIHN1Yi1zdWJjbGFzcyBkb2VzIG5vdyBpbml0aWFsaXplIGNvcnJlY3RseSB3aXRoIGJhc2UKLSAgY2xhc3MgcG9zaXRpb25hbCBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzY4ODI6IEltcG9ydCB1dWlkIGNyZWF0ZXMgem9tYmllcyBwcm9jZXNzZXMuCi0KLS0gSXNzdWUgIzY2MzU6IEZpeCBwcm9maWxlciBwcmludGluZyB1c2FnZSBtZXNzYWdlLgotCi0tIElzc3VlICM2ODU2OiBBZGQgYSBmaWx0ZXIga2V5d29yZCBhcmd1bWVudCB0byBUYXJGaWxlLmFkZCgpLgotCi0tIElzc3VlICM2ODg4OiBwZGIncyBhbGlhcyBjb21tYW5kIHdhcyBicm9rZW4gd2hlbiBubyBhcmd1bWVudHMgd2VyZSBnaXZlbi4KLQotLSBJc3N1ZSAjNjg1NzogRGVmYXVsdCBmb3JtYXQoKSBhbGlnbm1lbnQgc2hvdWxkIGJlICc+JyBmb3IgRGVjaW1hbCBpbnN0YW5jZXMuCi0KLS0gSXNzdWUgIzY3OTU6IGludChEZWNpbWFsKCduYW4nKSkgbm93IHJhaXNlcyBWYWx1ZUVycm9yIGluc3RlYWQgb2YgcmV0dXJuaW5nCi0gIE5hTiBvciByYWlzaW5nIEludmFsaWRDb250ZXh0LiAgQWxzbywgZml4IGluZmluaXRlIHJlY3Vyc2lvbiBpbgotICBsb25nKERlY2ltYWwoJ25hbicpKS4KLQotLSBJc3N1ZSAjNjg1MDogRml4IGJ1ZyBpbiBEZWNpbWFsLl9wYXJzZV9mb3JtYXRfc3BlY2lmaWVyIGZvciBmb3JtYXRzIHdpdGggbm8KLSAgdHlwZSBzcGVjaWZpZXIuCi0KLS0gSXNzdWUgIzYyMzk6IGN0eXBlcy5jX2NoYXJfcCByZXR1cm4gdmFsdWUgbXVzdCByZXR1cm4gYnl0ZXMuCi0KLS0gSXNzdWUgIzY4Mzg6IFVzZSBhIGxpc3QgdG8gYWNjdW11bGF0ZSB0aGUgdmFsdWUgaW5zdGVhZCBvZiByZXBlYXRlZGx5Ci0gIGNvbmNhdGVuYXRpbmcgc3RyaW5ncyBpbiBodHRwLmNsaWVudCdzIEhUVFBSZXNwb25zZS5fcmVhZF9jaHVua2VkIHByb3ZpZGluZyBhCi0gIHNpZ25pZmljYW50IHNwZWVkIGluY3JlYXNlIHdoZW4gZG93bmxvYWRpbmcgbGFyZ2UgZmlsZXMgc2VydmVuZCB3aXRoIGEKLSAgVHJhbnNmZXItRW5jb2Rpbmcgb2YgJ2NodW5rZWQnLgotCi0tIFRyeWluZyB0byBpbXBvcnQgYSBzdWJtb2R1bGUgZnJvbSBhIG1vZHVsZSB0aGF0IGlzIG5vdCBhIHBhY2thZ2UsIEltcG9ydEVycm9yCi0gIHNob3VsZCBiZSByYWlzZWQsIG5vdCBBdHRyaWJ1dGVFcnJvci4KLQotLSBXaGVuIHRoZSBnbG9iYWxzIHBhc3QgdG8gaW1wb3J0bGliLl9faW1wb3J0X18oKSBoYXMgX19wYWNrYWdlX18gc2V0IHRvIE5vbmUsCi0gIGZhbGwgYmFjayB0byBjb21wdXRpbmcgd2hhdCBfX3BhY2thZ2VfXyBzaG91bGQgYmUgaW5zdGVhZCBvZiBnaXZpbmcgdXAuCi0KLS0gUmFpc2UgYSBUeXBlRXJyb3Igd2hlbiB0aGUgbmFtZSBvZiBhIG1vZHVsZSB0byBiZSBpbXBvcnRlZCBmb3IKLSAgaW1wb3J0bGliLl9faW1wb3J0X18gaXMgbm90IGEgc3RyaW5nICh3YXMgcmFpc2luZyBhbiBBdHRyaWJ1dGVFcnJvciBiZWZvcmUpLgotCi0tIEFsbG93IHRoZSBmcm9tbGlzdCBwYXNzZWQgaW50byBpbXBvcnRsaWIuX19pbXBvcnRfXyB0byBiZSBhbnkgaXRlcmFibGUuCi0KLS0gSGF2ZSBpbXBvcnRsaWIgcmFpc2UgSW1wb3J0RXJyb3IgaWYgTm9uZSBpcyBmb3VuZCBpbiBzeXMubW9kdWxlcy4KLQotLSBJc3N1ZSAjNjA1NDogRG8gbm90IG5vcm1hbGl6ZSBzdG9yZWQgcGF0aG5hbWVzIGluIHRhcmZpbGUuCi0KLS0gSXNzdWUgIzY3OTQ6IEZpeCBEZWNpbWFsLmNvbXBhcmVfdG90YWwgYW5kIERlY2ltYWwuY29tcGFyZV90b3RhbF9tYWc6IE5hTgotICBwYXlsb2FkcyBhcmUgbm93IG9yZGVyZWQgYnkgaW50ZWdlciB2YWx1ZSByYXRoZXIgdGhhbiBsZXhpY29ncmFwaGljYWxseS4KLQotLSBJc3N1ZSAjMTM1Njk2OTogQWRkIG1pc3NpbmcgaW5mbyBtZXRob2RzIGluIHRpeC5ITGlzdC4KLQotLSBJc3N1ZSAjMTUyMjU4NzogTmV3IGNvbnN0YW50cyBhbmQgbWV0aG9kcyBmb3IgdGhlIHRpeC5HcmlkIHdpZGdldC4KLQotLSBJc3N1ZSAjMTI1MDQ2OTogRml4IHRoZSByZXR1cm4gdmFsdWUgb2YgdGl4LlBhbmVkV2luZG93LnBhbmVzLgotCi0tIElzc3VlICMxMTE5NjczOiBEbyBub3Qgb3ZlcnJpZGUgdGtpbnRlci5UZXh0IG1ldGhvZHMgd2hlbiBjcmVhdGluZyBhCi0gIFNjcm9sbGVkVGV4dC4KLQotLSBJc3N1ZSAjNjY2NTogRml4IGZubWF0Y2ggdG8gcHJvcGVybHkgbWF0Y2ggZmlsZW5hbWVzIHdpdGggbmV3bGluZXMgaW4gdGhlbS4KLQotLSBJc3N1ZSAjMTEzNTogQWRkIHRoZSBYVmlldyBhbmQgWVZpZXcgbWl4LWlucyB0byBhdm9pZCBkdXBsaWNhdGluZyB0aGUgeHZpZXcqCi0gIGFuZCB5dmlldyogbWV0aG9kcy4KLQotLSBJc3N1ZSAjNjYyOTogRml4IGEgZGF0YSBjb3JydXB0aW9uIGlzc3VlIGluIHRoZSBuZXcgSS9PIGxpYnJhcnksIHdoaWNoIGNvdWxkCi0gIG9jY3VyIHdoZW4gd3JpdGluZyB0byBhIEJ1ZmZlcmVkUmFuZG9tIG9iamVjdCAoZS5nLiBhIGZpbGUgb3BlbmVkIGluICJyYisiIG9yCi0gICJ3YisiIG1vZGUpIGFmdGVyIGhhdmluZyBidWZmZXJlZCBhIGNlcnRhaW4gYW1vdW50IG9mIGRhdGEgZm9yIHJlYWRpbmcuIFRoaXMKLSAgYnVnIHdhcyBub3QgcHJlc2VudCBpbiB0aGUgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24uCi0KLS0gSXNzdWUgIzY2MjI6IEZpeCAibG9jYWwgdmFyaWFibGUgJ3NlY3JldCcgcmVmZXJlbmNlZCBiZWZvcmUgYXNzaWdubWVudCIgYnVnIGluCi0gIFBPUDMuYXBvcC4KLQotLSBJc3N1ZSAjMjcxNTogUmVtb3ZlIHJlbW5hbnRzIG9mIENhcmJvbi5GaWxlIGZyb20gYmluaGV4IG1vZHVsZS4KLQotLSBJc3N1ZSAjNjU5NTogVGhlIERlY2ltYWwgY29uc3RydWN0b3Igbm93IGFsbG93cyBhcmJpdHJhcnkgVW5pY29kZSBkZWNpbWFsCi0gIGRpZ2l0cyBpbiBpbnB1dCwgYXMgcmVjb21tZW5kZWQgYnkgdGhlIHN0YW5kYXJkLiAgUHJldmlvdXNseSBpdCB3YXMgcmVzdHJpY3RlZAotICB0byBhY2NlcHRpbmcgWzAtOV0uCi0KLS0gSXNzdWUgIzYxMDY6IHRlbG5ldGxpYi5UZWxuZXQucHJvY2Vzc19yYXdxIGRvZXNuJ3QgaGFuZGxlIGRlZmF1bHQgV0lMTC9XT05UCi0gIERPL0RPTlQgY29ycmVjdGx5LgotCi0tIElzc3VlICMxNDI0MTUyOiBGaXggZm9yIGh0dHAuY2xpZW50LCB1cmxsaWIucmVxdWVzdCB0byBzdXBwb3J0IFNTTCB3aGlsZQotICB3b3JraW5nIHRocm91Z2ggcHJveHkuICBPcmlnaW5hbCBwYXRjaCBieSBDaHJpc3RvcGhlciBMaSwgY2hhbmdlcyBtYWRlIGJ5Ci0gIFNlbnRoaWwgS3VtYXJhbi4KLQotLSBBZGQgaW1wb3J0bGliLmFiYy5FeGVjdXRpb25Mb2FkZXIgdG8gcmVwcmVzZW50IHRoZSBQRVAgMzAyIHByb3RvY29sIGZvcgotICBsb2FkZXJzIHRoYXQgYWxsb3cgZm9yIG1vZHVsZXMgdG8gYmUgZXhlY3V0ZWQuIEJvdGggaW1wb3J0bGliLmFiYy5QeUxvYWRlciBhbmQKLSAgUHlQeWNMb2FkZXIgaW5oZXJpdCBmcm9tIHRoaXMgY2xhc3MgYW5kIHByb3ZpZGUgaW1wbGVtZW50YXRpb25zIGluIHJlbGF0aW9uIHRvCi0gIG90aGVyIG1ldGhvZHMgcmVxdWlyZWQgYnkgdGhlIEFCQ3MuCi0KLS0gaW1wb3J0bGliLmFiYy5QeUxvYWRlciBkaWQgbm90IGluaGVyaXQgZnJvbSBpbXBvcnRsaWIuYWJjLlJlc291cmNlTG9hZGVyIGxpa2UKLSAgdGhlIGRvY3VtZW50YXRpb24gc2FpZCBpdCBkaWQgZXZlbiB0aG91Z2ggdGhlIGNvZGUgaW4gUHlMb2FkZXIgcmVsaWVkIG9uIHRoZQotICBhYnN0cmFjdCBtZXRob2QgcmVxdWlyZWQgYnkgUmVzb3VyY2VMb2FkZXIuCi0KLS0gSXNzdWUgIzY0MzE6IE1ha2UgRnJhY3Rpb24gdHlwZSByZXR1cm4gTm90SW1wbGVtZW50ZWQgd2hlbiBpdCBkb2Vzbid0IGtub3cgaG93Ci0gIHRvIGhhbmRsZSBhIGNvbXBhcmlzb24gd2l0aG91dCBsb3NzIG9mIHByZWNpc2lvbi4gIEFsc28gYWRkIGNvcnJlY3QgaGFuZGxpbmcKLSAgb2YgaW5maW5pdGllcyBhbmQgbmFucyBmb3IgY29tcGFyaXNvbnMgd2l0aCBmbG9hdC4KLQotLSBJc3N1ZSAjNjQxNTogRml4ZWQgd2FybmluZ3Mud2FybiBzZWdmYXVsdCBvbiBiYWQgZm9ybWF0dGVkIHN0cmluZy4KLQotLSBJc3N1ZSAjNjM1ODogVGhlIGV4aXQgc3RhdHVzIG9mIGEgY29tbWFuZCBzdGFydGVkIHdpdGggb3MucG9wZW4oKSB3YXMgcmVwb3J0ZWQKLSAgZGlmZmVyZW50bHkgdGhhbiBpdCBkaWQgd2l0aCBweXRob24gMi54LgotCi0tIElzc3VlICM2MzIzOiBUaGUgcGRiIGRlYnVnZ2VyIGRpZCBub3QgZXhpdCB3aGVuIHJ1bm5pbmcgYSBzY3JpcHQgd2l0aCBhIHN5bnRheAotICBlcnJvci4KLQotLSBJc3N1ZSAjMzM5MjogVGhlIHN1YnByb2Nlc3MgY29tbXVuaWNhdGUoKSBtZXRob2Qgbm8gbG9uZ2VyIGZhaWxzIGluIHNlbGVjdCgpCi0gIHdoZW4gZmlsZSBkZXNjcmlwdG9ycyBhcmUgbGFyZ2U7IGNvbW11bmljYXRlKCkgbm93IHVzZXMgcG9sbCgpIHdoZW4gcG9zc2libGUuCi0KLS0gSXNzdWUgIzYzNjk6IEZpeCBhbiBSTEUgZGVjb21wcmVzc2lvbiBidWcgaW4gdGhlIGJpbmhleCBtb2R1bGUuCi0KLS0gSXNzdWUgIzYzNDQ6IEZpeGVkIGEgY3Jhc2ggb2YgbW1hcC5yZWFkKCkgd2hlbiBwYXNzZWQgYSBuZWdhdGl2ZSBhcmd1bWVudC4KLQotLSBUaGUgZGVwcmVjYXRlZCBmdW5jdGlvbiBzdHJpbmcubWFrZXRyYW5zIGhhcyBiZWVuIHJlbW92ZWQuCi0KLS0gSXNzdWUgIzQwMDU6IEZpeGVkIGEgY3Jhc2ggb2YgcHlkb2Mgd2hlbiB0aGVyZSB3YXMgYSB6aXAgZmlsZSBwcmVzZW50IGluCi0gIHN5cy5wYXRoLgotCi0tIElzc3VlICM2MjE4OiBpby5TdHJpbmdJTyBhbmQgaW8uQnl0ZXNJTyBpbnN0YW5jZXMgYXJlIG5vdyBwaWNrbGFibGUuCi0KLS0gVGhlIG9zLmdldF9leGVjX3BhdGgoKSBmdW5jdGlvbiB0byByZXR1cm4gdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdGhhdCB3aWxsIGJlCi0gIHNlYXJjaGVkIGZvciBhbiBleGVjdXRhYmxlIHdoZW4gbGF1bmNoaW5nIGEgc3VicHJvY2VzcyB3YXMgYWRkZWQuCi0KLS0gSXNzdWUgIzc0ODE6IFdoZW4gYSB0aHJlYWRpbmcuVGhyZWFkIGZhaWxlZCB0byBzdGFydCBpdCB3b3VsZCBsZWF2ZSB0aGUKLSAgaW5zdGFuY2Ugc3R1Y2sgaW4gaW5pdGlhbCBzdGF0ZSBhbmQgcHJlc2VudCBpbiB0aHJlYWRpbmcuZW51bWVyYXRlKCkuCi0KLS0gSXNzdWUgIzEwNjgyNjg6IFRoZSBzdWJwcm9jZXNzIG1vZHVsZSBub3cgaGFuZGxlcyBFSU5UUiBpbiBpbnRlcm5hbCBvcy53YWl0cGlkCi0gIGFuZCBvcy5yZWFkIHN5c3RlbSBjYWxscyB3aGVyZSBhcHByb3ByaWF0ZS4KLQotLSBJc3N1ZSAjNjcyOTogQWRkZWQgY3R5cGVzLmNfc3NpemVfdCB0byByZXByZXNlbnQgc3NpemVfdC4KLQotLSBJc3N1ZSAjNjI0NzogVGhlIGFyZ3BhcnNlIG1vZHVsZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3RhbmRhcmQgbGlicmFyeS4KLQotLSBJc3N1ZSAjODIzNTogX3NvY2tldDogQWRkIHRoZSBjb25zdGFudCBgYFNPX1NFVEZJQmBgLiAgU09fU0VURklCIGlzIGEgc29ja2V0Ci0gIG9wdGlvbiBhdmFpbGFibGUgb24gRnJlZUJTRCA3LjEgYW5kIG5ld2VyLgotCi0tIElzc3VlICM5MzE1OiBGaXggZm9yIHRoZSB0cmFjZSBtb2R1bGUgdG8gcmVjb3JkIGNvcnJlY3QgY2xhc3MgbmFtZQotICBmb3IgdHJhY2luZyBtZXRob2RzLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjOTk1OTogVHdlYWsgZm9ybXVsYSB1c2VkIGZvciBjb21wdXRpbmcgbWF0aC5sb2cgb2YgYW4gaW50ZWdlciwKLSAgbWFraW5nIGl0IG1hcmdpbmFsbHkgbW9yZSBhY2N1cmF0ZSBmb3IgZXhhY3QgcG93ZXJzIG9mIDIuCi0KLS0gSXNzdWUgIzk0MjI6IEZpeCBtZW1vcnkgbGVhayB3aGVuIHJlLWluaXRpYWxpemluZyBhIHN0cnVjdC5TdHJ1Y3Qgb2JqZWN0LgotCi0tIElzc3VlICM3OTAwOiBUaGUgZ2V0Z3JvdXBzKDIpIHN5c3RlbSBjYWxsIG9uIE1hY09TWCBiZWhhdmVzIHJhdGhlciBvZGRseQotICBjb21wYXJlZCB0byBvdGhlciB1bml4IHN5c3RlbXMuIEluIHBhcnRpY3VsYXIsIG9zLmdldGdyb3VwcygpIGRvZXMgbm90IHJlZmxlY3QKLSAgYW55IGNoYW5nZXMgbWFkZSB1c2luZyBvcy5zZXRncm91cHMoKSBidXQgYmFzaWNseSBhbHdheXMgcmV0dXJucyB0aGUgc2FtZQotICBpbmZvcm1hdGlvbiBhcyB0aGUgaWQgY29tbWFuZC4gb3MuZ2V0Z3JvdXBzKCkgY2FuIG5vdyByZXR1cm4gbW9yZSB0aGFuIDE2Ci0gIGdyb3VwcyBvbiBNYWNPU1guCi0KLS0gSXNzdWUgIzYwOTU6IE1ha2UgZGlyZWN0b3J5IGFyZ3VtZW50IHRvIG9zLmxpc3RkaXIgb3B0aW9uYWwuCi0KLS0gSXNzdWUgIzkyNzc6IEZpeCBidWcgaW4gc3RydWN0LnBhY2sgZm9yIGJvb2xzIGluIHN0YW5kYXJkIG1vZGUgKGUuZy4sCi0gIHN0cnVjdC5wYWNrKCc+PycpKTogaWYgY29udmVyc2lvbiB0byBib29sIHJhaXNlZCBhbiBleGNlcHRpb24gdGhlbiB0aGF0Ci0gIGV4Y2VwdGlvbiB3YXNuJ3QgcHJvcGVybHkgcHJvcGFnYXRlZCBvbiBtYWNoaW5lcyB3aGVyZSBjaGFyIGlzIHVuc2lnbmVkLgotCi0tIElzc3VlICM1MTgwOiBGaXhlZCBhIGJ1ZyB0aGF0IHByZXZlbnRlZCBsb2FkaW5nIDIueCBwaWNrbGVzIGluIDMueCBweXRob24gd2hlbgotICB0aGV5IGNvbnRhaW4gaW5zdGFuY2VzIG9mIG9sZC1zdHlsZSBjbGFzc2VzLgotCi0tIElzc3VlICM5MTY1OiBBZGQgbmV3IGZ1bmN0aW9ucyBtYXRoLmlzZmluaXRlIGFuZCBjbWF0aC5pc2Zpbml0ZSwgdG8gYWNjb21wYW55Ci0gIGV4aXN0aW5nIGlzaW5mIGFuZCBpc25hbiBmdW5jdGlvbnMuCi0KLS0gSXNzdWUgIzE1NzgyNjk6IEltcGxlbWVudCBvcy5zeW1saW5rIGZvciBXaW5kb3dzIDYuMCsuICBQYXRjaCBieSBKYXNvbgotICBSLiBDb29tYnMuCi0KLS0gSW4gc3RydWN0LnBhY2ssIGNvcnJlY3RseSBwcm9wb2dhdGUgZXhjZXB0aW9ucyBmcm9tIGNvbXB1dGluZyB0aGUgdHJ1dGggb2YgYW4KLSAgb2JqZWN0IGluIHRoZSAnPycgZm9ybWF0LgotCi0tIElzc3VlICM5MDAwOiBkYXRldGltZS50aW1lem9uZSBvYmplY3RzIG5vdyBoYXZlIGV2YWwtZnJpZW5kbHkgcmVwci4KLQotLSBJbiB0aGUgbWF0aCBtb2R1bGUsIGNvcnJlY3RseSBsb29rdXAgX190cnVuY19fLCBfX2NlaWxfXywgYW5kIF9fZmxvb3JfXyBhcwotICBzcGVjaWFsIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzkwMDU6IFByZXZlbnQgdXRjdGltZXR1cGxlKCkgZnJvbSBwcm9kdWNpbmcgeWVhciAwIG9yIHllYXIgMTAsMDAwLgotICBQcmlvciB0byB0aGlzIGNoYW5nZSwgdGltZXpvbmUgYWRqdXN0bWVudCBpbiB1dGN0aW1ldHVwbGUoKSBjb3VsZCBwcm9kdWNlCi0gIHRtX3llYXIgdmFsdWUgb2YgMCBvciAxMCwwMDAuICBOb3cgYW4gT3ZlcmZsb3dFcnJvciBpcyByYWlzZWQgaW4gdGhlc2UgZWRnZQotICBjYXNlcy4KLQotLSBJc3N1ZSAjNjY0MTogVGhlIGBgZGF0ZXRpbWUuc3RycHRpbWVgYCBtZXRob2Qgbm93IHN1cHBvcnRzIHRoZSBgYCV6YGAKLSAgZGlyZWN0aXZlLiAgV2hlbiB0aGUgYGAlemBgIGRpcmVjdGl2ZSBpcyBwcmVzZW50IGluIHRoZSBmb3JtYXQgc3RyaW5nLCBhbgotICBhd2FyZSBgYGRhdGV0aW1lYGAgb2JqZWN0IGlzIHJldHVybmVkIHdpdGggYGB0emluZm9gYCBib3VuZCB0byBhCi0gIGBgZGF0ZXRpbWUudGltZXpvbmVgYCBpbnN0YW5jZSBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBwYXJzZWQgb2Zmc2V0LiAgSWYgYm90aAotICBgYCV6YGAgYW5kIGBgJVpgYCBhcmUgcHJlc2VudCwgdGhlIGRhdGEgaW4gYGAlWmBgIGZpZWxkIGlzIHVzZWQgZm9yIHRpbWV6b25lCi0gIG5hbWUsIGJ1dCBgYCVaYGAgZGF0YSB3aXRob3V0IGBgJXpgYCBpcyBkaXNjYXJkZWQuCi0KLS0gSXNzdWUgIzUwOTQ6IFRoZSBgYGRhdGV0aW1lYGAgbW9kdWxlIG5vdyBoYXMgYSBzaW1wbGUgY29uY3JldGUgY2xhc3MKLSAgaW1wbGVtZW50aW5nIGBgZGF0ZXRpbWUudHppbmZvYGAgaW50ZXJmYWNlLiAgSW5zdGFuY2VzIG9mIHRoZSBuZXcgY2xhc3MsCi0gIGBgZGF0ZXRpbWUudGltZXpvbmVgYCwgcmV0dXJuIGZpeGVkIG5hbWUgYW5kIFVUQyBvZmZzZXQgZnJvbSB0aGVpcgotICBgYHR6bmFtZShkdClgYCBhbmQgYGB1dGNvZmZzZXQoZHQpYGAgbWV0aG9kcy4gIFRoZSBgYGRzdChkdClgYCBtZXRob2QgYWx3YXlzCi0gIHJldHVybnMgYGBOb25lYGAuICBBIGNsYXNzIGF0dHJpYnV0ZSwgYGB1dGNgYCBjb250YWlucyBhbiBpbnN0YW5jZQotICByZXByZXNlbnRpbmcgdGhlIFVUQyB0aW1lem9uZS4gIE9yaWdpbmFsIHBhdGNoIGJ5IFJhZmUgS2FwbGFuLgotCi0tIElzc3VlICM4OTczOiBBZGQgX19hbGxfXyB0byBzdHJ1Y3QgbW9kdWxlOyB0aGlzIGVuc3VyZXMgdGhhdCBoZWxwKHN0cnVjdCkKLSAgaW5jbHVkZXMgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHN0cnVjdC5TdHJ1Y3QgY2xhc3MuCi0KLS0gSXNzdWUgIzMxMjk6IFRyYWlsaW5nIGRpZ2l0cyBpbiBzdHJ1Y3QgZm9ybWF0IHN0cmluZyBhcmUgbm8gbG9uZ2VyIGlnbm9yZWQuCi0gIEZvciBleGFtcGxlLCAiMSIgb3IgImlsaWIxMjMiIGFyZSBub3cgaW52YWxpZCBmb3JtYXRzIGFuZCBjYXVzZQotICBgYHN0cnVjdC5lcnJvcmBgIHRvIGJlIHJhaXNlZC4gIFBhdGNoIGJ5IENhbGViIERldmVyYXV4LgotCi0tIElzc3VlICM3Mzg0OiBJZiB0aGUgc3lzdGVtIHJlYWRsaW5lIGxpYnJhcnkgaXMgbGlua2VkIGFnYWluc3QgbmN1cnNlcywgdGhlCi0gIGN1cnNlcyBtb2R1bGUgbXVzdCBiZSBsaW5rZWQgYWdhaW5zdCBuY3Vyc2VzIGFzIHdlbGwuIE90aGVyd2lzZSBpdCBpcyBub3Qgc2FmZQotICB0byBsb2FkIGJvdGggdGhlIHJlYWRsaW5lIGFuZCBjdXJzZXMgbW9kdWxlcyBpbiBhbiBhcHBsaWNhdGlvbi4KLQotLSBJc3N1ZSAjMjgxMDogRml4IGNhc2VzIHdoZXJlIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5IEFQSSByZXR1cm5zIEVSUk9SX01PUkVfREFUQSwKLSAgcmVxdWlyaW5nIGEgcmUtdHJ5IGluIG9yZGVyIHRvIGdldCB0aGUgY29tcGxldGUgcmVzdWx0LgotCi0tIElzc3VlICM4NjkyOiBPcHRpbWl6ZSBtYXRoLmZhY3RvcmlhbDogcmVwbGFjZSB0aGUgcHJldmlvdXMgbmFpdmUgYWxnb3JpdGhtCi0gIHdpdGggYW4gaW1wcm92ZWQgJ2JpbmFyeS1zcGxpdCcgYWxnb3JpdGhtIHRoYXQgdXNlcyBmZXdlciBtdWx0aXBsaWNhdGlvbnMgYW5kCi0gIGFsbG93cyBtYW55IG9mIHRoZSBtdWx0aXBsaWNhdGlvbnMgdG8gYmUgcGVyZm9ybWVkIHVzaW5nIHBsYWluIEMgaW50ZWdlcgotICBhcml0aG1ldGljIGluc3RlYWQgb2YgUHlMb25nIGFyaXRobWV0aWMuICBBbHNvIHVzZXMgYSBsb29rdXAgdGFibGUgZm9yIHNtYWxsCi0gIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjODY3NDogRml4ZWQgYSBudW1iZXIgb2YgaW5jb3JyZWN0IG9yIHVuZGVmaW5lZC1iZWhhdmlvdXItaW5kdWNpbmcKLSAgb3ZlcmZsb3cgY2hlY2tzIGluIHRoZSBhdWRpb29wIG1vZHVsZS4KLQotLSBJc3N1ZSAjODY0NDogVGhlIGFjY3VyYWN5IG9mIHRkLnRvdGFsX3NlY29uZHMoKSBoYXMgYmVlbiBpbXByb3ZlZCAoYnkKLSAgY2FsY3VsYXRpbmcgd2l0aCBpbnRlZ2VyIGFyaXRobWV0aWMgaW5zdGVhZCBvZiBmbG9hdCBhcml0aG1ldGljIGludGVybmFsbHkpOgotICB0aGUgcmVzdWx0IGlzIG5vdyBhbHdheXMgY29ycmVjdGx5IHJvdW5kZWQsIGFuZCBpcyBlcXVpdmFsZW50IHRvIGBgdGQgLwotICB0aW1lZGVsdGEoc2Vjb25kcz0xKWBgLgotCi0tIElzc3VlICMyNzA2OiBBbGxvdyBkaXZpc2lvbiBvZiBhIHRpbWVkZWx0YSBieSBhbm90aGVyIHRpbWVkZWx0YTogdGltZWRlbHRhIC8KLSAgdGltZWRlbHRhLCB0aW1lZGVsdGEgJSB0aW1lZGVsdGEsIHRpbWVkZWx0YSAvLyB0aW1lZGVsdGEgYW5kIGRpdm1vZCh0aW1lZGVsdGEsCi0gIHRpbWVkZWx0YSkgYXJlIGFsbCBzdXBwb3J0ZWQuCi0KLS0gSXNzdWUgIzgzMTQ6IEZpeCB1bnNpZ25lZCBsb25nIGxvbmcgYnVnIGluIGxpYmZmaSBvbiBTcGFyYyB2OC4KLQotLSBJc3N1ZSAjODMwMDogV2hlbiBwYXNzaW5nIGEgbm9uLWludGVnZXIgYXJndW1lbnQgdG8gc3RydWN0LnBhY2sgd2l0aCBhbnkKLSAgaW50ZWdlciBmb3JtYXQgY29kZSwgc3RydWN0LnBhY2sgZmlyc3QgYXR0ZW1wdHMgdG8gY29udmVydCB0aGUgbm9uLWludGVnZXIKLSAgdXNpbmcgaXRzIF9faW5kZXhfXyBtZXRob2QuICBJZiB0aGF0IG1ldGhvZCBpcyBub24tZXhpc3RlbnQgb3IgcmFpc2VzCi0gIFR5cGVFcnJvciBpdCBnb2VzIG9uIHRvIHRyeSB0aGUgX19pbnRfXyBtZXRob2QsIGFzIGRlc2NyaWJlZCBiZWxvdy4KLQotLSBJc3N1ZSAjODE0MjogVXBkYXRlIGxpYmZmaSB0byB0aGUgMy4wLjkgcmVsZWFzZS4KLQotLSBJc3N1ZSAjNjk0OTogQWxsb3cgdGhlIF9kYm0gZXh0ZW5zaW9uIHRvIGJlIGJ1aWx0IHdpdGggZGIgNC44LnguCi0KLS0gSXNzdWUgIzY1NDQ6IEZpeCBhIHJlZmVyZW5jZSBsZWFrIGluIHRoZSBrcXVldWUgaW1wbGVtZW50YXRpb24ncyBlcnJvcgotICBoYW5kbGluZy4KLQotLSBTdG9wIHByb3ZpZGluZyBjcnRhc3NlbS5oIHN5bWJvbHMgd2hlbiBjb21waWxpbmcgd2l0aCBWaXN1YWwgU3R1ZGlvIDIwMTAsIGFzCi0gIG1zdmNyMTAwLmRsbCBpcyBub3QgYSBwbGF0Zm9ybSBhc3NlbWJseSBhbnltb3JlLgotCi0tIElzc3VlICM2NTA4OiBBZGQgcG9zaXgue2dldHJlc3VpZCxnZXRyZXNnaWQsc2V0cmVzdWlkLHNldHJlc2dpZH0uCi0KLS0gSXNzdWUgIzcwNzg6IFNldCBzdHJ1Y3QuX19kb2NfXyBmcm9tIF9zdHJ1Y3QuX19kb2NfXy4KLQotLSBJc3N1ZSAjMzM2NjogQWRkIGVyZiwgZXJmYywgZXhwbTEsIGdhbW1hLCBsZ2FtbWEgZnVuY3Rpb25zIHRvIG1hdGggbW9kdWxlLgotCi0tIElzc3VlICM2ODc3OiBJdCBpcyBub3cgcG9zc2libGUgdG8gbGluayB0aGUgcmVhZGxpbmUgZXh0ZW5zaW9uIHRvIHRoZSBsaWJlZGl0Ci0gIHJlYWRsaW5lIGVtdWxhdGlvbiBvbiBPU1ggMTAuNSBvciBsYXRlci4KLQotLSBJc3N1ZSAjNjg0ODogRml4IGN1cnNlcyBtb2R1bGUgYnVpbGQgZmFpbHVyZSBvbiBPUyBYIDEwLjYuCi0KLS0gRml4IGEgc2VnZmF1bHQgdGhhdCBjb3VsZCBiZSB0cmlnZ2VyZWQgYnkgZXhwYXQgd2l0aCBzcGVjaWFsbHkgZm9ybWVkIGlucHV0LgotCi0tIElzc3VlICM2NTYxOiAnXGQnIGluIGEgcmVnZXggbm93IG1hdGNoZXMgb25seSBjaGFyYWN0ZXJzIHdpdGggVW5pY29kZSBjYXRlZ29yeQotICAnTmQnIChOdW1iZXIsIERlY2ltYWwgRGlnaXQpLiAgUHJldmlvdXNseSBpdCBhbHNvIG1hdGNoZWQgY2hhcmFjdGVycyB3aXRoCi0gIGNhdGVnb3J5ICdObycuCi0KLS0gSXNzdWUgIzQ1MDk6IEFycmF5IG9iamVjdHMgYXJlIG5vIGxvbmdlciBtb2RpZmllZCBhZnRlciBhbiBvcGVyYXRpb24gZmFpbGluZwotICBkdWUgdG8gdGhlIHJlc2l6ZSByZXN0cmljdGlvbiBpbi1wbGFjZSB3aGVuIHRoZSBvYmplY3QgaGFzIGV4cG9ydGVkIGJ1ZmZlcnMuCi0KLS0gSXNzdWUgIzIzODk6IEFycmF5IG9iamVjdHMgYXJlIG5vdyBwaWNrbGVkIGluIGEgcG9ydGFibGUgbWFubmVyLgotCi0tIEV4cGF0OiBGaXggRG9TIHZpYSBYTUwgZG9jdW1lbnQgd2l0aCBtYWxmb3JtZWQgVVRGLTggc2VxdWVuY2VzCi0gIChDVkVfMjAwOV8zNTYwKS4KLQotLSBJc3N1ZSAjNzI0MjogT24gU29sYXJpcyA5IGFuZCBlYXJsaWVyIGNhbGxpbmcgb3MuZm9yaygpIGZyb20gd2l0aGluIGEgdGhyZWFkCi0gIGNvdWxkIHJhaXNlIGFuIGluY29ycmVjdCBSdW50aW1lRXJyb3IgYWJvdXQgbm90IGhvbGRpbmcgdGhlIGltcG9ydCBsb2NrLiAgVGhlCi0gIGltcG9ydCBsb2NrIGlzIG5vdyByZWluaXRpYWxpemVkIGFmdGVyIGZvcmsuCi0KLS0gSXNzdWUgIzc5OTk6IG9zLnNldHJldWlkKCkgYW5kIG9zLnNldHJlZ2lkKCkgd291bGQgcmVmdXNlIHRvIGFjY2VwdCBhIC0xCi0gIHBhcmFtZXRlciBvbiBzb21lIHBsYXRmb3JtcyBzdWNoIGFzIE9TIFguCi0KLS0gQnVpbGQgdGhlIG9zc2F1ZGlvIGV4dGVuc2lvbiBvbiBHTlUva0ZyZWVCU0QuCi0KLS0gSXNzdWUgIzczNDc6IHdpbnJlZzogQWRkIENyZWF0ZUtleUV4IGFuZCBEZWxldGVLZXlFeCwgYXMgd2VsbCBhcyBmaXggYSBidWcgaW4KLSAgdGhlIHJldHVybiB2YWx1ZSBvZiBRdWVyeVJlZmxlY3Rpb25LZXkuCi0KLS0gSXNzdWUgIzc1Njc6IFB5Q3Vyc2VzX3NldHVwdGVybTogRG9uJ3QgY2FsbCBgYHNldHVwdGVybWBgIHR3aWNlLgotCi1CdWlsZAotLS0tLS0KLQotLSBVc2UgT3BlblNTTCAxLjAuMGEgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjOTI4MDogTWFrZSBzaGFyZWRpbnN0YWxsIGRlcGVuZCBvbiBzaGFyZWRtb2RzLgotCi0tIElzc3VlICM5MTg5OiBNYWtlIGEgdXNlci1zcGVjaWZpZWQgQ0ZMQUdTLCBDUFBGTEFHUywgb3IgTERGTEFHUyBzZXR0aW5nCi0gIG92ZXJyaWRlIHRoZSBjb25maWd1cmUgYW5kIG1ha2VmaWxlIGRlZmF1bHRzLCB3aXRob3V0IGRlbGV0aW5nIG9wdGlvbnMgdGhlCi0gIHVzZXIgZGlkbid0IGludGVuZCB0byBvdmVycmlkZS4gIERldmVsb3BlcnMgc2hvdWxkIG5vIGxvbmdlciBuZWVkIHRvIHNwZWNpZnkKLSAgT1BUIG9yIEVYVFJBX0NGTEFHUywgYWx0aG91Z2ggdGhvc2UgdmFyaWFibGVzIGFyZSBzdGlsbCBwcmVzZW50IGZvcgotICBiYWNrd2FyZC1jb21wYXRpYmlsaXR5LgotCi0tIElzc3VlICM4ODU0OiBGaXggZmluZGluZyBWaXN1YWwgU3R1ZGlvIDIwMDggb24gV2luZG93cyB4NjQuCi0KLS0gSXNzdWUgIzE3NTkxNjksICM4ODY0OiBEcm9wIF9YT1BFTl9TT1VSQ0Ugb24gU29sYXJpcywgZGVmaW5lIGl0IGZvcgotICBtdWx0aXByb2Nlc3Npbmcgb25seS4KLQotLSBJc3N1ZSAjODYyNTogVHVybiBvZmYgb3B0aW1pemF0aW9uIGluIC0td2l0aC1weWRlYnVnIGJ1aWxkcyB3aXRoIGdjYy4KLSAgKE9wdGltaXphdGlvbiB3YXMgdW5pbnRlbnRpb25hbGx5IHR1cm5lZCBvbiBpbiBnY2MgLS13aXRoLXB5ZGVidWcgYnVpbGRzIGFzIGEKLSAgcmVzdWx0IG9mIHRoZSBpc3N1ZSAjMTYyODQ4NCBmaXgsIGNvbWJpbmVkIHdpdGggYXV0b2NvbmYncyBzdHJhbmdlIGNob2ljZSBvZgotICBkZWZhdWx0IENGTEFHUyBwcm9kdWNlZCBieSBBQ19QUk9HX0NDIGZvciBnY2MuKQotCi0tIElzc3VlICMzNjQ2OiBJdCBpcyBub3cgZWFzaWx5IHBvc3NpYmxlIHRvIGluc3RhbGwgYSBQeXRob24gZnJhbWV3b3JrIGludG8geW91cgotICBob21lIGRpcmVjdG9yeSBvbiBNYWNPU1gsIHNlZSBNYWMvUkVBRE1FIGZvciBtb3JlIGluZm9ybWF0aW9uLgotCi0tIElzc3VlICMzOTI4OiBvcy5ta25vZCgpIG5vdyBhdmFpbGFibGUgaW4gU29sYXJpcywgYWxzby4KLQotLSBJc3N1ZSAjMzMyNjogQnVpbGQgUHl0aG9uIHdpdGhvdXQgLWZuby1zdHJpY3QtYWxpYXNpbmcgd2hlbiB0aGUgZ2NjIGRvZXMgbm90Ci0gIGdpdmUgZmFsc2Ugd2FybmluZ3MuCi0KLS0gSXNzdWUgIzE2Mjg0ODQ6IFRoZSBNYWtlZmlsZSBkb2Vzbid0IGlnbm9yZSB0aGUgQ0ZMQUdTIGVudmlyb25tZW50IHZhcmlhYmxlCi0gIGFueW1vcmUuICBJdCBhbHNvIGZvcndhcmRzIHRoZSBMREZMQUdTIHNldHRpbmdzIHRvIHRoZSBsaW5rZXIgd2hlbiBidWlsZGluZyBhCi0gIHNoYXJlZCBsaWJyYXJ5LgotCi0tIElzc3VlICM2NzE2OiBRdW90ZSAteCBhcmd1bWVudHMgb2YgY29tcGlsZWFsbCBpbiBNU0kgaW5zdGFsbGVyLiAgRXhjbHVkZSAydG8zCi0gIHRlc3RzIGZyb20gY29tcGlsZWFsbC4KLQotLSBJc3N1ZSAjMzkyMCwgIzc5MDM6IERlZmluZSBfQlNEX1NPVVJDRSBvbiBPcGVuQlNEIDQuNCB0aHJvdWdoIDQuOS4KLQotLSBJc3N1ZSAjNzYzMjogV2hlbiBQeV9VU0lOR19NRU1PUllfREVCVUdHRVIgaXMgZGVmaW5lZCwgZGlzYWJsZSB0aGUgcHJpdmF0ZQotICBtZW1vcnkgYWxsb2NhdGlvbiBzY2hlbWUgaW4gZHRvYS5jIGFuZCB1c2UgUHlNZW1fTWFsbG9jIGFuZCBQeU1lbV9GcmVlCi0gIGluc3RlYWQuICBBbHNvIGRpc2FibGUgY2FjaGluZyBvZiBwb3dlcnMgb2YgNS4KLQotLSBJc3N1ZSAjNjQ5MTogQWxsb3cgLS13aXRoLWRibWxpYm9yZGVyIHRvIHNwZWNpZnkgdGhhdCBubyBkYm1zIHdpbGwgYmUgYnVpbHQuCi0KLS0gSXNzdWUgIzY5NDM6IFVzZSBwa2ctY29uZmlnIHRvIGZpbmQgdGhlIGxpYmZmaSBoZWFkZXJzIHdoZW4gdGhlCi0gIC0td2l0aC1zeXN0ZW0tZmZpIGZsYWcgaXMgdXNlZC4KLQotLSBJc3N1ZSAjNzYwOTogQWRkIGEgLS13aXRoLXN5c3RlbS1leHBhdCBvcHRpb24gdGhhdCBjYXVzZXMgdGhlIHN5c3RlbSdzIGV4cGF0Ci0gIGxpYnJhcnkgdG8gYmUgdXNlZCBmb3IgdGhlIHB5ZXhwYXQgbW9kdWxlIGluc3RlYWQgb2YgdGhlIG9uZSBpbmNsdWRlZCB3aXRoCi0gIFB5dGhvbi4KLQotLSBJc3N1ZSAjNzU4OTogT25seSBidWlsZCB0aGUgbmlzIG1vZHVsZSB3aGVuIHRoZSBjb3JyZWN0IGhlYWRlciBmaWxlcyBhcmUKLSAgZm91bmQuCi0KLS0gU3dpdGNoIHRvIE9wZW5TU0wgMC45LjhsIGFuZCBzcWxpdGUgMy42LjIxIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzU3OTI6IEV4dGVuZCB0aGUgc2hvcnQgZmxvYXQgcmVwciBzdXBwb3J0IHRvIHg4NiBzeXN0ZW1zIHVzaW5nCi0gIGljYyBvciBzdW5jYy4KLQotLSBJc3N1ZSAjNjYwMzogQ2hhbmdlIFJFQURfVElNRVNUQU1QIG1hY3JvIGluIGNldmFsLmMgc28gdGhhdCBpdCBjb21waWxlcwotICBjb3JyZWN0bHkgdW5kZXIgZ2NjIG9uIHg4Ni02NC4gIFRoaXMgZml4ZXMgYSByZXBvcnRlZCBwcm9ibGVtIHdpdGggdGhlCi0gIC0td2l0aC10c2MgYnVpbGQgb24geDg2LTY0LgotCi0tIElzc3VlICM2ODAyOiBGaXggYnVpbGQgaXNzdWVzIG9uIE1hY09TWCAxMC42LgotCi0tIElzc3VlICM2MjQ0OiBBbGxvdyBkZXRlY3RfdGtpbnRlciB0byBsb29rIGZvciBUY2wvVGsgOC42LgotCi0tIElzc3VlICM0NjAxOiAnbWFrZSBpbnN0YWxsJyBkaWQgbm90IHNldCB0aGUgYXBwcm9wcmlhdGUgcGVybWlzc2lvbnMgb24KLSAgZGlyZWN0b3JpZXMuCi0KLS0gSXNzdWUgIzUzOTA6IEFkZCB1bmluc3RhbGwgaWNvbiBpbmRlcGVuZGVudCBvZiB3aGV0aGVyIGZpbGUgZXh0ZW5zaW9ucyBhcmUKLSAgaW5zdGFsbGVkLgotCi0tIElzc3VlICM3NTQxOiBXaGVuIHVzaW5nIGBgcHl0aG9uLWNvbmZpZ2BgIHdpdGggYSBmcmFtZXdvcmsgaW5zdGFsbCB0aGUKLSAgY29tcGlsZXIgbWlnaHQgdXNlIHRoZSB3cm9uZyBsaWJyYXJ5LgotCi0tIHB5dGhvbi1jb25maWcgbm93IHN1cHBvcnRzIG11bHRpcGxlIG9wdGlvbnMgb24gdGhlIHNhbWUgY29tbWFuZCBsaW5lLgotCi0tIElzc3VlICM4NTA5OiBGaXggcXVvdGluZyBpbiBoZWxwIHN0cmluZ3MgYW5kIGNvZGUgc25pcHBldHMgaW4gY29uZmlndXJlLmluLgotCi0tIElzc3VlICM4NTEwOiBVcGRhdGUgdG8gYXV0b2NvbmYyLjY1LgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzk4MTc6IEFkZCBleHBhdCBDT1BZSU5HIGZpbGU7IGFkZCBleHBhdCwgbGliZmZpIGFuZCBleHBhdCBsaWNlbnNlcwotICB0byBEb2MvbGljZW5zZS5yc3QuCi0KLS0gSXNzdWUgIzk1MjQ6IERvY3VtZW50IHRoYXQgdHdvIENUUkwqIHNpZ25hbHMgYXJlIG1lYW50IGZvciB1c2Ugb25seQotICB3aXRoIG9zLmtpbGwuCi0KLS0gSXNzdWUgIzkyNTU6IERvY3VtZW50IHRoYXQgdGhlICd0ZXN0JyBwYWNrYWdlIGlzIG1lYW50IGZvciBpbnRlcm5hbCBQeXRob24gdXNlCi0gIG9ubHkuCi0KLS0gQSBzbWFsbCBXU0dJIHNlcnZlciB3YXMgYWRkZWQgYXMgVG9vbHMvc2NyaXB0cy9zZXJ2ZS5weSwgYW5kIGlzIHVzZWQgdG8KLSAgaW1wbGVtZW50IGEgbG9jYWwgZG9jdW1lbnRhdGlvbiBzZXJ2ZXIgdmlhICdtYWtlIHNlcnZlJyBpbiB0aGUgZG9jIGRpcmVjdG9yeS4KLQotLSBVcGRhdGluZyBgVXNpbmcgUHl0aG9uYCBkb2N1bWVudGF0aW9uIHRvIGluY2x1ZGUgZGVzY3JpcHRpb24gb2YgQ1B5dGhvbidzIC1KCi0gIGFuZCAtWCBvcHRpb25zLgotCi0tIERvY3VtZW50IHRoYXQgaW1wb3J0aW5nIGEgbW9kdWxlIHRoYXQgaGFzIE5vbmUgaW4gc3lzLm1vZHVsZXMgdHJpZ2dlcnMgYW4KLSAgSW1wb3J0RXJyb3IuCi0KLS0gSXNzdWUgIzY1NTY6IEZpeGVkIHRoZSBEaXN0dXRpbHMgY29uZmlndXJhdGlvbiBmaWxlcyBsb2NhdGlvbiBleHBsYW5hdGlvbiBmb3IKLSAgV2luZG93cy4KLQotLSBVcGRhdGUgcHl0aG9uIG1hbnVhbCBwYWdlIChvcHRpb25zIC1CLCAtTzAsIC1zLCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLSAgUFlUSE9ORE9OVFdSSVRFQllURUNPREUsIFBZVEhPTk5PVVNFUlNJVEUpLgotCi0tIElzc3VlICM4OTA5OiBBZGRlZCB0aGUgc2l6ZSBvZiB0aGUgYml0bWFwIHVzZWQgaW4gdGhlIGluc3RhbGxlciBjcmVhdGVkIGJ5Ci0gIGRpc3R1dGlscycgYmRpc3Rfd2luaW5zdC4gUGF0Y2ggYnkgQW5hdG9seSBUZWNodG9uaWsuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICM5MjUxOiB0ZXN0X3RocmVhZGVkX2ltcG9ydCBkaWRuJ3QgZmFpbCB3aGVuIHJ1biB0aHJvdWdoIHJlZ3J0ZXN0IGlmIHRoZQotICBpbXBvcnQgbG9jayB3YXMgZGlzYWJsZWQuCi0KLS0gSXNzdWUgIzg2MDU6IFNraXAgdGVzdF9nZGIgaWYgUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGggb3B0aW1pemF0aW9ucy4KLQotLSBJc3N1ZSAjNzQ0OTogU2tpcCB0ZXN0X3NvY2tldHNlcnZlciBpZiB0aHJlYWRpbmcgc3VwcG9ydCBpcyBkaXNhYmxlZC4KLQotLSBJc3N1ZSAjODY3MjogQWRkIGEgemxpYiB0ZXN0IGVuc3VyaW5nIHRoYXQgYW4gaW5jb21wbGV0ZSBzdHJlYW0gY2FuIGJlIGhhbmRsZWQKLSAgYnkgYSBkZWNvbXByZXNzb3Igb2JqZWN0IHdpdGhvdXQgZXJyb3JzIChpdCByZXR1cm5zIGluY29tcGxldGUgdW5jb21wcmVzc2VkCi0gIGRhdGEpLgotCi0tIElzc3VlICM4NTMzOiByZWdydGVzdCB1c2VzIGJhY2tzbGFzaHJlcGxhY2UgZXJyb3IgaGFuZGxlciBmb3Igc3Rkb3V0IHRvIGF2b2lkCi0gIFVuaWNvZGVFbmNvZGVFcnJvciAod3JpdGUgbm9uLUFTQ0lJIGNoYXJhY3RlciB0byBzdGRvdXQgdXNpbmcgQVNDSUkgZW5jb2RpbmcpLgotCi0tIElzc3VlICM4NTc2OiBSZW1vdmUgdXNlIG9mIGZpbmRfdW51c2VkX3BvcnQoKSBpbiB0ZXN0X3NtdHBsaWIgYW5kCi0gIHRlc3RfbXVsdGlwcm9jZXNzaW5nLiAgUGF0Y2ggYnkgUGF1bCBNb29yZS4KLQotLSBJc3N1ZSAjNzQ0OTogRml4IG1hbnkgdGVzdHMgdG8gc3VwcG9ydCBQeXRob24gY29tcGlsZWQgd2l0aG91dCB0aHJlYWQKLSAgc3VwcG9ydC4gUGF0Y2hlcyB3cml0dGVuIGJ5IEplcnJ5IFNldXR0ZXIuCi0KLS0gSXNzdWUgIzgxMDg6IHRlc3RfZnRwbGliJ3Mgbm9uLWJsb2NraW5nIFNTTCBzZXJ2ZXIgbm93IGhhcyBwcm9wZXIgaGFuZGxpbmcgb2YKLSAgU1NMIHNodXRkb3ducy4KLQotLSBJc3N1ZXMgIzgyNzksICM4MzMwLCAjODQzNywgIzg0ODAsICM4NDk1OiBGaXggdGVzdF9nZGIgZmFpbHVyZXMsIHBhdGNoIHdyaXR0ZW4KLSAgYnkgRGF2ZSBNYWxjb2xtLgotCi0tIElzc3VlICMzODY0OiBTa2lwIHRocmVlIHRlc3Rfc2lnbmFsIHRlc3RzIG9uIGZyZWVic2Q2IGJlY2F1c2UgdGhleSBmYWlsIGlmIGFueQotICB0aHJlYWQgd2FzIHByZXZpb3VzbHkgc3RhcnRlZCwgbW9zdCBsaWtlbHkgZHVlIHRvIGEgcGxhdGZvcm0gYnVnLgotCi0tIElzc3VlICM4MTkzOiBGaXggdGVzdF96bGliIGZhaWx1cmUgd2l0aCB6bGliIDEuMi40LgotCi0tIElzc3VlICM4MjQ4OiBBZGQgc29tZSB0ZXN0cyBmb3IgdGhlIGJvb2wgdHlwZS4gIFBhdGNoIGJ5IEdyZWdvcnkgTm9maS4KLQotLSBJc3N1ZSAjODI2MzogTm93IHJlZ3J0ZXN0LnB5IHdpbGwgcmVwb3J0IGEgZmFpbHVyZSBpZiBpdCByZWNlaXZlcyBhCi0gIEtleWJvYXJkSW50ZXJydXB0IChTSUdJTlQpLgotCi0tIElzc3VlICM4MTgwIGFuZCAjODIwNzogRml4IHRlc3RfcGVwMjc3IG9uIE9TIFggYW5kIGFkZCBtb3JlIHRlc3RzIGZvciBzcGVjaWFsCi0gIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBjYXNlcy4KLQotLSBJc3N1ZSAjNzc4MzogdGVzdC5zdXBwb3J0Lm9wZW5fdXJscmVzb3VyY2UgaW52YWxpZGF0ZXMgdGhlIG91dGRhdGVkIGZpbGVzIGZyb20KLSAgdGhlIGxvY2FsIGNhY2hlLgotCi0tIElzc3VlICM3ODQ5OiBOb3cgdGhlIHV0aWxpdHkgYGBjaGVja193YXJuaW5nc2BgIHZlcmlmaWVzIGlmIHRoZSB3YXJuaW5ncyBhcmUKLSAgZWZmZWN0aXZlbHkgcmFpc2VkLgotCi0tIFRoZSBmb3VyIHBhdGggbW9kdWxlcyAoZ2VuZXJpY3BhdGgsIG1hY3BhdGgsIG50cGF0aCwgcG9zaXhwYXRoKSBzaGFyZSBhIGNvbW1vbgotICBUZXN0Q2FzZSBmb3Igc29tZSB0ZXN0czogdGVzdF9nZW5lcmljcGF0aC5Db21tb25UZXN0LgotCi0tIFByaW50IHBsYXRmb3JtIGluZm9ybWF0aW9uIHdoZW4gcnVubmluZyB0aGUgd2hvbGUgdGVzdCBzdWl0ZSwgb3IgdXNpbmcgdGhlCi0gIC0tdmVyYm9zZSBmbGFnLgotCi0tIElzc3VlICM3Njc2NzU6IGVuYWJsZSB0ZXN0X3BlcDI3NyBvbiBQT1NJWCBwbGF0Zm9ybXMgd2l0aCBVbmljb2RlLWZyaWVuZGx5Ci0gIGZpbGVzeXN0ZW0gZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzYyOTI6IGZvciB0aGUgbW9tZW50IGF0IGxlYXN0LCB0aGUgdGVzdCBzdWl0ZSBydW5zIGNsZWFubHkgaWYgcHl0aG9uIGlzCi0gIHJ1biB3aXRoIHRoZSAtT08gZmxhZy4gIFRlc3RzIHJlcXVpcmluZyBkb2NzdHJpbmdzIGFyZSBza2lwcGVkLgotCi0tIElzc3VlICM3NzEyOiB0ZXN0LnN1cHBvcnQgZ2FpbmVkIGEgbmV3IGB0ZW1wX2N3ZGAgY29udGV4dCBtYW5hZ2VyIHdoaWNoIGlzIG5vdwotICBhbHNvIHVzZWQgYnkgcmVncnRlc3QgdG8gcnVuIGFsbCB0aGUgdGVzdHMgaW4gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5LiAgVGhlCi0gIG9yaWdpbmFsIENXRCBpcyBzYXZlZCBpbiBgc3VwcG9ydC5TQVZFRENXRGAuICBUaGFua3MgdG8gRmxvcmVudCBYaWNsdW5hIHdobwotICBoZWxwZWQgd2l0aCB0aGUgcGF0Y2guCi0KLS0gSXNzdWUgIzc5MjQ6IEZpeCBhbiBpbnRlcm1pdHRlbnQgJ1hYWCB1bmRldGVjdGVkIGVycm9yJyBmYWlsdXJlIGluIHRlc3RfY2FwaQotICAob25seSBzZWVuIHNvIGZhciBvbiBwbGF0Zm9ybXMgd2hlcmUgdGhlIGN1cnNlcyBtb2R1bGUgd2Fzbid0IGJ1aWx0KSwgZHVlIHRvCi0gIGFuIHVuY2xlYXJlZCBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzc3Mjg6IHRlc3RfdGltZW91dCB3YXMgY2hhbmdlZCB0byB1c2Ugc3VwcG9ydC5iaW5kX3BvcnQgaW5zdGVhZCBvZiBhCi0gIGhhcmQgY29kZWQgcG9ydC4KLQotLSBJc3N1ZSAjNzM3NjogSW5zdGVhZCBvZiBydW5uaW5nIGEgc2VsZi10ZXN0ICh3aGljaCB3YXMgZmFpbGluZykgd2hlbiBjYWxsZWQKLSAgd2l0aCBubyBhcmd1bWVudHMsIGRvY3Rlc3QucHkgbm93IGdpdmVzIGEgdXNhZ2UgbWVzc2FnZS4KLQotLSBJc3N1ZSAjNzM5NjogZml4IHJlZ3J0ZXN0IC1zLCB3aGljaCB3YXMgYnJva2VuIGJ5IHRoZSAtaiBlbmhhbmNlbWVudC4KLQotLSBJc3N1ZSAjNzQ5ODogdGVzdF9tdWx0aXByb2Nlc3Npbmcgbm93IHVzZXMgdGVzdC5zdXBwb3J0LmZpbmRfdW51c2VkX3BvcnQKLSAgaW5zdGVhZCBvZiBhIGhhcmRjb2RlZCBwb3J0IG51bWJlciBpbiB0ZXN0X3JhcGlkX3Jlc3RhcnQuCi0KLS0gSXNzdWUgIzc0MzE6IFVzZSBURVNURk4gaW4gdGVzdF9saW5lY2FjaGUgaW5zdGVhZCBvZiB0cnlpbmcgdG8gY3JlYXRlIGEgZmlsZQotICBpbiB0aGUgTGliL3Rlc3QgZGlyZWN0b3J5LCB3aGljaCBtaWdodCBiZSByZWFkLW9ubHkgZm9yIHRoZSB1c2VyIHJ1bm5pbmcgdGhlCi0gIHRlc3RzLgotCi0tIElzc3VlICM3MzI0OiBBZGQgYSBzYW5pdHkgY2hlY2sgdG8gcmVncnRlc3QgYXJndW1lbnQgcGFyc2luZyB0byBjYXRjaCB0aGUgY2FzZQotICBvZiBhbiBvcHRpb24gd2l0aCBubyBoYW5kbGVyLgotCi0tIElzc3VlICM3MzEyOiBBZGQgYSAtRiBmbGFnIHRvIHJ1biB0aGUgc2VsZWN0ZWQgdGVzdHMgaW4gYSBsb29wIHVudGlsIGEgdGVzdAotICBmYWlscy4gIENhbiBiZSBjb21iaW5lZCB3aXRoIC1qLgotCi0tIElzc3VlICM2NTUxOiB0ZXN0X3ppcGltcG9ydCBjb3VsZCBpbXBvcnQgYW5kIHRoZW4gZGVzdHJveSBzb21lIG1vZHVsZXMgb2YgdGhlCi0gIGVuY29kaW5ncyBwYWNrYWdlLCB3aGljaCB3b3VsZCBtYWtlIG90aGVyIHRlc3RzIGZhaWwgZnVydGhlciBkb3duIHRoZSByb2FkCi0gIGJlY2F1c2UgdGhlIGludGVybmFsbHkgY2FjaGVkIGVuY29kZXJzIGFuZCBkZWNvZGVycyB3b3VsZCBwb2ludCB0byBlbXB0eQotICBnbG9iYWwgdmFyaWFibGVzLgotCi0tIElzc3VlICM3Mjk1OiBEbyBub3QgdXNlIGEgaGFyZGNvZGVkIGZpbGUgbmFtZSBpbiB0ZXN0X3RhcmZpbGUuCi0KLS0gSXNzdWUgIzcyNzA6IEFkZCBzb21lIGRlZGljYXRlZCB1bml0IHRlc3RzIGZvciBtdWx0aS10aHJlYWQgc3luY2hyb25pemF0aW9uCi0gIHByaW1pdGl2ZXMgc3VjaCBhcyBMb2NrLCBSTG9jaywgQ29uZGl0aW9uLCBFdmVudCBhbmQgU2VtYXBob3JlLgotCi0tIElzc3VlICM3MjQ4IChwYXJ0IDIpOiBVc2UgYSB1bmlxdWUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBmb3IgaW1wb3J0bGliIHNvdXJjZQotICB0ZXN0cyBpbnN0ZWFkIG9mIHRlbXBmaWxlLnRlbXBkaXIuIFRoaXMgcHJldmVudHMgdGhlIHRlc3RzIGZyb20gc2hhcmluZyBzdGF0ZQotICBiZXR3ZWVuIGNvbmN1cnJlbnQgZXhlY3V0aW9ucyBvbiB0aGUgc2FtZSBzeXN0ZW0uCi0KLS0gSXNzdWUgIzcyNDg6IEluIGltcG9ydGxpYi50ZXN0LnNvdXJjZS51dGlsIGEgdHJ5L2ZpbmFsbHkgYmxvY2sgZGlkIG5vdCBtYWtlCi0gIHN1cmUgdGhhdCBzb21lIHJlZmVyZW5jZWQgb2JqZWN0cyBhY3R1YWxseSB3ZXJlIGNyZWF0ZWQgaW4gdGhlIGJsb2NrIGJlZm9yZQotICBjYWxsaW5nIG1ldGhvZHMgb24gdGhlIG9iamVjdC4KLQotLSBJc3N1ZSAjNzIyMjogTWFrZSB0aHJlYWQgInJlYXBpbmciIG1vcmUgcmVsaWFibGUgc28gdGhhdCByZWZlcmVuY2UKLSAgbGVhay1jaGFzaW5nIHRlc3QgcnVucyBnaXZlIHNlbnNpYmxlIHJlc3VsdHMuIFRoZSBwcmV2aW91cyBtZXRob2Qgb2YgcmVhcGluZwotICB0aHJlYWRzIGNvdWxkIHJldHVybiBzdWNjZXNzZnVsbHkgd2hpbGUgc29tZSBUaHJlYWQgb2JqZWN0cyB3ZXJlIHN0aWxsCi0gIHJlZmVyZW5jZWQuIFRoaXMgYWxzbyBpbnRyb2R1Y2VzIGEgbmV3IHByaXZhdGUgZnVuY3Rpb246Ci0gIDpmdW5jOmBfdGhyZWFkLl9jb3VudCgpYC4KLQotLSBJc3N1ZSAjNzE1MTogRml4ZWQgcmVncnRlc3QgLWogc28gdGhhdCBvdXRwdXQgdG8gc3RkZXJyIGZyb20gYSB0ZXN0IG5vIGxvbmdlcgotICBydW5zIHRoZSByaXNrIG9mIGNhdXNpbmcgdGhlIHdvcmtlciB0aHJlYWQgdG8gZmFpbC4KLQotLSBJc3N1ZSAjNzA1NTogdGVzdF9fX2FsbF9fIG5vdyBncmVlZGlseSBkZXRlY3RzIGFsbCBtb2R1bGVzIHdoaWNoIGhhdmUgYW4KLSAgX19hbGxfXyBhdHRyaWJ1dGUsIHJhdGhlciB0aGFuIHVzaW5nIGEgaGFyZGNvZGVkIGFuZCBpbmNvbXBsZXRlIGxpc3QuCi0KLS0gSXNzdWUgIzcwNTg6IEFkZGVkIHNhdmUvcmVzdG9yZSBmb3IgdGhpbmdzIGxpa2Ugc3lzLmFyZ3YgYW5kIGN3ZCB0bwotICBydW50ZXN0X2lubmVyIGluIHJlZ3J0ZXN0LCB3aXRoIHdhcm5pbmdzIGlmIHRoZSBjYWxsZWQgdGVzdCBtb2RpZmllcyB0aGVtLCBhbmQKLSAgYSBuZXcgc2VjdGlvbiBpbiB0aGUgc3VtbWFyeSByZXBvcnQgYXQgdGhlIGVuZC4KLQotLSBJc3N1ZSAjNzA0MjogRml4IHRlc3Rfc2lnbmFsICh0ZXN0X2l0aW1lcl92aXJ0dWFsKSBmYWlsdXJlIG9uIE9TIFggMTAuNi4KLQotLSBGaXhlZCB0ZXN0cyBpbiBpbXBvcnRsaWIudGVzdC5zb3VyY2UudGVzdF9hYmNfbG9hZGVyIHRoYXQgd2VyZSBtYXNraW5nIHRoZQotICBwcm9wZXIgZXhjZXB0aW9ucyB0aGF0IHNob3VsZCBiZSByYWlzZWQgZm9yIG1pc3Npbmcgb3IgaW1wcm9wZXIgY29kZSBvYmplY3QKLSAgYnl0ZWNvZGUuCi0KLS0gUmVtb3ZlZCBpbXBvcnRsaWIncyBjdXN0b20gdGVzdCBkaXNjb3ZlcnkgY29kZSBhbmQgc3dpdGNoZWQgdG8KLSAgdW5pdHRlc3QuVGVzdExvYWRlci5kaXNjb3ZlcigpLgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNTQ2NCwgIzg5NzQ6IEltcGxlbWVudCBwbHVyYWwgZm9ybXMgaW4gbXNnZm10LnB5LgotCi0tIGlvYmVuY2ggKGEgZmlsZSBJL08gYmVuY2htYXJrKSBhbmQgY2NiZW5jaCAoYSBjb25jdXJyZW5jeSBiZW5jaG1hcmspIHdlcmUKLSAgYWRkZWQgdG8gdGhlIGBUb29scy9gIGRpcmVjdG9yeS4gIFRoZXkgd2VyZSBwcmV2aW91c2x5IGxpdmluZyBpbiB0aGUgc2FuZGJveC4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDI3LUp1bmUtMjAwOSoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzYzMzQ6IEZpeCBidWcgaW4gcmFuZ2UgbGVuZ3RoIGNhbGN1bGF0aW9uIGZvciByYW5nZXMgd2l0aAotICBsYXJnZSBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzYzMjk6IEZpeGVkIGl0ZXJhdGlvbiBmb3IgbWVtb3J5dmlldyBvYmplY3RzIChpdCB3YXMgYmVpbmcgYmxvY2tlZAotICBiZWNhdXNlIGl0IHdhc24ndCByZWNvZ25pemVkIGFzIGEgc2VxdWVuY2UpLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzYxMjY6IEZpeGVkIHBkYiBjb21tYW5kLWxpbmUgdXNhZ2UuCi0KLS0gSXNzdWUgIzYzMTQ6IGxvZ2dpbmc6IHBlcmZvcm1zIGV4dHJhIGNoZWNrcyBvbiB0aGUgImxldmVsIiBhcmd1bWVudC4KLQotLSBJc3N1ZSAjNjI3NDogRml4ZWQgcG9zc2libGUgZmlsZSBkZXNjcmlwdG9ycyBsZWFrIGluIHN1YnByb2Nlc3MucHkKLQotLSBBY2Nlc3NpbmcgaW8uU3RyaW5nSU8uYnVmZmVyIG5vdyByYWlzZXMgYW4gQXR0cmlidXRlRXJyb3IgaW5zdGVhZCBvZgotICBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbi4KLQotLSBJc3N1ZSAjNjI3MTogbW1hcCB0cmllZCB0byBjbG9zZSBpbnZhbGlkIGZpbGUgaGFuZGxlICgtMSkgd2hlbiBhbm9ueW1vdXMuCi0gIChPbiBVbml4KQotCi0tIElzc3VlICMxMjAyOiB6aXBmaWxlIG1vZHVsZSB3b3VsZCBjYXVzZSBhIHN0cnVjdC5lcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8KLSAgc3RvcmUgZmlsZXMgd2l0aCBhIENSQzMyID4gMioqMzEtMS4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzU1OTA6IFJlbW92ZSB1bnVzZWQgZ2xvYmFsIHZhcmlhYmxlIGluIHB5ZXhwYXQgZXh0ZW5zaW9uLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMSBSZWxlYXNlIENhbmRpZGF0ZSAyPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDEzLUp1bmUtMjAwOSoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gRml4ZWQgU3lzdGVtRXJyb3IgdHJpZ2dlcmVkIGJ5ICJyYW5nZShbXSwgMSwgLTEpIi4KLQotLSBJc3N1ZSAjNTkyNDogT24gV2luZG93cywgYSBsYXJnZSBQWVRIT05QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlCi0gIChtb3JlIHRoYW4gMjU1IGNoYXJhY3RlcnMpIHdvdWxkIGJlIGNvbXBsZXRlbHkgaWdub3JlZC4KLQotLSBJc3N1ZSAjNDU0NzogV2hlbiBkZWJ1Z2dpbmcgYSB2ZXJ5IGxhcmdlIGZ1bmN0aW9uLCBpdCB3YXMgbm90IGFsd2F5cwotICBwb3NzaWJsZSB0byB1cGRhdGUgdGhlIGxpbmVubyBhdHRyaWJ1dGUgb2YgdGhlIGN1cnJlbnQgZnJhbWUuCi0KLS0gSXNzdWUgIzUzMzA6IEMgZnVuY3Rpb25zIGNhbGxlZCB3aXRoIGtleXdvcmQgYXJndW1lbnRzIHdlcmUgbm90IHJlcG9ydGVkIGJ5Ci0gIHRoZSB2YXJpb3VzIHByb2ZpbGluZyBtb2R1bGVzIChwcm9maWxlLCBjUHJvZmlsZSkuIFBhdGNoIGJ5IEhhZ2VuIEbDvHJzdGVuYXUuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjNjQzODogRml4ZWQgZGlzdHV0aWxzLmN5Z3dpbmNjb21waWxlci5nZXRfdmVyc2lvbnMgOiB0aGUgcmVndWxhcgotICBleHByZXNzaW9uIHN0cmluZyBwYXR0ZXJuIHdhcyB0cnlpbmcgdG8gbWF0Y2ggYWdhaW5zdCBhIGJ5dGVzIHJldHVybmVkIGJ5Ci0gIFBvcGVuLiBUZXN0ZWQgdW5kZXIgd2luMzIgdG8gYnVpbGQgdGhlIHB5LXBvc3RncmVzcWwgcHJvamVjdC4KLQotLSBJc3N1ZSAjNjI1ODogU3VwcG9ydCBBTUQ2NCBpbiBiZGlzdF9tc2kuCi0KLS0gSXNzdWUgIzYxOTU6IGZpeGVkIGRvY3Rlc3QgdG8gbm8gbG9uZ2VyIHRyeSB0byByZWFkICdzb3VyY2UnIGRhdGEgZnJvbQotICBiaW5hcnkgZmlsZXMuCi0KLS0gSXNzdWUgIzUyNjI6IEZpeGVkIGJ1ZyBpbiBuZXh0IHJvbGxvdmVyIHRpbWUgY29tcHV0YXRpb24gaW4KLSAgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyLgotCi0tIElzc3VlICM2MjE3OiBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBpby5UZXh0SU9XcmFwcGVyIGRpZG4ndCBpbmNsdWRlIHRoZQotICBlcnJvcnMgcHJvcGVydHkuICBBZGRpdGlvbmFsbHksIHRoZSBlcnJvcnMgYW5kIGVuY29kaW5nIHByb3BlcnRpZXMgb2YgU3RyaW5nSU8KLSAgYXJlIGFsd2F5cyBOb25lIG5vdy4KLQotLSBJc3N1ZSAjNjEzNzogVGhlIHBpY2tsZSBtb2R1bGUgbm93IHRyYW5zbGF0ZXMgbW9kdWxlIG5hbWVzIHdoZW4gbG9hZGluZwotICBvciBkdW1waW5nIHBpY2tsZXMgd2l0aCBhIDIueC1jb21wYXRpYmxlIHByb3RvY29sLCBpbiBvcmRlciB0byBtYWtlIGRhdGEKLSAgc2hhcmluZyBhbmQgbWlncmF0aW9uIGVhc2llci4gVGhpcyBiZWhhdmlvdXIgY2FuIGJlIGRpc2FibGVkIHVzaW5nIHRoZQotICBuZXcgYGZpeF9pbXBvcnRzYCBvcHRpb25hbCBhcmd1bWVudC4KLQotLSBSZW1vdmVkIHRoZSBpcGFkZHIgbW9kdWxlLgotCi0tIElzc3VlICMzNjEzOiBiYXNlNjQue2VuY29kZSxkZWNvZGV9c3RyaW5nIGFyZSBub3cgY2FsbGVkCi0gIGJhc2U2NC57ZW5jb2RlLGRlY29kZX1ieXRlcyB3aGljaCByZWZsZWN0cyB3aGF0IHR5cGUgdGhleSBhY2NlcHQgYW5kIHJldHVybi4KLSAgVGhlIG9sZCBuYW1lcyBhcmUgc3RpbGwgdGhlcmUgYXMgZGVwcmVjYXRlZCBhbGlhc2VzLgotCi0tIElzc3VlICM1NzY3OiBSZW1vdmUgc2dtbG9wIHN1cHBvcnQgZnJvbSB4bWxycGMuY2xpZW50LgotCi0tIElzc3VlICM2MTUwOiBGaXggdGVzdF91bmljb2RlIG9uIHdpZGUtdW5pY29kZSBidWlsZHMuCi0KLS0gSXNzdWUgIzYxNDk6IEZpeCBpbml0aWFsaXphdGlvbiBvZiBXZWFrVmFsdWVEaWN0aW9uYXJ5IG9iamVjdHMgZnJvbSBub24tZW1wdHkKLSAgcGFyYW1ldGVycy4KLQotV2luZG93cwotLS0tLS0tLQotCi0tIElzc3VlICM2MjIxOiBEZWxldGUgdGVzdCByZWdpc3RyeSBrZXkgYmVmb3JlIHJ1bm5pbmcgdGhlIHRlc3QuCi0KLS0gSXNzdWUgIzYxNTg6IFBhY2thZ2UgU2luZS0xMDAwSHotMzAwbXMuYWlmIGluIE1TSSBmaWxlLgotCi1DLUFQSQotLS0tLS0KLQotLSBJc3N1ZSAjNTczNTogUHl0aG9uIGNvbXBpbGVkIHdpdGggLS13aXRoLXB5ZGVidWcgc2hvdWxkIHRocm93IGFuCi0gIEltcG9ydEVycm9yIHdoZW4gdHJ5aW5nIHRvIGltcG9ydCBtb2R1bGVzIGNvbXBpbGVkIHdpdGhvdXQKLSAgLS13aXRoLXB5ZGVidWcsIGFuZCB2aWNlLXZlcnNhLgotCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICM2MTU0OiBNYWtlIHN1cmUgdGhlIGludGwgbGlicmFyeSBpcyBhZGRlZCB0byBMSUJTIGlmIG5lZWRlZC4gQWxzbwotICBhZGRlZCBMSUJTIHRvIE9TIFggZnJhbWV3b3JrIGJ1aWxkcy4KLQotLSBJc3N1ZSAjNTgwOTogU3BlY2lmeWluZyBib3RoIC0tZW5hYmxlLWZyYW1ld29yayBhbmQgLS1lbmFibGUtc2hhcmVkIGlzCi0gIGFuIGVycm9yLiBDb25maWd1cmUgbm93IGV4cGxpY2l0eSB0ZWxscyB5b3UgYWJvdXQgdGhpcy4KLQotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMSByZWxlYXNlIGNhbmRpZGF0ZSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDIwMDktMDUtMzAqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM2MDk3OiBFc2NhcGUgVVRGLTggc3Vycm9nYXRlcyByZXN1bHRpbmcgZnJvbSBtYnN0b2NzIGNvbnZlcnNpb24KLSAgb2YgdGhlIGNvbW1hbmQgbGluZS4KLQotLSBJc3N1ZSAjNjAxMjogQWRkIGNsZWFudXAgc3VwcG9ydCB0byBPJiBhcmd1bWVudCBwYXJzaW5nLgotCi0tIElzc3VlICM2MDg5OiBGaXhlZCBzdHIuZm9ybWF0IHdpdGggY2VydGFpbiBpbnZhbGlkIGZpZWxkIHNwZWNpZmllcnMKLSAgdGhhdCB3b3VsZCByYWlzZSBTeXN0ZW1FcnJvci4KLQotLSBJc3N1ZSAjNTk4Mjogc3RhdGljbWV0aG9kIGFuZCBjbGFzc21ldGhvZCBub3cgZXhwb3NlIHRoZSB3cmFwcGVkCi0gIGZ1bmN0aW9uIHdpdGggX19mdW5jX18uCi0KLS0gQWRkZWQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBtYW5hZ2VycyBpbiB0aGUgc2FtZSB3aXRoLXN0YXRlbWVudC4KLSAgRGVwcmVjYXRlZCBjb250ZXh0bGliLm5lc3RlZCgpIHdoaWNoIGlzIG5vIGxvbmdlciBuZWVkZWQuCi0KLS0gSXNzdWUgIzU4Mjk6IGNvbXBsZXgoIjFlNTAwIikgbm8gbG9uZ2VyIHJhaXNlcyBPdmVyZmxvd0Vycm9yLiAgVGhpcwotICBtYWtlcyBpdCBjb25zaXN0ZW50IHdpdGggZmxvYXQoIjFlNTAwIikgYW5kIGludGVycHJldGF0aW9uIG9mIHJlYWwKLSAgYW5kIGltYWdpbmFyeSBsaXRlcmFscy4KLQotLSBJc3N1ZSAjMzUyNzogUmVtb3ZlZCBQeV9XSU5fV0lERV9GSUxFTkFNRVMgd2hpY2ggaXMgbm90IHVzZWQgYW55IG1vcmUuCi0KLS0gSXNzdWUgIzU5OTQ6IHRoZSBtYXJzaGFsIG1vZHVsZSBub3cgaGFzIGRvY3N0cmluZ3MuCi0KLS0gSXNzdWUgIzU5ODE6IEZpeCB0aHJlZSBtaW5vciBpbmYvbmFuIGlzc3VlcyBpbiBmbG9hdC5mcm9taGV4OgotICAoMSkgaW5mIGFuZCBuYW4gc3RyaW5ncyB3aXRoIHRyYWlsaW5nIHdoaXRlc3BhY2Ugd2VyZSBpbmNvcnJlY3RseQotICByZWplY3RlZDsgICgyKSBwYXJzaW5nIG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIGluZmluaXRpZXMgYW5kIG5hbnMKLSAgd2FzIGxvY2FsZSBhd2FyZTsgYW5kICgzKSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZnJvbWhleCgnLW5hbicpCi0gIGRpZG4ndCBtYXRjaCB0aGF0IG9mIGZsb2F0KCctbmFuJykuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjNDg1OTogSW1wbGVtZW50IFBFUCAzODMgZm9yIHB3ZCwgc3B3ZCwgYW5kIGdycC4KLQotLSBzbXRwbGliICdsb2dpbicgYW5kICdjcmFtLW1kNScgbG9naW4gYXJlIGFsc28gZml4ZWQgKHNlZSBJc3N1ZSAjNTI1OSkuCi0KLS0gSXNzdWUgIzYxMjE6IHB5ZG9jIG5vdyBpZ25vcmVzIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcyBpbiB0aGUKLSAgYXJndW1lbnQgdG8gdGhlICdoZWxwJyBmdW5jdGlvbi4KLQotLSBJc3N1ZSAjNjExODogdXJsbGliLnBhcnNlLnF1b3RlX3BsdXMgaWdub3JlZCB0aGUgZW5jb2RpbmcgYW5kIGVycm9ycwotICBhcmd1bWVudHMgZm9yIHN0cmluZ3Mgd2l0aCBhIHNwYWNlIGluIHRoZW0uCi0KLS0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpIHdhcyBub3Qgd29ya2luZyB3aXRoIHRoZSBmb2xsb3dpbmcgZmllbGQKLSAgbmFtZXM6ICBjbHMsIHNlbGYsIHR1cGxlLCBpdGVtZ2V0dGVyLCBhbmQgcHJvcGVydHkuCi0KLS0gSW4gdW5pdHRlc3QsIHVzaW5nIGEgc2tpcHBpbmcgZGVjb3JhdG9yIG9uIGEgY2xhc3MgaXMgbm93IGVxdWl2YWxlbnQgdG8KLSAgc2tpcHBpbmcgZXZlcnkgdGVzdCBvbiB0aGUgY2xhc3MuICBUaGUgQ2xhc3NUZXN0U3VpdGUgY2xhc3MgaGFzIGJlZW4gcmVtb3ZlZC4KLQotLSBJc3N1ZSAjNjA1MDogRG9uJ3QgZmFpbCBleHRyYWN0aW5nIGEgZGlyZWN0b3J5IGZyb20gYSB6aXBmaWxlIGlmCi0gIHRoZSBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMuCi0KLS0gSXNzdWUgIzEzMDkzNTI6IGZjbnRsIG5vdyBjb252ZXJ0cyBpdHMgdGhpcmQgYXJndW1lbnRzIHRvIGEgQyBgbG9uZ2AgcmF0aGVyCi0gIHRoYW4gYW4gaW50LCB3aGljaCBtYWtlcyBzb21lIG9wZXJhdGlvbnMgcG9zc2libGUgdW5kZXIgNjQtYml0IExpbnV4IChlLmcuCi0gIEROX01VTFRJU0hPVCB3aXRoIEZfTk9USUZZKS4KLQotLSBJc3N1ZSAjNTc2MTogQWRkIHRoZSBuYW1lIG9mIHRoZSB1bmRlcmx5aW5nIGZpbGUgdG8gdGhlIHJlcHIoKSBvZiB2YXJpb3VzCi0gIElPIG9iamVjdHMuCi0KLS0gSXNzdWUgIzUyNTk6IHNtdHBsaWIgcGxhaW4gYXV0aCBsb2dpbiBubyBsb25nZXIgZ2l2ZXMgYSB0cmFjZWJhY2suICBGaXgKLSAgYnkgTXVzYXNoaSBUYW11cmEsIHRlc3RzIGJ5IE1hcmNpbiBCYWNocnkuCi0KLS0gSXNzdWUgIzE5ODM6IEZpeCBmdW5jdGlvbnMgdGFraW5nIG9yIHJldHVybmluZyBhIHByb2Nlc3MgaWRlbnRpZmllciB0byB1c2UKLSAgdGhlIGRlZGljYXRlZCBDIHR5cGUgYGBwaWRfdGBgIGluc3RlYWQgb2YgYSBDIGBgaW50YGAuIFNvbWUgcGxhdGZvcm1zIGhhdmUKLSAgYSBwcm9jZXNzIGlkZW50aWZpZXIgdHlwZSB3aWRlciB0aGFuIHRoZSBzdGFuZGFyZCBDIGludGVnZXIgdHlwZS4KLQotLSBJc3N1ZSAjNDA2Njogc210cGxpYi5TTVRQX1NTTC5fZ2V0X3NvY2tldCBub3cgY29ycmVjdGx5IHJldHVybnMgdGhlIHNvY2tldC4KLSAgUGF0Y2ggYnkgRmFyaGFuIEFobWFkLCB0ZXN0IGJ5IE1hcmNpbiBCYWNocnkuCi0KLS0gSXNzdWUgIzIxMTY6IFdlYWsgcmVmZXJlbmNlcyBhbmQgd2VhayBkaWN0aW9uYXJpZXMgbm93IHN1cHBvcnQgY29weSgpaW5nIGFuZAotICBkZWVwY29weSgpaW5nLgotCi0tIElzc3VlICMxNjU1OiBNYWtlIGltYXBsaWIgSVB2Ni1jYXBhYmxlLiBQYXRjaCBieSBEZXJlayBNb3JyLgotCi0tIElzc3VlICM1OTE4OiBGaXggYSBjcmFzaCBpbiB0aGUgcGFyc2VyIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTY2NDogTWFrZSBubnRwbGliIElQdjYtY2FwYWJsZS4gUGF0Y2ggYnkgRGVyZWsgTW9yci4KLQotLSBJc3N1ZSAjNTAwNjogQmV0dGVyIGhhbmRsaW5nIG9mIHVuaWNvZGUgYnl0ZS1vcmRlciBtYXJrcyAoQk9NKSBpbiB0aGUgaW8KLSAgbGlicmFyeS4gVGhpcyBtZWFucywgZm9yIGV4YW1wbGUsIHRoYXQgb3BlbmluZyBhbiBVVEYtMTYgdGV4dCBmaWxlIGluCi0gIGFwcGVuZCBtb2RlIGRvZXNuJ3QgYWRkIGEgQk9NIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUgaWYgdGhlIGZpbGUgaXNuJ3QKLSAgZW1wdHkuCi0KLS0gSXNzdWUgIzQwNTA6IGluc3BlY3QuZmluZHNvdXJjZS9nZXRzb3VyY2Ugbm93IHJhaXNlIGFuIElPRXJyb3IgaWYgdGhlICdzb3VyY2UnCi0gIGZpbGUgaXMgYSBiaW5hcnkuICBQYXRjaCBieSBCcm9kaWUgUmFvLCB0ZXN0cyBieSBEYW5pZWwgRGluaXouICBUaGlzIGZpeAotICBjb3JyZWN0cyBhIHB5ZG9jIHJlZ3Jlc3Npb24uCi0KLS0gSXNzdWUgIzU5NTU6IGFpZmMncyBjbG9zZSBtZXRob2QgZGlkIG5vdCBjbG9zZSB0aGUgZmlsZSBpdCB3cmFwcGVkLAotICBub3cgaXQgZG9lcy4gIFRoaXMgYWxzbyBtZWFucyBnZXRmcCBtZXRob2Qgbm93IHJldHVybnMgdGhlIHJlYWwgZnAuCi0KLUluc3RhbGxhdGlvbgotLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzYwNDc6IGZ1bGxpbnN0YWxsIGhhcyBiZWVuIHJlbW92ZWQgYmVjYXVzZSBQeXRob24gMydzIGV4ZWN1dGFibGUgd2lsbAotICBub3cgYmUga25vd24gYXMgcHl0aG9uMy4KLQotLSBMaWIvc210cGQucHkgaXMgbm8gbG9uZ2VyIGluc3RhbGxlZCBhcyBhIHNjcmlwdC4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzMwNjE6IFVzZSB3Y3NmdGltZSBmb3IgdGltZS5zdHJmdGltZSB3aGVyZSBhdmFpbGFibGUuCi0KLS0gSXNzdWUgIzQ4NzM6IEZpeCByZXNvdXJjZSBsZWFrcyBpbiBlcnJvciBjYXNlcyBvZiBwd2QgYW5kIGdycC4KLQotLSBJc3N1ZSAjNjA5MzogRml4IG9mZi1ieS1vbmUgZXJyb3IgaW4gbG9jYWxlLnN0cnhmcm0uCi0KLS0gVGhlIF9mdW5jdG9vbHMgYW5kIF9sb2NhbGUgbW9kdWxlcyBhcmUgbm93IGJ1aWx0IGludG8gdGhlIGxpYnB5dGhvbiBzaGFyZWQKLSAgbGlicmFyeSBpbnN0ZWFkIG9mIGFzIGV4dGVuc2lvbiBtb2R1bGVzLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMzU4NTogQWRkIHBrZy1jb25maWcgc3VwcG9ydC4gSXQgY3JlYXRlcyBhIHB5dGhvbi0yLjcucGMgZmlsZQotICBhbmQgYSBweXRob24zLnBjIHN5bWxpbmsgaW4gdGhlICQoTElCRElSKS9wa2djb25maWcgZGlyZWN0b3J5LiBQYXRjaCBieQotICBDbGludG9uIFJveS4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzU0NDI6IFRlc3RzIGZvciBpbXBvcnRsaWIgd2VyZSBub3QgcHJvcGVybHkgc2tpcHBpbmcgY2FzZS1zZW5zaXRpdml0eQotICB0ZXN0cyBvbiBkYXJ3aW4gZXZlbiB3aGVuIHRoZSBPUyB3YXMgaW5zdGFsbGVkIG9uIGEgY2FzZS1zZW5zaXRpdmUKLSAgZmlsZXN5c3RlbS4gQWxzbyBmaXhlZCB0ZXN0cyB0aGF0IHNob3VsZCBub3QgYmUgcnVuIHdoZW4KLSAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgaXMgdHJ1ZS4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjEgYmV0YSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMjAwOS0wNS0wNioKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzU5MTQ6IEFkZCBuZXcgQyBBUEkgZnVuY3Rpb24gUHlPU19zdHJpbmdfdG9fZG91YmxlLCBhbmQKLSAgZGVwcmVjYXRlIFB5T1NfYXNjaWlfc3RydG9kIGFuZCBQeU9TX2FzY2lpX2F0b2YuCi0KLS0gSXNzdWUgIzMzODI6IGZsb2F0Ll9fZm9ybWF0X18sIGNvbXBsZXguX19mb3JtYXRfXywgYW5kICUtZm9ybWF0dGluZwotICBubyBsb25nZXIgbWFwICdGJyB0byAnZicuIEJlY2F1c2Ugb2YgaXNzdWUgIzU4NTkgKGJlbG93KSwgdGhpcyBvbmx5Ci0gIGFmZmVjdHMgbmFuIC0+IE5BTiBhbmQgaW5mIC0+IElORi4KLQotLSBJc3N1ZSAjNTc5OTogbnRwYXRoIChpZSwgb3MucGF0aCBvbiBXaW5kb3dzKSBmdWxseSBzdXBwb3J0cyBVTkMgcGF0aG5hbWVzCi0gIGluIGFsbCBvcGVyYXRpb25zLCBpbmNsdWRpbmcgc3BsaXRkcml2ZSwgc3BsaXQsIGV0Yy4gIHNwbGl0dW5jKCkgbm93IGlzc3VlcwotICBhIFBlbmRpbmdEZXByZWNhdGlvbiB3YXJuaW5nLgotCi0tIElzc3VlICM1OTIwOiBGb3IgZmxvYXQuX19mb3JtYXRfXywgY2hhbmdlIHRoZSBiZWhhdmlvciB3aXRoIHRoZQotICBlbXB0eSBwcmVzZW50YXRpb24gdHlwZSAodGhhdCBpcywgbm90IG9uZSBvZiAnZScsICdmJywgJ2cnLCBvciAnbicpCi0gIHRvIGJlIGxpa2UgJ2cnIGJ1dCB3aXRoIGF0IGxlYXN0IG9uZSBkZWNpbWFsIHBvaW50IGFuZCB3aXRoIGEKLSAgZGVmYXVsdCBwcmVjaXNpb24gb2YgMTIuIFByZXZpb3VzbHksIHRoZSBiZWhhdmlvciB0aGUgc2FtZSBidXQgd2l0aAotICBhIGRlZmF1bHQgcHJlY2lzaW9uIG9mIDYuICBUaGlzIG1vcmUgY2xvc2VseSBtYXRjaGVzIHN0cigpLCBhbmQKLSAgcmVkdWNlcyBzdXJwcmlzZXMgd2hlbiBhZGRpbmcgYWxpZ25tZW50IGZsYWdzIHRvIHRoZSBlbXB0eQotICBwcmVzZW50YXRpb24gdHlwZS4gVGhpcyBhbHNvIGFmZmVjdHMgdGhlIG5ldyBjb21wbGV4Ll9fZm9ybWF0X18gaW4KLSAgdGhlIHNhbWUgd2F5LgotCi0tIEltcGxlbWVudCBQRVAgMzgzLCBOb24tZGVjb2RhYmxlIEJ5dGVzIGluIFN5c3RlbSBDaGFyYWN0ZXIgSW50ZXJmYWNlcy4KLQotLSBJc3N1ZSAjNTg5MDogaW4gc3ViY2xhc3NlcyBvZiAncHJvcGVydHknIHRoZSBfX2RvY19fIGF0dHJpYnV0ZSB3YXMKLSAgc2hhZG93ZWQgYnkgY2xhc3N0eXBlJ3MsIGV2ZW4gaWYgaXQgd2FzIE5vbmUuICBwcm9wZXJ0eSBub3cKLSAgaW5zZXJ0cyB0aGUgX19kb2NfXyBpbnRvIHRoZSBzdWJjbGFzcyBpbnN0YW5jZSBfX2RpY3RfXy4KLQotLSBJc3N1ZSAjNDQyNjogVGhlIFVURi03IGRlY29kZXIgd2FzIHRvbyBzdHJpY3QgYW5kIGRpZG4ndCBhY2NlcHQgc29tZSBsZWdhbAotICBzZXF1ZW5jZXMuIFBhdGNoIGJ5IE5pY2sgQmFybmVzIGFuZCBWaWN0b3IgU3Rpbm5lci4KLQotLSBJc3N1ZSAjMzY3MjogUmVqZWN0IHN1cnJvZ2F0ZXMgaW4gdXRmLTggY29kZWM7IGFkZCBzdXJyb2dhdGVwYXNzIGVycm9yIGhhbmRsZXIuCi0KLS0gSXNzdWUgIzU4ODM6IEluIHRoZSBpbyBtb2R1bGUsIHRoZSBCdWZmZXJlZElPQmFzZSBhbmQgVGV4dElPQmFzZSBBQkNzIGhhdmUKLSAgcmVjZWl2ZWQgYSBuZXcgbWV0aG9kLCBkZXRhY2goKS4gIGRldGFjaCgpIGRpc2Nvbm5lY3RzIHRoZSB1bmRlcmx5aW5nIHN0cmVhbQotICBmcm9tIHRoZSBidWZmZXIgb3IgdGV4dCBJTyBhbmQgcmV0dXJucyBpdC4KLQotLSBJc3N1ZSAjNTg1OTogUmVtb3ZlIHN3aXRjaCBmcm9tICclZicgdG8gJyVnJy1zdHlsZSBmb3JtYXR0aW5nIGZvcgotICBmbG9hdHMgd2l0aCBhYnNvbHV0ZSB2YWx1ZSBvdmVyIDFlNTAuICBBbHNvIHJlbW92ZSBsZW5ndGgKLSAgcmVzdHJpY3Rpb25zIGZvciBmbG9hdCBmb3JtYXR0aW5nOiAnJS42N2YnICUgMTIuMzQgYW5kICclLjEyMGUnICUKLSAgMTIuMzQgbm8gbG9uZ2VyIHJhaXNlIGFuIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjMTU4ODogQWRkIGNvbXBsZXguX19mb3JtYXRfXy4gRm9yIGV4YW1wbGUsCi0gIGZvcm1hdChjb21wbGV4KDEsIDIuLzMpLCAnLjUnKSBub3cgcHJvZHVjZXMgYSBzZW5zaWJsZSByZXN1bHQuCi0KLS0gSXNzdWUgIzU4NjQ6IEZpeCBlbXB0eSBmb3JtYXQgY29kZSBmb3JtYXR0aW5nIGZvciBmbG9hdHMgc28gdGhhdCBpdAotICBuZXZlciBnaXZlcyBtb3JlIHRoYW4gdGhlIHJlcXVlc3RlZCBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzLgotCi0tIElzc3VlICM1NzkzOiBSYXRpb25hbGl6ZSBpc2RpZ2l0IC8gaXNhbHBoYSAvIHRvbG93ZXIsIGV0Yy4gSW5jbHVkZXMKLSAgbmV3IFB5X0lTRElHSVQgLyBQeV9JU0FMUEhBIC8gUHlfVE9MT1dFUiwgZXRjLiBpbiBwY3R5cGVzLmguCi0KLS0gSXNzdWUgIzU4MzU6IERlcHJlY2F0ZSBQeU9TX2FzY2lpX2Zvcm1hdGQuCi0KLS0gSXNzdWUgIzQ5NzE6IEZpeCB0aXRsZWNhc2UgZm9yIGNoYXJhY3RlcnMgdGhhdCBhcmUgdGhlaXIgb3duCi0gIHRpdGxlY2FzZSwgYnV0IG5vdCB0aGVpciBvd24gdXBwZXJjYXNlLgotCi0tIElzc3VlICM1MjgzOiBTZXR0aW5nIF9fY2xhc3NfXyBpbiBfX2RlbF9fIGNhdXNlZCBhIHNlZ2ZhdWx0LgotCi0tIElzc3VlICM1ODE2OiBjb21wbGV4KHJlcHIoeikpIG5vdyByZWNvdmVycyB6IGV4YWN0bHksIGV2ZW4gd2hlbgotICB6IGludm9sdmVzIG5hbnMsIGluZnMgb3IgbmVnYXRpdmUgemVyb3MuCi0KLS0gSXNzdWUgIzMxNjY6IE1ha2UgaW50IC0+IGZsb2F0IGNvbnZlcnNpb25zIGNvcnJlY3RseSByb3VuZGVkLgotCi0tIElzc3VlICMxODY5IChhbmQgbWFueSBkdXBsaWNhdGVzKTogbWFrZSByb3VuZCh4LCBuKSBjb3JyZWN0bHkKLSAgcm91bmRlZCBmb3IgYSBmbG9hdCB4LCBieSB1c2luZyB0aGUgZGVjaW1hbCA8LT4gYmluYXJ5IGNvbnZlcnNpb25zCi0gIGZyb20gUHl0aG9uL2R0b2EuYy4gIEFzIGEgY29uc2VxdWVuY2UsIChlLmcuKSByb3VuZCh4LCAyKSBub3cKLSAgY29uc2lzdGVudGx5IGFncmVlcyB3aXRoIGZvcm1hdCh4LCAnLjJmJykuCi0KLS0gSXNzdWUgIzU3ODc6IG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNvbWVfdHlwZSwgIl9fYmFzZXNfXyIpIHNlZ2ZhdWx0ZWQgb24KLSAgc29tZSBidWlsdGluIHR5cGVzLgotCi0tIElzc3VlICM1NzcyOiBmb3JtYXQoMWUxMDAsICc8JykgcHJvZHVjZXMgJzFlKzEwMCcsIG5vdCAnMS4wZSsxMDAnLgotCi0tIElzc3VlICM1NTE1OiBzdHIuZm9ybWF0KCkgdHlwZSAnbicgY29tYmluZWQgd2l0aCBjb21tYXMgYW5kIGxlYWRpbmcKLSAgemVyb3Mgbm8gbG9uZ2VyIGdpdmVzIG9kZCByZXN1bHRzIHdpdGggaW50cyBhbmQgZmxvYXRzLgotCi0tIEltcGxlbWVudCBQRVAgMzc4LCBGb3JtYXQgU3BlY2lmaWVyIGZvciBUaG91c2FuZHMgU2VwYXJhdG9yLCBmb3IKLSAgZmxvYXRzLgotCi0tIFRoZSBzdHIgZnVuY3Rpb24gc3dpdGNoZXMgdG8gZXhwb25lbnRpYWwgbm90YXRpb24gYXQKLSAgMWUxMSwgbm90IDFlMTIuICBUaGlzIGF2b2lkcyBwcmludGluZyAxMyBzaWduaWZpY2FudCBkaWdpdHMgaW4KLSAgc2l0dWF0aW9ucyB3aGVyZSBvbmx5IDEyIG9mIHRoZW0gYXJlIGNvcnJlY3QuICBFeGFtcGxlIHByb2JsZW0KLSAgdmFsdWU6IHN0cigxZTExICsgMC41KS4gIChUaGlzIG1pbm9yIGlzc3VlIGhhcyBleGlzdGVkIGluIDIueCBmb3IgYQotICBsb25nIHRpbWUuKQotCi0tIElzc3VlICMxNTgwOiBPbiBtb3N0IHBsYXRmb3JtcywgdXNlIGEgJ3Nob3J0JyBmbG9hdCByZXByOiBmb3IgYQotICBmaW5pdGUgZmxvYXQgeCwgcmVwcih4KSBub3cgb3V0cHV0cyBhIHN0cmluZyBiYXNlZCBvbiB0aGUgc2hvcnRlc3QKLSAgc2VxdWVuY2Ugb2YgZGVjaW1hbCBkaWdpdHMgdGhhdCByb3VuZHMgdG8geC4gIFByZXZpb3VzIGJlaGF2aW91ciB3YXMKLSAgdG8gb3V0cHV0IDE3IHNpZ25pZmljYW50IGRpZ2l0cyBhbmQgdGhlbiBzdHJpcCB0cmFpbGluZyB6ZXJvcy4KLSAgQW5vdGhlciBtaW5vciBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIG5ldyByZXByIHN3aXRjaGVzIHRvCi0gIGV4cG9uZW50aWFsIG5vdGF0aW9uIGF0IDFlMTYgaW5zdGVhZCBvZiB0aGUgcHJldmlvdXMgMWUxNzsgdGhpcwotICBhdm9pZHMgbWlzbGVhZGluZyBvdXRwdXQgaW4gc29tZSBjYXNlcy4KLQotICBUaGVyZSdzIGEgbmV3IHN5cyBhdHRyaWJ1dGUgc3lzLmZsb2F0X3JlcHJfc3R5bGUsIHdoaWNoIHRha2VzCi0gIHRoZSB2YWx1ZSAnc2hvcnQnIHRvIGluZGljYXRlIHRoYXQgd2UncmUgdXNpbmcgc2hvcnQgZmxvYXQgcmVwciwKLSAgYW5kICdsZWdhY3knIGlmIHRoZSBzaG9ydCBmbG9hdCByZXByIGlzbid0IGF2YWlsYWJsZSBmb3Igb25lCi0gIHJlYXNvbiBvciBhbm90aGVyLgotCi0gIFRoZSBmbG9hdCByZXByIGNoYW5nZSBpbnZvbHZlcyBpbmNvcnBvcmF0aW5nIERhdmlkIEdheSdzICdwZXJmZWN0Ci0gIHJvdW5kaW5nJyBjb2RlIGludG8gdGhlIFB5dGhvbiBjb3JlIChpdCdzIGluIFB5dGhvbi9kdG9hLmMpLiAgQXMgYQotICBzZWNvbmRhcnkgY29uc2VxdWVuY2UsIGFsbCBzdHJpbmctdG8tZmxvYXQgYW5kIGZsb2F0LXRvLXN0cmluZwotICBjb252ZXJzaW9ucyAoaW5jbHVkaW5nIGFsbCBmbG9hdCBmb3JtYXR0aW5nIG9wZXJhdGlvbnMpIHdpbGwgYmUKLSAgY29ycmVjdGx5IHJvdW5kZWQgb24gdGhlc2UgcGxhdGZvcm1zLgotCi0gIFNlZSBpc3N1ZSAjMTU4MCBkaXNjdXNzaW9ucyBmb3IgZGV0YWlscyBvZiBwbGF0Zm9ybXMgZm9yIHdoaWNoCi0gIHRoaXMgY2hhbmdlIGRvZXMgbm90IGFwcGx5LgotCi0tIElzc3VlICM1NzU5OiBmbG9hdCgpIGRpZG4ndCBjYWxsIF9fZmxvYXRfXyBvbiBzdHIgc3ViY2xhc3Nlcy4KLQotLSBUaGUgc3RyaW5nLm1ha2V0cmFucygpIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQ7IHRoZXJlIGlzIGEgbmV3IHN0YXRpYyBtZXRob2QKLSAgbWFrZXRyYW5zKCkgb24gdGhlIGJ5dGVzIGFuZCBieXRlYXJyYXkgY2xhc3Nlcy4gIFRoaXMgcmVtb3ZlcyBjb25mdXNpb24gYWJvdXQKLSAgdGhlIHR5cGVzIHN0cmluZy5tYWtldHJhbnMoKSBpcyBzdXBwb3NlZCB0byB3b3JrIHdpdGgsIGFuZCBtaXJyb3JzIHRoZQotICBtZXRob2RzIGF2YWlsYWJsZSBvbiB0aGUgc3RyIGNsYXNzLgotCi0tIElzc3VlICMyMTcwOiByZWZhY3RvcmVkIHhtbC5kb20ubWluaWRvbS5ub3JtYWxpemUsIGluY3JlYXNpbmcgYm90aAotICBpdHMgY2xhcml0eSBhbmQgaXRzIHNwZWVkLgotCi0tIElzc3VlICMxMTEzMjQ0OiBQeV9YSU5DUkVGLCBQeV9ERUNSRUYsIFB5X1hERUNSRUY6IEFkZCBgYGRvIHsgLi4uIH0gd2hpbGUgKDApYGAKLSAgdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZ3MuCi0KLS0gSXNzdWUgIzM3Mzk6IFRoZSB1bmljb2RlLWludGVybmFsIGVuY29kZXIgbm93IHJlcG9ydHMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzCi0gIGNvbnN1bWVkIGxpa2UgYW55IG90aGVyIGVuY29kZXIgKGluc3RlYWQgb2YgdGhlIG51bWJlciBvZiBieXRlcykuCi0KLUluc3RhbGxhdGlvbgotLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzU3NTY6IEluc3RhbGwgaWRsZSBhbmQgcHlkb2Mgd2l0aCBhIDMgc3VmZml4LgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzgyMDM6IEZpeCBJRExFIENyZWRpdHMgZGlhbG9nOiB2aWV3X2ZpbGUoKSB1c2VzIGl0cyBlbmNvZGluZyBhcmd1bWVudC4KLQotLSBJc3N1ZSAjNTMxMTogYmRpc3RfbXNpIGNhbiBub3cgYnVpbGQgcGFja2FnZXMgdGhhdCBkbyBub3QgZGVwZW5kIG9uIGEKLSAgc3BlY2lmaWMgUHl0aG9uIHZlcnNpb24uCi0KLS0gSXNzdWUgIzUxNTA6IElETEUncyBmb3JtYXQgbWVudSBub3cgaGFzIGFuIG9wdGlvbiB0byBzdHJpcCB0cmFpbGluZwotICB3aGl0ZXNwYWNlLgotCi0tIElzc3VlICM1OTQwOiBkaXN0dXRpbHMuY29tbWFuZC5idWlsZF9jbGliLmNoZWNrX2xpYnJhcnlfbGlzdCB3YXMgbm90IGRvaW5nCi0gIHRoZSByaWdodCB0eXBlIGNoZWNraW5ncyBhbnltb3JlLgotCi0tIElzc3VlICM0ODc1OiBPbiB3aW4zMiwgY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5IGRvZXMgbm8gbG9uZ2VyCi0gIHJldHVybiBkaXJlY3Rvcmllcy4KLQotLSBJc3N1ZSAjNTE0MjogQWRkIHRoZSBhYmlsaXR5IHRvIHNraXAgbW9kdWxlcyB3aGlsZSBzdGVwcGluZyB0byBwZGIuCi0KLS0gSXNzdWUgIzEzMDk1Njc6IEZpeCBsaW5lY2FjaGUgYmVoYXZpb3Igb2Ygc3RyaXBwaW5nIHN1YmRpcmVjdG9yaWVzIHdoZW4KLSAgbG9va2luZyBmb3IgZmlsZXMgZ2l2ZW4gYnkgYSByZWxhdGl2ZSBmaWxlbmFtZS4KLQotLSBJc3N1ZSAjNTkyMzogVXBkYXRlIHRoZSBgYHR1cnRsZWBgIG1vZHVsZSB0byB2ZXJzaW9uIDEuMSwgYWRkIHR3byBuZXcKLSAgdHVydGxlIGRlbW9zIGluIERlbW8vdHVydGxlLgotCi0tIElzc3VlICM1NjkyOiBJbiA6Y2xhc3M6YHppcGZpbGUuWmlwZmlsZWAsIGZpeCB3cm9uZyBwYXRoIGNhbGN1bGF0aW9uIHdoZW4KLSAgZXh0cmFjdGluZyBhIGZpbGUgdG8gdGhlIHJvb3QgZGlyZWN0b3J5LgotCi0tIElzc3VlICM1OTEzOiBvcy5saXN0ZGlyKCkgc2hvdWxkIGZhaWwgZm9yIGVtcHR5IHBhdGggb24gd2luZG93cy4KLQotLSBJc3N1ZSAjNTA4NDogdW5waWNrbGluZyBub3cgaW50ZXJucyB0aGUgYXR0cmlidXRlIG5hbWVzIG9mIHBpY2tsZWQgb2JqZWN0cywKLSAgc2F2aW5nIG1lbW9yeSBhbmQgYXZvaWRpbmcgZ3Jvd3RoIGluIHNpemUgb2Ygc3Vic2VxdWVudCBwaWNrbGVzLiBQcm9wb3NhbAotICBhbmQgb3JpZ2luYWwgcGF0Y2ggYnkgSmFrZSBNY0d1aXJlLgotCi0tIFRoZSBqc29uIG1vZHVsZSBub3cgd29ya3MgZXhjbHVzaXZlbHkgd2l0aCBzdHIgYW5kIG5vdCBieXRlcy4KLQotLSBJc3N1ZSAjMzk1OTogVGhlIGlwYWRkciBtb2R1bGUgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkuCi0gIENvbnRyaWJ1dGVkIGJ5IEdvb2dsZS4KLQotLSBJc3N1ZSAjMzAwMjogYGBzaHV0aWwuY29weWZpbGUoKWBgIGFuZCBgYHNodXRpbC5jb3B5dHJlZSgpYGAgbm93IHJhaXNlIGFuCi0gIGVycm9yIHdoZW4gYSBuYW1lZCBwaXBlIGlzIGVuY291bnRlcmVkLCByYXRoZXIgdGhhbiBibG9ja2luZyBpbmZpbml0ZWx5LgotCi0tIElzc3VlICM1ODU3OiB0b2tlbml6ZS50b2tlbml6ZSgpIG5vdyByZXR1cm5zIG5hbWVkIHR1cGxlcy4KLQotLSBJc3N1ZSAjNDMwNTogY3R5cGVzIHNob3VsZCBub3cgYnVpbGQgYWdhaW4gb24gbWlwc2VsLWxpbnV4LWdudQotCi0tIElzc3VlICMxNzM0MjM0OiBNYXNzaXZlbHkgc3BlZWR1cCBgYHVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgpYGAgd2hlbiB0aGUKLSAgc3RyaW5nIGlzIGFscmVhZHkgaW4gbm9ybWFsaXplZCBmb3JtLCBieSBwZXJmb3JtaW5nIGEgcXVpY2sgY2hlY2sgYmVmb3JlaGFuZC4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgUmF1bGkgUnVvaG9uZW4uCi0KLS0gSXNzdWUgIzU4NTM6IGNhbGxpbmcgYSBmdW5jdGlvbiBvZiB0aGUgbWltZXR5cGVzIG1vZHVsZSBmcm9tIHNldmVyYWwgdGhyZWFkcwotICBhdCBvbmNlIGNvdWxkIGhpdCB0aGUgcmVjdXJzaW9uIGxpbWl0IGlmIHRoZSBtaW1ldHlwZXMgZGF0YWJhc2UgaGFkbid0IGJlZW4KLSAgaW5pdGlhbGl6ZWQgYmVmb3JlLgotCi0tIElzc3VlICM1ODU0OiBVcGRhdGVkIF9fYWxsX18gdG8gaW5jbHVkZSBzb21lIG1pc3NpbmcgbmFtZXMgYW5kIHJlbW92ZSBzb21lCi0gIG5hbWVzIHdoaWNoIHNob3VsZCBub3QgYmUgZXhwb3J0ZWQuCi0KLS0gSXNzdWUgIzMxMDI6ICBBbGwgZ2xvYmFsIHN5bWJvbHMgdGhhdCB0aGUgX2N0eXBlcyBleHRlbnNpb24gZGVmaW5lcwotICBhcmUgbm93IHByZWZpeGVkIHdpdGggJ1B5JyBvciAnX2N0eXBlcycuCi0KLS0gSXNzdWUgIzUwNDE6IGN0eXBlcyBkb2VzIG5vdyBhbGxvdyBwaWNrbGluZyB3aWRlIGNoYXJhY3Rlci4KLQotLSBJc3N1ZSAjNTgxMjogRm9yIHRoZSB0d28tYXJndW1lbnQgZm9ybSBvZiB0aGUgRnJhY3Rpb24gY29uc3RydWN0b3IsCi0gIEZyYWN0aW9uKG0sIG4pLCBtIGFuZCBuIGFyZSBwZXJtaXR0ZWQgdG8gYmUgYXJiaXRyYXJ5IFJhdGlvbmFsCi0gIGluc3RhbmNlcy4KLQotLSBJc3N1ZSAjNTgxMjogRnJhY3Rpb24oJzFlNicpIGlzIHZhbGlkOiBtb3JlIGdlbmVyYWxseSwgYW55IHN0cmluZwotICB0aGF0J3MgdmFsaWQgZm9yIGZsb2F0KCkgaXMgbm93IHZhbGlkIGZvciBGcmFjdGlvbigpLCB3aXRoIHRoZQotICBleGNlcHRpb24gb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgTmFOcyBhbmQgaW5maW5pdGllcy4KLQotLSBJc3N1ZSAjNTczNDogQnVmZmVyZWRSV1BhaXIgd2FzIHBvb3JseSB0ZXN0ZWQgYW5kIGhhZCBzZXZlcmFsIGdsYXJpbmcKLSAgYnVncy4gUGF0Y2ggYnkgQnJpYW4gUXVpbmxhbi4KLQotLSBJc3N1ZSAjMTE2MTAzMTogZml4IHJlYWR3cml0ZSBzZWxlY3QgZmxhZyBoYW5kbGluZzogUE9MTFBSSSBub3cKLSAgcmVzdWx0cyBpbiBhIGhhbmRsZV9leHB0X2V2ZW50IGNhbGwsIG5vdCBoYW5kbGVfcmVhZF9ldmVudCwgYW5kIFBPTExFUlIKLSAgYW5kIFBPTExOVkFMIG5vdyBjYWxsIGhhbmRsZV9jbG9zZSwgbm90IGhhbmRsZV9leHB0X2V2ZW50LiAgQWxzbywKLSAgZGlzcGF0Y2hlciBub3cgaGFzIGFuICdpZ25vcmVfbG9nX3R5cGVzJyBhdHRyaWJ1dGUgZm9yIHN1cHByZXNzaW5nCi0gIGxvZyBtZXNzYWdlcywgd2hpY2ggaXMgc2V0IHRvICd3YXJuaW5nJyBieSBkZWZhdWx0LgotCi0tIElzc3VlICMyNzAzOiBTaW1wbGVYTUxSUENEaXNwYXRjaGVyLl9faW5pdF9fOiBQcm92aWRlIGRlZmF1bHQgdmFsdWVzIGZvcgotICBuZXcgYXJndW1lbnRzIGludHJvZHVjZWQgaW4gMi41LgotCi0tIElzc3VlICM1ODI4IChJbnZhbGlkIGJlaGF2aW9yIG9mIHVuaWNvZGUubG93ZXIpOiBGaXhlZCBib2d1cyBsb2dpYyBpbgotICBtYWtldW5pY29kZWRhdGEucHkgYW5kIHJlZ2VuZXJhdGVkIHRoZSBVbmljb2RlIGRhdGFiYXNlIChUaGlzIGZpeGVzCi0gIHUnXHUxZDc5Jy5sb3dlcigpID09ICdceDAwJykuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM1ODgxOiBSZW1vdmUgb2xkIHVuZG9jdW1lbnRlZCBjb21wYXRpYmlsaXR5IGludGVyZmFjZXMgaW4gaGFzaGxpYiBhbmQKLSAgcHdkLgotCi0tIElzc3VlICM1NDYzOiBJbiBzdHJ1Y3QgbW9kdWxlLCByZW1vdmUgZGVwcmVjYXRlZCBmbG9hdCBjb2VyY2lvbgotICBmb3IgaW50ZWdlciB0eXBlIGNvZGVzOiBzdHJ1Y3QucGFjaygnTCcsIDAuMykgc2hvdWxkIG5vdyByYWlzZQotICBhbiBlcnJvci4gIFRoZSBfUFlfU1RSVUNUX0ZMT0FUX0NPRVJDRSBjb25zdGFudCBoYXMgYmVlbiByZW1vdmVkLgotICBUaGUgdmVyc2lvbiBudW1iZXIgaGFzIGJlZW4gYnVtcGVkIHRvIDAuMy4KLQotLSBJc3N1ZSAjNTM1OTogUmVhZGQgdGhlIEJlcmtlbGV5IERCIGRldGVjdGlvbiBjb2RlIHRvIGFsbG93IF9kYm0gYmUgYnVpbHQKLSAgdXNpbmcgQmVya2VsZXkgREIuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICM1MzU0OiBOZXcgdGVzdCBzdXBwb3J0IGZ1bmN0aW9uIGltcG9ydF9mcmVzaF9tb2R1bGUoKSBtYWtlcwotICBpdCBlYXN5IHRvIGltcG9ydCBib3RoIG5vcm1hbCBhbmQgb3B0aW1pc2VkIHZlcnNpb25zIG9mIG1vZHVsZXMuCi0gIHRlc3RfaGVhcHEgYW5kIHRlc3Rfd2FybmluZ3MgaGF2ZSBiZWVuIGFkanVzdGVkIHRvIHVzZSBpdCwgdGVzdHMgZm9yCi0gIG90aGVyIG1vZHVsZXMgd2l0aCBib3RoIEMgYW5kIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIHN0ZGxpYgotICBjYW4gYmUgYWRqdXN0ZWQgdG8gdXNlIGl0IG92ZXIgdGltZS4KLQotLSBJc3N1ZSAjNTgzNzogQ2VydGFpbiBzZXF1ZW5jZXMgb2YgY2FsbHMgdG8gc2V0KCkgYW5kIHVuc2V0KCkgZm9yCi0gIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCBvYmplY3RzIHJlc3RvcmVkIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLSAgaW5jb3JyZWN0bHkgb24gX19leGl0X18uCi0KLUMtQVBJCi0tLS0tLQotCi0tIElzc3VlICM1NjMwOiBBIHJlcGxhY2VtZW50IFB5Q09iamVjdCBBUEksIFB5Q2Fwc3VsZSwgaGFzIGJlZW4gYWRkZWQuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xIGFscGhhIDI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMjAwOS00LTQqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIEltcGxlbWVudCBQRVAgMzc4LCBGb3JtYXQgU3BlY2lmaWVyIGZvciBUaG91c2FuZHMgU2VwYXJhdG9yLCBmb3IKLSAgaW50ZWdlcnMuCi0KLS0gSXNzdWUgIzU2NjY6IFB5X0J1aWxkVmFsdWUncyAnYycgY29kZSBzaG91bGQgY3JlYXRlIGJ5dGUgc3RyaW5ncy4KLQotLSBJc3N1ZSAjNTQ5OTogVGhlICdjJyBjb2RlIGZvciBhcmd1bWVudCBwYXJzaW5nIGZ1bmN0aW9ucyBub3cgb25seSBhY2NlcHRzIGEKLSAgYnl0ZSwgYW5kIHRoZSAnQycgY29kZSBvbmx5IGFjY2VwdHMgYSB1bmljb2RlIGNoYXJhY3Rlci4KLQotLSBGaXggYSBwcm9ibGVtIGluIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbiB0aGF0IGxlYWRzIHRvICJ1bmRldGVjdGVkIGVycm9ycyIKLSAgd2hlbiBoaXR0aW5nIHRoZSByZWN1cnNpb24gbGltaXQgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLgotCi0tIElzc3VlICMxNjY1MjA2OiBSZW1vdmUgdGhlIGxhc3QgZWFnZXIgaW1wb3J0IGluIF93YXJuaW5ncy5jIGFuZCBtYWtlIGl0IGxhenkuCi0KLS0gRml4IGEgc2VnZmF1bHQgd2hlbiBydW5uaW5nIHRlc3RfZXhjZXB0aW9ucyB3aXRoIGNvdmVyYWdlLCBjYXVzZWQgYnkKLSAgaW5zdWZmaWNpZW50IGNoZWNrcyBpbiBhY2Nlc3NvcnMgb2YgRXhjZXB0aW9uLl9fY29udGV4dF9fLgotCi0tIElzc3VlICM1NjA0OiBub24tQVNDSUkgY2hhcmFjdGVycyBpbiBtb2R1bGUgbmFtZSBwYXNzZWQgdG8KLSAgaW1wLmZpbmRfbW9kdWxlKCkgd2VyZSBjb252ZXJ0ZWQgdG8gVVRGLTggd2hpbGUgdGhlIHBhdGggaXMKLSAgY29udmVydGVkIHRvIHRoZSBkZWZhdWx0IGZpbGVzeXN0ZW0gZW5jb2RpbmcsIGNhdXNpbmcgbm9uc2Vuc2UuCi0KLS0gSXNzdWUgIzUxMjY6IHN0ci5pc3ByaW50YWJsZSgpIHJldHVybmVkIEZhbHNlIGZvciBzcGFjZSBjaGFyYWN0ZXJzLgotCi0tIElzc3VlICM0ODY1OiBPbiBNYWNPU1ggL0xpYnJhcnkvUHl0aG9uLzIuNy9zaXRlLXBhY2thZ2VzIGlzIGFkZGVkIHRvCi0gIHRoZSBlbmQgc3lzLnBhdGgsIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHN5c3RlbSBpbnN0YWxsIG9mIFB5dGhvbi4KLQotLSBJc3N1ZSAjNDY4ODogQWRkIGEgaGV1cmlzdGljIHNvIHRoYXQgdHVwbGVzIGFuZCBkaWN0cyBjb250YWluaW5nIG9ubHkKLSAgdW50cmFja2FibGUgb2JqZWN0cyBhcmUgbm90IHRyYWNrZWQgYnkgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLiBUaGlzIGNhbgotICByZWR1Y2UgdGhlIHNpemUgb2YgY29sbGVjdGlvbnMgYW5kIHRoZXJlZm9yZSB0aGUgZ2FyYmFnZSBjb2xsZWN0aW9uIG92ZXJoZWFkCi0gIG9uIGxvbmctcnVubmluZyBwcm9ncmFtcywgZGVwZW5kaW5nIG9uIHRoZWlyIHBhcnRpY3VsYXIgdXNlIG9mIGRhdGF0eXBlcy4KLQotLSBJc3N1ZSAjNTUxMjogUmV3cml0ZSBQeUxvbmcgbG9uZyBkaXZpc2lvbiBhbGdvcml0aG0gKHhfZGl2cmVtKSB0bwotICBpbXByb3ZlIGl0cyBwZXJmb3JtYW5jZS4gIExvbmcgZGl2aXNpb25zIGFuZCByZW1haW5kZXIgb3BlcmF0aW9ucwotICBhcmUgbm93IGJldHdlZW4gNTAlIGFuZCAxNTAlIGZhc3Rlci4KLQotLSBJc3N1ZSAjNDI1ODogTWFrZSBpdCBwb3NzaWJsZSB0byB1c2UgYmFzZSAyKiozMCBpbnN0ZWFkIG9mIGJhc2UKLSAgMioqMTUgZm9yIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBpbnRlZ2VycywgZm9yIHBlcmZvcm1hbmNlCi0gIHJlYXNvbnMuICBCYXNlIDIqKjMwIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiA2NC1iaXQgbWFjaGluZXMuICBBZGQKLSAgLS1lbmFibGUtYmlnLWRpZ2l0cyBvcHRpb24gdG8gY29uZmlndXJlLCB3aGljaCBvdmVycmlkZXMgdGhlCi0gIGRlZmF1bHQuICBBZGQgc3lzLmludF9pbmZvIHN0cnVjdHNlcSB0byBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0Ci0gIHRoZSBpbnRlcm5hbCBmb3JtYXQuCi0KLS0gSXNzdWUgIzQ0NzQ6IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIgbm93IGNvbnZlcnRzIGNoYXJhY3RlcnMgb3V0c2lkZQotICB0aGUgQk1QIHRvIHN1cnJvZ2F0ZSBwYWlycywgb24gc3lzdGVtcyB3aXRoIHNpemVvZih3Y2hhcl90KSA9PSA0Ci0gIGFuZCBzaXplb2YoUHlfVU5JQ09ERSkgPT0gMi4KLQotLSBJc3N1ZSAjNTIzNzogQWxsb3cgYXV0by1udW1iZXJlZCBmaWVsZHMgaW4gc3RyLmZvcm1hdCgpLiBGb3IKLSAgZXhhbXBsZTogJ3t9IHt9Jy5mb3JtYXQoMSwgMikgPT0gJzEgMicuCi0KLS0gSXNzdWUgIzUzOTI6IHdoZW4gYSB2ZXJ5IGxvdyByZWN1cnNpb24gbGltaXQgd2FzIHNldCwgdGhlIGludGVycHJldGVyIHdvdWxkCi0gIGFib3J0IHdpdGggYSBmYXRhbCBlcnJvciBhZnRlciB0aGUgcmVjdXJzaW9uIGxpbWl0IHdhcyBoaXQgdHdpY2UuCi0KLS0gSXNzdWUgIzM4NDU6IEluIFB5UnVuX1NpbXBsZUZpbGVFeEZsYWdzIGF2b2lkIGludmFsaWQgbWVtb3J5IGFjY2VzcyB3aXRoCi0gIHNob3J0IGZpbGUgbmFtZXMuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjYyNTogYWRkZWQgbWlzc2luZyBpdGVtcygpIGNhbGwgdG8gdGhlIGZvciBsb29wIGluCi0gIG1haWxib3guTUguZ2V0X21lc3NhZ2UoKS4KLQotLSBJc3N1ZSAjNTY0MDogRml4IF9tdWx0aWJ5dGVjb2RlYyBzbyB0aGF0IENKSyBjb2RlY3MgZG9uJ3QgcmVwZWF0Ci0gIGVycm9yIHN1YnN0aXR1dGlvbnMgZnJvbSBub24tc3RyaWN0IGNvZGVjIGVycm9yIGNhbGxiYWNrcyBpbgotICBpbmNyZW1lbnRhbGVuY29kZXIgYW5kIFN0cmVhbVdyaXRlci4KLQotLSBJc3N1ZSAjNTY1NjogRml4IHRoZSBjb3ZlcmFnZSByZXBvcnRpbmcgd2hlbiBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlIHdpdGgKLSAgdGhlIC1UIGFyZ3VtZW50LgotCi0tIElzc3VlICM1NjQ3OiBNdXRhYmxlU2V0Ll9faWFuZF9fKCkgbm8gbG9uZ2VyIG11dGF0ZXMgc2VsZiBkdXJpbmcgaXRlcmF0aW9uLgotCi0tIElzc3VlICM1NjI0OiBGaXggdGhlIF93aW5yZWcgbW9kdWxlIG5hbWUgc3RpbGwgdXNlZCBpbiBzZXZlcmFsIG1vZHVsZXMuCi0KLS0gSXNzdWUgIzU2Mjg6IEZpeCBpby5UZXh0SU9XcmFwcGVyLnJlYWQoKSB3aXRoIGEgdW5yZWFkYWJsZSBidWZmZXIuCi0KLS0gSXNzdWUgIzU2MTk6IE11bHRpcHJvY2Vzc2luZyBjaGlsZHJlbiBkaXNvYmV5IHRoZSBkZWJ1ZyBmbGFnIGFuZCBjYXVzZXMKLSAgcG9wdXBzIG9uIHdpbmRvd3MgYnVpbGRib3RzLiBQYXRjaCBhcHBsaWVkIHRvIHdvcmsgYXJvdW5kIHRoaXMgaXNzdWUuCi0KLS0gSXNzdWUgIzU0MDA6IEFkZGVkIHBhdGNoIGZvciBtdWx0aXByb2Nlc3Npbmcgb24gbmV0YnNkIGNvbXBpbGF0aW9uL3N1cHBvcnQKLQotLSBJc3N1ZSAjNTM4NzogRml4ZWQgbW1hcC5tb3ZlIGNyYXNoIGJ5IGludGVnZXIgb3ZlcmZsb3cuCi0KLS0gSXNzdWUgIzUyNjE6IFBhdGNoIG11bHRpcHJvY2Vzc2luZydzIHNlbWFwaG9yZS5jIHRvIHN1cHBvcnQgY29udGV4dAotICBtYW5hZ2VyIHVzZTogIndpdGggbXVsdGlwcm9jZXNzaW5nLkxvY2soKSIgd29ya3Mgbm93LgotCi0tIElzc3VlICM1MjM2OiBDaGFuZ2UgdGltZS5zdHJwdGltZSgpIHRvIG9ubHkgdGFrZSBzdHJpbmdzLiBEaWRuJ3Qgd29yayB3aXRoCi0gIGJ5dGVzIGFscmVhZHkgYnV0IHRoZSBmYWlsdXJlIHdhcyBub24tb2J2aW91cy4KLQotLSBJc3N1ZSAjNTE3NzogTXVsdGlwcm9jZXNzaW5nJ3MgU29ja2V0TGlzdGVuZXIgY2xhc3Mgbm93IHVzZXMKLSAgc29ja2V0LlNPX1JFVVNFQUREUiBvbiBhbGwgY29ubmVjdGlvbnMgc28gdGhhdCB0aGUgdXNlciBubyBsb25nZXIgbmVlZHMKLSAgdG8gd2FpdCAxMjAgc2Vjb25kcyBmb3IgdGhlIHNvY2tldCB0byBleHBpcmUuCi0KLS0gSXNzdWUgIzU1OTU6IEZpeCBVbmJvdW5kZWRMb2NhbEVycm9yIGluIG50cGF0aC5pc21vdW50KCkuCi0KLS0gSXNzdWUgIzExNzQ2MDY6IENhbGxpbmcgcmVhZCgpIHdpdGhvdXQgYXJndW1lbnRzIG9mIGFuIHVuYm91bmRlZCBmaWxlCi0gICh0eXBpY2FsbHkgL2Rldi96ZXJvIHVuZGVyIFVuaXgpIGNvdWxkIGNyYXNoIHRoZSBpbnRlcnByZXRlci4KLQotLSBUaGUgbWF4X2J1ZmZlcl9zaXplIGFyZ3VtZW50cyBvZiBpby5CdWZmZXJlZFdyaXRlciwgaW8uQnVmZmVyZWRSV1BhaXIsIGFuZAotICBpby5CdWZmZXJlZFJhbmRvbSBoYXZlIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4yLgotCi0tIElzc3VlICM1MDY4OiBGaXhlZCB0aGUgdGFyZmlsZS5fQloyUHJveHkucmVhZCgpIG1ldGhvZCB0aGF0IHdvdWxkIGxvb3AKLSAgZm9yZXZlciBvbiBpbmNvbXBsZXRlIGlucHV0LiBUaGF0IGNhdXNlZCB0YXJmaWxlLm9wZW4oKSB0byBoYW5nIHdoZW4gdXNlZAotICB3aXRoIG1vZGUgJ3InIG9yICdyOmJ6MicgYW5kIGEgZmlsZW9iaiBhcmd1bWVudCB0aGF0IGNvbnRhaW5lZCBubyBkYXRhIG9yCi0gIHBhcnRpYWwgYnppcDIgY29tcHJlc3NlZCBkYXRhLgotCi0tIElzc3VlICMyMTEwOiBBZGQgc3VwcG9ydCBmb3IgdGhvdXNhbmRzIHNlcGFyYXRvciBhbmQgJ24nIHR5cGUKLSAgc3BlY2lmaWVyIHRvIERlY2ltYWwuX19mb3JtYXRfXwotCi0tIEZpeCBEZWNpbWFsLl9fZm9ybWF0X18gYnVnIHRoYXQgc3dhcHBlZCB0aGUgbWVhbmluZ3Mgb2YgdGhlICc8JyBhbmQKLSAgJz4nIGFsaWdubWVudCBjaGFyYWN0ZXJzLgotCi0tIFRoZSBlcnJvciBkZXRlY3Rpb24gY29kZSBpbiBGaWxlSU8uY2xvc2UoKSBjb3VsZCBmYWlsIHRvIHJlZmxlY3QgdGhlIGBlcnJub2AKLSAgdmFsdWUsIGFuZCByZXBvcnQgaXQgYXMgLTEgaW5zdGVhZC4KLQotLSBJc3N1ZSAjNTAxNjogRmlsZUlPLnNlZWthYmxlKCkgY291bGQgcmV0dXJuIEZhbHNlIGlmIHRoZSBmaWxlIHBvc2l0aW9uCi0gIHdhcyBuZWdhdGl2ZSB3aGVuIHRydW5jYXRlZCB0byBhIEMgaW50LiBQYXRjaCBieSBWaWN0b3IgU3Rpbm5lci4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzUzOTE6IG1tYXAgbm93IGRlYWxzIGV4Y2x1c2l2ZWx5IHdpdGggYnl0ZXMuCi0KLS0gSXNzdWUgIzU0NjM6IEluIHN0cnVjdCBtb2R1bGUsIHJlbW92ZSBkZXByZWNhdGVkIG92ZXJmbG93IHdyYXBwaW5nCi0gIHdoZW4gcGFja2luZyBhbiBpbnRlZ2VyOiBzdHJ1Y3QucGFjaygnPUwnLCAtMSkgbm93IHJhaXNlcwotICBzdHJ1Y3QuZXJyb3IgaW5zdGVhZCBvZiByZXR1cm5pbmcgYidceGZmXHhmZlx4ZmZceGZmJy4gIFRoZQotICBfUFlfU1RSVUNUX1JBTkdFX0NIRUNLSU5HIGFuZCBfUFlfU1RSVUNUX09WRVJGTE9XX01BU0tJTkcgY29uc3RhbnRzCi0gIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIHN0cnVjdCBtb2R1bGUuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xIGFscGhhIDEKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDIwMDktMDMtMDcqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIFRoZSBpbyBtb2R1bGUgaGFzIGJlZW4gcmVpbXBsZW1lbnRlZCBpbiBDIGZvciBzcGVlZC4KLQotLSBHaXZlIGRpY3Qgdmlld3MgYW4gaW5mb3JtYXRpdmUgX19yZXByX18uCi0KLS0gSXNzdWUgIzUyNDc6IEltcHJvdmUgZXJyb3IgbWVzc2FnZSB3aGVuIHVua25vd24gZm9ybWF0IGNvZGVzIGFyZQotICB1c2VkIHdoZW4gdXNpbmcgc3RyLmZvcm1hdCgpIHdpdGggc3RyLCBpbnQsIGFuZCBmbG9hdCBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzUyNDk6IHRpbWUuc3RyZnRpbWUgcmV0dXJuZWQgbWFsZm9ybWVkIHN0cmluZyB3aGVuIGZvcm1hdCBzdHJpbmcKLSAgY29udGFpbmVkIG5vbiBhc2NpaSBjaGFyYWN0ZXIgb24gd2luZG93cy4KLQotLSBJc3N1ZSAjNDYyNjogY29tcGlsZSgpLCBleGVjKCksIGFuZCBldmFsKCkgaWdub3JlIHRoZSBjb2RpbmcgY29va2llIGlmIHRoZQotICBzb3VyY2UgaGFzIGFscmVhZHkgYmVlbiBkZWNvZGVkIGludG8gc3RyLgotCi0tIElzc3VlICM1MTg2OiBSZWR1Y2UgaGFzaCBjb2xsaXNpb25zIGZvciBvYmplY3RzIHdpdGggbm8gX19oYXNoX18gbWV0aG9kIGJ5Ci0gIHJvdGF0aW5nIHRoZSBvYmplY3QgcG9pbnRlciBieSA0IGJpdHMgdG8gdGhlIHJpZ2h0LgotCi0tIElzc3VlICM0NTc1OiBGaXggUHlfSVNfSU5GSU5JVFkgbWFjcm8gdG8gd29yayBjb3JyZWN0bHkgb24geDg3IEZQVXM6Ci0gIGl0IG5vdyBmb3JjZXMgaXRzIGFyZ3VtZW50IHRvIGRvdWJsZSBiZWZvcmUgdGVzdGluZyBmb3IgaW5maW5pdHkuCi0KLS0gSXNzdWUgIzUxMzc6IE1ha2UgbGVuKCkgY29ycmVjdGx5IHJhaXNlIGEgVHlwZUVycm9yIHdoZW4gYSBfX2xlbl9fIG1ldGhvZAotICByZXR1cm5zIGEgbm9uLW51bWJlciB0eXBlLgotCi0tIElzc3VlICM1MTgyOiBSZW1vdmVkIG1lbW9yeXZpZXcuX19zdHJfXy4KLQotLSBJc3N1ZSAjMTcxNzogUmVtb3ZlZCBidWlsdGluIGNtcCgpIGZ1bmN0aW9uLCBkcm9wcGVkIHRwX2NvbXBhcmUKLSAgc2xvdCwgdGhlIEMgQVBJIGZ1bmN0aW9ucyBQeU9iamVjdF9Db21wYXJlIGFuZCBQeVVuaWNvZGVfQ29tcGFyZSBhbmQKLSAgdGhlIHR5cGUgZGVmaW5pdGlvbiBjbXBmdW5jLiAgVGhlIHRwX2NvbXBhcmUgc2xvdCBoYXMgYmVlbiByZW5hbWVkCi0gIHRvIHRwX3Jlc2VydmVkLCBhbmQgaXMgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2FnZS4KLQotLSBJc3N1ZSAjMTI0MjY1NzogdGhlIF9fbGVuX18oKSBhbmQgX19sZW5ndGhfaGludF9fKCkgY2FsbHMgaW4gc2V2ZXJhbCB0b29scwotICB3ZXJlIHN1cHByZXNzaW5nIGFsbCBleGNlcHRpb25zLiAgVGhlc2UgaW5jbHVkZSBsaXN0KCkgYW5kIGJ5dGVhcnJheSgpLgotCi0tIElzc3VlICM0NzA3OiByb3VuZCh4LCBuKSBub3cgcmV0dXJucyBhbiBpbnRlZ2VyIGlmIHggaXMgYW4gaW50ZWdlci4KLSAgUHJldmlvdXNseSBpdCByZXR1cm5lZCBhIGZsb2F0LgotCi0tIElzc3VlICM0NzUzOiBCeSBlbmFibGluZyBhIGNvbmZpZ3VyZSBvcHRpb24gbmFtZWQgJy0td2l0aC1jb21wdXRlZC1nb3RvcycKLSAgb24gY29tcGlsZXJzIHRoYXQgc3VwcG9ydCBpdCAobm90YWJseTogZ2NjLCBTdW5Qcm8sIGljYyksIHRoZSBieXRlY29kZQotICBldmFsdWF0aW9uIGxvb3AgaXMgY29tcGlsZWQgd2l0aCBhIG5ldyBkaXNwYXRjaCBtZWNoYW5pc20gd2hpY2ggZ2l2ZXMKLSAgc3BlZWR1cHMgb2YgdXAgdG8gMjAlLCBkZXBlbmRpbmcgb24gdGhlIHN5c3RlbSwgb24gdmFyaW91cyBiZW5jaG1hcmtzLgotCi0tIElzc3VlICM0ODc0OiBNb3N0IGJ1aWx0aW4gZGVjb2RlcnMgbm93IHJlamVjdCB1bmljb2RlIGlucHV0LgotCi0tIElzc3VlICM0ODQyOiBEb24ndCBhbGxvdyB0cmFpbGluZyAnTCcgd2hlbiBjb25zdHJ1Y3RpbmcgYW4gaW50ZWdlcgotICBmcm9tIGEgc3RyaW5nLgotCi0tIElzc3VlICM0OTkxOiBvcy5mZG9wZW4gbm93IHJhaXNlcyBhbiBPU0Vycm9yIGZvciBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvcnMuCi0KLS0gSXNzdWUgIzQ4Mzg6IFdoZW4gYSBtb2R1bGUgaXMgZGVhbGxvY2F0ZWQsIGZyZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRoZQotICBvcHRpb25hbCBtb2R1bGUgc3RhdGUgZGF0YS4KLQotLSBJc3N1ZSAjNDkxMDogUmVuYW1lIG5iX2xvbmcgc2xvdCB0byBuYl9yZXNlcnZlZCwgYW5kIGNoYW5nZSBpdHMKLSAgdHlwZSB0byBgYCh2b2lkICopYGAuCi0KLS0gSXNzdWUgIzQ5MzU6IFRoZSBvdmVyZmxvdyBjaGVja2luZyBjb2RlIGluIHRoZSBleHBhbmR0YWJzKCkgbWV0aG9kIGNvbW1vbgotICB0byBzdHIsIGJ5dGVzIGFuZCBieXRlYXJyYXkgY291bGQgYmUgb3B0aW1pemVkIGF3YXkgYnkgdGhlIGNvbXBpbGVyLCBsZXR0aW5nCi0gIHRoZSBpbnRlcnByZXRlciBzZWdmYXVsdCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IuCi0KLS0gSXNzdWUgIzM3MjA6IEZpeCBhIGNyYXNoIHdoZW4gYW4gaXRlcmF0b3IgbW9kaWZpZXMgaXRzIGNsYXNzIGFuZCByZW1vdmVzIGl0cwotICBfX25leHRfXyBtZXRob2QuCi0KLS0gSXNzdWUgIzQ5MTA6IEJ1aWx0aW4gaW50KCkgZnVuY3Rpb24gYW5kIFB5TnVtYmVyX0xvbmcvUHlOdW1iZXJfSW50IEFQSQotICBmdW5jdGlvbiBubyBsb25nZXIgYXR0ZW1wdCB0byBjYWxsIHRoZSBfX2xvbmdfXyBzbG90IHRvIGNvbnZlcnQgYW4gb2JqZWN0Ci0gIHRvIGFuIGludGVnZXIuICBPbmx5IHRoZSBfX2ludF9fIGFuZCBfX3RydW5jX18gc2xvdHMgYXJlIGV4YW1pbmVkLgotCi0tIElzc3VlICM0ODkzOiBVc2UgTlQgdGhyZWFkaW5nIG9uIENFLgotCi0tIElzc3VlICM0OTE1OiBQb3J0IHN5c21vZHVsZSB0byBXaW5kb3dzIENFLgotCi0tIElzc3VlICM0ODY4OiB1dGYtOCwgdXRmLTE2IGFuZCBsYXRpbjEgZGVjb2RpbmcgYXJlIG5vdyAyeCB0byA0eCBmYXN0ZXIuIFRoZQotICBjb21tb24gY2FzZXMgYXJlIG9wdGltaXplZCB0aGFua3MgdG8gYSBkZWRpY2F0ZWQgZmFzdCBwYXRoIGFuZCBhIG1vZGVyYXRlCi0gIGFtb3VudCBvZiBsb29wIHVucm9sbGluZy4KLQotLSBJc3N1ZSAjNDA3NDogQ2hhbmdlIHRoZSBjcml0ZXJpYSBmb3IgZG9pbmcgYSBmdWxsIGdhcmJhZ2UgY29sbGVjdGlvbiAoaS5lLgotICBjb2xsZWN0aW5nIHRoZSBvbGRlc3QgZ2VuZXJhdGlvbikgc28gdGhhdCBhbGxvY2F0aW5nIGxvdHMgb2Ygb2JqZWN0cyB3aXRob3V0Ci0gIGRlc3Ryb3lpbmcgdGhlbSBkb2VzIG5vdCBzaG93IHF1YWRyYXRpYyBwZXJmb3JtYW5jZS4gQmFzZWQgb24gYSBwcm9wb3NhbCBieQotICBNYXJ0aW4gdm9uIEzDtndpcyBhdAotICBodHRwOi8vbWFpbC5weXRob24ub3JnL3BpcGVybWFpbC9weXRob24tZGV2LzIwMDgtSnVuZS8wODA1NzkuaHRtbC4KLQotLSBJc3N1ZSAjNDYwNDogU29tZSBvYmplY3RzIG9mIHRoZSBJL08gbGlicmFyeSBjb3VsZCBzdGlsbCBiZSB1c2VkIGFmdGVyCi0gIGhhdmluZyBiZWVuIGNsb3NlZCAoZm9yIGluc3RhbmNlLCBhIHJlYWQoKSBjYWxsIGNvdWxkIHJldHVybiBzb21lCi0gIHByZXZpb3VzbHkgYnVmZmVyZWQgZGF0YSkuIFBhdGNoIGJ5IERtaXRyeSBWYXNpbGlldi4KLQotLSBJc3N1ZSAjNDcwNTogRml4IHRoZSAtdSAoInVuYnVmZmVyZWQgYmluYXJ5IHN0ZG91dCBhbmQgc3RkZXJyIikgY29tbWFuZC1saW5lCi0gIGZsYWcgdG8gd29yayBwcm9wZXJseS4gRnVydGhlcm1vcmUsIHdoZW4gc3BlY2lmeWluZyAtdSwgdGhlIHRleHQgc3Rkb3V0Ci0gIGFuZCBzdGRlcnIgc3RyZWFtcyBoYXZlIGxpbmUtYnktbGluZSBidWZmZXJpbmcgZW5hYmxlZCAodGhlIGRlZmF1bHQgYmVpbmcKLSAgdG8gYnVmZmVyIGFyYml0cmFyeSBjaHVua3Mgb2YgZGF0YSkuCi0KLS0gVGhlIGludGVybmFsIHRhYmxlLCBfUHlMb25nX0RpZ2l0VmFsdWUsIGlzIG5vdyBhbiBhcnJheSBvZiB1bnNpZ25lZCBjaGFycwotICBpbnN0ZWFkIG9mIGludHMgKHJlZHVjaW5nIGl0cyBzaXplIGZyb20gNCB0byA4IHRpbWVzIHRoZXJlYnkgcmVkdWNpbmcKLSAgUHl0aG9uJ3Mgb3ZlcmFsbCBtZW1vcnkpLgotCi0tIElzc3VlICMxMTgwMTkzOiBXaGVuIGltcG9ydGluZyBhIG1vZHVsZSBmcm9tIGEgLnB5YyAob3IgLnB5bykgZmlsZSB3aXRoCi0gIGFuIGV4aXN0aW5nIC5weSBjb3VudGVycGFydCwgb3ZlcnJpZGUgdGhlIGNvX2ZpbGVuYW1lIGF0dHJpYnV0ZXMgb2YgYWxsCi0gIGNvZGUgb2JqZWN0cyBpZiB0aGUgb3JpZ2luYWwgZmlsZW5hbWUgaXMgb2Jzb2xldGUgKHdoaWNoIGNhbiBoYXBwZW4gaWYgdGhlCi0gIGZpbGUgaGFzIGJlZW4gcmVuYW1lZCwgbW92ZWQsIG9yIGlmIGl0IGlzIGFjY2Vzc2VkIHRocm91Z2ggZGlmZmVyZW50IHBhdGhzKS4KLSAgUGF0Y2ggYnkgWmlnYSBTZWlsbmFjaHQgYW5kIEplYW4tUGF1bCBDYWxkZXJvbmUuCi0KLS0gSXNzdWUgIzQ1ODA6IEZpeCBzbGljaW5nIG9mIG1lbW9yeXZpZXdzIHdoZW4gdGhlIGl0ZW0gc2l6ZSBpcyBncmVhdGVyIHRoYW4KLSAgb25lIGJ5dGUuIEFsc28gZml4ZXMgdGhlIG1lYW5pbmcgb2YgbGVuKCkgc28gdGhhdCBpdCByZXR1cm5zIHRoZSBudW1iZXIgb2YKLSAgaXRlbXMsIHJhdGhlciB0aGFuIHRoZSBzaXplIGluIGJ5dGVzLgotCi0tIElzc3VlICM0MDc1OiBVc2UgT3V0cHV0RGVidWdTdHJpbmdXIGluIFB5X0ZhdGFsRXJyb3IuCi0KLS0gSXNzdWUgIzQ3NDc6IFdoZW4gdGhlIHRlcm1pbmFsIGRvZXMgbm90IHVzZSB1dGYtOCwgZXhlY3V0aW5nIGEgc2NyaXB0IHdpdGgKLSAgbm9uLWFzY2lpIGNoYXJhY3RlcnMgaW4gaXRzIG5hbWUgY291bGQgZmFpbCB3aXRoIGEgIlN5bnRheEVycm9yOiBOb25lIiBlcnJvci4KLQotLSBJc3N1ZSAjNDc5NzogSU9FcnJvci5maWxlbmFtZSB3YXMgbm90IHNldCB3aGVuIGBgX2ZpbGVpby5GaWxlSU9gYCBmYWlsZWQKLSAgdG8gb3BlbiBmaWxlIHdpdGggYSBieXRlcyBmaWxlbmFtZSBvbiBXaW5kb3dzLgotCi0tIElzc3VlICMzNjgwOiBSZWZlcmVuY2UgY3ljbGVzIGNyZWF0ZWQgdGhyb3VnaCBhIGRpY3QsIHNldCBvciBkZXF1ZSBpdGVyYXRvcgotICBkaWQgbm90IGdldCBjb2xsZWN0ZWQuCi0KLS0gSXNzdWUgIzQ3MDE6IFB5T2JqZWN0X0hhc2ggbm93IGltcGxpY2l0bHkgY2FsbHMgUHlUeXBlX1JlYWR5IG9uIHR5cGVzCi0gIHdoZXJlIHRoZSB0cF9oYXNoIGFuZCB0cF9kaWN0IHNsb3RzIGFyZSBib3RoIE5VTEwuCi0KLS0gSXNzdWUgIzQ3NTk6IE5vbmUgaXMgbm93IGFsbG93ZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IG9mCi0gIGJ5dGVhcnJheS50cmFuc2xhdGUoKS4gIEl0IHdhcyBhbHdheXMgYWxsb3dlZCBmb3IgYnl0ZXMudHJhbnNsYXRlKCkuCi0KLS0gQWRkZWQgdGVzdCBjYXNlIHRvIGVuc3VyZSBhdHRlbXB0cyB0byByZWFkIGZyb20gYSBmaWxlIG9wZW5lZCBmb3Igd3JpdGluZwotICBmYWlsLgotCi0tIElzc3VlICMzMTA2OiBTcGVlZHVwIHNvbWUgY29tcGFyaXNvbnMgKHN0ci9zdHIgYW5kIGludC9pbnQpLgotCi0tIElzc3VlICMyMTgzOiBTaW1wbGlmeSBhbmQgb3B0aW1pemUgYnl0ZWNvZGUgZm9yIGxpc3QsIGRpY3QgYW5kIHNldAotICBjb21wcmVoZW5zaW9ucy4gT3JpZ2luYWwgcGF0Y2ggZm9yIGxpc3QgY29tcHJlaGVuc2lvbnMgYnkgTmVhbCBOb3J3aXR6LgotCi0tIElzc3VlICMyNDY3OiBnYy5ERUJVR19TVEFUUyByZXBvcnRlZCBpbnZhbGlkIGVsYXBzZWQgdGltZXMuIEFsc28sIGFsd2F5cwotICBwcmludCBlbGFwc2VkIHRpbWVzLCBub3Qgb25seSB3aGVuIHNvbWUgb2JqZWN0cyBhcmUgdW5jb2xsZWN0YWJsZSAvCi0gIHVucmVhY2hhYmxlLiBPcmlnaW5hbCBwYXRjaCBieSBOZWlsIFNjaGVtZW5hdWVyLgotCi0tIElzc3VlICMzNDM5OiBBZGQgYSBiaXRfbGVuZ3RoIG1ldGhvZCB0byBpbnQuCi0KLS0gSXNzdWUgIzIxNzM6IFdoZW4gZ2V0dGluZyBkZXZpY2UgZW5jb2RpbmcsIGNoZWNrIHRoYXQgcmV0dXJuIHZhbHVlIG9mCi0gIG5sX2xhbmdpbmZvIGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5nLiAgVGhpcyB3YXMgY2F1c2luZyBzaWxlbnQgYnVpbGQKLSAgZmFpbHVyZXMgb24gT1MgWC4KLQotLSBJc3N1ZSAjNDU5NzogRml4ZWQgc2V2ZXJhbCBvcGNvZGVzIHRoYXQgd2VyZW4ndCBhbHdheXMgcHJvcGFnYXRpbmcKLSAgZXhjZXB0aW9ucy4KLQotLSBJc3N1ZSAjNDU4OTogRml4ZWQgZXhjZXB0aW9uIGhhbmRsaW5nIHdoZW4gdGhlIF9fZXhpdF9fIGZ1bmN0aW9uIG9mIGEKLSAgY29udGV4dCBtYW5hZ2VyIHJldHVybnMgYSB2YWx1ZSB0aGF0IGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBib29sLgotCi0tIElzc3VlICM0NDQ1OiBSZXBsYWNlICJzaXplb2YoUHlCeXRlc09iamVjdCkiIHdpdGgKLSAgIm9mZnNldG9mKFB5Qnl0ZXNPYmplY3QsIG9iX3N2YWwpICsgMSIgd2hlbiBhbGxvY2F0aW5nIG1lbW9yeSBmb3IKLSAgYnl0ZXMgaW5zdGFuY2VzLiAgT24gYSB0eXBpY2FsIG1hY2hpbmUgdGhpcyBzYXZlcyAzIGJ5dGVzIG9mIG1lbW9yeQotICAob24gYXZlcmFnZSkgcGVyIGFsbG9jYXRpb24gb2YgYSBieXRlcyBpbnN0YW5jZS4KLQotLSBJc3N1ZSAjNDUzMzogRmlsZSByZWFkIG9wZXJhdGlvbiB3YXMgZHJlYWRmdWxseSBzbG93IGR1ZSB0byBhIHNsb3dseQotICBncm93aW5nIHJlYWQgYnVmZmVyLiBGaXhlZCBieSB1c2luZyB0aGUgc2FtZSBncm93dGggcmF0ZSBhbGdvcml0aG0gYXMKLSAgUHl0aG9uIDIueC4KLQotLSBJc3N1ZSAjNDUwOTogVmFyaW91cyBpc3N1ZXMgc3Vycm91bmRpbmcgcmVzaXplIG9mIGJ5dGVhcnJheSBvYmplY3RzIHRvCi0gIHdoaWNoIHRoZXJlIGFyZSBidWZmZXIgZXhwb3J0cyAoZS5nLiBtZW1vcnl2aWV3IGluc3RhbmNlcykuCi0KLS0gSXNzdWUgIzQyMzM6IENoYW5nZWQgc2VtYW50aWMgb2YgYGBfZmlsZWlvLkZpbGVJT2BgJ3MgYGBjbG9zZSgpYGAKLSAgbWV0aG9kIG9uIGZpbGUgb2JqZWN0cyB3aXRoIGNsb3NlZmQ9RmFsc2UuIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgc3RpbGwKLSAga2VwdCBvcGVuIGJ1dCB0aGUgZmlsZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgY2xvc2VkIGZpbGUuIFRoZSBgYEZpbGVJT2BgCi0gIG9iamVjdCBhbHNvIGdvdCBhIG5ldyByZWFkb25seSBhdHRyaWJ1dGUgYGBjbG9zZWZkYGAuCi0KLS0gSXNzdWUgIzQ1Njk6IEludGVycHJldGVyIGNyYXNoIHdoZW4gbXV0YXRpbmcgYSBtZW1vcnl2aWV3IHdpdGggYW4gaXRlbSBzaXplCi0gIGxhcmdlciB0aGFuIDEuCi0KLS0gSXNzdWUgIzQ3NDg6IExhbWJkYSBnZW5lcmF0b3JzIG5vIGxvbmdlciByZXR1cm4gYSB2YWx1ZS4KLQotLSBUaGUgcmUuc3ViKCksIHJlLnN1Ym4oKSBhbmQgcmUuc3BsaXQoKSBmdW5jdGlvbnMgbm93IGFjY2VwdCBhIGZsYWdzIHBhcmFtZXRlci4KLQotLSBJc3N1ZSAjNTEwODogSGFuZGxlICVzIGxpa2UgJVMsICVSIGFuZCAlQSBpbiBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKTogQ2FsbAotICBQeVVuaWNvZGVfRGVjb2RlVVRGOCgpIG9uY2UsIHJlbWVtYmVyIHRoZSByZXN1bHQgYW5kIG91dHB1dCBpdCBpbiBhIHNlY29uZAotICBzdGVwLiBUaGlzIGF2b2lkcyBwcm9ibGVtcyB3aXRoIGNvdW50aW5nIFVURi04IGJ5dGVzIHRoYXQgaWdub3JlcyB0aGUgZWZmZWN0Ci0gIG9mIHVzaW5nIHRoZSByZXBsYWNlIGVycm9yIGhhbmRsZXIgaW4gUHlVbmljb2RlX0RlY29kZVVURjgoKS4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICM3MDcxOiBieXRlLWNvbXBpbGF0aW9uIGluIERpc3R1dGlscyBpcyBub3cgZG9uZSB3aXRoIHJlc3BlY3QgdG8KLSAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUuCi0KLS0gSXNzdWUgIzcwNjY6IGFyY2hpdmVfdXRpbC5tYWtlX2FyY2hpdmUgbm93IHJlc3RvcmVzIHRoZSBjd2QgaWYgYW4gZXJyb3IgaXMKLSAgcmFpc2VkLiBJbml0aWFsIHBhdGNoIGJ5IEV6aW8gTWVsb3R0aS4KLQotLSBJc3N1ZSAjNjUxNjogQWRkZWQgb3duZXIvZ3JvdXAgc3VwcG9ydCB3aGVuIGNyZWF0aW5nIHRhciBhcmNoaXZlcyBpbgotICBEaXN0dXRpbHMuCi0KLS0gSXNzdWUgIzY5NTQ6IEZpeGVkIGNyYXNoIHdoZW4gdXNpbmcgRElTVFVUSUxTX0RFQlVHIGZsYWcgaW4gRGlzdHV0aWxzLgotCi0tIElzc3VlICM2MTYzOiBGaXhlZCBIUC1VWCBydW50aW1lIGxpYnJhcnkgZGlyIG9wdGlvbnMgaW4KLSAgZGlzdHV0aWxzLnVuaXhjb21waWxlci4gSW5pdGlhbCBwYXRjaCBieSBTcmlkaGFyIFJhdG5ha3VtYXIgYW5kCi0gIE1pY2hhZWwgSGF1YmVud2FsbG5lci4KLQotLSBJc3N1ZSAjNjY5MzogTmV3IGZ1bmN0aW9ucyBpbiBzaXRlLnB5IHRvIGdldCB1c2VyL2dsb2JhbCBzaXRlIHBhY2thZ2VzIHBhdGhzLgotCi0tIElzc3VlICM2NTExOiBaaXBGaWxlIG5vdyByYWlzZXMgQmFkWmlwZmlsZSAoaW5zdGVhZCBvZiBhbiBJT0Vycm9yKSB3aGVuCi0gIG9wZW5pbmcgYW4gZW1wdHkgb3IgdmVyeSBzbWFsbCBmaWxlLgotCi0tIElzc3VlICM2NTQ1OiBSZW1vdmVkIGFzc2VydCBzdGF0ZW1lbnRzIGluIGRpc3R1dGlscy5FeHRlbnNpb24sIHNvIHRoZQotICBiZWhhdmlvciBpcyBzaW1pbGFyIHdoZW4gdXNlZCB3aXRoIC1PLgotCi0tIHVuaXR0ZXN0IGhhcyBiZWVuIHNwbGl0IHVwIGludG8gYSBwYWNrYWdlLiAgQWxsIG9sZCBuYW1lcyBzaG91bGQgc3RpbGwgd29yay4KLQotLSBJc3N1ZSAjNjQ2Njogbm93IGRpc3R1dGlscy5jeWd3aW5jY29tcGlsZXIgYW5kIGRpc3R1dGlscy5lbXhjY29tcGlsZXIKLSAgdXNlcyB0aGUgc2FtZSByZWZhY3RvcmVkIGZ1bmN0aW9uIHRvIGdldCBnY2MvbGQvZGxsd3JhcCB2ZXJzaW9ucyBudW1iZXJzLgotICBJdCdzIGBkaXN0dXRpbHMudXRpbC5nZXRfY29tcGlsZXJfdmVyc2lvbnNgLiBBZGRlZCBkZXByZWNhdGlvbiB3YXJuaW5ncwotICBmb3IgdGhlIG9ic29sZXRlIGdldF92ZXJzaW9ucygpIGZ1bmN0aW9ucy4KLQotLSBJc3N1ZSAjNjQzMzogZml4ZWQgaXNzdWVzIHdpdGggbXVsdGlwcm9jZXNzaW5nLnBvb2wubWFwIGhhbmdpbmcgb24gZW1wdHkgbGlzdAotCi0tIElzc3VlICM2MzE0OiBsb2dnaW5nOiBFeHRyYSBjaGVja3Mgb24gdGhlICJsZXZlbCIgYXJndW1lbnQgaW4gbW9yZSBwbGFjZXMuCi0KLS0gSXNzdWUgIzI2MjI6IEZpeGVkIGFuIEltcG9ydEVycm9yIHdoZW4gaW1wb3J0aW5nIGVtYWlsLm1lc3NhZ2UgZnJvbSBhCi0gIHN0YW5kYWxvbmUgYXBwbGljYXRpb24gYnVpbHQgd2l0aCBweTJleGUgb3IgcHkyYXBwLgotCi0tIElzc3VlICM2NDU1OiBGaXhlZCB0ZXN0X2J1aWxkX2V4dCB1bmRlciB3aW4zMi4KLQotLSBJc3N1ZSAjNjM3NzogRW5hYmxlZCB0aGUgY29tcGlsZXIgb3B0aW9uLCBhbmQgZGVwcmVjYXRlIGl0cyB1c2FnZSBhcyBhbgotICBhdHRyaWJ1dGUuCi0KLS0gSXNzdWUgIzY0MTM6IEZpeGVkIHRoZSBsb2cgbGV2ZWwgaW4gZGlzdHV0aWxzLmRpc3QgZm9yIGFubm91bmNlLgotCi0tIElzc3VlICM2NDAzOiBGaXhlZCBwYWNrYWdlIHBhdGggdXNhZ2UgaW4gYnVpbGRfZXh0LgotCi0tIElzc3VlcyAjNTE1NSwgNTMxMywgNTMzMTogbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MuX2Jvb3RzdHJhcCB3YXMKLSAgdW5jb25kaXRpb25hbGx5IGNhbGxpbmcgIm9zLmNsb3NlKHN5cy5zdGRpbi5maWxlbm8oKSkiIHJlc3VsdGluZyBpbiBmaWxlCi0gIGRlc2NyaXB0b3IgZXJyb3JzCi0KLS0gSXNzdWUgIzYzNjU6IERpc3R1dGlscyBidWlsZF9leHQgaW5wbGFjZSBtb2RlIHdhcyBjb3B5aW5nIHRoZSBjb21waWxlZAotICBleHRlbnNpb24gaW4gYSBzdWJkaXJlY3RvcnkgaWYgdGhlIGV4dGVuc2lvbiBuYW1lIGhhZCBkb3RzLgotCi0tIElzc3VlICM2MTY0OiBBZGRlZCBhbiBBSVggc3BlY2lmaWMgbGlua2VyIGFyZ3VtZW50IGluIERpc3R1dGlscwotICB1bml4Y29tcGlsZXIuIE9yaWdpbmFsIHBhdGNoIGJ5IFNyaWRoYXIgUmF0bmFrdW1hci4KLQotLSBJc3N1ZSAjNjI4NjogTm93IERpc3R1dGlscyB1cGxvYWQgY29tbWFuZCBpcyBiYXNlZCBvbiB1cmxsaWIyIGluc3RlYWQgb2YKLSAgaHR0cGxpYiwgYWxsb3dpbmcgdGhlIHVzYWdlIG9mIGh0dHBfcHJveHkuCi0KLS0gSXNzdWUgIzYyODc6IEFkZGVkIHRoZSBsaWNlbnNlIGZpZWxkIGluIERpc3R1dGlscyBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICM2MjYzOiBGaXhlZCBzeW50YXggZXJyb3IgaW4gZGlzdHV0aWxzLmN5Z3dpbmNvbXBpbGVyLgotCi0tIElzc3VlICM1MjAxOiBkaXN0dXRpbHMuc3lzY29uZmlnLnBhcnNlX21ha2VmaWxlKCkgbm93IHVuZGVyc3RhbmRzIGAkJGAKLSAgaW4gTWFrZWZpbGVzLiBUaGlzIHByZXZlbnRzIGNvbXBpbGUgZXJyb3JzIHdoZW4gdXNpbmcgc3ludGF4IGxpa2U6Ci0gIGBMREZMQUdTPSctcnBhdGg9XCQkTElCOi9zb21lL290aGVyL3BhdGgnYC4gUGF0Y2ggYnkgRmxvcmlzIEJydXlub29naGUuCi0KLS0gSXNzdWUgIzYxMzE6IHRlc3RfbW9kdWxlZmluZGVyIGxlYWtlZCB3aGVuIHJ1biBhZnRlciB0ZXN0X2Rpc3R1dGlscy4KLSAgUGF0Y2ggYnkgSGlyb2thenUgWWFtYW1vdG8uCi0KLS0gSXNzdWUgIzYwNDg6IE5vdyBEaXN0dXRpbHMgdXNlcyB0aGUgdGFyZmlsZSBtb2R1bGUgaW4gYXJjaGl2ZV91dGlsLgotCi0tIElzc3VlICM2MDYyOiBJbiBkaXN0dXRpbHMsIGZpeGVkIHRoZSBwYWNrYWdlIG9wdGlvbiBvZiBidWlsZF9leHQuIEZlZWRiYWNrCi0gIGFuZCB0ZXN0cyBvbiBweXdpbjMyIGJ5IFRpbSBHb2xkZW4uCi0KLS0gSXNzdWUgIzYwNTM6IEZpeGVkIGRpc3R1dGlscyB0ZXN0cyBvbiB3aW4zMi4gcGF0Y2ggYnkgSGlyb2thenUgWWFtYW1vdG8uCi0KLS0gSXNzdWUgIzYwNDY6IEZpeGVkIHRoZSBsaWJyYXJ5IGV4dGVuc2lvbiB3aGVuIGRpc3R1dGlscyBidWlsZF9leHQgaXMgdXNlZAotICBpbnBsYWNlLiBJbml0aWFsIHBhdGNoIGJ5IFJvdW1lbiBQZXRyb3YuCi0KLS0gSXNzdWUgIzYwNDE6IE5vdyBkaXN0dXRpbHMgYHNkaXN0YCBhbmQgYHJlZ2lzdGVyYCBjb21tYW5kcyB1c2UgYGNoZWNrYCBhcyBhCi0gIHN1YmNvbW1hbmQuCi0KLS0gSXNzdWUgIzYwMjI6IGEgdGVzdCBmaWxlIHdhcyBjcmVhdGVkIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGJ5Ci0gIHRlc3RfZ2V0X291dHB1dHMgaW4gRGlzdHV0aWxzLgotCi0tIElzc3VlICM1OTc3OiBkaXN0dXRpbHMgYnVpbGRfZXh0LmdldF9vdXRwdXRzIHdhcyBub3QgdGFraW5nIGludG8gYWNjb3VudCB0aGUKLSAgaW5wbGFjZSBvcHRpb24uIEluaXRpYWwgcGF0Y2ggYnkga3hyb2JlcnRvLgotCi0tIElzc3VlICM1OTg0OiBkaXN0dXRpbHMuY29tbWFuZC5idWlsZF9leHQuY2hlY2tfZXh0ZW5zaW9uc19saXN0IGNoZWNrcyB3ZXJlIGJyb2tlbgotICBmb3Igb2xkLXN0eWxlIGV4dGVuc2lvbnMuCi0KLS0gSXNzdWUgIzU5NzY6IEZpeGVkIERpc3R1dGlscyB0ZXN0X2NoZWNrX2Vudmlyb24uCi0KLS0gSXNzdWUgIzU5NDE6IERpc3R1dGlscyBidWlsZF9jbGliIGNvbW1hbmQgd2FzIG5vdCB3b3JraW5nIGFueW1vcmUgYmVjYXVzZQotICBvZiBhbiBpbmNvbXBsZXRlIGNvc3R1bWl6YXRpb24gb2YgdGhlIGFyY2hpdmVyIGNvbW1hbmQuIEFkZGVkIEFSRkxBR1MgaW4gdGhlCi0gIE1ha2VmaWxlIGJlc2lkZXMgQVIgYW5kIG1ha2UgRGlzdHV0aWxzIHVzZSBpdC4gT3JpZ2luYWwgcGF0Y2ggYnkgRGF2aWQKLSAgQ291cm5hcGVhdS4KLQotLSBJc3N1ZSAjMjI0NTogYWlmYyBub3cgc2tpcHMgY2h1bmsgdHlwZXMgaXQgZG9lc24ndCByZWNvZ25pemUsIHBlciBzcGVjLgotCi0tIElzc3VlICM1ODc0OiBkaXN0dXRpbHMudGVzdHMudGVzdF9jb25maWdfY21kIGlzIG5vdCBsb2NhbGUtc2Vuc2l0aXZlCi0gIGFueW1vcmUuCi0KLS0gSXNzdWUgIzU4MTA6IEZpeGVkIERpc3R1dGlscyB0ZXN0X2J1aWxkX3NjcmlwdHMgc28gaXQgdXNlcwotICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzLgotCi0tIElzc3VlICM0OTUxOiBGaXhlZCBmYWlsdXJlIGluIHRlc3RfaHR0cHNlcnZlcnMuCi0KLS0gSXNzdWUgIzU3OTU6IEZpeGVkIHRlc3RfZGlzdHV0aWxzIGZhaWx1cmUgb24gRGViaWFuIHBwYy4KLQotLSBJc3N1ZSAjNTYwNzogZml4ZWQgRGlzdHV0aWxzIHRlc3RfZ2V0X3BsYXRmb3JtIGZvciBNYWMgT1MgWCBmYXQgYmluYXJpZXMuCi0KLS0gSXNzdWUgIzU3NDE6IGRvbid0IGRpc2FsbG93ICIlJSIgKHdoaWNoIGlzIGFuIGVzY2FwZSBmb3IgIiUiKSB3aGVuIHNldHRpbmcKLSAgYSB2YWx1ZSBpbiBTYWZlQ29uZmlnUGFyc2VyLgotCi0tIElzc3VlICM1NzMyOiBhZGRlZCBhIG5ldyBjb21tYW5kIGluIERpc3R1dGlsczogY2hlY2suCi0KLS0gSXNzdWUgIzU3MzE6IERpc3R1dGlscyBiZGlzdF93aW5pbnN0IG5vIGxvbmdlciB3b3JrZWQgb24gbm9uLVdpbmRvd3MKLSAgcGxhdGZvcm1zLiBJbml0aWFsIHBhdGNoIGJ5IFBhdWwgTW9vcmUuCi0KLS0gSXNzdWUgIzUwOTU6IEFkZGVkIGJkaXN0X21zaSB0byB0aGUgbGlzdCBvZiBiZGlzdCBzdXBwb3J0ZWQgZm9ybWF0cy4KLSAgSW5pdGlhbCBmaXggYnkgU3RldmVuIEJldGhhcmQuCi0KLS0gSXNzdWUgIzE0OTE0MzE6IEZpeGVkIGRpc3R1dGlscy5maWxlbGlzdC5nbG9iX3RvX3JlIGZvciBlZGdlIGNhc2VzLgotICBJbml0aWFsIGZpeCBieSBXYXluZSBEYXZpc29uLgotCi0tIElzc3VlICM1Njk0OiByZW1vdmVkIHNwdXJpb3VzIHRlc3Qgb3V0cHV0IGluIERpc3R1dGlscyAodGVzdF9jbGVhbikuCi0KLS0gSXNzdWUgIzEzMjYwNzc6IGZpeCB0aGUgZm9ybWF0dGluZyBvZiBTeW50YXhFcnJvcnMgYnkgdGhlIHRyYWNlYmFjayBtb2R1bGUuCi0KLS0gSXNzdWUgIzE2NjUyMDYgKHBhcnRpYWxseSk6IE1vdmUgaW1wb3J0cyBpbiBjZ2l0YiB0byB0aGUgdG9wIG9mIHRoZSBtb2R1bGUKLSAgaW5zdGVhZCBvZiBwZXJmb3JtaW5nIHRoZW0gaW4gZnVuY3Rpb25zLiBIZWxwcyBwcmV2ZW50IGltcG9ydCBkZWFkbG9ja2luZyBpbgotICB0aHJlYWRzLgotCi0tIElzc3VlICMyNTIyOiBsb2NhbGUuZm9ybWF0IG5vdyBjaGVja3MgaXRzIGZpcnN0IGFyZ3VtZW50IHRvIGVuc3VyZSBpdCBoYXMKLSAgYmVlbiBwYXNzZWQgb25seSBvbmUgcGF0dGVybiwgYXZvaWRpbmcgbXlzdGVyaW91cyBlcnJvcnMgd2hlcmUgaXQgYXBwZWFyZWQKLSAgdGhhdCBpdCB3YXMgZmFpbGluZyB0byBkbyBsb2NhbGl6YXRpb24uCi0KLS0gSXNzdWUgIzU1ODM6IEFkZGVkIG9wdGlvbmFsIEV4dGVuc2lvbnMgaW4gRGlzdHV0aWxzLiBJbml0aWFsIHBhdGNoIGJ5IEdlb3JnCi0gIEJyYW5kbC4KLQotLSBJc3N1ZSAjMTIyMjogbG9jYWxlLmZvcm1hdCgpIGJ1ZyB3aGVuIHRoZSB0aG91c2FuZHMgc2VwYXJhdG9yIGlzIGEgc3BhY2UKLSAgY2hhcmFjdGVyLgotCi0tIElzc3VlICM1NDcyOiBGaXhlZCBkaXN0dXRpbHMudGVzdF91dGlsIHRlYXIgZG93bi4gT3JpZ2luYWwgcGF0Y2ggYnkKLSAgVGltIEdvbGRlbi4KLQotLSBjb2xsZWN0aW9ucy5kZXF1ZSgpIG9iamVjdHMgbm93IGhhdmUgYSByZWFkLW9ubHkgYXR0cmlidXRlIGNhbGxlZCBtYXhsZW4uCi0KLS0gSXNzdWUgIzI2Mzg6IFNob3cgYSB3aW5kb3cgY29uc3RydWN0ZWQgd2l0aCB0a1NpbXBsZURpYWxvZy5EaWFsb2cgb25seSBhZnRlcgotICBpdCBpcyBoYXMgYmVlbiBwb3B1bGF0ZWQgYW5kIHByb3Blcmx5IGNvbmZpZ3VyZWQgaW4gb3JkZXIgdG8gcHJldmVudAotICB3aW5kb3cgZmxhc2hpbmcuCi0KLS0gSXNzdWUgIzQ3OTI6IFByZXZlbnQgYSBzZWdmYXVsdCBpbiBfdGtpbnRlciBieSB1c2luZyB0aGUKLSAgZ3VhcmFudGVlZCB0byBiZSBzYWZlIGludGVycCBhcmd1bWVudCBnaXZlbiB0byB0aGUgUHl0aG9uQ21kIGluIHBsYWNlIG9mCi0gIHRoZSBUY2wgaW50ZXJwcmV0ZXIgdGFrZW4gZnJvbSBhIFB5dGhvbkNtZF9DbGllbnREYXRhLgotCi0tIElzc3VlICM1MTkzOiBHdWFyYW50ZWUgdGhhdCB0a2ludGVyLlRleHQuc2VhcmNoIHJldHVybnMgYSBzdHJpbmcuCi0KLS0gSXNzdWUgIzUzOTQ6IHJlbW92ZWQgPiAyLjMgc3ludGF4IGZyb20gZGlzdHV0aWxzLm1zdmM5Y29tcGlsZXIuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IEFraXJhIEtpdGFkYS4KLQotLSBJc3N1ZSAjNTMzNDogYXJyYXkuZnJvbWZpbGUoKSBmYWlsZWQgdG8gaW5zZXJ0IHZhbHVlcyB3aGVuIEVPRkVycm9yIHdhcyByYWlzZWQuCi0KLS0gSXNzdWUgIzUzODU6IEZpeGVkIG1tYXAgY3Jhc2ggYWZ0ZXIgcmVzaXplIGZhaWx1cmUgb24gd2luZG93cy4KLQotLSBJc3N1ZSAjNTE3OTogRml4ZWQgc3VicHJvY2VzcyBoYW5kbGUgbGVhayBvbiBmYWlsdXJlIG9uIHdpbmRvd3MuCi0KLS0gUEVQIDM3MjogIEFkZGVkIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkuCi0KLS0gVGhlIF9hc2RpY3QoKSBmb3IgbWV0aG9kIGZvciBuYW1lZHR1cGxlcyBub3cgcmV0dXJucyBhbiBPcmRlcmVkRGljdCgpLgotCi0tIGNvbmZpZ3BhcnNlciBub3cgZGVmYXVsdHMgdG8gdXNpbmcgYW4gb3JkZXJlZCBkaWN0aW9uYXJ5LgotCi0tIElzc3VlICM1NDAxOiBGaXhlZCBhIHBlcmZvcm1hbmNlIHByb2JsZW0gaW4gbWltZXR5cGVzIHdoZW4gYGBmcm9tIG1pbWV0eXBlcwotICBpbXBvcnQgZ3Vlc3NfZXh0ZW5zaW9uYGAgd2FzIHVzZWQuCi0KLS0gSXNzdWUgIzE3MzM5ODY6IEZpeGVkIG1tYXAgY3Jhc2ggaW4gYWNjZXNzaW5nIGVsZW1lbnRzIG9mIHNlY29uZCBtYXAgb2JqZWN0Ci0gIHdpdGggc2FtZSB0YWduYW1lIGJ1dCBsYXJnZXIgc2l6ZSB0aGFuIGZpcnN0IG1hcC4gKFdpbmRvd3MpCi0KLS0gSXNzdWUgIzUzODY6IG1tYXAud3JpdGVfYnl0ZSBkaWRuJ3QgY2hlY2sgbWFwIHNpemUsIHNvIGl0IGNvdWxkIGNhdXNlIGJ1ZmZlcgotICBvdmVycnVuLgotCi0tIElzc3VlICMxNTMzMTY0OiBJbnN0YWxsZWQgYnV0IG5vdCBsaXN0ZWQgYGAqLnB5b2BgIHdhcyBicmVha2luZyBEaXN0dXRpbHMKLSAgYmRpc3RfcnBtIGNvbW1hbmQuCi0KLS0gSXNzdWUgIzUzNzg6IGFkZGVkIC0tcXVpZXQgb3B0aW9uIHRvIERpc3R1dGlscyBiZGlzdF9ycG0gY29tbWFuZC4KLQotLSBJc3N1ZSAjNTA1MjogbWFrZSBEaXN0dXRpbHMgY29tcGF0aWJsZSB3aXRoIDIuMyBhZ2Fpbi4KLQotLSBJc3N1ZSAjNTMxNjogRml4ZWQgYnVpbGRib3QgZmFpbHVyZXMgaW50cm9kdWNlZCBieSBtdWx0aXBsZSBpbmhlcml0YW5jZQotICBpbiBEaXN0dXRpbHMgdGVzdHMuCi0KLS0gSXNzdWUgIzUyODc6IEFkZCBleGNlcHRpb24gaGFuZGxpbmcgYXJvdW5kIGZpbmRDYWxsZXIoKSBjYWxsIHRvIGhlbHAgb3V0Ci0gIElyb25QeXRob24uCi0KLS0gSXNzdWUgIzUyODI6IEZpeGVkIG1tYXAgcmVzaXplIG9uIDMyYml0IHdpbmRvd3MgYW5kIHVuaXguIFdoZW4gb2Zmc2V0ID4gMCwKLSAgVGhlIGZpbGUgd2FzIHJlc2l6ZWQgdG8gd3Jvbmcgc2l6ZS4KLQotLSBJc3N1ZSAjNTI5MjogRml4ZWQgbW1hcCBjcmFzaCBvbiBpdHMgYm91bmRhcnkgYWNjZXNzIG1bbGVuKG0pXS4KLQotLSBJc3N1ZSAjMjI3OTogZGlzdHV0aWxzLnNkaXN0LmFkZF9kZWZhdWx0cyBub3cgYWRkIGZpbGVzCi0gIGZyb20gdGhlIHBhY2thZ2VfZGF0YSBhbmQgdGhlIGRhdGFfZmlsZXMgbWV0YWRhdGEuCi0KLS0gSXNzdWUgIzUyNTc6IHJlZmFjdG9yZWQgYWxsIHRlc3RzIGluIGRpc3R1dGlscywgc28gdGhleSB1c2UKLSAgc3VwcG9ydC5UZW1wZGlyTWFuYWdlciwgdG8gYXZvaWQgd3JpdGluZyBpbiB0aGUgdGVzdHMgZGlyZWN0b3J5LgotCi0tIElzc3VlICM0NTI0OiBkaXN0dXRpbHMgYnVpbGRfc2NyaXB0IGNvbW1hbmQgZmFpbGVkIHdpdGggLS13aXRoLXN1ZmZpeD0zLgotICBJbml0aWFsIHBhdGNoIGJ5IEFtYXVyeSBGb3JnZW90IGQnQXJjLgotCi0tIElzc3VlICMyNDYxOiBhZGRlZCB0ZXN0cyBmb3IgZGlzdHV0aWxzLnV0aWwKLQotLSBJc3N1ZSAjNDk5ODogVGhlIG1lbW9yeSBzYXZpbmcgZWZmZWN0IG9mIF9fc2xvdHNfXyBoYWQgYmVlbiBsb3N0IG9uIEZyYWN0aW9ucwotICB3aGljaCBpbmhlcml0ZWQgZnJvbSBudW1iZXJzLnB5IHdoaWNoIGRpZCBub3QgaGF2ZSBfX3Nsb3RzX18gZGVmaW5lZC4gIFRoZQotICBudW1iZXJzIGhpZXJhcmNoeSBub3cgaGFzIGl0cyBvd24gX19zbG90c19fIGRlY2xhcmF0aW9ucy4KLQotLSBJc3N1ZSAjNDYzMTogRml4IHVybG9wZW4oKSByZXN1bHQgd2hlbiBhbiBIVFRQIHJlc3BvbnNlIHVzZXMgY2h1bmtlZAotICBlbmNvZGluZy4KLQotLSBJc3N1ZSAjNTIwMzogRml4ZWQgY3R5cGVzIHNlZ2ZhdWx0cyB3aGVuIHBhc3NpbmcgYSB1bmljb2RlIHN0cmluZyB0byBhCi0gIGZ1bmN0aW9uIHdpdGhvdXQgYXJndHlwZXMgKG9ubHkgb2NjdXJzIGlmIEhBVkVfVVNBQkxFX1dDSEFSX1QgaXMgZmFsc2UpLgotCi0tIElzc3VlICMzMzg2OiBkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9weXRob25fbGliIHByZWZpeCBhcmd1bWVudCB3YXMgaWdub3JlZAotICB1bmRlciBOVCBhbmQgT1MyLiBQYXRjaCBieSBQaGlsaXAgSmVudmV5LgotCi0tIElzc3VlICM1MTI4OiBNYWtlIGNvbXBpbGVhbGwgcHJvcGVybHkgaW5zcGVjdCBieXRlY29kZSB0byBkZXRlcm1pbmUgaWYgbmVlZHMKLSAgdG8gYmUgcmVjcmVhdGVkLiBUaGlzIGF2b2lkcyBhIHRpbWluZyBob2xlIHRoYW5rcyB0byB0aGUgb2xkIHJlbGlhbmNlIG9uIHRoZQotICBjdGltZSBvZiB0aGUgZmlsZXMgaW52b2x2ZWQuCi0KLS0gSXNzdWUgIzUxMjI6IFN5bmNocm9uaXplIHRrIGxvYWQgZmFpbHVyZSBjaGVjayB0byBwcmV2ZW50IGEgcG90ZW50aWFsCi0gIGRlYWRsb2NrLgotCi0tIElzc3VlICMxODE4OiBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkgbm93IHN1cHBvcnRzIGEga2V5d29yZCBhcmd1bWVudAotICAncmVuYW1lJyB3aGljaCBsZXRzIGludmFsaWQgZmllbGRuYW1lcyBiZSBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0bwotICBwb3NpdGlvbmFsIG5hbWVzIGluIHRoZSBmb3JtLCBfMSwgXzIsIC4uLgotCi0tIElzc3VlICM0ODkwOiBIYW5kbGUgZW1wdHkgdGV4dCBzZWFyY2ggcGF0dGVybiBpbiBUa2ludGVyLlRleHQuc2VhcmNoLgotCi0tIElzc3VlICM0NTEyIChwYXJ0IDIpOiBQcm9tb3RlIGBgWmlwSW1wb3J0ZXIuX2dldF9maWxlbmFtZSgpYGAgdG8gYmUgYQotICBwdWJsaWMgZG9jdW1lbnRlZCBtZXRob2QgYGBaaXBJbXBvcnRlci5nZXRfZmlsZW5hbWUoKWBgLgotCi0tIElzc3VlICM0MTk1OiBUaGUgYGBydW5weWBgIG1vZHVsZSAoYW5kIHRoZSBgYC1tYGAgc3dpdGNoKSBub3cgc3VwcG9ydAotICB0aGUgZXhlY3V0aW9uIG9mIHBhY2thZ2VzIGJ5IGxvb2tpbmcgZm9yIGFuZCBleGVjdXRpbmcgYSBgYF9fbWFpbl9fYGAKLSAgc3VibW9kdWxlIHdoZW4gYSBwYWNrYWdlIG5hbWUgaXMgc3VwcGxpZWQuIEluaXRpYWwgcGF0Y2ggYnkgQW5kaQotICBWYWpkYS4KLQotLSBJc3N1ZSAjMTczMTcwNjogQ2FsbCBUY2xfQ29uZGl0aW9uRmluYWxpemUgZm9yIFRjbF9Db25kaXRpb25zIHRoYXQgd2lsbAotICBub3QgYmUgdXNlZCBhZ2FpbiAodGhpcyByZXF1aXJlcyBUY2wvVGsgOC4zLjEpLCBhbHNvIGZpeCBhIG1lbW9yeSBsZWFrIGluCi0gIFRrYXBwX0NhbGwgd2hlbiBjYWxsaW5nIGZyb20gYSB0aHJlYWQgZGlmZmVyZW50IHRoYW4gdGhlIG9uZSB0aGF0IGNyZWF0ZWQKLSAgdGhlIFRjbCBpbnRlcnByZXRlci4gUGF0Y2ggYnkgUm9iZXJ0IEhhbmNvY2suCi0KLS0gSXNzdWUgIzQyODU6IENoYW5nZSBzeXMudmVyc2lvbl9pbmZvIHRvIGJlIGEgbmFtZWQgdHVwbGUuIFBhdGNoIGJ5Ci0gIFJvc3MgTGlnaHQuCi0KLS0gSXNzdWUgIzE1MjA4Nzc6IE5vdyBkaXN0dXRpbHMuc3lzY29uZmlnIHJlYWRzICRBUiBmcm9tIHRoZQotICBlbnZpcm9ubWVudC9NYWtlZmlsZS4gUGF0Y2ggYnkgRG91Z2xhcyBHcmVpbWFuLgotCi0tIElzc3VlICMxMjc2NzY4OiBUaGUgdmVyYm9zZSBvcHRpb24gd2FzIG5vdCB1c2VkIGluIHRoZSBjb2RlIG9mCi0gIGRpc3R1dGlscy5maWxlX3V0aWwgYW5kIGRpc3R1dGlscy5kaXJfdXRpbC4KLQotLSBJc3N1ZSAjNTEzMjogRml4ZWQgdHJvdWJsZSBidWlsZGluZyBleHRlbnNpb25zIHVuZGVyIFNvbGFyaXMgd2l0aAotICAtLWVuYWJsZWQtc2hhcmVkIGFjdGl2YXRlZC4gSW5pdGlhbCBwYXRjaCBieSBEYXZlIFBldGVyc29uLgotCi0tIElzc3VlICMxNTgxNDc2OiBBbHdheXMgdXNlIHRoZSBUY2wgZ2xvYmFsIG5hbWVzcGFjZSB3aGVuIGNhbGxpbmcgaW50byBUY2wuCi0KLS0gVGhlIHNoZWx2ZSBtb2R1bGUgbm93IGRlZmF1bHRzIHRvIHBpY2tsZSBwcm90b2NvbCAzLgotCi0tIEZpeCBhIGJ1ZyBpbiB0aGUgdHJhY2UgbW9kdWxlIHdoZXJlIGEgYnl0ZXMgb2JqZWN0IGZyb20gY29fbG5vdGFiIGhhZCBpdHMKLSAgaXRlbXMgYmVpbmcgcGFzc2VkIHRocm91Z2ggb3JkKCkuCi0KLS0gSXNzdWUgIzIwNDc6IHNodXRpbC5tb3ZlKCkgY291bGQgYmVsaWV2ZSB0aGF0IGl0cyBkZXN0aW5hdGlvbiBwYXRoIHdhcwotICBpbnNpZGUgaXRzIHNvdXJjZSBwYXRoIGlmIGl0IGJlZ2FuIHdpdGggdGhlIHNhbWUgbGV0dGVycyAoZS5nLiAic3JjIiB2cy4KLSAgInNyYy5uZXciKS4KLQotLSBBZGRlZCB0aGUgdHRrIG1vZHVsZS4gU2VlIGlzc3VlICMyOTgzOiBUdGsgc3VwcG9ydCBmb3IgVGtpbnRlci4KLQotLSBSZW1vdmVkIGlzU2VxdWVuY2VUeXBlKCksIGlzTWFwcGluZ1R5cGUsIGFuZCBpc051bWJlclR5cGUoKSBmcm9tIHRoZQotICBvcGVyYXRvciBtb2R1bGU7IHVzZSB0aGUgYWJzdHJhY3QgYmFzZSBjbGFzc2VzIGluc3RlYWQuICBBbHNvIHJlbW92ZWQKLSAgdGhlIHJlcGVhdCgpIGZ1bmN0aW9uOyB1c2UgbXVsKCkgaW5zdGVhZC4KLQotLSBJc3N1ZSAjNTAyMTogIGRvY3Rlc3QudGVzdGZpbGUoKSBkaWQgbm90IGNyZWF0ZSBfX25hbWVfXyBhbmQKLSAgY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpIHJlbGllZCBvbiBfX25hbWVfXyBiZWluZyBkZWZpbmVkLgotCi0tIEJhY2twb3J0IGltcG9ydGxpYiBmcm9tIFB5dGhvbiAzLjEuIE9ubHkgdGhlIGltcG9ydF9tb2R1bGUoKSBmdW5jdGlvbiBoYXMKLSAgYmVlbiBiYWNrcG9ydGVkIHRvIGhlbHAgZmFjaWxpdGF0ZSB0cmFuc2l0aW9ucyBmcm9tIDIuNyB0byAzLjEuCi0KLS0gSXNzdWUgIzE4ODU6IGRpc3R1dGlscy4gV2hlbiBydW5uaW5nIHNkaXN0IHdpdGggLS1mb3JtYXRzPXRhcixnenRhcgotICB0aGUgdGFyIGZpbGUgd2FzIG92ZXJyaWRlbiBieSB0aGUgZ3p0YXIgb25lLgotCi0tIElzc3VlICM0ODYzOiBkaXN0dXRpbHMubXdlcmtzY29tcGlsZXIgaGFzIGJlZW4gcmVtb3ZlZC4KLQotLSBBZGRlZCBhIG5ldyBpdGVydG9vbHMgZnVuY3Rpb25zOiAgY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQoKQotICBhbmQgY29tcHJlc3MoKS4KLQotLSBJc3N1ZSAjNTAzMjogIGFkZGVkIGEgc3RlcCBhcmd1bWVudCB0byBpdGVydG9vbHMuY291bnQoKSBhbmQKLSAgYWxsb3dlZCBub24taW50ZWdlciBhcmd1bWVudHMuCi0KLS0gRml4IGFuZCBwcm9wZXJseSBkb2N1bWVudCB0aGUgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSdzIGxvZ2dpbmcKLSAgc3VwcG9ydCwgZXhwb3NlIHRoZSBpbnRlcm5hbCBsZXZlbHMgYW5kIHByb3ZpZGUgcHJvcGVyIHVzYWdlCi0gIGV4YW1wbGVzLgotCi0tIElzc3VlICMxNjcyMzMyOiBmaXggdW5waWNrbGluZyBvZiBzdWJub3JtYWwgZmxvYXRzLCB3aGljaCB3YXMKLSAgcHJvZHVjaW5nIGEgVmFsdWVFcnJvciBvbiBzb21lIHBsYXRmb3Jtcy4KLQotLSBJc3N1ZSAjMzg4MTogSGVscCBUY2wgdG8gbG9hZCBldmVuIHdoZW4gc3RhcnRlZCB0aHJvdWdoIHRoZQotICB1bnJlYWRhYmxlIGxvY2FsIHN5bWxpbmsgdG8gIlByb2dyYW0gRmlsZXMiIG9uIFZpc3RhLgotCi0tIElzc3VlICM0NzEwOiBFeHRyYWN0IGRpcmVjdG9yaWVzIHByb3Blcmx5IGluIHRoZSB6aXBmaWxlIG1vZHVsZTsKLSAgYWxsb3cgYWRkaW5nIGRpcmVjdG9yaWVzIHRvIGEgemlwZmlsZS4KLQotLSBJc3N1ZSAjMzgwNzogX211bHRpcHJvY2Vzc2luZyBidWlsZCBmYWlscyB3aGVuIGNvbmZpZ3VyZSBpcyBwYXNzZWQKLSAgLS13aXRob3V0LXRocmVhZHMgYXJndW1lbnQuIFdoZW4gdGhpcyBvY2N1cnMsIF9tdWx0aXByb2Nlc3Npbmcgd2lsbAotICBiZSBkaXNhYmxlZCwgYW5kIG5vdCBjb21waWxlZC4KLQotLSBJc3N1ZSAjNTAwODogV2hlbiBhIGZpbGUgaXMgb3BlbmVkIGluIGFwcGVuZCBtb2RlIHdpdGggdGhlIG5ldyBJTyBsaWJyYXJ5LAotICBkbyBhbiBleHBsaWNpdCBzZWVrIHRvIHRoZSBlbmQgb2YgZmlsZSAoc28gdGhhdCBlLmcuIHRlbGwoKSByZXR1cm5zIHRoZQotICBmaWxlIHNpemUgcmF0aGVyIHRoYW4gMCkuIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBiZWhhdmlvdXIgb2YgdGhlCi0gIHRyYWRpdGlvbmFsIDIueCBmaWxlIG9iamVjdC4KLQotLSBJc3N1ZSAjNTAxMzogRml4ZWQgYSBidWcgaW4gRmlsZUhhbmRsZXIgd2hpY2ggb2NjdXJyZWQgd2hlbiB0aGUgZGVsYXkKLSAgcGFyYW1ldGVyIHdhcyBzZXQuCi0KLS0gSXNzdWUgIzQ4NDI6IEFsd2F5cyBhcHBlbmQgYSB0cmFpbGluZyAnTCcgd2hlbiBwaWNrbGluZyBsb25ncyB1c2luZwotICBwaWNrbGUgcHJvdG9jb2wgMC4gIFdoZW4gcmVhZGluZywgdGhlICdMJyBpcyBvcHRpb25hbC4KLQotLSBBZGQgdGhlIGltcG9ydGxpYiBwYWNrYWdlLgotCi0tIElzc3VlICM0MzAxOiBQYXRjaCB0aGUgbG9nZ2luZyBtb2R1bGUgdG8gYWRkIHByb2Nlc3NOYW1lIHN1cHBvcnQsIHJlbW92ZQotICBfY2hlY2tfbG9nZ2VyX2NsYXNzIGZyb20gbXVsdGlwcm9jZXNzaW5nLgotCi0tIElzc3VlICMzMzI1OiBSZW1vdmUgcHl0aG9uMi54IHRyeTogZXhjZXB0OiBpbXBvcnRzIGZvciBvbGQgY1BpY2tsZSBmcm9tCi0gIG11bHRpcHJvY2Vzc2luZy4KLQotLSBJc3N1ZSAjNDk1OTogaW5zcGVjdC5mb3JtYXRhcmdzcGVjIG5vdyB3b3JrcyBmb3Iga2V5d29yZCBvbmx5IGFyZ3VtZW50cwotICB3aXRob3V0IGRlZmF1bHRzLgotCi0tIElzc3VlICMzMzIxOiBgYF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbigpYGAgZG9lc24ndCBjaGVjayBoYW5kbGU7IGFkZGVkIGNoZWNrcwotICBmb3IgVW5peCBtYWNoaW5lcyBmb3IgbmVnYXRpdmUgaGFuZGxlcyBhbmQgbGFyZ2UgaW50IGhhbmRsZXMuIFdpdGhvdXQgdGhpcyBjaGVjawotICBpdCBpcyBwb3NzaWJsZSB0byBzZWdmYXVsdCB0aGUgaW50ZXJwcmV0ZXIuCi0KLS0gSXNzdWUgIzQ0NDk6IEFzc2VydGlvbkVycm9yIGluIG1wX2JlbmNobWFya3MucHksIGNhdXNlZCBieSBhbiB1bmRlcmx5aW5nIGlzc3VlCi0gIGluIHNoYXJlZGN0eXBlcy5weS4KLQotLSBJc3N1ZSAjMTIyNTEwNzogaW5zcGVjdC5pc2NsYXNzKCkgcmV0dXJuZWQgVHJ1ZSBmb3IgaW5zdGFuY2VzIHdpdGggYSBjdXN0b20KLSAgX19nZXRhdHRyX18uCi0KLS0gSXNzdWUgIzM4MjYgYW5kICM0NzkxOiBUaGUgc29ja2V0IG1vZHVsZSBub3cgY2xvc2VzIHRoZSB1bmRlcmx5aW5nIHNvY2tldAotICBhcHByb3ByaWF0ZWx5IHdoZW4gaXQgaXMgYmVpbmcgdXNlZCB2aWEgc29ja2V0Lm1ha2VmaWxlKCkgb2JqZWN0cwotICByYXRoZXIgdGhhbiBkZWxheWluZyB0aGUgY2xvc2UgYnkgd2FpdGluZyBmb3IgZ2FyYmFnZSBjb2xsZWN0aW9uIHRvIGRvIGl0LgotCi0tIElzc3VlICMxNjk2MTk5OiAgQWRkIGNvbGxlY3Rpb25zLkNvdW50ZXIoKSBmb3IgcmFwaWQgYW5kIGNvbnZlbmllbnQKLSAgY291bnRpbmcuCi0KLS0gSXNzdWUgIzM4NjA6IEd6aXBGaWxlIGFuZCBCWjJGaWxlIG5vdyBzdXBwb3J0IHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wuCi0KLS0gSXNzdWUgIzQ4Njc6IEZpeGVkIGEgY3Jhc2ggaW4gY3R5cGVzIHdoZW4gcGFzc2luZyBhIHN0cmluZyB0byBhCi0gIGZ1bmN0aW9uIHdpdGhvdXQgZGVmaW5pbmcgYXJndHlwZXMuCi0KLS0gSXNzdWUgIzQyNzI6IEFkZCBhbiBvcHRpb25hbCBhcmd1bWVudCB0byB0aGUgR3ppcEZpbGUgY29uc3RydWN0b3IgdG8gb3ZlcnJpZGUKLSAgdGhlIHRpbWVzdGFtcCBpbiB0aGUgZ3ppcCBzdHJlYW0uIFRoZSBkZWZhdWx0IHZhbHVlIHJlbWFpbnMgdGhlIGN1cnJlbnQgdGltZS4KLSAgVGhlIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VkIGJ5IGUuZy4gZ3VuemlwIHdoZW4gZGVjb21wcmVzc2luZy4gUGF0Y2ggYnkKLSAgSmFjcXVlcyBGcmVjaGV0LgotCi0tIFJlc3RvcmUgUHl0aG9uIDIuMyBjb21wYXRpYmlsaXR5IGZvciBkZWNpbWFsLnB5LgotCi0tIElzc3VlICMzNjM4OiBSZW1vdmUgZnVuY3Rpb25zIGZyb20gX3RraW50ZXIgbW9kdWxlIGxldmVsIHRoYXQgZGVwZW5kIG9uCi0gIFRrYXBwT2JqZWN0IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSB0aHJlYWRzLgotCi0tIElzc3VlICM0NzE4OiBBZGFwdCB0aGUgd3NnaXJlZiBwYWNrYWdlIHNvIHRoYXQgaXQgYWN0dWFsbHkgd29ya3Mgd2l0aAotICBQeXRob24gMy54LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGBvZmZpY2lhbCBhbWVuZG1lbnRzIG9mIHRoZSBzcGVjCi0gIDxodHRwOi8vd3d3LndzZ2kub3JnL3dzZ2kvQW1lbmRtZW50c18xLjA+YF8uCi0KLS0gSXNzdWUgIzQ3OTY6IEFkZGVkIERlY2ltYWwuZnJvbV9mbG9hdCgpIGFuZCBDb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoKQotICB0byB0aGUgZGVjaW1hbCBtb2R1bGUuCi0KLS0gRnJhY3Rpb25zLmZyb21fZmxvYXQoKSBubyBsb25nZXIgbG9zZXMgcHJlY2lzaW9uIGZvciBpbnRlZ2VycyB0b28gYmlnIHRvCi0gIGNhc3QgYXMgZmxvYXRzLgotCi0tIElzc3VlICM0ODEyOiBhZGQgbWlzc2luZyB1bmRlcnNjb3JlIHByZWZpeCB0byBzb21lIGludGVybmFsLXVzZS1vbmx5Ci0gIGNvbnN0YW50cyBpbiB0aGUgZGVjaW1hbCBtb2R1bGUuICAoRGVjXzAgYmVjb21lcyBfRGVjXzAsIGV0Yy4pCi0KLS0gSXNzdWUgIzQ3OTA6IFRoZSBuc21hbGxlc3QoKSBhbmQgbmxhcmdlc3QoKSBmdW5jdGlvbnMgaW4gdGhlIGhlYXBxIG1vZHVsZQotICBkaWQgdW5uZWNlc3Nhcnkgd29yayBpbiB0aGUgY29tbW9uIGNhc2Ugd2hlcmUgbm8ga2V5IGZ1bmN0aW9uIHdhcyBzcGVjaWZpZWQuCi0KLS0gSXNzdWUgIzQ3OTU6IGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbigpIHJldHVybnMgRmFsc2UgaW5zdGVhZCBvZiBOb25lIHdoZW4KLSAgdGhlIGZ1bmN0aW9uIGlzIG5vdCBhIGdlbmVyYXRvci4KLQotLSBJc3N1ZSAjNDcwMjogVGhyb3dpbmcgYSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yIGluc3RlYWQgb2YgSU9FcnJvciBpbiBjYXNlCi0gIG5vIE1TVkMgY29tcGlsZXIgaXMgZm91bmQgdW5kZXIgV2luZG93cy4gT3JpZ2luYWwgcGF0Y2ggYnkgUGhpbGlwIEplbnZleS4KLQotLSBJc3N1ZSAjNDY0NjogZGlzdHV0aWxzIHdhcyBjaG9raW5nIG9uIGVtcHR5IG9wdGlvbnMgYXJnIGluIHRoZSBzZXR1cAotICBmdW5jdGlvbi4gT3JpZ2luYWwgcGF0Y2ggYnkgVGhvbWFzIEhlbGxlci4KLQotLSBJc3N1ZSAjMzc2NzogQ29udmVydCBUayBvYmplY3QgdG8gc3RyaW5nIGluIHRrQ29sb3JDaG9vc2VyLgotCi0tIElzc3VlICMzMjQ4OiBBbGxvdyBwbGFjaW5nIFNjcm9sbGVkVGV4dCBpbiBhIFBhbmVkV2luZG93LgotCi0tIElzc3VlICM0NDQ0OiBBbGxvdyBhc3NlcnRSYWlzZXMoKSB0byBiZSB1c2VkIGFzIGEgY29udGV4dCBoYW5kbGVyLCBzbyB0aGF0Ci0gIHRoZSBjb2RlIHVuZGVyIHRlc3QgY2FuIGJlIHdyaXR0ZW4gaW5saW5lIGlmIG1vcmUgcHJhY3RpY2FsLgotCi0tIElzc3VlICM0NzM5OiBBZGQgcHlkb2MgaGVscCB0b3BpY3MgZm9yIHN5bWJvbHMsIHNvIHRoYXQgZS5nLiBoZWxwKCdAJykKLSAgd29ya3MgYXMgZXhwZWN0ZWQgaW4gdGhlIGludGVyYWN0aXZlIGVudmlyb25tZW50LgotCi0tIElzc3VlICM0NzU2OiB6aXBmaWxlLmlzX3ppcGZpbGUoKSBub3cgc3VwcG9ydHMgZmlsZS1saWtlIG9iamVjdHMuIFBhdGNoIGJ5Ci0gIEdhYnJpZWwgR2VuZWxsaW5hLgotCi0tIElzc3VlICM0NTc0OiByZWFkaW5nIGFuIFVURjE2LWVuY29kZWQgdGV4dCBmaWxlIGNyYXNoZXMgaWYgXHIgb24gNjQtY2hhcgotICBib3VuZGFyeS4KLQotLSBJc3N1ZSAjNDIyMzogaW5zcGVjdC5nZXRzb3VyY2UoKSB3aWxsIG5vdyBjb3JyZWN0bHkgZGlzcGxheSBzb3VyY2UgY29kZQotICBmb3IgcGFja2FnZXMgbG9hZGVkIHZpYSB6aXBpbXBvcnQgKG9yIGFueSBvdGhlciBjb25mb3JtYW50IFBFUCAzMDIKLSAgbG9hZGVyKS4gT3JpZ2luYWwgcGF0Y2ggYnkgQWxleGFuZGVyIEJlbG9wb2xza3kuCi0KLS0gSXNzdWUgIzQyMDE6IHBkYiBjYW4gbm93IGFjY2VzcyBhbmQgZGlzcGxheSBzb3VyY2UgY29kZSBsb2FkZWQgdmlhCi0gIHppcGltcG9ydCAob3IgYW55IG90aGVyIGNvbmZvcm1hbnQgUEVQIDMwMiBsb2FkZXIpLiBPcmlnaW5hbCBwYXRjaCBieQotICBBbGV4YW5kZXIgQmVsb3BvbHNreS4KLQotLSBJc3N1ZSAjNDE5NzogZG9jdGVzdHMgaW4gbW9kdWxlcyBsb2FkZWQgdmlhIHppcGltcG9ydCAob3IgYW55IG90aGVyIFBFUAotICAzMDIgY29uZm9ybWFudCBsb2FkZXIpIHdpbGwgbm93IHdvcmsgY29ycmVjdGx5IGluIG1vc3QgY2FzZXMgKHRoZXkKLSAgYXJlIHN0aWxsIHN1YmplY3QgdG8gdGhlIGNvbnN0cmFpbnRzIHRoYXQgZXhpc3QgZm9yIGFsbCBjb2RlIHJ1bm5pbmcKLSAgZnJvbSBpbnNpZGUgYSBtb2R1bGUgbG9hZGVkIHZpYSBhIFBFUCAzMDIgbG9hZGVyIGFuZCBhdHRlbXB0aW5nIHRvCi0gIHBlcmZvcm0gSU8gb3BlcmF0aW9ucyBiYXNlZCBvbiBfX2ZpbGVfXykuIE9yaWdpbmFsIHBhdGNoIGJ5Ci0gIEFsZXhhbmRlciBCZWxvcG9sc2t5LgotCi0tIElzc3VlcyAjNDA4MiBhbmQgIzQ1MTI6IEFkZCBydW5weSBzdXBwb3J0IHRvIHppcGltcG9ydCBpbiBhIG1hbm5lciB0aGF0Ci0gIGFsbG93cyBiYWNrcG9ydGluZyB0byBtYWludGVuYW5jZSBicmFuY2hlcy4gT3JpZ2luYWwgcGF0Y2ggYnkKLSAgQWxleGFuZGVyIEJlbG9wb2xza3kuCi0KLS0gSXNzdWUgIzQxNjM6IHRleHR3cmFwIG1vZHVsZTogYWxsb3cgd29yZCBzcGxpdHRpbmcgb24gYSBoeXBoZW4gcHJlY2VkZWQgYnkKLSAgYSBub24tQVNDSUkgbGV0dGVyLgotCi0tIElzc3VlICM0NjE2OiBUYXJGaWxlLnV0aW1lKCk6IFJlc3RvcmUgZGlyZWN0b3J5IHRpbWVzIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzQwMjE6IHRva2VuaXplLmRldGVjdF9lbmNvZGluZygpIG5vdyByYWlzZXMgYSBTeW50YXhFcnJvciB3aGVuIHRoZQotICBjb2RlYyBjYW5ub3QgYmUgZm91bmQuICBUaGlzIGlzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGJ1aWx0aW4gYmVoYXZpb3IuCi0KLS0gSXNzdWUgIzQwODQ6IEZpeCBtYXgsIG1pbiwgbWF4X21hZyBhbmQgbWluX21hZyBEZWNpbWFsIG1ldGhvZHMgdG8KLSAgZ2l2ZSBjb3JyZWN0IHJlc3VsdHMgaW4gdGhlIGNhc2Ugd2hlcmUgb25lIGFyZ3VtZW50IGlzIGEgcXVpZXQgTmFOCi0gIGFuZCB0aGUgb3RoZXIgaXMgYSBmaW5pdGUgbnVtYmVyIHRoYXQgcmVxdWlyZXMgcm91bmRpbmcuCi0KLS0gSXNzdWUgIzQ0ODM6IF9kYm0gbW9kdWxlIG5vdyBidWlsZHMgb24gc3lzdGVtcyB3aXRoIGdkYm0gJiBnZGJtX2NvbXBhdAotICBsaWJzLgotCi0tIEFkZGVkIHRoZSBzdWJwcm9jZXNzLmNoZWNrX2NhbGxfb3V0cHV0KCkgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZ2V0IG91dHB1dAotICBmcm9tIGEgc3VicHJvY2VzcyBvbiBzdWNjZXNzIG9yIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4KLQotLSBJc3N1ZSAjMTA1NTIzNDogY2dpLnBhcnNlX2hlYWRlcigpOiBGaXhlZCBwYXJzaW5nIG9mIGhlYWRlciBwYXJhbWV0ZXJzIHRvCi0gIHN1cHBvcnQgdW51c3VhbCBmaWxlbmFtZXMgKHN1Y2ggYXMgdGhvc2UgY29udGFpbmluZyBzZW1pLWNvbG9ucykgaW4KLSAgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXJzLgotCi0tIElzc3VlICM0Mzg0OiBBZGRlZCBsb2dnaW5nIGludGVncmF0aW9uIHdpdGggd2FybmluZ3MgbW9kdWxlIHVzaW5nCi0gIGNhcHR1cmVXYXJuaW5ncygpLiBUaGlzIGNoYW5nZSBpbmNsdWRlcyBhIE51bGxIYW5kbGVyIHdoaWNoIGRvZXMgbm90aGluZzsKLSAgaXQgd2lsbCBiZSBvZiB1c2UgdG8gbGlicmFyeSBkZXZlbG9wZXJzIHdobyB3YW50IHRvIGF2b2lkIHRoZSAiTm8gaGFuZGxlcnMKLSAgY291bGQgYmUgZm91bmQgZm9yIGxvZ2dlciBYWFgiIG1lc3NhZ2Ugd2hpY2ggY2FuIGFwcGVhciBpZiB0aGUgbGlicmFyeSB1c2VyCi0gIGRvZXNuJ3QgY29uZmlndXJlIGxvZ2dpbmcuCi0KLS0gSXNzdWUgIzM3NDE6IERJU1RVVElMU19VU0VfU0RLIHNldCBjYXVzZXMgbXN2Yzljb21waWxlci5weSB0byByYWlzZSBhbgotICBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzQ1Mjk6IGZpeCB0aGUgcGFyc2VyIG1vZHVsZSdzIHZhbGlkYXRpb24gb2YgdHJ5LWV4Y2VwdC1maW5hbGx5Ci0gIHN0YXRlbWVudHMuCi0KLS0gSXNzdWUgIzQ0NTg6IGdldG9wdC5nbnVfZ2V0b3B0KCkgbm93IHJlY29nbml6ZXMgYSBzaW5nbGUgIi0iIGFzIGFuIGFyZ3VtZW50LAotICBub3QgYSBtYWxmb3JtZWQgb3B0aW9uLgotCi0tIEFkZGVkIHRoZSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgpIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGdldCBvdXRwdXQKLSAgZnJvbSBhIHN1YnByb2Nlc3Mgb24gc3VjY2VzcyBvciByYWlzZSBhbiBleGNlcHRpb24gb24gZXJyb3IuCi0KLS0gSXNzdWUgIzQ1NDI6IE9uIFdpbmRvd3MsIGJpbmFzY2lpLmNyYzMyIHN0aWxsIGFjY2VwdGVkIHN0ciBhcyBiaW5hcnkgaW5wdXQ7Ci0gIHRoZSBjb3JyZXNwb25kaW5nIHRlc3RzIG5vdyBwYXNzLgotCi0tIElzc3VlICM0NTM3OiB3ZWJicm93c2VyLlVuaXhCcm93c2VyIHdvdWxkIGZhaWwgdG8gb3BlbiB0aGUgYnJvd3NlciBiZWNhdXNlCi0gIGl0IHdhcyBjYWxsaW5nIHRoZSB3cm9uZyBvcGVuKCkgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzEwNTUyMzQ6IGNnaS5wYXJzZV9oZWFkZXIoKTogRml4ZWQgcGFyc2luZyBvZiBoZWFkZXIgcGFyYW1ldGVycyB0bwotICBzdXBwb3J0IHVudXN1YWwgZmlsZW5hbWVzIChzdWNoIGFzIHRob3NlIGNvbnRhaW5pbmcgc2VtaS1jb2xvbnMpIGluCi0gIENvbnRlbnQtRGlzcG9zaXRpb24gaGVhZGVycy4KLQotLSBJc3N1ZSAjNDg2MTogY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5KCk6IFJvYnVzdGlmeS4gRml4IGxpYnJhcnkgZGV0ZWN0aW9uIG9uCi0gIGJpYXJjaCBzeXN0ZW1zLiBUcnkgdG8gcmVseSBvbiBsZGNvbmZpZyBvbmx5LCB3aXRob3V0IHVzaW5nIG9iamR1bXAgYW5kIGdjYy4KLQotLSBJc3N1ZSAjNTEwNDogVGhlIHNvY2tldCBtb2R1bGUgbm93IHJhaXNlcyBPdmVyZmxvd0Vycm9yIHdoZW4gMTYtYml0IHBvcnQgYW5kCi0gIHByb3RvY29sIG51bWJlcnMgYXJlIHN1cHBsaWVkIG91dHNpZGUgdGhlIGFsbG93ZWQgMC02NTUzNiByYW5nZSBvbiBiaW5kKCkKLSAgYW5kIGdldHNlcnZieXBvcnQoKS4KLQotLSBXaW5kb3dzIGxvY2FsZSBtYXBwaW5nIHVwZGF0ZWQgdG8gVmlzdGEuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM0NzA0OiByZW1vdmUgdXNlIG9mIGNtcCgpIGluIHB5YmVuY2gsIGJ1bXAgaXRzIHZlcnNpb24gbnVtYmVyIHRvIDIuMSwKLSAgYW5kIG1ha2UgaXQgMi42LWNvbXBhdGlibGUuCi0KLS0gVHRrIGRlbW9zIGFkZGVkIGluIERlbW8vdGtpbnRlci90dGsvCi0KLS0gSXNzdWUgIzQ2Nzc6IGFkZCB0d28gbGlzdCBjb21wcmVoZW5zaW9uIHRlc3RzIHRvIHB5YmVuY2guCi0KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzYwOTQ6IEJ1aWxkIGNvcnJlY3RseSB3aXRoIFN1YnZlcnNpb24gMS43LgotCi0tIElzc3VlICM1ODQ3OiBSZW1vdmUgLW4gc3dpdGNoIG9uICJFZGl0IHdpdGggSURMRSIgbWVudSBpdGVtLgotCi0tIElzc3VlICM1NzI2OiBNYWtlIE1vZHVsZXMvbGRfc29fYWl4IHJldHVybiB0aGUgYWN0dWFsIGV4aXQgY29kZSBvZiB0aGUKLSAgbGlua2VyLCByYXRoZXIgdGhhbiBhbHdheXMgZXhpdCBzdWNjZXNzZnVsbHkuIFBhdGNoIGJ5IEZsb3JpcyBCcnV5bm9vZ2hlLgotCi0tIElzc3VlICM0NTg3OiBBZGQgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtZGJtbGlib3JkZXI9ZGIxOmRiMjouLi4gdG8gc3BlY2lmeQotICB0aGUgb3JkZXIgdGhhdCBiYWNrZW5kcyBmb3IgdGhlIGRibSBleHRlbnNpb24gYXJlIGNoZWNrZWQuCi0KLS0gTGluayB0aGUgc2hhcmVkIHB5dGhvbiBsaWJyYXJ5IHdpdGggJChNT0RMSUJTKS4KLQotLSBJc3N1ZSAjNTEzNDogU2lsZW5jZSBjb21waWxlciB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZyBzcWxpdGUgd2l0aCBWQysrLgotCi0tIElzc3VlICM0NDk0OiBGaXggYnVpbGQgd2l0aCBQeV9OT19FTkFCTEVfU0hBUkVEIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzQ4OTU6IFVzZSBfc3RyZHVwIG9uIFdpbmRvd3MgQ0UuCi0KLS0gSXNzdWUgIzQ0NzI6ICJjb25maWd1cmUgLS1lbmFibGUtc2hhcmVkIiBub3cgd29ya3Mgb24gT1NYCi0KLS0gSXNzdWVzICM0NzI4IGFuZCAjNDA2MDogV09SRFNfQklHRURJQU4gaXMgbm93IGNvcnJlY3QgaW4gVW5pdmVyc2FsIGJ1aWxkcy4KLQotLSBJc3N1ZSAjNDM4OTogQWRkIGljb24gdG8gdGhlIHVuaW5zdGFsbCBlbnRyeSBpbiAiYWRkLWFuZC1yZW1vdmUtcHJvZ3JhbXMiLgotCi0tIElzc3VlICM0Mjg5OiBSZW1vdmUgQ2FuY2VsIGJ1dHRvbiBmcm9tIEFkdmFuY2VkRGxnLgotCi0tIElzc3VlICMxNjU2Njc1OiBSZWdpc3RlciBhIGRyb3AgaGFuZGxlciBmb3IgLnB5KiBmaWxlcyBvbiBXaW5kb3dzLgotCi0tIElzc3VlICM0MTIwOiBFeGNsdWRlIG1hbmlmZXN0IGZyb20gZXh0ZW5zaW9uIG1vZHVsZXMgaW4gVlMyMDA4LgotCi0tIElzc3VlICM0MDkxOiBJbnN0YWxsIHB5dGhvbnh5LmRsbCBpbiBzeXN0ZW0zMiBhZ2Fpbi4KLQotLSBJc3N1ZSAjNDAxODogRGlzYWJsZSAiZm9yIG1lIiBpbnN0YWxsYXRpb25zIG9uIFZpc3RhLgotCi0tIElzc3VlICMzNzU4OiBBZGQgYGBwYXRjaGNoZWNrYGAgYnVpbGQgdGFyZ2V0IHRvIC5QSE9OWS4KLQotLSBJc3N1ZSAjNDIwNDogRml4ZWQgbW9kdWxlIGJ1aWxkIGVycm9ycyBvbiBGcmVlQlNEIDQuCi0KLQotQy1BUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzY2MjQ6IHlBcmdfUGFyc2VUdXBsZSB3aXRoICJzIiBmb3JtYXQgd2hlbiBwYXJzaW5nIGFyZ3VtZW50IHdpdGgKLSAgTlVMOiBCb2d1cyBUeXBlRXJyb3IgZGV0YWlsIHN0cmluZy4KLQotLSBJc3N1ZSAjNTE3NTogUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyBub3cgcmFpc2VzIE92ZXJmbG93RXJyb3IKLSAgZm9yIG5lZ2F0aXZlIGFyZ3VtZW50cy4gIFByZXZpb3VzbHksIGl0IHJhaXNlZCBUeXBlRXJyb3IuCi0KLS0gSXNzdWUgIzQ3MjA6IFRoZSBmb3JtYXQgZm9yIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyBjYW4gYmVnaW4gd2l0aCAnfCcuCi0KLS0gSXNzdWUgIzM2MzI6IGZyb20gdGhlIGdkYiBkZWJ1Z2dlciwgdGhlICdweW8nIG1hY3JvIGNhbiBub3cgYmUgY2FsbGVkIHdoZW4KLSAgdGhlIEdJTCBpcyByZWxlYXNlZCwgb3Igb3duZWQgYnkgYW5vdGhlciB0aHJlYWQuCi0KLS0gSXNzdWUgIzQxMjI6IE9uIFdpbmRvd3MsIGZpeCBhIGNvbXBpbGF0aW9uIGVycm9yIHdoZW4gdXNpbmcgdGhlCi0gIFB5X1VOSUNPREVfSVNTUEFDRSBtYWNybyBpbiBhbiBleHRlbnNpb24gbW9kdWxlLgotCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMzNzQ1OiBGaXggaGFzaGxpYiB0byBhbHdheXMgcmVqZWN0IHVuaWNvZGUgYW5kIG5vbiBidWZmZXItYXBpCi0gIHN1cHBvcnRpbmcgb2JqZWN0cyBhcyBpbnB1dCBubyBtYXR0ZXIgaG93IGl0IHdhcyBjb21waWxlZCAoYnVpbHQgaW4KLSAgaW1wbGVtZW50YXRpb25zIG9yIGV4dGVybmFsIG9wZW5zc2wgbGlicmFyeSkuCi0KLS0gSXNzdWUgIzQzOTc6IEZpeCBvY2Nhc2lvbmFsIHRlc3Rfc29ja2V0IGZhaWx1cmUgb24gT1MgWC4KLQotLSBJc3N1ZSAjNDI3OTogRml4IGJ1aWxkIG9mIHBhcnNlcm1vZHVsZSB1bmRlciBDeWd3aW4uCi0KLS0gSXNzdWUgIzQ3NTE6IGhhc2hsaWIgbm93IHJlbGVhc2VzIHRoZSBHSUwgd2hlbiBoYXNoaW5nIGxhcmdlIGJ1ZmZlcnMKLSAgKHdpdGggYSBoYXJkd2lyZWQgdGhyZXNob2xkIG9mIDIwNDggYnl0ZXMpLCBhbGxvd2luZyBiZXR0ZXIgcGFyYWxsZWxpemF0aW9uCi0gIG9uIG11bHRpLUNQVSBzeXN0ZW1zLiBDb250cmlidXRlZCBieSBMdWthcyBMdWVnIChlYmZlKSBhbmQgVmljdG9yIFN0aW5uZXIuCi0KLS0gSXNzdWUgIzQwNTE6IFByZXZlbnQgY29uZmxpY3Qgb2YgVU5JQ09ERSBtYWNyb3MgaW4gY1BpY2tsZS4KLQotLSBJc3N1ZSAjNDczODogRWFjaCB6bGliIG9iamVjdCBub3cgaGFzIGEgc2VwYXJhdGUgbG9jaywgYWxsb3dpbmcgdG8gY29tcHJlc3MKLSAgb3IgZGVjb21wcmVzcyBzZXZlcmFsIHN0cmVhbXMgYXQgb25jZSBvbiBtdWx0aS1DUFUgc3lzdGVtcy4gQWxzbywgdGhlIEdJTAotICBpcyBub3cgcmVsZWFzZWQgd2hlbiBjb21wdXRpbmcgdGhlIENSQyBvZiBhIGxhcmdlIGJ1ZmZlci4gUGF0Y2ggYnkgZWJmZS4KLQotLSBJc3N1ZSAjNDIyODogUGFjayBuZWdhdGl2ZSB2YWx1ZXMgdGhlIHNhbWUgd2F5IGFzIDIuNCBpbiBzdHJ1Y3QncyBMIGZvcm1hdC4KLQotLSBJc3N1ZSAjMTA0MDAyNjogRml4IG9zLnRpbWVzIHJlc3VsdCBvbiBzeXN0ZW1zIHdoZXJlIEhaIGlzIGluY29ycmVjdC4KLQotLSBJc3N1ZXMgIzMxNjcsICMzNjgyOiBGaXggdGVzdF9tYXRoIGZhaWx1cmVzIGZvciBsb2csIGxvZzEwIG9uIFNvbGFyaXMsCi0gIE9wZW5CU0QuCi0KLS0gSXNzdWUgIzQ1ODM6IGFycmF5LmFycmF5IHdvdWxkIG5vdCBhbHdheXMgcHJvaGliaXQgcmVzaXppbmcgd2hlbiBhIGJ1ZmZlcgotICBoYXMgYmVlbiBleHBvcnRlZCwgcmVzdWx0aW5nIGluIGFuIGludGVycHJldGVyIGNyYXNoIHdoZW4gYWNjZXNzaW5nIHRoZQotICBidWZmZXIuCi0KLQotLSBJc3N1ZSAjNTIyODogTWFrZSBmdW5jdG9vbHMucGFydGlhbCBvYmplY3RzIGNhbiBub3cgYmUgcGlja2xlZC4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzYxNTI6IE5ldyBvcHRpb24gJy1qJy8nLS1tdWx0aXByb2Nlc3MnIGZvciByZWdydGVzdCBhbGxvd3MgcnVubmluZwotICByZWdyZXNzaW9uIHRlc3RzIGluIHBhcmFsbGVsLCBzaG9ydGVuaW5nIHRoZSB0b3RhbCBydW50aW1lLgotCi0tIElzc3VlICM1NDUwOiBNb3ZlZCB0ZXN0cyBpbnZvbHZpbmcgbG9hZGluZyB0ayBmcm9tIExpYi90ZXN0L3Rlc3RfdGNsIHRvCi0gIExpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfbG9hZHRrLiBXaXRoIHRoaXMsIHRoZXNlIHRlc3RzIGRlbW9uc3RyYXRlCi0gIHRoZSBzYW1lIGJlaGF2aW91ciBhcyB0ZXN0X3R0a2d1aW9ubHkgKGFuZCBub3cgYWxzbyB0ZXN0X3RrKSB3aGljaCBpcyB0bwotICBza2lwIHRoZSB0ZXN0cyBpZiBESVNQTEFZIGlzIGRlZmluZWQgYnV0IGNhbid0IGJlIHVzZWQuCi0KLS0gcmVncnRlc3Qgbm8gbG9uZ2VyIHRyZWF0cyBJbXBvcnRFcnJvciBhcyBlcXVpdmFsZW50IHRvIFNraXBUZXN0LiAgSW1wb3J0cwotICB0aGF0IHNob3VsZCBjYXVzZSBhIHRlc3QgdG8gYmUgc2tpcHBlZCBhcmUgbm93IGRvbmUgdXNpbmcgaW1wb3J0X21vZHVsZQotICBmcm9tIHRlc3Qgc3VwcG9ydCwgd2hpY2ggZG9lcyB0aGUgY29udmVyc2lvbi4KLQotLSBJc3N1ZSAjNTA4MzogTmV3ICdndWknIHJlc291cmNlIGZvciByZWdydGVzdC4KLQotCi1Eb2NzCi0tLS0tCi0KLQogKiooRm9yIGluZm9ybWF0aW9uIGFib3V0IG9sZGVyIHZlcnNpb25zLCBjb25zdWx0IHRoZSBISVNUT1JZIGZpbGUuKSoqCmRpZmYgLS1naXQgYS9NaXNjL1JFQURNRSBiL01pc2MvUkVBRE1FCmluZGV4IGIyMzljZWUuLjExOGY2YzcgMTAwNjQ0Ci0tLSBhL01pc2MvUkVBRE1FCisrKyBiL01pc2MvUkVBRE1FCkBAIC04LDcgKzgsNiBAQAogLS0tLS0tLS0tLS0tLS0tLQogCiBBQ0tTICAgICAgICAgICAgICAgICAgICBBY2tub3dsZWRnZW1lbnRzCi1idWlsZC5zaCAgICAgICAgICAgICAgICBTY3JpcHQgdG8gYnVpbGQgYW5kIHRlc3QgbGF0ZXN0IFB5dGhvbiBmcm9tIHRoZSByZXBvc2l0b3J5CiBnZGJpbml0ICAgICAgICAgICAgICAgICBIYW5keSBzdHVmZiB0byBwdXQgaW4geW91ciAuZ2RiaW5pdCBmaWxlLCBpZiB5b3UgdXNlIGdkYgogSElTVE9SWSAgICAgICAgICAgICAgICAgTmV3cyBmcm9tIHByZXZpb3VzIHJlbGVhc2VzIC0tIG9sZGVzdCBsYXN0CiBpbmRlbnQucHJvICAgICAgICAgICAgICBHTlUgaW5kZW50IHByb2ZpbGUgYXBwcm94aW1hdGluZyBteSBDIHN0eWxlCkBAIC0xOSw4ICsxOCwxMSBAQAogcHl0aG9uLnBjLmluICAgICAgICAgICAgUGFja2FnZSBjb25maWd1cmF0aW9uIGluZm8gdGVtcGxhdGUgZm9yIHBrZy1jb25maWcKIHB5dGhvbi13aW5nKi53cHIgICAgICAgIFdpbmcgSURFIHByb2plY3QgZmlsZQogUkVBRE1FICAgICAgICAgICAgICAgICAgVGhlIGZpbGUgeW91J3JlIHJlYWRpbmcgbm93CitSRUFETUUuQUlYICAgICAgICAgICAgICBJbmZvcm1hdGlvbiBhYm91dCB1c2luZyBQeXRob24gb24gQUlYCitSRUFETUUuY292ZXJpdHkgICAgICAgICBJbmZvcm1hdGlvbiBhYm91dCBydW5uaW5nIENvdmVyaXR5J3MgUHJldmVudCBvbiBQeXRob24KIFJFQURNRS52YWxncmluZCAgICAgICAgIEluZm9ybWF0aW9uIGZvciBWYWxncmluZCB1c2Vycywgc2VlIHZhbGdyaW5kLXB5dGhvbi5zdXBwCiBSUE0gICAgICAgICAgICAgICAgICAgICAoT2xkKSB0b29scyB0byBidWlsZCBSUE1zCitzdm5tYXAudHh0ICAgICAgICAgICAgICBNYXAgb2Ygb2xkIFNWTiByZXZzIGFuZCBicmFuY2hlcyB0byBoZyBjaGFuZ2VzZXQgaWRzCiBTcGVjaWFsQnVpbGRzLnR4dCAgICAgICBEZXNjcmliZXMgZXh0cmEgc3ltYm9scyB5b3UgY2FuIHNldCBmb3IgZGVidWcgYnVpbGRzCiBUZXh0TWF0ZSAgICAgICAgICAgICAgICBBIFRleHRNYXRlIGJ1bmRsZSBmb3IgUHl0aG9uIGRldmVsb3BtZW50CiB2YWxncmluZC1weXRob24uc3VwcCAgICBWYWxncmluZCBzdXBwcmVzc2lvbiBmaWxlLCBzZWUgUkVBRE1FLnZhbGdyaW5kCmRpZmYgLS1naXQgYS9NaXNjL1JQTS9weXRob24tMy4yLnNwZWMgYi9NaXNjL1JQTS9weXRob24tMy4zLnNwZWMKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTWlzYy9SUE0vcHl0aG9uLTMuMi5zcGVjCnJlbmFtZSB0byBNaXNjL1JQTS9weXRob24tMy4zLnNwZWMKaW5kZXggMThmM2U3Ny4uOTM2YTIxZiAxMDA2NDQKLS0tIGEvTWlzYy9SUE0vcHl0aG9uLTMuMi5zcGVjCisrKyBiL01pc2MvUlBNL3B5dGhvbi0zLjMuc3BlYwpAQCAtMzksOCArMzksOCBAQAogCiAlZGVmaW5lIG5hbWUgcHl0aG9uCiAjLS1zdGFydCBjb25zdGFudHMtLQotJWRlZmluZSB2ZXJzaW9uIDMuMi4zCi0lZGVmaW5lIGxpYnZlcnMgMy4yCislZGVmaW5lIHZlcnNpb24gMy4zLjAKKyVkZWZpbmUgbGlidmVycyAzLjMKICMtLWVuZCBjb25zdGFudHMtLQogJWRlZmluZSByZWxlYXNlIDFweWRvdG9yZwogJWRlZmluZSBfX3ByZWZpeCAvdXNyCmRpZmYgLS1naXQgYS9NaXNjL3B5dGhvbi1jb25maWcuaW4gYi9NaXNjL3B5dGhvbi1jb25maWcuaW4KaW5kZXggNzlmMGJiMS4uYmIwYjAwOCAxMDA2NDQKLS0tIGEvTWlzYy9weXRob24tY29uZmlnLmluCisrKyBiL01pc2MvcHl0aG9uLWNvbmZpZy5pbgpAQCAtNyw3ICs3LDcgQEAKIGltcG9ydCBzeXNjb25maWcKIAogdmFsaWRfb3B0cyA9IFsncHJlZml4JywgJ2V4ZWMtcHJlZml4JywgJ2luY2x1ZGVzJywgJ2xpYnMnLCAnY2ZsYWdzJywKLSAgICAgICAgICAgICAgJ2xkZmxhZ3MnLCAnZXh0ZW5zaW9uLXN1ZmZpeCcsICdoZWxwJywgJ2FiaWZsYWdzJ10KKyAgICAgICAgICAgICAgJ2xkZmxhZ3MnLCAnZXh0ZW5zaW9uLXN1ZmZpeCcsICdoZWxwJywgJ2FiaWZsYWdzJywgJ2NvbmZpZ2RpciddCiAKIGRlZiBleGl0X3dpdGhfdXNhZ2UoY29kZT0xKToKICAgICBwcmludCgiVXNhZ2U6IHswfSBbezF9XSIuZm9ybWF0KApAQCAtNjEsMyArNjEsNiBAQAogCiAgICAgZWxpZiBvcHQgPT0gJy0tYWJpZmxhZ3MnOgogICAgICAgICBwcmludChzeXMuYWJpZmxhZ3MpCisKKyAgICBlbGlmIG9wdCA9PSAnLS1jb25maWdkaXInOgorICAgICAgICBwcmludChzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0xJQlBMJykpCmRpZmYgLS1naXQgYS9NaXNjL3B5dGhvbi5tYW4gYi9NaXNjL3B5dGhvbi5tYW4KaW5kZXggMjBiZWRlZC4uNzJlMWVjYiAxMDA2NDQKLS0tIGEvTWlzYy9weXRob24ubWFuCisrKyBiL01pc2MvcHl0aG9uLm1hbgpAQCAtMzcsMTMgKzM3LDYgQEAKIC5CIFwtT08KIF0KIFsKLS5CIFwtUgotXQotWwotLkIgLVEKLS5JIGFyZ3VtZW50Ci1dCi1bCiAuQiBcLXMKIF0KIFsKQEAgLTE1NSwyNyArMTQ4LDYgQEAKIERvIG5vdCBwcmludCB0aGUgdmVyc2lvbiBhbmQgY29weXJpZ2h0IG1lc3NhZ2VzLiBUaGVzZSBtZXNzYWdlcyBhcmUgCiBhbHNvIHN1cHByZXNzZWQgaW4gbm9uLWludGVyYWN0aXZlIG1vZGUuCiAuVFAKLS5CIFwtUgotVHVybiBvbiAiaGFzaCByYW5kb21pemF0aW9uIiwgc28gdGhhdCB0aGUgaGFzaCgpIHZhbHVlcyBvZiBzdHIsIGJ5dGVzIGFuZAotZGF0ZXRpbWUgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlIHBzZXVkby1yYW5kb20gdmFsdWUuCi1BbHRob3VnaCB0aGV5IHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCBQeXRob24gcHJvY2VzcywgdGhleSBhcmUKLW5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkIGludm9jYXRpb25zIG9mIFB5dGhvbi4KLS5JUAotVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhIGRlbmlhbCBvZiBzZXJ2aWNlCi1jYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZSB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlCi1vZiBhIGRpY3QgY29uc3RydWN0aW9uLCBPKG5eMikgY29tcGxleGl0eS4gIFNlZQotaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sCi1mb3IgZGV0YWlscy4KLS5UUAotLkJJICJcLVEgIiBhcmd1bWVudAotRGl2aXNpb24gY29udHJvbDsgc2VlIFBFUCAyMzguICBUaGUgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgIm9sZCIgKHRoZQotZGVmYXVsdCwgaW50L2ludCBhbmQgbG9uZy9sb25nIHJldHVybiBhbiBpbnQgb3IgbG9uZyksICJuZXciIChuZXcKLWRpdmlzaW9uIHNlbWFudGljcywgaS5lLiBpbnQvaW50IGFuZCBsb25nL2xvbmcgcmV0dXJucyBhIGZsb2F0KSwKLSJ3YXJuIiAob2xkIGRpdmlzaW9uIHNlbWFudGljcyB3aXRoIGEgd2FybmluZyBmb3IgaW50L2ludCBhbmQKLWxvbmcvbG9uZyksIG9yICJ3YXJuYWxsIiAob2xkIGRpdmlzaW9uIHNlbWFudGljcyB3aXRoIGEgd2FybmluZyBmb3IKLWFsbCB1c2Ugb2YgdGhlIGRpdmlzaW9uIG9wZXJhdG9yKS4gIEZvciBhIHVzZSBvZiAid2FybmFsbCIsIHNlZSB0aGUKLVRvb2xzL3NjcmlwdHMvZml4ZGl2LnB5IHNjcmlwdC4KLS5UUAogLkIgXC1zCiBEb24ndCBhZGQgdXNlciBzaXRlIGRpcmVjdG9yeSB0byBzeXMucGF0aC4KIC5UUApAQCAtMTg0LDcgKzE1Niw5IEBACiAuSSBzaXRlCiBhbmQgdGhlIHNpdGUtZGVwZW5kZW50IG1hbmlwdWxhdGlvbnMgb2YKIC5JIHN5cy5wYXRoCi10aGF0IGl0IGVudGFpbHMuCit0aGF0IGl0IGVudGFpbHMuICBBbHNvIGRpc2FibGUgdGhlc2UgbWFuaXB1bGF0aW9ucyBpZgorLkkgc2l0ZQoraXMgZXhwbGljaXRseSBpbXBvcnRlZCBsYXRlci4KIC5UUAogLkIgXC11CiBGb3JjZSB0aGUgYmluYXJ5IEkvTyBsYXllcnMgb2Ygc3RkaW4sIHN0ZG91dCBhbmQgc3RkZXJyIHRvIGJlIHVuYnVmZmVyZWQuCkBAIC0yODMsOSArMjU3LDkgQEAKIGZyb20gdGhhdCBmaWxlOwogd2hlbiBjYWxsZWQgd2l0aAogLkIgXC1jCi0uSSBjb21tYW5kLAorLklSIGNvbW1hbmQgLAogaXQgZXhlY3V0ZXMgdGhlIFB5dGhvbiBzdGF0ZW1lbnQocykgZ2l2ZW4gYXMKLS5JIGNvbW1hbmQuCisuSVIgY29tbWFuZCAuCiBIZXJlCiAuSSBjb21tYW5kCiBtYXkgY29udGFpbiBtdWx0aXBsZSBzdGF0ZW1lbnRzIHNlcGFyYXRlZCBieSBuZXdsaW5lcy4KQEAgLTI5NSw3ICsyNjksNyBAQAogLlBQCiBJZiBhdmFpbGFibGUsIHRoZSBzY3JpcHQgbmFtZSBhbmQgYWRkaXRpb25hbCBhcmd1bWVudHMgdGhlcmVhZnRlciBhcmUKIHBhc3NlZCB0byB0aGUgc2NyaXB0IGluIHRoZSBQeXRob24gdmFyaWFibGUKLS5JIHN5cy5hcmd2ICwKKy5JUiBzeXMuYXJndiAsCiB3aGljaCBpcyBhIGxpc3Qgb2Ygc3RyaW5ncyAoeW91IG11c3QgZmlyc3QKIC5JIGltcG9ydCBzeXMKIHRvIGJlIGFibGUgdG8gYWNjZXNzIGl0KS4KQEAgLTMwOSwxNCArMjgzLDE0IEBACiAuSSAnLWMnLgogTm90ZSB0aGF0IG9wdGlvbnMgaW50ZXJwcmV0ZWQgYnkgdGhlIFB5dGhvbiBpbnRlcnByZXRlciBpdHNlbGYKIGFyZSBub3QgcGxhY2VkIGluCi0uSSBzeXMuYXJndi4KKy5JUiBzeXMuYXJndiAuCiAuUFAKIEluIGludGVyYWN0aXZlIG1vZGUsIHRoZSBwcmltYXJ5IHByb21wdCBpcyBgPj4+JzsgdGhlIHNlY29uZCBwcm9tcHQKICh3aGljaCBhcHBlYXJzIHdoZW4gYSBjb21tYW5kIGlzIG5vdCBjb21wbGV0ZSkgaXMgYC4uLicuCiBUaGUgcHJvbXB0cyBjYW4gYmUgY2hhbmdlZCBieSBhc3NpZ25tZW50IHRvCiAuSSBzeXMucHMxCiBvcgotLkkgc3lzLnBzMi4KKy5JUiBzeXMucHMyIC4KIFRoZSBpbnRlcnByZXRlciBxdWl0cyB3aGVuIGl0IHJlYWRzIGFuIEVPRiBhdCBhIHByb21wdC4KIFdoZW4gYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbiBvY2N1cnMsIGEgc3RhY2sgdHJhY2UgaXMgcHJpbnRlZCBhbmQKIGNvbnRyb2wgcmV0dXJucyB0byB0aGUgcHJpbWFyeSBwcm9tcHQ7IGluIG5vbi1pbnRlcmFjdGl2ZSBtb2RlLCB0aGUKQEAgLTM3Miw3ICszNDYsNyBAQAogaW5zZXJ0ZWQgaW4gdGhlIHBhdGggaW4gZnJvbnQgb2YgJFBZVEhPTlBBVEguCiBUaGUgc2VhcmNoIHBhdGggY2FuIGJlIG1hbmlwdWxhdGVkIGZyb20gd2l0aGluIGEgUHl0aG9uIHByb2dyYW0gYXMgdGhlCiB2YXJpYWJsZQotLkkgc3lzLnBhdGggLgorLklSIHN5cy5wYXRoIC4KIC5JUCBQWVRIT05TVEFSVFVQCiBJZiB0aGlzIGlzIHRoZSBuYW1lIG9mIGEgcmVhZGFibGUgZmlsZSwgdGhlIFB5dGhvbiBjb21tYW5kcyBpbiB0aGF0CiBmaWxlIGFyZSBleGVjdXRlZCBiZWZvcmUgdGhlIGZpcnN0IHByb21wdCBpcyBkaXNwbGF5ZWQgaW4gaW50ZXJhY3RpdmUKQEAgLTQyOSw5ICs0MDMsOCBAQAogSWYgdGhpcyBpcyBzZXQgdG8gYSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nIGl0IGlzIGVxdWl2YWxlbnQgdG8KIHNwZWNpZnlpbmcgdGhlIFxmQlwtV1xmUCBvcHRpb24gZm9yIGVhY2ggc2VwYXJhdGUgdmFsdWUuCiAuSVAgUFlUSE9OSEFTSFNFRUQKLUlmIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvICJyYW5kb20iLCB0aGUgZWZmZWN0IGlzIHRoZSBzYW1lIGFzIHNwZWNpZnlpbmcKLXRoZSBcZkItUlxmUCBvcHRpb246IGEgcmFuZG9tIHZhbHVlIGlzIHVzZWQgdG8gc2VlZCB0aGUgaGFzaGVzIG9mIHN0ciwKLWJ5dGVzIGFuZCBkYXRldGltZSBvYmplY3RzLgorSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gInJhbmRvbSIsIGEgcmFuZG9tIHZhbHVlIGlzIHVzZWQgdG8gc2VlZCB0aGUgaGFzaGVzCitvZiBzdHIsIGJ5dGVzIGFuZCBkYXRldGltZSBvYmplY3RzLgogCiBJZiBQWVRIT05IQVNIU0VFRCBpcyBzZXQgdG8gYW4gaW50ZWdlciB2YWx1ZSwgaXQgaXMgdXNlZCBhcyBhIGZpeGVkIHNlZWQgZm9yCiBnZW5lcmF0aW5nIHRoZSBoYXNoKCkgb2YgdGhlIHR5cGVzIGNvdmVyZWQgYnkgdGhlIGhhc2ggcmFuZG9taXphdGlvbi4gIEl0cwpAQCAtNDQwLDggKzQxMyw3IEBACiB2YWx1ZXMuCiAKIFRoZSBpbnRlZ2VyIG11c3QgYmUgYSBkZWNpbWFsIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsNDI5NDk2NzI5NV0uICBTcGVjaWZ5aW5nCi10aGUgdmFsdWUgMCB3aWxsIGxlYWQgdG8gdGhlIHNhbWUgaGFzaCB2YWx1ZXMgYXMgd2hlbiBoYXNoIHJhbmRvbWl6YXRpb24gaXMKLWRpc2FibGVkLgordGhlIHZhbHVlIDAgd2lsbCBkaXNhYmxlIGhhc2ggcmFuZG9taXphdGlvbi4KIC5TSCBBVVRIT1IKIFRoZSBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbjogaHR0cDovL3d3dy5weXRob24ub3JnL3BzZgogLlNIIElOVEVSTkVUIFJFU09VUkNFUwpkaWZmIC0tZ2l0IGEvTWlzYy9zdm5tYXAudHh0IGIvTWlzYy9zdm5tYXAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0MmJlN2YKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL3N2bm1hcC50eHQKQEAgLTAsMCArMSw3MjU0NiBAQAorMjE2MSAzY2QwMzNlNmI1MzBmNmE3OGIzYjE0ZmVkYmQyMDc0ODk2ZGJmNmRlIGxlZ2FjeS10cnVuaworMjE2MiA0ZGI5ZDQ2YjMwNmE5YzZlYzJkMWZlN2E3Y2MzNmVmNzE3MzQyNmE2IGxlZ2FjeS10cnVuaworMjE2MyA0YTNhNjQ4MTg1ZWY4OTY1YzM0Mjg2MGJkODQ1N2VkNmMwM2M2ZGUwIGxlZ2FjeS10cnVuaworMjE2NCA4ZGE5MjI1Y2M2MGUyZGExNjY1YTgwYWY5MDE4NGRiMGZkZGEwNWNlIGxlZ2FjeS10cnVuaworMjE2NSAxN2U0OTBiNGRjMjhiOGFjNjA1ZmExOWU0ODJjZjcyMmZlODA2NThkIGxlZ2FjeS10cnVuaworMjE2NiA1NTcwZGJiMWNlNTU4YjU1NzE2ZWFiN2QwODBhMWFmYWQyZTc3ZTJmIGxlZ2FjeS10cnVuaworMjE2NyBmYzZmY2Q3ZGY0ZjdmMmUxYzEyZjE3YWYyNDY0YzQ5N2Q2ZjZhM2U5IGxlZ2FjeS10cnVuaworMjE2OCAzNGQ2NjdkYzFhNGM0YWJkY2IxOWNkZGZkMmU5YmZkYTAxMTM5ZWQyIGxlZ2FjeS10cnVuaworMjE2OSA2ZmMxNDZiZDRmMDNjOTdkMTRjN2MzMDBiMTIxMmExMWViOWI2NzJhIGxlZ2FjeS10cnVuaworMjE3MCAzMzcwMWRiNGVhNTU5MTAwZDM3YmU0NGQyZjBkNTNlNTY4YTBlYzMzIGxlZ2FjeS10cnVuaworMjE3MSBhNzFlODk2ZWQwNDczNDIxZDg4ZmU0NTUyNjljNWE1ZTU0NzMyYTIyIGxlZ2FjeS10cnVuaworMjE3MiBiY2VhNmM4MjI5MDZjODRlZGVkYWJjYzAzZWM0ODE1OTVkZWYwYTYzIGxlZ2FjeS10cnVuaworMjE3MyAzNmEyMjBkMzczMWEwMzM0NTc4NTU5M2VjMzJlYmMzNWEyOTQ5NGRlIGxlZ2FjeS10cnVuaworMjE3NCAwNmJmMmFmMDBlM2E5ZWI1MTUyOWI2MThjYmRjMGJiY2YxYTRlOTY0IGxlZ2FjeS10cnVuaworMjE3NSA4NzRjOGZkNTY1ZmEwOTQ2MWMyMTM5OWFmOWVkZTEyMzRlYTEwZjcwIGxlZ2FjeS10cnVuaworMjE3NiBlOWUwNWZiYmE3YTQwMDM0ZjgyMTFjOWQxZDEyYjI4ODc5ZjUxZmNmIGxlZ2FjeS10cnVuaworMjE3NyAwODA4ZTVhYjc0M2FiYjhiMDU3YTU1Zjc2NTFhYzExOGM4M2Y1YjBjIGxlZ2FjeS10cnVuaworMjE3OCBhNWYwMWE5MTc0MDkyZDI5ZWJhNjM3N2MyMzY5MTg3Y2RiM2ZkN2Q1IGxlZ2FjeS10cnVuaworMjE3OSBlOWJiZTRhYzMyMzg5ZThhN2E2YzBiNGFlZmFmNGVhZDMwODhmMjFhIGxlZ2FjeS10cnVuaworMjE4MCA3MWFjMGUzNzIzNmE1NGUwYTY3ODhiMzg0NjU1ZDhkODIwOWQ4NThhIGxlZ2FjeS10cnVuaworMjE4MSAxMTg1NDUzMTJmM2JmZTEwM2JjY2ZiMTAzZjRkZjJlZWIwZDBlYjgzIGxlZ2FjeS10cnVuaworMjE4MiA5NjE2OTZlZjNhYjdlNDNjOTlmNWM3NjBmN2M2MjFiNmExMTlkYzk4IGxlZ2FjeS10cnVuaworMjE4MyAyZDNlYjcxN2EwMGQxMDNkNDM3NTk0ZTA4MTkzZGFlNjAwMDYxZGE5IGxlZ2FjeS10cnVuaworMjE4NCAwODU2MmRlMDE2NjgwMGUxYzZkNWQ1MTVmNzQzNjliMzk5ZmQ4Y2FhIGxlZ2FjeS10cnVuaworMjE4NSA2NGE2OWQ2MTIxZTBkMjA2MmYyNmE3ZWNhNjdlOWI2YTQyZGNhMjdiIGxlZ2FjeS10cnVuaworMjE4NiAzMjYzOTg3OGQxNmI2MDQ4NzUzODhlMjI5OTYxMWJiZmM1MTg5NjI2IGxlZ2FjeS10cnVuaworMjE4NyA0NWFlYjJlZWFkNzllZTdmYTM2ZTQxNjZkZWI3NTM4NmMxM2UzNDFkIGxlZ2FjeS10cnVuaworMjE4OCA4MmM3YmFiNzhiYjEwYTcwNmY1ZDUyMGIxNTUwZTcyNGI5NGFhMzhjIGxlZ2FjeS10cnVuaworMjE4OSBlNWM1MGM2ODgxMTdjNmU1YmQ4OTU0NjBkYWNlNmM5Y2JmNTgxYWZkIGxlZ2FjeS10cnVuaworMjE5MCAzNDJhN2M2MWMwYzNjMGZlNDgxNGQxYWQyNGU3NzE0Mjc3MzgxNWIxIGxlZ2FjeS10cnVuaworMjE5MSA4NmUwZTIzNTBiYTExNzQ3YzRlMGZkY2U5N2JjN2M5YmM2NDg3NDFiIGxlZ2FjeS10cnVuaworMjE5MiBjNDg3ZGZjMzA2NjMzOTg1MDg1NGZiODU4YzZhODMzMDU5YTliYzc4IGxlZ2FjeS10cnVuaworMjE5MyBiNjQzZWFkZTY1NDQ1OWY4N2Q1NzJkNmI3OTM4OTZkOWIzYWRmODQwIGxlZ2FjeS10cnVuaworMjE5NCBiODA3YzkwYzRhNjgyMmQxY2I4YjM5Njk5MWNhYTgwODViYjMyYjRlIGxlZ2FjeS10cnVuaworMjE5NSAxZDIyOTAwZjc3Yjg1M2JlZTA2ZGQyNGExYmYxZmRmNDUxNWI0OGJjIGxlZ2FjeS10cnVuaworMjE5NiBkYTA2YTI4MmI4ODA0ZmE0N2ZmNGMzYzRiZDkyYmE5ZmI4ZWVhOTI5IGxlZ2FjeS10cnVuaworMjE5NyBhMjI0MGNlOTFlNTIwNjFiNDMyZjk3OTU3ZjkyYmY3OTc4NTM0MGFjIGxlZ2FjeS10cnVuaworMjE5OCBjNzk1ZmRhY2VkOWI4YTI4ZDk4MzMyNzc4NjhiMWY3NDYxYTA5NWY1IGxlZ2FjeS10cnVuaworMjE5OSAxMGUxODIxYzM0NWNhMmQxMzc1MzVhNmMxY2Y1ZWIwMTI4NmZjZDdlIGxlZ2FjeS10cnVuaworMjIwMCAxOTA1ZjgyMTM5N2IwZjA5NDEwMTE2MDhlNWI0NmRkMWM5ZTM4OWU0IGxlZ2FjeS10cnVuaworMjIwMSBmMjhhYzdmNjIxYzc2MDc5Nzc0YzMwMDE3YjI5MDEzOTY1ZDEwNDA5IGxlZ2FjeS10cnVuaworMjIwMiBlODBlZmVhYjQ5YjMyYzE1YWM5N2IyNGQ0ZjZlOGZkZDVjY2YwYTk1IGxlZ2FjeS10cnVuaworMjIwMyA0ODM1YzJkMzhiODRlNWZiNTU4MDM2ZDQ3YzU4NzFkZDk2NjMzOGI3IGxlZ2FjeS10cnVuaworMjIwNCBlYTIxOTgyYTE1MzI0MjVmODJlYzVhNDM0NmNiODQxOTE3YTcxZDk1IGxlZ2FjeS10cnVuaworMjIwNSA0ZDNhMjhkZmZjOWI5NWQzOGI5MTJjYjY5NTc0MmRlNDBkOTU3NjM1IGxlZ2FjeS10cnVuaworMjIwNiA3ZmVjYWJiMzI3OTE0NTA0NTQ0NjE3ZTViYWNkMWMwNWExMmU4NjlmIGxlZ2FjeS10cnVuaworMjIwNyBjZTZmMjQ3MTE1MDRlNTk1NmQ2NjAwOTljOTllY2NiOTUxYzBjMTQ5IGxlZ2FjeS10cnVuaworMjIwOCAwNTA1N2UzNjYwZjgyY2U4ZTgzZThjMmQ3M2QwYjU4NDk0ZjJiZWE3IGxlZ2FjeS10cnVuaworMjIwOSBiMGU3NjIyMWU3ZmZkYmNmZTk4YTQ0YWRmYWU5YzIzNTA5M2M3Y2ViIGxlZ2FjeS10cnVuaworMjIxMCBjM2ZhMmQxZjMwMzU4Njk5ZWUyNGUyYTVjM2MwMTE2NjJmNzVjMzc2IGxlZ2FjeS10cnVuaworMjIxMSBiOTQ4MjJmNTQ5OTEzMDRiNThhZGJiZWEyMzg2OWM5OGIyZjZmM2ZlIGxlZ2FjeS10cnVuaworMjIxMiBlYmNiNjI2Y2ZkZGZiOWYxYzdiMTg2NzhhY2JlYzQ0ZWI5N2FiYmQ3IGxlZ2FjeS10cnVuaworMjIxMyAxYjMxMDc3YWM2NDMwN2FiNTQ1NTI2NTFhZWM2Nzg3OGQ4MGQwYmQ3IGxlZ2FjeS10cnVuaworMjIxNCBhMWU1MGE4ZjQyZTIzY2ZhYjY0YmUzZTk5ZDhhNTMzNWVhMzNhOWM1IGxlZ2FjeS10cnVuaworMjIxNSA0MDJmNTcwOGIxMDdiMDVmODExZTVmODU0Mjg0MmU3MTc5OGRhNmM5IGxlZ2FjeS10cnVuaworMjIxNiA3YTAxZGJjZWU5YmMwMzEyZjVhMzE3ZmIyNDI5OTc1MWU3OGRkZGMyIGxlZ2FjeS10cnVuaworMjIxNyBhN2U4ZmI3YmI2YTI4ZWIxM2MwNTZmM2M2MmE5NmNhYWM1ZjY0NGQ0IGxlZ2FjeS10cnVuaworMjIxOCBhMWMyYjRmYWQxMzZjZmIxYjIyMzE1MGE0OGMzNDgwZDYzZTJkZWNiIGxlZ2FjeS10cnVuaworMjIxOSA0OTc1Zjc5OTBiMmIzNWM3MGQyMzUwNWVjZWE1YzIwZWVmY2QxZWQ4IGxlZ2FjeS10cnVuaworMjIyMCA0MzNmNTJkMWQ5NTg3NzY3MDNhNzNlODBlNTU2YmVlYjBlNDdmNTQzIGxlZ2FjeS10cnVuaworMjIyMSA0ZjU5M2IzOGQwNjE1NTc5YWNhZDRjM2M5Y2IzNTBlYjYwMGRkYzRlIGxlZ2FjeS10cnVuaworMjIyMiA1YzRkZDkzNDhlODExMzMyMGM0ZjdiNGU5ODMzZjMyMDVkZjE4YjgwIGxlZ2FjeS10cnVuaworMjIyMyBmZmZkMTI4NmM4ODI2NzkzNGQ3NDg2ZTRjNGU0NjdkNTdiMDg2NTliIGxlZ2FjeS10cnVuaworMjIyNCA2MTMxMTUwNmYyY2QwOWJhZGQ4Yjc5NDU2YWY5Nzg5MjE0ZWNiMGY0IGxlZ2FjeS10cnVuaworMjIyNSBhMjJkZjUyZDc3NDlhM2E4YzA3NzBhODIxM2RlNDdiMmNhNThmZWNmIGxlZ2FjeS10cnVuaworMjIyNiBhNzJjMGE3ZGM5OTNhYWUwNWU3MDg1Y2QzODY3OGI5ZGJiZWIxOTgxIGxlZ2FjeS10cnVuaworMjIyNyA0NmNiMTRhZWMxMGE4ZDZlMzY2NWI3MTg4MDcwYjY3ZTg5OWFkNjM2IGxlZ2FjeS10cnVuaworMjIyOCBmOThlNDE3MTFkMTc3OTAwYTk2ZDU3NDViYTkwY2M4OGJkODJkN2Q4IGxlZ2FjeS10cnVuaworMjIyOSAzNjUwMzczNmZkYzIzOTM0MDZjMDg2MGM4MWEyMDIyMmQ3M2NlZTU5IGxlZ2FjeS10cnVuaworMjIzMCBjY2NkNTM0ZjIyODA3NGYyNjc0ODQ4NDIyMWQ2OWYyZWU3NTJmMmIzIGxlZ2FjeS10cnVuaworMjIzMSBhMzZjMzQ4YThlMWEyOTE1ZDY5YjdkZDIwMjE2M2ZkYjdlNTk2Yzg4IGxlZ2FjeS10cnVuaworMjIzMiBhYzQ1MjJlOTljYTk0Mzc3YTY1YzY2Y2ZkYzI2Njg0ZmEwZmRmYmViIGxlZ2FjeS10cnVuaworMjIzMyA1ZThhMGI0MGE0YmRmMWU4M2M1ZDBiZjM4ZWZjNzc0NWIwNmVmOGQ0IGxlZ2FjeS10cnVuaworMjIzNCAzMDI4YWNhYTU2YjA1ZWQwZTExZTE1NmU4MWI1YTA2NzE5MTVjYjg2IGxlZ2FjeS10cnVuaworMjIzNSBiYzI0NGRmMjAyNTE2YjVhNTU1MTNlNDYzYjJmNjM3ZDE4ZjU4MDU1IGxlZ2FjeS10cnVuaworMjIzNiA4NWVlZDA2MGE0NmNlMjY2NDlmZDY4MDJjZmJkNWVlYzYxOTEwNjg4IGxlZ2FjeS10cnVuaworMjIzNyBlZGU4Njc5OTcwNWJhMTRiYzQwMjEzNTcxZGZlMmExZDVmNTZlOTA3IGxlZ2FjeS10cnVuaworMjIzOCBmNzJlMGM2MjM2OWUyNGNjYzBlY2RhYjc5MmM5N2EyMWIyMzMyYmFkIGxlZ2FjeS10cnVuaworMjIzOSBiMWZiNGUxZjZlNTE2ZDI4MGM1NTUwMWIyMzQ0NDk4Y2E2MjdmZWJjIGxlZ2FjeS10cnVuaworMjI0MCA2YzQzZTU0NzZkZTY5MDQxMjY5OWIzYmRlNmI1MDdiMWM0ODgwNGE2IGxlZ2FjeS10cnVuaworMjI0MSBmNDcxMDFkYzNjMTg4ZjI0ZjliOTcwNWRiM2I2NDg5MTkxNGJkYjgyIGxlZ2FjeS10cnVuaworMjI0MiBkZTM0ZjRhNGQzNTNiOWY1Zjk5MWFhY2E5OGM4M2ZhYWM2ODFjNmY1IGxlZ2FjeS10cnVuaworMjI0MyA1NTRhYzY1OWIyY2I5NTI0ZWY0Zjk2ZWMyNzU2ZGM0Y2EwZmEwZjliIGxlZ2FjeS10cnVuaworMjI0NCBmNmJjZjNjMWQ3MTRlNzg3NTM1NmNhMTJjMzJlZTVmOTc1ZjRlZDhhIGxlZ2FjeS10cnVuaworMjI0NSBhNzljYmIyNjU1YmFhZjU0YWRkYzIyMDMzNTAwMzY0NzliZGNiN2UzIGxlZ2FjeS10cnVuaworMjI0NiAwNmM5MmY0OTFmNTg4ZWQ5YWJlMGYyZDRmMTUxMjA2OWEzMGMxOTAxIGxlZ2FjeS10cnVuaworMjI0NyBhNjkzNDM4MGM2ZTc5Yjg3Zjc3NjJiMWQ5NDMzZDBlMGE4OTM3NDUyIGxlZ2FjeS10cnVuaworMjI0OCBlZjI0NDBmMjRmMTAyYzY3N2EwMmQ0MDc5ODhkZDg1ZjVkYTUwY2FiIGxlZ2FjeS10cnVuaworMjI0OSAxNmU4YzVkMTY0OTM1ZjNjNmE5ODllZWVhZGYyMmIwYWI0ZGMyMmVhIGxlZ2FjeS10cnVuaworMjI1MCA1ODQ3ZGYxMzk5MWRlNmE4MzY0ODQxMDc1NTNmNGU5Y2VjY2E4YTE0IGxlZ2FjeS10cnVuaworMjI1MSA1Y2I4NDNiYzg3ZmMwODY1NDZmYWJmNmI4ZWMwM2VlZDMxZTIwYThmIGxlZ2FjeS10cnVuaworMjI1MiA1YzM1N2QzN2IzMjczMWM4ZDAyMDQ1NDk3MDIwODU4Yzc5YzU3MTM5IGxlZ2FjeS10cnVuaworMjI1MyAwMDIwNjZhODM5YzUxY2MxODRhMGM2ZTY2OWVjOWQ2MzQyMGNkYTY3IGxlZ2FjeS10cnVuaworMjI1NCA5ZTA1MWZjNzA3M2U3N2I5ZTE1MDM0YTE5ZTU0N2VmZTJiODVjNjZhIGxlZ2FjeS10cnVuaworMjI1NSBkYWM4NjI1YzhkOWIwMTQxNzljZDU4MzM1OGI0ZDBlNGUyNTAyNTY3IGxlZ2FjeS10cnVuaworMjI1NiBhNWJmN2Q1OTU5Y2UwNTBmMmIwNTFjMTJlODE4MDg5NWU3ZTZkOGE5IGxlZ2FjeS10cnVuaworMjI1NyAyN2E1YjA4YzNlNzQyYzYyYTE1YjY4MTU2ZmUwZDQ4OGMwOTRhZDQyIGxlZ2FjeS10cnVuaworMjI1OCA2Yjc1ZjJhMzAwMGQ0MDY1MTQ2YjJkYWZlNmQ4M2QzMzA3MWU4ZDM1IGxlZ2FjeS10cnVuaworMjI1OSA0NTVkNjVhMTFiMTNlZDM3NzkyZTFmNGZmYmZlM2JjZGZhYTc4M2VlIGxlZ2FjeS10cnVuaworMjI2MCBlMGM4ZWZlZTc2YmQ4MTU3ODRjODEzYzY2YTJhMTA0NmU1YTBiZjVhIGxlZ2FjeS10cnVuaworMjI2MSBhZDE0YWE4YTI5ODQ0MzIzODRmN2FmMjFkNDUyYmU1YWFiYTZmMThmIGxlZ2FjeS10cnVuaworMjI2MiAwOGU1NWRiNmY3OTZhMjc2ZWNkMWMxNjgzYTUwMmJhZmQ3MjQ3ODcyIGxlZ2FjeS10cnVuaworMjI2MyBmMmNhY2I5MGM5MTdjOGQyOTI3OTk0Y2MyNDMxMmE2MjFkYjEzZjgzIGxlZ2FjeS10cnVuaworMjI2NCAxMjI5YmExMjRlMGJhOGVjZTkyMmNlMTRjMGY0YWFiZGJkZTFkM2YwIGxlZ2FjeS10cnVuaworMjI2NSA0ZWM4YzI2M2FiNDhiNDlkNzcyNzAxMWM0YTg2YzdiMTA5YjBmYTU4IGxlZ2FjeS10cnVuaworMjI2NiBiNGQ1ZmRjYmY4M2M2OGY5MTNhZjRjMTc1YTE0M2M4YWJmNzc1ZmVmIGxlZ2FjeS10cnVuaworMjI2NyA2NDM3M2M3OWMwOTk5OTBjYjY5MjYyZDE4M2E0NWU0ZGJmZjQyODQyIGxlZ2FjeS10cnVuaworMjI2OCAxZTAwN2RjY2IyNzA5YjA4MTFlNTNiZjA3YzdiODc5NzkxYWM5Nzc0IGxlZ2FjeS10cnVuaworMjI2OSBhZTliMzY2YzU3NWQ1NTdlNmY4MDZmMGQxNmU1NDc4NTcxNzU0YzFiIGxlZ2FjeS10cnVuaworMjI3MCBmNjk0MDM2Yjg1NjFlYjFiM2NiNTllZjM2ODBkN2U5NmRkZmQ3MWEwIGxlZ2FjeS10cnVuaworMjI3MSBlNGIxZDllNjk4MGE0MzhmOTAyZWVmOTAwMzY4YzJlNmEyZDUwYTY0IGxlZ2FjeS10cnVuaworMjI3MiBkMDhmNzUyYjU2YzA2MTQ2ZDViYWNmYjJlZjc2YzEwMzZhM2NkYzQ5IGxlZ2FjeS10cnVuaworMjI3MyBkOGExYjY0NTYyMTJiMjhiNjEyNjRkYjAyZDY1YjJjNWY2ZGU3MmM4IGxlZ2FjeS10cnVuaworMjI3NCBkMTY5NjExNjczNjVmZmZmODE3YmI4ZTY4YTIxMTFmZTUzYTZjYzU4IGxlZ2FjeS10cnVuaworMjI3NSAxZWZiOGVkNmFmZDMzYTAwNmM1Mjk5ZDNhNDE1YWNlMTJjOTg2YTg5IGxlZ2FjeS10cnVuaworMjI3NiA0MDk0YjQ2ZjA0YzhlYWYzMjViM2Q1OTllNzMyYTViZjlhOGMzYTdiIGxlZ2FjeS10cnVuaworMjI3NyAwYTAyY2E5ZGNkNmUwMjJmMTBhMWNjNTUzN2M3OGFhNzEzMjRhMzIzIGxlZ2FjeS10cnVuaworMjI3OCA3ODczM2MxYzZlMzYxODdhZjU3ZjRlYTI1MTcwYWQwN2QwODEwYmI4IGxlZ2FjeS10cnVuaworMjI3OSBhODA5MDEzYzJhZjFlZjNmZDY5ZmY1MWI0OWMyNTYzYWY3YzMyNzA1IGxlZ2FjeS10cnVuaworMjI4MCA5ZmVlMWNhNmM4ZmVkMTU3NzBjZjA2ZjQxODc1ZGZmYWU5YWVkNDJhIGxlZ2FjeS10cnVuaworMjI4MSBjOWE1ZmUxNjYwZjUxOTg1ZTI2OWJlNDkyOTQ2NGU1YzRlYTJlNWFkIGxlZ2FjeS10cnVuaworMjI4MiAwYzI1ZmFmNGE2YTQ0NTA4NWM0YjdhOTg1YjdhNDMwMGM5MzljZjcxIGxlZ2FjeS10cnVuaworMjI4MyBiMzgwM2ZkM2NiMmM4ZDkwOTMxMzZmNWExZDJlYzUwZjk4MWI0MzEyIGxlZ2FjeS10cnVuaworMjI4NCAyMjcyN2I0Mzc4MWU3YzUzZGJkY2Y1MmYzOGFiZmQwOWQ2ZDA4MTRmIGxlZ2FjeS10cnVuaworMjI4NSBhOGQwMzNjNmZiNTRhM2VlYTgwZGUwYTI5NTJjZjVhOTgwYjNmODQ3IGxlZ2FjeS10cnVuaworMjI4NiBmNzFkNmEwOTZiMDIxOGEyNjcyN2JkYTBkNGQzZDVhY2JmMzUyM2RiIGxlZ2FjeS10cnVuaworMjI4NyAyN2NjMGQ4MjM3NjYzYjc1ZGEzODcxNTQ2YjIwM2Y1Njg1YTQ3YTQ1IGxlZ2FjeS10cnVuaworMjI4OCBkMjE0YjVkMjFkZjhjNWFjZWNlZWU1NmJlMTQ4MTg0NDVmODA5ODMzIGxlZ2FjeS10cnVuaworMjI4OSAzYmVkNzZjZGFjMGM0NjU1Y2Y4MDI1YmE2MTIyMWYzZWNjZDdiNjlmIGxlZ2FjeS10cnVuaworMjI5MCBlZmQ5MDA0OTdmNGY4N2Q3MTdkMTM3ZGI1OGFmOTk1ZDZhMDNiMTRiIGxlZ2FjeS10cnVuaworMjI5MSA4ZjIxNGQ2MTdhY2FiODBmMTY2N2MxMDJiNmZlODVmNjgwYmNlMGRiIGxlZ2FjeS10cnVuaworMjI5MiBhZDRjNWE1ZWYwZmZlZWU5YjlhYTg4NWE0MTZlMDlmYTQ0OTI1MWIwIGxlZ2FjeS10cnVuaworMjI5MyA2NWVkZGUwMjJkNzFlZTM4M2IwYTU0NmM3Mjk3YzkzODk4YTZlMWIxIGxlZ2FjeS10cnVuaworMjI5NCAwNjg4OTY4NWViNjIwMWQyNGU5MTNiNGMwNTRjMWYyMjc0ZDRkMzVkIGxlZ2FjeS10cnVuaworMjI5NSA1ZDVjOWIyZGE1NjIyMTgyY2FmY2YxNzc3YjhhYTc2YzcwYWI3NjIwIGxlZ2FjeS10cnVuaworMjI5NiAyNmNjYmMzZTQxYzQ2MWFkNzlhNDJlMjAxMzM5Y2I5ZjlhMmQ4OWM3IGxlZ2FjeS10cnVuaworMjI5NyA2NTIzYmQyOTU0ZjA0MzZmYjhmNmNiNGFhYWZhMzAwNTA3ZTNhYjI3IGxlZ2FjeS10cnVuaworMjI5OCA4MmVmOTRiOGI5MDJlMzQ5NGIzODYwMWQxODQ0YmI5NTlkZTMxNjc3IGxlZ2FjeS10cnVuaworMjI5OSBiYjI0OTQ4OTU3ZTNjYTk2ODc2ZTkwMmVkYjI5MGFiNDY0YmE2YjZlIGxlZ2FjeS10cnVuaworMjMwMCBjMjk0YThjYWViYjliYjNlZTlmODkyYTM3MmQ2NDU3NTA3MDQ2ZjUzIGxlZ2FjeS10cnVuaworMjMwMSAzYjgwMjNiMGJiNDhiMTA2NmQ0YTMzNDA3MzE3MzA0ZDM3MjllMzkxIGxlZ2FjeS10cnVuaworMjMwMiBiZjVhODUzOWQ4YmE3Zjc0ZjAzNDIyYzViNGY2NjkwNzBmYjk2NTIxIGxlZ2FjeS10cnVuaworMjMwMyBjN2VhNjA0OTFlNjgxZTliOTFmNzZhMDEyYzRkYzk0NGI1ZmZmMmQ4IGxlZ2FjeS10cnVuaworMjMwNCAxODcwZDgyZGUwNjk5YWZiYTg5YTE5NDY2YjJmOWMzNjUxYjRjYzlhIGxlZ2FjeS10cnVuaworMjMwNSBjNzBlZWZlNDgwMjkwYTFkODBkOTg3YTJmZjU5OWEwZWFjYmViOTkwIGxlZ2FjeS10cnVuaworMjMwNiA4NTNiNzM2YTZhOWVlMzhlMzMwMWQ0MzBjMTUyYWU3NThlMTYxYTQwIGxlZ2FjeS10cnVuaworMjMwNyAwZjU5ODk5M2Q5OTg2ZjRhZTRlNmRkOWEzNDkxZDUwOWIzMDk4ZTgzIGxlZ2FjeS10cnVuaworMjMwOCAzNDk5YWQ4NzgzOWFmN2ExYTRmNzFjMTVmODlkMjBhYjg0Yzc4ZTcxIGxlZ2FjeS10cnVuaworMjMwOSBhMGM1ZjJhZjJlMGNhZDVjNGQ0ZGU0YTg5M2NhNWE1ZmU3Y2U3ZDQxIGxlZ2FjeS10cnVuaworMjMxMCA2MWM1MjYwYzM2NGYyNjBlNGM5YzljNTlkN2Y5ZDJhN2Q0NDM2YTFjIGxlZ2FjeS10cnVuaworMjMxMSBjNjVlYmE4MTk0YzdiNDAzYjllNzJlYWFjNDUwZTJkYWRhZjIwMzc3IGxlZ2FjeS10cnVuaworMjMxMiA5ZDRjN2RlMGRlZjRmZTY3ZWY1YWQ1ODI0NGM3Njk5YjUxODhiYTFkIGxlZ2FjeS10cnVuaworMjMxMyAxZDQwOTRjN2Q1OGI4YzczMGYwMzRiMWIzMTM2NTE4NTYyOWRhNTYzIGxlZ2FjeS10cnVuaworMjMxNCBlNTc2NGEwZDJkMzI5OWRhNjYxNGVlZjE5MjJjN2Y0MTc3NjY1ZmNlIGxlZ2FjeS10cnVuaworMjMxNSBmMmVmY2VhZjczY2M5ZDk5OWI4ZGY1M2JmZjdjZDIxOGEyZTYzMjQzIGxlZ2FjeS10cnVuaworMjMxNiA4OTZjODI1ZjJmNzFiZGQyYWMwZGYxMmI1YzZmZjE3OWUwNmNkYTI1IGxlZ2FjeS10cnVuaworMjMxNyA0M2NhYmFjNTAyM2QyYWMyN2Y1YzlhM2M4MzVmMWFjNjY4YzQzNjgzIGxlZ2FjeS10cnVuaworMjMxOCA0N2NjMGNlNzk5OWM3ODdmNmU5NGJkM2EwM2UxOWMwOTAyMjI0OGZlIGxlZ2FjeS10cnVuaworMjMxOSBjODY1OWY4YTVmNjM3ODRjNWFmZTQwMGRjMTdiNWZjMTkyZDAwMTk1IGxlZ2FjeS10cnVuaworMjMyMCA0MWYzYzY2YjEwZmQwYTY1Y2FiYzQ4YmZhMWM2YWViMzIwZDQxMzU1IGxlZ2FjeS10cnVuaworMjMyMSBhZmE0OGE5NmE0NDQzY2I1ODU3MTM4Nzk5ZTFkMDljNWRjNGJhZDY4IGxlZ2FjeS10cnVuaworMjMyMiAyNWE3ZmI0NGUyOTc4NDQ5ODEyMzU0Y2IwN2EyYjg2MmFmMzJjZWUyIGxlZ2FjeS10cnVuaworMjMyMyA3NjE4Njk3NjZlNDUyOGU2OGYxZDExNDYwNmViYzkxZWVjOGE0ZWZhIGxlZ2FjeS10cnVuaworMjMyNCBlZjliNGJlNWEzZmVhMTAyOWIzMWI1MTU0MjQ2OWRlMGIyNjhkZjBiIGxlZ2FjeS10cnVuaworMjMyNSA3Y2U5MWNmYjdhYzQ1MTJkNDkwNzczZDgxNzQ5Mzc1YThiYzMyOTgyIGxlZ2FjeS10cnVuaworMjMyNiBhNDU0N2FmMjk2NzExYmFhNzQzNzcyMjkyYzc0MTg0YzlkMjc4NWM5IGxlZ2FjeS10cnVuaworMjMyNyAyODkyM2U0NDI1NGNlYjc2Nzg5N2Y0NWRkZWRlNWUyMjllZjU0ZWQzIGxlZ2FjeS10cnVuaworMjMyOCAzZmEyYjE0YmUyNzA5MTE5MDc5ZjdhNmM2MzBlNWIxMzVkNWRlOTA1IGxlZ2FjeS10cnVuaworMjMyOSA2NTg1YWFiZTE5NjhiYTU2MThmMThlYTBjOWRhMWM5Nzg4YjM0ODlmIGxlZ2FjeS10cnVuaworMjMzMCAxZWQ3ZjZmNjU5ODM3MWViZDIzNTBlMTY4MTA4MWIyNjdhYzMwMWU2IGxlZ2FjeS10cnVuaworMjMzMSBlZTBhMzJmZDQ1Njc4NDk1YWMwMjMzY2FhZjZlZWNkMGM4ODRlOThiIGxlZ2FjeS10cnVuaworMjMzMiAwY2VlMDFiNjhkOWM4MjRkMzMzMjJlMzYwMjRhMDJmNGE3NWU3ZTEwIGxlZ2FjeS10cnVuaworMjMzMyA1Y2YzYzM2ZDAyZWE0Y2FiMjMxYzI5OTdlYWIyOGZlMmM3MjZiMTFmIGxlZ2FjeS10cnVuaworMjMzNCA0NjU2NDUyNDM2ZTE5YzQxMmU4ODA4ODM0ZTMxODVhOTY1MDA5NWU0IGxlZ2FjeS10cnVuaworMjMzNSAyMGZlZTRlMmVlY2RjOTVlZTAwYjJlYTNjZDJiMmVlOTViNWU1YjRkIGxlZ2FjeS10cnVuaworMjMzNiAwNmNjM2IwMDY3MWMzZTIyMTU3ZTI3ZThhN2Y2ZTg2ODJhNzZhODQ5IGxlZ2FjeS10cnVuaworMjMzNyAyMjkxNjhhMmZlMjg2YThiMjVkODNkODA1NjNkNzVmNDYwYTI1OWEwIGxlZ2FjeS10cnVuaworMjMzOCBiZDQ5Y2E2YzRhZGQyNDNjODhhMDk0MmFiZjVmMTNjZWYxMGZjM2QxIGxlZ2FjeS10cnVuaworMjMzOSBmYjYzNjdkNWZmNDY0OTA1NGU4Nzc5N2Y0MTIyMzQ4OTMwNTkxM2E0IGxlZ2FjeS10cnVuaworMjM0MCAwYzM1NWU5ZWU4NTQ1OGExZDFhZWU4YmFkZWFkYjgyZjVhYmFkYjRmIGxlZ2FjeS10cnVuaworMjM0MSBhNDA1YTMxMjQyZTdjNGI0ZDJlZDBlNDZiZTVmNGY5MGEzZDczOGNhIGxlZ2FjeS10cnVuaworMjM0MiBhODIzNjAyYzIyNzQxZDVhYjljNDc4YzZmNWJkMTkxN2MyMDQxNWVjIGxlZ2FjeS10cnVuaworMjM0MyA1OWZmYjZkNGIzNGM3NjczY2E3NGFmZGE4MmFlYTYzZmQ0YmNlZDc0IGxlZ2FjeS10cnVuaworMjM0NCBjOTE2OGFmZTIzZGRmNjljZGY1ZjAxNmM3MzFlZDNjNGNhYmNmMDE0IGxlZ2FjeS10cnVuaworMjM0NSAxYjA4ZGY0MTU4N2I4NTVmNGM2MjViOTIzYmJmZmQ0NjI3NTRiNTk0IGxlZ2FjeS10cnVuaworMjM0NiAzMzQ2NjI2OGI2MzcxZWE1ZTkzYzkzMWQwY2UzMzU0MGQ1YWUyZThkIGxlZ2FjeS10cnVuaworMjM0NyA4OTExNWU3NTM0ZDU4MGUwYjhkMjU4MWM4YzI0ZDAwNzkxZGIxYThkIGxlZ2FjeS10cnVuaworMjM0OCBmNDdkNWU5ZWEyNjRlZjkzZDM1ZmQ5YjQxOTQ4Y2QxNDJiYTcwZDQ3IGxlZ2FjeS10cnVuaworMjM0OSBkODE4MThlNjI2NzFhNjNlNTU1M2M5OThjYzYxYmRmYjM1OTEzNDZhIGxlZ2FjeS10cnVuaworMjM1MCBmZjBkYWUxZjRkYjYyNWJmMTMxYmViN2I2Y2Y3M2YxM2FlNTdjNWZhIGxlZ2FjeS10cnVuaworMjM1MSBiNTBmYTZkNTg3ODZkZGJkNDczZGVjZDk1ZTYwNWI4OWUwNGJjNDhjIGxlZ2FjeS10cnVuaworMjM1MiA1ZmZkMzcxYjc4NDFkZTY1MGMyYmZhYzEyN2YwNDBiOWZiNzgyYTk3IGxlZ2FjeS10cnVuaworMjM1MyAzMmFlNGExYWFiNjg5YWVmOGVlMDkwYzRjMTg5MTZkYTc4ZTIyZmRiIGxlZ2FjeS10cnVuaworMjM1NCA1N2YzZmZjN2IxYzQwNTQyNTE5OWViN2ZjMmQ4MzRkMzg1NzgyZTNkIGxlZ2FjeS10cnVuaworMjM1NSAxNDVmOWUxNDU5NWY0YmM2MmIxZTc0MjA3YzZkNTk2MzZhN2U5N2UxIGxlZ2FjeS10cnVuaworMjM1NiA0NWY0M2Y3NTVlNWM1M2JiNGZlY2M4NThhNzU1NDIzZDgyZTU4Zjg5IGxlZ2FjeS10cnVuaworMjM1NyA0OGZjMGI4ZjMzZDkwOWI0NDNmZDgwYjgzM2VhNWZiNGM1NTNlYTUwIGxlZ2FjeS10cnVuaworMjM1OCA0MjNiZTg3NmRjY2U2MjI1NzBjNTc5MzE5OTQ5NjY4MTJkMTE0ODMxIGxlZ2FjeS10cnVuaworMjM1OSA2NDYzMTZjOTk1MDc4ODhjZTkyMjZmZTdlNjc5N2ZlNzY4ZmU1M2YwIGxlZ2FjeS10cnVuaworMjM2MCAwYTNlMzNjZmQ0YTkzMzNlOWQwNmQ0NzQ2M2FlZGZiYTA2NzQwZTlhIGxlZ2FjeS10cnVuaworMjM2MSA5ZDAxOTY1ZjRmNDhhZmQ1OGU5ZjJjOThlYzM1NWZkZTZiODU2OWNkIGxlZ2FjeS10cnVuaworMjM2MiAzMTBmOGM5MjQwNzMyZTBhNzM2NDcxMzM0NjQzOWM2ZjUxYzI5N2VmIGxlZ2FjeS10cnVuaworMjM2MyBiZmZmYzdlMGZjYzNlMTkwYTEzNTUyODhlOGFkNzFhYjEzYTZjOThmIGxlZ2FjeS10cnVuaworMjM2NCBjZWIzNmVjNjE5OGRmMzk5YzE5OWQ3ZDAxOGViZDE2NGJhNmY2Nzg3IGxlZ2FjeS10cnVuaworMjM2NSAzZDdkYTYxNzRlMmU1ODUzZmM1MmVjYzhkZmI1YTg5MGQ1NTQ3ZGMyIGxlZ2FjeS10cnVuaworMjM2NiA4ZmZkYTg0NmQ3ODg5ZmQ5NzNjYTkwMDUyNGU0YzkxNzEzMTM1YWVjIGxlZ2FjeS10cnVuaworMjM2NyAzY2M1NDk3MmFiNTIzMDZhZjU5OTI3ZDViYTA3MDIyYmI2NWQwNGE1IGxlZ2FjeS10cnVuaworMjM2OCA5YWIzMjk2OTdkZGE1NDc1MDk4ODg1MjQ1MzBlMDI4MGM1NDIwMGZmIGxlZ2FjeS10cnVuaworMjM2OSBmMzUyZWE0ZGZmNzA4YjFhNzJhOTVjNDVlZDk5YTg0ODkxODZmYTExIGxlZ2FjeS10cnVuaworMjM3MCBlNDg2Yzg0OWM1MGMyNTZlYmM2ZjA5MDNhOTY5ZWEwMzZkNDM4OWM0IGxlZ2FjeS10cnVuaworMjM3MSA5MWEyZjQ3NDU4NTIxODQ0MDVmNjJlMTNkYzllOTJjNTA3ZGM4ZTk2IGxlZ2FjeS10cnVuaworMjM3MiA4M2YwYTcyNGE4N2MwMTYzMGEzOTZiYTU2YTNhYmE5YmRiYWVmNDZlIGxlZ2FjeS10cnVuaworMjM3MyBhNzkzYzllODgwYzdmOTM1OWYwNjMzODA3ZDdkNjJkNWFjMDcyNDBmIGxlZ2FjeS10cnVuaworMjM3NCA2NmI1NTc2NmJhNjU4YTU2YjFlYzQxZGU5YzJiMTYyYjhhOGIxYjE2IGxlZ2FjeS10cnVuaworMjM3NSBlZDAzMTFiOGU3NDE5MTgwNzljN2Y1MjZhY2YyODE3Nzc2MTZiNTVlIGxlZ2FjeS10cnVuaworMjM3NiBmNjFlNzM2OGRlZjJlOWU1ZjU1ODY4N2M5YWMxNWZhMzRmMDBkMWYyIGxlZ2FjeS10cnVuaworMjM3NyAxNzU0YjgwMjRiNTVkMGMzN2ZmZTZjMWFmM2ViMDFiMzcxZDZhZWRhIGxlZ2FjeS10cnVuaworMjM3OCAxOTU4NzIzYmZlMDI0ZDZlYjRhNGIwYzY2ZjI5YzU4ZDJiMjZhYmFmIGxlZ2FjeS10cnVuaworMjM3OSAzNDI5Yzk0NWQ4MTdkYmQxZWM0MTVhYzk1MzZkMmQyMTRhYmE4MjU4IGxlZ2FjeS10cnVuaworMjM4MCBhMTA5N2NkMDMzNDhlZTgxYjYxYzA2MDQ4Y2NiYTZkOWMyNThjYjZjIGxlZ2FjeS10cnVuaworMjM4MSAxZWZmNjExMTU4MmU0OGUwMDkwNjg4ZjQ3NWQxNmRiZGQ4ZjIyN2RkIGxlZ2FjeS10cnVuaworMjM4MiBlZGRhOWFhZDNlOGYxN2UyZDhmYmNjMzI3ZjE3ZmI2YzBlZmM3NjdiIGxlZ2FjeS10cnVuaworMjM4MyAyODk4ZDc4ZmEzMmRlN2UwNmIwZGMxYjRlMmJhOGIzMzg4ZDU2ZDVkIGxlZ2FjeS10cnVuaworMjM4NCA2NjkzYzVkODdmM2EwNDlkOTA4MGFlNmM5MDRlZDlhMjM0NjkxM2IwIGxlZ2FjeS10cnVuaworMjM4NSBlNzFiNmZlYzg2ZTU5OGZkMzAyNmY3ZWQ2MzA4ZmEzNzMwZTZhNWVlIGxlZ2FjeS10cnVuaworMjM4NiA3ODE5ZTE2MTUzMjBiNDIwNjIzMmVkYzM3ZWI4NjJiYzZmODczYjYyIGxlZ2FjeS10cnVuaworMjM4NyA3ZTgzMTE1ZWRiNmFlNmQzMjY0ZWMzM2M4OTQzMmIzZWRhMmYwMDAxIGxlZ2FjeS10cnVuaworMjM4OCA3ZWM2MDU4YjUzOWI3ZWQ5ZmEwY2Y2YmUzN2VkY2QxNmZjMTY4NjhiIGxlZ2FjeS10cnVuaworMjM4OSA2MzRjMWQzYzdkMzkyM2YwNGNhNTM0YWE4ZmYwNzQzOTkyOTYxMWM4IGxlZ2FjeS10cnVuaworMjM5MCAwODU5N2UyYjYzZDNmOTQzY2ZkZTZkMjc0MzQ0Njc1YzcyN2MzZTA0IGxlZ2FjeS10cnVuaworMjM5MSA3YmE5NjEyMDU4YTQ2OWIzNDkzOWY0ODgwN2JkNmUyYzI0ZWUwZjYyIGxlZ2FjeS10cnVuaworMjM5MiBiMzFhYmY0MjBlNjFhN2EwYTVhYWI0YTcxMjliYWExNThjOWVlZjA0IGxlZ2FjeS10cnVuaworMjM5MyBhZjJlNjQwMDc2OTgxN2IzOGVmYjdlZDUwNWFjYTZjODFjNTg4OWRjIGxlZ2FjeS10cnVuaworMjM5NCA4ZjYyYTU0NTczMTllMjY3ZjQ0YjZiZTUxZWYzYmUxZDgwYThlZjNmIGxlZ2FjeS10cnVuaworMjM5NSA5MTRjODNjZmE1ZTEwNWM3OTEyNDdjM2E4ZGZiZDA4MTZjZjQ0OTk3IGxlZ2FjeS10cnVuaworMjM5NiA5NzcwMTEyZTY2MGE5MDNmNWVhYzY1NzhhOGQ1NTg4MTRmNzQ4YjIyIGxlZ2FjeS10cnVuaworMjM5NyAwYTkyYjZhMWI5YzBhYmU4NzdiNjFhNGUzYjQ1OGUxZmViN2I2OGFlIGxlZ2FjeS10cnVuaworMjM5OCAxNmY0Njc3MTdkN2FiNzAzNWExMTVhYTlkNTEyZWI1OWM3MGY5YmNjIGxlZ2FjeS10cnVuaworMjM5OSBmZDgxNmVkMTdlMzVmMTcxMGU4Yjk2YjNjYzlmYjdlMDkxZDU1ZTE5IGxlZ2FjeS10cnVuaworMjQwMCBmZGE5NzNmMmE1MTJiOWE1NjI1NzU1Y2U3MDFmNjNhZWI3ZGVkMmI3IGxlZ2FjeS10cnVuaworMjQwMSAwYWFkM2E3Yjk3ZWYzNTI5MTMxNzExZmM4MWFiZDM3Nzk0YWZiZTUyIGxlZ2FjeS10cnVuaworMjQwMiA0MWUwNTc4NzBhNTM1NGVmNWI1Mjk1NmI4OTg5MmY0NGEzYmY3ZDc1IGxlZ2FjeS10cnVuaworMjQwMyAzMTZhMGQ5YzAwOTY5ZWQwNjZiMDI1YzA1NGZkYjBkMWM0NGQ2OGQ0IGxlZ2FjeS10cnVuaworMjQwNCA1ZjdjMjRiMzk1M2JlNzQ0M2VkNmYxZTM3OWIzMGI1M2JiZDBhZTc3IGxlZ2FjeS10cnVuaworMjQwNSA0N2ViODFkYTQ2ZGMyMTY3N2YxOGJjMWY1M2JhZWYyMGY0NGJmNTg3IGxlZ2FjeS10cnVuaworMjQwNiA0MzEzM2Q4ODVjNGNjOTYzMjExNjk5ZWQyOGM5Njc5MDNlMTY3YTNmIGxlZ2FjeS10cnVuaworMjQwNyA5NTZmZDVjM2YwNDA3ODAxN2RiYjI1ZmI3MGIyYWQxYThlYTFiMjhiIGxlZ2FjeS10cnVuaworMjQwOCAzNTliZjEwOWRhMGY3YzYxMDJjMGRkZTkwYTU5OWU4MTg4ZWIxZjRkIGxlZ2FjeS10cnVuaworMjQwOSA5ZWIxM2M2N2FlNmZmNmJlYTkyZjgyNmNlN2FmMTM1YWMwYWViOWJiIGxlZ2FjeS10cnVuaworMjQxMCBiYWIxZjU0OTRiOGVkZGNkZDFlNzlkNzE3OTRjNGYzZTA4M2MzMjY4IGxlZ2FjeS10cnVuaworMjQxMSBiOTk4NjAwOWQ3ZGM0YjdjMjg5MDU0YTg5YTY4NmNkYTJmYTZlZDc3IGxlZ2FjeS10cnVuaworMjQxMiA0OGQ1OGI3NGEzYTQ3YWJjYzYxNmJjYjYzNThiMDhkNDI1MjI1OWEzIGxlZ2FjeS10cnVuaworMjQxMyA2ODExOTEyZjY3MmQ4OTQzMzkxMzJiNmI4ZmM4NmRjZDU5MGNhMzczIGxlZ2FjeS10cnVuaworMjQxNCBkNGU1MzJlZTZmM2QxODdjMDdlZDU3ZDQ0NzU5YjQwNDBlY2NjMjM3IGxlZ2FjeS10cnVuaworMjQxNSA3MWIwYmQ1ZWQxNjIwNWIyMWQ0MzZhNmNiZmQ0ODEyZjE2YzlmOWFkIGxlZ2FjeS10cnVuaworMjQxNiA4NjA0ZjkwMjljZGEzZDcxN2JlYzY0MTI2NmVjNzA0YzhmMzY5ZTIwIGxlZ2FjeS10cnVuaworMjQxNyAzZWFiMmNmNWU0ZGQ1MWNmY2M0NDlkZjZlNGMwOThkZjliMGNmN2Q0IGxlZ2FjeS10cnVuaworMjQxOCBhNDY1NThhZDBiZWRhOTU4YWM1YzE3MDExNTZlNDY5MThjMGM3MWQ0IGxlZ2FjeS10cnVuaworMjQxOSAzYjkzYmNlYTEwZjZkZjg2OTE4MzgzNWU4NGNmZjViZmM1ODc3ODRhIGxlZ2FjeS10cnVuaworMjQyMCA2MzIxZDNkYzU3ZTBjMTg5MGE2ZjYyMmM1MWQzOWY0MGFmYWNhNjRkIGxlZ2FjeS10cnVuaworMjQyMSAyNmIyZWVkNzgzODE0ODgwNzQxMzMwZDBkNmMyZDFiOGJlMTE0ZTA0IGxlZ2FjeS10cnVuaworMjQyMiBmNGE5NDRlOTgzNWZhOTMyZjE0MjY4NWE3ZTI0NGY2ZDI5OTQ3MTE0IGxlZ2FjeS10cnVuaworMjQyMyA2YWNkNDFhNDVkOGRhOGJiMGYzYTU2ZmJkZTBmOGM2NjgyNmQwM2Q5IGxlZ2FjeS10cnVuaworMjQyNCAyOGYwZmZkOWZhY2ZiOTlhYzU5NThjNzhlMDgzY2UyMjY2MzgwOTE3IGxlZ2FjeS10cnVuaworMjQyNSA3MmQxYjg5YmUzNWFlMjJiYjZhZWE1M2EzN2QzODQ0ODQ2MzNjZjQ4IGxlZ2FjeS10cnVuaworMjQyNiAxODdiYTE3MzNiMTc4MWI0YmY1ZDk3YTRkNGZiMzM0MjU1NTBkODkwIGxlZ2FjeS10cnVuaworMjQyNyBiNTgyNmJmMjk2Nzc2ZWEwZjQzYTk1MjEwNGQxMTQ5OGZmMjRhZDZlIGxlZ2FjeS10cnVuaworMjQyOCA0NTc2NjFlNDdjN2JhOWI2ZGQ5MjY1M2Y3YjQ3ZDdhY2ZhOTQyM2E1IGxlZ2FjeS10cnVuaworMjQyOSAwZmUyNDcxMTY2ZjA1M2JmN2Y2YjFiMDEzM2QzOWQ4YzI2ZWZiMjNmIGxlZ2FjeS10cnVuaworMjQzMCA3NDVhNDY2MTE5NTdkNmIyNDU0NzY3OGRlM2ExZWUwZjUyM2VjZTY1IGxlZ2FjeS10cnVuaworMjQzMSBhZGVkMjA4YWRmNmM2Mjg1YTgzZThlNDNiYzU5MjllZDA0ZTQyYzNjIGxlZ2FjeS10cnVuaworMjQzMiAwYmYwMmUxYjdmNTFkZTZjNjUwZDE4OTg1NjUyZmVkYmNhMGU5YTEwIGxlZ2FjeS10cnVuaworMjQzMyBmMDg1N2NlN2VkNGZhZTQwOTg1ZTJkZDBkMjE2Mzc2ZmZmZjMwN2M2IGxlZ2FjeS10cnVuaworMjQzNCBhZjFjOGY1ZDBiMzdmOTMxYmQxNzYxYjg5M2Q3N2NmM2E5NWUwNTY5IGxlZ2FjeS10cnVuaworMjQzNSAxMmE2NDExNWE0ZWViZGE0YjhjY2Y5M2YzMjIxNmIyMjcwNzg0YTk2IGxlZ2FjeS10cnVuaworMjQzNiA4MDAwMWMwMjNiMmIyNmZhYzk4YzI5NDBmMzFhNDZjZjJmNTRiZTk4IGxlZ2FjeS10cnVuaworMjQzNyAxMDc4Y2QyNzNiNDA0MWI3OWYxMmZiNDE5Zjg1NzQ5YjdkZjliZmJiIGxlZ2FjeS10cnVuaworMjQzOCA1M2M4ZDc2MmYzYTgzZTIwM2E1ZWEwMTIxM2QxMTVjNTUzZDNmYjQwIGxlZ2FjeS10cnVuaworMjQzOSBhZjlhODYzNmU0YTg3Nzg3NDcxNDEwOTM0MTUyMzE0NzJiN2Y5YzRlIGxlZ2FjeS10cnVuaworMjQ0MCA5YzkyNGY5YzNiMTY5NDMyODdhYTU2YmJkOWVmY2YzMzZhMTY1NDZkIGxlZ2FjeS10cnVuaworMjQ0MSA3MDJhMTM5ZmEyNGI0OWE4NGE1MzAxMjI5ZjMwYzBlMDkwYTIxMWFmIGxlZ2FjeS10cnVuaworMjQ0MiA2ZGZjOTI2MzAxMjM0NzBhMDQ0N2NmYWQ3YmFlNzlkOTAwMjY0MjEyIGxlZ2FjeS10cnVuaworMjQ0MyBkNWM5YWU0MjJiNDEwMzY2ZDVkMzAxNzc0YjYyZDc3NTk2YmJiNTk1IGxlZ2FjeS10cnVuaworMjQ0NCBlZDAxNjI1NTg5MjkzM2E5ZGUyZTFjY2JkZDYzM2U3ZjQyZWUzMTEyIGxlZ2FjeS10cnVuaworMjQ0NSA2YWM0MDIwMjNjYWM1ZWE5ZjM3NWY0MjI1ZDUxZTRkMWYzOTY2YmQ4IGxlZ2FjeS10cnVuaworMjQ0NiA4NWJkN2RhYzEzZjNhZWM4ZmNmMjQxYTg0NGE2NDc0NDJkNjg1MzY1IGxlZ2FjeS10cnVuaworMjQ0NyAzOTA1ZGE2YzRhOGJmMTQ1N2FiYjBmZGRjZTE4ZDJlYTAzOTRjNmVmIGxlZ2FjeS10cnVuaworMjQ0OCAwN2VmZGEyOTUxYTg3ZjFmOTAyMjA1YjBiZDhlMzE5MGIzOWI3ZDA2IGxlZ2FjeS10cnVuaworMjQ0OSA5YjQzYTk4MzEyNGMxMmM2NjI4ZDIzNDMzM2Q4MTc3MjUzYjY5ZTRlIGxlZ2FjeS10cnVuaworMjQ1MCBjNGMyNzhjNTZlOTAwMDUzMTNiMjUxYzU5YWJhZTgzMTczMDI4NmI3IGxlZ2FjeS10cnVuaworMjQ1MSA2NjM3ZWVlMWM0Zjg0MjJkNzYzZGNlODQ4YjMxYWM4MGUyOTU3YzE1IGxlZ2FjeS10cnVuaworMjQ1MiAwNjc3NGE5NGFiYjViZDczNjYxZjMxNjExMTE4ZTEyMGJlMzVmNjEzIGxlZ2FjeS10cnVuaworMjQ1MyA2MzA4NWY3YjNkYjVhZDJiY2FiNjUwNTMxYzI3YzhlYTgyMmFjNGMzIGxlZ2FjeS10cnVuaworMjQ1NCBmOTAwYjY5MmIzN2U0NzAxOGQ1NWRiM2Q5N2FlZjRjYzZkM2IwY2M3IGxlZ2FjeS10cnVuaworMjQ1NSA4OTM4YjMxMzJjYWE5MDM4YTA2YmY2ODViODMyOGFjZjNhMjJlZDViIGxlZ2FjeS10cnVuaworMjQ1NiBkN2EzOGRlY2U4NmE4MTgyYTRlZDMyNDQ1MzEzYmIzZTM5NDA1YzJiIGxlZ2FjeS10cnVuaworMjQ1NyA3YTM1ZDk4NTc2M2IyMWY5NTllMmQxNmM4YWVjYmViYjVlY2Q1NTVjIGxlZ2FjeS10cnVuaworMjQ1OCBhYmNjYjBmOWY3MzU5YmMyOWI2YmRkYjI5Y2RjZDAyYjM3ZjFlYjcwIGxlZ2FjeS10cnVuaworMjQ1OSA3Zjg3NTZmZDY0MjIwZTNkMTA2NjUxMjVkNmVmMmUyOWI4YTUwZTU4IGxlZ2FjeS10cnVuaworMjQ2MCBmNzA5MGY1ODE0YzIyNzYxOTg5MTdmZDg2NWJlNjcxNTUzNTRmOGM4IGxlZ2FjeS10cnVuaworMjQ2MSAwOWZiNzllN2JhZjdhZTdlMTBlYWRkMTIxOGE0NDk4YTY5MWQwYTY2IGxlZ2FjeS10cnVuaworMjQ2MiBjMjhmYWJlMjExNjU0NDU4Nzk4N2QzYzYwZjE0MzA2YzdiOTk3MmFiIGxlZ2FjeS10cnVuaworMjQ2MyBkMTlhNjY1OTA0ZGY1Nzk0ODM3YzUxNjQ4Nzk3ZThjYWJlYWViYzMyIGxlZ2FjeS10cnVuaworMjQ2NCAxNDlkZDEyMWQwYTZiNGViNDAzNDBjYTlmMDA0MDEyYzdmM2E3ZGZiIGxlZ2FjeS10cnVuaworMjQ2NSAzMjAxYjc1Njk1ZWYyODgzZWZkNDg2NGY0N2EwZjNhYzUyN2E4NmRiIGxlZ2FjeS10cnVuaworMjQ2NiA2YjkzZDRjZThkY2I5OGJmNThhMmQ4ZTkwYjkzNzEzZTE2OTlhMGRlIGxlZ2FjeS10cnVuaworMjQ2NyBjOGE5NzkwMjlkZjQxZDhhYzEyM2IyM2U1MTM4MGI3MWNhNDI1MjAwIGxlZ2FjeS10cnVuaworMjQ2OCAzNWEyNTI4ZjhhNzNkODZmZDM4ZTliYmEwM2MxN2NhY2IzZTA3YTM0IGxlZ2FjeS10cnVuaworMjQ2OSBhYmNkOTE1OTMwMzU3N2ZiZWZiZjQ2NGUzMTY1MGFjMGZlYTQyMzE1IGxlZ2FjeS10cnVuaworMjQ3MCAzODIzMjNmOTJmY2U1ZmQwNGVjNTA2MTgzZjAyZjg0MWZhMGZkZTQ4IGxlZ2FjeS10cnVuaworMjQ3MSA3MmEwMjY4NDIwZDA2NzRlMmE4ZDBkZDY1N2E2NDZlZDcwNGE4ZjQxIGxlZ2FjeS10cnVuaworMjQ3MiA2MDVlMTcyYmJiNTU3NDY0Mjg3ODIzZTRlN2Q0NmYzODdmZTIwYWYxIGxlZ2FjeS10cnVuaworMjQ3MyBhZTg5NDExZjZmYzBlMDY0ODZhMTAxMjAzOWJlY2Y1OWU1YzU3OTVlIGxlZ2FjeS10cnVuaworMjQ3NCBiOGU0MjEzZjY1YTZlNTRkYjRlMzJlOTQwYzUxOWU2Y2FlNjE2NzM0IGxlZ2FjeS10cnVuaworMjQ3NSBlODM4NTJkMWE1ZTIzZDZkMzhkODZhOTBkNzczOWU0NWFmMmFjMmZiIGxlZ2FjeS10cnVuaworMjQ3NiBhZWY3ZTBhOTExOWU1ZDM3ZWU4MjIyNmE0NDUyYjIyOGZjNzBhMjBmIGxlZ2FjeS10cnVuaworMjQ3NyBhOWQ0NjdlODQ2MzE5NGNkNTZjMWI2ZjgzNzgwMDE2ZjcwZWUxMGQ5IGxlZ2FjeS10cnVuaworMjQ3OCAzMjViNDBkNzcyMzU1NjI5NTRkNzFmZTFmNTlmOTFiNzhiZjY2NzAzIGxlZ2FjeS10cnVuaworMjQ3OSAxMmZkZmEwMTBlNDFlYjk1NWZkNWM3ZWU0YTI3NmU2ZmRkZGE0NjhkIGxlZ2FjeS10cnVuaworMjQ4MCBhMTc3NWNjNzg2ZTZhZDlkMTI1NGEyYjBhMWIwMGNjZTRhNWU3NzUwIGxlZ2FjeS10cnVuaworMjQ4MSAyNjQyNmM0MmExNjJhNDQ5ZmUwMjg3MDY1NjU3ZjVhNjkyMzhlMDRlIGxlZ2FjeS10cnVuaworMjQ4MiAyYTg0YjE2ZjkxYjA5ODgzMWJhNzUzYjNlMzEzZDVmODY1YTI5ZDAwIGxlZ2FjeS10cnVuaworMjQ4MyAxYTZjZjFmOGNjZWNhMDRiZGMyZWE3MGNkMjNkYmRiNWQ4NjE1NTgxIGxlZ2FjeS10cnVuaworMjQ4NCA3MTRjMjM5MGU1Y2I0NWU2YzgzMzRmYzQxY2NlOWUyZDZjMTI0NDg2IGxlZ2FjeS10cnVuaworMjQ4NSBhODEwMjBkNTA1YmY5ZThiNmM5ZTBmNzgyOWVjMTFhMWVlYjMzMzA4IGxlZ2FjeS10cnVuaworMjQ4NiBiYWFkYTIwNzYyYjA4MTg1ZDAxMGUzNmM2NjgxODMyODNkM2NlYzBjIGxlZ2FjeS10cnVuaworMjQ4NyBmZjA4NjJlM2Q2M2E5Njc3OGRlMjgwYzk2ODc1YWZmMTQ2Mjc5N2VlIGxlZ2FjeS10cnVuaworMjQ4OCA0YjU5ZTYzYTI3YjU3YzMxNzJlZGQwZTk1Yzk2MzEzNWY5ODlhY2U4IGxlZ2FjeS10cnVuaworMjQ4OSA0OGJiYzhhZDgwMTZhNWI1NDc0MTZlZTFiZmNmYmQwNWNkMmYwOWY2IGxlZ2FjeS10cnVuaworMjQ5MCBmMjFjYjdiNTNmNmNmOGFjNTc0OTU5ZjJlZTI1ZTI4YzRmNWZhZmFmIGxlZ2FjeS10cnVuaworMjQ5MSAxODA3ZDYwZTYyMzFmN2JhYjg0MmE4YjcxODUwYTA2MjlkNjU2NjAxIGxlZ2FjeS10cnVuaworMjQ5MiAyMWMyNjZmN2VjYTFkOTY3YWJmODNjYzVmYzQwMzAyOWU4ZjljMGVlIGxlZ2FjeS10cnVuaworMjQ5MyBiZTMwNTJhNzdiN2ZkNDY4OTU0YTA3NDg1MzE3YWRlM2Q5ODNiNDBlIGxlZ2FjeS10cnVuaworMjQ5NCAxMzdhNWUwNmZjODRjZTU1Y2I0MzBlODk3NWQ2OWIwNzk1ZTRjNzVlIGxlZ2FjeS10cnVuaworMjQ5NSA0NDlmNWU1ZDlhZjYyZjIzZWU1MDk1Mjc1NGYzZmQ5MWVkZTdkNGYzIGxlZ2FjeS10cnVuaworMjQ5NiAxN2EyOTc2MGQwNjJiMDEzY2RjYjRiZTU3NjA3MzJhN2MxYzFjNzFiIGxlZ2FjeS10cnVuaworMjQ5NyA2NDE4OWJhN2UyM2JjYWMzMGJiMGRiYWMxN2U0MWQ0ZTA3MDhiMzgzIGxlZ2FjeS10cnVuaworMjQ5OCA0MjY2YWVmNTBjMmI0Y2ZiMWMyZjExMjU1N2I2ZGIwNDJkYmNhN2YwIGxlZ2FjeS10cnVuaworMjQ5OSA3OTRjZmQ0NTVkYzZmNjI2YmNkYzVjODQxMTY0MGM5ZWYyNTFjYjJiIGxlZ2FjeS10cnVuaworMjUwMCAwOGRjMzdhNGRkMzIzYTIyNTViMDQ4Njg1ZTk1OTYyNzA0Y2JmYzY2IGxlZ2FjeS10cnVuaworMjUwMSBlMzk0MWVmZDczMTA1YzEyMThhYTExYzM5NDQ0ZTA1ODA4NjQ4MGY2IGxlZ2FjeS10cnVuaworMjUwMiA5MDQxOGZkNDM3ZGJkMzY3NTA4MzU0MTFlNmMxYTFhMmQ1ZjRiM2I4IGxlZ2FjeS10cnVuaworMjUwMyBmMzc5NWFjMTQ2Y2VmZWYwYjZhNTViMTMxMzFmNzdmOWM2Y2E5N2I1IGxlZ2FjeS10cnVuaworMjUwNCAzNmFjZTkwODI4OWJhNzlkOTdiNzA2MGU4NWYwNWRiZTlmZGJlMzQyIGxlZ2FjeS10cnVuaworMjUwNSA3NWIyZmQxNjNmZDcxNWExMDAzM2E2MDgzNzY2NzM3MGI2NTAxNWM4IGxlZ2FjeS10cnVuaworMjUwNiAyZTBlYTZkNWM2Y2VmYTdhY2RjZTUxYWM1MzkxNTk1N2QzZjY3ZmI3IGxlZ2FjeS10cnVuaworMjUwNyA0ODE3YWU0MGE0ZTIxZGMwOGQ3ZDZhNTRhNTM3NWQ5NmVhYzVlZTQ5IGxlZ2FjeS10cnVuaworMjUwOCBkYWFiZTIzMjA2MmUwNGM2M2VkYjU0YWI1MTc3MmM0NGNkZTUyYzhkIGxlZ2FjeS10cnVuaworMjUwOSBhMjk1ZDlhM2ZlODkyMzNjMmY1NTNjN2IzZGRlZTFiMjcyZGQ3ZjYwIGxlZ2FjeS10cnVuaworMjUxMCA2ZTVjYmQ5Y2Q1Zjk1MTg3Y2NiY2U1MGY3MTViNjY2MWQwZGExNDc1IGxlZ2FjeS10cnVuaworMjUxMSAzZGZhYTA5M2Q5NmU5MThjM2UwZTg1YmE5NTBjYjM0ZGI1Y2Y4MDU5IGxlZ2FjeS10cnVuaworMjUxMiBhMzU5NWFlNGRjMWU3ODNmYTQ5OTk5NGRkYWNjOTkzYjYzZTc0OTMzIGxlZ2FjeS10cnVuaworMjUxMyBkOTMyNTljZDM3OWQ2NjZlZmQxMjM0ZDU5YTBlYjBkMTM3NGNjMDg2IGxlZ2FjeS10cnVuaworMjUxNCAxYzJjZjJiZGI2YzhhMGU1NWMyZGYwNTFiMjIxNmI1MWRlMzEwNTMwIGxlZ2FjeS10cnVuaworMjUxNSA2MGRhN2VlOTEwMGU2NDliNDAyNTA0YzQyMmY3YzU4OTgwMGM0YjU5IGxlZ2FjeS10cnVuaworMjUxNiA4YTk0Y2NjNGM5MTQwMGIyZTQ2MjIzZTlhYzE3ODA2ZjFkOGUxYWQzIGxlZ2FjeS10cnVuaworMjUxNyBhYjA1ZWZlZDAzZTkwZmY2MWNiNjI4NjljNDIyOGFmZDdhMzgxY2E3IGxlZ2FjeS10cnVuaworMjUxOCAyMzU4N2JlYTExYmIxYThmNjc2ZjQ5ODdjZDBmMTM5MGZjYmZhMTZjIGxlZ2FjeS10cnVuaworMjUxOSBhNjdhYjVkNTgxNDYzYzFmZGY1MDk1MWEwNzBkNmNjYTk2MDUyMzIyIGxlZ2FjeS10cnVuaworMjUyMCAwNjk2ZjE5ODc1M2Y5NDhlOGE2MTRkMTlmMzAxYWQ2NDhiOTY4MmM4IGxlZ2FjeS10cnVuaworMjUyMSAzYjMzYWM0NGUzNmUzYzY1Y2U3MjY5ZGM4OWM5ZWZhMmZkOTFhOWJkIGxlZ2FjeS10cnVuaworMjUyMiBjODU4NGExYmEzOGE5NDc0NGU2MTFlNGExMmUxMzY2ZDBjNjk0OGZlIGxlZ2FjeS10cnVuaworMjUyMyBiMjk2OTZlNWM0ZDk4MmQ5NTlhMjJmZWFjYTA0NTdlNWEwNDdmYWUwIGxlZ2FjeS10cnVuaworMjUyNCBkNzA3NTRhOTYzMTBkNjI4ODFhODk5YjY1NjNhYWIzMmU1OGQ1NTA4IGxlZ2FjeS10cnVuaworMjUyNSAwYmY4MjVmNTVhYzE1MjAwYjYwMjFmOGFhM2I0MGQxZjRjYjJhOTg5IGxlZ2FjeS10cnVuaworMjUyNiA0ZTMwNzNiYjBlM2UwMzk3YmRlOTc1M2U4ODMyMjEzYzA5Y2EwOTAwIGxlZ2FjeS10cnVuaworMjUyNyBjZmJhYzZmZjczYWYzY2E0MzQ5ZmUzOTBlZDVhMGUwYmQwZWE4YzI2IGxlZ2FjeS10cnVuaworMjUyOCBhN2QzNzBmOTNmNzUyNmYzNDMzYjZiMzRhYjU0ZjIyMTUxODVjZGNiIGxlZ2FjeS10cnVuaworMjUyOSAwOTI3YmRiODE2YTA0M2JjYjRhMTFmMTQ4MDBlZDE3OWQ4NjM2NGQyIGxlZ2FjeS10cnVuaworMjUzMCA0NmE2NTYxMjNhNjk2NTU2MGJmMjMyMjM4MDY5MzJkNTM3YzMzNjJkIGxlZ2FjeS10cnVuaworMjUzMSA1MDliYjc0YWMzMjQxMjlkMzIzNTMyMWM5YWE1ZGU3Mzk5OGZiMWU3IGxlZ2FjeS10cnVuaworMjUzMiAzOTcyOTAwZTFiNjFiMjcyZDVmNDZiZmYyMDJmZjRiYWQ1NDc3Y2U3IGxlZ2FjeS10cnVuaworMjUzMyAxNmIxOGY1ODZmZWNjNDFkMTU0NDRiZDQyOTE0NjNjYjlhNjc0ZjczIGxlZ2FjeS10cnVuaworMjUzNCAzMDVlMTUwYmFhNTM4ZTVlN2RkYzBmNTFjZTM2ZDQ3NjA5MmJmNTVjIGxlZ2FjeS10cnVuaworMjUzNSA3MGExOGE2Njg5ZDRkOWNkMGRlMzdhYzJjNmQ0N2M4NWI2MjNjN2YxIGxlZ2FjeS10cnVuaworMjUzNiA4NjgyOGNjMWM2NDY4ZDNhYjBmMDgyMjRhMjcyNmM2ZGM5MTM5NWQxIGxlZ2FjeS10cnVuaworMjUzNyA1NjQ1OTQyYjdhZTA1NWM1NmJkMWQ2M2YzMDlhZTUwMzI2YWRjNGI4IGxlZ2FjeS10cnVuaworMjUzOCA3YWE0Y2Q2MjFmNTkyNjRmMmY5ZDMwMTcxNDAzM2I3N2U2NzFjYTlmIGxlZ2FjeS10cnVuaworMjUzOSA3MzA3NTdjY2I4YTM2OTg0ZjgxOGExMTg4NjU4OWM5MWE5MzdjYjNhIGxlZ2FjeS10cnVuaworMjU0MCA3M2VmZTNlYTRmMWI4YWY3YzJmYmJlODVlM2U4OWJmODE1OWY3MjM0IGxlZ2FjeS10cnVuaworMjU0MSBkZGFiNTAyODVjNDc5ZWFmODRjZjdkNmIwMDZjYjZlNzBhNjA3YTg3IGxlZ2FjeS10cnVuaworMjU0MiA0YTk2ODIzZjliNjg0OTYwMGM1ODhmZjM4Nzc1Zjg2ODJmOTYyNzAzIGxlZ2FjeS10cnVuaworMjU0MyA0ZGZmMjNlN2NmMTE0MTdiNTBkN2RhN2Q3MTFkODQ3ZjNiODA1MDYzIGxlZ2FjeS10cnVuaworMjU0NCBiYTNjMWY5NWU2NjVlMzU1NjdjYmIxNzgxZGY2MzBmYzczNmY0ZjI5IGxlZ2FjeS10cnVuaworMjU0NSBhM2Q0ZDQ2MWQ0NDIxZmFlYjM0YWNhMjhmYzY2NDM3NjBhOTQxZGU1IGxlZ2FjeS10cnVuaworMjU0NiAwMzlhZWU2Y2JkNzg2YWJmNTEyY2NiYTIwOTBiZjQ5MDc1OTgxMWEzIGxlZ2FjeS10cnVuaworMjU0NyAwNTk4ZjRmMjVkMDQ0ZDYyYWIzZTcyM2NjNjMyMDYxNjliYjU3YTM2IGxlZ2FjeS10cnVuaworMjU0OCBmMDFhZWU2MTU1YjNhMmZmMmEzZGY5OTNhZTEyNTc2MGQ3ODJhOGMyIGxlZ2FjeS10cnVuaworMjU0OSAzMWQ1MDllOTQyNzEwNTlmMTJkNjNjNzEzMWMwZDU4MDI2ZDg3OTRlIGxlZ2FjeS10cnVuaworMjU1MCA1NWJmNjY0NDVjODVjODBmMjI3YWM0OWMzMWEzZTg4ZjlmODA1ZTk3IGxlZ2FjeS10cnVuaworMjU1MSAxNzJhYTJjM2U3MzQwYzFlNzQzOWYzYjdlMWJhMGYzZjBjY2E2ZjA2IGxlZ2FjeS10cnVuaworMjU1MiBjYWY4NDY2ZGNjOWMzNTc3YzFlYjYxOTE0NjdmZTk0ZjE1YjI0MjU3IGxlZ2FjeS10cnVuaworMjU1MyBmMzNhM2Y2OWRmY2I1OWJkMTk4NjQwYTYyNDc4OWU2MjE3YjE2MzMxIGxlZ2FjeS10cnVuaworMjU1NCA1OTYwOWIzYWY5NzhhMzk3MDE2Y2QzNWJhZWEyZDE1ZTU4YzNmYWZhIGxlZ2FjeS10cnVuaworMjU1NSA4MTU0Mzg1MjQ4ZDgxNzU3ZGU5MTE4OTdiMjdkOGIzZjFmYTBkYjMwIGxlZ2FjeS10cnVuaworMjU1NiA2NTliOGRiZjY5NWM1MTFhOTk1NWU5Yzc3ZDQyYzVmZmE5OTg5ZmM3IGxlZ2FjeS10cnVuaworMjU1NyBjMjYyZjQyMWE0NGM1MWM0ZmE4OTc1NDBkNDM5NTRlMTgxMWE5OTM3IGxlZ2FjeS10cnVuaworMjU1OCA0Y2RjYzE2YmQwODAwZmVjMGIyODE0ZThjMDA5ZGZkYzBkNWYyMDIzIGxlZ2FjeS10cnVuaworMjU1OSAwYWMxMzU3Y2Q4OTg5ZTNiMzY1NDIyOGUxNjY3N2JkYTE2NjJhMzk5IGxlZ2FjeS10cnVuaworMjU2MCAxZTRlNmRmMDcxOGUwMzgzNmE1YmI2OTNlY2YzODA1YzQyYzA3MjQ0IGxlZ2FjeS10cnVuaworMjU2MSBkMTg5YTJmNjgxYTZkZjM3NTlhMGE0MDI2YmQ2NWVkNzQxMzIyMGEwIGxlZ2FjeS10cnVuaworMjU2MiAwYzVlNGUxMzdkZTZlMGYzNjhhYjQ4OWU2NDQ2MWVmOGIwNDJjYmYwIGxlZ2FjeS10cnVuaworMjU2MyA5YmQyNjgwZDE2YmMzNjE3MGYwZjJjOTAzZjFmYjg3NjU0MTA3NzA3IGxlZ2FjeS10cnVuaworMjU2NCBkNzgzMmFmNmFiYTYzNGU1ZTMzYWRiNDgxNWVkOTA3ZjliMjg4MGNlIGxlZ2FjeS10cnVuaworMjU2NSA5Y2QzOGQxYWMzOTE5ZjM2YzBhMjYzZmNhZTQ4N2YzZjA0MTJhZTljIGxlZ2FjeS10cnVuaworMjU2NiBkM2QzMjg2ODAzMjhkZTdmODYyYzExMjNiNjIzZThjNGM3NzVkMzY3IGxlZ2FjeS10cnVuaworMjU2NyBlNjI4ZDA5Y2UyMmZlYmRkYmM1ZmVmYWEyMjMyNjIwMjY2NGVhNzFjIGxlZ2FjeS10cnVuaworMjU2OCA5YjNkNTU3NjY1YTkxODAyNTViNmY1NzczZTA5MjVmNmZhODAyMjQ3IGxlZ2FjeS10cnVuaworMjU2OSA5NTIxMzNlODliYzcyNWViZmE0OWYzODE2MDk2M2UwNWEyMmM3NGY0IGxlZ2FjeS10cnVuaworMjU3MCBiNWZlNjQ4MjA3MmZlZmE0Y2I0M2I3MmIxMmNmZjVlMmY2ZDNlNjI0IGxlZ2FjeS10cnVuaworMjU3MSBmZDA2MWRhZTllNTcwZDhmYTgwMzhjZWNlNzBiYWNlZjVlMWZmNjdiIGxlZ2FjeS10cnVuaworMjU3MiAwZjM1M2FmYzI4NzBkNjg0NDc3MjlkYTA3NDJkNDQxMWM1YmJlZDI3IGxlZ2FjeS10cnVuaworMjU3MyA0ZWYzMWY1ZDNkOTI3YjRiNzJiZjEzMTAxZjM4NjRlYWY2MzIyNjkxIGxlZ2FjeS10cnVuaworMjU3NCAyYWZmMzdiOWUyMGVjYTA5N2Q4YzlhYzkwZmM2Y2JmZDQ0MzBjNjhmIGxlZ2FjeS10cnVuaworMjU3NSA0YzQ1YmNiZTNiYjNiYmY3MTJmMmFlYjk1M2I0NWU0NWQzZjM5OGZmIGxlZ2FjeS10cnVuaworMjU3NiA0ZjE1N2IzMjRjNTA1YjA2MmNmNTJhMjk2YTRhZjRkMmE5NDM1NmNiIGxlZ2FjeS10cnVuaworMjU3NyAyYjAzNGM5MGI2ZDlhNjc4ZGRjNDc5OTM5YzQxYTExOGZjNjBhYzVlIGxlZ2FjeS10cnVuaworMjU3OCAxNjNlMjkwNjBmMGJmMzJmMTE5YjdkMTIxMjhlMTc0MTk5ZDQxNDhjIGxlZ2FjeS10cnVuaworMjU3OSA3MDMyM2NiYTNjMTM2OWRhMjRjMDMwOWZkMDZjMzNmOTkzNTIzZDc5IGxlZ2FjeS10cnVuaworMjU4MCA1YTlhYTJhYmEwOGU5NmQwMDBlOGMzZmZkODFhNDNmOWMwMDU5MTg1IGxlZ2FjeS10cnVuaworMjU4MSAzOTQzMDEzNDA2OTMzNzJiYjhjMGZlMzkyNzA3MGIyMTMwMDE0MmFlIGxlZ2FjeS10cnVuaworMjU4MiA1NWVlNzVmMmZlYTRhY2RhZDY0ZWUzNmUyYzRjZmVhZWI1YmJiMzVkIGxlZ2FjeS10cnVuaworMjU4MyBlYTVjZjA5YmJmMzZiNDY3Y2I3OGY3Y2IzNzY0NzIyZTA1MGI0NWFjIGxlZ2FjeS10cnVuaworMjU4NCBjOGQwYTRhNDFmMGJhN2NlODJmZDdiY2U3NTlhZjExODNjNGMxYjgyIGxlZ2FjeS10cnVuaworMjU4NSAyZGNlY2E5YTA3MTM5MzNjMzYxZTQxYzZiM2QyMGVhY2M1YzQ0OTc1IGxlZ2FjeS10cnVuaworMjU4NiBkMWVlMGZiMGMwZGY1NjVhMjQwNTUxMzdlM2VjNjYwZjNkYzA3M2MyIGxlZ2FjeS10cnVuaworMjU4NyA2MWJiYzcyMzBjNzE2NmU1NjVlZDBhYmZhMzU1MzBlZmUzNDRjMmRmIGxlZ2FjeS10cnVuaworMjU4OCBhM2E4NDJiMzk5MTMyZWM4MGVkZTU4OTQyZmYxOWI0YjcxYTdhYWM0IGxlZ2FjeS10cnVuaworMjU4OSAzYzdiN2NhYTlkYTU2NmFhY2U2MTBkMTFlZmZkZmU4N2E0MTkwOTc5IGxlZ2FjeS10cnVuaworMjU5MCBiYjMwOGU3YjAwMzk0ZmJjOWM3ZTQ0NTVhZWNlNGNhNTAxMzk4MzhkIGxlZ2FjeS10cnVuaworMjU5MSAwZjllYmM2M2RjYjU2Mzg5YWYxYjFiZmQ3MTNlYjEwYjk5NzZkY2IwIGxlZ2FjeS10cnVuaworMjU5MiAwOGIxYTg5YzhmMDYzNTM0Yzc5Mzk3NTc0MTQzNzk0MWU3M2FmZTUyIGxlZ2FjeS10cnVuaworMjU5MyA3OTQwYmIzOTFhNmFjYjJmOWY1ZTAzNmUxZjBlNTJkN2U5NGRmN2FkIGxlZ2FjeS10cnVuaworMjU5NCA4YmVkZGMxNzAzOTY2OGIzNDgwNjk1YmIzYzhkMmI5NWJmNTRmNzM1IGxlZ2FjeS10cnVuaworMjU5NSA0ODdiN2M2MmFlNzc0YTM4NTEzM2RiMDExNTZkMjcxN2I1NmRlMDU1IGxlZ2FjeS10cnVuaworMjU5NiAyZGUzNGI5NjAyZTBlZjY1ZTQ4ZDE0ZTM5ZWQ2MGYxNzU1Mjg0MDU2IGxlZ2FjeS10cnVuaworMjU5NyAxZTZjOGYyYWExMzZkYWEyNzU0NzYxMzkzZTBjOTIyM2QwZmZmYWU1IGxlZ2FjeS10cnVuaworMjU5OCA0MDJhNTlhZDI0OTNmMGI5N2YzMmM2ZmViMTg5YTU1ZWUxYTVhMzMyIGxlZ2FjeS10cnVuaworMjU5OSA2NGJjOGEyODRmYjNmY2ZkMzZhMThiY2QyZmU2YjUyNzBmNGRmMWYzIGxlZ2FjeS10cnVuaworMjYwMCBjMTJkMDMzZjY1OTRlNjY0OWZmYzI0YjgxZTA3ZTBiYTAxNjk5N2I5IGxlZ2FjeS10cnVuaworMjYwMSBlMmRiMzM0MWQ2ODYwZWU2NzZiNWJkODI2ODUwY2U2MjY0N2JkZWUzIGxlZ2FjeS10cnVuaworMjYwMiA2MDBiZmE5ZmI4Yjc2ZTVhOWE0NzUwMjFiZGZmMzcwM2E1MjQzOTNkIGxlZ2FjeS10cnVuaworMjYwMyAxN2Y0Y2RmMjg5NTlmNjBhMjQ0OTRlZjZmMWU0MTA1ZmI0OTgwOTBhIGxlZ2FjeS10cnVuaworMjYwNCA5Zjg1YmViMWY3Yzg0OWZlMDE2OTcyZDg4MGM4YTBiYTIzY2JmYzFjIGxlZ2FjeS10cnVuaworMjYwNSAxZjY0ZjU1YTUyZTg2NWFhN2FhOTY3YjkxOWZhNDBiYTc3NGU0MmM4IGxlZ2FjeS10cnVuaworMjYwNiBjMDY4M2Q2Njc2YzY2YmM1NGJhOTZlZmMwMTk3OTk4ZjhmMDM3ZGRjIGxlZ2FjeS10cnVuaworMjYwNyBjMzA3ZDEwYjY4MGM2YTM5OGNhMTU2ZjdjMGNkNDA2YzIyZTJlYTFmIGxlZ2FjeS10cnVuaworMjYwOCA4ZjYzODlkYmMxY2Y3YjRmYTcxODI3OTkwMzRhY2M4YzhmZjA4Yzg4IGxlZ2FjeS10cnVuaworMjYwOSAzMjZiODllYTY3MTM4YmFjNDUzMWM1OTgwNjIyZjg1ZTkyMmJmNzU0IGxlZ2FjeS10cnVuaworMjYxMCBhNGZlYTY5MTIwZDgxNDc3MzFiMjY5NDkyMTEwZTc2ZmE1MGYyMjM5IGxlZ2FjeS10cnVuaworMjYxMSAyMzQ5N2RiNjY4N2FhMWRhY2UxOTZkYzYxNjQyZDAzMWQ4N2FjOWQzIGxlZ2FjeS10cnVuaworMjYxMiBiMmRjZTAxYzM2NmU2YWU1NDU2MWE3YThlODY1MjZkNzE2NDY4NzNhIGxlZ2FjeS10cnVuaworMjYxMyBhZTFhNTU1ZTY1ZmFjNjQ2NTZiYzAyZWE1ZGRhYWNiYjM3MGUwNDZjIGxlZ2FjeS10cnVuaworMjYxNCAzNGFiY2ExODJmMThlMWI2MTY5ZWFlMDgyYzMxYTMyODFlODgxYTQ1IGxlZ2FjeS10cnVuaworMjYxNSBhNWYwYjgzOTBjODc5NjgxZGJiMjg0OTRjYmRlYjhjZTFmYmQ4Zjg4IGxlZ2FjeS10cnVuaworMjYxNiA0NjRkOWQ5M2YzNGU5MWEyMjhmZjY1ZGFmNDQwZDllYThjY2M3Mjg0IGxlZ2FjeS10cnVuaworMjYxNyA5MjcxOGU0ZjVhZGMxYjI4NGM3NjhlZGUyZWFjNzBiZDg0ZTJiNGUwIGxlZ2FjeS10cnVuaworMjYxOCBlODY2N2E3ZDMxOGRkZWUwODVkOGUyNGU4ZDcwNmU0NmE4YWJhMzMxIGxlZ2FjeS10cnVuaworMjYxOSAxZmQ0NzEyY2M2NmY3YjZhYzU5ODA0NWM4MDA1ZjA1OTE3ODY1NDQxIGxlZ2FjeS10cnVuaworMjYyMCAwNzM2YWVmYWZjNjAxOGMxNjRmZjgwZDhlM2MyODRiOGI5NTE2NTVlIGxlZ2FjeS10cnVuaworMjYyMSA3YTYwZmFhMzgxMTM1MWJhMGI0NmRhOTBlNmU5Mzk0NzE4NjZjYjJkIGxlZ2FjeS10cnVuaworMjYyMiA3NjljZmZmNGFlNWU5NTA0MWFjMzk2NDY2YzA1ZDExZGU2MzI1OWU2IGxlZ2FjeS10cnVuaworMjYyMyA2NzhhNzM0YzI0NGRjOTBjZDgzMTVlZTNiNzQyM2MwYmY0YmMzNDY4IGxlZ2FjeS10cnVuaworMjYyNCBjOTdmNGM2YmE2YzY1ZWNjNjNmMzM1YmY3MGFjZjQxMjYxNzJhZDI3IGxlZ2FjeS10cnVuaworMjYyNSA5MDMwMGNhMjEyMDA1OTIwNjZiYTc4ZTI3ZTk0MWIyYWM2NzMyYTNjIGxlZ2FjeS10cnVuaworMjYyNiBjYTAzOTFhODEyZjg2MzU4OTI5NTQ4Yzc1YWJhYzlmMjA3YjhlNTZmIGxlZ2FjeS10cnVuaworMjYyNyA5MGNiY2IwYjk3ZGM3ZDQ5ODQ0MzUyNGM1MjJiOTExOTNjZTk1MGQzIGxlZ2FjeS10cnVuaworMjYyOCAxY2I3OGI2MjViMDcyM2NiNDk1NTJkZDZhYzc4MDljZTVhNGJhNGZhIGxlZ2FjeS10cnVuaworMjYyOSAxMGUzZDI2MDQxMzEwOWE5YWJkMzdlYjQ1NzZlMGU1MmYyNTJkZDJjIGxlZ2FjeS10cnVuaworMjYzMCA0MjEzMGU3MjIwYWZmYjk0ZDBjMzNmOGZlNjc3ZDc4MmU4MDJjYmNjIGxlZ2FjeS10cnVuaworMjYzMSBhMTAyNWNiYmEzMGRhZDE3Zjk5NTc0MWFhOGQ1YjQ1Mjg4ZDljZGQ3IGxlZ2FjeS10cnVuaworMjYzMiAxYmUyMDg3NjkyYTI0NDQ2NDM0NzMxMzkyZTM0MGVhNjJiZmM4NjNkIGxlZ2FjeS10cnVuaworMjYzMyAxZDRiMDMzOWI4M2RhOGUzYmNhMDQ0ZWUyMjZkZjUyZGQ0MWM5ZjdhIGxlZ2FjeS10cnVuaworMjYzNCA0YTdmMGYwNmNkMjdjNGIyOWY3NjY2M2YwNjczODdiMmIzNjFmN2YwIGxlZ2FjeS10cnVuaworMjYzNSAxOTM2NTIwMWRjZmE4NWFlYWUzZDk0MDU5NjRlYmJkZjgyOTY4MGFhIGxlZ2FjeS10cnVuaworMjYzNiBlMmMzNDYzYzRkOTE4NDMwMzhmYTYwYWI3NzJiZjM3MGZmM2NiNDA0IGxlZ2FjeS10cnVuaworMjYzNyBiZWM5NjNmOTliYzlmNTkxYWQxYzJlMDllZTYyNDUyZWVhOWI5YWEwIGxlZ2FjeS10cnVuaworMjYzOCA0MzZjODEwMzA4NTMzODY3MzNmNmIyMWEzZGM0OTdiOWJmZDk0ZjJmIGxlZ2FjeS10cnVuaworMjYzOSBjM2JlZTVhNTcyMWY3ZWNkN2RhYmQ5NmQ4OGRmNTRmOGEwYzAyNTQ2IGxlZ2FjeS10cnVuaworMjY0MCAzMjQ5NmEwZDAxZjQ4OGE2NWU3NThlZWY0NWMzZTViMzAyZWRiMjUwIGxlZ2FjeS10cnVuaworMjY0MSBjNjRjNjcwMjU0OWQ2YmEyY2RiOTkwODk1ZjRmZmZjYzc1ZmZmNDAzIGxlZ2FjeS10cnVuaworMjY0MiBkYzA0NjM0NTNhNjQzNzFiYWEwMzgxYjUzYzJmYjM4YThkNjYxY2Y5IGxlZ2FjeS10cnVuaworMjY0MyBlZTg5OWE4MTU3MGQwNTA0Y2E4MGFhMWRkODJkZDM0MzVjZGVkNzA0IGxlZ2FjeS10cnVuaworMjY0NCBjZmJjNGNjZTFhNDI3NzYyOThmNmQ2MDJmNDU3NzkxZDgzOThmNWQ5IGxlZ2FjeS10cnVuaworMjY0NSBkYjgyMGRhM2NlMDNlZDY3MWY2YWNjMjQ5NDIwMjQ1OGMzNmY3NDBjIGxlZ2FjeS10cnVuaworMjY0NiAzYjM4NWJkYTM4Zjg5MTU4YTdmMGUwMmExOTQ5ZTU1ODFhOTQ5OTE1IGxlZ2FjeS10cnVuaworMjY0NyBjN2EyZjU2MTNkNjY0NjkxOTZiYTgwN2QzYjg0MjIxMTJjOTRlNDViIGxlZ2FjeS10cnVuaworMjY0OCA3N2I4MGE5MWQzNTdjMWQ5NWQ4ZTdjZDRjYmJlNzk5ZTVkZWI3NzdlIGxlZ2FjeS10cnVuaworMjY0OSA5MGYzNWZjZjhlYTAxZDcwODI5ZGI1NmViZGFjZDJhZDQzZjcxNDAwIGxlZ2FjeS10cnVuaworMjY1MCBhMGZiYzdiNmE0ODVmOThjOTA3MWQyODc3OTRmMWQyNGYxZTYzZGQ3IGxlZ2FjeS10cnVuaworMjY1MSAwMjNjN2Y2OWQyNDAwMmM4NjM5MzdiODQzZTc3YTQzZTZiNGYwMmQ3IGxlZ2FjeS10cnVuaworMjY1MiBiOTI2NTgwYzljMjg0MTg2MzE4MmEwOGMxNDc5MDgyOWQ4MTNkZDkxIGxlZ2FjeS10cnVuaworMjY1MyA5MmExMGExZTE0NjMwMDdjMDM1ODc3ODkxZDlhYWEyNjA1MjlkMzM3IGxlZ2FjeS10cnVuaworMjY1NCA1NzY2N2FiMWUxOTQxZDAxZWViYzRjNmViZTZkNzdhZTg4Y2UxM2RkIGxlZ2FjeS10cnVuaworMjY1NSA0YzIxMWU4Mjg2YjVjNjI4MmVhNDUyN2Q4NTVjYjJjNjI0NDI0OTliIGxlZ2FjeS10cnVuaworMjY1NiAwYWM5ZDVkYjQxYzhmZjFmZWJiNTEwYmQzNDNhMDUzYjRiMzQ3MTBmIGxlZ2FjeS10cnVuaworMjY1NyAwYWMzOTJiN2Y3NmVhYmVhZDg4NDE3MTdmZWQxMzUwYTUwM2NhYzQ2IGxlZ2FjeS10cnVuaworMjY1OCAyY2U2YTJhMzE4ODYzZGVlM2VkYmFmOTA2MzliYTMyYzY3NWRjNjZiIGxlZ2FjeS10cnVuaworMjY1OSA1NmJiMTA2N2E4ODA2ZWQyYzkxM2RlOTQ2ZDZmNWJkMWI5YTgxODI2IGxlZ2FjeS10cnVuaworMjY2MCA4MGUyZTVkNjdiNDk2NjY1MzA5ZjExNjVlYTE0Yzg3OTRkYWRkN2IzIGxlZ2FjeS10cnVuaworMjY2MSA3ZjNmYWFmZDgzZWQzNzI3NTI5ZDcxZGE4M2MwNDBkOTU2NTU3YzdjIGxlZ2FjeS10cnVuaworMjY2MiBkZGJjZDUzMmMxMTRkZjc1YmY3M2UzMDczZGVhNDE2NTg1NTJhM2MwIGxlZ2FjeS10cnVuaworMjY2MyA2N2Y2ZjcxOTQzYzE2MjI5ZGE3NWEzNjc2NjYzZDYwNjI3NzA2ODZjIGxlZ2FjeS10cnVuaworMjY2NCBlMTRkNDY0NDBlYTcxMzk5ZmZmMTZmN2MwNWQxYWI3OTRmOGFjZTYzIGxlZ2FjeS10cnVuaworMjY2NSBlYjAzOTc3YmFlZWI0Y2YzMjg3YWZjN2EyNzZhOGU5MjU1MmYwNGJlIGxlZ2FjeS10cnVuaworMjY2NiAwOTVkOWNmNGUzZTZlMjRiMTgwYjBjYzRmZmUxYzBjODY5MDg2MmZlIGxlZ2FjeS10cnVuaworMjY2NyA5ZjcxNjFkYjU2NjllOTFiNTY4Mzc0ZmQ2YmQwNDQ1ZmE2NTQ3MWI3IGxlZ2FjeS10cnVuaworMjY2OCBmYmZmMmU3Y2M0OWRmODg3YjQ5ZmQ4M2U0NTUxZjQzNzllOWRkZGEyIGxlZ2FjeS10cnVuaworMjY2OSA3OWVhMTNiN2RmMmMxNjI3NTBhNDI3YTBiNGVjNzNhZTIyNWViN2NlIGxlZ2FjeS10cnVuaworMjY3MCA1YjVmODZlZTRmNzliN2U1NTIxZDZlNjJkNzY4YjgwNzBhMzFhY2I1IGxlZ2FjeS10cnVuaworMjY3MSBjYmNkZmRhMDViYzRlMjJhZjU2ZGZkZjAxZWNhN2Q3YjhmMzZmM2E0IGxlZ2FjeS10cnVuaworMjY3MiA3NjZjYzgyMGY1MTFlMTAxOWFiN2EwOTlhNTRiZWZmN2FmOWYzMjA3IGxlZ2FjeS10cnVuaworMjY3MyA4NDE0ZTFmOWE1ZmU0Y2NiMzczZTI1ZDMxODNhZGViZjkyMDgxY2ExIGxlZ2FjeS10cnVuaworMjY3NCA5ODk2ZGNmMDhlMTZmYWUwOWU2MWI1NDUyMWNmYjJlNDg0NTdiOGZlIGxlZ2FjeS10cnVuaworMjY3NSBiNDZkNzZlYmQ5YTcyZTUwMzJmNDE1NzdiMjg2OGU0YjczZDAwNGMyIGxlZ2FjeS10cnVuaworMjY3NiBmOGQ1M2I2Y2Q0NDJlODAwZTIyOWVkMWZmNDU5MzBkOTczNzAwMTlmIGxlZ2FjeS10cnVuaworMjY3NyA2OWY4OTczOTkzOGY5YTYwOGZkYWU2ODA1NDU0YjQwM2NkMzRmZjhhIGxlZ2FjeS10cnVuaworMjY3OCA0M2MyMjMxNTliMjgyNzY5N2M4MDg5YWRlMWM2OGRmZTA1Y2FmYWY2IGxlZ2FjeS10cnVuaworMjY3OSBkZjAzNDNhYzhhMjFhYjE1OGZhNGIxMzk5NjUzN2VhYzA2MDI5MWRjIGxlZ2FjeS10cnVuaworMjY4MCAwNDhlMTM3MWM0NTA2YzFlM2UyMjYwYjk2MjM1YTU5NWQ4MGYwMDg0IGxlZ2FjeS10cnVuaworMjY4MSAwMmRlN2E4YWUyNjc2MWNmNWM2N2RjZDI5MjFjMGNlMmY2NmQ0YTIyIGxlZ2FjeS10cnVuaworMjY4MiAyZGNkYjAwMjNjMzIwZWU1MmVlNzMzN2M2OTkyMDcwYTU5Zjk1NWJjIGxlZ2FjeS10cnVuaworMjY4MyBiZTg5OGNjMTU4MDA2YTE4NDc4Mzk1MjQzYzM1YWViNTUzYjEwZDU0IGxlZ2FjeS10cnVuaworMjY4NCBkOWI2YjAzNjk4NjBjNDVjNGFlZWNjYzc2Yzg5MDZiMjliMTQyN2I2IGxlZ2FjeS10cnVuaworMjY4NSBiMzgyNWNlODNjODdmMjQyOWRmZjg0NWVjNzQzNWY0YTc2ZTg3ZDBhIGxlZ2FjeS10cnVuaworMjY4NiA3NDJkYzgzODAzOGJmY2FjYWQ3YjAzZmMwYTA2NWRiMzM2MjAyZGU1IGxlZ2FjeS10cnVuaworMjY4NyAyYjBhZDUyYWMzOTY4NmM4OTg0OTllMzBmOTllYTFmYTM1ODI5NjczIGxlZ2FjeS10cnVuaworMjY4OCA0MzU3YWI2OGM3ZDViNmU5YzBkNmExNmI3OGY1YmYzMTBkYTZhOGUxIGxlZ2FjeS10cnVuaworMjY4OSAzZDQ2NzEwOGIwMDgzYzRjNTZiZDVhNDc0N2JhZWE3MDMyMTI1YmU1IGxlZ2FjeS10cnVuaworMjY5MCAxZWZkYjE1MjIxZGRkMWU5NjM1NzBmYjcxZjI4MThiZTBjNGI2ODA5IGxlZ2FjeS10cnVuaworMjY5MSBkYzJlYzQ5YTJhZDI5YjZkOTYzMDEzZGU1MmExYTgzNWUwZmM3MWYzIGxlZ2FjeS10cnVuaworMjY5MiA4MzMxMDc2Y2ZlMTUyZGZjYjlkMTY2OWY5MjlkNDc5MWQ1YjkzNjM4IGxlZ2FjeS10cnVuaworMjY5MyBmZWUzNTA3OGVmNDBhM2Q1YjU0ZmUwOGIzMzQ5OTcyNTMzMGVlZjk4IGxlZ2FjeS10cnVuaworMjY5NCA4YjRhMjc0ZTU0NmRjY2E4Y2E4MGJjMTYxOTEyMTg0NmViNjA5ZWU4IGxlZ2FjeS10cnVuaworMjY5NSA5NmIyMTI4ZjAwYWVkYzI0YTI0NGE2ZWFlMjAxYWVlNDg4NzgyNDEyIGxlZ2FjeS10cnVuaworMjY5NiAyNjk2YjU2ZGRhYzQ5NTJmY2QzODAyZDFlMTgyNDMzZGVmMWE2MzVhIGxlZ2FjeS10cnVuaworMjY5NyAyNTU3MjhhODQxZGVmMWI1ZTkyOGUwZWQ2MWQ2NGNjYTQ4NjE3MzYzIGxlZ2FjeS10cnVuaworMjY5OCA5MDE5ODQ4ODI0YTEwZDZlMWUxOGVhOGJiNjc2ODUxMDgyY2I1OTYzIGxlZ2FjeS10cnVuaworMjY5OSA5ZDAyNDJiOTJjYTVmYjA3N2NlZGNjMDBmMTYxMGFlZGVmOWNjMDI1IGxlZ2FjeS10cnVuaworMjcwMCBlYTUxNDY4NjZiY2YxNzk3NDU0MjdlZDNmYTliOTliYjcwMGRmNmY0IGxlZ2FjeS10cnVuaworMjcwMSA0OGVhZjRmYzUzY2IwZDgwMTMyNjIxYTM4NjE1YzYxYWVhZjBlZWUxIGxlZ2FjeS10cnVuaworMjcwMiA1ZjU5MGFiNDUyOTU3NzZiM2M4NDdlYjI3NjRiZTQ3NjE5ZmQ2OTQ1IGxlZ2FjeS10cnVuaworMjcwMyBiNTg2MTg5Y2MxZjVlNjk5ZGIzNzdkNDBhNTBjNGQyZDc2OTQ0NTE0IGxlZ2FjeS10cnVuaworMjcwNCBkNWUxYzQ5OWYwMTM3ZGYyNDkxNzMxN2YxZWI2MTg4YzAzZGE3MzE4IGxlZ2FjeS10cnVuaworMjcwNSBkMGJhYTgzMDAwMDU2MjQyZWYyMjVkOGIxMDRmMTZhNjI2MjEyYWI1IGxlZ2FjeS10cnVuaworMjcwNiA5ZjA2YzY2ODlmMGQxMGE0MzcyNWE0NWI1NTAzMWM5NmFiYWFlYmM0IGxlZ2FjeS10cnVuaworMjcwNyA5MzdjYmMwYmU2ZWNlZGI1YzBiOTI3YmE1MDM4NGIwMGM5NWU1YTg0IGxlZ2FjeS10cnVuaworMjcwOCBlMTk4Y2M5OGE0ZmQwZTdlMmYzMzlhNDJlNzQ3ZWQyMDJkYzg3MWQ2IGxlZ2FjeS10cnVuaworMjcwOSA4MzA0NjY2NDE2MGU5OTA5MmQzMzI2NWQ4MWI2Yjg2MzhiZWJkNGEzIGxlZ2FjeS10cnVuaworMjcxMCA0ZWZmZjZjZWE5MGY2OTlkN2Y2NTEwYTI5ODhlMGI2YjA1ZWRkNjE5IGxlZ2FjeS10cnVuaworMjcxMSA3NjZjZWM1MGQ3NjZkM2Y3YjU1ZDUyNmZiZDI4MmVmZmU2ZDRlMjJiIGxlZ2FjeS10cnVuaworMjcxMiA1YTYxZjgyN2Y0N2MzYTM5YjRhZWFjNTM5MDE2MzkzMWFhOGQ0Zjg2IGxlZ2FjeS10cnVuaworMjcxMyBjMTU4YzgzNDc2NTQ2NWI3MzczNWMzNzRlYTI0ZWE0NmIzMWI0OTJmIGxlZ2FjeS10cnVuaworMjcxNCAyNjQzMDZiNjFiODNmZWZjZjAzNGNkNDExZWE3MzZkYmFkMTBlMDY5IGxlZ2FjeS10cnVuaworMjcxNSAyZTI4N2ExNTAzYjI1MjY0NmY0ZDgwY2Y5YjZjNzNjZDVkNmU5MDI0IGxlZ2FjeS10cnVuaworMjcxNiAwNzgwYjk1YTY2MGVjODIwOThmM2E4NTRlMjYyYmFjYThhYjU5MWU2IGxlZ2FjeS10cnVuaworMjcxNyBhZGZhMDgyZjUyMGE2MTY2ZjZkMzVmNzMwMWM1NzAxODgxNGE3NjAyIGxlZ2FjeS10cnVuaworMjcxOCAxZWY2M2FkZjRmYzViYTY4NTY0NzQzMTJlMzJlMGMxYzBlYWU2MmJhIGxlZ2FjeS10cnVuaworMjcxOSBjZmI1MzMyMmM5ZDExNDMyZGE1MmUzZmYxOTYxOTY1ZGI4NGJkNDNiIGxlZ2FjeS10cnVuaworMjcyMCA2ODNlZGIwYzQ0NjM0OTI5ODM5ZjYzYTVjZGMzODg3YjM1YjU5MDlhIGxlZ2FjeS10cnVuaworMjcyMSAwNjE0ZDg4N2QxMGFiZDAyYmUxNGQ4OTE1OWQ5YTRkM2UyOTc5NmJmIGxlZ2FjeS10cnVuaworMjcyMiA0NDM0MzkzYjRlZGU2NTY2ODY1OGI0NmE2YjVlNWUyMzRmODFmMzI0IGxlZ2FjeS10cnVuaworMjcyMyAxNzA2OGE2YTBhYTUxN2I2ZDAzYWVlNzk3NTY0YWU4YTU1NTBhZWUxIGxlZ2FjeS10cnVuaworMjcyNCA3M2UyNjZiZjdhYzZiMDNiOTcyYjNiMzA2YzY3Y2NmZmFlNDBmNWYzIGxlZ2FjeS10cnVuaworMjcyNSBmOWMwN2VlNzkzMDIyZjY1YzJiY2JjYjU3YzcyMTFkMzJhNjIwOGU1IGxlZ2FjeS10cnVuaworMjcyNiA1ZmFmOTNlYjkyNTZlMzM2MzQzY2EyZDJmNjliMjRlNDI1OGZkNGIyIGxlZ2FjeS10cnVuaworMjcyNyA1YTFmOWFkZTE1MTI0MzIwYTAzNDkyMGIzYzUxMTA3YWFjYTE4MTlkIGxlZ2FjeS10cnVuaworMjcyOCA4YzE3OWQwMjM1ODNjZDg2MWQ3MTFmZjMxMzY5NGYxZDFmNTc2OWI3IGxlZ2FjeS10cnVuaworMjcyOSA5MjUwOWQzMDRlNDc5YzYwYTdhYjQzNTVlZGY4ZWRlYTVjN2Q4YWRiIGxlZ2FjeS10cnVuaworMjczMCA2YzM2YzI3M2Q1N2Q0ZDllMDIyMWJkY2RiZWQyMjgzMjU0NWUwZmQwIGxlZ2FjeS10cnVuaworMjczMSAzNGE3NjEwNDZkYmQ2OWY2OWRkMzc1MWY1OWQxODFlYjExMDI2YTFjIGxlZ2FjeS10cnVuaworMjczMiBhNWMyNDU5MjNiMzEwZDU2OGEwYWZlZmEwZTRmNjZjMzExMjk1M2ZlIGxlZ2FjeS10cnVuaworMjczMyAwODZiZGJiNjk3M2JmMzViNWM0ZWY5ODNlMGFhZTA5NGQ4YzQ0YmE2IGxlZ2FjeS10cnVuaworMjczNCA0Y2I1NTM1NjcwNmYzYmZiM2UxNGVlNWZmMjI4Mjk1YTc2ZGZlNTYyIGxlZ2FjeS10cnVuaworMjczNSAwM2I5ZjE1MmFkYjY5NTMyNWM1OTMxMTFhMTE4MzM2NzgzYzdmMTg5IGxlZ2FjeS10cnVuaworMjczNiBkZWFlODBlMDdhODFjOThlMjViMmMxM2YyYzJhZmI2ODU2NWU4MTRmIGxlZ2FjeS10cnVuaworMjczNyAzYjhmNDFmOTZlYjRjOTUzMzM2NzQxMGFjZjMyY2Q0MGYwMjY5ZTFhIGxlZ2FjeS10cnVuaworMjczOCAyZGE5MzRlZjI3YzAzODEzYWJkMWFmZTA4MjkxY2Q4N2QxNGRhZjdhIGxlZ2FjeS10cnVuaworMjczOSAxMmVjZWE2ZTk1NWMxMmIxMzNmOTRlMzZmNDBhMjQyNTgzNWEwMGM0IGxlZ2FjeS10cnVuaworMjc0MCA2ODg0MzQ2YzA0YTA0OGIzMGYzYzUzMzY1YmNiN2M0ZDhhYzE3MzJmIGxlZ2FjeS10cnVuaworMjc0MSAzMTY5ZDM4ZjY3NzQyYjk4MTYwNjJjOWFkOTRiNjk1OWQ4YzhjZWViIGxlZ2FjeS10cnVuaworMjc0MiBiYWUxNDk0ZjJlYzgxMDIzMGNiNTc0NTJiMDYwMzQ4Y2JlZjQyMWE3IGxlZ2FjeS10cnVuaworMjc0MyA1ZjcxZjE2NjA3OWQ0MDFkZmNjZjViNGNiNTEzNzc2MjY2YjY4MmZjIGxlZ2FjeS10cnVuaworMjc0NCBjNzJmMjZhYzQ5MWJhOGQ4MjI4ZWI4ZjZmNTdiODE2ZDM1ZjdmMTllIGxlZ2FjeS10cnVuaworMjc0NSAzN2FhNjdmMDg2N2MxMGY0NjM3YzdlMDBmNDRjZWIzNGYyYWFhNGNjIGxlZ2FjeS10cnVuaworMjc0NiAzNzkwNWZlMTg5MmEyN2RkOGI3YzQzNWY0NDQ0NDdmNDNhMDJjNDM1IGxlZ2FjeS10cnVuaworMjc0NyBkYmY0MDg5MTgyMDE2MWViNWU0N2QwNWJkZTliZmY2MzZiZDA5NDBmIGxlZ2FjeS10cnVuaworMjc0OCBkMTU0N2Q2YmI1YjVjZjYxMWY4Zjc3MzI1ZTI5NDBjMjIyY2RiZGEwIGxlZ2FjeS10cnVuaworMjc0OSA3ZDI0ZGU2NDNmYjUwY2FhYjNkMjQwNTk5NTJlYWMyYjc2MzZlMWY1IGxlZ2FjeS10cnVuaworMjc1MCA2MDc3NzA0ZGFiN2EzZjc5YjcxNjRlNGQxODEyYjY1NGNkZGEzMWE4IGxlZ2FjeS10cnVuaworMjc1MSBmMTFmYWU4ZWUxZTQyOWQ4MzZiZjI3OTQ0MzdiYWMzMjFjNTExZTBhIGxlZ2FjeS10cnVuaworMjc1MiA5Mjc2YjNlZTM5MzY3YzYxZDIxYmQxNDJjZDk3YmRkMmZkYmI3M2Y5IGxlZ2FjeS10cnVuaworMjc1MyA5NTcyYTdkMDlkZmY0NjJlYmVhZDQ5YzEwNDIzMWEzYTRlZWMzMmQyIGxlZ2FjeS10cnVuaworMjc1NCAwODY4MTc2MzY1ZDdmYWMxOGQ5ZTZlNDQ3NzhiMzk0OGU3MDQ3NWQxIGxlZ2FjeS10cnVuaworMjc1NSA0N2M0MmVhNjdhOGJkODUzMTQ0ZDk5ZDBiYThjZTc2MWM1NjNlNjczIGxlZ2FjeS10cnVuaworMjc1NiBmOWNkZWViZmNiNjcwYzMwNjg4NTU4NzlmNDk3MDk4MjlkOWQ4NDcyIGxlZ2FjeS10cnVuaworMjc1NyBlMThmMWZhMzk4YTMwYjNlMjVjYWZlM2M2ODc5MDgwZTJiMWQ3ZjVhIGxlZ2FjeS10cnVuaworMjc1OCA4MDBjZjQwODZmYjMzZDgwY2IzYjY3NzE0OWJmMTViNmYwMzIyZTU5IGxlZ2FjeS10cnVuaworMjc1OSBiMjA0ZjMxZmJjOTdlNjBkZDE3NDM3YjI0ODBkOWU2OGVlMmE5NTE3IGxlZ2FjeS10cnVuaworMjc2MCBhMzQ3OTMzYTZkOTIyZjYwNWY1MDJlOGNkMmFmMjhlYjNmZDk1ZGUzIGxlZ2FjeS10cnVuaworMjc2MSBkNDliNmE2NzI1YmQ4N2Y1MjE5YTczZDFmMDcxNTUzNDFjNDRlN2EzIGxlZ2FjeS10cnVuaworMjc2MiA4Y2RkNjJiYjUxNWNiYWEwYzE3OGY3NjE4YTYyYzk2YWY2ZGVhYjgzIGxlZ2FjeS10cnVuaworMjc2MyA1YTM1MTk1Mzk4ZWY1M2ZiZGQ1N2Q2ZDZiYzg4NDFkOGQyZTQ2MDA5IGxlZ2FjeS10cnVuaworMjc2NCAzNGQ2N2RhODhlODRiODRiNmQ4ZWQ3NzM3MjIxMjE5ZGZiYjJkNGIwIGxlZ2FjeS10cnVuaworMjc2NSA4YTI0ZWY0NGRmYjBhOGI0MmI2NTE0NThmNTVlZDc1MDc5MGY2MWRkIGxlZ2FjeS10cnVuaworMjc2NiA2YjM2MDQxNTljYTliMTE4YzY3MTAyZTY1Mjg0YWQ1MTU0NjY0ZWM5IGxlZ2FjeS10cnVuaworMjc2NyBjNzYzZmM2NGZjYWJiZTI1Y2I0ZjMyYjA0Y2M1N2FmMDdiZDcwZWE0IGxlZ2FjeS10cnVuaworMjc2OCAwMjE0YmJmNDdiZjZkZWU0NmVkMTUzMDA3MGU0MzE5Mzg2MjMyYWVjIGxlZ2FjeS10cnVuaworMjc2OSA5Mjc2YzI2MjVkNjRjYmZkMjQyYTNiZjQ1YzFiZWVmYzIzMGJmZjE2IGxlZ2FjeS10cnVuaworMjc3MCAwYWQ1YjM1ZTNhZDg5Zjg2MzU3NjA0Njk2ZmJhZmFhM2E3MzVlNDJhIGxlZ2FjeS10cnVuaworMjc3MSBkY2M2ZGUxYzM3YTRmNTM1MjZlMDYyNTQ0Mjg1NzZhN2I5OGY0ZTI4IGxlZ2FjeS10cnVuaworMjc3MiBlMjVlMjY1NmM4NTM3YjExNWYzODI2MTQxNjg5NmU0NGE2ZmU2Mjc1IGxlZ2FjeS10cnVuaworMjc3MyBmODI1OGY4NDEwNDZlOGQ2NDkyMDI1YzM0YmZhNTI3OTMzOWYyZjYzIGxlZ2FjeS10cnVuaworMjc3NCA0MDVhMmZlYzc0NTQxZGU3MDMzYzRjMzFkYjQ2Mzg0N2Y5ZTBiNzNkIGxlZ2FjeS10cnVuaworMjc3NSAxMWU4NjI3MGVkMGRjZmU3YjQ3Y2EzZTlhNGIzODQzOWEwYmYzNGE1IGxlZ2FjeS10cnVuaworMjc3NiA0MGEwZWM5OTRjNTQ5ZWNjODkzYjNiNzJlODE1MTI0NWIyYjAzYzA2IGxlZ2FjeS10cnVuaworMjc3NyA4ZDU3MjU0OTRlZGU3MzE2MGIwNzVmMjUwMGZkNDdhMzE3YTJjMjk4IGxlZ2FjeS10cnVuaworMjc3OCA3NTViYjhlZmNjMmQ1MzM0OWM4ZTA5ZmFjMzcwMGUxN2I3YjVmMTFhIGxlZ2FjeS10cnVuaworMjc3OSAxODllZTNiZWViYjVlNmY2YTUxYzQ2YWFjNzk0MWYwODdhZjNkMzc5IGxlZ2FjeS10cnVuaworMjc4MCBhYzdkNjQ0NTNhYTlmMTVlYTk4ODg4YTUxYjhjZTM1YzFkZjdlZmU0IGxlZ2FjeS10cnVuaworMjc4MSBkMWY2ZWM3ODhhY2Y3YjVmYzQ3MTVhMDA3NmFhM2IzOWI2ODE3M2Y5IGxlZ2FjeS10cnVuaworMjc4MiBjZGVjM2U4ODA1M2IzZGY1NWY3NzUxMjk4NDI3NWQzMjZhY2IyNjJiIGxlZ2FjeS10cnVuaworMjc4MyBhMGQ0YzVlZjFkNWQ3ODk1ZmRjNWJkZjc0NjRlZDQzM2QyNDBlZjFkIGxlZ2FjeS10cnVuaworMjc4NCA5YmU2NThkMTkzYTk4OWY5MjMxMzAyNWNjY2ViN2QzNTZjM2Y5ZDVlIGxlZ2FjeS10cnVuaworMjc4NSAwZTQzNjIwMGJmMTI4ODRjZTFkZDU1YjQ4NDQ1NTQ1NWIxMGMxZGYzIGxlZ2FjeS10cnVuaworMjc4NiA3ZmI1ZGVmYzhmNmZhYWE1OTVlYzFiN2I4NGQ2YTkzNTFlMWI1YTY3IGxlZ2FjeS10cnVuaworMjc4NyAyMTJhZDE1OGE4MDYyZTJmNTM4ZGEzZDAyNTRiODExNDA3ZTcwY2ZmIGxlZ2FjeS10cnVuaworMjc4OCAxZDY1ZjI4YzBhYTk3Y2I4NTM5OTU2NzgwNjczMDQ3ZWU4MDM4MDU0IGxlZ2FjeS10cnVuaworMjc4OSBkNDIwYWY5YzFiNzU3YTJmODI2MDUyYWJmMTRlZDU2YmI0NjZlNzNkIGxlZ2FjeS10cnVuaworMjc5MCA0MmE2YjhlMTM5MWEwNzg1YmViYWI2NGYyZjgxY2NkMGMwOGExNTEwIGxlZ2FjeS10cnVuaworMjc5MSAwNGVkNDc2NWIxN2NlNTMwZGYxNGRkOTRlYzk0NWQ2ZGVlZDAzMzQzIGxlZ2FjeS10cnVuaworMjc5MiBmNWEyYmMzOWUxMGUyYTRkNGQ4ODczNzNiMWRlOTc0OGE1N2E0ZGRlIGxlZ2FjeS10cnVuaworMjc5MyAwYzE5MzhmMmUwYzAyZjg0YjVhZDYyYTFjZDU1Mzk1MzRiOTBjZDEyIGxlZ2FjeS10cnVuaworMjc5NCAxZjZjNTkzZWRhNjg3YjI5ZDUyMDMxZDdmZTE3Mzk2MTI1Zjc0MTBiIGxlZ2FjeS10cnVuaworMjc5NSA4ODU5OTZhMWE2MzE4ODBlZjYyOGJhY2FkY2RlMGJiOWY4M2UxOTA0IGxlZ2FjeS10cnVuaworMjc5NiA3ODRhMDlhNTIzNzVjNGU1NTJlOGUzZjgzZWRjOTczZGM3NjU5MmZmIGxlZ2FjeS10cnVuaworMjc5NyBkNWJiOGZlNDNkZjJmM2JmYjMzZTc5OGRjYmY4OTU4OGRjYjQyOWNmIGxlZ2FjeS10cnVuaworMjc5OCAzY2I2ODZjNDhjZGRkZjgxYmU0MzQyYmJkZmFjZTcxNGVmZDY4Zjg0IGxlZ2FjeS10cnVuaworMjc5OSA5ZDAxZTk4ZWQ4NDkzZTA3NjZiNWU1ZmYxMjU5ODA0ZjcxODliZDU0IGxlZ2FjeS10cnVuaworMjgwMCAyZjk1YTAxZDZjMWYzYzY0NTZkZmQyYWQ0Nzg3M2ZjNjA0ZjhhNmFjIGxlZ2FjeS10cnVuaworMjgwMSAwYjM4MDAwZmM4MjNkZjc4MGY3ZGQ4NmQzY2Y2MTIyMjgyOTk3ZmRiIGxlZ2FjeS10cnVuaworMjgwMiBiMTYyYjI3NDAwYmM1MDJkZDBlY2M3NDNkYWEwZmU1Mzg2ODQ5ZmU2IGxlZ2FjeS10cnVuaworMjgwMyAwZWZiOGRkZjZjMGVkNzhiY2EwM2YzNTY1YWMyYjFkNDI4ZTY1MmNjIGxlZ2FjeS10cnVuaworMjgwNCAwMmQzZjE2MWI3ZjU1NzAyYWRmYTQ5NWEwMDFjZDFhNzNiZjU2YjFkIGxlZ2FjeS10cnVuaworMjgwNSA1OWY5MzI1YmI4ZWNjM2U1ZGI0MGIwZDY1MDNjYzc5MTc0NjM4YTBiIGxlZ2FjeS10cnVuaworMjgwNiBjMGU3YjBiOWI3NTA3ZDQzMmYxZTA1ZjVhZDFlN2E4NzVhMmU0ZDVkIGxlZ2FjeS10cnVuaworMjgwNyBjODMyYTJiMGQ0MzMwYmQ4MzE1MjFmZmRmYWNhYTgzZjg3OTRlMzRiIGxlZ2FjeS10cnVuaworMjgwOCA4YmJhMTRmN2RiOGExZGNmZTk3MzA4YjJjYzUwMzA0MzMwZWY4OWNmIGxlZ2FjeS10cnVuaworMjgwOSBmNmNjN2FhMzFkZTY5ZTlhN2M2MjFhYmFlYTdlYzA1ZWYwNmNhNjE1IGxlZ2FjeS10cnVuaworMjgxMCBkYTViMTQzMzQ2N2MxY2E1ZjU5NGVkMjc5Y2Y5MmQ2MTI1OTQ1Y2U0IGxlZ2FjeS10cnVuaworMjgxMSA0ODlmZWNjMWRhMjg2YWFjMmY3ODNhYjMzNTRhNTg2ODZmZjY2NjJjIGxlZ2FjeS10cnVuaworMjgxMiA3M2ZlN2ExYTVkZDQyZTM2NjI0YjExMzVmNzZiODJiOGUwYjA3OWViIGxlZ2FjeS10cnVuaworMjgxMyAwNDU3YzQ0MWIwODYwNzc5YTcxOWUwNWVhNTI5NTY4YTc0MjlmZGI4IGxlZ2FjeS10cnVuaworMjgxNCA3NDk0MmVjNzA0MzBhZThmYjU0ZmQ0ZmExYWU3Mjk1NDBjODMwYTIxIGxlZ2FjeS10cnVuaworMjgxNSAyZTBkNjg4MjAxM2VmZmRlNjQyMmRkYWVlMDJkNzQ5ZThlZTNkOGFlIGxlZ2FjeS10cnVuaworMjgxNiBlNzI5M2I1YjU3MGQ5ZDYxOTFiMTBhZTQ4MGVmOWE0Mjc1NGZlYWM1IGxlZ2FjeS10cnVuaworMjgxNyBmNmY5ODJjYjU0MDEzMjJiNGM2ODY4MWNjYTA1Y2Q1OGE0Yzk4OTUxIGxlZ2FjeS10cnVuaworMjgxOCAzZTYyNmM0MTNiYmY0ODhmYzI4OGZmYWMxNmYwOTFlZWE5ZTc0Yjk4IGxlZ2FjeS10cnVuaworMjgxOSA1YjUyMWZlNGQxZjY0OTZiMGQzMmYwYzFlMDM4OTM3Zjc0YmQ1ZDQ2IGxlZ2FjeS10cnVuaworMjgyMCA2ZDE1OTliZTJiNTRlMGU0MDA2MmFlYjA4Y2UzMWVmNzNhNjU0YTBlIGxlZ2FjeS10cnVuaworMjgyMSBkMzc3MGIxZGE2MTE1Mjk1N2I0ZWMyNjZjMTNkMjhkNjMzMWIzNmU4IGxlZ2FjeS10cnVuaworMjgyMiA3ZTVmNGQ5YWVlNzdiYzZkYmFmYWZiOWE5OTNiYTJjMThjMjQzNGJmIGxlZ2FjeS10cnVuaworMjgyMyBhYWZmNjUwZDdlMTM2NjBhYjFmZDZiZDM0YjNjYzAyOGU3ZDM0OGI1IGxlZ2FjeS10cnVuaworMjgyNCA1ZWQ2YWRiYjk1ZjM1OTAzMmRkYWQ2M2Y1MThkYjM4ZDZkNjIyNDcyIGxlZ2FjeS10cnVuaworMjgyNSBlM2I2M2E5OTE0Zjg3MDI5YzM0NjM5Y2Q4ZDJhYWJiY2M5MjY1MzU5IGxlZ2FjeS10cnVuaworMjgyNiAxODkwNzgxMzYzNTE1NzFhZmEyZDQ4NmZkOWQyOGJlNGQyMTAzZjczIGxlZ2FjeS10cnVuaworMjgyNyAyODM5MDM3NWEyYjlhZTY2NTAxN2YyMGY4NjQ2YWFlZTZiM2VhZTgzIGxlZ2FjeS10cnVuaworMjgyOCAxNjRiNTZmYTY1NThlYWFhMmYyMTZlZTNjNDI0YTc5ZWQxOWUyZWFhIGxlZ2FjeS10cnVuaworMjgyOSAxMDQ5ODY3ZGNhMWY5NDgzY2E3NTg4OTVlZjQ5MzhhYWU4MjdiMGQ0IGxlZ2FjeS10cnVuaworMjgzMCBjMmJhODg3ZDk0OTJiMWIzYzQ1YTJlMzg2OTc2OTMyYzc4YjI4ZDI2IGxlZ2FjeS10cnVuaworMjgzMSAyY2RkYmJlYTliZmIzMjNjNTcyNDhkZGEyZDVhY2IxOTdmNGEyZjcyIGxlZ2FjeS10cnVuaworMjgzMiAxMDAwMmUxYmM1MjY0MmQ4OGUzMGZkMWU0NDI0NTBmZDAyNzI4ZWFjIGxlZ2FjeS10cnVuaworMjgzMyBmZmRkZTdmYzcxYzFlY2I4MmQ0ZTRiZTYxNTUxNzZkN2RjOTA5NzU5IGxlZ2FjeS10cnVuaworMjgzNCA3MWQ0OTYyNTlhZDM0OGU2ZGUxYzM3M2JmNDU4MDlmYzA1ZTEwMzE0IGxlZ2FjeS10cnVuaworMjgzNSA0ZTJkMjM5ZGM2NGM4ZjEyYWVlOWYyODhlMWM3ZjFlM2E0YmU2ZWVkIGxlZ2FjeS10cnVuaworMjgzNiA1YWZmOWY4ZmQyOTk1ZWZiMmMwZTVmMWI1Mzc1MmU4N2RhZjYyNmM2IGxlZ2FjeS10cnVuaworMjgzNyBlMzRlYmNiYmRjYTZmZmE0YjliMDg0MWMyNTY2MjQ0ZWRlYTQwYWNmIGxlZ2FjeS10cnVuaworMjgzOCA2NDQxYWE2YTQxMjY0OTg0ZmE3ZGIxNDRmNzA0OWM0ZmIxNzQzYzViIGxlZ2FjeS10cnVuaworMjgzOSAyMDViOTQ3YjFkM2MyNmM3NjA0NzU2YzgwOTEzN2I1MTE1MGUyMjYyIGxlZ2FjeS10cnVuaworMjg0MCA2YTYwMzQyYzMxMDc0ODM2YTQ1ZGNjYzgyNDFjZTc1OTk1MDUwNDJlIGxlZ2FjeS10cnVuaworMjg0MSAxMDJkZTMxOTk5OGUxN2UwZDFlYTkxZWZlNTc5NDBmMTUxMmNiZTQzIGxlZ2FjeS10cnVuaworMjg0MiAxMzg2YTcyYWU2MDQ3ZDk3NjA1MjFmMDJkYjk0Nzk3MjVhMjczYzY3IGxlZ2FjeS10cnVuaworMjg0MyA3NTQ0ZWJhYzU2OTg3ODE2ZGJlNjFiNmM0ZTUyN2JiNTM0MGM1Mzg2IGxlZ2FjeS10cnVuaworMjg0NCAzYjA5YjQwY2VmMWQwOWZhYzE2NWY1NTU1YmQ1YzhkZDU1ZGE2NWU5IGxlZ2FjeS10cnVuaworMjg0NSA5MTI2ZjRjYjFjY2E0NzA1YzdjZGUyZWY1NDRkMmI2NWNhNzE0YmYwIGxlZ2FjeS10cnVuaworMjg0NiBjYTI4YTNhODJiYmE4NDgxZTI0ODc4ZTcxNDEzYmEzN2UwYTQ1NDdmIGxlZ2FjeS10cnVuaworMjg0NyBkMjQ0ZWUwM2M1NzZlNzI0ZmE1ZTdkMDQ5YWMzYTI1M2E1NGM0NGFiIGxlZ2FjeS10cnVuaworMjg0OCBlMTViZWE5NzFhNWJkNTM3OWU4YmI1MzMwNjBiMWY1ODY1ZWEzYjlhIGxlZ2FjeS10cnVuaworMjg0OSA1YjcxODYzYzgwMWQyOTZmNTIzMjI0NzVjMTY2NGU4Y2FjMzZjNDIyIGxlZ2FjeS10cnVuaworMjg1MCA5MGVhNTA3ODYwOTUwYTMzZGQ4NmJiMjYzMmM4NTMzMzViMTIxMTEwIGxlZ2FjeS10cnVuaworMjg1MSA4OTFmOTgzNTdjMDQzNTVhZDJiMmQ0ZTlmZGMzNjEyNDlmMzJmZjUxIGxlZ2FjeS10cnVuaworMjg1MiBkNmZhNjRjZWM0MTBlNjBjMGE4NjYyNzM2MDQwY2EwOTYwYzBlNjdkIGxlZ2FjeS10cnVuaworMjg1MyAyZGJkN2U4NDRiZDA4MjdhNGRiMjAyOGIxMDg5YTJmOWRjNGFiZjdkIGxlZ2FjeS10cnVuaworMjg1NCBiNDliYWFkOWI2NDA2Yzc3NzQ5ZDQxNzg5NjRlZGFiOTQwNTVhNTUwIGxlZ2FjeS10cnVuaworMjg1NSA1YzE4ZDZjNTc4Mjc0MmYyOWZiMTdhNGFjN2Y2NTM2NjhmZDAyOThiIGxlZ2FjeS10cnVuaworMjg1NiA4N2FiOWM4MWU5MjdlZGQ2NmQ4YjhjOTJlYTFhY2M4YzQyYzIxNzQ0IGxlZ2FjeS10cnVuaworMjg1NyBmMzdmOGJjOTE5MGM1NmEwZjVjNDIxOWJhNTRhNGM4NTcxMDIxOGVkIGxlZ2FjeS10cnVuaworMjg1OCA3YzA2YmYxNWZkMmFiZGUxMDk0MTFkOGNhMzE4M2E1ZWM5MmM5MzJiIGxlZ2FjeS10cnVuaworMjg1OSA4YTYwNjQ5ZTc5ODdlNTFhNzU2OGYxZDlmMjI0NTYwZDdmMGRiODk2IGxlZ2FjeS10cnVuaworMjg2MCA4MmMxMjU5YTRlZjMzMDJhMDczMTIzNmJiOWYxNTJhMTE5MTdjZGNhIGxlZ2FjeS10cnVuaworMjg2MSAxNDExOWIxOTQ4ZmI0MTNiNWQ2Mjg3MzNkNWNkNGIwNDgwN2NhYzEwIGxlZ2FjeS10cnVuaworMjg2MiAwOWNlMDRlZjcyM2JlNzFkZTVlZmIxODRmYjAzODZkNWU4OTE2YjkwIGxlZ2FjeS10cnVuaworMjg2MyBmNTNkY2I5YTA0ZDYzODI1MTdmYTAzNDRlY2IzOTYzNGUwOGE3NTBkIGxlZ2FjeS10cnVuaworMjg2NCA4ZmZhZTBiNDZmZDQ5MjdiOGYxNjlkNmE3N2Y1Y2Q2YjAxYjYxY2EzIGxlZ2FjeS10cnVuaworMjg2NSBhODAyMmIyYTc3ZTYwOTZhMWI1ODVhZTFkZjRhNDI2M2VjYWFjMjZkIGxlZ2FjeS10cnVuaworMjg2NiAxZThlM2FiNjdiNDU4NWU0ODVlMjNmYWQ1ZTM2YmEyMGZhZTBjYWIxIGxlZ2FjeS10cnVuaworMjg2NyA3NTgyZWQxMzY4NGU0OTc4MDY3M2IzYzBjMTE0MjMzNDdiN2IxMjIzIGxlZ2FjeS10cnVuaworMjg2OCBiZmRkNmU2MjZkZDM3MGFlNDJmMmVjOTdjMmFmMzhiOTFhN2Y2YWJjIGxlZ2FjeS10cnVuaworMjg2OSA4YmNiNTBmNDM2ZmFkZWU2ODgxYTJiZTVlNDJhMmVlNjQwY2M1ZmYyIGxlZ2FjeS10cnVuaworMjg3MCA3MjM2ZTAyYzQ1NjMxMjY3NGVmYTdjNzZhYzA5Zjc3Y2IwNzQ5Yzc0IGxlZ2FjeS10cnVuaworMjg3MSBiYzVjNzdmYTgwMDY4N2NmZTc0MGZmYzkxNDcxMGI2NDU5ZmRmMzBiIGxlZ2FjeS10cnVuaworMjg3MiAzZDljMjMxMGFmZTg1YmM3NTBhZTU2YWQ0NWIyZTVlYzFhNWNjNWRhIGxlZ2FjeS10cnVuaworMjg3MyAwMGNkYjhkZWRkNmYyYTU0NjAwNWVkZWNlZmY4ZjUyZmU4NmMyMTA1IGxlZ2FjeS10cnVuaworMjg3NCA4NjI0NTdlMDIzN2NhNThmNTg4MzU3MWRiNzUxNmQzNDBlMDkxOTBmIGxlZ2FjeS10cnVuaworMjg3NSAyNDAzZmI2ZWFlYzYyMWMzNThlMmE1Y2U1NTAyNGZiNDc2NzYzMDk0IGxlZ2FjeS10cnVuaworMjg3NiA5M2UyMTVkYzFkNmVmMWUyYzdlMjE2YmEyZTA3ZGI2MzFjODk2NTI2IGxlZ2FjeS10cnVuaworMjg3NyA0ZDY0YWJiZGY3MGE5NjkxMjYxNmUzYTRiNzM0YTg2YTJlNzA3MDk4IGxlZ2FjeS10cnVuaworMjg3OCA5ZTkxNDVhYmM0MmFjNDU0ZTU4OGU3NGIwMzY4Yjg2MDllMTY3NzM2IGxlZ2FjeS10cnVuaworMjg3OSA0ZDJhMTk5ZTEyMDJhNmI3Mzc4OGUwOWE1YWNkMWIxZWJlMDY1NTg2IGxlZ2FjeS10cnVuaworMjg4MCBjY2UwNWE0NzZlMDQxMmVlMGMzMjI4ZjU2YWFhNjRkNDA1OWJlM2E5IGxlZ2FjeS10cnVuaworMjg4MSBmNzI3OGEwNjdmYjQzMDM2NWIwMTIzMjE3ZTJiNTZkYjZiZjM1ZWQxIGxlZ2FjeS10cnVuaworMjg4MiBkOGIxN2ZhYjNhOTgzZjEyN2U3NjdiOTAxNmQwOGM4ZGU0ZmEyODAwIGxlZ2FjeS10cnVuaworMjg4MyA1N2U5NGViYTI0ODQ4Y2I4MDU3YzEwZWM3YjVmN2VhZGM5YzIzOTk0IGxlZ2FjeS10cnVuaworMjg4NCBlNzU3MWExOGJkZWYxZDAyMTQ1NWVkMWQyZGRjOTQ5YWNhNTIzYWY1IGxlZ2FjeS10cnVuaworMjg4NSA0NzZiYjdlNWI4NTQ3NTY5YjE4ZTdkMWIwMDhkMDk4OGIzMmZkNTVmIGxlZ2FjeS10cnVuaworMjg4NiA3NmU0ODcwMTIwNGJmMjM3Yzk5MTk1OWE3NmY0ZTI1Njg2MGIxZWNkIGxlZ2FjeS10cnVuaworMjg4NyBlOGM2ZmE5MTE4ZWJlOWVmZjZiOTg2Njg2MzE0NTk1OWI4YWE5ZGEzIGxlZ2FjeS10cnVuaworMjg4OCA5YTc1NDQ4NmVmMGI1MTIxYjI2YTI1ODQ0ZGZmNDczY2Y3MDAwNDljIGxlZ2FjeS10cnVuaworMjg4OSA3NmQ5MmViYjRkODJhNzVjNTA2M2RkZjU4YzYwMGE1MjFkMGZjZGY5IGxlZ2FjeS10cnVuaworMjg5MCA4MmRkMDgxZjM4MGQ1NGE3NDk0OGViMThjOTBjMTViZTIwNTRkZDQyIGxlZ2FjeS10cnVuaworMjg5MSBjODE5NTJkOTdlYmU4YWQ4NzY3MmNlY2JiMzk1OWRkY2E3ZmFlNmE4IGxlZ2FjeS10cnVuaworMjg5MiBjNjVmYzE3MmYxNmRiYmE2ZmRlYTljZDliMWJiOGRkYzNjNWZlNWMzIGxlZ2FjeS10cnVuaworMjg5MyAwMzM4YzdjOWYwOGM5OWFiZWU5YzhiYjI3NGRiMzkyZjJiOGUyMWJhIGxlZ2FjeS10cnVuaworMjg5NCBmMTc5ZDhkNWVlOGM4NTNkY2NmOTZjOWQwNjEwOTQ3MjY1MzczMGJjIGxlZ2FjeS10cnVuaworMjg5NSBjZjVjYWJmYjNmNzFmNmI3NzliMTRjYTg3Njg2ZmNkMGM5MDdhYmNjIGxlZ2FjeS10cnVuaworMjg5NiAxZTIwNWQwODc1ZjYyZGY1OTJhNTMzOWQyMjJkYTAxMTk5NGM5MjhmIGxlZ2FjeS10cnVuaworMjg5NyBlYTBiYWQ5ZmRmNjczNGU5MDk0M2M5NTI0NjIxNTdmOWE3MTMyNGZmIGxlZ2FjeS10cnVuaworMjg5OCA4MjQ2NTc2ZWYzZjUzNTk2OTU3ODEyNDgyMmIyNzk1NTI4ZjU1OGE0IGxlZ2FjeS10cnVuaworMjg5OSA1NWM2MGU3ZjMxZWRhMjczYmQ2MjA3YmY1YTJhMjMxMDM5Zjk5OGRlIHVubGFiZWxlZC0xLjUuNAorMjkwMCAwNzhmOTAxNWYxNzg5MjhjNmQyMjM0OTEyYjk5ZWMwMTY4M2IwNTQ5IGxlZ2FjeS10cnVuaworMjkwMSBhYjFiMzQ4NmIyMjYzOGY1NGFmNmM5YjBhZjI2NjQwN2M3OTE1ZmQwIGxlZ2FjeS10cnVuaworMjkwMiBkNzc4MjQ1NDNiY2U5NmE5ZjAwNjQ5MmJkN2U4OGM4ZjUyM2Y0MGUwIGxlZ2FjeS10cnVuaworMjkwMyBkYzYwOTUzZjYwNTI5OTA3YjgwZjBmYzhkOWFkYzBmMzM2NjIwYTdlIGxlZ2FjeS10cnVuaworMjkwNCBmNzEwMTEwY2ZkMzkyYTU2YmEzYmU5YWZkOTJhY2IxOTYxZjMyYjIyIGxlZ2FjeS10cnVuaworMjkwNSBkYmNiNDlkNzQyYTBjZmYyYWMzMzgxMGI5NDc3ZWM3YzEyYjM1NDQzIGxlZ2FjeS10cnVuaworMjkwNiA4MzRkZDRhNzdlZTIwZjk5OThiNTZmZTIxZDhhOWQ4OTYyZmM4NjAxIGxlZ2FjeS10cnVuaworMjkwNyBjN2IyM2NjOGNkZWRhZmY0ODcwZGRmNTNmMzhiYmE4ZTQ3ZDU5YjM4IGxlZ2FjeS10cnVuaworMjkwOCA2YzBmMTYwMDhiZDlkNDBmY2FjOGI1MTg5ZTFlZjgxNThlMTk5MjE4IGxlZ2FjeS10cnVuaworMjkwOSA0NWM4MTg5Mzk0ZmYwZTNlOWQ5NjIwMzMyYThjYTE4MzI1NDI2MGU2IGxlZ2FjeS10cnVuaworMjkxMCA3MGMyZjQwNDMwYzc2OTVlZjkyZDhjYzMxNWYzMzNiOWNiYzE5MzRlIGxlZ2FjeS10cnVuaworMjkxMSAzMjA4NWVkZDc3YTdkODk0ZjI4MzU3MGFiZTM1MmUxMDAxMWEyZTdlIGxlZ2FjeS10cnVuaworMjkxMiBmZjNkYjk1NWU2MjhmMzQxNjQ3NWY3NmQ0MmFkOWJlNDUwOGVmZDdiIHVubGFiZWxlZC0xLjUuMgorMjkxMyBhNWU2ODgxY2ViZjA5YzgxNmI4MDU5NjMwYjc4ZWM1NTExMTM5MmU3IGxlZ2FjeS10cnVuaworMjkxNCAwZDQ5NGJjMjQyMDdmNzdhNTZlZjc0NWNhODQ4NjFiZTkxN2E2MzJmIGxlZ2FjeS10cnVuaworMjkxNSA4YmQyMTk0YWQ2ZjlhOWI1M2U4ODI0MDlhMGZjYWI5ODZjNTYyOTg3IGxlZ2FjeS10cnVuaworMjkxNiA4ZjdiMzFhOGE2Nzg1Yzg0NjY3MDlmNWQzZjMzZmE4Y2FkYjU2MGM1IGxlZ2FjeS10cnVuaworMjkxNyA2ZmJiMDNkYzQzOWVlMjY5YjI0N2FkZGZiZTNhYTBlNTQ4M2YwNmFmIGxlZ2FjeS10cnVuaworMjkxOCAyZGQ1ZGJmMjhhMmRkNTVkNGFlNzJjYTVjMTg0YTJhMTEzZDM2NGQyIGxlZ2FjeS10cnVuaworMjkxOSA1ZDJmNjJhZDhkZWVjMTIyM2RmYWJkMGM1NGU1NWFjYzZmYmYwMGJkIGxlZ2FjeS10cnVuaworMjkyMCA5ZGUzZDAyYWE3NWQxOWFiOTI4ODc5MjQ5MGJlNDU2ZGM3NGZjMmM0IGxlZ2FjeS10cnVuaworMjkyMSBiZmM2NTUwNzQ1MjNkMGFiZjQwODI5OTVjNzE1NDI3ZmEzYTIxMmRjIGxlZ2FjeS10cnVuaworMjkyMiA0MWRkMzkzNDg3ZjU5MWE0NGNhYWVkM2NjZDY5Y2ZhNzY0Y2ExZTNlIGxlZ2FjeS10cnVuaworMjkyMyA5YjY3MWYzOTdhOGYyNzAzNzA5OGNhMzY2MTQ4ZTRkNDJkZGQwYjgwIGxlZ2FjeS10cnVuaworMjkyNCAxZGZiMGM5ZDA1NzY3ZDBjZGI4MDM3YTZhN2MxNWEzODY1OTIzNmFkIGxlZ2FjeS10cnVuaworMjkyNSA1N2MzZTljZmVlNDBmZjg1OTlkMDFkNTFlZjYzYmM4MDExOGU3Y2JiIGxlZ2FjeS10cnVuaworMjkyNiAwN2Q1ZDYyYTRhMmIyMDE2NjBlMzAwYmQzYzZjNmQ1NTU5NDg0OGM5IGxlZ2FjeS10cnVuaworMjkyNyA3ZDg0ZTBkZGYzYmUyZGM4NjQ0NDRhODYxZDY1N2U4NjA5ZjhjZTgwIGxlZ2FjeS10cnVuaworMjkyOCAzODkwZjQ2ZDZlM2I3MTE0OWE2MDdlNmUzNzliOTNkNDY1MzQzNTA3IGxlZ2FjeS10cnVuaworMjkyOSAwNTM3NmM5MjZmNTgwZDk5YjFkODlkNzc3MWNlYWU3MTNkMDgwNGQzIGxlZ2FjeS10cnVuaworMjkzMCA3YTBkMDNlOGJkMjliYWU2ZDk4NGMzNjFjYzE1ZDA0ZTY3ZDBjM2Y2IGxlZ2FjeS10cnVuaworMjkzMSA2NzYwMzFiZjQ0ZWUxYWQ1MzlhNWQxZWNkMDYzYmUyZGVlMWI4YmJhIGxlZ2FjeS10cnVuaworMjkzMiBmODQyMWRhNGVmYTc2YjdkNWQ1OWQ4N2IyYjQ5MDE0NmI3MjM4MTE3IGxlZ2FjeS10cnVuaworMjkzMyA3NDQ2OTZiYTg5MjdhZTdiY2FmODVlNjVjZTdiOTI1YjQwMzViMTFkIGxlZ2FjeS10cnVuaworMjkzNCAyZTgyZGQwZjhhOWUzN2RhYzcwYWMwNjYwYjBiZTQ1YThiOTg2NDM2IGxlZ2FjeS10cnVuaworMjkzNSBkOTQ1Y2YzM2E2NGY0NjhhYTdiZWJkMmZkYzk1ZjU5YmVjNTQ1YTRlIGxlZ2FjeS10cnVuaworMjkzNiBjNzIxYWZhYjBlZmE2MWU1YThlMjIzMzZkZDc0ZTBiODdiZjE3Mzg4IGxlZ2FjeS10cnVuaworMjkzNyA3YzhhYmNlMTk3OTg0YTlhNjIyNWE5NzI4NjI5YzhkNTYwMTA5NGY2IGxlZ2FjeS10cnVuaworMjkzOCA0NWIzYTc4ZjI1NmJhZTZiNDk4ZjdjMWQ2Mjk3NGRhMjEyMjViZjcxIGxlZ2FjeS10cnVuaworMjkzOSA3MjU5ZTk2YTA0YTlkNDUxNDBmMGQ2NmM2MmNlNzZjMDlkMjI1YTA3IGxlZ2FjeS10cnVuaworMjk0MCBjMGQ0Y2FhNzFiZGFiMTJmYjBhMzMzYWYxNDBjMTVkZjllNWY4NzBlIGxlZ2FjeS10cnVuaworMjk0MSA2MTYzMDIwYTk2N2RiYzNmN2I5NWEyZDk4ZWUyNjU1ZjE1ODU2ZWQ5IGxlZ2FjeS10cnVuaworMjk0MiBiMzdhYzkxZTJhMGRhNGI4MDhiZjJiNTQxOGMyNzQwNzM0YWJkMjFkIGxlZ2FjeS10cnVuaworMjk0MyAzMGE2NTIxMDE1OTlmZjFlNzg2YTkwYjFiMTAxNjVmYTU0ZDkzYThhIGxlZ2FjeS10cnVuaworMjk0NCA2ODU4NDMxNGExNTQ3ZmRlOGE2NzBiNjBkYWRhYjBjMGMxYWRiYzEyIGxlZ2FjeS10cnVuaworMjk0NSAwMTJlMzdmMDUwMTkwZjE5MTE2NWY1YTk4OWJhNjEyNjI3MDBhMzFhIGxlZ2FjeS10cnVuaworMjk0NiAzZTFmYmU4NGNmOWZjNmEyNjMwYWEyYTA3ZDE5M2RlZjQxMjA0YTNiIGxlZ2FjeS10cnVuaworMjk0NyBmYmQ2OGU2OTIxNGMyN2UwNTk1MzgxM2ZhMDE4NDU0ZjhmZmNmODEzIGxlZ2FjeS10cnVuaworMjk0OCBjZDgxZTU2ODA0YjA5NDJiMWE5ZDQ1MDYwYzNmN2MxMWUxYjExYWVlIGxlZ2FjeS10cnVuaworMjk0OSA2M2QzNGU4NzdhNjk3MDhmM2RlYmRlMWU0NjQ1MjY4OTNkOThhYjA5IGxlZ2FjeS10cnVuaworMjk1MCA0NDMxOWRmNmE5MWMyOTY3NzIzZmVlNTA2MDAyMTI0MTVmN2E4NWFmIGxlZ2FjeS10cnVuaworMjk1MSBiYTRlYzEzYzBmOWY5ODJlZjliNWU1NDJkMzVhNjNhNTU1MTY5NWQ1IGxlZ2FjeS10cnVuaworMjk1MiBmNTY1Y2Y3ZjlhYmE4M2MxYTgwYzcxZTE4NDdmNzM1OTcyMWUzMTk5IGxlZ2FjeS10cnVuaworMjk1MyAxNjQ4NDlmNTYxMDVmZTJjMzA2MTlhNjRhZmUyM2RjNTVjNmVmOTQ0IGxlZ2FjeS10cnVuaworMjk1NCA3N2VlOWIyMjJmZGI0YTQ4ODg1Nzg1ZjlhYTYxNDI1YmYxNWY4Yjc1IGxlZ2FjeS10cnVuaworMjk1NSBkYzNiNDU1Zjc2MzI3NzM1YjA2NWJiZTA2ZTAyODA3MWM1NGUxOTAwIGxlZ2FjeS10cnVuaworMjk1NiBjYmYwZWY5OThhNGExZTU3Y2ZkYWU2NDg3ZDc0NzRhMTVjYjU5YmFmIGxlZ2FjeS10cnVuaworMjk1NyBjN2JjNTYxNGVlYWQ1YjRmNjlmYmQzZmJmY2ZlOTY3ZDVmOTYwMDliIGxlZ2FjeS10cnVuaworMjk1OCAwY2QxOTc5NDdkODE0ZTljZjIyYjlkNDRhOWY2NjlhMTdkMDcwNjVlIGxlZ2FjeS10cnVuaworMjk1OSAxMzYwNjE4NDA2MjQzNDE1Mzk5YWM2NjMzMjNmOWQ5NDEzN2RkNDMwIGxlZ2FjeS10cnVuaworMjk2MCAzYzhiNDQyZTVlMWYyZTZjZTMzYWE0ZjU1ZmU3YjgwZDkxZjQyNjQ3IGxlZ2FjeS10cnVuaworMjk2MSBkZmIzYjBlYzFmZjkyOWE2ODIyY2Q1YmM5MGMwMjAzZTYzMjhjOTFjIGxlZ2FjeS10cnVuaworMjk2MiA3ODRjNTFjYjFiNzk3MGI3YTFjN2UwZDBiMTRhZDk2MDU2NzczMzYyIGxlZ2FjeS10cnVuaworMjk2MyA0NGVjZmY2ODg0YjdkNzFjZjRjOTgwZmU5YTJhZDgwMDMwNTlkMGRjIGxlZ2FjeS10cnVuaworMjk2NCA5NjUyZmM4MzBhMTJkOWFiYTlhZDg2YzBjNGM2Yzg3ZWJlOTZkNWI5IGxlZ2FjeS10cnVuaworMjk2NSAzZDY1NDFhMmVjYTVhMDYyNWU1ZjQyNDQ5MDA0MTU1MmQyYWM5MmE3IGxlZ2FjeS10cnVuaworMjk2NiBkMDU3MDRhMDAwZWJkZTVkOTFhMjNjZTE2MmVhY2M3MzQ4ZjExZGU5IGxlZ2FjeS10cnVuaworMjk2NyAzYWRlY2UyYzg1NjcwNDVkYzE5N2ZmOThjZGY4YjNiNDNlNWFmNmU3IGxlZ2FjeS10cnVuaworMjk2OCBiYWIyYmViZDM1ZTczNTgxYWU0ZDg4OWMxZTViMDRiZmZkNmMxZTA4IGxlZ2FjeS10cnVuaworMjk2OSAyNTk5MjNlNGQ3YjE3ZmJjZDAwZDY4MTdmNzlmMWE3YmMwNzQzZDhlIGxlZ2FjeS10cnVuaworMjk3MCA0M2M4NmQxZWIyMmMyOTQ2NjYwMzE4MzI4ZjhkNTU5YzA1N2QxZTYzIGxlZ2FjeS10cnVuaworMjk3MSAwY2ZmMzZiMTEwZmU1NTI3NDY5ZDA2YzM2MTE4NDBhMmQ3YmRkYTgxIGxlZ2FjeS10cnVuaworMjk3MiA4NTdlZDNmYmRjMGVhMzlkMmIwOGYwNWNmNjg4NzlmYTY0YTNkZTczIGxlZ2FjeS10cnVuaworMjk3MyAzNzczYjZmNmRkNTNiY2ViNmM0N2QxYzY3YzRlN2U4MmRmYjA5NzNjIGxlZ2FjeS10cnVuaworMjk3NCBkNmUyNTc5MjMyM2ZiNmJmY2U0MTk3MjZiYWFiZTc4ZmNjMTFlOGU0IGxlZ2FjeS10cnVuaworMjk3NSA5NGVhNmVhN2Y3ZDU1NmFmN2U1OTY1YzBhZjFkNWEyOTMyNWE4MGZmIGxlZ2FjeS10cnVuaworMjk3NiAwMWE2YmY1NzQ1MmU1NWFlZDcxNTczM2ZmMGQxZjhjZThiZmNlZjY0IGxlZ2FjeS10cnVuaworMjk3NyBmMDhkMzQ0OTkyNjlkZTBlNDhmZWNiNGViYWM0N2U5NDU4OGNiMzI5IGxlZ2FjeS10cnVuaworMjk3OCA2NTA4YzkzZjk0NzI5YWFkZWU4YzRiMTNjNjFmOWMyYWRiMjIwMTk2IGxlZ2FjeS10cnVuaworMjk3OSBlNGEyN2Q4NGVhMzY3ODBmMDg2NGIzZDU0YzNhOGQ3NmVjYmExYWRiIGxlZ2FjeS10cnVuaworMjk4MCBhYTYzM2YwZGVmYTYxZWE5NTVlMDRlZWVkYjM0NDg2YjQ1NGU2MDYwIGxlZ2FjeS10cnVuaworMjk4MSBlMTU3YzEyY2Q2ZTdmNzQ5MWNlMzBmYzNjNTNhYWNlYzVhYmZjMzY3IGxlZ2FjeS10cnVuaworMjk4MiBhMWU4NGI0ODQ0N2FlNjQ0YmJhZGZiZTVjMzk2MmUwNzc4MmRiYmU5IGxlZ2FjeS10cnVuaworMjk4MyAwOWM2OWExZWM3YjA5MjhiMWZiOTE3Y2RkY2MxYzFlYTVhNzk1ZmNmIGxlZ2FjeS10cnVuaworMjk4NCAwMWZjNTkwMDMzMzlmNzcwM2YwZjljYTNjYmMwMjA1M2RiODYyZmQxIGxlZ2FjeS10cnVuaworMjk4NSAxZWVjZmZkOTY5Njg5ZTA4MDkyMjI0OWFkYTJkNjlhYTdjZTU3MDZjIGxlZ2FjeS10cnVuaworMjk4NiBkMWI4OWU4NWNlNzU2ZDNhMmQ2ZDZjNzNmMTgyNDFhMmM0NjgxMjYyIGxlZ2FjeS10cnVuaworMjk4NyBiODRhNmQ0ZGU5MGU4ZmNmNDM0YTMxYWVmMGRlOTgxZDVkZDcxNjI5IGxlZ2FjeS10cnVuaworMjk4OCAxZDE5NjY5ZjU2ODc2OTY0MzNhNWYyYzA0OGI5M2RhY2NhYjk0OWE3IGxlZ2FjeS10cnVuaworMjk4OSAzY2I5YTJiN2I0MGNmNDJkZTM5YTRhOTAwNGZhNTM2M2FiNzBjNDNjIGxlZ2FjeS10cnVuaworMjk5MCBmYWYxMWFkY2NmYzY1YmQwYTc0ODEzNDljYTEzYmVhNWVhMThlMDM3IGxlZ2FjeS10cnVuaworMjk5MSAyZmNkNDAxYTYyMzIzYTQ2OTRkZWEwYWYyY2E4NmM5NTM0NmQ5NGM4IGxlZ2FjeS10cnVuaworMjk5MiAyMWIzZWE2YmQzMmQzMTZlMWQ5YjY3ZmZmZTAzMDQ1ODJiNjkxZjU2IGxlZ2FjeS10cnVuaworMjk5MyBlYTUwNzJkZTc0MjczYTUyOWZhMDA2NDIzMzlmZmI0ZDQ5MmZhMGRlIGxlZ2FjeS10cnVuaworMjk5NCAzZWIwNWQyZGM3YjExZjQxYjU2MzFlYzg5M2RlNzliZTNiNmQyNDZjIGxlZ2FjeS10cnVuaworMjk5NSBiNDE3OTIzMDcwMDhkZWI0MzhhOTczYWI3OWEyNzcxZTY4YTc3ZWMzIGxlZ2FjeS10cnVuaworMjk5NiBhNzg4MmZjNmVhMjcwNWI4ZTE1MGRiYmMxZTFmZTkyNjQyYzkzYWUxIGxlZ2FjeS10cnVuaworMjk5NyA2YmY2OWY1NGE5MDNkODllNmQ1YzE5N2E0NTNkNzRmMjdkYzI5NzM2IGxlZ2FjeS10cnVuaworMjk5OCBmMjc3M2E2ZGM1MWVlY2IyOGJkZTViZjc2YjAyNGQ0OTE5NzQyNTY4IGxlZ2FjeS10cnVuaworMjk5OSA3YjRhZGU1MzZhZjg4ZjQ1MzBlZjZlNzUxMGM5YTRmMjc3YjE2NjZjIGxlZ2FjeS10cnVuaworMzAwMCBiOThhZWYyMTNkYWVhNTRjMjMwYzgzY2Q2NDQwZTMzZjJiOGQ4MTc1IGxlZ2FjeS10cnVuaworMzAwMSAwN2E4YzQ0M2I4MzEwNDgzY2M0ZTUyNjc2Y2RiNWJiMTI3NjFlOTNhIGxlZ2FjeS10cnVuaworMzAwMiAxNzgwZWI4ZmRlMmI2NDVmMzNhMGVhNzMyYTFhZDlmMTA0NjNlYjA1IGxlZ2FjeS10cnVuaworMzAwMyA0MTAxZGVkNzNjNTJkYThkZjdlYzAzZTBiZjFlNDM5OWJhNDRmZDljIGxlZ2FjeS10cnVuaworMzAwNCAzZjgxYjVhYzJiYjIwMjQwODU5MjU1N2QwMmNlMGU3N2ZjNDllN2FkIGxlZ2FjeS10cnVuaworMzAwNSAxNDY2MzVkZWYwMWVhYjJkYjM3MWRlOWEzN2UxMDI5MzIwYTQ4NTU2IGxlZ2FjeS10cnVuaworMzAwNiAzOThjMDBmMTFhMmY0NWMyN2U0M2ZjYjE5ODMzN2UyZjQzNDFiMWYzIGxlZ2FjeS10cnVuaworMzAwNyBjNTVjYjc2YmM4MzcwODFlMGQ1MWFmOTdmNDhiMjUwZmRhYjkwNDRhIGxlZ2FjeS10cnVuaworMzAwOCA4NTFhYzRhOGJlN2Q4ODViMzcxY2NlM2VhYzUyMTdkZTk4YWU3NTJiIGxlZ2FjeS10cnVuaworMzAwOSAxNjQwY2MzZjFhNTNmODA3NTJmYjJjODBiZDU3MWM0MGRlZWJlZTA5IGxlZ2FjeS10cnVuaworMzAxMCBkMzFlYzE1ZjVmNzEwNjQ0YWUyNzM2Mjk4M2Y3ZDZiMGE2OWY0MWFhIGxlZ2FjeS10cnVuaworMzAxMSBiMmE0MWY2YWVhYzk5MGNhY2JhMjRkMGE5Mjc5NGIyMzAzMDIyZTM1IGxlZ2FjeS10cnVuaworMzAxMiBmZTZhNWYyNjQwYTI3NmQ5MDE3ZjVlZGYwMDc0NDYxZDNiZDliOTZiIGxlZ2FjeS10cnVuaworMzAxMyA4NzJhM2NhZWZmMDcyNDIwMzUzODlkNmZlNjVmMDI4MmEyMDM2Yjk3IGxlZ2FjeS10cnVuaworMzAxNCA0ZGVmYWJiODI5NmI1YjQ3MDZkMDM3ZDU4YWEwZGM2OTU2YjBkYjM5IGxlZ2FjeS10cnVuaworMzAxNSAxYWM1YzY3MjdlOGM1OGRjODk5NDBiNmY3MDA3N2NiMGNiYmJiMTJlIGxlZ2FjeS10cnVuaworMzAxNiA0ZDU4ZTJjNTA4ODdhNWFjYWU4ZTg5MjU4NGQ1N2E2NWJhOTRjZTdlIGxlZ2FjeS10cnVuaworMzAxNyAzOWU1YjdlMzE1ODg4NWYzMWViYTM0MGRlZmYwMjVhMDcxZDVjMDMwIGxlZ2FjeS10cnVuaworMzAxOCA2ZjQ5OWQ1ZGFkZGY3YWJjZjdlNDkxNDQyOTZkZGU4YTI4MTcwMDVmIGxlZ2FjeS10cnVuaworMzAxOSAyNTQxYjNkMGYyMGY3MWU2MTZiOTdhOWYwZGUyNjJhNzAzMmVkYTc3IGxlZ2FjeS10cnVuaworMzAyMCA4YmMxNzBlNWVmZWU3MjE0NmE4Y2UyY2MwOTgwNzVkOTE3YTM4ZTNkIGxlZ2FjeS10cnVuaworMzAyMSA2Y2ExYzQ0ZmQ1Mjc4YTMyOWNjN2YxNDk1OTBjZTNhMmY3ZDY1Yjg1IGxlZ2FjeS10cnVuaworMzAyMiA2ZjNmZWQyNTBhZGIwZmEyMjI3N2UxZDhhYTI1ZWU5ZmVmYTE2ZWY2IGxlZ2FjeS10cnVuaworMzAyMyAzOTEzNGM5OWM5MjM4M2E1NzE2NjY4NzBmN2FhNzIwNjdmYmZmMTEwIGxlZ2FjeS10cnVuaworMzAyNCA3NjA5NWE4Yjk2Y2FlYmYwZGRjZDJiOWVmYTMxNGE3YmMzNzcwOGZkIGxlZ2FjeS10cnVuaworMzAyNSBiY2YwMjA1MmU5MDllODFhN2M0YzAwNzk2YmQzYTZiNGRiMjJlYWUyIGxlZ2FjeS10cnVuaworMzAyNiBiNjhiMTBhMjE1MjAwOTNlOGExNmZiMjczN2U1YjlkYTQwY2Y3N2IwIGxlZ2FjeS10cnVuaworMzAyNyBlNThmNDBjMmYyODVjZjVlMzZjNjFkYjA5MTQ1Mjc3N2Y0YTM0ZGMwIGxlZ2FjeS10cnVuaworMzAyOCA1OGU4NzcwZGI0NGFjZGZlZDFkNzY3Y2M2ZDAxMDg5ZmQ0OWUyZjk3IGxlZ2FjeS10cnVuaworMzAyOSAwNmMwNzg3NTBlODA4YTMzYjhiNzMxYzIwNTM2ZWZlZTM5MTVkZDE0IGxlZ2FjeS10cnVuaworMzAzMCBjYjE0NmFhOTg3Yzk0NWY5NjA0N2Y3ODQ2NWU3NjIzMThjMzgwNTAwIGxlZ2FjeS10cnVuaworMzAzMSBiMmRiNGJmMzRmZjhjZTQ5OTk1ZGE3ZTg0MDQ4M2JmZTcyOTg3OTQyIGxlZ2FjeS10cnVuaworMzAzMiA4ZTM1MWZiMjU3N2EwMmIyNjJhN2VmNTA5NzY3MzVkZDJhNWRiMjhmIGxlZ2FjeS10cnVuaworMzAzMyA5NzE1ZmRjMWU0NjJkZmQ0ZjUwZmQ4YzBkN2IzZGE3MDIwYTkzZmJiIGxlZ2FjeS10cnVuaworMzAzNCAyMjE2OWZjYzExODI2ZGE2NTc4MThmMTgyYzI2ZGMzNzM5YTI1OTc1IGxlZ2FjeS10cnVuaworMzAzNSA3YTAxM2Q2NDQ1YTQ4Nzc1NWM0OTYxY2E4NzIxZjlkYjM2ZmRiMmI5IGxlZ2FjeS10cnVuaworMzAzNiBhYWRkZjgyMWY1ZDQzMmNmMTE2YjNhYmE0NDg2MTE1YzM4ZTAyZWQxIGxlZ2FjeS10cnVuaworMzAzNyA0YzliYzUyYjgwODBkMzljZjhkZjZmY2U4YmZkODA4MWFkYWNlYzhkIGxlZ2FjeS10cnVuaworMzAzOCBjZDBlN2YyNGZhY2ExYjExYWI1NmI1YTFiNjJkOGFmMDAzYzA0MWE3IGxlZ2FjeS10cnVuaworMzAzOSBlYzMxNzQ4ODM3ZGMyNzg5ZjQ4Nzk0NmYzMjU5MTczMTk3MTQyZjkyIGxlZ2FjeS10cnVuaworMzA0MCA5ZmIyYTg2OGVlZWVjNjVhZTdkYzYxOTgwNGVkNTU5MThkNzkxYjVhIGxlZ2FjeS10cnVuaworMzA0MSAzNjMyMzE0MGY3NTE4NTQ1ZTJiYWQ4MzVmYWU5NGFkN2EyZjU1Njk1IGxlZ2FjeS10cnVuaworMzA0MiBmOTQ4MWFhNWU3NzZiNjVmN2JkMWUyNmI1Nzk2M2UxODViNDFkM2E0IGxlZ2FjeS10cnVuaworMzA0MyAzNmI5MzQzMjZmZWQ1ZjQ1NWE3YzBmZmFkOGQzMzUwNTA5ZTEyODI5IGxlZ2FjeS10cnVuaworMzA0NCBhZmY4MTljYWYyMWFmNTRjYjY2MWM2OTkwZTAxNDA5YjdkM2Q1MTFjIGxlZ2FjeS10cnVuaworMzA0NSAwMGViZTVmYjBhYzY3MTIwYjYwNGU1MWEyNzY4YzNlZDgwYjBhODQ1IGxlZ2FjeS10cnVuaworMzA0NiBhNTRlNGE3MTdjOWJiZTI5MWQ5MmU0ZDYzMDU1MmI0ZDlkOThlOGVlIGxlZ2FjeS10cnVuaworMzA0NyBjMDJjM2NiYjhhZDEwNDc3NDFiYzZmOWI0NjIyY2Q3MWZjZjNmZDU4IGxlZ2FjeS10cnVuaworMzA0OCAyNjZkZTU5ZGU4YTlkODcyODdjYjQ4M2RlZWMyODZkMjhkMGEwOGZhIGxlZ2FjeS10cnVuaworMzA0OSA5YTA1ZTJiZmE3NGMzNmJiYTZiZWI3ZGUzZjUwNmU2ZWRmMGZmMTlhIGxlZ2FjeS10cnVuaworMzA1MCAxNmExOTUzNTRiMmJlZTA2YjdmYzNiNWQ5YWRiMjY1MDQ0YzgyMWQyIGxlZ2FjeS10cnVuaworMzA1MSBkZDdkZmFkNDA0Y2Q4MzJkYTYzOGYxNzUyOTRhNmVmZTlmY2I3YWQ0IGxlZ2FjeS10cnVuaworMzA1MiAxODE0MDkxNDFhMTgwNmQ3Yjg1YzMxOGZkYjk2NDNiZTI0N2VlMDljIGxlZ2FjeS10cnVuaworMzA1MyBiM2Q2MzlhZDY2NmQ1YjIwYjBkYjdjNTUzYzAzN2U0OWRhZTVkNjZkIGxlZ2FjeS10cnVuaworMzA1NCBhOGNhNzIwZmQ5MjE5ZWVhNmJjZTMyZGY2YTk5ZDVmOTVhMDE2ZmE3IGxlZ2FjeS10cnVuaworMzA1NSAxMWVhNjY5YzIzMWUxM2QyNGQ0OWRiMzhjNzUzMTEwMjhmMzVjNDRkIGxlZ2FjeS10cnVuaworMzA1NiAyMjY1ODI4MjJjZmFmMTIyZjBlZDNjYTk1YmIxMmZhOWMzZDExNTRlIGxlZ2FjeS10cnVuaworMzA1NyA0NmNiNmJjZTRjNDc1ZjRmZWZjNTIyODQ5MTk2NjZkNGZhYzQ0ZmY2IGxlZ2FjeS10cnVuaworMzA1OCBiZWJkYzFhY2Y0NzQ1OWI4NmU1Y2Y5NzUwMmRmYjA2MjAxNzE3N2NjIGxlZ2FjeS10cnVuaworMzA1OSA2NDU5ZTJmMjFiZjY4MDc3Mzc4OGZjMmFmZDY2MTliNzJkN2M4ZWFhIGxlZ2FjeS10cnVuaworMzA2MCAwYzViMmQ5ZTQ1ZTgyZDNmMmU1ZThhZWQ0NGFmNWZhYzJjYjk1NTYxIGxlZ2FjeS10cnVuaworMzA2MSBlZjg2NTAyNTA4ZTJmMTA4NmMxYTE4NmJmYjEzYTY1YTBmMGQyZjBmIGxlZ2FjeS10cnVuaworMzA2MiA5OWJmZjFkYjc1ZjRhMGZmMWQ2NzI5ZGUxZWM5N2E2ZjNhYjFlNjc0IGxlZ2FjeS10cnVuaworMzA2MyA1OGE3NDM4YzJlN2VmOTIyYjM2MzE3OWUwNDZmMDgyOWJiYWFhZDBhIGxlZ2FjeS10cnVuaworMzA2NCBmZWEzZjU5NGRmNzc0NmI3NzZhMTNjYjkwZjNlZmE0OWIzY2I3ZjU0IGxlZ2FjeS10cnVuaworMzA2NSBhNDc5M2FlMjY2ODI2YzAxMzRjNDk2N2QwYTBiYmMzYTYzODRhYzE0IGxlZ2FjeS10cnVuaworMzA2NiBmZDYyYzI4MDk2YjU4NzdlNjZkNGJlZDdjMWZhNDU5MDEwNjU3NDc5IGxlZ2FjeS10cnVuaworMzA2NyA3ZjdiYTY1YTI4MjVjMGU0NmI1ODRmOWIxMjI1OTkzYmMwMzU2YjVjIGxlZ2FjeS10cnVuaworMzA2OCBhMWY1YjIxNmUzOTJjZDliNTJhNTc1OWFjNmNhYmNhM2VhYmY4NWE3IGxlZ2FjeS10cnVuaworMzA2OSA2Mzc5OGNkZTU4MmNmNTM1NjQ1YTI0MmVjYTNkYWU3OWZjMGUzNjBmIGxlZ2FjeS10cnVuaworMzA3MCAzMjAxMGQzNTVmYjYxMjJlNTI1OGVhOTIzNjYzNDY1ODNkYjVmNWJkIGxlZ2FjeS10cnVuaworMzA3MSA0MjRmNTVlNjdkNWQzMjRiOTg2NTc2YTVmZGU5OGMxNDdjZjJiNDI1IGxlZ2FjeS10cnVuaworMzA3MiA0ZGEwYjdkYWU3OTZmZjhmMjU4YWQ2YjdhNDcwZTZmYjljYzNkYjFkIGxlZ2FjeS10cnVuaworMzA3MyBhNGYyYjIyMTBiMDIxMTUwMzBjNTlhMTU3NTM5NjE1NzMzOTM4ZDZmIGxlZ2FjeS10cnVuaworMzA3NCA0ZmQyMjYwMmUyODJjMWVlOGJmNTE4N2ZkMTRmZDJiM2E4NGJhNTY3IGxlZ2FjeS10cnVuaworMzA3NSA2MGUzMTE4ZDMwNzM3YmI2ZjI5YzM4NzZhNGM4MTNjNjMwNGQ0NTk5IGxlZ2FjeS10cnVuaworMzA3NiBlOThhOGY4MDI5MDNhNjI5YzYyNDY2MTQxNGNjODljYWUyYWM3NjZkIGxlZ2FjeS10cnVuaworMzA3NyA3NGI3MTZlOWFjNDk4NmU0MDAzNzg5MzgxY2QwZGQwNDRlMmEyYTM4IGxlZ2FjeS10cnVuaworMzA3OCAzOWVlN2RlNzQ3NTAyZTk2MmJkYjVjNmU4NzJiMzY3ZjQyYjBhNTVhIGxlZ2FjeS10cnVuaworMzA3OSBmZWMxOGUyNDRkMTY4ODJiMjlmMGZkNTdiZTdkNTExZmQyZmYyOWY2IGxlZ2FjeS10cnVuaworMzA4MCBjZmRkNTc1ZWZmZjJiNDE1NzBiMzdiZmJmZjgwYjJjMzc1MTA2M2E1IGxlZ2FjeS10cnVuaworMzA4MSBlNDNhMjIwYzI4N2FhM2VhMjdiN2MxZTEzZjVmYzAzMDkxOWY1ZGY0IGxlZ2FjeS10cnVuaworMzA4MiBkM2IyN2ZmZjAwYjJmMTI1NzVlYzFkMjEzYjhlNmQ3ZDM3NzllZTNiIGxlZ2FjeS10cnVuaworMzA4MyA4YzczYzVmM2I2Y2E3M2RkYjY2OTRhNmM1NTI4NzA5NTA2YWZmNmQ2IGxlZ2FjeS10cnVuaworMzA4NCA4MDc4ODM0OTk2ZWNjNTgyY2E0NDc5NjgzMTQwZjA4ZjdmMzBiMDM0IGxlZ2FjeS10cnVuaworMzA4NSBjMTJiNDQ1Y2RhY2VhMWQ5ZjlhMDg4YWY2MjJhNmE1YjFjMDRjYWFlIGxlZ2FjeS10cnVuaworMzA4NiA3MmFjZWVkMzY1ZDQzNWI3YzI5NTNkYjg0MGJjZDA1NDc2OTk4MzczIGxlZ2FjeS10cnVuaworMzA4NyAyNTA1ZmQyMGQyNzdhNDc5ZTBkNDg3NjYyYjhkYzIzNGQ2YmFlMjYwIGxlZ2FjeS10cnVuaworMzA4OCA2MTE0M2JmMDNiNDQ3NmUwNWUyNzJjY2U5ZGFhOTU2NjEzYWNlNzQ3IGxlZ2FjeS10cnVuaworMzA4OSBjMTU2ZDQ5NjBjMmI0MDg1OWIxZjA1OGMyNGZkMWIwNjA1MDQzZTcwIGxlZ2FjeS10cnVuaworMzA5MCBhYWNiZDRiNTU4YzdlZmNmYmJmNzdjY2JiZTI3MDY4MzQ2YzAwYjQ4IGxlZ2FjeS10cnVuaworMzA5MSA4NzI1ZmE4ZDdmZjkxZDgxYTQzNmFhNjFkMzRkNzBmNmNlZTI5MTI5IGxlZ2FjeS10cnVuaworMzA5MiBmZjAyYjk0OGM5YTgwYjdiOTU1YzE1ODQxYjkzMWY1NDEyYmQ4MWEyIGxlZ2FjeS10cnVuaworMzA5MyBlNTA2MTk3MzMyYzBjMWExMWVhNGJmOWNkYTcyODA2MmU4ODVmMDRlIGxlZ2FjeS10cnVuaworMzA5NCBkODYwOGVkMWNjM2IxM2I5ODIzMDEyZTBiYWY2ZDlhNDY2YzVlM2U3IGxlZ2FjeS10cnVuaworMzA5NSA2MTU5ODNmMWEzZmYzZmQ1OTJlMjY3M2I0YTdlNDRiYmUzM2Y0ZWJkIGxlZ2FjeS10cnVuaworMzA5NiBjNDMyNzM4Y2Y2OWFlYWUxNWY1ODhjZmE2ZjRmMTA5ZGU3OTRhYjMyIGxlZ2FjeS10cnVuaworMzA5NyBkMzgzZDI3MzMxNzY1ZjhkNmVjYzA2ZTMxZDQ1MGI0YWYzOWJjYzIzIGxlZ2FjeS10cnVuaworMzA5OCA0ODc5OTY3OTZlZGM2YzczMWI3NTBjZjk1ODZkOTUyMTM3OThlZTE1IGxlZ2FjeS10cnVuaworMzA5OSBkY2U2ZGM2MmYxMDhlZTQ0YjA0N2VkYjAyYmY0NGQ5OWNlMjA1YWM5IGxlZ2FjeS10cnVuaworMzEwMCA1OGE0Y2IxOGYwMjVhZjg2ZDlkYjNkMDkxYzkxYzRmNDQ2ODQ0NzhmIGxlZ2FjeS10cnVuaworMzEwMSAxODM2OWJiOWMyNGQwNzg3OWY2MDVlZmE3ZWM1MWE1MGYyOTJkN2E4IGxlZ2FjeS10cnVuaworMzEwMiA3MjQzYTkwNjkzN2NmNzg0ODNjZWVkYTM1MDM0YTRkMDE2YzQzMmVhIGxlZ2FjeS10cnVuaworMzEwMyA4NDQ0ODJiNjQ2N2FhZTNkNThjODFhNTA1NzA1ZTUyM2JhNmVmMmIxIGxlZ2FjeS10cnVuaworMzEwNCBjZDQwZTNlZWJiNDkzOTBmNGUwMzRhZjMxMWRjYmUyNjFiYzdhMDE0IGxlZ2FjeS10cnVuaworMzEwNSAzYWE2NTg5MmI3NWM0NzA2OTY3MzU3MzM1YTk4NzYxNzllNTM5YTk5IGxlZ2FjeS10cnVuaworMzEwNiBiNDZmMjFjODMzNjkwOTZmMDAzZDk3YjhmYjU0ZDVhYjlkNzU4ZjExIGxlZ2FjeS10cnVuaworMzEwNyAyMjJmMDRmNTUwODMzNTcyNmFiNmU2MWUxZDVkZjM0NDc3M2Q4YjFjIGxlZ2FjeS10cnVuaworMzEwOCA0NjViOTg0MTc3MGUzNDU2NWU0ZDk2Y2YwZGY3MGJjYTRiMDdkOGU2IGxlZ2FjeS10cnVuaworMzEwOSAzNmUyYjdhMDBkNzJmMzZhZmJhYmM4MDFlMmQwMzVkZjcwMDUzMTRiIGxlZ2FjeS10cnVuaworMzExMCAyNjBkOTZkYjExMmY4N2QyMDRiYzhlNWUyZGM0ODczZmI4MWZjMjI1IGxlZ2FjeS10cnVuaworMzExMSBlNWFlNDJmZmQ5YTA3NTdmNmE3NzFmOTY3MWVmZTYwNjZiZTIzNzM2IGxlZ2FjeS10cnVuaworMzExMiBiYzBhYjAxNzU0YmE1ZGNiNDgwMDQxZTUzZDlkODdhNjdkNTUzMDdmIGxlZ2FjeS10cnVuaworMzExMyBiOWYyNGQwYzdkOTYxNmE3ZDAyZjE2MGVjNzhhNDAzMGQ5NTY3YzIzIGxlZ2FjeS10cnVuaworMzExNCAwMjg0ZjEwNzlhN2JhZTU2NDIzYzljZTczYWUyMzgzYmE3MWNkYTVhIGxlZ2FjeS10cnVuaworMzExNSA3ZDhlNTFlNTgwZDFhMjNjYTMzZDIwMjg5NzZmNTJkMmIyYmQ2NjllIGxlZ2FjeS10cnVuaworMzExNiAyYjYwODMyNzIzYzE0MzFmNzk1Zjg0OGQzMTczYjYzNzlhODVkZTlmIGxlZ2FjeS10cnVuaworMzExNyAyNjZhOGJhMjA3ODRmY2Y0MWJjNGVmMjhlY2ZjZTlhOTkyNGVjOGM3IGxlZ2FjeS10cnVuaworMzExOCAwM2RlNjcwODBjOTU2MjQyOGRjNzM3ZTcxZjRlZTRlZDIyNTJkOWE3IGxlZ2FjeS10cnVuaworMzExOSBhNjBjYjUzMjEyMTEwZTU0MDBiNDNiNWI4OGViZDZjZTc3ZGM3ZTE5IGxlZ2FjeS10cnVuaworMzEyMCA1YzZjZGI1OGE4MDFjYjgxOTQ2NGUwZThjZDFlMWRkMzEwZjg4MjA1IGxlZ2FjeS10cnVuaworMzEyMSBhNzM2ZWYxODQwYTUxZmUyYjc1ZWE4OWY1MTkxNTU4ZWQ5NDEzYjU2IGxlZ2FjeS10cnVuaworMzEyMiA2OGIzMDJhZDg0YTE5MWI0M2Q5OTU1YzU4YzgyOTM5Y2Q2Mjk1OTkwIGxlZ2FjeS10cnVuaworMzEyMyA3ZDNhMDUzYzY3NjVhZTU2ZWIxNmMxMGRjNTg5ZDVjMGZmMTMwOTk1IGxlZ2FjeS10cnVuaworMzEyNCBhMzFlMDc4NDcwNjM4NzQ2OWNmMGU5ZjNlY2M4Yjg5MTE3ZmQ0ZWZiIGxlZ2FjeS10cnVuaworMzEyNSBiNDFlOTU3MzFlNDIyNDIxNzg1ZjE1ZDg5NTcxMzNmNDRmZDNkOWZkIGxlZ2FjeS10cnVuaworMzEyNiBiNWZjYjY2MjQ2NWU3M2NmOGY2N2U5NWFlOWQwNTQzM2U5MzIwOWY3IGxlZ2FjeS10cnVuaworMzEyNyA0YmRiMjc5NDNlMjI0MjEzNzAwNjkwOTBkYWU0MDBlNTNiZmM3ZjVlIGxlZ2FjeS10cnVuaworMzEyOCAxNGNjNGIwN2NlYmJkNjExZTc3MGJmN2ExYjUwOTI4ZDhkYzdjMDc5IGxlZ2FjeS10cnVuaworMzEyOSAyN2FhZjk0NDc1ZGRiZDc1OWIwNTAyZDdiYzdmYzYzOWY5OGFmZTQwIGxlZ2FjeS10cnVuaworMzEzMCAxYTUyMDI5MGMzOWMwNTI1YTdmZTAyMWEyMTEyM2E4MjQyYWUyMTU5IGxlZ2FjeS10cnVuaworMzEzMSAwNmE5YzgyOGI2MDg5MWI1OGNiZDZhNmMzMjNiM2U5MDQxMWQ0MWFjIGxlZ2FjeS10cnVuaworMzEzMiA5YmZlNzNjNzczMzRjYWI2MTMwMjM2YjdmNTQ3MzRmOThmZTRlOGVmIGxlZ2FjeS10cnVuaworMzEzMyA0NjU3ZjdjOTgwZTg1OWY1OTIxNDk5ZDY1ODZmYTNlYzc4NGI0MjY3IGxlZ2FjeS10cnVuaworMzEzNCBmNjcxOTM4ZGZkZTJlNTMyOGFhODA4ZTc0OGEwMWRhZGIxNTFjZGFjIGxlZ2FjeS10cnVuaworMzEzNSA3YjM3YjVlNzE0OTNhMzY3MThmNTUwMzU0ZWNkOWE2MzVlMGRjZTk0IGxlZ2FjeS10cnVuaworMzEzNiAzMGEyOTAyNTdjMzFkMGIwOGQxNzI4NjUyZDE0ZDZkZTUzMTUyZDY1IGxlZ2FjeS10cnVuaworMzEzNyBjOWMwMzI4MzY4YTllMmI2NDM5MTYwNDNmZjViNjVjMjJmNDViMGJmIGxlZ2FjeS10cnVuaworMzEzOCBhZGJhYzU4OTNmOWM2MGRmYjE3M2EyZjY1MDE3NjQ1NmRlY2JmYmQyIGxlZ2FjeS10cnVuaworMzEzOSAzMWIwMThiZGE3ZTJkM2Y1MDBkOWZjNzQ4ZTRhOWJlMTU5YjFlOWYxIGxlZ2FjeS10cnVuaworMzE0MCA1NzZkYzE0YTI0MDA5NzEyZWNiMTA2M2M5Mzg2NGFiN2YzYWZjMzUxIGxlZ2FjeS10cnVuaworMzE0MSAxM2M5OWVhZjMyYThjNDVmYzkzOTgxOWJhMDE4YzRiMTk0M2I1NjYwIGxlZ2FjeS10cnVuaworMzE0MiAzYzU1ZTYxMmE2ZmNjMWQ3ZWM0MTkxZWUwNDBlOTM2NmE3MmUxYmM3IGxlZ2FjeS10cnVuaworMzE0MyBmZmUyZmJjNTgzZGVjZDc5MTk4NWUyNjNmZTk3OWJlOGY1MzhkOWFlIGxlZ2FjeS10cnVuaworMzE0NCA5ZjFkYjU1NmZmYmMyOGVhM2RhZGQyZDZhMzE5NzM5ODJhZTEwOGM2IGxlZ2FjeS10cnVuaworMzE0NSBmYmNiOGQwYmQ0NWUwMzIxZWM5ZDU0ZDVhZmFkZGQ3ODczY2E4MGFmIGxlZ2FjeS10cnVuaworMzE0NiBiMDQ1ZTY4YmJjZGQ1NGQ0YjQ1ZTNjMDczZDAyODI3MjZhM2ZlMjg5IGxlZ2FjeS10cnVuaworMzE0NyA4N2FlZDUxNjAxNjE3NmI0YTQwMDI1NzkwMmE1OTc5MjY1Yzg2OWZlIGxlZ2FjeS10cnVuaworMzE0OCA1Y2M3YTNjZDU1N2I2NDkzNzc2YTIyYWI1MzMzYjhkMDIwMGIxNzEzIGxlZ2FjeS10cnVuaworMzE0OSAyYTA3NDZkNTI0NzhhNzJlYWQzZDFkY2I2MDc1N2IwMTYwMDM1NjE2IGxlZ2FjeS10cnVuaworMzE1MCAyNGM5OGI2MGRkNzQ2NWJlNDBiMDM3YTY2YzVjNWFmNTgyMThmOTllIGxlZ2FjeS10cnVuaworMzE1MSAxOTdhMmNmM2E2NjJjNmIxYzcwMmI3MzEwMDE3MDJkMmVkYmQwNmFjIGxlZ2FjeS10cnVuaworMzE1MiA3N2FjYTY5NjZiOWQwMWI1YTEzNGYwZmM5OTM4Njc3NWU2NWVlNmY2IGxlZ2FjeS10cnVuaworMzE1MyBhOWViN2EwZDQwMDIxNDFmZTcyNTRkNWVjZTJjNTMzY2E2NWU1NWUyIGxlZ2FjeS10cnVuaworMzE1NCA3ZjgwZjMzNmJlN2Y4MmFiZWNkNDVkNzg4YjhiMmJkMWI2ZDUyYzBjIGxlZ2FjeS10cnVuaworMzE1NSA0OGM2MzdmYjE1MGYzMjg5ODE2ZjFmZDM3YzdhYWE4ZTM4ZTQwMDcwIGxlZ2FjeS10cnVuaworMzE1NiA3Y2UxOTc1ZjExYTkwZjEyNDFjY2IzMWViYzUyMzI1YjEwNjNiMDhmIGxlZ2FjeS10cnVuaworMzE1NyBmNGRiNDA2M2VjODg2ZWQzOWFlZWIxNjRlNDY2MDFhNmRiNDI5MDE4IGxlZ2FjeS10cnVuaworMzE1OCBmMDI1ZWVmOTMxMzBkMzI1OTI3NTc0ZjA5N2Q1NjgxYzIyYjY5MGVjIGxlZ2FjeS10cnVuaworMzE1OSBmZmIwM2NlYmYzZjQ1NWU0MjZlNDI1YWZlMzI2NjQ4MmNiN2E4ZDI4IGxlZ2FjeS10cnVuaworMzE2MCAwYmUxYTVkYjc3ODQ3NGEwZTVjZmY3ZmFkMTI5MWJkNmRiYWFkYjE2IGxlZ2FjeS10cnVuaworMzE2MSAwOWI0ODYwNDg1NWY0ZGQzZjM3NzNkMmVmMjQxYWFkYTBlMGM1MTA5IGxlZ2FjeS10cnVuaworMzE2MiBkZWJmY2I5YTdlMDhhNjQ3NDM4OWQyZjlhNmVjOTBiMWQxNjViNzZiIGxlZ2FjeS10cnVuaworMzE2MyA2Nzc0MTA3YzY0N2RjNTljNjA0ZGFhNzBjNGIxYWJlN2JjOWQ1NWYxIGxlZ2FjeS10cnVuaworMzE2NCA1MDY3ZjJkMzhlMTQzZmIyMzI1ODUxNjUyNDU0NDg2NjI5YmNmNjU3IGxlZ2FjeS10cnVuaworMzE2NSAwY2U0MDRlNDEzOWM1YjY1MTE5MGM4NGEyZTgxZDQ1YzZkZGIyYTlmIGxlZ2FjeS10cnVuaworMzE2NiAxN2RiMDU5YjI5YmFjYWIzMWRkOTAxYzk2MDY1YWU0NWE2Y2UwN2ZlIGxlZ2FjeS10cnVuaworMzE2NyA1ZDcxNDJlYTAxYjdkYjBmMTc4MDY2NGU2OWM4OGFkYzUzYTIxNDBiIGxlZ2FjeS10cnVuaworMzE2OCBiMzMyMjhlM2MyYzI3ZWQ5MjMxNWUzNTRmYjgwNWI1NmVlNDU3OGZiIGxlZ2FjeS10cnVuaworMzE2OSA5MDMwNzEzNzdkMjkyZTU5OTI0MGQ5M2ViYmIxNTYxOWEwZjdkNWQ1IGxlZ2FjeS10cnVuaworMzE3MCAwNGE4YTg5YzkyZWI3MGUxMjEzODYwMmFkNTQ3NGU2MTdkMzk3NjdmIGxlZ2FjeS10cnVuaworMzE3MSBmZGJlYWUyZDZlNjcxZTIxNWE4NTFlNmZlN2RkYzNjMzg0YmFmMDJhIGxlZ2FjeS10cnVuaworMzE3MiAwOWQyNzFlZjNiODI0MDQyNzkwMjg5YTk1YWI3YWVmODIxM2QzZWEyIGxlZ2FjeS10cnVuaworMzE3MyA2YzFmZDA1MTBkNjFiY2QxNzA4ZTE5MmU1YThjM2FjMzg5NGNlZTVkIGxlZ2FjeS10cnVuaworMzE3NCA5MjY3OGI1MDU3YzY1NTZjZTU0NDU2ZTUwNTQwYjE1Yjc1YTdhYTBjIGxlZ2FjeS10cnVuaworMzE3NSA4MDY2ODliOTM1NThmOTU2ZjcxZTYwOWYyMzJjMWUwMmZkYzU0ODM0IGxlZ2FjeS10cnVuaworMzE3NiBhMWNlNWE5NDk4MjhkNWMyYmYxNTU0ZjgwMGQzYWQ3YjEyZmM4NzIzIGxlZ2FjeS10cnVuaworMzE3NyA5NmFjYjM1YmI5MmJiODkxZDlhYzBlMTgyMjFlMTk4NTAxMDZjMGEyIGxlZ2FjeS10cnVuaworMzE3OCBmM2Q1ZTJjM2I5YTNhNTMxZjdjZTcyZWJmNGMzOTEwYjliMWJhMWI3IGxlZ2FjeS10cnVuaworMzE3OSBhNDFlM2JhNWI0N2Q5NmZiYjdkOTIxZDU0YWRiZjFkZDk3MzUwMGUwIGxlZ2FjeS10cnVuaworMzE4MCBjYjdlZjliZDllZGVjMzc5YTUzODY0MGQ5ZDNiM2U3MzY3NzQ5ZTFjIGxlZ2FjeS10cnVuaworMzE4MSAzOTQ1ZjM3MTIzNTQ5MDFiZDc2ODlhYTkzZDVjYmFjMWUwZTJkMTYyIGxlZ2FjeS10cnVuaworMzE4MiBhM2U3NjhlYTgwMmFiOTA3ZjAxMTAxN2FlMWJlZmY1ZTE3YTY2YjRlIGxlZ2FjeS10cnVuaworMzE4MyA3NDQyYjIwYzQzZmRmY2NjMWEzOTk3NzA1MzczYjlhMWQ1MTM4NGI1IGxlZ2FjeS10cnVuaworMzE4NCAwZDdjODIzNjY3MDQ1MDA1MjdjNDU3MzdkM2MzMmMzZDFjYWUxMzYwIGxlZ2FjeS10cnVuaworMzE4NSA5YjU2NmFjMzhjMmI4NDM0MWM4NDUzMDI1MDM3YzdmMTI5YTFiNWJjIGxlZ2FjeS10cnVuaworMzE4NiA5NGFiNjc2MWFmZTJjNGVmMmQ3MDVjN2NlOWExZDMxMWNmZThmYWMyIGxlZ2FjeS10cnVuaworMzE4NyA3YjRmMjgzM2ZkOTAyYmM1NThhMjFiYTFjYTE4NGI2MWI4M2FlNTE3IGxlZ2FjeS10cnVuaworMzE4OCBmOTkzMTk3YzNhNDc2ZTQ5YzM3ZTNkOWI0NDY1NjM0NDgwN2I5MTc5IGxlZ2FjeS10cnVuaworMzE4OSA1NmQ2M2NhYmRiYTdlYzA4NTVmZTI0MGQxYTU0Y2EyZDZjY2ExOGExIGxlZ2FjeS10cnVuaworMzE5MCA1MTM5NDBlYjRkN2I2OTkxYjE1NTZmZDk3YmZjYmFiYmJmOWRkNWU0IGxlZ2FjeS10cnVuaworMzE5MSBlZDQ1NmU5MWQ5NWFlODU0Njc0NTk5ZTliNjMzMzliYjk2YzFhNmI5IGxlZ2FjeS10cnVuaworMzE5MiAyZjk4MDVjOTYzZTg1MzY0ODA3YjhlYTE3ZWJiM2NmMzQxZDJhZWQ0IGxlZ2FjeS10cnVuaworMzE5MyA5ZjBmYjExNGMxZTU0Y2U1NjNlNTQzMzBmZDdkMThjMDVkZjRjZWY3IGxlZ2FjeS10cnVuaworMzE5NCA3YTExYTcwZjdmNDRkY2NkNDJlZGQxZDliMjk2Zjg3NTIzY2JhMTgyIGxlZ2FjeS10cnVuaworMzE5NSA0MzJmZTdmMDgzN2M0YjI1YTc0YzQyZmE0YmUzNWI1MmY5NTUyYzg2IGxlZ2FjeS10cnVuaworMzE5NiBmYmI4NDBmNjRiZjg5NTY3Y2E2YzkzYmMwZTUwZDVlYWU1ZGYxZGY1IGxlZ2FjeS10cnVuaworMzE5NyBiYmQwMTk4ZWFlNWJmMThmYWFjMjc0YzY3ZTI1MzRjZGQ3ZTgzYTRlIGxlZ2FjeS10cnVuaworMzE5OCA1ZmIzZjczYTYyN2ZjZTU5ZWQwZTE4YzMwZTFlZWE2YTdhZDhmY2Q4IGxlZ2FjeS10cnVuaworMzE5OSBiZmZlZmJmY2ViNjA1NDNjMzQ4YTZmYjk5ODQxYjhlZTNjOWE3ZDI1IGxlZ2FjeS10cnVuaworMzIwMCA1MTZiNWExNmFjNzcxOGQ2ZTE3ZGEyMWEwNmVmMzQzZDNiNTY5Zjc5IGxlZ2FjeS10cnVuaworMzIwMSBiMDA0MzhmMjY1ZWQ4Zjk2MjJkYWFlM2E2ZTBhMzJhYWQ2NjM0OTA0IGxlZ2FjeS10cnVuaworMzIwMiA2YWEwZWUxNGFjMmVkNjA2YTBlOGJjOGE2NDYwNDY5ODBiYjQ0OWEzIGxlZ2FjeS10cnVuaworMzIwMyAwZWU1OWExNGU1NDIxZmM5YjQzMjI0MjBlMDc1NmExM2FiMzVlNzA4IGxlZ2FjeS10cnVuaworMzIwNCAzZGFjMjA0Yjc0ZmFmZjkzN2YxMDVjODI0N2NjMWUzMjg1ZGUxZTA1IGxlZ2FjeS10cnVuaworMzIwNSA1OGY3NDhmNThkZjU4NGJiMjY5NmU1OThmYmM5MmM4MWY3N2VhNDhjIGxlZ2FjeS10cnVuaworMzIwNiA4ZjNhMjU0MDk5NWExNWUwZTE3ZGU4OWI3NzNjNzk3MTY3MDQ5NzkyIGxlZ2FjeS10cnVuaworMzIwNyBjNzJlZTI5Y2NjZDAxOGZkNzM3MmY2YmU0MTI0ODY5MjYzYzM3MTllIGxlZ2FjeS10cnVuaworMzIwOCAxMGYxMGQ0NTQyZmFlZDg1NDJlNmI1NmRmYTkxODFhZWE1MmI2Y2QxIGxlZ2FjeS10cnVuaworMzIwOSBkNjgwOGVjNmVkYzczNmU2MzQ1NGMzYTViN2M3OWY2MWRkZWU1OGEwIGxlZ2FjeS10cnVuaworMzIxMCA2YjVhMzRkYjIxZmUxNzMzNjgyYWU0N2Y4MjRiZjczY2I4ZTgxNGM2IGxlZ2FjeS10cnVuaworMzIxMSBjMWViZmRlMzQxYTNlY2M5YTk5NTBlZmQzZTYyOTM3NDU1YzY1MzlmIGxlZ2FjeS10cnVuaworMzIxMiAyZWQ1MTExNzE4MDk4MzgyN2IxOTExY2I4NjQ0ODg5NDczM2Y4OGUxIGxlZ2FjeS10cnVuaworMzIxMyBmNDlkMjMxMTc3NmJiOTNkYzlkODVlY2U5OTg5MjQ5ZmM2MTZiMjhmIGxlZ2FjeS10cnVuaworMzIxNCBmNTRlNjRjOGI5YjcwYmI5YjAzZDMwY2YyOGExZDgzNDUyOTNhZjYzIGxlZ2FjeS10cnVuaworMzIxNSA2NTA4ZWEzMmM2YjA5OTk5ZmI0YjFmMzVjZGY4N2ZmOTI1MjU0MjhkIGxlZ2FjeS10cnVuaworMzIxNiBjOTU0NmEyMTE4ZjA0YjZiMzY1MDdiYjM1NTMxYjQ2NTc2MjE4NzY4IGxlZ2FjeS10cnVuaworMzIxOCAzMTZjZTY3N2M2YjIwYTRjOTBhMjg2ZDc5MDAzY2IyMjk3ZmRmNGFiIGxlZ2FjeS10cnVuaworMzIxOSA2YWIyMDdhNTVmY2EzNDc3ZjQ2MTBiZGNhYTk4MjI3MGEwYmJhZjkyIGxlZ2FjeS10cnVuaworMzIyMCA5YmY3NWU0ZDlhZWMzZWFiM2RiYTA1MzU2Mjg5ZGQ0NjBhNjg1N2E1IGxlZ2FjeS10cnVuaworMzIyMSBlNjY0MmE1MzVkYjVmYzE2YzBhZmU5YjE0NjU5NjA2YzE2OGY5MDc2IGxlZ2FjeS10cnVuaworMzIyMiBmZTE5MjZiOWRmZmE3MzEyNTQ4OGRlZDFjNGZkZWQ5OGNlOWJkYmM4IGxlZ2FjeS10cnVuaworMzIyMyA1OTJiYWM2YWRmZmMyNTY2NjJiNDlkYWVjNDgxZTFiOGI1ZGI5ZjcxIGxlZ2FjeS10cnVuaworMzIyNCA0ZjY2NDFkZWE2NDU4OTc4ZDAyMTAxOGRkMmEyYjg4OTg3ZTE2ZmY4IGxlZ2FjeS10cnVuaworMzIyNSBhM2ZhMjI5Nzc1YzE2ZDNhMzJiOWZiNTVhNGYxM2Q0MGRkZmQ1MDg3IGxlZ2FjeS10cnVuaworMzIyNiAwZGExNmU4MTQ4MmNmMzNkMGNhOWI4YTQ4ZDIzNmM2NzQwNmUxYzlhIGxlZ2FjeS10cnVuaworMzIyNyBhYWEzYmNjYjE0M2FhZjFiNzcxNTVjN2ExOWI2MmJhMmIxNTY3ZGM4IGxlZ2FjeS10cnVuaworMzIyOCA2YmU5NzAzOWNjMTFmNjI0YTBiYTJjYTY2M2EzZWJiYTFmZGE1YWYzIGxlZ2FjeS10cnVuaworMzIyOSBiNWQ5NWFjZmQzZWUzMjM1ODM5YzcxMzZiMjdiZmNmN2IxYWVjNTlkIGxlZ2FjeS10cnVuaworMzIzMCA2OTZiOTEzMjdlYTIzOGU1MTMxNGQ0MDNhMWIwMjFhMzFiYzBmNjA4IGxlZ2FjeS10cnVuaworMzIzMSAzOTNkNTRlY2Q0M2I1Yjk2ZDQxZWE0ODQ2ZjgwNTZlYTI1OGEyMmYzIGxlZ2FjeS10cnVuaworMzIzMiA3MTYyZjVhYzg5OWFhOTJhNjRiYzQ5YjQ0NWFmZDdjMTJkNmM1ODgxIGxlZ2FjeS10cnVuaworMzIzMyAwMDE2NDU3YmQ5N2E4NWE1YTZjNWMxMTM4NGY4ZjNmYWZiZTUzNTBmIGxlZ2FjeS10cnVuaworMzIzNCAxYTU0ZDMyMGYyOTY0YWE3ODVjMjBkN2UzZGUwMmY5MjdhYWNhNjdkIGxlZ2FjeS10cnVuaworMzIzNSAyMjkxZGEwNWYxNzg0YmZiODUxNGRlNTZiZDkzOTEwODNkMTIwYzBjIGxlZ2FjeS10cnVuaworMzIzNiA3NjdlZjczNzBkMzNjNGQ5MDkzOGM1NTBkMzNjYWQ1NWViNTI4NDM5IGxlZ2FjeS10cnVuaworMzIzNyAyYzA0MzJmY2MyNzA3OWQwMGVlZjIwNzZjMDU2MzI5NmRiNzkzMTA5IGxlZ2FjeS10cnVuaworMzIzOCA0ZGMzODJmZjZmYzc0ZDM1MGQ2MGM2MTE0ZDVlNjY4M2JhOGMxYTFlIGxlZ2FjeS10cnVuaworMzIzOSA5OGNiNmExMjUyY2I2NWIzM2ZjZjgyMDhmMDQwYjIyYmJmNjEzMTJlIGxlZ2FjeS10cnVuaworMzI0MCA2YWM5MTZmOGY4NjI2OGQwODBjZTVlYzAwOTFkNTJkOGM5YWE3M2ZhIGxlZ2FjeS10cnVuaworMzI0MSBmZWI1YjIzNGIwYjVmZmIyNDM2OGI3NDI2YjQ3OTJiOWYyNzE0YjAxIGxlZ2FjeS10cnVuaworMzI0MiAyNDUwMDNjMDA2YTYzN2Y0ZjFkMDhjZjM5NzdlYzE3ZDgyNjIxZTZmIGxlZ2FjeS10cnVuaworMzI0MyBlNGM2YTBkZDVjMmIyN2E3YTVmZTc4NTMyNjVlYmNkMDViMzBhYzU2IGxlZ2FjeS10cnVuaworMzI0NCA3NjU3YTc1MDk0ZjFjMjA4MmExMmVkNTY1OTNhODM3YjM2ZDA1ZTE4IGxlZ2FjeS10cnVuaworMzI0NSAzMWRmNThmYTk4Y2M1NTkxYmMxZTYyMTExYzMyMGZhYzExMTk2Y2UwIGxlZ2FjeS10cnVuaworMzI0NiAwOGQzYzM3MDE5M2RmN2Y2OGRiZjQ2YjM1NDJmZGY4ZTQ4YzllZGQ3IGxlZ2FjeS10cnVuaworMzI0NyBmMDg2ZDdiNDkzYjRkZmNmYTFjNWE3ZDAzZGMzZDgzN2U2MjE1OWIwIGxlZ2FjeS10cnVuaworMzI0OCBiNzU1YTQ2MjAxZjZlNzVjNzhkNGRmOGNhYzYzMDY2MjJhODg3ODlmIGxlZ2FjeS10cnVuaworMzI0OSA5NjVhYTNiNTNhOWQ4NmE1YTNjYzZjNmQyZTZkOWNkZjA4NGU3YTY4IGxlZ2FjeS10cnVuaworMzI1MCBkYjgxN2YzYTFjNjU0NDhhNTU1ZjYyNzNiYWY4MDQ0YjQ0M2Y3NjhjIGxlZ2FjeS10cnVuaworMzI1MSBiOWU0ZjczMjFlMjhkY2ZiMzgyY2EzMzY4MDFjYmYyNDQ0MzA0M2FjIGxlZ2FjeS10cnVuaworMzI1MiAzNTgyNDg5OWFhY2Y4MjBhZTkwYzlhMWE3ODZlNzkyMDlkZGUxOTU2IGxlZ2FjeS10cnVuaworMzI1MyA4ZDYyYzkwNTZmZTE1NDQ0MzA3NmFiYzZjNWQ1YTgwNzhjYzBhN2RhIGxlZ2FjeS10cnVuaworMzI1NCBhYjkyNjUzNGExNTI3NDkwOGVlMmE1MDkzMjFmYTA5MmMwY2ZmZmQwIGxlZ2FjeS10cnVuaworMzI1NSA2ZDU3ZGNiNGZhYWRjYmU5MzM3YzkxMDkzMmFmNjlmOGQ5ZGVlOWZiIGxlZ2FjeS10cnVuaworMzI1NiA4MmM1NWVhOTA2OWU1YjU0OGI3YzEzNjAzY2Y5MTFlZTdhOGU2MmRiIGxlZ2FjeS10cnVuaworMzI1NyBhNDM3NmE5OTdmYjE4YjliOTZlMmI1N2E3ODFiODQzYTdmYTAwMGNkIGxlZ2FjeS10cnVuaworMzI1OCBkMmFmNmJkY2I2ZDBhMjQ0Mzc2NzJiZmE2MzcwZTJjNzE2ZWRmYmIzIGxlZ2FjeS10cnVuaworMzI1OSBhYzA4MjhlZjY4ZjI5YmJkMTE0MjVlM2NhMDcyNGEzNjI2ZDI4ZGY2IGxlZ2FjeS10cnVuaworMzI2MCBjZTcxODQ1N2IxNzI2NTc3MTE3YTAwOGU4ZjBjMjU2ZGMyMjI4MGZjIGxlZ2FjeS10cnVuaworMzI2MSBjNjQ0YmM2MjYwOThhZDdiZjMzYTU4MjFlNzQ1NWU3NGRhZjYwYTdjIGxlZ2FjeS10cnVuaworMzI2MiBjOWQyZjZiZGFhNjliZDRmMzIzMmZlOGZmNWU3NTAyMDU0OGI5ZWQxIGxlZ2FjeS10cnVuaworMzI2MyAzZGQ3YjgyNTU2MTlhYTgyNDRkYjM2YmNkOWZhY2M2MDU3Y2YxZmNlIGxlZ2FjeS10cnVuaworMzI2NCBmZjE4OTlkY2RhMDU5ZGRjYjMwZmVjY2I3MDM1YjJlZWVmOWI5NWE4IGxlZ2FjeS10cnVuaworMzI2NSBiNzU3ZTU4YmM1MjVjMzk4NGU3Nzk3NjA4YTI5ODE1NjQxYTQ5M2RlIGxlZ2FjeS10cnVuaworMzI2NiAzMGMyNmNmNTQ4MDQ5NjczNTI4ZTRjZDYzODc4OTA5YWVhYjBiMzE4IGxlZ2FjeS10cnVuaworMzI2NyBmY2FhZmQ1ZWM2OTU2M2MwYjdkMDgwZmQ2N2UxN2ZmYjc4ZDliYmRiIGxlZ2FjeS10cnVuaworMzI2OCA0MTU0ZTk4ZDE0NzhiOTJkZmM0MGQ4Nzc2Y2YyMWFlZjg2NGFlZGFhIGxlZ2FjeS10cnVuaworMzI2OSA2ZjJhNmVmZDAxOWU0NWY4MDc1MWNlMmJkMGQ3MGQ4YjQ1MjlhN2RiIGxlZ2FjeS10cnVuaworMzI3MCA4ZWE1NDYwNDdmMDExNjMwM2E4NTVmOGU3NmQwODA1MzY0YTM2ZmY2IGxlZ2FjeS10cnVuaworMzI3MSA5MWMxODZhMjE2ZTcwOThjODMzZTExNDFlMjYyMjM0NDM2NmIyY2E2IGxlZ2FjeS10cnVuaworMzI3MiA3ZjhkZGNlODg0OTYxZDRiOTM1MjcwMTUyMGJkZDdlZjVmNTZjZjU3IGxlZ2FjeS10cnVuaworMzI3MyBlMmY4MDc3YTkyNmVlYzJiMjJkZTc0YThjMDIxMzMyOWM2MGMyYTI2IGxlZ2FjeS10cnVuaworMzI3NCAxZDA2YjE0OTllYjkzMmYzN2EyZDRmODcwMGMyZGU4M2I1Yjk2ZjMwIGxlZ2FjeS10cnVuaworMzI3NSBkZTcwZDc3YjNlZWQ3NGUwYzEwZWJhMjg0NWFiNTU5OGJmMzAzMTdlIGxlZ2FjeS10cnVuaworMzI3NiA4Mzk5ZTlhYTAzZTdmZTJlNTY3NGFhMzdiZmJjOWJkNTUxZDZiZmE2IGxlZ2FjeS10cnVuaworMzI3NyA0NmQzMWE2NDljZTY2NzMxYWNmNzFhOWYzMzAxMzMxZWIwNmEyMjQ0IGxlZ2FjeS10cnVuaworMzI3OCBjMGFlZDVlZTExMGJjN2QzYjFlMTY5OWYyMGRlYjk0MDg3YWQyYTc2IGxlZ2FjeS10cnVuaworMzI3OSBjMWVlNjBiZDVkZTQ1YWE3YWYwNDZmYTFmOTYyMWMxMTNkMjU1Y2QyIGxlZ2FjeS10cnVuaworMzI4MCBjMjZmNWJlYzM0MzhhZDlhYzk2NWVhZDNjMWM3M2YzMjczOGU3N2NjIGxlZ2FjeS10cnVuaworMzI4MSAxYTBiZTZlMzY4MThiODkxMmEzZmZhNDI4NGNmZGRiNjExODg5MWE3IGxlZ2FjeS10cnVuaworMzI4MiA1NjYzNjM5NTcyNGQ0OTQ0OWNkMTNkZjk1NTQ5OGNkZjMxYjJkYjZmIGxlZ2FjeS10cnVuaworMzI4MyBmZjZlMjE3MzA5OWFlM2M4NWNmODFmMjJhZmQxZTFjMjJiMzU1ODM5IGxlZ2FjeS10cnVuaworMzI4NCA1ZTY1YjEwZGQyNGQzOWNkMmFjZmNmNzZhNzlkNGYxYjFlYjJhMzM0IGxlZ2FjeS10cnVuaworMzI4NSA3NWI0NzJhYzViN2JlMzJmZDM2NzBhZTYwM2UzYjA5YThiNmEyNTU4IGxlZ2FjeS10cnVuaworMzI4NiA5NGQxMjExNjc1NmFjNzVhOTI4N2U1NmNlYTU5ZmIyMjU0ZWRiMTFmIGxlZ2FjeS10cnVuaworMzI4NyAwOTE0NzRjMDgzMWE3YTI3MmEyYTc3MzBiOTVmYTA2MjlhYjM0ZTM2IGxlZ2FjeS10cnVuaworMzI4OCBkZDcwYTNhYWQyNjY1ZWFiYjUyYzhhNTM2YjBjZDY5YzUzNWIyZmJkIGxlZ2FjeS10cnVuaworMzI4OSAwY2NiMzU2ZTg4YjEyNmY1M2RjM2MwYjM4YjBkYWFjMDZkMGJmZWY5IGxlZ2FjeS10cnVuaworMzI5MCA0MWZiZDkyYmYxYWQ4MDFhMTA5YjcyOWMwOWZlNzBlYzk3MWM4MDdlIGxlZ2FjeS10cnVuaworMzI5MSBhN2JhMTkxMjBmNTQ3NDlmNGY5MGIyNTE5MTViYjJkZDg3Y2I2OThhIGxlZ2FjeS10cnVuaworMzI5MiBhYTllZDNiOWVkYTFjYTM0YWU3MTZiNTIwNTBiMGE4YzcxNzBmMWVkIGxlZ2FjeS10cnVuaworMzI5MyBiNmNkZGZkMzQ4YmExYTU4NWFlODczN2Q5MzQ0MGVmMTRlNTZlZWI0IGxlZ2FjeS10cnVuaworMzI5NCAzZTllYzg1YWM0OWI2ZmY1NWFmNjBkMTg4NDQ3OTlhNWI0Yjc1YTNmIGxlZ2FjeS10cnVuaworMzI5NSBlNTNiYWY5YjRiOTU1MWU1NTg4YzJmYWY0ODkxYjU0M2RhZmRiNjY3IGxlZ2FjeS10cnVuaworMzI5NiA2NDYxZGFjOWE5ZjI5Nzc3YjBkN2Y0OGRhOWU4ODVhZDg5ZTUwZjJhIGxlZ2FjeS10cnVuaworMzI5NyA5YWRkMGUzZTgwNGEwNTk4N2Q0YjhhNjY3MTI5Mjg5YjhkMjE0NzlhIGxlZ2FjeS10cnVuaworMzI5OCA1MTEyZDQzMjEyNmIxNzU3MDQ3NmYzY2VlNTNlYmNiYzU2NmVhMGRlIGxlZ2FjeS10cnVuaworMzI5OSA2MjMxZTFiNWIyMmI3YmVhZDIwMDFkYzI3MzM4OGZkMWQ1MmRhNWNmIGxlZ2FjeS10cnVuaworMzMwMCBlMzkzMDliOWEwYWE2ZDE2NmJjMDlkZDkyNDc2ZThhZGUxYmRhM2I5IGxlZ2FjeS10cnVuaworMzMwMSBiMzM4MjYyY2QwODA3YzQ2NDRmOGYwOTA1NmI4MDE0YzkyNzgzOWU0IGxlZ2FjeS10cnVuaworMzMwMiA5NTBmMDExMzE0MDNlMTU4ZTM1NDMyYmQ4OTUxMjBiZTM4YmM0YzU2IGxlZ2FjeS10cnVuaworMzMwMyBmNDllODYyZmVlYzRkOTE3OGQ0MjQyYmU1MmMwMjZhOGM1YmZkYzI5IGxlZ2FjeS10cnVuaworMzMwNCBiZTg5MTI1NjQzZjI1Y2Y5MDE2MGEyOWYxNGFmZjZmNWJlZWFiY2ZjIGxlZ2FjeS10cnVuaworMzMwNSA1NGViMmNmMjY5N2U2ZTUzNGU1MjgyNmQzNWJhNTk0YTgzOTAxZTM2IGxlZ2FjeS10cnVuaworMzMwNiBlMDg3NzIyNmQ2MTM4ZTBlZDQ5MTMwYjQ3MzJlNDM2ZDM4NDZiYzlkIGxlZ2FjeS10cnVuaworMzMwNyBlNWNlOWQwNDA4ZDBlNTZmN2Y0MTY4N2Q0ODUwYWVlNmYzNjhlZTZkIGxlZ2FjeS10cnVuaworMzMwOCBmMjBkZTEzMjI2OTIwZDkzOGE3OTExMTBhNmY0N2NjMzRlNjcxYzY5IGxlZ2FjeS10cnVuaworMzMwOSBiYjc2NjVjNDQ4MjI2ZmI5ODIxMmVjNTZkYWFkODgwZWQ4OTEwZjNiIGxlZ2FjeS10cnVuaworMzMxMCBhNDE2NDkzZDNhNGMyZjNiMjQ3MWZiMGI5MGQ4OGQ2YzYzYzk3MzAyIGxlZ2FjeS10cnVuaworMzMxMSAzYzZhNTJkMjU0M2RjMmQwNTJiMDVjY2QxYjNkMDI3OTY1NzFjMmM1IGxlZ2FjeS10cnVuaworMzMxMiBmYTYyZmIwZTU1YjJkODliZmZmZjQ2ODA3MjhhYWQzYzI5ZDU2MDQ1IGxlZ2FjeS10cnVuaworMzMxMyBjNzJlY2RiMzNhZjc1NzkxYmM0OTZiZWI4ZmM5NzNhZGQ3MGFhZmNkIGxlZ2FjeS10cnVuaworMzMxNCA4NDY3YjExOTM1MGJlYmM2Nzg0ZDc2OTU0ZmY3Mjg3ZDZkOGZlYWE0IGxlZ2FjeS10cnVuaworMzMxNSAxOTRhZjA0ZDM0NGIwODA2Yjk0ZTAxMzIyYmI2ZDA2YTYwMTQ1ZDI2IGxlZ2FjeS10cnVuaworMzMxNiA2NWU0MTk5YTc5ODJmYjE5YWUxZWYzMmI1N2FhMTdkZjMxMWFlNmEyIGxlZ2FjeS10cnVuaworMzMxNyBkNDQ4MGMwODQ0NGRjNWI2MzY0NmVmMDRkMTg0M2Q2ZmMzYmNmMWQ0IGxlZ2FjeS10cnVuaworMzMxOCBlODJhYzQ1MmQ1NTFkZDdjZjk1MjNiN2UwY2QwYTBhMzBjODc2MmU4IGxlZ2FjeS10cnVuaworMzMxOSAyOWQyZWYwYzk0Yjk1MDRkYThmODA5MjU2NGM3YWI2YTk4MTgyODY0IGxlZ2FjeS10cnVuaworMzMyMCAyM2ViMjc3MzFkOWNiMzJhZDlhOTRiMTJlYTY4OGU0MjRkNzRmZTk1IGxlZ2FjeS10cnVuaworMzMyMSBmMGViNzdhYmYyNDQzNmJiY2Q3NDZjOTAzMzcwNjk0ZDcyMWFjZjljIGxlZ2FjeS10cnVuaworMzMyMiAxMjA1MThlZjM2ZTMzYTQ3YzI5NGFhOWUxOWI2ZjVmZjBiN2Q2M2I3IGxlZ2FjeS10cnVuaworMzMyMyBkZWRkNDRlYjczNWIzZjE2NTEyYjRlY2RmNjkzZWFhODBmNmQ3OWFmIGxlZ2FjeS10cnVuaworMzMyNCA1MjQ0ODI3ZGQ0MjM4MTdhODBiYTU2MjQwYjZlMzFlZTExOWQ4YjNkIGxlZ2FjeS10cnVuaworMzMyNSA5YjdmOTBmOWYzYzE1Mjk5NmViYTZjZTk0MGIyM2FhNzgxY2ZiOTNlIGxlZ2FjeS10cnVuaworMzMyNiBmYWM2MmJjZDNiYjhkZTFjY2UzZDY5ZjMxY2U3Zjc4YTNlM2EwNjczIGxlZ2FjeS10cnVuaworMzMyNyBlZGRjNTRiMWQ5YWI4YjY3NTk3M2MwNWZjODQzNTYxOTBmNTM0YzRmIGxlZ2FjeS10cnVuaworMzMyOCBmMDc4NGFlMWZmNWNhY2FmODY1ZGQ2ZjNiMTRlMDVjNTUyYmUwN2U3IGxlZ2FjeS10cnVuaworMzMyOSBkOTkwYzJiOGExZTZkMDliMDQwNmQ3Y2IzYjM5MWQ4OWFmNjFjOWRiIGxlZ2FjeS10cnVuaworMzMzMCBhN2NmMjBjODQ1YTNhNDZlNmMzNjU1M2IxN2Y1NWNjMTUxNWVjMmZjIGxlZ2FjeS10cnVuaworMzMzMSBhNDdlMGM5YmFhZDAwODI0OWNiOGQ1Yjc2YWUzYzEwMzIzMjk3NWUyIGxlZ2FjeS10cnVuaworMzMzMiBjMDFjOTVlZjFmYmRhODg0YjQwMDJmOGEzY2JlMWMxZDNjYTY0OTk4IGxlZ2FjeS10cnVuaworMzMzMyA1NzQ1ZTU1ZjJlMjgwZjEwOTg0YmU4OTJmMzEyMTBiNzE5YTFlOTlkIGxlZ2FjeS10cnVuaworMzMzNCBiYjU0ZmY0MTM0OGY4NzliZTE4M2YwYTU4NWNlN2RhODg2Mjk1OWUxIGxlZ2FjeS10cnVuaworMzMzNSA5YzFhZTYwN2QxMzUzODA2ZWFhYmI3Y2IwMTdjODY5NTc1ZjIyZTc0IGxlZ2FjeS10cnVuaworMzMzNiBlNzFiNjQ3ZmEzMzU2ZjUwY2Y0ZDI4NTRkMjZhM2Q1Y2VkYTNhZmMyIGxlZ2FjeS10cnVuaworMzMzNyA5NTUyMTJlZDUyZDM3Yzc0N2Y5NzZkZTE1NzE2YzEwOThhYmI0ZDRkIGxlZ2FjeS10cnVuaworMzMzOCA4NjA0YzM5NDk4MDlkNTEzMWYyZWQzMTBkN2UwNzE1YjQ0ODM4ZjQxIGxlZ2FjeS10cnVuaworMzMzOSA3MTdlYTE3Njc0MzBiYWRhODIxOTEwZjAwOGYyZjBhNzJjNjhkMjcxIGxlZ2FjeS10cnVuaworMzM0MCAyNzE1NGEyYjkyNDQwMjcwMzBjZTgzNDVlYTgzNTU0Y2ZkZGE2ZjVmIGxlZ2FjeS10cnVuaworMzM0MSA1MzNlMzZkZTFlNGRmNjE5NWM1ZmE1N2NlNWY0ODZiOWJlYWUxOTNjIGxlZ2FjeS10cnVuaworMzM0MiBmOWJiYjAxMzg4ZDViZjNjYjhlNzFhZjQxM2QzYmFlZWMzYmNlYWRjIGxlZ2FjeS10cnVuaworMzM0MyA5YWU2NWVlMDk3MzVkMDcyMmE2M2RiMzg4MjI4MmFlZDE5NzJhMzk0IGxlZ2FjeS10cnVuaworMzM0NCAxZDZjYmViMjcwOTYyNzJhOWNlZDM4MTVhZjFhMGNiNjExNmQyMmRmIGxlZ2FjeS10cnVuaworMzM0NSA5NTBjZDM3ZmNkZGM1NDc3ZGJjYjA4Y2YyMjhjN2Y4MDAxOTkxYTFlIGxlZ2FjeS10cnVuaworMzM0NiA2NGNmMTkxZDIxZDA4YzkzMTJmOTRhMGU4YWY1MGQxZTNjMjdmMDE0IGxlZ2FjeS10cnVuaworMzM0NiA2NGNjNTQzOWUxMGE2ZmRmOTg0ZWZmYWYwMTQxZTk0ZmE0Y2MxMDA0IGxlZ2FjeS10cnVuaworMzM0OCBjZjhkZGIyOWUyNmVkYWZhZWEwYjUwZmIyZjhiNGFiODUyMmUxMjM5IGxlZ2FjeS10cnVuaworMzM0OSAwZWZlZjk3ODVhMjVkN2Q5YWFlMjVlYTEyYTAwYWE4NDE2ZGFjMTkxIGxlZ2FjeS10cnVuaworMzM1MCA5NDdmOGEzNDdjNGYxNzg5ZThjODkzN2UxZDU1ZjRhOTM3Nzg5NjU1IGxlZ2FjeS10cnVuaworMzM1MSA2YTA3N2MyOTM5ODZjMGFkNzk3MWNiZjRjZTZjMTg0NjA3Yjg2ZjZmIGxlZ2FjeS10cnVuaworMzM1MiA1ODRjNDE0MmM1Mzc5ZjNhNTM3YjI3YTk5NTNjOTA2MmVmMmNhZjVlIGxlZ2FjeS10cnVuaworMzM1MyA4NDdjNDgzNTYyOGZhOGYxMWIzOGZkMjg5YTcxMjkyMmU0NjAzYjM3IGxlZ2FjeS10cnVuaworMzM1NCBlYThkNGNjZTc4MmJiZmFkZjBlMmM5MTVjODJkYjI2MmY0OTdjYTFmIGxlZ2FjeS10cnVuaworMzM1NSAzOGYwMDU0ZjQ0YTcxYzZmNzkwMWQ1YmYxMDQ1ZTUzNDljZTczNDE2IGxlZ2FjeS10cnVuaworMzM1NiA3ODQyODI0M2ZlYWE3NTIwOWRhN2Y5OTZkODA2ODhhNWE4OGRhMmZjIGxlZ2FjeS10cnVuaworMzM1NyBiN2FlZTc5OWRjNzE1YWQxYjg0ZmFmYWMzNWVhNzc1NWY5MDc3YjAwIGxlZ2FjeS10cnVuaworMzM1OCAzMTA1MzIwMTVhN2QzNTliZmU3NzYwYTU1YWM0MzhiNGVmMTA4M2I0IGxlZ2FjeS10cnVuaworMzM1OSBlMTIwOTM2YTBjODdmOTUxNWMxNDAxOGFiYmU2ZWQxYTFkNzM2MWYxIGxlZ2FjeS10cnVuaworMzM2MCBjZTY3ZDkxYWRmNWU3ZTA2NWRiMzVhYTBkZmRiZDM0NTkxMjRmZjczIGxlZ2FjeS10cnVuaworMzM2MSA2NzVhMDI4MjBkNjZlMTQwZTJhNTU4M2RmNjI5ZTgyYWJlNzU0ZjY0IGxlZ2FjeS10cnVuaworMzM2MiAyOTM3ODk3YTdkOGIwMzg3OTM2MDg0ZjQyNGM2OWFiNWEzMTNhMjhmIGxlZ2FjeS10cnVuaworMzM2MyA3MThmMWQ5YmNiNTA0ZjI1NWNmNzM2ODE5NzEzNWE4YWRmZDQ5NDk1IGxlZ2FjeS10cnVuaworMzM2NCBlODIyM2QwYjcyYWM1MTk2MGJmMDkzMWU5NmMwMmFjNTcxYzFkN2I1IGxlZ2FjeS10cnVuaworMzM2NSAwZDc5OWQzYzQwMzZlN2Y4YjE2OTUwMzdhM2U3MjgyNzE2NWJiNWNmIGxlZ2FjeS10cnVuaworMzM2NiBkMDIyMjFlYmFjMmFkN2M4YjA5MThkNzk2NThhYWRkZjY1ZGVkMjFiIGxlZ2FjeS10cnVuaworMzM2NyA4MzFkODJhYTRkZDA4MTg5YTE4ZjAyMDEzNzk1ZThjM2QyNWIxOTQxIGxlZ2FjeS10cnVuaworMzM2OCAzNTczZWY0MjFiZjQxMTA3YmY3MTk5ZTVlYWYxYjFiNDljM2MxODhlIGxlZ2FjeS10cnVuaworMzM2OSBlY2ZiYzI0NmVlYWExMGM0ODM0MzVjN2JkMjJmNjgwMWI2MzUxNmEyIGxlZ2FjeS10cnVuaworMzM3MCAzZDFmNzA4NzlmMDMwNDE0YmFkZDk4OWQyMDU1ZDI1NWNlM2EwOWMwIGxlZ2FjeS10cnVuaworMzM3MSBiNTY0YmQ0ZTU3ZTEzNTM0NDk3MDE5NTU2MTU5ZDVmNDdjYmI2OTg5IGxlZ2FjeS10cnVuaworMzM3MiA5YjE0YTRkODkyMDczYzYwODlkODJlYjlkY2JmNDM4YzkwZWI4YmNjIGxlZ2FjeS10cnVuaworMzM3MyA5ZmU3ODNjYTk3NmUyZjkxYWZlNzYwNjIxYzk5ZjQyYzg4ZWQzYTVjIGxlZ2FjeS10cnVuaworMzM3NCBiYmVmMjQ3M2U1NjhkMjkyODcxODEwZWM1NmJmNDM1N2NmZDA3YWY0IGxlZ2FjeS10cnVuaworMzM3NSA0MDY4NjBkZmFhYzc4YjYwODE0YThlNzYyMjFjYWFlYjA2ZmNmZmIxIGxlZ2FjeS10cnVuaworMzM3NiA1YTQxMDk0NDFlYWUwMDk1MTI1OGJjOGFjNjAxNjkyZWFiZmIwODFkIGxlZ2FjeS10cnVuaworMzM3NyBmYTZjZTdmNTNhYTUwMThhOTBlOTA2ZmFiMjZkZGJmNDQ3MGE4YTZmIGxlZ2FjeS10cnVuaworMzM3OCA0MTZhOGE4ODZhODJhYTJkM2Y1NmVhOWNlNWMyMzk4NGQ3OWMwMzhkIGxlZ2FjeS10cnVuaworMzM3OSA5ZDZjZjUyOWJiNzFhN2Y0ZmU5OTc1OWRkNjc3NzBmZmMwNTU1YmJkIGxlZ2FjeS10cnVuaworMzM4MCA0OTJmNWUzZTY0OTU1NThkNThjOGI5NmZkNWQ4MGMzNjdjYTk4MTNiIGxlZ2FjeS10cnVuaworMzM4MSAxZDdhNGVkMGM5ODVmNWVmODIyMzRiZjVmZmM5ODQ1OThjNDBiN2ZjIGxlZ2FjeS10cnVuaworMzM4MiA1MTIyM2NlOTVhNjE5ODY2MWM5YTI4MzMyMDgzODRjOTY5YzEyZWE0IGxlZ2FjeS10cnVuaworMzM4MyA2NGVjN2JkMmU4MzczN2E3M2ZjODhiOGIzMDMxMTllMGRiYzgxMGMyIGxlZ2FjeS10cnVuaworMzM4NCA4MmY0YTZhMTk2NGRlZjYxZWQwMjQxNjc1OWIxMjI3ZjQ0NzFlYmYyIGxlZ2FjeS10cnVuaworMzM4NSBhZDZkNWMxZWY1ZTYxYTI5MDA2ZWI1OGZmYzI4ODgyMGVmMTRiMzJiIGxlZ2FjeS10cnVuaworMzM4NiBjZTdhZThmODFiMDYxODI0NDEzMzhmYjkwNjVlZDVjMzJkYTcxN2I2IGxlZ2FjeS10cnVuaworMzM4NyA1YWU0YThjZjc5ZWYzM2ViNWMyOTk3MzNlMzY5MDgwMzc4NmMwNGQ0IGxlZ2FjeS10cnVuaworMzM4OCA3ZTI3NjU5ZWIyZDk2Njk4MWI5YjkyZmU3ZWE3NjkzMjc2MjkwNTQ4IGxlZ2FjeS10cnVuaworMzM4OSAyNzUzZTJjOWFhMjFjOWI2YWE4NGU5MDU2OTJiOTA2ZTlkZDFiZDFmIGxlZ2FjeS10cnVuaworMzM5MCAwNjU5YjYzZDYwNDQ3ZDYzMzZlZWQyY2E2OTk0MTM3NzIyZDBmZGRlIGxlZ2FjeS10cnVuaworMzM5MSAyMDI2ZWMwMGVmZGNmNDBjNzVjYzAzNTljM2NhYmZiM2IyYTNkZjJiIGxlZ2FjeS10cnVuaworMzM5MiBmMDE4ZDFkMGU5MWE1ZGY3N2I0MTk5MjNlOWU3N2UyZDAwMmIxMzdmIGxlZ2FjeS10cnVuaworMzM5MyBkY2U3YTRjYmFjMTEyZmVlNTg5YTI4ODM3YzMyMjYyMmI3NmI4Y2ZjIGxlZ2FjeS10cnVuaworMzM5NCBlMGY3ZmY4NWZhMDY1MzgzNzcxNDQ1Y2QzYjEwZDRlYWZmZDc3MWFkIGxlZ2FjeS10cnVuaworMzM5NSAyNjg4ZjliZWJkOWE1YTVjYWE2YjU0NzU1YzljN2U0ZDliNmI1NjNhIGxlZ2FjeS10cnVuaworMzM5NiBhZmNiYTg4YzZhY2I3N2RlZmQ4ZDliODdjNGFmZDAyZWE4OTM4ODllIGxlZ2FjeS10cnVuaworMzM5NyBiM2U2YTQzNWM0OGZlMjdiZGNmZThjOTU2YmE3MGNlZmY0MDI2ODBjIGxlZ2FjeS10cnVuaworMzM5OCA1ODZjOTI4YzY1ZDM0ZGU4Yjk3ZTkzMDM3MGEyNWIxNmMwY2Y3NTc4IGxlZ2FjeS10cnVuaworMzM5OSA4N2VkMDBhNjJkMzEwMTM4NTNjNWYzZDMwODA0ZDYzOWI5ZjZlOTcyIGxlZ2FjeS10cnVuaworMzQwMCA2ODA0MDZjNDE1MzkxNmViYjRkMmJiMWY0M2JlOTg3MzhlNjg4ZTBlIGxlZ2FjeS10cnVuaworMzQwMSAwNTU4MGUwMGY0MWUyYzc1ZDc5Y2ZlNjcwNGU5NmI2ZDA4MTVlNzBkIGxlZ2FjeS10cnVuaworMzQwMiBkNDI2YzVkNTkyNTRhNTAxNjRkNzk3ODJmNTM1ZDQxZTUzNDU5ZWFmIGxlZ2FjeS10cnVuaworMzQwMyAwYzY1N2RiMjdkYmY2NGY5Zjg4ODRlNzBmYjgzN2YyMzM2YTNjMzA5IGxlZ2FjeS10cnVuaworMzQwNCBlNjAzNGVkYzQ3YWU1YzJlZDc1YTI3ZTNjNThmNTY5MGQxZDZiMzIxIHVubGFiZWxlZC0xLjkuMgorMzQwNSA1YjhlYzhmNzExY2VmMTA3MDgxY2NmYmM0NDJmNDU2NWMwYjBkZDg2IGxlZ2FjeS10cnVuaworMzQwNiBhNzU5M2JhOTlkY2JhYmRlMjQxNjBlNWEyZjVlNzBiODZiZTdmZDdkIGxlZ2FjeS10cnVuaworMzQwNyBlNTU3MjRmYmMyYWY3YjBlMTE2NzE1MzkzZDU2MzMyYzg4ZWQzMzhhIGxlZ2FjeS10cnVuaworMzQwOCA4ZjI0NmM4OWRkY2ViOTdlZTc3ZmU2ZWZiOTBjOWI3NzY0MmY3OGY3IGxlZ2FjeS10cnVuaworMzQwOSA5MWE3NzA4N2U4M2YyMWM0ZTUyY2NhNjg3MzQ5NTUxODdmNTA4NTVjIGxlZ2FjeS10cnVuaworMzQxMCAxYTZiYTIzYWU0NDdhY2FlMGE1ZGE5NDM5MGNlN2NhYjk0OTgzODBjIGxlZ2FjeS10cnVuaworMzQxMSA5MTFiODAxN2RhNDZiNjMyOGYyN2M1NmRmZjFiM2EzNjFhNTYxNTMyIGxlZ2FjeS10cnVuaworMzQxMiA2YjNiNzVmMDdjYmI3YjgyNmUwYjYxNzNjZGM0ZmU5Y2U5MDkyNzAzIGxlZ2FjeS10cnVuaworMzQxMyA3OGNiMGFjY2ZiMGNlZjI5ZmZhMDA3ZmM5NDM4ZWJhOTQ3OWM2ODZkIGxlZ2FjeS10cnVuaworMzQxNCA5MWMxZjk0YjE3YmMxMTdhODFiZmY2YjEyNjNlNGMxN2JjNTFlZjc4IGxlZ2FjeS10cnVuaworMzQxNSA0OWE3YTNjM2Q4NTA4OWNmMDg5NDI4ZTU5NmU1NmU1YTNiZWQ0YmYwIGxlZ2FjeS10cnVuaworMzQxNiBjYTE3MjhjNGJkNzg4NDZmNjJkZjc4MDcyYTY3MDc4MzY5M2JmZjRlIGxlZ2FjeS10cnVuaworMzQxNyBjNGNkMGQ5ZDgyODFkYjUzMDk2NTAwMDcyYmEwNDdhMWQ3ZThiNDRhIGxlZ2FjeS10cnVuaworMzQxOCA2ODViMzFmZTg5YzYwZDAyNGE4ZGEwM2NmYWU0ZjVkYTgxMDBiNzE5IGxlZ2FjeS10cnVuaworMzQxOSBiYmNlYzI0YjI0Mzc3NmQ5YmE0MjM5MGI3NGQxMTQxNGMxN2JmMzNmIGxlZ2FjeS10cnVuaworMzQyMCA0OTYzMDEyM2EzZjM0MDM3ZThiYmZhMzFjZjVkN2RkOWJmYmIyNTgzIGxlZ2FjeS10cnVuaworMzQyMSA3YWE5NjEzZmZkMzYzMTM2MjBlOWQwMWQyYjlkZjIwNTY2OWUwZmVmIGxlZ2FjeS10cnVuaworMzQyMiAxY2FiYzJiNmM5NzAxYWVhMjliYjUwNmI1OTM5NDZlNjdiZjc1OTNhIGxlZ2FjeS10cnVuaworMzQyMyA2Yjg2ODhlNmE3ZWQ2ZWM1ZjYzNzIzNjljYmI3NjQ3M2ZjMWI3NTMzIHVubGFiZWxlZC0yLjMuMgorMzQyNCA2ZDgwZTFmOGY3MGE1ODBiNzg5MDdhZmZhNDU0ZmU1MTc2MGJhMDIzIGxlZ2FjeS10cnVuaworMzQyNSA0NWQ3MDg1MjExODgxOTU5Y2FhNTZjZjI2NTMwMDFiMjNlMWJmMzIwIGxlZ2FjeS10cnVuaworMzQyNiBiMTIwY2RkMzBmYmNhNTkxYTQ0NzNiZDExZGMwZTI5YmVlMTMxN2FjIGxlZ2FjeS10cnVuaworMzQyNyAyYzUxNWYwNzM2N2FkNDE0N2UxYWEzOWJiZTM3ZWQxM2MxZTIxNmNmIGxlZ2FjeS10cnVuaworMzQyOCBmODIwZTY5MTdmMDdlNTAxMmJkZDEwM2VmOTczODkzMThkNWExMGY4IGxlZ2FjeS10cnVuaworMzQyOSA2NWExZTRlOWNkNTQ2YzRlNTc4NzMwYTg4ZGRhZjIzNGJlNGQ0MDQyIGxlZ2FjeS10cnVuaworMzQzMCA2YzU4ZGMxZDJmOWQyMDhhOTEwNmQ0NDQ4YzI5YTlhNmI2YzMzODE0IGxlZ2FjeS10cnVuaworMzQzMSAxODExZTk2MDgwZDQ0MjJkZWViMTlmOTE5ZGVlYmM3YjZkM2Y0YmUwIGxlZ2FjeS10cnVuaworMzQzMiA4OWU0YjE2NjYxNzg5Y2IzNjhlNDhlM2RlOTExODY5ZTM5NGZlMTAyIGxlZ2FjeS10cnVuaworMzQzMyBkMDJjZTMwZDdkZGJjODdiZGU2MzMyMDlmZGFmY2IxMmJmYWUyOGI3IGxlZ2FjeS10cnVuaworMzQzNCBmNWY3M2M5NDYzYTg2ZDI2NzlhNjY5MjQ3MmE3YWJkN2UyN2E2MGNmIGxlZ2FjeS10cnVuaworMzQzNSAyODk0ODE4MWZiMmY3OTVmOGVmZmE1NjE0NDg2MzZhYjcwMTQ0NWVjIGxlZ2FjeS10cnVuaworMzQzNiAxNDM2OWE1ZTYxNjc5MzY0ZGVlYWU5YTlhMGRlZWRiZDU5M2E3MmUwIGxlZ2FjeS10cnVuaworMzQzNyAyOTE5YjQ0OGUzODU4YTEwOGU3NGI5NjJiNzQ4MDllMTc2MmFmNWJjIGxlZ2FjeS10cnVuaworMzQzOCA3Yjc0MTFmOWIxMTZmMDBjMjM0YTMyODZlMjZmM2NmYTY2YTBkZjcxIGxlZ2FjeS10cnVuaworMzQzOSA2OWEwNjZiNmIxZmY0YWY1MTE2MjY1ZDY5YTQxM2QxYmZjM2FkYzg4IGxlZ2FjeS10cnVuaworMzQ0MCAyYzc0OTYwZDZhZmVmMTM2ZjlhOGI0MTE3ZjVlMGFjNWJjZTRjN2NlIGxlZ2FjeS10cnVuaworMzQ0MSBiY2E3MWYyZTJjYjRlZTY2NDYxOGQwNTBjMTdmZmQ3ZjI4MDE2YTM5IGxlZ2FjeS10cnVuaworMzQ0MiBmNzZiN2JhOTlkM2VmYjUxNTIzN2VkNzQ3YmNjYjhkZTc0NDQyZTU5IGxlZ2FjeS10cnVuaworMzQ0MyA4NzE0NmRjMWY3OWM1YjdjZTk4MGFmOGFmNzJiYWMxZGNjZmNiOWYwIGxlZ2FjeS10cnVuaworMzQ0NCAzY2E0NTZmNDRiZjNlZjM2YTk3NGRkNzVlOGFkZGI5YzdiNWI3NGU1IGxlZ2FjeS10cnVuaworMzQ0NSA5ZTQyMDZmNjRkMWI1MTQ3ZmQwN2UzMjcxMjZiNmMyYmJlNjg5ZTFmIGxlZ2FjeS10cnVuaworMzQ0NiBhZjI3YTgzMDBkMjQwOTRhYWZhNmVlNzQ2ZGU1NTY3YmE5YmNjNDQ3IGxlZ2FjeS10cnVuaworMzQ0NyBjNjBjYjA1OWM0ODFlNGE5NGQ1OTQ2NDY5ZDQyOWEyOWFhZmY4YjVkIGxlZ2FjeS10cnVuaworMzQ0OCBlMDQ2NGU3MTE1Y2EyYmY5YzgwYzk1ZjQ0NmE2ZDY0ZGZmMjgzZjAyIGxlZ2FjeS10cnVuaworMzQ0OSA5MTgxZGE0MDY5NzhjODFkZWQxOTAyYjk0YTBjZDk2MmFkMzE5MGI5IGxlZ2FjeS10cnVuaworMzQ1MCBkYmNlNzJhZmUyNjE1MTZkMzU2M2NkMTcyMGZhYzIzNjk2OGRjYTczIGxlZ2FjeS10cnVuaworMzQ1MSA2ZDdmZGVjOWQ0OWUyODQzYjQ3YWU2MzQ1MGQ2MDlmMzQzNTc0NjU5IGxlZ2FjeS10cnVuaworMzQ1MiAzM2YzZDdlYmZjYzFiMDFlNzE2OWI3NjMwYWVkZDU3NmE4YzY3YWQ2IGxlZ2FjeS10cnVuaworMzQ1MyA2NzNkZDliYmRiZjE1MTFhZTkwMDkyNzAxYWRmOTIwYTc2M2EyNjMwIGxlZ2FjeS10cnVuaworMzQ1NCA5ZmVkNTcyNmEzNmQ3Y2UxMzU1YzMwNTkyODM4ZDkzMzIxZDU4MGVlIGxlZ2FjeS10cnVuaworMzQ1NSA0ZDI5MmM3ODU3ZDQ3NGZhZTVlYzkwOWVkZDQzNGJjZWQwOGI4MzY0IGxlZ2FjeS10cnVuaworMzQ1NiA3OTcxZmVjYmYyOGU3ZTFlMDk4YTc5Nzk2NGE2ZGMwMDNmOWVjNDg2IGxlZ2FjeS10cnVuaworMzQ1NyA1MTdkMjllYmM4NDBkZTQ1YjNjOTQ1NjA5M2Q4NDJhMWIzMWMxM2JiIGxlZ2FjeS10cnVuaworMzQ1OCA1N2I4MGI5OGI4ZTUwNzUyY2E0NTc3MDQzZDg0N2FjZGNlYTkwOTVmIGxlZ2FjeS10cnVuaworMzQ1OSBhYzNjODBhYmJmNDMwMDM0OWM1ZTZlMzM4NTMwYjI5YWUwZmEzNjA0IGxlZ2FjeS10cnVuaworMzQ2MCA2NzI2MWM3OTJmNGMxNGZiY2IxM2ZmYjBiNTFhODM2YzJhZDUxMzBhIGxlZ2FjeS10cnVuaworMzQ2MSA0NzczZDVjM2I1YTQ2ZGUwZjZjZmRiYzZjMDNjMTRkMjdlOTQ4ODViIGxlZ2FjeS10cnVuaworMzQ2MiBjM2QwOWY3NmQ2YmY0MzhmOWM3YjEzZmM2YjExNmYwYmQ1ZWY4MzkxIGxlZ2FjeS10cnVuaworMzQ2MyA5MjM0Yzk2MWVjNDNjYTI4NTdlMzgxMDMyNjcwZGU5NDUyYTVjOTg0IGxlZ2FjeS10cnVuaworMzQ2NCBkZWE3NDQyYzVmODdjNmUxZDBhMDlhZWY1YjFiM2VhYTg3Mjg4NDc0IGxlZ2FjeS10cnVuaworMzQ2NSAwNGE3ZjliZjFlNjcyYzRmN2RlNTI3ZTg4OTA0NWU2MzNkMGQwN2FiIGxlZ2FjeS10cnVuaworMzQ2NiBjNjRhZjU2NzFjYzY5NWU2MmIzNjRkNDMyMDIyMWY5YThkOGY2ZTU0IGxlZ2FjeS10cnVuaworMzQ2NyAzOWM3NjZhNmVkNWY5ZGFiMjI5NjRlOTFkMTI1MDc4ZDgwZjQ1OTRhIGxlZ2FjeS10cnVuaworMzQ2OCBjZWY1MTRmOTk3NGM5ODNiZGZhZjFlNmZmNjI2NTViYzY5OWQ0MTFmIGxlZ2FjeS10cnVuaworMzQ2OSBiY2E3ODU1ZDhlMDkzZjA5ZjU1Y2IwYTBmMmI5MTBhYjY3ZmUzMmU0IGxlZ2FjeS10cnVuaworMzQ3MCAyMDkwNTVlNWU0NmE0MGQyMjZjZmY1YzQ2MjM2YzgwNWM5MTI2N2Y0IGxlZ2FjeS10cnVuaworMzQ3MSA2ZTM3YWYzZjI2MWMzOWI5MmZlNzIxZGFiNDQyMGI5Yzk3NDFmNTFjIGxlZ2FjeS10cnVuaworMzQ3MiA5OWQ5ZTdlOWYzNzY3ZTg5MTQwMGJkMzhiMDRiZTE1NWRhOGIyNTJjIGxlZ2FjeS10cnVuaworMzQ3MyBjZmY3YzQ4ZmE5ZTE1Y2VjNjgwNTlhNzU5MDdhYmI0NDJlZWIzZjViIGxlZ2FjeS10cnVuaworMzQ3NCAxZThiZDM1NGI2NzYxMTJkOGIzYTg0Yjg3MmQ3MjdkOWFhNjNlMDRlIGxlZ2FjeS10cnVuaworMzQ3NSAwMmMwM2FmYzUxM2U5NWYzMTc4ZTk3N2VlMjBmMzY1ODEwODM4Yzc5IGxlZ2FjeS10cnVuaworMzQ3NiA3NDdjZTdlMzYwODQ0YTMzZWMxYjJhZWJiZTg4YmE2NTQwZTBmMmFkIGxlZ2FjeS10cnVuaworMzQ3NyAwODMwY2YyYmUxZDJjNTkyN2NjMzNhZTQyZGY4ZGM2ZDk3NmU5NzY4IGxlZ2FjeS10cnVuaworMzQ3OCAyZjY5MWRjNTRiZmE2YTg4NTVhNjQyOTQ0ZWVkNzQ4YzYyOWVhOGQzIGxlZ2FjeS10cnVuaworMzQ3OSA2ZWUzODAzNDljODQ5MDIzMjk3N2Q1MWJlMjk4NGZjNTY3NDNkMTEwIGxlZ2FjeS10cnVuaworMzQ4MCA5MThiZWU5MGY3M2UxNTIyZTE3NjY0MTk4NDkxNWE4MmZmZGExZmI4IGxlZ2FjeS10cnVuaworMzQ4MSBhY2RjMGI5YTZjNzg0OGE2OTM3YWI3OWNmZjRkOTBhNTU4ZGQ4OWM1IGxlZ2FjeS10cnVuaworMzQ4MiAyZjNmMjkzZWY1ZjE1NTk3NjkwMDcwY2RlOTUxMWU5NDg4YjdkZTUxIGxlZ2FjeS10cnVuaworMzQ4MyBlYzMxMmI2NDdmY2JmYTg5OGZkZGE5NzQ5NGI3NjNjYzhjZDZiYzMwIGxlZ2FjeS10cnVuaworMzQ4NCA5MmU2YThjZjE0YmVlNjU1NjVlZjhhZDZlOWJiMTlmZDg3OGQ5MzUxIGxlZ2FjeS10cnVuaworMzQ4NSBjZDM5NzI2NmRjMWM4ZTFlMThkMDJmOGQ5ZmU5MzQyNTdlYjM2MDlkIGxlZ2FjeS10cnVuaworMzQ4NiA3ODc0MmIzZmRkNDRiYTkwZTI3YzNlOWUxYWM5ZTRmYmMyOTYxNTNkIHVubGFiZWxlZC0yLjE2LjIKKzM0ODcgOTA3YzM5OTZiMTVjMmM4NTU0YjA0MjFjM2MxOWU2OWJlZmUyNTQ4ZCBsZWdhY3ktdHJ1bmsKKzM0ODggYTgwNjc3Nzk4Zjg0MjA0YjFmODM1NjBjZjEwOGU2MTRiYWI5ODVhOCBsZWdhY3ktdHJ1bmsKKzM0ODkgZjNjOTA3ZWZlNWQ3MTAyMDJiZTY4ZjZkZDQ1YTU4YTJiODMyNmE4NiBsZWdhY3ktdHJ1bmsKKzM0OTAgZmU3NjU4NWM3NDhlOGVhM2Q4MmRhODY2Y2U2YjZlMmEwNjE5NjNjNiBsZWdhY3ktdHJ1bmsKKzM0OTEgNzE2YmU3NjVhNzliMmJjNmQzMmQ2MTNlZTM5MDk3MTUwYTdiYzZiZCBsZWdhY3ktdHJ1bmsKKzM0OTIgMjVkMWM5OTMyNTU4MjJhMDczNzZhNGI2NzIyYjZiZTg2NTYyMDhiZiBsZWdhY3ktdHJ1bmsKKzM0OTMgZTVkMzYzNTQwMTc5ZjllNmM5N2YxYThlZWYxYzFkMjhhZTc3ODk1NiBsZWdhY3ktdHJ1bmsKKzM0OTQgOGEzNTc0YTA3YjE4NWQ1YmMyY2QwZDM5OTM5OGNlYWNlNzRjYmE0ZSBsZWdhY3ktdHJ1bmsKKzM0OTUgZTJkZWNhOTgzMDA4MmI3MDM5Y2Q4NGI1N2M4MDFjMTRjOWRhM2RjOCBsZWdhY3ktdHJ1bmsKKzM0OTYgNTE5YzI1MDM5YzZhNDU4OGE3ZGRlY2YyYWFhMGFlMzhlNGU4MzBkOCBsZWdhY3ktdHJ1bmsKKzM0OTcgNDA5ZWE3NGZlYjIxN2MyNGM5NDRjNzNjNDE5ZmQzNjNhMjVjYTI3NiBsZWdhY3ktdHJ1bmsKKzM0OTggMDc5MDA4MzRjYzk3ZDFiOGRmMWMzN2E3ODFmYzRjMWM5YjgyNTI1YyBsZWdhY3ktdHJ1bmsKKzM0OTkgZTVmYjljZGJlMDUwN2JiMzFmNDYzYmUyYzRhMTA2NDI0NmEzN2ViZiBsZWdhY3ktdHJ1bmsKKzM0OTkgNzhhN2VkNjk1MzAyNWU3ZWNkZGU5NTg1MDk5YjAxYTZhZTQwYjc2YSBsZWdhY3ktdHJ1bmsKKzM1MDEgZjM4NDhmNzRiMjgyNzk5ZjM0YTAzOGQxYTI4ZGNhODhjN2NlNjg4ZSBsZWdhY3ktdHJ1bmsKKzM1MDIgNDE5MmUyNGVjNTYyZDFlMDliMzg4Y2VlNzJiODFiMjA3Y2RmODM5ZCBsZWdhY3ktdHJ1bmsKKzM1MDMgYzQ0NTQ1ZTU5NWExNWNjMGIyMTg2MTNiY2QxZWEyZGRiMGYzZDQzZiBsZWdhY3ktdHJ1bmsKKzM1MDQgZjhmNjRjYmQ5ZmI1YTE5YmIwMDY1MWI5ZjU0NzQ4M2FhYjkyOWM2MyBsZWdhY3ktdHJ1bmsKKzM1MDUgYWFiMzBiNzRjZjZhOGRmMjc2MTExZDc3OTRlNDM3NDQ1OTJkNTE5NyBsZWdhY3ktdHJ1bmsKKzM1MDYgZDIwN2JlZWRjODZkNjhiYmYzZDllZDlhYzJlNmQ0MjZiMzQ5MmVjMyBsZWdhY3ktdHJ1bmsKKzM1MDcgNjY4ODUzZDdiNjRiY2JhNDQwOTk2NDk4MzJiYzFiMDgxYWE3ZWI4OCBsZWdhY3ktdHJ1bmsKKzM1MDggMTNkMGZkZTQ4ODMyNjNiYzZkNTI1YWM2MzY4OWE1NThiZjIwNjMwMyBsZWdhY3ktdHJ1bmsKKzM1MDkgZjM3OTFjNGZiNzI0N2IwOGVkNjE2MWJkYjU4YTk2OGRkYzA2ZDExYyBsZWdhY3ktdHJ1bmsKKzM1MTAgZDBhNWMzMDBlYWFmNWVjM2MxMDFlODlmZjMxMjcxNGE0YzEzYmQwNiBsZWdhY3ktdHJ1bmsKKzM1MTEgMjc5OGQ4NjAzYmYwMjg3M2RlODA1MGVhYzVjOGQyNzM0MGU5ZWYwNSBsZWdhY3ktdHJ1bmsKKzM1MTIgZjQxNDMzYzk4YzVlYjAyZTg4Y2FlOTk5OGQ5M2MyYjg3YzkzOTRjNyBsZWdhY3ktdHJ1bmsKKzM1MTMgNWQwYjI3ODFlMjNiNDBhZjU3YWM4MTJjNWU1YjJmNGM0YWQ5NGYyMCBsZWdhY3ktdHJ1bmsKKzM1MTQgYTIyYTM1MGQzYTVkZDNjZDAyNGQ2OGNhY2QyNWYzYjkxNmM4NWJiYSBsZWdhY3ktdHJ1bmsKKzM1MTUgNWVmYTc2Y2ExN2YyZWQxMjhjNjgyMzMyNzA1OGM4YTM3YjljNDQzNSBsZWdhY3ktdHJ1bmsKKzM1MTYgYTNhMDI3YzQ5ZWIxM2MwNjgwZTMzZjExN2IxZTVkODMyNGRjNDIzNSBsZWdhY3ktdHJ1bmsKKzM1MTcgZDljYjU1ZWYzNGUyZTUwNGIxMGZlYTBkODQxNzkyMDVkNzg5MDJlOCBsZWdhY3ktdHJ1bmsKKzM1MTggZTE0OWM3N2QxNzNjYWFkYzAyZGZiN2I1ZjU0N2IyNGI3MjRmOTJlNiBsZWdhY3ktdHJ1bmsKKzM1MTkgNGQxYTE1ZmM0NzQ4ZDZkOTBkNGNlYmU1NjIxMGFmNGM0OGNiYTkwYiBsZWdhY3ktdHJ1bmsKKzM1MjAgYTYzNTVjODM1NzhkOGQzZThlZjk4ZTQ5ZTA4ZTYxZmE5NTZiOTQ0ZiBsZWdhY3ktdHJ1bmsKKzM1MjEgZmNjZDQxNWUyZWI4Y2QwYWE1YzFhYTNmYzE4NmUxY2ZhMzc4ODk1YSBsZWdhY3ktdHJ1bmsKKzM1MjIgMmI1NGNjYzg1MmU0MDRhNDE3MmJjN2VlY2M4OGVlMTAwOTVhOWI5YSBsZWdhY3ktdHJ1bmsKKzM1MjMgMDQzZGExOTMwMmVmMjQ0YmY1NzIxZjIxODZjYTI3OWJjYmNkOWEwNSBsZWdhY3ktdHJ1bmsKKzM1MjQgMmZhYzIwOWUxYzNmNTUyMjEyZDI5NmUxNTcyNTE1MjhlNDRkMzA0OCBsZWdhY3ktdHJ1bmsKKzM1MjUgM2UzM2NhNTRmYmRjMWMzMjYxZGQ4ZDY4MGRmMWQ1ZmEzZjA2YWQ3ZSBsZWdhY3ktdHJ1bmsKKzM1MjYgNWQ3NGE5ODczNTg5Njc0NTBkMTkyYmUwOGQyNTljZGFlOWRjMjAwMyBsZWdhY3ktdHJ1bmsKKzM1MjcgMTgwOGNhNWQ4ODgzMDk3YzcyYzZhOGE4OTE0MzA0MWMyMGVhMTNjMSBsZWdhY3ktdHJ1bmsKKzM1MjggN2NkNTMzY2YxOTRhOWRiZWFlOTBiODc2OGZmNWRkMmVlMzNiZjNhOCBsZWdhY3ktdHJ1bmsKKzM1MjkgNTYwNDA3ZWM2MzJiOWY2ZmNlYmY4OTc1NWYzODNkMWViNDcyZTRhYSBsZWdhY3ktdHJ1bmsKKzM1MzAgZTFjNDczZjkyOWM0NzI2NDdmMDIxMGZhNjhiZmM2OGE5MDUwMjMwZCBsZWdhY3ktdHJ1bmsKKzM1MzEgMTMyNjAyZDg1NGQ4YzQwZjRlNDkzZTlmYWE0NmY2MjdlYzY0MTEwNiBsZWdhY3ktdHJ1bmsKKzM1MzIgYTVmYzEwNDg0OWFhMjFmNjMyMWY1ZDk5N2UzYTM3ZmI2NWE3ZDlkMyBsZWdhY3ktdHJ1bmsKKzM1MzMgMjg3ZmMzMmMxZDljM2ZiMmYyMjFkY2IwNTZhMjUzOTI5YmUzMDdjYSBsZWdhY3ktdHJ1bmsKKzM1MzQgZWU0YTJmODkzMjU0ZGQ0MGUwMWMyN2RjYjYxYTUzOGQzOTM0NzBlMyBsZWdhY3ktdHJ1bmsKKzM1MzUgNGM4ZTVmY2IzMzAxNTlkZjM3OGYzN2I1ODMyODlmYWZhYTVkOWRhOSBsZWdhY3ktdHJ1bmsKKzM1MzYgODllMWU1ZDljY2JmMDNkOTQ4NTBmMjE2YzQxOWQ0YzE1OGM1NjU4NSBsZWdhY3ktdHJ1bmsKKzM1MzcgZjllNWEyODIzNjc3N2U1MGEzMmYxMGRiMTkzODkwYjE5YWY0MmNiOCBsZWdhY3ktdHJ1bmsKKzM1MzggZmFhZjM4NDNiOGJkNWQxYTZmYjdjMzM1N2EwZTQ4ODAzMGEwNjRlZCBsZWdhY3ktdHJ1bmsKKzM1MzkgZjdjNjA2MTAzZGQ1ZWQxZWVhM2U1NzMzZWVmMTc1NTYxMzEwMDhlNCBsZWdhY3ktdHJ1bmsKKzM1NDAgN2JlN2E3ZTBjNDY1ZTc2ZThkOTdlNTQ1OWQ1ZmU2MzhlY2Y1Y2ZlNSBsZWdhY3ktdHJ1bmsKKzM1NDEgODlkN2Q1ZTEzNmFkZGNlN2I1OGU3ODc1ZWUyOGM0ZjI2ZGRkM2ZmOSBsZWdhY3ktdHJ1bmsKKzM1NDIgZjNhMzI1NjYyZDM5YzYyYjA4Y2IwNDFiNGQzMDc3OTM1ODliNWE3OCBsZWdhY3ktdHJ1bmsKKzM1NDMgMTA1ZDMzMmMyNzdjNjUxOWExMjgzNmUyOWVmMzUxOWY5Yjg2Y2FhYSBsZWdhY3ktdHJ1bmsKKzM1NDQgMzU0M2NlODhhMzFlZDg1ZjJiMWRhNTJlMjk4MjMwMjRkYzU2MmEzNSBsZWdhY3ktdHJ1bmsKKzM1NDUgYjAzZDAwZTI0YzNjMWEwNTdmODNjNDU3ZTdmN2E2MjVkY2IzYzJmNSBsZWdhY3ktdHJ1bmsKKzM1NDYgNzEwYzZiMTNlODc1MDgzYTY0MmVkNGU0MmVmZTY4ZjkzOGE2ZDQxNCBsZWdhY3ktdHJ1bmsKKzM1NDcgYTRhYTgzMDEyYWYzYjIzZmFhZWMyYzA5YWEwYTZlOTUxNjc2OGIyYyBsZWdhY3ktdHJ1bmsKKzM1NDggYzAyYjNmZTBiMzNjMjU5ZWZjZGYxZjgyMzY5YWY2NDExODE1MGNhNSBsZWdhY3ktdHJ1bmsKKzM1NDkgYTBhMGM3NmY2ZWY2YThjYjU3ZThjZDc0MDdiMDAxZTM4OWVmYWUxZSBsZWdhY3ktdHJ1bmsKKzM1NTAgYWU0ZTkwZmE4YmNhNTIxODk0YjcwOGE5ZTA0ZDAwZTQ1NTQyMmIwMyBsZWdhY3ktdHJ1bmsKKzM1NTEgYjJjN2FhYmZhOTEzYjliYjJmOWYzMTc4NWIxZWY2NDlhMmY1Mjk0MyBsZWdhY3ktdHJ1bmsKKzM1NTIgMTU4ZjBkOWNkZDQwZjUzNWRhOGY1ODcxMjFhZTcxMzRlZDYwOGI1MCBsZWdhY3ktdHJ1bmsKKzM1NTMgNWEzMGE0ZTA1NmU3Y2MzN2Q3MmYxMGFkZTEyMzQwYzg0YTg4Mjk2NCBsZWdhY3ktdHJ1bmsKKzM1NTQgZjk5MmFjMmEzOGQ1YzdmM2ZjNWE0NzMwN2I2MGVkYjMzOGQ3MzNmNCBsZWdhY3ktdHJ1bmsKKzM1NTUgZGNlM2MzMGNkNzI3ODdhNzQzZGI3YTg3ZTQ2MTY5N2IyOTlmYmQ2NCBsZWdhY3ktdHJ1bmsKKzM1NTYgZTk5YzIyNDkwYmZiZDRlMTc1YWIwOTQ2ZTBkN2M5OTdmOGYzZWRkNyBsZWdhY3ktdHJ1bmsKKzM1NTcgY2ZmZThkNmIyZjA5YjdlZWQxODY3YmQ3MzkzMDVhNzZmNDA5MWNjZCBsZWdhY3ktdHJ1bmsKKzM1NTggN2MzMjQ1YzE4Njc3NGI4NDQ0NTQwYmVmNmQ1MzkzYTM2MDE5NmVkMyBsZWdhY3ktdHJ1bmsKKzM1NTkgMGZmZmY0MGQxM2ZmNDcwZTM5MWU4NzE5Y2QyNWFiYzUzZTM1NTRiMCBsZWdhY3ktdHJ1bmsKKzM1NjAgN2Q2YTJkOTUwZjEzYzc0MDc4NWM0ZmFmMjAzMzFiNTZhYTYxYmZmZiBsZWdhY3ktdHJ1bmsKKzM1NjEgOThmNTFmNjFjYjRiNzZhZmY3N2Q1ZDBiYzJlYWI1YTlkMzY5YmU0ZSBsZWdhY3ktdHJ1bmsKKzM1NjIgNDIyOTI3NWRlYzMyNjEwM2E4ZGI0ODY3Yzg3MzczNWIyNjBjNjRhZSB1bmxhYmVsZWQtMi4xMC4yCiszNTYzIGJlNjFlMDcyYTUwNWI5ZWNiMGY5N2Y3ZTFiMGQwOGE5ZmVlMWNkMmMgbGVnYWN5LXRydW5rCiszNTY0IDRhMjg2YjMwMGI1ZWZjYWYyODFmZGJlOGI1MzI2YjE5YWQ5OGZjYzggbGVnYWN5LXRydW5rCiszNTY1IDFjZTJjMGY1NjVlZjNlNmJhZjQ0NGM4MjhmZjcyOTIwOWJjOWQxM2IgbGVnYWN5LXRydW5rCiszNTY2IDFkODQxNTg3YWVkZWIwNzFhOWE1OGEyOWM4NzBhYzhlMTE4YWZmNzcgbGVnYWN5LXRydW5rCiszNTY3IGNjMTcyY2UwNTU2MWFmMTZhYTA1YjIxNWEwN2Q1MWYyY2JiY2M3ZDMgbGVnYWN5LXRydW5rCiszNTY4IGFhYzgyMzFhNzE1YzdjZTQ4NzdlYWU2ZmJjOTgxZWRiN2JjMzI3ZTYgbGVnYWN5LXRydW5rCiszNTY5IGNkNTk4OWE1OGJjZmUwMzIwZGRkMmIxNGM0NjlmN2MyYjVhNGM0OTEgbGVnYWN5LXRydW5rCiszNTcwIGFmNGUyNzFkMDdiMWRkMmVlNWE3MDZjZGJlYTZlYmViZjk0ZDgyZWQgbGVnYWN5LXRydW5rCiszNTcxIDYyNzg5MzNkMDJlMzhiYjhhYmRkYmM3NTQ2NzNmNzk2MTdkMWJmODggbGVnYWN5LXRydW5rCiszNTcyIGM4MTQ5Mzc4ODBjYzNjYzAwNjc2MDgyY2M4YTliNGE0ZTVlOWQ3OGMgbGVnYWN5LXRydW5rCiszNTczIDkwYzVlMmJiNGRhNTViZWRlNmU3ZDhkZTQ0ZTZhMmIwYmNkZTExY2QgbGVnYWN5LXRydW5rCiszNTc0IDQ3NDgyM2U1ZjdkYzEzYjk2ZDVmZDhlYjljODA5Y2NlOGFhOTA0NjcgbGVnYWN5LXRydW5rCiszNTc1IGE1OGMwNjFiNGY1NTUyNTE3N2Q2N2ExNTJlN2UwZjhmOTNmNGZlYTcgdW5sYWJlbGVkLTIuMS4yCiszNTc2IDJlMGE4YTNlZWY0YThmOTc1YjBjMTI2NzEzNTJkMTI1NzdkNjM2YmIgdW5sYWJlbGVkLTIuMS40CiszNTc3IGI5ZmNmYjk5YTNlNTRiNmY3NjYzNTA4ZDEwZTBkODA4NzgxYjlmN2MgbGVnYWN5LXRydW5rCiszNTc4IDE4ZGY2NzQ1MzlkYTU1MzA1ZjZkMjZjMmRkNDYwMzA2YTBmZjJjMzMgbGVnYWN5LXRydW5rCiszNTc5IGY1YjFkZGZkZGJhODMzYjMxYjZhYWY2MWQ4MTEzMDQ5ZjA0MjM0ODUgbGVnYWN5LXRydW5rCiszNTgwIDMxNTI3MmVjNGQ1YjYzZDVlZDJlNWY1ZjAzYzhmYTExZmZjZDYzMGIgbGVnYWN5LXRydW5rCiszNTgxIDE2OTFlYTVkOWQ0YjViMzQ0MTk3YTMzNmM3MzIxYzVlYTNiZTkyNjUgbGVnYWN5LXRydW5rCiszNTgyIDAwZjFlODg2NGRjY2RmZTYxNGQyNGIzZWMzNDQ1ZjNlNGFjYmM5MWQgbGVnYWN5LXRydW5rCiszNTgzIGM5MTRiMTBiZjJlZDc3NWMwMzJkNzRmNWFlNDVlMDQ3NjYwMGJhMjQgbGVnYWN5LXRydW5rCiszNTg0IDI0OTE3NzRlMzZhOTBjYmI1Y2ZlMjYzNDMyYjFhNzZkMmQzYWExMTkgdW5sYWJlbGVkLTIuMjUuMgorMzU4NSBmNTUwMzFkNTQ5Yjc5YTZiZWIwN2MzMGJlMWRmNTNmZTQ3MzQ0OWVjIHVubGFiZWxlZC0yLjI1LjQKKzM1ODYgZWQ1MjJjOTQ4ZDQyOGMzN2FlMGU5ZDU4ZTRjOWU5ODUwNmRjNzYxOSB1bmxhYmVsZWQtMi45LjIKKzM1ODcgY2FkZWI3OWMxMzJmNTUwMmNlZmY5MjMxMjAyMDc2NjBkOWIyNTcyYiB1bmxhYmVsZWQtMi45LjQKKzM1ODggMjg1MmVkYjRmZmZlMGVjMzc4OTVmMDMxNDEyM2UwODQ1ZjhlYzBjZCBsZWdhY3ktdHJ1bmsKKzM1ODkgMDY1NzA0MjlmMDYyZDMxNGQwYjg2ODIyZDFhM2NjZGE1MzQ2ZTIwZSBsZWdhY3ktdHJ1bmsKKzM1OTAgZDZmNmExY2I3ZDc5ZTliMTk4ZmMxNTgzYjI4NjljOWU5ZjQwMDgxNSBsZWdhY3ktdHJ1bmsKKzM1OTEgZjdlZGZhNmQwZGNiYTQ4NzJiZjQwODRmNmI1NzRkM2VhMTE4ZGQzNCBsZWdhY3ktdHJ1bmsKKzM1OTIgYjFiYjc0YTJiNTkzMGU5YjRmYzc4ZTliNTVmNjY5MTU5MjEyYWJkMCBsZWdhY3ktdHJ1bmsKKzM1OTMgMjA0MDAxZGRkY2MzMmUzOGUxMzY5OGQ4ZDJkZDU5NGNjNmQyNTg4YiBsZWdhY3ktdHJ1bmsKKzM1OTQgZDJmOThiZWVjODVjZjIyNGM4ODI5OGEwZGI2ZGU5NWQ3YzI5ZTQwNyBsZWdhY3ktdHJ1bmsKKzM1OTUgZmU3Mjk4ODEzZjE3MTRiNDdmYTJiOTMwNjcwNmZmMzVmODNhYTRkNyBsZWdhY3ktdHJ1bmsKKzM1OTYgOGE5MGM5YmJiZGYwYzlkNzFhODM0YzJmMzkxOWFjMDQwNTEyZGU3NSBsZWdhY3ktdHJ1bmsKKzM1OTcgMGIzMmVjOGEzZTIwODIxZTY0OGVlMWU1Y2E5MTM5MTg3ZDAwNmJjNyBsZWdhY3ktdHJ1bmsKKzM1OTggYTJmMmE4YmQ1NmY5YmZmMWE1MjFhNmNjNmVkOWQwNWYyMDQ3Yzc1MCBsZWdhY3ktdHJ1bmsKKzM1OTkgNzJiZGRmYWQzNTFhOWEyMjBkYjI0NTA0ZGFiYTBhNjhiYWQ4MjhmMSBsZWdhY3ktdHJ1bmsKKzM2MDAgYzg4N2ExZjMwNTI1NWQxYWJmYTZmZTZhZWZlYTY4ZjNlNmQ2ZDFlYyBsZWdhY3ktdHJ1bmsKKzM2MDEgODcwMWI5MzM4M2FiMWRkZTkxOGViN2M2Y2Q2ZjAyZTUzYjk1YjkwNSBsZWdhY3ktdHJ1bmsKKzM2MDIgZjdhNzUyZmI3YjczN2QxZjBlOWNiNDVhOGIwMjEyNzZiODk2NjIyYiBsZWdhY3ktdHJ1bmsKKzM2MDMgYWRhNTZiMDc2NWMxNjcyZDlkZWQ4MDdmNjMxNjVjNzc4NWI1NDUwNSBsZWdhY3ktdHJ1bmsKKzM2MDQgOWM3MDdkOGNmMGM4ZDE2ZTZkODY5ZWZiNjNhNmU4Mzg4MWRlZjc3YyBsZWdhY3ktdHJ1bmsKKzM2MDUgZDcxNjhjYzJiZTA3ODMzZDBhMTVhMDZmYTk0NzQ2YzU5MzNmMTkwMiBsZWdhY3ktdHJ1bmsKKzM2MDYgNjQwYzM2YjY0ZGVhMWNmNzJmZWU0MWY1MTE5YzA2ZDUzNDg0ODMxMSBsZWdhY3ktdHJ1bmsKKzM2MDcgNWNhZTc2NTMxNzFiNDRhMTlkNjVhYjYxMzhmNzE4MTU0MWNmNjdjNCBsZWdhY3ktdHJ1bmsKKzM2MDggNDZjMjE3MzM3YmRlNGY1NDk5ODkwMTRlMmZhZmE3ODY0NmQxM2ExMiBsZWdhY3ktdHJ1bmsKKzM2MDkgNTYwZWM3MDMwODE3N2I0MzkxYWZhMTcxZDYwNGRmMzFlN2UzNDQwYyBsZWdhY3ktdHJ1bmsKKzM2MTAgODlhNWNlMTlkMTNhZjIwOGVhMTJmNWU2ZTAwMWRmMGMyNGE3YTVkYyBsZWdhY3ktdHJ1bmsKKzM2MTEgZTQ5OTExNmQ0NWU0OTE5ZGM0NmQ3NTJiMzg0OTY4MmRlODdkZDI1YiBsZWdhY3ktdHJ1bmsKKzM2MTIgZDdlMzg0MmIyZTdiMTBmZmZiMDRmNDFlYmNlYWM3MDE1MDEyOTE2ZiBsZWdhY3ktdHJ1bmsKKzM2MTMgZTQ2MzIyYTMxZjYyMmJhMWM5ZDA0NDliZmQwZjdkYTNhMWRkNjA4YyBsZWdhY3ktdHJ1bmsKKzM2MTQgZDgyYzJiYTRmODE4N2I1MDBiZTZkZDYwNGRjN2VlM2ZjMDhlNmIwZiBsZWdhY3ktdHJ1bmsKKzM2MTUgY2QzODI0NTZjNTcyYmJhYTIwNTUzZTliMTExMjRhM2VkMTZlNzBjNSBsZWdhY3ktdHJ1bmsKKzM2MTYgMjhjY2VhYmY4Y2NlYzY4MmFjNjczMThjMjNjZDg4NzNkMWY3OGIzZiB1bmxhYmVsZWQtMi4zNi4yCiszNjE3IGNiZjI4ZDY1NDY5ZjUwNjI0OGIzMmFjNGMyMmI4MzQxNmQ2MTNhNzggdW5sYWJlbGVkLTIuMzYuNAorMzYxOCA0NzQ5Yzk1NzQ2NmI3N2YxMDgwMTk5ZWM2ZDk3MGYzODY3Y2FjYTE3IGxlZ2FjeS10cnVuaworMzYxOSAyZWMwOGE5ZDAzMjU1MjEwNmNiYmJlYTZjZDBhMDE4YmRhZjc5MDIwIGxlZ2FjeS10cnVuaworMzYyMCBmMmQwNDA1NGM5MzQ2YTM2NDVmNmQxNTNmZmNjODVkM2ZhNTJjNjZkIGxlZ2FjeS10cnVuaworMzYyMSA5MTMzODA2N2Y3NTAxZTNlMWQ5ZDYzODg0NWJhZmJhOWY3OTZhY2U4IGxlZ2FjeS10cnVuaworMzYyMiA5ZmIwZjFhZmIzNGNkM2E4N2ZjMzQwNGIwMDNiNGI2ZTM5OWUyZTUzIGxlZ2FjeS10cnVuaworMzYyMyA0ZmY2MDhjNGNhY2FlMGMxNDc0YjQ5ZjQ4YjQ1YjM5ZDczZjM5YzI1IGxlZ2FjeS10cnVuaworMzYyNCAzMjhmNDQ2ZDIwMTY3NjA2ZjhkMjYyYzA0MzRhMTA4YjU1YWNjMjQ5IGxlZ2FjeS10cnVuaworMzYyNSBhZTkzZWM0ZGQ1NTYzNjliYWZhYjM5YzRlMGE4NjUzZGM3NzQxNGYyIGxlZ2FjeS10cnVuaworMzYyNiBkOGNhMGU5MTNjNDQ0MmE2YjRjZDYzMjIzMjY4OTVkNzY0NGE5ZGM4IGxlZ2FjeS10cnVuaworMzYyNyBhODkzMmE0Yjk2MjRkOWJiZDI1NTQ5ZDJhNTI2YzEwNTk5OWEzY2I2IGxlZ2FjeS10cnVuaworMzYyOCBhNWE0NjU0YzMzYmU1YjM5Nzc2MTk0MDM2MTk2ZTMzMmU0OTlhZTg4IGxlZ2FjeS10cnVuaworMzYyOSBkNzczYTVmODk0MjY4NzlkYjJmZWJkMjU5ODkxMjMzMWNkOGJmMzNlIGxlZ2FjeS10cnVuaworMzYzMCAzYTVmMmYxMTBmNzA2MmI5ZTI2NTEyY2ZlZDQ5YWMwMmFlNjI0Yjg2IGxlZ2FjeS10cnVuaworMzYzMiA1MDEwMWViNjMxMWIwNzdjOWQ5NjczMzY5NDI0MmE0MWY4N2Y4ODZlIGFscGhhMTAwCiszNjMzIGIxOGViMmY0YWYwY2YzYzU5MmVjMjNjNmZmMzdjNjhlOTY1MDgxY2UgYWxwaGExMDAKKzM2MzQgMWNlYTlkODBhMmJjMWNlNGIxZTFmNjA4ZmQyNmQzMDA1ZGNiZjRmNCBhbHBoYTEwMAorMzYzNSBkOWQyMTM4MmM3M2I5MmMxODFhMDJjYTNhMDQyMDk0YWYyMzNhMzkzIGFscGhhMTAwCiszNjM2IDViOTcwMDQ3YTcyMmMxNmUxMjZmNzJlMDVmNTFjYTRkZDI5NTU1YTggbGVnYWN5LXRydW5rCiszNjM2IGVmNzNkNDBhODI3OTUxYzlkYTdhMzJjYzhkYmUzODYwMGZmZWM3ZGIgYWxwaGExMDAKKzM2MzcgMjkyYzVlNzkyNjRkZjI2NjgyNTZjNjllNGU4NGJlOWQwNWY5NjFmYyBhbHBoYTEwMAorMzYzNyBkOGNkYWM4ZmRjNzQ1MGJlMWJlMTYyMjg2NTQ5N2Q0YWEwYjJkY2EwIHVubGFiZWxlZC0yLjI1LjIKKzM2MzcgOGIwOGEzNjY3NmQ0ZWRhNDdlMWRhNzY5NmU0YjIyODEyMzE5M2YzYiB1bmxhYmVsZWQtMi4zNi4yCiszNjM3IDE5ZmEwMWM5ZmFmMzk3NjM3OGY2NTRiYjRmYTdjZDNkYjI4ODJhNGQgbGVnYWN5LXRydW5rCiszNjM3IDhlZWYyMTE1NTVjNmQzNWY0ZDI5YzlkYzc3NGEyNDliZDFjNzRjZDAgdW5sYWJlbGVkLTEuNS4yCiszNjM3IDBjYTY1M2Q2NzdkMzQ5NzQzYzI5YzFhZTIyMTJhOGRjYjU3MjkzY2QgdW5sYWJlbGVkLTIuOS4yCiszNjM4IDYwN2IxOWFlMWUxM2EzMjIwNTA2ZTg1YzI4ODdmZjc0OWM2NGY1NTAgdW5sYWJlbGVkLTEuMi4yCiszNjM5IDMxZjFiOTg3Y2RmODJjYmNiMzhmNTAxMDhhMGFmMDgzNzlkODMxZjMgYWxwaGExMDAKKzM2NDAgZDk2MTk5YmU3NGU2YTQ0OGNjOTU0MGJkOTZiOWYxZTRjOWY0MTVkNiBhbHBoYTEwMAorMzY0MSBmOGQzZmY2NjM5YjU5NjcwZGMxMTMyZDllOGRjZTVkOGNjOTVmZWM5IGFscGhhMTAwCiszNjQyIGE3OWIwMjQzOTdmODdjNzE4YTJhMzFiZGYyM2RkOTZkZTAyOGViNzkgYWxwaGExMDAKKzM2NDMgNWNlNDA0NjJhZTk5YWVkOTRlYjUwZjgxOGMyYzRlY2IyNzcyOTIwYSBhbHBoYTEwMAorMzY0MyBiODU4MGUzMjA0NmMxYjY5MzljZWFiOGU5MzkyZWVlODgwZjJlNGFlIHVubGFiZWxlZC0yLjEuMgorMzY0NCAwOGQ0ZGE0OGRjZDU4ODc0MjA4MTI3MTI0MjBmZTE3ZjMwMTc1NzJkIGxlZ2FjeS10cnVuaworMzY0NSBkOGJhM2NmOWRhYmNhOTc4ZmY1NjVmMzYxOTAwNzE4YTViYzg3NDQ4IGxlZ2FjeS10cnVuaworMzY0NiAxZjhjNjQ4NDkyMDM0ODAwMTU3NTVkYjUzODlkZDI0NWJkZWJiMmI3IHVubGFiZWxlZC0xLjMuMgorMzY0NyA2YzA2NzY5YTg4NjliMGRkZmFjNzRhOTgwZTg2OTU1MjU4OTRiNDZiIGxlZ2FjeS10cnVuaworMzY0OCAyNWMxMTJiM2M5NTdlZTE5MTUyNWFjNTQ3ZDgwN2Q5ZDAwNzliNTg4IGxlZ2FjeS10cnVuaworMzY0OSAxMDlkMzlkZWMxMjg4NmJlM2MwY2NkZDdlYjYzZTQ5ZWRhYWZjM2NiIGxlZ2FjeS10cnVuaworMzY1MCA1ZjNkNmU0YjU1MDNkNTFlYTFjYjIyNDJhZDcxN2VmNTcxNzBlOTE2IGxlZ2FjeS10cnVuaworMzY1MSAzMDU3NDhlYmFiNDM3MjQ1MjViYTRkZjllN2YwYWQzZmI5NjE5NWE5IGxlZ2FjeS10cnVuaworMzY1MiA0ZGM3YjE1YjZiOTcwZGFhZGUxZTM3OGU3MzNlN2Y4YzJlYmQ2MGQwIGxlZ2FjeS10cnVuaworMzY1MyBjOGE5NWMxNzBlMWVkODczNDA3MzQ1YjkxYTVhNmM4NDMzMzg5NGYwIGxlZ2FjeS10cnVuaworMzY1NCBlZDM2YjNlOWNkNzg2NWFjNmI1MTFlMGQ0OGVlNTBhMDVlMmVkZDU5IGxlZ2FjeS10cnVuaworMzY1NSA2M2ViNmM3NTA5Mjc1N2QyMDA0MDA3OTcyYTFlNDIwOTFhMDZlZDQxIGFscGhhMTAwCiszNjU2IDE5Yzk4ZjIwYTliODNhMzFjYjQ4OWJjYWNiMTIyODdhMmYxODlhNzMgbGVnYWN5LXRydW5rCiszNjU2IDA4Y2Q4Yjk2YjZiZmMyNzhiNjZlZDQxMWQzYjlkN2I2MzRiODk5MWYgYWxwaGExMDAKKzM2NTcgNmJjZTMzZDdmMGQxMTJmNGRkYjM5NmVlOTUxMWFmNjc2OTIzMTIxNyBsZWdhY3ktdHJ1bmsKKzM2NTcgZjUzMzZkODZmNThiOGQ5YTRlMDM0ZmQ0YmNlMWQwYTNmZmNkNGRhZCBhbHBoYTEwMAorMzY1OCAzMDU5MjE4ZjYzMGJkOGVjMGYyNmIxMjJlZTM4YmU3NTZlYzc5MWE2IGxlZ2FjeS10cnVuaworMzY1OSA3NzM4Y2U5NWJhNGRjYTljZDhlYjVlY2QzYTJiY2RlMGFlZjA1ZTU0IHVubGFiZWxlZC0xLjkuMgorMzY1OSA4MzhhYTE0MDZlZWFlZjgzMjE2ZTA0NDkwYmRiZmJhMzFhNjEyMTFjIGFscGhhMTAwCiszNjU5IDI0MzBhODYwMmE2NWQxMzY5NTM2NmFjY2VjZjk2NDlkNzU0YTJiOGUgdW5sYWJlbGVkLTIuMTYuMgorMzY1OSBiNGY4MTVmM2NmM2UxMDhmYzk3Y2YwZjI4Yjg3ZmFiYzM4NTBlNjEyIHVubGFiZWxlZC0yLjI1LjQKKzM2NTkgZDAxODc2NThjZjBiM2JiNmY0NDljZGMyZDhiMGUxZDlkOTE4NmE1MCB1bmxhYmVsZWQtMi4xLjQKKzM2NTkgNjEyYzc2YWFjM2FhODllODZmNWU0ZWNjZjk4M2IzNGNlZDBhMjk3MSB1bmxhYmVsZWQtMi4zNi40CiszNjU5IDMxM2Q5YjkzMDk0MDllZGRkNjJiOTc4NGU3MDZjZDQ3NGZjY2EzMDQgdW5sYWJlbGVkLTIuMTAuMgorMzY1OSA4ZGMyY2YzMTQ1YjNiYmJhNTNhN2JkYzVkMWZlM2M2ZWI5ODM5NjgzIHVubGFiZWxlZC0yLjkuNAorMzY1OSA1MWVlZmMwNTRhZmY4YmEzYmUxOGVkZWNjZDkyN2IxMjEwMmQxOTZiIHVubGFiZWxlZC0xLjUuNAorMzY1OSBhZjY2N2M2ZDIwNzIyMTExOTRkY2M0OWNlY2NlYWYxZWJiZDFkZTc2IHVubGFiZWxlZC0yLjMuMgorMzY2MCBkNDcwNWQ3MDY2MzI5MjQ4OTAwY2Y5YzYyNTcxYTIyMDIyYTdkNmQ3IGxlZ2FjeS10cnVuaworMzY2MCAxZGNhMzNlYjJkN2E1MzdkZjE0YWIzODM1Njk4ODNmNTVkZTk5NzVkIHVubGFiZWxlZC0xLjIuMgorMzY2MCA4ZjQ0ZTQzMTA0MTRiNmQ5NTc4NWE5ZmUzNzk1NjMxNDJhYmFmN2IxIHVubGFiZWxlZC0xLjMuMgorMzY2MSBkY2NlZjFjYmRhNWEwNmRjOGYxNzlhZjdjOWRkNzc3MjIyN2FlNjlmIGFscGhhMTAwCiszNjYyIDJlYzk2MTQwYTM2YjQ4ODM0NWEzYzFhMWNlOGZiZTQwYzNiM2IyNjUgbGVnYWN5LXRydW5rCiszNjYyIDRhYTkxZmQ2OTcxNTQ3OTZjYTFlZDFhODVhNTZjYzU5Y2IzZDNmODYgYWxwaGExMDAKKzM2NjMgYzc1MWNiZWVlNjg4MmZiMzA0NmNiYTE2Njk5MDZhOTVmMzZhNTcyOCBsZWdhY3ktdHJ1bmsKKzM2NjQgMjM1NjFkYzdiMTVmNWU4MzIwMGFhNWZjMDQ1YWM0ZDExY2FkOGU5YSBhbHBoYTEwMAorMzY2NSBlNTYwYjMzNDI0MDViMzI3N2I0ZGZkYzZiMDAzODAyMjc3ZDFlZTBmIGFscGhhMTAwCiszNjY2IDBlYjBlZmM1MWQ5YjM3YzQ4ZmE2YzM5NDMzYjdhZTI4ZTI0NjhlN2IgYWxwaGExMDAKKzM2NjcgYzMyZTEwMjA0NjhkZmY4NDI5MTU3OWNhOWRjNTljMWFiNjc4MWVmZiBhbHBoYTEwMAorMzY2OCBlMjYzYTcyYTc2ZmU5ZDZhMWFjMDFlMjMzYjQ4NTI0Mjc3Njc4OWVlIGFscGhhMTAwCiszNjY5IDkzZDEyOTcxNzhjYmU3ODVmMGIyNTUxMjFhYWIyY2VjZjdlYTIxNDggbGVnYWN5LXRydW5rCiszNjcwIDk4YzU1OWZkNmUyYTkyYTRlNWMwOWVhNmIzMTdlMjliMDJkZTk2MzIgYWxwaGExMDAKKzM2NzEgY2JhMTA5NmRhNTUzMTFkZDYyYjY5YzBiYmI4MDI3MGEwYzE4OTlmYyBhbHBoYTEwMAorMzY3MiAyMDY0YjE2NzA5ZjJjZTVmOTBmNmY4NGI4NGVlMDUxYmIxZWM1MGI2IGxlZ2FjeS10cnVuaworMzY3MiAzNDVkNTdiZWMyNjlkN2JmZDZmMjZlNzI1MTU2OWNhMmNkM2NmYjUzIGFscGhhMTAwCiszNjczIGY4NmY2NTFjNzA3ZjQxMGIwMjkwMWY5OGU1ZTQ3YmU1Nzc1YjE5OWQgYWxwaGExMDAKKzM2NzQgMmNiMDc2YWU4OTI3MjE3OTEwMWU2YTFlYjNmMzJlNzBjYTg2N2ZlNSBsZWdhY3ktdHJ1bmsKKzM2NzQgZWJmNzI4ODAzNTVmMTgyNjNkMWY4NzFkNWQwNDMzMmNkMTcxMTZkZSBhbHBoYTEwMAorMzY3NSAzZmU3NTgyYjk2MzZkZjJkNDNjNDc5NGNlZjFjNmFlYjZkYmFkZTI1IGFscGhhMTAwCiszNjc2IDQ4MTQxZTY4YjM2OTgzMjJmYzAzN2QxNDQzZDgxODU0YTEwN2Y0MDUgbGVnYWN5LXRydW5rCiszNjc3IGQ4MzY2NDU4ZDEwNjZkMWMwNGEzMDJhODcxYjQ4ODk1MjEwNTMzMDUgYWxwaGExMDAKKzM2NzggMmJlODA0OTY2MTQ3Njk4YjQxNDdhOTRmZWRlYWJiYTA5OGZiNzgwMyB1bmxhYmVsZWQtMS4xLjIKKzM2NzkgZjJmMTYzYzA5OTU5YjNlNzUyMjY3MTYzY2FkMjc4MzIyYTk0Yzk5NSBsZWdhY3ktdHJ1bmsKKzM2NzkgYjY2YzZlMmE2ZTA2ZmEzNDJlMDQ4YWQwMjM2MmQ0ZmE4ZTE4ZGEzMiB1bmxhYmVsZWQtMS4xLjIKKzM2NzkgZmVjMmNmOGQ2ZTc3OTk5NDliMDZkMzMxMDJmZTI2ZDllNmQ3Nzc0NiBhbHBoYTEwMAorMzY4MCA4NzA3NTFmYjA5ZWJmZDU5MzA5Mjg1OTJmNThiNTlhMmE5OTIzNTgzIGFscGhhMTAwCiszNjgxIDBkZWY5NGY4MGIzODQ5NzQ4NjgzM2Q5YWFmNzA5OWZiMmY1Y2NiNDkgYWxwaGExMDAKKzM2ODIgMjRkNjU2NTNlMmFjOWQ0NDYyY2MzODQwMjIwMDBhNjE5Y2FkYmUxNyBsZWdhY3ktdHJ1bmsKKzM2ODIgMWM0ZTJkNjIwYjE2MzgyNjEyOTdiNWZiYzNiODYxNDJkODA2NTk3OSBhbHBoYTEwMAorMzY4MyBkMDNjZWE2YzA3OTVkNGQ5ODZjNzczN2Y2NDRjMzI2OWEzZTU1MGRiIGxlZ2FjeS10cnVuaworMzY4MyA0Mzg1MzNiMzQxYTZkNTY5OWMwMzVlNjU1ZGJhMDI5YWFkOTdiNGU2IGFscGhhMTAwCiszNjg0IGUzMzc2MjRjM2VhMzcwNTM1NDAxZTNiOGEzMmE5MTdmNWUzY2QzOWEgYWxwaGExMDAKKzM2ODUgM2Q1ZDRjOWVkMTlkZDg2OTVlOWY1NDdkY2Q2YzBiZDQxYzFlZGI2ZSBhbHBoYTEwMAorMzY4NiBiODBmMWRjOTZjMWE1NmIzYzQzYjQwNzlmNzg3MzAwM2YzZGM3M2U5IGxlZ2FjeS10cnVuaworMzY4NyBlYWIwMTk2YThkODM4ZTcyYzljYzA0Zjg5NjViYjE1Mjc0YjkzMWYzIGxlZ2FjeS10cnVuaworMzY4OCBiNWIxZjM4YmVmYTQ4ZGEwYTg2NjFkNGJhZDE4YThjOTczZmNiZTM3IGxlZ2FjeS10cnVuaworMzY4OSA1NTBlMjYwNTk1OGIxNmU2NDE1NjU3NzdjMTA5ZjM1ZGFhYmRjYTM2IGxlZ2FjeS10cnVuaworMzY5MCAyZGRlYThlNmRkMjBiMGZiN2JlZjMwMjIyZWEzYTA2YWVjNzQyNzk5IGxlZ2FjeS10cnVuaworMzY5MCAzNTU5YjA5MDY3MGVlYzlmZDFiNjk3YTlmOTBmMTE3OTA5NGY1NjUwIGFscGhhMTAwCiszNjkxIDYxYTcyM2ZhMjUzOGM3NTVlNGY1N2E1MDQzZDE1NmEyYTczMTMzYTAgYWxwaGExMDAKKzM2OTIgOWYzZTJlOTMxYjRiOTNmZDViNmVkNGVjODM4M2E1YzhlMjIzZTcxMiBhbHBoYTEwMAorMzY5MyA1NzgxYWFmOWNjZDM1ZjcxZDAwOTBjNWQ4MjRhMzVmNjhhYjk4YjdhIGFscGhhMTAwCiszNjk0IDUwMTlkMDNkNzE5MjBiOTE2ZDI2NjU0OTY3YzZkNjcxZTJiYTI1MDkgYWxwaGExMDAKKzM2OTUgMjI0YzZiZDkyY2ViNDU0MGQ3NGZlMjMwOTRmMjM0ODg5MWQxNjIyMCBhbHBoYTEwMAorMzY5NiA4ZDZkODUzNTlmYTNiOWNkZDEwYzhhYWJkYTQ2OTU3MmJmZjMxNTk2IGxlZ2FjeS10cnVuaworMzY5NyBlNWZhODk3OWI5ZTY2ODI0MTIwZTk3NjkyNzZmNGVkZmM0ZDAyNTVmIGFscGhhMTAwCiszNjk4IDBhNmJlZTRiNmIxNzUxOGJlZmY5MGUxYjQwMzE3ZTMxZjc5YjNlNGUgYWxwaGExMDAKKzM2OTkgMmFlMDJmMGQ5ZTZiMGE2ZDQwODdkY2RhYmJhOTdkNDkwNzNjMGM5NyBhbHBoYTEwMAorMzcwMCAyZDRiZDhjYzQwNDIwMGZhNzI1NWNiZTVhMGM3NTA2NmIyMmM2OGM5IGFscGhhMTAwCiszNzAxIDRmODk2MGM3ODE0MWRiYzM3NDAyN2M1ZTg4YjdmYWI0NGY4NWEwZTAgYWxwaGExMDAKKzM3MDIgNzU4NzE3Zjg1MGYyYWEzN2U1OTM2MzYwZDNkNDNlZTZjZTQxMjMwYyBhbHBoYTEwMAorMzcwMyAwNTAxNGUwZDMzZWM1ODE2NDVkYWQwNGVjNGIxOTM4MGJlZjhmNGQ3IGFscGhhMTAwCiszNzA0IDc2YmM2ZDc0ODg5MGQ4N2E5OTA0NmZhNTZlMDE2MzAzNTZhNTMyMWQgbGVnYWN5LXRydW5rCiszNzA1IGU1M2VkNjc0NTlmNTZkNzM0NmExZTJiM2ZkOTk3M2VhOGJkODAzNjcgYWxwaGExMDAKKzM3MDYgMGM4YjE4MTJmMGI2OWQ5MWUzOGIwN2VjMzgwNWE5NjZmZDVlMzg0YiBhbHBoYTEwMAorMzcwNyAxMGFkOGJlZjlmNDNkYjc1ZTk4YWFkYTQxNGRmZjhkZTdiZWM1NzhmIGFscGhhMTAwCiszNzA4IGE5MDkxYzQ5OGIxMDFlNTgyMzUyNGM4ZmZkMzY1MzU0MmIxYjAyMjQgYWxwaGExMDAKKzM3MDkgNjI3YmM0MjJhOTAyODY4MWYwZWViZjMxOWVmYTE2YmE2NDE2NmQ0YyBsZWdhY3ktdHJ1bmsKKzM3MDkgOGIzYTcyN2RjNzFiM2FjM2U5OWQwM2I3YjRjZGY1YWIzMTAxYWNlMCBhbHBoYTEwMAorMzcxMCAyNzJlMmM2NGI3NGRiYmI4OTg1M2NiMTU0MmNhNWQ0OTM0NDMwNjQzIGFscGhhMTAwCiszNzExIDZkZmI4NGFkZmU0MzExOWE5YTdlMTIxYzA4Y2IwYmM3NjZkNmYwODEgYWxwaGExMDAKKzM3MTIgNmI2MzAwY2M0NjRlNWE0YmMxNjcwYjdhNzI1OWVhYWEwZDg1YmQ4ZCBhbHBoYTEwMAorMzcxMyA1MGZhYjIzM2Y0MDQyMTMwMmE0ZTJjMjBjMDM5NjZmNGU4M2NmYmYyIGFscGhhMTAwCiszNzE0IDNkMTljYTQwZWI4MmRmZDJlOGY1YWQyZDZhOTViOTY5MGZlN2YzZmIgbGVnYWN5LXRydW5rCiszNzE0IDkyNWM5NTI4MzBjZTI2ZWJiYTY4YjI0YjMyOTJkY2Y4MWMzZDM1N2EgdW5sYWJlbGVkLTEuMS4yCiszNzE0IDYyN2Q2NDRiYzZjMTc3ZjlhNmVmNDk1NTNjNDIzNzVkYzljMDYzMDYgYWxwaGExMDAKKzM3MTUgOTYzN2MwNDk2MTdkMzM3NmQ0ZWU1MTc3ZDg5MWY2MGUyMzZiYzE3NSBsZWdhY3ktdHJ1bmsKKzM3MTYgZWQ3NTk5MjE3N2U4MzE3MTliMDY4ZGM2ZWY5OGMwOWU1YWVlYWRlZSBsZWdhY3ktdHJ1bmsKKzM3MTcgMjk5MjdmMDM4NmE2OWU4M2U5YWMyMmYwZjVhZmM4OTNiNTRiZDk2MCBhbHBoYTEwMAorMzcxOCBjNjJhNmRhN2ZlYWMzZDdhNTE3OWRkMTM5MDQwYjlhZTIxOTkzNDAwIGxlZ2FjeS10cnVuaworMzcxOSBhNTI1NjA2MWYzYTAwZjc2YWUyNGM1MTgxZTI2MDgwMWVkNTUzZTNhIGFscGhhMTAwCiszNzIwIDVmZDU1YTZhYzc2ZTgzN2MzMDA5ODU2YTMzNjY2YTU3MzI2MDRmOWQgbGVnYWN5LXRydW5rCiszNzIwIDMyODY1Yzg5Y2YxMmU2M2Q4NDQ0NWQ4NzBjN2QyMjY0MDA0ODY2ZTAgYWxwaGExMDAKKzM3MjEgZTE4MzUwMmZiNWJjNmY1YzNhNjM0NmFlYzA4YTU5MGY5ZmU3MjljMSBsZWdhY3ktdHJ1bmsKKzM3MjEgZmRiZDM5NTRmZWYwMGI0NDZhNDExNzhhNWY3NjIwY2MwNTYxYzc1NiBhbHBoYTEwMAorMzcyMiA1ZTkyYjEzMmU3MGZhMzJiN2JhMWQ0MTY0ZWE1ZWQ3NzcyMDIzMjFmIGFscGhhMTAwCiszNzIzIGQwYmIwN2Q0YzZmZWI4ZDJiMzBhZDQwOGZlOTU4YTAzYTBlNGMyMWMgYWxwaGExMDAKKzM3MjQgNzQ1M2UyYmE1MzYyYTQ0MzIxNmVhOThlYjZmMDA4MTdiOGFkZWI0NiBsZWdhY3ktdHJ1bmsKKzM3MjQgYWE0NzJlOTE3ZjZjMjMzOWY0NDAxNDgxODRhOWY0MmRmNTRiZTM3MSBhbHBoYTEwMAorMzcyNSA4NzcwNzNiOWY4YzMyNTRhODMyNTBiMjU2NGVmYzY1YzlmMWFiYWFiIGxlZ2FjeS10cnVuaworMzcyNiBlNGVmMWIxN2RhM2RiYzViOWJjMjFmMWEwYzZhMDI3ZDZiYTQ1MzFhIGFscGhhMTAwCiszNzI3IGNjMzExOTE2NGQ1YzJmMzY1ZWM3MjA2Yzk5NDM1NjU1MzI5ZjViYTUgbGVnYWN5LXRydW5rCiszNzI3IGFiYzJmOTgxNGNjOTY4NTVlYWVjZjA4NWZlNmYxMDhhM2VhY2UxZjUgYWxwaGExMDAKKzM3MjggOTQ0Y2M3YzY0ZTdjZGQ5NjEwNTczMGQwYzFkYTU5OWNmYjUwYTc5YSBhbHBoYTEwMAorMzcyOSA5ZjI4OGNiNTZhYjUxZjdhYTQ4ZjRkMzdmNjc4NGI1MWY4N2U3N2Q3IGFscGhhMTAwCiszNzMwIGE2ZWJiNjhkYjM0ZWI1MTYxZmQzMWY5NTY4ZDFjZWNkZjNkYTBlNzEgbGVnYWN5LXRydW5rCiszNzMwIDc3ZTBlYTYwNzk2YWU0ODRiY2RhNmVmOTYwMzJkMDJlMTEyMWM1ZWQgYWxwaGExMDAKKzM3MzEgYTc1ZjcwY2ExYmUwYTY0YzNlNzE5MTU5ZDkzZDVkYmEwM2ZmYTM2MiBsZWdhY3ktdHJ1bmsKKzM3MzIgZjUyMGI5YzdhZTZmNjVkYjEwN2E4MGM4Y2VjMTM2ODRlZTY2YzFlNCBsZWdhY3ktdHJ1bmsKKzM3MzMgNTY4YzYwNmEwZTMxMWI2NTQ3OWQ2YzFhYjhhN2IwOGI4MDA1ZmE0MSBhbHBoYTEwMAorMzczNCAxZjdkYWQ1NzZhODUxZDFiMWY2Y2FkMjJiYTI2N2RkNjJlN2I1NjZiIGxlZ2FjeS10cnVuaworMzczNCAyMDRiN2U3OTNjMTViNGJkMWQ0MGFkZTU2NTZhNWVkZmVkYWRjYWU3IGFscGhhMTAwCiszNzM1IDc4M2VmMzYxZjM5NTE1YThhZWY1NTY5NTgzM2UzYWM0MTA5ZTM3YWEgbGVnYWN5LXRydW5rCiszNzM2IDg5NjVlZjRlYjM5OWFjNDc2ZGNiZmViYTdiYTQzMWFhNWQ5YTZlZWEgbGVnYWN5LXRydW5rCiszNzM3IDM2NjRjYjg4YTAzMDA4ZWRiY2M3Zjk3NDg0ZTg1NThkMTg0M2I2YjcgbGVnYWN5LXRydW5rCiszNzM4IDUyM2Q0MjExODhiOTNhNTM3YWIzYjI0NzExMDIyOWI4YjI2ZjY5NGMgbGVnYWN5LXRydW5rCiszNzM5IGFlZTU1ZDk2OWExMjI0MWE3OGRkMTdkZWUwNmFjNzI4MTJiY2M5YWMgbGVnYWN5LXRydW5rCiszNzQwIGVmMDgyYzEwNzJhNzExNWRiZmMzMDM2ZWM2M2ZjZGYxYjg5YTVjNzkgbGVnYWN5LXRydW5rCiszNzQxIDViMjU1YTM1ODgzMzBiNTg4YzBjZDg1YjE3NjJkZTY1ZGMzN2RlMjcgbGVnYWN5LXRydW5rCiszNzQyIDkzOWE5NWYzZGNkZWE0MzFiODM4YmJkYjNiMzJhYmNiYmMwMWY2Y2EgbGVnYWN5LXRydW5rCiszNzQzIGJlNjgwMGE2MDE5YjRkNDIxNDcwY2M1OTgyY2Y1MjlmNjMxOWYxOTAgYWxwaGExMDAKKzM3NDQgMzY0MmM2NDQ3MmMwNzhhNjliM2Q4ZWZmM2ZjZTk2MzE1YmIyZGFhNiBhbHBoYTEwMAorMzc0NSAzNjQ4ZWRkMzQzZWI0NGM2NDEwZGRkZDg4MjRkMDQ3OWIwMzA1ZjE3IGFscGhhMTAwCiszNzQ2IDZkMjRiOTlkYzg4MWI4ZjM3NjFkYzBmN2VjYjRlOWZlMmRiOGNmNWYgYWxwaGExMDAKKzM3NDcgYzhiNzE0YjliYzVhYjJiNWNmNjAxN2MyMjAxNWM4ZDViMzA3ZjJmNSBhbHBoYTEwMAorMzc0OCA1OTk0OTQ5YTdlZTlkYjQwMWI5ZTZjYjUxZDA0ZTdkMzMwNTRmY2E4IGFscGhhMTAwCiszNzQ5IDFlMjY5NGEwNjkzOTg4YmU0MDk2OTczOTBlZmY2YTA1Yzc2MjE1ZDcgbGVnYWN5LXRydW5rCiszNzQ5IDkxYmFkMzc2YjRiY2U1ZWI0NmMyMzg1ZDIxMmUzNGVjNjU0ZWEwMWMgdW5sYWJlbGVkLTEuMS4yCiszNzQ5IDJlYTgxM2FhMjYwMmZjOTU2NDgxZTRmZGU4Nzk2ZjM1Y2JkMjFiMTMgYWxwaGExMDAKKzM3NTAgZjlhZGI4OWYyMDAxNmE5ZmE2NDU4MDA1NjdlNDIwMmMwYzUyYTRkMCBhbHBoYTEwMAorMzc1MSBmYTllNGRiNzkxMWRhOWZmYzA2M2FlODNiZTU1OWI4ZWMwOWYyZDlmIGFscGhhMTAwCiszNzUyIGM1Y2UzNTg0MDAxMzBhOWNjOTM2NGM5YmQyMTZmMTk1ZDlmNjY3ZTcgYWxwaGExMDAKKzM3NTMgMDcyNjdlZDEzNzEzNTkyYzAzMjk3YjA0MDI1ZTA5NjYzNTYwMGU4OSBhbHBoYTEwMAorMzc1NCAxZjg0MTc4MGVmYzIzZWVkZTA3NzRiNjAzZTYxYjg4OGMwMTk3YmY0IGFscGhhMTAwCiszNzU1IDI3ZjM5NWFmZTYwZjY5NjZkZTczNWQ3M2ZlMzdlMWFiZDYzZTNiYmQgYWxwaGExMDAKKzM3NTYgZmRiZDg5OGJjMWZlNjJkODQ3OWJhYTE5OThiNDZiODgyMDcxYjBmNSBhbHBoYTEwMAorMzc1NyA0NDg2M2M0OWE0MzZiZmEzMDhkMDkyNTM0ZmY2NDc0YTQ5MGE3NzcyIGxlZ2FjeS10cnVuaworMzc1NyBhMWFlZTc2OTliZWE2NTRlNGRmZGY5NWYxZjEzZDU1OWIyZTJiYmYyIGFscGhhMTAwCiszNzU4IDRhNzIyOTYyZmI2OTcwOTQ2NTNlMjIwYzZkYzRmODc5MjNiYzQ3NmQgYWxwaGExMDAKKzM3NTkgNzUzOWNjYjc3ZDI4OGFhOGU2YWVjMmVjNjg0NWE0ZDgwNDU3Y2YxZCBhbHBoYTEwMAorMzc2MCAzMzM2Y2RjZDRhNWZmNmM3NmIxMDE3OGQ2MGNkYTQ0ZDlkOGNiNWIzIGFscGhhMTAwCiszNzYxIDQ3MmEzNDdiYWZjY2M0OTgxM2E3MGRlZTNjOTI4MTEyMDE1NDQyODIgYWxwaGExMDAKKzM3NjIgMTMwYjA0ZmM1NGRjYzY5OThlMjBiYjJhMTQ5Y2RlY2UxOTc2MTU4ZiBsZWdhY3ktdHJ1bmsKKzM3NjMgZWQ0YzExNmI1ODkzNGU4MjgzNjUxOTA2ZGE1YzY0MGZhOTFmM2M0OCBsZWdhY3ktdHJ1bmsKKzM3NjMgODExZWY2ZWQ0Y2ExYmI0YzMyMWM2N2UyZGRmZDQzOTdlNTQ4ZDc3MSBhbHBoYTEwMAorMzc2NCAzYmI3ODhhMWRkYTA0NmRjZTVhNTUyMzBhOTg0ZTE5NzQyYTFjMWZiIGFscGhhMTAwCiszNzY1IDJiYmExODhjNmFkYWRlMzZiNzVkYjQxYzFhMmM2ZmU1YWVmMjhkNDUgbGVnYWN5LXRydW5rCiszNzY2IDA2MTA2MmY4YTliZmQ3ZGIxYjRkNjMxNGM0NzJiMzNjMjg4YzcwOTMgYWxwaGExMDAKKzM3NjcgMDkwZDBjZDk2MWFmMTc1MGVmOGRlNjhlNTU5ZjBiOTlkMzgxZjkxZCBsZWdhY3ktdHJ1bmsKKzM3NjcgYzIzYzFhYzkyMjA4MjQzZTQzNDgxMWY5ZGQxOWNjN2ZmYjE1MmU2NiBhbHBoYTEwMAorMzc2OCAzNWRiNmZjYTRkZjRkNzJlYzJiZmY3OGU5MmIwYjM0Yzk4ZjI1ZTYzIGFscGhhMTAwCiszNzY5IDA4MTczMmM2YzExMjk4ZDBhMDVmYzFhN2QwYTI0YTI3MDg4MTEzOGYgbGVnYWN5LXRydW5rCiszNzY5IGM1Nzk4NzViMjk4MDc4ZTU3Y2M1YjE2N2IzYmRkZTIyNzY2MjEyZTggdW5sYWJlbGVkLTEuMS4yCiszNzY5IDc0ODE5MDQwZTcyNjU3OTE2ZmI0MGJhNGJhNmFjZjBlOTZhMDAyMjIgYWxwaGExMDAKKzM3NzAgMDlhMmE2NjFlOGMwNTEyMWJkYWI5YWNiMjQ4N2IyZTI0ODVjODdhYSBsZWdhY3ktdHJ1bmsKKzM3NzAgNWYwZjhiZjdiMzVjZWQ1ZTMzOTU0MDdmOGU1OGFlMzQ1NmQwZmU4YSB1bmxhYmVsZWQtMS4xLjIKKzM3NzAgOWI0ZjllODIxZmQ0NmViNzExMTJkOTMxYzQ0MjllYWM0NjQxNDlhZCBhbHBoYTEwMAorMzc3MSA3YzNmYmM5N2Y5NDY3NzBlYWM0MGQ1MmY1YmE0OGU2Y2NlNzdiNzIzIGFscGhhMTAwCiszNzcyIGJjNWM5MjUwOGY1NjAzMDEyMGVlZjBkMTgxMTIzNDBkNTFkNjNiOGYgbGVnYWN5LXRydW5rCiszNzczIGRjYzk1YTEzN2E2ZjkxY2U5NTYxMWVmZDlhZDM4YTQwNmI4MmFlYjYgYWxwaGExMDAKKzM3NzQgM2I2Zjk1MDUzMDQzNjA4MGI3ODMzYTQyYmQ4MzFlMmRjNjlmMzY4OSBhbHBoYTEwMAorMzc3NSBlMjEwYTRhM2Q5ZjBjODZhYWJiOGM1NjExNGFlNWM2MTc4NWJiZDMzIGxlZ2FjeS10cnVuaworMzc3NSAxZmYzN2ZmNmFmZjRlNGQ2YjViMTJlMTg3YTM0Y2RjNTk3ZmE3NDY0IGFscGhhMTAwCiszNzc2IGEyN2Q2ZWMzZmQ0YTU5OTlmNjIwMGVkNzkxZjRhYzgzMjkwNGQwNjkgYWxwaGExMDAKKzM3NzcgZDY4ZjZjYzI2MTFlY2UzMjNkNzIwMTZkMTUyNDcxODcxODE3ZThjNyBhbHBoYTEwMAorMzc3OCBmNWMxOTc5YmVhN2NkNWMyY2EyYmFkZjNiODRkZTllYjNmNGMxYzcyIGFscGhhMTAwCiszNzc5IDU2Y2JmZGYzNzI1NGM5ZTA4NTdhZDFjZGRlMWQ2NWZlM2NjMmRhY2EgYWxwaGExMDAKKzM3ODAgYzI4NjhlZjI4YmVlMmIyZjFkMmJlYzlmMzAyNDI3MGEwYzJlYWYxOCBhbHBoYTEwMAorMzc4MSAxYThlOTBhMzczNTdiYWU3YjRhYmE5MjJmMWYwYWIzM2JmZGNlZjZmIGxlZ2FjeS10cnVuaworMzc4MiA4ZTk3YTY4YjJiMTdkMDFkYWM3NDU4NjM0NGZiMDY4Y2VjOGY4ZTY5IGxlZ2FjeS10cnVuaworMzc4MyBiZGJlNmQ4YTdhOGY4NmZiY2EyYjdlMGFiZWI5YWM3ZjUwMjg5NWNjIGxlZ2FjeS10cnVuaworMzc4MyBhNGY2YmEyZTQ3ZmZkNjMzYTI1NmQyNzg1N2E5ODlkYzA1MDVhMmZmIGFscGhhMTAwCiszNzg0IDk3ODE5NTY1OGU5YTM3ZTIwYjljMjA5NmFmMzYxNzQ4NDliNDEwM2MgYWxwaGExMDAKKzM3ODUgMDk0MjBlMmU5Mzg4NDVhMGQ1YWVmZmU5M2FkNDk0NGJmZjliNDEzMSBsZWdhY3ktdHJ1bmsKKzM3ODYgZTQ1OTQ4ZTJiNjZjZTQ4NWFkZTQ5MzJhOWRhNTRmZTk2NTVmODU1MyBhbHBoYTEwMAorMzc4NyBkZDZlYTE2N2YyYmQxYjc0MWM3MGZlODg2YjkyYTUwOGQzZjIzMzBmIGxlZ2FjeS10cnVuaworMzc4OCAwZjg4Zjk2NWJmZjI3Yzg4Njc1ODE5NzIwYWIwYzdlNTJlMDUxMWQ4IGFscGhhMTAwCiszNzg5IDMzOGZlNThiMmM2NzczODU4ZWEwMjJmNDVhZTMyOWIwODdiMTc0NDkgYWxwaGExMDAKKzM3OTAgMTQ3ZTk5MTk4ODM4Y2M2N2ZiODEwZDgxMWRlODFiMGIyYjZlMGFjMiBsZWdhY3ktdHJ1bmsKKzM3OTAgMjBmYmQwNDM0ZmI2MzRkZmMwMGI3N2FhYTNkYjMzYzRmNjNjNmM0NyBhbHBoYTEwMAorMzc5MSA3Njg5MWQwY2Q1ZmRhYzFlNDUxMDRlMzI4OWNmOGI3YWIwMjRiOWE1IGFscGhhMTAwCiszNzkyIGRjOGFlZDhiMjA0ZDE4ZmZkNzkyNDE1ZWY2NGQ2Mjk5OTA1MmIyM2EgbGVnYWN5LXRydW5rCiszNzkzIDhiOTA4ZTk5Mzk3NTdkYzM1MTI5MTAxMzU4Y2MyNGFmMzNhMWM4MzIgYWxwaGExMDAKKzM3OTQgODhiYTVkMTdmMzBhMGY1M2FiZmMzNjcxYzE3YjNlNDFjNGJkZTRlNyBhbHBoYTEwMAorMzc5NSA1ZDVlYjc2YmIyNzhhYTZjMTVhMjkyNDRlNzc2ZDJlZTZlNWQ5NWYwIGxlZ2FjeS10cnVuaworMzc5NSAwN2U0YzU3MjZmNzg1Njc4YTRmODgzODFiZjU4NjVjOTU0MzI3NjNiIGFscGhhMTAwCiszNzk2IGJiYTgwMDg4YTA0NGEzMzg3OTA2Mzk0NGQ5YmQ0YTdmMWNmYWJlYTUgYWxwaGExMDAKKzM3OTcgYzIzY2NhZWM5MjQ5MzI1ZDNjM2YwOWRhYjk0OTVlYzk2OThiMjRlZiBhbHBoYTEwMAorMzc5OCAwMzY4ZWY0OWZmNGM2MTc0MGMxNjNhYWE2NzI5OGM2Nzg2ZTkxYTQwIGFscGhhMTAwCiszNzk5IDUzZWNjZWQyZjJiMmExODRmMjM2MWYwYzliOTFhYzAyZjNjMWI5MmUgbGVnYWN5LXRydW5rCiszNzk5IDdjZTQxMjI5NWNhM2NhYjVhNDJmYWNkZWFiZjIyMGZiOGYxMDUyZDMgYWxwaGExMDAKKzM4MDAgOTdjNWU2MDdiNzk3NzMyNjdkMjg4YWY4MDVjMzM1YWViNDkxYzczOCBsZWdhY3ktdHJ1bmsKKzM4MDAgOGQ4YjdkYzk5OTgyZTM2MWQ2ODViYjAzZjUxMzA0YTJjN2ZhNThkOCBhbHBoYTEwMAorMzgwMSBjOWIzZjc3ZTE4YmFlZmFlNWE5MmQ5NTg1ZDRmYmRhODBhMjk5Y2NiIGxlZ2FjeS10cnVuaworMzgwMiBjM2Q3ZjgxNGIyZDA2NDAxYzdiMGNiYmJkYjljNjg4M2M2ODU2NTE3IGxlZ2FjeS10cnVuaworMzgwMyAyNjAzYjQyMGM1ZGVjYWM1MTc4YzQ0NjZmN2M5ZTNlNmE2ZWNiN2E2IGFscGhhMTAwCiszODA0IGU5YjBjY2UzYjk4MDkzZTBmNzRkYTQyN2NjYTljMmExMGQ0YzJjZjEgYWxwaGExMDAKKzM4MDUgMTdlNWM5NGY4NjJmNzY3OGYwYTQ4YmVmYjk5OWRlMTcyMjZkYTEzNiBsZWdhY3ktdHJ1bmsKKzM4MDYgMTVlMWI4NjEwNGE2ZTYxOGY5MmMyMTdmZDYzZDc4NTIzZDRmZGJhYSBsZWdhY3ktdHJ1bmsKKzM4MDcgOTk1YThlZjRhNWMwNGYzZTY4MTE4MTY4YmUwN2EzZWI4OTI0OWVlNSBsZWdhY3ktdHJ1bmsKKzM4MDggZWQyMTFjNzYxMDg1OGJkNmQ1OTRhMjA3MDdlMzVmYTI0MmJkNTAxOSBsZWdhY3ktdHJ1bmsKKzM4MDkgODdjYmY5ZTIyNzI5OGU2YTliNjUzMmJlOTJhNzcyYmVhNTUxMDBkNyBhbHBoYTEwMAorMzgxMCA1YzZjOTkwNjZiMmM3MTA5NjI4ZmY0MDNjOGRmNWY2ZjhiNTlhNzhkIGFscGhhMTAwCiszODExIDQ4YWVjOWQzODUyYTk1MjkxOWMwZGM4MmZhODFkNzA1MDg2MmVkOGUgYWxwaGExMDAKKzM4MTIgODY5ZmJhODA5YzY4OWUzZDY0YTYzNDhmOTVmNDMxZTQyYjg2OWE5NyBsZWdhY3ktdHJ1bmsKKzM4MTMgNWMwMTkzMWRhNTliZDFkMThlMzY3ZWMzYTliMTc4MmNlM2U3OTQ4YiBsZWdhY3ktdHJ1bmsKKzM4MTMgN2MzNTdjNmEyOGJkYzg5ZGVkOGE0OWU2ZWI3NDg2MzIwYjNmMGFkMiBhbHBoYTEwMAorMzgxNCA3ZWNkNjM4MDU2NmNiMzE4YjJjZTJkNmQ2ZWVlNjMxMjVlZTAyZGYzIGxlZ2FjeS10cnVuaworMzgxNSBlMDUzYTg3ODI4ZjQ0MjYyYjNhZDI2MzkyYmU0M2U0MTRjOTk2ZTllIGFscGhhMTAwCiszODE1IDk3OGJmMTM0ZjQ0YWI3YzNjODRjNDc2YTI5MWU3ZjRlZDk3ODM2YTYgYWxwaGExMDAKKzM4MTcgOWZiZjM0ZTFjMWY3NmJmMTQwNGY4ZWJlNmMyYjI2MzcyNDQzZTQyMiBsZWdhY3ktdHJ1bmsKKzM4MTggNWExN2M0M2RjZmYwM2NkOTIxMGQ1Y2NjNWE4MzUxODlhMTc4NDQ4YiBsZWdhY3ktdHJ1bmsKKzM4MTkgNDA0N2YyMjRlZmRiMGVjNzg4MmRkYWJlYTI4MDIyMDc2N2RkNTlmOSBsZWdhY3ktdHJ1bmsKKzM4MjAgNjMwZTAzMTA5YzYzOGRkMTZjZGU5Mzc4YWZhNDExZjhjMjlkMWY2ZCBsZWdhY3ktdHJ1bmsKKzM4MjEgZGYwYWVlNjQxMTRiY2YxZjkyMzk3YmM4ZmM4NDQ3YWI2MTRjYmJiZSBsZWdhY3ktdHJ1bmsKKzM4MjIgMWZmNmNlZGQyMjQxMmRlZDc1NzQxZDlhNGQ3ZmM3YWRhNTBiOWJjNiBsZWdhY3ktdHJ1bmsKKzM4MjMgMWMzNjQ0YmFiODZhYjUzZjJmMjkyNjQxMTFkM2Q4MmFkMTE4NTZiNyBsZWdhY3ktdHJ1bmsKKzM4MjQgYjY4ZmI3Mzk4NWQ4MzZhNDMyMGFlYzBjNmQyZDMxYTYzNDI3YWQxMCBsZWdhY3ktdHJ1bmsKKzM4MjUgNDQzNDcxZmYzMTQ3MGEyZWIzMjMyOTBiNjJhZDhlMjFhNjkwM2E2YiBhbHBoYTEwMAorMzgyNiBiYTI0ZmM4ZDNmOGM1NWRmNWIxYzQzYmVlZmQxMjM0NDE3MWY2OGY3IGxlZ2FjeS10cnVuaworMzgyNyAwZWZhMjQwYjFkYmMwNTdkYzQ0ZmExZDQ0ZDRjNGQ4ZmVkYWM1NjM4IGxlZ2FjeS10cnVuaworMzgyOCA1MDU1MzA4MTUyYTRlMjg3N2I5ZTVmOTcyZGUyN2FlODczZGIzMzg2IGFscGhhMTAwCiszODI5IDVjZWY0ZjVhMjhjZWRmY2E1ZmFkZTgyNWVkZmM2MGIwN2ZmNmU4ODggbGVnYWN5LXRydW5rCiszODI5IDllYzdkNmY3NzUwMGNhMDkwYzIxOTFlMGIzYjQwYzY2YTNlMGZlNzcgYWxwaGExMDAKKzM4MzAgODFmMjZiZjExNzhmOWUzNzEwYzA4YWRmNmI4Y2M5NDJiMTZmZmQxNiBsZWdhY3ktdHJ1bmsKKzM4MzAgZWUzZDVlYTEzYTM3YjkyYzZlYzA1OWVlOWQ4Mjk4NzNiMTYxOTY0MiBhbHBoYTEwMAorMzgzMSA0OGFhM2QzMzE0YWMxNzFkYjVjZTE3ZjY1NmU0YjRjNzEwMDBlMWEwIGFscGhhMTAwCiszODMyIDk4MDYyNmVjYWQ2MWQ4ZDA1NmYzOWZlYzRlMmJhODk0MzRmYmFkYzYgbGVnYWN5LXRydW5rCiszODMyIDVjMzUwNjMxYzgzOTYwNWExZDNhZGM1YmY0M2NhZjE0ODA1ZDFmMWYgYWxwaGExMDAKKzM4MzMgM2U2NWJmZDE1NzZlZDk4YTA4YTE5NmM3MTZhZDVjODJhMzA0MTFmYyBhbHBoYTEwMAorMzgzNCA5OTMwMDg3ZWE4ZjVlNmU4ZDdjYzU0MzI2YTZmYjg0ZWEyOGI5Yzc1IGFscGhhMTAwCiszODM1IDhjODlmNmVmOWY5ZjhmNTQ3ZDU3Yzg1ODZlMzBlZWI4M2RlZjM0MzQgYWxwaGExMDAKKzM4MzYgY2I1ZmQ4MDA2OGNlZjI1Njg5ZGI3ZGNiYmRmOWUzNzE5Yjc5ZThjYSBhbHBoYTEwMAorMzgzNyBiYWZjNTMzZTBlYjZhYzVhYTVmMDgyZWNjZmJkMzE4Mjc4ZjZjNTQ3IGxlZ2FjeS10cnVuaworMzgzNyA3MDMyYThhMmM0MmM1MjI0ZTNjZjUyZjNjODg2ZWMzNmNiNTNkMTMwIHVubGFiZWxlZC0xLjEuMgorMzgzNyBjOTZmYzQ5N2I5MzJmNWRkMjg2MDNiMWRiZGM1MWUxYzllYjdkMDQxIGFscGhhMTAwCiszODM3IGIxNWI4Y2M5YjhkMTBlMDM1MmEwYjhiN2U4ZDUxZmEzMDlkYjZkZjMgbGVnYWN5LXRydW5rCiszODM5IDI2OGU1NzYzMDAxNjIwMjgwODYwOWUxYTg2ZDBkYjA4ODM4ZDY5MjUgYWxwaGExMDAKKzM4NDAgYjcwZjA4OTA3NTQ2MTdiZjNmODU4MTI0Y2ZiYjdjMDUxNzA2YjQ5YSBsZWdhY3ktdHJ1bmsKKzM4NDEgNmY1MmI1Mzg5Yjg4ODE3ZDQ0YjcxNDg4NzFkN2MwNzA0OWFhOTc3OCBhbHBoYTEwMAorMzg0MiBlMzgwYjRkNTRmZDM5ZWFmM2FiODlhMWM5NGUzYWQxODk1ZDY5NjhmIGFscGhhMTAwCiszODQzIDVkZmQxZDUxZDY2ZGVhYTU2NWU1YTc3MGU0NmNmMDBkODBlYWE1ZWEgYWxwaGExMDAKKzM4NDQgNjk2NmQ5NTdiNWIxZTc1MGY2MGZkZTUzN2IzOWE1MGQwYjhjYTVlYyBhbHBoYTEwMAorMzg0NSAyYjVmOGIyMDIxYmZkNzMwOTRjOWY4MjI4ZWU0OGY2NjI0ZGM1ODE3IGFscGhhMTAwCiszODQ2IDhkZjcyZTU4ZmE5ODAzMmM3ZTQyNjFhMTUyYzQzNDg0MDZhMmE4ODEgYWxwaGExMDAKKzM4NDcgYWQyMTY4NzZjNDdmYmZmNzA0YjNhZDIxMDVkOTlhMmE1YWI4OWMyNCBhbHBoYTEwMAorMzg0OCA4YzY4MTRmMzRjZGQ5MzZmMDczOTBjM2QwN2I5ODE1ODhjNGZkYjBmIGxlZ2FjeS10cnVuaworMzg0OCAyMmI3ZDM3MzViZDI1ZmVjM2ZjY2U0MTZmMzRjMDhmODk4OGUyNzY5IGFscGhhMTAwCiszODQ5IDZkMzUzMDgyNjFmNGY3NGQ4NWMxMDNiOTc1Yzg0MzRlNDA3Nzg1YjkgbGVnYWN5LXRydW5rCiszODQ5IDc3MjNlMDAwMzk4ZGE3NzQ0NDlkN2VmZDY1MDU4YmMxOTI0OGU1MGYgYWxwaGExMDAKKzM4NTAgNTk3MzM1NGZiNDk5NTRmNzI0NjVmNzEzMjJjYWVjYWI0NmFkMGM3NSBhbHBoYTEwMAorMzg1MSBjZDI3OWUwZjc3ZDg1M2YyNjNjYTc2MzU4MGZlYzEzNTM1OTZkNDc3IGxlZ2FjeS10cnVuaworMzg1MiBjMzQxNWIzMTliNGU4NjkyZjljNjRlMjc3YTQ3ZmJjMTZiOGUxOGZkIGxlZ2FjeS10cnVuaworMzg1MyAxNzJhYTBlZWViNmY3Y2JmMGI3NTQxZmZkZDgzNzg4YWFkYjExZjk0IGFscGhhMTAwCiszODU0IDI3NDA2NmJkZTI0MTIzY2FjMDU2MzVjYjU5MjM4YjAwNmNmZTQ5YWEgbGVnYWN5LXRydW5rCiszODU1IGRmMGZiNzg4YzBjMWY1MDY1MzMxMzg4YmIzOTFjNjRlNDQ4NTBlN2MgbGVnYWN5LXRydW5rCiszODU2IDllMzQ0NDhhMDA1ZWQ3NWZiMGE1YjU5NTc3MTRmNGM3YTJjY2ZkZTIgYWxwaGExMDAKKzM4NTcgMTZkMWRhYjNmMmMxYjliMzMyYTc2NTAyYWViMDZlNzNjZTkzYjhhYiBhbHBoYTEwMAorMzg1OCA4Y2M5MDhiMGQ4M2JkZTI1ZWYxMTljNjUyNzk0MDc2NTJhZjA5ZGRmIGFscGhhMTAwCiszODU5IDMyODZiZmY0NDNjNmEwNjYwYmNkNTgxYjFjNzQyMWY4Y2Y4YjRkNjEgYWxwaGExMDAKKzM4NjAgMjc0YjkzYjEyMTEzZjU4OWE1NWQ4ZmE2ODRjODA4Y2E0OGNiNzE5ZiBsZWdhY3ktdHJ1bmsKKzM4NjAgZTVkNjY1MjMxYzU4OTRjNjM2MWIzM2M4YTJhMDdiYmNlOTI3ZDBlZCBhbHBoYTEwMAorMzg2MSA4ZWFiMmVlNDBmMzJkYmRlZDhhYzY0ZTJkY2JkOGViOGE2Y2M3NWQ0IGFscGhhMTAwCiszODYyIDI0OWZlNWUyNGUyMGViOGQ5ZTNhNzcyYjdiZWMxNjc3ZmQyZTVmODIgYWxwaGExMDAKKzM4NjMgOGFhYmU5YWFlMGZhMDdhNmFhNTQyZDFmZjhjMjgyYWVlNmM3NmM1NCBsZWdhY3ktdHJ1bmsKKzM4NjQgY2Y2MGEyYjI0OTc5ODU4ODlmOGJmNDFiMDE3NjU1MTM2MGJhMjlhYSBhbHBoYTEwMAorMzg2NSBmNGRiOTJlZWYyYWY3MTdiNGVjZmQ3NTUxYjRiMGY1NDc0NWIzNTEzIGFscGhhMTAwCiszODY2IDAyMGQ4YzJkOWQzY2ZiM2QyNjg1YTA0YjM2ZDM2YmYzZDVkMzQzYjkgbGVnYWN5LXRydW5rCiszODY3IGJkMWE0ZDcxN2U5ZDFlZTQ0ZWE4ZWEzYThmZWNlNzQyZWVjMmZjZTIgbGVnYWN5LXRydW5rCiszODY4IDc4MGYzMzViZjUyNGI3MDU5YWU2NDI1NWY5MDllMDBlNmJiNWE5NGQgYWxwaGExMDAKKzM4NjkgNTlmZDQ2ODZmODhjYTY0YjRiN2IwM2U4YTYyZGIzNGFiNDNjM2YwNSBsZWdhY3ktdHJ1bmsKKzM4NzAgYjNiZmY1ZWQ1ZDNkMDg5NDFjYmQ0ZDI1Y2Y4NDQ5MmU3MzJlZWM4MiBsZWdhY3ktdHJ1bmsKKzM4NzEgOTYwMDU1MzkwMGQ0N2VhMTQwNTAyODNjZDhlZTlhYmFkYTQ0MTdmNiBsZWdhY3ktdHJ1bmsKKzM4NzIgYjMzNzIwZDBhZDk3YjE1Mzc5NjE0OWVkNWE2ODgzMTljMTU4YTM0OSBhbHBoYTEwMAorMzg3MyBjZGFmYzk1MWU4ZThiMzBmZDEzMjA2ZjRiODBkZjE0NWUzZTNkZDhlIGFscGhhMTAwCiszODc0IGRkZGNiYTIwMzhiY2I1YjJmMTlmZGYwZDVmY2JkNTNmMjA4MGU4M2MgbGVnYWN5LXRydW5rCiszODc1IDdkMjFjOTIzYjU0YWViZjNjZGQ3MzFkZmY1OTIzOTg5NjM1NDE0MGUgYWxwaGExMDAKKzM4NzYgOTAzNzk0ZGY1ZWE5ZWVkNTVhMzAwYWNmMmY3NjFjNTc4ZjI2NGE5MSBhbHBoYTEwMAorMzg3NyBlNDQ0OTlhNDRjYjhlMzc0ZTM1YmJmNTRiM2FhNmJmYTBmNjE3NzA5IGxlZ2FjeS10cnVuaworMzg3OCAzNzAwNTBjZDBiNmM1MDFlNjAzNDhiMDlkNGJmYmFlZTI0M2JmOGFkIGFscGhhMTAwCiszODc5IDhkMjZlZTI0YWQxODJlYTBlOGFiNjcxYTQ3Zjk4ZDc1OTE3MmMxYTkgYWxwaGExMDAKKzM4ODAgM2FjZjgxOGYzNTQ4MzFmNDYyMzY3NTUxYjFiZWMyMGE1MjliYmEwMyBhbHBoYTEwMAorMzg4MSBjZGIxNDA0MWNjODdiYjY0MGFkMDRiMDRiMjAyZmNmYmNlN2JmZGVjIGFscGhhMTAwCiszODgyIGFjYmE0NDI3ZTg5YzcwMDA3NDhmOTg0YmRhNmViMjNhNWZjMzcyZWQgYWxwaGExMDAKKzM4ODMgM2QwMTY5OTkyNjRhYzJjNzNlYzhkNmI0NDBmMWQ4NmY3ZDU4MjFjNSBsZWdhY3ktdHJ1bmsKKzM4ODQgYWYzZjJhMDNiYjE4ZmUwZWVmOTdkOTZlZDRlYTE5YTEyMmE5MmFmZSBhbHBoYTEwMAorMzg4NSAzY2RkYzY3YmUzZjU3NTY2MmNmNzM0YjUxMjQ3MWVmYjUwMGY4NjI2IGFscGhhMTAwCiszODg2IGFlNGI5Y2I1YmExNTYxMTI4YWNiY2NjMzk3YjAwNmYxODEzOTA3MjQgbGVnYWN5LXRydW5rCiszODg3IDA2YWE2MDhjNTg5ZTg2YzU4NmJjMWNjZDI2MGZmNWI1ZjRmOTAzZDYgbGVnYWN5LXRydW5rCiszODg4IDkxZjg0NmY2ZDZhNjFkMDQzZDBlNzI0Zjg1Yzc4NGQxNGE3MTVhNTIgbGVnYWN5LXRydW5rCiszODg5IGVhY2FhNGYwNzgyNmQ5YTAwYjIzZjIxNjA0OWQzZTM4YTg3Y2E0NjkgYWxwaGExMDAKKzM4OTAgMmEwZDQ5OTc0MGI2MjRiODgwNzI0Mzk4MzNmMWViZTA2YTc2NTQ5OSBhbHBoYTEwMAorMzg5MSA4MzYyMmI3YTAwYjUyMzhmODMwNTkwNmNmOGUzNGM4N2NiYzA0OWRhIGFscGhhMTAwCiszODkyIGVhYWJhMmNhZmVlYjljMzQwNzg5ZWEyYmE0MzQyMjFjMzk1MzExODkgbGVnYWN5LXRydW5rCiszODkzIDJkMGVjZTU2MDQwNjlhMTYyZjc5NDM0MGJlYjFhOGM4MDQ0OGE2OTYgYWxwaGExMDAKKzM4OTQgNzJmOGUxZTYxNGYwNjMwMzU3NzU5M2M3MWQyMWZkNjkxNTVhOWE1NyBsZWdhY3ktdHJ1bmsKKzM4OTUgNDU3MjhiZmVjYjc2OGYwMjEyODU4NzdjNjE1MWZhOWU2MDFhMzI4ZSBsZWdhY3ktdHJ1bmsKKzM4OTYgNjk1ZmI0OTRhM2EyMmZjOTM2YjQ0ZjUzMGQ4NTljZWNkMTdiYTBiMCBsZWdhY3ktdHJ1bmsKKzM4OTcgN2JmNmIxMjhlOThjNDg4NjhlNTNkN2JmN2JiYWMyNTkyODhjOTAyNSBhbHBoYTEwMAorMzg5OCBmMzI2Mzc1OTY3OGVmMzg0NzJmZDFjMzg2NzE2YTFhZTAyY2IyMjg5IGFscGhhMTAwCiszODk5IDQ0NGUzNDlmOTYyZjBhZTMwMDY4MjUyZTU5ZGJlNTc3OTFmY2M2ODAgbGVnYWN5LXRydW5rCiszOTAwIGIyMWYwNDhjMjNlOWUwMjg0NTBmMWYyZWM0ZDA0YWViNTcxMjliYzQgbGVnYWN5LXRydW5rCiszOTAxIDI4OGE0NjA2ZDJmZGUxMDA2OGRjNzljZWE2YWNkOWY4MDc0NTU4NTYgYWxwaGExMDAKKzM5MDIgMDIxZGFhYmU2OWQ4Nzk1NjYxZjc5ZjY3ZWFlYjI4MmZmMzk2YTUwMCBsZWdhY3ktdHJ1bmsKKzM5MDMgYzE3MzYwYTE2NTg3MDM4YzViZWJiZjNmZGU5YjFkZWU3ZDNhM2YwMCBsZWdhY3ktdHJ1bmsKKzM5MDQgMzJkYTU3ODE4ZTk3YjVmZmQyMDhlYjk2YmVhY2I0YTBkOTgzMGRiOCBsZWdhY3ktdHJ1bmsKKzM5MDUgYjk2MzRiZDVjYTU1YTk4ZTJlZmQ2YjI3OWMwZDkyOWEwZGRmNmM2MSBsZWdhY3ktdHJ1bmsKKzM5MDYgMjM4NGZhYTUzNTBmM2I2ZDFlMGYyYjEzZjJmOWYwZDA1NmI0NTQ1OSBsZWdhY3ktdHJ1bmsKKzM5MDcgYjNmY2RiZDJkOWJiYTUzYjU3ODU5ZTgzMDEyNDJmZTIxYzRiYTMxMiBsZWdhY3ktdHJ1bmsKKzM5MDggOGQ3YWIyYzdlOTkzMzA5MTAyNzVmMDFkYjkxZDhlZWU1NTE2ZDQ1NyBhbHBoYTEwMAorMzkwOSBlOTZhOGNmYmJlZjFiNmEzZGRmNjNlZjkwZmQwOGVmN2Q2ZmU0Nzc5IGFscGhhMTAwCiszOTEwIGM5NjQzNjRhOGY3ZjhlN2MwNGZlNzdlMjk2MmRjMmYyODQyMzYwODcgYWxwaGExMDAKKzM5MTEgYjJkMThmYTUyOWY0ODc2MGNiZGI0YTU3MWQ0MjM1MDcyNTg4YjhhNiBhbHBoYTEwMAorMzkxMiAwNTU2NjE3YWEzMzg2ZTcwZmY0NzBlY2NlMWY2YTYwMzcxZWM0NjEyIGFscGhhMTAwCiszOTEzIGQ1OTBmZmQ1NGY4OThjYTExN2YwMDI3OTIwMzQ3YzFiYzJlOTE5NmUgYWxwaGExMDAKKzM5MTQgNzliYjY4MjcwYzdiMTJjZGIwMzZhMGFmZDYyZTI3Y2VkODVhMTc2YiBhbHBoYTEwMAorMzkxNSA0MWJjZDE4NTNmZWE1N2RiOWI5ZWQ3ZjgyOWI3NzdmOGUwZjhhYTg4IGFscGhhMTAwCiszOTE2IDEzMTMyM2YxNzE1OTIyZmRlYzBhNzQ1YmEwYzlhYTJkOThjOWYxNWQgYWxwaGExMDAKKzM5MTcgODEwMTg2NTBkYzMyNDVhOTZlYmMwNDMwY2ZiMzhmOWEyYjkwYWY4YyBhbHBoYTEwMAorMzkxOCBjMTNiYmRmZWViZmZlNmMxZTBmNGUwYWFkNWE3YmNlMWQwYmJjYmRhIGFscGhhMTAwCiszOTE5IGNhNWVkNTJhY2EyN2E2YThkNzYwZWYwY2I5MTc5MjhiZTI5MTVhMDYgYWxwaGExMDAKKzM5MjAgZmM0NWU1NzdmZjliMjBjZWE4NTM3OWI3ZDI3MDRhZDdlYTc0N2Y2MiBhbHBoYTEwMAorMzkyMSBhNzA0MWQ2ZjdkZTNlMzU4OTc3ZGE5Mjg3OGRjMjQ1NTRkMjBjYTEyIGFscGhhMTAwCiszOTIyIDVlZmZhYWQ3MWJhNTJlNWU2YjQ0MGM4ZDg1M2I2NGY0OWIyOTZiNWQgYWxwaGExMDAKKzM5MjMgYWQyMjcwZTcxZWMzZjBiNjUzYzI3YzI2ZmExNWJhM2NlZGVlOTI5NCBhbHBoYTEwMAorMzkyNCAzNDY5ZDA0ZTNlMzZkNWZjYTg5OWJmNGNiMGM5ZjE1NWI1YTQ3NTEwIGFscGhhMTAwCiszOTI1IGYwNzE0YmI0ZWE5NmExZTEwMDgzMjJlZDViNzFlNDM5Zjg3MzMyNzggYWxwaGExMDAKKzM5MjYgMzM3YWJkYzE1ODRhNDI1ZTU0NDNhODkyN2ZkYTMxYmViYmExNjU5YiBhbHBoYTEwMAorMzkyNyA3Yzc1ZjYwNDY4ZjgwMmQwZjczMzI5NGYxY2ZmYjZhZmJjNTE4YTdlIGxlZ2FjeS10cnVuaworMzkyOCAyMjM2ZDcwOWZmMmRhZWE2MDhmYTA0YmRlYzUzOTFkMjE1OTZkNGI2IGFscGhhMTAwCiszOTI5IDkwYTIwOTkzNzQ3ZDFmMzhhNWEwYzRiYjVmMjUyNDYwYTU2ZDMxYmQgYWxwaGExMDAKKzM5MzAgYzFjZGVlZDhjNTE0NGY1ZWU3MjMzMmU3M2U1ZTA0MDZiZGMwYjVjZiBhbHBoYTEwMAorMzkzMSAzZDhiYTQxODQ4ZmYwZjgyMjU0NDQ1ZTI2OWViMWM4ZTMzMDdjYjhhIGxlZ2FjeS10cnVuaworMzkzMiBiNDU0ZGM5MjQ3YjA3NmI3Y2E1N2NhOTZlOGMxMjRlMGRhMDkyOGE4IGxlZ2FjeS10cnVuaworMzkzMyA5OThjNjQyMmNkOGFhZTAzZDI4YjhhNWQzMmNiYjZjY2I2NjhhMzE0IGFscGhhMTAwCiszOTM0IGJjZjBiOGRmZGFlOWY0NDZkNjEzMWU0OWUyODYyNGQ4MzFiMzhiYjQgbGVnYWN5LXRydW5rCiszOTM1IDdmZGVhZGZhODNlMGNjNjg3ODhjMzcwNDljYmIyODcwYjA3ZTAxYmUgbGVnYWN5LXRydW5rCiszOTM2IGFjMmU1Y2MyOTk0OWQ5ZWQ2YzNlYzA1OTQxNTQ5M2FmNjAxYjMyYTEgbGVnYWN5LXRydW5rCiszOTM3IDU5NGE4YzEyZDY4ODI3NmYyZDIyNzBmOGI0NmMwZWRmMDRjYjBlZTkgYWxwaGExMDAKKzM5MzggZmNhMmZlZGVhNzFjYzY3YWEyMjBiZWZjMjVhOGZiNjFhOTVhYjRjMCBhbHBoYTEwMAorMzkzOSAyYzZmMTMzNzgwMWNjMDEwMmVmNzMwOTZiZjBkZTZhNmMxYWUwMTgzIGFscGhhMTAwCiszOTQwIDEyODdmYjA1OTU4ODhjMDE0N2M0NTVlYjY2MjQ3Zjc3OGQ0ZWVkYTQgYWxwaGExMDAKKzM5NDEgZjY1Nzk0ODg5MzQzNzBhNDQ0OGU2ZTNjM2ZmNzU0MmQzZTc1YWQ0MSBhbHBoYTEwMAorMzk0MiBhYzllMTJiNGVhOGM2NTdiY2EzNGUxOGE3MTE3YjBiNDRlM2RmZTE3IGxlZ2FjeS10cnVuaworMzk0MyAyMGRmNjUzMzc2YjQxN2I5OGUyYWFhZWQzYWRlYjQ3NWFjOTE1ZjMyIGxlZ2FjeS10cnVuaworMzk0NCA2NzIwMTE4NzFhMWI2NDA1OWI4ODAwZmFlMWU3ODdiNDAyNTUxNTE3IGFscGhhMTAwCiszOTQ1IGE1YmRmZjk3MDU5NTFmYTZjZTdhNjRiOTQyMTVlOTY1MDc4OWQ4YzQgYWxwaGExMDAKKzM5NDYgODhkZTIxZWY0YThhMzBmNmE5MTY5Yjg5NmZjMjZhOGM3YWM5MzcxZiBsZWdhY3ktdHJ1bmsKKzM5NDcgYmE2YWM4MmZjYjY4NmRlMTVjYzM2YTdlM2ZkMzQ3NThjNWE0YWQ4ZiBsZWdhY3ktdHJ1bmsKKzM5NDggYjM0NDM1NDZkNmVlNGIwMDk4ZjkyYjBjNTQ0ZWIyNTQ3MWU5MDgzZCBsZWdhY3ktdHJ1bmsKKzM5NDkgNDU3OTAzNTZlMDI0Zjc2MjA2YmMxYTQwZThjYTdhYjUxYjZhMDg1MiBhbHBoYTEwMAorMzk1MCAyMTk3ZGQyNDFkOGRjODYyMTVjYmIyZDlhYmVmODE0YTM4NjZmYjc2IGxlZ2FjeS10cnVuaworMzk1MSBkZWE2N2MyYTRjMDdmM2JkZmVjOTQxMmI2MWI4ZDE0MGY2OTNiMzQ4IGxlZ2FjeS10cnVuaworMzk1MSA3OWFiNGRmOWQwZjVmZjJmMmM5YzNhMzA2ZjFmZWIxYWQyYzUyODE0IGFscGhhMTAwCiszOTUyIDllMGVjZTZlZDgxZDdhMGFkNDU5MzRkNjIxODBjYjVjMTBkMGE5MzMgYWxwaGExMDAKKzM5NTMgY2EzY2NhYTg1MDYwMjZmZGUxZjJiOTY4ZTNjNTJhZTQ3MjE4NDk4MyBhbHBoYTEwMAorMzk1NCBlY2JhZGI4MTg4NDc1MDNiNjhiZmZlMWFkZjFlNzRjZjRlNTdhNDdkIGxlZ2FjeS10cnVuaworMzk1NSBiMmM5MjJjZmI0ZDk3YmNmY2Q4OTUwY2Y5ODY1NDU0MjU4NjYwZDZmIGFscGhhMTAwCiszOTU2IDRiY2Y1ODRjMTU3MmI0ZjI3MTgwMDA2MDVkZmE3OGU4ODgzNTc0NjYgYWxwaGExMDAKKzM5NTcgODNiNDFiZjE5MzkyZWQzZmY0YWI3NGEzNjE3YmJkMzk5YTgzNDQ4NyBhbHBoYTEwMAorMzk1OCBkNzQxMDQxY2IwNzZlYmNiZTFmNGJiMzk3YTk5ZWZlYzk0OGRlZWNlIGFscGhhMTAwCiszOTU5IDA5ZDc3YmI3MWQ3NWI1M2RlYjVhNDhiYzIzYmFmOTdjNDU3MDZmZGUgYWxwaGExMDAKKzM5NjAgY2UzMjg0NzE2NGUxZTZkMDc3MmM0OTEzNmM5MTNjNGM4MDJhMDA4ZCBhbHBoYTEwMAorMzk2MSBlNzZjNjg3YWM3ODFkNDJhNzQzNTk2OGEyNzQ0M2U3MzVhNDMyZmQ1IGFscGhhMTAwCiszOTYyIDZlYzE1MjIyMTc5MmU2NWY3YTExZTJhYjVlZWY1ZDE0OGJmMWYyYzEgYWxwaGExMDAKKzM5NjMgMzNkMzM0NDNlYzQ1OWZkMjI4Y2Q1NDVlMTRkNWU5ZDVkYjliYjRiNCBsZWdhY3ktdHJ1bmsKKzM5NjQgMzAxZjhjYTk4ZTBiNWY0NDBjOWQwMTQ1MDc3MmQzYzhlMGVhOGExMyBsZWdhY3ktdHJ1bmsKKzM5NjUgNTdiOWI3N2RhMjFiMzlkNWE5YTVjOTE3YTgxMWRmODJmMzlmOTIxMCBsZWdhY3ktdHJ1bmsKKzM5NjYgNWU1YTYxYmRkZTBiNzgxOWNkMjM5ZWVkZTk4NWIwYjZiZWQ2OGI1ZiBhbHBoYTEwMAorMzk2NyA5MDdjNWRkODljNmNlZmJhOGE0OGQ0N2RiMzlhNDA5N2Y5NWI3MjFhIGxlZ2FjeS10cnVuaworMzk2OCA0ZTdlYjVhM2ZiZGFmMTIxNWVkNzAwMzY4YmQ5ZmU4ZDIwODkwMTFmIGxlZ2FjeS10cnVuaworMzk2OSBjMmZmMjE2M2YwYjcwYzFlY2QwZDhhYWMwM2Q1MzM5YTQ0Nzg5NmUzIGxlZ2FjeS10cnVuaworMzk3MCBlOGJmMTA3NzE3ODEzOTdiOGQzNzQ1MjlmMTEyZjk0YjQ5YWM4NTAzIGxlZ2FjeS10cnVuaworMzk3MSA2MGE3MjE0ZjMzYTg4MTY1YzcwNGI3MzE5ZWU2MjhkNTNiY2M4ZThhIGFscGhhMTAwCiszOTcyIDU0ODg5MTFlYmMyNmVjNzI5NjVhYzMwOTFiMjdlMDMxMGJiMTcyZTcgYWxwaGExMDAKKzM5NzMgMTQzMWFiYjI4MzUzZjQ4NTBlYTVkYmMyMWIyMDYyNGYwZWYwY2RjZiBhbHBoYTEwMAorMzk3NCAxMjlkOThiNTE3YzI1NmZlODViNDM5MjYzNzZhYTA2NjRkN2FmNDllIGFscGhhMTAwCiszOTc1IGE3NTRiYzc0ZTU4NGRhZWE3ZjEwZjQ4YmVmOGM3MzE5OWNiYWM5NGMgbGVnYWN5LXRydW5rCiszOTc1IDc1OTM5ZGNjOTM4YTcxYWRhMWVkODljMzU5MTI2YzBkYzE2MDFjMTcgYWxwaGExMDAKKzM5NzYgMDc3MDgwZDc1OGRkYTY4MmVkNjE4YTNhNWM5YWZjZGQ3N2EyZWUyOCBhbHBoYTEwMAorMzk3NyBjNmFmYjk2YTQ1MjMwZjU1MWRmMTRhYzIxMTljYzgwYTM2NWMxZWFhIGFscGhhMTAwCiszOTc4IDVjMjlmNGIxYjI4NTE1MjUzNGEwZTI1NzZmMzcyNzY5NTBiZmJkYjMgYWxwaGExMDAKKzM5NzkgZTI5MTEwNWIxYmVlYWIyNjljN2EzNGNkYjg5MjE3ZjFiMTc4ZjU0YSBhbHBoYTEwMAorMzk4MCA2OWQ1ZGMyNGNiM2I1NTlmOGNkMTllYWU1MjkwM2QwMTdmMzA1OTQ2IGFscGhhMTAwCiszOTgxIDI0MWMzNTVmZDllYWQ1NzNmZjA4MDg5MWY1MTMxMjc3M2Y0ZmU5YTIgbGVnYWN5LXRydW5rCiszOTgxIDhkZWQ4YzY1NTExZGE0M2JkMGI5MDM0NzA4NzViYjRkZWI5NWVkNjAgYWxwaGExMDAKKzM5ODIgMmU4ZWFlZTllZjQ1Y2VhNmVjMWE4YjI1Njk4MWU0ZWJjOTgyNzllYyBhbHBoYTEwMAorMzk4MyBiZTJkYjMxNDIzNTc0ZDYxODRiYjVhMTRiYjk2NzhlZjY3ZTAwNzM0IGFscGhhMTAwCiszOTg0IDIyMWQ0N2IyOTc0ZTczYWI3OTFhNDBjYjlkOGFjNWNmNDRhOTk3NzMgYWxwaGExMDAKKzM5ODUgNzhhY2FkZWEzOTE4ZmM5NjdlNTU4ZjBmZjQ4Yjc4NjhkZTE5ZjVkYSBsZWdhY3ktdHJ1bmsKKzM5ODUgZjlkYmJiYjE3OTI5MDI1ZDA2ZDYyOWE0YmVkM2U1MWExMTMxYTcyNCBhbHBoYTEwMAorMzk4NiBhY2VhMTEwMzEyOWJhYzExYWY2MWRkYTdmODEyYzUxOGRhNWI4NmNlIGxlZ2FjeS10cnVuaworMzk4NyA4M2VlNzY0OTgyM2QyNTZjZjI3OTEzYmI0NDhmOWM0YWZjOGNmZjhlIGFscGhhMTAwCiszOTg4IDQwNDhjY2Y4NWIzZDI0NTY2NzU0YmEzMDMzZWI3NGNjZjg2NDYwMzQgYWxwaGExMDAKKzM5ODkgZDdhODU1N2U3ODBjZDUyNmE4NTUzOGFlYTZhMWQwZjQ0ZDU0OWJkOSBsZWdhY3ktdHJ1bmsKKzM5OTAgYzk0OWRjYjAzNDhiZTRlYWJkZmU1MWVkOTRjODU5YmQzMmNlNzdjNiBhbHBoYTEwMAorMzk5MSA3Yjk4MjhiYzcxZGQ2NDkyNTlhYjRlZDdjMTVkOGEyMmRlYWI4YmQxIGxlZ2FjeS10cnVuaworMzk5MiBlMjBkMDY5NGU3NDAxNGViZjZkYWI2NGQ5YjI2ZDMwYmZhNWUzZDMyIGxlZ2FjeS10cnVuaworMzk5MyAxMDM2ZjIwNWNjMmQ3YTVmMTA3Y2RjMWZiZWUzMjA3NDk4MTkyYzA1IGFscGhhMTAwCiszOTk0IDcwNDkyZDY1OWUzYzdjMTI0ZDNmY2IxNDA5YTIwOWIzZmQ3MjVjY2IgbGVnYWN5LXRydW5rCiszOTk1IGE4Mjc1NTYyNzg0Y2QyZjI2OTE5NjExYjA4N2U1Njk5ZDYxNDM4ZjggbGVnYWN5LXRydW5rCiszOTk2IGY1MGZlNGI5NTJiYWExNzJkNmRmZmEzYTI4Y2FkNjI5NWVkNWQ3MzEgbGVnYWN5LXRydW5rCiszOTk2IDAzMjZiNWQ2MTQ0NWVlM2E4ZDNkZTI4MTE5Zjk2NTJjYjcyZDJlM2YgbGVnYWN5LXRydW5rCiszOTk4IDZhMDFmMDk5ZjBhZDhkNDU0N2RkN2M2YThhMWQ4ZWFjNmU1ZWJmZGYgYWxwaGExMDAKKzM5OTkgMzY2ZjhkZWU5NmZiZjRlNzc0NjA4ZTBlZGU5YmMwYWI0ZDdiYTJhMSBhbHBoYTEwMAorNDAwMCAyZTA1MGE1MGFhMGEwMWYzNTM1ZGEwMjc5MWE2YTBmZTE5MzMzZWYyIGFscGhhMTAwCis0MDAxIDJiMjc1NTMwMjhhYWMyM2U2ODcwODE3OTg2MzljNDE5ZDM0Y2MwOGYgbGVnYWN5LXRydW5rCis0MDAxIDc0OTIwYzNhMzY3ZDJkMWM3ZjI5Mzg4YjI0NDQwMWZkMmVlNDM5ODcgdW5sYWJlbGVkLTEuMS4yCis0MDAxIDIyNTQ4MjI5ZDZmZGRjZTMzY2Y1N2EzOTMxZmJiNzI3MmM0YmU3NjYgYWxwaGExMDAKKzQwMDIgMDQ3N2JjMzljOTM1OTJhZDkyMzM5MWY3ODMxNDFkZGE4MTgzOTQzMSBhbHBoYTEwMAorNDAwMyA3Zjg5MWYzMjg2NGNhNTJhMWQwYzc5NmJlYjdiMzAyZDkwMmNjM2Y5IGxlZ2FjeS10cnVuaworNDAwMyA4ODk2ZTRlYzA5ZmM0YTQ2ODQ4ZjQzOGIwNDFkMjA4YjI1NTM0ZTIwIGFscGhhMTAwCis0MDA0IGIxNGM2Yjk1NTE2MWNhMDRhZTA5M2E4NjcyM2Q0NDAzY2ExMzBjYmYgbGVnYWN5LXRydW5rCis0MDA2IDg0NTQ1NzlhYjUyZjM3MWRjZjU1NDZjYjUzMGUyZGQ2ZmQ2MGZmNWUgbGVnYWN5LXRydW5rCis0MDA3IDljYzg1OGJkNTczZGUzNGYzMDlmZTE2ZWE1YzQ4ZTk0NmI3NTM3MjUgbGVnYWN5LXRydW5rCis0MDA4IDgxMmQwODExZmNmM2UwNjJlNDUxNTliNDM4Y2FiYWFmMDAzMDhjZDIgbGVnYWN5LXRydW5rCis0MDA5IGE3NWRjODY1NmNiMGEyMzkzZGJhNGMyNTJmMzFkMzEyYmU0ZDEzMmMgbGVnYWN5LXRydW5rCis0MDEwIGI2YjUwZDk0MTI1ZmQ0MmYxMDJiYzBkOGZjMDQ0M2M0NzU5NjI4NGQgbGVnYWN5LXRydW5rCis0MDExIDg3YTJiMDRjNDY4MGJkMTIxZmMzZTY4NmZmYTg3OGY2YjRmYTMxNmIgYWxwaGExMDAKKzQwMTIgOTZkMGRjNDczOWVjYTI0ODIwNzUzYjE0YmRiZWIwODE3MDdhYmQyZSBsZWdhY3ktdHJ1bmsKKzQwMTIgMWNmNjA4NTY5N2NkNWEwYTRlMDJiM2YwOTI0ZmEyNTY4ZGVkMDEyOCBhbHBoYTEwMAorNDAxMyA1NTJiMjFlN2MyMzBhNzlkMjZiYzMxNWY5ZWY1NjA5OGQwNGQ3NDc1IGFscGhhMTAwCis0MDE0IGMxZmIyYjZjNDc0Y2VhOTNlZTU0Y2M4MWYxNGU2OWEwYmNjNDI3MTIgYWxwaGExMDAKKzQwMTUgZTQxYTY1MzA2NzA2MjAwNWEyYzVlYzUwNmNhZGUwOTdkMWI4NDQ0NiBhbHBoYTEwMAorNDAxNiAxNTEzMjFhMThkYjRhNzhiODg3YTdiNjA3NmE0MGU2MGQyZTA2NGJmIGxlZ2FjeS10cnVuaworNDAxNiA0MjQ4NmJmMjM2NDdkYjQzMDI2NWE0ZTMzMjgxODQ2Y2E3MmY2MDhlIGFscGhhMTAwCis0MDE3IDhmYmU4NjBhMjZlMTk5NWYxZGExZmE3MWQ5ODk1ZDE0NDBkODA1MGIgbGVnYWN5LXRydW5rCis0MDE3IGU0NmUwZWU3NmRiYzQ0ODE4YTY2N2VjMTI0M2FmZTk1NTNhZDdhZDMgYWxwaGExMDAKKzQwMTggYTlkZDJlMWVhNWM5ZWEyY2E0N2I0ZDBjODBhY2ViNmExNDU2ZmYwZiBsZWdhY3ktdHJ1bmsKKzQwMTggYTE5ZmEwNTVlYzQ4YjI0NDY3YTdhMjMwZGJjYWEyN2JjYzMxNmEzMyBhbHBoYTEwMAorNDAxOSA0MTIxYWZkNzZkNzM0YWZlYzIyNGZiMmJhOWViOGQxNjZjM2QxMDkyIGxlZ2FjeS10cnVuaworNDAyMCA1YTZjMmEyMzhmMDM4NzZlMmE3OWUyYWIzMjlmMjVlMjdiYTI4OTM1IGFscGhhMTAwCis0MDIxIDI5YzQyNTVjZDQ1Y2Q1ZjJlYmM2YzExZDZjZjRmMGM1NTdhZjg4NTQgYWxwaGExMDAKKzQwMjIgMDIwMmE3MmQ5OTRlM2QzODI1NWYzYTU1M2E5MGNlMWIxNTM2ZWVmZiBsZWdhY3ktdHJ1bmsKKzQwMjIgNGUxYTJkYmY5M2M1MzJhMmJmZmNlM2M1ZGZlNTdhNzhmNmQ2ZjIyZSBhbHBoYTEwMAorNDAyMyAzZTZiNjdjYTlkYmU0MjY5Zjk1OTAwNDIzNzJiN2VhZmQ4YzM2Yjc3IGxlZ2FjeS10cnVuaworNDAyNCAwMDdhZGYwMTU0M2M1MTc2OWZjMzJkOGExOWRlNDk0NjFmY2VlMTk5IGxlZ2FjeS10cnVuaworNDAyNSA2Y2U4MmMxNTgxYjkyZjc3MWRiOTBjNGY1Mjg1ZGFjNTZlZGI5Y2NiIGFscGhhMTAwCis0MDI2IGYyNjAyMjg4MzgxYTQyNTdmOGY2MmY5OGEwMzZmZGU3NjlmMGVkYzcgbGVnYWN5LXRydW5rCis0MDI3IDU5MDM5YzA4NTZjOTM5NmUzZjFmM2E0NzQ0OWQzMTY5ZDczZjc1ZjQgbGVnYWN5LXRydW5rCis0MDI4IGEzZWIyNTI1OTMyOTQyMTY2ZTM0MGU3YzZkODQ4NzM0YThhZjU2MDIgbGVnYWN5LXRydW5rCis0MDI5IDFmNDkyOWE0OGU2NGEwMDQ3YzM4ZWQ3ODkxZDEyZWFiNTkyMWJiMTQgbGVnYWN5LXRydW5rCis0MDMwIDlhZjhiMzk5MWNlZGY3MmViYmI5NmRhN2NiNjExNDQ4ZGExYjhjN2MgbGVnYWN5LXRydW5rCis0MDMxIGZjYWY4YTJiYWYzODk2ZTkwMDM3OGI4NjA4NDlkYWEwMTQ2MjBiYzAgYWxwaGExMDAKKzQwMzIgYmNhODI5MGMxYjMxY2Q3ZDcyNzA1ZTM5MzI3NTZlMmQyOGVlMDU1MSBhbHBoYTEwMAorNDAzMyA3YTI5YmIzYmRkYjQ2NWFlNDQwYTM1ZDZmNTM5MjY5ZTNjODA0ZDQ0IGxlZ2FjeS10cnVuaworNDAzNCAzN2NmODdmNTYxZWNhOTg1YWVhZjJhMDUxNGRkZGQ5N2U5YTE4ODEwIGxlZ2FjeS10cnVuaworNDAzNSAwNTU5NjJmOTZkZTdiNWYwZmEwOGQzYzNlZjE1NTZiYTBmZTgyNmVjIGFscGhhMTAwCis0MDM2IDE0YjA4N2ZlNTM0NzBjNGUzN2UxNDAwMDc1OGVkZTU1NTk5MDdlODIgbGVnYWN5LXRydW5rCis0MDM3IDcwODY1NGE1ZGRkZTAzMTFkNzU4MTc1NjZjYWIxN2M2YmRhYzNlNDcgbGVnYWN5LXRydW5rCis0MDM4IDBkMDI5ZGVlOTEyOTBmOWEyZjZlNDVhMmFkZjdkNWNiMDhmZDNkODUgbGVnYWN5LXRydW5rCis0MDM5IDdhNDdmYWJiMTg3YzZjMjY3Y2VlNzdiNDUyNzk1NjMyYjYxYzcyOWMgbGVnYWN5LXRydW5rCis0MDQwIGZhNTBkNGJkNTUzNzg1YTFjMWFiZTcyOTc5MzY4YjQwNjg5MjU4YTggbGVnYWN5LXRydW5rCis0MDQwIDYwYjAxNThkOTQ4YWNjM2ExOTA1ZTBiMWQ3YWVlMjU2NTlkOGY3MzggYWxwaGExMDAKKzQwNDEgZjg0OThiMDg4YWExYTBjNTAzNjZkY2E1MjM2Y2M1NWMxMDQ4Y2QxMSBsZWdhY3ktdHJ1bmsKKzQwNDEgOGE3ZTUzMGRkNDRhNWU2NDAwMDhhOTM2ZWFjMzUzNmFlNDcyY2IzMSBhbHBoYTEwMAorNDA0MiA2MjNkZDcyNDkxODY2NDQxMTQ4ZDgwYmQwNTFiOTE4ZjRjZDMyYWUyIGxlZ2FjeS10cnVuaworNDA0MiAxOWYyMDc1MWY4ZGVmYmVmMTQ2Yzc3ODE1NDU5ZWNiM2NiMDI3NzU3IGFscGhhMTAwCis0MDQzIDAzZTA5N2RkZWNhMmJlY2I4MjI5MDg2ZjZmMjUwYWU2ZjRmMWNkNDUgbGVnYWN5LXRydW5rCis0MDQ0IDZjZjZiNjY5MWFhZWIyODE3ZjA5MjZmYTJkZTEzZjhjNGQ3MmIyYTQgYWxwaGExMDAKKzQwNDUgN2FjNGU0OTc5MWY0N2UxYmRhZDhlZjRlNDY4YjM5MmJjNzYyNDY0MyBsZWdhY3ktdHJ1bmsKKzQwNDYgOWUyYjE5NDJhNzQyMGFhNDA2N2MxOTVjYTkxZDlhOWI2NjY3YWM3YiBhbHBoYTEwMAorNDA0NyAxYzcxYTI3ZmQ2OTMzZGM2ZGU1NTg3MTMyN2E0M2FiMmIwNDhjYWEyIGxlZ2FjeS10cnVuaworNDA0OCA1MWEwNmZkZmZmNzg5ZDMzZTJhMDA2ZmMxNjhiOTYxODU0ZTYxNDA0IGxlZ2FjeS10cnVuaworNDA0OCAxMWVhMTYxYTAxYzJmZDkyYjQ0YTk4YjIyMDI2ZjI5NTZmYTZkMTA5IGFscGhhMTAwCis0MDQ5IGNmMzI4YTllYzVkNDQ4NzZjZjAyNGYxMWQ3YWM1NjU5ZjlkMzk1NDAgYWxwaGExMDAKKzQwNTAgMTliMDBlZjRjZGQ5OTdkYTMyOGUzOWUzZDUyZDkzNDkxMTA5NjEzZCBhbHBoYTEwMAorNDA1MSA3ZTVmOTdiYWIxZTZmOGRlYzc2ZDRmMDc0MTc0NDdlYjU3OTIwMGQwIGxlZ2FjeS10cnVuaworNDA1MSBjZjI0ZjNlN2JlNmQ3ZTY1ZWE1YTVjNTdmYmYxZmJhOGY4YWQyZmUwIGFscGhhMTAwCis0MDUyIDMyYzI4YWRjY2QxMmIwNjkwYzE5NWQzYThjMjM4YmExMjQ3MDg2M2YgbGVnYWN5LXRydW5rCis0MDUzIDNhYWM4MjVhNTNiNTIzZGY1ZjAyYWQwZjM4NzcxZDFhNzVjNmQxNWIgbGVnYWN5LXRydW5rCis0MDU0IGNiZWU1ZTFlOWJlODMyNTkwNDI2OTk4MDk4MzEwZmU2OWJhMTM3YTkgbGVnYWN5LXRydW5rCis0MDU1IDc2MDNhM2IyY2JlZTk5MzQ1ZDJmOWUzZTdjZmFiZWY5MzE4OGQxYWMgYWxwaGExMDAKKzQwNTYgOTBlZTcxYTNhMTNlYmI0NDgzNmNhZjE2ZjY5OGRiOTJkMjE4YmQ1ZCBsZWdhY3ktdHJ1bmsKKzQwNTcgYTRjN2VmZjI1OWE1OWM4YjRmNTE5OGEyNjc4NDdkYWRhNzViOGExOSBhbHBoYTEwMAorNDA1OCA0ZGVmOTM0ZmY3NWI4MDYyYWJmYThhMDcwMWRiYTY3OTVmOTc1NmU0IGxlZ2FjeS10cnVuaworNDA1OSBmMDJhNDY3NTRmNTA1YzNlZDMwZGFmZDdjNGMxNTU0OGZkYjkwZGE2IGxlZ2FjeS10cnVuaworNDA2MCBhODYyZDhmNDUwN2I4YjRiZDNjNGRmYTEzZDNmOGI5MTc2Mzg0ZmRlIGxlZ2FjeS10cnVuaworNDA2MSAxYjllYzM3ZGIyYjlhYmY5NWNhMWU4YjhkNDE4YjVkMGRlNjRlMDJmIGFscGhhMTAwCis0MDYyIDUwOTZiYjQ4Y2NmZTEzMGJmZTFmZThjMWNhMDA0ZGNmODY1YWY5NGEgbGVnYWN5LXRydW5rCis0MDYzIGI1YTY2MGNhYThlMWJjNDU3YjU0MTQ0M2JiMWIxZGRhMmVlZWNkNzIgYWxwaGExMDAKKzQwNjQgZDkwYWFhMDkxMjNiZjU4OGE3OWQwOWZmZWZmMzcwNzJhOWRkM2Q4YiBhbHBoYTEwMAorNDA2NSBlMjgyMzExMGMwNTE1NzA0NTQ0NGUxZjM4YzMyZWQ4ZWM1ZjJkOTEyIGFscGhhMTAwCis0MDY2IGU2YTIxM2I3ZDBkMmI5ODAzY2Y0MDIzZjBlNjRmYzBjZDcyNTE2NzcgYWxwaGExMDAKKzQwNjcgNzJjOWE0ZGM0ODQ3ZDc5NDg5Nzc2ZDU2YTI0MjNkM2VhMGU1M2FiYiBhbHBoYTEwMAorNDA2OCA0ZjQ0OWFiNjA1NjdmYmI2NDNlMmFkNDUzNWNjYmRjOWM5ODBmYmE0IGFscGhhMTAwCis0MDY5IGZmZDQ5NWJhY2JkNDM2ZjAwZThjYmViMmJiMGMxMDgzYWI4M2YwNDMgbGVnYWN5LXRydW5rCis0MDY5IDhlN2Q4ZDBkNGU5MGE5NDUxNThkYTU2ZGFjOTg4ZGY3MjliYjVhODcgYWxwaGExMDAKKzQwNzAgZjdlMWUyMzg5Mzc1ZjIzMjYyMGFlZjhlNGFkNDhlNzFjNGM1OGIyMyBhbHBoYTEwMAorNDA3MSAwMWQyNjQ4NmIwZWU2NjQ3YzNmMmQxMGEwZGJiZjQxMmEzNmY4MmZjIGxlZ2FjeS10cnVuaworNDA3MiAxNGIwMzQxOGM5MGZiMzhhZjIwZmVkN2Y0NzI2ODllZTk1M2M0Y2NiIGxlZ2FjeS10cnVuaworNDA3MyBhNmU2ZmFkMWEwMWIzMmZkZjQ0ODMzZTRmMGY5OGI3M2QzNzI0ZjFjIGxlZ2FjeS10cnVuaworNDA3NCBhMDllZmIxMzVkZTU1MjQ2MzUwZWU0MjQ1YWMxODE5ODRiNTdlNTdjIGxlZ2FjeS10cnVuaworNDA3NSBkMDc0YjJmYjYwOTE0ZGQ3ZDVjYjkwMWI5MWY5NWZiOTJlZjY4MmQ1IGxlZ2FjeS10cnVuaworNDA3NiA3M2RkMmE5Nzk4NTdmMTdiMzZlOTE1MzJiMTY3MmZlNjVkY2I5NjJlIGxlZ2FjeS10cnVuaworNDA3NyBiNWQ1YmJjZWIwMGY2MDQ4NjM0Yjk4ZjA3ZDg2OWJkZGI0YTkzYjUwIGxlZ2FjeS10cnVuaworNDA3OCBhOTYxNmY1NjU0NjU1Mzc4Mjk1ZTRhOWIzMTNlM2VkOTRlODRhODU2IGxlZ2FjeS10cnVuaworNDA3OSAyNzM0NTE4OTIzMjdjZTFmMWIwN2YwZGQ0OTA5ZDBkNTZlYTY4ZGRmIGxlZ2FjeS10cnVuaworNDA4MCAzODJiNGY4YTczN2E0Y2ZmMWFiN2IwNWZlOTNiOGRkNjcwNTQ2OTM4IGxlZ2FjeS10cnVuaworNDA4MSA5NTNlNzRlYWMwMDYyOTgxNjljNTJlZTcyYTI5ZTdmNGY0NWQ1NmNmIGxlZ2FjeS10cnVuaworNDA4MiBjZWQzZDExMjJmN2NiYWIxM2UwNzcxMzJkNjhkNGQwMTE5Mjg4NTNiIGxlZ2FjeS10cnVuaworNDA4MyAzNDRkZDI4ZGE5YzU2NjIwZjUzNmVhMWEzOGU4NzI4MjNjNTBkYjNmIGxlZ2FjeS10cnVuaworNDA4NCBhOTQ4YjQ0YWQ0YTE1NTBiNTcyYmI3NTgxMDJmZTVjMDgzMGZkMDQ2IGxlZ2FjeS10cnVuaworNDA4NSAyZmU1NGY2MmNkYjU0OTcyYzFhNTkyY2M2M2RlYWU0ZTk3NTk4YmZjIGxlZ2FjeS10cnVuaworNDA4NiA0YzMwNjJjNzEzNWZjZDNkNzFkMDRlNDg2MWRlODJiMjI3ZWZmOWIwIGxlZ2FjeS10cnVuaworNDA4NyA2YTBlNWNkNDk5YzQ1ZWRkZDc1Y2NiM2JmODI0M2M0NTZkOGNmMGJlIGFscGhhMTAwCis0MDg4IDQ5NmM3ZTlmMTFkMjQ4MjBkYjM0NTM4MTRmNjIzNGFkZDVmMjI5YzkgYWxwaGExMDAKKzQwODkgY2EwMjMzOTllNWM5NGJiNWU3ZjkyZjlhNWYwNGE0NDJiMDNiMjIzOCBhbHBoYTEwMAorNDA5MCA1MmZhNGRjZDFiMGUwYTE2MmIwZmRjN2I0OGIxM2U0M2JiNWIyNjRkIGFscGhhMTAwCis0MDkxIGI2YzM1ZTFmYWRhZTZmZjEyNzFmNWI1ZDg3NWIwYmI2NGJmZTE2YmYgYWxwaGExMDAKKzQwOTIgOGY5NjgwMjczMzA3NzUzOGY4OTVlMzk3NTc0MWRkOWIxODBlNmZjMiBhbHBoYTEwMAorNDA5MyA5YWU3ZjJmZDg5ZjEwOTdkYzc4YTY2MTg5YWViNGJmMGI0MTNmYjQ3IGFscGhhMTAwCis0MDk0IDRiNTBmMTA0MmU4ZGMwOTAzODZkMDU0NzE3OTE4ODJjM2JlMWY2NjAgYWxwaGExMDAKKzQwOTUgNzYzNzE4MDVkOWYzNzRmMTk3MzI4ODEyOWEyNDMzMTRjYzQyODg2MCBsZWdhY3ktdHJ1bmsKKzQwOTUgMDNiMDU3MTdiOTUyMjRhZDJhNzA3YTc2MjA1NjQ0ZDkzMzcwOTk1YiBhbHBoYTEwMAorNDA5NiAxZTNhNTUzZTQ3OWFmMDhkZTNlN2Q5YThlYTU4ZDA3MzhiNTkyZGYzIGFscGhhMTAwCis0MDk3IDNiOTBhOWZjMWUwMzk4OTI4NTNiNjViY2NkODRiOGZlYTE5MjQwNjkgYWxwaGExMDAKKzQwOTggMWYwNmY3MTkwNGMyNDFmMGEzNWJhNzU4MzQ3N2Y4Y2U5ZTRjOTIxYSBsZWdhY3ktdHJ1bmsKKzQwOTkgNTA4YjczZTBhN2U0ZjFmMTViZjZjZTQ0YzdlNzZhNzY5ZmJmZDgyNCBhbHBoYTEwMAorNDEwMCAzYWZhZmFjM2Q3YTE2YmViYzI5ZTc0YTE0ZmNkYjRiZTBhM2I2ZGZmIGFscGhhMTAwCis0MTAxIDAyZDhjMTU4ODJmZjlhZDUwOTY4YTNiZTE3YzgwM2ZhYjE4ZjExMjcgYWxwaGExMDAKKzQxMDIgNTI5MDQyOGJhZDM3MTViNzNmYTBkMTIwMGEzOTRkNzIxOTBiMDc2MyBsZWdhY3ktdHJ1bmsKKzQxMDMgNzViY2IxZmM2NWJlNTljMTMyNTc2OWUyYTJkMjdiZjUxNDZmZmM1OCBhbHBoYTEwMAorNDEwNCA4Y2Y2NDBlZjM0NDAwNzY4OWU5ZDM2NDQxYWU0MzVlYjdhYTUzZTJjIGFscGhhMTAwCis0MTA1IDEwMDllYTQ5MzY2Y2M5OGNmNmZhZjk1NWQ2Y2Q5YWQwM2Q4OWRiNmIgYWxwaGExMDAKKzQxMDYgYzJlNmM5YTdhOTVmOGI0NmFmOTY4NjFhNDVmYTI0NGNhMWMyMTNmZiBhbHBoYTEwMAorNDEwNyAwYTYwNDYwZTk5ZjAyYjQxOTZlNGE3YmRjM2IyOTg4Y2E3ODA0ODIwIGxlZ2FjeS10cnVuaworNDEwOCBkYzhlMWQ3MmQ3OGRjY2U1ZWY1MDFiNDNmNWQ1MmYyN2M2OTY1MjI5IGxlZ2FjeS10cnVuaworNDEwOCBjYWVhZWUzOTBlNDNmZTU3M2E5M2QzNWMyYmNlODM0MjczM2EwY2QzIGFscGhhMTAwCis0MTA5IDFiMTdhYWYyNTEwNTQ5NzZiYjJjM2FlYzdjNGQ1OTQxNDAxYmI0YmQgYWxwaGExMDAKKzQxMTAgMmJjZGRjOTA1ZGEwYjlmOGNiNTI3ZTZmY2ZiNWZlOGRjNDNjNzI0NCBsZWdhY3ktdHJ1bmsKKzQxMTEgMDgwODExYjFkMDIzMzIwZmFiM2E4OTVmZjZjYWM5NGQ2YjEzYmFjOCBsZWdhY3ktdHJ1bmsKKzQxMTIgMWNkNGZkMTY2MjNkZTIzNGU2YzIxZjg4N2QzOTM3MzRjNTM5MjI5YyBhbHBoYTEwMAorNDExMyA0Y2JmNTM2YTZmMTgwMzg1OGU0YjU3MDE5ZjZiYWQ3Njg2N2ZjYTY2IGxlZ2FjeS10cnVuaworNDExNCBjNTRjMDdhYmNmY2YzMWZmYmQyOGUzNTA4MGRiYzUwNDIyMjM5YzkwIGFscGhhMTAwCis0MTE1IDZiZTkxYzQ0Y2FmZmQ1ZTJjM2Y0MjkxM2Y4ZGRiMjNhZjk4NWI1MzIgbGVnYWN5LXRydW5rCis0MTE1IDZlNGE4OWVlMTE2MzRiNWVmYzBkYjBmZTEwNzUzYmQ4MzllMTMxNDYgYWxwaGExMDAKKzQxMTYgMjNmZDUwZDc3YjVhMDUwMzZkYWJkZGY0YmQ4NDdhNzU2YzgyM2U1OSBsZWdhY3ktdHJ1bmsKKzQxMTcgYjVhNTdhZjQwNTA4YzhlNGRhNWVhYWE2ZTU4OGE1MGVkMzc1OTFkNCBsZWdhY3ktdHJ1bmsKKzQxMTggYmI2MTgxNmUxZGFiMGU0NjgxMjEzYTcyMWVjNGRhZTM5YzM5OTBmZSBsZWdhY3ktdHJ1bmsKKzQxMTkgOTQ2MjFhNDY4YjYwZDQxNTkzYzEyYWE4MDMwMTlmNmYzNmQ4M2MzZiBsZWdhY3ktdHJ1bmsKKzQxMjAgOTNlMDM2Nzg2YjE3YTc4ZDBkMGVmNTgxNTAxOTZiNWE4ZDk0ZWJlNSBsZWdhY3ktdHJ1bmsKKzQxMjEgZDg4YWY1OGU5NWNkMDg0NGViOTk1MWE3YzZiYjQyZDkwNTczNjhhZiBsZWdhY3ktdHJ1bmsKKzQxMjIgZTI2NjVkOWQ0ZTQ2ZDI1NDlkNTliZTA4NzU1ZTBkNzE1ZGQxN2M3NSBsZWdhY3ktdHJ1bmsKKzQxMjMgY2YyOWMwOWYwN2I2MWY3OWVhMjM4YjE3ZDEyYjA2MjQ1NmQ2NTM2MCBsZWdhY3ktdHJ1bmsKKzQxMjQgMDNkMzUxYjZmNzM4ZTRjNWI4YTJkZmIxOGRiYWY4MzdlODkwOGFlYSBsZWdhY3ktdHJ1bmsKKzQxMjUgYzUwMTI3ODA5MTc5ZGRlZDdjN2EwMTM4OTJkZDRhYTNkYWYwZTAyZCBsZWdhY3ktdHJ1bmsKKzQxMjYgYjk0OTIyNGE0YmQ1NjFhOGQ4NTBiMTNlYjQ4ZjRlOWI4OWYxNTE2NCBsZWdhY3ktdHJ1bmsKKzQxMjcgOTAyZmZmNTVkYjM4MWYwOTM0ZDlhYzM1ZTVmMjJiNmI3YjFmZDJjOSBhbHBoYTEwMAorNDEyOCA1MTdiYWFlMWI2NjNjMjYxYjZhMDdkZmY1OWYxYjA2MTA4ZTU4NjkzIGFscGhhMTAwCis0MTI5IDQ2OGI4Nzg0ZGE0OGI3NGEwN2VhODBiYjYwMTVjODljYzY1ZWY0YzkgYWxwaGExMDAKKzQxMzAgYmZjZmY4YWY5NzUxNjg3ZmU5MWMxZjUyYmFhOTkzMTdkZTg3YmQ4NiBhbHBoYTEwMAorNDEzMSBmODU0MGE4Y2Y1ZDc5NDY0NWI0YjU4YmU1YjQwNTg3OGQ0MjFjYzM1IGFscGhhMTAwCis0MTMyIGEyNDAzZmUyYzg4NTgwNTVmNjUxYTc5MTkwMDgyODA0OGExZjc5NDAgYWxwaGExMDAKKzQxMzMgMmIwN2Q5MjVjMDlkNDFlZWRkMWJmN2YyODRjYmQ4YWZhODNmY2ZhYSBhbHBoYTEwMAorNDEzNCBkZjIyMDRlNDdiNjVmNzVhMDVlZTIxZDJlNTgyZTFhY2FiMjM2M2I1IGFscGhhMTAwCis0MTM1IDc3Yzk0OTMwMWRiMzc0OTA0YmY2NWI3NWUxNTU4ZThiYmYxMGJlYjIgYWxwaGExMDAKKzQxMzYgNzg3NDc1NjEwYjAyZTMxZGM1NTcwYTEzMmQwYTc3YTNjYzYxMzdiNyBsZWdhY3ktdHJ1bmsKKzQxMzYgYjcwNzJlYzdkNjUyMzdhY2U0NzFhZDNmYjM4MjExMTRjNWM0N2FlYyBhbHBoYTEwMAorNDEzNyA3YjFjNDlhN2QzNzVlYTA5NWY1YjY4NzBhY2EyMTRkMmIxNjIwOTM3IGFscGhhMTAwCis0MTM4IGRhMmFmYzAyOThhNzBmY2U3ZDNjMTk2OGFhNDA2MjI5YzJlNjQ1YjUgYWxwaGExMDAKKzQxMzkgOWRhNDk0MjM4NzczYzkxNmUyNWE2ZTMxNWZkNmZiZDllZjFmNGEyMiBhbHBoYTEwMAorNDE0MCBmYjViYjllN2NkN2E4MTljMWQ0ZTJhYTg1MzRkZDhhMmQ2ODUzNDY5IGxlZ2FjeS10cnVuaworNDE0MCBlYmU4NjgxY2Y1ZmVhZjFhNGRkOTgwMDc0ZTBiNDAyMDZjMDg5MTkwIGFscGhhMTAwCis0MTQxIDg3OWU4ZDA0ZTU4OTY3N2ZjNjQwOTVkMDA3MzJkNmVlMTc4NDc4ZGMgYWxwaGExMDAKKzQxNDIgZWIxMWEwOThiN2ZmMmNjZGU4MzllYTc2MDEwYTFjNzM1NmU1ZDczNyBhbHBoYTEwMAorNDE0MyA5ZTdkMjA2YTQ5MjIxNjZhMjE5YWI1OWQ0MjM5YjUyZDYzMTk5ZTM0IGFscGhhMTAwCis0MTQ0IDkzZGY4MzAyMmJlODc4YzExMDc2YTg2MDg4YjhjMjBlMDE3NTM0ZWUgbGVnYWN5LXRydW5rCis0MTQ1IDc3YmJlNThhZmVhYjUyNTMyYmFhMTcwZWY1OWM0MzY4OTM2ZjlmYTYgYWxwaGExMDAKKzQxNDYgMDE1YWYxYzQ3NzI2NDI3ZmVmYmE2YWMwNGNkNmU0YjU3OGU1ZDY0MiBsZWdhY3ktdHJ1bmsKKzQxNDcgMTkwMWUwODA4NmY5ZmQ2NGU3MGYxZTEyYjkyNzY0MGNiNzY2ZGViZCBhbHBoYTEwMAorNDE0OCBmMWIwNDBiY2EzZTEyZWFkNGJlNTljZWM0ODA1OGU5Y2I3NTRkNWU1IGxlZ2FjeS10cnVuaworNDE0OSAwZmIzYWE1Y2E0YzAyZWNlMTAxYzNiZDBjZWQ1ODRkZTRiYmU5OWJmIGxlZ2FjeS10cnVuaworNDE1MCBiYTk1N2FhNDIyNDFhOWNlOTBiNTg3NzU3Nzk5MDQ3YjcxNmU1NmQxIGxlZ2FjeS10cnVuaworNDE1MSAyMjI4MDJmMGQ5NzgyOTU0NWY0MTBkNzUwMWZhZTZlNDNiZmY0Y2U1IGxlZ2FjeS10cnVuaworNDE1MiA0YmJhM2M5MDdmZmFlNDc1Y2EwYjIzNTFkYjM1ZGUzMWQ5MGY5M2M1IGxlZ2FjeS10cnVuaworNDE1MyAxOTJkODY5YmViOTczNmExODE3NjkwNzQzNmEwNTRiOTBmNDk4ZjliIGxlZ2FjeS10cnVuaworNDE1NCA2ZjgxYjEzZmQ2YWMwOGQ0MmU2MTg4ZWZiYjliMzY0ZmFmZDU0ZmZhIGxlZ2FjeS10cnVuaworNDE1NSBkZTJkYzFiYzRiYWUxY2MzYzhjOWU5MzgzNzBkZjdjNDc3MzM0ZTYxIGxlZ2FjeS10cnVuaworNDE1NiAzNzViOGI4NjMxMjZmYWVkZmU4YzYwOWIwOWNiMWU3NGMxYWE0ZTExIGxlZ2FjeS10cnVuaworNDE1NyA1NjU2Zjg4N2ZmZjM3ZWZkOTM5ZTg3ZjZhM2FiNWQ5ODg3M2U2MTE1IGxlZ2FjeS10cnVuaworNDE1OCAzNjZhMDI5MmI2MTQyZTY0NTBkYzM1ZWJhNmNlN2M1YjJhNzAzOTExIGxlZ2FjeS10cnVuaworNDE1OSAyZWY5ZDUwYWI2NTRiYTUwMDNiZTQ4OGI5ZTgyOTViMDgzMWMzMGEzIGxlZ2FjeS10cnVuaworNDE2MCBiYjU2NmQyOGNhYTBkM2FmZTkxYmU2NjhlMTU5ZjFjYjNkOTY4YmFjIGxlZ2FjeS10cnVuaworNDE2MSA1ODQwZTU1M2ViOGQ4OWZjNzU5ZGUzMjYwYmQxYmI5ZDUxZmY5ZjRkIGFscGhhMTAwCis0MTYyIGRiMGVhZWY0MmNiOTRlOTIxOWFlODk2YTc4NzQzYWI4OTU2YjFhOWQgbGVnYWN5LXRydW5rCis0MTYzIDk5MjhkMzMzODIxZGUwYmJiOGI4YTU0YzExYTExZGQ1NmYzNDdmZjYgbGVnYWN5LXRydW5rCis0MTY0IDUwNGJmYTU5Yjk1NGVmOTdlYzFmNDZjYjgyMWJjYzRiYTE1MjlkYjcgbGVnYWN5LXRydW5rCis0MTY1IGJhOWI3NTVlMTdmZTBiMmRkMjA2MjdhMDcwYmFjYWQyOWE5MDc2MWQgbGVnYWN5LXRydW5rCis0MTY2IDBkNjEzM2FiYjZlNWZjYmY4ODNmOGEwYmFjMTY5MTg0ZDcyYTg2NzggbGVnYWN5LXRydW5rCis0MTY3IGExNjAxZmMyYjNlNDQxNGJhMzI4YTBiZTMzMzc1N2RkNWMyYTI2YWEgbGVnYWN5LXRydW5rCis0MTY4IDJmOWJhMmViY2IxMDczYmZlMTdjYjdlNzQwZTRlYTZhMDI3ZTgzMzAgbGVnYWN5LXRydW5rCis0MTY5IDQyMTBiMGRlZjNkNzgxNTA1M2E3MWJhMjFjY2E3NzY3YmFkOTY2NjkgbGVnYWN5LXRydW5rCis0MTcwIDFkZDMxMTUzNzA5ZGQ1YzYyNzhmNmViYmFiY2Y0MmYxMGYwNjQzNWUgbGVnYWN5LXRydW5rCis0MTcxIDQ3MGE1MTU0NWQ2YzRkY2VjYzhhMTI1ZjdlZmFmZTMwZGI5NGM3YWIgbGVnYWN5LXRydW5rCis0MTcyIGU1YThmNjQ3OTIxNjkxZDllMjg3MTE0MDYzNGZiMDA2MDFmMTQzYjUgbGVnYWN5LXRydW5rCis0MTczIGUxNjc2OWNkN2E5MDFlZDc0M2ZkMzJmODI3Nzk1MGJmZTFkNjAzZDQgbGVnYWN5LXRydW5rCis0MTc0IGNkZjQ0YzE0YzI3MDg5MGNiMGQ3NTQwZGY5NjI5YTU0ZGNlNjU3ODIgbGVnYWN5LXRydW5rCis0MTc1IGU4MGM3MTM5ZjUzM2U0ZTM5YWIxNGVmYTM4MGQ1Y2ZhNzRmZGJjMTcgbGVnYWN5LXRydW5rCis0MTc2IDZiMGYwZWYyYzEzMmM3NTk3MTk2ZjU2NWVjNDQ0ZDNmODhjNjFiNDIgbGVnYWN5LXRydW5rCis0MTc3IGJkMWQwYmE0MGY5MGNlNDI2YjUxNTZiYjdhZDNkOGE2OTZlNGUyMTIgbGVnYWN5LXRydW5rCis0MTc4IDdmMjBmNGI5MzM1ZmEwNzg2NTM0M2MxYmMyYzgyN2JiYmRmOTI4YTAgbGVnYWN5LXRydW5rCis0MTc5IGU4NjUxZDBlNGEzYzcxODYzNWU0NDAxMTBjZDEyM2U2YzhkYmQ1MDUgbGVnYWN5LXRydW5rCis0MTgwIDU4MWZlNmJmYzkwMjRhMmVhMDU0Nzc0Y2QxYTA5YjY1N2JjYTZkOTQgbGVnYWN5LXRydW5rCis0MTgxIGFmYzU3NDA2NGU2MmNhZTgyOTQ4NmQ3NzhmNjFiMzZjZmFhYjc3MjkgbGVnYWN5LXRydW5rCis0MTgyIDE3NTAwY2Y5NTM4ZjFhOWZlYWY2ODcyZWQ2MjBlNDk2YWQ4ZWE0ZTMgbGVnYWN5LXRydW5rCis0MTgzIDI1NDMyNmYyNDE1ZjQ2YmQwMmEyNTc5YTFlYTdkNTA4NDg0NzFmZDYgbGVnYWN5LXRydW5rCis0MTg0IDg2ZWQ1Mzg0NGIwN2NmNjQ3YjJkNzRlNGYyMzNhZGZjZjFiZWIxYjAgbGVnYWN5LXRydW5rCis0MTg0IDkwN2Q5ZTdiZjRiNTg5ZmMyZjAyYTliOTAwYzU4ZjQxY2U1NTRkODUgYWxwaGExMDAKKzQxODUgOTYwMGQzZDVjY2U3YmRkOTQzMDkyNzc0N2RlNmQ5M2I4ZGNjNzZjNSBhbHBoYTEwMAorNDE4NiBlZTJmODhhNGY5ZTJiY2U2MzlmYmRjMjViZDhkYzhhZDlkODlmNWYwIGxlZ2FjeS10cnVuaworNDE4NiAyODVmZTg5Nzk5Nzk5NTc2NTVlNzZkYzAyYmRiMDA0MDhiOGJhNjRlIGFscGhhMTAwCis0MTg3IDQ1OGQ4ZjNlZjMwNzU4MjdlMWZmZTRiZTQyODViNDNhYTkyMDllMDcgbGVnYWN5LXRydW5rCis0MTg4IDI5Yzc4NTE2ZWUzMzMzYzA5NWJlOGZiZGUyYjJiOTllZDU3YWViNmYgYWxwaGExMDAKKzQxODkgNzgzMWZmZGI3ODdiODNmMmQwNmZlMTdhOWIzYzZjNTkxMzIzOTNkMSBsZWdhY3ktdHJ1bmsKKzQxODkgMjFkN2Y5MzI4MTliNGRhOGVlN2RhYzliZWNiZGRiZWRjYzQwMGQ2NyBhbHBoYTEwMAorNDE5MCBlOTViMDcwMWM4YjU0ZjI0ZGY4YzkwYjgzMDc0MzU3NWVmZDdiZjYyIGxlZ2FjeS10cnVuaworNDE5MSA5NjAwOWRhZTlkNjI2MjZhYTRkMjM3ZmU1ZGQ0NWZlODFlZDdiMTM0IGxlZ2FjeS10cnVuaworNDE5MiBiZWRlMzhjNGE5ZjVlY2Q0MjEwNzM4ZTlkZDk1Njc5YzI4ZmEzNzE0IGxlZ2FjeS10cnVuaworNDE5MyBiYzExYzFmZjZjYWMwMzFmOTI3OTg2YjM0YjBhNGI4ZDkyZjU5YjMzIGxlZ2FjeS10cnVuaworNDE5NCA1OTUyNjRjMmYwNmQ0YTYwOTY2MTYyYWY1ZjQxMTQxYzkzZjcyYjhlIGFscGhhMTAwCis0MTk1IDZjMGUxMWI5NDAwOWEyNTIzOTkzOGY1MjNhNzJlY2RlNzYzNmFkMDIgbGVnYWN5LXRydW5rCis0MTk2IGQ1YjY3ZDJlYzdlZTAzMTAwYTY2ODM3NDBmZGQwZjdmZjcxMjI2MWUgbGVnYWN5LXRydW5rCis0MTk3IDM3MjkwM2I2MzcxMWE5YmRkOGFmYzM3NzM0ZWVjNDU4MzI5ZDM1OGUgYWxwaGExMDAKKzQxOTggMTk0MDg5MmQyZmUzYThjZjNiNzRjYzEyZDY3MDM5OGMzZTQ4MDM2MyBsZWdhY3ktdHJ1bmsKKzQxOTkgZTNhOWQ4MWRmMTg1M2M4YjM3NTc2MjZiMTdhODVhYTgzYWNiNGNmNiBhbHBoYTEwMAorNDIwMCAzZjdkZGI4YmIyZjYzYjczYWIwNzFmY2I3ZTFmOGE2MjJjNjUyMDYzIGxlZ2FjeS10cnVuaworNDIwMCBlN2I1ZmU3NmU1ZWFjYWU0YzY2MjhhOGUzZTI5ZmU4Y2Q0YzgxNGViIGFscGhhMTAwCis0MjAxIDgyODZhNjYyNTAyYmI2YjViMGFlMmIxYjJhNjViYTFjOGRlN2JhZGMgbGVnYWN5LXRydW5rCis0MjAyIGJjZWI3MjBlZTM2MmIwOTQ3ZTBhOGMxMjVhM2E3MWY4YzQ2ZDc2YmMgbGVnYWN5LXRydW5rCis0MjAzIDBiNjQ1NzI2OTU3ZTIzMjliOWM4M2FmMDhkYTcxNGJlZGJhZDZhYzAgbGVnYWN5LXRydW5rCis0MjAzIDQ2MzljM2FkODM0YjdjYzA4MWQ4MGQ4ZmZkZmZlZjBlZTUzZjdiYWYgYWxwaGExMDAKKzQyMDQgZWMyNWFhZDQzNzI0ZjA1NWEzZjgyNmUzOWRmNzI1NWRhOTE0Y2RmYSBsZWdhY3ktdHJ1bmsKKzQyMDUgY2JiNjJlZTg4NTRhNjQzZWM5NjY5ZmUzYzY1N2VhZGM2MWU2YTA2OSBsZWdhY3ktdHJ1bmsKKzQyMDYgYjU0NjhkODg2Y2I1NGEyMDM0YmQwNjU2NDZlNGJkOGRlNTA3ZDRlNSBsZWdhY3ktdHJ1bmsKKzQyMDcgYmJlOWVhNTU4MjYxZWU2ZGViZGEzZjgwMjE5NDQzZWZjMzAzY2RmYSBsZWdhY3ktdHJ1bmsKKzQyMDggNzhhMzY1NDA2YzRjZWJmODVkZGM3YjAwMWM2Y2EzNDRiNzk3YWFlMSBsZWdhY3ktdHJ1bmsKKzQyMDkgZjUzMzc5MWFjYzc3OTdlZjMzYTZmYWZmZmQzYzBlYjI4ZTM1OWRmOCBsZWdhY3ktdHJ1bmsKKzQyMTAgNjk3ZWU4OWFkZGZlMWU2NTVjNzJkYWFhNjEwZWViZTQzMTNjMWEwNiBsZWdhY3ktdHJ1bmsKKzQyMTEgYjk5NTc4Yjg3OGNlNmM0YzZmYmUxMTBhZTQwNGFkNDExZjUxYzM5MSBsZWdhY3ktdHJ1bmsKKzQyMTIgNGQ0MjFmOWU4MzczY2MwYTMxMDRlMWJlYjdkNjZiOWYyZDE5ODUwMyBsZWdhY3ktdHJ1bmsKKzQyMTMgNDhlNmIzMTlmM2U0ODBkOTliZjQwMzVlYmE4NzZlZmUwN2Y5ZjQyZCBsZWdhY3ktdHJ1bmsKKzQyMTQgN2EyZTc2ZWNiOWVmOTFkZjczYjBiM2QyMTM5MzdlZjYxNzY2MGZmYiBsZWdhY3ktdHJ1bmsKKzQyMTUgOWJjM2RiZjA4NzFkMjZlMDUxYWYyNTZhNjRlNDVmM2VhOTc1MjAzOCBsZWdhY3ktdHJ1bmsKKzQyMTYgZDM1MzVkMDYyNmI0NjgwMmI3NDg1YmRlOGZlNjMzMWFlYWIwOWI1ZiBsZWdhY3ktdHJ1bmsKKzQyMTcgOTQyYzRkMDk0YTBjNDE5YzU1YTQzZjQ5YmYzYmE1MmRjZTUxZGE4ZiBsZWdhY3ktdHJ1bmsKKzQyMTggYTA0Njg5Zjk5ODNlN2FkN2IxNmZlNjJmZWRlYmQ1ODUxMjc3NjVmOCBsZWdhY3ktdHJ1bmsKKzQyMTkgNmU5MTMwNDYwMjg4NjdhMGVlYjQ5ZDYyNzc0YWJjYzg3M2RjOThhOCBsZWdhY3ktdHJ1bmsKKzQyMjAgOTA3NjA1MzIwYTVmZDdhNGE1MmI5NzU4ZTk3ZmY3MDg5Nzg0OTdkOSBsZWdhY3ktdHJ1bmsKKzQyMjEgNjg4MTJiNzYzZTBlMmJhZDJiNzk0YzczMzZmMTc2ZDI3M2RiNDE4ZCBsZWdhY3ktdHJ1bmsKKzQyMjIgNmNiNzU5YzZkMTc5MGQwNmUyYzFkYTgzYzg5MDQxNmNlZGQ5YjM4YyBsZWdhY3ktdHJ1bmsKKzQyMjMgYjBkY2EyOTcyYjJiMThkOTNlNmFkOGRmMGNlNTc2M2MxZmE4NTcxNSBsZWdhY3ktdHJ1bmsKKzQyMjQgNTFjMmU1YTlmMzljZDE5MWYyYzRkYjBmZWVjMjY0OGIwZWU3MjYzNSBsZWdhY3ktdHJ1bmsKKzQyMjUgN2IzYTc2NzkyNGExYTllMzJiNTUwNzFmMTU5NzZiMmQwNTY5OGRmMyBsZWdhY3ktdHJ1bmsKKzQyMjYgZGY3YWE1NGFkY2QyOWJjMDFiNDU5MWViNDIzZTQxYWI5Y2JjNzBiMSBsZWdhY3ktdHJ1bmsKKzQyMjcgOWQzNjJlNWU0ZTc4OTkwZmFhZDhiNTkxNzRmNmJkNzhjMDUxOGM4YyBsZWdhY3ktdHJ1bmsKKzQyMjggMTdjODBhOTUyOTE0MzkzNmU5M2MzMzk4MzExNDg2ZTI5MzY1MTNhYiBsZWdhY3ktdHJ1bmsKKzQyMjkgNTI1N2FmODBlMTYxMDg3YzY5NTcwZWMyMzU3YzBiYmQ2MzQ4ZTU2NiBsZWdhY3ktdHJ1bmsKKzQyMzAgN2UwMDFjNDgxMGJiYzc2MmIwZjA1YTc3OWI5Njc3MTRkYWRkMGNmOSBsZWdhY3ktdHJ1bmsKKzQyMzEgZmZkZmFmMWIyNGQ1NDBjY2QyOTY5ZjM1OTY1YzQ1NjM4ZDM0NTEyMiBsZWdhY3ktdHJ1bmsKKzQyMzIgOThhMjBhNDBmNjEzYjEzZGZhN2E1NGFlNDBjMzA5ZjVkMjNmM2RlNiBsZWdhY3ktdHJ1bmsKKzQyMzMgNzZjYzg1OGUzMzkxNTgwZDE1NWE1OTE3ZGEzOTMwZTJjMzEzNmNlMyBsZWdhY3ktdHJ1bmsKKzQyMzQgOTJkZjMwZGY1ZDc3OWU4MjJjMDBjZGFjMmI0NTY3NGU5MDc1MzNhNSBsZWdhY3ktdHJ1bmsKKzQyMzUgMjA4OTc4MTZhNGI2YzhkZDY0MThhNjRlYjllYTU0YTBhYjBkODYyZCBsZWdhY3ktdHJ1bmsKKzQyMzYgMWMyOGYxOTM0YTExZWVhNGI2ODI4ZDVkM2U4ZWE5Njc1MmUxNjY0YSBsZWdhY3ktdHJ1bmsKKzQyMzcgYTNmMTk5ZThiYWM2ZjAwMzIxNGIwMGQ2MGNkY2JiMGQyMWVhODFhNyBsZWdhY3ktdHJ1bmsKKzQyMzggZGQxNjdiZmQ3YTA4NmE5ZWU2NjFhZmFiMDgwNWE0M2Y0MmVjODdjMiBsZWdhY3ktdHJ1bmsKKzQyMzkgNzcwN2I5NzA4ZjZjYzdjM2Y5ZWJkN2Q0NjkyYmEwNmEzMDM2NGIxOSBsZWdhY3ktdHJ1bmsKKzQyNDAgY2I4NGRkNTFjMmFhMzEwZTViYWU3MWQ5ZGI0ZTc0MWNhMGVlNWJmZiBsZWdhY3ktdHJ1bmsKKzQyNDEgNTZhOTg2ZTQ5ZjU2N2NkNjg0ODc4NGJjNWI2NDUwZjAwZWVlMmMyMiBsZWdhY3ktdHJ1bmsKKzQyNDIgNDNhZTdmY2Q3ODM1MmEyZjdjZTI5NWFhZGE3NGRlZWQxODUxNzUzOCBsZWdhY3ktdHJ1bmsKKzQyNDMgMzYyMTRjODYxMTQ0ZGQ2MmEyMGFkNGQzYjI3YjljODI5M2Y2MDQwZiBsZWdhY3ktdHJ1bmsKKzQyNDQgNTM1YWNhNmZmN2U5MTM0NzE4YTAyYjRmNGFmYjIyYmJlOTc2M2IxNSBsZWdhY3ktdHJ1bmsKKzQyNDUgYTU4NGI0YmJiYzU5MzRjMWFlNDFlZDUyOGFlNzkyYzEwNGRmNTJhNSBsZWdhY3ktdHJ1bmsKKzQyNDYgNjY4NTA0ODQzZDBmNDE4OWM4NDUzODJkMGJkNGJjZGM1NzgzMmI0YiBsZWdhY3ktdHJ1bmsKKzQyNDcgOWI1MzBiYjU0NjQyYmExODZiYjU3NGI1ODk2MDEyYjIwMDkzNzRkZSBsZWdhY3ktdHJ1bmsKKzQyNDggZmE4YmJkMDlmMmU2YjZjNmU5NzQ3MTk3YTI4MzhjZTg3N2M0NDZhMSBsZWdhY3ktdHJ1bmsKKzQyNDkgYjcxMWM5MDEwMjMyOTMyNjliMWRlMTY3ODFmYmJlMDVlNzg5YTAwZCBsZWdhY3ktdHJ1bmsKKzQyNTAgYjE2N2UzMzUwNDkxMjBlYzdiMGZjNWU2ODc0NGM1ZTc2ZjYwYTg0YSBsZWdhY3ktdHJ1bmsKKzQyNTEgZjA3YzRmZjBmNzk0Njg2NzIwZjBlMTliZTczNTVmNGZiNDNlODkxZSBsZWdhY3ktdHJ1bmsKKzQyNTIgNjA2NjAzNDFlZTEwNzFiNDBmZWY5MzVhM2MxNjYxMGU1NmU4MmVkOSBsZWdhY3ktdHJ1bmsKKzQyNTMgYWQzZjFkMzYyYzE0MDZjZmMwMjJhNDBhNzBlYTk4MDdlYjNhNjBjYSBsZWdhY3ktdHJ1bmsKKzQyNTQgMTQ4ZWUyYWE2M2U2ZGVjNTkxYWM3NDUyMGZhZWMxZDFiMTJjZTdkOSBsZWdhY3ktdHJ1bmsKKzQyNTUgYjg0MDI5NmI5ZTA1OGQyNzRhODkwMDQ0ZDhjYWQ1M2NkZWUwNzI1NSBsZWdhY3ktdHJ1bmsKKzQyNTYgZmFmYTVkYzgxMDBmODQ5YmZlNzFlNGYwNjgyMGY4YjM1NDk5MmYwNCBsZWdhY3ktdHJ1bmsKKzQyNTcgYjQwOGQ2YTYzODE5NTIzOWU2MjdlN2EwNTgxOGVkYjQ4NmQ3ZjdkYSBsZWdhY3ktdHJ1bmsKKzQyNTggNWI5MmEwODM5MzRkYmZiMzk0NzdmNzRjMDY0YzU2MGNjNTE3ZTAxNCBsZWdhY3ktdHJ1bmsKKzQyNTkgZjJjZTMxOTFmYzlkZTM4YjQ2MWJmNWJiNDRlOTNjOGYyYTJhNmFlNSBsZWdhY3ktdHJ1bmsKKzQyNjAgNzgyNTA5ODEzZDU3MmI4NmY5MGNjNGNkMjdjYmE1YzA3OTNlYzRlYiBsZWdhY3ktdHJ1bmsKKzQyNjEgNmNmZDQzZDVjMDc0NmIwZWM4MGUzNGU0ZGE1OWYyOGU3NzBjNzFhYyBsZWdhY3ktdHJ1bmsKKzQyNjIgZDhkOTQxZmFmNTExMGIyMzE2ZDIzN2Y5MzgxYTI0YWNmZmMzZDhjOCBsZWdhY3ktdHJ1bmsKKzQyNjMgZDg5MmFjNGI0ZmI5OWUxNDkxYTI3MDUyMjQxMGYwYzU2YmU5Yjc3NSBsZWdhY3ktdHJ1bmsKKzQyNjQgZWE1YjEzZDExYTEzMDViYjQwNGVkMGNhOGEyOGMxZGY4MmNjZWNjMCBsZWdhY3ktdHJ1bmsKKzQyNjUgMmQ1YjM2YTQzOGFiOWNmMzg1OGI3ZDcwYmQ1OTYyMjQ5ZWZjYTM4MSBsZWdhY3ktdHJ1bmsKKzQyNjYgYzQ3ZDUyNmE5NGQ5MmUzOGU2NjZlOGNmM2UyMTMyNjcxNWMwNDE4MCBsZWdhY3ktdHJ1bmsKKzQyNjcgMDQwNmEyMDhjYTVkM2MxMzdiOTVkNmRiYmE2ZWMzZWNjZjQyYWY0OCBsZWdhY3ktdHJ1bmsKKzQyNjggNjM1M2ZlMjVjZGNlNGJlNTNjOTU3OGVmYzA2Y2RhZjVhNTJjZjg3ZSBsZWdhY3ktdHJ1bmsKKzQyNjkgM2I0NzAzMTczY2FmODY2NGZlMTRmMDA2ZGEyZTllNTJlOTQ0ZGE5OCBsZWdhY3ktdHJ1bmsKKzQyNzAgMjBlMWQyOTZmZGNjODZiY2ViODJkNjM4N2YxNjQwOTQ0MzA4MTNiNiBsZWdhY3ktdHJ1bmsKKzQyNzEgYTcxMGZiMDAxYTNmYjQ1MTNjMjFmYjEzNGM4ODA0Yjc2NDYxMjQ5NSBsZWdhY3ktdHJ1bmsKKzQyNzIgYTI2YjMxZTE1OWJlYzQxZDc4Yjk2ZmYzZjViYTdmMDI0ZjM5MDIwNyBsZWdhY3ktdHJ1bmsKKzQyNzMgY2U1NDQ3ZGI4ZjUzN2UyYTA0YmJhMzUwZWY0OWUzZTQ1NDQ1MGY1YSBsZWdhY3ktdHJ1bmsKKzQyNzQgNDA1OTRmODBhYjNjMmYyODllMjA5ZjY5NTRmOTBlNGIxYmVlN2VlMSBsZWdhY3ktdHJ1bmsKKzQyNzUgNzZkMGYyYjNiOWVlNzExNzllMGFjZDUyMTQ5MDQxMWZiYWUyZTk2MSBsZWdhY3ktdHJ1bmsKKzQyNzYgYTZlZjJjOTdjNzc2MWVkMjEyNzBiYTdhYzVkZWUzYWVmNjNlMTEzOSBsZWdhY3ktdHJ1bmsKKzQyNzcgYjExYTA2NjhiMTgxY2NiYjQ1NmRiNzg0ODIyYjk4YmQ4MzRjOTI3MSBsZWdhY3ktdHJ1bmsKKzQyNzggNzkzMWRlMDFlNjkzN2RlNWE0ZDMzMWQ0MzU1NWIwZjJiM2U2MjdhMCBsZWdhY3ktdHJ1bmsKKzQyNzkgY2U4OTdlNzUyY2E0YWM1NTE1MzFhMjAyMmQyOWY3MTQwMzhkNDlkOSBsZWdhY3ktdHJ1bmsKKzQyODAgZjVmM2RkZmVjM2M3YjE1Y2M5ZGNjYmFmMTFhMWM1MTdlOTc2ZWIxMyBsZWdhY3ktdHJ1bmsKKzQyODEgYjQ2NGUxZDBiMmZiNDM0YzhmNmI4OGIyNDI1OGMyMzZmZmFhNzU2MiBsZWdhY3ktdHJ1bmsKKzQyODIgYzFiMGQ3ZWVkOWZkZmFjNmMwYjRkMDk3NTdkMjU4MmQ3MWIxYjhmNCBsZWdhY3ktdHJ1bmsKKzQyODMgYzQ1MzZkOGFmN2I1ZDRlODA1ZjlmNWRmYWQwNjkwODYxZWQyMDhjMSBsZWdhY3ktdHJ1bmsKKzQyODQgMjE2Yjc1NTUxNWU2NWQwMWVkMjQxN2NlYTllNzBhYzRhNjhjOWRkYiBsZWdhY3ktdHJ1bmsKKzQyODUgNzllNDIwODA1YzY3MjI3YjM4OTQwZGI1OTQwMWM0MjE4NWUwYTVjOCBsZWdhY3ktdHJ1bmsKKzQyODYgMzlhNGMxNWFjYjMyZGJlMjEwY2U4YmExZjAzZmNiNThhNTFmYjk3MSBsZWdhY3ktdHJ1bmsKKzQyODcgZjhiYWFiNWMwMTY1Mjg1MDVkODE3YTZhOTdkZmI3YWY5NDg0ZTZlOCBsZWdhY3ktdHJ1bmsKKzQyODggZDc5OTg4OWMwMWUzNWI5M2U4ODRkOTcyYzZlYTcyNjFiZjc0MTQ2NiBsZWdhY3ktdHJ1bmsKKzQyODkgMTIwM2YwNjI5NTI3NTMxYzgwYjU5NzQxOTY2ODZkZmFhODBlYjhmMiBsZWdhY3ktdHJ1bmsKKzQyOTAgODczNjRkOWUzNDQ0ZTk1ZjQ3YTQwN2E4MjU0MDY1NjI3MTlkMzhkNiBsZWdhY3ktdHJ1bmsKKzQyOTEgNWY2YWNkMWFiNWM1MDNmZDNmZTkwOGIxMDc1NDVjYzhjMmM4YjkxMiBsZWdhY3ktdHJ1bmsKKzQyOTIgMWY0YTg2ZGJjZDc5MDY0MTdlOWE4MDM0MTM5ODBlOGY0ODEyZWYxNSBsZWdhY3ktdHJ1bmsKKzQyOTMgYmZkMTE2MjBhMmQ4MWU4MzA0ZjQ4ZjY1NTIyYmI3Mjk0ODkwMTA0ZSBsZWdhY3ktdHJ1bmsKKzQyOTQgMjNmMDNlZjAwMzYxYmM3NzE3Nzk1YjMxZGRjOTMxNTBhNTQ0MmI1NSBsZWdhY3ktdHJ1bmsKKzQyOTUgNjVjYzcyN2YxNDM2YzA3OTcyN2ZmZGQ3MDkxNmNiNDU3YjVkYThhOCBsZWdhY3ktdHJ1bmsKKzQyOTYgODI5NGJiZDk0NTM1MGQ0MWQ0ZWFlMzZlNTEyNTg2M2RiMzQzNmZiNiBsZWdhY3ktdHJ1bmsKKzQyOTcgZDFlNmM5YTY0YTU2Mzg0MWY2MDE3N2FjOTA3NzM5Zjk1M2YxNTYzMCBsZWdhY3ktdHJ1bmsKKzQyOTggMDk1YzFjYzdmMmJiYjIyZmYxMTZiMDMzN2FjM2JkMmQyZmUzN2NkNiBsZWdhY3ktdHJ1bmsKKzQyOTkgNTI0M2ZiMTg3ZDM2YzYwYjAxMjEzM2ExYTVjNjYwZDdhMzVhMTI2NCBsZWdhY3ktdHJ1bmsKKzQzMDAgMGQzMTg0NzVmOWUzNzE5OGI1YTMyMGM4ZTEwZTY5YTc1MjIzYjE0YyBsZWdhY3ktdHJ1bmsKKzQzMDEgYjcyNDU5OTQwMWZmNzNmYmI4ZDU5NWI5YjNkNjMwOTM2MzRiNDk5NCBsZWdhY3ktdHJ1bmsKKzQzMDIgNmUyM2FmNjQ1YjQwYmRkOGUzMWVhMGNjNGM3MmQzMGVmNzc4ZjMxNSBsZWdhY3ktdHJ1bmsKKzQzMDMgMWZjNGRiNzkxNDZhZTVlZjU3N2MwNmZiYTVjZGY3YzU4ZDJlZTQ3ZSBsZWdhY3ktdHJ1bmsKKzQzMDQgMTQ1MzkxZGYyNjU3OWUxYzZmYzQ0MTA4MDhlYTZmYjkxNDk0NWU1NyBsZWdhY3ktdHJ1bmsKKzQzMDUgMDlkZTcyM2IyNTk2ODI2NjVjNDY2MDIyYzAyMjAyYzFmYzFmZTFhZiBsZWdhY3ktdHJ1bmsKKzQzMDYgOWQ0YWRkNDJlZTIyZmY0Mjg5M2VhZjM3NzAyODA4YTI3NTE1N2Y3MSBsZWdhY3ktdHJ1bmsKKzQzMDcgMjc4NmFjYmE2Y2VjMWNmYjlhNTk3MTFmNGNlNjEzZDAyNTM2Y2NhOSBsZWdhY3ktdHJ1bmsKKzQzMDggOWRiZGI4M2Q0MTc4ZjM5Mjc1OGVjOGFmOGQ0M2JjMTNjMjQ0ZjM0MSBsZWdhY3ktdHJ1bmsKKzQzMDkgMTgyMjQ2NWEzNWI4MGNmY2U0MjgzODJlNzU3YWJiNGIyNzc0MjQ2MyBsZWdhY3ktdHJ1bmsKKzQzMTAgZTE1Zjk3NjFjYjAzNWJjYjYxZDYyNGZjZWFhNTMxOWRhNTBlZjgzZiBsZWdhY3ktdHJ1bmsKKzQzMTEgMGIwODE5NmU5ZmY2MTZlYzM3NDYzZGYzMzYyMjEzNzc3OGQwM2IyMiBsZWdhY3ktdHJ1bmsKKzQzMTIgNTRmZGM5YTk1ZjQ4OTA5M2ZmNWVlMzA4ODliOTZlZjY3MzZlNjg3MiBsZWdhY3ktdHJ1bmsKKzQzMTMgNzg4OThiMDRhNjViZWYxZTYyMWZmZjk1MTc1M2Y1NzMwNDk1NzRkNyBsZWdhY3ktdHJ1bmsKKzQzMTQgZDQwNWUzZThmZmQzNDlhZTc2M2ViN2I4Y2ZkY2Y0ZmI0YWQyNWQwZiBsZWdhY3ktdHJ1bmsKKzQzMTUgZWYwOTQ2NTYwNjIwYWNiNTg3OTg5MmZmYTYxZDRiNTEzM2QyOGQ4OCBsZWdhY3ktdHJ1bmsKKzQzMTYgODU1Y2VmYmIyNzE4NjMxMjlhZDFlZDk5YTA0NGZjOGY0MmEzOGY3MiBsZWdhY3ktdHJ1bmsKKzQzMTcgYWFmMWUwNWU2ODQyZDhlZDgzNTU5OGU1YzdiNTljODI5NDJkNjlhNyBsZWdhY3ktdHJ1bmsKKzQzMTggMjBlNjA3MTQ3ODhjNWRhN2E3Nzk5MmY3ZDI1OWUzYjhlMzM5ODk1NSBsZWdhY3ktdHJ1bmsKKzQzMTkgOWM1ZDMzM2QzMzAwZTkzMjQwZTE1ZmUyM2E1MDI2ODZkYTY3YzA0OCBsZWdhY3ktdHJ1bmsKKzQzMjAgNzU4YzEzNzRmMzAzNDgyZmNmYzZmM2ZkYjNiMzQxMDA3ZWEyN2RlMCBsZWdhY3ktdHJ1bmsKKzQzMjEgNjNhZDI4OTM5NzgxYWE4ZDc1NzllMDg2YWNjMmQ1NzY1NjZhYzg0OSBsZWdhY3ktdHJ1bmsKKzQzMjIgMmNlZGU2MWU5YjFiYTRlYjhiYTQ4OWZiNTQwMWQzMmMzMDI1NjU5MiBsZWdhY3ktdHJ1bmsKKzQzMjMgNjE3MzhlZDZjYzEwYzQyOTUyYmE5MmZlMTIxNzRjM2E2M2Q0YmRmYiBsZWdhY3ktdHJ1bmsKKzQzMjQgMTBhMTI0NzNlZTkzMWNhZDI0YzczZDVmZjcyN2YxNDRlMWRmNTY5MCBsZWdhY3ktdHJ1bmsKKzQzMjUgMzJlNmMzYTY3MWQwMGY3ZjBiMTZhZDllMTEzZDQxNzEzZGYwMzZmMCBsZWdhY3ktdHJ1bmsKKzQzMjYgOTA4MWJiN2FjZDUyOGFlOTM0YzU4MmMyOTgwMTYzYzcxZWNiMTcwOSBsZWdhY3ktdHJ1bmsKKzQzMjcgMDc0YWEyNjM4MjZiNDY2OWQwZTI0NGVhMjA1ZDQyM2UxMmJhZTdlOSBsZWdhY3ktdHJ1bmsKKzQzMjggOGM5Y2MwNTRjNWVkY2U2ZGVhZThjNDFmN2Q3MzJiZDk2MTIxZjdkZCBsZWdhY3ktdHJ1bmsKKzQzMjkgY2M1YmY2YmU4MWE1ZDI2ZjgzZDI5NjhhYmQ5NmE0NDBiMjhmYTAwYiBsZWdhY3ktdHJ1bmsKKzQzMzAgMzJkMDA1ZmFmNWZjZDBiZTc0MGEzNTk0M2EyOTM1ZjI2MDA0NjUyZSBsZWdhY3ktdHJ1bmsKKzQzMzEgMjdkNGYxZjkzNDZjNTc0Nzc2NzQ3MjgyNjg2ZjIzZjgxMWUzNmMxNSBsZWdhY3ktdHJ1bmsKKzQzMzIgOTFiZmIyNzcxNTU0ZTgxN2FlMDkzZTdkMWM4NWUyOWY5M2IxN2U2ZCBsZWdhY3ktdHJ1bmsKKzQzMzMgMDVmYjlkZWMyYzljZjFjNGY4ZTZmNDVlMDFlMmJkNWJjZTY3OGQ1MSBsZWdhY3ktdHJ1bmsKKzQzMzQgM2E3MGU5YzBkOWY1MTFhNTdhZTQ0ZWYwNGU3YjQ4NGM1NTk0YjY4ZiBsZWdhY3ktdHJ1bmsKKzQzMzUgZjg0YjY0ZGYwOWMzZTYyOTU1YWU5ZTZkYTE3YzE3Zjg0MTIzZmE0YyBsZWdhY3ktdHJ1bmsKKzQzMzYgNDIxNGE3NTgzZjJiYTg4YjgwZTRjZWIyMDJiMTJmMmEzY2JiNDQxNSBsZWdhY3ktdHJ1bmsKKzQzMzcgYWZiZjExODZjODk3NGEwZGViZjZiZjdiMDRjY2UyZGM1NTkxMTc0ZiBsZWdhY3ktdHJ1bmsKKzQzMzggZDNkZTJjYWQyYzY4NGMxNjAzNWE0OTg3MGQzODBkYzgyZmQ5MDg5YyBsZWdhY3ktdHJ1bmsKKzQzMzkgYWM2YTlmOTBmNmZkNDhkN2MyNTQwOGRhMDY2MGFkZDYzMDU4Mzg2NSBsZWdhY3ktdHJ1bmsKKzQzNDAgZTdjNmExODM4MWQ5ZTdhMzA1Yzg0ODgwYzFmYzQ3MTJhY2E3MjI4OSBsZWdhY3ktdHJ1bmsKKzQzNDEgYmU5NTZiMWVmYjk3Y2NhYTc1ZTFhYTk3YmM1ZDc5YzFlMWVkZGI0YiBsZWdhY3ktdHJ1bmsKKzQzNDIgNGUxY2VhZWUyOTYzMjdkZWZjZTRhYjQ1MDkyODMyY2U3MGJiN2U5ZCBsZWdhY3ktdHJ1bmsKKzQzNDMgYjdkZTY3ODVjOGFjN2Q5NzI0MjAyMjQ2YTQ2OWM3NzYzYzIzNzNhZCBsZWdhY3ktdHJ1bmsKKzQzNDQgMjRhZTdhZjQwYTA5NjBkZWNkZTE2NzgzZjYzNDE4ZDJjZGZjN2FhMiBsZWdhY3ktdHJ1bmsKKzQzNDUgZWVjMGRjNWFiYTYwMTFiYWJhNTA4ZmNiNTYzMTNkNzg2MDIyNTA4NiBsZWdhY3ktdHJ1bmsKKzQzNDYgYWJhNTE2MjEyNDRlN2IwMTIzOThhYWEzNzY2ZDdiYzE2Y2FhNzc3NCBsZWdhY3ktdHJ1bmsKKzQzNDcgMmM4YjRkZjIyYmMyZjA0NWMxMWQ1NjllOWZkMjlhMzY0Mzk3ZTBiNiBsZWdhY3ktdHJ1bmsKKzQzNDggYzIzNTBjODdiZTNmY2M3OWU5NzUxYmQ3MTkxNWQ1ZDE5MGQ5N2I2OSBsZWdhY3ktdHJ1bmsKKzQzNDkgNjU0YWE5NjRkYzI2M2Y5ZGJiZTA1ODQ2NTNkMjllZTNlMzhlNTY0YSBsZWdhY3ktdHJ1bmsKKzQzNTAgM2ZiZGE4NzY4ODU1Mjg2MmNiYjY5YTJiNWNmZTE4NmEzOGJlNDhmMiBsZWdhY3ktdHJ1bmsKKzQzNTEgMjBmMTdiNWFjY2JmODIwMGI4NzJhOTBjYzAyMzUwNTYxNWViM2E5ZiBsZWdhY3ktdHJ1bmsKKzQzNTIgYTY3NzZhNzg4Zjc0OWFlMWQ5OWJhNTI0MjFmNTVjNWI2ZTA4NTQ0NSBsZWdhY3ktdHJ1bmsKKzQzNTMgNWJhZjExMzVhMTNkM2Y1YTYzMmI3YzcwMmMwM2YzYzA1YmU0NGM2NSBsZWdhY3ktdHJ1bmsKKzQzNTQgMjU5ZTY5YWEwZjE1OTg4NzMwMDFiMGE5MGQ1MjQwYjVlODFkZWQ5OCBsZWdhY3ktdHJ1bmsKKzQzNTUgNTNkMTdjMDRiNDJmYjBmMzQ0OWI0Yjg1NjJjZGJmODU1Njc0Y2EzMCBsZWdhY3ktdHJ1bmsKKzQzNTcgZTQ1MGJkNDM2MzFhOTg0Mjg2ZWI1NDAzZGU2OTFlYmVkZDQyYTdhZiBsZWdhY3ktdHJ1bmsKKzQzNTggNjEwOTA2OWQ1NjEyZjAzODhlNDAyMDhkZDg4MmVkNTQ1N2NmOGQzYiBsZWdhY3ktdHJ1bmsKKzQzNTkgNjFjM2MxYTJmZGI0NDNmMmFlMWUwZTY3NzYyZjFhZWY3YjE4NTI5MyBsZWdhY3ktdHJ1bmsKKzQzNjAgOWQ5ODEyZjI3OThiNzNhNjUwZmExY2MxMjExNDJmNTFkYWZjZDQ2ZCBsZWdhY3ktdHJ1bmsKKzQzNjEgYmQ5NDA2OGYwZmQwMzc1NDBhYzUwNGZlODE3NDIzMmNhOGYyM2M0ZCBsZWdhY3ktdHJ1bmsKKzQzNjIgMDQzNzczODI3OWE4ZDY4MDc5M2ZkZGY5ZDVhYmFkMWFkNzIyMjNjZiBsZWdhY3ktdHJ1bmsKKzQzNjMgMGMyMzIxOTRhNjRmMTBjNzFjNjE3YTcyYzY5YTRjOGRlZGFjMTE5MiBsZWdhY3ktdHJ1bmsKKzQzNjQgMzU5NDdmNjA1MjhlZDAxNTdlMjE1MTRmNTU0MDM4YmUyNmRkMGUyMCBsZWdhY3ktdHJ1bmsKKzQzNjUgYTdmMjY5NjEwZWMyZDc5ZjdmZDQ5ZDU0OGY0NjIzODg3MmQ5NmJhZiBsZWdhY3ktdHJ1bmsKKzQzNjYgYWRhMTlhYWFmOGMwYzhlNTA3MWI1N2E0YmE2OTVkZjQzMDhiNmZjOCBsZWdhY3ktdHJ1bmsKKzQzNjcgODYyM2FhMzkxNWRiNzAyYjEwMmNjNzcyY2IzMzY2ZWFjMjk3MDM0MCBsZWdhY3ktdHJ1bmsKKzQzNjggODkzNDEyMTAxMjk2OWYwM2QwZThjN2UyYjA0MzJlZGRkODVhOTFlZSBsZWdhY3ktdHJ1bmsKKzQzNjkgODA4MThjMTA2ZTNlNmY0ODc3YTg0ZTQyNmMwNjFjN2E3ZmJiNTFiMyBsZWdhY3ktdHJ1bmsKKzQzNzAgZTEyNWY1MDIxZTY3M2QxNDVlM2VjZDhjNmRlYzk4ZDNmNmM4N2FmOCBsZWdhY3ktdHJ1bmsKKzQzNzEgMDE0YTFmYjljNjQ2MzQyOWFjNThhYTQ3YTYzOGQxNjJjZmY2YmI2YSBsZWdhY3ktdHJ1bmsKKzQzNzIgZjM5ZDQzNzI4NzcyNGU1NjI3OTZhYjY1MTE1MGZmODFkMjMwZjRjNiBsZWdhY3ktdHJ1bmsKKzQzNzMgZTBhZTZmOTViY2ZiNDE5Y2UyNzM4OWY5ZmYyOTNlYTJmMjQ4YWEzYiBsZWdhY3ktdHJ1bmsKKzQzNzQgNWYzM2NhNTIxNDUyMTI1OWUzNWZlYjAzYWY5NTZhZTBmZWE3ZDkwYSBsZWdhY3ktdHJ1bmsKKzQzNzUgMjc1OTUxYjA4NjA4YzljYzRkN2JlZGE0NzQ1OTMwNmNlZmViNjQwMCBsZWdhY3ktdHJ1bmsKKzQzNzYgMzg1MDcxM2Y2YWVhZTY5MDhkNjRmY2IzODE1NjI5NjYwZDFiMWFkMSBsZWdhY3ktdHJ1bmsKKzQzNzcgYzEwODhkMGJiNTYyMzA2NmNlNTExZTA4NzBhMjBlMTdmNzU1NDgyMSBsZWdhY3ktdHJ1bmsKKzQzNzggNThiMDQ2Nzk1MGQ4MjIzNjhkMGViYjA1YWM0MDUzY2IyMmNhMDY0ZCBsZWdhY3ktdHJ1bmsKKzQzNzkgYTFhYmE0ZDQ1ODkzYjBhZGE5NjI1MzMxNjYzNzU0YThjMGIyODBkMCBsZWdhY3ktdHJ1bmsKKzQzODAgZWE5ZTg1MzNkNmMzMmE5M2YwZTRhMzE4MTkxZWRjNDMyODQ3OTQzYyBsZWdhY3ktdHJ1bmsKKzQzODEgZTU2YWZkMDNjYTdmYzk0NjA2ZDJkYWViNDA0ZTE4MWM0YjZhOTkzZCBsZWdhY3ktdHJ1bmsKKzQzODIgYThiN2VlMGU1NzJkYTdkZTAwMGUzNGUzOGM3ZWQ0ZDQ4ZjMwY2ZiYSBsZWdhY3ktdHJ1bmsKKzQzODMgZjA3ZDY2YzE2MmNiZmZiNjAzYWNjMmY4Mzg5OTljOTEzZmYzMDM2ZiBsZWdhY3ktdHJ1bmsKKzQzODQgZmFjYTdlMzI4YmE3NDljMTNlZjU2YzA3MzYxNDE2MzNmNTYwYzVkOSBsZWdhY3ktdHJ1bmsKKzQzODUgZTNmZjllMmEzZWI3YWY1ZjE2ZjBmZThkMzk2YTdhM2M2NzkwYmVmZCBsZWdhY3ktdHJ1bmsKKzQzODYgNWJjYWFlZDkwMmY1NTBkYWYyZWI5OGFiNjA1NTdmMjg0MTc2YThmYyBsZWdhY3ktdHJ1bmsKKzQzODcgMjM0ODE3NjUyZGIwNmMyZDRmMTU5YWExNzVmNmE1ZWI1Njc1YmIxYSBsZWdhY3ktdHJ1bmsKKzQzODggZjNhZTdjMTdhYzA4N2Q5YTAwZmIwMWMwODdjOWU4ZmY5MjhhMWI2ZCBsZWdhY3ktdHJ1bmsKKzQzODkgZDlhM2UzMGIyZTQ3M2M4Y2NhYjYwMDViNmIzMzMyNzc3YTg4MDc0MyBsZWdhY3ktdHJ1bmsKKzQzOTAgNDVjNzMwMThkZDAxZDcxY2YzODNhM2EyNGQ1ZDg0NGVhZTU5NjYyOCBsZWdhY3ktdHJ1bmsKKzQzOTEgMzIwYmFlYWI3ODdhYzlkNzA1NGNmMDlkMGQxZTBmMjgzYjNjN2Y2NyBsZWdhY3ktdHJ1bmsKKzQzOTIgMmI1ODFjZTQzZjRhMzczMzk4MjllZjZlYmE1NGFjZmNhMzU3NzIyMCBsZWdhY3ktdHJ1bmsKKzQzOTMgOTNkZTU3NzU5NjZlNTU5ZWY2YzJjYmI3NzY2YzMwNDA3OWNhNzI3MSBsZWdhY3ktdHJ1bmsKKzQzOTQgOGI4OTdiN2YzYWRlOGZjNGQ5NjU0M2NiZmM1OTcwMzBmYmQyMWIyNyBsZWdhY3ktdHJ1bmsKKzQzOTUgMGE5MTUyZjg3MTExNjAyMzgyMmFmMGQ2ZTdlZWZlNjc4YmQ5ZmYxNCBsZWdhY3ktdHJ1bmsKKzQzOTYgODVmMWQyYmVjNjMyY2EzODlhZDA4YzQxNDExYjkwZTBjYjNlMWYzMCBsZWdhY3ktdHJ1bmsKKzQzOTcgMzE4NzNiZDZmNGE4NzE2OGU0NjhiOWE1ZTVlNDU5Y2JiMGE0OGRmMCBsZWdhY3ktdHJ1bmsKKzQzOTggOGU4ZmRkY2JkZmQyYjI1ZTRlMTM3NjFhNThhNjRiODM5MGUxZGQ0MCBsZWdhY3ktdHJ1bmsKKzQzOTkgNGJlNmVmMWMyYzFkZjVlMWQ4MzRmNWFkZmUxNmI4NjkyODFhOWE3NyBsZWdhY3ktdHJ1bmsKKzQ0MDAgYmJmODJlYjRhNmQ5ZDMzZjAxMDgwMGUxYzczNGJiNWQ0MTM5ZWRkNiBsZWdhY3ktdHJ1bmsKKzQ0MDEgYmEwOWQ5MGY0MmJiMjYzMTc0YTZkMGE1M2UzMTA0ZDQ2ZmVmM2UzZSBsZWdhY3ktdHJ1bmsKKzQ0MDIgOWJjYWM4ZGEwMjYyNDQ1YzVhYzA4NTk1YThjNDNhYzQxYjAzZWFiMCBsZWdhY3ktdHJ1bmsKKzQ0MDMgMzE1ZDljODI4MTc3NGQxMzE0ZTA5ZjlkMWIzMmZhNWYzYWU4YWY0MiBsZWdhY3ktdHJ1bmsKKzQ0MDQgZjZiNGU3YWNjN2EzNzRmYTMwYzU5OTg1MWIzMzg0YTk2Y2M2NDU0OSBsZWdhY3ktdHJ1bmsKKzQ0MDUgZTE1N2M4MWQwMzU4OWQ2OTQ5NzZlMTRmNjc4ZjM2NjIxMDc5OGRlZiBsZWdhY3ktdHJ1bmsKKzQ0MDYgYjJjNTZlMDRjYjgyOTA1ZTQ2ZTU4M2U1Njc4YWU3N2U5NzIwOGRkOSBsZWdhY3ktdHJ1bmsKKzQ0MDcgNGM1NzFkOGMzY2UxM2JmZjdmZTUwMTg2MGNhYWYyOGY5ZjIwZDY4MSBsZWdhY3ktdHJ1bmsKKzQ0MDggNDRlOTQxNTI0NWZiMDljZWY1ZjJhMWZiZGZhMWE1YzUyZjM1MDIxYSBsZWdhY3ktdHJ1bmsKKzQ0MDkgODgzYTIyODE3NDcyYWVkMDU4MzZhMDViNGIwOWI2NGM0Y2ZmOTgzZiBsZWdhY3ktdHJ1bmsKKzQ0MTAgNzYxMDUxYWE0MzRkYjFmMDlkYjg1NGNlN2YyMGJiMmQxYTVlYWY3OSBsZWdhY3ktdHJ1bmsKKzQ0MTEgMzhkY2IwOTBmNDhiMDYzODU3Zjg5MzBlYjhmMTc0ZjJmNmU5NTcyZiBsZWdhY3ktdHJ1bmsKKzQ0MTIgNTQ1ZTIzNTgzMWI3YmI0OWZiY2Q3OWFkNmFiZjZjNWNjMThmODdiNyBsZWdhY3ktdHJ1bmsKKzQ0MTMgNzEwMGFjYjBkMzYzZDdlYjc4ODA3Y2Y3OTJiZDliZDhhZGFhNDIwNyBsZWdhY3ktdHJ1bmsKKzQ0MTQgNDI3YzYxOWNhNWQwNzMxOWI2ODFhNzEwMmNjYzdmNzFiYmY5ODZlZSBsZWdhY3ktdHJ1bmsKKzQ0MTUgMDU4YTQ2ZDhmYWY3NjU4ZWExYTI5ZTU2N2E5MTIyZWMzNWM4OGE4MCBsZWdhY3ktdHJ1bmsKKzQ0MTYgNjQxZjZiYmY4MDdiOWNjOTc5MmU3M2I0ZTA5ZmE1MGNmODcyMmRhYyBsZWdhY3ktdHJ1bmsKKzQ0MTcgYTEwZDMxZmYzNTI3ZGE3ZDMyZjg4YjFiMDZmMjY4NjczZjNiZTI1NCBsZWdhY3ktdHJ1bmsKKzQ0MTggNzhiZjY3NWRmNWU1ZGZmYTk2NGRlYzAwOGQ2NTMwMzYyZDkxYWVhMCBsZWdhY3ktdHJ1bmsKKzQ0MTkgM2JhMTczMDVmMDQ3ZjE5MDI0ZDNmOTk5ZDRkMzRmYmMxZjc3Yzg0MyBsZWdhY3ktdHJ1bmsKKzQ0MjAgZGQ3YmU4MTI4NDEwNzE0YjE5NDZlMzk5NjExM2I2NTljMTNkMDc3NSBsZWdhY3ktdHJ1bmsKKzQ0MjEgZGMxZGJmNmI1MjExMDA1YmRiY2FiOThmNzFjYzU2Y2JmOTMzMjU1OSBsZWdhY3ktdHJ1bmsKKzQ0MjIgNGZiMGEwODA3YjA1Njc0MDJhMjZiMTU4YWJjYmY0NTU5MDc4YTVkOSBsZWdhY3ktdHJ1bmsKKzQ0MjMgM2RlNWE3NTQ5NGRmY2EyYTU4NDg1ZDE2MWU0YjdiOGJiNGJmZmUwYiBsZWdhY3ktdHJ1bmsKKzQ0MjQgODQ2MzdjZmRiYzA3NDJhOTc1OTVlNDRkNjY5MjQ3ZGM0ZjkwM2IxNSBsZWdhY3ktdHJ1bmsKKzQ0MjUgODdhNjIwZDg0NzY2MzNkYjhiMzViMTlkOWU0ZDM0ZDhiZjNmODFkNCBsZWdhY3ktdHJ1bmsKKzQ0MjYgNDQ1NDQyMTc4NGQ4NGFjOTRkMzlkOWVmZmM2MjU0ZGZmMDUyYmE4MSBsZWdhY3ktdHJ1bmsKKzQ0MjcgZjIyY2I1ZmVlOWM4YjdkODI2NWIzNzliOGYzNTFmMzAxZDZmMjA4YyBsZWdhY3ktdHJ1bmsKKzQ0MjggZjk1YzE5M2JmZTY1MzRmYTFmM2NmODIwODY1NmMwMWNjMWE1ZDUzZCBsZWdhY3ktdHJ1bmsKKzQ0MjkgZGNmZTdmZDFhY2JjNTY0NGZkZGU3MjE3ZjUyMDI0NDFhOTIxNzcyNCBsZWdhY3ktdHJ1bmsKKzQ0MzAgZTIzNjM5ODc5Y2QwNWI5NmE1ZjI3M2FlMDc4N2QxNjNkZDJmYmNmNCBsZWdhY3ktdHJ1bmsKKzQ0MzEgYWQyNWM1MjM3NmI0NWI4MDlmYmQyYTZjMDQ4ZDNkYjYwMTIwZTJlMyBsZWdhY3ktdHJ1bmsKKzQ0MzIgNDJmOTVlYTc1ODY3MzQ3ZTgyNDAxNjllZDlkOTAyNmJmNjI3MDEzNCBsZWdhY3ktdHJ1bmsKKzQ0MzIgODMyNjE1ZWMwNzY0NmUzMTBjODUzMTZiOGJhNmJjOWIxN2FkMzU0NyBsZWdhY3ktdHJ1bmsKKzQ0MzQgMjM0N2IxZmU4MTJkZDVjZTY1M2MxMDFhMDdiMTIwN2NiYTdlYWQxNCBsZWdhY3ktdHJ1bmsKKzQ0MzUgNGU2MzEwMzJlYWNmMmI5YzZmOTc2YjY1OGM4NDFiMDM5NmYwZjMzZSBsZWdhY3ktdHJ1bmsKKzQ0MzYgMzM1MTU0ODVlYWQwZDZkZTMzZjI4MjMyM2E4YjEyMzNkNjNmZWFhMCBsZWdhY3ktdHJ1bmsKKzQ0MzcgODBiZDdhZjczMjAxOTA3ZDI1NzExZjFmNjgyOGEwZWM2ZDFiZDM2YiBsZWdhY3ktdHJ1bmsKKzQ0MzggNDA2MTFjYWNkNWJkN2EyNmFjMWYwMTQ4MGI0YzkwMDk4NWMyYTBjMiBsZWdhY3ktdHJ1bmsKKzQ0MzkgMTVhMWViMTEzYTQzMDgzNTY4NjBjMTllZGY4ODJhOTY2MzI5MTRjMCBsZWdhY3ktdHJ1bmsKKzQ0NDAgNThlZWY1MWUzMDg0OWM2YTc4MzRlZDlmNjhkMjM1YzQzOTVkY2FkMCBsZWdhY3ktdHJ1bmsKKzQ0NDEgNTU4ZDlmOTVhNjAyMGFkNjMzZjZmYThlZGM3MTkzZjJhNjFlZmI0ZiBsZWdhY3ktdHJ1bmsKKzQ0NDIgZGM2ZWFhMWE4ZmRkZmVkNWU3MzZiMDE5N2U3NTdkZTQ0MDI1MThkYiBsZWdhY3ktdHJ1bmsKKzQ0NDMgNzdkMWNhYmY5NzFjY2NjYTIwODI2N2E1MWIzODRkODQ5MzUxMTA4ZiBsZWdhY3ktdHJ1bmsKKzQ0NDQgNGU2MDU2ZDk4MGUxYTFjMDczMzA5NzIxYmQxOTExY2JjZDg1Zjk1MyBsZWdhY3ktdHJ1bmsKKzQ0NDUgNzQ0MjY1Mzc0NDUwODAxZjBmMWZhZTAyOWQ4MDlhODg2YzEwNmIzMSBsZWdhY3ktdHJ1bmsKKzQ0NDYgZjQ5NTI3ZWNkYjNhZDVjZDZhOTdiNzllZmUwMzVjODY0MDBjOTA0MyBsZWdhY3ktdHJ1bmsKKzQ0NDcgYWYyNmQ0ZDVjMWQ0M2EyYmYzNjRjNDkyZTU1ZTYzNDM4NjI2OGUzNSBsZWdhY3ktdHJ1bmsKKzQ0NDggZmIxOThlMTMxNmI5YmRjMmM4OTc4ZjYzZWU2NWJlYmJiOWZmMjQ5MSBsZWdhY3ktdHJ1bmsKKzQ0NDkgMWRhYjk5Yjg2ZmE4YzNmNmE3YzQ0MDA0ZDI2NGVmMWUzNjEzN2FkNSBsZWdhY3ktdHJ1bmsKKzQ0NTAgZjkwMGMwOTk5NWRmYzQyZjI1NjY4NmMyZWJmODEwYzNmOTMwMTM0YSBsZWdhY3ktdHJ1bmsKKzQ0NTEgNjNmODc1ODQ5YmQ4MzE5MTQ0MTI5YTEwOGM5ZDc2NGJkYTcwMTdiMyBsZWdhY3ktdHJ1bmsKKzQ0NTIgY2Y0ZDg4NjJmMTliZjQ1NzQwZjlkZmMwMWQ1ZGZmM2ZkZGY3MGNjOSBsZWdhY3ktdHJ1bmsKKzQ0NTMgYzVhNTE0ZjhmM2UzZGFjNWFjN2MxYWNjYjVmMWVkOTE3MWRiMWEyMiBsZWdhY3ktdHJ1bmsKKzQ0NTQgZDVmNGQwMTNkY2MxNDQzZTNjY2I0NDA5ZTc4ZmQ5NWIzNmQ5MWFkZiBsZWdhY3ktdHJ1bmsKKzQ0NTUgZjA1YjVjZDc5ZmJlZGI3M2E0OTJlY2I5NmM5YjFhMDRiNjgyY2M0NyBsZWdhY3ktdHJ1bmsKKzQ0NTYgZTg5NTJiOGRmZWZmY2RhY2Y0NDUxODNmOWVhZDA5ZWFjNzczZmM0NyBsZWdhY3ktdHJ1bmsKKzQ0NTcgYTcwODgzODAzMzM4YTAwNTcxODRlOTQ4Y2Y5ZjUyMWQ1NGZhZGRlZiBsZWdhY3ktdHJ1bmsKKzQ0NTggN2Y4NzE5YTM2NjYyMDNiNzQzN2RiNmRkNzRiYjE1ODc5MzYwYjQ1MyBsZWdhY3ktdHJ1bmsKKzQ0NTkgZWQ1ZDBhZDVlYTJmMWZkZTgzNmQ0NDQzMDQxM2ZhOTUxMWFhNjgzOSBsZWdhY3ktdHJ1bmsKKzQ0NjAgM2FhOTE4NGNmZjhiNmM5YmVhMDdhOWE2MDgwM2ExMzI5ZTM1NTk4ZiBsZWdhY3ktdHJ1bmsKKzQ0NjEgN2M1M2U2MWJjNGJhNTc4ZTA0YTY4MTg4MWI1MWI4MzJkMDA4MGY0OCBsZWdhY3ktdHJ1bmsKKzQ0NjIgODExYzRlNDYyMmFhYmY1NmJjYTI4N2MyNDE3ZjY1NTNmOTgzZWE1NSBsZWdhY3ktdHJ1bmsKKzQ0NjMgMzkyZGIxODgxMTkwOGM3YWM3MjE4NWExOGE2OTExYTE0NTEyMWUyMSBsZWdhY3ktdHJ1bmsKKzQ0NjQgZjY1ZWMzZGNjNTYzMWZkNTViYThiZGNhMzFlOGNmNWJmMGNmZmI2YSBsZWdhY3ktdHJ1bmsKKzQ0NjUgZjI3ODAwOTY1ZmY3Y2VkYjA3ZDZkYmE5MmE5ZWFkNGQ2MjViMmRmNCBsZWdhY3ktdHJ1bmsKKzQ0NjYgMGJhZTZhYjljOWUwZTc2NWU4ODkwMjQ4NDI2ZTI5YzZlZWY0MWRlNSBsZWdhY3ktdHJ1bmsKKzQ0NjcgZGM5YjYzMTZiOWIzNTRmMjFmMGEzM2MyODg4NGNlZWNhYTRlZDc3NiBsZWdhY3ktdHJ1bmsKKzQ0NjggNjlkNDhjYmRjMmQ5YTM5Mzc0Mjc2NjZiMTQ2N2I2MmQ3OTI3YWNhYyBsZWdhY3ktdHJ1bmsKKzQ0NjkgZWMwNWQ5MDIxYmNjZDgyMzAxNTM4YzAwZjYyNTI0NDgxYWFmYzBkMSBsZWdhY3ktdHJ1bmsKKzQ0NjkgOTg5NTQ3NWQxOGM3YjVmMzJhZGFmNzhmNzE4ODZhZTA0MWU0ZDEwYyBsZWdhY3ktdHJ1bmsKKzQ0NzEgYTRhODU0NTBlYmFmZTMyNGNkMzRmZWYyNzViZGQ4NjQwYTk2YjZmMCBsZWdhY3ktdHJ1bmsKKzQ0NzIgNWEwNzc1Y2U3YjMxMWViOTZhNzYwZGUyYThmN2JlOWMwYmMwMThkMCBsZWdhY3ktdHJ1bmsKKzQ0NzMgOWUzNDY5YzBlZDc1Y2MyNGExNWRmM2I2ZGNkN2E1OGU2ZWNlNTJhOCBsZWdhY3ktdHJ1bmsKKzQ0NzQgN2JkYTBmMmMxNzBjZGVhMjk2NmU1N2RkOWRkZWMzMDE3OWQ0ZmY1OCBsZWdhY3ktdHJ1bmsKKzQ0NzUgZWUxMmVkZmMyMDk1OTliYTFjMzZjYjRmZmQ5YTVmZWUxNWI0MWQwOSBsZWdhY3ktdHJ1bmsKKzQ0NzYgZWVlM2Q3MTVmMGNmYmYxZWEyZjRjNDI5N2Y3MmJiZDM3MzdjY2IwYyBsZWdhY3ktdHJ1bmsKKzQ0NzcgM2Q0MzFhNTIxMTMyZjIzYTA4YmQ2ZGMzNTQyMjE1ZWIwMjFmOTczZSBsZWdhY3ktdHJ1bmsKKzQ0NzggNzJiMmFiNTZlNDAzNTJlM2VkYjY3MmVkNDFjNWFkNjAwMzA0N2RmYiBsZWdhY3ktdHJ1bmsKKzQ0NzkgZmE3YmM1MjgzMTRiYzQ2MWRhYTQyOTU1Y2RkNmEzODU5MWM5YTNkMyBsZWdhY3ktdHJ1bmsKKzQ0ODAgOTdkNjE0YjI0YzA4Y2I1NDYzNjFjZTFmYzc1MjUxZThmODI4YjFlNyBsZWdhY3ktdHJ1bmsKKzQ0ODEgNWM3NGMzYWVkYTc0YWY2YWM3MjMyMDI4MGJiOWViZjNhOTNmYjNlNSBsZWdhY3ktdHJ1bmsKKzQ0ODIgZDRhMDZlODA1NmI4N2Y5YTMxNjNiNjEyMmRjNDUzNTE1Njk0OTBhNSBsZWdhY3ktdHJ1bmsKKzQ0ODMgMmEzYzhiZWJmMTU2OGFmMjg5NTkyNzUwYTY5ZmJiNjdlOTI0ZTZhYiBsZWdhY3ktdHJ1bmsKKzQ0ODQgNjcxY2YxZjhiMGMzM2JiNzE4MzkwZWYzODNlYzY3NTZjZDIxMGFmNSBsZWdhY3ktdHJ1bmsKKzQ0ODUgMTczOWYwMGZmYzg2MzFlMzBhNjdmOGE2NTM2OTFjOGJhMzNlZWMwNSBsZWdhY3ktdHJ1bmsKKzQ0ODYgNjA5YmZiOGFlN2Y1NGFlZTc1NzAzMTgxNjkxNDM3M2EyMzNhNWJjYyBsZWdhY3ktdHJ1bmsKKzQ0ODcgZTQzYTE5NDJlNTg4MDZhMTI0ZjcwNDFlNzhiZTAxY2JiMWI3MmIzZiBsZWdhY3ktdHJ1bmsKKzQ0ODggZjIzNmFkYzI4ZTc3NzA5MjJlMGM2NzFkMGJmZmFjMjJjZTk3MDU3OCBsZWdhY3ktdHJ1bmsKKzQ0ODkgY2U2OTc0MmYyZTc3Nzk1ZDE3NDJlZGFiYTc1ODJhMDUyZTk1ODI2MCBsZWdhY3ktdHJ1bmsKKzQ0OTAgODNmY2I5ZGI0Y2E4ZWM0ZTlmNzRiNDhlMjc0MGUzM2JkZGE3MTg1NiBsZWdhY3ktdHJ1bmsKKzQ0OTEgMzcwZjhjYmQ3YzMyM2U4ODVhMzMwMjRlYTdmNjYyNTUzYTFjYzg4NiBsZWdhY3ktdHJ1bmsKKzQ0OTIgNTk4M2QyZGI1OTA0NTdhYjA2ZGI2YWJkNmY3NDQ4NWVlZmJkODM4ZiBsZWdhY3ktdHJ1bmsKKzQ0OTMgMDcwMTc2OTA5MGY0OWJmMWEzMTRiM2Q1YzUwZWJhOTAzMzM4M2RhNSBsZWdhY3ktdHJ1bmsKKzQ0OTQgM2Q4MjJlMzJjMzI5NzA0NDBlNTc3OTc0YWQzMjVkNjBjNmM2OWQ4MSBsZWdhY3ktdHJ1bmsKKzQ0OTUgZTI4ZTEwZTVkZWIyYzMxMzI1MTBmMmU2ZDYzZWViZjI3ZmUyMjNiYyBsZWdhY3ktdHJ1bmsKKzQ0OTYgZWE2OTZmMjQ4N2ZjODYyODViOGMzZTExMWUxMWU2NmQ2ODgwN2JkYSBsZWdhY3ktdHJ1bmsKKzQ0OTcgNGViZWU5MDQ5MjRlNmFhNzc4ZTllNDEwYThiYzI0OTcyMDhmOTk2YSBsZWdhY3ktdHJ1bmsKKzQ0OTggMjgxZTQwNjUyZTIzNDUzODQ1NTAwNzI4MGQ0N2MyNjk5N2RlNjhhMiBsZWdhY3ktdHJ1bmsKKzQ0OTkgNjJiYmJmZTZiYmY2ODI4Njg4Njg0M2E3NmUzNzNjZTJiNmZjMjgyOCBsZWdhY3ktdHJ1bmsKKzQ1MDAgMWNlM2RiZWViODkwOTM4MGUzYjFiNzhjOGUyOTE5ODMzNGZiODMzMiBsZWdhY3ktdHJ1bmsKKzQ1MDEgZjE4YzE5MTVjNzIyZDE3NTE5OGEzNmI0NzljOTZjM2QzOWRiNGEyNiBsZWdhY3ktdHJ1bmsKKzQ1MDIgYzg1YWJjYzc1MmIxODQ2NDMwNjkwZmNmN2NhMWVjYzk5NDkyOGIyYyBsZWdhY3ktdHJ1bmsKKzQ1MDMgMDdjZjNiM2JhZjE2ZmMzMzcwYWM5NThlYjZjYzk5MjcyNTUxY2RmYiBsZWdhY3ktdHJ1bmsKKzQ1MDQgMTkzNjNmODU3MGEyZmNmZmQyZGEyNjBhNDVkNGEyMDc1ODQwODJiZSBsZWdhY3ktdHJ1bmsKKzQ1MDUgMjNkZmNhOGFhNzNiMDQwNTZkZTc1MGRmODRiZDNkMzdjZGZmYzk5OSBsZWdhY3ktdHJ1bmsKKzQ1MDYgZDdlOTE0MzdmMGEyN2UyNzQ3Y2UwMmFiMWJhNTA4ZjRlNWQ4ZWMzYyBsZWdhY3ktdHJ1bmsKKzQ1MDcgZGU0OWQ0OTA0NGQ3NTNkZjExMzA0M2I0Yjc5MzYyNTAzZjc4ZGM0OSBsZWdhY3ktdHJ1bmsKKzQ1MDggMDMxOWIxMjMyMWQ3ZGRiZjIwYTBkZmQ2ZmU1YTI5MDMzOTZkNmFkYSBsZWdhY3ktdHJ1bmsKKzQ1MDkgY2YzMWVhYjZhYjVhZTJlMDFmNGM2NmJjYzlkNWZlMmNhZTBjMGExNCBsZWdhY3ktdHJ1bmsKKzQ1MTAgYWZmNWQ3ZDA2NzM1YzhmYTBhZjk1ZGRhYThhMjY3MWFjZDhkZTUwYiBsZWdhY3ktdHJ1bmsKKzQ1MTEgNzljMTcxZjU4MWZjZGVlMzA5OTNmYTNkMmNjZTI0OTEwMjViNTFiZSBsZWdhY3ktdHJ1bmsKKzQ1MTIgNTA4MDM2ZGJiYTNiNGYyZjZmMTI4MzRkYzA2MDBhMDQ4OTFkNjcyMiBsZWdhY3ktdHJ1bmsKKzQ1MTMgODY2YzgxMDY4ZGJkYTI3MWVlMjJiOGMwODVjMzBjMjRhNzE4Y2IwNSBsZWdhY3ktdHJ1bmsKKzQ1MTQgMTQ2ODkwNjUzYTU3ZWExM2IyOGZmNDZkNDZlOTJmZDRjNjM4ZWFiMiBsZWdhY3ktdHJ1bmsKKzQ1MTUgMTcyYmEwNGE1MTkxNmNiNzUwNDEzNTQwZTAzZjZmNDI4MWFmNDFkNSBsZWdhY3ktdHJ1bmsKKzQ1MTYgZDBkMGE2OWI1Y2EzNGI3NWVjNzdkYmZjODlhNWFmZmZmNjIwNDMxYSBsZWdhY3ktdHJ1bmsKKzQ1MTcgNWVkMDY1OTQzNTI2MjE1NDdmNTM2ODE2Yzc0OTA1ODA3MmZmODY1NiBsZWdhY3ktdHJ1bmsKKzQ1MTggMjgwZjMxZTZjNjUzYmU0MGZjM2Q1NWRlZmFmMWNkZDhjYzlmZWVlMSBsZWdhY3ktdHJ1bmsKKzQ1MTkgMjZjZDRkNmMyZDEyYmUzZWI2ZWM3YWQzMzUyZGY4MmZiMWU1N2EyZiBsZWdhY3ktdHJ1bmsKKzQ1MjAgMDAwYWU2NDJmOWI4ODlhMWFkZjk4MjQ5NGYwNzIyOGRlOTQ3NDZjZCBsZWdhY3ktdHJ1bmsKKzQ1MjEgMWI5OTQ1MWZhMTQzNmNhZDc4NDJmZWM1YzU5YWEyYzA0ZDYyYWIwOCBsZWdhY3ktdHJ1bmsKKzQ1MjIgNTIyNzMyNGQ2NGU0Mjk4N2NiODZjZjhiOTdmYTQ5NmQ0NGFkMjFmMyBsZWdhY3ktdHJ1bmsKKzQ1MjMgM2FhN2E3Nzg0NDU1OWFjNDc0YjVmNjI5ZTc1OWYxNmE4ZWRmYzc0OSBsZWdhY3ktdHJ1bmsKKzQ1MjQgYmU1YWI4ZTg5YzQ5ODZlODIyOThhY2E0YmM2NTNiZTgzODkyYmQ0OSBsZWdhY3ktdHJ1bmsKKzQ1MjUgMDQ4ZTkxYTU5Yzc1ZThjZTYwYTM1MzIxZmFkMGNhYzYwNzJhYjNmMCBsZWdhY3ktdHJ1bmsKKzQ1MjYgY2Y2NWExMjRmYTRiNzY5YzY5MjFiNmE5ZjY1YzI5MzRiMGZhN2FjMiBsZWdhY3ktdHJ1bmsKKzQ1MjcgNjhhMzhjZmZjZjU4M2MyOTE4YTUzODg5MDVjMTliZGViYTE5MTI4MiBsZWdhY3ktdHJ1bmsKKzQ1MjggYTM2Y2FjNzljNWFmN2MxYzE5MjVhNDFjNTJlYzI5MTdlYjkxYmQyNiBsZWdhY3ktdHJ1bmsKKzQ1MjkgNGMzNDdlNGQxM2YxZjExNjVjODBkZDliYTQxOGVmZmRhZjFkODA1MCBsZWdhY3ktdHJ1bmsKKzQ1MzAgYWRjMDI4Yjk3N2JkZjZiYjdmNWFjMWNkZTYwMmU3ODZmYThlYmY1NyBsZWdhY3ktdHJ1bmsKKzQ1MzEgMzg0ODA5NGYyNTljYTdiYWM2OTQ0NmJlN2YyODc5MTlkN2VhMzQxOSBsZWdhY3ktdHJ1bmsKKzQ1MzIgZGY2ZmU4Mjk2YmMzMWQ1M2MzNDk0MjY1ZTc1YWFlM2ZkYmE3MDBjZSBsZWdhY3ktdHJ1bmsKKzQ1MzMgNWJiZjBhOWM5YTQyOGFjNzg2NGQzMDAwOTk2M2M2MTRlMGJlMjdmNiBsZWdhY3ktdHJ1bmsKKzQ1MzQgYzIxY2M3YjNjZTI4MzM3M2NmN2QyZTcxMzY1ODk1NzAzZGIzYzcxYyBsZWdhY3ktdHJ1bmsKKzQ1MzUgYWZlY2RlYzk5NmZmNTAwMzM2MjViNWY1Y2M2YjdmYzcyZjk1YTQ5NCBsZWdhY3ktdHJ1bmsKKzQ1MzYgNGFmYTdlYjQ3MzRiY2ZhZjY1MmZkYmZkYzg3N2IyODRmYmY3M2RiYyBsZWdhY3ktdHJ1bmsKKzQ1MzcgZjJkMjY3ZWRiZmQ2ODc2NzA5MzkxNWZhMTM3ZGRlNzBkZTEyZWE4MyBsZWdhY3ktdHJ1bmsKKzQ1MzggYWJiZjJhNGI0ODhiMzcxYTJlNjQ1OTk1YWEzY2UxNjFlNDc1NzQ3YyBsZWdhY3ktdHJ1bmsKKzQ1MzkgODkyMWEyODgxZmM3ZjI2NDY4Y2Q4NjI2MjUwYmE0YWYwNDM0ZWRkNiBsZWdhY3ktdHJ1bmsKKzQ1NDAgMjYwNGQxMWM4YjQwNDU5YzBhY2IyMDVmZTc1YWIyYmQ2MDk5YzczMSBsZWdhY3ktdHJ1bmsKKzQ1NDEgNjUxNDZiNTJmMTZiOTM0ZGRkMGQ0OTVhY2EyZDdiNzFjMmMwOWMyZiBsZWdhY3ktdHJ1bmsKKzQ1NDIgMTk0MGUxZTBjZWRmNWQ1NWU3M2MwZmRlMGY1MzZhZGMyOGM3ODAzMyBsZWdhY3ktdHJ1bmsKKzQ1NDMgNTNhYTUxNDMzZjdmZDVkNTNjMjcwYmJjZDAxMzRiNDQ3MTI3MGI4NyBsZWdhY3ktdHJ1bmsKKzQ1NDQgZjc4YjM4N2I1NGUwYTM5OTVhMGQyNzVkOWJlNDZhODJkZjkxMjcwZiBsZWdhY3ktdHJ1bmsKKzQ1NDUgYjRkOTgyYzY0OGJiM2U3NjAyYTk1OWY0MTUzMDU4NzE1YTQ4YTE4MiBsZWdhY3ktdHJ1bmsKKzQ1NDYgYjAzYjQzYmVlMWFiM2VjZmY2YTUyM2NhYTUwMTY2YzA5MThjZDc4ZSBsZWdhY3ktdHJ1bmsKKzQ1NDcgZThjYWZiMmI3NDNhN2U0YzAzZDg2OWEzNDJhMGNmNmNlZTEyOTE4OCBsZWdhY3ktdHJ1bmsKKzQ1NDggZDM1NmM0NzNkYjk5M2ZlNzRmYmZmYmJkNzM4NWI2YmY5MzAzYTdjNyBsZWdhY3ktdHJ1bmsKKzQ1NDkgMGQ3ZTRhYTU5NWY3YWE1YjRkOWI4MGU1ZGFhMDBiNzUwNzU0YzBkZSBsZWdhY3ktdHJ1bmsKKzQ1NTAgZDVjOTM1YjlhN2I1MGNlNTRhOGZkMmE1YTM1NjJjMDRmYjJkYzM0MCBsZWdhY3ktdHJ1bmsKKzQ1NTEgZTQ1ODg0MDRmZGZmMjU0MDBjMDU4MmE1NTMwNmI5MDE2MzQzOWU0OSBsZWdhY3ktdHJ1bmsKKzQ1NTIgYjdiZTAzODJmOWVlNjlkMTZhMWI4Y2ZmNzJkOWZkOGVkODU1OTM1ZiBsZWdhY3ktdHJ1bmsKKzQ1NTMgYmEyZTIxYTU0YWUzOTkxYTRiZWEzYjhlYmFjYzhmMzQ2ODRkZGNmZCBsZWdhY3ktdHJ1bmsKKzQ1NTQgNDU3NGVkNjU3Y2M5ZjlhNTVjYWU0NDU0MTVlNmE3OGQ5ODc0YTg5YSBsZWdhY3ktdHJ1bmsKKzQ1NTUgZmRjY2MzMjIyZDBhZTc5NDFjYzQ1YWE2ZDkzMzA4OTA5ZmJjMzQ4NyBsZWdhY3ktdHJ1bmsKKzQ1NTYgMzA4MjFiYzJkY2I3NDRmYjBhZjE3NWQ3YmQyOGQyOTVkYWI2MjVlYSBsZWdhY3ktdHJ1bmsKKzQ1NTcgYmJmYWMzZTI1NzBkOWFiMjIwZGZmN2Y2MWQ5MTIyMmJiOTVhN2FlYSBsZWdhY3ktdHJ1bmsKKzQ1NTggNzQ5M2M2ODA1ZGM2ZTVjYjkzNDdiZWI2NjhlYjExMWUyYWMxMTFjZSBsZWdhY3ktdHJ1bmsKKzQ1NTkgZWE3YjJiZjBiNTIxNjFmOTZhNWE5N2MyY2E4YmU2ZDMwMGRjNTFmZCBsZWdhY3ktdHJ1bmsKKzQ1NjAgMmViYjIxMjg0ZjM0NTFhNzY5YmY1NzhmNmJmZTQ0Y2RlOGU0OTZiZCBsZWdhY3ktdHJ1bmsKKzQ1NjEgMDE4MzBkYzhkNmU1ZDM2YmZkMDFmMjJmNTY3MTJlZjIyMzllZjFkMCBsZWdhY3ktdHJ1bmsKKzQ1NjIgYWY0MWY0YTIxNjgyZWE4MjEzNjI3YWRkNDUzMjEyZTYwYzNlN2NmMiBsZWdhY3ktdHJ1bmsKKzQ1NjMgMDcwODBhMjk2MDcwN2JiYjlmMDFlZjY2MzBhOWZlYzA0OTViYzIzMyBsZWdhY3ktdHJ1bmsKKzQ1NjQgNmM0OTA1ZmZmZjAxZTliODkyMGU0ODI5YTkyOGI2NWZmY2Q3OTE5MCBsZWdhY3ktdHJ1bmsKKzQ1NjUgMzBjYmUwMjRkZjQwOWVjMGQ3ZTMyYTQzNzQ2ZDc4MzY0ZDU0MjNmYSBsZWdhY3ktdHJ1bmsKKzQ1NjYgMjY2OWVmMTRjMjA1NDE5OTBkNmRiY2VlOTllMWJjMmY0MzY3NmZkYiBsZWdhY3ktdHJ1bmsKKzQ1NjcgNzZjODYwYTE4ZDgyMzQzZmI0ZTA3NmRhZGNlNGZiYmM1MDgwZTczOCBsZWdhY3ktdHJ1bmsKKzQ1NjggNzk0N2MwZDE2Y2EwNDFlNjkxNGVjODkyMTg1MGMzOGI0MTI1MjU5ZCBsZWdhY3ktdHJ1bmsKKzQ1NjkgN2VhMzY5ZDA1YzJlZTE5NWUxMjJkNGQ3Y2ZkMGQ4NTEyMzA4ODQwMCBsZWdhY3ktdHJ1bmsKKzQ1NzAgZDczZWVkMzUzMDAxMGM0ZmQ0YzgwMmEwOTA5M2FlMGVmNGQzZjYxNiBsZWdhY3ktdHJ1bmsKKzQ1NzEgNWRmNjlmMjk0Y2NjNmY2ZDQ2NjFlODRlMzllMDYxMzJiMDcwYTc1NCBsZWdhY3ktdHJ1bmsKKzQ1NzIgYWVkYTg2NGMxMWM0NDYzOTI1ZWRkMjBhMTg2YWQxZDQ4ZTdlYmRiMyBsZWdhY3ktdHJ1bmsKKzQ1NzMgMWRhZTBkMzA2MmQyNjNiYjZjYzY4NTFlNzI4OWEwNWM3NjZhMmU3NSBsZWdhY3ktdHJ1bmsKKzQ1NzQgODRiNjFmZTQ0NTczMDQ4NDAwY2RiMWU3MTFmMDZkYWNkZjRiMzJhYSBsZWdhY3ktdHJ1bmsKKzQ1NzUgODZkOWU5MTQwNWM4NTUzODk3Yzg4NzBjNDBlY2VmMmI4Y2FmNjVkMCBsZWdhY3ktdHJ1bmsKKzQ1NzYgYmEzZmQ5NmYwNTVlZjkxOWI0ZDgwMzI2YjE2NzViYzM1MjgzODY2NyBsZWdhY3ktdHJ1bmsKKzQ1NzcgZmQ1YWI3ZTgyOGZjY2MwMTQxNTk2ODI0ZjhhNzVjYWFhMjZhN2FhNSBsZWdhY3ktdHJ1bmsKKzQ1NzggMzY4NDdiOGI1NzVkZjY1MWY1OGFlZDU4MTM2OTZlYjc2ZGY2NTI0ZiBsZWdhY3ktdHJ1bmsKKzQ1NzkgYmQwNjFkYzMwODQyZTc1MDRlZGU0ZDdjMzdmM2U4ZTE3OTc5MDVkNSBsZWdhY3ktdHJ1bmsKKzQ1ODAgYWYzNmJhZTM0M2ZjZjhkYWVmNDhhOTg1NDFlMzdjMzk2ZjI0MDhlOSBsZWdhY3ktdHJ1bmsKKzQ1ODEgNjk1NDAxNjkyYzQ2ZmI2MmM0ZThjOGRiZDdjZjkxMWMwZGNmNTVkZiBsZWdhY3ktdHJ1bmsKKzQ1ODIgOTJkYTg5MDE1MTdlM2YxNWM5OGM5MThiMmRmMjQwYTA5MWE0Y2VhNCBsZWdhY3ktdHJ1bmsKKzQ1ODMgMDUzNjBjZDYxNmFlMzg4Njc1MTA1NDVlNjk0ZGRhYjI0OWU2Yzc0YiBsZWdhY3ktdHJ1bmsKKzQ1ODQgY2EyN2MyZmUwYjhkNGM2YjU2ZTRmMDZiNjMxYTVhNmQ4YzQ3MjYzYiBsZWdhY3ktdHJ1bmsKKzQ1ODUgZmU5MjJmZWQ2YjMxZDhjODRmZjYwYWU4ZWI2NDUzMjUzMDFlYzUyOSBsZWdhY3ktdHJ1bmsKKzQ1ODYgNGRkZjU1NDQ1N2FkNWQxYjIwMWNjOWM2YWYzMjMxMWQ2MWJmOTQyYyBsZWdhY3ktdHJ1bmsKKzQ1ODcgYzE2ZDY5M2JmZTczZjUyZjQzZjgwNzgwYThmNWExZjUxMjZlNTkwYSBsZWdhY3ktdHJ1bmsKKzQ1ODggOWQ2MWM1NzQ5YmY4Mjc4MWE3YTA2MDM5NDY5ZGM4MTNhZTI4NDk3MyBsZWdhY3ktdHJ1bmsKKzQ1ODkgNGY5MGI0NzRiZWVjMzQwZjA1OWYwNTk2OGFkMGFhOTk3ZWI2NmNjMyBsZWdhY3ktdHJ1bmsKKzQ1OTAgYzU3YjVjNTBhMmQyOTU0ZjZhMGMxY2Q4YTFiNTFmOGNiMDAyM2JlZiBsZWdhY3ktdHJ1bmsKKzQ1OTEgYzkwODVmMWU5NzdmMzM4MDM0MGJiZmJjMTkxYzFiMmYxNTYzMTllZSBsZWdhY3ktdHJ1bmsKKzQ1OTIgMjNmMDQwMzE3ODI4MGFlMDdjZmIzMDg0ZmFmZDhjYzU3Y2VhYzY1MiBsZWdhY3ktdHJ1bmsKKzQ1OTMgOTRlMmNhODY1OTBhNTZkMzg3NGRjMjRiZTVkZWI3M2Y5NTNiNzgxZiBsZWdhY3ktdHJ1bmsKKzQ1OTQgMTczZGQwMDg3OWFiNjAwMGM4MmRjNjQ5OGZjOGY3MmZkZjdhOGQ0YSBsZWdhY3ktdHJ1bmsKKzQ1OTUgODQ5MjNkOTJiNTNlN2FjMWE2MzIyYTMyODBlMzQxYWU3ZDM2MTJiYyBsZWdhY3ktdHJ1bmsKKzQ1OTUgMTZlYjRjNTFlZTk3MTY5MDQ2MzQwOTk4ZTg1MGE2M2M2NTIyNWIwYSBsZWdhY3ktdHJ1bmsKKzQ1OTcgN2FlODQ3YjFiMjY5MjI4YjljYzM4NGUwYmFmZDA0YTM2NzkzYmUxYiBsZWdhY3ktdHJ1bmsKKzQ1OTggMGU2MGNkMjA3YWRiYjI0YmQ1YjNjMmI4NDRiN2MwODY3M2UwNDRhNSBsZWdhY3ktdHJ1bmsKKzQ1OTkgZTllOTNlMDczNTRiOGJjMGIzOTQwMTQ2MmE3MGE2YjliOWRiYTBmOSBsZWdhY3ktdHJ1bmsKKzQ2MDAgOWFmZGJmOTQ0YzJhMDNhNjQ5YTU3ZmUwYTMyM2NkMTIyNTFjNTYwZCBsZWdhY3ktdHJ1bmsKKzQ2MDEgODM4ZWY5NzY4ODIxMDMwMTY3ODViOTdkNDBlYjkyY2Q5ZDMwMWY5YyBsZWdhY3ktdHJ1bmsKKzQ2MDIgZjk5YTIzOTk4NzcwYmFiN2UyZjI1NjU2ZjdkMDA0YTY1YjkzOGI1MiBsZWdhY3ktdHJ1bmsKKzQ2MDMgNjA2MGQ3ZmIwN2UzNDI0NWU5NzMwYmZmZDg2MjEwN2U4ODRmNGEzNCBsZWdhY3ktdHJ1bmsKKzQ2MDQgNDQ4NDM1YmZlYWRjMGQ0NmNmNTVjNjhjOTJmNTAzZjZkOWNmNjgxMSBsZWdhY3ktdHJ1bmsKKzQ2MDUgNWZkODUyNGRkMDNhMjEwYTkzNzhiNmIzMmFjZTE3M2I4ZjAwMWM4NyBsZWdhY3ktdHJ1bmsKKzQ2MDYgMWE1MjM1MWEwMGIyNmNkMDU5YTZiYzllMmQ5NTE4ZTc2OWExZjFkYSBsZWdhY3ktdHJ1bmsKKzQ2MDcgZTU0Yjg2NTRmOTM4NGYxMjI3YmEyMTk3ZmViNWZlMTYxMWFkZGVjOCBsZWdhY3ktdHJ1bmsKKzQ2MDggMDcyOGZlYjFkMDMxYjQ4ODQyYjcxOTgzNzBhZjJjNzg2ODhhZjU0MiBsZWdhY3ktdHJ1bmsKKzQ2MDkgODQ5NzFkMDE1OTY1ZThlOGYyZjQxZjQ0NTkzZjIzMmY2OGQ2YTU0NyBsZWdhY3ktdHJ1bmsKKzQ2MTAgY2ZiYWI3OWE3OTlmNDY1MzU1MjI3MWRhNTAyMGJlMjIyMDUxNjM4NyBsZWdhY3ktdHJ1bmsKKzQ2MTEgMWUwODM4YmI4ZjIyMDhlMjkyYjMwMDM0MTYyM2VmODMyYmMyMDlmOCBsZWdhY3ktdHJ1bmsKKzQ2MTIgMjk3MjBjNWQ5ZTdlYzQyMjFmYzg3ZjFiMjIyZjgwNTMxOWJmZDcwNCBsZWdhY3ktdHJ1bmsKKzQ2MTMgYTYxOWE2MWFhZDFlYmI4Yzg4MDI0MWZjMmNlZDBmMWUwNjJjMDIyZCBsZWdhY3ktdHJ1bmsKKzQ2MTQgODk5YjRlM2RmZDRjZmY5OWNhNDBlZDcyYzA3NTM4NDUwMjQxNmUxZiBsZWdhY3ktdHJ1bmsKKzQ2MTUgZjA2MjIyZTA3Y2E3NTUzNzk1ODM2ZjdlOTQ0NDcxODVhNjkxNTg3YSBsZWdhY3ktdHJ1bmsKKzQ2MTYgYzlhZWEzNGFlNGI2OTk3MTRhZTgxM2U0NzVmNDg3NGUyYzFkYmJjMiBsZWdhY3ktdHJ1bmsKKzQ2MTcgZWUwYjNjYjM3YWY4OGNjNGM5MzY3MGExNmQxOWE4ZTNjMzhiOTgyYSBsZWdhY3ktdHJ1bmsKKzQ2MTggNDU5YmY3ZDA0ZTA1YmViODI5ZTJkNGQwMjViN2RhZjgzYzk2YjAzYyBsZWdhY3ktdHJ1bmsKKzQ2MTkgZjQ5YjYzNzI0OTJmMjhiYjczYjQxNTM3NmQ3ZTNiNGQyMWI4NDAwZCBsZWdhY3ktdHJ1bmsKKzQ2MjAgN2E2YjU3ZmViYWM0NmMxMDYyMWNkY2RkNzMzOTIxOGQ0YzliYmJmZSBsZWdhY3ktdHJ1bmsKKzQ2MjEgZDkwYzkxNGM1NzdkMjBiNDIxZjEwZTcyYTkwNzM5NWU1OGIzOTZkZSBsZWdhY3ktdHJ1bmsKKzQ2MjIgOWE5ZjNmNWQ2Zjg2MDMyMjEyZjAwNzNhNTI5OTBkOWYxZTE4MDQwYyBsZWdhY3ktdHJ1bmsKKzQ2MjMgOTJjZDg1NDcwYTc2OWRmNTc3ZDgwY2E2MjRlNmEwNzU4ZGVkMTA1OSBsZWdhY3ktdHJ1bmsKKzQ2MjMgYjQ1YzY4ODc1NmQwNGZiODRkNGEwZDUxOGZjM2Q3ZTNjYjI1ZmE4ZCBsZWdhY3ktdHJ1bmsKKzQ2MjUgN2ZmNmQ5OTlmMDU5YTA4YzhjODJiODNjMDUyZDUxNGY2Y2JlNjUxOCBsZWdhY3ktdHJ1bmsKKzQ2MjYgOGFkY2I4MDhkOGRkZDg0Mjk1NTQ4MWZkYzI3ZmY2MjIxZWVmMmQ2MSBsZWdhY3ktdHJ1bmsKKzQ2MjcgNmYzNWExYWQxYWNjODMzNTkwZjk4MjU3N2M1MGViZDYwYmFlOWRiNiBsZWdhY3ktdHJ1bmsKKzQ2MjggNWVlZDgzMjE2ZTZjNTViODU2OGE5OWY1NjQ3Y2FjOTBlMWQ5MTIxMCBsZWdhY3ktdHJ1bmsKKzQ2MjkgMDQ0NTcyNWZlNWRlNGNhZWFiZjQ5MzhkNTRmZmMwNmYwMTBkNjc4YyBsZWdhY3ktdHJ1bmsKKzQ2MzAgMWU5ZTc0OTQ0YmI1MWY0OGY4NjI5MTliYTY4OTBjMTI3MWJjZDY2MCBsZWdhY3ktdHJ1bmsKKzQ2MzEgOWY1MDBhMzRjMzU1NDE4MTFjNTY0YTg5MmVkMjZmNzg2ZGRmNDdjZiBsZWdhY3ktdHJ1bmsKKzQ2MzIgNjVkODdmMDZmMDhmYzMwYjgzYWMwYTM3MTA0ZDY2YjBjNDA0Njk0OCBsZWdhY3ktdHJ1bmsKKzQ2MzMgOGRhMDNkZWNlZjU5M2RkZTBlNDRhYjEyN2E2YzNhNGNjZGMwYjk0OCBsZWdhY3ktdHJ1bmsKKzQ2MzQgOWI0NTFjODRhN2JmOTMwMTEwMTI2Mjg1OTRmMmE3YjQ0YTZmMjA3OSBsZWdhY3ktdHJ1bmsKKzQ2MzUgMDA0ODAyNGI3ZWY4NGNkOWMwMGU1NzhkOTc2MjBjMTUxNTllYzI1ZCBsZWdhY3ktdHJ1bmsKKzQ2MzYgZGZhYmIxM2JjZTcwZmMxODFiMjZjMDJiNDE5Y2ZhMDU1MDk5MTg4MiBsZWdhY3ktdHJ1bmsKKzQ2MzcgNjJiZGRlZDVmMDBhMjMxNTFjNDgzOTZmMjA3MWQ1MjE1YjdhYzRjNSBsZWdhY3ktdHJ1bmsKKzQ2MzggODdmNGQ2ZDJlOWM4OWE4NGU5OTAyMTZjYTY1NzViODgxNWY5MjczZSBsZWdhY3ktdHJ1bmsKKzQ2MzkgOWM4YjQzMjM4MDhiYzBmOTkxMzNkOWIyN2UyYjE0NWU5NzljZDEyMyBsZWdhY3ktdHJ1bmsKKzQ2NDAgOTVjYjUyYjg1Zjc4NjdmYjQ3YzY4Nzk5NDI0NWJjN2M1ZDViOWE1MiBsZWdhY3ktdHJ1bmsKKzQ2NDEgOTY4ZTI0ODRkOTRkYTM4MmQ0OWM3MzNjMDNjNGUyOTkzZDExNzQ0NSBsZWdhY3ktdHJ1bmsKKzQ2NDIgNjQ2MWZmMGM0YmVlNmYzMDU2MmExNTQ4MzM4N2M1ZGUxNzZjNWYxOSBsZWdhY3ktdHJ1bmsKKzQ2NDMgZDU5NTY4MzgxNDQ3ZDBlMzI5OTVmNzVhNzNkMjBhMjg1ODhkODM0YiBsZWdhY3ktdHJ1bmsKKzQ2NDQgYjQwZTEwYmRhMjMxOTFkMmQ3NmI3ODgzNDZkNGQxMjJhNDg2YjA2MiBsZWdhY3ktdHJ1bmsKKzQ2NDUgZjQ4OTUxZGFiYTRmZmMzZTc1NjI1ZjM0YTRkZjNlNjNhYWZlZWJlYSBsZWdhY3ktdHJ1bmsKKzQ2NDYgZjc4ZmJjY2FmNThjYzY2ZDFiODA2NjM1MTkyYjUxZWIyNjA3MmVlMSBsZWdhY3ktdHJ1bmsKKzQ2NDcgMWMwMTJkODJhOTc1OGMyMmIzNzQ1Nzk3Yjc0ZWZkYTk2ZThiMTMyNCBsZWdhY3ktdHJ1bmsKKzQ2NDggOGU0NzZjYTNhN2EzZjJmYWY2ZjFmNjUxN2Q2YmJiODg3NDA2OTY0NyBsZWdhY3ktdHJ1bmsKKzQ2NDkgY2NjMjc5ZmY5MzVkMGY1NGE2YmM5ODE1ZmUxNTEyZDUwNTI1MmJlNyBsZWdhY3ktdHJ1bmsKKzQ2NTAgNWU1NjhiYWNmYmU5OWJhNjJhODJhMzhhYzUyNzQyNWJjZjc4MmRmYyBsZWdhY3ktdHJ1bmsKKzQ2NTEgOTFhNDNlYTExYmEzNTk0YzkwMmMxZWJlNjU2NGIxMDI2MTBhZTk4YyBsZWdhY3ktdHJ1bmsKKzQ2NTIgMjc1NTdlNzBhOGYwMjliY2Q3OTNiNzJjNmFhMDk3ZDMyZTA4MjMyMSBsZWdhY3ktdHJ1bmsKKzQ2NTMgZjQ2NzFiNjgxYWI5OGU3NjIwZmQ5NzI5YzQzNjE4MGU3MDljNDYwOCBsZWdhY3ktdHJ1bmsKKzQ2NTQgNWFlOTIyY2ZlNDA0OTM0N2JiMDc0MDNkMDBlNTZkYmVhYmRmZDE4ZSBsZWdhY3ktdHJ1bmsKKzQ2NTUgOGYxZGFmZmU3OTliY2YzNGUwN2FmYmM5OGQxMzc3MDg4MzQ2ZjRjYiBsZWdhY3ktdHJ1bmsKKzQ2NTYgOTg5NGU1NTQ2OGVjNjBmNzVhMmFmMDA2MzNkZjgzNDAwMzQ5NDU4ZCBsZWdhY3ktdHJ1bmsKKzQ2NTcgY2RiMzczZjY1YmYzODBkYmQyOTQ3MmQ3ODgxNGIyZTAwZTAwY2I0ZSBsZWdhY3ktdHJ1bmsKKzQ2NTggMDJkZDYzZDNmZTliMzEzNzBlZTU3MzY2NGJlMmEyMTE5NWE0NDQ1ZiBsZWdhY3ktdHJ1bmsKKzQ2NTkgNTI3ODg5YWU4NDUwMzkwOTc3ZDNlODk1MjFiNGMyZGNlYjkxMzQxNSBsZWdhY3ktdHJ1bmsKKzQ2NjAgMGUzMDI3NzFlZTVhMmJmYzdiZWUxOWMyODdmY2Y5YjNmODM2MjViZiBsZWdhY3ktdHJ1bmsKKzQ2NjEgMzNlYTljYzdkN2JhZTcyM2M4N2EyNzIyNmQ4MjM0MDNjNDg0YTg5MSBsZWdhY3ktdHJ1bmsKKzQ2NjIgYzY4YTAxMTNiNzVhMjdmZWEzM2JkMzY0MGNmYzUyMGYxYTUyYWQ3ZiBsZWdhY3ktdHJ1bmsKKzQ2NjMgNDA1M2Q0Y2I1MGUwZDcwMTc0NmE3NTc0OWE2N2NhMDhiN2NmMDI4OCBsZWdhY3ktdHJ1bmsKKzQ2NjQgZTczNGM3MjM1NzI3ZTc0YjU0YWQ3OWIzMGNmY2VmMmQzNWMyNDEwYyBsZWdhY3ktdHJ1bmsKKzQ2NjUgZWIzZTYxZGIwZGRhOWM1YWY0NTU4OWNhMjIxZTM4MWU2YjE1ZjNjNyBsZWdhY3ktdHJ1bmsKKzQ2NjYgNjRlYjQ4N2NhNDY1ZDZiNmEyODYwNWU5OThjODc1MWNhYTE3NzFkZiBsZWdhY3ktdHJ1bmsKKzQ2NjcgOTM5NzkxZjIxOWE2M2VkODU2MWVjNmJiNzU2YzRlNzdmNGU5YWY1OSBsZWdhY3ktdHJ1bmsKKzQ2NjggMjcyMjI5MzQ4ZmUyYjc3YTE1YzRlMzE3NWE3NTY5MTQxZWVkODE1YSBsZWdhY3ktdHJ1bmsKKzQ2NjkgYTNiZDYxNjMyZjE0NWVkOTg4YTFjMmFiN2Q1OWEwYzUwNGM3OTc1ZCBsZWdhY3ktdHJ1bmsKKzQ2NzAgYWJlZDM2OGQ2OGVmMTg5MGM2NzI1Y2Q5MWViOWYxZjJkMmVlZmYxOSBsZWdhY3ktdHJ1bmsKKzQ2NzEgNzZkNDNjMDMzODQ4MTBiNTI3MTJhYmVkYzZiNTllYTcxZjljZDE5NyBsZWdhY3ktdHJ1bmsKKzQ2NzIgY2ZlYWE1MDgyYmE4MzFiNjIxYTAzNGI3NzI5M2I4NGViN2MzMjI4ZiBsZWdhY3ktdHJ1bmsKKzQ2NzMgMDYxMjEzMmUwMDE4NTdlZTRhOGM0ZWEwZjkxZjM1NmM0YzMxNmVjNSBsZWdhY3ktdHJ1bmsKKzQ2NzQgOWJjM2E1YmFhNjgwZTM4ZDQwNWNjYzcxOThlOGQ0ODJlNmQwNTkzNiBsZWdhY3ktdHJ1bmsKKzQ2NzUgNzRhMGE2MTIxYWY3MWI2YWM3MzQ5NjVhZGNiZGE3MDVjOGY4YTE4ZSBsZWdhY3ktdHJ1bmsKKzQ2NzYgYmJiNTZkYzNiNTI2YjU1MmI1M2Y2OWU3MmNiMmRjMDNjNzBmZmJkOCBsZWdhY3ktdHJ1bmsKKzQ2NzcgYWEzMzY1ODE1YzIwZDc1YjIwMTMyM2VlNjRlMjEwNzM0ZmY1ZDdiNCBsZWdhY3ktdHJ1bmsKKzQ2NzggMzI0MzVkMzNmMzRhNmY0NGM4ZWNmYjU0MDhkNGEyMzhkNjg2N2U5YiBsZWdhY3ktdHJ1bmsKKzQ2NzkgNDk3MTk3ZjM1NzNjMTBiOTRlM2UxMDhjNmU5Y2NkZmUyNTE4NzNkZSBsZWdhY3ktdHJ1bmsKKzQ2ODAgYzJkMThiNTgyMzJlZGVmMTY1YjMxNTBlNjIwMzQwOTk1OTAyNjJhMyBsZWdhY3ktdHJ1bmsKKzQ2ODEgZTUzZDAxOWU3ZDQ3NjEyZDJlNjQ2ZmY3ODNmNTg5OGJkNGZiNjRjZSBsZWdhY3ktdHJ1bmsKKzQ2ODIgOTU4OGMyMzhlNjYwOWMxMzEyNDEyYjViMjEzZGFmYTYzZmNhMGJhMCBsZWdhY3ktdHJ1bmsKKzQ2ODMgNGJjZjFiOTZlZmVjNGYxMTZiMzMwOTQwZjM3MTNhMmZjOTc2Mjg4MiBsZWdhY3ktdHJ1bmsKKzQ2ODQgOTJlNmY1ZDhiZTgyYWI5MTQ0OGJjNjczZmQ0ZThmZjRkNzU2YzU4ZCBsZWdhY3ktdHJ1bmsKKzQ2ODUgMWU4YjM0N2EwNTZjZjM2NjZlZmU1MzE0NmFlMzcyODNkYzg3MjRhZiBsZWdhY3ktdHJ1bmsKKzQ2ODYgOGQ1ZTM2YjM3YTQxMzIyOWZhOTFlMTE3ZDc4YTFmNWU0NzhhOTcyNSBsZWdhY3ktdHJ1bmsKKzQ2ODcgMDEwMzc1MzJjMDg2MGExYmM5OTQxMTM3YTI0ZDlkN2NmZTNiYjJiOCBsZWdhY3ktdHJ1bmsKKzQ2ODggN2I2NTQwNDk2ZjU1NGJiNmU1NzRmMWEzMmU2NTAwZmI2ZWRjMGIzMyBsZWdhY3ktdHJ1bmsKKzQ2ODkgMDFlZDRjZDIxNTc2Y2JiNDUwYzhiODE2ZWY3MTBjZWE3ZDQ0ZmNiNiBsZWdhY3ktdHJ1bmsKKzQ2OTAgMWI2NjI0OTc0MjZiNTNhMTBlMmU4OGYwMDgzODg2OWNkZDY1M2NmMyBsZWdhY3ktdHJ1bmsKKzQ2OTEgMGIwYjE4ZDY1NWQyZTljMDVlNGU1N2ZlMmNmZjhkNmE4MWUyMWM1NiBsZWdhY3ktdHJ1bmsKKzQ2OTIgYjVkY2JhN2I3MzJkMDNiMGRiZGMwMDA1MWNiODAxZTc3ZjEzZTcwNSBsZWdhY3ktdHJ1bmsKKzQ2OTMgNDQyYmFlOGZjZmRjNjUxNGYxOWQxYWNmZjhiYTYxMTE1ZGYyZmIwOCBsZWdhY3ktdHJ1bmsKKzQ2OTQgOTRiODQ1MzVjMzRlMTFkOGVhMjViYWJkYmMwYmNiYmUxNDYxYzU4NyBsZWdhY3ktdHJ1bmsKKzQ2OTUgZmVmYWUzN2MwNTNjZmQzYmNlZjNkOTM5YThmM2ZkNzU2Yjc4YThiOCBsZWdhY3ktdHJ1bmsKKzQ2OTYgZDNiNWJlMGM4NzJmMzNiMWVlOTEwODYzNDRhZDJjNzBjNjIwMjFhYiBsZWdhY3ktdHJ1bmsKKzQ2OTcgMjgzYThlYjJlMzE3Y2I3ZDdiMTE1YWM4YjA0YTJmZmU5ZjYzNGJlZiBsZWdhY3ktdHJ1bmsKKzQ2OTggNzJlMDVjNjFjMmZlNTkzMzc3ZWE3M2NiOGViNGI1Yzg3YjIwNjI1NiBsZWdhY3ktdHJ1bmsKKzQ2OTkgN2ZhNDhhYjRiZTBmNGJjM2Y1MTNhNTA4NGMxOWI2ZmYzYTAyZjYwMCBsZWdhY3ktdHJ1bmsKKzQ3MDAgMWFiMzViNmY2MzhhMjY2YjcxNzY3NzVmNDQwOGNkM2U5ZGI2YWJjNSBsZWdhY3ktdHJ1bmsKKzQ3MDEgOGFkMTM2MzI4N2FhOGJjOTgzNWQyYjQ1MTI5OTU2NmY0NTJiMTNjMyBsZWdhY3ktdHJ1bmsKKzQ3MDIgNDM4ZjUzZTdjZmQxNGU5NWVhNzJkODlkMGM3YmM0OWY1YTU5YzIwOCBsZWdhY3ktdHJ1bmsKKzQ3MDMgYTc2YTc5Zjg5NmNmNWZlMjExM2JiOWY2NmFjNGRkNjAyMmQ1M2Q3MSBsZWdhY3ktdHJ1bmsKKzQ3MDQgM2JlZjFhZmY4NzFiYzM0OTIwNzA4NTk3NDUxNWEzNTZkMWQ1N2MwNSBsZWdhY3ktdHJ1bmsKKzQ3MDUgZTBhMzI0MmQ1YWU3OWQxNjIwYTIyNjI0MmE4YjNjYWExMzk0ZWI5MyBsZWdhY3ktdHJ1bmsKKzQ3MDYgZTlkMTFmOWI4MmUyYjU4MWE5NmI3MzI1ZTIzY2ZkMDc3YTM4OTQ5MyBsZWdhY3ktdHJ1bmsKKzQ3MDcgYzIzZDA5MjIxNWQyYzNlNWY4MDMyMjIyMjVkZjcxYTZjM2E3NjY3NCBsZWdhY3ktdHJ1bmsKKzQ3MDggNjdlOGVmNjk4YTQyZmYyNzIwYWY3ODE1MGVjZDk3ZDBjMzM0OGQyMCBsZWdhY3ktdHJ1bmsKKzQ3MDkgMzgyZWRlZjJkNmQ3MGQzN2MzNDI4OWU4Yjc0MTEzODI3ZjI2YjhlOCBsZWdhY3ktdHJ1bmsKKzQ3MTAgZDA5MWIyNDZhM2E3YTViYjJjMTQxNWRmYTIxM2NmMTlmZTY0ZjY1YiBsZWdhY3ktdHJ1bmsKKzQ3MTEgZWU0Yzk1NGNkNWRmNTJlOWM0MDczOTdkNGRiY2QxY2ExMDQyNDQzNSBsZWdhY3ktdHJ1bmsKKzQ3MTIgYjFhNmE4MWFmMWNmZjQ3ZDM5YTUwNDhhMThjYTk4MTU1OGY1NzI3NCBsZWdhY3ktdHJ1bmsKKzQ3MTMgODNkMDY0MDRmNmUxMTQ0MmNkMzEwZTY5Y2FiYWZlN2E3ZjI2MGFiYSBsZWdhY3ktdHJ1bmsKKzQ3MTQgYTgxYjZkYjZkMzNjOTRlOGQwOTQ4NjlhMjExMWI4NzA4OThiNzIwMCBsZWdhY3ktdHJ1bmsKKzQ3MTUgNjQ1ZTk2MzQzZjg5ZmVmOGRiOThmNTNkNmE4OGYzNzRmZjBkNWM3YyBsZWdhY3ktdHJ1bmsKKzQ3MTYgMDNiZDc5NDMyZjA2OWM2MzJhZTVhZTg0MjFmNzI0YzEzZWY3MWRhMCBsZWdhY3ktdHJ1bmsKKzQ3MTcgNzg5NWE5NzMxM2U1ZjRjZmFkMjRjNWE2YmE1NmU4NDY0NTM5ZTIwZSBsZWdhY3ktdHJ1bmsKKzQ3MTggODVhYTJlNGQwMTIzYzUzYzVlNjhlODM0YTQ2ZmM3MGI4NTE5NWFjYSBsZWdhY3ktdHJ1bmsKKzQ3MTkgNGJjYzkyOTE2ZmFiYjJmNmM1MWU0ZTExNTE4ZjY2N2VkYWY3ZWNmOSBsZWdhY3ktdHJ1bmsKKzQ3MjAgM2E4M2MzY2VmNGIyYjVjODRhOTM2N2ZlMmZiMDBkMzZiOTQzMWVhNSBsZWdhY3ktdHJ1bmsKKzQ3MjEgNzQxMWI2YTA2OTIwY2Q2ZDRiZTIxMDZkYWYxNGZjMjM4NWQzYmM4MCBsZWdhY3ktdHJ1bmsKKzQ3MjIgYWM2ZjY5YjFlOTkzMDcxNjIwM2E3YTU0YTEyNmZiOGU3ODYyMDVlYiBsZWdhY3ktdHJ1bmsKKzQ3MjMgYThjNmRhM2JkMzA1NmRkNTZmOWZlMDM4Y2NjMTRiMzhkNWFiMTliNCBsZWdhY3ktdHJ1bmsKKzQ3MjQgM2E2NThlZWMxZjAyZTE0ODVlNjgzM2Q2ZjBlYmQxYzhiN2RhYTZlMSBsZWdhY3ktdHJ1bmsKKzQ3MjUgOGExMjQ0ZTdjYjNiZDJhNDgzY2YzZjY5YTUwZjBlYzNiODQ3MzMyMyBsZWdhY3ktdHJ1bmsKKzQ3MjYgNThhYTdmM2IxNjkyYmY1Nzk4Y2VhMTY2ZGUzMjAxOWRhZjhjM2JhYyBsZWdhY3ktdHJ1bmsKKzQ3MjcgMDc2NWQwYmQ4OGQ2ZGE1YWZmMDQxODY3MjQyNDBmMzM2NDg4NDQ1MiBsZWdhY3ktdHJ1bmsKKzQ3MjggOTA4ODBiZDA5MjIxZGVjZDNhYmM4ZmY1M2U3Y2ZmZjYzOTg3MmY4OCBsZWdhY3ktdHJ1bmsKKzQ3MjkgZTViOWY2NDQwNTNlOWUwYzRjZDFiZGQ5MTAzOWVlOTY5OTcxOTQxOSBsZWdhY3ktdHJ1bmsKKzQ3MzAgNjZkNmQxM2RmNGY4YTk4MjA0ZWM0YmE0M2JkYjRiMzM3MzJlZTc1NyBsZWdhY3ktdHJ1bmsKKzQ3MzEgZGY3ZTI2YjVjOTE4OWJhNDNhMGEwZGY0MmQ4MjNiNGE5MGVkOWJmOSBsZWdhY3ktdHJ1bmsKKzQ3MzIgNjU2NDQ3NjYxNThhZThlNGNhOTczMmE1NzMyNjk2ZjUzYjViNmYyYSBsZWdhY3ktdHJ1bmsKKzQ3MzMgNjE4NzAxY2RmNjAwMDEwNjAyZDlkYmE2OTQyNjdhM2QyNWJhNTZmMiBsZWdhY3ktdHJ1bmsKKzQ3MzQgNjUwY2I2N2Q3NjU5ODQyZGVlOGRjYTk5YmM1NTVmZmE5NTcyNWViYSBsZWdhY3ktdHJ1bmsKKzQ3MzUgZWVhYWY4NzVmN2I2ODEzOTczZWU3ZGMwZjFkZjc1MzYzZjJkODZiMiBsZWdhY3ktdHJ1bmsKKzQ3MzYgYjAzNGI0ZWEyYjM5OTAyNmViY2ViNTRkYjk5MmJiMWRmMDhhYTBjYyBsZWdhY3ktdHJ1bmsKKzQ3MzcgNzg1OWQzYWFiMWI0MDUxOWQ4OTEzYWIyMjI3NTJmMWQ1NGU2YzJkZCBsZWdhY3ktdHJ1bmsKKzQ3MzggNzFjMTFhNmU0YmMwMGYyYjc5YzIxOWExMDZiMjE0ODA1NDcxODA0OCBsZWdhY3ktdHJ1bmsKKzQ3MzkgNWU2YzBjZGFhN2MxYmJjY2RjMmQ2ZDYxMDJlOTBmMjg5MWMwZjJiZiBsZWdhY3ktdHJ1bmsKKzQ3NDAgNTU0NmY0YTZlM2MzNGZkMmUzMTk3ZjU3YmNmMjJlMjYwMjgxMjRhMSBsZWdhY3ktdHJ1bmsKKzQ3NDEgNTQwZjg0NDRlZjhhODczMDA5MzQxN2NkZWFmM2MyYWY4Nzk1NmQ0OCBsZWdhY3ktdHJ1bmsKKzQ3NDIgYjRjYWFjMTQyOGQwZGE3ZWYwOTk5MDIwYTcwMGVlZGUyOWU1Y2ZlZiBsZWdhY3ktdHJ1bmsKKzQ3NDMgMzE5NWRiNjY4OWZkNjEzZWVhYjE2YjY4YjZlZDA4MWQxODQ2OGQxYSBsZWdhY3ktdHJ1bmsKKzQ3NDQgZjVhNmU2ZWU1MjljMDdiYTc1YzU2ODRkMDU1YzM2ZjVjZmRkYmQ5OCBsZWdhY3ktdHJ1bmsKKzQ3NDUgYWM4YTIyNWIwNTFiNzU3NzIyMTdiNGYwZTQ5MzFlMDM1ODZmN2IyYSBsZWdhY3ktdHJ1bmsKKzQ3NDYgMDFhOTU0MTI0NTc3MjRmYmQyMWFhNzAxNjg2OThmMDE2MzYxMjE4NSBsZWdhY3ktdHJ1bmsKKzQ3NDcgYTI0MTQ2MjQxOTkxM2I3ODUxYTA3ZWE1NzhiMTNhOWY4NWRhM2JiMiBsZWdhY3ktdHJ1bmsKKzQ3NDggNjI2M2UyZmQ5Mzk4ODgxMzk4ODE1NGYzYmIxNGZlN2JmOGYyYWEzMSBsZWdhY3ktdHJ1bmsKKzQ3NDkgM2Q2YzlhNDdlYTQ0NWE1M2ZiMjM3MWI2ZGIwMGY5NWQyZjkzMTVmNiBsZWdhY3ktdHJ1bmsKKzQ3NTAgZjE3ZDZlNmI0MGRhYjE0YzVhY2IxNTI5M2Y2OTgyNTQ3NGFhOGY1YSBsZWdhY3ktdHJ1bmsKKzQ3NTEgOTcxN2Y2YThmNWZhZmU5ZWJjZjJmNjhkZTc0Mjc4ZmYyZTA4NmUxOSBsZWdhY3ktdHJ1bmsKKzQ3NTIgZmU4ZGI3OGYzMTFjOTZjZWQ2OGNkODc5NTNmODZjZTM0ZTU1MGJiOSBsZWdhY3ktdHJ1bmsKKzQ3NTMgOTkwMDk5ZWQ3ODEwNTFkNTVlNGMwMmYxMzMxYWY0YTAyYzc2NWU0NyBsZWdhY3ktdHJ1bmsKKzQ3NTQgZDIwNDlhMWQzY2M1Y2YxY2QyYWU2NThjMWRlNDM5MmEyZTMzN2RhYyBsZWdhY3ktdHJ1bmsKKzQ3NTUgYWRhYjY2ZmFjMzBlOTdlYzc4NjZmZmUwM2UzNzAzMzU4ZWZlYWY2YSBsZWdhY3ktdHJ1bmsKKzQ3NTYgNmEwNDI1NmVhMDg3N2MwNzRkMmE5Mzg4YzQ2M2ZmM2M5MmVmMjhkYSBsZWdhY3ktdHJ1bmsKKzQ3NTcgNTA1ZmM0NzhmZjA4NTE0ZTUyM2RhNjE4ZDRmNTUzZTE5NzY4MWRiMSBsZWdhY3ktdHJ1bmsKKzQ3NTggMTcwYjk5ODYyZDA5NWQ5NjM4NTkzMWExYmIzZGZjMTQ1OWI4NGZlZCBsZWdhY3ktdHJ1bmsKKzQ3NTkgNjVhNjhjNTFlOWYyYTcwZmYzNmZmY2QwOTZlM2Q5MDNhZWNhZmQzNyBsZWdhY3ktdHJ1bmsKKzQ3NjAgMDhiNDU3ZDZiNTE2ZWRmNDU2ZmY3NjM2MDdhMjA0ODVhMGE3ZTRjZCBsZWdhY3ktdHJ1bmsKKzQ3NjEgNWFlZTJjNWQ4ZGZmY2FlYTNlODZhNzc4ZDA3YmZhYTRhNmJjNjlhYyBsZWdhY3ktdHJ1bmsKKzQ3NjIgMTRiMTI2ZDBiNWJlMzRiYzk3YjEyZDYyMjk4MDllZGVmYWRmMDM3NCBsZWdhY3ktdHJ1bmsKKzQ3NjMgNTZjYTY3ZGRlYzg1OGI1NmQwZjAwMTdmZjJiYzFmNmE0ODE5ODdkNyBsZWdhY3ktdHJ1bmsKKzQ3NjQgMDc5MTNmYjhmOTJmMDQ5OTM5MGI3YWIxMjkzN2QyMDVkNTM1OWM4NCBsZWdhY3ktdHJ1bmsKKzQ3NjUgZmM2ZTk2MjIxMDg4YjA4MjM1N2FkMDhiODc4MmM0Njc3YzA2YjllMiBsZWdhY3ktdHJ1bmsKKzQ3NjYgNDBhZWM0OGNkMWUyMTQ3ZDhmOWFmMDZiMWNiMGRkMDBmYWNlNDNiMyBsZWdhY3ktdHJ1bmsKKzQ3NjcgZmY3MmE1ZjlhNGVlMTI0YWEwZDg4YTkxMzBiZGI4NjU0OTZlODFmYyBsZWdhY3ktdHJ1bmsKKzQ3NjggNTE1ZTFkMDMzOTRhZDg2NjllYzRkOTk4Mzg0ZGYwNzkyNjA5NDc3MyBsZWdhY3ktdHJ1bmsKKzQ3NjkgMTQyNTYxNzUxNGFjY2Y4YWEzMGMxNWM1NTMwNTA2ZmU4ODIxZmUwZCBsZWdhY3ktdHJ1bmsKKzQ3NzAgZWQ4MjFhOTliYTM5MjM5NTA3YzAwY2E1ZDdkZTczNTg4YzBjNTEzMCBsZWdhY3ktdHJ1bmsKKzQ3NzEgMWNlMDdmNjQ4NjJlOWY1ZjgwYzY1NmU2OGYwMTU3YzYzZTg2ZWQ5NSBsZWdhY3ktdHJ1bmsKKzQ3NzIgOTllN2FjMjJiZDJlMmQ1MTg4YzBkZGMyMjgyMGQ2MTdhYWM2ZjA4MiBsZWdhY3ktdHJ1bmsKKzQ3NzMgMWU3MjA3MTI4MTY3ODhjNmNlZDhlOTU4Zjk3Nzc2NGU0NWE4YTNiYSBsZWdhY3ktdHJ1bmsKKzQ3NzQgNWY3MDU4ZDgxNmNmOTFmMjUzMzQwZDRkY2QwYmY2YjlkZjZjN2YzZCBsZWdhY3ktdHJ1bmsKKzQ3NzUgMzE2MWU3Y2YyMDU0ZjczNmY4YzI4YzE2Y2QzYjlhYzFkZmQ3ZDliOCBsZWdhY3ktdHJ1bmsKKzQ3NzYgZDNlMmY5ODhmMWFmMGUxNDgwNWM1NjE1ZmIzOGM0NDAxNTc5ZWQwYiBsZWdhY3ktdHJ1bmsKKzQ3NzcgM2RmZWY2N2UwZGVkOTBlN2QxMTI4YTNmYzJhMDI0MjBhNWFhMmYzMCBsZWdhY3ktdHJ1bmsKKzQ3NzggZmFhZWNlN2NjZDZlNzFiMTVkNDgwMzcyMDI1MjM4ZGI2MGE0YWNjMSBsZWdhY3ktdHJ1bmsKKzQ3NzkgN2JkZTRiMWRmNDk0MDk3ZjdhYTE5OTY1NzRiNjNlZmY4ODdlYmVkMCBsZWdhY3ktdHJ1bmsKKzQ3ODAgZThkMjA3NjU4YTA0NTJiMWQ1OTI3NzNkM2VlODRiNWMwOGFkYjZmOSBsZWdhY3ktdHJ1bmsKKzQ3ODEgNDNmOWU3NTQ5YzcwZTZlODM3ZDBlMGE2NjZhZDI0MDZmNGUzNmIzYiBsZWdhY3ktdHJ1bmsKKzQ3ODIgM2VkZWM4MjExYTM2YWQ1NzE5M2U5ZDg4MTlmNzU5MDAwZjJlMjlmZiBsZWdhY3ktdHJ1bmsKKzQ3ODMgMWIyNjJkMTkwYTRhNDgxMDk4M2NjM2Q2NjViNTU5NDQ5MzM5OWMxOSBsZWdhY3ktdHJ1bmsKKzQ3ODQgODQ1NjBmNGIyOWVmMDlhMjA5Y2RjYzc4OGQ0Zjk2NWYzZWFlMzcyMSBsZWdhY3ktdHJ1bmsKKzQ3ODUgMjQyZGQ1ZWQzYjA4NWVlZTJmNDI2NzJiYTY1MDQ5NTIyMjZhMjk5ZSBsZWdhY3ktdHJ1bmsKKzQ3ODYgMzJlN2QyNjk2ZDc5MWM2OWVjOTlhYjExMjU2MTdlOGY0Yzc4YWUyNiBsZWdhY3ktdHJ1bmsKKzQ3ODcgNjQ2OGZkMDI1MWQyOTY4ZTYzMTE4NmZhOTQ2YTUwNGE2MGFmZDM2YSBsZWdhY3ktdHJ1bmsKKzQ3ODggZDhiNGM3ZGI3N2FlNmJmZjhiMjVlYTI3OTgzYWEyNTA0Njk1NTIyZCBsZWdhY3ktdHJ1bmsKKzQ3ODkgZTExZTZiMzU4NTMxM2FhOTE5ZDdhNGUyZjgxMzQ1Nzk3ZmZmNjMzNSBsZWdhY3ktdHJ1bmsKKzQ3OTAgYjIyNDExNzdiY2NjNjI3NzMzMmU4YTVlOTU3ZjhjYjg3NmJmMzQwMyBqYXIKKzQ3ODkgOWU4MmRhZjc2MDViYWQ3OTc2YTlhYmM5OTdjYjVlMGFiZTQzNDA3OCBsZWdhY3ktdHJ1bmsKKzQ3OTIgNzFlNjA4NzFjNjgxY2U5MTQxOTc0ZWZhYzNlMGIzM2M5ZmUzMjg4YSBsZWdhY3ktdHJ1bmsKKzQ3OTMgNGMyZjE0NTIxMjVkNTlkMDc1YzZmZTdkYWY5MDE0Y2JkZjE3OGYzNiBsZWdhY3ktdHJ1bmsKKzQ3OTQgNDEyNzg5M2E4N2FkMDVhMDIyZWU3MGI1OGFkODFjNjM3ZmJmOWU2NSBsZWdhY3ktdHJ1bmsKKzQ3OTUgMjFmMGQ1ZjE4Y2RhZTYxMDhmNWZjNWZkMjU0NTE5ODJkNjAxOWY5ZiBsZWdhY3ktdHJ1bmsKKzQ3OTYgNjNmYTM4N2MwMmZlYmNiMDhiMDU0YTBlZTIwMzNlYjAzYTg3NzA2NSBsZWdhY3ktdHJ1bmsKKzQ3OTcgNjcwZTUwYWUzODlkNTRjYzMyMTAxY2ZiNGQ1YWQ2OGY2MDhmMDU1NiBsZWdhY3ktdHJ1bmsKKzQ3OTggNGI2MTdmZWU0MjdkMzYzOGM4N2MwZDYyZDhjOWY1MzNiMzhiOWI3NyBsZWdhY3ktdHJ1bmsKKzQ3OTkgZWQwYWE0YTVkMTA2YjljMmI3YjJlZDNkODUwZTQ4NGJkNzA2ODQ2MyBqYXIKKzQ4MDAgMjc5ZDUxYTE4YWU0YjRlOGRjZjAwNzc2MGE5Nzc4ZDhiZmVmODhiMyBsZWdhY3ktdHJ1bmsKKzQ4MDEgOTU1MmVkYjRlYWJmYWMzNDFhNmQzZTRmMTAxM2ZhOTQ4YzAxNzcwZiBsZWdhY3ktdHJ1bmsKKzQ4MDIgZjA5ZDMyNTJhMzhiMjEzZWVlZDJjNzc2YTE4YmYyN2EyMjYzODNmOCBsZWdhY3ktdHJ1bmsKKzQ4MDMgZDA1Njg1OTkzNDc2ZDRjYjcwZjViMzRhZGRmMTExODAxMGYzOWYwNiBsZWdhY3ktdHJ1bmsKKzQ4MDQgZWQ0ODY0NjFkZWY2NzZmMDYxOTlhY2FmYmFkYmZjYzFkZWExYWU3MyBsZWdhY3ktdHJ1bmsKKzQ4MDUgZDY1YzQ4NWUwYWQ4MjM2MDAzN2Y4YWI1NmM0Mzg5OTFlNWRkYWQ4NiBsZWdhY3ktdHJ1bmsKKzQ4MDYgYTIwNTQ5MzM3NzViMDAxNGQ2MDVmZGUzZjdmMTRhODVlZTM4MTNmZSBsZWdhY3ktdHJ1bmsKKzQ4MDcgODVmYTAyYjg1ZDdkMTMwYTE0YTkxZDZiYzJlNWY1YzRlNTYwMWUwMCBsZWdhY3ktdHJ1bmsKKzQ4MDggMjZiMWIxNWZjOGVjMzc1NmE1NjNlNGU3MWU3YmJjN2E4MWVhNGZiYyBsZWdhY3ktdHJ1bmsKKzQ4MDkgOGE4NzY1MzQzY2MwZDQ1NWEwNjE4ODJlNTdjYThhMTQyZDlmYjIyYyBsZWdhY3ktdHJ1bmsKKzQ4MTAgZmJhZjU0MTY5NzExNzNiMzY2MDZkZTRlNWM1OWE3NWJmNTY5MDJlZSBsZWdhY3ktdHJ1bmsKKzQ4MTEgZGY1YjcyOGI4ZWI2MmVlNzk4NjA3YmEzODY1MGE2MTNkOGNlYTU4MSBsZWdhY3ktdHJ1bmsKKzQ4MTIgNmE5NDExOTg0NGViMzgyMGU0NGZjMzM2OTQwOWZjYzliYWM3Mzk5NyBsZWdhY3ktdHJ1bmsKKzQ4MTMgMTc0MGZkNzZmYzMzMmZiYzQ3OTVlMWZjODNmZGRkMDczZDU0OTE2ZSBsZWdhY3ktdHJ1bmsKKzQ4MTQgNGM0M2NiZGNkNTI0M2Q5OWNjMjUxMWUyOTRmYjlkZmNiYzI1NWQwMyBsZWdhY3ktdHJ1bmsKKzQ4MTUgOTE2YThmZjM2YTg1NDcwYmZhNmEwYzdhMDE1NjNjMDYwZjllNjQ3MiBsZWdhY3ktdHJ1bmsKKzQ4MTYgN2ZkNzQxMmU3MTg4NDhlMGYzMzMzYzJiNDZkNjE4MjQ5Yjk3ZTA2ZSBsZWdhY3ktdHJ1bmsKKzQ4MTcgZTgwYWNmYTEzYWMwMDA0NDk3ZDZiMzFlNGE1ZGE1ODIwZDJkODZjMSBsZWdhY3ktdHJ1bmsKKzQ4MTggNzQ3ZjBiN2NiN2JlNDM0Y2I5NjVlY2QxNGY1MmM0Zjk3NWYzNjEzNCBsZWdhY3ktdHJ1bmsKKzQ4MTkgMjFhMjNjZmM0ODQzMWFlOTFjYTAxM2UwMGVhMTFjMDEyMzM1MDNiZSBsZWdhY3ktdHJ1bmsKKzQ4MjAgOTY3NDdjNzg3YTgzM2MzMTkwZDNkM2MyMDE5NGFiMzJiYThlZWIxYiBsZWdhY3ktdHJ1bmsKKzQ4MjEgOGNmNjNjMzBmZmM4NzdlYzBhZDk0NjAwY2MxNDIxOTI1NjYzYTg2MSBsZWdhY3ktdHJ1bmsKKzQ4MjIgOTRiZjJmMDVkYTMxOWU2Y2UzNWUzM2Y3YWE5N2EzN2NmMjg0YjNiMiBsZWdhY3ktdHJ1bmsKKzQ4MjMgOTE1ZmFiZWM2NGEzMGFkNzMzYjEyOTAyM2EyZjA3MjdkNjNjZjI5ZiBsZWdhY3ktdHJ1bmsKKzQ4MjQgNjYzYWEwNTllMjlmZWM2NmYwMzM4MTk4ZmMzMjZkOWJiMTAzMjBlOCBsZWdhY3ktdHJ1bmsKKzQ4MjUgYmExYjc2YzA5MDQxNGEzZWM4MDY4YjU3MTVkOTQ2ZWExMzJlNmNjMyBsZWdhY3ktdHJ1bmsKKzQ4MjYgZTM4NjAzNWY4OTdkZmQ5MWFjNjM1OTYyNjU0Y2RmM2NiODYxNjU0NiBsZWdhY3ktdHJ1bmsKKzQ4MjcgMDRmNjFhNWE3NjU0MDljNGQ1MGFmNzQyMGI5MzU3NGFiMGM3MmJjZiBsZWdhY3ktdHJ1bmsKKzQ4MjggMGM4MzVjODA0MzIyNGNmNTkwNTUzMjc0NzE3ZWU0ZjI4MTcwMGMzYiBsZWdhY3ktdHJ1bmsKKzQ4MjkgNTgyYjAwZmJhYjE2MTQ1MjNmOGQ0ZjQzMjMyNzA2MGJlZjQzNTI5OSBsZWdhY3ktdHJ1bmsKKzQ4MzAgMzk3NDc4YmNhMGM0ZGFjMWRjMDNlMDJkNGQzYjQ2OWUyMGU3YzhlOSBsZWdhY3ktdHJ1bmsKKzQ4MzEgNTFjODgyNDk4NWY4YTUwODUwYWQwZWViNmVhZGUxYTczYmQ5Njc1ZCBsZWdhY3ktdHJ1bmsKKzQ4MzIgYzMxZWFlZDc3OThiYmE0MWYzMTRkMzhlNjkzYTc0ZjllNjhhMzVmNCBsZWdhY3ktdHJ1bmsKKzQ4MzMgZGFiMzRjYmY4ZDdmYTNmNDJhOTk3OWY4N2U5MjAyYjdlOGJjNWJmZSBsZWdhY3ktdHJ1bmsKKzQ4MzQgNGU4N2YzYTNmMzNhODdhYmZiMDhkOGQ3M2FlOTdmODAyNTdhNjQxZCBsZWdhY3ktdHJ1bmsKKzQ4MzUgMWEyMGQ1MDU4NzQ0NDhiYzcwMWFiZWExNjE1OTJjZDU0MjhkOGIzZiBsZWdhY3ktdHJ1bmsKKzQ4MzYgYzhhODMyMThiYTYxODcwYTZjNzE3ODAxZmI3ZWE1YjY0YmZlZmVjMCBsZWdhY3ktdHJ1bmsKKzQ4MzcgZmYzZmMzMGVkNzYwNjlhMWIzZGRlZWYwZjFmNGQzYjMxZjA3ZTU3NiBsZWdhY3ktdHJ1bmsKKzQ4MzggNjQ1MGQ4ODI4ZDJiOTg4ZDQxNDAyMDI3MTZkN2U5MTU0ZGJkYzRlNCBsZWdhY3ktdHJ1bmsKKzQ4MzkgNGNjODEzN2NjYjU2Y2ZmZjM5MmY2OWM2YmQ1ODM2MjNjYWU3MzZjYiBsZWdhY3ktdHJ1bmsKKzQ4NDAgZjhhYjkyNWVmZGE4OGFlMGRhMGEwZTNlNWU3MTc4MGFjOWQ0MDNhMyBsZWdhY3ktdHJ1bmsKKzQ4NDEgYzY1MzNiODk2Mjg4ODdhMzExZTljZjM4YjliMWQ4ZWQ4ZDk2ZDBkZSBsZWdhY3ktdHJ1bmsKKzQ4NDIgYzA5ZGFiZjcwOTk2ZmI5YTlmNzg2NmYyN2IxMzg1MzU2ODk5MjIyNyBsZWdhY3ktdHJ1bmsKKzQ4NDMgNTMxM2FjNmYzNGZkY2IwM2U2NzNjMTc2MTQwZjgwNzdjMWRkODBiNSBsZWdhY3ktdHJ1bmsKKzQ4NDQgZjk3OWU1YmQ2YTIyMzBlNzhjNTIzYmYwZjllOThlYTBkMDkxZWEwYSBsZWdhY3ktdHJ1bmsKKzQ4NDUgNDliZmVmMTdiMTJiNjVmYTc2YmZiMDljZjM0YWRhNWE1YTY4YjhjYiBsZWdhY3ktdHJ1bmsKKzQ4NDYgZGRiMTM4NjJmYmIyYmVhNzQ3YTY4MTdiOWE4ZGRlY2EzZGQxYTVkMCBsZWdhY3ktdHJ1bmsKKzQ4NDcgZWNiYmFhNTg0ZjNjMTY3Mzk4ZTA2YjQ3MTI1ZjIzZDMxYzM2MzA4OSBsZWdhY3ktdHJ1bmsKKzQ4NDggOWRjODc1YWQwNTBjODk5NDBlM2E1OTNhY2Q2ODI4N2U0YzcwOTBiNCBsZWdhY3ktdHJ1bmsKKzQ4NDkgYjE1NmJmNGJlNjJmMWI2YTljNTcxMzUyYTJkNjE5ZWQ3NmNlNDJmYSBsZWdhY3ktdHJ1bmsKKzQ4NTAgZmE4Y2RkM2NjNTQ1NDA1NTE5NDNjMDMyMDlkNWJmNGZkZWFhNTRkZCBsZWdhY3ktdHJ1bmsKKzQ4NTEgNDJiNTY4OWE3NDA5NWRkODA5MDI2NWNhZWI2MGUwMjM2ZThkN2ExOCBsZWdhY3ktdHJ1bmsKKzQ4NTIgMjljYTQ1ZWIzYWI3NTIzYmE3NTU3OTk5Nzc0M2E5NzA4ZTdiMjYwYiBsZWdhY3ktdHJ1bmsKKzQ4NTMgMDczNmE3ZWMyZjI4OWU1ZGVlOTFkMGNlOGEyZjdmOTViYjM5MjY5ZSBsZWdhY3ktdHJ1bmsKKzQ4NTQgY2FiYjdjNTczMmVmMWEzOGQ5ZjQxNDZhYzU4MjYxODI0MGM3M2RkNiBsZWdhY3ktdHJ1bmsKKzQ4NTUgNDM4YThjMjY1ZWI5ZjU0Yzg2N2NlZmY3YWNkMmI5MmJjOTRiMTNjNyBsZWdhY3ktdHJ1bmsKKzQ4NTYgZDMxZjY5NGMxMWE4OWI3MTExNzA2Mjk3NjMyMTY4ZGZhZjMxODA2NiBsZWdhY3ktdHJ1bmsKKzQ4NTcgMTMyNWIzZThlM2QzY2UxZjY1ZjA3NjgwMmEzODRlYWVjYTQ5YmQxNyBsZWdhY3ktdHJ1bmsKKzQ4NTggY2FiNjk5NDUzNzc1YzE5MDliYmFjODYwYTE5MjgyNjNlMDgyZTg4OSBsZWdhY3ktdHJ1bmsKKzQ4NTkgNzJjNzE1YzAwNGM4OTg2MWQ1MDRiZTdlZjRjYjUwYjQ2NmM0NzI5MyBsZWdhY3ktdHJ1bmsKKzQ4NjAgNzI0NmI5OWQyOTY2YTJjMmIyNTZlZTZjMWYwMzQ1ZGFmZWFhMzA5MCBsZWdhY3ktdHJ1bmsKKzQ4NjEgMGI2MmI1M2Q0M2Y4Nzg2YjY1NDFhM2E4M2E3NDMyZjNlNzk1YTc0ZCBsZWdhY3ktdHJ1bmsKKzQ4NjIgZTE0OTc1YzkxMGYwY2ExYTdkNjQ4MmRiYTBhMjMwNjlmY2U3NzBkYSBsZWdhY3ktdHJ1bmsKKzQ4NjMgOWE5NDI5MmFhNGMxNWJiZGQwNTljZTI2NDI2ODRkOTJlZGQyNjY4MiBsZWdhY3ktdHJ1bmsKKzQ4NjQgNzdlYjYzNzE2YjRmOThkM2E1NDYwYzBiYThmYzUxYjJjNmQ4NzBkZiBsZWdhY3ktdHJ1bmsKKzQ4NjUgNGZjMDMzY2I1NTQ0NWJhNmUxYWJiMjQ2YTg2YjY3N2M3OTVlOTI1ZiBsZWdhY3ktdHJ1bmsKKzQ4NjYgNDAzYTU2MzEyMTRiMDI0NTEwMmM1MzBiZGRkZDg1Y2Q0YjJjODkzNiBsZWdhY3ktdHJ1bmsKKzQ4NjcgZGQxYWIyMGY4MjIzYjM5ODY0MzRkYjVjNThiNjFhMDc3NmFmYmU3ZSBsZWdhY3ktdHJ1bmsKKzQ4NjggNzVhZTEwNGY3ZTZjNTFlYTJmMDQ1NmM3MmZlYTI0OTFmNDk3M2NhOCBsZWdhY3ktdHJ1bmsKKzQ4NjkgODEwYmMxNWUxOGY5ODNiZWYyMzViZTE2YTNiMzVmNmYxMjA1N2E2MSBsZWdhY3ktdHJ1bmsKKzQ4NzAgNjE0MjUxODM2Y2ViMjI3MzA5NjI2NTk5NWI4MmI1ZmEzM2ZmMjYwMyBsZWdhY3ktdHJ1bmsKKzQ4NzEgZWU4ZTkxYTE3NzQ1YWJiN2NmYTE0MjNjNzVmMjg2NmM3YzkxMjk5ZSBsZWdhY3ktdHJ1bmsKKzQ4NzIgNzVhYTUyNDZiMmY2ZjNkMWQyZmIwNzVkZDEyMzk5YWU4NDMyNjczOCBsZWdhY3ktdHJ1bmsKKzQ4NzMgOTdlNTcwNTBlMjc2MGNmYTI3MmY1MmRjMGIyZDA4NmViNTg4ZGQ5OCBsZWdhY3ktdHJ1bmsKKzQ4NzQgMjJiMWFiMGU2NDczNWRiN2Y4ODgzNGExZWQ0Yjk5NGFkY2VkMDZjZSBsZWdhY3ktdHJ1bmsKKzQ4NzUgNGE0NjJhYWNjMWU5OTE0NWI4MDNjYmY4YjMwYTg1NTY1NzFmNzJiMiBsZWdhY3ktdHJ1bmsKKzQ4NzYgNmJlZWYxNzg3MWY5ODJkM2NmYjU0YzBiYjM5ZDdhMWUzN2IxNWVhZSBsZWdhY3ktdHJ1bmsKKzQ4NzcgNmVkYTY0MmYxOWQwMzc4MGJmMDI5MDcyZmE3ZTkxOGI4NTIyOTQ0YyBsZWdhY3ktdHJ1bmsKKzQ4NzggZjRmNzFlYmVhNTNmMTQ1NDIzZTEwYTM1ZmZiNGE0Mzk2YTAxODNhMCBsZWdhY3ktdHJ1bmsKKzQ4NzkgNzNlZWZmNGQ0M2Y4NGFkNzZkMmJiMmYwZTBjNGZiOTQwNzBjYmIxOSBsZWdhY3ktdHJ1bmsKKzQ4ODAgMDBmNGU0MDA1NzVhOTczNDBlNjA5MTIxNjc2OGQxZGJhNTRlNWZkMiBsZWdhY3ktdHJ1bmsKKzQ4ODEgZWNjZjQ5MzdmMWRjOWFkMzVhZWZlZTUwZDQ3ZjNhNGJhMmZkZjZlOSBsZWdhY3ktdHJ1bmsKKzQ4ODIgOWJmMTg5OTZlZWQ4YzlkZjZiM2Y0ZWFkMDBkNWI0MmRlZDQ5OWExOSBsZWdhY3ktdHJ1bmsKKzQ4ODMgYmQzYWQ2NjM0ZTc2NDgyMDYxZjlmZDRmY2U1OTExNDUxOGY5YjcyYiBsZWdhY3ktdHJ1bmsKKzQ4ODQgNzkyNGI3ODE5ZDhmOTZjNzJhMThhZThmOTkxN2E1N2VjNjViY2QxNCBsZWdhY3ktdHJ1bmsKKzQ4ODUgZWZiMDY4NWE2YzkxY2JlNjU4OWE5MzY0YzBjOWFmMTU2ZTI2MmNlMiBsZWdhY3ktdHJ1bmsKKzQ4ODYgZDM5YWFiNmMxMzBkNDVkYjg5NDg4ODVmM2Q2ZjI5YzYwZDFlNzAzZSBsZWdhY3ktdHJ1bmsKKzQ4ODcgY2JiNDA3MmQ1MzhiZTdmMDQyYWVmODVhZmUwMDZiZWI5MmFiZjY2OSBsZWdhY3ktdHJ1bmsKKzQ4ODggNDQ1YmVhOGNlYWIxZDA3MDgzZDNlNGE2OGQ4YjNjZDE1ZjNhNmM4ZCBsZWdhY3ktdHJ1bmsKKzQ4ODkgNmNiZDI4MzBiNWEyMzhjZjU4Mjg0MDg1NzY2NjQ2MjFhYmZiZGI0ZSBsZWdhY3ktdHJ1bmsKKzQ4OTAgNWJjMzQxYzQwNzFjZDA5Mzk3NmRhODA0N2ViMjhjMTQzMzBjZjdiNSBsZWdhY3ktdHJ1bmsKKzQ4OTEgMWU4YWViYWI4NzRhZTEyNWU3ZmQ0NWI4NmQwZDY1MzdhNzBhMGUwMCBsZWdhY3ktdHJ1bmsKKzQ4OTIgZmE5OGRkYTA3ODc3ZjA4OGZiMWVkNzU2NGJmYWMyNjBlYmU5MGE3MyBsZWdhY3ktdHJ1bmsKKzQ4OTMgNjJlYmJjZmVhODI3MmI4NGQ2MzU5OGQ3NmY3NjVjZGY3OGI3YmUxZCBsZWdhY3ktdHJ1bmsKKzQ4OTQgMWY1OWYyYTEzMzEyOTZlZGYwMTIxMDU5NzAxNDI2MTllYzMzNjJmZiBsZWdhY3ktdHJ1bmsKKzQ4OTUgYzFkMjcwNDNjMjJmNDViNjQxOGY2NDdkYWNiNWE2NDAyNTc4MzEyZiBsZWdhY3ktdHJ1bmsKKzQ4OTYgZDU3N2Q3NDk5MThkMTgzZGQ2MzJkMTczNzA5ZTYwMzBjMjI5OTM4NSBsZWdhY3ktdHJ1bmsKKzQ4OTcgMmY4OWVjMWE5YzM4YzdkNzIxOTJjNzRmMDUwMDg5Yzg1YTIwOGEzMyBsZWdhY3ktdHJ1bmsKKzQ4OTggYTVlOTVmOWRlOTAwMGU1Nzg4MmNiYjNhYjg3Yzg2Y2Q3ZTdkMDIxOSBsZWdhY3ktdHJ1bmsKKzQ4OTkgMmRjZjc1MzgzNDdhOWQ2OGYyZThjOTU5OGFkY2E3MjQzMTU5YWJkYyBsZWdhY3ktdHJ1bmsKKzQ5MDAgOThjMWQ4NDEwMWE1MDgxM2I0NWExZjAxZDEwMDVlMzZiNmE0N2M1NyBsZWdhY3ktdHJ1bmsKKzQ5MDEgZjYxNzE2YWQwYjdmNTFmMzFjMDIzZjM0ZTVhZTQyYTgzZDk3MzEyOCBsZWdhY3ktdHJ1bmsKKzQ5MDIgNmYxMjExYjJlMDc3OWIxMTA2MmI5YjJjY2U2OTBmMjQ0NTA3NTNmZSBsZWdhY3ktdHJ1bmsKKzQ5MDMgNzM0OTlhNjY3ZTc4NGVkYTc0ODEzNjg2MWZkNGIwZjc3YTgxM2YxNiBsZWdhY3ktdHJ1bmsKKzQ5MDQgMmM2NTY1ZjFiN2Y4NjQ0NThkZDUzYTI5ZmIxODhiZWQyNWMwZmVhZiBsZWdhY3ktdHJ1bmsKKzQ5MDUgOGVlZWNkMjMzZDU2OWJiYTlmOGMyMzA5N2RkYzI1Njk3ZjMyOGVlYyBsZWdhY3ktdHJ1bmsKKzQ5MDYgOTRhNjQzNjY1NWUwM2ZiOTc1MzgxNDNlYTg2ZmU3ZWM3MDQ0MDY3YiBsZWdhY3ktdHJ1bmsKKzQ5MDcgNDgwYjI1MWEwNDY4MzViMWNiNDU4OTMxZTUxYjRhYTJkMGQ2NTdiYiBsZWdhY3ktdHJ1bmsKKzQ5MDggOWVmZDQwOGZjOWY2YmI3MjkzNmJkYTZiNmNjYzY0MTBlNmNkYWMwNSBsZWdhY3ktdHJ1bmsKKzQ5MDkgY2RkM2E3MjFiNDBlM2U4ZTk1Nzc1MzlkNjQ4OGU4Y2JlMzY1NTI1YyBsZWdhY3ktdHJ1bmsKKzQ5MTAgODk5ZDIwODc0NTY2Yjk4NmQyMTZkMTRmZTM2MDkyMTEwNGM0YmYyMyBsZWdhY3ktdHJ1bmsKKzQ5MTEgYjQyYWI3N2YyMjI2MDMxNjYzYzMxMjkwYTVhYWQzNWFiYWJlOTM3NCBsZWdhY3ktdHJ1bmsKKzQ5MTIgYmMwMzIyNWE0NDkzZjVkYmE2YjNmNmU2YTRmYTkxYjBkY2NkNmFmNyBsZWdhY3ktdHJ1bmsKKzQ5MTMgZTFhN2JkZmFmZWM5MzIzODg1Mjc4ODlkYmYxMWNjY2Y5ZWZmYTYxYiBsZWdhY3ktdHJ1bmsKKzQ5MTQgNjViY2I0MTgyYzFhMzIwNzk3OWVlYmEyOWY0MGY0ZTQxZTFkOWM3MCBsZWdhY3ktdHJ1bmsKKzQ5MTUgYmFjOTZkNWM0NjNmNDUyZmZhN2E0NGY3YWQ1YmRmMDEzYjBkZWMyYyBsZWdhY3ktdHJ1bmsKKzQ5MTYgMWMyOWY2YmRkODk4ZjZlMjRlN2JmNTUzM2M2YmYzNDU0OWViYjg4YiBsZWdhY3ktdHJ1bmsKKzQ5MTcgZDk0MDQ1YmQ0YTA0MTJiOWE2OTAwYTQwZDc5NjZkOTcyYzUyYTQ4OCBsZWdhY3ktdHJ1bmsKKzQ5MTggZTllODZhZTVmNWE0YTg3ZjFhNGRkYjA2MjU4MTYwNDEzN2QwMjFkZCBsZWdhY3ktdHJ1bmsKKzQ5MTkgZTc2NGI3OGE3MDRmNTE4ZjFhODM0MmZkYTFiOGYyYzQzNWJmY2IyMiBsZWdhY3ktdHJ1bmsKKzQ5MjAgZTcyNmY5MGQyYTlmZjI0OTU5ZGExMTlmMjI1ODU5MjU1NTU3ZDZhZiBsZWdhY3ktdHJ1bmsKKzQ5MjEgMWY0MTQxYWFmZTM2MTk3NjlhN2JlNGVhZjI1M2ZjNGRjNmEyNmM2ZCBsZWdhY3ktdHJ1bmsKKzQ5MjMgMzIyZmM1OTZmMWM0Mzc5MTMwMGU4MGNhZmRhYTlhMTQ1NTYxNmFjOSBsZWdhY3ktdHJ1bmsKKzQ5MjQgNGY3YzY3M2RhOTE4YjU2YWQxYmE1NWU2ZjRmY2Q4NDNmM2VhMjU3YiBsZWdhY3ktdHJ1bmsKKzQ5MjUgM2Q2NzM0YWI2Y2Q0MDJkZDAyMWU2ZDRhM2Q4NzllYzFmMzdlODNiOCBsZWdhY3ktdHJ1bmsKKzQ5MjYgOGUzOGNkMGEzYTMxNWZlMWJkN2E4ZTNjOWMxNmY1MDIwZTI3Mjg2NCBsZWdhY3ktdHJ1bmsKKzQ5MjcgMGUxZjlhMTRmYmQ0OTVhOTNhYjVmMzEyZTIxYmU2MDAzNjM5MmUzZiBsZWdhY3ktdHJ1bmsKKzQ5MjggNWJiMzlhNDJjNzI5MTIyNzRlZmE5MTFhOGYyYmFiMGJjZmNjYzJhYSBsZWdhY3ktdHJ1bmsKKzQ5MjkgZGQyODQ1ZDA2ZWIzN2FlMjk0MDhmZThiZmUwNzgwNWQwYjJlNjZiNSBsZWdhY3ktdHJ1bmsKKzQ5MzAgNTNmOTJhNDczYzZmMTBhNmYxYzA2MDdjNjFkNjQyODEwY2QyYjY5NSBsZWdhY3ktdHJ1bmsKKzQ5MzEgZGU0ZGMxNjViZmI2YTExNTI5OWM5YWExYzliOWIxZTI0ZDE5ZjI5ZSBsZWdhY3ktdHJ1bmsKKzQ5MzIgMzAyMDVkNjM0YTE1YjUyODEyNmFlYmRhY2FjZjU2YTM2ZWYxNjJlYiBsZWdhY3ktdHJ1bmsKKzQ5MzMgNzA4OWQ0ODQzNDA3MmVjZGY0NzliMDZlOTNjMjdjMDU3YzcyMWE0NyBsZWdhY3ktdHJ1bmsKKzQ5MzQgMTFiOTM3ZWEwMDI2NGE1YjFmOTNkNTE3YjVhNWQ3OGJkMjMxNTE3YyBsZWdhY3ktdHJ1bmsKKzQ5MzUgNjQ4NDJlMjA2Yjc2Y2IxNWE5YTAwMzI2OTA3MTgwMGZmNjU2NTY4NCBsZWdhY3ktdHJ1bmsKKzQ5MzYgYTE3ZGExMzIyYzU2ZDUxMGI0MmQ2MDdhYzM3MzdkMTE1ZGE5OTg5MCBsZWdhY3ktdHJ1bmsKKzQ5MzcgYmQ0NzY1NTViZTQyYTdhZDc5OWZhNmUyNTI1NjlkZmU2NTVkNjc0NCBsZWdhY3ktdHJ1bmsKKzQ5MzggMjJjZDIyYmY0Mzg0ZTRkNDZiYjA1N2UzNzRjZDRkNmM3ZWUxMGVlYiBsZWdhY3ktdHJ1bmsKKzQ5MzkgMDUxMGI5NDgxNzhlMGJhNzA2YjVhNGU1OTVjMTRkNTkzNTRiZWY4NCBsZWdhY3ktdHJ1bmsKKzQ5NDAgNTE3YmNkNDgyM2FiNzg2Yzc0YjJmYjEzNzEwYWZkZjVmZjg1MGM2YiBsZWdhY3ktdHJ1bmsKKzQ5NDEgMmE1NzRkNGIwZDU4YzJmMGUzODJhZGE0NmE0MDM0NGI2NTU1YTI2YyBsZWdhY3ktdHJ1bmsKKzQ5NDIgZDYzMGM2ZDM2ODM5YWQ4ODQyNmFlNjdiMGZhYzViZDMzMTFlNWZlMSBsZWdhY3ktdHJ1bmsKKzQ5NDMgZmUzN2VkMmNmN2E1YzU3M2JmZmI4MjE0ZjAzMGQ0ODY0MzZjYjE3ZiBsZWdhY3ktdHJ1bmsKKzQ5NDQgZWIxNGYzMmE5N2NkYzVjNTQ5ZTcyZWIxZDlhMzQ5ODhjMDIwOWM2ZCBsZWdhY3ktdHJ1bmsKKzQ5NDUgODA3MjlhZmY5MDU3YzBmZjE3ZmFhNWFjNzBkYzNhZTY3OTE5ZTFhZCBsZWdhY3ktdHJ1bmsKKzQ5NDYgY2Q2NGEzMmFiODAzMmNmNzZiY2I2ZmUxYmNjNDg2ZTk4MGM4OWE4OSBsZWdhY3ktdHJ1bmsKKzQ5NDcgNDQxOGU4NTQ3ZWZjZjE1MGY3MDFiYWM5NDk4ODBjZjAxZTdkNjBhMSBsZWdhY3ktdHJ1bmsKKzQ5NDggZmI4ZTA4ZWM4OGRkNTYwNjJjMWE5MzU2MDIxYWU4MTVhYmQxNTZiNiBsZWdhY3ktdHJ1bmsKKzQ5NDkgNGI1NzRkYjVkYjEzZjE3NTc0YjY1YzQ2OTBiMGJjMGEzYjJjMjljYiBsZWdhY3ktdHJ1bmsKKzQ5NTAgZDk0ODEzNTRmZGMzNjE5OWJlMWJhM2JlODMyZmU4MzY5MTA1NDBkZCBsZWdhY3ktdHJ1bmsKKzQ5NTEgNWZjNjI1NjJlNmVjZTE3MDlkZjNjNzk0NjE1NGY3N2UxZWQ3MmQ1NyBsZWdhY3ktdHJ1bmsKKzQ5NTIgNzE4YzY1ZDBlMTJkYjQ4NjYxYWY3N2I1NzZjY2QxYzM2OTIyYzZmMyBsZWdhY3ktdHJ1bmsKKzQ5NTMgNjBlNWFhY2ViM2ViMzZjYTA0ZDI0YjEzMDNkOTIzNjBhMThmNTAzZSBsZWdhY3ktdHJ1bmsKKzQ5NTQgMTVhODY2ODdmODM4MDcxMTQ1N2IzMmI2MGI2YzkyNGIzYjMxODEyYSBsZWdhY3ktdHJ1bmsKKzQ5NTUgZGRmNjBiYzdlZDMwMTVmNzM3ODkyYWQ5NDRjMDY5Mzc0NmJiYThjNiBsZWdhY3ktdHJ1bmsKKzQ5NTYgYzIyMTk1N2E2MjZkN2VjNWZlMjYzZWY4NzhhYzU5N2U1NmYxODFhNiBsZWdhY3ktdHJ1bmsKKzQ5NTcgZjIxN2MxYjI3Zjg2NzZhNWQ0YjY1M2E3Y2NiYzI3NGI5OTMxNWUzNiBsZWdhY3ktdHJ1bmsKKzQ5NTggYjVjZTgwMTE0NDE2MTU4NzVjNDk0MzhlNzlkMGQ2ZDAwODRjYTJkMiBsZWdhY3ktdHJ1bmsKKzQ5NTkgZDU5NzgyMzhlM2JhNmY3Y2M3NzMyMDJmMjEzYTczOTViYjYzZDQwMCBsZWdhY3ktdHJ1bmsKKzQ5NjAgNGRkMWFmMGRkZWYwOGRiMjZlMjYyODRjMzE2OTVjNGU0NzNmN2MxNSBsZWdhY3ktdHJ1bmsKKzQ5NjEgNDI1ODM1Yjg4MDk5ZTgyMmI5OGYwOTJhYWJlNTFiYTQ1YzllY2NlYiBsZWdhY3ktdHJ1bmsKKzQ5NjIgZTkyMGU2YzI3MjA4MjFjMWMyNmVhZjg2MDI4NmRlN2Y3MTBkNDBmMiBsZWdhY3ktdHJ1bmsKKzQ5NjMgOWQ2ZTk3ZDY2NjcwOGQ0MzdhYmUyODVjOTFmNDgyNjU5Njk3YTFlNyBsZWdhY3ktdHJ1bmsKKzQ5NjQgOGFjNGMwZTFjZTE3YWQyOWJmN2FjOWEyOTFkNmQ2NjdkYTMxYmNiNSBsZWdhY3ktdHJ1bmsKKzQ5NjUgNDdjYzUzYTFmZDQ3YjNkNGVlYzQ4ZTM5MmE4OTI3NjZhNTAyODc0YSBsZWdhY3ktdHJ1bmsKKzQ5NjYgYzZlNDgyODcwZWMzMGFkMGM0M2MzOTgzZTEwZjM5OTZkYmNkMjRhYyBsZWdhY3ktdHJ1bmsKKzQ5NjcgYzI5YWRiMzM4OTY0Y2I3ZmFjMDk0ZWU2MDk2ZDk5NWEzMGM0OTRjZSBsZWdhY3ktdHJ1bmsKKzQ5NjggYzZhNmUyYjIwYmQ4M2RkMzhhOGUyMmU3MTY1NGY1ZTdiODUwNmY1NiBsZWdhY3ktdHJ1bmsKKzQ5NjkgYzZmMmQ1MTI1MWQwNzVkNzhkZWEzNzliNTRiZTJlMWEzYzZmYjI5YyBsZWdhY3ktdHJ1bmsKKzQ5NzAgNTZlMjUxMTRkNDM4NDQzNTlhZTA2NGM5MzNlNzg2ODNiODExZWRmMSBsZWdhY3ktdHJ1bmsKKzQ5NzEgZjRkYzUxZjc4YTU2ZGMzZmJiMTQxZDZkYmRlYjVjY2IwNDM2MTdjZCBsZWdhY3ktdHJ1bmsKKzQ5NzIgMWNlOWU2N2M2ODU2ZThmYzc4YmExNzU1NjUxZWI0OTllNWEzYzBiOSBsZWdhY3ktdHJ1bmsKKzQ5NzMgZDBiOTgxMmNkOWNmNDA1MTNhYzhmNzM5ZmI3ZmIyZmIwZGY5OWM1YSBsZWdhY3ktdHJ1bmsKKzQ5NzQgMmY0NTU2MjdjMWYwZWQ1YWZiMjg3NzZkNDliNWI3YjdiZmZkZGU3MiBsZWdhY3ktdHJ1bmsKKzQ5NzUgNTU2MjE5NzA5ZTk5ODViY2ZlMTIwZWFhNjA2NzQzMzIzYjVmZDk0OSBsZWdhY3ktdHJ1bmsKKzQ5NzYgNDk1YWZjOGFkN2I5NjlmMTRlNmMwYzI1YjI0ZjViZmVlODE3OGY4MSBsZWdhY3ktdHJ1bmsKKzQ5NzcgODQ3ZDI0ODQxYzg1Njk5ZDE1MTgyYzUzMzlkYjU1ZDNkNmRiMTMyMiBsZWdhY3ktdHJ1bmsKKzQ5NzggZTdkNDgwY2YxNmJhNmRmODEwYWU2OTEwNjk3NjAwYjdmNjZjYzI3NyBsZWdhY3ktdHJ1bmsKKzQ5NzkgOWU0MDEyYjE3NTdlYjRiNmE2Y2JkOTNhMzJiMWY3NzU3NWU0NDUxNSBsZWdhY3ktdHJ1bmsKKzQ5ODAgOGI4YTM3YjdjYmE0Mzk5Yjk4OWMwNTI5YWMwZDQyNDE2MWEwZDFkZSBsZWdhY3ktdHJ1bmsKKzQ5ODEgNjAwMTQ0OGZhYjg5MDM1MGJlYTgzYzYyYWEyMzg2NTFkNWQxZWVmYyBsZWdhY3ktdHJ1bmsKKzQ5ODIgMTZlYTE1MWFlZWMzYTRiMDg2YjkzZTk0N2Q2MzA1YjExZDBhNTdkYSBsZWdhY3ktdHJ1bmsKKzQ5ODMgZDExMjNiMTBjZjIzNzJjYzRlM2U1YTU2ZmU5YzBjZjYyOGM3ZmRlNCBsZWdhY3ktdHJ1bmsKKzQ5ODQgODE1ZGZhYTZhNzc4Nzc3MjA2MzM0YTdkN2NhN2IxODY0MWNiMWMyNSBsZWdhY3ktdHJ1bmsKKzQ5ODUgYWUyYjAzMjQ0NWY5OWMzM2IxZjc3YjJiMjIzNjhkMzViMmI0MzA2NCBsZWdhY3ktdHJ1bmsKKzQ5ODYgMTZlYTU3YzM4YzRmNzQxZjMxNjk2YTNjOTNkMzU2YWI2YTllMGM4ZCBsZWdhY3ktdHJ1bmsKKzQ5ODcgMWE1ZTdkYTQwNGMzZGEzYjNjYzVmNWZhYTU2Nzc2ODMxNDBhNTk2YiBsZWdhY3ktdHJ1bmsKKzQ5ODggZTM5YmIyNDBiMWIzYTdhODQ0NWQwMDFlYmJiZDQ2MTZlMWMwZWY5YSBsZWdhY3ktdHJ1bmsKKzQ5ODkgOWU1YTA5ODQxNzgxOTU4YzI4ODNkYmZjY2E2NWVlNjhmY2M5OTM2OCBsZWdhY3ktdHJ1bmsKKzQ5OTAgZTUwNmVjNGZiMmIxMGQ0MDBlZTdmNjM4ZjY5Zjc5YjUyYzZmYTNiZiBsZWdhY3ktdHJ1bmsKKzQ5OTEgNzNkMTkzZWFhOTAwZWE0MzhlODQ1Mjk4ZmQ3NzY4NGI2YTQ3NDUyNCBsZWdhY3ktdHJ1bmsKKzQ5OTIgODc1MTczZjNmMzFjYmQyMzQ2Y2I0Nzc5MTNhZWU3NWU5MjU4ODllZiBsZWdhY3ktdHJ1bmsKKzQ5OTMgYTE0ZmMyZDA0YzA2MjVhODY1ZmZiNDNiZDhjNTQ0OTQ1Yzk1MDllMSBsZWdhY3ktdHJ1bmsKKzQ5OTQgNmZjZDBiMDIyZmE3N2JiZTYyZGY3Zjc5NTE0NzdiZmVkMmEyYmYyYyBsZWdhY3ktdHJ1bmsKKzQ5OTUgNGRmMDBiMjk0NzdiN2Y3YjI2OTc5YjllZDNhMWJmNzdmYjgxMmI3ZCBsZWdhY3ktdHJ1bmsKKzQ5OTYgNTM0YTk3YzQwMGNjN2Q2MGM1MzVjZmQyNGU1NDg0MDFmMzFhZTZjOCBsZWdhY3ktdHJ1bmsKKzQ5OTcgZDdhZTVmYjFkMjU1MDk4MTQ5NzgxYzAxZjQ4ZmU5NTk3NTA2NGNiNiBsZWdhY3ktdHJ1bmsKKzQ5OTggYjcyY2NmNWI3ZGJjNDdmYzhkMTE2OWRhM2RkYTJjYTczMTFmNzliYSBsZWdhY3ktdHJ1bmsKKzQ5OTkgNDlkZjE1NzZmYjU0ZTkyZmYxY2JhMTBhNTJjZTUxOGQzZjU2ZDk2ZiBsZWdhY3ktdHJ1bmsKKzUwMDAgMWE0NDhkZDg0ZWRjMmU5ZjNkMjE0OGNhMzlkZTZjYTgyNWViODZhNyBsZWdhY3ktdHJ1bmsKKzUwMDIgYWFiYmZiNjFlMzg4ODRiNmEwYzRjMzE5ZWZhNjI3ZDRlYWJhZjZkYyBsZWdhY3ktdHJ1bmsKKzUwMDQgOWNjNzc1ZmQ2ZTg0YzVmMzM4NWJlYTkwYTI0N2U3OTgxYmFiOTBmYSBsZWdhY3ktdHJ1bmsKKzUwMDUgNTUzNmZjYmFlODBhZDdiMDE3ZDMzOGE4ZmUyMGExNTQwMGIyMjVkMyBsZWdhY3ktdHJ1bmsKKzUwMDYgMzI4MWE5MzFhMWQ5ZGM5NzdiYTEzYzUwMWFmNDBkOTJhZTRhNWFlNyBsZWdhY3ktdHJ1bmsKKzUwMDggMmNhYzZjNTA2NmRhNTA5NTk4YWIwNmVlMjllOTBkZjY5YmZmYTczOSBsZWdhY3ktdHJ1bmsKKzUwMDkgNDE5NjAwMDc4OWJjNWUyNDI2ZTAzOGE3NGU1MjEyMGI1NmY1OTBiZCBsZWdhY3ktdHJ1bmsKKzUwMTAgMGY2ZmY0NWJkODE2Nzg3NmI3YzNlNDUzYjZlMjU2MWU3Njg2M2UxYSBsZWdhY3ktdHJ1bmsKKzUwMTEgYzU1ZGRkYmZjZjdjZThlYjZhZmJmOTdjZjRmZDU5ODg5NTFmNDlmMyBsZWdhY3ktdHJ1bmsKKzUwMTIgN2Q3MDIwOWYzNTVkMjBlYzAxZGJjNzNhMDJmYjI5Y2U5MjNmMjE5OCBsZWdhY3ktdHJ1bmsKKzUwMTMgZjMwYmM0OGM0MTdhMjFkMWNjM2I2ZTY2Zjk3MzljOTVmMzgwMjgzYyBsZWdhY3ktdHJ1bmsKKzUwMTQgZjRkMjZhMGUyOTc1MTUxYTZmZWVkMDBkYmFlZDNjMjM1MGYwNDUyNSBsZWdhY3ktdHJ1bmsKKzUwMTUgYjE4MWRmZjIxYjBiOGU5OWNmMmM5NDU3OTg5MGQ2ODEzYTUxYmU1YiBsZWdhY3ktdHJ1bmsKKzUwMTYgZjliMDc5MTVhMDYxN2RhMGFlNGZiMGU5YmE1OTM2MWMyY2M0MmRhYyBsZWdhY3ktdHJ1bmsKKzUwMTggMmFhNmI1YWQ0NTIwNGUwNzFkYjFkNGY3YzFlMjgyYWJhYmU1OWUzYSBsZWdhY3ktdHJ1bmsKKzUwMTkgMzhmMzIyNWVmZjMxYmRkMzViYzYyNzA4OGZlNzJiYTBmY2Y1MGQwYiBsZWdhY3ktdHJ1bmsKKzUwMjEgM2Y4YzhiOTAxNThkZmQzMmZiYzQ4Y2FiNDI5MWY2M2IzNmRmZGUyNCBsZWdhY3ktdHJ1bmsKKzUwMjIgNzg3YjRkZDZmNWYzZTZjMjBlMTJkMTc5NGMxMDY5ZWJiNDRkYTY3OSBsZWdhY3ktdHJ1bmsKKzUwMjMgYjA5MmQ5MzZjODc1ZTY2ZjE3NGRkMWFjYTc2MTAxZTJkNjk5YmE2ZCBsZWdhY3ktdHJ1bmsKKzUwMjQgMzgyODIwNmMyZGMwYzYwOWU2NGFiNmMyOTgzZDc5ZDk5NzQ1MWVjYSBsZWdhY3ktdHJ1bmsKKzUwMjUgODVjMDgxOTY2MmI3YjQ5YmRkY2U0NDU5NzFjNjgyMGFmMjhhM2I0OCBsZWdhY3ktdHJ1bmsKKzUwMjYgN2ZiZmY1MmRiMDg3NzRkZjk0ZDE0OTZhNGVlZmQwZjMwMGI2MmI5NSBsZWdhY3ktdHJ1bmsKKzUwMjcgOTEyODEzZDU3M2I0MmZmYTIyM2E5NTc2NmM4ZjM3MWQ0NDlhZGE3NCBsZWdhY3ktdHJ1bmsKKzUwMjggOTE5YzUzYTM1ZWZhZWFkM2U5ZGY4ZTA5M2NiNWQxMjc2YzczYTM2ZCBsZWdhY3ktdHJ1bmsKKzUwMjkgYjU5NjNjNGI2MzlhZDE0OTcxNzEzNmI2ZjM3N2FkMzBlNzI0MWUyZSBsZWdhY3ktdHJ1bmsKKzUwMzAgMmM2MTc4NjMyN2NmZjA1NGQzN2Q4Yjk4ODdlMGU4YTQwZjY3MWZmNyBsZWdhY3ktdHJ1bmsKKzUwMzEgN2EzNzMzNzMyOTAxYzExOWU1ZjVhNjkwOThmZjE2MTI2M2M2NGVkZCBsZWdhY3ktdHJ1bmsKKzUwMzIgOGJlNDAwMmI1MDg2N2MxODdmM2JkMGU3ZmNlMjlkZTUyMjVlZWMwYiBsZWdhY3ktdHJ1bmsKKzUwMzMgMTgwNzg2NGE3NWY0NzE0M2NiMzBjNDg3NThkZGI2NTBkZWIxM2RlNCBsZWdhY3ktdHJ1bmsKKzUwMzQgYWMxM2NhYTc5ZTNjYTYzNDI4NTVlMTAzYmQ3ZTQ5ZTRhZjBmZjNjOCBsZWdhY3ktdHJ1bmsKKzUwMzUgMGJhZWI3NDZhODU0MDMyOWM3NDEyNTFlMzcwNGMwMTJjMDU2MzA0ZSBsZWdhY3ktdHJ1bmsKKzUwMzYgZjBiNzg3MmRhNjg5MWMwNWQ2N2JhOGZiZDQ0Y2FjNGU5MGVlN2NjMyBsZWdhY3ktdHJ1bmsKKzUwMzcgOTY3N2ViMTA1ZmFlODI0ZGI2YzA4N2NlNjA0NzBlMjM0ZWUzMjIxYyBsZWdhY3ktdHJ1bmsKKzUwMzggZjQ3YmM1NTU0NDE4NWE1YzA5YjYzMzc0MzQ1MTljMTcwMzAzNjQwNiBsZWdhY3ktdHJ1bmsKKzUwMzkgNDk4ZGFkODA0NWQzNGM4NmJkNjVlZGI2M2I3ZWE1NmNiMzk0NzE1YiBsZWdhY3ktdHJ1bmsKKzUwNDAgMGFjMjdmZmQwNTc5OWMzZjFkZDg2N2JlY2Q1MTgxYjg5YTYxYzc5YSBsZWdhY3ktdHJ1bmsKKzUwNDIgYmM0YjNmZGE2YTgwNzhkYzYzNzdmYWFjOWZkMGIwMmU4YTNiNDU1OCBsZWdhY3ktdHJ1bmsKKzUwNDMgOTFiYzkwN2IxZTYzY2YwODJmNDM0NzEwZWZkMjhkN2U3ODMyMTMzMCBsZWdhY3ktdHJ1bmsKKzUwNDQgNGQyOGI2NTViNzI4NzE1ZTQyYjNhMGJhODFkY2Y4NWU5MTU0ZDNjYiBsZWdhY3ktdHJ1bmsKKzUwNDUgMzc3MGU0MzQ3ODAzODVlZjkyNjg1NDZkOGQ4NjdjNmQxNGRlYTc1OCBsZWdhY3ktdHJ1bmsKKzUwNDYgNzkxNDkxNTcyOWUzZDUyMWI3MTNmODIwYWZhZTYwNDVlNjZlYWE3NCBsZWdhY3ktdHJ1bmsKKzUwNDcgNGI2YzA3NjJkNjU5YjRkNjFlN2MyOWRjNWJjMzEzMzgxNTY5ODZiOSBsZWdhY3ktdHJ1bmsKKzUwNDggNzA0MmFlZTY0MDllZmM3ODIwZmQzZDE4ZmE2MDZiYjBkZTQ3OTM0NSBsZWdhY3ktdHJ1bmsKKzUwNDkgYWUxMzFiOGI0ZTMxOWRiZmMxM2Q4NzM5YjkzZjUyZWNlMjkwMWRkMSBsZWdhY3ktdHJ1bmsKKzUwNTAgZDY5OTU0ZTFmNWQ0MThmNGZkZjBlZDIzZjUxMmI1ZmI1OThhZGI0ZSBsZWdhY3ktdHJ1bmsKKzUwNTMgYmJiZjE3NjQwYzZmYTE1Y2JjNTk2M2M3NTgxOTAyNWFmM2VmM2QxNiBsZWdhY3ktdHJ1bmsKKzUwNTQgZDVkMjdkYWQ3ZmVhZjVkNmY1MzlhYmUzMDNhMDk1MDk0NmU5NGRlOSBsZWdhY3ktdHJ1bmsKKzUwNTUgNWQwOTM4MzUwYWU4ZThkODdjYzg3NjFmZThhYmQzN2Y2NGIzMTQ3NyBsZWdhY3ktdHJ1bmsKKzUwNTYgMmEzZTQ4OTcyMjYxMmY5MzA1YzE5ZTU5YmI3NTgyNzlmODU3Yzc3YiBsZWdhY3ktdHJ1bmsKKzUwNTcgNzYzZWI0Nzk3NWRkMzk3ZTkzNmU0NzJmN2IwOWY1M2NjOWUxN2E3OCBsZWdhY3ktdHJ1bmsKKzUwNTggOGRmNTc0YTY1NWFkNmMzY2Q1YjgzZTM0OGQ4OWEzMzllODYwZjIyZSBsZWdhY3ktdHJ1bmsKKzUwNTkgY2U5YTc1MDdlMWVmZWI3MTAzNTZjYThlNTVmOGVjYmMxYzY0NDgyZiBsZWdhY3ktdHJ1bmsKKzUwNTkgMDY1ZTMxY2Y1ODYyZTI3NTIxY2Y1NzI1YjAwM2FlZDIxMWYwOTFiMiBsZWdhY3ktdHJ1bmsKKzUwNjEgMzE3Nzc2MjJhZTkzMTU3YTIwMTA4MTI5MTQ5YWVmY2VmZTJjOGVkYiBsZWdhY3ktdHJ1bmsKKzUwNjIgY2Q1YTk2ZjYyMzliZGU0NTJhMjBmNzcxMGJmN2E0YmFjZDk2MmMxZCBsZWdhY3ktdHJ1bmsKKzUwNjMgYjI4MWMzYzg2M2NjYWU0ZWRiZDFjNjk1OGY5ZDMzYWE3MDNkZjczMCBsZWdhY3ktdHJ1bmsKKzUwNjQgYmRiNjNhNzk3NTU1NTQ3ODQxOTI0MDJhZmZjYmNlNDM3YTcxMTRiYSBsZWdhY3ktdHJ1bmsKKzUwNjUgNTg4Y2Q0MzQzZWVkMWZjMjczNjA5ZjcwNDExYTAzYzg0YzY1NWZiOCBsZWdhY3ktdHJ1bmsKKzUwNjYgMzUyMzM2NDA0NzliMmViYzhiYjJkODNkZDdjNTQzNDkyZjc3NmU1NCBsZWdhY3ktdHJ1bmsKKzUwNjcgYmVlMmFlZDQxNmQ2MjQ0MjdhZDBhZjhjYTNjMzZmMjFkYTFjZjUxYSBsZWdhY3ktdHJ1bmsKKzUwNjggNDA4NGVjZjI3NmNmMGY1ZTQ2Yzg4MjJmMDZhZTQwMzZiNjJjMTU1MiBsZWdhY3ktdHJ1bmsKKzUwNjkgYzUyYjVjOWJlN2UyMTdmNDI0MjIxZjhlMjU5YzkwYzlmNTdhMTkzOCBsZWdhY3ktdHJ1bmsKKzUwNzAgMjliOTBhODZhYzk2ZDhjODhjMzNmMmNkZTI1NTA3YWNiYzJkYzE4OSBsZWdhY3ktdHJ1bmsKKzUwNzEgMTdjOTI1ZjAwNjBiOGM3MTk2NTllYjYwYmQwZTg3NjBjZjhlMWJkMyBsZWdhY3ktdHJ1bmsKKzUwNzIgMWM4MTQ3ODNlZmMxODUwMGEzMDIyZmY1N2EzN2VmN2U1YTY0NGI4NCBsZWdhY3ktdHJ1bmsKKzUwNzMgZWVhYzE3MGY1ZjJmZjgyNThjNjlkODgyMzdhNWE3ZmM4YzZlOTgxZSBsZWdhY3ktdHJ1bmsKKzUwNzQgN2VmNzI4NzNlNGQ2ODc0N2Y1MjZjNzg4OThhODllZWQzOThjYmZjZCBsZWdhY3ktdHJ1bmsKKzUwNzUgYjAyNTczZWViMTgyOGM2ODIyZGIyOGEzNTFjZWFjNTdlNmNiMWNiYiBsZWdhY3ktdHJ1bmsKKzUwNzcgMDE2ODdjZTQzNzA4MmE1NWI3ZWNmMDA2NDMyODAwZmVmNTU3NGNlYyBsZWdhY3ktdHJ1bmsKKzUwNzggY2E2YjYwZDRlYTkwNjM3YzY3NmIxMDMwMDA4MGE3Y2U5NGFjZDNjZCBsZWdhY3ktdHJ1bmsKKzUwNzkgYjM2OGJlN2IwNjJhNTMwMmEyZDA2YjkzZTQ2N2Y3MmYwYmE4Yzk3YSBsZWdhY3ktdHJ1bmsKKzUwODAgZjcwNDlkNDY1MzY1NzY5OGQ5OGQxMjBlZmZiMWFlNWFmNjJkMDM3NCBsZWdhY3ktdHJ1bmsKKzUwODEgYmMzMjYwNzRmODYxNGU4MWI1YmRmMzlmMDlmNDRhMjljOWNhODMzMiBsZWdhY3ktdHJ1bmsKKzUwODIgYTkyZGRlZDRhN2M0ZGNjNjI0YTY4MGMwMDhkZWI2OGM5N2FiZDRmMyBsZWdhY3ktdHJ1bmsKKzUwODMgZWQzMGJjYTE4NGJiODFlMjNhOGZhYTlkOWJkODBiY2RkZGEwNDZjMSBsZWdhY3ktdHJ1bmsKKzUwODQgNmNjNjM3YzYwY2U2NjJhZmVjYTIyODIzZjk2YTZhMmZlMGZhYWQ3YiBsZWdhY3ktdHJ1bmsKKzUwODUgZGE0N2I0MTQ2YTdjODdjZWQ0Y2E0ODRkNmY1MzZjZmMyZjk2OTkyOCBsZWdhY3ktdHJ1bmsKKzUwODYgYmQwNWRjZWE3YjA5Y2Q3NDc0OTdjZWMzYmVlNjA3MjMyNDA5NTJkZiBsZWdhY3ktdHJ1bmsKKzUwODcgMmY5MTAyZjU3MTQzZjFkNmZkNDYyYmQ5NThlNWM1ZjE0YzA5Mjc1NCBsZWdhY3ktdHJ1bmsKKzUwODggNjFlM2I2MGFlYzQ0MTlkYWVkMWU4MWYzZjI2N2I2YmY2MmRhOTY1OCBsZWdhY3ktdHJ1bmsKKzUwODkgODMwMThhYTliMTdjOTU2YzU0ODY4YjMzNjRhN2MxNGFjNDYzNGQ4OSBsZWdhY3ktdHJ1bmsKKzUwOTAgNjM0MWE0YzAwODJiMzQ5Mzc1MTcxZDViZjA5OWNkYTZlYjAwZDIwNiBsZWdhY3ktdHJ1bmsKKzUwOTEgNWEzMzcxMzIwOTc1NDVlYWYyZWQyZjVmYjQ5NDc5YjM0ZmQ4OGFlYiBsZWdhY3ktdHJ1bmsKKzUwOTIgZGJiNDE3MTIxNjViZTRmYTQyZjBkZTc4NzExMmRjYjAyMTIwMmJmYSBsZWdhY3ktdHJ1bmsKKzUwOTMgZTllYTA1NzAyNjc2ZTdiYzgxZGE2NTk5YzEzZjMyMGI4ZTU2YzBmOCBsZWdhY3ktdHJ1bmsKKzUwOTQgN2M5MmQ0NGZhNmZjYTUxMGVlMWE5OTRlOTg2NjVlNDQyNjAyMTBlNSBsZWdhY3ktdHJ1bmsKKzUwOTUgMTc1NjcxY2MyMWQ4YzY0NGNlZDE3ZGI3Y2E3MjU0ODFhNGVjYjlhNCBsZWdhY3ktdHJ1bmsKKzUwOTYgNmM4OWRmNTc2ZDkxYWZhZGM3MzcxY2M5M2QzOTY5ZmM3MzNjNzFlOSBsZWdhY3ktdHJ1bmsKKzUwOTcgOTEyMzE3YTM3ZTJiMzg1NjE3ZWJhZmRkZjY5Y2YzYTJhMTMyNzJlYSBsZWdhY3ktdHJ1bmsKKzUwOTggNzVlOWU1NmI1ZjliMWEwZGUzZTAyNGVmYjQ2ZDA5M2VmMmRlZWJkZSBsZWdhY3ktdHJ1bmsKKzUwOTkgMjI5MTJmM2E4ODlmMTJmZjYwNzg2MDQzN2Q4YTQwMmZkMWUyMTRkYSBsZWdhY3ktdHJ1bmsKKzUxMDAgZjRlZjNiMjEyNmViY2JkZDY1YjZjOTY1MTQ0ZmIzMGYyYTQ2MTFjNSBsZWdhY3ktdHJ1bmsKKzUxMDEgNmYzOTZjZTUyNTVkMDhmMWE2ZTM5MGRiZjhjM2RkYjQ2YTQ0NTZhYiBsZWdhY3ktdHJ1bmsKKzUxMDIgNjdmZjlmNDdhYjM2ZmU5Yjk4MDFmNzZjOWY0MDFkMDJlNzkyOWFiOSBsZWdhY3ktdHJ1bmsKKzUxMDMgNDQwODc4MTkxNDhlMjc3Njc4OGNlOGI2NmI5NTAyOWUzZWQwNjVlOCBsZWdhY3ktdHJ1bmsKKzUxMDQgNjhjN2EwYTYxZmQ1ODFjMDc2Y2Y4ZmY4ZDFlZDhmOGUyMzcxNzNkOSBsZWdhY3ktdHJ1bmsKKzUxMDUgZjExYmE5Y2MzNDJmMjgwY2FhODdmYzFjMTk4YWEzY2ViMTU5YTBlMCBsZWdhY3ktdHJ1bmsKKzUxMDYgZjVjNDA4NjlkYTEwNjU4ZWMxMDMxNzBjN2MzOTYyNDE4MDAzNDUwMSBsZWdhY3ktdHJ1bmsKKzUxMDcgZjk4YTIyMzNiMzM3YjQ5NTM0NThiN2RjZGNkNTY0YTVkMjNlNDVmNyBsZWdhY3ktdHJ1bmsKKzUxMDggNTEzNGMwMDllMWE0ZmU1ODNkZDllMGVlN2E3MTg2OGQ4NzAxNGI2YyBsZWdhY3ktdHJ1bmsKKzUxMDkgZDllNGNiYmE5NThjMDY5MThmZTE2ZmE2YWNiZmRkZDE2OGMzNGEwMSBsZWdhY3ktdHJ1bmsKKzUxMTAgN2M2OWM0YWVjYjM4Y2I0NTVlNzM5YmYxOTA2ZTJiMjc3MTY3ZjBmNiBsZWdhY3ktdHJ1bmsKKzUxMTEgZjg3NmNkNWM0NDE3ZDc1MDA5NWQ4MDA5ZjdjMmRjOGYxNWUyNWViMCBsZWdhY3ktdHJ1bmsKKzUxMTIgZGUyOTdjZGVhMzRlZTY1MGUyMWUyYmVkMmUwYWNiYjRjZjZmY2MzYSBsZWdhY3ktdHJ1bmsKKzUxMTMgOWI3ZTZkOWE1MjhkYTdjODhmM2Y4ODhhNjRiMGI4NThhMDRmNGJkYiBsZWdhY3ktdHJ1bmsKKzUxMTQgYjdlOGJjMDAyYTI0MzBjYmNmNDU2ZjZlNzYxODI4ZmFhM2ViOTNlOSBsZWdhY3ktdHJ1bmsKKzUxMTUgMDYzYTk2YjQ5YjNlNjJhOTQ4MjFiZjM2NzQ0ZGU3MWI5OTFlNmUxMCBsZWdhY3ktdHJ1bmsKKzUxMTYgNjA2YTA5N2RmZDAwMmM0YTA4NmIxNTFlOGIyMjcwMWI3NDA2YWM3MyBsZWdhY3ktdHJ1bmsKKzUxMTcgODRlMjI2MGRiMTc5OWIzNTBiYjI4OTY2ODM0ZjliNzY0YjE3ZTFmYSBsZWdhY3ktdHJ1bmsKKzUxMTggZDYzNTBhMzE4OTk3ODgyYzY5ZmM3NmI4Yzg1OThhNjUzZjY5NmYxZCBsZWdhY3ktdHJ1bmsKKzUxMTkgZTNlY2M0MDE4OTg5YWUzODExYjcyYWQxYjNjZDFmNTBlNGNjNWU0NSBsZWdhY3ktdHJ1bmsKKzUxMjAgZjRiM2Q2OGM3MTI0NDJjYzc0Yjg1NTgyZTU1YjMxMzU1YWM0Y2RhMyBsZWdhY3ktdHJ1bmsKKzUxMjEgZGIzZGFjZTI3OGFjMDE4OGRlZWFjMDBhMTljNDY2YTVjN2IxYWE4NiBsZWdhY3ktdHJ1bmsKKzUxMjIgOWNmNjA0YTM0MTFlOTQ1YjlmNGU1ZDYyM2ZiYmJiNmI0MWUzNzQwNCBsZWdhY3ktdHJ1bmsKKzUxMjMgODQxZjcyZGM1NDQyNGIzZGVmMzY2MGI1ZDFlOGYyMzQyMzYwNjVhMiBsZWdhY3ktdHJ1bmsKKzUxMjQgM2EzZGYyMzEzMjdjMWQwNjcxNDQwODM1NjAxYzhhNGRlMTBjZjI1NSBsZWdhY3ktdHJ1bmsKKzUxMjUgMjY2YWQxMzI4N2E0ZTBjYTU5OGNmMjI4MTVlYjEzZGZjZmM4NjliZSBsZWdhY3ktdHJ1bmsKKzUxMjYgNGViNmRkYjllOTYxYzlhYjViYTI2YTExZDNkMTNhOWU0NmRkYTU4MSBsZWdhY3ktdHJ1bmsKKzUxMjcgYjRmZDQ4ZTNhM2I4OWIyYWQ5NGZlNzk1NWJmNmNjOTFhNjI0OTliMyBsZWdhY3ktdHJ1bmsKKzUxMjggZGYzZTFlNTIxZmU2NWRlM2YwZDdjYjMwNmRkZTcwYzI1ZjJlM2JhNSBsZWdhY3ktdHJ1bmsKKzUxMjggZTcyMjU3ZTY1NTQ1NGQ1Njk0NjhkYThiMTE4OWUwZWMzMzZmMzUzNiBsZWdhY3ktdHJ1bmsKKzUxMzAgNTEzZjFjYjcwY2U2YTllY2Y0MjhhN2U5YTUzMjQzYzI5YzNlYWFlMCBsZWdhY3ktdHJ1bmsKKzUxMzEgMmY4ZThiNjEyOWY3M2FjN2EyNjMzZmQyODQzYWRkN2I1MjEwMWVkMyBsZWdhY3ktdHJ1bmsKKzUxMzIgNDkxODM5MzhkMDdlOTdiNGMzY2UyZDY1NTQ5MTVmYmM2N2ZiOGQ3YyBsZWdhY3ktdHJ1bmsKKzUxMzMgMGI3ZTE0YmI1NGFlMGVlZjEwN2I5ODMyYzllNDg4OTAyNTY5ZjA2MCBsZWdhY3ktdHJ1bmsKKzUxMzQgZTJkZDc4MTk3NTk2YmZkMThiZjNjZGI4OWY0MWJkZDBkNGM3NjJkZCBsZWdhY3ktdHJ1bmsKKzUxMzUgMzRlZWZhMjI2NzA5YWE4ZWRhYWM2ZGY0YmQ0ZDNmNmZjZjk3OGU1OCBsZWdhY3ktdHJ1bmsKKzUxMzYgYzk0NTczNWE0YWQ3MGY0MjAyMTg1YzAyYmRjNzA1OGEwZWU1NDMyOCBsZWdhY3ktdHJ1bmsKKzUxMzcgZDI0MTkwYzY1YjUxZjAzNDFkNzkyNWVlYzllZGQ3M2VmZmZlMjg3ZiBsZWdhY3ktdHJ1bmsKKzUxMzggMGZiNjU1MjBmY2QwMTJhNzUwNTFlNWMxZGNhMGQ5MzBlYzViNjVjMSBsZWdhY3ktdHJ1bmsKKzUxMzkgNGM4MGNmMDJkMTU0MGM3ODk1MDQxZGU2NjgwMGU5YTdjZWJiZDFmMyBsZWdhY3ktdHJ1bmsKKzUxNDAgNDkzYjg3MWYzNzc1NDdjNmNlM2ViYzc3NzViNjljOWRkZWJmNjNhZSBsZWdhY3ktdHJ1bmsKKzUxNDEgMzE4MTcyZmYyZjE0YzY5NzljMDk2NmI5ZmUzOWRmMWFlMDVjMDE2ZCBsZWdhY3ktdHJ1bmsKKzUxNDIgMTA3YzE4MDA5MzdlM2Y0NzFlMzkzMmUzZjI0NjRiY2MwY2RjZWM4NSBsZWdhY3ktdHJ1bmsKKzUxNDMgMGI2YzhhN2U5MzNhNjZlZWFmYjY1YTdlZGNiNjZmZTJlZWMwNmZlMSBsZWdhY3ktdHJ1bmsKKzUxNDQgMGU5Y2FlMGI1MDcyZDY4ODIwZGQwOWY0OTdhYzIxYmVkMzJiZWM0OSBsZWdhY3ktdHJ1bmsKKzUxNDUgOWU5ZjIyZGJlZDFhZjA0ZTA5NzYxMGRhNjM5YzNjMjY5MDJhYjZmYyBsZWdhY3ktdHJ1bmsKKzUxNDYgZDQ2NDRkMzkyYThmZTY4YzQzYjNjNDFiNGM0MDhmOWIzODU0YmQ5NCBsZWdhY3ktdHJ1bmsKKzUxNDcgMmQ5YjE2NTI3MjQ3ZGNiM2EzNTdiMGMwZTE4ZDAyNmRiNWZhYmEzNCBsZWdhY3ktdHJ1bmsKKzUxNDggNjkwZTQ2ZjBiZjU5ODU1ZmNjODk5MjY2OWVmYzEwNjVjNDVmZTU3MiBsZWdhY3ktdHJ1bmsKKzUxNDkgMWE0ODFhNzVhZjQ1ZjEyOTI4NjMzYTIwMDdmMjM4NWFmYzc2ZjIwOCBsZWdhY3ktdHJ1bmsKKzUxNTAgODkyOTJmNmEyNThkY2NmZTdjMjY5NGFlNjhjYTEyZDA5ZjUyMmZiMyBsZWdhY3ktdHJ1bmsKKzUxNTEgMjEwODIxZmQ1NjUwOTQ3YWQwMDhjNjRmYmE5MGVkMGE1NmJkZWM2ZCBsZWdhY3ktdHJ1bmsKKzUxNTIgNGI1N2FmMWJhMjk3MTA2Y2Q3ZWM1OGI0MDE4ZDBkYzRmZDhmMTljOSBsZWdhY3ktdHJ1bmsKKzUxNTMgOWJkYzI3ZDE1MWJhYTZiNWQ0YmIwYjk2NTYxNzZlOTkzM2Q5OGJkZiBsZWdhY3ktdHJ1bmsKKzUxNTQgMzQ3Y2YwZTQ5MmQ4MTFkNTBjNWMyODBjN2Y2NTAxMzM5ZDZiOGE1ZCBsZWdhY3ktdHJ1bmsKKzUxNTUgNzMzNWM1YjNiNDNiZDI0NGIyOTFhNWFiOGJiOWY1NDEzMDc2NzlkNCBsZWdhY3ktdHJ1bmsKKzUxNTYgYzFmNDg4NThmMTg2MGZhYzMwZTY1NTg1NWNiMDllNjJlMDQzMjVhMiBsZWdhY3ktdHJ1bmsKKzUxNTcgOTI1ZDFiZmNkOTI1OTNkMGFhYTQ2MDllNjIxMzk4MjM3Zjc5OTBlZCBsZWdhY3ktdHJ1bmsKKzUxNTggZTFkMjNhNmI5MzBiODA3YTQ3ZWQwYmYzOTFkOWEwYTQzYjViODg1ZiBsZWdhY3ktdHJ1bmsKKzUxNTkgMWFmOTIyMGM2ZDE5ZDk0NmYxN2NiOWI5OWIyOGUwNGE0ZjViYjkwZSBsZWdhY3ktdHJ1bmsKKzUxNjAgMTE1N2UxNDI3MGQ2ODc2OWQ3ODk1OWI3MTJmNWI1MTMzYmNhNTNiYiBsZWdhY3ktdHJ1bmsKKzUxNjEgZTAzOTM2NTdmZmE0NzcxZGQzYWVmNGQ3ODBmZDUyMTQxZTViMTk0MyBsZWdhY3ktdHJ1bmsKKzUxNjIgMDYyMzVmZGMxYWFmM2JkYzc1NjY3MGVmZWZiNjlhMTRlMGYyMDAwOSBsZWdhY3ktdHJ1bmsKKzUxNjMgM2ZmYjMxY2M4YTliM2EwZmFjM2FlNDg4ZDM0NDEzMzYwNWMyNDdmZCBsZWdhY3ktdHJ1bmsKKzUxNjQgNTM4YWI4MmY5MWE3Mjc1NDE2NDgwNGNiM2U4MzlkNTQ5ZjA3N2E0MCBsZWdhY3ktdHJ1bmsKKzUxNjUgNmQ5M2I0YTBmNGNlN2M3ZThjNDY3ODBiMmE5NTM4ODlhNzljNDEwYSBsZWdhY3ktdHJ1bmsKKzUxNjYgMmY0MmUyNzM4MmU5ZDIzNjhhM2Y1ZjNkODAwZDkyNmUxODMyMTU1MCBsZWdhY3ktdHJ1bmsKKzUxNjcgMTJkOGM4Mzg1NzM1ZmNhYjNmYjU5YjY4MzNlZTQwNGRhZDczMzc3MiBsZWdhY3ktdHJ1bmsKKzUxNjggMTk4NmI4NjllM2ExMzEyMmIwN2E5ZDU1MDY0MmExZTA1YTBiODNhNCBsZWdhY3ktdHJ1bmsKKzUxNjkgZjEyZmYxMzBlMGI1ZjQyNTQ1OWYwZTcwYjY2MTVjMGRlNDQ5MjRkYSBsZWdhY3ktdHJ1bmsKKzUxNzAgNzk3M2Y1Mzg3MjZjYWFjZmU2NzY3NGU5OWM3YTQwYTFkZmQ2NzcyMyBsZWdhY3ktdHJ1bmsKKzUxNzEgOWVkNDVkYmYyNzY1OGEwYWY4OWJjNWMyYjRmNjA0YmZlZWUyNzJlMyBsZWdhY3ktdHJ1bmsKKzUxNzIgNGUwNzY5NDQ0ODhhYWI4NGViM2I4YjAyYTc5ZjhiMTM2MGIzYzgwMCBsZWdhY3ktdHJ1bmsKKzUxNzMgMTMwNmU3NjFhNjIzODM3NDBhNTlmNjM5ZjE4Nzc5ZGJiOGI2ODA0YiBsZWdhY3ktdHJ1bmsKKzUxNzQgMzczYzE2MzdkMzAxMDRlN2NhZmVlMWQyMWY1NjIwZWQzNDIwNGIyNyBsZWdhY3ktdHJ1bmsKKzUxNzUgNTAwMzIzNDM5ZWIzOWIzZjcwMGE0ODkzNzFkMjAxYjE1NDRhODMxMSBsZWdhY3ktdHJ1bmsKKzUxNzYgYjY4OWU2ZjkyZjE3YTExMTAwMTEyZTMzYzEwNDllOGQ2N2Q1Y2I4MiBsZWdhY3ktdHJ1bmsKKzUxNzcgOWZlYjBiMGI1MGI2MGM0MGZlNzUyNTI0MzM3YzQ2YmQ0NWNiMjcyYyBsZWdhY3ktdHJ1bmsKKzUxNzggNzQ3NDdiZmZiNmE0ZDI3Yzg2NDkwYTBkYTk2MjhlZjU0ODgyYjBhZSBsZWdhY3ktdHJ1bmsKKzUxNzkgY2Q5ZDg2ZWNjMTc1Mjk0YzZjMTlkODkzZDE0YjBlNGVjYjRmYzAwNiBsZWdhY3ktdHJ1bmsKKzUxODAgNzVhZmFhYzg1NTY3MDdjZjAzZDU3Zjk5YzU1NjcxYjRhZDQ0NmY0ZiBsZWdhY3ktdHJ1bmsKKzUxODEgMmEzMTg3NmY3MTAyOTkwNTZmMDJiMTNjODcwODVhZTZiODA5MTNiYSBsZWdhY3ktdHJ1bmsKKzUxODIgMTliMTE5NWEzYWY4NDdlMWE5NmQ2NDUyOWYzOGUzZTU4NTMyYjg3OSBsZWdhY3ktdHJ1bmsKKzUxODMgNmM4NjRhZDUxOWEzNjg0YWZhM2JjNzE5N2RiNWE0NDJlMmIyMTM0YSBsZWdhY3ktdHJ1bmsKKzUxODQgODg5YzZkYTdiNGNhNTExOWRmN2RhZjMwMjQzNmY2YjQ0MmIyNGQwZiBsZWdhY3ktdHJ1bmsKKzUxODUgNjI2N2E1ZjIyMmJmZGVkNWUzOTNlOWE4YmQxZmFkZGQ5M2ViMzUyNSBsZWdhY3ktdHJ1bmsKKzUxODYgYWJmMTE2ZGI1MjNmZTRkYjliOGZhZjAyMzY0MDk1MGIxNDc5MjlhYiBsZWdhY3ktdHJ1bmsKKzUxODcgMzY0ZDRhNTI0Y2VjODIxZGJjZTczZTY5MWM0OWVhMmVjYzdjODJhZSBsZWdhY3ktdHJ1bmsKKzUxODggYTVjZWIzZTkzZmExMjczNWVmMWExMGNmMjg1ZmMzNzhlNjU2NTg3NSBsZWdhY3ktdHJ1bmsKKzUxODkgYTBmYzk0YjNiYjIxMjcwNDJhMWQwYzZjNWEzOGFkOGZmZGI4MTU4MCBsZWdhY3ktdHJ1bmsKKzUxOTAgNmE5ZWNiMDVjNjc5ZWQ4YzRiYzU3MGQ3YmZhOWRlNTg3MmJmYWM2MiBsZWdhY3ktdHJ1bmsKKzUxOTEgODIyMjA0MWY1YTkxZDU0Mzg0ODk4YTUyZDQ3YzA4M2QyN2RhZTJkZSBsZWdhY3ktdHJ1bmsKKzUxOTIgZDAzY2NhZTE3MGVhZjI4MjljZjgzYmQ0OWU2N2IzMzU0YzFjNWIyMyBsZWdhY3ktdHJ1bmsKKzUxOTMgZTg4MGMwMTY0YWVjZTIyNmI2NGQ2NjczMmEzYzgxNDQ3OGM3Zjk0NiBsZWdhY3ktdHJ1bmsKKzUxOTQgYzI2N2UzMzEyMDMwOGEyYWUyMTljNTc3Y2M1NmVmY2EyMDkyM2E1NyBsZWdhY3ktdHJ1bmsKKzUxOTUgNWFmNmRiMWY2YzBjZGM0MmFkY2I1MDUxZjJlZDA4ZjU3MmY2ZjczYSBsZWdhY3ktdHJ1bmsKKzUxOTYgMTBlMTA1ZTRjZjljM2I4ZjA0NTBhZGI3OGE0NzgwZjBlZjM4ODhkZSBsZWdhY3ktdHJ1bmsKKzUxOTcgOWY4MmE2YmIwMDEwZGI2MmNiODg1MDhlOWU3NzI4YTU4MTBhNDU4MiBsZWdhY3ktdHJ1bmsKKzUxOTggZGFhMTUwYjNhNmU0M2UxMmIzZTE1OWI0ZTUwYzk1Zjk1YWQ0ZGFjNiBsZWdhY3ktdHJ1bmsKKzUxOTkgZGM2NGRmN2YxYWQ2OTAwZjU2MWQ0MmYyZTMwOTFlOTlkODVjMjIyMCBsZWdhY3ktdHJ1bmsKKzUyMDAgNjg2ZjRiZmI0ZGE2MjI4OWMwN2RlMmQwYTExNGI3NWNiMzg5ZmU2YyBsZWdhY3ktdHJ1bmsKKzUyMDEgOTAyNDBlODE5YmVjYjk5MWMyNjhlMzNhODczNzM1OWI0MmZjZWMwYSBsZWdhY3ktdHJ1bmsKKzUyMDIgMzdjNDhmZGU2MWI4ZWQ4NTYyZTYzNTA4YTVhZDgwMjQzYmQwYmRhYSBsZWdhY3ktdHJ1bmsKKzUyMDMgM2NmODk2ZDI0ZTUwZGJiNGY3NDAyYTEzNWUwNWY4Y2ZiNTc0NjZiZCBsZWdhY3ktdHJ1bmsKKzUyMDQgN2RmNmZjYjQyNmY1MTQ3OWI5ZTA1NzRlNmU1ZGRmOGJjZGVjMzQwYyBsZWdhY3ktdHJ1bmsKKzUyMDUgODBiNWM4MjI3MmEyNWMxZWY4NTEzMTRlMWJmOTJkMjg1OTQ0NmFlYSBsZWdhY3ktdHJ1bmsKKzUyMDYgM2UzNzBhNGIxMDNiZTIwNzljN2UyYjhiZGI1NTUwZjhhZWE3OTczNSBsZWdhY3ktdHJ1bmsKKzUyMDcgOTgyYTViZDZkNDZkMDc2NzBmMjA4YjhjM2YzNWQwODBlN2ZlMmVkMSBsZWdhY3ktdHJ1bmsKKzUyMDggYTgyNzgwMWVkOTYzMzg0ZWFiMTZmZGZlMGVlM2EzYzE5YzFmYmU5OCBsZWdhY3ktdHJ1bmsKKzUyMDkgZjE4NzliMWEyYzJhZThkYjdmMzk1MDhjYmQwMDk1Yjk0YTgwOWRkZCBsZWdhY3ktdHJ1bmsKKzUyMTAgNGYxYjBjYzczNTA3ZDY3Mjk1OTk1YzU5MGU2MDU0YTAxODRiZWFmZCBsZWdhY3ktdHJ1bmsKKzUyMTEgM2Q1ZWMxYzIyMDU1MDIyMTU2ZThmZWU5MzA2MzVkZGU2MzA4YjE0NCBsZWdhY3ktdHJ1bmsKKzUyMTIgODUzYzQ4Njg5M2I4MmNlOTVjZWMxMGJlNGY4ZmVhN2Q0ZTQxNDkwYSBsZWdhY3ktdHJ1bmsKKzUyMTMgZTQxNjY5YTFkZWEwMjRkOWJkZTAyMmM3ZjNiNTliM2MyNTBlMzM3NSBsZWdhY3ktdHJ1bmsKKzUyMTQgMzljZDI1Njc4YjQxYWNkNDE2NDM2ZTE5MGFlZmQwYTVlNDc3MjNiZCBsZWdhY3ktdHJ1bmsKKzUyMTUgOTUxNmJhZDk3OTYxMzEyOWVkNjBmMDcxYjM2OTcwMjg2MjYxMzYxOCBsZWdhY3ktdHJ1bmsKKzUyMTYgMGFmMDFmM2UwNmNjOWU0YTMzNTVmOTU1NTMxZWMyZGY5MmRmNmRiMSBsZWdhY3ktdHJ1bmsKKzUyMTcgYWU2NDAwM2IyYTc1NjUxYzRkZTdhYmEwZjBlYTU2N2IwMmM5MjU0OSBsZWdhY3ktdHJ1bmsKKzUyMTggMzU0ZWJkZGQzNjJiMDRjNzZjZTM3NTIxODk4ZmZkZTBiZmU2ODI0MyBsZWdhY3ktdHJ1bmsKKzUyMTkgNGI3NGIzYjQzMjY5YjcxZjRiNjYwZjg1YmJlYzJkMzM2YWRkZjVmZCBsZWdhY3ktdHJ1bmsKKzUyMjAgYTEwODdhYTY0MWNkOTVmMGYwODAzZjAxNDE2ZWIwMmU3YzA5YzYxOSBsZWdhY3ktdHJ1bmsKKzUyMjEgNDM4OWE2MGZlZGNlNjYxZmRhYjc3MDA3MWY4YThlNDRmOWNiMjY4YiBsZWdhY3ktdHJ1bmsKKzUyMjIgNTIxNTYzNTJmZGQ2ZDM1Y2RmOWYzMjRhOGRjODVjOWQ4NTM5MjBlOCBsZWdhY3ktdHJ1bmsKKzUyMjMgNmNmZDY5NTg1NjM2ZjAyZWZlYzM5YWNlMzVmYzE0YmQ4YjgxMjJkMiBsZWdhY3ktdHJ1bmsKKzUyMjQgNjlhYmE2ZDlkMzc4MzUyNmUzNGFjZjc0ZDAyMGQyOGU2ZWY4NmFlNSBsZWdhY3ktdHJ1bmsKKzUyMjUgYWFmOTAyY2RmZGM0YTJhMmQ3YmE1YjMxZWRjY2E5OTM1ZTA0NDkwYiBsZWdhY3ktdHJ1bmsKKzUyMjYgMWI5ZTkwMzUzNTI5MTE5MjE2MTMzYmYxMmZjMDRiNzM1ODQ3NTljNiBsZWdhY3ktdHJ1bmsKKzUyMjcgYjQwY2FiZmRjOTFkZTI1YmNlZmVjZjI2ZDhhNzk4MmZhNDZiMTYyNyBsZWdhY3ktdHJ1bmsKKzUyMjggYmUyMWMzZTBjYzAzZjQ4ZWI2YWE0YTIwYWQ0YzVjNDEwMTYyZWExMyBsZWdhY3ktdHJ1bmsKKzUyMjkgYjk1NDg5NjBmOTQ1MGM5YWQwOWJkN2JkM2NhYjljZWI5ZjM5MWIzNyBsZWdhY3ktdHJ1bmsKKzUyMzAgYWM2YzhiMTIxOWU2NzFjZDQ1NWY5Nzg1YTU1NDQ2MGFlMmQ2ZTQxZCBsZWdhY3ktdHJ1bmsKKzUyMzEgNmQ4ZDk4MWVmNmM0MTUxYzM2Njg2NWQ2MWI0NWQ0YzYwNDE5ZTllZSBsZWdhY3ktdHJ1bmsKKzUyMzIgZmVjYzkzOWY0ZDU5NTdjZmI3YjFlNjBiNWQ1NDFjNWM5OTc4MWYyOCBsZWdhY3ktdHJ1bmsKKzUyMzMgOGVjZTkyMjdmZGUxMDRkOWZlZDJhYTI3YzMwOGViMmQyOWYwOTc2MiBsZWdhY3ktdHJ1bmsKKzUyMzQgYTBhNGFmYTM5ZDdhMDFjZDRmMzY1YTRiOGJlYmQxNWU5ODhjZTY4YSBsZWdhY3ktdHJ1bmsKKzUyMzUgNmExNjU2ZGI3ZGRlZWNiNTlmOWZmZjJjZWQ2YTYyNjJiOTU0MzQxMCBsZWdhY3ktdHJ1bmsKKzUyMzYgZGMyYWRmNzllNTIzZTEwMmVjNTcyZmU4YzQ3NDc5NDU1ZjY0MTRiNyBsZWdhY3ktdHJ1bmsKKzUyMzcgMGU1ZGFmYjg1ZmJkMmJiNjNiNzJkMjlmZWI5N2U5YTY1OTg5YWNlMCBsZWdhY3ktdHJ1bmsKKzUyMzggMzU0MzJjOWE4NzRlMmMwZDFjNmZlZTk2Y2U0YjVlN2RlZjEyNjE1ZiBsZWdhY3ktdHJ1bmsKKzUyMzkgMWEzZmYwMTQ4ZGVjZDhmZjY0Njc5M2U0YTY1NWExNjQzODc1NjkwOSBsZWdhY3ktdHJ1bmsKKzUyNDAgYjczNWQzMzg2NjUxYTA1N2Q3YjBiOGM5ZGQ1NmIyMzAyNDllOGViYSBsZWdhY3ktdHJ1bmsKKzUyNDEgZmQ3NzdhZjY3YzIzMTBkM2NjYTkxODMyZTQ5ZWVjYWYwMDIzNTVlZiBsZWdhY3ktdHJ1bmsKKzUyNDIgNWJjMGVkZDViM2Y5MzJiNDdkNDhmNjAyZGFmZmIyNjY3ZjhiMzZlZiBsZWdhY3ktdHJ1bmsKKzUyNDMgYmYxZGVkNzU5NjJkNjIwNjE1NTc1ZGYxMTY0ZTc5NzVhYTlmODU2MCBsZWdhY3ktdHJ1bmsKKzUyNDQgMTdmZGVjMmZiMzA5YTkxZWIxYWVlY2YxNTk1ODAyMzhiODE0N2RhZCBsZWdhY3ktdHJ1bmsKKzUyNDUgYWY3ZDBmZWEzZmIyYTJjMmFlMWUyMDQ4NzVlZWRjZmE2ZGVlMzk2ZSBsZWdhY3ktdHJ1bmsKKzUyNDYgNDExM2Y0ZmJhYWU1MzcyMDJkMDlhMTZlMjk0ZGI5ZDdmYWQzY2I4YiBsZWdhY3ktdHJ1bmsKKzUyNDcgMTIwM2U1ODQyMjU1Y2U2NGVmMmYzYmE5ZmEyNzYxNDFlMjk0MzhiNyBsZWdhY3ktdHJ1bmsKKzUyNDggYTVkMzYxZTJiMmUyMGM2ZDBiY2Q1MDU5M2ZjODE0Yjg4YTQ2MmM0YyBsZWdhY3ktdHJ1bmsKKzUyNDkgOWVjNDRlMzdmNmIxMzNjMzZhYzg2N2JlMzA0NDVhMmEyYzNiMTU5NCBsZWdhY3ktdHJ1bmsKKzUyNTAgM2I3ZmE1NmEzYjliY2JmYjYzMjAxNzM5ZDA4NzQ2Y2Y4NWQwNGU1OSBsZWdhY3ktdHJ1bmsKKzUyNTEgNTBiMmY4MmU2ZjBlYTQ3YWRiOTcyMTMzMTg2ZTAwOGM2MzA5YzcxNSBsZWdhY3ktdHJ1bmsKKzUyNTIgMDZmMjI4ZDYyMzZlNGNmOWFkZjY4YmU4MjY0ZjU0ODZiYmYwN2Y5YSBsZWdhY3ktdHJ1bmsKKzUyNTMgN2MzZTRmM2VlMTUyZjg4YzQ5MTY1M2U5ZDcwMjVmMTQyMDE1OGEzYyBsZWdhY3ktdHJ1bmsKKzUyNTQgOWFhYjRlYjJiM2Y5ODM3YjhkZDQ4OGM2OGRiZTkwMWI3ZDgyODllZCBsZWdhY3ktdHJ1bmsKKzUyNTUgNDE1NjU0NTZiYzIyMWNjYzU5YWRiNGFiYWI4MGRhNTVhMDk3MjZhOCBsZWdhY3ktdHJ1bmsKKzUyNTYgMjRmYzA2MTZhNjk2YzgyOTk0OWYwZmUyOTY3ZGEwNWFhOWM5ZWE2NiBsZWdhY3ktdHJ1bmsKKzUyNTcgYmFmMGI5YjdjMmE1YWE2OTM4Y2Q2YTk1OGI1YTgwMjMzODg3ZWQyMyBsZWdhY3ktdHJ1bmsKKzUyNTggYWYzYWFiNmIwN2M0M2E5NTRlNzJiYjUxNDgxM2M1NDJjMDU0NDFhMiBsZWdhY3ktdHJ1bmsKKzUyNTkgYjg5MzdlNzRmZGY1NTFjMDMyMTIzMmZiMzRhMzBhNjU5OTBkNGVmZSBsZWdhY3ktdHJ1bmsKKzUyNjAgODIzZjNhOGVjZmU0MTkzNDcwMWJjZjM4YjQ3YzEyY2Y4Y2M4OWE2NyBsZWdhY3ktdHJ1bmsKKzUyNjEgZWEzOGMzNjNkZTU4Yjc1YjQ5ZTAzNmRjMDI3ZjExZWNlNWE3NmViNSBsZWdhY3ktdHJ1bmsKKzUyNjIgZWJjMTcxNGRjNzM4YmRkYzI0NDQzMTQ4NTcyODI1MDlhNTQ0YTk0YSBsZWdhY3ktdHJ1bmsKKzUyNjMgN2YyYzBlN2VmODQyNjJjNTk1ODY0NjM0MmY4NjhmMzMzOGNhYjBiZiBsZWdhY3ktdHJ1bmsKKzUyNjQgNTljMmFjYjNlNzAyNTQ2M2Y5OWRmZTNhYTdlMzVlYzM5NmIwZTU4NCBsZWdhY3ktdHJ1bmsKKzUyNjUgNGE5OThiMWEzMzFmMGFlOWYwZjMwYzdiMWUzODc1YTA1NWNhNDg3ZiBsZWdhY3ktdHJ1bmsKKzUyNjcgYWIzZGNhOTdmZmJlYjYzNWExNmVjNWVkMzhmZjQ1ZjYyZjg4ODA4ZiBsZWdhY3ktdHJ1bmsKKzUyNjggZTkxMWYyZmIxNzljMmMzMmNhZjkyMzZiYmUyMmNkYzIzYWQ1YTFhMCBsZWdhY3ktdHJ1bmsKKzUyNjkgNzUwYTJkZDhhNDM3YmZjOGJkMzE5OWM4ZDcwMDNjMmI0NTQ5Y2QxMSBsZWdhY3ktdHJ1bmsKKzUyNzAgYTIzNjNiNmU5Yzg2ZTlhYmM1MzY5M2I2YjU5ODcwNzlkZWEyZDU2MiBsZWdhY3ktdHJ1bmsKKzUyNzEgNjBjNTc3NzczNjZmNzU1YTk3MTQ4ZmI1MGMzYWJiMGQ5ZDhkYjhlOSBsZWdhY3ktdHJ1bmsKKzUyNzIgYjdhMDZkYjg1Y2FmY2U0MTNkMGM1NWRjZDkyNWFmMWQ2Y2YyNzgxYiBsZWdhY3ktdHJ1bmsKKzUyNzMgZDc2YTcxNGQxY2VhYWFkZTAwNzgwODE0YzNjNzJiYjkzMGQ1NDZhNyBsZWdhY3ktdHJ1bmsKKzUyNzQgNWNhNWQ3N2FmZDI4YmFjNzM3ZWIwYWFiOTc4NWU0MzFlZGRiY2I0ZCBsZWdhY3ktdHJ1bmsKKzUyNzUgOTMxOGFjNTE2OTFlNmQ4NjM4NGZmZDQ0MzBkMjE2NGEyNjEwZDM0NCBsZWdhY3ktdHJ1bmsKKzUyNzYgNmZmY2JlMGZlOWQzY2QwMGYyZmUzMjk4MzY4NzYzOTExOWMyZjliOCBsZWdhY3ktdHJ1bmsKKzUyNzcgZmMyMTkwZWMxYmVhZDI4N2JjMDZlMTgxMTMyNDZiMDZmOWQ2OWYxNiBsZWdhY3ktdHJ1bmsKKzUyNzggMDdmYzRmZWZiNjgzNzU5NTFlZTc2MGM4YTUxNTNjMjM0NjcxNGRlYyBsZWdhY3ktdHJ1bmsKKzUyNzkgZmIzZGFmOWIyNDU2ZGMxYTNkOTlmNTZmNzhjNWU2MjcwZWVhZjFlOCBsZWdhY3ktdHJ1bmsKKzUyODAgOTk5YjViZGMxOGNlOTk2YjAyYTA3NmFhN2MwYmYwYTk1M2FiMTQ1MSBsZWdhY3ktdHJ1bmsKKzUyODEgYzZmZTgwY2U3YzIwOTNhMWFjYTU1ZGYwYWEyY2NlMDVkZDkzOTliMiBsZWdhY3ktdHJ1bmsKKzUyODIgMWU4MmRkNmRmZTJlZjQxNmY0YjhhMjhhZjg0ZmY5ODQzYmNiYTAyZiBsZWdhY3ktdHJ1bmsKKzUyODMgYzRjMzlkMTcxZWMzYjA2M2Q2ZGJkYTI2OGMyYjFmNTVmOTU3ZTI4MiBsZWdhY3ktdHJ1bmsKKzUyODQgOGI4ZmIyNGQ0ODM3OTRmMmU5MzAzMTM5MmU5MzIwODMxMWQ5MzM3ZCBsZWdhY3ktdHJ1bmsKKzUyODUgYzliNzI5N2EwNzU4NzIwYjdjYTQzMjVlMGU0MjE3YWIxMjljMDc5OSBsZWdhY3ktdHJ1bmsKKzUyODYgODIyNWM2NTgxYjNkMzZlMjVlYTEwNmQyNDU0OWY5OGIyOTk0NGI4NiBsZWdhY3ktdHJ1bmsKKzUyODcgNjhkN2VhZTZjYmQ2YzU2NzUxMDQ5ODc5NjE4YmFiYTUyNDk1MmIzZSBsZWdhY3ktdHJ1bmsKKzUyODggNDNjY2ZjZDk4ZTgwNmVkYWQzZmFhYTZiNGY5NWM0YTdiYjMyN2I5MyBsZWdhY3ktdHJ1bmsKKzUyODkgNDA3Yzc4NDZiODg2Yjg1OGJmODgwMzg0YTJmMmIzODZlYTZkMjJhNCBsZWdhY3ktdHJ1bmsKKzUyOTAgMjgyYjBiNGMxZWVhNTkwYjkwYTVmZjEwOWYzNmMxZDYxZWNlNTM3NSBsZWdhY3ktdHJ1bmsKKzUyOTEgNjVjNzEwNTg2OGY4ODk5NjRlOGU0N2UzODEyZTY3MmIzMjFlMjkzZSBsZWdhY3ktdHJ1bmsKKzUyOTIgYmViYjBlYTdkZTIwMGNlYzNiZmEyZGZlYTNjNTgzNjBiZjg1N2ZhOCBsZWdhY3ktdHJ1bmsKKzUyOTMgY2Q5ZTYxMzUyNDRhNTcwOTBhNjcyOWYxYjUyMzg4MzY0NWQwOTUxZSBsZWdhY3ktdHJ1bmsKKzUyOTQgZmYxZmFhNGNjMWRmYmM4OWI3YWZmODkzOTBlYTM2NGJhZjAyMDc2YSBsZWdhY3ktdHJ1bmsKKzUyOTUgNTlhOTY4OWMxMWE4YjAxNDUxOGNjNDMwYWMyNWU2YTdmMjFiMTU3ZSBsZWdhY3ktdHJ1bmsKKzUyOTYgOTQzZTFjNDgwNGQ4MDA2MzVhYzk3NjUzZTFmYmMzYmE5MDUyMDMwZSBsZWdhY3ktdHJ1bmsKKzUyOTcgYmQ3OWNkNzY4ZmY4ODBlNzFkZTg2MTYwNzlmMzIwYzlhNmY4NDUzNCBsZWdhY3ktdHJ1bmsKKzUyOTggZWVkZDZjMWYzYWU3ZTRjYmQzNmM5NmY4ZDE5OWExMGIyYzU5ZWJmNiBsZWdhY3ktdHJ1bmsKKzUyOTkgMWZkOGYzMTZjYmU5MGY4OTQwMGM4ODUzYjkxODcyMzJjMDBmNzcwZiBsZWdhY3ktdHJ1bmsKKzUzMDAgMTY0Mzk5N2YxNzE4YWE2NGY1MzIwZTRjYzc3ZWYyNTIzOWY5NjEyMyBsZWdhY3ktdHJ1bmsKKzUzMDEgNGRlYTNmNTU0NWNmM2Q5MzUyZmU0MTk5MDlkNzM0NDA1YzZmZWQzYiBsZWdhY3ktdHJ1bmsKKzUzMDIgN2M3YjM3MDRhNjhmYTIxMTBjMDcxM2EyODUzNWMxMTdlYmU4YzliOCBsZWdhY3ktdHJ1bmsKKzUzMDMgZDkyZWY5NGFmZWZiZWNlZTY2YjgxMTEzOTE4NDhlYjI2MGYxNzA2NSBsZWdhY3ktdHJ1bmsKKzUzMDQgYjk4OGE0YWNhNmY5NjBhMjhiMjk1Y2M4YmExOWU1NjJkODkwOTA1MCBsZWdhY3ktdHJ1bmsKKzUzMDUgOWIxYTMyNjcyN2RmZDc3MGFhZWEwN2QwNGI5ZjRjMWU2ZjhmMzhlYiBsZWdhY3ktdHJ1bmsKKzUzMDYgMmM3M2M4YWI4YjgyYWU4MmQ0NWY4MWU4MzA0MzhhNTgwYjg2ZWM4MSBsZWdhY3ktdHJ1bmsKKzUzMDcgZDUzOThhY2FmYTJjY2M5M2VlYjE1NjNhNWQ0YTBhZTFlOGIxMzI4MSBsZWdhY3ktdHJ1bmsKKzUzMDggNjQ5MjhmNmE4ZTgwZTA2Y2UyNDAxOWI3ZGQ3YTYxYmU4MDQwYWJlZiBsZWdhY3ktdHJ1bmsKKzUzMDkgNDIwODc0ZjdkOGJkMWZmMDQ4OWI0NmEyZTE5NGZlYTM4MGFmNjIyMSBsZWdhY3ktdHJ1bmsKKzUzMTAgOGQ5MmEzYmI5YzFmZmFkY2I3YzIxYTFlNWEzZGVlMjQ5Yzk4Yjc3YyBsZWdhY3ktdHJ1bmsKKzUzMTEgMDI2MWJmNWIzODE5YjAzZDgzZjI1NDU2Mjk0NzI0NDYzNDYwNDAyNiBsZWdhY3ktdHJ1bmsKKzUzMTIgMDUxYmFjYWI1OWFmZTI1ZTMwNjk4M2ZlNDBiNjFkYzE1MmY4ZmJhNSBsZWdhY3ktdHJ1bmsKKzUzMTMgZWFlNGIyYmE3MjJlYjRjODRjM2RlZTllMzE0ZDE1ODlhZGE1ODNhMSBsZWdhY3ktdHJ1bmsKKzUzMTQgNTYwYWNjMjVmODk2NjAzMzJhMmRiMDY2OTMxYTdmMDRlYTA4NjliZiBsZWdhY3ktdHJ1bmsKKzUzMTUgNGY2ZDVmZTE5ODEyMmYzZDYyZGQ2NmFjOTZhNzk2ZTE2ZjRkMjMxZCBsZWdhY3ktdHJ1bmsKKzUzMTYgOTdjZmM0NmUzMzAyYzE2NmQ1N2JkMzVhOWI5M2NjYWIyZDQxOWVjZCBsZWdhY3ktdHJ1bmsKKzUzMTcgZTM3OTVkYjRhZGY4OThmYzIzZTg1ZTJhNWYyY2E2ZjE0NGZiYTA4YyBsZWdhY3ktdHJ1bmsKKzUzMTggYmVlZWZmZjFjNDQyNjUzMzY0MjFmMGRhZmM3ZDRiOThmZThhNzNiNCBsZWdhY3ktdHJ1bmsKKzUzMTkgMWVlZWJhMDlhMzA2NDk3MWFhNmQzZTFjY2I1NGI5MzM4ODJkZmVjMyBsZWdhY3ktdHJ1bmsKKzUzMjAgZDQyOTQxZDNhOTVmNDVmNjYyYjQ3N2I3NjNjNTgzYWI5ZGMyZTczMiBsZWdhY3ktdHJ1bmsKKzUzMjEgZGQ4YTMwZTVmNzQ0MzRjMjg5ZTY1MTFjYTY4MzFmMDQ1ODIyNjBkNSBsZWdhY3ktdHJ1bmsKKzUzMjIgZTZiZWMxNDlhOGQ3MjM5N2VmNWUzYjlkZWI1MWM5MGM0YzBlZjIwMyBsZWdhY3ktdHJ1bmsKKzUzMjMgYTdhZjk3MGE5NGE0MjcyYmNjMWY0ODBkNTQ0NGM4ZjFjMTRlYjgyNSBsZWdhY3ktdHJ1bmsKKzUzMjQgZWViYmRiZWU1NGY5MDIwN2Q2ZjM5ZjJkNGY3MzM0ZGM4MzFhMjU3MCBsZWdhY3ktdHJ1bmsKKzUzMjUgZWIxZWQ0ZDg0NjI5MGQ1MjljYTE4N2FjZTljOGM0YWJkOTFiM2M2ZCBsZWdhY3ktdHJ1bmsKKzUzMjYgYmEyYjMwOTcyZmZlYTczNWU0Nzk1YjljZDZjYTI2MmQ0ZTc1ZDk4ZiBsZWdhY3ktdHJ1bmsKKzUzMjcgNmFlOWIzNzdlNTIyYTRlZDAyMGExOGI1Njg4OWU1MzEyZjBiMTMwZSBsZWdhY3ktdHJ1bmsKKzUzMjggZGM2YjNlNzZjY2U2NjQyNzc3ZTA1ODFkNDk2MzljYzFkMDBhYjBlMyBsZWdhY3ktdHJ1bmsKKzUzMjkgZGY4Y2VkYTg0NTQ1ZTc1MDNjMDhjZmFlZGE1ZjNlYWM3NTVlNTcwYSBsZWdhY3ktdHJ1bmsKKzUzMzAgMTBlMDA3YWVmMWNmZjEzMGE3ZmFlNGMwNjFmYzY1ZmZhODQ3MzllYSBsZWdhY3ktdHJ1bmsKKzUzMzEgNWY5NTE5MTJlOTk1OTBjYjRmMWYwOWNlMjJlZjRlZjU4NTFkZGYxNCBsZWdhY3ktdHJ1bmsKKzUzMzIgZDQwMjkwZTQyNDU1NTZlOTU3NDNhMDZkNGE1NDFhNzljZWViMDc4NiBsZWdhY3ktdHJ1bmsKKzUzMzMgMTQxMTFkNjY1NzdkZDU0NjRhZjdlODk5MjMxNDY0NjM5MGRhMWI3MiBsZWdhY3ktdHJ1bmsKKzUzMzQgYTE2OWU2ODczNGZmMTBlYjE0Zjc2NGU5ZDZkN2RkZTc3YmI4ZGY0MSBsZWdhY3ktdHJ1bmsKKzUzMzUgZjY1N2Q2NzgxMmFmYWU4ZDAyNThkYTQxNjA3ZGQzZmNmZjU5YzRjOCBsZWdhY3ktdHJ1bmsKKzUzMzYgYjlhNjI1MDFlNzZkYzg5ZTk5ZWJmYjJkNjg2MDIxYzQxNTI3MTFhOCBsZWdhY3ktdHJ1bmsKKzUzMzcgNTIwZTE4NTVhMjRkOTBiMjFkNWNkYzJjNjYwODM5YTlhZmZiMzE2ZSBsZWdhY3ktdHJ1bmsKKzUzMzggMDUzNDAyNWNlZmU1NTZmYWM3ZWMzNGQ0NzkwMzllY2JiYmY1MmM3NiBsZWdhY3ktdHJ1bmsKKzUzMzkgZDNiMDdiYTNlMTJkZjNiODI3NjE0NTFiMzBjMzg3YTZjOTZkYmQ0MCBsZWdhY3ktdHJ1bmsKKzUzNDAgMzE1NzYwYmEwMDQxZDA0Y2JiYjc1ZTMyMWQyODZkNGEzN2ZmZTkyNSBsZWdhY3ktdHJ1bmsKKzUzNDEgOTI3ZjQ4MzlmYmZhMTQ4YzU3NTc4MDAzOTY5YzczZGJjODczYmI5MiBsZWdhY3ktdHJ1bmsKKzUzNDIgNzE1ODRmZTc3NDljMzVmZDhlYWY1NzdlZTU2YWJjYjM1NzVjMWFlNyBsZWdhY3ktdHJ1bmsKKzUzNDMgODUxNDBiMzU0ODkwMWY4Nzc5MzU5OGQ5ZjIwOTRiZGJkZmJhZWQ3YSBsZWdhY3ktdHJ1bmsKKzUzNDQgYmVlZWE5NzU3ODc5ODk3ODk5YmYyNDc4ZGIxZTJkNGFiMTgyMDI2YSBsZWdhY3ktdHJ1bmsKKzUzNDUgNWE1MjE5YzhjMmU2NzRmYzQwZmJmY2JjMDcxYjA3NmVjMWJhMzI0OSBsZWdhY3ktdHJ1bmsKKzUzNDYgMzYzN2RhNGM5OGNiMzEwMTQ3ZjA1OGVhZTM2MGRlOTg4MzJmZDMwOSBsZWdhY3ktdHJ1bmsKKzUzNDcgNmYxZGRmMTEzOTgyYWRhMThhNmIzOGI5ZTdmZmU3NjIxNjg0ZjNiMCBsZWdhY3ktdHJ1bmsKKzUzNDggYTBlODI0NmQ1MjM3OGQ1MTg5MWU2MGEwNjlmY2ViYzZhYTI3MTlkZiBsZWdhY3ktdHJ1bmsKKzUzNDkgZjg4YmNjYjU0OGVmNGMxNTU0YTRiODQxMTcwMTI3YTA2OGU2MTY3YiBsZWdhY3ktdHJ1bmsKKzUzNTAgNTFjOWNmZmYzMWYzZTE3ZWEzNDcyMWIwMDBiZjZhYzgzMTU3ZGEyYyBsZWdhY3ktdHJ1bmsKKzUzNTEgZTAwNmVkODhiNGFhNDY3ZGVkN2JhYTA2MDE5ZDU5ODJkMzJkODJmMSBsZWdhY3ktdHJ1bmsKKzUzNTIgMzYzYWY3ZTNlZDJkMjNjYjc5YjU5NzJiZTc3YmEyZmNkNTgyZmQ0MSBsZWdhY3ktdHJ1bmsKKzUzNTMgMjFlMTA1NDYwYTQ5OTllOGJmMTdhYjEyMWY2ZjBlZmZiNzQ1ZTU0MCBsZWdhY3ktdHJ1bmsKKzUzNTQgZWMwYjQyODg5MjQzYTdmOWU2YmM3NTY4MjAyM2JjMzg3OTFlYzFjNyBsZWdhY3ktdHJ1bmsKKzUzNTUgNmFiZDE0NDg1ODg0ZjYxYjhkMTE4YjZmMzE0MDVmM2QxZjExNjg4MiBsZWdhY3ktdHJ1bmsKKzUzNTYgZTUxM2YwZDY1MzY4YzFlNTgxYWQ2MTZhZmQ0ZTkwYzk1MzAzMmJmMiBsZWdhY3ktdHJ1bmsKKzUzNTcgMDRlMTY5MGZiNGQxMTc0OTYyYjM3YTYxZGM4MzM0OGZhNDNmM2RlZCBsZWdhY3ktdHJ1bmsKKzUzNTggOTY0ZDc2ZjQ5YTVlY2E5NWU4ZWQyMzU1OTdlNzdlNGViYWQzOTE5MyBsZWdhY3ktdHJ1bmsKKzUzNTkgMzNiMTU0YjZjNjFiYjlmZTllNDhiMzA1NzU0MTUxZDY4MmMwODFlNCBsZWdhY3ktdHJ1bmsKKzUzNjAgNDUwYWQ1NDk2NDA3NzAxZGVmYzgwODUxNWRlYmFiMDMxMGJjYzI0OSBsZWdhY3ktdHJ1bmsKKzUzNjEgNDA5NTc4MmM5NDBlYWM0MGU4Y2E1ODE0MGIwNmQ0OTk5Y2NhYWIwMyBsZWdhY3ktdHJ1bmsKKzUzNjIgODFiNDEzMjRkMjZlYjhlNDZjMTY0OTNkMTA3MWE0NDNmYjA3MDdkMCBsZWdhY3ktdHJ1bmsKKzUzNjMgZjBkOWY4MDBhNGFhYzdhZGExZWI0YmUxZjdhOTViZDA4ZDQ4MTBiNyBsZWdhY3ktdHJ1bmsKKzUzNjQgNGQ2OWZkZWU5ZjVkNDI5YTg0MGExYzE2MTI3MjAzMGEyMTk2OTdlMiBsZWdhY3ktdHJ1bmsKKzUzNjUgNTZlNjI4YTc3YzhkNThhMzAwOTMzZGY0YmM0ZDRmM2MzNzQ0Nzk1NiBsZWdhY3ktdHJ1bmsKKzUzNjYgNjVmMDZmYzM5OTYwMGIwNWRhNGYxYmZhMTk2ZDk2NWNjY2IxNDhiZiBsZWdhY3ktdHJ1bmsKKzUzNjcgMGFjYmQ4NWJjZGJhMzY1Mzg4MWE0YjAwOWFhNjQ2ZWE1YjBkNDNhYSBsZWdhY3ktdHJ1bmsKKzUzNjggNTdlYzI0ZTBmMzVhODBmMDI2NWZlOTc4MzRlMmU2YzBlY2JmMDM3YSBsZWdhY3ktdHJ1bmsKKzUzNjkgMTM1ODFiNDE3ODM3Yjg0NWJjYjkwOTA2MDlkYjlhNzMzYTlhNmRmOCBsZWdhY3ktdHJ1bmsKKzUzNzAgNzM4Yzc0NjE1YWM0ODk4YWNkY2YwM2RmN2ViY2Y5MmIwYjMwMWFhNiBsZWdhY3ktdHJ1bmsKKzUzNzEgMDI0ZmRkOWNjZGYyNDBiZDU0ZmViZWFlMTJmNDU0NTEyY2UwNzc1MCBsZWdhY3ktdHJ1bmsKKzUzNzIgMGFmZDQyOTYwYTFmZDM2MGIwZjk2ODFhMTM2ZDY2ZTg4NjlhYjNjMSBsZWdhY3ktdHJ1bmsKKzUzNzMgMjE0MzVhMGI5YjExNmE0OTgzZjhmMzVlZTNiYTZhMGYzYjJiYWU3NiBsZWdhY3ktdHJ1bmsKKzUzNzQgODk1N2JjZWJmMTJjNGZiMjk2YWZlMjQzNWUxMDJlZWFmOTBmYWE0MyBsZWdhY3ktdHJ1bmsKKzUzNzUgNjE5ZjMxNjU4YjNiYTdiMWFhMGYzMDFjNDlhMzU4N2JjZDhjNjQyOSBsZWdhY3ktdHJ1bmsKKzUzNzYgZjliMTA2OWEzZTI2NWQ5MGRlZmJjODAzNzYzZGY4MWViODdlYTQwMCBsZWdhY3ktdHJ1bmsKKzUzNzcgNWEyNjEyZmI2YzBlMzFiMDdlNjIzYjVkNDZiNWEwM2QyMjdkMGFmOCBsZWdhY3ktdHJ1bmsKKzUzNzggNDI5ZDdlMWIxZjJiOGMzNjgyY2I0OGZkYmIxZDdlMGUwMGJmMzIyYyBsZWdhY3ktdHJ1bmsKKzUzNzkgZGY3YjE1YzFlOGI3OTZmZjRiYzI3MWNlOWQzNTUyZGEzMTU3Mjg4OCBsZWdhY3ktdHJ1bmsKKzUzODAgNTFkZDA2NWE5N2E2MTRlYzIwYjA4MTlhODYwM2ZlNDQwMzFiM2QzZiBsZWdhY3ktdHJ1bmsKKzUzODEgZTE2ZTE4Yjk2MjZjOGYyZWVlMWFhNmI3OGY3OGMwOTgyZDhlZTdlNyBsZWdhY3ktdHJ1bmsKKzUzODIgNDUwOWRmZTE5YjY4NjBkZjFhNTI4MGQ0ODlmNGE0MTY2M2RhZDE3NyBsZWdhY3ktdHJ1bmsKKzUzODMgNzY0YjBmYzg2N2E0NzVjN2I3NDg4MTcyZTAxYTgzM2U4MDFlZTFiNiBsZWdhY3ktdHJ1bmsKKzUzODQgOWZhZDAyOWY4MzhmZDFiOTJmMzM2ZTlhYjQzNmM2YjBiOTUwMmZjZSBsZWdhY3ktdHJ1bmsKKzUzODUgY2ZhOWIzYTg0ODcyZWFmOWQ5YjI2NzFjMDE0NGUyY2ZkMTJmNjdhNCBsZWdhY3ktdHJ1bmsKKzUzODYgODExZDlhOThlMThhYjQxNjI3ZTM4YzFlOTNiYzVlMzJmNTEyMWEyOSBsZWdhY3ktdHJ1bmsKKzUzODcgMTc3ZjU3NTcwOGJiMDkwYjE4ZDE5NjE0NTExNjRjNDVjMDlkNjNjMyBsZWdhY3ktdHJ1bmsKKzUzODggMGM1MGVjOGU4MzU4ZThkNGEwNzY5ZjIyYjc0YTRlNTcwZDg1N2M2MSBsZWdhY3ktdHJ1bmsKKzUzODkgNGYwODJiZTU5MDJhZTE1Mzg2ZTE2Nzg1NDhiMzllMTM3ZGYxZTRmOSBsZWdhY3ktdHJ1bmsKKzUzOTAgMTc2MzU2MDRiZGNlMTVhNGNiMmNjNjE1OWQwNjYxZmQzOGZiNjAwYiBsZWdhY3ktdHJ1bmsKKzUzOTEgNDQxNDVlZWI2MTAwYzljMjVlYWUxNjg3OTM5MjNhNjQxNjI4MDNlNiBsZWdhY3ktdHJ1bmsKKzUzOTIgNWViOGJkZTMwMGI3ZWRlMTQzYmEyOTY0ZjNhYWE2OGZhZTAxMzliNiBsZWdhY3ktdHJ1bmsKKzUzOTMgNGE1MzQ4MzkzOWMxZWI5OTI5MTg5NmI5N2EyOGMzZDFlODMyMjM2MCBsZWdhY3ktdHJ1bmsKKzUzOTQgMGFkOWQxMjNmZjU1ZGYzNDk1MjRiYzI0MjMyYzVhOTY3NTI5YjIxZCBsZWdhY3ktdHJ1bmsKKzUzOTUgNzkyZTM5ZGZlMjE2MTZhNjQyYzU0MTRkNTliMmJjNWY0YzljMTQxZSBsZWdhY3ktdHJ1bmsKKzUzOTYgN2QxZWNlYzI1YzA2ZWRmYTQ5ODc5NzEyMTk1MjdkOTk3NWY4YzY0YiBsZWdhY3ktdHJ1bmsKKzUzOTcgNzM5Mjc5MDMyOGJiZjNmZDdmYjMwMDYyYzM3ZTcyN2JlZWU0NTEzOCBsZWdhY3ktdHJ1bmsKKzUzOTggZGNlOTE1NWIwNDAxZWQ4N2ZhNDQ5ODVjN2EwMzM3MjlhMmQwMjNjNCBsZWdhY3ktdHJ1bmsKKzUzOTkgZWZiZGM1MGU3ZjU0YzUzYjcyNzRlZDMzZTM1YmE0ZWE1Zjk1MWRhNiBsZWdhY3ktdHJ1bmsKKzU0MDAgN2UxMjY1MzEyZGQ0Mjc1M2M4NmVlMDYzYWU0YTZiYTczZjY1NzYwNiBsZWdhY3ktdHJ1bmsKKzU0MDEgY2I1Y2NiYmExODU2OGViMzg4MjMwNGUyYTEzZTg5MTcyYjY5MjJmMSBsZWdhY3ktdHJ1bmsKKzU0MDIgOGFhYjgzY2M2MGEwNDFjMDc2NjdjNjMzNmQwOGJiOGMwYzNmMzVmMyBsZWdhY3ktdHJ1bmsKKzU0MDMgMDk3MGViZDMxNTM2NzQ0ZTM4OWYzNzEyYjQ4MjcyZDhhYzVkMDkwNCBsZWdhY3ktdHJ1bmsKKzU0MDQgMWQ4NjI2YmM5OWM3MTAyOTFiNTAwNTUyNDczNTM0MmI3NTliYjgwZiBsZWdhY3ktdHJ1bmsKKzU0MDUgZjAxN2Y1Y2RiNGJkYjI4NTQ5ZTg5MjRmNjI0ODQ3MzcxNmUzNDY0OCBsZWdhY3ktdHJ1bmsKKzU0MDYgNGRmZGYyMzRjZGE4ZjUwMzMyMzlhNmMyZGVjOGQ0YmI0ZTc0YWUzNyBsZWdhY3ktdHJ1bmsKKzU0MDcgNzA4MmMxYTFmOWFiOTg2ZmMxMjRjOGZkNjZhYzFjYzY1MGUzN2Y5ZSBsZWdhY3ktdHJ1bmsKKzU0MDggOTdmN2NmYWJlMDdlN2E5NDBkY2E1ZjkxY2Q4MmJkOTY3MDdlMDI2ZiBsZWdhY3ktdHJ1bmsKKzU0MDkgMzcxNTIwNjM5N2ZlOTA2MGJkNDgyNzJkMmViNDNmZGFkNmVmMGJlMiBsZWdhY3ktdHJ1bmsKKzU0MTAgOGVkYmVhYTJiYmY3YTcwMmVlYjM4NDdlYzBlMjA5ZThiZWYyZWM2MyBsZWdhY3ktdHJ1bmsKKzU0MTEgYzA5OTdiNDYyMzQ0YjQwNjYyOTBlMTA4OWUyMTBjMWUzZDdhY2Y0YyBsZWdhY3ktdHJ1bmsKKzU0MTIgZjE3YjdkMGE3NDgyNDRlOTc0ZjdjMTA2OGNlMGEyMzE2MDY0N2EzNyBsZWdhY3ktdHJ1bmsKKzU0MTMgMTBjMTAzMGI3MGFkZThmMDEzZjUxMzkwOWEwMTJjMTA1MDUzZGRiOSBsZWdhY3ktdHJ1bmsKKzU0MTQgYTk4MGQwNzYwNTJkYWJkYzE5NzJlMTg2OGU2YzA4NWJhMzMwY2U1YiBsZWdhY3ktdHJ1bmsKKzU0MTUgMzAyOWU4MWVkYmM3NzViOTY3MTEwMjQ1OTcyZWE3YzlmMWFmODk5YiBsZWdhY3ktdHJ1bmsKKzU0MTYgYmMwODAzMDg0ZTYwYTk1YmQ3ZWEzN2EwMTA1OGVmN2UwZmI3MTM4NyBsZWdhY3ktdHJ1bmsKKzU0MTcgYTFhOWI3MzY0YmMzNDg2NmNmYmI5NDY3OWZjZjcyYmYyNjQ0M2QyYyBsZWdhY3ktdHJ1bmsKKzU0MTggMTFkODk5MTRjN2I5YjFmM2Y1ZjljYjMwZTUyOTY5ZTdhY2ZmNDkwNyBsZWdhY3ktdHJ1bmsKKzU0MTkgMjFkZjQyMWYwM2ZlMGQ5NjhlNTIwN2Y1ODhlNmMwODQ3YzBiZTY0MiBsZWdhY3ktdHJ1bmsKKzU0MjAgNDVhZDFhOTM5ODZhMGViZDJjOTkwNjQzNDliMzJjNGU1Y2FhYzA2MyBsZWdhY3ktdHJ1bmsKKzU0MjEgYzVjYjNhNTM5MzNjMzUxYTNjNDNmMTAyMzE0M2U1MzE1ZDE2MTEzNiBsZWdhY3ktdHJ1bmsKKzU0MjIgNTI3ZDFiMjkyNTI1MDYyOGViY2RhYjU4ZGE5OWIxYmY0M2Q4M2U1ZCBsZWdhY3ktdHJ1bmsKKzU0MjMgNGQ3ZmQ5ZmY3OThkNTUxOTk1ZGZkNDJhZTRmNjc1ODAzOGMzYzNiNSBsZWdhY3ktdHJ1bmsKKzU0MjQgY2M5MjIyYjk0N2VlMGExNDc1ZTRmYWE0ZDYzNmZmMWMxZTZjZjEwNSBsZWdhY3ktdHJ1bmsKKzU0MjUgNGY5ZDRlNzMwNTdjNzYzMjM5MGQ2ZGU4MTk4NTJiYmY5NTBjY2FiZiBsZWdhY3ktdHJ1bmsKKzU0MjYgZWI2ZWI2MWI2MDZmZmQzMjU2OTk2ZWNhYzZkZjEyZDJjNzc5ZTE5MCBsZWdhY3ktdHJ1bmsKKzU0MjcgZjNmN2MwMWJjOTY2Y2QyNzgxZmYyNjYyZmM0NzY2MDZiNmJkMmUyMSBsZWdhY3ktdHJ1bmsKKzU0MjggMWM5MTlkMDJhNjQ1OTc1NDg0YmM3ODJjYWMzNjFkZWZkMjVhMWE3MCBsZWdhY3ktdHJ1bmsKKzU0MjkgZjcyYWJkNjJkNTA4M2Y1N2Q1ZmFhMDY2MmFkODg0NzBkMDk5MDYyMiBsZWdhY3ktdHJ1bmsKKzU0MzAgMDIzNTI3MzQyNTk5NmEzNjJkNTlhMGJhZWUzY2FiNGE0ZmY1Njk5MiBsZWdhY3ktdHJ1bmsKKzU0MzEgMTIyZDE0OWZhODAxNjQ2MDc1Njg0NzIwNTQ2MDkyZTJkN2VjM2U1MiBsZWdhY3ktdHJ1bmsKKzU0MzIgZDAwNzJkMWRmODJjMmI3ZjlkZTAxOWVmZWMwOTRiMjgxZWQ5M2UzNCBsZWdhY3ktdHJ1bmsKKzU0MzMgZjlmYmZkOTAzMTUzMDJkZTNmOTFjYmU2N2JlNDRjN2M0NzNmMWE0NSBsZWdhY3ktdHJ1bmsKKzU0MzQgNzQ5NTNhNDE2MDdjMWE2M2UwYTU5MzE5NTgzYzA1YTM3MGM2ODk4MCBsZWdhY3ktdHJ1bmsKKzU0MzUgNTIxMzA2Njc5ZTM0OWVmYzJmYmUxMGJmYmIyMDYwZDAxYTNkYTg0ZiBsZWdhY3ktdHJ1bmsKKzU0MzYgYzAwZmFlMzgwZGM3OGQyYTlmNjBmNTNjZjVlNzY3MTNlMTAwMWIzNiBsZWdhY3ktdHJ1bmsKKzU0MzcgY2ZjNjZiOGNhMjAyNzAwMWZmZWNiNDM4N2JlZDI4MTA3NzBjY2VlNiBsZWdhY3ktdHJ1bmsKKzU0MzggZDIzZDczYjRlNThhOWZmYjBjNzAzYTJkMmY0Mzg5NzZlMjcxNTI4NiBsZWdhY3ktdHJ1bmsKKzU0MzkgOTk5NDVmZGE3MTlkYjIyMjFiNDYxMzQwOGMxMDJiOWY5ZDllYjQ2ZiBsZWdhY3ktdHJ1bmsKKzU0NDAgOTg2NGZlMDU5ZTBkYzRjNTA1YThjMTIwMjZkN2RhZTE4MGQzOTNmYiBsZWdhY3ktdHJ1bmsKKzU0NDEgZDFjNDU4Yzg3ZjRhNmIwZWRmYWM2YjQ2ZmI0NjFiNjA1NGYzNzQ3YSBsZWdhY3ktdHJ1bmsKKzU0NDIgODIzNTZiZGRmNzEyY2ViYmU2ZTMxN2Y1YzczMWVmMzgzMTIwZDA3MiBsZWdhY3ktdHJ1bmsKKzU0NDMgNGRlNzc5MjMyYWE0YzBhNDlkNjEyOGI2N2YzZmE4ZmJmY2MwMDA0MyBsZWdhY3ktdHJ1bmsKKzU0NDQgNDQxODY2YmUyZWM5OTE2YTIwYWQ3ODc5MTljNGEzZGQwYWY4YzQ5NCBsZWdhY3ktdHJ1bmsKKzU0NDUgN2E2N2RiY2I2ZDgzY2YyYjBhYmYxMjNkOGRmNDhhYTlmYmI1Nzk5MSBsZWdhY3ktdHJ1bmsKKzU0NDYgN2VlYTliNDI2ODAyNGI1MGQ5OWQ0MzJiYjRmMWJiNDlmNTFiYjYwNSBsZWdhY3ktdHJ1bmsKKzU0NDcgYjZjZmEwNjNiODliYjBiYjEzZTdhZjI4ZjljZDIxM2FmZmYyN2I1ZCBsZWdhY3ktdHJ1bmsKKzU0NDggNTZhZDI0N2NiZmNiZWQwM2MzYzMzZjdhNDI4OTAyZjE3M2IwZDQyMiBsZWdhY3ktdHJ1bmsKKzU0NDkgOGQyOTA3ODU2YjM3ODQ3MDEzOWMxZmQ2NTJjM2QzYWFkMjllMWJkMSBsZWdhY3ktdHJ1bmsKKzU0NTAgN2IzOTExOTYwNTY0MTVmNTI2ZDRlMWExM2ViZjdjNGFlOTc3YjRmMCBsZWdhY3ktdHJ1bmsKKzU0NTEgNGMxZDgwOTUzOTUwOWI4ZTZiZTcyNGNkMDMwOWI2YmU0YTFjMDhiYSBsZWdhY3ktdHJ1bmsKKzU0NTIgMGQ3MTAwZmZiNjFhN2U3MzhhZmIxMGY5MTljNWNjNTUxNDQ4Y2YzZCBsZWdhY3ktdHJ1bmsKKzU0NTMgN2QyNjgzNDJkYzNhM2FjOWE0N2EwMzRjMmQ2OTA4YjlkYjQ1YzY3OSBsZWdhY3ktdHJ1bmsKKzU0NTQgZjkzM2E1MzBjMzhmMTcwNzI2NTlkYzAzYTRkYTZkY2RiZjNjODhkMiBsZWdhY3ktdHJ1bmsKKzU0NTUgMmZlOWQwMzcxZWNkMDY3MWJiOTVhMzFiMzJlYTE0NjM4ZjJkODQ3OSBsZWdhY3ktdHJ1bmsKKzU0NTYgMDRiYWRhOGQ2NWRlNDM1ZDUzODZkOGU1ZmRkMGQ3YmY2YTg3Y2NmMSBsZWdhY3ktdHJ1bmsKKzU0NTcgOTQ3N2E0NDU3ZTU2NDMzMTVjMjJmZGU1YThkMWI3OTY0YjJlM2ZjMyBsZWdhY3ktdHJ1bmsKKzU0NTggNDQ4ZWRjOTIzY2FkNDBkNzA3MmFjNmM5ZjczODZlZWFiYmExOGFkZiBsZWdhY3ktdHJ1bmsKKzU0NTkgZDI5N2M3MjIwNjEzNTg0Mjc3ZDc0YzM0MDdkNGJiMjQ3NDI0MjkxOSBsZWdhY3ktdHJ1bmsKKzU0NjAgNWQ0NzQ5YTQ3MGI0ZDAyMDBiOWNlYTg3Yjg2MDFlYTRkNWMwODQzNiBsZWdhY3ktdHJ1bmsKKzU0NjEgYWMwMTUyZjYzYmRkZmI3OThiMTE2NWU3ZTQ1ZGVmMWM4ZGYzN2RhZSBsZWdhY3ktdHJ1bmsKKzU0NjIgMWE4ZDZjN2RkNTYwZjE5NTBlNGNiNmE3NTUxYWQzNjRhNDQxMmM3MCBsZWdhY3ktdHJ1bmsKKzU0NjMgNTEzYTk2YTU3NTBmYmE3NTE3NGNlM2FlMDJkOTA3OTUwN2UwZTkzYSBsZWdhY3ktdHJ1bmsKKzU0NjQgZDRmZjQ3ZGY1OTIwZGZkMjE0NjgzNDllZDRlMzUxNGNhZDIwMzUwNSBsZWdhY3ktdHJ1bmsKKzU0NjUgOWJjYTk0YTM2YTA4MTBhZjIwNGQ2OGMwNjk2Nzg4OTlmMmZmYTFkMyBsZWdhY3ktdHJ1bmsKKzU0NjYgYmEyZmU1ZjgzNmE4M2RlMmQ3OGU1YWFkNjVlNWYzNGQyYWJlMGU0YyBsZWdhY3ktdHJ1bmsKKzU0NjcgNTU4OTViNWEzMDA3YjRiYzkxZjMwYmFhZGY5N2JlOGYyYjMwY2M2ZCBsZWdhY3ktdHJ1bmsKKzU0NjggZDQ2ZDgzMWJjNWYzMDEyM2Q4NTdjODA3NjU5NjdiZmY5MGY2ODI0MyBsZWdhY3ktdHJ1bmsKKzU0NjkgNTkxMWYyNGJjYzJkZTAzNzBlYTkwOWFkZGQ5ZDlmYTg1N2FjNTU5MSBsZWdhY3ktdHJ1bmsKKzU0NzAgODk4N2NmYTc1OGJiZDViN2Q0OTgwMGNkMTg3NzE1NTg3ODE1MTc0OCBsZWdhY3ktdHJ1bmsKKzU0NzEgYmVjZDU4MTYwOTExMGJlYmJlZmRkYTkxY2Y3ZmNmNDE4NGUwZmMyMCBsZWdhY3ktdHJ1bmsKKzU0NzIgYWQ2ZjAzOWE1YzQ5MjJmODkwZmNjMDQwMWFhMDBmODUwNmFjZDg0NyBsZWdhY3ktdHJ1bmsKKzU0NzMgMjBjYTU4ZWRjODU1NDhjODBiNTExYTAwOGMzZDdhMjAwMDNhNDYwOSBsZWdhY3ktdHJ1bmsKKzU0NzQgMDJmMmM1MThhYTQ2Yjk0MzY2ZWNiMzAxZDhmYjhhZmJkNTg0MDI4YiBsZWdhY3ktdHJ1bmsKKzU0NzUgYTUxMDIyZjE5ODBmZDVhMTVkNjhhMGU5YjMwZWMxODYwNDAwZTA5ZSBsZWdhY3ktdHJ1bmsKKzU0NzYgN2ZiNmYyMGUyYmEyOTQ0NGUyOTQyYTk3YTNiYmJkNThjYzcwZDQ0ZCBsZWdhY3ktdHJ1bmsKKzU0NzcgNmFhNGU5MjA5ZmJkOGVkYjcwNWI3MjdmMWRiMDg0M2JmYTgxYzM4MyBsZWdhY3ktdHJ1bmsKKzU0NzggNzJhNjFhMTQ5ZTRlNmM3MDE5YjMxMDMyYzU4ZGUwMzBmNTU0NjVmMCBsZWdhY3ktdHJ1bmsKKzU0NzkgNmI5Y2I2NjM0ODk3NWQyNDMyM2JlNGNjMzJjOWNlYWE3NDI3M2NiNyBsZWdhY3ktdHJ1bmsKKzU0ODAgMjEwNzM4ODY2MTY2MTIyODUwZGRkNWRjM2ZlOGUxMjAxYzdjYzYyYiBsZWdhY3ktdHJ1bmsKKzU0ODEgNWQzZDI5NzA0NmQyYzcwMzE5YzJiMzBjNjZmNjgwZTQ1ZTg0YzRiNiBsZWdhY3ktdHJ1bmsKKzU0ODIgMjY3MTg0MmM3MmNmYzRkYzRmNGExZWRiYThjZWNmNmQ4NDA2MmI5NCBsZWdhY3ktdHJ1bmsKKzU0ODMgN2FlMzMyNDcyNjI5YzRhZjkxNWMyYmE4NWZlOThhMTI4MWQ3YTFjMCBsZWdhY3ktdHJ1bmsKKzU0ODQgNzc3NDQwMDM1ODEzMzk4MmU3NzZhNTlkNTkwNDRiMjEwYTM1ZTJjZiBsZWdhY3ktdHJ1bmsKKzU0ODUgMjczOTBiNTM2NjQwYzUxYjQ1NDBhZmFhOTQ1YWFiNWQwY2I0MzQ5OCBsZWdhY3ktdHJ1bmsKKzU0ODYgZDI5NWY0Yzk4YzhhNjQ2MGUzZGFmNjAyZTgxYmExYjRkOTY1YjdmZSBsZWdhY3ktdHJ1bmsKKzU0ODcgYzc2NzFjMzZjNzI1ZTY4NWIxMGJhM2U3Mzk3MjVjNzc3M2E2OTQxNCBsZWdhY3ktdHJ1bmsKKzU0ODcgZTYzZDgzZjgyNzU4NTNhYWFhM2QxOTcyY2I4NjU2NDUwNWU2NTU4MyBsZWdhY3ktdHJ1bmsKKzU0ODkgYzVkODUyNzM1ZTdmN2I0OTBlY2JjY2JjNjBmYjYzYTk3YTE0YjdjMyBsZWdhY3ktdHJ1bmsKKzU0OTAgODc4NDcyMjhiMTU4ZDk5NzFmYTlhYjNhMjVmZTNjMjI2NzIzMWRkOCBsZWdhY3ktdHJ1bmsKKzU0OTEgNTRhYTg3YjFjY2VlNDU5ZGQxZTEyOWVkZDQ5OWIzM2JkZDllZmM0ZCBsZWdhY3ktdHJ1bmsKKzU0OTIgMzkxMWQ0YTg5YWIwY2FkMzY4OTJkMzZiNzQyNWNlM2JkYmVmZTU4YSBsZWdhY3ktdHJ1bmsKKzU0OTMgNzRjOGZjZGM5N2RhYTYxYWFiMzRiNGI3Yzk0MDczODMwYjE4YmE1YiBsZWdhY3ktdHJ1bmsKKzU0OTQgZGM0YmVjMDM2NzgzZTY3MDJmZDkwMjY5MmRlMmM2YTFlZjRmYTBhOSBsZWdhY3ktdHJ1bmsKKzU0OTUgN2NkMWRhNDA2NGQ3ODQxNjkzMjJmZTQ4ZjFjY2ZhZTcwZTAzNzc3YSBsZWdhY3ktdHJ1bmsKKzU0OTYgMTQ3NTNjMzJlOGI0MmExMzJlYjE3M2Y3NTk5MzJkMzE3MDI4MWMxMyBsZWdhY3ktdHJ1bmsKKzU0OTcgNDA1YjQ3M2FhNGExMzVjNTBmMmVmZTgxOTY1Yjg3NzlhYmE4NGE1MiBsZWdhY3ktdHJ1bmsKKzU0OTggOWM0OWFjZTZiMWU3OGYxOTEwNjUzMTRmYWQ4MTY4MjI0Y2U2ZDRlNiBsZWdhY3ktdHJ1bmsKKzU0OTkgM2IzZTY4MDc1ODMzMmI4MDk3YTgyMmRlZjE3NWQ1MDY4YzY1MjY3NSBsZWdhY3ktdHJ1bmsKKzU1MDAgNDdkOGJjYWJkMTc2ZjQyM2VhMmQyYTdkNmU0OThlYjRmZDI5ZjI3OCBsZWdhY3ktdHJ1bmsKKzU1MDEgYjgzOGQyYjk1MjAxMmZmMWNmYjZmNjU0ODFjOGM2MDJiNDFkYmM2OSBsZWdhY3ktdHJ1bmsKKzU1MDIgY2U1ZjBiODNmN2U5ZjRlMGU2NjcwZjM4OGFkNTBhNjJmOTBiMjY5NyBsZWdhY3ktdHJ1bmsKKzU1MDMgYmM4ZWVmZmQ0ZDA2ODc2ZDJiNzI4ZmUwMzFjODk3N2EzZTVkZTE2OCBsZWdhY3ktdHJ1bmsKKzU1MDQgZjhhYmMwMzdiOTRmOGNkZTQ5MWZiNTllNGFjYjc0MDdhOWU2ZGIwNyBsZWdhY3ktdHJ1bmsKKzU1MDUgNDNlYTJjOGIzMjg2ZTg4NzgyNDgyNzBlMTBmMzJlNWE0MmM0NGQwYiBsZWdhY3ktdHJ1bmsKKzU1MDYgMDE2ZjM2NjJlZjk4MzhiYmM4MGJiYjY1ZWJkNGMwOGMzMzVjMTQyNyBsZWdhY3ktdHJ1bmsKKzU1MDcgZGE2ZGJkZmQ1MWRiMWJjY2U3MWU0MjBjMDZhMTE5OGM4OWY3YzA0YiBsZWdhY3ktdHJ1bmsKKzU1MDggNmI5YzU3NWMwY2JhMDM4MjRkMzQxNmQyNWNkNjVkNjJjODlkZThjOCBsZWdhY3ktdHJ1bmsKKzU1MDkgNmFmMGZiYzg1NTNhYjZiMDU2NDgwZGM3MGI1ZjZlMGNkYzQxNjRmMCBsZWdhY3ktdHJ1bmsKKzU1MTAgNDU4MWEwZjAzNTNlYWYzMGY4ODVkNTk4OTYwODFmMmRmOGEwZmI2MCBsZWdhY3ktdHJ1bmsKKzU1MTEgN2U3YmIwMGEwYTJlMjVkOTVhZmYyMGQzMTUxZGFiNDJiMzM0MWQ1NyBsZWdhY3ktdHJ1bmsKKzU1MTIgYmRhNTRlYTIzYTgwY2MyZTgwYzE5MGJiNWNkOTg4YmU1NjMxOWNmYyBsZWdhY3ktdHJ1bmsKKzU1MTMgOTQ4MzViM2VkZjNlMDU5ZDE3ZWQ2N2Q3NWE3OWU5YTFlMDNiNGM4YiBsZWdhY3ktdHJ1bmsKKzU1MTQgNjVlYTc4ODc1YmM4MTI5MDVmOWI5MmQ3YzlkMDQ2NzFjMDgzMTQzYSBsZWdhY3ktdHJ1bmsKKzU1MTUgMDFiYzA2YzJlNDdkM2JmY2E4YWIxMDhlNTZhNzFmOWQyOWZlMTBiYSBsZWdhY3ktdHJ1bmsKKzU1MTYgNmM2OTRlYWQxNjY4NzUzOTgzZTI0ZWYyMTRjMjBjNmE4OTlmZTQ1MCBsZWdhY3ktdHJ1bmsKKzU1MTcgMmNkNGNjMDY1YzFmNjM2NmRlMzEwMGMxMGViY2M0OTg4NTdjNDg3YiBsZWdhY3ktdHJ1bmsKKzU1MTggYTk0NmU0Y2M2ZDViMDE3MGMwZjUzZmVjYmU5MmYwNGJiMjM1NzRkZSBsZWdhY3ktdHJ1bmsKKzU1MTkgZmQ1MDk4NmYzNWU1Y2NkYTM4NjJkNWY3ZjQ4MDVlMGRmMDAwNTljNyBsZWdhY3ktdHJ1bmsKKzU1MjAgNWI5MjhiNjk1ZmE0Zjc3NTlkY2Q5ZDZlMDk5NDBlM2QzN2RmNzdhYiBsZWdhY3ktdHJ1bmsKKzU1MjEgMmNiMTQxNjAxMGIzMzYxNjMxYjM4ZTdmYTUwZWE2YTU5ODRiMmQzMCBsZWdhY3ktdHJ1bmsKKzU1MjIgZWQwODc0Mzk4NDMzZGE4Zjk0YjRhYTZmYjM0MDE5Mjc5NmQxZDkwZSBsZWdhY3ktdHJ1bmsKKzU1MjMgN2UyYzA0ZTZmN2U3MTcwYmE3ZTEyYjY0YmE0ZmM2NDMyZjM2MDc5YSBsZWdhY3ktdHJ1bmsKKzU1MjQgMjRhZjhlYWI3Yjc2M2JiNDlkMjc0MDM4ZmFlY2ZmMzNlMDAwYzU3MyBsZWdhY3ktdHJ1bmsKKzU1MjUgZDk0YjUwMGNiOTg2MzA2ODMxNzZlM2IyN2VlNzRlNzBmNTE4YjAyZiBsZWdhY3ktdHJ1bmsKKzU1MjYgYzEyMDMwZmJiNWI2MGZiNWI5NzU2OGQ5MGRmYmZhNDYxNGQ2ZTQ1NCBsZWdhY3ktdHJ1bmsKKzU1MjcgNjYwZTZmMzU5OTFjYmE0N2VkOTczY2ZmOTkyNDQxNmE5NWNlMzJkYyBsZWdhY3ktdHJ1bmsKKzU1MjggZGQ1NGVlZmRjMmM5N2YwNWQ0OWViNzQzZDQ2N2Q4MGEzYWM0OTM3MSBsZWdhY3ktdHJ1bmsKKzU1MjkgOGQ1MTc5Mjc3ODU4YmU5OTA3YTA0MzJlNmIwNDBlNjM2YzBiN2ZiMiBsZWdhY3ktdHJ1bmsKKzU1MzAgYjMzM2YxNmZiNDE5NmU5M2RlZWY0ZjlhOGMwNTZmMDhjMmEwNWE5MyBsZWdhY3ktdHJ1bmsKKzU1MzEgZGY3ZGZhYzMwYzNlM2E5MThjZTcyYjJiY2RmMjZiNTczMjM3YmZhMCBsZWdhY3ktdHJ1bmsKKzU1MzIgYTU3NjhlNGVlMDQ1MzI0MGNkZmIxYjA0MzIyNTJmNTZhNDVkMGNjNiBsZWdhY3ktdHJ1bmsKKzU1MzMgMTM0YzZjMmQxYWJmOWM5NWQ5MGFhZjVlZThjMTY1MzNjZWJkMzg0YSBsZWdhY3ktdHJ1bmsKKzU1MzQgNmVjODIwZGIyZmZhZjY2YWFjMTU2YmVmYzNlMTY2OTk1ZDJlYTFmMCBsZWdhY3ktdHJ1bmsKKzU1MzUgMzFjNTJhMGEzNzJjMGVlYzc1Y2M0YjcyMjRhNTQ0ZDFmOTc4MTJkZSBsZWdhY3ktdHJ1bmsKKzU1MzYgMzI4YWM3NGY2Y2E2OTgzNGU5ZTY1OTc5ODliMmFlODNhZWVjNmZhOCBsZWdhY3ktdHJ1bmsKKzU1MzcgMjQ2ZDU0MjIxMjRmOTk5Y2QxOGNlMTliOTFiNmU4Y2ZiZjA1ZTNlNSBsZWdhY3ktdHJ1bmsKKzU1MzggZmJiOGVkZGM5MzA5ZmIxZTg4MjA2ZTkyOGI1M2VhZWY1ZjAyNzUxOSBsZWdhY3ktdHJ1bmsKKzU1MzkgZDE0Y2VmMTRmYmYyN2U3MGI4MmFmMThiMmI0NDY0MzI5NWE1YmJkMSBsZWdhY3ktdHJ1bmsKKzU1NDAgZDZiMTMwZmE5MWI2NWQzOWYwM2VlMjFhYTBkNzE1OGNiNzRlZTNiNyBsZWdhY3ktdHJ1bmsKKzU1NDEgOTcxZTVjYTE4YmQxZDg0YWUzNmU5NmJlOTM4NTEwZTZjNDQ3NWY2MCBsZWdhY3ktdHJ1bmsKKzU1NDIgZTQyOWE3ZTcxZTBjY2QyMmQxMTFmNmI5YjczOTVhMmE4MTRjZDJlYSBsZWdhY3ktdHJ1bmsKKzU1NDMgNjk5Y2Y4Yjk0ZjgwMmU4N2ZlODNmNzBmYzYxYzM1NTBlZjI5MDRjNyBsZWdhY3ktdHJ1bmsKKzU1NDQgNzIyNmRkMzE3NTVjNzAzYjAwZDBiMDA4Y2Y4YjUyYTA3ZTY1Zjg5ZiBsZWdhY3ktdHJ1bmsKKzU1NDUgZTNmYmNlZDFiYzA5YjMxOGU1NjJjOTM2NGYzZmQyMTQzOGE5MTY3YSBsZWdhY3ktdHJ1bmsKKzU1NDYgYmZhNDI3ZGE1ODBlY2RmMzRiNDRiZmIxZTYwMTJiYjk0ZjVlYWI2MCBsZWdhY3ktdHJ1bmsKKzU1NDcgZGI4OWFhYjQxNWExYjdiYmU2YzM0NTU1NzQ5NDdlYzg0Mjg3MzNlZiBsZWdhY3ktdHJ1bmsKKzU1NDggZWFkYTI0ODY3NmRlZjYzYjgwN2Y2MDZjODIwZTIzNDQ1MjNkYzNiOCBsZWdhY3ktdHJ1bmsKKzU1NDkgODdmZWEyNjFhMjYzZTdjZjFmOWViNDVjOGI0NmYxNWI2NzQzZDUxMiBsZWdhY3ktdHJ1bmsKKzU1NTAgMDdjYjUwMTQxZDA3MDcyYWE1N2FhZTRlY2M1ZGIwMDlmZWYzNTM2NSBsZWdhY3ktdHJ1bmsKKzU1NTEgOTFjMWJiNzVlOTQ1Y2Y4Y2M5NmIyNzA5ODE3YjFiOTgxNTMyNzYwNCBsZWdhY3ktdHJ1bmsKKzU1NTIgYTdjOTdjNDM3MTkxZDQ0Y2NkMTMwZjdiODc5YjI0NjlkNGM3NDlmNSBsZWdhY3ktdHJ1bmsKKzU1NTMgZDdlZWE5MDEzZTczNjI4OGIzZGZhN2M0NzkwOTMxOGYzNDY1ZDQyZCBsZWdhY3ktdHJ1bmsKKzU1NTQgMzE2ODRjNWJiMTcyN2NjYjQ4NjYzMjY4YmQzYTMxYzUxZDZkMDA4NiBsZWdhY3ktdHJ1bmsKKzU1NTUgNzU5MzY5OTBhMzMwYzBhNDRlY2M4ZDVmNDczMzUzY2FhMjMxMjlmYiBsZWdhY3ktdHJ1bmsKKzU1NTYgZWY5YWM2ZGVmNzFkM2I2ZWM5Mzg5ZTI1MTZmN2UwNDgwNzhlZmRjMSBsZWdhY3ktdHJ1bmsKKzU1NTcgZmJmYTNkM2NhNGUwOTU2NmQzNGY2YmViYTEwMGI4ZDRmMjBiZmI0YiBsZWdhY3ktdHJ1bmsKKzU1NTggN2RkZmI2MjlhYzNmZTkwMzg1YTQ1ZWMwYWFhMDhiNGFjMDZjYzQzZSBsZWdhY3ktdHJ1bmsKKzU1NTkgMWZmMTI2MTlhMTRjN2RjZmRkMjNlMTM3MDg1MzNmYTQ5YjVlMjhlNCBsZWdhY3ktdHJ1bmsKKzU1NjAgYjNhODAxM2NiNGZhMzY3NTUzMmU2NTUxODUzOTRjOWIwZTQxYTdhYiBsZWdhY3ktdHJ1bmsKKzU1NjEgNWExZmJkMjFmYzJhNWE1Zjg0NjFkMjFkMTFmYzViMTdkYjVjZjQ5YyBsZWdhY3ktdHJ1bmsKKzU1NjIgYzFkNzdkNzRmZTM1MDY4ZmRiYzM2ZjRjN2Y4Y2VmN2JlNDJhZDNmOSBsZWdhY3ktdHJ1bmsKKzU1NjMgODQxMDRkNmI0YWU3ZWRmMDA1NGJjNjQxNmJhOWI3OTFjMGU2ZGI4MCBsZWdhY3ktdHJ1bmsKKzU1NjQgOGFhNjkxOGE4OGM2YjE1NDFjN2QwY2Q2ZjQ5NjBjNDQ3ODhmZTI5NCBsZWdhY3ktdHJ1bmsKKzU1NjUgNGM4M2Y1NjliNDM0NTkzYjM4NTUzMjQwZjUxNzY0YmU2MjlhZjZkMiBsZWdhY3ktdHJ1bmsKKzU1NjYgZDI0OTExMWQ0Y2NjZmY2ODQxZmU4ODBiZmFmNDNiYjQzOTk1YjZkOSBsZWdhY3ktdHJ1bmsKKzU1NjcgMTcxZWVmNjlhMmNkMDg3ZjYzMTI1YjI4YjMzYjZiOTVmNTljNzdmMyBsZWdhY3ktdHJ1bmsKKzU1NjggMjM3YzNiMmE2MTg3MWIwNzU3YjU4ZTgyZGE4NGRkMzRjZGNiNWZhNCBsZWdhY3ktdHJ1bmsKKzU1NjkgNjkyNzE1YWJiZDBiYmVlZjZmMWMzYTQ3MmM3NmM5MGE1NzA5MmI5OCBsZWdhY3ktdHJ1bmsKKzU1NzAgZTUxZTE3YjJkODhiMTVkOWE5NTk4NmViMTNhZjhhNjJkNmQxNzk4YSBsZWdhY3ktdHJ1bmsKKzU1NzEgNTZkYmEwMzdiOGQ2YzY1NjQ1YzFmODliYzc4ZTIxYjFjZDBkZDE0MSBsZWdhY3ktdHJ1bmsKKzU1NzIgNDM4Zjg4YjU1MTU0YWQ0YzQyYzYwNTE2NzQ5ODI0MzE5M2Y1NDVjZCBsZWdhY3ktdHJ1bmsKKzU1NzMgYzQxYThlNTAxOTczNDNjOTc3MThmNjM2YTcwNTE2YTZhN2ZjZGEyYiBsZWdhY3ktdHJ1bmsKKzU1NzQgM2RjOWZmM2FiZjM2MTYzMmRlY2RhMTlhNjE3NjRlZDFiOGY1YjE5OCBsZWdhY3ktdHJ1bmsKKzU1NzUgYThmY2M1MTFhODlhOGYzN2E5MzMyYzc3ZDkyNzhlNWExYjExZDFjNCBsZWdhY3ktdHJ1bmsKKzU1NzYgMTQxMjNlMDhlODg3ZTQyODNhZDY0ODhhNzg0NjRhMDVkNzBmYTJkNSBsZWdhY3ktdHJ1bmsKKzU1NzcgNWMwYTdmNzgzNmZiMWRiZDQwNWJkMTFhMDc0ODRmYWQxZmY5ODUxMSBsZWdhY3ktdHJ1bmsKKzU1NzggOWY3NjE4NWM5NjkzN2NmNTVjZGE4ZmViN2U2NTVmODIyNTQzYTUzYyBsZWdhY3ktdHJ1bmsKKzU1NzkgMzZmNGQ1NDY5OTE1MzNjOTRhNDAyNmEwMzU1NzgyMjcxYmUwNmJmZSBsZWdhY3ktdHJ1bmsKKzU1ODAgYWY4MjI5MTEzNWJkMDZjMGY4MzViNTdmNDBjNDVkN2NmMTAxNWE2NyBsZWdhY3ktdHJ1bmsKKzU1ODEgM2FhYjkyNWViZmIwMzRlMDVjYjc5YzAxZjU3NDU1NWY3ZjZhZjhiNyBsZWdhY3ktdHJ1bmsKKzU1ODIgOTQ5N2NkY2RiNmFhNTFiNGYxYWZlNWJlYTg4NjgzZTYzMDFkMGEyMCBsZWdhY3ktdHJ1bmsKKzU1ODMgZGIxMzlhNDExMmYzMmY1MzhjMzUwZDlkYWNjNjVmOTQzNDA0MDY1NyBsZWdhY3ktdHJ1bmsKKzU1ODQgMDc3Mzk5Y2M4MmU4Y2ViMjg4YjAwNTU3MjU4YjdhMjMwZGY0Zjc4NyBsZWdhY3ktdHJ1bmsKKzU1ODUgZTQ3NzA5NGE4Y2ExMDg4MjBmOGY0MzkwMmI2YzM3MGRjNDdmNDZiZCBsZWdhY3ktdHJ1bmsKKzU1ODYgMTA3MWQxNmM5MzBjMWQ4NjljZTE4ZGQwZWJhYTQxMzZmNDJiNDhhMyBsZWdhY3ktdHJ1bmsKKzU1ODcgNGExMmE1NDMxNzVkMGJhOWE5MzA2MGNhYjM4MDUxMDM1ODRjMzdmNSBsZWdhY3ktdHJ1bmsKKzU1ODggYzEwZjU1YjQ2YTExNTFiMWI5YmY2MGFhNTE4MDlmZDYzNjJmMGQzMyBsZWdhY3ktdHJ1bmsKKzU1ODkgMmNhYTNlMjgzNTY4ZDA3NWE0Y2QyMDY2OTc0ZTYwNDQxMjlmM2ExMyBsZWdhY3ktdHJ1bmsKKzU1OTAgOTM1NjJkZGUyMjRhYjdkMDk0ZTVjNzY1ODQ2YWU4YmVlNTcwYTJkNyBsZWdhY3ktdHJ1bmsKKzU1OTEgMTdmMzExZWEwYzlhMDdjNTViZDIwZTBiMzBkOWYxOWI2NjJlMTdhZSBsZWdhY3ktdHJ1bmsKKzU1OTIgOTA1NjZjOWMxODlmMzJkMWI3OTQ3Yzk4M2VhNTg2YmZmYWIyNTA5YSBsZWdhY3ktdHJ1bmsKKzU1OTMgZTkwNjQzZjMzYzY0YzEyYTYyODFjZmNkZDlhNWVhMzEyODllN2Y1NSBsZWdhY3ktdHJ1bmsKKzU1OTQgODcxMGQ3MTQ5YzZmMWJiZWUxNWIyNzk0MWVlYTMyMTRlM2NjMDE3ZiBsZWdhY3ktdHJ1bmsKKzU1OTUgMjdhMDc2OWRiOTIxOTMzNDBlNjc3YWVjZjkwYmJlYWI2ZDkyMDJmOSBsZWdhY3ktdHJ1bmsKKzU1OTYgZTgzNWEyMmIwYmRkZTk0ZmViYzAxYWMwNjczNWU2MWUyMDg5YjhhOCBsZWdhY3ktdHJ1bmsKKzU1OTcgZGNmMmEzN2U3M2Q5ZDM2ZjE4MWE3NGFhN2NiYTA4YWNmNWEzZDU1OCBsZWdhY3ktdHJ1bmsKKzU1OTggNzFiYjcxZTMwNmZlMmRjYjY2ZTk2NWUwZGQ4ZTc0NTkzODAwNzUzYyBsZWdhY3ktdHJ1bmsKKzU1OTkgNzBlZTRlM2NiM2Q4MzgyNjRjZTE0YTcwMGE5ZDA4MjE2M2RhMDViNiBsZWdhY3ktdHJ1bmsKKzU2MDAgNTkxMjg3YTIyZWU1OTZkZWMxYjFkNmJlMGJiZjhlNzZlZjYzYTQwZSBsZWdhY3ktdHJ1bmsKKzU2MDEgMjY3N2ZiYjExN2Q2MmI0NTFhZmNjNDk3NjY2ZjI4ZGUxMDU0MDRiNSBsZWdhY3ktdHJ1bmsKKzU2MDIgOTk5ZmNjZTQ5NmY4NDk1NDg5ODJjNGE1NDVjMDVmNmRiNjRiZWRkOSBsZWdhY3ktdHJ1bmsKKzU2MDMgMWI0YjhhNGZiNDYzMzQwMTcxMDg3NzNjY2I1MGQyNzg0Yzk0OTE5MiBsZWdhY3ktdHJ1bmsKKzU2MDQgYWRjYzkxNmI3NjE2ZDgwNzQ2YzFjMTJmMGU5YWMyYmFiMzUxZmViYSBsZWdhY3ktdHJ1bmsKKzU2MDUgZjFmMThjNTVkMTM2NDI0NTQyNjk2MmI5MGY3OWVhOTAxOGMyYzNlNCBsZWdhY3ktdHJ1bmsKKzU2MDYgZGYwN2YyODcxMWZkZjMyODk5ZmJhZmQ3MzUyOGFhOTZlM2E1NDI0ZSBsZWdhY3ktdHJ1bmsKKzU2MDcgY2QzODhjYzliYTk4ZGNiODlmYTgwMmUzYTFlOTlkNGMwNzY5YWJmNiBsZWdhY3ktdHJ1bmsKKzU2MDggM2Y4YTczMzgwYzRiY2NkMTg5MDg0YWU0MDNjMWIwN2FhOTY2YmYwYSBsZWdhY3ktdHJ1bmsKKzU2MDkgMzkzYjZkODFiMTI2YjI3NGQ2N2RkOWQ2MWVmYjUwOTlhMDk5MzBiMSBsZWdhY3ktdHJ1bmsKKzU2MTAgN2M1Zjk0ZjU2Zjc5MzU4NjllY2RiZmY2NTRlYWUyZmVkOTUxMjgzMyBsZWdhY3ktdHJ1bmsKKzU2MTEgZmJmNThkMjc4ZDY0NWQwYTUyN2JlOThlNjU2ZTRjNGE0ZDhkMmVlMSBsZWdhY3ktdHJ1bmsKKzU2MTIgNDNmOGRiMjNlZjE1ZTIwY2I1NjU5ZGEwZjAyMzYzYjVmM2YzY2E2ZiBsZWdhY3ktdHJ1bmsKKzU2MTMgYTk1ZmY4Njc1NzE4MTBlNmUyNTRhY2Y2NmRmYmRkMmZiNGFiMWQyMCBsZWdhY3ktdHJ1bmsKKzU2MTQgNzBhOTMyN2Y2YzRjNmIyYjM1OThiNWFkNWZjMTI2N2ZjMmRmNWJhMyBsZWdhY3ktdHJ1bmsKKzU2MTUgNDhkYjVkOWEyNzk0MWMyZTE4Nzk0MTBjN2FmYzU5MGVkZTI5MzdmMyBsZWdhY3ktdHJ1bmsKKzU2MTYgYmFkOTdiNDA1MTY2NmEyZGYyZjYxYWRlMzFlYTIwNTM2MDFmNjE1YSBsZWdhY3ktdHJ1bmsKKzU2MTcgNDkwYmU4NjVhYTBkNTc5ZWVkNDRhNmFlODY5YTNlNTgxZTgxOWU5ZCBsZWdhY3ktdHJ1bmsKKzU2MTggYWNmZjc5ZGQxNGI3NTA3ZjZkY2JhNDMwNzU5M2I1NzU2NzJhZWUyNiBsZWdhY3ktdHJ1bmsKKzU2MTkgYTM2ZTMwMjQwZDA2ZjRkZjI2N2E5YTM1MjRmMGIzMjZjYzVmYzcyYyBsZWdhY3ktdHJ1bmsKKzU2MjAgOWE4OTYwODZkM2MzNzA0MTQwZGNjNWIwMDcwMWIyZjkwMzM3YzJhNCBsZWdhY3ktdHJ1bmsKKzU2MjEgY2Q3ZWFhNjJjYzMxYjdmNjYzNjQzY2MzM2VhNTM3YTA1MGZkOGU1ZiBsZWdhY3ktdHJ1bmsKKzU2MjIgZDZkZDUwZmUxZWNhYjc1NDcyYzM0ZDE1MDRlZWUyYjYzZWNkYzU2OCBsZWdhY3ktdHJ1bmsKKzU2MjMgOTMxNTNkNWMzMzNkMDdkMTFiNTE0NTI5OTI2YWM1ZTY5ZGE0N2IwYyBsZWdhY3ktdHJ1bmsKKzU2MjQgNDY5MzY5YWQyZjJmYmE0YzhlMDZjYjM5ZGMzYjJhYTIyMjRhMzZmNiBsZWdhY3ktdHJ1bmsKKzU2MjUgNTk2MWI3NmQ3ODk5NmUzNWY1ZDRjYjFmZjM3OTM3N2Y0YTZmMzBhMSBsZWdhY3ktdHJ1bmsKKzU2MjYgNGNiMTI2MDRkYTlkOWVhOGE0ZTZjOWEwNTlmMDk2ZTUwOTk4MDdkMSBsZWdhY3ktdHJ1bmsKKzU2MjcgZmQ0ZjAwOGQ3NzQzYjUxZWY5N2Q1MDZjN2ZhMDc2NjdiZWY0OTlmNCBsZWdhY3ktdHJ1bmsKKzU2MjggMjIwNWRjNDk4YWRmYmViMGVmNWE5YThjNDMwNmIyOGMxN2E3MTY3ZSBsZWdhY3ktdHJ1bmsKKzU2MjkgNDBjNjhlYmQ1ODkxZDliNGY3MmJlMzE0NjhjYjRhYTNkYzQ2NGZjOSBsZWdhY3ktdHJ1bmsKKzU2MzAgMzE3MmMzOWNkYWQ4MDg3ZDVhNzExOGE3OWJjOWJiZjA4YzhhNjQyNiBsZWdhY3ktdHJ1bmsKKzU2MzEgOTVlODBiNmI4ZjJlNDRjZmJhMWRkYzcyNjdhNjMyOWIyNDY5NDZlMSBsZWdhY3ktdHJ1bmsKKzU2MzIgOTJlMTQ1Zjg0MTRlOTYxNjUxMjljMzU1ODFlMzJjYTczYjM5ZGVmOCBsZWdhY3ktdHJ1bmsKKzU2MzMgOTM4YzQzM2M4NzZhM2Q2OTViMWQwN2Q3ODNkNjgxMWJmN2U4NDBkYSBsZWdhY3ktdHJ1bmsKKzU2MzQgZmU5Zjk1YjA0MmZjOGNmMDYxOTUzMTBkYzQ0ZWJhNzEyZmJhYjliNyBsZWdhY3ktdHJ1bmsKKzU2MzUgOTQ4OWEzNzJjNjg2MmExOTIwNTQyZTIyOTEyNTQ0MDI3NjA3NTQwZCBsZWdhY3ktdHJ1bmsKKzU2MzYgZmZmOGE3NTBlN2Y2M2RjMGEwMWJiMzkzZjI1YjA0ZDBhYTMwOTYwYyBsZWdhY3ktdHJ1bmsKKzU2MzcgYjliOWU2NjI4YjM1MzUzMDFjNWM0ODIwZmI5Y2FkNjQ1M2FmYWFhNCBsZWdhY3ktdHJ1bmsKKzU2MzggMTMxNDZjYjZmNjdjNjFkZTI1MmNiNmEyMjM4NjVkNmQ3NGNjNmYxYiBsZWdhY3ktdHJ1bmsKKzU2MzkgNmJjY2ZjMGVkNjk1OTQzOTQ4NTBkMWZkMDg4MTUyNDA1OTE1OGRiMSBsZWdhY3ktdHJ1bmsKKzU2NDAgNmQzNGFkZTJlOWQ0NTI3MWIwZmM2NWZiNjBmM2Y0ZTEyYWYwZjM3OCBsZWdhY3ktdHJ1bmsKKzU2NDEgZjc3ODk5NDViOGRlZTZjZDc3ZTQxZTE4YzcwNTUyN2U5YzllMWZlNCBsZWdhY3ktdHJ1bmsKKzU2NDIgNDliNzg3YjliZmFlMjZjZGE1NmU2NDNhZGQ0ZGQyY2ZhZWZlNGI5YyBsZWdhY3ktdHJ1bmsKKzU2NDMgMDZlMzQwZjg1OTYxZDFkZjIwNWU1ZjQ1ZDg4Y2NiNzRhNzAzNWRjNyBsZWdhY3ktdHJ1bmsKKzU2NDQgY2Y2YzBjNWRjNzNmNzg2M2YwNzdjMGRjMDQ4MzM5MzUxYTQwZmIxOCBsZWdhY3ktdHJ1bmsKKzU2NDUgM2UxZTVmNjhmZDFjY2EyMWExNWNlMTBjYjUwMWJjZDRhMTY2YzEwYyBsZWdhY3ktdHJ1bmsKKzU2NDYgMmE0ZDEzMDM3M2RiMjE5ODg2ZWRjOTgzNzZjMjI1NDNkYTc1M2U0MSBsZWdhY3ktdHJ1bmsKKzU2NDcgYTQyMDEyYzE4OGZkMzg3OWI2NmJiOTRjNDkyNGQ5ZjNhOWFjN2JmNSBsZWdhY3ktdHJ1bmsKKzU2NDggMjRiNTNjYjMxNjgwOTQ1MTBkY2ZjYzMwNzViNGYxYTUyMzE4MTZiZiBsZWdhY3ktdHJ1bmsKKzU2NDkgOGYzZjI1YTgzN2IzODE3ZGJhOWQzYTI3YmExYTkzMWY3ZTQ1NWYyNiBsZWdhY3ktdHJ1bmsKKzU2NTAgNjFjYTE5YTMwMDBmZWMxMjg4YWZiNTk2ZmIzZjJjYjQ5ZGI2MzJhNyBsZWdhY3ktdHJ1bmsKKzU2NTEgN2IyZjY5NTQwNWJhZmJmYmZkOGFjZTllMDM3NWY1ZTQwZDQzNmI2MCBsZWdhY3ktdHJ1bmsKKzU2NTIgYzA1NmY2ODVjMDgxM2M4ZTQ1M2E1Yzk3NDU0NDc3Y2M0Njk0ODhkZCBsZWdhY3ktdHJ1bmsKKzU2NTMgODMwMWQ1NWViNjRiZTI2OGRjNTdlOTE0ODBjNWI4Y2RiMzE1YWRkNCBsZWdhY3ktdHJ1bmsKKzU2NTQgY2MzOWQ2MmIyN2ZkMTE1OTAyYzU2NDBiNjJkMTFlMzQ2ZTY3OWRkMiBsZWdhY3ktdHJ1bmsKKzU2NTUgZjQ3MmI3ZWMyNWM1ODNjNjJiODg5MWRlMjZlOTIzYmQ4NTZiZTdkYyBsZWdhY3ktdHJ1bmsKKzU2NTYgMDJjOGY3NGQwOGRjZDg0ZDM2MjBmM2JlMjAxNTBiZjViYTUyM2E5ZiBsZWdhY3ktdHJ1bmsKKzU2NTcgMjhkZmM0NjcxODVmYzQyNTgzOGY4ZGI1OTc1Yjk1OWU3ZGRjMGNkMCBsZWdhY3ktdHJ1bmsKKzU2NTggZjlmZDUxMjI2ODBmMzMzZDNjOTczOWVhOGVmZWQzMzA5MTc0ZjdjMyBsZWdhY3ktdHJ1bmsKKzU2NTkgMmFhNzk4MzdhZWU1NmVlYTc2OGYxNWNiNTU5NzQyNTRhODAzOWYwYSBsZWdhY3ktdHJ1bmsKKzU2NjAgODIyNGYwYmM1Y2RhNDk0MmVhY2FiYTA0MTA5MmQ3ZTgwNzg1YmRhOSBsZWdhY3ktdHJ1bmsKKzU2NjEgMDVhZWI5MWUzYjkwZDBkMzYxZjM4NWEzODM0ODRmMzI0Y2RlZTBmMyBsZWdhY3ktdHJ1bmsKKzU2NjIgNjExOTNjNjMyZjUxZTE5MTFhODcyZWI1NDEzMmRlYTdhZWM5MjUzNyBsZWdhY3ktdHJ1bmsKKzU2NjMgMTk1YWQ5ZmI0NTgzMmM3OWEzMmMwOWQzNTc4OTU0MGQ1NjdiM2NhMiBsZWdhY3ktdHJ1bmsKKzU2NjQgNWQxNmVjYWU4ZWU3MTExODFkYTY4YTE2MzBjODRkY2ViMGM1YmFhMCBsZWdhY3ktdHJ1bmsKKzU2NjUgMjFjZDUwYTRhM2Y3NjdhOTNmMDhkOWE0Yjc4OWE5M2FiNTlhNTI4NyBsZWdhY3ktdHJ1bmsKKzU2NjYgODg0MWE0ZDVjZDRiZWI4ZmNhM2Q4NmE3NTI0NmZjZGUxNWY1YmZmNCBsZWdhY3ktdHJ1bmsKKzU2NjcgOGY1YWIxYTZjOTE0MmViYTQ5ZDA4MzYzYzlmOGU0Y2EyYzcwYmYyNSBsZWdhY3ktdHJ1bmsKKzU2NjggMTliNThjZTc5NGM5MDI2Nzc2ODdiN2U2OTA1MGYyYmZjMWM3MDdkOSBsZWdhY3ktdHJ1bmsKKzU2NjkgNjQ5MWJkMmJiZGVmZjY4NTllMjU0ODFmZDEzNzQzOTQ2YmQ2ZDAwZCBsZWdhY3ktdHJ1bmsKKzU2NzAgNDZkZjY3MmM3YzI3MGRhMzYwYjU3ZjAwNzIwZTRjYjU1ZDBiMWYyZSBsZWdhY3ktdHJ1bmsKKzU2NzEgZDVlNzZhOTViNTY2NWM5MDkxYjU1Y2FiZTBkZjJhNTVkYTU2Yjc1NSBsZWdhY3ktdHJ1bmsKKzU2NzIgM2QxMjJmMDJlNjQ5ODcyNjk2YmY4NDkxMjg5M2VkOTA2MTEwY2NkNSBsZWdhY3ktdHJ1bmsKKzU2NzMgZGYyZjI1MmRjZDI5ZGRlN2ZmMjRhZWNhYmQzMzdiMWUwNTMxOGY2YyBsZWdhY3ktdHJ1bmsKKzU2NzQgMGVkNWNkOGRmNTFmOTgxNjE5MTRkYTA5ZmU5YWJjMDUzYWYyYTJiMiBsZWdhY3ktdHJ1bmsKKzU2NzUgYTIyN2RjZTQ4NDUxN2RhNjE1MGEwYTk0YTc3MDQ3MDNhNjlmOWFjNCBsZWdhY3ktdHJ1bmsKKzU2NzYgMmI1Yzg3MzgxMzBjZjk1MjJmMWZiZjRhZGJhODI1MGFmZjA5YzZmZSBsZWdhY3ktdHJ1bmsKKzU2NzcgY2RlYmVlNGEzZTNlODcxYTdlNmY1ZmU2YzExOTRlZDhkZGNjYTAzNSBsZWdhY3ktdHJ1bmsKKzU2NzggOThlMmNhZDQ4NTdmMWQyYmQ1Mzk5ZGEzN2I4ZDJmOGFkMjA5ZTk3NCBsZWdhY3ktdHJ1bmsKKzU2NzkgYzdjZGQyMmE0ODUzYWQ4YmEwMDlhMWZkZjc1ZmM1MmYyMTc3OWQyYSBsZWdhY3ktdHJ1bmsKKzU2ODAgMjFkNGEwN2IxODc1YjFhZGJjNzBiYTZkMGNkZjU1NTdhNGMwZDU2MSBsZWdhY3ktdHJ1bmsKKzU2ODEgZmZlMDMyODM2OTM3MzczNTA2OWI0NDZmYmM4OGNjMzg3MmNmODMwOCBsZWdhY3ktdHJ1bmsKKzU2ODIgM2IyYmU4MTFhNjZhYWE2YmZkZjg1ZGMzN2ZjNjJlODBiNmYwODllOSBsZWdhY3ktdHJ1bmsKKzU2ODMgZDAwYTc5ZWJiMDI3MzQ4Y2RkZjVlMjU0OWI0ZWRjNmM3M2M3ZDMxNyBsZWdhY3ktdHJ1bmsKKzU2ODQgODAxMjY1Yjg2MTY0MDI0NDRhZDc3OWZiZWI1NjYzYzkxZGMyZTE3ZSBsZWdhY3ktdHJ1bmsKKzU2ODQgN2Q3NDNjODY1YTlhYTZiZGU4YjYwM2UzMmUwNTQyMDMxYmJhM2MzMyBsZWdhY3ktdHJ1bmsKKzU2ODYgZTQ1ZjNkMjYyYWU0YTkyM2VkOGM0MGYwZGY5OWRmOTZjZTBmNDNmOCBsZWdhY3ktdHJ1bmsKKzU2ODcgZjFjYzI0N2ZmZjEzN2Q5NGRiODEyZTllY2NjNmJiYzhhZTY4Njk0ZCBsZWdhY3ktdHJ1bmsKKzU2ODggNzhlMTk1M2ZjOWIyZjMzNDUzNjAyYmIyZGU4N2IwNWNjYzQ2NTc2YyBsZWdhY3ktdHJ1bmsKKzU2ODkgMGYzOGNlYzU2NTM5MWU1MzBlYTRmODkyMDNkOGU5ZTA3OTZmOWY4ZCBsZWdhY3ktdHJ1bmsKKzU2OTAgZTc0MTdhNTY4NTg2YWIzOTJkMWE2NDk3MzNmYTM2ZjVlYzEwNDkwMyBsZWdhY3ktdHJ1bmsKKzU2OTEgMmZiMzk4YWIzZTZhYjAyODNkOWUwZDczZmIzYWQ1ZjcwOTEzMjk2YiBsZWdhY3ktdHJ1bmsKKzU2OTIgZTU1NGE2MWE4NDY5NGZiMTc3MDg4MTBkN2NkNTg2OWRlYTE1NTQ0MCBsZWdhY3ktdHJ1bmsKKzU2OTMgOGMwYTUxODBmYTM2ZWFmMjRlY2VjNTQzZTA5MWQ5N2NiMGQ2YmUyYyBsZWdhY3ktdHJ1bmsKKzU2OTQgZWZiOTcxNDI5OTJlNDg5Nzg5NjhmYmFiZTBjMWNhNzE4ZmVjOWFkNCBsZWdhY3ktdHJ1bmsKKzU2OTUgZjRhNTlmZmUxYTVmNWMxYzgyMzUyOGNjYmI4YzAxZDZlMzI4ZWMxMiBsZWdhY3ktdHJ1bmsKKzU2OTYgZTMzN2JmM2NiNDNhZWEzODZlNjI1OTcyNGM1ZmE4NDM2M2Y0MjEzMSBsZWdhY3ktdHJ1bmsKKzU2OTcgMTE4YzA2M2RmNDUzYzJjMmYzZDY3NjAxNzM1MzgwNjA1ZGYzNzdjYyBsZWdhY3ktdHJ1bmsKKzU2OTggMWFjYzA0NDc4ZGMzMTBlOGM0MDUxZjMyMzdlNmU2ZmE5NDYzMTQxNCBsZWdhY3ktdHJ1bmsKKzU2OTkgZWE3ZWM0YTRjOGQyZjUzMGE2NzEwZjg3ZjI3YTM0NzMwNjBlYzgwMiBsZWdhY3ktdHJ1bmsKKzU3MDAgZmQ1NzNhYzc1OTQ3NDAzNTVmMDVjNDFjOTEyOWI3OGI2Njk0YzFlMSBsZWdhY3ktdHJ1bmsKKzU3MDEgYWFmZTdkNjM0OTg1MjdlZGY3ZDk2MTRiNzFmYWI4NDk0ZTkxNzkwNiBsZWdhY3ktdHJ1bmsKKzU3MDIgM2RmOWFiMDNiYWRmZmIyZWMyY2Y0Zjg2OWVmMmFiN2EzZDI3MjA5YSBsZWdhY3ktdHJ1bmsKKzU3MDMgNDYzYjI2ZmE0ZDdiNzU2Nzg1MGMxYjQ1MDZhY2E4NmE0ZDcxMzNlYSBsZWdhY3ktdHJ1bmsKKzU3MDQgNjJiYmZkZTQxYjE0NDNiYTY3NjlmYjg1NjEwZTFkNjE0MGJhNTIwMCBsZWdhY3ktdHJ1bmsKKzU3MDUgZDM1MTBmMTExOGI2Yjc3MmE5NGUxZmIwNDAzYTE5NDk3YzgzMDllNCBsZWdhY3ktdHJ1bmsKKzU3MDYgMjg1ZGJhNGUwZTUxNmM1MDc3YzBjMTRlYjlmY2RlMzIxNTU0MGQ2NSBsZWdhY3ktdHJ1bmsKKzU3MDcgZjdmZDg1YjMyYTdkODVlNDk2Y2U3ODlhYzQ0NTcyZTI5N2Y2YmI2MCBsZWdhY3ktdHJ1bmsKKzU3MDggZTkyNzg5YTk2MGEwMjcyYjJkMTQwYzI1NmZmMmM5MmZkZTRmMzllMSBsZWdhY3ktdHJ1bmsKKzU3MDkgMzEzNjM3Yzc3ZGFhMDNhMjk1Y2IzMTc3M2U0MGVmNjgwZWU3OGJjYSBsZWdhY3ktdHJ1bmsKKzU3MTAgNDA1ZGE1NTY2NjFkNjZhYTQ3OWVhZTY4ZWUyMzU2ZmFkYjViZDFmZSBsZWdhY3ktdHJ1bmsKKzU3MTEgMjg0MmZmYTUyMTI2MGRkNzU1NDM1MDZmYjZlNjliY2MwNGVlNWI3MSBsZWdhY3ktdHJ1bmsKKzU3MTIgMThiNjBkOGQ5ZTM1YTI2NGI0NmVhOGVhNzM0NTJjYjcxNWRhMTVkNSBsZWdhY3ktdHJ1bmsKKzU3MTMgN2IxYTZiYmEyNTgwNWIzOWEzYWRiNGE4MDU3ODRhMDkwMWY1NTAyNyBsZWdhY3ktdHJ1bmsKKzU3MTQgMjBkNzRmYTNiNTBiMWJmMDcyYWQxOGJmN2EyZWIxNzBiMDhmOWRhMSBsZWdhY3ktdHJ1bmsKKzU3MTUgNWUxMDFlYWQxZTY5OTA5NTI0ZmI1MGQ3NDVhOTQzOTc3Y2UzYmExNSBsZWdhY3ktdHJ1bmsKKzU3MTYgMWNmNmUxMDUyMmUwOTE1NjAxZTA2MDQ4ZGE4NWI4MjgwNTFhMmRjZCBsZWdhY3ktdHJ1bmsKKzU3MTcgZWQwZDE0OGZjMDVjODc5Nzg2YWM0ZDZiN2RkYzI5NzQxNjUwZDRjOSBsZWdhY3ktdHJ1bmsKKzU3MTggMWEzOWQ0MDdiNGQzOTAyOWQzMTBlZjc5ODI0MDM1OTM0MzQ3OWI2MSBsZWdhY3ktdHJ1bmsKKzU3MTkgNDY3ZTBmMmQ2NzhhMTFmNDMxYjNlNmM3M2ZmZTc5MThjNGNhNGRjNCBsZWdhY3ktdHJ1bmsKKzU3MjAgZjg5Y2RkYTc0MDVhYzRjNzFkZjIyYWQ2ZTczMTU0MGM4YTM0NzNlOCBsZWdhY3ktdHJ1bmsKKzU3MjEgY2M1NDc0MjIxYzhjYjFhNjAyMWMyYmRiMTNkOWIxN2YxNDRkNTNlMCBsZWdhY3ktdHJ1bmsKKzU3MjIgMzMzMTBjYjZhNWQ3NjgzNDIwOThhMWY1NjE0Mzg5OGRjZDUwZjM4MCBsZWdhY3ktdHJ1bmsKKzU3MjMgYTZiMDcwNDEwNmM4Y2ZkNjUxOGQyZGU5MTdkYmNhZDQ0Mzk2MzMzZSBsZWdhY3ktdHJ1bmsKKzU3MjQgYmFkN2Y1NmM4M2IyYjYyYTE4ZWVkMTE2Yjg1Zjg2NjJjOGY5NmQ4ZSBsZWdhY3ktdHJ1bmsKKzU3MjUgNmU0OGZhYjY5OTBmMzE0ZmI3NjE0NTViM2ZmMjUyNjFjMDZkNjg4NSBsZWdhY3ktdHJ1bmsKKzU3MjYgZGIxMWEyYmZlYTY2ZGE0M2IwNjM2YTIwZTYxZjg2YmFmYmVhNzQ0YiBsZWdhY3ktdHJ1bmsKKzU3MjcgYjFjYTY1OTcxZTM2ZmFhNjY4NWVkNjEzYWQyMTNmYTE1YWFjODhiZiBsZWdhY3ktdHJ1bmsKKzU3MjggNGY0MDgzYTI2YmYyMjMzOTAxNTU3MTdmZDkzODEwNDc0NjA5NmE1YyBsZWdhY3ktdHJ1bmsKKzU3MjkgYmZiNjNiNDVmZjBmNjc3YWMxN2EwNjM5NmRkYWFiNzg0YzYwNmRiMSBsZWdhY3ktdHJ1bmsKKzU3MzAgOGM1OGFiN2FhNzFlZjEwMWYzMzNmNWQzODI5ODhmMzI3NDUyOTdmMCBsZWdhY3ktdHJ1bmsKKzU3MzEgMmMxZTNlODc1MTA5OTZmYjAzYmY2M2U3NjJlMWVlMGRhYzVhZTQzMyBsZWdhY3ktdHJ1bmsKKzU3MzIgMmY4MzdkODI0MTIwZDg5MmNkZjg4YjgxMmU4ODkzYzE5MzY3MzFmYiBsZWdhY3ktdHJ1bmsKKzU3MzMgMTU5Nzc0YWYyZWRlNjZjMGMwOTIyOGIzNTc2NmE5YWUxYmIwYTZmNCBsZWdhY3ktdHJ1bmsKKzU3MzQgOGU3MzNmOTJlZGMwOTM0ZjgzN2VmNGNlZDNlZjkzMjg1MTBjOTc3MCBsZWdhY3ktdHJ1bmsKKzU3MzUgN2VhYzAyYTYxNzZlZGYyODFjNWY0NTA3NWMwNjdlNjI3M2FmZmZhNyBsZWdhY3ktdHJ1bmsKKzU3MzYgMTE3NjE4ZGQwZTdmNTMzMDQwZjg4OTNmYWQzMmVjNWUxODJkNzY2MCBsZWdhY3ktdHJ1bmsKKzU3MzcgYjE2ZmNkMTI2YjFjMjRlNmU5OTcwODgxNjIxMGRiY2I2MTA1OGJmYSBsZWdhY3ktdHJ1bmsKKzU3MzggMDMxN2FjNTIyNjA1ODE3YzZmZTE3NTM2YWMyNTM5ZGU3MTE4NWJiNSBsZWdhY3ktdHJ1bmsKKzU3MzkgNjEyMjczMGI3OTg4NTE2ZjQ2YWU1Mzg4N2Q5ZDJiMGM1MzBkM2M3YyBsZWdhY3ktdHJ1bmsKKzU3NDAgZjk0NzgzYjliZmJhYjdlMTYwOTZhODAxMjc0MjcxYjkxYzhhODMzNiBsZWdhY3ktdHJ1bmsKKzU3NDEgOTc1Y2NmYTcyMWY2YmVhZjQ1Mzk3NTE4ZGY0OTI5NWMxMDlkNzY5NyBsZWdhY3ktdHJ1bmsKKzU3NDIgM2E4M2MwMTdkZjFlY2E5NTVlYTMxYjQ5MjA1MDIxYzM4NjNlZTU2YyBsZWdhY3ktdHJ1bmsKKzU3NDMgZjFmYjMyNmM3ZTJmZTFhMDhlYzkzNDUwNmRiNDdjYmZiNjJhZDg3ZSBsZWdhY3ktdHJ1bmsKKzU3NDQgMzZhMTg0ODk1ZWI5ODBhNmQ4ZWMzYzFhYjhlYTE2OTY3YTJlYzIxYiBsZWdhY3ktdHJ1bmsKKzU3NDUgNDNjNWU3YTNmYzFmYjYyYWUzNjdlOTZmNWMzYWM1MTc1YjkxMTM5YyBsZWdhY3ktdHJ1bmsKKzU3NDYgYTgwNjU3NjJhMzhlYTAxYzU1NmZmNGIzYTkyMTI2NzExOTEzYzgwYyBsZWdhY3ktdHJ1bmsKKzU3NDcgZjhhMDcxNzAyNGZlNGJmN2MzN2I5ODliYzdjNTYxOGZiNzE4ODNmOCBsZWdhY3ktdHJ1bmsKKzU3NDggODcxYzc2OGQwZGEyMjA3NzIzMmRiZWUxMjU3ZmM4MjExZDQ3N2EyOCBsZWdhY3ktdHJ1bmsKKzU3NDkgNmExOGM0Y2I2OGQ4NDRjNmVhN2I2ZmNjOWNmM2U2OGM2YTBjYzRlMSBsZWdhY3ktdHJ1bmsKKzU3NTAgOWZhMmUyMThlMmE4NGM2OGFiZjZjYmEzZTk1MmYwNjg3ODExMDI2ZSBsZWdhY3ktdHJ1bmsKKzU3NTEgM2EwZjg0YzY5MDUwYTNhYjJmOGQzNzUyZWEwMDY3MTc5ZDcyYzhkZSBsZWdhY3ktdHJ1bmsKKzU3NTIgMjEyZWFlNWI5NjYwYjU4ZTMxY2ZkYjM1NTFkZjE2ZDJmMWI2YThkOCBsZWdhY3ktdHJ1bmsKKzU3NTMgNmQ0ZjcxNDMwNzIyYjVlZGFkNzZiZDE2MTkxMmI2ZTU2YjRhOTVmMCBsZWdhY3ktdHJ1bmsKKzU3NTQgZTM4YzA5ZDAwODA2OGNmZjhmZmMwYTFhMzE3NDQyMmVjOWI2ZjE2NiBsZWdhY3ktdHJ1bmsKKzU3NTUgMjg4ZTMzN2Y3M2U3ZTQzNjhjNzA4ZWM1NzNlYzFlNjZhN2VkMGFjNSBsZWdhY3ktdHJ1bmsKKzU3NTYgNjZmNGJmOTQ2MjdmZWUwODg5NTA4NzU4ZDRjMjVjMzNhYTk3MjhlYiBsZWdhY3ktdHJ1bmsKKzU3NTcgM2Y0NTU3NzdmZjI4NDFhZDVmM2EyMjFmNmZkNDNjYjNiNzlkM2UyNiBsZWdhY3ktdHJ1bmsKKzU3NTggNDVlNDQ0NTQ3ZTVhMzVlOGZmMDAzM2ExMWYyMzU1ZWViYmJmYWJkMiBsZWdhY3ktdHJ1bmsKKzU3NTkgNzIzNTc5NzhmZmQyMmExODU2Mzk1NjNkYWViMDdhNTk4ZTkwN2Q2MiBsZWdhY3ktdHJ1bmsKKzU3NjAgYmFmYzEwNWJjN2NkOTlhNTJhZDlhNTJjZGQxOGRmY2E2MmQzNTNkYyBsZWdhY3ktdHJ1bmsKKzU3NjEgMmJkZGZiM2NmY2YxYWE4ZDgxMWZkZjQxYzU2MzU4MjczMDVlYTljNyBsZWdhY3ktdHJ1bmsKKzU3NjIgM2NhMTExZTBiMWE3Njg3N2U0ZGU2ODc3NzhiZmVkMjUyNjdlMGJmZSBsZWdhY3ktdHJ1bmsKKzU3NjMgMGQ2YjYwYjc0ODM4NGNhZjIxM2M4NWRiOGJkMTMwNTgxMGUzZjM1NyBsZWdhY3ktdHJ1bmsKKzU3NjQgNThlZjRjNDk1ZGU3NjJjOTQ2Yjg0MjE0MWM3MjQzNjM2YzAxMTMyYSBsZWdhY3ktdHJ1bmsKKzU3NjUgOWE0MDgxNDQwNzgzMDE4ZmVmMmY1NmY2ZjZjMjQ1YTAyZmJiNjdiYyBsZWdhY3ktdHJ1bmsKKzU3NjYgNDc3NjNhYzQ0YzQ4NmI3MjViNGRjMzFkZmRjNDRkOTFkMDYyMTgzYSBsZWdhY3ktdHJ1bmsKKzU3NjcgOTdjZDU3NzFjMjNlMjU3ZDJlNTczOWE5YTQ1MjA1MjZmZWJjNmI2NiBsZWdhY3ktdHJ1bmsKKzU3NjggN2Y1YjQzMmI4N2M0OGM2MzVmMjk0ZDE2MGVhNzBkOTAyNTBmNTg5YyBsZWdhY3ktdHJ1bmsKKzU3NjkgNTRmMDY3ODc1N2IwMGY2ZTMyYzc4NzkwYWE2MmU3OWM2YzMyMDBkNyBsZWdhY3ktdHJ1bmsKKzU3NzAgZDRkNWM5ZmE3ODU5MmExNmIzNTYxMGY2MDk5OTY5M2FiYzJkYjJlMCBsZWdhY3ktdHJ1bmsKKzU3NzEgOGE1MDk3ZTlkN2VlMmYzNmM2NzdlYTBkMzA3OTVlOTNmNTFmMTk0MCBsZWdhY3ktdHJ1bmsKKzU3NzIgODNkYWE1NGMxODFkZDBiY2MwMTgyMTdmNjU2ODVkN2E1MzI4NDVkMyBsZWdhY3ktdHJ1bmsKKzU3NzMgMTQwZDgyMzlhNDQ2ZThmMzFjNGRjMGFiOTc2ZmZiNjYxZDU4N2MwNCBsZWdhY3ktdHJ1bmsKKzU3NzQgMTNiMjRkMTAzNGJkM2JjYzcwY2Y1MDdmZWRmM2Q5MzkzYTRhNTlhNSBsZWdhY3ktdHJ1bmsKKzU3NzUgZTUyNDY1NzFmMGZkY2FjN2Q4NDE2ZWE3YzgwM2I3MzMwYjg5NGIxOCBsZWdhY3ktdHJ1bmsKKzU3NzYgYjgyOGJjY2RhMTg5ODM1Y2Y3OGQwYjgyYzQxMmEzNWRkYzA5MTJhYSBsZWdhY3ktdHJ1bmsKKzU3NzcgNjA0YjFmYzI2ZDYzM2E4OGUwMjdkMGFlYjkyNTgwMDZkODM5N2ZiNyBsZWdhY3ktdHJ1bmsKKzU3NzggZGYwZDAwOTE2MmI2NzUxODcxYmYwNThiMzFmYjY1YmExYmM3MzFmMiBsZWdhY3ktdHJ1bmsKKzU3NzkgYzA2NjRiZTdmNjYyNGI2Y2EwZjg1ZTY1OGU0OTRmODA4NjUwNzUzZiBsZWdhY3ktdHJ1bmsKKzU3ODAgNjhmZGM0MGFkZDJjYjNmNTVkMWFmYjI1OWIwOWUxNDAzNGY3MTU2NSBsZWdhY3ktdHJ1bmsKKzU3ODEgNThhNjczMjJjODk2MGNkMzM5NWE1NWQyMTk0OWQyM2NjODA1ZjFjNyBsZWdhY3ktdHJ1bmsKKzU3ODIgNDRmNDhhYWNhOGJmZjQ1OWJjMjJmMzRiODQ4MzY1ODhjYjU3M2UwMSBsZWdhY3ktdHJ1bmsKKzU3ODMgZTVkMWYyNDJkYWY5YzE2MDUxZGY0Mzc1MGI4N2MyNGFiM2E2ZDY4ZiBsZWdhY3ktdHJ1bmsKKzU3ODQgZTRmNTdkZDNkMjQ2NTM5NTgzNGI0ZmI5Y2E0NzdkYjJkODI3ZWExZSBsZWdhY3ktdHJ1bmsKKzU3ODUgOGI4ZDYwZmJlM2JmOTViZTMyNDgzYWNmNDAzN2UxZjZlOGM1NjEzZCBsZWdhY3ktdHJ1bmsKKzU3ODYgMzJiNGU4YWRlYmViODRmNzZjZmY0NDE0ODFjOTkyZDRjOWNlNDMyMiBsZWdhY3ktdHJ1bmsKKzU3ODcgNGU2ZDBiMjZlZmFmMzJlYjc3N2I4NWE4MDc0MWEyZjIwZTM2ZDI3YSBsZWdhY3ktdHJ1bmsKKzU3ODggOGRkZGE2NmRiZjJjODkyNmY5ZTQxODkzZWE3MDY3ZTA0YTMzYjYyNiBsZWdhY3ktdHJ1bmsKKzU3ODkgNTk2MzQ3ZGI2YTY4Zjc5NzY2YjM2MDQ4ODc2NjBiNTBjNWU0ZjYzMSBsZWdhY3ktdHJ1bmsKKzU3OTAgNjA5OGFhYThhZTdmYmNkOTI2MjhhNTk4Yjk4NDU2NDZkMzgxNjliMSBsZWdhY3ktdHJ1bmsKKzU3OTEgMzY5MjBiYmQ4MWE4MzQ0MTk0M2Y5ZTA5ZmFjZjJmNGZlMzQwYjU3MCBsZWdhY3ktdHJ1bmsKKzU3OTIgODk1MTQ0MjZiOWI4ZTRhMjA4NTM5N2I5MjAyYTE2MjQ0ZDE5ZDQ0MSBsZWdhY3ktdHJ1bmsKKzU3OTMgMWVhYjg0OTU0NjJmYjQwMmI5MTQwMjE0OGU3ODk0ZTVlZTYzMmUzNiBsZWdhY3ktdHJ1bmsKKzU3OTQgNDlmN2E0YTFmMGY2Y2U3N2M1YWZiZTgwOTc3N2NlY2YzOWUyYThjMyBsZWdhY3ktdHJ1bmsKKzU3OTUgNGM2NTUxMTVkZmNlN2RmZTQxYThiZGFmMjhhMGZhNGQ4ZDdkNDZkNiBsZWdhY3ktdHJ1bmsKKzU3OTYgNjdkMzQ3YzMyZmZmYjhjOTYzNjE1Zjc5ZDUxNDkxOTNlYzY4ODE0ZSBsZWdhY3ktdHJ1bmsKKzU3OTcgOWYxYjZlMmRiOGUwMTJjMzc4MjNhNDU1YjljZmUyZDBhMmQ1ODJiZSBsZWdhY3ktdHJ1bmsKKzU3OTggMGRhMjRmMWMzZGRlNmRhNGZkYzdjZDMzNzE5N2RkNzBjZjZiZWM1OCBsZWdhY3ktdHJ1bmsKKzU3OTkgOTU2NDNjMGIwYzBlYjA4MmIxNmU5Y2VhNTYzNGJmNmZiZWI4OTA4YiBsZWdhY3ktdHJ1bmsKKzU4MDAgNGI1YmZmOTU4MDRlNzJiNzc5Y2FhNGVhYTRmNTcwMWQzYmUyZGRhZCBsZWdhY3ktdHJ1bmsKKzU4MDEgOTY5YmQ5MTFlMTE0ZmNmMzJlYTRkMzllM2M1N2U5ODJiMzQxNGY2ZSBsZWdhY3ktdHJ1bmsKKzU4MDIgOWJkMWU0MWQ2YjExNmE1NWFkNzNkNThmZTk2M2VhODBjMWFlOWE2OSBsZWdhY3ktdHJ1bmsKKzU4MDMgMjQ5N2M0M2Y0OTgzZGJjYzU2ZjcyYjE3NTM5MjFkYmFjNjdhYzMzNSBsZWdhY3ktdHJ1bmsKKzU4MDQgMjAxZGU4NDU1YzJiYzlkMWEyNzI2ZDRlMmZlYjE0ZDE1ZDM4YjNmNCBsZWdhY3ktdHJ1bmsKKzU4MDUgMmRiNTg1ZWEyMThiZmRhY2M4MjI3MDA3NGI2NGJhM2M5ZjRiZTBlNSBsZWdhY3ktdHJ1bmsKKzU4MDYgMTZjYjA0NzMyMjRjZDUxN2EzYjZjOWZmNTVmZTM3YTcxZmNiOTIyYiBsZWdhY3ktdHJ1bmsKKzU4MDcgOTFjM2U5ODIxZDBhMGQ5NDFkNDc5NTNlNDVhMDNmN2ZlZjdmNDI3NiBsZWdhY3ktdHJ1bmsKKzU4MDggMzY0MTYxNDAxMDVhMjk0M2JkNDBhNTJlYWFjZTU3NjQ3NjdmNTgwMSBsZWdhY3ktdHJ1bmsKKzU4MDkgMDA0NTM2MTNjZDRjNzc0OTJjNGE5MmFjOWZjODEwNjMwMmU3YmU0ZSBsZWdhY3ktdHJ1bmsKKzU4MTAgMDEyMzc2ZDNhYTE0N2IwMmQyNjNlMDU4Mjg2NDhhNmYxNGYyZDJhMyBsZWdhY3ktdHJ1bmsKKzU4MTEgM2I0ODQ4MTJhY2Y2ZTJlMTk3ZmZkODBlMjNmNjYzNWNiZjc5NGMwMiBsZWdhY3ktdHJ1bmsKKzU4MTIgMTcwOWQ1ZmVkNTI4ZTZhZWIxZWQ1MjAwNGRhMjM0M2ZmOTc3MDE5ZCBsZWdhY3ktdHJ1bmsKKzU4MTMgNTY4OTc3NjBlOTU4NzI1NzRlNjEyYWI4NDJjZjVjZDZkMzliNjdlNCBsZWdhY3ktdHJ1bmsKKzU4MTQgZmFhMjFjZTFmZjAxZGM3OTNhZDdhNzI5NTI1YTA2ODNhMjMyZWU1NSBsZWdhY3ktdHJ1bmsKKzU4MTUgZWZkZGUxZDc0MjRiOTA0NmFlOGY4ODNhMTRkZThiYzhlMDM0ZTE3OSBsZWdhY3ktdHJ1bmsKKzU4MTYgODIwOTk5OGQ2NjllMTZhMDhmY2E0OWNiZTdhYTI4OWYxNDZkODA0YSBsZWdhY3ktdHJ1bmsKKzU4MTcgMmJlMGJkZTNhMDcxOGUwMzc0ODA4OTg5ODY5NTM0OTJmODE4MGNkYiBsZWdhY3ktdHJ1bmsKKzU4MTggYWUwMDRhNDUwNTBmZGE0NDcyN2RiZDczOGJlNjAzNTMwYzQ5MjZkOCBsZWdhY3ktdHJ1bmsKKzU4MTkgODFmNDVmNjkzODhlMmRlN2JlNGYyNTVlY2I2ZDg3MThiZDUzYWQwYSBsZWdhY3ktdHJ1bmsKKzU4MjAgZjZhODQwZTgzZDJhNTJiOGY0OGZjNjBlOGU1MTg4OWI3NTIyOWU4NiBsZWdhY3ktdHJ1bmsKKzU4MjEgMGIwMjFjZjQxZGRhYzBiYjBjMmFhMGI3NTRlOGNjYmJjMTllNTVkYSBsZWdhY3ktdHJ1bmsKKzU4MjIgZGRiNDUxMGVlYjQ2ODM1MWZiOGQwZjY4NmRkYWYxOTMzZmY2ODU2MiBsZWdhY3ktdHJ1bmsKKzU4MjMgNmQ3NjJhMmY5YjY5ZDY4MDMzNTQ2M2Q2ODE0MDYxYjEyYWYyZDIwZCBsZWdhY3ktdHJ1bmsKKzU4MjQgMWExN2JhNTBiZDY4MTkxNzcyNjU0M2RhODgzODNhZjcxZTgwNTNmZSBsZWdhY3ktdHJ1bmsKKzU4MjUgMjFkODk2OTgzMjljNmIyYjJmZTdlZDg2OTQ1MDYzNTFmMTViNWYxYSBsZWdhY3ktdHJ1bmsKKzU4MjYgMDg5ODU0MzE1MDBiNzE2ZWQzMDA5OTI5YjhiOTg3YTdhNDgwYzEzNSBsZWdhY3ktdHJ1bmsKKzU4MjcgZTBlZjAwOWIyNzAyMjNmMjI3MjU2MGRlMTA4MzNmMWE4MDEyNGFiZCBsZWdhY3ktdHJ1bmsKKzU4MjggZTI4MTI0YmI3ZmFiMzE4YjFmZmY4ZGY1ODNlNDA0NzI1MDg1MDg5MSBsZWdhY3ktdHJ1bmsKKzU4MjkgNmNhOTc4N2NkM2FhYTBmNTZhM2U1YWVmZDlhYTc1ZjY1N2U2MTBhNSBsZWdhY3ktdHJ1bmsKKzU4MzAgMzY5YjMwZjc4ZDYzZmNlNWE3MGYwMjI2NTVmMGNmZGU1MzlhNWI5YSBsZWdhY3ktdHJ1bmsKKzU4MzEgYmMxN2U4MzEzZWEwNmJiNGIxNGU0Yjc2NTY3YTNjZjIyYjU3ODQzNSBsZWdhY3ktdHJ1bmsKKzU4MzIgZjhmZjI4MzI5OTcxNjJkNWZjMmU5NjZiNjVhYjExOGU4YWE1NmMzMiBsZWdhY3ktdHJ1bmsKKzU4MzMgYzI1ODY1ODg0NjQ5NThkNDg0ZTZmNDAzYTIwMzc2MzYyNGFiODQyYyBsZWdhY3ktdHJ1bmsKKzU4MzQgNGUxYWQyNDQxMGE3MTE2ZmNmNGI3OTQxNjFlOTNiODA5NGVkODNlNCBsZWdhY3ktdHJ1bmsKKzU4MzUgYWYxYzJmMzZkYzM0ODY5ZTUwY2ExOWQ0ZGNmNDY1MjczYThjMTllYiBsZWdhY3ktdHJ1bmsKKzU4MzYgM2NmMmQ4YTJkNzRiMTNkNzc1ZDVjMGQ2MTczYjFlN2IyNWQwOTk3YyBsZWdhY3ktdHJ1bmsKKzU4MzcgMDUwODRlZTU0ZTU0OGUyY2I4NDQ3N2M3ZjJmMTRkYmZkZjFiOWI5NCBsZWdhY3ktdHJ1bmsKKzU4MzggNmIwYWY3OGE5MGU1ZjExMTg3MjNhOThjZjc3YTM1ZDM2ZmQ1MjBiMiBsZWdhY3ktdHJ1bmsKKzU4MzkgMzU5MDhlMzc1ZDFhNmY5OWZhMjIxOTg1Y2IxNmQzODlmNWY5MDk4NyBsZWdhY3ktdHJ1bmsKKzU4NDAgZmUxOThkZWUwNjQwODYyN2U3M2M2NmY3MmIxMzk5Mjk1ZmU3ZDQwOSBsZWdhY3ktdHJ1bmsKKzU4NDEgMGM4ODIxYmY2ZGI1NjZhYmQ3MzE0OWQ4MGFlOTJjMjM0ZTVjYjA1MCBsZWdhY3ktdHJ1bmsKKzU4NDIgMjhmNDFlYzdjNWNjNDIzNTU5ZjVhZjViNDc4YTUyZGEyNTUzMDNkYyBsZWdhY3ktdHJ1bmsKKzU4NDMgZTA4NjJmMDVlMTg1MDc3ZWFmMDMxNDQ1NGEyNzE0M2YyZGZiMGEwMiBsZWdhY3ktdHJ1bmsKKzU4NDQgODI3MzM4Njk5MDk0NDRkNDllYTY3ZDA5ZjI1ZTgzYTZmODZjM2FiYSBsZWdhY3ktdHJ1bmsKKzU4NDUgNmEzZmZjMWRiYjk1ZDg5NzE3MDIzMWFjM2FlNDU2NWQxNWQ4MDBlYSBsZWdhY3ktdHJ1bmsKKzU4NDYgMDQ2ODg4ZGExZjQ0YTZmNTExM2NkZjJhNWU5ODViNGI4OWY4ODQ2OCBsZWdhY3ktdHJ1bmsKKzU4NDcgMmVlMWY5MjNjYjE5MzIxNmNjMmVkMTAyNjRiZTM5ZGM5M2QyYjFmOSBsZWdhY3ktdHJ1bmsKKzU4NDggYjdiMmMxM2I1ZTMzMjg2MGNmYmExYmM2ZGRmZWJiYjEzOWVhNWZlNCBsZWdhY3ktdHJ1bmsKKzU4NDkgYTQ0MjM1ZTk5NGYzN2Y0OTdjN2I2YjIyZDE1Mzk5M2RiMTM5MjE4NSBsZWdhY3ktdHJ1bmsKKzU4NTAgOTJmMTFhZWZiNWNhMzVmNDQxZGNiMzhhOTU1MGUwYzlkMTYyYTg1ZSBsZWdhY3ktdHJ1bmsKKzU4NTEgYzcxYTdhNGY1ZjhlYTU4MjVhMDc4YWNiM2RmNWYwNzBiZGFmZDhkNiBsZWdhY3ktdHJ1bmsKKzU4NTIgZDU1MzJhNzFiNDU0YjZjMzI0OWU4MWVhMjAwMjNmMTA5NTcxMjc1OCBsZWdhY3ktdHJ1bmsKKzU4NTMgNmY1ZmViM2I0ODI5Zjk4YzA3ZDRhNTcyMjc5NWUzOTk2ZDAzMDRlOSBsZWdhY3ktdHJ1bmsKKzU4NTQgOWZhMjIyOGJiMDk2MjBlYmQzZGQ4MjA2ZDhiNGJhZjhhZjE4YWY3YSBsZWdhY3ktdHJ1bmsKKzU4NTUgMTY5NmZiZjMwMmI2M2ZkMWQ2MWI3MjRjOTU1MDNiYjBkNTQ1NDVmZiBsZWdhY3ktdHJ1bmsKKzU4NTYgZDE1ZDI5YmJjMWNlMTFmY2RjOGY1NTZiYTAzNWJhNTNhZjA5N2FjMSBsZWdhY3ktdHJ1bmsKKzU4NTcgODMyZjI2ZDBlMDY5ZjZkNTllY2NmMzA1YzllYmFmMTI4M2ZlNjk1MyBsZWdhY3ktdHJ1bmsKKzU4NTggMWMwMGQyODQ2ZTg0OWY2OTYyNWNjNmI3MjI3OWFjMDUzYWUzOTRiNCBsZWdhY3ktdHJ1bmsKKzU4NTkgYWRhMjIyNTg1MzY2ZTZmNTkzNGE5OWMyM2E3NmQ0ZGNiYjE0Y2I4MSBsZWdhY3ktdHJ1bmsKKzU4NjAgZDlhNzk5NzdiMzhkNDM5ZWEzZjEzOTQ5NWI1ZDI3YThiZjhiMzhhOSBsZWdhY3ktdHJ1bmsKKzU4NjEgNGZlYTZjZDk0ZGZhNGQ1OTIyM2RlYjVmOGRmZTAxMjU0ODkxZWE0YiBsZWdhY3ktdHJ1bmsKKzU4NjIgZjU5ODYyMzA1MGEzOThjYTNiMjI4MmNkYTBiMjkyM2EyMjNlMTc4YiBsZWdhY3ktdHJ1bmsKKzU4NjMgNTQ2NGZiMmQxMjllNTA4MTkyMTk5OGIxODkzZjUxYzMxN2NhMTg4ZSBsZWdhY3ktdHJ1bmsKKzU4NjQgNWQ3YTE1ZGY3MTU1NTI1Njk2ZWZmYzMwM2JhYTk0ZDc1NTU2N2RjOCBsZWdhY3ktdHJ1bmsKKzU4NjUgNDA5YTg5YzVmNjZkNTJiMjJiNGU3ZjcxYTkwOWY5ZGY4MmRjMGY5YyBsZWdhY3ktdHJ1bmsKKzU4NjYgMDI0MzVmZDk1Mjc3YzYyZDJiZjRkNzI5YTNiNTU3NmQ5ZGY2MWU0YyBsZWdhY3ktdHJ1bmsKKzU4NjggMTE2ZGI3MzQ3ZDAxYzRjNmU1ZWUyMWU0YzI5YTUzZGM5ZmNiYzRmYiBsZWdhY3ktdHJ1bmsKKzU4NjkgMWRmOGY1YThiMjE2ZDExMTU1N2VkZjgwYmRlODZlYTE4YmQ4ODg0NyBsZWdhY3ktdHJ1bmsKKzU4NzAgNTJkY2U0Y2RjOTMwZTAxYThlMjg5N2VhYzk2OGZiYzQ1OWM3MjcyZiBsZWdhY3ktdHJ1bmsKKzU4NzEgYmE4M2RkNDU4NTMzMTE4NTUxYTlmM2YyYzQ0ODQ1NGMzNmQ0NzY1MSBsZWdhY3ktdHJ1bmsKKzU4NzIgZTk5NGU2N2JjYjk1MDAxZGZkOWU0ODU5Yjc4YTI2OGYxMjQwMWUwMiBsZWdhY3ktdHJ1bmsKKzU4NzMgYzI4MzQ0N2I5ODVmNTJlYTQ3ZWIwMDQxZTk0NzM5OTkwZTQxMmY1MiBsZWdhY3ktdHJ1bmsKKzU4NzQgODEwZTY5MGFhNjAyYjAzMjQ2NzFkNWIxZWMyZjkyZTk1ODU3NDFiYiBsZWdhY3ktdHJ1bmsKKzU4NzUgZjI2MTRhYzczNWQwYzI2YzYxYThkNzg4ZmYzZjc4ZDkwNmNjYmNmMSBsZWdhY3ktdHJ1bmsKKzU4NzYgMzk3ZTZkNTNhN2FkZTU4YmI4YzkwZmFiM2I2Y2ZhZjJhYmQzOGJjMSBsZWdhY3ktdHJ1bmsKKzU4NzcgMjc0MDZjMzZlOGJkNDQ5ZTc4OGRiNzUxMzAxMTQ1NDc4Y2E3ZTgyYiBsZWdhY3ktdHJ1bmsKKzU4NzggMDIyNDc0YWMyNDUxZTQ5MDA2ZmZlMDU1YmQzZTQ1YmRjNGIzMGIyZSBsZWdhY3ktdHJ1bmsKKzU4NzkgMTQ5OTFjNDMzMWRmMDg0ZGIxNDRiZmVkYzU5NDIyYzUxYTlhM2IzNyBsZWdhY3ktdHJ1bmsKKzU4ODAgZjZiZGRhMzcwY2I3NGIwZmQyM2U2NzVkNzYyYTZjN2RkMzc5ZjAzYiBsZWdhY3ktdHJ1bmsKKzU4ODEgMmZlN2Q0ODk2NTRlOGFkNWM1NzMxYzAwYzVjMGZkYTE5NGVlNjA5NiBsZWdhY3ktdHJ1bmsKKzU4ODIgMDk4Y2JkNmQxOTZlNGY3ZmRjOWZhODgxYmZiNTY3YTQxMzc5NWM3MiBsZWdhY3ktdHJ1bmsKKzU4ODMgZjZhNmE2OTkyN2ZmZWYyMTUzZjIwZWY2MmRlZmNhYWI1ZTQ4YTc5ZCBsZWdhY3ktdHJ1bmsKKzU4ODQgYjZjMGE0MWU0YTQ2NTgwYzJkMDMzZjY5NDMyZWFjOTE1MjFmMDYxMSBsZWdhY3ktdHJ1bmsKKzU4ODUgZTFkZjkwMjA1YTMzMzkzNmQ5NjY5MWViNzQ0NDQ2YjA0M2JiODg2MSBsZWdhY3ktdHJ1bmsKKzU4ODYgMGFjNWZiYWY4YWVmOGJhYWNmNDkxNmUzNjNlMjQ1Mzg0MWI5ZDQyNSBsZWdhY3ktdHJ1bmsKKzU4ODcgZTA0NWY5MTMyYjA3YmNiZGFlOTAzNmM5YWZlNGE5MGM0OTU5NGQ3MCBsZWdhY3ktdHJ1bmsKKzU4ODggMDEzYmJlNGVmOTQzN2FjNTgwOTBlMDExMzMxZDVmMWRiMTljNTg1OCBsZWdhY3ktdHJ1bmsKKzU4ODkgOTBiNTQzMTI2NjFhMzUwMzRlNzY0ZDE4MzY1NGZiZjUxMmRjZDVkMiBsZWdhY3ktdHJ1bmsKKzU4OTAgNjdmNWQyOWQ0MDViMmE5MGY3MDE3ZjJmYTVkZDRjNjI4ZGU0ZGE4YSBsZWdhY3ktdHJ1bmsKKzU4OTEgMDJjOWRhMjBiNDFlNjkzNjZlZTJjYmI2NDZhNjYwNWNjZjRiOGQ1MyBsZWdhY3ktdHJ1bmsKKzU4OTIgMjRiZWUzNzgzYjM1ZjNmNGM5MGZlMDYzMzRiNjFkMjQxZTMzMDI0YyBsZWdhY3ktdHJ1bmsKKzU4OTMgMjMyNTRkYWEyNDdiODc1MzIyYzgyYzEwNmRkMmMzOWI4MGFkZWJmNCBsZWdhY3ktdHJ1bmsKKzU4OTUgNjQwMmJlMjY4OWM1NzlkMmRjYmJlYWMyNGFjZGU0NzlkNWNiMzViNSBsZWdhY3ktdHJ1bmsKKzU4OTYgYWY1ZmY1MjMxZDRhMWQ0YWJmNzBiNGZhNTEwZjZlNjA1ZWFhNmFjNCBsZWdhY3ktdHJ1bmsKKzU4OTcgYmE5ODMxNDA3MThhYTQ3Y2U4MGE4NGI0MTZiMTExZmEyYzI1ZGIzNyBsZWdhY3ktdHJ1bmsKKzU4OTggZGE4NmIzYjU0MzYzY2NkNDNkOTBlYThmZGI5NDBmNDg2NWM0OTJiMCBsZWdhY3ktdHJ1bmsKKzU4OTkgNTc4NDY2OGQwNTc2YmYxMmNhOTM3MzAzYmNlMjI5OTVkNjYyYjg0OSBsZWdhY3ktdHJ1bmsKKzU5MDAgMjZiZWM5ZTIyZTVkMGY1NjU0MWZkNjkxOTJjMjM3MzJkMDcwOGRmMSBsZWdhY3ktdHJ1bmsKKzU5MDEgNmFiYzc1ZWM2ZDI5ODI1MGM2MDcxZDFlYWM2Zjc0M2JlZDI4MTRiNyBsZWdhY3ktdHJ1bmsKKzU5MDIgNTc4Y2EzMDJhNTk4YzM2NmY4MDA0M2VmYmNjMmZjMjQ1ZmJkMWYzZCBsZWdhY3ktdHJ1bmsKKzU5MDMgNTI5ZjRkOWNiZTNkOGU3MjEzZWRkM2FkZDQ4YWY0N2NmMWUyNGMyZiBsZWdhY3ktdHJ1bmsKKzU5MDQgZjcyMDUwZGQ2MWE5YzNmN2NkZDliNTFlMGZmNGE0ZGYzNmJiOTA2ZCBsZWdhY3ktdHJ1bmsKKzU5MDUgZGI5ZjZlZGU1OGE3NjZjMDliZmQxODc1NTg0YjFkY2JkYzI5NzVlMSBsZWdhY3ktdHJ1bmsKKzU5MDYgZDcwMTQ5MjAyYzkzZGM2MzJlNDE5NGVkYzc4Y2FhNjY0ZjZlNzEzMyBsZWdhY3ktdHJ1bmsKKzU5MDcgZDBkMWEyMWQ0OGIwYWQzY2Y3Y2ZiODE1OTA1MGM2ZWMwMGJmYjcxNCBsZWdhY3ktdHJ1bmsKKzU5MDggMWFmMWFkY2E4MjQyNzQ4YTdjYWI1ODEzNGQzOTgwNGM3ZWZiZDRiMyBsZWdhY3ktdHJ1bmsKKzU5MDkgM2JkZTRiNTlhNWQyZTBjYmJmMzYyZWY3N2Q4N2U0OThlZWY1OTA4MCBsZWdhY3ktdHJ1bmsKKzU5MTAgNTU4MDhmNjAwOWNkZDAyMzc1ZTNiMTM5ZjBiZGM0ZDY1OGIwMDUxMSBsZWdhY3ktdHJ1bmsKKzU5MTEgMDY2YThhZTRkNDA2M2FiOTk5OGE3ZjI3MWI2MjAwYzUyMGZmMGQ4ZiBsZWdhY3ktdHJ1bmsKKzU5MTIgMWZmMTI4MDRmZjJhNzQ1ZWE5YmYxZDlhY2U1MWYzNmNlM2Q5MjM4MyBsZWdhY3ktdHJ1bmsKKzU5MTMgZTc2Y2EzNGQ0OGYzZWVmMzE1NTI5MDZiMTI4MmM3MTFlYWU3MzIxMSBsZWdhY3ktdHJ1bmsKKzU5MTQgMDc5NzdiZjBkOTk3MGI3YzFiOWQyNmJiMmUxZWEwZWU4NDg5Nzc1OSBsZWdhY3ktdHJ1bmsKKzU5MTUgNjIzYmE5YmRlYjIyMTUxYzkwZDQ1NmJkMTNmOWJiNjI0MzRjMzkxYiBsZWdhY3ktdHJ1bmsKKzU5MTYgZGI3NmZkMzkwZjc0OWExZmQwNTU4MmRiMDk4YmIzNDM3MmFmYTE2OCBsZWdhY3ktdHJ1bmsKKzU5MTcgZjkxZjYxOThiMjc2OGY2YTUwZGE2ZTdhMjBjMzQ3ODY2Y2Y2N2Q2YiBsZWdhY3ktdHJ1bmsKKzU5MTggYzNlNTFlYjFjMTRmZGZiY2Y5M2IxYmFhMTBmYzA0ODBlYmQyYmU4NiBsZWdhY3ktdHJ1bmsKKzU5MTkgNzEzYmQ4Mzc3MzgyMGZiZWEzZDdhYjYxM2YwZGI2MzdjYmQ4N2YzMSBsZWdhY3ktdHJ1bmsKKzU5MjAgNWFiYmM5YjVmZGYwYjI3YWEyZjIxYjQ3ZTIxNjhkMWRhY2UxZjkxZSBsZWdhY3ktdHJ1bmsKKzU5MjEgZWM4NDk0OWY4MWVlZGY5M2ExMjQ3MzMxYTNmOGZlNzNmNzcyZWIxMCBsZWdhY3ktdHJ1bmsKKzU5MjIgYTdjMjczNzY4N2MyMTJlNTVmYWU2MWQ2N2JjZTgwYzYzZThmOWM2YiBsZWdhY3ktdHJ1bmsKKzU5MjMgZTY0NmFmYzUwYWM3M2E5YTNjZmM4NzQ0ZDM1NmEyNzZhNTcxNDE5OSBsZWdhY3ktdHJ1bmsKKzU5MjQgMTQ0NGEzNTI0ZWRlMDliMDQwN2EwOWFiYmIyYzBiNTBhNjk5MmE5YSBsZWdhY3ktdHJ1bmsKKzU5MjUgZGNjNTk0OTM0OTlhZTcwYmQyZGEwYzYwZGQxNTc0MDJmNzlkZTEwMiBsZWdhY3ktdHJ1bmsKKzU5MjYgYTcxZDJmZDkwZmE4N2I4NGY5YjE0Y2E1M2MzMDYxYTAxZDMxODI1MSBsZWdhY3ktdHJ1bmsKKzU5MjcgNDA4ZGZjNzE4OTUxOGYxZDRmYTk2MDAzODcwZDhkNzU4NGQ0ODdjNiBsZWdhY3ktdHJ1bmsKKzU5MjggNzA1MjJkYjExMDE5YThjYjdjMjFiODE2MWNhZTRhN2U2ZGU2MGUxZCBsZWdhY3ktdHJ1bmsKKzU5MjkgOTdiMGU5NjI1ZWIxZDVmODBlYmI2ZjcwNGZiNTY1MThhMjY2Y2JjZCBsZWdhY3ktdHJ1bmsKKzU5MzAgODAzZmJjZGNmYzlmODdmNzQ3Y2Q0MGZmMTM4OTMxZGQ0N2VmZjNkZCBsZWdhY3ktdHJ1bmsKKzU5MzEgOGIzZjJhODYyMGY1NGZiOGI0NTRjYTVlOGRhNWFmNDdiOWJmNzExOCBsZWdhY3ktdHJ1bmsKKzU5MzIgZDE5NjhhN2NjNjIwYzE2MTAxY2Y2Y2FkMTYzZmUxZWIwMTA1MzgzOCBsZWdhY3ktdHJ1bmsKKzU5MzMgOGRkMDE4OGU1MmE3YzhjNTliOGNmZTAzMjVjMWIyMWY4OGU4MjUxNiBsZWdhY3ktdHJ1bmsKKzU5MzQgZjBiYWFkYmZjYWJkYjUyZGNiNmYyMGNhYmIxMDk3Nzg0ZDBkZmJhNCBsZWdhY3ktdHJ1bmsKKzU5MzUgMTQyNWZjNjQ5MWViYmZjZDliMmZiYzQ3MjU5ZGM3NDA3ZjcwMzUyMiBsZWdhY3ktdHJ1bmsKKzU5MzYgNDUwZjRkNDZkOWRiZjAxMzZlOThjNzNlMjhlYmFlMjQ3OGFlM2VhOSBsZWdhY3ktdHJ1bmsKKzU5MzcgNjIwYWIzZGIwNzkzNGM0MTgxYmUyZTdkYjliNTU5NzRkZDViYmViYiBsZWdhY3ktdHJ1bmsKKzU5MzggZTkwNDMyMjM5MzVhZDM0Y2NjZjkxNGQ0YTBiMGM5MWZlM2Y1OTVmMCBsZWdhY3ktdHJ1bmsKKzU5MzkgYjM4ZmRiMDA4ZjFkYzMxYTk1OGRiYzA0MTcwMDk4OTdhNjk2NjZiZiBsZWdhY3ktdHJ1bmsKKzU5NDAgYWE4YWRmZGQzYWExZTFlOWFlNWIyY2UyYzI1MjhiZGQ3MTI2ZTBkNCBsZWdhY3ktdHJ1bmsKKzU5NDEgNTBhYTE2ZjgwOWQ3NjAwMzJjMDQxZmQ1ZDQ2NDE3YmU2MzY4M2EzYyBsZWdhY3ktdHJ1bmsKKzU5NDIgYTI5MmI3NTgzYzAxNWEyODJhMWVmOTY2MmM3YWY3ZDBjODQzYWE1MSBsZWdhY3ktdHJ1bmsKKzU5NDMgMTEyOTllOTVjYWU4NDBkNzAxM2IwMzYwYWMxOTJmY2M5NjdlZmExMiBsZWdhY3ktdHJ1bmsKKzU5NDQgMDczNTUwZTMxMjczMDc0N2Y1NjM0MjE0MTUzMmI5MGM3OTBmYzhlYSBsZWdhY3ktdHJ1bmsKKzU5NDUgMzVjNGE0OGQ5ZGExNjk0YzUwZTZmODgzYTUwOTM3ZTZjMTYxMjM2MyBsZWdhY3ktdHJ1bmsKKzU5NDYgYTRmMDFkNDNkYWQ2OTkwMTVkMTYwNmE0YmE1YjczOGVkMzAzMDhkYSBsZWdhY3ktdHJ1bmsKKzU5NDcgODljYWZmZDJjMDYxNDg4MzVjMjhkNDY0NmU5YzYzM2NiNjg3MzczYSBsZWdhY3ktdHJ1bmsKKzU5NDggYWVjOGJiY2Y4YjBlNWYwMmFmODI3ZGM0OTNkZWRiNDBjM2VmNjFmNCBsZWdhY3ktdHJ1bmsKKzU5NDkgODI3ZjExYWQ2NWRmNjNkZDg3ZDlkYTlmYmEyNDRiNTEzZDk3YzE2ZSBsZWdhY3ktdHJ1bmsKKzU5NTAgZTI5MGZhZWI5MmM4NWY3ODNiNDMyM2QwN2NhYWNkOGZkOTY5MWZkNSBsZWdhY3ktdHJ1bmsKKzU5NTEgMDBjYTkwMGM3NzQyYzVlMDczNDI3NjQwYmIzMzVmZGVlMDY2ZWQ1ZCBsZWdhY3ktdHJ1bmsKKzU5NTIgZmVkOTNkMmQ4OGZjNDZmOWNiN2U2MDVlNTQzMmZhOGNjMmI4ODlmNCBsZWdhY3ktdHJ1bmsKKzU5NTMgY2UyN2UwMzI4NDYyZWQ5NmYzOTBjMjg2ZjIyMjQ1YjE5NzNjMTI5YyBsZWdhY3ktdHJ1bmsKKzU5NTQgNjFmMTlhN2IxZmYxMDZjNjdlOTUzMjk2MjEwNWU4NWY0OWRjM2VhNiBsZWdhY3ktdHJ1bmsKKzU5NTUgMDJhMjNlNmU0MTRhZmZlOTQ3OWE4ZGVmYzU4MTc4ZjJkOTQ2NjUzZCBsZWdhY3ktdHJ1bmsKKzU5NTYgODM1NTcxNTNmNTQ0NzQwMTMzM2VjNWQxYmNiZjAyYjM3YWFhNDFhZCBsZWdhY3ktdHJ1bmsKKzU5NTcgMmMxNzhiZjcwZjdlZjM5YzE3NDRhZjRiYTg0MzE4YzZlOThkYTZkOCBsZWdhY3ktdHJ1bmsKKzU5NTggM2I2ZWJmOGQyYTU5ZTY2OTBjOTI2YWRkNDY0Y2E5OWJhYjg5NmY3MiBsZWdhY3ktdHJ1bmsKKzU5NTkgMWRmYzUxOWVhM2NiZTQ1ZmQ3ZjAwNGMzY2QxYjYzODU4YTFkNGY2YiBsZWdhY3ktdHJ1bmsKKzU5NjAgMTZhNWY2MDQ4NDYxZjgzOWNjZTM2OTg0OThmOTJkODZiMDI1MWU3MiBsZWdhY3ktdHJ1bmsKKzU5NjEgMDgxMzBmMDBjMThkYjUwM2Y0ZTM5NWNhMmU1NWQxYzc3OTExOWE5OSBsZWdhY3ktdHJ1bmsKKzU5NjIgMDNjNmMxODMyNWVhY2E5NjJjMzE4NTc1NjQyMWM2N2VlOTM3MmY0OCBsZWdhY3ktdHJ1bmsKKzU5NjMgMTQyY2JhYmRkOTQ1NTZhMzNiNTRmZTBlYTI0NzQ4YTA3YTJlM2IzNCBsZWdhY3ktdHJ1bmsKKzU5NjQgZjcwZGJlNjA4ZjAzMWY3YmFkOGExZWVjMjAxZjE1OGY4MmE0ZTFlYyBsZWdhY3ktdHJ1bmsKKzU5NjUgOGQ0M2I4MzAzNDFiYjU2YWVmMWFmYjNmMDZiYjVmZjVhMTMzZmE5NiBsZWdhY3ktdHJ1bmsKKzU5NjYgZDYyNDZhZWI0YTNmMjc0MmUyY2I1YzI1NjQ3MDczY2ZjMDJkOGYxYyBsZWdhY3ktdHJ1bmsKKzU5NjcgY2RlYTNmMjdjZjdjNzBiODIwOTRlNjY1MmM2YzFiNTJlY2VmOTIwOSBsZWdhY3ktdHJ1bmsKKzU5NjggNWYyNTA0MGZkNjNlNmY0MGQxZTY3YzZiNmQ3NDcxNTJhMjA0YjdkZSBsZWdhY3ktdHJ1bmsKKzU5NjkgZWFlNzBkN2YyZWM3YzhlMGE1ZTExZWM1NzdjZGJmYjkyYTQzOTcyMCBsZWdhY3ktdHJ1bmsKKzU5NzAgZWI1YjhkM2Q4YWNmNDI3YjNiYzNlZmUxNjY1MThhZmYyNWQxN2RiMyBsZWdhY3ktdHJ1bmsKKzU5NzEgNjE4OTRiYTU3MWY1YTgzZjUzYWMyNWIxMDk5YzkzOTUzZTU4OTE5NSBsZWdhY3ktdHJ1bmsKKzU5NzIgODk5YWVmZWE4MDFjOTlhZTM0Yjc3NTZiMDA1ZGY2ZThlODhmNmRkMiBsZWdhY3ktdHJ1bmsKKzU5NzMgZThkNTAxYzg4YTNlM2U5YmRjZDZmZWY4NGYxZDA0ZDY5ODEwY2ZiMyBsZWdhY3ktdHJ1bmsKKzU5NzQgZjZiZDU3ZGJkNTI0ZGVlYjc1OTliNzhiMzZhYjhiMmUxNjY2YWUzZCBsZWdhY3ktdHJ1bmsKKzU5NzUgZDI0ZjhkNzllY2EwNzRjMDIwMzVjZjE4MmVjYmEyZDJhMTA5YWJmMyBsZWdhY3ktdHJ1bmsKKzU5NzYgNDMxZThkMDEwNTQ3YTIzYWM4Zjc4NDZjMmJiZmVjNmViNzY3ZGYzMiBsZWdhY3ktdHJ1bmsKKzU5NzcgNmYzNjNhNDE3NjYxMTcyZmIyNDhiYmRlMDA0ZTdmN2ZmNzI1MTExYSBsZWdhY3ktdHJ1bmsKKzU5NzggNTU4ZGNlNjU1M2Q5MDViYjA2NTAxNjIyOTk2NDAxYjM5NjE5OGJkNyBsZWdhY3ktdHJ1bmsKKzU5NzkgYTFjMGMyYTM4ODgzZmFiZjc5ZjQ2OWE3ODNjOTcwN2JjYzVlNDA4OCBsZWdhY3ktdHJ1bmsKKzU5ODAgYzVkMzBhNTY0M2JlYWVlZGY1ODZlN2U5NWFjM2IwMTVhMmJjOTI5ZCBsZWdhY3ktdHJ1bmsKKzU5ODEgMmEwOTlmYjc2ODIzYjMyZWMzZDlmNjY3OWRkMTg1MzdiZTVhZmY1YyBsZWdhY3ktdHJ1bmsKKzU5ODIgNDM2MWE1ZmZiNjM4MjYwMmRlM2ExY2EwNmJiNGFjNmZiZTZkZWZjZCBsZWdhY3ktdHJ1bmsKKzU5ODMgMDVhZjI5ZThkZjBlNzU2ZjZlOWFiZDY1NGU3OWI5YmJlYzAyNTE5ZCBsZWdhY3ktdHJ1bmsKKzU5ODQgNTY2ZjQ2YjlkNzEyNmM5OTM5OTZkNTU5ZGJlYTQ0ZjZkYzY3YzkwNiBsZWdhY3ktdHJ1bmsKKzU5ODUgNzg3OWYzYjM5NjA2ZWNmYmMzYzU3ZjM1NDQyZjM0OGVmYjYwMmYyZSBsZWdhY3ktdHJ1bmsKKzU5ODYgNTQyYzgwZTYyMTExNGZmMmM5ZjlmMmFjNzk5ZDllOWEwYjM0NWEzZSBsZWdhY3ktdHJ1bmsKKzU5ODcgN2YyMzBkNGYzNjU1ZDY2ZTM1MzQ4ZDkyYWVhNjkwYjk2MTM4ZGU0ZCBsZWdhY3ktdHJ1bmsKKzU5ODggMDVlODUwNTU1ODJjYjRhMzJlZTNlMTg0OTlkMjY4OGYzZTdiNjg0OSBsZWdhY3ktdHJ1bmsKKzU5ODkgMmIyZmM5YTBiNGVjMTY5Njg2MDY1YTI3YTI4M2JlMDJmOTRkZmQxYyBsZWdhY3ktdHJ1bmsKKzU5OTAgZDc4MDFhNzdmY2Q1N2JmMDQ5ZGU3YjQ1MzMyMTU5MzIzMGM3MWQwYiBsZWdhY3ktdHJ1bmsKKzU5OTEgMDE0NWI4YWUyZDVmYjlmZDA4ZjJhMjM2MTlkMGI1MjJhYzIyYWI3ZCBsZWdhY3ktdHJ1bmsKKzU5OTIgOTM5OTQ1MTkyMDAwMzhlZTcyMjNlNjcyNzVjZjFjY2U3MDdlZDdkNSBsZWdhY3ktdHJ1bmsKKzU5OTMgNDNhZjUyM2EwMGNhZmQ3MDY4NjYxYmRiNzAyNWI4YmI3MmRlM2JmOCBsZWdhY3ktdHJ1bmsKKzU5OTQgNzNiYzQxYmU3MDc0ZGUzM2FlNDFmNWExMzY5NDZiMWUxNjk4MDUwOSBsZWdhY3ktdHJ1bmsKKzU5OTUgODU1MmUxN2FkYTY4YTE4ZTg4Yzc0Mzk4ZWY4MDRlMjczMDc0OGUwMyBsZWdhY3ktdHJ1bmsKKzU5OTYgNTEwZGJmYThjNTk5ODdjZmZjYjRkMGU0ODI2YzZlZjM5ZTI3MGYxMiBsZWdhY3ktdHJ1bmsKKzU5OTcgZWI4M2U0YjBjNzMzNzgwNGQxMDA0MWY3YzYyZmIxMmQ2YTQ5NTc4ZCBsZWdhY3ktdHJ1bmsKKzU5OTggNTBlNWI0YzU4OTVmYzUyZjU3YWUzNDMwMzVhNWQzOTAyYTNiMWI1NCBsZWdhY3ktdHJ1bmsKKzU5OTkgMjRmYjlmNGY4OTg0YjQ3ZDFmZDQ0NTU4MjEyNDBiMmFjYWRkOGVmNiBsZWdhY3ktdHJ1bmsKKzYwMDAgMzhlMTQ4MGU3Zjg5ZGJkNjhlNjc3NjMwNTA5MzA2ZTJhYzYzNTk5OCBsZWdhY3ktdHJ1bmsKKzYwMDEgNzI4ZDU3NDVhZTdiODYyY2Q5MjJhODMyNTYxYTMyYjllYTM4OTNjNCBsZWdhY3ktdHJ1bmsKKzYwMDIgZTY3YWRjOGIyZjE2NjcyMjViMWRlN2UxNzIxZDBkOGY4NmMwZWY2NyBsZWdhY3ktdHJ1bmsKKzYwMDMgMjBhMTNmY2RhZTU0ZjkzMDBhZjk0NjM4YzRhNWQyY2Q2NzkwOWM0NyBsZWdhY3ktdHJ1bmsKKzYwMDQgYWM4ZDI0ZjFkZjA4Mjk4YTkwN2NiZDIzMmNkZjU2YWEwMmQzZWYyOSBsZWdhY3ktdHJ1bmsKKzYwMDUgODIzMDcwNzFjNjY1ZTdjNGUxY2Y3MjNiMTljN2NkOWQxYzUyNzgxNSBsZWdhY3ktdHJ1bmsKKzYwMDYgMzViZWM4OGQ5NzM0MmFmMjcxN2NlYjUxMTlkMjlkMWUyZWQ1M2QwZCBsZWdhY3ktdHJ1bmsKKzYwMDcgNmM1NDFjNjNjNDNhMTEyZjQ5YWNmMWI0NDI3OTA4MzA0YWNlYzdlNiBsZWdhY3ktdHJ1bmsKKzYwMDggNWFlYzQ5MTExNzcyNmE3ZmJjNGQyMjkyY2YwNDNlMGQwMDFiYWJkNCBsZWdhY3ktdHJ1bmsKKzYwMDkgMmIxNjZiMjIwYzExM2RhNzk4YzY4OWNjYTEwYWU1MjE1YjQ2OTFmMiBsZWdhY3ktdHJ1bmsKKzYwMTAgNmMyNTgwNDNjZmFhNWE4MzU0ZjA4ZGM1MDFhYWIwMzMzZWE0MzA3NSBsZWdhY3ktdHJ1bmsKKzYwMTEgNWRmMmFjYmEwZmM1MDE5NjJhYTI3YzllN2ZmODJmOTI5YTA2ZWUzOSBsZWdhY3ktdHJ1bmsKKzYwMTIgMjJkN2Y1NGM1NzkyN2UzM2JmODYyYzUyN2NmYTlmZjRmYTI3NjM2YiBsZWdhY3ktdHJ1bmsKKzYwMTMgMmM5MDBkYWU4Nzk5MzViY2JmMDg3YWUzZjY2NzVmMWRiZGE0NDdhNiBsZWdhY3ktdHJ1bmsKKzYwMTQgNmY1MjNiZDBhM2FiZmYyOWE5OWRhNGEzNDI2NjMxMGQzYzY3MmY0MCBsZWdhY3ktdHJ1bmsKKzYwMTUgM2Y3Y2RmMTY2M2Y3YWZmMzQxNzYzNjZhZTA3ZDBjNjFjMzg2NTRmNiBsZWdhY3ktdHJ1bmsKKzYwMTYgOWNhOGFlNzFiYmIwOGQwM2NiNTFlZDRiYmE0MDU4ZWIxNDA2Zjc4MSBsZWdhY3ktdHJ1bmsKKzYwMTcgMDRlZGZjYmI3MTIxMzBhNzNiNTk1OGQyZjY2YWQ0MDk4OWVlYTE5YSBsZWdhY3ktdHJ1bmsKKzYwMTggZjY2MzA2YmMwNjYzZTRkMjdjMTU3NGFlOGJmZGNjZDdjZTgxMmRmNCBsZWdhY3ktdHJ1bmsKKzYwMTkgYTk1YjM1MGE0NGRhZTdhYzc2YzFkNGVmMGQ2YmU2Mjg0NjRhMjE3ZCBsZWdhY3ktdHJ1bmsKKzYwMjAgZThhMmE1ZTRjN2IwNDYwYjg1N2NkZjA5OGYxMzZhM2MyMGE4OWQ2ZSBsZWdhY3ktdHJ1bmsKKzYwMjEgYzdlODA4NTk2ZDE0MWMwMjI1YTczZDM0MzcyYWZmM2YyZjllMDMwMiBsZWdhY3ktdHJ1bmsKKzYwMjIgMWQwMzVlMjExMjA5NjkxOGFkMWMwMTAyYmQxYmFjNzYyNjU4YzNmMCBsZWdhY3ktdHJ1bmsKKzYwMjMgMjQyNzliYWZhODI4NDI5MjcyYmE4Mjk2MDEwYTNjOGY3ZDE5Y2I0ZCBsZWdhY3ktdHJ1bmsKKzYwMjQgMjljMThmYjEzZDhmNDEyZDFjOWUwZTE4NjYxNTQzNmNlOTk5ZjY5NCBsZWdhY3ktdHJ1bmsKKzYwMjUgNTNjNjZkMTlkMTI3YTMzMGZhMjExNmJkNjhhM2YxZTM1YmNhMWJmYiBsZWdhY3ktdHJ1bmsKKzYwMjYgY2VlNGE2ZDg0MTVlYzFiYWYyYTJmOWNiOGI4MTJjNTA4YTA4MTU0NSBsZWdhY3ktdHJ1bmsKKzYwMjcgMDk4Yjg4ZDI2MGQxMmZiMDY2Njc3ZDAxNTc5OGQ1ZmY5Mjc4NDhkZCBsZWdhY3ktdHJ1bmsKKzYwMjggMThhOWM2MjgwNTQzYjUyMjliNzcxZjY2NzU5NGFhMzUxMTJjMTc2NyBsZWdhY3ktdHJ1bmsKKzYwMjkgYjhiMWI2Yjk3NDMzODdjNDdlNDhiMzMyZDAxYWFjYjU3NDJkZjMxMyBsZWdhY3ktdHJ1bmsKKzYwMzAgOTE4OTM4NzFiYTA3NDIzNDY2MzI1MzdmNDk3Y2U2YzY3MTQ4NTQyYyBsZWdhY3ktdHJ1bmsKKzYwMzEgNTIyNzg0MWNmYTFmYjcwNGU5YzFkZjgwZGQ5NTM1MWFhYWY4NWUxYiBsZWdhY3ktdHJ1bmsKKzYwMzIgMzViMzUzNmZiNzYzYjljZjU5YWVlODc3ZjJmMTY0Y2IxMTNjODQzYyBsZWdhY3ktdHJ1bmsKKzYwMzMgOTFjMTA4MjA2OWQ4MTMyMmQ0YjhmZDE0ODJmMDVlOTI1NWYzNTc5MyBsZWdhY3ktdHJ1bmsKKzYwMzQgNGMwYTVjYTMwZjk0YTY3NGRmOTdhY2RhNWM1OTFjYTgzMDFmNmJjYiBsZWdhY3ktdHJ1bmsKKzYwMzUgYWExMTEyZDU2NjY4M2FmZGE3NGNjODQxOTJjOWE4ZmU2MmYyZjk0YSBsZWdhY3ktdHJ1bmsKKzYwMzYgNmY3MTViZmYxN2U0ODIyOTk4Nzk2MjgxN2NmM2YxZTRlYmQ3ZWJhYSBsZWdhY3ktdHJ1bmsKKzYwMzcgNmRlNDRkOTY2MjkyNjU5YWU5NGNhMDFiYmFiM2Y5M2Q4YWNiZjEyOSBsZWdhY3ktdHJ1bmsKKzYwMzggOTIyYzAwMTY1Zjc2MTJmYWQ3NzEwNjRmMTRiMDU3ZTY5ZWJiNDQ1MSBsZWdhY3ktdHJ1bmsKKzYwMzkgOTc3ZmYxYWNlMDcwMWU5OTMxMjU3ODJkOTNlZTUxN2VlY2U3YzYyNyBsZWdhY3ktdHJ1bmsKKzYwNDAgZjZiMjE4Y2VjNmJlZjY0OWNmZWNjNmQ2NzQ3N2NiMjhlNzg3MWY5OCBsZWdhY3ktdHJ1bmsKKzYwNDEgNmJlMzY1YTY3M2IxNGMwM2Y0ZDU4ZWExZTgwZTg2Y2ExZWZlYzBhMiBsZWdhY3ktdHJ1bmsKKzYwNDIgNGM3YmFiNGNkY2E2ZThjYzJlMDk3ZGRhM2ZhY2MzYjBiMzgyZDVhNCBsZWdhY3ktdHJ1bmsKKzYwNDMgMWVjMTU0MjQxNzQ3NTdmMGI1N2U5ODAxYzZjYTdmNmIxN2IwMWVjYSBsZWdhY3ktdHJ1bmsKKzYwNDQgZTJiM2E2OTZkNjljNzU3YzVlMzdiMDcxNjc3Yjk5ZmJkZjNmNGE2ZCBsZWdhY3ktdHJ1bmsKKzYwNDUgNGVjMWNhYzM0MmRkYzdmZTI0NWEyMjNlY2NlN2EzMmFiMTMyYWE1ZCBsZWdhY3ktdHJ1bmsKKzYwNDYgNmVjN2RmMjA2OTdkMDg2NWU4ZTQ0MGU5Y2VhYmYxZmQ3NzU1MGU0ZiBsZWdhY3ktdHJ1bmsKKzYwNDcgMjY0ZDE5NmJjNGM2ZGU4ZmY4OTk2MmVhNjczYjJhOGQ0OGE0NTRkMiBsZWdhY3ktdHJ1bmsKKzYwNDggZmQxNjY5ZjhkODc0M2JhNjYxNjI4NGU1YmU4MjY1OTRmMDY5MTdkYSBsZWdhY3ktdHJ1bmsKKzYwNDkgOGU2NjM5NDVlMTc0NDVjNTkyNDk3ZGNiNWM3NzVjMjFjNTljODU4ZiBsZWdhY3ktdHJ1bmsKKzYwNTAgZWM4ZjViNzVkZjY0ZGFjYWYzMDE2YWU5NGRlODU0MTE5MmNkMTEwMCBsZWdhY3ktdHJ1bmsKKzYwNTEgNmY0NWJlZWQzODczZjcxY2RjMGIzZTg5NjYwY2MxM2UyYTZiNDM5OCBsZWdhY3ktdHJ1bmsKKzYwNTIgNmFiNGNiY2VkZWMyMDNiODI3OGEwMjI0MGY0OGY1NjI0YTJkNTA1MyBsZWdhY3ktdHJ1bmsKKzYwNTMgNzJhZDJmMWU5OTE5YWZlYzFjYzdiZWFiOGQ4OTg0MWFhZjU1YWIxNiBsZWdhY3ktdHJ1bmsKKzYwNTQgNGVkMDlhM2MzMjAxOGUyMTlkYTliNzYyMTE1M2JkNWY4Y2Y4ZmQxMiBsZWdhY3ktdHJ1bmsKKzYwNTUgMzZjYzNlZTU0ZjI4Yjg4MDBlZjNmYzEwZjIwNTUzNWMwNWU0Yjg4YyBsZWdhY3ktdHJ1bmsKKzYwNTYgYjVjY2NmMWM4ZjM4NjZiZWFkYzM5NDY0YmIyN2Q2ZDEzMTU2OGU0MyBsZWdhY3ktdHJ1bmsKKzYwNTcgZGFmYzhhMTBiMTg2ODA0NjBkZjdlMTlkMGYyMzRhMTYzNDI0YWNlNCBsZWdhY3ktdHJ1bmsKKzYwNTggYmQyMGMwNDI3NGZmYTZlNjllMWM5NGEyYzgyMzhiNzI1N2Q2MThkOSBsZWdhY3ktdHJ1bmsKKzYwNTkgNzM2NjRlYTIwMzBlMGJmZmZiZGYwYTA2NjFhNmVjZjNjMDNiOThkMyBsZWdhY3ktdHJ1bmsKKzYwNjAgMWMxOGY5MDYzNmZiYmUwODE2MTI2YTFlNjhlMDE0ZWIyNzM4YTFkMiBsZWdhY3ktdHJ1bmsKKzYwNjEgMjQwMzYyMGNhOTMxYWVmY2VlMDc4OTJkZDI3MjY0MGRhOWQzZjRkNiBsZWdhY3ktdHJ1bmsKKzYwNjIgZGU5ODdmZDY3Yzk0MzUwMmQ1YmNhZWJmMjE4M2M3YjZkYzlmYTA4OSBsZWdhY3ktdHJ1bmsKKzYwNjMgNTY0OTEyMjY3MjkwZjQ0OWUxZjI0ZWVjOTdiMWI0MGYyOGFiM2JjNCBsZWdhY3ktdHJ1bmsKKzYwNjQgNjI5MzcyMzIwNWE2YTgyOTRlZTkwYWUxNDI5OTg1MWI2NDkzMzUwNyBsZWdhY3ktdHJ1bmsKKzYwNjUgODgwMGRmMzY2YjEzMWQyYTI2NTJlMDBiMThlNTYyYjRkYTc3ZmUwZiBsZWdhY3ktdHJ1bmsKKzYwNjYgZTA3NTk3Mzg5ZDY0YmJmYjU4YjY4YzM0NTYxODcxZDI1Mzc2ZmQ4MiBsZWdhY3ktdHJ1bmsKKzYwNjcgNmM5MjYwYWUwZDE2MzZhOTVkMDEwYzM2YzBiNzZiMWQ4NzAyYWFlZiBsZWdhY3ktdHJ1bmsKKzYwNjggODczOGIwZGQ3N2ZkODcwMDljYmU4Y2ExZWYxZDEyMDdhMDViNWI0NyBsZWdhY3ktdHJ1bmsKKzYwNjkgN2M1NzExYTZhNDc1OTdkOTMxYmU0ZWU4MzI1NGEzMmMxNjU2NzdkYiBsZWdhY3ktdHJ1bmsKKzYwNzAgNWE3YTc2MTY2ZTdlMzk5ODE5NGUxMDEyMjFjMzk4ZTUzYjQyZDNmZiBsZWdhY3ktdHJ1bmsKKzYwNzEgNDA0OTZkYjhjZjFmY2M5OGQ2MjhlNzk4YjAyNmUwZDIyZjY4Nzc3NiBsZWdhY3ktdHJ1bmsKKzYwNzIgZDkwNjdjNWY1MGFkZDQ5ZTM5YTQyZTRiODNmYjE3MWRhZTM5ZmViZCBsZWdhY3ktdHJ1bmsKKzYwNzMgZWI2ZWY3ZWNhMjA3ZDI5ODliOThiMGE3MDA3YjFmOWM1NWQ3MGUwYSBsZWdhY3ktdHJ1bmsKKzYwNzQgYWE1ZjNlY2JmNTZmMzJkOGZjY2I0YzcyZDZhNTI5OWY0ZDg5Y2Y5NiBsZWdhY3ktdHJ1bmsKKzYwNzUgMWQ0ZjJmMjBhMjdjY2I2MTA5NmEyNTFkZGYwZDg5MTVjZGU5NjliZSBsZWdhY3ktdHJ1bmsKKzYwNzYgZGQ3NGEwNjAwNmUwNDAyMTcyNjNiODA1NzdlODQ2ODJkZDMxZDRkMyBsZWdhY3ktdHJ1bmsKKzYwNzcgODU3M2U2NWZhOTQ4NGYyNmJiM2RhZmI3ZjRmNDRmNjVhN2FjNDlmMiBsZWdhY3ktdHJ1bmsKKzYwNzggMGIwYzRlZDE5MzZhYzJkMjg1MmMzOTU4N2I5Y2U2ODM3ODYwNDU4YiBsZWdhY3ktdHJ1bmsKKzYwNzkgZDBhOTdhYzI1ZGFiNDczNjU4YTQwZDg2N2RjNzNkOGFkNjE0NDNiZiBsZWdhY3ktdHJ1bmsKKzYwODAgNDUzYTlmNmU5NjE4OWRlNjliNjMzZmY3MzViYjg0OGEyMDljNWUxMCBsZWdhY3ktdHJ1bmsKKzYwODEgNDg2NmEwZmMyYmJkNGU2NTUzNjZmZTU4OThhYmQ1NmY4MGYxOGNmOSBsZWdhY3ktdHJ1bmsKKzYwODIgMmYzMTRjYTBjZDMzOGQ2ZWM0NjE4ZTY0OGM5MThlZTBkYzFkMDgwYSBsZWdhY3ktdHJ1bmsKKzYwODMgMzIzMTY1Y2IxZmE1ZDc0YWVmZjhhYTdmYzMzNTRlNDc4ZDM0ZjBlNyBsZWdhY3ktdHJ1bmsKKzYwODQgZmRhM2MwOThjODk5NThmNTI5MzY2M2Y5NTkzMGEyNTdiMGM2ODFiYyBsZWdhY3ktdHJ1bmsKKzYwODUgMGU1YTdiMjIwMTZjZGVlMDNhYjIyNDEzZWU2MGYzYTE1NTA2NjA2OSBsZWdhY3ktdHJ1bmsKKzYwODYgNmU3MzU4NGNmNTc1ZWVkYTc1NjdmOTZhMjRlMDhlNmMxYTI0YjA5ZCBsZWdhY3ktdHJ1bmsKKzYwODcgYTNjOTdlMjA1ODQ3OTM0MmE4ZDk1NTdjZGViZjZmZGI5NDU5ZDg4NCBsZWdhY3ktdHJ1bmsKKzYwODggZWY3NTk2NjlhYTA0MjYyOTAzMjRlYmI4M2Q2NWQxNjRkYjY2ZGExMCBsZWdhY3ktdHJ1bmsKKzYwODkgMjhjMGRmMWNlMjg0NDk4MjM0NDgyMzg4ZjcxNTJkMTUzZDY4ZjMwNiBsZWdhY3ktdHJ1bmsKKzYwOTAgZjE1OGVkY2NjNzJjY2I2M2ZmZThiMWE1OTU5NjAyZjlkZDNkZTgwOCBsZWdhY3ktdHJ1bmsKKzYwOTEgYjc1ZWRjMGU2MzMzZWU2MGM1NjJkMWJhODBkMjZjMmU2NjZmNzNjZCBsZWdhY3ktdHJ1bmsKKzYwOTIgZDQxZDg5ZWI0M2U1MGNkOWJmOGI5Zjk1ZmM3OWYwMGEyMmU5MmY5ZCBsZWdhY3ktdHJ1bmsKKzYwOTMgNWE5OGE0ZmQ1OGI4NDIxMDEyMTJlYjgzODUxZmIyMjY5ZTBkNjAwYSBsZWdhY3ktdHJ1bmsKKzYwOTQgOWU0NjY1N2JiOWU4NDc5YzhhYzk4NmM5ZGNiOTdkMGM1YWU0MjM1YSBsZWdhY3ktdHJ1bmsKKzYwOTUgYmQ2ZWFhMmI0MWFjMzYwNzBlNGFlYmUyNWU1OTU1NjYzNzljMTJmYiBsZWdhY3ktdHJ1bmsKKzYwOTYgZDE5NWI4NzFlNzA0NGUxOWQ1OWJmMTlhNjUwMjZmNzRhNzI5ZjIyOCBsZWdhY3ktdHJ1bmsKKzYwOTcgMzQ0MDc3N2YwZTY1NmFjZTNlZDM4MDRiYzM2ODQxM2JkMDQzNDVkMSBsZWdhY3ktdHJ1bmsKKzYwOTggZTU0ZDM5MTA3MjQ5NTZmMmEwNjg5MGNlNWFkMmVlNWMwOGFkZWQ5ZSBsZWdhY3ktdHJ1bmsKKzYwOTkgMmViN2U5ZTIzNmJmNTdjZjA5ZDNkOTkwMmUyODJjNGMwZTk1NjVkZSBsZWdhY3ktdHJ1bmsKKzYxMDAgOTg1MTM0Mzc1NjcyMzZkODJkNGE4N2FjOWE4ZmJlZWE1NGM5YWUyNCBsZWdhY3ktdHJ1bmsKKzYxMDEgNDQxNjFmYjA0YjdlODM0YmZjNzcwOWJkZGQ2OTc5MWQwMTMwMjZlNiBsZWdhY3ktdHJ1bmsKKzYxMDIgYTdlM2JjMmE3Y2FjNDc5ZDQwODkzMzQ5Y2Q0YzJmMGJhMDNmYWUyYSBsZWdhY3ktdHJ1bmsKKzYxMDMgM2FiY2Y3MjVjNWY0MDk3NzYyNjczYjAyZDkyN2FkMWZhNDNmYTgzNCBsZWdhY3ktdHJ1bmsKKzYxMDQgODk0MTc4OTVkOTYzY2VkYzI1MDFkYTIyZDIyZTUwNTVmNzE4YzA0ZSBsZWdhY3ktdHJ1bmsKKzYxMDUgNjc2OGJiZDE4ZTA5OTgwYTcwN2I5ODViNWU2MmRkMGIyYjg5MDQ1YSBsZWdhY3ktdHJ1bmsKKzYxMDYgNmMwMDg2ZjkyNzBjZjk1MTNjYzQyYjliODU4NTc5ZGRkNDk0ZTdjMyBsZWdhY3ktdHJ1bmsKKzYxMDcgYzI4M2I3YmJkYTA5NTJiMjcyZDdiN2E4NTlhMGQ5NWVlNWE2Nzk5ZiBsZWdhY3ktdHJ1bmsKKzYxMDggNzAxODM1OTIzNzBlNzRlYTYzZmVkNjMxNGQ1MDc0M2E0MzVjYTJlYSBsZWdhY3ktdHJ1bmsKKzYxMDkgOGQ1MGE5NmY4NjgwZWE4MTFlNTAyMDBiYTU0MGE2NjY5NzE0ZjE5OCBsZWdhY3ktdHJ1bmsKKzYxMTAgZTRmYWFkYjRhYmUyZWRiNGUxODFkYzM5NzU2YWVjN2I5Njc1ODkyYiBsZWdhY3ktdHJ1bmsKKzYxMTEgZDA0OTc1ZGI1MmRjZjNiNDcwMjhlZDgyMmEzNzhmZmNkN2JlMWIzYiBsZWdhY3ktdHJ1bmsKKzYxMTIgMGQxNDYzYTQ1YjZmNTVjNjg1NzcwMGU2NjJkZWVkMzhiYjhlNWQ4NCBsZWdhY3ktdHJ1bmsKKzYxMTMgMDE3ZDMzNTZhNWVkMDQzMGZkMTM1OTVhMWIwN2I2ZTk0ZDA3MTQ2YSBsZWdhY3ktdHJ1bmsKKzYxMTQgNDllZTg5ZTAxN2FiZTUyNmM2MGYzYjJlYzliNzkzNzVlNDY3MjBiNyBsZWdhY3ktdHJ1bmsKKzYxMTUgNTY0ZmE2ZjE4NWE3ZDdjZDZmZTY3YzM2MmUxYjUzZDFlNzQwMjUzMyBsZWdhY3ktdHJ1bmsKKzYxMTYgMTZjYThmMGYzZjExMjQwMWEwZmM2NWYzNjZmMjcwMjhiZjM4YjRiNSBsZWdhY3ktdHJ1bmsKKzYxMTcgYTlmYjVhODk1ZmExYzMyZTZmYmFhYWJjNWY2ZDQwYmYwNjgyNjUzZCBsZWdhY3ktdHJ1bmsKKzYxMTggNjNjZGZiYjRhMmJiOTljNDEzNmIyOTQzODRhZDhkN2I4YmVmMDI5YiBsZWdhY3ktdHJ1bmsKKzYxMTkgNWQ2ZmUxNDVmNzczYTIxNGFhYzIzOGYxZWZiZTE3NDIxZDNmMzg5YiBsZWdhY3ktdHJ1bmsKKzYxMjAgMDYwMmRiMWQxZGZmN2E1ZjdlNWM3YWVkZWY1MTU2OGFlNzAyM2VjMiBsZWdhY3ktdHJ1bmsKKzYxMjEgNzI4YTM5YTNlMGQ1NTA4NGU1YWJiY2MzZjNmODdlN2UyMzE3MzVlOCBsZWdhY3ktdHJ1bmsKKzYxMjIgNTMwOWNlZjhjMTY5MmNjMjVmNWU2MTA0ODlkMWYzMGJhYWFmMGE0NSBsZWdhY3ktdHJ1bmsKKzYxMjQgNjZlZWFiNWE3NThjNjczMmYyMjQ2NzBkMTI1ZjE4NmNmYjY3YjM4ZSBsZWdhY3ktdHJ1bmsKKzYxMjUgZjg5ZmE3ZTk1Yjg0MDk1ZjQyYTE4Mjg1NGQzNGExZjFjNmM0MzhhZSBsZWdhY3ktdHJ1bmsKKzYxMjYgYWRlOWY5OTY1OTBhNWU3OGY1YThiYjA3OTJmMDcwMzU5OTUwNGI1YSBsZWdhY3ktdHJ1bmsKKzYxMjcgOWFjMWUwZDU2Njc0MTNjZmQ3ZTY4OTk4MGE1OGJmYmIwOTBjNmE2ZSBsZWdhY3ktdHJ1bmsKKzYxMjkgMzViZTVkZjZlZjc3MjJiOGY1MGEyMzVlYjFmMmNmNjE5MTFjNzc1NSBsZWdhY3ktdHJ1bmsKKzYxMzAgODI1YmQ4YzExYjFjMWFjNWM0OTZiYzdhY2ZjMmQ5ZjhjNDZhZGE2OSBsZWdhY3ktdHJ1bmsKKzYxMzEgMDU4ZDgxZDFkNTZkOTMyNmUzNzdkZTUzMDBmNTA5NjA2NzBkZTI2NiBsZWdhY3ktdHJ1bmsKKzYxMzIgYmQ2ZDAyOGQ5OGZjZWY0MjQ1MjViMzI0MzcyNjBkNTMyZGQ5OTNkZiBsZWdhY3ktdHJ1bmsKKzYxMzMgMzk5NDcwYTk1OGMyMmQ5N2NjYjg2M2U2Nzk0YzNmODk3ZTg1ZDc4YyBsZWdhY3ktdHJ1bmsKKzYxMzQgMDcxNjRkMzA0MjlkYzZkZDA3MzYyZWMyMGJjMmE5MWYyNWRkY2I1MyBsZWdhY3ktdHJ1bmsKKzYxMzUgYWQwM2UyMWZkYTU0YmNhNWMxMmVlNzc4ZjhkN2I4MTgwMjU4YWQ5MiBsZWdhY3ktdHJ1bmsKKzYxMzYgNTE4ODM3NDM3N2FlOTk2MjVmZDI1YmVhZTQ1Y2Q2Nzg0NTM2YWUyZSBsZWdhY3ktdHJ1bmsKKzYxMzcgNTU2ZWM4MmY0ZDkzOWUxNWYyYzZiZDUyOTU3NzRiZGQ4Mjc5ZGEyZSBsZWdhY3ktdHJ1bmsKKzYxMzggZWFiYmIzYzE4MThmZTQyOTYyYjFjMTVhOThhNjljZDA4NmE4M2E4NyBsZWdhY3ktdHJ1bmsKKzYxMzkgYWI5MjQ4MGZhNGVjYjNjOWIzMGQzNDM1NTUxOGY3Nzc4YmJiMjliYiBsZWdhY3ktdHJ1bmsKKzYxNDAgMWQxMzRlY2RhMDk0ZWUxNzdjODBiZmM3ZDEwMTRhYzM4NzRjMTQ0NSBsZWdhY3ktdHJ1bmsKKzYxNDEgMTY0MTNlZTU4OTY3NzQ1Njg0NzUxNDk3YTNjZmViYTBhZDBjNTM3ZCBsZWdhY3ktdHJ1bmsKKzYxNDIgOWE4YTQwZjIyMThjOWNiMjYyNjU4OGUxZmMxNTg1MGFkOWY2NDU0OCBsZWdhY3ktdHJ1bmsKKzYxNDMgY2VjMjdjOTNiNWNiODM0YzEwMTczN2RkNTEzZTYwODE0YWFjZmNlOCBsZWdhY3ktdHJ1bmsKKzYxNDQgZjZhY2U2MWMzZGZlNjRlYTM3ZWY5ODBhZWUwMDFlYjM0OTQwZDJjNyBsZWdhY3ktdHJ1bmsKKzYxNDUgM2VhZjJjNjczYTExYTc4OGZiNjI0NGFmMjIyM2IzY2JlMmJkMTA4MiBsZWdhY3ktdHJ1bmsKKzYxNDYgZDYxN2RlMTU3NzRiMmU3Yjc1YTJiNzY0N2FlYTdjOTA2MGFhYzIxMyBsZWdhY3ktdHJ1bmsKKzYxNDcgNzQ3NjRiM2VjMWJkYjc0YTVlNjU5Mjc1NjI0NmY5YWY3ZGZhYWRmMyBsZWdhY3ktdHJ1bmsKKzYxNDggYjA1MzE1ODE2NTc5ODMwNDUyYzA0ZTI5ZDlhMmQzN2YyMzg0ZjZlMSBsZWdhY3ktdHJ1bmsKKzYxNDkgYmRkYmFhNTFhYTVhOTMzMThhZmViOTJkYWIyZTRlNjNhZTVlZDdmNCBsZWdhY3ktdHJ1bmsKKzYxNTAgYjg5ODA3MzVkMDNiM2UxNDA5MzhhNjQyNDYzZmE5NDQzZDczZDhmZSBsZWdhY3ktdHJ1bmsKKzYxNTEgODcyMWZhZmRiNjdhYTliNWE5MjJkMjNjZjg3YzhmMjMyZWZjMDVkOCBsZWdhY3ktdHJ1bmsKKzYxNTIgYTUyN2Y0NDljYTI2NjYxZjVkMjkwZDM2N2QxMDMyNzZhYWQzOTJhZSBsZWdhY3ktdHJ1bmsKKzYxNTMgOTQ2NmVhYmI2NjlhNmNmMjY2ZmVjNjU1YzFjNzI2ZDczZTAyNjhhNyBsZWdhY3ktdHJ1bmsKKzYxNTQgZWMzOTI2NDMxMWZmMjQxNGZhZTAxYWVkNzQ3OTI2YzkxMGI5MGI3ZiBsZWdhY3ktdHJ1bmsKKzYxNTUgNjA2YzM4NTM1ZjMwNDUxMzQ3ZDE5NDY2OTBmYWViZmU2ZTE3ZmI4YSBsZWdhY3ktdHJ1bmsKKzYxNTYgYTEzNjJhMDYzMTIyNTIyZmNjYzE4ODAxZDc2NTM2ODZlMDIxNDM3MyBsZWdhY3ktdHJ1bmsKKzYxNTcgYmRiZGE5MzliOTk5OGY4YWU4YjZkNTFlNTUzYmNiMTM2YmE3YjViNiBsZWdhY3ktdHJ1bmsKKzYxNTggZDhmOWRmYzc2YmJmYzhkZjk2ZmYxYWQ4YWI2Y2Q3NGM4YWVmOWZjZSBsZWdhY3ktdHJ1bmsKKzYxNTkgYTc5YjhkODE5OTdmZWFhZDljZWQyYzE0YjRiMDkzYjkwZDJiYjY2NyBsZWdhY3ktdHJ1bmsKKzYxNjAgNmRmZDc5OTQ0ODcyZmMwM2M1NDk3NDkzYmE5YjEwOTI2ZDllYmMwMyBsZWdhY3ktdHJ1bmsKKzYxNjEgNGEwN2ZlMWUwYjUwM2NiNWJjYWM0OGQ2Njc2OGY0MjYzYTRhZDMwYSBsZWdhY3ktdHJ1bmsKKzYxNjIgYjVkMTc0MWRlZDRhNWE0OGVhZjA4YTA1YmNhYTZkNWFjYTMzMTY4ZSBsZWdhY3ktdHJ1bmsKKzYxNjMgOGRjMWU3NGMxNjk1NmViMjAwZWM2ODNhYWY1ZDg4OTE0YWE1YzdmZSBsZWdhY3ktdHJ1bmsKKzYxNjQgODE4ZWUxMTUwNTRhM2I5Y2U5NjAxMjJjMTE3YTgxYTE1YTA3NTE3YiBsZWdhY3ktdHJ1bmsKKzYxNjUgNTgxZjA3M2YwNzFkN2Q3NzBmNDcyZjcxOWNiYjUwMmMzNGZhMzAyMiBsZWdhY3ktdHJ1bmsKKzYxNjYgMTQ1NDEzOGM2ZjJkNDBjNWEwYjU2MDY4ZGE4YmZkNzA2ZWYwNDA2MSBsZWdhY3ktdHJ1bmsKKzYxNjcgNjczOTBjMWRhZWJlZGRjZWVjZjQxY2RmMTFiNDVjYzA5MzE4MGNhNiBsZWdhY3ktdHJ1bmsKKzYxNjggODFmNTM1Y2ExZDk4Y2Q0NmE2OTU4OWE2NWZlMGQyZmQ3YWMyZGIzZiBsZWdhY3ktdHJ1bmsKKzYxNjkgOTdiMWMyYTcwZWFlMTFmYjdjZDQzOTljMGU5ZDJlY2JlYjg3NGVlOCBsZWdhY3ktdHJ1bmsKKzYxNzAgZTIzYWZiZjc3ZWZkZjk1NGIzZjljYmFmOWIxYWQ2NWZmOWFjOTk4MCBsZWdhY3ktdHJ1bmsKKzYxNzEgOTMxMDg2Y2I4NTI5NTAzMzdhODg2Nzk1ZmVlMThmNTZjMDI0YzdiZSBsZWdhY3ktdHJ1bmsKKzYxNzIgZjA0YmViODBmODE2NzdhZjBmZGY2MThkNGE2N2EzYjUzZTI0ZTQzMSBsZWdhY3ktdHJ1bmsKKzYxNzMgMzQwODc1NmVjNjAxODkwMTdkMTQ2ZDBlZGRiNmYyNDc0YWU5ZjM0ZCBsZWdhY3ktdHJ1bmsKKzYxNzQgZmY3ZmE1OWY2MmU4OTM0YWI3Yjg0NTc0Y2I3ZDFlNDM0YzY0Y2QyZSBsZWdhY3ktdHJ1bmsKKzYxNzUgMTcwMzA1MTVmNjIzMjc1NGQzNTExMmE1OWQ4Y2YyMzBmZGNiMTUxMiBsZWdhY3ktdHJ1bmsKKzYxNzYgYzg2N2MyOTRiMTZjMDgzYWE5NjY3ZWQxODE5ZTYyMjg3ZjA0YjQ5MyBsZWdhY3ktdHJ1bmsKKzYxNzcgZGI1NzcwOTRmNjg1M2UxNTc1M2JlOWNiZDRiMDE2NmEzNmI5MGEyNCBsZWdhY3ktdHJ1bmsKKzYxNzggMGU5Nzk1MDA0Y2QyNjc2ZmNkMThlZDM2NzU1ZjE0YTg0ZjE0M2UwYSBsZWdhY3ktdHJ1bmsKKzYxNzkgMGY2ZjBlOThlM2I2NGI0ZTUzODFmZmUwYjY5NjBlMWQ0OWM3Y2Y3MSBsZWdhY3ktdHJ1bmsKKzYxODAgZGFkNGQ0MzM2M2Q4ZmUxZmJiODg4MDA1NjE2NzAwZjkwYTlkOGEyOCBsZWdhY3ktdHJ1bmsKKzYxODEgNzg3N2RlZjk0MDYzZDQ3MTQ5Y2ZmNWI5YTMwZTlmYzE0ZWE0ZThiYSBsZWdhY3ktdHJ1bmsKKzYxODIgYzA0NTMxZmMyNzA5NjkzOWMzMTQ0OGVlYWI0ZmNiNWM4Njk2N2QyYSBsZWdhY3ktdHJ1bmsKKzYxODMgOGU0Nzk4ZDIxOTE1ZWZjYWIzY2FjODdhZTRiZDU5NGQ4ZDQ4ZTgxOSBsZWdhY3ktdHJ1bmsKKzYxODQgYWRjODY3MDdmYTk2Mzg5OWI1OWUyOTI5N2UyZjRjM2VjNzcxOGE1MSBsZWdhY3ktdHJ1bmsKKzYxODUgYzEyMGE0ODNkNTkwOThkNjY5MWZjYTUzNTQ1YzJmODFmNzk0NjIwMSBsZWdhY3ktdHJ1bmsKKzYxODYgNWMyNThlZmZlODFjNGQ5NWJjNjA0NGY2NmE2MGUxM2EwMWY3NzE3MyBsZWdhY3ktdHJ1bmsKKzYxODcgZGU1Mjc5NDAyYjk0MzhjZGY2NDMzYzM3MzM4MTYxN2FkYTdkNDUwMiBsZWdhY3ktdHJ1bmsKKzYxODggNTAxMjE5MWVjMmRhYjE0YmJlYjQ3ODg4NzgxODA1OGNhY2YxZjM1MiBsZWdhY3ktdHJ1bmsKKzYxODkgOWU1NDRhMmMxOWEyZGE3MDg5MDk3NGI2YjEyMTNkNDg4YTY4ZDU2ZCBsZWdhY3ktdHJ1bmsKKzYxOTAgNzZlNWYzNTk4ZTY5YjRhMjk5MTkxODUzNWYxNDgwYzViM2E2ZmZkYSBsZWdhY3ktdHJ1bmsKKzYxOTEgYjM0MWRlZjRlZWY4Y2JjNjJhMDczNTY0Mjc4OTU2OTQ0ODA0Y2QxMyBsZWdhY3ktdHJ1bmsKKzYxOTIgMzIyZjYxZTRjMzg3NWFhNDgxNTY3MTYwYzNiODgzNTMyNmE5MGUxNCBsZWdhY3ktdHJ1bmsKKzYxOTMgYjJiMDYzYWEyNzU1MTBkNmJjYzQ4NDk3MWI1MDBmM2Y2OGY0Yzk4YyBsZWdhY3ktdHJ1bmsKKzYxOTQgNDNhMzdlNmI2NDY5YTRkMjFhYjBmYzNjMjY1YzA1NzNkMjM1ZTk5NiBsZWdhY3ktdHJ1bmsKKzYxOTUgMjY0NDJiNWY5Y2ZkODQ3YjYzYmUyNzgxZDRmYjNjY2I0MDliYmNjYSBsZWdhY3ktdHJ1bmsKKzYxOTYgMGZmNWJkOGViYjAxYTYwYjcxOWE3NjYzYTA5YzcxODhlNGMyZWZiNSBsZWdhY3ktdHJ1bmsKKzYxOTcgNjU3NzkwZGIwNmUzYzU5NDVkOWU3YWQ5Y2ZjMWNiZWMxZjY1ZDI4NyBsZWdhY3ktdHJ1bmsKKzYxOTggYTEwYTBmNjAxNGM0OWE1ZmJkMWE0YzM0Mzk1ZTI4ODJmODU1ZmY1ZCBsZWdhY3ktdHJ1bmsKKzYxOTkgNmYzYzdiMmYyYjhkZTgyOGIyNjY4MmQzOTk1ZjNmYmEyNzgwZjlkNSBsZWdhY3ktdHJ1bmsKKzYyMDAgMDY4NTU2MzgwY2IwODYxYzVmOGMwMjQ0MzBkYTE2MTdkYzgwZmVlYSBsZWdhY3ktdHJ1bmsKKzYyMDEgYmE4NGQ3ZTg1NTRiNWVjZDRmY2Q2OWQ1NzY5NzY0YjZlYWQzM2YwYiBsZWdhY3ktdHJ1bmsKKzYyMDIgZGUxY2IzMzIxOWUzMTE4YTNmOWVhMjA5MjFlYTE4MWE2OWU3N2U1NyBsZWdhY3ktdHJ1bmsKKzYyMDMgNTIzZjQ5YTFlNDJhNTcwOTg4ODI1ZmFhZjZkNjk2NWRiOTQxYmYwMCBsZWdhY3ktdHJ1bmsKKzYyMDQgYjI1MGIyNzBkYmQ0ZDBlYjA0MDEzNWRlNjY4YzhlZmEzNjZmYmIxNyBsZWdhY3ktdHJ1bmsKKzYyMDUgMDRjMDc1MzhjYWM0ZGI3NzJjZDE2MTI3OTVjMjM3NjQ2YjlhODlhNyBsZWdhY3ktdHJ1bmsKKzYyMDYgNDY5MmNiNDYwMDhlZTBjOWU5MzNmNmQ2ODc4YWE0MDVjM2JlOGY3NSBsZWdhY3ktdHJ1bmsKKzYyMDcgNmM5YzJhYzE1ZTRiMDE3Zjc0ODZiYmJkOGMxMTdiNGQwYzIzMTM3NCBsZWdhY3ktdHJ1bmsKKzYyMDggNmIxYjY2NDg2M2Y0MDk0MDI1ZTdlMGI1ZGFlMGM1NGNkNWIzN2FmYSBsZWdhY3ktdHJ1bmsKKzYyMDkgY2U3NGJiYThhNmE2ZDE4YmNlNzdjZTZiYzcyNDFjNzk5Mjc0N2JjZCBsZWdhY3ktdHJ1bmsKKzYyMTAgNzk1MjQ4MjlhNzMwNjY2ZGNiMWI0ODQ0MjEyNTE0YmE1MjNmOTI0YSBsZWdhY3ktdHJ1bmsKKzYyMTEgZTQ4MDdhMGMxMDkyZGUyZWNkNDA2ODU1OTdhNDI4OWM2YTI2MzY4OCBsZWdhY3ktdHJ1bmsKKzYyMTIgZWY1OWI0ZDAwMTM0OTA3YWQzOTI4NmQ5ZTQ4NjUzNmFjOWIwNDJiOSBsZWdhY3ktdHJ1bmsKKzYyMTIgNGZjODVjODJjYzIyMjU1NGFlNmI5YzBiODc3NzZlZDVmMmI3MGM2ZSBsZWdhY3ktdHJ1bmsKKzYyMTQgYjIwNzg3NmRmMjlhY2FjMDcyMjFhYTI2MDRlMGVjMDE3OGFjNDJjZSBsZWdhY3ktdHJ1bmsKKzYyMTUgZmZkZjFmMDZjZjhiNWMzNjNmOWM1NDc2Mzc5ZmY1Zjk1ZjdlNGJmOSBsZWdhY3ktdHJ1bmsKKzYyMTYgNjA4MGIyZWJjMWYxNGE1YzQ1YzIxMDc2NjBhNzVkYWNhZDkxMjg1OSBsZWdhY3ktdHJ1bmsKKzYyMTcgNzUwNDg4NGU4YTc0ZmM2MDdhODg2YTIxZWY1MjZmYTJkNTQ0NzU1MiBsZWdhY3ktdHJ1bmsKKzYyMTkgYWM3MDE4YjU3NzQ1NmNlYmIxMTZhNzUwZmUyMmNlNjRiOWRlNzMwYiBsZWdhY3ktdHJ1bmsKKzYyMjAgNTZkMzM1MGNhMWYxNzJkNjJlZGY5MzFiNTMyYjMwYjExMTVjOTY3MSBsZWdhY3ktdHJ1bmsKKzYyMjEgMTFlMDNkN2E3Mjk4MDVkZmVlZjc0NGE1NWM1MGU5MzM1N2JiNDA4OSBsZWdhY3ktdHJ1bmsKKzYyMjIgYTIyNDM4ZTk0ZmU5NzRiNTE5MTM0ODNhNTI1MjlhMzE1MmMxNWU3ZiBsZWdhY3ktdHJ1bmsKKzYyMjMgMmRiNjM2MzQ1OWNhZjFkNjlkZTJhOGJhYWMxNmZkMDM1YzE0MTk0MCBsZWdhY3ktdHJ1bmsKKzYyMjQgMzUzN2MwOGMxZWZmYmFiNDQ3MjM2YjhjMTJhYzNmMzI4Njk4ZDcxYSBsZWdhY3ktdHJ1bmsKKzYyMjUgOTdkMjI3OGEzMzFiOTQ1ZDQxMzFiZTMzZDU5MjgwZWM2YWQwZmJmMCBsZWdhY3ktdHJ1bmsKKzYyMjYgZDIzZmVhMjQ4YTFlYzI1YjFjYzE3N2ViNWRmNDg1NmMxNGVlYjFhOCBsZWdhY3ktdHJ1bmsKKzYyMjcgNjU5OGE1MTg2NjhmNzdhZjI1OGFiYTVhZjI3ZDljZDczMDFmYTlmNiBsZWdhY3ktdHJ1bmsKKzYyMjggODJiYjdkMmE2YjMxZTZmNTBlZjQ0NDllZjcwZjE3YWIzOTg5NTc1MCBsZWdhY3ktdHJ1bmsKKzYyMjkgMTViMWIwM2FkZTkzZDcyY2RlNTAxNzUwYjRlM2MxYjZlMTc5N2ZjMyBsZWdhY3ktdHJ1bmsKKzYyMzAgYjkxNmQ2MTRlMzYzNDY4NWFlNjU1ZDViODYyYmNjYWQ2MDc0OGE4NiBsZWdhY3ktdHJ1bmsKKzYyMzEgNTY3NDZlZWRmZTAzNzg5NzRiOGMzNDAzYjVlM2E4MWMyOTg0NDY0ZCBsZWdhY3ktdHJ1bmsKKzYyMzIgYmY4YzIzMGRmNWU4ZGQzMjBlMmMxNGZmNDQ1NTJiMGRlMjk0MGY1YyBsZWdhY3ktdHJ1bmsKKzYyMzMgZTYwMzYwMWM2OGNmNDQ2OGU1M2YwNjY1MzMyYjNmODUxYWY0YWNiYyBsZWdhY3ktdHJ1bmsKKzYyMzQgYzU3YjM4ZTQwYjJkYTUwYzc1ZWNlYWEyNTJkNzhkN2Q1NjBlMDg2NSBsZWdhY3ktdHJ1bmsKKzYyMzUgYmI0Y2MzZmE2MDAwYjA5YmRhZjdjMzhkY2U2OWY1ZjVlMDBkNjhjMSBsZWdhY3ktdHJ1bmsKKzYyMzYgMjlmZTZhMGRlMzY2M2I4ZDQ1YzJjNzQ5M2ViNWI0ODQwYWNmODRmZiBsZWdhY3ktdHJ1bmsKKzYyMzcgZGI1NDg4ZmU0OTViMmEwMDU5M2JiOTEzMDk1Zjg5NDEzOWE1ZWYzYiBsZWdhY3ktdHJ1bmsKKzYyMzggNTE2NDkwYzgxOTJjZGZiMDE2ZmExODViOTI3YzIwOGI3MGZkZDY4OCBsZWdhY3ktdHJ1bmsKKzYyMzkgNGI1ZGVmNDA3NzNjZWFmYTU3NWZjZTViMjA4YWVlMzNiMGM3OGRiMCBsZWdhY3ktdHJ1bmsKKzYyNDAgZDFhZTBlYTlhNTg1ZjkxMmQ3YWEzZDAwNGZmODE3ZDBkZWExMTJmOCBsZWdhY3ktdHJ1bmsKKzYyNDEgMmI4MTBhM2M3ZTQxNGNhNDJlNmM4OWI0YTEzN2I0Y2JkMGU0NmVjMiBsZWdhY3ktdHJ1bmsKKzYyNDIgN2NkYzBjNzE0NmQ1MGFjMjE5NzNmNTA2MGQ4Y2VjNjcxZGI4OTE4ZiBsZWdhY3ktdHJ1bmsKKzYyNDMgZDA5ODgzMThiNzU2OGM2YTUzZWJkYmUyZmNkNzliODcxZWRjNDM2ZSBsZWdhY3ktdHJ1bmsKKzYyNDQgYzhkMGY3ODIyMWNjMzZlODE3ODZkNjQ3NTA5ODllODdhZjBjNDcwYiBsZWdhY3ktdHJ1bmsKKzYyNDUgNmU0MGEyYTNlNmVmMGM0YTM5ODYzMzYwOWEyNDEzZWEwNmY4ZTM0NSBsZWdhY3ktdHJ1bmsKKzYyNDYgNGM3OGQ3M2M1NjY3NTcyM2NiNzczZjIzZDBhMmFjZjQyNmI1Y2MyMCBsZWdhY3ktdHJ1bmsKKzYyNDcgYWIxMTBiMWU5MmZmYTE4MmVhYzRkNjkzZTAyN2U0MzRjYjNiNjhkYiBsZWdhY3ktdHJ1bmsKKzYyNDggZWNjZmFkYTQ3ZjI4NWFiNGE5YmZhYTU0NWVlNGIyMWVjZDc3YWRkZSBsZWdhY3ktdHJ1bmsKKzYyNDkgZjM1ZGRlN2Y0MTQzZTVmNjEwYmFjZWQ5NmNhMjBmMzk5YzMwMDIxMyBsZWdhY3ktdHJ1bmsKKzYyNTAgZjk5MDdmNTczMjdlYzU3NjM4ZDdhOTIwMWVhNDdhM2NkY2M3YjY4OSBsZWdhY3ktdHJ1bmsKKzYyNTEgMTBiNTA2MWY2Y2JjZjg1NGM3ZTgxYTUyZGM0OTA5NGQwOWEyM2UzNyBsZWdhY3ktdHJ1bmsKKzYyNTIgYWMxMTRhNWZjOGZmODQ2ZTc5ODIxODM4M2NmNGJiNDFhZjdjNjZkYSBsZWdhY3ktdHJ1bmsKKzYyNTMgMjdjMzc3NTc1ZjRhYzRkZDlmNGZiMmIwOGFhOTk4MDZiNDFjNTRiNyBsZWdhY3ktdHJ1bmsKKzYyNTQgM2ViMTY5NGVkY2U2YjA0MjlkYzVjZTg1Zjk4YWEwYTY4ZDYzNzc0MSBsZWdhY3ktdHJ1bmsKKzYyNTUgYTYyMDNkMTcxNThiYTUyZTBmZDMzZDhjMjhiMWM0NTlmYWZmNWMzNCBsZWdhY3ktdHJ1bmsKKzYyNTYgYjQxMDE5NTU3YjZlN2NmZjg4ZjJhZTA4ODgxNmQ4MWNlOGMzMTk4ZSBsZWdhY3ktdHJ1bmsKKzYyNTcgMGQ3NDAxMTMxMGNkMWI1YmVhY2RjYWVhODI4NDlkZGE0MWQyY2Q3NSBsZWdhY3ktdHJ1bmsKKzYyNTggNzE4YzhhZjdiZTJhOWZjZTkyMTdiNWViZjI0NjJlYzQ5MjMwNzhmZSBsZWdhY3ktdHJ1bmsKKzYyNTkgNzc2NjM2MGI4NWI4OTFlYTlkYjc4NWVkZmViODViM2RjODdhZmJhMyBsZWdhY3ktdHJ1bmsKKzYyNjAgYjY1MzY4ZWQ4NmJlODlkMTdmYjliMWE5NTg5YWRjYmJlNjU3M2M0NSBsZWdhY3ktdHJ1bmsKKzYyNjEgNDY4ODM3YWQ0NWYzODIzYWM4OTIwODQ4OTg0YTUxZTk1NmFmODE4OCBsZWdhY3ktdHJ1bmsKKzYyNjIgN2U2NTM2NzMwZDBlZWVkMmJiODlkZTI5MTRjZjUxNjE4MTYwNjVjNyBsZWdhY3ktdHJ1bmsKKzYyNjMgMmY1NzM5MmIyZmRlMTI5YmM2ZTMwOTk0NjcxNjQzMjcyOWMzODMwYiBsZWdhY3ktdHJ1bmsKKzYyNjQgZTllZTRjOTA1YWJkMjhmNzJlODcyZWRmY2I1OWExOGI5MTFkNmVjZSBsZWdhY3ktdHJ1bmsKKzYyNjUgY2EwMmQ5Mjc4MTgwMTFiN2YwOTY4ZTI4MTc2NGY5NDVhNTg5YmE5OCBsZWdhY3ktdHJ1bmsKKzYyNjYgZDFjNDdmNGYxNTQxNTAyM2Y5NjkwZmFmMzdiNGVjMjlkOTY3M2E5NyBsZWdhY3ktdHJ1bmsKKzYyNjcgMWYyMGY1MWI3MDBlNDViOGMzNjUyYWIyNmZmZjU4Y2E5MjY1ZGRhMiBsZWdhY3ktdHJ1bmsKKzYyNjggZWM2OTYzYzM3NDFjMTY3NDA3MjY2ZmNmNTU0OGNjNDY3MDJkZTVlOCBsZWdhY3ktdHJ1bmsKKzYyNjkgNTFhN2M4ZmU3YzdiMjkyNmQ4YWMwNGYxODc4YzBlYWM2YjY5OTg3MCBsZWdhY3ktdHJ1bmsKKzYyNzAgYTgxNmFiZTg2ZjkwNDRkN2FjNjVhYWQzYzBmNzA3YWRjMDc1NGY4MiBsZWdhY3ktdHJ1bmsKKzYyNzEgMmYyNzUwMWRiM2MzZTQyN2UxMTM2Yjk1YTk2MmE3MjdjMGUxYzY1YSBsZWdhY3ktdHJ1bmsKKzYyNzIgYWNmMzVlZDBmMDI2NDc1MWVhZDAxMzc1ZDM0NWU4ODE0NTI4NzQ4ZiBsZWdhY3ktdHJ1bmsKKzYyNzMgODQzMTIxYTIyNmNhOTQ2MWI4NmRlZjZiNWMyYTE0YjcxMDhlMzdiMCBsZWdhY3ktdHJ1bmsKKzYyNzQgNDhlODU5ZjMyOGNiYzAxMWY2Yzc2ZWE0ZWFiNTI5ZmI1NzVkODJhYSBsZWdhY3ktdHJ1bmsKKzYyNzUgMmVhYTAwODYwZWRjNDYwYjJjOTkyNTc5ZWVlYTc5NmQ1N2U5YzhmNSBsZWdhY3ktdHJ1bmsKKzYyNzYgNDg3NzZiZjRiZDQ5M2M2YzMxMTczYjUwMjVmN2Q1YTk2NDg5MzhiMiBsZWdhY3ktdHJ1bmsKKzYyNzcgNGY3Mzk2MmFhYmE2YmFjODY0Nzg1YjJlMjA2OTc2YWJhN2NlODU2MCBsZWdhY3ktdHJ1bmsKKzYyNzggOTM4NjhjN2ExNWM5MGJlZWI4OTQ0MTk4NjIzM2FiZTZmZGI2ODRhMyBsZWdhY3ktdHJ1bmsKKzYyNzkgNDI2ZTc5NmY2MTE1MjE3OWVhNGRiOWU4YTE2ZGMwN2IxNmQyZjUwZiBsZWdhY3ktdHJ1bmsKKzYyODAgMTdhMjg5MWU2MjdmYjg5ZTUyM2Y3MTJmZTY1MWRmMTAwYzJjOTlkZiBsZWdhY3ktdHJ1bmsKKzYyODEgYmYzZjgwOTQxZWMxMWM4YTM3MWM1ODNmYzM0OWJhMGVlNmM5M2Q2NSBsZWdhY3ktdHJ1bmsKKzYyODIgMmRiZDUwODFjNzFlN2JmYmEwNTYwZThkYWZmNDFmOTY4ZGM1ZDY2YiBsZWdhY3ktdHJ1bmsKKzYyODMgYjlhMDQzNGQyY2I2ZjEyMDJkNjRmNDY0ODkzMmNjYTQ3ZWNmMDJiZiBsZWdhY3ktdHJ1bmsKKzYyODQgNmQzMjRmYmFmYWRjMmY5YTM2NTkzMmE5MjczMzIwNmMxN2Q2Mzk2YyBsZWdhY3ktdHJ1bmsKKzYyODUgY2EzNmUzMDhlMzNkOWRlMjczZjFhNjk3Nzk2ZDQ5YTIyZWU3ZDYwYiBsZWdhY3ktdHJ1bmsKKzYyODYgMzFlMTAwZDlkOTI5YzhiMGQ4YmFhNzYxNjE0Y2RlZDE1YWFhNzA0YSBsZWdhY3ktdHJ1bmsKKzYyODcgY2M5MmZhMmNkODZiZDhlZTZkZjc2NmQ4NGEyNGMyNmY5MzkxNWYyZSBsZWdhY3ktdHJ1bmsKKzYyODggODlkNGY1ZGVkNjcwMzc3NjA5OTk3ZWVlMWIzZjNiMzMzNjQ1N2NiZSBsZWdhY3ktdHJ1bmsKKzYyODkgZjMyNjc2YWIzZjNhMDYxMWQxNzFmODQ5OTBmYWY0ZDk2ZTU5N2QzNyBsZWdhY3ktdHJ1bmsKKzYyOTAgM2M1Y2E3NzI3OTg4M2E0MzEyZTY3MDU5MjI0NjhkOTI3MjFkNzY4MCBsZWdhY3ktdHJ1bmsKKzYyOTEgNWI2YTc5MWFjNmU3ZGU0ZWFkYTI0OWM4ODBjYjkwNDk5MmUzOGYwNyBsZWdhY3ktdHJ1bmsKKzYyOTIgZjdmM2U0YjU2OTNjMTRiZWQzOWRlZjYzZTZiYmRiZjljMTUxYzVjZCBsZWdhY3ktdHJ1bmsKKzYyOTMgMjQwZjgzNGFlZThiYmI0ODQ1ODMzOTQzNDZhOTU1ODcyMjRmYTIzMCBsZWdhY3ktdHJ1bmsKKzYyOTQgZGI0ZWEzYWJmODkxMmM0NzIwOTUwM2U5YzcyMDU2M2MyODE1Y2YzNSBsZWdhY3ktdHJ1bmsKKzYyOTUgOWFhYzM3ODkyZTg4OGZlZDg0OGJhMWRhZDRiNjdhYTRiNjlmMzI0NCBsZWdhY3ktdHJ1bmsKKzYyOTYgODIwYWJhMTA0NmMzOWFmZGYzOTE2OWYyMGY3MzAwMzQ5OWE3ZjhiMiBsZWdhY3ktdHJ1bmsKKzYyOTcgYzNlYzY5YjFmZTM2MDkzM2RkYzY1ZmYyMTNjNWNkZjc4ZTQyMjRhMSBsZWdhY3ktdHJ1bmsKKzYyOTggOTgzMWUwZmMwMWRlMDQ3MjhlOWI4MWZlYTJjZGQ1Mzg2YzAzYTM0NiBsZWdhY3ktdHJ1bmsKKzYyOTkgYmMyMmViNWQ0YTBhMTFiYTY1Y2Q0MjBhNjA1YzIzMzcyYzQxNTRjMiBsZWdhY3ktdHJ1bmsKKzYzMDAgYzM1ZDllMmE2ODYwODMyN2U1MjgyNGQwNGMyNDA5ZmNhMGUxYjlkZSBsZWdhY3ktdHJ1bmsKKzYzMDEgMDliZWJhOTQwOWRkZDRhZjUzMjg3NDAxYzI5NjQyODEyZDBhMmUxOSBsZWdhY3ktdHJ1bmsKKzYzMDIgM2UzZTk1ZGRjZTIyZmIzNDg5ZjQ0NmFhYjVkNWQzMjdmY2YwMjZiMSBsZWdhY3ktdHJ1bmsKKzYzMDMgOTY4NTFmNTFhZDZiZjlmZWRhZTVmNmE0ZWY2YmMxZDhkODM2OGU5NiBsZWdhY3ktdHJ1bmsKKzYzMDQgMDM5YmMzZTRlNjRlYTEyMDhmY2MzOTAwMjIyMTJmNmU2OTgwYjk0YSBsZWdhY3ktdHJ1bmsKKzYzMDUgZjBlZmZmMjhhMjRkZDFkMDU1YzM2YWM1OTNjMGI2ZDRmYWI2MTA5MyBsZWdhY3ktdHJ1bmsKKzYzMDYgNzdkOTEyZjJhYmNiNGYzMzA0MGYwY2I5M2Q5Zjg3NWU3YjQ4MDQ1ZCBsZWdhY3ktdHJ1bmsKKzYzMDcgMzQzMjMyYzFkYzlhMDc0OTM5OTcwZTZkMTUxYzQwYThiM2U5YWJiYyBsZWdhY3ktdHJ1bmsKKzYzMDggZmExNDgwZTYwZWQ2YjQ4ODhjZmVjZjY0MThiMmMyYzk3NmM5ZGUzZSBsZWdhY3ktdHJ1bmsKKzYzMDkgMmIyZWZhNDhmMjhkMjZiOTczY2NjZGRhMDNkMGQ1Y2IzYWY3NmJmYiBsZWdhY3ktdHJ1bmsKKzYzMTAgNWFhYjNmNjY4ZTg0Njk2ZDI1ZDE2NWFlYTczNjI3NDBhZjcyODZiZSBsZWdhY3ktdHJ1bmsKKzYzMTEgMjJlMjliMTc0N2UxMzlkOTU5OGVhYTUxMjZjNTkzMTNhZjM5OTQ5ZCBsZWdhY3ktdHJ1bmsKKzYzMTIgMjZjMjAwMjY2NjExOTgwNmUwMDdhZDM2N2NiODUzODVmNzIyMWRhNSBsZWdhY3ktdHJ1bmsKKzYzMTMgZjY2Njc5YWE4ZGUwYWNlMzZmMzZkYmIzZDdiOTViMzI5Nzk2ZTE4OCBsZWdhY3ktdHJ1bmsKKzYzMTQgMjEwODE2ZDM0OGJhNDVlZTg5MTQ2OTA3OGJjYmE2MmRhMDU4M2RhYiBsZWdhY3ktdHJ1bmsKKzYzMTUgZGUwYWQ3NTI3ZGU3ZmNlODQ3MWU4NjA5NGYyOGI3N2UxY2IwZjVmYiBsZWdhY3ktdHJ1bmsKKzYzMTYgMGQ1NGExNGVmMGI4Yzc0YmZiNjJkNTMzMmYyMzNlNTdlYzc4NjgyOSBsZWdhY3ktdHJ1bmsKKzYzMTcgZDE5MzM4ZmQzOGViNjllODU0MDVjZWUxYTA5YTA3MzY0ZjFlZTZmNCBsZWdhY3ktdHJ1bmsKKzYzMTggZmNkODJhMDE1MDdkMjYyMjk1NTViN2IwOTE0YmNhZWNkNzc1NWRhMyBsZWdhY3ktdHJ1bmsKKzYzMTkgOGRhYjNhZDk2NDAwNmJlZGZlZjhmNTk0MzQwZjMwZDczNjJjY2EyMyBsZWdhY3ktdHJ1bmsKKzYzMjAgOTdkMjRhZjM0OGNmZTgyOWI0MWM3ZDJmMmRhOWQ4OWZmMGExOGM3MCBsZWdhY3ktdHJ1bmsKKzYzMjEgNjlkY2MwMmUzMTM1ZmFiYzczNGU1MGViMTEyODEzM2Q5ZTM3MjFjNSBsZWdhY3ktdHJ1bmsKKzYzMjIgZDFjZmY0OWUzY2M4ZDI4MGE0NmQzY2EyNTU3ODdkMTRjMWNkYTE1NyBsZWdhY3ktdHJ1bmsKKzYzMjMgMGZmYzBiMzYyZmNiYjkzZmFiYmJiNWM1NzhhNjFkYzYyYjdlZDM5YiBsZWdhY3ktdHJ1bmsKKzYzMjQgOTc1MTlkZmM2M2FlYjc5ZGZlOGEwMWZlOTIyZjA4NWEwOWE4NWExNiBsZWdhY3ktdHJ1bmsKKzYzMjUgM2IxMTRmMDMxNWMxNDU2MTQ5MjE2MmFkNzg1YmRkYjhkOWU0ODA4NSBsZWdhY3ktdHJ1bmsKKzYzMjYgMjMxMjZlODA0MGEwYzEyNjJlYTE4ZDBmYWU3MmFkNGQ2NjRmNTVkOSBsZWdhY3ktdHJ1bmsKKzYzMjcgMDQ1N2VhOTRlZjc5ZmFmOWJjNzliZWYxZjI0YThhZmEyZjU0NmUwYyBsZWdhY3ktdHJ1bmsKKzYzMjggNTgzMGVkZTQwODZjNzQ0MDRkNDE3ZGUzMjUxZGNjZTMxNmUxOWQ5MiBsZWdhY3ktdHJ1bmsKKzYzMjkgODNhOTViZjcwODY3ZGJmMzc0ZDdkZTg1OTk3NDRmYTA4YjVlMWZiNCBsZWdhY3ktdHJ1bmsKKzYzMzAgOGI3MWVhNWRhY2M4MzE1NTAyMzlkNzM3OTRmYWFiYTZlZDAxMzUyNyBsZWdhY3ktdHJ1bmsKKzYzMzEgMDg1MzE2NmYwZDY5NjYwZDZjNDMyZWIzOGQyNTcwYWZkNGI3YjdmYSBsZWdhY3ktdHJ1bmsKKzYzMzIgYjYxOTM5NTI0YzNjZWZjYjRhZTBlMjE1MDQ4YzAwNjRkMTZlMDY1MCBsZWdhY3ktdHJ1bmsKKzYzMzMgOGI1OTAxMzk5YWRkYjRlYTIxNjhiZWI3YzkyZjU0MzU0YjFhMGM5NCBsZWdhY3ktdHJ1bmsKKzYzMzQgZDU1Y2RmNDNjMjQwMTljNjQwODllZmEyYzZmODcyNzA3ZmZmYTQ2MCBsZWdhY3ktdHJ1bmsKKzYzMzUgNDU2NmExOWMzNDM4ZDE0ZTAxNmFhMzcwZjIwYzM4ZTdmMTE4ZGQwMiBsZWdhY3ktdHJ1bmsKKzYzMzYgNzgxOTU2ODMyM2MzNzUzZjMyZDIzYjU3MDIxODA0YzY3NzI3MzZkYiBsZWdhY3ktdHJ1bmsKKzYzMzcgNDU5MTAzNTIyOGE3NzNhNTE2YWE0MGU4NTczZjRhNTlkZmJjZGU1MSBsZWdhY3ktdHJ1bmsKKzYzMzggYTNiMDlhNzExNjJiYzIyYmM0YzRiYTM3NjM3NmYyNjA2ZjYzOGQ3MSBsZWdhY3ktdHJ1bmsKKzYzMzkgZTliMzVjYzg4YjUwZTk0MGQyN2JjZGNiMDQ1NzcyYTllYzdmN2E2YyBsZWdhY3ktdHJ1bmsKKzYzNDAgMmFjMmE2MDEyMDViMzM1YmM4NmIwOTE3M2U2ZDU5ZDE0ZjUwOTcwMSBsZWdhY3ktdHJ1bmsKKzYzNDEgNGRkZThjMDQwZjllYzUxNjViZTAzN2ZiZWNjMDNhNWNhNWQ5NTY2YiBsZWdhY3ktdHJ1bmsKKzYzNDIgNWIxNDcxMDk1YTNhMjY3MjFmYjY0MWY0MjU1NjZhNjNiNDI0MjY4NyBsZWdhY3ktdHJ1bmsKKzYzNDMgOWIxOTUyODVmZTE3N2IxNWY0ZGU1NWEzZTRhNjU5NTg1ZmI3MTNjNSBsZWdhY3ktdHJ1bmsKKzYzNDQgNGU5NzkxNjE2NzFmNDM5YWU4NWUyMGJiZGQ1MDI5NTdmZTlmMzBjOCBsZWdhY3ktdHJ1bmsKKzYzNDUgYmMwZWRjNTg5YWQ0OWQ5YjVkNDkwY2FiNTI1M2FkMjRhNGViYzc5OSBsZWdhY3ktdHJ1bmsKKzYzNDYgZGM1YzExMTc3MzM5ODBlOGQ4NzU0MWU2MjcwMzdiNGE3ZTUwYWZlOCBsZWdhY3ktdHJ1bmsKKzYzNDcgMjgzOGRiODNkMGVkMzg2MDRlZjYyOGE0N2QxMGM0MzIwYTM5NTBiMyBsZWdhY3ktdHJ1bmsKKzYzNDggMDYzOGZkYzIzZWVjNGJhNmU2YjNlMjQ4MTg4ZjllNjE3YmQwYzgwMSBsZWdhY3ktdHJ1bmsKKzYzNDkgNDA4ZTM3NDkzNGU1YTQyNGQzMDQzYmZkNjRiODk1YWEyMTc1OTc4YyBsZWdhY3ktdHJ1bmsKKzYzNTAgNDI4NjkxMDA4MGE5ZmVhYWZkZTNmODEzMDc5YjhiZGJkMzc0OGQwYSBsZWdhY3ktdHJ1bmsKKzYzNTEgZmVlOTI4ZjE2NjFlNzc1MmY1NzI2ZmYzODgyYWRkZjAzYjk4MjljOSBsZWdhY3ktdHJ1bmsKKzYzNTIgZDBiNDU2NmUyMTA3YTUzNzQxODEzN2VlMTA3ODllYWJlODI1ZGNhNSBsZWdhY3ktdHJ1bmsKKzYzNTMgMmRhMTJjOWQ3MTRmNDczMmJiZDQwOWU1ODU2NjE4NmJiMmZlMzExNCBsZWdhY3ktdHJ1bmsKKzYzNTQgMzU3ZDczOTVjOTk4Y2RmNjZlYmY2NDZiZTU0M2Y4MzQ2NWNmYzQ4MyBsZWdhY3ktdHJ1bmsKKzYzNTUgYzg4M2Q1ZTI0YWQ4ZjMzNWM5MmVhZjZkMDJhYzlhODQ1NGE0NGVjMSBsZWdhY3ktdHJ1bmsKKzYzNTYgNmRjN2VkOGE0MzRiMWZmMzY5MGZiOWE1OTgxMWEyMjQ5YzEzMzRlMSBsZWdhY3ktdHJ1bmsKKzYzNTcgZmM5YjE2NWE4YTA5ZDMxMjg2YmUwODYwYTk4NDM3NTBiMzk0Njk2MCBsZWdhY3ktdHJ1bmsKKzYzNTggODFmNjBmNTJiODczMjU4NWFmNGU4YzM3YTljZjQ3NzE5Y2RhZTA0ZSBsZWdhY3ktdHJ1bmsKKzYzNTkgOTU3ZjQyZWEwZjg0NDQ0ODZhMjM3Y2I3OTJiMzA1N2VkN2MzMjNhMCBsZWdhY3ktdHJ1bmsKKzYzNjAgM2M3NTMwNmE2NWNlZDQxNjYzMzc4YzY5MGNhNWEzNDU0ZTlkYzdhOSBsZWdhY3ktdHJ1bmsKKzYzNjEgNTcxNjgyNWY2ZTliMTM3ZmY4NjdlM2Q5YmFiYjQzZjhlMzEzNWE1OSBsZWdhY3ktdHJ1bmsKKzYzNjIgZjkwMzAxNTQ0ZmE5YmU4OWE2YjhmMmE4OWM4NWI3YWE0ZDE2ZWIxMiBsZWdhY3ktdHJ1bmsKKzYzNjMgZDllN2YxMDg4YzNiMzYzYmE0ODUyY2Q4ZWE3MWM4Mjc0MWU3NmU4MCBsZWdhY3ktdHJ1bmsKKzYzNjQgYWIwODg5ZTQyMWVkNDdhMmIyYTU0MDQyYjk2NDQ2YjY0NDgwNTdhNCBsZWdhY3ktdHJ1bmsKKzYzNjUgOTU4ZDRjNjc1MjZiMDljZGRkMmUyNjIyNTQyMzE0M2UwYjJkZTQ2NCBsZWdhY3ktdHJ1bmsKKzYzNjYgYTUwYWU4MzkzZDM3ODBjYzc0M2JmOWI4MzcwNGMxYjk5MDUwMmVmOCBsZWdhY3ktdHJ1bmsKKzYzNjcgMzNlNWQxZDQyY2MyNjJmOTgyMDRhYmQ5MzUzYzE5MmVhN2NkNzUzMyBsZWdhY3ktdHJ1bmsKKzYzNjggZjRhM2IxNmU5NWYwN2ZhYWY0ZWYxZDBhMWMyZGJhYWU5OTI2YzQxYyBsZWdhY3ktdHJ1bmsKKzYzNjkgMzE4ZTY4OWMyMjBmOTIxOTdkOWVjNzY1YmU2OWVjYWYzMjQ3NWQ0NiBsZWdhY3ktdHJ1bmsKKzYzNzAgOTRjNmJmNmZkN2Y0ZmEwOTUwMjRjN2RhZjg4YWI0YjQ5MjFkYzUzYSBsZWdhY3ktdHJ1bmsKKzYzNzEgNTg0OTM2ODkwZjg2NjkxNWQyMTU0YmQ1MjVlNTBmM2Y0NWYyZDE3NyBsZWdhY3ktdHJ1bmsKKzYzNzIgY2JhNGNlMTVhMGQ1Yzk5YWE2NWE5Yzg1OTY4NGRkZTVjZGQ3YzZiZiBsZWdhY3ktdHJ1bmsKKzYzNzMgY2UyZDkyMzliYTgxMTQ1ZDhjNjBjMmM2MWY5MDVkZWI3Yjg2ZDgzOCBsZWdhY3ktdHJ1bmsKKzYzNzQgMDg2NGE2M2ExMGE5MmMxN2M1MWNkMzA0MTNlMmJkMDNmZmNiMWNiMyBsZWdhY3ktdHJ1bmsKKzYzNzUgYTNmNjdiYjk2YWRjOGMzMjZkZmZkODUyYjBlNzFmYzliZTczM2FhNiBsZWdhY3ktdHJ1bmsKKzYzNzYgZmU0MTE2M2MwMGMzZmYyOWRlNWY1NmU2M2MzMjI4ZDQ0ODdmMDEwNSBsZWdhY3ktdHJ1bmsKKzYzNzcgOTdlNzAxMWZiMWIxOTFhMzA0ZjY1YmY0M2ExNTZjM2ZjMzcwMzIwYSBsZWdhY3ktdHJ1bmsKKzYzNzggYTBmZDgxNjg4YmU1MmY1ZDU3Mjk1OGM5YzI0Y2MwNDkxYjZlYjMxOCBsZWdhY3ktdHJ1bmsKKzYzNzkgYWMxZDVhYmZkNzhlZTQ5MTBkN2U1ODMyYTc4YzU0NTI1ZDJhMzIxZSBsZWdhY3ktdHJ1bmsKKzYzODAgODY3MTY0MmUxNGEzNzhmOTk4YjkxZTgyMDZhNTc4NTViOGE0MDg2ZCBsZWdhY3ktdHJ1bmsKKzYzODEgNmQ1MDk2YjcwMzhkOGExNjlhNzQxYjA5ZTFhZWZiMTUzOTNkZDRjMiBsZWdhY3ktdHJ1bmsKKzYzODIgOWNmMTFhZjM2MjhjODk4NTljNTMxZDUzNWZjNGM3ODkzYzIxYzgzMCBsZWdhY3ktdHJ1bmsKKzYzODMgYTlhOTJkYzJiMzc0OTQ2YzI4NjQxNjEyMjNlYzE3ZmE3NjlkMTdmZSBsZWdhY3ktdHJ1bmsKKzYzODQgNWJiZTBkY2UyZTI2NzFjYWZiOGEwNDI3NDZkNGU1Y2MzODcxYzYwYyBsZWdhY3ktdHJ1bmsKKzYzODUgZjI4ZDNkODk4MmEyNWE3Mzc1YTFhNTFmZmQzNmUxMjI0MWExZmY0YiBsZWdhY3ktdHJ1bmsKKzYzODYgNTI0Y2Y1MDFjODUxZmQ4NWEzOWU3MmU1NjljYWU4MDY3ODdlM2NhMyBsZWdhY3ktdHJ1bmsKKzYzODcgMzQxMTQ2MTAwZjM4Y2E5OGZhNjdlNzBmYThlYTAwOWY5YmRjYzQyZCBsZWdhY3ktdHJ1bmsKKzYzODggODRlMTZjZjkyMTk5MjViNWNlMzhhNDk4OTBkMDI1OTlhZWZjMjI2NyBsZWdhY3ktdHJ1bmsKKzYzODkgNDQ0MTJlNDZmMjY4NzdlOTQ3MzBmNTkyNTdmNzhiMzhlYTM5YWU0OSBsZWdhY3ktdHJ1bmsKKzYzOTAgN2RlNWUxMTUzYjM5MmNiNmQ1NmZhZTVjM2Q2YTM3MTU5NGVhNDhkZiBsZWdhY3ktdHJ1bmsKKzYzOTEgZjQ4Nzc5M2Q2MDE4NDZkMGY5NjYyMTM3NTk3YmVkODliMzFmMzQ3MyBsZWdhY3ktdHJ1bmsKKzYzOTIgOTM2NjE2NGY1YzRhOTNkNzI5N2NhOGQ3NDk4MTI1YWNhMDE3NjEzZiBsZWdhY3ktdHJ1bmsKKzYzOTMgYzJhZTA0NDBjNDI0YTcyMjg0YTU3ZWM4NDIxZTk3NTM1OTU5NjljYiBsZWdhY3ktdHJ1bmsKKzYzOTQgZThiZDQzMGNkMzU3ZTg2Y2Y5OThkN2Q4OThmOTUwNTQyY2YyNWY5MSBsZWdhY3ktdHJ1bmsKKzYzOTUgYTM5ZDA2NDk3NTIwMzViN2Q5YTU2YjJjNDZlYTUxZGFkMTE4YTYxNyBsZWdhY3ktdHJ1bmsKKzYzOTYgMDYzZDg2NzQxNDEwZTJlZDg3ZDFjMjk2ZjlhZTE3ZTIzYzRmZjRjZCBsZWdhY3ktdHJ1bmsKKzYzOTcgNGJjZWU2M2Q1YmIxN2RiMDM4Mzc2NmZhNzM0MDBkM2E0YzMzYWVmOSBsZWdhY3ktdHJ1bmsKKzYzOTggMWRhMTY4MTg1ZTRlMDViODlhNTA4NmExOGRkYzZlOTMxODdjY2ZiYSBsZWdhY3ktdHJ1bmsKKzYzOTkgNTNlNzU3YmI2N2Q1ZDYzMWU2YmE5ODFiNWY4NGM3YzgxMmQ0NzdiOSBsZWdhY3ktdHJ1bmsKKzY0MDAgMTY0MGUzNTU5Yjg2Njc5OWQ5YzNlYTA5YjIyNTk5OWJiOGRjMTE1YSBsZWdhY3ktdHJ1bmsKKzY0MDEgZmY2OGEyZWMxZmYxMmNiNjE1Y2NiYzg3MmE1NmM1MjcwNGY0OTc5OSBsZWdhY3ktdHJ1bmsKKzY0MDIgNTJjMTllZTgzYTZiMGY3MWM4OTAwN2E1ZDIyYThkZGJlZmExOTI0ZiBsZWdhY3ktdHJ1bmsKKzY0MDMgODgyYTMxYjdmODczMTFmOGUwOGYwMDgyZGEzYWNiNDRiOTJiZTgxNyBsZWdhY3ktdHJ1bmsKKzY0MDQgZmUxMTk2OTk1MzQ0NmQ3MGFhOTIxMTM0ZjhkMzg3MTA3MGMxNDVkYyBsZWdhY3ktdHJ1bmsKKzY0MDUgNjBiYjc0M2I4YTVjMjAwMGQzYjA1NWY3MjI0NzhlNTk0YmJkZTM4NCBsZWdhY3ktdHJ1bmsKKzY0MDYgZjlhZDk4YjU4NDcyYjA4ZTdlNTk1MDJlNjMzMDNlMjhmNTgzZTgyOSBsZWdhY3ktdHJ1bmsKKzY0MDcgZDdkODcwNWJhNjQ0NGRkMGQ3YTFkNWEyMTg0OGIyNTcxNGI2YzljOCBsZWdhY3ktdHJ1bmsKKzY0MDggNmUwYmJhOTNhMGViMzM4NjA5NGRjM2E5ODQ5NzgzMjg3ZmVhZDgxOCBsZWdhY3ktdHJ1bmsKKzY0MDkgZGVjZDEzZjY2MjlkNWE0MzI0MGY1ZTVlNWQ4Y2RlZTMyYjc4NzEyYiBsZWdhY3ktdHJ1bmsKKzY0MTAgNjFiNGNhZTc3ZjdlODczNWFiMDY2NmRlODI4NWFjNTRiODZhNGNjZCBsZWdhY3ktdHJ1bmsKKzY0MTEgNjc1MzI4YjA4MTIyYjljYzk0NGVkMTIyZmQyZmNjN2ZiNDM3ZjJmYSBsZWdhY3ktdHJ1bmsKKzY0MTMgNDZiMzNjZjhiOTEzZTVkMDcyMmRhMWE1NWU4NmM1NWM5MjNlN2UyYSBsZWdhY3ktdHJ1bmsKKzY0MTQgMGQ0NDM3ZDFjMmI1N2ViYmJhZmFlMjAwZTJiNTkyMWNhYjBmYmY2YSBsZWdhY3ktdHJ1bmsKKzY0MTUgMzg2ODQ4NTIzNzZmNTQyMjYxMzk1M2MyZDBkMmIwZDY3ZDJlMTQ2YiBsZWdhY3ktdHJ1bmsKKzY0MTYgNmU2MDllMjY2YmU5ZDEwYTliMWEyMzYyZGQ1NjRmNjlmNGUzZTdjOCBsZWdhY3ktdHJ1bmsKKzY0MTcgZmJhZmIwY2QwYTJhNTVmZjMxM2FkNGU3MDkwZDEzNzRmODA0ZjgxNSBsZWdhY3ktdHJ1bmsKKzY0MTggNzNjZjcwODJiOWU4ZDc0MTQ3MmM0Y2ZiZThjNjZkZDI3MTUzNDkzMiBsZWdhY3ktdHJ1bmsKKzY0MTkgNmY3OGQzMTY0Mzc2YWUyNDIxZjUwMDQxN2ZmMmNkNzkwMjA1MzQ5MyBsZWdhY3ktdHJ1bmsKKzY0MjAgMTA3NTNlNGQ3NmU3MWRjNmEwODVlNTI2MjJkZjkxNGE3NGMwN2NhZCBsZWdhY3ktdHJ1bmsKKzY0MjEgZGVhZGVhNDNiYjUzNjQ1MzVlNWRkMTcwZjI4YWVmMGQxN2NmZjk1NSBsZWdhY3ktdHJ1bmsKKzY0MjIgM2FjYWY3YWY0OWNjMTAxMzY2MzBmMzQ1N2EwMDI1ZWEwNmFkMmYzOSBsZWdhY3ktdHJ1bmsKKzY0MjMgNzVkMDE2Yzk3ZDFjMmNlZWY0NzhmZTg3NWMzMmJkMDg1ZDFjMDMwYyBsZWdhY3ktdHJ1bmsKKzY0MjQgOTA4MTgxOWFiYmY1NTY3NDJhOWY5ZjQyMGIzNTY1OWVhZjQwYWRmMCBsZWdhY3ktdHJ1bmsKKzY0MjUgN2VlMWIxMDBlZDI5YTRmZjFmMjMxNTdiZThjMGNmYjQ5MmE0M2QwYyBsZWdhY3ktdHJ1bmsKKzY0MjYgZjBmOGI1MGI1YjZjZDY4NmVjMGU2YmI0OWNjZjAxZGZlZGFiM2M5MCBsZWdhY3ktdHJ1bmsKKzY0MjcgOWQ4YTk2NWRlN2VjOGFjOWY1MzZkYzU1NjU0MTQ5NmU0YTgxNjUyOSBsZWdhY3ktdHJ1bmsKKzY0MjggMjkwMTViNThlOTIyMDIzNDUyOThlZmI5ODEwZjk0Mzg3Nzk5NzhhNiBsZWdhY3ktdHJ1bmsKKzY0MjkgOGUzMDliZTg5ZWU0NTRmMTdkZDA2MGUxZTU5YWVkMjdiNzkyZDBlOSBsZWdhY3ktdHJ1bmsKKzY0MzAgZjAxZTdhZjFkZDYwNjgzYjFmMzAyZTkzMjU3YWM0NzM4NTg2ZWQxMyBsZWdhY3ktdHJ1bmsKKzY0MzEgYjg2YzgwNDQ4ZDM1NWU3ZTg5Y2JjNzZjMjI0MzU0YmNhYjMxMmNiMyBsZWdhY3ktdHJ1bmsKKzY0MzIgNmFmN2E3MDNhZGFlZGExYzZmNWU1ZDVkMmI1YzI5NDg0MjJhMjY0YSBsZWdhY3ktdHJ1bmsKKzY0MzMgOTBmNTA1NTU1MGQ5YTA0ZTUyYTZjZjZkNTAwMjE1MWM3ZWM4MTJjYyBsZWdhY3ktdHJ1bmsKKzY0MzQgYmZkOWJhZjNhOWMyOWZlNWVkNjNlMmE2YTgxYTIxMGM0ZjVhYTg4OSBsZWdhY3ktdHJ1bmsKKzY0MzUgZjA4ZDdmMzY4ZWJmYTE4ZTk5ZDAzYTZhOGQ0ZGYwN2Q1MDRlNGZlOSBsZWdhY3ktdHJ1bmsKKzY0MzYgMDA3MjI5OTBiODBjMzFmMmVkOWRkZjI1ZjVkYTQ4M2YxODY2NjRiMSBsZWdhY3ktdHJ1bmsKKzY0MzcgZmNmZWM2YTgxMGJhNTQzZTY3YjIwZjkyYjE5NDk3ODhkNmZiNWE5NyBsZWdhY3ktdHJ1bmsKKzY0MzggOWMwNWZmNmZiMGE0ZTRiYjc1ZTViZDA2M2ZlOTdhMjFiNzEyNjE0NyBsZWdhY3ktdHJ1bmsKKzY0MzkgMjg5N2RhZmVkOTVhNzI4NGVjZjlhYTRjYTI3YmYwZDJlOTExNjcwMyBsZWdhY3ktdHJ1bmsKKzY0NDAgNTMwMTllM2E2ZDVhMzQwNTkyODJlNWY3NzhmMzdhZjJmMWQzZTI3MyBsZWdhY3ktdHJ1bmsKKzY0NDAgMTI5ZjEyOTlkNGU5N2U4ODRiYmJiZGQwMGJhZjEwMWQxNzg5NzNlNiBsZWdhY3ktdHJ1bmsKKzY0NDIgYWQ4OGEwMDA1MjFmN2IzZjNlZGI1NTRlYmFkZDg3NzBlOGYwMDhkMyBsZWdhY3ktdHJ1bmsKKzY0NDMgZGMxNDQyNTk0OThmY2U5YWE2ODliMjhmYmM5NzYwMmNhM2FmMzBkMSBsZWdhY3ktdHJ1bmsKKzY0NDQgMTQ4MTUyNTJjN2EzYTVhZTQxZDNmODkxYjVmOGIxMmJiODM4MTkwNCBsZWdhY3ktdHJ1bmsKKzY0NDUgYmIwY2U2NTNjMmJhMDI3YmI0MTI5OTdkMGIxOGI0YTcxNmRiZjZiMyBsZWdhY3ktdHJ1bmsKKzY0NDYgM2QxZTRiNzZmNzQ1YTkyYzkxNWE4NmRiM2JmZDE4ZjM3N2U2ZDg5ZCBsZWdhY3ktdHJ1bmsKKzY0NDcgZmM1MDVmMDJhZDhhMjgwNzU5ZWIwNzRlNTJiOWIwODAyMDA1NDY5ZCBsZWdhY3ktdHJ1bmsKKzY0NDggYjc2ZmU2N2VlZDQ0ZWE3MDkzMDIwZDc5NTYxNzBiNmE3MWY1YmUyNCBsZWdhY3ktdHJ1bmsKKzY0NDkgYTM0OTk3YjZlZGY0MmJkN2RlMTUyMDMwZjIwYWUyMjU0N2MyY2MyNyBsZWdhY3ktdHJ1bmsKKzY0NTAgZWFlYzRmNmE4YmU4Y2ZmN2ZlMTNiYjA5NzAyMzA0YWJmZWQwOTUzNSBsZWdhY3ktdHJ1bmsKKzY0NTEgYjkzYzRjZmMyY2ZlYTRiNGMzZjQ2M2E0Y2FlNTM1ODg4MDAzZWU3MyBsZWdhY3ktdHJ1bmsKKzY0NTIgODdlNTNjNjJjYWM4MjE2MGM3Y2Q5MjY4ZjA5YzdmMTNlMTgwNTg3MSBsZWdhY3ktdHJ1bmsKKzY0NTMgNGI1MDk4YjFmY2VmMjgwNjBhYjg5MGNlOWEwMmZjZTkyMzZhYmEyMiBsZWdhY3ktdHJ1bmsKKzY0NTQgZmI1ZmMwMzIwZTZlNWQ1MmRhYWM5NzU0NTM2OGNjOGJhOWM2YjFhYSBsZWdhY3ktdHJ1bmsKKzY0NTUgY2FmMTEwNzI0Y2MxNzdlNDUwM2JmNjA3OGRiNzIyOTZhNTEyOTdhMiBsZWdhY3ktdHJ1bmsKKzY0NTYgNDQ5MDI1MTY2MTRhOTAxZmM5ZWQ5ZmNjNjhkYTkxZDAwZjRhYjE1OCBsZWdhY3ktdHJ1bmsKKzY0NTcgMDYxM2YxN2RjZmQ4NjUzYTMwNDc0NDcxM2QwMmY3YjE2YTY3YTU2MyBsZWdhY3ktdHJ1bmsKKzY0NTggMDExY2ZlNzQ5MGViNWY5NmY0ODM1YjRjNjVlODZjZGM2OWZkZTJjMSBsZWdhY3ktdHJ1bmsKKzY0NTkgOWMyY2JmMzA2ODY0ZDJmYjliMDUzYzNkOGIyYmM0MWU0NDhhOTJiMCBsZWdhY3ktdHJ1bmsKKzY0NjAgNmZiYzVjNjY1ODEyMWU1YTQwODUwMjBkZGNjMDZmN2ZiMTY2YWUzNCBsZWdhY3ktdHJ1bmsKKzY0NjEgZWZiM2E1YTJjZGVhY2JmYjFmMzBlMzkzNGU3ZmFiM2EzZGU3ODg4YyBsZWdhY3ktdHJ1bmsKKzY0NjIgYTgxNTc2NWI0Njk1MmMxZjNhODgxNjE4MjQwNWUxMDhlMTdmNTAzMiBsZWdhY3ktdHJ1bmsKKzY0NjMgYWU4ZDFiNDY5ODEzYTcxZmE3NTNjYjQwZDEwM2FmZGQ3Y2Q5MmRiNCBsZWdhY3ktdHJ1bmsKKzY0NjQgY2ZiOGI3YmMwMjMzYTVmMTJjZTE3ZjVhZDEwOTFlZDZkZGU1ZGQyMyBsZWdhY3ktdHJ1bmsKKzY0NjUgYTRhYWM3NjZjYmYwMDU4MjhlYTlkMmJhNTRiYzk3NTYxZTdhN2FkYyBsZWdhY3ktdHJ1bmsKKzY0NjYgNjQxNGZmYjdmMjg1ZDM2MmUzMjNjNTY4OTc1NTA5NjUwMDJlNzM1ZiBsZWdhY3ktdHJ1bmsKKzY0NjcgM2Y1N2FiMzJiNzQxMmIzMzVjMGU4YTM4MWE0MTI0MjNjYWFhYmRlNSBsZWdhY3ktdHJ1bmsKKzY0NjggY2EwZTA1ZWM4NWI5YWFkMzBkMThkYTkwYTRkYzNhODExZTVhNjFjMSBsZWdhY3ktdHJ1bmsKKzY0NjkgMGVjMmNlOTdiOGUzY2JkMGFhZGVlMDMxODEzNWExZTJmODhjMDMyNiBsZWdhY3ktdHJ1bmsKKzY0NzAgODA2OTc5MGIzOTc0MDA5MTllZTk5MGNkMzkyNDRmNGQ0MGMyNDY3YiBsZWdhY3ktdHJ1bmsKKzY0NzEgZjYzMGEwNjdhZThjYjIyMTBiNjhjYzc4MmY4NWUxNWVlODliMTkzOSBsZWdhY3ktdHJ1bmsKKzY0NzIgYjA5NzZjZGJkNTk4MDNiMzAzZTZjYTAxMzY5MDU2YzdiMGFhNTU3YyBsZWdhY3ktdHJ1bmsKKzY0NzMgYmZmZmQzOGQ2MDBiNWQ5NjVhNWNmYmU2MWE0NjhlZGE1ODJkMjM1NiBsZWdhY3ktdHJ1bmsKKzY0NzQgMWVkNzczZTE1OTM2OTM0NWMzOWUyODY3NDQ5ZjE5ZTNlMWJkYTFmZCBsZWdhY3ktdHJ1bmsKKzY0NzUgNDI0MTU4MjYzNmFkYjM4ZWNjMTQzODJkY2QwYTNmYTVjODY4ZDFkMiBsZWdhY3ktdHJ1bmsKKzY0NzYgMTM4ZmExNWExMDMyZWMxYjE4YzY5MWU2ODFjZTgzOTdiZjhjOGVjNCBsZWdhY3ktdHJ1bmsKKzY0NzcgZDNhMWY2MDg4YzI4ZjEzMTk5ZjBjMjQ2MDBmZjFiOWI4N2VjZDg3NyBsZWdhY3ktdHJ1bmsKKzY0NzggNzQ5NTMyMjQyN2M3NmFjNmUzZjc5NTM2NzYzZDk1ZDcxMWYyYzI3ZiBsZWdhY3ktdHJ1bmsKKzY0NzkgYzJhNjExYWUwZmVjZjQ5NjkwMDNjMmU5ZjUxYmI5ZjE0MmE0ZDg0YiBsZWdhY3ktdHJ1bmsKKzY0ODAgMWEwYWE5ODZmNmZhNjQ1NWI3YjEzZjdlYjQyYTVhMmU1ZDdjMTE3NCBsZWdhY3ktdHJ1bmsKKzY0ODEgMThjMzI3MTRmOGJhNTVkMTU1ZWE2YTg5NjJjZTA5MjkwMWM1MzYxNyBsZWdhY3ktdHJ1bmsKKzY0ODIgNjExMDY5ODZhMWE0YzliZDUzNWM2MTExYzRhYzlkZjQwOWEwY2VlZiBsZWdhY3ktdHJ1bmsKKzY0ODMgY2NjZjlmMjczMmNmM2VkNGZlOTdmN2U1MWYyNTI4ODcwYTQ3ZGQzZiBsZWdhY3ktdHJ1bmsKKzY0ODQgOTI5NDExZGIyMGE4NTg3ZjYxNTQ5NzIwZDgwYjg3NjM1ODA2YTg3ZSBsZWdhY3ktdHJ1bmsKKzY0ODUgMjJhMDMzYmJlNjU1ZjE1YjQwM2Y0NjFkYjQwYjRkZmU2YTU2ZjUyMiBsZWdhY3ktdHJ1bmsKKzY0ODYgYWE5NTQ4ODg1YjNmODBhMzIzYTg3MTI3NDRhYTVmYzdjNTc2Y2ZjOSBsZWdhY3ktdHJ1bmsKKzY0ODcgNDkwOWVmMzllYWYxZGI4MjQxNDY4NDUwMjFjOGVmMzQ1MTkwNzM2NSBsZWdhY3ktdHJ1bmsKKzY0ODggMjExMjE1YzFjNTBkNGIyNGEzZDc0ODRiMzIxOTYzNmVhNWYxNjc0NSBsZWdhY3ktdHJ1bmsKKzY0ODkgOTM4OTE4ZmYzNTM3OTUwZTY5MjQ4ZTRlYjJmYmY2YWUzNTdjNjY2NyBsZWdhY3ktdHJ1bmsKKzY0OTAgNWRjOGMwNDI5MDViNWMxZWIyMjZkNTg3YWE2NWRiM2FhNjcwNGE0MSBsZWdhY3ktdHJ1bmsKKzY0OTEgNDBjOTI5MzM1ZDdmMjQ0NDIyNmM0ZjdiNzcxNWU2NjdhOGQ1MjMwZSBsZWdhY3ktdHJ1bmsKKzY0OTIgMWRlZTNlNGY2N2RmMDIyMjRlODVkMzNmODRiNmIwMjMwZTM2MDg3NSBsZWdhY3ktdHJ1bmsKKzY0OTMgZjQ5ZTQwNTdlYjY4MzAyZjI5OWIzN2FmY2Y3NjEyMjkzODllMjUxNCBsZWdhY3ktdHJ1bmsKKzY0OTQgY2YyNjMwYTQxZjg3NTJlNmZmNTM3NThjMTZlY2U1YWNhYjkxMzYzMyBsZWdhY3ktdHJ1bmsKKzY0OTUgNGZjY2Q5ZWVlNjc5YzIwY2M3MWVhMTU4MDJkOGViMDAwYzU4NTdkYiBsZWdhY3ktdHJ1bmsKKzY0OTYgODkyZjQ1NjE2NDhhMDk1MGUxYzVhN2JiMTUxYjU2OTg0NzYxOTgyMiBsZWdhY3ktdHJ1bmsKKzY0OTcgNTNkNTExYzAwMjlmNTQxMzE4NTdmMmNkN2RkZTRlMGIyODFmOTQxZCBsZWdhY3ktdHJ1bmsKKzY0OTggODU0ZjI1ZmRlOGY0MmMwYTI3ZjgxNWNiODY1NzY3YmY0ODkxZWQ2NiBsZWdhY3ktdHJ1bmsKKzY0OTkgNmJiYzEzYjdkY2E4OGI4Mzk2MDgxNTU0ODVjNmE4ZmU5ZTA3YmQ0ZiBsZWdhY3ktdHJ1bmsKKzY1MDAgMmNkYjhmNWFjMzY1ZjhkY2ZkNzg0NzcxYmNkYTE0YWIzOTYzNzRmNCBsZWdhY3ktdHJ1bmsKKzY1MDEgZGEyYjlhZTkxZDk1M2VjNjBiOTE2YmY0ODczMGE5MDc1NmU5YjIxMCBsZWdhY3ktdHJ1bmsKKzY1MDIgODJjOWRlZTA1M2JjNmQ0NDFlZTRhOTk2N2E4YjM3NTA4NmY5Mjg1NSBsZWdhY3ktdHJ1bmsKKzY1MDMgZTc3ZmFmNTU2OTdiOGYzZGM1MmVhMDRlNzA2YzhkYTNkZGE0OTQwOCBsZWdhY3ktdHJ1bmsKKzY1MDQgM2EyMDAwMDJkODBhODgwZWEzNTA4MWZhNjZhYjBkOGY4NjYyYjU1MCBsZWdhY3ktdHJ1bmsKKzY1MDUgODkzOTQ5ZDFkMjhlYWE3ZTJmN2Q1Mjg3ZWRlMTQyMjVjNzA2ZDk5NCBsZWdhY3ktdHJ1bmsKKzY1MDYgNTU5MmRlOTY1NmRlNGE5MjAwNDllMDVkMWViMzRiNWI4ZjY1YWMxZSBsZWdhY3ktdHJ1bmsKKzY1MDcgYjQzMzM4YzUyMzFlMTA1MzE2MTRkMjAzNzI1NDFhNWNlMTllZWVjZCBsZWdhY3ktdHJ1bmsKKzY1MDggZDFiYWVjNTcxODUyNGMzMzM0OTg1NjliZjhhZGY0OGQ0ZGIwMTE1NiBsZWdhY3ktdHJ1bmsKKzY1MDkgZjdjMjQzZDAxODQ0NjlkY2NmYTIwMTVlNjc4NDM1NmZhNTc1ZDM5OSBsZWdhY3ktdHJ1bmsKKzY1MTAgY2EzOTM1NWJlNTVhMmJhZWM5OTAzOTVmMGVhOGVjNDEzYmMyMTEzYiBsZWdhY3ktdHJ1bmsKKzY1MTEgMjYxNDcyZmE5NzJhNzU4MGYzNDMwZGI4MDczZGVlZGJhOGMwYjVlMSBsZWdhY3ktdHJ1bmsKKzY1MTIgMjNmMjgwYWI1NDA5Yjc5ZTYxNzNkNGUxZjg1MWRiYjY3NTU5NGQzMyBsZWdhY3ktdHJ1bmsKKzY1MTMgZjQxZjBjYWYxY2ZjZTJmNTQyNDBiNjEzMDU5NDM4OTRlNjQ2ODJiMSBsZWdhY3ktdHJ1bmsKKzY1MTQgOGEwMTBkZDQ3MzZlYjgzZTBlNjM1NmY3N2Y0OTU4YTU2YzU3OGMxYSBsZWdhY3ktdHJ1bmsKKzY1MTUgNmI0ZDBmMWEwYWU5YzliYjU1YzE4ZDBkYzBjMmFlYWEwYThhYzIyNiBsZWdhY3ktdHJ1bmsKKzY1MTYgZDZjN2U0MGNiZmRmMGEzOTNmNmI0MjIzNDM1NTA0ODNhODk0NDk5ZSBsZWdhY3ktdHJ1bmsKKzY1MTcgZWY3ZTNjNDk5YTRkYTAxY2QyZTEyZDM1NjUxMDczNWJkOWQ5ZjgwNyBsZWdhY3ktdHJ1bmsKKzY1MTggOTZlMGE3MjA0ZTMxZDgwZmY3YTE4NGYwYTIzNTcwOWJhNGVmMWJjOSBsZWdhY3ktdHJ1bmsKKzY1MTkgZWI5ZmM0MDRjMDY2MzEzZTRlOWFlNzZiZDNlMDdjNWQ3OTMzMWQxYSBsZWdhY3ktdHJ1bmsKKzY1MjAgM2U2ODYzY2VhMzgzMjYzYzU5ODJjNzNhODQ1MjVkMWE3NzE2OGIwZSBsZWdhY3ktdHJ1bmsKKzY1MjEgZjdiMTNkNDE4MmIzZGFlOGIzNzNlMjJkYTc5MmJjNDQ4ZGY2MjBkNSBsZWdhY3ktdHJ1bmsKKzY1MjIgYTJkYzdjZTRkZmJlN2JkNmZjM2NjMzI3NWRiOWQ2MGNlODhhZDNiYSBsZWdhY3ktdHJ1bmsKKzY1MjMgYmMwNjVkZjAzZWU0ZWY4OGMyYzQ4NmRhZmFhNTAzYzQ5NzkxODY2NSBsZWdhY3ktdHJ1bmsKKzY1MjQgZDZjYTZlMjA3OTk0NzcyMjkwNWIwMjg5MDhjMjE2MjI1YjM1NzY1YSBsZWdhY3ktdHJ1bmsKKzY1MjUgZWY2Yzg5ZmUyMWVkZWExYWRjMThmYjU1ZTAxMTUxMjZkNTA0YjU4YiBsZWdhY3ktdHJ1bmsKKzY1MjYgYWM5MjViOWExZDY3NzIxMzdlNWM2YmY5M2EwZDZhMGJlNDM2NmE4NSBsZWdhY3ktdHJ1bmsKKzY1MjcgNjY5Y2NkOWU3MTdlOGVjOWUyY2VlYjg4YTZmOWYzYWYzZTRiZDk5NCBsZWdhY3ktdHJ1bmsKKzY1MjggZjAxMTBjNWM2MjI3OTJiNDY1YjNiNTdiYjFjMWRlMWY5M2E5YTQxNiBsZWdhY3ktdHJ1bmsKKzY1MjkgNmRlZWUzYjIwNmI5OTQ3ZTQ0ZTgyNjkwYmNmZTBmYjkxNDJkMmYyOCBsZWdhY3ktdHJ1bmsKKzY1MzAgODE4NTk5ZTM5MTIzY2NiODFiMzkzNzZiMDg1OTYyMjQ4MzM0MmM3ZCBsZWdhY3ktdHJ1bmsKKzY1MzEgMjFiMjhkY2ZhODY1NDNkNzVkNzQyZjA3YmIzODEyODI0NzliNDUwNiBsZWdhY3ktdHJ1bmsKKzY1MzIgZDY4OTczODVjMzE4NWZjYmRkZDliMTI4MDIzYTM4N2RkZTU3Y2I2NCBsZWdhY3ktdHJ1bmsKKzY1MzMgNjRhNThiMGZiMTY3MTBkY2I3Mzc5NDdjYTY1NTk0YzUwYzQ3OTVjYiBsZWdhY3ktdHJ1bmsKKzY1MzQgNGJmMDFjNjZjYjY4NmNhOTg1MDNkNjE1YWFkNTA2YjhjOGUwYmVkMiBsZWdhY3ktdHJ1bmsKKzY1MzUgZDZkZTJjMTQ4ODE5YWM3YzNjZmI4MjJmNjc0M2Q1OWI0MDI3ZDIxYiBsZWdhY3ktdHJ1bmsKKzY1MzYgYTU4OWNlZGNiZWY1NDY1NDUxNGFkMTViMjQxMWU4NWVjZDE4ZTRhMiBsZWdhY3ktdHJ1bmsKKzY1MzcgNzg4NDM0NzJmYjZmYTIzZDk2ODBkZmU4NWE0ZjEzN2U2NWM5ODFmNyBsZWdhY3ktdHJ1bmsKKzY1MzggYmRlMTlhY2YxMDQ1ZDQ3ZTU5ODI5MjZlZTlkNTUyNWVmNWNmN2QzNiBsZWdhY3ktdHJ1bmsKKzY1MzkgMmM4OWJmMDRmODM0ZWFhZWFjZjE1NTNkZDM4MGU5MTg1YWY5ZWQyNSBsZWdhY3ktdHJ1bmsKKzY1NDEgMjMxYTQyMDkxODMwMmU5N2RjODk5ZTgxMDc5ZmJkNzk0OTBmYjcwOSBsZWdhY3ktdHJ1bmsKKzY1NDIgNGM1NGVjZmFkY2U1ZTQ4NmIwNjhmYjJlODA4MzE2YjRhOTBmOWIxNiBsZWdhY3ktdHJ1bmsKKzY1NDMgZWZlODY4OTFmNDExYjg1N2I5YWVlZWNmOTMxYWQ0ODViZjM2NjhjNyBsZWdhY3ktdHJ1bmsKKzY1NDQgMTk0MTIzMDVkMzM1YTY5Y2IxY2ZjMTkxYzhlMjIzZDZlYmZmY2FkMSBsZWdhY3ktdHJ1bmsKKzY1NDUgYzU3NWE5MjBlNGExZjM1YTRmOTNhMTYxZWI2YmViMWY4MTdlZWQ0ZSBsZWdhY3ktdHJ1bmsKKzY1NDYgZjY2NTYyNTM2ZjExYjNkNWM3MmJiY2JkY2Q0ZTBiNzFkZDkwMDAxYSBsZWdhY3ktdHJ1bmsKKzY1NDcgNTg1MDRjOWEzN2RjNGE4M2UzZmRjMjQ1OGFkMjdkZTI1OGVlMDUyZSBsZWdhY3ktdHJ1bmsKKzY1NDggN2I2ZWVmYWM2ZTQ5Mzc2MDk3MzY4ODAyYWE2YTY1NmQxMmY3YWMzMSBsZWdhY3ktdHJ1bmsKKzY1NDkgNGE3MDM4ZTdhMzEzOWMwOWY0OWY1NDg2MDNmOTIyNThjMDViMTY2MCBsZWdhY3ktdHJ1bmsKKzY1NTAgZWRhMjliZWY4ODBjOWE1ZGVjMjdkMWEyNTY3ZjUxYTY1NmNlN2U0NSBsZWdhY3ktdHJ1bmsKKzY1NTEgMTBjMDg0OTQyY2YxMmRkMGZlZWYzYmEyYjIyOTUxMWEwYjBjNzYwYyBsZWdhY3ktdHJ1bmsKKzY1NTIgMTg0NTFkY2E5NDY5YTA0ZTJiMzA4N2Q1ZTc0NTgxMjIyNjkzZjllNiBsZWdhY3ktdHJ1bmsKKzY1NTMgYTZlNjJjMjFiMGUzYjAxY2VkZjNkN2UyYmRmNWFhMzcxMjIxZGU1ZSBsZWdhY3ktdHJ1bmsKKzY1NTQgNzUyYjg2YmExNmZjNmU5Mzg0OTZiNzZiODg4YWZmZjQ5ZGM1NTI1YSBsZWdhY3ktdHJ1bmsKKzY1NTUgNWY2ODY5YTM4ZDg1MWYwNjk2NTgwNTQxY2E1YThiZDhjMGJkOGEyNiBsZWdhY3ktdHJ1bmsKKzY1NTYgMzkwNjgzODE4ZjczNDE3ZGI5MTRmYTFiMDEwODYwZWQ2ZDZjMTc0ZiBsZWdhY3ktdHJ1bmsKKzY1NTcgNDY2MTdkMjljNWQwNjM5YTdkNjUzMTdhYTZkNzgzNjRjZTMxZmE5MyBsZWdhY3ktdHJ1bmsKKzY1NTggN2Y4M2UyNGQxZDg2OWI2NzQ3MTAzMWU0MDFhZjliMWM1OWVlOWU2MyBsZWdhY3ktdHJ1bmsKKzY1NTkgZTBmNjQyZWU0NWJiZGEwMWEyZjFkMTA4MWRkNjI1OTIzMGMyYTY2ZSBsZWdhY3ktdHJ1bmsKKzY1NjAgODMxYjQyMGU0MTFlNDIxZDMzN2MyYzRlNmU1NjY5OWU5YWE4NTQ0NyBsZWdhY3ktdHJ1bmsKKzY1NjEgNzQwZGVmNjk3ZDhiOGUzYmNkYTRkZTZjOWNmMmE3OTY1Yzg3NDhmZSBsZWdhY3ktdHJ1bmsKKzY1NjIgZjgxZDc4NTQ3ZjI4OTI5MWFmYjIzNTNjM2Y1YzdjNGI1NDc5NmIwOSBsZWdhY3ktdHJ1bmsKKzY1NjMgOWY3MGQ5OTVkMDI3OTI5OWNkOTJmMzZlODM3Yzg4NGJkY2ExMGI3YSBsZWdhY3ktdHJ1bmsKKzY1NjQgMGI0MGM4ZDViMjFkMjI1OTU1OTcwY2NkYWMzNWVhYzlhMWQ2MGRhMyBsZWdhY3ktdHJ1bmsKKzY1NjUgZGM5NDZjYWI3YjliYmJhZjM5ZmFlNjkwOWQ3MzNmZDY3ZTVmMjUyNyBsZWdhY3ktdHJ1bmsKKzY1NjYgODU5MmZhNGExMTliMDhhODhhMWNhNDc2MjNiMzhkMGIxNTM3YWM1YyBsZWdhY3ktdHJ1bmsKKzY1NjcgZjI5ZmU3MWYxMWU2NGYxMzgxZWZiN2Y4NmUyODE5MGM4NzExZGMyYSBsZWdhY3ktdHJ1bmsKKzY1NjggODQzODE4NGU0NDhlMDM3ODI5YmE3MDc1MGY5NDMyNDA5ZTdjMTMwOCBsZWdhY3ktdHJ1bmsKKzY1NjkgMGE1OWM5OGRjMDA1MzVmYTczYjk1ZmU1M2YyOWIwYmMxMGY0YTQ1ZSBsZWdhY3ktdHJ1bmsKKzY1NzAgODQ2NWQ4ZmJjN2FjMTdiZTk3ZGM4MTNjY2VlYTBhMDlhYmRkMWI0ZSBsZWdhY3ktdHJ1bmsKKzY1NzEgZTUzODYzOGVkYzcxMzM3MjI1M2U3OGI1YTUyMjc0NTA5YjE5Mjg3NyBsZWdhY3ktdHJ1bmsKKzY1NzIgNmY2YmE3YzAwODIzZWFkOGQ1ZTVhYTlhZDY2ZjgxMmZiOTlkZTU5NiBsZWdhY3ktdHJ1bmsKKzY1NzMgM2EzYjM2NzE2Njg5YzVmODcxM2Q4MGNiMzdkYWEyZGJkYzA5MTUyOCBsZWdhY3ktdHJ1bmsKKzY1NzQgNTMzNmMwM2ExMzFmYjViZjAyYTg0MzYwYzU0ZDA0OTdiNmVmMzkyNyBsZWdhY3ktdHJ1bmsKKzY1NzUgMmZjZWE1ZGQxZDE4YTI1YWQ2MWU0NTI2ZDY4NzQxZDM0NjJhOGNiYyBsZWdhY3ktdHJ1bmsKKzY1NzYgOTU2OTY2NGFjMzQ3NTNmOWQ1ZDFhNGMzN2Q2MzE4ZTQwOTdiM2VlYiBsZWdhY3ktdHJ1bmsKKzY1NzcgYTVhODI2NjY5NzdiNWUyOWM3ODhkMjNkOTIwZGM3YWQ3ZTM2OTcyOCBsZWdhY3ktdHJ1bmsKKzY1NzggODY5YTk0ODA4NWMxMGZjZTgzOWRhNmQ1ZTc0YjE4NDY3M2Y3MjVlNSBsZWdhY3ktdHJ1bmsKKzY1NzkgOWMxZjliMDljNDQyNzU3NjJiODM0ODQyYWVjN2JmNTA4NGU4ZDQzNCBsZWdhY3ktdHJ1bmsKKzY1ODAgZjM5NTE2M2NhOWQyNTVjYTRmNmMwOGNjMWE3NTFjMmVhNWU0ZWQ2ZCBsZWdhY3ktdHJ1bmsKKzY1ODEgM2FjMDMwY2MzM2YwNjg4N2JiODdhMTFjMDk2MmRlM2FjNTEyZTExMyBsZWdhY3ktdHJ1bmsKKzY1ODIgNmQ5ZDVlN2U1ODhjNDlmY2QyZGJkYTE4YjNkZTE2YTUyN2M1ZjM2MSBsZWdhY3ktdHJ1bmsKKzY1ODMgOGM3YjdlOTRmNGRkMzllYmJkZDA5NTMzZjdkMzE4NWIxN2YwNTcyNSBsZWdhY3ktdHJ1bmsKKzY1ODQgMDdhMzVmZDJlMGExM2VlOTQ1NzBhYmI4OTlkODY3ZTczZWQ1OWM4NSBsZWdhY3ktdHJ1bmsKKzY1ODUgOTAyMTZlOTA3MzQ1ZWIyMGIzNTlkZGQ4NDllMzg4ZjhlOGNjMzczZSBsZWdhY3ktdHJ1bmsKKzY1ODYgNTcyNmJlOGVlNTlmMzBiYjMwODIxNzU0ODlhM2ViZmI1Mzg5MWM4MCBsZWdhY3ktdHJ1bmsKKzY1ODcgYjNhZjMyNWQ3MTJkZTNlOTdhZTA4OTQxMWIwMWE2ZjNhOTBhNjU5NyBsZWdhY3ktdHJ1bmsKKzY1ODggNWQ1MjM5NWY0MGIwYzlhMmI1ZjViOTNkYzMyMDNiODM2MWU2MzA0ZSBsZWdhY3ktdHJ1bmsKKzY1ODkgMjM1ODljMDE2Y2I5YjhjNTE0NDA2ZTRjZWZmMjczMTA4ZDg4MWM4MSBsZWdhY3ktdHJ1bmsKKzY1OTAgMzE5MDM5OGFlNTMzYzI2YTEyMjZmY2JiNzE0YmFlMzIyZGZkZmM0YiBsZWdhY3ktdHJ1bmsKKzY1OTEgM2QxMTc1ODcwMDVhMWRlMTdhYjE5MTk3MTY1ODg4MzExZTc2NDMyOCBsZWdhY3ktdHJ1bmsKKzY1OTIgYTg2NDA3YjNjM2FjNTM5N2RlMDZlYTA3MGQ5ZGJhZWJhMmYwZGQ2ZiBsZWdhY3ktdHJ1bmsKKzY1OTMgNGY4NGNlZTY1YjhjOWU0ZTJiMDVhNGYwNTA1ODIzMThkNDcwY2Q2YSBsZWdhY3ktdHJ1bmsKKzY1OTQgNjUwMDMxZTFlNDE5MGJmNmZkYWY0NzI0ZDQ3MTdjMzJiNmI1NTAxNSBsZWdhY3ktdHJ1bmsKKzY1OTUgMDgzYTdjZDgzNTQ1NTI2ZjQ3NzgyNGJlNDk2Njk0ZDQzM2YxNGU2YSBsZWdhY3ktdHJ1bmsKKzY1OTYgZDMwZjVmMGZkMGUyZDI5ZDVlYTIxNDRhMTJkZDUxNWExNTY0ZWY5NyBsZWdhY3ktdHJ1bmsKKzY1OTcgNzFiNDNkNGI3Y2QwZDM2NzllYTZhZWVlYzRmOGMzZWNjOGYzNzVhZCBsZWdhY3ktdHJ1bmsKKzY1OTggOWU2NTA0NDk0YWM3MzkxOThlODNjOWUyZGNhYTc1MTVhZDcyMTEzNCBsZWdhY3ktdHJ1bmsKKzY1OTkgMGI3M2MzMWJhYjkwOTdlYzJiM2UwZjBkZmYyYTBjNTliMjMzZjczOCBsZWdhY3ktdHJ1bmsKKzY2MDAgYzgwYzUxNTk5OWI5ODMwZGRmNGQyODUxOGVlYTU5MWIyZDIwOTdiZiBsZWdhY3ktdHJ1bmsKKzY2MDEgYTdhOWQ4MzUwNWM0N2RmYzBiMTBkODc3N2YyMDM5NTVkZWMyMjZkNiBsZWdhY3ktdHJ1bmsKKzY2MDIgNWFkZTQwOTZmYjZiODllMzI5MTZlNWY4N2RkZTY4NTZmMWY2NjQzMCBsZWdhY3ktdHJ1bmsKKzY2MDMgZWVkYWE1OTM0MWI5NWQzMTNiMjI2M2M4ZWI5YTc5ZjMxNDhmYWRlZSBsZWdhY3ktdHJ1bmsKKzY2MDQgN2I4NGRhZTk3ZWU4YTk4ODhiYjM0ZWM4ZjZjNWUyOTQzZDVhMGFiMSBsZWdhY3ktdHJ1bmsKKzY2MDUgNmI1ODkzMzRlMGU5ZTZhODM5OWRmMjM0Mjk2ZWYyN2I5ZTgzZTUxYSBsZWdhY3ktdHJ1bmsKKzY2MDYgYzE4ZDUyZTA2MjM4NzAzYzUyNDYyYmYzMGM4NjQyODAxNGY3OWY1MCBsZWdhY3ktdHJ1bmsKKzY2MDcgYTJiYzk0MTU2NGExOWZiYTZiM2MxNDViMmNiYzA0ZTVlNTc2NmQ3YiBsZWdhY3ktdHJ1bmsKKzY2MDggNjllZGM2N2U1YTY4ZjIwZWFkMWQ5ZDk0YmQyOTA2YTVkNmFlOWEyMiBsZWdhY3ktdHJ1bmsKKzY2MDkgMTg5OWI5MTU1M2QxZWYzMjc3NzBlNjBmZmFlYTZkZWMzMzUwNzBkNSBsZWdhY3ktdHJ1bmsKKzY2MTAgMjYyZmQ1ODJlNDRiMzRlODM1M2IwMTQ5MWVmMjVhYmU3ZjMxYjEzMCBsZWdhY3ktdHJ1bmsKKzY2MTEgOGI3NWQ1ZWEyMDdiZDc5ZTNiYzYwYzk1ZDY1ODc3YmE5ZTZhNWIzYSBsZWdhY3ktdHJ1bmsKKzY2MTIgN2QzZDJlZTU0YTJjYjI1YmM0ZThiMDI4NjllZTRiMTlhNmE5YTkyMSBsZWdhY3ktdHJ1bmsKKzY2MTMgMDEwMzQ0YjRhNjE2MjUzZWFkMGRkZjIxYzU1MDNhOWQzYmEyZTQ4MyBsZWdhY3ktdHJ1bmsKKzY2MTQgNWJhYTAwM2JmMzllMGI0ZTI3NjY3OTM5OGQ1NWQyYjU3MThlMGYyMCBsZWdhY3ktdHJ1bmsKKzY2MTUgNmZiMTMxNTAxYmI0NmQ2MzgwZjEyNmI0ZjAzNzViZDUwM2RiMTIxMyBsZWdhY3ktdHJ1bmsKKzY2MTYgNDQ4NzJmMjU1ZjkzNDc0N2I0NDFjZWU4YzM4NjUxYWNmMDAzNzk5YyBsZWdhY3ktdHJ1bmsKKzY2MTcgMzNiZjM4MmMyYjFkOWI1YjQwYzE0OWQzZDQ4YWEyMWZiMWQzZGVkNSBsZWdhY3ktdHJ1bmsKKzY2MTggZWZlYmYxYzRlZGEyOTY1NDA0ODBmNjg3ZmVmOWFjNjkyMDFiOTIxMSBsZWdhY3ktdHJ1bmsKKzY2MTkgOTUxZWQ5YTgzZjU3YTUwZGRhNWY2MTZmMjViYTBlMGQ1MmZkOGU0OCBsZWdhY3ktdHJ1bmsKKzY2MjAgYzRkNjZjNDEwYzgzY2QwMmFlN2NiMjNkOWYxODg0MjhlMWUyYTljNSBsZWdhY3ktdHJ1bmsKKzY2MjEgMzBmMWMwMWYzODY1MGI2OGNjNWVjYzcyM2VmMmY5NDAyMzhkYzRiMSBsZWdhY3ktdHJ1bmsKKzY2MjIgYWI0MzcxNWVmNGVlMjRmOTZlMDk1M2Y0YTI2NDNiY2JhMjZjYTE5YyBsZWdhY3ktdHJ1bmsKKzY2MjMgNDI5OGZmMjIyZDc2M2RiN2Y0OTNhMDNiYjRiODIxZjQ3ZDQyMzMxYyBsZWdhY3ktdHJ1bmsKKzY2MjQgOGEwZDQzYjEzMTI1MWQyZjZiNWI2ZmRlYzE4YTFiOGM3ZjU0YmM3MCBsZWdhY3ktdHJ1bmsKKzY2MjUgNjlhMzNmYTNkYmI4ODExNTA1Y2QwMzEzMmRkYWQ3N2E1ODQ0NDc4MSBsZWdhY3ktdHJ1bmsKKzY2MjYgOTg4MWE1MjE0ZmQyYzUwMTk5MjAyMDMyMjM4Y2M2YmE3OTcwZmNkOCBsZWdhY3ktdHJ1bmsKKzY2MjcgY2MwNmU3MDEyN2ZjMGJjOGM0ZTdkNjVmNGE4NTJlZjc0NTRkNzkyOSBsZWdhY3ktdHJ1bmsKKzY2MjggMDI2MjFiODc3ZWU1ZGYwMTFjZTViODNjOGNlMDcyYjk0NWNhOTA2YiBsZWdhY3ktdHJ1bmsKKzY2MjkgODZhNjJjYTNhMzdiN2FiZjU1OTQxNGViMGRhOGQ1NDYyMWQ3YTg4NSBsZWdhY3ktdHJ1bmsKKzY2MzAgMTQwNTA4YzljNjAzMTgyNWVmODcyMDAwNzA2MjZmYmJlMzY5OGRmYyBsZWdhY3ktdHJ1bmsKKzY2MzAgNDRhODJhYzY1NGE0MTc1NTY5ZGVlZDhlOGE5NGIwY2M4ZWRlZTA4ZCBsZWdhY3ktdHJ1bmsKKzY2MzIgZjNhMGQ1MDI0NmQyNzEzZmQ5YmRiZTYyNTA0ZDA1NDZhYzgyMWFmZSBsZWdhY3ktdHJ1bmsKKzY2MzMgZGY2Mzk4NWMxY2E5NjBmMGUzMGYzY2Q5ZGE1MDI0ZWIzN2JhZTJiYiBsZWdhY3ktdHJ1bmsKKzY2MzQgODExYTdmZjc4M2I3NzI5NmFlMGIzOGRhM2IyMjAwZWUxNDM4MDA4MSBsZWdhY3ktdHJ1bmsKKzY2MzUgYTgxYzNkZTNhYWQ5NWM5NTdkODg5NGNkY2Y5ZTY4YjlmZDQ0YjIwNSBsZWdhY3ktdHJ1bmsKKzY2MzYgOTkyNTAxODJjNDhhZmZkNTc4YTVjZjM2YWJlOGFhMjA3MzM5N2ZiYiBsZWdhY3ktdHJ1bmsKKzY2MzcgNTgyZDQ5MzdkNDk5NzFlNWM4ZDA4NGFmZmM4NDgyMTk3Y2M5YzZhZCBsZWdhY3ktdHJ1bmsKKzY2MzggMWMwNzllMjNmZDNiODk5NDBmZDk1ZWFiMDI5ZmI2N2Q5MTdkYTdhYiBsZWdhY3ktdHJ1bmsKKzY2MzkgYjNmZGU1Mjk0NDBmZDY0ZGU3ZGYyYmY2NGM3NDQzMjE4ZDFmNDMwNyBsZWdhY3ktdHJ1bmsKKzY2NDAgYTcxYTQzZDI0N2IwOWMyMDdjMDJiMzc1MmYyOWM1N2VlNDc0OGU0MSBsZWdhY3ktdHJ1bmsKKzY2NDEgYTk0MDBlZWUwNDBiMThlYjEwNzRiYjQ4OWQ0ZDljZDI4ZmFkNWI2OSBsZWdhY3ktdHJ1bmsKKzY2NDIgNzRiOGFhN2YxMTE0ZmJmM2YyZTI0ZDQ3OWZlMWU2ZWQyOTBhN2RjMyBsZWdhY3ktdHJ1bmsKKzY2NDMgNjg3ODk5YzU2M2UzZGUzODdjNDNkMWYyZTRiNDEyZDFlNTkzOGEzNSBsZWdhY3ktdHJ1bmsKKzY2NDQgM2RjMmU2NzVmMTc4MTcwNzg0YmY5NDNkMDc3MWU5ZjM0ZWViMDUwNyBsZWdhY3ktdHJ1bmsKKzY2NDUgMTg1NWU3Yzc5MWUyM2RjZDIyMzU3MzIwMWVmNTc4OGQ1NGYwZjgzNiBsZWdhY3ktdHJ1bmsKKzY2NDYgODg5OTc4MDJmYjliYjBhMTg5Y2Q0MjVmOGYzMWNlOWQ0MDZjYzMyZiBsZWdhY3ktdHJ1bmsKKzY2NDcgMjM2YWRlYTk3NjBiMDBmMjc0YzgwZGQ4ZWNiM2Q2NWMzZjgwNzkwNyBsZWdhY3ktdHJ1bmsKKzY2NDggZDI0MWJmZGE3Yjc0NmFmNDJlM2Q4ZDFiYTk1NTY3MTU5ZmI2YjBjOCBsZWdhY3ktdHJ1bmsKKzY2NDkgYmI1YjlmZjcyZGUxOTUxOGM2MDBmZTY0NjQwMTVjN2YwNTYwZThjYiBsZWdhY3ktdHJ1bmsKKzY2NTAgMzdkMDA5YjFiZjQ1ZGE5NjdjOTk5NmM5ZTJlM2U0OGY4YWVlMjA2NyBsZWdhY3ktdHJ1bmsKKzY2NTEgMzE1YTUwY2IxNWUzOGQ4OTc4YTE2ZTdiNzVhYjI0MWJhZWMwNzBhNyBsZWdhY3ktdHJ1bmsKKzY2NTIgMjgxNzRhYTM4Yzc2Mjc3YTAwOGQ1NGIzNTZhNTgzYmVmNGViYThkNyBsZWdhY3ktdHJ1bmsKKzY2NTMgMzNmNGE5MWY4NzFiZGJiOWQ2MzU0OGM2OTM2NzFiODc0NDhmNmRjZiBsZWdhY3ktdHJ1bmsKKzY2NTQgN2VkZTAxMmEzNWM1ZWYzNDZiZjc1NTljMGMxY2I3NGM1ODE0M2MyYyBsZWdhY3ktdHJ1bmsKKzY2NTUgM2Q1M2NmYWI4ODIxODhjMzg5ZDg0YjlkNmFmOWNkMDQ5OGMwOGM1NCBsZWdhY3ktdHJ1bmsKKzY2NTYgYTM5MjY0ODRhNjU4M2MzMDdjM2Q1NDk1ODY4Zjk2YTRlNTFhZmRlYiBsZWdhY3ktdHJ1bmsKKzY2NTcgYzM2MzY0NWI3ZWRkMjdiNDliZDE2MzExMmU3MWRhODczODFiMWU1OCBsZWdhY3ktdHJ1bmsKKzY2NTggMmNjYjk5YzkyODU0NDZiYmFiY2NmZTk0NjMwZmUyNjA3MjViMzdiOCBsZWdhY3ktdHJ1bmsKKzY2NTkgYTIzZjRmNDY3MjdiOWJmYTU0NmRiNzA5YTAwZTM1YzEyNWMyZGNkMSBsZWdhY3ktdHJ1bmsKKzY2NjAgNWUxMmU5YjI4ZWFmZjExMjFkYWM4MDE3NDBjN2Q0ZDkzOGNmYmVmNiBsZWdhY3ktdHJ1bmsKKzY2NjEgOGJiZWNmNjgzYTUwNDBmNmFkZDNkMzg5MjM2NTUzZWUwZGEzZDU3MSBsZWdhY3ktdHJ1bmsKKzY2NjIgYzc5NmFlMTE1NzgzMmQyY2NiNWNmMjQ4YmQyYmI3YzFlM2VlZDIxOSBsZWdhY3ktdHJ1bmsKKzY2NjMgMDNmMmMyMWFlY2FmMjZhMDM3OWJkM2ZlZTQxZTE2MjExNGE0ZGNjMCBsZWdhY3ktdHJ1bmsKKzY2NjQgOTRkYTU4MjE0ZDZjNzVmZDgwOTgzNDAxYzk2MzNkZDljODllN2UzZiBsZWdhY3ktdHJ1bmsKKzY2NjUgZTYxMzE4YzNhZDFlODdlMTY0MjI5NDA2ZjA4ZDJjMTE3NjJlODNjMSBsZWdhY3ktdHJ1bmsKKzY2NjYgZDIzZjc4NzMwZTAwZDEzZGZmMWNhZjcwYjFiN2QxNjUzNTg1YzNjMyBsZWdhY3ktdHJ1bmsKKzY2NjcgZjAyNWQ4YTM3N2I1NzAwMThkODE5ZGU0NzE1MzY1ZGVhNTY3NjcyNiBsZWdhY3ktdHJ1bmsKKzY2NjggZGZiZDZlMDBkZDM4M2QyZjNiMGVjNWY4NGQyZWQ2YzdkOTdiNTBlNiBsZWdhY3ktdHJ1bmsKKzY2NjkgZTNmNmFkYTI4ZWQwOTVlN2QwMGQ5Y2JkYzUxMDI1ODJjOGU1YzYyOCBsZWdhY3ktdHJ1bmsKKzY2NzAgNjcyMDZiYmQ1YmI1NDhiZDYwZGI2OWEyYjQ5NGExYTkzNzM1MWQ1NyBsZWdhY3ktdHJ1bmsKKzY2NzEgYjcwYmFiYTFjNzg5MzJjMjc5NjkzNDg4OTQ2YTg4N2NmODMxZGUzNiBsZWdhY3ktdHJ1bmsKKzY2NzIgMzgzODNiNjNmNDE1OGY5NDRlNzY4YTMyZGI4ZTFkZDUxMDkwNGE3MiBsZWdhY3ktdHJ1bmsKKzY2NzMgNmZiNmUwMWUyYmExNDQzNmRlMGQ4NmQxYThhNWMzY2Q4MGYxZGI4ZSBsZWdhY3ktdHJ1bmsKKzY2NzQgMjJhYWM4MWM3NTYwYzFhODk2MDMzM2YxYjExNDgwOTJmZjBlNDk1MCBsZWdhY3ktdHJ1bmsKKzY2NzUgYzYyNTljZjJjNTgxNDNkYjYxMDIzMDVkNTIxN2RlNGFjZDc1MWVmNiBsZWdhY3ktdHJ1bmsKKzY2NzYgMzUwZDBkZTA3NzM5YzM3NDcxZmU5MjlmOTY5ODkzOTFkYWI4MGI1MCBsZWdhY3ktdHJ1bmsKKzY2NzcgZDFiNDc0M2E5YTYwNTNlOThiNDA1NzA5YmNhZjk4NjQ1ZTQ4ZjcwNiBsZWdhY3ktdHJ1bmsKKzY2NzggMzEyNmY4YTE0NmE2NmY0YTc2Y2IwNGQzODhkZTVmNzliMGJiYWFjYyBsZWdhY3ktdHJ1bmsKKzY2NzkgYzc5OTQwMDgzNzhkOWRlNWEwYmYwNGEzNzZkMzQ5ZGVhM2VlMWE1MiBsZWdhY3ktdHJ1bmsKKzY2ODAgNDJlYzIzYzUwMDE4NmQ1YWJlMmRiY2MyNjFjYjU3M2Q0NTU4YjIyZSBsZWdhY3ktdHJ1bmsKKzY2ODEgNjNhZjI1NzRmNzFmNmM0MTcyYjY3YmQ1ODliYWNiODljZjQ2YWJmMSBsZWdhY3ktdHJ1bmsKKzY2ODIgMWMwMDY0MDA2OWY4YTU0MTQ1NmYzMWU5Y2IzZmJiODVkOTM2MjIwMSBsZWdhY3ktdHJ1bmsKKzY2ODMgM2ZkZTlkMmEzOWIwYzlhMjExY2JjYTg0YmYzODQ2NjA2NjkyYTNlMSBsZWdhY3ktdHJ1bmsKKzY2ODQgNjBmYzAxZDZmNzI3MGNjMzM2OGRiZjFhNjEyMjBmZWI1ODQ3YTg1MiBsZWdhY3ktdHJ1bmsKKzY2ODUgNGE5M2NjN2U3ZmI2ZjNlNWI3MGZmMDg4Y2QyMWZiNDgzYjFlZTliZiBsZWdhY3ktdHJ1bmsKKzY2ODYgZDcwMThiYzU1ODRlMGE5Yzg4N2JlMTA5YjBhNDI0NTU5MWM2ZDU3MiBsZWdhY3ktdHJ1bmsKKzY2ODcgZTMxYjRkZWZhZDViNDVjZGY0YzYwMDQ5M2Q3MDY3YTAyMjYxYTFlMSBsZWdhY3ktdHJ1bmsKKzY2ODggNjg4ZDU2NmNiMTViMDc5ZGE5ZDlhNjdiNmUwY2JjZTU2N2VlYzMzNSBsZWdhY3ktdHJ1bmsKKzY2ODkgMDQxMGVkMzgwOGVlYjhjMjU0MWFhOTU1NDEzMzg3ZDYwYTcxNGE5ZiBsZWdhY3ktdHJ1bmsKKzY2OTAgMGE1ZjAxZDQ3MDFjMDk5M2IyOTJjZDVhMjFjOTFiMjkxODQzZDYyMCBsZWdhY3ktdHJ1bmsKKzY2OTEgYzY2NzliMWM2Y2ZjMWI0ZjVjNDZjNTI0MWE4MzYyYjQ0OTExYjM5YiBsZWdhY3ktdHJ1bmsKKzY2OTIgOWUwZTg0MTdhOThhZWFkYWI5YzJmZWI4Njg2ZTQyZTNlYzVjY2Y3NyBsZWdhY3ktdHJ1bmsKKzY2OTMgOWJjZmIwMzRiOTYzZDJjN2NiNTIxMzc0MWY5NDlmZjNlNGE0NDUyOSBsZWdhY3ktdHJ1bmsKKzY2OTQgNDhiMmQ3YTQ1MzFkZjhiODI3ODBmMzBjNzg1NmRiMjYzYmVmMTM5OSBsZWdhY3ktdHJ1bmsKKzY2OTUgNjY5MTNjYTdlYzQ3MGFlYzk1MzNmZjJkMTY5YmQ4YjhmNjVhNDIyOCBsZWdhY3ktdHJ1bmsKKzY2OTYgMWQxZjBjNjQ3ZTc3YjEyMGY0ZmY4Y2IyMTI0ZWM5OTQxNGI2ZTU3MiBsZWdhY3ktdHJ1bmsKKzY2OTcgMTgwYzFkM2RhYzQxMTExZjczMzljOWYwZTIxMTE4OTNjZjBiZjVkNyBsZWdhY3ktdHJ1bmsKKzY2OTggM2ZlZWNhZDI5NmY0MGY0ZWQ4ZDkwMDQ0ZTg2ZTQwYTlhMTNhNWNiZSBsZWdhY3ktdHJ1bmsKKzY2OTkgYjNhZTBjZjJhMDZkNzEzMjRmYTg5OTgyNzg3NDBhMThlYmRkZWMwYyBsZWdhY3ktdHJ1bmsKKzY3MDAgNGZhY2FlMDBiZGQ2MTI0MDY0MmVlMGVkZmJmMWE4ZThhODZjMjNkYyBsZWdhY3ktdHJ1bmsKKzY3MDEgNTczZWQ1ZTM4NzliNjk5OTk4YWVkODgxMTQyZjRjMzQ0ODNiOGZiOSBsZWdhY3ktdHJ1bmsKKzY3MDIgODQ0NDRlYTNmNWY2OWQ2MGY2ZDg0N2FhYTk2NGNmYzYyYjI0Y2NiNyBsZWdhY3ktdHJ1bmsKKzY3MDMgMWY2OTJjM2YxZDMyZDQzOWYyOTJkMjBhYTNlZmVkNjY1Y2YxYTMxMCBsZWdhY3ktdHJ1bmsKKzY3MDQgNDFhNTJhYjI2M2RhYTI1MDdmZTMzMTUxOTIyY2U5NTAwMTA4ZjViZSBsZWdhY3ktdHJ1bmsKKzY3MDUgNWMzODdhYTAzNzA4NzMzN2ZiMjI5YTdlNTRhYjVjNDViOTUyYmRlNSBsZWdhY3ktdHJ1bmsKKzY3MDYgODg2YzBmNzc1Yzk3NmUyY2NkYjlmZjQ2ZDc0YjY2YTU5MDU2Y2Y5MSBsZWdhY3ktdHJ1bmsKKzY3MDcgMTA5OTE1OWVjODIxOWUwZjk2ZDU2OGQyMDJkMTE2OGQyMWJkNThkMCBsZWdhY3ktdHJ1bmsKKzY3MDggN2JmNzFhODM5NjYxYmMyNjAwNmFjODMwMzhlZDExZDM2MjBkMGVlOSBsZWdhY3ktdHJ1bmsKKzY3MDkgOGYyOTFkYzhmYTliNDY5ZTYwZjI1NjE3OTIwYmUzNDI0NmYxZTY4YiBsZWdhY3ktdHJ1bmsKKzY3MTAgNzgwZmMyYjE2NzRkNzcyYjg4OTgxNWY2Y2I3MmQzZGJjYjRmNjM4YyBsZWdhY3ktdHJ1bmsKKzY3MTEgY2I0OTAwZmFiNzY0MjhhZjhhZTU1ZTMxOTllOTQ2OTUyNWRlYzFjNCBsZWdhY3ktdHJ1bmsKKzY3MTIgNmM4NmQ5MTM2YzA5MGQ0ZmQzNDUzZmU5MjI2MGEzZTEyZmU3MGYyNyBsZWdhY3ktdHJ1bmsKKzY3MTMgNjcwMDU1OGEzMmZiMTMzYzkzOTFkNDA3OWVhZjE5Yjc0NzZlNDdkNCBsZWdhY3ktdHJ1bmsKKzY3MTQgMjFlNWI5NGI5OWI4MGJkZjhlNmNjZWNiMjI5OTdmYTNjYzkxM2MyNSBsZWdhY3ktdHJ1bmsKKzY3MTUgYzYyZDMyYzVmZjNkZWNlZTNmZWFhNTRjNjI0ODBlNzk1MTAwOTRlMyBsZWdhY3ktdHJ1bmsKKzY3MTYgMzU0NWFiNDNhNzJhMjE5ZjBmYmNlMzI1ZTJkZjE4Nzc2N2EzZTJhOCBsZWdhY3ktdHJ1bmsKKzY3MTcgMWNlMDBjZGMwMDNkMjU1ZThiMDhiNTk4YmM3MDkyYjUyM2NkMDc5MCBsZWdhY3ktdHJ1bmsKKzY3MTggMGZhZTM1M2IwNGNhMmQxYTUzNDE2NzhhNmVkYjE5YmUyZTI5MDdjNiBsZWdhY3ktdHJ1bmsKKzY3MTkgNDNlMmU1OTJhMDAxOTg1MTIwZGE1MDg5ZWRlMTRhMDZmZmYyMDhjMyBsZWdhY3ktdHJ1bmsKKzY3MjAgYzZlZjhiN2IyNmViYzEyMDUyM2Y4ODEwNWNlMjkzMzVhZGYyMjU2YiBsZWdhY3ktdHJ1bmsKKzY3MjEgZGEzOGNkNjE2NDEyN2NjZGJhNzk2MDk0NDYxYTk1NGU5NmI0MDliMiBsZWdhY3ktdHJ1bmsKKzY3MjIgNWY2NzJhNTEyZGM0MWZkYjgwNzkxNzYxMmExYThhZjAzOTk3OGUyYSBsZWdhY3ktdHJ1bmsKKzY3MjMgMGNmNjcxNDUyZmM1NDNkNDI2ZDUzZDZjODNjNDM3ZDNiNDk5MjhmZSBsZWdhY3ktdHJ1bmsKKzY3MjQgNDQ3MGY3ZmYwYzIzOWM4OTRjYjliNTE4ODEyOTgyZjQ3YmQwZmQ4NiBsZWdhY3ktdHJ1bmsKKzY3MjUgYWMzZmJiNjc3MWY1YzJkYjM5YmI2M2EyYjZhMjAyOTYxZDdhMWE3MiBsZWdhY3ktdHJ1bmsKKzY3MjYgNmI2YzVkMTIxMzBjZDk5MGVkYTgwNjU2MGRmNmQ0YjQ4OTViYTYzNSBsZWdhY3ktdHJ1bmsKKzY3MjcgMDJhMDMyMWY5NDY4YmVhYzdhZGRlYTk2NmM1YjBmZWUwMjhjZmMyYSBsZWdhY3ktdHJ1bmsKKzY3MjggMDVhZTU3MmMxYWM1NjZjM2U4MzUwOTYzMWU0Y2IwN2NlZDA5OWYzNSBsZWdhY3ktdHJ1bmsKKzY3MjkgNjQ3MDRkMzZiMTk4MWU4MjNmY2YwZmE1ZTg4NTcyZmIwNjAzNDA5OSBsZWdhY3ktdHJ1bmsKKzY3MzAgZTIyNWU3MGZkNjU3MWZhNjQ3ZDQzYjBiYzQyM2NkYWNmZThkZTgwNiBsZWdhY3ktdHJ1bmsKKzY3MzEgMjM5YjEwMDgxMTc2M2QzNDE5OGQxMDE5NWRkOWIxMzRhZjBhZmViZCBsZWdhY3ktdHJ1bmsKKzY3MzIgYjdlN2ViNWVmODIwYWE4Nzc5N2ExNDg5MDVhZDVjMGU5MWZhMzMxZCBsZWdhY3ktdHJ1bmsKKzY3MzMgZGJiNzYwOTVhZGVlMDk1OTkwMzM3YmVlNmJkOGRjYmJhYTc3YTkzNCBsZWdhY3ktdHJ1bmsKKzY3MzQgNTE2ZGRmNTAxOTRkMzY4MDZlZTlmYzllZGZiYjVmZmFmMTVkNWQzNSBsZWdhY3ktdHJ1bmsKKzY3MzUgNTQ0MjE3ZDU0OGE1ZjFkNTk0OTZlZGQwMjk0ZjU1MzUyNzMwZjFhYyBsZWdhY3ktdHJ1bmsKKzY3MzYgNjdkMjU4ZWRkM2Q5OWJjYjZmYTEzZWM4ODZiNGVlN2MyMzg2ZTk3MCBsZWdhY3ktdHJ1bmsKKzY3MzcgN2I1NGEzY2VkYmUwYzY0NGM3MDVjYWNiNjY2ZjZmODA4ZWI3YmE3NCBsZWdhY3ktdHJ1bmsKKzY3MzggMjUzMDFiOWVhMGNjZGU5ZDZmMjdhMjdiZDdjOTAyYjRlY2Q4NTRjNCBsZWdhY3ktdHJ1bmsKKzY3MzkgODg5MmRhOTU1NGE1YmQxMWZlOGJjN2Q2MDRlNGZiMjY3ZjdjODQ3YyBsZWdhY3ktdHJ1bmsKKzY3NDAgZjBlODIxMjliZDNlYTM2MTdhMmYxZjVhNzYxNmM5MmU0NzRkODNhOCBsZWdhY3ktdHJ1bmsKKzY3NDEgNjA4MjUwMWVjYjJlNTg2YzIwMDUwYmIzOTNjNGU2NWIwZjE1ODFlMyBsZWdhY3ktdHJ1bmsKKzY3NDIgMmU4N2I4MTE3NmY5ZDMyNWE1NjkzODMzMDRlMzQ3MWU1NGVkOTkyNCBsZWdhY3ktdHJ1bmsKKzY3NDMgMzhjOGExY2NjMTZjNjBlMDM3YWU4ZDBlYWI3YzVkZTRmYTc0NTlkNyBsZWdhY3ktdHJ1bmsKKzY3NDQgZWY1MWU0YTJlNzk5NDQ5ZjNmNWQ5Y2RmYmZhMzc0NjU5ZDVhOWQ0OCBsZWdhY3ktdHJ1bmsKKzY3NDUgNjUxMjBlOTFiMDYxZWE3ZGYxYTZmNjgxYzM2N2E0ODRlMGZkZjhhNCBsZWdhY3ktdHJ1bmsKKzY3NDYgZTc4OTAzMzZmMTA3MDRmMzM0MGI4OGE2MDlkNTBjZWJjMWIxOGM2YSBsZWdhY3ktdHJ1bmsKKzY3NDcgYzQ4NzY0YmY2MmQxZWQwNmE3M2MxMGYzMGRkNjQxNDJmZjcxOGJmZCBsZWdhY3ktdHJ1bmsKKzY3NDggMzc5OWI3MTE2MzFiMjVlYzY0NmVlODc3ODNjMGIzNWRhNGM2MjU1ZiBsZWdhY3ktdHJ1bmsKKzY3NDkgY2I4NDFmMWIwMjJlYTIyNGNjN2M2ZjVjY2Q5NjY2MDdhZmI2NTVmMSBsZWdhY3ktdHJ1bmsKKzY3NTAgYWUxNzhmMTUwNDAzMDBjNjkwYTU2ZDIzOTNhNzdhNjY1MGFmODU0NSBsZWdhY3ktdHJ1bmsKKzY3NTEgYmVmZGYwZGMwOTZiMDhlZWM1MmYzZThiZjYwYmJiYWY0ZGFjNTJhYSBsZWdhY3ktdHJ1bmsKKzY3NTIgZjZlODI0YjI3MDMyMzVkOGMzNTliMzIxNjAwOTJmZDIzZDc4YjFmNCBsZWdhY3ktdHJ1bmsKKzY3NTMgOTRiNzYxZmFjNGQ3YmIzYzhhY2MzYzliZTllMTBlZTFjYjgwZmM4MCBsZWdhY3ktdHJ1bmsKKzY3NTQgNTY5MDk3ODFhNzQxYjEwNTA1MjZiNTIyNmUyZjY0ZDlkZGVlNDkzZSBsZWdhY3ktdHJ1bmsKKzY3NTUgNGJkYWZhNzAzYTA0YjVjN2I2YmU2NDlkN2U1ZmZlNWVkNGFlMDU1MSBsZWdhY3ktdHJ1bmsKKzY3NTYgZGFmMTJmNjRkNWFhM2Q1MTg1MjAwNGUzYjQ1OTAxYWRlYWE3NDc5NCBsZWdhY3ktdHJ1bmsKKzY3NTcgODM5ZjcyNjEwYWUxZjhiZTFiYTJlMzE3MjNiMzY3ZTg3N2QzZmIzZiBsZWdhY3ktdHJ1bmsKKzY3NTggZTIxZDNlN2FlYTg3MTk2YzQzMTk2NWZmMzNjMTIwMjhlNzIzODY1NSBsZWdhY3ktdHJ1bmsKKzY3NTkgYjY5ZjRiODM4OTJlNjg4NWI2MDg5ZGNhMGNlNzYwY2NmNGI1MTY4NiBsZWdhY3ktdHJ1bmsKKzY3NjAgZGIzNWQyYjkzZWJhMGY5OTY5ZjBiMzJhODVmMTJhZDE4Mzc3YmViNCBsZWdhY3ktdHJ1bmsKKzY3NjEgZjJmNWNkN2NiNWI1NmIzYTZlYmEzM2EyM2Q1MDhkZTE0NTgxOGY4NyBsZWdhY3ktdHJ1bmsKKzY3NjIgNDNhZTA0NWFhMTBlMTA3YzQ5YjVhZDUwY2IyYTdjOGQ2ZDlhZDk5YSBsZWdhY3ktdHJ1bmsKKzY3NjMgMDAzNmRjZjI4NDAyM2E5YmQ4NjMyMzI2ZmNjYzg0MmEwMTBjYTE4MSBsZWdhY3ktdHJ1bmsKKzY3NjQgOWM2ZWFiMGNmNTQyZGUxYjE0MDVjMTA1ZWUzYmJlYWViNzk0ZDcyOSBsZWdhY3ktdHJ1bmsKKzY3NjUgMTQyN2Q2MWYxMzA3Mjk5ZjgyNDNhNDFjMTI5YTViYzY1OWY2Y2NlNyBsZWdhY3ktdHJ1bmsKKzY3NjYgYWJkMGI5ZmY2NzU5MmQxMDQ3NzM2YTdlZWY1Y2Q5ZWJjOTJiYTZjNyBsZWdhY3ktdHJ1bmsKKzY3NjcgNjliYmMyMWY1NWNmMmUzNGU0NzM4YWE1MzI0ZDIzNjM3MDBlYzRkZiBsZWdhY3ktdHJ1bmsKKzY3NjggNTIwZGRjYjNkNWQ2OGUyN2IwNjc0MTI4YWZhODY1MWE4ODA1NDQ0NyBsZWdhY3ktdHJ1bmsKKzY3NjkgMDA4YjlmYzU2NWJmZGMyNzI4NGFhNjMzNTUzMGJlMGUyMzU3ZmM1MyBsZWdhY3ktdHJ1bmsKKzY3NzAgNzVkNzU3MzJhOWU0YmU4ZDViNWIxMmMxOTI4YWY4YTNiMWJjNTQ0YyBsZWdhY3ktdHJ1bmsKKzY3NzEgY2Y5YTk3YmZjMDIzMzllMDNlNGI0MDYwYjk4ZTZmNGQzN2U0ODllMSBsZWdhY3ktdHJ1bmsKKzY3NzIgNmY3MDkwYTgyNjQ1OWQxYjUzZGZiZmRlYTFhNzkyNzI0ODIyN2ViMCBsZWdhY3ktdHJ1bmsKKzY3NzMgZWIxZWQ3NDM5NzJjNDI2YThjZGQzZDgwM2JmNmNiYTcwYTYyODQ1NSBsZWdhY3ktdHJ1bmsKKzY3NzQgZTA1ZGE4MDQzYjUwMGI0MTUzNGRlYmM3MjVlMmZjZGJjMmI5NWZmNiBsZWdhY3ktdHJ1bmsKKzY3NzUgODY4MDYzMTYxNjY1OGU1ZWQ1ZWE0M2I3MmI5NTIyMDdhM2E5N2VjZiBsZWdhY3ktdHJ1bmsKKzY3NzYgZmM0ZjEyODlmZTZjZjZmZDk0NTZkMTQ2NzAwZmMyNGIyYmQyZTU1MCBsZWdhY3ktdHJ1bmsKKzY3NzcgMzg4ZjljMjIyMGNlNGY2MmMyYTNhN2M2YzQxNzczODE1MzkwM2Y2OCBsZWdhY3ktdHJ1bmsKKzY3NzggOTVjMzE5MzFiNzZhZjcwODM3YTNhNDE0ZjE4ZGI0MGIwMGExZmNmNSBsZWdhY3ktdHJ1bmsKKzY3NzkgNzgwOWI2YjRmZmQ5MzUzODY2NmIxM2Y3ZjQzNDllMDQ4ZGJkODhkMiBsZWdhY3ktdHJ1bmsKKzY3ODAgZTlmNDhkN2U3M2IxY2FjOWEzZTE1Y2QxY2ZmMGFjZTFiODYyZDk1NCBsZWdhY3ktdHJ1bmsKKzY3ODEgMmVlYzM1ZTJhZmZmNzNmMjllNWQ0ZWZlOTQ4YTgzZjcxNTc2YTk5YyBsZWdhY3ktdHJ1bmsKKzY3ODIgMWEwZjM0YzE4MTYzY2MwNDk1Y2JlYTEzNDE0NDc0YWY2YWZlYzUzZSBsZWdhY3ktdHJ1bmsKKzY3ODMgZWNiZWI0NDVmNjJlNTA2ZjhmNzU0ZjEzYzM2NDAzMGYyNWUzZjc4YSBsZWdhY3ktdHJ1bmsKKzY3ODQgM2Y2ZDI2MTY1NGNhMmU5ZGI5MzkxNTYyOGFjNGExNDNmYmQyYmY2YiBsZWdhY3ktdHJ1bmsKKzY3ODUgYzk3ZmZkMmViZDUzOTY0MTBkZTlhNzNmYTY3N2E5MzVhZTM2MWY2YiBsZWdhY3ktdHJ1bmsKKzY3ODYgOTM3ZjY5ZmQ0M2ZlYTVlNzhiMTYyMTJiNzk0MmE5OGNiZTcwZGEyMyBsZWdhY3ktdHJ1bmsKKzY3ODcgOTg0N2RlOTQwNzkwMjk5ZmNlY2YyZDFiOTAxYzY5OTE1OTAwNjJkZCBsZWdhY3ktdHJ1bmsKKzY3ODggM2IzODcwYjlhY2YyNDM5NzY3YWY4NTVlMjk5ZjlmOTA0YTAwY2NmOCBsZWdhY3ktdHJ1bmsKKzY3ODkgNDZkNzM2ZmI5ZGEzMjI4MmQ1MjhhYWVjYTU5YjBlNWQwZTRkMTIxMyBsZWdhY3ktdHJ1bmsKKzY3OTAgNzcyODI4YzFiMWY2ODc0MTlhNTIxN2FjZDE1NWFmMWNmMTBmZDRmZCBsZWdhY3ktdHJ1bmsKKzY3OTEgMGY1MWYxZDcwZDQ1MjZmY2FhOTllZWU2M2I2M2JjZTUwNDcyNjBjNCBsZWdhY3ktdHJ1bmsKKzY3OTIgOTdkMzY1MmU1N2QzNWMyM2ExZGYyZDUwMzRkNjMxNDM2ZmZlNzcyNyBsZWdhY3ktdHJ1bmsKKzY3OTMgOTcxMzM5OTZlMjJmMGYyYTIwNWExNWM5ZGEzOWEyMmNjNDE5NWFjYiBsZWdhY3ktdHJ1bmsKKzY3OTQgZDU4NzE5NmY5YmVmYTVlYTZlZWVlYTIxYTRjN2Y4YzdjMzAyYWExMyBsZWdhY3ktdHJ1bmsKKzY3OTUgOWQ0NDUwMzUwNDUxZjFlYmRlN2Q2YjZjMDE4Y2ZiMzM4MDVmZTFkZSBsZWdhY3ktdHJ1bmsKKzY3OTYgNzczOTdkNTFmODkyMDRkZWFhZTRkNzhhMGU1ZWQxZDRlN2U4NmI1MyBsZWdhY3ktdHJ1bmsKKzY3OTcgMzE0YzEzNDQ1YTAyZGYwMDE0Y2YxZDM4YjU5YTIxMWM5Mzk5ZWNlMCBsZWdhY3ktdHJ1bmsKKzY3OTggMWFmY2QxY2QzMzNiNTdjM2ZmMTA0N2I5ZDU3ZjE3MTBjOTZjZGY3ZiBsZWdhY3ktdHJ1bmsKKzY3OTkgMTJjMzg2NWFlYWEwMzYzNTA2OTk0ZTQ5OThiNzY1OGZmNmM4MmM5YyBsZWdhY3ktdHJ1bmsKKzY4MDAgMDI3ZmYxNTU0ZTY2MmJmZjJjYjNkYjlhMmQ4ZDMyNWJiMDgwMjY3ZSBsZWdhY3ktdHJ1bmsKKzY4MDEgZmI3MzBmYjEzZmFiNWNhZTY3NDk1ZjY3YzRjMDAyM2M5OWJmOTQwMiBsZWdhY3ktdHJ1bmsKKzY4MDIgYjAzYWIzNWQ1MmRmOTc3YzliZDczYWVhMmI1NGYyMGFmZjdhNzQzOSBsZWdhY3ktdHJ1bmsKKzY4MDMgYTI0MGJlNWJlNmI0YzQ2M2E0NzIxNWI4OTQwMjZiZWNkYzUwYjdlNSBsZWdhY3ktdHJ1bmsKKzY4MDQgOTA1ZjdiNGIxMzIzODcwN2ZlN2JiOTU1OWQwZGExZDE2ZDI1ZTcwNCBsZWdhY3ktdHJ1bmsKKzY4MDUgYzJlYjM4YjY3NGYzMDk4OTI0OGM2NTRkYWQ4NzhmNjM1MDllZDQyNCBsZWdhY3ktdHJ1bmsKKzY4MDYgZDA0NDY5ZDAyNTZjZThlZjFiYjA0MWFlZTY0Y2NhZTBmYzkxNzk2MiBsZWdhY3ktdHJ1bmsKKzY4MDcgZWUyMDI2MjE3MzQ5OWM0ZTVjNGYxMjU1YzE4ZWNjOTFkMTZhMmY0YSBsZWdhY3ktdHJ1bmsKKzY4MDggZjM3Y2JmYWE3MzI4MTI5YTBkOGRmMjkyNDgyMDkwZDc1MmQ1OGRiMiBsZWdhY3ktdHJ1bmsKKzY4MDkgMzY2ZDcyZjEyNzk0YzU2OTU3YmM3NWU0MzhjOWY3MjVhYzNkMTU0NSBsZWdhY3ktdHJ1bmsKKzY4MTAgNGRiZmQ0ZGZlMjgxYzkxMjU1MmNiM2FlNzNkZjA0MDk5OGVjOGQ1ZCBsZWdhY3ktdHJ1bmsKKzY4MTEgMzc2ODIyYzY1ODEwODQzZWY4NjEyZGRkMjNiYzA2MjRjNTIyMzI2OCBsZWdhY3ktdHJ1bmsKKzY4MTIgYWYxNjg0ZmM5YzYzMjRkOGQyNDFlMjJiNzgxYmU2NmZhYTk0M2MyZiBsZWdhY3ktdHJ1bmsKKzY4MTMgZTdiYTA5MmMzY2YzYzcxNTNiNWQ5YjQyZDdhMjM3YjFlNGZhZWZhYyBsZWdhY3ktdHJ1bmsKKzY4MTQgMmRmNjJkYjM2NmI3NjgzMDJhYjM0NDg3ZDJiNDYzZDhmMTZmMDY1YiBsZWdhY3ktdHJ1bmsKKzY4MTUgNWE3NTUxMjM2MDYzNWFlMzM2NzE5MGZlMGVkZGVlYTQzNGJmYzQzOCBsZWdhY3ktdHJ1bmsKKzY4MTYgODk3Mjk3YWJlNWI0MDVjMTYyYjFkMThlM2FmYTZlMmMyM2M1OTFhZCBsZWdhY3ktdHJ1bmsKKzY4MTcgNGJiZGU4MDRiNjk3ODRiNGIwZjBjNThjNzA1MDUzZmQ4NjEzZDYwMyBsZWdhY3ktdHJ1bmsKKzY4MTggNWNiZGJhNGQyZTE1MjVkOTQyMGFlYTk3OWExMzRjZjBhYzA4NzI1ZCBsZWdhY3ktdHJ1bmsKKzY4MTkgNGZiODg0YmYxNDdjYzFjMWI2M2M1NTBkNTBiYTllZGMyODI3YTRjOSBsZWdhY3ktdHJ1bmsKKzY4MjAgN2I2MDBlNzNmZDJhOGEwZmZkMTgyODA5M2Y2YjRjYTlhMDQxMzNhYyBsZWdhY3ktdHJ1bmsKKzY4MjEgYTVjMjlhY2NjNDM4ZTgwYmUyMDE0ODEwMjVhZGZjMGMwOWE0NzBhMSBsZWdhY3ktdHJ1bmsKKzY4MjIgODUyY2EyM2M4MGNjZTAwZjUxMmE3OTczNzhmMWJkNWJmZGY1YTA2ZiBsZWdhY3ktdHJ1bmsKKzY4MjMgOTgzZGY0MzY0NTk1NzBmZDg1NjFiYWVmNzZhMGFhMjU4NjQ1NWJjNCBsZWdhY3ktdHJ1bmsKKzY4MjQgYTIwOTkxOTQ2Mjg1MDNhYmU3NmQ3MGM0N2JhMjMwOTU4YmMwNjZlNSBsZWdhY3ktdHJ1bmsKKzY4MjUgMDJhMjRlNDhiMzc2ZTU2YjQ5YmNlOGZmMTk4ZDczMjA3MWNlMDdkYSBsZWdhY3ktdHJ1bmsKKzY4MjYgNmVjMGNhZWFmODIzMGQ4ZWZiNjEwN2I0YzRiZDgwNTI1MWRjZDgwNyBsZWdhY3ktdHJ1bmsKKzY4MjcgYWFjOGE5OWExZjljNGZhMzA1ZDBiMmNlNjM0MGMxMTZmMjQ4MjhkYSBsZWdhY3ktdHJ1bmsKKzY4MjggNjkyNTA3MDM5NTNhMmE3MTA3MmYwOTZiYzg2MmY5NjVlOWVkZjkyNyBsZWdhY3ktdHJ1bmsKKzY4MjkgZWI0NTVkOTliYTk4MjI2ZmI4YWM0ZGFkMGFiM2ZiZDljZmZhMjlmYSBsZWdhY3ktdHJ1bmsKKzY4MzAgOTVmZjg5ZDgzZDYzOTdhODRlZDgxYzEwMjUwMGJlM2U5ZDRhNTZlYiBsZWdhY3ktdHJ1bmsKKzY4MzEgMjkxMzU5NzQ0M2I5MDBlMDBiNWUxNTkxMGRmNDc2MjU4MDFkMzMzMSBsZWdhY3ktdHJ1bmsKKzY4MzIgMDIxMmI0ODA5NDRiYzIwMzk3ZDY4OWQ5ODE4ODVjMjE1MDEwZTIxMCBsZWdhY3ktdHJ1bmsKKzY4MzMgNGUwMGU1ZGFhNjEyOGQyOGIwNzUyZmNhMTI4ZTM5M2VkYTMxZWI0YiBsZWdhY3ktdHJ1bmsKKzY4MzQgZGJmMjczN2QyYzgxY2EzZTNjZjM5ZGIzNDhhZDM4NjQ3OGE4ZDBhZSBsZWdhY3ktdHJ1bmsKKzY4MzUgYWY3NTQ5NjFhY2M1MjRjOTEwMDUwM2Q5YjczZTcwYTQyNmFiNDVkNCBsZWdhY3ktdHJ1bmsKKzY4MzYgMzgzNjExYmRhOWU2ZGVlODlhYmRhNTU0MThiNjM1MmYwYTkzM2UxMiBsZWdhY3ktdHJ1bmsKKzY4MzcgN2IxZjZlNWU5Mjk0NjMwYzRiMGM0YmQyNjgzYTU1MTE3MTMyN2ViOSBsZWdhY3ktdHJ1bmsKKzY4MzggMzQxODJhNjQwOGUwNGY5NWIwMWQyYjJiOWY4YjJmMGFhY2Y5NWE1YiBsZWdhY3ktdHJ1bmsKKzY4MzkgOTEzZmM5ZmY0M2FjMTIxYTk3MjA5YThjNjQyMGRlMGMyOGViYjk3MCBsZWdhY3ktdHJ1bmsKKzY4NDAgM2ViNzRkZjY3MmEzOTk3MzAxZWFmYjAxNjIzMTRkODFjMjUzYWNhYiBsZWdhY3ktdHJ1bmsKKzY4NDEgMzE1YTc5MTk5ZmM4ZWQ3Y2ZkOWFjNGFlOTFmMWFjYWM5ZmEzODllYyBsZWdhY3ktdHJ1bmsKKzY4NDIgYTA1ZjhkOGM2NzY4ZjgxY2YyMjViMzBlMmQyYWEwMzRjNTI4N2UzZCBsZWdhY3ktdHJ1bmsKKzY4NDMgM2U3N2Q2NjM3YTJiOTBkMzJhNjk3NDBlZDA5MjE3MjgyM2YyZjI2ZiBsZWdhY3ktdHJ1bmsKKzY4NDQgYTcwNjkyYTZkOGNjZjU4ODBmMmU4NDZjOTFhOTM2MWYxZGNjOTIwYSBsZWdhY3ktdHJ1bmsKKzY4NDUgYzI3N2VlOGM2NjljZGI4MjBhOWQzYmJlMjNkNjAzNWQ1MjZkZmFlYiBsZWdhY3ktdHJ1bmsKKzY4NDYgY2JkNDM0YjQ2YzFhNjNmMzIyNGY4YTgxMzJhMGNhYmZhOTA3ZDZjNSBsZWdhY3ktdHJ1bmsKKzY4NDcgOThlYTgwMDUxZGJjOTFkMDk3MDJiNWRjMjRiMjM3MDA0ODVjNzAyMyBsZWdhY3ktdHJ1bmsKKzY4NDggNDYxNDBmNTg1NmQ5MGEwZWE4NDZjZTk4ZTFhN2JmZTIwMGExYTdiMCBsZWdhY3ktdHJ1bmsKKzY4NDkgMzFjN2Q4ZjQ1YWViMDg1NTc4ODNiZmU3Y2Y2NzE5MDVkMGQyYTUwNCBsZWdhY3ktdHJ1bmsKKzY4NTAgZDRmNjRmYzQyZDg0NDkwNTRmMzMxN2VkNzQ5MjA2OWEzNDQ2M2Y1YSBsZWdhY3ktdHJ1bmsKKzY4NTEgNWY4YTY1M2IxNzc5YTUwZGU3ZWNjY2VjMDQ4ZDkxOWI2YTQ4MTc5MSBsZWdhY3ktdHJ1bmsKKzY4NTIgOTY2OTlhZjQ4MWJhOWU5ODJkNDFhZmRhZWI0MWJhZmNhY2MyZjVkMSBsZWdhY3ktdHJ1bmsKKzY4NTMgMzA2MTY3NmE2NTlhZTNlOGU3OTZhMDg5NzBhZDliZGViZDI2MTM1OSBsZWdhY3ktdHJ1bmsKKzY4NTQgYWYxYmYwZjZlMmRiMTEwMGY0ZmEyZTI5YTEwZjYxZTc5ODhhMjQ0OCBsZWdhY3ktdHJ1bmsKKzY4NTUgNzk4NzMyZTY5YjNiYTFhNjI0ZDhjYjk5N2Q4YjZlMjIyYzYxZWU0NyBsZWdhY3ktdHJ1bmsKKzY4NTYgYWQ0MWRlY2M1ZmE5M2Y5Yzg4YjVhOGU2OWJjZTI4NDMyOGI4MDVhNCBsZWdhY3ktdHJ1bmsKKzY4NTcgZTAzM2M3ODZmMjk3MWM3NjQ3NDlmOWYzOTUyNDBjMGU1YzM4Y2IxZiBsZWdhY3ktdHJ1bmsKKzY4NTggMGRlOWM1NTRiYTAwYzBkNmVmNWRhMzU4MTA0ZDExY2M2ZmJmMTc0NSBsZWdhY3ktdHJ1bmsKKzY4NTkgNzBjYzIzOGQ1NjNlNjIyNzkyZGU3ZmY4MjgxYzM2MmZlNDMxZjEwMCBsZWdhY3ktdHJ1bmsKKzY4NjAgM2M3ZWZlYjYwN2EwNzBjYjQ0NTkyYWM5OWNmMmZmN2FjYjNjN2M0MSBsZWdhY3ktdHJ1bmsKKzY4NjEgMmUyNzJiZjVhNDNlODQ0N2JlMDhiNWU2YmI3MGFlZGYxMmI4YmJhYSBsZWdhY3ktdHJ1bmsKKzY4NjIgYTc3ZjRjMjI2OTdmZjlhZWY3ZjU3YjdjYjU0Y2IwMGZmYTJkOTQ2NCBsZWdhY3ktdHJ1bmsKKzY4NjMgYWRiZTYzMzE3Y2NiM2RjYzY3YTRmNWI0NTJmNmI1N2M0NmVmYmY3OCBsZWdhY3ktdHJ1bmsKKzY4NjQgNzc5NTRmZTQzNzZjYjQ5MWUyN2I1YTQ4NDNhNWY1MDA2YTgyMjI5YiBsZWdhY3ktdHJ1bmsKKzY4NjUgNjJiNjViZTJiNzdmMWIxYTlkNzE3NmEyYjVlZTZiMzI0NTBhZDdmYiBsZWdhY3ktdHJ1bmsKKzY4NjYgNzJhMGNmZGEyMDA0NDc0NTkwOGNkOGQ1MTlhNjUxM2Q4NTQ3OTA4MSBsZWdhY3ktdHJ1bmsKKzY4NjcgNzk4MDg2MzIzNDY0NWM4NThiNzUzZmVhZjA1MjMxZTg5NmExNTcyMiBsZWdhY3ktdHJ1bmsKKzY4NjggNWM4NmY2MDUzOWY3NDI3ZTBhZDEzY2YwNDFjYTA2MTRlODdiYmYyOSBsZWdhY3ktdHJ1bmsKKzY4NjkgNDhkMWY1YmViMTZiYTY0OWFkNDJkNmVhMTJjNDdhYjg4ZTU3ODYwNCBsZWdhY3ktdHJ1bmsKKzY4NzAgZDU4YTg0OTE1ZmFkZTE5YWUyZDgyZjBkOGE1OTE2MWI0NDkzYjEyNyBsZWdhY3ktdHJ1bmsKKzY4NzEgODkwNDM0ZDViZWMyZjljMzlhYTZlYTZkMTExNmU0NDE4MjBkZjBiNCBsZWdhY3ktdHJ1bmsKKzY4NzIgZWM0YzQyYmVhNjlkNmNmYjEzOWM0YzQ0ZGNlMTE4YmU4YjlkYTUwZCBsZWdhY3ktdHJ1bmsKKzY4NzMgZmRkMTI5ZjA1NzRlZGNjNjE3YjllYTAwNmVjNjU5N2ZmYjFhYTRiMyBsZWdhY3ktdHJ1bmsKKzY4NzQgMDkxNzc1YTVlMTliMzVlOTQ0NTFiMDQ3MTc2MWJlNjM0ZTdiMTk3YSBsZWdhY3ktdHJ1bmsKKzY4NzUgZDE2Yjg2MjFhM2YwZWFkYTM5MDRiMDZjNWQ2MzdhOTllMGJlNWE5NyBsZWdhY3ktdHJ1bmsKKzY4NzYgMWQyNzVjZDQyYzliMTg3YzYzMjlhYzhhZDIyNWI2ZjcxMmI4Zjc4MSBsZWdhY3ktdHJ1bmsKKzY4NzcgM2IzZjdjM2Y2ZGEyZjhmMGQ1ZTg0ZWI2ZjYxNzQ1YmQ2NzNlZThkYiBsZWdhY3ktdHJ1bmsKKzY4NzggMWUyZDI4MDYwNmQxZWZmOGQyMzNkNzM4ZmE5OGY3NWJjMDU4NmE4OSBsZWdhY3ktdHJ1bmsKKzY4NzkgZTUyOGMwYWNlNGU1ZGE5ZDIxY2MzZTI4N2E1MzRiMjg1ZDE1MGNhNyBsZWdhY3ktdHJ1bmsKKzY4ODAgNmYwMzJlYTI2NjQyZjZkY2UwMGNlZmFlNjE3OGQ1MDJmYmNhMjcxZSBsZWdhY3ktdHJ1bmsKKzY4ODEgN2RkZDhiM2Y2ODAyZjBlMmU5MzM5ZTc4NmY4OTg0NTQxYTJiZWQxOCBsZWdhY3ktdHJ1bmsKKzY4ODIgNmM3NzFlYTM4ZWVlODcyOWExMzFlY2M0OTYyNzdmNmYwYTVkODNhOCBsZWdhY3ktdHJ1bmsKKzY4ODMgYTk4MDExZjBmOWNhNWI0YWIxYjNjZThkMWI4MTVkNmQyMTY2OWQ3OSBsZWdhY3ktdHJ1bmsKKzY4ODQgNGNlZjIzZTFkY2NhODdmZjE4NzA4ZDdiZDU3ZjY5MGY5ODMzN2I2NSBsZWdhY3ktdHJ1bmsKKzY4ODUgZDczODQ5MGM4ZGExOTNjMmZjZWMwYzE4NWE4NGNlNGI1MzUxYWJmOSBsZWdhY3ktdHJ1bmsKKzY4ODYgYWMzMzI0ZTYzOGU5NmMyNDM4ZTE1NWEyODY5YzRmYTZjZmUxMGZkZSBsZWdhY3ktdHJ1bmsKKzY4ODcgNzdkM2QzMDEzNjkyZmRjM2I0NDQxMGIxYTM5NjBkMTk0MDA3YjEzOSBsZWdhY3ktdHJ1bmsKKzY4ODggMDJhNjhkNjIzODA1YzAxMjE1ZTE1MTkyN2UzMmM0NjRiNTE1ODI1YSBsZWdhY3ktdHJ1bmsKKzY4ODkgM2RiZWQwZmY5Y2YyMzM0ZDc2MjdmYjQ5N2RlNWMzZmE3ZDRlZjU2ZiBsZWdhY3ktdHJ1bmsKKzY4OTAgZmNlNGY4N2U1OTc0OTQ3YjgxM2U1MDUyMDVmZGRmMmU4N2U3NjViYyBsZWdhY3ktdHJ1bmsKKzY4OTEgYzE0MzVjNWRhMjgxN2IzMDY0NThlZWQyMGIyNzhkOTljYzRkYzAyYiBsZWdhY3ktdHJ1bmsKKzY4OTIgZjQxYWI3MTNmN2VhYmU5MzgxYjdhZjEwNzZlOTNlNDc2NTIwMmU2NSBsZWdhY3ktdHJ1bmsKKzY4OTMgMmVhY2QyYzhlYWJmZjQzNTU0NjcwZWE3OGUzODM5Zjc5ZDZiOWNlZSBsZWdhY3ktdHJ1bmsKKzY4OTQgN2ZmZmY2OTVmMjFkYTc3MTk0YmM1ZjQ3ZjAwMTY4YTJlZDBjMWRkMSBsZWdhY3ktdHJ1bmsKKzY4OTUgOTNkMDVlMTc4MjE2NGRmN2IwZTdjMmZiZTY0MzA5YWRlYTI2ZmVmYiBsZWdhY3ktdHJ1bmsKKzY4OTYgZGQ1ZTllODU3MTg2NTlkNjVjNDFhMTg1Mjg3ZDNhY2IxMzM1NzdjYiBsZWdhY3ktdHJ1bmsKKzY4OTcgZWY3NjA0YzA3ODc3ODFiOTEzZTcwZTZmZTAxNjliOTE3NjgwZGUwYSBsZWdhY3ktdHJ1bmsKKzY4OTggNGY2YzU2MjkyZDM0ZjZiZGU1OGNlZDE2NmM4OTQ3ZDEzNzU4YzhhZSBsZWdhY3ktdHJ1bmsKKzY4OTkgNWUwMzg4NTZmYTU2ODg2ZmI2YmY4MjBlYTBkMjYxNTk4NjBkZDk4YyBsZWdhY3ktdHJ1bmsKKzY5MDAgNzVhYmU3MzdlNzBiNjE3MTlkMTExZjcwOTdkM2Y0YTU3MzBjM2Q5MyBsZWdhY3ktdHJ1bmsKKzY5MDEgOWM3ZWYwMzBiZWM4MDExYTNiMjRmNjEzMDBlMDRhZjBlNTY3M2U4MCBsZWdhY3ktdHJ1bmsKKzY5MDIgOTM4YmU3YTMxMDZmMjg1YmQ3MmI1MDQ0OWY3N2Q3NjdmODlhNzA4ZSBsZWdhY3ktdHJ1bmsKKzY5MDMgMzRlZWI2MWYxMDI4Mzg2ZDhhNTI0MDMwMzViZWFhYmJkNzg3NGQxNyBsZWdhY3ktdHJ1bmsKKzY5MDQgOTI3NTMyMDcxNDkwNDQxMzFlZTJhNzZlMTc3YzViZDEyNTI3ZTg3NiBsZWdhY3ktdHJ1bmsKKzY5MDUgZjJmOTQ2YmQ3ZjQ3YzVjOWE2MzVhOTY4YWY0NjVkYzc5MDhmMWIyOCBsZWdhY3ktdHJ1bmsKKzY5MDYgMWNjY2U1ZTRmODA2ZDU0OWMxYWEzZmFiOWM0OGE3MDhhNGM0OTg2MCBsZWdhY3ktdHJ1bmsKKzY5MDcgMzQwYWRmYWE5ODU0M2YwMTllYjBmZWU4NjdhZDlmMmZmZjBkN2ZiYiBsZWdhY3ktdHJ1bmsKKzY5MDggYWMyYTYyN2NlM2E3ZWY3ODAzN2U5M2EzZGQzODk3YTliMjczMTY4MSBsZWdhY3ktdHJ1bmsKKzY5MDkgMjVjNTMyODY3NjNkMDM1OWViMzIzODJmMGRjNDAyNzViNWZhMTllZCBsZWdhY3ktdHJ1bmsKKzY5MTAgYTM2MjM1NjMxMjczN2I3N2M5OWIyNDgwNzljODUwZjZjZWY3YzYyOCBsZWdhY3ktdHJ1bmsKKzY5MTEgN2RlNDU3YmRjOTQ2Njc5Mzg2NjE0ZmUyM2JmMjJlODg1YWFhNjBhMCBsZWdhY3ktdHJ1bmsKKzY5MTIgZTg4YjMyMTVlOTRhNTkwMThiODRmMWE5NjU3N2JmZDMxYzk3MWI1NyBsZWdhY3ktdHJ1bmsKKzY5MTMgZmIxMjM3YmY3MDIyYmI3NzczOTc4ZGIzMjEwYTJhZWU5ODA3N2E3YyBsZWdhY3ktdHJ1bmsKKzY5MTQgZmNlMjk2ZGJiMDNlMTY5OTgxMDNiN2EwM2ViZjUyMjkxODUyNDBlNSBsZWdhY3ktdHJ1bmsKKzY5MTUgNzgwMTBjY2I4YTQ2MTg4MWViY2I1NTQzNmM4MzMwNGZmZmEzM2M2MyBsZWdhY3ktdHJ1bmsKKzY5MTYgMDU0OWUzNDI4ZDU3ODM1ZGQ1YWNhZDdhOTBlN2RjOWFmMGYzYWQxMiBsZWdhY3ktdHJ1bmsKKzY5MTcgMWMyNzQ0OTEzMGJhNDQ1YzIxMTAxOTMxMWIyMjkzOGJjODE1MmQxMCBsZWdhY3ktdHJ1bmsKKzY5MTggZmE5YWJmOWE4NjI0ZTZmNmU3NDVhZTE1ZWNmNDM3N2VjMzIyYjk5MyBsZWdhY3ktdHJ1bmsKKzY5MTkgMDJiMWYwOGUzMGEwM2NhZTk0ZmJmNzI1OTljZDYyN2Y3MjVjYzE5NCBsZWdhY3ktdHJ1bmsKKzY5MjAgOTQ1MjE4ODA4NzFkMTYyYmRjZjlmYzM1Yjg5YTA0ZmQzZWRlZTc0YyBsZWdhY3ktdHJ1bmsKKzY5MjEgMWJhMjJmNzQ5NDg5YTQzNTRhN2JjMzYxMjlkMDQwNDMyZmZhMTNlMyBsZWdhY3ktdHJ1bmsKKzY5MjIgODVkMzg0NTZhZGYwOTQ4NWI0MDQyYjAwYWIzZjlhOGVlNzY0N2NjMCBsZWdhY3ktdHJ1bmsKKzY5MjMgMWZiOWE1NGU0YTljMTU3YmRhNGFmMzUyOTU3ODJiMGMzNDFmYjBiZiBsZWdhY3ktdHJ1bmsKKzY5MjQgOTFjNjk2NDU3ZmQ0ZWQyY2QzMTRiMGI2YTBlZjA1MDM4ZjI4YmM3OSBsZWdhY3ktdHJ1bmsKKzY5MjUgYzZmZmI0ZmM0ZGE0MDY2MjQ3MzIxMzcwNTc3ZmZhMWZjYzMyYmQ3ZiBsZWdhY3ktdHJ1bmsKKzY5MjYgZWRhYjA5Nzg4MmQ4MGU0MWJkNmI5OTQ2ODM4NGE5N2NiNjY1M2YyYSBsZWdhY3ktdHJ1bmsKKzY5MjcgZGNjNGNmOWZhNjJhODZjYjY5NGQxMjM1NTI5NTBkM2M2ZjdiYjViNiBsZWdhY3ktdHJ1bmsKKzY5MjggNGMxNjE1NGZmZmI5N2I0NmYyNWRjNTIwZGNjNDcxNzJhYTgyNDcxMyBsZWdhY3ktdHJ1bmsKKzY5MjkgN2VlZWZkMzI2N2Q0NTBhNzI4OTcwZTE5ODdmOTM4YzdiNDk3ZDlhNyBsZWdhY3ktdHJ1bmsKKzY5MzAgYWNiMTk4OGI4ODUyZmI4OTc2YTA3OWY5OWY0ZWVlMTYwMjQ5MDQ4NCBsZWdhY3ktdHJ1bmsKKzY5MzEgYWI2MGM1NTg1ZDFiMDA1Y2RjNTRiYWRmZDZlYjM0M2Y2ZDhmNTg4NiBsZWdhY3ktdHJ1bmsKKzY5MzIgZDg3NTlkMGI1YTY3Y2JiZDBhM2MwZWM2YmJhNWU1N2JmOWE2NDEwNCBsZWdhY3ktdHJ1bmsKKzY5MzMgYzkxYWFjYmY4ZWQ0NjUyODk0MGJiMDZlODZjY2NkMmNlOWMwMTRhMSBsZWdhY3ktdHJ1bmsKKzY5MzQgNTE5N2UwZjNmMGZmY2VkMGM5ZWJiODY2NGEyMzE0MDk5OGU3YmRhYSBsZWdhY3ktdHJ1bmsKKzY5MzUgYTgyNjRkNzBmMjgxYzYwOThiZjAyYjVjM2Q3MzE1ZjlkMTVhYjBlZiBsZWdhY3ktdHJ1bmsKKzY5MzYgNmY4OWE0NGE4NjFjN2JkOWEyYTY4MjYyNDE3NTQ4ZDVlMThjMmZkYSBsZWdhY3ktdHJ1bmsKKzY5MzcgYzZhNDc4NmU3ZjhlYTgzMDFiYWMxNGE3NTk1YmFlOGRmZDRmNzgxMyBsZWdhY3ktdHJ1bmsKKzY5MzggYmFhYmZiNWQ2MmE4OGNlNDFhNDg5MWZlYWFkYWNhZmNjZWE2YzhlNCBsZWdhY3ktdHJ1bmsKKzY5MzkgYjUxZGMyZmI0OGUxODA0YWRkNTc5OTE3OGY1YjYyYzVkYmQ5NzUzZCBsZWdhY3ktdHJ1bmsKKzY5NDAgOGQwNTZmNTNhN2Y2MzI1YTkwN2VjMzViY2Q2Y2ZhNWI0M2RiMzM5MCBsZWdhY3ktdHJ1bmsKKzY5NDEgMGQ2MWY2YzM4YjM3ZTI1NzhhNDlmYTk3NjdhNDNiNTQ0YzBkOTk4MSBsZWdhY3ktdHJ1bmsKKzY5NDIgNjAwZjViOGExNmNiMWM0NzViZGMyOWM1MzhlOGVlZmU1M2RmYjdiMSBsZWdhY3ktdHJ1bmsKKzY5NDMgNWQ3ZmEzZjJjZWMzZDU2MTE2YjZhNjhhOTIyYzNiNDI0NGE1NGM3MSBsZWdhY3ktdHJ1bmsKKzY5NDQgZDljNTE1NWJkYTUwMDJmMmNlODhjNTQ5ZTg4NzM5N2ZjZWU4OTE3MiBsZWdhY3ktdHJ1bmsKKzY5NDUgMTIyYzhmZGZlNGVmOTFhYTc1YmRkMDAyOWQzYTBiOTVjYWI1ODMxYiBsZWdhY3ktdHJ1bmsKKzY5NDYgZjYzNDYwOWY0MDI4YTVlMmM3OTFlMGQyM2U3YTk3YjQ0NGQxZTJmYSBsZWdhY3ktdHJ1bmsKKzY5NDcgNTVmZTY0YzIxMTQ1Y2Q4OTMyNzM5MWNlYTdlMWRkZWM0NzU2ZTk2OCBsZWdhY3ktdHJ1bmsKKzY5NDggNGQ2YmFiZjJlNGUxOTEzYWQ5NmFiOGRkZGEyZmIzYWQ1MjViNWU2NyBsZWdhY3ktdHJ1bmsKKzY5NDkgZmIyZDFkNWUxNDFhYTQ2Y2RiYWNhNDU4MGRmOTU4OTUzMjAyNjlkNCBsZWdhY3ktdHJ1bmsKKzY5NTAgN2U1ZjAzOTUzMTEwNTliZDQ0ZjZlMmUzY2NhMGMyM2JkODIwZmM0ZCBsZWdhY3ktdHJ1bmsKKzY5NTEgMmZkYmExMjY3NjEzOWVmNWZkMWFmNjRmNzhiMWU2MDkwNGE0OTVhMCBsZWdhY3ktdHJ1bmsKKzY5NTIgMjY3YWU1ODIzMmQ5YTg2YTllYWM1NTE0MzMyZjA5YzljZmNiOTFkNiBsZWdhY3ktdHJ1bmsKKzY5NTMgMjM0MzgwMzMxOGU0ZjZmNTYzMjE0YTBjMDgxZjQ4NjJhNjkyODNiMCBsZWdhY3ktdHJ1bmsKKzY5NTUgOWU4NTNhNWYwNGZmOWVjMTkyMmVhY2E3MDBhNDQxNmMyMTg0OTJhNiBsZWdhY3ktdHJ1bmsKKzY5NTYgZGQ3MDllZDgyMjYyNzBkZWZlMDFkYjljZmU5NzM0NjJjZTIzYzNlMCBsZWdhY3ktdHJ1bmsKKzY5NTcgMzI0ZTFlMzZlNjUyYmMyMWEzNTg0MTY1ZTAxYTFmY2ZkOTlkYmNmOCBsZWdhY3ktdHJ1bmsKKzY5NTggMWZlYzg4YjIyZTg3ZjgyNGM0NDFlYzA0YWRlZTJiNWIwZTllYmMwYyBsZWdhY3ktdHJ1bmsKKzY5NTkgYTYwZDg1MjM3ZmRiODFlYTU3MGQwODczYjE4ZjEzNDVjMmNiMTc2ZCBsZWdhY3ktdHJ1bmsKKzY5NjAgZDkwNGY1MzlmZmQ5Y2U4ZWZlZTEwYjAxMjc4NDRiYWVlYjNkM2JjNyBsZWdhY3ktdHJ1bmsKKzY5NjEgM2Q0MzUxMGI1ZTE5ZGE1YTY0NTljMGQ3M2FhNjM1YTBmNWRmYTM0MyBsZWdhY3ktdHJ1bmsKKzY5NjIgZTBjMWJkMGE3NGE5MTI3NDRjY2ZiNjI1YmViNjMxMmNkY2RlOWU3OCBsZWdhY3ktdHJ1bmsKKzY5NjMgOGNlMTg1MzhlM2JiZmIxZTQyOTk2MTM2ODcwYzUyMzJhZjk1MTY5NSBsZWdhY3ktdHJ1bmsKKzY5NjQgMGU2MjNlODIzMDFmMWZiMTQ2ZjA1MzNhY2JlN2ZlNGUzOTY0MzUyMCBsZWdhY3ktdHJ1bmsKKzY5NjUgOTc0ZGMzNmZlY2Q2MmMxNmY2ZTJjZWM5ZTRjNzEwOWJjNmVhMWNlYiBsZWdhY3ktdHJ1bmsKKzY5NjYgNmE3NWIzY2YwMjNjZmM3YWMzYjE4MDdlNzEzMWZmOWRhODQ3MGNiZSBsZWdhY3ktdHJ1bmsKKzY5NjcgYWU3NWQ0YTFmNWRkYjM1Nzc1YzY5ZmNiYzAwZGU3YWY1MzA2OWEwNCBsZWdhY3ktdHJ1bmsKKzY5NjggOTllNzBjNDcyYTIwMmRhNTEyNjY0YmY2YzE5OTBjODMwMjcyMWM1NSBsZWdhY3ktdHJ1bmsKKzY5NjkgYTk1NTQ5MjY5ZGUyYjAzMDI0OThmNTZlYWJjNjBlZWJhY2QxNTdiZCBsZWdhY3ktdHJ1bmsKKzY5NzAgNTY5ZTNhZjUyMTg3NWRlZmY2NzQ2YzNjYzhiZjE1MjI3M2U2YmNiYSBsZWdhY3ktdHJ1bmsKKzY5NzEgZWFlOGFiM2QyNGUwMzAwOTJlMjc0ZTQxZGJiZDgxN2RlYjNkZWMxOCBsZWdhY3ktdHJ1bmsKKzY5NzIgOTMzNTNlMWQxYzc2MDRmMDc1NzUyNDU3YmUzMWUyNjJjMjNhYTgwOSBsZWdhY3ktdHJ1bmsKKzY5NzMgZDgwMTI1ZDdkYzczNGExZjllMTQ1OWVmZjg2NDdjZTgwYmU1NDA4YyBsZWdhY3ktdHJ1bmsKKzY5NzQgMjBmZDk2NjQ4NTEwOGRjMmUwOGE3YzRlMWUyMmM2NzczYmI5MTgxYSBsZWdhY3ktdHJ1bmsKKzY5NzUgNGJhMjBmNDQ2NTRiYmU3ZTBjYzQ5Mzg2OWEyMWZlMjY5MTNmYWVjNiBsZWdhY3ktdHJ1bmsKKzY5NzYgNTU5YWE0N2IyZTJjZmNmZWU2NGIxOGY5ZmMyYzc5NTlhZmU0MWUwMSBsZWdhY3ktdHJ1bmsKKzY5NzcgOTQxYjA1MWFmNjc1ZTJiN2VlNzY1ODM4MzhiYjZjOTQzMDc0NGI2MiBsZWdhY3ktdHJ1bmsKKzY5NzggNjVkMmQ4ZTY3ZGEzMjNiNzRiNzJlNGQ4MDU1MzZmYWE2ZmQyNGMxZSBsZWdhY3ktdHJ1bmsKKzY5NzkgODU4ZmIyZTliYzE3MjNjODhiOWVlNzgxNWIxMTg1NjQyM2JmOGE0YSBsZWdhY3ktdHJ1bmsKKzY5NzkgZGI0OTQ5NGM5M2RjNzNkZTA2ZDU3MjFjNzRlYWI1MzNhOTQ3YTkyYyBsZWdhY3ktdHJ1bmsKKzY5ODEgMmIyMWVhMmYzOWI0NDMyNmNiMjBjMTVmOTA4ZjAzZjdkMGNmZTgxMSBsZWdhY3ktdHJ1bmsKKzY5ODIgMTg5MjdhYmRjMjYyODE5NDhiY2I5NTQ2NDJhNmY4YTc0NTM0NGZmMCBsZWdhY3ktdHJ1bmsKKzY5ODMgNzE4N2M3MDllYmZkZWE0MTQ3YWY5ZDI1OTcwNzcxMjdlMjgyYzhkYyBsZWdhY3ktdHJ1bmsKKzY5ODQgOWNhNTk0MjQwMjBlMDBmNmJjNmQxMTUxOTc3NmVjOTY5MTA3YzczMCBsZWdhY3ktdHJ1bmsKKzY5ODUgMTFlMGMyMjA4OTk5Nzk4NmQzODdmMDFhNWUyZTcyZDA2Njg3NWU5NSBsZWdhY3ktdHJ1bmsKKzY5ODYgZGYyYzIxMmU0ZWEzZWJjYWJlZWY2MGViOGI0MzYxYWFlN2RiZjE2YyBsZWdhY3ktdHJ1bmsKKzY5ODcgMjNhMTA0ZDNiY2VkYzc1Y2M3NzdjNDYzMWUyZWY0ZTI3Mzc5YWM4YSBsZWdhY3ktdHJ1bmsKKzY5ODggODQ3NDQ1YWVhYjJkMTkwYTZjNmI1NzI2NmRmYmNmZGE1NDE0N2QwNyBsZWdhY3ktdHJ1bmsKKzY5ODkgZjY5NzZiOWE4NWE0M2VmOWI0Nzg1YWU1NTIyMzFhMTA1OGIyZTgzMSBsZWdhY3ktdHJ1bmsKKzY5OTAgYTc1ODU4ZmVmNTUwN2VlN2FmZmI5N2MzMDllNGNjOTEwNjZlOGJmYiBsZWdhY3ktdHJ1bmsKKzY5OTEgNGE3YzdkZDdiMWYwNTYzMzkzNjE3MzZiZGIxMDUwYTViMDhjODBjMiBsZWdhY3ktdHJ1bmsKKzY5OTIgYTRkMmFhZTc1N2E4ZDUxNzRhOWYyMmYyZDYxYTZiNDAxMDY4ZTUyZiBsZWdhY3ktdHJ1bmsKKzY5OTMgNjkxZTM5MmNhZDM0MGJkYmY4OTk5ODljMTEwOGMzZDhiNTAxNGE2YSBsZWdhY3ktdHJ1bmsKKzY5OTQgZmQ1MjRhMDAxY2U5ZmVlMjlmODE3Y2FlNTdjYjI2OTJiNWYyYjFjZSBsZWdhY3ktdHJ1bmsKKzY5OTUgYjQwNjNjMTAxYzJjY2UzMjQ5MzlmNzJiYTMyOTc3OTgxMWY1NjNkMCBsZWdhY3ktdHJ1bmsKKzY5OTYgOTdhNjE3OTVhMTY5YWZmN2UxZWE3YWNkZmQ4ZjA4ZDNiMTQwMzg4NiBsZWdhY3ktdHJ1bmsKKzY5OTcgZDI1YTBjY2JmZDZiOGE4YTA4OWE1NWE5ZDE5OTI3MjkzYWFlYTQ3YSBsZWdhY3ktdHJ1bmsKKzY5OTggNGQwNjgxZjdjZjZiNmI0YjVlNGYxMTk5MDE1Yjc2ZGMyYWRlNTAxNSBsZWdhY3ktdHJ1bmsKKzY5OTkgZDBjMDNjMzJlOGQ5NDMwZGZjYTQ3MGQyM2ZkZDdmNzY1OTgwZjNkYSBsZWdhY3ktdHJ1bmsKKzcwMDAgZmZlZjJjMzBkYzQ4ZmQwN2RhODJjY2EyODhlZDY1NzMxNGYwZjJiMyBsZWdhY3ktdHJ1bmsKKzcwMDEgZGI1NWI4MGFhZjEwMzk0YTZlNTg5OGE4YjQ1OTdhOWE1YjlkYmYxYyBsZWdhY3ktdHJ1bmsKKzcwMDIgNzg5NGEwY2Q4Yzc1NGI4NWM1ZDc4ZmQxODg1NjZjMjdhNTc3MjU1OSBsZWdhY3ktdHJ1bmsKKzcwMDMgMjgyNGNiZGJlMTJjNWJkNjdhNDNhZmU4ZmUxNmJlNjk0YzM5NWMzOCBsZWdhY3ktdHJ1bmsKKzcwMDQgMzM3NTYyMzMwZmQwZmQ1OTAzZmQ0MTJlYWRlMDk4YzM3MmUxYTZmZiBsZWdhY3ktdHJ1bmsKKzcwMDUgODBiY2IwMmViZjRlZjBhZjU0ODYxOWM5MTgxMjExM2E5ZmRmODkyOSBsZWdhY3ktdHJ1bmsKKzcwMDYgOTYwM2E2MGM4NjliZTI5MjJlZTk4NDBhNDhjZGJlZjhiZGYwYzA2MiBsZWdhY3ktdHJ1bmsKKzcwMDcgMzBjZWNhM2YxMDViMGRhODEwNTQzMjE4ZDZhYTcwNDAzNDJmOTBmNiBsZWdhY3ktdHJ1bmsKKzcwMDggNjJjZWY3ZTg5NmI2ZWNhYjI3MDRmMzI5MDI3ZDA5OGQ3M2MwZDkzMiBsZWdhY3ktdHJ1bmsKKzcwMDkgZDkwZDdiNTQxYWRhYjJmNmRhMTdkZDY4MGQyNThiNzA0OWM0MDRkZCBsZWdhY3ktdHJ1bmsKKzcwMTAgOTQyMWQyZjYzMDc3YTk1MmY2NjZhMGIwMDMzM2M4OTI2ODExODZlOSBsZWdhY3ktdHJ1bmsKKzcwMTEgMDU3NTA4MzhmODQwM2Y4ODYzNWZmNzdkY2FiODQ0ZDkyMzg2MWUzOCBsZWdhY3ktdHJ1bmsKKzcwMTIgYmYzNzY4YmQzMWYyYzk2ZDU3NGE2NTc1OTc3ZGE1NzQ2OWE4NWY1NyBsZWdhY3ktdHJ1bmsKKzcwMTMgNjUxNzBkYTFkMmNhNWJjNGIzMGNmNjljZmIxMDQxYzViNTIzMjc5NCBsZWdhY3ktdHJ1bmsKKzcwMTQgNDdlN2M0MmI5ZGM2MzUzZmRmZDg4M2RlNjQ5NWVkYTc0YzBlZThlZCBsZWdhY3ktdHJ1bmsKKzcwMTUgMWY0ZjFiZThhMzM5YjhjZTdlZTUxN2UwOGQwOTEzMTgyNDg5YjY1OSBsZWdhY3ktdHJ1bmsKKzcwMTYgNTc0OGQ1ZWUxOWVkM2NjMDk5NDU3NDFjMWUxN2M3MGNlOWMwYjdmNyBsZWdhY3ktdHJ1bmsKKzcwMTcgNjUyMzAzZWY5MjZiMWY2MmQyYjVlODBjZWJlNDBjYjk3ZWEwMjEwZCBsZWdhY3ktdHJ1bmsKKzcwMTggZTUyMDU0NDQwZWZjNWIwMmZhOWZkMzQ2MDMyMTQzMGNiYjVhZTk5YSBsZWdhY3ktdHJ1bmsKKzcwMTkgOGQwYjAwZWQ4YzJiNTZlNjdiM2I4YzgxZmUyYTYzZTc5YWNkNmY4OCBsZWdhY3ktdHJ1bmsKKzcwMjAgODIwYmYxYWU3ZTI1ODJkZDVmMjU0MTAyNTcyYjFkMDA5OGVmOGZjYiBsZWdhY3ktdHJ1bmsKKzcwMjEgY2M2NTIxYTJjZTIxZWU4NWZmNjFmZjg4NTgxMjI2OTI3Y2Y3ZGY4MiBsZWdhY3ktdHJ1bmsKKzcwMjIgNTRjODAwOGRlODdiYmI1Mzg0MGYyYTg3YzllY2NkMGM1NzY0Y2ZmZSBsZWdhY3ktdHJ1bmsKKzcwMjMgYmQ1NTFmYmI5NTk2NTg3Yjk3ZjE2OTYzNTUzYWYzMzIwNzJiNGQ4MSBsZWdhY3ktdHJ1bmsKKzcwMjQgZGJjOTg4MzRlZmYyZWE1Njg5NGJjNDA4YjUwZWJlN2M3MGY3MTY0MCBsZWdhY3ktdHJ1bmsKKzcwMjUgZjEyNDQwMzZlYmFiNmUzNzExODkyYzljMGU3YjRlMTYzM2ZkMGY2NCBsZWdhY3ktdHJ1bmsKKzcwMjYgY2VhMzE4YmI5ZDJmNGQ4ZTQ3MjU0ZWVlOWE0M2FkNThkMjI3ZTkzYSBsZWdhY3ktdHJ1bmsKKzcwMjcgZWZiMjkzOGNlNjc2M2ZjZjE1NjQ5OWQ1YTE5ZDEyMzg2MGQ0YjE2ZSBsZWdhY3ktdHJ1bmsKKzcwMjggODkwMDIxMzc2NGJhMTlkMjM3MzlkZTc0YThkNDJjZTMxYzhiZWY0ZCBsZWdhY3ktdHJ1bmsKKzcwMjkgZjAzMTQ2NjUzMGFmNjcyODMwODRhZWM3MDA3ZGIwZGY1NjljNTM4ZiBsZWdhY3ktdHJ1bmsKKzcwMzAgMDQ1MDc0MmYzNmY0ZmZkMTBmOWFmZDQ0MWI1NDNmZWI0M2M5M2IxOSBsZWdhY3ktdHJ1bmsKKzcwMzEgYjIxM2QyNThmZjMyN2RlZDYzNmRkOTBlMWU0ZGU0NDllNzkyMmZkYyBsZWdhY3ktdHJ1bmsKKzcwMzIgMmMwYzY4MDQwN2IyZWM0YzQyYjA4OGMzY2I0ODllYTIzM2ZiYjZmMyBsZWdhY3ktdHJ1bmsKKzcwMzMgZGY5ZDFlYmNmN2YzMGJhMTgxY2ViYWRmOTE2ZGQwMTZlNmY5NDU5NCBsZWdhY3ktdHJ1bmsKKzcwMzQgYWRiY2MwYWI5ZWI2YWY0MDFhNTJiZmQxOTIwOGY3N2RkYjI5NTExYSBsZWdhY3ktdHJ1bmsKKzcwMzUgYjIxN2RhM2Y5YjU0YzYzNjQyMGU5MTE1MTRkMDk1MDIwYmQ1MmRjYyBsZWdhY3ktdHJ1bmsKKzcwMzYgYzcxM2RlNzJlNzZlYzQzMjlhOTA1ZGFiNDI1YWI0Zjg5NjA5M2FlNSBsZWdhY3ktdHJ1bmsKKzcwMzcgZDAzMGVhNTMzZTYzYWZhZTg3MGRiNDI4YTdlYTE1NDVmZjdjZjg3NyBsZWdhY3ktdHJ1bmsKKzcwMzggZWE0NTg5MzNmYzJhZjZiMzlkZDFkZjc4NDQ3ZTFkOWU3NWM0YWE4YSBsZWdhY3ktdHJ1bmsKKzcwMzkgNzQ1YzdjNzBiZTMxMDhiMTc3NGY0M2QwYjFhODRhMDVhNmM2YmJjNiBsZWdhY3ktdHJ1bmsKKzcwNDAgN2Y0N2UyYjZjNGE0OTlmMmIwZDc5ODdiZDE3OWZkMDYxM2VmMDI5ZiBsZWdhY3ktdHJ1bmsKKzcwNDEgNjQwM2M5NGRlNTBkYzNjMWZlODQ4OTk5MTkwMDMzZWI3MjExN2Q2ZiBsZWdhY3ktdHJ1bmsKKzcwNDIgYTM2MGRjMWZhNTU4Mjk3ZTdiMjZmMjY0NzYyMzQzNjgxMjlhM2RmMCBsZWdhY3ktdHJ1bmsKKzcwNDMgNDM0MTU3NGUxNjNiM2Y0OTE1MjY1OTE3ZTczZDQ1MGNmN2I3NDdjNSBsZWdhY3ktdHJ1bmsKKzcwNDQgZTcwOGY1NjhiOGI3M2QzMGY0OWNjNjE1YTM1YjBkZDBmZWE1ZTQwNyBsZWdhY3ktdHJ1bmsKKzcwNDUgN2JiODRhMjIwNTQzNTFlODMyMzY3N2ZjNmE2MWRkZmYyNjg3NmFjOCBsZWdhY3ktdHJ1bmsKKzcwNDYgYTBlYzhhOWRiOTYwNTRjOWVlZjZhZGFjMGQ2MmI0MTEzNDBjNjk5NSBsZWdhY3ktdHJ1bmsKKzcwNDcgMjYyNmQwNmIzYjAxZjdlMTZlYzZiNTI3Y2YxODkxNDM3MTVhZTRmOSBsZWdhY3ktdHJ1bmsKKzcwNDggNzM3NThkYjJmNDY0Njg5NDc1MDcyMDc5ZTU1ZjUyOThkNDQ5YWE0ZiBsZWdhY3ktdHJ1bmsKKzcwNDkgODE4NjAzOTA1NWVkYTNkM2Q5YjNhMzc1YjNiMDMzYWM5NDlkNDY3MiBsZWdhY3ktdHJ1bmsKKzcwNTAgYWE5NjUwOGE2NTg3OTBmYjNhMDUyZDVhMWNhNmYwMzZkZTk5MDI2ZCBsZWdhY3ktdHJ1bmsKKzcwNTEgYzNiMDg5NWM5MGZiZjA4N2Q4NjkzMzcwY2YwNzQ1NmJkNGQwNWJlYyBsZWdhY3ktdHJ1bmsKKzcwNTIgZmFlNzhjZjg1NDFkNGJiN2VjYThkZmZkOTc3ZmNjMzhmMTYyYzBhMiBsZWdhY3ktdHJ1bmsKKzcwNTMgNmYxYTEyMGFlOWMwNjE2MTRhOWVkYjI5NDU4YWQzMzI4MmMyYTMxYyBsZWdhY3ktdHJ1bmsKKzcwNTQgZTNmNzFjZThlNmJiYjVmMzhlMTg1Njk3YzZjZjQwNDE4YTRhNTk0OCBsZWdhY3ktdHJ1bmsKKzcwNTUgMTFiZDRmNDk3NzQyZDgyN2I3MzdjMjY5Yjg4YjhhZTRlMzM1ZGZkOSBsZWdhY3ktdHJ1bmsKKzcwNTYgYzgzN2YyNWM3ZTQ3NzQ3MjQxYzNkYTA2NWIwNzEzOWY4MjQ2YjFhMiBsZWdhY3ktdHJ1bmsKKzcwNTcgMmY4ZDljMjJkZTYyZTE3MThjMDhjMTg3MTBiNjFjMjllMDdiNmFkYyBsZWdhY3ktdHJ1bmsKKzcwNTggNGY2NDRlY2M1YmFjNGFhYTI4OTIzMzEyMmQ4NjgwMTdjMTFlMmE0MSBsZWdhY3ktdHJ1bmsKKzcwNTkgMzg3MWViZDE5NjNjN2FkODFiN2U1ZTU3OGI2MmNhMmFiYWU4NTdhNyBsZWdhY3ktdHJ1bmsKKzcwNjAgNGE4MTY1YjNiNjYwM2Q5YjMxOGE4ZWUxNmY3MzMzZDUzMTU4OTMxOSBsZWdhY3ktdHJ1bmsKKzcwNjEgYjNkMjk5MGQ4YTRhZmI2OGIwMjlmY2M2ZjllMmVjMDIyNDg0YmVlMCBsZWdhY3ktdHJ1bmsKKzcwNjIgMDlkOTRlOWViMTAxMDAxOWQxYjNkMjdkNTI2MmM5YzVmNTY4MGVjNSBsZWdhY3ktdHJ1bmsKKzcwNjMgNGRjNjdmZGQ5ZTBiNWUwZWRjMTM1MmU1NzIzZThjMDJkNGVjZjMzMyBsZWdhY3ktdHJ1bmsKKzcwNjQgOTYxYmY5YTIwMGRkMTg0NDhhMWY5YmUyMjhlNTUwZDAyMzMxN2E5NyBsZWdhY3ktdHJ1bmsKKzcwNjUgMjEyNGY0Yjk3YmRkMmJiOTdhZDViZjQ5ODRhYWZhNTBlNzNiMjdhYiBsZWdhY3ktdHJ1bmsKKzcwNjYgOGNkZDk0YTNkMDJkOTk2Y2ViZWUzOGM0ZDIyZTY4ZWI2NmFjNmI4ZCBsZWdhY3ktdHJ1bmsKKzcwNjcgM2JmOWUyYmVhZjhjMDE5NzM4ZjU1YzlhYmE2MGIzNWQ3Zjg0MzJiNCBsZWdhY3ktdHJ1bmsKKzcwNjggNzJkMGRmYjkxOWZlMjhhMjJlZThhMmQ2NDBjNWNhZWU5YTEwODQwOSBsZWdhY3ktdHJ1bmsKKzcwNjkgNDE4NTcwNzVkNDViYWM4MDA3YzgyYTA0MmE2OTg4NjViM2Y2OGMwNiBsZWdhY3ktdHJ1bmsKKzcwNzAgZjhmM2RhM2ZkYWVkNTgyNjg1YmJkMDg2MGIyMTcwMDJlMzEyYjc1MCBsZWdhY3ktdHJ1bmsKKzcwNzEgNGZhMTk2NTk1OTFlZmEzZWQ4Y2U4MjM4NjdkODljZWFkNGJjMGY4NSBsZWdhY3ktdHJ1bmsKKzcwNzIgZTc0YjYwN2E1OTk2ZmE5OTIyMTNiYjk1M2RhY2I1Mzc3NDllMTg2ZSBsZWdhY3ktdHJ1bmsKKzcwNzMgOGZkYjA1MzljZmIxNTBhMTA3NDdjZDAxMWI1ODlkNDdmMzIwMTEwZSBsZWdhY3ktdHJ1bmsKKzcwNzQgYjJhMWM5OWNhNjQyYjk5M2E4ZDNjNTEzNTZjOTk5MjhmMzY0ZTgxYSBsZWdhY3ktdHJ1bmsKKzcwNzUgZDM2MjUwYWVmYjgyNTI2NzRjMmJmYjIwZTM2N2Q4MGU4MGE2OGQ2MSBsZWdhY3ktdHJ1bmsKKzcwNzYgN2Q1NmI0OTZjN2RjMjFjZGQxZDE3OTY0MDNkMjBkY2FiYjMwMzY1OSBsZWdhY3ktdHJ1bmsKKzcwNzcgN2M2ODAyZDg2MjBmNDJlN2E1MjYxZGJmMDg0MzgzMGI1MzQyNTk1MyBsZWdhY3ktdHJ1bmsKKzcwNzggNWM3NDFkMmQ5N2Y1YjE0NTQ5NDdmOGY5NDkwNjlmM2VmZDA2NGUwMiBsZWdhY3ktdHJ1bmsKKzcwNzkgMjM2ODM1M2Q5ODg3NTMwMTk3ZTNhYTJhMzJhYWU3MzRhMmExY2JkMiBsZWdhY3ktdHJ1bmsKKzcwODAgYjk4YjQ2ZGQ0MzY3ZTI3OTYwMTk3OGExOTU5Yjc3N2U3NjRjMTljNiBsZWdhY3ktdHJ1bmsKKzcwODEgNzM5Yjg0ODBmMWFjMjcwNmE2YjJlMjVkYTgwZGZhZGEwOGUzNzU4NiBsZWdhY3ktdHJ1bmsKKzcwODIgMzNhOGU2NWVlZjIzMDkwMDAxMDU0NTc5MTY0MjdkODU1NzRiMGRhNSBsZWdhY3ktdHJ1bmsKKzcwODMgM2VlODdkMDgyMTQ3YzE2NDNiYmVmMDQzYWU5YzNjOTRlNjkzYzMzMyBsZWdhY3ktdHJ1bmsKKzcwODQgNTNlZjViNTFhNDhiNGUwZTcwMmY2ZDJjNGI4YmI5NzRmZTQ4NjVmZiBsZWdhY3ktdHJ1bmsKKzcwODUgYmI0MDk0ZmY3YmRmZWQ0Y2NjM2M1MWQ0N2Y1ODNiYjUyY2QwYTNjOSBsZWdhY3ktdHJ1bmsKKzcwODYgY2JjNjY5ZmUzNzBhYjA1YjVlNDZmYTQyYmExYzJlOWVhMzdiZjBhNyBsZWdhY3ktdHJ1bmsKKzcwODcgNGRlMDVjYmY1YWQxOTg3ZjdhM2E0MjJkZDUxMjhmNTE4ZDE5OTBjNiBsZWdhY3ktdHJ1bmsKKzcwODggMTMyMTExMmU5ZTNhNGNlODNjNDFlMzU2YTY4MzA1YTNmNTcyYWRmMiBsZWdhY3ktdHJ1bmsKKzcwODkgNjgzMDc2NDMyYjdmOWRhZTZkYTg0NWNkMzViZWE1ZDEwNTRmNjMxMCBsZWdhY3ktdHJ1bmsKKzcwOTAgODc2MTc3MDFkNzIxZTcyZDc3MWJjMmVlODkwYmZmMDM2OWI3N2ViZCBsZWdhY3ktdHJ1bmsKKzcwOTEgOWNlZjk2OWM0NWU0NTA2MWIzYjgyMzUwZmQ1Mzg5OTg0OTBlY2U4NSBsZWdhY3ktdHJ1bmsKKzcwOTIgODc5OTlkYzRkNzk4MDAxOWMyMzA1YTg5YTAzYTljY2IxOWViZDMwNCBsZWdhY3ktdHJ1bmsKKzcwOTMgMDZjN2M3ZGU2OTc2ODk3YjNkMWE0Y2ZiYzEzNzY1M2NhYTM0NDI2YSBsZWdhY3ktdHJ1bmsKKzcwOTQgYzNjYTAwNjU1NGQ0NDRhYzY2NDkyMWZjODM0NjgxYTZjN2YwMjlhOCBsZWdhY3ktdHJ1bmsKKzcwOTUgOThjMDhmMGM0YTJlZDZiYzllMjUzNzAzZDNkYzVhNzA0MGE1NWRkNCBsZWdhY3ktdHJ1bmsKKzcwOTYgYTJmMTcxY2UyNWY4MTA1ZmViMDZiNGE0OGZmYTZkMThkNDFiNWY4OSBsZWdhY3ktdHJ1bmsKKzcwOTcgNjhiMjhiOGNhMDc3MGU0YTU2YjJlYWIxNjI2Yzg2MDc1MTA2MTJhOCBsZWdhY3ktdHJ1bmsKKzcwOTggMWZhYjk4MTQ2NWM4YmVkNGY0MzRhMjk5NDkxMzVhMzQ3MTczNWNjOSBsZWdhY3ktdHJ1bmsKKzcwOTkgYjExZDk2YzgwNzVjNTc0MmRjYmY3NmQ0NjQ3ZTRkMzk1ODMwNDQ5ZiBsZWdhY3ktdHJ1bmsKKzcxMDAgMjAyNjAyZmFlZmM3ODMyZWViY2QxMjkyMTI5MjBjMDIyNzBmMGE5OCBsZWdhY3ktdHJ1bmsKKzcxMDEgOTRjZTNlMDFjMzBjYzMwMGRiODdhYmE3MTRhZGJhNGYxYmU4ZDNhNSBsZWdhY3ktdHJ1bmsKKzcxMDIgNmI3NjU0NTNiMDQxMGUxMWIyYTc1MTc0ZjE3ZmU1MGEzN2Q1ZWU3MCBsZWdhY3ktdHJ1bmsKKzcxMDMgN2RmNWQ0Y2Y4Mjc3OGE0Mjc2ODA2NmQ5N2M0MzMwYjc0N2U0NGZjYyBsZWdhY3ktdHJ1bmsKKzcxMDQgZmYyNjg3MzI2OGE4NDJjZGI2MDMzMjYyYzI4YTE4YjY0ZmZiYzdjNyBsZWdhY3ktdHJ1bmsKKzcxMDUgMDQ1ZWQ4MzBjMDM1YTBkNTNhZWRkOTdiNWNiZGI5ZDMwMjE0ZjQ4NiBsZWdhY3ktdHJ1bmsKKzcxMDYgMjY0MmZmY2FjMmI0ZGNjMGIxMTRiNGQ4Y2ZhNzM2YjM4NjZlZWQwZSBsZWdhY3ktdHJ1bmsKKzcxMDcgYzhkMjQ3ZmY4ZDJmODNiNDI4NGJmYzA2ZWI4MzQwODlkNWMyZTJmZSBsZWdhY3ktdHJ1bmsKKzcxMDggM2YxMGY5OThhNTg3MWRjYzg1ZTQzZDlkNzVjZDE2OWU4N2ViZDljOCBsZWdhY3ktdHJ1bmsKKzcxMDkgOWZhY2JhYjE1MmNkYWIwZWNhYmI4MTgyYTRmMTU2MTI0MzliMTRlZCBsZWdhY3ktdHJ1bmsKKzcxMTAgNDk3NDVkZGI0ZjY5OGI1YmY5ZTNiODg0MDJlMjU1YzhkYzIwZDEzMyBsZWdhY3ktdHJ1bmsKKzcxMTEgYmQyODk0NWY3NTJiYjY0MGMxNjMwMDY2ZGUyY2I0NDliZDc5NTFjMSBsZWdhY3ktdHJ1bmsKKzcxMTIgZjUyYzJhYTA2MWY4YzYxM2Q1Yjc5NDY0ZjZiZDJhZWY0Y2M2ZDU5YyBsZWdhY3ktdHJ1bmsKKzcxMTMgNWY3ZDI0NmJiZWI3YjZlYjBiMjlmZTU5Nzc4MjA2ZDQwYzA5OTgxYSBsZWdhY3ktdHJ1bmsKKzcxMTQgOTdlYzlkZmJiMmI2ZTRhZTgwZTU1NjQ0N2ZkODkxMTA1MDRmNzYxYiBsZWdhY3ktdHJ1bmsKKzcxMTUgMzRkYjlhMjFiZmIxZDQ4MmNhZjE5NmJlZmVhOTQ2N2U4Nzc1OTNjNyBsZWdhY3ktdHJ1bmsKKzcxMTYgNWY4ZjYwNWFmMzM4NGQ1MzcwNmI3MjBjYTI2YzA0OGM3N2I0NmZmNSBsZWdhY3ktdHJ1bmsKKzcxMTcgNDM1OWU4ZDM4OWU2ZmQ4NmM0M2VmN2IxY2M0ZjE4YmQ3NzhjMjk2MSBsZWdhY3ktdHJ1bmsKKzcxMTggOGQ5MDlhZTFmMDk5NjRlY2I0YmQ4NzFmYWUwNTc1NjhjNmY0MTZkNCBsZWdhY3ktdHJ1bmsKKzcxMTkgZjRiYTllMDdkOWJmMmY0MDVlNmUzZjNiNmU1MmZlOGQ5NTZkMGNhNSBsZWdhY3ktdHJ1bmsKKzcxMjAgNjhjNGIwNmNmZmY3MDk1NmI0NGJhNzg1MjlhNTUyNTY2OTJhNjQyZiBsZWdhY3ktdHJ1bmsKKzcxMjEgZjRhNjBmMjYxZmJiNjZlNDUzNzc4NDgxOTA0N2FhNGZiZjI1Y2RkYiBsZWdhY3ktdHJ1bmsKKzcxMjIgYWI2Mzc0MjY4Y2FhOTI0NmZkNGM4NmU3ODgwOWFiMjBiZGJhZDIzNCBsZWdhY3ktdHJ1bmsKKzcxMjMgNmRkODUxNDQ1YzdkYzBiMWM4YmY5ZDBiYmJjYWQxZmFlYzE4ZjVmYiBsZWdhY3ktdHJ1bmsKKzcxMjQgZGFiMDFiODRhZmU2NjRkMGQ0M2IxYWMxNDMzMGY1ZDY0YTVkMGZhMyBsZWdhY3ktdHJ1bmsKKzcxMjUgMjc0Mzc1OWUzOTc5N2ZhN2FiMDM1YjczYjg5N2YwYzNjNWIyZmQxMSBsZWdhY3ktdHJ1bmsKKzcxMjYgNmVmZmQxMGU3MjMzYTY4NTljODVkMzhlMWU4MDhiOGJlNmJmNzE4MCBsZWdhY3ktdHJ1bmsKKzcxMjcgM2Q4N2NiMWIzZDE3YWQ3MThhM2Y2ZWM5MzhlZDE2NTJkMGZlZWM3NCBsZWdhY3ktdHJ1bmsKKzcxMjggM2I3Y2Q4M2I2MDJkNmZkODM4MGExNDVkNWIxMTc3MTliYWE3ZDA4YSBsZWdhY3ktdHJ1bmsKKzcxMjkgZGY4MTg1NmRiNThjNTQzN2QyNzY5NzQ3ZGQ5NGI1MWVkZjlhZTdmNyBsZWdhY3ktdHJ1bmsKKzcxMzAgYzc1YTJmMmRjMjIwYTU3NzY4OGU2MWIxMGQ3NzYxNDU4MzRlN2Q0ZCBsZWdhY3ktdHJ1bmsKKzcxMzEgMTg2YzJhZDRhYmYzM2M5MGY2ZTY2ZjhjNzBiNjkzZTlkYzc1OTIxNyBsZWdhY3ktdHJ1bmsKKzcxMzIgZGRiY2MwMzg5MTZiMmNmNTNhYWVmMzZkMmEzZTZhOTI2NGI4Y2ExMSBsZWdhY3ktdHJ1bmsKKzcxMzMgMGRkZGY0OWVhNDE2ZjNiZWJjMDYwOGU0OTNmYTViNDIxYzJlODg2OSBsZWdhY3ktdHJ1bmsKKzcxMzQgZTk3NTI4NDgyYmM2NzQyOTkwODE1Mjk1MzM1ODgzZDQ1NjBmMDA3YSBsZWdhY3ktdHJ1bmsKKzcxMzUgOGZiNTcyZTFiMWJhMTcxZTE3NDNiMTVjZTZiYzA5NGE3ZmUzYjJlYiBsZWdhY3ktdHJ1bmsKKzcxMzYgZDUwMjNkMGM1NTAyMzczNjQ4YmE1ZTg0ZWUzNGViNTE1NWY1Y2FlNSBsZWdhY3ktdHJ1bmsKKzcxMzcgMjI3ODUxMDhmMWVhMTNkNzRmNzU2OTMzMzNiNzgyZmEwOWRmNWMyMCBsZWdhY3ktdHJ1bmsKKzcxMzggNGVlNGI4YmI2N2M3NDQyNzBjZWQ0NGI1YmE0ZjNhZjU3MWM1OGIyZiBsZWdhY3ktdHJ1bmsKKzcxMzkgZGNiMmY1ZDM0YWU4MDI2M2ZlMzQxODhjMmUzZjlhNjYxMTczZTNlNiBsZWdhY3ktdHJ1bmsKKzcxNDAgZWQzNTA2N2UzNzkzZTBmYzNhODA1YTMxN2UyNmZkOWIyNDI1YzAzMCBsZWdhY3ktdHJ1bmsKKzcxNDEgMjliYzI4ZWNhM2U5ZWQ1NTUzZDQ5YTU3Y2QzYzc1M2VlYzQ5NmNlYSBsZWdhY3ktdHJ1bmsKKzcxNDIgYzQyMzc5ZTQ2NTNiYThjZWU5MjFhM2M0NzlkNGE1ZGU2MTg1YzdmMiBsZWdhY3ktdHJ1bmsKKzcxNDMgOTUyMDRhYTJmNDUyMmE1Y2M4Y2Q3ODU2ODE3MWQ5NzA3OTU3Y2I4ZCBsZWdhY3ktdHJ1bmsKKzcxNDQgZDUwMWRhZjBhMmY2NTVmZmRiMjk5NTk5NTQyODc0MDNhNjQwMDcwMiBsZWdhY3ktdHJ1bmsKKzcxNDUgNzkwMWZlNzlmNmFhOGEyNDkyYTA2MWJmN2NmNWYyNDNjNjBlNWVmNCBsZWdhY3ktdHJ1bmsKKzcxNDYgODJkZjEwNDBkZjBmOGE2Y2MwODE0N2FiYjlmMzBmNjA3ODcyNTg0NCBsZWdhY3ktdHJ1bmsKKzcxNDcgNWI1MzI2OGY1NDdhMzlkYjE3NzY5MTA5YTg1MDM1MTY5NDM1ZjllNCBsZWdhY3ktdHJ1bmsKKzcxNDggYTNjZGM4MTY0OTkwZTM0ZTM0M2I4ZmZhOTIwMTY1NTBkYmM4MjRmOSBsZWdhY3ktdHJ1bmsKKzcxNDkgYjQzZmY4OWZjNTBkOTVjMjI3YjU2YWRjODk4M2Y0ODM4YzM3ZDhjYyBsZWdhY3ktdHJ1bmsKKzcxNTAgMGMwMWEyM2M3ZGNkYmFiODEyOTcyM2Y4Nzg4OGNjN2M3YmE5ZWNmMCBsZWdhY3ktdHJ1bmsKKzcxNTEgMTkzOTUwYmM5ZDhmN2Y0YTVmNjVmMDc1YWZlMDgxZmQyYzQ5YmJmYSBsZWdhY3ktdHJ1bmsKKzcxNTIgYjgyOGViNTBkYmQ1MDYzOGU2ZmMyOTk5ZWY2NzI5ZTMxM2Q5MzJmOSBsZWdhY3ktdHJ1bmsKKzcxNTMgMTU5Mjk3MGM3ODliMDkyYzU5ZGE4ZWEwODJjNGI3YjliODgzZWEyMSBsZWdhY3ktdHJ1bmsKKzcxNTQgODliMTYxMjZkNGUyMmQxZjEyNjI4OGZhYzQzNDY3MjMxMGRkYTM5NyBsZWdhY3ktdHJ1bmsKKzcxNTUgMTBjMWI4ZjM5MDJmY2IyOGFjZWY3YmQ4MTE2YmVlNjcwZmZhZDgyMiBsZWdhY3ktdHJ1bmsKKzcxNTYgZjljNWEzMTNhZmQ5MzI1MDJmY2QwY2ZkZTMzMGE5MWMyZDQyM2YwMyBsZWdhY3ktdHJ1bmsKKzcxNTcgMTljOGU2MWNhZDJkODM1YWU5ZTJmZmZiODJhYmEzNWJkM2QzNTMxYiBsZWdhY3ktdHJ1bmsKKzcxNTggMzFiZDBhZDAyNzJkNWEwOTU0NTg0NTZmYWQ1MzNiNWM5NjEwMzgwNSBsZWdhY3ktdHJ1bmsKKzcxNTkgZDgwMDg0MWI1N2E4YzdlZjg5MDhjNTE3MjRlOWQwMzFmZDQyYzUyNCBsZWdhY3ktdHJ1bmsKKzcxNjAgZDdkMDVlMjM0NGQ3MzZkODk2Yzk5OWJjZTE4OTNhZTc2NDVlMDA1NCBsZWdhY3ktdHJ1bmsKKzcxNjEgYzA0NmVmYWYxYmQyYzQ2ZTYzMTg4NmM1ZDBiM2NmNzQzZmQxMDE0YiBsZWdhY3ktdHJ1bmsKKzcxNjIgZDEyMjc1M2U1YjlmNjAzYzg2MjZjMzYzZTY3MjFmOGMxY2ZhMDAxNiBsZWdhY3ktdHJ1bmsKKzcxNjMgMDFmNGVhMDVhNzY2M2VjMTJiMDM4MjE4YTY0MGUwZWYwMTllYzA3NiBsZWdhY3ktdHJ1bmsKKzcxNjQgOGY1MGJlYzUwNjhlNmVmZmM4MDVjOTNlYmNiZGEwMjg4OGRmNzY1MSBsZWdhY3ktdHJ1bmsKKzcxNjUgYzJiODMxZjkyM2MyZjAzZmQ4ZDViNDRlMzQwYTdkODkxZTNiZTI4NyBsZWdhY3ktdHJ1bmsKKzcxNjYgODAxNWM1NTQ5MzA5ODRlYWI5ZjRkM2NhMTMyY2QwYmY5MzI5NjAwNyBsZWdhY3ktdHJ1bmsKKzcxNjcgY2I0MDViOTY5NmQ0ODM2NTcyZjMzYzliYjg3NjgyYzkwODY0MmI1MyBsZWdhY3ktdHJ1bmsKKzcxNjggZmFkZGY2ZDU1YWYwYTRkNDAyMGZmNDdiMmZhNjVlMjg4OGM5ZDBjNiBsZWdhY3ktdHJ1bmsKKzcxNjkgMmMxMDM5NTkyMWUxZDBiYmIxYjg4NmZlOTVhMzMyMzA5NjQ1Y2Q4NyBsZWdhY3ktdHJ1bmsKKzcxNzAgZjEyYjFkNGQ2YTliYjg4MmY0NmU4NjQyOTdlYzhjYmQ2ODBhNTFlYSBsZWdhY3ktdHJ1bmsKKzcxNzEgZGUyN2RhNWYyMmYxNzUzNWY3ZDY4Y2U4MDVlZjRmODViYjBlZjY0OSBsZWdhY3ktdHJ1bmsKKzcxNzIgMWYzNjhmYjNlMWY3ODZiNDQ2ZDVmN2MxM2Y3MGYyNmZkNTFhODFlNSBsZWdhY3ktdHJ1bmsKKzcxNzMgZWU5OGU0NGQ0Zjg1NTFkNWUyYzdhMGFlODEzY2ZkNDM0NWQ5MDI2MCBsZWdhY3ktdHJ1bmsKKzcxNzQgYTE2OTRlOTViY2JhNzkyMGU3OWYwMzk3N2M4ZGFmOTgxNzcxOWNmMiBsZWdhY3ktdHJ1bmsKKzcxNzUgODI1MDM4ZDk4YWI2MjJiZDA3Njk1MmFjOTkzZTc0OWY3MzU0NWU5ZSBsZWdhY3ktdHJ1bmsKKzcxNzYgOGE3NWI4YmYxNTIxODc1NGZiY2E4M2MzMDc5YjdjMDJlMTdhZDA1NyBsZWdhY3ktdHJ1bmsKKzcxNzcgZTVlNTg3OTQwNDBmNDU0MzQwMTk3MjNlYmJlYzU1MDc0ODk1MThkNyBsZWdhY3ktdHJ1bmsKKzcxNzggZTBiYjFkYWMyZGJmNTU2Mjk3NTRkODdlYWZjNTU5ZmEwYjBhYTFhNyBsZWdhY3ktdHJ1bmsKKzcxNzkgNmMwZTM1Y2YwZjg1YmQ2MjNhZTA1Zjc2ZTRlMGQwNzc3ZTk0YWJmMiBsZWdhY3ktdHJ1bmsKKzcxODAgY2M1MjUxODJiYmIxZjM2ZWVjMWMyMDkxYmRhYTNjZmM5MjExMmY1ZSBsZWdhY3ktdHJ1bmsKKzcxODEgOTc4NTExNDMyNmFiNzUyNTJkNTRhZTJjZTg2YTkwODNkNDU3ZGNjMiBsZWdhY3ktdHJ1bmsKKzcxODIgMmRkMjg1Nzk0ZDY3NDMzMDgzNmE1OTM3OWU0ZGVlYjdiMzllMTRkYSBsZWdhY3ktdHJ1bmsKKzcxODMgNzc1YTdkMGMyOTYwOWZhZmQ4NTE2NDk4NjVkN2Q3MTVhM2M3NDJhNiBsZWdhY3ktdHJ1bmsKKzcxODQgNDM4OTQ5YmI0NTA4MDUwNjNjMjM1OGQ3MzNmOWM2YTY4YTZkZTAwNCBsZWdhY3ktdHJ1bmsKKzcxODUgN2I5YTYxNjYyODFhMTJjM2FkM2EyN2E5NTI3ZTJhMjFkYzAwZmNmYyBsZWdhY3ktdHJ1bmsKKzcxODYgZDlmZjZmODNhMTZhZDBhMTUzMWI2MzEwZTNjNjhiYjE4NGRlMjcxNyBsZWdhY3ktdHJ1bmsKKzcxODcgMDI1M2VmMjY3YjY4YzZjYTc4ODhmNTQxM2M4YjJhOWJjNWFjYTMxZiBsZWdhY3ktdHJ1bmsKKzcxODggNmNjZjVkYmE4YjBiYjZiNzcyN2NkNzE5Y2U5MDZmNGM5OWE3NzQwOCBsZWdhY3ktdHJ1bmsKKzcxODkgMGM2YzY5YjBkM2U5YzY5ZmE0OTgyZDFmY2FmYmFmMjA0OGY5YTJkMiBsZWdhY3ktdHJ1bmsKKzcxOTAgNjc3NTlkZmU2ZWU4YzdkYTZmMjFmZTYwY2RjYzBkODI1YjNhZGYyNSBsZWdhY3ktdHJ1bmsKKzcxOTEgYThhNTQ3NDkwYTEyN2NkZWQzZjdkNDEyNGNkNGQ5MzU4YTJhMDUyMiBsZWdhY3ktdHJ1bmsKKzcxOTIgMTIxNTRkMDkxMzE2NzRmZTlkZWFjNzk1NzZmNDk5M2RjZTcwYWQyNiBsZWdhY3ktdHJ1bmsKKzcxOTMgMTgzNDY1NGJlYmUzMjEyZTU2ODRlOWFlNzRiMzhhZGU1ZDA1N2Y4NyBsZWdhY3ktdHJ1bmsKKzcxOTQgNzZiYjIwOTlkNjE4MjlmNjg3MGQ0YTI1N2EyNDViZmQ1ZWMyZjYzNCBsZWdhY3ktdHJ1bmsKKzcxOTUgOTA4NTdmYjU3Mzk3MDZlMGMwMGE1NjBiNjc0ZDA0ZGUzMjk3YzFkZCBsZWdhY3ktdHJ1bmsKKzcxOTYgYjIwMDllZDE1MmZhNWIzYmZmNzU0ZjU0YjhjMTYzOWU1ZmE2NzdlMiBsZWdhY3ktdHJ1bmsKKzcxOTcgYzA3ZTVjNDU1NTc2ZGFhZDE5YTlkYjFhM2ZjOGRhMjFmMTc5YmNjOCBsZWdhY3ktdHJ1bmsKKzcxOTggNDM3NDRiZTI0MzNmNThmMDNiN2EzNzE5YTJhOGY5NTFkY2ZlMzdkMyBsZWdhY3ktdHJ1bmsKKzcxOTkgZGUwMWM2NmY1ZmE1OGJmMjg1ZDNlOTNmODIwNDNlNzU0ODY4YTc5NyBsZWdhY3ktdHJ1bmsKKzcyMDAgODY2OWVkYjFkOWM1NjU4N2I1NDIzYjVmNDAyZjRmZDgwYmFlOGVjMiBsZWdhY3ktdHJ1bmsKKzcyMDEgZjdhOTkxNjFkZjkyYWExYWE0OWMzOTEzOTgyOGZlYjFlMWY5YmU0MiBsZWdhY3ktdHJ1bmsKKzcyMDIgOWFjOWVhODQ4ZDdkYTc3OGNiMjFhNzQ2NWM0MzBkNTllY2Q2ZjI4NiBsZWdhY3ktdHJ1bmsKKzcyMDMgYjIxOGYyOTRiNzI2YWJjMDMyMzkyODllZGUwNGJhN2RkNTFjOTI1NCBsZWdhY3ktdHJ1bmsKKzcyMDQgZTI3ZmEyYTNmNTI2NTAxOTIwOWEwZTNiOWIzY2UzNzQ4ZDczZjRjYyBsZWdhY3ktdHJ1bmsKKzcyMDUgNjJjZjdkNTg5MzAwZWY5ZmM1NWEyY2MyZjNiZTcyZWIyMjlmNmNkNCBsZWdhY3ktdHJ1bmsKKzcyMDYgMDdmMGYyMTM2M2U2NDgyMTlmOGUyNmRlYjhjYWZjNjc3NGVhNTJjYyBsZWdhY3ktdHJ1bmsKKzcyMDcgZDM2NzAxNDIwMGJiNWI4MDExN2FiY2Y1Yjk4ZTFlMGM4YzMwZWQzYSBsZWdhY3ktdHJ1bmsKKzcyMDggM2M3ODEyYmZhMWE0YWFhYjg2NzYwZGJjZGIwYjdlMmQ4MDYxMjlhMiBsZWdhY3ktdHJ1bmsKKzcyMDkgM2RiNDIzNTE1NjI2YzJmYmE3MTMyYTcwNDVjYzI4MGVmZGM4MjEyOCBsZWdhY3ktdHJ1bmsKKzcyMTAgNGEzZjQ1YjM0NzFhYzU0ZTVkNTMwNWM4OTY4MWFhMGJiZjM2NDcyMyBsZWdhY3ktdHJ1bmsKKzcyMTEgOTRhZDU2ZWY1MDczMzU5ODQ3ZTM2NjJmNjhkOGZiMmUzZDQ2MzRjMiBsZWdhY3ktdHJ1bmsKKzcyMTIgNDI2Zjg3YzQ2NWEwMjY2ZjMxNDU0NGQyNGFiNWU3ZDA4ZGU4Y2Y3OSBsZWdhY3ktdHJ1bmsKKzcyMTMgOGVkYjU3YzMzNDg3YmFlZDkzYjkwNTdlZDdhYzg4MDUzMjE2MjdmYSBsZWdhY3ktdHJ1bmsKKzcyMTQgYjAxNjgyODUxYTYzMzY3N2FmN2E4NDEzY2M4YmU0ZGFlNzkwZTc0MiBsZWdhY3ktdHJ1bmsKKzcyMTUgMDYyZTg4NjA4YjU1NTllNjAxY2RjZDFjNDU1MjgzM2JlMjZkOTAzNSBsZWdhY3ktdHJ1bmsKKzcyMTYgYTQ0MDIwMDhjNTY5ZGQ4ZWY3ODhhNTZkOWE4MTc4ZWUzMTZlYmE3NyBsZWdhY3ktdHJ1bmsKKzcyMTcgZWQwMWVjNDNlYjMwZmY0M2Y4YmU2N2Y4N2E2OGVmYTRiYzE5NjVkNiBsZWdhY3ktdHJ1bmsKKzcyMTggMzU3ZDQ1NDQwODVhMmE2ZDFkMzM4YmJmNjJhZDhjMDVlOGU3OTM0YyBsZWdhY3ktdHJ1bmsKKzcyMTkgZTA1MjNmMmQ0MTYzOWM5MDRhYTEyOWE0ZWI4ZWFiNDUyNjNlZWNkZiBsZWdhY3ktdHJ1bmsKKzcyMjAgN2FjZGY1OWYzMWM1ZWMxY2ZmYjdkOGNlNmNjNmExZmI4MDBmNGQ3MSBsZWdhY3ktdHJ1bmsKKzcyMjEgMmNiZGU1ZmM0YjE5YmUxOTAwOTExZmQwNDdkZWE0NjYwMzlhMTYzMiBsZWdhY3ktdHJ1bmsKKzcyMjIgNWIwNWJjYmQ0NTQyYzY0MTdkYjgxZGIwMGEzODVkNTQ4NzcwYTVjOSBsZWdhY3ktdHJ1bmsKKzcyMjMgZWExMjY1ZjI2YjMzMjc0MDk1ZGQyY2MzN2Y1ZDI5NjQ5ODJhYTc5NCBsZWdhY3ktdHJ1bmsKKzcyMjQgZGRlYTY5ZjkwNzFiYTgyZDliOTg5NGU5MjQ3NTcxY2FmZTZmNjUzMSBsZWdhY3ktdHJ1bmsKKzcyMjUgZmZmY2M1MmNkYzFlODZmZTNhOWEzZmY3MThiNjlmNmJkMWRhY2JhNyBsZWdhY3ktdHJ1bmsKKzcyMjYgN2FiODM1Zjg3Zjg2ZDIxY2RiYzdiNzQwYmY0ZmM2MmI3MGRlNjgwNiBsZWdhY3ktdHJ1bmsKKzcyMjcgNzM2N2ZiMTA3MTA4M2VlMzM2YjA1MjJmOWNjYjIzMWFjOGY2NTljNCBsZWdhY3ktdHJ1bmsKKzcyMjggN2IxZTc4NGUyMGEwZWNkNTBlZjU1MGQwZDllNjE4N2ViNDc4NmViZiBsZWdhY3ktdHJ1bmsKKzcyMjkgMzA3MDNhNjU2ZDEzNDVjZGZmZjQ4Y2RhYzYxNDg5MGYyZDgxYjhlZiBsZWdhY3ktdHJ1bmsKKzcyMzAgMWRlOTZjNTcyYjAyYmM0YWJlODJkNGExOGQyZDE0ZmYxY2M0ODczNSBsZWdhY3ktdHJ1bmsKKzcyMzEgMzAxZDdmNmFjZjBhNmQwMWVkODY1NzIxZGU0ZjVjMmY3NDA0YTlkMiBsZWdhY3ktdHJ1bmsKKzcyMzIgZTFmMTcyNWNhZTZkYTgzMDAxYTNiYTBhNDMzMDljYThkOTI4ZjM5MyBsZWdhY3ktdHJ1bmsKKzcyMzMgNjA1ZmJhMDJlMTk1MDc3NjI0MzdhMTQ2Zjc4OTE2MjAyZWUyOGE0NCBsZWdhY3ktdHJ1bmsKKzcyMzQgM2ZjNjA0MmEyYWNiODc0YTJkZGQyMjU1NTdiZDAzMjYwNzMzN2I4ZCBsZWdhY3ktdHJ1bmsKKzcyMzUgNWIyMmUzMmVhYTE3NjRlM2Y2OTE2MzVlZjUzMmQ0MzdlMWI4MDc0MCBsZWdhY3ktdHJ1bmsKKzcyMzYgZDdlZWE2OTRjZDNhMDRlNmU2NTBmMDExNWM4YzJiZmRmZjQ1YWM2ZCBsZWdhY3ktdHJ1bmsKKzcyMzcgZjkyNjI2M2ZiNjU0YzI5Yjg3OGY5YTgyZGE4YjgwODY0MTJkOTE0YyBsZWdhY3ktdHJ1bmsKKzcyMzggMzg2ODlhY2VhZTdiNjBjNWI4YWM2YmZkNDBmNDdlM2QzY2ZmODI0YSBsZWdhY3ktdHJ1bmsKKzcyMzkgODg3MTRmYmY5YTA2MjZhYTYwY2QzNDJkYTgzNWQwYmNlNzdmMWQ5ZiBsZWdhY3ktdHJ1bmsKKzcyNDAgZjhiMzZjMGVjMTE0YWVkZGIzM2QzN2I5NGNkZDIyZTRlMjAyNjVhOCBsZWdhY3ktdHJ1bmsKKzcyNDEgOTYwNGQ2Nzg0Njc1YzJkZDhlNTAyZTRlMWU0YTAwMWRlOGEyMzRmMyBsZWdhY3ktdHJ1bmsKKzcyNDIgNjNkYWUyNzNiMDdkODU5MzE1NDRkOGY0NmRkMWY1ZDE4ZWRhYTJmYSBsZWdhY3ktdHJ1bmsKKzcyNDMgZjdhNjFjNmE2NWMzNzk3NDcxZTY5NDZjYjFlMmM2NWQyOTMyNzQyNCBsZWdhY3ktdHJ1bmsKKzcyNDQgZWVjYmNjNDhiMGU5NzZjMmJmNjEyM2MxMmZiNjgxN2ViODhiNDE0MCBsZWdhY3ktdHJ1bmsKKzcyNDUgNzIxMDhmYWE1NmJmMTQ4NzBkN2E3ZTY1OGQ1M2YzMWE0MTY1MjA5NCBsZWdhY3ktdHJ1bmsKKzcyNDYgNDcxMDcwMTY5MGMxYzZiZGI0MzQzMzg0NzZlMTQyZGRiMDQ1ZDFlZCBsZWdhY3ktdHJ1bmsKKzcyNDcgYjg1ZjEwYWU0ODU3ZjExNTFjZWZjZWE1Mzc5NWNiYTA0MTUyNzUzMyBsZWdhY3ktdHJ1bmsKKzcyNDggZDU1ZjMxMzM4ZmRjZjg1M2NjODI1ZTUxZDhmOWVmMjY3NmFlYzQ4MiBsZWdhY3ktdHJ1bmsKKzcyNDkgOWU0OGFiYmVlNmM1YzA1NDE5MWZiMjAzMmZhN2Q5NGEyZjcxZTM3ZiBsZWdhY3ktdHJ1bmsKKzcyNTAgMGQwYzQxM2I2ZjI1Mzk3NTY4ODZjMDVlZTlmZjU2YWUxMDIxYjg2NiBsZWdhY3ktdHJ1bmsKKzcyNTEgNGRlOGI4NmJhMjU1OTFhNDA1OThhZGRmZTVkNDM2MTM4NjcwMzMzMiBsZWdhY3ktdHJ1bmsKKzcyNTIgNTBkNmRjNDU4YWEyZmJiZmY2ZjI4NDJkY2NjMzc3ODIxYTRiOGZmZSBsZWdhY3ktdHJ1bmsKKzcyNTMgMWNjYWE0NDFkMDgzZjAwNDJjMTgxYzBmZjM1M2E5ZjMwNDIyNWNhYyBsZWdhY3ktdHJ1bmsKKzcyNTQgYTU3MWM3ZjA4OTkxNmRjYmM3NWNhM2E0ZDY1MzlhODE5Y2Q0OTA3ZiBsZWdhY3ktdHJ1bmsKKzcyNTUgYWJlZjUwMDZmODRiZGM3MDZiNzMzMjZjYzEyZDViYWYzNTM3ZWZjNiBsZWdhY3ktdHJ1bmsKKzcyNTYgNzU2MmE2ZGY5MWZiNGJlYmM2NDVhZGE1NzFlNzY3ZGRmY2IxYjA1ZSBsZWdhY3ktdHJ1bmsKKzcyNTcgMjQyNmEyMjA2NjRiMThiM2RlNDYxMzE4ZTFjZDQxMDIxYzVjOGU3OCBsZWdhY3ktdHJ1bmsKKzcyNTggZmViYTZkNThkMjA0ODlmMDE2MzhjMWE1Y2RlODc2OGVlZDk5OThlYyBsZWdhY3ktdHJ1bmsKKzcyNTkgZTQzMzYyOTEwYTVlM2UzYzdkNTU5YWZiMTk2MjA5NmEyZWI3MzA0MCBsZWdhY3ktdHJ1bmsKKzcyNjAgOWZjMzgwYjFhNDQ1YWExNGExMmY2NWRiNTc0Mjc0YzA1ODdiOWNhMiBsZWdhY3ktdHJ1bmsKKzcyNjEgMDk0OGYzOWVlOTYwZTQ3ZWI5NzJkM2ZkZDMzZWE4MjkxZDAwYTFmNiBsZWdhY3ktdHJ1bmsKKzcyNjIgZDdlNjY1M2QwODRmNmZiYzBlNzU5MTQyYTdlMjI2MzUxMDJiYjA0OSBsZWdhY3ktdHJ1bmsKKzcyNjMgZjIzMjFlNDIzMDcxN2U1YzU5NzdlODlhMmJkYzcwNzNjYjQ3NDk3MCBsZWdhY3ktdHJ1bmsKKzcyNjQgZDQ1YmE2NGI4MmZkNmJlZjI5NDM0ODI0Yzg5ZWVmOTFkMDg1MmRjNCBsZWdhY3ktdHJ1bmsKKzcyNjUgZjM3NTgyMzE0MTIzMTg1YTA1ZDRlMGEyYjRmOTlkZDNhNzNkYjdmMCBsZWdhY3ktdHJ1bmsKKzcyNjYgYTJmZDgwZWVkMjdmYTE3MmI2MWZmODVmMGZmMjEyMzc1NDYzYTU0NiBsZWdhY3ktdHJ1bmsKKzcyNjcgMGI2YjFiODgyODY2YjYwYTE4YWNiY2RlZTQ0NTI5YjRjNTQxMjY5NiBsZWdhY3ktdHJ1bmsKKzcyNjggYWFiZjRhMDNhNGIwYmJmMWJiYWY0ZWRhODI2Y2MzMTgxZTZhMDMzOCBsZWdhY3ktdHJ1bmsKKzcyNjkgODBjMGNhNDI0NTEwZTc5Y2M0NjI2YjI4ODA0ZWRlYzc1NjBiNDU3MiBsZWdhY3ktdHJ1bmsKKzcyNzAgYjY1MjBjNDVlYjA1NGU3NzA1M2M0NzU5ZWI5NDUxYWEzZDk4MTUxZiBsZWdhY3ktdHJ1bmsKKzcyNzEgYmY3MmE5NGVlOTZiOWIzY2NjYWQwNWNhY2MzN2UwYzUyZDVmNWQxYyBsZWdhY3ktdHJ1bmsKKzcyNzIgNTIyNThiMDIzYWEzMTc4MWJmZTliYjIzMWNiNjhlYWYyYWEzOTE3MiBsZWdhY3ktdHJ1bmsKKzcyNzMgNWRiOWFkNjAzMjZkYzhjMWQ5ODc1YzBjNWEzOWI1NGYyZWVhZWNjNiBsZWdhY3ktdHJ1bmsKKzcyNzQgZTcyYjJlZDM4M2E5OGI0ZmJjMGZhMGM2MjM0NWRmMGY1ODVhNjFkOCBsZWdhY3ktdHJ1bmsKKzcyNzUgZTJhN2ZmNmY0MTg4NzE4ZjMwM2NmNmVlN2Y2NTdiZjkzNDYyOGU1ZSBsZWdhY3ktdHJ1bmsKKzcyNzYgMmQ1ZWUzNzRhNzNiODVkNzMzYzIwNTNiMzFmMGNmMzg1NDc5NjZjMCBsZWdhY3ktdHJ1bmsKKzcyNzcgODY3ZmVkYTAwODQwN2YwZDcxN2E0NzNjNWQ5N2QxNWEyOTdmMTVkNyBsZWdhY3ktdHJ1bmsKKzcyNzggOTk2NWRmNzgyYWZjZjQyYmE3ZmNiZTIwMDc1ZTU5MzdiYTEwZGRiYSBsZWdhY3ktdHJ1bmsKKzcyNzkgYTJjNDI3ZjlkYjAyYjliZjFiOWFkODA5NGNmZGMyYmVjZWU2MjZhOSBsZWdhY3ktdHJ1bmsKKzcyODAgYzcxY2ExNWM4YjU1NWNkOGY0YzRmMWRiNTc4ZDE2YzkzMDk2MGIwNiBsZWdhY3ktdHJ1bmsKKzcyODEgYTNjNDc3MjU5NTA1NDQzMDhiZGY4MmMzYmMzNGFkM2FmMDc5NDJmNyBsZWdhY3ktdHJ1bmsKKzcyODIgOGQyYzhiMDgwNDAxN2Q0MTMxNjU3Y2Y0ZjBiYzhiMGRmMjgwZGY0YyBsZWdhY3ktdHJ1bmsKKzcyODMgMDlkNmM1NzA4OTk5ZTYzMjc4NTEyZTQ4ZDIwMjQwYmVlMWI3ODA5MiBsZWdhY3ktdHJ1bmsKKzcyODQgNmY4YjVjM2NkNmNiMmU1ZjJhNmZlZmFhMTljYWMyZTk4NThkZjhjNCBsZWdhY3ktdHJ1bmsKKzcyODUgMmNiNDY5YTQyMWE5NzgzN2ZkMjVmZTg3ZjQ1NDIxZTM1YjE4NWQ5YiBsZWdhY3ktdHJ1bmsKKzcyODYgOWFlM2NjY2ZhN2NkZTEyOWJkYTU5MzAzNjMzNjJkYzcxNzJkMjNiMiBsZWdhY3ktdHJ1bmsKKzcyODcgZGIyMzBmZWZhNzAyMzk4YjYwNjhiMTM4OTJiZDg4OTk5NmU0MWI0YSBsZWdhY3ktdHJ1bmsKKzcyODggYjZmYWRmMDIzMWFmOWIyNjM5ZjkyNWUwMDQyZjVjZjAwMDc3ODE1NCBsZWdhY3ktdHJ1bmsKKzcyODkgOTgyMTM2MDRmOTQxNGZkNDVjZmFlMjhkODc4YmU1MmQ2ZmIzNzBhYiBsZWdhY3ktdHJ1bmsKKzcyOTAgZmIxOGNlOGMwY2Y2YWJiMDYzZTRhZjQzZjI3MDg0MjY1OWZhNTFhMyBsZWdhY3ktdHJ1bmsKKzcyOTEgYzQ0NTQwZDUyZDEzNjk5MTA3NmFlZDA4YzgwMmVhYTY5N2Y5ZmUzYiBsZWdhY3ktdHJ1bmsKKzcyOTIgMGY3NTE1ZWJlM2JmNGVhZDJkZjA5YjM5ODZhOGI0ZmUxYzk3YzA4ZiBsZWdhY3ktdHJ1bmsKKzcyOTMgNjdhNTIyMWEyZjYwZjkzOWNjM2I0ZmNkYWFjMzQxNmRmOTI1NTUyNCBsZWdhY3ktdHJ1bmsKKzcyOTQgOWJkYTM4YzY3ZjRlYzI1YzBmZjVmMjE4YTc3MzM4ZmJkNzgxN2ViOSBsZWdhY3ktdHJ1bmsKKzcyOTUgZTcyYWMxZGM2MTRmMmEwODYwNDI4NDQ2MTE1ZDM5MmU2Zjg3ZWVhMyBsZWdhY3ktdHJ1bmsKKzcyOTYgMzkxZjA4YTk3NDZiOTZkMmJmNDA1NWVmYzk1ZTNiZWU1YTJmOWZiZiBsZWdhY3ktdHJ1bmsKKzcyOTcgNDRlODZkYWRlYzk0NGJjMTQ5OGIzYWFmODljYzQ1YzUzOGNjYzFjOSBsZWdhY3ktdHJ1bmsKKzcyOTggZjQyYmNhM2Q3YmUyMWQzMGMxNzdiYjkxNTMzNzUxYWU3YjFiMjE5MyBsZWdhY3ktdHJ1bmsKKzcyOTkgODc4M2NmZGM3YzZmOTkzY2JhNDgxMTZhZjg1YzMyZDgzYzAzMjQ2YSBsZWdhY3ktdHJ1bmsKKzczMDAgYjhhOTdhZDVmN2NlZDNhNTQ1MDc0M2IxMTBjOWI0OGFlYmUwODgzMyBsZWdhY3ktdHJ1bmsKKzczMDEgZjNiOTJjOTVlODViMzYyNmEwZWViOGMzNDlmYjAyNGEwNmYzNmQxYiBsZWdhY3ktdHJ1bmsKKzczMDIgYmU0ODFmM2FkYTBiZGFhMzA4Yzg1NTgyMzA5YWM1ODQ5Y2ZhZjNmZSBsZWdhY3ktdHJ1bmsKKzczMDMgOTdhZTg0NjZkMWM0MjA3NGUyMTlkNWUzYWRjMTgyZjkwZTI3NzFjYyBsZWdhY3ktdHJ1bmsKKzczMDQgNWEyZTcyNTJjODkwMmQ0ZDZkMTg2NjRkNjQwYWE2MWVjNmMxODdkOCBsZWdhY3ktdHJ1bmsKKzczMDUgNDM0MWZmNWM2OTdjZmVlMmE1ZDAzYWUxNzFmMTJiODhlNmZmMjNiZiBsZWdhY3ktdHJ1bmsKKzczMDYgZDg3ZTg3ODUzOTU4ZjNlOWU5M2VmNzY3NTg0ODhiMzJiMmJhZGY1OSBsZWdhY3ktdHJ1bmsKKzczMDcgNTBmNDk4M2I2Yjc5ZDE5MjIyMTkzODlhY2JkZjIxZTA2N2QzOWM0MCBsZWdhY3ktdHJ1bmsKKzczMDggMzM5ZDBjNDlmMGI1NzM4YWY0MjI5MzY2NzY0YjljYmQwODg3MjhlMSBsZWdhY3ktdHJ1bmsKKzczMDkgYzdlOTlhYjYyN2YzYjc0MDI5NjliYjgxNGMzMzAyYjUzMzcxZjEwNyBsZWdhY3ktdHJ1bmsKKzczMTAgZTA1NDgwZGI3MWFiMTEzOGRlMzViMzRjZDJmOGVkNWQ1MGI0ZGY5ZiBsZWdhY3ktdHJ1bmsKKzczMTEgYWNiMDUwMWQ5M2VmOWQzMGJmMDUzZmQxYTgyYmU3Zjc4ZjhmN2FlZiBsZWdhY3ktdHJ1bmsKKzczMTIgOWUxYWM5ZWJlNzlmNTFkY2QyNDNiNTMzZmNkMGNlYTZkOTBiZjVjNiBsZWdhY3ktdHJ1bmsKKzczMTMgNWMxOTUxZDU3M2IxZDliZjMxZmYzNzg2MDAxYmNmN2RmYTdlNjQ3NiBsZWdhY3ktdHJ1bmsKKzczMTQgNDU2N2UxNThkMjBjNTEyOTJiMmNmODc2NzFhZjUzNWQ5NmIwMWZiNSBsZWdhY3ktdHJ1bmsKKzczMTUgMzVjNjQzZTkwMjNlNzJkY2RkYmVmNTZhNDgzYWUxNDE1MzY0YTk1MSBsZWdhY3ktdHJ1bmsKKzczMTYgYTdiOWM3YzgxMzM3NjMyMWE4MjQyMTEyNzcxNTk5NTAyNTNkNGNhOCBsZWdhY3ktdHJ1bmsKKzczMTcgODQ2NzlmN2JiZTZkNTg0OGE2MDVjMTQwYmQ4YTAwZDBhYjVhYTVjYyBsZWdhY3ktdHJ1bmsKKzczMTggMzhhZTJhMGZjNGYzM2M2ZTZhZDBjN2YwNmZmZWU4YzA5ZjJjZjk4OSBsZWdhY3ktdHJ1bmsKKzczMTkgNTU1ZjZlNzZkMjA3ZGNjZDNkYmJjYTQ5NWRlZWZkYzM3YWZlNjYzMCBsZWdhY3ktdHJ1bmsKKzczMjAgMGJkZDMxNTM4ZDhmZDY2NjcwYjFiODdjMjcwNzcwZTc3MjE2YWZkZCBsZWdhY3ktdHJ1bmsKKzczMjEgOTcyMDI2ZDQ3Mjc0YWVhNWFkNmYzYWJlNzdkNTMyNGNiM2RjMjRkZSBsZWdhY3ktdHJ1bmsKKzczMjIgZDUzODEyZDY4NDA4YzYyNGZjODgyYjdjOTZjYjY5MzAwNTY0NWFlZSBsZWdhY3ktdHJ1bmsKKzczMjMgNTI2OTVlZmRmMjJjMmE4NWU4Yjg5YTU4MDRlYzk4YWNjZGI3ODU4ZCBsZWdhY3ktdHJ1bmsKKzczMjQgMGE0OWQxOTI1MDZkY2JhNjJmNzQyMTNhYTY5ZThlOTUxYmI2MWQ2OCBsZWdhY3ktdHJ1bmsKKzczMjUgMGUxODk3YTFmMGQ1MmNiMDlmOWFiZTUyOTg1MzE0ZDI5MjBlZDM2YyBsZWdhY3ktdHJ1bmsKKzczMjYgZjgwODAwMWEzZTAxMzdhY2JmZjEyZDhiNTQxMzkxMTI0NjVlYzM5NyBsZWdhY3ktdHJ1bmsKKzczMjcgMjljZWQ0ODVhY2EwOTgzNTZhMmJkMzdhZThkYTUzNDEzODQxNGM4MSBsZWdhY3ktdHJ1bmsKKzczMjggY2Y5MDc0NTM4MWJmZmQwYTY2MzM1ZWM1MDU2MTJjNWFjNmFhMDQ5NyBsZWdhY3ktdHJ1bmsKKzczMjkgMTY3YWQzOTQ0ODhjY2FiMWE1M2ViODkyODI0OGQ4NGFhMDNmY2NjMCBsZWdhY3ktdHJ1bmsKKzczMzAgNDNhYjBmZWZlNGExNTZhZjdmNDRlMjgxNDYxNmFlZGI0NzVhMzhmZiBsZWdhY3ktdHJ1bmsKKzczMzEgODhkYmZhMmJiOWRjZWZmYzBlMzhiNDk1MjQxNWZhNTZmMDY2YzViZSBsZWdhY3ktdHJ1bmsKKzczMzIgZTBhYWVlN2ZkMWZkNDU0ZTZlNDYwYjI2ZjI1ZWU5ZWFjMzg5ZTY3OSBsZWdhY3ktdHJ1bmsKKzczMzMgMTk4OTg5ZWUzNmQ1NmE1ZDNlNTVlNTgxYjhhMzM3ZDI3YmEwYmVhZCBsZWdhY3ktdHJ1bmsKKzczMzQgYWI0NjFjNzYyNTU5YTQzMWJjNDA4OWY0NTFkZDRiNTA3ZGE3NGM2NSBsZWdhY3ktdHJ1bmsKKzczMzUgNWM2ZmJkYzUwZTFkNjQzOThkZjkwNjk4ZjYzMTQwMzZiZDc4MmRlYyBsZWdhY3ktdHJ1bmsKKzczMzYgNjljYTVlM2NjYzZkYTgyNTE2MmM1YWU5YzM3MDg3MmM3ZTk1MmEzYSBsZWdhY3ktdHJ1bmsKKzczMzcgN2Q3MzE5ODExZmYwYWUxMzcxZTFjMGU3YzY5Mjk0OWFlMGZiOTE2ZSBsZWdhY3ktdHJ1bmsKKzczMzggYjE3MDdiY2RjMjY1MjZjYzc1OWQ1ZjA2N2IwMjc2ZWFmN2E4ZGFiNyBsZWdhY3ktdHJ1bmsKKzczMzkgYTUzOTA4ZDA5YTA0YzAxMDMwMjFlMzk4NmU3ODAxNDZhNTNmMzYzOCBsZWdhY3ktdHJ1bmsKKzczNDAgZjUwNzNlMjQxNDdjMDc4ODE1ZjUwMWY4OGZmNDFlYjg2ZGNiMmUzZiBsZWdhY3ktdHJ1bmsKKzczNDEgMzk2MDM0MGEzMjUyMDhjNGU1ZDc5MGYxMmZjM2Q0NTVkYWM4MzQ2OCBsZWdhY3ktdHJ1bmsKKzczNDIgZTNmMmFiMGIwYWExNmQyMDAzMjJmNjcwYjBlNzc3NzQ5N2RhOGUwNiBsZWdhY3ktdHJ1bmsKKzczNDMgYmY0ZGIyYTRiYjU0MDc5ZWQwN2IwYWE2ZjE3OGViODc0ZTUwMWU1NyBsZWdhY3ktdHJ1bmsKKzczNDQgMGVhMGZhYzY4YzFjOWQ4Zjc2ZDVmN2Q3YWVjM2YyZjI3ZTYzMmNhOCBsZWdhY3ktdHJ1bmsKKzczNDUgNjhmNDEzNDg2OWRiMDNiNzdjYWQyZmJjY2QwNjNiMDI0ODY4OWViMiBsZWdhY3ktdHJ1bmsKKzczNDYgYTcxNTliYTBlNDVkMWQ3NDk0NDY2MWY4YTNiODg5ZmFiMmQxYmE2MyBsZWdhY3ktdHJ1bmsKKzczNDcgZGE1M2U0OGVmZWE4NjBhMmRiMzNkZTNjNWJhY2VjMmFlOTY0NjIyYSBsZWdhY3ktdHJ1bmsKKzczNDggMzJmNmIwZDNhNjZmYmYwODhiY2M2ZjNkYWUyODQ2ZGM4YTM0OWM3ZiBsZWdhY3ktdHJ1bmsKKzczNDkgMDNiY2RkMjJmNmE0YzJhMjdlN2Q3Yzg0ZDExMDIwNjNkZGViZTlkNCBsZWdhY3ktdHJ1bmsKKzczNTAgOTExMDQwZTFiYjExOTE4NGJiNTkzNDI0NzhmNTQwMjg0ZGQ4N2NkMCBsZWdhY3ktdHJ1bmsKKzczNTEgMGYxMGZhNzUyY2E5MjU2ZjNjN2JjZjg5Mzc3MDQwN2U4MTFhNWQwOSBsZWdhY3ktdHJ1bmsKKzczNTIgZTU3YThkZTVhZWIzOWIzMDFkY2NkZDY5OGQxYmM1ZjU2YjRhZDFhYiBsZWdhY3ktdHJ1bmsKKzczNTMgYTllN2UwY2NhYTRhYzBjMTA1ZjYzZDczMjc4NmZlMTZmZmMxMzQ4OCBsZWdhY3ktdHJ1bmsKKzczNTQgNDUxNDAyMzE2MGI0NWQxZTJjYzBkNWZkNDBhOWY0NmIyYjNlZWUwMSBsZWdhY3ktdHJ1bmsKKzczNTUgOWE3ZTlmMTBhZWQ2MjA4ZWJmZDgzOTg5OWJmMjg4ZDdkZjU4NjRlOSBsZWdhY3ktdHJ1bmsKKzczNTYgMjI0MWQzMTI2NThhZTc3M2QyNDY2Yjk5MjUyMWE0NjMzODA0MzY0MiBsZWdhY3ktdHJ1bmsKKzczNTcgOGQxN2Q1NTJkMGVjMDVkYWM2YWQ4MWVkNjMxNDMzMmNkMTczZmJhMyBsZWdhY3ktdHJ1bmsKKzczNTggZTc0MmI1OTNjMDkyNjNjZGVkYmJjYTU1ZWM3ODZiZWI3ODZhNTdmMSBsZWdhY3ktdHJ1bmsKKzczNTkgNjVjYjI2MWY3NzM2YzlhNDNkZjgxZGZjNWY3NjJmOWQ1MzNlNjExZCBsZWdhY3ktdHJ1bmsKKzczNjAgMzgzYzY0ODYzNDZmNjYzM2E4ZTI5Yzg1NWMxZjM5OTQwYzNmMzcyMyBsZWdhY3ktdHJ1bmsKKzczNjEgMjFjNDFkM2MyNmI2NTExYTcyMzllNmU4ZTQ3NTcxNjU3MDY4YjZmNiBsZWdhY3ktdHJ1bmsKKzczNjIgMzQyZDJlZWQ1NzNhNTc4YjJlNjU2OWEzZWRmMWUyNTk4NmRjZWI4MSBsZWdhY3ktdHJ1bmsKKzczNjMgZjEyNjExODY3MjJjZDIwOWQ0ZTVmYjNiZmNjODA2YzkyZDJiY2JhOCBsZWdhY3ktdHJ1bmsKKzczNjQgOWM2YjVhNjVjZTYzMDBkOGQwYzZlOWJmN2E2MTkwMmI3MzFiYmNhOSBsZWdhY3ktdHJ1bmsKKzczNjUgOGE2OGY4MWJhYWQ2YjE2OTExMzE2YWRmMzkwNjA2Yjg2ZWI0NGY2YiBsZWdhY3ktdHJ1bmsKKzczNjYgZDM5OWE0NTM3ZjZkZTBmMjA0YzljYTZlZDNkZmQ0YTdjM2U4YmU2NiBsZWdhY3ktdHJ1bmsKKzczNjcgMWMwODljNWI2NmU5OTA5NTRlZDU3YzlkN2JjODNhODQ0OGMwZmQyZCBsZWdhY3ktdHJ1bmsKKzczNjggYzJlYWMxMjZlOGZmYzA4NzhjNjQ5OWY4ZjQxZWEzYmE0ZjU1MjczYSBsZWdhY3ktdHJ1bmsKKzczNjkgZjMxZjQ3ZmYxZmRkM2Y0OWIyNzFiOGJkNTU1YmMxYTMxNDA2M2Q1MSBsZWdhY3ktdHJ1bmsKKzczNzAgNTU2ODMyMGRhOWI1OWFlYmZlZjI5MTc1ZTUxZWE5ODdmMzBmOGExZSBsZWdhY3ktdHJ1bmsKKzczNzEgNTBhYmIwODUwNzQwNDY5ZWQ4YmYyZDEwMzMyOWY0Y2FjY2RlMzkzOCBsZWdhY3ktdHJ1bmsKKzczNzIgOTBjMjFkZGU0Mjg0M2ZiMDRjNTRkODhmMzI5NWU5Nzg0NGM2NjY3OCBsZWdhY3ktdHJ1bmsKKzczNzMgNGY4N2ZkMmQwNTYyZWFiMTg0YTU3Njg0OGViZTQwZDUwMmIzMTk2MiBsZWdhY3ktdHJ1bmsKKzczNzQgOWVmZjc4ODBlNjg0NDgwNWI5M2I2MDg4YzI1YzNjZTFjMGQxMjA3ZCBsZWdhY3ktdHJ1bmsKKzczNzUgMzdlOTdhMzEwMjQxMWQyMGQxNzI1NjViOWM5YjlmZWZhZDIxMzZmMSBsZWdhY3ktdHJ1bmsKKzczNzYgNzcwMTA0YzhmODRhMGFmYTMwMzQ5OTI0ZWIzYTQ3NDBmZTliMzVjNyBsZWdhY3ktdHJ1bmsKKzczNzcgZDQ2ZTQ3OGI1NzY3YzM4OWYzZTc3NDMzZDY2ZmFjMTA5YjdiODczMiBsZWdhY3ktdHJ1bmsKKzczNzggNmE2MjlkMjc4YTE4YjkyMmYyYjM4YzZjMzE1NTk5YTNmYTU4ZmFhNiBsZWdhY3ktdHJ1bmsKKzczNzkgNWRjMjBhOWUwNTA2N2JhMTcwMzY3ZTk4MDNlMzk2NzRiMWMzMWNlNCBsZWdhY3ktdHJ1bmsKKzczODAgMzIyMjBjNTcyOGY1MTQ4NmUwZDMxOTk2ZDY3MDM0MDJlNzQ0MmU4MyBsZWdhY3ktdHJ1bmsKKzczODEgZmNlNzgxYjEyN2I5MmYzOWQzZjczZTUxYmEzOGJhMTMwYTU5NzRhNiBsZWdhY3ktdHJ1bmsKKzczODIgZmQzNjI2NTExZGFkZmNjYjRlNTNlNjc0YTBmMzhjNTEzMmY1MTQyNiBsZWdhY3ktdHJ1bmsKKzczODMgY2ZhMTI4MjkwMmRhY2RhMmVhYWFlOGIzY2RjMDRiZmQ5NzVkNTZiNyBsZWdhY3ktdHJ1bmsKKzczODQgMDgzNGFhZGRiZjFmZTQ0ZTIxM2JiNDE2MjZlZGExZjI2ZjkxYTIyYyBsZWdhY3ktdHJ1bmsKKzczODUgZmNhZjlkMTE5YWJmZGMwOTBlZjgxMDY0OGQ4Mjk2MDkzMjk5OTgxZSBsZWdhY3ktdHJ1bmsKKzczODYgMjE4NzhjODQ5NjI2YWUxYjc0MmY4YWFmMWFiYTMyZmEyNzlhMzQ5YSBsZWdhY3ktdHJ1bmsKKzczODcgNGI1OTBmNThjNmE3YTM5M2YzYTFkNmVhMTkyMjZlYjhiNWY5YTkzZCBsZWdhY3ktdHJ1bmsKKzczODggOWUyYzNjNmQ0ZmExNWM4ZmI4NDM2MGI4NTJlZjNkYjdjMjM4ODhmYiBsZWdhY3ktdHJ1bmsKKzczODkgMjUwYmRkYjJlY2NmMmRiY2QwNDUxOTQ2ODE1ZDhlZTU0ZDE0ZjViNSBsZWdhY3ktdHJ1bmsKKzczOTAgMTRlZDkwOWE5YzgwOWY3ZWFiYWZiNzhmODdlYzdlZDIwMTUyZDAyZSBsZWdhY3ktdHJ1bmsKKzczOTEgMDc5ZWI2OTQ3MWU1ODMzOWMxZWJhY2QwYmM3YTM4ZmM2MzY5NDRjNyBsZWdhY3ktdHJ1bmsKKzczOTIgMWJjZDQ5NzJkYTdlODZlNDRiZDlhMmU3MDFiMDVhZmQzZGNlOWY1ZSBsZWdhY3ktdHJ1bmsKKzczOTMgMmE0ZDNkOTliOGE0NWE4YzJjNmY5OWJmNTJjMTUyYmIwNjY5ZWFiNSBsZWdhY3ktdHJ1bmsKKzczOTQgZjhlNWJjNTM1MWE5NzNhZTg0ODUzMGQ1YWM1OGE3MDM5YTllYWVlOCBsZWdhY3ktdHJ1bmsKKzczOTUgZTc3NTg1YWYyYTIxNjU1ODI4NjRlZTg2MDdiYjcyMDk0NGE5Mjk3NSBsZWdhY3ktdHJ1bmsKKzczOTYgNTU4YWJhYzc1OThkMjkwZWU5ZDJkZWJjMDEyZThkYThlZGY4MDc2ZiBsZWdhY3ktdHJ1bmsKKzczOTcgMmRlYzM2MzQ1NjY1ODMyMmFhMzhmNmVjMThlNjU4NmY2NDA2Yzk1YyBsZWdhY3ktdHJ1bmsKKzczOTggYWU1NzM5MjJmZGNkYWNjYjYxYmJlMmEzMzQyNjQ5M2E5YWQ0YjM2YSBsZWdhY3ktdHJ1bmsKKzczOTkgZjA3ZTE4ZGIzNjZjNDkxYzRlYmRlMDZlZDAzMTU4MzBiNDNmYjhiYyBsZWdhY3ktdHJ1bmsKKzc0MDAgNTA3YzQ2MDIwNTI2NGQ1OGUzNDA4YWIxNjI1Nzg3YjkyOWE2M2QwMiBsZWdhY3ktdHJ1bmsKKzc0MDEgNzA2OWEyYmY1YmFmNmE5YTU2YTlhMmU3ZTkyY2FlMGY5ODA4MDI2YyBsZWdhY3ktdHJ1bmsKKzc0MDIgMDQwNDkzZGU4NDhkOGRkNzI3NWQ1ODU4MDM5NzQwYjNiMTllYTM0OCBsZWdhY3ktdHJ1bmsKKzc0MDMgOWJlNjVlNmMzNWM4MjZkNGY3MDlhZDdmNjUxOWI0NjMxMzMzNDBjNyBsZWdhY3ktdHJ1bmsKKzc0MDQgNTEyNmQ0YjgxOWU5ZTE5YzVhYjI1NDM2NzViMDFkOTg5ZDFhY2Y4MSBsZWdhY3ktdHJ1bmsKKzc0MDUgNTM2OTM1YzI5NDAxNzNkMWJjNDQyYWVhZDRhMTNhNTFiMWIwYjM0OSBsZWdhY3ktdHJ1bmsKKzc0MDYgMTgwMjNlN2MzODYyZmNjOGM5OGRiYTYzMmU4NWViNTQxZGE1OGI2YiBsZWdhY3ktdHJ1bmsKKzc0MDcgYjM3ODc1MzgyNWEwOTFmZWNiOTRlNGM4N2JmYWQwMDQxNWI1MzkzZSBsZWdhY3ktdHJ1bmsKKzc0MDggYjU2YmMyNWFlYzg1MmFkMjlmZGJmNTE3NmM3OGM5MTIzYTBjMjgxNCBsZWdhY3ktdHJ1bmsKKzc0MDkgNmI2MTkxMmQ1ZjM1OWIwODQxNzlkNTk0ODMxMmFhN2E1ZjgxZGNmMiBsZWdhY3ktdHJ1bmsKKzc0MTAgMDk1YzllZTIzYjU3NmMwMTM5MTg1YjVlMWZjODE1NTMzMDYwNDRlNiBsZWdhY3ktdHJ1bmsKKzc0MTEgN2QwYmZiNDY4MmY5YWY1MjA1MDUxMGVkODAwZDE3NzVjYjQ2MjRiOCBsZWdhY3ktdHJ1bmsKKzc0MTIgNzg5ZGU3YzY2NzEyOTY2MmYwYmE0ODU1ZmI0YjBiMGUwN2M4YmVkNCBsZWdhY3ktdHJ1bmsKKzc0MTMgNzBkYjRiZTFkZDRiMjVjMTI1ZWIyZTk4ZWE1NzhiNzIwMDRkMmRiYiBsZWdhY3ktdHJ1bmsKKzc0MTQgMjE3Y2ZiNjE5OWJlMTE5NjEwYzIyNGNjYjJhODNjOGFlY2YzNjMyZSBsZWdhY3ktdHJ1bmsKKzc0MTUgNWVlZDUxNzUwMjg0MTYzMDQzYmUyOTc3OWVhY2NiNTkwMWRmZmU3OSBsZWdhY3ktdHJ1bmsKKzc0MTYgMzNlMzNiYTdmNDIxYWU3Zjk2YWMwMTAzNDgxNjEwMWUwYTg1NTIyOSBsZWdhY3ktdHJ1bmsKKzc0MTcgYTUyMGM2ODRjZThkYzAwY2I5MzExZTMwMTczNDkyMWJmOTIwODU0ZiBsZWdhY3ktdHJ1bmsKKzc0MTggNTdhZWQxNmUyMTY1YzhiMmNmODc1MTZlY2MxZDZiNWYwZjZiMTMwYyBsZWdhY3ktdHJ1bmsKKzc0MTkgNTI4YzMxOWM2ZTdmZjBkZjFiOTE3M2FiYzg4ODliYmU2MDNmZGM4NyBsZWdhY3ktdHJ1bmsKKzc0MjAgNjExOGNhNTE0MDRkODYwMmZmOTA4YmZlOWRkM2QyYTE2MmM4Njc3OSBsZWdhY3ktdHJ1bmsKKzc0MjEgYmExMWI1OGIyYjBhMzhjMGM3ZTlkMjAyNDc4NDkyOTc2NjY3ZGVmYSBsZWdhY3ktdHJ1bmsKKzc0MjIgNzhkODgwMDQzMTI5ZTA3NDVmMjUyZTM0NTVkOWZiMGI5M2YwMzQ5YiBsZWdhY3ktdHJ1bmsKKzc0MjMgNTY5MzQzNGVhNTM4Yzg5ZmQ1MzVjYjE4ZGU5OTY1MzgyYmVmNDNkNSBsZWdhY3ktdHJ1bmsKKzc0MjQgY2E5YWE0NzQxMWRlNGJhMjkwOTg3NjE2MWFiMDE3MjhmZDg2OTdjMSBsZWdhY3ktdHJ1bmsKKzc0MjUgMTlkODE5YjE2YjgyNTJhMDIxMjkzYjNjNGEzMzAwZWU2YWE2MTY3ZiBsZWdhY3ktdHJ1bmsKKzc0MjYgZGEyYWJiZjkzODdjNjFlYmNhMTVjOWM4ZGU1OGIwMmIzMjEyMWNkYiBsZWdhY3ktdHJ1bmsKKzc0MjcgMDVmZDQzMmQ5ZTJiNjhkOGU5MmUzNDIxMzQ3ZjA2ODEwNTczYmEyNyBsZWdhY3ktdHJ1bmsKKzc0MjggZGE0YTQ5N2JlYTNhOTQ4MzlmODg1ZjMzNzA0ZWU3ODRiZmFjMDc3NCBsZWdhY3ktdHJ1bmsKKzc0MjkgYjFlY2RiMmRhMjQwMDU1MTllMTk2OTlhNGUyMzQ1OGE4NmExYzA5ZiBsZWdhY3ktdHJ1bmsKKzc0MzAgZTZiNzk3YWFhNjlmN2QyMDViNTBlODQ5MTZjNzkzYTVhMjM2ZmIxZCBsZWdhY3ktdHJ1bmsKKzc0MzEgNzMzMjUwMTlhZDM5ZmY1YmYxZGU1MWMxM2NmM2ExMTU1YjIyNjk0NSBsZWdhY3ktdHJ1bmsKKzc0MzIgOWQ1OGQwZTk4NzdlNmU3YWYyYTJiOTdiMDVlYWYyMTMyMzcyZDI3ZSBsZWdhY3ktdHJ1bmsKKzc0MzMgY2U0MzhkMzZkNGZiZjExZDRkN2Y0NTdhYWRjYWRhZGM0N2E0NjVkZiBsZWdhY3ktdHJ1bmsKKzc0MzQgODlkMDc3OTVmZDY5NGZlNDI1MjdmMmY2YzRhZjBkNzJmMjQ0MGZlMSBsZWdhY3ktdHJ1bmsKKzc0MzUgMzhmOWU0NmQyMzE3YjUxMDczYjY1Yjc2ZWJjOGM1YTcxM2RkYmY4MCBsZWdhY3ktdHJ1bmsKKzc0MzYgNWU2MzMyMmY0YzA2MTNiODJkMzE4NDA5Zjg0NzRhNTU3NDJiMmQyOCBsZWdhY3ktdHJ1bmsKKzc0MzcgNzY1ZDk2MmY0NDQ5ODI1NjZmYWUyYzVhOWU4MTkwN2VmMDExOWMyNyBsZWdhY3ktdHJ1bmsKKzc0MzggNWRlZDJiYzE5MDhiMzY1NzFiMTI4YTRhOTlhOTQ2ZWIwOGRjYTgyZiBsZWdhY3ktdHJ1bmsKKzc0MzkgNmNlNjFmMjEyYzNlN2YwMDFmMTNmNTk3YWRjNjgxOGNkOTk4MjAxZiBsZWdhY3ktdHJ1bmsKKzc0NDAgZDg0Y2ExOTc4NjhiMzU0NzFjM2E1N2JiMTJlNjMwODc3ODNjMjAyZiBsZWdhY3ktdHJ1bmsKKzc0NDEgOWJiZDU3ZDM2MDlmYmI0MTMzY2EwYjQyMjA1MWU3YThmMzA2M2FlMSBsZWdhY3ktdHJ1bmsKKzc0NDIgMzcwNWY3NWE4MzU1ZTIzNjU0NGRjZTcwYjZmMzRjNDI0NjBlZDk2OCBsZWdhY3ktdHJ1bmsKKzc0NDMgM2QzMmRhMzdkNjI3ZDhiYTAyMjE2MGFiNGIzODQxYzczMWExZTVhZCBsZWdhY3ktdHJ1bmsKKzc0NDQgMGYxYWU2MmRkM2I4N2UwYTE3MTgwZmRkM2JlMDRjMDA0OTFjZTM1OSBsZWdhY3ktdHJ1bmsKKzc0NDUgODA1NDg3ZDUwNjIwYjRmNTQ2ZTFiOGQxMzA5NzU3MjI5ZjA3ZWUxOSBsZWdhY3ktdHJ1bmsKKzc0NDYgOGQ4Yzc2YTFkMjUwNDA2MmUxZmY3MjE5NTQ2ZThlOTA3ZDg4MDUzZCBsZWdhY3ktdHJ1bmsKKzc0NDcgNmVjZTVjZmI0OWZmZGIzZmRiNDNkMzc3YjdlNGRmOWJjYjljMDMzYyBsZWdhY3ktdHJ1bmsKKzc0NDggN2Q3M2NkYzAxMTk4MmE1ZTcxY2NkYmMyZTBkZGRmYzIyYWU0NzdkMSBsZWdhY3ktdHJ1bmsKKzc0NDkgMzk3NDU1NzRiZjA3YWZjNmYxOGIxZTQ4OGY5OGVjODI0NWI4NjA5ZCBsZWdhY3ktdHJ1bmsKKzc0NTAgYjRhNDAwYjM1OTVlMjRjZTk0OGM4NDFiYWUyOGZkZjE3NjdmYmEwMyBsZWdhY3ktdHJ1bmsKKzc0NTEgMmUyOTQ1ZDgxNjNjNjcxNzI4Mzg4NzVmMTkyMzdkMDEzYzNkMDA2MSBsZWdhY3ktdHJ1bmsKKzc0NTIgOWIxNjk0MzkwODIwZGQwNDQyYWRjZmU1ZGNiZGZiMDY4YzczOGU1OSBsZWdhY3ktdHJ1bmsKKzc0NTMgNDdlZTNiNGUyZDgwMzNjYWNkOTlkNjM1MjhiNGQ2NDNjMjZhNjEyZCBsZWdhY3ktdHJ1bmsKKzc0NTQgYjg2NGI0MTRjNDU3Y2Q5ZTQ0NTYwNWU1YTA4Mjc2ZjQyZjc4OWI5YyBsZWdhY3ktdHJ1bmsKKzc0NTUgYThkN2JmZWM3YzkyYjdjMThhYzllYzg2YzhkMjQ4MGQ4YTliY2RiZCBsZWdhY3ktdHJ1bmsKKzc0NTYgOTk0Mzc2YWY5MDY0ZDMwZjFlODJmYTk5YjExNDQ1NmMwM2U1MDk3NyBsZWdhY3ktdHJ1bmsKKzc0NTcgYjVlN2ZjOGJmOTE5NjM2OGRjMzBmMjdmMmNlODQ4N2JhODJlZGRkMSBsZWdhY3ktdHJ1bmsKKzc0NTggNjZjYmIzN2I0YzBiZDYwMDUzMTk0ODE5NDBmNzY5YTYzNDAzOGMxZiBsZWdhY3ktdHJ1bmsKKzc0NTkgNzdmOTcwMDc2ODMxNDAyNzYwM2EzMmNmMDkwZGVkYzE0ZWNlYmE2MiBsZWdhY3ktdHJ1bmsKKzc0NjAgNDMwOWJjOTdlY2M2YTg3NjllOGE2ZGRjMGFhYzYzOWExNzUyOWRlNiBsZWdhY3ktdHJ1bmsKKzc0NjEgZDhkNTYzYmFmODc0Nzg2N2MwNzA0OWNlYTFkMDczYjNkNDBhNWE0MSBsZWdhY3ktdHJ1bmsKKzc0NjIgMWRlZDk0MzhmYTUxNWQ3NzM4YTAwMmNjMGEwMmY3M2Q3MzA5ODk3MSBsZWdhY3ktdHJ1bmsKKzc0NjMgZGYzODVjYzBkMmUzODcwZWZkODYyZDdkN2Y0OWY1NzNhMjdiNzJmNCBsZWdhY3ktdHJ1bmsKKzc0NjQgNjUxNDhkZWQ1MTA4NGRhZmQ2Y2JkNDNiYjUwMzYwMDA0ZWY1MTZlOSBsZWdhY3ktdHJ1bmsKKzc0NjUgNmUxN2VmNWEyNmM4OTQ0YTg0YjNlMzZhYzA0ODg4ZmNiOGQyYmE3OCBsZWdhY3ktdHJ1bmsKKzc0NjYgODI3NjkxNmUxZWE4ZGNkZTU1ODdjMzg4YTVjODNjMzViYjc2Y2ZiYiBsZWdhY3ktdHJ1bmsKKzc0NjcgMTFiYWNiOGQ3MzFhZDZjYWRkY2QwZDg5YzVlMDFkMGI1OWUzNmRhMSBsZWdhY3ktdHJ1bmsKKzc0NjggYjgyZDg0N2IzZGNiY2NkNjNkZTA3NWUzODc5YTkzNjlkZmIzNGUwZCBsZWdhY3ktdHJ1bmsKKzc0NjkgOWJjNjUyZTlmMmI0NmQyOTI4YjAzMDAzZjA4Yzc1Yjg4MTQ3OTA1NyBsZWdhY3ktdHJ1bmsKKzc0NzAgMjY3ZWQ0ODBlYzFiODRjMWRlMDdmYTg2N2YwZGIyNmI0YzcxNTJkYSBsZWdhY3ktdHJ1bmsKKzc0NzEgOGRlMWY2YjA3ZGY5Y2Q3ZGMwZmMwYjQ2ZTcyZDdkYzBkMDZjM2YwNiBsZWdhY3ktdHJ1bmsKKzc0NzIgNThiYmFmMjg0YWQ2NmVmMGNlN2Y0ODE4ZDA0MDViMzBhYjZjZThhOCBsZWdhY3ktdHJ1bmsKKzc0NzMgY2M0YmE3MjE0YjE4Zjk5N2U5OWQwNzAzMTAwYzhkMTRiYzllNTg3ZSBsZWdhY3ktdHJ1bmsKKzc0NzQgNDY4MTI0YTE1NjBhMmQyZWJhM2Y0NGE2MDUyMTRlYzNhZTNkZWI0YyBsZWdhY3ktdHJ1bmsKKzc0NzUgN2M3YTE4NmI2ZDg2YjJiMjAzMDUwNzMxNWRmZTA5OTRlZTY2NWIxOSBsZWdhY3ktdHJ1bmsKKzc0NzYgMTdjN2ExMzNjY2Y3MTEyNWZkMjQ1OGQ0YTRlNTY3NTcwYzcyYjdlYSBsZWdhY3ktdHJ1bmsKKzc0NzcgYWUzYjQ2YTczNzY1N2IzZjQ0MGFiNzU2ZGNjMTY1YjcwZGJlZThlZSBsZWdhY3ktdHJ1bmsKKzc0NzggNjVhYWNlMjAxMmU1MmMzZjE5NDkxZTg5YzE4NDIyOTBkZGQxYjFmMSBsZWdhY3ktdHJ1bmsKKzc0NzkgNGM4ZTRlOTMxMWU0ZTBlNTJlNTA5MmVjYmFkMWJhMjY0ZmE0OWZmNSBsZWdhY3ktdHJ1bmsKKzc0ODAgZjE3YmFjZTQ4ZGQ2OGEyYzgwZjQ0YzAxMTVkM2FiYTdkMjhjYTA5NyBsZWdhY3ktdHJ1bmsKKzc0ODEgNWY0YjIzZTNkOTdjYjM4ZDBhOTNkYWU0MThjODgyOTU0MzVjNWU2YSBsZWdhY3ktdHJ1bmsKKzc0ODIgZTRmN2MzMzFiYjFhMmZmZjNlMzU4ZmJlOTZmYmI5ODRlN2UzZmQ0YSBsZWdhY3ktdHJ1bmsKKzc0ODMgZjU1ZTgyZTFlNTY1OGMwZmU0NjFmNDgzNzU1MGM4MzIxNzRiMmIwYiBsZWdhY3ktdHJ1bmsKKzc0ODQgNDAyZTM2YzgzZDIwMjkwMGEwMjNlMTYwNWViZGFkYmRhMzZiN2UyMiBsZWdhY3ktdHJ1bmsKKzc0ODUgZjBjZjhkMjc1ZmJjMTc1MTQyOGQwYTMzZWYxZTM2Mzc0ODkxYmEwMCBsZWdhY3ktdHJ1bmsKKzc0ODYgNjg0MGZmODlkMjRhMWYxOWZjMzI4ZTUxYTAxNjU3Y2ZlMmNkOTc1NSBsZWdhY3ktdHJ1bmsKKzc0ODcgNzdmOWMyNWUxZjFmY2FjYzkzZjJlNjNiMGNiYmMyYjcwYTQ3NjVmZiBsZWdhY3ktdHJ1bmsKKzc0ODggNGNhNGU1NGM5Y2Q4Mzc2ZGYxNDE3ZWUyOWM2M2JmYjc5ZGEyNWNmOSBsZWdhY3ktdHJ1bmsKKzc0ODkgMGJmYWM4OWFmYzgzZmQ2YjBhOTI5YjgyYjc3MmI4MTg1MjJlMjQ0YyBsZWdhY3ktdHJ1bmsKKzc0OTAgYjFlMmVlYTY2Y2I2Y2ZkYzJhNWU2NDY5ZTU1MzE0N2NkMWVlNDc4NCBsZWdhY3ktdHJ1bmsKKzc0OTEgZjFhZjA5N2E1ZTVkNzkwYzJhNmIwNmNhZDAwMDY0YzRkMjYxM2UwMiBsZWdhY3ktdHJ1bmsKKzc0OTIgMTNkMzhlYjdlMjI1ZDE4MzU0Y2E0YTY3YTg0YTg4MDgyNmE1MTE2OCBsZWdhY3ktdHJ1bmsKKzc0OTMgMDAxYTUwNDJiMTgxYTdkYWI1NGI2Y2QxMGVkMTI3MmJiNjJkNmI3MCBsZWdhY3ktdHJ1bmsKKzc0OTQgMjg5MzU2MDlkZmFlYTY0YWEwNmI5NmM1ZTYwNDU2NzkwMmQ3NDRlMCBsZWdhY3ktdHJ1bmsKKzc0OTUgMGVjYTlkNWY3YjJkNGIxYTA3Y2I2NDM0NTI1YThiOWJjNzNkZDVmOCBsZWdhY3ktdHJ1bmsKKzc0OTYgYzIyYWRkMzY0MzUxOGY2YzQ4MGE2ZjQ2NzE2ZmRhMGQ3ZTJiNWMwNSBsZWdhY3ktdHJ1bmsKKzc0OTcgNjI2NDU3ODdmYmM4ZDkyY2MyOWMyYTc3MTc4Yzg5N2FhMzMwNWMwOSBsZWdhY3ktdHJ1bmsKKzc0OTggNzVjMWVlODgyYTRhZDQ4YWQ2ZjQ1ZWI5NjgyZjQ3ZDAyMWEwNjBlNiBsZWdhY3ktdHJ1bmsKKzc0OTkgN2U1MTkwOTk5NjMzMmRhYjA3NjI5ZTYyODBlZWIwMWVkNTdkYzgyOCBsZWdhY3ktdHJ1bmsKKzc1MDAgYmZmOGY1YWZjNjdmZWM2NDFlOGZlMzBmMmY1ZTExNzc1Yzg4Yzk1YyBsZWdhY3ktdHJ1bmsKKzc1MDEgYjVhMWJiMmQxN2ZhZDQzNjEzMzZmOTU5NGE3ZGMxMjBlY2Q1MWUyZCBsZWdhY3ktdHJ1bmsKKzc1MDIgMGVhNGVhNWIyZWI3M2ZlYThlZWEyOGQxMDViNmQ4MmNkM2ViNjM2MiBsZWdhY3ktdHJ1bmsKKzc1MDMgMDY3N2M3N2FhNzBkZjE5ZWI0OTZjMzFjYzNkZWNjYjU0ZDU4MzcwZSBsZWdhY3ktdHJ1bmsKKzc1MDQgM2YwMzdlZTc3MzFiZTMyMzg1NmVjNDY3OTkyZWMxNWQ4OTdkMWJhNyBsZWdhY3ktdHJ1bmsKKzc1MDUgMDBjM2NiMTA3ZTVmMjc4ODA2YzRkMmMyNjllZDg4N2YzMTA5MzFiOSBsZWdhY3ktdHJ1bmsKKzc1MDYgMDE3ZDcyNTQ0ZGYyYmVjNTNmZDk5YzI0MGJhZmI1ZWJhYzZiYjRhYyBsZWdhY3ktdHJ1bmsKKzc1MDcgYmUzMWU3ZTE5MjQxYjFkNWU1ZWNmZDFhNGY2NDExMTc3YTFiZTJhYyBsZWdhY3ktdHJ1bmsKKzc1MDggNWI3YjcwM2RhYmZhMDc4M2I5MWYwMTRlYjAzMWMxOTJjY2RiOTYwMyBsZWdhY3ktdHJ1bmsKKzc1MDkgZGUyYTc1YzdlYTlmZjQ2Nzc3N2I2MGY5ZDk3OGI2MTI0MDdlZjE1MyBsZWdhY3ktdHJ1bmsKKzc1MTAgYTBlNjJkODVkZTc3YTE1MGUyNzk3YjFkZDhkODI2OTY4NjNmZjI0MiBsZWdhY3ktdHJ1bmsKKzc1MTEgNjk3NjVkNjQzMWUxYzRhOTM4YWJjMTM5MTgzMTRjZWQzMjNhNjFmZSBsZWdhY3ktdHJ1bmsKKzc1MTIgOWFkN2I4YzM2Yzc5NDA1MjMxZDBhYmJmNzFjZGYxODIyMWI3NzY1MiBsZWdhY3ktdHJ1bmsKKzc1MTMgYTgyMGRlYWQwNmU2NzYyZmM3OGI2YjEyYjYwN2E2MzgxYTFlZTFiNCBsZWdhY3ktdHJ1bmsKKzc1MTQgMzgwMzIyNjc5NjhjMDE3MmJhNmY5NGFmYTA5ZTZjNGE3NDIyYzAwZCBsZWdhY3ktdHJ1bmsKKzc1MTUgODc2ZTU3MzY0YzYyMzk5NWNmYTVmNDU1NTIwNjBlNDkyY2Y0NDc2YiBsZWdhY3ktdHJ1bmsKKzc1MTYgYzQ5NzkyOWIyMzcxMTVhMmMxZDczZTA2MjVhMzY3ZTMzN2MxNGZjNiBsZWdhY3ktdHJ1bmsKKzc1MTcgOWI3ZTBjZjUxOTkwNWFjNDkxOTk4MTFmMTJmZTcyZWRlMWQ0YzBkYiBsZWdhY3ktdHJ1bmsKKzc1MTggMTA0YTY0NmZjN2E2N2YyN2RmMjVkNGU5NDFiMjAwMzVlNTg3NmY5ZiBsZWdhY3ktdHJ1bmsKKzc1MTkgZWUzYWM5ZTBhMDMyMjk4NjJkMTkwNTZhNjc0M2IxOTM0YTI1MGI2OSBsZWdhY3ktdHJ1bmsKKzc1MjAgYjFkODI2OTdjMGIyMzY2NzRkMGU2MWMwZWZjYjBhOTExZTljNzJkZCBsZWdhY3ktdHJ1bmsKKzc1MjEgNjU4ODE1MjMwNTQ2YTQ4OTJjMmFlNTE5NDY4ZWRiNDgyNzA4NzhmZSBsZWdhY3ktdHJ1bmsKKzc1MjIgN2E5Y2FjN2NiOTEwOWY0NzNhY2RkZDFhOWQyM2UyNjhhZDk1ZTBjYyBsZWdhY3ktdHJ1bmsKKzc1MjMgZmRlNzM0NjdiNTg0N2JmNWQ1MjI0ZTZkODU0MjMyM2Q5YTY4ZDc2NSBsZWdhY3ktdHJ1bmsKKzc1MjQgOTQ2YjJiMmE3NjIyZmExN2FkNDI0ODI4Mzc2YTVlODhhN2EwMTNhZiBsZWdhY3ktdHJ1bmsKKzc1MjUgODU3OWUzNDQxZDliYzk5OTVkOThlOGJmMjQ4NTNmZWU1NWI3NTQ1MiBsZWdhY3ktdHJ1bmsKKzc1MjYgN2Y2ZDE5ZmM1YWNhY2ZjODU0YTczYmNjZGYyYTI4OWRhNmMxMzg3ZCBsZWdhY3ktdHJ1bmsKKzc1MjcgNzg0MWM0OGNkYjViNDk2N2RkYTYzYzAwYWZhYWRmODUzYzNhMzU2ZSBsZWdhY3ktdHJ1bmsKKzc1MjggMjE5YmRkOGFmYjM4ZWYwNWFjNDE3ZTcyOGI1OTIyOGM3NDQ1ODk1YSBsZWdhY3ktdHJ1bmsKKzc1MjkgZTljNDQyZDA5MzZmYjVjM2I5MjJjN2E1OTQ0YzVlOWZmNmQ5MjY5YSBsZWdhY3ktdHJ1bmsKKzc1MzAgZjU3ZTE4MWZmNjM4ZmRiMWM5YTM2OTY3YTMwYjRjOGRjYjE5N2Q0OCBsZWdhY3ktdHJ1bmsKKzc1MzEgZTYyOWM4OGYzZGQ4MDc3M2JmZWMxMzJkMzE3NjI1MGZiOGExNjhhMiBsZWdhY3ktdHJ1bmsKKzc1MzIgNmM3YTc2ZmQ1ZGMxZTkzMjBlMjE3NmZkMDcxNzk1YTQxOWIwYTkzOSBsZWdhY3ktdHJ1bmsKKzc1MzMgMzcxNDY0ZjY2NjZiNjZkN2YxZGQ1ZjQ2ZGZhMTYxOTEzZTQ3Mzk4ZSBsZWdhY3ktdHJ1bmsKKzc1MzQgMTkyZDU3MWNjNDYxNWNlNjg0YWY0MTgyM2FmYzE4MDdjMTU3OWE4OSBsZWdhY3ktdHJ1bmsKKzc1MzUgNWEyMzI4NzBjY2VhYjVmM2M0ZjVjOWIxZTc4Y2UxNWUxZmIyYWQ4MSBsZWdhY3ktdHJ1bmsKKzc1MzYgMzQ2ZmY5YmE5ZDM2MzcwNGNhYzBjY2EwYzNjMTAzYjg2NzE0MTVjYyBsZWdhY3ktdHJ1bmsKKzc1MzcgZDY4MTYzMWQ5OTJmMjAxYjQ0MTUxOGFmMjJjMDA1NDU0ZDZiNjBlNSBsZWdhY3ktdHJ1bmsKKzc1MzggZjA3MzFmYTQ0NDdmNTI2MmY1NTE3ODNjNmE4Y2RjYWQwNDg5YjAzZSBsZWdhY3ktdHJ1bmsKKzc1MzkgN2RkZWQ3ODUxZmNhOGM0YjQ2Njc3ODRhYTk3Mjk0YTI5NzVhMGE2YSBsZWdhY3ktdHJ1bmsKKzc1NDAgYjZmY2U3MjQzYmEwYmE4OTZmMDc4MjI3MjhjNTUwMjA2ZDcyZTlkYiBsZWdhY3ktdHJ1bmsKKzc1NDEgNzc2MTZiMzAwMWVmOGY3ZTA5YzQ2MzljMzZjMjg0ZGQ5NzFkZWUzYSBsZWdhY3ktdHJ1bmsKKzc1NDIgNGFhY2E0MmEyYTE2Yzk1MTc0YjJmZmY3YTVjM2Q2Y2FlZjg1Yjg3OSBsZWdhY3ktdHJ1bmsKKzc1NDMgOGVjZjJkN2M5ZmIxYWRiNDM4NWNmN2QwZmRhZjQ0MzEyYmQxMjQxYiBsZWdhY3ktdHJ1bmsKKzc1NDQgZmEzMTQ3NmEyNzg2ZWU4ZjU0ZDBlNWMwOWU1ZWQwMTdmZWIxMTZlNyBsZWdhY3ktdHJ1bmsKKzc1NDUgZWIxMmY0MDQ2ZDBiZTBmMGRmNjRmNmY4MGM2YmU1MTAyMTYyOTMxMCBsZWdhY3ktdHJ1bmsKKzc1NDYgNDRiZGYwYjU2YzBiZDgzNDE0MzRjY2Y4YjlhMjM3MDhhMjJhMGUxZSBsZWdhY3ktdHJ1bmsKKzc1NDcgZDI0ODNjMjc3NDJjMTU0Y2M0NjIwZGY1M2U2ODk5ZTlhMTdlNzY3MiBsZWdhY3ktdHJ1bmsKKzc1NDggZTIxZjFkMjU5NWRlOGI5OWI4MGFkZGE2ODcyZWRmZGZjZTA4NDRjYSBsZWdhY3ktdHJ1bmsKKzc1NDkgMzI3M2FjYmU0NzZmZGFhNWZhYjg5ZjZhMjIzYTkyZDEzMTlmY2NmZSBsZWdhY3ktdHJ1bmsKKzc1NTAgNWI5ZDQxZjRjMDhjMTE1ZjgzODM1YmExOGExNzk4NWQ3ODlhN2NjNCBsZWdhY3ktdHJ1bmsKKzc1NTEgNGVkYWI0NzQ5NzRjZTA3NzY3MDY0NzJhMjNlNzljM2U5NGY0ZTQzYSBsZWdhY3ktdHJ1bmsKKzc1NTIgMjNjNGM3ODM4YWMyYWIzYTY2NzVjMWNhY2I3MWMwMGYxMjcwMWEzMCBsZWdhY3ktdHJ1bmsKKzc1NTMgN2Y0YjMyZTg2NTQ1NTcyNTJiNjdhZmUyZGM5ZWJmMzFlMTQ0MzhiNyBsZWdhY3ktdHJ1bmsKKzc1NTQgZDZiMjkyYTMzY2ZlZjUzYzc1ZWE0OWZjMjdjYmJkOGM5OTUzYzA0NSBsZWdhY3ktdHJ1bmsKKzc1NTUgOWE4YWRhZjU4Y2U4NjA3NmI2ODkzNTVjZDBkYjUwYjcyZDZkMTk2NyBsZWdhY3ktdHJ1bmsKKzc1NTYgMWI2MTliODExYzEwMzVhODE1MjNiNjBiMzQ4ZDcwNzU4N2E0NzdmYSBsZWdhY3ktdHJ1bmsKKzc1NTcgMmM4ODEyZWVhNjM3OTQxNTU0YTRiNjU2ZDRhOWUxNWFjYzAyMjAwYiBsZWdhY3ktdHJ1bmsKKzc1NTggN2FiMWFhMDhkMzQ4ZGIwY2ZhN2EzNTJkZDllYTQzNTliMzhkMWYxMSBsZWdhY3ktdHJ1bmsKKzc1NTkgYWZjM2U0ZTA4NzQwYjYzOGFjYzU0MDMzYTE2YTMzYmMxNTZhZmEwNCBsZWdhY3ktdHJ1bmsKKzc1NjAgZDM3MDY1Nzk0NjhlNTBkNmExYTExMTI1NzE4MWY2MTQ1MTIzNDdjMiBsZWdhY3ktdHJ1bmsKKzc1NjEgYWE3M2RhNjYxY2RmZmFlMDlhZjkzM2UyZWMyMTQ3MzQxOTJjOTA0MiBsZWdhY3ktdHJ1bmsKKzc1NjIgNmVkOGViNGI2NjRiMzFiZTE4ODgzY2UzNWUxMzJlMzE2Y2VkNzNmYSBsZWdhY3ktdHJ1bmsKKzc1NjMgZTQyOGQyY2ZlZDQwYjNhOWNmNjk5YTYxZDAwOTg5ODBlZWE2NGQ2YyBsZWdhY3ktdHJ1bmsKKzc1NjQgOTFmODYzMDZiMDdiODVmYWJkZjhmNTQ2YWI4YTgyNWE5ZWEwZTgzNyBsZWdhY3ktdHJ1bmsKKzc1NjUgYjY3YzAyYmQ1ZTIzNjBlNDg4OTkzNjc0OGRlNjE3YjMxM2I3MDIwMSBsZWdhY3ktdHJ1bmsKKzc1NjYgM2ZlZWM4NWJiYTliNjM5OWY0NDVlZDUyM2IzYjU3YzQwNGUxZDJiOCBsZWdhY3ktdHJ1bmsKKzc1NjcgY2I3YWFkZDlkOWYyOTI0ODRhZWU0ZTA2NGVkZjBhZTE3OWRhZGQ4MSBsZWdhY3ktdHJ1bmsKKzc1NjggZDk5NmRjNDJmZTY0MTVhZDgyMDk2NzJhOGM2NzM0NmZjNDg0Yjc0NiBsZWdhY3ktdHJ1bmsKKzc1NjkgMzhhZGJiMzlmMTVjZjU3Nzk1OTA4NDk4ZjAyYWM0NDU3ZWFkMGM3OCBsZWdhY3ktdHJ1bmsKKzc1NzAgMTE5MjJhMmVjYWNkZTRkODE4YzQ2MjFhNmUyNjgzMWUzOGFmMzhiOCBsZWdhY3ktdHJ1bmsKKzc1NzEgMzBjMTBiMjIyOTUzMThlYTllNjg3YmFiNWJlYjQ3ZjYyY2U0MTgwMCBsZWdhY3ktdHJ1bmsKKzc1NzIgNTdiN2EwM2EzMjUyYzBlNTNiYTdkZjI4YjlmMjQyNmZiOTIwNmZmYiBsZWdhY3ktdHJ1bmsKKzc1NzMgYTQ0NTg2YmQ5ZmFiM2Y3MDk1YTQ4MzcwZDkxNmU3ZWZiY2JjMmFiMSBsZWdhY3ktdHJ1bmsKKzc1NzQgYjQyMzFkNTkyMjgxZjI1YjBhNTkxYjYzMzBiODk5Mzc5NDE3ZWY0NiBsZWdhY3ktdHJ1bmsKKzc1NzUgMzIzMTAyNTFkNzY3NDA4NjQ5OGUwYjY1Y2Y4ZGMwM2RhMjk5NjFhMCBsZWdhY3ktdHJ1bmsKKzc1NzYgMjQ5N2M4YjA0MTAxN2M5NjY4NmFkMTMyMGJkYjFlNzk0MmY5YTA1MCBsZWdhY3ktdHJ1bmsKKzc1NzcgZWU3MGI0YzcxODk5M2I2MGZkYWI0M2QxOWUzODE1Zjc1YTU4YzkwYSBsZWdhY3ktdHJ1bmsKKzc1NzggNDkyYzBjYWUxZjA1MjI5YjExNmJhN2JkMTBjOTJjNmViMjRmOThkMCBsZWdhY3ktdHJ1bmsKKzc1NzkgNDEwOWExNzFjOTAxYTQxZjhiMzkxZGVmM2IwMWU0MjkxOTg5MWYxYSBsZWdhY3ktdHJ1bmsKKzc1ODAgMDBmZDY4NTdmNzZiOTM5YzViOWVhMDAwZDFjZjgzZDZhM2U2MWY1MCBsZWdhY3ktdHJ1bmsKKzc1ODEgOTQwODEzMTE1Zjc3NWI4NjI4OGNmY2RiMDgwNzMwNmQxZTNhODE4YyBsZWdhY3ktdHJ1bmsKKzc1ODIgZjliNDZiNTAzNzUxOWY0NDMzMzc0MmExN2JlNzRmZTM4NjI0YTEzMSBsZWdhY3ktdHJ1bmsKKzc1ODMgYTlhNmQ0MTZiOTQ1Yjc5ODkyMTdiYzg0OTBkNTgwZGRiNDM0OTgyMyBsZWdhY3ktdHJ1bmsKKzc1ODQgMGJiZjk3ODYxY2Q5YTE2MDQwNjUwMDFlMWQyMmI2MmU2MTQyYjg2NiBsZWdhY3ktdHJ1bmsKKzc1ODUgMDczZjFiM2FkOWQyYmFmNDBiNGNiZjAyYjZkMDI1ODEyODJhZGM5NyBsZWdhY3ktdHJ1bmsKKzc1ODYgMjFiODcxMzI1Yzg1MzRkMWIyODdiYTkwNzdmYzc2NjRlYzlmZGVjMSBsZWdhY3ktdHJ1bmsKKzc1ODcgY2E2Mzg4YmNjMDVhNWQ5MjhhNjI2Mzc3MjA0M2NlYWUwZGRhZGVkZSBsZWdhY3ktdHJ1bmsKKzc1ODggZmI4Y2VmY2VmZDgxZWEzNjkwYTAxMzYzOWVkMTE4OWY5NDA2ZGQxMiBsZWdhY3ktdHJ1bmsKKzc1ODkgYjljZTNjYzUwMDc2NzFhODc0MWNlNjVhMzQ2MjUyMjkxZDEzMzE2MyBsZWdhY3ktdHJ1bmsKKzc1OTAgZTNhYjQ4OTg4Yzc3OTg1M2MxMWI1ZGJlYmE5YTg4N2VkYzcxNmVlNCBsZWdhY3ktdHJ1bmsKKzc1OTEgNTA2NjY0NzY3NzM2ZWZiNDAyMGU3Y2VjZGY2YjJjOTc2ZjJkMThhOSBsZWdhY3ktdHJ1bmsKKzc1OTIgMmJiMGJkYTE1ODVjN2ZhNTQ5NzM1YTA5ZTUwMmQwOGRlNWFlZGUzMiBsZWdhY3ktdHJ1bmsKKzc1OTMgMDAyODY1YWY1NWU1YjU4YzhjMzExZjkwNmE2ZmU0MDM1MTA0NWI1MyBsZWdhY3ktdHJ1bmsKKzc1OTQgYmRhMDFhMzc0NzYyMjViYWY4MDFjZjA4MTE0NzUzZDU4MGE4MTRlZiBsZWdhY3ktdHJ1bmsKKzc1OTUgYTQ4ZjM2NzhmOWUxYThkZTkzOTRmZGIzMGY0MjZkYTI3ODQwMTZlZSBsZWdhY3ktdHJ1bmsKKzc1OTYgMmU2ZWIxYzcxNWNlNWFjMWU3OTQzNTBmMzNiZjdhMTI1YWFiZTcyNSBsZWdhY3ktdHJ1bmsKKzc1OTcgNTdiMGYxNjE5ZTI4MjQwNDJhN2MxYTVmMzY3NjgyOThlNGIyOGY4YyBsZWdhY3ktdHJ1bmsKKzc1OTggMDVmZmZkNTViMDE0YzAxNTBiMDJjOWUxMDVhMTE4MjIyYjMyNmVhYiBsZWdhY3ktdHJ1bmsKKzc1OTkgMTcxNTkxYjM5ZjYzMmVkMGI0NWJiYWMxNmRjYzg5ZTEwNzcwNzI3YiBsZWdhY3ktdHJ1bmsKKzc2MDAgNTRhOWFkY2EyMTVjNmUwYjFhNzQ1YmJjYTc1ZDc1YmQzYjEwMmNhYyBsZWdhY3ktdHJ1bmsKKzc2MDEgN2I5NDBmMjk2MjFiODVmYjliZGU1YTdhNTUwM2FkM2Q2YmJjZmUyNSBsZWdhY3ktdHJ1bmsKKzc2MDIgZjIyMjEzMTkyNTMxNjEwYzdhNDZiNDc2M2VhYzc4N2Q0ODRkOTA2OSBsZWdhY3ktdHJ1bmsKKzc2MDMgYmYxYmQ2NGY4NWUwMWYyOWVhYTRlYzI3YjU0N2ZhZmFiNTdjYzRjMiBsZWdhY3ktdHJ1bmsKKzc2MDQgMTAyZTI5MTJkMGQxNzc2YTc2MmYyZmQzZDhkZDI4YWM0OWY4YjIwMyBsZWdhY3ktdHJ1bmsKKzc2MDUgMGJmNzM5NGRiYTIyMDViMDE1NDIzMjE3YzY1YzA1NzNjOTdkZWYyMiBsZWdhY3ktdHJ1bmsKKzc2MDYgZWM0NTI3NmE2ZGFkYjliZTEzZGJjYTVhNTIwYzMwNjRkZDljYjhhYSBsZWdhY3ktdHJ1bmsKKzc2MDcgMGZjMWRhY2RhZmQ3MzhiZGUzNzUyMmY4OWFkOGVlZmU5YmI5MDY0NiBsZWdhY3ktdHJ1bmsKKzc2MDggNjY2MTUyYjc3MDI3MTA5ZjMzYzcwMjhkMzg1YzdmYTQ5YjhjMGY0YyBsZWdhY3ktdHJ1bmsKKzc2MDkgZGVmMDNkM2I4ZGRiZjhiZDIxZjkyYjFkOGViODIzOWM3MzcwOGY5OCBsZWdhY3ktdHJ1bmsKKzc2MTAgN2ZhOWE2NDQ0ODNlODJlOWIzMWRlYjU3YWZiNjg5YzkxYjM5NzkyNiBsZWdhY3ktdHJ1bmsKKzc2MTEgYTUxM2Q4M2MwNmNiMDAxZjBkM2FmZjRmZDVkOTY3YWM5ZjgwNWZkNiBsZWdhY3ktdHJ1bmsKKzc2MTIgNDBlYjhiMGVlMTkyNjFiNWMyYzkyMjRjNTUwYzFiMjEyMTI3ZTFlMyBsZWdhY3ktdHJ1bmsKKzc2MTMgZjkzZWMxYWMxN2FhNzE5MGY2MDgwYjUwNDA5OGYwMGZhODFmYTI0YyBsZWdhY3ktdHJ1bmsKKzc2MTQgOTIxNmY1YzI1ZTRlZjc4ZTY3NzBiYmVjZjg2MWNjY2U2MjU4ZDY5NSBsZWdhY3ktdHJ1bmsKKzc2MTUgOGZiZWQ3OGU4MWU3MTIxMjg4N2I5YWI3NzljYmMwYWY0MWRkNWY5NSBsZWdhY3ktdHJ1bmsKKzc2MTYgYTRjOGI4ODcxMzc2MWZkNjY0YjBjYWU2N2Y4NjViZWQ5MmUzNzk0ZCBsZWdhY3ktdHJ1bmsKKzc2MTcgOGE5ZjE1NzkzMjM4MmVmZmYyZWY3MzM5NDUzN2I2ZjQ0ZDIwODgyMiBsZWdhY3ktdHJ1bmsKKzc2MTggNjk1MmViOWMzYTZmN2YxNTk5NDYyYmVjYTczNWQ1ZDAxZDVjMzAzZSBsZWdhY3ktdHJ1bmsKKzc2MTkgNmIzMzdlYzkyYmQwZDBhNTYxNDJlODAwOTc5ZGRiMGZjM2JjNmU3MiBsZWdhY3ktdHJ1bmsKKzc2MjAgMWU5NWZhYzg0YWIzMmY2NDY0YmJjMzJjYjVlZDUxZWMyY2ZjNjczYyBsZWdhY3ktdHJ1bmsKKzc2MjEgOWNlZmQwNGVlNTNhNTJiOGY2MTdhZDc2MzliNWMzMDc3Y2M3YjU0NSBsZWdhY3ktdHJ1bmsKKzc2MjIgYjIyN2I5YWY1ZjUzZGJhMDQyZmQ0MzVmNzQ3MDk4ZDFkMmY4NzVlMSBsZWdhY3ktdHJ1bmsKKzc2MjMgODllZGFhOGVkNTBmZTdjN2MwZTBhMGY0YmNmZGIzYTI1NjUxOThjYyBsZWdhY3ktdHJ1bmsKKzc2MjQgNzgwNjNiYWUzZmQ3NGJiNGY2M2FjYTVlZDJjNmFmZTc4ZGE4YTU4ZCBsZWdhY3ktdHJ1bmsKKzc2MjUgNDY2NWUyODQ5YTRhYzdiZWNkYzk5NGNlM2NlYzgzYzI0ZWZmZDJmOSBsZWdhY3ktdHJ1bmsKKzc2MjYgMjgyNjkyNWE4NDJlMjk4NmM4YjE3MDZiM2RmYmI2M2JlYTlmMzgwNyBsZWdhY3ktdHJ1bmsKKzc2MjcgYmQ3MDhmZTE5MzRiM2I4Y2I2YTg5YTkwMGMyNTVmMGYyY2RkNGQwNSBsZWdhY3ktdHJ1bmsKKzc2MjggMWFlN2UyZWJjMmYzMzFiMjg5Zjk3ZWQ5OGRhMjg0YjI2MzU3NjJjNCBsZWdhY3ktdHJ1bmsKKzc2MjkgZjYyMTlkNzc1NDgxYmExNzUwMTZlN2YzZDFkMzUzYjRhNmRjNTA2YSBsZWdhY3ktdHJ1bmsKKzc2MzAgYjU2NmU3NzI4MWNjMTRkNTkwMWRlOGY1NmJkMGI1OGIzNGU2NGE1OSBsZWdhY3ktdHJ1bmsKKzc2MzEgNDE3NDYyYWI4YjAwMjdmYjBkNDRkMTIzYzQ1Mjk0Nzc0NGZjNGM3NyBsZWdhY3ktdHJ1bmsKKzc2MzIgODI5YzQyODkzMTgxMDRmMGI4MDI0YzBlYWJiOGExYzhjOGE3NGQwNCBsZWdhY3ktdHJ1bmsKKzc2MzMgMzUxZTk1YzUxZGRiMWFjZGY1MTE1YjlkYjczZDBkNjAxMDllMWU4YyBsZWdhY3ktdHJ1bmsKKzc2MzQgZWY4MzUxZWE3MmMxYzYzMjNmMjMxYzBkMDg0NTZlNWRkNDI4YjYwNiBsZWdhY3ktdHJ1bmsKKzc2MzUgZGMzM2UxMWExYzI4ZGY1ZDZhMzNlMjgyOTg2MDM2ZTA2ZmQyODA0ZSBsZWdhY3ktdHJ1bmsKKzc2MzYgNWJiNzBkMmU5YWRhZGQxOGViYTFhYWFhZTlmYmZmNDU3M2ZkMWE2OSBsZWdhY3ktdHJ1bmsKKzc2MzcgNzEyNGU0ZWU0OTk1NTc2NDViMDcxYjY2NzYwY2Q4NTAzOTYxYmRkMCBsZWdhY3ktdHJ1bmsKKzc2MzggOTA2M2Y2MGVhMjhkNDE5MmY5OWQ3MTYzZGE1YzA4MGRiNzE5ZWFmZCBsZWdhY3ktdHJ1bmsKKzc2MzkgOGMyNzdmMjliNTM1ZTBiMjEyNTI5ZmQ3MTA5YjllNGJiMTNiYzc0NCBsZWdhY3ktdHJ1bmsKKzc2NDAgNGQxNWJkZjFkYjljMDA3MjczNWU1NjhkZDgwZWExNzM2MzBhMjc3NiBsZWdhY3ktdHJ1bmsKKzc2NDEgNzE1MWJiNzI3Nzc2N2VkMWU4N2Q4NGI1NGJiOGM4N2I2NmUxNzk3NSBsZWdhY3ktdHJ1bmsKKzc2NDIgNjFmODliZWJhMWFhM2M0YmYwZmRiZjEyMjkxNDc3OWVlODgwODA0OCBsZWdhY3ktdHJ1bmsKKzc2NDMgZGZmM2U1MDZjOWU4ZDQxZjZmZTFkZWNmNDQ1NGQ5YjcyZTE4ZTk5MiBsZWdhY3ktdHJ1bmsKKzc2NDQgMmVhOWM0MjVhNzY3N2YyMjk2YWM5ZjQ2NjI4MzlhMjZlMzNkMDEwNCBsZWdhY3ktdHJ1bmsKKzc2NDUgZjVkNzA3Y2U0MjIzYzE3M2VkZjhlNzhkMzM2MWY3ODRmYjk1YWQ1NCBsZWdhY3ktdHJ1bmsKKzc2NDYgYjFmYzRlYjJhYzVhOTQ4ZmIxOWE4ODlmYzBkNmU4NDY2OWU5ZWEwYiBsZWdhY3ktdHJ1bmsKKzc2NDcgMzFiMGU1ZjBiYWRmMTk2NjI4NzI0ZDZhMGZiMGQxZjA4NTNiZTFjNSBsZWdhY3ktdHJ1bmsKKzc2NDggZmY0ZjhmYThhMjczYTAyOTBmMmY4YjFmOTRjMDliNDY0MDg1MWUyMSBsZWdhY3ktdHJ1bmsKKzc2NDkgYzRlNWVmOWJjMzYxMjQ2MTg1NjMwZDIyMTZlZDI1ZGYyNmJjYzFmNiBsZWdhY3ktdHJ1bmsKKzc2NTAgMTk3ZTMyMDZlM2YzMDc0N2U1YWM2NWQwMDJkODliMjQ1YWQxZjhlNiBsZWdhY3ktdHJ1bmsKKzc2NTEgMmJkOTIwZTdlNWM3ODg1ODVlMjM5YjQ3YjIwOGY0ZWYxNzIwZTk0YSBsZWdhY3ktdHJ1bmsKKzc2NTIgYjE4ZTAzYmE0ODE3N2YxZmE0MzY2NDVjNmNlYTBhNGFkNmY2OTQ2MSBsZWdhY3ktdHJ1bmsKKzc2NTMgZjk3NDM2NGYzYTg3YTE3ZWEyMThjODc4ZDljOWI4YzBhOTdiZmU0ZCBsZWdhY3ktdHJ1bmsKKzc2NTQgODYzZmZjMmFiNzZhOTk1MzZmODdjN2FjNWQxZmZjMDJiOTgyYzkzNSBsZWdhY3ktdHJ1bmsKKzc2NTUgNmJjNTYyNTljYzRjYzI3Zjc5YmY4YWQ3Y2E4ZDVhNjUyNWQ1YWYwYyBsZWdhY3ktdHJ1bmsKKzc2NTYgOGEwYjgwZGM2ZTcxMTQ4NjkzNzJkMTU1MmJmN2FjMjdiMzZkMTEzZiBsZWdhY3ktdHJ1bmsKKzc2NTcgZTAzNjFkNTQyMWZmMGI0NTE0ZGQ1NTc3YmNiMGI0ODhkZjhhM2JhZiBsZWdhY3ktdHJ1bmsKKzc2NTggNjM2NzU3ZTgxMmE0YzRiZmE0YmRhY2FkMGE3MDZhZGM2ZjNlM2JhNiBsZWdhY3ktdHJ1bmsKKzc2NTkgNWNmODNhZDMyNTFlNWY1YjFkZmYwNmI3Yjk3ODk3NzhiYTA5MTNlMSBsZWdhY3ktdHJ1bmsKKzc2NjAgYzE3MjllMTQ4OTE2YjMzNTViNTc0NDBiNjFhZTMxZDZjZGQxMGU3NSBsZWdhY3ktdHJ1bmsKKzc2NjEgYTE2ZGVjYmI5NzE2NTg1YTU4NzQ4YjhkMmExMTdiYjJkNzdjNTU2MSBsZWdhY3ktdHJ1bmsKKzc2NjIgYzFhMWMzMDZhNDI5YjVmY2ZiODYxZGM2MzA3ZWRiOGViMzQ1NTk5YiBsZWdhY3ktdHJ1bmsKKzc2NjMgM2VjM2Q4ODA3ZjllODg5NjYyZDIxNTBmN2ZhZTdlODk1MzkwOTY4ZSBsZWdhY3ktdHJ1bmsKKzc2NjQgYmFiOTE5NmE4ZjMwYzYyNDE1NzY5NjMxYTYzMjIxNjBhYzRiNmMyOCBsZWdhY3ktdHJ1bmsKKzc2NjUgYTc5ZWNkNWFmN2U1YjQxOWI1MTViOWUwNDA3NjE3YWNkNWFkMDU0YSBsZWdhY3ktdHJ1bmsKKzc2NjYgZmEwZmMyODhiMmM5MGI5NjEwZWVmNmI0NjU0N2YzMzQ0YTkwZjcwYyBsZWdhY3ktdHJ1bmsKKzc2NjcgYjdhYzdiNDZiMTBjMDEwNWI0NWI1ODRiMzJlZjdkMmM0NTA5YThjYyBsZWdhY3ktdHJ1bmsKKzc2NjggZjBmZDEyZDc2ZTA3OGZmNWJiM2JmNGE4YTZmMTc5NGEwNjkwODBkOCBsZWdhY3ktdHJ1bmsKKzc2NjkgNTJmM2RjNDFmNmM0ZmNlYmJkZjk3ZWI1NzUxYjBmZTgwMWJhZDQ2ZSBsZWdhY3ktdHJ1bmsKKzc2NzAgYTg3NGY1ZDMwMzhlZGJkNGYxOTJhNDBjMzZmYjQzYjZmZmY3YThhZiBsZWdhY3ktdHJ1bmsKKzc2NzEgOGVlODFlZjRlOTgyZjRkZDY4ZjA4MWI1NjU1NDE5ODkxNzAxM2Y4ZCBsZWdhY3ktdHJ1bmsKKzc2NzIgNzRjMTI3MDRhMGJkMGM0OWU4NzFhZjA0ZjhlYTFiM2MzNjQzZmU5OSBsZWdhY3ktdHJ1bmsKKzc2NzMgZTBhNjA1ZTY2YmVkYWFkOGY5NWFmMTVkZGI4ZGRkZjkxNWExNTJmNyBsZWdhY3ktdHJ1bmsKKzc2NzQgN2UzODBkZjAwZDAwZmExYzM4YzBlNjJiOTJjYTljNDgzZGRiNDYzZSBsZWdhY3ktdHJ1bmsKKzc2NzUgMDI0ZTczODY3NGE1Y2RhNzhmN2JkZDdiMjhhYzc1ZmQ0YTQyOWY1MSBsZWdhY3ktdHJ1bmsKKzc2NzYgNTg3OGE1YWYzMTQ4ZDViZmFmYTBjMmFhZmU2OGFkM2Y3Y2FjZGY0OSBsZWdhY3ktdHJ1bmsKKzc2NzcgYWY5MmQ3NzkxNTJhYzI0ZmZiZTc2NDRhYTEyM2I5MDBmMTJjMWMxNSBsZWdhY3ktdHJ1bmsKKzc2NzggMDVjN2Q4YjRmZmQ2ZTRkZDliM2QwMGMyNjM3MTczMTg2YjdiODI0NyBsZWdhY3ktdHJ1bmsKKzc2NzkgYzI0OGEwN2U1MzQxNjRiMjYwODBhYmI5ZTEwNjljNjZkMDZhOGY4MSBsZWdhY3ktdHJ1bmsKKzc2ODAgYjM5MjAzOTgzZGU2NjExMWRmOTNhYWNiMjlkY2Y2YzQzMzc0NDVhMCBsZWdhY3ktdHJ1bmsKKzc2ODEgYmQ1ZTJjMmMxZTA4NzJiMTFhNmMwM2U4NTdmODNiNzlkMjJmOGVhMSBsZWdhY3ktdHJ1bmsKKzc2ODIgMDBlYmZhMzNjYzA3NjMwZWVkYTczYTBkNzVkN2Y1NTc1MGJhMGZiYSBsZWdhY3ktdHJ1bmsKKzc2ODMgOTNlODdjYWM0ODNlNWJmZmQ2NzM4NDI3YzliOTk1YmQwMTQ0Mzc0ZiBsZWdhY3ktdHJ1bmsKKzc2ODQgMmVjOWM5MzNhZmI4NzQ2YTQwMjQzOWMzNDE2Yjg2OGMyNDVlMmQ1YyBsZWdhY3ktdHJ1bmsKKzc2ODUgZDRjNmI0YjA1NDhjMWI2MDQzODA2NDNlYjc3ODg4OWMwOGUzYzU1ZSBsZWdhY3ktdHJ1bmsKKzc2ODYgMzE0ZDBkNjAzZjA2ZWU0ZTI3Mzk2ZjhiYjRkODlmNDRkOWM0MmJhNyBsZWdhY3ktdHJ1bmsKKzc2ODcgMWYzOGQ1ZmIzZDIzODgxYzk5OGU5ZjhjYTE4MGQ5NjIwYmUxNGE5ZiBsZWdhY3ktdHJ1bmsKKzc2ODggNWI0MDdlMGNiYzcxNWVhNjY3MzEwMWFjZTVlM2UxNTQzZDc2OTQ4NiBsZWdhY3ktdHJ1bmsKKzc2ODkgOWMxNmJkZjE2MGZmNjhmYmI2Y2Q3NDFmNTU1YjkwM2VjMDhiMzAyMyBsZWdhY3ktdHJ1bmsKKzc2OTAgZjcwMDQyYzE5YzU3YTNiNzZlZTg0OTZjYjQ5MTE4MWRmMDgzOGVhMyBsZWdhY3ktdHJ1bmsKKzc2OTEgOWJmNjUwZjIzZGE1NzEzMGI1YjI4Y2MxNjdkMDIxZGJiNjFlY2M3MiBsZWdhY3ktdHJ1bmsKKzc2OTIgM2FiN2Q1OGMyOTYzMWE2YTk1YTBmMWM2M2E5ZjY2MTJiY2EyYzBkYSBsZWdhY3ktdHJ1bmsKKzc2OTMgZjViZmI5YzRjMzY0MTNhZjQyYmE3ZGJmNDA4OGZmODA5MTM5Zjg0MiBsZWdhY3ktdHJ1bmsKKzc2OTQgMzM0ZDUyZDZkZjVkYWI0ZDJlOWI2ZGU3NDk2MTg1ZTYyNTg5MTQzZCBsZWdhY3ktdHJ1bmsKKzc2OTUgZTFmNjEzMzIyYjIzYzI3ZjY5NjBlMDFjNGQwMDg2MDE0NzJlNmZjNiBsZWdhY3ktdHJ1bmsKKzc2OTYgZDk3MzNiNGY4MTFmNDc1YTY0YjYwODNjNzg5MWY4NzQxYWYwZDZlNCBsZWdhY3ktdHJ1bmsKKzc2OTcgNGQ4YjdkZDVkZTJhMjgwYWY1MjQ0ZWY5YTZmNWY4N2UyNTRjZWMxYSBsZWdhY3ktdHJ1bmsKKzc2OTggYmM4ODMyYjUyYjUwYjhjYjE5NmQyOGFiYmM5Njk2NWIwODE1NmVkNiBsZWdhY3ktdHJ1bmsKKzc2OTkgMDU3NzRlYzM5YWQyMDViZGJkZjQ3NTg5MDk1NWMyOTkxZjVkZTY3MyBsZWdhY3ktdHJ1bmsKKzc3MDAgMWIxNGM1YzFiZTJhNTI4NTcyYTI2ZWYxODExNjJiYmJiMGZhZTcwMCBsZWdhY3ktdHJ1bmsKKzc3MDEgODRjOTNmNjAxNzE5NGVhODUwMGI3MmFhODdkZmYxYzgzYjNkZmE1ZCBsZWdhY3ktdHJ1bmsKKzc3MDIgOTc4NTJmNGViZGU2YjA0NDFlYWQ5N2ZiZDVkYmUwYzUwYjE0YTYwNiBsZWdhY3ktdHJ1bmsKKzc3MDMgNTllOGEwMmE0Nzc0ZDg2YTU1ZTNjNDAwMzJkYzQwZjU4MWZkNjA5MCBsZWdhY3ktdHJ1bmsKKzc3MDQgNzRjYWRkZjRiMjhhNGUyODQwNzVkZjlmM2E3YzQ3YjgxZjZlOTQ0MyBsZWdhY3ktdHJ1bmsKKzc3MDUgMGU2MGRlMmE0MmFmNzUwYzVkY2Y4MGNhOTU1MGM1NzVjNzAwODJkNSBsZWdhY3ktdHJ1bmsKKzc3MDYgOTMzNDRjYmRmNTQyMmEzNjhhZGUyYmIxOGJkNTkwZDg0OTZhMTkxZCBsZWdhY3ktdHJ1bmsKKzc3MDcgMGE1Y2VhNDI3YTlmYmJhZTAzNzYxY2I4OWUyNjczMDAwYzMwZmVjNCBsZWdhY3ktdHJ1bmsKKzc3MDggYjc0OWQyZGQ3NTgyODgxZTAxYWNkY2E0ZjRmMTM2ZThlNDZiYjllZiBsZWdhY3ktdHJ1bmsKKzc3MDkgMDdlZDUyZTIwMGRiNjk2OTk1NjJmZmYzMzU4MWMwMTczYTQwZWFhYyBsZWdhY3ktdHJ1bmsKKzc3MTAgNGYxZmE3YjY5YmE3NzkzMzZlOTk2NjVkYWFhOTE0ZjY5MmUzNmI5MyBsZWdhY3ktdHJ1bmsKKzc3MTEgYjRlNjcxYmMxMzMxMWFhMDhkMGViMWUzODlkZjg3MDIzNTU0OTE5YSBsZWdhY3ktdHJ1bmsKKzc3MTIgMTIzNzNiYTI0ZTVkMzcyYzZhNTVjYjhjNWRmOGRkYTc3YWE3OTY1ZiBsZWdhY3ktdHJ1bmsKKzc3MTMgMTUyODhjODM0M2E1YTYwODg2Y2VjMTRlMTFjMGIwMWQ0NDBhOTllMCBsZWdhY3ktdHJ1bmsKKzc3MTQgMjc2MzU0MzdmYTdhMmQ3ZDA0ZGNlOTk5M2Y3Y2VmZDU1YjFkOTJlMyBsZWdhY3ktdHJ1bmsKKzc3MTUgYTMyMzM4NjRjYTM4NWZlZWUwN2NiN2U0Y2NiOWQzOWQ1OTZiNGU4MCBsZWdhY3ktdHJ1bmsKKzc3MTYgYjg5ZjUyODIxYzUyZTg4YTU2OWI2MDVlYThjZDljMGEyNTU3M2EwNSBsZWdhY3ktdHJ1bmsKKzc3MTcgYTUwZGY3ZjNhMTBhMzNkMmE3OTM4NmQ4MmUxZDhhNDFkYzJmNzQ2YSBsZWdhY3ktdHJ1bmsKKzc3MTggNGYyNTFiOGUzMjhmNWI1ZjlhNzdjYzc5MTc3NzAyYTQ1ZDY5MDMzMyBsZWdhY3ktdHJ1bmsKKzc3MTkgMjQ3MTM5ZDIwMGU4Yzc4Y2MxMTY3ZGNkNGZjYTE1Y2JhODdmMTZhZiBsZWdhY3ktdHJ1bmsKKzc3MjAgYzVmZDMyNzA1N2M2YzM1NGE3YTI2ZmFkYzNhYWFmMTliZWRkYTNhZiBsZWdhY3ktdHJ1bmsKKzc3MjEgMjMzMzBhMWI5NTk0ZDkyOGY1ZTllNmM1MmMyY2I2NzhiMjQ3YjcyZSBsZWdhY3ktdHJ1bmsKKzc3MjIgNmRiOGFkZThkOGE5ODBkNTY4YzIwMWYwYjY5MDNjMTJmYWY4MWJiYSBsZWdhY3ktdHJ1bmsKKzc3MjMgYTU0NzIwZjhkZDM2Y2ZmYmY5ZWQ0MzY4ODJlOTUzNzBhZGI0Y2NiZCBsZWdhY3ktdHJ1bmsKKzc3MjQgMTMwMDU4NzJkMDUzNDZmYjAxYzc4ZDhmNjA1MTM2NGU1ODgxYjQ4YyBsZWdhY3ktdHJ1bmsKKzc3MjUgNTJlM2I2M2YyZGNhMDBlZDYzN2YzOGI0OTQ0NGU0Mzg0YWFjNmQwNCBsZWdhY3ktdHJ1bmsKKzc3MjYgMWJkZGJhMmYxMDBlNDhkYTA1Y2Q1MmFiODI3MmJiNmEyNWNiNTUxNSBsZWdhY3ktdHJ1bmsKKzc3MjcgMmZkOTI0NmIwZWU4MjEzMjhkYTMzOWQ1OGJhMTU2MjgyZTc2YTdlMCBsZWdhY3ktdHJ1bmsKKzc3MjggNmZjZjIwNzQ5OGQ4YWJlMTcxZjM4MDZhNTAyMzA1YWRiMjY2ZTA2MyBsZWdhY3ktdHJ1bmsKKzc3MjkgZmUxY2NiNGU0YzFjNzMyMDAyNzYyYzJmNDZjMDMyOGI5OTJlZDNmNyBsZWdhY3ktdHJ1bmsKKzc3MzAgZDA4N2NkMDYwYmFkZGE3NmU3ZWM1MTk0YTcyZDBjYzk0M2M2MWQzYSBsZWdhY3ktdHJ1bmsKKzc3MzEgNzE2OTRhMTcxMzI0ZmY1ZTgyYjNjZmQ1M2UzYmNlMmZjMTdiMDNkMCBsZWdhY3ktdHJ1bmsKKzc3MzIgODEyODM3OTVmMTZhOGEzOGUyODYxZGFhMDdlOTdmNjUyNGJkODAyNCBsZWdhY3ktdHJ1bmsKKzc3MzMgNDBkMmZkNDcyMjg0YTRlNGNmMGVmNjAzMTBmOGYxZGNjOWIzMTk3ZSBsZWdhY3ktdHJ1bmsKKzc3MzQgNzFkZjIxYzBhMzRlZDRiYzQ0ZDdmMzk0ZGM5MDY5N2YxNjI1ODMyYSBsZWdhY3ktdHJ1bmsKKzc3MzUgMWU1ZDYyOTNjNTI0ZTNlNWI5NDI0N2E0Mjg5MjAwOTVlOTgyOTI1MyBsZWdhY3ktdHJ1bmsKKzc3MzYgNzI5ODZiNzE2ODI0NjJhN2YzNDRlYzFjODlhYzAxYTk4NjMzYjI2NyBsZWdhY3ktdHJ1bmsKKzc3MzcgNWFiYzFhMzZiZWRkYzczOTYyY2M5NTFiMDE3ZDRiYzE5Mjg3NWQ2MSBsZWdhY3ktdHJ1bmsKKzc3MzggODZkNjBjMzRlYmRlNzc4NTc4ZjFlMzVkMWU5NDcxMjJhNDUyNDgwNCBsZWdhY3ktdHJ1bmsKKzc3MzkgMzg4NzhmMWNkNGYxZmVjOTk5N2I0M2IxOWY1ODg3M2EzZDNjYTM1NyBsZWdhY3ktdHJ1bmsKKzc3NDAgM2MxNzg4YWI5NzYxMDZmMzAxNjA3NzA4NGMyMjMyMWQ5YmU3MDRiNyBsZWdhY3ktdHJ1bmsKKzc3NDEgMWVmYzQyNzNmZGI3ZTM0OTBmOThkNzQ3YTg0YjZlMjJmN2Y3ZGY5MiBsZWdhY3ktdHJ1bmsKKzc3NDIgZDQxZWVlNmQyZmY3NjkzYmFmNGRjMDBmNWQ0OTJhZmQ4NjFlNDY1MSBsZWdhY3ktdHJ1bmsKKzc3NDMgNGYzMzFmNWJiNWYyYTRiOTIxOTk0OWQ3YTY5MzRjYWU1ZGJlY2JkNiBsZWdhY3ktdHJ1bmsKKzc3NDQgNGU1Mzc0NmU1MWFmOTBhMTcyYmU0NzE2YTMwMDgxYWRlOGM5NDM4NyBsZWdhY3ktdHJ1bmsKKzc3NDUgZGU5ZDBjNTI0OWIwZTJhN2Q0NjFlY2ZkZjFmYjM1MDg5ZGJlZDFlNiBsZWdhY3ktdHJ1bmsKKzc3NDYgYWZmNzA2MzM3OGE4YTYzOWM5NGQzNTA2NDQ4NjhjODk3ZTY2OTQ2ZCBsZWdhY3ktdHJ1bmsKKzc3NDcgYjE1OWY5OGNiZmVmYmQ2NTE4NDQxMDcyYzQ2MjkyYWQyNzk0MDY2ZCBsZWdhY3ktdHJ1bmsKKzc3NDggMTE0OGU3ZWJjYTM1NGIyM2VmMzgwY2M5YTIyNDU3ZmU1OTYyYTA2MSBsZWdhY3ktdHJ1bmsKKzc3NDkgMGQ2ZTcwYTVhYjRiZDFkNzJhZmZjMzBlNmMxMWM4NGJlYmZiMWE5ZCBsZWdhY3ktdHJ1bmsKKzc3NTAgMDk5ZGJjNjg0YzdiZTQwY2Y2OWY5NmQyODM0MmI0YjcwZDYyNzE0YiBsZWdhY3ktdHJ1bmsKKzc3NTEgYjdjYjY5NzY4OTNkODVmODkyMWNkMmVjMGU0NDA2NzUzOWMzYWY0NiBsZWdhY3ktdHJ1bmsKKzc3NTIgN2RmNWEwZDFmNTIzMGJkZjFhMzRjMGVkYzYwNDU3MDBkZGY3NGVkYyBsZWdhY3ktdHJ1bmsKKzc3NTMgMDFjM2U2NGJjODI0YWFiMGFiZDE5NmU0ZmE0MWU2MTFkMzhjNzk5YSBsZWdhY3ktdHJ1bmsKKzc3NTQgMTYzNzJhNGM0YzE0NWM2OWNkNTFhODcwZjhjYjFjY2ZhZjk2ZGMzYyBsZWdhY3ktdHJ1bmsKKzc3NTUgZThmOGNmMzU4MDU0ZWQ2YjZkODljNDhiMzZmYzI4NWUxOTNmNWUwYyBsZWdhY3ktdHJ1bmsKKzc3NTYgNjA3ZmEzMmZjMDRhMWRhM2NiOWEwZDJkMDc1ZTUzMjY5ZjUwOGRmYiBsZWdhY3ktdHJ1bmsKKzc3NTcgNTI1MGY0MDlkNTU4NzIzMWUyZDg2ZTY5NzYzN2I1ZGViNGM5Mzg2YiBsZWdhY3ktdHJ1bmsKKzc3NTggODJhM2ZiZGEzMzYzNTBiM2E0YzM1YTYxN2RiODk1MTcyODQyYmFjMSBsZWdhY3ktdHJ1bmsKKzc3NTkgMDJiMmVkZjU1YmFmMzlkZjk0NjVhZDhjNjRiZGU3MTA2MDNiYmY1ZCBsZWdhY3ktdHJ1bmsKKzc3NjAgZDJjOTk1ZWM0MjkwMTAwOGRjMWVmOWQzNGM5MGJhMDZjNzQ0ZDYzNiBsZWdhY3ktdHJ1bmsKKzc3NjEgZmJlZGE2ZjQ2ZWJiMzhhYjdiYTUyNjRjZDRhZDM5ODg2Y2QyMmMyOSBsZWdhY3ktdHJ1bmsKKzc3NjIgNWFmNzY2YTFiNTMxMjUwZmI2NDg4NzgxNjA4NThmODk3OTNkZTMxMiBsZWdhY3ktdHJ1bmsKKzc3NjMgMGYxNzExYjdkMzY3ZGZmYmI5YzUxNDI4ZjQ0MTY4YWFhOTU5NDRlOSBsZWdhY3ktdHJ1bmsKKzc3NjQgNDdkM2QzOTZkNGVmOGEyMWE2MWQ5YzlkNGVlZWRjODNiMWQwZTQyZSBsZWdhY3ktdHJ1bmsKKzc3NjUgZDMyYjhmNGQ5ZDMwOTIwY2U4MWMwYWNlMWUxMjdhNDAzNzdjZWM0NSBsZWdhY3ktdHJ1bmsKKzc3NjYgYTc2YTNhMzlmNmJjZmI3N2VlYzI4YWMwYWU5ZjM0MGJkMzcxZDQwYyBsZWdhY3ktdHJ1bmsKKzc3NjcgY2E1NjhlNWViZDE5YTM4MDU1ZmNjZTcyYzU0YWI4OTAxZjhkMWZhMSBsZWdhY3ktdHJ1bmsKKzc3NjggYjBkOWRlMzc4NmVjMzI5YzBkNjljMDRkMTRiMjY1NjYxNmJmMWI0MyBsZWdhY3ktdHJ1bmsKKzc3NjkgNTdhMmVkMDYzMGNkODU5ZThhNTg4Y2NhYmI1N2FkYTcyOTQ4OTg4OCBsZWdhY3ktdHJ1bmsKKzc3NzAgMmYyNzYwYzNkZDkwNWQ0M2ZkZDUyYzM2MzhhMDRiYzBjNGZlZWIyNiBsZWdhY3ktdHJ1bmsKKzc3NzEgN2FhNDU2NjAxNGM2YWMwNDkyYjk4ZTllMmVmZGJlZDUzOTJiMzYzZSBsZWdhY3ktdHJ1bmsKKzc3NzIgN2VjNzMzZjljMzA1NzRiZWQyYmVkODRkODFjOTUxOTJhNjkzYTUyZSBsZWdhY3ktdHJ1bmsKKzc3NzMgOWEzMmJkOGY0YWM4YTFjZTUwYjA2OGI1MWIxOTdmNDBjYjg5ZThiYiBsZWdhY3ktdHJ1bmsKKzc3NzQgYjUyM2U2ZTdhYzYxMmFkZTFlMjIxMDQ1NWIxMzRkNjUyZDExNzM5OSBsZWdhY3ktdHJ1bmsKKzc3NzUgZTc3OTQyNTYyZGQzOGU1MzVlNjZiOGM5YzU0OTRkMTY1NDk3ODUzNCBsZWdhY3ktdHJ1bmsKKzc3NzYgZmI4MTY1MzA0OTM5MzQ1ZGEzZWU3NWVjZGM5YmRhZGVmODg0OTE1NCBsZWdhY3ktdHJ1bmsKKzc3NzcgNWUzYmNmNGViZjI5ZjQ4Y2NjY2E1Yzg2NmM2NTgyZDRjYmY1NmEzYiBsZWdhY3ktdHJ1bmsKKzc3NzggOTY0NTYyYmQ3NWNjMzc2ZmE5YTMyOTQ0YjEwZGUyMDEwYTczZjlkMyBsZWdhY3ktdHJ1bmsKKzc3NzkgNDQ1OTE3MmY0MGJiMTQ0ODlkM2FlNjZmYzg5MTUyOWNkMzI0NWQ5YiBsZWdhY3ktdHJ1bmsKKzc3ODAgMzMyZmUwMmJmMDJkYzQ3YWY5MDM4MjhjNDIyYjYzMjVkYTk0OTZkMyBsZWdhY3ktdHJ1bmsKKzc3ODEgZTYxNGJjZDM0ZTM0ZmM0ZjU3NWViZTAwYTNlODMxYzBhNjczM2RjYiBsZWdhY3ktdHJ1bmsKKzc3ODIgYzNlZDI5OWQ1OTNlNmNmNDRmZWMzYTBlYzk2MTFjZmUzMDc4YWQxMCBsZWdhY3ktdHJ1bmsKKzc3ODMgZGY4N2Q1ZDFiYmRmMTdmOTczZGM3ZGM4NGRiZDMwY2Q1NjY2YjRjOCBsZWdhY3ktdHJ1bmsKKzc3ODQgZTc1NmI4ZTU0YzdjMWM2MmNhNjY1MWFmNWU0MTA3NGY1OGYzMTdiZSBsZWdhY3ktdHJ1bmsKKzc3ODUgMTkyZTJlMGNiY2U1MDY0OGQzMjY5ZWMzMTdhNDk2N2RiZGQzMzhjMSBsZWdhY3ktdHJ1bmsKKzc3ODYgNzgyNTk3Y2Y2MTUxZDlkZWExZjhiNTk0OTJjZTVhZTNmYjkzNWJlMiBsZWdhY3ktdHJ1bmsKKzc3ODcgZDBlYjE4MzA5MmIwY2RjNjhiNWQwMTVlNTgzNWU5ODIwYzg5MWJkNSBsZWdhY3ktdHJ1bmsKKzc3ODggZTg5OTY4ODRlOGUxN2U2YjdiNDAwMzkyODdiMzZmMGNkNWZiOWEwZSBsZWdhY3ktdHJ1bmsKKzc3ODkgOGZjMjE3ZDMzMjY3NTQ1OTdiMTY2ODFkNWQ3MjZlZWJlZDc3ZTZhMyBsZWdhY3ktdHJ1bmsKKzc3OTAgNjVjOWU5MGQ4MTQyNjkyZGYyYjg4OTI2MTJkODZhYzNjNTM2ZWRiZCBsZWdhY3ktdHJ1bmsKKzc3OTEgYzhlMjRjNGI4YmZiY2NhODM5OWY2MTQxN2QyN2FhMzU3NTU3NmM2NCBsZWdhY3ktdHJ1bmsKKzc3OTIgYzcyYzdlMTkzMGIzZjJjYjA3ZmM0YmFjOGJkY2VjYWVkYTg4NjNhZiBsZWdhY3ktdHJ1bmsKKzc3OTMgMmM0YjgwMmEzYjVkOGI1NWVlMDVkNGI2ZWUxYzUxMTNjYzU0MWQyZCBsZWdhY3ktdHJ1bmsKKzc3OTQgNzRhMWJjMDk5ODI3NmU3MjdmMTFiZDQxMjE2YzY3M2VhNWEwYTU3MCBsZWdhY3ktdHJ1bmsKKzc3OTUgYzNkZGI4NGE3NzYxZmRlM2M1NTQxODkzYTUzMzg5YjNiMDU1NmM0YyBsZWdhY3ktdHJ1bmsKKzc3OTYgZTJhYzA5ODJjYzMyZjBjZjExNmJjOWQ5YjRiNDI3NTgyMDE0YjJlNyBsZWdhY3ktdHJ1bmsKKzc3OTcgMzg4MTg1MzhiODljMGFlODcwYWNjZTg3MDA1Y2U2NzBjOTQ0NzJhYyBsZWdhY3ktdHJ1bmsKKzc3OTggOTFmOTkxODEyNzE4NTU3OTNhMzIyYmVlNzFiNjdmNGJhNDdiNjA0NyBsZWdhY3ktdHJ1bmsKKzc3OTkgNDg5ZGNhM2I1NGNjYjYwZmFiNjE0Yzk0YjZiMGNjY2Q3MTFlNTZmMyBsZWdhY3ktdHJ1bmsKKzc4MDAgM2EwNzc5OWRlYmExZjZkY2JjYzNhYTk3ZDJkZWNkZDUyOWRhZDAxMiBsZWdhY3ktdHJ1bmsKKzc4MDEgYjY4OTMxMzM5NDBmZWViMTMxNDE1NDJiMTM5N2JlNmI2ODRjMTNmMCBsZWdhY3ktdHJ1bmsKKzc4MDIgMTUyYjI4MjdhMWEwODczYTM1YjJiYzQyYzMxMjNhMzM0NzMyM2M3NyBsZWdhY3ktdHJ1bmsKKzc4MDMgMzU5ZThmODE1YTNhY2I0OTI3NzE1Nzk3MDJlOTZhYzVlYWViMTdmYyBsZWdhY3ktdHJ1bmsKKzc4MDQgNDM3NTJlMjA5NDczYzM4ZTFhODQ4NTRhOWQ5YjFhMmYxZmVkNTg1YSBsZWdhY3ktdHJ1bmsKKzc4MDUgNWEyMmY5YjM4YWFjMjI2OGFiMDg2ODQ4M2E3ZjVkMjc3OTRhOTU2MyBsZWdhY3ktdHJ1bmsKKzc4MDYgNjIzMmFjYmE3ZWIyMGEwYzc1N2ZmY2I4MjQzYjM3YzVmNjIxYTkyNiBsZWdhY3ktdHJ1bmsKKzc4MDcgOGRmYzI1Mjk2M2M3MTk5ZTNiYmE1ODk2ZmE5NTBmZWYyNDNkYWNkNyBsZWdhY3ktdHJ1bmsKKzc4MDggNjI3MzE2YzAwMWZiZDQ1MTc3M2NjMWIyYjM0N2I4ZjZiM2ZjNTMzZCBsZWdhY3ktdHJ1bmsKKzc4MDkgZDFhYzUxYjg3MGUyMThjMDQ3NjYyM2ExZWM5MTlmZThlZWVkZTllZiBsZWdhY3ktdHJ1bmsKKzc4MTAgZWU5Mjc1YjBmNWM4MGFmOWZlY2Q3Y2QwMzgzMjFkOTJkZWI1MGZjZSBsZWdhY3ktdHJ1bmsKKzc4MTEgNzQ2ZjY4N2FjZmMxYWY1MjMxZDk1ZjQwZjU0OWI5MWYyNzViMDIyYiBsZWdhY3ktdHJ1bmsKKzc4MTIgMTY2YzIyMzI5MjFhYmZjZThiYWNjZDUzYmY3MzY2ODYxZDkwMTQyOSBsZWdhY3ktdHJ1bmsKKzc4MTMgNjc5OTViYzE3ZjYyNWJjMGJjYjYzMmEzODcxNjkxNThmYzJlNmUzOSBsZWdhY3ktdHJ1bmsKKzc4MTQgYjBhMzE0MGNjOWIxYWRiMDdiZjIzYWJhYmRjOTkxNTViZDMyZGY4YiBsZWdhY3ktdHJ1bmsKKzc4MTUgZGI2NzNlOThmMjhkYWVlYjJmNzEyMTNjYWNmZWM1MjE0ODdhZTY3MiBsZWdhY3ktdHJ1bmsKKzc4MTcgNjdlNTIzN2NlMTQxOGIzODdkYTIyM2VlMzI0NTE2MzE1ZDUyMTVjOCBsZWdhY3ktdHJ1bmsKKzc4MTkgNjdhMGI1YWFhZTQzM2JhOTgwZWZhYmJiNzUxMTFiNDI4MjQxZGYzMSBsZWdhY3ktdHJ1bmsKKzc4MjAgNGE1NDFiYjBjNTM0MzNjN2FhMDliOGNiYjNiNjU1NWViMTYyMzM3OCBsZWdhY3ktdHJ1bmsKKzc4MjEgOWNhMjcxODhkYTIzMjMyMmY2NzAxMWIzNWMyMjJhNGYwMGUzZTU0OCBsZWdhY3ktdHJ1bmsKKzc4MjIgNWIyZWQ2MDgxZWI5NGFlMTlmNjM2ZDg1MmMwMjE3MzJiN2FlNTYzNSBsZWdhY3ktdHJ1bmsKKzc4MjMgMzM5ZGNiOWEyODI1NzBjOTMxZmE2NWVjMWVkZTE1ODYwZjQwZTVhNSBsZWdhY3ktdHJ1bmsKKzc4MjQgMDA2MWY0ZWE5N2JlOGVjMzUyMWRjOWNkMTQ2M2E2YzUwMTI4MDk2MSBsZWdhY3ktdHJ1bmsKKzc4MjUgYWUwMmVkMmFhYzNmNmM2YTUxMWI1MjNlMThiNTBjZjlmOGY2YmQxMSBsZWdhY3ktdHJ1bmsKKzc4MjYgNmFiMzkyZDdhNTJmY2Q2MDczNzRlZmNmMmNmYzZmZDkyZmQ5OWQzNCBsZWdhY3ktdHJ1bmsKKzc4MjcgNjg4YzNmZDQyY2E2MmQ1NjIxMTEwNmQxNTMwMWU4OWI5NmNkMTIwNSBsZWdhY3ktdHJ1bmsKKzc4MjggOTk5YzE5N2RhNTdjYzE2YmY1OTZmMWVmNzAyZTBjMjUzOWIyNTgwZSBsZWdhY3ktdHJ1bmsKKzc4MjkgZDU3NTdhYWQxYTRmZWE3NzhlMjRjMWJhNTY3NWRhZWZlZGMzODcyOSBsZWdhY3ktdHJ1bmsKKzc4MzAgZDQwY2Q5MTBkNjg0ZjBlYjc3YmUzZTA3NTZkNGM0ZjQ1NDNlZjU3YyBsZWdhY3ktdHJ1bmsKKzc4MzEgMmMwYjEwMTY1ZjdlY2E0MTk2YWUxNDRiMWQ2ODNiZDI2YzA0ZjE1ZSBsZWdhY3ktdHJ1bmsKKzc4MzIgMTc5MTY4ZTE3YmZlMjVjNTc3MjRkOWUyZGJlMjAzMjE3MjgwOTQ2MiBsZWdhY3ktdHJ1bmsKKzc4MzMgNDczNjJmZDkwNzFiYzc5MDliNzAxZTk3NTc4NDFhMzg0NWVmYzEzZiBsZWdhY3ktdHJ1bmsKKzc4MzQgYmMyZTMzMzQwNDhlMTNhMWFjMzU2Zjg4MDhiYWY3MGFlZmY2ZTk5NCBsZWdhY3ktdHJ1bmsKKzc4MzUgZGI0MGRiYTNmNzlhN2Q1MzAzMTQ0ODA2Y2MzMmE2YjhhM2NjYTgxNSBsZWdhY3ktdHJ1bmsKKzc4MzYgZWRlYTRmMWQ2M2ZkMDE1NTQzYzFiYzZjYzRjNTUxYjU5OGQzZWYwNCBsZWdhY3ktdHJ1bmsKKzc4MzcgZjg1ODAzOGI2NGMyNjA2NTM5YzJmYjhjYjQwNzI0OWM3M2Y5OTg3YSBsZWdhY3ktdHJ1bmsKKzc4MzggYjFjMmI3OWFhNTFmODVjNDkwZDExMjU0MDVmZWViMTM0MDA4ZTQ1MCBsZWdhY3ktdHJ1bmsKKzc4MzkgNjFlNDFiMmIxYjY5ZDQ4OGIwYjhkYjQyMzAwYTczMGFmYzE1NTVjMSBsZWdhY3ktdHJ1bmsKKzc4NDAgY2M1ODZiZGE2Mjc1NTI1ZDY3NThlMzMxOGFjYTI2YzVlYmY3OGMxNCBsZWdhY3ktdHJ1bmsKKzc4NDEgZTRhZjQxNGY1Zjg5M2I1ZDhjNmFlMDhlYTAxMWRlZmJkOTVkMTQ4MCBsZWdhY3ktdHJ1bmsKKzc4NDIgYjdjYTk4YzZkYmJkNjhhN2JhMzdjMzg0ZjU1MTc2Yjc3Njg4ZWMxOSBsZWdhY3ktdHJ1bmsKKzc4NDMgODczMTMzMzNhZTNmYzM3M2JlNGVjODgxNjBkYjM0MTdkNGVlMGYxZSBsZWdhY3ktdHJ1bmsKKzc4NDQgODk4MTUzM2U2Y2MxYTEyN2FhYjgwMzUyMGU1MTQwOWFiNzAyMTIwOCBsZWdhY3ktdHJ1bmsKKzc4NDUgZjIxMzJkMWY2NmE2MjhmNTljNWVmY2VkODE1MGU2YTFhOTM5OTVmMiBsZWdhY3ktdHJ1bmsKKzc4NDYgM2NhMTQ1MDMxNzBjYzlmOWI5MmZjMDg3NTg2MDJiYjI3MTYxZmFlOSBsZWdhY3ktdHJ1bmsKKzc4NDcgMWVhMWYwMTkyNjhkOWYyNzA3NDU3OWQ3MTVmY2IyOTY2MTY2ZjgwZSBsZWdhY3ktdHJ1bmsKKzc4NDggNDkzYTM0ZGNhNTNlZGQ3MjU0NjI5OTg1NjhhNzUyNTUyMmQzMGRiNyBsZWdhY3ktdHJ1bmsKKzc4NDkgNDI0OTIyYWZjMWJiNDBlOWY1MjAyMDlmNWI5NDNkNDZhODkzMTBjOCBsZWdhY3ktdHJ1bmsKKzc4NTAgNTg4MDM4NGQ3YzcxNDhiOGM0NTUxMDFmNzRkODA1N2E2MzBhMTEyYiBsZWdhY3ktdHJ1bmsKKzc4NTEgMTE4YmVlZjkxODczNmQ1Zjg2MmRhMzA5MmIxMDgxZjEwYmI4NzVhYiBsZWdhY3ktdHJ1bmsKKzc4NTIgN2Y5MGE2NzFjYzFkYjhhODExOGZhZjZiYTNjNGJiOTQ2ZmQyMTI3OCBsZWdhY3ktdHJ1bmsKKzc4NTMgOTk4MGZhZWViN2E1MTNkZDgyNTMyMmRjMWNlY2RhZDhiNGJjOTM0ZiBsZWdhY3ktdHJ1bmsKKzc4NTQgMDk1OTdhNDIzMjI3Y2UzMDY2ZWQyNzNhNmZmZDYxZmFlNWJjZjY3OCBsZWdhY3ktdHJ1bmsKKzc4NTUgMzE5ZTNlYWVjZGY0ZmI3OTA0YzE1YTUwMzI5ODY3OTgwN2QyNWEwYiBsZWdhY3ktdHJ1bmsKKzc4NTYgMWM5YTg0ZTA5ODFkMzU4YmE5ZjAzODBjODJlNzEwNjc3ZWIxNTY0MyBsZWdhY3ktdHJ1bmsKKzc4NTcgMmQ0YzZjYmEwMWJmMDA1ZTRiZmRjMGJlMmExY2FhM2VjMzNiZTExZSBsZWdhY3ktdHJ1bmsKKzc4NTggMzM5ZDQxMjlkM2Y3ZjE1YTQ4OWUxNjk4NWViMDEwZWY0NDMwNGJmYSBsZWdhY3ktdHJ1bmsKKzc4NTkgM2Y1NThhMzJjNDk4MDAwMzUyNDBlYTljMzkwYTdmZDQ5Y2JjZWU0ZiBsZWdhY3ktdHJ1bmsKKzc4NjAgM2M1ZmNmOGJmNTE4OTYxYmM0YmE4NWZiMmUwMGUwY2M4ZjlmMGVlYSBsZWdhY3ktdHJ1bmsKKzc4NjEgMzcxNGIzMjU4MjZkODk3Y2QxNmU3OTM0ZjI0OWE5MTk1MGEzMTJiZSBsZWdhY3ktdHJ1bmsKKzc4NjIgMTBlN2RiYTAxZDA1MTIxZmRhMWFkYTU0ZGFmYmYzMGY3N2RjNmViNyBsZWdhY3ktdHJ1bmsKKzc4NjMgNDNjNWUxZjkxNTRlNmQ3YTliMzJlYmI2YjM0ZDk3OGUzNjBjZDQ5YiBsZWdhY3ktdHJ1bmsKKzc4NjQgMDljNThiMTc0OTg5OTEwMjcwOWZkMTY5MWU0NTVkMjVjZWIyNWE2ZiBsZWdhY3ktdHJ1bmsKKzc4NjUgMTNhMzBjZWE4ZGJmN2QyODVmYzdjZTFmMzQwMGZlNDhmNzA1YjBiYiBsZWdhY3ktdHJ1bmsKKzc4NjYgNWE5NzA2OTY1YTRlYzNmYzEzOTBjYmI2ZWJmYjNmMjYwYTg0ODA5MSBsZWdhY3ktdHJ1bmsKKzc4NjcgYjI0ZTg0YTBmMzBiMzJhY2MzNDFiZTViMzAyMGNlODNlZmE5YTkxMSBsZWdhY3ktdHJ1bmsKKzc4NjggZTkyZjE4MmQ3NzI2OGM4NmI3OTQ5MjYxNjcwOGE3M2QzNzFjOTU2OCBsZWdhY3ktdHJ1bmsKKzc4NjkgMTk0ZDI2ZGY2YzUwMGNmZmQyZmMxOWZiMDQ1MDdkNDFmMThkYWI0ZSBsZWdhY3ktdHJ1bmsKKzc4NzAgMzFlMzk5NjM2Njc1ZmQ0MTQxMGM0NzUyMGQ5NzVhMzc1YjBmYTFlOCBsZWdhY3ktdHJ1bmsKKzc4NzEgYzJmYjk3NmJlY2ViMzlkYWQyMDE0MmM1Y2NlZGJlOWE3OWNiYzIwMCBsZWdhY3ktdHJ1bmsKKzc4NzIgMmM4MWQ3ZDY4ZWQzYWFkM2M2N2U3NzU5ZmQxNGExMWQzOTQzYWUxMCBsZWdhY3ktdHJ1bmsKKzc4NzMgZDE0NDc5NTBmYTA0NTY1MmZmNTViZTNhMmFjMjc1ZGEwNzA2NzZjNiBsZWdhY3ktdHJ1bmsKKzc4NzQgZmQ3ZWIwNThjZTVkYjMwNDE4YzUxZGZiNDZjNDMwNmNhM2UyMWUwOSBsZWdhY3ktdHJ1bmsKKzc4NzUgNzJiMjMxZWRmYjI1MjM5NTUyOTlhODk4MjQyNTk0MDNmZjQ1MzFmNSBsZWdhY3ktdHJ1bmsKKzc4NzYgMGE1OTk3NzNhOWNjYTRmZWRkZTdkMDQzZDc3MzA5NjVlMWM0MmU5NiBsZWdhY3ktdHJ1bmsKKzc4NzcgNzkxOGU4NzM5MTQ4YTRjNjBhYjY1Nzk0Yjc2Y2VhYTg4ZjZkYjllOSBsZWdhY3ktdHJ1bmsKKzc4NzggNDg3YWQwMzI3YWUxODI4YjI3ZGZiZmIzYmJlYzc1YjdlNDE0ZjBjZSBsZWdhY3ktdHJ1bmsKKzc4NzkgOGYwYTc5M2JiMGUyNjk1NzFjOGJjMGVhMmVmM2E2YmUxNzdhNTc2MCBsZWdhY3ktdHJ1bmsKKzc4ODAgNTBhOWMxNDA5NDZjNDg5ZmYyM2EyZGIzZTEzM2M0NDE5YzRmNmQ4ZCBsZWdhY3ktdHJ1bmsKKzc4ODEgMzc4MGNjZTE0ZjdkMDJjZGRjMWZjZDFiOTUyOTc2OGRlMTdhNjNiNSBsZWdhY3ktdHJ1bmsKKzc4ODIgYjc4NzFjYTkzMGFkNWJjNTFhOTA5ZWU3NWVjMmU1ZGExM2UwN2Y0ZCBsZWdhY3ktdHJ1bmsKKzc4ODMgYzIyNTQ3NTQxOTJjMmVhZjE1ZGQyYWU0MDI1ZWY4ZTMzNzNiN2JiMCBsZWdhY3ktdHJ1bmsKKzc4ODQgYjdhMjNkYmUwMDY1ZWNmN2Y4MTBiOTc0MGE3MzhhNTM5MmJkZTE4YyBsZWdhY3ktdHJ1bmsKKzc4ODUgNjQ4MTI0YTU4ODBhMzMyOTdhNDVlY2I4ODQxYzQ3ZTA4N2EzNmFkOCBsZWdhY3ktdHJ1bmsKKzc4ODYgMThkNmE1YWJkM2Y4MzIyNzM2YzVmYzg1MTE0ZTBjMDI4ODRhNzlmMiBsZWdhY3ktdHJ1bmsKKzc4ODcgM2IyZmRhMzFiZjFiYThlZGM1MDU3NzBlYWZkOTcyNmQ0NDRiNmNhNCBsZWdhY3ktdHJ1bmsKKzc4ODggNjcxNzA3M2RlNTg2NWE3MDYxZGUwZDAzZWQzNmJmZGNkM2QxMDhmYiBsZWdhY3ktdHJ1bmsKKzc4ODkgNzhkMzk4MDA1YmFiMDJhNTQyODZmOTBiYzlmZjA1YmMzMjRhZjdkYyBsZWdhY3ktdHJ1bmsKKzc4OTAgMTAyNjdmZGM3NTMxMTZjMWQzZTI1OTg4MjAzMzVmMGI3ODE3MGY2NCBsZWdhY3ktdHJ1bmsKKzc4OTEgMDEzZmY2OTUxOTA5ZjBlYjU1YjRlNzcxOWUzOTViMDAxN2Q5MzBjMCBsZWdhY3ktdHJ1bmsKKzc4OTIgNTk2MzgwYTU2N2QyMjM5NGNhMDFlZmYwOTA1OTM0YzM0YjUyY2ZlZCBsZWdhY3ktdHJ1bmsKKzc4OTMgMTcyMjU0ZDQxYTUxZGFmYjc0NmQyMTU5Njk4YWJkMjZmMjZiYzIyNSBsZWdhY3ktdHJ1bmsKKzc4OTQgYWJmMzNiODgyY2ZkY2U4Mzg3NGNhMTY0MzAzZDMzNDJiYmZjOTBhZSBsZWdhY3ktdHJ1bmsKKzc4OTUgYTFiNjNjNzNhZDFkYzUxNGNiMzZjNDAwY2FhMjY3NjY0NTkxNTVjMCBsZWdhY3ktdHJ1bmsKKzc4OTYgZDk5NDFhODk1YzAyMDk0MTE1NjRmMmQ0ZjA0MTcyZmVhZWFkYjA1ZSBsZWdhY3ktdHJ1bmsKKzc4OTcgMDE0ZWE5ZDcyZDAzY2ZlNGY5Nzg5NzFiNzFlM2QxNTQyZWQwMDM0YyBsZWdhY3ktdHJ1bmsKKzc4OTggZGFjYmZhYTA3YzQwN2MyNmFhYjk4NDJjZTRmMGVlMTMyNGIzOGZmNiBsZWdhY3ktdHJ1bmsKKzc4OTkgMzczMzJiNmY2MjgwYmVkNDcyYmQyOWQ5MzljZmU1YTVjYTRhMWI1YSBsZWdhY3ktdHJ1bmsKKzc5MDAgYmNjYjhkNzQyOTY0N2I5NDFlNWU3ZTZmODdiNTA0MzY5OGY1ZDNkZiBsZWdhY3ktdHJ1bmsKKzc5MDEgNjM4YTk5YmM4ZjJjY2Y3YjliYTQwYTI0OWQwNjI0NzJlMmFmNmI4MyBsZWdhY3ktdHJ1bmsKKzc5MDIgYTdlMzA5YjE3NGIyNzI1ZWJkNTMyOThkZTk1MTlhMjQyODE4ODMwZCBsZWdhY3ktdHJ1bmsKKzc5MDMgZGFiODYzYjc5ZGViYWMzMzg5ZWI0ZWM3ZTMzMjliY2JjOWU0ZDY0ZiBsZWdhY3ktdHJ1bmsKKzc5MDQgYjAwMjMzMzU1ODhjZWY3Zjk3YTkyYTcyOWUwOWE0ZGFkNTNkZDc5MyBsZWdhY3ktdHJ1bmsKKzc5MDUgNWUyYzE3YjM3NGZiMGVhYTI3MDFkZmY4YTUxOTdkMjM3OTBlZWQxMyBsZWdhY3ktdHJ1bmsKKzc5MDYgYWMyMzVjOWU2ODgxZjMzOGNhNjA5ZmVjYTQ4MDRmZTJkMmQ1OWNmMiBsZWdhY3ktdHJ1bmsKKzc5MDcgMjMyOWNjZjBlNTgxMTFjZjE2ODkxZDU2YmFkMWJlMzIzMzFhYjU3OSBsZWdhY3ktdHJ1bmsKKzc5MDggYTU2YjQ0YjM1NTA1NzJmZDM1Mjk5OTAwNzQ4NTYxZTkxZmNjODUzMCBsZWdhY3ktdHJ1bmsKKzc5MDkgY2VlNGM0NWM1NjhmNzYwZmFiYTE5NjlkZWZmYWZiNmRmYzYyMzg3NCBsZWdhY3ktdHJ1bmsKKzc5MTAgYWQ0NzQxZDU0MzFjYzFiZDBiY2VkMWNiMzFhMDE4MGEyMzY0NjY2NiBsZWdhY3ktdHJ1bmsKKzc5MTEgM2Q3ODkwMjM2YTRlNTkxYjM4YzEzMzhlZjM3NjgyNDA2MGQyNGJjMSBsZWdhY3ktdHJ1bmsKKzc5MTIgNTkxYzY0MjBmMTFkMDI1ZGNkMmM5MzFiMGJlMTc0ZTI1OTJhMzc4ZSBsZWdhY3ktdHJ1bmsKKzc5MTMgY2Y4MThiNzBkYTNlNjVkNjQxZmJmOWIyNDljMjA1ODY5Y2NlYTE4OCBsZWdhY3ktdHJ1bmsKKzc5MTQgYzJkYWUyYjFhMTIzNWQxZDIyZDU3MjFkYmEyMTVjYTY3NDhjYmUzZCBsZWdhY3ktdHJ1bmsKKzc5MTUgZTkyNmMzMzFlYmJmMWQzMTdkN2U3MTk1MmNmMDM1NzExMGQ1YzEyMiBsZWdhY3ktdHJ1bmsKKzc5MTYgMWRhZTViMWM4ZGJhMTJhNTM4ZjZhODBkZjBlYmFjMTQzMTk3MWUxYyBsZWdhY3ktdHJ1bmsKKzc5MTcgOWVhYTJjYWVkMWMzYjg0NWEwZjg5OGYwNWU0ZDYxNDIyOGE2MDc2YSBsZWdhY3ktdHJ1bmsKKzc5MTggM2M2ZGI3MTY1YmMzZDYwNGRjYTRmODY5ZmZhZjk0ZGViOTY2NjNmNSBsZWdhY3ktdHJ1bmsKKzc5MTkgNDU3OWE3NzAxOTQ5ZGFiZGM0NWZmOWQwNDAyNmY3MTQzNWRhODhlYSBsZWdhY3ktdHJ1bmsKKzc5MjAgODg2OGU5ZjEzNjU3ZDMwYzljMjM3MTBmMmVhNGE1ZGQwZmQ3ODBlMSBsZWdhY3ktdHJ1bmsKKzc5MjEgODdjNGYwNWExN2U1MWZjNjA3MjRhNmU5NjdjNzg5OTY0NTA0ZGJjYiBsZWdhY3ktdHJ1bmsKKzc5MjIgOGYzZTE2MTIzNjAwNDllMTQ2YjcxODQwN2Q3ODRkY2U3MWIwOWQ0MSBsZWdhY3ktdHJ1bmsKKzc5MjMgNTE1ZWQ3M2RhNWIxNGI3YjVhZWU4OGExMTk2OWU1NzE5NDkyZmE4ZCBsZWdhY3ktdHJ1bmsKKzc5MjQgMGIxZTY5NTA4OTA3MzZkMjQ5NDEzMDFiY2FlYTZhMjc0YmZhYmMwMCBsZWdhY3ktdHJ1bmsKKzc5MjUgZTlmNjE1ODg0NmIxNmI3YzM4MDgzM2U0NWU5YjgzNDgxN2EwNmY4NSBsZWdhY3ktdHJ1bmsKKzc5MjYgMDFmMDJiZjJiNDQxNjdiNjg0NmFhMzQzMzg1MWEyNmFiYzA3MDRjZiBsZWdhY3ktdHJ1bmsKKzc5MjcgNGE4MGU2Y2E3Y2QzNWVmNDdlMzAyZTdhM2MzMjY4MzEyZjE0ZmU5NiBsZWdhY3ktdHJ1bmsKKzc5MjggNWFiZGRlOTljOWVhZGFhOWQ4MDZiZmFlODllMWJjMzlmNjg3ODdhMCBsZWdhY3ktdHJ1bmsKKzc5MjkgMmE4NzUxOTlhNzFlODYwMjJhM2ViYzA4OGEzZmE4ZTNjMTY5MGIwYiBsZWdhY3ktdHJ1bmsKKzc5MzAgOWM2YzA3ZDQ0OWRmNTQwMzYyMjk0OWI3OTg4YzJhNjZkYjNjZjRmZCBsZWdhY3ktdHJ1bmsKKzc5MzEgMGY2Yzk2ZjQ4ZTFiYTQ3NmU1Njc5MjY4M2I3OWVlOWE4MjU4ZGI3YiBsZWdhY3ktdHJ1bmsKKzc5MzIgNjYzNTc5YTNjN2ZlYjU0MGU3ZmFjMjA0NGJjMTEwOWI0ODAzMDE0YiBsZWdhY3ktdHJ1bmsKKzc5MzMgNzMxNmVlY2IxZTZiMzJlNjE4Y2IzMDQzZjkxZWJhYjllYzM1NDc1YiBsZWdhY3ktdHJ1bmsKKzc5MzQgNTM0NDAwOTcxMTFmZWY4ZTM5ZTBlOWU1YzVmODcyMTA3ZWE3ZDc0MyBsZWdhY3ktdHJ1bmsKKzc5MzUgMTMwNTJkYzJkNWY2ZTZlNGI5MjQ2YzEyZDBhM2YzZjM3MWMzODUwNyBsZWdhY3ktdHJ1bmsKKzc5MzYgYzVkN2I2ZmNlZTAzZDIyNWVjZDM3ZDQzMTVmMWFkYTJkN2ZhYWJiZCBsZWdhY3ktdHJ1bmsKKzc5MzcgYWQ2YzQyN2RjYmQ5ZTRkNTc0ZDliMDgwOTA0ZTg5NjRmZTAxMWJhYyBsZWdhY3ktdHJ1bmsKKzc5MzggMGRlZDYzYmNmNWRlMjllZGQ5NjllZGYxMzZjNmFmYTA1YjdhYTIxNiBsZWdhY3ktdHJ1bmsKKzc5MzkgNjBmNjY0OWZkMjMxMGRlYmEzYzIzNmRjYzZmZjNlYmM4N2JmZWRkNiBsZWdhY3ktdHJ1bmsKKzc5NDAgOTUyODUxZDljY2UyMGY4ZGMxZTM4NDlhZTBjOTRjMzQ2MTBkYzkzMiBsZWdhY3ktdHJ1bmsKKzc5NDEgYjA1ODRiZjdiNGY1Mjk5NjJkNDkzODIwNjEzZDI4YTUyNDIzNWUxYyBsZWdhY3ktdHJ1bmsKKzc5NDIgMDllNmI0ZTM0NTIzYmFlMjBlNTgyNjYwOGExMzM4YmUwM2NmYjgwMiBsZWdhY3ktdHJ1bmsKKzc5NDMgNDNjODZjODE4MWQ0NTc2NjFkNTgwZTkyOThhOTYyZWMzYjg5ZDcxYSBsZWdhY3ktdHJ1bmsKKzc5NDQgNjRiNjkzMTUxOTU2ZDIxYWQ1YTgzZjg1YTJkOGZhMjU5MDEzMjMxMyBsZWdhY3ktdHJ1bmsKKzc5NDUgMDhlODZkNDM5MjgxZGYwNTY4NzRlNmJhZGJhMDQ1M2FjN2EwZDczYyBsZWdhY3ktdHJ1bmsKKzc5NDYgNDdlODFiMjE2OWU5NTRlYzI1YWY0YzUxN2FiNWQ2ZTFiMWRmMzgyNyBsZWdhY3ktdHJ1bmsKKzc5NDcgZDkwMjlhNGUwZjJhYzc3YzZmYzgxMjkxOTFjNjBjNWYzMDQ1OWE3YiBsZWdhY3ktdHJ1bmsKKzc5NDggOGU1ZDZkMzEwM2FlZjgzZTk3MmZjMjI0OWI4MjM4ODE3YjRmY2E5NyBsZWdhY3ktdHJ1bmsKKzc5NDkgODRkYjE1NGQ1YjkzZThkMGJlMDU2MjU1ODBiZWJlODFhMmE2ZjU5OSBsZWdhY3ktdHJ1bmsKKzc5NTAgYzNkNGJmYjhjY2RmMDFkNmEzNWJkMzI5Y2I0YjQ3NjQzYjkxOWU3MyBsZWdhY3ktdHJ1bmsKKzc5NTEgMjY2NmU5MDRlNDBiMGNjZDQ4ZTkyYzIxMzI2NjdjYzBhNDllN2FlNyBsZWdhY3ktdHJ1bmsKKzc5NTIgYTg2ZWEyY2NlYWVjZGQ1YjJlNzU2OGM3NTFkNmVjYWQxODVjMzI5YiBsZWdhY3ktdHJ1bmsKKzc5NTIgMDYyYWVkOGE0Y2UyYzkxYzgxYjgwZTI5ZjAyZmFmZjFjZjVhNzYxYiBsZWdhY3ktdHJ1bmsKKzc5NTQgZjQ0YTU2ZTY5N2ZiMTdjZTU2Yjg2Y2Y0MTliNjA3NmMyNjhjYzM0NiBsZWdhY3ktdHJ1bmsKKzc5NTUgMjY2YzlhYThjMTI3NzYxNDkxYmU4ODgxYTAzMWVkMTZkNDkzZGRlZSBsZWdhY3ktdHJ1bmsKKzc5NTYgNmQ1M2ViYWVjMDIxNTkxYjMzNTA5NjBiMTg4YTUzYjZkM2ZjNGRjMiBsZWdhY3ktdHJ1bmsKKzc5NTcgYjk2MTc2YzlhODUzYjY5ZDIwMWYwYjUwMjBmYTY4MzlhNGU1MDU3NCBsZWdhY3ktdHJ1bmsKKzc5NTggZjFhZmM1NjkwYjJhYjVmMjAxZTMwNGY1MTNkZjk5OTRiYjQ3NjgyNSBsZWdhY3ktdHJ1bmsKKzc5NTkgNmZhMjk3NTZlYzZhMjk0Mjc0N2FkOGE1MzhhZDBkZmQ5ZWQyNWVhNSBsZWdhY3ktdHJ1bmsKKzc5NjAgNzM1MDllZmE3MjRiY2NlY2Y5ODU4Nzg0NjY3M2I3M2M3NTAxMjEzNSBsZWdhY3ktdHJ1bmsKKzc5NjEgNTk1YTVmZTE0MGQ0MGMyNzYzMTBhZTVkZWE5MDM1NjEwZGI2OGJmMyBsZWdhY3ktdHJ1bmsKKzc5NjIgNDc4YzY4ZWE5ODI3NTFhMjUyYzI2YjhhYTlmZjE3YmRhNmE4OTQyMCBsZWdhY3ktdHJ1bmsKKzc5NjMgMTk1ZDVhYTE5NTFlMDNjMjM5ZDhmNDA1OGU1ZTk5N2ZjZGY5NzdhYSBsZWdhY3ktdHJ1bmsKKzc5NjQgZWQwMzk0NDg0MDgyYjYyYzkwNGY2YzYwMTNhMWJhMzE5NzRlY2UyNSBsZWdhY3ktdHJ1bmsKKzc5NjUgMmU4OWM1NWQ5YTI5NWEyZWZiYzQ3OGIzMDgwMmY1OWQyOGFkMDQwNSBsZWdhY3ktdHJ1bmsKKzc5NjYgMmQxMzMyODAxMjlmNzJjOTc1ZTgzMzJkZDA4NzFlNjUyZWZmNzBjNyBsZWdhY3ktdHJ1bmsKKzc5NjcgYzFiNDBiMDU3N2QxOTRmMWUxYWVkMzMwNzc0YzU4NjAxZGY0YWQ1ZSBsZWdhY3ktdHJ1bmsKKzc5NjggNTA2YmE3ZGY0MmYwNDYzMWI1MTRiOTY1ZDY2ZjY1NmExNGU4OGI3YiBsZWdhY3ktdHJ1bmsKKzc5NjkgYWYxYWVhNmI5NjhmZDZkYWNjMTMwM2E1NWZkYjAyZGE1ZTI1N2U1NCBsZWdhY3ktdHJ1bmsKKzc5NzAgZWY5M2Q1MWRhYjM2MmRkNTliYjUzNTgwN2M0ODc2MGE2ODhmM2UyNiBsZWdhY3ktdHJ1bmsKKzc5NzEgYmZkMDMxNTQwODhiNmFjMTEwZjBlMGM2NTk4ZmJhOGIzZjI4NDQyZCBsZWdhY3ktdHJ1bmsKKzc5NzIgZTY1MmE3OTNmNGU3MTJmNDU3YmY1NTYxOGFjYmY2Y2ZlYTUyNTk2NCBsZWdhY3ktdHJ1bmsKKzc5NzMgMGIxOTQ2NjAwYmRkZWQ4ZjFkMGM4NTFhYTA5ZTRjYWI0Yzg5N2I5YyBsZWdhY3ktdHJ1bmsKKzc5NzQgMzc3Zjg2OTVhOWZiYjIwMWQwNjdmMzM3YTBjZDkzNGFlZThiZTA2NyBsZWdhY3ktdHJ1bmsKKzc5NzUgOWExMjI1OTIzOTE4MWY4YTM0MjhhY2FlZWEyZGM2ZjJjNDY2OTE1ZiBsZWdhY3ktdHJ1bmsKKzc5NzYgYjkwNTM3MmVkZDRmYjQ3YTdlMDg3MjdiNmQ5NmMwYzRkYTAwNDFhNiBsZWdhY3ktdHJ1bmsKKzc5NzcgODIxOTEyZmQ5NjVhMWQwYTRhNmVkMDk1YWY0YTA1ODg3YjYxNDUxNiBsZWdhY3ktdHJ1bmsKKzc5NzggNDY2MGZmYjllNDgzYzc1ODc5ZTM0NWMxOTU1YmE3NGY4ZmM3M2M3NiBsZWdhY3ktdHJ1bmsKKzc5NzkgNTA1ODE2NjZjODU0ZmIxMDkwNjgxZjFmNDk2NDM5NzZjNDVhZjdmOSBsZWdhY3ktdHJ1bmsKKzc5ODAgYmEwMDVlNGRiNGM1MzQzNmYyMzcwNmE4MmI2OThiMWE0ODVjNDFhYiBsZWdhY3ktdHJ1bmsKKzc5ODEgYzg4YjliODY4OTk1MzE0NzM4YTExNGI2MGNhNTA0YTkzMGZjMzcxNiBsZWdhY3ktdHJ1bmsKKzc5ODIgNDdmYTAwODc3OTI0MmEyNzhhYzJkNDc1OGU0OTc0NDM5N2Q4OTJjZSBsZWdhY3ktdHJ1bmsKKzc5ODMgNTk0MzhkMTlkNjAzNjc1ZmY3NTA4Y2VjZmRkYTgzNjc4NDRkZGJiMCBsZWdhY3ktdHJ1bmsKKzc5ODQgNTZiNDNhNDBhNTI4NTU3MTc1MjIzNWM4N2JiZDdmMTA1ZTdjMmUyYyBsZWdhY3ktdHJ1bmsKKzc5ODUgMzY0M2YxOWQ1Y2ExYTQwMDY5ZjMzOGM4M2JhYzk0YWNjNjYxYWE4OCBsZWdhY3ktdHJ1bmsKKzc5ODYgZGRlZGZhNTU2ODRhNjBhMTFjMzU5ZmNiMjI4MmQzODdlZGNiZjU4YyBsZWdhY3ktdHJ1bmsKKzc5ODcgNzI5MGE5MzBiNGM5NTdjNWI1NjQxOTk5ZjdkN2UxMGU1MTgwNzcwZSBsZWdhY3ktdHJ1bmsKKzc5ODggZmIzOWQyODg2NjRiNTM5ZWI0ZmEwZDExNGY4ZjE1MjczMGQyNDU0YyBsZWdhY3ktdHJ1bmsKKzc5ODkgMTQ5ZDc0MmIwOTcxY2UxYzVjMTg0ODU0OWQ3NzlhZmU4MDJiNmE5ZiBsZWdhY3ktdHJ1bmsKKzc5OTAgNGRkNTA5NWMzYjY3ZTlmNzdkODljY2E2MDJlMWMzYTk5OTIzOGRhYyBsZWdhY3ktdHJ1bmsKKzc5OTEgNjRlMmZkOGYxZDY4NDkwZGZiNTRjYTFhOTc2YWVjZThjNTczYjFkZSBsZWdhY3ktdHJ1bmsKKzc5OTIgMDY0Yzg2NzE5Y2E3YmRmYzYxN2JjY2Y3MzIwY2EwNjJiOTA3YWUzZSBsZWdhY3ktdHJ1bmsKKzc5OTMgMjQ1NmQ4ZmY5ZmE4MjNlMjY0NjhlMGJiMzUyZmIxNzI3MDRmNDc4MiBsZWdhY3ktdHJ1bmsKKzc5OTQgY2ExMjNmMjQwYmE5YzM2ODBiYTQ4OWY2NzFmZDgzY2RiOWQzOGFlZSBsZWdhY3ktdHJ1bmsKKzc5OTUgNTc2YjdkOTI3YWZiOTA5YzhkNGIzMmNmYTkwMGI5ODU2NGQ1NzllYyBsZWdhY3ktdHJ1bmsKKzc5OTYgMTM4MTUyNzNlMTcxYmJhMTM1NGYzMzYzZDg1NTFjODJkNjFlMzIyMCBsZWdhY3ktdHJ1bmsKKzc5OTcgMzFkNjYxOTRhNzdjOWZmY2I4NDY2ODA5ZWE2ZjlhYzgyZDc3MDllNCBsZWdhY3ktdHJ1bmsKKzc5OTggODgwM2JmNDA0YjY5NDY2NTU2MGMxNTdjZWJhMWM1MmNhNTVmOTU4NCBsZWdhY3ktdHJ1bmsKKzc5OTkgOTg2YzMwODc2NWFlOTY3YWFkNzVmODUwMjEwN2NmNTIzYTE1ODNmZiBsZWdhY3ktdHJ1bmsKKzgwMDAgMGJhOWY5MTRhNzA4ODc2ZWUwMmUxMTMxMDRkZjBmZDg3MGE4MWFlMCBsZWdhY3ktdHJ1bmsKKzgwMDEgOWEyMzdhNGNmM2ExZjZmODc2ZDY1MDlmYTdhNDRlZWM2YzY4OGRmYiBsZWdhY3ktdHJ1bmsKKzgwMDIgODU4MmY3NGExZDIzNWQzZDMzNzZhMDJiZGFlYmU0NWVkMGIzN2FhNiBsZWdhY3ktdHJ1bmsKKzgwMDMgYmM5ZDU0NTIzODYyODAyYjdlOTkxNWI4ZmIzYzA2MzYxNjQ5OWViZCBsZWdhY3ktdHJ1bmsKKzgwMDQgMjZlZmY2OWVkNTUyM2NiYTQ3Zjc4MmI4YTcxZmQyMTk4Yzc5Y2RjZSBsZWdhY3ktdHJ1bmsKKzgwMDUgMzI1ODQ2M2YxY2EyNzVlMjY2YjlkNjc0YjE0OTQxNjJlMTU2YWE2ZSBsZWdhY3ktdHJ1bmsKKzgwMDYgZjVkZWNjNWQ3MDczZWY5ZjI1OThkMjg2OWUyMzQ1MmRmYmY4MGEzNiBsZWdhY3ktdHJ1bmsKKzgwMDYgYzk0OThhYzk4ODM3MjU3NWNmNzAyOGI4NjM5NWI5MDBjOWIwYTg0MCBsZWdhY3ktdHJ1bmsKKzgwMDggNTQ1NGZlNDkyNWQzNjU2NWIyYjY4YmY0MmRjYWY5MGFlYjM1MjllZCBsZWdhY3ktdHJ1bmsKKzgwMDkgMzBkNTU5ODI3MDQ3OTZlMWFjNjE2MzkxZDczZGYxZTQ3OWNlZDU0YSBsZWdhY3ktdHJ1bmsKKzgwMTAgODI2ZjI4OTg1YmVhZGY1OTEwNWE0MjU2YzczZmQ3YjM4MzI1MDgzMiBsZWdhY3ktdHJ1bmsKKzgwMTEgODRkM2NjYTgxNGZiZDBkNjUzNDkyMTEzOTY4MjZhMWZkZGVkYjRjNCBsZWdhY3ktdHJ1bmsKKzgwMTIgMjBjMmI3MTUxODhlYTk3NWJlYzQ4MmMyMGUxZmEzYzNmMGU0NGY0MyBsZWdhY3ktdHJ1bmsKKzgwMTMgYzZmMDRlOTY1NTA4MTgxNzc3NWRiNGMxMDQ3YjBiMDg2NDVjOGU5OCBsZWdhY3ktdHJ1bmsKKzgwMTQgYjFkZjkzODY1NWUxNWQ1MzkwYjU2NWZlMmMzMmIzZWRjMDAxMGI4NCBsZWdhY3ktdHJ1bmsKKzgwMTUgNDcyYzhlNGNjOTc0MWZiZWJmZmFiMjc1YzYzYWViMDc3MWJiNDlmZSBsZWdhY3ktdHJ1bmsKKzgwMTYgOGY4NzFhMDMwYjhkMTQwMjk4NTkwMjNiOTY2ZWEzNTc5ZjFhN2IyYiBsZWdhY3ktdHJ1bmsKKzgwMTcgYTBjYzAwNWVjY2Q3ODdiNGIxOTU2NmI4MDcxNmY0MDkyZmJiZTAyNiBsZWdhY3ktdHJ1bmsKKzgwMTggYjU3OWM1OTE4ZjJjYjM1YjBhMTlmNDUzZTBmMDIxN2FiMjJmZGFiNyBsZWdhY3ktdHJ1bmsKKzgwMTkgY2ZjMTNmM2YzODc2OTlkZmE0YmY3NTkzNDkwNDYwN2FjMjQ1Zjg0MyBsZWdhY3ktdHJ1bmsKKzgwMjAgMzdjOTM5ZjcwZmFjMDFkMDI2MmU0ODc2NGZjNzk1OGE1YjkwZTBhOCBsZWdhY3ktdHJ1bmsKKzgwMjEgMGJiYTkxNGJmN2IyYWNhNTFhYTM3YjMxYTk2MWY3M2Q3MDI3NzRiYSBsZWdhY3ktdHJ1bmsKKzgwMjIgN2U0MjI4NzgwZmY4YzFhMzRjN2E4ZDFjYzhjN2YyNTRiMGI0YzkwNiBsZWdhY3ktdHJ1bmsKKzgwMjMgNmMwN2Q0NGE3MDgxMDhjYzVkYjQ0MGQ0ZGVkNzU0NjcwMTc2YjA5ZCBsZWdhY3ktdHJ1bmsKKzgwMjQgOThkNGU5N2RhYWMwNTQ2ZDdmZTYwZGFiMGRkN2YwNDBjYjhmODcxMSBsZWdhY3ktdHJ1bmsKKzgwMjUgYTIyY2FmMTI5MzQ1MzhlNDQ3MGNhODc5YmZmNDFiNWM5ZGU1YzQ1OCBsZWdhY3ktdHJ1bmsKKzgwMjYgNTI2MTBlY2VlMzY3YTc5MzhhMGI0MTgzOTliN2EzNzNhZGY3YjkwYiBsZWdhY3ktdHJ1bmsKKzgwMjcgNDM4MjJlNGZjMjdkNDc2NDFhNGFkYzNkNWVmNjhmYjQ3NzZlOTEzYiBsZWdhY3ktdHJ1bmsKKzgwMjggMzQ1MDljMDUyNjZmMjI5ODQxOGVmMzhkMGVkMDRhN2M4Y2VmZGI3NyBsZWdhY3ktdHJ1bmsKKzgwMjkgMmRmYzcwN2Q2ZTY4NTE5NWJlODY2ZTg4Y2I3ZDk4ZDY2MDgzZGEzZiBsZWdhY3ktdHJ1bmsKKzgwMzAgMThmZDA3ODY5YjEzYzQ4YjhiNTI3ZmI5MTU1OGIzZDMwZmZlZDBmYiBsZWdhY3ktdHJ1bmsKKzgwMzEgYjVlNjQ4ZmRlMDk5Yzk2ZmVjM2NjNTlmNmIxNmQwMTIwMzgxNDBjMyBsZWdhY3ktdHJ1bmsKKzgwMzIgOTg5ZjRmZjczNDI5MTVhYTBmOGVhYzZmZGIzNjUxYmU1OTJjYTE0NiBsZWdhY3ktdHJ1bmsKKzgwMzMgZmE5ZmFkYTkxNmI0NTMwMzlmOTkyNzBiZTFiNjhkNzY3M2MwYWEzMyBsZWdhY3ktdHJ1bmsKKzgwMzQgNDMyOWU0MDc3Y2YzOTE1MWNmMmJjNjJiZWQwYzNiMjI3YWQ2MjM4NyBsZWdhY3ktdHJ1bmsKKzgwMzUgZWYzYmE4Yjk5ZGEyZWZmZmJhM2NmZmI2MDk5MjIyYmNkOWUzZWI5ZiBsZWdhY3ktdHJ1bmsKKzgwMzYgMWVjZWQxYWFhZDVhOGE2NWU2MzMwZDBiNWJhZWMyNTI3OGM1OWFlNiBsZWdhY3ktdHJ1bmsKKzgwMzcgOGVjMjk4YjI1NWEyMGI2NzBhM2ZhZDgyZDc4MzNlOGE1YTI5NzE2NSBsZWdhY3ktdHJ1bmsKKzgwMzggNGRjZjI2ZmU0ZGE1OTUxYjA5OWY1ZjBkYmViZjI4ZTBhZWIyYmU5YyBsZWdhY3ktdHJ1bmsKKzgwMzkgM2YzZDJkNDc0YWNhMGY1Y2ExM2E0NGY3MWEyNjBjYmU0ODQ2NzBlNSBsZWdhY3ktdHJ1bmsKKzgwNDAgZjFiMDM4NzU4YmRhOTNiMzNlNWM4Y2ZhODM5MTNiYWM1MWU5ZTMzMCBsZWdhY3ktdHJ1bmsKKzgwNDEgNmU5NDQyNzlhMzE0ZjMwMDQwNmRmMGJkMmVmZjNjZTI3MDY2NmZkNSBsZWdhY3ktdHJ1bmsKKzgwNDIgNWZmYWI2NWY4ZDA1MDk4OGI5MDY4NzQ2NTM1ZjJlNGY1ZjY4NTkyOCBsZWdhY3ktdHJ1bmsKKzgwNDMgMTlkNGEyODc0NjQ1NGMzNDExYzBmNjViM2RkMjViMzhiZmE4NTcxMCBsZWdhY3ktdHJ1bmsKKzgwNDQgOTMyY2ZjNWZjMTA0YjI0ZDExODg4YjllYTk0NmMzOTdkZGE2OGQ4MiBsZWdhY3ktdHJ1bmsKKzgwNDUgMTM5YWIyMWQyNjI5YmU0OThmMTg4Y2NmODUzMDM5M2I3M2NjYWUwMiBsZWdhY3ktdHJ1bmsKKzgwNDYgODE4Y2ZmZjNhYTVkOGJjYzFiNTA2MDJhY2Q2Y2EzZTc1M2UzMWM4NyBsZWdhY3ktdHJ1bmsKKzgwNDcgMTFlMmUzZmY5ZmM3YjE5ZWJjNDBiOTQwODU5OWVkNTUyMjM4ZDVkOCBsZWdhY3ktdHJ1bmsKKzgwNDggM2U2Nzk1MzBhZmM5ZWM2NGFjZWNiZTBlNzI2YzY2ZjA5Yzk2YTYxMSBsZWdhY3ktdHJ1bmsKKzgwNDkgYjIzMTg1NWE5NDc0NGRiZGUyMzg0MmRiNDc3N2Y2NWI2NWUwOGM4ZSBsZWdhY3ktdHJ1bmsKKzgwNTAgYmY5ZjEwNGFiZTc4YTU1YTlkZTZkZjE1OTc1MzkyYjM2MTY4ZTA4OSBsZWdhY3ktdHJ1bmsKKzgwNTEgODRkN2NjNWU2M2NkYjc2NWNkZTBhMTlhOGY3MzJmZDUxODVmNGVhZiBsZWdhY3ktdHJ1bmsKKzgwNTIgNmE5ZjI2M2UyYjQ4Y2FjYzhiODdlOTM2Nzc5ZjFhODI4YjcwNjUxZiBsZWdhY3ktdHJ1bmsKKzgwNTMgYzdkODEyZTRhZjBkM2Q5M2UzODQyMGMzMDRkZTVmMWJlZjZkNDhlYyBsZWdhY3ktdHJ1bmsKKzgwNTQgNmM3MmI5MWM4YjgzZDFhYzNiNDUxZjU1ZTE1NzkwMjgxMTE1ZTIwNyBsZWdhY3ktdHJ1bmsKKzgwNTUgOTM3ZDllYzJiNTYwNTE3YTJkYTJmNDJjMmUwYWE5MTg1YzNiMWM4NCBsZWdhY3ktdHJ1bmsKKzgwNTYgNDg2ZDVlOTg5MzhiYmE0ZDRiZmUxNDQ2Mzg5ODE0NzA3M2Y3ZTViZSBsZWdhY3ktdHJ1bmsKKzgwNTcgY2U1OTk3M2FjY2RlN2UwN2QyOWFjZjRmNzQ1NjNjM2M2ZTA4Y2U1NCBsZWdhY3ktdHJ1bmsKKzgwNTggN2UyYWQ5ZTMyZTBkNWRkNTNiOGRmNzIzYzBkNWQ2OWM1NzIyZjZhZCBsZWdhY3ktdHJ1bmsKKzgwNTkgODdkNWQ3ZmE4ZDA3ZTZiOTk2NjQ1ZmY5MmI2NjZkYTA2ZWMxY2QxZCBsZWdhY3ktdHJ1bmsKKzgwNjAgZWRiY2ZlZDdmYzdiZmM4OWU1ZTljYTFhZWFlMTA0N2UyZjQ3MTRmMyBsZWdhY3ktdHJ1bmsKKzgwNjEgODVjNTA0M2M5MzE2NzdlY2FiZTU4NmU4NGYwYzU2NDE1MmZkNzVhYyBsZWdhY3ktdHJ1bmsKKzgwNjIgNTdkYmRjMmIzMDIyNmYxMDNhMDFhZjdhM2U1ODlkMjg1NDE1MzZiZiBsZWdhY3ktdHJ1bmsKKzgwNjMgNzg0YmFmYjQ3ZTFmNmRiZjc0YmUwYjY4ZmE4OGFjMTEyZmVjNWMyNiBsZWdhY3ktdHJ1bmsKKzgwNjQgNmE0OGE3ZTcxMWQ4NmNhMjJhYWViNTA2MTI3MWFiZTAyOWJiMTdkMCBsZWdhY3ktdHJ1bmsKKzgwNjUgNTNjZGY5NGI2NTJiODNlNTY1MmY1YzcxMGU5ZWIzNGZkZDM5ODI4ZCBsZWdhY3ktdHJ1bmsKKzgwNjYgNzk1Y2E5NzVkOTZmODhlMjgzY2JkZjY2YmM1OWMzMTAyMTFhOGJmNCBsZWdhY3ktdHJ1bmsKKzgwNjcgZjNmNjU2ODdlNDI2MGRhZGY3ZGRjMDlkMWU2ODExMDc2MzdhYWI4ZCBsZWdhY3ktdHJ1bmsKKzgwNjggZGE0NzVlMTA3YTY4Zjc2OGRjNGRhMzFhMGJlODE3NTBhOTNmNTg4MiBsZWdhY3ktdHJ1bmsKKzgwNjkgZTNkNTI1ODJkMzYwNzgxMGQ1ZTNkOTJhZmM0MDQ5ZGRkNzc4ZDgzMiBsZWdhY3ktdHJ1bmsKKzgwNzAgNDUxYzdjY2YzNmI2N2YyZDFhZjhmNDRjMDA2NjNlYzYxNTNhMzA2NCBsZWdhY3ktdHJ1bmsKKzgwNzEgNGM0NjIxYWE5ZTc2NzdlNjEwOTYzYzNjZDMwMjAxYjIzNmQ4NmExNCBsZWdhY3ktdHJ1bmsKKzgwNzIgYzVhNTY3YWYxM2VlN2NmM2NhOTA4ZGRkYWY4Y2I3M2E3MDExNWJmNSBsZWdhY3ktdHJ1bmsKKzgwNzMgMmUyYmJlOTg1NjIwMjIzNTRkYmQ1OWQ1MTBiY2U2NjFkMTE1YjE4YyBsZWdhY3ktdHJ1bmsKKzgwNzQgNTUxNjkxNWZmZWU3ZDc4Mjc3MWIyZjMzNzc2OGQzMDIzN2UyMThkOCBsZWdhY3ktdHJ1bmsKKzgwNzUgMWYyMDZjOTFkYWVlMTgwMGY5M2M5ZWFjMzU5MzUyZTNiOWI4NTJlOCBsZWdhY3ktdHJ1bmsKKzgwNzYgYjVlNTFhZTlmODMyZTVhMzk4NjBlODQyZDg0MThhOWEwN2MyMGI3NiBsZWdhY3ktdHJ1bmsKKzgwNzcgZDk1NGRjMjQzZWIwN2FhYzUzZjk2NTFjNzFiMDg4MzBjYjMwNTBiYyBsZWdhY3ktdHJ1bmsKKzgwNzggYTYxMDIzYmNhMGE5NzQzNzlkYTcxNTRhMzMwYTE0NTg3OTM2ZDA1ZSBsZWdhY3ktdHJ1bmsKKzgwNzkgMDI5NGE2N2JmYmRiNDM3ZmFjYWM0MjM4ZmRlNTIyODllMWNmZmZlYSBsZWdhY3ktdHJ1bmsKKzgwODAgZjQzNTU5ZDIzYjNkNjhlOTVlYjYxYmEzN2ExNzFlYmQwZmVjZGMwYiBsZWdhY3ktdHJ1bmsKKzgwODEgODU5ODBlYTVlODA1Y2Y5OTBkMjgzZGU4ZGY1MjhjZTI1ZmZlNDQ4NCBsZWdhY3ktdHJ1bmsKKzgwODIgODlhZjViZjhmODczMjA0N2NkNmI5ZjI2MWE3OTdlOWEyNjA1YWE1YiBsZWdhY3ktdHJ1bmsKKzgwODMgNDk1ZmJkZTY0YTczYjVkYjZiOWQyYzRiYzNiOTA5MjVkMGJlZjljYSBsZWdhY3ktdHJ1bmsKKzgwODQgY2JiNGUzY2YwODZlMjIxYWQzZGZiNTQ0YzIyMTkxMjAyMzYzOWFhNSBsZWdhY3ktdHJ1bmsKKzgwODUgNzllNDljYmNlMmVmZDJmMGM2YjljMzg3MDlmMGNlMGIzMjAyNzNlZCBsZWdhY3ktdHJ1bmsKKzgwODYgZjI4ZWVhMDJjZjk0NDYyYmI5OTVmYWIyNDkzMTg5NjQ4MDgyZDgxYSBsZWdhY3ktdHJ1bmsKKzgwODcgMTBlOWNmYTAxMGYwODk3NjFmZTc5Yzk1Y2Q3Y2MxM2Y2NzBlNjU1NCBsZWdhY3ktdHJ1bmsKKzgwODggNWVkM2EyMWNjMTIyOWMxNzk4ODUyNDUzYzFlN2ZkNGQ5MWI1MzFhMyBsZWdhY3ktdHJ1bmsKKzgwODkgOGQ0MDVmNzEyODJmOTZlMDE2OGQ4NjBkZjEyN2E1MDEyNWJiMGU4NSBsZWdhY3ktdHJ1bmsKKzgwOTAgMTkwZTM1YmJjMTVhZTIzMjc4N2RlN2IyMDk1MzFmZDIwMGM2YjI0NyBsZWdhY3ktdHJ1bmsKKzgwOTEgNzI1NGVlMmE4YWJkYTcwODlhZDE0MGNlZWYyY2U2ODQ4ZmMxZmExNCBsZWdhY3ktdHJ1bmsKKzgwOTIgM2JhMDhkNmU5YjdmMjg0MWIyODM1NGUwMzY4YzA4NjJlYmIzNzBjMiBsZWdhY3ktdHJ1bmsKKzgwOTMgYmFlMmMwMTg5Zjg1OTRhOGEzNjY2MjM3MzY2NzBkMDdmNTU3NDg5OCBsZWdhY3ktdHJ1bmsKKzgwOTQgNzA4NTU1NzQ1MTZiODZiOThjNTE1OGRlYTFkMTE0MjZjMmFkMGFkMyBsZWdhY3ktdHJ1bmsKKzgwOTUgZmRkMWUxYTUzMGFmOGMwN2Q1YzI3MjJlZWFmMmIyNjE5MDc2M2M0OSBsZWdhY3ktdHJ1bmsKKzgwOTYgN2ZkYTc4NDFkYjkxODJmOGU3ODQ3YWQyMDQyMTUyNGU3MWE1NGFiNyBsZWdhY3ktdHJ1bmsKKzgwOTcgMDU1NmVhNjg3YTk3ZDgxODEwNTk0MGFjZGU4NmZlYWE3YzFkMWYzZSBsZWdhY3ktdHJ1bmsKKzgwOTggZTE0MTNmYTY0YjgzMWI3NDVkZmE0NWM5Nzk3MjNjMjZjM2MxNjRiOCBsZWdhY3ktdHJ1bmsKKzgwOTkgZjhlNDUyYTFmNjQ0ODNiY2Y2ZWQwYjNjZDM0YjA1Y2E1MmYxYmI1ZSBsZWdhY3ktdHJ1bmsKKzgxMDAgZmE2YzkxYTVmNDFiNzgzODc1NWUzMzc4ZjY1NjQ2OWVkMjZkOWRmMiBsZWdhY3ktdHJ1bmsKKzgxMDEgMzJiYWZjOWU5YzRmYzM2YzgwOWFmNjMwZjI3MGFiNDgwYmQyNzQ0ZCBsZWdhY3ktdHJ1bmsKKzgxMDIgYWNmY2UwMTVkZmRkMzZkZWUwYWFhMWI1YTFjMGNiOWVmNzYwNDgwYyBsZWdhY3ktdHJ1bmsKKzgxMDMgNjk2ZTc1NDA2NGMzN2YwYjY5MzFiYjFhNTBiMzk1ZDg1MGZjMWRiMiBsZWdhY3ktdHJ1bmsKKzgxMDQgNGQxMmU2ZTljMjdkMWU1MzY4YTc0NTBiOTMxOWRiMzU2NzVmYjMwZCBsZWdhY3ktdHJ1bmsKKzgxMDUgOTkyNDgyNWRhNGIzYTY4NTAyZTAxMDcyZTc5MjAzMWI2YmFiMmVkMyBsZWdhY3ktdHJ1bmsKKzgxMDYgZTZhMjMzZmM4YjliNDE0YWQyNjgzODQ2ZjEyNjVhNTJjZmJkN2M1YyBsZWdhY3ktdHJ1bmsKKzgxMDcgOGFmOGVlNzk3YzA5NTJjZjcxMmY4MzY4NjQ5ZGJiNDAyMWQ1NjI0YiBsZWdhY3ktdHJ1bmsKKzgxMDggOGM1NGM3Nzc2NzQ0OTBlODNiYzNiYzA3ZGI4MjFkYWRiZmI1M2NmZiBsZWdhY3ktdHJ1bmsKKzgxMDkgMDBmYzQxM2EzYjhiYzc2ZWIyOGU1NDcxOTI0NDliMzJmM2I3YmE4NSBsZWdhY3ktdHJ1bmsKKzgxMTAgYzY5Yzc1OWY0MzY2YzU2MDU1ZDA0YWI4ZGIyZGFlODAxNWFhN2MzMiBsZWdhY3ktdHJ1bmsKKzgxMTEgZWM5N2Y0MWM3YTA0ZWI0M2Q4OTRlNzVkNDEwYjE4NGNkYTQ4YzJjZCBsZWdhY3ktdHJ1bmsKKzgxMTIgYWNjNTVkNzA0Njc0NzhlMGVlZTg0YWM1OTQyNDg4ZDk0NTU5NjAwZCBsZWdhY3ktdHJ1bmsKKzgxMTMgNzViYTY0YzU1ZjJlMTJjOTUwNGNkZWFiNTYxZGVkZDM4ODQ0YjQwMCBsZWdhY3ktdHJ1bmsKKzgxMTQgMTdjYTdlNGU4ZmQ2ZTgxZmQ5ZjQ4ZWMwNWM3ODdlZTY4YjBmZDc4YSBsZWdhY3ktdHJ1bmsKKzgxMTUgZjkxNDM5ZDhmNjZlNDcyNmZmMWYyMTAxOTg3OGE4MGQ4NjdhYzY2ZSBsZWdhY3ktdHJ1bmsKKzgxMTYgNDM3MDU2NDdmZWI5Mjk3ZDVlZTJmYTUyYWFjNjM3ZDk2NGZmZDU2NCBsZWdhY3ktdHJ1bmsKKzgxMTcgNTdhMjYxZmE1OTZjNmYyNjRiYzdkZDc5MDJhNDUzOWU3NjI5NWRmNCBsZWdhY3ktdHJ1bmsKKzgxMTggNjVlYTQxZjJkMzRkODBmNzc1ZTkxZmNmZTA3MmE5ZjUyMTQ2ZjU3ZCBsZWdhY3ktdHJ1bmsKKzgxMTkgMGVmNzAyYjgwNDZiYTZmYTM5OTE4NTdkNDc0Y2VmNWI1MmIwYjgwNyBsZWdhY3ktdHJ1bmsKKzgxMjAgOTY5NDliOWY0MmNiOTAyNGQ1Mzg5YjI5OGQ1NWFlNzg2MmRjZDUyYSBsZWdhY3ktdHJ1bmsKKzgxMjEgN2MyMDlkYWJkOGM4MDAwMmNmNmVlZmVkMDQ2MWYxNDQ4MDgyOTNiZiBsZWdhY3ktdHJ1bmsKKzgxMjIgZTU5Mzc0ZTIzZmRmNmU0NjU2YmM3NWQxYTkxMzFiMjAyNjVmNzc2ZSBsZWdhY3ktdHJ1bmsKKzgxMjMgYzYzZTI4M2JiMmU0NjYxNDhmN2MxYWY1NGQwNmMwYzQ5ZDBiZWZkNyBsZWdhY3ktdHJ1bmsKKzgxMjQgYjQ5ZDgwMzdhNWNiYWUzZjQwNGM0N2Y0NmY0MzA5OTI2YmMwNGRhYiBsZWdhY3ktdHJ1bmsKKzgxMjUgMGNjOTdlNzVhMzYxMzkyOWY0YzYwOTU2MDVkODFkNTkyMDM3NDEyNCBsZWdhY3ktdHJ1bmsKKzgxMjYgMDdlMWFhYjIzMTE1MzQyM2VlZmQ1NTAzNTY1YjZiYjhlM2QxOGIzZCBsZWdhY3ktdHJ1bmsKKzgxMjcgZDQ1ZGM3ZmU0MmFmOWUzZTk4NjE3OGY3ZDBmYWM5N2ViZTRhM2FlNiBsZWdhY3ktdHJ1bmsKKzgxMjggOTVkNmUxNzk1NWVmYzhiYmQ5MjRhNDY0NTUyZTlmYzUzZWEwYmE2ZSBsZWdhY3ktdHJ1bmsKKzgxMjkgNjAwOWQ1MzkwNTg0OGNlZjkzOTFkNWQyZTBmNzg0MDM5ZjZiMzAwNCBsZWdhY3ktdHJ1bmsKKzgxMzAgMzA5NjAyYzg3OTI5MjQxNjljZjA3OWM5MTkzNDFiMTIwNzU0ZTRhNyBsZWdhY3ktdHJ1bmsKKzgxMzEgOGUxNGQ1NGE2NDE5ZDI5YzlmM2EzZmYwMmIyZjI3ZTMxODMxYTUzMyBsZWdhY3ktdHJ1bmsKKzgxMzIgMGI1NzQyZDMxODlhMjQwZWU0ZTM5NzM5YWVlY2I3MDdkYWEzNGFhYSBsZWdhY3ktdHJ1bmsKKzgxMzMgZDE3NWNhYzU1MGI5OGE2MThlNDM1NTcyYWVmNTUzOWI4NmVjOTEzNyBsZWdhY3ktdHJ1bmsKKzgxMzQgZGRlZDQzOWI3YjhhYjE2MTIxOWI3N2M3MWU3MDhlYTc4ZTY2OTIwMSBsZWdhY3ktdHJ1bmsKKzgxMzUgMTI2NWNhNDRmMDRiOWJjYzlmZjk5ZGRiOWNlMjg2ZDA5MmRiNzViNSBsZWdhY3ktdHJ1bmsKKzgxMzYgNmY5YTJjODc0MDE4ZWQ4YmZkYWUwNDJkYmZiYjVlNDk4MmYwNDA3NSBsZWdhY3ktdHJ1bmsKKzgxMzcgZWZkZWU3ZDQzMjcwNGQwN2EzNzU0NWRlMGMwNWQ0YmVlZjVmNGEwMiBsZWdhY3ktdHJ1bmsKKzgxMzggM2RiNzU0YWJmZjM2MmYwOTNlZDhiODFmMzM4NGZjZTdjOTEyZGNhMCBsZWdhY3ktdHJ1bmsKKzgxMzkgNmJkM2EyY2VjMzUzMGZlN2ExMWQxMmJlNjU1NzQwNzg4ZjdiY2M3ZiBsZWdhY3ktdHJ1bmsKKzgxNDAgMTgxNDk5ODBlY2U5ODM2OWU3Mzc0YmU2MmFlNThhNTBiMWU3ZTIwNiBsZWdhY3ktdHJ1bmsKKzgxNDEgMWRmYTRmMTdkOGZmZjYzMWRlMGQ3OTAyNjBkNDdjMTA1MDg1ODQ1MyBsZWdhY3ktdHJ1bmsKKzgxNDIgYjViYmU1MjIwZjZiYWE5NjEzMWM5MDY2NGZmODBjYmY3NTNlNWJkYiBsZWdhY3ktdHJ1bmsKKzgxNDMgMzQ3MDY4OWE5N2Q3MmEwYWVhYzAxNzM5MGQ4NDM4MTM3OWMwZTMzNiBsZWdhY3ktdHJ1bmsKKzgxNDQgNGE1ODQ5N2MxNGE4MTY3YjMxY2Q5ZDU4MGYxN2EyM2FkMWIyMjk0ZSBsZWdhY3ktdHJ1bmsKKzgxNDUgNjc2NzlmMmVkMjE3NjNiMTQ2Zjg0MTI5OTk2MTc4MDBlNDU5YTA2MCBsZWdhY3ktdHJ1bmsKKzgxNDYgODUxMzRiOTdhZTRkNTQwNzA2YzM2ZTdkZmRkMjA5OTIwYWJhYzg3YyBsZWdhY3ktdHJ1bmsKKzgxNDcgYzM1MDFhOWQzYzIwNTlmMWVhOGY5YTE0NWMxNDVjMjM2NDI2N2IwNSBsZWdhY3ktdHJ1bmsKKzgxNDggZDY2MzA0OTYzY2E3ZmU5MTY4MGNlZDY3ZmVhNzVmNThjOWVkNTA2YyBsZWdhY3ktdHJ1bmsKKzgxNDkgMTkyNmU2NDkyZDNmNzhkNTUwYjVjYmY4MTIzNTg0OGYyMWI2YTRiOSBsZWdhY3ktdHJ1bmsKKzgxNTAgYTlmZmRmZjA1NTdmOTVlZjY1OWQzNjk1ZjFmZTM3ZmRiMzI4MDU1NSBsZWdhY3ktdHJ1bmsKKzgxNTEgZTVkZTcwNzMwMGUxN2YwNzU0NzNlOTc5Mzc2MTlkMWMwZmNhZjBlZiBsZWdhY3ktdHJ1bmsKKzgxNTIgZmQ2YWNhZDdjYzdhOTdhNGRkNDFiNTZkNzk3YjRhZmM0NjJlY2E3NSBsZWdhY3ktdHJ1bmsKKzgxNTMgZWY4YTE1OTAyYTQ4N2FjMThjMzFjOWM5OTcyMTQ4MTZhNGFjZmIwNCBsZWdhY3ktdHJ1bmsKKzgxNTQgNmZkYTFlNmUyNjE2Y2I1N2IyYTBhMDFjNTMxODZhMTczZTA0ZmEyYSBsZWdhY3ktdHJ1bmsKKzgxNTUgNjRlNjExNjU1ODlhNzkzMTlhZDg5NmFjZjQ0YzdhMjkzMmI0NGU0NiBsZWdhY3ktdHJ1bmsKKzgxNTYgZDU5MTFjYThkNGViM2FmNGNmYzM0ZjZkN2M5NDkwMzVmNDYyYjEyMiBsZWdhY3ktdHJ1bmsKKzgxNTcgMTJkNjRjZGJhYWEyM2UyYzM3NDJhNTUwOWUzMjcwOTM2MGJjMGEwNSBsZWdhY3ktdHJ1bmsKKzgxNTggZDg4Y2I0ZDI2ZjEzZWQzODI1OWM5ZmQ2YjY3MGVkOWJmNDY4YjMyNiBsZWdhY3ktdHJ1bmsKKzgxNTkgZWE3MmJmZTM5NWJhMjE2MWVlOWE1ZDU3MDMzZjZkNjQzMTdkYTg3MiBsZWdhY3ktdHJ1bmsKKzgxNjAgY2QxYWU2MmVkMmNmZmMzYjhhYmUwYWZmYzQ4MmM1M2IzNGYyZmRlOCBsZWdhY3ktdHJ1bmsKKzgxNjEgYTA4MzFkZTIzNThjMzBlMjI4MjQyNTBkZDRiMDNiMDUyOTU4YmM3NyBsZWdhY3ktdHJ1bmsKKzgxNjIgMDlkODdhZDc1Mjc4OTg3YTlmNTVjYjllNmIzYTZhZDA1ZWExMTZjZCBsZWdhY3ktdHJ1bmsKKzgxNjMgMjA3N2EzMmQ4NThlZjY1MjVjZjJkNjAzMzgxNWI5MzZlMDRmZDI0MyBsZWdhY3ktdHJ1bmsKKzgxNjQgOGI3ZmFjZTliMWE3ODJhNjk5OTFhNDBlOTEyMmRmMmUxMWIwZGRiMCBsZWdhY3ktdHJ1bmsKKzgxNjUgZTc4ZDFlMGVjYzU5ODdjMjNjNDc1ZjNlNjI3NGMzMzA1OWU0NmUxMSBsZWdhY3ktdHJ1bmsKKzgxNjYgNTJjMTNmMTM4OWVmYWQ0ODk5YjE5OTBjZTBkZTRlMjZjMGU3NDNkYSBsZWdhY3ktdHJ1bmsKKzgxNjcgNGU4MTdiMmFkOTkxMGJjOTYwMzZmMjk1NWI2MjY3NzFhN2E0MmM5YyBsZWdhY3ktdHJ1bmsKKzgxNjggMzgzODNhZGEzODhlOWEwMjQ5MWY5ZjdlNWEyMmVlZWI0ZDg2OWFjZSBsZWdhY3ktdHJ1bmsKKzgxNjkgNDQyOGYxMDg0YjZjNjcwMzhlYWY5NDNlOGMwYTZkYTc4NjllZWUyNiBsZWdhY3ktdHJ1bmsKKzgxNzAgYTk3ZmRlMjgxOGZiZTQwZjMxZDc3MGIwY2ZiNmI5MjJjMWEwMjgwMCBsZWdhY3ktdHJ1bmsKKzgxNzEgMDEwOTA5ZGZjMzNlMmUwNmMyZjZjZDBiODYxNjQzYjUwMzY4YTMzZCBsZWdhY3ktdHJ1bmsKKzgxNzIgMDJlYTlkMDIxNDI3NDc2MWZlZGIyOThlMzQzY2M3MzNjM2UwYmIxNSBsZWdhY3ktdHJ1bmsKKzgxNzMgOWI2MjFhYzA5MjEyMWMyNTZjZmYzNDU0MTdhMTg3ZTE4YzBlOTBmZSBsZWdhY3ktdHJ1bmsKKzgxNzQgODhiMGIyYTNhYWI1NmE1YTk5NzJlYTAyNWZmZGJhOWVlNzM2N2YxZiBsZWdhY3ktdHJ1bmsKKzgxNzUgYmE4NjBkYzBhNTg1MTRmMTY5YzgwZTEyZTc0ZTI1MjRkZWFhZTM1OSBsZWdhY3ktdHJ1bmsKKzgxNzYgNzZmZDUyODFmOThhN2I4ZjgzOGQzODlmODk2MDJhMDU0NmJkMGY3ZiBsZWdhY3ktdHJ1bmsKKzgxNzcgNjBmY2E0NzgzNzkzNTZmOGQ5M2RjNGYyYTFjZTIyNTFlYmNkZTc4NyBsZWdhY3ktdHJ1bmsKKzgxNzggM2ExYmIxYzk4YzE0MGU4YjQ4MjQyOTFmMWMxNzJkZTFmMjZkNTMyNiBsZWdhY3ktdHJ1bmsKKzgxNzkgNTc2NjU3MDM4MWYyNGFlOTc5MzI4MGNlNTE0ZmU4NDUxMTVkYjVhYSBsZWdhY3ktdHJ1bmsKKzgxODAgMDNkZDFkZWQ1Y2IzZTg2NGU0ZmUzMDBjNWQ3MDdhOWFmYmNiY2M2MyBsZWdhY3ktdHJ1bmsKKzgxODEgYzY2MjM2YjdjYzZjYTRiNGMyYzRiYWIxOGFhZTFjZDI2N2UwZmJhMSBsZWdhY3ktdHJ1bmsKKzgxODIgYmEwOWI0MDdhMGJiOTNmNjRhNTU2NTBkMWFjYzk4NzY4M2FjOTk5MyBsZWdhY3ktdHJ1bmsKKzgxODMgZjhiYmQ3MWZiODE5YTU0MzliZDcyMWI5ODAzYjcwNGY1OTI3MmExMiBsZWdhY3ktdHJ1bmsKKzgxODQgNDA0YmEwMTdhZDQyN2I4MDAyMjIyNWU5MDU5YWNhNzg0ZjQzNDAzMSBsZWdhY3ktdHJ1bmsKKzgxODUgOTljZDM5ZjZhNTJkYjEzMGRmMjgyYzFiNzJmOTJhOWVhYjdmZDBhNCBsZWdhY3ktdHJ1bmsKKzgxODYgNjcxODMyNDcwYWExMTM0NzZlZDU0MGYyYWYxYWU0ZTM4NThiNTkzNiBsZWdhY3ktdHJ1bmsKKzgxODcgZjFkYTI5NDc3MmNmMmI1ZmQ5ZmUzMTZlYzhlY2I3ZWY4YmNlNzRiNSBsZWdhY3ktdHJ1bmsKKzgxODggZmIxNzBjZTgyOTUxMjkzNzRkNDNjMjg5YjVjNmViNzFlZGJhNGE0YyBsZWdhY3ktdHJ1bmsKKzgxODkgNDMzYzllN2VkYjYwODkwN2ZiZDkzOTc2ZDU3MWUwY2E4ZWNmZmJhOCBsZWdhY3ktdHJ1bmsKKzgxOTAgZWNlZTU1YmFhY2UzMDg5NmYxYjJlYjFkM2QzN2FiYWM0OWYzYzBkMSBsZWdhY3ktdHJ1bmsKKzgxOTEgZGVlMGE1OGE5MTMyMjI2ODA4YTM0ZGE4NWRkZWI0MWYxMzZlMDM4MCBsZWdhY3ktdHJ1bmsKKzgxOTIgMzc2MzVlZWEzYmNjODM5N2RlNDE4YTQyYWYzODdhY2Y4ZDgzZTFiMSBsZWdhY3ktdHJ1bmsKKzgxOTMgY2U2NGE4MTM5MjE2NjYwNTVhOTMwYjUyNDk0YjExMTFiNGQ1M2VhYSBsZWdhY3ktdHJ1bmsKKzgxOTQgM2M2NzQzNmEyOGU2MWIwMGM1YmQ1MDY0M2YzNThlNDhlNzI2ODRmMyBsZWdhY3ktdHJ1bmsKKzgxOTUgNTVkZmY4MTY5Y2Y1NGMwMzFhOGQ4NDYxMTg5OGNhMzM4YzI5Y2Q4NCBsZWdhY3ktdHJ1bmsKKzgxOTYgM2IzOGU4ZGI1ZjIxZmRmZWNkNjQ3NDBlNTg3MmY2ZWQzZGZkMzk5OSBsZWdhY3ktdHJ1bmsKKzgxOTcgNjEzYmQyMzdjZDU1YzUyMTE0YzljNjA1YTRhYmY4M2RmMmE3OGUwYiBsZWdhY3ktdHJ1bmsKKzgxOTggMTM4YjE3NmVjNDBmNDNjNGMwYTVjYzQ0N2Q2NTUyMjY4YTc2ZTkwOCBsZWdhY3ktdHJ1bmsKKzgxOTkgNmM5NzM2ODY1NjA4OTA1NWQ4YmJmNTVhMzY1ZDJkNWVmZDJhYWExZiBsZWdhY3ktdHJ1bmsKKzgyMDAgYmVlZTM1MWYxZjcyYWVmZjU2MWVkZmY4NjZhOTI4MWZiOWRhNjE3YiBsZWdhY3ktdHJ1bmsKKzgyMDEgZjlhZWE3MzhkNDM1MWVkMTQwMTg1MDRmMDYxOGVlOWMxYTE3NTZjZiBsZWdhY3ktdHJ1bmsKKzgyMDIgOWEzYjExNWFhNDkxOTBlZmZkYzBiN2U5YzllYmUzNzU1ZGIwYmY2OCBsZWdhY3ktdHJ1bmsKKzgyMDMgNTdhN2JhMTQxMmUyNjVlYmIzMDIxNzRjNDA5MTZlNjczZjk5MDJkMiBsZWdhY3ktdHJ1bmsKKzgyMDQgZTBkYTNkODlkNGI2NWZiYWI1ZDdjYjMzZWFkMDkxMDgxMWFmMGFjZCBsZWdhY3ktdHJ1bmsKKzgyMDUgMDRjMjgyNzRjMjgxODEyMDk4MDQwODc0ZmIzZGIyOTk1OWY5NmMxYSBsZWdhY3ktdHJ1bmsKKzgyMDYgNjE3ZjIwMzM5NGU3M2Y4NWViMzA1ODQ4YjU5YzQ4OWI2MWE3NTU1NiBsZWdhY3ktdHJ1bmsKKzgyMDcgOTk2MDc5NzQ0NTY2NWQ2MmJjODlkNWMyNjQ4NDE3MzBmNjMyZTEzNCBsZWdhY3ktdHJ1bmsKKzgyMDggNzU3NjJjNjcyMDBjYWY3NzE0MTZlYzQyMjljODViY2Q4MWQ3MmM4OSBsZWdhY3ktdHJ1bmsKKzgyMDkgZjAyN2RkMGE4NWU0ZTVlZGNiMGExZGQwNDlkMjM3ZTZiMzkxYTVkZiBsZWdhY3ktdHJ1bmsKKzgyMTAgOGY2Y2M3MTdkODE3YzA3YmZhN2M3MzY0ZjZiNjBjZjk5YWRiN2ViNyBsZWdhY3ktdHJ1bmsKKzgyMTEgYTk0YjBhMTIyYzk4NjkzODZkM2JmNWY4ODhhZjY2NzIwYjFhZjUxMiBsZWdhY3ktdHJ1bmsKKzgyMTIgNjM0NzI4ZDhiYzk4Y2ViYjU3ZTUwYzkxYmJlMDE3YzJlM2Y5YTBlZCBsZWdhY3ktdHJ1bmsKKzgyMTMgNGRjYTUzMjllOGZjNmRkMzU2ZTdmYTU4MTVkMjA1MmIyZjk0Y2EzZSBsZWdhY3ktdHJ1bmsKKzgyMTQgZDBjNmI0OWQ3MTAxOGUzNzQ1YjA2MDZlZDFjNDIzNGZhODUwYjc5OSBsZWdhY3ktdHJ1bmsKKzgyMTUgYzI5ZmMxN2Q4ZTRmZDQ5NzgzYjk5ZTdiNmVmYzEzZjEzNDlkYzNiZCBsZWdhY3ktdHJ1bmsKKzgyMTYgNzFlMTEwODJkNzMyMzU0NzNmMTU4MmE1ZjEyYzY5NGJiMWUwOGZmOCBsZWdhY3ktdHJ1bmsKKzgyMTcgNmEyMThmYThiYTliOTg3NGQwZWRjZTRiZGNjZjg3ODgyYWJhOGFjYiBsZWdhY3ktdHJ1bmsKKzgyMTggMTM4NDYzNzkzNDdkYTUwZTgxZDc5YTU3ZTNiMzBmODcyYjRkM2NjZCBsZWdhY3ktdHJ1bmsKKzgyMTkgODI3YTJmM2U2NDgzMmFhMDA3ZjJmYmYwZmY4ZTI2Zjk2YTc5MGU1YiBsZWdhY3ktdHJ1bmsKKzgyMjAgYzYwNmRkNjE1NDRhZTA3YjE5Nzc1YzUxZDllMjJmMjk2ZGE4YmQ0OSBsZWdhY3ktdHJ1bmsKKzgyMjEgZWE4YTBiMDkwOTA4YmQ0ZDY4YWY5MTRhZWNiZGUyMTExNzgzZTA4NCBsZWdhY3ktdHJ1bmsKKzgyMjIgZTIyZWVhNWQxMjZkOWI0MDg4OGI2NDMwMzdmM2ZmM2Y0NGIyMGM2OCBsZWdhY3ktdHJ1bmsKKzgyMjMgYWJlODYzNDQ2NmIyMzZjMTVmMzhiMzM0NjkwOGI0ZTY5NDhiYzU5MSBsZWdhY3ktdHJ1bmsKKzgyMjQgNDllMGUwNzJkOWNhYjU5N2M5ZmZhYThlNzgyNWI2MGM1ZDE2NjA1ZSBsZWdhY3ktdHJ1bmsKKzgyMjUgMWMzNGEwY2U3ODU4NTczYjJlMzA3MDhiY2NmNzZhMjlkOGI2MmU5ZSBsZWdhY3ktdHJ1bmsKKzgyMjYgMjBlNjM5OTg2ZmI5YmIyZDNhZGJmYTcxYzE4MGNiMGQ0ZmU4MTgwNyBsZWdhY3ktdHJ1bmsKKzgyMjcgNWE3NDI5YWM5MGM4M2IxYmIxNDNlOWM1YjM2MTEzOGU3ODkwYzc0MSBsZWdhY3ktdHJ1bmsKKzgyMjggODdkNjU4YTEyOGY5MWI1YzY4MmMxNmUyYTY1MGE3ZTkwNGJiM2Q3MiBsZWdhY3ktdHJ1bmsKKzgyMjkgZmE2ZDAxM2M5NDJiMDc3NWE3YmFlMjQwMWY4MmZiOWMzNDY1Y2Y4MyBsZWdhY3ktdHJ1bmsKKzgyMzAgNjRiYzc4MmE0MmVjNzMxNTlhZWFmMDdiNDNkMDhjNWM4NWEwMDU1NSBsZWdhY3ktdHJ1bmsKKzgyMzEgOWVkMjZhZmVlYWE1MmZjYjE2NThhZDAyMzZlOTQwNmU1OTJjYzI1YiBsZWdhY3ktdHJ1bmsKKzgyMzIgMThhNjM5ZGIwNDhjNzk5MGFkNzVhNDU2MjI1MGQ3NGY1YzU3Y2U5NSBsZWdhY3ktdHJ1bmsKKzgyMzMgNGI0MmVlYTEwYTAyOWU2MzNmYjhlMzY3ODE5YzNkNjdhMTJjOGNiOSBsZWdhY3ktdHJ1bmsKKzgyMzQgOGMwZjc0N2YxMTQxOWFjZmRhZGZmYjI0MTZjZmI2MzZiNDEwZmU0NyBsZWdhY3ktdHJ1bmsKKzgyMzUgYmZlOWJhNzRjMTllZDc2ZWQ3OGEzMDI3ZWYyYmYzY2ZjYzY2OWM2OCBsZWdhY3ktdHJ1bmsKKzgyMzYgOTE5Mzg2ZmIzZTUwNDMzMjI3NTdiYWI5MDM1MjcyNjUxZWY3NzQyZSBsZWdhY3ktdHJ1bmsKKzgyMzcgMjAxYzhkMDZlM2I3ODY3NTE5ZmIzN2ZkODE3NmJiZWVkNjA5MjAyOCBsZWdhY3ktdHJ1bmsKKzgyMzggYThlMzFkOTA1ZDJjMGZlOTc2ZjAyZDM1ZTM0NzMyOTNhNWU0MDliYSBsZWdhY3ktdHJ1bmsKKzgyMzkgNzliYjk5OTdjZTVmYWEwYjc4NmQ0NjNlODNhMWVkOWU0ZmE5MDAwMyBsZWdhY3ktdHJ1bmsKKzgyNDAgZmQ0ZTlmMjkzYzc3YThhODRlNGZiODQzMmJmMzU2MzZkNmJmYjRiMyBsZWdhY3ktdHJ1bmsKKzgyNDEgNjJmZTgwMGQxNzFhNzgwYzBlMDUxOTlkNmQyY2Q5ZDk1YzMxM2I4MSBsZWdhY3ktdHJ1bmsKKzgyNDIgZDY0MjFiM2VkMWRhNjViNDg5MDFhMzYwMWFiYjAyNTk3NmEzZDc3NiBsZWdhY3ktdHJ1bmsKKzgyNDMgMzA5YWFiNGMwYjk4ZTU3NDQ1YWQ5NzdlYmJhN2YyZmZiZWI0MDE5NyBsZWdhY3ktdHJ1bmsKKzgyNDQgMDNhNTdhZjcyMjE4OWNiZmE3ZGZjOTA5N2JhNmZkNGZmZjM5M2QyYSBsZWdhY3ktdHJ1bmsKKzgyNDUgN2RlNTlmNDdlODViOWNhZGYxNzc5OWRlZGQxNDFiMDgwNDRmMTUyNSBsZWdhY3ktdHJ1bmsKKzgyNDYgYjc2NDk0OTFhZTkyNDZhNGRlY2YzOTU2MWQzNjM1ZDZmNDAyMGJkOCBsZWdhY3ktdHJ1bmsKKzgyNDcgMzhlZjA5MTk2NGYwMjJmYTNlYjk1ZWU0NThmMTk4MzExY2M0OGRlNiBsZWdhY3ktdHJ1bmsKKzgyNDggZmI4ZjA3OWU0ZWZmODZmNjU5NWM4ZGRmNzNhODI0NGNiMWFiNDQwMiBsZWdhY3ktdHJ1bmsKKzgyNDkgNWY3ZGRiN2NhMzQ3Y2Y4ZjA1ZTBiOTQ1ZTVjZTZjNWRjOGM3MDAxMSBsZWdhY3ktdHJ1bmsKKzgyNTAgNzgzMTkyMjFlZGIyZjI4Y2RhZGQxYmNkMmYxOGQ4ZTZmNjRiZGI1MSBsZWdhY3ktdHJ1bmsKKzgyNTEgM2VmMjU2M2U4M2VlMzkwOTBhY2Q2MTJiMTdiN2Y4NjIyN2Q4MTZlYiBsZWdhY3ktdHJ1bmsKKzgyNTIgYzYwYmViNTYyNWU3MDE2NWY5NzhkYWQzYzFiMzAwOThiMjg4NGFjYiBsZWdhY3ktdHJ1bmsKKzgyNTMgZjZkZTA1MDA1NTc2OTVhYTcxOGZkZjBlNzMyMzlkMzg1ZTZjODNlOCBsZWdhY3ktdHJ1bmsKKzgyNTQgYjQ0OWNkODVkNTE5NzE5OTNmMGYwZDBmN2MzNjZhNzQwZTExOWNjZiBsZWdhY3ktdHJ1bmsKKzgyNTUgMDQ5ZDk0ZmZjMDZhMDEyNjdiZTIxNTdmZTNlMjk0ZmM0YmQxMTAxMiBsZWdhY3ktdHJ1bmsKKzgyNTYgMzQyODQ4N2IyOWEzODVjOTYyNjEwYTEyYTFmZDhlMDdjNDNmMDFjMCBsZWdhY3ktdHJ1bmsKKzgyNTcgYmIwYWNmZDRiNzIwYWZkN2EwNTFmMGY0ODQwNThiNjJlOTVlYTU1ZiBsZWdhY3ktdHJ1bmsKKzgyNTggM2I4ZDAwNDAzZGI4NWRjMzc3MzNlYWE3M2UwMjg1NzMwZTNjYjY3OCBsZWdhY3ktdHJ1bmsKKzgyNTkgYjgzZWNmNmY4NzMwMGMxYjQ3NzIxM2MyYmM5MzY0MTYyNGIzNjVjNyBsZWdhY3ktdHJ1bmsKKzgyNjAgOWNmYmM5YmI2NDIzYjA4YmI4YWY0NWJiZjFkYzhlZTZjYjgxNjUwMSBsZWdhY3ktdHJ1bmsKKzgyNjEgYzA0MzkwMWZhMWZlYmNiZmEyNGNjN2QwM2Q1NmJlZTk5ZGRjZmE4ZiBsZWdhY3ktdHJ1bmsKKzgyNjIgYjI0NzI5N2JlOWEwMjVlYzY0YjU1MDI2YzgxMTIzZTEwYTM1OWFlNyBsZWdhY3ktdHJ1bmsKKzgyNjMgYzU2OTg3M2VlYjE1ZDgyZjFiZWI0ODc3ZmQ4Yzc3Mjg2Mzk2Y2ZhMyBsZWdhY3ktdHJ1bmsKKzgyNjQgYjQyMGI2NGE0MDk2N2JmNzU1ZjczMDRkMDg1ZThlMjY5YmRkMzc0YiBsZWdhY3ktdHJ1bmsKKzgyNjUgMzFjYWUzNzRmNzg2NTY3NzMxY2ZiYWRmZjcwNzllOWUzNWRkNWVhNSBsZWdhY3ktdHJ1bmsKKzgyNjYgODhlNmFlMTA1YWI1ODEwZWY4YzI5MTc4OGM2ZjBjOWYyNzBiNDdhNCBsZWdhY3ktdHJ1bmsKKzgyNjcgMWQ0MTdlOWM3MmNmYWM3YjYzYzZlOWJkYWQxMmEwM2ExOWRiZjZhMiBsZWdhY3ktdHJ1bmsKKzgyNjggMmI3MzcyZWNkNTA3MmIwYTRiYjFhZjViY2NjYjJiMDUwYzBjMDhmYyBsZWdhY3ktdHJ1bmsKKzgyNjkgZGZmYWJjNjIwZTRlNDZkMDE4ZGI1ZDM2YjcwODI3YjFkNmE1NTg5ZiBsZWdhY3ktdHJ1bmsKKzgyNzAgNGNlNzgyN2EzNjIxN2I2NDhmNzE0NDIzYTlmMDRiODU3NDBhMTZiNiBsZWdhY3ktdHJ1bmsKKzgyNzEgZDc5YzRmYmIxOTgyYTFlMzM2MmQ5MzU4ZmJjZTczOGFiMDViMTRhNSBsZWdhY3ktdHJ1bmsKKzgyNzIgM2QxZDgwNTUwODdmYjc4M2QzYjhiODYzNTBkOTVmYzBiNjkwODAwOCBsZWdhY3ktdHJ1bmsKKzgyNzMgNzNjZjU4MjYxYjgyMzQ4MTMzMzJmZDBmOTQxYTM0ZDM5OTU4NDZmYyBsZWdhY3ktdHJ1bmsKKzgyNzQgZDY4OWQyYzRmODQyMGIwMTk1OTVjZjVjMzI5MWMzZDNhNTQ4MmQxMiBsZWdhY3ktdHJ1bmsKKzgyNzUgMjRhOGM1NmRlMjE0NDRlYmYyYWVkOTRjZjc4ZjE0MDZkODBiMmI5OCBsZWdhY3ktdHJ1bmsKKzgyNzYgZTg2MmQ5YjAwMjQ2YWJkN2M2YzQ0OTA4NGIxYWQxZmMzMzQ2YTQ3NCBsZWdhY3ktdHJ1bmsKKzgyNzcgN2U4ZWQ5NjUwZmNjMTE4YzczNzgwY2UyNDg3Nzg2OGVkNDNiMjQwYSBsZWdhY3ktdHJ1bmsKKzgyNzggZmUzZTdhMDU1ODM0MzY5MDFhYjEwNTQ2OGZiY2ZmOTQ0OWJhMzI2MSBsZWdhY3ktdHJ1bmsKKzgyNzkgZTQyMzkxZDY3NmQxMmQwNmViOTI0YmVlNzEyYjg0YjAwZGU2MjkwMyBsZWdhY3ktdHJ1bmsKKzgyODAgYjU2ZDUyN2E0MzNmNWE1MDU3OTI4NTVjMDljZGE2ZDdmODhlNGEyMyBsZWdhY3ktdHJ1bmsKKzgyODEgYjdjNjAwZWNjMjdkNDIwMGUzMWFkOGJiOWRmYWMzMGFmNGJjZGU1ZSBsZWdhY3ktdHJ1bmsKKzgyODIgNTE4ZDRmMGM4ZmNjNDk4MDI3NjAxODJhOTAzYTRhODczY2NlZjljYyBsZWdhY3ktdHJ1bmsKKzgyODMgNWE5ZjNjMjA3MzM2NjlmNWMwYjRhZTllNDdmYzIwOGI5MGVlMjNlZCBsZWdhY3ktdHJ1bmsKKzgyODQgNTA4MDNjYTU4YjFmOTFlMjVjOWM3MmE2OGMyNzYwYTRmMmM3ZTU3NyBsZWdhY3ktdHJ1bmsKKzgyODUgZGZmZDIyMTQ2YWFiOGNjY2Y4YTM2YzE0OWQ2YjMwN2Q4YjY4NjMxNyBsZWdhY3ktdHJ1bmsKKzgyODYgNTEyMGVhODZiMjVkNmQxMWFlZWM4NTRjNjQ4ODE2YzY2NTVlYzJmMSBsZWdhY3ktdHJ1bmsKKzgyODcgNmQ0MGViZDkyMjI3OTMwMjIwOTliOTJmMDE0MDdmNDM1OGRmY2YyYiBsZWdhY3ktdHJ1bmsKKzgyODggNThhZWI4NzJkOTE1MGQwMDIxODUzZTk0Y2MyYjgxODY1ODUwMzNkMiBsZWdhY3ktdHJ1bmsKKzgyODkgZjUzZDM2M2VmNjdhOWVhMjhiMzk5ZDVjNjIyOTJiMjllZTFmMTMyNCBsZWdhY3ktdHJ1bmsKKzgyOTAgZDMyMGNhODQzNTEyMjI0MDI3YjczM2MyNzE4ZDA1MjI1YTI1YWJkMSBsZWdhY3ktdHJ1bmsKKzgyOTEgNTVlYTU2ZWUyMGY2YmQ1NjY0MzcxMmQ3YTgwNDAyZjhjYzRhMjJhMSBsZWdhY3ktdHJ1bmsKKzgyOTIgZDhhNGYwZDkyMjFmMDc1YjE2MDFmNTMxM2EzMWY0ZmFkZDI1NjgzNCBsZWdhY3ktdHJ1bmsKKzgyOTMgNmEwZDdjZjE5ZDM4ZmFjNTdiOWI5NGI2Nzk3ODIxYzE5NzY4OGExMCBsZWdhY3ktdHJ1bmsKKzgyOTQgNDhiOTRkZTg1YmYzNWYyNDQyZWE1NDhhN2I0ZTM1NDVmZDY4NmFjNyBsZWdhY3ktdHJ1bmsKKzgyOTUgMzQ2OGVhODY0NWNhNDIzOGMyYjQ1MDI0MzUxZTVlMGZhZTVkMWJjNCBsZWdhY3ktdHJ1bmsKKzgyOTYgMGFlOGM3ZDMzNDY0ZWUwYzdhM2MzMGIxODkxNDc3OWQwNTEyMzUzOCBsZWdhY3ktdHJ1bmsKKzgyOTcgOTFkZDlkNzRmM2IzY2IwNmFlMGIxNzYwYzcxM2YxZWMwOGZhODI5MiBsZWdhY3ktdHJ1bmsKKzgyOTggNzgzMjFhODRkNzNlNWNkMzdkMTc1Zjk5NWRmMjZhYTdjNjhkMTQ4ZSBsZWdhY3ktdHJ1bmsKKzgyOTkgZDNmMmRmOGMyMjg2YzA1ZWI4NTFkYWMzMGQ5ZGMzNmQxMGFhNzQ3OCBsZWdhY3ktdHJ1bmsKKzgzMDAgYWQwNGQzODdhY2VlZWU4MWNlZWMyNmMyOWUwMDk4ZGVmZTY5ODcxZiBsZWdhY3ktdHJ1bmsKKzgzMDEgM2MxNWFlMGZiNmFkNzg1NWIwNDA2NGJlYmM3ZWY3Yjg5ZmI1YWFjYSBsZWdhY3ktdHJ1bmsKKzgzMDIgMGMzMzYxMmYxMWQ2YjE2Mjc4ZjM5YjVhYjI4YWFhZTA1MjFiYTc5YSBsZWdhY3ktdHJ1bmsKKzgzMDMgMDk2NWQ5ZmQxODYyZGQyMzM3ZWY4NGZjYWFlOTVhNjUyNTg5Njk4ZCBsZWdhY3ktdHJ1bmsKKzgzMDQgYTc5ZDBjZWYxMGExOWZkZDA0ZGRjOTY3MzZmYjRjODkyOWJiOWZjOCBsZWdhY3ktdHJ1bmsKKzgzMDUgOWZhMmJkOGEyYjc4YTUyNmQ4MDI5YjU1MDRjMjIxYzU0NGJiZmRlYSBsZWdhY3ktdHJ1bmsKKzgzMDYgZjExMjdkNmZjZDc0MjQ1NDIwNTMxMTBlYjI0YjMxYTExMjIxMGEyYyBsZWdhY3ktdHJ1bmsKKzgzMDcgMjI2YmNhODU4NDZmNDE4Zjk1OTkzMTJlNjRiM2U3YjRiNmEyMmU1MyBsZWdhY3ktdHJ1bmsKKzgzMDggOTg1YjdiZjQ3NTViNmNmZTkxYTQxMjkyZmExZjNjYTA1ZjM4MGVmMiBsZWdhY3ktdHJ1bmsKKzgzMDkgMjg1ZmI2YTk5ZTVmODVmNTc3YmQxMWFmNjUyMDg2MjM2NTE1OGRjNyBsZWdhY3ktdHJ1bmsKKzgzMTAgODZjMjc5YTg0OGViMmQ1MDE2MTM5NGQxMzdlMTdhNjM1YWFkZTI2NSBsZWdhY3ktdHJ1bmsKKzgzMTEgOTFhZWExYWY2NTRmZjE1OGYxMTA4OWVmMWFiMjQ2NzEwMjIzYTUxYSBsZWdhY3ktdHJ1bmsKKzgzMTIgYjkwNjNmNmY4MTFjYmZiOThlNDg0ZjkwZDU1ZDM0MzMzYTkyYmI1ZCBsZWdhY3ktdHJ1bmsKKzgzMTMgM2E3OTg2Nzc1MDZjZjA2NzU4NmZiOTFlY2VkYzAwYzdiYjhlZDU1ZCBsZWdhY3ktdHJ1bmsKKzgzMTQgMmU5MTdmOTM3MmUwM2E1NGQ3MDg4N2E3MWY3MTQzN2E5Mjc1OTI2OCBsZWdhY3ktdHJ1bmsKKzgzMTUgZWQ1ZGIwYzJhM2YzNDQxNzE5NmMxMjhlMGEyMzNlYWZiYmM2MWJlNCBsZWdhY3ktdHJ1bmsKKzgzMTYgMTc4NmNjNDE5ODg2ZWE2NmExNmMzYzQwZjNlNmY3NjIzMDNjZWMxNiBsZWdhY3ktdHJ1bmsKKzgzMTcgOWY4ZmYwMmVkZTZkZWViNWQ2NzcwNjQxZjg4ZTg2ZmNiOTJhODlhMSBsZWdhY3ktdHJ1bmsKKzgzMTggZTE2OTk0ZjNkMTAyYWM2YWZkOTcwY2QyODBmNDc0YzQ1OTRjNmY1YyBsZWdhY3ktdHJ1bmsKKzgzMTkgMzViMTRkNzhjNjFkOTQzMmQ3NTUzMGQxMmRkNDkzMDRjNzA2MGE0YyBsZWdhY3ktdHJ1bmsKKzgzMjAgNWE4YTVhMWEwNDc1N2Y2MGRiNmIwYmI2MGI1Njk2OWE3NWMzMWJkOSBsZWdhY3ktdHJ1bmsKKzgzMjEgNTk2MWYxMmFlNDI2NTg2YTAwYTY4NzRlNWZlN2RhNWIwMTgwMTljZSBsZWdhY3ktdHJ1bmsKKzgzMjIgNmU5OTY4NmI3NmRhMGNlMmY1ZDhmMGRlYmM3MmY1YWNlYWYzZTYzOSBsZWdhY3ktdHJ1bmsKKzgzMjMgODUyYTFmYTYyYTdjNGY2ZTFmZDUxNThkMDMzNmMxMzc2NzUzMmYzYiBsZWdhY3ktdHJ1bmsKKzgzMjQgZmY5YzAxMTAwNzliN2U0NjIxMDQwZTE0NTY3ZDY3YzRlNGM0ZDZiYSBsZWdhY3ktdHJ1bmsKKzgzMjUgZjY0YTVmNzUwNjk2NjAzOTgxMTU3NWExMGU5NmEzNTU0ZmI2NTA0ZCBsZWdhY3ktdHJ1bmsKKzgzMjYgMGQ3ODUxYjM3YWQyZDEzMGI5NzExNjBmZDIyNzk4ZDIzODljYjcyYyBsZWdhY3ktdHJ1bmsKKzgzMjcgNmY2N2ExYmRhMTVhMjE4YjFlYjUwNjI3YzJiZTQ2M2FiYzliODA0ZiBsZWdhY3ktdHJ1bmsKKzgzMjggZWRhZjFjYjYzZGMwYzg5ZjMyZjVlZjEwOGIzMGYzYzE0MzQ0MjQyYSBsZWdhY3ktdHJ1bmsKKzgzMjkgNGE0Nzc4ZTYxYzE0ZWIxOWI0NzliNzNhZTJkOTg0NWE0MjRlYzdhMCBsZWdhY3ktdHJ1bmsKKzgzMzAgOTJiY2Y0Y2M5NDIxMTlhZTljN2E3MmVjOTljOWE5ZDg3ZGZiY2QwNSBsZWdhY3ktdHJ1bmsKKzgzMzEgMzU4ZDcwODgyYWY2MjlhNzA3Y2VkNDEzZGE0ZGZlMzE1NmQ1NjNhZCBsZWdhY3ktdHJ1bmsKKzgzMzIgZmRkOGNlYTE4MWMwOTk0Y2Y4NjdlZWFkNDZjMDg1YWZkYzQ5MGZiNiBsZWdhY3ktdHJ1bmsKKzgzMzMgYzRkZDMzMjlmZDdkMDQ0YWQ2MGE1ZWI5NGZiMTZhNzI5Njg3Yjc0ZiBsZWdhY3ktdHJ1bmsKKzgzMzQgYTY2N2Q0OGU2OGI4NTY5NzIyMmZjODU1OWM0YTc4YjZkNmNjNGYyYyBsZWdhY3ktdHJ1bmsKKzgzMzUgZjVmN2M3Mzk1Njg3NjBlYmE1MWRkZmIzMDg0MGU2ZGEyMTU2MTM5YSBsZWdhY3ktdHJ1bmsKKzgzMzYgNjRmOWNlOTk5NDM3YmQ5MjgyYzM4OTczM2RmZGViZjlmMWIwMThkZSBsZWdhY3ktdHJ1bmsKKzgzMzcgNzI4YTA4MzI0MmEyYTZlNzA4ZWEyYmQ2NGY5NTg1NDcxOTU3N2QwMiBsZWdhY3ktdHJ1bmsKKzgzMzggMzIzZjZhMTZhNzY0MmNmMTYyYjA0OWVmMWJiYTU1ZjJkNjJkZGIwNiBsZWdhY3ktdHJ1bmsKKzgzMzkgNGRiYjRlYzQ0ZDE1MGU2MjI5YWM4Y2Y3ZWQzZTM0ZDExMWM5ZDg3MiBsZWdhY3ktdHJ1bmsKKzgzNDAgMGFjMmM3NDcwNTNmZGI3NGY4OGI0YTQ4MTY0MDFlNTQwYTc2MzI3OSBsZWdhY3ktdHJ1bmsKKzgzNDEgODc1MTdlOGVhNTE5MWI1YmQyNzAwMWY5YWQ5ZTE1ODUyNzA0MDJjZCBsZWdhY3ktdHJ1bmsKKzgzNDIgOTg0MWJjZTM3YzRkNjM5Yjk1NzQ5ZDdkN2E2OTg2NmQxZjRmYzkyYiBsZWdhY3ktdHJ1bmsKKzgzNDMgZjFjMDMyNzY4NzNhNjBiNDUyMTJkNzU1Yzk0OTU3ZWI1OGYzYTRkZiBsZWdhY3ktdHJ1bmsKKzgzNDQgOTc4MzdlNjRjNThjNTJjMjk3ZGYyZTllYjM0N2JmYmQ2ZDY0ZmYzNiBsZWdhY3ktdHJ1bmsKKzgzNDUgZTc0MmU0MWE0YjExYmVmYzY3ZDA4OWMwODg3NThmZmFhNGI2Zjc2MyBsZWdhY3ktdHJ1bmsKKzgzNDYgZjJiZjdiY2Y4YjhiNjdlY2QxODY4OWIyODQ3YjcwNzhjOTM2ZTFkMyBsZWdhY3ktdHJ1bmsKKzgzNDcgZmU0ZjFlYjE0ZDUzZjBiNGYwNjlmZmE2NGQyMjM4M2RkZTM5NzgzNSBsZWdhY3ktdHJ1bmsKKzgzNDggZWQ5MWNiN2QzODc2MTkyOGJiYzZkY2VkYzIyYWJhZmQwNDkxZGQ4NSBsZWdhY3ktdHJ1bmsKKzgzNDkgZGQwZTliNjQ2NjE2ODU1MjhhOWMyN2VkZGQ1OGE2MGEyNzA4MGFjZSBsZWdhY3ktdHJ1bmsKKzgzNTAgYzhhOGNmOTU4MTFjMzhjZjI3NjQzY2M3NTM1MmY2NzY5YmNjZDlmYiBsZWdhY3ktdHJ1bmsKKzgzNTEgYzY3YWQ1YmNkNGIyMDIzZTNmMDgxZTIwMTcyMDk5OGVlMjJiMTRjYiBsZWdhY3ktdHJ1bmsKKzgzNTIgZDI0MDg1MWNjOGM1Nzc1ZmI1MjhmMjkwMDhjODk3MDZlM2M3MjI3NCBsZWdhY3ktdHJ1bmsKKzgzNTMgYTJkM2MyYTYyYTMwYTMxOGIxNDcxNDhiNTRiYzBlN2JmYzM2NjRhNCBsZWdhY3ktdHJ1bmsKKzgzNTQgMDUzNGU1NGU4MTA2MmM4MDU2OTNlNWNhZGQ3MzA4ZWY0NGVkOGU3MCBsZWdhY3ktdHJ1bmsKKzgzNTUgNjhmNzMxMmEzMWY2MjlhZDk5MDc3MzdhNzAzMGJjODg3N2JlMzkwYSBsZWdhY3ktdHJ1bmsKKzgzNTYgYTc3NWE0NDEyNGQ4YjBjMmE1OGEwZDJhMGY2MTZkMmJhMzliOGJmYSBsZWdhY3ktdHJ1bmsKKzgzNTcgNTMwZGRiNzA3Njk1ZTdmYzE3M2QwNzRmMDUyMDJmZDgzNzZlZDNmMyBsZWdhY3ktdHJ1bmsKKzgzNTggYTEwMWExN2I4YjdiOGM3Y2I2MTg4YTM2MjcyOWU0OWY4YjJlMGJkNCBsZWdhY3ktdHJ1bmsKKzgzNTkgZDY1MTNkYTkyNDlkMzk3ZDA0Yzc3MmE4NmEzYzcwMzI0ZjM5ZThhMiBsZWdhY3ktdHJ1bmsKKzgzNjAgNzlkMTkzMWYxNzIyOWVlY2Y3ZDgzOTMzNjY0YWY0NTlkNzRlMDFjYSBsZWdhY3ktdHJ1bmsKKzgzNjEgYjU3MWI2ZWU3ZjE3ZTM3OGQxNjJiMmIzZGJlYjRhNGVmMTEyODhjMyBsZWdhY3ktdHJ1bmsKKzgzNjIgNzZiMWRhMjFmM2E4OTgxZDAyYjJmNWVkMWNmMDZhMzBiYjU2MjhiNiBsZWdhY3ktdHJ1bmsKKzgzNjMgNGM1MmExYjZhNTRkNjJhNjMzZTU4MGJiZjViMDEwMTA1MmM4OWY1NCBsZWdhY3ktdHJ1bmsKKzgzNjQgMmExNzJiNDk1MGI2YTZjMDIyOTE3YjE4NzM2NTUwZjNkNjU4YTI2MiBsZWdhY3ktdHJ1bmsKKzgzNjUgMGNkNzRmOTE4OWM2YTdjOWZkMTQwN2Y3NWVkYjIwZTM5OGE5ZmMwYiBsZWdhY3ktdHJ1bmsKKzgzNjYgY2RkMTI1ZGU3NWJmNmY2MjAyMWJiOGI2YTEyNDdmMWIxMmJmYTVjZCBsZWdhY3ktdHJ1bmsKKzgzNjcgZjMzNDJiMzgxOTM1YTQ2NDk5YjYwZTc3MWI1NDRmNjU5NThkNDI5MCBsZWdhY3ktdHJ1bmsKKzgzNjggYzRkNTQ3YzAxZTkzNGVkODVkNTJmMDU3ZmZlNjFjNWNkNDk4Mzg0OCBsZWdhY3ktdHJ1bmsKKzgzNjkgYjk2Y2NjNzgxMmYyZjA4M2JhOGMzYjI2MzkzMzczNmU2YThjMjNkYiBsZWdhY3ktdHJ1bmsKKzgzNzAgYzU3OWI5Zjk4YTVhNzE1NjA1MjY4OTExYmMxMGJjMDU2OGRlNWMzMSBsZWdhY3ktdHJ1bmsKKzgzNzEgZTJkZjk1YjdiZTc4OWEyNGVmY2MwZjg3ZTIzMDI2NDA0Y2JhZWJlYiBsZWdhY3ktdHJ1bmsKKzgzNzIgNDZjZDM1MmM3NjM4OWZkMjI5MmM0Y2YwYjllMjZmNGEzNDJlNzgwNSBsZWdhY3ktdHJ1bmsKKzgzNzMgNjcwMjJkMjhhNjVkMmRmZThhOWZhMjJjNzNlMmMwNDY4NDg0MTVhMSBsZWdhY3ktdHJ1bmsKKzgzNzQgN2QzNWEwNTgwMzU2ZWJkY2Q2MGViNDNmZTViMDU0OGFjNzIxZWZiZiBsZWdhY3ktdHJ1bmsKKzgzNzUgMjUzMzc3YTQwNjQ0ODQ3NTU5OWNlMDI3MGE4ZGM1MDA5MjdjMGJkYiBsZWdhY3ktdHJ1bmsKKzgzNzYgZjgyYjYwOGFmYjU2OGRmNmIwNDg2Yjc0NDI0YTA5OTEyOTJkNzMxMiBsZWdhY3ktdHJ1bmsKKzgzNzcgNDY2NjY0YWQzOGU0Y2VmMTkxZjg0YTFjMmM3MzhjMWVmNDg1MDE5ZiBsZWdhY3ktdHJ1bmsKKzgzNzggYmE0OWE2ZWY3MjE0ZjdmMDRhMTQzNWM1NzI3NGJjMmRhMTc2YmZhMCBsZWdhY3ktdHJ1bmsKKzgzNzkgNDEwMmY0NDcyMDMyOWIwNmQyM2FlZmFmYjUzNzgwMGM0ZTQzMGMxMSBsZWdhY3ktdHJ1bmsKKzgzODAgYjZlNDhhNGNkZDFlNjhiMjk4MmU2YTFhMjIxNmI5MGM1NDdhZjdiOCBsZWdhY3ktdHJ1bmsKKzgzODEgYzUwY2MyOGFmN2M3OWY5MDRmNGNmYTFlMmRmMGM3MTk2MTBhN2I5MiBsZWdhY3ktdHJ1bmsKKzgzODIgYzI0MjM4NDNhMjZmNzE1ZWMyNGI3ZmM0MDc4NmQ0M2FlNGJhZjY4MCBsZWdhY3ktdHJ1bmsKKzgzODMgZjM0NDYwOWE0OGU0ZWE5NmQzNDBjYzdhNzViOWM3OGNmMTI2N2JjZSBsZWdhY3ktdHJ1bmsKKzgzODQgYWY5MmNmZmQwNjNmNTNjMDk5NDBhYmQ0NDFlZTViNDI1ZDNjMWUyYSBsZWdhY3ktdHJ1bmsKKzgzODUgNGRkOWVhMWU5NGE4ODAxYzk1ZWNkODRlNjc3YzUxNThjYWJkMmMzOCBsZWdhY3ktdHJ1bmsKKzgzODYgZjgyNTljYTllZWQzN2M5OWUzYTZhMWUyNmRkZDUwMjU4MzlhZDBhNyBsZWdhY3ktdHJ1bmsKKzgzODcgODk3NzFhNDZjYTM1NGQ1MTdiNmJiMjYzOWRiNzNkYTI0NzljYjQwYyBsZWdhY3ktdHJ1bmsKKzgzODggNjk4Njc4MWEwN2VmMGRjMTQzODBmMWFkMDZkYmFkMDNhNjdlNTQ1ZCBsZWdhY3ktdHJ1bmsKKzgzODkgZjUyN2MxMmYyZTU1MjhlNWFmNGNiMzUwZGQ2NGRkMDY5OGU4ZmU5NiBsZWdhY3ktdHJ1bmsKKzgzOTAgNmIzOWY4NjMzY2E1NDdhMWQ4NzI0NzQ3N2FmNGViNjIzMzNlYjBlYiBsZWdhY3ktdHJ1bmsKKzgzOTEgNTE1NWIyYzM1ZTE1OWY1OWRkMTc1MTM0YmQwNDIzODJhODFjMmUzNSBsZWdhY3ktdHJ1bmsKKzgzOTIgZGI5Y2ZiMTA4NjIzYzI1YWRlNTE4ODcxNDFjZWNjM2E2YThmNGI2MCBsZWdhY3ktdHJ1bmsKKzgzOTMgZDJjODAzODBhZDBkZTc0MjNkYzZmZTVkNDFkYmM3OWQ2ZjVhM2QzMSBsZWdhY3ktdHJ1bmsKKzgzOTQgMDRhMWI4MmM4MzJiMWE3ZTE3ZjkzZTMxYTlhYjU1NjZiZWE4NGRlNyBsZWdhY3ktdHJ1bmsKKzgzOTUgNzgwYjY4ZGY0NTYwNzc0ZjViOGZmNTY2YmRhZDI1MjViYjgyNDQyZCBsZWdhY3ktdHJ1bmsKKzgzOTYgNWRhMThlMDAyYjFhOGZlODViYTVhOTU1OGMxYzE4Zjg0YThjYjc0ZiBsZWdhY3ktdHJ1bmsKKzgzOTcgNWZiMzA0MTNiOTNiMjE5ZjgwMTU5MzBkYzJkZWM2OTI5NjE1YjAwOSBsZWdhY3ktdHJ1bmsKKzgzOTggODAwYTUyMTdlNjdlNzg2OWJkYWU1ZDVlMTE1NmRiZThkOWM2MDEwOCBsZWdhY3ktdHJ1bmsKKzgzOTkgNDRkZGM3MTFlZTJkYzhjMTJkNGE3NWE4ZDJkY2E1ZjQ0ZGNjMGExMSBsZWdhY3ktdHJ1bmsKKzg0MDAgM2UxNThlNjlhYzVkOTFjMWNhMzRhZDAwZDAwYzNhZWY0MmE3ZjFjYiBsZWdhY3ktdHJ1bmsKKzg0MDEgMDhiMWU5ZDg0N2U2YjU5OTU5YTJkZmM5Y2ViNmMxY2JlYWIyMTI3MyBsZWdhY3ktdHJ1bmsKKzg0MDIgOTMzMDRiMmUxNGNiMzY4NzljZjYzMTRiYWRmZTQ3NGUxYWYwZmZmMiBsZWdhY3ktdHJ1bmsKKzg0MDMgOGQyMTk0ZTIyZTY3MzljZDk2NjI1NGE0ZmU4MmEwYmE2NDlhNjYyMSBsZWdhY3ktdHJ1bmsKKzg0MDQgNjNiYzkyODlhYjI4MjkzOTg1ZDA0YWQ2MjM5NmQ5MWZlYjhkYWFiZSBsZWdhY3ktdHJ1bmsKKzg0MDUgY2EyNDVjMzZjNmY2Zjg0ODI4NjMyOTE0OGJlOWY0YjAwYWE0MGY1NCBsZWdhY3ktdHJ1bmsKKzg0MDYgYjNjOTEzNzQ2OTAwZTE2MWNhYTM3NDZiMWE4ZGU0YmI3MTgxMWEyNSBsZWdhY3ktdHJ1bmsKKzg0MDcgZTJjY2U0YWRmMmE3MDI5ZWJlODBkN2Q5NzJlZjQwN2RiYTBkYWQzZiBsZWdhY3ktdHJ1bmsKKzg0MDggMTJmZTVjYzE1MTZkMDgyZDBkMjdhNmM4MWJjMDM3ZGRjMmQ1NzEwYiBsZWdhY3ktdHJ1bmsKKzg0MDkgNDBjZmM5MDVjNzc2OTZhYzhiMWUxMmM2ZWVjODNhYTNhMzY5ODAwOCBsZWdhY3ktdHJ1bmsKKzg0MTAgYjIxMGQyMDU5ODEyMTZkZWRkNDVkM2E4YTMxZjIxOTEzY2U4MTViMyBsZWdhY3ktdHJ1bmsKKzg0MTEgMDM2OWQ2M2IxMDBiMWY0YmI4MDc2ZGI5MWRmMTkwZDg5NjI3NWQ5NyBsZWdhY3ktdHJ1bmsKKzg0MTIgZDc3ZDNiOGU4NmIyNWE4OTIwN2E3ZDI0ZWQzM2EwZTVmNjc0MjU3YSBsZWdhY3ktdHJ1bmsKKzg0MTMgODBkMjQzNjRiOTMyNWViNjI2YTFjNGUzNjhiNTBhMGQwN2U3NzQ3ZiBsZWdhY3ktdHJ1bmsKKzg0MTQgNWE0ZDE4MWZmZmZkZjU3MzBjYmIyYTI4MzE3YzM4MTNhOTRlMzA5YSBsZWdhY3ktdHJ1bmsKKzg0MTUgMjIyZmFlYjQzZDAyMGM5NDZhYzc4Y2Q5ZDc1OWVhNmFhZWMzNzNiOSBsZWdhY3ktdHJ1bmsKKzg0MTYgMmM2NWJiNmFiODdjZDliYjY5ZjNlM2U0OWM2MjNiNGUyMzYyMjVjNyBsZWdhY3ktdHJ1bmsKKzg0MTcgZWVmNzZiM2NkOWFlZjNjMjI3MjJkN2ZiMzBkODMwNWM0NDgyMDM2MyBsZWdhY3ktdHJ1bmsKKzg0MTggZjdmYzg4ZmNmZmEyNDZiM2IyNDYzMTZjZDQyNmQzNGIwMzZmMWNlOSBsZWdhY3ktdHJ1bmsKKzg0MTkgYzExOTI4ZDI1OTdiZGRjNmQyMzEyZmYxNTY1YzZkNTA0NzM3YjcyZCBsZWdhY3ktdHJ1bmsKKzg0MjAgYWM4NzdjNDc2OGUxY2FiZjlhMjQxNDAwOTY1NTUzYWIwYWZiYzljZCBsZWdhY3ktdHJ1bmsKKzg0MjEgMWJkNjhlNDQ2NGNlMmZjNTQxZTkyYzdlNWNlM2JkMDAwMTZhOTkxMyBsZWdhY3ktdHJ1bmsKKzg0MjIgNzViM2FhYmNiN2MxMDA5MTk3NjhjNDljODI0MzhiMjhiMjVhZmVkNSBsZWdhY3ktdHJ1bmsKKzg0MjMgOWE1NjQ1MmM3ZThlOTIzMTNmNzlkODQ1NzkxZTYwOWZiNGY4Yzg5MCBsZWdhY3ktdHJ1bmsKKzg0MjQgN2NhNmE5MTJkNDU1YjliYjJmMjY1NzczMDlhY2Y0ZmZiNzJhM2YwMiBsZWdhY3ktdHJ1bmsKKzg0MjUgNmMwNjBiYzNiZjNkOWI1ODBhM2JkODk3YWNmNGZkMTBlOTk5OTk3YiBsZWdhY3ktdHJ1bmsKKzg0MjYgMGI0YTlkZDA5ZTBkYjBjZGQ5ZjZlMmFkMDNlMGYyYzY1OGFiZDY0MiBsZWdhY3ktdHJ1bmsKKzg0MjcgM2ZiY2RhNzQxNjk2NWE0NDIwNzA5ZWFjNjg5NDQyYThiZTQwNzBiNSBsZWdhY3ktdHJ1bmsKKzg0MjggOGQ3ZGM2Njk2OGNiYzZlYzRlYTNkYjNjMzQ5YzQ1OGUzZmYwNGYwZiBsZWdhY3ktdHJ1bmsKKzg0MjkgYjJlMDE4ZmIyYmE5MTVjMjA3ZDg3ZGJiMmEwYjdlNWY0ZmU3OGJlYyBsZWdhY3ktdHJ1bmsKKzg0MzAgMWE5OTY5NWE0MWNjZjY5MTQ2ODRjYmNiMDc5ZDQ0MzZiNjhmOGM2MCBsZWdhY3ktdHJ1bmsKKzg0MzEgZDM4MzVhNmExOGM5NTc4NWM4ZDFiMTAwMjYzZjlmYzg5YjRkZmI3MCBsZWdhY3ktdHJ1bmsKKzg0MzIgMWYyZGZjYTUyMjA3MmQxMzljODg2MjZmNjg4YzI0NWQyMWQ1NWFjOSBsZWdhY3ktdHJ1bmsKKzg0MzMgM2Q2ZjNmMGFlMDA1MDY1NjE0MmIxOTcxOWE4ZGVmZTVhODYzMjU3YyBsZWdhY3ktdHJ1bmsKKzg0MzQgMjRlYzQ2MjRlYTllMzA5OTJiOWRhZjc5ZDQ4MGU3YTFmZTdlMWIzOCBsZWdhY3ktdHJ1bmsKKzg0MzUgODM0NDYxYThjYTc2NzE0NjA4ZGRhMzNmYmM0YzI5ODVkNjk5ZjdjZiBsZWdhY3ktdHJ1bmsKKzg0MzYgMWE0ZmI2ZjEyZmZkNTRiMTIzZDIzZGU5ODAyYTA1Mjc0ODRkY2FhZCBsZWdhY3ktdHJ1bmsKKzg0MzcgNzZiYjQwYTFlYjA0NTMyMzg5OGQ2YjAwYTEyMjBlOGNlYmZlZWE0YyBsZWdhY3ktdHJ1bmsKKzg0MzggMzVlNWFjYzY1MzJjN2U1NGE2OWQ3MGJlMjU1NWRjYjQzYTc0Njk5YSBsZWdhY3ktdHJ1bmsKKzg0MzkgMjNlMDE0ODM5YWIwNTdkMTU5Nzc3NzIzZmM5MGYyNWU4MDJlMWQ2NiBsZWdhY3ktdHJ1bmsKKzg0NDAgODNkZTU1MzlmOGU0MzIyMGFkOWRmNzA2ZGQ4MzgwNTY5Y2JhMjE5NyBsZWdhY3ktdHJ1bmsKKzg0NDEgNDMwNTQwMjFiYjU3NTEwNjE3YTg4ZGZkZjEzOGNlZWEyN2I1MTVmOSBsZWdhY3ktdHJ1bmsKKzg0NDIgOGFlODNiOWMzNGEwMjQ1MDg3Y2YyZDcxNjE5OWQ3MzJkNTY4OGJlYSBsZWdhY3ktdHJ1bmsKKzg0NDMgOTZhOTdiMmI3MjNlOWY1M2UwNGYwYjNmOWY4YzQzMjZhODhiNmEwMyBsZWdhY3ktdHJ1bmsKKzg0NDQgOWU0ZGRiNDU5YjEwZDNiMGNmOTRiMjQ1YTY3ZTM0NzUzODBmYmZkYiBsZWdhY3ktdHJ1bmsKKzg0NDUgYjcwNDhmNWJlOWExOGQzOWFhYzRhZjlhNTcxZTM0MDM4OWE3MTY2OCBsZWdhY3ktdHJ1bmsKKzg0NDYgNWY2YTJlYWRhYjk3ODM1ZjI2ZTZiOTUzMTY1MDg0OTU3OTk2OTJmZSBsZWdhY3ktdHJ1bmsKKzg0NDcgNzAxZDg1NGQxOTMwYmI2YTFhMjRmMjczZmU5ZGRmMWVhYjczZGQ5NSBsZWdhY3ktdHJ1bmsKKzg0NDggM2YyYmZjMTU5ODlkY2FlNzU2MTcxNzljZGJiZjU1ZDY5MjQwZTI3NiBsZWdhY3ktdHJ1bmsKKzg0NDkgOGFiYjRkOGMzMTM0NDlkYTk5MmEzNDVjNmE1YWVhNjVkMGIwZDZjMCBsZWdhY3ktdHJ1bmsKKzg0NTAgZTc3ODQ3ZTExNThlMjEzODg0ZDRmYzM1ODQzNjE2ZTI2MjdhYTQ4NSBsZWdhY3ktdHJ1bmsKKzg0NTEgN2EwODgwZjhiOGVjMDhlYTEyNTIxMzE2OGRjNjkyZmE2NjRmMzhmNyBsZWdhY3ktdHJ1bmsKKzg0NTIgOGJiYTliYjg2NGFlMjM4YzRhZjkzYTc3NWU0Nzk4ZmVlYmM3MmRiMCBsZWdhY3ktdHJ1bmsKKzg0NTMgNWIyYzU5NTQyOGZhOTFmOTkxOTM2YWNiNzE5MzJiODdiYWVjYjNjNyBsZWdhY3ktdHJ1bmsKKzg0NTQgYjc3MDc5NjUxOWY2MDNmZWE1ZTc4ZDNmNjllNTkwZjcyNTBhYjZmZSBsZWdhY3ktdHJ1bmsKKzg0NTUgNzgxZWI0OWQyZDY2ZmQwYTA2NDJkODJmNGE3YmQxYTgxZDNlOWE1NCBsZWdhY3ktdHJ1bmsKKzg0NTYgNDIyOTYwNTIzMjg2NTIxNTI5Y2I2OGE3MzQwZjZmOThmNWQ3MmNhMSBsZWdhY3ktdHJ1bmsKKzg0NTcgMjg5NGJiNDllMmVlZTY4OTk0ZDE3ZGM2ZjQwYmQxMGNkNTIyNzNlNSBsZWdhY3ktdHJ1bmsKKzg0NTggMTcwYzQ2YTY1MDIyMGU2MmI2Zjk2MzJhODhhYzU2ZGU4Y2RhMDg1YyBsZWdhY3ktdHJ1bmsKKzg0NTkgNmFlYmQ5NzBiN2E5OWU4NGNmYTVmNDdkOTA3YTdhMjZiODVmN2QxMCBsZWdhY3ktdHJ1bmsKKzg0NjAgMzMzODVmOTRjYThhYzQyYTEyNzQ3NmUxZGFkMGM0ODU4NGYxY2RlZCBsZWdhY3ktdHJ1bmsKKzg0NjEgYjRiYmJhM2FmNGU4YzhhMmU3NjVkNTkzMGE1OGExMDVjYTA2N2VmZCBsZWdhY3ktdHJ1bmsKKzg0NjIgMDNhODgzM2I0YjczZDk5OTVkNTFjYmM2NWU4YmE2NDZmZDUyY2QwNCBsZWdhY3ktdHJ1bmsKKzg0NjMgMzIxMjc1OTNjMTM0ZDFhMWUzZDIzNmE1ZWU1NzIxZWU3NDRhNjQxNyBsZWdhY3ktdHJ1bmsKKzg0NjQgMGEyYzMzMTIwMGY1ZmYwODI3YmYwODk5M2JhMWFhNTk0MTMxMWM2ZCBsZWdhY3ktdHJ1bmsKKzg0NjUgNTk5M2EwOTlkOWIwMzY2MzBlZGYwYTdiYjRlZDBjNzZkMjg2NDhiZCBsZWdhY3ktdHJ1bmsKKzg0NjYgNWI5MGRhOGE5ZGNjMTc2ODQ2YWYxNmFhMDE2N2QxYTlmYjE4ZmI3MiBsZWdhY3ktdHJ1bmsKKzg0NjcgNTAzNTAwNjUyYmFjNDhmZjQwMmRlMmJiMGNhN2NhNzVhNjY0MDE3YiBsZWdhY3ktdHJ1bmsKKzg0NjggYTU3MzdkZDk2OTc5MDA5ZWJmOTkxYjljYzk2NGE1ZWRjNzA2ZDJjMyBsZWdhY3ktdHJ1bmsKKzg0NjkgNmU1ZDRlYzAzNzkxYzk2Y2M3OWQ5NWJmZDA4MWY2NGYzNjNmZTM1YiBsZWdhY3ktdHJ1bmsKKzg0NzAgMmRiM2I3MzYxODUzYzU1NjFmZWEzM2FmMTU1MTk0YjI3ZDhhOWE4NCBsZWdhY3ktdHJ1bmsKKzg0NzEgM2JhYzUyMzUyYzBiYzdhNmRjMWVhZTYzNTI3MTJkY2JjMGNhNDg0YSBsZWdhY3ktdHJ1bmsKKzg0NzIgYjhiNmE4OGY3ZjQ0MmRmNDBiNDcwNmMwNjQ4ZDZhYjVmOGY3YTEyNyBsZWdhY3ktdHJ1bmsKKzg0NzMgOWU3ZDU5ODJhYjNkZTk2ZTlhNDVkY2M4NTk2NTFiZDJkODg3ODM0MyBsZWdhY3ktdHJ1bmsKKzg0NzQgZmNlYTU3YzM0NmE1OWI2MWUzZjM3MzY0ZTlkNTM1ZGM1Y2EyMzljZCBsZWdhY3ktdHJ1bmsKKzg0NzUgYzI0YjU0YzE5NTcxNDJkMWQzYWY2MGRkY2RjMDQ0ZGQ2ZTJjNzhiMiBsZWdhY3ktdHJ1bmsKKzg0NzYgZjJkMTM0YmY2OTczYmEyNjU0OWRjNDI5MWQzOTU4N2VlNmM4MDRiOCBsZWdhY3ktdHJ1bmsKKzg0NzcgZDUyMGQ1ZDAxMTE1YjcwMmJjZmNjYTFhMGViN2E1NTY1MDFkMDZhZiBsZWdhY3ktdHJ1bmsKKzg0NzggODA1NjE2OWVjNDQ4ZTIzM2QwYjQ1M2JjMmZlZTk3MjhhM2RiNWY1NSBsZWdhY3ktdHJ1bmsKKzg0NzkgZDQzOWMzMmNlOTYzN2ZmY2E2MmI2MzljNzI3ODk4OTM3OWI4ZWRmNiBsZWdhY3ktdHJ1bmsKKzg0ODAgNTA4OTIxOTUwZjJjNDBiMmMwYzZmOWQzMDZiZTFiMGI4ZGM5YjNkZSBsZWdhY3ktdHJ1bmsKKzg0ODEgM2Y1OWIzNGViOTBmOTZhMzExNjhhYzFlODAyYmY0ODg4MWM4NzUwYiBsZWdhY3ktdHJ1bmsKKzg0ODIgMGNkYTlmMjQ3ZDdhY2I5YjJmMjRlMmRjZjI4NTA4NzJiY2Q3NGU4ZSBsZWdhY3ktdHJ1bmsKKzg0ODMgNzM2MWYyZjE4NmFkYTAwNWRiMzkxNDY3MGVhMGQwOTVlYTQ0NGIwNyBsZWdhY3ktdHJ1bmsKKzg0ODQgOWJhNzJmYzRmNTAzNjRjNzIzNDA3NjA5NTJhYWVjZjJiNzRjYzYwNSBsZWdhY3ktdHJ1bmsKKzg0ODUgNWRjMjY3Y2Y0ODk1MmNjMWJlYTJiYTFkZDM1NzIwOTU1Y2FmZGZjOCBsZWdhY3ktdHJ1bmsKKzg0ODYgODg3NDA4ZWVhZTk5MzliNTE5NTFhZmUxYzVjZmI1ZGFkMmQ3NjM1YiBsZWdhY3ktdHJ1bmsKKzg0ODcgODcxZjEzNWRkNjEyOWIzNzJhMGYxMjIzZDI0YzlmMDE4ODhkOTQyNSBsZWdhY3ktdHJ1bmsKKzg0ODggY2M1NzcwMDFmN2VjZWVkM2YzYmM3MGIyMzcyODAzOGZmOGMzYmU4YSBsZWdhY3ktdHJ1bmsKKzg0ODkgZDAyYWM2MWNkNTBmMWZhZTU3NjUxODgxMDhjZTM0Mjk5NDI1MDM3YyBsZWdhY3ktdHJ1bmsKKzg0OTAgMGI1YTIzZWE3NTE1NmYyNzNlNGFmYjJmMzgyZDQwZjhhOTY4OTg5ZCBsZWdhY3ktdHJ1bmsKKzg0OTEgMmYzNmUwYmIzN2MzNzhhOWNmYzQwZWYyNjJlOTY0NGY5OWJmY2Q1ZCBsZWdhY3ktdHJ1bmsKKzg0OTIgMThhZDExMDZmNjUxYWI4ZmNmZmQ1ZTQ4ZDY0ODk1MmY3OWRjMzMyMCBsZWdhY3ktdHJ1bmsKKzg0OTMgZGZmMjAyNGFiMDIxZmUyODg2ZjFhYTA0NGUzMmZjNWRlNGUwOGU0NiBsZWdhY3ktdHJ1bmsKKzg0OTQgNTBhNDE4NjNjMzRhNjAxMjc5OTIzNzdjODUzNDgwYTU1ZThmZjE0YiBsZWdhY3ktdHJ1bmsKKzg0OTUgZjA1NTQ2NzQzNDA2MTA0NjVjN2Q5YzhiNDkzMGUwZjAwNWQ0MjIwOSBsZWdhY3ktdHJ1bmsKKzg0OTYgYTJmOThkN2NhZGVkMWRkMjJkNThlZDMxNGM2MTAzMWUxNmNkMjRmYyBsZWdhY3ktdHJ1bmsKKzg0OTcgNTljMzQ5YTE0YTNhZGUzN2Q1N2VlOWM1NWRjNDkzYzg4MTEwOTVmZiBsZWdhY3ktdHJ1bmsKKzg0OTggNjAxYzRlY2EzZGUzNDFlNzdjMmIyMzc3ZDdkNTYyMDE3ZjMxNTM2YiBsZWdhY3ktdHJ1bmsKKzg0OTkgODAyNDcwYzdhNTBmMDQ4NGY5MTI1NzJlZGQxM2EyNjJjMTllYjUyMiBsZWdhY3ktdHJ1bmsKKzg1MDAgNmEyNWQ4MTEwYjAwOTQ1MmE2YjAwMDY5YWM0OWI5NGIyOWU4OGQwZiBsZWdhY3ktdHJ1bmsKKzg1MDEgZDVmODc0MWE4MTJjZjU1NTA3MzIxNmM3YzQ2NWFkZDY0M2U5MTA5NyBsZWdhY3ktdHJ1bmsKKzg1MDIgMGFkMTVmMzBjOGQ0MTA4Y2I2MTE4Y2Y5Yjg2MWE4MjBkOGFiMTU3ZiBsZWdhY3ktdHJ1bmsKKzg1MDMgYjU4MDQxNTRhZjRkZjEyZDJjZTYyYzY1MDhhN2U2ODZkYjYyYWI0NCBsZWdhY3ktdHJ1bmsKKzg1MDQgNDk0ZTU1MGNiMThkMTVjMmNlMTBkMGRlZTk0ZDQyNGQ0ZjQwNDFkMCBsZWdhY3ktdHJ1bmsKKzg1MDUgMjkyMTkzMTcwZGExNTlmY2ZmYWExMzg5Yjc3NGVjYWNkM2E2MmVjMCBsZWdhY3ktdHJ1bmsKKzg1MDYgNjhmMmQ3NzA0MTgwYTcyYjRkMTI3ODhlMDBjYTA1ZDc0ZDRjNDVmZCBsZWdhY3ktdHJ1bmsKKzg1MDcgYmY4MDNkZmQ0NDI4ZjI3NjE1NjBlZWIwNmM4MGRlOGUwMWY1NTYzOCBsZWdhY3ktdHJ1bmsKKzg1MDggNmM0NDlkZmYyZmI4OWNmMDU0ZmQ4YWY2OGViZjEyMGQwM2NkMDY4MSBsZWdhY3ktdHJ1bmsKKzg1MDkgOWE1N2NhMjI5NjgxYjY4MmNmM2FjNThiNzIyMGRkODhlOGM4YmEzMyBsZWdhY3ktdHJ1bmsKKzg1MTAgYWM3NTU0ZjI5MzEzNjllMzViZjk5NWE5M2JiMjg1MDdmZWZiOGFhMyBsZWdhY3ktdHJ1bmsKKzg1MTEgMWNmNzllYThmZmEyYTU4YTkwZDhkMTA2Mjk1MTc2MjgyY2RkZWVjNyBsZWdhY3ktdHJ1bmsKKzg1MTIgNjE0MTE4YTEzNDhjOTQyMWI3YjNmZjJmMWNlNGQwNDg4NjYxOWVhOSBsZWdhY3ktdHJ1bmsKKzg1MTMgYmUxYjc4ZTcwNzI4NzI4M2QzNWYyMmM3MDNkZTIyMTE3MmQzNThiOSBsZWdhY3ktdHJ1bmsKKzg1MTQgNGMyMjkyZTcwOWIyZDI3ZDUzN2Y3Y2NhZjZiNjAzMTU4NWNjZjZiYSBsZWdhY3ktdHJ1bmsKKzg1MTUgNDdhZGYxOGQwMWFkZDc4NjNlMDZiZDMzMmIzNWMxMjdkMzllZjk4ZSBsZWdhY3ktdHJ1bmsKKzg1MTYgNjE5MjMyMjM2ZGRiOGE1ODZmMzMwNDUwYzA0Zjc1YWI5ZmUzYThkYSBsZWdhY3ktdHJ1bmsKKzg1MTcgMWE0MzY5OTEwOGE2Mzc1NjU2MGI0YjMyNzY2OGQyZDJjODczYzllMiBsZWdhY3ktdHJ1bmsKKzg1MTggYTllMWVhODBlYTNmNGFhNTlmNTNmMzI1NzI1MjdlZGRmOGVmOTQyMiBsZWdhY3ktdHJ1bmsKKzg1MTkgNmRiM2Q1MmQ0YTc4YWYwN2VmYTIzMmM3NWIzYTMyMjFlYmRlY2E0NSBsZWdhY3ktdHJ1bmsKKzg1MjAgYzA3OWU5MjRjOTI3MTg5NjFiM2I5ZmUyNWQ1YWEwZjgxNWM0ZWY3MiBsZWdhY3ktdHJ1bmsKKzg1MjEgMGI5ZWMxYjM0YTdhNDA4ODBjZDI5YzJiNDdlY2MxM2FhMmI0MWNiMCBsZWdhY3ktdHJ1bmsKKzg1MjIgNmViMWUzNTQ5ZTJkYmJhNjI2ZWQzZTVmMjU4Y2M1YTkwMjE0ZGQyNCBsZWdhY3ktdHJ1bmsKKzg1MjMgOGJhNDZiMDc3OGRhZDI4ODcyYzkzMDA3ODBlMzRmZTUyZjE2OGE5OSBsZWdhY3ktdHJ1bmsKKzg1MjQgOTZmZWNjODBhMjhmN2M5ZjE1MDI0OTRkYzMxOTA0OTA2Y2JjZmY2YyBsZWdhY3ktdHJ1bmsKKzg1MjUgZTkzNjYzMTE3NmI2MWQ2ZDE5OTcyOTQ5NjA1MDRmMmZhNTUyNTgyOSBsZWdhY3ktdHJ1bmsKKzg1MjYgNGYxMmMyMWY4NzQ3OTY4YmM0MDdkMjIxY2M2NTJlOGVkZmI1NjRmNCBsZWdhY3ktdHJ1bmsKKzg1MjcgNjA3MzFiMTlmZTM0ZDU3ZTkzZjIzNDkwZGUzMjBhN2MxNGY1NzBmMSBsZWdhY3ktdHJ1bmsKKzg1MjggNmIwYWZiYmZlMGI3ODE5ZGQzODcyYTY1ZWIyMTg1NjE1OGY0Y2QyZSBsZWdhY3ktdHJ1bmsKKzg1MjkgMWRhMTIyNzE4NTk4ZTc1MDEzMzZjZWJkNTBlZDA5ZDkyYjAyMTIzZSBsZWdhY3ktdHJ1bmsKKzg1MzAgZGEzYzdkNDdmMjEwYTZlNWQ1YTAxMGJjMmYyNDY1ZDJkOTE0MzRlNyBsZWdhY3ktdHJ1bmsKKzg1MzEgY2FiOWVhNWU0ZWVkMzdkNzExMWYyNTY3N2RmZTA1M2I5MDMyNWJlMSBsZWdhY3ktdHJ1bmsKKzg1MzIgNzJkMDA0OTcxYjI2Nzk3ZTAwNzU5ZDAyZGY0NDUwOWNiYzY2Njc1MyBsZWdhY3ktdHJ1bmsKKzg1MzMgOGVjMDIxMjdjNDRiYjQzNTllNzExMTJjMGJiNDg2NjNhYWIzZWI5NCBsZWdhY3ktdHJ1bmsKKzg1MzQgNTY2ZDBjYWU5MTkxNWFiMTIyYmRkMTVlZDcwZmI5YjY1NjY0ODU2MiBsZWdhY3ktdHJ1bmsKKzg1MzUgODc3ZGJiYTNiNWE4MDQwMmM1NjU5YzFlZmJhYjEyZGU5MjczMTZlZSBsZWdhY3ktdHJ1bmsKKzg1MzYgMzg3ODRiODUzZDIzMWQyYWZlZWU2ODc2ZmQ2ZmQzMjM3ZTM1MDc2YSBsZWdhY3ktdHJ1bmsKKzg1MzcgMTE0Mjk5NjhlMjlkMjJlZTRhNGE0ODAxNWI4YmY3YzBkYmVlNmRjNCBsZWdhY3ktdHJ1bmsKKzg1MzggMzZkZjQ0MzRiM2IzMDNhMTRmNTg2YTM1MDg1MDcwODMxNjcwNzk2NyBsZWdhY3ktdHJ1bmsKKzg1MzkgNzRhNzg2NjZkZGM4YWZiZDMwZjMwMmM3Y2VjNDEzZjU5MmUxYjAzYyBsZWdhY3ktdHJ1bmsKKzg1NDAgYTVkNTAzZWNhNzQ3OGRkNDhlNWY0ZjNhZTVkZTdiODJlOThhYjEwYiBsZWdhY3ktdHJ1bmsKKzg1NDEgZTg4ZDJlMzIyYzVlYmU4MmNiY2VjMGZkMjdiZjljY2I5ODBmN2U0NSBsZWdhY3ktdHJ1bmsKKzg1NDIgMGY0MTkzYmQwOGQwYmNiYWVkNjI1Mjc0YjE4YjY0MDRiMDk0MmFmMiBsZWdhY3ktdHJ1bmsKKzg1NDMgZTRjZDA5MmY0M2Q2NmFhYTg2NWZlZGIyMDcyOTZiY2M4NDRhYThjOSBsZWdhY3ktdHJ1bmsKKzg1NDQgM2QzZmE4NzczODdhZWQzMTY0ZGMyMmU5MzhmMmRhMzc5MzE2ZGMzMyBsZWdhY3ktdHJ1bmsKKzg1NDUgOTI1ZjkwYjQ4ZDczNzI0NTM3ZDA3NzVkZDAyMTk1MGFjMGMwZTc0YiBsZWdhY3ktdHJ1bmsKKzg1NDYgZTBmMjQ5OTkzYTRmN2Y1OWM5MjYxODE5OThhODEzNmFhMDNhZWYwMCBsZWdhY3ktdHJ1bmsKKzg1NDcgNjQzZmE1NGYyMTI0NTgxZDVhNjNmMzhlMzliNGUyNzE2ODhjNWJhNiBsZWdhY3ktdHJ1bmsKKzg1NDggZDkxY2MwYTU3ZGFhM2E0MzJkNzZkOWRkZjFkM2Y4ZjlmM2QwZDJiNCBsZWdhY3ktdHJ1bmsKKzg1NDkgYzdiNWE3MjJkOTI2NDk0ZTY2ZTFjYTI0YjdjOWYzMWQ0NmIwMWQ0NyBsZWdhY3ktdHJ1bmsKKzg1NTAgZWNjOTQ5MGVjNzE5Mjc4MzhiMjk3ODExZjA4YTc1YjIyOTI4YmM4NCBsZWdhY3ktdHJ1bmsKKzg1NTEgNWU1ZTU0YTZkYmE2ZmFiOTJhOGVkYTE0NWIwZTdmZTk2ZWI2YWQ4MiBsZWdhY3ktdHJ1bmsKKzg1NTIgYmYzZjQ4N2ZjZDhiNTdmOTkwOWVhYTI3ZWFlYTIwZTM3OGFmYjUwZiBsZWdhY3ktdHJ1bmsKKzg1NTMgNjU0MGViMTdlNWI2NDU3YjVjYTVmOThkZTEzOTcyYmE2OWNiMTkzNyBsZWdhY3ktdHJ1bmsKKzg1NTQgODgxNGNjZjJkMWNkYjY1ODI4NTQ2NGFhYjViMjM1NWMwYTEwZDJiYiBsZWdhY3ktdHJ1bmsKKzg1NTQgZGM1Yzk2OGVjOTkyYWFiM2Q0MGE3MTg5ZGYwYzQ0M2QxYzdhMWE2OCBsZWdhY3ktdHJ1bmsKKzg1NTYgMmYxYTVjYWQyN2I3YTIzMDFiYzA4ODRhZGQyMzY1NTQ1ODYyNTI1MCBsZWdhY3ktdHJ1bmsKKzg1NTcgZDNjNjAzNWFjM2NiY2FiNzVmYmZmM2U5M2FiZWNmNjUzYjFjZWM2ZiBsZWdhY3ktdHJ1bmsKKzg1NTggMGViMTRhNjQ4NGYzZjhmN2QyZjNhODRlNzVhYjRmZDMxMmM0NjFjMSBsZWdhY3ktdHJ1bmsKKzg1NTkgZDdjYTA1NTQ3OTVlZWYzZmI0MWZiZjE5N2QxYzBkMDhlOGNjYTBlZCBsZWdhY3ktdHJ1bmsKKzg1NjAgZjE1OTA0NDUzMGIxODI3MDQ2NzI2ZmIzNjAyNmVkNzEwYmMxZjlmZiBsZWdhY3ktdHJ1bmsKKzg1NjEgMGFhNjJjYmVkOWY4MmU5MTcyOWQzOTkzODliNThiMWU3MWI5YmNkMCBsZWdhY3ktdHJ1bmsKKzg1NjIgZjlmMDI2MmM0YzU3NmU3YjdkNTBiYmU0NGUzOGMxZmRkY2JiNjliOCBsZWdhY3ktdHJ1bmsKKzg1NjMgZDg5YTIxOWI0OWE3MjEzYzFiMmM4NTBkNWVhZjFkN2U5MjUyNjU0NyBsZWdhY3ktdHJ1bmsKKzg1NjQgNjIyYzhkOTgxYTY5NTVmYTYxY2IwNTJmYjVkYjI0MjVjMjBhMjI5MiBsZWdhY3ktdHJ1bmsKKzg1NjUgYjA0NGM0NzljYmM4MzA1MTgzZTUzZmEzZDJiNjFlNzY5MDI0YmEyNyBsZWdhY3ktdHJ1bmsKKzg1NjYgZWRhZWU1Mzc4MDIxMzNiNmJlMDIwOWVkNGQwY2UwNTU3OTEyMWNmOSBsZWdhY3ktdHJ1bmsKKzg1NjcgZjEzMDQ5ZWQzMWZkYjkzNDMxN2FlZDVjMjIxZDY2ZTk5YWY3Mjc3MSBsZWdhY3ktdHJ1bmsKKzg1NjggZGM5MTZkOGJiYjU1ZDg4MjQwNWZkOGJmMzJhYWVjZDg5NDY2NThmMSBsZWdhY3ktdHJ1bmsKKzg1NjkgMjk0OWMwYTQwYjdiZDA4Y2FkYzhhYWQ2MTQ1Y2U3YmMyZTg2M2U5MCBsZWdhY3ktdHJ1bmsKKzg1NzAgZDEwOTNmMzQyMWI2ZjUyODBiZWIyMmM3ZGY4ZGFiYzljN2NjNGEyNiBsZWdhY3ktdHJ1bmsKKzg1NzEgYTIyZmNhN2E1YzVhN2QxMjcwN2ZmOGFlMWRlZjcwYzU0MzAxZjI2MiBsZWdhY3ktdHJ1bmsKKzg1NzIgMjc0MjI2NGVmZGRlZGQ1ZDk1OTJmZmM4MDc5NDMzMDdlMDgyNzU1NyBsZWdhY3ktdHJ1bmsKKzg1NzMgNDRiOGNmYmRhNDQxMjQwMzIyNmZiZGIzOGUyMzQxMTc3YTlhYmIxYiBsZWdhY3ktdHJ1bmsKKzg1NzQgZDEzN2U2MjRjZTQyYjIzOTFhZmI5YTRjMzA1M2YzYzJjYWYxMmU2OSBsZWdhY3ktdHJ1bmsKKzg1NzUgMTc5YmZkMGZlZTI0YTI3Mzg4ZDVlNTk5OTUwOWE3NTdjNTAwYzYwYyBsZWdhY3ktdHJ1bmsKKzg1NzYgOGY3ZjQ3NzAwN2IzODg2NTJjNTY3YzI4NTE4NmU0YzRjMzg1OTI2NyBsZWdhY3ktdHJ1bmsKKzg1NzcgOGJiMTI4MjE1ZGM1OGMxZTg5ZjhmY2QwZDY1MGE3NDI5MDkxODk4MSBsZWdhY3ktdHJ1bmsKKzg1NzggYTY0ZDE0YzQ5MTRmMjE1ZTUwMTgyMTZhZTgzMWNiZmJjMTkzZWEwOSBsZWdhY3ktdHJ1bmsKKzg1NzkgNGQ4ZWJmN2FmZmFiNGJkYWRiNzBhYmVkNWU2NmViODVhYzFiZjQxZSBsZWdhY3ktdHJ1bmsKKzg1ODAgM2JiODk3MGZiOTE4MzBhNTkwMTNjNzA0YjVhNjcyMzc1NzFmOTFiOCBsZWdhY3ktdHJ1bmsKKzg1ODEgZjNjMGMxN2I5NzA4YmY4MmM5ZGEwYWRiODgzOGE5NjYyZWFlMmY5NCBsZWdhY3ktdHJ1bmsKKzg1ODIgNzdmYjg4MGVjYTQ5MWZlMTM1OTRlNmRhNGVmNjRhZDgwOTI5MmJiMSBsZWdhY3ktdHJ1bmsKKzg1ODMgMzZiM2IzMzdjNTY2Mzg0MjFjZmEzYmRjOTU1ZGVhN2YwZjM3YzA1YSBsZWdhY3ktdHJ1bmsKKzg1ODQgN2JkNTY1ZTRmYmI1YWEwNDU1NzBjN2E1YzY3ZWQ5NzVhMGZkYTgyYyBsZWdhY3ktdHJ1bmsKKzg1ODUgMTY3NmY1Nzk1MTgwYmNiNzZmNGFlYTFmNDQ4MThkZTFkZjJkNjUzYiBsZWdhY3ktdHJ1bmsKKzg1ODYgOGNiMmFmZDEwMTE5NTAwZWIwZTBiMzM4NmU5YTNiMTFmZjNhNDVhZiBsZWdhY3ktdHJ1bmsKKzg1ODcgMjYwYjIxNzY5MDYxYWE5MDZhMWNjMmE1MmZmMzRmYTkzMWUyZTNiMSBsZWdhY3ktdHJ1bmsKKzg1ODggOTczZWYzNWVmNDgyNTY4ZjM5NTYyYzMxMTVmNjlhNmFjZDcxZjllOCBsZWdhY3ktdHJ1bmsKKzg1ODkgNWQxZjMzN2NlZTI2OWY5MTFhYzZmZTI2YTdiOWY2N2E2YmMyOWQ1NSBsZWdhY3ktdHJ1bmsKKzg1OTAgZDkxZmQ3Y2Q4YmU3YjJmNmJkNDI2ZTE1MDQ4NjZiOTYzMjYwZDNiMSBsZWdhY3ktdHJ1bmsKKzg1OTEgNzM3ZWQ2NjUyODk4ZTk0MTZjODA4OTljMzI5MzBjN2VhMGI5YjhjNSBsZWdhY3ktdHJ1bmsKKzg1OTIgNjVjOWJhODAwMDMwMmMyZjQ2YTVhYjgwYTU5ZDFmZjcyZDM4ZTI0MyBsZWdhY3ktdHJ1bmsKKzg1OTMgMDdiN2Q0MzIwYjE0YWRhYTUyYmE4NDlmZTc5MjA2MzAwZDA2NTJiZiBsZWdhY3ktdHJ1bmsKKzg1OTQgOThhMjgyY2ZiMDEzZTc4MjI4N2FjMzQyMWIxOWVhMGUxOWRlNjkzZiBsZWdhY3ktdHJ1bmsKKzg1OTUgZDEzZDNjMmM5ODYwYTkzNDJmMTIwZTM4MzM2ZjRiZDgwNGJkZjM5NSBsZWdhY3ktdHJ1bmsKKzg1OTYgYzIwYjY5ODBhODcwZmNkNjFjOGZlNzA1ZWJlY2U4MGU5YzQwMWQwMiBsZWdhY3ktdHJ1bmsKKzg1OTcgZGYyOWU4M2MzMDRmYWE0ZWQyYjQ4M2EyMTViYzU5MTIyOTUzNGU4NSBsZWdhY3ktdHJ1bmsKKzg1OTggZGYwMjhiYzU0ZTZmMzJhNWYwZjhjMGExN2FiNWJlNDBjMmNmMjQzMyBsZWdhY3ktdHJ1bmsKKzg1OTkgZGI4YWM2ZTEwOWI0ZGMwYjkyOGQwNmE5Y2NlZDdiZDc1Mzg3ZTZiYyBsZWdhY3ktdHJ1bmsKKzg2MDAgNzQ4ZmI1YTAwOWE3YzBjMzAxNmE4NWNiM2QxOTM1ZmFmMWJmMzNiOCBsZWdhY3ktdHJ1bmsKKzg2MDEgY2MyYzg0NzY5NjM2YTQyNTlmN2ZlOTA1ZWEwOWNlNzlkZjYyZThiYyBsZWdhY3ktdHJ1bmsKKzg2MDIgZDRlODdhYTdiZmYwNTY3OTE1MjZmM2VmYjRmNGQ2MDRiYzFhMTU0MCBsZWdhY3ktdHJ1bmsKKzg2MDMgYjQ0OTM0YzIwMTI1ZWZkOGEzMjIyYzcwYTNhOGMzNjRlMDM2NGMzNyBsZWdhY3ktdHJ1bmsKKzg2MDQgNDI1NDA5NWE1MDI5ODAxYzBmOTI2MzQ3ZjA1MjI5NGJkZjU2Y2M0NCBsZWdhY3ktdHJ1bmsKKzg2MDUgMDYwZjgzOTMyZTkxYTZmNTgyM2U4MjAxNmM4ZGZhMmI4ZWYzNmZhNSBsZWdhY3ktdHJ1bmsKKzg2MDYgNWRjMDc4YjIxM2U1ODJkNzFlYTgxY2QwYzAwNmM0ZGZjMzNhZjJjMyBsZWdhY3ktdHJ1bmsKKzg2MDcgMmQ5NTgyZWVlMTEyZTZlOGNhZGZkNjRmMWMyNGU0OTNkMTNlODYwZCBsZWdhY3ktdHJ1bmsKKzg2MDggODU0MmI4OTAzOTg5OTVmOWMwMzI5YWMyNzhiNzE4MjcwOTE0NGE0YyBsZWdhY3ktdHJ1bmsKKzg2MDkgOTQ2MDViMDAyNmU3ZjZiZjM3NzJhN2MwNTFlOGE2MjY2NjliMzM2NSBsZWdhY3ktdHJ1bmsKKzg2MTAgYjRhMGJlNWM0MmJmNzU5YjVjMmYwZjI4OWIyMTgxYjk0M2Y3OGUzYiBsZWdhY3ktdHJ1bmsKKzg2MTEgNTUyODNmNjgxYTFjMjEwMWQxOWU3ZjM3MGUxY2YzOTY5NjEyY2ZiYSBsZWdhY3ktdHJ1bmsKKzg2MTIgMzJmNjU3NDE3NDNiZDdhYzZiZDE4ODM2Njg2MmEzZmFmMGQ0YjAxYiBsZWdhY3ktdHJ1bmsKKzg2MTMgNTcwNDVmNTFkZDEyYjA0ZDI1ODY1NTdmOTI4YTIyZjEyYzBkYjQ2MiBsZWdhY3ktdHJ1bmsKKzg2MTQgNDBhYmYyM2UxNjhiZmMzYmFjZDFkNTkzYmY2ZjYxYWFkYjM1MzI5YyBsZWdhY3ktdHJ1bmsKKzg2MTUgZjgwZTc2M2MxNzE3ZGU3OTExMDgyZTI1MDgxYjUyNDkzMTMzZTEwZSBsZWdhY3ktdHJ1bmsKKzg2MTYgYTI4N2M1MDE0ZTY2YTgxODhiYWUyOTEwMWUyNmNhMWY2YmU4MDFmZCBsZWdhY3ktdHJ1bmsKKzg2MTcgM2M5NTEyNDAxZjZkNmI3NmY5YjEwOWIzZTZjY2FmYTJhYzdhZDQzMiBsZWdhY3ktdHJ1bmsKKzg2MTggOWY2MTZhNDkyMTk2NjE5MTAwNzlmNWNmMzNkMjQ4MmM1NmY0NWRmOCBsZWdhY3ktdHJ1bmsKKzg2MTkgMTQ0ZGI2MzViNDlkMzNlOTliNmZkMWU1YjczNzc0NWNkMTc1N2FlMiBsZWdhY3ktdHJ1bmsKKzg2MjAgYzIzMzRkOTdjZTE0Y2E0MTY5NWU3YTk5MzZiNjY3MGYwNDU3ZTgwZiBsZWdhY3ktdHJ1bmsKKzg2MjEgMTQxODIwMjQwMTExMDlkY2U1ZTM1N2I0ODg5YWY1MTM2MTY5OGNiNSBsZWdhY3ktdHJ1bmsKKzg2MjIgMzQxZmNiN2JhZDkwM2JhMjkwZThiMmJhMDllZjQ3YTE2YzQ1YWY4YyBsZWdhY3ktdHJ1bmsKKzg2MjMgYTJhMWRmMGNhODA4ZjYyMzM0OTIzMjJhMzc3MTUzYjhlN2FhYzM1YyBsZWdhY3ktdHJ1bmsKKzg2MjQgYjc2YTQ0MTYzZTBmNjAzYjZkYzRjOGFlZWUyYTZhY2VjMzk4MThjMSBsZWdhY3ktdHJ1bmsKKzg2MjUgNDU4NGYwODkzMGFjOTFiNDAzNzk3NDk4YzNmZTVjYTk4ZDRmYTE5YSBsZWdhY3ktdHJ1bmsKKzg2MjYgYmIwMTExMzA4N2ViYzUwYTM3MTU4YzA3Y2U2YTk5YjM4NWRhZTRmZSBsZWdhY3ktdHJ1bmsKKzg2MjcgOWE3OGNlMWRiOGY2OGVmMTk4OWE0YzBlNGI3NGEwN2FkOTc4ZTRiZSBsZWdhY3ktdHJ1bmsKKzg2MjggOWZkNjBlNjQwYWU1ZDA5NzcxMGFlMzQxZjVjNGIzOTVmNmRhMTczYSBsZWdhY3ktdHJ1bmsKKzg2MjkgZDdjYmQyNjUxZTU1OWJiZGZiNzJmOTg0ZjhhNjA2YWM1YmRkMGI4ZiBsZWdhY3ktdHJ1bmsKKzg2MzAgMTdhMjZmOTg2MDA3ODg0MjMxNzc1YjgxOWFkNGUzM2IxNzMxOGQxOCBsZWdhY3ktdHJ1bmsKKzg2MzEgMmVlOTgxMWM5MmZkNGIyZWNlYTY2MjBjOWVhZjcyN2IzNzdiYjhjNiBsZWdhY3ktdHJ1bmsKKzg2MzIgNDc4NjcwMDZmMDc2YWU4NTU3NmFkMmQ4MzI5Y2IwNjgwOWY2N2JjYSBsZWdhY3ktdHJ1bmsKKzg2MzMgMWEyYmZhOWEwM2Y3NDJmODY0OThkOWVjMjA3YWFjYTJhMGM2NDU2ZiBsZWdhY3ktdHJ1bmsKKzg2MzQgNjQ3ZTYwZmIzYmFjM2Y3YzA0YjMxMGY2NDMwYWIzNzAzNjcwZmEyMSBsZWdhY3ktdHJ1bmsKKzg2MzUgMmUwYWE4ZDgxMzk2NGJiNmJhZGQ5YTgwZDMxM2FjOTU0MGVmNDFjYSBsZWdhY3ktdHJ1bmsKKzg2MzYgMmIwM2ExZGZkYmQzZmU2Yzg0NTMxZjBlMWY0OThhOTc1MjRjYjE0NSBsZWdhY3ktdHJ1bmsKKzg2MzcgNzk1OTI3NjFiMzMxYTA2M2YzYTU4YWMyNWRhNWFmZjU2MzY3ZWI4MSBsZWdhY3ktdHJ1bmsKKzg2MzggZDNkNWEyNWYzYjcwNWNhMjU2M2UxYWE4ZTFjNzhjNGJiMjEzNDlkYyBsZWdhY3ktdHJ1bmsKKzg2MzkgOTE4M2EzYzZiODVmY2EzNjJiY2Q4NWJhNGZjZTUzYWI1NGZjNjA2NCBsZWdhY3ktdHJ1bmsKKzg2NDAgMTE5ZDE4NGJiNWVkODkwZTgxNzcyNDdmYzRlZjZhNjk5NmI4NjliOSBsZWdhY3ktdHJ1bmsKKzg2NDEgM2VjNWNhOGFmOTFkMWM2MzU4ZTVhZWUzNTZmZGIzOGY1MGZlZjY2NyBsZWdhY3ktdHJ1bmsKKzg2NDIgMjlkZGYxMDQ5ODQyNzRhZmYyYjU5YzMyYzhlNGQ0MjA1OWFkNTVmNyBsZWdhY3ktdHJ1bmsKKzg2NDMgYTE4ZTFjZWJkMjlmYzhjZmY0ODNkMDA1N2ZmZWQwODg1ODkwNWIzNyBsZWdhY3ktdHJ1bmsKKzg2NDQgOWU0MzI0NjhmNzU2MDVkNmIwNDQ1ZmJhYTkyZmUwZTdhY2FjNjc5MCBsZWdhY3ktdHJ1bmsKKzg2NDUgMjUxNGU5ZmUyOWY2ZDczOWEzZjE0ZjU4Yjg0N2JiY2NiODJkZDdiMiBsZWdhY3ktdHJ1bmsKKzg2NDYgNDMzZDNlMWMwMmY3ZDA2OWZhY2YzMzQwMzdiY2IzOTVjOGQ3OTJkNyBsZWdhY3ktdHJ1bmsKKzg2NDcgM2U2ZDY4OGIwZDJhMjcyYmYyNTFhMmNhMjNhMmM2M2ZlNTVlZTAyMyBsZWdhY3ktdHJ1bmsKKzg2NDggOWEzZTZmMGQ2YjVhOTc3NTI0MGYzYzJjYWI1MGVjMjE4YmEwOTI1OSBsZWdhY3ktdHJ1bmsKKzg2NDkgMmY2MDgzNGVlYWY1ZDYzYTk2Y2E5Yzg0MGQ3N2NiNzE5OWRhZTBkMCBsZWdhY3ktdHJ1bmsKKzg2NTAgMjUzZTExYjYxMTA2ZDhlZGVkZDNmYjE1OWFkODQ0YzA2NjUxYTc0NyBsZWdhY3ktdHJ1bmsKKzg2NTEgNzcxMzVkYTlmMzZjZGNlYWEwYzhiZDljYmQyNWEzZWUxOWE2Y2Q5ZiBsZWdhY3ktdHJ1bmsKKzg2NTIgMTlmZTg4MGNhOTE5ZmE3NTU1M2Q2Yzc3NzI1MzczMWE2ZWM5YWJiZCBsZWdhY3ktdHJ1bmsKKzg2NTMgMThmODI0ZTViOWVhZTliYjUxNjlhYWU1YTQ1Yjc5MDE2ODJmMTE3YiBsZWdhY3ktdHJ1bmsKKzg2NTQgYWFjZTUwMmI4ZThiMTM0NDliZmFjMDliYjQ4NTY0MDc2NjQ1NDg4YSBsZWdhY3ktdHJ1bmsKKzg2NTUgYjU1YjIxN2YyZTBkNzljM2YzODQyNmQ2YjM0MWM2ZGU0ZDZjODc4ZCBsZWdhY3ktdHJ1bmsKKzg2NTYgNmNiNjZmMGNhOGQ1NDA4ZjRhYTg4ZmNjMmZiNjU0OTg4ZTBiNWU1YSBsZWdhY3ktdHJ1bmsKKzg2NTcgMmZmNzZlOWJjODVkN2ZkMjQ4ODg4MTc1ZTExYjZmMWI1OGFmOWUyYyBsZWdhY3ktdHJ1bmsKKzg2NTggZWY5YTI5NTNmOTMzNDM5ZWVhNDRkMTMzMWExMDdjMDdmNTQ3NjM5NyBsZWdhY3ktdHJ1bmsKKzg2NTkgNDNiOGM0YTY5NmQxMTRjZDBkMWMzZTViMTk5NzA4OWJiNzMyNTA4NCBsZWdhY3ktdHJ1bmsKKzg2NjAgNjRlMTk0YzVmODU0ZDA3NTI0YjAzYzY0YWMwNzIxNjYyZGQ0N2VkYSBsZWdhY3ktdHJ1bmsKKzg2NjEgMTEyNDlkNDM5ODQwNDljMDYyMTIyZTQwNzQwOGY2ZTBlMTY3OTZjOCBsZWdhY3ktdHJ1bmsKKzg2NjIgMzJhYWNkNzUzZjM0M2FhMzhiZDg4ZWFhZjYzOWM3MDgzODcwNTdlYiBsZWdhY3ktdHJ1bmsKKzg2NjMgMmU3NTVkMWZmNjYxZjE1MGE4ODFkZTJjODI1ZTIxMGZjMDNmYmZhOSBsZWdhY3ktdHJ1bmsKKzg2NjQgM2VhYmEyNTFhMzI5OThhODUyYWRhYjBmNDlmNGU1MGUyNDhkYWM4NSBsZWdhY3ktdHJ1bmsKKzg2NjUgYjdjMmZmMzA3MDM5OWEyYTA5MjRjNmJiMWFmZTljYTlhNDEzOTkwZCBsZWdhY3ktdHJ1bmsKKzg2NjYgZTQ3MTAxMTliNDFjZDYxMjQ5MDRjZDFlZGQ5NzcxNGJhMTIyNDdjZCBsZWdhY3ktdHJ1bmsKKzg2NjcgYjU3NTdlODdlYjMyZWEyODhiMDM0MjVmZDkyMTY0MjdiMTQwYjJkMyBsZWdhY3ktdHJ1bmsKKzg2NjggM2E2YjdhMzc3ZGMzYTk2M2YzOWI0M2U0YzQ1MzMzZDYxMWZiOTViMSBsZWdhY3ktdHJ1bmsKKzg2NjkgMTJiOGE0MzU5OWQzMzczNDgxY2RmY2IzYTRjNjFlZTBlNDNkZjM3NSBsZWdhY3ktdHJ1bmsKKzg2NzAgYmY3ZDc3MDVkY2U1ZGNhYzI2ZTNjMDA2NWM0NzIxY2U4ZjI1ZGUzZCBsZWdhY3ktdHJ1bmsKKzg2NzEgY2ZmMTA1YTNhMzg0YTdlNzJmNDk3ZDYzNzJiY2RjOTljNWY3ZWY0MiBsZWdhY3ktdHJ1bmsKKzg2NzIgZDk3OTgwZTdjMDVmMzA1ZDRlOGRlMzA0MmI0ODdkYWExNjQ4NTk3NSBsZWdhY3ktdHJ1bmsKKzg2NzMgYWIwNDVlZDExYmM5Njc4OTgwZDk4MjJmY2RmZTQyZGEyNzYzNzU5MCBsZWdhY3ktdHJ1bmsKKzg2NzQgN2RhN2JhNWM2NTI1ODRmN2YxNDcxODAwNjlhYzEzNGU3MGEzNzYxMCBsZWdhY3ktdHJ1bmsKKzg2NzUgYzQzY2E4ZGQwMDgxODc2OWM3OThiMWM2OWJiY2ViMTE5MTcxOThmMiBsZWdhY3ktdHJ1bmsKKzg2NzYgZmU4OTcwOWMyZWFjMGJmNzdlMDFlMDdmZTA1ODAyOWYxMDRiYmU1YSBsZWdhY3ktdHJ1bmsKKzg2NzcgYzU3Y2VkZTNjN2MwMDIyZmYxYjBlZGU2ZDcxNjM5ZWFkYzc0YmNmMCBsZWdhY3ktdHJ1bmsKKzg2NzggZGM5NzRiM2E2Y2Y0ZjcyMmY2YzhlNzAxOTYzMzhlNWYyZTYwZGM2YiBsZWdhY3ktdHJ1bmsKKzg2NzkgYmEyZjExYTgyZjI3N2M1ZmQ1ZGI5ZjYwYmFhOTZhNzkyYzNiYmIxOSBsZWdhY3ktdHJ1bmsKKzg2ODAgZjU3YWU2OGFhM2FlNTI2ZWQ2NzhkZmM0MGY5ZDE5NDBiYWIxMjM4YSBsZWdhY3ktdHJ1bmsKKzg2ODEgMjRkNjY4NDU0Y2IwMDAyMzE5Y2EwMWNkNTkyMGI2MDQ5NGRlYmUxMSBsZWdhY3ktdHJ1bmsKKzg2ODIgZTU1NGI5ZjRhM2FhOTI5ZTJiZDcxYzk2ZDkyMjgxYmY2YjFlOTcxOCBsZWdhY3ktdHJ1bmsKKzg2ODMgNzdmNWI2Y2JlYTY2MjQwODhiNzVkYWUxMDY3YTQ2OTk0OWU2YmJkYyBsZWdhY3ktdHJ1bmsKKzg2ODQgOWMyZWU2YmJkYmIzMjM3ZjYxNmUyMjdkYjlmNTkzZWExOTVlYjMxNCBsZWdhY3ktdHJ1bmsKKzg2ODUgN2I0NWQ5MmUzODYxZTM3NjBkODg4ZWIyNjk3YjBmMzdmNjk1ZWEwYiBsZWdhY3ktdHJ1bmsKKzg2ODYgZmUzZmFjMWEzZTUxNzg0NmJiYjdhOWUzZTRjZjg4NzBiODEwYTBlYiBsZWdhY3ktdHJ1bmsKKzg2ODcgNmEwYmY2YjI2Mzk2NGZhYmE3MTE0NTVmOTc4MjE3MjNkMjQxZWE3NiBsZWdhY3ktdHJ1bmsKKzg2ODggYTEyZWUyN2NhZDkzMjJiMjEzM2MxY2IzYWJkMjBiOTBmMjIwNjNmNCBsZWdhY3ktdHJ1bmsKKzg2ODkgNTA4OGVjNWExMmE2YjJlMzA1MDM0MDU3OGQ0YjE1Nzc1OTIzMzE4MCBsZWdhY3ktdHJ1bmsKKzg2OTAgMzZkZmM4Y2MxZDAxM2EzMzE4NzI0Yjc2YjZjOGE4MzhiNzQwNTYzNCBsZWdhY3ktdHJ1bmsKKzg2OTEgNGUxZjg5YTEyZjk5MjkzMzcxNDY3MGMwMDFlMWQ3MDkzYWU0ZmNhYiBsZWdhY3ktdHJ1bmsKKzg2OTIgZWI3YTAxYjg2ZjkzMTZiNzdlOWU2MmE3YzEwYzNkYWQzZmMyYzFhNSBsZWdhY3ktdHJ1bmsKKzg2OTMgMzNjZWYwMTk2MWE3MTEwYjAyNzJkY2ZkMDFmOTEwNjk4ZWYyNjkzYyBsZWdhY3ktdHJ1bmsKKzg2OTQgYjcwMWRmODVjMDQ3NDc2NWM2NTYwODU2NjMyZmJkZWIwZTg2MzQwYyBsZWdhY3ktdHJ1bmsKKzg2OTUgOGI1OWMwMDRhNDk5YzEyNjFlMGQ5NzRhZTE3ZTIxZGI1NDA1OGJlOCBsZWdhY3ktdHJ1bmsKKzg2OTYgNDE4ZDM4NWE5ZTQyNGM0ZmM2Yjc1MzMzMjBhN2UxNTU0MmVmM2NjMCBsZWdhY3ktdHJ1bmsKKzg2OTcgZWQ0OTI0ZjNiMmE1NjFjMGM3NTQ3YTJjNjI0NmRhMDlmOGNhN2QyYiBsZWdhY3ktdHJ1bmsKKzg2OTggZWU1YmQwODUxN2U4NjJhNDczNjU2NzczZGFiYTBiZWZhMDJkOGY2NCBsZWdhY3ktdHJ1bmsKKzg2OTkgNzhhNGE1NjMyYTkxYzU1OWE3OTQzYjYwYTI2YTExNGQ4YzcyM2MyZCBsZWdhY3ktdHJ1bmsKKzg3MDAgODBiZGJjNDliNGM0MGI1OTI4NzJjNTFjZDY0OTg0OGUwZTkyYjljYiBsZWdhY3ktdHJ1bmsKKzg3MDEgODU2ZDg3ZDI4MmFjNmJhM2EyOGFlMDNiYTI0Mzg0YzM3Yjg5ZGI1MyBsZWdhY3ktdHJ1bmsKKzg3MDIgYTg1Y2RmMGJlZmM1Y2JmZDQyYzZhNzgwYWVkNzdhNGNmMDRhOTMzMyBsZWdhY3ktdHJ1bmsKKzg3MDMgOTk4NTUyMTliMzdmNjgwNzAyZDYxNWNiZTY3ZDg4ZjViNTY3YjNlMyBsZWdhY3ktdHJ1bmsKKzg3MDQgNjEzZjk3NmE1N2I0OTJkODZlZTZmNGFjZTc2YWRlMWVjNGYxNjZjNyBsZWdhY3ktdHJ1bmsKKzg3MDUgYjUzMzQ3YzgyNjBlZjE1MjZkYzAzOTUwMDRkN2RmYWZiMDM3N2NmOCBsZWdhY3ktdHJ1bmsKKzg3MDYgNGRhNDgwODcwOWM5NTk3NzU3ZTVlNTNlNDViNWYxMTUzNDg1ODYzMCBsZWdhY3ktdHJ1bmsKKzg3MDcgMGVmMGUwNTFiMWY4ZDIyYzEzZTJkNDVhYmNkZjUyMjMwODM2ZTIxNyBsZWdhY3ktdHJ1bmsKKzg3MDggYzg5MzkwZTU2YjkxNDJlYzg0OWNjZDc4YTNlZWU4ZDk2MGVmMmJlNCBsZWdhY3ktdHJ1bmsKKzg3MDkgZmM1ZTFlMDA0OTk0MGFlNzQwOGQzM2ZhZDk2M2UzY2Q0NTEzOTdhYyBsZWdhY3ktdHJ1bmsKKzg3MTAgZWZjZWQ4MzI2ZTNmMjUwYTZhNjUzOWNmNzI1NWIwM2M5OTNmODFlOCBsZWdhY3ktdHJ1bmsKKzg3MTEgNGU1ZmI4ZDlhY2IxYzYzYzk1NzAyMDYzOTE5MjViMzJmMWE3MzRhYiBsZWdhY3ktdHJ1bmsKKzg3MTIgMjQ4NDU5NjgzMjNmOTEwMmQ0MDJiMzYyYWNhYTZlNjFiNGFmNjJiMiBsZWdhY3ktdHJ1bmsKKzg3MTMgNmRmZWMzMjBmOTEwOWUxNGEyMzY3OGQ3YTc1NjYwZWEyNTY3M2YzNCBsZWdhY3ktdHJ1bmsKKzg3MTQgMDNiODc5M2Y3NmMyY2JjZWQ1ODYzMDM1MzA5YTI4NTQwMDE3MjZhZCBsZWdhY3ktdHJ1bmsKKzg3MTUgNDQ2MmQzYzYwMGJmOTcyYWM2YWY2MjFiMzcxNjE1NGNlMTA2MGU2OCBsZWdhY3ktdHJ1bmsKKzg3MTYgZjYwODc2ODM1YTc1OWMyMWVlNDQ3YWEwZjRiZWExYzA2ODJlOTc2OSBsZWdhY3ktdHJ1bmsKKzg3MTcgM2I1YmJjYWY5MTdmODdjN2VjMWI3NWNmZjgwNjFmY2U4NThhOTc3OSBsZWdhY3ktdHJ1bmsKKzg3MTggYWI2NDM0NGU4N2RiZGI1YjI3Njk0NmU0NDgyYjliNjhiN2VlYjExMiBsZWdhY3ktdHJ1bmsKKzg3MTkgMjFhMjg0OTBiZDk2MWNlOGMxZGY4Y2Q3ZGUxMDNjNDk3ZjJkMWFmYSBsZWdhY3ktdHJ1bmsKKzg3MjAgNDI3OWY0ZWIyMTBhMjE0ZjBmZjBmNDk3MjcyZDc3NDRmNGRjNzM1NyBsZWdhY3ktdHJ1bmsKKzg3MjEgNWFiMjFkMWI2MWQ4NmJmMzNiMDJlMzM5M2RhYjYzM2U0ZWYwMjJjYSBsZWdhY3ktdHJ1bmsKKzg3MjIgMTViY2VjM2QzMjU5OWU2NDk4ZDFhMTNlNzZkODM4OWQ3MWJiNjg5MyBsZWdhY3ktdHJ1bmsKKzg3MjMgNGNmMjBmYTg4M2E5MmUxZTc0YTkxNzg1ZmFmMDgzNzc2Y2IyY2E1MyBsZWdhY3ktdHJ1bmsKKzg3MjQgMTQ5NjQ0NGU4YzhiODMwNDdkMjRhYWVmZTJlYWNiNTYwMzM5NWRiNCBsZWdhY3ktdHJ1bmsKKzg3MjUgYWYxMTRlZDllNjFkZWQ2MGE3YmU5N2Q5NGU5MzIwOGY1MWVhNjUyYyBsZWdhY3ktdHJ1bmsKKzg3MjYgZjEwYWFkNzNlMDI5MzExMDI1N2E0ZjMwYzY0OTQyOTVmMGIyNjU2YSBsZWdhY3ktdHJ1bmsKKzg3MjcgM2ZhNGI3YWUwZTZiYzFmMGFhYWU0MDFmMDVjYzliYzgwZjZmY2EwYSBsZWdhY3ktdHJ1bmsKKzg3MjggM2UwYWE3MTYyYzg4MWY2M2Q3ZmJlZmI4NTdmMWM2ZGNiNmVmZjU3MCBsZWdhY3ktdHJ1bmsKKzg3MjkgNjQyOWRiNWQwYWY3MmQwMDkxZWIwOTFlNDQ1MDlmYTY3YzIwMzEzNCBsZWdhY3ktdHJ1bmsKKzg3MzAgNTIyNGVkODc3YmFlN2Q1NmI0ZGU4NDU2YjIzOTc1N2Y0YjNmYmFjMSBsZWdhY3ktdHJ1bmsKKzg3MzEgNGM3NmVlMDFkZjA4ZGIzYzRjYTQxZDAwMjUzZDI2Njc3ZDkyNjc5NyBsZWdhY3ktdHJ1bmsKKzg3MzIgZjQ0NmUwOGFjMzAyN2I4NmYyN2IzYWQ2NmE3NzRiYzk4NWRjNzlmZiBsZWdhY3ktdHJ1bmsKKzg3MzMgY2UyMDkyNzE0NDg0MzY5ZTg4Y2FlMjYyYjI2NTQ0ODUyZTAyYTlhMSBsZWdhY3ktdHJ1bmsKKzg3MzQgZGRkMjU1MTBmM2ZiNmYzMWJmZmYxYWY0ODFlOTU3NTM2NzU2MjFlNCBsZWdhY3ktdHJ1bmsKKzg3MzUgN2MxZWE4NWUyNjg0MmFiZDQyZGJlYWUyNjMyYzA5ZWIwZDU5ZjgzMCBsZWdhY3ktdHJ1bmsKKzg3MzYgNGZiY2M0Mjg5MDEyNmMyYjZjOTljYTY0OWUzOTdjMzZhZDIzNmM3MSBsZWdhY3ktdHJ1bmsKKzg3MzcgYzBjZDIzZTcwOGI1ODZlZDI4OGQyZWQzMWYyZTYwYzBmYzk2MmM0ZCBsZWdhY3ktdHJ1bmsKKzg3MzggZDk3OTQxZWM1ZWVkMDExNTRhYTdhNmIzMTY5NGY2NDA2ZDlkZmY0ZCBsZWdhY3ktdHJ1bmsKKzg3MzkgNTA3NGZhYjI5MjVkOGFjMGE4NTNhYTVjODE4NmRiYjdhOWE0MTJmYiBsZWdhY3ktdHJ1bmsKKzg3NDAgYWE2ZTA1MDRlMGYyYWI2ODczNTBiYzBhNjc5OGIxZjFjNDkxNTA4MCBsZWdhY3ktdHJ1bmsKKzg3NDEgM2RmMjJlZGNlY2FkODY5NzEyZDk1Y2E2YzcyNjhiMzNkY2Y3N2EwMyBsZWdhY3ktdHJ1bmsKKzg3NDIgOGE1MDI0OWFhNzJmMzNkMmE5MmE2NmRlOThiMDBlMGZkM2Y2NGM5ZSBsZWdhY3ktdHJ1bmsKKzg3NDMgOGMxZTAyMDg5Mzc5OGUwZjNmOTNhMWUyNzI3MDdmMzkzMmRhMDA1ZiBsZWdhY3ktdHJ1bmsKKzg3NDQgZWI4ZDFhMDk4YjlkZWNiMTQ2Y2YxZjI2MGE4Nzk4MTk5NWNhZjMxZSBsZWdhY3ktdHJ1bmsKKzg3NDUgMDIwYTNjOGFiMDcwYmEzNjY0NWUwMDljODc4Y2UyYWMwN2ZjMTUwNCBsZWdhY3ktdHJ1bmsKKzg3NDYgMTNjNTMyOWQyYzJlOTEyZmFhMWNmYjNmZTA5ZjY5MzgxYzU4YTljMCBsZWdhY3ktdHJ1bmsKKzg3NDcgZGVhOGRjNGI4ZTIyNWRmYmFkNTFkODAyNDFiMWM5MjRkYzhiMTliMSBsZWdhY3ktdHJ1bmsKKzg3NDggZTk5MjYyNDFmYWE0MDMyZmJmMmQxMGUyMTRhNGVhZDVjMDliZjM1OCBsZWdhY3ktdHJ1bmsKKzg3NDkgNzc1ODk5NTgzZGE2OWQxMDRhMzYxOGE5Y2ZjNWU4YWViZDcyYzY4NSBsZWdhY3ktdHJ1bmsKKzg3NTAgNDMzMzc3NWI1NWZkZGVmNmFlNWI0YzZiNDRlMDNmNzk4MzZlOWYwZiBsZWdhY3ktdHJ1bmsKKzg3NTEgN2EzODA4ZWRjNTM5MDQzNTEwN2ExMWViOWU0OWM1YmQ1ZGJmZmI5MiBsZWdhY3ktdHJ1bmsKKzg3NTIgZjlmYmRlNzVjNTM2NWE1ZjU4MDg5NjcwNDgxNGIxYjQ0ZGQ5MjQ4ZiBsZWdhY3ktdHJ1bmsKKzg3NTMgZWQ3NGNjNTljOGEyYzUwNGQyOTM5ZWQ0ZjY5ZmJjMGE2NGM3ZDNmZSBsZWdhY3ktdHJ1bmsKKzg3NTQgYmI1NDcyZmI0ODg1Yjk1MDJjYTJjNzNiZGQ3Y2Y5YTcxZDJmMGNjMCBsZWdhY3ktdHJ1bmsKKzg3NTUgMjk4NDQxNmExYjJiMjM4YzZmYzVmY2JiYTgwYzRjNDZjYzIwZWEwYiBsZWdhY3ktdHJ1bmsKKzg3NTYgMDc4NjAwNDlmMWM0NTE1ZmY5MjVjY2E1YzkxNDFmYTkzMTg4ZDQ0MSBsZWdhY3ktdHJ1bmsKKzg3NTcgYTI2NmU5NGNhNWUxY2Q5NDI4M2VhZDY3MmYxMWUxMzNjNGZlYzU2YyBsZWdhY3ktdHJ1bmsKKzg3NTggMzNlZjdiYTZlNzRiYTUxMzZiZDhiYzA4ZDBlYWVhNjM0ZmE2NWE0NiBsZWdhY3ktdHJ1bmsKKzg3NTkgZjY4MzllNTMyYmUyYjRlYTUxMjUyMTI4MTQwZGI4Mzg2YWM3MjU1ZSBsZWdhY3ktdHJ1bmsKKzg3NjAgZWJkYzQ4ZDA2Y2Y4NWVkMDI5NWRhNjJjN2U3MzAyZWFkY2ZlYWYwZSBsZWdhY3ktdHJ1bmsKKzg3NjEgZGFhNjJjMjI2NGI1MjU5OTU2OTcxZWNlODE1MDVjNGYwNjI2ZGExNiBsZWdhY3ktdHJ1bmsKKzg3NjIgMzM3MDU0ZTlkNGZhNDM3NTY1YzRmODE3MjUyMzRmMjVlZGQ1YzRkZiBsZWdhY3ktdHJ1bmsKKzg3NjMgODJjZDJiYWE0MTM2NDZmNmNjODBkNWJhNWI5ZTgwZTg3YTI5YjUyOCBsZWdhY3ktdHJ1bmsKKzg3NjQgNDg5ZGIzNjJjZDQ4ZDA4MzNhOGJhODkwMjlhNzRhODNjOWMxNDAzNSBsZWdhY3ktdHJ1bmsKKzg3NjUgNWZhNGIxMDMzYjA2ZmMxOTUxZWI1OGNmMDhhNTM2ZjUyYmJjYmI2NCBsZWdhY3ktdHJ1bmsKKzg3NjYgNjU0NDYwNDRmYjhmNzEyOWJkNmViNDBmYWE4MmY2NWY2ZjVkN2Q1ZiBsZWdhY3ktdHJ1bmsKKzg3NjcgNDdmYTNkZGZiMDkwYzk1YmVmY2IyNzYwM2M2MmY4MjI0MGQxOTYyMiBsZWdhY3ktdHJ1bmsKKzg3NjggM2Q2MTQ3NGExNTUwZDg2NTQ1NzMxOWM5ODA3ZmIxZDUzZjA2ZGI1NCBsZWdhY3ktdHJ1bmsKKzg3NjkgOGUzMWYxYzA3ZGM1YjJlZjAxMTA0ZWE5YWJiMDM2NjMyOWQ4Yzg0ZiBsZWdhY3ktdHJ1bmsKKzg3NzAgNmMwYTI2NThhMTU2MTA4YTA0ZTllMGIzMmJiNWM5Zjk3ZDE4MTM3OCBsZWdhY3ktdHJ1bmsKKzg3NzEgYTg0ZWYwYTcxMWJhMDkyYjcwODI3ZjAxM2ExMDY3NTA2YzUwMjU5MiBsZWdhY3ktdHJ1bmsKKzg3NzIgZWFiZGU4NmQ5N2YwNjk3ZjI1OGM5YjdiYzhjZjI0Y2U5ZWIzYjkzYiBsZWdhY3ktdHJ1bmsKKzg3NzMgYzBkNDNkNmY1MjQwZGU3ZTk5MDY2ZTgxZDk2NTI3YmViOWYwYmIyYiBsZWdhY3ktdHJ1bmsKKzg3NzQgNTA5NDc0Yjg4YjAxYzQxN2MzMzhjMzg4ZGExNDhiNzZiZjk0M2M4YyBsZWdhY3ktdHJ1bmsKKzg3NzUgZWJkMDk5ODg5NzIxYzQ4MDlhZjBmZTU4ZWQ4OGUwOGZjMzU4ZTMxZCBsZWdhY3ktdHJ1bmsKKzg3NzYgMDA1NGEzODQwYTc1MmE1MzcwM2QyYzFkYTE0MjMyM2FhNmQyZjMxMiBsZWdhY3ktdHJ1bmsKKzg3NzcgNDkxMDViOWU5OTQ3NDQ3ODgzMGI1Nzk4NzMwMmQ1NmViOWFjYWMzMiBsZWdhY3ktdHJ1bmsKKzg3NzggYTQzMzUyZjBlMWVlNmJhYWFmYmE4NzdiMjY5MGZkMjM4NjY0YWRkYyBsZWdhY3ktdHJ1bmsKKzg3NzkgYTYyZDZkMDYzYzBmMDg5ODNhMjZlNzExNzQ2ZDNmM2Y0MWIwMWUwZCBsZWdhY3ktdHJ1bmsKKzg3ODAgY2YwZWZmYzNmNTg1Yzc4OGM4Y2EwNzM0NTY3YmEwMjExYjk3NzFkNiBsZWdhY3ktdHJ1bmsKKzg3ODEgYjM3OGEwODg2NjIwMTUxZWRjMzg4OTdmN2U3YmM0ZDIzMTQ4ZjkzMyBsZWdhY3ktdHJ1bmsKKzg3ODIgNmUxZmE3NmU3OTQwN2QyNDNhYmZkMDc5YjM3Y2E3NjgzOTJmYjJlYyBsZWdhY3ktdHJ1bmsKKzg3ODMgNTlhOWZiZjU5MTI4NjNmYWEwZDE3ODQ5MDcxZGYyNzg4ZmU2YWY5NCBsZWdhY3ktdHJ1bmsKKzg3ODQgZTFlYTRhZDQ2MWY5MjNiOTk5OWUwZTgyODllMzkwOGViZTJkZWYwNyBsZWdhY3ktdHJ1bmsKKzg3ODUgZWE2ZTU4NzEzNmI2ZTNiYmQwMDgxYTg4NGNlMTkyYjY4ZGUwNjY3ZCBsZWdhY3ktdHJ1bmsKKzg3ODYgOTA0YTRkNzgzYTMzNzJiM2YyMWZkNTBjNGViNTJhOTY1MTg4MWQxZCBsZWdhY3ktdHJ1bmsKKzg3ODcgZWI1MTI4ZThhOGU4ZTNkNzI5NmU4NzYxNmJiZjVkMmRlNjk2NGJkYSBsZWdhY3ktdHJ1bmsKKzg3ODggMTNmYmQ5OGQ4MWNjMDYxYzczOTViMWI3MWU4YjM2ZDRjZWYyZjg3ZiBsZWdhY3ktdHJ1bmsKKzg3ODkgN2JhNzljOTQ5YjNhNzI3OGZhZmJlMGJlOGVlMjE4YmI5ZTcxODY3YiBsZWdhY3ktdHJ1bmsKKzg3OTAgYjk0NThkYzk5ZDUwYTBmMTM5NDA4NmY4MzlhOGEwNmYyNzE5YmU5YiBsZWdhY3ktdHJ1bmsKKzg3OTEgNGI3ODVlNTllODMxMjIwMDU1MWViN2M4MzU0OGRiZWFlOTJmMmU4MSBsZWdhY3ktdHJ1bmsKKzg3OTIgZDI1NDg5YzVhMjJmNGZmYWZkYjA3YWNmOGRlNGMxN2RhYTlkNDc0MyBsZWdhY3ktdHJ1bmsKKzg3OTMgYzIzNTk2NjViZTgwNzMwY2UxMmE3ZWY2ZDMyODczZTM3OWY0MTlmNyBsZWdhY3ktdHJ1bmsKKzg3OTQgNzFiNDBjYzRjYzAzNzJmM2NkZWJlMjk5NGZiMGJkZTE1MGY4ODg3ZCBsZWdhY3ktdHJ1bmsKKzg3OTUgY2RjNWE0MGZjZjk3NGU5NDJlZTZmNzk5NDFmMjQ2MjA1YWI1NDAzMCBsZWdhY3ktdHJ1bmsKKzg3OTYgYjdmMGI5OGY1MzI1MTdmNzUzODRhNzcyYWM2NTdlZjc5Y2EwYTlkOCBsZWdhY3ktdHJ1bmsKKzg3OTcgYTc1Y2E3NGRlZWNhY2M4OGFiOTNlM2QwMGFmOTlhYTNiMjNiNzkyNSBsZWdhY3ktdHJ1bmsKKzg3OTggOTEzY2QxZjM3M2JlNDdiNmU5MzA1ZmVjYmUyZDYzM2RjY2Q1ODM3ZCBsZWdhY3ktdHJ1bmsKKzg3OTkgMDVkOTQzYzQ1OTdjMmRjM2VlZjg4ZDhlZWQ0NTE1ODM1ODUyNDVjZCBsZWdhY3ktdHJ1bmsKKzg4MDAgM2Y4ZDdmNzRmMWJjNTQ5YTM0NmJjMmQwZGRiYWI1NjViYTk4N2IzMCBsZWdhY3ktdHJ1bmsKKzg4MDEgMjBiNTY0N2EwNjdlYmZlZmZmNTg4YmI1OGI3MjczOWQwODZkYjYxNSBsZWdhY3ktdHJ1bmsKKzg4MDIgNWNkYzNjYTA1M2Q2ZTgxMGE1NjU1NTBmYzEyNDAyZDdhNGZiZjcwYiBsZWdhY3ktdHJ1bmsKKzg4MDMgYjAxODM5OTQwMjFiMzcyZmNmNTEzYTI4ODMxMDczODFhNGU4NzYzYyBsZWdhY3ktdHJ1bmsKKzg4MDQgNGI0Nzc1YjQ5YmZhYzQ0YjYxN2E2NGNmOTJmYTQwZTYxYWI2OGFmMyBsZWdhY3ktdHJ1bmsKKzg4MDUgZGZlYWY5NjVmNDhhZDMyZjBiYjBlOWU2YzUyMGFhOWYyNWM4MjE3NSBsZWdhY3ktdHJ1bmsKKzg4MDYgZmJkY2ExNzI4M2MyM2JmMDA0Y2VmZjI3OTk3MjMyMWMxNzVkODJkZiBsZWdhY3ktdHJ1bmsKKzg4MDcgMTcyYzdmZWJkNzU1N2E1MDBlMzY5NzcyYWZhZTJjMDUxM2UwMDAzYyBsZWdhY3ktdHJ1bmsKKzg4MDggOTc5YzcxMjM4ZTViYjJjM2MyNDhhOWZmMDlhYzI4YTUyNWY0MTNmYSBsZWdhY3ktdHJ1bmsKKzg4MDkgMmY0YTkyNWU4YjRiMjQxNDNkMzI4YzIwNjNiYmUzNDFmOGRmZjRkOCBsZWdhY3ktdHJ1bmsKKzg4MTAgZGQxMDI3NjZlYTUxMjFiY2IzMDMyMDNkODBlYzZlZWM4MzE4MDIyOSBsZWdhY3ktdHJ1bmsKKzg4MTEgZmMxYzBhMjdiYjk2MzhhNmUwZDE2MDU5OWMwN2ExYWFlNWRmOTRjZCBsZWdhY3ktdHJ1bmsKKzg4MTIgNTc1ZjZiOTEwZjg4YjQxNmE3NmUzYzMyMzAyNjNiNTBjYzE1OTI1OSBsZWdhY3ktdHJ1bmsKKzg4MTMgYTQyYjMxZmU5NzZmNTU0NDFhMjljZDQ1OWNkNTBiZWVhNTJmYmYyYyBsZWdhY3ktdHJ1bmsKKzg4MTQgOWU0Mjk1MThjYjIwMTc0NTBkZDJkZGFjNTIwZmEyYzQ5ZWQ5MTFhMSBsZWdhY3ktdHJ1bmsKKzg4MTUgNGIwNzZmYzViYTQwM2VhYWQ1ZDAwZjQ4OTgxMTY4NTczZDFjZTZkOCBsZWdhY3ktdHJ1bmsKKzg4MTYgNmY4ZWI0YTFmYTA3ZWI3OTkxODFkMmYwYzAxNDJlMzdiMjZhZWNkMyBsZWdhY3ktdHJ1bmsKKzg4MTcgNTkzZjU0MTI5NjYxNmEzOWM4ZDM5MGFkYzQyNDc3ODZjNWE4NmZhMSBsZWdhY3ktdHJ1bmsKKzg4MTggMWVkOTE0ZjhiZjBhMGZlYzhjOTlmMmVmYmEzZjg5MmRkNTdhMzE1ZCBsZWdhY3ktdHJ1bmsKKzg4MTkgZTllZDA2NGYzOWY1MDVjZjdiNTA5ZGY3NjI1M2IxNWQxZmYyYWQzZSBsZWdhY3ktdHJ1bmsKKzg4MjAgNjg5ZGU2MTNlYTFjY2EyNzE3NzliM2RmMGEyMmU3OGRjOGNmZmEyNiBsZWdhY3ktdHJ1bmsKKzg4MjEgZTQwODdjZDQwYzg1ZDgwMGRiZWQzNmRiY2YxZmQ2ODhkNjEzZDgyZSBsZWdhY3ktdHJ1bmsKKzg4MjIgOThkYWNjODk3M2ExMjAyZjY0MjhhZWMyZjQ2OWFiNTQ1OTJlODIxYyBsZWdhY3ktdHJ1bmsKKzg4MjMgYTVmMjlhNTYwYzA5YTMzODg0MWE3YTdkMzE4ZTU2OGVkYjY3MTUyOSBsZWdhY3ktdHJ1bmsKKzg4MjQgMjY1NmQxZWVhNzkyMmRiOWYyZDUwZGU4ZWFmYTY0YjI4ZDYyMzAzNiBsZWdhY3ktdHJ1bmsKKzg4MjUgNmEzYjllN2Q0M2MxMzc3ZDIzM2YzOThkNzAyZWIzNWIwMmNmNTNmNyBsZWdhY3ktdHJ1bmsKKzg4MjYgYjczMzFiZDBjY2Y1NzdjYjlhOWE2MWE4MzA5MTM0YjA2MmNlNmRiMiBsZWdhY3ktdHJ1bmsKKzg4MjcgOWExMjFiM2ZiZWJiYmFmMWE1YTUxNTFkNDVjMDQxYjE2MTA0YjVjNCBsZWdhY3ktdHJ1bmsKKzg4MjggMzg2NGRmMjk0OTc5YTA2OTYxZjNjYjk3ZGFjZWM1ZTBhZTc3ZmVjYyBsZWdhY3ktdHJ1bmsKKzg4MjkgYjYyYTdhNTk0MTRlN2YzZTBmNzg1NTk3ZWRjNTk0Zjk2NGQ1OGY4OSBsZWdhY3ktdHJ1bmsKKzg4MzAgNjY2YWNjZDY2ODc4Yjc2ODEwM2JjODAxZjBhOGJlZTc5Mzg0ZWVjMiBsZWdhY3ktdHJ1bmsKKzg4MzEgZjRkY2JjMDI3Y2QyMmVlN2VhNDFiNzYyNjNhZGY3ZDU1YTBjYWNlNCBsZWdhY3ktdHJ1bmsKKzg4MzIgMmU0MGUyN2Y4YjI2MGZjNDc2MGI0NzEzZDE5NzRiZmU0NDk2YjhmYSBsZWdhY3ktdHJ1bmsKKzg4MzMgYTg1N2QyZjg3MzM2NGMwZjNlOGNkYzJhOTkwMGI1ZjQyNTU1MjQyMCBsZWdhY3ktdHJ1bmsKKzg4MzQgMTc0YzFiY2M4ZTJkMGQ4MjhlZjk2YzgyODY3M2U3N2VjMjliZDI3MSBsZWdhY3ktdHJ1bmsKKzg4MzUgOWU4MmRkNzYyODhlOGYxOTMwYTQ5YmZjM2Y4ZmIyZGY3M2Q0NjZkYSBsZWdhY3ktdHJ1bmsKKzg4MzYgN2RmNzhmOWQ2ZDM0Nzc3N2FhMTNhNmJiNjg5ZTMzY2QxM2UwZWY2ZSBsZWdhY3ktdHJ1bmsKKzg4MzcgZDY0ZTg1ZWQ3YjQ0MWRhZDdkZjIwNjhjNTYwYzJmMjc1ZjcwZDYzZiBsZWdhY3ktdHJ1bmsKKzg4MzggMGU3ZTIwMDQ5NjM3MjhhMzY1MmVlZWZmMGQ0N2NmZTRhYjc0MzU3OCBsZWdhY3ktdHJ1bmsKKzg4MzkgMzI2NjMyNjdlYjQwNjE5NjBjMDU4OWUwY2JmODIxYTRiMzhjY2Y1OSBsZWdhY3ktdHJ1bmsKKzg4NDAgMGM3NDY4OGJjMWZmYTQ5MzYwYjlmODNhNThiZGVlZDA0MjFlMGQzYyBsZWdhY3ktdHJ1bmsKKzg4NDEgZjM5YmVlM2ZmMjJiZGFjMmYxZTIyYWQ5YjAyZDI5ODFhODdjMzg3NyBsZWdhY3ktdHJ1bmsKKzg4NDIgMjFiOTNkOTg5MjZiODE1YWM5ZWNlMjg0ZDRiN2M2NDgyZWNhNzZkZSBsZWdhY3ktdHJ1bmsKKzg4NDMgNzFjM2JlYjI5NDk5OWRhYWFhODJmODQ3NTY3YjA5YzUwMGVlZGRmNSBsZWdhY3ktdHJ1bmsKKzg4NDUgMmMyOWI4OTgyNjQzMzdkMDJhMDBmNmRkNWQ5NGVlNThhNTBkY2E2OCBsZWdhY3ktdHJ1bmsKKzg4NDYgOTRlMGIzMWZkZjVmMjgzMzE1ODg4NzFmZjFkYWEyNTRjNjgxZDk3ZCBsZWdhY3ktdHJ1bmsKKzg4NDcgZjgyMjQwNDZjY2Y4Y2IzMzYyNTE0YTg2Y2UzOWY5ZDdhN2I1ZWIxOSBsZWdhY3ktdHJ1bmsKKzg4NDggMzY0MDUzMDkzOTdmYzI2NDkwNjdiOTI4ZTAyZTZiZDExZjAzMjczMiBsZWdhY3ktdHJ1bmsKKzg4NDkgNjc4YTNmMWQwYzgwOWM3MDBiZDJmNGY2NDkzZDkzNzhiOTk1YmVlMyBsZWdhY3ktdHJ1bmsKKzg4NTAgYzcxMzliNmY3MzQwNmUxYmIyOGYxMGY0MWJjYzgxMzUwZTc3ZTEzMiBsZWdhY3ktdHJ1bmsKKzg4NTEgNDdhOWE2ZGUyM2ZmYzIzYWYyOGMyM2MzODY3NDU1NGFhYzc0MDYyZCBsZWdhY3ktdHJ1bmsKKzg4NTIgZjZlZjlhZjRjOGI5NTRhNTVhN2I0ZjhlYmFlY2QxNjRjNjU4ZGM4ZSBsZWdhY3ktdHJ1bmsKKzg4NTMgYjY4MTg1ZDk0Nzc3YzBkMWFlMmE0OWJiNDk1MGRiNDk0OWRkMDlkYSBsZWdhY3ktdHJ1bmsKKzg4NTQgMWFmY2FjNzY1OGU1NzQ2ZTQxM2Q0YjIwYzMxZTYzNDE5NmNlNjNjNyBsZWdhY3ktdHJ1bmsKKzg4NTUgNGNiMjIzZjI5MzM3NmZhN2ZmMDZkNjBlMzk2MzZiZDc3MmUxMThhZCBsZWdhY3ktdHJ1bmsKKzg4NTYgODkyMmM3ZjNhMjg1NTExODk3MjEzMDJjODIyYmY2MmYxZDA1MzhmNCBsZWdhY3ktdHJ1bmsKKzg4NTcgYjgzZWEyZmVmMzMyYjFhYWU4YWQxYjNhYjBmMjIxY2IyMTMxNmRlMiBsZWdhY3ktdHJ1bmsKKzg4NTggMzdmZjcxY2Q5NDFlYjA0ZTc0M2JhZTVlNjViNGJiZGRlYzkxNTQ0NiBsZWdhY3ktdHJ1bmsKKzg4NTkgNDQ5MDQ3NjRkYWZhOGM3NGQzMmNmOTZkNTk0NTVjMGQ5ZGI4YWZjMCBsZWdhY3ktdHJ1bmsKKzg4NjAgMTZjZDM5ODA1ZmQ1MTg3YWI2ZjgyZmZhYmQxZjkzMWI5ZWNlNDA2OCBsZWdhY3ktdHJ1bmsKKzg4NjEgM2YxOTUyNTM0MzY3Yjk5MTU0NTI0NTY4Zjc3MGU5NWYzOTE3MTQ1MyBsZWdhY3ktdHJ1bmsKKzg4NjIgMjM4YThiNjA5NmUxYmIxZjI3YzU0MjU5MzlhMWQyZmYyNzNjNmI3ZiBsZWdhY3ktdHJ1bmsKKzg4NjMgMTRkNThiNWEyMWM0MDg2OGJjMWI5MGFjODg5NTVkNDdlNTU2OGVmZiBsZWdhY3ktdHJ1bmsKKzg4NjQgNTA1ZjUyMDEwZjJhZjlkZjQ5NmY1YWY2YzVhNzY2MzNlNTg4MWRkMyBsZWdhY3ktdHJ1bmsKKzg4NjUgODMzZmIwMTQwOWYzNDlhNGI5NWM3YmJiOTYxMTQzOGRkNDJkZWVlMyBsZWdhY3ktdHJ1bmsKKzg4NjYgMzdlNjhiNGE1Mzk3MzM2MzIwYzZlYjEzMTIwMzdmYTJlZTUyZTZlNyBsZWdhY3ktdHJ1bmsKKzg4NjcgYmRmNGUyN2Y1YjllM2QxMzNlY2MyZDY5NzFmMGE0NDk5ZDg5ZTI5OCBsZWdhY3ktdHJ1bmsKKzg4NjggYTJkZjNjOWU1ZjQzYWNmYmY0MjY2YWJjZjFlMWY0MzI5ZTRmOWRhOCBsZWdhY3ktdHJ1bmsKKzg4NjkgN2NiZWYwZDc0ZWEzNDFhYjE4MDIzNDMxZDQ3ZDdiNzdjOTg0ZDAyMyBsZWdhY3ktdHJ1bmsKKzg4NzAgMjRmMjk1ODZkZTk2OTAzNjdmYjBkOTI4ZDFkNjIyYWI1NzdlOTA3ZSBsZWdhY3ktdHJ1bmsKKzg4NzEgZjZmMjUxMWJiNmJhYTJmODBjNGE4YzVmNDIzMzhiYWJlNDc2YzVhMCBsZWdhY3ktdHJ1bmsKKzg4NzIgNzg0YTE2ZjU2NjQzNDc0ODg4ODY3ZWZkODFhNmZiZDQ4NDJmMzhlOSBsZWdhY3ktdHJ1bmsKKzg4NzMgMjJkYWUyNjM3ZTA4MmVkMDY4NzllNGFjYWY4YTM1YTY2ZDIzMjQ0ZiBsZWdhY3ktdHJ1bmsKKzg4NzQgNmVhOTI2YjQ2ZjhhZWJiZmYwZTlkMGM4YTM4M2JjOTRjYWUzMTg5OCBsZWdhY3ktdHJ1bmsKKzg4NzUgNGQ1NWJmZTFmZWJiZWM2MzYyMTY2MTJjZGQxYTlhZWZjMDQyNjhkMyBsZWdhY3ktdHJ1bmsKKzg4NzYgOWVkOWViNGE3ZjIzYTRmZjgxNTI5NzYxNTIxZGMyZGY3NDUzY2NlZiBsZWdhY3ktdHJ1bmsKKzg4NzcgYzdmZTM4OTBmMTAzZTY2NGYwOGQ5MzA2Nzc3NWVjYzUwYmRkMmZkMCBsZWdhY3ktdHJ1bmsKKzg4NzggMDQ5MGY2YTg0ZDM0NzUxNjk4ZTM5Y2ZjM2I4OWYwYzhjOTNhM2Q0MCBsZWdhY3ktdHJ1bmsKKzg4NzkgMzIyNDg3OGJkOGIzYThlMDE5MGRlODc1Yzg3YWExMWJlZjQwZDFmMyBsZWdhY3ktdHJ1bmsKKzg4ODAgOWY4MTM0ZTk1NTY1YjRhNmU0MWU4YTA4OWQyYmY4OGI0YTgzMzZhOSBsZWdhY3ktdHJ1bmsKKzg4ODEgOTQ1MmI3N2Q2N2VjOWZhMGU2ZjMzMDJjMzA5MmRhNTgwOGFlZjBmNiBsZWdhY3ktdHJ1bmsKKzg4ODIgZWQ2ZjZmMDMyMjE3MTliMmY2NjBlODBmMTlhOTAyYjU3ZWVkNjJjNyBsZWdhY3ktdHJ1bmsKKzg4ODMgNjUxNzdhYjZhNjk2YzUxOTlhMGNmYmJkY2UwZjQwZDZkN2JjOGUxYiBsZWdhY3ktdHJ1bmsKKzg4ODQgODExNTRhNTFjMTZlZDJhNmRlZmUxOTJiYTFlMmM1ZmRkMjcxNDMzMyBsZWdhY3ktdHJ1bmsKKzg4ODUgNTc0ODRlMjFlMzI3MWRiMmQ5YzRiZTMxMmU5ZjdlOWFmYmIyMGQxNSBsZWdhY3ktdHJ1bmsKKzg4ODYgMTg0MDkzZDk2ZDJhMmJiOGRjZmFhMGZjZWI4NDQ5MGE4ZWQyZmI5MiBsZWdhY3ktdHJ1bmsKKzg4ODcgNGFkYzdlOTZhYmEyNTI4ZDY3MWM0ZjQ5ODRmOWJjZTBkNjE4NTdlMSBsZWdhY3ktdHJ1bmsKKzg4ODggNDM5MzgwMGY5MjYxNTk4MTIyYjZkOGYxZTliY2YwZTI0M2Y2NjQ1YyBsZWdhY3ktdHJ1bmsKKzg4ODkgMzg2NTVlM2FkMTkyNTdlMzVmMTg0YmIzYTcwM2U4YzM5MzFmZTUxYSBsZWdhY3ktdHJ1bmsKKzg4OTAgMDRmM2QyNTlmOWU5OWFjN2U4NjdhYjNhNGEyMmIzN2U2YWVhNzdiNCBsZWdhY3ktdHJ1bmsKKzg4OTEgYzM3OGU3YTAyMzRhMmExMDM3YjlhZWVhYzFmNDdkMGM5NGI4M2NmYSBsZWdhY3ktdHJ1bmsKKzg4OTIgZWNjNTNlYThkNGViNjVjMDYyNGM0N2YxNWFjZmE4Yjk5ZTg2ODllNyBsZWdhY3ktdHJ1bmsKKzg4OTMgMjMwODNiZDhjMjYxODk4NzljZmM0MWI3YTI0ZDY5YjA4YzA5MThmMiBsZWdhY3ktdHJ1bmsKKzg4OTQgN2Y3NzcxMGEyMmQwYTY3MWVlZGZmMWUzOTk5ZDkwNWFkY2M1NzA1NiBsZWdhY3ktdHJ1bmsKKzg4OTUgNDQ5MWY4NGFjMjIzYTE2ZTkxMmZjNzA0YzE2MDZhOGRiZjNiOWMyMCBsZWdhY3ktdHJ1bmsKKzg4OTYgNDhkZjAxZWFhMDlhMjQ1ZTgyNTQwNTA1YTNmMzg4MGRmM2VlNGU4OSBsZWdhY3ktdHJ1bmsKKzg4OTcgNmYwNjQxMGUzMDdhZjQ1Mzc1ZDljZDdiZjMwMzRiODNjY2RjMTVjMSBsZWdhY3ktdHJ1bmsKKzg4OTggYWJlZDc1NGM3YjdmNWIxMzA5Y2I3MGIxZDA0OGQ3ZjYzNzU5ZmExMCBsZWdhY3ktdHJ1bmsKKzg4OTkgYzYyZTM0ZWE0NjRiMmQ0MGU3ZWQ2NjQ5MGNmMjY2YzI4N2M5MjZiNCBsZWdhY3ktdHJ1bmsKKzg5MDAgZmI5YjBkMjQ2ZWYzNGViZjYxOGY2MjAwZWI3NWZiMTNiOGM0MjFjMyBsZWdhY3ktdHJ1bmsKKzg5MDEgNjQ0NDg0ZTFhMzdiN2VlMmJkNDM1ZGE5YzBiNmVmYTY2NjQxNzVmYyBsZWdhY3ktdHJ1bmsKKzg5MDIgYWFjYTQ3ZWY1NWE4ZDQ4M2U5Mjk1YmRjODVlMWI4NmVhYmNjMWZjYSBsZWdhY3ktdHJ1bmsKKzg5MDMgNWYwMjE2MzAyY2Q4ZjRjODM3NWM3NmQ0MTQzMmViZDYzMjQ0MWRiOSBsZWdhY3ktdHJ1bmsKKzg5MDQgMDY4MjU0ZmU1NjE3ZTRiYWZiMzIzNjkwYTk1ZTlkNzZkYjZmMjlmYyBsZWdhY3ktdHJ1bmsKKzg5MDUgYWVlNTZlOWQxMGZjOTM1OTJhMWIzOGI1YTBkNWUxMTIzYjc3ZWI4ZiBsZWdhY3ktdHJ1bmsKKzg5MDYgZTM1NmEzNDQ4MTlkN2EyMjYwZGI2OTFjZTRmODhkNTcxMjVhYTZlNCBsZWdhY3ktdHJ1bmsKKzg5MDcgMTRhNzExMjY4YzUxYmI2OTM3YjE3MDg5MjNlYjA5ZjBhMjYxZDlkMiBsZWdhY3ktdHJ1bmsKKzg5MDggZTc4YjYxNzRiZWM5MjNlMGEzZWI4YTc5MjlmODU1ZGI5MzZiMmU5YiBsZWdhY3ktdHJ1bmsKKzg5MDkgMGRmMDE1OTA1MTAwOGViNTFiYmQ5OGI1MzhjM2QwMThhMzY2MDQ2NiBsZWdhY3ktdHJ1bmsKKzg5MTAgY2U1NmE3Y2ZlOTZjZmQxMDFjNmRiMzFlNjY5NmY2Njc0MjEyYjQ1MCBsZWdhY3ktdHJ1bmsKKzg5MTEgNDM1NjA2YjIxNWM1MmJhZWNmZTFhNDRkMDk3YjJkMmFiYWZlNDdmNSBsZWdhY3ktdHJ1bmsKKzg5MTIgYzgzYTFiMjFjNDJkMmEwODYwZTIyOWZjMGZiY2FkOWYwYzM5MTVjYiBsZWdhY3ktdHJ1bmsKKzg5MTMgMDUzYmJhYjBlYzUzZTIxMTIyODNlMTg5MzY3ODEwNzNlZTk1ODQzOCBsZWdhY3ktdHJ1bmsKKzg5MTQgZTU3YzcyYTJiMDY1NmQxZmEwYjExZTIwMTdjNzNlN2IyODE4NjM5MyBsZWdhY3ktdHJ1bmsKKzg5MTUgZjM4NGNjMTFiNzViZjA2MTMyNWQ4ZWUzMGQxNDM2ZmUxNGY2MDZhZCBsZWdhY3ktdHJ1bmsKKzg5MTYgOWU0NmVjZjAzYzNlODMzMGU5M2ExZTI3NWU0Y2I2M2UyMDVmNTFkMyBsZWdhY3ktdHJ1bmsKKzg5MTcgZDc3NjBhMWJhNGNhNzY5ZTYyNDdhNWMxZmMzY2Q4ZWNkMWU3ZmVhOSBsZWdhY3ktdHJ1bmsKKzg5MTggNDJiYzc5MmFjNjlmYWU1NWZmMjMwNGY0MmVlNTQ3Yzc5Mjc4ZmUzMSBsZWdhY3ktdHJ1bmsKKzg5MTkgZDllNTE0NTFlYmRmOTMwMmM0YzYyZmQwZTNiODlmYzI1MzM1ZTY0MSBsZWdhY3ktdHJ1bmsKKzg5MjAgZGRmY2VmYzBkODI2ODA3ZTFlOWE1OGZmNjNhM2MwZmU3NGEyZDlkZSBsZWdhY3ktdHJ1bmsKKzg5MjEgMTA4ZmZmMjU0NjJkNTYyMmRkNmE3NWU2NDQ3OTgzZjg2M2YwYjZhNSBsZWdhY3ktdHJ1bmsKKzg5MjIgOTNjMDE1ZWMyZDU3Y2FhZjg2MGQzOTRmZDcyZjA0MTc3YjExNDU0OCBsZWdhY3ktdHJ1bmsKKzg5MjMgYmRlNWFhZjNlNTg5NzQ0YjM0Y2FiMmJjNjAxOTFmOWRmMzlhMTg5YSBsZWdhY3ktdHJ1bmsKKzg5MjQgNTgwMzc4MmU3M2ZmYjcyZGZkZDhmOTNhNWZiYWJjMTRkOWQ2YTA1MyBsZWdhY3ktdHJ1bmsKKzg5MjUgMzFhNTA0NjgzNjZiYWUzN2NjYzExNmZhODA0OGIyYWUxMzg1NDU0MyBsZWdhY3ktdHJ1bmsKKzg5MjYgYjg1NGNhNDYwNWUxMjI5ODE0MGJiMjcwZTM1ZWM3YjZjN2NkNTBjZiBsZWdhY3ktdHJ1bmsKKzg5MjcgMzM1MGM3MzU1MGVlODNkMjMwOTI2ZjdiNzE5OTA5NjZiN2M4ZGExZiBsZWdhY3ktdHJ1bmsKKzg5MjggNzdhMjJkNDlkZDg1ODVkZWVjMjFmZDU0ZGVmNTliMmRmYmFlYzZhZSBsZWdhY3ktdHJ1bmsKKzg5MjkgMTA0MTMxNzlhNzJhNTg5MDNlNDVjODVjYWYwYTcxMDU5YmFiYjRlMCBsZWdhY3ktdHJ1bmsKKzg5MzAgN2VhNDY1ODMwZWY0NWRiZGQzMDlkN2I1ZmNkODk0Mzk1YzEyYTFhMSBsZWdhY3ktdHJ1bmsKKzg5MzEgYzliMTM5YjljNWZmZjUwM2M3ZjVjMGQzYzBhMzJmNjBjOWQ3ZDUyNCBsZWdhY3ktdHJ1bmsKKzg5MzIgYjViMzVhMGNmMWFhOTI4MjYyNmNhOTA5ZWRiYTQyOWVmY2U5ODM3YSBsZWdhY3ktdHJ1bmsKKzg5MzMgMjEzOGNmM2JkYzVhYjg1OGZiMjViNDBhYmY0ZjYyNGI5NTkyZjdlZiBsZWdhY3ktdHJ1bmsKKzg5MzQgMmM1YzM5OWI2ZWE0NjMzOTJlMjM2MzEzYTg1ZmI3ZTAyOTRjNGU4MyBsZWdhY3ktdHJ1bmsKKzg5MzUgOTBlZWQ5YTVkMDdhODM1OGQxMjEwNGFiYmMyYWIwOGMzYmQ0OGJiYiBsZWdhY3ktdHJ1bmsKKzg5MzYgMzkzNDg5NzRiMjJlODkwMDdmY2RiYTk0MWZjMjhkYzc4MGU5OWRhMSBsZWdhY3ktdHJ1bmsKKzg5MzcgYjY1ZWI0NDQyMmJhOTMyMmY3OTFhOGU0M2FmNjNlNDA1MzI4NWY4MCBsZWdhY3ktdHJ1bmsKKzg5MzggNzc3YWU1MjYwYTEyZjVjODNjN2ViNzE0MWQ4YmRhN2UwYzg2MTk5ZCBsZWdhY3ktdHJ1bmsKKzg5MzkgOTk4NjI3MmNlMjRhMTVjNGVmYWJkNmYwZDM2ZWY4OTA1YmUyZDVkNiBsZWdhY3ktdHJ1bmsKKzg5NDAgMjJiZWQ1Nzk0NTE0YzYyNzkxMDc1MTM0NzE5MjQ3MjQ0MzJlYmI4OCBsZWdhY3ktdHJ1bmsKKzg5NDEgMGIyYmNmMDQyNGEwNTNhNTZlZTBjYTY4ZjdlYzNkYjJjNTc2MThkZiBsZWdhY3ktdHJ1bmsKKzg5NDIgNGQ1NDVjYzZmYTk5YzRiMGFjZDdjYWMxYTRkM2ZkOTA1ODcyZDJjNyBsZWdhY3ktdHJ1bmsKKzg5NDMgYzE0MmViNTMzZmI5MGY5YjMyMTM0MWM3MTc1OGJmMWYyNGIwNDhhYiBsZWdhY3ktdHJ1bmsKKzg5NDQgOTQxNjM3NTljYjAyMWJkYTc3OWM2MmQxMDRjMzg3M2YzN2ExNDZjZiBsZWdhY3ktdHJ1bmsKKzg5NDUgNmE5MWEwZjY0MmZlN2IwYWMzNmI3NDQzMmM2MDJiNWI5ZGM4ZjY3ZSBsZWdhY3ktdHJ1bmsKKzg5NDYgMTAzYzYzOTgzY2RmYTRkYmNhMzA4ZDViYjJmODYwMmFiODlhYWI4YyBsZWdhY3ktdHJ1bmsKKzg5NDcgZGNhOWJkZjVlYTA4YTgwYzFmM2E2YzFiYjNjYjYzMzU2NzQ2YjQzZSBsZWdhY3ktdHJ1bmsKKzg5NDggZWU0ZjJiMWNlZWRhNGFhYzI2ZDQ0NDM3NjMwNTNmMGRlN2NlYWQ5NSBsZWdhY3ktdHJ1bmsKKzg5NDkgZGY2NTllMjM5ZTkwNmQ5YjYxNjdjZjcxNzI1ZTYyYjAzYWYwOWZiZCBsZWdhY3ktdHJ1bmsKKzg5NDkgNzQ2NjU0YTBhZjY4MGM3ZDliODE0YjIxMGEwMjZlYjkxYmVjOTUzMyBsZWdhY3ktdHJ1bmsKKzg5NTEgMmVkZTdjMmFjOTJjZjFlZTg5ZThlNTI0MTljODkwMWIwMzRiNzU4NiBsZWdhY3ktdHJ1bmsKKzg5NTIgZDE1MzI0MmFhNmJiMmRjM2IxZmJlYzhjOWFlMmFlNzg1OTRmNjgxYiBsZWdhY3ktdHJ1bmsKKzg5NTMgZjVmNzQ0ZWQ4MTM3YzdjYzM0YmZkMTE4ZDY1YzYyM2U2ZTQxNDE2MyBsZWdhY3ktdHJ1bmsKKzg5NTQgN2FiMGIwNTI5M2FhNDI3MjBkMTUxY2E4M2M3ZTNiZGViOWE1NTExZSBsZWdhY3ktdHJ1bmsKKzg5NTUgYzY3ZDg0MjFmYTIxNjY2ODA4YTI0YzYyMzg3N2UzMzJkN2U0YzUzYyBsZWdhY3ktdHJ1bmsKKzg5NTYgMjk3YTU0MWViODY1NzRjMjMyN2IyYzAyMThkNjkxMzRhMWYwYTk3MSBsZWdhY3ktdHJ1bmsKKzg5NTcgNThiNGQ5ZWE4ZTUxMzg0MmYzNDdlM2Q1YTQzMmYzZWJmYzE2NzI0MiBsZWdhY3ktdHJ1bmsKKzg5NTggNzI3YjUyMDMxMjEyNTc3ZDllZDUxOTVmOTQ3YmYwYWYwMTQ3MTRkMSBsZWdhY3ktdHJ1bmsKKzg5NTkgY2IwNWVhMmI2M2Q5ZDAwMDA2N2I1YzJlMTU3MmZlMTYzYzUwODczNyBsZWdhY3ktdHJ1bmsKKzg5NjAgZDMxMWI2ODc1NGMxODZlOGNkM2RlNzAyYmI2MzQwYWNlOWE5YjJjNyBsZWdhY3ktdHJ1bmsKKzg5NjEgNTYzYWUyMWIyMDU3ODM2MzlkODYxOGY5YzdhOWZjMGQwZGY4OWViNiBsZWdhY3ktdHJ1bmsKKzg5NjIgYjhlMjYwNzhkOGIxYWQzOGY0YTJhZDEyYjBiOGY0YTc2ZjVkZmVkNCBsZWdhY3ktdHJ1bmsKKzg5NjMgMmYyNTgxNjJhYWUyYWNkZmVkNzZjNTZlYmJiMmJkZTM2OTE5NWRiZCBsZWdhY3ktdHJ1bmsKKzg5NjQgMTYxODA2MDcxNmU3ODE5NTIzYmYxYzUwMjE1MTJjOGUxMzQ0ZmE1NiBsZWdhY3ktdHJ1bmsKKzg5NjUgNjMwNzI1ODA1YzY2MjJmZmM3MjRlODg0MGUyN2ZmZDAxNzZjNGNiNSBsZWdhY3ktdHJ1bmsKKzg5NjYgMzdjOGQ3Zjk2N2M3MWMwZGU0MTRiYWNhOTJiNzFlOWFiZTY4Zjg4MyBsZWdhY3ktdHJ1bmsKKzg5NjcgNGUxYTBmZTBhY2UyNGY1NjI4NDYxMDI1ODA2NTJlNDRhMTkxNjYyYSBsZWdhY3ktdHJ1bmsKKzg5NjggMmY5ZDU5ZGE3MmZiODZmNDA0YjdhMGU0MTVjMjc0YzAwOWViNDg1ZSBsZWdhY3ktdHJ1bmsKKzg5NjkgYWU3NGI2Y2NlZjU3ZDQzN2NmNzc5NjgwM2FkNWNmMGZjMGQyM2Q0YiBsZWdhY3ktdHJ1bmsKKzg5NzAgMjIyZGQ0ZDA2NTgxMjk0ZjIyOTU2NWM0NDdmOWM0OTFhMjgzZTk2ZCBsZWdhY3ktdHJ1bmsKKzg5NzEgYmI4YzMwMDRkNzU4ZWMxYmU5ZWQ3MzE2ODliNTBmMGJhNTAzMjRhNCBsZWdhY3ktdHJ1bmsKKzg5NzIgMTdlM2Q5YjZiNDJlODI4NTgxMzRjMmM0M2MwN2I2NmRkNGQ0MDViYSBsZWdhY3ktdHJ1bmsKKzg5NzMgMzlkMmE0ZGI3YzNiODBiODAzNmIzNmZlYmU2YjkyMjQwYjU1ZmYwMiBsZWdhY3ktdHJ1bmsKKzg5NzQgY2U0NWVmNGM2NWU5MWJlN2IyOWI1YTEzNWI5NzE0YWYxMTYxYzdjNyBsZWdhY3ktdHJ1bmsKKzg5NzUgYjM4YTc1NWI4ZGIxYzg3YWVlMzBjYjIyOWRiMzg0MTYyZDU1MzViNiBsZWdhY3ktdHJ1bmsKKzg5NzYgNDk4MWZkMmIzMjExNDA2YWJhNWQxNmU0YzRlYzRlYmNiOWNlNzcxNiBsZWdhY3ktdHJ1bmsKKzg5NzcgNmEwOGI2MGRlODJjNzIzMGIxMmZmZWQwNjVkOGM2YWE2MTliNThkYiBsZWdhY3ktdHJ1bmsKKzg5NzggODc5MTMwZjFmZjVmY2IxMjJjNzI4NTA3MmE0Nzg2YTA0MDgxYmY5NiBsZWdhY3ktdHJ1bmsKKzg5NzkgOWVmOWNhZGQ5NzhjNTRhODEyYTk2NWM1YjU5MzcwMDAxYWNlYmNiYSBsZWdhY3ktdHJ1bmsKKzg5ODAgMmEyZTViNzMxZDFjNzc2MzM5OTlhMTJjOTg2MjAyMWNmNjUyMjI0OSBsZWdhY3ktdHJ1bmsKKzg5ODEgOThiMmEwYTA5M2M5ZDQ5Yzk3ZGQ3ZWE1ZGRmM2Y1OTI3ZWZjMzgwZCBsZWdhY3ktdHJ1bmsKKzg5ODIgMDcxYTBkM2E0OWI5ZjkwZjVjMGJmMGZiYWYwZWZmOTk2ODViZjI0OSBsZWdhY3ktdHJ1bmsKKzg5ODMgYjA0OTRiYjUyMDE5OTRmOTE0OTY2NzRmNWU0YzliNDQ0MmUyZDc5ZSBsZWdhY3ktdHJ1bmsKKzg5ODQgZGY2ZGZhYWMyZDBiNTFhMmVmZDEyZGZjZGMxZDUwMTUzNDZiNzQwZSBsZWdhY3ktdHJ1bmsKKzg5ODUgYTAwMDczZjJlMDg3YWI0Y2UxNzI5YzFiMjBiOGE0NmRiMmFmYTQ3NiBsZWdhY3ktdHJ1bmsKKzg5ODYgODA3MzVmY2MzNWFmZmI3MjgxNDRmNzY2ZWMxYzU0ZTRiYTk2YTc2YyBsZWdhY3ktdHJ1bmsKKzg5ODcgZjAyMmJiZDEyMzM4NjgwMWQxZDQ2NWExOGI3MDk0MjhhODkzOTNjNCBsZWdhY3ktdHJ1bmsKKzg5ODggNzQ1MThkODgyZWQzMWFlOTQzNWEyYmUxMTdlNzRiOTVhZWI3YTNjYSBsZWdhY3ktdHJ1bmsKKzg5ODkgZmRiNzc2MzZjMDc0MzAyZjA2YTU4MzQ0MTM1MWQ3OWUyMjQ3MzUzMSBsZWdhY3ktdHJ1bmsKKzg5OTAgYTNkZDU5MTA4MTE5NmEyYmNhY2MzZjY0YmUyMDhiOTg2MzhjOTBlNyBsZWdhY3ktdHJ1bmsKKzg5OTEgNmM1ZjdlNzRmYTg4MDFmZThjZTgxMjI2NDBjNTQ0Yjc2NTFjYTUzMCBsZWdhY3ktdHJ1bmsKKzg5OTIgNmQ5Y2ZiNTNjN2VkMmMyY2RmNDI5MGQ4MWMzOTNmODMzOGIzZDMzOSBsZWdhY3ktdHJ1bmsKKzg5OTMgZWNjZGZkMTcyNzQwNjExZWIxNWI1ZjA1NDE0ZGQ2YThkOTUwNTQ4NyBsZWdhY3ktdHJ1bmsKKzg5OTQgN2U1MTcyN2QzYjdlZjNlNDIzMDQ1MWRiM2E5YTRkOTA3ZWJlZDA3YiBsZWdhY3ktdHJ1bmsKKzg5OTUgMWQzMGU1MmRjMzRkOWI0MzU3MWNlMmIyNzAyMWNhODhlNDYzNDk0OSBsZWdhY3ktdHJ1bmsKKzg5OTYgMWFmZjE5NzgzZDc0NmYxYjczZTk2N2VjMWI1ZWM5YzhlNWEwODllZSBsZWdhY3ktdHJ1bmsKKzg5OTcgMjRkYTAzNWNlYjZlYmQxYzg1YzgyYWIxMTQzMzllMTU0ZTg3NWJhNiBsZWdhY3ktdHJ1bmsKKzg5OTggZjFiMTcyODQ1MmMxMzBiMmI1NDVjZjA3OGJlZTVhNWJlYWRjMzc5NSBsZWdhY3ktdHJ1bmsKKzg5OTkgM2Y4NDU1OGEyNGRkODRmZjJmMzQ4MTJlYjdiZTM1MTQ1ZGQ2MTg4YiBsZWdhY3ktdHJ1bmsKKzkwMDAgOTYxNGZkZDgxMzkzNmVjYjg4YjE0NTM4ZGQ2Nzg3MDQ1NTFmMzQ1YyBsZWdhY3ktdHJ1bmsKKzkwMDEgZWU0OTZlZjFjYTgzOTliNzJmM2VmNGUwZjU1NTQyYjY1YjA5M2U2MCBsZWdhY3ktdHJ1bmsKKzkwMDIgZTljNjdjMTkyY2RiNjY3NDJkMTM5MGYyNTlhNDBlOTM4NWJhN2ViZCBsZWdhY3ktdHJ1bmsKKzkwMDMgNWNjYjEyYWZmYjU0YzBjNzE2OTE5OGIxNGVjMzkxMzE5NzAxYzE1NSBsZWdhY3ktdHJ1bmsKKzkwMDQgNDZmYTQ3MTdjZjI0YWNiN2ZjYzU3Yjk4ZWJiZTg1NGRkYTM2NGEzOSBsZWdhY3ktdHJ1bmsKKzkwMDUgYmMxOTAwMjQzZTMzOWEwZmQyZjBlMDJkNTNiNzk2ODU1N2FiMDM0ZiBsZWdhY3ktdHJ1bmsKKzkwMDYgNzIzYzg5ODgzMTg4MWQwNzVkMDgyOWVlOTE2NTg0ZGI1MDdjYTYwMyBsZWdhY3ktdHJ1bmsKKzkwMDcgODllMmVhYWNmZDkwMDBhZGQ3MWI4ZjFhYzc3NzdkOTdmOThmMzYxZiBsZWdhY3ktdHJ1bmsKKzkwMDggMGNkMWYyZjFkODJkMWM5NTgzNzVkY2NkNmQ2NTlkNGY4ZWU2OGYyNyBsZWdhY3ktdHJ1bmsKKzkwMDkgZTQ5N2E3ZmMwYWE4NTZjODU4NDVmYjAxNzA2MDgyODhkNjkzYjBjZSBsZWdhY3ktdHJ1bmsKKzkwMTAgZDM2OTYyOWU4YzI3YzBhM2RkMGI4ZmUwM2ZkOWExMjliZjVjMDhmZSBsZWdhY3ktdHJ1bmsKKzkwMTEgYmE2NTM3MjQwOGRkYzZiYmRlMWEyZGYzNTgzYWI4MDEwZmI1N2JjMCBsZWdhY3ktdHJ1bmsKKzkwMTIgMDg2NGE1NTY2ZDg5YWJkZGQ1YWVhZTFmNjEwOWI4M2NjN2EwYTg2YyBsZWdhY3ktdHJ1bmsKKzkwMTMgNjRjNWVmYTlkMmM0ZTRjMDBmZWU5MjQ2ODllY2NjNjk5Y2I3M2IwOSBsZWdhY3ktdHJ1bmsKKzkwMTQgMTg3MDM1MzhhZjQ4MTgxNzE4MTk0NzIzZTQ1N2UwMmY3Y2JhMzYzZSBsZWdhY3ktdHJ1bmsKKzkwMTUgMjU1MDVlNTYzYjM3YjcyZmU5N2JhYzIzMTQ3NTc2M2EwOTMzMzQxMCBsZWdhY3ktdHJ1bmsKKzkwMTYgYTFhMmI3MTE1OThjZDdhYWUxYjI1NTdlN2ZiYzg1M2M4ZjAyODZlZSBsZWdhY3ktdHJ1bmsKKzkwMTcgZDFmNDZhMDhkNzhhODZkMmM1OTExZjY4MDY4YTE4N2FlZTVmNmJlMyBsZWdhY3ktdHJ1bmsKKzkwMTggODBmYzBhOTA2ODg1MmVhZWY4ZWYyYjAyYWE4YTI3ZTBjYTk4ZDg4YyBsZWdhY3ktdHJ1bmsKKzkwMTkgYjJkZmZmMDY3ODljNmRmNzcyNjcyZGYzOGVmYmRhODE4YWExNTNhMCBsZWdhY3ktdHJ1bmsKKzkwMjAgNjJiZGIxY2JlMGY1NWY5NzViNjc3ODBkNDE5NzAwYjNjZDQ2NTc1ZSBsZWdhY3ktdHJ1bmsKKzkwMjEgZmMzMjdlYzE1YzdlZGUyZGY3ZmI2ZGUzMjhiY2UwMWE3OTdlMTFjMyBsZWdhY3ktdHJ1bmsKKzkwMjIgZDI4OTMyZDY3NmM4YjllNGM1ODVkZmNhYjk5MWZjNGM1ZDZhMzkwZCBsZWdhY3ktdHJ1bmsKKzkwMjMgYjQ1MDMyMjg1ODNjNGI0NjdiM2M1MDVhNGZiZDNmOTVjYjQ5NjI3NSBsZWdhY3ktdHJ1bmsKKzkwMjQgYzkxNWM5NGViYjZiZjNhOGEwMjNmZDA0NWMyYjVmYTdiYjk5NjhhYSBsZWdhY3ktdHJ1bmsKKzkwMjUgNzI0MzgyYWY1MzM5YjhlM2QwYTA2NTE0YmQ3ZjFmODY5NjA2YjQ0OCBsZWdhY3ktdHJ1bmsKKzkwMjYgZGQxZTgzMzIzYzQ1ZmRlMTcwODE2OTc1NmI3ZDc1NDk5NzU3NmEyZiBsZWdhY3ktdHJ1bmsKKzkwMjcgYThlM2IyZTlmNWQyMjgwYzIxNGNkMmE1ZjhhNWFjZDU5MTVkNWQ0ZiBsZWdhY3ktdHJ1bmsKKzkwMjggZjQwNmVjMzViZmNhNjk3N2NhNTJlZmFmYWFmMDUxNWU2NmQ3ZTg3OCBsZWdhY3ktdHJ1bmsKKzkwMjkgYmRkNGNiMmE4M2I1NzUwMTdlNTQzYjgzZDRkNjQ0YjliYjJkZDk1MSBsZWdhY3ktdHJ1bmsKKzkwMzAgNWRiZmZjNzg0NGY1NWE5ZWMwMTk3MGEwZGJmZTQzZjQ2M2M4OWUwYyBsZWdhY3ktdHJ1bmsKKzkwMzEgMmM2ZjJkOTJiMzE1MDg4ODJhMTdjNDAxMDMxY2M4MjZiNjZkYWQ5YiBsZWdhY3ktdHJ1bmsKKzkwMzIgN2M5YzRmODIyNGM4YjIwNzRiZDJhZDhhMDQ5YjlmZjcwNWZiYzM4NCBsZWdhY3ktdHJ1bmsKKzkwMzMgYTVmN2ViODY5ZjIxYzMzMjkyOTM1MmYzNDM2ZjQ4ZjY1OWRjNWNlOSBsZWdhY3ktdHJ1bmsKKzkwMzQgNDI4MGIyNzI5Y2NlY2IwOTliMWM5YzQ1ZmJlMTZlOTdmODdlNDRlYSBsZWdhY3ktdHJ1bmsKKzkwMzUgYjMzMWNkNDdlMGJjNzExNzAwZWVkOGVhODlmMTQ2YTQxZGZiNjgzNSBsZWdhY3ktdHJ1bmsKKzkwMzYgZWUzMDdmOTg0NWEzMjZjYjUzNTAyNjEyZTY3NTg0YTliZjE4MDRkMyBsZWdhY3ktdHJ1bmsKKzkwMzcgMWEyMzNiZTVmYzE3YTY4NjgwNjU0NmFmNGQ2N2FmMzJhNzdhZGZmOSBsZWdhY3ktdHJ1bmsKKzkwMzggNmU5YWE5MmZhYjY5Mjc4ZmEyMTM4NjZiMTk0ZTBhMDkwMWVlMDY2OSBsZWdhY3ktdHJ1bmsKKzkwMzkgZmQyZDRjMGFlNjQ2NzJiOTc3ODRjMzg2NmU3ZTM1YTVkYzAwMjMxMSBsZWdhY3ktdHJ1bmsKKzkwNDAgNTM4MzUwNDM1MjhjOGI2ZjEwNzAzNzRhODBhODRhMDQ1OWRkYjBiZSBsZWdhY3ktdHJ1bmsKKzkwNDEgMmFhMTNjMGM4ZjJmNjYwOWU3ZDVhMDZjYzdlOTZmNGY1ZjE2YTY2YiBsZWdhY3ktdHJ1bmsKKzkwNDIgODEyYWFkOGMwNWMyOTE0MTZmN2UwZWNjM2NiN2M5NTc3NGZkYWQ4YiBsZWdhY3ktdHJ1bmsKKzkwNDMgZTFjOGQ3MTgyZDY2N2QyYzVhYTYyYTk1YWU5OTM4NzA5MTBhMGU1ZiBsZWdhY3ktdHJ1bmsKKzkwNDQgYmUyYTAyMzVhZTg0YTRlNDljN2Y2ODE4MDVkYzUwN2Q3ZjI1YTRlYiBsZWdhY3ktdHJ1bmsKKzkwNDUgM2ZkZDcxNWU2ZWY5MDYxZWI0MDBjNWRiNmJhMjdlNDk3ZDEwYmJkNCBsZWdhY3ktdHJ1bmsKKzkwNDYgYTBiODM5NjY3ZDJlM2ZjNzQzMzdkMjRjODM1NjA4ZmY4YjhiYjk4OSBsZWdhY3ktdHJ1bmsKKzkwNDcgYzFiYWM1MzYwNDVmY2RiOTRmYWUzYWI4OTkxNGQ3ZmZlYTRjNjNhMCBsZWdhY3ktdHJ1bmsKKzkwNDggYjExNzQwNDViYzRhYjY3NmE3ODI0ZjNlNmFlM2EzNTJhYzU3Zjk3MyBsZWdhY3ktdHJ1bmsKKzkwNDkgOGIxNDMxMmEwMjkwMzU5ZGRkOTcyYWQ0MDRkM2ViN2RjNmRmNTI5YSBsZWdhY3ktdHJ1bmsKKzkwNTAgM2I3Mjg3ODY3MmNkMmUyYzMyMzVkNzMxMTYyODE3NGQwOWIzNzIwMCBsZWdhY3ktdHJ1bmsKKzkwNTEgNjdhMmFmY2RkMjFjMTAyZDUwM2I4MTgyYmMxZDUxZTc5ODE3ZTAxZSBsZWdhY3ktdHJ1bmsKKzkwNTIgNmZmYTljYjY1NGUyYjRmY2MyY2ZlNTUwNDJkNzU1MTMwMjUxNTdlYiBsZWdhY3ktdHJ1bmsKKzkwNTMgMDBkYWI3NWI5ZWYxMmUxODBiNzczZWYzODE4YmFjNDQwMDFhOTMwNiBsZWdhY3ktdHJ1bmsKKzkwNTQgZDI5YzRiMmY0OWFlMjcyMmIwNjRiNWNmZDNjOGQ2YzA3NzI0NDE4ZCBsZWdhY3ktdHJ1bmsKKzkwNTUgODU1OTY5OTBkYjQzZjk5YTM5ZTZjNmZlZGYwMTQ0ZGI4MjE2OThhOCBsZWdhY3ktdHJ1bmsKKzkwNTYgMDFlZTU2MDdiYjM1ZjQ1ODI0NmIzYzVjMTA1N2U3MTRmMjc5MGVhMyBsZWdhY3ktdHJ1bmsKKzkwNTcgOTIxZDE3Y2MyNjkyYjI5M2ZmMWNiYWM1NGFjNDNlY2FiMTI0MTJiMSBsZWdhY3ktdHJ1bmsKKzkwNTggYTFkODVjMGNhZTVhNmVkYjU1ZjRiMWJlZjFkYzRkY2FmODgzMDA2NSBsZWdhY3ktdHJ1bmsKKzkwNTkgOWUwN2Q1YjY5ZWJhZTZhODgyOWRmM2E5NmM2MDJjZWM1OWVlNzUzNCBsZWdhY3ktdHJ1bmsKKzkwNjAgZjk2ZTU3ZTY5ODQ2ZjA3OGVkNjQ5NTJmNzdhNWM5Y2Q0ODg5OTc5ZSBsZWdhY3ktdHJ1bmsKKzkwNjEgMDhkZGU1ZTVjYzI3NGFiZjRjZGUzOGQxYjA2NjFmMjkxM2Q2MzJkMCBsZWdhY3ktdHJ1bmsKKzkwNjIgYzI2NzJlNWFiYThiNzlmNDcwZTQ2NDhkYTgwNWMyOTVkN2I5MGYxNCBsZWdhY3ktdHJ1bmsKKzkwNjMgYzU2NTI3MmVkMmM3NDA3ZjgwYWEyMjgxYjhjYzc2OTRiNTI2ZGE1NiBsZWdhY3ktdHJ1bmsKKzkwNjQgNzUzMDc3ZjllYjJjOGEyNjA1MTYyNjlhMWFkNThmZmM3MDE0MzNmOSBsZWdhY3ktdHJ1bmsKKzkwNjUgZTBlNjY3YmJjOTcxYTRmZjQ1M2IyMGY3MGNjNzcxYWJkZDdlN2JhNiBsZWdhY3ktdHJ1bmsKKzkwNjYgZGEwMGJiNDk3MWQ4ZjZmMzEzM2Y5MThhMzcyNDYwYmM5OWYwNjJkNiBsZWdhY3ktdHJ1bmsKKzkwNjcgMjE5MmI5M2Q1MzM3ZTU4YjFiMjI3ZjkyZDlhNGI2MzEyZWRkZWU5NSBsZWdhY3ktdHJ1bmsKKzkwNjggNTE2MjQwZWYwZTE1MWRjMTM3OWViNTA4ZjE0ZjkwNGE0MWE1MDUzZCBsZWdhY3ktdHJ1bmsKKzkwNjkgODZiNjc3MDljMmI0MDJjZjJkNTllYzg3MmQ5NTA2ODdjMTNjM2ViMCBsZWdhY3ktdHJ1bmsKKzkwNzAgMTQwMjVhNGY3OTNlYzVlZDE0M2U2Nzk5MDAwYWJhNjZjNmM0YTk5MyBsZWdhY3ktdHJ1bmsKKzkwNzEgZmNkOGUzOGI5YjJhZjlmMTM5ZGJiYTA0N2NjNWI0NDkxNzdmMDRhMiBsZWdhY3ktdHJ1bmsKKzkwNzIgNDVlODRiZTZkNjQwNWJkYzE4YzY0ODE2MGJkNzlhOWFmNzNlZmFlNyBsZWdhY3ktdHJ1bmsKKzkwNzMgNWUwYjE1MmJmMWU2NWIxYTk0OTE3ZTA4NWRkOTc1NzZmNjhkMWM0YiBsZWdhY3ktdHJ1bmsKKzkwNzQgZjE1ZjBmYzM4Y2IxOWQ3N2MyZGIzM2UxMzIzM2NkZWM0Y2JhMzhmMyBsZWdhY3ktdHJ1bmsKKzkwNzUgYjg4ZmQzODk0ZDVhNGQzOWI1NGQzM2VlNTkyY2NmZmE0ZDI3MDQ5YiBsZWdhY3ktdHJ1bmsKKzkwNzYgY2VlZWM4Y2IwYTFlN2Y1YzY5NTQ0YTczZTMxMmM3Y2RlNWY4NzQzMyBsZWdhY3ktdHJ1bmsKKzkwNzcgNmQ2ZmVjMmVlZWY2YTgwM2EyNmJjOTEwMDZjZmFmNmQyMzBmZGMwNSBsZWdhY3ktdHJ1bmsKKzkwNzggODNjY2Y0NGJmMTk1M2Y5NDRhNTBkZGZjM2EwYzA5MTQ5NGQ4MDYyOCBsZWdhY3ktdHJ1bmsKKzkwNzkgMWU0MjhmNTFlZDRlMTNjOTQxZGEyYmYxODlmMzMzNDEyYzlhNDY2OSBsZWdhY3ktdHJ1bmsKKzkwODAgNDUxNGE1ZWEzZWM0NjQ0MjU2ZWVmYjY1NTg5YmUzNjMyNzU0MmExOCBsZWdhY3ktdHJ1bmsKKzkwODEgN2EwYTQ4ZDczMDc2YTgxNDU5YTcyMzUzOWY1NGNkZjgzN2JjMDY5ZiBsZWdhY3ktdHJ1bmsKKzkwODIgZjY3YTYzMzllZGU3NmVkOGU3ZjcxMWM1YzQyZGIzZTgxOTE3NzNiYiBsZWdhY3ktdHJ1bmsKKzkwODMgZGJiNDYxZTI3M2FkYWE1OTdkYWEzOGJkZTYwMTBmZDRkMThjYmIwZiBsZWdhY3ktdHJ1bmsKKzkwODQgZjViNTUzMTFlNzlkYWU4NTk0ZTU1MzZmYWMzZWQ0MmI5NGQxMmMyYSBsZWdhY3ktdHJ1bmsKKzkwODUgMmY0NTllYjIzYTBlZjE5ZmY2YWE1YWFlMTY5ZjVmMjMyNmM1ZTMyMCBsZWdhY3ktdHJ1bmsKKzkwODYgZjFlM2EzZjhhNDZjZGYyZTFkYTBiN2I3ODMyZTUwZDU5ZGQ2ZTg0NCBsZWdhY3ktdHJ1bmsKKzkwODcgMDIzZTVhYjBmODdkOGI5OGZlYWQ3ZGI3NTUyN2M1NTRlM2RiZDU2NyBsZWdhY3ktdHJ1bmsKKzkwODggMjM1YmM2ZjllMjM3YTY4MDVmYjVmZTJhNzIwZGYyODZkZGZhYTM3NSBsZWdhY3ktdHJ1bmsKKzkwODkgZTZiOWQyMWM4ZTBjMDY4Y2ZkNThjZThlMjg0MWY3Zjc3YWI5NjVkOSBsZWdhY3ktdHJ1bmsKKzkwOTAgNGIyZDhkYzkyZGI0Y2FjMGMxN2MyNDYwNTViNWU4ZWEzYjZiYWVhNiBsZWdhY3ktdHJ1bmsKKzkwOTEgMmU4NzRhNWE5MTJmMmUxYWU5NzE5NzA1ODVmN2FlNWU4MGM3NzVhNCBsZWdhY3ktdHJ1bmsKKzkwOTIgZTJiY2FhOTZjOTQwODQxY2RjYmMyOGQzZTUxZjdkOWM0YjMzMGNjZiBsZWdhY3ktdHJ1bmsKKzkwOTMgZTU0ZDUxNzE5MDJlNmEwMWI4YTFlOWQ3NDJhOTYxYjMxMDliNWNhZCBsZWdhY3ktdHJ1bmsKKzkwOTQgNmZlNWE1MWZlYTMwM2RkNjA4ZDMwOTFiOWQ1MjI4ZjQ3Mzc5MGYzNyBsZWdhY3ktdHJ1bmsKKzkwOTUgMmYwYjdiYWMyMDFjNWEyYWQ0OTU1N2Q1ZWIwNzVlNDI3YTFmNWJhYyBsZWdhY3ktdHJ1bmsKKzkwOTYgMDQzMTNkNGY5M2ZmNzMzMGJhYmFiYzM2YjAzZmVmNjM1OGNiN2E4OSBsZWdhY3ktdHJ1bmsKKzkwOTcgM2M0ZDYyNzU0NjVlOGYzOTBhN2JjMmZjMmZhNzIxMDE5Y2ZkMTZjZCBsZWdhY3ktdHJ1bmsKKzkwOTggMDBiMWI3N2M0MTc3Y2EwZWIyNmJiMjNhNWRlYWViY2NiYjEzOTlhZiBsZWdhY3ktdHJ1bmsKKzkwOTkgYjk2YWFkMTJhMTUwYmI2YzMwMDRiNDg1ZDljY2YwMjhmZDJiZThiNSBsZWdhY3ktdHJ1bmsKKzkxMDAgZjE0MzQ4Zjc1N2M3Njk5ODk4MTIwZGRhMjZlYThhMWExNDZiMThhZSBsZWdhY3ktdHJ1bmsKKzkxMDEgODJkNjc3NGRhMGM2OTcxZWVhNjRjZmFhMzc2MDY2MzVmMGQ4OWZlZSBsZWdhY3ktdHJ1bmsKKzkxMDIgYmUwNzkyMWQ5NzEzMWU3MDZiYjFiMjVkMjQwOTE3NWY4YzU0ZDBiZSBsZWdhY3ktdHJ1bmsKKzkxMDMgZjg4YjBjMjYwOGQ4MmVjMWJiNzljNGRjMmU5ZTk2YjUzOWEyNDYzZiBsZWdhY3ktdHJ1bmsKKzkxMDQgNWUzMWQzODFmYTQ3ZDI1YzBiMzc1YTkwMzI2ODgwODRkMzlkOGQ5OCBsZWdhY3ktdHJ1bmsKKzkxMDUgYTgzOWQzZWZhYmNlNmQ2Mzc5MDJlMTk2ZTg1ODRhZjdjMGYxZWM3ZiBsZWdhY3ktdHJ1bmsKKzkxMDYgZTk2YTgxNjQ3ZjljN2YzNGNjMTM3ZDQ5OTUzYWVkMjIxNzc0MTVmMiBsZWdhY3ktdHJ1bmsKKzkxMDcgY2RmZTNiN2Q3MTg3ZDgzYmI0MzdjYWEwMmY0MzdiN2M5NzA1MTUyOCBsZWdhY3ktdHJ1bmsKKzkxMDggOGY0ZDg5ZjBmMzM2YzgzM2Q1NzViZDE2NmU0NGZhMWYwYjdkNzRmNSBsZWdhY3ktdHJ1bmsKKzkxMDkgZDUxNTFiN2I5ZGJjZmU5ZTRiZjEzYzcxNzNjMjM4YWNmYjc5Zjc3MSBsZWdhY3ktdHJ1bmsKKzkxMTAgNTJkNDBjYzVmYTA4Y2M1YjlkZTIxMGFlODY2NzkwMDlkM2E1YzA3MyBsZWdhY3ktdHJ1bmsKKzkxMTEgZGYyYTJlNDNiZTE4Y2ViM2YwMWM3YWU3MzBkZDQ5YzFiZTkxNDg4ZSBsZWdhY3ktdHJ1bmsKKzkxMTIgZWNmYmFkOTA2MjMxNDIwYTRhOWM1YjliYWNlZTFkMWU2N2Y5N2I3MiBsZWdhY3ktdHJ1bmsKKzkxMTMgMDJmNTljYjI4NmZhYTNhZGQ0YWNlNDRlZmFmOWY3Mjg5YzZmYTM1NCBsZWdhY3ktdHJ1bmsKKzkxMTQgZjQwODI3YmFhYjgxMTJhOGUxNTI0ZTYxMjgxMjgzZWQwNzU4NTUxYiBsZWdhY3ktdHJ1bmsKKzkxMTUgMDMzOTJjMjdiZjk2OGJmZGVkYzM4YzFjNTU1N2U0NDExZTQ0YTMyMCBsZWdhY3ktdHJ1bmsKKzkxMTYgZTZkNzg2OTU4ZmIzMDdmZjVhNzUyMDYwNmY5NzYwNDMzNWQ4NDMzMCBsZWdhY3ktdHJ1bmsKKzkxMTcgZGE2NjJiMzQ1Yzg3NjAyZjY2YWY2M2VlNzJhZDNiNGU4ZmQ3YTE4ZCBsZWdhY3ktdHJ1bmsKKzkxMTggZjkwMzUxYjE1ODFiMmRmMTg0MmJiNWI3ZmY5MWYxNjczNDk1ZDJkYyBsZWdhY3ktdHJ1bmsKKzkxMTkgYWM0YjQ0NDczODY5NDNmNDYzMGRhNGJiMGY3YTg0NDY3ODM3MTU4NiBsZWdhY3ktdHJ1bmsKKzkxMjAgMjUxOGFjOTI1MWYwZmMyZTI2NTAyNmI0OWM0MWQyYTMyZTgyMTliMiBsZWdhY3ktdHJ1bmsKKzkxMjEgNDEyMTcwNDUxMDYzMGUwMzVkYzk3NWY2MzBhZWViYjQzMDQ3YzQ2MyBsZWdhY3ktdHJ1bmsKKzkxMjIgZTFkMzU2NWQyYjdhNDkyNTFlNmUxMjA3N2Y2MTQzYjA1ZDczOTdkOSBsZWdhY3ktdHJ1bmsKKzkxMjMgZTg2ODFlZGEwODU0OTVkNDE4MWZkNDZiNzE1N2RkN2NkYWRmYTRkMiBsZWdhY3ktdHJ1bmsKKzkxMjQgMWRhOWY2MDI3OWM5MzMwMjEwMWUzMjE0ODhiMGQ4NWQxYTU5MzliZSBsZWdhY3ktdHJ1bmsKKzkxMjUgYTdlYTc0YTI3OTkzNjkzODE1YjhkNzIwMTI3ZWRiYzRjZDQ4ZjMyNyBsZWdhY3ktdHJ1bmsKKzkxMjYgMGYyNDk4Yjg0N2JmY2M0OTZhN2VmMDRiYzIwMTA2NzEwNTFjMWUyMiBsZWdhY3ktdHJ1bmsKKzkxMjcgMjA1ODllZDNlOGJkZTVmZjVjODJhMTRkMDNmMzQyY2EyYzUyYTkyZCBsZWdhY3ktdHJ1bmsKKzkxMjggZjZiZTliNWFkYmRiN2Q2Njc3MjllYTFkMjQwZGIyMjBjMjgxNjJjNyBsZWdhY3ktdHJ1bmsKKzkxMjkgY2U1Mjg4ZWMzNmQwMjU1ZTVjMjUxNGIwM2I1MTBkNzU3N2UzNzM0NiBsZWdhY3ktdHJ1bmsKKzkxMzAgNWVhYzFjOGRiMDRmNjQxODdlMTFlNDUzYzVlOTliNDZjMzIzZGM4YSBsZWdhY3ktdHJ1bmsKKzkxMzEgYzZjMWQxMzM2NzdhNzg1NTVkOTcwNzZiMjg1MjdmOWY2Y2MzN2ZiZiBsZWdhY3ktdHJ1bmsKKzkxMzIgNmQ5OGI5NjllMWY2NzA5NzJkZDg0YTczYzMxM2I5YjFhNWUzOTkyMiBsZWdhY3ktdHJ1bmsKKzkxMzMgNDY2ZTg3YjE0NzY3MWY5YzMwMjYwMDEyZmYzNzYwZGFjYzMwZmFkZCBsZWdhY3ktdHJ1bmsKKzkxMzQgNTIzMjlhMTEzZTBmYTNlZjBmOTc2MzYzMzY2ZTJjNmNhOTQ1M2MxOSBsZWdhY3ktdHJ1bmsKKzkxMzUgZTQ5OWM3ZGJmZGYzNTlhNGU4MmM1ZWUwNTBiMDNiYjNhNjE4NDJiYSBsZWdhY3ktdHJ1bmsKKzkxMzYgZGVhZDZlNzdmNDY0MjhlZWE0ZTFlMjMyOTFiNTNhZTAzZjVlYmE2OCBsZWdhY3ktdHJ1bmsKKzkxMzcgMzM0Y2JmZDUxZGIzYWVjZTBkZjE0NjM1NTJkMTgyZjgyZWVlZmM4YiBsZWdhY3ktdHJ1bmsKKzkxMzggYmI4NmJiNzZkNjFkYTNjMGYwNjMwY2VhNDIxYWI1ZGZmNjJjNTdhZCBsZWdhY3ktdHJ1bmsKKzkxMzkgOTk5NTViNjU0MDhkYWEyN2NiNTc1ODcwZWRiZmJiY2Y3MDhhMTE5YSBsZWdhY3ktdHJ1bmsKKzkxNDAgZmJmY2YzOGQyYjM5NWZiZmI3Nzc2Y2FmNTZjZmRlMDBjODJlNzU1ZiBsZWdhY3ktdHJ1bmsKKzkxNDEgOWYwMmViMzZiNTczOWE0N2ZkNjUyMDcxNWViNzRiMWExNjEyNjhiMyBsZWdhY3ktdHJ1bmsKKzkxNDIgNzMxNGJlNjQ1MGFhMDhjYjQ5ZjY0MGU4NGIwNTY1ZjNkMjkxZjExYSBsZWdhY3ktdHJ1bmsKKzkxNDMgZDZkM2U3Y2Y4OTdlMGIxODhkYTU5OWFkZjQwZGUyMDE1ZTgwOTcyYSBsZWdhY3ktdHJ1bmsKKzkxNDQgYjJmMWZlYzZhNzAyM2UzNWM2ZmFjOTBkOTMxMjlmYmYwNjIxN2Q0ZiBsZWdhY3ktdHJ1bmsKKzkxNDUgMDg5YzA0ZDg5MTUxZWIwY2ZlN2E3Y2VjOGJlNDllYzJmZGM1ZmMzNSBsZWdhY3ktdHJ1bmsKKzkxNDYgOTg1NTI3MDRiODhmMjdhNDc2YjAzNDk3NDg1MTRhN2FjMTFmOTUzYiBsZWdhY3ktdHJ1bmsKKzkxNDcgMmY1YzgzNzQ4MjVjODUzNzExOThmNWE3YmIyYjkzODA0ODhiMmIyZCBsZWdhY3ktdHJ1bmsKKzkxNDggOGUzZWUzNTc3ZDRlOTUxNmRiYzE2MjU2NzliNmIwMTlhZDdmN2M0YSBsZWdhY3ktdHJ1bmsKKzkxNDkgMTQxMDVkZjMzYzEyYTIxZjIzMGYyYjdkZDk1M2VlNWI0YWI3YzEzYSBsZWdhY3ktdHJ1bmsKKzkxNTAgOThkNTU3OTNiNjdmYmFlM2FhZWUxNzljY2Q3NmEzYTMzMmY4YTBjNiBsZWdhY3ktdHJ1bmsKKzkxNTEgOTczMTg3ZjFiZDFkM2RjMjBhY2EwOWI3OWQwMTEwNDk1N2U5YWZkNyBsZWdhY3ktdHJ1bmsKKzkxNTIgNDMyZDFiZTAxNjNjNzVjMzBlODNiZTM0YjU2Y2JiMGY2MjZhZDQ5MiBsZWdhY3ktdHJ1bmsKKzkxNTMgY2RiMzI3OWIwNmU3OWQyOGI4NTk0MmM4OTJiZWM0NzEzZjhlMzc4NSBsZWdhY3ktdHJ1bmsKKzkxNTQgMWJiOGI3ZmU0NWVjM2VkMGEyNzhhMGNjNzg1YTNjZGM0YWI3NDhhZCBsZWdhY3ktdHJ1bmsKKzkxNTUgZTQ1YjgzNzA4ZDllOWJiZGQzODQzNTRlNzkxYWJkN2QxY2ZkODI5MyBsZWdhY3ktdHJ1bmsKKzkxNTYgZGUyZjhmNDk0YWUzNzM3ZWY5MmI4YTRlZDA3MDZjZTM3NjgwZmU1OSBsZWdhY3ktdHJ1bmsKKzkxNTcgZjk1YzlhZTJhYWVmZWU5NWE3MGNhYTE3MWU2ZmI2YjI2Yzg5NDE2YiBsZWdhY3ktdHJ1bmsKKzkxNTggYjhhM2JhNmU3YmM5ZGVmNmE5OWM0Mjk1OWM3MmM5NDNmYzQ4NWUzMSBsZWdhY3ktdHJ1bmsKKzkxNTggOGZmNThiNTczMGYwNmJlMDhmYmJkYzJiZjU5MjIyNmY3YTczNjIwMSBsZWdhY3ktdHJ1bmsKKzkxNjAgZWZmYTYyYjAwNjJiN2QyY2E1YWJjMTZiNDlmNWU0NjJhODMxYmY0YSBsZWdhY3ktdHJ1bmsKKzkxNjEgY2I4ODliNjc4MDUzYjAxMzVhZWI5NTdmYjliMzE3ZGE2NmZhMjc5NSBsZWdhY3ktdHJ1bmsKKzkxNjIgMDE3NDY3ZGU3OTMzZThjNzNiNTc0NzJkMTQyM2I1NjRiZGJmZDA4MiBsZWdhY3ktdHJ1bmsKKzkxNjMgODMxNDdlMDJlODBkOGUzMjNkNDkwYmFhZGU3NjJjOTlkMjIwMGUyNiBsZWdhY3ktdHJ1bmsKKzkxNjQgMmI3ZmJkNzZjZWY4NzA1NGNiNGIzYjEwZjM2MjZhNjVkMDE0NmY1MiBsZWdhY3ktdHJ1bmsKKzkxNjUgYTU5M2MyMjBlZGNjNjU5M2Q1MGY2Yjg0NGI4ZDJmNjBiYWQyYjQ1YSBsZWdhY3ktdHJ1bmsKKzkxNjYgNTNhMDdhZGE0OTlhZjc4ODY4ZTVjNmYzZWU2MzcyNDlmYWI2ZGFkMCBsZWdhY3ktdHJ1bmsKKzkxNjcgODRiNDNmZjQyZmE4MGUxYWViMzc3OWYwYmFjMTA0MWUzNmQ2YmJjNiBsZWdhY3ktdHJ1bmsKKzkxNjggYzA3OTg0ODdiNzI4Yjg3YTExNjJiY2FiYjI4NDc3MzEzZDI3MjNjNyBsZWdhY3ktdHJ1bmsKKzkxNjkgZDc5MGZlMjVlMTQ4ZWY5MmViZDgzY2JhNmEzMjU4YjcwZDgxY2Y1NCBsZWdhY3ktdHJ1bmsKKzkxNzAgNGJjYmJlYjYzYjg5OGU1NDMyMzQyZWZhNjlkYTI0N2EzODA2NDE4YiBsZWdhY3ktdHJ1bmsKKzkxNzEgNDBhODQyMGI0YWIzNmU0ZWUzMjc2NGZkY2QyYTcyYjFjNjJlMzQ1MiBsZWdhY3ktdHJ1bmsKKzkxNzIgYTcyYmY0M2E4ODcwYjFlMGQzMzQzN2QzNjc2NjQzMjJjYjc4YmYxNyBsZWdhY3ktdHJ1bmsKKzkxNzMgYjlmY2I5YTM0MzMyODIyZjY4YzY2OWY4N2I1ZWQ5YjM2MTAwMGE4ZiBsZWdhY3ktdHJ1bmsKKzkxNzQgZTkyMTU0MDIyYjQ4ZWU2Y2ZhNzE5NTVkMDc1ZjM1YzEzOWRmN2ZlOSBsZWdhY3ktdHJ1bmsKKzkxNzUgMmU3NWIzMWQ5NGM4NGYzMWE5MTlmNGE5NGQyZWMwMTA4MWI5YTUxNiBsZWdhY3ktdHJ1bmsKKzkxNzYgYjczZWI0ZTZmYWNlY2ZlZjlmOTIzYWU4NWVlOGY2MzQ4Yzc0MWM1NyBsZWdhY3ktdHJ1bmsKKzkxNzcgOTAwMWMwYTdiZTk4NjMzOTY5N2ExMWIzMzAxMTZkMmM5NTEwNzk4ZiBsZWdhY3ktdHJ1bmsKKzkxNzggYzY5MDM0YThiM2Y0MzRmN2E0ZjE5MGQxYzU4ZmIzMTA1NmFiNzExZiBsZWdhY3ktdHJ1bmsKKzkxNzkgNGQ2M2EwMDFjMjVlYTljMTJiYTg1NmZhY2I3ZDQ2ZDAxNTUyNDFkMyBsZWdhY3ktdHJ1bmsKKzkxODAgMTUxNjAxOWM5MGJlODhmNTAzOGRiNDcxM2ZlY2Y2ODM0MjdhNDhjZiBsZWdhY3ktdHJ1bmsKKzkxODEgYjkzNmNjZjQyZWEyZDUxYzEzYWQ2NmYzOGM4NWU5MzA1MzBiZTMzYSBsZWdhY3ktdHJ1bmsKKzkxODIgOWQ4ZTQ4ZjNiNDk4NWYwNmM1NmUxODdjOTE0YjU1ZmMyMjY0YTJlMCBsZWdhY3ktdHJ1bmsKKzkxODMgMDYxNTc5Mzk1MDQ2NTAxZDcxMTY5Yjk5M2RmYmI0YmIxZmU1MzEzZiBsZWdhY3ktdHJ1bmsKKzkxODQgY2JjNWU3ZDZhZDIzNWZiYTkwZjliNjY3NzFiZjhhYmQyYjhjOGZmMiBsZWdhY3ktdHJ1bmsKKzkxODUgMzlkOTZkOWQzY2NiNTZhNjFmY2U1MjEzYjNjM2NkNzljZDc2M2M4NyBsZWdhY3ktdHJ1bmsKKzkxODYgNDdhM2YzYjYwNTAyNjNhYWM5YWVjZDA2OTJhMmQ4MjI5ZGZlYTJjMyBsZWdhY3ktdHJ1bmsKKzkxODcgMTJhMWM5ODQ1MDc0NDA3NmQ4ZWFjNjZkMzJiY2NkMzRmYjFjNTQ4OCBsZWdhY3ktdHJ1bmsKKzkxODggOTBjNjM5MGI0OTQxNzNlZGRlODQyYTQyNjdhNWYzOWVjYTg4NzRhYiBsZWdhY3ktdHJ1bmsKKzkxODkgOThhYTkyN2Y5MDdjYzAzZDU0NTkwNWIzMjE2Njk5NDY2Zjc0ZmU0YSBsZWdhY3ktdHJ1bmsKKzkxOTAgZmYxNjQ0OGU4ZjI0MTcwODBjYmUzZTY3YjYxNTBiNDg4NjgxOTBjOCBsZWdhY3ktdHJ1bmsKKzkxOTEgOGE1YTAxMjMwN2JkZDEwZjk2OWJjN2VhNmY1YTlmNzE1ODExYjAyMyBsZWdhY3ktdHJ1bmsKKzkxOTIgYTViYjBiOGRjMzIwNDJiZmM1NWE0ODEyMzY0NzhiMWU3MDZjM2UyMCBsZWdhY3ktdHJ1bmsKKzkxOTMgMzliNDEzYWMyY2M5MWMxYjU5ZDJjNmI5ZTU0NjQzYzRhNmI5ZDI4NiBsZWdhY3ktdHJ1bmsKKzkxOTQgZDg1NGExYzdlNzRkMzMxYTc1MjkzZWJmNWRkMWE3YmViNDU3ZWYxMyBsZWdhY3ktdHJ1bmsKKzkxOTUgNjRhNzUyMTFjZjcyOWNmNGFjMDZlZDcyNTRkZWU5YzI4MzY0OWRhMiBsZWdhY3ktdHJ1bmsKKzkxOTYgMzJmMmVkYTI5NDZjYWQ3MDFiNDNlNmM4YTdlYzYyZDRiZTkzMjE3NiBsZWdhY3ktdHJ1bmsKKzkxOTcgZmFlYmMxOTQwNDMyOGIxMmJjMmJjMzEyMzQwMmE1NmM1ZDI5NTE1OCBsZWdhY3ktdHJ1bmsKKzkxOTggOTYwODUzOTAyZWJlNDE5MmUxNGNiM2Y4NGJhNGRiZDUyOTlkYjMxZiBsZWdhY3ktdHJ1bmsKKzkxOTkgYmJmOWU0YjMxZDg0YzRjMjEyZDNmNWYyZDU5NDE1MGMwMTkwZjk3ZSBsZWdhY3ktdHJ1bmsKKzkyMDAgMjFkY2UzMzI1MzIxOTYyMjFiYzBiMWFhZGUxZWFiYjAzMTI3MjI4OSBsZWdhY3ktdHJ1bmsKKzkyMDEgYzNmODViY2IwNDVhZDczZjYzNzUyMThjYTMxODM0NmVjYzhiOGU4YSBsZWdhY3ktdHJ1bmsKKzkyMDIgMmUzYWNiMjE0MGJmM2E1ZmY4MGM4Y2ZjMzNkNmExMTg5NTcyYWUyOSBsZWdhY3ktdHJ1bmsKKzkyMDMgMjgzZDFjYTU4NWQ5NGYyNjYzZjExY2I1M2FmZjMwYmRjYmZlMTI2MSBsZWdhY3ktdHJ1bmsKKzkyMDQgNGYzNjQyYTIwMTM3MmU2ODI0M2NkNzlhODU4NWU0ZTBiMmU0ZTRlNiBsZWdhY3ktdHJ1bmsKKzkyMDUgMjY2MmM5ZmUxYjNlMDNjYWEyN2ZkZjU2MTY0ODkyMzViNDEyYjQxZCBsZWdhY3ktdHJ1bmsKKzkyMDYgN2NjZTQ2OTE2MGM2ZWI4NTNiM2E4YmY0NGFhNDEwY2UxZDI4ZDBlZiBsZWdhY3ktdHJ1bmsKKzkyMDcgMTFhNzUxNzA1NGE1OGVhODAxNmE2NDUzYTVhYWMzN2U0MmE2MmZlNiBsZWdhY3ktdHJ1bmsKKzkyMDggOWM5YTg3YjViYjE3ZWMwMWVhM2IzZTI1MDNmYjA0ZjAxZTIzZjkzNiBsZWdhY3ktdHJ1bmsKKzkyMDkgMjE2NTYyMDRkZDRmYmQ5YTY3MWM2NDg3ZThlMjcyNjdmNjc0N2E4MCBsZWdhY3ktdHJ1bmsKKzkyMTAgMDlmNmE0OWFjYTEyZWY3MDZkMjQ4NjU0ZjJkZTdmY2NmZmY5ZDJlNSBsZWdhY3ktdHJ1bmsKKzkyMTEgNjVhZTcxMWRiMDBjYjVkNTU4YmI1NGM4MzdkNTRjMTliODc0MWJmNyBsZWdhY3ktdHJ1bmsKKzkyMTIgNGM5YjI1NmEzYmVlMGM5MTI4YTFlYzhhMjdkZGVhMWY5NmM0ZTdkOSBsZWdhY3ktdHJ1bmsKKzkyMTMgZmFiOGFiNWRjNWY4NGU4ZjZlOTZhZDk4ZDJjYzBiYjdhNWIyNTNjNCBsZWdhY3ktdHJ1bmsKKzkyMTQgNTNmZDQyYWEzYmJmY2FjYTBlMTU0NmIwZDY0ZTUxYzMyMTI4MGZiYiBsZWdhY3ktdHJ1bmsKKzkyMTUgYWIzZDdhMjhlMDdkMjU4MmFkZjA1ZDllZDQxODhiNGQxOTJlMWRkZiBsZWdhY3ktdHJ1bmsKKzkyMTYgM2JlZjU1Y2I3NDRiNmU2ZGU5Y2RlYjA4ZDA2YjJjN2FhMTg3YjhmZiBsZWdhY3ktdHJ1bmsKKzkyMTcgMWQ0MTc1ZWQ2YTljZWVlMzE1NTgwZjA4MmE1NWM1ZWZlZDQyZGFjNyBsZWdhY3ktdHJ1bmsKKzkyMTggMTg1M2I1YmMwNTQ4YmEwNjJjMzU0MDMzZTgwZTM5ZTJiODQxNTg4MyBsZWdhY3ktdHJ1bmsKKzkyMTkgNGNmMGRhMDcxZTJiZWEzZTliNGIwNzVjMGNiMmI2NTMwMDEyNzAwZCBsZWdhY3ktdHJ1bmsKKzkyMjAgNDg4N2Q3NTQ2OTJhZWZiMTAwYmNhYjQ1NDJiM2M0MDRlNDA1NWM1MyBsZWdhY3ktdHJ1bmsKKzkyMjEgNGY2OGM3YWM1MTE1NGRjZGNlMGY0NTgwNDJjZTQyMDczNjQ0MzM1YSBsZWdhY3ktdHJ1bmsKKzkyMjIgODA4NDhlOTE4YmNjMTg0MTQzYTllNmI0ZDQ0YjVmNzBmYTZhZWRiOCBsZWdhY3ktdHJ1bmsKKzkyMjMgMWRiNDFjYTQ1YzdmYzg4NTQ0ODc5NzI4ZDQ2NDQ1NjZhMzVhYjQyNiBsZWdhY3ktdHJ1bmsKKzkyMjQgYWJlM2FhZDllMDM4NWU3ZTY1Zjc1NDJkZDJiMmM2NWRkYjk3MzViNCBsZWdhY3ktdHJ1bmsKKzkyMjUgZmNmZjUzMTYzNGUxNGY0MTNkNzYxNTM2ZTIyMmE3MWQ1YjAxODgwZiBsZWdhY3ktdHJ1bmsKKzkyMjYgNzRlYTIwOGQ0NmNlODFhYTNkOWQ3NDgyYmQ1NzRjNTRkNzI0ODhlYSBsZWdhY3ktdHJ1bmsKKzkyMjcgNzkzY2FmNTE3NjQ3OWU0ZTRhOGU0N2ExZTM2YjMyYjNhNmZjMTM0OCBsZWdhY3ktdHJ1bmsKKzkyMjggNWU3YzkxMzU4ZWQyY2RlYTkxYzg3YzYwMGFlNTU4M2U3MWUzM2M1YSBsZWdhY3ktdHJ1bmsKKzkyMjkgNGRhZjA5MGZmMTYyMjY1MTk1NDM0M2Y3ZmI0NjY1YjhmMzE5YjUzYyBsZWdhY3ktdHJ1bmsKKzkyMzAgZWJhNmFkZjNmODQ0ZWY2NDdmYWI4OTZhMjM3Njc4NzcyNDVhZGJmNSBsZWdhY3ktdHJ1bmsKKzkyMzEgZTJlNWJiZmFkMWM4MWY3M2FiMzI0MTNmYzVlMGY1MDk4NWNhZWYwMyBsZWdhY3ktdHJ1bmsKKzkyMzIgMDdlOTVlZjU1ZjY1OGU3ZTY3OTVmYjBmMzM2MzBhMGZhZTkxNmIxNCBsZWdhY3ktdHJ1bmsKKzkyMzMgZmQyOWNlYmU4OGRjOGI0NTYyYzQ0YWNiNTJmYTg0OGI2NmY2N2Q2ZCBsZWdhY3ktdHJ1bmsKKzkyMzQgZTQwNzBkYzZhYzM1ZDVkMmYzZjIxZTE5ZDgxM2U0ZDgzMDc1M2FiNCBsZWdhY3ktdHJ1bmsKKzkyMzUgYWZmNmZmNTJkNWU3ZWQzMTJiZDg1MzRiOGZlM2Y2ZDMxMDE1YzQ5ZCBsZWdhY3ktdHJ1bmsKKzkyMzYgMGI1ZWIzMmI1NTFkMjgyYTJhNjY5ZWU0YThlNTRiMzBjZDM0OTAxMCBsZWdhY3ktdHJ1bmsKKzkyMzcgY2FlOGFhNDQxZmJkNGQ3YjY1ZTdlM2Q5YjJiYzExYjZkNzMwZTE5NiBsZWdhY3ktdHJ1bmsKKzkyMzggMDIwNGQ0NjFkMjE5Njc4OGVjMzQwYjkwMzMwNzNlNWEyNzFmZDVlMCBsZWdhY3ktdHJ1bmsKKzkyMzkgNzQ4YWJjN2Y4ODA4ZjQ4NDM5MTRmMjU1M2RlNGE2MzUxOGQxZWE4MyBsZWdhY3ktdHJ1bmsKKzkyNDAgMGEzYzc0MDJkMzk1M2QwN2YwMDBiYzJkYWUzOWNmMTU1MmE4Y2U1OCBsZWdhY3ktdHJ1bmsKKzkyNDEgMTI4MjRmZTA0YTA4ODUyMWRjNTRmYTYyZWIzNWM0Njc4NjU4YjE4OCBsZWdhY3ktdHJ1bmsKKzkyNDIgMDc1MmJiZjc3ZDgxM2ExZjU3ZGY3ZTNiN2IzZjQ2YTgzYzI1NGFiZCBsZWdhY3ktdHJ1bmsKKzkyNDMgZTZjMDMzZTliNzY5MjdiOWViNTFmMjdjNmMxYTU0ZjM2OGMxN2JiYyBsZWdhY3ktdHJ1bmsKKzkyNDQgODkwOTJhZDFlNjYwNzBkMTg2NWY4MTIwZTliZWVmZjJlYzg0MjI4NiBsZWdhY3ktdHJ1bmsKKzkyNDUgZTk3YjgyMzc1OTFjNTgxNTE1NWQ2MDlkMzc4NzI4ODg3N2M3NGQ0OCBsZWdhY3ktdHJ1bmsKKzkyNDYgYTI5YTZiZjAzYWYzMzIzYWVmOGEzOTgyZDEwZWFkZmYxMjhlMmQ1MSBsZWdhY3ktdHJ1bmsKKzkyNDcgMjJmZGZkMjgzYzljZWQ2ZDU1ODRjZTVjOTdhMjIwOWVlZDI4MGYyYiBsZWdhY3ktdHJ1bmsKKzkyNDggYjVjZDc2ODgxMmNiMzI0MTA4MjExMDc3NGM3ZGQ0Y2JiYTZhZDk2YSBsZWdhY3ktdHJ1bmsKKzkyNDkgMzNlMjE0NTI1MGFmZWU4MmNlNWNiOWM4NzYzZjRjMDgyMGViMmY1OSBsZWdhY3ktdHJ1bmsKKzkyNTAgODMyYTgwN2QwMDk4OGVhZDhjNjJiYjQwZWE0ZWRlN2Q2MzViNjY2MyBsZWdhY3ktdHJ1bmsKKzkyNTEgMTRkNmI3YTQyOTE5NDIxNTRlMGE2OWVlMmE0YTM5YzEwYmM4ZmQwNCBsZWdhY3ktdHJ1bmsKKzkyNTIgMGVmMjNmNTEzYTY1OTU5NzczYTE1YTk4YjU5MmM0MzhkMDAzNDkwYyBsZWdhY3ktdHJ1bmsKKzkyNTMgMzExN2FmOWRiZmNlNzkzNDZlZWUxZWQwZmJjZWNhNDVmZTUxMGQxNyBsZWdhY3ktdHJ1bmsKKzkyNTQgM2RmZTA1MTFiYzNiMzI2MzE1MDNjZTUxOGJjMmVhOGNlYTcyMTdmNSBsZWdhY3ktdHJ1bmsKKzkyNTUgZGFhNzdkOWFmMzRjOTAzMzlmOWMzZjliOGIwMzlhNjBlMWM3ZmM1YiBsZWdhY3ktdHJ1bmsKKzkyNTYgYmY2ZGU4MmFhYjBkODgxYWI3ODczOWUxMmQ0N2EyNzYxMzAyYTNkMiBsZWdhY3ktdHJ1bmsKKzkyNTcgNGRiZmZmYzNjMjNiZTM5NDVkYTQ0Zjc0NGFhZGExZDBmYzRiYmIzZSBsZWdhY3ktdHJ1bmsKKzkyNTggOWNmOGQxNGYzNTY1MmNkOTNlYmYzNmZjMDBjOWEzN2ExZmJjZDIyMiBsZWdhY3ktdHJ1bmsKKzkyNTkgYjk2ZDlmYmIyNGU1NjE0ZmJlZmNlODZkZWEzZjExOTkxMDNiNDk0ZCBsZWdhY3ktdHJ1bmsKKzkyNjAgODk4MDIwODdmODA2NjljZjc5YmVmZWMxNDQyYWUyNzE5ZDdiODAyOCBsZWdhY3ktdHJ1bmsKKzkyNjEgYzE4NTAxNzcwODk1NDUzZTczOTYzNzhjMGVkZWZiMGU3Y2M3MTg3YiBsZWdhY3ktdHJ1bmsKKzkyNjIgMDg0ODAwNTAyYTQyMDg0MjM2ZjhiZDQ3NTgzY2Q3NjdmMmU3YTRjMCBsZWdhY3ktdHJ1bmsKKzkyNjMgZjRlM2E3YWViOTQ5ZmYzZWQ2NWUxZGUxMzBiMTFlMTEyYzIxODEyYiBsZWdhY3ktdHJ1bmsKKzkyNjQgYmMwMDdjZjFkNmJhM2ExOTdlYzBkOTYxOTllM2IyOTRiMTFlMDAyMyBsZWdhY3ktdHJ1bmsKKzkyNjUgZjY5NTQyNzRlMWNhNDhmODg0NTIzYmUwYjBiNzI0M2ExYTY3ZTYzMiBsZWdhY3ktdHJ1bmsKKzkyNjYgY2VhYmQ1MDMxN2UzMGVkMjExZTA2M2RkNzUyYjhjNmIwODk2N2EwNSBsZWdhY3ktdHJ1bmsKKzkyNjcgYmI0NDBhMjk3NWFiOTkxNWNkODk2MmEwYmZjOGFhMjBiODkzMWNiMyBsZWdhY3ktdHJ1bmsKKzkyNjggYjFlNmMzZmU1ZGU4NTQ1ZDRmMWRkNWY3NGE4MTJlZjljMjYwODEwYSBsZWdhY3ktdHJ1bmsKKzkyNjkgOWU3NWQ5NDI1NmUwZTZhNTJiNmFjZTMwYTA3NWRkZjgyOTdkNjYxYyBsZWdhY3ktdHJ1bmsKKzkyNzAgZjUzM2MzMDc5NzgwYmZlOWE1NjcxNGVjZjlmOGU3MjUzMjliOGIxNyBsZWdhY3ktdHJ1bmsKKzkyNzEgODU3ZjkwNjUwNDFkNTIwYjUyM2EzZGI1NTk4NTEwOWRmNWRlZWMyZCBsZWdhY3ktdHJ1bmsKKzkyNzIgYjA5MmVlMTlhZTRmZWMwYmE1YjMyMmY4ODM5MTU3N2E4NDRmZDI2MCBsZWdhY3ktdHJ1bmsKKzkyNzMgNWIyNGNiYjFmOTliYTI1YWY1MjIxNzM2Y2VkMGNhYjQ5MWJjNjIyMyBsZWdhY3ktdHJ1bmsKKzkyNzQgZDEwMGQwMjUyY2IxYzVkY2ZkZjFmNmViNzQwY2FkNTAzN2MzZGIyYiBsZWdhY3ktdHJ1bmsKKzkyNzUgOTU0NDE3MTkxZmJmYzc4MWVjZThmNmZhYTg4YTUzNzUyNmNkYWM0ZiBsZWdhY3ktdHJ1bmsKKzkyNzYgMGJhNTBjNzQyOWU1MTAzNGIwZmEyOThhMjY4NzY0MzNhNzA3ZjkxYyBsZWdhY3ktdHJ1bmsKKzkyNzcgMzQxYTZlNDdhOGZmNjQ1ZmVhY2M2ZTNkYmFmNzZiZjgwM2RjYzk3YiBsZWdhY3ktdHJ1bmsKKzkyNzggNWVkZmViN2FhNmVhZTNkNzA0ODg2MjJjZTVhYzM5MmI5ZjZjNDU2NiBsZWdhY3ktdHJ1bmsKKzkyNzkgYmNhOTQ4MTk0ZGVhZjQ4Mjk0ZjBkYjYyMWYzYWNkNGMwMzFmOWEzNCBsZWdhY3ktdHJ1bmsKKzkyODAgOTg1YmU2ZGM4OTRmMzVmYWIwNWJiNDg0ODhlYjFlNzA3NTE4ZDJlOCBsZWdhY3ktdHJ1bmsKKzkyODEgYWZiYzExZGQyYzY1ZTVmYjgzYzZmNzdlM2EzYjZiYjk2MmJlZDg3YiBsZWdhY3ktdHJ1bmsKKzkyODIgZTIyNGM0MWJkYWM2NTA4ZjA3NGZlYmRjMjg3MDIzZGJlMmY2ODg3ZCBsZWdhY3ktdHJ1bmsKKzkyODMgOTNlNDgwZGVkY2YwOTQwNzFmODQ4N2U5ZDUzZjE1ZTViNGUyMzUzYSBsZWdhY3ktdHJ1bmsKKzkyODQgYWMxYjI2MWYxNjkwNGE2NjU5ZmNkNjI3ODg4ZDI4MGRmNzBiZjdhZCBsZWdhY3ktdHJ1bmsKKzkyODUgN2Y5MTlkNDcwMTI5M2ZjNWRkNjBiNmU2ZWJjMDllMDk4MjJlYTUxZiBsZWdhY3ktdHJ1bmsKKzkyODYgYTg3YmM1M2ZjMWFkNmVlNzViYWVhZTJiMDkyMzlhMDUxM2M4NDZiNyBsZWdhY3ktdHJ1bmsKKzkyODcgMTQwZTY1ZjgzOTUzM2ZhOWZiZTk3MTk3MDE5N2UyNTI5OTZlNjE2YSBsZWdhY3ktdHJ1bmsKKzkyODggY2E3NTVmYjFlZmI4YWY0M2I1MDEwOTI5OGI5NjU2MTA4ODlhYjY0NiBsZWdhY3ktdHJ1bmsKKzkyODkgOWI0MDZjOTI1MTQwODI1ODI5ZWYxNDJmMzFiMTQzNTNkYTg2NWQ5YiBsZWdhY3ktdHJ1bmsKKzkyOTAgZDg1MTQ3ZGNlMTg1ZDI2MmYyYzA3OGRhZDUyMDU2YzE3NGMyMmY5ZiBsZWdhY3ktdHJ1bmsKKzkyOTEgNjY3YTg1ZWJmYzNlZDBhYmFmNjAwM2M4M2ZjYTZmNjE2OTk2ZjFmNSBsZWdhY3ktdHJ1bmsKKzkyOTIgMGZlM2RjMjhiOTJjMGM5NmMyOTVlNTljNTM4MzgxZDY1MTFlYmY1YyBsZWdhY3ktdHJ1bmsKKzkyOTMgNjEzMWQzZjlhZjJkNjA5MjlkMDAyM2E1NWExMjY0MDU4N2ExZWRiYyBsZWdhY3ktdHJ1bmsKKzkyOTQgMmUzZjI0NGYxMDVmMzU3Mzk4ZjkyNzc1OTVlZTQwYmY2NWZjZDNhMiBsZWdhY3ktdHJ1bmsKKzkyOTUgN2RiYTJmM2I2YzgxMzVjM2U3N2EwMDE2ZGNjN2VjMDIwM2I0MDhhMCBsZWdhY3ktdHJ1bmsKKzkyOTYgNzczZmJjOGVmYmQ3N2UwNzJkOGRjMWY2YjdiYzEwMmFkNDYyZDk0NCBsZWdhY3ktdHJ1bmsKKzkyOTcgOTU5MjliMDFhMjYyNGFhMjZmM2MxZTNjYWRkMDQ1NDQ1NDllYjU0MSBsZWdhY3ktdHJ1bmsKKzkyOTggOGVmNDgxYzdjM2FmYzY0MzAwN2YzZjllZDcyYjcyZWRjNzM4ZDBkOSBsZWdhY3ktdHJ1bmsKKzkyOTkgYjE5Y2Q0MzEzMTI2NjNlZjQ1NWQ4YjQ2MWI1MDU3YjRlZDFlNzk2NSBsZWdhY3ktdHJ1bmsKKzkzMDAgZmMxMWZmMmM3NWIwNDk1ZGQ1YWNkZjBlOTg0MTkwMDA3ZjgyMWI2MCBsZWdhY3ktdHJ1bmsKKzkzMDEgNjYzYTQ5ZTRiZWQzMjY4Mjc4YzczOGU2YzQ1MWM4MWM1NGM0ZjQ4YyBsZWdhY3ktdHJ1bmsKKzkzMDIgZTM5YzNiNzc3MDQxNzJjODVhZjAzNDQxOTE3N2FiMGUxYjM0ZGFmNSBsZWdhY3ktdHJ1bmsKKzkzMDMgZWNhYTQzMWM1OTY5ZDliM2EzNDI1NDRlMTA1MzVkN2IzN2VmMGVhMiBsZWdhY3ktdHJ1bmsKKzkzMDQgYTE1NDVjYmYwYWRmN2Y0NmM0OTAwYzcxZTg4OTUzMGNiYzA4NmRlYiBsZWdhY3ktdHJ1bmsKKzkzMDUgOWZlOTdiNzYzMDY4YjY2OWNiOTU4OWQ2OWU5NWE1NjdmYTgwNGFiMiBsZWdhY3ktdHJ1bmsKKzkzMDYgZWU4OGM1YWJjMzQxZWNlOTM4YmIxZTE0NWMzMmRjMjg5ZTExODFhYyBsZWdhY3ktdHJ1bmsKKzkzMDcgMzUxYzcwYjhlNzMxM2ZkYjRhOGM5ZWFiZDVmZmRkMTc5NDVlYTc2MyBsZWdhY3ktdHJ1bmsKKzkzMDggOTkyMDlkY2YyOTQ2OGNlNzMwOGMyODRkOTczMTFmZDBiODc1YWFmMCBsZWdhY3ktdHJ1bmsKKzkzMDkgYWNmMjQ3NDY1ZmViZmRlMWJkNDFkY2U0MjVhYTZiNGExNzFlY2I2ZCBsZWdhY3ktdHJ1bmsKKzkzMTAgOWE1N2I0MTA3NDhkNTE1ZTg0YzdlYjAzNDQwZmIxYmVkOTgxZGNhMSBsZWdhY3ktdHJ1bmsKKzkzMTEgY2JmYzVmMzMyZDlkNGYxOWYzYTQ2OTYzYWFiNWExMTFjZWY1MTliMCBsZWdhY3ktdHJ1bmsKKzkzMTIgYWFiMDgyYmZlNjU0ZTUzZWU5N2MxNmQzYTc1MmI2YmM3YWYwZTk3MyBsZWdhY3ktdHJ1bmsKKzkzMTMgZGIxOTFhY2Y4ZTA2OGU2YWFjNTNmODc2ZDU2NTRhYWRmMDlhNjAzOCBsZWdhY3ktdHJ1bmsKKzkzMTQgMDI1NWI1ZWNkZTEwNjU0Mjk5ZjAzMTY4MWJjMzhjZWU5NDJmOThmNyBsZWdhY3ktdHJ1bmsKKzkzMTUgOTYxODFhNGE1NDgyNDliZDZhYThhZTkxZDZmMTI2YTU3ZTQzODg2MCBsZWdhY3ktdHJ1bmsKKzkzMTYgYjc1NTAwZWVlZDliMTJkMjc5MWVjMDIxNGE2OTUzYjUxYzdiOThhMiBsZWdhY3ktdHJ1bmsKKzkzMTcgNjIzMzM4MzUxMmJhOTlhMTgyZWJkZjVlMmEzOGNlZjRmMTlmZWM4NiBsZWdhY3ktdHJ1bmsKKzkzMTggNThiZmVjZTAxOTY4Y2MwOWMxNmYxMWQ3MzkyNDVhNDhkOTYzZDQ0NyBsZWdhY3ktdHJ1bmsKKzkzMTkgZDcxMzliYWM5Yjk5Nzg1ZWJkNmNjYjEyOWJlNTk2YWY2YmE2ODc0NyBsZWdhY3ktdHJ1bmsKKzkzMjAgNDE2Yzc5NTcyZjExODcxYjZlYWQxNzc4ODgwNGRmODhlYjdjMzkzMCBsZWdhY3ktdHJ1bmsKKzkzMjEgYWM2NWRiMjA1NGM5YzY3OGNjNGMyYmU5ZWNiNGIxYmI3YTYxYTFlZSBsZWdhY3ktdHJ1bmsKKzkzMjEgZWI3ODY1OGQ4MTlmYjBhZjA5YThlNmY5YmVkY2I2NzA4MDVlZDVmNiBsZWdhY3ktdHJ1bmsKKzkzMjMgM2ZmZjM0ZWE5MWFiNjQxOGQ5MmM3NTA1MmQ2MWJmMTMxYzMyM2E4ZSBsZWdhY3ktdHJ1bmsKKzkzMjQgNTk5ZWVhOTMwODQzYzE0Y2YyYmJkOTM0ODg3MTQ4NDQ4MzcwNGYzZSBsZWdhY3ktdHJ1bmsKKzkzMjUgOWRlZDRmOWUwMTllZDBhMWU1YzZlYWYxNzQyYzFhMzA2MTVkYjMyNSBsZWdhY3ktdHJ1bmsKKzkzMjYgOGFkYjM1MzI5YWYwMjRkOTUzN2IzMWVkMDdiMjNjZTYwZjg2MDlmMSBsZWdhY3ktdHJ1bmsKKzkzMjcgNTFmOGQ0ZGE4MWU0YjA3Nzk4NjE4ZWVjZDY0NjVlOGRjYmZjNTA1YSBsZWdhY3ktdHJ1bmsKKzkzMjggNTJmZDgyODE2NTYxNDViNWU3MzQ4Yzk1MTQ0YzQ3NTE4YzA3YWFkNyBsZWdhY3ktdHJ1bmsKKzkzMjkgZDNlNTE2ZWY5Y2QxMTIyZmQzMjcxZGZlYzhlODU0ZDk1OTM5ZDY2MiBsZWdhY3ktdHJ1bmsKKzkzMzAgYTQyM2UzZTBkYTQwMTBjYmQyNTY2NWIxYjJjYTQ5OWQ2MTEzZTk2OCBsZWdhY3ktdHJ1bmsKKzkzMzEgNjcyYTY1N2FiYmE4N2M5MGM1NWYwZTdhYzQzNjM4MTRkMTNiZDNkYyBsZWdhY3ktdHJ1bmsKKzkzMzIgZmQwN2Q1MDNhMzNjNWU1NmUxY2JmYzE5MDczYWFkZTRkOTBhY2I0YSBsZWdhY3ktdHJ1bmsKKzkzMzMgMWFiMzA3OTUxZjRlZDA4ODE1NjI1MGFkMWJmNzNhZmJhMDQ4YjRmOSBsZWdhY3ktdHJ1bmsKKzkzMzQgOTI3NGZhYjJjNWYyMGY1YjcyMDVlM2ZjYTkzNDMwYmMxOTk3MjUxOSBsZWdhY3ktdHJ1bmsKKzkzMzUgNjdjMTBkOTg5MDhkMmJlYjc3MTRlZjQxYjhkYTA1OWMyYTcwMTVhZSBsZWdhY3ktdHJ1bmsKKzkzMzYgNjFkOTczZWI0MTAyY2JmZDE5N2EwNWM3MDIyNmRhZWY3NjAzM2QwMCBsZWdhY3ktdHJ1bmsKKzkzMzcgNTFjOTMwMDc5NTE0NzUwMDQ0OTY3ZTE0NTI5OTEwYTIxMWQxOWE0MSBsZWdhY3ktdHJ1bmsKKzkzMzggOWYxZDNlZWI3ODRiOTMyNTkyZDlkYTAzMzQxZTQ3YmE0YmIwMTExZiBsZWdhY3ktdHJ1bmsKKzkzMzkgNzQ0Yjg5OTQxNDhhZTMyYzBlYjc3MGEyYWE4OWI5ZGMxMmI2OTQ4MiBsZWdhY3ktdHJ1bmsKKzkzNDAgYzViZmIxZGU2MWE1YjcwNDE5ZGNkMzRmN2RmYzIwYTRiMmZiODU3ZSBsZWdhY3ktdHJ1bmsKKzkzNDEgMzIwMjAwNWE3MjBiNDk3NTcwYWE4MGUyZGZmYzE4OWFkZmI1NjFlYSBsZWdhY3ktdHJ1bmsKKzkzNDIgMmRlMzk4ZjM3MGU4NmUxNmRkNTE0NDhlNWUxNDQ2MmQ3ZDUxYTNhMCBsZWdhY3ktdHJ1bmsKKzkzNDMgYzhjZGUxNWRkOGNlNGM2NTI3YzJmMDNjNmY4NWMxZGE1NDc0OTU5NSBsZWdhY3ktdHJ1bmsKKzkzNDQgMGMzZWZkZjI4MTMzMGJlYTNkYmNmN2QzYjg0YjVhNTEwOTU5MmI5MiBsZWdhY3ktdHJ1bmsKKzkzNDUgODFkZmRmNjU4OWY4Y2U3OTMyY2JjYWI1NjJhMDcwMTkzNzE1MDY1OSBsZWdhY3ktdHJ1bmsKKzkzNDYgMmY3NTNmNTQwZjQ1ZjQ5OTAxZTRlMWM4MjI3MjNjMTMzYjg0ZDI3OSBsZWdhY3ktdHJ1bmsKKzkzNDcgMjc4YWFjZjAxNzA3MTMwNDhkZjBlZmQ5ZTZiNzQ0NzUzNDJjN2MxMyBsZWdhY3ktdHJ1bmsKKzkzNDggMTkwMjkzOGU0MmM2MjA2NDUwODI0YmYzYWEzOTM1ODk1M2VjMThiNiBsZWdhY3ktdHJ1bmsKKzkzNDkgNzkzNzVmNzFkNmM4MzgyMjZjMDJlNGJlYzE4NzY0MDNhMzU2NTFlMSBsZWdhY3ktdHJ1bmsKKzkzNTAgMmQ5N2ZiMWQwNmNhMTQ0Yzc4YWZjZmVkMGU3NzRjMmFiOWI5NWM0YiBsZWdhY3ktdHJ1bmsKKzkzNTEgOWJlN2YxZTM3NTM1OTQ1OTcyZTM5M2MwZGQzZTlkOTNmMGVjZWFlMyBsZWdhY3ktdHJ1bmsKKzkzNTIgNmFlM2M5MWYyZDkzODM0MWY4MTI1OWU4NGVlOTExODhjNTBlM2E5MiBsZWdhY3ktdHJ1bmsKKzkzNTMgZDAzZjJlMmZiZjM2NjZkYWMyNmJlZTYzYTM1NDQ0YjRlM2Y4NmQ4ZSBsZWdhY3ktdHJ1bmsKKzkzNTQgNGUyY2M1MDQ0ZmE1MTNmMWExOGZlY2Q0ZTA1YmM5YjUyNDc3ODFlMCBsZWdhY3ktdHJ1bmsKKzkzNTUgNTgwOWVmMTU3Y2RkYjRlOGZiZjFjN2I0NTM1ZTUwNjU2MzIxODY5OCBsZWdhY3ktdHJ1bmsKKzkzNTYgZTI4NWExNWYzYTkyZWEwYTdmYWU1NTk3MWU0NmQ5MTNhMWE5Y2M3ZSBsZWdhY3ktdHJ1bmsKKzkzNTcgZWEyMThkY2Y3MjdkZDE1MWU5NTU2Y2M2OGJlNGVkNWIwZmRlMDJhMiBsZWdhY3ktdHJ1bmsKKzkzNTggYzQ2ZDg3OTIzMzE3YzM5YzRjMTE1MDllNGE0NTJiNmMxMjI0NDAxOSBsZWdhY3ktdHJ1bmsKKzkzNTkgMzhmOGE4MjhhYzU4ZDNlMzBhMmFiYmFkMWQ5OTYyZGYzMGM3MTcwYyBsZWdhY3ktdHJ1bmsKKzkzNjAgM2MxMmMwZDY5ZTEyMzAyZTRlZWJhYjkzZWRhNDQxMDM5MzBhMjM2YiBsZWdhY3ktdHJ1bmsKKzkzNjEgYmFmNjg2YmY4Y2EwYjY0MTRjNDEyZjE4OTNlODM2YTJmNmU5NTBlNSBsZWdhY3ktdHJ1bmsKKzkzNjIgNTk4ZDJmZmJmZDhiNTYyMjJhMGNjMDljMDUwZGM0NjA4NzI0M2U0MCBsZWdhY3ktdHJ1bmsKKzkzNjMgZThkMzIyMDkyMTdhOWQyNTk0OWY4ODcwYjUzYzk5MWE0MjdhMWJiZCBsZWdhY3ktdHJ1bmsKKzkzNjQgYjdkOGNjYjQ1NzQ2MzMyNWM5YzA5NTc5YzJlMjVjM2U4NTAwZmI2YSBsZWdhY3ktdHJ1bmsKKzkzNjUgOTEzMzQ1ZDU0ZjMwNmM1YzNiYzZjNDE4YTc2N2NiNDFjYmE4YjYzMyBsZWdhY3ktdHJ1bmsKKzkzNjYgZThmOTk3ODg3YzJkNWUzMjFiZjEzNjlhMDNlMTc3NDkwZDA4MWMzYyBsZWdhY3ktdHJ1bmsKKzkzNjcgYzdiYWI3M2U2M2M2ZTc0MTg5NzY1ZmYzMGJmZDQ1YTQxN2YxMWM1YyBsZWdhY3ktdHJ1bmsKKzkzNjggMWZmOWEzMGY4MjZhNDVhZDgxMGMxNDk1ZTBiMzM3YzNiYTQyMTg3MSBsZWdhY3ktdHJ1bmsKKzkzNjkgMDQ3YWJjYmYzZjQzMjU1N2M1YTM3OTU2MmNjZDI5MjJkYjUwOWU2MiBsZWdhY3ktdHJ1bmsKKzkzNzAgNWQyMDVmMjJhYjYxODYzYWE3OGE4ZDg5ZGYwZDA3Zjg1ZjE0MWI4OCBsZWdhY3ktdHJ1bmsKKzkzNzEgZDJlZjc5NGQ5YzExNmRkZjA4ZDYxMTZiM2Y1ODU0ZjM3MTM3ZDE1NyBsZWdhY3ktdHJ1bmsKKzkzNzIgMDVlMjY3YWVkODZlYmI1MTA3NzU4ODU2N2E4OTYxYTMxN2Y2NWJjZSBsZWdhY3ktdHJ1bmsKKzkzNzMgZDk0OWEzNWNhZTIwYzgzYTJmM2YwZWQ2MTdjMGRjODNjOGQyNWNjNyBsZWdhY3ktdHJ1bmsKKzkzNzQgZTcwYzRhZjE1N2Q1NDM1NGQyODhiMjgwMDI3NWI5ODFjYTI2OTg3ZCBsZWdhY3ktdHJ1bmsKKzkzNzUgNmZlNmE5YzE0NDk5MmYxMTNmMzNmMzhlNDcyNDU2ODcyMzJkNDQ5NiBsZWdhY3ktdHJ1bmsKKzkzNzYgMzdlZTE4NzExYzNjMzgxODQxMTg5OWExOWEwZjFlZDZjMGNiYzNhOSBsZWdhY3ktdHJ1bmsKKzkzNzcgMjE0ZjNjNGY1NDg5MmVjN2M4ZDVjYTU2Yzk3NjUyMmZhMDEzMjEwMiBsZWdhY3ktdHJ1bmsKKzkzNzggMjQ0MzdkOGQwZGRjM2I0NWIzMGQ0Mzc2MjIyYjE2NDY5NDI2ZTYzNCBsZWdhY3ktdHJ1bmsKKzkzNzkgYWRiMzAwY2JkNTY2ODBkMDEyMjQyZmE5OTM5NzZjZTEyZmI0NGE2MyBsZWdhY3ktdHJ1bmsKKzkzODAgMjUyMmM4Zjg2MTViZDUzMjljYzZmOTg0N2VmNzhiZjljY2MxY2M2YyBsZWdhY3ktdHJ1bmsKKzkzODEgZTIwN2JlYjVhMzYyOWJkMGNkOTUzYzgxYWM0OWJiZjUyZDNmYmZjOCBsZWdhY3ktdHJ1bmsKKzkzODIgOWNiMmYxMGIwNDI5OGVmYTBlMTRmMmJiMGQwZDdhNzY0MTYxZTNhYyBsZWdhY3ktdHJ1bmsKKzkzODMgN2I1NGY5NmFmM2JlZmEwM2MyYTk5MjQyYTliZTY1ZjBlZGM3OTFmZSBsZWdhY3ktdHJ1bmsKKzkzODQgODBhYjYwMzBiOTA0ZGM5MjllYTY4YTVjODg1MjgyN2YxOTZkZDMzYyBsZWdhY3ktdHJ1bmsKKzkzODUgOWVjNmUwYThmMzUzZmQyYmU2YWM1YTZlYTBiODY4YTZkODRmNWU5ZSBsZWdhY3ktdHJ1bmsKKzkzODYgZTRjZDMwZTQ1MzcxY2UwYTljNmExYjdlNGM2YjgyNmQyMGJhNTJkZiBsZWdhY3ktdHJ1bmsKKzkzODcgMzU0N2ZkZWFiNGRmYWM4YWY5MjcxOTkwOTI4NjAyMTdiNDVmNzQ4NSBsZWdhY3ktdHJ1bmsKKzkzODggZjU5NWU3ZmMyYmQ5ZWE1MmNlYzMzYjQ0MGRhMzc2NmJmYzg1ZGU4MiBsZWdhY3ktdHJ1bmsKKzkzODkgMmM0OWMwMmNmNzQ3NGFiMzlhOGUzMWU4NmZiY2FiYjUwNzFhYzY1MyBsZWdhY3ktdHJ1bmsKKzkzOTAgZjI2NmFiOTFhOTkwZDAwYTMyZTBiZTEzMzNjNTY4YWRjYzk4N2Q3OCBsZWdhY3ktdHJ1bmsKKzkzOTEgM2NmZjQ0NWJkMTBmZmE5NzExNWI2MWRjZmNiNzdhNTIzNzlkYmJiYSBsZWdhY3ktdHJ1bmsKKzkzOTIgMDM1ZTc5NmI4OTBlZDYyNjM5NTAzMDFlMDI2YWIzYTZjNDk2ZmNhZCBsZWdhY3ktdHJ1bmsKKzkzOTMgMGQ1MWIzYjY2MGQxMjkzZWRiZTgzMzY2OWI2OWIyYjFlZjVmYzQzMCBsZWdhY3ktdHJ1bmsKKzkzOTQgYjlhMzk1MDExMmFlYTU5MjBhZTY2NzkxNjM4MTEzZDMzNDAwMzQ0NSBsZWdhY3ktdHJ1bmsKKzkzOTUgOGRmYmVlY2MyNDIyYjc5OTE3NTNiYzkzMDI2MzA5Njk3NjExOTE4YSBsZWdhY3ktdHJ1bmsKKzkzOTYgOTUwZDA1MTliNWZlOWU5OWExM2YwOTVhZGYxYzZlMGEyN2EwMWFlOSBsZWdhY3ktdHJ1bmsKKzkzOTcgMTAwMjljOGM0MGUwZGM1NWMyNWU0NDBjNjI4NmZjN2Q5Njk2YjQyNCBsZWdhY3ktdHJ1bmsKKzkzOTggYWZiMWU4YWY3ZTRmOGFiYzJmZDY0YTg4YzVkZWEwOGM2NWRhMWViNSBsZWdhY3ktdHJ1bmsKKzkzOTkgMjM2ZWE5M2M1NmZmNzhiNzViODhkODVkN2QwMmI4OTgzMzJlNDBiYyBsZWdhY3ktdHJ1bmsKKzk0MDAgNzYyOWM0ZDk4NWJjM2VkZTNlMWZkODBlNWZiMjA3MmVlNDM4ZGJmYyBsZWdhY3ktdHJ1bmsKKzk0MDEgNzRhZDI2ODI1MDYwOGE5M2RhZGNmNGNhNWQyZThmODFhYzQwNDg2ZCBsZWdhY3ktdHJ1bmsKKzk0MDIgY2YzMTdhOWM0OTliYmZmNjE1NTI1NWIxYjQyNGYzOGRlY2QzOWMzMyBsZWdhY3ktdHJ1bmsKKzk0MDMgM2RiMjRiNGQ5YzQyMjc1YmQ5ZDMwZDk3ZWIzOGQ3M2VjODhiNjZkNSBsZWdhY3ktdHJ1bmsKKzk0MDQgOGM5MmVjOGY2MDM4YTc1MDcwZTJlYTI5N2MxY2EwNTQ4YzVkZDZjMSBsZWdhY3ktdHJ1bmsKKzk0MDUgNTIxMjVjZTM3NmE0MmU0MjEyODEyZGM5ZjM5ZTJmMzVjNjFjZTQ0YSBsZWdhY3ktdHJ1bmsKKzk0MDYgYjlkOWM1M2YxZTFkZjUxMjMwYmI4NmM0ZWY3ZmI0MDQwZWZlMWM1OCBsZWdhY3ktdHJ1bmsKKzk0MDcgNzQwMjRlOTA3YzYwZDYwNTQ2YTY2YjkxZGIxM2VlODI3ZmQ0MzJhMiBsZWdhY3ktdHJ1bmsKKzk0MDggNzc0NGJmMWU0ODViNjVmMWM1YzY1YTUyMzdmMzlkM2I1YWE3MGI1MCBsZWdhY3ktdHJ1bmsKKzk0MDkgNDA5MWIwNGY5M2FkZjAxODc1NjNlNGY4NjQ0ZGIzMDNhZjQyY2EwMyBsZWdhY3ktdHJ1bmsKKzk0MTAgYzViOTM5YjVhOWUwMmQ2ZDgzM2UzZDI5NTMwNDkyNWQ5ZTE5YTJiMiBsZWdhY3ktdHJ1bmsKKzk0MTEgYTcyZGM1MmI5N2FkZDQ2MWMzOWU3YjM4ZTNiNDczZjI2MWNmMTg2OCBsZWdhY3ktdHJ1bmsKKzk0MTIgNjgzYmMzNWFiNzUzYWY3OGI3YmIwOTBlODAzZmU1N2MzYzgwY2QzYiBsZWdhY3ktdHJ1bmsKKzk0MTMgNmI2ZWY5MDkyMzhlMDVjZDBkNzA3OGM5Y2Y5YjlhZjQ0ZDkyYzcxZiBsZWdhY3ktdHJ1bmsKKzk0MTQgNDU1Y2JhYjRhOWJlN2Q2NTQ2M2Q3ZjEwMmNmZmIyNTMyMTMyYzUwNCBsZWdhY3ktdHJ1bmsKKzk0MTUgZTNjOGMzNDBhOTkwYzhjZGZhZTAwMmYzODAzYzkzN2ViYmQwMDNlOCBsZWdhY3ktdHJ1bmsKKzk0MTYgYjNiMGFkNDcxMmFkMGY4NGEzMmZlZmVlMjE5MmE1YmFiMDMwYmNlMSBsZWdhY3ktdHJ1bmsKKzk0MTcgZGMzYzljMDRlZjA3YjkzM2E0MDNhMWZkM2NhM2RkNDk2Y2ZhMTY5MSBsZWdhY3ktdHJ1bmsKKzk0MTggMWRhZmFkMzA3MDA2NmI5OTFhNzZlMzc1N2RmNTEyYzdhMDhlNDllZSBsZWdhY3ktdHJ1bmsKKzk0MTkgOTEwNDc4NGFmMTU5MDhhY2Q3MjA1YTI5MjE5MDkyOTQyMWEyMTZkYyBsZWdhY3ktdHJ1bmsKKzk0MjAgMDYyOTFmMDRiYTljMzhjYTllMjAyNGZiM2I2MmY5Y2JhNzg1MGE5ZCBsZWdhY3ktdHJ1bmsKKzk0MjEgMGMxY2MyZDZjNGYwMWRjNGUxNDBkZDZmZDMwNDBjMTZhMGU3YTBiYiBsZWdhY3ktdHJ1bmsKKzk0MjIgZmViYTNkOWEzMGM3MjAwYThhMjBjYzE2MWIyMWFkMzBhZDk1ZDY0ZiBsZWdhY3ktdHJ1bmsKKzk0MjMgZjE0ZTQ0NTlmYjk0ZGJjN2Q5ZDNmNTFmYTZkNmU4MWUxYjQ1MGExYyBsZWdhY3ktdHJ1bmsKKzk0MjQgNWVmNDcwMDcxOWRlOWEyMjZiMWQ2MTEyMjI3ZWExZDgwZTAxOTY0ZSBsZWdhY3ktdHJ1bmsKKzk0MjUgZTdiZjU0NTNhNmZmNGZmNzY0ODJmMjQxZThlMjQ0Y2U1NDAxZTdiZSBsZWdhY3ktdHJ1bmsKKzk0MjYgODAwY2IyMzRmNjc2ZjFhYjAzZTY4NjcyZDc1MDk1OTVmMDU4NzZmMSBsZWdhY3ktdHJ1bmsKKzk0MjcgNmUwZWRkZmE0MDRhNzE3MDkxZmNmOWQ1ZDMxZDZlNGYyNzNlZWVjNCBsZWdhY3ktdHJ1bmsKKzk0MjggMzkxMmVmYTViZmNhMjY2M2U2NThmYmMyNjI2YzBjZTE1YmExZTJlNiBsZWdhY3ktdHJ1bmsKKzk0MjkgYzhhZDlkYzhhZTFlYmY2OWMyMTMwOGY2Y2NmNGRkODIxOGQ2YTNmZSBsZWdhY3ktdHJ1bmsKKzk0MzAgMTE0NGE5ZWQ5OGQ2YWIzODJkOWM0YzhiOWQyODI3MDA2NzU0ODIzMCBsZWdhY3ktdHJ1bmsKKzk0MzEgZGMwNzM5Mzc5NzE0OTg4MTE1ZTljOTk0NzUyNzhhMGI1YmZjYjVkOSBsZWdhY3ktdHJ1bmsKKzk0MzIgOTY0MmEyOGRmMmIxNGI3Nzg3OGRkZWRlMTI2YzQxNmNkNWI0MjAwYiBsZWdhY3ktdHJ1bmsKKzk0MzMgMzg0OTNiOTM3NmVhZTE4MWIzYTA2Mjk0NmQwNjRlYTUyNTI1Zjg4MyBsZWdhY3ktdHJ1bmsKKzk0MzQgOTc1NGIyMjMzNTgwOTFjYzY3YmU0NWE1NTBhYzEwMWQyMTk2NzcxMyBsZWdhY3ktdHJ1bmsKKzk0MzUgZGY1YjU2YTVhZmNmZDYzMjRmZWQyYzQ1YThkM2ZhNmZlOGQzYzFlMyBsZWdhY3ktdHJ1bmsKKzk0MzYgMTM5YWQzMWZmOGZkNWI5ODZiOGMwODNmOWE2YjM1ZjdmNjQxMDY5ZiBsZWdhY3ktdHJ1bmsKKzk0MzcgZmVkYmY5MzI1MTkwYjhhNmE2MDMwNmI5MjE4NGUxNGZkNDQxNGMxYyBsZWdhY3ktdHJ1bmsKKzk0MzggMzE5YTUxYzM4MWNlZTRmOGE0ZmQ5ZGMxNGE1NWM2Y2FjNjZmODM1OSBsZWdhY3ktdHJ1bmsKKzk0MzkgYzU4NzRmNmY1NDMxZjI5NGI5ZmM1YWZhM2I5M2Q4ZTc0YTI3OWY3NSBsZWdhY3ktdHJ1bmsKKzk0NDAgNDg0YTFjNjhjNTU4OTU2YWVhZjFhYzk3YWE1ZjhkNDk3YjBiY2QzMSBsZWdhY3ktdHJ1bmsKKzk0NDEgMTBmMjkyMWEwOTFlNzE0YWM3N2ZjZjJiMWZiMWViM2NjMTlkOTNiMSBsZWdhY3ktdHJ1bmsKKzk0NDIgMzNiZTdkNWQ0OThiNjA3MmI3MmFiMGE3MDEyMTRiMDYyMWZiMmVlMCBsZWdhY3ktdHJ1bmsKKzk0NDMgZGNlODM4Y2Q0MmMxODA5ZDcxMzUyNzg2YWUyZGJjNTExMGVkM2Q5NCBsZWdhY3ktdHJ1bmsKKzk0NDQgZWVkNjMwNDlkZjk1OTU1YTk5NTdjYjY1ZWQ0ZGNmNWE5Y2E3YjAzYSBsZWdhY3ktdHJ1bmsKKzk0NDUgNzQ0ZTJiNjhmM2I2ZDk0MGJiZjI1MTExODVjMTk3NGNmOTlhMmRhMCBsZWdhY3ktdHJ1bmsKKzk0NDYgMzFlY2E2NDhmN2ZmZWFmMWQyYzY0MTM0ZmYzN2VmMDE5ZmJmM2VlYSBsZWdhY3ktdHJ1bmsKKzk0NDcgNDkyYzZkYjE2MGFjOTllM2U4ZmYyNTcyZWJhOTJiODk3MDgxOWU3NyBsZWdhY3ktdHJ1bmsKKzk0NDggZTVhZmY0MTAzNmYzZDY1OTA2MGUyZmZiZjFmZDlhNjRmMWQ3YTY3MiBsZWdhY3ktdHJ1bmsKKzk0NDkgYmMxMjVmMGQyYzVkMGYxNDE0ZDA0ODgzNTk2N2UwZGUxZDY1ZThmNyBsZWdhY3ktdHJ1bmsKKzk0NTAgYTY5MjllNzQxN2RkNjJjNzc0MTU4ODE1YjU4YjBmZWVmNmFmZTQ2ZiBsZWdhY3ktdHJ1bmsKKzk0NTEgYmJhZDJjNjg0YWQ3MmJjZTVmMTM0NGRmYzRiMmQ2N2E4NjdkYmNjYiBsZWdhY3ktdHJ1bmsKKzk0NTIgMjNiMjdiMGIyMzViMzE1NTJkNTdlZjhlMzNiY2FlNDg3Njk2YWVjOSBsZWdhY3ktdHJ1bmsKKzk0NTMgODBiMWUyN2YyMGQ0OWNlMTE5NTg4NTM1MjNmNWJlNmI5YmYxMmU0MiBsZWdhY3ktdHJ1bmsKKzk0NTQgY2RhNzIwYjE5MTlkZmU1MjJhY2I5MGJhY2FiM2ZjNWVjODc3NzM1OSBsZWdhY3ktdHJ1bmsKKzk0NTUgYTU2ODZlNzU2ODVmMmQzZGViNTZkNTU3MTJlYzM4YmViMWM2MjAyMiBsZWdhY3ktdHJ1bmsKKzk0NTYgMmYyZWZiOGZhNTRmZjNjNjNhMmNlMWExNjdhM2Y5MWJjNThlM2I1ZCBsZWdhY3ktdHJ1bmsKKzk0NTcgNzY4OGYzMTA2YWU0NDFjMmNiNzg3MzJkMmQ2ZDVhMDMzM2FkZjk0OSBsZWdhY3ktdHJ1bmsKKzk0NTggY2ZhZDRiMDI5NjQ1ZTlhN2NiM2RhZGViOGVkMzA0OTJmMjBkYWY0ZCBsZWdhY3ktdHJ1bmsKKzk0NTkgYjcwYmE0ZGI3NjdlMDk3NDBmNWQxY2E3YzA3ZWI4OTJmMWE4ZTE0OSBsZWdhY3ktdHJ1bmsKKzk0NjAgZjMzNjQ3MDhjMDllMDc5MDEwYjZhMTdlNmQwMjA4NjI0MmNkNzgyNyBsZWdhY3ktdHJ1bmsKKzk0NjEgZmZjYWY3YWZkNWQ5ZTNlOTAxZmQ4ZGJkNWJjZWY0ZTE0OTNjM2E0NCBsZWdhY3ktdHJ1bmsKKzk0NjIgZjVmZDIzOWIxNzhhZDAwOGE2ODFiNDFkYmY1MDZkMzc0NjFjN2I2OCBsZWdhY3ktdHJ1bmsKKzk0NjMgZDRlOWFjNzU3ZTVjMDdmZjU5YzZiMzg3Y2QyYzQyNWQxYTYzNmMzNyBsZWdhY3ktdHJ1bmsKKzk0NjQgNjM4ZDg3N2VhOTk1ODM1MzM2YzA4ODhiMTNhMzIyNjAzMjY0OWZjMCBsZWdhY3ktdHJ1bmsKKzk0NjUgMWE0MTQxNThlYjY2NWIxMTBjZDRhNjg3MmVkM2JhYjVhMDQzMGVkMSBsZWdhY3ktdHJ1bmsKKzk0NjYgMmU5MWZjNzFjYmI1MDE5ODM0NzI5MWJiNzM0ZDc5ODNmNDVjYzgzYiBsZWdhY3ktdHJ1bmsKKzk0NjcgZmUxMDhhNGJiOGQ1OGRhYWNmODdjN2RiM2YxY2I5MmM1MjcwNTE0NiBsZWdhY3ktdHJ1bmsKKzk0NjggYjI0NDVjOTNmMDNiODljMGEwNjg3ODgyODRiZWM5YWNiYzY2MGEwNiBsZWdhY3ktdHJ1bmsKKzk0NjkgZjM0OWJmMGU5MzIyNzZmYjY0YzE3NDczN2FhY2FjMmIyOGRhZDIxNiBsZWdhY3ktdHJ1bmsKKzk0NzAgZDAwNTE1ZjkyYjUzNGQxNGU1ZDA0NjczMTRiODEyNGFlZGNiODI1MiBsZWdhY3ktdHJ1bmsKKzk0NzEgOTg3YTgzMWFhZjIzNmFkZjU2MTFjNzk2OWU3Zjg4MWJjZDM4MjY0YiBsZWdhY3ktdHJ1bmsKKzk0NzIgNjBjY2ZhOTY1NmFjZjBiNTIzNTRhMWMxNWQ3YzNmNGI4NjllYmIzMCBsZWdhY3ktdHJ1bmsKKzk0NzMgZWJjZjYwNGNjZWUwNTExMjlmYmFhZTZmMjYyMGRiYzRhYTBkZWUwNSBsZWdhY3ktdHJ1bmsKKzk0NzQgNjkxMTI5OTBkOGUyNDhiOWYzYmI4MGY1ZGVmMDAyN2U5ZjhmMmU1MyBsZWdhY3ktdHJ1bmsKKzk0NzUgZmExOTQzMGZlYzRlNDlmYTMxZTUwMGZiYzI5N2MxMWFmMWRkZDE3ZiBsZWdhY3ktdHJ1bmsKKzk0NzYgOGFkMTdlNGNjZDliYTg5OTNmYjdlYjUxMTczNWNmMGRjN2RjNjNmZCBsZWdhY3ktdHJ1bmsKKzk0NzcgN2NlOWRhMDI5NjE5ZjU1YmM1MzE1ZjdiZDdiNmYxYThjOTkwYmM0ZiBsZWdhY3ktdHJ1bmsKKzk0NzggZjJhZjNjNjQ1NzEwMjRjZjc5MDExYzA1NmNkZmYyYjkwMzk5YWVhZiBsZWdhY3ktdHJ1bmsKKzk0NzkgZmViODBlYTU0ODg4ODdjZWU4NTUyOGIxOTc4MDgwY2ZlNmU1Nzg2ZiBsZWdhY3ktdHJ1bmsKKzk0ODAgZjBmOWIyZTRmNGNjMGM1MDlmODg0ZDhiM2ZkMzY3ZWYwOWMyYWE1MSBsZWdhY3ktdHJ1bmsKKzk0ODEgMjI0NDQzOWZhZmNmMDZjMWRmNjZmNGZhMzQ2NjZjNmYwNjk3MTk2OSBsZWdhY3ktdHJ1bmsKKzk0ODIgYTEwYzQ1MzkxMjdhMWNmMGMxMjIwZjlmMDNjNmRkZDRlNDg1ZTViYSBsZWdhY3ktdHJ1bmsKKzk0ODMgY2RlZWZmNGQ2Y2I0Y2Y3MjlhODgzYmIwN2I1MDFjMWY4ZjJiMTc5MSBsZWdhY3ktdHJ1bmsKKzk0ODQgOTc3M2QzOTQxYzk2ZTJkM2JlMjYzYjhlMGQ0YTc1ZDRhZDg1NGFlMyBsZWdhY3ktdHJ1bmsKKzk0ODUgNmYyYWI0YWZhOGY5NDc4N2MwNmZjZjBiZDBhZDhmMzdiNjRkOGFkOSBsZWdhY3ktdHJ1bmsKKzk0ODYgNGI4ODcxMTk4NWEyNTg5YzMyMThmZTU2MDUzOWY0YzVmMjMyMTgyNCBsZWdhY3ktdHJ1bmsKKzk0ODcgNDQ0YTZiMDdkYTQ2NTE2OGFhMjhkYjcxYTgyYzk4ZTgzMWExYmVkNSBsZWdhY3ktdHJ1bmsKKzk0ODggMGFiYTY0OWJkOWJiM2FjZDJjZjZiYTNiM2YyNDM4NGEwODMxZDk3NCBsZWdhY3ktdHJ1bmsKKzk0ODkgN2E4YzMwODE5NmQxNDY1NWM0MmYzMWI3ZTUyNDc1YTI4MzIwOTBiNiBsZWdhY3ktdHJ1bmsKKzk0OTAgMmRiMTZkMWRiZDg3Y2JhMDY4MzIzNjgwYTJlOGMyNWNiMzU2NGRlNyBsZWdhY3ktdHJ1bmsKKzk0OTEgYTVkZjAyYjZjN2E4MzA4MmI0NzJiOGZmMGI0ODczMWEwZjg5OTNlYSBsZWdhY3ktdHJ1bmsKKzk0OTIgYzc1ZDg5OWU2NjZmMTY4ZDdlNDdiMDA1YzE0NWQ2ZmMyNmQzNjNmMiBsZWdhY3ktdHJ1bmsKKzk0OTIgODQ0NjEwMTFhMWEwYWI0MDJlMzUyZjA2NzQ4ZjI5ZmI1YjU1NTllNSBsZWdhY3ktdHJ1bmsKKzk0OTQgZGM4NWFkMWJhMGUxNTYzYTNmZWJmMGE5MTRlMmNkYWZkYWMyZjgwNiBsZWdhY3ktdHJ1bmsKKzk0OTUgNTlhYTNlMWMxM2RjNTgyMWIxODI5Nzk2NjFiMzczMTBjMjMxYzM1NSBsZWdhY3ktdHJ1bmsKKzk0OTYgMGE5NTE0NzBiMWJmMzBmZmI5Y2YxZjk1ZTFhYzQ3N2EzYzY5NTMyZSBsZWdhY3ktdHJ1bmsKKzk0OTcgYWRhMTMxMWRhMjg2ZWQ2NDAwN2Y4YzgxZDI4NzdiMGZhM2MyMzcxNiBsZWdhY3ktdHJ1bmsKKzk0OTggMjYxYjExYjBjY2Q2NGRmMDRmN2RlMDgxNjA3Y2Y4OTA4ZTExZDYxMCBsZWdhY3ktdHJ1bmsKKzk0OTkgMzg0NGRlMmE3MDlmNTBjZDcxMjQ0YjFkOGYyNzIxMWQ2MjdlOTNjMSBsZWdhY3ktdHJ1bmsKKzk1MDAgYTY2ZGY1NTVmMDI1ZjJiOGE2MjFjNGRiOTJlMDI2NTQyZWIyMmY4ZiBsZWdhY3ktdHJ1bmsKKzk1MDEgY2NkNDcxYzdiODYzY2RlMjJlNGQzMjVhM2FhMzFkOWFjOWVmZDAwNyBsZWdhY3ktdHJ1bmsKKzk1MDIgZTE3ZmU3OTMwNWM3NDA2YjhjN2I5Y2MyOWVmZTQwZjkyODIwZTIyYiBsZWdhY3ktdHJ1bmsKKzk1MDMgYzVhMThmYzRmOTY2MTRiYjEyZGYzNGEzYjc0NmIzYzE2NGU3OTFhZiBsZWdhY3ktdHJ1bmsKKzk1MDQgNGQ2NDU5MDliODM0NTVkMjFiYWRmM2VlMTRiM2FmZGRkNTcxYWEyOSBsZWdhY3ktdHJ1bmsKKzk1MDUgOGRhMzVmMWM3MzkwMTBiYjhiZjRkM2NjMTdiYTJkMDUwY2EwMDg1MCBsZWdhY3ktdHJ1bmsKKzk1MDYgMzc5ZDFmZDQyZGJmMWY5MWY5MTIxZWVkOTFmNTgwYzA1MWE2NjcwYyBsZWdhY3ktdHJ1bmsKKzk1MDcgYTM2N2FhYTY1MDNjYmRlMmNhZTBkM2FmNzMxOGE3YzU1ZTVhYWE3NyBsZWdhY3ktdHJ1bmsKKzk1MDggMDVlMGU0OTkwMTRmMjk0ZWQ2MjNjZGVmMzUzM2VlMzg0MzkyYzRlZiBsZWdhY3ktdHJ1bmsKKzk1MDkgOGQxMWVjYzE3N2IyYjhjNTAzNGU0MzM0YjFiZGZmNGQ3ZjkzZmMzNCBsZWdhY3ktdHJ1bmsKKzk1MTAgZmE4NWE3ZmQ3NDBiYzYxYmIzOTkxYWVkZjY0MmU0ZmYyNmZlY2FhZSBsZWdhY3ktdHJ1bmsKKzk1MTEgNjE0NzQ1OWJmY2ZiOWEwZTY3Y2ZhNzJhMWM4ZGI4Zjk2ZWJkNTIwOCBsZWdhY3ktdHJ1bmsKKzk1MTIgZGRmNTJmMDFiYzBhNzZkNmQ3Yzk4MjZlZjY2ODcwMTg1MTZkMmEyNiBsZWdhY3ktdHJ1bmsKKzk1MTMgMzE2MTY3NDk5MDA1OTk2ODI1OWMxODNkOWYyNjQ5NzRlZmI2MTE0OSBsZWdhY3ktdHJ1bmsKKzk1MTQgZDBhOTcwMTRlZDQyZjAxZjYyNjEzM2VlM2E4NzEyMmU0MDgwMDQzYyBsZWdhY3ktdHJ1bmsKKzk1MTUgMjYxMmY5YWMzMWVkYTE3NzYyNzgzNGIzMTNjZjQ4ZjRiN2IxYjhjZCBsZWdhY3ktdHJ1bmsKKzk1MTYgNDljZTE4YTE2OTlmNGM2MjA4ODg3NmQxNmMyYjViYWY2YjVhMmQwMyBsZWdhY3ktdHJ1bmsKKzk1MTcgYWI0ZDYwNDgyMmQwYWNmMjU3ZjZhZjFhNWMzMzQ3ZDJkMjkyYjg3MyBsZWdhY3ktdHJ1bmsKKzk1MTggMWM5MjdlY2ZjYmIzYjE4ODBkOTNjOTAxMzVlZWIwN2UwZTQ0YWExOSBsZWdhY3ktdHJ1bmsKKzk1MTkgYTUyYTNlMjZlZGM0Y2U5NDE0ZWUxMjVmYmYzNDcwZDUyNWUwOTgzMCBsZWdhY3ktdHJ1bmsKKzk1MjAgODRlODcxZTIwMDg3YWVjZjg0NjIyY2RmNjQzODM0NzU3ZGZhZmNhYSBsZWdhY3ktdHJ1bmsKKzk1MjEgNzZlYWYzNjA0MGJlNTVjYWUyYmIxZGIzMDA0ZWJlMjY4OWFkZGVjOSBsZWdhY3ktdHJ1bmsKKzk1MjIgMjk3ZWE2NzkyNmViOTRhYTQ5NTY3ZGRhOTAwODY4NGIzN2Q1N2Y0MiBsZWdhY3ktdHJ1bmsKKzk1MjMgYWU2M2ZhM2NiMWM2ZjkxZjYzNjI3ZGVmMDRhMzY5OTNlZjkyN2ZhOCBsZWdhY3ktdHJ1bmsKKzk1MjQgYzRhNzhiOTI0ZGQ5YWM4ODY4M2E4ZGY3MDRhOTdkOWQxZDdkMTdhMSBsZWdhY3ktdHJ1bmsKKzk1MjUgOWZlMzM1ZDQ1NTk1NmNjYjg5ODE0ZmFhNmM2YTY2MmE4YjllMzY4NSBsZWdhY3ktdHJ1bmsKKzk1MjYgM2VjYTVmMzc1MDFhNzljMTAxMzMzZjU5OTFkMzlhZjQwOGUxN2ZlZiBsZWdhY3ktdHJ1bmsKKzk1MjcgYWVjZTUxMzYyYWRhYzVjMWFhMGUyYzc2ODc2MjY2M2EwOTZmNjhlNiBsZWdhY3ktdHJ1bmsKKzk1MjggOTBlZGNiMzhmYjAwM2YyNDNkNTc2ZWZiYjE2OTRiNThjZDE4MTEyNiBsZWdhY3ktdHJ1bmsKKzk1MjkgMWYyZjU1OTc3MzliYTFlYjcxZDBmNmYxOTFlNGUxMTYwZGIxOTc0YSBsZWdhY3ktdHJ1bmsKKzk1MzAgNTAyODgwYWY0NjU0ZTM3OWQ5ZjdlNTE3MDAyYWE1NjE5YTNjMjcyMSBsZWdhY3ktdHJ1bmsKKzk1MzEgZGIwZGQxMTc1NDFkNDZlODJhM2NjMGM2ODM4YWI3YTVkZGExY2NkMiBsZWdhY3ktdHJ1bmsKKzk1MzIgNDI1MzQ0MDk3NTBhMDRlYTExOWJmNmUyYjFkODRiOTRhNDhhYzczMSBsZWdhY3ktdHJ1bmsKKzk1MzMgZGYwNWI5YzRiZTdmMzc3MDUxNjgxNGRiNDIwYTlmZGY5MzA2YzJjOCBsZWdhY3ktdHJ1bmsKKzk1MzQgNTNlNTRhMTRmNDMyMzM5ZDgxNmI0OTllMGQwY2FjYjZiMjI0Mjc4NCBsZWdhY3ktdHJ1bmsKKzk1MzUgMDg5NmQzMmI2MGE0YjFjYzgwMmNmMjY3YTVhZDEyYjE2MWQyMTBjYSBsZWdhY3ktdHJ1bmsKKzk1MzYgZjJiMmE3ZWEyYTFlMzU1YzlmNDE5ZmM2ZDg2MGFjNzFhMjExY2I2NCBsZWdhY3ktdHJ1bmsKKzk1MzcgNmUzYjQ2OTVmZmFlMWNhZTAwN2ZjNDdmZWI4ODAyOGY3ZjllMDMyZCBsZWdhY3ktdHJ1bmsKKzk1MzggYzk1ZTYwZWFkNWUwNmExZTVlM2U5OTZmMmQ0MGRhY2I2N2Q0MmUzOSBsZWdhY3ktdHJ1bmsKKzk1MzkgMWQwYjkwMjg1MjNjNmViYjMxYjhjYWFmNDNkMzUwMTY4YjgxOTlmMiBsZWdhY3ktdHJ1bmsKKzk1NDAgNmI0ZjhhOTZlMWQ0NDRmNGZkNmE3NjQ3MmE2N2QxOTYzMDc0ZWFiZiBsZWdhY3ktdHJ1bmsKKzk1NDEgZTY4ZWViMzVkMDRkMWRiN2U3Y2JiMWJlNzJkMGE4ODg3OWIzYTcxYyBsZWdhY3ktdHJ1bmsKKzk1NDIgMGM3MDI2NDU3M2RiM2QzNTIxMzYxMGJlY2M1NTRjZDRhMDhlOTg1ZSBsZWdhY3ktdHJ1bmsKKzk1NDMgODg2NmM2OWIwYWZjOGRjNzkzMWI0YTUxOWY0MTA1NjVkNGM4MDhmZSBsZWdhY3ktdHJ1bmsKKzk1NDQgZmE0MjMwNjg1NzU3MmZmODUzYWEwMjk5NmJhNzBkOGRiZjRhM2VhNCBsZWdhY3ktdHJ1bmsKKzk1NDUgOTA2NTBiYmQ5ZGJiNmFjNTlmMzA3YjYyMGFkMjQ3YTU3MTlkZTc3MiBsZWdhY3ktdHJ1bmsKKzk1NDYgMmNkZjExYjJlZDliNDQxMGZhYmRlMTYwNDdkMmFkNjJkN2QxYmFjNiBsZWdhY3ktdHJ1bmsKKzk1NDcgMDBlNjEyNTYwNDkyYzZhYTM1YWU0MDViZGQyZGU3MDA3Yzc4Njc4OCBsZWdhY3ktdHJ1bmsKKzk1NDggNzVhMWFlYzZkOWIyY2QyNDM4ZDY5N2Q0ZGRkOGEyODc1YzgzNjFiZiBsZWdhY3ktdHJ1bmsKKzk1NDkgMDMxNGVjYmM1ZjVkNGUyNWJlNmVhYzc5MjQ0MjEyNTU2MmYxMWI0MiBsZWdhY3ktdHJ1bmsKKzk1NTAgNWMzNTNjNTIyYTQ4Mjc4MTQ4YjVlZmQ0YmM3YzgyY2I3NzhjYzBhMSBsZWdhY3ktdHJ1bmsKKzk1NTEgM2I1MTlhNmQyN2JiNWJlMmZlODBkZTM2Njk4YWE4YzI1NjQzMDEwMCBsZWdhY3ktdHJ1bmsKKzk1NTIgOGNkNTczYjcyZDRiNjEzY2FiMGUwZTNkZGM3YmFkZjE2NjhhMjVkNyBsZWdhY3ktdHJ1bmsKKzk1NTMgM2Q4YzFiOGY2MDk5MGU4NGMyMTVkMTE5MmNkMTUzMWJkZjUzYTE2YSBsZWdhY3ktdHJ1bmsKKzk1NTQgMmFlNDQxN2FjMzMwOWVlNjgyNTg3ZDBmZmFmMmNjODc5OTFhMTM5YSBsZWdhY3ktdHJ1bmsKKzk1NTUgYzFhZDM0YjNjMDY5OTUwZDQ3NGRhODkzMGE0NzU2ZmY1NDJmYzk2NSBsZWdhY3ktdHJ1bmsKKzk1NTYgMDMxNDU1MzQ4MmEyOWU3NDQzOGEyNTFiYzM2YmM2MjNiZmE2NjcxYyBsZWdhY3ktdHJ1bmsKKzk1NTcgMzIyZGNhNWVlMTQ1YmRjYjQ3ZGJkNDI0YTBiNTAxMDk4YWQ5ZjUxMyBsZWdhY3ktdHJ1bmsKKzk1NTggOTI0ZjhhMDExN2Q1ZmIwMTFkNWYzZTVhZDMxNzE5ZTM0M2Y5NjMyOSBsZWdhY3ktdHJ1bmsKKzk1NTkgMGJhYTJhYjQyZWU5MGNkZGFjNjZmMzMxMDJmNmJiODI3YWFkNTY5ZiBsZWdhY3ktdHJ1bmsKKzk1NjAgNDE5Yjg2YjA0YWU0ZDk4YjNlNmU2OGY5ZGEzNThmZTk1ODk5OTU1ZiBsZWdhY3ktdHJ1bmsKKzk1NjEgOTEzZTQ4YWFhYzc2MWVhYzQ1NDE0MmRkYTA2ZTg4YzBkOTc5ZTQ5YyBsZWdhY3ktdHJ1bmsKKzk1NjIgMGM2ODg3NzY1OTM5NTI0ZTQzODFjZGQyNDcyYTRmZjE4MWNjNGU2MCBsZWdhY3ktdHJ1bmsKKzk1NjMgOWIwNWMyMGM1Nzc2YTRmMjVjMzI5MTcxNGM3NDhlZmZiMjIzNjIzMiBsZWdhY3ktdHJ1bmsKKzk1NjQgZmNiMmUzZWU4OTk1OTU2YjgwNTc2YjU1ZTkwYTMzOTU3MDk1NzQxNSBsZWdhY3ktdHJ1bmsKKzk1NjUgYWI1MWRhMzQ3MzE2ZDRiZmFiNzRiMDVlMTEzMDQ1MDJkYjc0ZWI2YyBsZWdhY3ktdHJ1bmsKKzk1NjYgYTJlMDU0MDMyODk5YzYyNTg2YzA0MzZhYTlkMmExYzI0MWUxMjAzYSBsZWdhY3ktdHJ1bmsKKzk1NjcgMjliMTY4Njg3NWRhYTUxNTEzYzQxZGI2Mjg1YTIyMzY5OGJjMDZlZiBsZWdhY3ktdHJ1bmsKKzk1NjggOTY0NjBlZjMzZmRlZDdlZDEyZmQ3NWE4YTdiNTU2ZjRlMmZlNjFlMyBsZWdhY3ktdHJ1bmsKKzk1NjkgMmU4YmNkZTRjMjQ4ZmZiZTY5OTY3ZDc3MjM3NDdlYjFjZDg0NmE1MyBsZWdhY3ktdHJ1bmsKKzk1NzAgOGE1NTY0M2U2NjdmYTE3MmRkZDA1ZDI3NjEzZjM5OTJhOTAwM2IyZSBsZWdhY3ktdHJ1bmsKKzk1NzEgYWY4MjZiMjNmMDA2NDMwODM1ZTBhNzJjOWI2MTA5YTI4ZjUzNjJkMiBsZWdhY3ktdHJ1bmsKKzk1NzIgZTU1NDgwOTZiNDJhNWZiOTEyNmU4ZWI2MDY1ZjVlOWI4ZWY1Nzg5NyBsZWdhY3ktdHJ1bmsKKzk1NzMgYmMxOTc2ZmY2ZmZkMzBmYjM1MzQ3NDllODk3ODU5YTI3OTg3Y2FhNCBsZWdhY3ktdHJ1bmsKKzk1NzQgNWJiODg0NTI3NDQ2Zjk2NWQxZTIxOWFhZDYyYmNiNDEwMWMzYWQ0MCBsZWdhY3ktdHJ1bmsKKzk1NzUgMDBhODVhYjAzMzdmN2Y4N2NkZjYyNmQzYmRlZDUwODVjODQ0NWJmMCBsZWdhY3ktdHJ1bmsKKzk1NzYgMTY3NmZhZDdiNjNlNzUyOWQyZjE4YjUxOTllZjVhYjA5MzJiMWQ4YyBsZWdhY3ktdHJ1bmsKKzk1NzcgZjdmNTViYjZhM2IzMDgwZjJlMDhiYjI1MDEzYWJhOTlmM2RjZWQzMSBsZWdhY3ktdHJ1bmsKKzk1NzggODA4NDc5Zjg1YTI5YTNiMTE5ZWFmNWI1ZGNlN2FkOGRhZDllMzIxMSBsZWdhY3ktdHJ1bmsKKzk1NzkgMGRjMmZjYjA3NmFjYTViN2I0YTJmZDE1ZGQwM2M0YzA0NDc4ZTU5NCBsZWdhY3ktdHJ1bmsKKzk1ODAgZWZhYTAxZGVmZmQyZGIwNDIwZTNjOWFiNzhmZjZlNjNkMzY0OTRiMiBsZWdhY3ktdHJ1bmsKKzk1ODEgMmU1YTExNmU1NGVjZDVjY2UxZTQ3MDRjOTdlMzFmZTU4ZjQwNGExNiBsZWdhY3ktdHJ1bmsKKzk1ODIgZTcwNjFhYjI0ODUyMTVlNDRiYjQ3YWJlOTI4ZTYyN2EyOTU2ZjdjYyBsZWdhY3ktdHJ1bmsKKzk1ODMgMjhjN2Q1ZmNkM2FjOWRhMzFmNmE5MWY4YThkMmU3MWMxNjgxMWE2MyBsZWdhY3ktdHJ1bmsKKzk1ODQgMzE3NmRlYWNiNmQxZjBlYWE2NTAxMDY5ZTI5MzZkNzllYWE3Yjg4OSBsZWdhY3ktdHJ1bmsKKzk1ODUgNmM5MDBhZGIxZWMzYjE1YTEwM2MzYzhhMmI2YTY5MThjYzk1ZGI0NCBsZWdhY3ktdHJ1bmsKKzk1ODYgZWQ2MjU0ODA0NTYzNWU1OWJlYWYyN2VlNzY1ZThkZWJlMGFlYjA4YyBsZWdhY3ktdHJ1bmsKKzk1ODcgZjQzNjY3ODY2ZDVlNWU2MjFmYWQ1YTUwNzk3ZTg0MWY4ODRiMTI2OSBsZWdhY3ktdHJ1bmsKKzk1ODggMjgyMjM2OGMyNjZhM2YwOTk2ZDA2ZWJlMGRmOTAwNGY1N2E0OGYxYyBsZWdhY3ktdHJ1bmsKKzk1ODkgZjA2M2YxZWIyOTY0YmM0MzFhNzBjMjIwNmQ4NGRhYjYwOWQ4ODAyOCBsZWdhY3ktdHJ1bmsKKzk1OTAgZWNlNDEyM2UzNmVhMmNjOTliNWRlMzJjOTIxYmU3Yzc1MzExYmM0MSBsZWdhY3ktdHJ1bmsKKzk1OTEgZjVmMzA1ZDdhNjE3NTc0NGUyYzNkYzcxYTRmYWRkZjkwNzI2NjUwNSBsZWdhY3ktdHJ1bmsKKzk1OTIgZmEwOTM3MmY3ODcyZGJhYzQxMWJkNzViMjU3N2MzNjhiOGFmMmFjNiBsZWdhY3ktdHJ1bmsKKzk1OTMgZWE3ZGM1MTBlMmRmNTY5ZTg1YjA3MGNiYjExN2UwNjJjNzZmYzAwMCBsZWdhY3ktdHJ1bmsKKzk1OTQgNDE1MTRkMWVkNjY0ZTJhZmFjMWJkZjVkMzE1YTBlZmZjZGQzYmY4OSBsZWdhY3ktdHJ1bmsKKzk1OTUgNDE5ZGNhMmIzYTYxNzkwYjQzZWM1OWRjMWZhMzFhMWEzZDljZGE1MSBsZWdhY3ktdHJ1bmsKKzk1OTYgZTkxMDhlOTdhNWEwMTdlMDI3ZGYzM2NkYmZhNTU0M2U5MTQ4MjM4ZCBsZWdhY3ktdHJ1bmsKKzk1OTcgNTE2MTg5OTg0YjBjYTM5NGNlMmY0YmZiNWFlYmNiZWM1ODNkY2VkNiBsZWdhY3ktdHJ1bmsKKzk1OTggMGVmZWQ0ZDMzMjNiMTMwMmFjY2EwMzliZDcxNmU1Y2NmOGQyZTM2MyBsZWdhY3ktdHJ1bmsKKzk1OTkgYzg3NDVkMjA1MTIyNzE2YzllMTBkYjc5OWZiNmYxMmY5ZTY4NjQ4NCBsZWdhY3ktdHJ1bmsKKzk2MDAgNDFkNmRiOGUyNmRjMDMzOTNkZjg3YjQ5MjcyYzViMjQ5YmIzMjU2OSBsZWdhY3ktdHJ1bmsKKzk2MDEgNWQ1MTdkZGNiZDJlZjUxOTMzZThmMWZlNGNjMWM1ZDMyMzNlNTAzNyBsZWdhY3ktdHJ1bmsKKzk2MDIgYzAzN2QwMGIxZTJjYmE4OTg1Y2I2MzljMTA2N2IzZjY0NTU3ZjE3MCBsZWdhY3ktdHJ1bmsKKzk2MDMgZGU0YzgxYzA2OTk0MjliZWU0OTdmZDhiMWFkNzQ0ZjhjNjkzZDVmOSBsZWdhY3ktdHJ1bmsKKzk2MDQgZDJjMTEwYWNjNjBjMTY2MjYyOTU1NzBmN2Y2YTU5MzAzZjJjMzk5MCBsZWdhY3ktdHJ1bmsKKzk2MDUgMWM0YmFhZGE1NTllMjMwZDM0MjE2MTZhMmExZjZhOTljOWU3YjZiYSBsZWdhY3ktdHJ1bmsKKzk2MDYgZGU0ZGNhOWU0Nzc4Y2ZlZjk3YTlhOGNmMTc3OWQ3NjkwYWUzNGJiOCBsZWdhY3ktdHJ1bmsKKzk2MDcgOTczMTViZjA4ZmFkNjIzZDYyMDRkMDVlMDdiNzZkMzc2Njk5MDAxZCBsZWdhY3ktdHJ1bmsKKzk2MDggZTRjMzFkYzMwNjIzYzZkOGE4MTYwNzUwODEwODU2ZTNjZmYxNGEyMCBsZWdhY3ktdHJ1bmsKKzk2MDkgZGZkZWFjNWUxOGM2MjVhYWQ5OThhMGFjN2U2MDRiZjVkNWYwNzRlMiBsZWdhY3ktdHJ1bmsKKzk2MTAgOTZmYTY3NTNlOTU2Mjc5YjViNjllNTNjODZmMTYzNGZhNTI4NjQzZCBsZWdhY3ktdHJ1bmsKKzk2MTEgYmE4NDllNDhmOWNhZTIzOGM5MzNhYmFiMmM5NGE5Mzk2ZjBlNWI3MCBsZWdhY3ktdHJ1bmsKKzk2MTIgMzkzOWY5ZmY2NjVmOGZiZWEzNWRjYTU3NzFlOTk2NDMxODVkMDA0OSBsZWdhY3ktdHJ1bmsKKzk2MTMgZWZhMjI0MzNlODU1ZGE0ZjQ1NWIxZTVjMGM1NTM2ODcyNDVmNjdkNSBsZWdhY3ktdHJ1bmsKKzk2MTQgOTNmZmU2NDFhNTEyNzZmZjRkYTE3YzJmNTRhYzlkMWQ4ZDA5MmM4ZSBsZWdhY3ktdHJ1bmsKKzk2MTUgMTZhM2NkZDJmMWQxM2I4MjAwOThmMzBmM2Y1MTRkMTQ0MTcyYzYxOCBsZWdhY3ktdHJ1bmsKKzk2MTYgYmY5MWMwZTE2NWFhZGNmNWVmYjEwNjAxYjAzZWZiN2E2ZDUyNWQzZiBsZWdhY3ktdHJ1bmsKKzk2MTcgZGM4Njg3YjUzZGQwZjE3NjhhMDFiOTY4ZWQ5MjUzODQzYTc0NGFkNyBsZWdhY3ktdHJ1bmsKKzk2MTggZTdiZmVhNDFmNjE3ZTg4ZTg3NTZmYzE1YTQ4NzBmZWUzYTYwMmM1MyBsZWdhY3ktdHJ1bmsKKzk2MTkgYjgxZmI2N2Q5MDhkN2E5NzNjZTEwMjJkNmZmMDM0ZTgwMDk0N2IxYyBsZWdhY3ktdHJ1bmsKKzk2MjAgYWZmMWU3YjFmNTIzZDczMDViYzNlMTFkMzJjYTcwMjU0MTg4NTAwZCBsZWdhY3ktdHJ1bmsKKzk2MjEgM2YwYmU3ZGU3Y2E1Y2E1NGFjZmNhM2UxOTM0YzNkMzE4OTdhMTg0MyBsZWdhY3ktdHJ1bmsKKzk2MjIgNGVmNmE4M2IyZTYyNWUxNjM1OWNlZmExNTg5N2Y4ZWFhMTBhY2ZhNyBsZWdhY3ktdHJ1bmsKKzk2MjMgNjA3NDg0N2ZhZDFkZTQ5NzAyOGVhOTJkNGZkMGVjZjNhOGIyYzY0MiBsZWdhY3ktdHJ1bmsKKzk2MjQgNDllNGUzZjMwZTU4ODAyYmE2ZGFiMGVkMjUzZThmY2MwN2FhYzgzZSBsZWdhY3ktdHJ1bmsKKzk2MjUgNTEyOGM2MDcyYWE1MWJhNzE2YmM3ZmIzYmRkMDAyYTU4OWNkZDg2MCBsZWdhY3ktdHJ1bmsKKzk2MjYgZDQ4Yjk5ZDg1NjE3NDJkNWQ3N2M4NWRmNTU4MTI3ZThkNmJlZDliOCBsZWdhY3ktdHJ1bmsKKzk2MjcgN2VkYzMwZGY3M2Y2YTJjYjIwZTVhY2IyZTZlM2EwYzZjODU4ZTdmZiBsZWdhY3ktdHJ1bmsKKzk2MjggYjg2NDAyOWE1YmM1YzVkMDNhMDEzNTkzZjhjMjUwMzBiMTU2NzMyZCBsZWdhY3ktdHJ1bmsKKzk2MjkgZDMzOTk1NGVhNTdkODk4NzkzMWM0Njc4Y2I5YzE1NDU1NGJlODkwYiBsZWdhY3ktdHJ1bmsKKzk2MzAgZDM5YTgwNTg1MmMyMGFlOWM3ZWY4ZGY3YmJiOGRlZmViYzkyNzE3NyBsZWdhY3ktdHJ1bmsKKzk2MzEgYTc2OTBlZjVlMTU5MzdlMTAyODBlOTUzNGM0ZWYxYTI5YzMxNGMyNCBsZWdhY3ktdHJ1bmsKKzk2MzIgNzQ5MTZjOTZkZGI5NjUxNGY0NTJiZjQ0ZmZhOWEwMzgyMjJlOWZlYSBsZWdhY3ktdHJ1bmsKKzk2MzMgMzBhYjM5YzJiMTg2MmU0ZjBkZWMzYjhkNGVlNmVhYWFkZGI3MDc3MiBsZWdhY3ktdHJ1bmsKKzk2MzQgY2U2YWQxNzBjMGNlNzJlOTA2ZmU5N2IyZmNmZWRjNjlhOTFjOTMxMSBsZWdhY3ktdHJ1bmsKKzk2MzUgYTZmYTlmM2NhZDEzN2NhYTVmN2M1ZTJjNzlhOWI2NGI3YWQxZmFlZCBsZWdhY3ktdHJ1bmsKKzk2MzYgZmI3MWI5MmQxNDNhYTFlMTZiNWIwMjRjYTBhMWMxOGNkOTIxYzkwZCBsZWdhY3ktdHJ1bmsKKzk2MzcgNDlhMjBkMDBlMzRjZTVmNWM2ZGY3NTljMGZiNjE2NTFhNjI5OTQ0ZSBsZWdhY3ktdHJ1bmsKKzk2MzggYTY0YTQyM2Q2YjU0MGFhNjQ0NzExNzZmYzZjZGM2MWYwNzE5NGExYiBsZWdhY3ktdHJ1bmsKKzk2MzkgNWFiNzA4MTgxZmE2MjIzMmYwNjU0NmZhZGZmMmUwMjhhMTFmMmZkMiBsZWdhY3ktdHJ1bmsKKzk2NDAgOGZiNWZkMDc1YjJhYjEzMjAzODRiY2ZhYjAzZjUwZGU3NzI2ODhlOSBsZWdhY3ktdHJ1bmsKKzk2NDEgZTU2NDZlZWNlYWU4ODc5ZmMwYTNkYzUzZGRjNzcwOTUzNTgwM2JiNCBsZWdhY3ktdHJ1bmsKKzk2NDIgYzNiNWIxYzI1YzUxYzdmMTZjYzdhOGJhMDNlYzZiZjc1Zjc3MmVkMyBsZWdhY3ktdHJ1bmsKKzk2NDMgMGQ1YTlhMGU3ZDY0YTEyZTAyYmU3MDczNTcyNTgyZDNkZDJiNjYzYiBsZWdhY3ktdHJ1bmsKKzk2NDQgNjZjYjAwMzE3YWNlYmI2ZjU4MDMxOWEwZjNmZjU4MGIzZGY2MWQ3ZSBsZWdhY3ktdHJ1bmsKKzk2NDUgZTU4YzdiNTBlOWI5YzZiOTZkODkzM2M1ZjNkMjc2YjU2OTI1OGVkMCBsZWdhY3ktdHJ1bmsKKzk2NDYgMjEyNTk3YWY4MjliYmNhYmMxNzk3N2RjNTgzZThkMmI4NDUxZTUzMiBsZWdhY3ktdHJ1bmsKKzk2NDcgMzczZDc4MTE4MTEzYjhjZjRmODkwODY2MmUzMDNkYjU3N2YyZGMwNiBsZWdhY3ktdHJ1bmsKKzk2NDggYzVlNzY3ZTIyYmQxYzNlNjVkMzZiNjIzZmE4OWU0OTFjZDU4OGFlZSBsZWdhY3ktdHJ1bmsKKzk2NDkgY2U0NzY2ZmIzZjU2M2QxNzYzOGM5MWExYzQyNGIyNTU2YmI2NjU5MiBsZWdhY3ktdHJ1bmsKKzk2NTAgYjViMGMzMjRjZTU5ODc4ZmNhZWVhYTE1M2VmYTFkMDhiN2MzN2IwMCBsZWdhY3ktdHJ1bmsKKzk2NTEgMGE0ZTI5YTI4NjU1ZTQwNDMwZWNmMjRhODM5YTcxOGRkMmY3YTcyZiBsZWdhY3ktdHJ1bmsKKzk2NTIgZGM5YmI0N2IzNTUyOGQ3ZGYyNjdjY2EzZDYwMWY2MTMwNDNjZjQ1MSBsZWdhY3ktdHJ1bmsKKzk2NTMgYTI4YmY2MmFjMzM1YjVmMzA2YTNlZTU3ZWM5MmRhMjE3ZjhhNjFiMiBsZWdhY3ktdHJ1bmsKKzk2NTQgMGJkMTg1YzJlNTgxMDNlMWU4MGQwOTNmYzM4OGUyMmQ3MzRhZDdhMyBsZWdhY3ktdHJ1bmsKKzk2NTUgN2MwMDRmYzEwOTg3MzdhY2YwMTU5NDJlODdiYzY2NjNhZmZkODE0ZSBsZWdhY3ktdHJ1bmsKKzk2NTYgNDA5ODdiODZhMWM3NGZiODVjOTZmZDc5NzJlMzQ2YTA3YWNlNTU5MCBsZWdhY3ktdHJ1bmsKKzk2NTcgN2Q2MWZhOWI1N2E4YzU0MmE5NTZhZmFiMmExYjMwYzNiMzljZDJjMiBsZWdhY3ktdHJ1bmsKKzk2NTggM2E5NjBiMmUyNjY3N2MxYmM1YmU0YjRhNTE4OWIwZGQxNmVkOWVkMiBsZWdhY3ktdHJ1bmsKKzk2NTkgNGYxMGQyMzNmMWRjNmQzZDBiNDE2YmY5YWJjNjdhMTQ2NzMxNmQ3NiBsZWdhY3ktdHJ1bmsKKzk2NjAgNTkzNjJlYTdlMGY4YjQxMDY0ZDE5NTAwOWZiZWI5ZmQyNjcwNzU2OSBsZWdhY3ktdHJ1bmsKKzk2NjEgZGU1Y2I3ODllOWYwZjJmODdiOTkxYTdiZDhhZTk3NTdjOTg2OWNiNSBsZWdhY3ktdHJ1bmsKKzk2NjIgNmY3ODE5NWJmOGY2ODdmNzBlYzU4NjhhOWRmNjIxMWRhOWQzYTYyMSBsZWdhY3ktdHJ1bmsKKzk2NjMgYTU5NmJiZTcyNTc5ZDhiNWUzNGNmNDEzMTc5ZjM2ZjlmZjVkNzg0OSBsZWdhY3ktdHJ1bmsKKzk2NjQgNmU1ZWI4NDUyNDZjMDliZDliNDU0M2RmMGQ2MTU3NjRlYWNkYTc1YyBsZWdhY3ktdHJ1bmsKKzk2NjUgMmE5YmE1OWFiYzM4MmI3OWYxODI4ZDg0MzUzMjY1YTBmMDU1NGFjYSBsZWdhY3ktdHJ1bmsKKzk2NjYgZWU0YTFhMzBkN2NlOTI3YTc5NmE0NjMxZmFiNWJiMzc0N2U0ZTNjYSBsZWdhY3ktdHJ1bmsKKzk2NjcgZjNjYzhkNTNhYzgwM2RmMmFhMzBkMWIxZDM3NjdiMDg1N2ZkYzhjNCBsZWdhY3ktdHJ1bmsKKzk2NjggMWY5ZDk0MmYxNTZjYzkzMmZkZWY5MTMzNDU1YjJmODA0ZDBkMWZjMCBsZWdhY3ktdHJ1bmsKKzk2NjkgNzA1NGJlNWFkN2Y2NzQxYWY5YmIwNjU0N2YzOTlmZGM2OWY0ZGE0MSBsZWdhY3ktdHJ1bmsKKzk2NzAgYWY5OGI0MjE0MjRjYzM5YjhjNmE4Yjc0YWM2ZjZlOTRkZTQ2ZDlkMSBsZWdhY3ktdHJ1bmsKKzk2NzEgZTI3OTU3MmUyZGEyNTUxNjY3MTgyZWRhMjZhN2ZlNTA3M2Y4NTZiMiBsZWdhY3ktdHJ1bmsKKzk2NzIgYjAwOWE0YzI0MTg4ZDUyODNmYmViMDJjMzM1MzZhZDVmOGMzYWRjNSBsZWdhY3ktdHJ1bmsKKzk2NzMgYzEyM2E1YTU5Y2RlMjFkMGMxMjhhYTNkYTJlZGU5YTQwNjZmYTI3ZiBsZWdhY3ktdHJ1bmsKKzk2NzQgMzA5ZmZmZTc2OGE2MjQyMTg1NTI5MDA1MDdkNmQ3ZTQ1NmNmNzE2MyBsZWdhY3ktdHJ1bmsKKzk2NzUgMjZkMDc3MzViYTRhNWIyNjdhYmZjODcwZTYzZGY2ODk5ZmM1MWFhYSBsZWdhY3ktdHJ1bmsKKzk2NzYgNWNkMmY2OTliZjY5MTY2YWQ3YTVkNTlmMWVhNjVmYjUxOWJjN2Q2OCBsZWdhY3ktdHJ1bmsKKzk2NzcgZGIwMDdhMmNhN2I2MzY3NzM1MjFiNWJlZTNkZDcyOTJlNTRhOWVkNCBsZWdhY3ktdHJ1bmsKKzk2NzggOThhOWRhNTIwZjFkOGMxOWFiNWJkNGUyMDMzMjdmNGU4Y2NjNTIxMyBsZWdhY3ktdHJ1bmsKKzk2NzkgNzIwZTkxODM5NjFlZThhZGQ3NDAxMzIzYjljNWMwMTUzZGRmNTQ0OSBsZWdhY3ktdHJ1bmsKKzk2ODAgZmVkM2QyMDBmYjU2NWQyYWNlODAxYmM2MTEzNmE4YjM3ZmNiYzgxZSBsZWdhY3ktdHJ1bmsKKzk2ODEgOGMxMjlhNTY3ODY3Nzk1MmEzMDI4YzlhMGNkMGI4YTRiOWQ5YmU3ZSBsZWdhY3ktdHJ1bmsKKzk2ODIgNDhhYjY2ODc0YjExOTFjZGQ0NDNhMGUzMTMwZjAzOTlhZDA5ZTkyMiBsZWdhY3ktdHJ1bmsKKzk2ODMgMDlmZmFiMjczZWViNTY1YTc2MTk1OTRkOTA1OTY4NTJmZjRkOGUxZSBsZWdhY3ktdHJ1bmsKKzk2ODQgM2YyNTVhZWRmNjIxZTk1ZTI2NzI5ZjNmYmQwOTAyNGRiNzRhMjRhMSBsZWdhY3ktdHJ1bmsKKzk2ODUgMDZkYjEwYzc2ZGM5NTJlM2ZhMDE5NGQ4M2I0MGM0NzM5NzZiY2RiOSBsZWdhY3ktdHJ1bmsKKzk2ODYgY2UyNzFlNWY5YmM1YWM4OTdjMGI5YTRkODJjM2RhNzBlNTg2MTZiNSBsZWdhY3ktdHJ1bmsKKzk2ODcgYzlmZTM1YTgyOThhZDg1OTZhNjMxMWE3MGRhMjlkZGViNjdiYjMzYSBsZWdhY3ktdHJ1bmsKKzk2ODggYmNjZGVjYTgxNjY5Y2UzYmQzMDE0YTMwMzEwY2Y3MWY1MmZhNTIwZSBsZWdhY3ktdHJ1bmsKKzk2ODkgYzc2NDIxN2FlNmViOTJkMzFkOTAwNWNmN2ViMjljOGFjNWMzMTcxNCBsZWdhY3ktdHJ1bmsKKzk2OTAgYjliYmZhMTY5OTIwZTQ1NWIxMjcxM2Q4MzJhODg3ZDlmOTIxYjMwMCBsZWdhY3ktdHJ1bmsKKzk2OTEgZmY1MjRiNjliNjY0YTNmYzY1MWY5ZmU5MzdlODg3NDk5MGI1Y2FiNCBsZWdhY3ktdHJ1bmsKKzk2OTIgNjIyMmQzMzcxZmI4MGViODQwZWU1MmQ4MTIzNmMxZjNiODk2OTc5YSBsZWdhY3ktdHJ1bmsKKzk2OTMgNWE3ZjI2OGEwNzgxYTk0YWRjNWM5ZDc1MzVkOGIxOWVlOGM0NmNlOSBsZWdhY3ktdHJ1bmsKKzk2OTQgMTZlY2YxNTU0YTgzNTc5MzgwZTczNzZlZWViZjExZmQzMTk1ZjEyZCBsZWdhY3ktdHJ1bmsKKzk2OTUgYmMwMDg2NDA0YTlhNTUyOTIxYmMzMmFhMTE4MmJlZTM1YmYwY2I4OSBsZWdhY3ktdHJ1bmsKKzk2OTYgOTBhMzVmMWI5MDA4NWZhMTlmMzQwODQ0ZTEwNTI2YTZmYWMyMzkwNCBsZWdhY3ktdHJ1bmsKKzk2OTcgNjQwYjk3ZDEwNWRmNzExNTJmOTczMmFkNTMzZGZiZDM1M2VkMzM1ZiBsZWdhY3ktdHJ1bmsKKzk2OTggZDBjYTgxNWM4MDcyNTQ4MTNlMjNjODhjOWRjZDAyZmMxYWIxYzk4NyBsZWdhY3ktdHJ1bmsKKzk2OTkgOTVjMTAxOTY0NDE0OTg1NzMwYTg5MWZkMzA2OTk2YmNiMGI0YTYxOSBsZWdhY3ktdHJ1bmsKKzk3MDAgMTBmZGYxNmY0ZGU5YzFmOTRmNmI4NTIzOGJjNjQwYjBjMzU0MTU5NSBsZWdhY3ktdHJ1bmsKKzk3MDEgOWRkZTA3YTU5M2Q4M2ZjMjMyYzcwZGIwMTI5MTMzMzAyYzI3YTZiNSBsZWdhY3ktdHJ1bmsKKzk3MDIgZDMzZDQ1NjIyZTY3MTFkOGIxYzk3OWNkNTAwZmFhMzcyNzA1MDhkZCBsZWdhY3ktdHJ1bmsKKzk3MDMgMTFmMzRiZTBiZTExZmY0Mjc3ZDUwYTJhNDc5ZjY5ZDQ3OWEwNGEzYyBsZWdhY3ktdHJ1bmsKKzk3MDQgNDc4MDJlMmY1YmVkYjRmMjJiYmM1NGQzMTZmODExOGNmMDM4MWJkMCBsZWdhY3ktdHJ1bmsKKzk3MDUgMDQ1ZmZhNGM1NmY3ODU2YTIzNGE5NTk0ZGRkZDc2ZTUwMjZiMWNmYyBsZWdhY3ktdHJ1bmsKKzk3MDYgYmM2NDgyZjdlNzhmYTM0NjZiOGI5NDFlYzkxYjk3YWQ5ZGQwYWU0MCBsZWdhY3ktdHJ1bmsKKzk3MDcgYmMyOGEwZWE2NjQwZjc3YjRiZGI0MDg0ZjI2MDYwZjQ5ZWJhNDg4YSBsZWdhY3ktdHJ1bmsKKzk3MDggMzc1NzIzYTc1NTljNzE1ZTA5NGJlYmMyNTNmMTViZjAxZTg4NTEyZiBsZWdhY3ktdHJ1bmsKKzk3MDkgMTc3YWQ3M2JmMWE5MjVmMDA5MzM1ZDdkN2ZkZTFhOGQ5MjI1MGJiNCBsZWdhY3ktdHJ1bmsKKzk3MTAgNzRjNTcyODhhMDJiOTk2N2JhNjQ4ZjRjYjVmYmUzM2IzM2Q0YzI5OSBsZWdhY3ktdHJ1bmsKKzk3MTEgMDhjNWJiZmFlNTJjMGRmZTA2M2VmZTgwMjMxZTczNmIwMDY2NjY5MiBsZWdhY3ktdHJ1bmsKKzk3MTIgMjNjNTA5YWEzZjBkOTQ3M2NlNTJhMTVhNzYwMDI0NzA2Yzc3Njc3NiBsZWdhY3ktdHJ1bmsKKzk3MTMgZGViZThlMDgxMjYwODVmNDAwYjNkYTYzYjBkMjNkNzY0MjRkY2U2ZCBsZWdhY3ktdHJ1bmsKKzk3MTQgZmQ3YTU5OTNkMDZkYWEyODQ4ZmMxMGMxN2IyZGE3MTU4MWI0OGIxNyBsZWdhY3ktdHJ1bmsKKzk3MTUgY2RiNGE4MTM3OWFkN2U1OTczZjE1YmVlNTliMTZmNTZlNDI2NDBiYSBsZWdhY3ktdHJ1bmsKKzk3MTYgYWE1NGQ3YzNkYWY5MDE2N2E5NWZhNmJkYjQzZmY3M2Q4NzNiYTQ3ZCBsZWdhY3ktdHJ1bmsKKzk3MTcgMzA2ZjczN2JhYjU3NmE4Mzg5MzJiNTk4NGE0NjZkY2Y3NjVkNTZmYyBsZWdhY3ktdHJ1bmsKKzk3MTggMmI4MjIzMWE5N2NjNmFiZjc2NWQ4M2E0YTIwOTZkYWIxMTNmNDExNyBsZWdhY3ktdHJ1bmsKKzk3MTkgYjU5ODU1NDJiYWUxZTY5ZjY1M2E0Nzc3MDFmYjY3ZGEwZjFiZWU4NiBsZWdhY3ktdHJ1bmsKKzk3MjAgZTc1MDA2MDY5MzY3ZmM2ZjExNTMwZDZlY2I1ZGRlOWRhNWZlZGQ4MCBsZWdhY3ktdHJ1bmsKKzk3MjEgNWY1YjllODcxODg2Y2Q4YjllYzQxNTE5ZTZlMjUzMDRjZTE1OTU0OSBsZWdhY3ktdHJ1bmsKKzk3MjIgMGI1M2MwMzkzYzg4MjYzZDdlNDFiOGYxOWEzYmIxZGIyZmQ0Yjk3OSBsZWdhY3ktdHJ1bmsKKzk3MjMgYTcxMTY4NjQ5ZGM1MWVmODNiMzU1ZjI2ZDk5MjdlYjg3ZDRjM2RmOCBsZWdhY3ktdHJ1bmsKKzk3MjQgMTkzZDcwNGNiY2M4NTFhZTczOGMxZmI4YTE1YTQ0Y2MyYzBjZWNlNSBsZWdhY3ktdHJ1bmsKKzk3MjUgMTI3MmI1OGU4NGFlYjZjMmRmN2EzOWMwZjI3YmQwMGJhZmFmOTQ2NCBsZWdhY3ktdHJ1bmsKKzk3MjYgMjg3NjIzY2NlMjg5NDUzZTI2Y2M4OWJkYzllYTlhY2I0MzY5NzUwMyBsZWdhY3ktdHJ1bmsKKzk3MjcgZjBiYjNiY2YzOTdiMjU0OTZjMGQ3YmU0YzlmMTgwYTRkYzRhMzFjOCBsZWdhY3ktdHJ1bmsKKzk3MjggYzY5ODY5MGEyN2IyNTkxMzQwMDUxYzBjYzNjMGI4ODc2MjY1OTQwZiBsZWdhY3ktdHJ1bmsKKzk3MjkgOGEwODAyNWVmOTNkOGY5NTQzNjY5ZmY3ZTM2MGNjYTE5ODkyODFkYyBsZWdhY3ktdHJ1bmsKKzk3MzAgZDNmZDIxODJjZmI4ZWQwMmQ0MjQwMTZiNGU2YjhjOTlkMWIzNjE3MCBsZWdhY3ktdHJ1bmsKKzk3MzEgNGU3NDAyYzhlNDYwYmZiZjhhM2IzOGIxMWY3NDdlMmVkMjlmMTBiOCBsZWdhY3ktdHJ1bmsKKzk3MzIgODEyNjE1ZTU0NTUwZTY5YWRhZDcwYzFmMzg2OWIyZGJkOTg4OGIzYyBsZWdhY3ktdHJ1bmsKKzk3MzMgY2E3OGIwOTVlY2YwMTQ2M2UzZTY5NTc1Y2FiOTFkOGFjMTJmOGFjZiBsZWdhY3ktdHJ1bmsKKzk3MzQgOGM3NDlkZmM0OWJmYTM4ZWQ2ZGYwMmI2NGNiODdlNGRhZjJhYjZjZSBsZWdhY3ktdHJ1bmsKKzk3MzUgOGIwZDZiNjRhMGVhMzljZTMzZTk2ZWQ5NWNiMjZiYzBhNWFhOWY3NCBsZWdhY3ktdHJ1bmsKKzk3MzYgNjE0ZDhhOTA4NGVhZDQ3NTgwMGQxZjNkOWQ5YmY0NDc3M2U3MGJiYyBsZWdhY3ktdHJ1bmsKKzk3MzcgN2NkYWE0NDk1NTMwNzkzYmFlY2U3MGUzZTdiMzZmNzkzN2IzNGRkNCBsZWdhY3ktdHJ1bmsKKzk3MzggYTdlOTUyNGEyYTUyYzY0YWEyODYzZTA2NTFlM2U4ZGI3NjVlYmY2MCBsZWdhY3ktdHJ1bmsKKzk3MzkgYmJmMzUwN2VmM2ZlZjI4NDBhMWQ1MjRlMGE5NmI0MjNmOTAyMTQxMyBsZWdhY3ktdHJ1bmsKKzk3NDAgYzA5OTA3MTA0MDkyYTU5MjUwZjdhN2Y1YzcyYWFiYjkwYzRkMjBmNSBsZWdhY3ktdHJ1bmsKKzk3NDEgNDFhOTI4Y2JjYzVlZWI4ZTBhNmI4ODc4MzcxNzMwMjZkMDNkMDZiZiBsZWdhY3ktdHJ1bmsKKzk3NDIgYjhkNDg0MTI1YzkyZGQ2MjUwZTQ4ZmE3Mzk4ZTljM2ZiMDExNDhiMSBsZWdhY3ktdHJ1bmsKKzk3NDMgYzAwMmZmZDFmYmJmZTdiYTRjYWVmYzA1NWQ0ZmEwMjc0YWFjMDRjYiBsZWdhY3ktdHJ1bmsKKzk3NDQgODNjMGU5ZGQ0MjIxZjg2YWU3M2I0NmQyMjg3YWMzYWIyYmViNzRkYSBsZWdhY3ktdHJ1bmsKKzk3NDUgY2ExNGZkYjk1NWVmODI3YmI0N2M2OGY1MGZlOTQxOWFmNWQ5NzFhNSBsZWdhY3ktdHJ1bmsKKzk3NDYgYTJmNGM5NDRjYjg3MjFiZmM2NmViMmY5ZDY3YzViYjM4Nzk5ZWVjYyBsZWdhY3ktdHJ1bmsKKzk3NDcgNjgyZDNlNWIyNjdmNDcwYjNjMTAxNGIzMDI1MzUyYzRkOGIzZGVkMSBsZWdhY3ktdHJ1bmsKKzk3NDggZjU1OTY5YzFjM2Q1NDE5Njk4MmQ5Y2EyZmZlYmM0NzFmMzU3ZTlkMiBsZWdhY3ktdHJ1bmsKKzk3NDkgMDA2MWQzOTE2YWU0YjE1ZTllMDYxOWFmNzM0ODE1NWVlMmVkZjg3NiBsZWdhY3ktdHJ1bmsKKzk3NTAgYzgxN2Y4NmNlN2RiNjcxOTNhNzQ3NGM0MmE0OGM1ZGJkNGI3NGRhZCBsZWdhY3ktdHJ1bmsKKzk3NTEgMTViYTY4YzMzZWQxY2VkYTMwMzI0MjAzZmFlNjlmNWUxYzdiNTk5OSBsZWdhY3ktdHJ1bmsKKzk3NTIgZjVlYTFiMzBjYjNmNzQ5ZTViOThkMzAwMGQzM2Q0Yjk0YWNmOWMxNSBsZWdhY3ktdHJ1bmsKKzk3NTMgMDBjZDlmZTRmNmYyYjA4OWRiNWI0NWRhMTRmZDkxM2YzZjFiYjhjMiBsZWdhY3ktdHJ1bmsKKzk3NTQgMzlkZTQ5NDM0ZGY0MjYxMWM0N2I2OWFmNjg5MjQzMTI2NmY0ODNkZCBsZWdhY3ktdHJ1bmsKKzk3NTUgYmY0ZTc5MGJkNjFhNGI5YjEzOTU1ODE4NTE0NzA5M2M1MTFhYTE3NyBsZWdhY3ktdHJ1bmsKKzk3NTYgNTlkMjc2MWJhMWNmY2FhMGMyZjA0OGE0MDFhZTMxMWE3MTNiOGQ3OCBsZWdhY3ktdHJ1bmsKKzk3NTcgNTJmYmI3MzEyMTAzNDViMDEzNTRlNjQwYjQ0NzA1Y2EyYTcxZTc4MyBsZWdhY3ktdHJ1bmsKKzk3NTggZjIxNGVlODgzOGRlNjgyNmYzNjBjNDFkNzBiODkwM2Y2YWYwMWM2MSBsZWdhY3ktdHJ1bmsKKzk3NTkgMWZkNzg3Mzg3OWFmODJjOWI5MzhiNTVkYWYzYmMxZDdlYzBiMTBkZSBsZWdhY3ktdHJ1bmsKKzk3NjAgNmQwYzQ4NWJhNWU0MTkzYzI2YjM0NDMzNWIyZjYyOTlhZTFjMzI4NCBsZWdhY3ktdHJ1bmsKKzk3NjEgM2EzZWUwNzVkZmI2OTgxZGM2OTQ1ZjEwZTk5MjU1ZDYzNmU1MjZjMCBsZWdhY3ktdHJ1bmsKKzk3NjIgMmYwY2U0ZmI4MTBiYTMwMWJkZTJkMWY1ZTZhOGJmMmMzYWZiYzVjNSBsZWdhY3ktdHJ1bmsKKzk3NjMgZWYyNjlhYjc3MGJjYzViZTZlYjJhNmM0Nzc2MTRmNTgwODVjYmY5NCBsZWdhY3ktdHJ1bmsKKzk3NjQgMWQ1MTE3OWNmN2M3ZmU0NTQ5NjI0ZTg5NmJiYjgxOTZjMGRkOGM4NyBsZWdhY3ktdHJ1bmsKKzk3NjUgYWYyYmM1ZjQ1OTE4YTcwMTIwODhiZTU1N2RhMWM5MmQwYjQwOWRiNyBsZWdhY3ktdHJ1bmsKKzk3NjYgNDE0OGU0YmM4YjI4NWY5YjEwZDljNTQ0NTljYjFlY2JlNjAwOGUzYyBsZWdhY3ktdHJ1bmsKKzk3NjcgNmZlZjAzMGE5NWQ0OWM2NTk0MmUxOGNjZTc5MDVlODI5NmRkNzUxOSBsZWdhY3ktdHJ1bmsKKzk3NjggNzJkNTMxZDU0NTcyOWIwMDM2ODkwMjU5ZmY2MDcxNWExYmYwZmYyYSBsZWdhY3ktdHJ1bmsKKzk3NjkgYjdmODRkMTc5ZTUxYTAzZDVmNWIxZDYyMjlmNGYxNzhlMmEyZjViNSBsZWdhY3ktdHJ1bmsKKzk3NzAgNmFkMjM0YWQ4ZGU1YzZkNTlmNmY3MDUzNGQ4Y2IwY2E0NzY0YTI4OSBsZWdhY3ktdHJ1bmsKKzk3NzEgMGRiZWM5OGFjZmM5Njc0NjQ5YTdhNWNmMTZhZDFmZWU4ZWEyMzU5NyBsZWdhY3ktdHJ1bmsKKzk3NzIgOGU2NGM1ZDU1NDhhMmE0MGI0NTVjYWExNzU0OWIyNmExYzJjZDlkZSBsZWdhY3ktdHJ1bmsKKzk3NzMgMjg1NDQ5MjY4YzM3ZjA4ZmIwYjhjMTllYTA0ZGY0NjAyZWZiODdkYiBsZWdhY3ktdHJ1bmsKKzk3NzQgYjAyNDk5MGQ2MWVjOGUyM2Q2ZGE4NjVjNTkzNjVmMzYxNTdkZWYxYSBsZWdhY3ktdHJ1bmsKKzk3NzUgZmIwYzViMzA3NDc2ZGVhYjIxZjg1OTI4NDY0MzY5YjBkZmM4ZDJhZSBsZWdhY3ktdHJ1bmsKKzk3NzYgMzcwMzQ5NTMxNWU5YTY0MzMyOTE5NGUxYmI1MzQxZmEwMjE5YzIxYSBsZWdhY3ktdHJ1bmsKKzk3NzcgMDhmOWI5MDE2NjliYTFjYTJjZmZkNDYxMTBlYWVjZjg1NDJhZmI0MyBsZWdhY3ktdHJ1bmsKKzk3NzggNDQxYWU0ZjRjZmNmOTE1ZjNjYTc3MDhmMjkzZGFmMjRkODEwZWExZiBsZWdhY3ktdHJ1bmsKKzk3NzkgNGY4NDIwMmMzNzdhY2QxZTg1OGE0YjJiNDgzMmY5YmE3MzNjZjg3MiBsZWdhY3ktdHJ1bmsKKzk3ODAgNjQwZjJlZjRkYTIxMjRlNTNiY2NiZGNiOTcyYWZhYTY3ODYxMDU4NiBsZWdhY3ktdHJ1bmsKKzk3ODEgNjU4Yjc0MmU0MzUwMzVjYzY4OWUxZmI4NjA4MDY4NzM5MmU4OWM4MiBsZWdhY3ktdHJ1bmsKKzk3ODIgMjZhOGU5ZThjYjg0MTFkNjhhMTM3YThhNDM5ZDZjNTY4MzBhNzVlMCBsZWdhY3ktdHJ1bmsKKzk3ODMgMDY3ZTQ4MTNjNmQ2N2EwODBjZGExN2FmNzkxYTU1MjY4ZWMxZmUyNyBsZWdhY3ktdHJ1bmsKKzk3ODQgZjg5ZTljZGRjMDk2MTMwNTU3ZTZkOWU3ZjQyYzBmNTFmNzlkNzMxYSBsZWdhY3ktdHJ1bmsKKzk3ODUgYzk4ZmVmOTIyZDUxNDY4Y2YyMDQ5NTA4MGRhMGNkODUzYWEyZjJiYiBsZWdhY3ktdHJ1bmsKKzk3ODYgODA5NmZlYzcyMmJhNzk2YWYzN2EyOTdjZWYxNDYzOTZmZjM3ODRjMCBsZWdhY3ktdHJ1bmsKKzk3ODcgZDcyNjYzNzJkZDM3MWM5ZDFhNzIzOGQ2MTNjMmI5NGY2ZjNlYjhkYSBsZWdhY3ktdHJ1bmsKKzk3ODggNjA5NWE0NzJmNTc0NWMzYWNhNzQxOTU5NWI3MTk2NTM1YjYzMzE5NCBsZWdhY3ktdHJ1bmsKKzk3ODkgZGY3NjRlNDJiMjU4ZjU3N2VkNTNhZWIxY2ZhNjMzYjE1YWJmZWUyNCBsZWdhY3ktdHJ1bmsKKzk3OTAgNDhkZjIwODBkN2Q0ODI5YzEyOThhOGMxYWRhMzE2MGNlMjAwOWVkYyBsZWdhY3ktdHJ1bmsKKzk3OTEgNWFlODdhN2Y5YTMyM2ZkNjUyYjI5YmRiOTE0MTExYTNkNjgxMmE0YiBsZWdhY3ktdHJ1bmsKKzk3OTIgZDIzYmI5NjllNjNhMDM3M2M2ZmQyY2JkNDNlYTBmYzNjYTk3NjRlZCBsZWdhY3ktdHJ1bmsKKzk3OTMgM2E1NWZiYjk5ZjIwNDc3ZDQwYjRlN2JiZDM1MDYxZWI5MWQwMjQ5YSBsZWdhY3ktdHJ1bmsKKzk3OTQgZjZjNmQ0ZDk3ZGM2NTFhNTMxMGY3NDMzMTU1N2IyMGQxZThlMGYxNSBsZWdhY3ktdHJ1bmsKKzk3OTUgOTI3ODQ4MjQ4MDBjM2RkMzczZDE0ZTU5NjVlNDUyN2E3YzVkNTFmOCBsZWdhY3ktdHJ1bmsKKzk3OTYgODMwMDA5YjU3M2VhMDk0Yjc0ZmI0NGQwMzJkMmYxNzYyMmQwMjY3NiBsZWdhY3ktdHJ1bmsKKzk3OTcgMDk4OTJiZjZhNTBkZmYxNTc3MjQ0MGNlZDk4Mzk4MzU4NGM4NTg3OSBsZWdhY3ktdHJ1bmsKKzk3OTggMTkyOGYwNWJhNDAwY2EyZWI2MzNlNjNjMzRmODZjM2U1NzcxYjc4MyBsZWdhY3ktdHJ1bmsKKzk3OTkgOThlZmQ1ZDkxZmNhNGZmZGQ2YTVlODA3M2Y3MDg2YjMxZTJlZTllYiBsZWdhY3ktdHJ1bmsKKzk4MDAgNzI0ZjgwNzI2MDU1MGRlODJhZWE2MDRlNWFjY2Q1N2YyZDgyYmFkYSBsZWdhY3ktdHJ1bmsKKzk4MDEgNDdlY2YwMmFhZjk3YjE0ZTFjMWM4NjFiMzc0NjJmZWFhNzdmZjFiNiBsZWdhY3ktdHJ1bmsKKzk4MDIgNTUxMjViMTE0NGZhM2E2YTVlMTY5MWEyODNkNWI4MWFkOTM0ZWJjOSBsZWdhY3ktdHJ1bmsKKzk4MDMgNmUwMGZiNzIzZjY5ZGJkZDYzZTJlODY3NDUzZDE1OTJhMWVmZjQ2NyBsZWdhY3ktdHJ1bmsKKzk4MDQgZmVjOGUwODRiMDc0ZjU3MDI3YWUzZTM2M2Y3NTM4NGNlNzRjMTU3YSBsZWdhY3ktdHJ1bmsKKzk4MDUgNDViNjZlOWFiNWVmYTAwODFiZTM5NWRiMTkxMmU1NWE0YmNjOGQ0ZCBsZWdhY3ktdHJ1bmsKKzk4MDYgYzJhMDg2OTg1MmViODQ1Yjk4YTlmZDY3NTAxYTI4MjQ2NWY0MjViMyBsZWdhY3ktdHJ1bmsKKzk4MDcgZTRjNzRmN2YzZTQ2NTk0YTRkYjhlMTg0ODM2NDgyZGM1NjhjZDZhYiBsZWdhY3ktdHJ1bmsKKzk4MDggOWFlMjE1Y2EyMGRiNGI4Nzc0NzgxNDRlZDg4OGYyNzMzMWU2ZjhlMCBsZWdhY3ktdHJ1bmsKKzk4MDkgODNhMzBhMzU4M2QzZjM2YTM5NGI3ZGJiYjZmMmJhNGFjZjI0NmVjNiBsZWdhY3ktdHJ1bmsKKzk4MTAgMjUyNTM5ODcxODczYzIxYWEwNTk1NzFmMjEwYmFhYzkwOTYxMTBhNCBsZWdhY3ktdHJ1bmsKKzk4MTEgNmU5Njg4Y2U3YzU3NjEwMjc5ZmM5ZDBlZDgyZmI3ZjNjOTZkNGFlNCBsZWdhY3ktdHJ1bmsKKzk4MTIgMzk2NWI2OWQ1MTE2ZTU5OTBmYzQ2M2ZiMDZjYzBmZTM4MmY2Y2ViOSBsZWdhY3ktdHJ1bmsKKzk4MTMgYzM3YTI4YTNiYjg1YjI2N2E4NDU0M2IwZGEwNGJjN2U2YTg1NmEyZCBsZWdhY3ktdHJ1bmsKKzk4MTQgZTE0OGNlMThjM2NlNGIzYzlkY2U0MTVjNzEzNDU3NzVlYTkxYjllOSBsZWdhY3ktdHJ1bmsKKzk4MTUgMTI5MzljOGI0ZTMwYTU0NGRkOWVmNWM3Nzk5NjU2YWFmYzMxM2E2ZSBsZWdhY3ktdHJ1bmsKKzk4MTYgZjkwNDg2MDA5MDVlOGNkNDM0OGM1M2UxYWJlM2M5OTRiZGQ0M2M0NCBsZWdhY3ktdHJ1bmsKKzk4MTcgZThiOGJhMTY5YjZkZDBlNmE1MzkxZjQxM2M1ZjNjYjU0Nzc5YjBiMSBsZWdhY3ktdHJ1bmsKKzk4MTggNmRjY2FlNzViMjZmNmIyYTBjNjM1YzFmNjlhMjg0ZjZhYzUxNDdhNiBsZWdhY3ktdHJ1bmsKKzk4MTkgMDA2OWYzZWJhOWEyNTAyYzlmYzE2Y2FlNGE0MGFkZmNmNzRjMjQwOSBsZWdhY3ktdHJ1bmsKKzk4MjAgOWY3NGY5MjIzYjQzNTU3ODA3NTQ0MmIwM2M1OTk4ZDFlNGE2YWNjNiBsZWdhY3ktdHJ1bmsKKzk4MjEgNGZmY2JjYzVlOGZlMzkzMzM2OWEyMzZkN2MwYjI1MDllYzViODUzOSBsZWdhY3ktdHJ1bmsKKzk4MjIgYmJhMmIyMDVmOGVkZDQ5ZmY0YWRlNmQ3M2I2ZDAzNGM5ODRjYmY3OCBsZWdhY3ktdHJ1bmsKKzk4MjMgMDgwOTY5ZGJmYzdjNTE4OTA1ZjA3MGMwZDJjYmU2OTdiODNkOTcxYiBsZWdhY3ktdHJ1bmsKKzk4MjQgNWE5MjU2YjhjMzM4MmEzZWI4ODNiZTlhMjg0ZGUzNTVlMjYxMDg0ZCBsZWdhY3ktdHJ1bmsKKzk4MjUgZDc2YTRlZmExZjUxZGY5NDUwNjQzODdiOWZlODYxYTVlY2FjZjMxOSBsZWdhY3ktdHJ1bmsKKzk4MjYgN2JhOWNmNGUwYzQwNDA0ZGNhMzIyMzE4MGFmMjlhMTJkNDEyMTlmMCBsZWdhY3ktdHJ1bmsKKzk4MjcgMmJkNWZiZDYwODcwOTlhODU0Y2M0OWJhOTkzYmRiYjdhYzdhNjg1YiBsZWdhY3ktdHJ1bmsKKzk4MjggNGZmNWMxNDk4ZGM4ZGI5YzZmOGZkODEwZDZhMWJmYzk5MDVhZGI1ZSBsZWdhY3ktdHJ1bmsKKzk4MjkgMWJhY2E1ZDJiYTU3YTRlNWIwY2IyYzZhNzlhOGE4ZDgyNjZhYTE5MCBsZWdhY3ktdHJ1bmsKKzk4MzAgMGQzMWM3ZDk2OTdkN2M1ZWM3OWI3YTYzZTA0MGVlYTY4MjY3MGQyMCBsZWdhY3ktdHJ1bmsKKzk4MzEgYTRkN2JiZmY5NWE0YjVmNTY0NWUxZDU4ZDgyMTNiM2M1OTc1YjZmMiBsZWdhY3ktdHJ1bmsKKzk4MzIgZTQzNjdkMjA2YTU1Zjc2MzAyYjNmYjA0YTNhMmQ5MWU4NTgxNDM1MyBsZWdhY3ktdHJ1bmsKKzk4MzMgYjI4NWZiYzI2NDZhNDk4NmE1YzVlYTkzZTFmOWQxNWQ4MDNjZWEwMSBsZWdhY3ktdHJ1bmsKKzk4MzQgYzYzMjUwMjlmN2RjODhjNmRmZWJlMmJjYTQwYzU5MzEyNTM0MzYzMyBsZWdhY3ktdHJ1bmsKKzk4MzUgM2UyN2Y5ZmM3NWEyOTBmNTFmYTIyNzVjYzFmZjQwZmU5YTA4ZmZiMSBsZWdhY3ktdHJ1bmsKKzk4MzYgMTQyMWFjZWFlMzQ2NTA0NWE1Nzg3ZGU3NTExMTc4ZjdhYjc4ZDVkNCBsZWdhY3ktdHJ1bmsKKzk4MzcgZDcwMDg2YjA4YTBmYWYwMWE2ODljOThjMTE2MmI5MDFlMWYwYjcwMCBsZWdhY3ktdHJ1bmsKKzk4MzggMmEwNzI1OGIxZjRlMDg2Y2Y3YjMxOWI2MTE0NTVkMDRmZGYwZDc5YiBsZWdhY3ktdHJ1bmsKKzk4MzkgNjIxNDQwYmI5OGI5YzI2MDg4Yzk4YzEzMTM1MzlkN2ViODM1ZTEzMyBsZWdhY3ktdHJ1bmsKKzk4NDAgODVmZjIwNDZlMzdmODFjZDg0ZTAwMTBhZWEwOTE4NTlhMmNjMzQ5MiBsZWdhY3ktdHJ1bmsKKzk4NDEgZjRhNDcyM2I5NTUzMmFiOTA0YWY2NjAzODRiYzcwNDgxOGVmMjgyMiBsZWdhY3ktdHJ1bmsKKzk4NDIgZjFjODhkMmQxMjViZmQ0MzA2ZGQwNjU4Y2ZmYjg5OWQ0NTAzNDk2YiBsZWdhY3ktdHJ1bmsKKzk4NDMgMTg3Yjg5Njc1ZGRhZTQwYzQwNTA2Yjg2NzM1NDllYjcxOTQ5YTNhNyBsZWdhY3ktdHJ1bmsKKzk4NDQgNzE3YzNkYWNhMDhlOTUzOTM3ODg5OTgyZDkyYzE1YWI1ZGY2MWZiNyBsZWdhY3ktdHJ1bmsKKzk4NDUgMGM3OWNhZmVjNGJjNTUwOGM2ZTZlMzA3MjFkN2IyMjk0YjU2NjA2NCBsZWdhY3ktdHJ1bmsKKzk4NDYgMjE2NTdiYjBiZTM1YjRjNzFkY2M4MzQ0OWYyZjM2ZDIzYTJlYmMwYiBsZWdhY3ktdHJ1bmsKKzk4NDcgZmVkM2NmNzI2ODNkYzE3NDdlYzNjMmM0Yjk2MTU3NjIwNTQ2NTdiYyBsZWdhY3ktdHJ1bmsKKzk4NDggMWY0NjI1ZmU2NmUyY2E4Y2UwYmE4YmYyMzk0ZDI2NzA1MTdjNjExOSBsZWdhY3ktdHJ1bmsKKzk4NDkgZjVhMTg5YWZiY2Y5OTRkZDlhMTQ1ZGI4ZjI0MDU4Y2NkMWIyMTcwZCBsZWdhY3ktdHJ1bmsKKzk4NTAgMWU2NmM0ZTMxZDE1MGFmZDhiMGI5ZTViZjIyZTU2ZTlkYmYxYTdjMSBsZWdhY3ktdHJ1bmsKKzk4NTEgODk1NTllZTg1ZTU0MGQyZWU0ZjA4NWU2YTlhYmJmYzA5ZGEyYmYyNyBsZWdhY3ktdHJ1bmsKKzk4NTIgOGQxMWIzNjcxZTVkNjE4N2Q5MzdlNjg4MzhiODViYzVkMTI3ZmZmYiBsZWdhY3ktdHJ1bmsKKzk4NTMgMDAzMzhhODEzZGNiOGJiZTFjMjdmNTk0NGVhZTQ2OTk0MmI3ZDBiMyBsZWdhY3ktdHJ1bmsKKzk4NTQgZmM2YmU3YWUwMTJmNDRjZDhkMjQwNzUyZDY4MmU5ZmFiMTgyMjlmMiBsZWdhY3ktdHJ1bmsKKzk4NTUgZjc4YWY1YmM3OGVkZGU2NmI4Mzc1ZWQ2NzYwMjMyZTE0NTJlNTZkYiBsZWdhY3ktdHJ1bmsKKzk4NTYgMGUwZTg4ZjhlMWFkNTFmYWZkMzYxYjBkNDljZGI4ZTY0MGRlZjkyYSBsZWdhY3ktdHJ1bmsKKzk4NTcgZTYzZjJhZGZhN2NjODQ1ZTk5MTkwMmQ5YzUxNGIyOWQ0M2UxMjA2MyBsZWdhY3ktdHJ1bmsKKzk4NTggNjJhYzU3ZGU3YWRiZTQ2Y2RlOGVmMDg1OTY2Y2VmMmFjZWIwZTlkMCBsZWdhY3ktdHJ1bmsKKzk4NTkgMTA4NDBjMzczN2E3ZGQxMDkzZDJhYjg2MDA0M2ZlMjg5NTg3MTA2OCBsZWdhY3ktdHJ1bmsKKzk4NjAgNjlhZGQ0ZDc3MzZmMTA2NTY5MDE0ZWNlOTk4NzJmNGU0NDZiMDYxNyBsZWdhY3ktdHJ1bmsKKzk4NjEgZjhhNzcyMjRlYmNhZjUxMzRiZmNjMWY5MzhjOTU3Njg0MjEzZjliYyBsZWdhY3ktdHJ1bmsKKzk4NjIgYjU4YjJlZTY1Zjc1ZjUxOTJhM2Q5MGY0MDg1YWY3NGJiMTU3YzBiOCBsZWdhY3ktdHJ1bmsKKzk4NjMgNmRkNjUxY2FmOWUwNjZlM2VjOTFlODhlZGZkNmM3Mzc4MDdlOTg5MiBsZWdhY3ktdHJ1bmsKKzk4NjQgZjQwNDBmM2JkY2M3MzdiNjY1ZjljMjliYTBhNmQ1MjNmZWM3NjQ3NSBsZWdhY3ktdHJ1bmsKKzk4NjUgNDYxMTlkMWU5NDEzZjdhMGNjZTc4ZmVmZGQyNTUyYjhkZTkwYjIxMyBsZWdhY3ktdHJ1bmsKKzk4NjYgZWRjMGQwMjFlNDI3NmRmYjVmN2VmZjI5Y2Y1ODI1OWFjZDQxZjUwNyBsZWdhY3ktdHJ1bmsKKzk4NjcgNTQzYjJiNGFmNTMyNTkxMTc2NDFkNGM0MWUxNmM1ZjE3NzFjYjFmYyBsZWdhY3ktdHJ1bmsKKzk4NjggMjIzNDMzMDM4YTQ3ZTc4NDg1OGY0NGFjZDgxZTI5NjBlMDdlZGI5MCBsZWdhY3ktdHJ1bmsKKzk4NjkgYjY0YThjZWM4ZDc1YzVhYTkzMjVhODcxZGEyNTdiZWNmZDhiOWRhOSBsZWdhY3ktdHJ1bmsKKzk4NzAgMDMzM2U0YTk1MmY5M2RiZGM4YzMxZWM1YjEyYjllYzA3MzA4OTU4MSBsZWdhY3ktdHJ1bmsKKzk4NzEgMDI4ZjcwZDUwOGMwYjYxNWY2MmY4MzQwODY1MGI1NmE0YTA0ODEwMCBsZWdhY3ktdHJ1bmsKKzk4NzIgNzY3YmY4MDA0Y2ZmZGZlZDIyMzVjMDRmNzNmMjI0MTFhODljYmMzZSBsZWdhY3ktdHJ1bmsKKzk4NzMgNzg2ODc1YzRjNjJjNTBkN2MxZTA0MTA3ODBkMzA1ZGRlODllMTc5MSBsZWdhY3ktdHJ1bmsKKzk4NzQgZmJjNzU1MzVlYTkzY2IzZjJiNTQ4NmIxMGIzM2Q0NjViOGM1NmZjYSBsZWdhY3ktdHJ1bmsKKzk4NzUgNDVkNjViYzhhNTUwZjMzNzlhZWRiOTMxNTVmYTcyM2ZlODMyYzNiYyBsZWdhY3ktdHJ1bmsKKzk4NzYgN2FmYzE1ZjA4ZDgyY2FjMzcyMzljNTAxZWQxMmZhODk1Y2Q1MzI4OSBsZWdhY3ktdHJ1bmsKKzk4NzcgYjhkNzg2NTBmOGRmMWQ1YmM1YTcxYzdhMmY0NzI2ZjJmZjIzNzY1NCBsZWdhY3ktdHJ1bmsKKzk4NzggNjg1YzUxMGUxNGNlZWI1ZDRlMmZjNjdlNDI0ZTQxYWMxZTc2NmUyOCBsZWdhY3ktdHJ1bmsKKzk4NzkgOGMwMWNmZWUxNGJhMTkyNjdiMWEyYjBjMzI3ZGU2OWEzMzk5NDkyNSBsZWdhY3ktdHJ1bmsKKzk4ODAgYzc0NTRjYTdkM2FjYzE0M2UwMmEwYjZmOWJlZTA1MjAwNjBiOWFmMiBsZWdhY3ktdHJ1bmsKKzk4ODEgMTg1YzFkNDdjZTdhMDg3NDlhYzczYTk4OGNmNjcxMWUzMzhmMDIyOSBsZWdhY3ktdHJ1bmsKKzk4ODIgM2E3N2JjYTIyNmI5Mzc3ZmYyYThkYTIzMzc0NWJhYzk0MDBiZTg5NyBsZWdhY3ktdHJ1bmsKKzk4ODMgYzUxZjdiNmQyNTU2ZTQ2OTUwOThkZTJmN2NlN2FlYzgxOThkZWUwYyBsZWdhY3ktdHJ1bmsKKzk4ODQgM2E0OWY1ODg2YWNhZWIwOWU2M2JiODRkZmJkOTFjOGQzMmExZmQ3YyBsZWdhY3ktdHJ1bmsKKzk4ODUgMmM1NDkwMTQ3MWY1ZDkwNGQwYmNhZjZiMzg0NWQyYWQzMDBiOTdlNCBsZWdhY3ktdHJ1bmsKKzk4ODYgZDg4YmY3NjcxNDU4MjVhYjRjNGE2ZGI5ZDBjOGZkZWI3YWJmNTkzMSBsZWdhY3ktdHJ1bmsKKzk4ODcgZGZhMjQ3NzY0MzIzNzAyNDU4YWIwOTk5ZjE2ZjZjYjY2MzI0Y2MxOCBsZWdhY3ktdHJ1bmsKKzk4ODggZDc1ODg0MWE3NjYxYmM3ZjNjODA4Y2JlNzMxNDBjNDczZmI5NWI5MSBsZWdhY3ktdHJ1bmsKKzk4ODkgYWQ4OTFmNmExOWVlYmE0ZDMyNTE4NzIwZDc5YzU4NDIyN2VlNjRmYyBsZWdhY3ktdHJ1bmsKKzk4OTAgMjk3YmVhMjMzZTAzMmZiZGY3OTM3YWI2ZDg0OTM0MTY3ZWRiMDg3NiBsZWdhY3ktdHJ1bmsKKzk4OTEgZGVkY2U5YjY4NzQyNDA1MTg4NDAyNzBmNzhkOTI0MDBhMWFiZWQ5MyBsZWdhY3ktdHJ1bmsKKzk4OTIgNjU4NDhhN2M3N2I5ODI1MzFhNmU3ZGM5NzBmMTFiZjY5YjllNTk1OCBsZWdhY3ktdHJ1bmsKKzk4OTMgYTE0MzVjN2QzMzliN2ZjMjEzNzYzYjNiY2UxMGY0NjE4YzI1ZDA0ZCBsZWdhY3ktdHJ1bmsKKzk4OTQgMTNmMjliNjJhMjA5NTM4ZmQ1NjI4YWMzNjY0MGVhNDI2NzkzMzNjYiBsZWdhY3ktdHJ1bmsKKzk4OTUgNjI1NWRjODYxZmNmMTM1M2ZlMmFkMjYyNTY4YzFhOGFkMmNiMDY0NiBsZWdhY3ktdHJ1bmsKKzk4OTYgYjFmMTk1Yzk3ZWY5OWE0ZmM2ZjI0OWVlZDFhNmNkNzg0NWM0YWEzMCBsZWdhY3ktdHJ1bmsKKzk4OTcgN2NhMmMzZDg3NjYyMDZhZTI1ZjU0NzhiNDAzOWMyZmM1NjFkNTA2MyBsZWdhY3ktdHJ1bmsKKzk4OTggM2Q5ZjUxMDUwYWJjYTQ1YjcyZTk2NzRkNzYyNzQ5NGFjNjljMGJkNCBsZWdhY3ktdHJ1bmsKKzk4OTkgNDM5Mzg5Nzg1MmIyNDQ4NmIyMzkyMWQwZDRjMTk1NDIzZDI0OWUyZiBsZWdhY3ktdHJ1bmsKKzk5MDAgMmQ1MDg4MjJlN2Y2ODg1YTgzZTM5M2U4ZjFhZGFhNWM2NTliNjk4NiBsZWdhY3ktdHJ1bmsKKzk5MDEgNmU3M2Y0MTY4YjA2MmVjYTVmNzdhMDdiNTU4ZjIzYTE3MzEzMDk5MSBsZWdhY3ktdHJ1bmsKKzk5MDIgMTFlOTMzN2NkYTNkMTQ3ZWU2ZDRlMDJhN2RkMmQ2NTgzZTJjNmIzOCBsZWdhY3ktdHJ1bmsKKzk5MDMgMjliZGJlMDM5ZTA1ZWM4NWFkNzk0NWIwMmY2Y2Q0MjEyNTU4NTJhYyBsZWdhY3ktdHJ1bmsKKzk5MDQgYjNlM2RhZTliNjEyMjQ0MmQxNDYyMjFiMDRiMzMyOWFlZjVlOTE2OSBsZWdhY3ktdHJ1bmsKKzk5MDUgNWFmN2QzZGE4N2NmNmFjYjc5MjI2MDJjODA3MmZhMjlhMmRmMmU3MiBsZWdhY3ktdHJ1bmsKKzk5MDYgM2YyMjg0MzQ0YTQxYmEyNGY3NWQwNTZmZDAzY2M4ODZmODYxYTUyMiBsZWdhY3ktdHJ1bmsKKzk5MDcgODNlNzc1OWU3Mjk3ODY5ZGRkYTFjZDE3NzQyZDFlNTY0NWNmNmViNCBsZWdhY3ktdHJ1bmsKKzk5MDggN2RmNmYwNDUzNDY5MTc3Y2QwOGZjYTU4YTdlYjI4YTkwMzAwMDJkMSBsZWdhY3ktdHJ1bmsKKzk5MDkgYTlmYmYyMWFiN2NlOWNlNzkzNmU4YTNjYzU5OTQ1Y2RlMDg0ZmI4ZiBsZWdhY3ktdHJ1bmsKKzk5MTAgMzY1NTI2YzRjZjhiYjMyMzg0NjY1OTRkMDczMjNkY2UyMDU4MmVhZiBsZWdhY3ktdHJ1bmsKKzk5MTEgNGY0NWRjY2RhOTZiMjg3NDdlMzNkNDFlMTU0ZDViZDFjYTRiNDNiNSBsZWdhY3ktdHJ1bmsKKzk5MTIgM2RlMGNiODJlNjFhZTY1MWJlMDgwOGU2MjAxODkwOTVlZGVjZDc2OSBsZWdhY3ktdHJ1bmsKKzk5MTMgY2JhY2QxYmU3Mjc1YzAwZjNjNjNiOTVlYjVhMzg0Y2YyZWIwMDBiMiBsZWdhY3ktdHJ1bmsKKzk5MTQgZDE0NjViNWMwYTA4OTRlMTU1MTFkYzE3YmFiYzNiNDE3MmY0MjBlZSBsZWdhY3ktdHJ1bmsKKzk5MTUgMzc0MGZmMmVlMDUzY2E5M2Q4OTA1YmVjNTUwYWE0NjZiOWEyODllMyBsZWdhY3ktdHJ1bmsKKzk5MTYgY2QxMTY5MGNiMTRiMDcyZTcwZjI1ZThjM2ZkYTc0OGExMWI5ZDE4MSBsZWdhY3ktdHJ1bmsKKzk5MTcgYTY0Yzg5ZGFlMThkNjBlNTRhODJlZWFkZTMyODZhNzRmNmIzMDQxOCBsZWdhY3ktdHJ1bmsKKzk5MTggNTkwZjYyNTRmOWE5YWVhYTQyMDIzZWRiNTY4YmU4ZWIwNzI1ZGE3YSBsZWdhY3ktdHJ1bmsKKzk5MTkgYTgwNTliOTZiYzM1NWFhOGI2MmZlMTY1MzdjZmMyMGU5MzRjZDMxNiBsZWdhY3ktdHJ1bmsKKzk5MjAgMDUxODlmN2NkYmViMTg0MTE4ZDYxNjhhZDMzMWY5NTBjMWE5ZjA2OCBsZWdhY3ktdHJ1bmsKKzk5MjEgOTgxNWIxOGIyM2UzYjY4NWE5YWYyMzU0MmI1M2NiOThkMWIzNjc5MSBsZWdhY3ktdHJ1bmsKKzk5MjIgMzcyMGU5OTZlNTUxMjczOTE0MGRiYTI5OGM5ZDFjYjI1NTAzOTI3MyBsZWdhY3ktdHJ1bmsKKzk5MjMgMTY2ODQ5OTIwNmRjZmJiNTgyZTdlNTJhNjM0OGE1NGQ0MGY1NDM5YSBsZWdhY3ktdHJ1bmsKKzk5MjQgMjkzM2ZiMzRmMzMzZmQ1MmMxNzM5MjBmYTk0ZjA1NDBlMTg5MGI2MiBsZWdhY3ktdHJ1bmsKKzk5MjUgODI2YzcxODAxOTExY2IwYzYzOTdkODk2NGFkNjYxNDhmZjhlNDYzOCBsZWdhY3ktdHJ1bmsKKzk5MjYgYzliNjg1MGM0MzM2YTRjZGFmYTJhM2Y1MDAyZWRlYmFjNGI0ZjE3OSBsZWdhY3ktdHJ1bmsKKzk5MjcgNWVkY2ViOGYxZmFiN2FjNjgwYjE5YTljZDQ5YmQ1NWJjMzAyZjJmMiBsZWdhY3ktdHJ1bmsKKzk5MjggMGQ3Njc2MTRjOTQxZWIxMGY1ZWMyOTMyYzQzYWM3MWJhOWFkYmExOSBsZWdhY3ktdHJ1bmsKKzk5MjkgMGE5NTQxYTg2Njg5MDk0ZGU0MTNmNGVjNmMwMGNkZTJkOGViNTlmMyBsZWdhY3ktdHJ1bmsKKzk5MzAgMjNjYzM0MmVlMTUwYmE4NDAxZmJjM2MzOWJhZmUzNDBhMzVhMDBjYSBsZWdhY3ktdHJ1bmsKKzk5MzEgM2MzOGM4YWQ1NjIzZmI0MGQ0YWZkYTI2MTMzMjVjMzc3YmU5YjAwNCBsZWdhY3ktdHJ1bmsKKzk5MzIgMWI0YTJlMzhhYjVlYzY3YWUzZTUxOTBlN2Y4ZWQwYjI1Mzc2ODYzMCBsZWdhY3ktdHJ1bmsKKzk5MzMgNDgzMjg2ZTIxOWUxZjY0NDQ2M2I0ZDJiZDdiMmYxMjZhNWYxMWFlNCBsZWdhY3ktdHJ1bmsKKzk5MzQgYmQwNWFiNDczMWY3NmIzY2U0NGQ0MzBjNTNlNzcwZDRiNjk0Njg4OCBsZWdhY3ktdHJ1bmsKKzk5MzUgMWE5YjA5YjNjYWY4YWU1ZTI4NWI3MDRkMmQ5YWI3YjRhNGRhYWViNCBsZWdhY3ktdHJ1bmsKKzk5MzYgZWM5NWU4ZGFlNTA0MTQyNWFlNTdjYTU3YzE5NmYwZTRlNDQ4MGU3OSBsZWdhY3ktdHJ1bmsKKzk5MzcgNGFhNDcxMGQ4OTRjODI2OGY0MmU2YTQwODE2OTU2YjZkNWI2Y2Q1OSBsZWdhY3ktdHJ1bmsKKzk5MzggYmQ4MTUzOGQ0ZGRmZDQ3NjE3ZmRiNDViYTM5ODU4YTlmZGE2NGNmMiBsZWdhY3ktdHJ1bmsKKzk5MzkgMDMxZGU4NTQwYTdlYTA1ZGI1NGQwMWZhY2Y1MmY4ZjQyM2ZjZTBjZSBsZWdhY3ktdHJ1bmsKKzk5NDAgOTU0MWI5YjA5MzdkZGYxNGMwYjY0OGIxY2JlYzIzMDQ3MmJhNWY1ZiBsZWdhY3ktdHJ1bmsKKzk5NDEgODI5NDdhMTkyNmY3ODJkZWZiZTBjZDc1Mzk3YzU3NjA5OWU1NmMxMyBsZWdhY3ktdHJ1bmsKKzk5NDIgMDIxMjM3YmE1MDA3NDI1ZTAyMGU3Y2U5NjhkODkwMzk1NTg2MGEyYyBsZWdhY3ktdHJ1bmsKKzk5NDMgN2IyZmQ0ODZlZmVlMWNkOGZkZTIwYWZjYzE2Yjg4Mzc1YmQ2ODAyMyBsZWdhY3ktdHJ1bmsKKzk5NDQgY2IxYTU3N2MwMjM5Y2JiMGQ5Njg3OWJjMDRmZTI5ZTM1NmYzMGJlMSBsZWdhY3ktdHJ1bmsKKzk5NDUgMDM2MGUzZTMwYTJlNDBjNDkyMmY3OGQ1ZDcxODE4MmZhNTU5OTdmMSBsZWdhY3ktdHJ1bmsKKzk5NDYgMTQ5YTU0Nzk4ODk2MWI3YWNlNjI4YWVlYzE2ZWUzYWJkY2M2MTZmNSBsZWdhY3ktdHJ1bmsKKzk5NDcgYWQzZTRlYjM1ZGE3NzIzOTBjNTBjMDI5Mzc4NmI4NmZjOWEwNmUxOSBsZWdhY3ktdHJ1bmsKKzk5NDggNmY4NjllNWQzM2NjYmY3NjM0YjdhMGJlNWVhYTQxMmFmODJlZmUyNiBsZWdhY3ktdHJ1bmsKKzk5NDkgODgxYTVlNjcxNGRjYjcwYTVjZTA3OWY1MjFmZGJlMDcxZDMwZjBlOCBsZWdhY3ktdHJ1bmsKKzk5NTAgNmJiNTA2YWQ5Njg0OGFjMmEyOGNmNTE3MGI3ZjU3YzliZmRmYTJmZiBsZWdhY3ktdHJ1bmsKKzk5NTEgMmNmMWNhZTliNDZlZjM3ZjAyZDVjNzg2NGRjMTg4NTBkMGFjY2JiYiBsZWdhY3ktdHJ1bmsKKzk5NTIgMDc2YjgyZTA0MGE1YzkzNTRlNGI4NWRjY2IyMWUyMzk1NmNkZmZhZCBsZWdhY3ktdHJ1bmsKKzk5NTMgNzg0ZmVmODM3YjUyZGM4ZDYwMTgxZGNhZjUwYzhjMDAyZmYzNDc3YSBsZWdhY3ktdHJ1bmsKKzk5NTQgY2E2NmEyNTM2Y2Q1NDlhNTk3ZDk2YjE4MjU0ZTAzZjQ3ZjQ5NDk4MyBsZWdhY3ktdHJ1bmsKKzk5NTUgYjk0MjFlMTdkZGY3NjMxZDA3ZmQyM2YwYWZkNjFhYzViNmM0Y2Y3YSBsZWdhY3ktdHJ1bmsKKzk5NTYgODA3MzliMGJjMzAyNmM5MmE4ZDIzZDZhNGJhODNlZjhmNmQ4OTU3MSBsZWdhY3ktdHJ1bmsKKzk5NTcgYmZlNTdlZmFkNzUxZmFkZmJlOWIyNjVjZjU2ZTM4NzZiMGRiOTY1MCBsZWdhY3ktdHJ1bmsKKzk5NTggNTVjM2ZkMTg1M2NlYmIyZjRjZTdiOWZiYTNhMDY4MzQ2YzdmNDY4ZSBsZWdhY3ktdHJ1bmsKKzk5NTkgY2NhMzlkNzE5YWJhNmU1YzA0NTk2ZDM5NTQ2MDc1MjhkMGQzMjYxNSBsZWdhY3ktdHJ1bmsKKzk5NjAgZjAxZmYyNmZhY2FlYjg3MzgyYTAxNDVkYTlmZDdlYzZlYTM5YWNhOSBsZWdhY3ktdHJ1bmsKKzk5NjEgYmE0YTAyYzBlOTBjNzkyYWZhN2UxYTdjOTFkMzM0NWU0YzEwYjgxMyBsZWdhY3ktdHJ1bmsKKzk5NjIgNTgwZjZjOTIyNzBiYjg3MDE2OWEwYWVmODc3ZWU2ZjRhM2E1NWIyMiBsZWdhY3ktdHJ1bmsKKzk5NjMgMWRmYzE1ZTMxMTMwNDNkNjAwOGVmZWU4YzI5ZmFkZWYxZDcwYzQ1YiBsZWdhY3ktdHJ1bmsKKzk5NjQgNGNhZTJkZTMwYjU3ZmM1ZTBiYjNkNWNjZDZmYzM3ODMxN2QzMGVlMyBsZWdhY3ktdHJ1bmsKKzk5NjUgMDVkMGI2ZmJlYTliNWRjNjdjZWVhZDM2NTJmZGM0ODI2NzI5MmM0YiBsZWdhY3ktdHJ1bmsKKzk5NjYgOTgzNDVhYTFkNWZlZDMxNjMzZmM4MmVlZDE5ZDkyNzkyMTQ2MGI3NyBsZWdhY3ktdHJ1bmsKKzk5NjcgNDI3YjgxYzI0NTJmZTFkNzJmYTEwMGE0YjcyNTBiZDQwYjRiMWJhZSBsZWdhY3ktdHJ1bmsKKzk5NjggM2RmYzM3NmU2ZjFhOGJlNGNlOWEwMTMxZmM5NTBlNmE4YTcxNGIxMiBsZWdhY3ktdHJ1bmsKKzk5NjkgN2YyODk5N2IyYzEwNmZjZTIzYmVlMmJjMWVkZjI2ZmEyMzc4OTRlMyBsZWdhY3ktdHJ1bmsKKzk5NzAgNTQ0NTZmMDhlYmFkNzU1MTJkNDMxYWVhMWExOGFkY2E3MWE2ZWFhOSBsZWdhY3ktdHJ1bmsKKzk5NzEgNjg1N2FjYmUyZTc0YjAwYWY4NjBhZjJiYTg3MWY1MTI5NzViMzlhZSBsZWdhY3ktdHJ1bmsKKzk5NzIgYzRkNTZmYzYzZDhmMDM4YjRhYjQxNmMxNDc5OWJlM2I2ZTU4YTZhOCBsZWdhY3ktdHJ1bmsKKzk5NzMgNmIwMjY2Njc5Zjk2OTUyNThkN2ZhNDEzOWM3MDlhOWY4NjQ1N2UyNCBsZWdhY3ktdHJ1bmsKKzk5NzQgZWM3OTc2ZDJkNWU5ZTQxM2UyMTg4OTJlOTZkN2U3OWMyYWM4NjgxNiBsZWdhY3ktdHJ1bmsKKzk5NzUgNWUzOTAwNzg0NjBhZThlNDJiM2Y5NWQzNjY4N2MxMzY0ZjliODcxZCBsZWdhY3ktdHJ1bmsKKzk5NzYgMTkwNmE3ZmM3NTA5NGQ2ODI2YTNmY2E1YjJjYjJhNWE4OWQ2MTNhZCBsZWdhY3ktdHJ1bmsKKzk5NzcgZDk1OTFjOWIyYzVmYTRkMTVhNWJlOTI2YTYwNDkyNmJiYjI3N2Y5NyBsZWdhY3ktdHJ1bmsKKzk5NzggOWRlM2NhZDUwOTA1MGMyYWM2YzQ2YmViYjkxM2RhM2UxMjQ5NDIwMyBsZWdhY3ktdHJ1bmsKKzk5NzkgZDE3ZGIzZWJmYmMyMDVkYzE4NTc2NGMzMjk1ODNmYTIyYzU1MjRkNCBsZWdhY3ktdHJ1bmsKKzk5ODAgZjIzZGIzYjY1YzgzODFmYmVkN2VkNzQ0NGY2MDZiZmQ4OWE5NTk4YSBsZWdhY3ktdHJ1bmsKKzk5ODEgNzU0NTg2MDM5YzExYjFmOWNmYTQxMGZkMjdmMjQxOTJmMWU2NDY2ZCBsZWdhY3ktdHJ1bmsKKzk5ODIgODk0Y2ZmZWI4OWJhNTM1MTdkNmFjZTZmYTZjMDYyNzczYWYyMDI0NSBsZWdhY3ktdHJ1bmsKKzk5ODMgZWY5ODBlMTdiNTkzOWNhYmFmNjIxODA0YTgwMzQ3OThkMjM2MWE1NiBsZWdhY3ktdHJ1bmsKKzk5ODQgNjdhMmI5NmYwMTg5NzM0OTQ2YWRjM2UwMjVjMzcwNGU4NjM2ODE1NCBsZWdhY3ktdHJ1bmsKKzk5ODUgNTEwZTUyNDQ2N2NlNjI3M2RlYzJiZjQ0MzgwM2M2OTgxNDc0MTM1MSBsZWdhY3ktdHJ1bmsKKzk5ODYgZWRhMGNhMTM4YjNkODRiYTkxMTk2MzM4ZDBlNWVhOWUwYWMyYTQ0OCBsZWdhY3ktdHJ1bmsKKzk5ODcgYjVkNTJjNDE1YjE1ZTllNGNmMGRkZjhjNWM3ODI0NzI3ZTI0ZDNiYSBsZWdhY3ktdHJ1bmsKKzk5ODggZWM0NzM1Y2UxMzYwODQzZGNjNmU3N2EzMGY3ZjMwMWQ3OGJhNTAzMiBsZWdhY3ktdHJ1bmsKKzk5ODkgMzVhM2NjMjRlZjA0MzI3YTZiYTZkYjYwZTA0MWFjNDllZWEwMWRlOCBsZWdhY3ktdHJ1bmsKKzk5OTAgZTNmMzdhMjYwMmQ1MDQ5MDViYjkyNTg4MWI2Mzc2Mzk2ODM2OTZjZCBsZWdhY3ktdHJ1bmsKKzk5OTEgNDg4OGY0NDg0NTBmMjNkYTAyZTJkNjgyNTVkNjc5MjlhY2RiNGJiOCBsZWdhY3ktdHJ1bmsKKzk5OTIgOTcwZTllMDU4Yjc2MWM0Yzg0N2MxYjQ0N2NkMjJkZmNhMDI5OGY3ZCBsZWdhY3ktdHJ1bmsKKzk5OTMgZWMwZjk5ZjFhMmZkYjBhYjlmNjlkMzBmOTBiODRkNDQ0ZWMwOThlZiBsZWdhY3ktdHJ1bmsKKzk5OTQgYjYwNDI0YTU2Zjc0NGU1ZWU0MmJmZDRmZTE5YWMyY2E0MTI3M2EwMiBsZWdhY3ktdHJ1bmsKKzk5OTUgODNjMmE1YTQ1YTQxYjJmYWRiOTM5YTNjM2I2YTBmZGIyNTM1OGNmYSBsZWdhY3ktdHJ1bmsKKzk5OTYgMzEyY2E5ZmRhY2ZmMjc1YmU5MjA3MDQ0OTZhOTVjMjViNjYyYzZkMCBsZWdhY3ktdHJ1bmsKKzk5OTcgY2NlODk5NGQ1MmNmMGU4YTgzMDA0MzFmZTc2OTZlN2RiODgyZjI3MiBsZWdhY3ktdHJ1bmsKKzk5OTggZjlkYTM0ZjcyNjhiNTFjODcxZjJmMTQzZGE4MDA2NDIyZDRjMzc5NSBsZWdhY3ktdHJ1bmsKKzk5OTkgZmJjODkyMjQzNDc3ZjZjY2I2ZWEyM2FlM2JjZGU1NGEwNjRmOTc5NyBsZWdhY3ktdHJ1bmsKKzEwMDAwIGRjMzc0NzExYzg0OGNkNjYxMzdlOWI2YTZlNmViNGMxN2MwNGZhZTEgbGVnYWN5LXRydW5rCisxMDAwMSA1ZTRjMjg5N2U2MjU3NWU5ZTQ2OWEwYWYwMDU5ZjdmN2NmZGI1NmU2IGxlZ2FjeS10cnVuaworMTAwMDIgZWVhYzM2YmZlMDFhYTNmMWZjOGQxZDFmZDVmZTBlYTg3Mzg0NWQwNCBsZWdhY3ktdHJ1bmsKKzEwMDAzIDg4OTkyNjk2YjllOGQxN2Q1NWE4NGRlMzMyYjU5YjljN2Q3ZDU3NjggbGVnYWN5LXRydW5rCisxMDAwNCA2MGU3YjAwMGYyNzM4NDYyM2RjMTQ3ZDUyYWFjYzMzOTliYzVkMzlhIGxlZ2FjeS10cnVuaworMTAwMDUgMjZhODc3MWE0Y2ZkMDA5Yjk2ZDczYTU4ZWI1NWUwMDcyZThjOWViNCBsZWdhY3ktdHJ1bmsKKzEwMDA2IDNjYWYyMzk3YzUwODE1NTNiMzNjZmI3ZTliZmI1YTllMmU4ZTkwOWUgbGVnYWN5LXRydW5rCisxMDAwNyAwMzQzOTg3MzZlNjRjNDE4Y2JkMzM3Nzg3NTVkZmRiZGUxMWU0NTllIGxlZ2FjeS10cnVuaworMTAwMDggODkxMTA1ZGFjOWI0MTg3MTQ0ODgxNzliZTI4MTllZDFjYTM1YzRlMiBsZWdhY3ktdHJ1bmsKKzEwMDA5IGI0NjYwYWQ3ZGM0MWVhMTc0Zjg5NTk2M2VlNTI4NGFjMDMyZGNmMWYgbGVnYWN5LXRydW5rCisxMDAxMCBiZjIzNmZiZjExZGFhZTNhMjJjMTE0NjdlMGNiNGI3M2EyMTY0M2I5IGxlZ2FjeS10cnVuaworMTAwMTEgZWE4MTg0YmZmMTJkYTVjMGQxZWE1NGJjODE2MjM2YjYzNzEzYjBmMCBsZWdhY3ktdHJ1bmsKKzEwMDEyIGY5MWQ1YTAzMzliZjNhYTM4ZWE5MDRmNzI4NTY0Nzk1NDE4YWFkOGIgbGVnYWN5LXRydW5rCisxMDAxMyAxM2I2MGFiZGI3MGQxOWVhMDY2ZjIyMDNjMTE2M2NlZTRiNzM2ODUxIGxlZ2FjeS10cnVuaworMTAwMTQgZWVkYWM1MGQ3NzQ0M2IwYmJkY2NmOWM2ZDUyODcyMGZjZmUxMWZiZCBsZWdhY3ktdHJ1bmsKKzEwMDE1IDNmZjZiM2QzYzRkNWUyZjNmNWRiN2JjZmE5ZjQxYjFkYzU3MDM2MjUgbGVnYWN5LXRydW5rCisxMDAxNiAwMWE5Zjg0YTI2OWM5ZGEwYTliZTAxZjBhYmMyNzhhYTZlNDlmZDRlIGxlZ2FjeS10cnVuaworMTAwMTcgNzgzMGUxZGU5ODE3NDU3ZWIxZmM0MmRiNzUzYmYzYmQ5MGU5NDZlNyBsZWdhY3ktdHJ1bmsKKzEwMDE4IDlkYWUwYWIzODNhNDk4ZTFiNTcyNjY4NDAxODY5OGE3YjdlOWE1NzcgbGVnYWN5LXRydW5rCisxMDAxOSBjOWY0YWEyYzQ1ZWRkNjdmZDBjNGM0NWI0NDBlM2FhNDg0NDE4NTJkIGxlZ2FjeS10cnVuaworMTAwMjAgY2ExNzBkNzYxZjA4NmUzMDVjOGI1ZGI2YzcwNzU3MWYxMjFmYjMwNCBsZWdhY3ktdHJ1bmsKKzEwMDIxIDQ4ZjdhYzQ1MmQ5OWM5NGI5MzMwMzFkN2I3ZTlkOTZjNGE2OTdkNDEgbGVnYWN5LXRydW5rCisxMDAyMiBkMjAyYzgyZDNjNTcxNjI2ZDM2ZjFjNDQwZjljNWY1MWZjMWM5ZjBhIGxlZ2FjeS10cnVuaworMTAwMjMgYzAxMzFmYWUwNmU5ZTA3MjExYzg0NGE5MGRlYTRkNzJlYzg2MTdlYSBsZWdhY3ktdHJ1bmsKKzEwMDI0IDY0MjFlYTFkZTI4Mjg3YjI0ZGQ2NGNjN2IyNjQ3YmZmYWM5NTMxYmMgbGVnYWN5LXRydW5rCisxMDAyNSBkNGQ4NGI1NGM0NGQ4MTg5ZTIwM2ExNDAzZDM4ZDc4OTlkMDliYTQ4IGxlZ2FjeS10cnVuaworMTAwMjYgN2ViMTliMWNlODRkNzRmMmUyYzk1NWE2MzBjNjlhNTk3YWNjNDhkNSBsZWdhY3ktdHJ1bmsKKzEwMDI3IDRiMTFjYjk2MTA0NmEwYzRkODcyZDVmNjJjY2E1MzA5OWI0MzE0ZjcgbGVnYWN5LXRydW5rCisxMDAyOCA2OTg2MDgyMWNhMWQ1ZGE2NjUxZGQ0NjZmOWIyNGYzNjdkZGNhZTU1IGxlZ2FjeS10cnVuaworMTAwMjkgZDM0ZmUzMGI5NWU4NTY4MjEzODkzY2RmMDdjZjNjMDM5ZThkMzg3YiBsZWdhY3ktdHJ1bmsKKzEwMDMwIGM4ZTVmNzA0NjIzZDg5MDExZjg2ZmZmYzI5NGIwOWUwNTQwNTUyMzEgbGVnYWN5LXRydW5rCisxMDAzMSA4MmViOGIzZGY2ZjgyNjU0M2JiZjk2MWY3MGU1MjU0YzFlOGMxZWIwIGxlZ2FjeS10cnVuaworMTAwMzIgNWRmNjU2Y2QxMGFkZTFkMzViNTc2YzM2M2FkMmMxMjgxMmNhOTA4OCBsZWdhY3ktdHJ1bmsKKzEwMDMzIDVhZWNjMjUwOWU0NmQ5ZjRiYmM4NGVhYjBhN2VjMTJjMjQ4YzE5MzAgbGVnYWN5LXRydW5rCisxMDAzNCA3MzM5NTA4MDRhMGI0MmFmZmEwYmZiN2ZiM2I3MGU4YWQ2MTZhMjY3IGxlZ2FjeS10cnVuaworMTAwMzUgNjU5ODM4NGQ1ZjRjYmVkOWM2ZmRhMDJlNDI0Mjc2N2FkNWM4NjAyMyBsZWdhY3ktdHJ1bmsKKzEwMDM2IDIyZGU1MTE2ODMyZmQ2NWUxOWI5NTcyYzNiMTc0ZThmY2E4YjJmMjAgbGVnYWN5LXRydW5rCisxMDAzNyBjMDJhZjFlNzEzZWRjOGE0NTY0NzNiZWFlMTQ0NzIxYmU1Yzc5NTAzIGxlZ2FjeS10cnVuaworMTAwMzggYTQ0N2IyNjhjNzczMmJkOTA4NjgyYzExNTI3ZmQwNjA1MTkwMWFmMiBsZWdhY3ktdHJ1bmsKKzEwMDM5IGNjN2UxMjZmMDA5ZDM4OWQ4M2IyNTRlNGQ5M2EwOTE3ZjBjMmQ4ZmIgbGVnYWN5LXRydW5rCisxMDA0MCA0M2Y0N2I4ZTM5OGRhNTNkYTk5YTg2NGZiMzFlZDkyZjcwNDk1MjBiIGxlZ2FjeS10cnVuaworMTAwNDEgNTliMWFiMDFjMjg2ZWYzMTdhNThlNjdlZmIyOWFjNTM2OGExYmRmZCBsZWdhY3ktdHJ1bmsKKzEwMDQyIDFhOWY5YTVkZjA0YjE2ZjBiYzU3ZWUxZTRiNGUyNTA1MTM0NmVkYjYgbGVnYWN5LXRydW5rCisxMDA0MyBiYTEwYzQyOTk5YjhiY2EyNjljYjIwYWFlNmRmYjE2ZjEyMGE5Mjc2IGxlZ2FjeS10cnVuaworMTAwNDQgMmZmMmU0NTdhYjg3YWM3YWFlMmJiOWIwNzMzM2IzYmYyMDFhMjc3MCBsZWdhY3ktdHJ1bmsKKzEwMDQ1IDAwYWVlNDc0M2Q3YmE2OWVhYTllODUyMDk4MDI0MDQ2NGE4ZGZmODkgbGVnYWN5LXRydW5rCisxMDA0NiBlMTVlODVkOTg3YWY4OWU2NjYwYTliZjllMjBhNTNlOGI2ODlmZDczIGxlZ2FjeS10cnVuaworMTAwNDcgYjljYmYxNzRjNzIzODkyMDg2N2NmY2ZhNTgyZTRjZDZkOWI0MTFiMSBsZWdhY3ktdHJ1bmsKKzEwMDQ4IDhhZWU1MGE5YTFiMWZhNGM3NGM5NWYxN2Y0OGI4ZmVmMTE2NzUxNzEgbGVnYWN5LXRydW5rCisxMDA0OSA5NjhhYWJhMjgxYzUzZjAyYjNmNDVjMTkxNDk1ZmU5ZGZmYWFiZmI4IGxlZ2FjeS10cnVuaworMTAwNTAgYzlmNDE3MTI0ZTBmNzY2NTRiODhhNmYyNGI4ZGVjMzY1N2ZjODY3ZSBsZWdhY3ktdHJ1bmsKKzEwMDUxIGFhMGU4MTk5Y2MzMTgzYjNkODgxNzc4NmE3ZWY5N2RkODdhNDJmZWMgbGVnYWN5LXRydW5rCisxMDA1MiA3ZTdkNmIxYjhhNGIyYmRkNmE2NDcwNWIwM2E2YWZlOWMwYWYxOTYyIGxlZ2FjeS10cnVuaworMTAwNTMgZTY3MTE0NWFiNTA3ZTFkNjgxNzUyYTY2MzgzOTg0NzkyMDgzNGEzMSBsZWdhY3ktdHJ1bmsKKzEwMDU0IDJhMDU2ZDE5M2RkMzdhN2JkNDkxNTAyMjM3MzJlNDU5MDFkMTgxYjcgbGVnYWN5LXRydW5rCisxMDA1NSA4MjdhZWE1ZjU2MjE5MGQwNTAxMzU4ZTJmYjQyOGQzNDM1MDM0NjI5IGxlZ2FjeS10cnVuaworMTAwNTYgMjA0M2M2OWZmMWQ0NTVkODM5MmJjNjRmNWJiNjgxZWVmMjMxZTUzNCBsZWdhY3ktdHJ1bmsKKzEwMDU3IDQyYTIxODA2YjNkMmZlZTVhYzVmNDZhYzk1NjhhNzljZmY0YjI0YjYgbGVnYWN5LXRydW5rCisxMDA1OCBkNWY4OTU2N2I1YTlmNjdkMGIzMjMwNWEzMTc1MmM3YmUzNjFkMmE1IGxlZ2FjeS10cnVuaworMTAwNTkgMGY1NjVjN2ZlNGJiZmU5YjQ3Y2U5YTVkNTkyMTU3MWIyZjY4Mzc2MCBsZWdhY3ktdHJ1bmsKKzEwMDYwIDBhNGI0NTMzOGFjMjg1MjU2ZGRiYmUyMzIzNWY5YTRlMDIyYzU2ZWYgbGVnYWN5LXRydW5rCisxMDA2MSA5ZGUwZDUwNDljYTFiNjVmNzk4YTQ2MjE4ZThiZDRmNmI3MWFhMzE5IGxlZ2FjeS10cnVuaworMTAwNjIgZDJiNWQ5MzI2ZjA5MTU0NzBmNmZiYWQ5OGRiZDI5OGMyNmZjYzFlMCBsZWdhY3ktdHJ1bmsKKzEwMDYzIDJlZjBhY2E5NmYyZDMzYTU1ZmY0YWU3NWNiYjMzNzI5NzRmN2M4OGYgbGVnYWN5LXRydW5rCisxMDA2NCAwNzY1Yjk1OGNjNjdhMTliZTJhYThmNzQ2ZThkNmJhMGJkZTVmYWJhIGxlZ2FjeS10cnVuaworMTAwNjUgZmM3NjBjNjI2OTUwZGU5Nzc4NmI1Mjc2MzRkYTE4NjM3ZWRhNDM4OSBsZWdhY3ktdHJ1bmsKKzEwMDY2IDRiNjM0ZjAyNDNmOTdkMDMyYzEwYmJlNDZjYWQyM2U2MzgyYjI3MGMgbGVnYWN5LXRydW5rCisxMDA2NyBiZDA4ODZlNzhmM2I3ZTJiNGUxNWI3YzhjY2UzM2ZjODYyZjM0ODg4IGxlZ2FjeS10cnVuaworMTAwNjggYjZkNmE4MzRkYjQ5YWYxNWU0NzYyNzJkYTZmYzRiOWU3NTExYzhiZSBsZWdhY3ktdHJ1bmsKKzEwMDY5IDJmMzIzMjM4MTFjNTM1N2NhOWNjNmU4YjY3ZjUwMTRkOWNkNzVlMTggbGVnYWN5LXRydW5rCisxMDA3MCAwOTQ0MDYwNmFhYzU4OGY0OWM2OWMwM2JhYmU4ZDY3ZjQ0YmYwOTE1IGxlZ2FjeS10cnVuaworMTAwNzEgYTE5MDI5Y2Q3NmM1MTU5ZWY1MDBhYWNlYzc0NWYwNDhkYjdhOWEzZiBsZWdhY3ktdHJ1bmsKKzEwMDcyIDk5Y2VmYWE5YzUwOTcyYzViM2IyNWE2ODUyYjcwNzNhOGM1N2QxYjAgbGVnYWN5LXRydW5rCisxMDA3MyBjNDU2ZWJlMzUzMzc0ZGUxZTU1N2ZiNTBhYTMxYjc0NGQ4N2I5MjFiIGxlZ2FjeS10cnVuaworMTAwNzQgYWFiNzYyMjA1MDVlZmRjNjkyZGY0YTM5MjllZDViZWE0YzA4MDIyYyBsZWdhY3ktdHJ1bmsKKzEwMDc1IDM5Yjg0YTNkY2VhYTUwMzQwYjEwMGVjZGQ3YWQ3MzNkYWUzNWI0OGYgbGVnYWN5LXRydW5rCisxMDA3NiA3MmNhYjk1ZDM1ZTU3MDllZTk5MDZjMTQ4NWY3YzQzMmZhNjRlODU0IGxlZ2FjeS10cnVuaworMTAwNzcgMDk0MTU2ODBiZDRmNmM0ODE0MmI5ZDAxYWMyOWM1MTI1OGViNGMxOSBsZWdhY3ktdHJ1bmsKKzEwMDc4IDZhNDUzNTk1ZTYxOWU5ODA3NjVlN2Y3Yzc4NDM0YTY5NmI1ODg3NTMgbGVnYWN5LXRydW5rCisxMDA3OSBlY2FkMjM0Yzg3ZTQ0ZDhlYWMwYzA0Mjc4YTczYWU2OWZiOTFkNDc1IGxlZ2FjeS10cnVuaworMTAwODAgN2Y0YTUwM2NlNThiMjZmOGFjMmI5ZjMyNTlhOGExZGRjODUxNjRjNiBsZWdhY3ktdHJ1bmsKKzEwMDgxIGMwYmY5YjYwYzI5ODBiMjM4YjRlYThiNzFlOTIwMmZiZTIxYTkwYzYgbGVnYWN5LXRydW5rCisxMDA4MiBhNjNkNTUzZWI2NTgyOTJiOWQwNDhjYjkxZGJhOTNkN2JiNjI5ZTQwIGxlZ2FjeS10cnVuaworMTAwODMgNTk0MDdkNDQ4YjZhY2Q5MjBlM2QxYTM3MDQyOGZlYWYwZmI1MDhkOCBsZWdhY3ktdHJ1bmsKKzEwMDg0IGMwYzAyZTkyNjlmM2NjOTU2OTM0ZDAyNzZlMDhiY2Y3ZGFlYjBiZWQgbGVnYWN5LXRydW5rCisxMDA4NSAwMGFkMzA5YmQ1MDgxMGQ4YmRmOWY5MGQxODJkODE0MDI5YWZjY2NmIGxlZ2FjeS10cnVuaworMTAwODYgODkzYTMyMDk1MjIyNTQxZmRmNjkxOGNlZDliNWYzZTJkZDMwYzlkZCBsZWdhY3ktdHJ1bmsKKzEwMDg3IGFmYmJmZThmNTQ5NjcwNGE3YmExOTZkNWViNzA4NmE5MThjNDdmZDggbGVnYWN5LXRydW5rCisxMDA4OCA3MGJjYmNkZGE3NGY2MWE2ZjM1MTVlODJhNDBlYzMyNzc2NTcxYjA5IGxlZ2FjeS10cnVuaworMTAwODkgY2RmODBmNzQ1OGNhMWE3M2Q2MGUyZWJiZGRjY2ZkMzFjNmVlMjAwNCBsZWdhY3ktdHJ1bmsKKzEwMDkwIDQ2ZjJjNGZjOWUzODFhYmEyNjk5YjJhODg4YWFjNmIzMWIyZTQ3YjkgbGVnYWN5LXRydW5rCisxMDA5MSAxOTJlYTk4ODRlYjY3ZGZjYTY1NGIwODcwZTA3ZTgyNzk4YWQwNDgyIGxlZ2FjeS10cnVuaworMTAwOTIgZjM1YjI5ZWI1MmQxOTdlOWI2ZTY5NzUxYWJlNWFmMDVjODBiNzVhZiBsZWdhY3ktdHJ1bmsKKzEwMDkzIGRlYzY1ZmNlYTIxZWI5MWU2NDBmODYyYzZmMTYzZjU5ZGQ3NGJhODMgbGVnYWN5LXRydW5rCisxMDA5NCAwZTFlNGI0YTA4MjEwMjlmNTkzNTQzN2I3ZTcxZDZkNjFlYmE3NTQ1IGxlZ2FjeS10cnVuaworMTAwOTUgMDY4YTY5NDJmZTFhMTJlYTU0YzlmNmQ0OTg0MmY0NWNlZmFiOWFkOCBsZWdhY3ktdHJ1bmsKKzEwMDk2IGEzYTZlYzI1OTk4NjA1M2E2NWM4ZmJmNmM4ZTk4ODdjNDE0ODNhM2UgbGVnYWN5LXRydW5rCisxMDA5NyAyOTNiMGNiMzQ3MDQwNGMyOWEyN2U0MDBjNWJiODJmZmI2NzViZTY5IGxlZ2FjeS10cnVuaworMTAwOTggZWNlNjA0ZWQ2MjI4MTgzYThjOTFjYzk0MWQzMjA2MTY2ODMwMWI5MCBsZWdhY3ktdHJ1bmsKKzEwMDk5IDljZjZmOTQwOTU5NjUwOTBhNzU3NTBhNmNiMzJkZmM2MDZjNWI1ZWYgbGVnYWN5LXRydW5rCisxMDEwMCAwYTIwY2NlMTczNzE0OThkNDczYjQ0YzBmMDMzZmEwZWNhNDRlMzE5IGxlZ2FjeS10cnVuaworMTAxMDEgYzU0ZjFjY2RlNmE5ZGViNjI5ODg3M2JiNmY0ODBkM2EzYzg3YWM3ZCBsZWdhY3ktdHJ1bmsKKzEwMTAyIGE3ODc0MjllODQwYWViMGJhNmNhY2M5YTVhODA3Y2Q0ZmU0ZDhlNzAgbGVnYWN5LXRydW5rCisxMDEwMyAwY2U2NTkwNDdiYmYzMjI3Y2IyYTFhYTQ4MGVjMzZmYWJmOTIzZjk2IGxlZ2FjeS10cnVuaworMTAxMDQgNWFhNzAzN2ExZTNmYjUwZDkzMjI0ZDZiZTAyMWMzYmRiYWNmMjdkNiBsZWdhY3ktdHJ1bmsKKzEwMTA1IGEwYzdhYTA1MjJkZTEwZDlkN2JjMDIzY2YzYWQ4ZDk1NDQyNTU4Y2QgbGVnYWN5LXRydW5rCisxMDEwNiAxNjU0NTYyODI0MTIwZGNmOTliOGY4MjZiMTRmZmYwZjc3YjQwMjRjIGxlZ2FjeS10cnVuaworMTAxMDcgNzk2MGRhMDU0OWM0NzQzZTI5NjRiOTk2ZDhjNmM2ODJiMmIwNjg2NSBsZWdhY3ktdHJ1bmsKKzEwMTA4IGRiMWU1MTRmMTYyOTczMDJkNDU4YzlkYTg0ZDVmMjQyNDkxY2Y4NWMgbGVnYWN5LXRydW5rCisxMDEwOSA0MjJiYmU4ODVjYmY3MWE2MTJmY2ZlY2UwYTVkYmY4MzdiMGViNGMyIGxlZ2FjeS10cnVuaworMTAxMTAgZDIyY2Y2NjZmYTJjODhjNTA4N2EyZGM4MmNhYjAyNGJjN2Y0YmM1ZSBsZWdhY3ktdHJ1bmsKKzEwMTExIDU1MzQ1ZDZkMmMxNDFjMDJlMjBlMmEyM2ZjNWY2MTkzN2RkZGM2NGUgbGVnYWN5LXRydW5rCisxMDExMiAzZDE1OTBiNWUzZGRmZGVlMmIyNzgyN2Y2YjRkZjkzYjJiZGRiYmE1IGxlZ2FjeS10cnVuaworMTAxMTMgYmJkZDI4ZDM2ZjQyOTc3ZmI2ZjQ5NzJiMjQ1MTQ2OTAyM2RhOGUzZCBsZWdhY3ktdHJ1bmsKKzEwMTE0IDU0NzJhYjYxMGZlOWU0OTk2ZjViMTY2OWVmZTBkMjkyMTlmNjU4ZTggbGVnYWN5LXRydW5rCisxMDExNSBjMTEyNDQzY2FiZTExNmUyMjUxZTAwZjM5ODQ4YTljZTRkN2VmNDRjIGxlZ2FjeS10cnVuaworMTAxMTYgMWMwZjU4Yjc2MDgxYTg3MDI3MDlmOTQwMWRkY2EzMjNkNWQ2YjQ0YiBsZWdhY3ktdHJ1bmsKKzEwMTE3IGM2Mzg3ZTI0MmI3ODBhZmM2ODhjMDZjZjdjZDkzNjAzNDM5MmM1NDkgbGVnYWN5LXRydW5rCisxMDExOCAwOTUwMTI3MTg1ZWFiNjRkNjliODBlMDhhMGYzNGRiMmZlYjNlNjRhIGxlZ2FjeS10cnVuaworMTAxMTkgMmJiZWZlYzE2NTQyMDRiYTVhY2M3YTk5OGJiODg1YTljZjQyMGQ2MCBsZWdhY3ktdHJ1bmsKKzEwMTIwIGY3NzkxNjE3YzJiMjVkOTZkN2ViZDU0NGUzM2FmNDhjMTgyZDBlZmUgbGVnYWN5LXRydW5rCisxMDEyMSBiOTVlNTIzZGNlNmNjZTEwYjE4NjcyMDk1YTM3YmNiZjk3NTQ2ZTA4IGxlZ2FjeS10cnVuaworMTAxMjIgZDhkODg0NDdmM2MxMzE0YzcyMjZhNjRmOGFjMjM0ZjNjNjM0N2JjNyBsZWdhY3ktdHJ1bmsKKzEwMTIzIDdhZDUyMmE0Yzc1M2ExMDRhMWRjNGY3MTU5ZDUxYjVhNWY2NTc1YTYgbGVnYWN5LXRydW5rCisxMDEyNCBkOTJmMTBjNDUxYTEzOGRhNDM0NTFhZjNlNTU1YzA3YTQ4YWE4NGY1IGxlZ2FjeS10cnVuaworMTAxMjUgZGVlNTYwMjVkMzkwYjQxZjNkMGZiNTBjZDg4MjkxYjgwMWMyNjI0YSBsZWdhY3ktdHJ1bmsKKzEwMTI2IDAyYzY2NDI4ZjA0ODQxZGY3MjM3Njc1YWQ1MmRkMTZjMDhlNTQ1NjggbGVnYWN5LXRydW5rCisxMDEyNyA5MzJkZDZiOTBlMTNhNzkyMzBmYjU4YWY1MDVhODRhOTUyNzhmODJjIGxlZ2FjeS10cnVuaworMTAxMjggZWE2ODYxOWZiNTZkNGQ1NDFkM2E2YTQ3OGUwZGQyNTA4YjRmODY0NiBsZWdhY3ktdHJ1bmsKKzEwMTI5IDk1NTJkNGIzZDliNzgxNDI1ZTM4YjJkODBkYzJkNDRkMjc5NjllNTQgbGVnYWN5LXRydW5rCisxMDEzMCBkNjRkYmQxY2QzMmViNDM3OTE4MTYwNTcyNDA2ZGUwNWEzNTU5YjY3IGxlZ2FjeS10cnVuaworMTAxMzEgYjg2NzcxYjBkN2Y5MTg3Y2IxMjFhYTk1NTU5ZGY4ZGUyMWJmNmMyNiBsZWdhY3ktdHJ1bmsKKzEwMTMzIDc1ZDAwNDhjODY0M2RiNWU0YjZlMjUyNjFmYTA1NGM0YWU5ODg0ZWQgbGVnYWN5LXRydW5rCisxMDEzNCA3M2VlYmRhY2ZiNzc2MjNmODMwNWNkNTgwNGNkZmExNWJkYjZmYWM1IGxlZ2FjeS10cnVuaworMTAxMzUgNmIzZDNhMjg1ODFmNGMwZmRkNGVlY2ExYWRjNzg1ZTc5MDg4YzQwNCBsZWdhY3ktdHJ1bmsKKzEwMTM2IGYwMTdjNDg1OGJhOGMzNmFiZjgxOWU3YjcxNGY0YzhlYTAwOGY3ZDQgbGVnYWN5LXRydW5rCisxMDEzNyBmNzVmZjhkNDQzNGQ4N2I1MzUzYjZlZWI0YzZmMGIwYWI0NDgzNjRmIGxlZ2FjeS10cnVuaworMTAxMzggODY5MzczZmEwYmY4Yjg2NGQ0Y2I3OWRmN2QyYTM3MTkyNTZhNTBmNSBsZWdhY3ktdHJ1bmsKKzEwMTM5IGYwM2U2NjVkOWY3Mjg4OWRiZGNmYTYyYzQwODJmMDc0ZTI1NWQ0N2MgbGVnYWN5LXRydW5rCisxMDE0MCA0N2RkZWIwNzk1NzU0NmIzMjA3MzIwNmRmYzI3NjYzNWUwNDVmNDI5IGxlZ2FjeS10cnVuaworMTAxNDEgZWEyZDMyMTdkMGM3MjEzODFlMDkxYjYwMzQwNjk4YzM2ZGY5ZjQwMCBsZWdhY3ktdHJ1bmsKKzEwMTQyIGFjZDM5M2E5M2VkMDQ0YTUyNTU4ZTExYTI1NjczYjZhNzhkMjBlOGQgbGVnYWN5LXRydW5rCisxMDE0MyBmMjg1NWQyYWNiZDM5OTQ0ZjM5MjRiZjI2MjM5Yzg0ODM1NTUzNmJiIGxlZ2FjeS10cnVuaworMTAxNDQgYWJhZTY4YWYzMzRmNjUyYTMyNGE0ZjlmOTQ0YjhmZGE0ODg3YjFhNCBsZWdhY3ktdHJ1bmsKKzEwMTQ1IGM5Mzk0YWVhYWM2YWRjMjdjZmQyYjM2NTdhYTFiODIzOTM4OGE2OGIgbGVnYWN5LXRydW5rCisxMDE0NiAzNWYyOWI3ZGFjZjUxOGM1MmFiNGI2NzU4NmYzYzdjMDI2Zjk2Y2IzIGxlZ2FjeS10cnVuaworMTAxNDcgYWQzNDY3MWNkNGM5NjI5ZTQ2ZmRmMDI0NjFhMmFjNmEzNGYxMjVlMyBsZWdhY3ktdHJ1bmsKKzEwMTQ4IDFmOGM4ZTBiYjVlZjYwMGQ1N2JlMzY3YmE2MjU5MzM2OTljMDY5YjMgbGVnYWN5LXRydW5rCisxMDE0OSA4ZTZhNTgwMTk4ODczZTYwYTBiMDMwZGVlYzEwYjQyMTA2ZTg4MmM2IGxlZ2FjeS10cnVuaworMTAxNTAgMGNmMmZmYWY0YmQ3YzUwZWRiYjQ1NGUyNDg4MzI5MDA5MTY5M2Y0ZSBsZWdhY3ktdHJ1bmsKKzEwMTUxIDFmYjg2OGYyNTQ1OWZlMzZlMjMwNDgwNjQ4YmI5YmI3NzhkYjVhYjEgbGVnYWN5LXRydW5rCisxMDE1MiA1MjhlMmI5NGU4Yjk4NzNhNzYzZDIzN2RiODc5NjdjNGQ2ZWU5NWRjIGxlZ2FjeS10cnVuaworMTAxNTMgMzU3Yjc3ZTM0NWYzNjU2MGYyZWI2ODVlODRmMTljNTE3YjRlYzgwNiBsZWdhY3ktdHJ1bmsKKzEwMTU1IDcxMjJmZjRjNGFiZTY5Y2EyZmEzMmUzMGE0NTFhNzk5YmE1OWE3OWYgbGVnYWN5LXRydW5rCisxMDE1NiBiZGNmNzA4YWU0ZGFlOGNjOTg3YWI1MDYzMmZlMjE3OTAyOTIyNjU1IGxlZ2FjeS10cnVuaworMTAxNTcgNzJmMmFiYWNmMTUxZTQxODQ4ZWU5MThhMjUzNTlhYjI0MmM2MmUxNSBsZWdhY3ktdHJ1bmsKKzEwMTU4IDQwMzAwNTljZjk3YzEzNDEwYTMwYTVmYzc1ZTYzODhiYzMzYjBiZDUgbGVnYWN5LXRydW5rCisxMDE1OSBhNjEwMThhMmE1MDJhNDJmZDk0YTM5NDM2NzMwNDBjNzk3OTJlNzA2IGxlZ2FjeS10cnVuaworMTAxNjAgMmM5YzI0ODU4MWEyMDIzZGVjMmExNDVjYmE4ODBiMjI3NWVmM2RkYSBsZWdhY3ktdHJ1bmsKKzEwMTYxIGUxZTc2NzY2ZDhjYWUxNTYwMjA4MDIzNjBlZWQ1NjE1ZjhkOGE1MzIgbGVnYWN5LXRydW5rCisxMDE2MiA1MzM0ZWVmMTk3NGMwNTVjZTkxZmQ1MDkwYWQwMjM2NWIzYzM2OGM3IGxlZ2FjeS10cnVuaworMTAxNjMgNmJmNzQyNjRiOWMwYzMxNTQ1ZjcxNzc1NWUyNzdhNTNhMjA3NmI5NCBsZWdhY3ktdHJ1bmsKKzEwMTY0IGYwZDMzZmRiMzkyMTkzZjdlYmFlN2E4MzE4ZjE5OWU1ZDc0MjUyYTYgbGVnYWN5LXRydW5rCisxMDE2NSBhZmRjYmVmMTdlYzBmZDA2OTQzNTI5MTQ2NTcxODVmNDJkNjc5ZjVjIGxlZ2FjeS10cnVuaworMTAxNjYgNDgzOTcwMDYyOTE1MTE1YWFjMDQ4ZmU3M2RkNDNmMTc3OWFkZGM1NCBsZWdhY3ktdHJ1bmsKKzEwMTY3IGMyZTFkYjFlMWJiOGZiZDFjYWJlMTQ4MzVmNjY5NmU5Njg5MDI4NGMgbGVnYWN5LXRydW5rCisxMDE2OCAwNGQ3Mzk3OTcwYzIwNjdhN2ZlNGU1YjUzNzg2MDdkMzVkN2E3NzdkIGxlZ2FjeS10cnVuaworMTAxNjkgNTU0ZjJiODc5ZmJiMTFjYjIwZjJmMDk3Y2FkM2MzYzgxMzBlNmQwNSBsZWdhY3ktdHJ1bmsKKzEwMTcwIGY5MjQ3MjdjZDAwYjZhZDk5YTZhZjVlNTlmMDgyZDYxNzE1OWZjMDEgbGVnYWN5LXRydW5rCisxMDE3MSA5YmY4MWQ5M2I5OTViNGMxNWE1NmVkOTJkNmQyNzllOGNmMmFkMjIxIGxlZ2FjeS10cnVuaworMTAxNzIgNTdhNDIxODM4OTdkY2E4NTI1MjI3ZTgwYTIzZThmYzE5MWFlOWRkNSBsZWdhY3ktdHJ1bmsKKzEwMTczIGZmY2RjZjlmZjBlYmM2NmFhNzgyMTEzNGQ1YWY2ZTAwNmUxMGUwOTggbGVnYWN5LXRydW5rCisxMDE3NCA1ZTNjOWQ1MzBiYzFkM2JiNDAyZDRmNjJlNzIwMWVlN2UwOTBhNDFmIGxlZ2FjeS10cnVuaworMTAxNzUgMWNlZDAzNjcxNTc0OWVkODgwN2NjNDdkMzVhODU0ODg5MzBlYzNkNCBsZWdhY3ktdHJ1bmsKKzEwMTc2IGQyM2JmZTA2MTc1ZWVlN2E5ZDYzY2I2NjNjNjNhODQ3ZDdiNjJjM2EgbGVnYWN5LXRydW5rCisxMDE3NyBlNDBmMmE2ZTUyNmRkMmRjMGQzNzVjNDk2YjBlOTlhODQzYjZhYzc2IGxlZ2FjeS10cnVuaworMTAxNzggYWJlN2YxZjQ3NjhiMDFjMGZlZWI0OTA5YTUyY2I0ZGM5ZGRmYTVjYSBsZWdhY3ktdHJ1bmsKKzEwMTc5IDk2YjdjMTMyM2QzMGFlYzljNTkzNGJiYzdmZjlkOGYyZTZmZThmOGYgbGVnYWN5LXRydW5rCisxMDE4MCBhYzg3Nzk2ODU2MmNjZGQxY2I3YzY5OTE4NGFkNTc1YzUzYTU3YzM2IGxlZ2FjeS10cnVuaworMTAxODEgMmNjNGJjMGNkMDM2NzU4ZWQwMDVmMmRkZDczOTdjNGJkMzQ3ZGI1MiBsZWdhY3ktdHJ1bmsKKzEwMTgyIDRiODI5ZTZjMGRjNTU1YTUwMGFjNjkzMGVhMmQwMzZlMzk2NzEyOTcgbGVnYWN5LXRydW5rCisxMDE4MyAyY2QxNDZlMmEzYTBkYjIwNjYzNWIxMTk5NTI1ZGIxZDdiYTIzMDlmIGxlZ2FjeS10cnVuaworMTAxODQgYzlkNTQ2ODA5ZTRmOGUzNzBhNTJiY2ZlMDY4NTE2ZDI1MTUwNzgyMyBsZWdhY3ktdHJ1bmsKKzEwMTg1IGEwMDNlMTRmZWQ4NzcyMzkzMjU0OWYxYzJjM2I0YWVjMGUxZDFlOTcgbGVnYWN5LXRydW5rCisxMDE4NiA1NWUzZjg5MWRiYjVkN2RmMmNmOTJjMjlhYmNiN2ZkNjViMGFhNTY0IGxlZ2FjeS10cnVuaworMTAxODcgMjM2MTQ2NTBlMjliMWRlZWVjYzJmN2UxODliNmU4ZTQ4NDI4NWY2ZSBsZWdhY3ktdHJ1bmsKKzEwMTg4IDQ5OTFhYWFiMTdiZGVmNTUxMmViZTNmMTRiZWRjMDQ2MmJmOWQ0ZGQgbGVnYWN5LXRydW5rCisxMDE4OSBhYmI4MDJjMjE2YWQyNDM2NjUxYWM2YTJjYTMxMjM1NDE2ZTg3YjM0IGxlZ2FjeS10cnVuaworMTAxOTAgNzA2ZTRiOTU0ODYyNDhhN2Y5NTE1ZTdhYmQxYmMwNzRiNmEzNzExYyBsZWdhY3ktdHJ1bmsKKzEwMTkxIDU2ZGNmYzI3NzEwYWI2ZWYzYjNlNjI5OWU1NWZkOTk5Njg4ZTFhZTYgbGVnYWN5LXRydW5rCisxMDE5MiAwY2JjOWRmODgyYjZiZGRmNGRhNDUxNWU5YTRlNzlmYTI4Yzk0ZDQxIGxlZ2FjeS10cnVuaworMTAxOTMgMjRmZjY5YWQ0ZGEyMjM5ZmUyZGY2ZmI0OWZiZjg1ZmJlOTc5YzM1NyBsZWdhY3ktdHJ1bmsKKzEwMTk0IDhkYTcxYzUxNTcxNmFkY2Q2M2NhNzQ4ZGIxNDg0ZDk1NTgwODM3MTggbGVnYWN5LXRydW5rCisxMDE5NSAzODhiMDk3YmRkYjk1NTFhYzc2OGMxYjk3NmIwZWQ5MDdhNTI0NGJiIGxlZ2FjeS10cnVuaworMTAxOTYgOTI3MTM0MGM3ZTBjYzk4OTQwOWI4ZTc5NDMxZWY2MjAwMDM0MDFhMyBsZWdhY3ktdHJ1bmsKKzEwMTk3IDk5NWFlYTA5MjkxNzMzYTY1ODJkMzg3YzlhYWQyNzc3NDM4MjJlYjUgbGVnYWN5LXRydW5rCisxMDE5OCBmODM0MjVjYzdlOTY3NWUxODQwODE1NTNhZDNiZDBiNWMyNjBlMGFjIGxlZ2FjeS10cnVuaworMTAxOTkgZDIxZGM1OWM4NmQ3NGQwYjAxYjQwYWJkOTc2NzNlNTA3ZjgzMDJjOSBsZWdhY3ktdHJ1bmsKKzEwMjAwIDVjN2JjZTA1M2QwMzg4NmVmZDkyZmU1NWU3NjVlZGJhZGExNDdkNWYgbGVnYWN5LXRydW5rCisxMDIwMSBmMDkzZmNmZDU2MjVlMWRiOTQ4YzQyNWU2Y2IyNzZiYzU4MTAxZTY1IGxlZ2FjeS10cnVuaworMTAyMDIgNjczMThkM2ZhNmRjZDY0YTM5ZTMwZGUwOWZlYmQ1MWU0OWUwMzExZCBsZWdhY3ktdHJ1bmsKKzEwMjAzIGQxMDNjMDE4MGIyZGUwNmU1NWU0NGQxMDc1OTdjYzQxNTc2ZGNhN2QgbGVnYWN5LXRydW5rCisxMDIwNCAxYmI5NDNjZDJjMjNkYzdkMzNmYTc2MDY1NDI0ZmEyMDY5NmUxYzFmIGxlZ2FjeS10cnVuaworMTAyMDUgNjYzMzY3Y2ExM2Y4MTY0MDFmY2ZmOGEyYmIyZjQwMjVjOWZiOWE4ZSBsZWdhY3ktdHJ1bmsKKzEwMjA2IDA5NTYzNmI4ZmFiN2U4MTFlNzcyN2MyZGVmOTAwNzFmYmZlZDIzNzEgbGVnYWN5LXRydW5rCisxMDIwNyBjYjI1Njc5ODM0N2ViOTVjNjE5MmM2Y2RhODE2MWIxNzA3NDBmMDJiIGxlZ2FjeS10cnVuaworMTAyMDggNTJkYWE3MGJiMDg0OTM0NTIwNTM3YjVmOWFlMjJkMWE0YjEzNTNjMyBsZWdhY3ktdHJ1bmsKKzEwMjA5IDg5NTgyZmExODI0ZmJhOTk1NTdiMDJlOWM3ZGYwMTYwYTE5NDQwMmIgbGVnYWN5LXRydW5rCisxMDIxMCBjMTA5ZDVjYWQxMDA3NTZmNTA1OTU5NjExYzBiNGY0NGU4M2M1MTJhIGxlZ2FjeS10cnVuaworMTAyMTEgOWMzN2VkODg2OGI5ZWZiYmM5NjhmOWVhNTRmOGQyZTIzMmYyMDQ3NCBsZWdhY3ktdHJ1bmsKKzEwMjEyIGI4ZTFlMTA1NTY0OWQ2Mzc3ODU2ZmQ2MjM2NGE5YTBjYjVhOTE1MGMgbGVnYWN5LXRydW5rCisxMDIxMyAzMGUzMzE0OTY5MzBiNWJhYTk1M2JjZmEyYTEwMTYyNTRmZjU4ZDRiIGxlZ2FjeS10cnVuaworMTAyMTQgNzI1YjM3MGU4NTNmMGUxZjBjZmFmMzU1MTA3MDdhMWE5NjM0NDQyYSBsZWdhY3ktdHJ1bmsKKzEwMjE1IDdhOWFmYWJhODhkODQyY2MzOWU2YjkwYTdjMDY2ODgzODVmMDE2MjUgbGVnYWN5LXRydW5rCisxMDIxNiBlZDMyMDAwMWMyOWE4NzcxZTcwNWYyNDIwOWEwNmRlNTgzNjk5ZTEwIGxlZ2FjeS10cnVuaworMTAyMTcgNWQ3ZTRkMjBjODllZGQ5OThiODBiMDUwYzdkMzExZDM1MDcyOWNmYiBsZWdhY3ktdHJ1bmsKKzEwMjE4IGJiZmQ5NDZiMGIzOGM4ZjE2ZTVlODdjM2UwNjlhOTU0MDk1Mjc0ZGUgbGVnYWN5LXRydW5rCisxMDIxOSAxMDkxYmEyYmFlYTRhMjljYTc5N2IzMzEyNjY0Yjc4ZTJkMzRjZWU0IGxlZ2FjeS10cnVuaworMTAyMjAgNDIzYmU3Y2QwNDc5NTIyYjBjM2M1Y2I1ZmVkZjNjZDFkMzY3OTg5MyBsZWdhY3ktdHJ1bmsKKzEwMjIxIGUyOTAyOTAyOTQxNGIyYTljNWU2ODBjNTVjNjY1YjI3ODVmNjVkMTIgbGVnYWN5LXRydW5rCisxMDIyMiA1YmY2NmFiNGRmYjZmNjljNTIxM2IxNTNjN2I2Mjk2YjZmZjYwMjEyIGxlZ2FjeS10cnVuaworMTAyMjMgMjY5YTMyN2Q2MzA1ZjI3ZDUwZmY0NzFkMjgwMzNlYWY1YjgyNzM4NiBsZWdhY3ktdHJ1bmsKKzEwMjI1IGM0OTg0NTFjNWY1NjQxNjNjMjQxODNlN2U3OTk2OGVkMGIxYThmNmMgbGVnYWN5LXRydW5rCisxMDIyNiA0NWEzZGFiZjBmYTgzYzkwMmVmMTNjNjA0OTk2Y2FlMWEyNGZlYjFlIGxlZ2FjeS10cnVuaworMTAyMjcgNzkyYmZkNDczZjUxNjg4ZGQyNGZiOTM0MmRmMDIwMzBiZGNkMzgzZSBsZWdhY3ktdHJ1bmsKKzEwMjI4IGFlZGQyZDBkY2IzMTU0M2JjNTNlODJjNmNjMDZmY2Y2MDJjZTk2OTQgbGVnYWN5LXRydW5rCisxMDIyOSBhNzNlZjcyMGZiNTY2MzZmNzM2MGM4N2ViNGNjZjY0NDhiNDdhYzhlIGxlZ2FjeS10cnVuaworMTAyMzAgM2MwOGZiOWUxMzRmODJjYzg4ODhlYmYzYWU5ZDQ0ZWJlOWI3NmZiMCBsZWdhY3ktdHJ1bmsKKzEwMjMxIDY5NzJlNTBmMzQ4M2U1MTM1Mjg2YzAzZDNjNjkwNDgyYzM2NmQwMzkgbGVnYWN5LXRydW5rCisxMDIzMiAwYzgzN2RhYjViOWVhYzVkZTQ4NTgxNzIwN2QxZTA2YWE3MzFiZGY1IGxlZ2FjeS10cnVuaworMTAyMzMgYjRiMGU0ZTc1OWM1ODFmMDgxNWRlZWQ1YzYwZjQ5Yzc0YjM4ZTc5YiBsZWdhY3ktdHJ1bmsKKzEwMjM0IDhlZjA2NzU1OWQ1YTM4MmY2YjcwMGVjNTBhNzA2NGE2ZmEwYjc3OTcgbGVnYWN5LXRydW5rCisxMDIzNSAwMzNkYmU5MDkyMTgxNTQxZGE1YTFhNTg3Y2FkZDNiNGJmNGI5NzkzIGxlZ2FjeS10cnVuaworMTAyMzYgZmI0YjRkMDY5Y2M3Y2RiNGI2NjUzMmViNDlkNzdhZDA2ZDI3YmRmZiBsZWdhY3ktdHJ1bmsKKzEwMjM3IGE0MTkzMzRmM2IzOTdiNjRlYTBiYmY4NDgyODM2MTBkNDEwZmNjNjYgbGVnYWN5LXRydW5rCisxMDIzOCA3OGMyN2UzMWFjN2M5ODA2ZWMzMGNjNDg0OGIzZmY3ZDQyMWYxYTk0IGxlZ2FjeS10cnVuaworMTAyMzkgYzMxMjU3YjkyNDQ3ZWNlNWQ3NDc2OGRhOGJhMjJlM2FjODZkZGY1MCBsZWdhY3ktdHJ1bmsKKzEwMjQwIGE1ZTJiZWJlMTc5YWU3NmZiNmEyYjcxMjczZGU5OTI3Njc4ZDI2MzcgbGVnYWN5LXRydW5rCisxMDI0MSA2YmZhNjUwZjMxMWRmNDZlNjcyMjk1MWZmNTZiYWNhM2IzYjgyNjkyIGxlZ2FjeS10cnVuaworMTAyNDIgNDU4YTMzYWJiMzljMWFlYTNhZDQ5NjAwMTIwZDk0ODI0MWVkNTdjNiBsZWdhY3ktdHJ1bmsKKzEwMjQzIGFjZjNiOTUwY2I0MzdkMWI3ZWVkZDExNjE4ZmUzYjQzNjgyMDdmZTEgbGVnYWN5LXRydW5rCisxMDI0NCA5YzAyZTBhMjY1MTFhNGZmMmM4NTNiMDcyNGYwZjhiOTVjMTIwNWU3IGxlZ2FjeS10cnVuaworMTAyNDUgOWQwZGMxMTc3NWE0ZTQ3YWU1NGI5NzQ2ZjU3MjJlNDllNzk3ZTA2ZSBsZWdhY3ktdHJ1bmsKKzEwMjQ2IDhiNzg2NTNiYWYxZmQxMjJiOWU3OWJkOThiYThlMzc0YjE5NjI4YTYgbGVnYWN5LXRydW5rCisxMDI0NyA1ODdkMDE3OGY4ZDM2NmYwMDljM2NmMmU0ZTZmNGQ0NmM5MzdmNzcyIGxlZ2FjeS10cnVuaworMTAyNDggN2ZkNzlkZGZiYjhiODg0ZWY5NjRjYTVhMDY3MGMwNmRiZDZjY2RlYiBsZWdhY3ktdHJ1bmsKKzEwMjQ5IDhmMTc3OTMzYzQxZmFiM2MzMTlmNTdiOGZhNDczMDJlNTUwYzdmNDggbGVnYWN5LXRydW5rCisxMDI1MCA0NjlmNjY5MThkZDZjYmJlNTJmZjZkZTQ1ZDI4ODYxOTJhNThkNzNmIGxlZ2FjeS10cnVuaworMTAyNTEgOWY0NmU3MGViZmJiMmQzNjVhNjY2Y2NkNzhiNTM4Y2M0YWViMThmMyBsZWdhY3ktdHJ1bmsKKzEwMjUyIDcwN2QwNjJjYWU3YmZmMWVkNzg1ODUxOWMyYjZiYzY1NWNkMzBlMWMgbGVnYWN5LXRydW5rCisxMDI1MyA5MTcyOTMxZmQ4MGE0OGFjODcxMGFkYjE4YzAyNzNmNjBmNzM0YTdjIGxlZ2FjeS10cnVuaworMTAyNTQgOGE1Njc0MTJiMjFiYmFlZjczYWJmZTYzNTQ0MWY1ZDQ2YTA5OGVkNyBsZWdhY3ktdHJ1bmsKKzEwMjU1IDVmYjY5ZmYyNGNkZGMxM2NiNzRlMmU3ZmJhYmE1YmQ2YTgyZDI0MTQgbGVnYWN5LXRydW5rCisxMDI1NiA1N2YxMWFiNGUyOTIxYjE0MjAyMjAzYzQ5NzdjNGJlMDFlNmUzZWUxIGxlZ2FjeS10cnVuaworMTAyNTcgZGI5NGIxNWJkNjQwMGJlNTMwZjZjM2Y5NjcyMDA5YmNlN2JkMTU0ZiBsZWdhY3ktdHJ1bmsKKzEwMjU4IDVlMjE1ODk0YzU1NWEyNzI4OWEwYWRjMDkyZjc5MTAzNTRlYWM4ODEgbGVnYWN5LXRydW5rCisxMDI1OSBiMTdkMjAwZWRmNjI3YmRmNTFkNTNhODVlNmE5ZWQ1Yjk3ZjY4MjMxIGxlZ2FjeS10cnVuaworMTAyNjAgMWM0MjA2OTlkNThhM2JhMmUyMmM2NjU3ZDQzZDFmNDk5ZGVkOTdjMSBsZWdhY3ktdHJ1bmsKKzEwMjYxIDNlMTE5OGQyMGY5Y2UxMzM3NTdjNDQzMWVmNThiMjdkZmU4Y2E3ODggbGVnYWN5LXRydW5rCisxMDI2MiAzNmIzYjY4NzZhNTgwZWIwZGZjZjQyYzk4ZDM0MTM5OGYxYTg1YzI1IGxlZ2FjeS10cnVuaworMTAyNjMgN2ZjMzJhNjYyNTVhNzdhY2Y1MGQxZWE0ZWQzNTg2MmNkMTUzMDUzMiBsZWdhY3ktdHJ1bmsKKzEwMjY0IGNmZTZmNThkZDBkOGVmOTIwZTFhZDE4ZThjYWI5YjQxYjZlZDlhYzAgbGVnYWN5LXRydW5rCisxMDI2NSA4MGIyNjc0ODM4MjhlNTgyMDNkMjEzYTJmYjhlMGJlNzU5OWY4MDEyIGxlZ2FjeS10cnVuaworMTAyNjYgMDU2OTJjNjYxNDM0YTE1ZDk1YzgxOTQ0MmU5MmY5ODcwNWI4NGY1ZSBsZWdhY3ktdHJ1bmsKKzEwMjY3IDZhZGY5MTdlZTc3MzBkNzM5ZDA2MTYwZmY2ZWRiZWJlYTY0MWMwMGEgbGVnYWN5LXRydW5rCisxMDI2OCA0NGZjN2ZmZGZjNzdmYmVhN2MzM2U3OGFkNDhiMjY4OThmYWRjMTg3IGxlZ2FjeS10cnVuaworMTAyNjkgYjFjMDkxNTAxNDExMGZiZmM2YWQ5ZmY4YzYyMzZhYjgwOTk4MGJhZSBsZWdhY3ktdHJ1bmsKKzEwMjcwIDg4YzUzOTIxYmY4ODA5ZTY2YzU4MDdkYzIxOGEyZGNjMTdjZGVkMjEgbGVnYWN5LXRydW5rCisxMDI3MSBiOWUzMTEyMGEwYzRlYWU5ZTVjNmU2NTUxNjQxMDJlMzM5ZjZmNjBiIGxlZ2FjeS10cnVuaworMTAyNzIgMjNkMDQ5MDAyNTY4OTUxN2FiMTZkOTY4YjI5Yzc4YjZlNDc4NjJiOCBsZWdhY3ktdHJ1bmsKKzEwMjczIDhkNDE0ODIxM2NjMDJhNmRjMTkzNWY5YzhlZThiNThmMTI0ZDBlYzAgbGVnYWN5LXRydW5rCisxMDI3NCAwNzQ1MzE0MGEwOTU1MDA4OGQxZGRiN2E3NTdmMWRjZTg4NGQwZGZhIGxlZ2FjeS10cnVuaworMTAyNzUgMzc1YTkwMTA2NWMxYjg3N2E1ODc5N2FmMmE1ZDM2OGQzMDA1ZTA0MSBsZWdhY3ktdHJ1bmsKKzEwMjc2IDQzM2MzODFjMzcwMGUzYjAxNjU5ODcwNmY1MmM5YzU2YmU0ZDczYmIgbGVnYWN5LXRydW5rCisxMDI3NyA2OGUyYjBkYmJlYzhlYjYyMGEyYjliMGRmZWQ0NDFjNDNkMjAwN2VmIGxlZ2FjeS10cnVuaworMTAyNzggMDY4YTc3NjJlMjg2MTMxNmNiZWQ2NTk1NmUzNmRmZTlkMjBiN2Q2OCBsZWdhY3ktdHJ1bmsKKzEwMjc5IDQ5ZjExZWI0ZWI5YTMzMjIzM2FhZjc5YzAzN2Y0YTc1MTk3ZTU4NTAgbGVnYWN5LXRydW5rCisxMDI4MCBjZjcyMzk5MWQ3NWZhZDE2YWIyZjNlOGQxMDllYzM1MjAxNGYzY2M0IGxlZ2FjeS10cnVuaworMTAyODEgY2Y0MjAxZWY3M2FhMmM2YWI0ZjQ5ZWJhYTcyOTk5YWM1MTRlMTFiNyBsZWdhY3ktdHJ1bmsKKzEwMjgyIDA0Nzk5NjY2NmM4MTg5OGIwMzQxODhhMmMzMGMxYjRmYjVjY2ZhNGEgbGVnYWN5LXRydW5rCisxMDI4MyBkZmZlMWU0NzBlNmNmM2NmMTE3MjQ4YjcxZWUzNGFjZmM1NzcwYzI0IGxlZ2FjeS10cnVuaworMTAyODQgMDY2MGYxN2FkZTYwM2NhMmE0ZmZkMThiMzY2NmUxNWNkY2YyZGY0OCBsZWdhY3ktdHJ1bmsKKzEwMjg1IDZkMDRlOGM4MTdmYmVmYTYwYTVkZTlkMWMxZTUxMTAxNmQzNWEwN2YgbGVnYWN5LXRydW5rCisxMDI4NiA0YzZkYzA3ZjFiNmE2MGNjYmZjMGMxMWU4MGNkMTVjZGM0MjE4MzI2IGxlZ2FjeS10cnVuaworMTAyODcgODFmOTgxODgwMTJlNDE5ZDA4MTk2ODQ5MmNjYWI1Mzc0ZWJkZTYzYyBsZWdhY3ktdHJ1bmsKKzEwMjg4IDVkMTVmNGZkNmQ2OWZlZWU2MzE0NmM3NDExNGIwZGNjOGEzODk4YWYgbGVnYWN5LXRydW5rCisxMDI4OSA3MGNjYmJjYzEwY2NhZDQxODkxNzgxNWRkYzJjOGIxNGRjZTJjZDk2IGxlZ2FjeS10cnVuaworMTAyOTAgZTU4MGFmYTFjODMzODBiMjQ0MmRlNmZlMDg1ZjEyNmNlMGNmZGJiNCBsZWdhY3ktdHJ1bmsKKzEwMjkxIDk5NjdiZTFmNDAyYjFhMDYxMzQ5ZmUzMzg4YTMxOGFhMmNiMjkxYzAgbGVnYWN5LXRydW5rCisxMDI5MiA0MTJlNmFiMDNjNmZmYWQ5OTA4MzE3MWVhZjZlMzAwMGQ0MTJjNTBiIGxlZ2FjeS10cnVuaworMTAyOTMgYzA0NzA4NDRjN2JjN2M2ZTViNzA4MGU5ODNmNGMyMzk0ZWUxNjBkMiBsZWdhY3ktdHJ1bmsKKzEwMjk0IDY0MzJjYmFkODI4ZGM5YzhiZjNhNDU1NGI1NTVhMGNiMmUzM2Y1NGQgbGVnYWN5LXRydW5rCisxMDI5NSBhNzI3YWU2YmZlNTBjNTg4MDU0ZDA5NjFjYjFhMzZkMDdkOTBiODE0IGxlZ2FjeS10cnVuaworMTAyOTYgY2M0OTQyZjBlYzRjOTRjYmM5N2E5ZTBhNGE5NDA5OTJlNGZmYTQyMyBsZWdhY3ktdHJ1bmsKKzEwMjk3IDUxMzIyNThkYTc4ZThhZjdiZTg5MzM1ODc5MjJhMmM1MTUwMjZmZWMgbGVnYWN5LXRydW5rCisxMDI5OCA0NjE3MzhhYWE1MzNkMmNjYzhiZTlhZDg1ZmI1YTg1NDU4ZTMyY2E2IGxlZ2FjeS10cnVuaworMTAyOTkgYTM1YjU0MTRmZGQ5YmI2Yjk3NTEzMzRkOWYwNmJiZjAxYzQ1ODFiNyBsZWdhY3ktdHJ1bmsKKzEwMzAwIGQ3YWJhZDcwZjY4MTE0ZDQyMWM2NTE0NGY0MzM3YjJkN2Y5OWVlY2UgbGVnYWN5LXRydW5rCisxMDMwMSAyMDkwZjhmOWQ1ZDJkNDk2MzVjNjBkN2YwNjk2ZjIzYWY1ZjQ2MjRlIGxlZ2FjeS10cnVuaworMTAzMDIgZWQ4NTZmY2NmNjM5N2ZmZTk0N2NhYzAwZjY3NWI4MzljZWExYTM2YiBsZWdhY3ktdHJ1bmsKKzEwMzAzIGQxYjIzNTA0YmQ5OWMzYjE0Mzk2YzVkOGQ5ZDMwOGQ5ZjBkZjJkNGQgbGVnYWN5LXRydW5rCisxMDMwNCAwNTc1ZDVhMTcyMTg1NmQyMDFhYjZhMjRhNTk5MDlkN2RkY2Q5NTdhIGxlZ2FjeS10cnVuaworMTAzMDUgYjg1YTY3NWI2NTAzZTU4NTk3OTlhODdiMDg3MDUwNWQ5NGZhMjg0NCBsZWdhY3ktdHJ1bmsKKzEwMzA2IDI5ZGM1ZDE5MjhiZmUxYTIxNGMwNGY0YmNmYThhYTQxMjU2Mzk1YTMgbGVnYWN5LXRydW5rCisxMDMwNyBiNzFkMWJkZDE4N2RlZTZjOTczYWVjZjRmZDdmZGJmNTI2NmE4MTJjIGxlZ2FjeS10cnVuaworMTAzMDggOTg2YTc0YzNhMjJjYTBmYTdlNDMyNGMwNzNlNTQzNTk5OTZmZDkzNCBsZWdhY3ktdHJ1bmsKKzEwMzA5IDhmMGUyOWNlNTllZjQxNzhlN2NhMTUwOGJkYjIxMTliZWNmZWU3YzAgbGVnYWN5LXRydW5rCisxMDMxMCBlMmZiMjU3ODQ1MzA0OWUwOTQ3NzJhZDY2MTNhZGYxOGY1NzY5ZTVhIGxlZ2FjeS10cnVuaworMTAzMTEgMzQyOTllMDk2ZTM1MzkwYTM0MmRjNzhkODZiOWY0MzZhNjQ4ZjZhNyBsZWdhY3ktdHJ1bmsKKzEwMzEyIDFmOGYyMDAyYmZiOWYwNWE1MGE1N2FlZjc5ZTQ2MmZiOWI4ZmE1NmMgbGVnYWN5LXRydW5rCisxMDMxMyBkMTRiNzEyMGM1NTE4ZDFlZGJlMzM0YzcyZWNkM2Y2NGU1ZDJkNzZlIGxlZ2FjeS10cnVuaworMTAzMTQgNjQzZTk3MjhhYTQ5MmU4NDZlNWE5MTY5MjU2OGQzNDA2Yzk3ZmU5NCBsZWdhY3ktdHJ1bmsKKzEwMzE1IDE0N2MxMDY3Y2EzM2QxNGVhOWI1OTVhOWNiNzM3Mzc2YjZkOWRjNTAgbGVnYWN5LXRydW5rCisxMDMxNiBjYTczNWI4NGE5MzlhNWEzNGQxZTAzMjk0NDBkYTVjOTBiZjhiZTE1IGxlZ2FjeS10cnVuaworMTAzMTcgOThmNmVkMTMxYjc1Y2VmNDNmODY3MTg1ZGIzZDQ1YTM5NjFmMTQyNiBsZWdhY3ktdHJ1bmsKKzEwMzE4IDU0ZDhlODVkM2MyODdkYzI1NDA3N2UxZGI3MmFkMDdhNDg2MmQ0MDIgbGVnYWN5LXRydW5rCisxMDMxOSBmYzk1MDQzM2QxNThlNTZmZDE0NWE1NDc3MjlhYWIzNWRlYzExY2I1IGxlZ2FjeS10cnVuaworMTAzMjAgZDRmNTMyMWI5ZDllODU2ZmMyYzZmMDA5N2E3MjIzOWEwMjFlNGMyZSBsZWdhY3ktdHJ1bmsKKzEwMzIxIGFhYTIwNGEwNWY4NDIzMjcxNTFkMjkzYzUxNDA4MjllOWZmNDdkZDAgbGVnYWN5LXRydW5rCisxMDMyMiBjYTE4NTA0ODFlMDJhNDFhMzJiMzg4MzY5YjM4OWVhZDU0YWQzNDQ2IGxlZ2FjeS10cnVuaworMTAzMjMgNDkxZTMwMDVmNTRiNTQ2ODZjYmYyMmZmNzQ5MDkxZmU4MTE3MmJkOCBsZWdhY3ktdHJ1bmsKKzEwMzI0IGFhYzU4NWZlOTQ1MmZiZGVmYzg2ZjRiMDcwOTBjMmJmYzk0ZjdhYWUgbGVnYWN5LXRydW5rCisxMDMyNSA2NzA5YTAyZjY3MTgwMzhkZjEzMmQxZTFjNzUxMTcxZGFjYjAyOTYyIGxlZ2FjeS10cnVuaworMTAzMjYgOTQ5YjU5ODIwMTg1YWY5MTFiODc0ZDkyYjkzNjk4NzQ3MDc1YzNlNiBsZWdhY3ktdHJ1bmsKKzEwMzI3IDZjNmE0OGJjNTgxNzNlNzA0ZjU2Y2Y4ZGVhZTg1ODRiZWQ4NzVmZWYgbGVnYWN5LXRydW5rCisxMDMyOCAzYzRmNzM2ZDVlMDEwY2NkNjI3YzUyYzVkYzNiZjUzNDRlZGIzMjMyIGxlZ2FjeS10cnVuaworMTAzMjkgNGZiZTZjOWM1ZDgxMWZkNGYzZWNjYzQ1Njg1YzI3YWM4OWQ0YTU3OCBsZWdhY3ktdHJ1bmsKKzEwMzMwIDlkM2I0MDFiYWM2ZGUyYzcwOTNkYjg3NmRjNjJmZjc1NzVjNzlhODEgbGVnYWN5LXRydW5rCisxMDMzMSBkYjFlNDlkNTFmZTEyYzI3NThmNzkxMmEwYjc4ODBhOThhNzI5NWE4IGxlZ2FjeS10cnVuaworMTAzMzIgNmU0ZWEwZWRhMjJlY2M5YmQyZjgwM2VkMDc5ZWM1MWVjZDE1YjI0MSBsZWdhY3ktdHJ1bmsKKzEwMzMzIGYzNGE2NThlN2MxNTY1YjYxNmU0ZjkxNmNkMzIzOTMyMjMxYWI2YzQgbGVnYWN5LXRydW5rCisxMDMzNCAyNjFjNjM5Yjk4NDczMjU0ODc1MjU2MGRjYjU2YzBlZjAzMjU3N2E1IGxlZ2FjeS10cnVuaworMTAzMzUgMWYxZjk0OTUwNWFmMDRhMTE4ZWVlOGM3N2JhYWQ3MmU2ZDE3NTJiYSBsZWdhY3ktdHJ1bmsKKzEwMzM2IGI3NWIyZjlkM2NlMTNlOTZhNjhkMzA2OGM1YWE0ZGM5YzJkZDc0NTYgbGVnYWN5LXRydW5rCisxMDMzNyA5NTY3MTllYTVmNWE2ZGJjYTRmZmY5MzJmYmEzNjcwZWUwNGYyMDJlIGxlZ2FjeS10cnVuaworMTAzMzggYjg0Nzg1MDRiNzc5YmIyNzdmY2QzOGUyZjJjYzAwYzc2ODJjODMwMCBsZWdhY3ktdHJ1bmsKKzEwMzM5IDg0MmVkNmJiZDA2NjBhN2FhOTUyNTI1NGRlYmMwYWJhNGM1YWNhMTYgbGVnYWN5LXRydW5rCisxMDM0MCBiMGIzM2EzNTdjNzllZDY0MDE2MmZiNzlkYjVkN2JlNDhhNTQwYWQzIGxlZ2FjeS10cnVuaworMTAzNDEgOWUxMGM4NjJhYmZjMWEyODBiOGJhYWM2ZWZhYTljZTEzNDE4OWM1NiBsZWdhY3ktdHJ1bmsKKzEwMzQyIGU4NWQ2ZGI3YmY5Nzc1MGE0MGI0NGE4OTIyOWFhZGE2OTk5YTZjN2EgbGVnYWN5LXRydW5rCisxMDM0MyBhM2FkYjE2ZjA4OTVmMGIyOTljYjcxMTI2MjcxYTY5NzBlODQ0YWU1IGxlZ2FjeS10cnVuaworMTAzNDQgZDc3M2RiMDYzNTVjMDY5OGQxYWZkNzVjNzBjMDgzZjAwZGI2YWU4ZiBsZWdhY3ktdHJ1bmsKKzEwMzQ1IDIxYTdlM2MzMjRkZjdmYWNlOWZhMDAzY2E5N2MwNGNkM2JlZDQ4ZDYgbGVnYWN5LXRydW5rCisxMDM0NiAxNzZiOTllNjk2NWJlOTMyNjg2MzFlYWY1ZThjM2ZkNDYzZGQ0MGM2IGxlZ2FjeS10cnVuaworMTAzNDcgYjY5ZmE5ZDE0MmNhNWE3OGMzZDZmZWZmMjQwMDg4ODU3OTVkZTRlMSBsZWdhY3ktdHJ1bmsKKzEwMzQ4IGM3NmFkYWY1MTJkNjU1M2FlYmYxZjQwNzUxNzQ5OGI0ODE5MGQwNTMgbGVnYWN5LXRydW5rCisxMDM0OSBhNjFmZGI4YTQ0OWVlMWYwMzYzYmJlYzBlODI4ZjAzMmMwZGU1YzAwIGxlZ2FjeS10cnVuaworMTAzNTAgMzFmYThhMGZkMTc4NzJlNDJmZGFkNzcwOTRkMjE5MDY1NWIyMTEyNiBsZWdhY3ktdHJ1bmsKKzEwMzUxIDZiYzRmODA3MjVkNmUyOGRiNGY2ZDMyZjg3NTQ5MWQ4N2IxOGE2OTAgbGVnYWN5LXRydW5rCisxMDM1MiBkMTUxODFhMGNmYmFiODYyNWExMjg5MmRmNDFkYTQ1YTliYWMzNjYwIGxlZ2FjeS10cnVuaworMTAzNTMgYjVlZGUxMzNkOTIxNmFlZmQ0MjhjODUxM2EzYWJkN2UxMDRkZTEyMyBsZWdhY3ktdHJ1bmsKKzEwMzU0IGQwN2I5N2QyOWE5ZTMyYTEyY2QxNTgzOWEzMDhkNGM1YTVkZjdjYzQgbGVnYWN5LXRydW5rCisxMDM1NSAzOTIzODhjNTJlMjE3MTdlZjIzZTNlOTgwYWNiMGMwNjhjZWY1ZWVhIGxlZ2FjeS10cnVuaworMTAzNTYgOGY0MjVmOGY0YmUyZGY1ZGUwY2I3N2I0Nzc1YzZhZjFmY2E1YmIyYSBsZWdhY3ktdHJ1bmsKKzEwMzU3IDBhODczZjJiNjRmNDE4MmEzYjgyMDdjNTk3YWI4ZmEyNDNiOGYzNjUgbGVnYWN5LXRydW5rCisxMDM1OCA4ZTUyMjM2ODBhOWRhNGM2ODlmYmRiMmNiYzQwNTJhOGVlYWUwY2I1IGxlZ2FjeS10cnVuaworMTAzNTkgYWMyZDFjMWYxOTcxZjJhOTNkZWQyMTdmY2M3NTRhNmRmMjBmOGRhYSBsZWdhY3ktdHJ1bmsKKzEwMzYwIDQyN2E5YjFjOWFiZDhlMTIwZTJiZjBiYzllN2VkNmY3YTZmNDAxY2QgbGVnYWN5LXRydW5rCisxMDM2MSBiZGU2OWRmYzIyNGYwZTczN2I4NjY4MDYzZGNkNTZjNmZkMWM4ZGIxIGxlZ2FjeS10cnVuaworMTAzNjIgNjM3MGYxNTkzYzcyMGI5MmExM2RmNzI3YjlmMzFjZDVlMmNiYjVmMyBsZWdhY3ktdHJ1bmsKKzEwMzYzIGIwZmJlNmI2ZGNiZjExYjFhMTAyMTJjMzk3M2EzNzg0MmQ2OTIyMjQgbGVnYWN5LXRydW5rCisxMDM2NCBlODMzYmVlNWQwNWZiMjRlNzQwMDgyZGNkZDYzYWFkOGRiMmMxZWI2IGxlZ2FjeS10cnVuaworMTAzNjUgZGZjOGRlOGYxZWMzZTY5YjI4MjNjZmZkZmRjNjA5OWU4YmFlODc0OSBsZWdhY3ktdHJ1bmsKKzEwMzY2IDQyZDNmMWY3MWM1NmNmYjk5YjliZWEwMWFjYmRiZGMwYWMwMWMzYTAgbGVnYWN5LXRydW5rCisxMDM2NyBhZTk3NzhjNGZmY2FmNjM2OGU2ZTBlYThlYWZlMjg5NTJmNjRjZjJiIGxlZ2FjeS10cnVuaworMTAzNjggZWZiYjdlNTdlNmY4NmZjMGY2MTAwZTQ0ODQyMmQ4NDU0Mjg0YzE5NCBsZWdhY3ktdHJ1bmsKKzEwMzY5IGY4ZjY2M2I0MzJiNDM1NmE4YmFlMjA3MGE2NjdiYjBlODllZmY3MzUgbGVnYWN5LXRydW5rCisxMDM3MCA0MWM3ZDUyNDNiZTkzMWY4M2ZlZDYxYjZjZjIzOWVkMWU5OTUzMjg1IGxlZ2FjeS10cnVuaworMTAzNzEgOGEzODljOGZlNmVmZDJhMzViYTMyNzk2ZGU5ZDdmNDIzMGU2ZWJhOSBsZWdhY3ktdHJ1bmsKKzEwMzcyIDM3MjM0ZTFiYjc1ZmZkZGViODUzMWI1NGU2OGZjYzRmZGVmOTVkODAgbGVnYWN5LXRydW5rCisxMDM3MyBkYmQyZGUyNmM4ZDIyNWZmZWMwZmFiZmQ5ZTc4ZWE5ZGYwOWFlMGUxIGxlZ2FjeS10cnVuaworMTAzNzQgOGM5MzU0NGI5NWU0YjNjMWMxNTY3NDk4NmYwYjlkOWEyNzBkNjhhMiBsZWdhY3ktdHJ1bmsKKzEwMzc1IDI2NzM4NDg0MzdjMzRkNGVkM2ExMTA0YjY4ZjI2Y2NkZWY0YWFmOTMgbGVnYWN5LXRydW5rCisxMDM3NiBlNjA2NmI4MTNhNzE0ZDE1ZTk2ZTQyMTc1MzMyZjQ5ZjNiMGYzZjk5IGxlZ2FjeS10cnVuaworMTAzNzcgMjlhYjNmNjAyZDAwMjNiNWMxOTM3MzI2YTQ3OGI4ZGI1MWExNzhhZSBsZWdhY3ktdHJ1bmsKKzEwMzc4IGRmNjM2ZGVkMmU3MDJiZGRmZGY4ODIyYWE4YjhjNzI5NjRhYjg2ZDYgbGVnYWN5LXRydW5rCisxMDM3OSA2YTAyOTllYmNjZWY5MGQwM2Q0YzgwMGZlM2FlMTc0YjU0YzZhODlhIGxlZ2FjeS10cnVuaworMTAzODAgOGYzYmIwYjE4YTgyYmNlNDA3MTljOTQ0ZDEzMzBmYThiNDJjYzE3MiBsZWdhY3ktdHJ1bmsKKzEwMzgxIDFlZmVlNTAzMjU5ZTUxYTQ4ZGQwMTY2MTAzYWYzYzk1NTI2NTA5NmYgbGVnYWN5LXRydW5rCisxMDM4MiA5YTI0NmQ3NGZjYjc1MmExNDZkMzRiOWY4YTExOTFjOGE5Y2I3MGE2IGxlZ2FjeS10cnVuaworMTAzODMgYTExMDQyMWQ4NmI3MzE0MDAwZmMxODlmYzBlN2NlYWZlNzRiZWY1ZiBsZWdhY3ktdHJ1bmsKKzEwMzg0IDE3MzY4YzkyYzc2OWE1M2JjNDM5YzAzNDExMDE1ZTk1MmM2NjQwYmIgbGVnYWN5LXRydW5rCisxMDM4NSAzYmQ2NjhkZjZlZmRjMmQ2MzUxM2Y4ZWY2ZWQwMjc5ZDcwYmM5NWI2IGxlZ2FjeS10cnVuaworMTAzODYgODBiMmFjNjFmZTAzOGE4YmI2OWNiMGQzOTQ0MDQ0OWE0OTkxNzY5NCBsZWdhY3ktdHJ1bmsKKzEwMzg3IDRiNTY2NmRmZjVlNjcyNDk2N2E3NTM5YjkyNTFjNjUxMTZmODg1ZjkgbGVnYWN5LXRydW5rCisxMDM4OCAzZjhiNTU2NGYwYzdjMjllMTA3YTU0NDE0NTczOGRiMzg3MDNiMTVhIGxlZ2FjeS10cnVuaworMTAzODkgMWExZDMxNDdiMDI3YzRiNGZlNTc4NzcyNjE5NzY5MjVkZWY1Y2E1ZCBsZWdhY3ktdHJ1bmsKKzEwMzkwIDVlYWZkM2VkYTBhZjRjYWVlMGI2MjI1MjUxM2ZiYmQ3ZTA1YTcwNjEgbGVnYWN5LXRydW5rCisxMDM5MSBiNzFhMTI1Nzc2NGIwMzI1OTJlNjM3MDI1ZWNkNjU3MDI2ODNlOTA2IGxlZ2FjeS10cnVuaworMTAzOTIgMzFmOWUyNjc1MTk5ZTE5NTYyZGQ4ZjE3MTNiY2IzMmVmZGM1ZWEwYSBsZWdhY3ktdHJ1bmsKKzEwMzkzIDU0MThjMDczMGYwMDk2MTYyYTViZGU1ZTAyMWQzZGU5MmYxMTQ2N2MgbGVnYWN5LXRydW5rCisxMDM5NCA2NGYzZTllYmYyMWFjZjMyNjg0MTI1MGU1YmMxMzIzNGY1MzJmMzYwIGxlZ2FjeS10cnVuaworMTAzOTUgMWRhZWNkNjVhN2M1ZWZjOWUwY2QxMjVjNGM0OGI2ZjhlOGFkOGVmOCBsZWdhY3ktdHJ1bmsKKzEwMzk2IGJhOWIxYjRhZWFiOWVlOGFhZTVlN2VhNzg0YmZkZDZhMDJiZTE0NDMgbGVnYWN5LXRydW5rCisxMDM5NyAxMzE4YTQ3NGJhYTA2ZGQ2N2ZhNjEyZWQxYTNiMzdlZjA2MjIxZjc2IGxlZ2FjeS10cnVuaworMTAzOTggMDkwNWY4NjY2ODA3ZjMzODc0M2E3NmY1MzgyMThjMjBjOWZlYzNiYSBsZWdhY3ktdHJ1bmsKKzEwMzk5IDVmYWI1OWViNGZhNWExY2Y0NzE5Zjg1YmJhNzA0ZDI0YzVjYTgzODcgbGVnYWN5LXRydW5rCisxMDQwMCA2YmMwNTM1ZGJmNTI3NzkyZjhkZGFmYWRmMzM3N2Q0MzQ0NGRhMDkyIGxlZ2FjeS10cnVuaworMTA0MDEgZGRlMGRmZmIxYTA4YWFlNDE4OWJiMzYwZTBkNDk1ZGIyNzY0ZWVkYSBsZWdhY3ktdHJ1bmsKKzEwNDAyIDBiZGNlZGNkMTU0OWI3NTk1MWVjM2ViZWMwZjEyZjkwNDdjOWUwYzUgbGVnYWN5LXRydW5rCisxMDQwMyA2YmU3YWIyNDZhMDViNGM4MWIxMjYzYThhYTZkMjAzZDUxODk3MmRjIGxlZ2FjeS10cnVuaworMTA0MDQgMjNjYzZhYzVlYmE2YzA3NjMxYzdjNzZjNGU1OGE4MGFhODRlODNjZiBsZWdhY3ktdHJ1bmsKKzEwNDA1IGRlOTBiYmU4NTAxMzdmZTFlZmI3NGI1YjcwOGNiOWRlMDE4ZTBiZDcgbGVnYWN5LXRydW5rCisxMDQwNiAzMzQwN2MwZWYxNGZmZTU3YzEzYzU1ZTVmMDA0MGEyNmY0OTJiNjg0IGxlZ2FjeS10cnVuaworMTA0MDcgZTI5ZDQzNWFiMTQyZjFlODVkZWNjMzFjOWU5M2Y4Njc3ZjdlOWE0OCBsZWdhY3ktdHJ1bmsKKzEwNDA4IDExMjZlNzJlNWVlOWM5YTQ5YTFiMmQ3Yzg3ZmMzNWIzMDUxY2U5ZTUgbGVnYWN5LXRydW5rCisxMDQwOSBlZjMwMGU2YjBjNzFkYTBiZDVhODFlY2QyMDhiY2I2ZDczYzk5YjY5IGxlZ2FjeS10cnVuaworMTA0MTAgOWQ4YzA2NjZiMGNiYmMxNGY0YmM4NjlhNzA1MjE5MjAyZGRhOTcwMyBsZWdhY3ktdHJ1bmsKKzEwNDExIDg2OGRjODRiYjViMjlhYmUyZjdhMGQ2MTc2OGM2OTAwOTUyZDAzNjQgbGVnYWN5LXRydW5rCisxMDQxMiA3YzdmZjFhMzY1MjE3YjQ1M2FlMTQ1M2Q0MDk0NWYwYWY5YjgwZmMzIGxlZ2FjeS10cnVuaworMTA0MTMgMDUyMmFiMjEwZmNiYjA4YTc2NTFmYmMwYTUwZjI3YzY4ZGE2YWJlMCBsZWdhY3ktdHJ1bmsKKzEwNDE0IGIyYWRjZDczYzE1MGI4MmM1Mzk5Nzc0Zjg4MDQxY2M1ZGQ5ZjY1OTAgbGVnYWN5LXRydW5rCisxMDQxNSA3MDhkZTRjYjk2ZWIyMWJkYWM4YmY2NWRhNDA5NThlMjAwZDNkNzVhIGxlZ2FjeS10cnVuaworMTA0MTYgYWE3ZDY5ZDY3YzgxZDdkYTM5MzNhZTA4NTBjNGZlMmMxYzFmY2E0OCBsZWdhY3ktdHJ1bmsKKzEwNDE3IDFmMzhhMmI1NDhiZjlkMDZhNmEyNTFlODRiMDViZTYwN2ZiNzQ1ZDQgbGVnYWN5LXRydW5rCisxMDQxOCBmMjIzYmY2MWI0ZWUwM2I4ZWY0ZWRmMzllOTliNWU2NTIxMTFmNGMwIGxlZ2FjeS10cnVuaworMTA0MTkgY2E0ZTI1ZWY2MWY4MDY5YmQ2OWE2MjQzY2RjZDQ1ZTNkY2JiODQxNiBsZWdhY3ktdHJ1bmsKKzEwNDIwIGQzZWMyZTUxZjY3YTIxYjhlNTQzMWUxNGMzZmU3MzY1OWNkYTBhYTggbGVnYWN5LXRydW5rCisxMDQyMSAwNTdlNDIyZDJjNjEwOTAwOGUyMDk1MjdkYjBkNDY4ZGI1NTllYTEzIGxlZ2FjeS10cnVuaworMTA0MjIgOTFlY2RhOWQ1MjQ1MWRmNzNlZjZkMDUxMDBjY2E5YTM2M2U4NWM1MSBsZWdhY3ktdHJ1bmsKKzEwNDIzIGVlMmFhYTJmNzIyYTg0N2NjNmRmZjkxMjI2ZmVjYTlmOTAyNzZjMDggbGVnYWN5LXRydW5rCisxMDQyNCBiMzFhYmMxMzFjM2RmOTQzZjAyZjU2NDNiNTU0NWJlMzYzZmNjYWZiIGxlZ2FjeS10cnVuaworMTA0MjUgMTYyZGIzZDBjOTE2N2UwOWQ2ZDc2OWIwN2IxMzNiYjIxMDIwNjZiOCBsZWdhY3ktdHJ1bmsKKzEwNDI2IGRjMTMyY2MzOTU3M2EwZWE2ZGYyZDI2Yzk5OTA5ZWFmYjU4YzVmMmUgbGVnYWN5LXRydW5rCisxMDQyNyBhZDExNDYyMGY4YzI3ODJkNTc3ZGIyZDA0M2MxNDc1MmQxOWU0OGY3IGxlZ2FjeS10cnVuaworMTA0MjggYTJjMWIzZTE3OTUyNmRkMjRkMDJiZGE3NzRiNTJkNDNiZDUxNDQ3NCBsZWdhY3ktdHJ1bmsKKzEwNDI5IGYwNjkxMzgwOGZlMWRhY2U3NWUxMjIwOWI3NjVjYWZmMWMxNzk2ODUgbGVnYWN5LXRydW5rCisxMDQzMCA1OGQ2ODE1YWYwMDJlNjc4ZmViODczYTk1YmU3ODY2NTA3OWFjYjQwIGxlZ2FjeS10cnVuaworMTA0MzEgOWNiY2I1OTMxZDgwM2Q2ODk2MDAxZWVlNTg5Y2ZmYzY2MzM4ZDcwYyBsZWdhY3ktdHJ1bmsKKzEwNDMyIGY0MmI3NTc3NTVlYjMyYWJlYjZkODI0Nzg3MmJjNzQyYjU2MmQ0M2EgbGVnYWN5LXRydW5rCisxMDQzMyA3MmQ5OTYxNTQwZDg1YjIwMDM2OTQ5ZjE0YjRhNDFjMjg0NjJmNjVlIGxlZ2FjeS10cnVuaworMTA0MzQgOTJlMzYxMTZhZjQyMWJjZmVlYzlmOTA2YmZiZGJjNzZkOTk4ZWRhYyBsZWdhY3ktdHJ1bmsKKzEwNDM1IGViZGQ0MGUyODE2MDI1YzlmOTQzMmJhOWEzOWIwOTNlMDhiMjc2ZDYgbGVnYWN5LXRydW5rCisxMDQzNiBjZDllNjY0YTFhOWZhODRiY2M2MWQyYWQ4MWUxZTJkMjdmZDRiZmE4IGxlZ2FjeS10cnVuaworMTA0MzcgZmMwOGRhMmM5YTBmYTdkOTY4MmUxMWQxMGU1Y2QzOWFiNTk3MGEwMyBsZWdhY3ktdHJ1bmsKKzEwNDM4IDhmMzY4ZGYxNzNlNjg4YzQ2NGM5MDYzNjQ3ZGJjNTBiMTkxYmUzZDYgbGVnYWN5LXRydW5rCisxMDQzOSA5ZTExM2FhMzc1OGRhMTA0OGM3YWNlMzMwN2VkMjc3Y2FhYTc4NGNmIGxlZ2FjeS10cnVuaworMTA0NDAgZmVjOGViMmEzODBkZDUxNzFjNjU1MDk2NzY1NTcwN2U1NDcxMGE5NyBsZWdhY3ktdHJ1bmsKKzEwNDQxIDhjYTAxMDgzMTQwY2I5OTJkMTJiNmNlZDUyM2IxNmJmMTM2YjE0NTEgbGVnYWN5LXRydW5rCisxMDQ0MiBjY2QxYzk2M2U1MDk1ZGRlNzQ0ZWM0ZGEwYzQ5ZTIwOTJjMjRlYzI1IGxlZ2FjeS10cnVuaworMTA0NDMgZDZmY2JkMzcxODU1ZTM2NDdmMTg1OTcxYTIyNzEwNGI3Y2RhMzdhYiBsZWdhY3ktdHJ1bmsKKzEwNDQ0IGFmZDU0Zjg5NWRjMzAzMGRkMzBkODA5N2ZmYmI1ZWU1YTYwOWI1ZTQgbGVnYWN5LXRydW5rCisxMDQ0NSBkMWVhMTNjZjQ2ZjdiYzVhY2ZlNGUzYmQyYjAyNWNkYmQ3Y2I2Y2RiIGxlZ2FjeS10cnVuaworMTA0NDYgZThkMGI4N2M4ZDZiMWZiMGEyMmY1NzgyNjNhYmQ5OGY4YTExZWE4MCBsZWdhY3ktdHJ1bmsKKzEwNDQ3IDhjMjY4ZDBlODgyMjA1NGNjYjUzYThjZTI5YWQ3MDI2NDkyNmJhZDggbGVnYWN5LXRydW5rCisxMDQ0OCBiYmQyYjVkOGQwYjZjMjJiY2E0ZjdlMDJiMDRlMWRmYWFkOTg1ZDZjIGxlZ2FjeS10cnVuaworMTA0NDkgMmVmNmUwNDI0MTc5Y2FmZjlhMzZlNzc1OGQwYTcxNzIyYWM5ZTVmNCBsZWdhY3ktdHJ1bmsKKzEwNDUwIDMzOGYxZGVmNDM3MDliZjRmMzJkNWI4ZDAxZjdmNmY2NDZiODNiY2UgbGVnYWN5LXRydW5rCisxMDQ1MSA0Y2VlZTFlZjk5YjAzMjgxMGZiYjYyMzdkZWIwMTg3NzlkZTBiNzMxIGxlZ2FjeS10cnVuaworMTA0NTIgNDY5Mjg4NDk5YzliZGU5ZDUzYmYyZGQ0YjQxMzM0ZmYxYjRlNGIzNyBsZWdhY3ktdHJ1bmsKKzEwNDUzIGZmMTBiMDMyOGZmMzc1MGJiMzAzMzEzNWQwNjMyNjRmOTNhNzlmOTEgbGVnYWN5LXRydW5rCisxMDQ1NCAwOTE0ODFkYmUxM2Q3YzUxMjc5ODA3YjJmZmRiY2E5MjFjMWUyNDVhIGxlZ2FjeS10cnVuaworMTA0NTUgYzEyYzY2MWZkMTRlZjRiNTdmNTMxN2E5NGEyM2MyYmM2ODVmNmJjYyBsZWdhY3ktdHJ1bmsKKzEwNDU2IDNkYzVkMGZjYjE2N2FjMWM4MzViNGEzNDlkMTExZGEzNzg5MWE2ZjcgbGVnYWN5LXRydW5rCisxMDQ1NyA3NTIyMzU4NDYxODA0MTRkZGQ4NmMxNTdlMzcwNGYyNTQ3MjE4MjdkIGxlZ2FjeS10cnVuaworMTA0NTggNTFkMzFmY2FlZWYzYTIxMDI0ODA4M2RmNzlkYmM2NTlkYjhlYmRkZSBsZWdhY3ktdHJ1bmsKKzEwNDU5IDE0M2M1NTZkZWIyZjg1NTlmNTY0ZGUxNDdlMGJkMmJiNjQ1MWIxMWQgbGVnYWN5LXRydW5rCisxMDQ2MCBjYzQ3NzMzYjRkZDIyYzU1ZDI1ODk4N2FmMWEwYjYxYzUwNjVlNTc1IGxlZ2FjeS10cnVuaworMTA0NjEgODVlODg2ZGIxOWIwNTk4YjkyY2QxYjVkNzdkYTNjZGQ0MzViYzA0YyBsZWdhY3ktdHJ1bmsKKzEwNDYyIDA5OTYzYTJhMjRkYjA4OThlNDNiZjMzMWIzMTVhYWM0ZDc4NWQ4MTcgbGVnYWN5LXRydW5rCisxMDQ2MyBhOTA5YTI4NjlhYzU5YTBiZWNjMGY2NzNhNDI2MWQ1MTJmNjIwYzJkIGxlZ2FjeS10cnVuaworMTA0NjQgMDY4MzAzZjkyNWVhODcyYmQxMWNiZTkyZjgyN2E2OWQzNDA2MDJjMiBsZWdhY3ktdHJ1bmsKKzEwNDY1IDFkMGViMmU5NmQ3Njc5ZTlmN2Y0NmUyMGM3OTQ4YjYwZWIxYmZjNzcgbGVnYWN5LXRydW5rCisxMDQ2NiBhYjRmNjQ1NjFmYmEzMjg4MTM0YTc3NWMzNGQ2ZGY5OTFjOTZkMjU3IGxlZ2FjeS10cnVuaworMTA0NjcgOTcxYjViYmQ5MmVjMDIwZWFiYzBjNzM4ZjFiYzc3ZDRjNWFjZTM5YyBsZWdhY3ktdHJ1bmsKKzEwNDY4IDY5N2RmOTNlNWRkYjQ3NjRjYjQxNWY2NzFjMWUxNTkxY2JiZTNiNmMgbGVnYWN5LXRydW5rCisxMDQ2OSAwMjYzZDMzMjRmMGIyZTk4ZWYxZjY1ZjI3NGM3YzJhYWJmOWU3ODcxIGxlZ2FjeS10cnVuaworMTA0NzAgYjllYjgwNTU3OWJhODYzMWI5MTI4NmUzMWNiNzNjNTlhY2UxNjQyOCBsZWdhY3ktdHJ1bmsKKzEwNDcxIGRlMTA1NjZkZWM1Y2QxYzI4NmU1YmQ3NWVkMjhiYzhkZjVlOWI3NjIgbGVnYWN5LXRydW5rCisxMDQ3MiA2ZTUwNzllOGZhNmUwNTMzZDkyOThiZTY3NTExMmY2ZjRlYzM2ODViIGxlZ2FjeS10cnVuaworMTA0NzMgY2YwY2YyMWI0NTQ1NDc3MWM3ZWY1Y2U2ODdkMGM5Zjg5MWI0NThkNSBsZWdhY3ktdHJ1bmsKKzEwNDc0IDZiM2ZkMjRjYzA3NzZmMzJhMThmNGFmMWEyMTU2YjE5YzI0YTEzMDggbGVnYWN5LXRydW5rCisxMDQ3NSBlOGM0YjNkMzg2ZTRmMmQzMzcyZDk1YzIxY2RmOTA5ODdkNDlmZjI2IGxlZ2FjeS10cnVuaworMTA0NzYgZGFmZmRlN2E2ODkxNzdmMWIxMWEyMDg5YjYxMGE5YTRiOTg0YWRiYiBsZWdhY3ktdHJ1bmsKKzEwNDc3IDg5MzU5ZDA3MmU3MjdlNzJhNmQ2NDVmMWY5ZGM3OGU3YmE4NTUwOWUgbGVnYWN5LXRydW5rCisxMDQ3OCAxZDUyNjUwN2NkOWVjNzNlMDA5YmM2OTQyYTkzZjI4YTMzNGZkMGI2IGxlZ2FjeS10cnVuaworMTA0NzkgM2QxZDllMjVlYjIyYzYzMjU3Zjc5YTlhYTY1YjllMjdjYTYyOWY1OCBsZWdhY3ktdHJ1bmsKKzEwNDgwIDA4MzViOGRmNTRmODBkMjM1NDUxZTJlNmE0YjQ2YjQ2NmM4ODU4NDYgbGVnYWN5LXRydW5rCisxMDQ4MSBiZGY1N2M4NGRmNmFiNTFjYzM0YzhmY2M0Y2I3M2MwZDFkMjk3MzQ4IGxlZ2FjeS10cnVuaworMTA0ODIgYzhhMzExMTQ0NzI2N2ExNGMzMzAxOGExYjMxNzRmMjkwZTBiNzc5MiBsZWdhY3ktdHJ1bmsKKzEwNDgzIGI0MjBhZTg1MjEzYzc5ZjA1Y2RjMzY5NTljNzFhMWIwNDc3MGY4ZjkgbGVnYWN5LXRydW5rCisxMDQ4NCA1ZGIzNDZlOWM4ZjU2MGRjZWIxNmJhYWJlNGRhYjBlYzY0MjcxZjg0IGxlZ2FjeS10cnVuaworMTA0ODUgOTAwMzIwNDkxYjkzNmM5ZmNhM2Y3MjM4NDY0ZDAwZmNkNmFjNjNiOSBsZWdhY3ktdHJ1bmsKKzEwNDg2IGU5ODY2ODY4M2JlZDYzNThmOWM1YTczMzllOTQ0MGI3YjRmMDEwNzcgbGVnYWN5LXRydW5rCisxMDQ4NyBhODQyYzllNjMyODBhOTZmNzM5NGMzMWI3MjEwOTJmMzhhZDZmNjBkIGxlZ2FjeS10cnVuaworMTA0ODggZGJjMTFkZDAyZjA5NTkyMzUwYjlmYWZkMzA1MTU5ZGI4YTE0YmI1YyBsZWdhY3ktdHJ1bmsKKzEwNDg5IDRmNGUyYWFkMWUwYWI1YmEwYWJjMmNlODI2ZTA0OTc2YTI5ZDRmZDUgbGVnYWN5LXRydW5rCisxMDQ5MCBiZjZlOTIwYzBlNzk5ZDE2MTI5NDdiOGFhMWVkMDQ3NDIzN2NkMzIxIGxlZ2FjeS10cnVuaworMTA0OTEgY2EwYzcyNTkxMjExY2Q5MjlmM2Y4NzE0N2E0YWI2NDRlZGY1MTg0MCBsZWdhY3ktdHJ1bmsKKzEwNDkyIDgzYmE1MzA5ZmYyMjZlMWM0YmIyMmQyNWQzMWY1YmNkYmExNDlkMDkgbGVnYWN5LXRydW5rCisxMDQ5MyAyYjA5YTVkMjYzNjg4ZDA3NzdmNmI2YjhlY2Q5MmYzMzE0YTJmY2UzIGxlZ2FjeS10cnVuaworMTA0OTQgNTNkZGU0MjMyNWY4YTk5NDEzMDY5NDc1NjFiZWY5OGQ0ODEzZTM3ZCBsZWdhY3ktdHJ1bmsKKzEwNDk1IDZlOGJlNjA5NmU1NjMwMmZhNTc4YzZkODQ1OWM1YzUzZmE1MDUwMTMgbGVnYWN5LXRydW5rCisxMDQ5NiBiYmJkMGIxMDVlMjczNWZlZTc3Yzk4ZjRhODZhYzFlNDZmYWZkMjI2IGxlZ2FjeS10cnVuaworMTA0OTcgNDY5OTlkZmNmYWUzZjA1MDY3ZjZjYjFjZDM1M2Y1N2MwYzBiMDg2NiBsZWdhY3ktdHJ1bmsKKzEwNDk4IDUyNjRjYWM4ZjkwMzVmMmM3NGI1NDUxYjU3ZjllNjQzN2I0NzRmOTYgbGVnYWN5LXRydW5rCisxMDQ5OSAwMTFhZTcxZmVhOTY0OWExN2E0ODdmNzZiODA3Y2VhYzQxZDhhYjJjIGxlZ2FjeS10cnVuaworMTA1MDAgOWI4OTAyMzM4ZTE0YjcwOWYyMzg1YWNlMTUwNzAwN2EyNWQyNWU3ZSBsZWdhY3ktdHJ1bmsKKzEwNTAxIDkyYmE3YTllM2I5ZDk3MTk4MjE5ZWRkNDZjODA2ODMyNjMzYmM5Y2MgbGVnYWN5LXRydW5rCisxMDUwMiAzYjkxYWZmYTMzM2U5ODRhNjA2MTc3ZGNmMTIyZTNkN2U5M2E5ZjBkIGxlZ2FjeS10cnVuaworMTA1MDMgNWQyYmQ2NzM4ZWI2MmU1NTI1YTVlNTI3ZWYzNjA3MDAwNTIxMzcxZiBsZWdhY3ktdHJ1bmsKKzEwNTA0IGQxNTdlZTgyMTc3NWMwOTkzNDUyYzcyMGNkZjRiMDJmOGI4YjllMzIgbGVnYWN5LXRydW5rCisxMDUwNSA0OWYxY2Y0YjE3NGNjNjNmM2MxZDJkYjMyMGQzMWE4ODlmZWQ5NDIzIGxlZ2FjeS10cnVuaworMTA1MDYgZDFjMWIyMDc1NGE4MTdmZmY1MTQ5YTkxYzEwYTdhOTkwZmE2NTBkMyBsZWdhY3ktdHJ1bmsKKzEwNTA3IGQ5OWE5MDUyNmFlMGIxOTJlZWNmYzIxZTgxOGYxZWMxYTE3YmQ0MGEgbGVnYWN5LXRydW5rCisxMDUwOCBmNTMyNmQzNTg2NjJiYjIxMGI4ZjE0YmJkNTU2MmZmNmE5YmE3YWU2IGxlZ2FjeS10cnVuaworMTA1MDkgNWRjZjliNWQzM2U2ZTZmMGEwZDA0NzZhYzUwNDljNzBjYmQwYWMzMSBsZWdhY3ktdHJ1bmsKKzEwNTEwIDk1MTQyYzhhMDljODZhOTA3OTQyZjAxNjMxOGUzZWUwOTU0ZDQ3NGMgbGVnYWN5LXRydW5rCisxMDUxMSAzZjAzNjAzNzZjYTAwMTUxNjc2ZDlkZmMxOWRlYWRjNThlYzVjZDc1IGxlZ2FjeS10cnVuaworMTA1MTIgNzEwZjNiNzgzNTE1M2JiNzZlNzA5NzMwN2ZlYmViNGIwZmM3ZWRjOSBsZWdhY3ktdHJ1bmsKKzEwNTEzIDVjY2U4MWUyMzM0OTk2Yzk5OGQwZjZmMmEyNjExNTBhNDFjZDU4YjQgbGVnYWN5LXRydW5rCisxMDUxNCAzZmZkNDVmMDVlMzk1OGY1OGU1YmNmZTVjYTA3ODk2NjQ4MWE0MzBkIGxlZ2FjeS10cnVuaworMTA1MTUgY2QzMDkyMDY5ZjVhMzkzOTEyYmMxYTIwOGNkNTYyMGMxNjgyMDhmMyBsZWdhY3ktdHJ1bmsKKzEwNTE2IDZjNTk0OTg4NTcyYTdkZTI3MTM2N2U0NmE1NWMxMzQ1MGVjNGE3NTggbGVnYWN5LXRydW5rCisxMDUxNyBlMDkxZTlkNDk1ZDVhOWQwNjdjN2M0M2Q2YmZmMDQ4NzU1NDY2MDJkIGxlZ2FjeS10cnVuaworMTA1MTggNWYzNWUyNzgxMDMyZTIzMGNlMDUxZGQ4N2MwYjRkMjcxMjQxZjg1MCBsZWdhY3ktdHJ1bmsKKzEwNTE5IDQzYmUwYjkwMjcxNzA4ODc0YzBkZjYyYTY2OWRiYmI2OTFjMTk1YTUgbGVnYWN5LXRydW5rCisxMDUyMCBhMzg1NTA2MTNhZjNkOWQ4ZTllZGJjNGY5YmI0OWFmMTQwNmNkNjdkIGxlZ2FjeS10cnVuaworMTA1MjEgZGYwZmE1ZGM1OTlhZTA2NTRkNzljYzI5MGI5ZTA3ZWQ1ZGNhM2E5NiBsZWdhY3ktdHJ1bmsKKzEwNTIyIGUyMzMzOTY5YTJjYWNhM2Y3ODk4ZDhiMTRhOTQyMjAxOWUyYWVjYjAgbGVnYWN5LXRydW5rCisxMDUyMyA0OTE5ZGVlMTg3ODFjMTM3NzFlNWFkM2IwN2JiZDZlMDA4MmFmN2FlIGxlZ2FjeS10cnVuaworMTA1MjQgYjhlOGFjZTc5Y2YwMmNjZGE3MjU3ZTFkNTc0YTBmYmNmOTU4OGFmMyBsZWdhY3ktdHJ1bmsKKzEwNTI1IGJkMzBhYzgzMTIxNzIzNDE4ODE5M2JjY2JhZjRjZTFmMDVjZTI0OGEgbGVnYWN5LXRydW5rCisxMDUyNiAyNTRmYzkxYjZiMGU3MzgwOTU4MDc0ZmViNDRiN2VjMTY3YjM4NjhiIGxlZ2FjeS10cnVuaworMTA1MjcgNjY4Y2UwZWRiNGYxYzU0MjlkM2QwMDJiNjI5OGFhZTVjZDgyYjRmNiBsZWdhY3ktdHJ1bmsKKzEwNTI4IDA3NzMwYjgyYTE0M2YyOGY1MmZjYTQ1ZWM4ZDY1YjQxMDg3ZTM4NWQgbGVnYWN5LXRydW5rCisxMDUyOSBhOTMwNTJhZTBkZWI1YTRkMTYwZDA5NjhhNzAwYWQ0MjBmYmU1MDcwIGxlZ2FjeS10cnVuaworMTA1MzAgNWRjYzVjNGExOGJkYTY0ODVkOThiNzA5NmRhMjc5MDM5OGM2N2Q2MiBsZWdhY3ktdHJ1bmsKKzEwNTMxIDcwOTlkZTgzYjE5MWI5MjQ2ZmM5MDk5MTQ3MzNiNTViZTdlMjgxMGUgbGVnYWN5LXRydW5rCisxMDUzMiA5YjhiNTc0ZWYwMDcxZTFmOTA5ZmU3NTM4ZjJjMzU5ZjI5MTI1OThmIGxlZ2FjeS10cnVuaworMTA1MzMgY2I4ZDczMzgyNDhjZWY3N2M4NzVmYjM2ZWFhODQ2YTA5ZWZkOWM5MyBsZWdhY3ktdHJ1bmsKKzEwNTM0IGEzZDkxMmFmYzkwOWFiY2RkMmE1MzE2MmU0ZmZhNzQwMmM2Y2JiMzAgbGVnYWN5LXRydW5rCisxMDUzNCA0NGFiYTRkMjZiMDFmYmFlMDQwM2VmZTY1NGY5ZmQwMzQ3NjA2NzMyIGxlZ2FjeS10cnVuaworMTA1MzYgYmNhZjQ4Yjk0YmIzMzgzYzRjYTE3YTkxOWVmODJmZWFiM2UyZDRmNCBsZWdhY3ktdHJ1bmsKKzEwNTM3IDQzZTgwMmMxNmE1YjFhZmJiODYwMGU1OGQzMjJkYjYxY2QyYTdlMmYgbGVnYWN5LXRydW5rCisxMDUzOCA1YWFjZGQwOTc5NDEzOTNkNmRhNmVkMzJhMjUyNDFmNDM4NzQ5MThlIGxlZ2FjeS10cnVuaworMTA1MzkgZDlhYzkyNDYxODMyOWNjNDA5OTcyMTFjMzYxMjZmOTQyMzc4MWVhYSBsZWdhY3ktdHJ1bmsKKzEwNTQwIDc3ZDRlNmY2NjJjMWJlZTA3NmI2MjBmNmUwOWViNzliY2UxM2E1ZTYgbGVnYWN5LXRydW5rCisxMDU0MSA0Mjg1ZjhiN2JhMGIyZmIxNzk5NDdiZTI5ZTY1ZGNiODEyZWExMGMxIGxlZ2FjeS10cnVuaworMTA1NDIgMDc2NmRmNTAzZWE1M2RmNDE2ZDhhNWU1ZWIxYWZhYTI5Y2FhOWY1MiBsZWdhY3ktdHJ1bmsKKzEwNTQzIGQ5NzA0OGY4OTFiZjA2YWRkOWFhODc5MTg3M2JiZDU0NDM2YjhjNDAgbGVnYWN5LXRydW5rCisxMDU0NCA5OGVjNDIzY2E2ZmE5OTEyYTgyMGVhYTA1NmY2ZGNmZDc0YzdjY2Q3IGxlZ2FjeS10cnVuaworMTA1NDUgMjI0YjVjMzZhZmVmODU2Yjg5OTZmMGIzMDUxYzg4YzQ4MzEyMTU4MyBsZWdhY3ktdHJ1bmsKKzEwNTQ2IGYwYmQ5ZWU3OGE1MjE3NjMxMTFlZTQ5YTZhNTcyOTllMGViYjNhNmQgbGVnYWN5LXRydW5rCisxMDU0NyBhN2RkMGY1MmYyYjYwOTQ2YWM0NTJkM2I2Yzg4ZDcxNzY0MDJiOGFiIGxlZ2FjeS10cnVuaworMTA1NDggNDhlMjM0OWQxMWM2MDkzNzJiZThlYmYwZTkwZGJhM2Y2ZGRlYjk3ZCBsZWdhY3ktdHJ1bmsKKzEwNTQ5IDlmMTZmYTcwZDA5MGVhZWJlZTAwNDAzYjQ4NzU5NThkN2FhYmRhNmQgbGVnYWN5LXRydW5rCisxMDU1MCA4NmE2MTkzMDQ5YTk2ZjQwNGY5OTdhNzY5YmUyMjcwMjkwNmJiYzk4IGxlZ2FjeS10cnVuaworMTA1NTEgNGEyZjFjNjlmZGU4MWU5NmE1MWE0ZGYyNDQyM2I1Y2JhZDE5MmJkMSBsZWdhY3ktdHJ1bmsKKzEwNTUyIDA1MmU3NzY2NDAzMmUxODA2MGMyYTE5MWI0MjM0Mzc3ZGI4ZTllNGQgbGVnYWN5LXRydW5rCisxMDU1MyBiODE2MmQwODY4NTAwZTkxZmU5OWFiYjk5Y2MyYzNlNjRmZTg2MGYxIGxlZ2FjeS10cnVuaworMTA1NTQgNWE2N2Q5MDUxMDI2MmExN2FlNWY2N2NjY2Q2NDg1NzI0OTEzOTIyYyBsZWdhY3ktdHJ1bmsKKzEwNTU1IGQwZmY0MTc0NmEyNjAwZTRiYWZjZmY4Y2Q2NzI4YzdkZTc4OTM5ZGYgbGVnYWN5LXRydW5rCisxMDU1NiBlMzkxNDVhMTMwOTY4MDJkNGU0ODFjMTFkNjkyNGIwYmNmNDk0NjQ1IGxlZ2FjeS10cnVuaworMTA1NTcgZGUwMjllNmY5ODM4OTFjN2UwZmJkMGFmYWY0MDhmMjE3ZTEyYzFhNCBsZWdhY3ktdHJ1bmsKKzEwNTU4IDViZmYwNDE3MTc5ODU4ZTMyZDhjNjY0Y2YzMzdlYWVkMjhiYjExZjUgbGVnYWN5LXRydW5rCisxMDU1OSAzMzE3ZjcyNzIzYmI2MDk2Yjg5YjcxNjA0NmM1MmUwMGVmMzVkZGJkIGxlZ2FjeS10cnVuaworMTA1NjAgYzE1MzMwZWViMTkyYWQ2NmQxYzRlMTQxNGJkMzg0MzU1NTEyNWQzNSBsZWdhY3ktdHJ1bmsKKzEwNTYxIDY1OGQxODRlOTIwNDFiOWM2OGQ4NzA2YjE2ZDA4ZTExNzJlMTg5MzYgbGVnYWN5LXRydW5rCisxMDU2MiAwYjBiNjlhODhiN2I5NWI2MTMyZjMwYWY1ZWExOTNhN2QwZTBlZjcxIGxlZ2FjeS10cnVuaworMTA1NjMgNmI1OGI3OWE5NThkNzdhNThmNGU1NDc2YTg5ZTcwZDM1NjYxZTg1YyBsZWdhY3ktdHJ1bmsKKzEwNTY0IDdhY2UxNzJjMjUyMWIwMmVhYTFmZDZkY2U4ZTM4MTAyODNhZjcyOTcgbGVnYWN5LXRydW5rCisxMDU2NSBiYjNlYzgxMmVjOTBmMjQ4Nzg4M2U4YjlhNzBlNzA0ZjNlM2VlOTgwIGxlZ2FjeS10cnVuaworMTA1NjYgNWUzYmI0MTU2MDA0MjVmZDlmZjhmMTNjMzU0NDEwYTlkNGU2M2Q5MCBsZWdhY3ktdHJ1bmsKKzEwNTY3IDY5MmJlMTIzZjU0N2YxZDM0NzUxYjRlMWFkNzlmM2E0OTM0NDE1NmMgbGVnYWN5LXRydW5rCisxMDU2OCBlM2RjZTNiOGMyODI1OWM2MTk5N2YxYTgzOTU1YmJiMmQzOTMzMjc4IGxlZ2FjeS10cnVuaworMTA1NjkgMDQ5MzEzN2E4NDE0NjFhYTU4MjhhNThkNDE1NDJiYjlmYWFmODI3NiBsZWdhY3ktdHJ1bmsKKzEwNTcwIGM1ZjkyZWU4NDk4ZjVjOGIyYzQ2YTUwYmNkYTA1NDdjYjA5ODVjMzEgbGVnYWN5LXRydW5rCisxMDU3MSBkZjM3Y2E0MDM4ZjZjMjYxODFlNTFhOWUzYzFhNjhlYzg3OWQ2Y2YzIGxlZ2FjeS10cnVuaworMTA1NzIgOTZhYTU4NzI1YzBlNDA1OGIzNTg4YmNlNjJhOGRlY2JkYWMyNDkyZCBsZWdhY3ktdHJ1bmsKKzEwNTczIDA4ZTFiYjg0MDdlNjUyMDQ0MjBkODhlMjM4MTQxYjQ2NTRhNGM3ZDMgbGVnYWN5LXRydW5rCisxMDU3NCBhZDlhYWQ4MTNhNjFiMWNiZjUzOGY2YTk0ZGQ1NzYzMzY2NGY3NTY2IGxlZ2FjeS10cnVuaworMTA1NzUgNTczYmMwNjQyNjRjYjdlNGFhYTlkZjI0N2QwMjJhYzc5OTExNDNiYiBsZWdhY3ktdHJ1bmsKKzEwNTc2IDQ3YmRmNDVhZmI2ODYwNzA1MTQzMzMyYjUwY2NkMWRmZmZjNGFmMTQgbGVnYWN5LXRydW5rCisxMDU3NyA4YzFmMTYxYzZjOGMwMWVkODBiMzM1MDMxOGU3MWMzZWJmMzkyMWU1IGxlZ2FjeS10cnVuaworMTA1NzggYTZjZTJkZmYyNzM1Yjc3MjViNGQ4M2QyMWZkMzBjOWU0MTI4Yzk4MiBsZWdhY3ktdHJ1bmsKKzEwNTc5IGI1NzY4NDZjOTRiMzhmNTQ0NmViOTMzYzdmMDc0OWFkNjRmNzExYWEgbGVnYWN5LXRydW5rCisxMDU4MCBhNTVjYmE5NjM3NjE2M2UwY2Y2YzFhZmVmYWY3MTkwZThiZmU0ZTJlIGxlZ2FjeS10cnVuaworMTA1ODEgZjJmOTEyODIzZWU3ODU3MWZmZmRjOGUyYWNhNzMwOWIzYzEyNTNmNCBsZWdhY3ktdHJ1bmsKKzEwNTgyIDI2NWMyNzk3NzgxYTA2OGZhNTI0MDU5MzhjMDZlMDIzMzg0NDMzNDMgbGVnYWN5LXRydW5rCisxMDU4MyA0MjdmMzQ4OWU1MmI2YWMwZGI2ZGM1ZmYyMmFhMzRmOWE1OTc4YTZjIGxlZ2FjeS10cnVuaworMTA1ODQgMTFhMWJhZDZkZjY3MzNlMmM2MTkzYzliYThmNmZlNDc4MjNiYTdlNSBsZWdhY3ktdHJ1bmsKKzEwNTg1IDkzMzQ4ZTVhODVhMjQwZDE5NjNhNDJmNjU1NGMxMDc5MGIxNjczNDMgbGVnYWN5LXRydW5rCisxMDU4NiA3OTFlZGE1MmIzZDljYmFlYWVlYjgzOWFjYTVmNTk1YWNkYTczZWNjIGxlZ2FjeS10cnVuaworMTA1ODcgOWIzYjAxMzJjMDIxYzdjNmM4OGFiY2M3YTQ1MTJhZjliYThkNWMwYyBsZWdhY3ktdHJ1bmsKKzEwNTg4IDI4MTBmYzYwOWFlZDA3MjA3NTc4MjdiMTk3N2YxMTFhMDU0NWQ1YmQgbGVnYWN5LXRydW5rCisxMDU4OSBhOTk3M2Y5YjU0MTc3NzI0YWY1YmU5ZDM2ZGUwOWUyYmQxNDMwMzBiIGxlZ2FjeS10cnVuaworMTA1OTAgMmU0OWJjODlmYWZhMGRkM2Y2ZTU2Y2EwM2JhMTE0ZTBjNjA3YjNlMSBsZWdhY3ktdHJ1bmsKKzEwNTkxIGYwNzA3YWUwMDQzMzg0OWFkN2NiMDVkNzcwODRmM2U1YjFkODc5ZDYgbGVnYWN5LXRydW5rCisxMDU5MiA1YzliZTk4ZjUzNDczOTRlMWRmOWU5MGIzMTkyNjA3OWQwMTVjYmI2IGxlZ2FjeS10cnVuaworMTA1OTMgYjZjZTE3MTkzMjNhYzdkZTlmMjFiN2ZmNjMxOWFhNDY2YWYyNTMyMCBsZWdhY3ktdHJ1bmsKKzEwNTk0IGUyZDMzYzA3MzJiZmIxOTE3OGNmYTE4N2VjOTI3YTQwNGU2ZmU5OWUgbGVnYWN5LXRydW5rCisxMDU5NSA1MzBmZjNiOTk3MjJiNmMwZGM1N2ZlNDQ2ZTNhYjY0Y2IyMDAxZTc3IGxlZ2FjeS10cnVuaworMTA1OTYgZDk2MjIzYjc3ZTJmMzcwOTQyZmE4MGRmN2FhYjUyMTQ3YmRkMTdlNCBsZWdhY3ktdHJ1bmsKKzEwNTk3IDU5OTk3ZmRjODFkZjdmMTgzMGFkZmUyYzY3MjE4YWEwMzZiODdmNjQgbGVnYWN5LXRydW5rCisxMDU5OCA5NWVmZWE2OGYxOGQ3ODc4NTc5ZDEwZDAxODg3Yjg0NzI2NTc0OWEwIGxlZ2FjeS10cnVuaworMTA1OTkgN2NmNTE2NTdiMDhjYWFiNDQ3M2E3MDZiZWRmZmU3YTE0YmE0MmVhNiBsZWdhY3ktdHJ1bmsKKzEwNjAwIDVhZWNjMjc3ZTZjYWEwMGNhN2Y1ODQ5ZjJmYTNjMjc0NGMwOTQxY2YgbGVnYWN5LXRydW5rCisxMDYwMSAwNjhmZWExNWNiY2Q4NjRmMzkyOTI3MTdlMWVmMTA5YTZhN2Y1MjI2IGxlZ2FjeS10cnVuaworMTA2MDIgZTkwNGU2ZGZkNzBiMjUyNWZkMmVjYjJjN2Y3MDIxNTNmZjUyZWY4ZSBsZWdhY3ktdHJ1bmsKKzEwNjAzIDhjNTUyZWVkYjFhZmFmMWQwZTA5NGZiNzY4OTNlOTc2YWRkMzgyNGIgbGVnYWN5LXRydW5rCisxMDYwNCAwZGI2ZjY5MzJiNzM1YzcxYzAzYWRlMGM3ZWIwNTg1ZjIxNmM2NTk0IGxlZ2FjeS10cnVuaworMTA2MDUgYmQ3NDRhZjY4NDVmOGIxYTVjNWNiMTkzMTVkZjVhNTJlMDQxYTZmMiBsZWdhY3ktdHJ1bmsKKzEwNjA2IDM2NDA0ZDljYjVlMTVjYmYyZTcxZDliOGMzNTM2YmIwY2FhOTAyYzAgbGVnYWN5LXRydW5rCisxMDYwNyBkYWE1NDEzMTQ1M2I3N2UzOWQ1OTgwYzY3Yzg4ZDk5MDRiNjE4ZDE0IGxlZ2FjeS10cnVuaworMTA2MDggMDQ3NTMzNzg5MzU5Zjc5OTdiNGY1MWUyMjdjYzhmYmNiYjAwYzgyMiBsZWdhY3ktdHJ1bmsKKzEwNjA5IGZkYmE2Mzk3YjcyOWU0NzNhYzNmZjYzZDQ5OGQ5OGMwNTI5NDhlMTUgbGVnYWN5LXRydW5rCisxMDYxMCAxMDk0ZWJiZDNhNDU3NGQyODJjYzhkMzA1OTA0MmUwZWRlODAyZTA4IGxlZ2FjeS10cnVuaworMTA2MTEgMWJjNjU2ODc2MjZiODc5NDY0ZjY4YWNlZDZmMGVjY2JjYzUxNDc2OCBsZWdhY3ktdHJ1bmsKKzEwNjEyIDhiNDljOTE4YTI1ZjM2ODEwYTVlMDEwMWJjYmE5MWQ0NjhiNTk3MzcgbGVnYWN5LXRydW5rCisxMDYxMyA0MzIzYjI0MzM1ODFkOGM4Yzg5MzExZGQ2MDYwZTAwZjVlYTM2OTcxIGxlZ2FjeS10cnVuaworMTA2MTQgNjA4OGQ2NTJiOTMyODQxYWJkYWM1YzNlZTdkMmY2NmQ5N2U4NmM4ZSBsZWdhY3ktdHJ1bmsKKzEwNjE1IGM3ZDk5ZjZkMmUyZjhjMTc5ZTdkMDYwN2Q1MjJjODFjZjUxN2UyYjcgbGVnYWN5LXRydW5rCisxMDYxNiBhYzI4OGRiNWJjOTFjNDQyNTQwZTJiMzdhODcyYjk1M2VhYjhhMmU3IGxlZ2FjeS10cnVuaworMTA2MTcgY2Q2YjlmYzExNGE0MTVmYTRlYjU0MzUwNjhiZDQ2YjQxNDkzOGQzMCBsZWdhY3ktdHJ1bmsKKzEwNjE4IDQ0MzU2ZWU3ZTU3OTA2MzQwNGRhMWIyMzVkNjIwZWMxMGFlOGE1OGUgbGVnYWN5LXRydW5rCisxMDYxOSA5ZDAzMTAxNDM2MDA4Y2UwOGQyYzY0NWYzZGFhYmJjNmVjYWJlYjJkIGxlZ2FjeS10cnVuaworMTA2MjAgYWMzY2E1NjZjYjQxNjFjNDA5ZmFlMWI0YTdmMzgzYzcxMzM2OWYwNCBsZWdhY3ktdHJ1bmsKKzEwNjIxIDIzYTgzNzcyNjIyNjRiNTc2M2MzZjliZWUzOGIyOTk2Y2JkODNjMjEgbGVnYWN5LXRydW5rCisxMDYyMiBiMTQ4ZmExNTI1ZGI5OThlZWMzMWIwOWFmOGM4NWQ2YzNmMmJlZTg3IGxlZ2FjeS10cnVuaworMTA2MjMgZDYwMWFmODA2YTU3MzNiZjM3NTZlMjliN2NlMWEzZjAzNWZmMDU1OSBsZWdhY3ktdHJ1bmsKKzEwNjI0IGFhM2I0ODAwMmY4ODdlMzZhZjJiMjA4NzcwOWRkZjYxYzk4YTZhM2UgbGVnYWN5LXRydW5rCisxMDYyNSBlMDMzZWQ1MGNiMzc2Y2Y2YTVjODVmMDAzM2YyNzFlMzcyOTJiODg5IGxlZ2FjeS10cnVuaworMTA2MjYgY2NkODM3NWRiMjczNmRlOWRhNjUwZjc1OTlkMGIzNTc4MGZhMGZiMSBsZWdhY3ktdHJ1bmsKKzEwNjI3IGMwZTM5NDRiNmE2NGZlMmU3M2Y4Y2RjNWEwM2JmOWY1YTQ2MDBkNGQgbGVnYWN5LXRydW5rCisxMDYyOCBiZGJlMDgyZWUzODNkYThhMDJjNjJlYTNiMGNhOTE4Y2FlZGFmODJiIGxlZ2FjeS10cnVuaworMTA2MjkgOTI3OWVmNjg2OGViYTNhNTUwOTkzOTJlNWE1MDcwOGQ5ZjU4NTQ0OSBsZWdhY3ktdHJ1bmsKKzEwNjMwIDkxYWFlZWY3NWE3MzYyZjg3YjUwYzYxZjRlMDkzYjY5OTQxMTA2YmIgbGVnYWN5LXRydW5rCisxMDYzMSAzYTUyMDI4ZmU5MzYzZGEyZjYxY2VkZmUzNGM5OGRmOTZmNDNhN2JhIGxlZ2FjeS10cnVuaworMTA2MzIgNDY2ODZkNDBiZGZkNmMzMTE3N2I5MmJmNGE0MTVmOTgwNmQ4ZTdhZSBsZWdhY3ktdHJ1bmsKKzEwNjMzIDA1ZmViZjkzMWU5MWI0YmY5NjJlOTkwMzFiODc1Zjg3ZTRjZmI3NDAgbGVnYWN5LXRydW5rCisxMDYzNCA5OTVmYjU1YjNlNmFiZDIxZGRhMGMyY2Y3ZmM2ZWI4OWVhNDE2ZGRkIGxlZ2FjeS10cnVuaworMTA2MzUgMjU1MjMzZTQyOTE4ZjM0OWYxZTMzNDY4YTBiYzJhZDExMTE1MzJhMyBsZWdhY3ktdHJ1bmsKKzEwNjM2IGFkYTQwZTY5ZmQwOTM2ZTM1MTZhMGQyYjcxYTFmYWJlNTcxOGVjMzMgbGVnYWN5LXRydW5rCisxMDYzNyBlNDliMzBjNmE4MGFjMGI3ZjhjNzZiOGEwYWE0MmZhZTQxNzc2M2U2IGxlZ2FjeS10cnVuaworMTA2MzggYmJmZTk5YzI3ODVjOTM3MjMyYjdlM2Y3YjNlYjY1ZjUxNDhmZWNhNCBsZWdhY3ktdHJ1bmsKKzEwNjM5IGIxYjI2ZTBlMGEwYWRhZDNjNzFkYWM4ZDliYjhjMGNiYWI1NGJhN2MgbGVnYWN5LXRydW5rCisxMDY0MCAwNTY1NzJlMDc4MWE2YTIzMTNiMmQzNDk3ZDU2NzFiMTY0ZThkMDhkIGxlZ2FjeS10cnVuaworMTA2NDEgY2U5ZmM2NDUyOGE3OWRkOTEwZTU0NjZjNmU1NmJlOTRkNjk2MWQ0NSBsZWdhY3ktdHJ1bmsKKzEwNjQyIDEyNWJmZDg5Njk2NzE2MzMzY2FlNGU4YzM0N2VmN2M1ZmVlYjhhZDYgbGVnYWN5LXRydW5rCisxMDY0MyAxYmJkZDg0YzdhNDA5OTY1NjM4ZmMyZmFjZDRiM2E0MzM3MmI4N2E3IGxlZ2FjeS10cnVuaworMTA2NDQgYTMxMzRjNjk3MGViYmU4YzRiNWVjN2E2OTY2ODYwYjIxNjMxYWJmMyBsZWdhY3ktdHJ1bmsKKzEwNjQ1IGVhNTliYjkyMTM4MDUxNTEwNTE3OTE5ZDEyYjg4M2JjMGY0ZGNmYTggbGVnYWN5LXRydW5rCisxMDY0NiBmM2M4ZmJjNzkzZmVhNWU3Y2E4NDZlYjhkODBkMTNiMDE4OWVjZTdiIGxlZ2FjeS10cnVuaworMTA2NDcgNmY1YzkzNmFlMmQyMjI4MWQxZmEyM2Q1YWYyOTRlYTM4OGUwZDMyZiBsZWdhY3ktdHJ1bmsKKzEwNjQ4IDE1NDZmYzc2ZDAwZWNkNWVmYjAyMjdlYmVkZWVkNzQ3ZGIyNWQ0OTggbGVnYWN5LXRydW5rCisxMDY0OSBiOWQ5YzBlZWI0N2MyNjA4MzczYmM5NDhhM2VmODBkNTA2Zjc0ZTdlIGxlZ2FjeS10cnVuaworMTA2NTAgYzlkMGQ2MzFhYmFhZTBlMDI3MmUwMmE1MmY3YjQ1ODUxMTc0OTIwNyBsZWdhY3ktdHJ1bmsKKzEwNjUxIDI4NGFkZDc0ZmUzNzA1ZWMxZDVkNzFkNmFkOTBlMTQ5YjUyM2ZlYWMgbGVnYWN5LXRydW5rCisxMDY1MiA1MzZlNDM5YTY1ZjlkMGI1MjNkZjkzM2Q2MmY1NjczNGViZmVmYWJlIGxlZ2FjeS10cnVuaworMTA2NTMgNTczMmVjMjQ4N2M1MGM2ZDM5ZTdkZjI3NzUyZjIxYjcxNzBlZWQ5MSBsZWdhY3ktdHJ1bmsKKzEwNjU0IDViYzhjYTEzY2ZlMDFjMTgxNTU1MmQ5OWIyYTc5MmE0MjFkNGI0ZTcgbGVnYWN5LXRydW5rCisxMDY1NSAyNmM2MjJkMzcxN2QyMmM3MWM3YTA4YjU3OWJiODUxZDQ4MzMzZGY3IGxlZ2FjeS10cnVuaworMTA2NTYgYThkZjA5MGExMmJhZjY4ZjU1MjQ0NDFlMjJmYmZhOTNlNzI4MWM1OCBsZWdhY3ktdHJ1bmsKKzEwNjU3IGEwYTBjMTQzMzhjMDc0ZmQ5NmYxZTcyY2EyNWMyNDA0NmE2YmQ5YWMgbGVnYWN5LXRydW5rCisxMDY1OCBlZTI3ZjNhOTE2NmY4MDEzMzNiZjM4MDExMzNiMTY5NzRhZmE0OGE5IGxlZ2FjeS10cnVuaworMTA2NTkgMzBmYmUzMDJjNTE4ZmY4NGVhNTk1ODhhOTE4ZWU5MWNkOTQxZjdlZSBsZWdhY3ktdHJ1bmsKKzEwNjYwIDRhN2ZmY2RlNDBkYzhmNzAxMWVhMjEwZDVkN2EyZDExNTM2YzM3MzcgbGVnYWN5LXRydW5rCisxMDY2MSA2OGVlOGFiZDk3ODI4YjA1M2QwNzhkYWEyN2M5MDkyOTdhNzlkZmQ3IGxlZ2FjeS10cnVuaworMTA2NjIgYzY5YWQ1NjZhZWIxZTUzMWRiODJiMjc2Y2QwNGNiOTdmZDNlZjBiNCBsZWdhY3ktdHJ1bmsKKzEwNjYzIGRlN2ZjNjZjMGI0ZmRmYWQxNWFhZWM0MDBhZjcxZTI1ZjNhMDRhZWIgbGVnYWN5LXRydW5rCisxMDY2NCA2ZjFkYjUzNGRmYWU0YWRmZDRiMDNmYzE5NzNhOTIxMmVhZWJlYTUxIGxlZ2FjeS10cnVuaworMTA2NjUgMTQyMTY1ZWQ4NGQ4MGJjMDU3MDY2ZDBmNDUzZjhjZDdlMWVjYWJlMSBsZWdhY3ktdHJ1bmsKKzEwNjY2IDkyOWI3ZTZlNzUyMGM1ZGJjMDI1MjI5NTVjOTJiODA0M2Q4NWEzZGQgbGVnYWN5LXRydW5rCisxMDY2NyA3NzU4MDhhMDllNDZiNzczNDFjMWFiNDY3MjE4YWYwZjVmOGY1MjBmIGxlZ2FjeS10cnVuaworMTA2NjggNjczNWVmNjYyZjM5ZDhjY2EzZWI4MmQ2ZDU3NzljNTE3MmM2Y2QyMSBsZWdhY3ktdHJ1bmsKKzEwNjY5IDk5N2Q1YTIwMDBlMDQ1MjZjZjU5ZjEzNDZjNjZmZDczYzg3YTQ2OTMgbGVnYWN5LXRydW5rCisxMDY3MCBjZTJkMTIwYzM5MDNmMjU0YTU4M2Y2Y2M2MDE5NGIwN2RiYmY0NzBiIGxlZ2FjeS10cnVuaworMTA2NzEgMjVjMmFlYTY0NTAxN2NmYjE0MWMxYWE0M2NmNWU1MTk3MDExMTc0NCBsZWdhY3ktdHJ1bmsKKzEwNjcyIDM1YWE2N2ZjNGU2MGY2ZjY5MjdmMzczMzhjNTVjYmRlNTBlODRlMTcgbGVnYWN5LXRydW5rCisxMDY3MyBiODFiZjljYTE3OWQzZWI2ZGNkNzczZTA0ZjRkYWU4MGJlYmM5OGI0IGxlZ2FjeS10cnVuaworMTA2NzQgNDg5NGRkZDQ1MmVlY2MxMjY5NzE3YzY1NzIwNGEyMjJhNzcxODk5YSBsZWdhY3ktdHJ1bmsKKzEwNjc1IGI2Njg2Zjc1Mzc5OGY4MmYxNTdiNjBlYWFlYzAyY2E5ZmQyZWY2MTUgbGVnYWN5LXRydW5rCisxMDY3NiA4MjBkNTEwZDFkZDYwYzAxNmU1ZmE3ZmRiYmFkZDU3MDVhYzhjNTk0IGxlZ2FjeS10cnVuaworMTA2NzcgODg1ZGU0OWI0NDVjNTNjNTc4NzBiMjNhMTJiZDMxMjhlYTlhYWFiZiBsZWdhY3ktdHJ1bmsKKzEwNjc4IDNhNTViNGM1ZTNjNzE5OTVkYjJmMzk0OWZmMDZiNjdjOGM3MmM5ZDEgbGVnYWN5LXRydW5rCisxMDY3OSA4M2E2OTMwNWNiMDZlMTM4YTA5N2I2OGVjN2M2MmU3ZTA1MDA3NzU3IGxlZ2FjeS10cnVuaworMTA2ODAgYzMxYzU5ZjE5MmFmMjIwNDE1ZWJjNDU4ZmVmMTZhNmYzNjg1ZTc2NCBsZWdhY3ktdHJ1bmsKKzEwNjgxIDQ4MmU0YmEzM2MwOGY2YTY4MTJlYjhkYTVmMzIzOWQzZThkNWEyMTggbGVnYWN5LXRydW5rCisxMDY4MiAwNTA5NjA1MmQ4MjU3YTAzNzgwODJkYWQ1MzJkZjk5MjY5ODVmNzI3IGxlZ2FjeS10cnVuaworMTA2ODMgOWYwYmI4N2RkZTYwMGFjOWJjZDkzYTgzYmNiYjkxMDZmYzkyOTRhNiBsZWdhY3ktdHJ1bmsKKzEwNjg0IGMyOGIwNTM4YTQ0NjU0N2ZlNzkxODZmNzhiYjM1ZTkxZjM1ZjRlZWYgbGVnYWN5LXRydW5rCisxMDY4NSBkNmY0YzJhNTMxMmM0ZTFkZDNlMmE5MGMyMzBiYzI5ZmM5NWIxZTAwIGxlZ2FjeS10cnVuaworMTA2ODYgYzQyODliODEzOTI0YjI3NTNjM2I5ZTk4NDM5NzMzMTQ3ZTdkZjY2MSBsZWdhY3ktdHJ1bmsKKzEwNjg3IDdlZDEwN2FmOWZmNDk1MjIwZmRjZDRkZjA0Y2EzZjFmYTQwZDAwYjkgbGVnYWN5LXRydW5rCisxMDY4OCBiNTQ5NDk2OTAwNzc5NzQ0MzNkYzQ3OTAyYjFmZjMxYWU2ZGUzMjIwIGxlZ2FjeS10cnVuaworMTA2ODkgZTI2NTY5M2YwNzkwMjA3NzI0MTIyYjA4N2Q3YmYzMWVhZGFjNGNkYiBsZWdhY3ktdHJ1bmsKKzEwNjkwIDM0Y2NhODMyYTRhZmUzODkxMjYwZDhjMDVjN2MzNjljOGY4YTUwOTAgbGVnYWN5LXRydW5rCisxMDY5MSAwYjdmM2E5MzIwODVjMzQyMjBlOTkzM2Q0MWQwMzEwNWRhMzM3OWFhIGxlZ2FjeS10cnVuaworMTA2OTIgMjAzZTJhYjYzOTM2YTI1ZmUyYjBhMWY2OWYwNWU2N2JjMTlmMjk2OSBsZWdhY3ktdHJ1bmsKKzEwNjkzIDE1ZWExNWUwY2EyYWI4NThlZjQ5NDc1OTQ0MDNlNjdhMGFjYTUyMWQgbGVnYWN5LXRydW5rCisxMDY5NCBhNDQ0Y2Q4MzVjMGUwNDY1NzFlYTAzZTc3NzZmNjk1YzdkZTQzOWU1IGxlZ2FjeS10cnVuaworMTA2OTUgMzBjMjM4NWNhMzg5M2EwYjkyYmFhZDUyMzAyNzBiNDY1MDYzMTU1YiBsZWdhY3ktdHJ1bmsKKzEwNjk2IGJjMmU5YjRlYjhkZDU4NDcyMzY1NGI5OWViYjAxOGRiNTk5M2RkODcgbGVnYWN5LXRydW5rCisxMDY5NyBmMzIwODAwZjBmYTU1YWZlNzg5ZTA0MDIxYWU4YzhiNTgyMzI3Y2VhIGxlZ2FjeS10cnVuaworMTA2OTggYTE5NjYxMDc2NTI5YThhZjFmYzNmZmFkM2ZiNDNlMzk5ZmM3OTJlMSBsZWdhY3ktdHJ1bmsKKzEwNjk5IGYxYzk2MDkzMTQxMzE5MzM4MTVkYWM0NWQ5MjllZDY3ZTQ0OTczODggbGVnYWN5LXRydW5rCisxMDcwMCAzMjhkNDZjNDczZjRlYzBlMmMwZmQwYjMyYmQ5ZjUwMzg1ODliYjRhIGxlZ2FjeS10cnVuaworMTA3MDEgOWQ1NGFhZjAxNjNkYjBlYjUwNWIyMmFhZGNhNmU4YWQ0OTJkMjMxZCBsZWdhY3ktdHJ1bmsKKzEwNzAyIDZhMDg3YWUxODBiYTM1OGEzMWViZDc5MTcwYTNkYzgzMWVlYTU3NDYgbGVnYWN5LXRydW5rCisxMDcwNCBlODM0YWU3M2RlZGRmMmJjMGY3NmY5MGMyYTA1OGZjMjNjMTY1ZDBhIGxlZ2FjeS10cnVuaworMTA3MDUgMTM2MmM5MWVmY2QyN2UyNjUyYWZmZThlZmE0M2Q1ZjJiYTkzYjg4MyBsZWdhY3ktdHJ1bmsKKzEwNzA2IDVlMzk0YTA3YTNhNGYxMDFlOWY0MDlmYzIxYjlkNGNkZDQ4NmQyNzEgbGVnYWN5LXRydW5rCisxMDcwNyA5ZmMyYWY5ZTU4NTlhMGJhMDcwNzgzZmIwN2FhOWYzNWMzOTdhY2M5IGxlZ2FjeS10cnVuaworMTA3MDggNjlmMmUwNWNjMzc4ZWQzNWIxYzRlMDY5MTdhNzNkODk4OGE5NmRjMCBsZWdhY3ktdHJ1bmsKKzEwNzA5IDRhMTNhNGQyNTg4YjMwZGIwNTFmMWM0OThhNGU0OGY0ZmEwYzEwMDcgbGVnYWN5LXRydW5rCisxMDcxMCA5ZDY0MmE3MzVhMTMyN2QxZmZhZDM2MmNlOTA3ZTdkMmJmOWVkMGVmIGxlZ2FjeS10cnVuaworMTA3MTEgZGY3NTJjMDhiNDYyMjA0NDJmYmI3ZmRhZmNkYTRjZDZkNDg1NTI0YSBsZWdhY3ktdHJ1bmsKKzEwNzEyIDg1YThhZTZkZTI3ODU4NDE3MzQ0YmE0ZWI3MDdmZGNiOGM4OTg0YzggbGVnYWN5LXRydW5rCisxMDcxMyBhMTAzY2Y2ZDM4NDViNTU4YWM3ZWVjMzdlZjI3MGQ5ZDVhNDgxZmU3IGxlZ2FjeS10cnVuaworMTA3MTQgZWNkZThhNDVkNDI1MTMxOGRiNzQzNzZhOWQyNjkyOTM4Y2EzODkyOSBsZWdhY3ktdHJ1bmsKKzEwNzE1IDBlYzlkYzlkMjAxZjJmMTQ0NTUyOTkyMmQ4MmVhZjFjZjFmMGVkYTcgbGVnYWN5LXRydW5rCisxMDcxNiA0MDZkZDJiMzY3OTM5NTk3Y2QxYjFlNDFkNTdiMDQxODIwMDI3ZTViIGxlZ2FjeS10cnVuaworMTA3MTcgOTMwNmY1OGNkYmE1YTFkYTI0YzMwNWI1MTY3MjA3Y2EyY2NkZTgzYyBsZWdhY3ktdHJ1bmsKKzEwNzE4IDE0MTE4YjU3NjcxZWM0YWE5Yjk0NGYwZDkwN2NiNWZhOTJjZmY0M2EgbGVnYWN5LXRydW5rCisxMDcxOSAyNDAzZTkyYTRhNmMwOGI5NTMxNzQ2NGRlMGJmODk3NzlmNzQwODQ5IGxlZ2FjeS10cnVuaworMTA3MjAgMDdjMGEzMzFjMjY5MjJiZWYyODE5ZDMwNzYxNjVhZTg1YWUzZTBiZiBsZWdhY3ktdHJ1bmsKKzEwNzIxIDNiZTFhZDlhODU4N2YzNmZhM2NjZTU5OTIyNjE5Zjg2OWU2ZjM5MDIgbGVnYWN5LXRydW5rCisxMDcyMiBkZTJmZjg5ZDZkNGJlZjJiNWY5ZWU4YWRlYzA0YzFkNmQxZWNjNDFlIGxlZ2FjeS10cnVuaworMTA3MjMgNDAzM2ZlYjI2ZGE4OTlhNWUyMjcwZjIzYTRjZDNkNzZkYzRiYzNhNSBsZWdhY3ktdHJ1bmsKKzEwNzI0IDA3OTJkY2RlOGUzMTFkOTZmMThjMTE2OWY1YzA2NzM0MDYxZmRiYzkgbGVnYWN5LXRydW5rCisxMDcyNSA3NGVkZDVjZGE5ZmQ5YzU0OTFlNGQ4YWM4M2NiMTJkNWQyYTYxZDhlIGxlZ2FjeS10cnVuaworMTA3MjYgMTA1MmIwYjJjNmVhMGY1MDY5MGNkNDRhMDk1NTdiMTY5NjQxMTczNCBsZWdhY3ktdHJ1bmsKKzEwNzI3IDJmYWViNzJiYjY0YTE5YzkxNmJmZjQ4OWFhNWY2OTQyYzM3ZDMxZWQgbGVnYWN5LXRydW5rCisxMDcyOCA4NTIzZWNhZjU5YzU2OWE5MjM4ZGMzMzE1ZWVlZDA3MmUyMTI3ZGMwIGxlZ2FjeS10cnVuaworMTA3MjkgNzM1NmQ0ODg4YThiY2E5MzQ0MGUyOWE3OWZiNTk1YWZjZWEyZGMyYyBsZWdhY3ktdHJ1bmsKKzEwNzMwIDI0NmFjYWQ5Yzg5M2RiZDZlNzljZTEwOTczMGM4MjM0N2I1NmY2MjEgbGVnYWN5LXRydW5rCisxMDczMSBhYjBkNWYyNjVkNTRlOThmMDVkOGM3OWMwZmUyYWVhMjllYWJhYjMyIGxlZ2FjeS10cnVuaworMTA3MzIgNTBkMzViZGYyMDQyZGUyMGM2ZTdhYTIxZjFiODhmNDJjODdmYTk1NyBsZWdhY3ktdHJ1bmsKKzEwNzMzIDM3YzNlYzRmM2QzZjlhNzNkNzY4ZWVjMDQ0M2M3NmRlOTg1YzVkMmEgbGVnYWN5LXRydW5rCisxMDczNCBmYzMzNTBhZTVmMmE5NTY3MWY0ODU1NWI0ODZkNzg4YzI5MGQ5NDVhIGxlZ2FjeS10cnVuaworMTA3MzUgYmM1MGY1YzIwYmM5NjE1OWQ4ZDI1OGJhYTA5MzhmYTQxNzg4MzIzMSBsZWdhY3ktdHJ1bmsKKzEwNzM2IDEwMjZkMDMzYzBkZDlhMmE4ZGM3MTJlNWEzNDg2OGVmZTdkOGQ1OGIgbGVnYWN5LXRydW5rCisxMDczNyAxMGM2MDlmZTdkZWJjOGI3ODRlZDk3MWFiZDRhYmVlMTJiMjYxZDBlIGxlZ2FjeS10cnVuaworMTA3MzggYThjMjFhY2NiZWNkYjkyNWQxZTIzMzIzMzIxNjZlYmFhYTA3YmJmZiBsZWdhY3ktdHJ1bmsKKzEwNzM5IDEwN2E4NTI1YmY1ZWI1ZjYwZDUyZjQzZDFhZGY0YzEyNGQ5MmZhYjYgbGVnYWN5LXRydW5rCisxMDc0MCBlYjgzNWVkMWY2ZmU4MzdhODBjMWI1YTU1N2I0YmFkOWQ1ZGNjYzMxIGxlZ2FjeS10cnVuaworMTA3NDEgOWIwN2QyN2EzMWJkNzlhNWQ0ZGM1NjcwMjE5ZmRjMjYwMGZhMzUzZCBsZWdhY3ktdHJ1bmsKKzEwNzQyIGQ4M2YxYmNiYjE1MDVjNmM4YjdjYWI2ZGYwYjBlMjlhOWUxNDA0YmYgbGVnYWN5LXRydW5rCisxMDc0MyBiOGJhODg4N2Q1OWY3ZjZiY2IwZjE1NjMwYmZiZDUwZjEyNDY3OGZhIGxlZ2FjeS10cnVuaworMTA3NDQgOGI4MjIwODM3MjZiMWM2YjM2ZDY5MDA3M2E5Nzg3MWJmMTE2M2I3MyBsZWdhY3ktdHJ1bmsKKzEwNzQ1IGI0ZDNkMWEwOGU0ZGFlNjE5Mzg0YWRlYzhjNWMyN2FhZjg4MmEwZTIgbGVnYWN5LXRydW5rCisxMDc0NiBjZTFlZDdlYjc3NTA3Nzk2ZTE4MmIwMDQ2ZDdiMDliMDc2ODNlMGJlIGxlZ2FjeS10cnVuaworMTA3NDcgMGQzYjczZDk5NTg4OGU5YjljNmMyNThlMGUxMGY5ZDJmN2VlNWQyOSBsZWdhY3ktdHJ1bmsKKzEwNzQ4IGVhNGI3YTU0ZmQ5MmZjNGRhNDQ5YzVhMWZhOTMyYzI1YzJlNTM2M2EgbGVnYWN5LXRydW5rCisxMDc0OSBjMzQ1N2ZiMThhNTEwN2Y2ZDA3ZGQ1MTliOGNmZGUyMjIwZTgzNzBkIGxlZ2FjeS10cnVuaworMTA3NTAgZTE4NGY4M2JiYjc5N2Q0YzA3ZDUzYmY5ODJjMzk0NTFlNjM1Y2U5MyBsZWdhY3ktdHJ1bmsKKzEwNzUxIDNkNjVmNjE2ZjkzZTVlNDUyYzA2ZTE2ODJhMmQ4ZmY0M2RkZWRhNWEgbGVnYWN5LXRydW5rCisxMDc1MiBhYWExYzhiNTI5ZjUyNTgwMTY1OGIwYmVlZjIwZTk2MjRhM2RhMTJiIGxlZ2FjeS10cnVuaworMTA3NTMgNjZhMmVhNjNiNGQ4NTc4YTg0ZDkxNmNkYmIwZDQzYTdjYzM3NDgyMiBsZWdhY3ktdHJ1bmsKKzEwNzU0IGU0NjlhOGFmMDRiMjFkNGZlMTRmYWQwNDA4YTgxN2EyOTk4MWQ1ZjIgbGVnYWN5LXRydW5rCisxMDc1NSAyZGQ4OTBhZjE4N2UxMDQ0Njk3MmUwZGQ4MjY1NDQ1NDBkMTBmODczIGxlZ2FjeS10cnVuaworMTA3NTYgMWRiNDA5OWE3MmNlOGIwNzljMjEwNGQ3ZjdhYzY5YzgzMjdmNDY2NyBsZWdhY3ktdHJ1bmsKKzEwNzU3IDdiMjUwMDY1NzlmNGNmYzI1YzZkMTA5OTkxNzFjMzcwNWY4MDM2NTggbGVnYWN5LXRydW5rCisxMDc1OCA3MDc2NTMxZWZiOGZkYjMzY2U2Y2VmNDUwZjMzNjk3NWNlZGI2NmI5IGxlZ2FjeS10cnVuaworMTA3NTkgZDgxZjMxNjE1NjdiNWZmMTc1Y2E2ODlmMDI5ZTkyNTM0OGYyOTViNCBsZWdhY3ktdHJ1bmsKKzEwNzYwIGM3ZDBiOTcxZTBlMzkyNWEzNDVlZGQ5ODE4NGJhNGRiYmQwZWM3NWIgbGVnYWN5LXRydW5rCisxMDc2MSAzNWQxY2VlZDY5YjllYWVmYTRlNGY5ZTMwMGM3ZmQxMGM4OTY5ZjY1IGxlZ2FjeS10cnVuaworMTA3NjIgNjMxYTE1OWNmMDQwYjFhOWIzMzUwZDk5M2VhMDUzOGNmYjI2NTEzZCBsZWdhY3ktdHJ1bmsKKzEwNzYzIDJiMmQyMWVmYzRkNzE1ZTE5YjA4MGYyOGQ2YWNmMzc5Y2E5MDA2MjggbGVnYWN5LXRydW5rCisxMDc2NCA2NTg4YWRlMGVmYjc3NGU4YmI4ZGQyZGRkOTdiMzliYTcxYTU1YTA3IGxlZ2FjeS10cnVuaworMTA3NjUgMzgxOGExOWY3NDdmMGE4ODRjNGVmMzkwNDk3YTJhNjA3MDhjOTBhZSBsZWdhY3ktdHJ1bmsKKzEwNzY2IGY4MzRlMTk3YmQxNDZkYTcyOGU5NjdkZWE1YzkyNDFiMDQyN2M5MWUgbGVnYWN5LXRydW5rCisxMDc2NyAzMmJjMTdmN2M3N2JjZTdhMzU1NTZhZjk0NTBlMTJjYTVkNzQwNzBhIGxlZ2FjeS10cnVuaworMTA3NjggNGM4OGNjNjJlOWU5MGE4NDM0ZjA3NTBlMzc5ZTZlZDRhNDk2NWNiNSBsZWdhY3ktdHJ1bmsKKzEwNzY5IGQzYmYzYzJhZDc1YTlmZTZlNTk1NjdiYzBhOGVlOGM4YjljNWViZjAgbGVnYWN5LXRydW5rCisxMDc3MCA2ZWQ4YTdmZmM1OTUzNzA0YWI4ZjQ2YmRlOGRhMmRlZjRhY2E0MTg1IGxlZ2FjeS10cnVuaworMTA3NzEgOTI4MWI1ZDM1NjQxYTBjMDVjZDgwZmUwMTRiZDI5MzA0MDY3NDc3YSBsZWdhY3ktdHJ1bmsKKzEwNzcyIDc0YTkxMGI4NmI0NDNkMzUyNTk1ZWYwM2ZmNzdmYTA1ZmU4NjNhNDkgbGVnYWN5LXRydW5rCisxMDc3MyBmOGEzODliMTA0ZjA5MWIyZjYzYTE2YjNjODY2ODBkZTkzMGVkOTUxIGxlZ2FjeS10cnVuaworMTA3NzQgZmY2MzEwN2M5ZmE1ZDc4ZmZjODRjYTQyZjIxMDIxNmZkMjVmNTgzMSBsZWdhY3ktdHJ1bmsKKzEwNzc1IGYyYmI4ZDUxOTViNjY4NzRhNTIzNzJiNmYyYzc4Y2NjMjkyOGNmNTYgbGVnYWN5LXRydW5rCisxMDc3NiAzNWVhMGMwNzNlYTNkMzExNTQ4N2Y2YjczYjA4MTE5MTc3ZTY1NWVlIGxlZ2FjeS10cnVuaworMTA3NzcgYjQzODk4NmIzYzA4ZDgzYzEzM2Q2YWU4NDYxZjczODY4ODA3ZmE3NCBsZWdhY3ktdHJ1bmsKKzEwNzc4IDVkZDZmMWZmNjZiYzA1MDk5NTIwNjFkMzE3Y2FjZDBmMjRiYTYzZjEgbGVnYWN5LXRydW5rCisxMDc3OSBiZjhlODZiOTVjOTIyNmE1NzA5NjExMWIyNzEzNzkzODY5MGEwNmFhIGxlZ2FjeS10cnVuaworMTA3ODAgOWRkNzlkMDEwNGQ5NmY0YTU4OGU2ZjhiMTU1OGZmZmQxZThkOGQyMSBsZWdhY3ktdHJ1bmsKKzEwNzgxIDRjM2MxMmU5NTZhNzU1ODViNzM0ZDA2NjczMWIyNzg1YjNlM2EzMjMgbGVnYWN5LXRydW5rCisxMDc4MiBlM2QyMWM0Y2EzNjJmZDMwOTA3NmZhMzNlZTZiYWI0Yzg5MjgwZTk2IGxlZ2FjeS10cnVuaworMTA3ODMgOGI1MDc1MWYyNzJjODRlZTg0Njk0Njk3Y2I1ZGI0YjYxYjY4YjUyMyBsZWdhY3ktdHJ1bmsKKzEwNzg0IGQzZjNhMDU2OGJkNmEwOGQwODNkN2M0MzcxZjY2ZGU0NGI5YmFjMDUgbGVnYWN5LXRydW5rCisxMDc4NSBiNTliOTk0MmJhYzk2MWVjYTVkYjM3YmU1ZWFmYjI5YWJmMGUyZGFkIGxlZ2FjeS10cnVuaworMTA3ODYgNjIzYzQ1OWY4ZmJlZGViNzZkZjBkNDM1N2VlNmU5ZDEwMjE1MTU3MSBsZWdhY3ktdHJ1bmsKKzEwNzg3IDBkMmQ2MWY1MmI5YzUyZDYxZTk1ZTgyNTljZjAwMjY0ODQ3YjVmMjMgbGVnYWN5LXRydW5rCisxMDc4OCA0Njc0Y2QyZjZmMDcyYmNlOGRkN2FkM2Y1YWIyZTY1NGY5MjQwNzI3IGxlZ2FjeS10cnVuaworMTA3ODkgMDhkZjljYjU3M2FkYWM4MTU2OTAyMjk0NGY2MGJiZjFiODg0NDM5MiBsZWdhY3ktdHJ1bmsKKzEwNzkwIGZlMWZkNTZjYWRhNzAyMDAyZWNhNTBlNjgyMzY3NDFmNGM1ODdhNmEgbGVnYWN5LXRydW5rCisxMDc5MSA0MDcwODU5ZmU2MmVlYTQwODQxZTU3NDY1OWI1ZDg4MGIyMDVjMjc2IGxlZ2FjeS10cnVuaworMTA3OTIgNDE0MjQ3ZDRmZWQ3M2EzYmRiMzJjZGJkZDI3NWY0ZDVmYmM4ODVlYiBsZWdhY3ktdHJ1bmsKKzEwNzkzIGY0ZmM5ZDE4YTUzZDQ3MzM4MTQ4YjkxNDQ5MjY3MWVjYTdkYjhiY2MgbGVnYWN5LXRydW5rCisxMDc5NCBkNjdiZTEzZGEzY2MxOGU0OTQ0ZGZhODc1N2IyMmIwY2QzMzdlOTkzIGxlZ2FjeS10cnVuaworMTA3OTUgYzYyMzYwYWE1ZWE0MGFhYjhiOWFlZTg3ZmE0ZDhhZDMwMTU4YWE3MiBsZWdhY3ktdHJ1bmsKKzEwNzk2IGY5NGQ1YWU2NDJhOWIxY2RlOGZlYjEwNzJmOWRmNWMyZGFhMmZlZDAgbGVnYWN5LXRydW5rCisxMDc5NyBlNDJiOTQyNzU2NTJiOWQ1ODFiYTQ2NjA3ZDVlYjhjMzU4MWY3MTE0IGxlZ2FjeS10cnVuaworMTA3OTggNjNjY2U5ZDc3Nzk3NjIyZTU5NDU3M2E4YzhkMWMyMmE2NmI1NjFkZiBsZWdhY3ktdHJ1bmsKKzEwNzk5IDgxMDU3OTk2ZmYyMWQxYzRhZjJiMTI5OTMxYjg1NTU2NGUyYzk3YzUgbGVnYWN5LXRydW5rCisxMDgwMCBlYzg3YjYyNDY2ZDNhYWQ0YTUxM2YzZTJhNGMzZmVhMWJiMGQzNmZjIGxlZ2FjeS10cnVuaworMTA4MDEgZGY0MDNlZDM1YmRkZTAwYTBlMjdjN2U1NmJlOWQ3NTE0NWVmZWFhOSBsZWdhY3ktdHJ1bmsKKzEwODAyIGMxNGU2OGY1OTFjZTMwNWJkOGRkY2YzODRjNDVmZTJhMGFiMGUzYjkgbGVnYWN5LXRydW5rCisxMDgwMyA5ZGRkNjc5MzE5YTlkODEwMTRjNTM5YmZjYTBlODNjYzQzOTlkZWYzIGxlZ2FjeS10cnVuaworMTA4MDQgZTZlZjBlMzllMzVjZWQ4ZDY5NjJkMzljMTA5NTdkOGJmOWFkOTQ2YSBsZWdhY3ktdHJ1bmsKKzEwODA1IGUxMzkyMTA1MDMyNzgzYzU4NzJiMTQ3ZGJlYzkyOWIxZjkyOWI3ZDYgbGVnYWN5LXRydW5rCisxMDgwNiBjNDljOGY3ZmRmZjE4NmNlMTQzYjIyNGNmNzY0YzQ5ZThmMzI5NzI4IGxlZ2FjeS10cnVuaworMTA4MDcgYWYxMWRiZjM1ZWU1ZTlmYTlhZjQxODBhN2U3N2IyZTJjMzI3MzYzMSBsZWdhY3ktdHJ1bmsKKzEwODA4IGEyM2I3NTEzOGJiMGZiMjNmZmEzNDI0NGIwYzQxMTUyYzBmZTczNDcgbGVnYWN5LXRydW5rCisxMDgwOSAxODk3NzQ3NzM4ZjU5OGZhMzFhZTcxOGQ1MjdiMTcyYmNmMWY3MjJlIGxlZ2FjeS10cnVuaworMTA4MTAgNDgyNDBmNTI1ZWMzYmU1ODNjNTk1YmE5ZGQ2ZTM0MTkyMmE2NWRhNSBsZWdhY3ktdHJ1bmsKKzEwODExIGNkODI4NDYyYWNiYjgyZWMwOWIwMDhkZWJiNGQwYTQxOTQzNTYwYjYgbGVnYWN5LXRydW5rCisxMDgxMiA3YTFlN2RhOTIyZjg3MDU3MmI5ODQzMmI1ODBiMGE1ZGQwZWNiNWNlIGxlZ2FjeS10cnVuaworMTA4MTMgYzU5YjU3MzZmMzA3ZjM1MGUxYTA3YjNjOTVlNzViNmRlNGQwZWZkNCBsZWdhY3ktdHJ1bmsKKzEwODE0IDk2NzllNzdkNDJlM2Q1OGVhZGI4MTkxYzg3MmI1ZjMyZjgwY2M0M2QgbGVnYWN5LXRydW5rCisxMDgxNSBhNGFlNzkyYjliNjgwMmFkMjBlZmIwMzRkZjdmOGJiMWRiZjI1YTU4IGxlZ2FjeS10cnVuaworMTA4MTYgNWJmYjVlZGMzMTNjYjY2MjEzMDI1M2I3ZGVkNjk2ZWVlNDZlODhlMyBsZWdhY3ktdHJ1bmsKKzEwODE3IGJmMTEyNjIwMjZiZGY3NTI0NGM0Y2M1ODZjNzMxNjY3YjAzMDgyNDAgbGVnYWN5LXRydW5rCisxMDgxOCA2YjcwOTViOThlNTRjYTViMTFiNzZlNDQ2MGIxNmVjMWJkYWRkMzY5IGxlZ2FjeS10cnVuaworMTA4MTkgOGQ5MGU3ODFhZGE4YmMwYTliMGRmOTAyYmFmZDM2ZTI3MTRmZjIxMiBsZWdhY3ktdHJ1bmsKKzEwODIwIDc2NThjOGExNDlkMTg1YjM0YmEwYWEwOGJmM2U2YzIxNTlmNjJmYjQgbGVnYWN5LXRydW5rCisxMDgyMSAyOGRhZTkxYzVkMGNjZGZmZDM0MzJkYzAwNWUwMDcwNmQyMDA2ZGViIGxlZ2FjeS10cnVuaworMTA4MjIgYTg0ZjY1OGQ0YmE0Y2VjYjIyYzUyZTg0M2JmMDlkMjFiYjc1ZGI5NSBsZWdhY3ktdHJ1bmsKKzEwODIzIGViZmRlMDZmZGI4ZDhjZDlkZjVlNTNiZjAzMDM2ZDBmYzY4YzczYzkgbGVnYWN5LXRydW5rCisxMDgyNCAyMjgxNWEwYjEyNjc1NmU0MWQ4MTQwM2Y1NTRmZWNiZTA2NTk1M2Q2IGxlZ2FjeS10cnVuaworMTA4MjUgMWI0YTM3ZjM3MzQ1MGFkZTliMjFlMjBmZWRiZjBjZmZjOTVhYzAyNyBsZWdhY3ktdHJ1bmsKKzEwODI2IGQyZDgyZjdiNDE5YTYwMTFkZmIzZjcyMmZlNjZkZGRiOTgyYTZlZTggbGVnYWN5LXRydW5rCisxMDgyNyAwNTE5NmE0ZTU0NDhiZjhjYzViYzU1ZGRmYjBmYTI1YjkxNjAxZDVmIGxlZ2FjeS10cnVuaworMTA4MjggMWIzOTNkYjAwYjFhYjhjYjNlY2YwYmRjODQ0MTM3YWE5ZmE1MjRkNCBsZWdhY3ktdHJ1bmsKKzEwODI5IGU3ZGQ5OTFmYWE0YWYxOTBjMDk3ZjQ2MGNlODBhMmMxZjAwOTMwMzAgbGVnYWN5LXRydW5rCisxMDgzMCA4ZDkzNzNiZDgzODRkZmNjNjdkYjdiYjZhNWFiZTkxZjg5YzRiNmYzIGxlZ2FjeS10cnVuaworMTA4MzEgNDE3MmRhOTE0NDFhYTBmNTY0MmFlOGYxZGM2NTYzNzRmMzJkODYxYSBsZWdhY3ktdHJ1bmsKKzEwODMyIDUyYzMzOTUyNDYwYThmNDQ3YTJkOWE0YTEwOTYwMTBiYjgyZDE1MzcgbGVnYWN5LXRydW5rCisxMDgzMyAyNTNiZmNiNjViNzczNDNhYTFhODYwNmRiNTI3ZmYzYWRiZDMxMDBhIGxlZ2FjeS10cnVuaworMTA4MzQgYzU3MTU1NDEzNGQxNTA1MTcyNjhiMTgwN2UwNTg0MzI0ZDg3ZWY5YyBsZWdhY3ktdHJ1bmsKKzEwODM1IGM4OTE5MWMyZTYzZjAyMDhmOTAxZmNlMmJiY2FiOTIxZjM0NmU5YmYgbGVnYWN5LXRydW5rCisxMDgzNiBmMzA4OTYxYjAzZDdkNTFkZWY5Zjg4ZmUwMzQ3OWI5ZGZkMDIwM2YxIGxlZ2FjeS10cnVuaworMTA4MzcgMWJjMGRmOTZiNGRkYzNlOTA2ZjFkN2JjMWE4MjRhMGYxNDdkMzBiZSBsZWdhY3ktdHJ1bmsKKzEwODM4IGE3NDIzZTY4Y2VlOTQ3NDFmNmE1OTg5YmQ1N2YzYjM3NzUxNzkxMTQgbGVnYWN5LXRydW5rCisxMDgzOSA4MjBmMDZiYjQxYzdmNTZmNWY1NDRhNWU2OWNhMjY0ZmYzZjhlYjMwIGxlZ2FjeS10cnVuaworMTA4NDAgZGE0YmRjZWVhYWQ3YTc2OWQzNmNhNjdhODVmMTdlZTQ5NDc3YjQ4YyBsZWdhY3ktdHJ1bmsKKzEwODQxIDczOWQ1ZmRhZmMzMmViMmE2MDk3ZTZhNWUzYzM1NTM2ZjI1OWZiOTIgbGVnYWN5LXRydW5rCisxMDg0MiBlMDc0NmEwZGE3MzYyYjAzMmRlOTY1ZmE3YzUwZGIxZjRlZjkwODc4IGxlZ2FjeS10cnVuaworMTA4NDMgZTgwZDRjM2RiYjc4N2M4ZTVjOTQ5ZjlmOTUzYjA5NWVjMDVhM2IxNCBsZWdhY3ktdHJ1bmsKKzEwODQ0IGU0MTIxMWE3YWVmM2ZhNTExZTRhODgyNjcxM2E0NmU1Y2ZjY2Q1ZWYgbGVnYWN5LXRydW5rCisxMDg0NSA1MmQ3YTllNzEyMjE1MmE5Zjc3YTNiMDc0YTJjZWM5YjUzYmQyYjZlIGxlZ2FjeS10cnVuaworMTA4NDYgNDU1YjIyOTQ1NDgyZmYwZjQ2NjFjZTVmOWRkOGM4NTRiZmZkNmFiZCBsZWdhY3ktdHJ1bmsKKzEwODQ3IDVmODNmOTdhYWViOGUxOTIzOTBjMTY1MTdlYjA2Y2U4NDBmNWQ2N2QgbGVnYWN5LXRydW5rCisxMDg0OCBlMTdhMDE5ZjkzOTBmN2Y1MGRmZWFiYmViODFlMjY1MmVkMTkwM2YzIGxlZ2FjeS10cnVuaworMTA4NDkgYTQ2NGU5Yzk4NWY4ZTViZjlkYzUxYmVkZWUyYmUzMzYyMjUyZmQ2NSBsZWdhY3ktdHJ1bmsKKzEwODUwIDFjN2E4MmQ0NjllMDY3MTY3YWVmZDZhYTI4YTU0MmU4OGFhZjY4YTUgbGVnYWN5LXRydW5rCisxMDg1MSA2NTBiZDEzYmVjOTJkMTEzZmY0OWM5MjNhYzI5NTQ1YTc3YjA2NDgzIGxlZ2FjeS10cnVuaworMTA4NTIgZjJiMDg1OWZlY2UzYmJlN2Y1OTcwMDJiNjY4ZjUzZGVlMDQ5ZTUxMyBsZWdhY3ktdHJ1bmsKKzEwODUzIGE2NTkzMGY1Y2RkYmNkYjVmNzJlYjExNGZiYjQxZWYwMjI3ZmNmMjkgbGVnYWN5LXRydW5rCisxMDg1NCA2YWQ3YzE2NTZkMThiNjkzNDE5ZmMwOWYxNTFiZTlkNDE3YjNhNmFlIGxlZ2FjeS10cnVuaworMTA4NTUgNmM4MjZlZTNlNTUzOGU0MTE1OGM4ZmJmYmE3NTM4NmRjMTIwNjZiNyBsZWdhY3ktdHJ1bmsKKzEwODU2IGExYmZlNWJjNmQ4ZWE4MWE0NDM4YzA3NTBmMmFhMWQ5NzZiYjM1MjAgbGVnYWN5LXRydW5rCisxMDg1NyAyNDJiM2M5YzViZWMyNzNiYThhZDhlMzM3YTRmYjI2YTlkNjhlMTFkIGxlZ2FjeS10cnVuaworMTA4NTggNzdjMWYxMWQwYThhZmNhZjcwODkwMWQ4NmFmYWViNDJiMjNjOWVmMSBsZWdhY3ktdHJ1bmsKKzEwODU5IDk1ZjdjNTJiNjM5OTQ3N2MyMzQ3ZjgxZTc0OTExOGUwMmJiZTBiZWIgbGVnYWN5LXRydW5rCisxMDg2MCA3YWMxNWYxZTUzMDIxMDhmNDgzMTY1Yjk3OTg4OTY3NGMwNjhmOWVjIGxlZ2FjeS10cnVuaworMTA4NjEgZjVlYmNjN2E1YWIyNmUxZjcxMDU1OTI5ZjE3NTk2N2NiZWE3MjNiMyBsZWdhY3ktdHJ1bmsKKzEwODYyIGNkMmRmZWQwYzQ0YjUzYTQ4YzBmYTUyMWNiMTFhZDQzMjdmZGJiNjYgbGVnYWN5LXRydW5rCisxMDg2MyA4MjJlMDgxMmYyMGMzNTcyZDBlNTY0OTJkNjZhNjdhYzhhYTdkYzAyIGxlZ2FjeS10cnVuaworMTA4NjQgMDU4MTkwYzlhNGYxMjZlODhmNWE0OWE4MGMxMjRmOTdmMTdmYWI5YSBsZWdhY3ktdHJ1bmsKKzEwODY1IDkxYmI1YTgwOTQ4MWEyYjFjOTZmZjVjMDczMmRkNjBhNTNjZGUwODYgbGVnYWN5LXRydW5rCisxMDg2NiA3NTJiOWY1NTU3ODhjMDI3N2MxODEwNzcyMzNjMmU0NGJhY2E3NjE5IGxlZ2FjeS10cnVuaworMTA4NjcgM2EzMTAwMTg0OTQ5OGUzNzRjMDI0MzdmMDY4MjM5NmY1MjhhNzViNSBsZWdhY3ktdHJ1bmsKKzEwODY4IGQ2Yjg2M2QxYmViOTI0NGFjZmI3NWMyZmY1MmQ0MzQxZWMxODE3MjEgbGVnYWN5LXRydW5rCisxMDg2OSA4ZTlkNWU1MTAzZjVkYzE3NWIxYTg2YmY5ZmE3MmMyYjBkODEyZTNhIGxlZ2FjeS10cnVuaworMTA4NzAgNzNhMjU3NzllODM3MmUxMWUwMDAwM2ZmNzViNDc4MTU1M2JhMWI1YyBsZWdhY3ktdHJ1bmsKKzEwODcxIGRlNjhmODNjMTY5Y2E2ODhlNTM4OTIyZjdmNDE3NDk5MDUwODE2YzkgbGVnYWN5LXRydW5rCisxMDg3MiA3NmNkMDM5NzlmY2E0MjNhODcxZjA0OTY1Y2FlNWY3OWFiZWZhMmQyIGxlZ2FjeS10cnVuaworMTA4NzMgYTU4MmQ3MGUzMTJmZWVkOTBhOTA3MzQ5OTBhZjdhZmU3MTA1NThmYiBsZWdhY3ktdHJ1bmsKKzEwODc0IGVmOWI5M2IyYTBmYWEzMzBiNGYzYjc3YmUwMjRhZDQyYmVmNjVhNjQgbGVnYWN5LXRydW5rCisxMDg3NSA3NjY5ZGRmMGU3ZDQ5NTBhN2NhOGYzZTgzZjY1NmRlYzBkNmFiM2JlIGxlZ2FjeS10cnVuaworMTA4NzYgOTNhYTA4Yzc3ZTYwZWIyYmRmZWRlYWUzOWI3YzJkNzc3Mzk5MmQ2NCBsZWdhY3ktdHJ1bmsKKzEwODc3IGQ3YzU2OGU3NzA3YmYxNzk4ZDQ1ZDI2MTA1MzM2YTA1M2YyODNlMDggbGVnYWN5LXRydW5rCisxMDg3OCA3OTA3MWE0ZTBlY2FiNjMxNDNlOTgzZmJiZWVhNGM3ZDk5Mzk1ZDc3IGxlZ2FjeS10cnVuaworMTA4NzkgYzliN2U5MjZmZDg2OTk1ZjE4MTA2MzUyODIyZDBiYmJiNGJlOWM2MSBsZWdhY3ktdHJ1bmsKKzEwODgwIGZmMzFmMjUwMTc0MjUzNTJjMzFmZDgyN2NiYjBkMjg4MzZjNzQ1MjMgbGVnYWN5LXRydW5rCisxMDg4MSA0ZWY3ZDI2MGZlYWM5MzFlYzE4Yjc5ZDFkMzUxZmFiZjZlNWFhNDMzIGxlZ2FjeS10cnVuaworMTA4ODIgNjI3MGM2YmFkODExNmZlMTdhN2VkNGM4MWQ1MjlmMWQwYWI0OTcwYiBsZWdhY3ktdHJ1bmsKKzEwODgzIDcwZjkzZTBjNTgwZWVjYWZiYTI5Mjk3NWE5MDY3NWI2MjVkNzNkNGIgbGVnYWN5LXRydW5rCisxMDg4NCAwY2IwMzk0YzJlZGNmZTE4M2NkNzc3Yzg3YmU4Njk5YjU4YTU5ZTIzIGxlZ2FjeS10cnVuaworMTA4ODUgYzRkZjhiNjYzN2I2OTQ1YjJmOWU4MjM2M2JmNmQxNWM3MDc2MGE5YSBsZWdhY3ktdHJ1bmsKKzEwODg2IDY0Yjg4YTE3ODMyODY5MWNkNGMyNWU3OGRlN2E1ZGZmYjE1Yzk4ZjggbGVnYWN5LXRydW5rCisxMDg4NyAzYzQwYWYyZDFkZTllMTM0YjVlN2RiZDVlM2IxMDcyZmZiYTk2MmVjIGxlZ2FjeS10cnVuaworMTA4ODggNGEzM2JiN2FkZjdkNjFiYjg0NmQyNDlhM2EwMzdlMTBhNDgxZjllMSBsZWdhY3ktdHJ1bmsKKzEwODg5IDA5Njg1N2IwZTRiODVkYmRjZTA3Yzc2OTAyZTFmOTk4NzYzYjk4NTQgbGVnYWN5LXRydW5rCisxMDg5MCA4YTRmZTE5OWI0NWRlZjcyOGNjMmQzMmMxZDgxMzAxZWVkODk1ZWQzIGxlZ2FjeS10cnVuaworMTA4OTEgZjIxODY3ZjgwMzViZDM4OTk1YzJmMWFhZTFjMzdmODA1ZjczOGJkNiBsZWdhY3ktdHJ1bmsKKzEwODkyIGM5ZTNjZThlNzRiNWQ3ZjUxYjRmMDkzYTJhMjY3Y2JlY2JkNmM5Y2EgbGVnYWN5LXRydW5rCisxMDg5MyBkYjhiMTBiN2NjZjIyNDk3NTQ3MTg4MDZmNTA0MTNiMDFhNmU3YWU0IGxlZ2FjeS10cnVuaworMTA4OTQgNDUwNTE2MGE3ZTVjNmNlMTM2ZGYxMTIwMmU5OWE2NjZlOTlkMzFhYiBsZWdhY3ktdHJ1bmsKKzEwODk1IDU1ZmM4ZDkzMzA4NzY2ZjE4OWM5Y2Y2OTEwMGU4MDY0NjE2Y2I5NmMgbGVnYWN5LXRydW5rCisxMDg5NiA0MDY0YjY3Mjk1MzdmMDMxYzA4Nzc5OTc4ZWU2YmE2MzMyMzMyZWY4IGxlZ2FjeS10cnVuaworMTA4OTcgZWNkZDRiNDY4NjI2ODU5MmM4NTNlNzRiNjIwOWE3MGEwZDMyOTFmZSBsZWdhY3ktdHJ1bmsKKzEwODk4IDllYTUwMDMxMTQ5YzIyMDRlN2I1ODg2ZDljMmJmNjMwMDQwYTc1NjkgbGVnYWN5LXRydW5rCisxMDg5OSBmMzk4NDE5ZDUwZjk3NGM1NTVlYjZmMjkyM2RmOTM4NTE0OTJkN2JjIGxlZ2FjeS10cnVuaworMTA5MDAgYjVmZjY2M2VlNzZkOWVjMzA2MzE0MzZhNmUwMGI4MzQ2NjNmZGM0YyBsZWdhY3ktdHJ1bmsKKzEwOTAxIGM4NWUxNDI5M2MyZWUxY2M0NTE2M2Y4NWRlY2ZlMjExNDk0NmNkMDkgbGVnYWN5LXRydW5rCisxMDkwMiAzMDRkNGU0ODg3ZjRjYTYwYTdjNDdmMzM3YjJiYzIyZmE4YzJjMWJlIGxlZ2FjeS10cnVuaworMTA5MDMgZDk2Y2JkYWNiZTcyMjRjOWY5OGI2MjAzMGU5ZDI5OGVjZmJmOGU5OCBsZWdhY3ktdHJ1bmsKKzEwOTA0IDQ3MmU0MjU0MTRkODI0N2ZkOTM3NTdjOWI1NTM1MjExNGM2NzQ4ZjYgbGVnYWN5LXRydW5rCisxMDkwNSAwYTAwZGQ1NzExZTYyMTMxOWY5YWFhZThhYjZlYWUxNmNjOTc0Y2U4IGxlZ2FjeS10cnVuaworMTA5MDYgNzU2ZTJlZjUxYjE5YzYzZmQwNGU4Nzk0OGY1NmFiZTg2NjQ0ZjE0MyBsZWdhY3ktdHJ1bmsKKzEwOTA3IGUyZDQxYmYxYTBmMDRjZWQ3NWQzMzAzZDZlZTE1MzBhZDI3YmQxMjcgbGVnYWN5LXRydW5rCisxMDkwOCAwYjNlNTc3YThkZjQ3YmZmZWY5ZmE1MDU3YzMyY2FkNzgxMjU4YzAxIGxlZ2FjeS10cnVuaworMTA5MDkgZTk2ZTNkMzg3NjExZjAzYTI3Y2JiYjZiYmYzOTY1YmIxMzIyMDAyMyBsZWdhY3ktdHJ1bmsKKzEwOTEwIDNlNjUzZTIwNGFkN2JiZmU5YTQ2YjcwMTdiZjYyMzAwOWNkNGU1NDQgbGVnYWN5LXRydW5rCisxMDkxMSBmN2M1OGVkMjk4MWQxZWIxYmY1MzUzZTY4ZGI0MjRjOTk5MzkzZDA1IGxlZ2FjeS10cnVuaworMTA5MTIgMTJkZGI5YmQwZDMzOTFkNTYzMTRjMDliZDI2MDE3MDkyOGJkNDk0NCBsZWdhY3ktdHJ1bmsKKzEwOTEzIDgyZjAyMWVlY2UyYzc4N2ViYTAyMzNmMTI2ZTY4OWY5OThiYTBjNWIgbGVnYWN5LXRydW5rCisxMDkxNCA5MmMwYzk4YjQyYzUzNjc3OGI1MjNjODg5OTA1NmFiYTkxNTJlNDQ0IGxlZ2FjeS10cnVuaworMTA5MTUgN2NkZmY4YWE4MzE4M2Y3ZjUxZDMxYjYxN2NiZjhlNzU2ZGRlNDk3ZCBsZWdhY3ktdHJ1bmsKKzEwOTE2IGFlNzQ2ZWFiMmE5NjA1NTRhODVlOWU4ODc1NTkxNTEwNzFkYjRmNTUgbGVnYWN5LXRydW5rCisxMDkxNyA3OGViNDBmMDMyODQzY2IxZWFhMTQ0MjBiMDgwNmY0MzEwOWM4OGFjIGxlZ2FjeS10cnVuaworMTA5MTggYTlhNzg4Yzc0ZDZlN2MyNTE1ZTAzYzFlOWY2YWZmNGU3NmI2M2I3NCBsZWdhY3ktdHJ1bmsKKzEwOTE5IGM3YjA0MzEzNmZkYmQ4MTFiMzA4NWM0NDg0MjAwZjk1NmViYTNkNTYgbGVnYWN5LXRydW5rCisxMDkyMCBjMDU5YmJkMTRiMjMyZDNlZmUyNGYxMjVlNDYzYjQxMmIyMGI0ZjZiIGxlZ2FjeS10cnVuaworMTA5MjEgNTM0NjAyNzQ2MDc5ZDEzYzkyOWJmOTE2YjY3MGQzZWU0ZjdjODUzZSBsZWdhY3ktdHJ1bmsKKzEwOTIyIDc3NDljM2UwMzI0YWYwNjZhN2U4Yjg1Y2Y1ZWM0NjE5MGQ2MThlNjMgbGVnYWN5LXRydW5rCisxMDkyMyA5ZTRhZWE1YTY1MmQyMWFkMGI1MWNhMjNkNjBlM2Q4ODNmOWQ5ODBhIGxlZ2FjeS10cnVuaworMTA5MjQgZmQ1Y2VmZGQxZjYxZGNmNGJlNGJiODA0ZGFhZWM2MmJmMzRhZTgxMiBsZWdhY3ktdHJ1bmsKKzEwOTI1IGM1NTBlZTQ5MzViMGM3ODZlZmVkNzc0MGQ4ZDM3Y2I0MmZkYWVkMTUgbGVnYWN5LXRydW5rCisxMDkyNiA2ZjcwY2E3Yzg0ZTY2Y2QzMmQ2M2I5Zjc1YWJhODlmMDJlZGIwMDZiIGxlZ2FjeS10cnVuaworMTA5MjcgMDI0NzE0NTU4NjIwZWJkMzMyZTY3NTBkN2E0ZTdlNTlmYWEzNGE5MCBsZWdhY3ktdHJ1bmsKKzEwOTI4IDU5ZGZhOWViN2MwNzBmZjY1ZWI0YjFkM2UyNDFlNzU1NjAxOGNmMWMgbGVnYWN5LXRydW5rCisxMDkyOSA0ZTY2OGYxYTlkZGRlZjVhMmE0Y2EzZjYzNGM3Y2RjN2VlMGE4YzYxIGxlZ2FjeS10cnVuaworMTA5MzAgYTM0MTYwOTFjMmEyNWEzNjEzMWFlMzgxMDY2MjViMjgzNTJmMzExMyBsZWdhY3ktdHJ1bmsKKzEwOTMxIDM2ZWExM2JhMzEzNjQ0M2Y3MmJlNTI4MzQ2YjJiMDRmZGM1YTIwNjMgbGVnYWN5LXRydW5rCisxMDkzMiA2MTkxMmQ0YWQ1MmY2NzgzZTlmOWIwNWVjMGM1NjY1NzI2NzJiOWY2IGxlZ2FjeS10cnVuaworMTA5MzMgNzU0ZGU2MjFlOGIzMGNlOGNlMmQ1YjE5MWRkOGU3Y2E5MDc4MjMwNCBsZWdhY3ktdHJ1bmsKKzEwOTM0IDg0ZDFiN2NmODE1YTc5ZTkyM2RkZTA0MzA4MjY3YjliODg1NTM1Y2MgbGVnYWN5LXRydW5rCisxMDkzNSA0ZTU5ZDg5MGE0YmRhZDk4YmVlMjEzMzIxNzUxNGMyNTE4YWQ3Y2JiIGxlZ2FjeS10cnVuaworMTA5MzYgMmJkOGQ1MjBmZmFjMDFhNTdlMThiOTU0NDg1MzcxOTVlYzY2NzJjNCBsZWdhY3ktdHJ1bmsKKzEwOTM3IGFmOTI3M2IxMDczYWFhZjg5NzIxYjQyMWY0YjI3ODRmZjY2ZDA2OWIgbGVnYWN5LXRydW5rCisxMDkzOCA5MmM4OGNhNjJkYTdiODEzNjk2ZmViNTdkZWZhNmIxZjVkOWRkYjRlIGxlZ2FjeS10cnVuaworMTA5MzkgYWY0ODg4N2M5NzE3NmI2ZTg1NTMwMDE5NGU5YmQ0YWYwNGM3M2U1ZiBsZWdhY3ktdHJ1bmsKKzEwOTQwIDU3ZGFlMWM3ZWE4NDdiYjk1MTA5MmQ1MTJiYjFkODQyYmE2NGQ1YzkgbGVnYWN5LXRydW5rCisxMDk0MSBmNzUwYjFmZmUzNTI5MmUyZGI3NDVmYmMwZGFmNTI1YTIwNTcxY2ZiIGxlZ2FjeS10cnVuaworMTA5NDIgMjA5NWFlNjkwYWFjYTA0ZDc0MmJmYmE3Yjk0ZmE1ODU2ZjQ3ZDNjMyBsZWdhY3ktdHJ1bmsKKzEwOTQzIDEwMjY3Yzc1NTVhZTY1MTAxNjY4YzY0NmU2ODMwMmZlMjY0NDMyNDMgbGVnYWN5LXRydW5rCisxMDk0NCBkYTA3NjYzZjlmZmY0NmZkMDgxNmQ5YTA2NDE2ODc4N2JlODUwYmMyIGxlZ2FjeS10cnVuaworMTA5NDUgMTMzZjQ1NTRhMjZkNTdjZTU5MzRkODllZmQ2YTVmNzkyM2VjYWI3YSBsZWdhY3ktdHJ1bmsKKzEwOTQ2IDcxNjBlNTI5ZTlhMWViMmFlNmJjYWI5MWE5N2ZmZDVkM2VjNTUyZWEgbGVnYWN5LXRydW5rCisxMDk0NyAwZTZmYmJlM2I2M2MxNDBmNzhjNjk1ZjJiNzE5OGYxNjQ3NTg5NmQ2IGxlZ2FjeS10cnVuaworMTA5NDggNDEyMDlkNWQxZDY0OTBjODA3YmU2Zjk4ZTMwYjRmNDFmNzkzNjE3NCBsZWdhY3ktdHJ1bmsKKzEwOTQ5IDc2MzhlNDU5NDIwNjc1YjZiMDgwNTY3ODE2OGRmMDRiNTA5MDRhNjYgbGVnYWN5LXRydW5rCisxMDk1MCBjMjdjZDVmYzQ2YjUzMmZhZGQ0NDExYWU3ZDJlYzE4ZGIxNTRlNzk2IGxlZ2FjeS10cnVuaworMTA5NTEgOWMzMmNhYzU2MjUwNWQzY2RlMjBlZDlkNGU5NDYxYmIzOTM1MzcwYSBsZWdhY3ktdHJ1bmsKKzEwOTUyIDkzMzg4MmMwZTlmYmEwYTJkZmVkZDA1OGQ5NDA1NmVhM2RhYmM4ZmQgbGVnYWN5LXRydW5rCisxMDk1MyBjODkxODliMDIzNmVjMWYxMzkzOTBkNDljODEyMjc2MTg4OTE0N2IxIGxlZ2FjeS10cnVuaworMTA5NTQgYzU1NWM3MmYwOTBkZDA4NzA1MGM3NGFlMGU2OTViNTkzMDE1N2NhYiBsZWdhY3ktdHJ1bmsKKzEwOTU1IGE5ZDg4YmZhMjRhZjM3MjM4NTAzYWFiZTljZjU5MThlMWM3ZGY3N2YgbGVnYWN5LXRydW5rCisxMDk1NiAwNDlhYTNhOGExNzIwZDE0ZWQzOTg0NGU4ZWQxODNkMDQ0M2Q1M2E1IGxlZ2FjeS10cnVuaworMTA5NTcgZjhjNmNmNWNmYTdkMDE2YzI5Y2UwNDc0ZWE3YmJhMTZmMWY0ZGY4MSBsZWdhY3ktdHJ1bmsKKzEwOTU4IDdmOTViYjJmMTcwNDg5NDM3Yjc0MjE0YmVmMWVmMzFjNzQ1MzIwZGQgbGVnYWN5LXRydW5rCisxMDk1OSAzYTg1YWQ1ZTQxMTZjZDUwNmU1Yzc2NWQyYTRjYTJjYmM3ZWU0OTJiIGxlZ2FjeS10cnVuaworMTA5NjAgNGJhNTg3YWE4YTk4YzljOGI4NGQ5OWYxYjdlMzFlOWZmNGVkNTJmOCBsZWdhY3ktdHJ1bmsKKzEwOTYxIGUyODFkNTAzNjcyNTI5N2Y1MTVjNDUwOWE4ZmZkNmU0NDAyMGU2YzggbGVnYWN5LXRydW5rCisxMDk2MiBkOTNhZTM3NGZiOTk4YWJkYmE2NWM2NjQ3MTQ2NDE2YTg2OTQ1OWU0IGxlZ2FjeS10cnVuaworMTA5NjMgNjE0YTdmZmVlMTEzM2U3MTFjOGMyYmNjNDNkMmZmZjNlNzUzMjQ2MiBsZWdhY3ktdHJ1bmsKKzEwOTY0IDdlM2I3MmQ4YWU5NDYyMDIwNzhjMTYwMzI0OTRlNWNmMjVjMTljNjAgbGVnYWN5LXRydW5rCisxMDk2NSBmNmU5MDBkYTM3ZGI0NTgyNzRmZDE5ZmNmNjNjYjAxMmFmMGFiNTVhIGxlZ2FjeS10cnVuaworMTA5NjYgMmU0ZjE3OGQ3ZTE3NTkzOGM2Mjc3MmJmNTY2NTE3NmExZGY5OTIzZCBsZWdhY3ktdHJ1bmsKKzEwOTY3IDdmOTRiNDk1ODA1NjI5ZWU2ZWI4YzRhMmUzNjg1YzhlNzZmYWRjZjYgbGVnYWN5LXRydW5rCisxMDk2OCA1M2FmY2QyODMyNWVmOTE3Mzc1ZTRmODYyOTZiODlmMjNiODllNGVjIGxlZ2FjeS10cnVuaworMTA5NjkgNTE0NTc3NDBmNWNhZTlkNTdkMjY1YTQ2NjI4ZjczZGU1YTRhZjJjNSBsZWdhY3ktdHJ1bmsKKzEwOTcwIDM2MDQxMzFmOTQyZDY4ZjNhNmYzNThlYTIyZjRmOGMxMzczNWQ3OWIgbGVnYWN5LXRydW5rCisxMDk3MSBiYmI3ZTFkYTQ2ODYyMzUxZDBlNTFmYzM5MGM1ZjZkMjNhMTZjYjhjIGxlZ2FjeS10cnVuaworMTA5NzIgN2QxZGZlNjZmNjRiYzU1MWMwM2I5Yjk1ZThlOTg4MjIwMDQ5Yjk0ZCBsZWdhY3ktdHJ1bmsKKzEwOTczIDAzOGE1YzQzMzU4NjFmZWQ3NTYyYjJmMWNlNmExYzU4MjI2ODNmZmQgbGVnYWN5LXRydW5rCisxMDk3NCBlYjZmNjU5NjZmYjIyYjhmMzcwYjI0YzM4Yzk5N2NkMGZkYTk2NzU4IGxlZ2FjeS10cnVuaworMTA5NzUgMjhmNmIwM2JiNjRmMDU4ZDlhNWQ3ZDgwYTMxYzA5OGY2ZDk5NmMyNSBsZWdhY3ktdHJ1bmsKKzEwOTc2IGZjMjk2MjVkZjUzMjU5MmM1NDhlMDVjYWQ1ZDA1ZmQ0N2RiNTI1YjggbGVnYWN5LXRydW5rCisxMDk3NyAwMzYzZjE5ODg3ZDE1YjJlNjBhZjNmOWZlYWE2ZDM0Njc5Yzc0Yzg5IGxlZ2FjeS10cnVuaworMTA5NzggMWQ4ZGFiNWFhN2QxMGUyOTM5YzU4NGQ1OWIyMjMyMGU0MmNhN2U1MyBsZWdhY3ktdHJ1bmsKKzEwOTc5IDBmOTFjMGJiYWNjNTdjNDQyYmI0MDkyN2NmNmEyMGQ4ZmMzM2M2YjUgbGVnYWN5LXRydW5rCisxMDk4MCA2OWM5YmJiNjlhYWIyNjdmZWY1OThmZmJjMWJhMWMwYWQzZjA3NTdkIGxlZ2FjeS10cnVuaworMTA5ODEgMDQ0N2VmODQ4M2M4Yzc1NGU3M2QxMDQwNzU0ZGE5ZmNlOTFiZWM5MiBsZWdhY3ktdHJ1bmsKKzEwOTgyIDkyY2Y3ZjQyNzcyMzBlOTA5M2ZiNTc3M2RhMjJlZjg4NTdkY2VmZjkgbGVnYWN5LXRydW5rCisxMDk4MyBiYTMxMmU3OTBiMmEyY2I2MzlkYWY2YTJkN2E2ZjA4ODdhYjU4MGU4IGxlZ2FjeS10cnVuaworMTA5ODQgYjhiYmNjMDA5YTZhYjM1ZGZiYTc3MjExMjE2MmYxNTMzZjM4ZWFlYSBsZWdhY3ktdHJ1bmsKKzEwOTg1IDg1ZTY4MjA0ODJmZjgzNWNiMTljYjExODI0ZmY4MTQwNTZmNDkzZGMgbGVnYWN5LXRydW5rCisxMDk4NiBkZTExYTg4YWM0OThlYjRmMTI2ZDVkOTZlYjI4YjE0MWY3NGI5ODllIGxlZ2FjeS10cnVuaworMTA5ODcgZTgyZDAyNzdlNjUzYzA5ODVmNTBmZjE5MzExMTkzZWVhYmJkZDYyMCBsZWdhY3ktdHJ1bmsKKzEwOTg4IDZiZjViODdhZjAyZjlhNjBjODRlMjIxYzU1YmM1YTIwOTg0NTIzYjIgbGVnYWN5LXRydW5rCisxMDk4OSBmNDgwOWZmMWY0ZGE0ZTZhNTJiY2Y3OWFlOGNkMDhkZDQ5Y2M3MzNmIGxlZ2FjeS10cnVuaworMTA5OTAgZGVkNjlkMTJjYzY4MzVlYjA0NzIzMWMyOTQ1MTM3NWEzZDE1MjczMyBsZWdhY3ktdHJ1bmsKKzEwOTkxIDhlODIwNzE2Y2YxMjNlMmMyNWZlNjZkMjY5OTMxMTNmYTJjMTRkZmUgbGVnYWN5LXRydW5rCisxMDk5MiBkZTBmMGMzZWQ0MjRlNmE2NTM1MjA4ZjViYWM0Njc5NTRhMTBiZmVjIGxlZ2FjeS10cnVuaworMTA5OTMgNjk2NjJmMTZhODM4OTY0MzY1MGE1NmI5MjZiOTA1MGYwNzk4YjY3NyBsZWdhY3ktdHJ1bmsKKzEwOTk0IDRkZWQ0MDE4YjBlYjNjZmYzMmMzNGE1NWFmYjdkMzgxZTBiNWU2YmIgbGVnYWN5LXRydW5rCisxMDk5NSBkYTliZjllZWQxZmM3MjIyYWY1N2Q0YjA3NmIzNTU4YTAyNjE2NDIwIGxlZ2FjeS10cnVuaworMTA5OTYgMWVmNDBkNWFjY2UyMmI3NjZlNDBiM2RmZmY1MTQ2ZTVhYWJjYjJlNCBsZWdhY3ktdHJ1bmsKKzEwOTk3IDE2YjNhMTIxZmY3NzJlMjRkZmRmMmIyOTZlNmYwNjU0MWFlYTE2NGQgbGVnYWN5LXRydW5rCisxMDk5OCA4MWUyOTQ3N2QyYTRjMGM3NjJhMzMyZTRlODM4NGMzMmMwMDU5MWU4IGxlZ2FjeS10cnVuaworMTA5OTkgNTBlODdjMDljMjM2NmMzMzM4YmEzYmQyM2U0NzhmYWU2ZTYyNTExMSBsZWdhY3ktdHJ1bmsKKzExMDAwIGI1Njk4MWMwZDYxZWJiMmI4MWZmMzg5MzUwYmEyNmNjZDRmMWU1NmIgbGVnYWN5LXRydW5rCisxMTAwMSA2MWE5YzUyOTQ1NWE5MDgyYmQ5ZTJkYmRiMmYxNmY0Y2RjOWJmNzg3IGxlZ2FjeS10cnVuaworMTEwMDIgYjk0MDE1YzBjODM3YWZlNmQwZTc1NWQ1OTI1MWUwNzYwYTM3YjI1NCBsZWdhY3ktdHJ1bmsKKzExMDAzIDA2NGY4NWVlOWJlNWIwNzk1YTE5ZjkzMTNhYWYxNDM2ZmY4YjUzYzMgbGVnYWN5LXRydW5rCisxMTAwNCA0ZTRmZDk1NGRkYTBmYmNjYzQ5MDIzN2RiMjg3ZDg5NWE5NTAzZGE1IGxlZ2FjeS10cnVuaworMTEwMDUgZDk5OTIwYzBiZmIwMTVlNzFjY2RiNGVhMzliOWYwNjkxYzQzMDViMiBsZWdhY3ktdHJ1bmsKKzExMDA2IDQ3YmYzYmI5NTU2ZTIxZjhjMDZhOGJkYTQzYmUyMmNhOTY1ZTNhN2QgbGVnYWN5LXRydW5rCisxMTAwNyBlYzI2ZDUxNDJlYjQ0MDIxMzQ4Y2QzYzczMDc4NjhiMWVlMjRhZTkwIGxlZ2FjeS10cnVuaworMTEwMDggZDdlMzllZWE3NmY0Y2UzODZkNDY0Zjg4YmI2ZTU3ZTFlMGM0NDQyZCBsZWdhY3ktdHJ1bmsKKzExMDA5IDVmMWU0MzFhMGE4MjY4ZjczYWFiODFhNjNiYjRhZTliOGZlOGNhMjQgbGVnYWN5LXRydW5rCisxMTAxMCAzYzhiMTQ5YjQyZmYzYTY1NmU2OGIzOTIwYmEzZDVjOTJlYjljYjE1IGxlZ2FjeS10cnVuaworMTEwMTEgMDM2NmRhZWZhMjNjMjY5NzBkMjQ3YTViMWMzOWM5NWZjZmJlMjJlMyBsZWdhY3ktdHJ1bmsKKzExMDEyIDQ4MjliOGZhZjJiNDJiNGM4ZTg0ZTNmYTM1N2JmZjMzZjUzYTRkOTcgbGVnYWN5LXRydW5rCisxMTAxMyAxOGE5Mjg5ZGY5OWExZjVkMzhjNDkyMjc5MTBmN2RiZjI5YWFhMTQ3IGxlZ2FjeS10cnVuaworMTEwMTQgMjE2Njg2NmFmOTJiYjE2Yzg1NGEzNDg3ZWFmNjljNmIxNzU2MDcyMyBsZWdhY3ktdHJ1bmsKKzExMDE1IGU1ZDA2YTYwMjQ2OWNkOWRmYmQwNmU3YmE2YmRjMzQyODYwMTJmMGQgbGVnYWN5LXRydW5rCisxMTAxNiA1ZjViNDkyZDE4MDQzYmE2MTRiZGM3MmNkN2QwZmI4ZGZjNGMxNTdlIGxlZ2FjeS10cnVuaworMTEwMTcgZjMxY2U0NjIwMWM5NTYwMTc4ZmQwMDEwNGY4ZDM1NDk0NjVjYjczMyBsZWdhY3ktdHJ1bmsKKzExMDE4IDE4YTRlMDMxZDdjYTBhNjg5ZmFhMjI0MGJiNDc3ZDE1MDhiYTI0MWYgbGVnYWN5LXRydW5rCisxMTAxOSAzYzQwNjNmMGE3OGZhZjI3NjY1Mzk3MmY3NjE3Zjk3OGI3NmNjOWMwIGxlZ2FjeS10cnVuaworMTEwMjAgMjEzNTg3YjNiOWQwYWY3MGU1ZWEyODYwZWMxYzA1YzNjMDRiYjlhMiBsZWdhY3ktdHJ1bmsKKzExMDIxIDUwOTlmNDRiYWYyNTVjMTk3Mzk3MzJjZjJiZTE4OGU3ZWY3ZjMyMWUgbGVnYWN5LXRydW5rCisxMTAyMiBmNGI2MzZkMTVhYmNkOTVjZDdiOGNjZDhlNDJmYzVjM2I5NTU0Y2FjIGxlZ2FjeS10cnVuaworMTEwMjMgY2YwZmFhZjNjMDRiNmRlYmQwNjM5YjAxMTE2YzMwOTA2OTAxNDU0MSBsZWdhY3ktdHJ1bmsKKzExMDI0IDVjMmYxOWQxOTY0M2EyODliYzc2ZGI4Mjg5Mzg5MTBiZTVkNGJmMjQgbGVnYWN5LXRydW5rCisxMTAyNSBlOTUxYmYyZDdkOTNiMjNiMDMyZGRkYWFhNDgwNTNjM2EwODE1NTE1IGxlZ2FjeS10cnVuaworMTEwMjYgMzVhMjE1MWZiMWMzZjYyNDc1YTI1YTUzYjcwMGVmMDYyODVhYzZiZSBsZWdhY3ktdHJ1bmsKKzExMDI3IGU2MzM5M2Y1MzY3MDIzNDgzOTIzNjc5ODVhOTQxMGQ0OGExMDlmOTEgbGVnYWN5LXRydW5rCisxMTAyOCBkYzhkYWE3NDhjNDA5MzQ1MWFjOGE1MmI2ZDBkYWU2ODAwN2IzNjFhIGxlZ2FjeS10cnVuaworMTEwMjkgZDg0ZjEyMDljYmE1Mjk5ODQ2OTM2NzdlZmEyZDQ4N2IzOTI2MDc1YyBsZWdhY3ktdHJ1bmsKKzExMDMwIGZhYzMzNzE2YTIxODM0ZjllNmY0OTU4NTQ0NTFhMGUxMTQ4ZDM5MTAgbGVnYWN5LXRydW5rCisxMTAzMSAxZWExOTViMTQyNDU5OTg0Y2Y5NTBhMTczODUyZGNhM2YzZjczMTFjIGxlZ2FjeS10cnVuaworMTEwMzIgMWU5ZDY1ZjljYTUzY2YzNzljNDAzMzA5NWYzZDYzMGYyNWI2ZDA5YSBsZWdhY3ktdHJ1bmsKKzExMDMzIDU4OWI2NDEzNWVlNjUxMjdmOWQ1MzVlM2UzYThmZjdlOTVmMGE5M2IgbGVnYWN5LXRydW5rCisxMTAzNCAyMmEwNzI0YzZiYWM1MWExYWIzZGMwYjAwYzI0YWRjNzM4NDgyZTg3IGxlZ2FjeS10cnVuaworMTEwMzUgNDM1N2I0ZWI1YzE5YTY2MTAzNDRlZmU5OTVjYzExN2NhNTkzOWU1MiBsZWdhY3ktdHJ1bmsKKzExMDM2IGQ3Y2U5YWUzNjJhOTA0MTgxZmUzNDViNDgzM2U4MWQxODZmMzIzNzEgbGVnYWN5LXRydW5rCisxMTAzNyBmNmQ4MjMzNGNlYjE1NmM2MDNlNGJkMmZiNDM0ZWFmZTEzNWZhZGY0IGxlZ2FjeS10cnVuaworMTEwMzggZDBlZWM5NmI0YzU2MjNkN2FlMGNmN2Y4MTg2OWYxNGQ3NDRiODhkNiBsZWdhY3ktdHJ1bmsKKzExMDM5IGIwMmM0M2EyMDFhZTVkZWMwMzFhOTE4Yzc5MGE3NzE3NGRkZjZlMmMgbGVnYWN5LXRydW5rCisxMTA0MCA4ZTYwZmYwNjQ2MDk5MzQ2ZDNhY2QxN2MxMGVhMjQyZTE3ZTc5ZTEyIGxlZ2FjeS10cnVuaworMTEwNDEgOTIyNjc4MzhmZWI5Y2FlNzJmYmVlNjkxYmMzOGQzNjIwZDUzZGNmOSBsZWdhY3ktdHJ1bmsKKzExMDQyIDQ2ZmQ2MzBkY2U2MzMxY2I1ODFlM2U2MDM1MmFiMTg2ZWUzZTg1MjggbGVnYWN5LXRydW5rCisxMTA0MyA4OTczZTcwODVjZjQ5Y2QzYzg2ODg5M2I4YmZmZjUwMjJmNGIxMWJmIGxlZ2FjeS10cnVuaworMTEwNDQgZmY5YWRiNTdiOGI1MWIyOTkzOGZmMjk2ZWJmNjU1ZTQ1ZWQzNzM1YiBsZWdhY3ktdHJ1bmsKKzExMDQ1IDQxOWVlOTVkZjJkODhmNWQ5MjA2N2FiNmQyZTRkNGRlNDFkM2JiYjEgbGVnYWN5LXRydW5rCisxMTA0NiBlODdkMjJjN2RlM2MzYzk4MzhiMmM2NWViZDhiOTA4NDMyN2VkZWIwIGxlZ2FjeS10cnVuaworMTEwNDcgMTllODAxNmNkMzhjZmU2Y2FiZWVmZGQzNjc0MjhkNzZmMWQyMjRjNyBsZWdhY3ktdHJ1bmsKKzExMDQ4IDZlOGIwZTc1NGE3ZjM3MDliMmQ0NGRkMTIwNGNiMjVjMzI3MmUzODEgbGVnYWN5LXRydW5rCisxMTA0OSBiYzg2MTlhZjA5MjNiZTE2ZjUyNWRkOGEyODYyMjBjZTc4Nzg0MTc5IGxlZ2FjeS10cnVuaworMTEwNTAgODcxNjgxNmUwODU5NGY0MDg5NjFiZGE0NzU1NjgwN2M4YTdlYWQ1MyBsZWdhY3ktdHJ1bmsKKzExMDUxIDQ1MDA3NjA2OGIyMmFlZTRkNGU0M2NjYTM3ZjY0NzVjYTFhZGZmNjggbGVnYWN5LXRydW5rCisxMTA1MiBiZDY5NWRlMThlY2YyM2FkY2JiNWIyZTk3ZmMxNDdiOTk3ODA5ZDU5IGxlZ2FjeS10cnVuaworMTEwNTMgNjdhYTk5N2ZiYjBlMTRiMjEzNzIzMjQ1MTUxYjI1NWVkMjZhMWFiZiBsZWdhY3ktdHJ1bmsKKzExMDU0IGVhOGYwZjVhYjAxNTdlOWNhZTliODc4YzRjNmMwYzFmZDQyN2MxM2UgbGVnYWN5LXRydW5rCisxMTA1NSA2MDUxZjJlNDM1MTc2OThmNDU0MmZlYWM5NGU0ZTg2ZmQxMmNhNzIzIGxlZ2FjeS10cnVuaworMTEwNTYgMTEwZTk3MzM5NzQwZWI0NWY2ZjljOWFiNjE4YTEzYjc3NjJjOGJjOSBsZWdhY3ktdHJ1bmsKKzExMDU3IDk0Y2U3NWY0MzQ1MmY5ZGI1NmYzNjY4ZTFkODVkMTY4NmNmZDJmZDIgbGVnYWN5LXRydW5rCisxMTA1OCBhMzM5MjU0NWQ4NjUyYzhhY2MxZWY2MWVkOTZkYjk2NmQxYzU3MjdlIGxlZ2FjeS10cnVuaworMTEwNTkgZjBmYWFkOGQ1OTM3Y2UzZDlhODUzM2FkZmRjMTZlMTU1NzNjMjU2ZCBsZWdhY3ktdHJ1bmsKKzExMDYwIDJiMDQxMTA1OTYzMDIzYWZlMzVhZjVkNThiMzRlM2Y3YzhhZWFjYWMgbGVnYWN5LXRydW5rCisxMTA2MSBiMWIzNWY1MGYzZmE2YTQwZGQ3MTRhNjNhNGUxZWJjZmY2MTU5ZDg2IGxlZ2FjeS10cnVuaworMTEwNjIgMWNhNjg5NTAyNGQ5ZmVlYjhjY2VmN2NiNTYxOTJkMGY2MjBjM2QwNSBsZWdhY3ktdHJ1bmsKKzExMDYzIDIyMTY2N2Y4OTA2NDg2YzA5NWRiOTUzMmY4M2M3N2FlMWY3YzMzYWMgbGVnYWN5LXRydW5rCisxMTA2NCBjMzQ5NzAyNjUyMGQ3YTA4N2NlNWU0OGM5ZWRiMDJlZDIwNmE1NTVmIGxlZ2FjeS10cnVuaworMTEwNjUgZThhZGViNWNkMmZiN2I3OTcwYmVmMDQyMjg5ZGQ5MmEyYmNlNjhhZCBsZWdhY3ktdHJ1bmsKKzExMDY2IGNiN2ZjZmI1NjI3NTRjN2EzNmE5YTBjNjQ4ODM2ZmVkNWYxMjBkZTEgbGVnYWN5LXRydW5rCisxMTA2NyAxZTVlOWRjNmY5OTM5NDg0YzZlYzEyMWI0MjRiN2QxMjY2ZmQwYTg3IGxlZ2FjeS10cnVuaworMTEwNjggYmRmZWY4ZTczNDU3MjMwOTlkNDQxMGUxNzI0YzAwN2Q4ZWZlMWM2MSBsZWdhY3ktdHJ1bmsKKzExMDY5IDE1ODFjOTMxY2IzNWE2NTQ4YjU3NWE3ZTIxYzYxMjYyZjQ2MDY0ODUgbGVnYWN5LXRydW5rCisxMTA3MCA3NGExMDBjYjdhNjQzYjUxYzkyYjc4NzJlMjAwYWIxMzM1N2IxYzE4IGxlZ2FjeS10cnVuaworMTEwNzEgOTdkYzZhYTUzMmU3MjE0ZDRlMDI5ZmZjMGU5YTMwNzY4NzdiOWE1YiBsZWdhY3ktdHJ1bmsKKzExMDcyIGUxZmUzMGYzMjViOTkxNWQyMGE2ODc3NWRkMWQyZjEwYTQ4NTE3MGIgbGVnYWN5LXRydW5rCisxMTA3MyAyZjQzYjYxYTk4ZGY1YWUxOWYyZWE3YTM2ZjY5NTAzZGUwNTRlMGQwIGxlZ2FjeS10cnVuaworMTEwNzQgZWNmMGQ1MTUyOWFjNTlkNTM0YzFlMjUwZTc0MDA1NGU2OTQ5ZmI4OSBsZWdhY3ktdHJ1bmsKKzExMDc1IGZkMWY0ZWUxYjMyYTYxM2Q1ZjM3YjU4MDZjMWJmODNkNDFmYTAwN2UgbGVnYWN5LXRydW5rCisxMTA3NiA1ZDc3N2JlYTU0MzUxN2NkZGNlY2YyYmQwYjJmYzcyZjU4MDE1OTA5IGxlZ2FjeS10cnVuaworMTEwNzcgNjM1YzNkOTRhOTQ4MjE1OTQ0NTkyMDI4OTljMWI4OGQ4MTgwYWQ5ZCBsZWdhY3ktdHJ1bmsKKzExMDc4IDEyNWYyMWZkZThjNDA2NTVlMTdjODJiYTA3MTFhMGEzNDNmZTYzMWMgbGVnYWN5LXRydW5rCisxMTA3OSA3YmM3MTQxNDRiOThkODRmZjhiZjIzMWM3NGZlMDQxM2Y4MzhhZGM5IGxlZ2FjeS10cnVuaworMTEwODAgZWFiYjgzODFiZmM3NGFlZDhlMDk3MjIwYzM0NTUxOTRmYjlmYTk5OSBsZWdhY3ktdHJ1bmsKKzExMDgxIGQ0YTY4OGNjYjkzNzAxYzMxYjIyYmYyYWE4MmY1OWJhYTg4NTE1MTcgbGVnYWN5LXRydW5rCisxMTA4MiAyODM2MDJmMzAwNDMyNDFkMWM0ZjUxNjEwYjVjMjgwOTc3ZGU3MDI4IGxlZ2FjeS10cnVuaworMTEwODMgMDE5OGIyZjZiMWM4M2JiNTYyNWQxZjE3Njk3MDQ0NTJjMWU5Njg1OSBsZWdhY3ktdHJ1bmsKKzExMDg0IGNlMzYyYjliYTgzNjFmZTc1ZjVmZDA2ZDk3ZmJkMDgxMGYxOTlmNDkgbGVnYWN5LXRydW5rCisxMTA4NSBjMDQ0OTc3MTQ4ZTkwNGRjYTQxYzE4NGQ5ZjkxOTk1YmI1NDk2YmFiIGxlZ2FjeS10cnVuaworMTEwODYgZDFmMzkyY2RmY2VhNmQ3ZmMzNWUxYzQ3ZDkzZTdkMmM3MDYxMWY1NiBsZWdhY3ktdHJ1bmsKKzExMDg3IDNjOTZmYzg0NmI4OGJhM2ExOTQ0NWZkYTJjY2I2Y2UzZjk2NzgyMjIgbGVnYWN5LXRydW5rCisxMTA4OCBlMDE3MzcxYjdlZDFiMzJkYzY1NzQ1NGMwODAwZWI4MmNmMzE5MjA4IGxlZ2FjeS10cnVuaworMTEwODkgY2MwZmRlNGRkZjQ0ZWFlNWVhMmFkNmFjOGY4YTcwZTY3NzllYmFlOSBsZWdhY3ktdHJ1bmsKKzExMDkwIDQ1ZjlkZmZkYmEzZGMwOTMzY2UyYTFmZmIyZjdmMWE3OWM2OTVmNDcgbGVnYWN5LXRydW5rCisxMTA5MSBjZTI5NWJmYWNlZjM3Y2E2M2RhMzgyYjM3ZWE0NTExYTM4OTQxNWQxIGxlZ2FjeS10cnVuaworMTEwOTIgNjZmMDU0MDY1NmEwZTRhNjFmMTVmMWUzZThjZDAzYzdkZTNjNjAzMSBsZWdhY3ktdHJ1bmsKKzExMDkzIDA0ZDU5ODczNzBkZTJlZWVjMDg5NzAxOGVmYTQwMjc0NWMyNGYzMmEgbGVnYWN5LXRydW5rCisxMTA5NCAxYmJmYjkxZjhlODg2ZjI3YjdkMDNlODY5ODEwNmQ1YWExYmY3ODc3IGxlZ2FjeS10cnVuaworMTEwOTUgZTNkM2JiYmQ5M2YzNGMzYzE4ZTM1ZmE2ZjcwOGY3ZjdmYWFkODU4ZiBsZWdhY3ktdHJ1bmsKKzExMDk2IDY0ZjBjMzE4OGU3MDdhZTE1Y2FhZDczYTYwMzI4ZDA0OTM5MDI3MTIgbGVnYWN5LXRydW5rCisxMTA5NyBlNzgyMmI2NGEzM2QzZDNlY2JmMzMyOTZiMzgxOGRkZTU3MmE4MzI3IGxlZ2FjeS10cnVuaworMTEwOTggMjQxN2YxN2ZhM2U1ZmQyYzgwZDViYjdhY2MxOGFjYzA3YjViZjQyOCBsZWdhY3ktdHJ1bmsKKzExMDk5IDQ2YjQ3MmVjYjBmOTBhNTE4YTBlY2ZkZDBjNTczN2E2ZTA1M2U5YTkgbGVnYWN5LXRydW5rCisxMTEwMCBhODA3NTUzMWUyMGQ2MGJhMTJkMzM3NjljMWVhYzMzY2UyNGMyYmFlIGxlZ2FjeS10cnVuaworMTExMDEgNmVkNTAzZDljM2Q1MmNhNmJkZDA5N2IyZjE0N2I0NzFkYjU4MDRhNSBsZWdhY3ktdHJ1bmsKKzExMTAyIDBhM2M4YzIzZTFkYTJhNDkwZWM0ZGE4N2ZkMWYzMzhkZTEzZjk1YTYgbGVnYWN5LXRydW5rCisxMTEwMyA5Zjg0YjkxOTk1MmU1ZGM0ZmY0MGE5ZjgxZGQ2ZDFmYzQ3N2VjMTllIGxlZ2FjeS10cnVuaworMTExMDQgZjA1Nzc1MWNlZjYxOWM3Mzk1YmU3ZjBmYWQ0OTUyNzE2ZjQ2MzM4MCBsZWdhY3ktdHJ1bmsKKzExMTA1IGJkYTVhYzlmNjRlOTRlYmJlMzRiMGM1ZmQ3NzU1MTNjODEzZjk0M2IgbGVnYWN5LXRydW5rCisxMTEwNiAzNzFjMzEyNzY3Y2M5NjA4M2JmMzFmN2U4OWFkYTI0MzkyMGZiNmYxIGxlZ2FjeS10cnVuaworMTExMDcgNTFkY2JmOGEwYjkyYWI2MGRlMDViOGNhZWQyMjlhZGE5ZWI4NjI2OSBsZWdhY3ktdHJ1bmsKKzExMTA4IDI2ZjQ4MmQxNjE0MGJmZDQ2YjgyNTY2MWI1NmM3MDEyNDg2NTU0M2EgbGVnYWN5LXRydW5rCisxMTEwOSA2ZWQyY2MyNzkzNDZmZDcxMDRmOTEyMzYyMWZkZGQyMGM5NjAzN2VkIGxlZ2FjeS10cnVuaworMTExMTAgYWVhNjg0MWFiODk4ZDBiYTJlNTE5MzUwYTg2ZGNjYmZlN2JhYmY4OCBsZWdhY3ktdHJ1bmsKKzExMTExIDIzOTQ5MmIzNGY2ODJkNWNjYWRkYWQ5YmZjZWUxYjg4NjIxOThjNGIgbGVnYWN5LXRydW5rCisxMTExMiBhOTM5ZDRlMTRhOGQzMjQ1MGRlNjdkYWM1YjY0YjhhOWY2M2Q5OTdhIGxlZ2FjeS10cnVuaworMTExMTMgZDg2NzMzNjc2ODE1ODE1MjNjNGEyZTE0ZDk1YzM5N2Q1OTM3OTMyMiBsZWdhY3ktdHJ1bmsKKzExMTE0IDZkNzVhNDQzNDdhMjAyMTUyYmVlMzJlYmMzNmI5M2Q5M2M2NmNlMWYgbGVnYWN5LXRydW5rCisxMTExNSBjY2RlYmI1ZWQzM2EzOWIyYjI0MGU0M2QyMzhkNjMxNGYzMmY1ZjZiIGxlZ2FjeS10cnVuaworMTExMTYgMTE3MTM4MWZhMDFjOGE3NTBjMzIzNWJkZGU5OTNiYTkzNzc3ZjU1NiBsZWdhY3ktdHJ1bmsKKzExMTE3IDU3OThjZTNiZmYzNTRhMmUzZWJjNTE4NjU2MDE1NDc0MGM3Y2NjOTYgbGVnYWN5LXRydW5rCisxMTExOCBkY2VjOTgzNTc2ZDUxNGZjM2ZjMmIyMThmNWZmNzEyYTY4NzQ2MmFmIGxlZ2FjeS10cnVuaworMTExMTkgOWYxZTk1Y2RmYTE3MzE0NWVmOWNhZGE4NTdlN2I3ZmY4NDAwN2ZlMiBsZWdhY3ktdHJ1bmsKKzExMTIwIDFlMTIwYTVkMmU5MzQ1NDVlZGJiNjM2MGJhNjcxOWExNmQ4NzhlZjQgbGVnYWN5LXRydW5rCisxMTEyMSAwMjdhMWRhZDEzNTMyZmI2OTBiZjJjODIxZDg0YmU2ODFjYjcwMjk2IGxlZ2FjeS10cnVuaworMTExMjIgOGU4NmE3OTdlNTk2YzhjOWIxMGFjYjk5YzU5NmVhY2VlZDVhNTJiNyBsZWdhY3ktdHJ1bmsKKzExMTIzIGI0ODBlNmVkYmMwN2JkZjY5Mzg0ZTdiYTc0YzljMzg2NTYyNGNmMWQgbGVnYWN5LXRydW5rCisxMTEyNCAyYmZiMTIzNTViMTAyYTliNjI0NjlkZTVhOWI3ZTRhZTIxODFkZjlhIGxlZ2FjeS10cnVuaworMTExMjUgZDQ5Y2JlYzU5Mzk1YzI4ZGNlMmEzOGQ1M2JkMzEwMTIxM2RkZjQ4OSBsZWdhY3ktdHJ1bmsKKzExMTI2IDlhZTkxZTkzMDdlMGFlY2M1NjhjNTk3ZGY5YTVhMGNhZDlkNGUzMTEgbGVnYWN5LXRydW5rCisxMTEyNyBhZTBiNmMxYzllOGQ2YTNkZmIyMjM0M2ExYzIxNzQ2NjViZGIwOWI4IGxlZ2FjeS10cnVuaworMTExMjggZTgzYjM1M2QwYTFjZGFhZTg0Nzc5ZjRhOTk2NGQ4NWMxYjdhMjc3ZCBsZWdhY3ktdHJ1bmsKKzExMTI5IGEyYmVhZWRmMGFlZWYwYjY5NDUyNWVkZTk0ODAzOTM1MzNhNjIyYzEgbGVnYWN5LXRydW5rCisxMTEzMCA3NzUxODgxNDBmZTFmYWJkYzVmMTYxNTM1MWMzMGZlYjZiMDE1Njg0IGxlZ2FjeS10cnVuaworMTExMzEgOWFmOTVkNzI3MGRmZWY1NWNjNmFmNzhiMTdhNmU3ZDRiYWMyODQ0NiBsZWdhY3ktdHJ1bmsKKzExMTMyIDNiZTkwNjQ2Nzc0MDk1YTNmMWI2MzIxNGVhOTdiNDJmNmM2NDdlYWYgbGVnYWN5LXRydW5rCisxMTEzMyA0YmE5YjcwY2E1NmUyNGY2M2E0OWQ3NmE1YzEyY2MxYjVmNWQzNThkIGxlZ2FjeS10cnVuaworMTExMzQgOTdhMTEwOGIwZWIyODE1OTExMTQ0NDYyNDc1YTljOWEzMGQ1YjI1ZCBsZWdhY3ktdHJ1bmsKKzExMTM1IDJlYjljMjFjMjJmN2U5NTE1NWVlN2RmMjUyMWYwZmZkNWE5NmRjMTIgbGVnYWN5LXRydW5rCisxMTEzNiA3ZDRhMzg2YmVkM2ZjNTM5MmRmYWU4MmUwNGE1ZWNlZDRiMGMzMzhhIGxlZ2FjeS10cnVuaworMTExMzcgZWQwYTM4Y2JjM2U2M2Q3MjhmODBlYjNjOGE4ODIwNmFmYjc2N2NkNCBsZWdhY3ktdHJ1bmsKKzExMTM4IDllNTM2ZGQzZGM5N2YzOTk1N2E0MTllY2Y1MGUyOTEyMTY1YmQwMTMgbGVnYWN5LXRydW5rCisxMTEzOSBhYzQzZTIyNDY2OTViZWM3ZWViNTYzZDVhMTI3NzNhNDlmN2QzODU5IGxlZ2FjeS10cnVuaworMTExNDAgMWU5M2ZhMDIxNDA1NGI5NWNkMzIzNDRlOWUwN2I2NzNkM2FiZTgwZSBsZWdhY3ktdHJ1bmsKKzExMTQxIGNlNTRiNTQ0OGM4NWQ3NWFhNjExYzUyMzgxMDBlMzJmMWE5ZDIyM2EgbGVnYWN5LXRydW5rCisxMTE0MiBkZTc1OWFjYTEwYjI1Mjg5YmZmZDBjNTM1ZmJlZjk3OGVmOTUwNmY4IGxlZ2FjeS10cnVuaworMTExNDMgMzBmYmYxOGFmMjllOGFjOTVjZDc1MTkzMDYyMTAzYTcxYmRhNGYxZSBsZWdhY3ktdHJ1bmsKKzExMTQ0IDc0ZjM4NWVlNDRjYmJlZjgzMThkZGE2MzE5ZjAxOTNhZjU0ZWExMjUgbGVnYWN5LXRydW5rCisxMTE0NSAyZmRkZTc4NGQ4NDlhZTExMTNiY2UzOTI3ZGFmNDkzNjMyYWU3YzUyIGxlZ2FjeS10cnVuaworMTExNDYgODU2OGFhNDk0NGEwMWYxYTlhOTkwNTlkNDFjYWZjODVjNDNmM2RhYyBsZWdhY3ktdHJ1bmsKKzExMTQ3IGY1OTQ3NzhhNTZhZjk1NDVmMmQzYWJkOTRjYTQ2ZDk5MmM3ODZkYjcgbGVnYWN5LXRydW5rCisxMTE0OCA2MjQ1YjgxOWJkZDg1YzIxNWJjNzQ2OGViNmU1NzFkYjExNmJmODRhIGxlZ2FjeS10cnVuaworMTExNDkgM2FkMWJmZmJkYWViNDIwNTkxNjAwNDRiOWI3MGNmMDNhODI1MGQ2NiBsZWdhY3ktdHJ1bmsKKzExMTUwIDgyODExYzZjYjU4ZjViYjI5OGJlZTdmN2ZiNTFjMTI2M2I5MWE2OTcgbGVnYWN5LXRydW5rCisxMTE1MSAyYjJmZjVhODEzOTFhMjY0MDIxOGM4Y2QzMmUzMGMxN2RmNTY0NTA0IGxlZ2FjeS10cnVuaworMTExNTIgMDdlNDczNzBmY2I4YjliZDkyMTQyZDdiZTM1ZWEwYjM0NWEzM2ZjMyBsZWdhY3ktdHJ1bmsKKzExMTUzIDc0NDRmZTM4ZWFkYmQ0ZDk2NWMwMjg4YzczMDQyZWI4NTkzMjRhZGMgbGVnYWN5LXRydW5rCisxMTE1NCBiMWYxYmE0MjliNzNmMDJjMjIwODk1MTQwMTYwMjJlYjViMWI3MjI5IGxlZ2FjeS10cnVuaworMTExNTUgNWE4ZDljZTkwNjMyYjhkNGIwNzZmMmZiZjU1ZjU0MzQ3OTkyMmEwNyBsZWdhY3ktdHJ1bmsKKzExMTU2IGQ2ZjRlNDFiMmM2YWU4NzdiMDk3MDc1Y2NmZGJlZmUxMjZlYjYxY2IgbGVnYWN5LXRydW5rCisxMTE1NyA0NjllOGY0NTMzNjVhMzlmY2VhMjNmZWI3ZThjMDY2NTI4NTllNDg0IGxlZ2FjeS10cnVuaworMTExNTggN2Q5Njg0MjM4M2JiYTlkMTFhNTA5NjczZGI4YzA1NTBhNjJkZjA4MCBsZWdhY3ktdHJ1bmsKKzExMTU5IDYxNzA2ODNlOThlM2IyN2ZjOTY4ZjM5YmM2NGNmZGM5OTk4NGEzNDcgbGVnYWN5LXRydW5rCisxMTE2MCA0OGJjNDcwMzU4ODE1YTE4ZmZiZDk5NjBiNDk3NDQ5MDUxN2IzZjA0IGxlZ2FjeS10cnVuaworMTExNjEgYmE3NDQ0NjJlOTU4MzFkMjgxOWFhMGYzZDc4MmUxMDRmODYwYmUxNCBsZWdhY3ktdHJ1bmsKKzExMTYyIDQ2OGRiMmI3MTBmZDgyMzIwMDY3NzVlYjhhZDhiZjFiOWYwNzcxMDMgbGVnYWN5LXRydW5rCisxMTE2MyBjZTFlNTkxYjMxMjYzODQwYmE1YjVjYmM5YThkMmM3NWYzODE1NzM3IGxlZ2FjeS10cnVuaworMTExNjQgNmVkNzE1OGZmMjdjY2U0Nzc4MWYxMzllYjRkMGM4NGU2OGJhNjBjZiBsZWdhY3ktdHJ1bmsKKzExMTY1IGEwMzI0YTMwNjhlOTUzOWI1YjE0Njk5N2Y5MDA0OGVkODgyMWYxNGQgbGVnYWN5LXRydW5rCisxMTE2NiAxMDA0NDVhZTQ1ZTM2YmQ5MWFlMWFhOTFjZDg1ZWM3YTFkYzQzMDI0IGxlZ2FjeS10cnVuaworMTExNjcgNzgxNzMxOGVjZDNhMmY2OTk3MGFlMGViMDE4MWZiNmY3ZGM1MmFkZCBsZWdhY3ktdHJ1bmsKKzExMTY4IDU1MmU0MmU0MTcwZWU3MTg0ZmFlM2ZjY2YzYWIyZDU4OTFjOWMzNDMgbGVnYWN5LXRydW5rCisxMTE2OSBmZDQ5ZWQ2NWNkMjBiMjAyZWFhNzZhYzhlZmRjNjczNzU2NjQyYzYwIGxlZ2FjeS10cnVuaworMTExNzAgYTM3MjZmZTM0ZDU4ZWMwNDc2NjZlMjlhZWMxMWQxZTAyNDJmZDE4NSBsZWdhY3ktdHJ1bmsKKzExMTcxIGRlNTQwMTY2ZDczMjhjZjU0MzEwYTgyNWNhNzIzOWNjODU5MzJhYzUgbGVnYWN5LXRydW5rCisxMTE3MiBhMDQ3N2JjODIwYjI3MmRmMTcyMTJlM2NlODI2MmVhMzQwOTIwZjI5IGxlZ2FjeS10cnVuaworMTExNzMgMzVlMWExNDBmZTRlMjAwNmM2MDM1MzBmZTc2YWJhOGM1NDhkYjkxNyBsZWdhY3ktdHJ1bmsKKzExMTc0IGM5NTE0ZWIxZmMwNjI3YWMyOTYzY2VmNzE3ZjIwYmI2ZDRhOWJjZTMgbGVnYWN5LXRydW5rCisxMTE3NSA4YWE5ZDEyNmU0NzMzMDcwMDY5NmQ0NzhlMzM0YmUwMDM0Y2Q0MDIzIGxlZ2FjeS10cnVuaworMTExNzYgZjQxNTgwYjRlZWExNTQyN2ZlMjZiNzgxMjlkOTVmODM3Mzc2ZmE2ZiBsZWdhY3ktdHJ1bmsKKzExMTc3IDZkMjE2OGE5NjQxZmU3NTM3N2E1MjU2NTI0MDcyMThlMGEwZTQzMWEgbGVnYWN5LXRydW5rCisxMTE3OCBmN2I0ZGIwYzViMDhkNTdlNGQzNzg2NjliMTM5Y2IxODdhODBmZTBlIGxlZ2FjeS10cnVuaworMTExNzkgZGM4NTgwNGMyYzY0NTY4OWViYjA1NmYwYWRlYTM5NWVmZDQzODgwOSBsZWdhY3ktdHJ1bmsKKzExMTgwIDdkMTQ3N2NkYTgzZDM3ZWFmNzYwZGM1N2IxNWFjNjI0ZWEwN2JjYmMgbGVnYWN5LXRydW5rCisxMTE4MSBmMTBiNDY5Yzk4MTA1NGVhNWMzMTc0NGNjNWM4YjUyYTY5ZDFkY2VhIGxlZ2FjeS10cnVuaworMTExODIgOTVmMzI0MjcyZjU0OTZjMTM5ZTc4MWVjODAzNzdkOTgwNWMxNTRmMiBsZWdhY3ktdHJ1bmsKKzExMTgzIDc4MjE0ZThjOWViNDkwOGE1YTA3ZTJmNTFjM2UwOWVjMThiYTVhZDAgbGVnYWN5LXRydW5rCisxMTE4NCAyZjI5MDU2MDI2M2ZiMGRjZmM2NzRjN2VjNzVkMTYxN2JiZDg0ZGNmIGxlZ2FjeS10cnVuaworMTExODUgNTA3NTc0NjVmYTcwZGVjZGVhM2E3NGM0MTI4ZTc2ZDRiMWVkYmJhNSBsZWdhY3ktdHJ1bmsKKzExMTg2IDgzYzhhZGFhMDg0ZjY4MThmYmJhM2M2NDI3MDMxY2Y5ZDJjZmNmMDQgbGVnYWN5LXRydW5rCisxMTE4NyA4NTcxYzEyNDZmMDkzZDM5NTk2ZTU3MTFlNTM0YjI1MTczZDcyYmRmIGxlZ2FjeS10cnVuaworMTExODggY2ExYzY2OWJiMDQxNjljYTZmNDgzMGQxN2E5YjlhNDg1NmQ0M2E5OCBsZWdhY3ktdHJ1bmsKKzExMTg5IDRlZGYzNDk1YzY5Mjc2YjE4YTE5MTA1NWZkZGRlN2Q1MWI5MWI4NTcgbGVnYWN5LXRydW5rCisxMTE5MCBhY2Y0OWM5ZGVmN2RkYjU0MjUxZGNiMGI0NGNhOGY0ODJkOGFiOTIzIGxlZ2FjeS10cnVuaworMTExOTEgMGUyNTYzYzBlYjBkNGE2YjhmZjY3MWFmNGQ4NjY3ZjBiMDQ3ZWYyMyBsZWdhY3ktdHJ1bmsKKzExMTkyIDIwODQyN2FiNzU2NDViMTM1NWFmYjVkYjg1MWVlYTBiNGUwOTdjYzUgbGVnYWN5LXRydW5rCisxMTE5MyBhZTZiNDFkYzY1MjAxNmFiYTk4NGI5YzhhYTEzYTg0MDhkYjcyMDc0IGxlZ2FjeS10cnVuaworMTExOTQgNzk4M2Q4NmI0OGFmNzMyNjE1ZWZiOTJkZDUwMDAzMDNmYzk1NWE1MiBsZWdhY3ktdHJ1bmsKKzExMTk1IGVkOGY0ZTJlYjExYTFhYTc4YThiMmM5NGRmOWQ3MTVlMTAzOTc2N2QgbGVnYWN5LXRydW5rCisxMTE5NiA5NzMxZDhhNmI0ZjNkZjQ5ZmY0N2RjM2U2ZDdiMjliYzhkM2M2NTc1IGxlZ2FjeS10cnVuaworMTExOTcgYzc1MGM3YTIxZTAzNzg4NGNlZjU1NDMwMzA3MjljNjVmNjA2OGQ2NyBsZWdhY3ktdHJ1bmsKKzExMTk4IDc2MGRjZjE5NzA0ODEyNjhiMzMxY2E2NDcwYThlYTNhY2MxMWViNmUgbGVnYWN5LXRydW5rCisxMTE5OSA5NDZkNjM5NzdmYTQxMWQ1ZjA4MDM5MjFkYzI3Zjg0YjI2MzU0MTQ3IGxlZ2FjeS10cnVuaworMTEyMDAgMDI4ZWFmYmNlOGFjNzIxZDRhMzIwNjk5NTNhYzJlM2Q4NzUyZjRjMSBsZWdhY3ktdHJ1bmsKKzExMjAxIDgxNzVjNmUxZTYxMzFhOTU0NWQ1YjQxMGUzYTFmYmVhMDZmNDMyNGUgbGVnYWN5LXRydW5rCisxMTIwMiBlMGQwNDc0ODQ5ODAwOTc5ZjA4YjY4NTk2ODczNjM3ZjMxMTVjY2QzIGxlZ2FjeS10cnVuaworMTEyMDMgZDdjYTQyOWVmMWFiNWZiYTkyMzk0ZTE1OGU2ODEzMzJkMzViZWIzNyBsZWdhY3ktdHJ1bmsKKzExMjA0IDhhMjk0NzZhNTljNTQzODgzYzMxNjY3MWIyMDRkZDlmMDFjYzFiM2QgbGVnYWN5LXRydW5rCisxMTIwNSA2Nzk0Mjk0ZWIwMTQ5ZTk2ZTY3ZDE0NjBlZWM0MzMxOGU5MjYxM2YzIGxlZ2FjeS10cnVuaworMTEyMDYgNWQ2YmY2MGNiNzM2ZDFlMzVjNDYyNjU0YTU0M2ViYTVlYmFhNGZkMiBsZWdhY3ktdHJ1bmsKKzExMjA3IGY3OTc2ZTAyYjg3MzQzMjczZTQyYjQwMmQzY2I2ODZiYWYzNzZlOTIgbGVnYWN5LXRydW5rCisxMTIwOCA3NGVhNGRmZGE4MmQyNDFmNmQwOThmZjY1MWExNDNjZGI1ODJiNDBhIGxlZ2FjeS10cnVuaworMTEyMDkgNTNiNTJhMzNkNGJhNjQwZGM1OTcxOTk2MGVhYjcyNmJlZDI0YjY2YSBsZWdhY3ktdHJ1bmsKKzExMjEwIGQ1ZjQ4NTFlNzYxMTNiZTI1OWFhNGYyNmY2NDY2NTlkMDgzZWY0NjQgbGVnYWN5LXRydW5rCisxMTIxMSAxOTA3ZDEwYTIzMjhlZTA5ZjVmOWFhOGQzMTM5YWZjZDQ3NzUzYzQzIGxlZ2FjeS10cnVuaworMTEyMTIgOGEzMDZkZmQ5ZjMzM2UwNTI5ODVhYWFkMDM0ZGFlNjQ2ODc3ZTdmZCBsZWdhY3ktdHJ1bmsKKzExMjEzIDc1MTM3Y2ZlZDk1NGY3OTY0NGJlOWJlOTA0MjU2NGY0YTZkNTI5MzIgbGVnYWN5LXRydW5rCisxMTIxNCBhODA0MGI5NDE4NjQ5ZDlmM2VjYjFhOTMzYTFiYjFiMDdjMWQwZDRkIGxlZ2FjeS10cnVuaworMTEyMTUgYWVhZmFmMzgyYTRiZWM0ZGQ3MWQwMzdjZjU4YWQwNTc2MjZhODAxYiBsZWdhY3ktdHJ1bmsKKzExMjE2IGRkYWFjMDZlYzMyNjZmNTM5OGEzZWI3YWY3YjI3NDkzMzQxYzVkYmMgbGVnYWN5LXRydW5rCisxMTIxNyA4MDc3NmVhYmQwMDVmYmI4MTVkNjQyM2NmMTU4MjhhYmMwODkyZWMzIGxlZ2FjeS10cnVuaworMTEyMTggNmMyMGNhNzIzMTgwNDc4N2FmZTY4NjQ4NzdhMTEwZjI2Mjc2YWQ5OCBsZWdhY3ktdHJ1bmsKKzExMjE5IDhkMDU0OTU0NzA4YTJmMDUwYjk0YjJmMWU4ZTk1ZjFkODc0OTI2ZTYgbGVnYWN5LXRydW5rCisxMTIyMCA3ODFhZDMyZTdiMWZmM2M1ZDZmMzk0ZWEzNmVjZjFhMjk3NmUyYWE0IGxlZ2FjeS10cnVuaworMTEyMjEgMWYwMjBmNzk5NjdkOTk1OGQwOGMxZjZmNjgyMTUzZmE5MWRlMDY1OSBsZWdhY3ktdHJ1bmsKKzExMjIyIDc0ZTAzMTNjZDgxMGUzNDVmMDVlMjNmYmVlMjAwODM3ZWZkMTQwYjYgbGVnYWN5LXRydW5rCisxMTIyMyA0MzQ2NGIxYzg4MGVhOTZmMmU3ODA4YmVlYWIwNTI0ODFkYjZkNTVjIGxlZ2FjeS10cnVuaworMTEyMjQgNzNhZmU3N2EzOTQ3YmYyZWEyMjAyMmQ3ZmMwZjQ5MWM3NzIyMWZhZCBsZWdhY3ktdHJ1bmsKKzExMjI1IDJhMzBhODE4OTRhZTBjYzQ5YWIzMmMzN2U1MDJmNzc4NTgyZjY3YjUgbGVnYWN5LXRydW5rCisxMTIyNiAxZDU4MWE2ZGZlZWUxMTY5MTU4NWUzMjhlZGEwYmNhNDA2MmIyY2I2IGxlZ2FjeS10cnVuaworMTEyMjcgZTFiY2YwYmQzNGQ1OTMzOThmNmY1MmFlNjY4M2Q0YzM1YjcyNWJkYSBsZWdhY3ktdHJ1bmsKKzExMjI4IGNhMWI5MDYxNDllNjIwOWM4NTM1OTkzZDQ3NmFmZTQ5ZTZhZTc1MTcgbGVnYWN5LXRydW5rCisxMTIyOSBjZDk5NTIwMzIwYTMxZmQwYmE0NWJiOWQ3Yzc1ZDQyYzYxODEzYmMzIGxlZ2FjeS10cnVuaworMTEyMzAgZWFiZTU3NGRjOTIxYTkxMGI5MDdmZmM4ZTA1NDI5ZTFjZWE5MTdkMiBsZWdhY3ktdHJ1bmsKKzExMjMxIGQ4NGMxMTNlZmVkYmY1YTQ0NTQ4ZTI5MmU5MGNiZWRhNDY4ZWMzNTQgbGVnYWN5LXRydW5rCisxMTIzMiA1ZWM4OTc5YmYxNzY4NTQ3ZTM4YzY2NWRkNDBjNTcwYjJkM2UwNWMyIGxlZ2FjeS10cnVuaworMTEyMzMgOTk3OTMzMDJkMTBkM2UxYWUyZjkxMTE0ZDhhZmMwM2UwNjY4MmVjMyBsZWdhY3ktdHJ1bmsKKzExMjM0IDRlMDVlMzg0NDVjZWIzN2I4NDZkZjlkOTNlODg4Mzc5ZDVlMDY2ZTcgbGVnYWN5LXRydW5rCisxMTIzNSA5ZTA4OTA3MGQ0YzVkMGU4MjRiYWQ4NWY1N2RhNzkyMTc4NTI2NDdkIGxlZ2FjeS10cnVuaworMTEyMzYgZTg4ZDRlNmU0NjIyYjQzODFmNzJjMGY3ZmY0ZWQzNDM4ZDJhY2E4OSBsZWdhY3ktdHJ1bmsKKzExMjM3IDcwMWE4NWIwNDRiMzQ1ZjUwZWZjNjY3ODA2ZDM4YWNjYjY3NmFiNDQgbGVnYWN5LXRydW5rCisxMTIzOCBmYmE4NDU1ZGNiNTRjNDBlMGNhMjIyZDU2MzQ4M2EzNDI3ZjU4NDQ1IGxlZ2FjeS10cnVuaworMTEyMzkgYjhhNzE5YzhhMGE2MDE3YTBlNDBjM2Y3ZmQzN2ZjODgxMDJlZjViZCBsZWdhY3ktdHJ1bmsKKzExMjQwIDY4ZmU2Mzc1MGY4NGY1MGZlZWQ5YzUzYjEzZTU4ZDQ4YjQyYzg4ZTUgbGVnYWN5LXRydW5rCisxMTI0MSA0YWMyZDQzNWNlM2JiNWJmNWJlYzliZDM0OWIxYzc2YTI1YTRhYjc0IGxlZ2FjeS10cnVuaworMTEyNDIgMmIyZWY4MmVkYjVlYjczNGUxMTY0NjIxMTQ2OTYzNjhlYTU4YjgwMiBsZWdhY3ktdHJ1bmsKKzExMjQzIDg2MWNkMjI3ODM0OGE4MzI5YTQ4YTYwNGYwN2VlNWZjMzgwMzQwYmEgbGVnYWN5LXRydW5rCisxMTI0NCA0MTkyYTczY2E0MzBlYmRmMmUyYTA0ZTgzNTI4MTkzMzMxZjE0ZGU4IGxlZ2FjeS10cnVuaworMTEyNDUgNTVmNzkwYTVmNjRiZmI0NTYyYjNiODcxNzJjMmNmY2U5Njg4NzNhOSBsZWdhY3ktdHJ1bmsKKzExMjQ2IDA3NjYzZGQwZmU4NjU0ODZkYmFjMTQ5NzNmOGZjYWYyYWQ5MDI4NDUgbGVnYWN5LXRydW5rCisxMTI0NyA2MmZhYmUyNDc3YzRkZjdiNDRjN2QxZmQwYTBhMTBkZmY2YzE5Y2I5IGxlZ2FjeS10cnVuaworMTEyNDggMDU4NDE3MDcxYjBlNTI2YmMyM2MyMmRkZmJiNDkyYTJlMjc3ZjllZCBsZWdhY3ktdHJ1bmsKKzExMjQ5IDg0MzRlOWQwMGI1YTVlNDRlNzU2NzMwZjMzZGMyNzgxYThiYmQyMzcgbGVnYWN5LXRydW5rCisxMTI1MCBmYzJhNzAwYjEwMDdhNTJmNTIxN2NkOWU5YThkMzFlZTNhZWVhOWEyIGxlZ2FjeS10cnVuaworMTEyNTEgMDZmODBiY2M5NTY5MTFmMzc5NjE5NzI3OTE0ODYxN2RkMTAxYzI1NCBsZWdhY3ktdHJ1bmsKKzExMjUyIDI1NmE4MGYzOWE4OGZkNzk2MjJiZjI3ZTNhNjRlNWM4YTNiMDllODMgbGVnYWN5LXRydW5rCisxMTI1MyAyZjQ2Zjg3YWE4MGFhZjVjZDNjYmYyMDk1ZDYzNTg0N2ZmN2JiNjIxIGxlZ2FjeS10cnVuaworMTEyNTQgNzBiNjMzZmYyZmI3NWM1NjE0Yjk0MzUxZjEzYjFlOGU0NDM0ZmFkNiBsZWdhY3ktdHJ1bmsKKzExMjU1IDQ1YmU0MGVmY2I5NTA0OTJlZTNjNzMzNjNmYzkzZWI1ODYyZTI2NGQgbGVnYWN5LXRydW5rCisxMTI1NiBlZGJmNjMxZmI3ZTllNDEyNjk5YTQyYjg5NmJmNWIzOGQ5MWFlNDIyIGxlZ2FjeS10cnVuaworMTEyNTcgZDM5Njc4ZDIyYjRhMzNkMDNhNTlmMDdhZmFkOWM2YzI2YjBmNzgxMiBsZWdhY3ktdHJ1bmsKKzExMjU4IDA0ODQxZWVkOThlZjkxNjRiMTVkNmM5ZmFhNTQ3YWY4NzVhODdhNTUgbGVnYWN5LXRydW5rCisxMTI1OSAwMDUyNDU1NWVmMTc0MjgzNzYzYjE3MTA5YTY3ODNjZDVmNWQ0MDkzIGxlZ2FjeS10cnVuaworMTEyNjAgM2ExZGQwMTM3NWUwOTQxNmNhZTVkNWVkZmU4YzdlZGZlMTk5NTI0NiBsZWdhY3ktdHJ1bmsKKzExMjYxIDkxMzgyNzJjMWZlNmVjM2IxZDcxZjdkMDBiMmQ4OTM1ODJmODBjZGMgbGVnYWN5LXRydW5rCisxMTI2MiA2ZDYxZDQ4OWQ3Mjg4OTE0M2M5ODAxMjU5YjBiOWI0MTNhNjMzNzMyIGxlZ2FjeS10cnVuaworMTEyNjMgOWUzMTQxNTQzNmY2MmNkOTQ3N2NiMWY5ZDkxNTk0ZDlkYzQ0MWFhNCBsZWdhY3ktdHJ1bmsKKzExMjY0IGFlM2UyZWFlZjliOTUyNWY2NWJhNjMzMjA2NTg0NTQwYTgyY2UyNTMgbGVnYWN5LXRydW5rCisxMTI2NSA4ZTk0Y2U5Mzk0YmYyNDZlMmNiODgzZWUyNjljNGU5YzU3MmM2Y2M5IGxlZ2FjeS10cnVuaworMTEyNjYgYzk5MDkwNDYyNDc2NmVlODdjMWM1NjNhMTBlNGY2ZjViMjE0YjIwNCBsZWdhY3ktdHJ1bmsKKzExMjY3IGM4NWIzOGQ1OGFjZDhjZjA4YTVlZDM4M2QzNTQ0YTRlNTFlNDc1N2IgbGVnYWN5LXRydW5rCisxMTI2OCA3ZDIzMmMwZTRkZDZjOTBiZjMzOWJlYzdlNjczZDRjNzg3OTU3MTdhIGxlZ2FjeS10cnVuaworMTEyNjkgZDJiZmM4NjU0MjgwYTc5YzE3ZGEyNmM1YWNjMDA0YzcyMDQ4ZDJlYyBsZWdhY3ktdHJ1bmsKKzExMjcwIGQ2NDJlNjc0OGQxMmMzYWJmMzc3ZDg1NTBhZjljNDJlODgyNzBjMGIgbGVnYWN5LXRydW5rCisxMTI3MSBkMzJkYmMyMDI2MTNlMjliYWIzOGNjZWY2ZGY5OTdlNTFhZjg4OTA3IGxlZ2FjeS10cnVuaworMTEyNzIgMTA3NmEwMjgzNjVhMmVkNWJkZmM1MTljMmY5NTdmZWIxYjIxZmQ1ZiBsZWdhY3ktdHJ1bmsKKzExMjczIDMzZDU5MzM2ZTdlNmZiYzU2Nzc0ZGJkMzQ5ZDIwNWRmZmQ1YTJkOTcgbGVnYWN5LXRydW5rCisxMTI3NCAwZjVlMGI0MDViYzJmMmFiNzQ1ZjgzNjQwY2U2NGQ5MjdlNTM4YzA5IGxlZ2FjeS10cnVuaworMTEyNzUgMWY4MDRmYWNmNjM1NGZhMmYyZWI4N2ExNThmZTgxOWFkNWM3YWQxZiBsZWdhY3ktdHJ1bmsKKzExMjc2IDBlMzBiMzViOGEzZmZlMzU2MGEwNWRlNTIxMTg2MzM3NzNmMGRhMWYgbGVnYWN5LXRydW5rCisxMTI3NyBiOGQyYmE1OTcxMWMyMjcwMDQzNjhjOWY5MWJmOWU0NzMwMDhmODgwIGxlZ2FjeS10cnVuaworMTEyNzggNmZiYjU2MDdjZGQ2MDRjNDE0MjI3YzIzZDI2MGYwNjQxNTllMzFlNiBsZWdhY3ktdHJ1bmsKKzExMjc5IGQ1MWQxYTYxYjFjZWY0Nzc4M2VhODdkNjUxNWU1NTczNzY4MDY3ODggbGVnYWN5LXRydW5rCisxMTI4MCBjYTFlNWJjNTIwOWQ4NDcxMjczZTkzZjUyZTQ0OGEzZGJkZTRjZWQ3IGxlZ2FjeS10cnVuaworMTEyODEgNDQ3MjZiMDU4NzAwYWQ5M2ZmMjA4M2U5MWQ3MjFjYzUzZWMxMTJkMSBsZWdhY3ktdHJ1bmsKKzExMjgyIGU4YjU2YjM4NzA0NWFlNzRkZDljM2Y5OGQ4ZDRlOTFjY2FhNWZiNmUgbGVnYWN5LXRydW5rCisxMTI4MyA2MTQ2NDAzN2RhNTNjMmQwNTUyMWY5N2ZhZmMyY2VlM2Y4NDNiY2I4IGxlZ2FjeS10cnVuaworMTEyODQgODFjYjk0MDFhMjFiN2M4NjI5ZTgyNDliMmUzMDk4MzNkZTA2ZGEwNyBsZWdhY3ktdHJ1bmsKKzExMjg1IDRkMThlYmQ0Y2Y0MjNlZjg3YmJiYTc5NjRkYzMyYTRlZDFlOGZlN2EgbGVnYWN5LXRydW5rCisxMTI4NiA1ZDVhNWJjOGRlNWNiNjI4OTQ1ZGE5OWM2ZjEyODZiNDM1MmZjNDY1IGxlZ2FjeS10cnVuaworMTEyODcgYzllNDU3MDVlYzllMTI5NDAwM2JiMTkyZWE3YjY3ZTMzMGI0Mzk4MCBsZWdhY3ktdHJ1bmsKKzExMjg4IDhlOWQyMTQ2YWU5MzAyMTVjMTE2NjEzOTVmMzQ2Njc2N2U5OTgxOWIgbGVnYWN5LXRydW5rCisxMTI4OSA2NDVhMzI4ZTdmZDQ5NDljZjZlMjM0Mzg3NzQzYjI0M2ZlNGEyMGRmIGxlZ2FjeS10cnVuaworMTEyOTAgNzg3ODU5ODVhMmFiNTgxYjRlNTU1ZjhjNWRlZWUzNzFlZDUxZDNiZCBsZWdhY3ktdHJ1bmsKKzExMjkxIGM1ZDcyYmNkYTkzMmE4ZDM2Y2EzNjAwNWI0NWFiYWI4ZmI3OWQ3OTEgbGVnYWN5LXRydW5rCisxMTI5MiA0YWE3NjQ4MGQ4MTI1ODkyYzUxNWFlMWJjMzE0ZjkwZDNlMDQ0ZjdhIGxlZ2FjeS10cnVuaworMTEyOTMgZTU4YTYxNGZiOGU0MGVhYTY3MjEyMTI5NjMyMWI5OWQwOGJhNmUxYiBsZWdhY3ktdHJ1bmsKKzExMjk0IDE0MDY5Mzc0NGEzYzg1M2Y3YjQ0Njk0ZjZhMzc1OGI0MWFjYzZmZjQgbGVnYWN5LXRydW5rCisxMTI5NSBkZDY0OTgzN2ViZDQ4OTg0MjU1NzFlYWIyNDYxZDYxZmQzMWY4Y2FjIGxlZ2FjeS10cnVuaworMTEyOTYgNjczOGU1MzgzOTc3NGZhZTI4NmQ3ZTkxMTBiODYzM2YyZGY1YWQ2NCBsZWdhY3ktdHJ1bmsKKzExMjk3IDg0NjBiZGMzZGJmN2I3ZTZkMzNkNzM5MDQzZGE4Y2ExZjhmZDEwNzUgbGVnYWN5LXRydW5rCisxMTI5OCBkOGI0NjE5ODkyMzhkODJmODNkYWViZmY1OTkzMzVmZjg3MGRmZThkIGxlZ2FjeS10cnVuaworMTEyOTkgMGVkZDM4ZGIyMjg4NDU5NWFhY2EzMTE0Yzc0NTE5N2MyMWE3ZWFkZCBsZWdhY3ktdHJ1bmsKKzExMzAwIDcxZmNjNGNhMGU4YWVkYzkxNjE4YjJiMDEzMjAzYjVlMDUyZWJhYTkgbGVnYWN5LXRydW5rCisxMTMwMSBjMjgwMTEwMDBlZDM2OTNkNjNjMjE0ZDMzMGE0ZjdiMTI1NDIyNWY2IGxlZ2FjeS10cnVuaworMTEzMDIgOWIwZGRhOWE1NThiZDVlZWM5NmU5MzQ2MzZlYjVlMzQ1MTkwMTQ3NCBsZWdhY3ktdHJ1bmsKKzExMzA0IGExYzE2YTNmYTdkYjQwYTM3NTU4N2EyMjM1N2QwZDAxZGViY2JkODYgbGVnYWN5LXRydW5rCisxMTMwNSBiZDQ3ZWUwNjhiODNmYjlmMmE4YjZhOTg5YWI0MGYzZjg4YzRmOTY4IGxlZ2FjeS10cnVuaworMTEzMDYgZjJhNGEyYjYwODYwN2IwYWZjODdjNmJkYmViMGRiMTYwMWJhOWNiZSBsZWdhY3ktdHJ1bmsKKzExMzA3IGIwNDA5OGEyNTZkMDA0NmQ5Y2VhNGNjNDZjODhhOWRkYTA5NjIxYjMgbGVnYWN5LXRydW5rCisxMTMwOCAxMjk4NzBlMjE3OWE5MWQyNzhhZGVmN2FjN2E1OTY5OTc4MGJlZjBhIGxlZ2FjeS10cnVuaworMTEzMDkgNGJmYTUzYmQ5N2JjMDY3NjJlN2MzYjEzMTA4M2M0ZmJhYTJjM2M1MSBsZWdhY3ktdHJ1bmsKKzExMzEwIGRmMTYwMmI2YTJhODYyMTY2MTg2ZGFiNDA3NjBhZDU4NjRkNTczOGMgbGVnYWN5LXRydW5rCisxMTMxMSA4NTMyMTQxY2ZmNGMxZjVkZjZkZDVlNjYzZmVlYjVmMjE1MDJlNmFlIGxlZ2FjeS10cnVuaworMTEzMTIgM2NjMmZhZDRlMDIwZTE3ZDgzZWEwYjBhNzVjMzY2ZmJhMjg0YjAxZSBsZWdhY3ktdHJ1bmsKKzExMzEzIGVlYzRkY2ViNDQzNmFhZTYwNTgwZTdhNjlhYjQwMDA2NWQ4MDQ3ZmIgbGVnYWN5LXRydW5rCisxMTMxNCAwMGE2YmI2NWZmMjkzYzBlMGE4ZDYyM2M1ZTI1NDNjOWI1ZDE5ZDJiIGxlZ2FjeS10cnVuaworMTEzMTUgNzQxZDUwNjE4ZWMyY2FhN2M2NTc4ZWYwOWY1OTk4MDVmNzhiOTAwOCBsZWdhY3ktdHJ1bmsKKzExMzE2IDA0NWU5MDBhNDE5OGUwMmFjYTJkMTgxODg5N2MxYmJhZjVmYzg4MDkgbGVnYWN5LXRydW5rCisxMTMxNyAzMzZjYjUwOTg3OWE0OWMyN2MyNTUyZDc3NjE2YjEwYzUzMzRkMTgxIGxlZ2FjeS10cnVuaworMTEzMTggYjA0Zjk1ZmVkZDUwY2ExYWQ1YjM5MmRhZWJiZjQ3YzFmODFkNzZkNCBsZWdhY3ktdHJ1bmsKKzExMzE5IGYxY2E0MTk5NWU2MmU1MTcyOWZhNmI3Yzc4N2IxNDkyN2ZjMmRlZDAgbGVnYWN5LXRydW5rCisxMTMyMCA5MjlkYjgzODViYTRhNTNlMGJhM2IxZWQ2ODRmNDM2ZjFkZWI2MDM3IGxlZ2FjeS10cnVuaworMTEzMjEgZTVhODMxMTY4NGU0YmRhMzcyYmNmZjc3MDY1MDY0ZjhkZTQ5NThiNyBsZWdhY3ktdHJ1bmsKKzExMzIyIGMyZjllNTA1Zjc1YTFkYTkxY2EyMTdiMDdjMDNiMDM5NzQ1OWY5MTUgbGVnYWN5LXRydW5rCisxMTMyMyA0NGJhZWY4YWI1Yzg5ZDM0YjE0ZjkwODNlY2RlMDE5NzJiZjBmZDI4IGxlZ2FjeS10cnVuaworMTEzMjQgYmQ2ZDk3ZDZiMmFlMGI3NzBiYzgyOTUyOWY0MzUwNGNmN2FlNWQwMiBsZWdhY3ktdHJ1bmsKKzExMzI1IDhhMzcwNTI2ZGUwNmFkM2RiMGQxYzMxNDA1OGYwODZjNDY0OGFkM2IgbGVnYWN5LXRydW5rCisxMTMyNiAxYzdkODYwODcxZDlkMTBlZWRlYjlhY2NiMzYxNjNmOTYxMzk1YjFkIGxlZ2FjeS10cnVuaworMTEzMjcgYjY1ZWE4MTI3NzUyNWE5ZTRkZDI3NjcwNDQ1NDNmOWQzMTJmN2Q1NiBsZWdhY3ktdHJ1bmsKKzExMzI4IGI5MzNmNTg0YTI2ZDAzMTI2NDFlNmMzOGIwZTg1MTg1NzM5ZGZlZDggbGVnYWN5LXRydW5rCisxMTMyOSA3NDUzMzQ1NDU4OTgxYmU4ODBkOTYwNDM5YjEzMjA2NTYwMzYzNDg5IGxlZ2FjeS10cnVuaworMTEzMzAgMDg2NzAyMjUwMTUzNGExZjI0ZDAxM2E4ZDhlMmRmNTliNmZmYjcxMSBsZWdhY3ktdHJ1bmsKKzExMzMxIDM3YzY5MThlZmQzYmNhMTJmZDM1NzI2M2E2NTE1MThiYTkyYTU4NzYgbGVnYWN5LXRydW5rCisxMTMzMiA2MWVmODgxODY5NWJkNDM2ZGYwYzhkYWY4MjQ4MGE0NTdkMzA3MGI5IGxlZ2FjeS10cnVuaworMTEzMzMgYzM1MTUyM2ViYzA1ZWViZGM5YzQ0OTc0MTA4NmFmMGY1NmIzYzVhOSBsZWdhY3ktdHJ1bmsKKzExMzM0IDUzNGExYTQzN2FmM2E5YjhlYWY3MzUzMjM4NjFlMjcyODkwZWQwNmYgbGVnYWN5LXRydW5rCisxMTMzNSBjZWYyMGVjNmYyNDljYzQ2MmQ5YzRmMmZmNzlkYjRkZGRlZTE4ZDgxIGxlZ2FjeS10cnVuaworMTEzMzYgYmJlOWQ3MmJjY2RhMjdhOWRhYTMzZTA1ODgyOTAzZmQ5ZjNiZWJlZSBsZWdhY3ktdHJ1bmsKKzExMzM3IDVmOWRmZjY4MTc5N2ZmOTQwNzk0ODQwM2IyOGMwNjc0ODA1MmI5ZDQgbGVnYWN5LXRydW5rCisxMTMzOCAzNTRjZDI0ZTVkZmU0MmEwZjgyZjAzMDFmNzlhYTAwODc2OTA2MDQwIGxlZ2FjeS10cnVuaworMTEzMzkgZDI4MDQ2MDhiZWNkMDhhMWE0YjVlMjllZGEwYjM5MDUwZDRmZWYyYSBsZWdhY3ktdHJ1bmsKKzExMzQwIGY3ZDRhNTg1ZGEwMTg2YzBiNWI4OGI4MDE0ZTdjYTk0ZjMwZjc2MzEgbGVnYWN5LXRydW5rCisxMTM0MSA1Njc2MDcwNzZkOGY0Yzc2YTI5Mjc2N2JiNDQzOGMzYzJhOTQ4MDZhIGxlZ2FjeS10cnVuaworMTEzNDIgODY1M2UxZjIxOWYxYmQyMjYxZTEzN2M5NmY3MGZmZTEzYmE1MGEwMiBsZWdhY3ktdHJ1bmsKKzExMzQzIGQ4MDhlYmE0YjNjNjUzMDQ4ODBmMGUyZTZkNWIxMjM2NjJiZGJjYTggbGVnYWN5LXRydW5rCisxMTM0NCBlMTQ0NThmMTM2Y2NhZTNkN2E2YjQ5YzE4MTYzODFhZTYyZWMxMTk4IGxlZ2FjeS10cnVuaworMTEzNDUgZTAyNGM2OTYyNWUxMmY4ZWQ5NjY2NTZhNWZmNTNkMDVmYzFmMzUxYyBsZWdhY3ktdHJ1bmsKKzExMzQ2IDgwMTFmMTQ2NjlhODE3ZDRiZTljZjE1MmQzNTMwZDU0NGMzMmFiZDcgbGVnYWN5LXRydW5rCisxMTM0NyA1Y2RlY2FhYTliZWIwZDM3ZGQxZTQ0OWE4MTliZGVhNDEyNGUxZWRlIGxlZ2FjeS10cnVuaworMTEzNDggZjQ1NmY1YWE1NzE4NWEyZDMxYzkyMGE5YzM2MmNlMGJjZTMwNDc2YiBsZWdhY3ktdHJ1bmsKKzExMzQ5IGExZWMzZWMyNjAyZWNhNTgyNmViODBkZjYyMTQ5MDg3NTg5M2I2MDUgbGVnYWN5LXRydW5rCisxMTM1MCBiYjc4Y2MyNzQ2OWFiNGJlODczOGEwZWMwNmZhMTE4ODI2MzJhOTY3IGxlZ2FjeS10cnVuaworMTEzNTEgZjhlMmFkNGNkNDViYzNiMWJkMTE2NDUwOGUyMTJhMGQ2YWZhZTA3MyBsZWdhY3ktdHJ1bmsKKzExMzUyIDU3MDg5YWQ0ZDczYzZlMjBiYWY4NTk2YTI5NWE2NjljY2NkOTY2MGYgbGVnYWN5LXRydW5rCisxMTM1MyAzYmMzZjk0ZDYwNjFlNGYyYWYzNTc4ZDVkZTAwYzZlNmMwNDRhMzgwIGxlZ2FjeS10cnVuaworMTEzNTQgMDVjMTEwNGUwODRiMzE0NjM3NGM5Mjg3OWI2ZGIyNDI1NDYwNDc5OCBsZWdhY3ktdHJ1bmsKKzExMzU1IDg2OGEyNWNmNjUzYmYwNWViMzk3NTllOGE3YTBhZmU3ODFkYmRiZmYgbGVnYWN5LXRydW5rCisxMTM1NiBhYWNiZmRmNDk0M2U1Mjk4N2NjMzVhYWE5NDE5YzcyZjlkYWZkMjRjIGxlZ2FjeS10cnVuaworMTEzNTcgMTA3OTBmMTRkMTNhYmQyNmFhMjI4ZjBjMThmM2JkY2Q1NDk2YTNkMCBsZWdhY3ktdHJ1bmsKKzExMzU4IDcyYjY5OGMzMzI0Yjk5MDVhNDM3MDNiMTI4ZWU3ZWMzOWYzZjFiOTEgbGVnYWN5LXRydW5rCisxMTM1OSBkMzQyZWI0NGQ3YmRkNTRmNzUyOTgwMDY3ODMzZTdhNDk5MjVhZWYxIGxlZ2FjeS10cnVuaworMTEzNjAgZWIwNTlhMzNmN2ZmMzFjOTkyODY1ODc3NWY4YzQ5NjhiOTk4ZjA5NiBsZWdhY3ktdHJ1bmsKKzExMzYxIDgxM2Y1MjdmM2JlYzAxY2Q3YzJkZDk5YzJiNGNlYjBkMzQzYWU4Y2MgbGVnYWN5LXRydW5rCisxMTM2MiAyN2VlMzIzMWRmYTliZWM4MGE4MmI0ZTU1M2Q2MmM4N2YxMjM0MmQzIGxlZ2FjeS10cnVuaworMTEzNjMgYTllYjI2NWQyZjU3MGRlYmZkNGQ5NmQ1NDVmMGQyMjdjNjE1MzE2MiBsZWdhY3ktdHJ1bmsKKzExMzY0IGZlYmNhNmIxODI3ZGRkZGEzYTNkMjliZjk2ODI1Y2Q2MzQyMTE5ODIgbGVnYWN5LXRydW5rCisxMTM2NSBiMjhiODRlNmE0Mjk0MDVhMzFkZTcyZTlhNTFmYjMzMDU3MDZjOGY1IGxlZ2FjeS10cnVuaworMTEzNjYgZjg4ZjQwMjQxN2YyOWYzYzQzYWE2YjM3NjRlMmQzMjZlYWIzMjYyOSBsZWdhY3ktdHJ1bmsKKzExMzY3IDg1ZGNlMzJhY2Y5ZDc5Nzg4YTljZmI5YjZjNGZjMDIwN2YxMzE3NmQgbGVnYWN5LXRydW5rCisxMTM2OCBjMGE5ZWQyMWRmYTA1NjAyY2Y3NGE5OTQ4MGI1NmE5MTIwNjlkMmY1IGxlZ2FjeS10cnVuaworMTEzNjkgMDRhNDkyZjExMGRiZGM3MDZjYjZmOGQwM2NmYzZmZGE5ODgzODUzYyBsZWdhY3ktdHJ1bmsKKzExMzcwIDhjMDUyNGE3MTI0NGZkMGVjYThlYjZlYTBmYzJkMjhjZmQ5N2JiOWMgbGVnYWN5LXRydW5rCisxMTM3MSA5YTA3NWEyZWRiMWY1NDJmODg5MWI5NjE0ZDI5NmU3MzAyMzZmYjRlIGxlZ2FjeS10cnVuaworMTEzNzIgMzQwMTIxMmU1NGZjMzgwNWNiNjdjOTk3MDE0MmI1M2MwOWUzYjFmZCBsZWdhY3ktdHJ1bmsKKzExMzczIDMxYzA2MzUxN2MyMmVjMzRjN2UyMGQwMzM0YTVjODE5YmQwNGVkNGEgbGVnYWN5LXRydW5rCisxMTM3NCA2MGI0YTYxMGRjZmNjYWE3M2I3MDY2YTFlNzAyMDhhY2MyY2E1NDU0IGxlZ2FjeS10cnVuaworMTEzNzUgYTcwODMyOTVlYjM4ZWFjMDBiZDFmZTQ5OWZjMTNkYzQzZTFkZjEyZSBsZWdhY3ktdHJ1bmsKKzExMzc2IDA5MDYzZWVkYTJiNzAzZGE4OWMyMmI3NmM2MDdmM2I4ZDMyNWYxN2QgbGVnYWN5LXRydW5rCisxMTM3NyA3NjRkZTczMWM4MDYzZmE0M2M1NjI2OTk3YWNkOTFlMzI1YTJkMTM1IGxlZ2FjeS10cnVuaworMTEzNzggOWI0YmMzYjhiOWQ0Y2QwNWU4MDFjZmY4ZTEzOGUzNDEwOTUxNmRlYSBsZWdhY3ktdHJ1bmsKKzExMzc5IGQyOTVhNTE4NzRhNmFmYTJhZjIxN2ZhYjliMGYyMjdhMzU0NzJkNjcgbGVnYWN5LXRydW5rCisxMTM4MCA5ZGI4YjVlYTZiMjEyMjA2OWQ3YzY2YmIxMDY5MDM5Y2I2NjhlNGFlIGxlZ2FjeS10cnVuaworMTEzODEgNDkyMzYzZDZiYzk0NTExODRjMmVmNDUzMzQwZjFlMWNlN2ZlZDA5ZSBsZWdhY3ktdHJ1bmsKKzExMzgyIDM4NTQ0ZjgyOGQ3NDA4ZTI3ZjllM2Q4OGUwMjRjYTRjMGZhNjU0YzMgbGVnYWN5LXRydW5rCisxMTM4MyA2ZGMwYTlkYzViYmI5MWE1NGMzOTEyMmJkNDU3Y2I5NTE1OGJkN2Y5IGxlZ2FjeS10cnVuaworMTEzODQgZGRmNzEwYjdlNmViNmZmYjUyMDg4MTNiNDE2ZWU0YzY4M2Q0MGZlYiBsZWdhY3ktdHJ1bmsKKzExMzg1IDZmNzNhZTFjZjkzNDZhNzE2OTZiZGQ1ZmE1OTNjMWUyMDM2MmM2NWIgbGVnYWN5LXRydW5rCisxMTM4NiA2ZDhiOTJjYWY4Y2RiNTJlMDY4Y2NjYzdhZWI1NTQ1MmUwMDE3YzZiIGxlZ2FjeS10cnVuaworMTEzODcgZDQxZmY1YjE5MWQxZDExNmI4N2JkZDMwN2RjNTliMTAyZjNmZDVhZSBsZWdhY3ktdHJ1bmsKKzExMzg4IDI5ZDg0N2M0MjhmOWRhNzE5OTBjNDkyYWJlZTdjYWY0OGUzNmJjNDcgbGVnYWN5LXRydW5rCisxMTM4OSA5ODAzNTU2YzFhZTdjM2ZlZWVkYTFjMGVlNGViODg4ZWY0ZWNlYzg5IGxlZ2FjeS10cnVuaworMTEzOTAgYTViNzFhOGExYWI1ODY5NjJjNDY2MGViYWJlODNkN2NiMjg1ODk3YiBsZWdhY3ktdHJ1bmsKKzExMzkxIDdkNjgxMzUyMWY2MTM1OWVjNzZiMjkwYmE3MzUxZWJkN2ZjZWI2OTcgbGVnYWN5LXRydW5rCisxMTM5MiA4OWU2NWE5NmE3ZDNmYTgwNTUzNTUzNGYwYjdkOWU1NDRhZTVmYzgwIGxlZ2FjeS10cnVuaworMTEzOTMgYjFkMWQ4YzAwNzFiYTdjZDczNGI3YjFkNWZjMTQwM2Y5NWUyZGI2NyBsZWdhY3ktdHJ1bmsKKzExMzk0IDlhOTg0Mjc2Y2M1NjVjYTJmZDZmNjViNmIzNGYzNTIzMTk2NGI2YmUgbGVnYWN5LXRydW5rCisxMTM5NSA0NTliZGE5NDBkYWEyNzgxNGY3OTk3YmZhNTQ2MTIzZjA0YjQwMTY3IGxlZ2FjeS10cnVuaworMTEzOTYgZDZiNzM5NjI1MjliYjY2MTRmNjNjMjVlY2VmM2NhNzYxMmJlYzdiOSBsZWdhY3ktdHJ1bmsKKzExMzk3IDlhNDA1NGI4NDg1ZmY0ZWFmNjZjNGYwYjcwMDdkODk3YzQ0Njg0MmIgbGVnYWN5LXRydW5rCisxMTM5OCA1NTJjNmIzYWJhM2RlNTA1NGJiZjQ2OWVlNDZmNDRmNTZiMWI5MWRiIGxlZ2FjeS10cnVuaworMTEzOTkgNmI2MzNkZjQxZTU5NTFhYWNjNGYwYmY4NzU2OTVjYmEwN2MyMjM0MiBsZWdhY3ktdHJ1bmsKKzExNDAwIGU1NWE3OWZmODIyOGY5MjJhOGNjYzZlOGFiOTZiNjkxMzZjNGQwNzggbGVnYWN5LXRydW5rCisxMTQwMSBhY2ZmZmUxNDYyOGU0NDhiZmViMDhiNWE4ZDM5MjExNDlmNDg2YTRjIGxlZ2FjeS10cnVuaworMTE0MDIgNjEwNjgwZTNiOTI5M2ZiNmNkMWQzMWQxZGE2MDUwM2UzOWFjYjBmYyBsZWdhY3ktdHJ1bmsKKzExNDAzIDAyN2YzZWVmNmU1YTc5ZWVjNDQyODYxNTAwMTEzOGQ5NmU3MTNhMmIgbGVnYWN5LXRydW5rCisxMTQwNCBkMGY5M2ViYTliYWFkMGM0YmFiNTlmMzdhYjJjY2Y0OTJkYTUyYjM0IGxlZ2FjeS10cnVuaworMTE0MDUgOGU0MTkwNjg2M2JlN2JiNDdkMTEzZmU3ZWEwYWI0OWZiMmQxNjRjMiBsZWdhY3ktdHJ1bmsKKzExNDA2IDI4YmM1ZDhlOGRjYTM2YjMzZjAxNGYzMjUzMmQwZGUyZTdjNzJhM2QgbGVnYWN5LXRydW5rCisxMTQwNyAwOTU0YWQ0YWNkZmRlNWM4Y2Y1ZDU2M2IwZDA5YzUwMTYyNjczMzQ5IGxlZ2FjeS10cnVuaworMTE0MDggYmU5MzU4NTFkYzUwYzNkZGFmZmZjYzgwOTA2YjRjOTkwYTAzOTIxOSBsZWdhY3ktdHJ1bmsKKzExNDA5IGFmOWJmODRmYmM1ZWE0MmI5YTYxMzg3YWFkOTFhNzUyMTM5MWU2MDQgbGVnYWN5LXRydW5rCisxMTQxMCA3M2Y5YTFlOGFlNTJjMDVhNTQ4N2E2MTE1YmVlNmQxOTUwZGNjMTI0IGxlZ2FjeS10cnVuaworMTE0MTEgYTgyNDlhNmIxYjU4ZTQ3ZGRlODMzMjM5MTM4MzE1Yjc5M2FkODc1MyBsZWdhY3ktdHJ1bmsKKzExNDEyIGJhOGQxYmM5OGIyZDgxNTlkOWZkMGY3YTA3YjQ2NThlNDE2ODU4NmEgbGVnYWN5LXRydW5rCisxMTQxMyBjNDVhMmQ5MTFmMzE1NjZmMzNlM2UxNjdlYWI4Y2QyNGQzY2ViZDM0IGxlZ2FjeS10cnVuaworMTE0MTQgZGFlMmYyZWY5MDE1YWEzZTM4YjcxMGNlZDUwNDg0ZWRmNjU4ODBjMiBsZWdhY3ktdHJ1bmsKKzExNDE1IDBiYTgxYjk5ODhlZWZlZDFkNjEwMTA3ZTJlZGVlNzYxOGE3YWEwYjcgbGVnYWN5LXRydW5rCisxMTQxNiBkYzZlZGZkNGJhZTViZmIzM2U1ZGEyNzA5NjM2ODdlNWJjNGUyZDVjIGxlZ2FjeS10cnVuaworMTE0MTcgMjBiODNjYTA2Y2U4YTE4NzM2M2U0Y2VmZjEwNTM4NTFhODkxZGFkNiBsZWdhY3ktdHJ1bmsKKzExNDE4IDJmOTM2YjdhMDlmOTRmMTgwNGNhY2E3YjcxNGU0ODNjZGQ0NDVkZGEgbGVnYWN5LXRydW5rCisxMTQxOSA1YjczZDViYWJjNzhlOTFhYjU1MDVlYjg2NjZjMTE4MTIyNTk1ZTcyIGxlZ2FjeS10cnVuaworMTE0MjAgMTk3YWM1YWQzMGNkZjM2MDkzODc1MTkzMGExNTE3YWJiYzA3MmUyYSBsZWdhY3ktdHJ1bmsKKzExNDIxIGI0ZTJiMmNiNjViMWJkMTA1ZjdmY2IyOTVhMmFjZTk5MjhmMzZkMDYgbGVnYWN5LXRydW5rCisxMTQyMiAzNDc4ODRlYzUzMTgxMzdjZTJiN2E0ZjhiYmJhNDExNTU1ZDQwN2Q1IGxlZ2FjeS10cnVuaworMTE0MjMgMmQ3NzUzMDg1Mzg1OTJkZWE4ZGRiOTI5Njg5YTIyMTBkOGFlYjYzNyBsZWdhY3ktdHJ1bmsKKzExNDI0IDQwMDg5ZTU1ODMwOTBjYWViYzMwOWU0MzZhN2QwYThjZDNhYjFiN2MgbGVnYWN5LXRydW5rCisxMTQyNSBmZGE0NjNjM2IxNzY3ODk3ZTg1MDcxYTQxNjY0ZGE5NDQ5NjgzYjEwIGxlZ2FjeS10cnVuaworMTE0MjYgMGYzMzE4ODNjYzE1ZjA1M2VlOTdlZDljNDZiNTIxYWYxNjE2ZThhZCBsZWdhY3ktdHJ1bmsKKzExNDI3IDNiMDI5MTY1NWUzMTYzMTJhYmNlZWI3ZWJhY2NkNTVkOTQ4ZjAyYTEgbGVnYWN5LXRydW5rCisxMTQyOCA3NjAxYTdlOTU4M2RlNWRiOTA5M2E4YmIzOGY5NTAwOThiYzY5ZWY3IGxlZ2FjeS10cnVuaworMTE0MjkgNTBhZmEyOGFhNGI5MTljOWU2YzJkNmE3NWZkZDY2ZjRkMmIwN2U4NSBsZWdhY3ktdHJ1bmsKKzExNDMwIGM5MTgwOWNkNjdlNTQxYmU2NGE4MGRhMjJlNDUwMzJiM2UxN2YwMjggbGVnYWN5LXRydW5rCisxMTQzMSA3Y2Q0MmM4NzhmMTYxOWIyZGU0ODZkNmI3ZGFhMzkxN2JjMzdjMzZhIGxlZ2FjeS10cnVuaworMTE0MzIgMGE2ODkyYjFhNGFjMjgyOWNmOWJhYzJmMTdiZTc1OGE0YTEyNzAwOSBsZWdhY3ktdHJ1bmsKKzExNDMzIGNmM2NlYmE3ZWZkZGVkNjI1N2E5NzY3Y2ViYzY1ZDdiOGY3ZDg1NmIgbGVnYWN5LXRydW5rCisxMTQzNCA4YWNjNzJhODEzMTk5OGY4MDU2NzhmM2IxYjVlODg1Y2JmNWUzYmQxIGxlZ2FjeS10cnVuaworMTE0MzUgY2I3YTE1MDY5MTlhZjRmNzdiNzA3M2Q4ZjE2YmMwODhmMzRiMzRiYyBsZWdhY3ktdHJ1bmsKKzExNDM2IDk5MDE1Mzg1M2UzYmIxZTc5Nzk3YWZjMzljNGVhODdhMDc1NTdlOTUgbGVnYWN5LXRydW5rCisxMTQzNyAzODRmZmVkMjUyZTkxZmQ4NDg4OGViZTVlZGVkNDhlZDk2ZmU1MTI1IGxlZ2FjeS10cnVuaworMTE0MzggYzI2NTkwYjFjMzk2YjU3MGVmMjk2YWYzODJlNjAyZGVjYjNiZWRlNyBsZWdhY3ktdHJ1bmsKKzExNDM5IGFjMTg4MWM0YmE2ZDlkMDZhOTZiNzFjMTE2Mzk3YjIxNDYwOTBhZmEgbGVnYWN5LXRydW5rCisxMTQ0MCBjNzlkZWZiNWEzOWMxYmQ3M2MzZDYyYWE3YTBiMmExMWY4OTJhM2I3IGxlZ2FjeS10cnVuaworMTE0NDEgMjQ5Y2Q0NDMzY2YwOGViZjJiODY5NTI4MzIwMTQ3YzViNDJlN2NmZSBsZWdhY3ktdHJ1bmsKKzExNDQyIGExZGVhZjA0Mjc3YmJiOGEwZGE2ZTNjZTc1ZWE2NDM1ODM1MjhlMTAgbGVnYWN5LXRydW5rCisxMTQ0MyA5NjE4YTg2ODc5Y2FlZmFhYTdjYzAzNzZkMTA4ZjU1MGJhZDNlZTBlIGxlZ2FjeS10cnVuaworMTE0NDQgZTc5NThlOGM3NzdhNzg0YjljMGM2NmU2MTljOTUyN2VjNjQ2ZWVhYiBsZWdhY3ktdHJ1bmsKKzExNDQ1IGVjZGQ5NmRkYjAwMzVmN2JhYTcxM2ZjYjQyNjY2NjQ5ZGE1OTM1NjcgbGVnYWN5LXRydW5rCisxMTQ0NiA0YjY0ZjEzMWFhNGQ4NTM0MjNmNDMxMjc2OTkyYTcxY2UwNDQ5NWI0IGxlZ2FjeS10cnVuaworMTE0NDcgOTlmZmUwYTM4YTFjYWQzOGFiZjU5NTViN2Q1MDg0YWM5ZTAwMjhiZSBsZWdhY3ktdHJ1bmsKKzExNDQ4IGJlMjFhYWRmNDkwOGY3ZDllZjBkZjUwODRiMmMzODliMjM3OWY5MWEgbGVnYWN5LXRydW5rCisxMTQ0OSBjNGMzMjhhYWJkODI1YWFlOWRkNDdlZGQwYzllNjA3ZjRjNmJmOWNmIGxlZ2FjeS10cnVuaworMTE0NTAgZGUxNmUxOWZmMWRkOGIwZjhhODg1NTZjZTQ1NjEwMjE1MDgwNGYyNiBsZWdhY3ktdHJ1bmsKKzExNDUxIDE1N2U0ZjIwY2Q3MTYwOTRhN2ZkOTVkNjlkMWUzY2Q0NDdkZThmODEgbGVnYWN5LXRydW5rCisxMTQ1MiA0NTYxNGNmOWU5MTFiMGQ2NDA0MzMyN2NmZWFlNWNkNmY5MjFmOTFkIGxlZ2FjeS10cnVuaworMTE0NTMgNThkNjkwZDRlMzEyODM3NWI0YzY1MTc4OTVhMmE0MTY1NDI5NWQ1NCBsZWdhY3ktdHJ1bmsKKzExNDU0IDc4ODVmMTVkYTA4MDFjOWEzNTc5YjZhYTg2MTg4MjhlMTc5ZjllNzYgbGVnYWN5LXRydW5rCisxMTQ1NSA0NjhjYTg0ZmJjMTRhMjU1Y2EzMGY5OWRmOWQ5MWUxZGQ5YmJiMjdjIGxlZ2FjeS10cnVuaworMTE0NTUgZmVkNjNjY2JlNmRjM2FjNjYzYmZlOTdhMmY3MDA2YjFiMjg1NjhmOSBsZWdhY3ktdHJ1bmsKKzExNDU3IGQ2OWNmYzIzYWE3NjY0MzBjMWQ1MzE4N2RjYTIwYzlhZjI2OWJlNWMgbGVnYWN5LXRydW5rCisxMTQ1OCAzYmNkNjI3OGU2NTgxMDdlZGJiNDY3YTFjNGIzZTEzYmI3MGMyNmQ1IGxlZ2FjeS10cnVuaworMTE0NTkgODJhNDNlMWJmYTRmZGEwNjAyMzdiMDFmMzk3NGI1ZDhlYmZmODlhMiBsZWdhY3ktdHJ1bmsKKzExNDYwIDA3ZDk3ZDE1NDZkNGIzYzQ0Nzk1YmNjZjRjM2Q5YWY2YTg1MTE5NWQgbGVnYWN5LXRydW5rCisxMTQ2MSAwYWZjMzgyNzk3N2UxMmIwZjczYmJiOWEwMzdjYmNkYzk1MmJkODlmIGxlZ2FjeS10cnVuaworMTE0NjIgMjZjMDQxYjE0NWMxOTViNGRmYjgyZGY4YjJjM2U5Y2E1OTZmZTAxOSBsZWdhY3ktdHJ1bmsKKzExNDYzIGYxZTQxZmMyNzgzYzE5ZGQ5NjU3ZTVjMDc4YTkwZWU2Mzk1MDFlNzYgbGVnYWN5LXRydW5rCisxMTQ2NCAwMzk4MDUxZjhmZmFlMTc1MTM3Y2NhNjY2YTliM2EzZjZjM2ZmNjk4IGxlZ2FjeS10cnVuaworMTE0NjUgN2MyYmM3ZGI0OTMzNmNjMTY0ZTI4YjNhODhjMTE0MWMyZjAzNDMxZSBsZWdhY3ktdHJ1bmsKKzExNDY2IDRlZjY0MGFjZjIzNjVhYTcxNTI3OWYxNzlmNjk0MWU1OGMwZTE0MDEgbGVnYWN5LXRydW5rCisxMTQ2NyA2ZDRlYTM3ZDcwYzIyYWZhNTBhYjdlMGUwNjU4MzRhNmNmNDc0NDY1IGxlZ2FjeS10cnVuaworMTE0NjggZDc4NzhiMzg2ZGFmYTgxMWExODljZTlkMGNlYmMyYWMzYTcxYjJlMyBsZWdhY3ktdHJ1bmsKKzExNDcwIGZmNjdmOTNjNGE5YmMwZmYzZTM1ZDhjNWQ4NTczNzg1OGE0M2UyMTAgbGVnYWN5LXRydW5rCisxMTQ3MSAzZTEyN2JjYTg0ZTcyZmJkOTRhMjRhYTNlMWYzNzU4ZDBlNTNjZTg3IGxlZ2FjeS10cnVuaworMTE0NzIgMDcwZGU0ZDM5ZGRkODZhYzk2ZGJhNTZkZTlkYzM5OGQxNDIxNDRiMSBsZWdhY3ktdHJ1bmsKKzExNDczIDVmYjNjNjgzZTg2MjYyMzU2NjZjNjE5NGQ0MDYyZGU1MjQ1Nzk3NTAgbGVnYWN5LXRydW5rCisxMTQ3NCBkMTc4MjI3MTI0MjEwZWNhNDk0OTllODkyMWJkNDNlMjhjOGI0MjE0IGxlZ2FjeS10cnVuaworMTE0NzUgZGIxNmNhNGRlNGM0ODc4MTllNjEyZTQ4OGIzNjljYjVmODgzNmVlMyBsZWdhY3ktdHJ1bmsKKzExNDc2IGVlM2FmOTExYWQ1NmI2ZWQ5YjExNTgyYTE0NzRlMDQwYmE2NTdlMjUgbGVnYWN5LXRydW5rCisxMTQ3NyAwOTE4Mzk0MzE4MmViMzJhODZlOTMzOWQ4MjU4YWYzMGFiZWZmMDUyIGxlZ2FjeS10cnVuaworMTE0NzggOWM5YzRjM2VkZWMyZWQwMDc5N2VlZDVjNjViMTBjODNlNzliMjRiZiBsZWdhY3ktdHJ1bmsKKzExNDc5IGYxNDczOTI2MWEzNGMxODBjYmU3MzczOTEzYzEwMWRlNDM0OTQ1NzMgbGVnYWN5LXRydW5rCisxMTQ4MCAzYmRkMGU3OTBiYzk4NjljMTI2MDg4YzZlNmYwZjcwZDNiM2NmNjkyIGxlZ2FjeS10cnVuaworMTE0ODEgMjllM2IxZWI0NmIxOTBlN2QzOGJlMzE3YTdkODY2MmE5YTdjOTU0MSBsZWdhY3ktdHJ1bmsKKzExNDgyIGY4NjRjOWY2NTYwOTUyYjUxOTk3ODZjNzRhNmM3ZWVkYmQ1Yzg4NjMgbGVnYWN5LXRydW5rCisxMTQ4MyBkZmI3ZjQ2OGI3OGQzNzc1ODk5N2ZiZjZjN2ZmYWZhMmEwMjgwMDg5IGxlZ2FjeS10cnVuaworMTE0ODQgYzJkZDRmMDg2YTQyYmZhNDExZmFmN2RmYTY5YzFiYWE5MjcwMTg1NSBsZWdhY3ktdHJ1bmsKKzExNDg1IDQ0NTA1MDc1NTU4NmI1OTEyMmM1ZmE0YWNkOGNlZGIzOGE1ZWE4NTggbGVnYWN5LXRydW5rCisxMTQ4NiA3MTE2Y2I5NzEyYmNjNzA5OThkZjk0ZGVhNzVmNTViMjM2MzA5YjA3IGxlZ2FjeS10cnVuaworMTE0ODcgZjE2YTZlNjQ4NTliYjhjZjZjOTg2YjU1NDhhM2FkMTM4YmU5MjU3NyBsZWdhY3ktdHJ1bmsKKzExNDg4IDkzYmVjNmE4ZGIyMWIxZjEzNTMyMGRiMmNkZGNkNjg2ZWFlNjYwNDIgbGVnYWN5LXRydW5rCisxMTQ4OSBlYzAxZmU5YzI4NDE3YWJlZTgzMGNjZjBhOGRlMjQ4NWYzNzkxMGJiIGxlZ2FjeS10cnVuaworMTE0OTAgYTlmNmZiMTRhYmQ3Y2EyMDE4YjAwOWExMGVmZGFmNTliNGI3YWU1MiBsZWdhY3ktdHJ1bmsKKzExNDkxIGZmMWE4YTM4ZjhjMTFhZmI1YjlhN2MzNDdlNDMyOTljZDNkYWYzMDUgbGVnYWN5LXRydW5rCisxMTQ5MiBlYWJiZTBlZDM0NjhjY2VjOGI4MGIyMTI1Yzc2Y2JjZGI5ZDBiZjIyIGxlZ2FjeS10cnVuaworMTE0OTMgNTk5MTY3Mjg4NWNiMWFjNGRmY2Q4OTQxYjZmNGE4YTE5NzQzYzYzZiBsZWdhY3ktdHJ1bmsKKzExNDk0IDllMDFiNzRkYWY3N2M3MWM3NzU4MWZmM2U0NGUxOWFkMDAxMDg4ZTkgbGVnYWN5LXRydW5rCisxMTQ5NSBhMTEwYjYwNjk5YjFiNDEyNTUxN2ExNWZhODdkZGU3NTA1ZmRlY2NjIGxlZ2FjeS10cnVuaworMTE0OTYgMzZiZmFmZGRhOGQxNGYzYjlmY2YyOTY0NjE5OGM2OWQ5ZTcwNTlkNyBCQlBZCisxMTQ5NyBiZmQ4NDcyZjY5NmI5YzhmYzY5YTJjNzMxOTAyZWMxNDFkOWE0MDQxIE9TQU0KKzExNDk4IGQ4NWU4MDcwYjE2NGYzNzZmN2U2YzUyZDRiZmJhZTRlM2NkMTM0OTYgUFlUSE9OU0NSSVBUCisxMTUwMCBhOGQ0N2EzNzE4Y2U5ZmQ4YzRmZjc4Mzc2OWYxYWE1OTUzZDlkOWQwIEJCUFkKKzExNTAyIGI0ZDNmOThiZjIyOTcyZDRhMTIxMWU1YmMzZDkyZGNlMzc1M2Q3YTEgUFlUSE9OU0NSSVBUCisxMTUwNCBlMWYzMjNhZTljNGI1MjM3ZGRkZjBlMTg1MDljY2M2ZTMyZTUyMDk3IE9TQU0KKzExNTA1IDExYWJhZTI4NGMwNzFlZGJlZTRlNTE4NDc1ZmEwZGM3Y2Y2YjEyY2QgbGVnYWN5LXRydW5rCisxMTUwNiAxN2NkNmU1ZDI5NGJiM2EwNGJkOTk4Y2Q3YTVlNjM1ZGRhYWEwMjg3IFBZSURFCisxMTUwOCBlOTIxY2RiY2M1ZGQ2M2FmYjYzMzRhZDkzYzc0ZTQ0NTVlYjE3NGE2IFBZSURFCisxMTUwOSBkZmY2ODgxMjQ2NTcyZWM3OTFhNGIxNTkzNjIyMGEwMGQ3MGMyNzY0IGxlZ2FjeS10cnVuaworMTE1MTAgMmNlM2RhNDE5ZTFkMzllNzRlMDA3YTA4ODQ5YTNmZDU4ZGJlZWMwNSBsZWdhY3ktdHJ1bmsKKzExNTExIGRkNWZhMTc1NzU1NmRiNzNmYzYzMDRkNGM0NWJiN2NhYzA5ZGIyYzMgbGVnYWN5LXRydW5rCisxMTUxMiBiOWEwNzA3MzZlYWNiMzExYzdjNzIxODA4YzZjYWI0YzdhMjEwODNhIGxlZ2FjeS10cnVuaworMTE1MTMgODk3Y2UwOTc2Njk2NTIwYTRiMWUzZmI3YjIwMmZmYWQyOGRhOGFiYiBsZWdhY3ktdHJ1bmsKKzExNTE0IGIxNTBlYmY3YjJiNzJjNDhhOTAwZjIyMTU5MTNiY2VkODEyZDM4ZmIgbGVnYWN5LXRydW5rCisxMTUxNSA2NzRmNDUxYzQ4MTVmZjRhMDQwNjJlYWQ3NzU4Yjc3NzY5ODlhYWE2IGxlZ2FjeS10cnVuaworMTE1MTYgOTI4ZmU4YmM5ZWI2ZDY3NTZmZTcxNGE3ZTBmZTQ0YjMxYWNlODE0YSBsZWdhY3ktdHJ1bmsKKzExNTE3IGE5NzI0YzhlNmU2ZmQyYjAzMGMyNmExYjRlZjQxZjIzNWFiYTMzNzEgbGVnYWN5LXRydW5rCisxMTUxOCBiN2U3NzQ3YzE5Njk2OGY3ZWE1OTdkNTMzNTU5OGE2YmE1ZGRiYzlmIGxlZ2FjeS10cnVuaworMTE1MTkgNmEyZTkyNjIxNTQxMWRlMjFkOGQ5YWFhNWNmZTMzYWQ0MDk3N2FjYSBsZWdhY3ktdHJ1bmsKKzExNTIwIGE4N2IyM2Q0Mjg4MTRlMzkwNWMyODFiNmEyZTBiZGE0ZmNjOWE5YTYgbGVnYWN5LXRydW5rCisxMTUyMSAzZGY1YjlkODMzNWI3NzVhOTY0ZGVlNGE2MWJhYWYyNGExNTI2ZDNhIGxlZ2FjeS10cnVuaworMTE1MjIgZmI1YTVlYzJlYTFhYjAxYmY3NDkxMDhmZGRlNTJmOTdhMmI2OWI3MSBsZWdhY3ktdHJ1bmsKKzExNTIzIGQ1MzIzN2JjZjE1Zjc3NDIxNTQxOGY3M2Y4YmZjMmI2MGI3ODU4MmYgbGVnYWN5LXRydW5rCisxMTUyNCA2NTEzOTcxOWI2NTYwNTllNTJjNzY5YjJhNWZjODgwODg2ZGRmNzAyIGxlZ2FjeS10cnVuaworMTE1MjYgYjNlZWNkZTM2NzllZGMxMzMwMzQwMDNkOGZlNDU0Mzc0ZjEzYjgwZCBsZWdhY3ktdHJ1bmsKKzExNTI3IGQzYzA2NzkzNGM2M2NiZjc2ZWY3OTYyY2E2ODgzYmI2NmY5Y2UzMDkgbGVnYWN5LXRydW5rCisxMTUyOCBkMjcyMmE0Y2JkOWM2MTI4YjUyMTY4NjY4ZjhmNWI4ZWRhY2QyNjUxIGxlZ2FjeS10cnVuaworMTE1MjkgYmFmOWE1YTcxZDJkNmRkZjY4ODE1YzRkNWFkN2Y5MzRiMDRiZDRmZiBsZWdhY3ktdHJ1bmsKKzExNTMwIDk5NjI4MzNkNDlmZGRiOTMyNjIxOTdhMTVjMGVkOGQzZWM2NWIzZGUgbGVnYWN5LXRydW5rCisxMTUzMSAxODJjOWNiZGYwNTNkZTNhODMyZDA4MDUxNGI0NTlhMjhlNTZjMTE2IGxlZ2FjeS10cnVuaworMTE1MzIgMTFiNmYwYzllYWM5OThjYThmNmM4M2NlZDNkNDBlN2I1Y2Q1NWRhMCBsZWdhY3ktdHJ1bmsKKzExNTMzIDE4Njk3ZjU5ZmQ0OGI3N2JkNTQ2ZWE5MWY5NmRmYjQzMGU3OWVmOWYgbGVnYWN5LXRydW5rCisxMTUzNCA2MmI5NGNjOThkZTQ1OWU3YTgwMzk3MWQxNDc0MmRhNWQ2MTg1MWJhIGxlZ2FjeS10cnVuaworMTE1MzUgMjRkMGE1N2FlMjM0ZGM4MzU3NjgzZTFlMWM0MzFlNTRiODk1ZGQwOCBsZWdhY3ktdHJ1bmsKKzExNTM2IGYwYzhiOGEzM2YwOGVhZTA4ZDNmZjI5ZDE1ZTBlMjA4N2Q4ZTk3ZTggbGVnYWN5LXRydW5rCisxMTUzNyBlYmMwYzEyZGJkNzhkNjBkOGZlMDhkODkyOTZiMDliMmMxMzk1NWJiIGxlZ2FjeS10cnVuaworMTE1MzggOGQxOGQ0OTZhZjg3MDlmYzNhYWIwY2VlOTYyZmQ2YzAxN2UyYmJlMyBsZWdhY3ktdHJ1bmsKKzExNTM5IDlmZDkxNWQyM2NmYTAzYzAwZDNlODA4MmQyMmMxNWYzNDNiNjNhOTYgbGVnYWN5LXRydW5rCisxMTU0MCBkOGVkZTAyMGRmZWIyOTRiNzVhZTdkYzY5NWFiYTkyMzcwYzJhYjMwIGxlZ2FjeS10cnVuaworMTE1NDEgZDQzN2I2NjgzZTI0MTc2ZWFiNzViM2RhMDdkYjg1OTlkMmI0MzRmNCBsZWdhY3ktdHJ1bmsKKzExNTQyIGFkNmJjMmM1ZDM1M2VlZGNiMDIzNmVkYjY3ZWNhYzk3ZDRlYmMzMjEgbGVnYWN5LXRydW5rCisxMTU0MyA5MWQwODYwNzQ2ZmMyNzMzYmQyMGExNDg2YzkwMTMwNmY0NjZkYzMzIGxlZ2FjeS10cnVuaworMTE1NDQgNmQyZWI1OGYwNDE4NjgwODZkOTg3MWNkMWM0YWY3ZDg4NzNmMzYwMyBsZWdhY3ktdHJ1bmsKKzExNTQ1IDExOGY5ZjczYWJlOTE5ZTkyZWI5YjNkZTYyZmY4NTQ3YzIyNDlkYjIgbGVnYWN5LXRydW5rCisxMTU0NiBjYmY3MmIyMjEwYWVhOWVlNzgzMjYyODc5OWJkN2Q0MzdhODJmOWM0IGxlZ2FjeS10cnVuaworMTE1NDcgZjNlYmRiMjI3NGU0YTgyOWY3ZjdjZDJmYjAxN2RhMzVmODAxMDBiNiBsZWdhY3ktdHJ1bmsKKzExNTQ4IDgzOWM2NjIyZDE1YTA3MjEwYzc2ZDU5N2M1M2MyYWQyNDMxNmZlMTAgbGVnYWN5LXRydW5rCisxMTU0OSA5MDViZmFjMGZhMzJlMDU2OTU3ZGZiN2QyMGRhZjlhNTI1M2NjYmY0IGxlZ2FjeS10cnVuaworMTE1NTAgMTZmODM5N2Q4ZjA0OGRlNjRhMWI4ZDBlMjBhYTkxZGI0ODA4NjUwNSBsZWdhY3ktdHJ1bmsKKzExNTUxIGRhYmIyYjZhM2E4MWViMGZlOGM0NGU0NTYxN2RmMjYxN2YyNjQwNWIgbGVnYWN5LXRydW5rCisxMTU1MiA1YmM2NGVmYzY1ZTAyOTg0MWMzMzVmNzI2NzhkNTU2ZjZhNjE0NzM5IGxlZ2FjeS10cnVuaworMTE1NTMgMDUxODFlMTA0NDIwYWMwM2Y1MDYxNzkyZWU0ODJmYzFkY2RmZTYwYyBsZWdhY3ktdHJ1bmsKKzExNTU0IDAyNmUxMjM2MjQzZTZjYmFlMWNiN2JjZmIwNTRhMjU2ODlhYTJjZjUgbGVnYWN5LXRydW5rCisxMTU1NSAxOWVjNTM0Njk0YWRkZWI4NGRmZWUyMTRkYmI1ZGQ2ZmJkNzlkYjhiIGxlZ2FjeS10cnVuaworMTE1NTYgODY5NTJiZGFiYjIxZTExZmVjOTFjMzFjMTVjOTQ1YzYxODIyYWVhNyBsZWdhY3ktdHJ1bmsKKzExNTU3IDVjMWUxZmIzNzJkZTA2ZWUyODFhNmNmMTBmZTI0ZTNiNGQyMDMwMjcgbGVnYWN5LXRydW5rCisxMTU1OCAwODc2YjZjMjQwMDdkODY2NmRlYTI3NzZkYjI2N2IwZTM2YTY4Mzc4IGxlZ2FjeS10cnVuaworMTE1NTkgMDA4OGFkOWQ5NmMzODZhYzQyYmM1NDYwZmUyY2JhMDA4YjdlYjBlMyBsZWdhY3ktdHJ1bmsKKzExNTYwIDU0MDFjNzE0MjhlZWZiMGU2MmE2ODE3MzdjYzdhM2RhOTc0MjE1MDkgbGVnYWN5LXRydW5rCisxMTU2MSAwNzgxYTQ5OTkwNTE1YzE2Mjk4NmZkYmMyOGY3OTY1OGJkMzdkYWI3IGxlZ2FjeS10cnVuaworMTE1NjIgMjU3MDYzYWFlMDAwZjNmNTk4N2M2MjZhZWM0YmFjOGM0Y2I1N2NiNiBsZWdhY3ktdHJ1bmsKKzExNTYzIDM0MzNhOWViZGY0MzllNmQxOGM5ZjIyZmJhMmZlZTc5NTlkZTllOTcgbGVnYWN5LXRydW5rCisxMTU2NCBhNWUzYzY5NWQyZmJlMzc3ZmVmNGEyOGFkZmE0MzUwZTUxMDhhNmNhIGxlZ2FjeS10cnVuaworMTE1NjUgYjI1ZDVhNjJlMzU3NjNkNTg4M2U5MGQxY2I5ZTNiMTgxMjQ5MDAzZSBsZWdhY3ktdHJ1bmsKKzExNTY2IGViYzhjYjA3NzAzZjg5ZDQ2NTJkNjk0NjdiNTg0NGU3ZTRkNzhmZDEgbGVnYWN5LXRydW5rCisxMTU2NyBjMmNiZTlhY2ZjOGU1ODgzMGNkOWFmN2IyMzkzMzRjNzlkZGU1NzJiIGxlZ2FjeS10cnVuaworMTE1NjggMDE4OGQ2MjU5NjlhYjMxM2ZkNmMyYjQzZGE4MjJmM2M2MzBjOTM1YiBsZWdhY3ktdHJ1bmsKKzExNTY5IDljZWE2YjYxNzgzOGU1NDEyZjUzYWE3MDY1YzJhYmMxMzM5MTVmN2UgbGVnYWN5LXRydW5rCisxMTU3MCA2MThmYjgzMGJlNjU4Y2ZiNDQzNzk5ZDhkMTFkYWU0ODAyMDllOTU5IGxlZ2FjeS10cnVuaworMTE1NzEgYTk4MmIxN2U5MzhmNTI5ZGZhMDRjMzRkODE2NWYzNDY0ZDE4MmMyYSBsZWdhY3ktdHJ1bmsKKzExNTcyIDg1MGFjZjI5OWVhMjNkYmIxY2FkMWVmYjEwNjkxM2EzNTQwZmJkN2UgbGVnYWN5LXRydW5rCisxMTU3MyBjMDYyNzIzODRmMTE4YWZlMGRjNjI5MWVhZDAzY2ZjNjZhODNkM2I2IGxlZ2FjeS10cnVuaworMTE1NzQgYzQ0N2QxYWQ3ODUxN2QzNThmZmY3YmQ3NDBiOTE0MjkzYjE1OWJjNyBsZWdhY3ktdHJ1bmsKKzExNTc1IDE4ZjgxZmFmNGJkOTdiNDFmMTdhYjhmZjA1MWE4Njc4ZjM0YTZiYmMgbGVnYWN5LXRydW5rCisxMTU3NiA0ZDJjYjIxMmM4ZDE1ODU0OTM3NzViODcxZjhhM2JjNzJhOTYwODNmIGxlZ2FjeS10cnVuaworMTE1NzcgZTQ5YjVmZWQ3NDRjNGZmNzcxYzk4YjVlYjcyZDQ5NzhkZTVhYmFiMyBsZWdhY3ktdHJ1bmsKKzExNTc4IGVkYWM4NjBhZDcxMGI1YWEyOTIxMGVlNGM5ZDcyNDBmMDQ4MGE1Y2QgbGVnYWN5LXRydW5rCisxMTU3OSA2Yjg1NDkzMDUyZThhMzZmODJlNTgyNDVjMzgyY2JmY2Y2NDkwNDQxIGxlZ2FjeS10cnVuaworMTE1ODAgYmM0MWU4NmM5MzhjZjRiOWU3MGFlNWE0MmMwNDJkZTU3ODI0MWFjYyBsZWdhY3ktdHJ1bmsKKzExNTgxIDNmNGJlN2UyOGQ1Y2U3ODUxMTRjZGYyYjdkNTk5OTBjZmI3NDFmMDEgbGVnYWN5LXRydW5rCisxMTU4MiBlOTQzZjljMDk5MDFhZDgxOGJlMjNjYWJlYzhjNWQ3NzE2YjA4Mzc2IGxlZ2FjeS10cnVuaworMTE1ODMgZDRlYjM1YzZlNmVmYmU3MGFmZjU0ZjI2MTU5NDE0NDUyNWNlZWRmZCBsZWdhY3ktdHJ1bmsKKzExNTg0IGFjZmIzYTY0OGRjYWFiZmE2MzIyYmFhMGE3NmVmYjk2M2RiMGMxODggbGVnYWN5LXRydW5rCisxMTU4NSA3ZTZjNGY1N2FmNjk5MjBhNThkNGFjY2ZlZjNiOWU4NGZhZTJmYWIyIGxlZ2FjeS10cnVuaworMTE1ODYgZTcxZjgzOTIyMzkyMDRhNDVkNTM4Y2Q1NzI2N2E4NDMyODU2Yjg2NyBsZWdhY3ktdHJ1bmsKKzExNTg3IDI2ZjViZmQ3MTVhNDY1NmU4OWFjZTdmYmU3ZTI0ZDEwMWFmZDI3NmYgbGVnYWN5LXRydW5rCisxMTU4OCA1NTY5MjdkODY4ZDhkODg4MmI2NTIzY2Q2OWVmZWM1MjgzZmI0NzA3IGxlZ2FjeS10cnVuaworMTE1ODkgMmUwN2YxYjI5OGUxNmRiODFmMzU5ZDE1ZjNjZDA3Nzc1Y2Q3MThmZCBsZWdhY3ktdHJ1bmsKKzExNTkwIDQ3MWM2YzIyMTg3OTllZTI3MDBhZDZkMjFkYjA2ZmVhMzcwMDFlMTMgbGVnYWN5LXRydW5rCisxMTU5MSAwMzEwZWUxNjQ5N2E4N2Q3MTkzY2MxNzEwODkxMmQ2Y2I1ZjRjY2JkIGxlZ2FjeS10cnVuaworMTE1OTIgNjM3ZmVjOGE3ZGQzZGFmZjE3YTdmNmI0NzYwMDJhYzdkOGVhY2EyNiBsZWdhY3ktdHJ1bmsKKzExNTkzIDIwODhmODAyNTNkYjA0ZjIxNGI1ZjJiMDU4M2FmYTVhNzRiNDA1ZmEgbGVnYWN5LXRydW5rCisxMTU5NCA0Mjc4NTYxYmQ1ZTg3ZjU5YTEzODc3N2ZmNDY0OTVkZTdhNjVkNWI1IGxlZ2FjeS10cnVuaworMTE1OTUgYjgyNmU1MGU5NTczZjRlMDk0MGM4MmNiZjY0YTExYmJiNjlkMzIzNyBsZWdhY3ktdHJ1bmsKKzExNTk2IDcyOGJiZWI5ZTRmOTY1NDcyZjg5MmIzMGUzZmZhNjAxNjU4NjY2MWQgbGVnYWN5LXRydW5rCisxMTU5NyA2ODdiNjZlNjUzZDYxNWEwOGZjMGEwZTkyMmM2NWIwNDAzN2E4MGRiIGxlZ2FjeS10cnVuaworMTE1OTggMzEzNTMxNmNkNjcwYjA4ZmE4Y2FhMTQ0OTNlN2JjZTM4MWQ0Y2IxOCBsZWdhY3ktdHJ1bmsKKzExNTk5IGYyMzk2ZDQzMDU2YjZjNmQxY2Q5NzY1YTM1Yzk2ZWMwN2M2ZjZhNWEgbGVnYWN5LXRydW5rCisxMTYwMCA3N2E5Yjg1Zjc2MmE3NjQ4YTc4YzI3M2VmZmZlYmU4ZjkyMTk2MDI2IGxlZ2FjeS10cnVuaworMTE2MDEgMmJiN2I2NjBmMDA3YmVmNzQzOWM2MGExMjk3MDQ4NmEzYzY4NTA2MiBsZWdhY3ktdHJ1bmsKKzExNjAyIDllYjJkNmY2ZmQzZjRjNzFjYTY3ZGFhZTE3NzBkYjk4NDllZDAzMjQgbGVnYWN5LXRydW5rCisxMTYwMyBjZTUyZTkyMmZiYjI2ZWJhYjUzOWI5NmYzNTIwOTRlOTFhNjUwNDI5IGxlZ2FjeS10cnVuaworMTE2MDQgMjRjYWQ0ZTBkYjhkZDM5YzMyNTQ5MGM1NWUzNzIyZTcyMTVjYzBhNiBsZWdhY3ktdHJ1bmsKKzExNjA1IGI1Mjg2NGM1ZTljOTQyM2E1M2QwYjJlY2QxZTkyZmU0YjdlNzQ2ZWIgbGVnYWN5LXRydW5rCisxMTYwNiA5ZTE3NDU2NzllNzE1MDAzYjJjY2JiYzA5YWI0NzMyZTlmZThlNTk4IGxlZ2FjeS10cnVuaworMTE2MDcgMDQyMGY1NDM0ZjQ0OTMyYWE2NjdkZmJhYzlmYmU0OTczMzE4ZWMyZSBsZWdhY3ktdHJ1bmsKKzExNjA4IGIwODQ1ZDA5ZmVkZjZmODE2NTIwODQ0NDc1MjQ0ZDRmNzdlZGY5YjIgbGVnYWN5LXRydW5rCisxMTYwOSA4MzY2MGNkYTNlM2YzOTcwMDVmODU2OTcxYWZhMmU2YjU5NDU4MWQwIGxlZ2FjeS10cnVuaworMTE2MTAgZGJhNzExNjI2YjQzMjQxYzVlODFlYzBiMzRiOTNmZjVjNDVlNzZlZSBsZWdhY3ktdHJ1bmsKKzExNjExIGQyMzdjODA4YTAxZTExMzE4ZDI1MTZkZDA5MjI4MGE1NjRkMzBhYWEgbGVnYWN5LXRydW5rCisxMTYxMiAyOTM4MGE0ZmEyMzA4OTAzMTYzYWI1ZmQxY2RhODU2OTZkNjY5MzMwIGxlZ2FjeS10cnVuaworMTE2MTMgZGIxNTQ3ZmQ0MGU0Njc1YjcyOGU1YjZjYTE5YWRmZWZmYzZjZmVmZiBsZWdhY3ktdHJ1bmsKKzExNjE0IDRjYzEwOTA4ZTZmNDVmMDBmZTgyODczODhhNzAxNWRlZDlkYTMyNmYgbGVnYWN5LXRydW5rCisxMTYxNSAxMjEzNjU0MmUxNTU0OWIxZTNmZGEyM2JhNDRhYTNkYThjZTJkN2FhIGxlZ2FjeS10cnVuaworMTE2MTYgNDQ4Njg2MmQ1Y2JkZDBmYzA1ZGVmN2IxZjQ1MjE5OWY0NjdlOGQ4NCBsZWdhY3ktdHJ1bmsKKzExNjE3IDU1YzE4MTFiYjhlZmJhMjliNTMyMjNkNzJkMDhkNmM1OTUyYThjMTIgbGVnYWN5LXRydW5rCisxMTYxOCBmZGVlZjE3N2Y1MzZhZDk2Y2EyYjgwYWU1NzliNTUxZmI0MTczMzJjIGxlZ2FjeS10cnVuaworMTE2MTkgODZiNzEyOWQ4ZDA4YmQ5NzdmMDIwMzY2YmYyYTJhOWJlZTIyMThkNSBsZWdhY3ktdHJ1bmsKKzExNjIwIDE3ZDBjNTFlMDg4NzAxOTI2MTJhN2E0Mjg0YzkxYzk3NDM3ZmIzYjUgbGVnYWN5LXRydW5rCisxMTYyMSBiMTY2MzNiMjJlNmFlMTcwYjhiNzZjYmM3NjRiYjUxOGIyN2EwY2U5IGxlZ2FjeS10cnVuaworMTE2MjIgNmNkOTMzMjJiODEwYjZmNTNmYTE0NjhmZTBiZTEwMzY4NjBlNWIwMiBsZWdhY3ktdHJ1bmsKKzExNjIzIDNkMzBkZDU0NDQ1NjIxZDA3NGVkMWM2MjMyNmJjZjRkOWZhNzhlZTEgbGVnYWN5LXRydW5rCisxMTYyNCBmNDEyOWQ1MmRmYzVhZGYzZjk1YzY4YzNmN2JhYWE1MmUwNzFlNDRkIGxlZ2FjeS10cnVuaworMTE2MjUgYmE0MDA2NWUzOTlmMDQwNDEzOWRlYWYwYzNlZDVmNzcxM2Y3M2JmMiBsZWdhY3ktdHJ1bmsKKzExNjI2IDlmMTAyM2M4OGY1NzA2NTNiMDg5NDU1YWY2MjA2ZGI5ZGZlY2E1YjAgbGVnYWN5LXRydW5rCisxMTYyNyBiMGZhMmZjMTJkZmIyOGNkODUyODJjMWNiOTRkNmYyYjAwZmYwNTBlIGxlZ2FjeS10cnVuaworMTE2MjggNmNiZjA1Njk2MTIwZDA5YjE1MTZkZmQ1ZWM3YmMzM2RmYThiYzU1YiBsZWdhY3ktdHJ1bmsKKzExNjI5IGViYjAxMDg1ODc3MWFhYzdkMjk0NGZkMjRlOTI2Mjc2YjhmODc3NjAgbGVnYWN5LXRydW5rCisxMTYzMCAwNjYwYmU2ZTY3OTE0YjljZjFhNmUzYThmNGU3NzRkNjBhMWM2YWVkIGxlZ2FjeS10cnVuaworMTE2MzEgODhiMjIxMDkwMDdjMWNiOTE4ZDVlY2IyZTM1ODJkNWUzMWJiZjFhYSBsZWdhY3ktdHJ1bmsKKzExNjMyIDVhZjRiMTAyMTQ0YWU1ZDkwNGE0OTk1ZmQ5MmU0ZDc2OTQ3ZGI5ZmEgbGVnYWN5LXRydW5rCisxMTYzMyBlMWI3MTBlMzBhY2Y3M2M1YjU5YThkYjEwZGU5MzQyYjgwMWYzN2VjIGxlZ2FjeS10cnVuaworMTE2MzQgMDMyOWQ0MTllNTA2MTgyZTlhODA4ZWNlMWMzMDdlZWY3MTdkZTUyMCBsZWdhY3ktdHJ1bmsKKzExNjM1IGRlZWIzY2UyMGFjZjFhODViMTBjODYwNzBhY2IxMWI2MjljYzFmN2MgbGVnYWN5LXRydW5rCisxMTYzNiBmNWQyNjVkNWU5ZGMwMmFkYmZjYTE1Zjc2YzA2NDA3MTQyN2NmOTM5IGxlZ2FjeS10cnVuaworMTE2MzcgOGUzYjZkNmFmZTRjYzFiNTUxYzM4YmZkZTk4MzljZjI5M2QxNTU3NiBsZWdhY3ktdHJ1bmsKKzExNjM4IDg4MWI4NjM5OGMyMDQzZjVhMjMzNmU2ZGE3YzNhY2IwNzVhNTVmN2UgbGVnYWN5LXRydW5rCisxMTYzOSA5OGRjNjc1ZDA5MTNiNmIzM2JiODgwZmIxODU5Mzc4NzkxZWFhNjgwIGxlZ2FjeS10cnVuaworMTE2NDAgN2ZhYmJiYjdhZDlhN2ExZDQ3ODc3YWRlNjkwOWMxZGEyZTM0MjdiMiBsZWdhY3ktdHJ1bmsKKzExNjQxIDUyMDU4M2JkZjBiMDI5MGNlOThhMjUyOWYwOGFiMGNkOTU1MmI1YWEgbGVnYWN5LXRydW5rCisxMTY0MiBlNTc4NDM5Yjk4MWY4NTYxNDRiNDMyMzRhMmMwZTU5ZTRhYmEzODQxIGxlZ2FjeS10cnVuaworMTE2NDMgYzQ2MDIyMzY0MDllOGI5ZTA0OTg2MTAxMDBlYzMyYzNhZmI3NTBmYyBsZWdhY3ktdHJ1bmsKKzExNjQ0IDZlY2IyNDhlNjdmZjJjMGE1NDdkMTBkZDgyZDg2ZmVkOTYxMWQxN2YgbGVnYWN5LXRydW5rCisxMTY0NSBlNjAwNTUyMTZiOGY5ZmM5MDNkOTU5ODVmNGI4MDlhNzE0YjBiNmQ3IGxlZ2FjeS10cnVuaworMTE2NDYgMWMyMmNiZmI0YTFlMjA2YTdjYjAxMTk5YTViYWNhZGEyOWE2OWVmOCBsZWdhY3ktdHJ1bmsKKzExNjQ3IDRhZjg3Y2VkOWYzYWFiNmQ5ZmRjMzhhZGQ2NDM0MTRjZjNmMjg5YzQgbGVnYWN5LXRydW5rCisxMTY0OCA0ZmI0YjAwNzU1YjVlMDZkNzdlOGIwMjYzZWZjMzQwZDJjYTJlZWU3IGxlZ2FjeS10cnVuaworMTE2NDkgYTMwNzY1NmM3Nzg4OTc2YzQ0NGZkMWI1MGM3NWRhNDJhZjRiYjkwMCBsZWdhY3ktdHJ1bmsKKzExNjUwIDQ2ODMwZTVhMDM1MWZhZDBkNDEzN2RlYTNlNDU1YzYyODljMTY3ZGQgbGVnYWN5LXRydW5rCisxMTY1MSAxZThmMzEwNzQ1NDc1MTAyNzE3YTM1ZWUzOWM2MjIzZjZmMGJhMjBlIGxlZ2FjeS10cnVuaworMTE2NTIgMzUyOWJiNGNhZWZkNmUwYTVlNWRiMWNmN2MxYjZiM2M0ZDY3NzdjNCBsZWdhY3ktdHJ1bmsKKzExNjUzIGRhZjFkNjFiOTYxMWQ3YTI3MzEyOTcwMjRkY2JiZTI3ODQyNjVjODYgbGVnYWN5LXRydW5rCisxMTY1NCA5ZjcyOTFmNTUwMjZkNGQ1NWM0MjViOTNkMTFkYjIzYjBlZmYzODAwIGxlZ2FjeS10cnVuaworMTE2NTUgYjI2MzBhMjlmZWZkYjhiN2Y0NWQ4YzllOTA0NTUzZDRjYTU3NjcyMCBsZWdhY3ktdHJ1bmsKKzExNjU2IGYyYjk4Y2JjNTAzMDE4OGFhMmU0NWRhZDhlOGZhOWQ3ZWU5Yjg2ZGEgbGVnYWN5LXRydW5rCisxMTY1NyBmMGE5MmMwYTExNWVjZmNkZDU1NWYwZjE5YmMzOTY3MzhlYWUxOTA3IGxlZ2FjeS10cnVuaworMTE2NTggMWU0M2RmN2Q4YmUzZmZlNTdlMDczOGIzMGQxMzgxODI4YTAwYzgyZSBsZWdhY3ktdHJ1bmsKKzExNjU5IGUyZGFhNzgzYmQ0NzI4ZWEwZTgzMzg2MjA5NjVmMzMwY2ZkYjBhMjMgbGVnYWN5LXRydW5rCisxMTY2MCAwYTA4NWQ3MzFjMWM3OWE4ZjMyODU2OTQwY2M1MmZmZWNiMTRjMjhjIGxlZ2FjeS10cnVuaworMTE2NjEgZDA4NjQxNGFkZTZlYzQ5ZTkzNmEzOWMyOWY1MDNmMWYwY2Q4MDFhYyBsZWdhY3ktdHJ1bmsKKzExNjYyIGQzZWY0ZDEwZmI5NTRjOGU4NTEzMzQyNTBmYWM0Y2IzNWI5Y2I0MmQgbGVnYWN5LXRydW5rCisxMTY2MyA2YTU1OWRjNzhjOTEzZjhkNjY5M2U3NTQ1YjA5NmUyNjAzYWE2MjNkIGxlZ2FjeS10cnVuaworMTE2NjQgYjBiYTMxOTY3NzE5NTgyM2Q4NTBmZDcwNDA5NmJjNzZjMjMxZDZiMCBsZWdhY3ktdHJ1bmsKKzExNjY1IDc1YTgwNDdkZmMxMTAzYWZiMDFkN2FjY2VlNTMyZDA4ZTgyMGM1NTAgbGVnYWN5LXRydW5rCisxMTY2NiA2YmUzNDNkYTI5MTQ0YTM5MjA4MjdiMDc5NmI5MmY3ZWFlNmFhOTY4IGxlZ2FjeS10cnVuaworMTE2NjcgYzAwYjI3MzA4NWJlZDcwYWJiYTA3MjVjYmJiZjNmYzYyMTJmNTQ1NCBsZWdhY3ktdHJ1bmsKKzExNjY4IDNjZTUxMWJhNDI0MjI2MTMyMTA3NDIwYjdmMDcyZWZhN2Q5ZTYyMDEgbGVnYWN5LXRydW5rCisxMTY2OSA5ZmQyYmJkNDQ1NGUzNjc4YjFjZDZmMTEwNTgwZDlhOGM4MmFjMmYyIGxlZ2FjeS10cnVuaworMTE2NzAgMzJiMTk0OTFlNzBiNWE3OWQ1NTg5OWY5MTYwYTZmNjg3ZjlkMTcxYiBsZWdhY3ktdHJ1bmsKKzExNjcxIDlhODhmZTIwNGQ5NWNkODU2N2FjYzk5MjgyMzg0YjEwMzBjZGZhMGIgbGVnYWN5LXRydW5rCisxMTY3MiA2OGFhZDhlY2ZkNzBlY2FhYTk0MTVmNGMxNmQ5MGMyYjliNGI0M2Q1IGxlZ2FjeS10cnVuaworMTE2NzMgNmZjOTIwYzkwNjQwOGNjMmU2NzU5MTk5MWNjMGRlMzA0YTQ4M2E3OCBsZWdhY3ktdHJ1bmsKKzExNjc0IDk1OGUxZmFhMzhhOTEwNGZkOGI4ODY1MzE3OTg0ZjUzNTY1OTExMDQgbGVnYWN5LXRydW5rCisxMTY3NSAwNjI1Yjk5NThiMjNiZjYyYWYyODgxODUzMjBlZTBmMzNkNTY0YTI4IGxlZ2FjeS10cnVuaworMTE2NzYgNTNlZDZiY2QwNjQxZGYzN2ViMmY4ZWU4ZTZmMzUyNzA3NThhMzI0YSBsZWdhY3ktdHJ1bmsKKzExNjc3IDI1M2M5OTNlZjkzNmFkNWExZjkzYzc4NTQyZTEzMWE0NjcxNmQ0YjAgbGVnYWN5LXRydW5rCisxMTY3OCBmYTg5M2Q1NTc5NGVjZDk4NjYzODQ4ODEwMDIzOWU4ZDMxYzg2OTc1IGxlZ2FjeS10cnVuaworMTE2NzkgZTc1ZTIyOGY4Mzk1ZTdlYzUwZjZkMDU2YzE1ZmZhYjgxMDFhYzllNyBsZWdhY3ktdHJ1bmsKKzExNjgwIDhlOTUyYmRkMGZhMzcwNDc0OGIwODY2MmQxYjI4ZGFmMGI1ZWVjNDQgbGVnYWN5LXRydW5rCisxMTY4MSBmMjY0ZTU3ZDY1N2RkMzgwNjAzNTYxZDNkMWRkODAwMTBmMmM5ZTIyIGxlZ2FjeS10cnVuaworMTE2ODIgYTg2YTcxYmViZDY0MDdhMmNiOGI3YzkzOTI3YTJhMDM0NzM1ZTBlNSBsZWdhY3ktdHJ1bmsKKzExNjgzIGFhNzNkZWUyMzA5MzA3NTc3NmU0ZWIzZGRjOGE2MzQ5NTI4YjdlZTkgbGVnYWN5LXRydW5rCisxMTY4NCBlMjFkMDc5OGMwMmFhYWRlMjNlMjFkNTQ0YzMwOWI2NWQ4ODkwZDUyIGxlZ2FjeS10cnVuaworMTE2ODUgYTE2NzJlNzc1ZjMzMWVjYzM0NjU2Yjg1Y2Q5ZGFhM2RmNjRiYTBhNyBsZWdhY3ktdHJ1bmsKKzExNjg2IDVmZTRkNTk0YTBmMjE5MjQ2YmFmMjg4NTliYTMyYzliZTQ3MDZmMGIgbGVnYWN5LXRydW5rCisxMTY4NyAzZTBjODdiZGI1ODg5Njk0ODY1YjQ3ZGFkOGIxZTFlMTMwYjZmMGRlIGxlZ2FjeS10cnVuaworMTE2ODggNGZlOGE3NjcwYzBkMmEzMDg3ODIyMGI0NmM4OTFiYWQ2Y2U3NTVhZCBsZWdhY3ktdHJ1bmsKKzExNjg5IGFjNmMyOWQxZjEwYzljMmY5MDNlMDY0YTZjNTBmMWMyYmQzYTc5NTkgbGVnYWN5LXRydW5rCisxMTY5MCAwMmQ4ZjcyMTQwOWFiZjRmYWI4NDExNTNhYzM4YzRmOGJlYWU1MDg3IGxlZ2FjeS10cnVuaworMTE2OTEgNGMyMDQ1NjE1OWViZGJiMjgxMjY3ZjQ0ZmNjYmZkZTgyZDQ3ZGIzMiBsZWdhY3ktdHJ1bmsKKzExNjkyIDE5NWU3NDhjZjY5NmE2OTZmOWZkYWQ2ZTdkOGIyNmEyNmMyMDhmZmMgbGVnYWN5LXRydW5rCisxMTY5MyAzMzk4NDg0MTIxMWQ1YWMxNjAyNDcyY2E3MTdjMGQ1MzNkMDEyODg0IGxlZ2FjeS10cnVuaworMTE2OTQgNDdjY2RiN2ZiNjIzYWU5YWRmYmQyODE3NGQ1ZDM0NDNmZjg2ODZkMCBsZWdhY3ktdHJ1bmsKKzExNjk1IDU4ZWNlZDUzMDlhMDZiNzdkZWE1YzAyNjZmZDUyZjExODViOGY1ZmIgbGVnYWN5LXRydW5rCisxMTY5NiBiMjQwNDY3MjBkNTYwNDVlNDkxMzIzYzk0Njc0MDFlODM3MTc5YjBlIGxlZ2FjeS10cnVuaworMTE2OTcgZDU3OGNkNjQ3OTZkMTI2NTg1ZmEwZjk1NTlmOTZhNTg2YTFkYmQzZSBsZWdhY3ktdHJ1bmsKKzExNjk4IGViODAzZTE5MTg4N2U2ZWQyMGQ0NzQwYmJkYTkwNGE1OTk2ODU3YjcgbGVnYWN5LXRydW5rCisxMTY5OSAxNGFkMDJkMDZlMzJkODg0MjYyMWEwMTAxMGQxOGU2MjA2NjZkY2U4IGxlZ2FjeS10cnVuaworMTE3MDAgMDdkYWU2ZmRhZTc5NDEzZGY5MmJmMzIzMGY5M2VjMTc3NjkwZjQzMSBsZWdhY3ktdHJ1bmsKKzExNzAxIDg4NTA1MjY5YjQwMzdkZWVhMjgzZDdiNmNjM2ZmNzM2NTliZWFmYTAgbGVnYWN5LXRydW5rCisxMTcwMiAwODU4ZjExYzg4ZDcyNThjMTYzMzlmMTViY2I5YTViYjBkNGI2ZGFlIGxlZ2FjeS10cnVuaworMTE3MDMgYzFkYzE5ZjlhZDYwOGU2YjRiMWE4ZGE2MzE3MThmNGEyMTllNjViNCBsZWdhY3ktdHJ1bmsKKzExNzA0IDY3MDk2N2JlNmRiM2NlYjMwZGYyNzFhYzg0MTI3ZmIxNjFhZmRjNmIgbGVnYWN5LXRydW5rCisxMTcwNSA4MTQ4ZDQ0Zjk5MDNkZTJmZDhkMjJhZTlhYzJiN2NkYzBhY2I3NjJlIGxlZ2FjeS10cnVuaworMTE3MDYgZDNhZjMxMGYyMzBjYjE1NmM5NjJiODE4ZGYyODRiNWM2NDNjNjFmZCBsZWdhY3ktdHJ1bmsKKzExNzA3IDcwZTQ5ZjcxNTk1NzJmMTM3OTZhOWNkMzViMDk2OWU4MjZmNmFjNzcgbGVnYWN5LXRydW5rCisxMTcwOCBmMTcyZDQ3NGM1YTkwNGE4ZDUzMWI4YWQwMzE1NjJiZTQwNzJjZTJmIGxlZ2FjeS10cnVuaworMTE3MDkgYmUzZDg0ZmYyOWY5YTk1M2FkMDhmOTdhMWQzYTBiNzYyMGEzODY5YyBsZWdhY3ktdHJ1bmsKKzExNzEwIDg5ZDkxNmRmNDc5YjE1YjExYWM2MjNhYzc0YzM5NWJkNjE1NGMzOWQgbGVnYWN5LXRydW5rCisxMTcxMSBjMjU5YzNjNGQwY2NmOWJjMzllNjA5OWZhY2I2ZGI2OTliYzY2NzI1IGxlZ2FjeS10cnVuaworMTE3MTIgMTk5NWNkYmUzMzg0NmU0NzcwMjRlNjk2Nzk5N2NhYTM2MzQ2NmIzZiBsZWdhY3ktdHJ1bmsKKzExNzEzIDkzNjk5MTc5YTUwZjJmNGFjOTJlZmZhNGQ3ZTUzMmNiYjY3YWMzNGMgbGVnYWN5LXRydW5rCisxMTcxNCA0NGZmMWFjNTI5NWIzN2Q2ZDVkZDYyYmMxYWE3MzAzNGQ1YzhlYjI3IGxlZ2FjeS10cnVuaworMTE3MTUgYTRlODIzMzE1Njk5MDIxODNjNmFkZjRmYzgyMTM5YzdjZjAxMGY1ZCBsZWdhY3ktdHJ1bmsKKzExNzE2IDI5OTlmMWQ5MDQyOTk2Mjg5YTYwZTI1YTQ1YzkwYzY0YTgwMDAzMzIgbGVnYWN5LXRydW5rCisxMTcxNyA1NjIxY2Y5YjA5ZDYzMjBiMzZmMDUyMGVjNDM5NGZmYzQ1OGU3Y2VhIGxlZ2FjeS10cnVuaworMTE3MTggM2M5ZmVjNTdiODU4YTY0ZjA3OWVlNTg2MmNjYzc1NmE3YTI1NjYxZSBsZWdhY3ktdHJ1bmsKKzExNzE5IDk4NDhmNDIzNDNjOTk4ZjRhOTNmMTViYTlmNTlmNDY0YjZhYzQwYmYgbGVnYWN5LXRydW5rCisxMTcyMCBkYzFkNDQ1ZjIzNzE4NGQ1YzZkMTIyYjVlYzY3NjM2ZDhkOTYzNjdjIGxlZ2FjeS10cnVuaworMTE3MjEgNzNkZjI0ZjZiY2NmMzNhZGY3NDg0N2MwNTNmZTVmZWRjMmE1ZGM2OCBsZWdhY3ktdHJ1bmsKKzExNzIyIGNlOGYzY2VmNmFlZDJiZmY1YzQ0MWZmNDU5Mjg4Mjk5N2QyMzJmZTIgbGVnYWN5LXRydW5rCisxMTcyMyAyNWRhMDliNDI3YjQ3NWY0NDY1NDZmMWQxMDFlZDkzZTk3NDViN2FmIGxlZ2FjeS10cnVuaworMTE3MjQgNzk0MDBkMDc4ZjFiMDNmYzVmOTBhNjViN2EzNmM0ZGU5MGNhNTllNCBsZWdhY3ktdHJ1bmsKKzExNzI1IGEwM2M2ZmQ4MWQ0ZDZkMWFiMzQ5ZGUzMWRlYWVhMGE4ZjE3NDU3MjggbGVnYWN5LXRydW5rCisxMTcyNiAyZTM3MTJlODQ3ODFmYjEyNDY2NTFmNTVjZmRmMDU5OWE2ZWJhMWUwIGxlZ2FjeS10cnVuaworMTE3MjcgMzhjMDdiYTRiOGU0MTFmODZjYzJmNGNjNmYwMTlmMDI0MGQ5NGFiMiBsZWdhY3ktdHJ1bmsKKzExNzI4IDA4YjhkYTZkNGNhNmEwNzI5MGVjYmFiZDFiZTkzY2U1YWY1ZjA5M2UgbGVnYWN5LXRydW5rCisxMTcyOSA0YmZkMjlkNTNiOTUwYzE3YTdhMmE2ODE2MDdlMTgxNzYyMTQwM2I0IGxlZ2FjeS10cnVuaworMTE3MzAgYjE4ZDFmOTFkNjY0ODMyNDk2N2Y0NWE0YmM0ZTM3MjVlM2VlNjBlYyBsZWdhY3ktdHJ1bmsKKzExNzMxIDQxZjgzYzcyZTA5ODRjOTE3ODk3ZDFlNjgwNWMzYjA5YTMzNzE1MjYgbGVnYWN5LXRydW5rCisxMTczMiBkNzI1MmE1YjdlMWU3YWQ1ZmE4MjVmZTZhNjkyZDFiM2QwNDI1YWFkIGxlZ2FjeS10cnVuaworMTE3MzMgMzljNDEyMjBmN2VkNDZmMjM2OWM3MWM3MGNlZjVkODVlYjhjNDAyYyBsZWdhY3ktdHJ1bmsKKzExNzM0IGRkODQ0M2JkNDQ3NDBjN2E5ZjkxMmZjYmRkM2FkNjY4MjYyNTAwODggbGVnYWN5LXRydW5rCisxMTczNSA0YzRjZWM1NGJhNjM0ZGVmNDFiNDhjNTM2NTY2MWY5N2ZjMzQ1MDAxIGxlZ2FjeS10cnVuaworMTE3MzYgYjU1ZGIwOGRmZjdiZjI1OTI3YTJlNzhjYjU1OWY4ZGM5ZGNlYTMwOCBsZWdhY3ktdHJ1bmsKKzExNzM3IDIyOTQ3NWQyOTUxZjcwNTkxZTFmMDE3ZTAyZjdhNjUyY2E2YWI2NGQgbGVnYWN5LXRydW5rCisxMTczOCBlMjNlYzI0MDMxNTcyNDdiM2RkNTliOGU5ZDJmMjFmMjA0Yzg2YTdmIGxlZ2FjeS10cnVuaworMTE3MzkgNzEwZGExMGRlZTlkYjM0YTBlNGQxMTE4N2E4Zjk5NTk1MmZlMTk5YSBsZWdhY3ktdHJ1bmsKKzExNzQwIDA0ODAwMmYyN2MxZDhiY2E1YTkzYzFkYWJkOTI3NjQ0MDBkNjRhMTUgbGVnYWN5LXRydW5rCisxMTc0MSAxNTlmOWU3NDY3NTQ5NDcxMDVlN2I3OTE0NmJkMjMzZTcyM2M4NmI4IGxlZ2FjeS10cnVuaworMTE3NDIgOGE4ODVmM2E1ZjQ2YWNlNTQ1NmM2NGU3MDhhMzM2ZDdmNGU3NTljMCBsZWdhY3ktdHJ1bmsKKzExNzQzIDFjNGJhMGUyZjhlNzQzYjYxNmI5ZmQ3NTAyZTdlNjUzYjE3NmMxMGIgbGVnYWN5LXRydW5rCisxMTc0NCBiNDg3MmJjOGQ5ZWY3Mzg2MzRmMGEyNjlhYmI5MmNlZGQyNThhYjEwIGxlZ2FjeS10cnVuaworMTE3NDUgZTE5OTU0YmExYmM0MTM3ODhiMzNiNzU2ZDhhMWExZDZiMDdiNmY1NyBsZWdhY3ktdHJ1bmsKKzExNzQ2IDAyODM3NTk0MDdlMTYxZGYwMTUxOTM4NjVlMjNkNjA5ZmQ1MjhhZjAgbGVnYWN5LXRydW5rCisxMTc0NyBjYTg1ODdkMjE1ZTZmZWNhZTM4YTYzMmQ0N2VlMzZkMzU4NzYyZDQ0IGxlZ2FjeS10cnVuaworMTE3NDggNDMwMDM4ZTE2NDMzN2EzMDAxMTI5OTZiYTc5ZGFkOTllMWNhODY3NCBsZWdhY3ktdHJ1bmsKKzExNzQ5IDU5MGJkOWI0NWJmNjBkMTg3OWI0MmI2MjUyN2YxZWQ5MWFkMGFhNzUgbGVnYWN5LXRydW5rCisxMTc1MCBiZTE0OTMzOTFjNmRkM2JjN2JhZDMxN2U3YzAwYmI0MjFmM2YwNjZmIGxlZ2FjeS10cnVuaworMTE3NTEgOWQzOTNhMGY3MjdjNzU0NGE0YWQxYWJhM2ZlMjIxYzlhOGI4ZmUzOCBsZWdhY3ktdHJ1bmsKKzExNzUyIDA4MDc5OWQwY2YyYjJiZDlhNDc2MGFlNTM1NzljNzA4YWY2YjNiYTQgbGVnYWN5LXRydW5rCisxMTc1MyA4ZDE0OTA2MjkyYzY2Y2MwMDVmNDU1NWUzMWU5YzQwNmFhZDc5NzQ0IGxlZ2FjeS10cnVuaworMTE3NTQgMWUzM2E4YTU2YmNhNWI3YzYzMDg3ZjU2NWU4NmJiMzBjNTE2YzhkMiBsZWdhY3ktdHJ1bmsKKzExNzU1IDI1NzdjMGNjNzQ4MmE4ODg1NGYyMWE0MDA1NDcxNzc5MTZjMmZiNDggbGVnYWN5LXRydW5rCisxMTc1NiA2YjZiZDE0ZDc1MGI4MWI4NDRmZTI3NDQyM2I0NmQ5ZjQ1NzA0Y2Y3IGxlZ2FjeS10cnVuaworMTE3NTcgYTczY2Q3Zjk5Yjk1YmQxMmQwYTA3ODE5YzE4YjQ0Y2NmZDQ0MWY3OSBsZWdhY3ktdHJ1bmsKKzExNzU4IGFjZDgxYzMyMjdkZWI4OTY4OTkxNzdlNjBkMDY1MTkwZTdmYjcwODUgbGVnYWN5LXRydW5rCisxMTc1OSA5ZDJjMTJmMjQwZTYzNjEyZWNhYTRmODdjOGRjYTRiZDZlODk0N2I4IGxlZ2FjeS10cnVuaworMTE3NjAgNjVmMDhjYzU5NTUzNjQwNjQ5MjRmOWJjZDk1M2FlNGQ3NWVjOWNkMSBsZWdhY3ktdHJ1bmsKKzExNzYxIDg2ZGUxZmEwZmJiNzY3MmMwMmM1NjkyZjMwMmQ2NDQ4MGZkZmI1NGUgbGVnYWN5LXRydW5rCisxMTc2MiBjMTE2YmIzZTJhZDE4OGIzMTAxZDRmYWZjNGFkNDlmMmE0MTkyYThhIGxlZ2FjeS10cnVuaworMTE3NjMgYTBmMzMyNWZlZGYxOTFlN2M0ZWViYmU1NWY1YjY2OTcyYjhkNjg5YyBsZWdhY3ktdHJ1bmsKKzExNzY0IDU1MGE0NTZkOGY2MTU4NzZjODBlZTJiOTUzYjJiZGU0MmM5ZWQxNDQgbGVnYWN5LXRydW5rCisxMTc2NSBhY2VlMzU5NWU2MDNlZDJiNGI0N2Y5OWVlNDJjMTI4Y2QyMzU4MzBkIGxlZ2FjeS10cnVuaworMTE3NjYgZmJiNDUwNjBiZTAzMjQzY2Q1M2MxNzgxYmIyYmU1OThiM2Y1ZjE1NyBsZWdhY3ktdHJ1bmsKKzExNzY3IDcyNDQxMTEzMjQzYTg1ZTBhY2FjZGU5M2ZkMWZhMWE5ODM2YjExOTQgbGVnYWN5LXRydW5rCisxMTc2OCA1MGQ5ODUwY2M4YzNiMTRiMzQyZDJiMDI5MGNkOTliYzQxNjhkYWZmIGxlZ2FjeS10cnVuaworMTE3NjkgMmM2ZGQwZmE0ZWI5ODdiNmZkOTc3NDI1NzNlZmE1YThjNTI0ZTM2OCBsZWdhY3ktdHJ1bmsKKzExNzcwIDhmZWQ4Yzg1YzYxYTlhNTdhMGVjMjdlMDI3Nzg4MTI0NTA5YTMyNGEgbGVnYWN5LXRydW5rCisxMTc3MSA4NzkxNDU1NDg1ZTUyY2NkYmQzYTBmMGVmOTFkZjMyMmYzZjgyYWRlIGxlZ2FjeS10cnVuaworMTE3NzIgMmY4OGQ4YWE3MzEwOTNhN2VkZjI0MGMzZWNiNTEyNjdhOTRkY2U3YyBsZWdhY3ktdHJ1bmsKKzExNzczIGYzN2JlMGM4MjJkYzJhZDQxYWRkMGFkNDFlMTY3OGI2ZTU3ZTE2MjEgbGVnYWN5LXRydW5rCisxMTc3NCAyODRiZjk1ZGFiODBhMWY4ODA0ZDFjMjFjNjUwMzM2YWE5OWIzMzRiIGxlZ2FjeS10cnVuaworMTE3NzUgYzM5MjE4YTY4ZGYxZjM3NmQ5MTg1MWE5ZDM4ODM2NTdjYTZlY2ZhNCBsZWdhY3ktdHJ1bmsKKzExNzc2IDUzYWI4ZDBiMGQ2NDRlMTFmZDIwOTM5MGRmNGY2ZmU3OTBhNGI3ZjQgbGVnYWN5LXRydW5rCisxMTc3NyBmZTdjYmQxMzA4NmMzYTQ5MGU4M2FjNTM5YzE3MTM2NTBjZGI4YjM3IGxlZ2FjeS10cnVuaworMTE3NzggODA5ZGNjMWJiYzIxZGNkMzUzZjg4MjcxOTQyOWVkZDdmY2RhYmNiYSBsZWdhY3ktdHJ1bmsKKzExNzc5IDRiOWM0Y2U1OTk5YzkyYjdiMTUzZTQwOGIwN2MwNWIyZTk3ZDQwZDIgbGVnYWN5LXRydW5rCisxMTc4MCAwYTZlZDM4NGFmMDZhNTcyMzAzYjFhMWZlMjdkMTM3MjEzNzczNGY5IGxlZ2FjeS10cnVuaworMTE3ODEgZmFhMzFiMWMwYjU0MDU3MjliYTNmMDE3YzNiYWUyOTgxNDFkZDQ3NSBsZWdhY3ktdHJ1bmsKKzExNzgyIDUxNTZjZjhlNDI2OTFhZTVmYjExZDJhZWY4ZmYyYjQzNTQ0YTI3ZDEgbGVnYWN5LXRydW5rCisxMTc4MyBiYzUxNTA2NTJlZGNhZDcwZTZkNGQwNjY3MTMxYmVlM2ZiYTQyYjc4IGxlZ2FjeS10cnVuaworMTE3ODQgZWMzZDJiMzc1NmQ3NmQ5NWE0ODgxZmI4NTZhMmQ0NDg0M2FlOGNmOSBsZWdhY3ktdHJ1bmsKKzExNzg1IGE2Y2ZmOWMyOTBlNTI2NDVjMTMxMTBjNzY4MzBlNjM3NzQ4NzMxM2UgbGVnYWN5LXRydW5rCisxMTc4NiA1ZDM0NDcxMGZjYzNkNmEyMzc2ZGI0NmJhYWRhOTc1MzA5NmVmNTQzIGxlZ2FjeS10cnVuaworMTE3ODcgMjM0MGY2MTVkYThmNDM5NzA0NmZmNmQyN2ExM2YxNmQxZjM1ZTM5OCBsZWdhY3ktdHJ1bmsKKzExNzg4IGJjMzFkOWY2ZTBhMTRlMzYyMzE1YjNkMjU2OWM4OTA1ZTFhMzUxYWEgbGVnYWN5LXRydW5rCisxMTc4OSAwMmYzNTA0YjM5OGRmNDc2NmE1MDY2YTZlN2E2N2Q5Zjc0YjcxYjY2IGxlZ2FjeS10cnVuaworMTE3OTAgMGE2N2RiNDdlMWQwZTQ2ZWQ3Yjg2NGJlOTgxNzgxMGFiMTJmOTgwNCBsZWdhY3ktdHJ1bmsKKzExNzkxIDBkZTY2MmNlY2FjZmNhYWU5ODUwMTExMzUwOWY0NzFiN2ZhZDc3OTEgbGVnYWN5LXRydW5rCisxMTc5MiBhMWNhMDg1MTY4ZmM4MTE0MGNjMTFkZDY3ZmU3ODM4NmVkZTgyZjRiIGxlZ2FjeS10cnVuaworMTE3OTMgZDY0YjRjYzgxYmE2MmQzMzlmYjVjNTZhYThiYTQwYThjNzIyMTUxYiBsZWdhY3ktdHJ1bmsKKzExNzk0IGQyOGI0OTFmNDU1NTZhYTA1MzdkMGVlZjAzYjYyYmExNDdiN2ZiYjkgbGVnYWN5LXRydW5rCisxMTc5NSBhMjM5NzI1NWE2ZDMzZjVkMjRkNTI1ZTQ2ZDQ4YmVkMWZhZDAxMzI5IGxlZ2FjeS10cnVuaworMTE3OTYgZDY0MjAwODM0YTZiNGFmNDZjOTJhZTgwMGE5ZDcxOTcyNmNlMmVmMyBsZWdhY3ktdHJ1bmsKKzExNzk3IDY5MDM0ODI0MzgwMDFjNTgzMWQ3OWRlYzRkYzUxMjRkZTkzZDc3Y2MgbGVnYWN5LXRydW5rCisxMTc5OCA0MTQxMjhhMTViYmQ5ZjRkZTZmYTZiOWRlYjQ4YWNjZDNmODUzYTM2IGxlZ2FjeS10cnVuaworMTE3OTkgMjQxZDAxMmU4MmRjZTU4ODE4YzMzMDE4MzgwN2MzYjY5NWM4ZGMzNiBsZWdhY3ktdHJ1bmsKKzExODAwIDNiNmM3ZTcwY2FmZmY2YmRmZGY2YjcwYWE1NDY4YjkyYTdlODIxYjQgbGVnYWN5LXRydW5rCisxMTgwMSBjYzNlMTQ4MzczNzk5NjNkNWE5ODZlNjNiZjZjMjBkNjE0MDM1MGFkIGxlZ2FjeS10cnVuaworMTE4MDIgMDgzZWZhMDc2MzY2MTBmODlkODNkYzQ4MjM5YTk4OTY1NDAzOTY3ZCBsZWdhY3ktdHJ1bmsKKzExODAzIDc5NDM5ZTRlOTk3Njk1OGEwZDRjYzgzMTE0ZmNiNGNlNDU5NDlkOTggbGVnYWN5LXRydW5rCisxMTgwNCA5MjhlYTVhNDA5ZTUzNTFkNDY0NTZlYmJkM2E5YmE3YTZjMjljMDUxIGxlZ2FjeS10cnVuaworMTE4MDUgMzRlNDIwMmVkZTIwMWQ3ZDljMDQ0Y2QzMDc0YWNlZjcxZjQ0MjA3YSBsZWdhY3ktdHJ1bmsKKzExODA2IGJkOWQzOGQ2NDM2OTRlYzUyMzdiNTU5YjRhZGYyN2JhOGQzYzJhNDEgbGVnYWN5LXRydW5rCisxMTgwNyA1ZGI2NDdmZWRiYTAzM2NlY2VhMDQ0MGEyODcyY2MzYzM2NTBiOTQ4IGxlZ2FjeS10cnVuaworMTE4MDggNDhjNjE1ZDg0ZGE2NmRhYjg0MjYxZDQxN2MwMjQ3NTVlYWViYzE4MCBsZWdhY3ktdHJ1bmsKKzExODA5IDVlYTg4MzZkOTY3MDBiOTJhZWVhZjE2YjY3MDZjZDI0NTBhODg5NWEgbGVnYWN5LXRydW5rCisxMTgxMCA0NjdkZjYxZmZiZmE5NWZlZTZjMzk3NDA1MDFkMGE4M2E4MDI1ZTI5IGxlZ2FjeS10cnVuaworMTE4MTEgNDE2Yjc3YjgxMWM1YjgzMWIzOTU5ZjcyNDUxN2EzNzk4OTEyYjY2NCBsZWdhY3ktdHJ1bmsKKzExODEyIDc4NDg3ZTcwMTY4NmQ5NDFkMGJjNGJhNjY2OWFlMGJmY2M4Nzg0NmMgbGVnYWN5LXRydW5rCisxMTgxMyBmMzNiMzk0ZTVkN2ZjYmMzODU0MWViOTU4ZWY0OGRhZWE1M2FiZGVmIGxlZ2FjeS10cnVuaworMTE4MTQgMDAzYjQyYzlmMjRkMjEwODI3ZmRmYjBiMTk4YTkwMDMxNTg2MzdkMSBsZWdhY3ktdHJ1bmsKKzExODE1IDhhMjZlNTVlMThiODEyZGJhZWM1ZjEzOGFhN2E2NGRmYjJlNjczM2QgbGVnYWN5LXRydW5rCisxMTgxNiA4OTE4ZTRmNTRlY2E4ZDE2NmE0MGE0Nzk3MmFjYzIxNmQxNmQxYThlIGxlZ2FjeS10cnVuaworMTE4MTcgOGU5ZDk3OWRkZjU1MGIzMDIyNTk5NDNjNzA1NzJkZmMwM2FiOTM4ZCBsZWdhY3ktdHJ1bmsKKzExODE4IDQwZDIxYTViOTk5MDE1NmIwNDhjNzkyOThmNzc0MGQ3M2EwZDg4N2IgbGVnYWN5LXRydW5rCisxMTgxOSA4NGUyMWFjN2QzZWEzNThjZDhmNmZiNDIxMmU0OTI5ZGE0MmM4OWZmIGxlZ2FjeS10cnVuaworMTE4MjAgMTUwOTA3YzJjMmMwODI3OTczMDJjZWM0YWMzZjQ3OTIxODFmOWM2YSBsZWdhY3ktdHJ1bmsKKzExODIxIDk1OGU0ODg5ZWNhYjU2ZTM4M2U5ZDIzMWMzNmQ3YjZjNDJlZmVjZjcgbGVnYWN5LXRydW5rCisxMTgyMiBjYTZlMjI3M2ZiZjYyNzU0ODBhMDRlNTY2ZGIwMDA5ODliMDg3NjUxIGxlZ2FjeS10cnVuaworMTE4MjMgM2I5MTQzMmJhMWE0MTMxNTZiMzdmMjZiMDFlZDRlZDM4YTlkOTMzMyBsZWdhY3ktdHJ1bmsKKzExODI0IGM5MWU0ZDg3ZjY5NDY5NzE1YWY1ZTM4MjJmOTc1YjRjNGQzMzJlMTkgbGVnYWN5LXRydW5rCisxMTgyNSA4MTU3NGU0NjQ2YjQzY2FkZjE4M2MwMDg2ZDU2MmM4MjRjODBmNmRlIGxlZ2FjeS10cnVuaworMTE4MjYgN2YyNDJmMjlhNDVmYThhMDAwN2I4NDk0YmExNDBmOTM3NTI5NzdlZiBsZWdhY3ktdHJ1bmsKKzExODI3IGZkNWE0MzA5YmZkYzJkNGFmODI1NDg2YWVmZjVmZjEwMDI2OTYyZTYgbGVnYWN5LXRydW5rCisxMTgyOCA3NTIzN2NhNTZhZmYzNzU1MmI2ZGFlODAzYTY3ZTU5OGM5YzI1OGRhIGxlZ2FjeS10cnVuaworMTE4MjkgNDYyY2NkMGJiZTUwYWM2OTJmZDNkOGZiYjg1NDcwZmIwNzQxYjIxMyBsZWdhY3ktdHJ1bmsKKzExODMwIDkzNDBjYjJhZDNhODg3NGY5ZGZlZTg5ZGQ1YWNlZmIxNzhlNDNlODggbGVnYWN5LXRydW5rCisxMTgzMSBiNjA1ZjIyYTA5OWFhOWM2OTZkOGM4ZjFkZjM1MTFkYTAwOWUyMDI1IGxlZ2FjeS10cnVuaworMTE4MzIgZjRkY2I5MGFjNDE5ZjY5ZWEyMGZkOWQ3OTkyZjQwN2YwM2E5MDU1YyBsZWdhY3ktdHJ1bmsKKzExODMzIGZiMmU3ZjM4ZTFiYmU2OGFiYTg5OTlkMmU3ZDUzY2JkOTYyMjdkMjcgbGVnYWN5LXRydW5rCisxMTgzNCAwNDFmMjJhNWEzOWRkOWIxZTMyNzMwYTM3YWI3NzYwZjg1ZmNkN2U3IGxlZ2FjeS10cnVuaworMTE4MzUgYmEzMjc3Y2QzMDY4NWY1MmNjOTlkNjMxOGI1NmM5OTc2NTIyYzJkYyBsZWdhY3ktdHJ1bmsKKzExODM2IGQ3NDBjOTYxM2JiYTdhMWFkZGEyNjRhYjY2NTRlM2MyN2Q3ZGE4YjggbGVnYWN5LXRydW5rCisxMTgzNyA3MGIzMmY0MWE3ZmJmYjM4ZWU1NzI5NDYyOTE2MTg0NDA0ODNhNGQ5IGxlZ2FjeS10cnVuaworMTE4MzggNWEzZDIxMzAxYTA1MTQ1YWYxMDAyOTIzYjVhZWI2MzY5ODc5OTFkNSBsZWdhY3ktdHJ1bmsKKzExODM5IGVmNjhmMGU2MDllMTk4YWJlN2E4OGQ3Y2I0MTI3ZjdlZmQxZTBiMWMgbGVnYWN5LXRydW5rCisxMTg0MCA0Zjc4NTA0YTVmODFkYzc2YmZiODU4YTA3NGQyNzIyYTkwYTI5ZTYyIGxlZ2FjeS10cnVuaworMTE4NDEgNTBhMmQ2NDI3NmU0YjEyNmVmZTA4NTIxNjExMzQ0OWVkNDVkYjFlOSBsZWdhY3ktdHJ1bmsKKzExODQyIDIzMzYzYmI4YmQ5MGNmMTlmZTdlNDRlOWZjOGVjNzczYTlmYzUwMzMgbGVnYWN5LXRydW5rCisxMTg0MyBlMTZlMzYzZTM5MWI0MzNhMzg3MTA3YTJkY2I5NjMzOThiZjgwOTMxIGxlZ2FjeS10cnVuaworMTE4NDQgYmM5YWVhNzE4ZTRlMzJlM2Q3MWI5YjMzZmI0NTcwZTljZDIzMWMwZiBsZWdhY3ktdHJ1bmsKKzExODQ1IDY2OTA4MzhiYThkYTYwZTRmNWM0ZjAxODZlZTJmYTI0MTZlNDdiMzUgbGVnYWN5LXRydW5rCisxMTg0NiBiZjg5ZjE0MzViNzI4Y2QwZWUzYmRlMzhlOGQwMDg2YjYyZTAwZjJiIGxlZ2FjeS10cnVuaworMTE4NDcgNDQyMmJhMzg5ZTQxNTcwYjcyODBlOTYzODY1MjA5YjMxNWE5MjIwYSBsZWdhY3ktdHJ1bmsKKzExODQ4IGZkYzNjNDU5ZWQwMGFmYzI4MTRmMDc5ZGQ1Yjg2ZTFkNTk0ZWEwNWMgbGVnYWN5LXRydW5rCisxMTg0OSBjZDE5YTdkYjg3MzU2Y2ZkY2NkNzA2MmVlZDZiYmVjOWEyNDkwNGRiIGxlZ2FjeS10cnVuaworMTE4NTAgNjViMDg4MmE0NGFiY2Q5YWQ2YzVhMmIxZjg4NTkzNTI5ODBjMmRhZSBsZWdhY3ktdHJ1bmsKKzExODUxIDYxZjQ1ZGQ3YzQzYTUzMDQ2ODhjMzQ2ZmVlYzE4MmE1NTg5NGFkYTMgbGVnYWN5LXRydW5rCisxMTg1MiA2YjVmN2U5YTMxY2I5ZTZlMDM3NTM3ZjRkMTZhMWFhMGU0MDFjNzA1IGxlZ2FjeS10cnVuaworMTE4NTMgZjBhM2MxZmM3YjkwMjRlZmZjM2Q5MTlhNzlkNTBmZmNiODE0Nzc3YSBsZWdhY3ktdHJ1bmsKKzExODU0IDZiODg5ZTRjMDc1NGUwMjA5MTRkYmI3N2Q3MDcyZmQzZWZiMDdjNzggbGVnYWN5LXRydW5rCisxMTg1NSAyZmU3YmJlNzFkZDhjMGEwMmIxZWRkMTg3MGJmNTQ0OWQwMTU2YzQ3IGxlZ2FjeS10cnVuaworMTE4NTYgZDFlYWRhOWJiYzNjN2EyN2Q4M2NiOGY2MGFmZDI1NTE5MTU4ZjIxMCBsZWdhY3ktdHJ1bmsKKzExODU3IDRjMjNhZTZjNmU4MmM2MWNlYzdhYTlkNThmMTNkYjk5YTY0OTcyNjAgbGVnYWN5LXRydW5rCisxMTg1OCBiMTAwNGI0N2JhYzBlNzI5NmY1ZDE1YjJhZmUxNjUxZDEyODBhNzIwIGxlZ2FjeS10cnVuaworMTE4NTkgNTBlMDYzMWNmMTE3Mjk4ZGQwYTEzOGFkM2Q1NGFjMWEyZWNkOTNlNyBsZWdhY3ktdHJ1bmsKKzExODYwIGYzNTFjNjRjODJlZGI4NjQ4NjU1MmFmOWIyOTdlM2VhYWY0NTNhYmEgbGVnYWN5LXRydW5rCisxMTg2MSA5ZjEzNWIzZDlhNzgzMTVkOWIzMWU2ZWQzOGJkMzczNzllYWYzNzgxIGxlZ2FjeS10cnVuaworMTE4NjIgYzgwMzIxYzMyOGI1ZDBkOWI0MDFkMzQ1YjdkZmMxN2RiM2RkNTczMSBsZWdhY3ktdHJ1bmsKKzExODYzIDk4MWRkMjBiYzcxMTYyYmYwM2M4OTYwNWJkODJhOWQzNDMwZGZiYjAgbGVnYWN5LXRydW5rCisxMTg2NCBmNjgxOWI5MjZmYjJjNjYxMzFiZTZmMmFmODkxZmI2YjkwZDEwNjE2IGxlZ2FjeS10cnVuaworMTE4NjUgZjA0Mjg4Y2NmNzdiN2IzMmJjYzUzZGYyOWEwODc3MjRkZWE0ODhkMSBsZWdhY3ktdHJ1bmsKKzExODY2IGE2ODA4YmNmOGFjMjliNGNiNWIxOWZiNjExZDM1MDM1YmJkZjgwMzQgbGVnYWN5LXRydW5rCisxMTg2NyA3YzNiZWEwMTE4OTU4ZWEzNjM0NzEyMWExNDQ2MmU4YTk3MWZjODI5IGxlZ2FjeS10cnVuaworMTE4NjggMTA2ZmFmMzY2ZTNmMDdlZmExMWM4YTc4YzllNGI1OWJkZmE1ZTNlNSBsZWdhY3ktdHJ1bmsKKzExODY5IDZmZjA5NDhmZjk1MWM3YWJjODU0NGE4Y2M4ZmI0YzVlZWVjNjQ5OTIgbGVnYWN5LXRydW5rCisxMTg3MCAyMjlmNzNmMmM4NzhmZTNkMjE0OWYwM2EzZjc1ZmNjYWIwZWZjYjU1IGxlZ2FjeS10cnVuaworMTE4NzEgNDgwNTY3MzEwMTk0Y2EwNzY1Njk4MWEyNTFiZjMwZjM0ZDU0Yjk5YSBsZWdhY3ktdHJ1bmsKKzExODcyIDliZjQwZWYyMjdjOTJiNmI0NGM5NmRiZjUyYjM1YzgwNTM3YmU5YTIgbGVnYWN5LXRydW5rCisxMTg3MyA0MmEwN2JlZjYwZTAyYzczYTkzMDA1ZTM2ODM0MDZmZjg2NTkxY2FkIGxlZ2FjeS10cnVuaworMTE4NzQgYTRiNGJhNWM0YWEyMTFiNjdmNjNjN2Q2NDQ0MTMxYzY3YTUxODQ0MyBsZWdhY3ktdHJ1bmsKKzExODc1IGUxODAyNzEzMGJiZTIwZDM0ZTYyZmU2ZTdlZTNlYmQ0NGQ2ZWMwNTIgbGVnYWN5LXRydW5rCisxMTg3NiBiZmE3ZWQwYjFhNmJkMjBlNDQyMGU1MzRkMGZlYWNiNDBlZTNkZjZlIGxlZ2FjeS10cnVuaworMTE4NzcgMDliNWNiNDc1OTJkNDRhYmU3ODRmYTI5NzVhNjZmYWNkZjEwNmRkZSBsZWdhY3ktdHJ1bmsKKzExODc4IGFmZTUwYjY2MTU0OGM4ZDI3NzNkNzVmZTg1Mzc5NzRmNmM4ZmIzZDAgbGVnYWN5LXRydW5rCisxMTg3OSA4YTM0OTMwOWZkZjQzMzE5MGRkNjBjMzYxODhiYzYzY2Y3NWEzYTQzIGxlZ2FjeS10cnVuaworMTE4ODAgMmIzNDQ2MWJhNGEzYWNlYTY2OGJkYjVjMWM3MjdhNDMzZDM3MmUwZSBsZWdhY3ktdHJ1bmsKKzExODgxIDY0Y2ExMTU2ZWRmMTkwNjc2OTQzMzZmZjlkMDNjZTA2YTNiY2Y4ZDQgbGVnYWN5LXRydW5rCisxMTg4MiAwMGIwNmNjNWI5ZGExNzgxMTRjNWY0M2NlYmI0YWZkZjU2Mjg0N2U3IGxlZ2FjeS10cnVuaworMTE4ODMgZjVkMzk3NGQyMDlmMzNiOTJmMTMzZWY2NWQyZTQwZDAyNGRmZjZkMCBsZWdhY3ktdHJ1bmsKKzExODg0IGYxMGM2YTc0MzhmNWNlMTM5YzFiMTM2YmQxNTA5ODU3ZTc2ZGI1MGIgbGVnYWN5LXRydW5rCisxMTg4NSA5ZGQ2ZjQyOTY0NzlmYmY3Y2E3NDUxOWE4YjU3YzM4OTA1MmE1YzlhIGxlZ2FjeS10cnVuaworMTE4ODYgNmNlMGNlNGVhM2MxODQ3ZDVlY2FjMGZkYWY5NmU0Mjc5NDc4NWJkYyBsZWdhY3ktdHJ1bmsKKzExODg3IGE5YWU5OWY5MjE1NDAxODc2MzlkNmE5ZGNiMWVkN2RiNWUwZDljYWQgbGVnYWN5LXRydW5rCisxMTg4OCAyMTFjOWUyODM0NjZmNmU1YjJiYzQ4ZWIyMWY5MjYxY2M0Njk5NjkxIGxlZ2FjeS10cnVuaworMTE4ODkgM2Q5YTBhM2U1OTZiMjhhYmM5M2Y5ZTgzOWE5NzcwOTg3NmU3NGNiYSBsZWdhY3ktdHJ1bmsKKzExODg5IDIxZDcxZjJlMjcyNDhhMGY0ZTM5M2QwZmMzMjFlY2Y5Yjg5MzIxZDIgbGVnYWN5LXRydW5rCisxMTg5MSAwOTRjMzg1YjU2MjQzMTM2YjU5MzJlNTEzMjRkMGViNTRkM2IyNjMzIGxlZ2FjeS10cnVuaworMTE4OTIgOTdhNTQzYmY5ZjlhNjQ0MDFlNTg5ZTNlNGExODlmOTIxOWJlNTE1ZSBsZWdhY3ktdHJ1bmsKKzExODkzIDg3YzgyNWVmNzg3OGRhNmUzNmQ1YzM2NTUyZmYwZjljNTczMjkwOWUgbGVnYWN5LXRydW5rCisxMTg5NCA4Y2IzODhlNzFkZDkwNTA3NWU1ZDVkZjQ4NDQyOWZjYTE3YWZiYmZiIGxlZ2FjeS10cnVuaworMTE4OTUgYjA0NjVhZWIwZWZjZTMwMzBhNjFlNjAxOThhNmI4ODMyNWE3YmE1MCBsZWdhY3ktdHJ1bmsKKzExODk2IGMxOWU5YWMyYjBjOGM5OTc4YjMzNDMyMWI4ZDhiYzJmNjZjZmRkYTMgbGVnYWN5LXRydW5rCisxMTg5NyAzYmZmNjczNjliMTEwODU5ZmU5N2U0ZDQ2YzgyMGQzMTY3ZDRhNGM0IGxlZ2FjeS10cnVuaworMTE4OTggZjM2NzA5MjViMDk4Yzk2NjY3NGQzOWVjYTNlMjJjY2JmMTQ3NjRkYyBsZWdhY3ktdHJ1bmsKKzExODk5IDljY2FlY2QzZGVhMzJiZTY2NDg3MmZkNDk3ZmNkNDBlMzkwNTczZTkgbGVnYWN5LXRydW5rCisxMTkwMCA1OGEzNWU1ZDEzY2M2MjcxNjI0NWZhMTBhNjUyOWExZDQ1MTVkYjZmIGxlZ2FjeS10cnVuaworMTE5MDEgZjUwYjljYzc2YzFlNmQ5MTczNTk5MTdmYjc0MzE2NDRmMWFiMmM3NCBsZWdhY3ktdHJ1bmsKKzExOTAyIDM4ODYxNjVkYmE0MjY3OGM1MmRkZWMwMjUxNzZmN2Y5ZWM5ODZjNjMgbGVnYWN5LXRydW5rCisxMTkwMyA2M2VjZjdhNGMwNzBlYzliMzMwY2VhZDFkMzcyNGY3NGQ1ZGQ0MjU4IGxlZ2FjeS10cnVuaworMTE5MDQgZWU5OTJiMzEyMGQzYWVjZTVmYTM5NjEwYTQyZmUyNWQyNzQ1ZWJhZiBsZWdhY3ktdHJ1bmsKKzExOTA1IDlmOWRhMDE4OWI3YjRkZWUxMzQxZWYxZWVlNDQyNzhhZjNlMWU0NWEgbGVnYWN5LXRydW5rCisxMTkwNiA0NGM1NDY4ZjhkMzY0NTM1NjE3YzNiNWI4MjBhNjAxZDExODE0ZjAwIGxlZ2FjeS10cnVuaworMTE5MDcgNjIwZTAyMjUwYzgwYmM2MDkzMzYyNWJmMzI5NDA1NDg0YzY5NjQ2MSBsZWdhY3ktdHJ1bmsKKzExOTA4IGZiY2E0ODYzMjdjZTFjMTRiMDk4YWUxNTU3ZTAxOTdkOTNlYmUyZTQgbGVnYWN5LXRydW5rCisxMTkwOSAwMzc5ZWI3YmUzMjNlOGU3OWIxMTQxNWNlNDJkNjA1ZmQwMDc3MjMzIGxlZ2FjeS10cnVuaworMTE5MTAgZTcyNTRlMmYyZGMxY2QxMWYyNzVhMTYzYjNjODMyMjQ4NDI0MjhmYyBsZWdhY3ktdHJ1bmsKKzExOTExIGMwM2ZmZmYzODdmOGJkZDQyNDUzYjFmOTlkNDAyMmEwNTBiY2MyMzQgbGVnYWN5LXRydW5rCisxMTkxMiA3YmE3ZmJlYjg4ZWMzYWRlZjI1ZGVhYzZiMzZkMWMyYTMxN2E2MWY3IGxlZ2FjeS10cnVuaworMTE5MTMgMDEyOTk3YjlmMWViZDEyNjU3NmJiZTExZGQyOTdjZDU0NmQxY2FiZCBsZWdhY3ktdHJ1bmsKKzExOTE0IGU2ZWEyYmM5NzRlMjZmYmJmMzc0MTUwNTU2MTkyY2Y1NDk0ZDZiNWQgbGVnYWN5LXRydW5rCisxMTkxNSBmNmY4NmIzN2YxZmMzYjlhNGUwYzE1NTg5YmIyY2I5YWI5ODg4NjlkIGxlZ2FjeS10cnVuaworMTE5MTYgM2I4YjMxZDJjOWNhMzExZmU3MmYzNmRiMWU2Y2IxODU2NjIwZTJkYSBsZWdhY3ktdHJ1bmsKKzExOTE3IDhlNGZkYjBiMGJiOGU1OThlNGE5YWVjNWM0YzY5MTc2YWYyNWYzZTQgbGVnYWN5LXRydW5rCisxMTkxOCAwMmIwYjg0ZGQ1NDVlN2JhNWViNjdiZTkwOGJhNWZiZjc2NTA3MTQ5IGxlZ2FjeS10cnVuaworMTE5MTkgMWE1OWYzNjU0YmMxMTNhMzk5NjAxNzZjNTZjYjVhY2JkMGU1OWRlMCBsZWdhY3ktdHJ1bmsKKzExOTIwIGUxODA2YjI4MGY1MzkzY2RkYWYzYzUxYTQ1NjdkZjk0NzY4ZmY0N2MgbGVnYWN5LXRydW5rCisxMTkyMSA3ZjhmNjA4YWNkYmNkMzcwYTdjMTQyMzMwZDM3M2RmNmFjYjJiY2FlIGxlZ2FjeS10cnVuaworMTE5MjIgNzkyY2Q3YzVmZDg4YWQ2N2Q0MTQ0NDhkNTY3MDNjYWViOTQ2NTVkZiBsZWdhY3ktdHJ1bmsKKzExOTIzIDkwZmJlYzQzNDNkZWM2MmZlYmJmZjc3Yzc2NmU1YjY1Y2M3Nzk4MzMgbGVnYWN5LXRydW5rCisxMTkyNCA3NTY3ZWY0MGRlNzdjYjdiZTk1YTk2NGQxMGYzNTBkMTVjODE0MDZjIGxlZ2FjeS10cnVuaworMTE5MjUgMWM5NGYzNGI0OWUzZjc0YzM1YTA4NTc2NGM0YTk4N2ViYjM2YzJhYSBsZWdhY3ktdHJ1bmsKKzExOTI2IDMzN2FlMTJkODA1MDA3YWQxYzZkZmFjNmFkN2RhYzJiNDU1MTg0NGUgbGVnYWN5LXRydW5rCisxMTkyNyAyMmMzMmRkNjNmZjVkNzdjZDc0MWRkMTdkOTIwZWQwNzcxNTlkM2FlIGxlZ2FjeS10cnVuaworMTE5MjggODdiOTU1NGM1MWQ0YmE2ZWE1NzgwOTIzMDk0ZGJhMzViZDJkZDgxNCBsZWdhY3ktdHJ1bmsKKzExOTI5IGVkZjc1NTNmYjIwZWZlZGVmOWI5MDE5ZDA0Mzk3NGZlNzFiZDU5YzEgbGVnYWN5LXRydW5rCisxMTkzMCA5ZWE1YzQyZGNiZWRiNWMzZTE2NTY0ZjYwMjE5MzBmMjg0MDM0ZjY1IGxlZ2FjeS10cnVuaworMTE5MzEgNGY2ZjczMGQyNTU2ZGJlOTMxZTBlYWI4NzBiNjcyMDgyNmExYWRiZCBsZWdhY3ktdHJ1bmsKKzExOTMyIDYzZmU4NTczNWJkY2Q5NTRkMWEwZjQ0NWJkN2E0NGNhMjEyM2Y0YjMgbGVnYWN5LXRydW5rCisxMTkzMyA0OTYyM2RhM2M2M2YzZjUyZTJkNTc3OWFhMmQ0M2VkMmFjZWU0YjQ1IGxlZ2FjeS10cnVuaworMTE5MzQgYzYzNjY4OTNjZWUxZDk3NjBiNTM2MTZlMzhhYjc3MjBmNzVlYTc3YiBsZWdhY3ktdHJ1bmsKKzExOTM1IGNlYjg3ODc5NjEwODE2OTEzOWQ0ZDM3MWIyOGY2YmFmOThjZDY4MzYgbGVnYWN5LXRydW5rCisxMTkzNiBlMWMzMzA5NDMyMjFlNWQ5OWRmMjNhNDJhMDk1ZDJjYmQ1MDZlMjA1IGxlZ2FjeS10cnVuaworMTE5MzcgZjhkZGQyMzQwMzk4ODlkOWNmZmY5NWM3ZDBhMjFhMGNhYWUyZjE1ZiBsZWdhY3ktdHJ1bmsKKzExOTM4IDkxM2ViMzFiMDMxNzIyMTI2NTFlN2NhYTg0ZDA4YzVmNGJiZGU4MGIgbGVnYWN5LXRydW5rCisxMTkzOSAwZmVhNWQ1YzRmZDlkYThkNzgzMTQ3NjkxNTIzNGUyNGI4NGFmNDE1IGxlZ2FjeS10cnVuaworMTE5NDAgNTYyMTdlYWJjMDdhYjRkNWM1OTgzMmEzMjBhN2M5N2U0ZTUyODY1MiBsZWdhY3ktdHJ1bmsKKzExOTQxIDRiZDUxMjhlNWVkNDM0NGVkMWIxNzg2MGE3NmZjNjBiNDdlYTUyOWEgbGVnYWN5LXRydW5rCisxMTk0MiAxODgwZWFkMzIwMGNkNDVmZTJhOTFlZGQ5ZWNiYjYyNzc2ZjgxMTAzIGxlZ2FjeS10cnVuaworMTE5NDMgNDFjODg0ZGZhZDVlZjRiOTk3ZjZjNjVhYjc0ZjQxMGNiZmQzMzk3NSBsZWdhY3ktdHJ1bmsKKzExOTQ0IDI1YjY5MjlmZmIxM2RlMDA1YTg4NjE4ZjBhNzUzYjUzNWFkM2FiMTggbGVnYWN5LXRydW5rCisxMTk0NSBmMjQyY2QxMGUxNmEyNDhlZWNmZjE2NzU0MDg4OTQ4MGUzMjlhZDljIGxlZ2FjeS10cnVuaworMTE5NDYgZDM5MzlhZDM4MTc2NmFhMzAxOWQ2ZjA2NTMzMzY0YjU4YTg4ODMxOCBsZWdhY3ktdHJ1bmsKKzExOTQ3IGRhNzFhYTFiZTE5MWMwMWMzZTg1ZDc5NDg5YjViMjk4YWU0MWM0N2UgbGVnYWN5LXRydW5rCisxMTk0OCBiMzRmOWU3ZTI2OTE0NjU0ZDQ4NjNjNjdiZjQ4N2U2MDA2Yzk4NmMxIGxlZ2FjeS10cnVuaworMTE5NDkgNGQzZTJmMWQwYWU0N2VkYjc1ZWMxMzE3MmJkMTA3NmJhNTBlNTMwNiBsZWdhY3ktdHJ1bmsKKzExOTUwIDhiYzBhMzJkZGFiNWEyMmJiOTZlMjc3MDg4ZjJkMmNhNjZiNjUyMjYgbGVnYWN5LXRydW5rCisxMTk1MSBlNTk5NjI3OWY1OGM3YjMzMWNhMDgzMzM2ZTFlMTU0NjVlZWY0NDc0IGxlZ2FjeS10cnVuaworMTE5NTIgMTdiY2E0YjNkYTkzNTdjZjlkZDlkYjk1NDA1ODk4OWU4ZGFiMWU1MyBsZWdhY3ktdHJ1bmsKKzExOTUzIDFhZmRjNTU4MDE1NzhjZjFjYTU2NzJkMDNjNWUwYjZiODg0OWEyMDMgbGVnYWN5LXRydW5rCisxMTk1NCA1NDQyMmI0NmY2ZDE4MDJjYzkzYzQ3OWYyMjc4MzY3ZmY0ZWI4ODk0IGxlZ2FjeS10cnVuaworMTE5NTUgZTdkOTg0ZjI2NmNjNjFmNmU2YWZmOTZjODRlYjRlMmMyMmQxMjM5YSBsZWdhY3ktdHJ1bmsKKzExOTU2IDYyZTFiY2M2NmE5M2U0MjU1OTU5YTdjMTgyZDYwY2E1ZGUwOThjNzUgbGVnYWN5LXRydW5rCisxMTk1NyA0ZmE4ODEwZTg1Y2FjZjVjZjBlMmRlYTA0YmZiZmNhM2QzMWNlZGUwIGxlZ2FjeS10cnVuaworMTE5NTggOWZmZDYwNDgwN2MyMTY3M2RhMzBiMTQwOTQ4MjhkYTQzOTExZDRhMSBsZWdhY3ktdHJ1bmsKKzExOTU5IDhkYzBlOTdhNDVlYzc1MjA4YzUyYTFkYzA2NjU3NGI5MmZlYTc1NzQgbGVnYWN5LXRydW5rCisxMTk2MCA3OThiMTA0MWQyNjA2ZjA5NDZlOWM1NGZiMGM0MzFmZDhjNDdjODkyIGxlZ2FjeS10cnVuaworMTE5NjEgYTExNWMzZDQ5MmRiMDgzNDc0Y2NiOTk5YTAwMTMyNmJhOTJmYzY4MSBsZWdhY3ktdHJ1bmsKKzExOTYyIDRkZTA5ZWExMGVlMDhlMDIwYjBlMzY0ZWQ3Njk5MTViOGZlMGFmMjUgbGVnYWN5LXRydW5rCisxMTk2MyA2YTI0NGU2NGIzZTZiMmVjMDc2OTRiZmU5YWNhYjQ0ODU0NTYxZDQzIGxlZ2FjeS10cnVuaworMTE5NjQgZmViNmMzODZhYjc3MjY1ODNlNGYwODMzYWMyN2M3NTYyODJlZjVhYSBsZWdhY3ktdHJ1bmsKKzExOTY1IGQwN2JjOGJmMmQ4NDU5M2VmNzkxMDNlODIyZWUxZTNjZjdhYTU4YjcgbGVnYWN5LXRydW5rCisxMTk2NiAxYWJkOTFmOTcwMzMyNWM3NDM0MTU0ZTliNzJmNTE2ZWYwMjlhMzg0IGxlZ2FjeS10cnVuaworMTE5NjcgYzIxODE1ZmEwNzc4ODY2NTA2MTY3NjI0Mjk4YzY0NDZiMTY1YTMwYyBsZWdhY3ktdHJ1bmsKKzExOTY4IGRlMDA5MzE2OTY0OWJiMzBmNmY4YWVmZTMwOGUyNDM4Yjg3NWQwNGQgbGVnYWN5LXRydW5rCisxMTk2OSBhYmYyY2QyNTFiMjRhOWM0OTFmMzg4YmI5ZDkxZmJkODQ2ZmJhNjc4IGxlZ2FjeS10cnVuaworMTE5NzAgM2Y3MTczNDJmMGEzNmRlOTFkNmRjZjMyZDE5NTdkMjAyNjMyNmY1YSBsZWdhY3ktdHJ1bmsKKzExOTcxIGMxZmQ4MTQ2ZjJlOWE3OWM3N2U1ODc3YWJhY2IxNjIwNTI5MTYzNTUgbGVnYWN5LXRydW5rCisxMTk3MiBmODllYTliZjlhNTI1ZDk4MzJkOGQyMWQyNzcwODE2ZWQyNzQ2OWVhIGxlZ2FjeS10cnVuaworMTE5NzMgMWVhNmQyMzU2ZTUyZGE0MGY5NDdiZDIyOTZiZjcxYWMwOWRmODk3MiBsZWdhY3ktdHJ1bmsKKzExOTc0IGFmYTBjZDIxN2Y0ZWJhNzJkYjQxYzE2NWEzMmFiZTJjZDY5Y2YyMzYgbGVnYWN5LXRydW5rCisxMTk3NSBmNmE4NGExYzdlMDJjZmIyYWVmYzIyMzA4YmNjNGE4OTJmZWMzYzE1IGxlZ2FjeS10cnVuaworMTE5NzYgMzlmZmM1OTY3YjZiYWNiMjQ0N2IwNjQzNDI1NzMxMzM0YTY5YThhMyBsZWdhY3ktdHJ1bmsKKzExOTc3IDRhYmNiMzJmN2VmNTRhMzMyZGM0ZGViM2I0ODAzMGQxM2JlOTAyZGEgbGVnYWN5LXRydW5rCisxMTk3OCBlMWU5YzlkZjRmMTJjOGY1MDFkNmMxMDdiYmQ5MTk4YzUzYjI3N2MzIGxlZ2FjeS10cnVuaworMTE5NzkgNjM4NzZjZDk5ODRjOTI2ODFkZmE4MzRiYThlZjM2N2Q1ODQ2ODY5NCBsZWdhY3ktdHJ1bmsKKzExOTgwIDI1YmUwMGYzMWRhNjE1ZDQzNmVlNTkzZjBiOGMzZTBmNjI3YzYxODEgbGVnYWN5LXRydW5rCisxMTk4MiBkODQ3MTU1MjMwOTVhYzI3ZjdiMzk5Mjk2OGIxYzFmMjZlOWZlYTE4IGxlZ2FjeS10cnVuaworMTE5ODMgNmU2YmU4OTZlYzQ2NmU5NDRiMzlkMzY5M2M4OGQzOWJhNjFjNjg5OSBsZWdhY3ktdHJ1bmsKKzExOTg0IGQzOTI4Yjk4ZTJlMTNlOTIzOGMzMTUzNGU2NTFmM2I3M2I1YjAzNGUgbGVnYWN5LXRydW5rCisxMTk4NSA4ZjNlN2ZlMWQ0Zjc2M2MwYWY1MTE0ZjNhZTVjOTYyNmE3ZTM3Y2QxIGxlZ2FjeS10cnVuaworMTE5ODYgYjBjYTJjYTU4NmIxNThiMWQ0YzEwODI4NjljNTEyOWFiM2RjNzYyMCBsZWdhY3ktdHJ1bmsKKzExOTg3IGRiN2NjYTA5YmVhZmU3YjdjMjIxZTgxM2RiMmRlOGQ0NGNhYWZiODQgbGVnYWN5LXRydW5rCisxMTk4OCBiNzVkOTNlYzhlNWE2ZjdmMWIzZTExM2NmOWYyYjA3ZDMxODE4NjQxIGxlZ2FjeS10cnVuaworMTE5ODkgYTNiY2YxYjM2NTUxN2I1NGE5OWZmN2ZkMjgxMGM3MDBjNjZkZDdiOCBsZWdhY3ktdHJ1bmsKKzExOTkwIDk2NDdjNmFkNmE1MDk4Y2U4OTVhZTJkNzI3YjlhYThlMjQ2M2RlMWQgbGVnYWN5LXRydW5rCisxMTk5MSAxODE1MDdjYzFhNzI1OTVhNWYwMDU1NmFhODI3Nzg4MmJkY2VmYzI4IGxlZ2FjeS10cnVuaworMTE5OTIgNTQ5ODMxNzIzZWY4NTc4YTFhYTJmMTFjZmRlM2ExOTU3NmZmZTlhZiBsZWdhY3ktdHJ1bmsKKzExOTkzIGVhYmViYzE2MTUxODZiMWUyZTRmNmRiMzMxN2U2NTAyMmVjZjIxMDMgbGVnYWN5LXRydW5rCisxMTk5NCA1ZDgxZTQyYzZiYTJlOGUwNTk4ODI4MTA0MzIyZWM3N2RkNmI1ZjlkIGxlZ2FjeS10cnVuaworMTE5OTUgOTZjNzM0YWNmODRmNTVjZjkwM2Q1ZWE3OTZiMmZkOGNiOTU2NGE3NiBsZWdhY3ktdHJ1bmsKKzExOTk2IDc2ZTkzNTkyNGZhZTBiNDhjNzg1MWIyOWE3MWNmYzZjYmNhNTJlYTEgbGVnYWN5LXRydW5rCisxMTk5NyA2M2ExYTg1MTNjMWRjZTcwZmVmZTczNzc0MTY1MjRmNGJmZWZhMzRmIGxlZ2FjeS10cnVuaworMTE5OTggNDQzMWU3YTMxOTc3NWJiNmVkYjQ2YjEyYWQ1NzA3M2I1ZjkyMGUxOSBsZWdhY3ktdHJ1bmsKKzExOTk5IDM3Nzc3ZTBmODBlMzc1NTRlZDJiMDdkY2VhNWM5NDBmMjUwYWI1ZWIgbGVnYWN5LXRydW5rCisxMjAwMCA2MGRmYTIxMWRkZThiYWQ2NDg0ZDhhZTE0NDU0NzEzYjQwMjVkMTk2IGxlZ2FjeS10cnVuaworMTIwMDEgZmVjODYyMzAxZDZlMzNjZWFhMmRkNGIxMWM0NDJjYjU1MjMwN2NjZSBsZWdhY3ktdHJ1bmsKKzEyMDAyIGY1OTY1MThkMDY5MWUwMjViY2FlNmNlNzQ3YzgxNzE2MWRiY2RjZjUgbGVnYWN5LXRydW5rCisxMjAwMyAyNDQ5NzY0M2RjYzkxZDE0ZGY2NTJhZWM4NjE4OGZjZjM1OTk4ODlhIGxlZ2FjeS10cnVuaworMTIwMDQgMDQ0MjYyMjQzMDJhYWRhZTRhMjM3NDRjNTFjZDM5YThjNTE4YjgxMCBsZWdhY3ktdHJ1bmsKKzEyMDA1IGNkNzkwMzEwYmM0ZjA2ZjJhMzEwNTQxMjA2NGZjMTJmZDY2ZDcxYTggbGVnYWN5LXRydW5rCisxMjAwNiA2MGQ5OTBmN2Q3YWI1NmFmYzU5YzU1MjhkNGM4N2RmMzczY2Q1NjYwIGxlZ2FjeS10cnVuaworMTIwMDcgNGE3MzQ0ZDU1YWUxODc5NTI4ZDBhODYzYzM1MThlZjYwYzdhNDIwNiBsZWdhY3ktdHJ1bmsKKzEyMDA4IDg1NDQ0YWYyYmU5NWQwNTViMTIzMzYwNWNmMmFkY2MzYjUyNGZmZmIgbGVnYWN5LXRydW5rCisxMjAwOSBiYmU5MjkzMmEwMDVlNTdlMjI4Y2VjMTQyZGE2MWJiOWRlNWZiZjUzIGxlZ2FjeS10cnVuaworMTIwMTAgYTJlODNiZGMxZmVhZWY3M2JhNTk2YWUxZTRjNDYxY2FkNjcxYzdjNiBsZWdhY3ktdHJ1bmsKKzEyMDExIDM1MGYyNDE4MGRjYjQyMmExNGQ3ZjZlYmEwOGIwZDRlZmEwYTRmZDggbGVnYWN5LXRydW5rCisxMjAxMiBhMTI2MTA3YzQzM2E2ZjlhMDdjN2QzNmFkODk5Y2Y5NTVkNGYwMjRlIGxlZ2FjeS10cnVuaworMTIwMTMgOTgzZjUzZjJiNmY2ODNjYjRmYWY5YTBiN2NkYjZhYTYxZmJiNWM0MiBsZWdhY3ktdHJ1bmsKKzEyMDE0IDU4ZjZkYTdjOGJiODk0MjE0YWYzOWY0ZWUxMmM2NWVhMGFmOGRiYjAgbGVnYWN5LXRydW5rCisxMjAxNSBmZTc4Mzk4NGY5MmVhM2EyNDg4OWFmNTRmMmM0ZTBmZTA1YWFhZTdmIGxlZ2FjeS10cnVuaworMTIwMTYgMjMwOTI1ZmU1YjJkZTlkZDZiMzZiMjFlYzAwYmE3MDU4NzhmM2IzZiBsZWdhY3ktdHJ1bmsKKzEyMDE3IDVhZTFhMjBiYmU3MWViNTY5ZTYyMTFjNGQ0YWNjZDlkNjJkNjJiYzEgbGVnYWN5LXRydW5rCisxMjAxOCAzMTVjYzA2YTgxNjE1NDdkZDQ5ZGU5ZjJiMTJjMzJjODU5Mjk4ZTBjIGxlZ2FjeS10cnVuaworMTIwMTkgMGYyNzI1N2ZiNmNmNGY0MTViZDZiM2E2NDA2NzFiMmVkOTA4ZDg4MCBsZWdhY3ktdHJ1bmsKKzEyMDIwIGExYThkZjczYmZmZjUyM2ZlN2M3ZDhkMzk4Y2NiYzkyY2ViMTliNTYgbGVnYWN5LXRydW5rCisxMjAyMSBlZDZjYWNkZGM2YzY4ZTg3YjkwNjFhY2ZmNDUzNjkzZjI5MWQxNDZjIGxlZ2FjeS10cnVuaworMTIwMjIgYzZhMTEwM2VmYThhZjMxZTZlNzlhNjljMGU1ZTFhNDg1OTE1MGY0OSBsZWdhY3ktdHJ1bmsKKzEyMDIzIDQ4YzcwMDQxMDkzNjNiYjE1MTQ5NTQzZWU2YzZmMjAwNWY1ODkzMTcgbGVnYWN5LXRydW5rCisxMjAyNCA3NTA0ZjIzYzkyNDdkOTEwNmU4OWE1NmZjN2QxZDg0M2ZlNjY5MjFkIGxlZ2FjeS10cnVuaworMTIwMjUgZjkwMmVjYzg2N2QwOGQzNGM5YTBhMzlmMDkwMmY0ODQ0OTRjMWFkNiBsZWdhY3ktdHJ1bmsKKzEyMDI2IGUwNTkwNDliMWE3NjIwYzhlMTUzYjQxNDlmM2MyNTZmNjdmZTE0M2EgbGVnYWN5LXRydW5rCisxMjAyNyBkN2QzOTI2MGZlODJkNWZmZTFkNTdiNmNhNjY2NDZhOTZiNGZkNTczIGxlZ2FjeS10cnVuaworMTIwMjggODNmODNmMDAyZDJlYWU1MWZmYjgyMzY4OWNkYjEzOTQxMTY0Nzk5NyBsZWdhY3ktdHJ1bmsKKzEyMDI5IDY4ODYzZjUxMjc2YzA4NTExMDViYzkyNWMxYWRjNzQ4MTJkMGZhNjUgbGVnYWN5LXRydW5rCisxMjAzMCBkZjA3NzdhYjdjNjM4NTRmODYzMzBhZTlhMzY4OTY0ODAzYjI3NmVkIGxlZ2FjeS10cnVuaworMTIwMzEgNzlhOGExYTc0NjdiMTIyZjQwZTE4MmRhYWZiOGUxYTdhMGI4ZDNmZCBsZWdhY3ktdHJ1bmsKKzEyMDMyIDUzMzI1YjhmOGNlOWIxY2QzZWIyNWY4YTc4MmQ5ZDMyNTFkZmZhY2UgbGVnYWN5LXRydW5rCisxMjAzMyA5M2VjYzUxZjU5ZDEyYWYzODNiNTM0YzJmMzE3NGQxMTczNDFmOTZlIGxlZ2FjeS10cnVuaworMTIwMzQgM2U1MGMxZGRhYjNhM2JjYjExYTJjOTBlMDBmOGZiMDgxNjczNWZjNyBsZWdhY3ktdHJ1bmsKKzEyMDM1IGYxN2NlZGE2ZTY2NjkyNTczZDNlZjFlM2EwNWI1NDcwZjUyNDA1NTkgbGVnYWN5LXRydW5rCisxMjAzNiBmZjM5MmRkN2I5NzA5NzQ0YmM0YzQ4M2ExY2YwNmM5YjBlOTEzMDNmIGxlZ2FjeS10cnVuaworMTIwMzcgODdiYmM3MjFiYTJiOTlkZjU3MWY3OGMyYjQwN2FkMGYwYjhlNDA2MiBsZWdhY3ktdHJ1bmsKKzEyMDM4IGFhMmMxYThmYThjZTExMjQ5NDk0Yjk5ODQwOTgwODNlYzNiNDEyMjAgbGVnYWN5LXRydW5rCisxMjAzOSBiOGVjOTc0YWZkNjk1NmQ2NzI1OTI1ODFmNjI3MzA4OWYxMDc2ZTQyIGxlZ2FjeS10cnVuaworMTIwNDAgMTQzN2MyMzM1YjNiNDZhNWU4YzZjMDQ1MzQ0ZTY5MDVhMWNkZDJlNiBsZWdhY3ktdHJ1bmsKKzEyMDQxIDZiYWQ2OWQzODIxNjI1ZjgyOTM4MTE2YTBmNTIxOTM5ZTkyZWNmYmIgbGVnYWN5LXRydW5rCisxMjA0MiAxNmFmMjU4MmM5NjRjY2M3YzVhNWUwNTViMWM2YjM3NThlMTY2NjczIGxlZ2FjeS10cnVuaworMTIwNDMgZDY0MTVjMjdiM2IxYjRiZjBiZWQwMGZlOTBmZjVlZGUzYTU5MjQ1NyBsZWdhY3ktdHJ1bmsKKzEyMDQ0IGFhOTYxYTQ2YWU5ZTA5NzYzYjMxM2E3NWRkNGRkZDVkYWVkMTRlNGMgbGVnYWN5LXRydW5rCisxMjA0NSA2ZTI0OWIxMzVlZDNiMjFkNjlmMTRjYzA2M2Y4MTVhNGEyYmZmNmEyIGxlZ2FjeS10cnVuaworMTIwNDYgODgxOWRlZjFiMzljNmFjYTA0MDFkYjZmODQ2Y2IxZTU1ODA3OGNhYSBsZWdhY3ktdHJ1bmsKKzEyMDQ3IDQ4NWMwYmRmZThhMGUzOWVmY2U1MDliOWI1MDk3ZGNmYWJkYTFlZjggbGVnYWN5LXRydW5rCisxMjA0OCBkNTk0ZTgzMmE1NmNiYzE5MjMzYzZkMmEzNjgxYzE3MzA5Yjg2NzVlIGxlZ2FjeS10cnVuaworMTIwNDkgZGYzOTg1ZWI1ODczYmM4Zjc2M2E0OTRlOGFiNjViMGU2NDQ3NGU4NiBsZWdhY3ktdHJ1bmsKKzEyMDUwIDlhNGY1YmFhODI0ZTdhYmJkOGIwNDQ3N2ZlM2I5Mjk1ZjljMWQ3NjYgbGVnYWN5LXRydW5rCisxMjA1MSAxNjg3OGE0YzI2MGQyMGE1ZGZlNDhmNGQ0Yjk5YTM4ZTk3M2NmOGU5IGxlZ2FjeS10cnVuaworMTIwNTIgOTE3N2M0MDlkYzQ1MTJhMDliMmNjMDgwNjIyZmNlNmQ2MzI3MjdhZSBsZWdhY3ktdHJ1bmsKKzEyMDUzIDIyMDA5MDRhYmRkYzUxMzY1NDRiMGRkMDhkZDZhN2IxMjQyY2U4ZWUgbGVnYWN5LXRydW5rCisxMjA1NCA4M2JiNjA2YTMyZTZmNDQ4Zjk4MDhjYWI2N2FkNDM5YTJjYjQzZWRiIGxlZ2FjeS10cnVuaworMTIwNTUgZjAyYzY1NDllZDFiNTQxN2I0NjIyMzdmYzU1YzQyOWM3OTZiZmJlZSBsZWdhY3ktdHJ1bmsKKzEyMDU2IGZhODY3ZDhlZTdlYmMwMzkwZWQ0NzlmY2IwMWQwZDAzNGQ2ZGRiOTIgbGVnYWN5LXRydW5rCisxMjA1NyBmZWI4Zjg3NjllZjYyZGM1ZmFjMTA5YzhkMTFkOGVmMWQ5ZDNiODlhIGxlZ2FjeS10cnVuaworMTIwNTggMDY3MTdlNTIwNjhmZmUzMDg1NzNlYjUzMDJiMDlhOGRlYTcwZjMzMCBsZWdhY3ktdHJ1bmsKKzEyMDU5IGFlOGUxNDk0NDQxNDdjYWYyZGI1NWU3MGQ0MWVlZWEzY2M0YmQ1YmUgbGVnYWN5LXRydW5rCisxMjA2MCBiYzllNzcyMWM5MTYyMDNmNTMxYjBjYTVjZjY1MTQ5YjZiNzZjM2I3IGxlZ2FjeS10cnVuaworMTIwNjEgZDg1ZDJkOTk0ZjFmNzg5ZjZmYzNiY2ZiZDIzMTE0NTgzMTcxZGU1ZCBsZWdhY3ktdHJ1bmsKKzEyMDYyIGQxM2E2MGI0NGI0NTg3YzY1YjkwOTRhMGU3N2E3N2Q2NjQ4OWZmMDUgbGVnYWN5LXRydW5rCisxMjA2MyBhMDkxMTg1Y2NmYjZiNDU4ZTBiYzU0ODNhYmQ4MjA1M2U2MWZkZWVmIGxlZ2FjeS10cnVuaworMTIwNjQgYWM3NDI4NjJjYTM2Mjc3ODg0MDA0Y2JkYTI3YmE2MjY5YWE4ZjZjMyBsZWdhY3ktdHJ1bmsKKzEyMDY1IGI3MTU4ZGIzNDdkOWI5ZmVlZGY4OWU3OTJhMmRiOTAwZGIzMDMzNTEgbGVnYWN5LXRydW5rCisxMjA2NiA1NTk5MTE3NjhkY2JhZGIyODUzYmVkNzY3MTcxN2M2Y2E1MTU3MWM3IGxlZ2FjeS10cnVuaworMTIwNjcgYWIyMGY1Y2RkNzlmNmU1NGE1ZGFiNGFjM2ZhZWU3MTExYjk3MmJhYSBsZWdhY3ktdHJ1bmsKKzEyMDY4IDVjZGJkOGMwNDAxNmNjNjQ0ZmM2ZTNkYTgwMjg4NjdlNGM3YjE5YTAgbGVnYWN5LXRydW5rCisxMjA2OSBiMDlhOWM0MTJiYTI5OTRhOTc5ZmZkYTVhYTFiMTQxYTAzOTczZDczIGxlZ2FjeS10cnVuaworMTIwNzAgYjY3NzQzNjc1M2E4NzJiMzQ0ZDgzOGRiYjk0NmQ1MjkxYjRkMjVkNSBsZWdhY3ktdHJ1bmsKKzEyMDcxIDhlNmVhNWYwM2U3MzQwY2I3ZmZjY2UwZjU5ZWVmZDMwYTBkMGIzODYgbGVnYWN5LXRydW5rCisxMjA3MiBhYTFlNDgyODVkN2JjZTAwN2E4ZTUwYzVjNTkzYzgxYjZlMTM4NDQ5IGxlZ2FjeS10cnVuaworMTIwNzMgY2RmNTYxN2MyMDIyZDJiNzcxODAwNThhZGMyYmM3ODhmMTRiNzI5NiBsZWdhY3ktdHJ1bmsKKzEyMDc0IDk4YWQ1N2MzOWQyMGRjMWYxMDVhNWE2NDgyNzJhNDlhYjEyYTA1NDYgbGVnYWN5LXRydW5rCisxMjA3NSA4MWRkN2M3M2Y3YjIxZjQ5YjM4ODcyNGNhYzcxZTYyYTEwZDQzOGUzIGxlZ2FjeS10cnVuaworMTIwNzYgMjk5Mjg0ZWU2NjlkZmZmYjdhNGZjOGJjNzQ0NmMwOWFiZjMxYmY3ZiBsZWdhY3ktdHJ1bmsKKzEyMDc3IGY0ZGE5NDQ5ZjAxMTAxZTJkNTc0NjY2NGNkYTllNWVkNDVhNDAxYWMgbGVnYWN5LXRydW5rCisxMjA3OCA5YThlY2Q3NTllMTM0MTFjMmFlMmYwNTFiOThjYmM5YTg1ZjczMTQ4IGxlZ2FjeS10cnVuaworMTIwNzkgNDU5NWVmNWE5NjhhYzUzNmViNjIwZjEyNzRmOGMzYmNkMzRjNjRhMiBsZWdhY3ktdHJ1bmsKKzEyMDgwIDg4ZDU5MGNjMTExNmU0ZjRmYTBhOWE0MDBlOTU1NDA0NjNiNGYxMmIgbGVnYWN5LXRydW5rCisxMjA4MiA2NDgzZGJlMDlmMDYxODhjZTNmYmUxNmU4YzMxYjQyODJkMDQ5N2Q2IGxlZ2FjeS10cnVuaworMTIwODMgZTY2ZTg4ZjUyNjA2NDNkMzgzN2VlODEwYTg2Nzk0MzQ4NzRlNDBkMyBsZWdhY3ktdHJ1bmsKKzEyMDg0IDNjMjk3YTZhZDRlOGJmOTlhOWMxYzc0YzY0ZmNhNmIwNGY0ODI5ZDAgbGVnYWN5LXRydW5rCisxMjA4NSA2MGZkYjFkYjExNzU2NjViOWQ3NTlmMDJiMWRjYWIxMGQwMDRmNTJhIGxlZ2FjeS10cnVuaworMTIwODYgNWE5Y2EyZTkzN2I1YmQ3MzRkZmNkMmU4YTUwNWMzNzViNjBlODVhZiBsZWdhY3ktdHJ1bmsKKzEyMDg3IDM4MDIzYTQyNWU0ODM4MGJlZDdiNjJiM2I3NTNiMDQ1ZjMzNDU2Y2IgbGVnYWN5LXRydW5rCisxMjA4OCAwMWM4ZmU0NDA2NGIzMmRkMmY2ZTczMDRmMzUyOTc4MDQ2OTc5NDIzIGxlZ2FjeS10cnVuaworMTIwODkgNDViZDZjNDBjMDVhZTA1MmZhMDA1MzZkMDcxYTIwMTAxYzQzYTRlYyBsZWdhY3ktdHJ1bmsKKzEyMDkwIDdmOTA3MzY3MDFhMzUwZTMzOTU1MzAwM2MwZWM1YTI2MDI3NGUwNTUgbGVnYWN5LXRydW5rCisxMjA5MSAyYWFmY2VlMjIwYmMwYjc2ODlmODJmNDZlMDljNGY5ZTAwZWJmN2U0IGxlZ2FjeS10cnVuaworMTIwOTIgZjIyZjc2OWJmM2Q5NDIxYzlhOWFhMTRlNjA2NTRkZTc0YzhlYjA3ZSBsZWdhY3ktdHJ1bmsKKzEyMDkzIDg2YmY3MGE1NWVmZGU0ZGU3NDIyYTE2OGFjODQ1NjEyNmUxNTEzOWUgbGVnYWN5LXRydW5rCisxMjA5NCA2MTZiMTc0ZWViNTQ4MzBkZTg0ZTBkZDIzNjA2OWU2ZjEzZmFmN2VkIGxlZ2FjeS10cnVuaworMTIwOTUgMzYwOWNkZGM3OWRmNjEwM2VlNDg0NTk2MDZkNTQ1NjkzZDFlOTdiZSBsZWdhY3ktdHJ1bmsKKzEyMDk2IDU4MzFiYjNjYTQyYTQ5Zjg4YWQ2NjIxOTVlMGYwYTE3ZWIyZGNiN2YgbGVnYWN5LXRydW5rCisxMjA5NyA1NGFhZmU0MmMwYzNmMjAxZWNmNjg1ZTc3MmJmNjRjNGZkMTZiOGRjIGxlZ2FjeS10cnVuaworMTIwOTggMzA3NmZmZjMwNTM1ZjJkMGI1YWI5ZjRmNjA2NTU4ZWM2MTgxMTRiZCBsZWdhY3ktdHJ1bmsKKzEyMDk5IGZjYmYyMjJlNjg5ODFhYTZmNDZkZWNmMzk0NGI0MTA2M2FkNTA1Y2MgbGVnYWN5LXRydW5rCisxMjEwMCAwZjNmOWUzNjYzNTZjN2I4MTE4ODViMjMzYjhkMzdjODExMzM1YmZhIGxlZ2FjeS10cnVuaworMTIxMDEgZDc5ODZiNGI5MTAwOWMwYTIyYzE0MjMzOWNiMGMxY2EyNTljM2U5NiBsZWdhY3ktdHJ1bmsKKzEyMTAyIGM0ZTJkYTQ3Nzk0OTI5Y2UwNWUwYWZhMzhjNDE4NjIyYzgyM2RmYjEgbGVnYWN5LXRydW5rCisxMjEwMyAxZGMwZWYyNGIxNWQzMjAyZTIyOTkxYjQxNWI5NjAxNjhiYTlkMzBhIGxlZ2FjeS10cnVuaworMTIxMDQgNmI1OWY5YWI1ZGIxYTUxMzg0MTkyYjYwYjRlYjBmOWNjNTQ4MjQ5MiBsZWdhY3ktdHJ1bmsKKzEyMTA1IGNiOWUzZjAwZDZiNjU0NzRkZmU4MDNhNzIwNzVlNmE4NzQ4OWM3YTggbGVnYWN5LXRydW5rCisxMjEwNiA4NDgzOTUzYTkyNDgzZDdlYjk1MDQzMWU1ZDQxNDU1MDE2NjQ3MThiIGxlZ2FjeS10cnVuaworMTIxMDcgNWEzNmJhZDFkMjQ4OWI4N2FiZDc3YTFjYmMyMjE5OWVjZGM1OWZmNiBsZWdhY3ktdHJ1bmsKKzEyMTA4IGMxZjk4ODU3Y2M1YmI3ZjYwNzkwMmQ4MzU3MmVmNWMzOTk4MjcwNjAgbGVnYWN5LXRydW5rCisxMjEwOSAyNjc4ZGJmNGFkNjlhMzMwZDZlNGVhZTNhMWVkNDBlMmI2MzExMmI4IGxlZ2FjeS10cnVuaworMTIxMTAgNTcwZmVkNGFiOGRhZjZmYzk3YjY0NTE0YTNkOWU0NzE2ZTkwNDRjNCBsZWdhY3ktdHJ1bmsKKzEyMTExIGFhODhjZmZjMzVhYjk0YTMyYTgxZTlhMTk0N2UyNzAxM2YzZTk4Y2IgbGVnYWN5LXRydW5rCisxMjExMiA1NDI2YmVmODllYzMzOGQwNGQ4ZmZkZDM0NjE4MmIyNDcwZmYxYzNkIGxlZ2FjeS10cnVuaworMTIxMTMgY2U3OWMwZTc0ZjZmZTFmMjkwYmU0OGY2ZmZlOTI4ZmVlYTE0Y2NjNSBsZWdhY3ktdHJ1bmsKKzEyMTE0IGMwMzc4N2VjOTgxMWM5ODZiNTg2YTBmZjZlZjlmMmU0Y2ZjMTk4ZGUgbGVnYWN5LXRydW5rCisxMjExNSA5YWJlZTYzYzZiYWIzYzQ2ZDdmNmI2YmU0MDg2YzJlNDhlYjI4YWEyIGxlZ2FjeS10cnVuaworMTIxMTYgYzEyZmVlNGNlMzYzZDhmMzFiMGRmM2YwYmI3N2ZhZDhlMzdkN2RhMSBsZWdhY3ktdHJ1bmsKKzEyMTE3IDk5MWJkMzUzY2ZlYmZiZDdhYjY0OWUyZjkzYjM1NTA3MzRiNzE4MjQgbGVnYWN5LXRydW5rCisxMjExOCA5MGZkYjM3NzY0YTIyYjEwNmI0ZjUyNzM3YzNlODQ2OGZlNmFkZGIzIGxlZ2FjeS10cnVuaworMTIxMTkgMTc5ZmI2M2IxNTU0NzQ3M2JiM2RhYTA4YmMyYzcyMTgxYTBjOWViOCBsZWdhY3ktdHJ1bmsKKzEyMTIwIDA3ZWQzOGMyOTZlZThmODViODlkZjdhYjg1MDBiMDkwZjIxMzA0ZmYgbGVnYWN5LXRydW5rCisxMjEyMSA1NjcyZjVmMWRiNDY4NGQxYTc2OWI4MmVmMjc5ZGU4YjBjYzY0NGU3IGxlZ2FjeS10cnVuaworMTIxMjIgZmE4ZjlmZTBhMzNkOTg1MTVhY2E0NDg4ZWY3M2U1MTgyMTIxNzgzZCBsZWdhY3ktdHJ1bmsKKzEyMTIzIGIyZmRkNzFjYTAwNmNiNDYzZTM3ZjI4ZGZiMDM5YzVmMzA5N2NjMjYgbGVnYWN5LXRydW5rCisxMjEyNCAxZmU0ODAwOWQ4ZWE4Y2E1Yjc2NTFjODliZTc4Y2QzYTJlYjFjYThmIGxlZ2FjeS10cnVuaworMTIxMjUgOThhNmZjNjg3N2FlZTJjMjE5NzNhYzAxNThiYTRiY2QzMWYyZmI2ZiBsZWdhY3ktdHJ1bmsKKzEyMTI2IDRmNTBjNzA0NTRhOWIyZDEyMGNhZDZjNGQ2M2FiNGZlZWY5ODNkOTUgbGVnYWN5LXRydW5rCisxMjEyNyA4MjAzMGNhMGZhMmVhMDBjNTRmNWM0ZGU3OTVlNjY0N2ZjYTk2M2E1IGxlZ2FjeS10cnVuaworMTIxMjggY2EyMTI4NGU4NzVkY2Y1N2UwN2Y3OTNhNDgyOGUxNmZhOWJjOTIzMyBsZWdhY3ktdHJ1bmsKKzEyMTI5IGQ2NjcxMDkzOWEzMjU0ODdmNGIyNTI1MTNlMWQ2Y2IwMzdlMjhhOWQgbGVnYWN5LXRydW5rCisxMjEzMCAyYjAwYmI1MDg4MDM2YTQwNTg4ZTIyZjM0YWFmNzQzMzI0YzQzMTlhIGxlZ2FjeS10cnVuaworMTIxMzEgYWM1MzQ1ODE0YmEwOTMzYzNkNWE5MmYyZTNiZDgyNTgyODZhMjMzMSBsZWdhY3ktdHJ1bmsKKzEyMTMyIGUyZGMzY2IwOGM2MGE3Zjk2MDVhZDA2OWIzYjkyYWJiYmJlNjI5ODIgbGVnYWN5LXRydW5rCisxMjEzMyA4NTg2ZDkxMWZiMzkwMjM4YjIzZTdlZGFlN2QyOTNjNzkyOGZhZDRkIGxlZ2FjeS10cnVuaworMTIxMzQgNDQyNjdiODhmYjU5NDEwZWY2OGU0NzE2Njc5YzUzYjg0MzQ4YzlkYyBsZWdhY3ktdHJ1bmsKKzEyMTM1IGU1ODk1N2YwNmExNTM4NGUyZDdkYzI2NWQwZTU4ZDE3ZDI1Njk0MDEgbGVnYWN5LXRydW5rCisxMjEzNiBmNWU1ODZiNWY3OTAwMDQ1YWE0M2U3MzRhMmY2N2Q2YTQ1MzIyNDM1IGxlZ2FjeS10cnVuaworMTIxMzcgZjljYzUyMzc0YzUyYzNlY2VlMmM4OTJlN2M5MmNkZjAwMzBiZjkyZiBsZWdhY3ktdHJ1bmsKKzEyMTM4IGRhMWRkM2U1NGI3YWUyNGEyNjIzZDBjZDVmZGYwMTlmOWNiYWZlZGEgbGVnYWN5LXRydW5rCisxMjEzOSA3MmEyZmJiMGUxZjkwMDM4ZGMwOGZjNTFiYzg0ZTI4MTM0ZWUxZThlIGxlZ2FjeS10cnVuaworMTIxNDAgZDE1MmFkZjNmMDk0Y2IyMmI5MjgyNWE5MDQ2MzE2NmIwNmQyNDJjZiBsZWdhY3ktdHJ1bmsKKzEyMTQxIDA4Mzc5YzdmNWZhOWIzMDFmMjFlZjBhYjJmYTM4MzY2NjE0OGY3MTkgbGVnYWN5LXRydW5rCisxMjE0MiBjMmVjMjFjNjVkMDUwMDVkNjA3NmE1YzU3NTZhNjlmNzQwOWE5MzUyIGxlZ2FjeS10cnVuaworMTIxNDMgMmNkNThhNjFiMDUxNjA3M2M0OGM5MzA1NjdiZmJjOWY4YWM0YjM0MCBsZWdhY3ktdHJ1bmsKKzEyMTQ0IDRlMTVkMTc1ZWVkMGM5YmI0OTFmMzViNjk1N2U4MjdmODVmYjc5MmQgbGVnYWN5LXRydW5rCisxMjE0NSA0NzQyYzUyOWQ5YzhlMWM5ZDY2MTdjZTI5Y2UzNzIxY2VkYWU0YzFlIGxlZ2FjeS10cnVuaworMTIxNDYgYzRlYWVmODlhNGE3NWQ5ODBhY2Q1MjVmODc4YWZmY2NhMzY4YTQ0NCBsZWdhY3ktdHJ1bmsKKzEyMTQ3IGM2NmIwZDM5YTczNmJlNjBlN2VlYmY1ZTZhNjlmZDcwODliMzUzZmEgbGVnYWN5LXRydW5rCisxMjE0OCA0NzAxMmMxM2VmZTQ3YjRkZWJiOTcwODEyOThhZWM1N2VjY2M5NmVjIGxlZ2FjeS10cnVuaworMTIxNDkgYjRjZGEzOTQwYWMzZmM5N2Y0ZjZhZWJhODEzNTFkZTc1YzBkOGQ1NSBsZWdhY3ktdHJ1bmsKKzEyMTUwIGI3N2QzNzM5OTM0MzdhOTljZGU4OWQwZDdjN2JlY2IwZDZmOGRkZjIgbGVnYWN5LXRydW5rCisxMjE1MSBlN2VlMTg4NGZkNTQ5MWNmZThlZGU1OWNiZTJkY2UwMWEyMGQ1N2Q3IGxlZ2FjeS10cnVuaworMTIxNTIgNjk0MWY0M2QzYmI4MDljNzA2MTAyNGE5ZjNmMGQ2NDRiY2JiMjE3MCBsZWdhY3ktdHJ1bmsKKzEyMTUzIDkxNzM1N2MxMjU1MjI2YzlmODhiZGVkYjU1ZTJkNmRjZTQzYTUxYzYgbGVnYWN5LXRydW5rCisxMjE1NCBiZmNlNzNkMzU3NmMzMjA4Y2RjMTJjMDg2NWI4MDExMzljZThhZTZjIGxlZ2FjeS10cnVuaworMTIxNTUgYWQ0OTdjYjVkMmRjMmY5ODlhNzRjMTMxZmYxMmI5ODk4MGVlOGU2NyBsZWdhY3ktdHJ1bmsKKzEyMTU2IDdkZGU0NTAxZjUzYWRhMzRkMTFlNjIwMjFkZWQyNTdhZWE4OTFiOWIgbGVnYWN5LXRydW5rCisxMjE1NyAyMzIzN2JjYjc3NGJmMmVmNjNmOWUyYzdjM2NhN2VmMjY5ZDkyY2Y2IGxlZ2FjeS10cnVuaworMTIxNTggMDRiMGEwZjI5ZjY1ZjMwYWE1NWRjNGMwNTU1MjczYWYwNjc3YjAzYSBsZWdhY3ktdHJ1bmsKKzEyMTU5IGEyMDZjNjFhODk1MDllNWQ0MWMxZDcxYTVmNzAxYzFjMDhmYzRmMWEgbGVnYWN5LXRydW5rCisxMjE2MCA0ODA4YThiNTdhZjNhYmJlNzc3NGEwNWJiYmMwZjE0NWM5MTg5NzVkIGxlZ2FjeS10cnVuaworMTIxNjEgOWJhN2Y1MGI4MjVhZDA4NTFjMzczODYwMGJhYmViMDM1MWUzYTJmZCBsZWdhY3ktdHJ1bmsKKzEyMTYyIDQ0NDk3MDJhMDk2YTRmZDc0N2M2OTI4YTU5Njk2ODE0ZGU3NDgxMGQgbGVnYWN5LXRydW5rCisxMjE2MyA0ZWVlMDYxZGFjNDRjYmNiNDVmNTMzYTUxMWI5YjhmNjRiYzg3Zjg4IGxlZ2FjeS10cnVuaworMTIxNjQgZTExZDc1MDA1YTVhOTY2MmNmMmU0NzdiMzU1MTM3OTBhZTU5N2MwMiBsZWdhY3ktdHJ1bmsKKzEyMTY1IDlkYTAxZTU4YTBiNTViYTk4ZjM2NGIyMTgxZjI4YmRiM2Y0Y2UwMGUgbGVnYWN5LXRydW5rCisxMjE2NiA5MTRmODNlN2ZhMGEwMjg5OWEzN2YyNDg2MGI2MmFiMTdhZDExOGQwIGxlZ2FjeS10cnVuaworMTIxNjcgNDA4NThhYjIzNTY4MjEzOWRhNDc5YzFlMzc1NDcyODFmOGRhNDRhNyBsZWdhY3ktdHJ1bmsKKzEyMTY4IDI3MmVjY2M1NzNlMjQwNmFmZWI5ZWVmY2JiZGJlNmEwMGQxMmZlNWMgbGVnYWN5LXRydW5rCisxMjE2OSAyMTRmMzA0NGQxOGMxMGNmNzFlOWMwMGUzY2YxYjZmMzFmMWVkYWY3IGxlZ2FjeS10cnVuaworMTIxNzAgMWQ0MGJjMjU3MDNhNTdjOWQ0YWViYzdlODFlMGU5YmY5ODI0YzgxNyBsZWdhY3ktdHJ1bmsKKzEyMTcxIGI0ODQzYTA3ZDU3OTFjMTMwMzZiMmVmMGMyZjAyOTJiZGI2NjBmY2EgbGVnYWN5LXRydW5rCisxMjE3MiA5OTE2ZmM4NWIyOGE1OWZiMjRmNzhhODI5ODQyZGJjMGU1YTU0NzQ2IGxlZ2FjeS10cnVuaworMTIxNzMgNTM3NjZmZWQ5ZjhjYjhhZWEwMjI0MzdhMzM3OTE1MTQ3M2RmMGY5YiBsZWdhY3ktdHJ1bmsKKzEyMTc0IGI3ODA0OWZlZmNlYjI5N2M2NjcyMGIxOTZmM2I3ODNhNmU3MDAzYWQgbGVnYWN5LXRydW5rCisxMjE3NSA1ZDRmMTM0NzE1MGVkZWE0NjUyZmE3M2Q1MDIxZjBkMDA2N2EzM2EyIGxlZ2FjeS10cnVuaworMTIxNzYgMDBmZWQ3Njk4MGJjN2Y3MjdlY2EyNGI5N2QzODJlNjViMDg4OTI5ZSBsZWdhY3ktdHJ1bmsKKzEyMTc3IGYzOWExOWExMjI5YWY2ZTFlNWU2NmY1MWUzMzBjOTVjZmU2OWQ2YzkgbGVnYWN5LXRydW5rCisxMjE3OCA4NzdkMjNiZDViZGMyZDMwNGZhMjFjMzQ1Yzk5YmRjZTFmYmYzMTFlIGxlZ2FjeS10cnVuaworMTIxNzkgOGI2MWUxMjczYjRiZGEzNGE3ZmI4OGIyYTc5MjcxYmI4Yjg1MzU5ZSBsZWdhY3ktdHJ1bmsKKzEyMTgwIDYxNTRkMmU2ODYwMzI4NjY5YjRmNjQ3NjUwYzYxYTEzNTIzOGE5ZGMgbGVnYWN5LXRydW5rCisxMjE4MSA1MzQ1ZmQxM2RlM2Q5ZDdhNGZmNTk5NjY3ODYwYTg5NTBmNmQ0OWQyIGxlZ2FjeS10cnVuaworMTIxODIgNWE2YmQ0M2UyZDVhNzU1NDQwYThjY2YwNzg2NzQ2OGQ5M2YxMWIwNiBsZWdhY3ktdHJ1bmsKKzEyMTgzIDEwOTU1YzM5YzBlN2I2YmU2OGQ2NGNlOGIxZWY5MTE0NjU0NzBkZWEgbGVnYWN5LXRydW5rCisxMjE4NCA5M2NiMWFhMjRmN2QxMDY5NzM4YmZmOTNlZTg1OGQ2Y2I0MzgyZDQyIGxlZ2FjeS10cnVuaworMTIxODUgYjBiODE1ZWVlZDJjNDkxYThlNThlYTA5YmRmYzJiMjExMmUzOTY3ZCBsZWdhY3ktdHJ1bmsKKzEyMTg2IGI4ODNlZjNiMmQxOTZiMmQ5YzhlMGI3ODcwNGM5NTEzMjA5ZDIzMWMgbGVnYWN5LXRydW5rCisxMjE4NyBlY2QxMTU0MmVhYmU1MTkzOTAzOWQ3OGMyNGIyMDM3YTFhMDMyNzE5IGxlZ2FjeS10cnVuaworMTIxODggMGEwNDM0ZWZlYmNmZWJjYTkwZjA1NjA1NjJiYjg2NDc1ODM2OTkyNSBsZWdhY3ktdHJ1bmsKKzEyMTg5IDMxNDg5Nzk5YzhjNjBhMzA5MjU1NThiYTQ5YTE2YzY3ODMyMzdlYWUgbGVnYWN5LXRydW5rCisxMjE5MCA4ZDNjMmE4MDgzNGNjMTBiZjEyMTg3ZjUwMWM1ZGYzYWJiMTFlZDc4IGxlZ2FjeS10cnVuaworMTIxOTEgNTM4OWM2ZTMwZTU0YjEzMDc1MGYwZjgxZjY5MzMwMzk0YzNiNWFjMSBsZWdhY3ktdHJ1bmsKKzEyMTkyIDI2MzY1NWM2YjY1NjcxODBkN2I4ZTNhYTE4NGNlMGRjZjE2MDk3OTEgbGVnYWN5LXRydW5rCisxMjE5MyA2MzczMjUyOWY2ZGY3ZTk3NWY3MTQ3ZDhhZmI1ZDRiYTcxYmIxZjQwIGxlZ2FjeS10cnVuaworMTIxOTQgN2E0ZWVlZDU0YjI0NTE0ZTBiMTEwNmVlZDYwZmQxZmU1N2I1MWEwYiBsZWdhY3ktdHJ1bmsKKzEyMTk1IDIyZjNhOGQ4MDNhNTE3ZWMyZDk2MWU1MTIzMTg5N2NjNTg4Zjc2MjkgbGVnYWN5LXRydW5rCisxMjE5NiA5M2M2NmFjNmFmMTg5NmQyNmFkNGE5YzZkZDkwMjJjMDJkYTA4N2ZiIGxlZ2FjeS10cnVuaworMTIxOTcgZjdlODY2ODRjZDRjMmQzNjQyZmE0Yjc5ZTQwNzExNjdhY2RhMWIzOSBsZWdhY3ktdHJ1bmsKKzEyMTk4IDk3M2MyMWRmMmQ2MDFiOWRmMTdmMTliMTIyMGY1ZmQxZjU5MDE5MTIgbGVnYWN5LXRydW5rCisxMjE5OSA5NzAxYzUwYzY5NDYwNzM4YTQ3ODMwNmEwYzg2YWMxYmQ1NzJlYzc0IGxlZ2FjeS10cnVuaworMTIyMDAgNTU1OTAyNTFjZjUyNzNiNjViMTNjYmRlNTljZmQ2NmY3YTk5MDY0MSBsZWdhY3ktdHJ1bmsKKzEyMjAxIDZiYTdiZDU2M2UzYmY3ZmE2YWVmYmM3YWZjZmY2OWE2MzdhMTA1ZTUgbGVnYWN5LXRydW5rCisxMjIwMiBiNWQxYTE2MjVjZDVkYjRmZmRjMGQyZmFjYWNmODI4NjMxMGM3Mzc1IGxlZ2FjeS10cnVuaworMTIyMDMgNDM5NDIxY2RhODllYTc2ZDY3M2MwMGNmZmJjY2Y0ZjQ5M2U4YzAzNCBsZWdhY3ktdHJ1bmsKKzEyMjA0IGMyMmRjMzAxYjM2YTgxZTJhZGRhNzM0NGE1NGNhMDRjZDVhMmM4ZmMgbGVnYWN5LXRydW5rCisxMjIwNSAxMjc3OTQ2MDU0ZThjNmUxNjJhZWNmMWVhMzE0NjRkYWRlZmNiNGVlIGxlZ2FjeS10cnVuaworMTIyMDYgZTBhNGZiMGFiYjc2OWRkZTE4MjUyM2EzMTFkYzM5NmFkZmM3MTFjYyBsZWdhY3ktdHJ1bmsKKzEyMjA3IGYzZjYwMjNmZWI3ODhkOTFhODE5NTc2MTQ5NThkMTNjNjdkMWM3NzMgbGVnYWN5LXRydW5rCisxMjIwOCBkN2RkNzFkMGQxODMxYTY4ZjEzYWIyYWM5Y2QwMTcwYmJmZjhmODkzIGxlZ2FjeS10cnVuaworMTIyMDkgZTc4YmRjY2QyMjRmZmM5MWVkZTg1Zjg3ZjhkZmNiNDQ5NGQ3Mzc4MCBsZWdhY3ktdHJ1bmsKKzEyMjEwIDJiY2RlMzQ3NDZkMWNmMGJkNDFjNDk2NmY3MWIxMzNjOWI0MDE0YWIgbGVnYWN5LXRydW5rCisxMjIxMSBhM2M5Y2UyOTg1ZGVlOTUxYzhiMjBlYjg4NGU2OTZjYWJjZTVmNDMyIGxlZ2FjeS10cnVuaworMTIyMTEgZjA4YzdhMmE1NmY4MDc0MWY1ZjE5MmZkMGViZTBiMDk2N2EyMDNjZiBsZWdhY3ktdHJ1bmsKKzEyMjEzIGNmNjU0ZWQ1OGZmMTZhMDhkYWRhYjhiNDg2Njc2ZjhhYjI3YjNmODMgbGVnYWN5LXRydW5rCisxMjIxNCBkMWRiN2Y2YWI3NTNjOWYzNDUyOWQ4NDk3ZDYwZTQwMjM4ZGY2NDZkIGxlZ2FjeS10cnVuaworMTIyMTUgOGIyNWJhMjQ5NDQ2NTJhNjBiZjIyNzI3ZjBiYmZjNWVhM2I4NjI4ZiBsZWdhY3ktdHJ1bmsKKzEyMjE2IDJhODk1NDNkZDNjYWIwZTg0YzhkZjZkOGU2MDcxZGMwMWU4MTVlNzQgbGVnYWN5LXRydW5rCisxMjIxNyA0ODJlNjNkNzljOWRmZWU0YTllZDM5MTMzOTRlZDdhMTY4NTUyNWNjIGxlZ2FjeS10cnVuaworMTIyMTggMzUxOWRlNDQwZjg5MmMyYzdlMTU5NjVhM2NkNWU3NzlhMjk1ZjUzYSBsZWdhY3ktdHJ1bmsKKzEyMjE5IDI0Y2E2NDEzNDU5NGFkN2YzMzZjZWYxYzcxZjRlYTFhOGZhZGIwNmUgbGVnYWN5LXRydW5rCisxMjIyMCA3MmI3NjFiOTQ4ZTdlOWFiNzkxY2MwM2U4OWMyZWU3NzhkZWYxYzgyIGxlZ2FjeS10cnVuaworMTIyMjEgMzk1NWY3ODdlOWExMWMxNGJjNDRhZTZlNTM0MjlhMGU5OGMzNTUwYiBsZWdhY3ktdHJ1bmsKKzEyMjIyIDA0ZTQ0YzYwNzZlOGYyZjJmMzUwOTIyOTQ1Zjg2ZGYxN2NmNjk2YWUgbGVnYWN5LXRydW5rCisxMjIyMyA1NmYzOGJmM2FmOWYyZDYzMzgyNDA5YjZiMTYyZTlkNjAxYjRjMjMyIGxlZ2FjeS10cnVuaworMTIyMjQgNGIxYjk0MzJiMjZiZmQ4ZjY3OWVkYjc0MTNlODJhOWUzYmIzMDdmNiBsZWdhY3ktdHJ1bmsKKzEyMjI1IDQzMzZhMTkwNTA1YjY2ZTI2MzJjZGE1YTFlYjQ3ZjMzOWRkZWNhZDQgbGVnYWN5LXRydW5rCisxMjIyNiBlYWFiOGZlYjdmYzA3NjRkODljYzJjNDVmMDMxZTBjNWM4ZWQ0ZTc3IGxlZ2FjeS10cnVuaworMTIyMjcgMmNjZjA0NWY1YTIxMWYxMDE0MDE2YzIwODNkOWM2MTZhYTdiZGI5MiBsZWdhY3ktdHJ1bmsKKzEyMjI4IDI2NDY4OTNjYjQ5OTM3NWFhZDAwY2Y5ZWE1NjhmN2IxYWYwYTBlOTkgbGVnYWN5LXRydW5rCisxMjIyOSA2ZjFjYTlkYzk1ZGFiMTc1MWQ0NWI2ZWQ3ZGM1NjY0NDgwNjRhOTA3IGxlZ2FjeS10cnVuaworMTIyMzAgNzJmNTA2MzZkZmVhMWU0NTgzZGNjZTM3YjVkZmZkNjk0N2M1NDgxOCBsZWdhY3ktdHJ1bmsKKzEyMjMxIDEwYWIyYzVmYmQ4ZWU3YzBkN2Y5YWUwMTk1YzlmNjBlOGE2YTY3ZWQgbGVnYWN5LXRydW5rCisxMjIzMiA4NWQ1YjVlY2VkOWVhOTk4NjMzOTBlNWE1M2YxODJlM2QwMTg2MGM5IGxlZ2FjeS10cnVuaworMTIyMzMgNDdkMmU0ZjcxMTQ3OGRkNWYwZTA3NTdmYzQ0NWI3ZDRmZWE1ZTA2ZSBsZWdhY3ktdHJ1bmsKKzEyMjM0IDJlOTkzMWY0NGVmNGY3ODYyY2IwODY0MzViZWMyMjZhYjNkN2Q0MGYgbGVnYWN5LXRydW5rCisxMjIzNSA0N2JiZDBiYThlOGEwNTlmMDlhNmExMTZiM2QxYWIzZjFiY2E3ZGFhIGxlZ2FjeS10cnVuaworMTIyMzYgMzQxNWQxM2Y4YmM4YzAzZDA5YWQ3MzU3OWQ4YjNlOGMzYmUxYzk1OCBsZWdhY3ktdHJ1bmsKKzEyMjM3IDlmY2M5MDJkNzQwZmFhZWE5NGY5MjUwM2QzYzc4OTlhZTAwZTkwMTQgbGVnYWN5LXRydW5rCisxMjIzOCBlNmI2NjJhOWI3MDk2MTE4OWI3NGM2N2U0OTY3MjMxMzc5MTVjZjYzIGxlZ2FjeS10cnVuaworMTIyMzkgZTA2ZWY4N2IzNGNjNGE4ODU4NjRlZDc2MDYwZmMxOGMzYTRhYzY5YSBsZWdhY3ktdHJ1bmsKKzEyMjQwIDA1ZmI0ZDk2NmM3M2ZmYWIwZGFhYjYwODk3MTk2OTcyYmNlYTAzMzYgbGVnYWN5LXRydW5rCisxMjI0MSAyNTA3ZTE1ZWNhNmI5MGM2YmVmMmEyZWQ5NWIxZDllZTFjNDZlOTdhIGxlZ2FjeS10cnVuaworMTIyNDIgMDk5NWE3YTYzNzgyYmJkMGE0ZmYwNjc1OTAxMmI4YmJmMWVjNDRmMSBsZWdhY3ktdHJ1bmsKKzEyMjQzIDg1YWIyODY0NDIwMTQxNDExMzZiNjUwMjQzMTZjOTAzOGQwODhiM2UgbGVnYWN5LXRydW5rCisxMjI0NCA2ZmM1OGQ3OWRhYzVkYzVkMTZlMmUwOGQ4YjYzMTIxOGY0N2U5ZDE4IGxlZ2FjeS10cnVuaworMTIyNDUgOTM0MmM2MGVhYWMwNzVhZDIzODAzN2RiODM2MTgzNjllNzQ4ZDg1MiBsZWdhY3ktdHJ1bmsKKzEyMjQ2IGQ2MzI4ZDc0YjU4MGVmZDkwNDUyNzZlZDYwNjRkMzhmMTA0YzQxNTcgbGVnYWN5LXRydW5rCisxMjI0NyBmY2U2YzExYzgwZmExZGU5YWI0MWQyZDQ5ZTE0OTgxMGMyZDQwNzBlIGxlZ2FjeS10cnVuaworMTIyNDggOTY3YWM1ZTg5MDdhY2E5NGM0NjIwNmQ1NTdmMTYwNDMyMDNkMzYwNCBsZWdhY3ktdHJ1bmsKKzEyMjQ5IDdjZWI5MmJhODZmNzY0OWVjMTU1YmQyMTc4Yzg2OTEyNzFiMTY1MzkgbGVnYWN5LXRydW5rCisxMjI1MCAwOGE5MzczODYwZTgzNmIxZmU2YzliNGUzNGNkNzEyMGFlYzIyMmY5IGxlZ2FjeS10cnVuaworMTIyNTEgZTQ1ZGY2ZjQ1NjA0Yjk1MzBjYzc0NmQyZWNjOTA5NDEzNWQ3NzJmYiBsZWdhY3ktdHJ1bmsKKzEyMjUyIDg4YWY4YTQyODU3ZDMxZjJiNmMyMGIwNTNmOTY0ZDhjZTRiZGU2YTEgbGVnYWN5LXRydW5rCisxMjI1MyA3NjYzY2Y5NWJkMGVhODYyNjgwMjVkZWE2ZDRlNjZlZmU2YjU2MzllIGxlZ2FjeS10cnVuaworMTIyNTQgMzBmMzYzMGI3N2NhOTk0NWNmMzQzNWZkOTU5MjRmMzM2NTQyMTU4MiBsZWdhY3ktdHJ1bmsKKzEyMjU1IDU4NmQxYjA4NjE0ZTI2MTdkYzMwZjhmYzU4YWFiNTkyZjE3ODdlNWIgbGVnYWN5LXRydW5rCisxMjI1NiBjNzA4ZDcwYjEzOWUyMTVlNmNmYjBkZTZhYWVmYmRiMjU1ZTQ5YjgxIGxlZ2FjeS10cnVuaworMTIyNTcgY2QyZTA1ZGFlNGMyOTVmYTRmYWM3YmExNWMwNTdiNmVlNGUwNDkwNiBsZWdhY3ktdHJ1bmsKKzEyMjU4IDllNmY1YmFjMTVhYzI0YTNhMTcwZGE1NGVkYjA2MzU3YzkxY2EzMjUgbGVnYWN5LXRydW5rCisxMjI1OSAzZTdjNDM0NTNlNWU5OTljNzExMTViZmMyZGQ0MTFhYzUzODdmYTFjIGxlZ2FjeS10cnVuaworMTIyNjAgY2ZiOTBkYjM5OTU4YjI0YTNkZDY4YTRiNWE1OTkzMzA4NjU5ZTVmNSBsZWdhY3ktdHJ1bmsKKzEyMjYxIGVkNTIzZWEwNzNkYmEwNDlmOGFmY2ZjMTAxNDQ0YTZjMTljNzM4YjkgbGVnYWN5LXRydW5rCisxMjI2MiAxNmM5YTcxNDg4MGZjMDBmMDhiNjI1N2ZlNzE0ZGRmZDFlMDkyN2NjIGxlZ2FjeS10cnVuaworMTIyNjMgZjc1NTJkZDIzNmIwYWQ2MjdiZmZiMTg2MTMxM2NjMjdlNWNkZmIzZCBsZWdhY3ktdHJ1bmsKKzEyMjY0IDYzMWQ5NmQzY2Y2NjBmZWYzMDBiN2QxMDkxNGMyYjI3ZDBhYzQ1N2IgbGVnYWN5LXRydW5rCisxMjI2NSAwZDg4NzMzNDA4NDYyMjU2ZWE2NTIyNDBlYzRmZDMyOWU2YTFmZDUxIGxlZ2FjeS10cnVuaworMTIyNjYgNjFkZGU3ZWJmYTk1MTY4OGE4NGIwNTkwMGEwNTYyM2JmOTZjM2JmZCBsZWdhY3ktdHJ1bmsKKzEyMjY3IDRhMDdkNjk4NjRmNTc1MTIyMjFmMjc1ZmJiMWE2MWRjMTY5ZWQxNTkgbGVnYWN5LXRydW5rCisxMjI2OCBlMTUwOGY3MmM2MTBiYWQyMTA1YmRmYjgzMzg5ZDZhMGE2YWJjOWM4IGxlZ2FjeS10cnVuaworMTIyNjkgODU0N2QyNzdhMjJmOTYwYzVkYmM5OGJiNjYyOWNhNGNmMzE5MWI0YyBsZWdhY3ktdHJ1bmsKKzEyMjcwIGVhZjkzZDViYjQ2Y2Y2NWI5OWNlODY0MmU2YzUyNDNmMmE5MTFiMzQgbGVnYWN5LXRydW5rCisxMjI3MSA4ODEzNjI3YWFjNDY2YTAxZmQxOTZjNWE1OWE2M2QxYWNmOWNlNDBhIGxlZ2FjeS10cnVuaworMTIyNzIgZTIwOGIyNzRlYjgwOGM2YmQzZTE0MjVlNTI4NGY1NzY4ZjNkNjM2MyBsZWdhY3ktdHJ1bmsKKzEyMjczIDc3MGI0MGZlZDVmN2FiMTA2YzY1MWE3YmFlMGJhOTM5Y2NiOTMxZmUgbGVnYWN5LXRydW5rCisxMjI3NCBiMTE2YWZiODE3MzI4ZWMyZmRkMGQwODM4YWRiZTY0ZmMzZTA4MTUxIGxlZ2FjeS10cnVuaworMTIyNzUgNzcwZDg5NGUyMGJkOGQyM2M5ZTczZjVmMDRlZmQzZTQ5ZDU3ZmNmNyBsZWdhY3ktdHJ1bmsKKzEyMjc2IDhiMDg2MzQ5YTQ4OGNiMWExYmVhZDY0ZmY3YzkwZTRiMDMyOGQzOTcgbGVnYWN5LXRydW5rCisxMjI3NyBkYTk0NDY3OGIwMGUwYjhmMzMxYmM5Y2NjMzUxMTJjYTM1NDkyZTYxIGxlZ2FjeS10cnVuaworMTIyNzggYzQ2OTIwNDZiNDgyMDFiZmY4Y2VjMzIzMjlhY2EzMzJkOGRiZGIwMyBsZWdhY3ktdHJ1bmsKKzEyMjc5IDRiMThmOGVhYTE2YjJiZjhiYjM4NDc3MDExNGFmNDFjY2YwY2MyM2EgbGVnYWN5LXRydW5rCisxMjI4MCBjOTFjZTQ5YjQwNzUwODlhZDFkYzdkZTJiZTFkYzI4M2VjOWIzZTlmIGxlZ2FjeS10cnVuaworMTIyODEgNjY4MGZhY2I0ZDViNWUyN2I5ZGU5OTk2YmM3ZDhkYTljYjlhNTMyMCBsZWdhY3ktdHJ1bmsKKzEyMjgyIGJlMjRiNWI5MGRlY2Q2M2RhNWMwNWFiOGM1M2RiZGVjM2U0ZjhlYmYgbGVnYWN5LXRydW5rCisxMjI4MyA4ZGJhMDgyMjNkZWJhMTY0ZjA0YTk4ZmY1ZmJhODVlMDhiNGIxMjVlIGxlZ2FjeS10cnVuaworMTIyODQgZmFjYjQ1N2I0ZDMyZWQ2ZTIyNGY3Nzc4MzZhNDM1MTA4MTczNjQxOSBsZWdhY3ktdHJ1bmsKKzEyMjg1IDQwZjcyM2FjMjZlODI4MDczNzQ3MzNiNGNiMzEyNWY5MjBkMmI4YzcgbGVnYWN5LXRydW5rCisxMjI4NiAxYmVhZjkxNzkxMjViMjRhZjk5YjEyNDNhOTI3ZWNhMGY3ODM3Y2Y3IGxlZ2FjeS10cnVuaworMTIyODcgZWNiOTEyYmU0MzE4YTYzYzUyM2U0MDlmNzljOWViYmZkMjE5NTM1YiBsZWdhY3ktdHJ1bmsKKzEyMjg4IDA4ZGZiZWUwYTMyYTEzOTdmYjFiMWVhNmQ1ZWQzMTI5NWI0YjFjMjcgbGVnYWN5LXRydW5rCisxMjI4OSA3Y2RjZGY4Njg2YjNjOTFiN2QwM2Y5ZTg2MTM3NWQ2MDU2ZmUzNGMwIGxlZ2FjeS10cnVuaworMTIyOTAgOWU2MTE2NmVjZGQ4MWQ1YjA4MDk3MDU3MDBjYjFiZmYzN2M4NjUzNSBsZWdhY3ktdHJ1bmsKKzEyMjkxIGZlNzAxOTY5YmMyY2Y2Yjc5MTVkNTlhY2E3NTRkMjI0NGE0OTQ2YmEgbGVnYWN5LXRydW5rCisxMjI5MiA3MzdkMDVhOWJiNWU4YTlhZjk0Y2Q4NTY5ZWNkMDJiNjk3MWJlMDRkIGxlZ2FjeS10cnVuaworMTIyOTMgMjA5ZWVkNmEyZWY2NThlZDM4Y2JlMmMyMWFmNmFmMGY1MWM2MjgwZSBsZWdhY3ktdHJ1bmsKKzEyMjk0IDgzNmY5NDA4Yzk1NjVhYTU5YzgwMThkNTI5ZGY1Y2MyODkzZDNjYjUgbGVnYWN5LXRydW5rCisxMjI5NSA3ZWY1YTE1MjBhZTUzZDAxMTVlZmM3YzhjZGEyNDJjMjFmZDY2MmIxIGxlZ2FjeS10cnVuaworMTIyOTYgZGIyOTgyZmI2M2MwNGQ1ZDk0MzM5M2Y0ZWJkYmY4NzZmMmJiNGU2YiBsZWdhY3ktdHJ1bmsKKzEyMjk3IDljZmM1M2U1OTk2ZTBhYTBjOGM1YTQ2OWZiODlmMWEwYzYwNTkzNmUgbGVnYWN5LXRydW5rCisxMjI5OCA5ZDAyYWZhMDIyYzUyZmQ3NGU5NDRhNTczYTc0OWIyZmZlZWJiYjdhIGxlZ2FjeS10cnVuaworMTIyOTkgYzFlYWIxZGM3NTM2M2EzNDExOTFiZDU2NDg0MTAwNjJmNDc5NjM5ZCBsZWdhY3ktdHJ1bmsKKzEyMzAwIDkyOGM5M2QyYzEwNzFkYjlkMGM2ZGRlYmIzMDc1ZDVlMTFlZGM2MjggbGVnYWN5LXRydW5rCisxMjMwMSA1NjY4ZjhhM2E0MzA0ZmJjMTBhNDhlM2QxMTI2ODE4MjFjNWZjZTRkIGxlZ2FjeS10cnVuaworMTIzMDIgODFiM2U2Y2E0YTI5YWZiYjEzOGI2MjRjNzE5YTNmMTgzOWJkYzE4YSBsZWdhY3ktdHJ1bmsKKzEyMzAzIDEwMjcwMTE1Y2Q0YjgwNWNmZjM3ZTEzNjUyMzU5YzViYTA5NjA5NzggbGVnYWN5LXRydW5rCisxMjMwNCA4ZDZmODRjNTk0OGMyODUxYTAwMGRmNTMwZjY3M2Q3NWFlMWRhOWU5IGxlZ2FjeS10cnVuaworMTIzMDUgYTlhYWMwMDJlODQzNWJhMmI2NmE5YWRkNmJiMDM3YjJmODBhZWNiZSBsZWdhY3ktdHJ1bmsKKzEyMzA2IDQxNWI5ODQxMTcwN2YxMjIyZmYyYWMzMjYwMmM0OTg4MDUyN2FiZTkgbGVnYWN5LXRydW5rCisxMjMwNyAwYmZhZmYxMWM1NzM5OTc2YmZhYTQ3MTI5NTIwMmM1MzY0ODNiM2UxIGxlZ2FjeS10cnVuaworMTIzMDggOTNkNzAzMDhiZTE3MWJiNThhNDhhOWQ5ZmQzZmFjZjUzM2MwMDM1ZiBsZWdhY3ktdHJ1bmsKKzEyMzA5IGY5ODFjOWQzNmM4YWY4NTY1MzU2NTQ5ZmUwYWZiM2NkNzU5MjZiMDggbGVnYWN5LXRydW5rCisxMjMxMCAxZWFlYmFlYWEyMmI5YTJhMTYwOTRiN2ZiNWI4NGQ1MGVhZDEwNWQxIGxlZ2FjeS10cnVuaworMTIzMTEgMzBlZTg2MTcyMTY4YTMxYzEzYjQ0ZDNkYzg4OTNmZTk0NDQ0OGRiNiBsZWdhY3ktdHJ1bmsKKzEyMzEyIDg3MDEwOWE0NGUwZWJlMThhMGJiNmI3ZWE2ZjUwMDhkZjI3NjVjMGMgbGVnYWN5LXRydW5rCisxMjMxMyA0ZDA0NDAwNTYxMWU0MGZlYzM2OGEzOWNhMzliMDA0MTNkZWE5NWQyIGxlZ2FjeS10cnVuaworMTIzMTQgNDAxMGU1ZDI0M2Q2NmI4YjIxZWFiNTE0NzMwMzNhY2RiNzZmN2FiMiBsZWdhY3ktdHJ1bmsKKzEyMzE1IDE0MjBmODQwMDkyNDliODZkMTEzNjhkZTRlNGNiYmQyNTNkODc4Y2UgbGVnYWN5LXRydW5rCisxMjMxNiA2NjM3MzcyN2ZhYzg1YjI4MGJlNWJlZDVkY2VlZTkzMzI2OWI5YmNhIGxlZ2FjeS10cnVuaworMTIzMTcgYTNiMjUyNWM5MzcwNDA0Mjk5MTM5NjgxYmQ1M2ZlZDA1NzM4YzU2MCBsZWdhY3ktdHJ1bmsKKzEyMzE4IGJkMWNlNDEyMGU2Zjk1NDZkZWRmODVjYTk3ZThlY2YxYTVhYzIzODggbGVnYWN5LXRydW5rCisxMjMxOSA0NTdjYjg2OGMyNWU0NWE0MWI3YWQyZjNlYzQzM2YwMDg1NGQ0MGU2IGxlZ2FjeS10cnVuaworMTIzMjEgMjhkM2E5ZmNiNTc3ZGZjODU2MmYxODQ5YjRkZGM0ZTRiNjE4OWNhNSBsZWdhY3ktdHJ1bmsKKzEyMzIyIDE3ZTRkODE5NDliOWYxZWMwMzk0YzYxMDZhN2Y5Mjc0OWViMWM0MjIgbGVnYWN5LXRydW5rCisxMjMyMyBiYTYzYzZmNjAyNWI0ZjIzNWIxMGEwMjFhNzQ4NmJmOTJkZjlhZWRhIGxlZ2FjeS10cnVuaworMTIzMjQgNGU5NTA2NWE3MmExYTZmMmQ3M2M5OGU5NjBmMDQyZjUyZTgzNjA4NSBsZWdhY3ktdHJ1bmsKKzEyMzI1IDViZGY5MTY1MTM3NzI2ZWI3N2JlYjZlNDNiMzkxOWQyZDA5MWQ4MmIgbGVnYWN5LXRydW5rCisxMjMyNiBjZTBjMTdjYzc3Y2U1MGZlODM3MTZiZTdjMWU1ODRiMjZiNDhiOGFkIGxlZ2FjeS10cnVuaworMTIzMjcgZWY5N2I0ZjZkMTg3NWZjNmViNTAwYzM1MTM4YzUyMTNmOWYyMTI4NCBsZWdhY3ktdHJ1bmsKKzEyMzI4IDgwMTUwZjljOGM0MWZjZTlkYTJmYzEzYjNmMDcxOTkwOTBmZjNiZjcgbGVnYWN5LXRydW5rCisxMjMyOSAxMzk5YmVmN2FmNjEzNTVkNmVlYmVlMzZhNjE0ODc0MGNjYjNkOTMwIGxlZ2FjeS10cnVuaworMTIzMzAgYWI1NTY5OGJmZjFjYTlhOGEwYjExODBiYTYzOTkyZDhjOWE5MmNkYiBsZWdhY3ktdHJ1bmsKKzEyMzMxIDFkYWJjNzNiN2IwYmNjODJiZGNkYzZhOTdhMTE1NjFhNjAyYTUzNjQgbGVnYWN5LXRydW5rCisxMjMzMiA2MWNhZmE5N2ViNzdhZjA2NjliNzJiN2Y3ZWZmMmVhMmU5MGRhM2RlIGxlZ2FjeS10cnVuaworMTIzMzMgZTVjYjE1N2ZmMDkzMWZmMDVlMzZiZjNlOWJjNGViYzRhZjNjMzkyNSBsZWdhY3ktdHJ1bmsKKzEyMzM0IDgyNDM5ZDk5ODdiMmNmNjdhOTAxYzcxZmViYzdiZTVmZjZhNDdmMTkgbGVnYWN5LXRydW5rCisxMjMzNSBkZDNjN2ZjMGEzNGQ0YjljZmY0OGZjYzU5ZTY0MWQwYTE4YmJmMWEwIGxlZ2FjeS10cnVuaworMTIzMzYgYjA4MjFiMGJjY2YwZmQ1ZTQ0ZDM2ZWYyODBlMWMwYjA4OTU2NTI4NSBsZWdhY3ktdHJ1bmsKKzEyMzM3IGY3NGRlNzdmMDUxMGVmM2FhOWUzNjFkMGI5NzViOWQ2MTgyYmJhNjAgbGVnYWN5LXRydW5rCisxMjMzOCAxM2QwZjYyOGM1NzIyOTBmMmM0ZDg4MTE0MjA1NDZhYTY4N2FhMTZlIGxlZ2FjeS10cnVuaworMTIzMzkgYjhmZWRiMjI2ZjA5YzEwODRiYWI2ZWJhZmNjMDIzNjAyZGY4NGU1YiBsZWdhY3ktdHJ1bmsKKzEyMzQwIGFhYjBmMzQ2M2FmMDZiYzA1YzdiNjE1Y2YxNTYwM2EzNmE3M2I1MDIgbGVnYWN5LXRydW5rCisxMjM0MSBkZGYzZDU1MjIwYjkwZDgyMTU1Y2I1MjQ5YWQ3MDMyY2JlYzQ2MTk0IGxlZ2FjeS10cnVuaworMTIzNDIgODZjYjc3ZmIxOWU4OGFkZjhkMzA2ZDcwZTkyYTllYjJiN2VlNGE5NiBsZWdhY3ktdHJ1bmsKKzEyMzQzIGYzNGJiNDdhYWZhY2FjYWQ0MzE3YjY0OGFiOTMxZDM3YWY3Njc3OGEgbGVnYWN5LXRydW5rCisxMjM0NCA0OTY3MDAzNzRmYzQzOGNiMzQ3MGY5NDBmNzM4NzYyNDk5Y2ExNmUxIGxlZ2FjeS10cnVuaworMTIzNDUgOWEyOTNlNzdjNTU0NmNkN2ExOWYxZGIwZDI1MWFmZjM2NWJhOTk4YiBsZWdhY3ktdHJ1bmsKKzEyMzQ2IGQ2NGNlMjk4MDFjYjE3MDlhZDA2YmE4ZmZkM2UwZTVjM2ZjNDNjZGMgbGVnYWN5LXRydW5rCisxMjM0NyA1YmFjNTZmZmNjYThmODAxNGIxNWM5MzMyNDNiZTVkZTU1NWFhMmM3IGxlZ2FjeS10cnVuaworMTIzNDggZTE5Y2Q4ZWMyMGEyZThmZTczYzZhNjA1MDI4NDRmY2Y4MmI4M2U2YiBsZWdhY3ktdHJ1bmsKKzEyMzQ5IDVlOWVmOWQ4NTc1YmJjYjU3NTQ5YzdmY2EwNTMyNGU3ZDc2NTBjZTggbGVnYWN5LXRydW5rCisxMjM1MCBlYzgwYWQyNWNhODYxMzI4YWY1MDY4MzllOTg1OGYxYjYxMWFkNDUzIGxlZ2FjeS10cnVuaworMTIzNTEgNmM2ZWUzYmIzZmNjMjJkY2RlYjA0NzgzNjEzNjYyMjE2M2Y2YjNmNyBsZWdhY3ktdHJ1bmsKKzEyMzUyIDAxNDc3YjFhNzRmOWMxYzU2NzQxOThkYjlkZGQ1NDg4MjkzZTg4MDEgbGVnYWN5LXRydW5rCisxMjM1MyBiNTMwYmM2MmUzYjk5MWI4MTNkNDBmY2I3ZGZhMzExOWIyMDlkNGMzIGxlZ2FjeS10cnVuaworMTIzNTQgZTZjZDY4M2EyMmY4MTg5ODE3YjA3NDAxOWUzNjNjM2ZhMTRkN2NkNCBsZWdhY3ktdHJ1bmsKKzEyMzU1IDMwYzFjNDBjZDgwZmQzNjlmYzUzZmY4MzBiNzQyYzIyNjM3ZThkYjUgbGVnYWN5LXRydW5rCisxMjM1NiAxZThmZjhhODc5MmVmN2M5OGNjMjcxN2I0NmYzZjk5ZjVlYmE4M2NjIGxlZ2FjeS10cnVuaworMTIzNTcgY2RiNzcyYWFiYmEyNWQ1MDNiZmU5ODU3NDA0N2E4NWM4YWEwY2JhOSBsZWdhY3ktdHJ1bmsKKzEyMzU5IDYwNWVhZjhjYzZkMGVjZWRhMjE3NjgyNmNmMDg0NDRjMzcwZmM2MmMgbGVnYWN5LXRydW5rCisxMjM2MCBhMTU4NWY2OTI1NWRhMDBkMGUxZTQ1OWI2ZGFmYTcwMThmNDgzNTUzIGxlZ2FjeS10cnVuaworMTIzNjEgNTFlODY4ZWYzYjMxZTVhMTk4ZGJmMmY0YmMwZjVmOTU0MjIzOThkMiBsZWdhY3ktdHJ1bmsKKzEyMzYyIGI5M2MzOTBmZDI1ZDVmMTRkZmViNzU0NjM5Zjk4MTMzZmU3N2Y3ZmUgbGVnYWN5LXRydW5rCisxMjM2MyBhN2QxY2Y5NWRhZGM1OWU2NDk0NzkxOGJhMjlhNDRjZWE4ZWZkN2I1IGxlZ2FjeS10cnVuaworMTIzNjQgOGE2NTM2YzFhMGE0NjI2ODA2MTIzNWExZjQ0MDM2N2NhZWM3Y2I5YSBsZWdhY3ktdHJ1bmsKKzEyMzY1IDYwZjQyNTg2ODY2ZWFmMjUzNWY1YjI0YzEwMjkwYzg1YTg1MmI1NGUgbGVnYWN5LXRydW5rCisxMjM2NiAwYWFlYTQ4OTAyZTQzYjI3NjA3MzQ4MjExOGQ1OTE5ZjgxYTQxYTc5IGxlZ2FjeS10cnVuaworMTIzNjcgZjc3Yjk0MWEwZjkzNmRlM2JkMDFmZjczNzEzMzM2NWE3YzdkZmNkMiBsZWdhY3ktdHJ1bmsKKzEyMzY5IGM5NWZmZjhmMTgwYThkN2NjODZlMWNmZGVlOWNlM2UwODkzM2RiODIgbGVnYWN5LXRydW5rCisxMjM3MCBhNThmMzYzNTJjNGYzZmVkY2MzMTRjNzJmMGJiM2I3MjA5ZDQ2MmFhIGxlZ2FjeS10cnVuaworMTIzNzEgMzNjNGJhNzc3YTNhN2QxY2EyMjI0MzM1MjUwODQ5ZTJlZjcwMTQwNCBsZWdhY3ktdHJ1bmsKKzEyMzcyIGVlMzZlMWYxMzBjY2JiNzlmN2ViOTNlZjdlYTUyZTQ5MzM1NmExNjQgbGVnYWN5LXRydW5rCisxMjM3MyBlM2E3OWY5M2QxZDNlNThkOTE0MjllOWIxOGFkOTA3ZjllZGY3YTU0IGxlZ2FjeS10cnVuaworMTIzNzQgZjM1MmVlYTY4MzczNDkzNWM2YTdkNDY3MTI1NTZmYjE1MmQ0ZjBhYyBsZWdhY3ktdHJ1bmsKKzEyMzc1IDlkYTQyNDkzNWY3ODY3Mzg2ODcxOGViMjY3NGMyZjdkZDFkYTQ4ZmYgbGVnYWN5LXRydW5rCisxMjM3NiAyYWIxODk1ODVkMjM4NjU4YzkzZDYzM2Q0ZGM3ZDZlZTJmN2MzYmIxIGxlZ2FjeS10cnVuaworMTIzNzcgNzc4NjI5Nzg0N2FjYTBhNjBjM2E4OGI2MmM3YTQyM2FiNWExYTAzZCBsZWdhY3ktdHJ1bmsKKzEyMzc4IGY3OGZkOWI2NzI4NGFkYzRjYWVmNGUwNTQ4ZDMxZjc4N2E4MDkxYTUgbGVnYWN5LXRydW5rCisxMjM3OSAxYWMzNDg1ZjllM2UzNjc2YjJmZThjZDg3NjUzMWZkZWQ4ODM5OGZlIGxlZ2FjeS10cnVuaworMTIzODAgZTE0ZmVlZTRjNDU2YmM4NmUzZTI5YmE0OGY2MTEwZDAxODBkY2RkMSBsZWdhY3ktdHJ1bmsKKzEyMzgxIGIwZWRjODkyZmM3ODJlOTBiMzdjODkzNzZiNTNmMGQzZjMwM2E0N2IgbGVnYWN5LXRydW5rCisxMjM4MiA2NTkzN2ZmNzE4ZGVmYzVkYWUyOWM3NjJkN2EyMjk2ZmNjZDM5Mjg2IGxlZ2FjeS10cnVuaworMTIzODMgZGU0MWU4ZDgyMTFkZDM1ZGI2YmZhMjM5MTA0YzdjOWFkNzVkZDg4NyBsZWdhY3ktdHJ1bmsKKzEyMzg0IDM1ODljMGU1NmVmMjUxNjYxZDMyNTAyN2NlNjA4OGU3YThiYTZiODkgbGVnYWN5LXRydW5rCisxMjM4NSA3MTk1ZWMyOTZiM2Q5NDQwMzQyZmI4YTc4ODgxNGRiZTEwYmUyMWQwIGxlZ2FjeS10cnVuaworMTIzODYgMTRkY2JiMzRiOWRkM2FlMzFmMzc0MGI1MTVkZmNlYTNkZmVjM2JjOSBsZWdhY3ktdHJ1bmsKKzEyMzg3IDAzMGVlNTBiZDhkMWI0ODU4MDg4NjQzMmM1YWEyNTU4ZDM3MGVjZTMgbGVnYWN5LXRydW5rCisxMjM4OCBmYWU2ZDI0Yjg5N2JjZTY0YWJkOTY3OTg2NmNlYjQ0MGIzMjNkNjI2IGxlZ2FjeS10cnVuaworMTIzODkgYWU5MDhlZjkxY2YwY2M1Njk4ZjFhOGFhMTczZGU4M2UwNmYzZjQwOSBsZWdhY3ktdHJ1bmsKKzEyMzkwIGRkYjgzYjI1MjI2ZWI3MDNiZjAwMDBjYzJiMzI5NGMwZWFkNGEwMDIgbGVnYWN5LXRydW5rCisxMjM5MSA5ZjEzZDczODBiZjg5ODMzMjE5NGJlZjIyMmVhN2M0MjkzYmIzMmExIGxlZ2FjeS10cnVuaworMTIzOTIgMjkxYzJkMGE5NjgzYzRjOGU0Yjg5N2ExOTNlYjdjZWRkNzIyNTcxMCBsZWdhY3ktdHJ1bmsKKzEyMzkzIDViZDZkY2YxNmQ0MWFiZmFiMDI5N2IxY2QxM2UwNWM4MmJhZGUzYTQgbGVnYWN5LXRydW5rCisxMjM5NCBiM2ZiODQxMGY2YWU5OTI1YjliNzJmM2MwNmJlY2QzZTAwZTBjZTRjIGxlZ2FjeS10cnVuaworMTIzOTUgN2UyZTUzZTc0OGM4NTg1YmJlYTlhZGYzNTU3YzEzNGNhMjg0Yjg0ZSBsZWdhY3ktdHJ1bmsKKzEyMzk2IDRkODZiNWE1YmY5ZTI0YTg5MjEzYjMwY2ZkOTNjOTMyMDcyMjhmMDkgbGVnYWN5LXRydW5rCisxMjM5NyBhMmQzMzdiMmUyMWJhNGJmNGRlNDEzNzU2MTE5NjM4YmFlZTQ3ZjJlIGxlZ2FjeS10cnVuaworMTIzOTggZjg4ZDE0YWRlZDc3MDQwYWZkZWViY2VlZmQyOWVkZmNkNTNlYjUzNCBsZWdhY3ktdHJ1bmsKKzEyMzk5IDdiZGVmNGJlZGQ1Y2U2Mjg4MTIxNWFhY2FjNjMwMmJhOTAwOTViOWYgbGVnYWN5LXRydW5rCisxMjQwMCA5MmFlMTE1NTczYWYyOWJlZjA0NmY2NjkxMGNlZGU1NGYxODUyYjI1IGxlZ2FjeS10cnVuaworMTI0MDEgNWFkMWEzNWY1NDBjNjU5MGJlMjJlOTAwOGE5MTEwNjUxMTM4MTNhOSBsZWdhY3ktdHJ1bmsKKzEyNDAyIGJhYzk2NTU1MmY3ZTZjNGRmOTRlMzYyMTQ4MWRkYTJiNDlkM2E2ZTUgbGVnYWN5LXRydW5rCisxMjQwMyA2OTUxMTNjNjUwYmI1OTYyYmEyNDdlZTNiMWZhMzQwMjM3OTNiMjQ2IGxlZ2FjeS10cnVuaworMTI0MDQgN2FhNTE1MzIwMDZhOWUzMzhjZDE2OTllZDZmYmRhOTg5NWQ1YmEyNSBsZWdhY3ktdHJ1bmsKKzEyNDA1IDFjNDY5NzA4MGQwNzE5YWQwZWQ0ZDRmODQ3ZGY1YjZiZTUyN2NmMTggbGVnYWN5LXRydW5rCisxMjQwNiBkOTVhZmU4N2RiNGRjYWI0MjQwYzIzZGU0YzI4NzZmMzMwMWVjMzkzIGxlZ2FjeS10cnVuaworMTI0MDcgNmNmMDFlYWIwNWEzMmFhYmMwOWVkMjNjZjExOWY5ODJiMmQ1NmFmNSBsZWdhY3ktdHJ1bmsKKzEyNDA4IDc4MDU5Y2YwNjdkZWZiYTBlZWUwYTViYmUxMDkyYzYyMDQ2YWE0NWIgbGVnYWN5LXRydW5rCisxMjQwOSAxMTQxNGYwMjNhZDBhMTMzMzEyNGI2YzU5NWJiYjFhYTliMzIwMzcxIGxlZ2FjeS10cnVuaworMTI0MTAgYThhMDcxOTk2YTczZDk3ZmIzMDhhYTQ3YjgxYzBkOTQ1OTIyYzlmMyBsZWdhY3ktdHJ1bmsKKzEyNDExIDM3YzNhZmZiMDViYTIzZWY2ODkwMDdkZDllNjk5OTBlMGI5MGM4OWEgbGVnYWN5LXRydW5rCisxMjQxMiAxOGMwNmQzOWNlMmMyYTg3YzE1Y2Q5NTIwOTk3ZGM2ZTQ0ZjgyYzJjIGxlZ2FjeS10cnVuaworMTI0MTMgMjBkOThjYTNkMzJmYWJhYzBmY2YzYjNiNGY4YTY3N2ExMjVmZjAyOSBsZWdhY3ktdHJ1bmsKKzEyNDE0IDkwMzQ0YzI2MWYyNDUwZjU3ZmIwZjBhZTAyZmIwMjBlMGQ4ZGMyNzEgbGVnYWN5LXRydW5rCisxMjQxNSBiNzRmNTVlN2QyMDhmNzA3NTQwZjQyMzY1YmZiNWZkYThmMjJjYjNiIGxlZ2FjeS10cnVuaworMTI0MTYgOWUyNTU1ZWRjOTRmNDg4N2UwMzY1YWMwYzEyNzI1ODBhY2ZiNjMxOSBsZWdhY3ktdHJ1bmsKKzEyNDE3IDI0ODYxNmQzZWQxMmNkYzllMWM1YmZlY2YzOGUyZjcyZDk2Zjg1YzQgbGVnYWN5LXRydW5rCisxMjQxOCA5YTdlNzhlOGJkZmEyOTIyMzcxNjQ1MTE5YThiMzAyNjg4NzI5ZDgwIGxlZ2FjeS10cnVuaworMTI0MTkgMjg2ODU0NzcxYjExOTExZjhhODUyNzEzYmQwODM4N2MxMzQ3YzBjNiBsZWdhY3ktdHJ1bmsKKzEyNDIwIDM3YWE4NGQyNzhjNTU5OTg0ZjNiZjY1MjEwYmE2OWYyY2M5NWY2OGMgbGVnYWN5LXRydW5rCisxMjQyMSBhNzgxMDAzNzA1MTVjZDEzZmFiZTRjMzU2ZTRmMGY4OWExN2ZmZGMyIGxlZ2FjeS10cnVuaworMTI0MjIgNjMxMjQ4YzljNjJlMTYyMWZmOTVkNDM2Mjg5Y2I0NmM4N2RlNWVkOSBsZWdhY3ktdHJ1bmsKKzEyNDIzIDFhNzk5ZDFkNGI1YTZlMTljMzhlZDE1ZGRmZDM4ODEzZmVlNjEyOTAgbGVnYWN5LXRydW5rCisxMjQyNCA2YzEwNzcyODQwMDFkNjExZDkwNTU0NjAxZDI2NjM2MzhmMmEyY2Q5IGxlZ2FjeS10cnVuaworMTI0MjUgNzZiZGFkMjNmY2RiOGE3NWVlYjI2ZmQyMmNhODY3YzVlMjk0NTkxYiBsZWdhY3ktdHJ1bmsKKzEyNDI2IDViMTc3ZDUxYmEyNzU4MTNhOTEyMzJjZmJmMmJmOGExYjIxOTlkYjAgbGVnYWN5LXRydW5rCisxMjQyNyBhNThkOGU0NGNlMzJmZDQ2NzQwNTA1ZGI3YmIyOGI0Yzk5ZDBhYTBlIGxlZ2FjeS10cnVuaworMTI0MjggMDQ1NTQwMjY3N2E4YWRmMWM3ODQzMTE2ZmE5NzlmZGE3MTQ0ODUwMCBsZWdhY3ktdHJ1bmsKKzEyNDI5IDM1ZjU2ODQ4MDc2NGFmZmIzOTZkYTUwNjVhNjk5YWM5ZjAyMDcyNzEgbGVnYWN5LXRydW5rCisxMjQzMCA0YmRmZTVkODBhNmY1YjkyM2I1ZGJmYWU4NTcyODk3ZDE5OGFkZjViIGxlZ2FjeS10cnVuaworMTI0MzEgNWY0ZDMyYjFhNjU4M2ZmYmYzY2RmMTk4MjlmMzdiZDA5ZmJmMmNhYSBsZWdhY3ktdHJ1bmsKKzEyNDMyIGY4NjdlMTNkYTU3NGNlN2JkZWEwNDI0YWFkZjY0YTcyMzhkODdjYzEgbGVnYWN5LXRydW5rCisxMjQzMyAwMGZjMThhYzZhZWI4ZTdmMzI0NzYxNGFkNmJlYWIyMWNhOWRhODkyIGxlZ2FjeS10cnVuaworMTI0MzQgMWRlM2RiYjI2YzJmYTJlYWFlMmYzNzFkZmUxMTk3MTI2Y2NjZWI1NiBsZWdhY3ktdHJ1bmsKKzEyNDM1IDE4OWYxZWM1YzY4ZjNkZDY3ZTJkYTQ4YjI2OGUzNmY2ZmNlYWE3YmUgbGVnYWN5LXRydW5rCisxMjQzNiAxNWU5NzYxZTU0ZGUxZDU3YWM0ODY1OTU1MzkyNWRiYWJhOTNjZDM1IGxlZ2FjeS10cnVuaworMTI0MzcgYWQ3NDlmYjBiZDRiZDQ1YmE5NDg5NzFhMjU0YTAzNjdhNGM1Y2QyMyBsZWdhY3ktdHJ1bmsKKzEyNDM4IGE2NGE2MTViYjc1NjMzMGY3YjlkNWEzYmYwYjA0NWY3NzE4OTllMTEgbGVnYWN5LXRydW5rCisxMjQzOSBjNTkyYzE3NzFkZmI1ZTYzZmU3ZTlmNGE5ZGEyNTBiNTc0YjEwZDA2IGxlZ2FjeS10cnVuaworMTI0NDAgMzM3ODQzYzZhMTgzNjlkNTc1MGJlYjUwOTA2MGM0ZTM3MDEzNTlkOCBsZWdhY3ktdHJ1bmsKKzEyNDQxIGZhZjM1MWUzMTU3MWQ4OGFlNzY5MDA5ZjlmNzBhMWE5ZjY1ZTNkN2QgbGVnYWN5LXRydW5rCisxMjQ0MiA5M2I5ZWFmZTFmMWRlODJhMWEyMDcxZjg4OTBkZDVhODIyNjlmNWI1IGxlZ2FjeS10cnVuaworMTI0NDMgMDZjN2ZmZjUyNzRhN2JmZDNjOWM2NmM4OTEyMDEyMzMxNjYyODI0MSBsZWdhY3ktdHJ1bmsKKzEyNDQ0IDYyNjMyN2E3OGE4ZWUzNmE5YTRlYjM1OGZkNDgwNjQ3ZTU3MDdmNjggbGVnYWN5LXRydW5rCisxMjQ0NSA0ZGExZmFmMjk3YWI4ZmEzNzQ2NDYxYWU1NTUzMDYyOTRlZmJlOGM1IGxlZ2FjeS10cnVuaworMTI0NDYgMzk2YTM4ZWE5Yjg0ZmFjZWIyNmFkNTM3ZDYwNjc2YjZkNzFkMWYxOSBsZWdhY3ktdHJ1bmsKKzEyNDQ3IGMzOWM0YmM0NWQzOTFlMmRmMWRiOGExY2Y1MTlkZDM5ZGZlY2MzZTUgbGVnYWN5LXRydW5rCisxMjQ0OCBjODc2NjJlZjNmMWRiNThhMjM0M2NhNDM5NjVjOWQwOGFlMGJhZTE3IGxlZ2FjeS10cnVuaworMTI0NDkgN2M5OTZmMzQwNDcyMGEyMzcwYzIzODNjNWFiNGU3ZTNmMzU4MTNlZiBsZWdhY3ktdHJ1bmsKKzEyNDUwIDc1Mzk4NTllOTg1YTE0YTRhYzdhNDRiMGNjNzE3ZmVlMjdjYjU5ZDggbGVnYWN5LXRydW5rCisxMjQ1MSA5OGUzNzM0NzM3OGIwMDZjZTZmY2M0OTIwOGUyMjRhY2M4YzNjMzExIGxlZ2FjeS10cnVuaworMTI0NTIgYWU4M2Y2MWQzY2Q3ZTcxOTlmZDUxYTM0NGI1ZGExOThlYWUxZjBlMCBsZWdhY3ktdHJ1bmsKKzEyNDUzIDQwNDYzZDUxNGYzZWE0YmE0OGEyYzI2ODQ1NTMwMWUxYTBlZWViZDQgbGVnYWN5LXRydW5rCisxMjQ1NCBlNWQwZGY4MjRiZjM4Mjc0OGMxZTBkYmM0ZmMzNmEwNTg2NjVkMTlkIGxlZ2FjeS10cnVuaworMTI0NTUgY2EyNzQ1MjcxMTExNjQwMWMwMjE1MjgwYWU0Y2Q5YzA5Nzk3NzE3YiBsZWdhY3ktdHJ1bmsKKzEyNDU2IGM0MDRhNmIwY2RiMWUyN2E1N2EwMGMwZTM0ZTZmNTFkMWMxNWRhMDQgbGVnYWN5LXRydW5rCisxMjQ1NyA5YTg0MmI4MWQ5YzNlOTRkZTcxYTQxZmRlZGExNTFlMDVjYWZlM2JiIGxlZ2FjeS10cnVuaworMTI0NTggNzE2ZGMxZDFkYmZmODkwMWMyNTkxMDFhODhhZjBiYjkyZWFhY2I0ZCBsZWdhY3ktdHJ1bmsKKzEyNDU5IDU3YmNjNmVjNjM4ZjZlYjljZWQ5MTIyMjhiNTkxNDJlYjk5ZmY2NTYgbGVnYWN5LXRydW5rCisxMjQ2MCAyNzUwZTFkZTY4MjlhZDE3OWJlMjQ3ZjFjYjA5YWMxNzgzY2ViMTQxIGxlZ2FjeS10cnVuaworMTI0NjEgNTcyZTEzMWFlMzY5MGZiNWQyMDQ3OTA0MWI4ZGNlODRjNjg4Mjg4OSBsZWdhY3ktdHJ1bmsKKzEyNDYyIDkyYTI1ZDUxZmYyNmNlMjUxNWQ0MGUxZjhlZGVmOWJkZjdjOTJjMTAgbGVnYWN5LXRydW5rCisxMjQ2MyA4NzllMzQ5MWI2NjFiOGU1YTViZWJhODYyM2E3ZTU2OTE5ZGU0MjZhIGxlZ2FjeS10cnVuaworMTI0NjQgODk0OTYwZmE5MGJjNzU1OWI3YTVlNzkzMmVhZjM1OGFlZjRmZTQ4MyBsZWdhY3ktdHJ1bmsKKzEyNDY1IDBkMjc5MWM3MjA2ZGFmYmFjOWFlOGFkOWM1Njg3ZWMxZmEzOTg3Y2UgbGVnYWN5LXRydW5rCisxMjQ2NiBkNDRjYjg3ZTUwMGRiYmM3YTE4OTViMTMwOGNhMmRiYTZjZWZjZGJiIGxlZ2FjeS10cnVuaworMTI0NjcgYzEwOTFlODJlNWFhYjA2ZGQ0ZDI1NDcyYTE5YjU1ODcyN2ZhZjNjNCBsZWdhY3ktdHJ1bmsKKzEyNDY4IDA3ZDMzMzQ4NWE1ZTA4YjI0ZjcwNzQ5ZDMyM2M1YWNhY2E0NTQ2NzEgbGVnYWN5LXRydW5rCisxMjQ2OSA0NDE0NmMwNmU3ZWQzYzc4N2ViMDExY2U0NzgyN2FiYzAxMjg4NWVkIGxlZ2FjeS10cnVuaworMTI0NzAgNDg1NTAyYzQyZDg5YTVkNjhlNGZmYTkwYjBiYzU3ODhlYTNlZjJjYyBsZWdhY3ktdHJ1bmsKKzEyNDcxIGVlODRmNDQ1ZTZkN2ExY2Y4ZjhlNjljNTg4ZWRhYjllMDE2NWNmYzMgbGVnYWN5LXRydW5rCisxMjQ3MiA4ZWZhMzdhNzcwYzY0N2I2NTg1ZTZmZGEzMzU5MDE1NGMyZjdjZmYzIGxlZ2FjeS10cnVuaworMTI0NzMgMDM5MGFmNmFjZjdmYTk4OTVjZGJmZDg0NjQxYWFiNmNhZjA2ODBmYSBsZWdhY3ktdHJ1bmsKKzEyNDc0IDE5ZmRhZjM2N2Q0NWI2ZGQyNDFmMTFkOWVkYTExMWNlOTZhNjdjYzEgbGVnYWN5LXRydW5rCisxMjQ3NSA0ZWMzYjNjYjA3YzhhMWVhMDI1MmQ3MTU1NmUxYmZiZTdjMmVlMzYxIGxlZ2FjeS10cnVuaworMTI0NzYgNjJmYTAzYTMzM2FhZmVkY2U3MmM4ZWU5ZTM3YjljMGY2YTIzM2U1MSBsZWdhY3ktdHJ1bmsKKzEyNDc3IGYxYTUyMGQyNjMxYThlY2RiZDJjMjQ5ZWMzMDdmMWQxNmNhZWYxMDYgbGVnYWN5LXRydW5rCisxMjQ3OCA0ZTJlZmY5NjhjZjVjNjcxZDEyYTVjZmU0NWRjOWNjODE0MzZjY2FkIGxlZ2FjeS10cnVuaworMTI0NzkgZjhmYzkxYjAxN2ExNDMxNWFmYmRlNWNmMTQ2NDM2OTM0MGZjMGUzOCBsZWdhY3ktdHJ1bmsKKzEyNDgwIGY2YjJmMjBkYTU4MTY3ZGM4NjY2MTZlNmI3MjMwMjgxM2QxM2FlNzkgbGVnYWN5LXRydW5rCisxMjQ4MSA0ODllZjdmNjQwNDEwYjJjZTdmM2U5OGY4YzllYzY1MDBhZDI5M2U4IGxlZ2FjeS10cnVuaworMTI0ODIgZGNiZTcyYTBiMzkyNmI5NDJlNmFjYThhMmE1Y2QyYWEyN2QyODg4NCBsZWdhY3ktdHJ1bmsKKzEyNDgzIDc1OTEyMWUzZDliNmQ2NzI5NWQ4OGMxN2RhYTA5YzFkZTc1MjhkZWIgbGVnYWN5LXRydW5rCisxMjQ4NCBhZGZhY2JjYmQ5MzYxYzkyOWUyZGZlNDQ2MzU5MjY1Y2JhOTEzZDczIGxlZ2FjeS10cnVuaworMTI0ODUgYzg2NmYxNjYzMzFiYjY2NTVmN2Y3NGE3NmIzYmZkZDQxYTk5ODFiMyBsZWdhY3ktdHJ1bmsKKzEyNDg2IDRhZjM4YTQ1ZDI5YzhjOTIwYTg2YmRlOWJkNjFmMDMxZTM1ZjhkNmMgbGVnYWN5LXRydW5rCisxMjQ4NyBhNmNiODhiNTgxNjUyM2YzOTM2MTUyMWIyZmZmYzlhNDZlOWE4Y2U4IGxlZ2FjeS10cnVuaworMTI0ODggZDRiOGRkZDlhNGZkMGZkN2YyMDQyMmE2N2VjM2QxY2I4ZTNhZDQyNyBsZWdhY3ktdHJ1bmsKKzEyNDg5IGI3YmNjMmNkYTFiM2IyNjE4MmYyOGFlZDkwMDViMTEzNzgzZjc3NjQgbGVnYWN5LXRydW5rCisxMjQ5MCBjZmJjYWI4MTUwZGE5MTc0MzA0N2JhMmFlYTZhN2E1NzEzYmUyNTJkIGxlZ2FjeS10cnVuaworMTI0OTEgNzhmZjIwM2VhZDI0NTRkNGYwZjY2ZGNiNGM2ZmVhZDI1NzdkNDZjNCBsZWdhY3ktdHJ1bmsKKzEyNDkyIDEyNGVmNjk0YzI4NDQzZTQyMDZmMTQ4ODljNGFkMjFmZjYzOTVmNzcgbGVnYWN5LXRydW5rCisxMjQ5MyBkZGJiZWQ4Y2I4MzBlZTQ5ZGFjODdjNTJlYTlmNzE2YTA5YWYxMjQzIGxlZ2FjeS10cnVuaworMTI0OTQgMDA5YzliYTlmNjU4YjI1OWM3ZGNjZGU0MGQ4NmQ2YWIxMjg2ZDk4MiBsZWdhY3ktdHJ1bmsKKzEyNDk1IDE2YmQwZmRlMDlhZWNiNzIzNjdmNTVjZTdlNjhkNTIxMDY0MjhhZTcgbGVnYWN5LXRydW5rCisxMjQ5NiBhNzhkMzA1NmFiNjEwNGIzNTAyZjJkMzU5ZDRjYzIzOTQ0ZDUwYWNjIGxlZ2FjeS10cnVuaworMTI0OTcgYmRkZThmYmFlYTU4YzdkY2UyZjZlYjZhNTdkZjczYWRiNWFhNzhiYiBsZWdhY3ktdHJ1bmsKKzEyNDk4IGVlZDBjYWNmNGM2NGQ4ZmYxZWNhMzdmMTVmMzVlZTdmM2MyNDQyZjIgbGVnYWN5LXRydW5rCisxMjQ5OSA4YzZlNzA1YjZiOTcxZDQyMTI2YmEzMDA2MTgyMDYyODEzZjVlZjc3IGxlZ2FjeS10cnVuaworMTI1MDAgYTFiY2YzZjI5ZjY2ZGY1ZDQ2MzMyODY4NDFiYzU5NGZhNzVjNmEyOCBsZWdhY3ktdHJ1bmsKKzEyNTAxIGMwZGFmZmU0MDAzNDY4OWZjZDIyMmY4ZTJjN2E1NDQyYTkxNzI1YmYgbGVnYWN5LXRydW5rCisxMjUwMiA0NDE1MDAwMTlkNTBhY2MyNWM1ZmViNGQxNTE2ZmRlZjQ3ODMwZGVkIGxlZ2FjeS10cnVuaworMTI1MDMgMmIyMzhkMTlhZTg4YTdjYmIzNzNjNjUwNTc1NGMwZmQxYTIwZTczMSBsZWdhY3ktdHJ1bmsKKzEyNTA0IDRhYjVlOWY4MzlkOTc0NmQ5ZjJmZjk1MzA4NTFmYzdhZWU5MWI2ZGYgbGVnYWN5LXRydW5rCisxMjUwNSAwYTU2ZTUwODI2ODBiOWYyNTQxMGMxNjljM2JhNzA3YTVlZmE1NjkxIGxlZ2FjeS10cnVuaworMTI1MDYgM2E0MjA3MTdiYzhhNDJlOTU3NTAxZjA1MDAwYjNiMTkyOWY3ZmZhMyBsZWdhY3ktdHJ1bmsKKzEyNTA3IDc3YTk0NTMxNTI5ZWMyMTJhNzRlOGJhODc0NTJlNjc5NWY1NWViN2IgbGVnYWN5LXRydW5rCisxMjUwOCBmZTBiNTIyZTQ2Y2IzYzg2MTMzNDkzYjQyZDM2NWRjOTI4NjBlOTJjIGxlZ2FjeS10cnVuaworMTI1MDkgZWY1Y2YxYTRlNTJhOWM0ODU0MGM5ZmQzOWMzOTJlZDc3NTM2ZDBiMiBsZWdhY3ktdHJ1bmsKKzEyNTEwIDU1ZjhjNzAxYzlkYWQxMWE1NDFjNzBiMDAzNjEwNzFkNGQ5NGI1YWEgbGVnYWN5LXRydW5rCisxMjUxMSBhYjZkZDcwZjI1MDc2ZjY4OTI0YTg5OWNkMGZmNzQ4YjkyMzljMGExIGxlZ2FjeS10cnVuaworMTI1MTIgNDY3MWFlMTAzNWIzODk1OTkwOTgzN2FiYzZkOGUzNjk0NTlmNDcyZCBsZWdhY3ktdHJ1bmsKKzEyNTEzIDQyYjIyOGQ3OGJlYWQxMmQzM2U3ZDAzMGM0YjM2ODYzNzllOGMyMTIgbGVnYWN5LXRydW5rCisxMjUxNCA0YTI1ZGQ4NWRmNjIyYTVjODYwZGI5ODczZDc4NjU0Njc2NWMzMGFiIGxlZ2FjeS10cnVuaworMTI1MTUgOThmYTUzNWI5YWYxZWY2MGFmMWZlOGU3OWEwZGM4OGNhMzA0ZjBjZSBsZWdhY3ktdHJ1bmsKKzEyNTE2IDYzN2ViOTYxYzExYmY1MjZiOGMzNDAyZWU3OTczNWI5MWM1MmUxMzggbGVnYWN5LXRydW5rCisxMjUxNyAyYTBjZjk2NzcxOTM5ODMzNGNmZGVlMmVlNjY3ODAzYzY0YzRiNjU2IGxlZ2FjeS10cnVuaworMTI1MTggYzY5MTNjNzMyNmYwOTZjMDIzMDQyZjE1NTAzNTAzM2Q4MDNiNjY2ZCBsZWdhY3ktdHJ1bmsKKzEyNTE5IGYyNDU3ZDY5N2EyYTI4ZTEzZTkzOWI5NjVlZmQyMDQ3OTllNDc1NmYgbGVnYWN5LXRydW5rCisxMjUyMCBkNzk3OWY0ZWQyYjYxNjM1NjVlZWIyODQ3NzM0YmYyNDczZWUyZTZkIGxlZ2FjeS10cnVuaworMTI1MjEgODMyNzY2OGNmZDE3MTRkMTJkZGZkODk5NjExNWQ5MjA4MTA1M2MzNSBsZWdhY3ktdHJ1bmsKKzEyNTIyIDk0MTI1YTEzNDNkODE4ZGRkYmEwMjg2ZDhjZjc4NzY1MDZiNDEzZjQgbGVnYWN5LXRydW5rCisxMjUyMyAyMTgzZjUwNmEwOGUxYzhiZTY2YjVlZjZjMDk5M2Y2ZDQyMzIxOWU5IGxlZ2FjeS10cnVuaworMTI1MjQgMjgxOTRmNTFmN2ZlNTRjNDFjZjdiZDA3NzUyOWZjNTIwM2Q1ZjAyMSBsZWdhY3ktdHJ1bmsKKzEyNTI1IDg5ZGNlYTYzYzQ2YmVhMDJiNWMzNTgwMjQ3ZDMzZjRhOTVjNWZhYWUgbGVnYWN5LXRydW5rCisxMjUyNiBjYWYyYzY1YTZiY2YyNWY5NjUwYzM1MzAxY2U4ZTA2MDI5NGJlMTM4IGxlZ2FjeS10cnVuaworMTI1MjcgZjU3MmFlMzZkNWJhYzliNDU2YTM5ZDdhZGE3ZWJjZGIwNTZlNjg5NyBsZWdhY3ktdHJ1bmsKKzEyNTI4IDYyMDY4NWU0YzQ3N2UyMDdhOWUxODc5NDdmNTYyZTMzMTQ3Y2JjMDcgbGVnYWN5LXRydW5rCisxMjUyOSAwODBiZDQ2ZjM4NDg3OTljZGY1MDEwZTk3ZDgyNGIyNDZiMmMwMTllIGxlZ2FjeS10cnVuaworMTI1MzAgMTY3YWRmMzE3ODZkNzM0NjJhN2NjNmZhZTdiNDZjNjVmMGU2NzgwZSBsZWdhY3ktdHJ1bmsKKzEyNTMxIDAzNGI0MmJhNjhhNjk5M2E4YTFmM2FlNGYxNTc2NzVmMDBhZGI5YTMgbGVnYWN5LXRydW5rCisxMjUzMiA3NGQwZDJmM2NiMWRiYThmYzFhODE2MGNhNzgwNWUyOWM2YjM5M2I5IGxlZ2FjeS10cnVuaworMTI1MzMgZGU1NjhlYTBkMDQwZWI2MzBkZWRjNTkyZTY1Njg3YTY4NWE1MzA2YiBsZWdhY3ktdHJ1bmsKKzEyNTM0IDIwZThhMzM0NGEwZmY2MGNkOGM0YzZkMTM1NWZlOWNhNzk3ODU2MmEgbGVnYWN5LXRydW5rCisxMjUzNSAxMDUxZWY5OTQzMWU1ZmVkY2FlMWMwNGU3OWU5MTVlYTk3MzAzOTgzIGxlZ2FjeS10cnVuaworMTI1MzYgYzliMDcwMDc0Yzg1ZDNiY2YyYjMxMTBkMmVjNDU5YmIzMTcyYzgwNSBsZWdhY3ktdHJ1bmsKKzEyNTM3IGI3MmE4YzQ4ZjJkMDA0M2YzZmYwNTgwNTgzN2JhMjA2NTg3MGVjM2YgbGVnYWN5LXRydW5rCisxMjUzOCBmNWRmMjJmZGFkYTg4NTliODAxZDYwYWY1YWRlOThlMDIxNjc1ZWZjIGxlZ2FjeS10cnVuaworMTI1MzkgZjEzMmVjZmRiMjg1NTc3N2Y2MDQyY2Q1MWE1YWQ0N2FkNzU1ZmUzZiBsZWdhY3ktdHJ1bmsKKzEyNTQwIGJhMDNlNjhkZjBmZDRmMDkwZGQ3MDZlMWQ4NjM4NDRiMjhhZDVkYjAgbGVnYWN5LXRydW5rCisxMjU0MSA2ZGZmNzY5NmUzNTgxMTJlMmE1MDhkZWYxNWU1MmEzN2I0Y2E1ZTYyIGxlZ2FjeS10cnVuaworMTI1NDIgM2FkMmIyZTMxZjUzMDhlYTNmYjIyM2Q0YjVlMzYzZTZhMzQzYjEyNiBsZWdhY3ktdHJ1bmsKKzEyNTQzIDMyNjUyZjY5OTZlMzc0M2UxOGM2ZGI2NGY4NGFiZDliN2Q5ZWJiMmUgbGVnYWN5LXRydW5rCisxMjU0NCBmMmMwNzJiMDU0NjY1NGQ2MjE0YTAzYjQ4NTQ4ZDUwOGIwMjZmYzcyIGxlZ2FjeS10cnVuaworMTI1NDUgMGRjNTBkNDNmYjg0NjM0ZGQ5NzhlZDNiOWU4NzEwZTdkMmYxMDU5MiBsZWdhY3ktdHJ1bmsKKzEyNTQ2IDhjZjY2YjFkNDE1NWVjZDFlOTBjMzkxOTFmM2JlOWI0OTU0ZWFjZjEgbGVnYWN5LXRydW5rCisxMjU0NyBlZTlhOGZlMGNmY2E1ZjExMGQ3OGI4OWZmNDgzNjg2NTEwZWQzYTZlIGxlZ2FjeS10cnVuaworMTI1NDggYzA3MzlmNjQxYmQxZDU4MWEyMjkyMjIwMjVlNGU5YmVmYzdhZmI3YiBsZWdhY3ktdHJ1bmsKKzEyNTQ5IGEwYjA2ODkxZDI4NjAwNjZjZWM5N2Y0NDZiODU2Mzg1ZDIxNjQ4MGIgbGVnYWN5LXRydW5rCisxMjU1MCA3Yjg4YzEyYjg3MDFjZGU2NjMxNTM0NGQ1MjY2ZmU4MDBkMTk3ZWU1IGxlZ2FjeS10cnVuaworMTI1NTEgZGNlMTA0ZTFhNzNiYmRjY2FlNjRhYWVlODE1Y2IwMTUxNjk2MTFlZSBsZWdhY3ktdHJ1bmsKKzEyNTUyIDY2ODU4ZmRmNDY3ZWJhMWM1MmQ2MDMyM2Y3MTJkYTQ5OGU4ODc3NWIgbGVnYWN5LXRydW5rCisxMjU1MyBmMDcyMDNjYzI3NDBhOTE5NzEyNzg5OGY1MGNiY2Q3ZjU2NjJlYzAyIGxlZ2FjeS10cnVuaworMTI1NTQgNzk0YTIxYTVhZDM1ZTE5MWFjOTZhMTIxZmZiNDRkMjI5ODc1NGI0MSBsZWdhY3ktdHJ1bmsKKzEyNTU1IGYzM2VkOWUyYTYwN2ZhNGM5Y2Q1ODJhNTk2MzBmN2E4ZGJlNWEwYTUgbGVnYWN5LXRydW5rCisxMjU1NiAyN2NjN2EzMTQ1MDI2NjBhNzcyM2E1MGI5MTcwOTg1Y2UyOWQ4ZTM2IGxlZ2FjeS10cnVuaworMTI1NTcgODBlMGFhYjE3MDVlYmQ1NDIwMmFjMTM0MDM0ODk4OWQ4NGRmNjAyOSBsZWdhY3ktdHJ1bmsKKzEyNTU4IGI4MmE2MWE4ODRjZjI4NzYwN2E3ZTcyY2U0NmNjZGRmOGVjMGViZDEgbGVnYWN5LXRydW5rCisxMjU1OSAwNzVmODcxZDgwYjU1ZWVhYTU0OTM5N2RmZDlmZTE4ZTFiM2Y4NzE4IGxlZ2FjeS10cnVuaworMTI1NjAgZWU2MjU2MDgxMzY2ZDI4MTVjOGFlMWIzNjMzNDhhMTM1M2M1MmIyMiBsZWdhY3ktdHJ1bmsKKzEyNTYxIGM4OGFhOTU5M2EwOGVkMTEwMzBkNmY2MjdlMjhlNzk5ODUwZGEwMzEgbGVnYWN5LXRydW5rCisxMjU2MiAwMTVjYjYyMzFmM2Y4ZTY2ZWNhMWRmMDk0NmZkOGE2NWFmNWZkNzZlIGxlZ2FjeS10cnVuaworMTI1NjMgZGRkYTU4NTRlM2VhZDUyMjBkNmZhMGI4ZjU2NzhkMmEwODIzNGZjNCBsZWdhY3ktdHJ1bmsKKzEyNTY0IGQ1ZTY0YTYxNjMyMDAzYzZjNmE3ZGY2Y2U4MmZlMzc3YzY3ZmQ4MmQgbGVnYWN5LXRydW5rCisxMjU2NSA4ZmZlNDUwNDI4YjFiMzM5MDEwNWMwY2M5NzhiYzA4YmI5YWU0OTM1IGxlZ2FjeS10cnVuaworMTI1NjYgZDliN2EyMDgwOTcxYmEzMDllYjBkZTdmZGM1NDllYzNkYTU1NmEyYSBsZWdhY3ktdHJ1bmsKKzEyNTY3IDZhYmQ4NGFhYjA4YThlNTI5MWEwMmIyOGIwMjM5OGIxNGVjZmFjMTkgbGVnYWN5LXRydW5rCisxMjU2OCBkN2Y0MzRkNzg0YmY5ZTY4OTJjZGZlNWM2YmNlOWJhZmQzNTNjMmIwIGxlZ2FjeS10cnVuaworMTI1NjkgNzEwMjI4OTA0MmQ1ZThlNDQ5MGM0YTI2NjM1ZmNlNjM5ODJlOGEzNSBsZWdhY3ktdHJ1bmsKKzEyNTcwIDZkNmY0MjdhYjZlY2IxODM2M2JmNjJjZGE4NDViMWFkMDE0YTIzNjkgbGVnYWN5LXRydW5rCisxMjU3MSA1ZTAxNjQ1ZWU0MWI4YzIwY2Q2ZjAwMTM1OWFkZjYyYzQ2ZjZmNDNiIGxlZ2FjeS10cnVuaworMTI1NzIgMTM3MTc5MTg2OTI3YTA0MGMwZWE4MmFhNzNmYjNlMzE5NmE4NDBhNyBsZWdhY3ktdHJ1bmsKKzEyNTczIDY3ZWQwNWNmMTcxZDA4ZjUzNWEwYWFhM2JjMGU5MzA4NzQzMThiYWYgbGVnYWN5LXRydW5rCisxMjU3NCBlY2ViY2Q4NGRmMzdiMmFlZjBlMjI1MDc1ZWY5MDc5YTFiMjNhOTIyIGxlZ2FjeS10cnVuaworMTI1NzUgMWUyMWUyMjQ1M2RjM2M0Yzg1OGQyNTg4ZDU5ODM3NzAxZDE4OWNmZCBsZWdhY3ktdHJ1bmsKKzEyNTc2IGQ0ZTk2MzI1MDNkZmRhMzMwNGJlY2FmYjI1MzVhNWVjNDgwOTEyZDkgbGVnYWN5LXRydW5rCisxMjU3NyBkNmJhOGU1ZTU1YWQ0Yzg5YTQ4NzY0ZTdmYWNiNDJhMTYxNDhhODRmIGxlZ2FjeS10cnVuaworMTI1NzggY2JmNTUwM2IzMmQ1NTliNjNiM2MxMTljYTk1MTQ5NDc2ZmRkMDQyMCBsZWdhY3ktdHJ1bmsKKzEyNTc5IDgwYjIxNTI0OWIxN2Q1MWIyNjUwZjliYTBlODhmNzU5MzRiYjFmZjkgbGVnYWN5LXRydW5rCisxMjU4MCBjM2Q1MDY3OTQ5NjdkZjg0MWNjMjFiOTg5ZjNjYzZhOTIzYjY5N2Y1IGxlZ2FjeS10cnVuaworMTI1ODEgYmMzNjAyYTgzYWQzMjk1YjJkNjNmOGE4YjdjYjNhMmUxZmQ1ZjhhNyBsZWdhY3ktdHJ1bmsKKzEyNTgyIDZmNDJjOGZlODc1YjdkZTIyNTg0NzVmMjQ2NWJkY2YxYjY4MDcwYWIgbGVnYWN5LXRydW5rCisxMjU4MyA0OGFmMmM2Yjc0MWU5YzgwY2QzMGNhYTY0Yjc5NTE2MTA3MzhiNDI2IGxlZ2FjeS10cnVuaworMTI1ODQgYjU0NTRkYzIyZGNiODExZjNmMjEyN2NjYzA3ZWE1YTJiMzJmYzk1YSBsZWdhY3ktdHJ1bmsKKzEyNTg1IDQ4OTRkY2VhMTI2YjQwNzlkYzYwZTIwNzlhZDVkNjUyNjI4NGM1NjIgbGVnYWN5LXRydW5rCisxMjU4NiA1ODIzYjYxNWMzMDFlM2JiNjlmZjk5MTdmNDA4MGI2MDQwOWFhMzEzIGxlZ2FjeS10cnVuaworMTI1ODcgZDNlNDRlNjEwZWExNGIyMjdkMDBmMjU1MWVmN2Y4OGI2NzkyMjVjNiBsZWdhY3ktdHJ1bmsKKzEyNTg4IGM3MTQ0ZTdlODQ5NDIwNTA0ZjQyM2Y3MWQyOWQ5YWYxMTA5YWNmYTUgbGVnYWN5LXRydW5rCisxMjU4OSA5ZWZhNDI0NDVlYzlhZmVlZTMyYjliMDFjY2NiZjNhMTJjYTJiMmMzIGxlZ2FjeS10cnVuaworMTI1OTAgZjVhNTVkMzI3NjA4M2ViYzUwMWE0Yzk3YjkwNDU0YjI1OTVjZTY5YSBsZWdhY3ktdHJ1bmsKKzEyNTkxIDJhOWVmMWUwZjU0MWQ5ZGUxODE1M2RmODIxNDhmODFlY2E5YjQzMTUgbGVnYWN5LXRydW5rCisxMjU5MiBhYTAzMzY1MjdjNGU5NTYzMzk0ZGIwNGEyMGE4ZmQ0MmQ0NjFlN2JmIGxlZ2FjeS10cnVuaworMTI1OTMgOTY1ODZkYjM3OWZiYTlkOTg0YzYzNjg2NGI0MGY3YjQ0YTk4OTg3ZiBsZWdhY3ktdHJ1bmsKKzEyNTk0IDU3NDA3NWU5YTI1ZjRkYjdiNTQ2MTk1N2Y1YTNkN2M2ZmE2MDlmYmUgbGVnYWN5LXRydW5rCisxMjU5NSBkOGM0Mzc4ZWI4N2RhYmU5NDgzMzc1MjA1NWJiMDE2N2JiMWFlZjFhIGxlZ2FjeS10cnVuaworMTI1OTYgMWQyOGM3ZTE2NjM2NTczMTVkOGJhMWUxMmIzZGQ4MWYyM2ZlYTE3NCBsZWdhY3ktdHJ1bmsKKzEyNTk3IDdlYWQ0YTA0NDI3ZTg4NDAyYzc1NTZlM2JmNGU5ZTI2MWE1ZTUyM2EgbGVnYWN5LXRydW5rCisxMjU5OCAzYWUwM2I5YjY1ZWRjMmEwOWQ4ZmI0ZGRjYmRkODA0NjU1OGE5MTYzIGxlZ2FjeS10cnVuaworMTI1OTkgZjVmMWI1ZTk4MTRhNDhlYTJlY2NiMWMxNDE5NzVjYmQwNGJiYmEzZiBsZWdhY3ktdHJ1bmsKKzEyNjAwIDNmN2RjM2RlMDYxNzBkNDk4YzE2Y2IwMDFiNTA3NTZhZWI2MTJhNDUgbGVnYWN5LXRydW5rCisxMjYwMSA5YTNhNDY5MjhkYmZlYjhmYjJjMzllZmNhYjJjMjk5MmJmZTM4OTgzIGxlZ2FjeS10cnVuaworMTI2MDIgOTE4NDg2MmJkOGQxZTkyZGMyM2Y3YTZmMGFmNjczOWJkZTIwZjczNCBsZWdhY3ktdHJ1bmsKKzEyNjAzIDZiMjhiNWYxOTdjZmIwNDgyZDA0ZTMwODE1YWNhNDQxZjViMDY1Y2UgbGVnYWN5LXRydW5rCisxMjYwNCBjN2RmZDYxOTM1MGJjN2Y0YTljMzc4OWJjNjRhNzA3ZjBiOGFlZmQ0IGxlZ2FjeS10cnVuaworMTI2MDUgZWZmMDhiZDgxNjVkODJhZmYyZDczMzk3NjU0NDEwNWJhNDk4OGEzMSBsZWdhY3ktdHJ1bmsKKzEyNjA2IDU4ZTdjYzVhMzg0MTMwMGNhNWFiMTI2YTBmNGQ0ZmZmNDg0ODMzMTEgbGVnYWN5LXRydW5rCisxMjYwNyBlNmJiYTAyZmY2MjQ2ODRiYjA3NmNmNzFkNmY4YTU0ZTg5MThkNmFhIGxlZ2FjeS10cnVuaworMTI2MDggMTZhYTczNTg4ZDkzYjY4ZjUwMjAzZDIxYThhZDk2ODc1YjA3ZmQ0MSBsZWdhY3ktdHJ1bmsKKzEyNjA5IDY5N2UwYzlkMDk0MGVjOTUzYzAzNDhlOGJkOWFlOGEwOTkzMzljYmEgbGVnYWN5LXRydW5rCisxMjYxMCA1MmQ1N2NjMDNmNDI5ZTgyZTQ3ZWEyNWI3N2MwOGY4ZWEyMWU3NjVmIGxlZ2FjeS10cnVuaworMTI2MTEgM2Q1ODdlNjUzZjJkNjU4ZDk4ZTExNjE3ODQ4YzA5MDkxZTdjYWY5YSBsZWdhY3ktdHJ1bmsKKzEyNjEyIDMxYzExMjU5NGFiNjM3YWU4YjRjMmY5YWJiZmFkMGZjNmM5Yjg2NzUgbGVnYWN5LXRydW5rCisxMjYxMyAzZjkzODU4N2YyYTNmMDJhMDllZTcwY2RlMDNhNmRhNTc1N2Q1MzM1IGxlZ2FjeS10cnVuaworMTI2MTQgYWJmNDkzMDY0N2UyODIyYjc4MGY3ZDRjMDY1ODI5NGY3YzE0ZTg2OSBsZWdhY3ktdHJ1bmsKKzEyNjE1IGU5ZjU5ODViNmVhNDY0ZjgxY2FkM2IyNDkzYTE1ZGVjZjQzMDZhNTUgbGVnYWN5LXRydW5rCisxMjYxNiA1MDhhNjM5ZDhmZWIzNWFmNjIzZDUzNTNiMzNlYWY2NDA3NTVkNTU4IGxlZ2FjeS10cnVuaworMTI2MTcgYTk5ODg1YWYzOWY4OGM0ZWU4ZTUxMTMzMmU5MmMwODdmMzc3M2IyYyBsZWdhY3ktdHJ1bmsKKzEyNjE4IDQ5ZTdlMjE4NDliM2NjNTFmZGI2NWM1YTQxZTgxNjJiNTc5M2EzNjUgbGVnYWN5LXRydW5rCisxMjYxOSAzMTQ1ZGVmNTgzZTJjYTE0ZTM5OWE5YzcyNGY0MDZiYjFlZDlkMDk5IGxlZ2FjeS10cnVuaworMTI2MjAgYTlmYzczOThjZTdiYmY3ZjY2N2ZkZmYyZjAzMjE0ZWQ4YTJlMTk1ZSBsZWdhY3ktdHJ1bmsKKzEyNjIxIGE2M2M5YzNlOWVjYzAxZDRmNzUzNmJlMjJjMzY1OWFkOWViOTc4NzQgbGVnYWN5LXRydW5rCisxMjYyMiA1YjE1NjQyZTdiZGY0YTI4ZDc3Nzc4ZTg0OTkxYmZjMWZlOWZkZjY4IGxlZ2FjeS10cnVuaworMTI2MjMgYjdkODEyNWMyNDE3ZDg3ZGMzY2IwNGNiZDhiYzczYzVjYTcwMmFhOCBsZWdhY3ktdHJ1bmsKKzEyNjI0IGNiYjNiMmM1NTVkN2E3MGExNjk2NDEyYzg3OTEwYmExNjVkNmM4NWMgbGVnYWN5LXRydW5rCisxMjYyNSBiYzI4N2M2Y2ZhMjMwZjA1NjZlMDRmNjczZDRiYjEwYzI3YmVjNTUwIGxlZ2FjeS10cnVuaworMTI2MjYgZmI5NjY1NjJkYjBlNjFlNjExZWNhMjY2ODEzZTA3YTZjYjdjYTQ2MCBsZWdhY3ktdHJ1bmsKKzEyNjI3IDY0NzI4YTUxY2I1NTFlODZiNDNjZTYxNDAxOGJmMzAzODNmN2Q4OWMgbGVnYWN5LXRydW5rCisxMjYyOCA4OWY2NTU2ZjA1OWViNjgzYzBmMzRkMjI3YTY3ZGYwMTRmZjgwNTM3IGxlZ2FjeS10cnVuaworMTI2MjkgYmFmY2Q3YjYyMzI3NWM3NTNlMmQ1Zjk1NTEyNjk1NmNhYTJiMjQxZSBsZWdhY3ktdHJ1bmsKKzEyNjMwIDBkZDRmYWZlZmQ2YzQ4YTRjMzg2YzgyOGQ2ZWRiNjY5NDRjNTdlOTcgbGVnYWN5LXRydW5rCisxMjYzMSA4YjU1YzUxNTY4M2Q5MjdjYWMzMGIwYmZjOTRhMDE1OTNmMGU2NDIzIGxlZ2FjeS10cnVuaworMTI2MzIgZTU2OWY5YjBkOTY5YTExYjZlYzdkMTllMmYxZTZmNjUzNGNhZTE1ZiBsZWdhY3ktdHJ1bmsKKzEyNjMzIDFhYzJhOGJiN2RjMTA4NjRjMDlhOTcwYTUzMzBiMTNkM2VjZDQyNzYgbGVnYWN5LXRydW5rCisxMjYzNCA2NGU2NGVmMDhkMWM5MTE1NmFiMDc2MzVmMzY2MjcwMThkZDRhZGFiIGxlZ2FjeS10cnVuaworMTI2MzUgNTcxOGU4MzAyMGFlOTVlNTNiYmJkNTExYjNhNzZkY2VhYWY5YmE5MyBsZWdhY3ktdHJ1bmsKKzEyNjM2IDEzOWQ1ZjFhNmY4OTlkN2NiM2YwOWQ3YTVmZDc1YTY4ZDQ3OWI1ZDEgbGVnYWN5LXRydW5rCisxMjYzNyAwYzA3YzBkYmUzMjgyYzA0YjlkMDc1ZTU1MWRjNGFkN2VhZjE1ZTdhIGxlZ2FjeS10cnVuaworMTI2MzggNjU3MzE2OThjNmVkZjRhNzZhZjZlMTQ2ZWIyOTRjODNlZDc4MjU1NCBsZWdhY3ktdHJ1bmsKKzEyNjM5IDQ5Y2YxNDEyNDQ1ZjMyMDk2MGMwM2YxYTQwNDU3ZmNkYjE3YTlhZTAgbGVnYWN5LXRydW5rCisxMjY0MCBiMjE5MTVlNjU4OWUwNGY5OGZjMTM3YWJhMWNkNTEyNmMzNjk0OTkxIGxlZ2FjeS10cnVuaworMTI2NDEgYmMwMzQ3NjQzZWNmYzZjYWI5NWI4MzUxNTQ2MDcxMTQ5MDA2MGFjZSBsZWdhY3ktdHJ1bmsKKzEyNjQyIDkyMzIzNjEyOTRiYjY5MjQ1ZmUxYzVjZjg4MzYzMzE0NGY2MTg3NjUgbGVnYWN5LXRydW5rCisxMjY0MyAwOTkwMmUxMzA1MzczNDRlM2NlYjIxYzE2MjQ2MTI3MjM2MzJjMzQ5IGxlZ2FjeS10cnVuaworMTI2NDQgNWJkYjcyYjE5NTdlMTZlN2FiODg3M2RjMDIwNDgyNGZlM2JiNTgxNSBsZWdhY3ktdHJ1bmsKKzEyNjQ1IDNjNjk4YjUzYmU1OTIxMTZmYjMwZDI4NzY2NDA3MDQ2YjgwODVhYjIgbGVnYWN5LXRydW5rCisxMjY0NiBhYmQzZjA2NmM4N2FjNTM5ZjU0YmMyZjkwNDIxZDZiYTYyZGE5OGZmIGxlZ2FjeS10cnVuaworMTI2NDcgODI4NDkyNzAyNWJlNmZkMmI0YWQ3OWM1MzJhNTY5OTVkZDU5YmQyZSBsZWdhY3ktdHJ1bmsKKzEyNjQ4IGJkNDlmOTFkNTliMmQzMWE0Mjg5NDVjODQzN2UxNmY1OWQ0NmNmNjcgbGVnYWN5LXRydW5rCisxMjY0OSAzYWM3ZjAwNjYzNzVmYzg2MWYzNDliMWQwMTExZTJkZjA0MjY0ZDgxIGxlZ2FjeS10cnVuaworMTI2NTAgZTQwYmNmNmJjMWM4YmEzNjA2ZjQxOGQwM2UyNjc4NDJkMzcxMzkzMyBsZWdhY3ktdHJ1bmsKKzEyNjUxIDk1OWU4MWIzOWI4MTEyMmY2NzMwYTg2OGZiMjVlYTI1NmNlNDVjMmQgbGVnYWN5LXRydW5rCisxMjY1MiA5YTZjM2RjMWRjZDNmMGUxNGVjZWE2ODQzNDdmODI3MWJmNGE4MDc4IGxlZ2FjeS10cnVuaworMTI2NTMgMWQzZmU3Yzg4Y2M4YzQzM2Q4ZTUyYWE1OGMyZDQzMmIwNWYyNjZkNSBsZWdhY3ktdHJ1bmsKKzEyNjU0IDYyZGM5ZmY5Y2Q0YzM5MmNjZGVkMTc1OWZiMDliNGE4OTEyOTJiMjAgbGVnYWN5LXRydW5rCisxMjY1NSA5YWE0MzkwYmUzOGI3YzBhYzI4YWUxZTQzY2JhMzI2M2QzMWQzNDljIGxlZ2FjeS10cnVuaworMTI2NTYgZDM3ZjAzMTI0YzU0ZjgyM2Y0YjJjYWY5NGVjNWVhNjMyNDY1Mzk1MSBsZWdhY3ktdHJ1bmsKKzEyNjU3IDg0NjRlMzEzNzZlZDliZjFhMzBiODczMDBkMmI4YWFlNzJmZjQ5ZDIgbGVnYWN5LXRydW5rCisxMjY1OCAwZjdkNjk0YmMzMzRlZmYwZjFjYzAwMTAzMTE1ZDRhMmM1OTM0MmI2IGxlZ2FjeS10cnVuaworMTI2NTkgMTMyMzliNDhjNDY5YzFhODI5MWMwNWY5MWM3M2IyMjdjZjViNjdjMyBsZWdhY3ktdHJ1bmsKKzEyNjYwIDYyNWI3Y2ViZmRlMmIyZDlkMDNmODkzMjI5Y2I0OTA0MWU5MDdkNzMgbGVnYWN5LXRydW5rCisxMjY2MSAzYjdiNmQ1ZjE5MzE2N2RjOTg0ZGFiMGJjM2EyN2RkZjM1OTJjZjE0IGxlZ2FjeS10cnVuaworMTI2NjIgM2JhMDI1YmE3ZjA5NTA0YjcxOGU5YTBkOTBhYmIxZTRkMDdhYmFjNCBsZWdhY3ktdHJ1bmsKKzEyNjYzIDVjMWViZjIzZjFkNzdiNDNkZTQxNzNhNWIzOWVjMTA3ZmZiMGEyOWMgbGVnYWN5LXRydW5rCisxMjY2NCA1NjRmMDM2MzI5MTYyNWRjY2M0YjM1NmQ3ZGI1YWIyNjhiNzM1MmZiIGxlZ2FjeS10cnVuaworMTI2NjUgZGRmODYxZDg0YmJiOTIyODRiMzQ0ZTM5ZGRkYzhjYmMyMDNhNmE0OSBsZWdhY3ktdHJ1bmsKKzEyNjY2IDE1NGM2NDA4YzNjMmRkY2Q2Y2M0ZjQxNDgxM2I2OGRkMmYxZTgwMDMgbGVnYWN5LXRydW5rCisxMjY2NyA5YzljZjQ1NzJhOTc3ZWY2ZjdiZGY1OWE3OThjNGMxODZlMGU1YWNhIGxlZ2FjeS10cnVuaworMTI2NjggM2YxM2VlNTkyYTQwZjgzZTI5MTJlMDFkZWE3ZWVkMThmMWIzZjQxZCBsZWdhY3ktdHJ1bmsKKzEyNjY5IGJkOGM0M2RhZWY4NWUyMDQxYWQ5OWExYzI5MTRiN2I3ZGVmNmE3N2QgbGVnYWN5LXRydW5rCisxMjY3MCA3NjJjZmU5NmZhZjlkNzFlZGI3YWFjN2JhMGQzZjljZjdhYjExYjdhIGxlZ2FjeS10cnVuaworMTI2NzEgYmEyNWIyZDNkNzg0ZDdkN2U1NjNjNTdjMDdkMWU0MGY0Zjg5ZDE5ZSBsZWdhY3ktdHJ1bmsKKzEyNjcyIDdjZjk3NjU4Y2FlN2UzNmYzOTYzNTQzMDY3NThhOTYwNGU3MjEyOTQgbGVnYWN5LXRydW5rCisxMjY3MyA3M2U1ZTNmNTFiODc0ZmM5NzM5YjAyYWMyNjM3YTAzYjc1NTYxMDNlIGxlZ2FjeS10cnVuaworMTI2NzQgOTY1NTBiNWQwOWUxNGMyZDY4ZjViYjcwMTU3NzUzYTUxMjIwNDczNCBsZWdhY3ktdHJ1bmsKKzEyNjc1IDZhMWNiNmYzN2E1MmM1YjcwYzQzZWNiZTViYzMwM2FjZWY3NzhlM2IgbGVnYWN5LXRydW5rCisxMjY3NiA3NDRkYjg2ZTAzMTFhZmRmNjYzNjRkMDEzODk0NjZiNjEzYzY5MGNmIGxlZ2FjeS10cnVuaworMTI2NzcgNDlkNzc2ZjM4NzhkOGRkNTA0NTdhYzY1NzE1NWRkMzE1NmYwNzQyMyBsZWdhY3ktdHJ1bmsKKzEyNjc4IGE3OWRjZDI3YmRjM2E2YjVmOWZhOTA4MzM2NDEwZDk0ZDFmNTJhNmUgbGVnYWN5LXRydW5rCisxMjY3OSAzNWY5MWNhZWFhOGRhMzc1NDczZjg0NjY3YWFjMzk4NTMxNDBiMDYyIGxlZ2FjeS10cnVuaworMTI2ODAgZjBhNTdjY2YyMzNjYjM1NmQ5N2UzNTEyMjkyODg2MDI1MWFiY2M1NiBsZWdhY3ktdHJ1bmsKKzEyNjgxIDA0Yjg4MDQyYTkyYjhmYzJkYzg1YjBhZWVkYmRkYTg2MzRhMTQxMTYgbGVnYWN5LXRydW5rCisxMjY4MiAwMDViYTQxMmE4ZWNiNTJhNDA2OTUwMmM2YWI5ZGNlMzJjNmI1OWI1IGxlZ2FjeS10cnVuaworMTI2ODMgYjg5MzJhYjQxYWRkNGYyMDFjZjkzYjBiZTdmN2Q5MDY3MGJkZjU5ZSBsZWdhY3ktdHJ1bmsKKzEyNjg0IDU1MzlhZWJmODkzOGE4NjQ1OWQxY2U2NWQxODExM2Q1NWMwMmM2NGIgbGVnYWN5LXRydW5rCisxMjY4NSA2ZGJjZDVhNmU1ZTYxOGI3NTFiMWJhZDM1ZDNkZjZhMzY4YjUyN2QxIGxlZ2FjeS10cnVuaworMTI2ODYgZDg2NDAwNTAwYWEwMzczMTUzNWFlMzdhZjhlYjk1MTdjZmFkOWY0YyBsZWdhY3ktdHJ1bmsKKzEyNjg3IGIyNmUyNTE1ODkyMmVmN2QyMzJlN2MwYzFhZDM1ZmM0YTI5ZTIzMmUgbGVnYWN5LXRydW5rCisxMjY4OCA2MmU2MTA1ODQ4MGEzOTkzMmZkMjRiYTdjM2RiMDhmOGFhNjc3YzA3IGxlZ2FjeS10cnVuaworMTI2ODkgZWUxZDMyZjdhMDU1ZjBiOGQxYjU3ODc4NjNjZTQwMjIzOTdiOWFmMSBsZWdhY3ktdHJ1bmsKKzEyNjkwIDY2MzNjM2ZjYTYyNjNmMzZlYTYxMGJkYTc0MTVhNTdmMzc5MjU2MjkgbGVnYWN5LXRydW5rCisxMjY5MSBiZDMwZDM5Nzk3YTQwOWViZDNiZGFhNjBhYjBlMmU1OGRlM2M0NWZlIGxlZ2FjeS10cnVuaworMTI2OTIgOGY0YWQxNGMzNDA3M2NjOGVjMTQ3NWNkMzA1ZjFmYjgxYjE4NGIxOCBsZWdhY3ktdHJ1bmsKKzEyNjkzIGIwZjA0YjdjOTQwNzFlNzJkOGE5NjFjZDMyNTE2OGMwNDE1NWQxOWEgbGVnYWN5LXRydW5rCisxMjY5NCA0YWY4NGNkY2ZkYjUzZDIwOWI0NmFjMzQzN2MzMzQxNWJhNzMzY2ZjIGxlZ2FjeS10cnVuaworMTI2OTUgNjdmMWQ2YmQ1OGNmYmExMDkzM2VkNTQ4NWRmNjljYjMxMGJmOTMxOSBsZWdhY3ktdHJ1bmsKKzEyNjk2IDFkOTQyNDhmZTJiOTlhMjk5ZTQwMmM0NjRiYTYyNWEyODM1OTQ1ZjIgbGVnYWN5LXRydW5rCisxMjY5NyBhMzY5ODY1NjlhZjE4ZDY4NDFkOTYxNjY1ZmQ3YmM4Mjk0MTQ1NTdjIGxlZ2FjeS10cnVuaworMTI2OTggMWUwZGQyZWYzOTcxYzJhY2IwZDA3NTdlMTRhZThlNDVhY2Q1Y2U0NyBsZWdhY3ktdHJ1bmsKKzEyNjk5IGRlN2MwMDAzNTc4ZjhhYTZlMjlmYWQ3MGE3OGFmYWZhMjI5MzE4MzAgbGVnYWN5LXRydW5rCisxMjcwMCBiNWYwN2E0YTY1NGJmMDcxYzE1Y2NiODM2OTRmNTFmNGMzZmQ2MmFkIGxlZ2FjeS10cnVuaworMTI3MDEgMjc5MDI1NTVmNjcyMWRkM2EwMjExYmUyZjQ2Y2EzYmQ4NWE2MDgzNiBsZWdhY3ktdHJ1bmsKKzEyNzAyIDA0OWM5MTM0M2Y5NTg4YWY1MDQxOWRlZjUzNzZmZTU5NjhhODhiOTggbGVnYWN5LXRydW5rCisxMjcwMyBjMGY2OWNiZTgwNWQxN2U2YTk0M2VkYTQxZGQzYmMyZTUzYTcwYjhlIGxlZ2FjeS10cnVuaworMTI3MDQgZTFkYTI5MGFjYzVmMTBlZGQwMzlhN2M5YmU1ODNkMDNmYWRlNWE3ZCBsZWdhY3ktdHJ1bmsKKzEyNzA1IGRmZGZmODcyNDg4NzVkZjU2YTQxYTNkYzJmZGZjNDZiMjIwMDFmNjEgbGVnYWN5LXRydW5rCisxMjcwNiBiZjQxODQwYzgxNTA3MjJhYTBiOGI4YWI2OWNjZjJiYjNjNmMxOTUwIGxlZ2FjeS10cnVuaworMTI3MDcgMWM1OWE5OWU5OTcwZjA2OTUzNDQ5NTkyNGFiNGZlMzg3ZjE2OGEzZSBsZWdhY3ktdHJ1bmsKKzEyNzA4IDAyYjE3MmE1ZDg5M2Q3YTcxMWNhODYzMGE1MDJjY2RmODlhZGFjMjcgbGVnYWN5LXRydW5rCisxMjcwOSAyOWQxZDNiMDhjYTdkNGY1OTZlMzE0YWI4MTlkNWQ2OGFhZTY3OTYwIGxlZ2FjeS10cnVuaworMTI3MTAgYTg2ZmUxZjNjZjRlNjViMzc1MjZjOWE4YWVmOWJkOTRlODg4MWVlZSBsZWdhY3ktdHJ1bmsKKzEyNzExIGQyODIyNzRmYmI3MjJmZDg1NWM3OTFmNzEyMTRmNzIzNjE5ZGViYmMgbGVnYWN5LXRydW5rCisxMjcxMiBiMWQ0MGZiMTBhZjZjYmQ5ZGU1ODVhZjY4MTUyNzQwYzVhOTA4YTFkIGxlZ2FjeS10cnVuaworMTI3MTMgMzJiNDNlNWQ4OGQzNTgxZGE2MDIxMTk5Njg1YWMzNWQwZGU0OWE3ZiBsZWdhY3ktdHJ1bmsKKzEyNzE0IGUzMzk3YWU4ODEyOTIxZTg1NjM0MjQ2OWNhYTIxZjUyYTBlMjgyZjggbGVnYWN5LXRydW5rCisxMjcxNSAwMmUxMzNlYWJhYzY5NmRmNmE3YmJhMDE4OGMyNGRjNDYzMjZhZjljIGxlZ2FjeS10cnVuaworMTI3MTYgMWZiYzRiYWUyOGNmMDU4NzE3NGIxZDc3ZDZkOTBiZDYxOTc4MDI2ZSBsZWdhY3ktdHJ1bmsKKzEyNzE3IGQxNjg2Y2YwOGQxMTZjNzE3ZTVmMzY4M2JlNmJjMmZiOThiZDQyZTggbGVnYWN5LXRydW5rCisxMjcxOCA2MWVkZDNiODVkNjM2OWQyY2FjNzQ3ZGRiMjlmMTQ3MzdkYjcwM2M0IGxlZ2FjeS10cnVuaworMTI3MTkgY2Q0NzY0NDJlZjcxNWI2MjRlNjk5MWQxNGM5M2Q1ZWQ1MzAwOWZiYyBsZWdhY3ktdHJ1bmsKKzEyNzIwIDQ3N2U5ODEwOWM3ZDY2MTUxODgwZmIyY2MzMzViODcxOWM0MzVkZDIgbGVnYWN5LXRydW5rCisxMjcyMSBhMjkxOTJmMmQ0N2FmY2Y2NDMzMDg1Nzc5YTM5Njk4YWVjNmJmZTQ2IGxlZ2FjeS10cnVuaworMTI3MjIgMGVmMTA3MWNiN2ZlZWQ5MTczNTc3YmVmOTU5NmMwOWNiOWIyMzAwMiBsZWdhY3ktdHJ1bmsKKzEyNzIzIGZlYjQxNTAwODc2NWU0M2VlNjkxMjQyNTllZDhkOTNhNjMwNGRjMDQgbGVnYWN5LXRydW5rCisxMjcyNCBiMzAwNzdjNTczNDg1NDJiZDYxZTZkODFmNjFkZWU0ZmMyNGI5NzcyIGxlZ2FjeS10cnVuaworMTI3MjUgNTUzZWQ2YWU5ZTdhODVmYTRmODg2ZTJjZWNkZDlmNWE3OTk5MTYzYiBsZWdhY3ktdHJ1bmsKKzEyNzI2IGRmNGE5NjdhODE0NjJlYmQyZmMxZmRiOGE2NTAxOTRjNDBkNWE5OGQgbGVnYWN5LXRydW5rCisxMjcyNyA3YmJlNzE2MzFjM2YwMjg4M2JlMzZlNjFhODg1Y2QwMTJlYmU4ZDUxIGxlZ2FjeS10cnVuaworMTI3MjggY2QxMzBjOTU1OGRiMzhiNmVlNjA5YzA4NGRiZjhkODM3YjBlZDQ0NyBsZWdhY3ktdHJ1bmsKKzEyNzI5IGFlNjEzNTI5NzU3NDJmYjkwNjM5MDIzY2FhY2Y5YjJkZDE4ODA2MzUgbGVnYWN5LXRydW5rCisxMjcyOSA4ZmU3ZWM0YjRmYzE1MThmY2FjODllNmJmNjc0ZmJiY2UxNjE1MGE5IGxlZ2FjeS10cnVuaworMTI3MzEgY2U1N2ViMzA5NjhhNWI4OTJjOGQxNzdjYTA4ZTUxZjhhN2ZmZWJjNSBsZWdhY3ktdHJ1bmsKKzEyNzMyIDBlMTQ3YTUxNzRhMTUyMTllMTVkYjZlYzM3NTBmNmIwMTg5ODZkYjIgbGVnYWN5LXRydW5rCisxMjczMyBhNjVmODc1ODQzNTRhZTY2YTIyNGYwNmU3MDVlMzJjYzJkYjMxOTU3IGxlZ2FjeS10cnVuaworMTI3MzQgOGNjY2ZjNmQ2MjcyMzY3NGFiM2ZjNDhmMzYzZmRhOGZhZmU2NDIxYyBsZWdhY3ktdHJ1bmsKKzEyNzM1IDI0OWQ5YTJiNWJjOTY4ZGY0OTI5YTFmZjg1ZmQ1ZjMzNmFlYjY2ZTQgbGVnYWN5LXRydW5rCisxMjczNiA5MmZjZTQxNGYzODIzMDhkNGM2ZDQxMmY1MGVhZmEyNzYyMTIxMTRmIGxlZ2FjeS10cnVuaworMTI3MzcgNTc0NGE2ZGIyZDRmODQxOTU1MDYyNTA1NjVmYjdlZDdjNzVkNTRlNiBsZWdhY3ktdHJ1bmsKKzEyNzM4IGM1ZTgzNDdlYjgwOWMyOGM1NTIxMjNjNTRlNTQ2MzM5MTE0MjFhN2UgbGVnYWN5LXRydW5rCisxMjczOSBmMWNjYmQ2YTk0Y2UzMzNkMmM0ZjEzZjQ3Njg0MWNiOGUxNjZjY2U4IGxlZ2FjeS10cnVuaworMTI3NDAgODY2NDJiN2E3YTYwZjU4NDg4MDVjNTY0ODEyYmMxZTk5NTc1NTcwZSBsZWdhY3ktdHJ1bmsKKzEyNzQxIGMxYmVmZGJkNjRlNTcyMjllNTBjNTY1NTk1Njg1ZTk2OTcwZTI1YWYgbGVnYWN5LXRydW5rCisxMjc0MiAzNTkyNDRmYTZiNTJhYjBlYmJhZjljZjAzMTc2NjUwZThiMGJlYTYwIGxlZ2FjeS10cnVuaworMTI3NDMgZjEzOGJhNzJiZjJkOWYyZTNlOGUxODBlMzk1YzJmN2ZjYTcyZWY3YSBsZWdhY3ktdHJ1bmsKKzEyNzQ0IGI2YjkzMDA2ZDA3Njg0MDA2NzMzMzAzZmI0ZjA4MTNhYzI4NzZkMDkgbGVnYWN5LXRydW5rCisxMjc0NSA1NzVjNGVhMjU0MmJjMGUyZjQ0YjYzYWFjMGFkMTJmOGIyOTUwZmU3IGxlZ2FjeS10cnVuaworMTI3NDcgMzJjNDIwNDc0MmJhZmQ2ZDNjNjIyOWFjYTFjYzM2ZWRiMjQ5MThjYyBsZWdhY3ktdHJ1bmsKKzEyNzQ4IGJkYmZlMGVjOTcwZjg5MmQ2YmI4MjBhNTMwYzVjNWM5MjcxYmM5MmMgbGVnYWN5LXRydW5rCisxMjc0OSBjNWYxMWM1YmY1YjIyMDA2MTQ4MWFjMmFlZTQ5MGY0MzcyYzMwMmQ5IGxlZ2FjeS10cnVuaworMTI3NTAgMWEyYTBhM2U5ZGRiMmUxMjJmY2ZiMTlmMTQ3ODg3YzU5ODMxMjAzNiBsZWdhY3ktdHJ1bmsKKzEyNzUxIDg5NWQ4NjFhMDg3MDFmY2RjOGJiZTJhOWI1NDRjNzFjOGY0YzBjYWYgbGVnYWN5LXRydW5rCisxMjc1MiBlNTljYTVkMzQ2ZjRkZjJjODQ0NmMzYzJhMDIxNWMzYjg3MTUwYWJiIGxlZ2FjeS10cnVuaworMTI3NTMgNDdjMTFlODI3Njk5OWYwMDc4YzA3MWRlMmI5ODM4M2M3NzAyZjk1NiBsZWdhY3ktdHJ1bmsKKzEyNzU0IGQ4MzkzNWQxNDA4NDU2N2Y4ZWE0OWQ2NDhkODM1NjdiMGU2ZGMzZjEgbGVnYWN5LXRydW5rCisxMjc1NSBjMjdjMTBjNmI5ZjI4Mjc0MDFkOGQwM2FlYzgxNDFiNGY3ODdiYmVhIGxlZ2FjeS10cnVuaworMTI3NTYgMTNiNDVjNzRlOTdiNTMwNjYyMjYxYjJkYTM3ZTlhYjVkMzJiNTllMiBsZWdhY3ktdHJ1bmsKKzEyNzU3IDhmZWIyOTUwZGE3YjI2MzIzOGZhMmI0MGZiNDY0ZDljNGUwN2NjODYgbGVnYWN5LXRydW5rCisxMjc1OCAwNjE0ZTdmMTY3NDFmMmExNTg4ZTI0ZDRlMjkwYzQwYTBlNjdiM2U5IGxlZ2FjeS10cnVuaworMTI3NTkgYTQ5MTNiYWU5ZjkzZTdmNDEwMDAwOTgyNTY1OGU2MjdkMjMzYmJjZCBsZWdhY3ktdHJ1bmsKKzEyNzYwIDBjYjhlNWVhODRhOGRhYWMwZTk1ZDQ0NDY5N2NhOTZhOTAyYTZmZTYgbGVnYWN5LXRydW5rCisxMjc2MSAxNjNmZDNkOTVjMTdlNDA0ODIyNGExYzg5MjExZWY4NzFhNDEwZDVjIGxlZ2FjeS10cnVuaworMTI3NjIgMGE1Y2RkN2U1ZmMzZjg1MGE2YmRjMTllZDJkNWM0MzQ2ZTZjODhkOCBsZWdhY3ktdHJ1bmsKKzEyNzYzIDI2YTAyMDYwYmFiMTc0MTZjZjgyNGM3NWY1ZGQ1YWFmOWYzMzU1NDEgbGVnYWN5LXRydW5rCisxMjc2NCBiNjRmMzM1OTRhMzExMDY5OGYwZWJkYzdjYzU0YmM1Y2NmMWM3N2QwIGxlZ2FjeS10cnVuaworMTI3NjUgZTgzZjY3NmQxNWMyODljZWI2ZDdjOTAzYjU1Y2YwYWI0MjFkYTBmOCBsZWdhY3ktdHJ1bmsKKzEyNzY2IDI5NzAxZTI5MDRhYzU0OTcwOTlmZDA0M2QwMzE2MDVmZDNmMTNkMTIgbGVnYWN5LXRydW5rCisxMjc2NyBiOWJiNzVkZWQ4MDRhY2E1N2JlOTYzYWYyZGNkZDQ4NTZhYzkyZjUzIGxlZ2FjeS10cnVuaworMTI3NjggNDg3MDBmOTljNmE2ZDMxZDUyMmQxYzc0ZDNhMTBmMzUyMmUzM2ZkZiBsZWdhY3ktdHJ1bmsKKzEyNzY5IDJmNDI1YTU3ZDlhZmU3MWVmNDRlZGVmOWU5MTAzMDgzYThiMGE5ODMgbGVnYWN5LXRydW5rCisxMjc3MCBhYmFjN2Y2Mjc1N2M4MzExOGY1ZjNmZGNiNWU4MDc5YmQwZWM2YTg5IGxlZ2FjeS10cnVuaworMTI3NzEgMzVkZjRkYzJkMzBkNTQzNjJkNWEyOTE3OGFhYzg4MTVmZGU1YmIxMyBsZWdhY3ktdHJ1bmsKKzEyNzcyIDBlMzU1ZGZkNmY3ZDE1Y2MzMmRmMjcyODA2NGYxYWE2NmM0MjNhYTMgbGVnYWN5LXRydW5rCisxMjc3MyA2NGJjYTNiY2FhMzc0ZjE3NjUwYTE0MjIyZDY4ZDEyNzkyOTQyN2FmIGxlZ2FjeS10cnVuaworMTI3NzQgNjVhMjUzOTcxZWNjZTg2NjUzZTUwMzAwODBjYmZkZTU1Nzc4YWY5YSBsZWdhY3ktdHJ1bmsKKzEyNzc1IGEyYTc2ODFiMjVmMWY1OWJlY2VjYTU4NWUwZmJlMWEzOTNlMjg3ZDggbGVnYWN5LXRydW5rCisxMjc3NiAwOGVhZGM2NTBlZjA5NWM3YTVlZDZmYmFlM2ZlODVkYjliMDM5NGM2IGxlZ2FjeS10cnVuaworMTI3NzcgMTlkNjEyMWZlNGYzNDNjNDYzYmQ0Y2MzOGFkMWM0ZjY3MjA1YTlhYiBsZWdhY3ktdHJ1bmsKKzEyNzc4IDYzMmJkM2E1ZGRlZjViZGQwNWMxOTNhZjU1OTM4YmI3MThhYzIzYmIgbGVnYWN5LXRydW5rCisxMjc3OSBiYTVjNjI5MDgxMjI1YTJhOTNlZWM2Yjc5OWJkY2QyNjM3ODJlYWU4IGxlZ2FjeS10cnVuaworMTI3ODAgODYwMzVhZTUzMDZjMTE3YWY3ZGZkZDI5NTM2NmU1M2Q4YjIwMzk3MiBsZWdhY3ktdHJ1bmsKKzEyNzgxIDQ2YWMxMWI3OGU5Mjc4MDU2YWE5NmU3OTZkYWU3ZmQ4MmViOGMzMDcgbGVnYWN5LXRydW5rCisxMjc4MiA4ODZlYTI1NWYzODFmZjBjNmRiNzBlMjc5MTIyMmIyZWI3MjE4OGMyIGxlZ2FjeS10cnVuaworMTI3ODMgY2M5ZmQ1MDYzMGE2OTljYjAzYzJhZjBiMzI0ZjBiNzQ4MzIxOTFmZiBsZWdhY3ktdHJ1bmsKKzEyNzg0IGNlZjJhMTM0NTY5NWQxOGY4MjEzMGQ2MWQ1NjI2MzZjYzgxZDNkNmUgbGVnYWN5LXRydW5rCisxMjc4NSAwMWRhZmM1NzFhMzAzMjg1MTg2OGMxNTA1ZDdmZmJiODFjODExMjg3IGxlZ2FjeS10cnVuaworMTI3ODYgZDNiZWNlNDY0ODZlMjlkN2EyYzVhNjJmOWZiYzFjNTExZjM5ZGQzYiBsZWdhY3ktdHJ1bmsKKzEyNzg3IDA2ZGEzYmEzYWFkZTJlNDdlZjcyYmM4ZTY1MmE4YmEwNGMyYjNlM2MgbGVnYWN5LXRydW5rCisxMjc4OCBjZDRjNDUxMGFkYmQ0N2U5ODUzMTlkZjFjMDcwY2YxYzU0OGM0NjkwIGxlZ2FjeS10cnVuaworMTI3ODkgM2I4MWE3ZDQxOGNiZWU4ODQ3NjMwMjY4NzVjZTk5ZWJiMzg3ODRjZCBsZWdhY3ktdHJ1bmsKKzEyNzkwIDNlM2MwOWUxNDUwMzFkNDAzOWI4OGM5YWVmZGI3N2IwYzg3MmI2MTAgbGVnYWN5LXRydW5rCisxMjc5MSA1YzBjMDYxZGUyYWViYTZmOGVkNGVjZWQ2MTM1N2ZmNDA3ZGZjMWJiIGxlZ2FjeS10cnVuaworMTI3OTIgMWU3NjZkZTcxNGRlYmIwZDM3MTgyZTU4MTY4MTg4M2FmNjAxYTM3MiBsZWdhY3ktdHJ1bmsKKzEyNzkzIDVjYzcxMjI2NzFhZWFmYThlMzEwMzc2NzRkMjNkMjk2MTk5OGUyNjkgbGVnYWN5LXRydW5rCisxMjc5NCA5YmUyNzI2YzliMjU0Y2Q4YWRhNmExZTdlYTFjMTY1ZmFjMGU5ZTU5IGxlZ2FjeS10cnVuaworMTI3OTUgMWM2YjEwZGVhOWYwNWY4NTY0N2UwYWNhZGI5MzAxNmQzMTMwNTg0MSBsZWdhY3ktdHJ1bmsKKzEyNzk2IDI2ZGIxZTk2Y2FmMzk0NjlmZTk4YTc4ZTZjNjU2OWY3YWFiZTU5MWIgbGVnYWN5LXRydW5rCisxMjc5NyBiNzgxMzViMTBhOGUxZTZiZjMwYzk1NDc3MGM4ODViNDk3YWRjNGQ5IGxlZ2FjeS10cnVuaworMTI3OTggMjRkZWY2YzI1YjBhMDUwYWVlMWZiZWQwZTMzN2Y3NzI1ODAzZGIzMyBsZWdhY3ktdHJ1bmsKKzEyNzk5IDUwMDM2ZDA2ZTk0YWE4NDBkZmY1NDZiYjQ5ZDVkMTlhOGZiMmNiOTYgbGVnYWN5LXRydW5rCisxMjgwMCAzMjQxMWFmOGMwMTI5NzYwMzZiMzFhMDlhMDY4NjlhNDA5NTFjYzNhIGxlZ2FjeS10cnVuaworMTI4MDEgY2MwYzkwNmMyNDE1NjY4ZDMxNTJjM2RlNjM2NTQxMjZmMjZlZmUyMiBsZWdhY3ktdHJ1bmsKKzEyODAyIGE5NWM3ZDJhODNmN2QwMTUxYTA0MWQ4NTgxNzExY2I3YmQ3OTRkZWYgbGVnYWN5LXRydW5rCisxMjgwMyBmZDA5YjNmZDFlZGM0ZGE0Zjk4ZDM3NzE3NmUxYjc3NDRkODA1MmQ3IGxlZ2FjeS10cnVuaworMTI4MDQgNWU4OTg5YzJmODVkZmRmYWVmOTk3MjVkY2NlZmZiNmNiNzJiYzY5OSBsZWdhY3ktdHJ1bmsKKzEyODA1IDg4YTdkODU5OTAwZTNhMTM3N2U4MzJlMDQzZmU5OTJhMTYyMWIxYzYgbGVnYWN5LXRydW5rCisxMjgwNiBmMWY2MzY0YWRkYmRlZGMxOTk0ZGVmMDFjYjU5MWQ1YWZkNTFmMjA4IGxlZ2FjeS10cnVuaworMTI4MDcgYjY0OGY5ZThiM2VkYTI5ZmExMjVjNWE3YmJmMmY1Njg5Mzc1NTg2YyBsZWdhY3ktdHJ1bmsKKzEyODA4IDVkYmNkZGJkZWQwMGIyZDhlODAwYTc4NGI2ZDFmMjM4YmRkNDMxNzkgbGVnYWN5LXRydW5rCisxMjgwOSA0MmM5YThkMTA4MzQ0ZjE3NTgyN2E1NzFjNTNmZjAzMmY2ZDM1ZjAyIGxlZ2FjeS10cnVuaworMTI4MTAgZTdjMDlhNjJiZjFmMWE2MjI2YWY0Yzg0ZWZiMGRhMjNjYzU0ZjJhOCBsZWdhY3ktdHJ1bmsKKzEyODExIGUzMDg5Mzk2MTM5ODI3ZjcyMzM3Mjk3NGQ2NzE2YTRhMjI1MGJmZTMgbGVnYWN5LXRydW5rCisxMjgxMiBkYjMyZGViMTNjOWYwNmUwOWZjNzFhZWNlODZlYTdmN2U3ZmIyOTQxIGxlZ2FjeS10cnVuaworMTI4MTMgYTRkOTk2MDczNDRmMDc4Yjg2YjQ2YzFmYjliNzU5ODk4ZDJhZTBiNSBsZWdhY3ktdHJ1bmsKKzEyODE0IGNkYWU2YzExNDVmNGMzYjhlNzIwZjBjZGE4ZmQxNmRiZTU0MDdjMGMgbGVnYWN5LXRydW5rCisxMjgxNSAxZTU3YWVlNTA1NjU0ZWVlYzVhNzk1MTJjMjVlNzVmNTk2ODAzM2ViIGxlZ2FjeS10cnVuaworMTI4MTYgZmExOGIwZmMwYzE4MWU0M2U5OWFmNmI3ZTJlMDcxYTA4YTFhZTJmOCBsZWdhY3ktdHJ1bmsKKzEyODE3IDkwYzc1MmFlNDRhNmI5MWY5NDg4MzA1MWJlNTIyNGNhODFjODk4ZGQgbGVnYWN5LXRydW5rCisxMjgxOCA0NGEzNzVlMzFhZTJmZTdkODBjZGNkODMzMzhlYjliMmQ5ZWRkNmJhIGxlZ2FjeS10cnVuaworMTI4MTkgNDQ2YjA5NjdmN2Q5NjljZjA2MDBmMTMzYzk5MzIzYjhlMWU0N2IwNSBsZWdhY3ktdHJ1bmsKKzEyODIwIDM5YmQ3Yjg0NzhkYjM1Y2RlODJkYjFhNjY3YTVlOWRmNGMxYzQ1YTEgbGVnYWN5LXRydW5rCisxMjgyMSA0ZGQ3NjhhZTg5NWU2NGNjODEwZWU1MTY1ZGZjZDkzZDZiNTI1MTQ3IGxlZ2FjeS10cnVuaworMTI4MjIgOTAwMmY0YjQ3MDAwYTNmYzdjMzE4NGU2NmE0MmMyYzNmMmFlNDRlYSBsZWdhY3ktdHJ1bmsKKzEyODIzIGU5MzVkODk0N2UzMzk2ZThkMDdhMDczMzU5NmFhN2FmNDk1MmE2ZTAgbGVnYWN5LXRydW5rCisxMjgyNCBiZDA3Njc0YzNjOGIwNzRlZjg0OGE5MGVkZTNkOTk4M2NlMzY0YTRhIGxlZ2FjeS10cnVuaworMTI4MjUgYTg3Y2ZlYTMwYjA0ZDgwYTM3NjRiZGNlZGUzZjg3NTI1MmI3NDIzNyBsZWdhY3ktdHJ1bmsKKzEyODI2IGZlZDY2YmRkY2U2MzgxZWIzNDhkYjM3OWMyNDljYTY1NTVlMjI1NDUgbGVnYWN5LXRydW5rCisxMjgyNyAwZDBlMjIzOWRmZDhjMDY4NThiNDhlM2ZjMWQ0NGNhZTc3OTQxMjkzIGxlZ2FjeS10cnVuaworMTI4MjggNGEzZTYzOTM4NDY5NDExMWU5MWQ1ZTI1YmMyOTE5ZjdiZGE4OGJmMCBsZWdhY3ktdHJ1bmsKKzEyODI5IDRjNGYzNjJmYTBhNmFkODUyMDQ3ZTUwODMyNDMwMmU3ODY5NGNjOTQgbGVnYWN5LXRydW5rCisxMjgzMCA2NmE3ZDYxY2ZkODRhM2RkYTlkMjUxY2IwMWYyYzBhZDJhYjYyYWRhIGxlZ2FjeS10cnVuaworMTI4MzEgZjQzOGM2ZTJiNmMxOGU1N2NkOTI0ZDY2NDRmYjkyOWE5OTMzYjg2MCBsZWdhY3ktdHJ1bmsKKzEyODMyIDIwN2I0MGVjOWE3ZTM5MTRiZmFjYzJkMWE2ZGZiM2ZiMDE4YTczN2MgbGVnYWN5LXRydW5rCisxMjgzMyBiZTA1NjA5NDc4YmVmMDQzOTU1YjQzMzRkMmU5ZWMyYjljODdjNTU4IGxlZ2FjeS10cnVuaworMTI4MzQgYWJkNDIwMjlmYTAxMDFkNTQzZmU2MTE1YmQ3MDZmM2YwYjJhZDliMiBsZWdhY3ktdHJ1bmsKKzEyODM1IGZmZjgyZDJmYjM2OWVmZDJlYzA5YTZiZTBmNjlkZDlkYzZkOGZkY2EgbGVnYWN5LXRydW5rCisxMjgzNiBiNmVkZWMxZWZlNjQyNzg1MWJhMTkwODk0YzBmZjg4MjYyMzc0NWNjIGxlZ2FjeS10cnVuaworMTI4MzcgNjEyMjQ0NTliYjA5MzYxYjExZjM0MGI0OWYzYjI4OWUxMDE1M2YzYyBsZWdhY3ktdHJ1bmsKKzEyODM4IDA5M2ZjMjk4YWZkNmIwZTAyZTQxMWE2NDVkMWMxZWNhODdiYjk3NmMgbGVnYWN5LXRydW5rCisxMjgzOSBkZGJmMWFjYjcxNzAyZGQ1MTkzNGVkZmJmNTUyYjZkMzU4ZDJjYmI1IGxlZ2FjeS10cnVuaworMTI4NDAgYThkYzU5YjY2ZjQ5NjZjYWM4M2ZjYTA1YjlhMTE5OWEzNzNjNTllNyBsZWdhY3ktdHJ1bmsKKzEyODQxIDVjNzBlY2RlZGVmYzMzNjQ5YTdjNTViM2UyZWZmMDk1MWU3M2FmZDggbGVnYWN5LXRydW5rCisxMjg0MiA2ZWUwZWNlYjc3NWYyZDIyZTkwMWMwY2FhOGY1NDdjZjBlODgyN2FkIGxlZ2FjeS10cnVuaworMTI4NDMgNjVhZWQ1MjlhZDhhZGFmMzQ2ZDE2ZDNkOWE3N2NkZWUxMjBlNjQxOSBsZWdhY3ktdHJ1bmsKKzEyODQ0IDA4ZDMxOTRhM2MzZmM4ZDY1MjgzMjEwN2VkZDZlNjQzYmZlNDVlZGQgbGVnYWN5LXRydW5rCisxMjg0NSA4ZDA5MmE2NzJkMDliYjE4ZDg1ZjUwMTI5OTAxNzg1MWZhNmM3ZmNiIGxlZ2FjeS10cnVuaworMTI4NDYgYjlhODBiYmJlNGE1YTY4NWIzODVjMmUxZWUwMTNlZTllZjc3ZmQxNCBsZWdhY3ktdHJ1bmsKKzEyODQ3IDZkYjM1ZWU5MGJmYWMwM2U1YzBmY2UzNjBhMWQwY2Y4YTZhNmY5NTMgbGVnYWN5LXRydW5rCisxMjg0OCBkNzM5ZTFlYjYxNzUxYzE5OTVhMjY3Y2QyZDc2NmNiMGE5ZDJkN2EwIGxlZ2FjeS10cnVuaworMTI4NDkgNGUyZDE4OTczYjk0YTAzNzdmMjViMmE4ZGU2ZGQ0ZjAxN2UxNzczMCBsZWdhY3ktdHJ1bmsKKzEyODUwIDFkODU3YjU5NzU4MjM3ODc2MjYyMjM1YjE2ODdkYmZiY2E5ZGFhNDUgbGVnYWN5LXRydW5rCisxMjg1MSA4OTJkYmE3ZjQwZGVlZmVlZWJlOGJhNzVlYzQ3ODFkMjk2YTU3NjQ1IGxlZ2FjeS10cnVuaworMTI4NTIgN2EzOWM4NzNkYzgxODBjOTc0ZjFlMDRhM2M3NmZmY2M5NWJiZmMzYyBsZWdhY3ktdHJ1bmsKKzEyODUzIDY3ZmY5ZTdkYzhhZmY0YTAwZTVkYWUzYjVkMmE0ZGM5OTFkOTVkYTggbGVnYWN5LXRydW5rCisxMjg1NCBhNzk3ZjBjNmMyZTFkZDEzOWMxNDk1NzM2Y2MyM2EzYmQ5YWQ5ZmIxIGxlZ2FjeS10cnVuaworMTI4NTUgZTZkMzRjYzBjNzljOTYyYzM5ZmU2M2FkZWZkODM3NjZjMmY2YmY0NyBsZWdhY3ktdHJ1bmsKKzEyODU2IDZiNTc5MGNlMjUzNmRjNmU0NjEyN2UxZTIxMDdlYTk1ODA1NjY4MTIgbGVnYWN5LXRydW5rCisxMjg1NyA1MGQzMDk5ZDUwYzIxZDNjNzg2ZTBmOTY4MWY1MmZiYzNmMzFjM2Q0IGxlZ2FjeS10cnVuaworMTI4NTggNDA3MDIyY2YxOTMxYzE1ODc0MGU5ZWEzZGU1N2NhNzlkNzVlMjJmZSBsZWdhY3ktdHJ1bmsKKzEyODU5IDg5MjNhZDdlMTNmMmIwMTU5ZWRlMWFiMDM2Y2NhOTM3ZmFkZjY5YjMgbGVnYWN5LXRydW5rCisxMjg2MCBlOThlMWVhNTFmMTYyNmQ1ZTZmNGQ1ODk2ZTE2YzNkYjEzMjI1NjZhIGxlZ2FjeS10cnVuaworMTI4NjEgZGEwYzEzMzBlNjZlZjJjZDBmYzA1OTMwZWM5NWM1YjIxMWNmMDE1ZiBsZWdhY3ktdHJ1bmsKKzEyODYyIDcwYTNmYjFjZTIzYjQxY2I4MjYwZTA5MjkyMWE5MzJkODE2ZDg3MzUgbGVnYWN5LXRydW5rCisxMjg2MyBlYTBiYmMzYmYxZGZhNjE4YjRjYWExOWUzMDA3YTY2OWY0ZjA0ZjdiIGxlZ2FjeS10cnVuaworMTI4NjQgNTBlNGRkZGI4MjhiMjA3MTJlNTk0OTI5ODg0OTU5OWRiOTVhYzJjYiBsZWdhY3ktdHJ1bmsKKzEyODY1IDE0MDllNzY4N2E5YTAzYjI3OGRmYTRiOTc1YjU4MTBkOWYyYTdmMGYgbGVnYWN5LXRydW5rCisxMjg2NiA0ZGFhYjdhOWY1NjZhZDQyMTU1MjQ2OTI2Zjk1ODdkZDRjYjQ0YWViIGxlZ2FjeS10cnVuaworMTI4NjcgZDUxNjRjNjZhY2M5NjNiYmJmZjIwMjA2MmVhZmVkY2U5MGRjNWE4YSBsZWdhY3ktdHJ1bmsKKzEyODY4IDI1ZDdkNGQ3Mzk5ZjEwY2FhYWZmOTA4MzFlYWNlZjI3OWIxMTA1OTcgbGVnYWN5LXRydW5rCisxMjg2OSA2NWU3MjEyZGYxYmNmMWNjMTdhNGM5NmQ5YTI4NGE4NzMyODYyZGRjIGxlZ2FjeS10cnVuaworMTI4NzAgYzVmNDlkNGUyOWM1MDM5ODNlMTI1OGMxNmJlYTRlYzJkYWM1YjhkZSBsZWdhY3ktdHJ1bmsKKzEyODcxIDc5NWQ1MWFkMjI4YTI0MGRkNDY2NDczZWI2YTI4ZGQxM2EzZWFkYzIgbGVnYWN5LXRydW5rCisxMjg3MiAxMzJmOTQ2NDJjNzRkMjg3MjQzNTNkZjNiMGVlNjkyY2EwY2JjODM4IGxlZ2FjeS10cnVuaworMTI4NzMgOTViOTIyNWE1MmU0NWJiMjU2ZGJhZTE1ZjUxMTQxZjY4MjI4YTg4OCBsZWdhY3ktdHJ1bmsKKzEyODc0IDk2OTEzOTA3YWU2OGQ5NDY5YzUxMmQzZjg0OTA2Y2Q4MDA0NzM0ZGEgbGVnYWN5LXRydW5rCisxMjg3NSBmYjdmYTQ3NjIxMWYzNWQxNTljMjExNGMxNGE0Yjc5YjYyOWFhOWU5IGxlZ2FjeS10cnVuaworMTI4NzYgMDdlZTc5NTc3NGQ4OWI0MWJlYjNiZDU3ZmZmN2Q4OTRlYzJkZWE1MyBsZWdhY3ktdHJ1bmsKKzEyODc3IDQ4MTQxZGE1MThkZmE3Y2FjMjlkN2E2ZWE3MTQwMTU0MjViOGI4ZWIgbGVnYWN5LXRydW5rCisxMjg3OCA0MTdhYTQyNTAxM2FkNzNlYTM4MDJmNWYwMzZlYjNjZjk5YWFiMzMyIGxlZ2FjeS10cnVuaworMTI4NzkgMzM3NzMzY2U5NTkzZmIxZWEwNWQ2OTc2YTc5YTQ5ZTAyNjkwMDY0OSBsZWdhY3ktdHJ1bmsKKzEyODgwIDRjYmIyMTIyYzczNThmNDg1MjJhNDExMjNmOWIxZTYzNWUzYWYyZTYgbGVnYWN5LXRydW5rCisxMjg4MSBkOTgwODVkZTk3ZDFmZTg4YTVjYThkMjE4NDk4NjhkNjYwMDhmOTViIGxlZ2FjeS10cnVuaworMTI4ODIgOWU5Njk1ZTMxNGM5NjA3MDM2MjI2Zjk1NjJiNmUzNjJlMzhlNTM4MiBsZWdhY3ktdHJ1bmsKKzEyODgzIDY5ODk4YWNiMjNmMjgxYmQ2OWNhMmVmNzRkZjk1YzQ4ZGViNDM4NjkgbGVnYWN5LXRydW5rCisxMjg4NCBmYjUxYWE4MjRkZjJkNDcyMTdkNDY3ZjFjNGI0YTMyOTFlNGFiNWIxIGxlZ2FjeS10cnVuaworMTI4ODUgZTJhMDhhODFlNTZmNGVlMjg1Njk1ZTIxYTk4ODMzNDg3MDZhYWJlNSBsZWdhY3ktdHJ1bmsKKzEyODg2IDcwZGQ5MWMyMTUxMzRmYWU0ZWRmY2UxODU2ZTc0N2U3ZDFiZDkyMjkgbGVnYWN5LXRydW5rCisxMjg4NyBkM2RjNjIwMDQ3NzZkZjAyZjQzMDcwZDllNWZlMTFjODgyZTY4YWRhIGxlZ2FjeS10cnVuaworMTI4ODggZTkzMzUyMjg2YWFjNmQxOWU4M2Q1NjA3ZGY1MGYxZDg2MTE5MjJhNSBsZWdhY3ktdHJ1bmsKKzEyODg5IGM1ODkwMjFjNDdjOTMzN2VlZjQ3MjUwMjE2NjY3NzdlMmY1ZmE5MGYgbGVnYWN5LXRydW5rCisxMjg5MCA5YzVkOWJkZjdlNDIzNDE5YmRmYmJkYzk4NDk3MzA1YjA0ZDU4MjNlIGxlZ2FjeS10cnVuaworMTI4OTEgZjRlNjA1YmQ4ZjFiNzZiNjYyZjc2ZTAwMzllMTNkZjdmYTk4YTQ3ZiBsZWdhY3ktdHJ1bmsKKzEyODkyIDAxNzNhNWY0NzIwNmRiZTQxZmEyOTNmYjg2YWFjNDVkYzMyYTJmZjUgbGVnYWN5LXRydW5rCisxMjg5MyBmYjgxNjU5NDg5YTE2NjU2NGExZWJhYzhhOGQ0YmJmMWMxOGQ4MGE2IGxlZ2FjeS10cnVuaworMTI4OTQgN2I4MTBhYTM1YjVjZTg2ZGIxODAwMmFkODUwOWExZTE3YjgyMGU0NCBsZWdhY3ktdHJ1bmsKKzEyODk1IGY1NGJhYzVhZjk4Y2EwMTQ3ZDg1ZGFmYzQxN2M3ODYxMDg0MjgwYjIgbGVnYWN5LXRydW5rCisxMjg5NiA3NDllMWIzZDgxNzNhMzA5M2MzNzBiOTIxMmVlMTAwZDVjYzE1M2NhIGxlZ2FjeS10cnVuaworMTI4OTcgNTIyMDY1MzJkMzg5MWEwOTMzYTJhYzlmOWQzMzQ2MGQ4Njg3MjU2YyBsZWdhY3ktdHJ1bmsKKzEyODk4IGYzNDMzMjk1MDBiZTc5YjEyN2Q2MzY4MmQ5Njc2NjdlMjZiYWEyOTcgbGVnYWN5LXRydW5rCisxMjg5OSBjMDY2ZmQ4NDMzYmE4NGVjMDUzZDNlYmE0YjdjMDdiODVmZGJkMmY3IGxlZ2FjeS10cnVuaworMTI5MDAgZGM5YjBkNDE4YzAwOWJiOGQ2OGE0Y2E2M2FiZDExYjU1MDU2Mjk0YiBsZWdhY3ktdHJ1bmsKKzEyOTAxIDdmMTQ3YzRlNDIxOWIxNmQ2ZTM0ZGEzMzQyODY2YTgyMzQ4YjgzMWUgbGVnYWN5LXRydW5rCisxMjkwMiAyYTRjMTc2ZGU2Y2RkM2M4ODkxNzY2ZDMxMDk4YzE4MTY5YTYzZGY1IGxlZ2FjeS10cnVuaworMTI5MDMgOTRhZDkwZmQyNzEyNmZlNWJmNjg4ODk5NWUyNjkxMzYyNmJlZTlhNiBsZWdhY3ktdHJ1bmsKKzEyOTA0IGY4MWRiNzM4YWJkOTJjMjZiMGQ0MTMwZmE3MWE0M2I0ZDExOTk4ZWEgbGVnYWN5LXRydW5rCisxMjkwNSA5ZDRlZmNlMTFmMDliMTU5ODZhMTEwODRhYjJhMjllMzA5YjViYmQ1IGxlZ2FjeS10cnVuaworMTI5MDYgOWM2ZGEzMGFlNjc1ZGNhNWM2OWRlZDcwNTY4NmRhZjg4ZjFhYmMyOSBsZWdhY3ktdHJ1bmsKKzEyOTA3IDgwZDJiOWFmZDE5Y2M1NTQwZjE2MmFjMTlkMGE4Mzc4OTJjNzQ3YjcgbGVnYWN5LXRydW5rCisxMjkwOCAyYzAzOWMwMTA0Mzc3ZTk0NWZlZTIzYzgwNmNjMmFlYmMwZDljMzZlIGxlZ2FjeS10cnVuaworMTI5MDkgMTU5ZjFjM2FmZTI4NGU5ZWM5YWU1MDRkZTczNGFiZTYwY2UxNjFmOCBsZWdhY3ktdHJ1bmsKKzEyOTEwIGNjZWY1YzBlOGRkYzY4Y2U1MTk3MWFjZDk2ZTNhZTI2YjZlODEzOTMgbGVnYWN5LXRydW5rCisxMjkxMSBhMTU0NGZjNDlhNzYzNDU1YTNlMDdjZWY1YzkzNzhiNmUwYTg4YmRjIGxlZ2FjeS10cnVuaworMTI5MTIgMDUwODMyZDgzOGNhNWVmODZmN2E3MWE2NmFlMWY0YjcyYWVjNTI4NCBsZWdhY3ktdHJ1bmsKKzEyOTEzIDk3ODIzMTg0MjY2YTAxOTAyMDBlYjM5Y2NhOTBkMTg2YjBkNjlmYjUgbGVnYWN5LXRydW5rCisxMjkxNCA5OTUyZjE2YmJlOGNlM2U5NzJmMDA1ZTIxMmE0Y2FjZTE0NmE1NjdmIGxlZ2FjeS10cnVuaworMTI5MTUgZTllNjliMDJkMGYwZDEwZmYzYWVmODYzZmQ3MGZjNWY5YmJjNTZiMCBsZWdhY3ktdHJ1bmsKKzEyOTE2IDQzNjNmYjJkNDM0NTAzZjc1MWE4NTY4YzU0ODE4NDU4MTY1OWJmNzcgbGVnYWN5LXRydW5rCisxMjkxNyBhNjMwZTU0ZTk3ZjI5M2JiYjY4MWY4OTQzYjhlMWQ4M2QzMmU4OWFiIGxlZ2FjeS10cnVuaworMTI5MTggNDhmYmM1NWMwNTUzNDE4ODBmOTUxM2YyOWFkMmI4M2NmNWFlOWNhMyBsZWdhY3ktdHJ1bmsKKzEyOTE5IDUyNDM4Yzg3ZmVkY2MyMjZhNjdhYTUyODc2OWNmZDQ1M2FiMGEwZTYgbGVnYWN5LXRydW5rCisxMjkyMCBkYzUwMmNlNzU3NWEyMDcyMTAxNjk0MDZmYWMxNTAyOThlNTIzYTIwIGxlZ2FjeS10cnVuaworMTI5MjEgYjhlNGRlMWMzNWNkYWQ5MDk2ZGEwNTZlNjBjNDNlMTEzNjUyNmI4MyBsZWdhY3ktdHJ1bmsKKzEyOTIyIGNhYmFiMWY1NTk2ZTI4NTI4YjJiMmU5ZDhiYTY0YWJiNzJlN2Q3MmQgbGVnYWN5LXRydW5rCisxMjkyMyA2ZDU4MjcwZGJjZDQzZDQ0OGIxYThkODMxNzQyYWViZDA5MDgwNGQ5IGxlZ2FjeS10cnVuaworMTI5MjQgMGQ2YmQzOTFhY2Q4MzcwOTc1ZTc0OTFmYjRkNTgyNzE5ZDc5ZmI1ZiBsZWdhY3ktdHJ1bmsKKzEyOTI1IGIzNjQ2OTM5ODI2MjY5ZTNlZWE4OWY3MTdlZWQ4YjcxNTlkYzM3YjQgbGVnYWN5LXRydW5rCisxMjkyNiA5YTRiYWYwYzU3ZWExOTQxOWVkZDc5OWZhYjAwMzM4Y2I0YWZkODUyIGxlZ2FjeS10cnVuaworMTI5MjcgNWNjZDNiODZiMWE2MzdmZDMwMmNiN2NlMGIzOTQ1MjFlYjA1Y2RlMCBsZWdhY3ktdHJ1bmsKKzEyOTI4IDRlOGRlZmVjMDlmODUwNDA3NWM5ZjA2MDAzMTRlYWQ3M2E3ZjM0MzYgbGVnYWN5LXRydW5rCisxMjkyOSBjMTc2OTY4YmM5MWMxMDkzMjhjNGQ5MzE4MTBlYzZlYzFmZjRjNmJmIGxlZ2FjeS10cnVuaworMTI5MzAgZTY3OTlhODU1YWY3OGM1NDdkNGU4YzJkOGU5MzkxZDFiMjQ3MWQ5NyBsZWdhY3ktdHJ1bmsKKzEyOTMxIDM1NzFiNGMxYmMwZTNkMzdjZGRmNzkxNWVmNWNiYzNjOGM3ZWQwOTcgbGVnYWN5LXRydW5rCisxMjkzMiBmOWFkMTQ4Yzk4MGNjZTBiZjcyZmQ5ZTU0OTBkNTVmNTRmODkyMTYwIGxlZ2FjeS10cnVuaworMTI5MzMgZDU5MmZlNWUwOWQ1NzRkMGRmMzU3ZDU2NWE3ZWE0ZDk3YTJhOTdlNSBsZWdhY3ktdHJ1bmsKKzEyOTM0IDA3ODllMGI1NTU4N2JiMjE4MWYzZWNkNmZlMGNiZTY1YmYwODNiNjAgbGVnYWN5LXRydW5rCisxMjkzNSAxY2M1ZDIwZDJlZDg0Mjk2ODFkNWI5NjQ0N2IxMDk1YWE1ZGRjZDljIGxlZ2FjeS10cnVuaworMTI5MzYgMmFiMGVjODQ3MTg0NzY3YzM4MzBjN2YyMzE0ZWM5NWU5NWQzNmEwYiBsZWdhY3ktdHJ1bmsKKzEyOTM3IGE0NzY4MzE1OTQ4ZGMzMTA3Y2QwZmE4YzFkZmExMDRiNGE0NzAzNjEgbGVnYWN5LXRydW5rCisxMjkzOCAzMjQ0NTBlYTU0NTAyYjg5MzYyMjIwNzkxMTZhMGI5N2JlYWVjZGIwIGxlZ2FjeS10cnVuaworMTI5MzkgN2QzYTYwZjRlMGI0NzM0NmVlYTAxYWFlMDY2NTY3MjYwMTMxYjRjOSBsZWdhY3ktdHJ1bmsKKzEyOTQwIDNiYzhmNTMwNDFjMDE1YmRhZjQ4MTU4NjJjZGM2YzU2M2Q0YTg4NjMgbGVnYWN5LXRydW5rCisxMjk0MSBlZTZmYTliODY4ODU0YWMxMzA3NGIxYjE2MGE2YmVlZjcxZmUyZmU3IGxlZ2FjeS10cnVuaworMTI5NDIgOWNlMTQ3NGFiZGRkN2MzNjlkODRkMjZiMTBkZDQzMmUwNmNhMWM2YiBsZWdhY3ktdHJ1bmsKKzEyOTQzIGI5NDE0NGRlMmYzMmI1M2UyZmQ1MTgyNWJkYTkyMDAxMzg5ZGE2ZDIgbGVnYWN5LXRydW5rCisxMjk0NCA5YmE1ZGZmY2NiMWJkYjQzNjM2MjcxOGUyYmJjMjhlZjIxYjBhMzQ4IGxlZ2FjeS10cnVuaworMTI5NDUgOTE4NGM5ZTEwOGY5N2JiNjZjZTEyMzNmOTczOGY5MmRjMmIxZmEyYiBsZWdhY3ktdHJ1bmsKKzEyOTQ2IGYzYTRjNGY0MDQ0Njc4NWU4NTY2ODQ3N2VkMzg0ZjRhYTFiOTEwOWEgbGVnYWN5LXRydW5rCisxMjk0NyAyYTE0OWU5NGVmNGFjMTQ1ZDVkMjFlNjUyMWFjZDc3MTdmMDRhMDYzIGxlZ2FjeS10cnVuaworMTI5NDggMDBjMzdjYjc1YzI4NTQ5ZDA0OTdlYjZmNGJlOGRiMzVlNWQwYzcyNiBsZWdhY3ktdHJ1bmsKKzEyOTQ5IGJmMjZiN2MxZTZkZWMxOWNhN2NhOTkxMDJkYmVkNjA5NzNmYjA2YzIgbGVnYWN5LXRydW5rCisxMjk1MCBkMzc2MjkzM2JmZjg4OWE5MDgzNmRkNTUzMDZkNmNiZmUyMDQwNTM1IGxlZ2FjeS10cnVuaworMTI5NTEgOTdhMDZlYzdjNmY0OWI3MjNiYTU0MjFmNDM0YjRkZjVkYTAwYTdkYSBsZWdhY3ktdHJ1bmsKKzEyOTUyIDdmZWY2MGY4YmM0NTU1ZTYzYjU3Mjk2ZjBkMWUwOGNiMDZiZDdmNTAgbGVnYWN5LXRydW5rCisxMjk1MyA1Y2ZiZDQ4OWE1ZDM0ZDA5ZDllMWY5N2NjNTc0ZjU2YTA3MTk1OTc5IGxlZ2FjeS10cnVuaworMTI5NTQgMmIxZGZjMTM5NTFkZmI2MzBhYTY2ZjZmZDNjMmEyNTY3YjExMzU0YSBsZWdhY3ktdHJ1bmsKKzEyOTU1IGM5ZTEwZWQyNmQ5YWIxMDAwNWViMDZkYzljZmMwNWQ1NThjNTE5OGMgbGVnYWN5LXRydW5rCisxMjk1NiA1YjU0ZmE3NzVlNTUwZWNkOGViMjJmMmJiZjhkZDM5NTYxYmM4MTFiIGxlZ2FjeS10cnVuaworMTI5NTcgZGFkMTRmZmUxYzIyYTA2YjA1ZjU5NmYwMTMxYjAwZmY1NGU3ZDk5YSBsZWdhY3ktdHJ1bmsKKzEyOTU4IDExMTc4YzhkNmJlMmE2YzI5M2E5YmM0NTYwZWRlNDFiMjc1Yjc2YTkgbGVnYWN5LXRydW5rCisxMjk1OSAzZjIxM2E4ZmMwNGUwNmZkZmVhYTFiODcyNWJmYjhlMjBlODljYmY0IGxlZ2FjeS10cnVuaworMTI5NjAgODJhZGM1NGRkMzc3YzQ2NDRmMzRiMGRmOTU5OGYwZjhmODcyMzU3YiBsZWdhY3ktdHJ1bmsKKzEyOTYxIDcwOTEwZTMxMjVhMjc2MzE0MmZiMDhhODk2ODFkZWQ3YjJlODRlZmQgbGVnYWN5LXRydW5rCisxMjk2MiA0YzFiYmVkYWQxNGJlNjNjZDBmNDg1M2Q0NTRlMTkzNWQ5NTA2YTg0IGxlZ2FjeS10cnVuaworMTI5NjMgNjI3ODE5MTRmYWRiODkzY2Q2YWUzZmNhMWJmN2I2M2VlMzU1ZTcyZCBsZWdhY3ktdHJ1bmsKKzEyOTY0IDRhYmM1YWJhZWM5YWI4ODBmNTEyNGExOWVmMjdlODNkODAyYWRlNTkgbGVnYWN5LXRydW5rCisxMjk2NSBhNjQ2NGViOTg3ZThjZWFmMzlmYzFjOGUzNTAwMGM3MTA2Njc4Y2U2IGxlZ2FjeS10cnVuaworMTI5NjYgNTNjMWZhZWMxZDQ2NjZhNTA2NDM1MjBiOTE2MTdjNDU3OTY5YzczZSBsZWdhY3ktdHJ1bmsKKzEyOTY3IGY3NGVmMTk3MWJkMTI2ODA4NGU1NjI3ZDIzZDBlZjg3Y2JlMDhiY2YgbGVnYWN5LXRydW5rCisxMjk2OCA1ODY4ODQ2MjAxZWRlMjAxMzlmMDI2NzYxN2IwZDFiYmYyNWEwOWJhIGxlZ2FjeS10cnVuaworMTI5NjkgMzZiYTRkYmZmNjg2ZTg1M2FiMGM0ZDA2MmU2OTAwZDFmNmEzNTFjOCBsZWdhY3ktdHJ1bmsKKzEyOTcwIDI1NWFiYWIzYzU3NDMwNTA4YmUzMWYzZjUyYjM5NTYyMzU4ZjMxMDkgbGVnYWN5LXRydW5rCisxMjk3MSA5Y2Q0ZmQ5MjZkZjY0NDk5YjNhMDRhNzcyYmM4MDgwM2RlZDM1ZWJjIGxlZ2FjeS10cnVuaworMTI5NzIgNjAxYjRmMmQ1ZmM4NTI0M2EwYmIwNmI3MjhmZjk0ODJjMWI4ZWY1ZCBsZWdhY3ktdHJ1bmsKKzEyOTczIDAyMmIxNzhmZDBlZDU3NzgwNWU0ZjFkZjQxMDRlZjI2ZWZhNGE1MzkgbGVnYWN5LXRydW5rCisxMjk3NCBhYzNhNDY1ZTUwYTY3YmU5MWE3ZTMzY2E2MTAzMGRkMTk3Zjg1YjU1IGxlZ2FjeS10cnVuaworMTI5NzUgNGVlOTAwMDA1ZWQ4OGU2N2FkOGJhYTUyNzBiNzA1MTY0MzliYzJhMyBsZWdhY3ktdHJ1bmsKKzEyOTc2IDYzYzQ2M2E4NTI5MzZlZjQwMGFhYjIxMzJhZDM1ZjRkYWRmYWVhYjggbGVnYWN5LXRydW5rCisxMjk3NyBmODUwZWYzZGE0M2FmNDRkZGU0NDc3MzllYTA3ZWUwMTc2ZmQ5NTQwIGxlZ2FjeS10cnVuaworMTI5NzggYzgyYTg1YmExZGRlZjhlODI4NWJlMGE0Y2RlMTgxMWNkZWVmODlkYSBsZWdhY3ktdHJ1bmsKKzEyOTc5IDU3NzA0ZjBhZDliMDVjMDc0MDE0NzI2MjQ0NmZkZTZkZDRmMDY4MDggbGVnYWN5LXRydW5rCisxMjk4MCA0YjE5NDYxNzgwYjk5YTBjNTk2NDc4ZWU5MTRmNmUxNThmN2IwYjlhIGxlZ2FjeS10cnVuaworMTI5ODEgMDEyNTBiODMyMzc0YWIyYzU2ZmZhYjg4YjY2ZGZkZjI5N2VhOTFkMyBsZWdhY3ktdHJ1bmsKKzEyOTgyIGVlNjEwOTQ5ZjkwMjI2NGVhYzEwMzBmMjEzYmMzMmE0NGVjYjRkZGYgbGVnYWN5LXRydW5rCisxMjk4MyBjMjU1NGJmNjE3YzMyNTY1OTZiZjUxOTJmMmU2ZDFlNjNhMzljY2QxIGxlZ2FjeS10cnVuaworMTI5ODUgYmFlNjUwZjU3YzQxNTBiYjBjNDgxNmVhODcyOTM0MjIxYzUzOWFhMiBsZWdhY3ktdHJ1bmsKKzEyOTg2IDc1NjgzZmQzOWU5MWVhNGNkZmUzYmNmNDg2ODVmNzQ1YTQ0MDlmYjggbGVnYWN5LXRydW5rCisxMjk4NyA3NDc0YWQ3ZTBhNDQ5YWI5MTUwMjI5NWJjYWU4ZDVhZDRhNjk3OTE2IGxlZ2FjeS10cnVuaworMTI5ODggNTAwZjhlYzlkZWQxOGQ2ZGQ0OTg1Y2RjY2Q4NGM0NjhkOTlkYzg3MyBsZWdhY3ktdHJ1bmsKKzEyOTg5IDhkMTE1ZTExMWExNzQwZTkzZTI1NjhjOTRlNjdlMjQzY2ZmZTFmMGIgbGVnYWN5LXRydW5rCisxMjk5MCAzMGM5NGNkNDlhNjg4YTY2MDhiY2UyOGNiMjExNjA2YWNkYTFjZjYxIGxlZ2FjeS10cnVuaworMTI5OTEgMDVlOTdmNmEzNjM4YjM1MGVjMzk1ZTAxZWIxYTQ5OTUxMDQ0ZmMyOSBsZWdhY3ktdHJ1bmsKKzEyOTkyIGVjZGZjZWExMjQzODU2YzYyN2Q2NTAwZWZjMDI3ZmYwZTgwMTA5ZDggbGVnYWN5LXRydW5rCisxMjk5MyA4NzQ5ZTg4YWI0MDY2MGNjMTE4Zjc5MmMyNDlhNDVhNTc5Yzg1MDg5IGxlZ2FjeS10cnVuaworMTI5OTQgMzkwZTRjMTAzYmUyNjg4ZTBhMGNhN2FlZDVlZTYzMWQ0Y2M3NmI2NSBsZWdhY3ktdHJ1bmsKKzEyOTk1IGIyMzU3OTI0YTlhOTI2Y2RjZjM5YjUzZDkzMjA0N2ZjMDIzOGJmYzEgbGVnYWN5LXRydW5rCisxMjk5NiA0MzA1MmQ1Yjk4MDgzNDkyNjFhNzg5NjMxNTUzMDQ1NWVkMzFhYWI5IGxlZ2FjeS10cnVuaworMTI5OTcgZjVkN2M0OTQ1ZDVmNWI0ZGM5MmIxMGE5ZTgxMTgyMmIwNTI4ZTkzZSBsZWdhY3ktdHJ1bmsKKzEyOTk4IGU2NGM4Yjg0ZTI0Yjc5NWZiMDBlOTdmZDMwYTQxZDdmYWEyNDUxOGEgbGVnYWN5LXRydW5rCisxMjk5OSAyNDZiMTM0MTBhMzE3ZTRkMGFjYjQyNTQ0YzBiMjhiNjg1YmMyMGU3IGxlZ2FjeS10cnVuaworMTMwMDAgYmExYTI3ZDczY2RiMGEzM2ZhYmMzNzY4ZGZmOWNiMzkxOWNlMTJjYiBsZWdhY3ktdHJ1bmsKKzEzMDAxIDhkNDBlNmJhNGM5ZTIxNDE2YTI4YmUzOGQ3OTllMmQyODE0MDk4ZDggbGVnYWN5LXRydW5rCisxMzAwMiBmZTg2NDVlNDkzMTQ4MGM1YjdlNzdmODJjNTU4MmNjNWMzODc5ZDI2IGxlZ2FjeS10cnVuaworMTMwMDMgOTkzOTA4Mjg2YWM3MTY1Y2FkYTFkZGExMGExMmQ3NzE3OTQxZGI1NiBsZWdhY3ktdHJ1bmsKKzEzMDA0IGMwZjE0N2Y0ZjEwMGRiOTliOTk5ZDQ1MzdkN2VkOGY4ZTdkZGJiZDYgbGVnYWN5LXRydW5rCisxMzAwNSBlMDhkYTM0YzQ1ODJmZWRhMWVkM2U3YTc3ZTdhMzQzNGJiZDc2NmJmIGxlZ2FjeS10cnVuaworMTMwMDYgZmU4ODFmNDQ2YzVkMjhmZWE5N2VmYTE4NjI1YzI2MzEyNjhkNWRlMSBsZWdhY3ktdHJ1bmsKKzEzMDA3IDUzOTNjZTUyMDdjNzA2NTE2MGNkZGNkMGRkMTQ5OThlYWE4ZDIyZjggbGVnYWN5LXRydW5rCisxMzAwOCA0OGNkZGQwY2M3MzMwNzgyMjBhMjA2NGJkZWNmMWZiMGYzYTBkOWIwIGxlZ2FjeS10cnVuaworMTMwMDkgMjBmZWJhOTY3NDM3MTdiNWQ0NTU1ZWI2M2NmNDdhZjVlYjdjZDliYiBsZWdhY3ktdHJ1bmsKKzEzMDEwIDQ1ZTk5NzVjYjA5Mzk0ODU3NjAyOTBkMmUyY2Q1YjljNTJhMzhiYzAgbGVnYWN5LXRydW5rCisxMzAxMSA3NTNmM2Y5NWM1MGYxNWM4ZDJhYzU5NGIzMjNmMDQzNzY1NDQ4YzA3IGxlZ2FjeS10cnVuaworMTMwMTIgZDc5OTg5YTQzNWQ5MmUzMWI3MjJiYTcwNmVlZDA4ZTNmZjQ1ZWE0ZCBsZWdhY3ktdHJ1bmsKKzEzMDEzIDY1YjNjZmU2ZTY2NjkyNzk3MTA1Y2I3YTY2NmM4MGU1ZDcxZjc5NWMgbGVnYWN5LXRydW5rCisxMzAxNCBjM2VkYzE0YzM4ODBhMzk0ZGUzMTFhYzk3MTQ3NmJkNTQ5Zjg5NDkzIGxlZ2FjeS10cnVuaworMTMwMTUgMjE5OWY3MGIwZWRhNzJjODljMGMwODY0MjdkNGI3NzE4Mzk2MjZiMCBsZWdhY3ktdHJ1bmsKKzEzMDE2IGNhNDRmZjc0ODJjNzc1ZDE2Yjc3NmQyYzkyMGM2ZjE1NjVjN2NhNTUgbGVnYWN5LXRydW5rCisxMzAxNyA4MWY0YTc3ZTczMzczMDFiMzY2NTIwZDhjOTdjZjZjYmQzNDUxYjEyIGxlZ2FjeS10cnVuaworMTMwMTggOTZiZWFlYWQ4NzRmNzZhMDc5MmRiM2VhNGE1YzA0MzNjZDk2ZDhmNyBsZWdhY3ktdHJ1bmsKKzEzMDE5IDU2MTA1NDQ5NzcxYTY4NDMzYjlmYTZmZDczZjkxYTJlOGJiMDYwYTYgbGVnYWN5LXRydW5rCisxMzAyMCBkMzg0ODY4YWQ0NjIyZWJiOTBjODY4MWEyZjEyNWYzOTM3NGM4YzJhIGxlZ2FjeS10cnVuaworMTMwMjEgZTNmNTlhMDY0NzJlM2E1NjQzMzk5N2NjNjU5MzYwYzc0ZDk5YWM2ZiBsZWdhY3ktdHJ1bmsKKzEzMDIyIDlhYTY1ZDQ4ZGQwNTE3NzVkYTEyNmIzNjQ2ODU4OWIxNWZmOThkYWMgbGVnYWN5LXRydW5rCisxMzAyMyBiMTlmMmE5ODIwMzA1ZjkyNTQ0NzNiZWI3NWQ1MDNiOTNjMmRjMjg0IGxlZ2FjeS10cnVuaworMTMwMjQgN2VlMWUzMTM0MTQ3M2Y1MWMyNGRlMDFlODNlYjFiNWFmNmIxZThiNSBsZWdhY3ktdHJ1bmsKKzEzMDI1IGYwMDVhYzczNTg2MzQxM2FkYWVmYTVhYjAxYjU5NThiNDNlM2M2YjcgbGVnYWN5LXRydW5rCisxMzAyNiBiNWRlYTRjNzlkMjRlMGEwYjU2MGJmNjRhODdhMjNlNjA3MjAwODY3IGxlZ2FjeS10cnVuaworMTMwMjcgNDc0YzViODJkN2RlOTlmN2VlMDQyYTBjNmRmYmYxYTAzZjJlN2VhYiBsZWdhY3ktdHJ1bmsKKzEzMDI4IDg3OGE1NGEwNjExN2IzOWI5OTRiOWU4M2RhZjMxODczNGUxOWFjNDkgbGVnYWN5LXRydW5rCisxMzAyOSA2MWJlYzFlNWZhNTkzYTk3NTY3OTM0MjUxYjZhYzNiZTQ3NzRlMjAwIGxlZ2FjeS10cnVuaworMTMwMzAgNDE1N2YzODYyYTA5ZGYxNzE3NDZiMWJkYjdhZTcwM2JiNGUzODNjMiBsZWdhY3ktdHJ1bmsKKzEzMDMxIDNlZWZlNmIwODY2MmY0NTI5YTMyZjFiZWYyMGQ0NjRhZTdhNjRjZGYgbGVnYWN5LXRydW5rCisxMzAzMiBkNGNlOWYxZjYyNjY2ZTRkODhkOGIyYWNjNWRjNDdkOGM3YmRmZDQ1IGxlZ2FjeS10cnVuaworMTMwMzMgNTQwYzgxNzNlNGZkYmZlY2JhMjQ2NTQ3YzdiODFhZjk1MzkwNjEwZCBsZWdhY3ktdHJ1bmsKKzEzMDM0IGQ4MzRlY2RmOGMyNmUwZGY5MjMxODdmMjBiYTQ3YWNhNmVmMmUyMjAgbGVnYWN5LXRydW5rCisxMzAzNSA5ZWM5YWJmZWM3OTRlYzE0MWQ3Y2Q2OWMwZTVkMDZkMjEzNWU1NTRhIGxlZ2FjeS10cnVuaworMTMwMzYgYzA0ZjAzZTgyYTc1NDM4MjA4MDc3MzNhNmZmN2VkZmQ1MGQyMDM3ZCBsZWdhY3ktdHJ1bmsKKzEzMDM3IDMyYmEwOWM4NjkxN2JiNzBmNWE0ODY4YjY0YmQ2NWViYTVlZGUzNjQgbGVnYWN5LXRydW5rCisxMzAzOCBhNGEyNjhiNzI1YjJhNDYyMzZmODBlN2ZjYzFiM2ZiNjYxYjljZTZiIGxlZ2FjeS10cnVuaworMTMwMzkgYjYyNzI0YjA5MzAyZTc0OWNjNTkzZjM4NTE4ZTI4ODBjZmY2ZjlhYSBsZWdhY3ktdHJ1bmsKKzEzMDQwIDkzNDcxOWMyNWFmODJlZGVmMTU4ZWI3ZTJmY2JkMWY3ZGZkN2UyYjkgbGVnYWN5LXRydW5rCisxMzA0MSAzZmU5NWMyYjM3MTM0ZWE2OTZlMGZlMmU2MjI3ODM0YTA3MDY3ZDExIGxlZ2FjeS10cnVuaworMTMwNDIgY2NlZTNjMjhiN2VmZjFiZjVlMWQxMDcxY2VkNzRmNzRiOTBiMmE5OCBsZWdhY3ktdHJ1bmsKKzEzMDQzIDVmNDU0YjcwNjE1NmVhMzFjODhjOWZhZTcwZmM2ZTAxOGM1ZTU0ZWMgbGVnYWN5LXRydW5rCisxMzA0NCAwYmViN2QzNmMxYTk3Njk0NzI2MTEyMDhmMzY0NGE4NzA3MTIzZGZlIGxlZ2FjeS10cnVuaworMTMwNDUgZjI4ZTZhM2I5MTM0ZTE4M2VmMWYxOGNmM2MwZTRmMGVhMDFiNGJlZiBsZWdhY3ktdHJ1bmsKKzEzMDQ2IGVkYzdiMjhkOTA1MjExMzZiNTNkZDQ3NDM3OWE1MzI4OWY1NjcxYWEgbGVnYWN5LXRydW5rCisxMzA0NyA1ZTllYTNlYWI3N2M4MTAyNTMwNzcxNWQ1MTUzMmViZWZlZjNhMmRkIGxlZ2FjeS10cnVuaworMTMwNDggMzQwMGFhMWIwMDczZmM3OGMzNjI4NmQ2ZTIzZTQ1NzAzZTcyOTJiYyBsZWdhY3ktdHJ1bmsKKzEzMDQ5IGMwYTY5ZWNmOTY0NmY2MWE2MGVkMWY2OGIzZjM1MmMzYTA1MDQ1OGQgbGVnYWN5LXRydW5rCisxMzA1MCBlNjhkNTM3ZWI1MGZlYWI3NzA1ZmEyMWE0NDc1ZThjNmJjZjJkYTVlIGxlZ2FjeS10cnVuaworMTMwNTEgNTk4MGJiMDAxZjg2NGVjMDA2NmU0ZjNmZjA4N2Y1OWQwMGIwZDQwMSBsZWdhY3ktdHJ1bmsKKzEzMDUyIDhjMWNmZTk2NWQ5YjJkYzMxZjEwNTNmNDA4YWQ4MzEyZjRiY2M4MzIgbGVnYWN5LXRydW5rCisxMzA1MyBhZTYxYjcwZWZkYjNhOTQ4YmZhODFjOTU5N2QwMmYxMjYxYmVkY2M2IGxlZ2FjeS10cnVuaworMTMwNTQgYzY5YmZlMGVjYmQ4NzA2YTM1Yzc3ZGRlYWFiN2M5MzZiNGEzNWY2ZiBsZWdhY3ktdHJ1bmsKKzEzMDU1IGFmZjA3ZTA0OWFlZWZhMmJlNDMyMDhhZDBkMjZkNzNjNDhiMzNhZDAgbGVnYWN5LXRydW5rCisxMzA1NSAzOWZiMGRjYzgzZGMzNzVjMTU2NWJhNjVkYmNlMGVkNTliMTM1OWM5IGxlZ2FjeS10cnVuaworMTMwNTcgYTgzN2E2YWVkODNlNmRlMmYzNDc3MGViNDRiMjVkMGZmOGYyZDBlMyBsZWdhY3ktdHJ1bmsKKzEzMDU4IDA1Y2ZhMjhlNjVmNjI0NTM3MjIyNDljYjg0ZDk4YjRiYTQ3NDhhZmYgbGVnYWN5LXRydW5rCisxMzA1OSAyNDNjYzZkOWM1YjhmYmUwZWRhMTdmMTU2NzljM2E3MjRkZjE1Y2FjIGxlZ2FjeS10cnVuaworMTMwNjAgZTNlNWQ3NjM2OTU4Njc5YzQxMzZhOTdlODg5NjU3MTAyZmM1ZTk4ZCBsZWdhY3ktdHJ1bmsKKzEzMDYxIDI4NmIyY2U2NTI0ODg2NDkzZDUwM2VlZWQ1MTMyZGZlMmQ4ZTc5ODcgbGVnYWN5LXRydW5rCisxMzA2MiA4ZDJhOGE0OWQ5ODM5MjEyMThiYTRhMDQxNTRhODMyYTVjMTA1N2Q2IGxlZ2FjeS10cnVuaworMTMwNjMgYWZhYTNhYTgzNWY5ODMzNzlhNzc4OTM1OTFiOWIzY2FiMWY0MmMxNCBsZWdhY3ktdHJ1bmsKKzEzMDY0IDk3MGQ2MWJiNmFjZjkzODNiMzU2YmU0ZjFmNWYwYWMzNDljYWViNjAgbGVnYWN5LXRydW5rCisxMzA2NSAzYmUwNTI1YmY0N2YxYWM0MzY4ZTk2NDJkZDg1YmI3NWI3NWZmZDI1IGxlZ2FjeS10cnVuaworMTMwNjYgYTQyODI0Y2YwYjE4MWUyODZiMjUzZDVjMDc3MmNlNWJlZmQzOTFlMCBsZWdhY3ktdHJ1bmsKKzEzMDY3IGY2ZmM2N2Q3MDVkZWFkMmJkNDFlMDg3NTMzNjI1ZDI3NTYwMGM3ZTggbGVnYWN5LXRydW5rCisxMzA2OCAwNGFmYzFhYzFhMGZkOWZjOGIzZTk4ZDliYjlhNGQxNGU5NzE3MmQwIGxlZ2FjeS10cnVuaworMTMwNjkgMTA0YTQ0MWIyYmM4Y2Q5MWQ1MjkwMDI3Mjg3ZTk0OWFmODA0MDEwMiBsZWdhY3ktdHJ1bmsKKzEzMDcwIDdiZjNmNDEyZTEzNzg2MWJmYzY5MTkyN2IyYTg3ZDJkYWNlNWY5NDIgbGVnYWN5LXRydW5rCisxMzA3MSBkYTE1ZWQzMTRlMjQyODE0NzYzZmE0OWEzMjk0ZGI2Mzc4ZjA4OGQyIGxlZ2FjeS10cnVuaworMTMwNzIgYmZmMzM4MmM2ZDJmNTFlZjg4YjE2NzViOTk5YTNiYTNhNWQzOTM1ZCBsZWdhY3ktdHJ1bmsKKzEzMDczIGY1ODA0NjMzOWNiZjM1ZDliNWYwODhjMjZkYmY2OTY4N2JjMGFlMmUgbGVnYWN5LXRydW5rCisxMzA3NCA0ZTBjYzZlMDJhMGRlOWNjNTY2ZjFmMWQ2MmJjZTUyZTc3NThhNTA2IGxlZ2FjeS10cnVuaworMTMwNzUgNGFmZjM5MTc1MTM3MWRhNWY5NTQ4NTRhOWU3ZDIyZWIzZThlMWJiZiBsZWdhY3ktdHJ1bmsKKzEzMDc2IDEwYmQyZmIyYTBkNjdkOWQzZmVkY2JkMTBjYTM4ZDAwN2I5NGMyMjkgbGVnYWN5LXRydW5rCisxMzA3NyBhZjFlODE5YzA0NDU2OWJmYWFkZDFiMjEwZWFkMzgyNDhiYWNkOGJlIGxlZ2FjeS10cnVuaworMTMwNzggZjk2YjI3Mjk4MWJjYTY0YWQyY2NkYjcwZDUxZjU5OWI5MjE2NDhmMCBsZWdhY3ktdHJ1bmsKKzEzMDc5IDU2MTcyZTBlZmI3NTJlYzY1Mzc0OGYyNmIxMTRkZDA1M2UyOTlkMzAgbGVnYWN5LXRydW5rCisxMzA4MCA2ZTdmMTRhZjg5YjcxZmUyNGFkNTgxZGRiMmE2YTI5YjllZmRkODU2IGxlZ2FjeS10cnVuaworMTMwODEgODg1YmU2MDEwNGQ0MjM1NTA4MzAwYmI0Y2I4MzBjNGYyYzNhM2U0NyBsZWdhY3ktdHJ1bmsKKzEzMDgyIDYzNDJjZTRmZjk0NjU0ZjAzOTg0ZmJkYWZhNWE5ZjY2NGEyMGEzMmMgbGVnYWN5LXRydW5rCisxMzA4MyAxZWQxZWI1YmM2ZWMwYWU4MDQyYzM0ZjY1NWRjNGM2ZDE0ZmU4MWM3IGxlZ2FjeS10cnVuaworMTMwODQgNDM5ZmM4NTMyNGNkZDIyMzc0MDZlOTk1ODY0MTRmMzNjZDZlMWRjYiBsZWdhY3ktdHJ1bmsKKzEzMDg1IGJiYjVhZjc4YTI1OTI4OTA4YjhmZjcwZjdkZmJiMGNmNmQxMmI2NjIgbGVnYWN5LXRydW5rCisxMzA4NiBmN2I4Zjg4NmI1MWE3OGM0MGFlMzJiOTA2MzJiMGFlYWE3ZjZiYzRhIGxlZ2FjeS10cnVuaworMTMwODggNDRkYTAzNjUxYmQwMmFkNjRiMmZmMWQwMmM4NjU1ODA5Nzc1ZThkOCBsZWdhY3ktdHJ1bmsKKzEzMDg5IGU0MTExMGZmOGMyZmEwN2IxMzZmNDBlYzVkYmE0MTcxNDg3ZjFlZWMgbGVnYWN5LXRydW5rCisxMzA5MCA3MDBkYWE3NTg0N2E1ZDRiNDI4NjAwYTAzMzQ1OWE4OTEyMzYwZGM0IGxlZ2FjeS10cnVuaworMTMwOTEgOGRhNDZkNmI4YWYzYjI0MTg2NTJhNGI4MjRjYjMyNTQ1MmE1ZGY2ZiBsZWdhY3ktdHJ1bmsKKzEzMDkyIDA0MGI1Mjg2OGZlOGNlMjI2ODE1OTQ2YWZjMGE5NDEyNzdkMGVlZDAgbGVnYWN5LXRydW5rCisxMzA5MyAyNTFiYWEwMzJhZjBjM2NiMmE5MDA1ZDMzYTJjOTQyYmYzM2M0MTQ5IGxlZ2FjeS10cnVuaworMTMwOTQgY2U4NjFiNDNlZjUzNTZmMDk0YWZiNzNhM2YxYzc4YmQ2NzRmYmM2NSBsZWdhY3ktdHJ1bmsKKzEzMDk1IDA5NjVhYTJkZjVjYWQ4YzhjODBmMjQ5OTAwY2FiNGQxMjk2YmRjYWUgbGVnYWN5LXRydW5rCisxMzA5NiA4M2QzOGM0YWQxZGVmYjA4ZTE1ZjYxY2VmZmIwZDljN2UzZDM0N2EzIGxlZ2FjeS10cnVuaworMTMwOTYgNjFjOTFjN2YxMDFiYWIzMTQ5YWRmY2Q1NjQ2YWU0MGUwNDhkZTcxMiBsZWdhY3ktdHJ1bmsKKzEzMDk4IGMzMWI4ODBhZTg0ZjlkMjJiMDM1NDZlYjllYjQ5MWU4ZTcwNzQ1ZjYgbGVnYWN5LXRydW5rCisxMzA5OSAyOWFiYjdkOTZjMjU5NTE4YzEyZGI3OTNlNWVlMTQxZTMwNWM0NzBjIGxlZ2FjeS10cnVuaworMTMxMDAgNGUyNjk0MTRlZWU1MzBhNjdkMTQzODY1ODViODY4OTM5ZGQ2ZWMyOSBsZWdhY3ktdHJ1bmsKKzEzMTAxIDYzYzdhOGFjNGU0Y2Y5Y2QzMDhmY2UyYmE0MTVhZjI1NmFlMTU5ZDcgbGVnYWN5LXRydW5rCisxMzEwMiA1NjZiZDg3ZTAwMzJlNjkyYmRmN2Y4ODNmZGUyNTZmNmRiYjAwM2U5IGxlZ2FjeS10cnVuaworMTMxMDMgYzg3NTliYTgzNTUyYTU2YjlmNjFjMzAwMWU2ODg5ZjcxOTM4ZTViYSBsZWdhY3ktdHJ1bmsKKzEzMTA0IDg3NmQ3ZTc5MjI1MmM1ZTA1MjIyZDM0NGVmYWZjZmNkNDRhYjI5MDkgbGVnYWN5LXRydW5rCisxMzEwNSBkY2RiYjEwMDA2MGYyYTlmOGIwZmFmZTliYTZiYjU5MDkwNGY4YWY1IGxlZ2FjeS10cnVuaworMTMxMDYgOTBiZGY4ZmE3OGE5YjhlYjdhODBlYmQyOGUwMzAwNmI4ZTc2Y2ZkNCBsZWdhY3ktdHJ1bmsKKzEzMTA3IDJhYjk2N2Y4NDg5NWIwZGQ4MmZjZjI2MmEzMmJjNjg5OWVkMGRkNjcgbGVnYWN5LXRydW5rCisxMzEwOCAyOGM0NDM3MmRlMzg0MWUyYTFjMTNmMzcyNjEwZDE0ZmM1OWRjNGEyIGxlZ2FjeS10cnVuaworMTMxMDkgM2RlMDQ0ZTY1MGExYjYzYmVmMzMzNTY4NDNhZjUxNDU3N2IxZGYxZiBsZWdhY3ktdHJ1bmsKKzEzMTEwIDAyNzAxYjk5ZjliYWJiOTY4YWRjNThmZTNmZDg3MTczODhiMWZlMTIgbGVnYWN5LXRydW5rCisxMzExMSBmZTVmY2I3ZTczZjc5YmQ1NTEwMjMxMDc3M2ZmZTNlZTY4N2U2NzM4IGxlZ2FjeS10cnVuaworMTMxMTIgZmNhYWM0MWY2ZjNhMDMzZmI0YmJlOWU2ODY4NGUxYjRjMTNkNTJjZiBsZWdhY3ktdHJ1bmsKKzEzMTEzIGI0ODg5ZjEwNmMzYjE4MDZkY2Y3N2QzZTc4MzZhM2JhMjlmZDRiM2EgbGVnYWN5LXRydW5rCisxMzExNCAyNDE5YTZjOWY2MjgxMDYzZjhmYmQ3YWY4ZDEyMDFiYWZiMWFmMmJlIGxlZ2FjeS10cnVuaworMTMxMTUgM2YxZTcyYzcxYjNhNWNiZDZmNjFlZDNlNmI3YTA4MWZiNzZlOTZjMiBsZWdhY3ktdHJ1bmsKKzEzMTE2IDZmOGNkYzdlMjI1YzkxNzdmNjk0NTNiOGYwNDgwNmU2M2FlOTE2MGMgbGVnYWN5LXRydW5rCisxMzExNyBmNDI1ZTYwYWM3MWE0NmQ4MmMyOTgxMGM3YzI3M2RkYzliYmQzNzJmIGxlZ2FjeS10cnVuaworMTMxMTggZjYxNGY1Y2YyZGVjOWUzZGM4NGY3ZWQ3NjFmYTY0MmJhMzE0MjBjOCBsZWdhY3ktdHJ1bmsKKzEzMTE5IGEwNzdlNWRhNWZhNTczMGEwYTg2YTUzZDI5NThhOGY3ZWRhY2RmZTMgbGVnYWN5LXRydW5rCisxMzEyMCA1NjhlOTQ3MjdhMGNjOGQ5ZmJiZThjZjNhYzc3ODczYzk3MDVhMDI4IGxlZ2FjeS10cnVuaworMTMxMjEgYTZiOWQ0NTAwMzE3NTI4OTA4MGMzMGM0MTRiZDc3MjU1ZjkxOTJlYiBsZWdhY3ktdHJ1bmsKKzEzMTIyIDAxMmQzNjFmZGYyM2E4YTM0N2MzMDE4ZjI4ZjNiNTM3YWRkNTU4MGUgbGVnYWN5LXRydW5rCisxMzEyMyBmN2U5YmM4ZGExM2QyMTYzM2VhYTQyZjIxNGE3OGNjZGNjZTNlMTg0IGxlZ2FjeS10cnVuaworMTMxMjQgZmE0Njg1ZmQ1YWRmZjEzNDQ4YmNlNGRhYTVkMTUzOWZmOTZiZjNiNyBsZWdhY3ktdHJ1bmsKKzEzMTI1IDg5MWQwODlhYmE0MTJiYTYwOTVkYWU5YTBlYzhlNTA2ZGFlYTFmYzkgbGVnYWN5LXRydW5rCisxMzEyNiA1YjE3MGYwZGE5ZmViZDk5MjJjM2Q0NWVlZTM5YmMwYmU5NTcxYWM1IGxlZ2FjeS10cnVuaworMTMxMjcgZGRjZWRkZWY1OGExYzcxYTdjZWNhMThlZTRmNTFmMjk1ZThiYjhkZCBsZWdhY3ktdHJ1bmsKKzEzMTI4IDg0ZDRmMTcyNjY5YTZmZDM3ZDMxZWNiZmUyZTY2MGMzZjA5MDY4OTkgbGVnYWN5LXRydW5rCisxMzEyOSAzNGZkMjUyNDI3MzE5ZjIzMTEzZWEzM2ZhODYxYzYxMjYyM2UyNDgzIGxlZ2FjeS10cnVuaworMTMxMzAgYWQ1NWJkYmE1ZGZmZWQ4Y2EyMGI0NjIwODFhNDg4ZDFjNzFkNzQzZSBsZWdhY3ktdHJ1bmsKKzEzMTMxIDM3ZGQ4YjhiMWQ4NDAzOWEyOGViNGJjN2EzZWViMWYzZjAyNmFiYmUgbGVnYWN5LXRydW5rCisxMzEzMiA3NWYxMjg3MWVlZWE3YjVjOTJkMWE1MzRjYjRjNzU3YWE5ZTA5NmRjIGxlZ2FjeS10cnVuaworMTMxMzMgMThjNzRkNmJjYWU4ODA3NDE0NDE1ZmFhOWUyMzgxMzY5Yjg3NjczZSBsZWdhY3ktdHJ1bmsKKzEzMTM0IDFiZGVhMTdiYzQ3MWYyNWY3YTk3NzE0Nzk5Y2FkMGM1ZDg5ZWNhMjMgbGVnYWN5LXRydW5rCisxMzEzNSBkNzE5N2IzMmZiZmVhMWVjYzE5ZDY4YjRmMzQxMGExMGZjZmFkYTRjIGxlZ2FjeS10cnVuaworMTMxMzYgNjQ3MjcyOGRmMmQwY2YyZDY0MjM2MDYyODcxZjUyZTNmMTg0ZTg1NyBsZWdhY3ktdHJ1bmsKKzEzMTM3IDQ2YTcwOGIwY2EzOGYwMTA2OWMyODUzMjg0ZmEyZGFmYzkzMjQ0ZjggbGVnYWN5LXRydW5rCisxMzEzOCBhYTRlY2I3MTZlNmUxYzhhNmM2OWYyNGFmMDQ5Y2RlZjJhMGUyYzJmIGxlZ2FjeS10cnVuaworMTMxMzkgZTI2NDM5MmUxNTM2MWY5NTY5NzJiYzQzYjAzZTVkMjRjMzE0MGZjYyBsZWdhY3ktdHJ1bmsKKzEzMTQwIDNjMjU5MzcwYWM1N2FiMWVhNTQwZGFjNWZmNDRkMjA4NjVjMWRiMjMgbGVnYWN5LXRydW5rCisxMzE0MSA5ZmQyOTAyMWQxNDdlYWM5ZDI2Y2NmMmQ3ODNkMmQzMzgyOTE1YzE0IGxlZ2FjeS10cnVuaworMTMxNDIgYmVkMTVhMDE1YzFjMzk0ZWM5Yjg2ZjQxMTk3YmE2MTExNzg3MjkzMSBsZWdhY3ktdHJ1bmsKKzEzMTQzIGRmOGExYzI4MWFkN2Q3NGQ0ODk4Y2NhZWM2MGYyZTM0ZDdmMjY2NzMgbGVnYWN5LXRydW5rCisxMzE0NCAzNjA0OTRjMjVlMGU1YTlkODAyZGY4NTNjZjQxMDdiZGY5YWUxNjdiIGxlZ2FjeS10cnVuaworMTMxNDUgZWFjYTM3NzViNDI1ZDdiZDM4NDZmZjY0YjRlM2UyYzkyOWQzMWMyZSBsZWdhY3ktdHJ1bmsKKzEzMTQ2IGY2ZWM0YTljYjBiMzkzZmQyMzdiYTY3NGRlZTkwNWNjMmY1ZmM4YjEgbGVnYWN5LXRydW5rCisxMzE0NyA2MzcyYzJhNGQ0N2JkODE0ZGIyYmVhMjE1M2NmZGJkOWQwZTE0YjRhIGxlZ2FjeS10cnVuaworMTMxNDggZTNhMDg5ODNjZDI1MWY4ZWZlNzIzMWY1MGIxMzFiNTU0YWZmZTYxNyBsZWdhY3ktdHJ1bmsKKzEzMTQ5IGNmNjJhZmYxMDQ2ODdhNGIzYzQxNDM5ZGEzYzhmMzU1ZDVmYzExZGUgbGVnYWN5LXRydW5rCisxMzE1MCA0Njc4OGYxNjY1MGIwN2I4MDQyOTEwYTY0NDVmZDMzZjcwZTFhMzZkIGxlZ2FjeS10cnVuaworMTMxNTEgZTA5ZjE5NDQxMTM2Y2EzOWQ2NzYwNTZmNjk2YTAzMWVkMzc0MjY4OSBsZWdhY3ktdHJ1bmsKKzEzMTUyIGM3NDcwYjE0ZGVjN2MzZGYwODFjMTYxMzRmNDNmZTNiMGIxMWQzNDkgbGVnYWN5LXRydW5rCisxMzE1MyA0OGMzM2QwNTM2N2YyYTVlODI1MTA1ZDYwNDYyZTQyMmZmODI4NDhiIGxlZ2FjeS10cnVuaworMTMxNTQgNDM2OTRkMzUzNDQyMTliYzk1MmJlMTgyMmFkYjNlN2ZlYWVjNWMzZSBsZWdhY3ktdHJ1bmsKKzEzMTU1IGM5OWU2ODdkMWFjNGFjNjUxYTM0M2E1YTRmMjA4MzBkYTFjNzYzYzMgbGVnYWN5LXRydW5rCisxMzE1NiA4YjM4Y2U0MjI4M2VjYmNmZDVlM2NmNjFjYTUzMDE1YzU1MzI5MjFlIGxlZ2FjeS10cnVuaworMTMxNTcgNmMyNjUxMTNlN2U4YzZmYTcxYTcxMGUyOWQ0MzhiZjVkNmMwY2M1MSBsZWdhY3ktdHJ1bmsKKzEzMTU4IDQyZGJmZDQ5ODM4NzY3MzJkZDZhMzIzZWIwYjY1NzhlZTA4YmE4ZDIgbGVnYWN5LXRydW5rCisxMzE1OSA5ODgzZTMwYWNhYzU5Mjg4NjMwYzQ4NzY2YzNiODgyZGQyZDJkYmY5IGxlZ2FjeS10cnVuaworMTMxNjAgMjk5YmY1M2U2ODYxNmVmYmZhODRlOTFjYzMzOWYwMjVhY2NlYTEwZiBsZWdhY3ktdHJ1bmsKKzEzMTYxIDhlNzJmYzU3ZjU1ZmQ0MzFmNGIzZjA5Mzg3OTZiNjJlNmYwZmIwNDMgbGVnYWN5LXRydW5rCisxMzE2MiBkMjAzY2I5ZWNlMzcyNzdkZjE1YTE2MDM1NDYyNGI3ZTQ2YTQxMmJlIGxlZ2FjeS10cnVuaworMTMxNjMgOTk2ODFlZTg2Njk4MmQwNjRkOGQ5MjZjMzdlN2ZiZDk2MDEwMTk4NSBsZWdhY3ktdHJ1bmsKKzEzMTY0IDY5ZmI4MWZhY2IwMzc4NGM1MDUwMWExNjEzZDkzYTFlZmNlODFiMTEgbGVnYWN5LXRydW5rCisxMzE2NSA5NWFjMWM4YzA4NWU1NGNlMmM3OWY2NTczYzI5ZDg5ZTk0ZTViZGNkIGxlZ2FjeS10cnVuaworMTMxNjYgYTcxYzYzNmI4NWQxNGEzNzMwZmIyYjE2MGRkYmY4NmM0NGJmMWUyYiBsZWdhY3ktdHJ1bmsKKzEzMTY3IGFiMDIzMzQ0NTNmOTZkNDcwMmVmZWQ0YWI0MzJiNDZkZDc0MjkyZGIgbGVnYWN5LXRydW5rCisxMzE2OCAzN2EyMjM2ZDQ3MmYyZjRmMTU5NzdmYTY2MzY0MTMwYjkzMDAzZmEzIGxlZ2FjeS10cnVuaworMTMxNjkgOTMzNzMyMDI2ZTljZDQ5ZDg3YzBkODQ4ZjBkZWFiM2ZkMDYxOGUxMiBsZWdhY3ktdHJ1bmsKKzEzMTcwIDdkMDViYjNlMTM1ZjYyNzc2NzFlMjc2YjMxNmE5OWQxNjgxM2RhMWMgbGVnYWN5LXRydW5rCisxMzE3MSBiZWJlOTgzMGIzM2NkYTE5NmI2NTM2MWJmYTJhNWM2OGNmZTVlM2I1IGxlZ2FjeS10cnVuaworMTMxNzIgMDJlYjc0NzQ5MjYyZTU1YjVmMzJjMTI4MGFhYjdkZDg0MWNiYmU0MiBsZWdhY3ktdHJ1bmsKKzEzMTczIDhjNmZmZTY3MDk2M2IwMWVjOTRlMmU0MmQ0YjFjM2FhNWFiMDkwOGQgbGVnYWN5LXRydW5rCisxMzE3NCBlMDVmNmJkYzhiNTIwNDVjMzVhZTk5ZDAzZGE0NzBmZWIyMGVmNjgxIGxlZ2FjeS10cnVuaworMTMxNzUgOGMwYTYwZmI2YWNmNjljZDU2NTlhMDI4OWQzMzdjNTAxYzNkMTkzYyBsZWdhY3ktdHJ1bmsKKzEzMTc2IDc5ODY1NTU1NjQ1NjU1MGRiZWQyNGU0ZWQ4MThhY2NkMWU5OTY2ZjMgbGVnYWN5LXRydW5rCisxMzE3NyBmNjA2MmU1OTIzOGYzZTM1ZWEwMGQ1YzJhN2NjOTNjZDBlYzk3ODRhIGxlZ2FjeS10cnVuaworMTMxNzggZTJhMWM4ZDIzM2RmNzE5MjA3MjcyNDk4YzliMDMyNGI0YWVlOGNmYSBsZWdhY3ktdHJ1bmsKKzEzMTc5IGIyNjA2YThmY2FhYmE5NjdkYjMzNDNjNzI3OGVlNTcyOGQwMzc4YTkgbGVnYWN5LXRydW5rCisxMzE4MCBlZTg2MWQ3YmMwZTkzMGNmYzc4YTMzZmI2OTYyMWU4NTk3MTdiYTJkIGxlZ2FjeS10cnVuaworMTMxODEgNThkZGVlMTI1NmU5NTQwNWU3NzMzMmY2OGYyYzhlNDEzZDY0YzM4YiBsZWdhY3ktdHJ1bmsKKzEzMTgyIDllNGM1NzNlYTQ5YmE2YjMyY2E2MTFkNmJiZjcyMDdlMGMyNGRkMzYgbGVnYWN5LXRydW5rCisxMzE4MyAxOWI0ODcwMGFjZGJiZjc0ZGEzMGVkN2JmMWM5YzczNmJhMGYwN2NlIGxlZ2FjeS10cnVuaworMTMxODQgNGNiODQ5NGFiYTYyMGVmMjdlZWFhNjE0ZDUyOWQzMmFlZTk1NTUwOSBsZWdhY3ktdHJ1bmsKKzEzMTg1IGFlMThlOGVlYmUwNGRhOGQ0ZjRhZDkwMzAwMWM1ZTFmMDIyZTUwMjQgbGVnYWN5LXRydW5rCisxMzE4NiA2MzNkMmY3YTFlNDg4MDVjMGE4YTQ4YTFlY2E2ZTUzMTE4MDg1MWZlIGxlZ2FjeS10cnVuaworMTMxODcgNzEzNzQwMDAzN2UwMTU5MDE1NGNhNmQ2NTA2ZjdlZmFhNWQxODc5NSBsZWdhY3ktdHJ1bmsKKzEzMTg4IDNiYjAyOWM2ZGQzNzgyMmEwOWRjM2VlOTgyZGJiNzFkOTdiNTdiMjQgbGVnYWN5LXRydW5rCisxMzE4OSBmNjcxMTk1YWYwMjBlZDhkYjQ4M2I5ZmNlOTNkYmFiNzdkZDlkMDdhIGxlZ2FjeS10cnVuaworMTMxOTAgODVjZjQ3NjY1N2M1ZGU2MTk4NGU1ZDVmZjBiZDQ3NjVlMWE3ODA4NCBsZWdhY3ktdHJ1bmsKKzEzMTkxIGFlMDMwNmFhYTY4OGUxMWJlNWQ4ZDIyZDM0N2RiMGEwNDBiNWEyZTEgbGVnYWN5LXRydW5rCisxMzE5MiAzYjg3NjJiOGMxNDBkMDE2Y2U0NTI1ODg3ZWJkMWEyMmMxNGVlMTc4IGxlZ2FjeS10cnVuaworMTMxOTMgOTIxZmYzODVmMjU2YTE4YWMyNzE4MDJjMGZkYzdkZWMwZWYxZmU0MyBsZWdhY3ktdHJ1bmsKKzEzMTk0IDliN2Q4ZWM5YjkxMGMzMjI0YjljNDg4NzljNjI5NmMyNTJlNWQwYWEgbGVnYWN5LXRydW5rCisxMzE5NSBhOWQ2MTNhYjVhNzY1ZTMzNTE5ZTA1MTQ4NmRkNDdhYTM2OTZkY2ExIGxlZ2FjeS10cnVuaworMTMxOTYgYWIxMmM2MzFkNzM1ZDQ4ZmY3YzBjNjJlMGFkZDZmZWEwY2MzZDUyYSBsZWdhY3ktdHJ1bmsKKzEzMTk3IGQzMGNjYjAwYmQ3YjgwYjU4Mzc0YjAxYjJmN2IyYjljZGYxYjEyNzcgbGVnYWN5LXRydW5rCisxMzE5OCA5ZTA0MDJlZTM4MTIwNjg5NzcxOTZhYzYyOTc2YjdmODMzNTQyMzIyIGxlZ2FjeS10cnVuaworMTMxOTkgMjVjYzdmMGQ0NWYzOGRhZGM4OWMyZWNhZmExNDE5Nzk2YzJjYWQ3OCBsZWdhY3ktdHJ1bmsKKzEzMjAwIDBiOGJhOTM1MWEwNjM1MTY4NGIzNWQwMzUzZDhhZGNhNTNiZjNkOTkgbGVnYWN5LXRydW5rCisxMzIwMSBlNzAzOTc5ZmY1ZTc0NjkyOGI4NjRhNTQwNjczYmRhMTUyYzU2YzFjIGxlZ2FjeS10cnVuaworMTMyMDIgNjdhNGFjZWQwZDg4ZTUzYTgzYzBiOWQ3MDc3YTNjMzhiODJhNzY1YiBsZWdhY3ktdHJ1bmsKKzEzMjAzIDQ4MjI2MTdiMzlmMTRhNzM3NzljNTkxNTliNmVkYjI4YWRiOWQyOWQgbGVnYWN5LXRydW5rCisxMzIwNCBhYmExY2QwZDEzZWFmYmQ0NTY5ZjZlMDBiMmZkMjIxOWQ1MmFjNDc1IGxlZ2FjeS10cnVuaworMTMyMDUgODFmNTExMDVmNDI4OGQyM2JlY2U1NzNiMjY5MDUwZmQ4ODgwZjViMCBsZWdhY3ktdHJ1bmsKKzEzMjA2IDM0NmU5YTBmMGY4YzdjZTZhNjkwZWJlZTQ2OTZmYTUzYWFmZGQ1YjcgbGVnYWN5LXRydW5rCisxMzIwNyBjOTAzZWNlY2JhNjY5YmIzMGYwZjcxNjA1YThiOThmMGIyOGQ4Y2FiIGxlZ2FjeS10cnVuaworMTMyMDggZTRlODAwYTc4ZDhkZDI3OTk0OWE1YzNhYWMyNDZhMWU1NWFlMzliMiBsZWdhY3ktdHJ1bmsKKzEzMjA5IDU4YjE5MWJhZGI5YThiNWUwM2I1MGRiY2M2YzgyZWY3Mzk1YTZkMzIgbGVnYWN5LXRydW5rCisxMzIxMCA0Nzg4ZmQwNzBhMzBiM2UxZDE0ZjQ1ZThhMzgyMDk5ODg0MTY3YzUzIGxlZ2FjeS10cnVuaworMTMyMTEgODUxMWVmZWM3MzA5YzdlMzU0NmNmZmI5MzVlMmEwZmIxNmY5ZDUxOSBsZWdhY3ktdHJ1bmsKKzEzMjEyIGNhZDdiNTVhMzYzZmY1NDYzYzgwNWU3N2RkOGNkMGYwNjQzYTgyYTQgbGVnYWN5LXRydW5rCisxMzIxMyBiMmFhZTcxOTg3MjM4Njc5NWYzYjEyM2VmZTYzNGNhNGY2NjRjY2Q1IGxlZ2FjeS10cnVuaworMTMyMTQgMTRmNmUwZGM5NjIyOWZjZTFkMmQwOWJhZTk3MDhlZmIzZTMxZjY0NCBsZWdhY3ktdHJ1bmsKKzEzMjE1IGQ4YjJmODJmMzNlZDJkZGU0MTUwODNhYThiYTExM2VjM2Y0MGE0YWIgbGVnYWN5LXRydW5rCisxMzIxNiBjZDAxYmExMGE5NjJjMDlmYzQ1MmM4YWIwZDcyYWRmOTM0MWMxZGIwIGxlZ2FjeS10cnVuaworMTMyMTcgNDkwZWMwYzQwY2M2MDBjYzdmMGIwNTUwMTEzMzU5NTBlZWQ2YjU1MCBsZWdhY3ktdHJ1bmsKKzEzMjE4IGNmZDA5MzJhNTNlNDkxZjgzYWYyNDc5MjM2NDEwZjUyODg4MzlhOGQgbGVnYWN5LXRydW5rCisxMzIxOSA3NjY4YmNkZTljMGFkNjQwODcyMTI4Y2I3MGM1ZWI4ODVhMzY2YTI3IGxlZ2FjeS10cnVuaworMTMyMjAgNjcxMjFhMmM2MmJmOTMxNGNkMWQ5YTRkZDk0YmNjOGRkOTk5NmQwZSBsZWdhY3ktdHJ1bmsKKzEzMjIxIGJhZjY2ZDZlMWJjMTZkMjFmZjAxMjcyMmY5ZTNlZWQ1N2MwYjg0OTIgbGVnYWN5LXRydW5rCisxMzIyMiA4MGQ0ODg1ZWRkNjY0MDhhZTJhYmY5YzhmYzMzYzFjYjkwYTc2ODlmIGxlZ2FjeS10cnVuaworMTMyMjMgZmUxZTk4MTkwYWY2ZWU4M2EzZDQ1MjQ1NGRjYmNmYzUyOTIxYTM2NyBsZWdhY3ktdHJ1bmsKKzEzMjI0IGYwOTUwNzdkMjBiMDJlMmY1N2M4NmQ1MGRjNjRkZjUxZDhkZmI4OWUgbGVnYWN5LXRydW5rCisxMzIyNSBlOTk1YmNjNGNjODIyNGM4ZTg3OTEzYzhkNzZjMDA5NGUxN2QwOGYwIGxlZ2FjeS10cnVuaworMTMyMjYgOWY2OTVhNTQ5ODY1NDhjOTc0ZDkyNTc3Yzg5ZDdjNjk1OGQ2YTg3ZCBsZWdhY3ktdHJ1bmsKKzEzMjI3IGYzMzVmYTFkNmU3MTVlYThjMzNmOWFjM2ZiNDU3ZTY0OTBkM2EyYWEgbGVnYWN5LXRydW5rCisxMzIyOCA0ODAzN2Y0ODE0YjExMGMwYzE0NTgxODk4OWNhYTA3MTJhNjRiM2JmIGxlZ2FjeS10cnVuaworMTMyMjkgZjNjN2ZmN2E2ZTgxYWI1NjQyNThiMjFlYzAwNWY3YTYwNjUyZDc4OCBsZWdhY3ktdHJ1bmsKKzEzMjMwIGI2ZDFhMzJhZWQ3NjM4YmViNzgzM2U2ZmE0MDE4YjkzNDU4ZTIwOTIgbGVnYWN5LXRydW5rCisxMzIzMSA4ZGU3ZDkwYjBiMzRmZTRlZGQzNmI5NmYzZTg4NDE4ODVjMTUyZDNiIGxlZ2FjeS10cnVuaworMTMyMzIgOWU1ZGY0YzQ5YTU2NzU0ZGZjYTljYzQxN2Y4OGI0YWU0YWY1YWQ2YyBsZWdhY3ktdHJ1bmsKKzEzMjMzIGVlYTFhYjAyOGY0MzFlY2M2ZGVmODgyOGQzMTA5MDcwNTdhN2I1YzggbGVnYWN5LXRydW5rCisxMzIzNCBmMzg3NjkzMDg0Mzg2MmUxYzg3ZDljYmJhYTY2MmI5OTJlMzkzMDRmIGxlZ2FjeS10cnVuaworMTMyMzUgYzVmNDQ5YWE0MzQ1OTIxNDE1OWQ1NTRjMTFhMDMxMWZhNTE0MTk1MiBsZWdhY3ktdHJ1bmsKKzEzMjM2IDI0NzVjM2NmZTgzOTAzMjZlODgyYzJkMzk2OWJjOWM0MjBmN2RjM2IgbGVnYWN5LXRydW5rCisxMzIzNyBlMDc1MjcyZjQzZjI2NTY4OGY5ZWVjYTUxMGExMWRlNWJlNzI2Y2ZmIGxlZ2FjeS10cnVuaworMTMyMzggNjEwNTFmZDY1YWFiMDgxMDVhOTU3NzliMjFjZjRjODI4OGVjYmU0OSBsZWdhY3ktdHJ1bmsKKzEzMjM5IDI2NjY0ZDA3OTU5Nzk5NTkyYmJmYWFkMDk1MjY1ZGJlYzkwMjc5OWQgbGVnYWN5LXRydW5rCisxMzI0MCA3NDQyY2NlZGQ1ZmQzYzAyYjkxYzMyN2EzYTAxNmQzMWMyOTZhNjFmIGxlZ2FjeS10cnVuaworMTMyNDEgZWM2NjQyNTRlZjVhYWE5ZTFjMzc3NGZlZmUzYTJmZDkzMzk0MDZjNCBsZWdhY3ktdHJ1bmsKKzEzMjQyIDI3MzcxYjZkNzBjMTExZDZhNmMxNWI3MjY1YTVjZjc5MmU5ZmEwNjYgbGVnYWN5LXRydW5rCisxMzI0MyBkZjE1NGRhMThmMGVhMGRmYzFlZGY3ZGIyMDczMzdmZTY0YWRmMTNlIGxlZ2FjeS10cnVuaworMTMyNDQgZTRlZThlYTRlODM2OGQyZjNkYTQxOGEyMzYyNzg0ZGYzNmYxYWNmNyBsZWdhY3ktdHJ1bmsKKzEzMjQ1IDAzZTc0YzRiMTg5YzlkYTU0OWYyYzUwOTBlMTA5ZDUzOGY5NDkxNGEgbGVnYWN5LXRydW5rCisxMzI0NiAwOWM2YjJjZWJlZTljNjFlODY1YTI3Y2MwMjJiNDk2MjQ3NzYwODViIGxlZ2FjeS10cnVuaworMTMyNDcgNjc2ZGU4YTdhM2NiZDI1YTBmZDlmZmVkZmEzZTFkMmMxOGU5M2RhZiBsZWdhY3ktdHJ1bmsKKzEzMjQ4IDg1NTg4N2EyY2M2MDE3YzZkOGE3OTZmODMyMDBjYTEwNmI0MzFmMjcgbGVnYWN5LXRydW5rCisxMzI0OSA0YzlkZTZmZDI2N2I5M2ZhY2JjYzEyY2I4NDVhNThlNmUzNWVhOTYzIGxlZ2FjeS10cnVuaworMTMyNTAgM2U1YjA1MDM1ZWI5ODQyOWU2YWZkZDNlMzUwYmJkMDM1ZWNiN2ZkOSBsZWdhY3ktdHJ1bmsKKzEzMjUxIDRkYjM2OTFiOWM4NzE1ZmNiZjhkODQ1N2I0MTMwOTY2Y2E3NmNhOGYgbGVnYWN5LXRydW5rCisxMzI1MiBlN2ViY2ZkZTNiNWU0MjcxYWM2MWRjZDc3ZTM3ZTE4ZjE3OWY0ZWExIGxlZ2FjeS10cnVuaworMTMyNTMgZjBhNjE5ZWViZTlhMmEyNzMzMWU1ZDcxMmUxMmFiZGMwZjhiMzI5NCBsZWdhY3ktdHJ1bmsKKzEzMjU0IGEwZDRhOTU3ZmQ5MWMxMWYwN2FhNWU2NzUwZWUxZmFjMDI4N2EyMmMgbGVnYWN5LXRydW5rCisxMzI1NSA4ZjM2NjViYjllM2UwYzgxMmRhZjE3MzQ4MDUxOGQ4YTkzZjE4YzBmIGxlZ2FjeS10cnVuaworMTMyNTYgOGVkYmQ1YWI2MjE3NTcwYmVhZGIwMWJlZjJmMTFiZTYxYzc3MGRiMSBsZWdhY3ktdHJ1bmsKKzEzMjU3IDhlZWY2ZjY3NTY3N2M1N2MwZDQ5ODljMzJiNTZlNzM4M2E2YjdiOWMgbGVnYWN5LXRydW5rCisxMzI1OCA4MWY1NGMwMGUyMjRmZTViMWRmYzQ5YTgxNWM3ZGZjYmIzZDc4ZTk2IGxlZ2FjeS10cnVuaworMTMyNTkgY2RlOWIyZTY0YzAwOTdlMTkwOTRjN2U4NTdlYmY5MjIwYzVlNzgzNSBsZWdhY3ktdHJ1bmsKKzEzMjYwIGJmYTBjNzQzMzQ3YTlkY2M5MjJmMWE4ZTdjN2FlZGYxMmFkYTg4OTcgbGVnYWN5LXRydW5rCisxMzI2MSBmMWIyYmI1MzVlYjM2M2M0MDkxMjhjZmMxYjg4ZGQ0NzE3OTFhMDFiIGxlZ2FjeS10cnVuaworMTMyNjIgM2M0ZGI2YzZlOTc5M2NmZjYxYTNlNDM0NDY4YTBkYjQ4M2JlODg0MCBsZWdhY3ktdHJ1bmsKKzEzMjYzIGVjZTA5OGYzZTFkYzhlZDBiNGVhNDlhMTAwYWRjOTljZWQ4MmQxMGEgbGVnYWN5LXRydW5rCisxMzI2NCBhYWE1Zjk4Y2IyZDZkOWM1ZWU1YmE4NjFmM2JmZWUyMzRjYWZlNjFkIGxlZ2FjeS10cnVuaworMTMyNjUgNmEzOGU2NjdkMzQ5ODA4Y2EzZDFkZDgyMWE1ZWU3OTI1M2I5ZGE5YyBsZWdhY3ktdHJ1bmsKKzEzMjY2IDA1ZDcwMzAxNWRlMTU0ZjliZWQ5NWI5M2E4MWI3NjhiNWNkNDM3Y2YgbGVnYWN5LXRydW5rCisxMzI2NyAzOTNhNmRhZjI4OWRlMzg5NGM2NWY5YjA1OGNlYWY1NjQzNmY5NTMwIGxlZ2FjeS10cnVuaworMTMyNjggMTUwYWMwZDcwOTI5MjI0OTRhZjI2OGI2NjRjZDkxM2JhMTRkMDIxMiBsZWdhY3ktdHJ1bmsKKzEzMjY5IDkyYTkyZGU5NTliOWUyNGJkZjliMmUzMzY5NWEzOGI2ZDM4ZWYxNWMgbGVnYWN5LXRydW5rCisxMzI3MCAzZjBhNmIxNTY5ZTdlNmVhOGU3MWIzZjg0ODk5OTMwYWVkOWY2MzYwIGxlZ2FjeS10cnVuaworMTMyNzEgZGJjYTQ3MGFmOGYyNDg3MTkzNDljNjkwZTMwMTRiYTU1NGQ0YTRiZiBsZWdhY3ktdHJ1bmsKKzEzMjcyIGUzNzA3NGI2ZTc4Y2Y0YWI3MWExYzhmNWVkYTQ1MGMyNzA0NzE3YWEgbGVnYWN5LXRydW5rCisxMzI3MyBjNmE0ZTQ2ZjFiMDlkZGUzMjUwNzUzN2IyMmM2NTIxNjczNWVmM2E4IGxlZ2FjeS10cnVuaworMTMyNzQgMWFmN2ExNDY3MDg4MzhhZTBmMDg0YTRlZWY3NzU4NDY4MGZhNjljZSBsZWdhY3ktdHJ1bmsKKzEzMjc1IGZiMTczM2I2YmVmNWVhYzBlYjNjOTUwNzQzMjZhYmI1MTYzMWM2MzEgbGVnYWN5LXRydW5rCisxMzI3NiAyZjZiMTI3NmU1ZGM2NDI5ZmE0NDI0NTc5M2U3OGJmMWFjNjMzMGE5IGxlZ2FjeS10cnVuaworMTMyNzcgNDQyNDgzZjQ1MzQ1NTg1YTcyYmIyMzk2NDYxMmVhNDExMzIxYmNkZCBsZWdhY3ktdHJ1bmsKKzEzMjc4IDJiMDE2NmQyMjU1MTNlNGQ0MzVmYjU4MjQyMDRmMDc1M2YwYTYyN2YgbGVnYWN5LXRydW5rCisxMzI3OSAxZDdlYmJmMWYwZjI3NTUwODk1NGY1ZDQwNDFjODg3NDc0Y2MxMTc4IGxlZ2FjeS10cnVuaworMTMyODAgZTBlOTNlNDE2NmNlMmQ1MDgyOGJlMzY1ODMzODA3NzhiZDNiZDg0YyBsZWdhY3ktdHJ1bmsKKzEzMjgxIGMxYzcwYjc0M2RmMmU3OGI5ODdmNjhiYmQ3MTE4NDljNjRlNzJmOTMgbGVnYWN5LXRydW5rCisxMzI4MiA5NjY1OTRjNmIxZTI1NmFkYTUxYzFmZTU3NDRmMmE1MDM2MGM3ZDU0IGxlZ2FjeS10cnVuaworMTMyODMgYjcwODk2ZWI4OTQ0MGU5MDdkMTA1MGFhYjY2NDhlNjM0NmMxYWIwZCBsZWdhY3ktdHJ1bmsKKzEzMjg0IDlmMGYxZDhlNmViYWY3ZTczZjkxYjY1OTAxMGM1YWMwOTdmYTQ4ZjMgbGVnYWN5LXRydW5rCisxMzI4NSBiMzlmZTUxMjk5YmU5ZGFlOTRkODVkNDY1ZmIzY2U0NTZiOWE4Y2FmIGxlZ2FjeS10cnVuaworMTMyODYgNDc5YjRkMWMwYjQ3Mjg1ZGY2NmFjYjYyNzA0ZmE2ZDc3MGJmMDFkYSBsZWdhY3ktdHJ1bmsKKzEzMjg3IDU0YTMwZDZiMDFmMTA4YTgwNTQwOGUzNTIyMTAwZTY2NzA4NTY1ZDcgbGVnYWN5LXRydW5rCisxMzI4OCBjMzljMTQwYjA0YmNjOWNmM2EwMzMyY2Q3YWY5ZDIzMjA1YmUyNGJmIGxlZ2FjeS10cnVuaworMTMyODkgMzJlNzhjOWZiNDk2YzM4OGRkMDNhMWJkNGNiOTdiZmE2NGZhYTIzZSBsZWdhY3ktdHJ1bmsKKzEzMjkwIDVkYjJjMDQyN2NhZDM0YTQ5OWMyOWU4NjUwMTUyZjc4YjdmZWFlNWQgbGVnYWN5LXRydW5rCisxMzI5MSBhMzRkNjY1NmY4ZTJkZGZhOTJmN2M0MjcxYWM4NmMzYzQ0N2ZlYjdhIGxlZ2FjeS10cnVuaworMTMyOTIgMWJmYWE1Mzc0ZGY5OTc1OGIxNGE5MTFmYTZlM2EyZDhiMjdiNzAyNSBsZWdhY3ktdHJ1bmsKKzEzMjkzIDMzNWI0YzAyZjEwZGYwZDkwMGJhNDQzNjMzOTBhZTdjNzEyMmM5OWYgbGVnYWN5LXRydW5rCisxMzI5NCA3NjczNTFmNDk0NGFiYWRlNDFjMWU1ZjBkZTJiNDdiNmQ1MWQ1MGIwIGxlZ2FjeS10cnVuaworMTMyOTUgMTA1YmVlZDA2OGY4ZTYyZDI3M2IzZGQ1ZjFlYjA2OGRkMmQzM2Q1ZSBsZWdhY3ktdHJ1bmsKKzEzMjk2IDJkMzZmMDY4OWI4YTNlMDU1OWI3ZWJhMzQ1MzE1ZmJjMjZkMzQ0ZGYgbGVnYWN5LXRydW5rCisxMzI5NyBiMDE1ZDVmMWRhMWI1NzE3OTFmNDQwZjRiZDk1YTJiZjA4NjVjM2ZjIGxlZ2FjeS10cnVuaworMTMyOTggN2M0MGQ3YzFlZWY5NGY3NzAzNWFhYjg3ODkwYWRmYWQwOGEzZmM2ZiBsZWdhY3ktdHJ1bmsKKzEzMjk5IDg4NWFiZTA4ZWEyZGVhYzkzMzUwN2QyMTc5Njc3MGEyNzljZTk2N2MgbGVnYWN5LXRydW5rCisxMzMwMCA5ZWZlMDY3OTQwZWFhODdmOGIxMTkyY2U4NmFiZmQ3MjFmMzdhNmEyIGxlZ2FjeS10cnVuaworMTMzMDEgOTRjN2EzZjFjMDA1ZTY1OTQ3MjFjOWE4NWZiZjE3NWUzMWVmYjI4OSBsZWdhY3ktdHJ1bmsKKzEzMzAyIDhmMzExMDNjODhhOGUwN2U1NWQ5MjMyNjc4MzBhNDkwOTlmOTlkZGUgbGVnYWN5LXRydW5rCisxMzMwMyBkMjBlNGQwYWZiNDM2MmQ4OTI1OTkzN2U0N2IyNDQ3YzJlYzE2NmMzIGxlZ2FjeS10cnVuaworMTMzMDQgMzEyZWI0ODAxYTFjODE2YmJlOTQ2OWNkYWFmN2M2ZDBkOTcwYmNkMSBsZWdhY3ktdHJ1bmsKKzEzMzA1IDNkMmVhNTViYzRlNjhhNDgwZjU5NDg2YjYwMjc0MDkzZjA0Nzc2ZDAgbGVnYWN5LXRydW5rCisxMzMwNiA4NzlkMWFlNWM3YTViY2VkMmUwNDlmZTljYjFmMWNiZjY5YzY2ZjEyIGxlZ2FjeS10cnVuaworMTMzMDcgNzgxMjM4MzYxZjUzMWUzYzUwMTk5NDU4MWFjMjQ2MmViY2FkOTk1OSBsZWdhY3ktdHJ1bmsKKzEzMzA4IGFlYjEzY2I3Yjc4Y2E1ZTgwODRiM2E2MzBmZjM4MWQyN2QzNDFhZTMgbGVnYWN5LXRydW5rCisxMzMwOSBiODhhNjA1MjQyNjkwOWQ2MmI3NmU1M2VkMGExMDg4MGM3ZDI4ZDU1IGxlZ2FjeS10cnVuaworMTMzMTEgN2VhMzg1OTdlNzBmYWJiZGI0NWYyM2JjMzY5NzZiNjNmNjZjMTEwZSBsZWdhY3ktdHJ1bmsKKzEzMzEyIGZmYjJhNDdiNjQ1ZWM3YmYxYTViYmRhZmRlMzBhNDcxMGQ5NmNlODkgbGVnYWN5LXRydW5rCisxMzMxNCBmMTY0ZDkxOTMzNDFjOWI0ZjA4ZTQzNjg0MWRiYzM0NmJlMGViMmQ2IGxlZ2FjeS10cnVuaworMTMzMTUgMGZlOGNmN2FjNmQ1YTM1NjQzOTQxNTE3NmYyZWVkZTQyOWI4Y2QzYiBsZWdhY3ktdHJ1bmsKKzEzMzE2IGRmYmUyNThlMjhjMTgxN2RhMjIyOTEwNzFhMjVmZThjYTdiNGIwMmEgbGVnYWN5LXRydW5rCisxMzMxNyA2ODc5OWEyMDI3NjZhMTQ0MWE3ZjE5YzQ2OTYzNTQ5ZjBkNmE4MDgxIGxlZ2FjeS10cnVuaworMTMzMTggZDczYTMyOTNjNDdiMmNkZjFlODVmN2QwMzhiNmNlOTJmODM1NmM4ZSBsZWdhY3ktdHJ1bmsKKzEzMzE5IDVhZDI3YWVlN2U1ODg2MWY2MjVmZTdlZDg2NzAwNjMzMjA0MWE0OTcgbGVnYWN5LXRydW5rCisxMzMyMCAyZmUwYmI4YjllZWY3OWJiZGFhMWI3NzUzMDFmYTAzMTE5MzcxY2ZmIGxlZ2FjeS10cnVuaworMTMzMjEgOGRlMTNjZWE5NjQxMTIyNjg4OWRhMGU4YjFkNWNiZjExMjQ5OWY0NiBsZWdhY3ktdHJ1bmsKKzEzMzIyIDMzMWM4NWFjYTE5NTcyYzJmNTkzY2IwNTQxODI4YWMzNDYzY2Y1MzAgbGVnYWN5LXRydW5rCisxMzMyMyBjMTJmN2NmMTkyZmIzMzg2MDk4Yjg2MWM1OTljM2UzZTMwNGZkZmI3IGxlZ2FjeS10cnVuaworMTMzMjQgZDI2YTlmOTI1NGYxNGRjMzE3OTY2MDQ2OTE4NTVjNWQ0ZmVhMjQwOCBsZWdhY3ktdHJ1bmsKKzEzMzI1IGViN2E2MmFjZGQxZGM1YjRmODNkZTRkOGQzNGVlMTM4NTQzYTBiM2UgbGVnYWN5LXRydW5rCisxMzMyNiA1ZTAzZWE2OTI3ZjIwNmY1NjAwOTIzNGJkMTJiYzE1YWUxOGM4ZTQ1IGxlZ2FjeS10cnVuaworMTMzMjcgZGZiNWZkYTNiMjczYWQ3NGNhY2ZmZGRlMmMwOGZiNDgyYjkyNjgxYSBsZWdhY3ktdHJ1bmsKKzEzMzI4IGQzYzZlOWExMjZiMjlmYWM2ZDc4ZjI3YjdjNzNkZDI0YmUzYjcwMTkgbGVnYWN5LXRydW5rCisxMzMyOSA0OWEwYjhkY2IzNmE0ZTI2OTI4YTI2ZDE2MGIyZjA5Y2M5MWJjZmZjIGxlZ2FjeS10cnVuaworMTMzMzAgMGJjN2M1MDJlYjRkMmVjYzNhOTY4NmY0Y2U5OWYyODRiMDhhYzFmMyBsZWdhY3ktdHJ1bmsKKzEzMzMxIDk2Mzg5ZjBiNWVmMDg2YjRmMzhmM2NhNzZmYjBiZTI0NzY5ZWVkNTcgbGVnYWN5LXRydW5rCisxMzMzMiBmZTViN2RlYTVhMTBmZmFkYzI3M2RlYWVhODQzMTIyZDMwMWIxY2VmIGxlZ2FjeS10cnVuaworMTMzMzMgZWE4MzJjM2M2ZTZkYTI2M2E0OGNiNDM4MDA5YTY5OGY5ZTBiM2U5MCBsZWdhY3ktdHJ1bmsKKzEzMzM0IDJhMzBlZDkxMTJjNjFkNTljOWEwZGFjMWU5MTY0YjA5MmE4OTY2ZjkgbGVnYWN5LXRydW5rCisxMzMzNSA2OWQ4OWY3ZjUzMGM1Yzc5ZTk1N2YzZjRmNTgxZWY2ZTJjOGEyZWYyIGxlZ2FjeS10cnVuaworMTMzMzYgMzkxYTljYjJiMDcyOWY3MmEwMTU3YmNhODg5ZmJiMjZmZDVjZWMxZCBsZWdhY3ktdHJ1bmsKKzEzMzM3IDAwMzQ0ZGJmMmE2MDUyOTQ5ZWY1ODg4YzdiNDdhNDUwMDkzMTM0NmIgbGVnYWN5LXRydW5rCisxMzMzOCA2NWRiNWUyNjI5OGYyNjZkOGFiNDlhZTAzNGVjNzJjYmNiNzgyMWI3IGxlZ2FjeS10cnVuaworMTMzMzkgYWFlMTRjNjE4MWI5ZDg4ZDVkYzM5ZGQ1YTkzOWU2MGQ1YjJmNmEzNyBsZWdhY3ktdHJ1bmsKKzEzMzQwIDEzNWMxZWM5NjM2YzY4NmEyMGQwM2VkMjc3YTM1MzgyNGM5NzQyNGEgbGVnYWN5LXRydW5rCisxMzM0MSA1NTgxMzA3ZGIyZjczN2U2YTM4ZTJkNWM3MTM0MTRiZTIxMDZlOTFiIGxlZ2FjeS10cnVuaworMTMzNDIgZTY1MjQzNDZkNjZjYzE4NTliOWQ1OTZlNDAwOTM1MDc3ODE5ZmVhZSBsZWdhY3ktdHJ1bmsKKzEzMzQzIGVmZDE1NzNhNGIwM2IyMmRhMmExMDdlZGY3ZjAxMjUzNjQ5M2VjNDUgbGVnYWN5LXRydW5rCisxMzM0NCAwYmYzMDE5NDFlZmQ4YzUzMzU3ZmFjMTRhNDllNzFhNGUyYzkxM2FkIGxlZ2FjeS10cnVuaworMTMzNDUgOGZkYWM0MDI1MDMyNWY4OWJlN2U5NmQyM2QyMGNlYTFjNmJjNmMyMSBsZWdhY3ktdHJ1bmsKKzEzMzQ2IDg0YTRlY2QyY2I5NTM4MjQ4NmRkZTNlYmEwNDU2YWU4ODRiOGVlZWQgbGVnYWN5LXRydW5rCisxMzM0NyBhZWU3NGU5NzdhZGQwZmY3YTBhYmE3MjI5ZDA1NGFlYmE0Y2U1NzI2IGxlZ2FjeS10cnVuaworMTMzNDggZmE2YmUxZDBiODY0NWEzM2ZlNWI1YjMxZmM5NjllMDE5NjM2Y2M2MSBsZWdhY3ktdHJ1bmsKKzEzMzQ5IDM1MmU1ODI0ZWRhNjY2MGE0MTE0OGZjZWRmMzA0NjJiOWM0NjQyZDAgbGVnYWN5LXRydW5rCisxMzM1MCBlMWI4NmVmNDU1N2M1NzU5MmZhYmE5ZTkwNWY3NTM3ZTZkMmQ0ZjQxIGxlZ2FjeS10cnVuaworMTMzNTEgY2RmN2FlNWIzMzY3ZWVlNmU0ZGEyNDRlM2Q2NzA1ODJlYjk3OTc5ZCBsZWdhY3ktdHJ1bmsKKzEzMzUyIDVlZjRiM2NhNTU2NDU3MTJmNTYzZGZjMzJhNGIyNWE2OTMwYWNhNjcgbGVnYWN5LXRydW5rCisxMzM1MyBiNzM3OGRmM2RiNTZkNzA0MzE2MjdjMTdkOWJhYmNhY2JkOTE3ZjJiIGxlZ2FjeS10cnVuaworMTMzNTQgYzdhYTk5NjU4MzgzZjI3ZmIyNDJlNTY1YTI3OTg3YzFlM2MwNzM1MiBsZWdhY3ktdHJ1bmsKKzEzMzU1IGQ3OGNjMjY3NmM1NTFiNjcxODc0MDQzMmVmM2MzNzcxM2M5ZTk1Y2EgbGVnYWN5LXRydW5rCisxMzM1NiA0ZGE3NmY4MzhhNWU0ZWQ1YzNlM2IzMzE2YTNiMzZjNjkwZDI3MDIzIGxlZ2FjeS10cnVuaworMTMzNTcgYTE0MTVlY2VhMjNkNGEzMjFkNzFkYWRjNjU2MjQwOTU0MWJjYjcyNyBsZWdhY3ktdHJ1bmsKKzEzMzU4IGZjYjI1MzM1ZDZhZWRmMmMxZTVlZDlhOWUxNmM5YmZkNjAwYjM3NzUgbGVnYWN5LXRydW5rCisxMzM1OSBiMjdhZDUwOWI0NGIzNTAyNTY2MzljNTI5ODAwYzY3OGZiMzQxN2ZmIGxlZ2FjeS10cnVuaworMTMzNjAgZTJmZTY1ZTg3NzYxYjg4MGM0MGJmYzZlNzZkOTk1ZWM1OGI1MGY1ZCBsZWdhY3ktdHJ1bmsKKzEzMzYxIGYyZTEyM2FmMmFkYTQ0NzEzYTdjNGE2NDgwMWRkMjJjYmZjZGJhM2IgbGVnYWN5LXRydW5rCisxMzM2MiAyODg4N2Y0MGUzNDQyZTBiNTFkNDQ5MGE3MTI1MTY3NDczMTY3MGQzIGxlZ2FjeS10cnVuaworMTMzNjMgYmUwYWM1YWJlODNiN2I2YWI3ODFlZTJjZWJkMWNhZTY2NGYyNjNiZSBsZWdhY3ktdHJ1bmsKKzEzMzY0IDFhYTgwZjViZjlhYzkxZDNjMDEyYmQ2YWFiNzRjOTFjM2NiOTAyOTYgbGVnYWN5LXRydW5rCisxMzM2NSA4MjAyZjVhY2UyNDg0OWFmNzUxZjNiMWU5YTk0MDk5MzVkN2M3NzBmIGxlZ2FjeS10cnVuaworMTMzNjYgZTc1MjUwZTU1NDI0ZjQxZDk0OGI2NjEzMGI1MzQ4NjAyODQ0MTdhOSBsZWdhY3ktdHJ1bmsKKzEzMzY3IGNmZTQ3MjkxMmI3ZjhiMDI4MmU3NGRhOGU0Y2IwN2E0OWQyMzg1ZDAgbGVnYWN5LXRydW5rCisxMzM2OCA5YTNhMDQ2OGY1MWM3Zjk3ZmIzNDIyZTlkYzA3ZDc4ZjdlYmQ5NDBlIGxlZ2FjeS10cnVuaworMTMzNjkgNGY1ZDQ5NDU2MDVjNjdkMzRjNzU5YzdhOWU4MjU3YmUzNTEzYzZmOCBsZWdhY3ktdHJ1bmsKKzEzMzcwIGY3YjQxYjI3MDU1NDgyMTgzZGMyZmRiZmI4NmY0ZmExY2YzZjlhYWYgbGVnYWN5LXRydW5rCisxMzM3MSBjZDJhMjViN2I0Mzg1OGU1ODUzZmFiOWRlNGQ3YmNlZGU3YzFiN2NlIGxlZ2FjeS10cnVuaworMTMzNzIgM2VkYjMyOTgyMzRjZDBiMThlMmM0NDdlNTlkZGY2ZGQ5NzI0NmM3NCBsZWdhY3ktdHJ1bmsKKzEzMzczIDI1MTM4ZGIzNWNlMWVkZTdkN2YxZGZlZGE4ZWEwMzlkZWUyZWYzZTEgbGVnYWN5LXRydW5rCisxMzM3NCBiYmMyYTg3ODk0ZDA4MjkzMWYwN2EyMDE3NjIwN2U4ZGRmYWVmZTJkIGxlZ2FjeS10cnVuaworMTMzNzUgN2QxMTgyZDBjNDE5M2VhMTE4ZWVmYjExZjA2MzZmNjFkYTZmZTQ3OCBsZWdhY3ktdHJ1bmsKKzEzMzc2IGZmZmY2NjVmOGE3YmYyOWVmZjU1NjE2NWEyMzZiODU1OGE3ZThkMGEgbGVnYWN5LXRydW5rCisxMzM3NyA1YzVhZTE2MWYyOGFjMDQwNmI5YjNjZWQxMzM4MTI3YWEyMGExNTg0IGxlZ2FjeS10cnVuaworMTMzNzggNzU1MGEzNWQ4MGY5YmFmZmNiYWFhMjhiOWEyOTk1MWRiYWZjMDIzNSBsZWdhY3ktdHJ1bmsKKzEzMzc5IGE1NjM3OTIwMDA3NzBlMTYwOWIzY2Q3N2ZhZGM1ZTllNDU0ZTkyYzAgbGVnYWN5LXRydW5rCisxMzM4MCA5ODY4YzgwNzczMmQ1ODcwOGQ2NTAzMzYzOTQ2MzI4ZDI4MzkwZTJjIGxlZ2FjeS10cnVuaworMTMzODEgODYzNGVhMmVjNGUyZmRjMmE3MGQ1NGRmMTZmZjc0ODM1YmU0NjRkZCBsZWdhY3ktdHJ1bmsKKzEzMzgyIDE4MjFlNjRlMDhmY2VkYThmYzI4ZTEwZDEyZDhkMGFmOGI0NWRjNDMgbGVnYWN5LXRydW5rCisxMzM4MyAxN2FlMTc4YTMwMzg4YzRjZDFmMDNlNmYwNzQwMTMzNjY0NDYyNTM2IGxlZ2FjeS10cnVuaworMTMzODQgMjY2OWFjN2NkNzZhOTZmODcxMzIwZWJmOTI3ZWY5YjAzNjEyYTQwYSBsZWdhY3ktdHJ1bmsKKzEzMzg1IGI5ZWY0MjQxNjVkNjI1M2QyYmQ1ZmQ0NjA4MzY0YWY3MjlhMjc0MzMgbGVnYWN5LXRydW5rCisxMzM4NiA1MDIwYmZhNzQyZWFhNzUxMWM2MDg1MTU4NmQ2MTgwMGNkZDRmZDMzIGxlZ2FjeS10cnVuaworMTMzODcgZjg4ZDNhNzYzNzIzZDViYTBiZTc1OTljZGEzZmZiY2U2MGI2NmVhYSBsZWdhY3ktdHJ1bmsKKzEzMzg4IDgzOGNiMzRhYmI3OTE5YzM0MmYyNDNhOTYwMzI4YjM2NjBkMGFmZGQgbGVnYWN5LXRydW5rCisxMzM4OSAwNmRlZjgwNDJkOGUxNmZhMDEwNjU1YTA3YmVjMDE2YTUzMzQxYTViIGxlZ2FjeS10cnVuaworMTMzOTAgYzIwOWRkOThiODY5NTI1YTFkZGY5ODhiNjdmMzAzZTE5NjE2OGVhZiBsZWdhY3ktdHJ1bmsKKzEzMzkxIGYwMzE4YTFjOTg5MmNiNTcyN2Y4NmQxMjdlMzk5MmZmMmE2Yzk3MmEgbGVnYWN5LXRydW5rCisxMzM5MiA2MmVkMzJlNzliNWQyOTYyNDYzMzQwN2QwZGNhMzM5NDI0ZWNkYWRhIGxlZ2FjeS10cnVuaworMTMzOTMgODIyYzUyODJjMTQ1Njk3ODk3NTU3ZTc1NGJkZjkwYjI1ZmQ1MTlhOCBsZWdhY3ktdHJ1bmsKKzEzMzk0IGFmMDczODljODUxNzVmYmE1OTQ4MTU3MDJmZDZiZjJiMmRkYmI4MzQgbGVnYWN5LXRydW5rCisxMzM5NSBiYTZkM2FlM2EwMjE0N2EyMTZmYWU4MDcxMzc3ZDljMzA3YmRkODgxIGxlZ2FjeS10cnVuaworMTMzOTYgYTYyOGMzNzA1ODk3YWNlYmE2Zjg0YjEyMDI3MzdjNGU1MzUyY2MxOSBsZWdhY3ktdHJ1bmsKKzEzMzk3IDYzMmI2NzA1YmQ5ZmFkZDYwM2QxNDkwZmFjYjQwNDhhZTNjN2RhMGIgbGVnYWN5LXRydW5rCisxMzM5OCBiODEzNjU2NmNhZjVjMDBlMDc5NWQ4YjNkNWQ1OWU3YTQzNmI1NTdmIGxlZ2FjeS10cnVuaworMTMzOTkgNjc4Mzg0MmMxMDQyNDVjMDM2ZDNkOWJmMTEwODE3YTIxYzRjYjcyMSBsZWdhY3ktdHJ1bmsKKzEzNDAwIGQzOGQzYjhlYTQ2M2JmY2YxZWIwOTRkYzY1YThlNWEzOWI0YjYzZjQgbGVnYWN5LXRydW5rCisxMzQwMSBlMTgzYmMwMDQ5ZGNkZGMwMDM2NWU1OWEwODEzYzhiNDY5NzAzM2ZkIGxlZ2FjeS10cnVuaworMTM0MDIgNzQ4Njc5NmZhZTViOTQ0NWZkYmNjYjc5NTljNmUxYjViNWZlZDU1NCBsZWdhY3ktdHJ1bmsKKzEzNDAzIDgxN2QwNTM4MzUwZDMzNjQ0NzEwMGMzYjFjYzc5NzdhMDAxNmM0M2IgbGVnYWN5LXRydW5rCisxMzQwNCAzZTQxOWFiYzViYWFkY2ZiMTA5M2ZiODgyYmE1NjA1MDZiMDE2ODViIGxlZ2FjeS10cnVuaworMTM0MDUgOTU4MzdlMjczMjU3NTlkMjM0Mjc4YWQyZmVkYzk3MjhmN2Q0MDU3OSBsZWdhY3ktdHJ1bmsKKzEzNDA2IDg1Y2Y0OWE5YjAwYmNlZTczZmExNzQ3NzViNDYyNGI5NjcxOWZjMWYgbGVnYWN5LXRydW5rCisxMzQwNyBhNTllOTVkMmYxODEwYjQzNjY5NzQyN2ViYzdiZDU1M2ZhMjFlOWQ4IGxlZ2FjeS10cnVuaworMTM0MDggMTdjYTJmNjRiNmQ2NzE3Yjc4OGNlZGNiYjI0NDg1ZTA4NGJiYzRlMSBsZWdhY3ktdHJ1bmsKKzEzNDA5IDdlNTZkMzlkMDc0MTE0MzI2YzY5Y2E4MmZjMTAxYWIzYTNjZDgxZmEgbGVnYWN5LXRydW5rCisxMzQxMCBmMGEyMjEzNDQ0YTA0OTQ1ZDVkMzhmOGI1ZDFiNzhhMmFmYjdlOTU5IGxlZ2FjeS10cnVuaworMTM0MTEgOTU3YzMzNTA0Y2MxMjRkYWY3MWFmYmFmZGYyZWZkYmU5OTlkNTk5MCBsZWdhY3ktdHJ1bmsKKzEzNDEyIGQzMTc0MzIwZTNjZWM5YmVhZDU5OTIzYWIzMzBkYjI5NTgwMDU5NzkgbGVnYWN5LXRydW5rCisxMzQxMyBmNGM2Y2U1NTkzYjlkNjBkOGJkZjYyYTZjNDhjMTUyOWIxOGNjYTYxIGxlZ2FjeS10cnVuaworMTM0MTQgYzI0NTE2MTQ2ODVhYzRkOGViNjQ4NmQ4NWVhNTRmYTM1YWQ2YmExOCBsZWdhY3ktdHJ1bmsKKzEzNDE1IDI5ZTk2Mjc1YTQyZGNiNzk1ZDU1ZWU4M2M5NTgwMzIwMjdkYjUyZTAgbGVnYWN5LXRydW5rCisxMzQxNiA4YTMxMDk3NDBjNmFmZjBlNDVhNWMwMzg2N2NmYWE1YjA1ZDhhNWYzIGxlZ2FjeS10cnVuaworMTM0MTcgZDgzYTRhYTcwZWI0MjhkMjJkOTNkY2FiODE2ZTg4NDkyMWYzNDBjZiBsZWdhY3ktdHJ1bmsKKzEzNDE4IGNmYWM4M2Y1YzBlZmE0NzJjMTM2Nzc4YTg1ODNhZjM5OGYzZjk1ODUgbGVnYWN5LXRydW5rCisxMzQxOSBiMWExZWIzMzQ5ZjM3YWQxYjYzOGJlMzRlMGU5MmM1MTRlNzRlYTk0IGxlZ2FjeS10cnVuaworMTM0MjAgZDFiNGZkMDU3YjRhNjM0ZWM0YWFhOGU4NTU2NjVjMjRlOGRmOGFlYiBsZWdhY3ktdHJ1bmsKKzEzNDIxIDNmZGYxYzdkOWY5ODhmOWU5MWIwNDcxOTc0NmZkYmNiMzI1Y2NjMmIgbGVnYWN5LXRydW5rCisxMzQyMiBiYTc5NzE3OWUyYmE2MzkwYTVmYjIxYzRlZmRkNTQ0YTg3ZThjM2UzIGxlZ2FjeS10cnVuaworMTM0MjMgYjc1ZDAxMTllZDUxYTA3YjhjYmI2MDNkMjNmYmQxMWJmNzZiMmFhMiBsZWdhY3ktdHJ1bmsKKzEzNDI0IDZiMWNiODU4MmExZjkyYmNjNjc0M2M2YWU0YmY5YTRkMDRmYzAwYjkgbGVnYWN5LXRydW5rCisxMzQyNSBhOGExZWI5OTM0MWMyMWI4ZTYxMjI5NWI1ZDkzODliNjA1OWZjMjBmIGxlZ2FjeS10cnVuaworMTM0MjYgYmRkNmIwOWEzNzFjNDBkYWRkYTg2ZWE5OGZiNWJiYTk3MGE0ZGJkYiBsZWdhY3ktdHJ1bmsKKzEzNDI3IDNmYWE2MzQzMDkyNDZmNjQzNWU3NmY4ZjNjNGY2ZmZkMjQyMmZjYjIgbGVnYWN5LXRydW5rCisxMzQyOCA5YzQwMzQ4ODc1NTcyOTEzN2ExNjczMzFhZmRlMmVlMTRjYWJkNWUwIGxlZ2FjeS10cnVuaworMTM0MjkgMWM1NTJkY2Q0M2Y5NzVjZDg4YzkxYWJiZGI5NGZkMDljYTI4ZDMzNCBsZWdhY3ktdHJ1bmsKKzEzNDMwIDgyMzRiYjM2ZmI4YzM1ZjkwMzk4ODRmMTNlYmVjNmQwODk2NjU2ZGMgbGVnYWN5LXRydW5rCisxMzQzMSA1MjU5NzAzZjRiNWMwMjAyMjU1NGU0NmM1NTY3MmViMWVhNTIyYjU4IGxlZ2FjeS10cnVuaworMTM0MzIgYjM1YmFiNDU3MzUwYjUwYWE1ZjE5NjkxMTE0MzRkNzFhZWRlNTY4MiBsZWdhY3ktdHJ1bmsKKzEzNDMzIGY5YzAzYjNkMGYxNDZlOTE4MTYyYzg1YTQzYWVhYmZkNjhlMjNiZmQgbGVnYWN5LXRydW5rCisxMzQzNCBlNDEwNDlhYzgyOGI0OWMwNmRhODNmNWZlY2M3ZDdhYmMwZGJhOTQ4IGxlZ2FjeS10cnVuaworMTM0MzUgNWVkOWEyZGQxOGQ5ZTZmOGEwNWVjM2FlYTU3OTNmZTliYjQ3YTQ5MCBsZWdhY3ktdHJ1bmsKKzEzNDM2IDg0ZjFjYmUwMDk0MzM1YWU2ZTVhZDA1MDg1NDMzNTliYzIwMDY0MWMgbGVnYWN5LXRydW5rCisxMzQzNyA0NTFiMDg0OWM5NzcyNWRiZWMxMDc0OGU4ZDA0ZjM1NzJiNjFmY2JhIGxlZ2FjeS10cnVuaworMTM0MzggMThhMjkyMTlmNWUwNmY0ZGNlNWExYTYyMWIwYzllODVmN2QwNDE1NCBsZWdhY3ktdHJ1bmsKKzEzNDM5IDUwYzNiM2MyMTdhMzllNDZhN2FmNTQ3NDRiNGQ4NmIyZmFlZGMwMTAgbGVnYWN5LXRydW5rCisxMzQ0MCBjYzZhYmM5OWQyZGRmMTQxNDE4NGM4ODAwOTE5YzE0MDljYjRhZGQ3IGxlZ2FjeS10cnVuaworMTM0NDEgYzA4OTAyMGE3YTFlNTc2NWZmOThiNThkZjhlNDE1MGI5MjA1N2FlYiBsZWdhY3ktdHJ1bmsKKzEzNDQyIGRjY2JmNWU4Mjk0ZGQ5MWY2ZmUzYTIzYjRkNTFiMDBjOWE4MDQ3MTQgbGVnYWN5LXRydW5rCisxMzQ0MyA4NDE2NTUzYzMzZGYxN2ZmMmJiNzk1MTc1NGJjNTJmN2E4NGNmNzc2IGxlZ2FjeS10cnVuaworMTM0NDQgZThmZjRiMTI5OGMyMzNkMmY1NWQzZTI5ZTNiZjQ3MWM1N2NiOWE1ZiBsZWdhY3ktdHJ1bmsKKzEzNDQ1IGFmNzY1MzhkZDA3OWQyNGYwZDY3ODFiNDE0MGE4MWY3YTA2NzJlMjAgbGVnYWN5LXRydW5rCisxMzQ0NiA3MTI4YzBmZDJiY2Y1MjRlNzQzZjQ1YzFiNzI3MDI1MDhlOTMwNzIyIGxlZ2FjeS10cnVuaworMTM0NDcgOGNjMGM4OThmNmE3NDc4M2QxODMxZTQ4MDJjZTNhNGI5YjA3MDIyNiBsZWdhY3ktdHJ1bmsKKzEzNDQ4IGU3ZWFlNjNlOGI5MDc3OTA0OWU1ZjhlMTNhZjc4ODgwMGM2OGRmZGUgbGVnYWN5LXRydW5rCisxMzQ0OSBkOTc2NDUxYjQ2NWYyMTJiODI0ZGU3MGMwZDQ5N2U2MTM1NzBhNjg2IGxlZ2FjeS10cnVuaworMTM0NTAgNmVlNjZmZTE3OWFkNzJlMGIwNTJiYjM5NGJkNWNiOGJkZTc1NjI4YyBsZWdhY3ktdHJ1bmsKKzEzNDUxIDM1ZDViMDczNjI0MjI2MjFiZTg2NDk1OGFkMjFmOTUzMWU3YzQ4ZGIgbGVnYWN5LXRydW5rCisxMzQ1MiBiZjZhMDk4Mzk1MWRkZGQ5YTFhOTM2OWM5NDQyNGE5OGUyMmFiNjYyIGxlZ2FjeS10cnVuaworMTM0NTMgMWFiYzI3ODViMzQ0NmMwYmY4OGM2NzU3OTU0ZmE3MWNhMzI0ZDQ3MCBsZWdhY3ktdHJ1bmsKKzEzNDU0IDM4NDI1MThjZjgwMzAxMmNlNTBkM2Y5OGFmY2UzYzNmOTZmMjMxNTUgbGVnYWN5LXRydW5rCisxMzQ1NSBiOTI4ZjdiOWRmYTIzZDNmZWQ0NmMzYzIyODYzMDY4YjMwMTA0ODA1IGxlZ2FjeS10cnVuaworMTM0NTYgMDM1MzBlYTIxNDhjODU4NDY1MGE0OGJiYTdmMDJjNTdmYmY3YzJiNSBsZWdhY3ktdHJ1bmsKKzEzNDU3IDBmYzJlODU3ZTgyMjg1MDM4NzAyZDM5NGZiODk5YWIwOGYxMzIxY2YgbGVnYWN5LXRydW5rCisxMzQ1OCBiNmQzZDE3MTk1ZGNiYTg2NTU1NmExMjk1ZTFmMWFmNmY0YjZkOWFkIGxlZ2FjeS10cnVuaworMTM0NTkgMzE3MTFhMDU4NzM4MjM2OGYxZGQ4NGJhZWZjMjhmY2ExNDFiZTA5YyBsZWdhY3ktdHJ1bmsKKzEzNDYwIGUwNTBkNGMwMTMyN2NkOWM2ZjViMTI5NDMzOGU1YzdmMTZlZGExNjUgbGVnYWN5LXRydW5rCisxMzQ2MSA0ZDc2Y2FiYmY5OWU2NTU4MGIxMmNkODUwNGU1ZjU2NDA5MGI4OTJjIGxlZ2FjeS10cnVuaworMTM0NjIgNDI5NDBlZDIyY2ViZDc4YjA3NWUxMmVhZGVhYTcwODI4MzkxMGIzNSBsZWdhY3ktdHJ1bmsKKzEzNDYzIDY2Njg5YjJkYzg5NTRiNWM3M2FhYjIzODUwNDA1MWI0N2YwNmYzYTggbGVnYWN5LXRydW5rCisxMzQ2NCBiZGMxNzAzZmY5MmNlN2Y1MjRiZWQwZTJjZmFiYjgyNDcwNTBlNjA2IGxlZ2FjeS10cnVuaworMTM0NjUgYzc3OTAyNTQxYjEzYTU3ZGMxMDg4NDE2NmUwOTE0Nzc2MDBmZWI5OCBsZWdhY3ktdHJ1bmsKKzEzNDY2IGJiYjAzODY4ZjIxYjYyNzEyN2VmN2MxMWI5YTI3ZmUyOTczZjViMDQgbGVnYWN5LXRydW5rCisxMzQ2NyBhYTMyNzZlNWRjY2Y1YjIyMTEzNjNlYWIxMGI3ZDNhNjM1N2MxODU5IGxlZ2FjeS10cnVuaworMTM0NjggMzZmYTgzNTJkMDM4ODE2NzgwMzQxOGEzZGE3OTkyYjYzNjQ2ZTAwNCBsZWdhY3ktdHJ1bmsKKzEzNDY5IDRkYzllZWUyNjE1NzE0NTY3Y2IxYTFlODcwZGU2NjRiMjNjNTQwZmEgbGVnYWN5LXRydW5rCisxMzQ3MCAyYjlhZjlkN2RhMmQ4YTdlYjQ1YWY4MTVjMzM3ZTRkZjQzNzU1NjI1IGxlZ2FjeS10cnVuaworMTM0NzEgZGEyMzYwNDRjZjZjOGE5ODJmYzI4M2U4MDRhOGU1ZTVkY2JlMTI4NyBsZWdhY3ktdHJ1bmsKKzEzNDcyIDMwOWQ4Y2Y4M2ExMTc5ODJhMTcxM2MyMGRlZTM5YWNkMGNhMWUzODMgbGVnYWN5LXRydW5rCisxMzQ3NCA1MGU3ZWIyMGJiMWQ1MWJhNTY5MjY1MzYxZDQ2ZDU5NzNkZTdlMmE4IHN0cmluZ19tZXRob2RzCisxMzQ3NSAyNTkyMzdiMjViOTM1ZjlkNzg0MzVjMjA5MWY0NjY2YjBhNDA2MmJmIGxlZ2FjeS10cnVuaworMTM0NzYgNzBjZjEzNjA5YWVkNjhhM2VhOWY5NmVkOWM4NDM4MGM2MDNkNDNjZiBsZWdhY3ktdHJ1bmsKKzEzNDc3IGZiYjRlZGI3MjAyY2M1ZTFmZTY1M2FiNWFjMWQwZWFhM2UwYzU0Yzggc3RyaW5nX21ldGhvZHMKKzEzNDc4IDViYTJlNGNlNThjYjRiYWFkMzUyYjI5NThiOTQxMWRmZDE5OTBmMGQgbGVnYWN5LXRydW5rCisxMzQ3OSA1NDgwOTIxYWU3ZjNmZWU2OWQ2NmU1ODQyMDg5YjZjNTk5MjE1MzA1IHN0cmluZ19tZXRob2RzCisxMzQ4MCA5ZDcxYzJjM2E2NzU2ZjI2ZTM0ZjQ2Y2ZjMzJkMTg4M2NmNTY0ZmFiIHN0cmluZ19tZXRob2RzCisxMzQ4MSBlMTQwN2Q2MzIwY2JiN2MxMDJmMzdmMmY5ODM0N2ViMDY2MzJjMDlhIGxlZ2FjeS10cnVuaworMTM0ODIgNmZmYzlkOGRjNWI5ODZhODgyOTExOTRiZDZiNzA4YmQxYjZjODc2OCBsZWdhY3ktdHJ1bmsKKzEzNDgzIDE3YzRkYmQzNmU2Nzc2NDQ4NDVhNTExOGEzZTNlZjc3MjU5ODllZmQgc3RyaW5nX21ldGhvZHMKKzEzNDg0IDc4Y2VmNTY3NmNjZjYxMmVmYTdkYTA3NzQ3YTRmMzg3YTk3N2I5ZDYgc3RyaW5nX21ldGhvZHMKKzEzNDg1IGFlODUwODEzY2I3YjQ4Y2M5NDNkYzYxNDg0MWUxZTJmOWNkZGNkZTMgc3RyaW5nX21ldGhvZHMKKzEzNDg2IGZmMGU1NzZlNzU4YTdiNGU4NWY0NTlmZmE1M2NhYTRhZmQxOTRjOTYgc3RyaW5nX21ldGhvZHMKKzEzNDg3IDFkY2M5NTZmY2U2NDlmNGY0YWVmZmI3YTJmYTQ4NzQwMTU1MzBlNzMgc3RyaW5nX21ldGhvZHMKKzEzNDg4IGVlZDVlYjViOWQ0ZjU5Y2YwMzg2ZjdmNGFkZWJjYjlmMzA2YWIwZTYgc3RyaW5nX21ldGhvZHMKKzEzNDg5IGRkZDIxNjAwM2JkMTg3MWQzNjQ1ZjI1OWEzYzY5NGNiYmQ5YzZlNjkgbGVnYWN5LXRydW5rCisxMzQ5MCBjYmJmMjk3YWVhN2E5Mzc5N2I4ZmQ5YWMxYjRmOTViMGMyYjM3MDMxIGxlZ2FjeS10cnVuaworMTM0OTEgYjJkNjlmNzUxMzgzOWE0NTMyOTlkNWQxMzg0MTkxY2NlM2UzYTA1ZiBsZWdhY3ktdHJ1bmsKKzEzNDkyIGVjNmM4YWQ5ODM0MTA3OTQ2M2FmOWY2Mzg0MDM4MTU0ZGE5MDA5Y2Igc3RyaW5nX21ldGhvZHMKKzEzNDkzIDUxOTY5ZmQ3M2M0YTdlN2NjYjY2MWE1Y2E1Mjc4N2ExY2M5NjY0NWUgbGVnYWN5LXRydW5rCisxMzQ5NCAyZWMwNGZmMmI5YjczMmY5NTI5ZGI4MWU1OTQzNjdhZGMzZmFmYzgwIGxlZ2FjeS10cnVuaworMTM0OTUgY2ZlZDI5NDkzZWQ2NTYxY2JlYWIxNzk2NTkzZTVjNmExYTA2NjIzOCBzdHJpbmdfbWV0aG9kcworMTM0OTYgMGYwYTY2YzFkZWFjYTI2ODhhZTRmNDRlZTY4MjIyOTZmNjk5OTc2NCBsZWdhY3ktdHJ1bmsKKzEzNDk3IDBmMjI5MmY1N2E4MzE3NDM2NjkyMGJhOWM1NzU3ODBiMGU5OTI0MGQgbGVnYWN5LXRydW5rCisxMzQ5OCA5NWQ3ODI4MTU5MDFkOGJhZTU2NTgyMmZmZjcwZmYxYzVjNTBkNWNmIGxlZ2FjeS10cnVuaworMTM0OTkgYjJmYmQ5YTVhMWI1NWMxMzJkNzI2ZDcwZWQyMGYxNmE5YmVkZTc2OCBsZWdhY3ktdHJ1bmsKKzEzNTAwIGFlOTZiMWExMjhmOGMxNjk4YTEyOTUxNmMyYmMzZDc5YmM5ODYyZTEgbGVnYWN5LXRydW5rCisxMzUwMSBmOTBlZDk2NjMxNmU4YzY5NDIzOTdhZmQ5ZjYzMDM2MDYxMDhiYjFlIHN0cmluZ19tZXRob2RzCisxMzUwMiA0Yjk2OTI2NWI5ZDIxYmNjYTg2MmQ0ODZmNWY3ZjBlMmM3NWQ1NWVkIHN0cmluZ19tZXRob2RzCisxMzUwMyA3MTEzODAzNzJiYzkxOGEyZmYwZDY5NTU5YWMwM2FlMmQ2ZmJiNDg5IHN0cmluZ19tZXRob2RzCisxMzUwNCAxN2VjMDkwMmVhZmEwNmNkNzQwY2MzNjIwYzdiZDViOTE1NjA3NzNmIGxlZ2FjeS10cnVuaworMTM1MDUgYmVmNDZlYTVlZjc1YzA0YzRkYzY1ZDM1NjJjYTg4Yzg0MmIzMGVkMSBsZWdhY3ktdHJ1bmsKKzEzNTA2IDM5ZjI0MmJmNDYyMjgzNjg3NmEyNmUzZWRlY2I2ZjFiYzQ0YTk1YjkgbGVnYWN5LXRydW5rCisxMzUwNyAxZGNjYmVlYWY3NmFjZWY0MzZjMTA0MDZlOTk4Yjk3ZTE4OWVhOWE1IGxlZ2FjeS10cnVuaworMTM1MDggNjNiNTMwYzAzMGM1NGIwMWU3N2ZjNTFkMDk4NjdjZjJiYmQwMjk5NCBsZWdhY3ktdHJ1bmsKKzEzNTA5IGM3M2Y1Mzc2MmY5YjBmMmYxMTI1MGU3M2Y3YzFkYzY2YjhkZTQzNzUgbGVnYWN5LXRydW5rCisxMzUxMCBlMzlhOWYxMjkxNjMyNmQ1MmUzZjYxZDJmZTJkZGRiODg2MDZlZWE5IGxlZ2FjeS10cnVuaworMTM1MTEgN2ExMjdmMTk5MmQxOTc1ZGRlYjkwNGNkNzVlMTYwN2Y4MzMxOTIyMiBsZWdhY3ktdHJ1bmsKKzEzNTEyIDZjYWZhM2Q0ZTIyOWU4YjBmZjUwYjQ5ODY0NmNiYjMwZjYyZGQ5OWYgbGVnYWN5LXRydW5rCisxMzUxMyAxMzQ2MmNhNmQ5NDc1NWVhYmViOGVhYjE2ZDFjYmRlYzFjNzU5M2Q3IGxlZ2FjeS10cnVuaworMTM1MTQgNDA1MDk5NWE2NjM5YmI4ODJjZTY3NGE0YmVhMjI3YjNiYTUxN2JkZSBzdHJpbmdfbWV0aG9kcworMTM1MTUgM2MzNTEyNTVmMTczYWE5NzMyMTM0NDc3MjU1ZGQ4MGEyNTk0NjBhNiBzdHJpbmdfbWV0aG9kcworMTM1MTYgNDZhNTYxNzczMjJlYjA2YWE0OWIxOTFiMWJlNjE0MzhmNzUyMzczNyBsZWdhY3ktdHJ1bmsKKzEzNTE3IDg3ZDNmOTFlNDRkNGQ3YzRjZTUxMjYzZWVhYTliY2I4ODIwNTU1MWIgbGVnYWN5LXRydW5rCisxMzUxOCAzZTA1ZmNhYWFlZDIxOTIxOGViYTg2MTI3YTlkZGEyMDZkMzg3ZDU3IGxlZ2FjeS10cnVuaworMTM1MTkgNzA4NjI4YjZjMDRiZjIyZTRlNzAxOGMyYzYzNjdjOTZiYmIwMWZiNiBsZWdhY3ktdHJ1bmsKKzEzNTIwIDBkMTg2YzEwYTcwZTI0YmQ5Y2I0Nzk1NWViMjhiMmRkMzBlNjljNGIgbGVnYWN5LXRydW5rCisxMzUyMSA4NGFiMTRkODU3NjM0MzBjM2RjNTFjMzcyM2NiZWI4MTQ0M2U2ZTAwIGxlZ2FjeS10cnVuaworMTM1MjIgZTY4ZTYwNmMxMzBmNTFhZTkwYWI4NTc1OWQ1Zjc0MDNmNGI0ZTdlNCBsZWdhY3ktdHJ1bmsKKzEzNTIzIDY5NjE1ZDUwZjU4YzAwNWQyZGY1OWYzNGNlNzRjYjFmNGE2OTY4ZTQgbGVnYWN5LXRydW5rCisxMzUyNCA4YTRmYzRkYTc2OGQ4ZWNjZWQ2YTM4MjE1Y2QyNDZkZjk3ZWQ2ZGNjIGxlZ2FjeS10cnVuaworMTM1MjUgZmNhYzY0MzJhN2RmYjNmNTE5NzhiNWUxZGY3Y2Y0MjRkYTdlZjE2NyBsZWdhY3ktdHJ1bmsKKzEzNTI2IDkyNmNiNWE1ZWUzMDkzMzU5N2UwOThhYTgyYTA5ZDExYzZiNWE3YjIgbGVnYWN5LXRydW5rCisxMzUyNyBlNTI3MjNhZjNjZDVlNmYxMGVkOTVkZWY4YjRkOTg0YmQ3OTNmYTFlIGxlZ2FjeS10cnVuaworMTM1MjggMDg2YjJiYzc1NzhmOWVmMmM1YzVjMDM2MDQzZWM5YjQ2NGM0YWIxNCBsZWdhY3ktdHJ1bmsKKzEzNTI5IDhjMTE0ZWRlMDU2ODYxZGQ1ZTI1YmEzMTE5YmY0YjZjM2Y5N2I0MDQgbGVnYWN5LXRydW5rCisxMzUzMCBjOGVkNWExNDQ4OGRlNmQzMjRkMTY3YTE1Y2IxZGNjZmM1MDJiOGQ1IGxlZ2FjeS10cnVuaworMTM1MzEgMDg3MmRhM2YzZjU2MTIxMDlmYzA2MzFmN2UyMGU2ODc1MTI5N2IxMiBsZWdhY3ktdHJ1bmsKKzEzNTMyIGI5ZjU1Y2MxMGFiM2YxMGFhNGI0NTM0ZTlkNzIwOTA2NWNlNDc2OTIgbGVnYWN5LXRydW5rCisxMzUzMyA0ODE4Y2I4ZTExMTAxZGY0MDBkN2I3ZTc3ZDMyYzI2MGIxNWE5ZDY2IGxlZ2FjeS10cnVuaworMTM1MzQgNDkyYTY5NDg5MDI4NmEyYWRjNGEyODZiMWYzNzY5MDViOWYyMDE4MCBsZWdhY3ktdHJ1bmsKKzEzNTM1IGU5NDQyNzM0YmM0OTczZDkyZDllYzQyMjMyM2NkODcyMGI0OTI4OTAgbGVnYWN5LXRydW5rCisxMzUzNiAzYjNjN2I4YWRlN2ZmYzg5NzZmM2I2YWU1MGE4NDQ3YmM3YWZhMGY0IGxlZ2FjeS10cnVuaworMTM1MzcgNDA3N2NhM2IyNjU2MzI4OThiY2RjZjQ3NWE5ZjdjNDU0ZTkwMzVhMSBsZWdhY3ktdHJ1bmsKKzEzNTM4IDJhMmU5OWFmMzgyOTE0ZTYyOTZiZWJiNzA5NjExNjM1ZGUwZmM3OTUgbGVnYWN5LXRydW5rCisxMzUzOSA2YzkyZGIzYTc3Y2YzN2EwM2I4M2RkNjMzZDU1ZjkyNjAyMDcwMmI5IGxlZ2FjeS10cnVuaworMTM1NDAgNDEzODVkNTBhMTBjNzQ2NTI0MzdkOGNlZjRiYTVmODlhYzUyNzAzZSBsZWdhY3ktdHJ1bmsKKzEzNTQxIDc0OTcxMWY4ODVjZDNlNTYwZWFlYThmMDVmYzEzMGZmMDYyYWM0YzMgbGVnYWN5LXRydW5rCisxMzU0MiBmNGM2MzE4NWNlMTEwODc0MTk0YjQwYzI5NGJjNzQyNDdiN2I2MjNhIGxlZ2FjeS10cnVuaworMTM1NDMgMzA4Y2UyMTgzOWQ2M2ZhMDE5OTkzMWRkODJjODFjY2RlOGZkZjAzOSBsZWdhY3ktdHJ1bmsKKzEzNTQ0IDYxMjdiNzM4NThiYzkxZjM1MzE5ODNlZTRmNzY4ODE3M2ZiYjhkNDIgbGVnYWN5LXRydW5rCisxMzU0NSAzYWRjMDM0MmQwOGJkMjVmNjgzZGIwNGE0MjhiMzZkNzc4MWRlZjhlIGxlZ2FjeS10cnVuaworMTM1NDYgMTE5ZTExOWZjZjVhYzBiMzcwNjNhNmE4ODdmOTUxM2ViN2NlYTM2ZCBsZWdhY3ktdHJ1bmsKKzEzNTQ3IDEyNmE5Y2RmMDU3MjllMTVmNDBjNWFkNTFkMzNjMzgxODM3MjU3NDYgbGVnYWN5LXRydW5rCisxMzU0OCBlNmFiZWRiYzc5YzY5ZWU5ZThkNDg5MWE4MjViZmU0ZDdkMGYzNDliIGxlZ2FjeS10cnVuaworMTM1NDkgMjcxYWYyOTdhYTNlYTc5ODUzNGI4ZmI2ZmU4N2I2ZTBmYmRmZWJkNyBsZWdhY3ktdHJ1bmsKKzEzNTUwIDMxZmQ0ZWQ3M2QyOWU1MWVlNDFiYjljZDg0NmFlNTEzMTBiNTg4ODUgbGVnYWN5LXRydW5rCisxMzU1MSA2NDlkYWFkNmNmNTE2N2ZkM2RiYjdiNWFhNzkyYjc2ZDNkNTU5ZWE3IGxlZ2FjeS10cnVuaworMTM1NTIgNzcxYTlhMTAwZDc1YmM4ZDcwOTZlMDM3OGY5OTM3MzAwZDQ2YzM5NiBsZWdhY3ktdHJ1bmsKKzEzNTUzIDM4MTllYjdjODM0YjM1OGU0MWFlMDBmZDAxYjZkNGM3YzczZTA5NjkgbGVnYWN5LXRydW5rCisxMzU1NCBmOWJhODAyMzk3NmQ2NjIwYTkyYTU5NzEzMDUxY2Q2Y2Y5YmM3NTM3IGxlZ2FjeS10cnVuaworMTM1NTUgM2JlOTM1YmUzNzgxZmNkM2Q2ZjAzM2YxMjhmNGFlZjhiNjhhMmE4YiBsZWdhY3ktdHJ1bmsKKzEzNTU2IDhiN2Y2NWIwZGIxOGEzNmM5ODRkNTk2MTNhMDU5N2IzZWE2NDJhODAgbGVnYWN5LXRydW5rCisxMzU1NyAzNjY4NGNlMGQ0MGQ2MzY5MGNlOTFhZGYwN2U3Yjg3MDgzZTQzM2Y5IGxlZ2FjeS10cnVuaworMTM1NTggY2IzNjYzMjExNTJjYjJlNjk3MWViZTQ2ZjI3MTBjYmM0YzViZTJkMiBsZWdhY3ktdHJ1bmsKKzEzNTU5IGI2YTQzOGNjMTk1Yjk5N2JhYzI0NDhhMDBjYTVhNjJjMjEwYjIwY2QgbGVnYWN5LXRydW5rCisxMzU2MCBhZDE1YTAzOTRmNzgyOGZkMWU3YjQ1OWU3MjY4NDRjMjViZDA2NDQwIGxlZ2FjeS10cnVuaworMTM1NjEgNWFkYmIzZjA0Y2JjMmY5Mjc4OGQzMDg2NmE4NDQzODg0YmE0YzE4MiBsZWdhY3ktdHJ1bmsKKzEzNTYyIDEyY2Y5MDk2NjgyMjMwMzYyODFiM2ZlYWQwZGM2YjhkZjc1ZTAzNjkgbGVnYWN5LXRydW5rCisxMzU2MyA1ZmE5NmQwNTAzMTlkODRiYmNjMGEyYWI0ZDNhNDY2MjM4NDRmYzE1IGxlZ2FjeS10cnVuaworMTM1NjQgOTc4OTZjMDllZjFiMzMxZTA5MTRiYzM3OTQxMjI1YmI5NWNhODBmOCBsZWdhY3ktdHJ1bmsKKzEzNTY1IDYyNmNhZWNhNTM1YTI0M2IwYzgxZWQ3NDQ2MzFlZGNlM2YxODRmNGMgbGVnYWN5LXRydW5rCisxMzU2NiAyN2M0OGRmMWNlYjc5NTkxZmIyZWFkYzhmYjRiOTc2OTM0MDE0NTRlIGxlZ2FjeS10cnVuaworMTM1NjcgZjc4ZjE2ZmVhNDU1N2Y0ZDRiYTgwNDc2ODljOWY3M2RjYzU3MDYzNiBsZWdhY3ktdHJ1bmsKKzEzNTY4IGNjMmViMDFhMTZmNDIzYmZiMDQ3MjJkMDgwYmJiYTdkYWUwZjQ3OWYgbGVnYWN5LXRydW5rCisxMzU2OSA4MTQ5OGM0ZTU2OWQzNDk4ZTQxZGI0ZGRjMjNlZTVlYTA1ZDdhOTIwIGxlZ2FjeS10cnVuaworMTM1NzAgNWJiNGY1MGRhNDc0YTViNDU3MjE0ZTJhMmRlNGZiYzg4ZDUzNjQyZSBsZWdhY3ktdHJ1bmsKKzEzNTcxIGZkNTQ2Y2JkZmI1Zjg2NWE5MWVlYTQ3ODM3M2Y0NGJmMWQ0MzE0ZWYgbGVnYWN5LXRydW5rCisxMzU3MiBhZWIxMGNjMjMwMGQ2ZTZhNWM4NDAxN2JkZDJlYTMyMGM4ZmFiMjJhIGxlZ2FjeS10cnVuaworMTM1NzMgMjIyYWVlOTZkYzQyNTEwYThhNzdkMDdiOWRkMmViZTk1YTc4YzIwNyBsZWdhY3ktdHJ1bmsKKzEzNTc0IDRmNTFlOTdhNmVkZjVkNzhhMDlmMmZjZjM3ZGZjZDg1NjIyMGM3MzIgbGVnYWN5LXRydW5rCisxMzU3NSA1YTgyZmI0Zjc4ZTU5NGNkZjhiOGYwM2JlMDcxM2M1MTk3Yzg4MmFiIGxlZ2FjeS10cnVuaworMTM1NzYgMjdmYmIwOGY4YzM4ZGNhZTc0MWZlOTFkNmEyNmFlOTM5ZGZkMjU0OSBsZWdhY3ktdHJ1bmsKKzEzNTc3IDI1Mzk3MGEyYzA1ZDY2NDU1YzkxZjdhYzRlYjc5NjM2NGFiNzQ0ZmIgbGVnYWN5LXRydW5rCisxMzU3OCAyNTZiODc4Njg5ZjNiMWU0YTA4OTk5M2Q0ZDk4MDRiOGExMzM3OWM2IGxlZ2FjeS10cnVuaworMTM1NzkgYjNhY2Q1NjUyMGNkOWZhZjcyMzIxZTM3MzJlMzdlZTBlZTYwMTgyZSBsZWdhY3ktdHJ1bmsKKzEzNTgwIGJjYzBiZTdjYjQwODAxZGIxYTBhYzhlMGY4ZTUzZTQwNzdhZDlhNWYgbGVnYWN5LXRydW5rCisxMzU4MSAxMjA5OGE4YTk1ZWNiOGI1NzM3YzA4YjQ0YTUyYTlkMDUxMzgzYjNiIGxlZ2FjeS10cnVuaworMTM1ODIgNzllZTZkYzkzZDBlOWUzY2JkOWY4NWRiMjk5N2Q5MWQxZWY0MTAxOCBsZWdhY3ktdHJ1bmsKKzEzNTgzIDk2MzFmOTcyNmE3MDViNDkwNzhmNjI5N2QxNzUzMDM1Mzg4NGI0NzcgbGVnYWN5LXRydW5rCisxMzU4NCAwN2IwNzM3NmNhNzI4OGM0OTMxNGViNWRjMjNjYmU5ZGM1MWIxNzAyIGxlZ2FjeS10cnVuaworMTM1ODUgOTAyMzE2YzcyYjQzZjk1M2UwZDNjNDlmZWY5Nzk1ZDE4ZTk1YTA3YiBsZWdhY3ktdHJ1bmsKKzEzNTg2IGUzZGRiODc2MTYzNzFjYmI1N2I3Yzc0OTdlOTdkOTc2MDQ3NDIyMzUgbGVnYWN5LXRydW5rCisxMzU4NyA0OWU4ZGUwYjVlYTc0YTg1NWJiNTQ1NGIwN2Y0ZWY3ODFlNGRlODU2IGxlZ2FjeS10cnVuaworMTM1ODggN2VkNmZiYTgyNjVjYjc5ZjYxMTdlZjdmOTVjYTk5ODFiMjAxZmI5NSBsZWdhY3ktdHJ1bmsKKzEzNTg5IGYxMTE0OGM1ZmJlZGNjZjJiNGFhMzIyN2EwYTc0NDkyM2ZjOWNkNzggbGVnYWN5LXRydW5rCisxMzU5MCBkNmNhOTEwNjNjZWM5M2NiZWJjN2Y4MmY1OTYxM2UzM2UwYTZkMjQ3IGxlZ2FjeS10cnVuaworMTM1OTEgZjUyNmRiOWE2Y2Y4MzZkZjAxYmY4MzdmZWQyZTE0NDJhZDYyYmY0NyBsZWdhY3ktdHJ1bmsKKzEzNTkyIGRmYjVhZGQ2ODRjM2U4MTIxNWQzNWY2OTQ2Y2MxNWNmODI2NzdhNTMgbGVnYWN5LXRydW5rCisxMzU5MyA2MjgyYWNlMjc5NWUwNmNiYzVhMzA2MjRkNDY1NmU4MWJhZDViZmMxIGxlZ2FjeS10cnVuaworMTM1OTQgYmFlM2ZiZTJiNTkxYWY5ZGVhM2I2MTRjODBjZWRmOTliZWE4NjU3ZSBsZWdhY3ktdHJ1bmsKKzEzNTk1IDBiNjU4MzVlMmIyOTA5ZDY1YmUyYmU5YTQwNjJhZDMzNTM2M2U4MDQgc3RyaW5nX21ldGhvZHMKKzEzNTk2IDhlNGRkNmExNjFmZmI3Y2M0NzgwZTE3ZjdjNzhiZTYwMzAyNmFkNzkgc3RyaW5nX21ldGhvZHMKKzEzNTk3IDBkZDUwYTcwYzQ3ZTIyZDYyZjgxMGM2NmZhZWMyZDlkZjk1NWE5ZjIgbGVnYWN5LXRydW5rCisxMzU5OCAyZmQ2NWQwZjNkNDE1MDgzY2MxZjczMGViODJkOGIzMjkzNWI2MTA1IGxlZ2FjeS10cnVuaworMTM1OTkgOWRkODE5ZDk5MzI2MzkyNmMyYTRmNGVhYWY3ZmU3MmJjYzZhYTUwMSBsZWdhY3ktdHJ1bmsKKzEzNjAwIGE4NGY5ZDM5OTlhZTg0NjU5NGExMzQzZGZlOGJiNzJhMDAxYWZmYTYgbGVnYWN5LXRydW5rCisxMzYwMSA2NjEzZGZkNzM5MTcxOGNkYzVmNDE0M2FmNjEzYTA0YTFlMTJhMDcwIGxlZ2FjeS10cnVuaworMTM2MDIgMzZlMjU4YjU3NzUwNjY5M2M0MTIxMTg4NjZjNzg0NzMyY2Y3MTExYyBsZWdhY3ktdHJ1bmsKKzEzNjAzIDRhMWQ2YzdiMDk1MDFmOTNjNzhlNTJiOWJlYTRiOWQ2YmZhNWFkOTcgbGVnYWN5LXRydW5rCisxMzYwNCA2MTkzY2MxNDViOGM3YWQ4ZTFjYzk3ZGU4ZDE5NTkxZDBjOWQ3ODFiIGxlZ2FjeS10cnVuaworMTM2MDUgZDFiNDhlZTE0NjAxZjhhNTQ0NjliNTE2NTU2YTg5YmQ0NzU5MDQ5ZCBsZWdhY3ktdHJ1bmsKKzEzNjA2IDg3YTM5MzVlNjZhYWNkY2IxZDQ4ZjM1N2Q4NDZkYTc3MzAzZDdkMWQgbGVnYWN5LXRydW5rCisxMzYwNyAzZTVmNjk2NGNkMzMxN2IwMmQ0ZTQ2NmVkYTFlZmFiMDc5ZjExZTNjIGxlZ2FjeS10cnVuaworMTM2MDggNzYwMDhmOGEwZTVmNmNkZTE3MTVmZWQxZWQ0NjQyNTg2ZGJlOTUzOSBsZWdhY3ktdHJ1bmsKKzEzNjA5IGQwNDYwOWEzN2RjMTE2NjNiMTYyNDNhYmJiNWZjYTA0ODgzODNhM2MgbGVnYWN5LXRydW5rCisxMzYxMCA1YmU5NDA2YmJiMDVjYTExMDM3NWNjODVhY2Y0MzA2NDEwYWZiOGZhIGxlZ2FjeS10cnVuaworMTM2MTEgZDQ1MWEyMTFjMTZhM2Q2N2Q4ZmZjYjFkOTQ3MjY0OGNhMDkxMGZjNyBsZWdhY3ktdHJ1bmsKKzEzNjEyIDI1NjczODg0YTNkMGYzY2QyNzM4N2Y5MjE1NWNiYjFiZDFkMzRkZDcgbGVnYWN5LXRydW5rCisxMzYxMyA4NDYxMmE1Njg4ZmM5M2MyNGUxZDVmMGQ0NjY2M2ZhZDBhNjQ3MzIwIGxlZ2FjeS10cnVuaworMTM2MTQgZGM2YmUwZWQzOThjZmQzNzY4OGM2N2FiNGQ1ZmY3ZmNiMGVjMjI1MyBsZWdhY3ktdHJ1bmsKKzEzNjE1IDQ0NjNkZDdiYjNlODk1ZjNlMDU5YzdhZGRkOWVjYzNhOTlmMGQ4ZjMgbGVnYWN5LXRydW5rCisxMzYxNiA0YTdiMmI0ZDE2NjlhZWY1ZjBkZTljNzcxNTRlYTgzZjdkNjlkZjNkIGxlZ2FjeS10cnVuaworMTM2MTcgNDdlMDAzYmQzNWVkMDUzYTg5ZjU5ZjNiNGNkNzQzN2Y4OGU2MjhiNyBsZWdhY3ktdHJ1bmsKKzEzNjE4IDRiNTNmNGEwYTk4YWNkMWJmY2RmYzYzMDMzZGY1Yjc1ZTAzZTE3NDUgbGVnYWN5LXRydW5rCisxMzYxOSA3MDI5ZTE4YjRmMTFlNzdjNDk1NzhhZmFiZmM0ZDNlN2E2YzI1N2NlIGxlZ2FjeS10cnVuaworMTM2MjAgMmUwMGI4ODkwMzVmMmY0NjdmOGE0MGY4NDg3NDFmMTk1MjQ2MzNkZCBsZWdhY3ktdHJ1bmsKKzEzNjIxIDcyOGEyNTAwZWE0MmZiNWZhODMxYmZjOTBjNTVlOThmYmQ0N2M0Y2IgbGVnYWN5LXRydW5rCisxMzYyMiAxZDRmNWY0OWRlNGVjZjM4ZjE5NjA5YzhjZTNkOGZjODJhZWYxNjJiIGxlZ2FjeS10cnVuaworMTM2MjMgNzY5YzZiNGM1Yjg4N2MzNGU3NTNmZjU2NmU4OTQ3NGIzOTBlMzA0NSBsZWdhY3ktdHJ1bmsKKzEzNjI0IDRjNzU1OTZlOTJmNGY4YWRlZmJlMDNjYWVjNTM3N2Q5ZDgzZjdhNjggbGVnYWN5LXRydW5rCisxMzYyNSA5YzI5MmFkOGE2ZDQ2M2MwMzRmNTQyZmFlMzA3Y2U5OThmOGRiNTFhIGxlZ2FjeS10cnVuaworMTM2MjYgNzFlZDBhMmMyNzlhNjA1ZjFiZGQ5OGY2NzdiZTU2NzNjZTVjZGEwYSBsZWdhY3ktdHJ1bmsKKzEzNjI3IGZhMmUzZDA2Yzc5MDJlMTZiZDdhMjBlNzNiODUzOGMwNDM0NTQwMDEgbGVnYWN5LXRydW5rCisxMzYyOCA4NzJhODJmZDBlYzQxZDQ4NzRiMjUwZjQwMjQyMGY1MDc3YjI4YWQ5IGxlZ2FjeS10cnVuaworMTM2MjkgYWE2YzVmODZkZjg3YTRlNWViM2NkNmQxNmI2OTllZWNhYzE5NTkwMiBsZWdhY3ktdHJ1bmsKKzEzNjMwIGZiZjQwZDdmZDRkYWMyNjVjMTIxNDM3ODNhN2VkZDU1ZWNkYTJkM2IgbGVnYWN5LXRydW5rCisxMzYzMSA2N2JkMmFhZTI3MzJlYWE1YTFhOWQ2NjE3M2Q3OWJkNzQ0ZjM0ODk3IGxlZ2FjeS10cnVuaworMTM2MzMgMDY4ZmJmNGY1NThhMjMzYzU0NmM2YTM3YTMxNmI4M2ExZWQ1ZTQzYSBsZWdhY3ktdHJ1bmsKKzEzNjM0IDVlODQ4YzNlOWM1YzcxYzQ0ZTQzMmQyYzQ1NTY5NjhhYjY5NTIwMjIgbGVnYWN5LXRydW5rCisxMzYzNSAxNDM3NGJhMzQxYTY3YThmNjU1ODVlYWMyOWJjYTdlNDZhY2NjZmUzIGxlZ2FjeS10cnVuaworMTM2MzYgMWNkZTUyMzBjNTA4MTllM2QyNDczY2MxMGQyNjcxNGJhMWI4YzdmNyBsZWdhY3ktdHJ1bmsKKzEzNjM3IDZiZjYyMDM3NTk3NjM0OWE5NmRlYjE0NjY1NmY4MzcxMzFkNDdiMjMgbGVnYWN5LXRydW5rCisxMzYzOCA5OTI4NmRhYTkwMGRkNDhlNTQwZmI3OTJjYTQ2OWM0MWFjYzg3NDc5IGxlZ2FjeS10cnVuaworMTM2MzkgMTJmMjA4ZGI0MmIwZTkyZmFjNmE4ZjkzNzZmMzI0YjUyMGQ2YmJlMiBsZWdhY3ktdHJ1bmsKKzEzNjQwIDc4ZjViZjE3OTc1MDRhOWU2Njk1MjVmYjBiNTNlYjJmNWFlYzA1ZmEgbGVnYWN5LXRydW5rCisxMzY0MSBiZThlYzgyOGMwNzIzNzI4YzI3MTk4YmY0MTdjMzIyMDMxOTM4Y2JlIGxlZ2FjeS10cnVuaworMTM2NDIgMDEwZTdiNjlkODZiZjBlMGYxYjczODk0YTNlOGEyZjIxMWUzMTZkNCBsZWdhY3ktdHJ1bmsKKzEzNjQzIGRjYzA5MjI4YTNkMjQyMjNjNzkxYTFlZDQ4ZjA1ZDViN2ZjYzk3NjQgbGVnYWN5LXRydW5rCisxMzY0NCA5MzlkOTE0YWY1ODE2ZmZjNDZjZmY3NzI1NTY5MTliNjQyMGY2YjMyIGxlZ2FjeS10cnVuaworMTM2NDUgZGE5YzgzYjVmYjA3NDVlY2FhYzRiYjUyMzQ0YjhiMmJjZGRjNDk3NiBsZWdhY3ktdHJ1bmsKKzEzNjQ2IDNiMTk4MGRiNGFlOTkwNDZjZWQyYTgwYzMxMzE1NGVjZmI3OTBjZGYgbGVnYWN5LXRydW5rCisxMzY0NyAxNjRiNGJjNGRkZGQwZjgyOTU4NjVkY2M2NzIxYTJiMDY5OTBmMDg4IGxlZ2FjeS10cnVuaworMTM2NDggM2EzOWViZTI3NmM4ZjRmOGM4OTc3OGYzMzMwMDBjZTA4YTVhNTk2NSBsZWdhY3ktdHJ1bmsKKzEzNjQ5IGQ0MjNmNTc4NDRiMjZiNzJiODFkMmVhZjI2ODU3ZjQyMTFkM2Y1M2YgbGVnYWN5LXRydW5rCisxMzY1MCAzMDZiNDlkNjgyMzM3Y2I5NTZkMDVlYzJkZjAwOTZiZDhjZmYxYzFhIGxlZ2FjeS10cnVuaworMTM2NTEgMmViMjg3OWQ1NjdmNGIzMTY5ZjJhZGE5YTNjOGZmMDNhNjIyMTM3ZSBsZWdhY3ktdHJ1bmsKKzEzNjUyIDdjMjM5NzExMjIxYTI0NzQ1ZjNiMWU2MGY5MzFmNGI2MDYwZDg0MWYgbGVnYWN5LXRydW5rCisxMzY1MyA0NDJmZmU5YTU4YzEzYzk3MDFjNDdlYTczNjZjZDA5YjQ3MDVlNTYwIGxlZ2FjeS10cnVuaworMTM2NTQgNWU3NmM5OTY1ZmU4MzkwMWUwYjE3NzI1ZmU4YjgwZmI2ZDdiNjI4YiBsZWdhY3ktdHJ1bmsKKzEzNjU1IDlhMjAwMzhmMGI5OTdlZjBkYzIwMGNmZjE1MTBhZmQ2ODZkMWVhNTQgbGVnYWN5LXRydW5rCisxMzY1NiBhNGI3MjQyYTRiNzRjYmY0N2M5YjZjYTYwNDcyZWMwNTFhZjZlZTg5IGxlZ2FjeS10cnVuaworMTM2NTcgMWM2ZmRjOGFkYWIwYTRjNmZkYzVkZDE2ZWM2M2I3MGMwOTBhYTE2ZCBsZWdhY3ktdHJ1bmsKKzEzNjU4IGY3MjliYmM0YTlmMzEwZjlmN2VhNWRmZjk4OWQ1YmJkM2E4YjRhZGMgbGVnYWN5LXRydW5rCisxMzY1OSAwZDg4ZTBkMjE4NGY4OTM5YWJkMGQ3ZDBmMDQwMWNiNWY5M2Y1OTM5IGxlZ2FjeS10cnVuaworMTM2NjAgNDFhNDY5NzhhNDQ0YTcyOWQ3NzJmMTg3NzE3ZDI2MmJlM2YxMWNjNyBsZWdhY3ktdHJ1bmsKKzEzNjYxIDJjNTg1NTI2NDQ3ZTk1ZWI4ZjQzZWY5YzNiYmFjMGZhMzRhNjlhMDcgbGVnYWN5LXRydW5rCisxMzY2MiA4MDQ5ZDJkZTFlNzk0YWFjNDY2M2ZmZmNiMjQ4YmI4ODI0YWU1YzY5IGxlZ2FjeS10cnVuaworMTM2NjMgODRlMzRkODEzOGFjOTA0MzUxZmY4ZDU2N2EyZTNmMWE5Y2I5ZTBmNSBsZWdhY3ktdHJ1bmsKKzEzNjY0IGMyYWM4OTY5MjZjYzRhNzk4NGU4NTI4ZDkzNzU3YTE4ZjJlOTZhMDIgbGVnYWN5LXRydW5rCisxMzY2NSAwYTVhOGY1MTNkMTM2M2E3YTc5MzFjNDk2MGE0ZTBiNjgzMTc3ZDhjIGxlZ2FjeS10cnVuaworMTM2NjYgYjU2YmRhMTkwMGZjMGVkMDBjNzliZDZhYmIzYTRhYTk0ZDBkNDhjZiBsZWdhY3ktdHJ1bmsKKzEzNjY3IDJjM2FmOTBmM2ZhZWI0NTU2YTUzMTdmZDIxYzMzZmJlN2E1YzhhMDEgbGVnYWN5LXRydW5rCisxMzY2OCBjZGZhOWNkNGU3MmJiMjZhN2Q1YzQyNTQ3MTg4NDc0OWIzNDZmZDM4IGxlZ2FjeS10cnVuaworMTM2NjkgYzA5NTQxMTI4YzVhNDFkZTM1NmY5NDBkNjAxZjZiODg2MzFmNjQ2ZCBsZWdhY3ktdHJ1bmsKKzEzNjcwIGM5NWUxZmQ4N2FmMGYwNjk2ZmIyNzk3Y2QwY2M1YTI4OGRmMTNiNGUgbGVnYWN5LXRydW5rCisxMzY3MSAyYjdjNDNkNGI0NjliMGYyMjIwYzk1YTY2YTBmMTFhNGJlNjhhNDJkIGxlZ2FjeS10cnVuaworMTM2NzIgMWRiYzVlNjk3OGY5ZGQyZjU4ODk0MmI0MjFiZjg0MGYwNDE1YzBkMSBzdHJpbmdfbWV0aG9kcworMTM2NzMgNDFmY2I0MGU4NDFmZDZhNjMxM2NlZGYyZWNhYWJkNzU2MWJlNjk5YSBsZWdhY3ktdHJ1bmsKKzEzNjc0IGQ5OTdlMjdlMzMxMmJjMGRjNjZmMjcwOTk1ZDU4NzMxZjg5ZjNjMzEgbGVnYWN5LXRydW5rCisxMzY3NSBmNjJlNDY1YzRkMDE0YjhlMzZiODUyNDhmYTgxMjlkZTA2OTE4YWU3IGxlZ2FjeS10cnVuaworMTM2NzYgYmJkMDM1ZTVhOTcyY2ZhMWVhYTRlZmFjN2Y0NDNjMWUwYzM2OGQ1ZCBsZWdhY3ktdHJ1bmsKKzEzNjc3IGI4YTI5ZGU5ZWQ1NGIyNDNhYmQzNDQ3MDk5NWI5ZTQ2NmJlMGY3MDEgbGVnYWN5LXRydW5rCisxMzY3OCA4NzhhYzBjZDBlNzY4MThlMjU2M2RlZWUzZTJhOTE2M2UyOWI4OGVkIGxlZ2FjeS10cnVuaworMTM2NzkgZjRlZmJhMzIzMjBlYzQzYTgxOTRjMjFiNThhMmNkODkzNWQ1YjEzOSBsZWdhY3ktdHJ1bmsKKzEzNjgwIDgzZjM5ZmM4NTc2M2JlZjQyOWI5ZmYyNWEwOGUxYzU5ZmNhNzNiYjAgbGVnYWN5LXRydW5rCisxMzY4MSAzNmE2NTQ2MmMyNjlkMGNjZDI1YzQxMmVlYmY3ZDZhZTBjODU4NDBjIGxlZ2FjeS10cnVuaworMTM2ODIgMWE2OGM5NzJkMDg0MWUzNWQ0ZTNlMTMwMzkxNTQyMTg3OTA0Njc4MyBsZWdhY3ktdHJ1bmsKKzEzNjgzIDY4NTJmZjAzMDMwODg0YmRmZTc1OWYyZjM0YzQxYTI0YzVjOTc3MWMgbGVnYWN5LXRydW5rCisxMzY4NCAyYzRkNDhlMzFiZDVlNzhhYjcwOTNjMmZhYTM4ZTk1MmQxZDNlODZlIGxlZ2FjeS10cnVuaworMTM2ODUgNDNjY2JjZjQzODRmMTIzMTEzMjAyZDlhYTZhODlkY2U2ZjM2Y2JkYiBsZWdhY3ktdHJ1bmsKKzEzNjg2IDdjZTViYWU3Zjc2NWE0NmVjZTE1NWQwZTQxNjUzYjkyMTJiYWY0ZTYgbGVnYWN5LXRydW5rCisxMzY4NyAyZjEwMjZkYjgyMjgwYmVmZTdmNjhiZDNlYTU5NTkxOTllZjBjY2ZiIGxlZ2FjeS10cnVuaworMTM2ODggYWVkMTlhZjYwZWEzMjUyYzhkZjBjYWVlNjU2ZTRmYzJkY2U5YjYzYyBsZWdhY3ktdHJ1bmsKKzEzNjg5IDBiYWZmMTM1YzRiNGUxYjA4YmEwYWU3OGJkMDY0MWJkM2Q0YmY5YTAgbGVnYWN5LXRydW5rCisxMzY5MCBkMTU0YWU3Y2EwMTRmNzkxMzBlNDYwMjk0NmJhZjczM2EyOWFmNjQ4IGxlZ2FjeS10cnVuaworMTM2OTEgM2M4YzU1NzYxMDljMzU3ZjFmNmI1NDk5OWIzZGM4NDUxZmE3NDFkYyBsZWdhY3ktdHJ1bmsKKzEzNjkyIDZlNmJkYWU4ODA4YTUzMTk0NTRiN2U2ZGRiYzZlM2JmMWM2MjI1NzcgbGVnYWN5LXRydW5rCisxMzY5MyA5OGU1OWM4NGVjMzFhM2ViZGJmODYyODI3OTZlMTg3MjYwNmY3YTlkIGxlZ2FjeS10cnVuaworMTM2OTQgYTRhYmEyMDUwMzhlYjVhMmFiOTkyNjNlMDJmMjMwMWY4NzQzOGZiZCBsZWdhY3ktdHJ1bmsKKzEzNjk1IDNlMGM3ZTY5MzliZDAyYTY3NTUwY2ExMDUyZDgwMmRhMzRiNGQ0ZWUgbGVnYWN5LXRydW5rCisxMzY5NiAxYTI3ZGQwNmNjZTE2OWRhZGMyODFkNmFkYzQ0MTcwMTgwMzMxMmZhIGxlZ2FjeS10cnVuaworMTM2OTcgNjE3ZTEwZmM1ZDhkMzI4ZmEwMDhmZDEzN2M3Yzk0OWMxYThhZTA5YyBsZWdhY3ktdHJ1bmsKKzEzNjk4IDVkYTU3ZWE1ZmM2NDE4MTNiNWYyNTA2MDU3ZmQwMTE3ZDRiNjg5ZmUgbGVnYWN5LXRydW5rCisxMzY5OSAzMjA2NTIyNDJlNmJhMDZjNTE1YTNiNjhlNTA2OTJmZjcyNGU5N2MyIGxlZ2FjeS10cnVuaworMTM3MDAgMDQ5MjlhYmNhZDg2YmNiNTI3NTQ3OGVkMGNkZDVhYzk2OWE1NTA4NiBsZWdhY3ktdHJ1bmsKKzEzNzAxIDhlNzRlZDE1NGY2MDg3ZmVjNzJmNWU2Mzg0YzdjNzYwZjcwNDQ3MjUgbGVnYWN5LXRydW5rCisxMzcwMiBmNzY2ZmI2Zjg1MjY1YTQ5YjgzOGI3ZTNkNjVhNmExYzY4YTgxODI0IGxlZ2FjeS10cnVuaworMTM3MDMgMzQ4NWE3ZTQ2MDBiOWZlZGYxOGU2NTVmYmY4YWU5ZGU1NDY0NjEzZCBsZWdhY3ktdHJ1bmsKKzEzNzA0IGZhYjgxZGY1NjZkMGNmY2U0NjRiZmE4NGM4YjUwNGViMWM1MzA0NTAgbGVnYWN5LXRydW5rCisxMzcwNSA2NGIxNWU5MDkxYTkyYmI2MzU4OTdjZmY5OTg3NTdjMzU1MDRiMjI2IGxlZ2FjeS10cnVuaworMTM3MDYgNWY1ZmMxMDMxOTU3YWE1YTQyZmUxYjYyN2E0M2M4ZTI3MzU2MWRkMiBsZWdhY3ktdHJ1bmsKKzEzNzA3IDI0NWQyYjYwNTAzNmQxNGYxNDk0NjdjODA5YjhjYTM1YTFkMmQzY2YgbGVnYWN5LXRydW5rCisxMzcwOCBkNmFiNzJjYjE2MjU4ZTljMTExMWE1NThiZmE0ZDZlNzUxZDVlYWQ2IGxlZ2FjeS10cnVuaworMTM3MDkgODE3NWJmZGZiZWE5ZTQwZjgxOWYwZjZjZGU2YTlkNzMyZjZhZWFjYSBsZWdhY3ktdHJ1bmsKKzEzNzEwIDZjMTMwOWQ4MmNiMTE0MWZmZTMxYjZjZjQyMTNlZWY4NWJhNWJhYWIgbGVnYWN5LXRydW5rCisxMzcxMSAzNWUwZDAzZjJiMDJmOWY4YzVkZGZiMzEwYWJiOWFiY2ZjNWZjMjA4IGxlZ2FjeS10cnVuaworMTM3MTIgMWUwYjE5NjdiZTdmM2U1ZDk0YjI4YzRjZDRmNTgwNTE2YTAzNDIzNCBsZWdhY3ktdHJ1bmsKKzEzNzEzIDkzOGI0NmZhNjM5NGU4ODhlM2RiZDc4YzA5Mzg3MjU2NjQ3OTRhNDIgbGVnYWN5LXRydW5rCisxMzcxNCBkYmI4MDgzZjBjZTcxYzM5Y2MyMjZkYjI5NjE3ZDBjYWNhNjk0MWIxIGxlZ2FjeS10cnVuaworMTM3MTYgMjRjNWJjNmJmY2FhZmU4ZWU1YjVmNjY5NGQ2NDdjMWQzZGM1NTBlOCBsZWdhY3ktdHJ1bmsKKzEzNzE3IGY2ZTZjZGJhZGJiNTA0ZTBjMzJiZTBhNmY0NjVhNjVjOTM4Y2ZlMzEgbGVnYWN5LXRydW5rCisxMzcxOCAxMjNjMzhkYTZmNDM4M2Y4M2ZkYzY5YzNkNWQzZTY2ZjkwODk1YWFhIGxlZ2FjeS10cnVuaworMTM3MTkgZWNlZTlkZTc5YjFlZjU3MzRmOGYxZGNmY2Q2MGUxY2EzYWFiZTVkNSBsZWdhY3ktdHJ1bmsKKzEzNzIwIDNkNjZhMTk3MTkzNjk4MGE1YzBjOTQxNjA4M2UzYmQ5ZDU5N2Q2M2IgbGVnYWN5LXRydW5rCisxMzcyMSAwMWM1MWIyNjhjMDQ5NjFmZjJjYTVlNmJkZmU0NWFhYTk3MjU2ZDdkIGxlZ2FjeS10cnVuaworMTM3MjIgYzcyMDMxOGUzYzQ5MjA3ODE3ZGZkYjBjMzY5YzEzOTk5NTUyZTE0NiBsZWdhY3ktdHJ1bmsKKzEzNzIzIDg5OTYxYjY4MTNhYzM5MTliNDdhYjkyZWFhNTg4YjAyOTk0MjBmMDQgbGVnYWN5LXRydW5rCisxMzcyNCBjNjI3NzM0ZWFmOTI5YTc5YzYyYTMzNWE5ZGE3ZjZhNDE1MGYxNjhmIGxlZ2FjeS10cnVuaworMTM3MjUgYTgxOTVmYTMyOWFjMzliZmMyYTM5MWZiMmQxYmNhNTU1MzFiNGMxZSBsZWdhY3ktdHJ1bmsKKzEzNzI2IDFjOGU0MjI3ZDk4NzkxYmFhOWQ4MDk5OWNkNGM1ODM1ZDY2NTQ5ZGQgbGVnYWN5LXRydW5rCisxMzcyNyA0ZmRkMzM5MTRlZGFiNDgyMDI5NjVhMjhiOWNlMTE0MGFmYjkyNzViIGxlZ2FjeS10cnVuaworMTM3MjggZThiMjRjZDE3ZGYyM2Q4NzJlMjZlNzU2YmZhMzZhM2VjNjdkNTcxMCBsZWdhY3ktdHJ1bmsKKzEzNzI5IGM1MmZiYzZiZDM4YTkxNzAxNWIzOTJkOWM5ZTAzYTk0ZGU2MDAyMTYgbGVnYWN5LXRydW5rCisxMzczMCBiY2EyZDE0ZjNlMzY1MGY2YjE3ZDQyMzNmOGMxZmNlNTc4OTRjNGUzIGxlZ2FjeS10cnVuaworMTM3MzEgYmY1NjViMThjZmRjNGZiYWQxMGYwN2VkYThmOWEzODJhMWEyMGVhMCBsZWdhY3ktdHJ1bmsKKzEzNzMyIDdlZWViMGQyYjBhNDAxYjE4NzI4MjdiMDVhNTY2MGZiNjY3MzdlMTUgbGVnYWN5LXRydW5rCisxMzczMyA3MWUwYjQ1ZDU1OGMyZjY5ZTRiMjM3MTc1ZmNiYjJjMjkyNDVlNmM3IGxlZ2FjeS10cnVuaworMTM3MzQgOTE1N2M2ZGE3NjE5M2ExNTNhNDZhZmRkZjdkZWI0MTAxNzk1NGU5OSBsZWdhY3ktdHJ1bmsKKzEzNzM1IGRlOGZmZDJlNzFiNWZhZWFkNjcwMjJmMzgwYWY5YWU2N2JjMTZkZDYgbGVnYWN5LXRydW5rCisxMzczNiA5OGQ0NTczODNhMmQzZjRiMDVmYzc3YTZhMTcyNGVjMzdkNzdmYzg2IGxlZ2FjeS10cnVuaworMTM3MzcgYzM4OGYwMGFmZmU3ZGNiM2NhYTFmYmNmMzZjMzdiNWUyM2IzOTYzMSBsZWdhY3ktdHJ1bmsKKzEzNzM4IDVmZTI2M2ZiNjc0YWIxYTAwNjdlNmNhYzA5MGM0NDA2NjVhYTE3ZGEgbGVnYWN5LXRydW5rCisxMzczOSBhOGI1YTViMzkyZmJjNTJjMDk2ODFlMGNhMmM1YTM1Nzg0YTM0MzZlIGxlZ2FjeS10cnVuaworMTM3NDAgY2Y3Y2Q3YjA0ZmE2NTlhNWMyMTNhMjgxOGUwZDc3M2ZiMmZjZDM0MCBsZWdhY3ktdHJ1bmsKKzEzNzQxIGQ1ZjQ2ZjU5OTU4NWJiNjg0NWY3ODJlYzdlOTc0MWVmN2UxNzJjYTMgbGVnYWN5LXRydW5rCisxMzc0MiBkNWIzNzM0NDBmOTlhMzgyNWVjYjg3YTQ4MDU2MDNlNzM4NTY0NTYwIGxlZ2FjeS10cnVuaworMTM3NDMgZWFmOWVlYWIzYmNmZjkxZGNkZGUxOTg5ZmY1MTYxYTNhNmNhMTc2OSBsZWdhY3ktdHJ1bmsKKzEzNzQ0IDk2NTAxY2MzYTY2M2I0Nzg1MzI1NDdjMDBiNmNlZjVhZDg3ZjZmZTMgbGVnYWN5LXRydW5rCisxMzc0NSBiNWJkM2Y5NzlkYzk4YzMxY2FiNjVlNWQwN2Q3YmZhMTk1NjUyOGE3IGxlZ2FjeS10cnVuaworMTM3NDYgNGFhZTVhZmUxZjE0NDQ0MmY1NmVjY2JkMjQwNzcwYzg1NzIyMDI1YyBsZWdhY3ktdHJ1bmsKKzEzNzQ3IGY0MDZlNzhlYzEwYmNkZjZjZWZkOWNhMjVmZDk5ZGIyNDY0ZDA0YTQgbGVnYWN5LXRydW5rCisxMzc0OCA0NDVjYmU4ZGI4ZjZmNDdlNjE3NjJlYmNjNjc5YzFkZDZiNjE3NTg3IGxlZ2FjeS10cnVuaworMTM3NDkgMmQ3MzMxZjRkZmUzNTFiYzlmYjhmYWU4NGI4MWIxYmMxOTEyZDUzZCBsZWdhY3ktdHJ1bmsKKzEzNzUwIDhiYjI3ZjRlYmUxNmU1YTk3NGMwOTUzNmViOTMyYjNmOTg2MTZjZWMgbGVnYWN5LXRydW5rCisxMzc1MSAzMDg5NDYxOTYzYzRiOTU3NjNlNTMwNWMzMDdhMTliNWUzMDYzNTNkIGxlZ2FjeS10cnVuaworMTM3NTIgZWNmZTNkOGNiMGMzNDcxMGQ2YmRlY2VlMWE0MDZmYmIwNDM0YjVjNiBsZWdhY3ktdHJ1bmsKKzEzNzUzIDI4NTZhZDVjNjc5YWU3MzljNjYzMTEyOTc1YmE1YmUzMDY0NjA2NDkgbGVnYWN5LXRydW5rCisxMzc1NCA5YTY2ZTc4MDdjNzczNDE5ZTE1ODY2YjhmNzY2ZTIxODZlZjg0ZjEzIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzc1NSBhYTRjOGUyZWY1YjQyOWU5MDg2Y2U4MWY2N2E4ZDE2MWE5M2RmNWUxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzc1NiA5MDUyMjY0NzFiNGM3ZjlmYjE5MDljMjhmZjhjMzM4OTMzYzAyZmFhIGxlZ2FjeS10cnVuaworMTM3NTcgZTAxZjIzNTM5YjZjYThiMzJjNTBjYjgwYTcxYTgxZTBkNmQzYjI2MiBsZWdhY3ktdHJ1bmsKKzEzNzU4IGEwYzUyMGMxZDEyZDQ2YjVlOTQ4MzlhODAyYzljOGRmZWMxOGIzMjUgbGVnYWN5LXRydW5rCisxMzc1OSBlNzczZDJmMDc0MWRjNTg3MjQ5MmVlOGU2NTk5NDhlOTZmMTI4ZGM1IGxlZ2FjeS10cnVuaworMTM3NjAgZTBlNjdjZjJmYzY0NDUxOTgwYjU0MWYyZDI1NzEzNGI2NmQzODMwZSBsZWdhY3ktdHJ1bmsKKzEzNzYxIDEwZWJiMjViMjQyZDdhMDA5NGE1OWE3MDI5YTc3Y2Y5ZDJmYzYyMjcgbGVnYWN5LXRydW5rCisxMzc2MiBiNjk4NTliNjk3NjM5Y2VkZjU2OWU1NzM1MmRmYzViZTFkYmVkNTUyIGxlZ2FjeS10cnVuaworMTM3NjMgNmRjNGNjMzE4YTVjOGExMDMzYjk5ODE4Mzg2MzJjZmVhYWY4MmU2OSBsZWdhY3ktdHJ1bmsKKzEzNzY0IGU3NDY5NDRlOWE0YTY3NmY5YzgzNzIzYjJmM2Y3ZDU4YzUzYzY3YjEgbGVnYWN5LXRydW5rCisxMzc2NSA4MzNmZDIzMzhjNjk4ZGI0NjM0M2Y3NmYwZDc4YjEwYzY3YTE1OWM4IGxlZ2FjeS10cnVuaworMTM3NjYgMDI4N2Y1YjMyMjRjYzc4MTdiM2Q0ZWZmMzA1MTg0NGFmZGE2MzFhNSBsZWdhY3ktdHJ1bmsKKzEzNzY3IDA1ZTBjYjM2OTE0NjI3YTY5MjJiYjAzNTAwNzljMDRiZGMzYmIzMjUgbGVnYWN5LXRydW5rCisxMzc2OCA3ZmIyZjQ1NjJmNzY1N2RhMzQ5YjRmYTFlMzQ5NTc3NWQyMDU4MGNkIGxlZ2FjeS10cnVuaworMTM3NjkgNzc5Y2U0NmUzNDMwYThhZDY1YWQ5MTZjZTJhMzQ2ZGY3ZGZlMGY0NSBsZWdhY3ktdHJ1bmsKKzEzNzcwIDU2ZWY0YzJlMGQ3ZWZiYmQ5MWNhNThjMGQ2ZDNiZmI0NmUzOGQ2OGIgbGVnYWN5LXRydW5rCisxMzc3MSA1NzdlYTI2MWJkZjI1OWFhMzI0MTY3MTBiMDE3MjZhMDk4ODZiNWE1IGxlZ2FjeS10cnVuaworMTM3NzIgNGNjNGJhYTI0YTQwMDZlM2RmMjFiNDNmNjU3MWRlMzYzN2RmYTgxMSBsZWdhY3ktdHJ1bmsKKzEzNzczIDVmMDMyNjg2YTM3MTJkNmNkODNjNjg5MjYzNDFjYjczYmI5NGY2NTQgbGVnYWN5LXRydW5rCisxMzc3NCAwMDYxY2E0ODY1ZDczNGM4ZTg4YjFjYWRhNmNlMjMwOWM2NWEyOGZkIGxlZ2FjeS10cnVuaworMTM3NzUgNmFhYzMxY2QyMTAyNWQ4MjQxZDY2MjU0MGU3NjMxODg2N2Y5NDhiYyBsZWdhY3ktdHJ1bmsKKzEzNzc2IDQzODViMWJjYmMzYjNlYWI5MWY0MzlhMDY3MGEyNjE0ZWY1YzUyYTEgbGVnYWN5LXRydW5rCisxMzc3NyA4NTRiODAxMjUzZjBmZmM2YjdkNzJjMDFmZTlkMzlmZDVlNGY1OTcxIGxlZ2FjeS10cnVuaworMTM3NzggZDEzZGExOTQxOGVjYThkZWYyNzdhYzE4MTY3MzVhODk5MjU0MmM4MCBsZWdhY3ktdHJ1bmsKKzEzNzc5IGM5YzE4ODQyNmU3NmMyZTkzYzMzY2MzMDFhNDE0YTVlNWY2ZThmNTQgbGVnYWN5LXRydW5rCisxMzc4MCBlNjFjNDg2YjM1OGE1MDQ1NDI1NTUwOTM2ZDQzM2I4OGI5ZDE4ZmM5IGxlZ2FjeS10cnVuaworMTM3ODEgYWVkZTdiMmRkNDJmZTBmZTJkMzU4NDZjYzE1ZGU0OWFiOWRjOGI0NyBsZWdhY3ktdHJ1bmsKKzEzNzgyIGIzZjFhYmQzMDI3ZmRiOWZjMTBjMmNjNWYyOWFiZGZlMjE3NGIxMmYgbGVnYWN5LXRydW5rCisxMzc4MyAyZjA3YmM1NmU5N2U3YWM3NWI0YWEwMDIxZmZlOTFkYWU0M2Y3ZjZiIGxlZ2FjeS10cnVuaworMTM3ODQgZWNjODAxOGE0MThjMzQ3NTdhZTA3MjU3YTU1ZTVlMTc3YWZiMTkwYiBsZWdhY3ktdHJ1bmsKKzEzNzg1IGM2YmRmMDMyYjcwNTZlMmE4ZGJhODJlMWYwODcyZWZkODZjMmU3NzUgbGVnYWN5LXRydW5rCisxMzc4NiAwZDczY2U2ZDYyMjY3Y2FlNzQzM2ZlZDY3NDEzNmMzNDQyYjIyMGQ4IGxlZ2FjeS10cnVuaworMTM3ODcgNDI3YzNiNTAwNThlYWIwYzkwYTQ2NzgwMWQ4M2I2NjUwZDlkNDcxOCBsZWdhY3ktdHJ1bmsKKzEzNzg4IDI2ZmJjODBmYWRmMjVhZGMwZTI5MWViNzgyZDAxZTgxOTM5MGU2MjYgbGVnYWN5LXRydW5rCisxMzc4OSAwZDQ0YjBkYmRkOTUxYjE5MDBkZjZkZWUxNThiN2VhNTBkNmJiYjQ3IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzc5MCA3YWQ0ZTM5OGYzZWEzZGMyNDIzODJmZWNhMTI1NWI1NmVmNDFmYTk0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzc5MSA5Mjg2ZDNlMTQ3NGM1NDYzNTk2NTEzNDFiZTliODE1N2JmYWRhNmNhIGxlZ2FjeS10cnVuaworMTM3OTIgMjM0MWJlNzRiNzU4MmY3NjM4YTc0MWRmZDI4NTRiYjcwYTMyZDM3YiBsZWdhY3ktdHJ1bmsKKzEzNzkzIDBhNzBhMmM1ZDllNjk5NzhjZWE0OTJlNjMwM2E5MDYwOWM1ZGMyNDEgbGVnYWN5LXRydW5rCisxMzc5NCBlYWVlYTllNDIzNjk4YTMyNzczODMzOTIzMzVjZjMwYTJjZjJhOTRkIGxlZ2FjeS10cnVuaworMTM3OTUgNjk2OGZkYmIxYTNmZWM5M2QzODcxNWI2NmIzN2RmODMxNGYwYTMzMyBsZWdhY3ktdHJ1bmsKKzEzNzk2IDgxMGMyNWQ1MDQxYzRhNTM0YjJmNTVjZDE3Y2U4MmRkZTBiZWQ0MDggbGVnYWN5LXRydW5rCisxMzc5NyA0NzE3MWYyZDdkNTg1ZDAwOGIyODJlODZhNzc3YWMyY2FmMjI2YjFjIGxlZ2FjeS10cnVuaworMTM3OTggMzFiZWNjNDMyNTIzOWUwZGY0OTQyMDQxOWM2NjFjNmRmMDYzZDlmMSBsZWdhY3ktdHJ1bmsKKzEzNzk5IDgzMzYxODhhM2MxMDA1MjA2NDUzOThiZGUxZWU1ZWZlMDVjZDk1NDcgbGVnYWN5LXRydW5rCisxMzgwMCBjMGI4NmE0NGExMjAzYTQ1NGYwOGYxYzhiNmI2ZmZhNWU5Y2Y0OTExIGxlZ2FjeS10cnVuaworMTM4MDEgMmIyNmU0OGE4NWE2YTI0ZTA1M2ViZWJhOGU2YjdkZWIxZmU4MGQyYSBsZWdhY3ktdHJ1bmsKKzEzODAyIDNmZThkMTMzMjhjODEzMjkzNDcyNTUxNWRhODVlNGZlNzI5OGFkYTIgbGVnYWN5LXRydW5rCisxMzgwMyAyZTA4NzUzOWRhNjA0ZGNiNTk1ZjNiMzQ0Nzg3NDJhMDc3YmMzYmY0IGxlZ2FjeS10cnVuaworMTM4MDQgMmNjNmExMmNkNDExOGUyZGZiNzc0Y2E2MDMyZTQ4NGE0ZDVhYjhjMSBsZWdhY3ktdHJ1bmsKKzEzODA1IDkyZjdhZjQyZWQ5MWM1YWE3NWFlMDM0ODYxNzI1NzgyYTAwYWFlYTQgbGVnYWN5LXRydW5rCisxMzgwNiAyMDFhYzA2OWIwZDBiOGE4ODNmZGI0Nzg1YWJmZTY0Njk2ODEyZDllIGxlZ2FjeS10cnVuaworMTM4MDcgZmZjZGIwNzExNjk1ODRmZjk3ZjExOThlNGRhNTFmMDMzZTQxOTIwNSBsZWdhY3ktdHJ1bmsKKzEzODA4IGVmYTc1YzY5ODU3ZDJiMjgyZmM4ZjhhNDY4NDcxNTc0NjljMzViZDcgbGVnYWN5LXRydW5rCisxMzgwOSA2NzJkYmJjMzliYTA4MzRiOTZjOTFjM2EyYjc2NjYyMDIyYmJlOTQ1IGxlZ2FjeS10cnVuaworMTM4MTAgNDI4ODY1ZDAwZWVlZjU1MmUxMmMwZTNlMTAzYjZkYjUwYTljNTRjMSBsZWdhY3ktdHJ1bmsKKzEzODExIDJlMjBhMGZjMmM1ZjNiMmI5ODk5NDhlMmI5OWM3NWI3ZTlmNGZkODUgbGVnYWN5LXRydW5rCisxMzgxMiAzYjk4MWVhY2FkN2I0MzkzNGU5Njc2YTlhOTJhZmUyOGUzNjNmMWZhIGxlZ2FjeS10cnVuaworMTM4MTMgNzBjY2NjYTZiZGYwNjFlMzlmYzM0NWM0NWJhZDU2ODk2MTlmYjk2NyBsZWdhY3ktdHJ1bmsKKzEzODE0IGE0OTlkMjBhMzVjYTJjZWFkODc2ZDJhMDllYjFmZmQxY2FhYjM5MzcgbGVnYWN5LXRydW5rCisxMzgxNSBjYWU0YjA5MjczYjMwYzc4NmQ1YmQzMTQwODg3NWEzZjA3OTIzMDBhIGxlZ2FjeS10cnVuaworMTM4MTYgYWRmNmQyMWNjZDdmMWFhNDRkOGM2Yzk5OWU5M2Q2ZDAxYWI0MjZhMiBsZWdhY3ktdHJ1bmsKKzEzODE3IGNkZDkyOGQyMjkzYzI4MmVmMGI5ZmNmYjIwNTVkNWZkMDQ0NjMxZTkgbGVnYWN5LXRydW5rCisxMzgxOCBkNDExMmQ0YzViYjE4M2U2NGFiNzdkZmUxMGM5NzliY2QyY2UzMWIyIGxlZ2FjeS10cnVuaworMTM4MTkgOThlMzAzOTM5YjM5ZTIyZWFlMjdiNmYyMTZiZjVkOGNjNWI2NzkyOSBsZWdhY3ktdHJ1bmsKKzEzODIwIDIwMzUwZWNjYTZlNGIxMzI4MTY4NjI1ZGFiOTIyYzUzODNkZjJlNDQgbGVnYWN5LXRydW5rCisxMzgyMSBmNjdjZTE1MjcxOWFhZmU5Y2ExY2ZiMjhlNzUxZThiOGNlNWVjYTI3IGxlZ2FjeS10cnVuaworMTM4MjIgODM3ZmU3NWQ2ZGMxOWUwMzYwMjFjODBhMjYxODcwMmEzODBmNDIxNiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM4MjMgNTE4OWVhNmU0YmY2ZWU0MjMxMzcxYmNkMjZkNzU3NGJkMmViYTExYyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM4MjQgYWRmODdkMTNhMGMxYWFmMTEzZTk0NTNmYzBiOGUyMjVmZjI5NDBlOSBsZWdhY3ktdHJ1bmsKKzEzODI1IGYyYzkyMGQwM2Y0NGNlMzFkMzk3ZDgwN2IwYWVhN2M3YWNkMWEwYmUgbGVnYWN5LXRydW5rCisxMzgyNiBjY2RmNWRjMmFjZjY1MjY0N2I4ODQ0NDU2YzNiODIzMTkwOWRkMzY5IGxlZ2FjeS10cnVuaworMTM4MjcgOTY0MTg2NzQ1ZWE2YTRkMTg1Njk4YjczOTFlNDIzMThjM2JmZTAyYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM4MjggZDk3MGFmMGNlY2U5NjIwZDI0NzExYjZmYzI0NmQzYjVkZDA4MzJmOCBsZWdhY3ktdHJ1bmsKKzEzODI5IDMzMWVlNGFmZTliZWQ4NmJkZTkzMTAxZWQ1ZWQ1NWFlNzkzOTcwNTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzODMwIGI3YWQxODA5YmUwNDlmMDIzOGMxZjdiOGUyYjI0ZjY5YmNkNDBmZjUgbGVnYWN5LXRydW5rCisxMzgzMSA3OGZkYjZjMGMwYTE1MTIzMjgyNzQzNzM2MzA4OWNlZGRjMGZmMDRlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzgzMiBhOWQyOGEwN2EzMjc2Zjg5OTM5ZjNiNmI0MWZkZjIwNmE2ZGY2YzUwIGxlZ2FjeS10cnVuaworMTM4MzMgZDM2OTZiZjA4ZWVlYTg2MWQ4MDU5OTNmN2Q1YzJkMWFlYWU1NTViZSBsZWdhY3ktdHJ1bmsKKzEzODM0IGM2YWEzMmZiM2NmOGZhZjE2MWQzNzU0ZmE0N2Q3NTIwNjkzODA1MjQgbGVnYWN5LXRydW5rCisxMzgzNSAwMDk0YmYxOGU2ODg4NWIwMWNlNWIyMjNhODIwYjI1Yzc5MGZmMGM2IGxlZ2FjeS10cnVuaworMTM4MzYgMjU2MDIzNmVjZWRiYWRhYmI3OTNhM2M1MmMzM2RlZDQxNGY2ZWZiOSBsZWdhY3ktdHJ1bmsKKzEzODM3IDQ4ZjJiMThiYWQ1ZDFmZmExM2Q2Yzg0Yzc5YmQzMmFiZDk4Yjg5OGQgbGVnYWN5LXRydW5rCisxMzgzOCA2ZDY0NmY3ZTFhMWM3ZWY0YjE1NmUxZWEyMGQxMWI2MTg4NWJiZGE2IGxlZ2FjeS10cnVuaworMTM4MzkgOGVjNmQyYzZjNTk4MWVmMjY1YTRmZDZkMGIwZTgzNjkzMjIzOGNkOSBsZWdhY3ktdHJ1bmsKKzEzODQwIDdmMTc1YzMyM2I4ZTQ2YThjNWRkZTkxNzBiZDQwZjY2OGQyNzM3ODkgbGVnYWN5LXRydW5rCisxMzg0MSA4MDI4OTA4YTk4ODk5MTIzNjkyYzY2NmQ3ZmQ2YWE5ZjZlNzliMGI0IGxlZ2FjeS10cnVuaworMTM4NDIgYWRiNWI2ZGRjMWU1ZWY1YzdmMDRkMGVhZDhhYjdlZTQ4MGU1NTMyNiBsZWdhY3ktdHJ1bmsKKzEzODQzIDQyNGIzMWFmNmQ1MTBlMTU1ZDgxNTE3NmY5ZmQ4OTg2ZDRlYzAyNjkgbGVnYWN5LXRydW5rCisxMzg0NCA0NGM4MjJhNGQ5NTAxODY1NjkzODljNzVmM2ZjY2ZiNzI1OWM0M2M3IGxlZ2FjeS10cnVuaworMTM4NDUgMTU4NDlmZWFjM2ZhMDFkYzYxZDA0NTJkN2Y1OTgxNzFkZWVlOTZiZSBsZWdhY3ktdHJ1bmsKKzEzODQ2IGQzYzRjMTNlMDEzOGMyNGNlZjRkMGM3MTFmMjA5MjZhZThkNjc0N2IgbGVnYWN5LXRydW5rCisxMzg0NyA3N2IzMzJkYzIwNjM2NDRlZjE0YTU0MjNhNGQwNGU4NTViYzJkZTEzIGxlZ2FjeS10cnVuaworMTM4NDggZTM0NGMxZmZjZGFmNTM2ZTMzMjg1ZGNiMTk0NmEzN2JjMTRiMjE5YiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM4NDkgNDIzMjAzYWFiZWZiNDhjY2Q2NmQ2OGE3Y2NkNWYxNTY0YmUwYTg0YSBsZWdhY3ktdHJ1bmsKKzEzODUwIDU4YjhkMjE2ZDcyMTRjZTNjMmIzZTY4ZDIyOGRiNTBkNWVlZmNlYmUgbGVnYWN5LXRydW5rCisxMzg1MSBlNmU0NWE2MGUxZTAyNzNhZjg4MGI3MzgwZGMxZmM3NTUxNDcwMjEzIGxlZ2FjeS10cnVuaworMTM4NTIgYjQ0MjQwYjI3M2NmYjUzM2RjZDM0NzIzZTZlNDExYzEyN2E0ZjIxMyBsZWdhY3ktdHJ1bmsKKzEzODUzIGIxYmI2ZDdhMzM1ZjRmNTI0NGNjYWFjZWE1ODY1YWQ0NmJiOGYxOGUgbGVnYWN5LXRydW5rCisxMzg1NCAxNTgxMzA3NmNiZWY2YWY1NzE4NzEyMDhjZGU1MjA0ZDdmYjVkMTM4IGxlZ2FjeS10cnVuaworMTM4NTUgZmRjYjg5ZDAwNjk1NGI4ZTkzOTYwMTkzMmViODg5MTA3OTQ1ZTRjOCBsZWdhY3ktdHJ1bmsKKzEzODU2IDAwZDU3N2U0NGQzNDFlODZiMjMwYWMyNzA3YzM3ZDEyZjhjZDVkNGQgbGVnYWN5LXRydW5rCisxMzg1NyBhNTk0ZDFlOGNkMWFhNWE4MjA2ZWNjMTBmYTdlNzhjMjgwZDQ4ZWEzIGxlZ2FjeS10cnVuaworMTM4NTggODNhOTg2MTgwZjQxZDY4N2UwN2E1OTRmYTg1YjFhZWUyNzRmOWZiYyBsZWdhY3ktdHJ1bmsKKzEzODU5IDU1NjY2NGM2MzlmYzI2NGVhM2VhNDQzY2FkZWU0MzkyMWRjMWY3MjcgbGVnYWN5LXRydW5rCisxMzg2MCAzYzQ0MDI4YjkxOWQ0YmVmNjdlZDQ5Y2Y2NWJkY2ZhNDQ5MTVkZTc4IGxlZ2FjeS10cnVuaworMTM4NjEgODk4YzMzZTIxNmJiMzYwN2IxN2VmNjExMWMxNTY4NDJlZWE5YzU3OCBsZWdhY3ktdHJ1bmsKKzEzODYyIGI0ZDJmNTQ2NWIzZjg5OGZkNjg1ZTRjNGVkZTY1MmVhN2JkYjgzNDEgbGVnYWN5LXRydW5rCisxMzg2MyAwNWY2OGQ3ZjkxYWM0MjBjNDQxMjdlZDE2ODVhYTk4YzY2YzdmMGQ3IGxlZ2FjeS10cnVuaworMTM4NjQgNTVhMWVmOWViZDRjZGVjNjllNWFhMWZmYzRjNmQ0ODk2MTI5MWFmNiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM4NjUgMGFlMjQ0MjBjOGE5ZjI2ZmIwMGNkN2NlNzE3MjM1ZmJkOTIxNDRiYyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM4NjYgYzFiNzI1YjFhMTQ0NjJjYjMxMzEwMTQxZGVkYTUxMTVjMGIwM2QxMyBsZWdhY3ktdHJ1bmsKKzEzODY3IGM3MDJhMTJkMzE4ZDY4NmMzNWQzNjI3NzhmZjEwYzdjY2YzZjc2NTQgbGVnYWN5LXRydW5rCisxMzg2OCBlZDFiNDk4MjJmNzA1NWUzODJmOTkzM2Y1YzNhNjIxNmZhMGU1ZWZiIGxlZ2FjeS10cnVuaworMTM4NjkgMDgyZjQyZDVlYWUzMGVjZDI1ZTNmZmE1ZDRhMWI0NTU2MTRhMTFlZCBsZWdhY3ktdHJ1bmsKKzEzODcwIGEyYjk2M2Y3YWM5OTA3MDUxM2M2NjJmY2Y1NWU2YzhkY2I3ZTMyMDggbGVnYWN5LXRydW5rCisxMzg3MSA1OTVjYjI5YTg4NjdlZTJhZTY2OWJlMWM4NDU1OTUxMWM1MWYxMjQxIGxlZ2FjeS10cnVuaworMTM4NzIgYWQ3NTdhZmY4ZDM3OTVjMTFlMDRkNzJiNTRlZmVkZjI2ZmVjNTBiNiBsZWdhY3ktdHJ1bmsKKzEzODczIDRmZGM5YzFlY2FmNmI3Y2NmZmFhNjdiOGIwOGY3MGRmN2QyMzFhNzQgbGVnYWN5LXRydW5rCisxMzg3NCBmYWQ1NWVlYzVkZmNkYTEzZjJiODkzNjg1MjVhYjk2YjZlNTVmNTgxIGxlZ2FjeS10cnVuaworMTM4NzUgZjllZjM2OGI4YzJkM2ZhZGU3Y2RlNThiOTIxNzAzNTQxOTU1MTQ3MSBsZWdhY3ktdHJ1bmsKKzEzODc2IDQ4NzYyMjI4OGY5YzI5OTQ1MDQyYTZlYmUzYmU3ZGNiNTY0ODJiNWQgbGVnYWN5LXRydW5rCisxMzg3NyAzZDE1NGJlODcxNjI5ZWM2YjZjYWE3ZjEyYzQyNGViNjdmMGU2MmNiIGxlZ2FjeS10cnVuaworMTM4NzggNzBhZGNjZDQ1MjNhNDkxZjJlZWYyOGIwM2YzMjU2ZGYzZTI4M2U0YiBsZWdhY3ktdHJ1bmsKKzEzODc5IDMzNDEwMDIxOGE0YjFkZDIwMTY3ZTViOGNhZTNiNDJmMTMxMDI5N2MgbGVnYWN5LXRydW5rCisxMzg4MCA0Mjk0MWUyZWI5ZDg2YTQ4ZjIzZGMyYWEzZDc3MzI3OTk3MWUyMjllIGxlZ2FjeS10cnVuaworMTM4ODEgNmY3NTA3ZWYyYjExNWE1M2JiOWNmNDZiOGYxYTQzOWVlODI4NjgzYSBsZWdhY3ktdHJ1bmsKKzEzODgyIDdhZTVjNDA1MTA0MWU1YTAzZTg3MjA1ZmQ2Yjc2MTZkY2QyYzQ3YzIgbGVnYWN5LXRydW5rCisxMzg4MyA4YjgxNTgwNWYxMGNiNzJiZDhlMGRkOTk1Y2QyNWUzMTFkMzJjYjMwIGxlZ2FjeS10cnVuaworMTM4ODQgZDgzZmExZGQ3Yjc5ODE5OTQ4M2FiN2I0NjFjMDU4YzA4NmMzNjA1YiBsZWdhY3ktdHJ1bmsKKzEzODg1IGNiYzQ2Mjg0YTVhY2I4NGNiNTNmYjIyMjA2YTkzNmEzYTI2OWUwMDMgbGVnYWN5LXRydW5rCisxMzg4NyA0YzZjOGVmZmNiNDJhMTJiZTI1YzhmYjc3MDVkMjg1MjE1NWZiN2Y5IGxlZ2FjeS10cnVuaworMTM4ODggNTNiMjk3NGVkM2QzNmY3MjQyNTc0ZjdkZjY3ODUwYWZmMjQzODgwZSBsZWdhY3ktdHJ1bmsKKzEzODg5IDEwNjY4ZThhMDk3NTZjMTRkZTc4YmQ4OWVjZjVlNzY5ZGNjMTY4OWMgbGVnYWN5LXRydW5rCisxMzg5MCA4MjZlZjhmMjg3ODJjZThkMjcyMTk1Njk2NzJjZWRlZWQ3NDBlZjM2IGxlZ2FjeS10cnVuaworMTM4OTEgY2ZjNjUxNTkzN2E2OTU0YmRiODEyYzVhYTMzNDJlZWEyMjVmZGM2ZiBsZWdhY3ktdHJ1bmsKKzEzODkyIGM1ZWRkODZlMjY5ODBkNGY5OWY0NTk4Y2MxMTg5MDE1ZDhjMzM0ZjYgbGVnYWN5LXRydW5rCisxMzg5MyA2NzhhOWE3OWM3ZTg1YjcyNjIyZTRkY2FhODU0M2NkZmI1MWUyZWNjIGxlZ2FjeS10cnVuaworMTM4OTQgMDNkMWI5OGQxNzhkY2ZlNTU1MGRkNWNhZDcwZmVhZDk2NGU5MjhiNCBsZWdhY3ktdHJ1bmsKKzEzODk1IDkxNWZhZGYyMjk0MTEzOWFjYjNjODFhNDY2NmIxNWI0MDg4NDgyOGUgbGVnYWN5LXRydW5rCisxMzg5NiAzNzFiOTc2MmQ2M2RlNDU1MTQzZDk1OTIyOGFiNDIzNzdmODI5MjdkIGxlZ2FjeS10cnVuaworMTM4OTcgNWQ1N2M2OGIyYjMyMTI3NGI3YzA5ZWI5MmVhNjExMmM0NWFhYTk5MiBsZWdhY3ktdHJ1bmsKKzEzODk4IDA0ZjAyNGQ4NTQxYzhkNTljNzQ5ZThlZjIyOWFkZmFmYzk4NGZjOTUgbGVnYWN5LXRydW5rCisxMzg5OSBlNTU1YmEwNGI5MjI3NmRjODg1MWEwZWUxZWY2NmI5NTY1NzVhZmQ2IGxlZ2FjeS10cnVuaworMTM5MDAgNWY0NmM3Nzg0OTcxNTBlMGFmNzAxZWQ5ZGUxNzBjOWE1YWI0YWJkZiBsZWdhY3ktdHJ1bmsKKzEzOTAxIGJlNjAzZmNiYTAwMWFhZmU3NDI4M2IyMzhhZmQ1Yzg3ZDJmMDkwZjMgbGVnYWN5LXRydW5rCisxMzkwMiBjYTliZjY5MzVjNTJhNjNlNTY5NDBjYmFlNWJiY2JmZjlmMWQzZTY2IGxlZ2FjeS10cnVuaworMTM5MDMgNGM3ZDYwNDNiNDNhMjg5NDQ0MzM2NDg0OWFjYTk3MTViZDU3ZWE2MyBsZWdhY3ktdHJ1bmsKKzEzOTA0IGRmZDJjN2QzNGQ0NDNjNjk5NGM2MDU1NDA3YmU4ODQzMTA4MTNiM2YgbGVnYWN5LXRydW5rCisxMzkwNSBkMzQ1OTk2ZmNiNjUyMWZiYzkzNGQ0MThiMDQzYmI0YzIzODI2OGRhIGxlZ2FjeS10cnVuaworMTM5MDYgMjVjMDIwMmUwMWE2MjYzODFmMWExMTA0ZTdhMTY3YjY1MDdiMTVhZSBsZWdhY3ktdHJ1bmsKKzEzOTA3IDhmZGFjMTY1NDRlMWM3YzY3OGQ5YjViZGVmNjliYTdkYzNmZjNkNjYgbGVnYWN5LXRydW5rCisxMzkwOCAwOWU4YWFlMTZlOTk4MDMyOTcxMTJkZDFmODc0NjA5MWMwNWQ0ZmFhIGxlZ2FjeS10cnVuaworMTM5MDkgMjNmMjc4NjYwY2E5YTkyNTNkNDM5MmM4MWVmNDhkODE2MTIyNjlkMyBsZWdhY3ktdHJ1bmsKKzEzOTEwIDhiNjNhNmY3YTUyM2M0ZTE1ZTVmYTMxNzg2MTViZDY0MjNhOGJhYjUgbGVnYWN5LXRydW5rCisxMzkxMSBiOWJiZTg4ZDk1NTQ3N2EzZjQwYjRhOGNmNzdmNTQ1ZjFlZThjOWE1IGxlZ2FjeS10cnVuaworMTM5MTIgMjljZTk1NmZhN2I3NWU3YWUxMzYyMTE0ZWE0ZDA3NTg2MTcxYjkzNSBsZWdhY3ktdHJ1bmsKKzEzOTEzIDQxOTkwYmNlMDIzYTgxMDM4NmM2ZTk2NzlkMDhiMTAyMGQyMDUyZTIgbGVnYWN5LXRydW5rCisxMzkxNCA4NjE4NDE1ZTdhNjZjNzFiYWQyOWY0MmY4MWUyMTc5NDhiOTAwYThmIGxlZ2FjeS10cnVuaworMTM5MTUgZDkxOWNmOWZkZDg5ZTcyYjExYzRlZjkzNGEwYjBlMTRlN2U5ZmIwNSBsZWdhY3ktdHJ1bmsKKzEzOTE2IDdlMDVhN2QwYjUxMWQ1ZGYwNThjNTIwMzJmYmVjNDkwYzgzZTdjMjkgbGVnYWN5LXRydW5rCisxMzkxNyA2NjIxNmYzMjQwM2QxYTkxYjQ2MjYwNzdjMzY1NmMwNzkzM2UxYmI3IGxlZ2FjeS10cnVuaworMTM5MTggMDQwYjA1ODE2YjE3Zjk4MTEwOTA4ZWFmMjcwN2VjNWI2ZDg3MWE3OCBsZWdhY3ktdHJ1bmsKKzEzOTE5IGExMGRiNWI2ODQzZjI5MGQyYmRjYThjNzA2OTVhMDU4MjVjMzFkY2YgbGVnYWN5LXRydW5rCisxMzkyMCAzMjI5YjEzODEyMWUyYTRjYWJmNDMzN2Y2NGZmNTU1M2M5YjA1M2FiIGxlZ2FjeS10cnVuaworMTM5MjEgZGM5ZjFmOTY0NjkwYmE0MDU4YzE2MzUxMjBhNmM5Y2MzZTBkYWE2MiBsZWdhY3ktdHJ1bmsKKzEzOTIyIDNmYWExMjE4OTUwZWVjZTMzZWEyZGVjOGIyNjZkNDAxYTc2N2VhYWQgbGVnYWN5LXRydW5rCisxMzkyMyAzZTNjNzFmNGQyZGVkMWU0ZjFmZWJhZWI5MDY0MzhjMDM5OWNhNDYxIGxlZ2FjeS10cnVuaworMTM5MjQgNGFkMTRlNGRjN2U1MTYwMGMwOWU5NDVjZjY1Mzg2MGI0Yjc1ZTVkMyBsZWdhY3ktdHJ1bmsKKzEzOTI1IDFlZjE4MDczNzdiZmE5ZWM4YWQzZDY3YjFjZWU1MWM4NWE0ZWE1ZTIgbGVnYWN5LXRydW5rCisxMzkyNiAzMmMwNTNjNzljY2IzYzJjZTAwNzQ4MDZlYWFiNTFjNDhjNjBlOTZlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzkyNyBhY2E3YjVlYWY1ZTgyZjhhMGYwMGI0YzlmOWY0MmMzOTgwMDJhYjA5IGxlZ2FjeS10cnVuaworMTM5MjggYzI0YzI0MTg1MzUxNmZmMmJmMzlkOGYzMzBlZjQ2MDA5MjgwOGEyMiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5MjkgZGFmODhlOGVkYmMwZTUzZGFiZDQyYmFiNDI3ZGFhZWY5NzYxZDRjYSBsZWdhY3ktdHJ1bmsKKzEzOTMwIGMyMDhjNGU5ZTJhYWNmOGZkMjgyNTQ2YzhhODliMjcxYzZlMDk1MTMgbGVnYWN5LXRydW5rCisxMzkzMSAxNDY2MjgwZTZiYjBhM2I0MWQzNDBkZDVkMWM1ZmIwNzRkNWIzYTY5IGxlZ2FjeS10cnVuaworMTM5MzIgYzdlNzIzY2Q2MzQ5N2NiOTM4Mzk0MmJhYTQwMjVkMGFmMjY2NTFiNSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5MzMgMDE5Y2QyMWM4YzlmY2I2NTg0M2M3YTM2NzI3OWY1ZWM1ZDdlOWM1MSBsZWdhY3ktdHJ1bmsKKzEzOTM0IDYxYTBmMDIxNWE5NzZiY2VkZGM0NTEwOGZkZTUyNjM2NDI1MjZjM2QgbGVnYWN5LXRydW5rCisxMzkzNSA4OTUxMDJlZWE0ODUxYTc3OGMwNWFhZWVjZmVjNDU2MmU3NzQ4MTMzIGxlZ2FjeS10cnVuaworMTM5MzYgNmViZjY5MzhjODg3MjAxNzYyMTg4YjUzZjI4NzQ0ZmY4MjZkM2NjOCBsZWdhY3ktdHJ1bmsKKzEzOTM3IDU0ODZkY2YxM2Q3NzRjYWNkMzQ2MzFiZDI3YTgyNmJjMzY0NTA1YTggbGVnYWN5LXRydW5rCisxMzkzOCBhMTRkOTYxNGRhMDA3ZTFhOTMwNmI0MDk1Mjg2MjQ1OTIyZWQ0MDA4IGxlZ2FjeS10cnVuaworMTM5MzkgMGIyZTk5NGVmMTc1YTU5NzcwMzlmMmM0NDc3OTAxZGY1ZDM2NTAyZiBsZWdhY3ktdHJ1bmsKKzEzOTQwIDRjYTdiN2I4YTg0OTE2ZjU0MjBhNzY1NWE5YmUwZmQzZGM4ZGQzMzcgbGVnYWN5LXRydW5rCisxMzk0MSA4YzVlZTNjM2QzODkwMWJkZjRjNTM2MzFlZDg2YmViYjlkNTk1ZTk3IGxlZ2FjeS10cnVuaworMTM5NDIgZTBlY2YxYWVmZTA0ZTJkZWJlMWYwZDRjOTI2ODgyOGMzYTJlYmE3YSBsZWdhY3ktdHJ1bmsKKzEzOTQzIDY1MGU4OWQxNTU3ZjE0NjBmZjA5NzE3NGYxMDkzZGRhOWMwNjE3YmMgbGVnYWN5LXRydW5rCisxMzk0NCA4N2M1ZDBiM2RlNTllYmUwMTkzMDk1OWI1ZDk2MzY0OTFiMDZmYjdkIGxlZ2FjeS10cnVuaworMTM5NDUgNzkxY2Y3MTdjMGJlNGJmMWJiYTYxYmQ1ZjNhODc1N2MyNzk2YTcyNyBsZWdhY3ktdHJ1bmsKKzEzOTQ2IDZjNDUxNzFjMWExZmU3YmM4MjIzZjhiOWI1OGFhMDdlMmYzY2JiMTcgbGVnYWN5LXRydW5rCisxMzk0NyA0ODgyYjJlNTJjYjI0OWE4OTUwNjhmOWVkMTZiYTdhYWRkYzgzMWFkIGxlZ2FjeS10cnVuaworMTM5NDggOTVlOTY5OGZjOTA4YzJkM2VkNDRiOWZhNjA5ZTAzYjk1NWYyNzNlNSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5NDkgYzE2MWQyYjg1MjA3ZmE3OGUwMGY5ZWIzYWY2YzJlYTI4Mjg2MzdjYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5NTAgYTVhNTEzZmVlNWIxZGIzYTYyMTQzZjVlZmUwOWUwYzRkMGZlNmM1OCBsZWdhY3ktdHJ1bmsKKzEzOTUxIDUzZjY5Yjg2NzZmM2MxZTU4ZjFlZTljODhiYWFmYTQwMGQ3ODZlNTUgbGVnYWN5LXRydW5rCisxMzk1MiBiZjM2OGYyZjdjMDA2ZDVlNzczZmUzNDM0MDkzNjMyZjRhMWM2MTRjIGxlZ2FjeS10cnVuaworMTM5NTMgNTI1YjVhOWFjZmQ1ZGRlNTFjOWFiOTViN2Q4YjgwMjRhNTcwZGVjYiBsZWdhY3ktdHJ1bmsKKzEzOTU0IGY0NmM4N2I2NjE1NDIwNGEyNjdkMDg3NmQ4MjJhNGE0ZDIxYWYzYTkgbGVnYWN5LXRydW5rCisxMzk1NiA1MDc1NDZhODdkY2ZkM2JiNTBmZjg4M2UzM2RlOTg5MTYxMWQ4NmMzIGxlZ2FjeS10cnVuaworMTM5NTcgYjU1MTFjMDE3MTMxZmU2MjlhMjRmMDQ4NmUwMDhmN2IxN2E1NDY3ZiBsZWdhY3ktdHJ1bmsKKzEzOTU4IDA2MTE1NjQ1MWQzNmFmODIxZjg5NjQ5Yzg1MDkxMmM4OWIyNTliNGEgbGVnYWN5LXRydW5rCisxMzk1OSAwNjA2NjgyYzdlYmMzNWM0MmYyZTExZTc1OGY4MTgzM2I4NTNmMWFlIGxlZ2FjeS10cnVuaworMTM5NjAgMjQxMzhlYzNmMzk2MjExZTQ2NGMwMDg5MjY2M2MwNDE5YWUzYTM2YyBsZWdhY3ktdHJ1bmsKKzEzOTYxIDNmYWIzNzExYzdkYzY4NzMzMDk0NjEwMmU5M2JmMmIyMDA2ZmVmNDUgbGVnYWN5LXRydW5rCisxMzk2MiBmYmMyYzQ4NThjY2U4YTUwMTdhMGUxMmVhZjMyZjU1OTRlNTcwZTJkIGxlZ2FjeS10cnVuaworMTM5NjMgYzgxNTVkMDVkOWNhNmZhZjhlMTEyYzI1ZjJlMjE0ZGVkZDk5ZjlmNSBsZWdhY3ktdHJ1bmsKKzEzOTY0IDI4ODc0MDc2NTA4OGQzNWQ2YTk0YzFmMTk3NTNkZjFkZDM4NGQ5ZWMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzOTY1IDUzYjJmMjFhZDY3ZjA4MTZkY2I2NmI5YjJhMTZiNWZkNzhlMWNkNjQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzOTY2IDJmOWI2NWIzOGFmMmRmMDc1MTUxMWYyMTgxZDFkMDE2YjFlNWUwM2IgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzOTY3IGM1ODIxYzNiZWZjYWNiY2E5NGMxZmQ1NDA1YjAzODNkZmNlMDZkZmEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzOTY4IGM2ZDA5OWI0ZWI0MmE0NDE5NTYxYTEzYmI2MWRlYzcyYTQxYzQ1YzMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzOTY5IDFlMGZiZTMzNzUxODU3M2NjZWYzOTVhNGJkMDZhMGJjOWRjMjA1OGYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzOTcwIGE2MGZhNzRhYWVhZmQ5YTVhNDhkMmJhMTA2YzZhODAwMDcyMDYzNGUgbGVnYWN5LXRydW5rCisxMzk3MSBjYTc2OWQ5ODY1MTRiYjI5MDJmYjM2YTkxMTg3YTQ3YzgyZWMyMGQ5IGxlZ2FjeS10cnVuaworMTM5NzIgMWNlNDE5ODlhMDNkMGFlZWI0Mjg0ZTRlMDIxYmM0ZjQyOTVmYjIyNyBsZWdhY3ktdHJ1bmsKKzEzOTczIDQxZTAwNzFkYjUzYTgwMDg0MzUyNmZmZTUxMTg4M2UxYjU5ZWJlZWUgbGVnYWN5LXRydW5rCisxMzk3NCAxMGFkMzcwYmM1YmQxYWE2Y2NjMzcyZGEwNmFhNGFmNmFlOTExZjAwIGxlZ2FjeS10cnVuaworMTM5NzUgN2ExODhhYWJlZjExNWM3NDBjNWU0MmM2NDJmZGFhMzg5MWVmZDdkMCBsZWdhY3ktdHJ1bmsKKzEzOTc2IGE5ODllZTg3Mjk2MWMwNjg3MTM2ZDViOGViYjVkZTE4Y2YzYTMwY2IgbGVnYWN5LXRydW5rCisxMzk3NyA3ZmI4YjBmMTNkYTBhMDk0NzNhOWMwZjMzOTAwZDAxNTBlYzczZjRhIGxlZ2FjeS10cnVuaworMTM5NzggMzMzMGViOGRhMjIyNzRjZTBkZDExZTdlNjIxZWIxODc2YTA1Mzk4ZiBsZWdhY3ktdHJ1bmsKKzEzOTc5IGJjMDg1NjYwZGJjMTMzODNiYTdiNDQ0NDJlOWQ0ZmEwOWZlODk5YTMgbGVnYWN5LXRydW5rCisxMzk4MCBmMzA4NjU0ODQ0NmVjNWIwNzQyYTczYTNjM2I4ZTA3YmE2YjJhZmI5IGxlZ2FjeS10cnVuaworMTM5ODEgOTQwNGE1YjQxNmI1Zjc2OWQ3MWQ4NDNiZDZkMjk2OWQ4ODAyYWRlMCBsZWdhY3ktdHJ1bmsKKzEzOTgyIDk4OTk3YWE0OTE2NDIzNjQyMmJjM2U2MjRmMDFjYjNlN2U1NGUzYzQgbGVnYWN5LXRydW5rCisxMzk4MyA4NGRmZjVjYzcyMTYyMWMxM2U5NWQ5NmZiMTkyYmZhZjU1YjMwNGM5IGxlZ2FjeS10cnVuaworMTM5ODQgNGZiODkzNDQ4YTZiOTVhMTQwY2JkZjM1NjZmY2UyMzFmYzE0YzFkZSBsZWdhY3ktdHJ1bmsKKzEzOTg1IGUzZGM1ODRlOTYyMzBjNGMzNDU3ODg0N2VlMTNhN2Y2MDdiN2Y4YTcgbGVnYWN5LXRydW5rCisxMzk4NiBhMzE2Y2Y5ZjgxYTc2OGY5ZDM3MmRiZGUyYmRkODkyZjBkZWM3ZGM4IGxlZ2FjeS10cnVuaworMTM5ODcgOGVkYjgxZmEwYTVmMjZkODY1MGMzZmM1MjgzMTcwNDU4M2Y0N2NiYiBsZWdhY3ktdHJ1bmsKKzEzOTg4IDA5YzYzZDkxM2FlMDVhZjQxYjg5YmI1MjczZTZkNWIzOTdjM2RmNjIgbGVnYWN5LXRydW5rCisxMzk4OSAzZDZiOTdhNThlOWNhNDBjNGY4ZjNhODllZWY2M2Y4NWE0NDRiOWQ0IGxlZ2FjeS10cnVuaworMTM5OTAgMDY2NzAyNDFhN2IxZGEyMjdlZTZmMjVhOGJjODE2MmFiODI2YzFiZSBsZWdhY3ktdHJ1bmsKKzEzOTkxIGViODQ2YjRkMDM4NTY0ODhlNGExYzAxY2IzNGFhM2E0NTFmNDA5ZTkgbGVnYWN5LXRydW5rCisxMzk5MiAzMmE0ODBkMDgyM2NmYTFjNDNlYTA5MjdiZTI5MTg5YWFiMDYyNzMzIGxlZ2FjeS10cnVuaworMTM5OTMgY2M5MjJhOWE0OGMwMjBiMDVmMWVlNTdkNDdmOGIzNjVlM2NmZDdmYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5OTQgYmUyNWFhY2ExMWY0NTZmNGMxMTBkMzg3MDJkYjkwZmZiMDBjODRkOSBsZWdhY3ktdHJ1bmsKKzEzOTk1IDMxNmJlMDhjOWVjZGExZDlmZDJmN2UyOTNiMjE2ZWI1ODgwZTlhNjMgbGVnYWN5LXRydW5rCisxMzk5NiA1ZjE4ZTc4NTNkOTI0M2UyYzJmMzU1MjYyZWMxMzM3MzY3ZTRlMmZjIGxlZ2FjeS10cnVuaworMTM5OTcgMWRjMzkzNmU4NGRiMjgxNjFhNjA3MzhmZGM0Y2E1ZDhiMWVmNDFlMyBsZWdhY3ktdHJ1bmsKKzEzOTk4IDAxM2RkMzhhNTAzMWQwYjk4MzcwNDcxMGQ1YWRmNTIzMGY5MTY3ZDggbGVnYWN5LXRydW5rCisxMzk5OSAwYmMyYmExNzUyMzA1ODkxODQ2ZjBmZGZjNmFlNjY0NmM3OTQ4YjZjIGxlZ2FjeS10cnVuaworMTQwMDAgOTBmNDgzMGUyMTIyZjJkYWEwYzFmODE3MjU2YTE4MTY1NTBkNGYyZiBsZWdhY3ktdHJ1bmsKKzE0MDAxIGYwMjlkNDdkZDI5NjRhNmM0OTY5ODJkZmJlMzZhMGQ0OGZlZGZkM2EgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDAyIDViODAyNDM4ZDhmYzhkMjM2MDFmNTJkYTEyZTUzMjcxM2RlNWM0MjYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDAzIDNhNTA2YWIxYzEzODlkMGJlN2Y5ZDc4NjhiYmY0ZmI3NTNjZjAzNmEgbGVnYWN5LXRydW5rCisxNDAwNCBhYWJmYTBkNzIxM2MzZWE4YzgxN2ExN2M4MzRkNmYyMjcyZjA5OTNlIGxlZ2FjeS10cnVuaworMTQwMDUgMjM5Y2E0Nzg4YmVjMGJmYWNiYzA3Yjc0YmZjZWU1ODkxYTI2M2ZhMSBsZWdhY3ktdHJ1bmsKKzE0MDA2IDhhNjg3MWU5NWQ4MGIwZWE1MTg0Y2Y3MTFmYjBkMmU2ZmRkNTI3MzIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDA3IGNjMThiMjRkZWUzZGI3OWY5NzdhYjIyZWM1OGYzOTE4ZDVmYTIwZGMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDA4IDJkNzliNDkxYTUyOWM1NDlhNjQ0ODUyZWU1YWFkYzMwODU1ODMwMzUgbGVnYWN5LXRydW5rCisxNDAwOSBlMGZlNGM3YTllZmYzM2RlYmYwMTE0Y2Q3YjNlNjcwNGU2NTdlM2JiIGxlZ2FjeS10cnVuaworMTQwMTAgMGEzYmI0MDNhNDMwNWExZDA5NTMyNzE0OTM4YjhhNjk0MmNlYjk5MCBsZWdhY3ktdHJ1bmsKKzE0MDExIDM4Yzc0NDRmNjMzYWI4MDJmYTUwNDcyZDgxYzE5YTMyMjIzZGYxNjEgbGVnYWN5LXRydW5rCisxNDAxMiBlMTJiZThmNTE4OGZkNzYyNTM1NDQ2YzczOTgwYzJiZGU0YTc0Mzk0IGxlZ2FjeS10cnVuaworMTQwMTMgYTA1YTA1NjAyOTAyOGE4MDU4M2Q2YWZlY2YyNDgzZWIzYmIyMTUyMSBsZWdhY3ktdHJ1bmsKKzE0MDE0IGU3NGVmMmI1MDU1NTZlZDNkZWU4YWUwMTE5MDQ5OWUzYjJmYmJjNDUgbGVnYWN5LXRydW5rCisxNDAxNSA3ZTQyOWU0Njk2OGEyNDYxYTFkM2U5ZDBiNGRiNDE2ODc4Zjk0NjE3IGxlZ2FjeS10cnVuaworMTQwMTYgNDI2OThmMzQ1YmQzMDQwYzQyNTY5ZjIyNDk4NGE4Y2Y1YTcwZTJhZiBsZWdhY3ktdHJ1bmsKKzE0MDE3IGVmMDNmMTZhZTVlYjI3NTM0ODNjMDZlMjRhZTc3OGY1NTI3OTQ2ZGIgbGVnYWN5LXRydW5rCisxNDAxOCA2YzVlMTJjNWE2MTY0ZDJkMWE4YjQ1MTQ2ZmNhNjdlMTE2YTY4NjY2IGxlZ2FjeS10cnVuaworMTQwMTkgMTJmNDYyZmQyNGY3NTNlZTI1MmFlNmEyN2ZhMDYxYzc1YTdmNTFkOCBsZWdhY3ktdHJ1bmsKKzE0MDIwIGQwZjRhNzliOTg1ZDRkZmRiYmVhNWM2MDE2MTI3Nzc1MjY3OWY0NzQgbGVnYWN5LXRydW5rCisxNDAyMSAyNDU5ZjExNzYxZjA5NTdkODhlOGNjMGUwYzdhZTU2OWU0MDBmMWVjIGxlZ2FjeS10cnVuaworMTQwMjIgOTVhOTgzM2IwMDBlOTdkZmUyYWRjMTIxZmZhMjgwZjM0N2MzMDg4NiBsZWdhY3ktdHJ1bmsKKzE0MDIzIDE3ZTEyMzA1OTczZWFiMGE3YjY1ZWMxNzkwYzU0ODllMGNlMjcwNDAgbGVnYWN5LXRydW5rCisxNDAyNCBhYWFlZTdiMjMzODAyMTVjODZiOTUwYzExZTRhNWEwNDQxYzVjYjlhIGxlZ2FjeS10cnVuaworMTQwMjUgNjk4MGQwNmUzNjA3NTI4M2Y4NTA0NDg4ODkxNTI2MmM5ZGE1MGJkMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMjYgNjc1N2U4MGM3NDc4MzI2OWEyMmEwNTg3MjFhYzlmNmY5MGNmYmRhNCBsZWdhY3ktdHJ1bmsKKzE0MDI3IDA3N2ZmNmVmY2EzNWU4NDYxMjk1MWE3MTU0ZjYyNGE0YTVkNGI1OTkgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDI4IGExNzBiN2YwNGM2NDdhMWM0ZDE1ZmVjMDUxMzk4MGQ1MDIxM2UzYjAgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDI5IGFiMmE2ZjkxMGY2NTMxMjA5NjJmZWEyYTExMWVlYTFlODFmZGE3OTUgbGVnYWN5LXRydW5rCisxNDAzMCBhMjY3M2E4YmRjYTI4MjQyNWE5ZjQ3OTlkZGNkZDBlNDE1N2M4YjQxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDAzMSAxNDhmZDQ3NWIzOTNkYzcyYmI4Mjg3NjFkYzY1MWZlZGRkZWY4N2JlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDAzMiBiNGQwN2JlYWMwOWJlZWQ1NzNhZTNiMzU5YzEwMGM3OWRjYjI4M2FkIGxlZ2FjeS10cnVuaworMTQwMzMgMTg1NTEzMWE0ZGNkNDdhMDQwZmJhYzcyNTE3MmY4ZGQyOGRlNmIyNCBsZWdhY3ktdHJ1bmsKKzE0MDM0IGMwNTM2M2NmMWI3M2IwZjI1ZmM3MTY0MjYyNjBkOTk5YTI2ZTVjZDcgbGVnYWN5LXRydW5rCisxNDAzNSA5NmYzZWJhY2E2YWU1ODBmMTEyZTJhNzAxYmFlNDZjNjg3NWY3M2I1IGxlZ2FjeS10cnVuaworMTQwMzYgNGYyNzY4OTMzMzEzYWQ0MTE0YzYwNjY0M2Y2ZjJhYzQzZTNkNTk3YSBsZWdhY3ktdHJ1bmsKKzE0MDM3IDA5ZDM1MTg4MmM1MTBmOTZmOTZhYmRlZDA0MWFjNjA5YTU0MTkyNmQgbGVnYWN5LXRydW5rCisxNDAzOCBhZjExYWRjM2NiZDcxN2M2ZWZlYThmM2Q3NTcwZGJjNmQzMzAzYWY5IGxlZ2FjeS10cnVuaworMTQwMzkgOGI0NmVlMzI1ZGMwM2U2MjhjYWY3NzEyYmYzMDUwNmJkYTM4MmZiYyBsZWdhY3ktdHJ1bmsKKzE0MDQwIGM5Y2Q0YmJlZDhlMjgzZTI2NTcxMWQ5OGU2MWNiNzQyMzJkNjllYTAgbGVnYWN5LXRydW5rCisxNDA0MSBmMjFmMTk4ODZlZTM4ZjVmOGNjYWJhYThhMjUwNzgzNWI2NjQzMzYxIGxlZ2FjeS10cnVuaworMTQwNDIgNWM1YTNhNWNjNzlmY2RlNjJkMWM0OGZkMGFlZjNjNDVjZTcwMTg0YSBsZWdhY3ktdHJ1bmsKKzE0MDQzIGUyNDA4NzQ0ZGM3ZjM5ZTc2OWZiNjkyNjE2YmMzNzczOGFlZjYwYWQgbGVnYWN5LXRydW5rCisxNDA0NCBiYWI0NmFjYTJiZWNlNjYwMzRiODFlNGRkZGM0ZWQyMjY2N2FmMTY2IGxlZ2FjeS10cnVuaworMTQwNDUgYTk3ZTYyNWVkNWQwNGQwNWQxZTBmNmQ4Yzk2MzQ2OTVkYjI3OGZhMSBsZWdhY3ktdHJ1bmsKKzE0MDQ2IDdkYzkyNzIwNGQ2NTgyZTEyZTM5NzY5ZDJkZDUwOGU0MmE3ODEzYTAgbGVnYWN5LXRydW5rCisxNDA0NyAwNjgwZTY3YTBkNDk1NzM3ZDIxMzJjMDdkZGY5NGRiODdmNjg4ZWJkIGxlZ2FjeS10cnVuaworMTQwNDggNmI4Zjc0NmJiZDVhYTAyYTIzYjBjZGMzYmM1YTA1NjcwOWJlNmMzOCBsZWdhY3ktdHJ1bmsKKzE0MDQ5IDM0YjZhOTJmYTA4ODQyZmRjNzcwYWIyMGMwZmNmMTgzYjg3MGU1NGUgbGVnYWN5LXRydW5rCisxNDA1MCA5Y2RmM2ZhZGRhOTI3NmM2MmE1MTRiZDVhNTU4NzMzMzVkNDQ3M2ZkIGxlZ2FjeS10cnVuaworMTQwNTEgNTg1MTNlYmE1NjY0MzAwNjU0MzAxMDhiYjM0MmJkYjBmYzQyYWUxYiBsZWdhY3ktdHJ1bmsKKzE0MDUyIGJkZTA2ZDlkNGNiNGYxNjJmYTgxZjZlMTE3MzJhMDU4MTJkYzY2MDQgbGVnYWN5LXRydW5rCisxNDA1MyBiZGFlNjFhZWJhNTVlODczOGNlM2YzMzk2NTdmZDgxNjc3MmE2MWFkIGxlZ2FjeS10cnVuaworMTQwNTQgNzAzNGI3NWFhZDAzYjcxNDZmZjUxNWU2Njg3NWEyMzlmZWZmNjQxOSBsZWdhY3ktdHJ1bmsKKzE0MDU1IDNiMjBlNTBmMmQ4M2EzMTczZDNhMmZlZGY1ZGJlZTA4N2NkMzU3ZTggbGVnYWN5LXRydW5rCisxNDA1NiBkMDIzZDFjOWFjNDkxNDZmMTE4NzViYTk1NWRlZmIxOWY2ZGE2YWUxIGxlZ2FjeS10cnVuaworMTQwNTcgY2ViMDZkZTIzZmFhOTJlMWU1YTFkODFmMjI5MjZlYjg3NThmYWJkZiBsZWdhY3ktdHJ1bmsKKzE0MDU4IDYxMmI4MjMwYzZlN2ZjNjk3MDFmNDFjODk2MjU2NDBmMjBjMzZiOTcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDU5IDAyYWUyZTU1NWVmOWQyNmVmZmZkNDc2NjcwNzgwYzJjMTFjNjhmMzcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDYwIDU5MTE0YmUyMWE3NWY4OTdjZDRiZDg3YTlhOGE3MTQwN2ZiYWFkZDkgbGVnYWN5LXRydW5rCisxNDA2MSBkZmUzNzE5ZDc4ZTlkYzZlZWFjYmUzNjRjNDBkZTZiYWY3NDQ0ZGIxIGxlZ2FjeS10cnVuaworMTQwNjIgMzNmN2IxMmM3NzZjZmI2ZDk0ZjNkZmM1YTE5MmM4ZjAxOTQ0YzZlOSBsZWdhY3ktdHJ1bmsKKzE0MDYzIGNkZTg4MzdjODI1OWFkMDlkMjZmZmM0NmExZTU5NTU1N2Y1NmNmNDMgbGVnYWN5LXRydW5rCisxNDA2NCA5MjNiNDNkYjM4MTQ2MmIyZjc0M2JiZTg4YjA0YTBmZDVhN2ZkMTZmIGxlZ2FjeS10cnVuaworMTQwNjUgMTZiMTFhY2QzZThjM2Q1OGQzZjhjZDhjMWUzZjgxMmNhYjQ2NWIxZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwNjYgNzU2MzUxNzA3Y2FjYzViY2QwYjllMDFkZDBjOTcwZmY2NGY2MzY3YSBsZWdhY3ktdHJ1bmsKKzE0MDY3IGQ3MTk5YjlmOTA5MTJhYTM3NTQyMDhlNDA3ZTU4YjlmMjYwMWI4N2EgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDY4IDRjNTAzMGQ0MmM2ZmZlY2QzMjdlOTNiYTZiZTRlNTE5N2IyMWFkYTUgbGVnYWN5LXRydW5rCisxNDA2OSBiMDRiZjI3NzRkMDVlZGM3NGU1MTliMzViNzUwODkwNjM1OTk3ODJlIGxlZ2FjeS10cnVuaworMTQwNzAgN2VmZWNjNWEzOTRjNjlhN2ZkMzAwNjRkNDI3NmZhNWFlNTRjMmVhOSBsZWdhY3ktdHJ1bmsKKzE0MDcxIDdlNWY1MWRjMWI0YjlhMTQ5NTcwMzQ2MzQ5MzUxZDE2OTc4MjEyODMgbGVnYWN5LXRydW5rCisxNDA3MiA5NjM2YTUwMmY3OTE3ZDFkMGQyMmM3ZDMwNWVjOWI3NGM2ODNkZjU1IGxlZ2FjeS10cnVuaworMTQwNzMgMzNlOGU3NDA5YjEyMDIwMzFhYTQ5OTU4ZDAzNTBlZTUwMzFkYzI1ZCBsZWdhY3ktdHJ1bmsKKzE0MDc0IGNhODhlNTlhNmViY2EzYjhkMzFiMTcxN2U0MmI1ZWI2MWYyOGE4MmIgbGVnYWN5LXRydW5rCisxNDA3NSAzYjcxY2RmYTAyYzc0MmMyNjJkOGFjMTk2MmQ4NDExNjFhOThhN2JhIGxlZ2FjeS10cnVuaworMTQwNzYgYzdmMGFhNDUxMGUyNjM4ZTA0OTk5ZTE4ZTNlNGUwMzE1ODcyMDRjYiBsZWdhY3ktdHJ1bmsKKzE0MDc3IGRhNmYxNjkzY2Q2NTEzYzAzMjA3NzgzYWFjYmRmNDZmMzJhMjgwM2YgbGVnYWN5LXRydW5rCisxNDA3OCA5ZWFjZDI5ZTYwNjYxODA0MmRlNTI4NGJjMDgzZmZjZTMzNWU5ZTJhIGxlZ2FjeS10cnVuaworMTQwNzkgM2YyNzQ0NzhjNGRhYTk4OWQwNzY3NDgxODc5ZDFhNTliZTU4YWNlZiBsZWdhY3ktdHJ1bmsKKzE0MDgwIDUzZDljMTU2MGZlMTRmM2ZiOTQwNGE1NzljYzAxZWJlYjEyMzNhMmUgbGVnYWN5LXRydW5rCisxNDA4MSA2NjQzODZkNjk2N2NhZWZjY2Q3YWM5YzJhMjQ3OTM2NzQyYTMyMmMyIGxlZ2FjeS10cnVuaworMTQwODIgOWNhMzA0NTNkZDRlNGU0NzYxYmZlZGIyNTMzMGIxMzEyOWFkMzk3ZSBsZWdhY3ktdHJ1bmsKKzE0MDgzIGY5Zjc1YjIxMmRhNDE4OWNmYWYyNzUwYzk2NTVmYTc1Y2IwOWEyNmYgbGVnYWN5LXRydW5rCisxNDA4NCAwMWY3YTEzNmM2NzdmMTE5ODNjMjVlMmUzNzg3OWMzY2FjMWY0MWY4IGxlZ2FjeS10cnVuaworMTQwODUgMTc1ZDdmNjgwNGQ3YTNiNmM5M2FkYTQ2N2QyYjE2ZTA3YWI2NWRjMCBsZWdhY3ktdHJ1bmsKKzE0MDg2IDcxMjgxZmY4YzZhMmJhNTYwOTE2NDQwYWNjMjhiZjE5MWVmOTVjNTIgbGVnYWN5LXRydW5rCisxNDA4NyBjYzQxMmRmZDc5Zjc3YzdkYjA4OGEyYmJjMTRiNTk1NmU1ZWMyMWRiIGxlZ2FjeS10cnVuaworMTQwODggMTZmYzcxN2JlYTNjOWFlYjM4MDYzMDdmMzllZTY1MWI2YzZmNDRhNSBsZWdhY3ktdHJ1bmsKKzE0MDg5IGMwZWI2M2M4ZjFmZWJiOGNhOThmMzBiOTFhYzYxYWI5MWVhN2RlOWMgbGVnYWN5LXRydW5rCisxNDA5MCBiYTA3ZmZmNzI1MTFiMmM5NDgxYzIwZTdmNjdiZTY3MDkxNjU1NmFkIGxlZ2FjeS10cnVuaworMTQwOTEgNGRiYjdjNjA5YWMxZjViNWQwMTM3MzdlYWM5YTgyNmQ1N2VlODIzOSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwOTIgY2JmNThjZDBiYjU3NDI5MjkyOTI2NjRiMWM5Mjc2ZWEzMGFkYzk4ZiBsZWdhY3ktdHJ1bmsKKzE0MDkzIDgyZmIwMmRlNTQyMTEzOTM3YzQzZWQ3YmRjM2IwNjBjNDlmOGQ3MjMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDk0IDVhMmYxM2E3YmQ0NWYwNzkzMTg1MTMwMjEyY2RkOWFhYzFiZTcwYTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDk1IDgwYWMwNzY4MWFiZWIxMjNiZTE4YWRhMTM2M2FhNDkxOWZmOTRjZGUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDk2IDkwNjZmNjI3ZDM2MmYxMTkzNTQwZTQ1MDQ0MTZjZjQxMjYzMGJlYzYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDk3IGI1YmJjY2I3NWYyZGQ5MzVkNmVkNWJiZTA0YzIyOTRjYzY5ZDg5NmYgbGVnYWN5LXRydW5rCisxNDA5OCBhNDZjOWNiNDIxMjNlOWU5Yzc1MGQxZjVjZTVjN2U1OTM2M2NlMzQyIGxlZ2FjeS10cnVuaworMTQwOTkgYjEyYTExYWUxMjNjZjg1YjA5ZDlmMjQzM2JiMmQyOWYwOTgzZTMyNyBsZWdhY3ktdHJ1bmsKKzE0MTAwIDVjMTM1Y2VhYjIwYzU0NGRkMDBhNThmMTdlOGZkYjlmNTFkOGI2NTggbGVnYWN5LXRydW5rCisxNDEwMSA3NjFkMjVjZmMyNTk0MTJkNThmYmUwOTc1NWM0ODJkYjNlY2U3MzUyIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDEwMiBmODg2ZmRlNzY1YTA1NzAwNDQ5MDk5YmY3OTEzN2M2MWIyZmIwOTQzIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDEwMyAyOGI4NTg1MzU0ZGU1ODA4OTQzZThlMzkzMjIxZmM4NDYxMjc5ZGY1IGxlZ2FjeS10cnVuaworMTQxMDQgNTM1ZjQwZjlmODdkYzY3OTg4OTc3MjM0NzBkYWIzZGM5NGE2ZjVkYiBsZWdhY3ktdHJ1bmsKKzE0MTA1IGY4M2I3NDI3M2RhMjNhMDA4YzI0NzU1NzM3NDViMjZiOWJlZGYyYTAgbGVnYWN5LXRydW5rCisxNDEwNiA4MDU2OWQ3MjUzMjkxYTAwZTEyYTUzMDUwNjBiYjAwY2EyNTE3MjQ2IGxlZ2FjeS10cnVuaworMTQxMDcgOGNmY2QyNzNmYTVjYTJiNjQ0ZWZmN2I3ZGUxMDk1NWQ4ZDMxNWRiOCBsZWdhY3ktdHJ1bmsKKzE0MTA4IDI5NTFlMmQyNzg1MjJlZDQwMzdjYjg1MjBmZDU0ZWFjZGY4YTYxZjkgbGVnYWN5LXRydW5rCisxNDEwOSBhODNkMmExY2UxOTdhMzlhNzIyZWU4MmNmYmMzNGEyNTFhOWM1MzViIGxlZ2FjeS10cnVuaworMTQxMTAgNjgzNjRiZjAwMmYxMzg5MGIyYThkNTQ1OTRiMWFkMTY1YTgyNmM3YiBsZWdhY3ktdHJ1bmsKKzE0MTExIGJiZDNhOGFkN2NiNzY2NzI5YTZjMTY0YmQ3NGQ2YjM0Yjk0ZDk0YzggbGVnYWN5LXRydW5rCisxNDExMiBiM2U1NWNlMGViZDc1ZjRiMzhhNDg5YzRiOWRiNDY3ZTYwY2YyMGE3IGxlZ2FjeS10cnVuaworMTQxMTMgYWZiOTg3YTg0NGRiYTIxNzgzNDFmNDYxMTRjODllNmIxMzk0ZmJkOCBsZWdhY3ktdHJ1bmsKKzE0MTE0IDI2MGQ0MGYyMDA3NzhmZWY4YzJiMGQ5M2M0Y2RkZmIxNzk4ZmZiYzQgbGVnYWN5LXRydW5rCisxNDExNSA0YzY5M2ViMzIzYzZmMzE3MzJlZjVlZDhjMzZiZWRkMDc0NjE0M2UyIGxlZ2FjeS10cnVuaworMTQxMTYgNTBmN2QzNDVmMTU3YTZlMDc1ZDE3ZDVlNDA4NGUwOWY4ZDlmNWIyYSBsZWdhY3ktdHJ1bmsKKzE0MTE3IGI2MDVjNDY2ZDFjMGU4ZmMxNjYzY2ZiMDY2ZjI1ZDI0MGNlOWVlZDcgbGVnYWN5LXRydW5rCisxNDExOCAxOGZjMDhmYzlmZDQ3OGUyZGM2MjE3ODg3M2UyNGVkZTFkODM0NmRlIGxlZ2FjeS10cnVuaworMTQxMTkgOGQ0Y2E3YmU3Mzc5OGM5NzAwMTk3NjA3YTg0ZjI3YTAxNTYzODFlNyBsZWdhY3ktdHJ1bmsKKzE0MTIwIDkwZmZjMDdmNWQxMGYwMWQ2ZjI0YTE1Mzc0YWVmOTRlODQwYmZmZWEgbGVnYWN5LXRydW5rCisxNDEyMSA3NTU1OTkwZThkYjlhNDEzYTI0NjJlZGQ5MjhjODdhMjc4Y2QxYTY4IGxlZ2FjeS10cnVuaworMTQxMjIgZjcwMWU5MTYzYzc2ZDEzNTI5OWU4MzRiY2FjOTNhZjJiYzBjY2Q0YiBsZWdhY3ktdHJ1bmsKKzE0MTIzIDIzNmQ4NDI4YzRjNTBkYmQxYjI4YWUwZTBlYThkYTE3NjE2NWY3MjggbGVnYWN5LXRydW5rCisxNDEyNCBjMDQyZTQxNDBmMWVlM2M4OWNhNGY2MWNjYjNmMTc2M2VlYzM4NjMzIGxlZ2FjeS10cnVuaworMTQxMjUgNzNlYzY2YWRkOTQ3OGRlY2NkZmM2NWI3ZTA4ZjU1MTQ1MmJkMjVjZiBsZWdhY3ktdHJ1bmsKKzE0MTI2IDgxOThjNTMxYmJjNDdkNTgxOTFiNGJjOTMwNzgyZjA4MzQ1NzViMjEgbGVnYWN5LXRydW5rCisxNDEyNyBlZWFjNTRjYmIxZGNlZDBlYzk3NjFkY2JkMDUzODcyNGFjMTY5MzczIGxlZ2FjeS10cnVuaworMTQxMjggODk0M2I3N2YyMTlhZjE3MjYwMTY5MTU2N2JlM2VhN2E5ODJmZTI3MCBsZWdhY3ktdHJ1bmsKKzE0MTI5IDM5ZDY2YTA2N2QwYmYzODYyMzEzY2NiOThlYTNhYTNlOWYwMWViN2QgbGVnYWN5LXRydW5rCisxNDEzMCBiZWY4NjY4NmI3NTJiN2FhMTgyMjE2MzhhZTVlYTk5NjA3NGViNTEwIGxlZ2FjeS10cnVuaworMTQxMzEgN2E0ZjYyNDljOTc4N2RjNmJhMjkxNjcyYjA5ZWEwNTI1MWZiNDFkMyBsZWdhY3ktdHJ1bmsKKzE0MTMyIGIxN2VmNTRjOTFjNDFmZTJiNDAzY2QyNzFjNTcwYzY1N2MwNzk0MjUgbGVnYWN5LXRydW5rCisxNDEzMyAxNTZiMWJmZWMzYjg5ZDdjMDYxMGVhN2FmNzJhMDM2ZDY5MTZmY2IwIGxlZ2FjeS10cnVuaworMTQxMzQgNDUyMGY2OTNiNzY1ZjY4MzI5M2ZhZWZlMmRjYjcwZTc5ZGMzN2MxMSBsZWdhY3ktdHJ1bmsKKzE0MTM1IDIyZjRjZjE2YjVhMzE2MThiMzMyZDg1MjhlNjc3MjcxZTc2MDJiNTQgbGVnYWN5LXRydW5rCisxNDEzNiAyY2I1NmU5OGNmNTIzYWM1ZThlMzM1NDQyYThjOWJjZmY1OTgxMmNkIGxlZ2FjeS10cnVuaworMTQxMzcgMWU3ZWZjMThhODlkYjQ1MTUwMmFlYzFmNGViZDQ3MmM2NmYxNDBhNyBsZWdhY3ktdHJ1bmsKKzE0MTM4IGM3MTE1NWNlMTIxNTlmYWYyYzBhZDE4MzJkOGYxMzAzMzNiODcxNTMgbGVnYWN5LXRydW5rCisxNDEzOSBjYTE1Y2NjMjZmMGMyZGI1OTJlYmY3ZjI0YjVhMDI2ZWJkZmRkOTM5IGxlZ2FjeS10cnVuaworMTQxNDAgOGVmZWI4NzEyMTViNDhmMWEzY2ZhZjIxNWFjMThmMWY2MWE5NTUxYiBsZWdhY3ktdHJ1bmsKKzE0MTQxIDA0YWZiODdkMTEwM2QxMmZjNjQ3YjBlYmIwNjdmOTNkZGQ5NDY3MjQgbGVnYWN5LXRydW5rCisxNDE0MiBlMjY2MGFmZGMzODFiOGM2NWYxOGVjMmNjYTRhNmRiODlkZDRmMGI4IGxlZ2FjeS10cnVuaworMTQxNDMgNTI1NWQwNTA0MGMyNTIyMjc1ZGQzMzU0ODIxMDdmMmVhZmUwZDM5NyBsZWdhY3ktdHJ1bmsKKzE0MTQ0IGQ0NzMxZTQzZmE2MDUzYTQyYzQzYTA5YjAwMTUzZjA3NDZjNzRiZTMgbGVnYWN5LXRydW5rCisxNDE0NSA2YWJjNTBiYjQ3MDc0ZDM4YmM4YWVjYmEzODQwMTI3MWNkODVkNTk4IGxlZ2FjeS10cnVuaworMTQxNDYgODg1ODIwZmE3ZTMxODc3OGFiNzZiZmZhYWVlNmE2NjFkNDg0ZDVmYiBsZWdhY3ktdHJ1bmsKKzE0MTQ3IDA3ZDJlYTcxYWNkYzY2MDA2MmRkZjk0Y2JjMGRmZDg3YTNkMWEyYmMgbGVnYWN5LXRydW5rCisxNDE0OCAyMmMwM2FiNGZiMTY1MjVkNTMzMmFmY2IzMjFmYTgwMGNjNzNjNTgzIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDE0OSA2YWRjM2M1ZmExODVhMTFhOWVjNDM2ZmE4NTExZjFiYjcwY2VlZDY4IGxlZ2FjeS10cnVuaworMTQxNTAgYzVhYmM4MWRkMWVlZDkwMjQ0OGQ1ZjAzNThhYmJiYmVkYmMzYTQ2NCBsZWdhY3ktdHJ1bmsKKzE0MTUxIGZkMGQzMWMzNDZiMmJiNDk4M2FiZDAzODY0NmIxYTZiNWExYWQ2MzggbGVnYWN5LXRydW5rCisxNDE1MiA1NWRmMzcwM2M5NTNiNjdlMDZkNTBjZTViM2Q0MjA4ZDY3MGIzZmNiIGxlZ2FjeS10cnVuaworMTQxNTMgZjU3ZmY0Mjg5ZmM2NGI2YjhkMjZkZTYxNDMxZjdlMGQ2N2Y3OWY0OCBsZWdhY3ktdHJ1bmsKKzE0MTU0IDU3YzE2ODVhY2IxNjczZWVmZTQwMmNhYmZmMDcyMTUxN2FiMzdmMWYgbGVnYWN5LXRydW5rCisxNDE1NSA0YzNlNTVjODI4ZDNiZTNhMmZjN2FjZWFhMDAyNmJlMGYzYTZiMjM5IGxlZ2FjeS10cnVuaworMTQxNTYgNDlkNmQzMDI3N2RhNzdjOWJkZjQ5ZGE0MmFiZGFiMDgyMWJjM2MwNCBsZWdhY3ktdHJ1bmsKKzE0MTU3IDY2YWEyMWY1MGVhMzUxMGNmZTBhYzI5YTVmOTM3MDU5ZTc4MTQxM2QgbGVnYWN5LXRydW5rCisxNDE1OSAzZmUyN2JiMmYxMTkzNDBhMDMxNGRlYmVkMDIyNWZjMmVkZDk2OWUzIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDE2MCAyNzNhNWU5YWE2MzNlMzAzZTJjNmI3ZTlmNTcwMTQxMjEzOTU0ZjhlIGxlZ2FjeS10cnVuaworMTQxNjEgODZhMTYzYTUzYjFjYWI3ZTg5NDg0ZjQyZWQzYjBhYTNiZTZjYjhhZCBsZWdhY3ktdHJ1bmsKKzE0MTYyIGYzNjExY2IzYTI2MTczNzQyMWYxOWU5MjdhZWE4ZTZlZjc2MzA0ZTYgbGVnYWN5LXRydW5rCisxNDE2MyAxNzc1OTAwZGIxMDg3NTRmNmY1MGJlZTM5YjM5OTY3NTY0Yjc0MjljIGxlZ2FjeS10cnVuaworMTQxNjQgNTdhYTI3N2Q3YTAwZGU3ZTMxZGVhOGJlMDgzMWM3YTc4NTU5ZmRkMSBsZWdhY3ktdHJ1bmsKKzE0MTY1IGM2MjA1YmM3MTBlZThiMmIxZDJkZDJmM2VkODU1NTg2NDgyMjUzYjUgbGVnYWN5LXRydW5rCisxNDE2NiAzZmZkZjA1ZjU2MzVkZjNiYzQ4ZmIwYjIwM2Y4ODNlOWFiMjE3MzQ4IGxlZ2FjeS10cnVuaworMTQxNjcgYWY1YWQ1ZWRiN2E1ZGExZjAxOGRlNzljYWFlZTliYzVkNTNlMGUzZCBsZWdhY3ktdHJ1bmsKKzE0MTY4IDRiZDRiZDNiNTk3YWJlNjVmOTY2YjdiYzk4YmE3OGU5ZWE4N2Y0MmYgbGVnYWN5LXRydW5rCisxNDE2OSA2NDhkOTdiZDNhYzZjMzc3NWM4ZDQxZGU4MGI0NWFiNjkxNmQzYjlmIGxlZ2FjeS10cnVuaworMTQxNzAgMTEzMWJmYTFhZDk5MzIzNjg5ZGY3YTIzYzJjN2RjZGMxNjE2YTY2ZCBsZWdhY3ktdHJ1bmsKKzE0MTcxIDFiMmUzZTJhMjQzNzkzZjYwZGEwMmRjZjk1YzhkNjAzOWY4ZDM4ZTUgbGVnYWN5LXRydW5rCisxNDE3MiBjYWIzZmY1NTFmNGJjNjI2NTRlMjhlMWFhNzY1ODg0N2E2ZTYwYTNkIGxlZ2FjeS10cnVuaworMTQxNzMgZjI0OTY1ZTc3Yjg1NTZiYWQ1ZGVmMGEwNGU4MTdhNjBlOTNkZTNiMSBsZWdhY3ktdHJ1bmsKKzE0MTc0IGUwZTAxMWU0MDczYzVhNWEyZGIxMzRmM2I1ZWRmMGEwZTkwNGIxODggbGVnYWN5LXRydW5rCisxNDE3NSAxNWU1YmQ4OTM5NWE3ZDUyMDdkMjM4MWY3MmJlMzE4YzJlNzNjYWY5IGxlZ2FjeS10cnVuaworMTQxNzYgMjM4YjQzOTg4MmU1MjNiOGQ1OTA2ZTliYTE2MDA5N2NkNzJkNmUxMiBsZWdhY3ktdHJ1bmsKKzE0MTc3IDAxMTcxYmU0NzY5ZDEzZTQzNzlmNWI3NDdlZmRlODdkM2NhOGZmZmIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MTc4IDc3MDYxOGQ5YTdmY2ZhMGQ3OGUyYWIzNzVmYmZmNTg5MzEyNGQwMzcgbGVnYWN5LXRydW5rCisxNDE3OSA3OGZlODdjZTBkZWQxMDYyMzcwMzYwOTk0ZDM3NzQ0ZDVlM2FkNWJlIGxlZ2FjeS10cnVuaworMTQxODAgMTQ1NjFlODM5NWJiOWRlZmU4NTNlMDY5M2YyMzgxMWMyMjA3OGRiOCBsZWdhY3ktdHJ1bmsKKzE0MTgxIDBiYWQ5ZDhiOTQ1ZjcyMjM5NGVmMGYxNzIyNzk2MDIzMDExMWQxOWIgbGVnYWN5LXRydW5rCisxNDE4MiA1NzM4YWQ3MzcxMTQ0NzM5YTJlZjNjM2E0ZjQyZDgyZDBiYTVjNGQzIGxlZ2FjeS10cnVuaworMTQxODMgMmFhYjQ3NDg0MDEyMjJlNzBiNmQ3ZTE1YjUwMzJlZTkwYzQ0NzVjZSBsZWdhY3ktdHJ1bmsKKzE0MTg0IDFjZmQ4MTc2OGU3MDM1ZDM5ZDMxNDc4MGIyN2EzODRmODUxMzdiZDIgbGVnYWN5LXRydW5rCisxNDE4NSBlY2Q2Njc5OGNmMGJkYmNkOTlmMzliY2RkNjU1MjBkYWM3YzZlYjU3IGxlZ2FjeS10cnVuaworMTQxODYgMTNkYWFkOGE2ZWVlMTA4Yzg0MTkzYzczMGQxYjc0YTQ4NmE5YjRlYyBsZWdhY3ktdHJ1bmsKKzE0MTg3IDY5MjE2YzExYTFiZDdjNjZmMjI0ZDkzNDQyNzg3MGY1ODJjMWM4OGUgbGVnYWN5LXRydW5rCisxNDE4OCA5ZWM3ZDk3ODgwMGQyNjY4ODNmZmU4ZmM0NTdhMjEyZDUwNzhkMjI2IGxlZ2FjeS10cnVuaworMTQxODkgYjM2MDQxMGQ2M2M2NzcxYjgxOGM3Y2M2YmRlN2ZjOTliNDRhYWY5MSBsZWdhY3ktdHJ1bmsKKzE0MTkwIDZkOGNiNjZjZDIzODU2NDVjMDU2N2EwNjhkZDY3YmYyNzY2MTQyNDMgbGVnYWN5LXRydW5rCisxNDE5MSAwODMxM2FjMTdjZjNkYWM2NjI1MjdkMTIzYWJiMjAxYzA0ZDMzOWJhIGxlZ2FjeS10cnVuaworMTQxOTIgNjc1Mjg0NDk3NDQzZTIyOTY5MTA4OWEwMjY0Y2EwYmMwOTE5N2Q2NiBsZWdhY3ktdHJ1bmsKKzE0MTkzIDIwYWYwMmE1N2E1ZjFlMzU4MTQ4OTdhNTQ0NTllMzY2ZTk2MjZiZmUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MTk0IDY4YzI1OWI2ZTZjZGY4Y2QzYTVmZWI3ZTJmMzNmYmJkMTIzNGY1YTMgbGVnYWN5LXRydW5rCisxNDE5NSA1OTAyNzJhYmU2OWM4NWJjM2ZmYzA1ZDJkYjg4MDY3ZTA3MjQxYjNhIGxlZ2FjeS10cnVuaworMTQxOTYgYmIxZjQzZjI1Y2UwOWE1M2I5YmFmZjNkMDU0YTllNDBiMzVmYjE5OSBsZWdhY3ktdHJ1bmsKKzE0MTk3IGE3MGRjNzNhMjhkZTA5MzI0NTBiNDRiOTJmZjY4ZTY0ZGM0YzlhMWMgbGVnYWN5LXRydW5rCisxNDE5OCAxMDdjZTI5YjA0YTQ1ZDg0ODM4MTUwMDU3NjU2MmE2OTQ5NTdkOTQ0IGxlZ2FjeS10cnVuaworMTQxOTkgNTI4NTU5YTBiMmYyNTIwZTk4NzFkOTA0NmNkODNkZjRhZWJiOTY2NyBsZWdhY3ktdHJ1bmsKKzE0MjAwIDkxMjQ1ZGM5NDBlYmFmMDIxZjQzNzhlNmViZWNkMzM4YzE5ZmZmODAgbGVnYWN5LXRydW5rCisxNDIwMSA4Y2Y3YjIzZmI5NTUxNmUwM2NiMTkwMmMyNjMwNWFjZTczMzEwYzI0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDIwMiBjODdiODYxYzZlYzYwNjExYjczMDliY2UwMTIxNzhkYjBjYzY3MDlhIGxlZ2FjeS10cnVuaworMTQyMDMgMGVjODAzY2JkODcyMjVhZTVmMDNmNGU3ZmI4ZDdkNDYwNDZjOTc4ZCBsZWdhY3ktdHJ1bmsKKzE0MjA0IDY1ZGMwODJmNzAwNGExZDNmYTU4OGRhNjgwM2RmMjEzNjU4OGJhOGYgbGVnYWN5LXRydW5rCisxNDIwNSA2ZjIxMTljZDk5ZDI1NmFjNjdlNzgyMzgzNWY1NjcxOWQxNjY1MjljIGxlZ2FjeS10cnVuaworMTQyMDYgM2MyMTNlMzcyYjIyODlmNzg3YTNlNmIyOTQ0ZGE3MTQ3OGUwODE4YSBsZWdhY3ktdHJ1bmsKKzE0MjA3IDkyYzUzYjBiMmVlNWEwZDY5MGM1NTA4YzlkN2Q5Mjg0MjQyNTc3NWIgbGVnYWN5LXRydW5rCisxNDIwOCBjNmUxNDNkZmM1YTMzMmIwNTkwYjBiNWNjNGY4OGYxYWY1M2JlODVjIGxlZ2FjeS10cnVuaworMTQyMDkgZDRlYTEzNjE3MzFiNjM1NjBhODEwYzYwNTY5MGM1NWI4NjJkZGEyYyBsZWdhY3ktdHJ1bmsKKzE0MjEwIDQ3ZjkzYTk2OTM2NmFiYTZlNDAzOTljODRlYTBiNTEwNDg5ZDk3YjIgbGVnYWN5LXRydW5rCisxNDIxMSBkN2U5NmNkZTZiNDdiZGQzZmI1NjY1M2I3YjYzYWNjZTFjMjQ2YmM2IGxlZ2FjeS10cnVuaworMTQyMTIgYzM1ZWVmOGEyMTcxYTUyNWRmYzczZmYzZmEwNjAxMjc0ODU4MzMwNCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMTMgNGUzMDk1YzRhZWEwZTc3YmNkYmFhNjEyMjZjYzU4MGM1NDczYWFlZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMTQgZGZlMmJmYzgwNTBjYjkyOTM4ZWQ2NGYzN2RkZWJhNGY5MGI0NGU3ZCBsZWdhY3ktdHJ1bmsKKzE0MjE1IGI4MjczZTVkZTM3NGJmYjA3NzEzM2Y3ZGZiYmVhZDQ5N2M3NjkwMDEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjE2IGNmN2EwZjFiN2I0OGI2YzhlZjgwYTg2NGJlN2Y5NTkxNWIxOTNmZDMgbGVnYWN5LXRydW5rCisxNDIxNyA0Y2Y5MjVmY2I1NjE5ZTZiNjc2N2Y0Y2QxNmRmNTA0MmU3YmVkNjBiIGxlZ2FjeS10cnVuaworMTQyMTggZjRjYzYwM2RkNzk5MWIzMWM0MWJkZDMxZmY2Zjc1NmJjMTIxYTllZCBsZWdhY3ktdHJ1bmsKKzE0MjE5IDgxNzU4OTE1NmYyMTYxN2Y4N2RmYTJjMWU0MTNiM2E3NGIxYTM4YTggbGVnYWN5LXRydW5rCisxNDIyMCA3Nzg1NDZkY2JhMDUyYmEwZmJkNWRiYTQ1MWQxZDBmODZjNWI1NDE4IGxlZ2FjeS10cnVuaworMTQyMjEgMzMyMjk4ODAxMGI1ZTE3MmQ0ODMxNDVlNDJjY2ViMDA5NTVmNWZhMiBsZWdhY3ktdHJ1bmsKKzE0MjIyIGE3ZjI3ZjMwMzk5NWRiNTRlMjE0ZjhiYTc4NzU2ZTBiNjlmNjM4YjkgbGVnYWN5LXRydW5rCisxNDIyMyBhOTRjMjk2YTZmY2NjYzgxMTU2ZDdlYjAyZTIwNmIwYjljNjIwOGUyIGxlZ2FjeS10cnVuaworMTQyMjQgY2Y3ZmNiMGM1YmRlMmIxZjUzOTg2NWRkNTRmNTEyZTY4YmVjNWM1MCBsZWdhY3ktdHJ1bmsKKzE0MjI1IDFmYzhlNjY3M2I0OGVkMjYyM2MzZWNjMjE1MDBhNDUwN2FhYjdlZWQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjI2IDg0ZmQzMWRkNGIxMjFiOWE3MjFlYWNlY2U2N2EwZWEyNGVkMjFmZWMgbGVnYWN5LXRydW5rCisxNDIyNyBhN2RmN2Q1MjNkMjkzNWJhNzYyNThhNzVmYjRkZWI5YzQyNzNjOWNmIGxlZ2FjeS10cnVuaworMTQyMjggYmNiMGQ2MzlhY2YyMWJkMjRkMWQ0ZWIzYTc0ZDUyMjZmMDg3MDEzNSBsZWdhY3ktdHJ1bmsKKzE0MjI5IDA2OWExZmQ0MGFiYmQ3NWQ2N2Y5MmFlOTIzOTgxM2Y5NTUyYmExZDEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjMwIDg2ODkwYzA3M2MzYmZiY2FlYmEyM2RjMWJmODA5NTcxMGY4MmI0MjEgbGVnYWN5LXRydW5rCisxNDIzMSAxZGNmOWI3NTkzNzRmMjEzYWE3OWMyODAyZGYyMGY2Y2FkNWE1ZTU0IGxlZ2FjeS10cnVuaworMTQyMzIgNGEzMjQ3ZWRkYzQzODY5Y2YwMmYxNDRhNGEwNDE1YmViYzdmODVlNSBsZWdhY3ktdHJ1bmsKKzE0MjMzIDQ3MmExN2YyY2E5ZmNlMzE3MDJhZmQ1MDQ1ZTZhZGY3Y2RhMTM2ZTMgbGVnYWN5LXRydW5rCisxNDIzNCBjMGQ0ZWU5MzkxYjY4MjI2MTZkZjBkN2M0YmU0NGMzNDI4ZTUzOTI3IGxlZ2FjeS10cnVuaworMTQyMzUgZDA5MzRhODAzOGY2YTk2N2JhZDg5ZDRlNTQxYmY1MmE0ODQwMmZlMSBsZWdhY3ktdHJ1bmsKKzE0MjM2IDg3MDVlYTM5MGRiYTA1MmIwOTRhZTRhMTI3YmMyYWNiZWNlNDNkZWIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjM3IGRlZDk2MzY3ZThjYTcyYmViMmQ0ODVhZGQ5ZTFhYmIzOWRhNDEwOWYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjM4IGQzMzUyMDgyMGZhZmFjNGRhYTlkMTJlMWQ1NzRhYzM5ZDYzMDBmZjUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjM5IGU4Mjc2NzMzZGE4ZmJlOGM4ZDBmNjE1YzE4NzNjZmE3ZTNhOTVhOWMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjQwIDBiMDE5NGQ0MzUyZjMxMjRjOGRlMjViYTY2ODRiZjQ5ZTIyMWRmNDMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjQxIDM4NTYwYTNhMzI0OTEyYzU2OTEzNDhlODU5NzcyN2MwZTgwN2MwYWYgbGVnYWN5LXRydW5rCisxNDI0MiA5OWEwMWNiM2RkYjVlZjVkMTViYzQxYzA3M2FlYmEwZjM3MTVkNjliIGxlZ2FjeS10cnVuaworMTQyNDMgZDg4OTk2ZTQ2Y2IyY2UwMTFmMGVmYmQwMTk3NTc2YTNmODEwMDg4ZCBsZWdhY3ktdHJ1bmsKKzE0MjQ0IDk5YzliMTI2NjkwZGZiMDUwMjM1ODQ3NmIwYTFkNmRjODI3YzYxNjUgbGVnYWN5LXRydW5rCisxNDI0NSA0YzNjYTZjMDViY2IzMjFmOGQ3ZmE5YjQwODJmM2U1MzZjNzZmMGRmIGxlZ2FjeS10cnVuaworMTQyNDYgMGFkMjMzMjQwMTZlNGVkMzEyZmI5N2Q0NjAzZTU2MGQzMWYzNzk5MyBsZWdhY3ktdHJ1bmsKKzE0MjQ3IGZkNWNlYWQ3MzNiNjgyODhkMDkzMTAwZDE1OGMxY2QzZTgyM2E3MjAgbGVnYWN5LXRydW5rCisxNDI0OCBkYjc1NmQzMWU3MjdhM2JiY2Q2ZTdjNWZhMjQyNDliZmEzOTE4ZTBkIGxlZ2FjeS10cnVuaworMTQyNDkgMDIzZWQyNjYzMDc0NjNjZDIwNWZmMWQ4MmRlZTlmMmIxMTJhY2M1YyBsZWdhY3ktdHJ1bmsKKzE0MjUwIDBkMjdlOGQ4ZjA0YzFhMjAyOTY0NGZmYTFlYzNkN2VmNTU2YjQ3OGUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjUxIDY3NjQ2OWY3NWFlNjcyM2Q3MWI2NWM2Y2ExMTIwOGI2ODY0MzEwZDMgbGVnYWN5LXRydW5rCisxNDI1MiBlYTYxMDQ0Zjk4YWVkODYyZjJlOTg3MGQ2MGQzZjI2MGQ2Y2UyZTRkIGxlZ2FjeS10cnVuaworMTQyNTMgYWQ4NTk0MDg0MGNiYjViNTg4YjdjMjgyYWEzYzgzMGUyNGM4YWJlMCBsZWdhY3ktdHJ1bmsKKzE0MjU0IGI4OTZjMTJjMmVlYTVjYTM0OTcwNWQ4ZjdiMTZkNjM0ZGUyNWM5MDUgbGVnYWN5LXRydW5rCisxNDI1NSBjNDM0Zjk0MjdjOWIwM2M1MTljNDdhYWM4N2YwNTA3OWQ5NzE0ODhkIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI1NiAyNGY4MTRkOWUzZmY1NDU0NWJlMjdmN2Q5NDgzMmQ3MzA1ODExZWNjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI1NyAwMDAxNzIyNWYwNzc5NTU1MTNjNzY4MmE1NzAxYWZlZTMyYTBhZDk5IGxlZ2FjeS10cnVuaworMTQyNTggMmFiNzRiMTkzMjg2ZDljOGRiYTYxZGE2ZjdmYTgzNjAxMWNiNGMyNiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyNTkgNTI4ZWYzOGIzZDNhNzY3YTJhODQ1ZWQ3NGI4MDllMmJmOWRiNmIwNiBsZWdhY3ktdHJ1bmsKKzE0MjYwIDdmZGZhYWE2NTgyNzA5NjQzMTUyZjdmMzI4MjJiMjYwY2I2NjQ1NDMgbGVnYWN5LXRydW5rCisxNDI2MSBlOTk4YjM1MGE0YmIxZGExMmJiOGVjZWMxNjg5Y2RlZGVmZTc4YTYzIGxlZ2FjeS10cnVuaworMTQyNjIgODI4MzU1NGYxMzE5YTRkM2FkMGNiZDI0YzE0M2M2YmNkNmEzYTNmMCBsZWdhY3ktdHJ1bmsKKzE0MjYzIDc3MDljOTgzNTM4MjhjMmJiMjNiYWJkZWFkMjcwOGQzMWZlNzY4NmYgbGVnYWN5LXRydW5rCisxNDI2NCBiN2YyNjI4NzNiZTA0YmJlNGFmYzk4NGY2NjI2YjM1MWRkODhkZTAyIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI2NSBhMjM4NmI5ZjQ3NGQ4YWIxYTU0N2ZkY2Q2MzcwYjk2ZGRhOWFjNmZjIGxlZ2FjeS10cnVuaworMTQyNjYgOTU1MTFmMzkzMTlhNGExZjc5YTQwMDlkMWFjZDU1ZGQxNTg4NmIzYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyNjcgYjgwMGUzNmFlZDRlYmRhYmVjY2RkZDI4NWUyMGZjZTExZDJjMjNiNyBsZWdhY3ktdHJ1bmsKKzE0MjY4IDQ0MmQ0Y2I0NDBjODgyMjg4NzgxMDYxMTE0ZWE1Y2FiOTQzN2JiMmMgbGVnYWN5LXRydW5rCisxNDI2OSBkZmY3YTAzZTdkMjRlZGEwOTE3YThmZTIyM2EyNWU2N2IxYjIxYjU1IGxlZ2FjeS10cnVuaworMTQyNzAgOGFmZDZmYjU4OGVlN2I5YzY1M2ZlODIyNTFmNjBiNGJhYWEzNjI1MyBsZWdhY3ktdHJ1bmsKKzE0MjcxIDVlNmU5ZTg5M2FjZGNlZmQ0M2FlYjUzOTZmZWIzMWZiMGQ5ZWU1NTQgbGVnYWN5LXRydW5rCisxNDI3MiBhMTI2ZmI1YzYyZGM3NDc4ODRmODI2OGE4ZjFmOWRmYjAyMzM2NDgyIGxlZ2FjeS10cnVuaworMTQyNzMgNDgzNzBjNjdkZDllNmM3ZmIxOTJkYTMyODBkYzYyZDUyNjVjOTIyZSBsZWdhY3ktdHJ1bmsKKzE0Mjc0IDQ4OTQ4M2I2NWIzYTNlYjFiYjk1MzM4NDM3NDNiZDQwOWE0ZjYxNjkgbGVnYWN5LXRydW5rCisxNDI3NSA2OWM5OTUxNjIyNzA2NDc0MWVmNWU3MGYzNmJjMjA2MzUxOTdjMjNhIGxlZ2FjeS10cnVuaworMTQyNzYgMDc1NmRmZWVjNGVlY2JkODM3N2VkNTE0M2M4ZDBiZTQzNGUxY2ExMiBsZWdhY3ktdHJ1bmsKKzE0Mjc3IDIxNmVmZGFkOWE0YjZmZjY1NDVlYjM3YWE1MGY4ZTE3Y2YzYmFmNWMgbGVnYWN5LXRydW5rCisxNDI3OCBmZjkxOTg1MzYyYzdjYzBkMjViY2ViMDJhNDE3ZWEzZWFjZGRlM2FjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI3OSBmOTRkNjYwMTY5MjFlOWQwZTA2ZTdhM2Y5Njc1YmIyZGUwMzkyMmUzIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI4MCA5MTliMzdjNTJhODQyYTI2NWQ2NmZlYTY4MDdjM2FkZjhlODRiZWY2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI4MSBjYmY0NDEwMmQ0MmFmYzVkYjgyYjg2MWQ0ZDJkM2FlZjg4ODIzMTNlIGxlZ2FjeS10cnVuaworMTQyODIgNmQxZDVmM2NjYTVmYjYyYjk3OGE2OWI1YmJjMDExZjc5NGY3OGQ3MyBsZWdhY3ktdHJ1bmsKKzE0MjgzIDY3YzYyMzljN2JjN2FmYmZhYjUxNWQxYWIxYWRjODU0ZjZhZDg4Y2QgbGVnYWN5LXRydW5rCisxNDI4NCA0N2Y3NWExN2IxMDM3NGIyY2Q0Y2FjNjBkY2JjYTQwMGI2MWY1ZDdiIGxlZ2FjeS10cnVuaworMTQyODUgYTk0NzEzZDZkOWY2YTgzMDA4NDRjMjJhNGViYWFjYmVkNThkODRhZSBsZWdhY3ktdHJ1bmsKKzE0Mjg2IDVlZmI2MmFjZjI2ZWYzZDkzZjdlNjJlYjc3YjdiNGRlYjc2NTFmZDkgbGVnYWN5LXRydW5rCisxNDI4OCBiNWFlYzMzNzkwYzhlNTUyNWRlNDI4MTgyMGRjZjMzYjIxZDM0NzhhIERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0Mjg5IDkzYmVkNjAzNTVlNGU5ZTU4NDg3NmJiZjIyNGUwZDhjYWE3ZGM0YTEgbGVnYWN5LXRydW5rCisxNDI5MCA4YjM0ODE4N2UzMDMzMjZjNDA0MDMzODFlYzhkMTE4Yzg1NzY3NjJhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI5MSBlZjFlNjNmNzc0NDU5OTBhYmQ0N2JiZDgzMDVhMjM2ZTgzZGJkYTUxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI5MiBmNjgwYWIxMDZlODYxZTA3ZTI2YjUxNTE1MmY0NjBhMzgyMGRmNTNjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI5MyA0N2Q3MGY0ZjYzNWYzMTBlOTFhZjRmM2QzMzE0Mzk2NjUwYmNiOTA2IGxlZ2FjeS10cnVuaworMTQyOTQgMWM0MzU0YmJhNDJiOWExOWJlZGRmMjA3YWI4OTY1Y2M2OWQzODBhZiBsZWdhY3ktdHJ1bmsKKzE0Mjk1IDA5ZGJiNDcwMzRlMGY1MmJmOTBkZjE5Zjk0Nzk3NmRiNzllMzJmNTYgbGVnYWN5LXRydW5rCisxNDI5NiA0YzE2ZjQyNWM3MTJjNDIzNzBmZmUzYjg3MTNhZTA0OGE5ZjBjMTY1IGxlZ2FjeS10cnVuaworMTQyOTcgZTM0OTkxMDIyNTcxNzUxMTJhMDFjYWVjMzEzYmZkYjQzYzNhMmY0MyBsZWdhY3ktdHJ1bmsKKzE0Mjk4IGY0ZjliNmI0NGU5ZTQ3YzczODgxNjIzYzUwMzg3MjRlM2VkOWU3MDUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Mjk5IDBkZDUyMGY0ZGNlOGRjMWRkZDQ2YjUwYzI4ZTM3YWY0OGZmYzg4OGUgbGVnYWN5LXRydW5rCisxNDMwMCA4Zjg4YjMxODQzYWJjNTI0NDlmMGY0Y2E3ZDgzM2IwMDRhODg1NDMxIGxlZ2FjeS10cnVuaworMTQzMDEgODkwYjExYWEyZWJjNzJmODY4NGUwYjgzMjljYjFiYjYzYzJjZDU0OSBsZWdhY3ktdHJ1bmsKKzE0MzAyIGRlNDRmNTExNzY4YWM2NjcwZGE1NGNmMWQ2ZmY3MDMzNTJkY2MzMjcgbGVnYWN5LXRydW5rCisxNDMwMyBiMGViNDIxZjhhZTliZWI3ZDhhMTc4YWUzZmMzMTVkNmM3YjYwYjg0IGxlZ2FjeS10cnVuaworMTQzMDQgNTg4MzcxM2UyZGEzYTYxZjEzOWE0Y2JlOGU4NTYyZTIzMWU0OTJkZSBsZWdhY3ktdHJ1bmsKKzE0MzA1IGRhY2FhMzRkZmNhNDZmOTQzYzBiOTk3ZmZmY2E4Yjc3YmM0NzExN2MgbGVnYWN5LXRydW5rCisxNDMwNiBkMzZkMzEyY2Y5MGJlZTg2MGRhZTc3YWIxMmU2ZDczZTBlNDk4ZmE3IGxlZ2FjeS10cnVuaworMTQzMDcgZmY3OWVlNDNiOGExZmE3NThlMGQ5OTRiYTIzZDE0ODk3ZGI4Y2I0YyBsZWdhY3ktdHJ1bmsKKzE0MzA4IDg2ZTdlNWVjYWY3OTYwYjE2MzEzODg5ZGQ4ZDY1MDJiZmNiYjI3MGIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MzA5IDQ5N2UwMTFlZjFhMzI1YzA3NWZlMmZmZjI3ODM1NDkwNTcwZWUzMjkgbGVnYWN5LXRydW5rCisxNDMxMCA3ZjI5MzM5ZWMzYTUwYTNhNTM0MjNhMjMzYjZhOGQxYTQyOTU2MjAxIGxlZ2FjeS10cnVuaworMTQzMTEgMzRmNTNjMzZiYTlhMWIxZDBjNTE3ZTUyODJjOGM2YzQxNDFjOTI1NyBsZWdhY3ktdHJ1bmsKKzE0MzEyIDcxNmZiNTk1NDhiZTQ5ZmMzOTY5YTRmYmRjNDgxMGI1NTdlMDNjMWMgbGVnYWN5LXRydW5rCisxNDMxMyBkMTBjMTA4ZDNmZDc2MjEyNTJmOTVkZGIxMzM2NGVlNmNjZWE2YzI5IGxlZ2FjeS10cnVuaworMTQzMTQgYjZmNTJjMWVmNmRhOGE4YWNiMGY3MjY2ZGQxY2Y0ZjY4YTFjZWUyNiBsZWdhY3ktdHJ1bmsKKzE0MzE1IDZmNDE0Njg0NjMzNzg3OGMwYmJmMTQ5ODJiMmMwYjQwMWQ1M2Q4N2UgbGVnYWN5LXRydW5rCisxNDMxNiA0YTIzY2M0OWUyYjA2NGQ5ZDI2ZjNhNDBjNDQ5N2E1M2UwOWRjOGIyIGxlZ2FjeS10cnVuaworMTQzMTcgZDkwMDBlZTk1OWU1MzdlOGQ5Mjg2MzRjMWYyMDcxOWRhN2RlNjI4NyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQzMTggNWQ2MjVhMzY1ZTc2NTdhMjkyODAzZjJjZGEyOWM5ZTg1NWFkYzJkNiBsZWdhY3ktdHJ1bmsKKzE0MzE5IDM4YzRkNjFkYjdlYTFmOTEwODRiMzUxNDQwNjU1NDQ5YTAxMzRmNTkgbGVnYWN5LXRydW5rCisxNDMyMCA2NTQ2ZWEwNmUxNTcwOTkyNTU3MWE0OTMwMmYxYWY3MDg0NWE3Yjg5IGxlZ2FjeS10cnVuaworMTQzMjEgOTI1MGU1ZDNhYTMxZmRkNGY5ZjZmY2ExOTFlMWNlYjYwNzIwOWJlMCBsZWdhY3ktdHJ1bmsKKzE0MzIyIGFiZmExY2IxZWQwNTJhNTQyZDJhODZhOWY5MTQxZTIxMDBjNWUzMzkgbGVnYWN5LXRydW5rCisxNDMyMyBiMzIyM2YwM2M5ZWE4OGRmOTVmNjY1ZWI4ZGEwYWZjYjhlMTdjYTAzIGxlZ2FjeS10cnVuaworMTQzMjQgNjI3YjRkYmExMTkyZTI1YjA5OGIwM2MxZjk0YjRiYzFjNjVlY2M4ZCBsZWdhY3ktdHJ1bmsKKzE0MzI1IGU0MjU1NTZlNjk4ZWJmYTMzNmE5ZjY4ZDQ1YzEwYTE1MWQ4ZDFkMWYgbGVnYWN5LXRydW5rCisxNDMyNiBlOTE2OWIxOWU5ZTVjNDQ3YzY1YWQ5ZWViNTIwZjQ3MzE1YzYzZjdlIGxlZ2FjeS10cnVuaworMTQzMjcgMTE2M2E3YTFjYzY3OWI4MjBhMDIxYmE4OTY2YmY1ZmI4N2E2MjdkNiBsZWdhY3ktdHJ1bmsKKzE0MzI4IDgzOWY4Zjg2Y2NhYTNhYTFlZTMxZDk0MTliZDkxNzBmYjQxOWE4ZGQgbGVnYWN5LXRydW5rCisxNDMyOSBmZGM5ZWViODllMGIzMGU2NjgxYTRhMjRlNjBlMzU0MThkMTIyZjdhIGxlZ2FjeS10cnVuaworMTQzMzAgZWIzODFmZjE3YTMxOThjMjMyNGM2NDRmMzE2NDI2MGE2ZWViYTdlMSBsZWdhY3ktdHJ1bmsKKzE0MzMxIDQyMjMzN2MzMjI5YWRlYTFmNzc2MWEwM2FiZmUzNWViNmM0Y2Q3Y2EgbGVnYWN5LXRydW5rCisxNDMzMiA2NzZlNjQ3YjFiZTZiOTQzYzk4NWVmNTYyYjlhMTg2MDc0MjE3NTYyIGxlZ2FjeS10cnVuaworMTQzMzMgNzFkMDM4ZGIwZGQyM2MyZjEyMDQ1NDJlM2IwZjAxYTRkNTAwNDA1NSBsZWdhY3ktdHJ1bmsKKzE0MzM0IGI3YWViYzg0Y2JjMTY0YTVlMDBjOWRlYzU3ZjhhZWZlNzNiOTliOGQgbGVnYWN5LXRydW5rCisxNDMzNSBhNTMyOTMyYWM0MDgzODdkMTk0YmE1N2JhMjdjZjJlMWQ5NWQyOGMxIGxlZ2FjeS10cnVuaworMTQzMzYgMWU5NTJkOTMzYWJiZWY1ZDNkOWJlMjYyM2U5ZDRiMDI1OWQxMDZmNyBsZWdhY3ktdHJ1bmsKKzE0MzM3IDk4NTcyMzQ5OGIxYmE2NDJjYzI2OTVlNjA5NzFlOGI5YmY4ZTZkMjkgbGVnYWN5LXRydW5rCisxNDMzOCA2MDI1YjA3YzVjMjk2NmU1NmMzNzBjOTAyOGIwNTk0YWVkM2Q5YjgzIGxlZ2FjeS10cnVuaworMTQzMzkgMGI0NmQyNTBlMTk5Y2ZhNmU4YTcxYjMwODJjYmM5MmNkZGJmMDZmYyBsZWdhY3ktdHJ1bmsKKzE0MzQwIDcyZWJmOTFkYWEwNWQ1YTczMGZhMzczOTFiNWFmZjBjNTM3YjZkOWEgbGVnYWN5LXRydW5rCisxNDM0MSBjOTc2ZDY5M2RkZWIzNjQwNWNkOTcxODAzNGFmZjllNmVmYTYxYzE1IGxlZ2FjeS10cnVuaworMTQzNDIgNzhmMDA5ODgxMmI3NGIyNTdiMjVjNTQxYjAyZTA0MDU1MzlkOTcwMiBsZWdhY3ktdHJ1bmsKKzE0MzQzIDZhOTlmZjA2OTQ1N2Q3MThkNDE4OTEwMGFlNWVhYzM3ZDExYzZjM2EgbGVnYWN5LXRydW5rCisxNDM0NCA4OWQzMDhmY2Y2ZjQ1ODM2M2I0ZGZmMDMyYzY5NDVmYzZlOWM5MzE2IGxlZ2FjeS10cnVuaworMTQzNDUgZTE5YTM1MDk5NGI3NWFmYzFiZDQ3OTFjMmMxYjdhMDVmZmVhMmJkMiBsZWdhY3ktdHJ1bmsKKzE0MzQ2IDY1M2E5MzUwYTgxNzMzOTY5YjNlNzAyNzYzZmRhNWUwNGQwN2FiMWIgbGVnYWN5LXRydW5rCisxNDM0NyA4M2QzNTFmOTQ4YWI3NWNlZGM4YTZlNmZiZTMyZGI4ZTRiMTk3NWM3IGxlZ2FjeS10cnVuaworMTQzNDggYTg2YmRmZTQ1NzI1ODRkNmM2YzY2YTJiMjljOGI5ZGNkMGI3YmMxMiBsZWdhY3ktdHJ1bmsKKzE0MzQ5IDIzZTdkOTc4MTAxMzExNTY5M2NkZTAyOTQwMzc5MDkzMDQ2NGUwNjggbGVnYWN5LXRydW5rCisxNDM1MCBkYTdmNWY2YTg0OWQwZWU4YTgyYWU3Njg5Y2YzNGNiODA4MTJhNGRlIGxlZ2FjeS10cnVuaworMTQzNTEgODQwZTE4ZWVjMDdmNGY1NWM4NzM5MDIyYTNiNWY1NmMzNGNmOTIwYyBsZWdhY3ktdHJ1bmsKKzE0MzUyIGM5NzhhMjNhNGRhYjEwNzU5MWU4ZDA3NjlmMDdhYmRjMTdmNDUxNmMgbGVnYWN5LXRydW5rCisxNDM1MyAzYzc3ZDZjNWM4ZTkxODBmMmZiYjlmYmMwOTM2MmQ4Yjc0NjhhZjA4IGxlZ2FjeS10cnVuaworMTQzNTQgNDVjMzViNTM3NmU0YmRiYjViYjNhNjFkYjcwYWI4OGU0YmQ1ZmE5ZSBsZWdhY3ktdHJ1bmsKKzE0MzU1IDc3NDY1ZDhiOWY1ZTI5MGRiYzM0MjdlN2NmMjJiMGZkZTdjZDQ0OWMgbGVnYWN5LXRydW5rCisxNDM1NiA3ZWYzOWUwNzEyMGE3ZGFiNWYzNGY2YmUzYTk0ZTAyZDllY2MxN2FjIGxlZ2FjeS10cnVuaworMTQzNTcgNzZhNjA5YTk0NzMwMjIzOGY1MTQ4YTUzNGI4ZjgyNTFmZDI0MTFmNSBsZWdhY3ktdHJ1bmsKKzE0MzU4IDVjMjc3MDEyNDkwNGVkYjNjMjNiMzExODg0MTQ4MTcwMGEyNDk0NjUgbGVnYWN5LXRydW5rCisxNDM1OSA3N2ZhMzMxNmJmNTgyNTQ3MDcwZmU0MGMwNzYxYjVjYWJiY2IzYzAzIGxlZ2FjeS10cnVuaworMTQzNjEgNGQ5MTIyMTIwOGZmYjBiNDk0MTEyNDBlNDAwMmQyZTgxYjkwYzdlNCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQzNjIgM2YxZGEwNWNlZDU1MzZhMjFhY2EyMTdkYjgwZTZhZmM0M2ZlYjhkNSBsZWdhY3ktdHJ1bmsKKzE0MzYzIDNkY2RkYjQ3OWE3ZTY0NzM5ZTBjOGFkNzhkMjIwZjEyYTc2ZjhkNDkgbGVnYWN5LXRydW5rCisxNDM2NCA2MDU2Y2Q1MDI5N2U0Yzk5MTkxNzhjZmRmNjgwMzcxYjVkOTE1N2IxIGxlZ2FjeS10cnVuaworMTQzNjUgZGZmYmQ5MjFlZWVkNDVjYjMwODRkN2M3YWU5NTQ2NTllYmZhOThjYyBsZWdhY3ktdHJ1bmsKKzE0MzY2IDU3ZmIzNTAxYWIyMmIyZjY0ODk4NDljNjBlNzViMGM1YWYyMDUwYTkgbGVnYWN5LXRydW5rCisxNDM2NyA2MzY3ZDgyOWYzNmJjMjBjOTZhNjU5Nzg4OGE3NzlhOTY5ZmE2Y2IzIGxlZ2FjeS10cnVuaworMTQzNjggZTM2MDZkMzA4ODZmMDM4MzdhYzcyZjIxZmQyOTc0MTAyZmIyMzE0OCBsZWdhY3ktdHJ1bmsKKzE0MzY5IDk0NWNlNjBkOTg3OTE3MzY4YjA5ODZjYWU4NThiODA2Y2M1ZTZmZjMgbGVnYWN5LXRydW5rCisxNDM3MCAwMjA1MjZlNzJlYWNmMjgzNTRjZDU1MWE2ZjcyMTg3YzUxMGQ3YjA3IGxlZ2FjeS10cnVuaworMTQzNzEgOTA5MmQzMGMyYmI3ZDU4NmY3OTA2YjFmMmZiNGZmNzFhZWI2MzlmYyBsZWdhY3ktdHJ1bmsKKzE0MzcyIDYyZmE4ZWM4NTk1ZjAyZWEyZjc4YWE1YzlhZTNjY2Q2MjJjYWMwNzkgbGVnYWN5LXRydW5rCisxNDM3MyBhNGVlZjA4MTNkNGNiZTBiZWY4N2FkYTRkMzg1MmY5MjYyMmJmYjBjIGxlZ2FjeS10cnVuaworMTQzNzQgOTg3NmE2NGMxODFhYWE2MTgyN2RhNzZiNWE5Y2FmMTIzODg2MjE3ZiBsZWdhY3ktdHJ1bmsKKzE0Mzc1IDM1Nzk5NzU1MDlkOTM1Nzk2MjllYTJjMTQ3Njg4NjYwNmIxMjYxNzggcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Mzc2IDRjZjg0ZGRmNTEyOTA0M2QyNjkxYTI3NDVmOWEzOThiYmRiMDg4MjIgbGVnYWN5LXRydW5rCisxNDM3NyAzY2RlMTJiYjNkYTVkNzRjN2I2MWNkNWVjMzk4MmVlNTllMWUxZWExIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDM3OCAwM2JkNThmOGM5ZDAzZTEyYjliYmE1YjRkZjFhZTJhZTdjNzIwMTFiIGxlZ2FjeS10cnVuaworMTQzNzkgYjAzNjllOGRhYTBiZmYzOTY1NDFjZGIwYjZkZjU5ZTg5ZWZjNDY5NSBsZWdhY3ktdHJ1bmsKKzE0MzgwIDFhMjViYzJkMzI3MmFkYzZhMWUxMGY0ODhjMWE3NWFhNGIxODc1OTIgbGVnYWN5LXRydW5rCisxNDM4MSAxMDMzYTI0YzRhNTI5OGYwZDA5NjkxMzZiZmYzZDdjZGViYjU2YzU2IGxlZ2FjeS10cnVuaworMTQzODIgMzZjNjc1MGNmMjI3NTg2M2YzZWNhMTZhZTE4ZjdjYTcxNGRiNTBiOSBsZWdhY3ktdHJ1bmsKKzE0MzgzIDhkNWI5MGViYjkxOWJiMTdiODk3MTkyNzE3OWQ0OWZhNDE2NTY1MjggbGVnYWN5LXRydW5rCisxNDM4NCA3MDdkMTZmMGQzNDVhYTgzNDNlMjhhOTM5NjViNmI0YjBiZDI4MTA4IGxlZ2FjeS10cnVuaworMTQzODUgN2Y1MGY3MWFlN2JmMjU2MTU2ZjdhZjQ3MWRjOWRlM2RlZDEyZGUzNyBsZWdhY3ktdHJ1bmsKKzE0Mzg2IDI4MzlkODRjZmQ5NjY2ZDk2ODg4ODJjNjY3YjhkZmE1ZTg0N2YxZjYgbGVnYWN5LXRydW5rCisxNDM4NyA4YjZlMmIyMzZiYWI1MjM0NDhmYzhjMTczZWE5MzBjM2VhMjNlNDRmIGxlZ2FjeS10cnVuaworMTQzODggNmI4ZGFmMzM3ZDZiYWJjY2YzNDkzZThkNGJiZDJjNjBhZTAzZWUxMiBsZWdhY3ktdHJ1bmsKKzE0Mzg5IGNhZThlOGVkZDNlMmFiMjljYTIwOGRmNjg1MzM1YjkzMGM0NzY5M2IgbGVnYWN5LXRydW5rCisxNDM5MCBkYzE5YjU5MDBkYWViYmRmMTg3M2M5MWNiZTY3OTQ5MmNkNTY5YmUzIGxlZ2FjeS10cnVuaworMTQzOTEgYTc0MjE0NzM5NmVlZTA0ZGJkNGUzZGQ1NWJkZDU5Mjk5MjY2OTM2NCBsZWdhY3ktdHJ1bmsKKzE0MzkyIGUyYmJjM2U0MGNkYjk2NGQ1NzhjYzJjMTcxYTA3MTA1NjhmZjg3NTggbGVnYWN5LXRydW5rCisxNDM5MyBlYzQ2ZmFhODM1OTU2N2RhMzI0NmJhMDI4YzRlOTNmMzVkMTI2ODliIGxlZ2FjeS10cnVuaworMTQzOTQgYjdjZmMyZGJhNTg2YmJhZDExYmQ4ODlkYjQ3NTFkNThiOTYzZTc0MCBsZWdhY3ktdHJ1bmsKKzE0Mzk1IDA0OWFiOGYzNGRmMTY0ZmE1M2EwNTBhYjc4OWU4Y2FiMzY1MzA0NDcgbGVnYWN5LXRydW5rCisxNDM5NiA0MWRjMjRiMjBhMTc1YTQyNDgzMDAwMGJhOTRjMDY4MGQ4NmEyMWMxIGxlZ2FjeS10cnVuaworMTQzOTcgYjZmMTI4N2UxOTcwNzMxZTVlZGM4ODNlYzdkMDY3YmQ3MmQ3MDRmMSBsZWdhY3ktdHJ1bmsKKzE0Mzk4IDVhZjAxNTcxODI4NWUzNTYxNGY1MjEyNTU2NWNiN2QwMGYxZDViOWQgbGVnYWN5LXRydW5rCisxNDM5OSA0ODY3MjFlYzlkZDc0NmZjNTQwZWE1NmZkZTYzMDIyYmZkODM0MjVmIGxlZ2FjeS10cnVuaworMTQ0MDAgYWU4ZGYwN2Q0YjZhMWI2ZWQ2ZDgwNjUwYzkxOWIxNmJhMzU4ZmM0NyBsZWdhY3ktdHJ1bmsKKzE0NDAxIGY4M2NkY2JjYTFiMDhmMTM2OTViMzlhYjUzNDljMGYwYjA5ZGE0MjYgbGVnYWN5LXRydW5rCisxNDQwMiA4NjA1MjQxODJiOWM4Y2FjZDFiZjVmNTQxMWIyYzFiNTUwOGVmMTNiIGxlZ2FjeS10cnVuaworMTQ0MDMgNzI4NDhjNmI2MTFjZWQ0MDRhMDBlNDI3M2UyOGU5NTVmMDlhNDI5OCBsZWdhY3ktdHJ1bmsKKzE0NDA0IGZkNDgxNGI1OWI3M2E2ODBkYzE2Njg1N2FkNWNhMDA0YWZjMjhmNjQgbGVnYWN5LXRydW5rCisxNDQwNSA3ZWIxMjdhZGUwNjk0ZWIyMDNmYzM3Mjk2MzVhODY4OWJiMjczYmNiIGxlZ2FjeS10cnVuaworMTQ0MDYgZDJhYjk1NTNmODcxMmUzZjYyNzQxNjE4ZGI3NWQxMTQ2MjFjZmRmMCBsZWdhY3ktdHJ1bmsKKzE0NDA3IDA5YTNhNjhjZTk2NDA0ZWE4ZDhiMzVhMzAxN2RiZDRkYWE0OGNiZWQgbGVnYWN5LXRydW5rCisxNDQwOSBlOTNhNWE5MDZkNzNhMjhmODRlOGQwMWRmZDQ2MjE0MGEwY2JlODA0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQxMCA3MzNlYzZlODY5ZGQzMTczYjc0ZjhkNjg0ZDFlNGYyMDkyMDExNGQ4IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQxMSA4YmM4NzEwODE3MjQ3NzhiMDRlZWE0OGM2NTdmMWNlOGQ2NjM0ODU0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQxMiBmNDVkOGIyNmJiMjQ1MzRkOTZjMTgxMGJlODRkYjljZTQ5MGZjNjhhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQxMyA3MWVjMzFmOTdmZmM3ZTA0ZTIxOWJhZmY0ZjAyMDU2YTNhZmU3NGNkIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQxNCBhNGJiMzg0M2E1ODIyMzE2NTllODU0MjE1OTI1MzVlZWFiMzVjY2JhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQxNSA0NTQxOTYxMTRmZDI0NTM1OWExMzBhMjE2M2YzNzdiMjgxN2E1ZjYzIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQxNiBjZWQ4ZGQ2MjI3ZGQyZDJjM2I1NTk0NjUyOTcyZDU4YTQ2YjFlMDdkIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQxNyA1YWYzYzViNzRjNTQ1ODkzMDE4ZTc1OTVkOWRhZjgzMDZlZDNhM2Q1IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQxOCAyOTVmZjNiMTc1MjJhMmVjNmU5ODMxMDM5YWI4MGFlNTczNzk1YTczIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQxOSA2M2NlMDlkZjYwN2RlMTlmNTgxMzM5NmQ1NWViNjUxNzdlYWQ5YzI5IGxlZ2FjeS10cnVuaworMTQ0MjAgZjUzZmVjMGM3NDJiZjViNDRiNGJjZTAzYWY0NzZhZWFlYWM0YTdhMyBsZWdhY3ktdHJ1bmsKKzE0NDIxIDI5ZTc0YzcwZGUxOGFmZDUzZDhlMDI4ZDIxZjBmYzRjMTkwMzU1ZmUgbGVnYWN5LXRydW5rCisxNDQyMiA1MGE2YWIzZmEwMzZhMmRkNjM4NjkxNDYzNmRhYTQ5MTI1ZDQzMGJlIGxlZ2FjeS10cnVuaworMTQ0MjMgMzY3OGRkNjg1ODY3MDVkOWI3OTdhMGJmZTNmNjNiYTAxOTY5MDk2MiBsZWdhY3ktdHJ1bmsKKzE0NDI0IDQ0OWIwNzRjMzA1MWIxNzFiZDE1Njk0YTQwM2RhYmM5NmI2N2EzNTEgbGVnYWN5LXRydW5rCisxNDQyNSBmZTk2MGFkM2RiNjViYzI0MDk2YmQyMWM1MGJjN2Y0OGU4MGZiOGJiIGxlZ2FjeS10cnVuaworMTQ0MjYgZTc3YTI4NmQwZWIxMDMwZGQzZDMxYTlmNTMyMTlhZWFmZTY1YzM3OCBsZWdhY3ktdHJ1bmsKKzE0NDI3IGMyMjg2YTFjMmYyOTU4NWI0YTYyZjU1Yjc5NGJhY2FmM2NlZTJhMjIgbGVnYWN5LXRydW5rCisxNDQyOCA1Nzc4OGRhMTY0ODg5Njk0ZjI3Yzk0NjdmYzI0MGEzYjM2Mjc3ODI2IGxlZ2FjeS10cnVuaworMTQ0MjkgZmZiZTBhMjNhMGYxNzU4ZmY5MzA2NTYwYzU0MjRlYWRkZjk2OTc0YSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0MzAgYmQxNjFhOTA4YjNiZGE1YTBjNDNhYjBlYzQzMmM2OWJhZmUwOGUxNyBsZWdhY3ktdHJ1bmsKKzE0NDMxIDU3MTY3NzMxZDEyNDJlMzg3MjQyODc3MTJhYjBiYmRlMGFmNTAzODEgbGVnYWN5LXRydW5rCisxNDQzMiAzMDIyODZiMTYwYTdhMjY4ZTJmY2M1ODc3NGY3MjM0YTkyZmNkNmU3IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQzMyA4ZDBiMmZlZDdkNTU5ODFjMmQwZDU5ZTBmNTUzNWMwM2YyMWM4NTI4IGxlZ2FjeS10cnVuaworMTQ0MzQgY2Y4ZmE5MmViZjNkOTRlNGRhMTBkNzc0OWFkYWY1ZGM5NGFlY2ZlYiBsZWdhY3ktdHJ1bmsKKzE0NDM1IGUyYjYzMzk5MWUwMTM1NDY3OTZlNjQzMmZjMTk5NWU2YjI0MjMwZTMgbGVnYWN5LXRydW5rCisxNDQzNiBmYmMxM2ZiODAzOGNhNTk1ZjRkNWNjNzI4NWRmY2U4NjQzOTk1OWIyIGxlZ2FjeS10cnVuaworMTQ0MzcgMjBjYTcyMzBhZTNmOGE5NTVmOGY5MzdmNTcwOGY2MDVlOWZkMDc0OCBsZWdhY3ktdHJ1bmsKKzE0NDM4IDZlNWVhN2RjZjFmNTViNjM3ZDMyZTBlMzNmZjczNDZhMzYzOGQxN2QgbGVnYWN5LXRydW5rCisxNDQzOSBlYWVkYTQ2MjFmN2RjZDU1NGU2Yzk5ZDViMzRlMGVkNmU1YTQ1M2M0IGxlZ2FjeS10cnVuaworMTQ0NDAgODRmNzdjMTlkMTQzYjRiMTQyZDVlMjIzZTRmMDk4NjFmNTI0YWI1YiBsZWdhY3ktdHJ1bmsKKzE0NDQxIDAzOTAyYmMwMjE0YTE1MWQ1OGM0OGZjNmI2MjFiNTI0NTI2NjRiNmMgbGVnYWN5LXRydW5rCisxNDQ0MiA1MGYxMjg4M2NkZDc5Y2JmNDM3NWYzOWU3NzA3Y2QyMWVkOTY5NGNhIGxlZ2FjeS10cnVuaworMTQ0NDMgNDc2ZWFhMzhlMmQ2YWE3N2U4ZjUyOTdiNTJhNjc2ODcwYjRjOTI5NyBsZWdhY3ktdHJ1bmsKKzE0NDQ0IGI3YmNhMDUwZDdkZWJjZmU2MGQzYWEwMDQ4NzFkNjk2MWQ5N2RiOTYgbGVnYWN5LXRydW5rCisxNDQ0NSBiZjE1MDFjZjVmMDgyZDliNWJkYzViNmU1YzczNTAyZjA4YjI4MzgwIGxlZ2FjeS10cnVuaworMTQ0NDYgYmU5NTAwZTY0NzdmZDMxNjA4NjU1Yjc5ZmI1ODRhNzI5YTExZThmNiBsZWdhY3ktdHJ1bmsKKzE0NDQ3IDE5ZGU2ZDE5NGFjZTk4MzdjYzZhNTUzOWIyMjRhNDViZWUyYjI1ODggcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDQ4IGFhMDdjNDdmNmVlODgyODEwNDM3M2NiZWI1NjUzYmM2OGExZjFjYzcgbGVnYWN5LXRydW5rCisxNDQ0OSBjNWZiNjUwNmVlYzQwZTI4YTM0ZWM2ZmU2MzZhYzFkZWYwNzA0ZTgwIGxlZ2FjeS10cnVuaworMTQ0NTAgZmMwZmNlYTE0YmEwNzIzZTZkZjIyYmI2MzM2OTQ5MjQzMjVjNWVhOSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NTEgODg3OGMwOTZmYTE5ZTczOWFmNjA1YWU3NWU2NmEwMDBhOWQ2ZGM0NSBsZWdhY3ktdHJ1bmsKKzE0NDUyIDdjMjU1ZTdhMjFjMmM1NzQ4OTEzYWQ4ZmNlNTFiYjY3MGE5ODI1NTMgbGVnYWN5LXRydW5rCisxNDQ1MyAzNjg0ZDVjNzkwM2MzZWRkZTc1ODU0ZWIyZmRlMmM4NzRlNTZmOTE3IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ1NCA3YmVkMWYwZWM2MWFjNTY4YTFmYjhhMGEyMmIxYmU5MTIxYjQ3YTgyIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ1NSBjNmY4NGNkMWZmNzA1YTBlNTQyNThiZDNiMzg4YWRmMmYwMjQ2ZDAzIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ1NiAzYjZkOGFkMjQ2OGUzNWEyN2NjMGI3ZDExM2Q5Y2VkZjNlZTM0YzFjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ1NyA0ZDVkNWNmYThhNTM5MzFiMTNhMGUzYjJmODdkMzYwZmY3YzQ4MTk3IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ1OCBlYjQ4M2Q5YTBmNjJjZjAyODk1ZDk0MzNmMDM4NjU0M2ZkM2JiNGM5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ1OSA0MDgwYzdhMGYxZWQ2YzlmOWQxNzExYWZjNjUxYWQ2M2JkNGQxY2E4IGxlZ2FjeS10cnVuaworMTQ0NjAgMGMwYmZhZGZmNzdhY2EzNDUxYWRkNDJkY2JlOTQyNjc3MjBjYzE4YyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NjEgYjJkNGIyZTAzYzk5NTNmYjcwOGExMGYwOTc5NTdhN2NmZDFhMTVlMyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NjIgOTRiNjQyMDc5Mzk4Y2E2NzY1Njg0Y2Q1Y2M3ZmRhOGIxNTQzOGQ5OCBsZWdhY3ktdHJ1bmsKKzE0NDYzIDcxOGQyMmRhMDAxN2Y1ZTI2ZDg1ZTg2NjZkODVhZWNiNzVkODI4OWEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDY0IGUyNTEyZDRmZDQ3MDgzMWZlNzQzNTY3NDE3MTZlMzZhMzNhODI4YTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDY1IDY4MzQ0M2Q4ZGEzYjlkNDM5ZTU0ZDlhYzQ3MTJkNGZmOGE0M2M0OTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDY2IGZlNzYzMmZiZDRmNTM2OWI3YzhhNGI3ZDIyZDQ1MTYzZTdlNWJiOGEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDY3IDU5NGE3NmJiOWZmMDMxNTc5Zjg1NmMxNjdmYjcwYzZjMDEwOTJjMzMgbGVnYWN5LXRydW5rCisxNDQ2OCBhMDMxMzAwM2NiMmQ1MjA2N2QwYzYwZGMwZmNhZjJmYmEwMWY4NWE0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ2OSBkZDBhZTEwYjcyMDYwZjU3NDgyOTgzN2YyYmVkM2E0MTg5M2Y5NzU1IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ3MCA5YzU5Y2JhMDRkODU4YWE2YTY3ZTg2OWZkMTJmODcwMGUwYTRhM2UxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ3MSA1MWMyMTc0NTQ5NTNmODIzNGFjNWYzM2Y1Y2FlMTk1NDEzODMyNzFjIGxlZ2FjeS10cnVuaworMTQ0NzIgM2U1MmYzZGJlM2RjZDlmMzZmODc4Yjg1NTQ2MzliNTkwOWUzNjM0NCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NzMgZWNkYzc4MTQ4ODExODk3MzMyYzFhZTBmZGIyODQ2YmNlZTM0MmFjYyBsZWdhY3ktdHJ1bmsKKzE0NDc0IDE4OWRlZTcwZDMyYTBjYjA3ZDU4ZGJiMTExZDAxNWNjMWExNDI0NzEgbGVnYWN5LXRydW5rCisxNDQ3NSBhMDQ2OTgzY2I1NzYxMmQ5MzhhNzBlOTRhYjE5ODlmMjBkYWY4MDVjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ3NiBiYTIxMTE3NDgwMzhlMDI4NWZiOTZjNWRmMDFmZWM0MTA4Y2U0MGFiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ3NyAzMjg3Y2NkMGRkMDEzM2VlNzRlZDNhOTMxMmQwOTU5MjcxNjgxNTVmIGxlZ2FjeS10cnVuaworMTQ0NzggZDIyOWJiNzkyNjU5MDAxMDNhOWEyZThmY2QwODM0MWMyOWI1MjkxNSBsZWdhY3ktdHJ1bmsKKzE0NDc5IDFiNzMxZWNkOWVkMzJiZGMyNThlNTdlZGNiMGEzZWFhY2Q3MWM5MDkgbGVnYWN5LXRydW5rCisxNDQ4MCAyYzcyNTZlMzk4OWNmOWIwNmYyODcyOTEwY2Y5MTY0ZDU0ZTU0NzI3IGxlZ2FjeS10cnVuaworMTQ0ODEgNzk3ZDk5NmY3YzZkYTAwOTRiZjdkNGI5MWIyMTMzN2VlZjM5NTUwMSBsZWdhY3ktdHJ1bmsKKzE0NDgyIGIwYzRmMjYxZTQ3MDMyNjM3NTczYzJhY2I5NWFkNmMzMGUxNTFiYTYgbGVnYWN5LXRydW5rCisxNDQ4MyBjYTUzNTM4NjdiZTIzMzIyMGNiMGVjN2Q0MzBkMzczNzU5MDEyZDYyIGxlZ2FjeS10cnVuaworMTQ0ODQgNzI2OTIxNjc0NmQwMmZhZGQ5NjMwOTY0ZTA2NGEzODQ2OGU3YzNhMyBsZWdhY3ktdHJ1bmsKKzE0NDg1IDkxY2ZiNmU2OGNhNDcxOWVhM2QwOWIzZjU4NGM1ODQ2ZjFmY2M1MDMgbGVnYWN5LXRydW5rCisxNDQ4NiAzMmY5NzVjYjlmNWZmMjIwNjU2YTQyMTYzMGRiZDc2NDhkYjc1YzFiIGxlZ2FjeS10cnVuaworMTQ0ODcgYmY2ZjE3NDZiMTBiYTBmZmExYTlhMGM3ZTRjMjc2NzZkMDk4YjRmYiBsZWdhY3ktdHJ1bmsKKzE0NDg4IGUxMTljMDI1MGIyMDkxNWQzMjYzNWU1ODU0YWYwNjMxMjkyM2RkNDYgbGVnYWN5LXRydW5rCisxNDQ4OSBjMDRlMWM3MGYwZjEyNmExMmU1YTFhZGNiNDI2YmVlMDlkOGE4MmViIGxlZ2FjeS10cnVuaworMTQ0OTAgZTEyM2U2NWVmMjU1Yjg0NjliMmIyOGMwZjUwMWE3YzVlMDBiYzNlZSBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDQ5MSAyNTE3NTY5YWExZGQ0MWI4ZWEyZTIzYWY4MjViMzEwN2Y0Y2MwMjI0IERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0NDkyIDEwNDczMTNjZWI1YmM5ODMzNDk5YWU0MTgwMWMyYjM4YjJmOTAyNzYgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ0OTMgMjUzZWM5NWYzOTFlMWM1YTk5ZjI2MzRlMjg3MTQxOTFhOGQyMjNiZiBsZWdhY3ktdHJ1bmsKKzE0NDk0IGU1Njc4MGI3NDM2YTZhNTc0MjU5NjBkZWE5YmQwMGM3YTNjNGFjNTAgbGVnYWN5LXRydW5rCisxNDQ5NSA4YjcwZWFhYWRmNGI0MGQ4NjM0NzBjMzExODEzYjQwOWM0MDMxOGQxIGxlZ2FjeS10cnVuaworMTQ0OTYgZDE1ZDhmNTE0MWE4ODhmYjE2NGE0ZDMzNjBiNTA4YTMwMDQyYTU5MCBsZWdhY3ktdHJ1bmsKKzE0NDk3IDZmOTc5OWExNDVlNTgyZTQ2NWU4ODc5NDU2OWY3ZWUxOWIxNDYyZDQgbGVnYWN5LXRydW5rCisxNDQ5OCBlYzA2MmM3YzM4YTU5ODM2NzEzYTM0Y2YxMGFjOWI0Mjk5YzE0MGE1IGxlZ2FjeS10cnVuaworMTQ0OTkgYjcwZGVlNzE1MzRhNmNhODIxYjdhYmJiZjUxMDliNzE3NWZjMzUzNSBsZWdhY3ktdHJ1bmsKKzE0NTAwIDBjZGU3MmY2ZWFjZWIwYmQ2OTBiNTc5NGUzNmZhZDI1MWVlMTg0MzAgbGVnYWN5LXRydW5rCisxNDUwMSA4OWI1Mjg5NTMxMGM3ZTI0N2I3YzUzMGJiYzYyYzE5NDg4YTZlZTcyIGxlZ2FjeS10cnVuaworMTQ1MDIgOTE5NzFlYjIxNTI3ZmE5NDFlMDg5OGI5ODhjZGYwMGJkZWExZThiMCBsZWdhY3ktdHJ1bmsKKzE0NTAzIGU2OTViNTIyOTVhODZhODFiMGQyYzY3OThlYjJmNjE1NmQyNGZjZTQgbGVnYWN5LXRydW5rCisxNDUwNCA3OWVhMTkwODVmYjZhYjhjODNiNzllZjZjZjBkZmVmNzhkMmRkYjdiIGxlZ2FjeS10cnVuaworMTQ1MDUgMTQ1MTUzOWEyN2VjZjRhZGVlNDVkODcyYjMyZGVhNmVjYmQ0NTc1YiBsZWdhY3ktdHJ1bmsKKzE0NTA2IDc4MWY0ODI5MWEyOTY5M2ZlNTAzZmM0MmJhMzJiODJhMmNjOTMzOWQgbGVnYWN5LXRydW5rCisxNDUwNyBiYmI3NTFmNTVkMDQ4ZWIwMGZhODQzODNlOTY1NDExMTFkMGI0YzIzIGxlZ2FjeS10cnVuaworMTQ1MDggMmQ4NzQwNjQ3ZTk5OGMzZTAzZmJhYWI5MzBlNGFjNTJiMDk3NjYwNyBsZWdhY3ktdHJ1bmsKKzE0NTA5IDk4NmE4NzM2M2E2NjkxMmEzZmY4MzI0NDM3YTIyNWM3MGE3NGNiYjcgbGVnYWN5LXRydW5rCisxNDUxMCBlMDA1OTQzNjZlYzRmNzQ0NjNlODcxOGY5MzIzYzAyYzllYzFhYjNkIGxlZ2FjeS10cnVuaworMTQ1MTEgNWUxZjRmN2Q3OWE3NTQwMDFhMzQ5NGVlNjNkZGFhOTlmZDE5YmI3ZiBsZWdhY3ktdHJ1bmsKKzE0NTEyIDQxYjg1YTI2Y2VlZGFhNGVmYzdlZjJkNWUxZTlkNWExMDNmN2Q5MTQgbGVnYWN5LXRydW5rCisxNDUxMyBjYTM1MGE3MTk4ODczM2VkNzU3ZWFmMTc4ZDdkZTk0ODUxNjQxZGVkIGxlZ2FjeS10cnVuaworMTQ1MTQgMmZhODllNjU3YTRlZGRlZjMxMDc5NDU3NjQxMmQzZjBjMzU5MzJkMCBsZWdhY3ktdHJ1bmsKKzE0NTE1IDA2OWVhNTczNmZmNjA3YTgxZjM4MjM0Yjk2Y2I1MDllM2IyZGQ0MjQgbGVnYWN5LXRydW5rCisxNDUxNiAwNjEwNGJjZjA2YTY0ZmIwODE5MDY2MmQ3NzA2OWI0NWJkNjhhMjA3IGxlZ2FjeS10cnVuaworMTQ1MTcgZDdlNjZlZjM0NWQwN2I5Y2NiYTljYzQzNGQ1Njc0Y2Q3ZmFkMGNiOCBsZWdhY3ktdHJ1bmsKKzE0NTE4IDMyYzU5ZTI4ODljNGNjNGFhMDE4NmMwMjZjMzY2NzE1MGFkYmRhMTEgbGVnYWN5LXRydW5rCisxNDUxOSBkN2VjYTViMDk2MGFiYjAyMWI0ODFlZTEyYTVjYTM5ODc5OGU3NzAyIGxlZ2FjeS10cnVuaworMTQ1MjAgMmZlOTU2OGJkZWYyYjkxYjFiNjA3ODE2Yzk5MTJkMmY3MjE5MDk0NyBsZWdhY3ktdHJ1bmsKKzE0NTIxIGM5MGFjNjk4MjE0ZGI3MzBiNTQ3YzVmZGJlNTViNWIxNWE4NTgwZDMgbGVnYWN5LXRydW5rCisxNDUyMiA0NDRiNzdjZWViZTY5MzEwZTJjZTdjMjZlZGFjMjNiOTlkNmFjOWI4IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDUyMyBiOTFkODQ4YzlhMWFkNGViNDNkYTZlNWRjZTY3ZDgyMmY0YmZjNGNmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDUyNCA3MTQyMzIwOWQ3ZmMyYzUxZjdlODEwYWYzZjNhMDc3NTc0NTBhYmZlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDUyNSA3ZWQxMDRjNDBkYjMzNjU5OWUyNWYwNTg2MWRkNTQ4ODNhM2MzNWE1IGxlZ2FjeS10cnVuaworMTQ1MjYgY2FiMDcxZTkyZjMyMWY1MmFjNmIzMmM5OTcxNjc5YmNjNGE3YTViYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1MjcgNTJhM2I0NjQ1NzhmMmU4NzIzNGYwN2RkNGE0NjYxNzhlNmNlMGFiOCBsZWdhY3ktdHJ1bmsKKzE0NTI4IDI4NjMwM2YwMDU0NmJjZWY1MDc3NjdiOTk2ZGFiODQ0YzBiZTFjZmQgbGVnYWN5LXRydW5rCisxNDUyOSBjMjdkM2U4YzQ1YzQ2NjY3Y2NhZDk4ZDUyYmNkMTM1Y2E4OGMzY2NhIGxlZ2FjeS10cnVuaworMTQ1MzAgNWQwODc5ZTFmZjM3YzU3ZWEwMjJjM2ZlYWM0ZDNlNTM4YjczZjg1NiBsZWdhY3ktdHJ1bmsKKzE0NTMxIDNkNzNmZmMxMDVkMGE0OGM5OGRjZGJhOWZlNTBmYTJjNGVkM2VjYzcgbGVnYWN5LXRydW5rCisxNDUzMiBhN2Q2MDllYTkwY2M2ODI2NjQwZWJjNTcxNGZmMmNlYzUzZmRmYzQ1IGxlZ2FjeS10cnVuaworMTQ1MzMgZDI3Njg0YWIyMTVhNmE1YWNiNDA3NDc0OTllYTQ5ZDJkMGYyODAxYiBsZWdhY3ktdHJ1bmsKKzE0NTM0IGVmZDYzMTVhZTY3OGQ2MmU1NTk3NDUzYWYyYmVhZmIyNzUxMmRiMWEgbGVnYWN5LXRydW5rCisxNDUzNSBkYzY1YzVmNmFkN2MxNGNhNDQ2OWY2ZWQyOGZmMTM0Y2IwOWVjMDg3IGxlZ2FjeS10cnVuaworMTQ1MzYgZDI0YWQ1NTAzODMxYTdkOTgxOTUwNzlhMDI2NjU0MGRlNmI4OGM5NSBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDUzNyA5YmVkMzM1OTljMzM5YzE1YTI2ZjEwYjM5ZTAzODNmOTJjMjJjYzU2IERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0NTM4IDljOTNmMTBkY2Q2OTY4Y2Q5MDRjYzY0ZGRiOWMzNTliYzliZjk5OTkgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ1MzkgOGVlNzU5ZDc5OTY0NmVkMTE0MjJmZWUxZmQyMDczN2IyZWVmMzY1ZiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NDAgMGM0NzI5ZTM4YzNkYjhmNDhkMGRkZTgyNTJkNWM5YjI5ZjJmOWEwMCBsZWdhY3ktdHJ1bmsKKzE0NTQxIDU0Y2YzYmIzYjhiN2NmNGM3MTAxYzE3MjM2OTE0ZTk4NDRjZmRkZjggcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTQyIDEwZmJmZDA3ZjM4OTQxYjNkYjNjMDZlNWQzMmVkYzA4MzUyNTZhZTUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTQzIGEzOGZiY2I3ZDMzNTY4MGY2YTU5MWFhZDE0ZWIxMzI5YzViZWU5MGQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTQ0IGUzOTlhYmNjNWRlNjMwZWE4NTVjZGI2MzA3ODUzMTFhYTBiNmMzNzggcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTQ1IDc1OGE4N2Y0Y2IyYzllOGQ4YjY3OTQ4M2U4Mzg5YmE0NjU3ZGFiZWIgbGVnYWN5LXRydW5rCisxNDU0NiAzOWJiMDE3NTUwNzkwOTcyM2MyNDMwOGFiNjdkMzZmMTliYjcxMTA3IGxlZ2FjeS10cnVuaworMTQ1NDcgMjcwYTExNDg4YzZjNWMzZDJlYzk4ZTUxNTVlNjFjMzQzY2RkZDZlYiBsZWdhY3ktdHJ1bmsKKzE0NTQ4IDgxZjEwNjllMTU1ODY5OTM5YzczZDEyMzk2YzM1YzExYWQzZGJmMDAgbGVnYWN5LXRydW5rCisxNDU0OSBhNDU3MGY0MDk4NzEwZjRmZDdlYzMxMWJkY2VhODhlYzQwZjA5OTU1IGxlZ2FjeS10cnVuaworMTQ1NTAgMWE0OWI2MTQ0ZjBkZTMyNWI1OTc4ZDEyYzY0ODNlMmUwM2NkMDBjNiBsZWdhY3ktdHJ1bmsKKzE0NTUxIDk0MzJkOGIxNWM5NzE0ZmQyNzg0YzcwYzcxY2E4NmIyNGY5Mzk2ZDEgbGVnYWN5LXRydW5rCisxNDU1MiBlODJhOTYzMzA3OGJjOTI1NWY4YzNkNTUyNTRlZmE0NzZkMjk1ZjI4IGxlZ2FjeS10cnVuaworMTQ1NTMgMDAxNjYzM2ZiZDMyMGExYzU4NjdkMzU5MmFkNjQ2YWExNTQ1MDBlMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NTQgMjMxMDhjY2UxNjliNDVkZmJiM2VkYWM5MjY1YzdiZTAyNjk4ZDNiNCBsZWdhY3ktdHJ1bmsKKzE0NTU1IGVmOGIwNjJiNTc5ODA0NGZmMzMzNGZhZGQxMGE3NTUwODgzY2Q1ZWEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTU2IDYxMGQ3ZDY0MjkxN2U1ZmNiZDEzYjY0Njc5Y2UwMjQ3Yzc3NTUxYjIgbGVnYWN5LXRydW5rCisxNDU1NyA3ODQyZWNmNWI0MjQ4OWYyYjIzMzhlMmZmMzg2YjllMWM3NTAwMGM4IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU1OCBjZmNmYWEzOTUwZDY0MmM5YTIwYjMyOGE0M2Q2M2Y2ODM4MDZhM2UyIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU1OSA1OGQxZTc3OTE5ODA1Yjg3ZTdlMDFhNjQwZmIwNjNkOGJkMjE2ZGM2IGxlZ2FjeS10cnVuaworMTQ1NjAgY2Q1N2Y3NzZjMWRmODUxNWY3NzhhMDE1MTdiYjc0Yjk5M2MzMGRhOSBsZWdhY3ktdHJ1bmsKKzE0NTYxIDI4MDJmYjUyZTk5YmM3OWE2NWJkMDM0ZjFlNjczMTA4YmE5YTBmOTYgbGVnYWN5LXRydW5rCisxNDU2MiAwMTdlNTkyYzBmZDJjM2U4NTNjNzQzOTA4MTdlMzE2NzYzNTk2NWJkIGxlZ2FjeS10cnVuaworMTQ1NjMgNDY3OWJjZWY3YTRmNjQ1YWIzOWVmOGI1YjE4MjEzYWRlMTUwZTA3MCBsZWdhY3ktdHJ1bmsKKzE0NTY0IDcyM2VmY2RjY2UxYmRhNWQwNmIyYmFmYzkyM2I5NWEwNTY5MzQzYjcgbGVnYWN5LXRydW5rCisxNDU2NSA2MmViZThjNzE1NjU5YjFmZDI1OTlhOWQ2YzJkMzA3ZGM3MjdiZmNmIGxlZ2FjeS10cnVuaworMTQ1NjYgMDFkNWI3ZDExZmMxMjhlMmNlMTViMDIzNTgyMWI0MzFlYzg3YThmOSBsZWdhY3ktdHJ1bmsKKzE0NTY3IDY5MzJlMThhZmY5OGFkN2YxNmYwOWQ5M2RiNDcwY2ZmYWFiYzg5NTMgbGVnYWN5LXRydW5rCisxNDU2OCBmODUxOGYwNjBiZWRmOGY4ZjVjZmVlZWJmYzZhOGMwOTZkYWUwMzVkIGxlZ2FjeS10cnVuaworMTQ1NjkgYTQwYzJmZWNkNTI2OWYzYWU4MjYxMzg4M2VkYWI2MjhhYWIzMDg0MiBsZWdhY3ktdHJ1bmsKKzE0NTcwIDBhNGJhY2NiZTlmZTkzNGQwMWFhM2JlMDg1YjQ0MzcxYTRjN2RiYzAgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTcxIDQ5YjEwOWI0NTBkYTdkNzZhOTEzMjAxMWIyMDA3MWNkNTU0OThjOTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTcyIGFiMWVmMWFhNDAyZWE1MjM2YmUyNWFmNDA1Yjc5MTE2NGFiYzdjNTAgbGVnYWN5LXRydW5rCisxNDU3MyBiM2NhM2NhYTM3NGM1MThiYjU4ZGM1Yjg4ZGM0ZTZhODcxMWVkZGU1IGxlZ2FjeS10cnVuaworMTQ1NzQgMTFhZTFlZmVjODcxYTM3YTBjZjdlNTljNTY5M2RlMDcwYjM2MjhkMyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NzUgZDc0ZTEyZDQ2NTgwZDM3YjE3NTU5MjVlNWNmNDJmNTk0NjBjNjRkYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NzYgMDBhOWVmNzQ0N2JhYTUzOTMyNTlmOGY3M2Q3YTc1MjMyM2FiYjdkMiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NzcgODU1Yzc4ZjViNWRkZDRmYzUzYWY2YjI4YTg1YjVjYWNlOWU3ZmFlMyBsZWdhY3ktdHJ1bmsKKzE0NTc4IDk5NDhmZDUzMmQzYjRjYjJhODQyZGZhNzZlYjllZjlkZjg3Zjk2ODAgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTc5IGI5NzVhMDU2ZGViNjY2NWM3ZDliODMxNWM0ZmJlNjcyMTQ4ZWI1YWQgbGVnYWN5LXRydW5rCisxNDU4MCAwZWNhNTY3ZTUzMmMyODRiNmY1ZDNhZmNlMTExY2RlNjk2OTA1MTIwIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU4MSBmZTQ4NWE1ZDA0M2ZjN2JiN2Y1YjU0NzkxNDdiMWQ0YmI4MTU0NGYyIGxlZ2FjeS10cnVuaworMTQ1ODIgYzBmMThlMTFmNGVmMzI5MjBkODViZGFlZTc4YWY3MzcwNjY4ZWIyNCBsZWdhY3ktdHJ1bmsKKzE0NTgzIGMxNjcxMWZkZDk3MjQ0MzNjN2M5OTAxM2JmNGUzMjI0MGFjM2RkMjAgbGVnYWN5LXRydW5rCisxNDU4NCAxYzhhOWZhYTM1MDFlYzQ3MjkxZmZiNWZjOGUyNjY1MzFjOTEyYjRiIGxlZ2FjeS10cnVuaworMTQ1ODUgYzlkODdhN2E3MGIwYTI5MzI0OTMzNDViYjNhMzNhNWFiMTAxMTM3MCBsZWdhY3ktdHJ1bmsKKzE0NTg2IGE2ZTVmMDI3NGU1MTcyYzVkMDhlMzJhMjMyZTY1ZWU3YWM4NWExZDAgbGVnYWN5LXRydW5rCisxNDU4NyA3OTIyZDA4NDI2Y2FhZTdhM2I3ZDE4NTVjMDEzNTU3MGU5NjczM2RmIGxlZ2FjeS10cnVuaworMTQ1ODggZDEzNTk4MzFlNWYyNjRjOWFiMzg4ODlhMzI1NmJmYjNkZDI2ODk5ZSBsZWdhY3ktdHJ1bmsKKzE0NTg5IDViMDNjNTI3ODMxN2Q2NDlhNDBiNGFkNDk4MGQ3ZmRmZDY1MmM5MGUgbGVnYWN5LXRydW5rCisxNDU5MCAxNWNiYjU3Y2E3NDcyNTdkZTBmYjVjMDRkMDY5OTFhNDlkMDUxOGQwIGxlZ2FjeS10cnVuaworMTQ1OTEgYTg1MWVmMzI2ZDkzMmY3MTQ3OGQ4ZGE2YzJkMmNkY2QxMmI2NGQ5MiBsZWdhY3ktdHJ1bmsKKzE0NTkyIDdjYjQ5MWUzOTllNjE5ZjRlN2Y1NTk1YWM0MGRmMzc3YTc3NzZmYWEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTkzIDI5YzVjNTQxNWRhNzFkZWNiZWJjZDgyNWIzMDhhM2E5MzA2ZGM1MzQgbGVnYWN5LXRydW5rCisxNDU5NCBmODJiOTIzYTdhOTZjMmFmNWQ0MGRmMzliYWQ0YjEwNTA1ZThkNWRlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU5NSBjZTI2OThkOGRmZWJmNmQ4ODUyYTQ2MGQ1MmI1YTQ2MzQ1NGY5NjJlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU5NiAwNmZiMmRkMzhkN2QyOTk5MGFjYjcyY2YyNjc4M2EzY2YxOGI0ZTBiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU5NyBjZmVjMTFiNGE4YTcyY2JlOGE3MmY3MDdhMzAwZmQ4MzBhNmY5MTkxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU5OCBhYTBkMGIxZjFiZTNlMTFiNjJhMTkwMmRjZDc0MWNiNWIyY2EzMDU3IGxlZ2FjeS10cnVuaworMTQ1OTkgOGNjNDQyOGM3YmFkOTFlNjRmZDlhMjRlOGQ1MDJmYWJiZTU1MWYzYiBsZWdhY3ktdHJ1bmsKKzE0NjAwIGQwOTdiYzVhYTdmMzQ0NDRlNWY0ZTQ5OTZlMmRiYjlhMjAyMDY4YmMgbGVnYWN5LXRydW5rCisxNDYwMSA0YjhiYzlhYjgxNzU1NTZmOWU4NzkzOGU4Y2RiYjc5YzZlZTM3YzQyIGxlZ2FjeS10cnVuaworMTQ2MDIgMmE2MjgwNjc5NjliOTNjYTU2MDRhM2I3ZmYyZjQyOTMyYWY5ZGZjZiBsZWdhY3ktdHJ1bmsKKzE0NjAzIGE0NjlhYThiMzMyYTU4NDYzNTU3NzFlZDFlODg5YTk5YTA2MTZiZmMgbGVnYWN5LXRydW5rCisxNDYwNCA3OWI2YTZhODgyZDllOGQ1NzEzNzA5MWRhYWFkNzA2ZmZhYTNlYTc4IGxlZ2FjeS10cnVuaworMTQ2MDUgYmRiNWY2YTUyNGI1ZTNmNjQxNzkxOTc5ODgzYzI1ZGJlOTAxNzU0OCBsZWdhY3ktdHJ1bmsKKzE0NjA2IDlkOGY0N2Y4NDQ3Zjk3NjIwMTM4ZDE0ZmFjZjZkYTJkNDdkYmUwMzEgbGVnYWN5LXRydW5rCisxNDYwNyAxYjU0YjIxMzQ2ZDI0ZmEyNDY5MGE3NjJjZWYxYjdjYmEyOGRiMzBmIGxlZ2FjeS10cnVuaworMTQ2MDggYWVmNWE3YzYyMjkxZWI2OWVlNDM4ZTg3YzFiYWEzMmMyNGJkZjI1NyBsZWdhY3ktdHJ1bmsKKzE0NjA5IDI1YWRjNWM4ZGQ2ODAwNGUzZmYxNzgwZDYwMDNjMGExYTkxOTIxY2UgbGVnYWN5LXRydW5rCisxNDYxMCA2OGUwZWYwNTI4MTUwNThmMDIyNTQ3OGI0OTM5ZDJlOTY5ZWQyODA5IGxlZ2FjeS10cnVuaworMTQ2MTEgN2JkOTdjM2RkNDMyZmQ5NDU5OGQ4Y2NkYzVkZDMyNGY2MTYwZjlhOCBsZWdhY3ktdHJ1bmsKKzE0NjEyIGM5NDU3MmE1MDk5NTIzMThlYTEzODgzMTQwNmE4ZDU4ZGM0YmZkYjQgbGVnYWN5LXRydW5rCisxNDYxMyBjMGQzNmY5MTZhZmQ4Y2E3MDFkZDU2NTg4ZDY0MWY5MmNhY2RhZTQxIGxlZ2FjeS10cnVuaworMTQ2MTQgZWY5OGVlNmFlYjQyYWUwMWU0Y2MwZjY4Zjk2NTNiZTExYWEzNzJmMCBsZWdhY3ktdHJ1bmsKKzE0NjE1IDA0NTZhOGMyZWJmN2MyYTk3MGYxNjczNjE2MmJiMzE0YmQxOTAyMGEgbGVnYWN5LXRydW5rCisxNDYxNiA3M2RmYmVlMTUwMjcxZjNhN2EwYmRmODE5MjNmNzY5Y2JhNjA4NTE3IGxlZ2FjeS10cnVuaworMTQ2MTcgZGU4NDA0NTczZmU1MTJjN2NkYTY5Y2M2MDRjYzhjOTNjMTUxMTEyNCBsZWdhY3ktdHJ1bmsKKzE0NjE4IGY2ZDFkMGZkYzFjN2M3MjAxYjQ5MGFjNzU5NjA3ODQwNzczN2FjNjcgbGVnYWN5LXRydW5rCisxNDYxOSA0MjFiMTYyMGY1ODJmOWE3YjgzZmMzYjkwY2FhOGVmOTQ5ZmIzMjU0IGxlZ2FjeS10cnVuaworMTQ2MjAgODAyMzcwYTYwZWY3ZTNkNzFmNGFhN2RiYmNiNGZlNmI5Njc1OGE0ZiBsZWdhY3ktdHJ1bmsKKzE0NjIxIDczNGYzYzA3YTZiYjlmM2Q1Y2MyNzkyMmVkMDcyYzY5MjBlNjkwMWIgbGVnYWN5LXRydW5rCisxNDYyMiAxYTU4ZTZmYzNhOTU0ZGY3OWY4NWYzOGQxMzAzMzgwMTI0ODU1OTU1IGxlZ2FjeS10cnVuaworMTQ2MjMgODI2NjkwYmExYWU2OWI4YjU4NGU0ZjY5NDdkNmZlZGM1NWUzM2UyMiBsZWdhY3ktdHJ1bmsKKzE0NjI0IDJhNDBlOWNhZTg1OWRjYTA0ODhmZGNkZTgxNjhjOGY1MDk4NWMyMmQgbGVnYWN5LXRydW5rCisxNDYyNSBkMDQwNDc4MGYwM2JmNGUyZjJhMzIwOGNlZWE2YWFhZGIzNGQ2MmIyIGxlZ2FjeS10cnVuaworMTQ2MjYgNWU0OGQ4M2MwZmNlMTcyMDQxOWJhZWU2MzdhM2QwNDc3MzM1OTBkNiBsZWdhY3ktdHJ1bmsKKzE0NjI3IGEzOTkyYTc4OWUyZTdiYjE1N2U3YjI5OGE1N2U4NzhhNzFlYzQ1NzkgbGVnYWN5LXRydW5rCisxNDYyOCA1YjMzZmNhMDJiNzg1YmI2ZGI3MDE1YzExNTkxNzAyZDU4ZDYwNTRlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDYyOSBhZGRlYTExNTdhYTdmOTA3Mjk4YmFiOWU5OTcwNTIyNGIyNjVkY2UxIGxlZ2FjeS10cnVuaworMTQ2MzAgZTEwNTE1ZTdkMzU2Y2NiYTdkNDc0MTY0YzE3YTRmNTM4NTE4NjM0MyBsZWdhY3ktdHJ1bmsKKzE0NjMxIGY5ZGIzNjU0YTFmZDA4NzY2YTA1NmUzNjAzNzBlYTVmOWM3ZTAwYWQgbGVnYWN5LXRydW5rCisxNDYzMiAzOThhNDU5OWVlZTMzY2U5YjczNGMzY2U5YTg0OTM0MWZjNjNiY2RiIGxlZ2FjeS10cnVuaworMTQ2MzQgNmUzYzgxYmQ4MjkxZWRlYTdmN2Y0ZDc2MDQ1NGVkZTUyNjU0MmViYyBsZWdhY3ktdHJ1bmsKKzE0NjM1IDIzZmQ3ZDEwMDY0ZWIxNjIxZmNlY2JmYTAyZjJiMDE1ZGE5Yzc2ZGUgbGVnYWN5LXRydW5rCisxNDYzNiBkNDY2MmQzODE3NDhhYzZjYTZiNTUwYWUzMTI2OWY1MWRkNzM1Y2EzIGxlZ2FjeS10cnVuaworMTQ2MzcgZjkxNDFiZWJlZDQ4ZjRlNTlhMTFkYjEyY2U2MGNhNTQ1YmEwZTI1YSBsZWdhY3ktdHJ1bmsKKzE0NjM4IDNlNWZiZWY5YjFmNTFjYTYxNGFlYzczZTMzNDJjZmRjN2FiNWFiOTggbGVnYWN5LXRydW5rCisxNDYzOSAyNGMxODdiOTI3NzM4NDg2YWYwYWI0NGUwNmRkMDIzZmQxYzc5NzExIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY0MCA3NDEwNjkwOTI4MzE5YmQ4MTJkNmMyMGIyNDZiNDczYjg0OTU4ZTk4IGxlZ2FjeS10cnVuaworMTQ2NDEgOWQ1M2ZjODA0M2JhNzlmNTRhMjk2MDFiNDQyZDZmZDEyZTY1MjA3NyBsZWdhY3ktdHJ1bmsKKzE0NjQyIGJlOThlMDU1ZTM5ZDk5MTQ1N2RkNjdjODg4ZmJhZWE0NTE5YTQ5NjAgbGVnYWN5LXRydW5rCisxNDY0MyAyNDE5OWMxYjkxODJhMzZjYzc5M2MyNjQ0NWVhMGJlZTYzYmU5YzA3IGxlZ2FjeS10cnVuaworMTQ2NDQgNDQxMmM3YTMyNDk3ZjkwYzI5NzFiMmQxZDBhMWEwYzc1ZWUxMGFhZSBsZWdhY3ktdHJ1bmsKKzE0NjQ1IDlmMjYxZTk0YjJiMjViMDQxZGJmZmEzZWIyZTUzNTJmNzQ0MTU1ODEgbGVnYWN5LXRydW5rCisxNDY0NiA1MzA1ZjliMDFmYzc1NDU3ODAyYjE3MTYyN2Y0Zjk4ZGJlNmY5MTc0IGxlZ2FjeS10cnVuaworMTQ2NDcgNTA3ODMzYjE4MjEzYjcwYjdjMjIzZWI5Njg2MzdkNTJhYTU1NTk3NSBsZWdhY3ktdHJ1bmsKKzE0NjQ4IDEzYmM2OGZhZWI2NTViNjZkYjY1M2Q0NjFkZTgwZmM3MGExN2Y2MTEgbGVnYWN5LXRydW5rCisxNDY0OSA3NGI3MjEzZmI2MDkyMGEwMWU0MjFjOTQ1MGNlNmU0Njk2ZWY0MGZiIGxlZ2FjeS10cnVuaworMTQ2NTAgZjc2YmY2MWNiMTljNGE3ODNhZmEzZjc4OTg3MGFhNWU5MTU2NzE1NCBsZWdhY3ktdHJ1bmsKKzE0NjUxIDU3NDI4M2RiMmIzZGRkZWYzNjlkZmQwMzY5Y2U4YTg4ZTJiMDJkMjQgbGVnYWN5LXRydW5rCisxNDY1MiBkMGUwNmVmYjMxNjUxZjBlNGNkY2I0M2Y2MDc4Nzc1NTgxOWEwYWEzIGxlZ2FjeS10cnVuaworMTQ2NTMgOGJkYzI1ZDIyOTI1YzIxYTEzNmM1MzMxMDE3OGU5MTNkYmUwNjY5NCBsZWdhY3ktdHJ1bmsKKzE0NjU0IDI4MDAzYWZhMWEyZjA5MWYzMmZmZjMzYWJiMTc1YTJmMmIyOTA4NTMgbGVnYWN5LXRydW5rCisxNDY1NSA4NzZmMzU4MjhlODcwYTJmMmE3Mjg4NmYzMTI1OWYyYTlkZDhkMjRmIGxlZ2FjeS10cnVuaworMTQ2NTYgNTEzMzU0ZDg3YTg1ZTc3ZTMxMTM5N2VlOGY5MDQ2YjM1OTljZjBmZCBsZWdhY3ktdHJ1bmsKKzE0NjU3IDhiODhlMWJjMGUxYjRiMGM4MmVjNDIzYWZhYzRlMzFkY2VlY2IwZDYgbGVnYWN5LXRydW5rCisxNDY1OCAzYzYyMGY2NWVhYTViNWViNjViNGU2ZmM2MWUxMjkxZjNkN2Q2YmMxIGxlZ2FjeS10cnVuaworMTQ2NTkgMzBkOTI0OGUxMWJiYjIzMWY3Mzg3NDNmM2MyZDFlNTViMjA0NDkxMSBsZWdhY3ktdHJ1bmsKKzE0NjYwIGE5YjVhMzFmZjhjYjE5MTM3MDc1ZjkzYWE3ZmE5YjU2YmZmMmI1YTUgbGVnYWN5LXRydW5rCisxNDY2MSBkN2E0YTVhZTJkYWVjNDdkNjc1ZjI2NmMzNjYyNmRiMzg5MDA5NGYwIGxlZ2FjeS10cnVuaworMTQ2NjIgYTEzMjk0YWVmMDJlYTRmZWIzNGI1NmU4ZjhmODg1NWVlMDEwNDVjNyBsZWdhY3ktdHJ1bmsKKzE0NjYzIDRjN2JjODg1ZjQyMGFmYTU4YTY2NmY5NDE2YmEyNDAyNzE3YmI1OTEgbGVnYWN5LXRydW5rCisxNDY2NCBlZmIzYTQ1YzY2ZjMxYWM4OWE4NGQ3YmM0NzkzMzRhZDhlZGM5MjRmIGxlZ2FjeS10cnVuaworMTQ2NjUgODgyMjVkZjM1ZWZiYWM0NmJiNWJjMTc2NWZkYzI4Zjc0MTk0NzdjZiBsZWdhY3ktdHJ1bmsKKzE0NjY2IDMzMDNhNWJhYzZkZGQ0MjAxMzM4MDFlNjk1YzRjY2JhODAxZjNjMDAgbGVnYWN5LXRydW5rCisxNDY2NyAwZmRhYzFmNTRlYzgxMDM1MTE1ZWY2ZmQ3N2MwMDRhN2M1ZDA2ZWZmIGxlZ2FjeS10cnVuaworMTQ2NjggOTNkYWM0MDUzMTg5YzBmNTUwYmY1NjlhNmY4MmY5NmQ3MjYxNTAxMyBsZWdhY3ktdHJ1bmsKKzE0NjY5IGVlNjQ5MmE1ZmRlZTY2YTgzNDIxNWIxNmFiYzg4NjI5NTUxNWRiZGIgbGVnYWN5LXRydW5rCisxNDY3MCBmMTA0MjUxYjZmOGYzN2VmNWZiMDAxMTQ4YmVlNjE3NzEzZDNmMDkyIGxlZ2FjeS10cnVuaworMTQ2NzEgODE3MDJhNzM1NGVjYjUwY2UwNDYzMzRkZDA5ZDhiYmU5ZGVkNWY4YyBsZWdhY3ktdHJ1bmsKKzE0NjcyIDE3ODlmYWU1ZjA3NDFhMDNjOWQ0NTZiNGUzYzM2ZDQ2NzNmNmM2NzQgbGVnYWN5LXRydW5rCisxNDY3MyBiNWU4MTI3MWM0YzhiYmNjNWFmNTZjNWY1Mjk1ZjZlOTkyYzMxOGVmIGxlZ2FjeS10cnVuaworMTQ2NzQgNGI4YjJlMjhiZTM0OTI1OThmYzkxZjFkOWFhYmRlZmY1NDViZGM3OSBsZWdhY3ktdHJ1bmsKKzE0Njc1IDk2ZmE0NmQzNDg5OGFjZGQ3YmM2YWZhYTNjMTk5MTEzZTYzM2VmMGIgbGVnYWN5LXRydW5rCisxNDY3NiAzMjYyN2RjYWZhYmZmNzJmNTNjNTc2NGJmOTQ0ZDYwNzQ0MmJiYTgwIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY3NyAyM2RjODlhZDA5OTZlODk1NjFiNDBlMzg1YTAzYzU5M2YxYmQ1NGY5IGxlZ2FjeS10cnVuaworMTQ2NzggMzgzMTBlYjA2NTllM2E0YzQxNzM1YzhmZDkzMzc0ZDk5OWYyMjUyNiBsZWdhY3ktdHJ1bmsKKzE0Njc5IGY5NGQxMGI2ZDBmNGQxMzM2NmQ2YzdlZmMyMGM2YjNlNzgxMWI3MTkgbGVnYWN5LXRydW5rCisxNDY4MCBjOTQyNDdiNWMzNTU1NzhmNDYyNmQzZjY3Yjk1ZDllOTAxOTMyZTcxIGxlZ2FjeS10cnVuaworMTQ2ODEgODY1MWYyZGE3YzRjODcwMWU1ZDkyOTNmNGI2NWI5YzVmYjc1ZjlkOSBsZWdhY3ktdHJ1bmsKKzE0NjgyIGUzNjJmMzI2MDQ4Y2EyZDFkOTJmMTExMzQzOGJlOTYxYjlmM2YyZWQgbGVnYWN5LXRydW5rCisxNDY4MyBkNTBmYTM2NzBiNjZhMTdmNTYzMTU5ZjIwY2Q1OTU5Yjk0ZGNmZWQzIGxlZ2FjeS10cnVuaworMTQ2ODQgMTQ4ZGI2MzIyMTYxZmUyODQ5NmE0MDY2YTlmNzFjNmRhZDNmN2NmZCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ2ODUgMDFmYTVjYTk4ODEzYjQ1NWM4MGMwNThmMGE4OWY5MzE2YWNiNmY1OSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ2ODYgNzVkNmM3YzNlYzU1MDBlNDZhMzFhZTUzOTFkMTU2Y2ZkZjY4MzNkYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ2ODcgNzYxMGVlZDNlMDMzMjgzZmZjYTlhYzUxNWQzMzg3ZWI4OWI4OTljOSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ2ODggZjc4ZjQ3NzI1NjhlYzYxY2FmMWNlMTk0NmYzMWYxOGQzNmFiY2NiYyBsZWdhY3ktdHJ1bmsKKzE0Njg5IDc0ZDk3ZDc5NWM0ZWU3M2NkODc3Mzk0MTY0MzM1ZDQ1MzBiZmVlYmIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NjkwIDNmNTZjZGEzZDJmYzQxNzEzOGFhMGUzNGZiMDU3ZWJkNTNjZTRkZmMgbGVnYWN5LXRydW5rCisxNDY5MSBjNzQ1ODkyM2Y2YTJkMzMwMzQ1ZDExMDllYWMyYWQ5ODgzZWZlNTQxIGxlZ2FjeS10cnVuaworMTQ2OTMgZjI3Y2MxNzM1MTdlMzQyYzMxMjdmMjAwN2RmMzlmOGM5NzA5OGQxMCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ2OTQgMGY2ZWFiMDNmMjg4MDFiNjMxNGY0OWE5YjFiZWI4ZjE5YWY1MmFhZiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ2OTUgMzY2YzFlOThmNzA3OGJmODBjNDFjNjVhNWUwNTExYWQ0NmJkZTgwMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ2OTYgMGE3MDYwNzJkNTBhZjBmNmNmNzk5MTgyMjFhNDZhMWNiYmY2ZjUyNiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ2OTcgMWM5MzVjYTM3ODVjOGQ4MDU4MDI0NjhmM2UzMDI4OWZiYjdkN2JhYyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ2OTggNDM4YTQ0MGJiMDg1ZTVlOTUyYzlmNTEzYWMxMDFhZjNkYTI0OTZhZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ2OTkgM2Y4NWM0Yjk5ZDMzMjIwNWI1NWRjMzc3ODI5Yjg1NDg0NTY3ZmM5ZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MDAgZmFmMGM5ZTliOTJmZWIzOTNlYWUxNWMyYTYzZGE0Y2U2MTk1MmFhMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MDEgZjIzODY0ZTRhZDJjYzU1MTI0YzFjZGEwY2M4NTJiN2EzODFjOTQ3ZiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MDIgZTU3Y2U0ZGY1NzA3YTcyZmE1MjIxMTEwNTE2OTE0NjYwZTAyNzE4ZiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MDMgNGZiZjY5NjIwODdkNThmM2IxMGQ5OGNmYTJjY2I1ZTdmNzhlZWRiNSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MDQgYmRhYjljNTVmMTY4Mjk3ZWNkMDhkMmY2ZDZhNWYzNWUwMjVjMGIzOSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MDUgYTMzZjJhM2RiODkyN2ViMjU0MjJlYTI2ZTJlOWQzZWYyYzY3ZGQyYyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MDYgMmVhYWVkNzU4OWFlNWUwZDk2OTliZmMyMzA1ZjBhOGE3YTZkNTYzOSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MDcgM2FmM2IxZWI2N2ZlMTRjMWE5MDAwZmY0ZGNhYTQ4YTI4Mzk1NGQyNyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MDggMjYxMmI5NmI5OWFjNDRmYmY3MDQzZTIxNjYzMDljOGEyOGZhMDY1YSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MDkgMjhjOGNlNjY1YjAzMjBkZTk3YmEzM2FkNWIzNzM1Yzc2NDIxNWE1YiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MTAgYjU4ZjJmMGNkNTViM2U0MjgxOWI2YzBkNGQyOTI2ZjYwYzQ5MjA0NiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MTEgOTYzNDhiZWI5Mzg0Mzg5ZmJlN2YyZDkwNWQ1YjNiYmEyNjMzMmJmZiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MTIgMTY5YWRkNmE0ZGMxYjBhMjI5NjMxOTRkYTM2YTkxODQwY2Q3NTY5MSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MTMgNTAwMGVhZjA1OGRiNzhjZDc4NDI2YmMyMmE2NjA5YWY2ZjBkNDhmNyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MTQgNzAzZGE3ZTk0YjIxNjVkMjU4OTc4NjNhYzQ4NGM2MjFkY2U4Zjg0YiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MTUgZDdiODdmMGZmMGQyYTdmNzFmY2E2NjQ1YjAyMmQwNDZhYWQ4MjQ1ZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MTYgOWQ3MzU2Mzk0MjlkMTNhZmNiOWFkY2MwNDAxMGQ0ZjFiZGQ3MjVmNCBsZWdhY3ktdHJ1bmsKKzE0NzE3IGUwZmIwNGQxYmQ5MzRiOTBiMzhhNjBiNWZmYTBlZTQ4MGYzYjljYTkgbGVnYWN5LXRydW5rCisxNDcxOCA3NGZiNjAyYjc2YzJmZmIxZGU5Mzc1YmNlNGEzMmI4ZGI5MjJhZjA2IGxlZ2FjeS10cnVuaworMTQ3MTkgMTI3ZjcwZjU5YjAyNjY0M2EyMzJiODllMDU0NWMyMDQyOWMzYzZmZCBsZWdhY3ktdHJ1bmsKKzE0NzIwIDY2MzEyOWYzYWJlMDAxZWJkNzU3MGUyMWFjZTQxMDkzMDNiOTc2OWUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzIxIGI0NzI0OGNlN2I2Yzk0NTA0OWM2ZGZlNWU3YWM4OWJlMjdjN2MzMTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzIyIDM5NTIzMTg5NTdjZmEzMzY0ZmFlYWE4ZmJlNmRhOWY4OWJjNGY5ZjUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzIzIGJkMTAxNDIxNWY2MjI1NGE2ZDA0YTViODNmZTU2ODI5Y2VhYzI1YzMgbGVnYWN5LXRydW5rCisxNDcyNCA0ZmEyNWEyOTIyNzNiNzU0ZGJhYjBkZGUwNjQ3OTEwNmUwYTMxMGQ3IGxlZ2FjeS10cnVuaworMTQ3MjUgYzJlZmQxN2NlY2JmMWQ2ZjI1ZWZkNzhlYmMyYmQyOTZkOWYxZWYzYSBsZWdhY3ktdHJ1bmsKKzE0NzI2IGU2YzQ2ODE5ZGI5MjcyOTc2YTJkOGZmOGNlYjBiODgxZjQwMTU1OWUgbGVnYWN5LXRydW5rCisxNDcyNyBiYTgwYzkwNjQ0OTE4MDY3ZTZmNzU4Y2E2YzY0OThkOTM3MjVkYTNlIGxlZ2FjeS10cnVuaworMTQ3MjggYTQxMTgzNjcwMzg2ZTYyZmYzODk4ZTE5NjhlN2I4ZmUzNDJjMTYyMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MjkgYzYwM2NkZWRhZTE3NzRlMGVmYzU5YmFhNTVkOGY5MGRjODQxNjhiMiBsZWdhY3ktdHJ1bmsKKzE0NzMwIDEzZmQwZGZlYzU2MGE3ZGQ1NTZhZTA2ODY5YTVhNGZjZWY3NWFlNGYgbGVnYWN5LXRydW5rCisxNDczMSBlNzgyMDM1MmNiODBkMGYzZDdiMGVhYWNjNTFiMWIzZjg3N2M2YjA2IGxlZ2FjeS10cnVuaworMTQ3MzIgMDU2OTcyNTE3MTkxMmU1YjdkN2QxYTU5ODRiM2U5NzkyNzUwN2RhNSBsZWdhY3ktdHJ1bmsKKzE0NzMzIDY5YjBmY2VmNGMwZjIxZDc2OGI3NDc1NWU0ZGJlNDJkMTVlMmRiYzMgbGVnYWN5LXRydW5rCisxNDczNCA3NjUxNjIwNGI2MjBiZWI4NGZjMWRkZTlmYWVkYjg0MzQ0ZTIyZTUyIGxlZ2FjeS10cnVuaworMTQ3MzUgMWUxYWViYjNlNGY2OWU1OGYwYjRkOGQyMDUzNzA0MzM3ZDQ0Nzk2ZiBsZWdhY3ktdHJ1bmsKKzE0NzM2IDg2ZDljZTE1ODA4OThlZjQ3ODY5NzdkM2Y2YTZhNDE0ZDNjOGIxYjQgbGVnYWN5LXRydW5rCisxNDczNyA5MTRlZDUyODg5NmUwZWQ1YTUwYzJkNTZhZDAwOWQxNzMzOTM4OTI0IGxlZ2FjeS10cnVuaworMTQ3MzggYTBhOWM2OWFmOWY3ODc5NDY1M2I2ZjA5YzA3OWQxOWUzMzExN2NiOCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MzkgNmZkMGJiMGMwMzMxZWZiZTdiMWYxNTQ1ZGFiYjFlNzM1MTlmNDk2MiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NDAgZjA3YzMzMDU1N2NmZjg2M2Y1ZTMxNWZiOGQ1ZjFkNjEyMDUyM2FmNCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NDEgZDc0ZWFhOTJmMGI0NTgzNDQ5MmY0NWUyNDY0YzRhZGM2Mjc5NDExMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NDIgNDNkMjI0Nzg2YTU4MWU0NWQzMjZjZTM1MzczY2Q2ZGE1YWMzNzVhNyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NDMgNjI4Y2ExZTkwNTkxZTUwZTk1ODk4OThiN2Y1YzFkZDAwMWFkMzhmZiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NDQgZjIyMGZiYTU3NzQ5ZmI4MDMwNWNmZmU5MWJhMDdkNTZhYWI3NmFlZiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NDUgMGI5NjMzYTQ1ZDY4ZWI4M2JiYmFjOWU4YjI3OTRiM2NhNzQ1MDQ5YyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NDYgY2EwMTdkZTRmMmZkOTRjNjdiYzJlZTIwYmNhMWI1NzAyM2MxYWExNCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NDcgMjVkM2RkMGIxY2EyOTM4MDMyOWY0NGFkYWQ2Njg0ODZiMjg0MTgxNSBsZWdhY3ktdHJ1bmsKKzE0NzQ4IDc5OTRkOWRiN2Y0ZDVkZmU1MWViYWQzMDA0NzFkMDFlYmJjMDAyOWIgbGVnYWN5LXRydW5rCisxNDc0OSAwMDlkOGZhZTgxZWFlNmVkYmI3ZmQ3M2YwYjBmOTA3ZWZkNmNlMmE1IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc1MCAwYzQ0N2MyODkxNDY2ZmQxM2ExMmQyM2RlNTRkOTQyYjg3Njg2MDYyIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc1MSBkMmEwMDYxMDkyZjgwNTAxNTVkNGNiOWI0NGQyNjljYmFhZGQ5ZmNmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc1MiBkYWY0ZWZjM2FiYTkxYmMxZTlhOTI1ZDI5ODNmOWQxZjU5NWNiMWU0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc1MyA4ZGMwOTE4YWUyYzJmZmNlN2NhYTRlYTBkMjNhYzZmNDJlYTAxNmFlIGxlZ2FjeS10cnVuaworMTQ3NTQgZjk1NWZiZDUxM2VlNGY2ZDRhNmM5ODY2OGUzNDhhMjdhZTAxYTgyOSBsZWdhY3ktdHJ1bmsKKzE0NzU1IDU1NmMyN2IzYWI2ZWJmNTZkMzM3ODI0NGM4MzcwNGE0NjIyZTJlODYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzU2IGM4ZTAwMTBjMTJlZjMxZWRjYmUzMjkyZGY2NmU2M2QyM2FkZmM3MGEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzU3IDg3YWVlNGVmMjlmNTI4NmFjNmFjODMwMDRhMjRhNGI3YWY5YmIzMGYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzU4IDMyNTkzODMwMGE3ODQxNWM2MWI3Yjg0M2NiMTVlNDhjM2JiMzAyYzggcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzU5IDZlN2VjOWEwMGNjZTVjYjA5ZDhkNjU3YTkxNjhkMGI5Y2M3OWZlZTEgbGVnYWN5LXRydW5rCisxNDc2MCAzNjkwYzg3YTliYzY2NGM2NTM0YzMzNjkwNTk0MDg4MmY4YTAwMjI5IGxlZ2FjeS10cnVuaworMTQ3NjEgYWZhYjdiZDcyYzQ3OTVkNDg1NWVhYjNlMzk4NDgyMzY0ZTUxMzFkZCBsZWdhY3ktdHJ1bmsKKzE0NzYyIGEwNWQ4MzM4ZmFjNTczNzQxZWEwYmQzOWU4YTdiY2JhYWYzMjkzYTcgbGVnYWN5LXRydW5rCisxNDc2MyA5Y2FjZDExNjY5ODYyM2NmZGFkOTAzMDkwMTY2MjM5NmNjNjk4NDBjIGxlZ2FjeS10cnVuaworMTQ3NjQgODU2ZGFkZjU2Y2Q5N2IyOGYwM2E4ZjMyYzRiNzJiYjNiMDY2OGRjNCBsZWdhY3ktdHJ1bmsKKzE0NzY1IDIzZmNlOWI5ZjNiYzkzMTdjYzI4MmRhNTY0ZGY5YWY5Y2U3NmIwNjggbGVnYWN5LXRydW5rCisxNDc2NiA2ZjBkMWUzMzQ2Zjk1YTcwMWM4ODBjN2ViNTViNmFhM2NkYzI4OTk3IGxlZ2FjeS10cnVuaworMTQ3NjcgOTQwNDE5NWZmM2ZlZmZhY2JlMjYwOTFjMGUxMGUwYTkyNTkzZDE3MyBsZWdhY3ktdHJ1bmsKKzE0NzY4IGQzZTRhNDU2OTI4YmUxZGE0MTRiNmQ0ZTA0MWIyNmE4ZjVlMmYyNGUgbGVnYWN5LXRydW5rCisxNDc2OSAxOTU2ZWMwNzY3OGU4NmYwNWVhMWRjNDJjODMzMWE4N2I4ZjMxMTFiIGxlZ2FjeS10cnVuaworMTQ3NzAgNzQwZWMwOGU2ZWMxYzU5MjdmNjNlNTFjZGFmNGRiMTNiOTk3YzMzNCBsZWdhY3ktdHJ1bmsKKzE0NzcxIDQxYTcyNWMxMjU1MWY2MWI0YjI4Y2YzNDFlNTAxN2UzM2IzNDFiZGYgbGVnYWN5LXRydW5rCisxNDc3MiBkNmJjM2JkNTI0MjRlNmExYmNhNjFhOTlmZDBjODZkNGVhY2RhN2RjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc3MyBlMTIwNDE3MzIzMDQwOTM1ODllM2RlN2ZmNDAyMzg0NDRkYTFiYjA4IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc3NCBhNGE3ODVhMDEzNjBhZWFlMTlhYzQxODM5NzRkZWQ2NWFjMmZmNjcxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc3NSAwMWE2MGI5M2MyZjUwMGYzNTczMDZiMzlmYTlmMGVlOTU2ODdlYjY2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc3NiAwMTljMzQyODBmYzIxZjNiNzI5ZmU5MzlhYjU1ODdhZjRmZDMyZDUwIGxlZ2FjeS10cnVuaworMTQ3NzcgYTlhMWU1OTFlYjNhMWIxZWEwNTgwMTQ4NWI2MWNkYTM5YmQ0ZjRlMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NzggODFjMjNiMzg3YmIwODQ4YjBmNWVhZWRiYWQ5YjQ5ODZkYTFmOGQ5NiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NzkgMmUyMWFkMWM2MGZmODY2MzAxMzg2NDBmNWE0YjcwMDM0YWVlNDc5NCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3ODAgYWY0Nzc4YTEzMDU1NjkxN2RiYWFkZTNmYTQyMTYzMTViYzM5N2JmOSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3ODEgNjM3NGM2NjY5MTQ3OGU2NzJhZTlkNWY1YmEyNjg0NzFmY2Q3YzIyMiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3ODIgNDJjYmVhNjc3N2I3ZWU5ZmFjYTZiY2Y3NzZiNWZiYWQwNzFlNTg1YiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3ODMgY2FlNTZmN2U4MGZmZWU3M2E4NGI2MTc3ZDJhNzBiNDViY2Y2YWMwNiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3ODQgZDhiMjJhNzgxOTA1YzE5MTE0ZTEwMWMzOGUzODYwMGQwMjMwM2Q3ZCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3ODYgNWNhY2NhY2UxZGNmODg0MmQ0YzQ1ODZlZjllYzBlOTUwZjY3MmEzNiBsZWdhY3ktdHJ1bmsKKzE0Nzg3IDE3OGM2ZWZhZWQ4YmFlMzFiM2Q1M2VlYWFmZDM3MDdjODE1ZmVlNTMgbGVnYWN5LXRydW5rCisxNDc4OCAxNDA5MmFiYjhiYjRiZTU0N2M4NGFlOTE0Y2VhNTUxNDQ4YWQwNDM2IGxlZ2FjeS10cnVuaworMTQ3ODkgYjJkNDRiYjc2MWQ0YjVhMTRkY2VkZjQ3ZmI5Njk2ZDg1ZGYyZTg1NyBsZWdhY3ktdHJ1bmsKKzE0NzkwIGEzODRiMGY2OTUxMmY2ZGRlZTYyMzVjZGNkY2Y0ZmFiMmU2Mjk2NGYgbGVnYWN5LXRydW5rCisxNDc5MSBmYTEyYTU2MzM2OGQ1MmYyYTcyN2Q4ODcyYmY5ZDlmMWI4ZTNhZTYwIGxlZ2FjeS10cnVuaworMTQ3OTIgZjg3YjU2ZWViYWNjNzJjM2VhYWE0OTFmNzFkMmUzZTQ5YzE0MThlNCBsZWdhY3ktdHJ1bmsKKzE0NzkzIGRkYTM3OTRjOWNkOTA0OWJhZTU3NGVjZWE5ODJjMjY2MmJkYjM1MDMgbGVnYWN5LXRydW5rCisxNDc5NCBiOTA4ODBjMGU1ZWIyMjVjMThmMDA3MjMxMjA0ZDY5NGFkMDkwM2JhIGxlZ2FjeS10cnVuaworMTQ3OTUgZDg5NTU2YzA0ZWY5OWRiYzlmYTZiMzhiNzg2YjFmODA4NDIyMmJjNCBsZWdhY3ktdHJ1bmsKKzE0Nzk2IDVkMzE2NWUzMGJjZTYzMTNjNDU4M2IxZjQ0ZDUxMDhmYzAzMjFiZTQgbGVnYWN5LXRydW5rCisxNDc5NyA4OGIwYjMyMTA4Y2ZhMmQ0ZTM0ODM0ZjllYjMyMDJjNjhkMTM2OWM3IGxlZ2FjeS10cnVuaworMTQ3OTggMjNhMWM1MjZjNmYwMmM1YmRiMDU2ZWM2ZWRmOTdhOTYwNzk0YTZkNiBsZWdhY3ktdHJ1bmsKKzE0Nzk5IDVkNDVjZmExYmM5MTM4OWE4NmUzZDRjOGY5ZDA2NzA2YzVjMzczZTMgbGVnYWN5LXRydW5rCisxNDgwMCAxZTVjZDcwY2VlMTA3NTZiODg4YTc1NjRkMjAxZWY2YzJkOGI3Nzk2IGxlZ2FjeS10cnVuaworMTQ4MDEgNDJkOGQ3NmRhZTZkMmM1ZDViYzEwOGIzMjJiMTE2NWQ2NzEyOThiOSBsZWdhY3ktdHJ1bmsKKzE0ODAyIGM2Y2IwZDI2NjgzOTMwMmI4YzljNzVlOGE5MWMwYzYzMTVjZmUzOGIgbGVnYWN5LXRydW5rCisxNDgwMyBkZTI5NmE3OGFiZmRjNGU1MDJkYTM2NTdmYmZmMmJkNWEyZGM1YzJjIGxlZ2FjeS10cnVuaworMTQ4MDQgNzc5NTU3M2VjMzU4MWM1MTgxOTU3Mzc3ZThkYzM5YTA3N2Q5ZDg5ZCBsZWdhY3ktdHJ1bmsKKzE0ODA1IDA0OWYwMGJmYjljZWYzNDAyODg2ZTU2OTBhMTcwNDdjYTE0NTg3M2EgbGVnYWN5LXRydW5rCisxNDgwNiBjNDNiMzgwNzkyMjhmMzk5MTU1ODk4NzViMThhMzRiNTAxYzczOTI4IGxlZ2FjeS10cnVuaworMTQ4MDcgY2E4ODgwY2YzNjc0Y2EwZjgyNjM1MGRhYzRjY2Y3ZWFlMzU1OWE1MiBsZWdhY3ktdHJ1bmsKKzE0ODA4IGRiMDNhMjljZjE2YjVjMjJjYmNlNGQxNTVjMzgxMzc4OGZkNjljOGMgbGVnYWN5LXRydW5rCisxNDgwOSBiOTgxYTdhOWI3MzhlOWMxOTM1YjAzYTkxNTI1NTZiZmQwYzIwN2QwIGxlZ2FjeS10cnVuaworMTQ4MTAgODZjZmZlNTBmYjE3MmMwMjUzZDBiMTQwOTg4ZTcwNGNlYjQ5YmJmOSBsZWdhY3ktdHJ1bmsKKzE0ODExIGJjYWIxODlkZGY4NmJkZWNjNjU2MmY1ZjFkMzAxNTBjMGNiYmQ3NTEgbGVnYWN5LXRydW5rCisxNDgxMiBlMjQzNTE5MjZlMTNlYTYwNzUzZDAxYTg2MjdkYTY4ZjBmZjYxOThjIGxlZ2FjeS10cnVuaworMTQ4MTMgMzMyMzEwZmUzZDNhZjM3Mjc0ZTg2OWY1MGVlYWYyOTA2NjA0OTFmMCBsZWdhY3ktdHJ1bmsKKzE0ODE0IGExYmZjOGQ0ZmMwMDZjODE4MDg1OWY5NjI4MmZlYjFhZTc4Yzg1MjQgbGVnYWN5LXRydW5rCisxNDgxNSA5NzUwYWY1ZTcxYjAxMzlhZWNjMGQ0YWNmZDE0ZDY2NjMxMjZjYjZlIGxlZ2FjeS10cnVuaworMTQ4MTYgNjdkNDEyOGRhMjU0M2ExYjQwYTQ0OTUyNTRhYmFhNDA5Mjk3NDc4ZSBsZWdhY3ktdHJ1bmsKKzE0ODE3IGU0OTQzZWJiNWY3ZDIyNTExMDA3ZjllODBkNTI3ZWQwZjI5YzJjYmIgbGVnYWN5LXRydW5rCisxNDgxOCA2NWYzNWI3M2UzNTA1NGQ5NWFmZWFhYmQyODk3MGRkMzg2OTg1NDI2IGxlZ2FjeS10cnVuaworMTQ4MTkgOWVkZWRlNjUxZmIxYTQ4ZTcwY2IwODgwY2EyODI1ZWRmNWY5M2Q4NiBsZWdhY3ktdHJ1bmsKKzE0ODIwIDRhNjFjYzgxZjM2NzM1ZDE2MzU2MTZkODVlYzMzMTNhZWQxOTE1OGYgbGVnYWN5LXRydW5rCisxNDgyMSBmZDJiMDZjNmZmNTNiNzIzNzczMDFjMDNhNGQ1ODcyOTQyYTgwYmZjIGxlZ2FjeS10cnVuaworMTQ4MjIgODk3Y2YwZTVhNDM0YTYwZDE3YTJiYWY0MWNlN2Y1MzU5MmRkZDAxOSBsZWdhY3ktdHJ1bmsKKzE0ODIzIDgzOGRjMzgwZTQ2NzdlZTg4NTcwYTA1YzBhNmM3NzM0NDc4MmJlZTMgbGVnYWN5LXRydW5rCisxNDgyNCA0NGI5NDJmN2ZlYjc2NmViM2U1YmRkNDgzOTBiMmY0Yjc5YTZmZDNmIGxlZ2FjeS10cnVuaworMTQ4MjUgZGM4YWE5NTFkZWY4MDQ1YzEzOGJmMDU5OTYxZGI1ZDRhNDIyOTBmZCBsZWdhY3ktdHJ1bmsKKzE0ODI2IDYwM2RiMGQwYWVkMTQzNDVjOTAwMDQ0YmFkOWU2NWYxYjZjMzMyZTQgbGVnYWN5LXRydW5rCisxNDgyNyA3ZTAwNjM0MmU3OTA3YzY5OTU4YTBlYzQ1ZmIwN2FiZjI0M2FkNmRlIGxlZ2FjeS10cnVuaworMTQ4MjggYTZlNTIyY2I1OTE4NGE1YzBhZjMyNTFmYTExMWI2YTAzYmIwZjM5NSBsZWdhY3ktdHJ1bmsKKzE0ODI5IDI1YjYzMzY3Mzg1ZWIwNjUzYWIyYmMyODRmMjlmMDA2MzE1YWQyOGEgbGVnYWN5LXRydW5rCisxNDgzMCA5NmVhMWE4MDBiMjM5M2M5NjdiYjVmM2M4MmI3YzllMzg4YWVkM2FmIGxlZ2FjeS10cnVuaworMTQ4MzEgZTJkYjg5YTk4Y2IyZjQ5YjQyYzlmMTU3MDE4ZTcwNWRlNTEzYjI1ZiBsZWdhY3ktdHJ1bmsKKzE0ODMyIDM3ODliNjQzZmU4OTgxMjkwYzM1MjA2NDYzMWUyYTY0NDFlYmNhODYgbGVnYWN5LXRydW5rCisxNDgzMyBiYjkwMDQ0OTIwMzA1MzhiZDYxMWZiZDRlZjJiNDYxN2NlMjRkOWEyIGxlZ2FjeS10cnVuaworMTQ4MzQgOTg3N2U5NzgxNzBlYTc1YjI2NjA3MTRkMWNlNWFiMmY4OTE4ZTZiZiBsZWdhY3ktdHJ1bmsKKzE0ODM1IGFlMDY1ZGRiYTBmMTQ2N2NhMjM3M2M0MWJhNDc0NDQ2MDI1ZWM5MDIgbGVnYWN5LXRydW5rCisxNDgzNiAyYTYwZDZmODM0ZmZiNDEyMDIwNzA4NzBhMWE0YTdjZDIyZTc3MGRiIGxlZ2FjeS10cnVuaworMTQ4MzcgZTA5ZDc0MTRkM2VjZjgxNjU3ZjZiZTMyYzIxODc0OWJhM2IzMWRhNCBsZWdhY3ktdHJ1bmsKKzE0ODM4IDhkMWM2OWJkYzRmMmMyYzk1YzE0YjJkMmM4ZWUwMzhkMDQ4MWQ0NGQgbGVnYWN5LXRydW5rCisxNDgzOSA0Mzg3NjA2YTEyODFiNWEwZjlmMzc3ZjlhMGM4YWVlNGZmOWMzZGZiIGxlZ2FjeS10cnVuaworMTQ4NDAgYzBlNGE5MGRjNGZmOWY3Njg4YmJmNGFlYzVkYTdhMGI1YWY0MWUxYyBsZWdhY3ktdHJ1bmsKKzE0ODQxIDdhNTE1ZmMxMGMxZDc3YzM5MjYyODEyMWQ5MjQ4MzM1Mzk3ODMyZmMgbGVnYWN5LXRydW5rCisxNDg0MiA4ODEyNTdkMWU4NTQ0YmY4YWQ1MTVhZTMyZWU5OGIyNWNlODM3NTExIGxlZ2FjeS10cnVuaworMTQ4NDMgNDBhMjY4OWRhZjM3NzY2YzIxZDdmNWZmMmU2NGQ1NTNlNmYyOTkzNyBsZWdhY3ktdHJ1bmsKKzE0ODQ0IDQxY2JkMjk4ZmZjNmMxZDJiNjYyYjhlNTc5ZWNiOTQwMzBmNjhjODIgbGVnYWN5LXRydW5rCisxNDg0NSBmMGUwMmFkYjkxZWJhMTliMzdmNTM1OWZlZjQ2N2U5ZjA5NDRkZDI4IGxlZ2FjeS10cnVuaworMTQ4NDYgZTgxYjEzOWFiOGE0OTU5ZmVhZGIzYTY5MjM5MTZiNzI3ZWM2ZjUwNCBsZWdhY3ktdHJ1bmsKKzE0ODQ3IGQ3MzFjZWY4MTJiMzVlNjE0ZDI2Mzg1MzM3YjQ4OGU0OWVlNDBlM2QgbGVnYWN5LXRydW5rCisxNDg0OCBlOTg3NzBkZTMxNDcyZDM2N2E4ODI4MjBlMzFlNDdiYmEwYzkzMWU2IGxlZ2FjeS10cnVuaworMTQ4NDkgNjZmMTRmZmU4ZWI3MTZmOTZlOGE0ODVkOTZiMWFmZjI2NDcyN2JiZSBsZWdhY3ktdHJ1bmsKKzE0ODUwIDJhOTEwYTc3NTc5YTRkODMyZjZkOWFiODliMWNjMjFkNTQ0MTFkMjggbGVnYWN5LXRydW5rCisxNDg1MSAzMjQwN2MwOGNhZjRkMzU4OWVhZWZmZDIwNWM5MmIyMTEwMzQyODkwIGxlZ2FjeS10cnVuaworMTQ4NTIgNmZkNDM4NjdhYTRmYjA3ZjlmZmViMTM3N2E5ZjNiNDIyMDE2ZTU0ZiBsZWdhY3ktdHJ1bmsKKzE0ODUzIGY3YTBkMjlmYjhiODFlMTQ0NTAyOWMxM2IyNmRjMmZjZDJmMTYxOTMgbGVnYWN5LXRydW5rCisxNDg1NCA5MmVjNzhlMjE3ZDI5YWY4OTkwNGQzZjczNGFjMTJjY2FjNjBjODYzIGxlZ2FjeS10cnVuaworMTQ4NTUgZTJiMDJkNDBhMTQyNWMzYzg1ODJmNjYxOGRmMDk3NjZhY2U5ZTM2YiBsZWdhY3ktdHJ1bmsKKzE0ODU2IGRmZTNiYWYwYWVjZGNlNDgwNDk1YWI5YzdhNTY1N2RlMDBkNGNhYTIgbGVnYWN5LXRydW5rCisxNDg1NyAyZjJmMmIxY2U1NjhkNjFlMWQ2ODcyYTc0ZjA4NGVkNjkyNjQyOGQyIGxlZ2FjeS10cnVuaworMTQ4NTggMjcyMWM3Y2MwYjI3MTVmM2QxYzUxZWI5NTg3NDQ4OTMwOWJhMmI3MCBsZWdhY3ktdHJ1bmsKKzE0ODU5IDYzMzM2ZjIwN2Q1MTI4ZDU1ZDM4ZWVmOGZkNjdiOTAwM2QwZTUyNjkgbGVnYWN5LXRydW5rCisxNDg2MCBlNmFiM2M2MDNmZjkxM2JhNjE3ZWFiNjIxOTU2NjY5ZWE0MzlmZDk3IGxlZ2FjeS10cnVuaworMTQ4NjEgNWYyMjM5NDA2ZGQyMGQzNzQ0OTljYjBlZTI0Y2ViZTYxOTgwNTFiNyBsZWdhY3ktdHJ1bmsKKzE0ODYyIDMwYTQ5ZDE1ZGE5NzVjMjYzN2VlOWMyZDNlNWQ5ZDNmN2UwNzI3NDIgbGVnYWN5LXRydW5rCisxNDg2MyAwNjk5YTdkZmQ3MzdjMjM1MTM5NGVkZDNmZmZmMTM4ZjZiNjgxYTQzIGxlZ2FjeS10cnVuaworMTQ4NjQgZWM1OGI1MDNiNjcwMGM1ZmQ2YjUwNThkNTFkZDAyZjY1NDg3OWExOCBsZWdhY3ktdHJ1bmsKKzE0ODY1IDA3MjdmZjM5ZTY0ZmI5MjY0N2UyZmRkYmQ1YzVmOGNmYjIwOTllMTUgbGVnYWN5LXRydW5rCisxNDg2NiAzZDc4NWMyY2RhODgxNWRiYTY3MzIxZDg3NjM0MTU1NDU4MDE2M2FlIGxlZ2FjeS10cnVuaworMTQ4NjcgYTBlZjhmYTRiMjQ4OGI0MzhkYWVhMTVkZDM1MjU3OTdjNDY3MWM4YyBsZWdhY3ktdHJ1bmsKKzE0ODY4IGVjMzYwYjRlOGY2NmZlN2ViYWQxNjAwN2ZhMzAzYzRiY2M2NGIzMjcgbGVnYWN5LXRydW5rCisxNDg2OSBlMmIzMjgzYzVkYjBhNGQ2ODIwMTliMjk0ZjlmOGFkNDM5MGU4N2U4IGxlZ2FjeS10cnVuaworMTQ4NzAgZTYyMTRhZDJhNjBjYjA3YjFkZDk0OTg4YzY4MjEyN2MwZDkwMjIzZSBsZWdhY3ktdHJ1bmsKKzE0ODcxIGIzYTRlNDUxYzA2Yzg2YTBiMDJmNmQ5NTA4MDdkMjJjNzc1ZDlmNjAgbGVnYWN5LXRydW5rCisxNDg3MiBiNWZjYjUzOTY5OTk0N2NlYjQ3NTM5Yjc3NmRiNGQwNzVlNGM3MjU1IGxlZ2FjeS10cnVuaworMTQ4NzMgMmNkOWM0MzZiZDQyYjM3OWFmMTdhZDRkNWUyMjk0YTVmYzFlYTY5ZCBsZWdhY3ktdHJ1bmsKKzE0ODc0IDEwMzhlNTg2MTA3OThlNGM4MDY3NDIwZGRjMzViYjViZmE2NjdmYTYgbGVnYWN5LXRydW5rCisxNDg3NSBiNDBmNjc5YjEwN2NlNTU4MjljNmI2YWY2YTk0OWIwNzEwNjk5M2FmIGxlZ2FjeS10cnVuaworMTQ4NzYgMWI2OGQwYWQ3ODM1NmMwZmEyMGRkNzQzM2EyOTBiMzI0ZWE1OGYzZCBsZWdhY3ktdHJ1bmsKKzE0ODc3IDcxMTM0MGQ0NDc3NzYzOTE0OTYwODAxNDljZWIyZTliY2UwMTdmMDkgbGVnYWN5LXRydW5rCisxNDg3OCBjMTYwNzQ5YWNmZjg1NzFiNWFjMmM0MTVlYjFlNjJhZGMzYWQ3ZjJlIGxlZ2FjeS10cnVuaworMTQ4NzkgNjY3ODc4Nzc2OTMzNmEzNWZiMTg5MDliODJiNjc4N2EzNDUxNDM5MSBsZWdhY3ktdHJ1bmsKKzE0ODgwIDliOWFiZGUwMzJiMzI0NTUxMThlY2QxNGM0ZTgxYzMxZDdhOTg2ZTEgbGVnYWN5LXRydW5rCisxNDg4MSA1YjU1ODFhZjk1MWM1ZDRkYTgwYzhmYTExOTIyOTM2NmNlYjE4NmY3IGxlZ2FjeS10cnVuaworMTQ4ODIgNTcyMGQxYzE4ZjRkMTMxNWUxYjVlOTA0NmQyZmM1NDgwYjdmMTYyYyBsZWdhY3ktdHJ1bmsKKzE0ODgzIDMzOGUwNTViN2NjMDljODAzOTM5MmI5YjgxNTZkYzVmZTU2OGY1NTQgbGVnYWN5LXRydW5rCisxNDg4NCBkYWRlODJiOWVlMTljZTBmMDg4OWViOWJlYmY5MDA5OGFhNDhhYTIwIGxlZ2FjeS10cnVuaworMTQ4ODUgNGEzZmQyYzEzNzJmMjI4MWUxODM1Zjc0MWNjYWQ3ZTI0ZjAxNTcwOSBsZWdhY3ktdHJ1bmsKKzE0ODg2IDQzYzM2ZjYzZjg2N2M5MzkyMDE1MzJiMjcyYTdmMzkzZWNlMTdmYmQgbGVnYWN5LXRydW5rCisxNDg4NyA5OTlmYzNlZWRhOTlhOTliOGI5NTRiNmJhODQxZGQ4NTEwNmM1MGIxIGxlZ2FjeS10cnVuaworMTQ4ODggNGNhYzM3NjQ4YTdmOTg2MDI0YjUwMmNhNTkzMTVhMGQ3MTU2YmJmYSBsZWdhY3ktdHJ1bmsKKzE0ODg5IDQ5ZTAyN2I0ODYyN2YwNTFiZmQyNzVlNTE1NThkNGM1MzAzNDg2ZTAgbGVnYWN5LXRydW5rCisxNDg5MCBlOGMzMGU2OTY2NmIwZTQyYThiMjc0MWU4NmRjNjA4Mjk0ODVlMjRjIGxlZ2FjeS10cnVuaworMTQ4OTEgMTRlOTNkODlkMzRlYmQxYTVjNzkwMmRiOTg2YmE1MDEzMzRlZmE3NiBsZWdhY3ktdHJ1bmsKKzE0ODkyIDgwNDQzM2YwMTEyYzliODBiMmZmZmI5OTRiNDlkY2VjMzc3ZDdmOTUgbGVnYWN5LXRydW5rCisxNDg5MyAwYWM1NzdlYjgyODJmMDdhYmM0Mjk2NDBlZmJhZThiOTRiZWFmMmIzIGxlZ2FjeS10cnVuaworMTQ4OTQgODFlNWY4MDAwMDk0NGZjNzU0ZTQ1MjQ1MzkzMjRmMTNiNGFiNzYyMiBsZWdhY3ktdHJ1bmsKKzE0ODk1IGNhOTM4ZjM4ZDA4N2RmYjFmMzczOWFlNTc4NDM4NDMxOGE3ZjNkNjUgbGVnYWN5LXRydW5rCisxNDg5NiAyMWE5YmJiNTcyZDczN2I5YTBmODM5MGQzMTNkYWVmMjFhMzE5ZjkwIGxlZ2FjeS10cnVuaworMTQ4OTcgODMwZGQ1ODFlOTM0ZjZjN2I1MTMwYmQ1YmZmZTViN2UwOTFjYWMzYyBsZWdhY3ktdHJ1bmsKKzE0ODk4IDc4ZTM2ZTA2ZTUzNjlkMjBlMjkwNjdiYTg3YmQ0Y2ZmYzEzZWYxYzEgbGVnYWN5LXRydW5rCisxNDg5OSBmZWQ4OWI1NzYzN2E2ZTQyZjAyMTdiZWE1MWI1NzMwYWFkZTU3NmFhIGxlZ2FjeS10cnVuaworMTQ5MDAgZGI1YzAzZmE4YzczZjU1ZDk2NzQzODFlZjhjN2YyNzRjZTdiODFjNyBsZWdhY3ktdHJ1bmsKKzE0OTAxIGJlMmYwMDNkNDdjYzZmMWUxM2Q0MzU5NGZjZTYwNjUzODhjMjVhMGQgbGVnYWN5LXRydW5rCisxNDkwMiA5ZTdhYmIyOGU5MmExNzEyOTQzZTU3ZDFjOGIzYzRlY2Y1YjAwZTRlIGxlZ2FjeS10cnVuaworMTQ5MDMgNzVhZGQ5NjQ0ZmYzNGEyOWYyYzA5OTQxNGJkNjljNzkxODBlNjMyZCBsZWdhY3ktdHJ1bmsKKzE0OTA0IDUyMmVlYWU2YzA2NjMyZTJhOTMxZDMzZjA5ZWE2ZjkwMWEzODQwYzAgbGVnYWN5LXRydW5rCisxNDkwNSAyMzZhYzFlYjE4OGUzZDI2OWZiZmFiN2IzZWZjZjkwYjI2N2FmYWJiIGxlZ2FjeS10cnVuaworMTQ5MDYgOThiMDljNDBkOTdjYzlkOGNhOWFmYTU0ZjFjZmU3MzllYmExN2JlZiBsZWdhY3ktdHJ1bmsKKzE0OTA3IGZlYjlhZjc1MjdhNTdmNWFkZTI1NWUwYTRkZGI1MjQyYTBmMDYyZDQgbGVnYWN5LXRydW5rCisxNDkwOCA0MjM4N2FkZTZhZmJlNTJlMzk4YWNhY2Y1ODk0NjczOTI3NDg1M2IzIGxlZ2FjeS10cnVuaworMTQ5MDkgMzU2YjhlODlmOGUzMDY0NWEzMDBlN2QzODA0N2FmMjhiMGQ5YjhlZSBsZWdhY3ktdHJ1bmsKKzE0OTEwIGM4OGM4YTg1Mjc0NDA1YjQwMmZmNjEwM2UxMzUxNjBhNGEwYTc4MDYgbGVnYWN5LXRydW5rCisxNDkxMSA2ZTY4YzdkZGNkYjU3ZjZmYTgyYzBiYjUxYWUzOGQ0YjJkYjE1YjI0IGxlZ2FjeS10cnVuaworMTQ5MTIgYTJmYmMwZmY3YzJlMDcyZTNkYzM3OTdlNjNkZWZiNmNkYTBhNzRmMiBsZWdhY3ktdHJ1bmsKKzE0OTEzIGZmNmMxYTgyYzMyMmFjYzQ1ZjA1MTNjNjQ2OGE4ZWFlNTdlNjM4ZGEgbGVnYWN5LXRydW5rCisxNDkxNCBmNDA3ZmFiMjczNTg5YTMzZGUyMjJkYzZmYTM1MTRmZDdlOThjN2Q0IGxlZ2FjeS10cnVuaworMTQ5MTUgMjY1M2ZkNTE2ZDRlMmVlMjAxN2ZiN2M1Zjc1YzFhYTRmM2E1NmUwNSBsZWdhY3ktdHJ1bmsKKzE0OTE2IGI3MzAzZjJmZjYxM2EzYTQxYTZiZjBjMGM3MjAzOGY4M2E2YWIzN2MgbGVnYWN5LXRydW5rCisxNDkxNyAwZDNkZTRjMTNjYjcyNGNiZjBlZmI4ZGIzZjNkM2Q2ZTc3ODNkZjZiIGxlZ2FjeS10cnVuaworMTQ5MTggMjc0NWRhZTg3MDVmMTk0MmQ0NDQ4MjMyODdhNjExZjY4ZWJiMTNjZCBsZWdhY3ktdHJ1bmsKKzE0OTE5IDAxNTVhM2IxM2JmMGUwYzliODY5NjU5NzFlYmZiMDAyYjFiZWEwMTAgbGVnYWN5LXRydW5rCisxNDkyMCBkYjgzZTYzYjM4NGI2ZGM3MmYwZmQ1MGY3ZjJlMzdjM2Y1NjBlNjgzIGxlZ2FjeS10cnVuaworMTQ5MjEgZjAzZTJhODE4OGFhMDdjZjVjMDdjY2MxZTAxMTgzMTk1ODc1NjU1ZiBsZWdhY3ktdHJ1bmsKKzE0OTIyIDc3MTkzZThlMDEzNzE5MmVhYjUzOTg0NWNmZjA3MzMxNjY0MjdmYzQgbGVnYWN5LXRydW5rCisxNDkyMyBlNzg5ZTJiZjA1YjNlZWUxYmZjMzdjYThiOTkzOGRkMWJlZGQ0ZDY4IGxlZ2FjeS10cnVuaworMTQ5MjQgYzI5Y2RkZThlYmQ4MDMwODg4Zjg5YTg0ODE5YWIyMDk5YTVmYjNkNiBsZWdhY3ktdHJ1bmsKKzE0OTI1IGI1OGFlZDcxY2Q2M2YzNzdiZjdjNDk0MjM2MDUzYzY5NDk0MmRhNGIgbGVnYWN5LXRydW5rCisxNDkyNiBjODg4NzkyZGU2YTc3MDg4MGE2N2M1MmI5OWQ1YTQ0YWFhNzk1N2ZlIGxlZ2FjeS10cnVuaworMTQ5MjcgMjQyNDU4NTAzYjEzMTFiNWQ2OGM3ODE2NmZmNGU5MjMzNWJjOWY3NSBsZWdhY3ktdHJ1bmsKKzE0OTI4IGY1YTFlOTU0NGM1ZGU2ZWU3NDM1MjQ5OTI2YjcyMzJiOTk3YzQ4OGYgbGVnYWN5LXRydW5rCisxNDkyOSA4MzI1N2YzMzk0YWUzMTBjOWNhZmFhZDAwYTExMGZlNmU1ZTY4NGJjIGxlZ2FjeS10cnVuaworMTQ5MzAgMTcxOWU0MWUyMzMwMzFlZDdhMWYzMWI3ZDcwNGEyNTcwMmFlZmQwNiBsZWdhY3ktdHJ1bmsKKzE0OTMxIDM5YjkxY2I4MGI0MWMxYWJhNDg0NDJmYjIwNDMwZDk5OTJmYmQ3ZTQgbGVnYWN5LXRydW5rCisxNDkzMiBjZGY2OGNlNTg2YzQzOWVjNTUzNzIxMWNiOGVlZTk2ZDI5MjkyNDM0IGxlZ2FjeS10cnVuaworMTQ5MzMgMTUxYjkxM2U3NGExMzc2MjY3OTU0MjExYTMwZjIzZDhhOGFiYjZmNCBsZWdhY3ktdHJ1bmsKKzE0OTM0IDk0YjYwMWZhZWJhY2VhZjJjNGViODBiNTc1OTY1ZWZlMTlhZjc4NmUgbGVnYWN5LXRydW5rCisxNDkzNSBlNzVhYzI5MmVmNGMxZmFhODVmMThiMzg3NWU5NGNmZTM3ZjZiMGUwIGxlZ2FjeS10cnVuaworMTQ5MzYgZjA5ZTlkNjU2YTExNTRlYmRlOWFjOGNlZjU5YzlmNTY3YTIxNmUwMSBsZWdhY3ktdHJ1bmsKKzE0OTM3IGMzZmMyYjQ2MTdmY2Q5NmUyNzk5YWQ4MWRjY2RmYTU4ODBmZGNkZWMgbGVnYWN5LXRydW5rCisxNDkzOCA0ZGQ4YjZhM2I5YzVkZGE4YjRhMzU5OGM1YzQ2M2FhMTZlM2YwOTI0IGxlZ2FjeS10cnVuaworMTQ5MzkgYmM4NjFhZGQ1ZDcxMmExODM1YmJmNmNkZDhiZDAxNzkzY2QzNDI3OSBsZWdhY3ktdHJ1bmsKKzE0OTQwIDZkMTA4ZDUwOTM0NmE4OTIwNGRmM2I5ODgzMWI2YWY2YmEwYWUyYmMgbGVnYWN5LXRydW5rCisxNDk0MSA3ZjE4Zjk3OWE5M2FmYTNjY2RmN2FkNDcwMTNjY2U5OGUyNzIzM2RjIGxlZ2FjeS10cnVuaworMTQ5NDIgNDc2M2EzZDU5YWI5YTI1NTgyMDM3NDNlODU0ODYyMDM1OGRmZDE5OCBsZWdhY3ktdHJ1bmsKKzE0OTQzIGYyOGU5MmRiYjllOGUxNGQ4YjY0MDgwZjQ2ODMwZWM1NjRiOTI5NGEgbGVnYWN5LXRydW5rCisxNDk0NCA0MmYyMWU0N2I0ODYwNzA3MmU5ZmM3NzdkNmI0ODViNWEwZTA5NGQyIGxlZ2FjeS10cnVuaworMTQ5NDUgNDFkZmM3ZDRhMzZiMjI2ZmJmNTIzYjIzNzJkZWZiNTgzYTY0ODM5YiBsZWdhY3ktdHJ1bmsKKzE0OTQ2IDZmZjdmNzZhNmYyZTU4MmUxMGY5YjlkZGExYjhkMzY2NDhmYjNiMzUgbGVnYWN5LXRydW5rCisxNDk0NyBmZTNjYjczNDFiNzA4NDJiNGFmNTEyY2ExMzUyMzQ3ZmY4NjBkNDliIGxlZ2FjeS10cnVuaworMTQ5NDggZjgzZTQwOGFlYjA1ZGYxMjkxZTdkNDYwNzZkODFjNjMyNWQwODg3OCBsZWdhY3ktdHJ1bmsKKzE0OTQ5IDI1M2NkZWVhZjQyZWY2ZTg3ZGQxNzVhNjc5NTlmM2RmNTVlMzk2OWIgbGVnYWN5LXRydW5rCisxNDk0OSA2MDVlYjkzMjZmZmUxZmQxZTQzZjQwZTIzMzhkNjY1MmFiNDQ5ZmRmIGxlZ2FjeS10cnVuaworMTQ5NTEgM2UzZDE1MmE4NTU0NzA0MGYzZmE4NTNiNjM5NTM4NGJjZDkwY2Q3MiBsZWdhY3ktdHJ1bmsKKzE0OTUyIGI3M2M5ZjhjNTM3YzFhZWQxNTNhYWMzZjZhNzI5MDhkZTM1NDZhNjggbGVnYWN5LXRydW5rCisxNDk1MyAwOTA5ZjU2MjNkNGZhMmMyYzA1ZWMxYTYzMjgzYjhhZjZlYjRmOWMyIGxlZ2FjeS10cnVuaworMTQ5NTQgMzdkODIyNzJmMGY0NDViZWYwMzQyYTdjMTFmN2JjZjg2NjcyMWZkOCBsZWdhY3ktdHJ1bmsKKzE0OTU1IDRiZjk4Y2MzOGRiNzFhYzYxNWExMmZhZTVkMDgzNzdjZjM3MDIzODQgbGVnYWN5LXRydW5rCisxNDk1NiAyNjNiZWU0ZWYxM2M1OWE0ZTAyOGFhMTk0YmJhZDIyY2Y1MzY1ZDhhIGxlZ2FjeS10cnVuaworMTQ5NTcgMWRjMGI2MzdlYjFiM2E1OTMxNTkxOWI5Yjc0MTZhYWI2M2NjMGQyMiBsZWdhY3ktdHJ1bmsKKzE0OTU4IGEyMTZmZTc5YWUwMGI0MTdiZGQ0YWRmNDdmMWFkNjU2MTk4NDk4OGIgbGVnYWN5LXRydW5rCisxNDk1OSA3NzQ4MTcyODViOGNhMjAzNTU1MGQ0NTgxYjZmMTUxYzkwOGEwOGFiIGxlZ2FjeS10cnVuaworMTQ5NjAgMzNiZmM1MWRlYzA1Y2YzOTQ3NmZjYTU1NGE4MjhkMWM1ZDRhN2Y1OCBsZWdhY3ktdHJ1bmsKKzE0OTYxIDVlYTc3MzQxMzUzMTk4ZTA3YjI1NzEyYmU0ZThhNzA5ZjkyOGExNTkgbGVnYWN5LXRydW5rCisxNDk2MiBmOTdiYjQyZDQzNDQ4NWMxZDY5ZDEzOTM2N2IzNzE0N2E0OTU3NTA4IGxlZ2FjeS10cnVuaworMTQ5NjMgNTMwY2Q5YWZhODBkNTQzYmFiZGUzYWEwOGFhMDgwZjU4MzMxNzg5NyBsZWdhY3ktdHJ1bmsKKzE0OTY0IDVhNjIwMGZmNzdhYWM0NTQ3YzVjMjgzM2JmZmQ5ZjlmOTg0ODA4NzAgbGVnYWN5LXRydW5rCisxNDk2NSAxN2NlNjYzOTY3ZDg0MDhjNTM1ZWUxYzBmNTI1YjgwNTM3NTUzM2I4IGxlZ2FjeS10cnVuaworMTQ5NjYgM2U5YTFjMWE5ZjU2NzYxZTkyZWNjNTA3MjQ0NWE3ODg5MzEyYTczYyBsZWdhY3ktdHJ1bmsKKzE0OTY3IGU4MmU4MmIzYjlhZDU2NWFjOGRmODEzNWE2N2ZhNjExMzU2ZGJlNjcgbGVnYWN5LXRydW5rCisxNDk2OCAyZGMxYmRiNDA4OGVkNmYxOGQ1NmQyNWQ3M2I0NmY2MTk2Yjk1YTk1IGxlZ2FjeS10cnVuaworMTQ5NjkgYzQwNWRiZGQyNmM5ZWM1ZGNiZTBjNzA4ODdiZjJmZDEyNTE0YjFmNyBsZWdhY3ktdHJ1bmsKKzE0OTcwIGZmZDI0MmZlZDBlMmRjOWRjOTg3Mjc4MGMxOTNjZDA2ZDMxOTE1NTEgbGVnYWN5LXRydW5rCisxNDk3MSAyMzY2MGI2NmJjYTMwYzBlNWVlZDg0MDBiNjhmZTRiOTgzYmQzNGI3IGxlZ2FjeS10cnVuaworMTQ5NzIgNzdiMDJlNTNmNjY2MmY0YzQyNmM2Yzg4MGYwZDdjNDkzYmE3ZDFmNCBsZWdhY3ktdHJ1bmsKKzE0OTczIDc4NTljMGE0YWQ5NTQzMGJhYjUyYTgwZmVhMWQxYjdkYTQyZjY4NjcgbGVnYWN5LXRydW5rCisxNDk3NCA3YmY4YjEwY2UyYWI1YzBkM2IzODA3ODhjMThlNjEzNjVhYzE5NzQ3IGxlZ2FjeS10cnVuaworMTQ5NzUgMDc0YzMwZmYzMjA2ZmQ5ZmZkYjc0ZmMzMzlkMmYxNjQxMThhZWQ4YyBsZWdhY3ktdHJ1bmsKKzE0OTc2IDYzMTM1ZTlkZWYyNDFlNmYwYTBhNTk3MzJhMjcxNzUzYjE3OTNjOWQgbGVnYWN5LXRydW5rCisxNDk3NyBkNDkyMzc3NTIwMjk3NmUzZDE0OTcxNWY4YTY4ZTVmZWJjZDdlZTU0IGxlZ2FjeS10cnVuaworMTQ5NzggMTQ1YzAwNzNkNzg1ODFiNGE0OGQ1YWNhNDViMjg3YTdhMzZiYjcyYiBsZWdhY3ktdHJ1bmsKKzE0OTc5IGNlMjZkNWYzZDNjZTdmYTVjOWQ5MjQ3Yjk3ZTM3OWFhMTEyYWRmZDQgbGVnYWN5LXRydW5rCisxNDk4MCA5MjM1YWM3NjE3NmQ0NTIyODU0MzRhMDBiMzU1MGIwNDYxNDMzMTRkIGxlZ2FjeS10cnVuaworMTQ5ODEgMGNkMjJjODRhNGYxNGQ2ZmJjYmY5YTdmNDU0NzI0MWEyY2FhNDEzOCBsZWdhY3ktdHJ1bmsKKzE0OTgyIGRlMGY5M2Q5MGVlNGQxOTU1M2JiZmY4MzM0YTI1YTVhODU5ODAwMzEgbGVnYWN5LXRydW5rCisxNDk4MyAwODM5ODM4MjcyMjQxZWQ3NWE2NDk3ZjNmNTIwNzU4OWJjMDgyMGMzIGxlZ2FjeS10cnVuaworMTQ5ODQgNzI5ZjMxNTI3NjVjYjhmNTZiZGMwYTliYWI1OTc2Y2E5Yjc5MzI1YiBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDk4NSAxYjdjNDk0NWM2MWMxODlhNDZhOTU0NmQxY2IxZThmYmU5MzI4MGIwIGxlZ2FjeS10cnVuaworMTQ5ODYgN2ZhMzE3NDg0OWJkYmE3YmQyODg0Y2JkNWU1YmM4YjEyMzM0NzliYiBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDk4NyAxOTBhOTI0MmY4M2E4YjAwZDMwMWNkMjA5ODM5YTA0MDk5NmUxOWNhIERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0OTg4IGEwYTI0ZDNjZmQ5NjExYjZkZWUyYzlmNzExM2UxODM5NTFjMzQ1NGYgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ5ODkgMTc2MDUyNDE2NjNjMTljMDUwZDEzNzUzYTJjY2M3YzI1ZTE0NTRkNyBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDk5MCBmYmZmYTdlYjJhNGY3NGY1NmU5NTAzZjhlMjVjZDBhYWE4ODhhNGE5IERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0OTkzIDdlOWE1Y2Y1NWM3Njc2YTU5Njk2MTY4NjUzOTI2ZTgzYTA3ZWE2ZjUgbGVnYWN5LXRydW5rCisxNDk5NCAxYzNmOTE5NTFmNzM3YTAzNzMyZWRlNzM2MjdkMTA2ZTExMTJjMGE4IGxlZ2FjeS10cnVuaworMTQ5OTUgYmUzZTBkMTk3NTIyM2VlNjgxMDA2MGRmNDc1YjIwY2I1MDVlZDZkMCBsZWdhY3ktdHJ1bmsKKzE0OTk2IDNkYWM4NTRlNjExODUwZWRlNzkwZTEyNDU5NDNjZWI4ZTFiYTBiY2MgbGVnYWN5LXRydW5rCisxNDk5NyA2MTJiZTFiYjY1ZmZlMWMxYmQ3ZjI2YjY1MDQ1NmNmYzM2Y2Y4MzIwIGxlZ2FjeS10cnVuaworMTQ5OTggYmRmY2E1NGExNDFjYmMzYmJmMTkzN2IzZWQ5ZDQ2MTQzYjU2MmE5OSBsZWdhY3ktdHJ1bmsKKzE0OTk5IDY5ZDExZGY4NDNjMTU0NGIyZjIwNDgzOTY1ODdhOTNmYzU5OGUxZjkgbGVnYWN5LXRydW5rCisxNTAwMCA3MDE1NGUyZTljODkwZTkzZjFlOWIyNTcwN2UwOWE1NjVjN2QyMjBmIGxlZ2FjeS10cnVuaworMTUwMDEgOWViNzY5ZTE1ZjgxYmMyNDA2N2Y1YjQzYTQwMzhhZWRhZDlhMDcxZSBsZWdhY3ktdHJ1bmsKKzE1MDAyIDBhM2NiMDgyYzVkYmRiNGY5ZTc4OThjZGNhYjRhNDczYTU5ZDY1NzIgbGVnYWN5LXRydW5rCisxNTAwNCA5ZGRlMzE1Y2RlMzk2OWE2MGQxYWM0OGYxM2EwZGQ0YmM4NzYyOTllIGxlZ2FjeS10cnVuaworMTUwMDUgNGRhMDZmZGQzZTYzODFiYmZlYjkxNjU0YTk0MGI0MjVhNWY2NDJjNyBsZWdhY3ktdHJ1bmsKKzE1MDA2IDQxNTg1ZTg1MWY1NWI2MTQ5NDVjMjBhMWY0ZDdiODBhZjYzODAzZDAgbGVnYWN5LXRydW5rCisxNTAwNyA2NjkwM2MzZjE0ZGI0Mjg2ZDQ2ZjkzYTEyNjIxMjVkM2VjNTgwYTUyIGxlZ2FjeS10cnVuaworMTUwMDggYzM0MWU2OGYxOTg4ZTM5M2QwNmI0YjE3NjZkODZjOTVjNzU4YjA0MiBsZWdhY3ktdHJ1bmsKKzE1MDA5IDBiYTg1NzA5YTY3MTI5NTFhNzcwYTFiNWQ1OTczMzhhZGFjNzBhMDAgbGVnYWN5LXRydW5rCisxNTAxMCAyMzI2NjM1MmYxMzhjMDBjZTdhOWZiMGIxNThiZjc0NzhkNTFhYzMzIGxlZ2FjeS10cnVuaworMTUwMTEgNjViYzVlYWY0N2NlOTZlMTJlYjA2ZDhhZjdjN2RjZGE3NDY0OTk0ZiBsZWdhY3ktdHJ1bmsKKzE1MDEyIGQxZDAxNmFjY2U3NGViMjg5YTQxMjJmN2U3MTJjNmQ2ZDJkOTgzNGUgbGVnYWN5LXRydW5rCisxNTAxMyA4YzBmODYzYmE1MGM2N2UzOGJmNzQ3ZTRiN2VkNzFiYjhjMDI2ZDA0IGxlZ2FjeS10cnVuaworMTUwMTQgZmIyMGY2ZmRkMTZkNmQwNDhiYzcxYjFjNDJmYzU5M2ZiMzlhYTFkOSBsZWdhY3ktdHJ1bmsKKzE1MDE1IGFhYzExMmNjYTc5YjUxNmQ5YWUyMTNlYmU2NzgxYTM4ZjkwZTBhMjIgbGVnYWN5LXRydW5rCisxNTAxNiBmZjc1ZTQ3MzRkZDlmZWZkY2E3YjBmNzM4NmU2MThlODBmMDJkZDFkIGxlZ2FjeS10cnVuaworMTUwMTcgNjRmY2FlNzhkNDdhZjYzNTY0N2I5NmU1YjI1OGMwZGZmYjgxZTQ4ZSBsZWdhY3ktdHJ1bmsKKzE1MDE4IDY2ZTljOTdmOWY2NzdjMGJjNjc4YjA4Zjc2YjUwMzljOTZlMDUxNmUgbGVnYWN5LXRydW5rCisxNTAxOSA3NmVkMTM5ZmNlNTk3MzVmYzUwZWQ4ZTE1MGEyYjc1NDhjYWU5N2Y0IGxlZ2FjeS10cnVuaworMTUwMjAgM2ZkYWVjZmZjNGRkZGJjNTI1NDVhY2MxODIyNzVhZWNiZDNjMDBlMiBsZWdhY3ktdHJ1bmsKKzE1MDIxIDllMWY2MDk3NjIwOWYyN2ZjM2Y4ZGFmMjQzZmU1MDA0ZWNmMDRkNTMgbGVnYWN5LXRydW5rCisxNTAyMiAyNjFlODk1NDQwODU0ZjkwZDIxMzQzZDlhMDI0MGY2ZjllYWNmMjQyIGxlZ2FjeS10cnVuaworMTUwMjMgZjZiNThiMDIxZTU2ODkyOTdiMDZlZmU2MjQ1YjBhOWMwYTdlY2FmMCBsZWdhY3ktdHJ1bmsKKzE1MDI0IDhhMWVjOGZjMDBmZWE2NmE2MDMzMDcxODZkOTAzZTdlNjhkMDNhNmUgbGVnYWN5LXRydW5rCisxNTAyNSAwYWM0MGU0N2JkYjVlMWYyMjYwOWZkMTgwM2RhNzQxYmQ2NGUxNDRmIGxlZ2FjeS10cnVuaworMTUwMjYgZmQ3NTYxMTI0MjA3NjRiMGRmYWY2YWZhZWM5MTQ2ZDJhNzFkN2Y5NSBsZWdhY3ktdHJ1bmsKKzE1MDI3IDU1OWIyNWE3OTAzMmFjYmM2ZmRkOWNlNGE3M2FlYzRmZWNhZGUxMmIgbGVnYWN5LXRydW5rCisxNTAyOCBjZjEzMzhiYzIxYzAwMGJmNWVkMjA2YWJkMzRlZTVjNDgxYzE1NWUyIERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE1MDI5IGNhMzFlNjc5MDI0YjVjODhhMzFjNjg5MWJlOGM5OGMyNWJlNWUzNDYgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTUwMzEgY2JmYTk1YTZhMDNlZTY5YWU3OGViY2JmYTJkZWY4MzQxNjQ1OGYxOCBsZWdhY3ktdHJ1bmsKKzE1MDMyIDhlZjM2NzIzNDI2NDllYTUzOWQzN2Q4MTM5OTYzYTNiNzhkNGRkYjcgbGVnYWN5LXRydW5rCisxNTAzMyA1N2ZkZmEwMGRhOTMzN2E4OGYyZmY1YTFjY2U5MDZhYjMwODZkZWM4IGxlZ2FjeS10cnVuaworMTUwMzQgNjQ3YmY3MTkxMmYwMmMxNDYzOGUzNDk3NDg5OGY0ZjMwYWJjOTY5MyBsZWdhY3ktdHJ1bmsKKzE1MDM1IGFmOGQyMTEzYmMxZDAyNGJjMzRlNTc2MzUyNWZiMmI4MTU0NzUwYzQgbGVnYWN5LXRydW5rCisxNTAzNiBkMDZiNTBiYTgxYTYyY2MxYmYzMWY3ZDQxMGI3Mzk5ODI4Y2Y3NzliIGxlZ2FjeS10cnVuaworMTUwMzcgNTFjMGMzYjZkOTE5ZWZmYzU2MWJhYWUyMTMwZThkNDRlMjk1YjM3ZSBsZWdhY3ktdHJ1bmsKKzE1MDM4IDNhOTRjN2Y4NTU1MWU4OTllZTVmYzcwN2ZlNDc4ZTE0ZTkwOGJjZWIgbGVnYWN5LXRydW5rCisxNTAzOSA5NjAxOTI1MTg4MjliMWVlZTk2MjRhYzg5ZGQwZjZhNjA4NjM2ODVlIGxlZ2FjeS10cnVuaworMTUwNDAgOWM5NmU1ZDQzN2E4MjFiNzQ5OTRlMmQ4OThmY2QzY2ZhMGQ0ZThiNCBsZWdhY3ktdHJ1bmsKKzE1MDQxIDgxODYxNDVjNGEwN2Q2ZTI4NmVlODViYmE3MTMxYTU5ODYxOTU5YWMgbGVnYWN5LXRydW5rCisxNTA0MiA0YzZjMjQ4MTY5M2VkNDA2OTFiNmVjYTQyNDY1MzlmZDY0ZGVjNGY5IGxlZ2FjeS10cnVuaworMTUwNDMgZDFkMjJhMzYyNjhmOTUzNDU5OWNhZDNkYzUyMjdiYmRkNzhiOWJiMyBsZWdhY3ktdHJ1bmsKKzE1MDQ0IDVmMzYyNGJmYTU5NGMzN2NkZWE3YzhiYzdjYTVhZTAyYzBhNTFlN2QgbGVnYWN5LXRydW5rCisxNTA0NSBmYjc1ZThhY2ZiMDU3OTllNjcxMzYyZGU2NDM5NmM3NTg0ZGVmZjA2IGxlZ2FjeS10cnVuaworMTUwNDYgMTVkNDExNDliZjI0Mjk0MjljYWQ0YTFkMzk0MTQ1ZDVkMzU3NGQ1ZiBsZWdhY3ktdHJ1bmsKKzE1MDQ3IGI3ZjJiMjI1ZDBjMDIwNTY5MWFkODgxMzk3MjlkMjM3ZTMxNWNkMzQgbGVnYWN5LXRydW5rCisxNTA0OCAwZDY0Y2U3MzU0Yjk5OWU0NmYxNGI3MDU4MzYwZTQyMTBkNmI0NDhhIGxlZ2FjeS10cnVuaworMTUwNDkgOWFmOTk3MDY1N2ZhZWI4NTM0ZDc1OTljNTkzN2M2MmFhYzliNTg2NCBsZWdhY3ktdHJ1bmsKKzE1MDUwIDM1YTExOWFhMTliNGJlZTMxYjk0OWZhZjUxODZhNDZiYTlkODRlYTAgbGVnYWN5LXRydW5rCisxNTA1MSAyMzQ2YWMwNzgwY2U5MTFiMzMxOTU1YTQxZGNiNjVmMDMwYzBlYjRjIGxlZ2FjeS10cnVuaworMTUwNTIgYjE1NzI1NmRiYTc2OTdjOWJkYjhlYWRmOWJlNzRhMWQ1ODU1ZGY1NyBsZWdhY3ktdHJ1bmsKKzE1MDUzIDE2MzE5ODZkYjEzYTY2NGZmOGMwZmE1ZmQ0ZDJjYmJlNzg4OTViYzAgbGVnYWN5LXRydW5rCisxNTA1NCBkNjQwZTdkNGFlYzQ4YzVkNjFjNDBkYjZkOTk3ZjIxYjhmZWIyNmE0IGxlZ2FjeS10cnVuaworMTUwNTUgOTE3MmVkYWFlZmY1ODY5MTBkYzRiNTBlNGM4YjQ0YzI4YjJmNjlkMCBsZWdhY3ktdHJ1bmsKKzE1MDU2IDE3ZmM5Zjk1OTkwYjQ4ZTE3ODI3Y2VkOTNkN2I2NjYwZTIyN2YzZmUgbGVnYWN5LXRydW5rCisxNTA1NyA0MGU1OGM1YjZmODRmYWRjMjhhNjdiZDExOGQ0MDBkOTNiYjVlMDAyIGxlZ2FjeS10cnVuaworMTUwNTggZmQ5MDViYjJmNmI2MzEwMzJmMDJlNDM5MTUyODgzZDY4Yzg5M2YxZCBsZWdhY3ktdHJ1bmsKKzE1MDU5IDBjNjJkMWM3NmMwNjQ5N2RjMGQzODEyNGJkNjhjYmUzNTIwZmE2NzIgbGVnYWN5LXRydW5rCisxNTA2MCBiYmFhZGE0MWEyMGI2OWRkNDBmNDJhODg2YzAwMmZiZmQ2YzMyNzRlIGxlZ2FjeS10cnVuaworMTUwNjEgMWY3YzMyODAxZGMxMWU4NTAyN2JjYjg3OTEyYTk0ZDhhMWVhNTI2NSBsZWdhY3ktdHJ1bmsKKzE1MDYyIDBhNDViOTUzZjRjMDNlOGRmMjlmNGUxZThmNmZkZjk5YjgxMTAwOTEgbGVnYWN5LXRydW5rCisxNTA2MyBlNTQwOTMwNjQyOTU1YTg3ZjA4YmFiOGY5YmNkM2Q5ZGU5MjY4OWVlIGxlZ2FjeS10cnVuaworMTUwNjQgZGRjNGU2MmIyMTZiMmZjYmM1NmNjYWZhMDFiZTcwNTA5NDUzNWMyZSBsZWdhY3ktdHJ1bmsKKzE1MDY1IGQzMjM5YjdjMDVmZTk4ZGE1MTk5OWY4MWI3Nzg1MmY4MTQ5ZjAwZTcgbGVnYWN5LXRydW5rCisxNTA2NiAzZTcwYzQ1ZjhkNmJiOGViMjljY2U2OWY4MjNjZjc1NTlmNzhjZjBlIGxlZ2FjeS10cnVuaworMTUwNjcgYTNiMDQ2MjM0YzA5MzEyMWE0ZWY4NGUzYjBkMTAwNmViYTc3ZWMyMCBsZWdhY3ktdHJ1bmsKKzE1MDY4IGY3ODI0NDYzOTVkYjJkM2U1OWI5ZGFiOWU2ZGVjOTk0ZjhhYThmMjIgbGVnYWN5LXRydW5rCisxNTA2OSA5MGIyYTNjZDM2NWZlMzBhMTc0MGRlMTFhYzkxYTUwZGVmMDYxMTAxIGxlZ2FjeS10cnVuaworMTUwNzAgMjBhNWNiZjlmY2MwMmM1MWM1OGIwNGE0ZGI0OGY1ODVkZGM0NjNhOSBsZWdhY3ktdHJ1bmsKKzE1MDcxIGYxZjY2NWUwNzVjYTMwNTk5YzU2ZDcxYzUwOGMzMzcyMWQyZTZkY2EgbGVnYWN5LXRydW5rCisxNTA3MiA1NDBmMTA4ODFhNTk3MjlmZTQxMGQyYzljMDFmMjA1MzNlYWZjMTc1IGxlZ2FjeS10cnVuaworMTUwNzMgMjllNzUzNDkzZDhlNWQ3ODk5YjZhZDc5NTQ5OGY0NWZhOTdlNTFiMCBsZWdhY3ktdHJ1bmsKKzE1MDc0IDIwYTM3MGYxYWY4ZGZhOWE2NmY4MDA1YzhiMGM0NGNlNTFjZjFlMTIgbGVnYWN5LXRydW5rCisxNTA3NSA1N2YzNGUxNjJlNjc2MjU4ZDgyYWVjYWYzZjI5ZmY0NjIwOTAyMjBlIGxlZ2FjeS10cnVuaworMTUwNzYgNWRlMGI5MzlmZTYxY2NiZGY3NDIyNDU1YjNjODc2M2Q3YTZlMGM5ZCBsZWdhY3ktdHJ1bmsKKzE1MDc3IGIzMjE2MjczODJiYzE0NTk3ZWJmM2E5MTc4NTJiOGJiYTI2OWMxNTQgbGVnYWN5LXRydW5rCisxNTA3OCBkNzYyOWZhM2IyOWY1ODE3ZWY3MDU4MmEyZDFhZDI0YmIyODliM2RhIGxlZ2FjeS10cnVuaworMTUwNzkgMWEyMDdjNjhlOGI0ZDVmOGNlZjUzYWRlZTljY2I0NTVhYmVmYmQxYSBsZWdhY3ktdHJ1bmsKKzE1MDgwIDcyOTZjZGRlOGE1ZTNiZTkxOGE5OTJkODAzOGI3YzBkZDBjMjE1NjUgbGVnYWN5LXRydW5rCisxNTA4MSBiNWY2YjRiY2VmOTBlY2Y2MzczNzRjOTVmZmQ1YjdmMTA2MDI4YmMxIGxlZ2FjeS10cnVuaworMTUwODIgOTQ4OGU0ZmRhZmU0NmIyNTU4YWMyNDViNzg5MTUzZWZhODExOTE0OCBsZWdhY3ktdHJ1bmsKKzE1MDgzIDY2YjQ5MDZkMGZjNmJlOWVhN2NmZjFiNDM2MTkxNjI5NGE3Mzg2M2YgbGVnYWN5LXRydW5rCisxNTA4NCA0ZjU2NzFhMzEzNDczYzZhZDJiNTQyODZhYjU4MTM3MTRjOTYxYTM4IGxlZ2FjeS10cnVuaworMTUwODUgM2NjNzc4NDhhNjJhZjdiNzA2MTZiMDk2YzFkNDI1N2Q2ZjI4MWU5MSBsZWdhY3ktdHJ1bmsKKzE1MDg2IDc3ZTRmMjFlM2VlNjRhOTVkYmVmODZmNjk0ZWY2NWJkNzJjZjczNmMgbGVnYWN5LXRydW5rCisxNTA4NyBkMTk1ZjE3ZjI5MjczMWU2MWM5MTc5YmM1MjQzYTY3YjE0YjZmZThkIGxlZ2FjeS10cnVuaworMTUwODggNmI0NjY3ZmE0OTM4MWRiZWQwMGUwMTY2ODY1ZjlmNmFkMjBkNTkyZiBsZWdhY3ktdHJ1bmsKKzE1MDg5IDUyNWIyMzU4NzIxZTllOTBmNzU1NTJhMmJiNjZkYzgwN2YwZjc3NDUgbGVnYWN5LXRydW5rCisxNTA5MCAzN2ZkMmU2YzgxYzdkNzBlODg0YjEyODljYjVjNDM0ODMyZThjZWQ3IGxlZ2FjeS10cnVuaworMTUwOTEgZTY5ZWVmNjkyNjEyNTUzMzc2MjAxYzI3YmEwY2Y3NmU2MTk3NjhmYyBsZWdhY3ktdHJ1bmsKKzE1MDkyIGQzMzc0MzEwMmY4YWQzZjIyMWU5MzM2YzhmOTdjNDExZWUxMGRkOWUgbGVnYWN5LXRydW5rCisxNTA5MyA4NTEwYjRhYjNjM2RlYmMzM2ExZDczN2U1YmVjYjc1NWFjNTA1ZjYzIGxlZ2FjeS10cnVuaworMTUwOTQgMTg1ZGU0ZTdjZWYxMGUyYmQ0MDM2MWYwODYwOGQzYjdjNGQ1ZmRmYSBsZWdhY3ktdHJ1bmsKKzE1MDk1IDllOTY2NmY2NzlmNzJjMjU2ODBhOGM2N2JkYjlkMTRiOTBkYTZmMTIgbGVnYWN5LXRydW5rCisxNTA5NiBlMjYyMGFhYjlmMmQ2Y2IxY2U4NWRjYzBhYmJiOGIzNzM0YzY5YTI0IGxlZ2FjeS10cnVuaworMTUwOTcgZmM1NTdmNDMxZTg3ZTBkZGI2MzE4NjVhYTUxZTk5YTczYzk0ZWE1NCBsZWdhY3ktdHJ1bmsKKzE1MDk4IGFhM2IwMmEwMzhhMzdhYWE3ZGEyNTZiNzVlYjI4NzMxNWU0MmFlMTUgbGVnYWN5LXRydW5rCisxNTA5OSBiZTUxMDBhZmExYjdlZDFhOWNkZWZiZjE3OTJjMjRjZDc0MmI2NjVmIGxlZ2FjeS10cnVuaworMTUxMDAgZmNmNTg4ZDg2YjE0MDllZmVmMjdmZGU3Yzc4ZDAyOWE2MGFkMmVhNiBsZWdhY3ktdHJ1bmsKKzE1MTAxIGU5NTJhNGI5MjBhZGYwN2I1MDM0MDQ4MTkxNmZhMzk2MGQ1NjYxM2UgbGVnYWN5LXRydW5rCisxNTEwMiAyNGQ0MTE2ODk3ZGQ0NDdiODFjMjZmYjg5YWM4MTkwNTQ3NGFiMDdhIGxlZ2FjeS10cnVuaworMTUxMDMgZmFjYzEwNWI2NDFiMDFiOWJkZTY4ZGU5NWE4Njg3NWJjMzIyMGYyOCBsZWdhY3ktdHJ1bmsKKzE1MTA0IDE2ODA0YjM3ZDc1MjVjZTkxMGJmNjJlZTZmOTlmYWFjMDBiNzY0ZWEgbGVnYWN5LXRydW5rCisxNTEwNSBlNDM0OWI2MmZkOWI0MTljMzE0ODMyOGM2ZjdmNDJmYzFiYzYyMGQyIGxlZ2FjeS10cnVuaworMTUxMDYgYzU5YmRjN2ZkOGE2MWRjYWNkZTEyMDU5ZDYyYzM2MjE4N2IwOTQwZiBsZWdhY3ktdHJ1bmsKKzE1MTA3IDY3ODU2MTljMzNlMWNiMWM5NWU4MWM3MjI3NjJiZTgyMTM2YzEwMTQgbGVnYWN5LXRydW5rCisxNTEwOCAxNzlhNmUyODUwYWNhNWQwYzc1MTc2ZDNjODhhZjI5ZTQ1MmEzNGVjIGxlZ2FjeS10cnVuaworMTUxMDkgNTRlODBkYjQ5NDIzNzVlYjljMWRjNTlkMGE5OWZiYWM1ZThkMDk3OCBsZWdhY3ktdHJ1bmsKKzE1MTEwIDk5NmViM2IzYjMzZWM1MzIzZjUwNmM0MWY0ZWI1Y2E3YzkwNTYyYzUgbGVnYWN5LXRydW5rCisxNTExMSAwNDgwMmI3ZThhMWYwODQ2ZTcwYTQwMTE2NzA3YTc4MzdmNjQ2YTk5IGxlZ2FjeS10cnVuaworMTUxMTIgMWU3OTFkMmU4ODc1MmUyZWU3NmQ5NjY1MTdlNmIxYjdhZjUyZWNlZiBsZWdhY3ktdHJ1bmsKKzE1MTEzIDViNTllYTQxZGI0ZTg2OTBiMTY3NmU0ZTUwYzVkMGRkNjZiMmIxYjIgbGVnYWN5LXRydW5rCisxNTExNCBmYmM4ZGFmYTQ0ODRjN2UwYjRjYTRjYzYzMWNjNWRjZDc4NGZhZWRhIGxlZ2FjeS10cnVuaworMTUxMTUgMTFlY2I2NjcwZjRmOWU0ODAxNjU2MWUxODMwZWQ1MWFkZDRjZGEyOSBsZWdhY3ktdHJ1bmsKKzE1MTE2IGY3M2JmNDkyNDM4NjgyZjM4Y2ZkODhkYjVmYTZkODk2YjY4ZjM3YjMgbGVnYWN5LXRydW5rCisxNTExNyA3OTFhMTEyYmUzYmNmOGJhY2E4MWMyNjlkOTdlMGJhMGMzNmE4YTNkIGxlZ2FjeS10cnVuaworMTUxMTggODc3OTY5ZWMwOTZmZDRmNjEwNTg2Y2I1YmE5YjZiOTkxMmYwOThkMiBsZWdhY3ktdHJ1bmsKKzE1MTE5IDdmNjUwZGYyNzFjOWUzZWU5ZjNjOWI1MDA4OWRjOGY3M2RjZGRlZWIgbGVnYWN5LXRydW5rCisxNTEyMCBlNjRmYWE2ZTI3MDIyZDMzYjUxYzMxNWRlYmQyMWRkYTM3ZGI3NTk5IGxlZ2FjeS10cnVuaworMTUxMjEgN2ZhNzZjY2RmMmRlNzNmMzY4MjQ0NjkwN2U5N2U2NGVkYzMzNjAwZiBsZWdhY3ktdHJ1bmsKKzE1MTIyIDA0ODEwOTZhMGY0NWJjOTcwODE3ZDZmYjljZjExNDA0ZDQ5YTM3NDMgbGVnYWN5LXRydW5rCisxNTEyMyA2NzdlMjE0NzgyOWE5ZDJjYTBiOWZmNGRjZGE3N2YxODVhM2Y3ODZkIGxlZ2FjeS10cnVuaworMTUxMjQgYzJkMGQ2NzQ0YjNiYjdlNTE0NGI3YjM5ODBhOTAxZWE4MWZiZjIxYSBsZWdhY3ktdHJ1bmsKKzE1MTI1IDY4ZTQ4YmI5NDA3MTFmYjE4YTZjNjdiMDc2ZTMzM2U4Yzc3MzM1OTUgbGVnYWN5LXRydW5rCisxNTEyNiBhZjg3ZmNhZTg4MGZkOWM4ZTQ3NWZkY2ZjZjg4Y2YzZGI2ZjI2NWZkIGxlZ2FjeS10cnVuaworMTUxMjcgNDI5YTM3ZmY5ZGI1Y2MyN2JlOTE2MGQ4Mzc3MjU2N2I2NTI4OTA4YiBsZWdhY3ktdHJ1bmsKKzE1MTI4IDIxNDMwM2QzMmY3NjY0ZDQzZjg0YmRkMGE2NThjYWFkM2QyMzRjNDkgbGVnYWN5LXRydW5rCisxNTEyOSBkNjNiNTdhYzYxN2Q0ZGIyM2JiYTZhNGQ2MzRiZjJjOTg3NDM2NmI3IGxlZ2FjeS10cnVuaworMTUxMzAgZjU3YWYzNjBiN2U1ZWYzN2U2M2E4ODZmY2M4NGE5NzFiOWJlYTJjZSBsZWdhY3ktdHJ1bmsKKzE1MTMwIDAxMWJlZThmZDlmN2Y0ZGE0NTdlYzcxNTk2NDg0ZmIwODgyYzA2MTQgbGVnYWN5LXRydW5rCisxNTEzMiA2Y2U2YzIzYWNkMTQyMWM4NjE0YWRiNGFhNzZkMjczOWIxM2ZjZTJkIGxlZ2FjeS10cnVuaworMTUxMzMgMDUyZmJkOTMxNDkyMWZmN2M3ZTgyZGUxODgyYjMyNTYyOWFlMWRkYiBsZWdhY3ktdHJ1bmsKKzE1MTM0IDYzYWQ3NTRhYTMwZWUyZTY2ZTZlNTAwNWFhNWVkNmYyNjMyZWJhMDEgbGVnYWN5LXRydW5rCisxNTEzNSAzYmUyZjc1NGMwMjM5YjgxYmUxMjM2NDI2NjgwMTI0ZjA3OGRlMDA2IGxlZ2FjeS10cnVuaworMTUxMzYgMzdkOWRlZDVhYjkxNDUwOWY0NDMyZTQzMGE2ZjY3YWNiODUxYWM2NCBsZWdhY3ktdHJ1bmsKKzE1MTM3IDExNmMzYWEzY2NmNzJkMTVkZThjNTZkZDI0NGY3Yjc5Mzk3Mjg2MTMgbGVnYWN5LXRydW5rCisxNTEzOCA1ZjI5ZDdjMDI0MzM4NzE4NThkY2M0NzIxNThhMGRmMGJhNWM2ZjUyIGxlZ2FjeS10cnVuaworMTUxNDAgYmU4MjU3M2U0NDQ0ODJkNTA5M2UwNDVkNjUwM2E3MGUyMjQzYjE4YyBsZWdhY3ktdHJ1bmsKKzE1MTQxIGFhMDEzZjJjZjgwYmU4YmQwMTVhYTg3YmJkYTQ5ODk0NTczZjI2ODYgbGVnYWN5LXRydW5rCisxNTE0MiA2MjcyMjZkZjlmMDE4MWQ5YTc1MTBkYjQ0ZTFhZWZiNWZjZWY2ZGMwIGxlZ2FjeS10cnVuaworMTUxNDMgMzJlOWQwZTc4OTM1MzM0MzY0OWEyNWE5ZTZhNzg1ZWUzODYwZDBlNiBsZWdhY3ktdHJ1bmsKKzE1MTQ0IGVlZjZhMjVmMDljNTMxNmRiOGEyMTkzNTMxYzUyNmUwZmIzZjI1NDMgbGVnYWN5LXRydW5rCisxNTE0NSBjNDgxNzJhZjEzZGMxNTI4Y2FlZTY1YTA2ZTE3MWVlMGY1MDJmMzExIGxlZ2FjeS10cnVuaworMTUxNDYgZTViMGJlYTAzY2ZhNTA1NTZlY2VhMTAwNWFhODU0NzgwZjFmZDQzYiBsZWdhY3ktdHJ1bmsKKzE1MTQ3IDZlZGJhZTZkYmNmNTVhOGI3YjJjNjg3OTI4OTQ1MDczZmI5ZDIzY2IgbGVnYWN5LXRydW5rCisxNTE0OCBhNmYwYjM5OWY2NjU2OTU5MTk4MDk4YjE3YThjZDZlZjIxMDk2NDg3IGxlZ2FjeS10cnVuaworMTUxNDkgOGQ3ZTA3NzM3YjRjNmExNGMyZWZlZjFhOGFhNDQ3YTM0YzMxYjRkNCBsZWdhY3ktdHJ1bmsKKzE1MTUwIGEwNDk4YjE1MjQ0Y2QxMGM4ZGJhYTIwMDYzZDk1MWNmODRmMDMyYjkgbGVnYWN5LXRydW5rCisxNTE1MSA2MGRkOTVjNzU5OTk5MzYyOWM0OTZkZTJjNDYzMTQwM2U2ZTViODQ2IGxlZ2FjeS10cnVuaworMTUxNTIgM2JiMzk4OTk2MjkxZjkzZjIxZjc0ODFiMmQzZjRiMDdkMTM2NjY3ZSBsZWdhY3ktdHJ1bmsKKzE1MTUzIGY4MmIyNTc3ZmEwY2YwNjcyNmY3YTQ4YWUxMjY4NzEzY2I0ZTk3MWUgbGVnYWN5LXRydW5rCisxNTE1NCBmMDcwNWJjZjY3M2IyYzc1M2ExNGJhMDczMzY3NDEyYzA4ZDZjYjBkIGxlZ2FjeS10cnVuaworMTUxNTUgMjM5MmQxMGUyMWYxNjk0ZjY3YTk0NzI0MGMzODg3MjA5ODYwNGEzYSBsZWdhY3ktdHJ1bmsKKzE1MTU2IDhiZjkxMzAyMDYwNGVjZGVkNDc5ODJkNDY0ODUzMDhjYzZlYWQ1OTcgbGVnYWN5LXRydW5rCisxNTE1NyA5ZjJjN2Y3MjcyZmE3MWVkYjBjMWRhOTc3OGY1NzMwNDE1YmU2YjU2IGxlZ2FjeS10cnVuaworMTUxNTggYTU3NDNlMTQ3ODYwYzE2YWE2NWIzYzg1Y2I2OWRmZGE2NDJiNWY5YyBsZWdhY3ktdHJ1bmsKKzE1MTU5IDRjNTFhOTY2ZDJhMzkwZWIzNjE0NGVlNzMzZGU1MGNkZDg3NDkyNTggbGVnYWN5LXRydW5rCisxNTE2MCA4MWM5NjZiMzVjMTI2MjIwMWJmNmNjZTVmYjQ1MzNhZDE5ODBhNTE2IGxlZ2FjeS10cnVuaworMTUxNjEgNjdlOTYxNTc3ZDBlYjhmYTM4ZWQ5Y2E5NjRkZTU0NzAzYjcyOGMxOSBsZWdhY3ktdHJ1bmsKKzE1MTYyIDE1NTU0ZDNhNjhjNzE1YzgzOTVlZDE0NWMyMzE2ZWZiMTMwYWMxZDcgbGVnYWN5LXRydW5rCisxNTE2MyBlYzZiNmNhNWQxMTE2MjNhZjc1YmM2ZmQwNTJkYmJhZjI5NTZmMDJiIGxlZ2FjeS10cnVuaworMTUxNjQgMDFjZmY5ZmUyZDQ1MjEyOTU1OGI0N2RkN2RmN2MxYWYyNjY0MjQ4MSBsZWdhY3ktdHJ1bmsKKzE1MTY1IDJmYjZjNzM5ZDMyNDcxYzExZGRlMWRlNTc0MWRiZTRlNmVlNDJmMjIgbGVnYWN5LXRydW5rCisxNTE2NiBjYjRmMGQ4MTg4MGQ1YjRiNTgzNTkyMmViNTcyYmFmZWUyMjRjNTFlIGxlZ2FjeS10cnVuaworMTUxNjcgNWI4NzBjMGVhN2I2MWEwZjhkYjQwYmJlZTYxNjEyYTQ2NDI3OWVjNSBsZWdhY3ktdHJ1bmsKKzE1MTY4IDRjNWQ2MmU4Njc1YjM4OTEyNGI2MmM5MWQ4OGExMTc0ZTNkZDljZWIgbGVnYWN5LXRydW5rCisxNTE2OSBhZTUyNWFiMjNlZWZjNjFlYzUyZGJlOTc3MWUyNmU0NWIyOGY2OGY1IGxlZ2FjeS10cnVuaworMTUxNzAgN2RlOTAyYzFmNDM5ZTU2ZDFlOTA4ZmY4MTAzYjZmNDQzMGQwMGU3NCBsZWdhY3ktdHJ1bmsKKzE1MTcxIDJmYzUzZGRhMjBlYjYzZTQ1NzBjY2I0MzRhODU3ZWI2NDdhN2ZhMDAgbGVnYWN5LXRydW5rCisxNTE3MiAwYjY4OTkwMDg5ZDIxNDllMDM0MmYwMmM2ZmMxZTU0ZTVhNGI4MzIwIGxlZ2FjeS10cnVuaworMTUxNzMgOTVlMjk2ZTY3YTEyYzAxZGQ2MjlkODhjM2U2ODQ3NzhhNGY4ZjljYyBsZWdhY3ktdHJ1bmsKKzE1MTc0IDI1OWM0YjljNGM4ODk3NmZiMjMxNzFmZmM5YjlkYmNlZWY2NmUyNDAgbGVnYWN5LXRydW5rCisxNTE3NSBhZTEwNjM3OWU3NTZjMjc3NmNhNjljMDQzZTFmY2FmMGQ5NzRiNDFkIGxlZ2FjeS10cnVuaworMTUxNzYgMWM4NWFlNjc2YmE3ZTVkYmI4MjEwNjZmODQ0MDUzOTNiMWZjYTMxYSBsZWdhY3ktdHJ1bmsKKzE1MTc3IDM2MjYyNjExODliNDhkOWIxN2EzNmM3ZTUzMWYwZjczNTgzMWFkMGIgbGVnYWN5LXRydW5rCisxNTE3OCA2OTc5OTY2ZWU5NGRhMTY3YTBlYzE2YWQ1MmM5ZWE4YjBiZTM1NzZjIGxlZ2FjeS10cnVuaworMTUxNzkgNmZiNDBhODVhNTE5NzU4OTk1NGY2MjIzMzZlMDQ4N2JlZDg5MGE3OCBsZWdhY3ktdHJ1bmsKKzE1MTgwIDBkMTNjZTJlMTU1YjkzODI2N2YzZjQxOTlhMDliZDY4NDRhNDVlOWMgbGVnYWN5LXRydW5rCisxNTE4MSAwYWU2MzUyM2Q1MDRiZGZhMzg4YzE2NjliODMzNzc4ZjRlZGIzMGU2IGxlZ2FjeS10cnVuaworMTUxODIgYzBiZjNlZDkzODM1ODBmZmUwNzJlOWY1YmFkNjQzMjg5ZTQxMjlkYSBsZWdhY3ktdHJ1bmsKKzE1MTgzIGU4N2U2YmRmY2JkYzY3Nzg5MWQyMzY1MDNmNmQwYzY2NzU2NTg1M2UgbGVnYWN5LXRydW5rCisxNTE4NCA5NzhjOTY4N2JlZWY0ZmQ2NGRlYjU1NDg0Y2MyZDFkNzk4NjY2ZDU3IGxlZ2FjeS10cnVuaworMTUxODUgNmIyYjlhMjNhNDFmMWY4Y2E1NjQ4Njg1YzRlYzY0M2MwYjUxNWJlYSBsZWdhY3ktdHJ1bmsKKzE1MTg2IGQ5NDAwYzQ3NmI5ZGMyZTVlMzExNjQ3ZGNhYmE0M2M5MGUxY2Y0NjUgbGVnYWN5LXRydW5rCisxNTE4NyBjNjA1OWU3MGJhYjIzYmViZDQ4NjdmOTAyZWM2NGFlNjczNGVkOTViIGxlZ2FjeS10cnVuaworMTUxODggY2E5ODk0MmZlMTAzYjljYzIyMDIxMjgxOGVlNGQ3MWE1YjJlZWMzNiBsZWdhY3ktdHJ1bmsKKzE1MTg5IDNmZDEzMjIyYTg3NmYzYTE4Nzc4OTk5NmM4MmU2Nzk4MDMxNzA2MjUgbGVnYWN5LXRydW5rCisxNTE5MCA4MTYxMzM0OTQyZDRmZjViMzFhNjAxOThhOTZkODBlMmMxOTcwZWJkIGxlZ2FjeS10cnVuaworMTUxOTEgNmE4Y2QwNjgyMDk2MWVhYjkwMGIyNzNlYWYzM2ExNzdmMGQ4NjI2YiBsZWdhY3ktdHJ1bmsKKzE1MTkyIGNhN2I5OWQyN2E0MDcxYTFlMWE5YzU1OTlkODE3YjcyMDhmNDRhMjIgbGVnYWN5LXRydW5rCisxNTE5MyBkZmY3YjI2MTE2ZGViZDNiZjRkZDE0YzVkZmEyMjViZjE4ZGE3YjFlIGxlZ2FjeS10cnVuaworMTUxOTQgODI4OWMwZTU1MWNkMzEyODRmZmI4YmZiY2I5Mjg1MmY5ZGE3YjNjZSBsZWdhY3ktdHJ1bmsKKzE1MTk1IGYwYjcxOTEzYzBhYTdiMDhjYzMwNzM3NGZmZWEwMzdiOWE2NTI5YzcgbGVnYWN5LXRydW5rCisxNTE5NiA0NTY4NjllYWE3ZDU5MWE1ZGRiODdiNWQ1YWFkMjc4ZDgzMmU4MWJmIGxlZ2FjeS10cnVuaworMTUxOTcgZDQ3NDYwYjFhNjc5OTcyNzcwNDNmYzI1MzVmMjYyN2U0ZjFkZjVjMyBsZWdhY3ktdHJ1bmsKKzE1MTk4IGQ3NjMzNDFkMzMxMGJlMGViNDZmNTVjYTgwYjRjOTgwMWQ0MmFmNTEgbGVnYWN5LXRydW5rCisxNTE5OSBjOTliYmE5ZTkyMTJjYjEwZGUzNDUzNjVmZGQ1ZjM1OTllMmM2ZGFiIGxlZ2FjeS10cnVuaworMTUyMDAgZjg3NjE2NGZhMTUxNDk4OWQxZjQzMTcyM2U1NDNlMTM5NWExNDkzYSBsZWdhY3ktdHJ1bmsKKzE1MjAxIDAzYjgxOTEyODM1ZWJlOWI1YzFhZWYxOGM3OTE4MmYxMzk2OTdmMDQgbGVnYWN5LXRydW5rCisxNTIwMiA5YzRhNGU2YmQ1NTVhZWQwYTc2MTNhZjRkZTE4NTVmMmU2OTA5YzFjIGxlZ2FjeS10cnVuaworMTUyMDMgZTM2N2FkM2VhNTlhODYxZDMxYjEwYzhlMWU4YzBmMTg4YzJkZGU1MyBsZWdhY3ktdHJ1bmsKKzE1MjA0IDk1MWQ4NGUxZDU0YmViMDA3NjQ5M2VmMTVlMGMxOTI1NjVkZGVjMjYgbGVnYWN5LXRydW5rCisxNTIwNSBlM2JiMjM5YjJkYmY1ZTA1ZGI3ZTRkODIyYTFhNzNiZTQ4OTQ0YThiIGxlZ2FjeS10cnVuaworMTUyMDYgMTlmNTNkOGJkMjk4MTA2YzI4Njc2NDljYjllMDJkYWU1MzY2ZGM5MiBsZWdhY3ktdHJ1bmsKKzE1MjA3IDE2ZGM4MDczMWMyM2EyMGMxOTAzNGYwN2FiNjllNDEyZjY1ZTg3MmQgbGVnYWN5LXRydW5rCisxNTIwOCAzM2JhMDYyNmVmNzJhOWUxMDNhODVlMzUzODk5YjY5NWFlOWE1NzU1IGxlZ2FjeS10cnVuaworMTUyMDkgMzQ2OWIyZjE3NjI0Zjg2MjcyMTRjMTZiOTlhZTVkZjBkMTZhZWFkNSBsZWdhY3ktdHJ1bmsKKzE1MjExIGQwZjI5MGIzYzBiMjNiYzA1ODRhZDk0YzFjMDk3MDc3MjBjMzZkNmMgbGVnYWN5LXRydW5rCisxNTIxMiA0ODYxNjE4OTQ1MDdmNDA1OGU3ZTRlN2I1NzQ2ODY1ZDVjNzViODAzIGxlZ2FjeS10cnVuaworMTUyMTMgNGNiMzMzNDgyMTYwYzhmODIzMDljY2RhMWU5YzQ2NDFkODRiNGUxYiBsZWdhY3ktdHJ1bmsKKzE1MjE0IGRlMzY1YjY1YzE3YmM4ZDlmMzJmMGNlNjlhNGE4YzRkZTRiYzAzYjYgbGVnYWN5LXRydW5rCisxNTIxNSBkNWZkYzliMWU0NzRjNzIxY2VlZDVmYzYyNTkxZWU2OTJiZjllNzcxIGxlZ2FjeS10cnVuaworMTUyMTYgYzI4ZmEwMWU3MzI5YzNjNDE2YzFmZDVlYWJmZTVmZGE3YzcyODk3YSBsZWdhY3ktdHJ1bmsKKzE1MjE3IGU3NjIzZDAxOTI3YzhjOWZiNWJkOTI5M2U1MTFkODliMmNmZjZhY2YgbGVnYWN5LXRydW5rCisxNTIxOCBlNWIzMWFjYjEwY2ViNmJmMTM4ZDI5ZWZmOGYwZDllNjEyMDIyMjFiIGxlZ2FjeS10cnVuaworMTUyMTkgZmQwZTVkYWVmODZhZTZkYTJlNmY3ZTBiODhkMmFmOTYyOTg3MWE2YSBsZWdhY3ktdHJ1bmsKKzE1MjIwIDE0NGE4OTU3MGEzOWNmMDVjNTE0N2VlYTNjMmM3YTJmYThmZmI3MGMgbGVnYWN5LXRydW5rCisxNTIyMSA3NGQ0ZTQ1M2E3ZjdkYTM5NjVlMTUzOGIwY2VkMzk2MDFjNDY4ZDFlIGxlZ2FjeS10cnVuaworMTUyMjIgMTg5NTFhMDI0ZDExZGYyYTc1ODkwNmJiNjI3ZTU5OWY0NjZhOGQ0YiBsZWdhY3ktdHJ1bmsKKzE1MjIzIDZmNTA5NmE4ZDAzYTIwYjhjNTc1YWM2Yzk5Nzk2MWM4NGQ0YjU3ODEgbGVnYWN5LXRydW5rCisxNTIyNCA0OWIwYjg0NmY2ODM0NzJkMzQzMDYxZWQwMTFlZjNmMGVkMzEwMzliIGxlZ2FjeS10cnVuaworMTUyMjUgMGJmOGFiZDAyYmQ4ZDdjZDFlNjRlNzRhYjE4ZmNhNmQ3MDAyNWE0OCBsZWdhY3ktdHJ1bmsKKzE1MjI2IDE4MWM2Zjk1ZjZmNmE1ZWJiZTNjN2MzZGU5YTc4ODQzZDVkYzM4MmUgbGVnYWN5LXRydW5rCisxNTIyNyA3NjEzZjhiM2MxY2U0Y2Q1MDk4ZGVlMjY3OTFlMjNkMWM3NDIyYzJiIGxlZ2FjeS10cnVuaworMTUyMjggZTM5ZWI5MGIyNTBhMDJhNjI0MWRmYzQ5NjcwNzYyMjY0ODhjNzExNSBsZWdhY3ktdHJ1bmsKKzE1MjI5IDJhMmQ1ZmY5MzMwODA3NzE4NjViOWJhMGVlMGMzY2QzOTY5MmNlZWYgbGVnYWN5LXRydW5rCisxNTIzMCBlNTY3ZTMzZGU2NDViZjcwZDI1ZTZhNGE2MjhhYjA3OWUyZmUzNjg0IGxlZ2FjeS10cnVuaworMTUyMzEgZmNiOTJiOTZmMWFmYjU2MDM5MzEyYzAyMjMwNWRjZjc4N2Y3MTE1ZCBsZWdhY3ktdHJ1bmsKKzE1MjMyIDY5OWRmYjEyNTRjYmY3MjM4YmYyOTJmNDllYjdjMTU3YjAxMTljYjQgbGVnYWN5LXRydW5rCisxNTIzMyBjMjdmNDg0YWVmZmZhN2ZlNDMwNmZmMTQ2NWVhNjY0MDE0M2YwNjc1IGxlZ2FjeS10cnVuaworMTUyMzQgMzUwMGM0MzUwZjYyNmUxMTBjMDg5MjU1NDJlN2U4MzY4ZTFjNTY2YSBsZWdhY3ktdHJ1bmsKKzE1MjM1IGYxYmZmMWVjNzk2YjY0MTA5MzIxMTVjMTY0OGRmNzkzMGU0MjQ4Y2QgbGVnYWN5LXRydW5rCisxNTIzNiA4NjZhZjFkODc5NzA4NGM2NzJhZmM4YTY1MzU3YTEzODc3ZTU3YmNiIGxlZ2FjeS10cnVuaworMTUyMzcgYTNlMWZlY2I0M2M2ZTUxOWRkYWRkMTUwNzBlMDc3MTBmZTBmZjU5ZCBsZWdhY3ktdHJ1bmsKKzE1MjM4IGJlMWQ3NWUxNmNiODE2MjllNGMxOThlNGZkZGZjNGFlOWZkMWI5YzAgbGVnYWN5LXRydW5rCisxNTIzOSBhODg5OGExNzJmZTJmMDc2OTcyNTc1NzVmMzQ2NTkzNGE2OWRjZDczIGxlZ2FjeS10cnVuaworMTUyNDAgYTNjMGI2Y2RkMTY4YTY5NDMxM2ZiYWQ4OWNiOGI3OTU5MzMwMzVkOSBsZWdhY3ktdHJ1bmsKKzE1MjQxIDE5ZTNlOGY4YzU3NGQyMmE2ODZiYTM5MWQyNDkxZjYwMGQzN2U4NzIgbGVnYWN5LXRydW5rCisxNTI0MiBmYzI3Njg3NzVmODIxOTgzOTAyZWJhNTA5MTYxZDI4YjIzN2NmNmIxIGxlZ2FjeS10cnVuaworMTUyNDMgMGRiNWEzNjAyNTI2MWZmOGU2NzFmMDQ3YTZlNzQ4ZGYyMzhiMGJmNSBsZWdhY3ktdHJ1bmsKKzE1MjQ1IDEwYWRiZjgxODNlNjhlMDI3ZDU1OTk5NWYxMDdmMTI4YmQ2ZmI0YjcgbGVnYWN5LXRydW5rCisxNTI0NiBmMWU4NjdhZDdkODVhYzNhMzA0MDJjYzQ5MjNjOWE5NDI2ZDBjMzhiIGxlZ2FjeS10cnVuaworMTUyNDcgOGIzMzBkMTYzODAwNzcxODA1NjU4MDcwNzE3NWNmYThjNTg0MmY0MiBsZWdhY3ktdHJ1bmsKKzE1MjQ4IDE5NTg1NzFkMjVjMTZiY2U0ZGZjYzU5Njg4Mjg1ZWJmMzI1YTk0ZDUgbGVnYWN5LXRydW5rCisxNTI0OSA0Y2VlMmRhM2RhY2ZkNzVkYzdkMTE3MzhiMjk0YWMzZTM1YmM0NTMyIGxlZ2FjeS10cnVuaworMTUyNTAgNzIwZDM1NTZiMTQzODUyMTdmZjM1NjE2YjJiZTU2YjM2NzlmMjAxNSBsZWdhY3ktdHJ1bmsKKzE1MjUxIDE3MjVlODAyZTNlYmQ1MmU3ZGE1YmQ5YTg0Mjc2MGI3YTY1OWM3ZWQgbGVnYWN5LXRydW5rCisxNTI1MiAwNGNmYTEzNDFhNTA5YzE3OTY5ZDkxYTRmMjdlNzlhYjUwNTU2YjUyIGxlZ2FjeS10cnVuaworMTUyNTMgMWNiYTY1ODljZTY2N2NlZjdjNDU2OTk1NDlmZmRlZTA4MzYwNzE2ZCBsZWdhY3ktdHJ1bmsKKzE1MjU0IGJlZjI0ZDQ4YWZjOGM1YjRkMzZhZDE4YzYwNDIyMDY2N2NiZTE5MWMgbGVnYWN5LXRydW5rCisxNTI1NSAyYTUzYTNhNDc5NjJhOGZmMmYwODRlYzM2Y2ZkZWQ3OGNiZWJlZDgyIGxlZ2FjeS10cnVuaworMTUyNTYgZTUwYmJiOGU5OGRhZDJhZThiYzJjODdjNTIxNzdjNGU0NWI4ZDI3MCBsZWdhY3ktdHJ1bmsKKzE1MjU3IDBkNzU1NTVlZDZlYjZkOTcwOTA2ZWFkMGFjYTY1OTIzZWVjNDJiZGYgbGVnYWN5LXRydW5rCisxNTI1OCAwNzgwYWJhOTc4OTg5MzE4YWYyMGZlNGVkNjIzNTZmMTYwOWQwMzY4IGxlZ2FjeS10cnVuaworMTUyNTkgZWI0MzNlZmEyNGRlZWE4NDYyZGYwNTA4NTkwNDlkYjQ4YjI5Y2Y1YSBsZWdhY3ktdHJ1bmsKKzE1MjYwIGJkOTJjNTNiMTY2OTkzMzQ0YTE0YjUyODQ1NDE0MDNiODk3MDViZTkgbGVnYWN5LXRydW5rCisxNTI2MSAyY2UyYTgzMjUzZTgwMzE3YzQyN2JmZmE2NTZiZjY4Y2VjNTg4YjdiIGxlZ2FjeS10cnVuaworMTUyNjIgMjExNDgzYmQwYTUxODJkY2I2MzYwYzNlNjgwMjUzYjdjODY5ODVmYSBsZWdhY3ktdHJ1bmsKKzE1MjYzIDQ0ZTUyMWE5MzY0OGE1MTI3ZWE0ZDcwYThmNWY4ODk0ZmNkNTMxM2QgbGVnYWN5LXRydW5rCisxNTI2NCA1YzNlNTk5OWRhYTE2YjgxMTk2OTNmNzk5NzQyMzU2OGJlYzVkMzA4IGxlZ2FjeS10cnVuaworMTUyNjUgZjRkZDdjODg0OGZjYTQ1ZDhiM2ViMGEzZWRlMmIwNDEwN2MzM2VjMCBsZWdhY3ktdHJ1bmsKKzE1MjY2IDU2NjFmNGY5YTQ3Zjc5ODQ4OGI0OWZhNTk3Y2Q3MjExN2M4N2EyN2MgbGVnYWN5LXRydW5rCisxNTI2NyBiNzZiYWNjY2QzNDYzMTBkNjJhOTc5YmU3ZGE5YjFmNDQxODcxNjZiIGxlZ2FjeS10cnVuaworMTUyNjggZTYzZWNjYmE4NzNiNzY0NzQxYWU1NDI0ZGE0NjMxZGUxMzY0NzlkYyBsZWdhY3ktdHJ1bmsKKzE1MjY5IDEzYTE2NzkzYmIxY2YwODA5OGNiZGFhYzc0ZDBmMDBiOGNhMTVjOGQgbGVnYWN5LXRydW5rCisxNTI3MCA4NzQ3ZjFjOGI1ZmJlYjFmNzhkZjNhMzlmNjdmM2JhNzlmZWEwOWZiIGxlZ2FjeS10cnVuaworMTUyNzEgYTYxMTU3MzI4YjEyMWUxNWRiNjExMTNiYmQ1ZDhhNDUzMjYyZThiOCBsZWdhY3ktdHJ1bmsKKzE1MjcyIGNhMGU5ZDk3ZDU1NGM0ODVhZGQ2YmI4YTg1NTllMjE5MWQ4NTU4YjcgbGVnYWN5LXRydW5rCisxNTI3MyBiYTU0ODYyYzg3ODVjMjBlZjg4N2RmNDk2NTBhN2IzYmU0ZjhmMmIxIGxlZ2FjeS10cnVuaworMTUyNzQgZmI0Nzc1MTExZWQ5ZDUxMmY1MWM4MDQ0ZGQxZTM3MGFmNTE4ZmYwMyBsZWdhY3ktdHJ1bmsKKzE1Mjc1IGU2ZTkxNGQ1YjIwNzJmZTQ2ZWRkNTg2ZGQ0M2Q3NjgzNDU4OTI0MDcgbGVnYWN5LXRydW5rCisxNTI3NiA2ZWJlMGFjYjc3NzY0OTEyY2EzZTA4YWEzMmRhYzg4NmUyZmNjYTI1IGxlZ2FjeS10cnVuaworMTUyNzcgOWU1M2E3MTEyMzk1ZmI0MDlkODA1NmQzODMzYmIyYjY4MWUzNTFlMCBsZWdhY3ktdHJ1bmsKKzE1Mjc4IGFmOWQ2MjNiYWJiMDc3MTc3NTEwYjhjZjAwOGU4ODY2MTRmOTFlOWEgbGVnYWN5LXRydW5rCisxNTI3OSBiNmI3YmQyMGM4NDViNzM3Njg5YjEyOTBjNTEwN2EwYWJiZDQyMTkyIGxlZ2FjeS10cnVuaworMTUyODAgZDM1N2FlOGZiZmU1OTBhYWFiMWNmNWU2Y2E0ZjRhYTg3MWNiNDMwNSBsZWdhY3ktdHJ1bmsKKzE1MjgxIDBjMjhjOWNhYmJkYWViMGZiOTdlZDY1MmRmYjk2MDNmN2MzN2YwZDYgbGVnYWN5LXRydW5rCisxNTI4MiAwMTllYWVmNjM3ZmY1Zjk5Y2U2MTJhMWQ5Zjg4ZDRhZDkzYzIzZTI0IGxlZ2FjeS10cnVuaworMTUyODMgNGFlMTI3MzEyYmJmZDc4NWVkYjdmZDMxNzk4ZTRkOGY0MGJlZmFkMSBsZWdhY3ktdHJ1bmsKKzE1Mjg0IGI0NzZlNGE4Yzg5MTFkMmM0ZWVhYmFkY2YxZDc1MTliM2RlNDQ2YjIgbGVnYWN5LXRydW5rCisxNTI4NSA2ZjczODQ4Yjg0NTIxOTE5M2YwZTBkMmJhZTBjNWViMGFkMTliODY5IGxlZ2FjeS10cnVuaworMTUyODYgNWFlODViZGM1ZjYxNjUwYTU0ZGQ4MWY4MWEzYjM4MDYyMWFjMzMzZSBsZWdhY3ktdHJ1bmsKKzE1Mjg3IGMwYWRiYzljYTU4MTMxOGQ2NDQyOTg2Y2RjMzJhYjRlNDY2MjZkMjAgbGVnYWN5LXRydW5rCisxNTI4OCA1NDBkOWJiMTY0MzlmMDdiYWNlMDdhZjdhMzg2MTQ0MmI2MmU1ZTRjIGxlZ2FjeS10cnVuaworMTUyODkgYzJiYjVlNGIwNGE4OWQ2M2Y3MDI4NDM0MjRiNmZjMzY2MjVkNTJhMSBsZWdhY3ktdHJ1bmsKKzE1MjkwIDg0Y2Q1MmI1NjBlNTcxZWJhMzcxZDcxMzZhYmNjOWM0MmMyN2IwMDIgbGVnYWN5LXRydW5rCisxNTI5MSA4MmNiYjJkZmU4YmRiMjdiZTEyMzcwYmRhODMwYzkyNzU2MDQ4ZDQ0IGxlZ2FjeS10cnVuaworMTUyOTIgNTIzNTY1NmY5ZDBmMGUyMmRjZDExM2E1MDg4NzFmYjYwY2E1MjA5NCBsZWdhY3ktdHJ1bmsKKzE1MjkzIDE4OTI5OGExZmFiNGMyMjMyODZmZGQyNjg3NzkzM2UxMWU0MWU4OTAgbGVnYWN5LXRydW5rCisxNTI5NCA4YTUwMzY1NDQ3Mjc3ODgzNWYxYjVmYjJmY2U3MTMwNDIzYmJiMmRiIGxlZ2FjeS10cnVuaworMTUyOTUgY2MwNWVkY2NjZjUyYmEzN2FmNTJkZTQ4MDY5ZjY4MjM1MmM0MGFlMiBsZWdhY3ktdHJ1bmsKKzE1Mjk2IDdjYzNkZDdjZDMxYWM2YTVjZjgyNmZiMGJjODNkNmRmZmMzOTZjMjEgbGVnYWN5LXRydW5rCisxNTI5NyA4NTllNTAwZjA3NjAwNDYzZDU3ZGJiOWY2Njg3ZTYxMzQ5YTc2NmY1IGxlZ2FjeS10cnVuaworMTUyOTggZDc0ODRhNzQzMzU0MWFhOTc4ZjA0MzcyNmJjNzlmNTIxN2RhMjAwOSBsZWdhY3ktdHJ1bmsKKzE1Mjk5IDgxYTEyMWQyMTM0MDgzZmRiYmYzMjZlNjE3NGYxMzc5N2IzNGEwNGYgbGVnYWN5LXRydW5rCisxNTMwMCBjMzRiYTNlM2NmY2QzODUwZGNjNDE3ZTZiYmE5YzdiNTcyODk5NDRjIGxlZ2FjeS10cnVuaworMTUzMDEgNTllZTE3MTI0NTExNTljOTE4YWQyOTg2NjRlOTdkODFiNGVhMGU0NyBsZWdhY3ktdHJ1bmsKKzE1MzAyIGM4ZGJkNWY3MDI4OGI4NDljN2UwYWY5MzM3ZWM3YTA4NDYzNmM3NTIgbGVnYWN5LXRydW5rCisxNTMwMyA1OTliZmE0ZmZkNDljMTQ1OTRiY2I1NDQyMGMwYjQzMWQxOGE3NzQ1IGxlZ2FjeS10cnVuaworMTUzMDQgNmI2NDdlMDg3OTI1YWI3NzM4ZDQxZDU4MThmYjQ4YmQ0N2M3YjM4NyBsZWdhY3ktdHJ1bmsKKzE1MzA1IDc2OWVkYjJkYThiOTNmZjdhMjE0YTgyYTAxMWJhMjQwNWFmMGFmMDYgbGVnYWN5LXRydW5rCisxNTMwNiAxNzdlNjFjNTU0MjZkYjQxNjY4MmY5YTY3OGNiNDRhYzYxN2VmNjEzIGxlZ2FjeS10cnVuaworMTUzMDcgM2U2ZThmNzZhOTg4MzgzNjM4ZGM4NzU4N2FlNGM4YjMxMDk0YWU2ZCBsZWdhY3ktdHJ1bmsKKzE1MzA4IGVmZDFlNWQyMjg0YWY1NGVhMzNmMzM4MWUwM2E2MDRiYzk4NzI1Y2UgbGVnYWN5LXRydW5rCisxNTMwOSBkYzlkMWI3MWNjMzgwYzZmN2VlNTg1NzJlNTQ2ZWI2OGEwYTgyNWRiIGxlZ2FjeS10cnVuaworMTUzMTAgYmVmNjc1ZGMxMWNjMGJjMTg0NDcyZGY2NzBmNmZkN2NhY2U2MzRhZCBsZWdhY3ktdHJ1bmsKKzE1MzExIDY2ZTQ3ZTg1ZWM1M2I1ZWJhODdiMDBhNWVlMTBjZTdjMWUyNWJjMzggbGVnYWN5LXRydW5rCisxNTMxMiAxMmM3NGIxMDJkMDI3ZDdkYjA2ZTNhMmEwMzAzOWQ1Y2VjY2IzNjEyIGxlZ2FjeS10cnVuaworMTUzMTMgOGY3YjI0YjQwZGU3MzYxNzNhNDNjNDkxMzRhMDU0MTdlNjMyZWU5YSBsZWdhY3ktdHJ1bmsKKzE1MzE0IDA0Y2Y3ODhkODYyYmUwNmFhOWZmZjhkOWYxZjJlNTQ4OGQ5MWQ3MDggbGVnYWN5LXRydW5rCisxNTMxNSA3ODM4MGRmYjJhOTA2ZGFlMjZkZDBjYmQ0ZTllMTNhYTc3OWEwOTNhIGxlZ2FjeS10cnVuaworMTUzMTYgOWE4NDFkNjg0NTNhN2M4ZGVlZjUyMTljZDMyYTY3MGI5MDRiYTNlZSBsZWdhY3ktdHJ1bmsKKzE1MzE3IDRkZjg0NjJhMjU5ZGViODgwZjJhNzhmNGM1ZTQ2N2Q4ZDExNGUwMWIgbGVnYWN5LXRydW5rCisxNTMxOCAzYjhkOWU2M2U0ZTE1N2I3MTVlNzk2OGE4NmZhNGJjNGM5ZDg3Mjk0IGxlZ2FjeS10cnVuaworMTUzMTkgMzhkNWExMWQ5Y2Q0YjAwMGVmNjFhNDE2N2ZhNjY3ODczZWI4ZTg5NiBsZWdhY3ktdHJ1bmsKKzE1MzIwIDdiOGQwYTQ3ZGFhOTdiNjY2MDBkOTI2ZjJlYTc1YmE2NGM3ZjUyNWUgbGVnYWN5LXRydW5rCisxNTMyMSA3YjBlMGI1ODY3ZTJkMzk2NjEwMzNiY2I3NjM1ODMzOTI5NGJmOTZkIGxlZ2FjeS10cnVuaworMTUzMjIgYjg3ZDc1Nzk4ZDgxNmMzMmExNGNjZWZlMTgwYmU2MjhmYmRlNWM0ZiBsZWdhY3ktdHJ1bmsKKzE1MzIzIGIwYTQzNTBkNWMwMzEzNzg4MzQxMmFhZTRiNDI3ZjFjZjU3MWI1NDcgbGVnYWN5LXRydW5rCisxNTMyNCA1MzlhMWE5OWE3OGI0ODIzNmYwMGMyZDYyODNiNjFkZTI2MGFkYWNlIGxlZ2FjeS10cnVuaworMTUzMjUgMTllNjFiOGY0ZTAwNmNkZjJiZjY0OGI1NTE1ZWNlNmViOWVkMzliMyBsZWdhY3ktdHJ1bmsKKzE1MzI2IDFiZTIzMzE1ODhiMjM4YjNkOGZkODAyYzJjMzYxNDNhZjE0ODc4YzMgbGVnYWN5LXRydW5rCisxNTMyNyA2NmRkMjk4ZWFmOGE1ZDRhYTVmODJhNjY4YTJjODhiY2FiMjVjZWIyIGxlZ2FjeS10cnVuaworMTUzMjggOWE5N2E3MTRhMWJlMDMwMWVmYzVhNDliYWJiYWRhYWEyNmU4NTcxNiBsZWdhY3ktdHJ1bmsKKzE1MzI5IDNkYmU0MTM4MDI2NjYwODQzYTZkNmJlZjU0ZGNkMzk5ZjM5MTYxOWUgbGVnYWN5LXRydW5rCisxNTMzMCA4YmNkMTQzMTNjMTFjZGM5MTc2OGMxNjUwMWY3ZGNiZDVhM2MwOWQ4IGxlZ2FjeS10cnVuaworMTUzMzEgMGRmMThmOTQ3MjY3OGM2YzBjMzI0Yzg2MDc3M2M4YmIzNTNjMTc2NSBsZWdhY3ktdHJ1bmsKKzE1MzMyIDU5NTJlZjY3ODZjMjAwODMzZmNjM2IxZmFhNGM3MjkxNzFhMzkyMTkgbGVnYWN5LXRydW5rCisxNTMzMyBhZWU3YzQ0YmI0ZmU1YmVmYmVkZTdhOGY4YTQ2NzYwZjRmZTk2ZjU2IGxlZ2FjeS10cnVuaworMTUzMzQgOGJhOGI1ODU3ZTg5NzU2YzhhYjcxZGY3MzhhNzVjODU5YzVlN2YwNyBsZWdhY3ktdHJ1bmsKKzE1MzM1IGFmODZjZjg4MmQwZmZjMGQ2MWFlMTJjZjVlZjdlZWJlYzU3MTJjZmMgdW5sYWJlbGVkLTEuOTguMgorMTUzMzYgMWM3YzJkZDFiZWIxZjgxMDZhN2FmYTYxZDRiOGJhYmNjODNlMTc1NyBsZWdhY3ktdHJ1bmsKKzE1MzM3IGRjNzg5YjNlMmI5Yjk4ZDg0NjBmMDBlMWYxYzkxNWE0NWQyMjExYTUgdW5sYWJlbGVkLTIuMTA4LjIKKzE1MzM4IDg1ZjAwZjhjZDY3NGJiYzYzN2MxODFmZTVhYzc1YTgxNzBlNWFmNDEgbGVnYWN5LXRydW5rCisxNTMzOSAwNzc0NTZjMzI0YmM1OTg5MDE0OTBiYTBhNDUxNzcwMDVlNWMxMGY5IGxlZ2FjeS10cnVuaworMTUzNDAgOTc4MjUzNTQyMDc2MGNiZWU5NjBiODZjMTNmMzhhZDE3ZDk5YTc5ZCBsZWdhY3ktdHJ1bmsKKzE1MzQxIGUwYTEyMDk1ZmFjMmUxMDhkZDdkYzM0NjYyOGI3MGVkMGY0NWZmMzQgbGVnYWN5LXRydW5rCisxNTM0MiA2YWMzYTJjMDA0MGZjYjFkZmI0Yzg4ZDkyZWNhODZiM2U2ZDljMGE5IGxlZ2FjeS10cnVuaworMTUzNDMgMGJhYjFlMzZhM2E2YzIzZjczNmEwOTUxOTgwOWFlOTEzMjkwZGVhOSBsZWdhY3ktdHJ1bmsKKzE1MzQ0IGRiOTQ1OGMyYjYzMTA3ZjM1MDU2MWRhMmZmZmRjN2IzZDVlOGYxOWMgbGVnYWN5LXRydW5rCisxNTM0NSBjZGU0ZGExOGM0ZmEwOWFhZDgyMTlkNjU5NmYxYmZlMzk5N2IyMDczIGxlZ2FjeS10cnVuaworMTUzNDYgMGI5MWMzYjM4NGQ4Y2MzNmVkZDM0YWE0MzYxMzI4OGUzY2ZkNmQ4OCBsZWdhY3ktdHJ1bmsKKzE1MzQ3IDZjZTIxZTQ1YTk2ZWViYjg4OTVhODI4NmZiYTExMzJjNDhlMmFlMzMgbGVnYWN5LXRydW5rCisxNTM0OCA0ODVkNWVhZjBmNzU3MTA2ZjA0NmI0MmM5NzhlYTc1MjBkYTA5MDllIGxlZ2FjeS10cnVuaworMTUzNDkgNTQyNzRiZWIyNDRkMWQ5YjBjNmUzNGRmMjQzYzk3MzI4NGQzZTE3OCBsZWdhY3ktdHJ1bmsKKzE1MzUwIDJjYzZlNmRmZTliYjc1NjVlMzE3YjVmNmI3Y2FmMTE0ODU3NGUwNGMgbGVnYWN5LXRydW5rCisxNTM1MSBjZWY0NWYxYTc5NDMwNzhjYjA0ZGE1Yzk3MmYzNjU2NDgzYTAyNjE0IGxlZ2FjeS10cnVuaworMTUzNTIgZTQ0MjY2MmIyOGUxODkwMDE3MWViOWVjMzQ3M2M2MDU4OWM1YmEyMiBsZWdhY3ktdHJ1bmsKKzE1MzUzIDc2YjMzOTliMzY0Y2RkNjYxNDk4YzgxZmIwOWFmOGFlYzlhYmQ1NDIgbGVnYWN5LXRydW5rCisxNTM1NCBlYWVlOTI0ZWZiMTkyY2Q5OTQwZTAxOTZhN2JmYmI1OGZlYmFlZjJjIGxlZ2FjeS10cnVuaworMTUzNTUgNTI4Y2ZlODc5NjY1MjA3YTFlNGNlN2QwMjVkOTBhOTEzMjM4MzdjOSBsZWdhY3ktdHJ1bmsKKzE1MzU2IDA1YzA2NzE1NjU3YmNjNGUwOTI2YThjNTJjZWRhNzUwMzdiZTRjZGUgbGVnYWN5LXRydW5rCisxNTM1NyA1NjQyM2I5MzgwZjRmNzZiMzZjMDZjMmQyZGYzZjJhYzUzY2I4NGE0IGxlZ2FjeS10cnVuaworMTUzNTggNjI2Yzk3YWIxMjhjZmU5OTc2ODZkNjNlN2ExM2Y5MTc4ZGI3ODM0MiBsZWdhY3ktdHJ1bmsKKzE1MzU5IDkyZDFkZGMxYzU3ZmRiOWUwNmM2NDBhN2RkMmYyY2VhMWM1NmJhOTAgbGVnYWN5LXRydW5rCisxNTM2MCA2NDU1ZDhmYjc4NzYxZTY5NjdmOTdlZTBjNzY2NzljZTQwNWE1YjcyIGxlZ2FjeS10cnVuaworMTUzNjEgYjU3MGQ0Y2Q2NDBhYzM4ZGZlYmYzZTM2YTllOTY3MGFjZjhiNTU3NSBsZWdhY3ktdHJ1bmsKKzE1MzYyIDgyZjE3NmI3MDY3YjdjZjMyYzY2ZDkyZDk3ZjFjNmFlMjFhODk2MTQgbGVnYWN5LXRydW5rCisxNTM2MyBkZDYwNzhkMjBmN2Y4MmUwNWI5YjE4MzFmNzZkOWFhMDIzNmFmNzdmIGxlZ2FjeS10cnVuaworMTUzNjQgMzVjZGIzZDAzZmQzNTJjNTAwZGVkNTVjYzAxNzlmOTQ5ZTZmMjQxOSBsZWdhY3ktdHJ1bmsKKzE1MzY1IGI1ZjdhYjI3MjIzNzk1MzM0Yzk5NDAzMDBmMzRkZDE0NmI4NmI0MmMgbGVnYWN5LXRydW5rCisxNTM2NiBhMTExMjljZWVjYTVkZjY5ZTQ3YzFiYmM3YmFmZDBlN2ZmODk4NTc4IGxlZ2FjeS10cnVuaworMTUzNjcgNTEyNTNlMDhmNzY3ODgxMGNkZDE0MGQ4YTY3MWU5NWM0YjhjMmY2NCBsZWdhY3ktdHJ1bmsKKzE1MzY4IGE4YWIwOWVmNDhiN2FmNTVmNTc1NDZlOTc1NTI1MTkwNDk0MWIwNDEgbGVnYWN5LXRydW5rCisxNTM2OSAzMmJkNGJhZDEwOGJhOGNjYzRiNDZhNzIwOWFjOWNkMDg3YzUyYzVkIGxlZ2FjeS10cnVuaworMTUzNzAgNzFlNDIwMjk2ZWYxMTI3ZWU1NTE1MDRiMWU0ZDdiMTQyYjZmMjFiNyBsZWdhY3ktdHJ1bmsKKzE1MzcxIGMxOTVmYTE1NzU0MWM2MWNmZjdkODNkYjYxMzk3NzI5NjkxZTIzZDYgbGVnYWN5LXRydW5rCisxNTM3MiBiMzIwY2YzYTk4YjkwNmZkYWY3ZjU3ZjBhNzU2ZDUwMDAxYzhmYjJmIGxlZ2FjeS10cnVuaworMTUzNzMgNTY0OGRmNzQzOTVmOWI0MzdiZDlmYWMyNGM5MDBmNTRhMDk2OTlhZiBsZWdhY3ktdHJ1bmsKKzE1Mzc0IDgyMjhjM2FlOTEzMGFhODgwODNiNGMyNjY3MzY3MGRjMjIzNGYzMGIgbGVnYWN5LXRydW5rCisxNTM3NSA4ZDdhZDM4MThlYTZlNzM4YzVlOWNlODcwOWFjZjU3ZGIyZDJlOTYwIGxlZ2FjeS10cnVuaworMTUzNzYgNjcyMzNkZjEzMDM3M2U3N2UxOTJhMmI2NzNmYmVjY2UxMWQ1NDZkNyBsZWdhY3ktdHJ1bmsKKzE1Mzc3IDgxYmFiYmE1YmQzNGU5OWIzMTAzYTFjOTI4N2IwNGEzOTgyNWE1ODIgbGVnYWN5LXRydW5rCisxNTM3OCBkOWNmYTJlNmY3ODIwODUwNzgxNjdlZDAwYWNjMWNkZTVkM2JlOWYxIGxlZ2FjeS10cnVuaworMTUzNzkgY2M0MzUwYjFiOTFmYzk1MzcyMTdhOGM0MmFiNWQ1MTdiODIxNDFiOCBsZWdhY3ktdHJ1bmsKKzE1MzgwIGViNDkxNDFkNmUxMGYwNzU0NDYxZTM3ZjZkZDhlY2Q4Zjk0NDY1YjQgbGVnYWN5LXRydW5rCisxNTM4MSA5ZWE2YWU4Y2YwNWNiZWNmODliMTg0Yzc4MGNlOWNhZDI1NmI3YWEyIGxlZ2FjeS10cnVuaworMTUzODIgOGE4MmRkYWViYTZhYTE0MGFjMTZmZDczZjNkMmNhY2EwYWU0ZTc3OCBsZWdhY3ktdHJ1bmsKKzE1MzgzIGY3ZjlhNzQwZWQxY2I1ZDIzYjJkOTRhMTE4OTIwODIyNWQ5MDJlNzUgbGVnYWN5LXRydW5rCisxNTM4NCA5YTc3MjVlYTc4ZWIwYjBhNzExNDM2MGY3MjQ1NzBmZWU1NDMzNWJiIGxlZ2FjeS10cnVuaworMTUzODUgNmUwNzNiYTUxNDE0MmQ5OTAwNzUwOTkxNGFhNGRhOGE5MGFkYzc1YiBsZWdhY3ktdHJ1bmsKKzE1Mzg2IDExMWRjOTE2OGU0MzVjMmMyZTdmYTNiNDExZDU4NDc1N2Q3MzIyNjYgbGVnYWN5LXRydW5rCisxNTM4NyBhNmM4NDEzYjNjNGZmNTM4NmI1NTg3YjI4OTRiY2I0NGIzZDc3YzU4IGxlZ2FjeS10cnVuaworMTUzODggODdmNTk0NmM1NmY1NjZiNWZjMzcyMWM5N2U3ZjAwOGFlMzhjZGFmMCBsZWdhY3ktdHJ1bmsKKzE1Mzg5IGU3Yzk4YWYwMjA4NDkxZDljYzFjMzhkMmQ0MmIwZGFkNDY0Y2JlMGYgbGVnYWN5LXRydW5rCisxNTM5MCAzZWZlYWE3NTIxZTQxYjJmYWRkNjhkYjE4MTM5MWVhMTQwOWY1N2JjIGxlZ2FjeS10cnVuaworMTUzOTEgNTdkNGZjODMwOGUzZjE3Y2Y3MzJiMDcyOTY2MWQ5OWVlNDQxNTMwNSBsZWdhY3ktdHJ1bmsKKzE1MzkyIDEzMmUyNzE0OWY5ZjNkNjc4ZTFjYWUxM2ZmNDQ0NGYwNmQyYTAxNzYgbGVnYWN5LXRydW5rCisxNTM5MyAzNGQyYjUwZWZmMmViOTMxZDUxM2IwY2NlODRhMGI5ZDdjMTgzYTEwIGxlZ2FjeS10cnVuaworMTUzOTQgYTU2NzA3YjA3YjgxZGQ0NDE3YTQ2MWU0MTVlYjRlYWUzYjViYzQ2YiBsZWdhY3ktdHJ1bmsKKzE1Mzk1IGRkZjk4NmE5NzFiNTY4YTQyMmIzNWY0YzViY2JjZTgwYTc0NDkxYTMgbGVnYWN5LXRydW5rCisxNTM5NiBiZWEzZDc3MGJlMGFjNGVlYjBlNDVhYjNhMjkyMWE2ZDYwY2FlNWIyIGxlZ2FjeS10cnVuaworMTUzOTcgNzVkYTlkNjM1MzFkMzI1NzkwNDQ4NmVjN2JkZTc2YzQxNjBlYzQ0OSBsZWdhY3ktdHJ1bmsKKzE1Mzk4IDY5NDgxY2RlNTExZDg2NWRmNzE5YWMwZTY2NjIwYmUxZmIxOTFhNTkgbGVnYWN5LXRydW5rCisxNTM5OSBkZWY5NTkzNTI0MjJkMThkN2RiM2Q2MTliZDI4Y2UxOTllNThiYmI0IGxlZ2FjeS10cnVuaworMTU0MDAgOTE3ZDg0NWU2ZTVmMjFlNDk5ZTVlOTdhNTYyNTk5M2FjYmI1NTFjYSBsZWdhY3ktdHJ1bmsKKzE1NDAxIDNmMDZmNDc2NWJhNDIxYjJmZTc4NzU0NWJhNDJiNTFhNjlkMDVhY2QgbGVnYWN5LXRydW5rCisxNTQwMiAwMDRiYjIwZGIxMWUwODY3ZWM1NDAwOTczNmNlZTcwN2FiZDg4M2YxIGxlZ2FjeS10cnVuaworMTU0MDMgOTFiMmVjMjA3NjMzNDllZjQwZWEzMTI5OGNmYWMyMTljYjE2OTIzOSBsZWdhY3ktdHJ1bmsKKzE1NDA0IDA2ZmY5NjZmNjlkNTJmM2IwMzcwODRkNDNjYTVhOTlmMDMyYmM5MzQgbGVnYWN5LXRydW5rCisxNTQwNSAwMGFhNjNkNmQyNmVhMGQ1MDAyMTkyNzU2ODM2ZjViZmIzNWRkNzljIGxlZ2FjeS10cnVuaworMTU0MDYgYzRlYjcwZDI0YTg3M2ZjYzQzY2U1ZTE5MjNmMGQ1MjA0YTZjZjNjMSBsZWdhY3ktdHJ1bmsKKzE1NDA3IDE3ZDFhM2YxZjA4NWQ3YTY0ZTM2ZjUwYmQzMGY1MzRhNGE0OTJmNzAgbGVnYWN5LXRydW5rCisxNTQwOCAwMzVhYmI5MzAzMTdmM2RjODBlZDQ4M2YxYjI3NzM4NDQ4OTczYjM0IGxlZ2FjeS10cnVuaworMTU0MDkgMmE1M2Y1ZGMwNTkwZmRkODBiMDZiOWNjZDJjMGM3MzM5NTg4ZWE5MCBsZWdhY3ktdHJ1bmsKKzE1NDEwIGM5MjY2ODc2NmY1ZGY5YjlhZTM0MzIyN2YwMmY3YjYyM2Y5NjA2OTEgbGVnYWN5LXRydW5rCisxNTQxMSAxYjA4M2ZlZDlhNDhmM2I0ZTU1YTg4NGMxZDk2NDg1MGUwOTlkMDdmIGxlZ2FjeS10cnVuaworMTU0MTIgZmFhOThjOGYzZjQyMjUyNTlmNDA0MDQ5YmE5NzFiODFmZTJiOGQ3NSBsZWdhY3ktdHJ1bmsKKzE1NDEzIDg2NjM2NWI0NGYyMzc0ODU3ZDc5MWU2YzA2NGM4NzY5YjRhNjg2ZjIgbGVnYWN5LXRydW5rCisxNTQxNCAwYTMwODFkZTU1YTE4NTc4N2RiYzQzNjU4YmQ2MjkzOTViZTY4MzFhIGxlZ2FjeS10cnVuaworMTU0MTUgNmIxNDNjYTRmZDdmMjM0ZTA0NzJiZGYxNGM0NWQ0NTBiODdkYjA3MyBsZWdhY3ktdHJ1bmsKKzE1NDE2IDRjYzc0YmY4MGUwYmM3ZmIyODIzNzUxYmIyYjRhNTMyNTcwZDZhYzIgbGVnYWN5LXRydW5rCisxNTQxNyBmN2E4OTk2NDdjYjNmYjBmMDliOWRjMTQwOTViMDNiYjQ2YTYxMzI2IGxlZ2FjeS10cnVuaworMTU0MTggODA1YmI5MGFmMTRkNzEwZjQzZjE4ZmExNTA2YjVjMWY0MzMxNDk1YSBsZWdhY3ktdHJ1bmsKKzE1NDE5IGUyZTQzNmE2Mjg5ODE5MTIyMjkxYTJkZjc3ZGE1YzMzZGQ3ZmUzNTggbGVnYWN5LXRydW5rCisxNTQyMCBiNjU2M2Q5ZGYwNmQwNzJlMzIyOTM0MmU3ZjFlMDYxNmQxZjY3MjdlIGxlZ2FjeS10cnVuaworMTU0MjEgMDU0OTMzZmFmNzdhMTE3ZGRmMzc0NGJmYmY1MDA5OTQ2NmE2MDIxNCBsZWdhY3ktdHJ1bmsKKzE1NDIyIGI5MWZkYzI5YzViZDJjMGEzNmQyNDJkMzJmYzRlMmZlYzdkOWJhODUgbGVnYWN5LXRydW5rCisxNTQyMyBhYTlhNjM1YTZmNDc3YTg3NTk5YjliMmQwYjM1YTQ5NWU2OTZlNzQ1IGxlZ2FjeS10cnVuaworMTU0MjQgMWVhOGNmODg1ZjdiZDkzMWJmOGM1OWRmNjg2MTZkODYxMjE3ZDFmYiBsZWdhY3ktdHJ1bmsKKzE1NDI1IGI3Nzg5MWZhOTNiMGU0M2QwMzRjYzdjMzlkOTUwNTIwOWFkN2MzNWMgbGVnYWN5LXRydW5rCisxNTQyNiAwNTcwOTc3OTYxMjBiODYzY2Q4OGRkOGM2NTFmNmI4MjlkMzE0NmFmIGxlZ2FjeS10cnVuaworMTU0MjcgNGRmNTIzOTk4ZTVkOTQ5NzYzYTMyNzcyNzUyNjk1Y2RkZDFhNWFkNiBsZWdhY3ktdHJ1bmsKKzE1NDI4IDdkMDI1NWJlZTBmOThhODEzZGE1NzA5MGY5MDhhMGU3MzdmZDUwNGMgbGVnYWN5LXRydW5rCisxNTQyOSAwNmEzNDZlYjNjYmYwM2IwNjVmZDExYTE0NGQ3NmZiZDU0MThhMjIyIGxlZ2FjeS10cnVuaworMTU0MzAgMmE2ZGM2NWMwNjBmNThkZDMwMWVhOGQ5OThjM2FhOWI4YWU3ZGFiZiBsZWdhY3ktdHJ1bmsKKzE1NDMxIDJmZWI5NzkwYjQwNDU2ZmVjNzM2NGNiYWRhOTY4MzU5Yzc3MGRhN2UgbGVnYWN5LXRydW5rCisxNTQzMiBhMDJlNmE0M2NhMTViMDk5MWUxN2M1NGJiM2NhYjY4ZDg5YjQ5N2Y4IGxlZ2FjeS10cnVuaworMTU0MzMgNDdiZGI2MzYxNTljODA1YTM1N2UyZWIxOGQwYjAxNjA5MjYwNTgwYSBsZWdhY3ktdHJ1bmsKKzE1NDM0IDU2NDY3NzMzMjBiZWE2ZGFkNjRiNTU0NTA4MDZhMjc1Nzc4MWE5MmMgbGVnYWN5LXRydW5rCisxNTQzNSAxMTZmYzQzMDVhMzliMTMyZWQyZWZmN2NmZGRhZWI0NTU5NDZhYmE5IGxlZ2FjeS10cnVuaworMTU0MzYgZGU0MzVhNTlhNGQ1MzU1NWQxNTFlMDQxMGYxNTA0ZWQ0OTI3MzgyZCBsZWdhY3ktdHJ1bmsKKzE1NDM3IDA3ZGMzZWQxN2RkNWQ5NWI2ZTRlNmFmNTY4MzVjNWM4ZmRjYTVjM2YgbGVnYWN5LXRydW5rCisxNTQzOCAyMzQwNzQ1NDVlYjRlMTk3YTdmOGRlOGIzNTY1NGIzNTJkNDY2ZGEzIGxlZ2FjeS10cnVuaworMTU0MzkgODc1ZTY3NzIzNmE3MTg5ODgyNmJlOTgyMDQ2M2MxMmNjZWZmMGQyNCBsZWdhY3ktdHJ1bmsKKzE1NDQwIDhlODFjNmM1MjRiMjA1YWQ1MTMyNWY1YTQ2YTUyYmEyYzBkOWU1NWMgbGVnYWN5LXRydW5rCisxNTQ0MSBiODlkYTIwMmQxOGQ3NjljM2FhODNmNjk5YTNmYTBmMjk4NWFkNGMzIGxlZ2FjeS10cnVuaworMTU0NDIgYmRhZTZiOTA5MzRmNDZkZDQ2OGEzYzMwODk0OWJkNmMzMDY3MzcyMSBsZWdhY3ktdHJ1bmsKKzE1NDQzIDdjODllZTQwNzMwZjQwZTMwNTQ3ZmYwMzdmYTVkMDExY2VjZmRhMzkgbGVnYWN5LXRydW5rCisxNTQ0NCAyZTFiMDQ4M2IxMDFiMzA3NjQ4MmNkN2NkNDUzZmMyYzA3NDMxOGRiIGxlZ2FjeS10cnVuaworMTU0NDUgMzRmMDkwNmZlODIzNDg0NjE0ZGI5ZmI1YTE2MjlmYjMyYjdiMmJlMSBsZWdhY3ktdHJ1bmsKKzE1NDQ2IGNiZjlkNjdiNWZjMWY1YjBhMzRlOWM0ZGZhZjZmMzhhNzAyMDliMWMgbGVnYWN5LXRydW5rCisxNTQ0NyBiYzk2YzkxMmRjZThjZDU5ZWUwY2Q4NDZkNzg1ODlmYjE2YjViMTM5IGxlZ2FjeS10cnVuaworMTU0NDggNmJhZDE2Nzg5Zjc5YjQ1MjUzM2QyOTE3NjA3YWY5MjI4OGY5YTcxZiBsZWdhY3ktdHJ1bmsKKzE1NDQ5IDljYjk2MDg2MDUyOGYzMzdmZmQ0MTUzZTdjNTg1MzQ4ZTk2OTQ3ODYgbGVnYWN5LXRydW5rCisxNTQ1MCAyMGIzYjk3NjVjZWM2NmJkYWE3Y2E0YmQ1MjQ2ZDgyN2I2MjcyOTEzIGxlZ2FjeS10cnVuaworMTU0NTEgNzI4YzE2MDUzMzY4YWVkYzYwYWQ2ZGI4M2ExMDRjNDBiMzU0MWZkYSBsZWdhY3ktdHJ1bmsKKzE1NDUyIDdiNDY2YTczYzk2MTY2M2U4YjhjMjQ3ZTgzOTg5ZmFiYjkyZDhlODAgbGVnYWN5LXRydW5rCisxNTQ1MyA0MjBmOWFhZjg4MGJkZTMxZGU0ZDEwYzg4ZjJhMWIzMGE1OTg4OWM0IGxlZ2FjeS10cnVuaworMTU0NTQgMWRlZTkzZWI5ZWUzMjE1YTdmNWZmNmFhZGQ2NzEyODU5ZTQ1NDhkNSBsZWdhY3ktdHJ1bmsKKzE1NDU1IGE5NDI2OWJkNjU4NTkxOTRhZDUxZGFlODM0MjQ4YzAwNjFhYzZlNzkgbGVnYWN5LXRydW5rCisxNTQ1NiBhNDhiNjBiNmViNDgzN2RjNjhlMzYxZjg3YzAzNzRmNjUwNTNlZDc2IGxlZ2FjeS10cnVuaworMTU0NTcgYTQ5ZTQ1MDY4OGUyZTBkNjgwNTNkZjBkOWVkZWIxZGZkMjMwODQyYSBsZWdhY3ktdHJ1bmsKKzE1NDU4IDkwMjgwMGQ4ZThiZTExNWU1MmU1YjI0YmIxOTFjY2Q3MTMwYjg2YWEgbGVnYWN5LXRydW5rCisxNTQ1OSBlYjE3MThjNWE1NmMwZGJlYTAzZmVkOTJjYmNlMWNmNGJjNjY3N2ZjIGxlZ2FjeS10cnVuaworMTU0NjAgZWU5NzJjYTY1YzFjMjMxNGFhMWFmNzhkNGYwNzE4MTRhM2U0OTkyZCBsZWdhY3ktdHJ1bmsKKzE1NDYxIDk0ZWRlMDRiOWE5ZWVhZGZhMjRjMTY4ZWUzYjBhNGFlYWFlNTk4MDcgbGVnYWN5LXRydW5rCisxNTQ2MiA5MGM3OTA2YjA5OTliNTFhNzVkOGRhNTFmNzU5ZWIzMDgxYjYyZTg4IGxlZ2FjeS10cnVuaworMTU0NjMgNThhZDYxOTZkODFmMmI0ODk5NTRlMTRmM2ZhYzcyYmYxYjU5ZDhiNyBsZWdhY3ktdHJ1bmsKKzE1NDY0IGY1NTVmZDgwNTA4NTVlYThjMTk5ODRmZGJiNzM4MmE2N2QyZWQ5ZjUgbGVnYWN5LXRydW5rCisxNTQ2NSA2MDU5YTkyNzlkOTk5NGIwNWRhNjBjMjJmNWFiYmY2MGY5ZTM5ZDhmIGxlZ2FjeS10cnVuaworMTU0NjYgN2ZmNWFlMTBhNzcxZDdjNmQ5ZmQ4OGIyZDUwOWRmNmIyYjYxY2M3MCBsZWdhY3ktdHJ1bmsKKzE1NDY3IDI5Nzc1YzI4NzIzNzhmNTQzOGRhN2U0ZTk1ZDhkZjI5YThjYjA5MzAgbGVnYWN5LXRydW5rCisxNTQ2OCA5YWJlZmM1YjFkODlhMmZiNjMxMmI3NGIwYzZhMDI4YmI0YmQ3NTY0IGxlZ2FjeS10cnVuaworMTU0NjkgMzUzMDU5OTE3MTliNTE3ZTI5ZGQ1ZjFhOWFhMTIzZTA4ODZlNzU2ZiBsZWdhY3ktdHJ1bmsKKzE1NDcwIDFiZjcxNGUwYzEwZjVhZGM2ZDI1MmFjZWIxOGZiZjc4Y2RjM2Y5YWYgbGVnYWN5LXRydW5rCisxNTQ3MSA5NDJjZTIyMTEyOGEyODMwMTU1MzBmNjkzNzdmNThjNDMyOWNjZjE5IGxlZ2FjeS10cnVuaworMTU0NzIgYjgxN2YxNjM5OTM5Y2ZkNDRmMzk2ZjZlYjZiMDRkZDU4YWI1MDA5MCBsZWdhY3ktdHJ1bmsKKzE1NDczIGJlNTVmNWRkYzYxNWJkMjE1YzE4NDZjZjUyMTIwODJiODhkZTVjM2IgbGVnYWN5LXRydW5rCisxNTQ3NCA3ZWZiYjRlNmFmY2E4MzBkYjFmZThkYWZkMjQ5MzgyYzZlOTVlOGY4IGxlZ2FjeS10cnVuaworMTU0NzUgOGRjYTU1ODY3OTk4YTU5MmNmMDljM2YzOTQ2OWQ3OWJiMDRhMTM5MSBsZWdhY3ktdHJ1bmsKKzE1NDc2IDZhZDhjZDM0YWQ4YzhmMWFjYjE4ZjJiZjU3YWJjZDkyMzAzNTMxOWYgbGVnYWN5LXRydW5rCisxNTQ3NyBhZWNmMzVmMGMxNmJhM2M5ZTkzOWEyMTIzMzQ1ZGUzZmY1NTI1YWM4IGxlZ2FjeS10cnVuaworMTU0NzggMGE2YWY1OWViZmZkOTNhZDViODliMmQwMTY2NTEyMGQ5OTRiMzBjNCBsZWdhY3ktdHJ1bmsKKzE1NDc5IDUzZTU0YmQ0ZTVmNGFjYjFiYWY1OGU4NGEwMjMyNTQyZjk0ODMxNjMgbGVnYWN5LXRydW5rCisxNTQ4MCBmZjgxYTY1ZTBhOWJiMjIwNjdmYzZhNWY0YzNjY2ZhMDg1ZDRiZDNiIGxlZ2FjeS10cnVuaworMTU0ODEgMmVhOThkOWRjNjY5NDQ5ZjY5MTdiYTk3YWY5MDNjZWRmZGY1NTUyNCBsZWdhY3ktdHJ1bmsKKzE1NDgyIGE1OThhY2UwMTk0MzljNTAzMzk1ZTk1NzhlODMwNDZmNTBjNGI5ZTcgbGVnYWN5LXRydW5rCisxNTQ4MyAwNTJhZmI3NDk1MmVjZmQzMjk4MGQxZTQ4MGMxNWE5NTA3YjNjNzQxIGxlZ2FjeS10cnVuaworMTU0ODQgZDA0MGNlYmQ3NGFjMmYyNTM1MjA3OTRmM2Y3ZDY1MzJkMGFjZTIyZCBsZWdhY3ktdHJ1bmsKKzE1NDg1IDJiNDk4ODM3Y2Q4NTg2ODY3NzFjYzI2YTkxOGMyNTU1YzY1NGE2NGIgbGVnYWN5LXRydW5rCisxNTQ4NiA0MGQ2ZDJmYzljZmZmNDc5NzIxNTZiZDFiZGYyZWFmMzhlODI0NjYyIGxlZ2FjeS10cnVuaworMTU0ODcgNWRkM2IzNWJmZDUyMmY4YTMwYzhmN2M3ODg1NDY0YjgzZDcxMTMxZSBsZWdhY3ktdHJ1bmsKKzE1NDg4IGNlM2RlMjk0MzYyYjhhODUyYmIxMDcxN2JiYzc1Nzk1MWY0M2RjNzUgbGVnYWN5LXRydW5rCisxNTQ4OSA0ZmQ4NDU5MjJjNDlhZTBlNGNlOTIwZTg1NWZkN2UzZmE3NWRmNjhlIGxlZ2FjeS10cnVuaworMTU0OTAgMjRhYjg0ZGM0MmFiZjA5ODQwYTZjNGRlMmNhYjFkMTY0Y2NiY2M5OSBsZWdhY3ktdHJ1bmsKKzE1NDkxIDE0N2QwYjQxNDRlYTE3ZGYwZjgwM2M1NDE5YjBkZGQzZjFkNDdkZDUgbGVnYWN5LXRydW5rCisxNTQ5MiA0MTE4ZjAwMmU3Mzc3MzJlZDA3N2YxZmJkZTdiOWZmMTc2MmYyMmY2IGxlZ2FjeS10cnVuaworMTU0OTMgNzk1NGZmOTNlZTNiYzY5Zjc5Yzk4YzRmZDMwMWFiMDFhOTY3OWI5ZiBsZWdhY3ktdHJ1bmsKKzE1NDk0IDgxMzgzMjIyMDk4YTNkOWQ0MThmYzJiZWRlNTM5NWFlZjBjOTI2NGUgbGVnYWN5LXRydW5rCisxNTQ5NSBjYWIyMmJjYmY1YjZkYzZhM2U5NGU0OGM5YzViZjhkMDEyNTI0ZDNkIGxlZ2FjeS10cnVuaworMTU0OTYgZDJkODY1ZDk1ODYxMjY0M2IwOTBjYmU2NTE4MGY1NGMyYTI1N2RjNiBsZWdhY3ktdHJ1bmsKKzE1NDk3IGQyNTczZGJmNjg1MjU0NDg3ZGM4N2I4ODdlY2RlNmI3MGY3NjRlMDggbGVnYWN5LXRydW5rCisxNTQ5OCA3N2E1YTE0Njk1YjMyYTllMTc3YTI1NDcxZWNkNGQ0ZTRlN2VkOWQ4IGxlZ2FjeS10cnVuaworMTU0OTkgM2QyNmNiMzgwOGE3ZDIyMGRkZjdjZjEyNGE3NWQyZjk3YzM5NmE5YiBsZWdhY3ktdHJ1bmsKKzE1NTAwIDE4YjAzNTY1MDVhNWE0YWMyNjc3ODQ4YmZiNTY0ZTdmZjdiNDk1ODEgbGVnYWN5LXRydW5rCisxNTUwMSA4OWY0MjA5OWM1ZGQ2ZjQyZjQyZTQyZjRiNjBiOWM2ZjRjMjUwN2UzIGxlZ2FjeS10cnVuaworMTU1MDIgYjUwYmY3ZDM5NjFmODdlNTZhMjhhY2JlMGY1OWQ5OTBhMjZlYzc3YSBsZWdhY3ktdHJ1bmsKKzE1NTAzIDU3MGZhY2I3M2UzNjRmNzc3MjU1ZjYyZmU5NDg5OTAxNWRmNmUzMTEgbGVnYWN5LXRydW5rCisxNTUwNCBlODc4YTY0N2UwNmVhZjkxZmM0ZDgzNDQyZDVhMDkwNzQ3ZjRiMjY1IGxlZ2FjeS10cnVuaworMTU1MDUgZWVhZmFiOGM5MjViZTY4NDRmZmI1M2Q4MDFhMWZkYTgxNTgxN2NkMyBsZWdhY3ktdHJ1bmsKKzE1NTA2IGRhZDIwNWQxM2JiNTlkYjYzNDI3OTJkZDBhNDJiYjBjMDBkMGMyNDggbGVnYWN5LXRydW5rCisxNTUwNyAzYzMwZjdiNTEwZDM0MTM2ZmE2YWQzNzZmZGE0OGI1NmY0NWQwODA0IGxlZ2FjeS10cnVuaworMTU1MDggNmM2ODQ0YTJmYTMwNGYwMjAzMGQ1NjgxMjliNGQ5MjI1OTExNjQ0OSBsZWdhY3ktdHJ1bmsKKzE1NTA5IGViNTYyZGYwY2ViZTBlZmVmY2YwZGY2MjBiZDgyMGM0YzhmNmUzYzYgbGVnYWN5LXRydW5rCisxNTUxMCBiY2U0OWE2ZmE4YjllNWJkMjZiMjNlNDU5N2RkOGMyNjQxZGZjNThiIGxlZ2FjeS10cnVuaworMTU1MTEgMjQ5N2UxYzllYmNlZWE3MTg4ZTM4NWJiYTlhNjVjNDNjNzRlMzZkNyBsZWdhY3ktdHJ1bmsKKzE1NTEyIDJjMmI0MGViM2E2NTQ2MzE5MDczMTE0MDc2ZGNjNTNmMjUwZjFjYTQgbGVnYWN5LXRydW5rCisxNTUxMyA3YjQ5MzM0YTYzNjk2YWNjNGM4M2RkMDdkYjkxZTZjMjYxZWE1OWM3IGxlZ2FjeS10cnVuaworMTU1MTQgODZlYzc1ZGFjMjcyYmFmYzdlNmFkZDk5NzM5YWNjYzFjY2NlYjFmOCBsZWdhY3ktdHJ1bmsKKzE1NTE1IDUyMTNhYmZlNTIzMGJlYjAzZmMxOTk2MDEwMTc2NTcwNDg4YWJjNGMgbGVnYWN5LXRydW5rCisxNTUxNiA4ODlmMmNiM2Y3MmFhZjgyMDk2MzU5MTJiNmVmNjdjZGUyOWUwMjU4IGxlZ2FjeS10cnVuaworMTU1MTcgZWNkZGIyZWQ0Yzc1NmE3NWNkYmRmZjRhNzdhNWFhYjg1MGU3OThmMSBsZWdhY3ktdHJ1bmsKKzE1NTE4IGYwZDIyNTNiNjY0ZjU4ZDNjYTQ5OWIyYTJlNTczODkxZjQ3MjI2YWUgbGVnYWN5LXRydW5rCisxNTUxOSA0MDZiMGUyNGQ2MmU3M2Y4YWI4YjRlNTZmNTlkMTM0NzBhZTZiMzFhIGxlZ2FjeS10cnVuaworMTU1MjAgMWRlMDAxN2UxMjI2N2IxMDExOTM2ZjU3MWYzMDZjODBiNzczNzkwOSBsZWdhY3ktdHJ1bmsKKzE1NTIxIDBmMWU0ZTM5MzVkN2M0MDAzOGJmOWQyMDAwMGM5MzkyYzRlYmVkMzEgbGVnYWN5LXRydW5rCisxNTUyMiBkYTAyYTg5MmQ2MTE4NjQ1OTY2OTcxMzY5OWI3YmRmMTNlMTljMjE0IGxlZ2FjeS10cnVuaworMTU1MjMgOWUxYjgwNTBkZTYzYTQ1ZWE0ZDIwODNjOGIxMjdmMTJjNWVhOGU4YiBsZWdhY3ktdHJ1bmsKKzE1NTI0IDNjMTQ5ZDM4YWJmOWZjNDg5Zjk0N2Y5OTU0OThiNjM0NTYyZmFlYmEgbGVnYWN5LXRydW5rCisxNTUyNSBjOGE5ZDE3NjY0NjVjZTVhZmJlZTljMDA5OTFiNzkwOGY2YWIwYTY2IGxlZ2FjeS10cnVuaworMTU1MjYgZTBlZjYyMmY4YzIzY2U5NGVjMjlkYjU5MGM0Y2NkYmExOTkwOTc2OSBsZWdhY3ktdHJ1bmsKKzE1NTI3IDk2NzczMmRkM2Y5NTliYTg2ZjE2ZmVkOGQ5Y2I5ZTU5ZWQ5Njc3NDAgbGVnYWN5LXRydW5rCisxNTUyOCA5Y2JjYWQyZTg3MjM4NDU5MWNhOTZjZmE2M2I5YTljZDg1Y2MyMjM3IGxlZ2FjeS10cnVuaworMTU1MjkgYjVhYjQ3MzY1YmFkNjU4YWMyMGEzYTkxZmE3YjhlYjExYTFmMWExYSBsZWdhY3ktdHJ1bmsKKzE1NTMwIDI2M2NkZjljODQyZWU3NGQ0MWM1MDQ5YTZmNGRhOWRiMTU3ZjQzNjEgbGVnYWN5LXRydW5rCisxNTUzMSBmYjQwMzliMWNmOGQ3NWYxMmJkNWY5Zjg4MGVlOTYxYTc5Y2I0YzA1IGxlZ2FjeS10cnVuaworMTU1MzIgNTJjNmFjMmQxNmE4Y2FlZWI4MDc4NjYxMmU4Y2IyNDY2Mjk5Y2NlZiBsZWdhY3ktdHJ1bmsKKzE1NTMzIDdhNGY2NDAyYzY3Zjg4NzVjNjZkZjgwMjQ5NTljMGM2NjI0NmJiYzMgbGVnYWN5LXRydW5rCisxNTUzNCBiMDY5NGMxYzEyODdkOGI2ZGY5MzlhMzUzZGE3YjFiYWRkMjUxYjQ0IGxlZ2FjeS10cnVuaworMTU1MzUgNDBkYjkwOWNlMmUzMmFhZjZhNzRlODI5YmFhNjU0MDI2NjQzNDljNiBsZWdhY3ktdHJ1bmsKKzE1NTM2IDhlMmIzNWQzODZhYWNhYzc2ZDc5NTRjZDZjYmEzZGUyMTZiZjg0ODYgbGVnYWN5LXRydW5rCisxNTUzNyAzNDI5NDdmMmZiNTE0MzFkODRiNzQzMzQzYTI2MDkzOGI4YjFjODQ0IGxlZ2FjeS10cnVuaworMTU1MzggMzhkYTg2NGEwYzgwNjZhYzVkMjg0OWYxOGVkNDhhNGUyNTRiNGVmMSBsZWdhY3ktdHJ1bmsKKzE1NTM5IDAyNjNhOTlkMGViMjg4OGRjOWE5N2NjZDhmYTNlM2I4MTE5OWQ1ZmIgbGVnYWN5LXRydW5rCisxNTU0MCAwNTcwZGU5YzgyMDJkNWJlMDYzY2VmZDE4ZmYwMDYwOTVhYmY3YmEyIGxlZ2FjeS10cnVuaworMTU1NDEgOTMzNWRhYTlkZGQzYjAzODYyNjE0YjIxZTNkZjFmYzFhMGExYWFlMSBsZWdhY3ktdHJ1bmsKKzE1NTQyIDkzNmVmZGMwMWQ1MjQ2OTBmZTIxODhiMjkxMTNhZmU4MWU2MWUzZDMgbGVnYWN5LXRydW5rCisxNTU0MyA3NzFiM2UxYTc3MWM4Zjg3NzQzNDA1Nzg3ODFhMjIxYzE2Y2M1ODQxIGxlZ2FjeS10cnVuaworMTU1NDQgYjkxYjM1YzFkNGMwMDhlZDhiOTlmOWE5YzA3MTllYjkwZTViNjYwMSBsZWdhY3ktdHJ1bmsKKzE1NTQ1IDUzOThiMThmODMxOWQxZTQ0ZmU1NDI2YTZkZGI3MzFhY2JjNWVmMjggbGVnYWN5LXRydW5rCisxNTU0NiBmNmU3MzBmNjViY2U2MmViZjk1YzgyYTU3YTk5MmJlNmRiMDBlMjdlIGxlZ2FjeS10cnVuaworMTU1NDcgZjc2OGQ0ZGFkOWE2MmEzN2VkYzBmYzc4ODc4NGQ3MjY4OTEwMDRjZSBsZWdhY3ktdHJ1bmsKKzE1NTQ4IDZmN2RmOTg1YTgwYzQ3ZDYwYTNiYjUzYWVlODk5N2JhOGMxOWFmODkgbGVnYWN5LXRydW5rCisxNTU0OSA4MDA0ZDI5Yzc3YjhiZDI5NjI5ZTA3Yzc4YzRjMjMxMTNlMmEwNDdhIGxlZ2FjeS10cnVuaworMTU1NTAgZjBkMDM2ODljMWFlMDA0ZmY3ZWMxNjI5ODNhNGNmOWZhMDA0ODE2MyBsZWdhY3ktdHJ1bmsKKzE1NTUxIGY4YzFjNWI3ZGM5ZjRiOTczNzA0NmNiODc0NjkzYWVlYjdhYWYyMTMgbGVnYWN5LXRydW5rCisxNTU1MiA5MzdmOTg1OWM5ZGUxYjY5Njg4YzQ0ZjZhOTVmNmU2N2NiOTVjOWM1IGxlZ2FjeS10cnVuaworMTU1NTMgNWNlNDJlMDdhZmQ4NWFlOWNmNzhkODQ3NTQ1NDQxODIyMWY0MDA3NiBsZWdhY3ktdHJ1bmsKKzE1NTU0IDUzOTc0NDUxZTMxZjExNjY4ODI4ZGU5NmFjODAyM2MzYjBiZTQ4ZTkgbGVnYWN5LXRydW5rCisxNTU1NSAwNzQ4MTlhZmRjOTVhYjFkMTYzMjQzMGY3NzMyODYzMDE1ZjI1MTI2IGxlZ2FjeS10cnVuaworMTU1NTYgZWUxMTkwNTFkZjc3ZjQxNWRhZWI1YjkxMTE4OTZkZDIyZjgyYjQ3MSBsZWdhY3ktdHJ1bmsKKzE1NTU3IDVjMGVkYjM1MWMwNzI3OTE4ODU0MGM0ODhlNGQ5MDRhZTQ5ZjYzNDIgbGVnYWN5LXRydW5rCisxNTU1OCAwOWY3MGY5MWJkYWUyZThmNWFjOWFlMWIyYWQ3NmRiNDBiZDFmMGY3IGxlZ2FjeS10cnVuaworMTU1NTkgODhkMGIzMzgzZmUyNTU2NDM5ZWUzMDY1MGYzNzZhNGMxMGRmODE4YSBsZWdhY3ktdHJ1bmsKKzE1NTYwIGQ4MWM5NWRkNDAzOWRkYThmNWFkNjk2NTMxZmJjYWIwNjljMzdjMjcgbGVnYWN5LXRydW5rCisxNTU2MSAzYWFiMGM1MTkwMDkwYWY2OTYxNWFkOGNlMzE0NDQxNGU2ZjAxNTFhIGxlZ2FjeS10cnVuaworMTU1NjIgZWVmMmI5MThkMDdhYzg2OTI0ZGIwYWU1MDJjYmI4YTFhODYxYWRlOCBsZWdhY3ktdHJ1bmsKKzE1NTYzIDMzZGRjMTJkZjI2N2Q4NGQxMDgzMTIyZmQ3YzBiODExY2RlNTA4ZjcgbGVnYWN5LXRydW5rCisxNTU2NCBmNmQ3ZTMyODY2MDkyNjExZDQ0M2E2MmM5NzkwYTM3Njc4NDdkMzYxIGxlZ2FjeS10cnVuaworMTU1NjUgM2JlOTJjZWYxOTE3NDQ5OTZmYjAwYmY3NmZjOTgzZjVmMmUyNDYyZSBsZWdhY3ktdHJ1bmsKKzE1NTY2IGUzNmJlN2ZiNzZjY2M3ZmJhZjg0MDJjNDY0NjJmZjFlMzJmOGY4MDQgbGVnYWN5LXRydW5rCisxNTU2NyA1ODNkZWY4Y2VkZjQzMTBkYzFkMTVlNmNlYzdhMWJlOTRmNTI2YmMzIGxlZ2FjeS10cnVuaworMTU1NjggYmNlNTNiMTQ3MjFlOTE5YmM5NTIxZWZjMzc4NTgzMjAyMDU5NzBhNyBsZWdhY3ktdHJ1bmsKKzE1NTY5IGJjMWZlOTU2MjM5OTgzZjIyZWQzNmZhM2RiYTZjNmZkMDdkMDRjMWUgbGVnYWN5LXRydW5rCisxNTU3MCAyNThlZWQ0NTcwY2U4OTBjMTBmNzM0N2Q1ZTA2YTljZDczYjlhZDk3IGxlZ2FjeS10cnVuaworMTU1NzEgNzExYjMyOTYwOTM0N2Q1ZDI3MDY4MWY5NTQzYmI2MzgyMjZlNWIxYSBsZWdhY3ktdHJ1bmsKKzE1NTcyIGIxMmFkYTJlYjMxMmIwNmQwMzllMTQwNzEzMjEzOTczY2M1ZGZlYzAgbGVnYWN5LXRydW5rCisxNTU3MyAwYzIxN2U1ZjA1NWI3NmU0OTBiMTgyM2U0NjEzYTA2YzRkMzdkODNmIGxlZ2FjeS10cnVuaworMTU1NzQgZjFmOWMzMGE0MTU2OTU3NDhiOGQ5YjU0MDQzNzE1OTI1MzFmZDAxZSBsZWdhY3ktdHJ1bmsKKzE1NTc1IGIxYjI2MGEyZGU5ODdlODc4NTM5ODE3NzZhM2RkZGQyODZhZjBiM2UgbGVnYWN5LXRydW5rCisxNTU3NiBmZjBmNzI4MWJmYjg0YmMyNjQ0NDQ4ZjgyYjgwNGZjMjUwN2MxMTcyIGxlZ2FjeS10cnVuaworMTU1NzcgNDI3MmIzNjhiZjY5ZjZjZWFhM2ZlN2Y5YmIxOGJiNWM4NTU2YmViYiBsZWdhY3ktdHJ1bmsKKzE1NTc4IDVmMWY4ZGRjMmEwY2RlNDlhODdlOTM3OGVkMjUxOTkyMzI5MWE3YjMgbGVnYWN5LXRydW5rCisxNTU3OSA2NjY3ODIzMjZkNDJjMGRiMzViMDEzMTJhZTYyYjkwNmQyZTVjODI4IGxlZ2FjeS10cnVuaworMTU1ODAgYTI0ZDlhZDY3ODZkNjYzOTI2NjFhYTI1NmQ2YzU4YWE0ODQ0MjZiZiBsZWdhY3ktdHJ1bmsKKzE1NTgxIDM1ZWE1ZGUxZWU4M2FiNWY1Njc5YzIxNzIwNTBkNThmNGY4YTRlNGUgbGVnYWN5LXRydW5rCisxNTU4MiBmMmRiNjA5NDNkNmI4MzFiOTQyZmYwNTRkZjc2NjAxMzViMjlhMDEwIGxlZ2FjeS10cnVuaworMTU1ODMgNzIzZGYwYzgwMWQxZGM0YTVhNWY3NWY0ZWRlMmFkZTE2YjZkOGE1ZiBsZWdhY3ktdHJ1bmsKKzE1NTg0IDJjN2E0N2M2NGUzMDZlNmNhYTJmZDgyNWM4ZDQwMTBlNTJlN2RjZmMgbGVnYWN5LXRydW5rCisxNTU4NSBiNTMxOWY0MjI1OTEzZjA0MDE2NzU5YzFmMDJlZDNhNWI3ODM2NjQ4IGxlZ2FjeS10cnVuaworMTU1ODYgYzkyOThlYzYzN2M1YTYxMmQ3NDlkMjk5NzlmODYxOTE4MjU0MjczNSBsZWdhY3ktdHJ1bmsKKzE1NTg3IDdkMmEwMDYzZTI2ZGZmZWJlMmQyNTNhMDIyNzllYWEwMDIwOWFkNDEgbGVnYWN5LXRydW5rCisxNTU4OCAwNDc3NGQ2MjJlYTJkZTIxOWJlOWE4NWMyOTE5NTQ5MmVhNDUzZDVlIGxlZ2FjeS10cnVuaworMTU1ODkgNjJhZDM1NzA4YjhjNmY3NzAyMmM5ZDRjZmQ4ZGU2NTAxY2M1YmFmMyBsZWdhY3ktdHJ1bmsKKzE1NTkwIGFmMzhhN2E3YWYxMGI3NmMzYWE4NzVkMzAyYTNkOTI0YWZlOGE4YTYgbGVnYWN5LXRydW5rCisxNTU5MSAyZjYwNjg2N2FiNGU3YjA2MTc5ZGUzMDQ5ZTYxM2M1OTI1N2JkOWJhIGxlZ2FjeS10cnVuaworMTU1OTIgMWY1MzEyMDhiZTExNzNiN2RlMDNiMDQ2MmVlNTc4MTM4OWQxN2EyMCBsZWdhY3ktdHJ1bmsKKzE1NTkzIGI5MGQ2MDFkNGQ1OTNhODJmNDg3YWM4YmU1MDAxMjkzMjQ0YjhjMDcgbGVnYWN5LXRydW5rCisxNTU5NCA0MWMwYzYwZGNhZjVmNTI5NmE2MzVjY2Q1YTM4MDkwNjY2NDIzYmI5IGxlZ2FjeS10cnVuaworMTU1OTUgYzJhMGYyYTgxZmE4YTliNWE5Y2UyMzVkZTk3NTEzYTA2MzNiZGExNyBsZWdhY3ktdHJ1bmsKKzE1NTk2IGJjMzU2NDdmZTQ3MjljMWIzNTY1ZmE1MDg2OGQzZDhlOWRjYjMxYmQgbGVnYWN5LXRydW5rCisxNTU5NyAzZmUzMDQwNTA0MzRlM2EwMDY2ZDc5OWQyNWNhMGM5NDhhNjc2ZmJjIGxlZ2FjeS10cnVuaworMTU1OTggNGU5ZWI4NjZhYWM2YTU4MzVkNzFkZWJhY2NmMjU1NzRiODc3NjgzMCBsZWdhY3ktdHJ1bmsKKzE1NTk5IDE2MTU1OTg5ZmE5MzJhNjIxODFkYTUwYjkxZGRiOGQwZWU5MDg1YmQgbGVnYWN5LXRydW5rCisxNTYwMCBiNGJhMzJiYjc1OGJlYzNjODhkMDg4OGRkNDRkZGJiMzcyOGM3MjFkIGxlZ2FjeS10cnVuaworMTU2MDEgMzkxMmZiNmM2M2Y2MTMzZGJmYjQ2YWNlNTZiYWM2ZjVjNWI4OWE3OCBsZWdhY3ktdHJ1bmsKKzE1NjAyIDY0NWQ1N2VmMTYzOTU2NzNjZjY3ZTFiNThhZDI2OGQ4MDUyZWY2NWMgbGVnYWN5LXRydW5rCisxNTYwMyA0ZTlmNzcyNGFjNTU5NTAyYzU0MDcwMTA4M2IyMDllZGIzNjUwYmM3IGxlZ2FjeS10cnVuaworMTU2MDQgMDQwYzEwOTdjZDM1MjQ0ZTk5ZmU2ODhjNGY0Mjg5M2JkOWY1ODlkMSBsZWdhY3ktdHJ1bmsKKzE1NjA1IGFmZDdjYmUxYzQ5MmY2MzU2ZjlhN2QyNWE1ZjA1YTVmMTU4ZGRkMzQgbGVnYWN5LXRydW5rCisxNTYwNiAyMjlmZDNhNWFmYTA4MWQ0YTI0ZjdhYTU4N2I3NzhlMDI3NzBmOGFkIGxlZ2FjeS10cnVuaworMTU2MDcgYjU4YjkwMzNjNjVhNDJlYzAyNzI2NDc0N2EwNWQyMDVlM2YzNjg2YyBsZWdhY3ktdHJ1bmsKKzE1NjA4IDQ5MTZkNDBkOTY3NzZhOWM4NDRjODAzZjlhMWIzZWVkY2FiNzcwOWEgbGVnYWN5LXRydW5rCisxNTYwOSAwNTdhZDg4YWFlOWE2MzU5NzNjODgyZmE1YjgxYzgxZmU5NTQ0OTRmIGxlZ2FjeS10cnVuaworMTU2MTAgNTk0YzI3Yzg3MGFkZWRmZWRmZTYzYzYyMGMyNjM0NzNkOTgwMWEyNCBsZWdhY3ktdHJ1bmsKKzE1NjExIGE5MmFkYjc4MGY0M2Q5MmU0NTNjNGMzMWQ1NDRjYjNkYjI4YTBjODMgbGVnYWN5LXRydW5rCisxNTYxMiBlNzg3ZjY2NDFhZmI4YzkwYjk4MGY3YTU1N2FmNjkzYjZlNGNiODkxIGxlZ2FjeS10cnVuaworMTU2MTMgMjg5MDllODBmMzZjZjU4ZDZjNzQ2YWY1YjQ0ZDdjZDk1YTg3NTc3ZiBsZWdhY3ktdHJ1bmsKKzE1NjE0IDIxNTUzYmQyZTg3NWYyY2Q2YzNjNzFiZWFkYTlhNjMzMGNiZTc4NjYgbGVnYWN5LXRydW5rCisxNTYxNSA2M2QzOTM1OGRiMDkzNDJlMDdiZjEzNDdhZjkyMGU2Mzg3N2UxODY2IGxlZ2FjeS10cnVuaworMTU2MTYgMGZlMDIxNmY2YzRlNGExM2ViMDRlNDYyODQ3MTE0OTZiMjY4MjRmMSBsZWdhY3ktdHJ1bmsKKzE1NjE3IDBjODg0YzhkMWU3NWNkYTA0N2Y3NWE2YjdhMDk4Y2ZhNWFkODc3YjIgbGVnYWN5LXRydW5rCisxNTYxOCA2YWUwNDZkNGNkMDQyMDNlYTJkNWIwMDhiMGExYjFmODAwZTc3MDc4IGxlZ2FjeS10cnVuaworMTU2MTkgMTRiMWI1ZGI2Y2IyZGViYmUwZGJhZTEzYjFmMmNiNjA2NTBhYzRkNCBsZWdhY3ktdHJ1bmsKKzE1NjIwIDM3OTc5N2YzZWViMjA2MDQ0NTUwNzc0ZWI0ZGVlZjBhZjJhOTgwOWIgbGVnYWN5LXRydW5rCisxNTYyMSA0MzIzZDQ4NTUwNDdiOGM3MjRiNTRkOTI3ZDIwMjhmMzRmNmY4NGY4IGxlZ2FjeS10cnVuaworMTU2MjIgMzk3MWU2YjE0YTA5NzQ5N2Q1MWIwYmRkMzlkZWY2MGQ2ZTBhOTQyYSBsZWdhY3ktdHJ1bmsKKzE1NjIzIGFmMGRlZjA2MzY1ODAzNmNlYWE4MWNjZjUwNjg4ZTlmMjU3NmFhMDMgbGVnYWN5LXRydW5rCisxNTYyNCBjMGZkODhmMmE2NWE5MTY0YWM4MjllNmI5YzRmMWE2NGE0ZTA4ZTgyIGxlZ2FjeS10cnVuaworMTU2MjUgMzFkMDk4OGRhOGE5NzMxNGY2MjZmMGVlMTlmYzBkMjYzYmM1MzlmYyBsZWdhY3ktdHJ1bmsKKzE1NjI2IGU1NDVhMGM0NGZlMTVjYjJmMmUzMGY1MWRjYjAzYWNlZjE3OTRkY2YgbGVnYWN5LXRydW5rCisxNTYyNyA1NDhjYzEwZGY5ZWJhYzgwOGU1YjY0MDU4YjAxY2E3YWQxMjNlMTQ3IGxlZ2FjeS10cnVuaworMTU2MjggZTA0NjQ5YzNjZWQwM2RiMjEzOTA2OGY4YzFiMjAxMjk2OGIxNTQxOSBsZWdhY3ktdHJ1bmsKKzE1NjI5IGY0YjQ4N2UzNTIxNDBjZTQxYmNjODFkMjg2MjQxN2NhYTgxYzRhZDQgbGVnYWN5LXRydW5rCisxNTYzMCA4ODg3Mjc5MTk5OGEwZGExOTYwODAzMTdjM2RkZWNiMGIxZWI2MThkIGxlZ2FjeS10cnVuaworMTU2MzEgNTI3ZjdlM2JiNzZkN2VhODRlZWZiM2M2Y2VjODE5ZGEyY2Q3MTg3OSBsZWdhY3ktdHJ1bmsKKzE1NjMyIGRkYTFjYTUzZWE4YTI2MThlOTZjZjJjMWU3NDdkYjBiMzE2YTUxMmMgbGVnYWN5LXRydW5rCisxNTYzMyBlMDI0ZWQyZGI2MjViOGUzZThkNmY1Njk5Yjc3YjJkNWMzMTJmYmZkIGxlZ2FjeS10cnVuaworMTU2MzQgZWZjNmQ3Nzg5ZDllNmY3MzM5Y2MyMmFkNDdlMDM1NWQzNmE5ZGQwNCBsZWdhY3ktdHJ1bmsKKzE1NjM1IGQ5OGE3NTU3MzI2YTRkODBlYzkwNWI2NDZhZmNkZGU1YWM5MzU0MzUgbGVnYWN5LXRydW5rCisxNTYzNiBhOGNlMTljMzJkYjlhN2NmN2FhYzIzNzlmYzQ1M2NlN2MwNTdmYjgwIGxlZ2FjeS10cnVuaworMTU2MzcgMjQzNTkzZjExZmNmNjhlNjc1ZmJhM2E5M2ZhMTM1Zjg5MjY2MjEwOCBsZWdhY3ktdHJ1bmsKKzE1NjM4IDc4MjMxYmJlNjA1ZGMyZWE3Y2ZhODNhYjU1NTVlYmY1NmI5YmEwODEgbGVnYWN5LXRydW5rCisxNTYzOSA2ZDc5MTQ4ODVkNjNmMWMzOWFmNzk2MTAyZjE4MmM2NDUwODhkMDk2IGxlZ2FjeS10cnVuaworMTU2NDAgMzAxZmYxNGIyYTBlYTYxZmJjMGVjYjkyMWU4ZjU0M2VmMzFlNTQ1MyBsZWdhY3ktdHJ1bmsKKzE1NjQxIDI2ZTIwYTI4ZDA1MWM2Y2VkNGI3NGNhMDdiYWU4NjFjY2ZhMjgzODcgbGVnYWN5LXRydW5rCisxNTY0MiA2ODg5ZGUyOWM1NTg0YjI4ZWE5ZjMwNjBmMTBiMGY5YTYwYTJiZWQyIGxlZ2FjeS10cnVuaworMTU2NDMgMTFlNWJmOGViNDczNjlhZjBkNWViYzMzMDg0OTk5YzBkNjFiNjM2ZSBsZWdhY3ktdHJ1bmsKKzE1NjQ0IDdiYWJmOTFiNmQ3NWM2NjUwMmE1N2UzMGQ3ZThjMmVjOTI2YzA3YWIgbGVnYWN5LXRydW5rCisxNTY0NSAwOTJiYWY2OWQ2YWY4N2Q2MGNiYjM1ZTdhZGQwMDAzYmVkNWJmYTZlIGxlZ2FjeS10cnVuaworMTU2NDYgNWEwZDE1NmM0MjBhYzcxM2IwMTI1ZTExYzRhODk2ZmMyNmNkOTQzYSBsZWdhY3ktdHJ1bmsKKzE1NjQ3IDFhZTAzNWEzMWNiNDgzNWQwMWU5MzI1NjRhNjM4NDMyNDkwY2U0ZWMgbGVnYWN5LXRydW5rCisxNTY0OCAxMWQxMGU5YjUwOGQ4MGIwYTQ4NGNmMDlkYWM1M2NhYzgwMWU5YTFmIGxlZ2FjeS10cnVuaworMTU2NDkgYjU3NTJkZTBjZmE0NjczNTRkMTFmNTI0MzQ2MGE3MDM3ZmM1ZjcyZSBsZWdhY3ktdHJ1bmsKKzE1NjUwIGY1NGMzNjc3YmFlN2Q4NjFhY2I4N2QwM2NjYjEzZTU0YjMzOGNlYWEgbGVnYWN5LXRydW5rCisxNTY1MSAxN2YzNWY2NmVjZDhiYzk1NGY3MTA5N2RkMTU2NTI1YzI0ZDMwZDMyIGxlZ2FjeS10cnVuaworMTU2NTIgMGM4YjlmOTZiMjZhYzczMGJhN2NjMTAzYmYzNzQwNTA4MzBmNWVmYiBsZWdhY3ktdHJ1bmsKKzE1NjUzIDBjMmNkZDdjZjdkYzZjNjI3MmViMDllNDNlODY5ZmMzYmNkZjI3NzMgbGVnYWN5LXRydW5rCisxNTY1NCBmZDU4ODFlMTc0MjdiM2Y2YmMyNTRjMTYyMzE2YzVlZGUwNDFmMTY3IGxlZ2FjeS10cnVuaworMTU2NTUgNjFmNmFjYzRhYTc0OGRkNDBlOGMzODE4YzcyYzcxMWQxNDAxMDgyMiBsZWdhY3ktdHJ1bmsKKzE1NjU2IGYwYThmMTI3MzQ1NjRiYzJiNmIxOTQ5OWQ4ODA0YzljM2MwYTY1MmQgbGVnYWN5LXRydW5rCisxNTY1NyBhZGVmOTdmM2ZlYTBmNTQwN2RlMjUyMWFlN2EzODY3MmY1OGM3OGU4IGxlZ2FjeS10cnVuaworMTU2NTggZTQ3YjFhMGQ2NDg0Nzk3NzExMWQ4Y2UwY2NkYTc1ZDQ5YzEzOTU0YiBsZWdhY3ktdHJ1bmsKKzE1NjU5IGYzMWRjZDFhZDhjNDExODc5YjY3OWIyMWQ1YjFlZDE0YjJiM2FhNmUgbGVnYWN5LXRydW5rCisxNTY2MCA5ZGY5MWY5MWU1Y2M5YTQ0MjQwMGJiNzQ5NzEwZWQ1M2I5NDQ0MzllIGxlZ2FjeS10cnVuaworMTU2NjEgZjgyYjE1N2Y0NWUyOWMxMDZiNjU2ZTFkZmMyMGFhOTExNjQ5ZGI3NSBsZWdhY3ktdHJ1bmsKKzE1NjYyIGVmZjI0MTA2ODVjYzQ2MGY3NTE4OWI0ZDY4M2YwNDIwOWVhMjMzZDMgbGVnYWN5LXRydW5rCisxNTY2MyA5OGViMzA1OWFlNzYwYmNkZjE5ZGU2ZDgzMzVjYWNiYjA5NDQwNmFiIGxlZ2FjeS10cnVuaworMTU2NjQgOWVlMWU1OTQ1NzFkNzE1NWQ4ZTVlMzY5NmM1ZTcxODU0YTEwMTcyOSBsZWdhY3ktdHJ1bmsKKzE1NjY1IDc1MmFhOGRmZjUyMGI5NGVkYzUxNjlmNjRhOGZmZDc3MGIzYjU2MmYgbGVnYWN5LXRydW5rCisxNTY2NiAyNTQzMTk3MjI5NGI0ZjM3Y2Q2N2M2ODA0NTlkMjZjMDY3YjAyNGNhIGxlZ2FjeS10cnVuaworMTU2NjcgZjY5MTAyYzFmNDEzZjFjNjZhNGUzN2Q5MDAwMjA3ZmNmZjVhYmFiZCBsZWdhY3ktdHJ1bmsKKzE1NjY4IGRkZTdlOTFmMmYyZTVjMzE2ZDhkNDBiYmI5NzkxYTNiN2NjZjQ4OTcgbGVnYWN5LXRydW5rCisxNTY2OSAxZTc4NGI4NzkwMzkwZTMzNjYwY2JlOWIyYWY0ODBkYzJlN2JhOTk3IGxlZ2FjeS10cnVuaworMTU2NzAgYmUzNmYxMDNhOTUzOWMzZGRkZGRiZjU1OWY3OTBhZTM3NjBkYzMxYyBsZWdhY3ktdHJ1bmsKKzE1NjcxIDUxMzk4ZjcxZDMwMTIyNzg0MzY0NDJmZDRlZWUxODU5MTI1MDA1MzkgbGVnYWN5LXRydW5rCisxNTY3MiAzY2VlMGQ3NTE5MWUyMzFjMDM2ZmJkZTkyOWZiMGYyMmU4NWZiOGI0IGxlZ2FjeS10cnVuaworMTU2NzMgMzQ0NTJiODgzYTcxZDVmNzBiOGQ4MTYxODY1NjBkZTFhYWMzYzQyYSBsZWdhY3ktdHJ1bmsKKzE1Njc0IGU1YWFjOWRmYWNmODcxNWJkOTJkMmI0ZmRkNzJiZjIyYWQzYTU5MjEgbGVnYWN5LXRydW5rCisxNTY3NSBjOGUxMzUzNWZkYzMxOWFiMjA3MTdhNzViZDM0YjdmNTM4ZjAyZGM1IGxlZ2FjeS10cnVuaworMTU2NzYgNTdlMjk0NTQzNWM5MDA0OWU2NGY2MDgxMTJlN2FmMTE5ZDMyNzNmMSBsZWdhY3ktdHJ1bmsKKzE1Njc3IDAwZjVkMGRmNzBhZDgwZTFkOGU3YmJkZGQ0ODJlMDg2OTIyMzdmNzQgbGVnYWN5LXRydW5rCisxNTY3OCAyYTJjYWFlZTY3OTczYThkYmUxMTlmMmJmOTFmY2RjZGE5NmMzNGFkIGxlZ2FjeS10cnVuaworMTU2NzkgOGEyM2FiMDU3YWY2MTc2Y2UyYmUzN2Q0ODUyYjFkNDc4ZWVmZjYzNSBsZWdhY3ktdHJ1bmsKKzE1NjgwIDMxYzcyNWQ3MGU2NTIxMmQzYjE4NzUzNTM4MWRjNDk3OWM3OWFiOWUgbGVnYWN5LXRydW5rCisxNTY4MSBkZWFmMjVkZjE1ZmUyN2U2NGNiNjUxZGNmMGQwZDUyMzFhMGM1MjVkIGxlZ2FjeS10cnVuaworMTU2ODIgMTJkMGM0NjViMTAzY2ZlOTQwODlkZmMwY2NjZjFhNWJlOWQ4MmY2YSBsZWdhY3ktdHJ1bmsKKzE1NjgzIGE4YWZlZmM0ZmNlZDk5NDdiNmU3OTYwNDUwMDJkZmI3MGM1NGQ1ZWEgbGVnYWN5LXRydW5rCisxNTY4NCAxY2FhZGZiOGNhNzEwYmQ5MWQ4MTQ2ZWNlMjlhNDYzOGE2OGU1M2NkIGxlZ2FjeS10cnVuaworMTU2ODUgMmQwYjk5Nzc4ZWRmMWJhNmNhYmU4NGNlMDU1OTRkN2U2ZGI3NzRlZSBsZWdhY3ktdHJ1bmsKKzE1Njg2IDEyOGU3Yjk5NDUwNTljNjAwYjVhNmNhZTFlNGIwNTFmZTRmOTU0YmEgbGVnYWN5LXRydW5rCisxNTY4NyBkZjY4NjliZWJlMDNjNTdjMzE0OTUwNWYwNmMyZDljOTVmMjczYWYxIGxlZ2FjeS10cnVuaworMTU2ODggMTVkZjNmYTBmZDRkN2RhOGUyMjhmYzBhMTAzN2QwMDY0NDg0Y2QxMSBsZWdhY3ktdHJ1bmsKKzE1Njg5IDU5ZTQ5NGMwODAyZmM5MjU2YTY1YWU2ZDQ2NWY2OTIyNDgwMGNiZGMgbGVnYWN5LXRydW5rCisxNTY5MCAyZWVmNjM2YmExYjYyZjZlMTAwYzYyYzE4MzIyNGFiYjA1MmQ4YWFlIGxlZ2FjeS10cnVuaworMTU2OTEgNjYxODMyNTU3NGNiOTUzZWYyN2U0ZmYxNTM0ZDM2NTQ1NGUyOGRkZSBsZWdhY3ktdHJ1bmsKKzE1NjkyIDBhYTNmODBkYmIyM2FlNTZkNDAyNzc3ZmVhNDgzYmNiZThmYWIzNjUgbGVnYWN5LXRydW5rCisxNTY5MyAxZmE3YzExOWI3YTU2ZjIwYTk4OGQ1YmFjYjhlYmI4NWEzZGRkMjQxIGxlZ2FjeS10cnVuaworMTU2OTQgYjY2MGVjYmVhZWI4ZTMyYWQ4NDM4ZWY2MGMyOGM4ZjY4OTc4NWYwOSBsZWdhY3ktdHJ1bmsKKzE1Njk1IDc1M2Y5MTYzZGYwYmIzZjM3OTMxOTViMmE5Y2E1YmZkODY2YTUzYmEgbGVnYWN5LXRydW5rCisxNTY5NiBhOTgwMDlhNDM5MWU3ODc5MTZmMDZhOGZmMDBmOWJlMGJiMjczNTQ3IGxlZ2FjeS10cnVuaworMTU2OTcgMzQyN2IwZjg1YTdjZTcxYmFiOWNkMmExNjYzYzVhOTcwNDE0NWE3MiBsZWdhY3ktdHJ1bmsKKzE1Njk4IGFiYmNlYjZhMjUzMjRiNWI0NGM1MWJmZDYxYTc1NWVlNzFiNmZkYTEgbGVnYWN5LXRydW5rCisxNTY5OSA3YWI1YjFlZWViZGU5MjgzOTM0ZmE5YmE2NWY0YzgyM2YyYjliOTdkIGxlZ2FjeS10cnVuaworMTU3MDAgODgwMDRmMjVkYzI1YWJiZGIzNTA3Y2UwZjQwZGYxZDY1NjY4MzZiMiBsZWdhY3ktdHJ1bmsKKzE1NzAxIDNmN2EzNTc5OGFjZWExMDliNGU1ZTg0MzcwN2RiZmUxMjVjNGM0YTcgbGVnYWN5LXRydW5rCisxNTcwMiA4Yzk1NTRlZGJlYmJiNDhmNDZkZTY5MTU5M2EyNDIwYjRjNjcwMWQ5IGxlZ2FjeS10cnVuaworMTU3MDMgYTg1MzBkMzYwMjFjNmM4MWU1OTk2NjcyZDcxY2U1NDFkNmVjYmM3MyBsZWdhY3ktdHJ1bmsKKzE1NzA0IDQyOWRkMDIyNzJkNjgwNzkyNmIxYTIzZDJmNzFmZjY3NTdiZGFmOGUgbGVnYWN5LXRydW5rCisxNTcwNSBiMWVjNDliMmM1YzJhOTAzYjNiOTNkZjE3MmMzMzkzYTgyYjQyMzdkIGxlZ2FjeS10cnVuaworMTU3MDYgNWQyZmI2NzQwOGE3Y2M2MzI0Yjg5ZDIxMTY5YWQwNTVlOWYwNzI4NyBsZWdhY3ktdHJ1bmsKKzE1NzA3IDc1NWM5YWM5ZTZhZWJiNWYxNDY4MTMxNzZiNWI4ZmI4NzE5ODg4M2IgbGVnYWN5LXRydW5rCisxNTcwOCA2YjJlY2QxNzIyMDNiNGExMTc3MmNlNWFjOTg2MjI2OWVhOTIzYmI5IGxlZ2FjeS10cnVuaworMTU3MDkgYWNiMDI2MWI2OTQyZjNiZTdiMGJhMzc0ZWRiMWYwMzhiYjkyMzA1OSBsZWdhY3ktdHJ1bmsKKzE1NzEwIDJhNjRmMjI1YTEwNTMxYzI0Yjc1ODI5OWQ5Y2JmMmNlOGQwMDBiNTUgbGVnYWN5LXRydW5rCisxNTcxMSA4OTRlZmVhNzFhY2ZlZTI1ZDcwYmQ0YmU2MWVmMjhiZWM5MGRmY2QxIGxlZ2FjeS10cnVuaworMTU3MTIgN2YwMjJlMjYwYTRkOTMzNzcwOTBhZjM0YTI0MjFmYjA3YTc4ZDVjYyBsZWdhY3ktdHJ1bmsKKzE1NzEzIDUxOTQ5ZGU3NjM2NWIxYjU0MGM5NzQ4YWFiM2YzNGJiNGI5ZjU3YjMgbGVnYWN5LXRydW5rCisxNTcxNCBhM2UxMjg4MWNjM2MyM2UzNzNkMGE4ZTczY2NlZjZjMWM0OThlNTE4IGxlZ2FjeS10cnVuaworMTU3MTUgNDMwOTg1ZDU3ZGEzMTZmNWQzNGM5MWI2MjAyZDEzOWIxZTlkOGI2ZCBsZWdhY3ktdHJ1bmsKKzE1NzE2IGNhYWU3NTAxZGJhNTU2ODUxNTRiOWY4MmUxOWJkNDIyODMzMjI0YTQgbGVnYWN5LXRydW5rCisxNTcxNyBkYzBhMjEyZmIzNTM5MGZkYmRiOTA5YjI3NTY4M2ZiODExNzkwNjQzIGxlZ2FjeS10cnVuaworMTU3MTggOTdkZDZkYzMzNTAzNjdmNGU2MWQ0M2VkOTUxYTdlMTY0NDZmN2Y4ZSBsZWdhY3ktdHJ1bmsKKzE1NzE5IDNjNjY0MWM4MTBkYmEyYjU3NTY0YzljZDBkOGNhOGU2OWY1YmRjZTQgbGVnYWN5LXRydW5rCisxNTcyMCAyNTEzY2Q3NDE0N2M3Mzg5NDFiYjU3NmQ5MDEzNDE4YjI0MDgwMmExIGxlZ2FjeS10cnVuaworMTU3MjEgNDVhYWE3NWYwOGEzNzgwMmZjZDAyODc2NGFhMjg0YTRlZjE2Njg1NiBsZWdhY3ktdHJ1bmsKKzE1NzIyIGViOTExZWNhOWVlOWU4MTljMDAwMjk1MzVjMzE5MDQyNjQzMTM2MjcgbGVnYWN5LXRydW5rCisxNTcyMyBiYWMwNDViODUyNjNmMzU5ZjRkZTYxNDEwNGI1NTVlMzU0YWYxN2Q4IGxlZ2FjeS10cnVuaworMTU3MjQgYWNlMTM3MDFmMzM0ZDg3YmQ5OTI0NjkwYmViYmYzYzU1ZjgzMDAxMyBsZWdhY3ktdHJ1bmsKKzE1NzI1IDkzNjYxZDBlYjVjYzUxZGNhNTY1NTY3YWE0YTFmOTRiMzc1MjE4YTUgbGVnYWN5LXRydW5rCisxNTcyNiAwNGM4OWQ3N2RmZGJmN2Q1NWZkZDU2ZjAyMDQzMDAzNjk1OWI0ZTVmIGxlZ2FjeS10cnVuaworMTU3MjcgNDQ3ZWZiNjRjNzJkZGNiM2FkNTEwOGY1ZDc5NTA3MzUyNTIzNjlhNiBsZWdhY3ktdHJ1bmsKKzE1NzI4IGQxMTVhOTFjYTVmYTdmM2NmYzllNDRlMDQxYmQ4NzQ2N2E0ZTdiYzUgbGVnYWN5LXRydW5rCisxNTcyOSBmMzFmZmIzN2Q3MmNmNzMzNjQ4YmYwYzMwMzE0ZGJhYzE2NTM1ZWNhIGxlZ2FjeS10cnVuaworMTU3MzAgZTZiNDA3YmE0NzE1M2VjYjZmNDllN2M3ZTcxNzNhNzMxNDVhM2ZhMyBsZWdhY3ktdHJ1bmsKKzE1NzMxIDYzNDM2NzE5ZDEyZTAyYmQ5M2QwZGExOGYyY2E5ZDY2OGUwMTkzYzggbGVnYWN5LXRydW5rCisxNTczMiBiYzBkNDk2ODBhYTNkZjZhYWM4YjRkMDQwMTkwMWUyZGNjMTY5OTJlIGxlZ2FjeS10cnVuaworMTU3MzMgZmM3N2UzNGVmMjc0M2Y4Mjk1N2JkYjAyMjcyMmMxZWZiZjM2MDZkZSBsZWdhY3ktdHJ1bmsKKzE1NzM0IDBiNDIyNjRhYzAyMTU0NGJhZjZlNDg5NzcwZDVlYTAxNjA2Y2M2YWIgbGVnYWN5LXRydW5rCisxNTczNSBlNzk5MmQwZDY4MDgyOGNjMjZkNmEwMDA3ZWYxYWU0NThjN2VkZGFiIGxlZ2FjeS10cnVuaworMTU3MzYgZGY2MjdlNjE5MTZlMjBhMTA0ZTFjOTkwZjVmNzkyMjI0OWIzMWU0ZCBsZWdhY3ktdHJ1bmsKKzE1NzM3IGY3OTNjNDdjNTEwZTEzNjczMzRiNjdlMDRjZTBhYjUwYzkxMzljYTQgbGVnYWN5LXRydW5rCisxNTczOCBkYmIxMDNlOWE1NmY1MTNkODBkZjlhZmFjM2JmYTkwMjIwMTYwNjZkIGxlZ2FjeS10cnVuaworMTU3MzkgNzdjNjUxMTMxOTg0YjJlZWIzNzcyNzIxZjJjMGUwNzU4ZGM3MzY2MyBsZWdhY3ktdHJ1bmsKKzE1NzQwIDQwMDM4MjE5MDM2NDk3YzQ0NjU5YWM5ZWIxOGUzNTI3OTM4ZTM4ZGYgbGVnYWN5LXRydW5rCisxNTc0MSBkZmE4ZDlmMWMxMjMxOGU5OGMyY2Q0MjIwMzA4ZmVmYmUxNjk3MjczIGxlZ2FjeS10cnVuaworMTU3NDIgOTU2OWM1NjI1NzY1N2UwNjFlZmZmOGQ2MTVlNWUzOGVhZDA0ZmIxYiBsZWdhY3ktdHJ1bmsKKzE1NzQzIDg5NjAyZjMzMjQ0N2I0ZWYzMmMxYjg4YTdkNjg5MzA0ZjNjZjY2YTUgbGVnYWN5LXRydW5rCisxNTc0NCBiNTQ0Mjk5ZTY4YzVmYTc0ZmE0NTdjZGFiYTE1M2QwOWU5ZDU0NWUzIGxlZ2FjeS10cnVuaworMTU3NDUgNTM2YzYzMTI5OTMyOWIyYmMyMjg1NWMwZThiOTAyY2M2MmY2ZmU4YiBsZWdhY3ktdHJ1bmsKKzE1NzQ2IDU1ZTJmYzRkMzQwZTQ4Mjk5N2U0MGYwYzNlYWUwN2IwMzJkNjU2ZjQgbGVnYWN5LXRydW5rCisxNTc0NyA1Mjc5YTZlMDBkMzY3YjAwZjU0YWY0ZTA3OWVmOWNkZTU1NGUyZmZlIGxlZ2FjeS10cnVuaworMTU3NDggNjU4YzU1YzA4MTM5Y2NmNmIzOTM4OTIxMmRkYTc3ZjAyNTMwYWRiYyBsZWdhY3ktdHJ1bmsKKzE1NzQ5IDBlYjUzMWNlMDhkMThiY2E3ZThmZmMwZTk0NGZiZWY0MmIzNTdkMWQgbGVnYWN5LXRydW5rCisxNTc1MCAyNzJkYjQ2MDViZTQ3YWZhNDZlYTJjODk1ODM3OTc3Mzk0ODFlZGU2IGxlZ2FjeS10cnVuaworMTU3NTEgZTYxNTU5NmM1YzQ3YzAwMTg0MjA3MmNlZmU2MjJlOTk2ZGI5YzRkNyBsZWdhY3ktdHJ1bmsKKzE1NzUyIDFhNDBmMDBhNDhiZjY0OWEwYmZjNjNiNWRjZjJjOWUzOTY1YmNmMzEgbGVnYWN5LXRydW5rCisxNTc1MyAzZjk5MGVmNjY2Njc5ZDdlZWJhMzZlYzZlNzg0MjliNDJmYTY0YzhhIGxlZ2FjeS10cnVuaworMTU3NTQgOGY3OWM1YjY5ZTBhZGEzYzdjMDUzNjRhYTgxYjIzMmEyOGE4ODNmMiBsZWdhY3ktdHJ1bmsKKzE1NzU1IDAxY2U4OWZjNzQ1ZmUxYWVkZTdkNjkyYWYxMTA0NjI2YmI1MzkxOGQgbGVnYWN5LXRydW5rCisxNTc1NiBjOTEwYjlkOWEwYzBlODVlMGMyMWZkMzY5OGFkNDljNGZkYWY0Zjk1IGxlZ2FjeS10cnVuaworMTU3NTcgYzc1NzE4ZmJkODYyNmU4YmVlZWM2NGM4N2FiMjQ3NDQ1ODEwODQyOSBsZWdhY3ktdHJ1bmsKKzE1NzU4IDI3ZjNhMThmZDI5NjU3YjY1ZTIwMzYyNTFlYzc3YzZlMWYyYjVhYTAgbGVnYWN5LXRydW5rCisxNTc1OSA4NmQ0OTg5NDY4NjhjZjVhNjcyMDZiMmYyZTkyZmMzOTAxZjQ2ZmVkIGxlZ2FjeS10cnVuaworMTU3NjAgNzE2MGI1MmNhNzRhMDZiMWIwMDNlNTJhNmI1MDQ2MjQ1OTBiZTg1YSBsZWdhY3ktdHJ1bmsKKzE1NzYxIGJjMTQ3ZTE4OWI3ZjliNDc5MDNlYmFiYmViNmNkYWI5NjVmYzQzYTQgbGVnYWN5LXRydW5rCisxNTc2MiA3Y2QxNTJlMTUzOWM1Y2JjNjlhODgwOTA3NmY1MjZhOTZiZDBjMjBjIGxlZ2FjeS10cnVuaworMTU3NjMgNWYzNjI2ZmU1OGNhOGVkMmExMDljY2UwNjQ0MjA5NmVjNDM1YmYyOCBsZWdhY3ktdHJ1bmsKKzE1NzY0IDU3NzA3ZGJjYzI0NWM4MTE2YmEyNWMwZGM4N2Q0N2ExNTk5Y2Q4ZDQgbGVnYWN5LXRydW5rCisxNTc2NSAzN2JhNzA1NmQ0YWJmYjZkZjBmNjUyNzcwMjdjYjg4NDMzZDM0NzAwIGxlZ2FjeS10cnVuaworMTU3NjYgODIxODFlODIwZGUzYzg4OGNjYmQ4N2NlY2FiMTQ4ODJhNGMyNjYwZiBsZWdhY3ktdHJ1bmsKKzE1NzY3IDg3MDAzODQyZmFlY2E2ZWZjMjliYWIyMzYwMjkyN2E5YzgxODE1OTYgbGVnYWN5LXRydW5rCisxNTc2OCA1ZDhlZjIyYWRjYTUxNDY4MzM3MTBjMWM0ZjM0NzkyMmVlNGQ2YmI5IGxlZ2FjeS10cnVuaworMTU3NjkgNmUxODYxZTBlZDY4NzZiYmY3MDI3ZWViOWRkOTBmOWZjMmM0ZDU5ZSBsZWdhY3ktdHJ1bmsKKzE1NzcwIDdiMzg2NzhiMzY1MjY1ZTJiYjhlODU2OGMxZTBiZTMwYTRiMjRhNzYgbGVnYWN5LXRydW5rCisxNTc3MSBmYmFjZjZkNTVkYzY5MzgzMzYwNjIxOGQxYTI5ZjgwNDg1M2FiZjYzIGxlZ2FjeS10cnVuaworMTU3NzIgMzc0MDFlYzJlOTEwYjBjYmJlZDdjODZkNDQ3ODA0OGYyN2RhYzBhZSBsZWdhY3ktdHJ1bmsKKzE1NzczIDkwNzZlZmFjODQyMGI3NjA4MDYxNWRhODYwYjQ4OTk5ZWJjYjg5ZWUgbGVnYWN5LXRydW5rCisxNTc3NCBkYWRiMGNjNWMyZDI4NWVkZWQ5ODJiYzk4ZDUxOWNiZDI0NTIxZTBkIGxlZ2FjeS10cnVuaworMTU3NzUgNGYxM2MyYjgzMjBiYzNhYTI5MDk1YTY5ZjAwMWYwN2UxOWI1YjVlZiBsZWdhY3ktdHJ1bmsKKzE1Nzc2IGFmZmUxMGMzYjkyZWNlMjMwY2JiYzEwYzBkYmU2MDNkNzRhOTkyZTIgbGVnYWN5LXRydW5rCisxNTc3NyA3YTI5MjU4YzU1ZGRhZGZmZTNmNjNmOGExNDlhOTdhOGQxNTFkYWI2IGxlZ2FjeS10cnVuaworMTU3NzggMzgzZjQwNGI3NmQ3ZmIxNjJiMjcwOWY4YjRmZWVhZWNjMjliM2QxMCBsZWdhY3ktdHJ1bmsKKzE1Nzc5IDJlMmVlMTE3ZDQwZmQ2YjE0NDExY2Q1MGQ2YTIwMDRkN2M4Y2QzNDMgbGVnYWN5LXRydW5rCisxNTc4MCA0YTNlOTg3MWI0MWJiYTBiNTVkOGUyOWE2NmJjMjI4OWJkMWNjMjdmIGxlZ2FjeS10cnVuaworMTU3ODEgMWRhYzg5YmJiY2QyMTczM2Q2ZjEzMmYyZmM1ZjFhYjM1YjA4NzA2YyBsZWdhY3ktdHJ1bmsKKzE1NzgyIDMwYTRlMTM5NTIxMTAzNWJiZmZmMGVjMWM0ZWU3ZDY2NTNhOTllN2YgbGVnYWN5LXRydW5rCisxNTc4MyA4N2VjZTEyN2NiYTJkNjllYmE5MWZiODFmZjI1NmJkZjdmYTIxYTEwIGxlZ2FjeS10cnVuaworMTU3ODQgNDEwMmY3ZWRlOGU5OTljZTEwMWFlYTc5NDA4NTNlZGVkMDU3MzU5MiBsZWdhY3ktdHJ1bmsKKzE1Nzg1IDIzZThhYTQ4NWE3MGQ1NmUyZTE1OGMxY2Q3YTExZWMyMDE2MDIxNzUgbGVnYWN5LXRydW5rCisxNTc4NiA1ODY2MWE1NTdkYzY5MzRkZDRlYmQ0NTE0MzZiZjRmZDk0NGU4YTM1IGxlZ2FjeS10cnVuaworMTU3ODcgY2E5NmQ4Y2UxMmYzZGRlMjdmMjkyMTdjZDk1Yzc2YTAxMzI3NDg4MSBsZWdhY3ktdHJ1bmsKKzE1Nzg4IGJmMmVlODU2NzIwMTU0OGY5NDkzZDg2ZTQ3MDljYWEzM2I5ZDVkMjYgbGVnYWN5LXRydW5rCisxNTc4OSA5NzQ4MWQ3YWM1NDhhZDRjYThjZmFhYWNjYzBhOTJmNDI0MWVjYzAxIGxlZ2FjeS10cnVuaworMTU3OTAgNzBiMTZkYzYxMzdmMjQ5MDBkYTQ1NTFmYTVmN2EyNmNiNTJiYWRjYiBsZWdhY3ktdHJ1bmsKKzE1NzkxIDVkZjAzNDgyNjczNTJhZGQzM2UzYTdlZTk4ZWIyN2FjM2NlODlmZTIgbGVnYWN5LXRydW5rCisxNTc5MiAwMGE5ODExOTRjYTY5ZmYwZjRmYTk5Yjc3ODIyOGQ0MjRiYTVmZjhhIGxlZ2FjeS10cnVuaworMTU3OTMgMTI0MGJjOTk3YzhmYjg2OTQzODA5NWUyNjYxOGNkNzI0YWUwZDQwMSBsZWdhY3ktdHJ1bmsKKzE1Nzk0IGY3YWQ3ZTc5MTVlOTlmNTczYjQ5MDlmZmFhNGJkYzkyNDUyY2I2ZjYgbGVnYWN5LXRydW5rCisxNTc5NSBmMWU0MGFiYmVkYjNlMzFiNTY5MDA5ZmNiNjM0NDBjMTQ3YjhkZGIzIGxlZ2FjeS10cnVuaworMTU3OTYgMWY2MWVmNjQ1M2Q1NGYxMDQ4N2M3MjE0YzQ1ODkyYTk0ZTM2MWVkYyBsZWdhY3ktdHJ1bmsKKzE1Nzk3IGMwOWE1NzBlYjZlYjVmZjc0MGFjMGQxMjViYjIzMDExOTcxZjc1ZDUgbGVnYWN5LXRydW5rCisxNTc5OCAzNjAzMjBkMmZlOTQ0ZDY0ODgwZGE4MWFjODI0ZDNjM2VmZGYyYjhkIGxlZ2FjeS10cnVuaworMTU3OTkgZWFhNGM2ZmFmM2M0YjIzYmU5YWEyNjc4YmEzMjQyYTY0M2I4YWFhNyBsZWdhY3ktdHJ1bmsKKzE1ODAwIDFjOGMxMDFmMmJlMWUzMGRkYTVhNzUxMmU1OTRkZDlhYTZjMzhkZGEgbGVnYWN5LXRydW5rCisxNTgwMSAxMmFjMmMyNjdiOTMyZTVjMzY4ZDJhYjI0YzEwYTZjNDgyMGNjOTk5IGxlZ2FjeS10cnVuaworMTU4MDIgODRjMmE0ZDJkZjlmNGZmMDdlY2EzOGVlOTE0MTNiZGViNmY1YTljNCBsZWdhY3ktdHJ1bmsKKzE1ODAzIDFmMjQ0MTk3OGFiMTQwMDYzNmUwZmY0MGNhZTczOTgxNGVkYTA2ODEgbGVnYWN5LXRydW5rCisxNTgwNCA3ZGY3NDUyZDEzY2Q0MzM5MjQzNTIxYzM4M2JiMmViZWEzYWI2MWViIGxlZ2FjeS10cnVuaworMTU4MDUgMGQzMDlmN2YwMjNmYzRhZWM4YmFiMzkxNGQxYTM4ZGI0YzcxYTQ0NCBsZWdhY3ktdHJ1bmsKKzE1ODA2IDcyMDU4ZGM3ZDU0NWI3N2UxZDE3ZjY3NjViNGIxMDYxNTZmNzg3YjMgbGVnYWN5LXRydW5rCisxNTgwNyAwMWQxZTEwMTg0OTUwZjJhNDM4MWU3NTZlMGZmYjEyYTUzZWQ2ZDhlIGxlZ2FjeS10cnVuaworMTU4MDggZjczNDU4YzVjMzVkMDFkZDkxYzc3OTQ1YmNiOTQ4YzM3NzZmNjVlMyBsZWdhY3ktdHJ1bmsKKzE1ODA5IDcwMDk4NDEwOWNiOTlmZWJlOGJhYWMyOGRkNmU4MDU3MTU2MjU4MjYgbGVnYWN5LXRydW5rCisxNTgxMCAwYmU0YjdiNjUwZTMzZGRhMDgyODlkN2Y2ZWFiZDJjNTQ0NzQ3YWRhIGxlZ2FjeS10cnVuaworMTU4MTEgYTE5NTk2MmUzODljYjJhM2NhMTI2ZDVkZjBjN2YzNDkzY2Q3NWUxNyBsZWdhY3ktdHJ1bmsKKzE1ODEyIGYxMzM4NDEwNTUyODljN2JjNmZjYmY1NWU0ZjhkMDQ3NjIzZTEzMGMgbGVnYWN5LXRydW5rCisxNTgxMyA0ZGJlMTMwMjdjYjMxOWNlMWM4OTUzODNjZDc5MDE5OWUxYWU2MWVhIGxlZ2FjeS10cnVuaworMTU4MTQgYjAwNzQ0MjM3ODc3MGRmZWY3OGM3ZDBjNmM3NDhmY2VjZDg3ZTliMCBsZWdhY3ktdHJ1bmsKKzE1ODE1IDI3N2JhODI2Y2ZjOTdmZmVkMmZhMjVkZWNjMDA3OTdjN2YxZTcyMTIgbGVnYWN5LXRydW5rCisxNTgxNiBjYjgxMDllNzI4NzcxY2Y3NWUxNzJkMTZlYjIyYjQ3OWZjMzNhNThlIGxlZ2FjeS10cnVuaworMTU4MTcgOGEwNzQwMmUyM2RlYWZjNGVlY2EwODU1NDlkNmM1YWVhOTY5NTUyOCBsZWdhY3ktdHJ1bmsKKzE1ODE4IDJiMjFjYzFiYjU2NDkxMmFiOTY0Yjc1MmQxOWFiYTBhYTc2M2I3MDAgbGVnYWN5LXRydW5rCisxNTgxOSA1M2Y0MDIyYzBjZDU4N2M5N2FkNDdhMTU4MDNhNzMxYjY2NTMyZTE3IGxlZ2FjeS10cnVuaworMTU4MjAgZjQwMjA1NzU2MWIzYTFjNmM0NTcwZmMyNzY5YTQyYjY5MjZkZWQ5NCBsZWdhY3ktdHJ1bmsKKzE1ODIxIDRiNDgyMWJmNTNkY2YzMWIwZTdiZDdjMzRjNWJiODQzNmJlZTE2OTMgbGVnYWN5LXRydW5rCisxNTgyMiA5YjJlNzBiNTVjN2YxNWYzNGU3MDBiNGYzNjdjMTgxNzE4MzcxMjMzIGxlZ2FjeS10cnVuaworMTU4MjMgY2JkYjA1NWU3OWQ5MjUwMjQ3MmQ2YzAyMTgyZTk3YzYxOWNkMzg5NCBsZWdhY3ktdHJ1bmsKKzE1ODI0IGViMjQzNDQzYjg4NDBlODJmYWI3ZDMyMzgwYzQ3MzcxYWYyYjBjY2MgbGVnYWN5LXRydW5rCisxNTgyNSBiZDhkYjcxNDIyZjYwODlmNmJmMDYxMGMyZDIyMTM5ZDI4MTgxNDMxIGxlZ2FjeS10cnVuaworMTU4MjYgN2IyNGM4MThlMmNmMmQzMTk3YzlkM2Y5OGFlODBiZDdkZTM2NDY0YyBsZWdhY3ktdHJ1bmsKKzE1ODI3IDViYWJjMGFkZDY0ZjI3OWJmZjJmMDM2YWM3NDJhNTFjMzgxYjRkYjQgbGVnYWN5LXRydW5rCisxNTgyOCBhNjc5YmRiNDNmYWRjOTFlZDRlMmQ3NTkxOTgxMmMxNWRhYjgyZDEwIGxlZ2FjeS10cnVuaworMTU4MjkgNzA1MTMyNjY3ZjdiYTJjZDdiYzcyMzg3MjIzYmM2ODQxNDY4YzU4YiBsZWdhY3ktdHJ1bmsKKzE1ODMwIGI3NmRmNjgwOTlhNWY3OTYzMWJmNmQ4ZGVmYTFjNWIwZjRmMTZhOWQgbGVnYWN5LXRydW5rCisxNTgzMSA3MzkyZTcxZjZjY2UwMjcyYmE3MTM5MzFiZDkwMTM2NWY0OTliMDg1IGxlZ2FjeS10cnVuaworMTU4MzIgYzg3OGRjNjNkN2FlZmFiY2FmYTY2ZTVhODQwNTgyYTQ5YzcxODhmMyBsZWdhY3ktdHJ1bmsKKzE1ODMzIDZhYjhlMWJiMTY3Y2QzMzcyZjhkNWVlY2JlOWU2YWM1MGE3ZDJiMjIgbGVnYWN5LXRydW5rCisxNTgzNCBlZjNkNDk4YWEzM2MyZWU0NzIyNmYwZDk3MzM3MTBjNmFjNTI3NjEwIGxlZ2FjeS10cnVuaworMTU4MzUgNGZmM2NlM2YzY2M2MjFlNGM1OTJiMzZiNWZiOTZmNzNkYTUxNDMyZCBsZWdhY3ktdHJ1bmsKKzE1ODM2IDJjZjk4NzRiNjIxMTRmZmU4NDQ3NjM1YzI1Njk3NjFjNWY0NGE5YmYgbGVnYWN5LXRydW5rCisxNTgzNyA1YTcwODM2OTA4ODRiN2NjMTUxNDAwODQ3NGIyYjc2ZDQ4MDE0ZmUwIGxlZ2FjeS10cnVuaworMTU4MzggMDNiMWNjNDdhODZkMDE0MjI3MzM2M2UxNDA5Mjg0ZmZhNGI0Zjc0ZSBsZWdhY3ktdHJ1bmsKKzE1ODM5IDFkMDQwNzk2MDk1M2E2ZDgwMzI0YWUzNmI5OWUyMzEwYzk5YzkxODggbGVnYWN5LXRydW5rCisxNTg0MCAxODUwMDNkMDllNzY2YzgzYjJiZjYxMmJiZDE1OTc3YzMwZmE4ZWZhIGxlZ2FjeS10cnVuaworMTU4NDEgODdiNDY2YjcwMmQ2MDgzZGJmYjQ3OTgyNGJjOTk3NDVmOGQ4ODU2YiBsZWdhY3ktdHJ1bmsKKzE1ODQyIDBhY2VjMjExYTIwOTBmYzg4NDMxYTMwMGNhNTc4ZTc5YTE4MDdlOWIgbGVnYWN5LXRydW5rCisxNTg0MyA2YjJjNjk2M2M0MGI2OGYxMWU4YjMyZGMwNTc4NGNkNTNkN2I3ODljIGxlZ2FjeS10cnVuaworMTU4NDQgZTBjOTAzMTEyZTRlZDRmNGNhMDg3MDMxYjE1YWNlMjAxMTA5YTIxYSBsZWdhY3ktdHJ1bmsKKzE1ODQ1IDA4MTc0YmYyMzcwMmZjMDg3NDhjZTExYjlmMTQ5YWVkOTkzNGI5ZmYgbGVnYWN5LXRydW5rCisxNTg0NiA5MjQ2OGQ0M2EyM2YwMzQ4NjRlMmIzMzc1ODdkODYyMDMzYjYyYTJkIGxlZ2FjeS10cnVuaworMTU4NDcgZGU0ZTMwOTYyZmFiYTAwNjU5ODlmZTU0NzQ0MTY5ZTY0MGViNjhhNyBsZWdhY3ktdHJ1bmsKKzE1ODQ4IDBmMjE2YTU0ZDM0YjQ5MDNlM2VlNGJjYTQzMDQ5ODhhZmE2MDA0ZmQgbGVnYWN5LXRydW5rCisxNTg0OSBhODgzNDg4YjlkY2JmMjhhY2UyNzUwYThmMTIwYTZhM2ExYTdhMGQzIGxlZ2FjeS10cnVuaworMTU4NTAgYmYxZWJlODY5ODc4MWNmNjU4MDIzYWZmY2I1Y2UyMzI5MmRkODY3OCBsZWdhY3ktdHJ1bmsKKzE1ODUxIGQwNjAxMjk2N2VhYTIyZWM4MmY5M2RjMzEyYmE1NTZmZDZjZGZkM2YgbGVnYWN5LXRydW5rCisxNTg1MiBiOWFiM2IyYWNjOGNlNDBmNzA2ZmVkMWE4YzE2ODA1ODIzZjUyOGQ1IGxlZ2FjeS10cnVuaworMTU4NTMgNTUyZmI0M2FlODIzNzc2NGRiYzI5MmVhZWMzNDg2Mjc1OGQxNmFmYiBsZWdhY3ktdHJ1bmsKKzE1ODU0IGNiZTAyYjhhZWUwNzg5MGZmODc0OWI4NTEyMGNlOGVjN2Q1YTk1ZDcgbGVnYWN5LXRydW5rCisxNTg1NSAwN2E0ZDE2MzdlMDZkZjkzYjAwODY0OTUxZTc3Yjg1NTBiZjhlZGI4IGxlZ2FjeS10cnVuaworMTU4NTYgMjIzMDllOTU3ZmE3M2VlMmQ3NTkxNDJhNWQwZDk0NTQ3MzhjNTdmMiBsZWdhY3ktdHJ1bmsKKzE1ODU3IDhjOGRlNWI3MzZkYzIxZjBlNGQ0MjYwMmY0N2UyZTRhMWYxOWNkNWEgbGVnYWN5LXRydW5rCisxNTg1OCBkODQ5YTBkMjI5MjdhZDM2MjUzY2MxMDZmMjA2YjkxZTZmZWIyMTVhIGxlZ2FjeS10cnVuaworMTU4NTkgN2JlNTQ4MjQyNmQxZWZjNjIxYmViMzEyNjVhY2Q2MmE4NzE4YWQ2MyBsZWdhY3ktdHJ1bmsKKzE1ODYwIDk5Y2VlMGM4N2Y2YTA0ZjA5MWM0YzAzOGMxZjE3NDU1MTk3MjA0NGIgbGVnYWN5LXRydW5rCisxNTg2MSAzNjU4NDRlNzU1ODY2OTM5OWVkMDgxZmI2ZmYzYWMzMTBkMmZhN2E4IGxlZ2FjeS10cnVuaworMTU4NjIgM2NlYTczYTJiYmQ4YzEyNjY3MDQyZTI4NjI0ODA5NjI4OTMxMmQzNyBsZWdhY3ktdHJ1bmsKKzE1ODYzIDQ1OWQxOTdhZGIwOGZjNjdkOTIwMjgzMzk2ZTQ4NmViNmNhM2Y5MmYgbGVnYWN5LXRydW5rCisxNTg2NCBlODM5ZThlOGQzZTljMGExMDZkMGZmM2YwYzgwNmU3OThiMTk0NWU0IGxlZ2FjeS10cnVuaworMTU4NjUgNzk3YWNmM2ZmZDI2NjU3MzFjMThjMTg5MzY1MGMxZDcxZmYyOTc1YSBsZWdhY3ktdHJ1bmsKKzE1ODY2IGZkODQ2N2QxMzc1ZDIwNGE1OThkZmQ0OTZjNGE5MjM2ZGZlYmFhYTQgbGVnYWN5LXRydW5rCisxNTg2NyBhNjcyNWFjZGYzM2IxYjk4ZjQwYTkzMjYwNjVlMzBhZmU3NzdkNzhlIGxlZ2FjeS10cnVuaworMTU4NjggZjYxYjRhOThiOTcyOTJjZDZkOTczNzUwY2U2ZTcxOWZjYWJjY2JjZiBsZWdhY3ktdHJ1bmsKKzE1ODY5IDY4ZTU3YzVkMWJlYzA3Mjg3N2JlMzJiMGVjNTEyNTlkNWQzOTczOTUgbGVnYWN5LXRydW5rCisxNTg3MCBjM2EwMWI2NDJjOTcxODlhZGE0MzJmMGUzZTZmYzBmNGI1YTc3Y2NlIGxlZ2FjeS10cnVuaworMTU4NzEgMzQ2ZjJhMWMwMmEwYTM0YTM3MGRhY2RlNTBjZjQ3MGYzYWU1Yzc0NiBsZWdhY3ktdHJ1bmsKKzE1ODcyIDUyZDVmYjQ3MWUxNzIwZjA1ZjFlYzE3MGY1NTk1MTVjMjExYWZkN2QgbGVnYWN5LXRydW5rCisxNTg3MyBmOGJjN2Y2MmRjMjNhZmRjZTYwOWQ3N2Q0YzM0YjdlYTRlZDZjZmEyIGxlZ2FjeS10cnVuaworMTU4NzQgNWJkMTI3MzNhNjRhYzQ4YjIzYmEwZmZkNDQwYjA3ZjY5MDZmNjBhMiBsZWdhY3ktdHJ1bmsKKzE1ODc1IDkwZWI1ODIyNGU0MzE3MjM3ZjJlY2MwOWJmMjRlMTRjNWU4MDBiY2UgbGVnYWN5LXRydW5rCisxNTg3NiA4MTkzZTA0NTc4N2JmZjA4MTZlMjQ0NmRhM2RhMjU2YzVhMWEyMTcwIGxlZ2FjeS10cnVuaworMTU4NzcgODk0NjEzYjRlYjA3NWE4NTBmZTI1MzUwN2RiNjNlMDJhZWEyNzczNSBsZWdhY3ktdHJ1bmsKKzE1ODc4IDI2ZWMxYjMwZWZhOTNmZGY1ZDRiMzNlOGIwNjNmNDViMWM5NjhmZWYgbGVnYWN5LXRydW5rCisxNTg3OSA3ZmY0MGRhMDhjMmE2NDY1MGVlMzI3MjhjZTJlMDBjZTRhY2Q3ZmJhIGxlZ2FjeS10cnVuaworMTU4ODAgZmQxMmNkOTk2MTU0NDQ0ZmJjMTE4MDQwYTM4YWZkYmUzYmFlNTllNSBsZWdhY3ktdHJ1bmsKKzE1ODgxIDg5NmIzNTlkMWM3ZDZkMjQyMWUzOWZlNDRhNTNiNzdiZjE5NDNiNDMgbGVnYWN5LXRydW5rCisxNTg4MiBmYWVmZmY0M2U1OGE5OWIyZTUzMzlhNTYzNDMzOGM2N2IzYTBkODkzIGxlZ2FjeS10cnVuaworMTU4ODMgNTNkMDBlN2M1ODQ4NDM2N2IwYmMzMWNmMDE0NzAyY2E5NzNhYTJkNyBsZWdhY3ktdHJ1bmsKKzE1ODg0IDQ2MjE3NTgyN2E3NGVlYmY5MDgwNzYzMTdjNmMwZmFiOTNlOWQ2ZTYgbGVnYWN5LXRydW5rCisxNTg4NSA1MDIxZGI2NzQwMTkzMWY2Y2U0OWMzODBmZTA1NWNlNGZmOTBmODAxIGxlZ2FjeS10cnVuaworMTU4ODYgNDI1NThmMWJiZmM0ZGM3MTkzNWE1YTgyY2ZiOGVjOWY3YjI3NmFkMSBsZWdhY3ktdHJ1bmsKKzE1ODg3IDc4YWQ0ZjY0YWRjNWY0MTgyNWVlZGIxYWM2NGFmY2Y5MzdjY2FhYmUgbGVnYWN5LXRydW5rCisxNTg4OCAwNzA0MGQ1NjFmMDkxMjQzOGY5MDc1NzNjMmQ0YTg1OGIyMTk5ODA3IGxlZ2FjeS10cnVuaworMTU4ODkgY2I5MjhkOTI2ZjI3M2RiOTE0Yjc4ZDQ5NGFhZWRjNmM2YjE1YzRmZCBsZWdhY3ktdHJ1bmsKKzE1ODkwIGUwNDJjNGMzODYwNTZhODQzNWE4MmI1NzkxYTJkNjE2ZTE3ZTRhNGIgbGVnYWN5LXRydW5rCisxNTg5MSA3YTc4NzE1MzU3MjcxZTdmN2Y4MjU5NWNmZDE1OGJhMTFlMDkxODM0IGxlZ2FjeS10cnVuaworMTU4OTIgMDVjYzQ1ZDU3YTdmYTE2MGIzYmJlYTA3ODAxNmE0NmU3YjVlOGRjMiBsZWdhY3ktdHJ1bmsKKzE1ODkzIGVhY2E5ZTI1YTA0ODk2MDdkZDUxYTFiMjVhMTdkOGRhZmYyYjdjODIgbGVnYWN5LXRydW5rCisxNTg5NCAxNTY1MTQ5MGFmMzQyZjA2MjU0NDhiMjNiMzdjZmFkNzg1N2E0MzEwIGxlZ2FjeS10cnVuaworMTU4OTUgZjgyNjUyNTRkOGE5ZmNjNTcxODc5MjE0MWJiYzg2YWJhYzhhNzEzOCBsZWdhY3ktdHJ1bmsKKzE1ODk2IGIzMWZmZjU5NjIyYTNkZjM3Y2JjNmQ4ZDEyYTMyZThjNzk5ODEzYTIgbGVnYWN5LXRydW5rCisxNTg5NyBiNmVkOGZhMjY3NWM3N2Q0MWIyY2UxNjEyMjRjNmY4NjdkYWJlN2VhIGxlZ2FjeS10cnVuaworMTU4OTggNzJlM2NkYjMyYTZjNjE0NDdhNjFkZjU2M2UzYzVmMzdmNmZhMzNjYiBsZWdhY3ktdHJ1bmsKKzE1ODk5IDQwNDE1NjA5MmY3ODFiODk3ZjRhZjY1OWNjOWIxMGU0NGVmNWQ0YzMgbGVnYWN5LXRydW5rCisxNTkwMCBjMjIwN2Q2YzAzYTgxOGVmNTNmNTViZDkxYzYxY2EwMDQxMmNjZDQ2IGxlZ2FjeS10cnVuaworMTU5MDEgN2M2YjEyY2VjZWYyNmUzMzhlOWJlMTY5MjZhZjVhMmYyNjUzOTJhZCBsZWdhY3ktdHJ1bmsKKzE1OTAyIGNjYTg0NzQ1ZGEzZTAwY2JmODNhNGY2Y2U0ZGViYjVjM2I0OGIxYTQgbGVnYWN5LXRydW5rCisxNTkwMyBmODZlYTVhNjljNWVhZGI4MDQwZmMxOGY2N2Y1Mjk4NDA4ODJjMzc4IGxlZ2FjeS10cnVuaworMTU5MDQgZjVmMGYwMGY5MjJhMzZhYWFjOGZhMDY5MmJmZjc4ZjJjN2ViMjY2YSBsZWdhY3ktdHJ1bmsKKzE1OTA1IGZmYTRiNGI0MzcwMzFkMzRmMDEwMGFlZmI2M2UzZGZiZGExYWRjNmUgbGVnYWN5LXRydW5rCisxNTkwNiAwYTE0NjNiYTI5MzQ4N2Q2ZWE1NmMwOGIxYjliNjliNjllNzNjZjE3IGxlZ2FjeS10cnVuaworMTU5MDcgNzk1YjMyN2E5NWZlYmRhYmJmYzliZGRhYzAyMDFhOTEzYWRhYmFmOCBsZWdhY3ktdHJ1bmsKKzE1OTA4IDJmM2U0MTg2NWQzZDNiZmJiYzNmOWFiMmY5MDFlMjY2MTBhZDkzZmMgbGVnYWN5LXRydW5rCisxNTkwOSA2MDdlNTI4NDFkZjI3OGZjZTJhNDEwNzk0MWVmMjFiNTY0ZWQ0NGY1IGxlZ2FjeS10cnVuaworMTU5MTAgNjdlNzc0NjYxOWRhN2VkN2NiNzVjYWI2MDJjOTRhYTczZDI1YTgzMiBsZWdhY3ktdHJ1bmsKKzE1OTExIGYxZjRkODIyZTc2MWU3YWNlYTlmY2QyNDUyNTY1MDliNzkxY2NiMjAgbGVnYWN5LXRydW5rCisxNTkxMiAzZjgwNzNjNjMwMzNjMTYzYTc5NDBlNjNiNzk3NWY3MjJkNjIzZGIxIGxlZ2FjeS10cnVuaworMTU5MTMgMmI3MmFhYmE3ODk1MTExNTY0ZWE3M2FiMWEwZDhkZTYxYWYyMzZkZSBsZWdhY3ktdHJ1bmsKKzE1OTE0IDMyODE2Y2U2MGE0OWIwOWFkZTk3NTkxNzI5ZTI4MDMzMTZmZmMzNzIgbGVnYWN5LXRydW5rCisxNTkxNSAzNTdiNzFjNjkzM2I4NTEzZDI1YmY5MWVmOTRhNzUzMDQ2ZmMzOGY3IGxlZ2FjeS10cnVuaworMTU5MTYgOTkxOWQ2NWVkYzc2Y2FmZmJkNmZjMjgwMDBiNjhiZjI3ZmUxMGVjYSBsZWdhY3ktdHJ1bmsKKzE1OTE3IGMzMzlhYzdiNmQ0ZjFlMTEyYjhiZmZlNjFmN2M1MmZiNGY5ODFlNjUgbGVnYWN5LXRydW5rCisxNTkxOCBmYTNkYzIxZDBlMDg4MGU1YzQyZDBkOTYyODQxODQ4NjIxOTYyY2ZjIGxlZ2FjeS10cnVuaworMTU5MTkgMWE0MmE5ZDEwMzU3ZTE0NmFmYWRkZTdiNDIxMGE2NzBjODA3ZTExMCBsZWdhY3ktdHJ1bmsKKzE1OTIwIDUzMzU1ZWQ2MTI4ODkyODE4N2M4NWNiN2U2MWM3NGYyYzJjYzBjNTUgbGVnYWN5LXRydW5rCisxNTkyMSAxMzllYWYyZjk2YWI2NzIxZTMyYTE4YmMyNGRlYmQ3NjFmNTA0YTA1IGxlZ2FjeS10cnVuaworMTU5MjIgY2NlMmM3YTM4YmQ1NmRlMTI2NjM0OTc4MTFjOWY1NjQxZGE2ZWNkNCBsZWdhY3ktdHJ1bmsKKzE1OTIzIGMzNjA4MDZjMDZjNzYzMjYxYWM1ZGRkODI0MTZiNGU4OGI0MzU4OTggbGVnYWN5LXRydW5rCisxNTkyNCBhMDllODYzNTUzNGRlMTJiNDJlMTc5MjY4MmExMjlmNGE1ZDM2NTlkIGxlZ2FjeS10cnVuaworMTU5MjUgNmZhYTQxMWM2MWZiNGFlZGYzMTAyYTIyMzUwNWJmOWZlYmM3ZDBjOCBsZWdhY3ktdHJ1bmsKKzE1OTI2IGM5YjFmMTk4NmM0MDI5NDhkNzIyN2Q4YjNjODJlNGFjMzFhMDQ3MmUgbGVnYWN5LXRydW5rCisxNTkyNyAwMjNhMjAxOGI5NmRlYmE4NGY5Nzc3NzIwMjFlZDE1MDNjYjI5NzAxIGxlZ2FjeS10cnVuaworMTU5MjggZjcyOTQyNDZkMDRmOGQ0YzU2ZDY2YTEwMzFjYTk2NDhlMzQwNWNiMCBsZWdhY3ktdHJ1bmsKKzE1OTI5IDVmNmYwODg2OTA1Y2QzMzE4NTAwZWVlYjE2MTUwNDIxMWIwMjA4NDEgbGVnYWN5LXRydW5rCisxNTkzMCBiNzhiOTk2ZThlYmMyYjA2MzIxY2ZhYmYxOTczYzZhNWU5ZjQ5MTAwIGxlZ2FjeS10cnVuaworMTU5MzEgMjA4MzQ2ZTkyNGNiMDI5MGFkNDA3MTc5NWIyNjQxNzA1NmFlYTUxMCBsZWdhY3ktdHJ1bmsKKzE1OTMyIGMxN2ZkMmNhNjY1OWMwMTQ4YThiNjhiNWVlYjRkYWU1NDIzMjAyMzIgbGVnYWN5LXRydW5rCisxNTkzMyAwNWU0NWM1ZjJkZTViN2NlZmQ2ODBkOGYxNmI3ZDA0NzQ2MjdhNmZiIGxlZ2FjeS10cnVuaworMTU5MzQgMDAyMWYzYzBiMjM4MDMyMzhlY2M1NDIyN2E5Yzk5ZTUwYmU5YzkxNiBsZWdhY3ktdHJ1bmsKKzE1OTM1IDlkOWU1YTdjMTJkYWJkMzkxOThkNzc0YjRjODMwZjMzZDFkZDVkNzIgbGVnYWN5LXRydW5rCisxNTkzNyBkMzdjMDI3ZTNmYWU5N2JkOGM1MGI2OTZlODkwN2Y1ZmExYjUwNjRjIGxlZ2FjeS10cnVuaworMTU5MzggMjhhOGJiNzk0ZjE5ZDU4YzgyMjJhYmI5NTcyMGY1MzA0YTQ5M2ZiZSBsZWdhY3ktdHJ1bmsKKzE1OTM5IDdhOTZlYzAxMDMzM2RjODI2MTIxOTc4N2QyODliZTQ0MmFjN2FhNDIgbGVnYWN5LXRydW5rCisxNTk0MCBkMzczNzQ1NTJhMTVmOWI2ZGMyZjhjNGQwNzVjN2UxYjRhZGY2NDJhIGxlZ2FjeS10cnVuaworMTU5NDEgOTE1ZDk4NTkxOGUyMWQzYTljZGJkN2Q3M2NjZmQ5N2Y2MTQwMzQyNiBsZWdhY3ktdHJ1bmsKKzE1OTQyIGVmMTMyNDJkZTQzM2U3NGQwYzI3N2RlMjk4NGVhNTk2YWUzNzY2NDQgbGVnYWN5LXRydW5rCisxNTk0MyA2ZjQ2Njk4MTQ4ODRhMzEwNjhlYjA4NTNkMTJmOTU0NDlhYjgzM2U0IGxlZ2FjeS10cnVuaworMTU5NDQgMWUzMDJkOTk2ZDU4ZDhjYjRhOTkwMWIzOTk5ZDMyYjBjOWM1ZjJlNSBsZWdhY3ktdHJ1bmsKKzE1OTQ1IDU0YmZmZGRkYzBlZjA4MzE1ZDY1MGU5YWYyZWM5ODQzMDQ1NGVhZGUgbGVnYWN5LXRydW5rCisxNTk0NiBlZmVjYmJmNzI3NjUzZDc3YTYyYWM4MDc2YzkyYTY3Y2FkYWFiNDZkIGxlZ2FjeS10cnVuaworMTU5NDcgZTljMzRjY2EwYzk2ODYyNDM1NTJlNmQ3YzBhZjZmNDQ3OTgzODg4MyBsZWdhY3ktdHJ1bmsKKzE1OTQ4IGM0NWJjMjU4ZjgzM2MxMjkwYTZlMDk2NWViYjNhY2ZlMmVmODQ0ODIgbGVnYWN5LXRydW5rCisxNTk0OSA1OTI5NGRkNGJmZGRmMWUxNDI4MzcxNjhiZGI2NzYwNmZhOGUyZWY3IGxlZ2FjeS10cnVuaworMTU5NTAgOTJiYTkyOGMwOWI4YjhjYzFhNzYyMTEzNTQ0YjdkZDIxMTFlOTIxNiBsZWdhY3ktdHJ1bmsKKzE1OTUxIDdlMjQ1YmM1OThiN2JjMzcxODNhNTVhNjllMzM1MWRiMmMwNTAxOTkgbGVnYWN5LXRydW5rCisxNTk1MiBjN2JlODQ3ODI2YjE3MjQxMGYyZDBlNmE5MWZiYzQ5NjRkYWMyMGI2IGxlZ2FjeS10cnVuaworMTU5NTMgN2U3MTk3NWVhNWYwOTBmZmZjMTQzZTkxNzdjZjQ5NGRmNTRiOTQyNiBsZWdhY3ktdHJ1bmsKKzE1OTU0IDMxMjhjM2NkMThlODZjZWE0NWYyMjA1ZmYxNzQyY2MyM2IzMWJmZGMgbGVnYWN5LXRydW5rCisxNTk1NSA1NDFkYjVmNjI1OWU5NmFjMzRjNzNjZDliMGI3OTc5NWQ0MjkzNzgwIGxlZ2FjeS10cnVuaworMTU5NTYgNzUzYWY2MmFiOGExOWJmOWFlYjMzNjhlMjQ0YWJiMjUxNzVhMTEyZSBsZWdhY3ktdHJ1bmsKKzE1OTU3IDk2MTY3YWY5MGZhMDMxMTRmMTk4ZTMyZGNiNzZlYjAxNDFhMmVmZjQgbGVnYWN5LXRydW5rCisxNTk1OCAxODkyMGVhYTEyMjY0YTdhZmE4ZDc0YWJiOTM0MGI1YmRkZmYxZjAxIGxlZ2FjeS10cnVuaworMTU5NTkgZWRlMThmZDVlZDE1YWU4ZDZmZWZhZjUyYTNmNGE2MzAxNzIxNzFmMSBsZWdhY3ktdHJ1bmsKKzE1OTYwIDRkZWVlZDU4YmY3NjRjZDU2N2I0ODVkY2NkYWM5ZTZjMGRlZTI4NmQgbGVnYWN5LXRydW5rCisxNTk2MSBjNTI3OWMwZjcxNmYwNWIyN2VjMGZjMDJkNmZhYjhmMzgyNzMxOTc1IGxlZ2FjeS10cnVuaworMTU5NjIgZWUxYTM0ZTVlZGIxMjc1Y2NiM2Y1NzU4NzU4YWZmZjY3MzcxZWY2MCBsZWdhY3ktdHJ1bmsKKzE1OTYzIGEwOTNmYWQ5MmNjZjg5NTA0ODhkY2Q2ZDg4MDcxODljZmU2Njk4MTAgbGVnYWN5LXRydW5rCisxNTk2NCA3OWM0YTA1NDI1NzI0NDJmNGY0ZGZkODNmMjg0YTg4ODQ1Y2RiMjVlIGxlZ2FjeS10cnVuaworMTU5NjUgYTYyNWNlMmZiZmJkODU1MmFhYTM0ZTc5Y2E5NWJlZmFlODQxMGI5ZSBsZWdhY3ktdHJ1bmsKKzE1OTY2IDVhNGRmOWQ5YzdiZjU2ZTNiNDdmNmRiYTJlZjUwYmMyOTUyYWMxYTQgbGVnYWN5LXRydW5rCisxNTk2NyBiOWE1NmU1ZTNkMjI3ZmQ5ZDAxZDc5NmNkNWNkZTc2ZjBjZWIwZTcxIGxlZ2FjeS10cnVuaworMTU5NjggZDY2NDM1MzM3ZTFjMmI1NTNiNGNjYjgzYWFjYTA5Nzk0YzcxZGJjYSBsZWdhY3ktdHJ1bmsKKzE1OTY5IGVhNGJiYWJjNzQ5NzMwOWJmZTUwYzJiYWRhOTE1ZTI5MjNiNzg3NWYgbGVnYWN5LXRydW5rCisxNTk3MCA5ZDIwNjg3M2M1YmQ0YjFmYThlODlkZmY3NWRhNGIxYjk1NjczNTNmIGxlZ2FjeS10cnVuaworMTU5NzEgYjExZTBhODk4ZGUwOTU1YmQ0Y2VmYWRlODZhYzg1M2ZmMjUwNjI5ZiBsZWdhY3ktdHJ1bmsKKzE1OTcyIGZmMjQzYjBmMTZlZWI4ODU1OTI3YzEyNjA5NWI1ODVmOWI1YzhhNjAgbGVnYWN5LXRydW5rCisxNTk3MyA4MjdiNTc2ZTI2NWI5NjA4ZDkyNWYzMzNjMGM0YThmMTA4MTgwOTczIGxlZ2FjeS10cnVuaworMTU5NzQgZjI5ZmJhNWM5OGJkZjdiMDgzMzI2MzBlMDU1YmQzODM1OTEyZDZkYSBsZWdhY3ktdHJ1bmsKKzE1OTc1IGMyOTA5ZWM3ZDRjZGNhMDI1Mzg1ZWEyYmM2ZWVjODliMDgyY2U3MzggbGVnYWN5LXRydW5rCisxNTk3NiA1NTViMmUyMmVlODk4MmRhMmRhNmYwZGI5ZmFiYTQ3ZWQxNjM0YTliIGxlZ2FjeS10cnVuaworMTU5NzcgMDk3Njg0YjkzY2E5YzEwNDlhODI2ZjI3NjdmNWI3NmQ1N2ZlMWE3OSBsZWdhY3ktdHJ1bmsKKzE1OTc4IDYzZWJiNjkwNjg3NzQ5ZDgyMDRlYWExYmUxOThiMjkyZjQ0MzMzNjMgbGVnYWN5LXRydW5rCisxNTk3OSBlMmFlZTYxOTBiMTk4NTAwM2UwMmI4YjZmYjMyYWJhYTk1MmE3NzhkIGxlZ2FjeS10cnVuaworMTU5ODAgNzlkYzFlZjVjMjJkMTk2OTE4OTI0NzZjYzcxOTYwNjVlMmFhODk5NSBsZWdhY3ktdHJ1bmsKKzE1OTgxIGE5MmY0M2QyMGVjYjE1ZjgzNzhiNTJhZjlmMWM0YTZkNTJlNmVhNDQgbGVnYWN5LXRydW5rCisxNTk4MiAwNDJiOTZjZGY3ZDc5NDUwMDgyMGM3MGRmNDA3N2Y4NTFlM2FmYmYyIGxlZ2FjeS10cnVuaworMTU5ODMgZDdiNDhjODQ5MTg5NTM0YjUzZjRhMzQzZDQ3MDk5OGE2NGI2YjEwOSBsZWdhY3ktdHJ1bmsKKzE1OTg0IDVkZDM4MWFlYjIzYjI3YTg4YTI0NGNiNGNmZDRlNDQ3OTU1MjI3NDMgbGVnYWN5LXRydW5rCisxNTk4NSAwNWQ1ZDNmOWExOGNiZmFmZGI4MDc1NDc3Mjg0MmMyMWU3ODlkZmQwIGxlZ2FjeS10cnVuaworMTU5ODYgMWNmNTQ0YmEyMzllNTYxNjU4ZGU0YjUzNjQwZTNhMzEyOTBiZjAzNiBsZWdhY3ktdHJ1bmsKKzE1OTg3IDJlYmZmZjEzOTM2YzI0YzBkMWJmZjFkYzVlMTZlMGI4MTMxNGZiYjEgbGVnYWN5LXRydW5rCisxNTk4OCAxMjQzN2RlYjA2ODBhYmFmYzExNzQ3ZGFlMTZhOTAwODkzY2MxYTcwIGxlZ2FjeS10cnVuaworMTU5ODkgYzJkZjVkMjgwMzRkYTU3N2I4OWI1YmVkMGM4MmQyMGEyODkyYmM2ZSBsZWdhY3ktdHJ1bmsKKzE1OTkwIGYxOTVjOTk4MWZhMWE5YTY1MGViZDNiNTA2MWJjNTFhY2VmMmViMDIgbGVnYWN5LXRydW5rCisxNTk5MSAzNDRhYjM0OGYxZTljOWQ4YjAwNzMzMmY4NjA4YzBkZTdhMzU4Zjg0IGxlZ2FjeS10cnVuaworMTU5OTIgNzA2NmJlMmVkYzNiNjlkNWY2OTMxZTUxZjQxOTdkMThjYzFmM2U0OCBsZWdhY3ktdHJ1bmsKKzE1OTkzIDIwOWViNDRjZGJmN2UxMTQ2NjIyNThhMjU0Yzg4YzU4MTNkMzYyYjQgbGVnYWN5LXRydW5rCisxNTk5NCA2OGRkNDAzMDcxNzI2ZTFmOTlhYzQ5YTU2OWU2OTE1Nzc3YzI2NDE5IGxlZ2FjeS10cnVuaworMTU5OTUgODZjOWY2OTFmMzc5MGEzOTBiYjcyMzkwZDAyNDNjOTg3ODRhNWZlNCBsZWdhY3ktdHJ1bmsKKzE1OTk2IDc5ZjhmNmI5NjNjMjY5YTI0OWY0NjgwOTA0YjVlYTJjMWIwNDVmZTYgbGVnYWN5LXRydW5rCisxNTk5NyA3OGJmYzc0MGI2MWNkMWQ5Y2UxZGI2ZWY0YTNjMDA2ODU0ZmU2NTUwIGxlZ2FjeS10cnVuaworMTU5OTggMzFmOWZhNDJkZjYwMGFhY2Y1ZWUwODM3NWJhYjRjNmQ5ZmUxMTBlMiBsZWdhY3ktdHJ1bmsKKzE1OTk5IGFmNzI4MDVlOTk0MmFkMmZkZjVhZmI5MjVjOWQyNTNiNTNhYzI5MTEgbGVnYWN5LXRydW5rCisxNjAwMCAwNDkzOTViMDI2MDJhMzRkMTBiNDVhNjI4ODkwMWQxZjlkNDE1MWQzIGxlZ2FjeS10cnVuaworMTYwMDEgNjUwMTU0MjkyZWUxMTczYTYzMDRlMmI2NmYxMWE0OGM4NzExN2RkYSBsZWdhY3ktdHJ1bmsKKzE2MDAyIDUzYmUyODVjZmQyY2FjNmJiOWI2ODZkYTQ0MzcyYjlhMDA0MDNiOTQgbGVnYWN5LXRydW5rCisxNjAwMyA2MTA0YjYxMjE1ZTY3Y2E2M2Q2Yjg1MzYyMjBlNDdkNWVjNmY1YTdiIGxlZ2FjeS10cnVuaworMTYwMDQgNTQ2NjI3MGRiYzkyNjhhMGNhMWE5N2RkZmI5MjU3ZTM5ZDkwYzFkNyBsZWdhY3ktdHJ1bmsKKzE2MDA1IDFlNDZjMjNiMWRhZGI3NGU2ZWMzMzdlMjY4OWIwZjIyYzkwMmMxODcgbGVnYWN5LXRydW5rCisxNjAwNiBhNzkyYjc0Y2M5ZThjMzUyNjdiOTlhYmQ4ZTk5OTczNTc2YmQ0YTU4IGxlZ2FjeS10cnVuaworMTYwMDcgMDlkOTE3MmZiMWQzNGNkNzIwMGQwNjVhN2E2OTYxYTcwNWI1NzZiMyBsZWdhY3ktdHJ1bmsKKzE2MDA4IDU3ZDZhMzFlZTQwZTAxNDlkMTk4Nzk5MzY5Njg3NTNkYTYxZjVmYzYgbGVnYWN5LXRydW5rCisxNjAwOSA1ODkyMDJjNjQ4ODc5MWQwZTdjNzMyN2M4YWM0OWFiMDkyM2QwMDAyIGxlZ2FjeS10cnVuaworMTYwMTAgOGVkZTRiMDgwM2ZiNzlmZmMzN2NiMmQwNzZkYjE3NzU4NjZhYjFjMiBsZWdhY3ktdHJ1bmsKKzE2MDExIGFjNGQzY2ZiYzFjOWQxODQxOTRjYjljMmU1OWMzYWZkMTI3NzNkZGIgbGVnYWN5LXRydW5rCisxNjAxMiA4ODY0MGVjZjU1MDYxZjMyNWNlZjhiMTIyMmJhNGY4YTk3MTBkYmQ2IGxlZ2FjeS10cnVuaworMTYwMTMgODYxNzdmYjBlZGQ4MzVjY2M0Yjg4ZDc2ZDEyY2M4NDc2YTEwOWViZiBsZWdhY3ktdHJ1bmsKKzE2MDE0IDMxMGQ3Y2JiYTMyOTIzOWM5YmM2N2EyYjczNzk3NTFkMGMwOTI5NTggbGVnYWN5LXRydW5rCisxNjAxNSBhNmE2NGU5YWIyMzhkMGZlNDFjMjY4NGY2ZWEwNWFiOWY5NWVkZTUzIGxlZ2FjeS10cnVuaworMTYwMTYgZmYwOTc0ZTg4MjFiZWVjMzJkNzYxZTAxYzk5MzFmZjUzYzZmNmUxMCBsZWdhY3ktdHJ1bmsKKzE2MDE3IDkxNmZiMDI0Y2U5NDJkMDk3YjA4Y2U1Nzc5NDc0Y2E2ZDZiYTZiNjQgbGVnYWN5LXRydW5rCisxNjAxOCA4N2VlODJlNWM1NmQzMWI3NzFmNzZlZDVjZTMwYWNiNjMzNGY5ZmY0IGxlZ2FjeS10cnVuaworMTYwMTkgMzRhNmU1ZmVjYTE4ZTNlNGIzMmFmNTJkMTYyOTQ0ZGJlMjcxZGM1NCBsZWdhY3ktdHJ1bmsKKzE2MDIwIGJhYmU3YjljYzYxNzQ1NmY0MmQzNTVmMWMyOTllMDUzODViYWUwOTggbGVnYWN5LXRydW5rCisxNjAyMSAzZGE0OTM0MjE5ZTVmNDc3ZTc1YzQ4ODdiOGQ2ZGU4YjQ0NWIyNjJmIGxlZ2FjeS10cnVuaworMTYwMjIgNWZjMThiY2E3ZjU1YWMzM2E1MjkwYzUyNDA5ODA3MTE0YmIzM2Q5NyBsZWdhY3ktdHJ1bmsKKzE2MDIzIDFjNWE1YWRlMDRlMjc2MmM5YjExZTI5ZGI5MTI5YTJmMjY1YWEyZGYgbGVnYWN5LXRydW5rCisxNjAyNCBjNmZkNmZmYmNiMTVjNzgxY2E0ZDRlYjg1MjViNmVkNmZlYWUyNjgzIGxlZ2FjeS10cnVuaworMTYwMjUgODQ4NzlhYjcxYjlmM2ZkOGRhZjk2YmZiNzdiZGYxMWExMjY3ODc4MSBsZWdhY3ktdHJ1bmsKKzE2MDI2IGI5YWRiNzljZGViNjM0MDlmOWY1MWQ0YjQxOGIxZjIzODM2MGY4NWUgbGVnYWN5LXRydW5rCisxNjAyNyBlOGJiMGQ1MzY2MzNhZTc5NTIzMDk4YTI1N2YxOGM0ZDUyMzc0ZDM0IGxlZ2FjeS10cnVuaworMTYwMjggNGM0ZTk1MTQ3MjU4MTExMjU4Mjc0ZjU0NGQ1ZGVlNzU2ZmRkNmRhMiBsZWdhY3ktdHJ1bmsKKzE2MDI5IDRjZTI1NTQ5NWRhMzQwMzA0NDBhNThiN2M3MGY0YTU1YWJiOWJhYzcgbGVnYWN5LXRydW5rCisxNjAzMCA4MzM3N2ZjMjk4ZDgzYzhhZjRlZDdlZmQzZDhmY2RlNmU1OTI5MjFjIGxlZ2FjeS10cnVuaworMTYwMzEgZTcyY2I0MjE3NmJjNzE5M2Q5NTIyMzI0ZDdkMzVjNDVhY2Y0YzU3MCBsZWdhY3ktdHJ1bmsKKzE2MDMyIDYxNTVmNTMyZjFmY2M0ODg3YmZlODlhNTA5MTliYWRjNDUwZDVmZWEgbGVnYWN5LXRydW5rCisxNjAzMyA4OWYwYTY2NGUyODMwYjFjZWJlZDNlOGRiM2ZiOWExZTUwMjdjZmJlIGxlZ2FjeS10cnVuaworMTYwMzQgZmRiNzhjZmQ5ZTc2N2Q5MmE4MjExNjMwMDg1NjlkMmViMDkyOTMxYSBsZWdhY3ktdHJ1bmsKKzE2MDM1IGVmYjRiMGM2NjY4OGU0MzYzMmRjMTM1NWI5YzllYjcwMDc5NWI1YzIgbGVnYWN5LXRydW5rCisxNjAzNiBiNTMyOTBiN2I1NDY4YTE5YjdlOGQwOGY0ODBiZDFhNzk0MDVhZDU4IGxlZ2FjeS10cnVuaworMTYwMzcgMWMyN2IzN2VkMWExYWU3N2YyNWU2NWU2NmI4MjNlNDYxYjY1ODNiMyBsZWdhY3ktdHJ1bmsKKzE2MDM4IGJjNzE0YTdhMDA0Mjg0YmVkYzc0NzhiNDU1YTc1NGFlY2U1MmMwN2UgbGVnYWN5LXRydW5rCisxNjAzOSBlMmIzNjIxZTY1MjEzOTJhZWI2YmI3Y2NjNzVmNTliMzViZjUyNmVlIGxlZ2FjeS10cnVuaworMTYwNDAgMzM3MGVkYWQwOGNlZDVkZjg4OGVhY2JhNzk2ZjlhYWVlYTYwNTc5NiBsZWdhY3ktdHJ1bmsKKzE2MDQxIGUyZWUzOGVhN2YzNWU0ZDRhMDNlMDczY2UxMTQzMDAyM2I0ZGRjMzEgbGVnYWN5LXRydW5rCisxNjA0MiA1MDNhNzM5OTgyMjJjNTMxMjQ2OWM4MWI2YjA5ZDYyYjZjNGNlNmE3IGxlZ2FjeS10cnVuaworMTYwNDMgM2Y1OThiOThkN2Y5MjI0MDZmYzRkMTgzN2JiYjAzYjI0OTkwOWQ3MSBsZWdhY3ktdHJ1bmsKKzE2MDQ0IDkxZGUzZjAzYWU4OTI3YWYyZjc3OTAxMTcyMmQ0NTViMTA3NmIxMjIgbGVnYWN5LXRydW5rCisxNjA0NSAzZTA3YTczMTVhZjUyZmY2ODQ1Zjk4YzQ5MDZhNGRlZmZkNGE1NjVmIGxlZ2FjeS10cnVuaworMTYwNDYgNTEwMmVmZmIwYzRiNGM1ZWI1ZTZjMmRlODVjOTljNmY5ODA4YjZhNSBsZWdhY3ktdHJ1bmsKKzE2MDQ3IGUwZWI0MzFlNDM5M2FjZDdmNjI2YjFjMmJhNzM5NmIyY2RmYzU5YzMgbGVnYWN5LXRydW5rCisxNjA0OCA3Mjk1ZjM2MDI2NGU0N2NjNTFlNmFlMWE2MTA3ZjEwN2YxMTkwMDUwIGxlZ2FjeS10cnVuaworMTYwNDkgNDAxMWFjZmUxNDMzZmE5NjE1YmIyZDY1ZGQ0YWIzZDY5MTE3MTUwZSBsZWdhY3ktdHJ1bmsKKzE2MDUwIGYxMTljMmQ4ZDU2MDNmN2ZmNGMxOTk4ZGJiZjliZjRjNTNmNDg4ZGIgbGVnYWN5LXRydW5rCisxNjA1MSBjYjE4NjQwMjU5OWE3MjdmYWExMDI0MzI5NzI5MDc3OGQ0MDNhNGIyIGxlZ2FjeS10cnVuaworMTYwNTIgN2VkYzQ4MGJiOWYzOThlOWQyNDFlZjU4YTQzZjUzZTQ3OTkzNjQ5YyBsZWdhY3ktdHJ1bmsKKzE2MDUzIGNmYzY0ZmFmMTJjZTU5OTAzOWFlMTlmZGQ0YjllZDQ1MmVlOTIzNDQgbGVnYWN5LXRydW5rCisxNjA1NCAxOGM4MWYxYTBkYTIzNDg5MDM5NGI3MTZmMmNhZTZjMmY5ZGU3NWZkIGxlZ2FjeS10cnVuaworMTYwNTUgZTM4YmU4NzE3ZWMwMzFiNjEyYjhlZjU1NjFiYWUzMjYzNmQzY2JmZSBsZWdhY3ktdHJ1bmsKKzE2MDU2IDgwMGE3NWQwNzg3ZjBhMDFhODg5NWNjNmQ4NmVjYjk5OWIzZWE0YTcgbGVnYWN5LXRydW5rCisxNjA1NyA2ZTRkZjM0MTRhNWZjZjUwMGM1NzhiYTNjMTJiNjBmOWZlYWQ1M2I3IGxlZ2FjeS10cnVuaworMTYwNTggYjkxYjU3NjJiMWNkMTE0YWI3YzAzN2ZkMzY0ZTg5ODVkZGVhZmFmMiBsZWdhY3ktdHJ1bmsKKzE2MDU5IGE1ZTIwZDA3NDcwYzVlN2I4MzE5ZDkwNTRmZDEzZTRjOTkwMzhhNmYgbGVnYWN5LXRydW5rCisxNjA2MCA0NmVlMjcxNWQyOTgzOWJkNjNlYWJhYjI0NjliYjM1OWZjZTNmYmE0IGxlZ2FjeS10cnVuaworMTYwNjEgMmZiM2ZiNjQ2Y2M1OTU5NjMwNGEzNThkNTYzNGNjY2I4MzllMmVkYiBsZWdhY3ktdHJ1bmsKKzE2MDYyIDNkYjYyYzc1ZTY1YjE1NzI5ZmU2NjBlN2IwMmRlMjA0MzBiYjVhMDQgbGVnYWN5LXRydW5rCisxNjA2MyAxY2Y2NzM4MjQ5YWZmNWUzMzM5YmU3OTFmM2I0OWVhZDAzZDZhMjBhIGxlZ2FjeS10cnVuaworMTYwNjQgOTA1NDBjZGY5YzhkOTY0N2E2ZjRlNmM4OGY2ZmE5YzI5ZGY4OGE1OSBsZWdhY3ktdHJ1bmsKKzE2MDY1IDM2MDc0MjIyMTYxYzBiMWI0ZTdmOThhNWQ0NWM2ZmZmYjQzN2MxNTYgbGVnYWN5LXRydW5rCisxNjA2NiA1MGY5NzdlMWUyYWI3MGQyYmU3ODkzZmZkMjliNWRkOWQ0MmNiMDMxIGxlZ2FjeS10cnVuaworMTYwNjcgMzNjZTYzYjA2MzU5MDhmYTNmYzAyMzc3MTYwYWQxNTBiZDc5NDljMSBsZWdhY3ktdHJ1bmsKKzE2MDY4IDM4NGZhOWI5ZTI1M2NhMGY3NDQwN2FjYzNmZDBmNDRjYTBjZTFkZjMgbGVnYWN5LXRydW5rCisxNjA2OSAwODViMDE1YTkyOTFkOWQ1YTEzNjk4ZWMzODA3YzBkNDQyYjc2MTdmIGxlZ2FjeS10cnVuaworMTYwNzAgZmMyYWQ2ZmEwOGVjZTkxMmIzOGQ1MTc2ZTVhMTY3N2U0NzUyOWU5MCBsZWdhY3ktdHJ1bmsKKzE2MDcxIGM3ZWYxNTg1OTgzYzQ2NjU0Y2M0YzdhMjExMDJhMjk5NWMwOGY5MjQgbGVnYWN5LXRydW5rCisxNjA3MiAzYzM1YmY3YjU4MGIwMjJlOGI3YmU3NjAzNGQ4MGZkYjQ3OTBiNDc4IGxlZ2FjeS10cnVuaworMTYwNzMgMDY5NGNlM2JkNDhmNjdiMTE1ZGI1ZTc4OTU0ODA0YzZhYmRkZmRmMyBsZWdhY3ktdHJ1bmsKKzE2MDc0IDQyMGFiNDQzMDIxZTk2NWQzYmNjYjJjMzgxYzI0MjYyMDA4NzRkMGQgbGVnYWN5LXRydW5rCisxNjA3NSBhMmJjOGRmZjU1ZGZmNTQ3NDRhNGMxM2RmMTY0M2NmYmQ0NzBlNzk4IGxlZ2FjeS10cnVuaworMTYwNzYgMDNhYTI2ODE5YWMyNzY1MWQ5Y2Q5MmUwYjk0YTIzMDQ3Y2E4MTYyMSBsZWdhY3ktdHJ1bmsKKzE2MDc3IDU4MTgzNjc5YzkwYTIyMDk4YjYwOWUxZjJiNDBlZTUwMWUyOWU3MDcgbGVnYWN5LXRydW5rCisxNjA3OCBmZDc4YmM1ZjJiMmNjYjFiZjRkMzg0NDExMTc3NzRjODQ0NWEzM2I1IGxlZ2FjeS10cnVuaworMTYwNzkgNjZkNDJjNTFkZjE2YWVmOTJlYWJlNDIwOGVkMmM5MzYxYTY0N2I5MyBsZWdhY3ktdHJ1bmsKKzE2MDgwIGNkOGE0MWJmNGFjMjBiOWE3MmI0ZjBmNzE4MjRiZTdlZjdjODYxZDkgbGVnYWN5LXRydW5rCisxNjA4MSAzOTBlNWQ1MWZmNzMzMmI2NTEyYjhmN2U0MWQ4OTc4ZTdkNTcxMmQ4IGxlZ2FjeS10cnVuaworMTYwODIgNjdhMDQ4MTZlYTUwMTFhMzAwZWUzN2EwNjM2ZWE0NzNiZjM0NGUwOSBsZWdhY3ktdHJ1bmsKKzE2MDgzIGFjMjRkODJkOGUzM2JhYTYzYTllN2VjMTgwZTY2ODY4MjBlMDhlYzggbGVnYWN5LXRydW5rCisxNjA4NCBhZjEwZDliNzQxNDNkMmMzYWIxOGQ4OGNiOGEzZmUyMzk0M2RkYWFmIGxlZ2FjeS10cnVuaworMTYwODUgY2VkODYwZjJkOGQyY2E1ZTBlYzJmYTBjOTRkYWMyOTY4NGU3MjhjYyBsZWdhY3ktdHJ1bmsKKzE2MDg2IDM0MThkNWMwZjk2MDIyY2E4ZWMzY2U1ZTA3N2NlNmFkMjk0NTBhNmQgbGVnYWN5LXRydW5rCisxNjA4NyA3YmFjMTBhOWJiNjFjZjZlYTBiZGExZjA2YzNkZTk1MmMzOTJjYzNiIGxlZ2FjeS10cnVuaworMTYwODggMjQ3MTc0MDVkZDg5OTBmOWIxYTk2MjU4ZjFmOTIzMGIyMDYzZjIwOSBsZWdhY3ktdHJ1bmsKKzE2MDg5IGMxNTViY2NiN2EyMmZiMjQ2OGExZTQwZGY0YjkyNjUxOGI3ZmZkMDggbGVnYWN5LXRydW5rCisxNjA5MCBkOGE0MDc3NzdhNmY0YjdhNGE4MTMxNGM1NDM3MmYzZWQ5Nzg5Mzc5IGxlZ2FjeS10cnVuaworMTYwOTEgNDU0OTQwNDZjMmZiNjFjNTdiZjNhNzk1NGNlMWVkMTUyMjk1Y2NkNSBsZWdhY3ktdHJ1bmsKKzE2MDkyIDYzZDI4ODdiYWYxMTg0MjZkMzJmYzQ5MzRjMzZiY2MxZDUzMmQ4NmEgbGVnYWN5LXRydW5rCisxNjA5MyA3ZTNkNjA0NTU5NThmYzczODYzYjY1ZTQ0YzI5ZDEwYTQyNzQwNzAxIGxlZ2FjeS10cnVuaworMTYwOTQgNTYyNmQ0MjU1ZmNlZDVjYzkzNjE2MDgzOTg3NDNjOWRlY2JlN2NmZCBsZWdhY3ktdHJ1bmsKKzE2MDk1IDg5ZTQ3ZWJhMjc3MTg5YmM4OGY0ZDkxYTgzY2MzZjU2ODliNjk0Y2UgbGVnYWN5LXRydW5rCisxNjA5NiA4N2RmMWFlNGYxMTBjNWQwOTdkMjMyNDE1YTQ1MDk1YjA2NjgxYzNkIGxlZ2FjeS10cnVuaworMTYwOTcgOGQzMjRkOWQ1MThmZGJkNTBlMGM4OTMxNDRhYmZmMTg5MGM4MTlhOCBsZWdhY3ktdHJ1bmsKKzE2MDk4IGYwZDQwMmQ0ODE4MGJlOTQ4OGRiOWRkZTZjMjI5MjBhZTRkY2IxMGEgbGVnYWN5LXRydW5rCisxNjA5OSBlMTAxNjAwYWRlZTQ0YTYzMTJlOWYxMjAyMTZiZTFmY2E1YzU0MzZkIGxlZ2FjeS10cnVuaworMTYxMDAgYTdmNzIwMjJiOTNhYzg5NzIzOGMyNmRjZmNhYjM3OWZkYmRmMjEyMyBsZWdhY3ktdHJ1bmsKKzE2MTAxIGY5OGQ2ZDYzYWQ3MWI2YmMxNDRhMGRmNDdlMWM0N2FiZDFjMDYwYTYgbGVnYWN5LXRydW5rCisxNjEwMiBkZmYyNzdkNWZlYjI1YjBlZTlkY2EyNWFkODMwMjMyMDdlMTEzZTYzIGxlZ2FjeS10cnVuaworMTYxMDMgM2YxYmQ0NzgyNjI4YjZhMmQ1ZjQ3NDYzNDY1MTY0MDk4MzZkZTBlMyBsZWdhY3ktdHJ1bmsKKzE2MTA0IDJhNWEzY2FkNTE3NGE1ZmJhNzU3NzJhYzNmZGNhNGVjZmNiODBlYmUgbGVnYWN5LXRydW5rCisxNjEwNSBhYmVkODBiNTBhMmNjYWJhNDMzMmRhZWRjYzQ5OTY4NjA3YTRmYjQ2IGxlZ2FjeS10cnVuaworMTYxMDYgYzMwMjlmMjc2MDQ3MmNkODU0YjBmOTYyZTJjZmVjNTExZDQzYzdiNSBsZWdhY3ktdHJ1bmsKKzE2MTA3IDRjNDBlZjVkY2Q4MjdhZjlmYWQ4MWZjMjhhZWEzOWRhZDZkOTNkOTcgbGVnYWN5LXRydW5rCisxNjEwOCBmYjMwOTk2MTAxYmM4MzRkMjllOGEzMTZiZWE0YzBiMGM4NzNiMjgxIGxlZ2FjeS10cnVuaworMTYxMDkgMzg0ODM1ZWEwYTVhMTZiMzg1ZTIwOGNiY2FkNDRmNzg5NjZiZDNjNyBsZWdhY3ktdHJ1bmsKKzE2MTEwIDc2Mjg4ODJkY2NjZGU4N2UwNjhlZDQzMWM5M2E0YzU1OTgzNTI3M2MgbGVnYWN5LXRydW5rCisxNjExMSBiMzUzMGRhZTAzYmZiOTdmZDhhMzA3NzIzYzIyZDJmZGRjOTBjNmY0IGxlZ2FjeS10cnVuaworMTYxMTIgZTBkNjc2ZTljYjY2YzE0MGE3N2ViNWQwOTg1Nzg4ODEzMTA1ZThmYyBsZWdhY3ktdHJ1bmsKKzE2MTEzIDU2MTljM2Y3YTQ0YmRjNWFkMTY0MzA3NjE0NmU5Y2QyMGNlNWM4YmMgbGVnYWN5LXRydW5rCisxNjExNCBkODg1MzVjY2FlZTVjMjY5YzY4NDJmOTc1ZTdkNDRkYzE1MWY2M2ExIGxlZ2FjeS10cnVuaworMTYxMTUgMGIyODllMDBkNTJhMjc0NTUyMTNhZWRjZTBiMGQwYjIxY2VjZDRkMCBsZWdhY3ktdHJ1bmsKKzE2MTE2IDk5ZjM0MWE5N2ZkZWI2ZjA3OTI0YWU1ZDgwY2ZlYzQ2OTQ5NTEwOGQgbGVnYWN5LXRydW5rCisxNjExNyBiNGFlZGQ5MGM4NjQyZTlkYTBlYTRjMTYxMmMyNmQ3YTZhOWUxOTM4IGxlZ2FjeS10cnVuaworMTYxMTggOWExYjk2MWUwYzNhZjUwNDFiMDlhNTNkZmQyOTJjZjhmNWQ1NjllMiBsZWdhY3ktdHJ1bmsKKzE2MTE5IGQ4MDM4MTMzNjYxMmQ2MWQ3ZTI4ZjQxNTkwMzk4Yjk1ZDI2MmU4ZjQgbGVnYWN5LXRydW5rCisxNjEyMCBjODcwNmU1YTg4MmZhMjEyZGYzM2MwZTU4ZGFhZjk1NDE3ODI5ZDc4IGxlZ2FjeS10cnVuaworMTYxMjEgNjBhOTcyNmQ4NWY4ZTMwMzQ2YzhmY2EwYmNlYzFlYTE1ZTVmZjRiYiBsZWdhY3ktdHJ1bmsKKzE2MTIyIDQ4NGJmZGU3MGRjY2JmNGNiNmJjODNjNjA4NjlkNDk2YjU0ODY4MWMgbGVnYWN5LXRydW5rCisxNjEyMyBiZWY3YjYyOWFjOTU5YmUxMzVjN2NkZDA1ZDFlOTU5Y2I1NDU3YjY4IGxlZ2FjeS10cnVuaworMTYxMjQgMDJmODcwNWJkYTA1ZTUyMDZmZDg2MTExZTllOGIwODk1NDZkMWUxZSBsZWdhY3ktdHJ1bmsKKzE2MTI1IGYzNjkzNmQ0M2QwMmJiYzYzYmUwMzA5ZjQxYWE2OGJhZTRmZmVhNTIgbGVnYWN5LXRydW5rCisxNjEyNiAzYmUyOTQ0OTU5ZGE3M2M1Nzk3MTc1YmY5MGE0ZmI4MDBkNjgyYmY2IGxlZ2FjeS10cnVuaworMTYxMjcgYjU5NzA2N2UwNTZmNzkxYjM0NTk5MDI4MjJmZWJjYTY3ZTg2ZDhhMSBsZWdhY3ktdHJ1bmsKKzE2MTI4IGExMTEwZGE2NTdlNTBkZGU1M2UwZmE5MzBlYTQ2ODUyMjIyNTFiYTQgbGVnYWN5LXRydW5rCisxNjEyOSBjYmY2NmU0ZmYwOGYwZWU5Y2EwYjEyYTllYjFjZTg2MGZiMzk3OWQ0IGxlZ2FjeS10cnVuaworMTYxMzAgOTQ3OTBiMGM1NWQwNGFjY2NmMzk2Y2Q2MTYzODQzMmYyMzM3Mjc1NCBsZWdhY3ktdHJ1bmsKKzE2MTMxIGYwYzgwYjgzNjRlMjBiM2I0OGQyOGVhZGI2MzcxYmM4ODlmN2EyODEgbGVnYWN5LXRydW5rCisxNjEzMiAzYTAwMDMxZjlkNjBjN2MyZGYyZTFmYzFkODJhZGJhYTkwYzNjOTYxIGxlZ2FjeS10cnVuaworMTYxMzMgY2Q4YjhiYWZiYjMzOTczYjE5NDEwOGY2N2E3NTMyMmViZmNhYjk5ZCBsZWdhY3ktdHJ1bmsKKzE2MTM0IDc0NTE3N2JlMWE3MTdjZjE1MzJhMTUxZjI3YTVjOWNkOTYxMDgxOTkgbGVnYWN5LXRydW5rCisxNjEzNSBkNjc5NzQ1ZDk4NmZkYjQ5MGE3Mjc2YTMxNDRjNGZlMTA0ZWVmZmJkIGxlZ2FjeS10cnVuaworMTYxMzYgOGZiNzMxMWQxMzgxMDg4ZTU4ZDY3MGIxOWJmMGVmMzVhMTM5MTViOCBsZWdhY3ktdHJ1bmsKKzE2MTM3IGNiYmU1MTJkMjRlMDVjZWQzNDdhMGQ2ZjgyMTlhYTFmOTZhYTNhOTggbGVnYWN5LXRydW5rCisxNjEzOCBiZmUyMmNmNmU3NzA4YmE2NDJhNDBhZGQyNmYxZjBiM2IxNDQ4YTFjIGxlZ2FjeS10cnVuaworMTYxMzkgMjAxN2Y1NGIwMzI1YzdhNjliMjdjZTJkYzY3YzA0MjlkYTFlOTNhNyBsZWdhY3ktdHJ1bmsKKzE2MTQwIDExM2Q4MzNlZWE3ZTA3YTkxOGJiNTE2YWI1NDU0OWQ5NDQwNDE4MzkgbGVnYWN5LXRydW5rCisxNjE0MSA2MmUxNDBiYTc4MmRjMDQwMDk0ZDE4ZGY4NWNmN2U0MzU3ZmE3NDZkIGxlZ2FjeS10cnVuaworMTYxNDIgZDE2NmExZTYwNzYwZmQyNmY2MTFhMmMzMzNlOTViMmI0ODEzODFkZCBsZWdhY3ktdHJ1bmsKKzE2MTQzIDg5ZmY1OTE3YmM4YmM3ZjA5Y2RhZTVjMzczZWE5MTdiMDgyMTQ5M2EgbGVnYWN5LXRydW5rCisxNjE0NCBiMmQxMDQwN2FiOWRiY2FjYTZkYzBlN2E0ZThiZTI0OGU2ODg2OGI2IGxlZ2FjeS10cnVuaworMTYxNDUgM2ZmMDIyZTFiOTVkMWFhZjA1YjE4MjJmYWUzNTZlZDc4YzIxYTE4OCBsZWdhY3ktdHJ1bmsKKzE2MTQ2IGVhY2IyZTUxZTE2OTY1MjBiZGM4NWYwMjczZmY3Y2M0YjUxOGEzNDggbGVnYWN5LXRydW5rCisxNjE0NyBhZmYxYzQxNDZjMWMyZjNhODc0Zjk2YjUzNDJkNTNjYWMxNDVkY2RlIGxlZ2FjeS10cnVuaworMTYxNDggM2YwOGJlZGMxYzI2MTUxNmM1MjIzY2JlN2U5ZTIyZDc2M2JhNWMwNCBsZWdhY3ktdHJ1bmsKKzE2MTQ5IDFiZTQ2NjUxOTBmMDY5NTFiMzgyMmIzOGNkZGU4MjhiYTg0YjMyMWIgbGVnYWN5LXRydW5rCisxNjE1MCA4ODA0NGY5ZGY4MzNkNTY0ZDgzZmNjNWM5NzMzODhjMjQ2M2M5OWNkIGxlZ2FjeS10cnVuaworMTYxNTEgMWMwZDM1YmExNmIxYzYyYjIxYzA2MzhkNDI1NWUzYTYyMTM5MmQ4MSBsZWdhY3ktdHJ1bmsKKzE2MTUyIDYyNzU0YjllYzdkZmMwNWY1NjIwZWM2N2Q0YzUwZWY5YTg2YjA5ZjkgbGVnYWN5LXRydW5rCisxNjE1MyAxYjQzNTlhMjk3NmRhYzMzMTY0NzViYjFiZTI0MzBhZDVkYTZhOTczIGxlZ2FjeS10cnVuaworMTYxNTQgYjA1ZGY2ODcyMTVlZjQ0Yzk3ZjVmZTEwZDA4MjFhOGFjN2IzYTI1NCBsZWdhY3ktdHJ1bmsKKzE2MTU1IGJjYjE0NjI3YjhmNDFjYTExMTZkNTA3ZmVmNGM1NzljNWMzZWM3OWIgbGVnYWN5LXRydW5rCisxNjE1NiA4MTA3ZGUyOGJjODIxMzlkMDQ3ODMxMmRhMGFjOWVkYjNjNmY0NzFlIGxlZ2FjeS10cnVuaworMTYxNTcgMzE3ZThlMDljZTg3NzFjNjJjYmM2ZDdjYTI0NGI2MDNkYzI0ZTgwYSBsZWdhY3ktdHJ1bmsKKzE2MTU4IDc1OWY2OTg3NDBjY2YzZDZjZTk2YmY3MzM5OWY4OTA2OGM1ZDBlYTcgbGVnYWN5LXRydW5rCisxNjE1OSA4ZWI1YzM2ZWRlOWU3MTNkNjVlMGZiOGNiMmI4NTY5ODlhMTk4ZjU1IGxlZ2FjeS10cnVuaworMTYxNjAgZThjZTFiYjA1NmFlYzIxY2RkNmZhY2I5OWVkY2I4MGI3NDQyZWZlZCBsZWdhY3ktdHJ1bmsKKzE2MTYxIDIxMTE5MTg5ZWUxODJjYmU4MDkxMmZkZDBhOGE1YjZlZWUwNWI2ZGUgbGVnYWN5LXRydW5rCisxNjE2MiA5OGRiMGMzYzFmYjlkYzAwNDk3M2EwMWFmMDJhODQ5MzcyMDk4MTFiIGxlZ2FjeS10cnVuaworMTYxNjMgOGYxYTJkZWViOWIwMDBkNDgzZTBhNGFjOGE0ODA4YWRlMjU0ODAzNCBsZWdhY3ktdHJ1bmsKKzE2MTY0IDdmYmRiNTgxODM4ZjYzMWJkZDc0YzJjZGIyZTE0ODg3NTE2ZmFiZTUgbGVnYWN5LXRydW5rCisxNjE2NSBlOTVmZjIxMWI5ZDNjN2I4YTAwZjhlMGRjOWViNjFiZDgzZDFlODQ2IGxlZ2FjeS10cnVuaworMTYxNjYgNGNmMjE4NTJmZDUyMTYwMDkxNzYwMmU2MjcyNTNmM2I0OThkNDFlYyBsZWdhY3ktdHJ1bmsKKzE2MTY3IDUzNzE0NzhmNmY1Yjg2ZGUzZTZkMjUxZjVjYTRiMWFkNDM2NDdiNTUgbGVnYWN5LXRydW5rCisxNjE2OCBhNTAzYWY3ZTdmYjdiYTY3YTRlMzBmNTE3OGY2NTE3NWYzYWQ0ZGM0IGxlZ2FjeS10cnVuaworMTYxNjkgZjI2MzNjOTNlMmU1N2U3YTk4Zjg3MDc0MTk0MTVlNTM3ODJlMzYzOCBsZWdhY3ktdHJ1bmsKKzE2MTcwIGY1MjEyYWY5ZTY0MTNmMzE3NGZjYjAxNzExYWY0MmYzYWZlNjlkZjUgbGVnYWN5LXRydW5rCisxNjE3MSBjMzhiYWNkOGVmYWQyZmUyMjgwMDY0ZTk2MTJmMmExNmQxMDY1MGU4IGxlZ2FjeS10cnVuaworMTYxNzIgNTE1N2ViN2JlMjBkNzgwMzJlOWFkZTI2MmM2NTg4M2JjNDdmNTA2NCBsZWdhY3ktdHJ1bmsKKzE2MTczIDlhODM5MTA1NDg0MDkyNzRkMmEwM2E2NGNkNmJmN2U0YmIyMDc3MzYgbGVnYWN5LXRydW5rCisxNjE3NCBlNzEwNmMyZmMyNmNjNDc0M2FiOGNiMDJkZDBiNTM0OGI3NjRjOGI3IGxlZ2FjeS10cnVuaworMTYxNzUgN2ZlYTRhMWFmMDkwOWZlYWE2OWNmMDExMjRjNGRjY2ZjYTMxZmYyMyBsZWdhY3ktdHJ1bmsKKzE2MTc2IDZhNzhlYWQxMzk4NzA0MzY4YjVjZjg0YWZlZmMwNGUyNjliYmM4MTMgbGVnYWN5LXRydW5rCisxNjE3NyAyYmE3NmUzMTUwMTZiMjM2YmQ1M2Q5ZGFkODQ1MmM5MTg2YWViMjJhIGxlZ2FjeS10cnVuaworMTYxNzggZGE2MTA5MzA2MzhiNDc4NTk5NjYxOWM5Y2MyYWYwOGVmYTc5NjU5YSBsZWdhY3ktdHJ1bmsKKzE2MTc5IDcwZTRjYmZjM2IyNDc5YzhlYWUzOTRhMGNhZGMwNWY5NWEzZTQ1Y2MgbGVnYWN5LXRydW5rCisxNjE4MCA4NTUyMGMyMjAwNjdhMjlhYjFhNmJkMWQ1ZTdlYjZlZGY3Mjk4NDZkIGxlZ2FjeS10cnVuaworMTYxODEgZGI5MzkyYTA0YmVkNDIxY2U5ZTAyNjZmMDVkZDQ4NGVlYTFkNWZhZCBsZWdhY3ktdHJ1bmsKKzE2MTgyIGQzZjFlZWZkY2IzYTljYTE2YjEyOTRmYWQwM2FiYTQyZmU0NjljNjcgbGVnYWN5LXRydW5rCisxNjE4MyAzNDZkZjE5MjA4NzM3YWJkZWI2YzkzZGYzZGM3ODQ0MDM1ODQ1NTk3IGxlZ2FjeS10cnVuaworMTYxODQgYWEzZDNiZWNlNzc0NTQ1ZDIyZjYxOGY3M2Q4NzgzYjgzOWI4MDMwOSBsZWdhY3ktdHJ1bmsKKzE2MTg1IGE4NzgwM2ViOWRmYjE0NDdmNTlmZjY1NDFiZjYzYmMwZmZlNTY3MzcgbGVnYWN5LXRydW5rCisxNjE4NiA2NGExNGJhNzQ2NDEzODUzZjAwZDk1ZjY4YzNjMjIxOWNkZDNhNmI3IGxlZ2FjeS10cnVuaworMTYxODcgMjYzYjQ0OTI4NDRhMjA2YTNiOTU0YjcxMzg1ODllNzNjNjIyYmI4NCBsZWdhY3ktdHJ1bmsKKzE2MTg4IDVlYmFkNjg5YjdhNzkyMjRlMDdhNDc0YzA5NmE3NjdlNzM0OGEzODcgbGVnYWN5LXRydW5rCisxNjE4OSA2MThhNzI4MGY2YmU1MGI5NzY3Zjk3NjcyOWM1NzFiYzQzZmI4NDFhIGxlZ2FjeS10cnVuaworMTYxOTAgMGQ2YWYzMDNhODZjYjRkMzY3NzZlOTRkODlhZTlkN2ZkNzg2ZTIxNiBsZWdhY3ktdHJ1bmsKKzE2MTkxIDhhM2Q1MGVkMDZmNzk3YzczNzA2NDQyY2QzMDEwZWVkOWVmNWZkMWIgbGVnYWN5LXRydW5rCisxNjE5MiAwODhjNWYzYjcwOTRjOTU5MjQ5OWRiYTUyODQ2ZjVmYzdiYWRkZmQzIGxlZ2FjeS10cnVuaworMTYxOTMgYzcxMTE4Yjc4MDU5NGJiYmE5MTgwNzE2ZjQwY2Q1OWE3OTA5MGNkZCBsZWdhY3ktdHJ1bmsKKzE2MTk0IGQxNzY2NGJkOWI2NTdlYzU0YmJhNmZjOWIyYmIyYjgyZDAyYWY5ZDMgbGVnYWN5LXRydW5rCisxNjE5NSBmYzc4ZTVhNzgxMmE1MTBhNTk1ODk2NGFlMTYwZTczNjdkMWMyMzA4IGxlZ2FjeS10cnVuaworMTYxOTYgY2RlMjczMThjZjg3YjViZTgyYzE2MjgxNzEyMmQwY2U1YjY4ZGFlMSBsZWdhY3ktdHJ1bmsKKzE2MTk3IDdlM2NkOTQ4MGY2NjM4YWMxNDY0ZTA3MzlmZmMwN2IwMWM2NTk0OWMgbGVnYWN5LXRydW5rCisxNjE5OCBiYzllMjJhZDVjNDYwODExODJiOWIzNjc4MmExMWNlZDc3NTkwMjI1IGxlZ2FjeS10cnVuaworMTYxOTkgOWZkMzMzNjkzMzUwODFkYjc0YjhmZTI1MmZmZTY5NjA5ZDdiYWU4ZSBsZWdhY3ktdHJ1bmsKKzE2MjAwIGRkZjA3NGVjNjUwNjNmODgxYTNkMzFlZjEyNjhkMDg3MzdkNGRlZTkgbGVnYWN5LXRydW5rCisxNjIwMSA5NjhhMDA2ZTU0ODBjMjY4Y2MwODZjZDM3OTY2MjdkMzk2NmUzZjFmIGxlZ2FjeS10cnVuaworMTYyMDIgZjhkMDg0ZTNmOGVjZjFmODNlYTViMjBiZGUyMTMzMWMxMjY0OTcwMiBsZWdhY3ktdHJ1bmsKKzE2MjAzIDVlZGVlNjg3ODk0MzI2MmI3ZDAwNmVjZDBjNDgzNWI4NWJhOTE5MjcgbGVnYWN5LXRydW5rCisxNjIwNCBlZDcyMDY3YWFjMDMyODg0MTMzNTYwZGNiMzQyMzAwNWYyYmRmY2Q2IGxlZ2FjeS10cnVuaworMTYyMDUgN2U1OGMwNjBkNTM0MmQ0ODMyMjI2N2Y0ODg1OTI0Zjk5OTMzMzA2NyBsZWdhY3ktdHJ1bmsKKzE2MjA2IDU3MDlkZGJhNDIzY2M4ZGJmZWRjMTU1OGM4YTZmZjhhZWE5NGQwNjcgbGVnYWN5LXRydW5rCisxNjIwNyAwOTFjYTZiOTM0OGY1MGQ1MThmM2Y2NDVmNzAwNGRiYTZkYjQ0ZDFhIGxlZ2FjeS10cnVuaworMTYyMDggMjNmOTY4OWFjZTUwNjM3N2JjMmU4YjUyZjE3YTY4YzVlMGYxNGJhNCBsZWdhY3ktdHJ1bmsKKzE2MjA5IGE4OWY3ZjI2OGRlNDVmMTE0M2I0ZDliNDFmNjE0NzE1OWM0ZGRiZjMgbGVnYWN5LXRydW5rCisxNjIxMCAzZTEwYWM3YTViZjM2ZmQzYzc2NzM3MzY5NzU2NDhjMTk2ZGIzYWY3IGxlZ2FjeS10cnVuaworMTYyMTEgMDQwOWE5OGNkNTgyZTM2NzVjMzAyNWU4ODlkNzJmZDQzZTVmNzFkNiBsZWdhY3ktdHJ1bmsKKzE2MjEyIDRhZDI2OTY4NjYyYmUwNjI2NjJiNmIyYjdmMmYyZWMyM2Y5NzJhOGUgbGVnYWN5LXRydW5rCisxNjIxMyA4MDhiNDQ2YWY5N2M3NjM2MTFlYTdhODlhYjg2ZWIzM2E5MmE5ZjNiIGxlZ2FjeS10cnVuaworMTYyMTQgZWQ0ZjdhMjJlOTI4Y2FhMjMzY2Q5MjJmNTcyZWU2MzBlZDg5Y2U1YyBsZWdhY3ktdHJ1bmsKKzE2MjE1IGQ2MTk4ZTcwMzYwMmJlMzA3MGIxNjA4Mjc5ZjBkNTBkMTM1YjljODkgbGVnYWN5LXRydW5rCisxNjIxNiBmY2M3NWEzNzQ4ZjU0MTk2NzBmOWQzZGEwODIyYzg0MjQ5NDE4ZTkzIGxlZ2FjeS10cnVuaworMTYyMTcgNDMxNTM4ZmZiM2FkMzIxNDY1YTExZDQ4YTI5Zjg5NTE3MDdiNDI1ZiBsZWdhY3ktdHJ1bmsKKzE2MjE4IDYyMTEzMTVlYjU5MmNlZDJkYTM3OWZiMWNiY2QzOWFhZTJiZDNiMWEgbGVnYWN5LXRydW5rCisxNjIxOSBlZjJlYmIzYjBjNjQ3ZmZhYzFlY2ZlOWU4MjM1MDQ3ZGRkOGQ3NjllIGxlZ2FjeS10cnVuaworMTYyMjAgNzkwOGVjODU1NjY1ZGNiZDRkMjZjNDI0ZjZhNmJlYTJlMzUzZjRkYSBsZWdhY3ktdHJ1bmsKKzE2MjIxIDBmOTVjOTNmMjAwYmRlZWIyZjA1YTk0ZjQxYTk1ZGE4NzY3NmNlYWMgbGVnYWN5LXRydW5rCisxNjIyMiBlNmQxN2YxNWFlNmFlZmFlOTViOWExNDEyMjNkMDlmOTUzMWQxNjc1IGxlZ2FjeS10cnVuaworMTYyMjMgZjZjZGVhYzQ0YTEwNTI4ZGU2MjQyMDM4NThhMDZmOTRjNjE2NzFjMSBsZWdhY3ktdHJ1bmsKKzE2MjI0IDRjZjBkZTI5YzA4YzcxYWJlZTk1YjkxZWY3ZTZiMzBhNDcwNzA1M2UgbGVnYWN5LXRydW5rCisxNjIyNSBiNzA2NmJiNzk1ODEwY2IxOTRmYTEwNTEwM2Q4MWM3YWU5OGQ4OGZlIGxlZ2FjeS10cnVuaworMTYyMjYgZWE4MjM1ZWRmYzk2MTU4MzcyZmE5OWI4Yzg2NDg0YjEzYTE4NTM2NiBsZWdhY3ktdHJ1bmsKKzE2MjI3IDhlOTJkOTQxZTA3ZjUwNDQ5Yzg3YmRiYzU3MTJhNjg2NDhmZGNiZjMgbGVnYWN5LXRydW5rCisxNjIyOCBiZmFkZDM2M2EyMDBhMzFhNjhmMTIxODU4YmI5MTRlZTdmYWRkNDNkIGxlZ2FjeS10cnVuaworMTYyMjkgNjY5MDM3NGExZGMxYTVhMGVhYjgwNGRlNjkwOTVmMThhNTJlMjkwYSBsZWdhY3ktdHJ1bmsKKzE2MjMwIGI5MDdlYmYzYjA1MmI5MzIxNDQ2NGQ4Y2JmNTJjYzkyMjI3N2U4NDggbGVnYWN5LXRydW5rCisxNjIzMSBkZDdlMTM5MTUzMjhmYzlhNTkxNzRiODgxOWUzYzA4NjIyMjU3MDBmIGxlZ2FjeS10cnVuaworMTYyMzIgNzViMGU4Y2IwNzgzMWQzZGZjZmRkY2Q5MjcyYzRlNzdhNDgyNjliMiBsZWdhY3ktdHJ1bmsKKzE2MjMzIGRmMTg5ZjljZDAxMGRlYTBlZmNkODk5ZjIyNDAxOTQwYTA3OTkxNjcgbGVnYWN5LXRydW5rCisxNjIzNCBkYmU4M2ZkMjMzOTNhMjEwOTk5YWFiNDQyMmQwMWE5NjdmYmEyMzJkIGxlZ2FjeS10cnVuaworMTYyMzUgMzFiMWY2OTFhN2Q5MTg5ZTdiNzc5ZWVhMjY4YTUyMmVmMWZiYTcyMSBsZWdhY3ktdHJ1bmsKKzE2MjM2IGUxYjA3MGQ3MTYyYzhkZTc2NmFiYjQzODJjNmQyZGQ3M2JjN2RmMzkgbGVnYWN5LXRydW5rCisxNjIzNyAyZmYyNzg1ZTUyOTE5YzFjYzYxYzVjYzEwZThhM2U1ZjYwZjQ3OWJkIGxlZ2FjeS10cnVuaworMTYyMzggOGY2NmM1ZmZhMjZjODYwNTI1M2M0ZDQ1MWM3OTRlYjc1MGI0NDlmNyBsZWdhY3ktdHJ1bmsKKzE2MjM5IDE2MjJiYjI0ZGE1NTY2NGQzOGQ0NTgyMGViYWMwMmJiODliYzQzNjYgbGVnYWN5LXRydW5rCisxNjI0MCA3MGQzNTFmY2I4ZDU5MDBjODZlYWJmYjI0Yzc1MmM2MGZlNzk3OThlIGxlZ2FjeS10cnVuaworMTYyNDEgOTNhZTM0YWEyMGFiMzYzNTY3YjFhMmUwY2I0M2Q4OGMzZWVkMDkwYyBsZWdhY3ktdHJ1bmsKKzE2MjQyIDYwODRmOGQzYTgyNWMwYTc2NDdiMjQyZjNiOGFkZDVhMzAwN2Y5NTUgbGVnYWN5LXRydW5rCisxNjI0MyAzYWJlY2IzNDczN2ZjYzgwNmVkZDIyZGNjNmI5Mjk0YWVmN2Q2YmEwIGxlZ2FjeS10cnVuaworMTYyNDQgMDAwYTFjN2ViMDlmYmNmYTg4ZmE0M2U2YzJlZTBlNTkzNDg2NjI3YyBsZWdhY3ktdHJ1bmsKKzE2MjQ1IDg3ZjgzOTY4NTFiMmFhNjVmMTRhNTNjYjk1NDU0ZTBmMmU4MDkyYjYgbGVnYWN5LXRydW5rCisxNjI0NiA2N2ZkMTlkNzQ1MjgxOGQ2OTRhYjZiNGI5Njg1OTkyZGJlMDY1MmQ3IGxlZ2FjeS10cnVuaworMTYyNDcgZTRlYzc3ODc5ZGRkMDJlZDg4YTI2NTY1ZjRhMTMzZmFhMjI1NzQ4ZSBsZWdhY3ktdHJ1bmsKKzE2MjQ4IDMyYjY4NmRhM2U1MTkxM2E3NDc0MmFkYjcxYjNlMjRkMTA3YjhjMTEgbGVnYWN5LXRydW5rCisxNjI0OSA4NDI0ZWM0YzRiYjIwMzBjZTM2MTI5YzgxNjVhYTgxYTYyMzBjMzJjIGxlZ2FjeS10cnVuaworMTYyNTAgYjMxMzExYTc4YTVkYTY1MzE3Mjk1MWJmMTE0ODFlZWRmZGUyM2I2NiBsZWdhY3ktdHJ1bmsKKzE2MjUxIGY1MGJkY2IwZGQwZWFlMDFkOTAwNmUxMmZmMmJhYmIwZjQyYjM0ZWYgbGVnYWN5LXRydW5rCisxNjI1MiBjYjUzOTgyNDQ0OGU4NWUyYjUzY2YyYjVmYWM4ZDI1ZjI4OWZjZWMzIGxlZ2FjeS10cnVuaworMTYyNTMgNWRhODQ1NmYyZTRkMzQ0MzdiYzI5ZjBiOWY4YTlhMTI0ZDk3ODc5YSBsZWdhY3ktdHJ1bmsKKzE2MjU0IDUwODdkMWQ0NWYxZGE2NmNlZTdmNTE1MjM5NzZhZTZjZjFjYmJmOTggbGVnYWN5LXRydW5rCisxNjI1NSA4YmFjZjg2MzFhMTFjZWNlNTgwZGUzNmQzMzdmN2YwYzk3MDk0YjI5IGxlZ2FjeS10cnVuaworMTYyNTYgNGFhMTJlNTViZjk1ZDFkZjIyM2I2NDBhYTE2MGYwODI2YTNkYWY2ZiBsZWdhY3ktdHJ1bmsKKzE2MjU3IDQyM2E1Yjk1MGNjOTgzY2EyOTU0MDhiMjViNjc1NjVlODMwNThmNTMgbGVnYWN5LXRydW5rCisxNjI1OCAwM2JjNTFlNDNmN2FmNzU1YmVlMGEyZDcyOTlhMmM4ODZlMDczMmE0IGxlZ2FjeS10cnVuaworMTYyNTkgOTU0NTRiNzNlYTkxZDNkNmJhMmRmNzMxM2MwZWU1MDYzNzQxMjlmYyBsZWdhY3ktdHJ1bmsKKzE2MjYwIGM4MzA4NTRmYTUwN2FkZGE4M2Q1ZjY0YjlkYTc0MWM4ODdjZjMwYjMgbGVnYWN5LXRydW5rCisxNjI2MSAwNDY3OTlhMDgwNTdjMjlmYjlkZjhmMDJmMDdjMjE4YjZkMDY3ODc3IGxlZ2FjeS10cnVuaworMTYyNjIgZDljYzYyMGZmMTg2ZWY4YWFmYjYxYWU1ZTM4Y2I2NWVlZjk1YTkxMCBsZWdhY3ktdHJ1bmsKKzE2MjYzIGNhMzJmZjdhMDY3ZTY5NWMxZDNiMjJmNTlhOGIyYjE3MmVjY2EzY2IgbGVnYWN5LXRydW5rCisxNjI2NCA3MzQ4Y2NlZWU4ZmFhOWQ0Yjg3NTViYjRmMjg2OTM5ZjQ2MWFkMjQxIGxlZ2FjeS10cnVuaworMTYyNjUgNjQ4NDA5OGY0MGZjM2QyNDhkNGQ1ZGIyYTUyNWYwYzY3OGMyNTVkOCBsZWdhY3ktdHJ1bmsKKzE2MjY2IDgyNTZkNjE5OGVjMmY3Yjg5YjI0N2Q5MmZjMDE1MWIyNGFjM2UwOWQgbGVnYWN5LXRydW5rCisxNjI2NyAwZWRlYjRlZmU2ZGJjMzljZTc3OWIzZTMyNzEyYTg2M2NjMzk3YjQxIGxlZ2FjeS10cnVuaworMTYyNjggODZiMzY3ZDJlN2FmYWJjZjA3YmIwZmEwZjJiYmE4Mzg5MjYyMjI0NiBsZWdhY3ktdHJ1bmsKKzE2MjY5IGMwNWViOTAyZTU2MDBkNWU1MGQ1NWQwZTQ2YzgxODZmNTczYmQ0ODEgbGVnYWN5LXRydW5rCisxNjI3MCA3YjBmNDQ4M2MzMzE3NjA0ZDQ5YjM3Y2ViMmM5YTYwMGY3Yjg1MmY4IGxlZ2FjeS10cnVuaworMTYyNzEgZmE3NDE5ODhkYjE3ODVkODMzYTg2YWQ3NzIwMjgyOTZlYjA4M2IzOSBsZWdhY3ktdHJ1bmsKKzE2MjcyIGQwMTg0ODUyNzFmYjRlMDAyYzcyMThlZDE5MjliNzg4ZGY4NzQ2NWIgbGVnYWN5LXRydW5rCisxNjI3MyAxODM5NWNhNWMzMGVmYmI3ZTIxZTFiNDY1MDg1MGQwM2Y0ODk3ZWE3IGxlZ2FjeS10cnVuaworMTYyNzQgOWE0MGYxOGYwNTYxZmZmMmM2NGI0OGI3OWRhMmY5MWJiOGRjMDA3MiBsZWdhY3ktdHJ1bmsKKzE2Mjc1IDYwNTdmNDRiMGI3YWM1Y2M0Nzk5MTQ1ZTY0NTE2OWUzOWE3ZjI2ZTYgbGVnYWN5LXRydW5rCisxNjI3NiA1MzA0Yjg4ZmUzY2NmMDc5ZTU2NDM1ZmI2MTUzMjE3ODgwNzQ4N2NlIGxlZ2FjeS10cnVuaworMTYyNzcgY2Q3YWJiNGZlYjFiYTZmM2Y1YTNhYWMzZmQ3OGZlNjE4YjBjMmE0YiBsZWdhY3ktdHJ1bmsKKzE2Mjc4IGU0NGNhNjFkYjcxNTg0ZjU0YmQwM2QwNDllNGZmNjAyZmM1NTY5YjIgbGVnYWN5LXRydW5rCisxNjI3OSA0ZjExMDQ0MWRiMzkxODJhYTM3MWIyOWIyNDVlMTkzM2U4ZTcxNjI0IGxlZ2FjeS10cnVuaworMTYyODAgODY3MDQ0MzJkMjgzYTVkNGE3ZGM1MDk2M2YyOGUzNzMzZmI5Zjk0MyBsZWdhY3ktdHJ1bmsKKzE2MjgxIDA3MGU0MWYyNjk3YjZjZjk3NmU4MTBjMDM0NmJjZmNiMTcwNzhjNDEgbGVnYWN5LXRydW5rCisxNjI4MiAyN2Q4N2UwNzJiZmIwNTJjOTk3MmNmZDRhYzNlNjk4MjkxNjkzZGYwIGxlZ2FjeS10cnVuaworMTYyODMgNGRiYzc1YzE4OWJjZWQ5Y2UwNjM1ZmQ4Y2I2N2Q2NjNiODQzNWVhMyBsZWdhY3ktdHJ1bmsKKzE2Mjg0IGFjYzQ2MzhmMzdkNTdhNjBlMjVhZTg3NzNmN2Y5NzhjN2Q1NjZlNmIgbGVnYWN5LXRydW5rCisxNjI4NSAwMjQ3NGRmNTQ2ZjYwMGEzZGFmMjc3NWNmMTQ4MWYyOWFjMzEzYWJjIGxlZ2FjeS10cnVuaworMTYyODYgMTZlNDkwNDYyZTZiZjE5OGQxNTE3ODY3ZjBkMDQ4ZDdjZWU0MDdmZiBsZWdhY3ktdHJ1bmsKKzE2Mjg3IGYzMzZhMjY3YTJhMjU2Mjk2NGNiOTdhNWJmODg2NTE5M2JhNThlYjAgbGVnYWN5LXRydW5rCisxNjI4OCAzNjg2ZDEyMzYyYjhjMDk2MGZiOTdkNTQ0YmQ0NTQ4NTNkZTM0ZjZiIGxlZ2FjeS10cnVuaworMTYyODkgMDdjMzExODJmMjM3MWQwNDEyM2NhZDkyY2Y1NWMxMjU5MGI5NzZjMCBsZWdhY3ktdHJ1bmsKKzE2MjkwIGU4NDhkNmVkM2ViOWQwM2M2MjYyMmQxYWY0OTI5N2U2MWNlNzE2OTAgbGVnYWN5LXRydW5rCisxNjI5MSBiYWJhZTkxMGMyZTEzYTM2MjI5ZjhmNjk3NGJmYTJjMTM2YzYyMDkzIGxlZ2FjeS10cnVuaworMTYyOTIgZWQ1NjViMGZlNjQ4NDE3OGIxYjNhODQ3ODcxOWU2YTU5ODlkYzNhYyBsZWdhY3ktdHJ1bmsKKzE2MjkzIDMwNDk1ZDczYjk0MzYxNWE2NDdmZjM1ZTExYmRjNjFhMGRhZTRjYjAgbGVnYWN5LXRydW5rCisxNjI5NCBiMDYzNmE1MjdhODc5OTlhZGY5MzEwMjU0MDFmYTI1MTBmYmUzNmY3IGxlZ2FjeS10cnVuaworMTYyOTUgMWU3YzMyYmRkYjhmNzAwNDM0ZmI1M2Y5ODU2ZTUwZjBjMjcyMjNjMiBsZWdhY3ktdHJ1bmsKKzE2Mjk2IDQ3ZmVjNDhjYTQ5NTk0NjliMWM2ODY5ZTI0OTVjNWYwNjE0YTE1NGEgbGVnYWN5LXRydW5rCisxNjI5NyA4YjEzNDVmZjk4MDEzZjkyZjhlZDg3Y2MzNDU5OWU1YzRlZDUyMzk4IGxlZ2FjeS10cnVuaworMTYyOTggOTdjZDQ3MzYzOTJjMTc3NzliMGM5NzE2ZDg3NzM4NGFiYjk3MjdlMCBsZWdhY3ktdHJ1bmsKKzE2Mjk5IGI5ZjlkYTFhM2ZjNDczZjUxMzA1NzkyNDUxYmNhYWUzNDUxODQxYzYgbGVnYWN5LXRydW5rCisxNjMwMCA0MjI4Nzc1ZDQ1NWVkNTdiMTRhOTliMmFkNjllNjMwODFkMTEyYWI2IGxlZ2FjeS10cnVuaworMTYzMDEgZmVhYjY3NzI2OWUwOGMxNWVjMGZhYTk1ZWY2OTM3ZmJiMzVkZDg5YiBsZWdhY3ktdHJ1bmsKKzE2MzAyIDA2MTVkY2VmMDI0ZGUwNWQzNjEyNzc1NDBiZGFjZTFkNmZjNzljNjAgbGVnYWN5LXRydW5rCisxNjMwMyA5ZGJlZTRiNGMwM2ZkYWM4ZDNiM2U2MmI2ZDUzZGVjMGQ2NzAyNDM1IGxlZ2FjeS10cnVuaworMTYzMDQgZGRkNjEzOGM5ZTZmZTc2MmRiYTFlNzMxY2FmODA3MGEzMzNmMGE1ZSBsZWdhY3ktdHJ1bmsKKzE2MzA1IDdhYTUxZWJmNDgzZjk5MmQzZTQ5MDI2YThiZDc0OWEwNjRkMzcwNDEgbGVnYWN5LXRydW5rCisxNjMwNiAzY2Y0ZjVhZWUwMGUyZmFjM2ZkNDA5NGNiYjYwZmJmZTZiZDdlNWEzIGxlZ2FjeS10cnVuaworMTYzMDcgMWQ2NjMwNzkyMjEyNTkxMWE2M2VjNTBkMjg5MjAyOGM1MmI5YmRlYyBsZWdhY3ktdHJ1bmsKKzE2MzA4IDFmODJhNGJmZDI5NDU1OGU1YTgxOGI3ODE4MTA5Y2U1YTc0MTMyZmEgbGVnYWN5LXRydW5rCisxNjMwOSBkYjk2M2E2MTViYzkzMTJjMWM5NmMzMTM0MTM5MjA5MmUwMmFiZjIyIGxlZ2FjeS10cnVuaworMTYzMTAgZDhiODc0OWRlMDRhYmE2MWQ2OTgxZjhhOTAxY2UzZjkzOTVkYjQyZCBsZWdhY3ktdHJ1bmsKKzE2MzExIDMzMzg4OTI3YWMyZmFhNzkwMWZhNjQ1ZmZkZTA1YmExZjRmZDljMTAgbGVnYWN5LXRydW5rCisxNjMxMiA5NWI5ZGRiMDAzNTIzZTM2N2ViYjY4ZTdjNzI0YmNiMjI3MTRjZjk4IGxlZ2FjeS10cnVuaworMTYzMTMgMTViMThlMGNjM2ZkMjQ4MjkwMDgzODlhNmYzN2IzNGMyN2M1NjhjOSBsZWdhY3ktdHJ1bmsKKzE2MzE0IGRkMmI1MjE4ZTA2OWVhMjllODhiZDMwZTBjNGZiOWM0MmQ3NDcwYTcgbGVnYWN5LXRydW5rCisxNjMxNSA2MzFiNmEwM2MxNjBlYjljMzJhNjA4ZTAzMTkxMDIyYTM1MTJmOTM4IGxlZ2FjeS10cnVuaworMTYzMTYgOTA2ZWZjMWRhMjQ3YTM2MTU3MWZmMWJkZmNjYjg3ZTIxMTRiZjM5ZSBsZWdhY3ktdHJ1bmsKKzE2MzE3IDljNzRiODIzOWZmODBmODcyZDc5NzU3ZTBkN2Y1MWU2ZmM0MTk2MzQgbGVnYWN5LXRydW5rCisxNjMxOCAzN2IxYTM5NjA2Y2U4YmZiNGE3ZTgwMzZkNDNlMjNiZWJjOTM0ZmVhIGxlZ2FjeS10cnVuaworMTYzMTkgYzM5NmI2MDI2MTdkYzQ2MGI3NzlkMTg1MDlmMmUwYTM1Y2IzNmI3OCBsZWdhY3ktdHJ1bmsKKzE2MzIwIDZhNDQzNmQ2OTU4YjBjNjc0OTNlYzM2Mjc0NTE1ZWI4NDhiZmM1MGEgbGVnYWN5LXRydW5rCisxNjMyMSBiNzg2NTM2ZjIxYWNiZjgzODEwMTlkZjRlZjA3MmU0ZmYyMzI2MjMxIGxlZ2FjeS10cnVuaworMTYzMjIgNjk4N2U5NDUwNjE5YjdjYmRlN2ZjNzRlNzlkNDAwNDlhOTVlYTliMSBsZWdhY3ktdHJ1bmsKKzE2MzIzIGVhNzMyNzE5YjNmZDA3YzAxNDMxMmNkMTNjYzU2MzliY2ExNGEyNzMgbGVnYWN5LXRydW5rCisxNjMyNCA5MTlmM2Q1MTcyYTk1ZWYzM2RjNTEwMmY0ZTRhZmNjZmU5ODhlYmVmIGxlZ2FjeS10cnVuaworMTYzMjUgZDFmNmI2NTYxMDNiMmMyMDA4ZmMyNzA4M2U0MmIxNWZlNWRkZDIwNyBsZWdhY3ktdHJ1bmsKKzE2MzI2IDc5OTFhZWIzNTk4ZmViMmVlN2IxYzdkNGY3ZTRmMWM3ZjBiNWI4MzggbGVnYWN5LXRydW5rCisxNjMyNyBlNTU4ZWIyMjhhNDYzZjU0ZGQ1Y2VhOWNkZGU5ZmQwZTFjOTgzMmNkIGxlZ2FjeS10cnVuaworMTYzMjggNDdhOTQ3MTk1NmFmOWJmYWJkMTZlZDFjZWU4Njk2MmExYzgwMTgwZiBsZWdhY3ktdHJ1bmsKKzE2MzI5IGNmYjJhMGQwYTg2OTZmMzc3NDIzNDA4NjQxMmRiNDIzZWNiZmJhMmYgbGVnYWN5LXRydW5rCisxNjMzMCBhYzJiYjc3MDgzMjBkYmU0NzUyYTk5MGM5YmRhMzE5ZmJiZDk3MmMzIGxlZ2FjeS10cnVuaworMTYzMzEgNWQ2MWI2ZjJhZWEzY2RhMWE3MzEzODQzYWVlNGQwNGI0NTQ3YmJjYyBsZWdhY3ktdHJ1bmsKKzE2MzMyIGVmM2VkNzVmMTk1Yzc4MGE3ODhjNGFlODIyNjgwZjQ3MzRjYmQ3ZTggbGVnYWN5LXRydW5rCisxNjMzMyAzYThjNjcwMzA5YTIxZGI0YjE3NjZjNWRkOGRlYjZmMDk5NWE0N2M4IGxlZ2FjeS10cnVuaworMTYzMzQgZTQxN2Q5NTI4ZmQ2MTE1NDRjMWZlMTM0N2MyNjlhNGY4OWU1OTIwYiBsZWdhY3ktdHJ1bmsKKzE2MzM1IDAxYjIzMDcyY2M3Njk2NzYyMjEyNWY0YjI4MmYwY2YwYzVhNmExYzkgbGVnYWN5LXRydW5rCisxNjMzNiBjYjc2ZDdkYTY3MDI3OWUwZTY4OWY4NTRjODQ4YzQ1MWUyZjQ1OGUwIGxlZ2FjeS10cnVuaworMTYzMzcgN2MxMTlmMDUwMjkwZTNhMmQ5ZmNlMTMwODc0Y2Q5NDJiMWY3MTc2NiBsZWdhY3ktdHJ1bmsKKzE2MzM4IDYxZTRjMjlkNTNkOGQyNzdiYzhjMjQ5ZWZhMWI3M2FhZDEwZDYzYjEgbGVnYWN5LXRydW5rCisxNjMzOSAyZTQ1YjdjMjNkYzY4NjVmODE4YWZjNDFjNjQ2NDY4MjlkYjljN2MwIGxlZ2FjeS10cnVuaworMTYzNDAgYTAzMjEwMWVkOTI2NDRjMmU2MmEzNmE1ZTAxMzhhMDQ1MTNhYjg5OCBsZWdhY3ktdHJ1bmsKKzE2MzQxIGZmZDVlOGI2N2M4NDMzMmIyOGZkNDZlYmE1YTk1ZDM2NjcwNTRjOWYgbGVnYWN5LXRydW5rCisxNjM0MiBiNGI2ZjM5NjJiZDEyMzk4YmEwMzg2ZDVhMWNhNzA2ZTYyZmUwYmQwIGxlZ2FjeS10cnVuaworMTYzNDMgZTg3MWJkMDVjNmE3NDRkMjViY2ViODg0ZDJhNDRjYTE2OTkzNjVlMyBsZWdhY3ktdHJ1bmsKKzE2MzQ0IDA4NGE3NTgwNTFlMGUxYzZlMmI2ZGUwNmM2MzVjOTEwMjVlZmZmZmQgbGVnYWN5LXRydW5rCisxNjM0NSBhZDFjODI3MWI2ZjgyODg2MGU1NjZmMTMxMWQxZWExOGJiMjhiMGFkIGxlZ2FjeS10cnVuaworMTYzNDYgMjk3N2ZiYWU0Y2E1MWI0YTA0NDA4ZTBlMzAwMjc4OGNjNmU0ZWY0OSBsZWdhY3ktdHJ1bmsKKzE2MzQ3IDg5ZjkwNTg3MGMwYTkwZGU3YmFjNjc3Nzk3OGRjYzlhZWI5Y2JlYjAgbGVnYWN5LXRydW5rCisxNjM0OCAxNGNlYjE1OWU0NDk5YTM3NjZlMGEzMGYyMDhmNWJjYzczY2QzNWM5IGxlZ2FjeS10cnVuaworMTYzNDkgN2MxMjdhNzlhMzY5ZTU3NGU3YzhiYTQ3ZDFkMGMzZjFhMmJhMjIxZSBsZWdhY3ktdHJ1bmsKKzE2MzUwIDRmYWY4YzIyZGE2MGJlMmEyZDc4MWUzYjFiZGQ5NjM5ZjYxZDE1NjcgbGVnYWN5LXRydW5rCisxNjM1MSA1MDI1MTE1ZDIzY2YyYjFmMGQzMWE4OWY5ZGQ0OWZiN2EyYzg5ZmQ2IGxlZ2FjeS10cnVuaworMTYzNTIgYzUwM2Q4ZTQ3NGIzNzBjMmEzYzkwMWQwNDZkMWMyOTdlMDQzYjU4MyBsZWdhY3ktdHJ1bmsKKzE2MzUzIDIwNzdiZjE0MWIzNzdhNDQyNjg0ZGQ0MDg1Yzk2YjJmMjM2MTYwZjkgbGVnYWN5LXRydW5rCisxNjM1NCA5Y2E1MGUyNDMzZWI0MWVmMjQ5NmMzNDM0OTJiY2YxMTE4ZjNjNDVlIGxlZ2FjeS10cnVuaworMTYzNTUgZGY2NGNjMGU4NGUyYTkyYTc0ZTk2ZTQwNDE4OTNiM2IzODI5NjVmMyBsZWdhY3ktdHJ1bmsKKzE2MzU2IDU5NDliNDc1ODdkOTU1NWJhNDZkYTI1YTYxZjZjZDJhOTQyMTg5YzYgbGVnYWN5LXRydW5rCisxNjM1NyBhMTNjZWE0MzBjMTM2MGU0ZThjMmUxM2M4ZDIzMzlhM2VkOTM2ZThhIGxlZ2FjeS10cnVuaworMTYzNTggOTMwZjRiYmJkOTNhYTZkMTU1OTNmNWFmOTc2OGUzMmMxM2U5ZmU1YSBsZWdhY3ktdHJ1bmsKKzE2MzU5IDI1ODQ2OGEyMGQ3NDU3NmU1ZGQ3YjMxZDYwMjg4OGE3NTlkZTA4YmEgbGVnYWN5LXRydW5rCisxNjM2MCAwN2Q3NDAzY2ViMGYyNWFjYzNjNjRiZTNmOGEzMDA0ZTAyOTQwOWE3IGxlZ2FjeS10cnVuaworMTYzNjEgMzI2MDIyMGFhZWU0M2QyYzU3ZjY4Njc0ZmFmNTBiNDQwNDExY2UzNCBsZWdhY3ktdHJ1bmsKKzE2MzYyIDM5ZjU0YjlhN2Y5Y2I2OTYyMjQzMGUzZDk3OTYzYmM2YTg5OTc1NDUgbGVnYWN5LXRydW5rCisxNjM2MyBlZjhiMjBiOWY2ZjUzNzE4Mjc2MmMwY2M0YzY1MDhjOTVjODk4OWJmIGxlZ2FjeS10cnVuaworMTYzNjQgZDdhZWMxN2NkMGI1MDQ2YjU5NDgwZDZkNTlhNjllMGM3M2UzZWZiMSBsZWdhY3ktdHJ1bmsKKzE2MzY1IDQyYjY3MmEwOWM0YTEwM2U1NTlmZDYxMDMzYjAyZjhiNjhiODRhZTcgbGVnYWN5LXRydW5rCisxNjM2NiA0ODNlNzVlZmMxMTEyMTgwZGZhNGYwY2Q0MzAwZjI1N2RmNWI4MTJmIGxlZ2FjeS10cnVuaworMTYzNjcgZGMxN2VmMWE3NjEzODBjYmVlZTJhZmE0MjBmMTdmMjgyYTQ0ODEwYyBsZWdhY3ktdHJ1bmsKKzE2MzY4IGM5YTRhMTMxNjE3MDgwOTBiMDczZjg0Nzk2ZmIzOGIxYzM0YjA3OGEgbGVnYWN5LXRydW5rCisxNjM2OSA1NTgzY2ZhNmQyYjBmM2NkYjE0M2I0OWFkMDQ4N2E0YzMyODBlNzU3IGxlZ2FjeS10cnVuaworMTYzNzAgYTkwMWMyYzAxNjZiYWE2YTE5NTI4OWJlYzMzNWUzMGMzOTFjYmM0YSBsZWdhY3ktdHJ1bmsKKzE2MzcxIDI5NTk4N2YzZmJkMjIwMTI3NDE5OWE0ZWRlZGMxODhlYWQyNzE0OGYgbGVnYWN5LXRydW5rCisxNjM3MiAyZWNhNDA1MWYwNWNiNWY5NDE1YWY5ZDZiMjkyYzJhNDAwZDAxYzE2IGxlZ2FjeS10cnVuaworMTYzNzMgODhiNGYzYjUwOGRhYTU5ODliNWMyNjk0M2VhOWRhYTg0NzU0MTZhZCBsZWdhY3ktdHJ1bmsKKzE2Mzc0IGYzNDAxZWQxMzJhMTRjZmY0YTYyODNlZjM3MGJjY2VhZmUxNTMwODkgbGVnYWN5LXRydW5rCisxNjM3NSAyNjA3NWMwM2YwMjI3OTU5NWIwMmIyNzU1Zjc4MjM5ODkyNjQwZjdkIGxlZ2FjeS10cnVuaworMTYzNzYgZTc4ZWRjM2NmYWU2ZWFlNzMyMzZkODcwODU2ZDUxNjFjMjVmZGUyNSBsZWdhY3ktdHJ1bmsKKzE2Mzc3IDg3YTQxNmQ5ZDliNmY3NDAxNTRlNmUzYTBlMzg1YmRkOWMzNTg1YWEgbGVnYWN5LXRydW5rCisxNjM3OCBmN2Q5ZTYxODVmNjIyMmMxZWIyZDc0ZmI0ZTZiM2E2OWRjODY4ZmMyIGxlZ2FjeS10cnVuaworMTYzNzkgZmE4OTQ5NjU4NGM2MjdiM2ZkZWMyMzJkMzJkZWU2NWEzNTMwMjdmZiBsZWdhY3ktdHJ1bmsKKzE2MzgwIDA4Njk0N2NkMjAyY2MxMzU2ZWExODNkNzA4ZDM4ZDE0YmJhOWFmZDAgbGVnYWN5LXRydW5rCisxNjM4MSBiNzQ1NDhhOTBhNjNjMDM2OWVkZDI0NzkyOWNmNzVhNTIyZjRhZjJjIGxlZ2FjeS10cnVuaworMTYzODIgNWI3MjdhYjM3MDkyZDU3MmFhNzg5NGY2MzljY2UxMDBjNjg5OGYxMSBsZWdhY3ktdHJ1bmsKKzE2Mzg0IGYxMWM0NzI3NjRhZDM3MTcxN2NhMTllMzE2ODIxNGU5MGVhZWQwNzUgbGVnYWN5LXRydW5rCisxNjM4NSAzNzkxOTY3Y2IzMmVmODZmYzQ5MTQ1MTcwMDIwYTg3NmEzM2RkMzNiIGxlZ2FjeS10cnVuaworMTYzODYgMTY3ZGU0OTUzODEyZmFjYWE2YWQxYmYyMDMwMjQyYmVhZWQwNmE5MyBsZWdhY3ktdHJ1bmsKKzE2Mzg3IDgzYTU5NWU2OTFlNDI2MmI3YzI0MmI2MGNiODVhZGVmZGEzMDdlNWMgbGVnYWN5LXRydW5rCisxNjM4OCBmZGZkMTA0OWYzNmU5NDNlN2Q1OTQ2OGVkOGE0ZTk0ZDM1ZjQ5ZTQ5IGxlZ2FjeS10cnVuaworMTYzODkgZjRkYTQzNTVhY2RlNjJmZTYyY2E2NmRiMzBjOGE3ZjdkMmVhZDdjYiBsZWdhY3ktdHJ1bmsKKzE2MzkwIGY0MDg0ZjQ0M2YzMTlkYTU5OTRhNTcyMjcwYjYxZTc1YzEyNjRiNDQgbGVnYWN5LXRydW5rCisxNjM5MSBkNmQyM2Q1ZTI5NmQ0MmY0YWNhYmY1MTBkNzczMjY2NmZkYWI1ZDZhIGxlZ2FjeS10cnVuaworMTYzOTIgYTFhZDc5MWUxODIxODJlZTZjNzE0MTQ4ZTg4MWRhOTg0MmY2NDYwMyBsZWdhY3ktdHJ1bmsKKzE2MzkzIDczYzY2MWJlMWVhM2RlNjNmNzM4NmRmNzkzODk4MTZmMjNhY2I5MmQgbGVnYWN5LXRydW5rCisxNjM5NCBmZjgyZmQ0MjJmMWMxYTMyOGQyZTNhYjE2NGE5MTgxM2U5ZjViYjUwIGxlZ2FjeS10cnVuaworMTYzOTUgMDg1OTYwN2NhM2U1M2JhYWYzNTFjZDhlYmFkZjNiNTU4YTA5ZTUzYSBsZWdhY3ktdHJ1bmsKKzE2Mzk2IGUxNDY5YjdhMmU2OGRiMjkyNmUyMDkwYjc0MTJiNTllMmNlYWFhYWYgbGVnYWN5LXRydW5rCisxNjM5NyA2ZjBkOTZlNmI1YTUxM2NiN2IxNDA3ZjNjNjEyYzM0ZmFmNzQ0ZDY1IGxlZ2FjeS10cnVuaworMTYzOTggZGZiN2VjZmZmZTNkNWIxYzY2YjY0YjdmMTJhOTU3NjI3NGFkMjg0NyBsZWdhY3ktdHJ1bmsKKzE2Mzk5IGI1MTIwZjU4YzVkYTU4MzEwZjhkZjdjMWNlNmZkNjA1YTRjYjE4YzIgbGVnYWN5LXRydW5rCisxNjQwMCBkOTAxYzQzZTdkNThjZTk5ZjdhZjg0OTBjMmIzNGM4M2ZmZGFlMzdjIGxlZ2FjeS10cnVuaworMTY0MDEgNTgzOThjMGY5NDhiYzg5Njc2Mzc4OTA5YmRhMTQ0OWE0MWM1ODg0NiBsZWdhY3ktdHJ1bmsKKzE2NDAyIGUyZTI1ZWVlNmE0YjE0N2I4Y2QzMzM3OTI3Y2UzMTgxMWQ2ZTc5MmMgbGVnYWN5LXRydW5rCisxNjQwMyAzNzE4ZTUzOThmYWQzNGI3NjgyYTkxNjJjYTdkZmM0ODBmODViNjlmIGxlZ2FjeS10cnVuaworMTY0MDQgMzhlYTI3NDU1Y2JiM2NiODg3NGE4OTg2Mjc2MjUwYTdmYmVjNDc2NSBsZWdhY3ktdHJ1bmsKKzE2NDA1IGRhY2M5ZjE2N2U5NTlmZjcwYjZiZmZmNmRhZDgyMjgyYTQwZmVkMzQgbGVnYWN5LXRydW5rCisxNjQwNiAxNTI4YmMzYWM3M2Q1MDMxOTQ4YzZlNDNjYzg4OGQwZTdiNzQyM2Y1IGxlZ2FjeS10cnVuaworMTY0MDcgMmQ1YWEyMTJhMzIyYjJmOTk1ODMzNzIzMDZlNDNhZTQ2ZmVjMTU4OCBsZWdhY3ktdHJ1bmsKKzE2NDA4IDBjMDhkZmE2MzRjMzRlNDdiYzMzNmM1NTg1Y2ZhYWNjYjNkMjFmMGUgbGVnYWN5LXRydW5rCisxNjQwOSA1MjU5NWI3MGE1Njg0ODhmYTM1Njk1YmE5MWIwNTk5ZDI1ODQzZDA1IGxlZ2FjeS10cnVuaworMTY0MTAgYjJmYmQ5ZmNlMDVlNWU1MDA1YmUyM2Q5M2Q0ZGIzMGU3YjJmMWY2MyBsZWdhY3ktdHJ1bmsKKzE2NDExIDhlZTRhMjA5YTllZjViYWJkMWJmMTA4MDQwOGM2ZGUzZmJlOGUzYTAgbGVnYWN5LXRydW5rCisxNjQxMiBmODA1NzFiYjI5MTNlNzg3NzlhNDQxOTMxZTM2Yzk3YmY3ZGY2NDczIGxlZ2FjeS10cnVuaworMTY0MTMgM2Q2ZDIxOGI2NzNkMGNmMTQ1NWEzMDgyYTljMTBhMWU0NGRkZjhhYyBsZWdhY3ktdHJ1bmsKKzE2NDE0IDhhMDYzNDIzZTBiN2RmOTk3NDg4ZjMxZTZiYjZlYWM1N2M5NzIxMjUgbGVnYWN5LXRydW5rCisxNjQxNSAxMTdkMjA5NjhhMTA0MmQwMDUxODg0NTM3N2FjMTI1YTlmYzE5MmYxIGxlZ2FjeS10cnVuaworMTY0MTYgYTc0YWE0OWIwYzM3ZmFkOWVlNmNhYTBmZGEyYjliMjE2ZDczYmE1ZCBsZWdhY3ktdHJ1bmsKKzE2NDE3IDBiYjQ5YjNkYmRmMGFjYWRiZTM2ZDBlMDBhMDZiMGZlNmU4M2FkNjIgbGVnYWN5LXRydW5rCisxNjQxOCAxMjY1MmRhNmQ2MzJiYTA4ZDI3NTBmZGUxOGM3YWM3NjgyNDI5ODFmIGxlZ2FjeS10cnVuaworMTY0MTkgOTlkZDFjOTMzMTYxNmJkYjg5NzdjZjE0MjQ5ZDkyNTBlNDU4OGY3OSBsZWdhY3ktdHJ1bmsKKzE2NDIwIDZhNTMxNGE2YzJjMjk5ZTMzYzczYzc5NGFmMzFkYTNhM2ExMDJlOGYgbGVnYWN5LXRydW5rCisxNjQyMSBmNzk0MzRlZTQxZmE4NjAxOTIxNjI0MGJhMzJiZTY2MGJjZmM1NDE5IGxlZ2FjeS10cnVuaworMTY0MjIgZTc4MTUzZTE3OWZiY2NhYTUxMjk3YTA5MTE1ZjNmN2E1YWFlNjNjOSBsZWdhY3ktdHJ1bmsKKzE2NDIzIGExY2UwNzIxODc4MTM0YjM2ZDUwZGIxMWZkODJmMDdkODQzZGZlZmMgbGVnYWN5LXRydW5rCisxNjQyNCBlZjI1ZjMyYzQ1MjM5M2YwZDRkMTAxYzMyNzM0N2ExNDNlMDE3ZWQzIGxlZ2FjeS10cnVuaworMTY0MjUgYTM4NTZhYjZiMjA2ZDdkMmNmNmJhNjc2YjBiNTE5OTdjZWFmM2Y2YiBsZWdhY3ktdHJ1bmsKKzE2NDI2IDI5ZGEzNTU0MzgzMzIxNjAzNmQ5NDE1Mjc1Y2MzZWNjNjBjZGI3YzMgbGVnYWN5LXRydW5rCisxNjQyNyBlZTEwODM0ZDY3YTM2YzRmN2IyNjMwODNkN2JhNzNmNmEyYjQ3NDE1IGxlZ2FjeS10cnVuaworMTY0MjggZWFmYjc5OTYzZWE2NGVlOTE1MDRkZGI0ZTI4ODFlMmM3ZDk1YzA0MyBsZWdhY3ktdHJ1bmsKKzE2NDI5IDM2ZGU3YjZhYjdlYjk5NDE3MDEzM2MxY2MzOWQ4ZTA3YjA2YWRjYTggbGVnYWN5LXRydW5rCisxNjQzMCBhNmM3YmZkZDY3Nzc0NjRhYmU5NDc5ZDI4MmI1NTk5YWY5OTk5OWNkIGxlZ2FjeS10cnVuaworMTY0MzEgZDdkODFlYTljODJkZTAxNzcxOWM1M2NmYzgxNzQxM2VmYjlmZjYxNiBsZWdhY3ktdHJ1bmsKKzE2NDMyIGU5NGMwNTM1MWQ0Mzc0YmVhNWQ5YTBiYjRiNjE3ZTUyYmFhZDU2YTcgbGVnYWN5LXRydW5rCisxNjQzMyA0Mzg4MjQ5NTA2ZDE5MGE3NmE0ZGJiYmM3MDI5NGVmNmJhMDY1NmQ1IGxlZ2FjeS10cnVuaworMTY0MzQgMjY2ODViZDJjMDllNjFiZjM4OTY1NWY4M2VmMTRmNDJiNTYwNTVkMyBsZWdhY3ktdHJ1bmsKKzE2NDM1IGJmYzViMmE4YzExZjVlNjI2NjgyYjk4ZDM3NmZhMmVmNjk3MGEzOWQgbGVnYWN5LXRydW5rCisxNjQzNiBjYzBjMGRjOWZlZjBkYzQ0MWI4NTYzYTliNDRjOGQwNDBjMmUwM2I5IGxlZ2FjeS10cnVuaworMTY0MzcgYzkwZDk0ZDI4N2Q3OWI3NDVlNGI1YTBiZDU1MTVjZWRhNzMxNzRlNiBsZWdhY3ktdHJ1bmsKKzE2NDM4IGIxOTU5ZjAwNjU2NjU5MWIzYmUxNDAxYjljZDBmMTY0NTFlYmM2MDAgbGVnYWN5LXRydW5rCisxNjQzOSA1NDIzYjEzMmJjOTdhZjRkMjQwNzZjZWYxNmYyNzNiNjRmYWYwNGQzIGxlZ2FjeS10cnVuaworMTY0NDAgZWRiMWE4ZTZiODU5NTk2MGJiZGQ3OGJiYzYwYWUxZjdkZTc1YmQ5MiBsZWdhY3ktdHJ1bmsKKzE2NDQxIDMxNzdlMjgyOTE2Nzc5N2VhMDgxNmNmNzA3MmU0MDNjZjhjMjdhZTggbGVnYWN5LXRydW5rCisxNjQ0MiA2MWY2NWRlMTllMWU2OGVhYWM5NzVlM2JjNTUyNDcxMTJiZmIwNDJiIGxlZ2FjeS10cnVuaworMTY0NDMgOWY2MTg5ZTg5MjEyMTU5NDY5YTYxNWVhNzI0MTA1OWRkYTgyZjJhMiBsZWdhY3ktdHJ1bmsKKzE2NDQ0IGIwZTgzOTYyZjRkYTcwOGRiNzhlZjE3MGI0NDMxMjNiYWIzYjJkMGYgbGVnYWN5LXRydW5rCisxNjQ0NSA3ZGUxOGYwNGY4NWE3N2ExZDU1YWI2MTkxYmZlM2JjNTk1ZGE3NTVhIGxlZ2FjeS10cnVuaworMTY0NDYgOGNiMjRlMGJlZjliZTU5YzNkZjUwOGZkNjE4M2I1Y2YzODRkOTliYSBsZWdhY3ktdHJ1bmsKKzE2NDQ3IGVjMTlhMGE4Y2Q2ODc3YjE5ZDQyNWU0OGM3YWFmMDg1YzdiNDdiOGYgbGVnYWN5LXRydW5rCisxNjQ0OCAxMjljOTc3NWNjMTkzMjBjZTU4OGUwNGNhODdhMzQ3NzBlYWVkNTk4IGxlZ2FjeS10cnVuaworMTY0NDkgOWE1ODU1ZWEzZTU2YWU1NDM5NDA1NzNmNTdiZjM5ZGVmNDkwNTNjMSBsZWdhY3ktdHJ1bmsKKzE2NDUwIDYzODMyZWRlNTc3ZmM1OWY5YjQ4YWVjOTllYjRmNGVkNWEwZjYzM2YgbGVnYWN5LXRydW5rCisxNjQ1MSA5NTg5NGMzMTA4ZDE5ODVmNjA0ODVlMzQ1YjEwMzY4MWY4MTFhMTM2IGxlZ2FjeS10cnVuaworMTY0NTIgOWRiODZiMjcyNzhmYzkyMzY1YThlNDY5OGY3NjM2NmZhMjdlYWE5NSBsZWdhY3ktdHJ1bmsKKzE2NDUzIGMwOWMwMTcxNDc0ZjBmNDljMWRhYmMwODRkYWQ4NDM5OTZiOTkwZDUgbGVnYWN5LXRydW5rCisxNjQ1NCAwZjFjNjA1M2U4ZDA5MjIzNzI4Y2E3OGFkY2UwNjg3NmUzM2M3YWJlIGxlZ2FjeS10cnVuaworMTY0NTUgNzkzYmJhZDZkMDljZjA4MzhjNTgwYmM2MWUwNDkyNDgxYjJmNDczNiBsZWdhY3ktdHJ1bmsKKzE2NDU2IDI1ZmM2ODA3N2I2NjU0MzQwMmU3MmFmODlhMmJkYzBhYmUzNGYwNmIgbGVnYWN5LXRydW5rCisxNjQ1NyBiNTRmMTFhZGE5MWVhMDEzODg1YTMxNDhhZDViZDA2MGJjYmU2ZWJhIGxlZ2FjeS10cnVuaworMTY0NTggYTI4ZWQ4YzVlNjJlMDI2Y2EyODM1Y2E4NGI3ZTVmMzcxMGVjZDFkMiBsZWdhY3ktdHJ1bmsKKzE2NDU5IGJiMzY0ZDZmOWY2OTI1NjA0MTYwYmUzNmM0MmUyNzg1MDc0MDJjZTggbGVnYWN5LXRydW5rCisxNjQ2MCA1ZTJlOTFmZmFkY2Q4ZTQ4NWVmYTQxM2YyYzhhZmE0ZWNkZTM5YjQzIGxlZ2FjeS10cnVuaworMTY0NjEgY2IyOWQ0YTJjMTdiMGIzZmVmYjRjNjdjMzkzZWUwNzI5ZmM4NTViNiBsZWdhY3ktdHJ1bmsKKzE2NDYyIDAyNmUxMmFjOWY3MWI0MzllY2M3MDZmZWY0NmQzYTNmMzAxNWNhZDggbGVnYWN5LXRydW5rCisxNjQ2MyBkNmRkZWQzYzg1MDc3OGVjMTliZTNjZTg3ODc2NDkzYzEzNTJlODdhIGxlZ2FjeS10cnVuaworMTY0NjQgYzY4MDAzZWZiNzk2YTNhMWQwOGQwY2IxYmRkNzdkOTJiYTYyZWI1NyBsZWdhY3ktdHJ1bmsKKzE2NDY1IGY4NDBiZjZhMzM1MWU2MzhjYTQzMTQwNWE2NjAxMWE3MjM5M2RmNDYgbGVnYWN5LXRydW5rCisxNjQ2NiA5Nzk3MDE2OThjZDI5NzExNWZkYzMzYThhYjVjMGE2ZmUwNjJhNjljIGxlZ2FjeS10cnVuaworMTY0NjcgYzlmZDUyZDdjYTBhZTdjOTQzYzk5Zjk0ZjllYmIxODRlY2I5NzA0MyBsZWdhY3ktdHJ1bmsKKzE2NDY4IDQ2MWY5YjZlZTU1NTc1YmE1NjFhY2E1MTc5NTY1OGFmNDNlMTBiN2YgbGVnYWN5LXRydW5rCisxNjQ2OSAyZTYwM2JkMGMxYTkzZDdjNDcxMjkyNGFmNjE2NTMyM2I3YjgxNjgzIGxlZ2FjeS10cnVuaworMTY0NzAgZGQ5ZmZhMGE2YjExMDdlMDc3NjExMmViNmFhOWJjN2JjY2I3NjNmNCBsZWdhY3ktdHJ1bmsKKzE2NDcxIGZlODllYTFjOTEwODk4YmEzZGJhMTk5NzRkNTkzZmMwMGZmYWQzNDkgbGVnYWN5LXRydW5rCisxNjQ3MiA0ZTJhYWYxZTcyMmE3ODcyNTE3MjcwNjA4Y2YxZTI4NjI4M2Y3MzM3IGxlZ2FjeS10cnVuaworMTY0NzMgNjk3Yzg4Y2M0NzE0ZGZiMDJkNjNlYTIyZmQxMWM4ZTAzNTEzZTY0OCBsZWdhY3ktdHJ1bmsKKzE2NDc0IDQ4ODg2ZmE4MmFkNTBlODZhYTVmODVlY2U1ZjgyZGE5NTVmZDc2ZjAgbGVnYWN5LXRydW5rCisxNjQ3NSAwMDAzMGViODgxMzFmODQwZjNiMmJlZTkyZDAzN2VjNGM5MzYxYTQxIGxlZ2FjeS10cnVuaworMTY0NzYgYzg3YTM3YTNkMmU2NWI3NjE0ZDcxY2RkM2EzNWRiZDE5Mjc1MmFjYSBsZWdhY3ktdHJ1bmsKKzE2NDc3IGM5ZDAzOTE5NmRiNjEwOGIyMmVhZTNiYTZhMDlhNWM1YTc2YTczOWUgbGVnYWN5LXRydW5rCisxNjQ3OCAwNmQ0MjI1OTE5ZDRkMjYzNzI2NzljZTMwNzEwYzZhN2U5ZTZmOWQxIGxlZ2FjeS10cnVuaworMTY0NzkgNjU3OGZhZjQ4Y2QxZDQ5Y2Q5ODk3MDQ1ZTg5OGY4Y2VlNTYzZmI2ZSBsZWdhY3ktdHJ1bmsKKzE2NDgwIDVjM2VlNzZkMjQyZTNlOGYxZWQ2NmRhMTlhYTNiZDc2NzljM2RlMTggbGVnYWN5LXRydW5rCisxNjQ4MSAxNzI5M2YxMmU4ODQwZWIyZTdmODQwMTA4ZTUwY2FhOTM0NzIzMTQyIGxlZ2FjeS10cnVuaworMTY0ODIgNzY3YjJmN2JlNDBlNjNkZmU1NDhlMGQyYmZmNzg1MGJkZGYyNTEyYiBsZWdhY3ktdHJ1bmsKKzE2NDgzIGQzZjY5NDAyMzY0MjViY2Y4OGEwMjI1ZDIzNDE5MDU0OTdjOTkzZWYgbGVnYWN5LXRydW5rCisxNjQ4NCAwNWQ1OWY0NDc2YWQ1MGY2YTk0OTY0ZDJhNmJiZTA3OWYxMzNkY2IyIGxlZ2FjeS10cnVuaworMTY0ODUgYjNlOGQyZTNkYzczYjA0YjBlZDEzZGVjMjRmMmVlNmVjMjY1NjIzOSBsZWdhY3ktdHJ1bmsKKzE2NDg2IGI3YzkzYzY3N2U1NjU4OWU2NjAzN2NlYTFhNzQ3ZDkyZjAzZTgzMTUgbGVnYWN5LXRydW5rCisxNjQ4NyA1N2QwMmY2MzRhMDJiNzc4OTBjNjA5MmRiZmQxN2JmZTAyYWVhMzc5IGxlZ2FjeS10cnVuaworMTY0ODggNDQ5ZGQzYTAwYmQ3MjkyOTg5NmViMTA3MzRjZGY4OWNjNjQ3M2VlNiBsZWdhY3ktdHJ1bmsKKzE2NDg5IGVjYjhhYWNmZjJlM2FlODZmZjUzN2NlMGIwZGI5MmI1MzQ2YzE5ZmQgbGVnYWN5LXRydW5rCisxNjQ5MCAwNTE3N2NkNDQxYTE4ZTc4Njc4ZWQ5N2E2ZjQyYmQyYmQzZjEwYWUzIGxlZ2FjeS10cnVuaworMTY0OTEgYjc2OWUyZGQ2YTUxYmZmZDY2MDdlMGY1Nzc5ZjNkYTAyNTJkMGRhMCBsZWdhY3ktdHJ1bmsKKzE2NDkyIDU0ODYxYmY2NzQ4ZGE2M2Y3ODRmNmRlODI4YWM4NGI3ODBjYzExZmMgbGVnYWN5LXRydW5rCisxNjQ5MyA2ODlmMTkwMDQwNjM1NDM2YjkwMTcyZmNkY2I3MWU1MzU2NGY4OTUwIGxlZ2FjeS10cnVuaworMTY0OTQgOGQ5OTZmOWM1OTAzYmYwY2Q2ZTdiNjhiZTY2ZWMzOWZkYzdmMWUwZSBsZWdhY3ktdHJ1bmsKKzE2NDk1IDljZTNlMDViN2ZkYjI3NGE2YTc1NTk5NTFlMTg1MzIxZDA3ZTg2OTUgbGVnYWN5LXRydW5rCisxNjQ5NiBiYTM2YTljM2Y0NzcxNDIwMzQ2MmQyYzJkZGE4Mzg5OGQ1MDcxYWMwIGxlZ2FjeS10cnVuaworMTY0OTcgM2I2OWE5ZDA0NGYxYzQzMWY3ODMyMjEyMjNmZWQyMTM1OGE2Y2JkYyBsZWdhY3ktdHJ1bmsKKzE2NDk4IGE5NDlhNzJhZjk2OWNiMmZmOTQwMmExZjg0OTVlNGZkMGE1N2RmMmEgbGVnYWN5LXRydW5rCisxNjQ5OSAzMmNlMjU0ZjNiZWE2ZjkwYmE0NjZjMTI5NWI2ODExN2IyODAyNjZjIGxlZ2FjeS10cnVuaworMTY1MDAgYzMxYjEzYjdkYjc0MDc1MTA2OGI2Yzc0YmY0NWViMTA3OGI2ZjZjOSBsZWdhY3ktdHJ1bmsKKzE2NTAxIDE0NzVjMWNjM2JmMWVlOWMwMTU5NWJkODdkNjFjYmEwNmYzNDRhYjcgbGVnYWN5LXRydW5rCisxNjUwMiA4MmQ5YzJmMTMwOThlNWM3NmZmNDlhY2NiZDZlZWZkZGU2YmQxNDM0IGxlZ2FjeS10cnVuaworMTY1MDMgOThkODE2OTU2M2U3MWQ3NGFhZTM2YTMxZDQ5Y2I2YjRkNmJmNGRiYiBsZWdhY3ktdHJ1bmsKKzE2NTA0IGY2NWI4NjczOGQzYjU4YzIxYjEzOTZmNjgxMTdiNmY1M2JkZGZkNmIgbGVnYWN5LXRydW5rCisxNjUwNSBlZThmMDllNDEzOTU0NjFiYWI4YThlMDE4ODA3ZDM2NTg0MWZhYzkzIGxlZ2FjeS10cnVuaworMTY1MDYgYzc2ZTc0YWJiNjViYWYzZGVmNTQ0NWViMzI0MDc1NTljODBiMGI2ZCBsZWdhY3ktdHJ1bmsKKzE2NTA3IDVhMzExNGU4YzAyN2E5NDYzZWE4NDkzODI3ODJlMjY4ZmJjODUwNmMgbGVnYWN5LXRydW5rCisxNjUwOCA1YzA2N2MxYjVlZDBkOGE1ZTY5MWY3OTM2OWQ5MzFlOTcyZDVjNTUzIGxlZ2FjeS10cnVuaworMTY1MDkgYTQ0ZGJiZGU1ZWNmZGE1NzlhOTY1OWI5ZGJiM2E2NmMyOWE0NWRhOSBsZWdhY3ktdHJ1bmsKKzE2NTEwIDdhZTlmYTQwOWI0NmYyNmM1MjMxMDNmNjFiMzgzY2ZmNTQyY2NlZTQgbGVnYWN5LXRydW5rCisxNjUxMSAwODNiNGU1NDcxNzFlZjlhNGRiZTQ1NzJkMWQ1NGYwZjcxNDA0NjNiIGxlZ2FjeS10cnVuaworMTY1MTIgMWU5ZjMwZWVjNDgyNDQ4MWVkYmFhMDMxNDJkM2NmMGUwNmEwZDVhNiBsZWdhY3ktdHJ1bmsKKzE2NTEzIGRmZGI5MTFjYmVjMjUyYzkzNjY1YmJjMWQ3YTlmOGFkYWZiNGI0YjcgbGVnYWN5LXRydW5rCisxNjUxNCA4M2RiYTNmNWY3YjQ2YTAwOGI5MDAxZDk0MGI1NTU3YTBiNzY4MDcwIGxlZ2FjeS10cnVuaworMTY1MTUgOGQxMDc1N2E1NzViMGE2Y2ZlNTFmZDg4YTM0MzI4YjA1OTczYzFmZSBsZWdhY3ktdHJ1bmsKKzE2NTE2IDg0Zjg1NzlhMDc5Y2RhYWJmZGJlZDk1NWE4ZTE0OTUwODVmMmQzZmYgbGVnYWN5LXRydW5rCisxNjUxNyBlOGRjMGEwYmU0YmFjYzA4MTdhMTQ1YTU2NmQ3MjFmNTcwOTBhMTcwIGxlZ2FjeS10cnVuaworMTY1MTggNjMyYmU5OWNjMmNiMTM4NGMwMmM1ZjVkYmQwODNlYTc3ZjMyNDVlMiBsZWdhY3ktdHJ1bmsKKzE2NTE5IDAwZWQ0Yjc0MzAyZmQ3ZTg2NzllMDViMTdmZGQxYzA4YmQ1YTY1ZjQgbGVnYWN5LXRydW5rCisxNjUyMCA2N2I5YjA1Y2U1YTVkZmIyNzUyMTYwM2MwZTY0Mjc1Yzc2M2FkNThlIGxlZ2FjeS10cnVuaworMTY1MjEgYmMzN2U2YTMzNWYyMTVkOWI5Y2E5M2Q1ZjM2YzU0YzMxMGE4ZGNhYyBsZWdhY3ktdHJ1bmsKKzE2NTIyIDQ5M2IxMDY1NzYzZGJmY2JjM2YyNDIwZTg1ZTgwOWNjMzQ3NjAxNmMgbGVnYWN5LXRydW5rCisxNjUyMyAxNmI2MGJkNmMzNzVkYTliZjRmYWU2ODBkNTBhODBlNGRkODgxMzc0IGxlZ2FjeS10cnVuaworMTY1MjQgZDg5ZGExN2I0NmY2MTBhYTVmY2Y5NjIyOTEwM2ZlZDA3YmE4MTZiNiBjbnJpLTE2LXN0YXJ0CisxNjUyNSA2ZjhkMjRiMzMyZDM1ZDU5NWNmNGYyYjJkMWFkZWQ1MDBhNzcxZjRkIGNucmktMTYtc3RhcnQKKzE2NTI2IDU5ZjhjZWRjZjA0OTUxYzMwZmQ4YTBjMmEyOWNhMTNjYjg1MjU0N2YgbGVnYWN5LXRydW5rCisxNjUyNyAyZDAwYmNlZDYwMzg3MGEzMjczNjhhMTY1NjI5Y2VkZDMwYzgxNTdmIGxlZ2FjeS10cnVuaworMTY1MjggYzFmYzQwNjY0NjAzODJmM2QzMzkyMjc2ZWQ4MzM0Mjg3MTJhMDllYSBsZWdhY3ktdHJ1bmsKKzE2NTI5IGZkYmM4NzMwZDM1Njk4OTcwZGRkZTQwZjk1NTNhZWQwZTkyZmM0MGUgbGVnYWN5LXRydW5rCisxNjUzMCBiMWI0NzRjYzg5NjY0MzdkYTRlYTIxNGVlMTY2NTE0NzhjYTczMTY4IGxlZ2FjeS10cnVuaworMTY1MzEgZGFkMDEzMTdiZWQ3MmZhZjcwNWViNTA5NmYxOWQyOWYzMTIyN2IxMSBsZWdhY3ktdHJ1bmsKKzE2NTMyIDhiYmMwZTY0MzJhYjQ4MmJiODc4YmNkOTc4MzYwMzY2MTY2NTIwZWMgbGVnYWN5LXRydW5rCisxNjUzMyAzMjNkZTNhOGZmOGViYzI1YjhmMzZiODU1MjA5NTlmY2UzOGM3M2MwIGxlZ2FjeS10cnVuaworMTY1MzQgZjcxY2QyNDUzNWM0MDYxOWNjOTE2MmQ5ZjMyNDUzZDdlMzJjYjMwMCBsZWdhY3ktdHJ1bmsKKzE2NTM1IGIwOGFiMmNkZjc0MmQxMGFkYzgyZjI0MzE3MmEwOGNjODQwYTEzMjggbGVnYWN5LXRydW5rCisxNjUzNiAyY2ZmY2Q3MWQ1ZTQxNDcxNDgyZDNjY2NhNGJhM2MxMTZlNTU2NDg5IGxlZ2FjeS10cnVuaworMTY1MzcgZWVhNTEyNzVhY2JmYjQ0MmZhZWRhYzQzZmQwM2Y4NWYzYWZhZWYwMCBsZWdhY3ktdHJ1bmsKKzE2NTM4IGI2ZDkzZGJhMTIwZWFiNWQ1NjEwMjIzN2MzZjIzOGE2ZGY1MjhmMjkgbGVnYWN5LXRydW5rCisxNjUzOSBmMWM5N2FmNGM4NDcwOWJlNjJhNzBmNjZiMDRmZjExMzA4MDg3ZGNkIGxlZ2FjeS10cnVuaworMTY1NDAgOWZiY2ZiZjhhMWQyOTJiOGZlZjAzYmQzOGRmYzU2MzRlNTA1ZDY5ZSBsZWdhY3ktdHJ1bmsKKzE2NTQxIDMzZGYzYjUxNjcxMTllMDUzYjBkZTMyMGFkYzM1NjNhMTIxZjllMTUgbGVnYWN5LXRydW5rCisxNjU0MiBiMzkwM2UwNTAxN2YxNjA0MmE2NTA5MTYwZmE2ODRjNDc4ZmI2MGQ1IGxlZ2FjeS10cnVuaworMTY1NDMgZjZlNGE5ZGQ2N2NkZDNlYTRhY2NlZjc2OTY2NjNhZjIzNTVkOTNjZSBsZWdhY3ktdHJ1bmsKKzE2NTQ0IGFiNDJkNDU0MjQyNDg1MmY5MGQ1OWUzZWYyOGJlMjJhNTQwYjI4NjMgbGVnYWN5LXRydW5rCisxNjU0NSBlMjBmZTAwNTI2ODA5NTU0YzA4YjRmNjFiODhlNGEwY2U2YzgxNjhjIGxlZ2FjeS10cnVuaworMTY1NDYgYWQzOTAyNDBlZmIzYjA5NWFjMWE4ZmJjMTI4ZTA2MmI3YjAyODg2MyBsZWdhY3ktdHJ1bmsKKzE2NTQ3IGZmMTExZDI4OTkwNWQ1MjQ3N2MzNTkxMTA5MTY0ZDdjNzk5NTFiODEgbGVnYWN5LXRydW5rCisxNjU0OCBjMjRmNzc1NWIxZjUyNTUxZDA1YmRiZjM5YjVkMzE0YTlmMTA4NGQwIGxlZ2FjeS10cnVuaworMTY1NDkgMWMxODYwMzA2ODgyMjk3MTZjZWUzYWJiMTMzN2JjZWMyNmM1YzZkOCBsZWdhY3ktdHJ1bmsKKzE2NTUwIDQyMDQ1NjRhYmYyMGM1M2ZmZWE2NGM2NTAwYWIxY2Y4MjkwN2QxMGEgbGVnYWN5LXRydW5rCisxNjU1MSA2NjU3OTU2YWYzMWUwYWE2NWZkMDU4ZThmZDUzYjgyZWJiZmEyNGM3IGNucmktMTYtc3RhcnQKKzE2NTUyIGM5MzY4N2Q2YzczMTcxOGY5ZmMyNGM5MmIyZDVlMjc1OTlhNmUwMzMgY25yaS0xNi1zdGFydAorMTY1NTMgZjEyOTBhYmEyOWRhNGEyNzhhYWU4ZmM0MmRhOTg4ZDkzMDYyZjQxYiBsZWdhY3ktdHJ1bmsKKzE2NTU0IDFmOTY2ZjBkNDY3Y2ExZGE3NGJmNjI1NTgxMzJiMDUxNDcwNGI3YzYgbGVnYWN5LXRydW5rCisxNjU1NSBmNjY1MTNhMGRlYTVhNTVlMmFmYTI0ZjgxNDQ4ZjFiYTMxZDkzNWZkIGxlZ2FjeS10cnVuaworMTY1NTYgNGVkZDEzZWI3NTlkMjZjM2Y2MDhhNjg3ZjExN2EyMzYzMWYxNzFjYiBsZWdhY3ktdHJ1bmsKKzE2NTU3IGM2NmU5OTFiNWYyMTdjYmE2OThkN2QwNzg3MGNjZjM0MmE2YzliMzYgbGVnYWN5LXRydW5rCisxNjU1OCAwNjM3NDEzZTU5Mzk3ZTc0ODVjNWE1NjhmNmJlOWRhZDcyNjY1ZmVmIGxlZ2FjeS10cnVuaworMTY1NTkgMWI3ODEzNTc1YWY3ZGM5NDI4ZGZlYTZhZjYwMDllMzE0OGU5MDE5NSB1bmxhYmVsZWQtMS44LjIKKzE2NTYwIDM1Mjk2OGVlNDBlNjI5YWQyNzgzZmZkYTBjYzViNjc5MjkwNzcyZjQgdW5sYWJlbGVkLTEuOC4yCisxNjU2MCA2ZjdhYjc0YjEyOThkYWM1MWEyMTQzYjJmODNiMmI2ODAzZWExMmQ1IGNucmktMTYtc3RhcnQKKzE2NTYxIDhmYmYzMDdiOTBhNmMyZjRlNDdhZmFkNzRiYTU0ZWU4ODdjYmMwOTAgY25yaS0xNi1zdGFydAorMTY1NjIgMTM2ZDNkNzI2NjZhNzk1M2ZjNzQyZTM4ZGUxNzFhNTBiNWQ1NDdiMSBsZWdhY3ktdHJ1bmsKKzE2NTYzIDRjMTBiYzgxMWZlZGFhZDZhMWI5Yjc5MGY3NzZmOTQwMDE1YTA5NTkgbGVnYWN5LXRydW5rCisxNjU2NCBiYTEzODNjOTg3YzhkZTk4ODI4OTY0MGEzMGIyY2FiNTQzMmUxOTc5IGxlZ2FjeS10cnVuaworMTY1NjUgODI5NWY4NTA2ZWFlYTc1OTZmOTNjNzVjZWMwMTYyNWRkYWFiMTkxZSBsZWdhY3ktdHJ1bmsKKzE2NTY2IDQyYTRhNDE3YjQ3NTAzZmQzMWMxMWNmNTg1MTY1ZmMwYjg4MzI3OWMgdW5sYWJlbGVkLTEuMjMuNAorMTY1NjcgMmM3ODY4OTZlNTQ5ZDRlZWI3NWYxYjQ0YmMzNzhjZWMxNDQ3MDg5ZiBsZWdhY3ktdHJ1bmsKKzE2NTY4IGUwMGQzY2U3MWY4OTNhYmNlNWIxNzY3MGFlOGE4YmZhZjE0NzhiNzAgbGVnYWN5LXRydW5rCisxNjU2OSAwMzFkYWUwOGEwYTk4ODAyZGE2ZGFkZWY2OGEwZjg0YTc4NzlmODhhIGxlZ2FjeS10cnVuaworMTY1NzAgYWM0OGQwNzdlYWFjOTdiYzVjZjMyMjk0ODA0OGRhYWVjOGVmMTU4YyBsZWdhY3ktdHJ1bmsKKzE2NTcxIDU0NjYzMjRiYjgxMTRlZjdiYTg4OWZhOGY0NzFmMjQyNTM3NTc4NjcgbGVnYWN5LXRydW5rCisxNjU3MiBmZDQzNzI3ODc2MTFhYTcxZWNjNjk5ZGJkYjZiOWUwN2U0MGM2OTExIGxlZ2FjeS10cnVuaworMTY1NzMgYjFhN2Y2MWFiNzgxMWIxY2UyOGQ3NGI1MmViMGNlMGYxNDk1YThiMCBsZWdhY3ktdHJ1bmsKKzE2NTc0IGU4YjIyYmM4OGQ5NWVhM2Y3ZjFhZTA1YWJjNTkzNmFiNWYzNjM2MGEgbGVnYWN5LXRydW5rCisxNjU3NSBjNzdmODg3M2RhODQxMzI0ODJjMmRmN2U5NTE2YzI3NmU5MDBlZDkyIGxlZ2FjeS10cnVuaworMTY1NzYgMTE2MjU2MzNkMGY2NzAwZmMwMmU4Mjk0ZThmNTNkZWQ2ZjZjOGZhMyBsZWdhY3ktdHJ1bmsKKzE2NTc3IGRlOTA2NjJmMmVhYjE1NDZjY2VlNWFkNDc3MjIwZDY2MmQ0NzI0YjAgbGVnYWN5LXRydW5rCisxNjU3OCBiYThkYjk2ZWE0ZDlmZDQ1Y2RlN2VlODM2NmNmOWQ1NzFmNTA0NWViIGxlZ2FjeS10cnVuaworMTY1NzkgMzc0ZGE1ODJlYzEyZjRkYWE4ZmViMDZiZGRiZjEwMmUwNTAyMzBkNSBsZWdhY3ktdHJ1bmsKKzE2NTgwIGYzOTY4ZGQxNzExYjI1YWI3Yjc1OTBjNGY1Yjg4ZDFjYjk5NmU1OWYgbGVnYWN5LXRydW5rCisxNjU4MSA3NjIzN2MwY2JmMTMzZjZkYjhhNmRjZDk1YTVhZTY5OWVlM2QxYmQ2IGxlZ2FjeS10cnVuaworMTY1ODIgZjM4ZTMyMWJlOGE0MzY0MTYwMWEyODZlMTBjMGZkOWVmNzY0NzE1ZSBsZWdhY3ktdHJ1bmsKKzE2NTgzIDY0ODczY2YyMGIxNmI0MGY5OTExMzhhZTBjODhmMTllN2RkYmI3ZDQgbGVnYWN5LXRydW5rCisxNjU4NCBhY2QwNzU1ZWU3NzI1MTM4ZjcyNTBmYzQ3N2M0ZDgxZDBmYjA0NjM2IGNucmktMTYtc3RhcnQKKzE2NTg1IDRmNzM3ZmIwNDUyOGRiZGIxZWQyNWNiMmY3NWU0MmM5NTVjZjk3MzAgY25yaS0xNi1zdGFydAorMTY1ODYgNDFhZDM2ZmIwMGVlOTM1ZWZkOTZlM2Y3YjYxNDRlNTI2ZmNjODg3MyBsZWdhY3ktdHJ1bmsKKzE2NTg3IDQ1ZDhmMjNkZjIxODJjMWQ3NjY2OWU0OThmYTRkZTBiMTgzNTBhYzEgbGVnYWN5LXRydW5rCisxNjU4OCA1MWYyOWZjYmQ5YmE1YTMwZTM0ZmJiODkxOGIyNWQ1NWNhZTJjOTNjIGxlZ2FjeS10cnVuaworMTY1ODkgMzNmZjRkNGQ5MWFjM2Q4YjM3NzIzNmY1OTUzMWFiZWRkYTcxNGY3NyBjbnJpLTE2LXN0YXJ0CisxNjU5MCBhZmJiZTY3NGQ1OGEwYmFiZmU5YTljNGY3YzkzYWI3ZTQyMzU2NmJiIGxlZ2FjeS10cnVuaworMTY1OTEgM2MwZjc1YTIxOThmZjE5MTIzMzE4ZTQzY2EzYmUxYzE1ODkyMDU5YyBsZWdhY3ktdHJ1bmsKKzE2NTkyIDY2MjJkNzYzMWNjZmYxZjcwZjUwNWRmMTczMjllYThiMmI3NmY5YmIgbGVnYWN5LXRydW5rCisxNjU5MyA5NWVlZTg2ODYxMWVjNjhmN2MyOTAyZTFhY2IzOWE2ZWMyNGE5NjQxIGxlZ2FjeS10cnVuaworMTY1OTQgOGJkODJjZjM2MWFhNDI0MDg1NGNiNDI4NjE4OTg3YjFkNDViODA5ZCBsZWdhY3ktdHJ1bmsKKzE2NTk1IDM1ZTIyNjY4NmMyZWQ4MDBhMzg3NDg2NzFhZGFjOTMzYzk3ZDc5NWEgY25yaS0xNi1zdGFydAorMTY1OTYgZDQzMDA5N2QxYmZkMTg5OWUzMDQ2NzllNGZkMzA2ODZmNzA2YjdiNiBsZWdhY3ktdHJ1bmsKKzE2NTk3IGM1N2I1NzRlNjc2NjRkYzJjOGMwYmQ0MTMwYzViOWVhNWM3NjY2OTMgbGVnYWN5LXRydW5rCisxNjU5OCBlZWVkN2JjOGEyODNkOTVhMzhjOTMzMjgzN2VlOTFlOTY0MDkxOTg0IGxlZ2FjeS10cnVuaworMTY1OTkgMDg0YzYzZDg1ZjkwODI5NTRkNTUxNjUyODMwN2Y2MGJlMzNmYjRlNyBsZWdhY3ktdHJ1bmsKKzE2NjAwIGExMGRjNzIxNWMxZWMxNzViYzMwNDkxYjYyZDczMjlkYTczYTY1YmQgbGVnYWN5LXRydW5rCisxNjYwMSBjNjM4NjNhYmUxYWE5ZGRlYWIxMmQ2MDdhMDM1OTI5NjQ5NmIwNDM0IGxlZ2FjeS10cnVuaworMTY2MDIgNWZkODBjODJhMTVhOTE0MzQ4NzBlYzZhMWI5YTE4OTFlOTMxNmZkZiBsZWdhY3ktdHJ1bmsKKzE2NjAzIDI1NGY4YjdjNGE4MzgxMzY1OWYyMWRhMTAxZjJlMzE1NDhlNTY0YzAgbGVnYWN5LXRydW5rCisxNjYwNCA2MWNjNTRjMzEzZjZjZDE1ODdmZGNlMTRhMzAxYzhhMDUzODA4NGYzIHVubGFiZWxlZC0yLjU0LjIKKzE2NjA1IDAyZTA4MTZlNGIzNzE3YjlmMDE3MWFmZWRjYTY2NjdjYTUyYTI3NWIgbGVnYWN5LXRydW5rCisxNjYwNiBlNGMzODBlZTkwNzlmNzEzNTI3Mzc1NDJjNzkxZjdkYTZmZDE3ZGZjIHVubGFiZWxlZC0yLjU0LjIKKzE2NjA3IDIzYTYyYTg3NTFiNDc2MmI4NTg5NzI0Y2Q5MTUxYTY5MzM5N2ZhMjIgbGVnYWN5LXRydW5rCisxNjYwOCAxNTExNGUwMTc2NTI5NDYwMzg3YWQxYjgyMmU3YWQ3NTBhZDQzZGFlIGNucmktMTYtc3RhcnQKKzE2NjA5IDQwM2M5NzBkMWE1ZTRhYzljYjFhYTY5Njc3ZGRjMmNiYjllZTBjZGQgdW5sYWJlbGVkLTIuMTA4LjIKKzE2NjA5IDlhY2ZkMDM3Y2I5NGRhMTgzNjA2MDI0MzM4MzRhYmRiYzI5YWQ5NGMgY25yaS0xNi1zdGFydAorMTY2MTAgYzM3ODNhMzNmODRiZjAzNTc4ZTkyNmQ2YjQ2YjM4ZTM4OGQ5NTczNyBsZWdhY3ktdHJ1bmsKKzE2NjExIGIwMTZlYzg3MzhmOWQyM2RlOGYyYjgxNWJlOWViMjVjODJlZmU2YzAgbGVnYWN5LXRydW5rCisxNjYxMiA1MTM2ZTM3ZmY1NDhlNjkxMDE3MzIxNDU5YmZkZWM2ZGZiNmE1NzM0IGxlZ2FjeS10cnVuaworMTY2MTMgNGFlYmQwZjJhMDYyNjkyM2Y1YzE3NjU4MGM1MDRmOTJiMjEyMTQzOSBsZWdhY3ktdHJ1bmsKKzE2NjE0IDYzMWI1ZGY0NGRlNjA5NTEzODllZjcwZmI3M2JlYTcyZmJhMjA3OWYgbGVnYWN5LXRydW5rCisxNjYxNSBiMzY4YWE4MjA4ZjNhMWY0ZTZjZjVhZGJiMTE0MmJlNzg5N2FkOWQxIGxlZ2FjeS10cnVuaworMTY2MTYgMTFkODgyMjBmYjUyMjhmZjhjODIyZDk0ODFiNmYwZjBiMjViYTAwMCBjbnJpLTE2LXN0YXJ0CisxNjYxNyAyYmFkYjMyMjM1NWZjZTQ5ODQzNGM2N2ZiZDQ2YmQ0YTYwMjA1NDlkIGxlZ2FjeS10cnVuaworMTY2MTggOTFkOTVhN2I3ODU4Mzc0MDMxMTliMDhlZjYwYzI3MTE1MDVlOGE5MCBsZWdhY3ktdHJ1bmsKKzE2NjE5IDNhZTA2YzU3ZDA5ZWE4Y2I4MWJkZTlhZjVmMTljOTUzODYxMWY4NWIgbGVnYWN5LXRydW5rCisxNjYyMCA0NjUxNDRhYmYwMmEyZWE5OWUwYzA2NjBkNDgzODA1ZGYxOWJlYjAwIGxlZ2FjeS10cnVuaworMTY2MjEgMWU5ZDFjYzJiYzNmN2FjNThhMTJkZDY3ZWIyNjYxYjlhMzRmMWJmYSBsZWdhY3ktdHJ1bmsKKzE2NjIyIDkyNGYwOTgxYmY3NmRjZDkxNGZhYjUxZDRlMWQyMmZiM2RkMDJhNzAgY25yaS0xNi1zdGFydAorMTY2MjMgOTc1NzNjZjkxZTZhZGU5NDc4YmUwZGI0NjVmZTY2MmVmZGQ2OGJhOCBjbnJpLTE2LXN0YXJ0CisxNjYyNCA4NzQ4OGMzMTEzZjI3NmQ2N2RhNDU1ODg4YjVlMmM1NTQyNjY2MDE0IGxlZ2FjeS10cnVuaworMTY2MjUgMDBhNWM4MDZjZjdjYjhhYmE5NDU2M2YxNTMzNWQ4YTYxNzM2Yzk0YSBsZWdhY3ktdHJ1bmsKKzE2NjI2IGIzN2YwODYzNTAyM2YyNjczYWJmYzI2ZTVjMjc5MGFkZWQ2ODE2NTMgbGVnYWN5LXRydW5rCisxNjYyNyBmYzg3M2NhMGM3ZDNmNDhkN2Y3ZDJiYzhiMWU3ODU5YmZkODVkYWE1IGxlZ2FjeS10cnVuaworMTY2MjggMDUyNTg1MWJhMGI3N2FiNzBjMzQyYzM2N2RkM2UxYWU0NDViNzU2YSBsZWdhY3ktdHJ1bmsKKzE2NjI5IGE1NWU0ODgzZjg4NmI5Y2M5NmY3MDIyMGJiZTM5NmE0ZTdhMDFlYTEgbGVnYWN5LXRydW5rCisxNjYzMCBkZDA0MmY1YThmYTIyMTQ0OGVhYmJkOTAxMGM4MjBjMmFmYTU2ODViIGxlZ2FjeS10cnVuaworMTY2MzEgMDk4ODI1ZTc0YTA1YWQ5MmNkZmU3ZmIwNWVlYWJkOTQxMjhjNDI1YyBsZWdhY3ktdHJ1bmsKKzE2NjMyIDM0OGE3YzE4ZTBlNjNhN2YzMjYzMDVhZTE2ZWRhM2ZiMzQ4ODJlNDYgbGVnYWN5LXRydW5rCisxNjYzMyBiNzMxYTIwNjMwMmFlNzBhOWE0MzQ4ZGNmN2UyYmY2NzhiMDA4NGJiIGxlZ2FjeS10cnVuaworMTY2MzQgYzQ4MDUyOTgwN2FiMzMwNmFhNGZhMzExZDNhZjczZjQ3MjIzMzlkYSBsZWdhY3ktdHJ1bmsKKzE2NjM1IDA3Yjg1ZmM3ZWY2ODRmNzc4M2E0NTU5ZTRhMmJlOTcxZjZmOTljNDIgbGVnYWN5LXRydW5rCisxNjYzNiA2NjU4OWIwNmM2MzMwODYxNGZjZGRkZjcwNjg4ZWJiYzA1MDI5ZmUxIGxlZ2FjeS10cnVuaworMTY2MzcgMDRhMzZlOTNkYzNkZDgwNjZmNTA4MWFiOWU2MGJhOWFkMWMwN2YxMCBsZWdhY3ktdHJ1bmsKKzE2NjM4IDQ1ZWRjMzI1ZTg5YTU3NjkwZDg2ZmVmMmNkMTY4YzZjOTdlYTg3YWUgY25yaS0xNi1zdGFydAorMTY2MzkgOTRhZGQ4OGVmMDhjMDZiNTUxODRmNjJmODFjM2UwMDdkNGVjMzQ0YiBsZWdhY3ktdHJ1bmsKKzE2NjQwIDY2ODJmZjNlMzE4ZjVmMjk0MjgzOWFmYWQ4MWQ2MGIxNmRhZWFhZGIgY25yaS0xNi1zdGFydAorMTY2NDEgYTI5NmZmNTUyMjFmNzEyMGI1NmY3ZWU1N2UwMGIxYjcxODdlYjM0YiBsZWdhY3ktdHJ1bmsKKzE2NjQyIDk5ZjA0MTNlZjc5NWYzMTViMjUxZDE3MmI3MmU5YzA5NTg3M2FhNTAgbGVnYWN5LXRydW5rCisxNjY0MyBiZjhkNTZlMjdjN2JiYTU2ZGZmODQ0N2EwZTQ5YzBmZDA0NzBkNzU1IGNucmktMTYtc3RhcnQKKzE2NjQ0IDk0ZjZlYzg3OTMwYWJlNWVkZDRiZmRhMTIxZTI1MzNlOTY1NGUwZTkgbGVnYWN5LXRydW5rCisxNjY0NSBkNzRhNGE0M2Y0NWZiODhhZGM4N2NjMmRiNjYwMzU2YWQ0ODE1YmUwIGxlZ2FjeS10cnVuaworMTY2NDYgNDY4ZGY1YThjZjRhY2ZkMzQyY2ZmYjNlOTE1NjAwODMwY2Y0N2QwNiB1bmxhYmVsZWQtMS4yMy40CisxNjY0NyA5NmFkMzI0OThkYjc4MjE0ODY5MDFiMDJlMmEzZjMzZDAxOWE4N2UyIHVubGFiZWxlZC0yLjU0LjIKKzE2NjQ3IDFjMmFkYWU0NTA2OTdkZmMzMWM2NjUzM2ZiNzJjODA2M2ZiM2JhYzEgY25yaS0xNi1zdGFydAorMTY2NDggZjNkNWY3MWNjYmI0NWU3MzZmOGNjM2NhNGJhN2UzZTFiNTM4ODI4YiBsZWdhY3ktdHJ1bmsKKzE2NjQ5IDRjM2Y5NzdjZTA2Y2ZlN2NiNWJkNDg3OTFhNWQ1MGY5Zjg4MzNhYmYgbGVnYWN5LXRydW5rCisxNjY1MCBhOTRlMzdlY2RiZWI2ZmI2OGQwZGU2ZGFmZWE5M2Y0MjMyNmM1ZjY5IGxlZ2FjeS10cnVuaworMTY2NTEgYzU4MTQ5YzA2NzBhYTk5MWVkNzQ4YTE2ZDVlZGUxMGIwODQ1ODQwMiBsZWdhY3ktdHJ1bmsKKzE2NjUyIGZjNDlhM2IzODYzYjE5NmM1YzEwYjAwNzczMDJiMjhlNWU3OWRiMzEgbGVnYWN5LXRydW5rCisxNjY1MyBkZmRiNjAxY2VlMWNmNTE0MzViYjMzODZhMmU2YjZiMWYzOGM0YzkzIGxlZ2FjeS10cnVuaworMTY2NTQgNTkyYWMyNzI2NDFkMjJkZjM1ZmY3MTQ3ZDVjOTM0MDE2YTU1N2JmNCBjbnJpLTE2LXN0YXJ0CisxNjY1NCBhNjk4NWQ4OTQ2NDM3NmI5MTczYzlhNTc3YzY3MGI3ZDBiNzY3ZDNkIGNucmktMTYtc3RhcnQKKzE2NjU2IGUyNjNhMjczZTMyMWY5NmU5N2FkYWNjNTMwYjliZWU4MDdiYjkyM2QgbGVnYWN5LXRydW5rCisxNjY1NyBlZThjNWNmYWQzMzVlNmJjNmZkZjRhNzRhOGY2MjQzY2NhZWU5MmEzIGxlZ2FjeS10cnVuaworMTY2NTggNGVmNDYxZGYzMmMxOTFlOTEzMGRjOWJjYjdiOTUxZWEwYTExNDg3MiBsZWdhY3ktdHJ1bmsKKzE2NjU5IDU4ZmVmZWY3MGZhY2I3MzAwYTJlNDU2ZmM3NTY3NjIwOTA4MzgzYzQgY25yaS0xNi1zdGFydAorMTY2NjAgZGY3ZGViMmViYTQxNDEwN2VkZmJjYmFiZTk2NTk1NDY4YTlkNjQ5NyBsZWdhY3ktdHJ1bmsKKzE2NjYxIDgzMDc0NDZiYzZhYWQ2NjBkZDUxMTdlNjMxMThmODBlNzgwYjUyYmMgbGVnYWN5LXRydW5rCisxNjY2MiAzNWZjOTUxMWEzNmZmMmM0N2E2YmE2Njc4MmE0MzAwOWM0NDk2ODZlIGxlZ2FjeS10cnVuaworMTY2NjMgZDAxNGM4YWI2YTgyNDM1M2QzMzAwMWEyMzJiMTAxMDZiODQxN2Q0NiBsZWdhY3ktdHJ1bmsKKzE2NjY0IDI2NmUxMWEyMjZmN2NkODM5YzIyNmYzNDAxNzk5MDZhMjA3YWVjZjYgbGVnYWN5LXRydW5rCisxNjY2NSBlYTVlYjUxZWQwZjY5OGM0YjQ2NjJjZDA3OTA4MjU0OTEzNTA4OTNkIHVubGFiZWxlZC0xLjguMgorMTY2NjYgZjkxMTYxOGEwZWEwZmFjNDZjZTk2ZTJjYjY1Y2QzZjAzOTFkMDJhNyBsZWdhY3ktdHJ1bmsKKzE2NjY3IDFjMDBmZWE5YWU0MGMwZjFmYjQyZmVkM2VhYjM4MjE4ZmNiM2Q5NzAgbGVnYWN5LXRydW5rCisxNjY2OCA3NTVlMjEzNWExOTQ4YThkM2MxMzFmMWZiNzYzYmQzMDRiMjRiNTVhIGxlZ2FjeS10cnVuaworMTY2NjkgYWJmYTRlNGIyZjNlOWFjZTJlZjI4MmRlZGZhZDY3OWRjODg0MWRjMyBsZWdhY3ktdHJ1bmsKKzE2NjcwIDBmNjgwMThjY2U1OGY5ZjFmYTlkYjQyNzZiYmZmNzdlZjdhNjEwNGIgbGVnYWN5LXRydW5rCisxNjY3MSBkZDgzMGM5ZTVjMjE4ZmFlNTkxODI2ZTQwMTQ1ZTMyNDU5NGY4MzhlIGxlZ2FjeS10cnVuaworMTY2NzIgYzRlMzIxODM0MjUwM2FjNjI2N2RhMjE1MTU2ZDMxNWMzYzMyZGExOSBsZWdhY3ktdHJ1bmsKKzE2NjczIDg4MWQzOThhNDRlMDcxMGFlMDBmZDcwNjNlMDNmM2U2M2M1NTcxM2QgbGVnYWN5LXRydW5rCisxNjY3NCBiZjcwNjJlOGVlYWNmNDNlM2U3NjcyZDc3ODQ0ODEzZTA5ZGYyNTFlIGNucmktMTYtc3RhcnQKKzE2Njc1IDMxYTdiMDA0NTU4ZmI3YzNhOTEzZTBkYTFmOTgzZmQ1YzE4YmQ1NDggY25yaS0xNi1zdGFydAorMTY2NzYgMzNmZDYwYWJkNDgyMmM0YWFkNTcxYmU5Nzk2N2EwOTViMjQ4ODg2ZiB1bmxhYmVsZWQtMi4xMDguMgorMTY2NzcgMTVhZDQwODhhNzAwYmZiMDViZDMwMGE4NmFmNzBiYzI5YTUwNTI3OSBsZWdhY3ktdHJ1bmsKKzE2Njc4IDhlZWFmZjk2YjRjMjQ0MjJmYWFmMjcxNmYzMWMyYWFjODAwYzBhZjggbGVnYWN5LXRydW5rCisxNjY3OSAwOTU2NTc4NDcxNWUxYzY2NTVlNjk4OTlmNjkyOWEwMDVmY2YyMTkyIHVubGFiZWxlZC0xLjk4LjIKKzE2NjgwIDNhNWE3ZDI3ZjFiNzJiOWRlMWY5ODhhMThjZDA0NDRiODZkOTEwYTYgbGVnYWN5LXRydW5rCisxNjY4MSA2MjQ5NGE5NmRjY2FiNWFhMjM5ZTY3ZWRlOWFmNjFiNjBlZWVmZGVjIGxlZ2FjeS10cnVuaworMTY2ODIgYzBjMTczNDdkYTViYmVjY2JlZmYxYzc1ZDFlYTNmMDFkYTUwNDQzOSBsZWdhY3ktdHJ1bmsKKzE2NjgzIGFhNDlkMDc0ZjcxNjFiMDcyN2M5NjUzY2FjMDk2OThmYmJiYTUxZGQgbGVnYWN5LXRydW5rCisxNjY4NCA5OGYwOGNhZmUxOWIxMjU0MWVhZjNkMWEzY2E2ZmUyM2Y1NjY5YTMyIGxlZ2FjeS10cnVuaworMTY2ODUgOGYwZmMwYjVmNzg0Y2NkMDZhMGM3MTE0NGZiZGYxZTNhODViNDNmMiBsZWdhY3ktdHJ1bmsKKzE2Njg2IDA4ZmViNTM4YzgzNzE2MGViNDg1ZTljMDQ0Y2IxOTk5NWE3N2E4OTcgbGVnYWN5LXRydW5rCisxNjY4NyAyMTkwYjc1OTk4MzczNGEwYzRlOTRkZjBkNTIxZGM4YTEzYzg2NDJhIGxlZ2FjeS10cnVuaworMTY2ODggMWM1YmRiNjYyM2M4YzExNDg1YzI1ODkxOGZjMzNlOGMxMjQwYmQzNSBsZWdhY3ktdHJ1bmsKKzE2Njg5IDc3YjllMDQxYjU5NWNiNTA5ZDBkODIyNTEwNzQyMDBjNDliOTRmYWYgbGVnYWN5LXRydW5rCisxNjY5MCBjMzMyMGQyNGQ3ZGU0NmFkZDBlZTRiNzMzODAwYmY5MmY4YzZjMmZkIGxlZ2FjeS10cnVuaworMTY2OTEgZTJlYTAwNjIwZWQ2ODk5YTRkNDE3NDY5MDYxNjE1NGI4MTI1Zjc0NCBsZWdhY3ktdHJ1bmsKKzE2NjkyIDA0MzBhMTMwOTU5NmM4NzkwZDM3ZDc2ZmQ3OWY3NzUwZTExYTYwMmIgbGVnYWN5LXRydW5rCisxNjY5MyBkM2JmOTdkNTMyYTA4YjRmMTNmMmQzZjUwNzk1NTM2MWRjNWEyMzkxIGxlZ2FjeS10cnVuaworMTY2OTQgMjVkZTcxOTNmOWZjZWE2NTgzNDUwNGE3NmY1OGRmZjJlOTdjYmVhNSBsZWdhY3ktdHJ1bmsKKzE2Njk1IGEwYjM2NTk4YjMxZDBkMjk4OTkxMTc0NTkzZjRhYmYyZmFmZmFiMmQgbGVnYWN5LXRydW5rCisxNjY5NiA5YzY5YmQxYTI4MjJmMGU1MDVmMDhkZDRjMzQwOGFjMzUzM2NlY2NkIGxlZ2FjeS10cnVuaworMTY2OTcgZTMwYTE5NGRjYTAxNDgyYzRkZTIxYzY4ZGI2NDBmMTU4ZTVlMDdmZiBsZWdhY3ktdHJ1bmsKKzE2Njk4IDBlZmRmNDViZjZiYjZiOGQxNjM4NjA4MzE3ZDljYzM1YmY0MDk0ZWQgY25yaS0xNi1zdGFydAorMTY2OTkgMGFjOTE5Y2E4ZTY5NjI0MDU5ZTg3YTVjY2RlNTA1ZWNiZTc4N2M1NCBsZWdhY3ktdHJ1bmsKKzE2NzAwIDk5ZTE5Yzk4MmY5NDQ1ZGY4Y2Y4YzMxY2YyZmI0MTFkZThhNDE2OGUgbGVnYWN5LXRydW5rCisxNjcwMSA5YzFlNjg5ODQwMjczZjk0MjM3ZTIxNzIyZDVjZmY0ZmQ4NDE2NTM0IGxlZ2FjeS10cnVuaworMTY3MDIgYzQ1YWNjYzhlNmQwMzZmZjc1YWRhNWJjNTE1OGE2OGI2YWE1NzAzNiBsZWdhY3ktdHJ1bmsKKzE2NzAzIDQ0NmMzNjE2YzMyM2IwZjQ3YmZmZWE5YzNiMDFmNjljNzQ5MmU4MzIgbGVnYWN5LXRydW5rCisxNjcwNCA1Mjc1N2JhZjAzMGRkYTBmMDgzOTE0OTUyYTUzNmEyODk3NjMyZWJiIGxlZ2FjeS10cnVuaworMTY3MDUgYjM0N2ZjNWRhZWI3MGM3MDA2ZDM1OGY3ZDRhNTg2ODY4Yzk1NDQzMyBsZWdhY3ktdHJ1bmsKKzE2NzA2IGE0MjU5YmZjYTViZmU4YmEyZjJmMDFmZTAzNGEzMmU5NzUwNGYxOTMgbGVnYWN5LXRydW5rCisxNjcwNyA2YmYxMjgxZWM3NjM5YmRlNDE3MTY4Yzg0ZGE0NTkzNWEyMjIyODAxIGxlZ2FjeS10cnVuaworMTY3MDggNjAyNDM5OWI3OGJmYTYyZjkzZGFkOWIwZjA1ZDA2NTZmZWJkOWZmOSBjbnJpLTE2LXN0YXJ0CisxNjcwOSA5NDE0ZDAzMWEyYzNhNGNiZjY0Y2U4MThmNTg0MjE2NWIxMzU0YTRlIGxlZ2FjeS10cnVuaworMTY3MTAgYzhmZjgwY2VhNGY3YmU2MTkxZDVkN2NjOTYwOTRjY2NmZDZhOGQ1YyBsZWdhY3ktdHJ1bmsKKzE2NzExIDhmNDNlNTkyY2Y5YTRmNjhhNWIwZTUyMWUyZDhjNDE2MjMyZGE4MGUgY25yaS0xNi1zdGFydAorMTY3MTIgZDcwYWVjMmUzNDljZWFiNWU5ZjI0YzhkYzVlMmJmZjIxY2YzODQwZiBjbnJpLTE2LXN0YXJ0CisxNjcxMyA0NjZlNWZmMjg5MjYyMGEwMjdjMmY0OTgxZjVlODgzYmVkOWNmOWY0IGNucmktMTYtc3RhcnQKKzE2NzE0IGY0MDVmY2JhYWVmNWE5NzU0ODBjOGI4MTM4YzkwMDg4ODlhN2ZlMTkgY25yaS0xNi1zdGFydAorMTY3MTUgZTZlZmNmY2YxNzRhODdkZGQ0OTFkYWQxNTA3NzU5MTI2YzY1YjJmMyBjbnJpLTE2LXN0YXJ0CisxNjcxNiBjZjUwMzQ1MGYwN2IyNGM2MmQ2NmQzOTE3OWExZTVjMTkyMjdlMzAwIGNucmktMTYtc3RhcnQKKzE2NzE3IGJkNjdhNGQ2ZjRmOGMxZDZkNzVhZTgyOWZmNjQyMWMzYWNhYTE5MzQgY25yaS0xNi1zdGFydAorMTY3MTggMDgwMjNkMjZhMGNlODc1MDllMjQ2OWFhNWQ2MWE5MzViOGE2MzM5MCBjbnJpLTE2LXN0YXJ0CisxNjcxOSA1OWM2ZTk4MzJhMjA0MjUyNmVlMWRkYTNmMzE1ZDliNzQ0NTlhMDAzIGNucmktMTYtc3RhcnQKKzE2NzIwIDY5M2I2MTU4MTc0NjY5MDdjYmY3NDY0MWM3NDg3NmE2YTdiZDI0NGQgbGVnYWN5LXRydW5rCisxNjcyMSA0ZDE2YzhkZDg5OWM0ZWVhMjEwOTQ2OTFhNzkyNmJlNjMxYTk0ZjA5IGxlZ2FjeS10cnVuaworMTY3MjIgYmMwMTUzYTczOWFlZjQ2N2U1YTJjZDMxYTA3YTliMDFkN2RiZTVmYyBsZWdhY3ktdHJ1bmsKKzE2NzIzIDAzZmE0MDUyOGQxNzlmYWI2NTI4MDc5ODc3MjE4NjJhNzgxMWU3MGYgbGVnYWN5LXRydW5rCisxNjcyNCAwODA5MmQxZWIyNmFmOTdjOTZmYjI3MzgyYWQ0MjA1ZjllNWJhNjNjIGxlZ2FjeS10cnVuaworMTY3MjUgMzM5Njk3NTFlMzUxZmQ3OTA0OWY3ZDk0ZWUzYTdlOWI5NTJiYjExMiBsZWdhY3ktdHJ1bmsKKzE2NzI2IDUyZmNkMDk4NTQ3ZTllY2IzNjgxYTY3NjM4Nzg5MjUwODJiNWI0MTcgY25yaS0xNi1zdGFydAorMTY3MjcgZDA1N2NkNTQzZWQ5NjZkZjAzNjEyYTZjNDJlMDcxMWFkYzc2MGExOCBsZWdhY3ktdHJ1bmsKKzE2NzI4IGM3YjNmZTg0MzM1ODY3NWMyYjcxMWYwNGVkZTc0YjkyNjY1ODZkYzUgbGVnYWN5LXRydW5rCisxNjcyOSAxZDE3YzVlNjdlZjU3MjUyNDg4MDA4YTJmOGFlNTY5YTg1MjZjMzk4IGxlZ2FjeS10cnVuaworMTY3MzAgNjU4YjA4NWUxNzViZjg0N2Q3NmQ2ZTFhMTZjZWYxMjYwYWNiZTE5ZCBsZWdhY3ktdHJ1bmsKKzE2NzMxIGRkZjMwMmQ2OTIxMTNlNmU0YjlkYjIxY2M1Mzc2Y2Q2MTRkNWNiMWUgbGVnYWN5LXRydW5rCisxNjczMiAyYTA0ZmJiN2MwN2Q5NjQ3N2RiMDcyNTZhMmQwOGU2YTY5YTFlOGNhIGxlZ2FjeS10cnVuaworMTY3MzMgYjZlMDdjMjcyNDg3OTAwZmRkOTc2OTBmZjIzM2Q1ODM3MmFhZDVjNiBsZWdhY3ktdHJ1bmsKKzE2NzM0IDI2NmZiNjMwMmYzMTE3ZDcxZjhjMTY3Mzk4NzI1MzA0Y2QxN2JhMTkgbGVnYWN5LXRydW5rCisxNjczNSAzOTI3YTRkOWMyZmIwMmRhMjcxOGYzY2Y0M2Q0YmMwOTk0YTZiY2NhIGxlZ2FjeS10cnVuaworMTY3MzYgZjE5NGQ4YjI0ODY1OTEyYmQxNmMxNzU1MzAxZTliZTFhMzg3N2Q3MiBsZWdhY3ktdHJ1bmsKKzE2NzM3IDRlYWE0NjNjMDMxYTFiZGI1ZTc3OTFjMzcwZDA0MTA4ZTA2ODJkZDQgbGVnYWN5LXRydW5rCisxNjczOCA2MGM3Y2RhMzVjZmE0ODc3ZWNjNWExNTQ4ZTkwMzYyMWNhODU4MDhmIGxlZ2FjeS10cnVuaworMTY3MzkgNzE3MmMyZDhiOTJiNjU4ZjJjZGM2ZDJmNGYyMjJjNzA3M2NlZjdkNCBsZWdhY3ktdHJ1bmsKKzE2NzQwIDRkMTRlZWY4ZWEwNzY1NjhiYTc1MjkwNjcyYzUwMThhYjU4MzAyMmEgbGVnYWN5LXRydW5rCisxNjc0MSAyZTBkMWFlYTljMzc0MWUwNGFkZmY4ZGExNTM3NjIwZjRmNTMyYjkxIGxlZ2FjeS10cnVuaworMTY3NDIgNDRiMWI4MThmMjhlOTI1ODMzMWFkYzRiNGVmMzIzYmI2MGE4YmRlOSBsZWdhY3ktdHJ1bmsKKzE2NzQzIDI1ZmQ5ODQ2YmQ1NDJjMzQ0ZjBjZTU4MDczNDEyM2ViOWMyY2FlMjIgbGVnYWN5LXRydW5rCisxNjc0NCA0NjRhMjE5MGQ5YjY3NmE2OTM1N2ViZmNlY2JmOTU2MzQxOTcyZDA3IGxlZ2FjeS10cnVuaworMTY3NDUgODAwODlhNDUwYzM0ZDBiNWJkYTFmNDZiMWUzYTA2MGI5YTQwNjIwOSBsZWdhY3ktdHJ1bmsKKzE2NzQ2IDg3YWYyYzM0MWI3OWJhMGI1NTkxMDZkNjUwNDhmMjNlYTQxMzliMjYgbGVnYWN5LXRydW5rCisxNjc0NyBlY2U3NWIwN2IxMzYwODAxMGNiNWEyOTdmNGUwY2E1NjNhNTIwZTU4IGxlZ2FjeS10cnVuaworMTY3NDggZDU2ZGQxNTMwY2UxMTMyYzI1N2MxZWZhY2YxMTFjOTA1MWMzNDcwYSBsZWdhY3ktdHJ1bmsKKzE2NzQ5IDMxYjI1YWMxZjAxOWFmMzAzYzY2MmJhMTA3MGFhN2ZmMDI3YzNjMzIgbGVnYWN5LXRydW5rCisxNjc1MCA1NzgwYjE5OGFiYzg5OWVhNzg3NTgxYjQ5ZmNlMWQwYjc4MWNlMzI4IGxlZ2FjeS10cnVuaworMTY3NTEgNjQ4YmE0MDQ0NDU1OWZiNGZhNWRmNDJhNjRiY2RmNDA0NDUwYjRiYSBsZWdhY3ktdHJ1bmsKKzE2NzUyIGFmZGIzZjQ4NWQ4ZjkzZTM4N2YxZTQ3Yzg2YjQ2MGQyOTNjNjI5ZDggbGVnYWN5LXRydW5rCisxNjc1MyA3YTk5NDUwZGEyZDY0ZjdiMjUwNWVmYTRjOTg2YzQ0MDZjNTYyOGI3IGxlZ2FjeS10cnVuaworMTY3NTQgMTkxZjIwZTA0NzNlZTFmZmM0MGU4ZDNlM2I2YzQ4YzRlZGM1NTFlNSBsZWdhY3ktdHJ1bmsKKzE2NzU1IDI2ODk4YTk4ZGI2ZWQwYmMxYWQwNTE0ODI2ODBjZGIyMWJiMDk0MDMgbGVnYWN5LXRydW5rCisxNjc1NiAyOGFmYmM1ZTA3NzAwNGFlNzJkN2YxNzgwMjEzMDZiNjRlOTg2NDc1IGxlZ2FjeS10cnVuaworMTY3NTcgMzcwYWRlODhhNTJhNTQ0Y2JkNjQzOTgyZWY5YTJjYjczODNkNDU2ZCBsZWdhY3ktdHJ1bmsKKzE2NzU4IDFiMTU2ZWY4MjgxYjhiZWFiYWJmYjc5MTU1NTg5YzhlYmY4MGYxMGMgbGVnYWN5LXRydW5rCisxNjc1OSA3MGM0N2FiMDFhODVlMmJlY2UzMGM4ODYwOTFiYzM3NTU2OTAxOWJmIGxlZ2FjeS10cnVuaworMTY3NjAgNzQ0NWQ5OWRhOGRkODgyNTUxNDI2NmYzZGQxNjY5NGIxMWQ0NmJlMiBsZWdhY3ktdHJ1bmsKKzE2NzYxIDgyYTIyZDgyOTYwNzEwZWE5NDY3ODA3ZDA1YWE0MGJkOGI4MDQzYTUgbGVnYWN5LXRydW5rCisxNjc2MiA0OTRjZjVmYjhmMTc0ZWYwNDBjNDgyNWViNGNjZDZiNjI2NzlhMzcwIGxlZ2FjeS10cnVuaworMTY3NjMgOGU4YThkZjBmZTczNGYyYjkwYzhhZTMwNTY3ZWYwMGVhMzlmNmVhNCBsZWdhY3ktdHJ1bmsKKzE2NzY0IGI5MDAyZGE0NmY2OTNhYzdmNDcyODM5OGQ3NzNhYzlhOTA0M2I0NWMgbGVnYWN5LXRydW5rCisxNjc2NSAwYmIwYzcxNjdkMWZjN2IwYzQ3MWZjNGE5MWMwMTQ4N2EyZjgzYzkwIGxlZ2FjeS10cnVuaworMTY3NjYgOGJlNzUyNDA4NWQ2MTk0YTYzODI5MDcyNmM3NzRlMzRmNDY2YzBjYiBsZWdhY3ktdHJ1bmsKKzE2NzY3IDdkZGU3NGMxZWJiZTRjZjUyMzg3OTdlNWZhYjE1N2ZiYzllYzQwYTQgbGVnYWN5LXRydW5rCisxNjc2OCBjOWFhNDllODc0OGU3MTViNGQ1MzcyYWEwMzBkODFlMDllMWQ4NzY1IGxlZ2FjeS10cnVuaworMTY3NjkgNzA3OWFhMDViYmQwNThjOTU2NzkwOWY2OTYzN2RhYWNiZDRlMjA3OSBsZWdhY3ktdHJ1bmsKKzE2NzcwIDJlZTBmNDdmMTRkM2IwYTQ0ZDU4ZjZkNmNiZWY2MGE5MDQzYjAxZDkgbGVnYWN5LXRydW5rCisxNjc3MSBhMjU2YzEwMWJmMjc5NWVjMjFlYTI0MmM5MzU1NjNjZTQ4NGNmY2E2IGxlZ2FjeS10cnVuaworMTY3NzIgNTYwMTc1ODAwYTA3ZTcxMmRkODI2ZGY4MDMxMGI4OTNlYzdjZjQwOSBsZWdhY3ktdHJ1bmsKKzE2NzczIDkxZGRlZWQxMmZhNzAzYTZjYzQ4NzIxYmJiNzBhNzFhOWRjNTMwNzIgbGVnYWN5LXRydW5rCisxNjc3NCA3YjdlZTU4OTAxZmIwZjBhN2UwZjJmMDdkMDkyYzdkODkwNmFkMWYzIGxlZ2FjeS10cnVuaworMTY3NzUgODQxY2Y5MDEyYWMzY2JmZmFhMTgyY2JlZTNiOWQ5YmQyOWFiYjRjOCBsZWdhY3ktdHJ1bmsKKzE2Nzc2IDU1ZTM5ODgyMDViMzQ4MGJjZTdlZDA1ZWUwY2FlMTY4ZDRlM2EwNDggbGVnYWN5LXRydW5rCisxNjc3NyBkOTkxODNjZGJiZGM5N2E5YmI5MTgwZmFjZjFhZDc2M2FmZGFlMjdlIGxlZ2FjeS10cnVuaworMTY3NzggNGVhYmQ3ZDM5MjVmYzk4Yzg5NzYwZGQxMmNlYWFiMzVlNWFiYmI0NiBjbnJpLTE2LXN0YXJ0CisxNjc3OSA4MTU1YThiMzA0NDRhNGE0YTZlZjBmNTBhMzk4Nzk4Y2RmZDFhODg2IGNucmktMTYtc3RhcnQKKzE2NzgwIDZlMmMwZDBjM2ZkNTZkNGFlOTc0YTAzNDE5YzAwNWNlYThjNTQ3OTMgY25yaS0xNi1zdGFydAorMTY3ODEgZGUyYmZjMTVmOWVjZTVhNWJlNDUzMjQyZWRlYjRiMDA1ZTYxYWM4NCBjbnJpLTE2LXN0YXJ0CisxNjc4MiBhYTQyMDI3MDIyNTI2MjcxMWVkNmUwMjY3MTBhMThiMjViMGY4OTc3IGxlZ2FjeS10cnVuaworMTY3ODMgYzI1OGYwNWViODVkYzk4YjM4YTM5NDk1ZWJmN2IxNjFkN2MwYmVjYiBsZWdhY3ktdHJ1bmsKKzE2Nzg0IDRlMjhjYTM0NWNmZWU3NmZiZWQ1NTViOTFkY2JlMzk3ZWEwMGZhOTcgbGVnYWN5LXRydW5rCisxNjc4NSAzZTZlM2QwNWQwMGI3ZDVmMTZjYzg3YjZlNmFiM2RmMzBiMDNkNjEyIGxlZ2FjeS10cnVuaworMTY3ODYgMzA3MTNkNTI4OGRmNDljNDQyNTJlOTA3YjFmYTRjYmJhNzJhMDI4OCBsZWdhY3ktdHJ1bmsKKzE2Nzg3IDhhNGExNzk0MTRkNGFhNDg0MWIzNDBlZDA5Y2JmZmFkZTU1YjY2ZTUgYXZlbmRvcgorMTY3ODkgNThhYzgzMDQwMWJkNWM5NDlmZTA1MWIwYjc5OWZlM2NkOGNkYmI5ZiBhdmVuZG9yCisxNjc5MCA1YWRhOWZhNTQ4MDE1YmViNjlhZjUwNzI4ZGI4ZjAzNjUyYTFmNjYxIGxlZ2FjeS10cnVuaworMTY3OTEgZWI5YTM2MTYzYTllYWE5OTQzMWM5ZWQzNDBkODg2M2M1ODRhNDMxOCBsZWdhY3ktdHJ1bmsKKzE2NzkyIGIyY2Q2NmU1ZWE0YzI0YjczZDUzY2Y2YjhkOTMyZDkxZDEwNTk4OTcgbGVnYWN5LXRydW5rCisxNjc5MyA2M2RlN2YwMGI1YmNjYmU5YmE5N2NiYzQwYWVhNGM5YmM4ZDU5ZGFlIGxlZ2FjeS10cnVuaworMTY3OTQgODhmNGU3MmQ3MjQ1MzlkZGQzMGNmNDQzOWRjZjA3MDBiNzY5YTFmZCBsZWdhY3ktdHJ1bmsKKzE2Nzk1IDcyZjY4MmViOWFkYmU0MWIyYTkyZTU0ZDMxODU0YWJjYzczZTc0MmUgbGVnYWN5LXRydW5rCisxNjc5NiA0M2Y0ZjhkMTU5NzFlYTI0MmZiOTRmMzU0NGNiNDdlMmFjYjM1OTUxIGxlZ2FjeS10cnVuaworMTY3OTcgMWIxMDdjOWJhNzAyMTM2NzlhNzFjY2VhMDA0OGI2NDhjZDY3MjI4MCBsZWdhY3ktdHJ1bmsKKzE2Nzk4IDJjNDI0Mzk1OTRiN2U4MDM0OTEzNjY0YjY4ZDU1Zjg2N2QyMWRiODEgbGVnYWN5LXRydW5rCisxNjc5OSA2MTM0N2VjYjliMDEzN2VlOWZkNTg2NjU0MDNiMzU2N2YzNjM1ZDVhIGxlZ2FjeS10cnVuaworMTY4MDAgNDAwYTVlM2FjNzZjOTRhYWJkOTUxNTkwMjgwMjhlMzUwYzIzYzI4NCBsZWdhY3ktdHJ1bmsKKzE2ODAxIGYzYmZjZWU3NDVhNzYzNmNkZGU4YjM4NmEyZWRmYjVjYWUzYjUxNzYgbGVnYWN5LXRydW5rCisxNjgwMiBlNWE3NGNmY2M5NzFjMDVlYjgyMWM2ODNjNDg5NjQ5OTg1MjA5ZWRhIGxlZ2FjeS10cnVuaworMTY4MDMgZjI3OTJlYWQxZjA2ZWU4ODlkZjI3Zjc4ODZkZGI0NjcxNDJlMzhmZSBsZWdhY3ktdHJ1bmsKKzE2ODA0IGE5NTVmZDVkZTAzNTA1NDhkZWM3ZjQwZDVjNmEzYjY0YTM0OTU5OGQgbGVnYWN5LXRydW5rCisxNjgwNiBhMjg0ZWQyMWEwZGRhZTcxZWNkNWE4MGY3NzQ2MDlhMjU0ZGJjN2I4IE5vbmUKKzE2ODA3IDc4MzRhMTEzY2UyNDgwMTBkYWMwNGY4NDhmYTdjMzhkNTg2M2JmOTIgbGVnYWN5LXRydW5rCisxNjgwOCA5N2Y1Mzg4YTZkY2UwNTdhZjA4NTZiYmNjMjQ4YWQ0YTZlN2Y0NzIxIGxlZ2FjeS10cnVuaworMTY4MDkgNzE2ZTFjNGUzZjc4OTQ3MjZmOTIzYTkwNzQzZTI1MzdhNjE0Mjg1MCBsZWdhY3ktdHJ1bmsKKzE2ODEwIDJlODdiYmI4N2FkNDQwNWM2ZDIxMThkZTgyZTA3MjU2YzExODFiODYgbGVnYWN5LXRydW5rCisxNjgxMSA2NWMxYWJmNDUxZGMwNTMwZjcyZjNkNmFlNjU1ODM4ZThlYmI3YzRlIGxlZ2FjeS10cnVuaworMTY4MTIgZDgwNjllZmNkNzZlNDgzNDdjODBmZWM1NzA5ZmRmOTk3NWZkYmM4YiBsZWdhY3ktdHJ1bmsKKzE2ODEzIDE0M2ZmYmY4N2U1MWJiMWIyMGExNWU4YTE1ZjEyY2ZkMWUzOTk3NzkgbGVnYWN5LXRydW5rCisxNjgxNCAzMGRiYjMwZmYwMTkxOWIwZTU1ZWQyZjBlNWU1NDQ1Y2M4ZTYyNGM3IGxlZ2FjeS10cnVuaworMTY4MTUgNDQzZjNjNzdkODhjZWQ2ODc3YTJkOWYzMDQwZGFhMDBiYmFhODE2NyBsZWdhY3ktdHJ1bmsKKzE2ODE2IDU1ZTRmNDI4OWUxODgzM2I1NzAyZjUxNWY3NTczYTdmMjMzOTRlNDQgbGVnYWN5LXRydW5rCisxNjgxNyA3M2Q5NzZhZmE4ZDQzZjQ5ZTljZjE3MTQyYmIxMWU2MGM1OTZjNWU4IGxlZ2FjeS10cnVuaworMTY4MTggNTkxYWZlMmZjODIzMGI2MDk0ZWY3MzFjMGNkNjEwYjY3OTFiYTJhMSBsZWdhY3ktdHJ1bmsKKzE2ODE5IGYzNjkzODg3NGNlNWFiYjk4MTBkNzJmMTMxMWUwNTE4NjlmN2UxMjYgbGVnYWN5LXRydW5rCisxNjgyMCA5YTA1MjY5NmNhMTIzN2JiNzJjZDE2NTQzZDFlMTY0ZjczYzE1ODFhIGxlZ2FjeS10cnVuaworMTY4MjEgOWNkYjZmOTc5ZmE1NTBhZmZiNTZhZDU5ZjhhM2VkOGEzY2JlYzA4NyBsZWdhY3ktdHJ1bmsKKzE2ODIyIGVkMzY5ZjBhYTMyYjM5NjNhYjlhNDNjZDhhMmVjNTM0YmY3ZDFkYjkgbGVnYWN5LXRydW5rCisxNjgyMyBlZGEwOWY4MjRhOWZiOTA4YzZjNTFhOGViODU4MjdhN2QxOTExN2RkIGxlZ2FjeS10cnVuaworMTY4MjQgNmM5MWFkOWMwZTA2YzNjZWI4NTk1MmU4ODQ3M2I0YTk4NzhhNzFhZiBsZWdhY3ktdHJ1bmsKKzE2ODI1IGZhYTk3MGYxNTQwZmY5NGViODc3MWVhMWQwYzIxZTBiZmU5YjgwYjAgbGVnYWN5LXRydW5rCisxNjgyNiA0OWM3YTRkZDlmNjE1ZDc0M2QzMzZkNmNlYjNkZTMzZmVhNmVmZGExIGxlZ2FjeS10cnVuaworMTY4MjcgNDljODMwNTAwNDgwMWVkYzQxYWFiNTliOTNhYTg4MTFhZTVjYjg0NyBsZWdhY3ktdHJ1bmsKKzE2ODI4IDgyZjc5NjE4YjQ0Mjg1MTgwNmM1ZDBhNDQ2MTgzMjY2MTFiYTM3ODggbGVnYWN5LXRydW5rCisxNjgyOSA2YzdmYTUyMzcyNmZjNTU2ZmFhZjEyOThhNzIyNjYxMDkzNWQzMTViIGxlZ2FjeS10cnVuaworMTY4MzAgM2Q2OGQ1YmNjZDQwNmU4OGQ1YjU0N2FiZTk4NWQ1ZTJkM2VmMWY4OSBsZWdhY3ktdHJ1bmsKKzE2ODMxIDliOTQ2MWE2NTZkZGM1NTdhYzM5YTczOWVjNWEyNGJkYzhlNzM3ZWEgbGVnYWN5LXRydW5rCisxNjgzMiA5YTI5MTg4OWFiNWYxNzg4NDY3Y2UyNjUwMWQ5ZDc3MWZjN2FlZTA5IGxlZ2FjeS10cnVuaworMTY4MzMgMTI4ZjY0MTE5MWMzM2M4OTUzMjViYmY4M2E3N2VmYzljNjVkYTQ5MSBsZWdhY3ktdHJ1bmsKKzE2ODM0IDBkODA1ZTIzOWQ4ZjQ0Y2ZlMjNhNmQ4NmM5ZDVmODhlYTM3NmMyOWEgbGVnYWN5LXRydW5rCisxNjgzNSA1OTg0YzNkNzYxZjc4NDQyZTI4MDkwMzRjOTU5ZDg2OGI4MTkzZTRlIGxlZ2FjeS10cnVuaworMTY4MzYgYjRiMjYxMmVhMzMzMGZkN2NiZWNhMWZjNmE0ODY1Y2M1YTg1NmYxNiBsZWdhY3ktdHJ1bmsKKzE2ODM3IDViMzRiNzBlY2YyMmZkYjRhOTNmMDk1MTIwYjJmNTk0OWZhMzUxZDIgbGVnYWN5LXRydW5rCisxNjgzOCBkNDQ2MDNmMmI5Mjg5YjRhNjgyNzllMDUwZDMxNzkyZDA4MTg3M2JmIGxlZ2FjeS10cnVuaworMTY4MzkgNzQwMjkwYTU2MTkwYTEzM2NkM2ZkMjUzM2IyZWJmNjc3YTQwZGE4MiBsZWdhY3ktdHJ1bmsKKzE2ODQwIDA0NjBjY2NlZmU0ZTNiNmU0OGM2ZGYzZjViOTgxOWY5MzVhYWYwMzggbGVnYWN5LXRydW5rCisxNjg0MSBhZTIyOGE2NDI5M2UxMmRjYmMxMjQ2ZGFhMmI2YjFhODQ1Yzc4ZWFjIGxlZ2FjeS10cnVuaworMTY4NDIgMjE5Y2U5NjIyMzUyNTE0ZGJmMjI0MTczNzM5ZWQxMzE4YmE1ZjMzNSBsZWdhY3ktdHJ1bmsKKzE2ODQzIDY3YTU0NDhjOWEwZjI1YTc0MWM2ZjA1ZGYwMWZlNDBlN2RlZDZjMzMgbGVnYWN5LXRydW5rCisxNjg0NCA1YjBmM2M0MDA2MGZjMTgyMDJmYTgyZjUyYTRkNGM2NjI5MGM4MjdjIGxlZ2FjeS10cnVuaworMTY4NDUgZjVkOGU3M2Q3N2I3ZjViYmI2NThhNmU0MmRhZDc2MjAwNWU1MWFmYyBsZWdhY3ktdHJ1bmsKKzE2ODQ2IGE5NmQ3YzQ1ZDk2MWYzMzYyOTNhYWFlY2YyNTQ2ODE5ZDgyYTExZWIgbGVnYWN5LXRydW5rCisxNjg0NyBkMjZjYzViZGQyNDgyMWU2YWE2YjU0YmJlNTA2NGE0MWM4YmRkZjJhIGxlZ2FjeS10cnVuaworMTY4NDggNzdhNjE1YzkyMTdlMTk5ZTkzY2Q2NjQ3MDhlYTFmODZiY2Y0N2ZkNSBsZWdhY3ktdHJ1bmsKKzE2ODQ5IDNkZGZhMmQ2N2JlNDY3Y2MyZjQ1Y2EwYjAxZGJlN2JmMjQxYTViYmMgbGVnYWN5LXRydW5rCisxNjg1MCA5MWM2NTk5NjhhODAxOGUyNjFmZmIzZDhlMjRhNjVhZmVhMjlkZjhkIGxlZ2FjeS10cnVuaworMTY4NTEgNzliZjZiMzhiN2Q1ZWU5NjhiNjQ4OTcxOGQ5NDczMWY5ZDIwOGQxZiBsZWdhY3ktdHJ1bmsKKzE2ODUyIDMyMDQ1ZDQyM2E3ODY5ZjAwMjU3MmIxYjJmYmVhYjM0OTM3YzU5N2UgbGVnYWN5LXRydW5rCisxNjg1MyA5MWY4NDdhNzgzZDJhMDI3ZjVmNWM4MjU4ZmEwY2FmY2NmZTdlZDhhIGxlZ2FjeS10cnVuaworMTY4NTQgMTgzODUxNzJmYWMwYjcwOTliZDJkMjI2NGRmNjE0ZWQ0NDY2ZjA4MyBsZWdhY3ktdHJ1bmsKKzE2ODU1IGEyOWE4Y2Y1ZTY2ZGQzZjdmMTY3N2RlYmI1MzgyOTBmMTYzZDY1NzUgbGVnYWN5LXRydW5rCisxNjg1NiA4MzA4MDUzOWY3YjRiODQ5OTM4YWMxOGFiOWIyNmU2YTRkM2FiOGY0IGxlZ2FjeS10cnVuaworMTY4NTcgNTNhYzNlMjA2MmVmYTk2ODU1ZjkwMzYyZGQxMDRjZGYzNzk3MWQ5OCBsZWdhY3ktdHJ1bmsKKzE2ODU4IDk4ZTMyNTU0ODY3OTAyNjRjMmZkMDZkMzc3Y2I2NjI0NjRmNWYyNjQgbGVnYWN5LXRydW5rCisxNjg1OSAwMjM0NjgxMTc1MTRmNDhlZGU3MmMxNDIxMjQ1NWJkMTA0MTQ1NDZlIGxlZ2FjeS10cnVuaworMTY4NjAgYTkwNWM1YWEwNjkxY2RiOWVhYTZjNDVlYzE3MmY2Y2Q5YjhhODg2YiBsZWdhY3ktdHJ1bmsKKzE2ODYxIGM0NDQ0ZjY4ZWJmOTY3NzNmYmRhYmM5YTA4NzUwZGVhMmJlYmQ3MzYgbGVnYWN5LXRydW5rCisxNjg2MiAxZjk0YTExZDJiODBiZjQ4NzgxNGJiNjdhNjUwOGZlY2VkMWFmMzgzIGxlZ2FjeS10cnVuaworMTY4NjMgMGE4N2M1Yjc1ZmUzZDVlZjRkNjRhOWNkYjIzZjVhMWJlZmRjNjQxMCBsZWdhY3ktdHJ1bmsKKzE2ODY0IDhjZjU2MTQ3ZDdiNWRiZjlmYjQ3NjI0N2QxYTk4NTdmMTU0OTdjZjggbGVnYWN5LXRydW5rCisxNjg2NSBiOTEzMTI1NjE5YzhiYjc0MGY1MTAxNmZkMTA5ZTFmYWE1NzE2OWNiIGxlZ2FjeS10cnVuaworMTY4NjYgNmUyZGJhNDVjODNlNWRlNDEzYzg2YzRjN2JjZDc3MjU0NDk5NzhhOSBsZWdhY3ktdHJ1bmsKKzE2ODY3IGZlZTBmNDAyZWNjYjRlMDg1ODliODcxMWNiMWNiYjc3MzBmOGEyODEgbGVnYWN5LXRydW5rCisxNjg2OCAyNzViYzRmOWQ1MGQxNzU4ODMwY2U5NDYxNmNkMTg3NjVmZWU4NDc1IGxlZ2FjeS10cnVuaworMTY4NjkgODBhNDE5Mjk0MmNlOTVmMjNiNWUzY2I0NjQ5ZDI4NDgyMDE1NzIyMCBsZWdhY3ktdHJ1bmsKKzE2ODcwIGU4MzAxNjEyZTdkODBiOTM3NTcyM2U5YWE3MWYyZmM3MjY2NjYzNTggbGVnYWN5LXRydW5rCisxNjg3MSA3YTZjNTg2OWY0NTY2NjQyZDk0OWNjZGEwZWNjNjYwZmQxNmI1ZTRjIGxlZ2FjeS10cnVuaworMTY4NzIgNjM2NWE4NWJmNGZiMWNlZjM5MDNmODAzMzg1NmI0ZmMyMmI3MmMwYiBsZWdhY3ktdHJ1bmsKKzE2ODczIGNhOGRjMWJhZTY3ZDdkYzk3YTc3ZjFlMjk0YmE5NWIwOTAxMzI2ZWUgbGVnYWN5LXRydW5rCisxNjg3NCBmNjlhMzcyNDA5ZmMwZjAxMmQyNGUzZGY4NTQwYjI5YmRkZDU0YTM1IGxlZ2FjeS10cnVuaworMTY4NzUgZDAzNDhhMjZiMDkzOWViYWJjYTYzMDVhNzhkNGNhNmFlMGYxZTA1MCBsZWdhY3ktdHJ1bmsKKzE2ODc2IGRjMmRlZGNhOTNmNzBlY2IxZmY1NzFjNTYwZWEwNzRjNmU3YTA5MmQgbGVnYWN5LXRydW5rCisxNjg3NyA2NTMxZmIxYzg3OWZlOTE4ODdjZTcxMGMyMjkyYmM4OWE2ZThmMDJkIGxlZ2FjeS10cnVuaworMTY4NzggYzcyMmI0YzQyMjlhNjExNTRjOWJmYzJlZmMxY2NkZGJmNjNkYmNlMCBsZWdhY3ktdHJ1bmsKKzE2ODc5IDE3YjdmYzQ0MDE5NWJkNmEwNzM4ODk1YzY3MmMyOThlNDk0NDkwYTMgbGVnYWN5LXRydW5rCisxNjg4MCBjN2ZlNzU2OWU0ZTE3N2Q3NTZmZmQyNmY0NTQ1ZDcxYzJhZjcwYjZmIGxlZ2FjeS10cnVuaworMTY4ODEgYzUwZmVmZmFlODIyMDk0NjhlNDkzMzU1NTA4ZmIwYzJlY2QzZGJhOSBsZWdhY3ktdHJ1bmsKKzE2ODgyIDI1ZWVhODgwNDdlOWVjZmNjYWMyNzlhZTMzNjA5ZmJlYWFiODFkYzMgbGVnYWN5LXRydW5rCisxNjg4MyBkYzJkYjQ1NjJkMDYwMmQ3ZTg0Y2M0ZDlmMmRhMTQ0OTJkZjFlMjQxIGxlZ2FjeS10cnVuaworMTY4ODQgMDM0MDFhZjM2YjVjMGExMmU3OWI1Mjc2NDAzZTM4ZGM5ZTdjYTE0YSBsZWdhY3ktdHJ1bmsKKzE2ODg1IDkyMGZjMjg2ODU0Mzk2ZmQyYTEzNWNhNWFjNjM0Y2QyYTMxYjNlNzIgbGVnYWN5LXRydW5rCisxNjg4NiAyNjZkN2VhZjA2OWU4ZTcyYjAxMGU2NTE2OWVlZTFkOWVhYmNjYWU2IGxlZ2FjeS10cnVuaworMTY4ODcgMWZjZjdiNDM4Y2FiOWI0OTI4YjNiMmNhMzBhZjljYzU0MDY5MGY2YiBsZWdhY3ktdHJ1bmsKKzE2ODg4IDAwODliMzlmZTQ5Y2JjMzIzODhmMGFhYTFmN2U2MjAyYTExNWJlOTcgbGVnYWN5LXRydW5rCisxNjg4OSAzMTRlYzU5ZTRlMTRjZTJmZTU4ZmJkYzVlZTMzYzFmZmViNDZkYzNhIGxlZ2FjeS10cnVuaworMTY4OTAgNzEzZGQ3NmJlMzdiYWM3ODJhNzYyMWI3ZDUzOGRhYjgzNmJmZTU0YSBsZWdhY3ktdHJ1bmsKKzE2ODkxIGM2NGFjODNkM2YxODIyNWRlNDlhNDlhN2U5ODI4ZWE0MzE5MmFkZjUgbGVnYWN5LXRydW5rCisxNjg5MiBmODg0MzEwMWM5NDNiOGE3YjUzZTEyNDJmMWUxZWQ2ZGJlMmUzNDVlIGxlZ2FjeS10cnVuaworMTY4OTMgYjY3ODQ5MWY3ZTExNmY4NTAzZDM5MDMyZGExOTRjMjdiM2ViNjc0NCBsZWdhY3ktdHJ1bmsKKzE2ODk0IGI2NTJhOWFhOTRmMTMzNTFhMTM2Y2NjYTUxOTY3YTc4NTZkMWVjNTggbGVnYWN5LXRydW5rCisxNjg5NSA1MWMyZWVkNjAxNTkwY2Y4M2IyNWY1NzRlYWEyMjdhMTE2MThkZjhhIGxlZ2FjeS10cnVuaworMTY4OTYgNTc3OGY5M2NmMjJiNGMyMTg1N2VmNTU1NDIwNTgxMzlhZTBkYTM0MCBsZWdhY3ktdHJ1bmsKKzE2ODk3IGRlNzQyMzAzYzQ1NjkxMGQ2ZGUxYjY1YTUzYTFmYzZiMjUyM2FmMGEgbGVnYWN5LXRydW5rCisxNjg5OCBlNjc4ZTU4MDQ5YjRjNTQwZDYxM2Y1NzA5ZjE3MTllOGFmYjM1ZDljIGxlZ2FjeS10cnVuaworMTY4OTkgZjE5YmVhNjgxYjY2N2M0Mzg0ZTg0OWZkZjA1YTk3OTk4NmMzYjIxNSBsZWdhY3ktdHJ1bmsKKzE2OTAwIDAyYWJmNzcxN2M5NmUxNzlkOWMzZDRlNTEwMmQ1YTZiMDVlM2Y5OTAgbGVnYWN5LXRydW5rCisxNjkwMSAwYTYzYjQ3ODlkZmNlNGJlMjBjOWRiNWE2Y2RiNmIwNTM2MDVhZjY2IGxlZ2FjeS10cnVuaworMTY5MDIgMDYxMmExY2ZiYmY2ODk1MmE0ZWUyMTZhYTQ1YWUyMDY1YTA3NGRiZiBsZWdhY3ktdHJ1bmsKKzE2OTAzIDViZjU2MzkyNDE5NDM4MzYzZjcxYmZlMjFiZDU1MjU1ZDFjMTdiMjggbGVnYWN5LXRydW5rCisxNjkwNCBkNjM4ZjUzNWY0MDNjOGUxOGVlZThhODRjMzU3OTRjYjIyMDgwMGJlIGxlZ2FjeS10cnVuaworMTY5MDUgNTc5ZTVjNzAzNWUyZDAwMzlkMmI4OWEyMjQ1MDc5ZjI2MDdhZTRjZSBsZWdhY3ktdHJ1bmsKKzE2OTA2IDk1MzQ2MTlkYWFhMTJmNzVkNjVlMzYzYTAwNGU4OTQzZjMyN2IxN2YgbGVnYWN5LXRydW5rCisxNjkwNyBkM2Y1YjQ1M2FkZTg0ZTFkZWE2YWUyMDU3MjZmYmRmMzgwNTNlNzY5IGxlZ2FjeS10cnVuaworMTY5MDggNDY1YzdjMmU4ZjIxNDZkNzYxZmM0MDY3NjAwYzZiYWQ0NWQ0Yzg2NSBsZWdhY3ktdHJ1bmsKKzE2OTA5IGVjNmEwYjRhNjQ3OWE1NTgxNzU1MTgyZTM2YTdkYjA2NDIwYWExYmEgbGVnYWN5LXRydW5rCisxNjkxMCA2MDY3MTRmYWUxYjUwN2M5MDkxYTY4MTZiYmIxMTU4ZWUzYmZhYjgwIGxlZ2FjeS10cnVuaworMTY5MTEgODhkMTFmNDhhMzg0NWI0N2YxMThlOTI4ZjcyOGE1ZWU0NjJmNDA2MyBsZWdhY3ktdHJ1bmsKKzE2OTEyIDAzZGI3YjIzOTJhZTg4YTQwMmI4MjQwZDkyOGNlMDU5MTlkNjk2OWQgbGVnYWN5LXRydW5rCisxNjkxMyA3NDYzOGQyMGM0ZmQwZjQxNjhmNGVjZWMzNmYxMDU0MzJlZTY5MTRlIGxlZ2FjeS10cnVuaworMTY5MTQgNDRlNjY2Y2M4YzA3YmRlZWMyYmExNDViN2Q5OGNiNjYxYmRmMTNhMCBsZWdhY3ktdHJ1bmsKKzE2OTE1IDQ2ODQ4MTEzNWM0OTBiMWEzMTk0MWY1NTUwYWVlYzk5ZDllYWJiYTMgbGVnYWN5LXRydW5rCisxNjkxNiAyZGUwY2MxNzRjM2JlOTFhZTQ1NTAxOWIwYTk1ZDQyZWRkZDY1MjI3IGxlZ2FjeS10cnVuaworMTY5MTcgZTJlZDY5YjgyZDhkNzE4MTg1MjhlMjFjOWU2MGMwNGY4ZmFmYjk3NSBsZWdhY3ktdHJ1bmsKKzE2OTE4IDI5NjM2ZjAyMGQ0YzdiNGE1YjNhZjM0NGM1ZGNkNDZjYTNhOTFiNGQgbGVnYWN5LXRydW5rCisxNjkxOSBmNjU3ZGM4ZmYyNWU5M2I4NzczMDViYmNmYzQ1ZTM2MDE5MWJiMzI2IGxlZ2FjeS10cnVuaworMTY5MjAgZGE2OWI3ZDFmMjBmMGE2Y2JhNGFmMmYwMzZmMmI3ZjQ5Y2IyMDI5ZiBsZWdhY3ktdHJ1bmsKKzE2OTIxIGQ4MDliOWI3NWI5OTM5MzE5Zjc0ODVlNDZiMjYyMmViOTk1ODBkMDEgbGVnYWN5LXRydW5rCisxNjkyMiA0ZGFjOWUzMTQ5YmVhYzk5MGZmMTBlNDQ2OGExMGY5MmI5ZTY2NTFmIGxlZ2FjeS10cnVuaworMTY5MjMgZTk0MzQyZWVhNGY4OGU0MmQ1ZmQyM2E5M2QyYzNhMzExNjRkZWI4YSBsZWdhY3ktdHJ1bmsKKzE2OTI0IDE3ZDMxMjg0NzhjM2I5M2YxYjlkMjU4ODM4ZGI1NDhkMWVkODkwNDcgbGVnYWN5LXRydW5rCisxNjkyNSAzMTQ4ZWZlNTYwNmZjMTgxOGMzM2NjZTM4MTM1ZjJmNjExMjVlMDg4IGxlZ2FjeS10cnVuaworMTY5MjYgMGFiZmNhMDAzNWRjYzgzMmZhMTVjMGUyZDMyNTBjYzA4MWM4ZmFjYyBsZWdhY3ktdHJ1bmsKKzE2OTI3IDg3YjhmMGVhNTBlOGQxNTYwNjUzNDk2M2I3YmRlYzE4YmI2ZDk2MGEgbGVnYWN5LXRydW5rCisxNjkyOCAzZWEyM2UzYzFiMDZlMmE2NDllMzI2OWQyYTk5YTkyNjQxYjNjYWJlIGxlZ2FjeS10cnVuaworMTY5MjkgNGVhY2MwYzkxMjA5MGJhMGU1NmYwNjBkNjJhMWQwZTAwNTJlYjlhMCBsZWdhY3ktdHJ1bmsKKzE2OTMwIDNhM2FkZmRkYzI5ZDFmMDgyM2U2MTVhYzY3NTdiOWVjYTc2NzMyZjIgbGVnYWN5LXRydW5rCisxNjkzMSAwZjgzNDFkY2MzY2JjNmI0YWY2ODZmYjNkOTg5OTY2ZmYwYzQ1YWRkIGxlZ2FjeS10cnVuaworMTY5MzIgOTI5ODA5MjBkNWVkMTBkZTViNWZlYzcxZjcxMTEwNTE2ZTdmMWY4NCBsZWdhY3ktdHJ1bmsKKzE2OTMzIGFjODgwOTk1OWQwMTY0NDE0MGU3MjFkYzUxNDkyN2UxMTdlYjllYTAgbGVnYWN5LXRydW5rCisxNjkzNCA0NGY0YTg0YTgwYTgyNWQ4YmYwYzA4MzA5NDNkNTY0NDUxNTIzNTJlIGxlZ2FjeS10cnVuaworMTY5MzUgZjYzMzhkNzRkY2ExMDdhYmE4NmU0N2U2Y2U1YTE5ZTU4NmExZmIxOSBsZWdhY3ktdHJ1bmsKKzE2OTM2IDgwZDQ2NjhmMWUxMDM3YjUyZDQ4NmI1ZTk4ZGFmNDUzODQ4ZWYwZmEgbGVnYWN5LXRydW5rCisxNjkzNyBjMTRjYTIwZDFmYzhkOTViNTExYjIyZjBmM2IwZWRhOGUzYTlkYzgwIGNucmktMTYtc3RhcnQKKzE2OTM4IDczYzU2NGU0YTBmMzUyN2FlYmRlNjZiY2ZiNGIyNzNlNDNmYjVlNDUgbGVnYWN5LXRydW5rCisxNjkzOSBlOGFlNzBjM2FiYjQzYTE3OWNkOWQyYjE3NzE0ZmUyODdlYzg5ZjY1IGxlZ2FjeS10cnVuaworMTY5NDAgMjY4OTY3Yzk5MzRhMDU4NjQxNmMzYjQ4NmU3OWJmNTFiOTcxOTYzNSBjbnJpLTE2LXN0YXJ0CisxNjk0MSBkYzVmNjdlOGEyYWYxOTM4OTBlM2JkMDU1ZWE4ZjhmZDAxZTkxYmYzIGxlZ2FjeS10cnVuaworMTY5NDIgY2VmNGRhNDE0N2M4M2Q1ODk4OTM5MmU2ZmM3OGEwZjVjZGUxNDU3NyBsZWdhY3ktdHJ1bmsKKzE2OTQzIGZkM2Y4YWNmMTAzZDFlN2EzZjhmMDJlZWFkOTQ5NDI1MDM1NTdmYjAgbGVnYWN5LXRydW5rCisxNjk0NCA0MWViNzU1ZTRlZDE1M2Y2NThiODYzYTljZTZhYmIxM2MxNTBjMGM1IGxlZ2FjeS10cnVuaworMTY5NDUgMjY3NjhlMjFhY2Y5MGVjZjUwMmQ1ZDVjNjU0OWE0ZjY5M2JjMzZhNCBsZWdhY3ktdHJ1bmsKKzE2OTQ2IDAzOTU4M2MwOTBjNDM0MjRiOWE4NDQzMGMxZTc5NWRjZmQyZTlkZWEgbGVnYWN5LXRydW5rCisxNjk0NyAyYzJhZTg2ZGZlODc3MjU5YWIwOTFlOWM5YzNhNjM1NDE2MDNhYTZmIGxlZ2FjeS10cnVuaworMTY5NDggN2FhZDdkOWI2MTZlOWRkYmRkYmJhMDRmMmZiZWE5OTVhMjA1OWVmZiBsZWdhY3ktdHJ1bmsKKzE2OTQ5IDQ0MWRhMmM1ZGU0M2E5NTNhY2I2NWM2NTk3NjcyOGY4NmI2ODllZGMgbGVnYWN5LXRydW5rCisxNjk1MCA0NDIxMjMzNmQ3MWVhOTdlZmU3YWUyMzc0MzJmOTc0MzAzOGI0NzEyIGxlZ2FjeS10cnVuaworMTY5NTEgM2ViMTM1ZDYyZTJhZWQyYzMxZmRjMzI3Y2QzYzJiMjUwZmE4NmZmOCBsZWdhY3ktdHJ1bmsKKzE2OTUyIDc2ZTczMzg5YzM0MDcwMTIwZTY2MmYyN2ZlNTgyNGJmMWRlNTBlNzAgbGVnYWN5LXRydW5rCisxNjk1MyA5OTZjYzA2NzVkYjY3ODY5ZTk2ZTAyNmJmOTg0YmQ2YmI1YTNkMGQzIGxlZ2FjeS10cnVuaworMTY5NTQgYWFlMzdkYzk5ZjU3NTU3MDhjZDFhMDI5NmU2MmI2ZTIzYzRlYTA5MSBsZWdhY3ktdHJ1bmsKKzE2OTU1IDA3MDhjYWM1OWRlZjNhNjY4NDY4MzNiZjVkODZmNDI2NGU0MDQ0OTQgbGVnYWN5LXRydW5rCisxNjk1NiBmNmU1Y2MyYWY2ZjE5N2E0NDMwMzE1YjBmZWQzOTVmODkxNjVjOGYyIGxlZ2FjeS10cnVuaworMTY5NTcgMzExNmIwYjkxMmU5NzVjNjE4NjlkYTU5ZTQ2MDA0ZjI3MTY1MTA3NSBsZWdhY3ktdHJ1bmsKKzE2OTU4IGY3YThjNDBiMzg4MGM0MTM3MzJhMDExZTRlMDczYTZjNmIzZGUxMDEgbGVnYWN5LXRydW5rCisxNjk1OSA0Mjg3MjlmZjg4MjQ5ZmRlYjUxOTdiNmEwMDFkYTRjZmNkNTc3NTJhIGxlZ2FjeS10cnVuaworMTY5NjAgZjcwNDI0ZWJiMzliNGExZjQ4YzIyNDA1ODhkYjRmZThmMjkyYWU4NSBsZWdhY3ktdHJ1bmsKKzE2OTYxIDIyYjU5MGY4Y2Y1MzgyNDEwZTBjMzVkNDBiMDNmYjBlYTkzOTAzY2YgbGVnYWN5LXRydW5rCisxNjk2MiAzMWNkYTg3ZTlmZjRlYTQ3MzE4YTY4YzQzZjk3ZWRkMjczMWIwZjJmIGxlZ2FjeS10cnVuaworMTY5NjMgNzNlNDg4NDcxMjYzMDhiMjBjNzg5OWY5MjFkYTlhYjA1Mjg2YmUzYiBsZWdhY3ktdHJ1bmsKKzE2OTY0IGY1Zjg3ODRhNGMyN2M4YTUxMGFlM2RkZWZiMjNmNzQ0NzRmZTVhODkgbGVnYWN5LXRydW5rCisxNjk2NSAyMWVjNjlhNTYyMjg4NjNkODlmODdjNmQ0OTdhZDIxNjg5NmE5NWVhIGxlZ2FjeS10cnVuaworMTY5NjYgYjhlNWU5MzM4MDFlMzZhZmJkMzVjNjhjODZmYjAzZTY4NzBhNmZkNiBsZWdhY3ktdHJ1bmsKKzE2OTY3IDhkY2RkY2YxMzMwYTc3ZDU4MmUwYjg4OWZhNTEyMDIzZjQ4NzI5MmUgbGVnYWN5LXRydW5rCisxNjk2OCAzMDJkZmQ1M2IzYzhmYzIyNThhZDg4YjIxNzUyMGFkMzVhOWM2MTc4IGxlZ2FjeS10cnVuaworMTY5NjkgNzJkOGEzYjIwM2IxNGY2YjFkYjZmNDM0Mjk5MDJhNDVlNTRlNzczMCBsZWdhY3ktdHJ1bmsKKzE2OTcwIDNkYTViZjNjNWYxNTc0ODY0ZTE4NDNjMjQxYWU4MTg2YjdlZGFmMWEgbGVnYWN5LXRydW5rCisxNjk3MSA0MDQ0N2I2NzIwNjRiNDIwNDk4ZTk2YTcwM2E1NGIyMzA5ZTBiNTEyIGxlZ2FjeS10cnVuaworMTY5NzIgZWMzZTBmZTE3YjNkNzdhOTljMzk4N2M1NTlmNjRkNDMyMjJkN2VjMCBsZWdhY3ktdHJ1bmsKKzE2OTczIGRhZDU0ZDQ0ZDllY2MyNzM0NDY0NzFiZTEzOGZiOTY3MzhmZTk0M2EgbGVnYWN5LXRydW5rCisxNjk3NCAwNTFkY2Q3Y2QxOTkxZGU5ZTE2ZWQwMzBhYWU2YjFmMDRiYzBlNjExIGxlZ2FjeS10cnVuaworMTY5NzUgZTdjOGI1OThmZjc1ZmEyMzk1MzY2ZmQ1ZjIxZDgwYzc0MTI0ODVmMyBsZWdhY3ktdHJ1bmsKKzE2OTc2IGMxMmU3OTZiYzRiNjc1YjA4NDkwOTUwNjZiMWUwZjYwNGI3ZWRhNmQgbGVnYWN5LXRydW5rCisxNjk3NyA2YmYwNjFhMmZjNzgwMmY3NmFlYzYzYjZlZmQzZjg2YjY3NWY3MDYxIGxlZ2FjeS10cnVuaworMTY5NzggNTQ2OGI2ZTNiOTZhN2QxN2Y1OWIwNTUxZjQ3NTE0ZDA4MThkYjY1NSBsZWdhY3ktdHJ1bmsKKzE2OTc5IDUyZmQ0OTZkMzUzMjA5YzUzZjdhN2FjMDJmYzA2NDc1MzE1N2I4ZDggbGVnYWN5LXRydW5rCisxNjk4MCAyN2Q3ZDg5Yzc3NGIxMDAwM2E4ZTgzMzMwYmM2M2Y2NDQ0ZmYwNjI0IGxlZ2FjeS10cnVuaworMTY5ODEgMWI5ZmQwY2JkOTE0OTQ3Y2M0MjFiYTdlNDVhYTA5M2Q3YmE5YWYwMCBsZWdhY3ktdHJ1bmsKKzE2OTgyIGRiYTRhZWM5NzBlNmNkYjUwZDE3NjUxMmMxYjdmMGJjNjBhYjUyMTYgbGVnYWN5LXRydW5rCisxNjk4MyAwMTg0NjU2OGQxNDdkMTY3MDdlZDk1OTJkODY5YjkwNmNmMWFkZDBmIGxlZ2FjeS10cnVuaworMTY5ODQgZTljMmY4MzBmOWJhNTJiZjU5NjhjYzdjZDI2OGQyY2U3MTc1YTJkZSBsZWdhY3ktdHJ1bmsKKzE2OTg1IDUxYTMzYTNiMmJhOTM1NDU3ZmQ1ZmM4NmNhNzlkZWExNGYwYzdhNzEgbGVnYWN5LXRydW5rCisxNjk4NiA5MWRlYWRmZGFlMzZiYWFlNmEyYWQ3Y2NlMmY5ZjY0MTdjMjIzN2EwIGxlZ2FjeS10cnVuaworMTY5ODcgYjhlYWRlZWQ4ZWQzNTE4MDM2NjRhNmI4NzhmMzk5MWZmNzNhZjM5MCBsZWdhY3ktdHJ1bmsKKzE2OTg4IDAxOTI2NWIzYTg1NjU5YzQyNjlhOWNhZDdmNTM4ODAwY2RmZjZhZjMgbGVnYWN5LXRydW5rCisxNjk4OSBjNTYzNzJhZDkzNDM1ZjFmY2M1Y2RjNTBlYjU5OTBlMTEzNTBhMTViIGxlZ2FjeS10cnVuaworMTY5OTAgMmI2YTYzNzU5Yjk3Y2Y5N2YzZTdhMTg0NWQ1N2YxZmZkNGJjNjhhYyBsZWdhY3ktdHJ1bmsKKzE2OTkxIGY2NmU4NjNhMmE1YjFlNDI3ZDZmYzE3MDUyM2JlYzI0MmNlMmM2OTYgbGVnYWN5LXRydW5rCisxNjk5MiAzNWI3OTg5YmEyMGM4YTE1M2E0N2MwMTQ4YmM2MjRmYzFkMmVmYjA3IGxlZ2FjeS10cnVuaworMTY5OTMgOGQxYTA1OWFlOTlkNDRlMjI2YTNlMjUzMDhiOWNhNGVmODkwMGU3ZiBsZWdhY3ktdHJ1bmsKKzE2OTk0IGFjYzcyODU4ZWI3MmM4MzYwMTY5ZmRiMWM4YTE2OWExMzE2OWI3OTIgbGVnYWN5LXRydW5rCisxNjk5NSBhYmJjMDI3OTVjNGRlZmVjYTI5ZThjNjg1OGExNWVmZmUxODIwY2ExIGxlZ2FjeS10cnVuaworMTY5OTYgZGZmMjJkNGE0OGRhZTM2ZmIwYThhNGRiMjc4MGZmOWJkYjNlNmFjNiBsZWdhY3ktdHJ1bmsKKzE2OTk3IDU3NzJjNDk4M2RkODdkMzgyMDI5MDg3ZGJjNmFhYzQ3N2ExZTJjYWQgbGVnYWN5LXRydW5rCisxNjk5OCBlYTcwNDBhYjcyODZmMjJhY2IxMjYwMWI4NThiMjA4MmY3Y2NlZDM0IGxlZ2FjeS10cnVuaworMTY5OTkgODlmODE1M2ZkMWJhMTYxZjgyM2YxOTYxZTNmNGE4NDFiODU2MjJhZSBsZWdhY3ktdHJ1bmsKKzE3MDAwIGM4NWE4MGRiNjg0NWIwNjJmNTc5OTRiYjVlYWEwY2JjOTBmODcyNDYgbGVnYWN5LXRydW5rCisxNzAwMSAyMzg1ZWE1ODcyZTE5M2JlNTRiYjdhMGRmYThiNTMyNjIxYTEzZjY3IGxlZ2FjeS10cnVuaworMTcwMDIgMjg2M2ZiYjEzNWYxZjljYzZjOTdmZjQ1MTBlNGQ0ZGU2YjY5ZWU4ZSBsZWdhY3ktdHJ1bmsKKzE3MDAzIDkzMDEzZTRiYmUwMmUyNGIwMmNhMDM3NzE1YjM2NDU4MDUxYjY0ZGEgbGVnYWN5LXRydW5rCisxNzAwNCBlOTIxMjI4YWY0MzU2N2VmYzkwMTIzNTg3ZTAxNmU5MTQ1ZjBlYjVmIGxlZ2FjeS10cnVuaworMTcwMDUgNTgxNDYwZmNmMTQyNTYwMGU1MWE5YTQxMjc3OGRhNmIwMGNmNWE1NSBsZWdhY3ktdHJ1bmsKKzE3MDA2IDYyMjMzOTdiZDZhMjY2MTg0MzM2MjIwOWZhNjdlM2I4MTlmZTNlZGMgbGVnYWN5LXRydW5rCisxNzAwNyAyNzdmZGQ5NjQ3ZmUwOGIxYTdhYTI3YjgwYWY1ZWIxNjIzYjQ0NGUyIGxlZ2FjeS10cnVuaworMTcwMDggNGU2NmEzYWI3NTdkYTMyZjY2ODFkZWNlYmVkZjBkMDA1YzM4OWZiZiBsZWdhY3ktdHJ1bmsKKzE3MDA5IGJkM2QxNDExYjY2YzFkNDA1ZDYzNjJkNTQ5YjlmNDgxNzRmYmI4YTUgbGVnYWN5LXRydW5rCisxNzAxMCA5YmYxNTlmZjQ5MTI5MjNlZDJkNDUyMDlhMzFlYTU3YTIxMjcwMDJmIGxlZ2FjeS10cnVuaworMTcwMTEgMjExOTc2MDM0Y2Y3ZWUzOTBjMzBmNzk3NjY3NjE2ZWRkNGE3Yzg1NyBsZWdhY3ktdHJ1bmsKKzE3MDEyIDlkOGNlNmVkNGEyOWFiNDIwMDM1ODAxOWI3MmUxYjY5ODI2NjVjNzggbGVnYWN5LXRydW5rCisxNzAxMyA5OTk2NzFmNjlkZjRkMDVmZjc0ZmYxOTEzNTA5YWZiNWIwYjFmNTg1IGxlZ2FjeS10cnVuaworMTcwMTQgNDEyMzRhZTk1ZDJhMDdlNWRiMDM0MTFhZTQ1MmNmMTBlYWQ5NWZmMiBsZWdhY3ktdHJ1bmsKKzE3MDE1IDI3ODdlOTM4MTdjNmEwYTE4ZGZiZTlhMGYzM2U1NjVmYWVjMTQyMjEgbGVnYWN5LXRydW5rCisxNzAxNiAzNGU3ZGU0YWRhNzBhZjNjYmI2MDc2YTNkZGY1ODJiNzRmOTE1MGU3IGxlZ2FjeS10cnVuaworMTcwMTcgOTAwYTE3NzU0MDIxM2NiZmRhNTRmM2IwMWMzZmE0M2VkOGQ3Nzk2YSBsZWdhY3ktdHJ1bmsKKzE3MDE4IGVjNmEyMWY1NWZhMWNlN2Q3NDVhMmRjOTZhZGQwMDE4NDhhODg3ZjMgbGVnYWN5LXRydW5rCisxNzAxOSBkMjIzNjIwYTgxMTI2ODljOGIxZmM4NDYyYjhmZTNlN2E4YjI1NzExIGxlZ2FjeS10cnVuaworMTcwMjAgMWIwZGFiZmZjNTFjZjA5MDA0MGVhYTk3YTM4ZWUxNmRiOTJlN2UzYiBsZWdhY3ktdHJ1bmsKKzE3MDIxIDFjMzQ0NTM3ODg3OWJhMjZiNDgxYjBjMmQ5NWRhY2FmNjA2NTYwZmUgbGVnYWN5LXRydW5rCisxNzAyMiA2ODE2ZGIyNjUwY2FiZjliMDFkY2UwNWZjYWFlNjg5ODg2ZGNlYzdjIGxlZ2FjeS10cnVuaworMTcwMjMgM2FlMTg1YjhmZjAzMWIxNDhlNTY0YzgyN2E0NTM2YjQyMmViNjA3NyBsZWdhY3ktdHJ1bmsKKzE3MDI0IDRlOTA3YTUxYTdhZmZjMWYzY2MyZGI5ODRiYWRlZjlkYzQ1YzFhNGYgbGVnYWN5LXRydW5rCisxNzAyNSA4YzdkY2QxZWQwOGE1N2Y2M2E3ODFlYjk2OGNhMTE5NzUzYzliYzNjIHVuaXZlcnNhbC0zMworMTcwMjYgYzE2ZjJkYzljMDg5ZTg2YTVjY2MwMDFiYTRiN2ExZjQ5NjM1ODY1OCBsZWdhY3ktdHJ1bmsKKzE3MDI3IDk0ZDcxZjJmYzlhODNjZGRjNzAzNWE4OWZlNTIxZmFiN2IzM2FiNmUgbGVnYWN5LXRydW5rCisxNzAyOCAwYzBlZTg4NmZiMDNiNzkwNTdmMDBiYjUxNzIzNzRhMGU3ODZiOTZmIGxlZ2FjeS10cnVuaworMTcwMzEgMTkxMjZlNTU3Y2U4NDFmNzQ1MzYwYzA2NmJjYWI1OWM4ZTM2MTIwNCBsZWdhY3ktdHJ1bmsKKzE3MDMyIGE4NTZjOTJiMWQ3YmYxYTNkZWMwZTMwMWFmY2UzYWU1YzQ1MTc3NzEgbGVnYWN5LXRydW5rCisxNzAzMyA1ODkxMTJjNDgyNzM0MTAwOGFjOGE5MTJjZTJhOWZjZGE1OGYyZWQ1IGxlZ2FjeS10cnVuaworMTcwMzQgNjNlYTJhMmRmMDZmM2QxOGFlNWQ0YjJlYzZlYzJjYzVlMjE4MGQ3NCBsZWdhY3ktdHJ1bmsKKzE3MDM1IGI1ZmIxNzVhZDUyODI1NDFjNmMyM2Q3MDQyZWE5ODk3ZGU2NTM3ZWQgbGVnYWN5LXRydW5rCisxNzAzNiAwNzk3ZmRiMjVhNzc5ZTE3YThiY2RlZjM0MzhjZWIxNjBlOWQxNmJmIGxlZ2FjeS10cnVuaworMTcwMzcgZDMzMTc5Y2RjNTExMjFkM2I5Mjk1NDhkYTgxZWVjOGFiOTc1MzNmOSBsZWdhY3ktdHJ1bmsKKzE3MDM4IGFlMWVkYzZmZjU0MzVmYWRmOGM2M2ZkNzc0Mzc2ZjdkOWZmNWEzNGQgbGVnYWN5LXRydW5rCisxNzAzOSBlNzlkM2NmNDQ0M2VkOWQ3ZmQ3MWY1Zjk0Y2JhZWNkOTExMjNlOGMzIGxlZ2FjeS10cnVuaworMTcwNDAgMmMzMjgzMDk0MzExNjc5NzNlYjU5M2VjYzJhNmVjM2I4NTM0ZDEyYyBsZWdhY3ktdHJ1bmsKKzE3MDQxIDMwM2MzNmU0ODc2OWY5Mzk1MjdjMmQyOGE0MTBlMDY3NjU4MjhkNDggbGVnYWN5LXRydW5rCisxNzA0MiBlNzVlYjRkOGUzMjliNDdhYjM5YTBjYThiNTQzYmVlNTkzMGQ1OGM1IGxlZ2FjeS10cnVuaworMTcwNDMgZDk3NGNmNTQ1Y2E2YWRiM2MyMjMzNWVlNDUxODlkYzFjYTE2OTIxNCBjbnJpLTE2LXN0YXJ0CisxNzA0NCA4YzUyNjkzMzk3ZDI0YTExZGRjYTI4OGE4Y2MwYzVlMjQ2NzAzNGM4IGxlZ2FjeS10cnVuaworMTcwNDUgYzM5NzMzYmUwZGM4MTFhYThiMTEwOWVmOWNjZDliNWM0MThmMWJjMiBsZWdhY3ktdHJ1bmsKKzE3MDQ2IGE0ZjUzMjhjY2YxOTIyN2JmZGYwZTVlNjM4OGM1NTA4M2EwOWNlNGEgbGVnYWN5LXRydW5rCisxNzA0NyBjYmU5NTkwZDIzNDRjNGI4MjZjY2M5YmFhZmI2NWM2MGVlNWJjOTE4IGxlZ2FjeS10cnVuaworMTcwNDggMTFhMjZlOTYzZGM5MDhmNmQ0MDBhZWQwY2NiMzAwOWQ0MTU1MWZhZSBsZWdhY3ktdHJ1bmsKKzE3MDQ5IDlmOWYzMjgwZGM2OGEwMTc4YjY0YzQzMDljODI4ZWY0MGEyOWRlODggbGVnYWN5LXRydW5rCisxNzA1MCAyMDM3N2YxNWI5NmE3Y2JmMWYxOGMxMGU2YmQ0ZjUyNDcyZjBjNDBiIGxlZ2FjeS10cnVuaworMTcwNTEgYWIwZWJmMTJkNGRlMjIyYzA3NDUxYWY5N2JlZWY4ZDIzZmE3NGZlYyBsZWdhY3ktdHJ1bmsKKzE3MDUyIDMxOTI1YWI0NmIyMzU0MmExYzM0N2UzZmMzMTViMjZhZDI3NTQwZTcgbGVnYWN5LXRydW5rCisxNzA1MyAzOTZiNGFiM2I5YzJhOWNiZGNiMjVkN2FlZmE0NzExYzUzMGU0OGMzIGxlZ2FjeS10cnVuaworMTcwNTQgMWYxYTE1NmVkNWFmOGY3YTUwY2UwNWZjODVmODU0MjNhMjRmMmFhNCBsZWdhY3ktdHJ1bmsKKzE3MDU1IGI5N2U2MjAyZjBiMTk2OGJkOTg5MDMxZjJhMTE4NTkwMjNiNmUyOTQgbGVnYWN5LXRydW5rCisxNzA1NiAzZTVkNmUyMDkzZGZlMWM1YmQ5NjU5YjYxYWRiOWI1ZjlkOGNjMThhIGxlZ2FjeS10cnVuaworMTcwNTcgNjNkODU4OTdjNjlmYTRkNTdjMTcxZTNiODlhZDM1MGE3YjM0ZTY3ZSBsZWdhY3ktdHJ1bmsKKzE3MDU4IDU4ZDc5OTVjZTc5NWY3OWZlYjAyY2ZkOWVjYmY4Y2ZlMDE3YmU3OWEgbGVnYWN5LXRydW5rCisxNzA1OSBkOTY0M2U5YzkwZWIxYTVjYzlkMDFlNzg4MjNlYTFjZDMxOTA3MDQ0IGxlZ2FjeS10cnVuaworMTcwNjAgNzRmN2YyMzdmNzM5ZDhkNmM5MWU0NTM3MTY0M2M3NGYzNGM4YWJlNiBsZWdhY3ktdHJ1bmsKKzE3MDYxIDBlNjZiNzc0MDk0YmZlNTUxNDU0Y2U3YjJjOWIxZDUyNTZiYjRlNjkgbGVnYWN5LXRydW5rCisxNzA2MiAzNDgzYTc4ZDEzNWZkNDYyNDFiYzZmM2E2OGU3Y2RmNThkMDQ1NGQyIGxlZ2FjeS10cnVuaworMTcwNjMgM2ZjYWMzNWM3ZjVlMjFmZmVlMTdiMjViNWNjMjI3YzU3OTMzNDRiMSBsZWdhY3ktdHJ1bmsKKzE3MDY0IDA2NzBjNGY5MDE3MTBmMmQwOWMyMjk0N2Y0MTZkNWJmNDc2MzVjMGQgbGVnYWN5LXRydW5rCisxNzA2NSBiMmE4MjkyYzM5YTlhMmRmM2ZlOTkxOTIwMWZhYWE3MzU1MTZkMjE2IGxlZ2FjeS10cnVuaworMTcwNjYgN2IzMmNjZGYxZDRhMjAyNGZjZjM4ZmNiM2ZmMTZkNmE3MzM2NjcwZSBsZWdhY3ktdHJ1bmsKKzE3MDY3IDU5OTRiYjYxOTE2MzMyYzVmZGU5MTRjNTJmNjgyMjkwYWZjMjQyYTkgbGVnYWN5LXRydW5rCisxNzA2OCA5Y2QyZjc5MGM1MGMzODI4NjRlYTM2YWNkMjdlNmQ3YjBkMDU4ZjVhIGxlZ2FjeS10cnVuaworMTcwNjkgYTE0MmVhMjBmZTk0ZjE4NDZmNDVjODlhMjk4MzRmNjlmN2U3YmQ4MyBsZWdhY3ktdHJ1bmsKKzE3MDcwIDQzODg3MWU3MDUzMmIxN2JlMjcwY2I4ZDVkODJmMjYxNjdkMTFkNGYgY25yaS0xNi1zdGFydAorMTcwNzEgYTFiMmZiMTdiZGU3ZWQ3YWI3Y2FmM2YwNmFlMTA5YWY2ODYzMzdhNCBsZWdhY3ktdHJ1bmsKKzE3MDcyIDRlMzY0MGEwNjg1NzIwNmJmMTY2ZWZmNWFiZjY3OGY3M2RiNWRlYzIgbGVnYWN5LXRydW5rCisxNzA3MyA0YWZiMDg4OWExNjVjMTk3NWI0YTEwNjEzMmI4YzJlN2U5ODlhNDc2IGxlZ2FjeS10cnVuaworMTcwNzQgNThmM2Y5MzYyNzlmZjY4MmM2MDVjODFiNTIzZDI0YTk3N2FmZTViNSBsZWdhY3ktdHJ1bmsKKzE3MDc1IGE5OWZhYjBiYTJkZjg4YzlhOGMxNjYwNzAzYjJlNzZjYzVjNGU3YTIgbGVnYWN5LXRydW5rCisxNzA3NiA3NDU5MTU5YmEyNDlmNDZmZjFkNDMwNWY1YmIxOGJjZTJmYTUxYzQ2IGxlZ2FjeS10cnVuaworMTcwNzcgODMwZGU2OGRlMzMwOTVhYjczZThlMTQ4ZDkwY2Q4MTgwZWM4OTc1ZCBsZWdhY3ktdHJ1bmsKKzE3MDc4IGNkZDk1ZDY3YTcxNDI1ODI5ZGU4Yjg1OTA4NTNiZTg3NzBkOTA3M2YgbGVnYWN5LXRydW5rCisxNzA3OSAxZmMzM2RmY2VjNDQyY2NmZjhlM2NmOTQxODAwZTJmMTZjNzVmZDE3IGxlZ2FjeS10cnVuaworMTcwODAgNWZmZjRmZmViMzVkNWM1YWYxZjdjM2ZkMmJiODRjYmRiMDRkOGYzYyBsZWdhY3ktdHJ1bmsKKzE3MDgxIDYzOTY1MjlhNDIxYzllYTQzMTMyNjVhMDIxMzU1NmJiNWVlZjdiODUgbGVnYWN5LXRydW5rCisxNzA4MiBhZTI3NTY0NDQ1N2I1NTRhY2U0NmJlYWY3YjhjOGNmYWRhYjE3ZWI5IGxlZ2FjeS10cnVuaworMTcwODMgZDg3Y2UyZDJlNDI1NzMxNjU2ODQwZTUxMTA3ODA4ZDE0ZTEzMDhmZSBsZWdhY3ktdHJ1bmsKKzE3MDg0IGFkZjNhMjg0YTJjZjFkNjZlNmFiMDE0MmFlNWJjMTdiM2NjMWZlYTkgbGVnYWN5LXRydW5rCisxNzA4NSA5YjIwYTY5YTUwNWUwZTZmMjg4N2I4NjY3MjI2OTMwYzljZTA5M2RhIGxlZ2FjeS10cnVuaworMTcwODYgMzYzODUxY2NjZjJhZWQyMmE3NWY2YWI2YzY3OWI1MGVlMjYyOTQyNyBsZWdhY3ktdHJ1bmsKKzE3MDg3IDY2MGRiY2MxOGI5ZWM2ZTk2ZmNlMWEwNDg4MzE1NGIzZDQ0YmQ0NWUgbGVnYWN5LXRydW5rCisxNzA4OCAxZjc2ZmM5OGI0YzhkZjAwN2IwODg2NTYwYTZlYjM5NzE0NWMxNWJkIGxlZ2FjeS10cnVuaworMTcwODkgZDNmOTJmM2ZjMGIwOTAyNmQ5M2FlYTVmYWY5ODk1YWZjOWMyOWQzYiBsZWdhY3ktdHJ1bmsKKzE3MDkwIDk4NjA4NDI5Y2E2ZTQyOTI0MzBkMjJhM2M4NGRhNGYyY2U2MjI0NGMgbGVnYWN5LXRydW5rCisxNzA5MSBjZDhiODE1Y2IxOTY1N2EwY2Y1MjFhZjBlYjVkZDRiMmNkN2Y3ZTc5IGxlZ2FjeS10cnVuaworMTcwOTIgOTBjYTZhYjI2OTA5ZWMzNDFlMDUxZGIyNGVmZjAzYmVlNzI1YWI3OCBsZWdhY3ktdHJ1bmsKKzE3MDkzIGRjOWQ5ZWM0NDY3OTM5NWEwZjljNmFmNWIxNzM4YWZhNGJlN2UyMDcgbGVnYWN5LXRydW5rCisxNzA5NCAxNWI2ZmMyNWY2MDUwOTZmOTM2NmM3MzcxMjk3OGMxODBiZmFlYjM3IGxlZ2FjeS10cnVuaworMTcwOTUgMjE1NTdiYTRhZmJjZWRiY2ZkZDQ3NmQwOWY5MTdkZTdhYTVhYTA1NyBsZWdhY3ktdHJ1bmsKKzE3MDk2IGJiZmM0OWE4NDM4OTY0MmU5OTBhOGJiYWQ4YzdjYzk2MDQ5MjIwMTAgbGVnYWN5LXRydW5rCisxNzA5NyAxOGRhMmJjNTA1OGMwZmRmOGI3OGY2NDFkN2NjMzYxNGUzNGYxODk3IGxlZ2FjeS10cnVuaworMTcwOTggYmQ5NTBjNTAxNjdmYTFkODFjMTQ0ZjgyZTcxZWM4YWRjYWQzZjJkMyBsZWdhY3ktdHJ1bmsKKzE3MDk5IGYzYThmNjAzNjU2NzA5OTUzYTRlNWQ0YTJmNDQ1MDE3NGVmMDU3YTAgbGVnYWN5LXRydW5rCisxNzEwMCA5ODRhYmQyMGVlYzI2MGQyNWI0MmU0NzNkOWU1NTdmNThjNTA3ZWE5IGxlZ2FjeS10cnVuaworMTcxMDEgZmI4ZmI1M2EyZWZmMDEzYzU2ZmMxYTllZDFiYTcwYmJhZWZlYjQ5ZSBsZWdhY3ktdHJ1bmsKKzE3MTAyIGIxYTBmZDNkZjFmYzhkNjEwN2NjZDlkZmZiMTQ4NmMzMjFjM2RkYTAgbGVnYWN5LXRydW5rCisxNzEwMyA2OGI2MWFhMWFhNGFhMDk0MDRiOWNiMGY2NDQ3OTg4ZDc1ZGJkYTRlIGxlZ2FjeS10cnVuaworMTcxMDQgOGNmNjYzMTI2NzIzYWRhZmU2NGYzZGU0ZTgxZTA5Y2E4MWQ4ODM1NCBsZWdhY3ktdHJ1bmsKKzE3MTA1IDRkNTY1MDk1YWU5OTMzMDE3MjcyZjk3ODAxMTdlOGM4OTZlNTYzOGEgbGVnYWN5LXRydW5rCisxNzEwNiBkZjg5MjM4YWM3NDc3MTkxODc1OGRlZDQ5YTk1NzM0ODc5ODE4MDllIGxlZ2FjeS10cnVuaworMTcxMDcgZTI1YWE1NmE1MjA3ZGY4YTkwYTU3MWQ2M2JiMTBhZWExYWFmY2I1YiBsZWdhY3ktdHJ1bmsKKzE3MTA4IGQzNTdhZDM2N2YyNjBmYmI5Y2IyYjM3MGYyNDE1ZjY2NzY4ZTZkYWIgbGVnYWN5LXRydW5rCisxNzEwOSBlYTk1ZWVlZTA0ZTcyNDkzNDhlNWRhZjdlM2NiZThjMTg2MDVlMGExIGxlZ2FjeS10cnVuaworMTcxMTAgNmFiNThjNTVlMGEzYzA2ODQwNjUwNzBhN2ZmNGZlYjc2NjU1NDQ4YiBsZWdhY3ktdHJ1bmsKKzE3MTExIDc3ZTI0NDNhYmY5YmRlMzI1MTg5ZmNjY2Y2ZWJmMGY1YTBhOTM1ZDcgbGVnYWN5LXRydW5rCisxNzExMiAyZTJmYmVlNTNlNjlmZTZjY2U2ZjA2YmU3N2FhNmZmZTkxYTk4MzM0IGxlZ2FjeS10cnVuaworMTcxMTMgNTljMTkwNTJhZTRmYjAyMWU4MDM3ZTRkMDI4YTgxZjJkZDIwZTY2YiBsZWdhY3ktdHJ1bmsKKzE3MTE0IGJmZTMwNGZjMDZhYjkxMjI0NDQ4NTc2ZDkzYjVmMzQyNDkxMTZkMTAgbGVnYWN5LXRydW5rCisxNzExNSAxMWE4OTNjYmMxYTAxMmE3ZGY4ODU5NGVkYjQyNDcyMWFlMTk1ZDFhIGxlZ2FjeS10cnVuaworMTcxMTYgMjZkYzYyZGU5YjZlMTVhYTU4OWNlNTk3OWZjMTVlYThhNjc4MTY4YiBsZWdhY3ktdHJ1bmsKKzE3MTE3IDA1MzYyN2U3YWMxNDFlNDhlM2MyNWIyNjNhZjY5ODQ2ZDFmYjU5NTEgbGVnYWN5LXRydW5rCisxNzExOCBlNTI1M2I2OTJlOWZiZTM2NWFiNDM2OWNkNzU5YjI0YjhiODZkNjA5IGxlZ2FjeS10cnVuaworMTcxMTkgODE3MmFjOWQyMTk2NmNmYmE1MDlmYmNkZTIxNWVmMjZlY2FkNGJhMiBsZWdhY3ktdHJ1bmsKKzE3MTIwIGVkYTQ0OWY1NGU0NDllZjIyZTczY2FhZDUzY2UzODBhZmZlMzEwNGMgbGVnYWN5LXRydW5rCisxNzEyMSAxMjA1YjE4MGJhOTAzYzZhYTA0ZDdlZGYzYTM0ZTIwMjY1NDY1M2YwIGxlZ2FjeS10cnVuaworMTcxMjIgYmVjYjFlZjBhNTczNTM5MDc2YTY5YjcxYjI3NDdiM2I0ZmYxZjNiYiBsZWdhY3ktdHJ1bmsKKzE3MTIzIDUxNjdlZDY4MzZmYzRhMWFhMjAxYzYxYzAxYzRhNTIzMjNhM2I0MTggbGVnYWN5LXRydW5rCisxNzEyNCAwMTNjZTdlZTcxNjdjMzlmZjM5ZTQ1YTc4OGZmMTcyMmU1YWE1NTE5IGxlZ2FjeS10cnVuaworMTcxMjUgMzE2NDFlYTg5YTUzNGQ3MDZjMWIwODM0ODcxNTdiNTMxOWU0Nzg4MSBsZWdhY3ktdHJ1bmsKKzE3MTI2IGY4YjIwZDkwYzlhZjI1NDA4MDYwZTZjZmU5NmVmODY4OTUxODI0MmQgbGVnYWN5LXRydW5rCisxNzEyNyAwMTk4ZDIwMjAzOTAzNjgzMTQ1NWFmYzlhZDU1ZGE3N2VlYjk3NDVhIGxlZ2FjeS10cnVuaworMTcxMjggZTM3NzllZTk0MmQwYTAwNWViMzI2YWU5YjYxNjYwOTA0ZGI3NmU3MCBsZWdhY3ktdHJ1bmsKKzE3MTI5IDYyZWMwYmZkOTNmODA4YzY3YTNiMjhmNmU0MDdjYTBjZGJmYmVlY2YgbGVnYWN5LXRydW5rCisxNzEzMCBiMjRkYjc3MGRmZmRkYTljMDhkZmNhZGY5YjRlNThiYjIxOWU1OTRmIGxlZ2FjeS10cnVuaworMTcxMzEgYjhiM2Y3NmZmZDUxZDEyNDFhNjgyZjgyZWQ3MmQwMWY4NTI3N2M5MiBsZWdhY3ktdHJ1bmsKKzE3MTMyIDdkNDBiZDA3YjEyOTY2MzViYTgwZWM2YWI4ZmZkN2U3YTNkMmEzZDggbGVnYWN5LXRydW5rCisxNzEzMyAyZGI4MDdmMzQ1YmNjMDc3NTQ2OTFhYzgxNzc3MDZmY2E3OGE4Njk1IGxlZ2FjeS10cnVuaworMTcxMzQgOTc2NTFmMjhiMDA0YzViNmZiZWJkY2NmNWNiMjE1MDY0MjI5MTU1NyBsZWdhY3ktdHJ1bmsKKzE3MTM1IDRiOThkZmRlZDQ5ZjQwYjA5YTYxNDMwZmRlMzE5YzBjYTE1NDk5MjUgbGVnYWN5LXRydW5rCisxNzEzNiBjMGZlMWE4Yjg3MmMwNDA3MzJhOTUzMTU2ZWZiMTFiYWVjMTllNzBiIGxlZ2FjeS10cnVuaworMTcxMzcgNGQ0OTFhZWI5ODBmZDFkMzNhNzZjZTY1MTE0OTM0YWYzNGMyNGI4MCBsZWdhY3ktdHJ1bmsKKzE3MTM4IDRkZmJkOWIzNDEyYmFhZTM2MzYzYzdmMzFhOGY5YjhjYTEwMGVjZTggbGVnYWN5LXRydW5rCisxNzEzOSA1MTExMjNkZDg0MjQzZDM0MmRjMDZmNmY3YWNkYTFlYjg3Zjg4NjZjIGxlZ2FjeS10cnVuaworMTcxNDAgMmRjZmFkM2IyMTE1ZGViNjU3NmFmZDk0MDhjNzY4YTc5NWI5MjcxOSBsZWdhY3ktdHJ1bmsKKzE3MTQxIDMzYzdkZjBjNTQ5ZDcyZmUzZGFmM2Y1NWZhYmRlNjllMTQ4ODMyZTEgbGVnYWN5LXRydW5rCisxNzE0MiBkZGFlZjQ1NTk1ZTJkNzYyYmUzYTAyZmQ4NDc3ZDIxNzQwY2UwZGRkIGxlZ2FjeS10cnVuaworMTcxNDMgMWZhYjkyODM2NzU4ZjgwNDNiY2NhNjUzYjQxYzlmZWUzMjNjYWQyYiBsZWdhY3ktdHJ1bmsKKzE3MTQ0IGFkYTRlYzRjZmZkNTAxZGJjZGE4OGMwOWYwNDI4OWE1ZDRmYjBhY2QgbGVnYWN5LXRydW5rCisxNzE0NSA1OGYxMDBhY2MzYWMwZWZhMmE1OGZhZGUzZjNjMDE3NWY2NzJjOWMzIGxlZ2FjeS10cnVuaworMTcxNDYgNDYwZmYzY2YzMTk1YmUyZGMxZWQ2NDhjNGFhZThiMzI4ZjZlNDI4YyBsZWdhY3ktdHJ1bmsKKzE3MTQ3IDU4ODQyY2JhOGRiY2QyMzFmNTM0ZDI4ZDU2NmVhZjU5NDhiZmYwNDEgbGVnYWN5LXRydW5rCisxNzE0OSAyMmIyZWJkNzgzNzJmMjU1M2ZlZTg4MDcxOTJmMmQ5MDQ4YjllMTliIGxlZ2FjeS10cnVuaworMTcxNTAgMTRhMmI4ZDRmY2ZmMDhiYmYzZDBlNzZmMGRmZGJjYTgzNjBjMDRlZSBsZWdhY3ktdHJ1bmsKKzE3MTUxIDczZjM5ZWE0ZWZiN2E3NGY2OTEzOTk2MmUwZTMyMDU0NzE0ZGFjY2MgbGVnYWN5LXRydW5rCisxNzE1MiA4ZjJlNjEzNGNlYTAwYTUwNmE5NWNlZjk0MzdiZDg3MjQ1M2Y3ODFhIGxlZ2FjeS10cnVuaworMTcxNTMgYjU3ZTM2MGE2ZDE2MWE5YWM2ZGVmYzM2MjY2NmI1NDYyZjU5MzQxZSBsZWdhY3ktdHJ1bmsKKzE3MTU0IDZkZWUxOTg1YzY4MWMxMGFjNTAyYzJlNmM5MDk2ZGIzNTRhOGU0MTkgbGVnYWN5LXRydW5rCisxNzE1NSBjYmU0MjNiM2JhM2EwNjViYTY1ZDYzOGIzOTQwNjhmYzY5YjZlZDQ3IGxlZ2FjeS10cnVuaworMTcxNTYgZWI3YzI3ZThmZTM3ZWU3ZDRhYzYwMmMwMmM5YTE3ZTFiZjQ0MDBkNSBsZWdhY3ktdHJ1bmsKKzE3MTU3IGY1NWI2NzNkOWFjZDc0MjVjYWY5NWUwZGUxMTg5Y2YxOGUxMjcyNjUgbGVnYWN5LXRydW5rCisxNzE1OCBiZWE4ZjE0ZTdkNjFjZjgwZTUzMjNjMWRjOTlkMjczOGMzMGUxMmZhIGxlZ2FjeS10cnVuaworMTcxNTkgOTUxZWIzYWYzNDk0ODNiZDU3MTYzYTQwN2I1MDhhZDIzMjc4OWEwYyBsZWdhY3ktdHJ1bmsKKzE3MTYwIDAxMTVmNDAzZmFkZDhmYjUwZGQzMDRmYzJjNTFiZjcwMGEwYWY3OWMgbGVnYWN5LXRydW5rCisxNzE2MSAzYjg0YzVmZjg5ZGE4OTNmZDlmYmI0NzZkZmM1ZDhhNDFiMjljZmI1IGxlZ2FjeS10cnVuaworMTcxNjIgMDU3YzdjZWI5MmYwNDQ4NmYyOTdiYmY3Njg2M2U2NGYxNTJlN2Y4NCBsZWdhY3ktdHJ1bmsKKzE3MTYzIGY0OGVkOTQ0ODg0YmZmZjJhNTUxNzM0ZjQ5N2QyZGUxOTkxOTcyZDMgbGVnYWN5LXRydW5rCisxNzE2NCA4MDFhMzA0ZjI0OGZiZmY3NjhjZDRlYzJlMDljMGMyMjM2NTNlZjg1IGxlZ2FjeS10cnVuaworMTcxNjUgYWI2MWMzMzVhMDRkY2QxYmY0OTU1YjZkYmMwYTUxNzI4ZjM0MTUwOSBsZWdhY3ktdHJ1bmsKKzE3MTY2IGQ0MWM0MTM3MWRjMTA4OTA0MGRiNzQ3ZTE1ZDMyODU5NGY3OTlkMTQgbGVnYWN5LXRydW5rCisxNzE2NyA2OTQ5YjUwMzY0ZGQwOGM4MjE4Y2U3YjczNGM2OTYxMDRkOTIzMjc3IGxlZ2FjeS10cnVuaworMTcxNjggN2I1M2VjMjcwNGUwMGEzYTVlNWQ3NDhkM2UwZjgyYTI4ZjcwMjVhZCBsZWdhY3ktdHJ1bmsKKzE3MTY5IDQzMmQzMDhjNDVlOGQ4YjQxZmMxYWM3MjQ3MDI4N2FlZGZkZWUyZWUgbGVnYWN5LXRydW5rCisxNzE3MCA1Mzk3ZmRmODhlYzI1YTFiNTgzN2RlYzlmYzg1MjgzOWFiZTQ0MWUwIGxlZ2FjeS10cnVuaworMTcxNzEgMmRlMWZiNTMwMmVkODdlZDY4ZjJiZDk3ZDBmNTMxZThlYmY5MzlkNSBsZWdhY3ktdHJ1bmsKKzE3MTcyIDZkMGY2NGY3ZGVkZDE4MzU0ZTU4YzkyYjNmYWRlNmE3NDc2OWU1YTkgbGVnYWN5LXRydW5rCisxNzE3MyAyMWJmOWZhOTIyNTU4NTNlZTQyY2FjY2MyNDRlNGU0ZWM1Y2E4Mjk4IGxlZ2FjeS10cnVuaworMTcxNzQgNzM1MmJiMTYzMmJjMDFhNDkxNjEyMjAzY2ZhNWM2MjY5NmNjYmNhYSBsZWdhY3ktdHJ1bmsKKzE3MTc1IGVmOTc4NTIwMDg1ZjEwZTU5NzgyNmIyNTlhYTkwNmIxYjdiOWU2NDYgbGVnYWN5LXRydW5rCisxNzE3NiA5M2RhYmZjM2E4M2ZjOGM1MmJhZDg4MmJjYjUzNzY1M2NiOGNhZTYzIGxlZ2FjeS10cnVuaworMTcxNzcgZGViNzI3NDM1ZjM5MDY0ZTM1ZjY4MjVkNzk0OGQyMGVjODkwMmJlYSBsZWdhY3ktdHJ1bmsKKzE3MTc4IDBmNjgwOWViYTUwYTg4Yzc3M2QxZDcxMThiYzM2OTdhZmI1N2E2MmYgbGVnYWN5LXRydW5rCisxNzE3OSA2MzBjOGFiZmE4ZDdjMDhlNTQ1NjdlNzk0OTE1OTIwOWZjMzgzMzhjIGxlZ2FjeS10cnVuaworMTcxODAgM2IyZGZiYzM0Njg5ZGVkMGIwZTcyNjI2ODIyNjdmYTY3MmE5MmNmMyBsZWdhY3ktdHJ1bmsKKzE3MTgxIGEzOGUxMmU0YWZiNzBjNTlkYmU1ZTY0Nzg0NDFhNGFmNzU1MDAxNTEgbGVnYWN5LXRydW5rCisxNzE4MiAzZWRhMzAxMGJjMGEwZGI4NWQxOTgxODI4Yzk2NmJmYTA2OGYxMzQ5IGxlZ2FjeS10cnVuaworMTcxODMgZWE5ZTYyNWIwMWEyYTA1NmQxZTUyMzU5NThlNmZiYzU3ZmYwOWE1OSBjbnJpLTE2LXN0YXJ0CisxNzE4NCAzNTc2M2JlNzVkZGI3Y2E2ZjcyMjhkNTdmODJjY2E0NjRmMzNjZWQ0IGxlZ2FjeS10cnVuaworMTcxODUgZDFkNWUyZGMyOWRiNTBkNzQ4ZDkyZGEwYzhlNDRkZWJlZjlmZjU1MyBsZWdhY3ktdHJ1bmsKKzE3MTg2IDVjNTFjMDk2ZGUzYmZlNmNjMzZiYTcxOGRiZjBlMzRmNTRkMGM4OWIgbGVnYWN5LXRydW5rCisxNzE4NyBhNjY1YmRjNDkyMmY1ZGZiMGRhZGRiYTkyNmRjN2ZjMjNkOGZjOWFiIGxlZ2FjeS10cnVuaworMTcxODggNWRhNDA2ZWJlZjU1MjA0ZjdkYTFiN2E5YmFmYTk4MGNjMDM0ZGEzNyBsZWdhY3ktdHJ1bmsKKzE3MTg5IDY2NWIxOWU3Nzc2YjUzYjIwMWU1NDI5NmVmYjBhMGQ5NGE0Mjc1OGUgbGVnYWN5LXRydW5rCisxNzE5MCBjN2VkNDEyYTA3NWIwMTlkZDUwZDdjZmE2MDY1YjgzNjU2Y2IzNGVmIGxlZ2FjeS10cnVuaworMTcxOTEgMzZkMGI1YjA5NGU0MjFmYjdlNzk2NmEwYjU0YTUzNjM3NjA4MDExYSBjbnJpLTE2LXN0YXJ0CisxNzE5MiA3YTFmZWNjMDhkNzBhOGNhMDBlMjIwNGU1YjIyYzU2ZWJlYjNkMjIyIGxlZ2FjeS10cnVuaworMTcxOTMgNjQ4YTEyYTc4MGQ5MDgzNDRhYmY3ZGY5NGZlMTZjYmViOWI4YjYwMiBsZWdhY3ktdHJ1bmsKKzE3MTk0IDAzNGJmMTA4MTMwNDc1MDIzOGE0NjU2Njk2YzhhN2I5NWZjMGE2MWMgbGVnYWN5LXRydW5rCisxNzE5NSBjYWM5MzkwNzZjN2RiZWU3MjIwMWJkZTMwYzYwYTMzMDg3MjQ2NDI0IGxlZ2FjeS10cnVuaworMTcxOTYgY2QwNDdhODU4YWNlMTliYmI1MWQ3NjBjOGU5OGJlYTg0ODA5ZDE2ZSBsZWdhY3ktdHJ1bmsKKzE3MTk3IDA5ZGNmZjUxOTMyYzc3ZGRlNTJiYmY2MmE2YzVkMTZmMjk0OWFmNjggbGVnYWN5LXRydW5rCisxNzE5OCA2NGMyNWZkMjlkNmY2NzE3YmRjYWZmNzEwYmM4YzY3NjgwM2I3NDdhIGxlZ2FjeS10cnVuaworMTcxOTkgZWQxNDdhNTM3MDFiODAwNjUyNDc4MTRhNTVhYWM5NWRkNjliMDA3NiBsZWdhY3ktdHJ1bmsKKzE3MjAwIDhkZjE2NmNhMDliMjVhZTkyNWI3MjM2MzE1YTM0Njk5YjkwOGY1MDQgbGVnYWN5LXRydW5rCisxNzIwMSA2ZjZmOTY1YzVlMmRiNjRiOTQ3ZDRmY2M3MzgxZTgzYWEwY2IwNzU2IGxlZ2FjeS10cnVuaworMTcyMDIgZmQ0Nzk5NjBlNWUwYzJjMDc3OGVjNDIwODEyNzZiNDE3YTAyYjU0NiBsZWdhY3ktdHJ1bmsKKzE3MjAzIGRkNDc2NmFhMmZkMmY3N2I3NmE4Mjg3NzgyOTg1YTQ4N2E2YWE5NTkgbGVnYWN5LXRydW5rCisxNzIwNCBjYTczMTZhMDA0NjRlYTQ4ZjE4ZjBlYTg1MTlkZGE5MjVkY2ZmZGVmIGxlZ2FjeS10cnVuaworMTcyMDUgYjA2OWQ3ZDljZThhMDBkZmFmNzEyNDBiOTEyZTNhY2QyM2ViY2ZjZiBsZWdhY3ktdHJ1bmsKKzE3MjA2IGNkMGM0ZGQ0OTA0Yzk2MzQxMmJjMmM2NTM4NTczZWU4NWY0M2NlOGIgY25yaS0xNi1zdGFydAorMTcyMDcgZTk5YjBkYjE2ZGQ3ZDNjOTNjYTg4NTg1ZTI2YzBlNjkwY2E4MjgyNSBsZWdhY3ktdHJ1bmsKKzE3MjA4IDc5NThhODhlZGRhMTc3Mzg5NTI3NTkyYThjMGJiODk4NmZkNmQ2MzkgbGVnYWN5LXRydW5rCisxNzIwOSAyZDZjZjY4YWE2NGE1NWQyZmEyYjJmN2NkM2RkNTMyZjA4NGQ1MDMzIGxlZ2FjeS10cnVuaworMTcyMTAgMzg4YzcyMWMyMGNmYjk1MzQxMGU4MDFlZWMxNmU1ZDUzMzE2ZGE1NCBjbnJpLTE2LXN0YXJ0CisxNzIxMSBjZmQwNzQzMjFhYWQ5ZDFhNTJjZGVhZTdlMDBlZGZkOTdmOGU4NTExIGxlZ2FjeS10cnVuaworMTcyMTIgN2U0N2IzNzBlYjY3NTUxOWI4NzUyODY0NzAyNjYxNjA2NGNlYmQ4NiBjbnJpLTE2LXN0YXJ0CisxNzIxMyA2ZmI2MWI4MzQzNWRhMWI2Zjg3ZDZiYjBhOGZjMzI1NTYwMDA4MTM5IGxlZ2FjeS10cnVuaworMTcyMTQgZDM5NWNhYzc4NmIyMjRiMTg2MWUzMjhjZGRhZjMwNTJlMGVhY2NkYSBjbnJpLTE2LXN0YXJ0CisxNzIxNSAwNTA3ZTU2OWQ3NGFlNjUxNmVhZDY3M2RkYmNkMjU0ZjZkYzM5M2EyIGNucmktMTYtc3RhcnQKKzE3MjE2IDhhOTMzZWM0N2VmNzMzOWNkYjE1ZTEyYWM5MmFiODE2NTE2M2IzYmQgY25yaS0xNi1zdGFydAorMTcyMTcgMzlhYjI4NTcyMzA3ZjgxODhhZTU1MmMyYWNkNmQ4OGNlOWE4ZmZlNSBsZWdhY3ktdHJ1bmsKKzE3MjE4IDU3OWExZTczMWZjODQyNGVlODUxZTJkYTBlNWQwNmE3OThhOGE3ZGYgY25yaS0xNi1zdGFydAorMTcyMTkgMWZkY2EwYWY3MWQzNDNlODhlNmJmNTBmNzk1NDQyMTMxNGM5YmJiZSBsZWdhY3ktdHJ1bmsKKzE3MjIwIGFmZDZmYWU0NjdlNTkyNTk1MWJlOTk5OTM5NWVjYTdhM2ZkNGJiMGYgbGVnYWN5LXRydW5rCisxNzIyMSBlZjI3MTRiYjA3MzBhNzUyNTZlODMyYjcwNzcyYTQ3M2I3YTNhYmM3IGxlZ2FjeS10cnVuaworMTcyMjIgOWYwM2QyZmFmMTU2YWRlOWRjMjk2YjEwNWYwNDlmMjVkMjc2ODg1MyBsZWdhY3ktdHJ1bmsKKzE3MjIzIDFjNDM4ZmQ1YzBlOTM0MDA2ZWI0MmI5YzU2M2FhNTEwZTdhMjMzMDAgY25yaS0xNi1zdGFydAorMTcyMjQgNDRmZjdlNDE2M2FhMWUwY2IyMjUwMmJjMDY4NGI4YzhlYWUxOTk0OCByMTYxLWJyYW5jaAorMTcyMjUgNTU4ZWE5MGY1YjFjYTI4YzNmNjA0MmJjNDZkZTEyYjljNTU4MTdjZiBjbnJpLTE2LXN0YXJ0CisxNzIyNiA5YjFkYWYzZGVlMTRkNGU0MWNkMjQ3Y2M3Mzc2ODkxNWE1Mzg1MTEwIGxlZ2FjeS10cnVuaworMTcyMjcgZjFiZDMwNDQ3ZTMwYjU5YzA4ZjAyMWM1OWYxN2M2OGQ4OGM2ODM5ZCBjbnJpLTE2LXN0YXJ0CisxNzIyOCAxZmQ2NGIzYWY3NjAyMjhiYjVlYjUxMzRhNjI0YWUwODFkNjNjNDM5IGxlZ2FjeS10cnVuaworMTcyMjkgNjNkODI0Njc5YjI4NTMzYmZhYTEwZTM0Y2Y0OTdhMDU2ZDBjNDExZCBsZWdhY3ktdHJ1bmsKKzE3MjMwIDdlNGY2MDJkYzY4NTc2YjJlODg2YjBmNTIyMTkyNmQwOWUxMTczM2QgbGVnYWN5LXRydW5rCisxNzIzMSAyZWViNThiNDNlYjE4ODNiZGY0NDM3MmZmNGM4MTFjN2I4MzFiYmY2IGxlZ2FjeS10cnVuaworMTcyMzIgMDVmMTIxMjhjMzhkYmU0MjRjMjk3YjRmY2FhM2RmODc2NzBiZTczZiBjbnJpLTE2LXN0YXJ0CisxNzIzMyA1MzJjOWNlNmM4N2MxN2Q5YmI1MWIwN2FhMGZjYzRjZTM4MDkwYmNiIGxlZ2FjeS10cnVuaworMTcyMzQgYTEwYWZiM2FkMjc1MGMwZTI2MjQxMzRiMWY1OWJjOTAwOTBiNzI0MyBsZWdhY3ktdHJ1bmsKKzE3MjM1IDU0MmQxMGJkMDRmNDc3YTRiODk5ODdmYjEyNjc1MGZlOWU0ZDIyYTAgY25yaS0xNi1zdGFydAorMTcyMzYgY2Q2ZjcwNWM1NGI4YzQ1M2I5Y2QzNjljOGYxNjcwMWFiMTQwNGQwOSBjbnJpLTE2LXN0YXJ0CisxNzIzNyBmNjI5YWYxZDRiZGFhODJjYjVmZTYwOTkyYjM1ODhlZTg4YjdlYmQzIGNucmktMTYtc3RhcnQKKzE3MjM4IDhkNDcxMDE0MTliODRjYWI5M2RjNWFjZjJkMjAxMTEzMmIxNzJkMWUgbGVnYWN5LXRydW5rCisxNzIzOSBjZDJiZTE1M2YyMjhmN2ZjZTc2OTAzZDFjOGM5YTZmNmYzNmMwMTEyIGxlZ2FjeS10cnVuaworMTcyNDAgMzY3Y2E0OTE5MGJjNTI2NWU2ZDcxZWZmYWJkYzc5NTAyNGQ2ZTE3OSBsZWdhY3ktdHJ1bmsKKzE3MjQxIDMyMDE1ODAyNmE0YmM0ZWU5MTY1MGVkOTA3YmQ0MDgzMmUxNGY3M2IgY25yaS0xNi1zdGFydAorMTcyNDIgODg4NTNjMTAzMDg3OTdjODVjYWM1ODg3NTljZjA5MTA3MWU1YTExNCBsZWdhY3ktdHJ1bmsKKzE3MjQzIDZhNWZiZThjNWFhNmE4ODkzOGY4MTIyZGIyMjA3ODRjZGFhOTdkYzMgbGVnYWN5LXRydW5rCisxNzI0NCAzZTM3Njk4Y2Q3MzdmNGY3Y2FjYzQ0OTM5ZWEwMTcyODc0Zjg3YjcwIGxlZ2FjeS10cnVuaworMTcyNDUgOGI0MDY4NTZiYzMxYzEyYWY0Yjc4MGM1NTU2NzI3NzI3NTdhODliMiBsZWdhY3ktdHJ1bmsKKzE3MjQ2IDA1N2JjMTk3MDM0NTI2YTVkZjEwY2U1ZjFhNWJhNDEzM2UwOWYzZDQgbGVnYWN5LXRydW5rCisxNzI0NyBkNjg5YjhjZTlkMGE5MjhiYTY1MjM5MjY4NTIxYjBkZDNlNDAxZGYxIGNucmktMTYtc3RhcnQKKzE3MjQ4IDg3MjE5MTVhNmFjYjgzMDdhNWVjMTIwYTg3MGVlMjI4YjNhYmNiZTUgY25yaS0xNi1zdGFydAorMTcyNDkgYjE3NTk4ZmYyY2RkNzQwMWQ4Zjg2NjUxZjVmZTAwMGZiYmFhNjgwZCBjbnJpLTE2LXN0YXJ0CisxNzI1MCBkOGQxODEyZGZjZTA2NDZiMmZkZTU1OWJkMjYyYTkxYzgxOTI1YTc5IGNucmktMTYtc3RhcnQKKzE3MjUxIGQ4NDY2ODU1MDI2ZjVlOWJkYWJhYjdhMmJhM2Q2OGNkMDMyNmJjMDcgY25yaS0xNi1zdGFydAorMTcyNTIgNjU2M2Q3MWU3ZDk1YWQwYmY4ZGFhMTZjNDQ3MThmMDdkMTM0ODI4MSBjbnJpLTE2LXN0YXJ0CisxNzI1MiA3ODZhNTdiN2RjNmNjZjU2ZTYzMGViOTFhMjYyMDE2YjlhMTQ5ODJmIGNucmktMTYtc3RhcnQKKzE3MjU0IGJlZWZhODVhMzkyNGMzZTIyYTU4MzdiZDNlYjYxODZkNzZlYzg0OWMgbGVnYWN5LXRydW5rCisxNzI1NSBmYzEwYjIyN2MxN2RkYzJmOTE4OTUyYWJjODczNmU2MDQyZGIwMmE1IGxlZ2FjeS10cnVuaworMTcyNTYgOGQwMzVjMmZjMjM0MDg1ODM1MDljODI1ZmU3NTA3ZDg5Mjk3M2I5ZiBsZWdhY3ktdHJ1bmsKKzE3MjU3IGQxYzM5NWM0NzEwMmExNTZiNDIyYjJiZjVkMzA5OTU1OTI0NzliMDEgbGVnYWN5LXRydW5rCisxNzI1OCBhNzZhYjdjOGZjMjkyMWJiYzFlYzAyNTJhY2MwMjkwMDg5M2U5NzAwIGxlZ2FjeS10cnVuaworMTcyNTkgNDMwNjEwN2IxMzk1NTE4ZDlkMzI5N2UxODMzYWJlYTBhZWZkMzcxNyBsZWdhY3ktdHJ1bmsKKzE3MjYwIGE3MDdhNWYxNzEzOTMyNGE4NGRjMmU2ZTQ1MTAzMGVjZGY2Y2IwMmUgbGVnYWN5LXRydW5rCisxNzI2MSBiMTk0NGNlNTQ5MmIyZjJiYzMyZjBmZGE3YTlhMDE0NzcyODkxNzFiIGxlZ2FjeS10cnVuaworMTcyNjIgODYyNjZmNzYzZDQ0MTk3MTdlZDY0MGYyMDdkNjAzODIyODkzZTNlZiBsZWdhY3ktdHJ1bmsKKzE3MjYzIDkwZjA5NDZmNjRlNzgxZTczMmQ2ZjU2N2NlY2JkNDZlNjM1YTkwMjkgbGVnYWN5LXRydW5rCisxNzI2NCA2MDcyNjRlN2JmNTE0MzQwYjYyMTc5MTEzNTBiZjAwNzZjYWRkOGU2IGxlZ2FjeS10cnVuaworMTcyNjUgNmJlNDQ2ZmZhMmQ5YWJjOTEzYTcyZDNjYzZiOTI4ZTBkZGVmOTU2MCBsZWdhY3ktdHJ1bmsKKzE3MjY2IGQ0MmZjM2M3MTczZTVjNzNjN2I4OWZiMmVlYTYwOTFkNGI3NjBmNmQgbGVnYWN5LXRydW5rCisxNzI2NyAxMGJlOTY4MmIwMDNmMjNjMjI3NmQxMjcxZDI1YjViMzFjMTA2ZTVkIGxlZ2FjeS10cnVuaworMTcyNjggMGRjYWU4NDUwNmJhYTljYjczNTJjMjc3NjRiNzE5Yjc2OWJiMTI4ZCBsZWdhY3ktdHJ1bmsKKzE3MjY5IGJhMjJhNWVkNDY0MTBiY2Q5MWFhMGY1NjZjY2EwN2VmYzZiZjhiNGIgbGVnYWN5LXRydW5rCisxNzI3MCBlMzZhZmY1MmZiNGUwZmMzNjA4YzBkNTkyMjI2Y2RkY2M4OGZiYTMyIGxlZ2FjeS10cnVuaworMTcyNzEgYWNkNDExM2UzMDFhM2M3YmEzZDJhN2EwMmRhNDIxMjQ2YTNiMzJhMCBsZWdhY3ktdHJ1bmsKKzE3MjcyIDI0YmUwNDlkMjAzNzkzNDJhNWUwNjc3YzA5NGIzYjRjODM0YTU1MzUgY25yaS0xNi1zdGFydAorMTcyNzMgZjk0NDhmNDRlNzAxY2FkNTZjN2NmNTgxNTk2ZjE1MDM1NTBjOGY1OSBsZWdhY3ktdHJ1bmsKKzE3Mjc0IDY0NjA0MTFmNDczZWZmY2ZkODYwNjVjNmQwN2M3YTkwNjMwZmIwMDggbGVnYWN5LXRydW5rCisxNzI3NSBjNjE2Yjc5MTA3NDU4ZGZlYjRmYWQ1ZThmMTgxMmE3YzI1MGMwMTAzIGNucmktMTYtc3RhcnQKKzE3Mjc2IGMzODRmYWFlNTA1MmM1ZjM5ZTY4M2JhYmEyMDExZGMyOGRlODY3ZDggY25yaS0xNi1zdGFydAorMTcyNzcgZjhlNjY4NDQ3ZTJhMWQyOTBkNTcxYTQ5OWFiYzE2ZGE4NmQ0YzQzMSBsZWdhY3ktdHJ1bmsKKzE3Mjc4IDQ0OGJkZjQ0MTc5MjNmYWI3YWFjZDhmNTU2Mjc4ODYxODMzNGVkODEgbGVnYWN5LXRydW5rCisxNzI3OSBiYjkwODMzMTJkODE0YzRlYjRkYWNmZjE3ZTFjM2RlYzkwMTA3OWE5IGxlZ2FjeS10cnVuaworMTcyODAgY2NiMzdlMmIyNDYwM2I3YzIyMmQ1OGQwNjllMWY3OWFlNjhmYWRhOCBsZWdhY3ktdHJ1bmsKKzE3MjgxIDlmMWYwYTZiYzE4ZTc1N2Y1Mjc0Y2M3MmRlMzRhZmFjNDQ5ODYzYjggbGVnYWN5LXRydW5rCisxNzI4MiA4Mzc2YWQ2NjQ1ZTNkZGM1OTI4N2I1ZWYxZGFhOTU1NGE4MzMzMDk1IGxlZ2FjeS10cnVuaworMTcyODIgMzVjNGZjMTQxNGE1OTg4ODYxNGI5YmU3ODRhMjVmMjMzYmE2Nzk4NCBsZWdhY3ktdHJ1bmsKKzE3Mjg0IDc3ZThlNTUwYWUxM2Y3NWUxYzY0MzcwMjMwNDc1OWU5NDkxMmM5NDcgdW5pdmVyc2FsLTMzCisxNzI4NSA0ZmUwMTQ4MDg4ODVhNDZmNDdiODEzYTM1MjczODc5OTRhYjU3ZTQxIGxlZ2FjeS10cnVuaworMTcyODYgNzg4NmIzYjZjNDBmN2JkNWVlY2FlNWMzNmNmZmYxOGUyNjc5N2NmNCBsZWdhY3ktdHJ1bmsKKzE3Mjg3IDM0Mzc5MTI3ZWUzYjRkOTFmZjA1ZTMwZTU4M2YyNmExNjQ2ODM1N2YgbGVnYWN5LXRydW5rCisxNzI4OCA5ZmEzYzU3MWRhZmYyMDJlMzc3ZDIzMGJkZTNlODIwOTY3ZDE0MTQyIGxlZ2FjeS10cnVuaworMTcyODkgYzA1MDk5ODk0MDVlYzBlZWJhNzZjYjdmMmYxNTlhOTgxYzI3NzA3OCBsZWdhY3ktdHJ1bmsKKzE3MjkwIGUzNDhlZDk0NmQxZjRjMWIwYmMxOGI4NWZmYjlkYmFmYTk5Nzk2NjIgbGVnYWN5LXRydW5rCisxNzI5MSBhYzM5MTc4ZmE4NWZjOWU0YzI0ZTFkMTY5MTYxOWYyZjg2M2JkOTRlIGxlZ2FjeS10cnVuaworMTcyOTIgM2E5MzJjYzY0MzIzM2ZkY2Q4ZGJhYTkyZWY2MGRjMjg4MzQ2YzQyYSBsZWdhY3ktdHJ1bmsKKzE3MjkzIDE5NDQzNTg1Y2NjYzI1NWU4N2M1N2RhN2VhMThkNjRmMTI4ZDg1YzcgbGVnYWN5LXRydW5rCisxNzI5NCBmN2ZkMDk1YzMxYTZhYWM5OWM5ZTI4M2FlNzM1ZWJiMmZkZjdmOGY2IGxlZ2FjeS10cnVuaworMTcyOTUgYzczODA0MWY5NzVkYmU4M2VhNjRiYzFlMWRmNDU4YTIxZGQ0YjViMyBsZWdhY3ktdHJ1bmsKKzE3Mjk2IGY0YzkyYTI0MjExYmRkZDAzMGNlNTQzNWQ3MGIxNzFmNzc2MDg3NDkgbGVnYWN5LXRydW5rCisxNzI5NyBmMDUxYWM4MzQwZjdiOGExZmMwN2YyM2JkYTIyMDlmOTE0NDMxNTEzIGxlZ2FjeS10cnVuaworMTcyOTggOTNiMWRhYjA5NzY3NmQ5Mjk0NzAzMmFjM2ZjMDVjZjJlOTcxZWQwOSBsZWdhY3ktdHJ1bmsKKzE3Mjk5IDUyMGNlN2VjZTI1Mzk4NWFmMDg5ZTYxN2MxNDMwZTc2OGU1NzZkZTMgbGVnYWN5LXRydW5rCisxNzMwMCA1ZDEyZDk2NjBjMmVhOGQzODc3ZTQ4MmQyNjEyNDEyY2RmZDc0OTA1IGxlZ2FjeS10cnVuaworMTczMDEgYzllZTZmNzQ2NzBkYWY1NWQ1ZWIyYTZhMjQ3ZjcxZTQ4YzZlNzI3YyBsZWdhY3ktdHJ1bmsKKzE3MzAyIDNlMzg3NTA3YTk5MTliMDU1MTMyOGNmMmNiNzMyYmUxMDc3MWIxYzQgbGVnYWN5LXRydW5rCisxNzMwMyBmYzViNDA2MTYyNjIzNzNlZjc0NmJkYWQ3ZWYzMWFkZGJjYzEzODBjIGxlZ2FjeS10cnVuaworMTczMDQgZTVjZGNlMmEyYjE2NDlmNmQ2MmU3Mjk0NTk3ZTc3ZGY1YmMyYTkyYiBsZWdhY3ktdHJ1bmsKKzE3MzA1IDBkMDYxM2I5NTc1OGU3YmNmOWQwOTNiNTJlOGI0ZmQ5MDI3MjQzMjYgbGVnYWN5LXRydW5rCisxNzMwNiAwZDEwMjVhZWZlYmZmMjQ4OGM5MzVkNTMzMjk3OTM5MTgxZWEwMDcyIGxlZ2FjeS10cnVuaworMTczMDcgMDE1YTM0YmZiY2NiYTA5OTJiZGE3NDUxOTc4ZjE0YjNiN2Q5NjljMCBsZWdhY3ktdHJ1bmsKKzE3MzA4IDY5MTlkOGUxNGEzMDM2OTAwNjI4OTNlYmY3ZjM4YWVmMjExMGY4OTAgbGVnYWN5LXRydW5rCisxNzMwOSAyMGFjZWI4ZWRmYTVlNmNhNGZhZGY5YzUyOTg3YzQyNDZjMGVlNTBkIGxlZ2FjeS10cnVuaworMTczMTAgMGI2NmQwMzAwZWViZTljMjA3YjlmYzhjYzEwMzE1NzY1YTI2NDA2OCBsZWdhY3ktdHJ1bmsKKzE3MzExIDk1ZWViMDYxZmM2ZDRkNDU1MWU3ODM3OWFlODJkM2UwMTBjMDE0ZjUgbGVnYWN5LXRydW5rCisxNzMxMiBlZGEyNmYxMjMyMjc0YmY2YmYxOGIwNGE5MWZjN2FlMTg1YjZjMzY0IGxlZ2FjeS10cnVuaworMTczMTMgNWVkZDQ5ZDM0MGVhOWFhMGE0ZGJiNDliNTMwZWM0MDZjOWJjNjVkOCBsZWdhY3ktdHJ1bmsKKzE3MzE0IGRiMDI2MDkyY2I3ZTQ5ZDhlNzY1ZmY1YzUzODJlNzg4YTA4ZDI2NDkgbGVnYWN5LXRydW5rCisxNzMxNSBhYTQ0NTM3ZDgwYjUzZmVkZDU2YzJlNDc5NTZjMGQ0ZTE1ZThiNGFlIGxlZ2FjeS10cnVuaworMTczMTYgZWMxNjVkMDNkNDZjYTg2MTc2YzA0NzhmNWZhNDExNWNkNjRhM2FiZCBsZWdhY3ktdHJ1bmsKKzE3MzE3IDE3Y2VjOTZmNzViYzFkNTYwOWQyMjMxNWY4N2EwMThkZTQxMzI4M2UgbGVnYWN5LXRydW5rCisxNzMxOCBlMTNkZjRlOTA3NmY3NThiYzdkOTA0M2Q4ZTg3NjMxMjliZDM5ODQ3IGxlZ2FjeS10cnVuaworMTczMTkgMDcyMWRmNzg5MjcwZTc5NDM4ZGE4YzJlYzBmOWMyMGRmYzMyZjA5NSBsZWdhY3ktdHJ1bmsKKzE3MzIwIDE0MmNiNGU3MzEwY2RlYTRjNWUwODFkMTQzZTY1MzY4MjhjYzEyMzAgbGVnYWN5LXRydW5rCisxNzMyMSAwZWY2ZWE1ODU5MGI2MGE1YTM2Yzg3MDk4ZGM3N2FkOGZhYzFkNTNiIGxlZ2FjeS10cnVuaworMTczMjIgZjkwYjgyMzIwNWZmMWUxYzY4YmIyZTdkZWMyOThmMjA2MWI2NGFkZiBsZWdhY3ktdHJ1bmsKKzE3MzIzIDM5ZmY2YjNjNDNhZmMzZWIzYWI0ZDg2ZjY2NzFhYTQ3OWU2Yjg2ZTcgbGVnYWN5LXRydW5rCisxNzMyNCBjM2M0OTg1OWU4MGIwOGZkMTEwZGU0YmEyMjU3YTY1MjY0OWM5OGE1IGxlZ2FjeS10cnVuaworMTczMjUgZjZiODZlMmRjNTViYmZmMjZhOGNhMzQ3NTEyYTVkNGZhMzMwNzRlZiBsZWdhY3ktdHJ1bmsKKzE3MzI2IDk1MzdlNzg5M2YzYzNkNDUzYWM1MmY2NDZlZDc5MGFjNjg0M2Y2NTkgbGVnYWN5LXRydW5rCisxNzMyNyBiN2JiNGEzNWMxMjE4OTc3NzlhOGUxZDk5NGE3OGJmMDVlODM4ZjI0IGxlZ2FjeS10cnVuaworMTczMjggZTRjYThjMjEzNzdhM2NiNzNiOTNjMjVlMzU4MDlkMmY1YTMzMmUxMyBsZWdhY3ktdHJ1bmsKKzE3MzI5IDcxNDU2NzgyZDhmZDVhMWYzMGI5NWZkMDEwM2UyZGY2N2IxMTUyODQgbGVnYWN5LXRydW5rCisxNzMzMCA5OTk4YjcwODdlZTYwNDlhYzBmZWMxZmY3ZTBmYjJjZWNjYjM2OThmIGxlZ2FjeS10cnVuaworMTczMzEgY2M2ODNhMGFjNTY4ZWI4NDQ3MDUwODBjYjFmM2EzYmZlMjgxNmU0MyBsZWdhY3ktdHJ1bmsKKzE3MzMyIDg5ZTNiNmE1NGZlOTNjNmRjNTM4MjhjYzk5YjllODJjNGZkZDBkNDYgbGVnYWN5LXRydW5rCisxNzMzMyAwZDE1YzgwNTM3MjZiMjdmNGYyYjAyZmQxOTRhMTMxZjRiYjdlYjczIGxlZ2FjeS10cnVuaworMTczMzQgNTAwNDM0OWVkZTRkZjhlY2E0MTFlZWZiYzQ4ZDgyZGY1MjVkNDZmMCBsZWdhY3ktdHJ1bmsKKzE3MzM1IDhhNjNjNjA0ZWU1OThmYjY0MGYxZWU1MmY5NWUyMzU3MGE3ZDlkMzQgbGVnYWN5LXRydW5rCisxNzMzNiBjMzJmNTQ5MGY1ZTNhYzJlODI5MjgxYjhlNGEzZDNkNzFkN2Y3NWRlIGxlZ2FjeS10cnVuaworMTczMzcgMzRmOWEwMTdjZTYzMmNjZGM4YzE3MjhkMTI1Njg0Njc0NGU0ZDkxYSBsZWdhY3ktdHJ1bmsKKzE3MzM4IGFjMDI0NjU4NmQ1Mjc4MmI1Y2VmZWIxNzk2NzFlZDE3MTQ4MWE2MjggbGVnYWN5LXRydW5rCisxNzMzOSA1MTM2OWE1N2IwYWFiNDgwYTA3OWM2ZThiZDEzZTEzYTkyNzVhNzEyIGxlZ2FjeS10cnVuaworMTczNDAgOGE3MTVkMmRmZWI5ZjlhNjFkN2FjMjYwYWM2M2Y1MzFjNDU1ZWU3ZCBsZWdhY3ktdHJ1bmsKKzE3MzQxIGFiYTdlYjlkOGQ2MTQ1NGY4OWE1ZmQ4N2U5OWRiMzM2MWIzOTEwZjAgbGVnYWN5LXRydW5rCisxNzM0MiA1MmE2MDBiMzhmN2VlNTk4MGMwZWJlNjIwZjk4OWMxZmYzMzIxYzViIGxlZ2FjeS10cnVuaworMTczNDMgZjc4ZjI4N2IzYWRkYmM4ODdjMTk0NGI1Yjg3M2U2OTQxZmUwMTkyZiBsZWdhY3ktdHJ1bmsKKzE3MzQ0IDMzNGQ5YWViYWFmMTBhMDJlZDEzYTI5YjcwZDIxMTY1YTQzOWZhMDkgbGVnYWN5LXRydW5rCisxNzM0NSA3NzI4YjBlYTkzNDQxYzUzMDBhY2FmZWUzMDY4YzY4YzIyMDRlYjAxIGxlZ2FjeS10cnVuaworMTczNDYgMmJhMDhkOTkxYzQzMzBhZjRkN2VlNDY4MTBjMjkxNzZlMTkyODkzOSBsZWdhY3ktdHJ1bmsKKzE3MzQ3IGIxOTg4NmJlYTM3ODdmYWZjMGQyMWI4ZDQ1YWEyYTcwYWVhNGI2OGYgbGVnYWN5LXRydW5rCisxNzM0OCBlNmE5ZDQxMjY1MmQyOGE5Y2U1MWM1NGMyOTliNWNjNzRkYmYwYjY1IGxlZ2FjeS10cnVuaworMTczNDkgYWVkMzdmNWFhNDc1ZTc0NzNmOWU4ZDZhZGNkMjlmYTRjMDhjMWJkOCBsZWdhY3ktdHJ1bmsKKzE3MzUwIGQzMjdmYzQ3ZjhmZGRmYWQ5N2RkOTBkZGQwYzFiOGIzYTg2MWVlODEgbGVnYWN5LXRydW5rCisxNzM1MSAzNzFlODhhZjY0NWYxZTg1NzQ5NWZkYTVlZTNhMDMwNTQ2M2QwNWZmIGxlZ2FjeS10cnVuaworMTczNTIgN2YyM2VjNWNkOWNhODQ1OGM5NmE4ZjFlZmJkM2RjZDZmMGQzODBmYSBsZWdhY3ktdHJ1bmsKKzE3MzUzIDIxZDg0NzY1M2Y1NGI5NTk5MDMyNDAzMTM5YmEzNGEwOTMzN2Q1YWEgbGVnYWN5LXRydW5rCisxNzM1NCA1OGJhOTBlNGU5ODVmMWJhYTljZWZhYWVkMWRjNDdlOWE4ZDMzMjRmIGxlZ2FjeS10cnVuaworMTczNTUgZWVmMjU3MzBlNjRkYWFlNzgyMTI0MjlkZjg4MzdiMzkzZWQ4MTQ4MSBsZWdhY3ktdHJ1bmsKKzE3MzU2IDE1YWNkNWM1OTFmZDRjMDUxOGRmMjRlYjliMzEwOWUwZjhkZWVlMTcgbGVnYWN5LXRydW5rCisxNzM1NyBkZWIzZTk2ODVhMWVkZGMyZTFiYTllY2NlNWNmMDFmNzhmZDQ0MmM3IGxlZ2FjeS10cnVuaworMTczNTggMzgyM2ZjNzIyYjUwYzUzMDlkMTc0ZDU1YzViOWJhMWQ0OWZkNTQ5MiBsZWdhY3ktdHJ1bmsKKzE3MzU5IDI4YWMxNDhkMDEyOWE3ODAyY2M3NThmZmMxOGQ4NmEzZmFlZTQyMWYgbGVnYWN5LXRydW5rCisxNzM2MCBjODcyN2FjYTE0MDRjODlmMzY2YmRlZjBkZjM2YWU0OGJmMzBkOWE3IGxlZ2FjeS10cnVuaworMTczNjEgYzJmN2FkMDcwYjllZmYzMDEzZTg4ZmFlOWUzNmU2ZDc1YjIwMmQwZSBsZWdhY3ktdHJ1bmsKKzE3MzYyIGEwMzkyZjQzODk2MDVmODcwNTA3YjI5ZDMyZGEyMDVhNmQzODRjZjAgbGVnYWN5LXRydW5rCisxNzM2MyA3NWVkNDI2MzQzNjYyOWVhYjQ5NzBkZDJiOTliNTI5ZGFiMWE5OGM2IGxlZ2FjeS10cnVuaworMTczNjQgMjlmYWNiNzhkNmY0MTY3NDA4ZWM2ZjIyODc3OTc1MDRkMDZmN2I5OCBsZWdhY3ktdHJ1bmsKKzE3MzY1IDBkNDlkZDBmMWJjZTMxMzVkMjYxOWI3ODIyODQ3MDUzZWJlOGFkMjEgbGVnYWN5LXRydW5rCisxNzM2NiBiMzQwOTVlNDg4Y2YxYWM4ODE4YjIyMTNjYmRjMjlhYmU4OTQyZTliIGxlZ2FjeS10cnVuaworMTczNjcgM2I2MTkzODVhOTBlNDdjOTY4Y2YwMmNmZGM5ZmI3YjM3ODRlZDg3YiBsZWdhY3ktdHJ1bmsKKzE3MzY4IDFkYjQ1MzI5NmM3NjdiZGFjZWZhY2VmZjA2MGFmNWRlN2FmYWM1NmMgbGVnYWN5LXRydW5rCisxNzM2OSBiODI4MDJiZjdmZmYyZGZjYzRhOWFlNzE5MGYwYTUxMGJiZDM0NGY1IGxlZ2FjeS10cnVuaworMTczNzEgYmY4NDRhYzJjODFhYmYzMDIzMjVjODIxMmIyNGJlZjAzM2I2MDk5ZSBsZWdhY3ktdHJ1bmsKKzE3MzcyIDUxNjdkMjNiZDZiMGJmMDFkYWQyMDhlMDNiNjk0MmZhOGY5MWI3YjAgbGVnYWN5LXRydW5rCisxNzM3MyA3NDM1MzMxYjQ4ZWU2NTg0MDUxMTY1ZTYxMDc0ZjMxYzc4YjBhYzczIGxlZ2FjeS10cnVuaworMTczNzQgYWRkYWJhOTkxMDc3ZDQ4MzhiYmQ2MWY2NDZlNWE4MDZjMDBhYTJlOCBsZWdhY3ktdHJ1bmsKKzE3Mzc1IDlmZWQ0ZWViYzU4NjRmY2Q4ZTRlZWE1MDczOWVjY2M1NTZmYTI3ZWEgbGVnYWN5LXRydW5rCisxNzM3NiAyMzViY2QzZTVmMTc0NDY5M2Y2YThkODM3YzNmZTg0NWU0NWFmNGI2IGxlZ2FjeS10cnVuaworMTczNzcgY2QzZTRkNzNkZjhlNDg2M2Y2MzJjNTNlMGMwMDc5MDM5NmM1MDVmNSBsZWdhY3ktdHJ1bmsKKzE3Mzc4IDkxOWQzNmZkYThjOGQxODU3MTE4NzE4YTc2NjUxMDNlZjMzM2ZlYWEgbGVnYWN5LXRydW5rCisxNzM3OSBmYzU0ZTM5NzE2OWZmNmVhZGJjYjA5ZjY1NGU4ODM1MWQzZGYxZjI1IGxlZ2FjeS10cnVuaworMTczODAgZmY0YWU2OTFiZTliNTBmOWMyZTZlMTJlM2I0NDAyYzZkYTcyODcwNCBsZWdhY3ktdHJ1bmsKKzE3MzgxIDg2ZDQ3ODY3MzRjYTFkZDY1MDBlNGRlMzk0MGRkZGIwMTBkMDlkNDcgbGVnYWN5LXRydW5rCisxNzM4MiA3MzY2YmI5NWYyMTI5OTBhODBiYTdjZjY3M2ZlNDM5NDYwMWMyZDdkIGxlZ2FjeS10cnVuaworMTczODMgYmUxYWIxODczNThjODFmMDk2MmRiYzgyY2FiODAzNTA5ODM3MDk0MyBsZWdhY3ktdHJ1bmsKKzE3Mzg0IDhkMWE0NjhmOGU1OTE1NGI3MDJiOWU0Y2NjNWYzMTc0YjNlYzkxMjQgbGVnYWN5LXRydW5rCisxNzM4NSAzMDY3YWUyNzQ1OGMyNDA1OTJlY2MyZWU1YThjNjI4NDQ0MzJhNDllIGxlZ2FjeS10cnVuaworMTczODYgNzE1MDk3OWY5Njk0MTU2NTUxZWY4ZjY0NDNkZGFiMmY4MGYzZTNjNSBsZWdhY3ktdHJ1bmsKKzE3Mzg4IDYzNWY2OTEyMzM0OTNlNWI3OTM1YTk0Mjg3NGEwMGNjODMyZWY2YzMgbGVnYWN5LXRydW5rCisxNzM4OSBhNWQ2NTQ1OWE3YjY5MjAzMGU1NDUxMTM0YzA2Nzc0YzA4ZGFiNGJmIGxlZ2FjeS10cnVuaworMTczOTAgNjg3OTVjMTNhY2VhMDAxMTZhMTVlMTE2Y2Y0MzRjYjU2N2YzMWRmOCBsZWdhY3ktdHJ1bmsKKzE3MzkxIDQxNzVlZTgwYTA4NThjOTg3NmYwNzMwNmY3MTFjOGI5ZGJmODgyZjAgbGVnYWN5LXRydW5rCisxNzM5MiAwNTJiMTEzYzc1ZDRjYmU2ZWQ5NjAxNDg4OTFjZGYwZGRiZGNiMDE0IGxlZ2FjeS10cnVuaworMTczOTMgMzY5YWMxODUwNTVkMzExYzAxZGEzMDg5MmNkY2FkZmE3NDc4M2Y4OSBsZWdhY3ktdHJ1bmsKKzE3Mzk0IGRjM2JlZjc3MWQwNzMyYzY5MWNlNWRhOTVhOTUwZTI0MjZkY2RhMjAgbGVnYWN5LXRydW5rCisxNzM5NSAzNWFlOGRmZjhlZDA5OWJlYTlkOWE1ZDJiMDcyMzIwYjZhYTJjYTk2IGxlZ2FjeS10cnVuaworMTczOTYgNTYxYzBiMWQ1MTRiMzRmODlhYmNiM2MyY2U0MzYxY2RmYTZmZDA4ZSBsZWdhY3ktdHJ1bmsKKzE3Mzk3IGE0NWNhMWY3ZjI0MTViYjcyNDFlZDk3ODU2OGNhZGI5ZTQ1NDFiMzcgbGVnYWN5LXRydW5rCisxNzM5OCBjMTYzOTY1MTFhYTM1NmFhMWM5ZGI3ZDg4YTNmOWZkYzQ1NTMwYzI2IGxlZ2FjeS10cnVuaworMTczOTkgZmY3MTJkZThiZDgxMzQ1ZDc0OGM0MTJhYzJhMWZkZTEyZTM4NzQ4YyBsZWdhY3ktdHJ1bmsKKzE3NDAwIDEyMjc3NWZmYTM2YzkzZmUwMmRjZDU0MDU0ZDVjZWI3YThmNDFmZDcgbGVnYWN5LXRydW5rCisxNzQwMSBlZmJhMzA3MGNkZGVjOGFmOWJhYzhhNzYxYWIxOWQ2ZTgyOTAxZDEzIGxlZ2FjeS10cnVuaworMTc0MDIgYWVkMTIyNmE3ZmM0ZjM0ZDEwY2MzNGEwNzBjYTZlZGExYjc4OTljMiBsZWdhY3ktdHJ1bmsKKzE3NDAzIGU5YzMxMzc0NTMwMjE3YTY2OGMzODA0ZDRmN2M4ZDMxMDBlZjljYTAgbGVnYWN5LXRydW5rCisxNzQwNCBkNDkwYzJhMTg2ZGFmY2Q5YWYzOGUzZGQ2ZmQwMzI1NzVjZDNjNjI3IGxlZ2FjeS10cnVuaworMTc0MDUgN2ZhNDMwMmE1YTA4NzBmMDQ2MzE5M2EyNTBhYmY0Mzk0YzM3YTgwMSBsZWdhY3ktdHJ1bmsKKzE3NDA2IDI4ZGY0ZjQ1OTY3ZmI2NGViOTJiOGNjZWY1MTllZjBhMDEzOWQ1YjAgbGVnYWN5LXRydW5rCisxNzQwNyBhOGQxYzAzMGIxOWZlNjgwYzcwYjY3Njk1ZTQzNjEzOTU1YjExY2IyIGxlZ2FjeS10cnVuaworMTc0MDggYjNmMTU2MTE2MjcxMjNkOTA5Zjk5ZjUyYzYzZTc3YmRhOGFiMGVmMCBsZWdhY3ktdHJ1bmsKKzE3NDA5IDg3NzQ1ZTU1NDcyNzE0ZGNjMjg4YjM1Zjc0MDhlYmYzYzg1MmM4OGIgbGVnYWN5LXRydW5rCisxNzQxMCAyMTllMDAyMjFjODQzNWNmYjdmZDQ4ZjM2Mzc5NzA3ZjlkY2M4ZWRlIGxlZ2FjeS10cnVuaworMTc0MTEgNGFjMDllOTcwODI4MmRmNTcxYzA1ZWEyNDFjMDMzOTAyYzc3ZmQ0NSBsZWdhY3ktdHJ1bmsKKzE3NDEyIGE3MTM4NWY4YjRkYWJmZDgxZjMzZDFlZGJiZTg4NjM5Yjg5ZTc0N2EgbGVnYWN5LXRydW5rCisxNzQxMyA1ZjJiOWVmM2YyYWVjMWMzODIzYTM5MzNhMDRjMjk2Mjc5NDRlMzQyIGxlZ2FjeS10cnVuaworMTc0MTQgMjhjYWFhM2UyOTJmZmUxYzNiMTA4ODZlNTEwMTVkOWI2MmNhMmIzNiBsZWdhY3ktdHJ1bmsKKzE3NDE1IGVlYjhlZTQ4ODEwNmE3Y2I5YjllYmYzZjliMDFjODMyNjEzNDEwMmQgbGVnYWN5LXRydW5rCisxNzQxNiAwN2EyZGMxYjcyYWVhMmZlZDE0OWVjYjljNDQwYTMxMWE2OGU2NmQ0IGxlZ2FjeS10cnVuaworMTc0MTcgZmU4ZWY0MWMzMjIzZjk5ZjliMTdkYTYwZDUyY2I2MTM2ZDZkZWIzNiBsZWdhY3ktdHJ1bmsKKzE3NDE4IDAzZTYxNTBmZDhkNTI0YTgyZGU1Mjc1ZjY3Y2Y3YzQzMTA1ZTQ1YmYgbGVnYWN5LXRydW5rCisxNzQxOSBiY2YyM2I1MmIwMmZkOWFlYjBhYjY4NWQ5YmFkMTQ3YjY1OThiMzcyIGxlZ2FjeS10cnVuaworMTc0MjAgYWM4MWUwY2FjNWY2Y2Q4YjA5ZjZhMzE4ZTJjMDRmMTY2MWZjNDUwZiBsZWdhY3ktdHJ1bmsKKzE3NDIxIGI3ZWQ1NDNmNGM1NmQyYTYyMWY2YWM1MTRkNzgxMzVmOWVlNWM0OTcgbGVnYWN5LXRydW5rCisxNzQyMiA2Mjk3OWM3YjlhNzE5YjMxMjQzOTJiZTEyNTgwNmQyYTJkZDYxYjY3IGxlZ2FjeS10cnVuaworMTc0MjMgZjQ0NGNmZDRmYTA3NTQxMDkyMTk2NzFlMWRhMGMzMjA3NzE1ZmYyZiBsZWdhY3ktdHJ1bmsKKzE3NDI0IDU1ZDY3MzAyNGU1Zjk2YjdiNDY2OTEzMjVlY2M1YzM3NGExOTZhMjUgbGVnYWN5LXRydW5rCisxNzQyNSBiY2ExZDIwMTM2MjZiOTI0NTgxN2JjOTdlNGRhNTFlOTMxOTI0ODAxIGxlZ2FjeS10cnVuaworMTc0MjYgNjAwNTE1NzQ3YzUxYTM1YTI0ZjI2YjlmODQyOWRkZGQ0YThhZDE4OCBsZWdhY3ktdHJ1bmsKKzE3NDI3IDI1YjdhYzA1Njg5ZTUwOTJkZGVjZjA2NzMwZjY4YmUyMjVlYmE2YzggbGVnYWN5LXRydW5rCisxNzQyOCA4NTczNzZkNjk5YmI5ZGY0MjlhNTA4Yzc3YWQwYWZhY2UyODZiYWFhIGxlZ2FjeS10cnVuaworMTc0MjkgYjRhMzdhYjMyOWRhMjQ4MWI5NWMzYzMxYTZkOWFhYjBkZWY4ZTE5ZCBsZWdhY3ktdHJ1bmsKKzE3NDMwIGJhNTQyMWZmMDI1NjdiMDJlNzM4NjViNjRiZThkNGFiOTdkYzQ4M2EgbGVnYWN5LXRydW5rCisxNzQzMSA4MzY5ZmNkNzlhNjRiY2RmNDhmOThhNmM0ZTg2MWI5ZjI0NTU0MjAwIGxlZ2FjeS10cnVuaworMTc0MzIgMTgzM2QyYmJmNzZhNDljYTEwZmVmZjM3NGNhNDZlMjUzYWU2MWZjYSBsZWdhY3ktdHJ1bmsKKzE3NDMzIDM0NGQyMmI5ZGIzMmFkOTJiODg1M2NmMDZiOGM1MGJmMzE5MzhiNjggbGVnYWN5LXRydW5rCisxNzQzNCAyMGIyMmZkZTFjYjc5ZjhmM2QzYmQ1ODI0ZGRmYzc0ZmMzYTA0NTIyIGxlZ2FjeS10cnVuaworMTc0MzUgNWY4N2VlYzdiNmI4ZjY2ZDJiNmE2MGVhOGU1NThiMmQwODZmMTBjZSBsZWdhY3ktdHJ1bmsKKzE3NDM2IDRkNzQ0NTE1YTczZTRiMmI0MzJlMjY1YjU5ODVmNWY0N2MzZjBiODEgbGVnYWN5LXRydW5rCisxNzQzNyA2NDM1Y2M0N2ZjYzZmZjI0OGIxOTY3NGU3NTYwYjNmYTBmN2U0MGViIGxlZ2FjeS10cnVuaworMTc0MzggMjEzZGJjODgwMTU5OTY3ZmMwMDNjYzE3NzBjNWRiYTQ3ZGY5NzAzNyBsZWdhY3ktdHJ1bmsKKzE3NDM5IDg5Y2U0ODA5NjNmOWJiNDBlNGNlZGZhMDhhYjEzMjM1NTBlNWUxZTAgbGVnYWN5LXRydW5rCisxNzQ0MCBkODRkNTc1OTQ4MTU1NmFhN2E4MjBkMzlmYTkwYWFkMjJjZjY3MzE1IGxlZ2FjeS10cnVuaworMTc0NDEgY2QxYjlkOGQwNDVkZDk0ZGUyZWIzOTFjMzMyMzIyNzdhYjM2NTg1MiBsZWdhY3ktdHJ1bmsKKzE3NDQyIGU4ZDg3NThhZGZkYjYzOGM2MjRkMjMzMTkzYjlmOWE4OGNhNjRkY2MgbGVnYWN5LXRydW5rCisxNzQ0MyBkY2JjMDg0ZDA0NmViYTVkMDI0YjI0MzViOTgzMzQ0NTQzN2Y1MDkyIGxlZ2FjeS10cnVuaworMTc0NDQgOWFiNDE5YTVlMDUyODkxOTg5YTQ3MjllNDY3ZTI2MzA1Zjg1NmY0NyBsZWdhY3ktdHJ1bmsKKzE3NDQ1IGM0MjEwNWJkYjVmYzRlYjFhZTQ2MGRlNmNmYWQwM2U3MjNmNzhiNmQgbGVnYWN5LXRydW5rCisxNzQ0NiAxNmE5YzA1N2RjMTE5ZjJjNTM1N2UyMzgzYzIzZmYyMzc2MTQ1NTRlIGxlZ2FjeS10cnVuaworMTc0NDcgOTBmMDc4OWQ1N2I3MTdkMzBkMjc0ZGQ5ZjZmNGViNmE0ODNjZDYxMCBsZWdhY3ktdHJ1bmsKKzE3NDQ4IDZjMzE3YWRjMThhOWUyYmFkZjFhY2I2YjhkNjk5ZGUzMDM5MGViMjYgbGVnYWN5LXRydW5rCisxNzQ0OSBhMWUyZThkNTVlZjAwNTAwN2EwZmZkNzNiZTQzNGJlZTcxMzA3ZTZhIGxlZ2FjeS10cnVuaworMTc0NTAgMmE0NDE2YWQ4MzdjNDU5NmE0MmY5MzVlOGYxYjU3YzZkNzE3YjEyMCBsZWdhY3ktdHJ1bmsKKzE3NDUxIDI1NmQxYmI2Mzg4ODk0N2ZjNjE2MGQ2MmYwOGQ0NTRiN2NhMTM4YmMgbGVnYWN5LXRydW5rCisxNzQ1MiBmNDg2MTc2ZjU2Zjg3MDg3MGFhNDcxZjlkNTQ3YjNiZmEwNWI1ZWE1IGxlZ2FjeS10cnVuaworMTc0NTMgNjlmOTZiNmNhZDI5MmI0MDYwZjEyYzQzODU4ODdjNDkwMGYxZTRmOSBsZWdhY3ktdHJ1bmsKKzE3NDU0IDQ5YTA0MTMzMDQ2MWNlODRhODQ1ZTBlYWE4ZWZkNGVhMjhiMTFjYWMgbGVnYWN5LXRydW5rCisxNzQ1NSAwMTRjZjZkMjkzOTg3MmRhYWUyYTgxMGU4YTAyYjJlMTkzOGE0ZmEzIGxlZ2FjeS10cnVuaworMTc0NTYgOGU1Y2EzZmJjZGI2NDYzMmI5NTFjMjQyNmI0YWZjNjkwODRiZjBlNiBsZWdhY3ktdHJ1bmsKKzE3NDU3IDI0ZmJiZjEzZGFhNWJkNjc2ZTNmMzE4ZDRlYThjNzMzZWMyZjA1YWMgbGVnYWN5LXRydW5rCisxNzQ1OCA4MGE3ODIwODZhNTdmMTliN2MyZTZhYmNhYWU4ZjhlMTkxMTYxNDMyIGxlZ2FjeS10cnVuaworMTc0NTkgZDI2MDlkNDMwNGVmYzVjYWNmYzczMGQ4NWE4Y2NhOWUwMjQwNTcyZiBsZWdhY3ktdHJ1bmsKKzE3NDYwIDhhZDliZDljYTYwYzAwNGFlY2I3ZWU4YmFiNDk0MGJmYWNkZmVkOTAgbGVnYWN5LXRydW5rCisxNzQ2MSBmMmZjNjZhNjE1M2I0MDU2ZTYyZDlhZWU1ZjEwYzg5NDIxMzYyYzBhIGxlZ2FjeS10cnVuaworMTc0NjIgYWM1ODNlNmEzYzhiNTFhNWYyMGI2MzU4NmIwNjU1OWQ0MmEwM2FmMiBsZWdhY3ktdHJ1bmsKKzE3NDYzIDE0MmE5MGVlYThmNGExODkyMTY5MTQ3YjEzYzkxZGIxMTAzZDUxMTIgbGVnYWN5LXRydW5rCisxNzQ2NCAwYjYzMzMyNThmNTQ3ZDFlOTAwY2RkMjdkNmQ5ZTI3M2Q5YWY5MDdlIGxlZ2FjeS10cnVuaworMTc0NjUgMTNjNzNhMjE5Y2IxMWQ5ZWUzNzc4M2Q0NzE1NTAyNTBmYWMyY2NmNCBsZWdhY3ktdHJ1bmsKKzE3NDY2IGRjYjkyNmU3Mjk2ZWMwYWQyZmM0YmEwM2VjMTQ1NzYwNjNlYzlhN2UgbGVnYWN5LXRydW5rCisxNzQ2NyAxZTZjMDQ0ZDhlNTk4NTE1N2Q2YTBkZjZiYjUwNzc1MzE4NTcxNGU1IGxlZ2FjeS10cnVuaworMTc0NjggNWE1MTJlYzhhN2FkZTI4ZDllOWMxNWJjOGVkNWU5NTI1OTk1NTE5NSBsZWdhY3ktdHJ1bmsKKzE3NDY5IDMzZTJlZjMzOWU1MGQxOTEzZDVmNWNiNGNkMjYzMzIyOThhZWRjZWMgbGVnYWN5LXRydW5rCisxNzQ3MCBjNGQwNTk4NWM2ZjMwNjljOTEyZTYxZjUwNzFmYWYzMTZlZjBhM2RlIGxlZ2FjeS10cnVuaworMTc0NzEgMjg0NTA4YzY1M2M3YzNlOTMxYjFiZTIzYzFjNTU5ZjU2MjMyYzA2NCBsZWdhY3ktdHJ1bmsKKzE3NDcyIDlkNzk4YTc2M2QyNDE3OThkNzBmMDUyZDE2NTM3Y2U1ZDg4OTFhNWQgbGVnYWN5LXRydW5rCisxNzQ3MyBjYjc2MzgzNWIxNzYxZGE3ZTcxZWY3MzFmNzllYmIzNTQ1NGNhOWE4IGxlZ2FjeS10cnVuaworMTc0NzQgNGYwNjlmNWRmYTdiOTc4MGIwYTUyYTY2ZGNmNjZhYTE0NWU4NDAxZiBsZWdhY3ktdHJ1bmsKKzE3NDc1IDRhY2NjNjNkNTZkYzU2Njg2NDgxNTc0MjhlMDBmZDIwMjBkNTE4OGYgbGVnYWN5LXRydW5rCisxNzQ3NiA0MWFmY2QwNjlhNmM1MTg0ZDAzOWU5MGVkNDQyMzQ4YjIxNzFhMDRlIGxlZ2FjeS10cnVuaworMTc0NzcgNDZmNzYyYTYxYjk5NjMwMDUyMTMxMTVhZGU1NTVkMjMxMjhiODIzOSBsZWdhY3ktdHJ1bmsKKzE3NDc4IGFhYTFkYzE2MWNlM2QyZjMwYjFjMzgxNTU2NDA0ZGM5NjA3ZTQ4MzUgbGVnYWN5LXRydW5rCisxNzQ3OSA5NjE4NjBkNmJlYTkzYmE1NGY0MTJlNDUyZTQwNjFmMzE2MmQwZmExIGxlZ2FjeS10cnVuaworMTc0ODAgYWYzNmJhNTA2MWY2ZTg0NTM4OGVmMzI1OWVkMGVlMWFhNzg3NTY2NiBsZWdhY3ktdHJ1bmsKKzE3NDgxIGZlNDdkMjM4YjUwZGUyNTJjMGQ4ODIwNzRhNjczMTRkM2Q3NDFiNjkgbGVnYWN5LXRydW5rCisxNzQ4MiA0MDU5NTAxN2E5OTJlNTUyZTNiY2FlM2U5YTNiYTNhNzNkYzkwZDhlIGxlZ2FjeS10cnVuaworMTc0ODMgNzIxMWZiZTBkYjlkODcwOWI4MmEyMGZjMmM4OTlmZjBmZWJmYjRiMyBsZWdhY3ktdHJ1bmsKKzE3NDg0IDlkOTlhMmRmNjc1ZjQ5NmFiNGIwNzZhZGU5MjgxNzNiMDAxZTJiMTYgbGVnYWN5LXRydW5rCisxNzQ4NSA3ODljNWI2YzBmMDlhMDk3OWM1OTI0ZmUxMTBlYjA3YTZlYjU4MmVhIGxlZ2FjeS10cnVuaworMTc0ODYgM2NkMjE3NGVlMTBkMTE2MjIzNDUzNGMyNWQ0NmM0ODAzYTY3Yjc5MiBsZWdhY3ktdHJ1bmsKKzE3NDg3IDRkNmE1ZTVmZTk4ZGM4OTEwNjhkNGU4MmI0MjEwZjk3OTg4YzVkZTQgbGVnYWN5LXRydW5rCisxNzQ4OCA3ZDBlMzQ1MGVlNDEwNzQ2YTQ2YTY4MjdkNTAxMjg3ZmY5Y2UzNWE2IGxlZ2FjeS10cnVuaworMTc0ODkgOGJkNTM0OWU3YWE4ZTA0YzYxNWMzNzM0NDNiMDI2N2U3YTYwOTgxMiBsZWdhY3ktdHJ1bmsKKzE3NDkwIGRiOWVhNWI1ZjMzN2U3ZjVmMmFlMjZjM2E2YTMyN2QwNThhZDM1NTQgbGVnYWN5LXRydW5rCisxNzQ5MSAwYzMwM2EyMmQ5YTQ5NzExOTExNGQ2MzZlMTQ2NzkxMzExYzk1YmQzIGxlZ2FjeS10cnVuaworMTc0OTIgMzczOTdiZDFmOGE4ZGI0YjE4NmYxMDE1NTI1NDg5MDU5NDk4ZjA5MyBsZWdhY3ktdHJ1bmsKKzE3NDkzIDJlMTcwYzJmNjFlMTM4YjBlN2I1YWU4ZWYyZmY1NzA1MTEyMjVjZWIgbGVnYWN5LXRydW5rCisxNzQ5NCAxMzM2MjRhYmM1MjVhZWNkZWJmM2ViNWUwYTI3OGRkNWNkN2IyZTk1IGxlZ2FjeS10cnVuaworMTc0OTUgM2ZlZmVhZmEzZjRhMGY1YTJhNmU2YjM0NTU5MDhkMDMzOTcwNzI5NyBsZWdhY3ktdHJ1bmsKKzE3NDk2IDhhN2Q0N2QwNzk4MTIyYjRlOTNhNzg4YTBkNGU5YTQxYmZmOWNhY2IgbGVnYWN5LXRydW5rCisxNzQ5NyAwOGUxYzNjNDFlNjA3ZjQ2MWZlYTNhMDAxOWI3ZDI5Y2QyMTkyYjk2IGxlZ2FjeS10cnVuaworMTc0OTggYjk1NGMzM2YwYjRiMGNkNzkzNGYwYTkyMmE3ZjcyYmE3NTExNzIwNSBsZWdhY3ktdHJ1bmsKKzE3NDk5IDY2MzdjMDkxZmY0NGYzNjJiODkzZDFhZmI3ZjdlOGRjM2FlZjQ3MDYgbGVnYWN5LXRydW5rCisxNzUwMCAyZDMwYzM1ZmVlYmU1MDMxYWU4NzU1MWUyZTgxYTAzOTkwZTFjMzFiIGxlZ2FjeS10cnVuaworMTc1MDEgMWI4MDY1NTM5MDlmNWRiYmYyMjQ2ODI2YjgxOWNhOWU2NjBmOTQ5NSBsZWdhY3ktdHJ1bmsKKzE3NTAyIDNiNzBlNjAyOTlhMzE4Nzc1MDYxMjViYjY5YmY1M2FkZjE5ODI4MWQgbGVnYWN5LXRydW5rCisxNzUwMyAxNWNiZTM5OWE5YzNiNTg1YzIwNDM0OGQyODE0YzM4OTBlNTljYWUxIGxlZ2FjeS10cnVuaworMTc1MDQgMWVjNmM2MzM0N2VhMzgzM2UyNzdhNTZjYTJhYmVhNGI1NGVmYWZhOCBsZWdhY3ktdHJ1bmsKKzE3NTA1IGVkZGEzNTNiZGUxMmExZGI2YmU4MjA3NmY4MDViMGIyNTQzYzljODkgbGVnYWN5LXRydW5rCisxNzUwNiA3ZmM0NTY5ZDk2MjUwNzA1MmNkNmIzMzdlODQwZjQ0NGNkMGJjZmY3IGxlZ2FjeS10cnVuaworMTc1MDcgZjRmMzg0MWEyNmVkZDE0YmJjNDY5MzI2NGUxOTdmMDVhNWUzYzgxMiBsZWdhY3ktdHJ1bmsKKzE3NTA4IDNkNmZlNjRiY2QyMThhMGM0Y2U3YjJlZWExYjZiM2FhNjNhNWQ4ZjMgbGVnYWN5LXRydW5rCisxNzUwOSAwYmQ3NDZiYzc2MjdmN2Y0MDdhZjAxNDdiYjAzZjJkYmU1NmY3OWQyIGxlZ2FjeS10cnVuaworMTc1MTAgMDIyODkxNGUwYzVmMGY3MTBiNmRiMjQ0MGUzZjQ2MzczZjYwZmE4ZiBsZWdhY3ktdHJ1bmsKKzE3NTExIDYwMDI5ZTNlMDVlZWE4ZTFmZGEwMDEyOTc2YTk2MjU5OGJlNDVmMTYgbGVnYWN5LXRydW5rCisxNzUxMiA5NDY3MDllODJiZTAyZDcwNjFhMDk2YzZkN2VkNjY4MzAzOGMzYzQxIGxlZ2FjeS10cnVuaworMTc1MTMgNjg2ZDNjY2FlYjRhN2UxYTAzMTI0MTQ2ZGRlZGMxNTJjMmFhNzY4ZiBsZWdhY3ktdHJ1bmsKKzE3NTE0IDY5OWZiYmJhMjlhNzMwYzhhMDgzODE5Y2ZmNmRhNmJjZWYxMDA1NzEgbGVnYWN5LXRydW5rCisxNzUxNSA5ODM1MDJiMmNkNDNhNDNmOGFiN2RhYWVjODczOGZjNzA0N2I5Yjk2IGxlZ2FjeS10cnVuaworMTc1MTYgZTdmNzNkMzVlY2Q4YzJmODJmMWI2NDkyZGJjY2RkZGFhZjIwMGMwNSBsZWdhY3ktdHJ1bmsKKzE3NTE3IDJkNjE4OGMyZWE1NmYxYmFmOWVhOWY3YTljMTVkMjJjMWRmNmRkOTIgbGVnYWN5LXRydW5rCisxNzUxOCBkMWVkMzA4MjU4MWE2MjgxNWY0ZjFmNjk5M2NjMmQ2MjA1M2Q5YjgwIGxlZ2FjeS10cnVuaworMTc1MTkgZjgzODQwOTg2MjY4NDQxZjFiYTljYmExMTE0MWE1YWJmNzI2NjNmNCBsZWdhY3ktdHJ1bmsKKzE3NTIwIDZmY2Y1YTcwNTMzY2YwY2VjZWI5MjAyMmY2ZTc4NmQ2Mzg1NTZhMWEgbGVnYWN5LXRydW5rCisxNzUyMSAxNTcwODU0OTExY2UwNmU3ZmZmZTRlMGVhYjUzMGM4ZjNjZDZhODUwIGxlZ2FjeS10cnVuaworMTc1MjIgMDgwMDU0YjEyMzU2NWE3NGIzYTVmNWNlZWQ5YmM5OWUyNGZkN2U4YSBsZWdhY3ktdHJ1bmsKKzE3NTIzIDQyYzQxZGFkZjI5MzZmZTQwYzYyOWQyMWE4NzQwOTgyN2Y0M2M2OWQgbGVnYWN5LXRydW5rCisxNzUyNCBhNWI0MDI5NWRjMTliYTdlMjg3OGIzZmE4ZDhlODJlMmM2OWUxZTVjIGxlZ2FjeS10cnVuaworMTc1MjUgOGRiODYwNmQ4NGVhYTBhNTZjMjEzZGU1NWY2OTFlYmVlZWZmOGVlZCBsZWdhY3ktdHJ1bmsKKzE3NTI2IDBjNmI5ZGUxOTEwMGY0OTM3MjIxNzBiYmNkNzg3ZGIwNjNlMjMzODggbGVnYWN5LXRydW5rCisxNzUyNyAxYjIwYWQ2ZWI1MDE5NDBkNzMxYzg2NThkZjIzMzY0YTViMTY2OTRiIGxlZ2FjeS10cnVuaworMTc1MjggZGY4ZDU3NWQ5NjdkODhkMDU4MTFiZDZlZDQ2MGJiZmE2NzFkODFkOSBsZWdhY3ktdHJ1bmsKKzE3NTI5IDc1NmM4YzY1MzVmZTJkZGVjMmYwZWRjZjhhMjRkNDlhMDgzOWNmY2EgbGVnYWN5LXRydW5rCisxNzUzMCAyMjAxMWQ5NzY5MTczODRmNjg5OGYxMDliOWJjODA2MTU3MTE2YzFkIGxlZ2FjeS10cnVuaworMTc1MzEgM2M1ODcxNmZhZmRlOGIzZjczZjZhOGFlN2Q2ZjgxOGY2MTQwM2MxOSBsZWdhY3ktdHJ1bmsKKzE3NTMyIGE3ODEzYWQ3M2E0ZWRlZWQwMzJjYjVmOWEzMzAxZGMxOTFkZTMxM2EgbGVnYWN5LXRydW5rCisxNzUzMyA5NGNhODdhM2U1ZWVlMjhjNTgwZmE3ZGVjOTY0YzVjMDBiNWMwZTZmIGxlZ2FjeS10cnVuaworMTc1MzQgMDg4MjMwOTlhZTYyNmUxMTIyYjRiOTQ2MmUzZTk4ZjYyZDFiYjFmMSBsZWdhY3ktdHJ1bmsKKzE3NTM1IGUyZDYyZDc0N2Y3YTgyYzE4M2NlN2YwNGM1MGY5YTlkOGZjODMyODcgbGVnYWN5LXRydW5rCisxNzUzNiBlNDMyYTE4NWY0ZGI4MzMxYjMxZWRhNmMwZWY4NjNiMzFlNzc1ZjMzIGxlZ2FjeS10cnVuaworMTc1MzcgMjk1MTI2NDMzODU2Y2QzMzNhMjNhMDJjMWJiOGY4YTFiNTdlNjYzMiBsZWdhY3ktdHJ1bmsKKzE3NTM4IGVkZjFlMTVjNjcxYTA4NGU1MzhlMTFiYWRhZTg2MWZlMDlhYmM4ZjcgbGVnYWN5LXRydW5rCisxNzUzOSBjNTJmZjAyYmJkNzA0ZmU0N2M5Y2Y1MmI2NDU0ZmY5ZDQzNTU2YTliIGxlZ2FjeS10cnVuaworMTc1NDAgZmFmM2U3MzQyNTRkZDZmNjExYWZjYmI4MDRjNmY4ZTVhMWVhYWIyNCBsZWdhY3ktdHJ1bmsKKzE3NTQxIGUzODRmNTAxNDljOTQwNDQ1MDhhZTkzNTdmMGY3MDlmMmVhZGUxMDkgbGVnYWN5LXRydW5rCisxNzU0MiBlODZmYTdlODUwZjE0MjBiY2I1NDQ4YjkyZjFmYThmMWY0NzM2YTk5IGxlZ2FjeS10cnVuaworMTc1NDMgZDZmZmI2ZDdmZThhZDM2NWZjMWM1NWQ5OTQ3MTFhMDc5MzJjMDAyOSBsZWdhY3ktdHJ1bmsKKzE3NTQ0IGNlYzAwM2JhM2M3Yjk3OWM3NDAzYmYxYjg4ZGUxOTc2Mjk3ODIyNjIgbGVnYWN5LXRydW5rCisxNzU0NSA2N2E0OTEzYzA3N2ZlZmM5MTJlZjdiMzFkY2FmZDJlYzM3Y2UxY2NiIGxlZ2FjeS10cnVuaworMTc1NDYgYmFiNGZhNmMzYzI0MWI2YTlkYTRhM2Q2YzI2MTBkOWZkNzBmOTYxOCBsZWdhY3ktdHJ1bmsKKzE3NTQ3IGM2ZjQzYzYwMzZiYTEwNTEzN2JiNzEyZDQ1MTcyMmRlYTZkZjFmMjggbGVnYWN5LXRydW5rCisxNzU0OCAzNDExMDUzOGIxMTg0NDg1NWQ4YzEyYTE0OGY1NzJmODA2YTA1MjkyIGxlZ2FjeS10cnVuaworMTc1NDkgMmI5YjE1OTY1OTUxNWY4ODllYTU0NmExNmJjYmI5NzNlMGMwNDlhNSBsZWdhY3ktdHJ1bmsKKzE3NTUwIGVmMzcwNzhkMjcyZDY0MmMxMTA1NGVkNWNkZGQwYzJmMWI0OGVkYjggbGVnYWN5LXRydW5rCisxNzU1MSA4NTAzOGEwMjRiMTkxYTg4ODFhZGM2ZmRkZDM0OTY1OTJiYTMwMzllIGxlZ2FjeS10cnVuaworMTc1NTIgOWUzZGM3YzQ3YWZhMjlmMTA3NTlmYTMxYTkxODk1NDdlMzEzM2E4ZiBsZWdhY3ktdHJ1bmsKKzE3NTUzIDQwN2NlMWM5OWU5OGUzMjkxNTY2NmQ0MWU1MTEwNjg4ZDdkYzY2NWIgbGVnYWN5LXRydW5rCisxNzU1NCBmYTgyODIwYmQzZmYzZGQzYzI3YTc3ZWNlNjk5ZGJhYTAwODY4ZTU0IGxlZ2FjeS10cnVuaworMTc1NTUgOTVmZTA4M2M3OGVlNWUwYjQ4MzJkNDQ0YjEwMjdkZGEwZmJmZDUzMyBsZWdhY3ktdHJ1bmsKKzE3NTU2IDU4MWQxZTc3ZTM1ZTc1ZGVkMzM3YmY2Njg1NjcyMDAxMjBiNzc5ZGIgbGVnYWN5LXRydW5rCisxNzU1NyA5MWRkZTdiZmZlN2Q5ZTNjMjA5YWE1NjVjNGQyZmIxNDU2NWMyMTE5IGxlZ2FjeS10cnVuaworMTc1NTggNDM5MzZhMjVlYWYxMDAzNDg5MjYyNGM2NGU3ZGQ0YjVhODU5NmMwZCBsZWdhY3ktdHJ1bmsKKzE3NTU5IDA0YzM5OGU3NDg3ODljN2M0MDE0ZjJkYjQyNmRkNDQzZjZlYWM4ODkgbGVnYWN5LXRydW5rCisxNzU2MCA0NzEyZjViOGYyNzlhZjJhODdmOTUxMTA4ZTQ3YmM4ZTUwMTQ1NTMwIGxlZ2FjeS10cnVuaworMTc1NjEgZmVmOWI4OWFkMTYyMmFlOTdhYzYxZjUxNTE4ZTM0MWYxYTRkZjExMCBsZWdhY3ktdHJ1bmsKKzE3NTYyIDJmY2I5OTBiOTY1Zjg2ZjVmMmFhNTJiNDc1M2ExNTI1ZWU1ZjViNDkgbGVnYWN5LXRydW5rCisxNzU2MyA4OWIyYWVlNDNlMGJkNTI3ZGYyZTZiYTc5ZmI0NmUwNTAyNzM2OGNhIGxlZ2FjeS10cnVuaworMTc1NjQgZTAyNDQzODUyMmRkNzBiYjM3Y2FlZGY1NjRiOTRmNmI4Yjg0YzE2ZCBsZWdhY3ktdHJ1bmsKKzE3NTY1IGFjNmRmMDQ5NGM1ODI2YmJiZjgzYWFkMDJkZjE3MDlhYTU0M2JiYTYgbGVnYWN5LXRydW5rCisxNzU2NiAxOTIyM2JiZjFhYTE5ZTU1MGFlNWEyZTJiYTAzMjM2N2I1ZTZhMmRmIGxlZ2FjeS10cnVuaworMTc1NjcgYTY5NzA0NDlkZjQyNWE1ZjRkYzUzYzc1OGIxMDA5YTk2NWVlOWU3NiBsZWdhY3ktdHJ1bmsKKzE3NTY4IDU4YjgzMmI4NzQ1ZWUyZWU2M2ViNmU3ODgxZWVkZDhmNzk4ZmZiMjMgbGVnYWN5LXRydW5rCisxNzU2OSAyZWM1OWExMWQzYzYxZTMxNmFmMjI1ZjYzZmEwNGM5NTUwNWE0ZGRkIGxlZ2FjeS10cnVuaworMTc1NzAgODMwZThlY2U2NTYzOWI1M2JkZTU2YWQ1MDVmOTQwZWZkYWQwZWUzNSBsZWdhY3ktdHJ1bmsKKzE3NTcxIDVhZTFkOGE5ZjFkZDhlZmZiNzNlNDYyN2E2ODYzOWYxODdmM2JmNDAgbGVnYWN5LXRydW5rCisxNzU3MiBjM2EyN2I2ZWJlMWJjYjFmZTAyNWIwMWVjMjk5YjVlMmFmOTVjYmE3IGxlZ2FjeS10cnVuaworMTc1NzMgNjljYTQ2YWY0MzZhNmMyM2I0ZTRiZjQxYmE3YzNkM2VkNTJjOWJjOCBsZWdhY3ktdHJ1bmsKKzE3NTc0IDg3MDIzNzA4OWJhMjhlNzYzNTA3NTY3NjJlMjljMmU4YjJkMTAwOGYgbGVnYWN5LXRydW5rCisxNzU3NSBkOGI3OWUzOWM0N2UxNDQyZmYwOTlhMTMxNmJiZjIyMDk5YmFlODEzIGxlZ2FjeS10cnVuaworMTc1NzYgN2Y0OWM1ODY0Zjc3NDFiNTBmNjdkNjk5YTQyZDM4NzlmMjRlOWY0NiBsZWdhY3ktdHJ1bmsKKzE3NTc3IDRkMmU5Y2YxZWIyMGI2YmRiYTIwZGFmYTAxZmYxYmNlMTlkOGNkNjQgbGVnYWN5LXRydW5rCisxNzU3OCBjMDRhYWMxODY1NmFiMjk4M2ExOGJhOWFlMzQwZDQ2MTQ2Nzc0NTZiIGxlZ2FjeS10cnVuaworMTc1NzkgYTZmODAxM2JiYzNkMTZmMGE1OTRlYTNjNzNkMmJhODNhNGY5MThlZCBsZWdhY3ktdHJ1bmsKKzE3NTgwIDA2YmI1ZDVkODk5MjdkNTY1MWNmMDE5NzkwMDU5ZjU0MzUwZDgzMTMgbGVnYWN5LXRydW5rCisxNzU4MSAxNzY2NjBmZjBjOTU5NjY5NDg5MDg4YzQyNDQ1MTMzNzI5NzY1ZDU2IGxlZ2FjeS10cnVuaworMTc1ODIgYmY0NmYxODVjNWU0YzBjMTYyNmZkYWM0NzJjNDUzYWQzM2M5NGM5OSBsZWdhY3ktdHJ1bmsKKzE3NTgzIGUyYzAzYzMwYjA2ZGRmYzZmZWFjYzgzZGJmN2ExMTlhYjI4M2E4ZGMgbGVnYWN5LXRydW5rCisxNzU4NCA4NzQ5Y2M4NDc5NzAyMjY1YTEyMDEwNDk2ZWU5ZDYxZjJkNTQ1NDE0IGxlZ2FjeS10cnVuaworMTc1ODUgZmZjMzAwZTlkODY3YmQxZDk4NDA3ZmQwNzE4ODkxYTYzYTcxZjFjNyBsZWdhY3ktdHJ1bmsKKzE3NTg2IGYxYWJlMDNiMmYxNjg0NjcyOThkYjBkMzVmODM3MTk3YmYwMmFlNTUgbGVnYWN5LXRydW5rCisxNzU4NyAzMzZhNjE3OWUwNTk3MjRkZWY4MDJkNTdhY2EzZDhlN2EwNmU4MTg3IGxlZ2FjeS10cnVuaworMTc1ODggODE0ZjQyMWUwMzI2NzMxNmQ3YjdkYTQyNzhiMzAyZDgyOGFkODE4OCBsZWdhY3ktdHJ1bmsKKzE3NTg5IDhhYTExMmY5ZTEzMGMzMmQxN2ZiODkxODQ4ODg4OWEwYzk3NjA5ODkgbGVnYWN5LXRydW5rCisxNzU5MCBkNDZhMDQzNmQ2ZTE5ODE3ZjNmZTA2ZjNhMDdkZGZkN2NkOGE5OGJjIGxlZ2FjeS10cnVuaworMTc1OTEgMmI5YTg5MDE2MmIwNTM4ZTQ3NDJkM2I0ZTA0NzJlNjRjMmFlZmQ5OSBsZWdhY3ktdHJ1bmsKKzE3NTkyIDdlZDA4MGI4Y2RhY2E3NzlhOGY3ZGNhZmRjNzJjZmM2ZmU2ZGM4ZmQgbGVnYWN5LXRydW5rCisxNzU5MyAyMjE0MDYyNjk1ZTc5OWU2OTYzNjVjZTNiY2JhOTkwMGQ1M2Q1NjE4IGxlZ2FjeS10cnVuaworMTc1OTQgNTcwNDM3MzQxYTA5ZDA3ZmZiNjJkNmVhY2QwZWY3N2E2ODVmMjQzMyBsZWdhY3ktdHJ1bmsKKzE3NTk1IDhiYjZkY2E2NmVjZGM0OGE3ZTVhNGI5ZmZiNmY0NzRiMDFmNThlMTEgbGVnYWN5LXRydW5rCisxNzU5NiBjMWRlMmMzZTQ1Y2E2NDY3YTIzYzllMjc4NTkzYzg4YmRjMTljMjMzIGxlZ2FjeS10cnVuaworMTc1OTcgZDczMmEzYTEzOThlYjA4ZmJhOWM3N2RhNmEzZjU2NjQzYzM3M2JhOSBsZWdhY3ktdHJ1bmsKKzE3NTk4IDhkYjA5NmI3ODJmOTczM2QyYmRlZWVlYTE4OWQwNjZiMDBiYWI0NjcgbGVnYWN5LXRydW5rCisxNzU5OSA0Zjk1Y2YxYjI2NjRmN2M3MmI5MWE0ZjZiNDMzNGYwM2YzNDQ5M2U2IGxlZ2FjeS10cnVuaworMTc2MDAgNzA5NDI3NjdkYzgxMGM4YmU1M2YwNWZlNzQzOTVkN2VlZTc5YjAzNCBsZWdhY3ktdHJ1bmsKKzE3NjAxIDAyOWZmNDZjNzk4YzdjMTE2NWIzZWM0ZjAyODU0MzQ2ZDMwZGYyZjMgbGVnYWN5LXRydW5rCisxNzYwMiBlMTU0ZTc5ZjRkMjJiZjk2YmQxNDM1NDdmZWM5OTg2MDdjNmRiNzVlIGxlZ2FjeS10cnVuaworMTc2MDMgOWY4YjIxM2I4NDE1NzcxMmUxNjg1MzE1M2NmOWM5ZjZlNzAzNWY2MiBsZWdhY3ktdHJ1bmsKKzE3NjA0IDZmM2ZkN2EyYTdiY2IzODNiYmEyNjNiMzI5ZWEyZDBhZGE5ODRhZGQgbGVnYWN5LXRydW5rCisxNzYwNSAwMGU4MTcyYWMwY2I5NTRiNTQ4NTZiODRiNzJiYTM3ZDlmMTU1ODRhIGxlZ2FjeS10cnVuaworMTc2MDYgZjg5ODRmMDNkZTIwMjUzMTkxZjVhNDkwMzJiZWEzZjZkM2Y2ZDk0YSBsZWdhY3ktdHJ1bmsKKzE3NjA3IDQ2YTY5OTA3NjlkMTcwYWI1NjYwNmY2MDAzYmRjMjI5YWNjMWY1MWIgbGVnYWN5LXRydW5rCisxNzYwOCA5ZmZjZjc0OWMxNWE5ZmJiYzY1ODgxNWNhZWJkZWVhZWU2YTM1ZWFjIGxlZ2FjeS10cnVuaworMTc2MDkgMmY3N2NiODU0N2ExYzAxNDJmNGExZTZlZTBmNDMzZjVlZTEwOGI2MSBsZWdhY3ktdHJ1bmsKKzE3NjEwIDkzMjA3MDc2ZDYxMjE4ZDBjZTlkOWY2YjBmNDc0MTBjYjU1NGRmYTggbGVnYWN5LXRydW5rCisxNzYxMSA2ZTkzMzFlNjhhM2JkNzhlOWY4NDVlNTJhYzU0M2UyYjRjNTdiN2JlIGxlZ2FjeS10cnVuaworMTc2MTIgYjRlYTU3ODcwZjJhYWM1OWQyMGNmZDAzMzg5M2E2Nzk2NWJmZDUwOSBsZWdhY3ktdHJ1bmsKKzE3NjEzIGE4NjU2OGY1NDM3NWRkYzQ4MjUwNWFmNzQzMTdjZTBmZjNhNTI5YWYgbGVnYWN5LXRydW5rCisxNzYxNCA1YTlkZmZmZjBkYTJiNDZkMDMwMTI5MjBjZDM0MTk5MTI2YjE1NzNiIGxlZ2FjeS10cnVuaworMTc2MTUgYjU0NTFhNjg3MmEyOThhMTc0MGM0YzYyZWMxMDkzYzk5MDk1Mzc1MCBsZWdhY3ktdHJ1bmsKKzE3NjE2IGM1NjZhYzljNTJkNzkyZWNjZDViMGY4MDc4YjdmNDE1YmRjMjUwMTQgbGVnYWN5LXRydW5rCisxNzYxNyA1ZjYzOGEyOTk4ODhjNzA0ZDdlNDJkZWU1OGQ4ODc3YzlkNjM2YWI5IGxlZ2FjeS10cnVuaworMTc2MTggZDI3MDU4NDA0OTgxMDYzNjM3NGE2MWE3MGU5ZDU4MzM5NDA1MDQ1NiBsZWdhY3ktdHJ1bmsKKzE3NjE5IDgyOGVmN2VjZDFmNzZjZDgzM2FjOGVlZWY5MTMwOTllYzE5NjY1NTEgbGVnYWN5LXRydW5rCisxNzYyMCA5ZmU1YzgyYzRjOGEwYjhjNGFlNDdiNmM3YTQzZDE3MTdiMWZkNzg0IGxlZ2FjeS10cnVuaworMTc2MjEgNzI4NjBlZjAzMTcxNDg2NzFmYWU3MGEyZmViZmFjZjYxYWVjNGYwZCBsZWdhY3ktdHJ1bmsKKzE3NjIyIDYwY2UzN2YwNjZkOGNlYTEwODJlYzZlNmQyZGFlYzM1ODVhNjQ4ZmIgbGVnYWN5LXRydW5rCisxNzYyMyA5MmFlZTMxZDc2MTM4YmE3NGRkODgyOGEyMmIyMmQzMzBiZDhlZTBmIGxlZ2FjeS10cnVuaworMTc2MjQgYWExOGU1MjM5YjQ2OWMzYmYyMDFhZTViMTdjYTgxYTdiYzQ0ZmU0MCBsZWdhY3ktdHJ1bmsKKzE3NjI1IDNmZmFjZjFkYzhmMDVmNmU5ZjkwZDJkMDc2NTQ5ZDE3YzUzNWI0NmMgbGVnYWN5LXRydW5rCisxNzYyNiAxMzMwMDc2NDZmYjQ3NzBmNzI0YzhhYmQwNWMxOGFkZjdjYzRjMTViIGxlZ2FjeS10cnVuaworMTc2MjcgNjQ4NjNjNTZjZThlM2U5MDkyNDUyMmNkZWQxYTg1Y2YyODRlOWQ2NCBsZWdhY3ktdHJ1bmsKKzE3NjI4IGM1ZWMwYjExZjhjOTU4MzhmZmYxZDYzNWY1ZTE2OGI2NDMyYjUxZTAgbGVnYWN5LXRydW5rCisxNzYyOSA1MjE3NGIwMDJmMWZmMzdmMzBhZDU1MTBjYmZhYzkxMjU3YjM4OGY2IGxlZ2FjeS10cnVuaworMTc2MzAgNzQ1NmM5N2M5OWVmYTA2ODY0NmQ4YmRiNzgxNDc0YWFlNjczNTE2YyBsZWdhY3ktdHJ1bmsKKzE3NjMxIDE3OTg3NzBjYTM2YjIwYWM3OWVjOGUwZWU3M2ViOGQyY2RkZWJmMGEgbGVnYWN5LXRydW5rCisxNzYzMiA2Yjc3MmM1MjdjYTc0Y2ZlNzBiOTYxYzg1NWFhZTJhZDYwZGQ5MmYwIGxlZ2FjeS10cnVuaworMTc2MzMgOGZhZTNmOTExNjFmOGViNGRiMmQ1NDQ4ZTg4MDIyOTY0ZjdlZDg2OSBsZWdhY3ktdHJ1bmsKKzE3NjM0IDdiYTQ5M2JjMjRhMGMwZjgxZjQ2OWZmYTJhOWQ2NDIwOWRkNGFmMmMgbGVnYWN5LXRydW5rCisxNzYzNSAwNjRlNDM0ZTc0NGYxNzI0M2YwZjI3MTM2NzA2NjJjZDczM2NhZjRmIGxlZ2FjeS10cnVuaworMTc2MzYgMDgxNjcxY2VmN2MxYjZkZmQxODc2MmRmNmZjYTMzYzQ3MzI0NWZiOSBsZWdhY3ktdHJ1bmsKKzE3NjM3IDNjMDFmOTIxYzQ1M2VjMzY4NDY0NzAzMzk1ZDUzOGIxNWQ4ZjBiMTcgbGVnYWN5LXRydW5rCisxNzYzOCA3N2VkZGRkYmI3Y2NmOTQxODc2ODg3ODIzZjViYjA3N2JmNjNjNDFhIGxlZ2FjeS10cnVuaworMTc2MzkgMDk4NWRkZmQ0NDJiZTliMDg4MjYwODEzYzc3ZDE4MGI3NzE4ZTI0YSBsZWdhY3ktdHJ1bmsKKzE3NjQwIGQwYjc3N2VjOWUwMjdhZGMxYmZmNWUyNDQzMzA1MWI2OWQ5NTdjZGIgbGVnYWN5LXRydW5rCisxNzY0MSBhZDBkOTMyY2NlMzJkNzYzZTdkZDk4MTQzOThmMTQ3ZmFjNGJiMjFlIGxlZ2FjeS10cnVuaworMTc2NDIgMWVkYjZiNmUzYjViNTk0MjM3NmU4ODFmNDgzZmJmZGQ3NjE3Y2M5ZSBsZWdhY3ktdHJ1bmsKKzE3NjQzIDE3OWUwOTgyMzhlODA5NjM5YmVlYzcwMzQ4NmZmZTIxMTM4NTZhZGYgbGVnYWN5LXRydW5rCisxNzY0NCBiZTJkZjk5MzVlZGQ4ZmExYmIxMDlkYzY4YTRhMWZlODRkYThjNjE0IGxlZ2FjeS10cnVuaworMTc2NDUgNDMyOTNjZjc1M2MxNWMwMWJmNTlhZGI3NTkxMzc4OTg4NTBiYTBkNSBsZWdhY3ktdHJ1bmsKKzE3NjQ2IGZmODhjNjRjZmYyZTUxOTVhMjFjZDhlMWM0MGZjYTNjMjk0OTg3NGEgbGVnYWN5LXRydW5rCisxNzY0NyBhZmJhZGFjNjBmZjc0YzhmMDE0MTFlZjkzY2QxNTcxNjNmNmM5MjJjIGxlZ2FjeS10cnVuaworMTc2NDggZmZkM2U5ZGE4OWIwZWI4ZjQ0MzE4ZTMxNjRjNWZjNGUxZDBlMDc2ZiBsZWdhY3ktdHJ1bmsKKzE3NjQ5IGMzNjAyYWU0OTg5MDY5ZDNhNTZjNjZjM2RiN2NjMWJmMWNlNzhkZTQgbGVnYWN5LXRydW5rCisxNzY1MCA3YzU3NGJmYTZlMTM4Y2YzZDJkNmE2MGU4MzE2MTZiNTE4MGFlNTBiIGxlZ2FjeS10cnVuaworMTc2NTEgZDY4MjhkZDlhOTI3MDU5NTEzODNlYzk0M2Q0YzJjOTBiZjU2YzgxNiBsZWdhY3ktdHJ1bmsKKzE3NjUyIGE5MGRhYzRiZjg4YTI0YTEwMGIwNmM3ZGQ1MWJjNDNiMzcwOGE1ODMgbGVnYWN5LXRydW5rCisxNzY1MyAzZTNjMmVmYzc5YzczYzAxYzljZWZjNzJkNjIzZTliMzlhMjVlYTY4IGxlZ2FjeS10cnVuaworMTc2NTQgY2Y5ZDhiZjU2ZDE0NTA3NWQ5NDExOTJhYjYzMjllODE4MjA2ZjMxYSBsZWdhY3ktdHJ1bmsKKzE3NjU1IGZjYTVmOGYxYThmNDcxZThkNDdjZGE5MjBmZWVlMDkzMTVmYzlhMGEgbGVnYWN5LXRydW5rCisxNzY1NiAyNTc0Mjk1NTQ1ZmY3YzE2MGQ5Y2EzZjZkODRhNTM2N2FmY2Q4MzhjIGxlZ2FjeS10cnVuaworMTc2NTcgMWQ3ODAzM2E1M2Q3NzJhMjc2ODBlM2MxMGVkMmE0ODQxOWMyOTAxMiBsZWdhY3ktdHJ1bmsKKzE3NjU4IDI5OTAyZjc3NDhmYTY3OGU5YmY0YWJkN2Y1NWQzMGE2OGY4ZDVlOTIgbGVnYWN5LXRydW5rCisxNzY1OSA3ZGEzNmY2ZmQ1NDRiYTc3ZjI1MWRlYTA5YTI3NzNkODEwYmNiNmI2IGxlZ2FjeS10cnVuaworMTc2NjAgNjk4NzNhMzBiN2M5OTczODQwMTU2ZGQ1NTQxMjkyY2VmMDZlZDlkZSBsZWdhY3ktdHJ1bmsKKzE3NjYxIDc0NjFlZGNkMjQ5ZDQ1MTI4NDU3NDc3N2RhMjY3MDgwYjU0YjA5OWQgbGVnYWN5LXRydW5rCisxNzY2MiA2ZGI2OTUyZDg4N2FjOWI1NzdmYzNjYWQzMDNhNDM3ODc2OTI0NmYwIGxlZ2FjeS10cnVuaworMTc2NjMgMDNlZWE3ZWE3ZTVjYmRiMmQyYWQ4MTVkMTIwZWQ0Y2FmODc4YWRjMiBsZWdhY3ktdHJ1bmsKKzE3NjY0IDRkMTBhMTM1NjhhYTNkOTUxMWE2YTI0MmYxZWJlODQzYmQzNzNlMDggbGVnYWN5LXRydW5rCisxNzY2NSA1MjNhMTJlZDMxZjBkZTNjMTc5MWQ3NDQ0ZmJiZjlkOGNlNzBmYTRkIGxlZ2FjeS10cnVuaworMTc2NjYgZjU2NTNhYWUxY2JkN2NjNzIwNTY1MWZlMDA0Mjg4MTc0ZjkwZGY4NCBsZWdhY3ktdHJ1bmsKKzE3NjY3IGQ1NDNkYWExNWQ3MTU4ODZkNmI2NjgyY2E3OWFjOTg0OGNjYzE5ZWEgbGVnYWN5LXRydW5rCisxNzY2OCBiN2ZiMTIxNmY2YjYyMjIyNzNlYjMxZGQxYjc5N2JhNGExZTY2ZGEwIGxlZ2FjeS10cnVuaworMTc2NjkgYjU2YTg4Mjc3ZThjZWY1OWVjMTliNDk5MTM3Mzg1MTY3MDkwYWI2ZSBsZWdhY3ktdHJ1bmsKKzE3NjcwIDRmZjg0ZTczNDU4OGZhY2QxODFlYmMxZGMxOTZmM2E4MWM4MmRjMTYgbGVnYWN5LXRydW5rCisxNzY3MSBiNDEzZTg3ZWVlZDQyMzczOTBhYjJhMzVlYzE4NjUwMjlmZDIxMTg0IGxlZ2FjeS10cnVuaworMTc2NzIgMGRkMjA0ZDkzNmUxNjM1MjI2Njg0YTc5ZTUyOTFlZjE0ZDcyZmYwMCBsZWdhY3ktdHJ1bmsKKzE3NjczIGM5NWM2NzZiMTg0MDcwMDQ1YmVhMTIxMGE5MGZiMzk3OWY5NmE4YTEgbGVnYWN5LXRydW5rCisxNzY3NCAxODJkODI0ZjJiNDczYmUwODM5OTZlZDc2NjIwNzA1MjYzNjBiMzI2IGxlZ2FjeS10cnVuaworMTc2NzUgMDc5NjM0MjFmYWZjYzlmZTU0NDg1MDEyZTFhYWIyM2RlZDQ0ZjQ2OCBsZWdhY3ktdHJ1bmsKKzE3Njc2IGM1MzY5NWYzZDg0MGQxNGFjMzgwZWFjOWVhNjBiZjEyNDE1ZWNiNjkgbGVnYWN5LXRydW5rCisxNzY3NyAzZTM5M2Y5YjEyOTM5MjY4MjA3ZTM5YjMwYTM2NWU5M2QxOWNkMDRjIGxlZ2FjeS10cnVuaworMTc2NzggNDk0NGUzODU5YTg2MDllZDM2MDdkNTM3NTY2YWM5YzkwYTM1ZjNhOCBsZWdhY3ktdHJ1bmsKKzE3Njc5IGExMDMzMjgzYTI1ZGM2MGJkZjU1YjFmY2EwNzczZGNlMDc3M2NlMmQgbGVnYWN5LXRydW5rCisxNzY4MCA5ZmQwMzBhZjJmZTAzOWFjZTRiOGI0NGI1MTM4YTRlNDBhMGFhY2ExIGxlZ2FjeS10cnVuaworMTc2ODEgOTJkY2VhMDg1OTMwNTg3NmZmMTZjMGVlMjhjOWYxMjAzNDA4MTgwYyBsZWdhY3ktdHJ1bmsKKzE3NjgyIGIxYTBmYjU1NDQ1NmNhZTBhMjY3MzYyMzU4NzFiOTBjNDAwNTI2MTcgbGVnYWN5LXRydW5rCisxNzY4MyA5Zjk2YzkyZjAzZTNiZTZjM2IxNjg3YWZiNzIxZTI2NzljYTI1ZmNkIGxlZ2FjeS10cnVuaworMTc2ODQgYjFmMjIwZjYzNmVkZDFlOGNjMDFjYTI4NzdkNGRmZTBlMWRjNTI2NiBsZWdhY3ktdHJ1bmsKKzE3Njg1IDA3Mjg4ZDJkYjU5NjQyNDZhY2EzOTZiNzRmNTZjN2ViY2UzMWIxYjcgbGVnYWN5LXRydW5rCisxNzY4NiAxYTFiNzk1ZjBjOWI5ZWRkMGQ4NDIxZTY5ZTU1ZjdlYWJlYzU2MmViIGxlZ2FjeS10cnVuaworMTc2ODcgNTRhZGI3YjRmOGM4NGRlOGRjN2JiNTNiZDg2NGU3ZDkzYTBiNTJkYiBsZWdhY3ktdHJ1bmsKKzE3Njg4IGVlODEzZTg0M2YzZTU3MGUzNmM3ZTk3NDQwZDAyODJiNmY5MDcyNmIgbGVnYWN5LXRydW5rCisxNzY4OSAxZDYyNzI0MmUyOWEyY2ZiNmFjZGNkZTg2ZDgxNGE5M2MyYTFhZjg5IGxlZ2FjeS10cnVuaworMTc2OTAgOTZkMzFhMTQzODU3Y2Y4YjVmMzU0OTRiNzgzMmFjM2MzMDZkNTVhMCBsZWdhY3ktdHJ1bmsKKzE3NjkxIDY3ZTBmZjRhYTdiOTc3ZjFhYjU2NWExZjVjMDNkNjNkMzA5YmFkZmQgbGVnYWN5LXRydW5rCisxNzY5MiBiNzc4N2E5MDUyZTNkMDgxZDAwZjY5OGYxODc0MzY5NWMxODVlYzc3IGxlZ2FjeS10cnVuaworMTc2OTMgNzZhYWQ1YjA2NTQzYWZjNzQ0NGNiN2E3OTZiY2I3NjljMWU2Mzc4MCBsZWdhY3ktdHJ1bmsKKzE3Njk0IDNiMGNhMGNjMzc1MGUyMjMzYTFiYzg0MGU5MjI4OWNjMzUyOGQ4YjEgbGVnYWN5LXRydW5rCisxNzY5NSA2MjVhOWE2OTU0NjliNWNjNGJlM2M5NTRiYjdkZGM1NTQ3MGRjZGYyIGxlZ2FjeS10cnVuaworMTc2OTYgNjgxODkyODU2NThmMjI4ODBmZjUxZGFjOTlkNjc1N2QxNWQ0ZDkwZSBsZWdhY3ktdHJ1bmsKKzE3Njk3IDQ2MGFiMTlhMzI4OWJiOWY3M2FmY2MxMDFlNWEyYWZmMWQ3NzQwOTggbGVnYWN5LXRydW5rCisxNzY5OCA5NGMyNDZlNjM5OWQyMjAxYTM4ZDFmNjkxYjE3ODQ4NWQ4ZTNhMGVkIGxlZ2FjeS10cnVuaworMTc2OTkgZTdkNjc4OTkwOGQ3MDkzNGIzYzkyZGFhMWExYTZkMTAwZTkxNDNmYSBsZWdhY3ktdHJ1bmsKKzE3NzAwIDg4ZDNhODk3NDQwOWVlNzJjNjI5MjU3ZWQ3ODg4NWQ2Y2JmNGFmZGUgbGVnYWN5LXRydW5rCisxNzcwMSA0NWVjNWRmOWE2MmQzMWVhZDU1MjlmMmM3YTNkNmI4NGIwNWI0MTVlIGxlZ2FjeS10cnVuaworMTc3MDIgZjZlNTAxZmMzMmM3NzFkZmVmNTRlMTE5NWUxYjU5NmY3ZGRlOTU3MiBsZWdhY3ktdHJ1bmsKKzE3NzAzIGU1MmMyNDMxOWFlZjUxOGI0MzBlNzc3MDQ0NTk5YjEyYTc3NGJjNTEgbGVnYWN5LXRydW5rCisxNzcwNCA5MmNkYmMwZjU1ZDUwMzJmNjRmN2FkZDBkMjc2MDA2YWU5Y2VlZjYyIGxlZ2FjeS10cnVuaworMTc3MDUgYzhjYTkzMTA3ZjJlZGM0ZmY4OTg2OTY4Mzc1MjY1OTUwZTliMTc2MyBsZWdhY3ktdHJ1bmsKKzE3NzA2IDU0NDkzMDJjNGQyZTE0OGQ0N2VkMTllZjAzNjMwZjRjMWZkODFjZTQgbGVnYWN5LXRydW5rCisxNzcwNyA0NjNmYWYwMTY4NWU3MTI3MTgzMjU3MWJlNWRlMzM3N2NlYjQxMGFlIGxlZ2FjeS10cnVuaworMTc3MDggMTI5MzQ5MmRmZTYwM2VhNGFiNzdhOTI4ZTM1ZmEzNTY3ZjY4YmY4MCBsZWdhY3ktdHJ1bmsKKzE3NzA5IDg5YmM4NDc1ZmM4NGUxNzBkNjYwNGY4NmY1ZDE1YmVhY2JlZDMxZGEgbGVnYWN5LXRydW5rCisxNzcxMCBhZTEyYjhjM2MzYjMzYWI2ZjA1OGE3ZTQyY2E4MTE0OGIzOWE5MzdiIGxlZ2FjeS10cnVuaworMTc3MTEgODNhZmYxZWE1YjcwZGU2NTI0ZmRhMTE3MWM4ZWFiYTM3ZTkxZTBhMSBsZWdhY3ktdHJ1bmsKKzE3NzEyIDZlZGE2YTFhNjkzYzU0NzI1ZTUxNzFjYmE4NmQ4NzYxYmE2MDdjMDkgbGVnYWN5LXRydW5rCisxNzcxMyAxNjYxMTllYzMxOTU1YjU5ZTU3ZmUzY2IzOTc0YjEyODJjYWZjMTIxIGxlZ2FjeS10cnVuaworMTc3MTQgZTk3NjYwZDFmMWFhZWIxMmUzY2YwYTU2OGVjOTljMTI2NDM3NWMwOSBsZWdhY3ktdHJ1bmsKKzE3NzE1IDE4YjNkZWY2YzRiODI3NjJjMzYwMThmNjlmNzQwNTIzNzQ0MTVkM2IgbGVnYWN5LXRydW5rCisxNzcxNiAwOWMxNGFlNWMyZjU0MzU3OGI4Y2MxOTY1ZWJkNWE3NTcwN2Y0Yzk0IGxlZ2FjeS10cnVuaworMTc3MTcgNWI4Y2RhNmYzYjVmNjllYzI0NzMwNWEwNGU5MGQzZmEwMzViZTY0OCBsZWdhY3ktdHJ1bmsKKzE3NzE4IGMzZjBkNmYxOWY3YmZmYzNkZDYzNDBmZDk3OTk5MjFmYTEyYTA1YmUgbGVnYWN5LXRydW5rCisxNzcxOSA1NmZkYTRlOWVjZTlmN2MyMjg4ODEwNGVlMmMzOTFjMDU4ZDdjNWNkIGxlZ2FjeS10cnVuaworMTc3MjAgNWJhZjdmNzQzOTZmMWRhZmMyZjhhZmE2ZTEwOTZhNmVmY2ZiYjUwYiBsZWdhY3ktdHJ1bmsKKzE3NzIxIDRjMDg5YWQyOWVlYWM0NWE0YTlkZDZhY2Q5NWJiMWQ4MDZkYTVmMTggbGVnYWN5LXRydW5rCisxNzcyMiBjODkyZTZhYTk5OTc2YzgzMDE5M2Y0MGM0YTQ3YWM5Njc4MTExYWIxIGxlZ2FjeS10cnVuaworMTc3MjQgYjY4MDA2YTU2NDcxMTZiMDFjNDI2MTE0OTI4Nzc4YzEzMDQzMzQ5YiBsZWdhY3ktdHJ1bmsKKzE3NzI1IDI1ZGRkM2RjN2E3YTJlNGQ1N2MzMmM0MGU5YjBiMTQ0YjQ5YTdiYzkgbGVnYWN5LXRydW5rCisxNzcyNiBlMzVhM2E3NzJkY2E5ZWZiMjU2ODY1YzJmMDZjZDcxYjA0MTFkNGNmIGxlZ2FjeS10cnVuaworMTc3MjcgZmI2YjUxMDMzYzNiNjBlMTE3NmUxNThkNzNiMGU0YWYxY2Y2NzE0MyBsZWdhY3ktdHJ1bmsKKzE3NzI4IGFjMTRiODZmMGY4YjhmODBlZWE1MmRhMDg1MGM1OTZiNDNjNmY0ZGIgbGVnYWN5LXRydW5rCisxNzcyOSBhOTNiMmYxNzZhNWUyZjE1ZWM5MDFlNGVkMWVjY2I0MWRmOWNkOGE0IGxlZ2FjeS10cnVuaworMTc3MzAgNjQzMWNmNWM4YTAwNGM2NjY1MWM0ZjQ3OTA2MTIwOGE1NTNkZjM2OSBsZWdhY3ktdHJ1bmsKKzE3NzMxIDE3YjVjNDNjMDhhNmM0ZDhhZWYwYzZkNjFmOTc2ZmIyM2RlNjc3ZTIgbGVnYWN5LXRydW5rCisxNzczMiA3M2ZkZTQ0NTYzZDFlZjkyOGQxZWYxYTJjNjBiOGQ2NTkwOTVlZDhmIGxlZ2FjeS10cnVuaworMTc3MzMgNzk4NmE0NTUzOTMwYjI2MzAxZTcwYzBkYzQ4YzNhOGZiYTU2MmU2NyBsZWdhY3ktdHJ1bmsKKzE3NzM0IDY4ZTIzZjFmZjVkYjdhMjg4YzNkNmZlZDZkOWE5YmNhOTE4ODkyMzMgbGVnYWN5LXRydW5rCisxNzczNSAyODA5NjYyYWU5Y2UxODM4NGU3Y2FjNmI3Y2Q3ZDU4ZTc5MjgxYWIwIGxlZ2FjeS10cnVuaworMTc3MzYgM2E1OWEwNzMzZGY4YzE2ZmEzZTE2Yzk5ZTBhYzRlZmEwNGRhNmE4YyBsZWdhY3ktdHJ1bmsKKzE3NzM3IDVkMDg5MDk1ZjQwZjVjZTY1ZGIwY2Q0NjdlNzcxZDFlOGU4N2EyMzggbGVnYWN5LXRydW5rCisxNzczOCA1MjhiNTJiZDRiYzMyZWQyM2ViZWYzNzcwYmY2YjhkNDRlY2EwMWZlIGxlZ2FjeS10cnVuaworMTc3MzkgZDZiZGNiMDg5OWRkYTkwZGYzMTE5YzZiMmY2MmZiNjljYTVmM2UzOCBsZWdhY3ktdHJ1bmsKKzE3NzQwIDk2OGFlNTVmZTZlZWFiMjhkMGZjODgyZDFhNzBjZmZlNjBjZDhiY2UgbGVnYWN5LXRydW5rCisxNzc0MCA1NWJiYTE5N2Q0ODcwY2RhZTYyYWVjYTAwZTIwMjQwYTc1NmI4NGY4IGxlZ2FjeS10cnVuaworMTc3NDIgZjY1NzkzMGZkMjc0YzNiODFmMmRhNTQwOGMwNTA1MjJiZmU5NzJkMSBsZWdhY3ktdHJ1bmsKKzE3NzQzIDRmZGY2NjAwZDhhYTcwMTBjMjlmZTI0NTY2NWNmZDQzNDMwZTdiNGEgbGVnYWN5LXRydW5rCisxNzc0NSA2NTM3NDkwMDNkYjk3NjM5MDJjYzgyMjFjMzY4NTY3MmJjZjc2NzAzIGxlZ2FjeS10cnVuaworMTc3NDYgYzdmNTU1NTFmZTMxYmNjYzBiMWJhMzg3ZGFmM2U5ZWIwMTgzOTk2NCBsZWdhY3ktdHJ1bmsKKzE3NzQ3IGFmZDdlY2UzN2M0Njk1ZWU2OWY1OWNiZTYyMDc5N2E5YzgzNTk0MWQgbGVnYWN5LXRydW5rCisxNzc0OCBlNDY0MWQxOTMyMjBmMzg2YzBkOTdhNzM4NTY3NGQ4OGQxNzdlOGQzIGxlZ2FjeS10cnVuaworMTc3NDkgMTk2N2JlMTM1OWVlNTk4YmE5MzhkMTFiOGYxZTY1Y2E1MzYxODdkNCBsZWdhY3ktdHJ1bmsKKzE3NzUwIDgzNDA2MmY2OTVlMGYyMWM3NGI5MDE3ZWE5MjY2MDA0YTc3NTgzYjggbGVnYWN5LXRydW5rCisxNzc1MSBkZTE4OTJlYWNjZmZhY2FiZWVjMDg4OTA1OWZlODg5MWY3MWI2ZjE3IGxlZ2FjeS10cnVuaworMTc3NTIgNDIwZDNjNTdlZmVjNzM4NzRlZGE3YjJkZjAxOTVhYjU2NjAwOTRjNSBsZWdhY3ktdHJ1bmsKKzE3NzUzIGFkOThjMTM2NDc1ZTdiMjM3MzJiOWJkODg3ZWRjZTkxNzNkNTgwMzYgbGVnYWN5LXRydW5rCisxNzc1NCA0MTExY2YyMmEwYWQ5NDFjYTJlNDUyOGQ5ZWY5NTA0MzQ0ZmM4MDQzIGxlZ2FjeS10cnVuaworMTc3NTUgNGJlYTRmNTljNGU0M2M5YzVjNGE2MjY1M2I4ZmU0MGRmZjdlYWQ4ZSBsZWdhY3ktdHJ1bmsKKzE3NzU2IDYwNmE4MDgzNGE4NjIyMzhjN2NhOTdjZTVhNWJiNDRhOTM2M2JmM2UgbGVnYWN5LXRydW5rCisxNzc1NyBmOTMyYzEyODI3OWJjZjNmYzQ3Nzc2ZjcwOGNkZDQ3ZGRmNGQ5MmJmIGxlZ2FjeS10cnVuaworMTc3NTggMjkxYWJlYmVhNTViMmVkN2M0MDhlMWEwOWQ1NzY0Mjk2OWRiZjA5MCBsZWdhY3ktdHJ1bmsKKzE3NzU5IGVjNzU2ZDU4ZThhNzBlZmE3NzVkYjRmNTM1ZWEyNzYwMjc0ODFlYWEgbGVnYWN5LXRydW5rCisxNzc2MCBmNGExZDNmOGYyNjI4OTc3MDNiMDVmMGU1ZmM3N2I4ZGM2OTAzZWE3IGxlZ2FjeS10cnVuaworMTc3NjEgYjE1ZmNlODY4ZTUwYjc3YTA2OTk0N2VmNjEyZmI4YjllNTVjZDI3MCBsZWdhY3ktdHJ1bmsKKzE3NzYyIDQ1OTY3ZmYxYjZkYzE4ZTU3MTBkMDYwMWY1NGY2ZGZjNzhlN2UxZDMgbGVnYWN5LXRydW5rCisxNzc2MyBhMGExM2YxMGNlNGJmNWNlY2MyNWRjYzBjMDI2YTM1MGM4NjMzMDA0IGxlZ2FjeS10cnVuaworMTc3NjQgZDAxMzk0YjBhYTY5ODgwYTRiNWQ1OWE5YmQ4ZGFhNGNjMDNhMTgxMCBsZWdhY3ktdHJ1bmsKKzE3NzY1IDhmNTliZDk1Nzk1MjU3NzY4ZTljZWYyNjI3MDM3ZmE2ZjdhNmVlOWUgbGVnYWN5LXRydW5rCisxNzc2NiAxMDE4NzI3ZjMyMzE3NmNhZmQwZTJlYzkxYTlhM2QyMTNmZTY1ODYyIGxlZ2FjeS10cnVuaworMTc3NjcgNmZiMmFmNzY2ODkyZWI4N2JiYjNkNmM0MmMwZTIwMjFjYTJlMGZkNCBsZWdhY3ktdHJ1bmsKKzE3NzY4IGFmOGQ3N2FhOTBmODg1ODcwYjdmNGVlOTMyY2U1OWU4NzQ4NjUyZTggbGVnYWN5LXRydW5rCisxNzc2OSAyY2RmN2FjOTE2MmQ5MzUwNGRlMmVkZTY0YTdmNWU4ZjQyY2E0NjEyIGxlZ2FjeS10cnVuaworMTc3NzAgYTA2Mjc0OWI4MGY4YzUwM2VlNGNkZWU3ZWYyODIyMTgwY2I5MDk4YSBsZWdhY3ktdHJ1bmsKKzE3NzcxIDc5Y2RlZWVlZmFmYTU3NTVlOTMxMGJjOTg2ZjBjNWU4YTI0NDU4MDEgbGVnYWN5LXRydW5rCisxNzc3MiBlYTJiYTkxMGU1ZjA1ZmU2Y2FjY2JjMDY2MWIyNDFiMGE4Y2VhM2UyIGxlZ2FjeS10cnVuaworMTc3NzMgYWFkMmI1YTNmN2JmNGMzN2FhMjE3ZTI1ZGU0Yjc2YjI0NDAyODU1OSBsZWdhY3ktdHJ1bmsKKzE3Nzc0IGNlZmIxOTEwYWQwZDdiODRkZmIzZmQ5N2NhZDc0YWY4NTI3OWQ4MmQgbGVnYWN5LXRydW5rCisxNzc3NSA5MTRhZTdmOWM2NGNmN2YwMDYxNGIzOWM3MWFlYzA0ZGI2NzE0ZDhhIGxlZ2FjeS10cnVuaworMTc3NzYgOTViMjAwMTliNzExNDU0YzQ3NTdjN2NkNjViZDU3MTcxZDMyMTgwZiBsZWdhY3ktdHJ1bmsKKzE3Nzc3IGZhZDgyNDdlZjBhNTJkYTczNGM3Mjg4ZjVlYjkwMWU0OWYyZGM1YzMgbGVnYWN5LXRydW5rCisxNzc3OCAzZGI4YjgwMzFhNmE0NzQ0MTg0MDU5ODQ5N2JkYzZjOWI2ZGY3YjZkIGxlZ2FjeS10cnVuaworMTc3NzkgOWE4NzAwZmRjNTJiZTgwNjBmMzdkZjk3YmQ3NjQzYjA5ZWI5ZmNkYSBsZWdhY3ktdHJ1bmsKKzE3NzgwIDc1ZjNkNWU3Yjg5Y2EyZTE4NWFjMDMwMTlmMjk0NTA5ZDMzNmY2ZjUgbGVnYWN5LXRydW5rCisxNzc4MSAxNTM1NDFmODI0YTM2Mzk2NzkyNTc2ZjFlMGM2NjI2NmY4ZDFlMmM5IGxlZ2FjeS10cnVuaworMTc3ODIgYjRmNzQ0ODJmOWFmZTEwNzgwMzA2N2E3ZGQwNjIwOWZkZTNjZWJlYiBsZWdhY3ktdHJ1bmsKKzE3NzgzIDc2YzFlNDBjNWM1ZGU5MDYxZTQ2MGE2YjhhZGNlZmY5ZWRiMmY5OTkgbGVnYWN5LXRydW5rCisxNzc4NCBjOGYyMmYxNTQ5OWY4YjE3ZGU2NDE2MTk4MjBlMTAyOTJjMjk4MTBkIGxlZ2FjeS10cnVuaworMTc3ODUgMmVhMjk3ODY5YjAyNzFlMGViNTE5MjhlNDI3NTI5ZTMwMDZmOTdjZiBsZWdhY3ktdHJ1bmsKKzE3Nzg2IGFmMWRlNGY1MDUwODliMzQ2Y2Q0N2ZjODVhMTMzZWNiNmU0NjViYTEgbGVnYWN5LXRydW5rCisxNzc4NyA1NjEwZWNkMDdkYzAzNmU0YWEyMWI2MWVjYWNlZmRjYTE1Y2VlMGI2IGxlZ2FjeS10cnVuaworMTc3ODggMGM5M2QyZTI3YWMwN2MxMzAzOGRjYzdhMTc4MTdlNDAzYzAxZTJhYSBsZWdhY3ktdHJ1bmsKKzE3Nzg5IDgyN2U5ZDIxYTc4MTY0ZGVmYjNjOGE1ZWY3MjY4NDE5YmFlYzhkZGYgbGVnYWN5LXRydW5rCisxNzc5MCA3MTVhM2U5MjQ3MzcxODI4MDZhOWI1MDcyMTgzM2NlYTM1ZTBiMTZhIGxlZ2FjeS10cnVuaworMTc3OTEgM2RhOTlmMGMxODRmMjZiYTRjYmU5ZmY0ODg0OTlkMjkyMzhhNjUxNiBsZWdhY3ktdHJ1bmsKKzE3NzkyIDEzNDg4NTM5ZjAyYmZlMjhiYmFhZjFiM2Y0N2Y5MGFmYzY2ZTVjNTkgbGVnYWN5LXRydW5rCisxNzc5MyAwMTFkZjI2NDdmNDEzZDJkMTVkZDg0ZDc3M2NiODA0OTIwZjU5NDBjIGxlZ2FjeS10cnVuaworMTc3OTQgZmQ3Zjg3OWFmZjgxYzVhYmNkM2Q1YWJiYzkyYmZlMTE0NGExMThlNCBsZWdhY3ktdHJ1bmsKKzE3Nzk1IGMxMjg3NWRlZmMwZTRlMzk2MDdmMzA0ZThiMTk1YTU3YmJlOTVhMDAgbGVnYWN5LXRydW5rCisxNzc5NiAxNjI5ZWY3MzhiMmYwOTY3ZmIzMzkwNDQ5OTUwOGE2OGRkZjNjZTVmIGxlZ2FjeS10cnVuaworMTc3OTcgOWNlYTRkYjQxZDlmYWZlZWQ0ZmM0M2Y2YzY0OGU3MGRiYjk1MTJmMSBsZWdhY3ktdHJ1bmsKKzE3Nzk4IGY5Y2Y2MTEwOTZiZjUwMmY4ZmQ3OWIyNTk1NWU4NjAwYzMzNTZmYjkgbGVnYWN5LXRydW5rCisxNzc5OSBlMTVlOTdhNmMxNGE4MzQ2NTE4M2Y3YzlkNGNjMTQ0N2IwMjZlYmRkIGxlZ2FjeS10cnVuaworMTc4MDAgMTk5MTllMTQ2ZmY4ZjMxYjVlM2ZiY2E5Y2I3YjZhZWRkZmUyMDE2ZCBsZWdhY3ktdHJ1bmsKKzE3ODAxIDc1OTJmNzIxOWI3YzZjYTFkMTEzNTc1ZjI5MWE4OTJjZmNiM2Y1YWYgbGVnYWN5LXRydW5rCisxNzgwMiBhNTk2MDBhOTc1ZDEyNDcwZDJlZDg2ZmM0NDUyNGU1OTQ2OGJkZjdhIGxlZ2FjeS10cnVuaworMTc4MDMgOWU0NDVkZGNhMmQ3NGEwMDE4MmVhOTI1OTYxYzBiZWM1Y2RmYWU5NSBsZWdhY3ktdHJ1bmsKKzE3ODA0IDczY2VhNTk2NTdiYWJjN2U2M2Q2Y2ZiNmUzZGI5ZjI1MzM4NzkzNzcgbGVnYWN5LXRydW5rCisxNzgwNSA3YWNiOGJiYzIxNWJiNzJhMzMwODg2MzJiZmQ5OTNlNmE4MjBkMGM1IGxlZ2FjeS10cnVuaworMTc4MDYgMTRiNjQ3ZDU1MGQzNzkzMWE5MjEwODVjNDYzOTM2MDMyNTJjYThlYiBsZWdhY3ktdHJ1bmsKKzE3ODA3IGY4YjUyNmZjMzlmNjdmZDI2NDE5MTgyNDNlOWVhZTk3ODFhNjViYWEgbGVnYWN5LXRydW5rCisxNzgwOCAwMDVhMGI0YzM4MmQzNWY0NWRkNmIyYzEyMzU3YjFjNzQ0MjdmNjc3IGxlZ2FjeS10cnVuaworMTc4MDkgNmU3MDUyNDczNzc4NmIzNWUyNjI5YWUzM2E4NTNhMjMyNzk4MzUyZCBsZWdhY3ktdHJ1bmsKKzE3ODEwIGQ5ZTY2YTgzZTQzMzg0YTYzNDFlNzYxYTA2NWRiMTIwZGIyZjdhYWQgbGVnYWN5LXRydW5rCisxNzgxMSAzNDI0OTdhZDhmZWM5NzYzMmQ0MGUyOTY0ZGFiNTM4NTJhYjBkZTE4IGxlZ2FjeS10cnVuaworMTc4MTIgMWY5ZDIzNzc3ZmQwMTc0NDllYjI4OTE5NmRjNTRhYzkxYWExNzkwYSBsZWdhY3ktdHJ1bmsKKzE3ODEzIGM3OGU3NmE1NzFiNjVkYjkzOTJiMjAxMmIwMmJlZjNiNzE1OTZhMzkgbGVnYWN5LXRydW5rCisxNzgxNCBkYjFjY2UxZmZiNjA4MjY4MTE1M2I2MjYzMjZkNDhiOTk4OWY4YmU5IGxlZ2FjeS10cnVuaworMTc4MTUgNTAzODZjNzNiYTIyNWQyOTg1ZmQyNjUwNjQ1OTRiYTllNDlkZDhmMiBsZWdhY3ktdHJ1bmsKKzE3ODE2IGIwMzFhYmNhM2U5MWFiZTA1ZDNlMDYwYjlkNTI4YTBkNGE4NDE4NmYgbGVnYWN5LXRydW5rCisxNzgxNyA1NjkyMTRhNDE4MmM5M2U0ZjNjMjY3MWIzOWI1YWZiYTc1YmZlMWJkIGxlZ2FjeS10cnVuaworMTc4MTggZWJhZWIxOWUwMzgwOWI4ODYxY2JkMmNmMWIxZGVlMWE0NDBkZTY0YyBsZWdhY3ktdHJ1bmsKKzE3ODE5IDljM2FlZmE1Y2Q3ZjU5MzJhZDM0Zjc4MDYzOGNhMjJkZWMyMmQ2ZmEgbGVnYWN5LXRydW5rCisxNzgyMCA3M2QwOTMyMmYyYzM2MDA3NTQ3ZjE1NjBjYTkzMzc4NDE0OWQ0NDcxIGxlZ2FjeS10cnVuaworMTc4MjEgNTRlYzVlYzMyMzUyZjBlYTg3YjNlNDhhYWE4YjQ5MDE0ZDIyNWUxMCBsZWdhY3ktdHJ1bmsKKzE3ODIyIDFhYTM3MDA4ZmQyYzgyNWUxMGFiNzg0MjUyMmQwMzAyYjE0ZTRiNTMgbGVnYWN5LXRydW5rCisxNzgyMyA5MzE0Y2M3OWQ2ZTEyZTdjMWRhZmRlYTY1NDQxYTEyYzY5YzU2YzI4IGxlZ2FjeS10cnVuaworMTc4MjQgMzE0ZWI4ZjdhZTEzNTI5YTU3OGQ2Y2JjZTgxMjA4OTg0N2U3MmIzMiBsZWdhY3ktdHJ1bmsKKzE3ODI1IDUzMzY5NDZiNjQ5NWExNjQwZWJiMmQwYjc5NmQ0OGFjNGQ3ODY5MzIgbGVnYWN5LXRydW5rCisxNzgyNiBiNDExMjM4ZGU5ZDEwZjEyYTE4MmJlNWQzYjVhZjdiMmY2OGY0YWY0IGxlZ2FjeS10cnVuaworMTc4MjcgNmFmOWFhMTU2NDdmOThmNzg3NDcxOWY4YjBlODlhNGI0NmM0MzhhMSBsZWdhY3ktdHJ1bmsKKzE3ODI4IDMyZDI2M2Q0NDdiN2UxM2E3NmI1YmJhMjA4MDMyNjM3N2YwMWU3OTMgbGVnYWN5LXRydW5rCisxNzgyOSAzZWVjZGEyYmE5M2EzODQ2NjYyMDI3NjVhMDRhZjBmNzllMTc0Njc0IGxlZ2FjeS10cnVuaworMTc4MzAgNDhiNDVhMjgxMjc3MDAxNjE4NGRkZjRlZWY1MGU2ZjQwNzk1NTE0OCBsZWdhY3ktdHJ1bmsKKzE3ODMxIGM3OTA3Mzc5YTZiZDIyODUzZDA2NzQ0ZmRkOWZkMWM4ZTQxZDEyNmUgbGVnYWN5LXRydW5rCisxNzgzMiAyN2VhYjgwMzI3NjYyYTdlZTU1ZGZmM2IxMTJkZjk4NmI3NzU1NzA2IGxlZ2FjeS10cnVuaworMTc4MzMgODM5YmEzNWIwYWEzMTQ0Mjg1ZTQxOTIwMjVjNmEwMTE3OGRjMTBkOSBsZWdhY3ktdHJ1bmsKKzE3ODM0IGIwMTJhZWJiYmU1MTc4ZmEwZDkxZWNiMTUwZGU0YzNmY2Q4YWJiODcgbGVnYWN5LXRydW5rCisxNzgzNSAxNzRkMzRlYWM1MTYzYjljOTRjMTIyNzdlZTNlZDQwMWM5YTJmN2JiIGxlZ2FjeS10cnVuaworMTc4MzYgZTc5ZDA3YzI0NTcxZTM4ZTIxOTljN2U5YmYyYjY0MDI5Y2QwN2QwYSBsZWdhY3ktdHJ1bmsKKzE3ODM3IDI2ZDJlNGY1OGFkY2E5NzBiZGRmOTk4NDQyM2NkM2Y0OGRhNTUwYmIgbGVnYWN5LXRydW5rCisxNzgzOCA4MjEyM2NlMDI2ODRmZTI1MDFmZGJhMjViMzEwNzY3NDliYjdhYTkzIGxlZ2FjeS10cnVuaworMTc4MzkgMGZhNThmZWEzMGNmMjE2YzIzN2YyZWYyZWNlOGFlOTFkYjIwYTc1MiBsZWdhY3ktdHJ1bmsKKzE3ODQwIGI2MWNkMWE0ODk2MDNiYzQ3OWY2ZGIyZTc2Y2VkM2ZiNjVhYzQ0ZWQgbGVnYWN5LXRydW5rCisxNzg0MSBlY2U2YzE5ZWRjYzE1NWI0ZmY3YzRiZmU2NWU3NDJkYjU4MGI5Y2ZiIGxlZ2FjeS10cnVuaworMTc4NDIgM2ZjNmM1YWRkZjFlYzFhYzI1NjNmMGJmYzU5NDQ3ODY3ZTQ2NzQyMyBsZWdhY3ktdHJ1bmsKKzE3ODQ0IGE5ZDI0YTUzYzU1MzM0ZGEyMmFhYmNiMDY3ZTE3MmE1NzM3Yjk4ZDYgbGVnYWN5LXRydW5rCisxNzg0NSBiYmUwOWNjY2I0OWJlMDcwNGYwODAwNjFlZjRhM2I4OTljYTAzZGEzIGxlZ2FjeS10cnVuaworMTc4NDYgZTg1NzU0ZmE2OTE3NGZhNzJlYzYxNGIxNzJhY2JhMDljNTJmMDFjOSBsZWdhY3ktdHJ1bmsKKzE3ODQ3IDJiNDIzNjU4MGUwYzRmYmEwZTZmNmY4ODNlYjFhZjFjOTU4YmMwOWYgbGVnYWN5LXRydW5rCisxNzg0OCBiYjZjY2E1N2ViOGIwYzk0YjE2Njk5ZDhjYmU0OWU0NmY1MjljM2ZlIGxlZ2FjeS10cnVuaworMTc4NDkgNWQ0MWNhNDlhMTBhZGMyZThjYjJlOTY4ZmYxMjQ5NGQ5ZGI2N2JkOCBsZWdhY3ktdHJ1bmsKKzE3ODUwIDRjNDkzNGNhODU3OTYyMGUyMWI4MzI3YzBmYzMzMjcyY2NkNDdhNWIgbGVnYWN5LXRydW5rCisxNzg1MSBmYTVjNDgyMzY3YzdhZjUwMzhkZWJlZmY2ZTdjODQ3ZDNmNzkzMmY2IGxlZ2FjeS10cnVuaworMTc4NTIgN2Y0ZTI4MDQ1ZGZiNDU4NDEyNDYyNTgxZTc0OGRjNjliYjk1ZDM3OSBsZWdhY3ktdHJ1bmsKKzE3ODUzIGVlYzJlYjEyMWRhZTBjYzFkMGM4MWY0NjkzOWM1ZjM5MDY0YTdkNjYgbGVnYWN5LXRydW5rCisxNzg1NCA1ZTRlZWQwNjJiNTRhOWU2ZjIzODAwMWMyNzAyZDY2YTJmOTk1MjZkIGxlZ2FjeS10cnVuaworMTc4NTUgMGM1YjAyY2M1NDg5MzkyYTJjZmNiZjkwYjI3OWE1YWQwNDRhMDNmZCBsZWdhY3ktdHJ1bmsKKzE3ODU2IGMxNmJkZjU1NWM3OTc4MTEwODg3OTZjMjIxZGY3MWMwYmUyOWY3MmMgbGVnYWN5LXRydW5rCisxNzg1NyAxYTNiNWM4ZDY3MzBkOTc5NzNkOTAyYzgwMmQwOTNlZGM2ZWY2YjVmIGxlZ2FjeS10cnVuaworMTc4NTggMGE5N2Y1ZGRlM2E3OGRjN2MzNzM5YmY4MmMzODg0OTMyNDk4Y2M5NCBsZWdhY3ktdHJ1bmsKKzE3ODU5IGEzNDliODliZjEwZWU1ZDUxZDdiMmIyNDQ3N2JhMzAzOGFhYjE5N2IgbGVnYWN5LXRydW5rCisxNzg2MCA5ZDUxNDJjOGNmMmRkZGQ5NzM4YmQ0ZjQ1NTY4ZjczZmJjYzU3OWRkIGxlZ2FjeS10cnVuaworMTc4NjEgMDAzMmRmZmViMTYzYjRmYWQ4MjVhODIxNDM5MjNhYzQxNjAwMDM4ZiBsZWdhY3ktdHJ1bmsKKzE3ODYyIGRkYjIwMTkwNTkxZGJiZjE2ZjUyM2VmMDVmOGU2ZTg3NWZmOTEzNzggbGVnYWN5LXRydW5rCisxNzg2MyAwY2Y1MTExYmYwOWNiMWJmMTcwNTBlZmVmMjI5YWVlMThkOGMwYmYwIGxlZ2FjeS10cnVuaworMTc4NjQgOGI2ZmU2Yjk5N2MyZGI3YjRhMzkxMmNmZmY4NzUzNDZmZDMzMWE3MCBsZWdhY3ktdHJ1bmsKKzE3ODY1IGNiNGIyYTE2ZWI4NzEyNTU5ODhlZjE2MzBkZmVjN2VhYTNkZGZmNjggbGVnYWN5LXRydW5rCisxNzg2NiBhYTA1MmE1MmVmODcxMmYwODVmNmVmNTVkZmY4NWY1Y2VhMWE4NDM3IGxlZ2FjeS10cnVuaworMTc4NjcgOTg0N2I0ODZkMTVmYmE4MDlmNDdmMzA0MGZhYTg2OGIzYTUzMGM5ZiBsZWdhY3ktdHJ1bmsKKzE3ODY4IGM1Y2Y2ZmJhNTRkZGI4YjczNjYyNzIzMGYwZjMzZjFlNmNhZWRmZDMgbGVnYWN5LXRydW5rCisxNzg2OSBkYjNhOTU3OGFiMGJlZmNlYmMzOWI0NzRlYzdkMmU3MGYyM2VkZTExIGxlZ2FjeS10cnVuaworMTc4NzAgNmM1MWI1YWYxYmRlMTMwOTYyMGVlY2E5NjNkYmJjMTZjMDVlYThlNCBsZWdhY3ktdHJ1bmsKKzE3ODcxIDI1YmMxNjk1MmEyNGU1NDc3YjliODQ0NTJjMGI3Mjg4ZThmMmUwM2IgbGVnYWN5LXRydW5rCisxNzg3MiBiMGQxZGVjMjM1M2E0MTFhZWNkOWNiMzMzNDk4ZWQ5ODUwYWIzYWMyIGxlZ2FjeS10cnVuaworMTc4NzMgZGEzZThjNTA2NGNhZjNiZDIyYjFkMTNkY2ZjZmE3ZTg4OTUyMDBhMSBsZWdhY3ktdHJ1bmsKKzE3ODc0IGZiN2FjOGE0MGE5N2MyNGUwZGEzYzI3YTVjNTQ2MWVmZjdlOGFhNzkgbGVnYWN5LXRydW5rCisxNzg3NSBjMjg1ZGYxNWEwNTAzODMwMTU5ZGZlNGI3MGU5MmMzNDU4ZmJlYjNiIGxlZ2FjeS10cnVuaworMTc4NzYgOThiMWZhNmMxNjAwMGU3YTRmMzU0ODEzY2M3N2M5MTg4YWM5ODM4ZSBsZWdhY3ktdHJ1bmsKKzE3ODc3IGE2ZDM1Y2M0YmY1ZWU1ZDgzMjE3NGJiMDZhZDRlZWEyNjQ2ZGQ0MDkgbGVnYWN5LXRydW5rCisxNzg3OCA0MDVhZDBhN2Y3YTYxMDk5ZTdiYmQ4YzU3ODdkNmFjZGJmMDI5NWE2IGxlZ2FjeS10cnVuaworMTc4NzkgZjEyZDM1Zjk5NDg4NTVmYzM0Yzk2NTk3ZDRiYTM0YmYyNjkyNGMyMSBsZWdhY3ktdHJ1bmsKKzE3ODgwIDM3YjFjYWVlZDcwNTU3YTU5MDYzMzJmNjJmMWY2ZWQ0NTk4MmUzMGIgbGVnYWN5LXRydW5rCisxNzg4MSBkYjkxMzVmMzgwNjg5YTIzZWEwMDI0MjNmM2U1MWVmZTNiZWMxYzAyIGxlZ2FjeS10cnVuaworMTc4ODIgMGJiMzQ4OTg2ZDUyODFiMmUzZDk2NjljZTc1MGJlMmNlZmM1OWI5NiBsZWdhY3ktdHJ1bmsKKzE3ODgzIDI5YzJkNWU1MjE2MTJiODEyM2I2Yzk0ZjIxOGM4YzM5NTRhNjc1YzUgbGVnYWN5LXRydW5rCisxNzg4NCBiMzY4ZTA2YTNiNjI3NWU5MTQ2NTY5MjJhMzY3NTdjNjVjZTYwNDc4IGxlZ2FjeS10cnVuaworMTc4ODUgNWZmYTUxNWU2MjBlNGQ3NjQ0ODU3MzQyNDU2ZTg2ZWI1ZDQyZDY4NSBsZWdhY3ktdHJ1bmsKKzE3ODg2IDI1ZjEwOTJlY2Q4NmQ1NDgwZjI4OTI0OGViMjQzOWNhZWRlZTA0YzYgbGVnYWN5LXRydW5rCisxNzg4NyA1MmViNDk5ZjI1YjA5ZmQ1N2JlNTA4N2MzMjlkZTc2ZTA4MjM0NmY1IGxlZ2FjeS10cnVuaworMTc4ODggN2E1YzM4NTlhMzYxMzk4ZmExNjJjZmFmMTMwZWYwMjE2ZTQ5MDIxOCBsZWdhY3ktdHJ1bmsKKzE3ODg5IDliYzUyNzA2ZDI4MzRmN2E4YzUzODY5ZTMyOGE5ZDRlNTc4MTg5NjEgbGVnYWN5LXRydW5rCisxNzg5MCBjZTVkZmYzMGE5MzVkMTlmMThlZGViNDJlNGMxOTdiYzM5Y2I3MmZiIGxlZ2FjeS10cnVuaworMTc4OTEgNmM5MWEwNDFjMWQyYjJjOTVmZTZlZmVkYmYwNjA3OWQ0MmY3NTY2MyBsZWdhY3ktdHJ1bmsKKzE3ODkyIDk0YzAzMWQ3ZTljMmU4Mjg5ZTRhMWJmMzM0MTY2N2E5M2UyYmE2MjkgbGVnYWN5LXRydW5rCisxNzg5MyA4OTRkY2EyMjVkMjRhZWMyODU5Y2FlOWQyNWZhM2JiYTJiNTY2YTQ0IGxlZ2FjeS10cnVuaworMTc4OTQgNmU5ZmYwNjBhNzI4ODI5OWY5OTdlMTcyNDNiY2QyM2VkYmY5Y2FjNCBsZWdhY3ktdHJ1bmsKKzE3ODk1IGM3ZDQ2ZWFlOTVkODk4ZDg4MDQ4YTE0ZGZkZWUwZGM4MDBlYzliMjEgbGVnYWN5LXRydW5rCisxNzg5NiBlOTcxM2NiZTJiYThkMzA3ZDQ5NzFmZjc5YzA2NzllZTRlYzJjMzhhIGxlZ2FjeS10cnVuaworMTc4OTcgOTIxYzc0NTk3NzFiNDEyZWNhMjRlZmE4MWMzMDAwZjU2YTg0ZmRjZiBsZWdhY3ktdHJ1bmsKKzE3ODk4IGQxMDZkZmRmZjQ4MGFlYmYxYTM1OWM2OWEzYjliNzJkZjIyNGQ0ZDggbGVnYWN5LXRydW5rCisxNzg5OSA3ZWVmZGU5MGVjMGVlNGI0Y2UxZjQ5MDg0MzgxNTJlYzgyOGU4MDMxIGxlZ2FjeS10cnVuaworMTc5MDAgMjkzY2FmMGU2MzJhMTc0NDhiMjZjMTNiNWExYzE3YWE5Zjc3ZDE4YSBsZWdhY3ktdHJ1bmsKKzE3OTAxIGMwYzI1NGZiZGU1NzZiYzAxOWRkYzhjMTUxNWEzNTI0ODJiZTQ0ZmUgbGVnYWN5LXRydW5rCisxNzkwMiBkYWU3Y2VmNThhYzI2YWRkYzIxMzA1MTA4NWQ2YWNmYmQ4MDBlZjU2IGxlZ2FjeS10cnVuaworMTc5MDMgYzkwYzNhYWJkOGY1MDM2YTVmODE4N2UxNzIwNTFlZDQ4ZjQzNjI3YiBsZWdhY3ktdHJ1bmsKKzE3OTA0IGM2NTRiMjAxODQwMzljODhjNWU3MDcwMGVhM2YyNmI4NjI2ODA2ZTkgbGVnYWN5LXRydW5rCisxNzkwNSA0NTdmMGRmNDZkZDk4MDU1ZWI4ZWFkMDAxZTdhZjYwZWMzZDZmODU0IGxlZ2FjeS10cnVuaworMTc5MDYgMWRkNzJhOTJlOTIyYzM1YWQzZGM1Y2ZhYTJmY2VlMWFhZGM5OTg2YyBsZWdhY3ktdHJ1bmsKKzE3OTA3IDQzYzQ5ZGJkNDU0NmU4ZWNhZDE0OTBjMWQyMjI4MzJmM2FkOTU4MWQgbGVnYWN5LXRydW5rCisxNzkwOCA3OGJjYWU3N2U4YzcwM2U4NjZiYWE5MzRiZGQ4OGZlMjU0NmFhN2QxIGxlZ2FjeS10cnVuaworMTc5MDkgZmNmODVjOTBhMjc0MGJmYzZmYmMxYjY0MTYzMjc2ZWVlZjg1M2E0YSBsZWdhY3ktdHJ1bmsKKzE3OTEwIDI1NTc5Y2Q2Y2RkOTAzODA3ZmU0ODI5OGY5YWM4Mzg3OTFjMGVkMWEgbGVnYWN5LXRydW5rCisxNzkxMSBiZTRmYzhiNmUxY2I4M2EwMzA2Mjg2ZjgxZGMxODNjYTFkZTNmOWM0IGxlZ2FjeS10cnVuaworMTc5MTIgMDhlNmYxMDE5MTcxNDk4YjA0Yjc4MDNmNDkyM2YxNmNhNDI0OTgyYSBsZWdhY3ktdHJ1bmsKKzE3OTEzIDYyN2ZmNTc4ZjEyZjhmODUxOTJmMTczMmI5NGI0NjllNTY5OTA1NTQgbGVnYWN5LXRydW5rCisxNzkxNCA0MWJmYzlhNDBmZTM5NDk2YjgzNGQyMzU1OWQ2YzgxOGVkZThmODMwIGxlZ2FjeS10cnVuaworMTc5MTUgYmYyN2NhYmEzZDBlNDA5MjMxODU5OGM0MzNkMzc1NDQyZWY5ZWE5NiBsZWdhY3ktdHJ1bmsKKzE3OTE2IDNhMDRiZWJiNjY2YWViMGUwYmNlOGZkY2YxMGU3OTU0YjBhMzRjODQgbGVnYWN5LXRydW5rCisxNzkxNyBhY2I4ODYwN2I0YmQ3ZThiYzBkZTQyYTRmOWZiY2JlMmQ3YTBlMjk2IGxlZ2FjeS10cnVuaworMTc5MTggMTc3YWUxYzUyMDM3NjUwMjA2YWNkYjU3ZTM0MTM0Yzk5NjA3NGI3YiBsZWdhY3ktdHJ1bmsKKzE3OTE5IDEwMzYxMjUxNmFhOGQzNWZjZGRlYTBmZGNkOTk5ZWM3ZDhkOTA0NjEgbGVnYWN5LXRydW5rCisxNzkyMCA2NzU3NDgzNzhjODE5OWQ5NzQ5YjU0YTg5MWNlZjcxN2QyNmYzY2UxIGxlZ2FjeS10cnVuaworMTc5MjEgZjc4MDQ2OWE5NTc3Zjk1YzhjOTc1ZjEyMTRjMDMwZTk4ODY5MjFmYSBsZWdhY3ktdHJ1bmsKKzE3OTIyIGMwNThiYzM1NjQwZjc4YWU4ODQwZGI2MTJmMmE5YmI5M2JlZDg3Y2EgbGVnYWN5LXRydW5rCisxNzkyMyAxMThhYzg1YWYzMGEwNWM0YmMxMjE3MWFjYjZjZDhkMzQyODFjOGZjIGxlZ2FjeS10cnVuaworMTc5MjQgMTg3OWE0OGEzMTMzNmE0ZWI0Y2QyNWVkNzkxYWE0MzAxNDY1ZWU4YiBsZWdhY3ktdHJ1bmsKKzE3OTI1IDY5MGI0MWQ0N2MxZDZhZDU2NTg2ZmRhNjY4OWM5M2IwMjAwMmZjNDIgbGVnYWN5LXRydW5rCisxNzkyNiBhNTNmMTZiMjBmMWQ5MWJkOWRiMDMzMzViODkwOTZkZGUxYTMxODQ1IGxlZ2FjeS10cnVuaworMTc5MjcgNTdmZWE4NzA5NzU4ZjFmMzdmZjgwYjE0YmE4MTg0NDJmMzVjNmI2MyBsZWdhY3ktdHJ1bmsKKzE3OTI4IDcxYTRhYWRkZTAxOThiODY2YTQ2MDZmMWM3M2E2MWY1NTcyZTdhNzAgbGVnYWN5LXRydW5rCisxNzkyOSA2M2QyMzdhMjVmNDkxZTI2OGVjYWU3NjI0ZDg0OWM2ZDg4ZTI1MjQ5IGxlZ2FjeS10cnVuaworMTc5MzAgYjI1ZWFiZjY2ZDhkMzc1YzQ1NTUyODIzYjUxYjc1NjQ4ODY0NTg1NyBsZWdhY3ktdHJ1bmsKKzE3OTMxIDdjZTkwNjFmNzk2N2ZmYzczMjUyNTk1NWQzYTQ3ZWNmZjlmZTExNTUgbGVnYWN5LXRydW5rCisxNzkzMiA3N2QxZDc5YTY1ZDc1ZTg0YTg0NzczYzM3ZDgxYzMyZjUwZmZmZWE3IGxlZ2FjeS10cnVuaworMTc5MzMgMzE0MjAyN2I1OTc5ZGFlYWJkNTI2MTc1MTVmNDE4NGI5MTU3NmEyNiBsZWdhY3ktdHJ1bmsKKzE3OTM0IGFkOGVmMTU1Y2EzOTBlOGE2ODEwMjJhZTMxMWQ0MzM4ZDhiYWFiMWIgbGVnYWN5LXRydW5rCisxNzkzNSBkYzRjYWVkYzU5NjExYjE3MWIxNDk3OGMxNmE2YWYxZGI3MDYyNjQxIGxlZ2FjeS10cnVuaworMTc5MzYgNDdlNjgwNzcxMTdlNDIxMTUwOWRjMjgzYTNlNzY3YTEyMzhlNWY1MCBsZWdhY3ktdHJ1bmsKKzE3OTM3IGNkZmVjMzZmMTJjYzlmYTFiOGU5ZGE1ZWFhNTYwYTg2NTc5MmU5YmQgbGVnYWN5LXRydW5rCisxNzkzOCAwZTBlYTU2ZTRiZTg0YzA0ODgyMGIxMDI4NjVjMmEwNmZkZmFiZmM1IGxlZ2FjeS10cnVuaworMTc5MzkgYTExOWUwYzhiODBiMGU0ZDE5NjNiYjMzNGM2M2VhMzgyYjdiYjI5MCBsZWdhY3ktdHJ1bmsKKzE3OTQwIGMyZjEzYzM5NWI5YWU3Zjg4NWZjNDdhODE2YWFiMDZmMzI4OGUxZTEgbGVnYWN5LXRydW5rCisxNzk0MSAwMmFkOWNiNTIyMjI3ODMwNmE1N2Q4NzM3YmRkOTJjNWU4YmMxZGZhIGxlZ2FjeS10cnVuaworMTc5NDIgOWJlNjdjNWE4MjNhYjFkYTFjOTMyMGE2MTFhY2M1MWUzZTczMzQ2ZiBsZWdhY3ktdHJ1bmsKKzE3OTQzIGY5ZDRiZDc5YjQ2NDgwYzE0YWM0YWQ3YTI3NzIzMGUxMTRhM2FjMjAgbGVnYWN5LXRydW5rCisxNzk0NCBmMDlhODRhZjY0YmQ4NjMyMDFiY2I2NWZmZWJmNjA5ZDZjZDFhMTM2IGxlZ2FjeS10cnVuaworMTc5NDUgYTEzYTJhY2JlMjE0ZWY4ZmMwNmJhMzVlMzgwMGEzZWNjMzRiMTU5ZiBsZWdhY3ktdHJ1bmsKKzE3OTQ2IDFhNmY5MTU4NjMwZjFkNmVmYTk1YmVkODcwYjA5MDZlNDA1YmFhNTIgbGVnYWN5LXRydW5rCisxNzk0NyBkMGE2ZDQ0NGQ2YmM3N2IxNmQ4NjYzN2IzNmJhMWU1ZmJiNjUyYThjIGxlZ2FjeS10cnVuaworMTc5NDggNWRhOTYyMmZlZDdiNTQ3NGI1ZGM0ZTkxYmM3YjVlMjg3YzQ3YzBjZCBsZWdhY3ktdHJ1bmsKKzE3OTQ5IDQxYzQyYjFiZDU4MjhiOTQ4ODgwYzk1Y2U3N2RiMjYwNGMwYWI2N2EgbGVnYWN5LXRydW5rCisxNzk1MCA0NGZhMTZmMDFiNGUxMjI5YWNjM2QyNDU2ZWM2N2M2NjQ4OTZhNmVjIGxlZ2FjeS10cnVuaworMTc5NTEgMWIzNGM0NzVkYTg3ZmFlM2VhOGQ1YTU0NjY0NzEzZWFmZDczODc2YiBsZWdhY3ktdHJ1bmsKKzE3OTUyIGVjMWYyMzY1YmMyZDU3YjExZTYwYzI1NTVkZTcyZDc3N2FlNjA2MWEgbGVnYWN5LXRydW5rCisxNzk1MyBjMTk5NDYwY2NkZTkwNjYwM2M5MzI2YjgwMzgxNjA4NTE4OTE2MzkyIGxlZ2FjeS10cnVuaworMTc5NTQgOTViZTQzZDFkMzMyNjU3MTkzNmVkZTU5NzRhOTBlZTIwNzUxYTY2ZSBsZWdhY3ktdHJ1bmsKKzE3OTU1IDVmYjhkYzI4OTgxMmRmOWViNGQ2NDYyMDA5OGU4NGQyMzMwZDIwMzMgbGVnYWN5LXRydW5rCisxNzk1NiA3ZGUwODA4ZjFmZTMyMDdkYmM2NWExMTBmMGM2MDQ2NDNlMmJlZmYzIGxlZ2FjeS10cnVuaworMTc5NTcgMWFjYWM0NzU2YTAzYmViYTQwZmZiZDI0NzcwZDgwMGEwNGFmN2Y4MSBsZWdhY3ktdHJ1bmsKKzE3OTU4IGY4ZTk2MjUwNjA2M2RkYWY1MDgwZDEzNjg2NTgxNzdlNDQzZTI5YjUgbGVnYWN5LXRydW5rCisxNzk1OSBhMDJmOWRhYzIxNmNkOTg5NDI0ZmYwOWNkOWMzM2ZiM2NmNDZmN2IwIGxlZ2FjeS10cnVuaworMTc5NjAgOGJmYTk3MDNhNGU0ZjQwMzcwZTVlOWE0Y2M0NzRiYjY4M2NiZDA0MCBsZWdhY3ktdHJ1bmsKKzE3OTYxIGE1YTljZmMwMDliNWIzYzBhYjhiM2VkYTkxNGRiMjdiMWRjNjQzYTEgbGVnYWN5LXRydW5rCisxNzk2MiAyOTAwNDUyMDI2Y2NkNWVlMjIyNWRkODdkOGYxZGU4MmJiZjRmOGNlIGxlZ2FjeS10cnVuaworMTc5NjMgZjc2YTFlY2Q2YjU5MTZhZmUwZjU2NTZlNjY4NTI0NTg4ZDFhZjZhOCBsZWdhY3ktdHJ1bmsKKzE3OTY0IDY2NjA5MWYwZDcxNDQ3MWFlZDU1ZDg3N2UzMzg5NTYwNTk2YjRiNzcgbGVnYWN5LXRydW5rCisxNzk2NSBkMmMxN2FkZjJmMGM0NTU2OTUyYmE3NDQwZDkzZTc1ZWNkNWIwODAwIGxlZ2FjeS10cnVuaworMTc5NjYgY2UwNjY3OTkxMzNlYTQ3NTA1NWYxM2UzZGUwN2RlNzYwM2EyZWM4OSBsZWdhY3ktdHJ1bmsKKzE3OTY3IDMwODFkNzAxYmU4NjE1ZjMyYzlhODkxMDI3MGQyZGQxZTFiNDA2MTMgbGVnYWN5LXRydW5rCisxNzk2OCAxNTRiNzFlMTY1NjUwM2E2OWU4YjEzZWE5ZjJkZjVmNzEwNWY2M2NjIGxlZ2FjeS10cnVuaworMTc5NjkgYTgwNTQxMjQ1YjY2MzIwMGQxZTJjOGMxODRiZTg2YTFjYTdlOGJjNiBsZWdhY3ktdHJ1bmsKKzE3OTcwIGU5NmQ2NjRkZTI1NmFjYjlkZWQ4NjA3MTM2YjJiZmJiZDQzZGJmOWEgbGVnYWN5LXRydW5rCisxNzk3MSBjNmQ5YWZhNmU2YTA1YzVlN2IzODRkODJkZDI5NTZlMGM0NjYyYTRhIGxlZ2FjeS10cnVuaworMTc5NzIgZmM2ODZkZTg2MDU5Yjg0NTYwZjE0YTg3YjliYzQ4MmQxZDQwMmU1NyBsZWdhY3ktdHJ1bmsKKzE3OTczIDRlMWU5ZjVjMDc5NTA2OGU0M2QyYWU4ZjJlYWU5ZGYwM2ZjNjM5NzQgbGVnYWN5LXRydW5rCisxNzk3NCAxY2QwMjg1ZTNjZmVkODdjMjE4ODc4ZTZiZDdmZDcyMDY1OWMyN2Q0IGxlZ2FjeS10cnVuaworMTc5NzUgZDE2Yjc0MTNkYzY5NmRmNzRmZjllY2NhNGMyYjJhNzQ3NjNmNzc4MyBsZWdhY3ktdHJ1bmsKKzE3OTc2IDY2ZDI0ODMyODk2NzJkNzVlMmM4ZDNiZGNkODkzNWI4YmQyZDY2MzYgbGVnYWN5LXRydW5rCisxNzk3NyBhMzU4YmE3MDdlNGQzNTFlNTQ1ZDRiNDllYjRjYTVlMmU5YjBmYjU5IGxlZ2FjeS10cnVuaworMTc5NzggMGMwZTkwOWI4ZWQyM2FkNDBkNmI4ZDJhOTJjOWNiZDliNDc4Njc1NSBsZWdhY3ktdHJ1bmsKKzE3OTc5IDdkMGFmNGU4MTNkODVkZWVhYmZhODk5ZDMzYmQ0MTdlNzkzNWUyNTAgbGVnYWN5LXRydW5rCisxNzk4MCBlZjFmNDczYWFlZWJlYjNmMmU2NGNiNDJmODdkZjk2YzU0ODk2YzI0IGxlZ2FjeS10cnVuaworMTc5ODEgMzJiOGM1YTQ4MGFkZTM1Y2RiNTVmYjViMzY5M2ZkMmZhYjhkZDI2ZSBsZWdhY3ktdHJ1bmsKKzE3OTgyIDNhZTlkMzEzYmMzM2UwYjRmYTVmYWU2NTVhNzMyM2IzOGMyNDJjNjYgbGVnYWN5LXRydW5rCisxNzk4MyA2ODAzNDI5MjUwZTliZDA4ZmM3NTBhOTE4MjYzNjNkYjBjYTI1OGEyIGxlZ2FjeS10cnVuaworMTc5ODQgZjc3MTQ1M2MzYWY1ODg2NDg4MmZjMzM5NzNkNWE5ZDBmODVjY2M1YyBsZWdhY3ktdHJ1bmsKKzE3OTg1IGViYTMyM2Q3NDA3ZmExMzZlYjJmMjRkMzYzMDIzMzMwZDE4ZDg3YTEgbGVnYWN5LXRydW5rCisxNzk4NiBjZjI2NjFhNDU5OGViYjI3YzY3ZTlkODI2MTFkYTgyYmMzOTE3NDczIGxlZ2FjeS10cnVuaworMTc5ODcgN2U2ZTQwZTQxYzZlNGE3YzM2NDU0NTEzZTkwNWUyYjVlOTRmYjFiOCBsZWdhY3ktdHJ1bmsKKzE3OTg4IGIzOTE3OTQwZTFmYTFjMWEwNGE2OWYxYjk1MjRhZTBmN2VlZTBlYWEgbGVnYWN5LXRydW5rCisxNzk4OSAzNGE2ZTNlYWQxYzA0ODU1NzBmMjJmYjQxNTgyMzg3MDg1MmE0YjBkIGxlZ2FjeS10cnVuaworMTc5OTAgMDU2ODZmOTdmMzhkMjQ2ZGQzNDVmZWFiYmM4ZTM2NTI1MmQxYzlmZCBsZWdhY3ktdHJ1bmsKKzE3OTkxIGE1YzM0NjkyMThlOWM0NTRjYjVhZTI0ZGI2NmNkNmJiZGNjMjVlOTMgbGVnYWN5LXRydW5rCisxNzk5MiA5YWQwNzY0ZjJlODQxYjE2NTliZTc2NzE3MmY0MDgzZDJmODQwN2JlIGxlZ2FjeS10cnVuaworMTc5OTMgOTEyMDFkZTI1ZjM2ZDY0OTAyODQwN2U0ZGQ1OGJjMDQwMDRjOGFkMCBsZWdhY3ktdHJ1bmsKKzE3OTkzIGUyNzYzMjljY2UwMzZhNWY5ZTlkMzQ1MTI1NmRjYTU5ODRlNTQzZGMgbGVnYWN5LXRydW5rCisxNzk5NSBkYTkwNjdiYzk0OTQyOGY2ZDg4NDhiZDUxNjI0Y2JjZGI5N2VlMmQ5IGxlZ2FjeS10cnVuaworMTc5OTYgNTcxOTJmMGFjMTNhN2Q2ZmRmOTNmNTZhODE2MDI4MDVmNTgzNTc3NyBsZWdhY3ktdHJ1bmsKKzE3OTk3IGRkNDlmMjlkOTg3OTVlMjVkMTM0MjZiYzM3ZTMwMjM0NmI3ZWM2Y2MgbGVnYWN5LXRydW5rCisxNzk5OCBmYjk5NTg5MzNiMjU4YjU4MzZlYTM3Y2E2NjE0NmNlNzMxNzJmOWUzIGxlZ2FjeS10cnVuaworMTc5OTkgNDMzMTg3NDY2OTAxNjlkMmI0OTU0NDI1NTc4Y2UyNWViMzFiYTNiYSBsZWdhY3ktdHJ1bmsKKzE4MDAwIDU2M2RlZTU5OGQzYTlmNDYzZDM4MzY0NDI3ZmQzZGU5ZWE4NDNlY2IgbGVnYWN5LXRydW5rCisxODAwMSA3NGMwMjBhZGQ4NDZlYzRiNjZhMjBjOWI4MjljNjBhYjFlYzNhNDQwIGxlZ2FjeS10cnVuaworMTgwMDIgNmIwMWZjMjJlZjZlZjhlZDNkZmUzOTk4YzkwOTUwYjhlMDhmMWM4NCBsZWdhY3ktdHJ1bmsKKzE4MDAzIGExOWIxZDZhNTljZTFjNjhlNjJhYmIzYzY1YjU1MDhlMGM0NWVjNWEgbGVnYWN5LXRydW5rCisxODAwNCA1Y2YwYTAyYTU3NGIxMTk5OWJjZTNjNzM3OGVhYjVkZTc0ZDk2YzdkIGxlZ2FjeS10cnVuaworMTgwMDUgNWU1YjQzMTE4YzUyZGE2ZmM2YmM5YmVlNDdiMDI0YzUyMzAxZDc1ZCBsZWdhY3ktdHJ1bmsKKzE4MDA2IGEyZmNjNDg3YjlkYTE4NTg3NmZkN2U5Y2UwMzFhZWIxNWI2YmQzOTMgbGVnYWN5LXRydW5rCisxODAwNyBmZGMyYWJkZjQ3NzdlYmQyZjhkOWRkMzNhNmY5ZmM5OGRjZTBlZTdiIGxlZ2FjeS10cnVuaworMTgwMDggNDg2ZjNmZjE0ZDk1YWM5NzgyYTUzY2ViZTE5YjM1ZmVhMmVmMWRmOSBsZWdhY3ktdHJ1bmsKKzE4MDA5IGNhOWY2YThlOTg4NTcxM2JjN2Q4MTk4ZjYwMmFjM2QxMjVmM2Y4YWQgbGVnYWN5LXRydW5rCisxODAxMCBlZDQ5YTY3ODY5ZTljMjBmNGI2YzNlNDk5Y2Y2NjYzYzdkZDBiOWE0IGxlZ2FjeS10cnVuaworMTgwMTEgZTE3ZDhjZDA5Njg5ZjAxYWI3Y2FhYzJkZjZiNDYzZjA4N2Y0ZTYzNSBsZWdhY3ktdHJ1bmsKKzE4MDEyIDE3MzA1OTFkNWQ1ZGE4YTI1M2FiZTNjYzBmNzc5NmQwMDZkYTgwZDggbGVnYWN5LXRydW5rCisxODAxMyA3NGYxNjVkYzBiNWFlN2I1YWJmMjA0MDBhNDJmNTMzY2NhZGQ1NTk2IGxlZ2FjeS10cnVuaworMTgwMTQgYmVjZDhhMTIxNDY0ZjM2YTRhYTlkYmQyN2E2NzRlOGE3N2MzNjc2NCBsZWdhY3ktdHJ1bmsKKzE4MDE1IDQ1OTIzMmE5YjgwNGMwYTBjZjY0OTU3YzkyM2FlOTYxN2I4MjY0NDkgbGVnYWN5LXRydW5rCisxODAxNiA3YjA3ZDYyZDJjNzk2MWQ0NTRmNmRlMDc4NzM0NGMxZjMyMGU0ZmU1IGxlZ2FjeS10cnVuaworMTgwMTcgZTcxOTcxYTQwMmQzMTlhZWZjNGUzY2FiMmVjN2EyNzY0YjkzZTY5ZiBsZWdhY3ktdHJ1bmsKKzE4MDE4IDNjMjEwNjRlODIxNGMyN2RkZWU2MjE2YTI4MDM0MmM1MWIyY2I3NGIgbGVnYWN5LXRydW5rCisxODAxOSAwMDdhOTFkNzc3MDNmZWI2YmMyYTU2NGQyMzAwYTMzYjU2OTRmNjU0IGxlZ2FjeS10cnVuaworMTgwMjAgYjA3NTM1OTgwMzAxNjU0MGNmYjk0Mjc3ODQ4ZWFjMDU1MDFiMDRjNCBsZWdhY3ktdHJ1bmsKKzE4MDIxIGE4MDA2YmJiNjIyNTc3OWMzYTBkN2ViYTgwZmU4ODk3NTBhYzhhMTggbGVnYWN5LXRydW5rCisxODAyMiA4OTMwZWMzYmMwMGE5MWI3MjJhMjdmYzRmY2JkMjg4YTFmY2U3NTA3IGxlZ2FjeS10cnVuaworMTgwMjMgMjU3NzUxOWQ1ZWExMzk3NDZhNmUyOTcwZDA0ZTM3ZjI4ZjA4ZDQzOCBsZWdhY3ktdHJ1bmsKKzE4MDI0IGU2MWU2NGQxYjVlYzNiODFjNzQyMjgzODg4ZmJkYmNiZGRmYzJkMjkgbGVnYWN5LXRydW5rCisxODAyNSBlNTgyZjU3MzQzZjRkNWM4Mzc0M2RlY2I3YmE4MDQxZmQzMmJkYmMyIGxlZ2FjeS10cnVuaworMTgwMjYgMmVkZjM2NmY1NjNjOGRiNjg3NmIyMTNhODAxNDBjOTA5NzgwOGJhNiBsZWdhY3ktdHJ1bmsKKzE4MDI3IGY2MTAyYzVkM2Y5YzJjMzJkOTk5ZmIzOGRmNTVmOTMxMjQ1MTYyNTYgbGVnYWN5LXRydW5rCisxODAyOCAwOWM3YWMxODhjZTIxNzhiODdiMDY1MDRiMGU0ZmU1NWIzYmM0ZGI5IGxlZ2FjeS10cnVuaworMTgwMjkgODVhMDJjYzM3NTkwYTZmNDkwZGQ4OGNiZDk4ODYwNjg5NDY1YjhkZiBsZWdhY3ktdHJ1bmsKKzE4MDMwIGQyZjRkNzQ4YzkyMWViZGIwOTBmMzI3OGRjYTE2Yjg0ZjQ4NWVmOWYgbGVnYWN5LXRydW5rCisxODAzMSA3NDRhYTA2MmY0NzAxYTQxNTQwZGQ0NjgyN2FjZTVjMmFhZTkwYjgwIGxlZ2FjeS10cnVuaworMTgwMzIgM2ViODY4N2M5OGM2ZjdjMmM0Y2M3OTEyOTViNWNjYTdjNWYzN2I1NSBsZWdhY3ktdHJ1bmsKKzE4MDMzIGFiMWY5MGRkNTAyZjhhYTg1OTIwMzdkYjY3NzQzZGNmMmM1ZWQ3NDQgbGVnYWN5LXRydW5rCisxODAzNCBlNzgyM2YwY2EyMWEwNjEyYWEwNTk5ZGNjODUxNjVjM2Q1NjY1NDc5IGxlZ2FjeS10cnVuaworMTgwMzUgNTJkMmQzNmI4YmY3Zjc4NTZlZWM3NjUyMzI2ODg0ZTBkNWMzNGUwZSBsZWdhY3ktdHJ1bmsKKzE4MDM2IDFiNzNiMzUxNGI1ODU1ZDVlZDQ3YjcyMzg1YjIzOTU3NWRlMDJhZGEgbGVnYWN5LXRydW5rCisxODAzNyAwMTVkYTEzZjAwMzhjMTY2ZjBlNDZlYjc0YzE2OWI5ZjYwOTE3Mjg0IGxlZ2FjeS10cnVuaworMTgwMzggNTQyNzM4NThlYWQ5YzYyNTEwNTRlOTU0NzdhYTU0Nzk2N2IzMmI5OSBsZWdhY3ktdHJ1bmsKKzE4MDM5IDJlZDM1ODQ0NmYyZmUzMzkwMjM5MWU4ZjQ4MjM1OWZkMjExZThmZTEgbGVnYWN5LXRydW5rCisxODA0MCBiMzM4N2VlYmE2OGRmZTRjYTk4ZDVmOTJhZDJkNGUyMGYzNDBmNWUyIGxlZ2FjeS10cnVuaworMTgwNDEgNGQyMTg3MjY0Y2ZhN2FkMTEzMDBjZTllZDgyNTMzZDA5MWUwYWMwYyBsZWdhY3ktdHJ1bmsKKzE4MDQyIDllOWVlM2M1YTYwNzhmM2FlZmIxM2E1OWU0Y2FkYmYxNjFhZTkwZjMgbGVnYWN5LXRydW5rCisxODA0MyAxMDBiZWViZGU5ZGZmNTRkNDhiNDUwNTU3MTIxYTIxMWI0N2RhZTJlIGxlZ2FjeS10cnVuaworMTgwNDQgYjI4OTJjYmM2M2RiNzM0NDE4MGNiNTI3MDI1OTJlZDU2Yjc5OTUzZiBsZWdhY3ktdHJ1bmsKKzE4MDQ1IDVhYThjNWFhZmZhZGQ2NDI0NWQ0MDk3Mzk2NzBhNjYxMTZkOTdhMjggbGVnYWN5LXRydW5rCisxODA0NiBmMDQ0YjA2ZTMxN2RhYTI0MDJkMzc5ZjY0ODRjN2YxNDkwZDVhOGYwIGxlZ2FjeS10cnVuaworMTgwNDcgMzE5YzZlMzcxODI1MWM5ODM1MzQzNjExZmQyNzMyODBmNDBmYzEzYiBsZWdhY3ktdHJ1bmsKKzE4MDQ4IDY1NmQ0MzQzODhjOGUyMjgzMDIyYWMxNGQ5NmQ0Y2I1MjJjNDJjNGEgbGVnYWN5LXRydW5rCisxODA0OSBkYjRkODBhNjczODlhMjA2MWQxYTFhM2RlMjMwOGMzNDAwMTBmYzA0IGxlZ2FjeS10cnVuaworMTgwNTAgMWM2M2UyMjRmNjE2NjQwYzY4ZWE0NjU5YzViZDg3ZTg0NGU3YWFiMSBsZWdhY3ktdHJ1bmsKKzE4MDUxIGUzZDgzNjVlYTIzMTUxMjZlODAzZDQ5MmQ3ZjlkOGE3MDFiNTg4OWYgbGVnYWN5LXRydW5rCisxODA1MiBhZjAyYWM1ODAwMjhjOWU1ZDFjMDkyZjIwMzUyZjVjYWM0YTJmYmVjIGxlZ2FjeS10cnVuaworMTgwNTMgMzc0M2E2ZGJjNGE3NzJiNWIwOGJkY2QxMTJiMzgyNzVmODZkNjA5MyBsZWdhY3ktdHJ1bmsKKzE4MDU0IDQ4Y2M3N2I2M2FkNWRmNWRlYzBjM2IwNTk3ODI2OTExMzE2YzRmM2UgbGVnYWN5LXRydW5rCisxODA1NSAyM2JmMzA4NThlZjQ1MzFlZjE0MjYyZjkwNjFlMzhlNjE3YTUzNDNjIGxlZ2FjeS10cnVuaworMTgwNTYgZDQ2OWQxNTcyM2QzNWYwNTJmZmI2NGMwNGNkZmJiNGUyMDRmMmNiMCBsZWdhY3ktdHJ1bmsKKzE4MDU3IDc3ZWE4ZmNlZjI0Y2IzNTViMGJlMWZkNjgyMDgzNWUzZjFiMTg0MzYgbGVnYWN5LXRydW5rCisxODA1OCBjNTBiNzg2ZWJjNDg0YjI0ZmI5MDdiZjIwMWQ4N2E5OWFmNTNiYjQ1IGxlZ2FjeS10cnVuaworMTgwNTkgNGVlYjAyODE3YjVkODBlNDEzYjdhNmVhZGM1YjNlNWNmYmYyN2FlZCBsZWdhY3ktdHJ1bmsKKzE4MDYwIDliN2RkZDljYWUzM2UyNzcxZThkMjcyZTYzNDI1OTg5NjFlYjkzNGYgbGVnYWN5LXRydW5rCisxODA2MSA2NDE3Y2U5MTRkYWU4N2VkZDI4NDkxNDhhZDFmNmI0MjA5OWU0MGI3IGxlZ2FjeS10cnVuaworMTgwNjIgZTBhNTgzNWFmODMzNTBhMDc4NjBhYjdlMWE3OWY5NWY0OWQwOGI3ZCBsZWdhY3ktdHJ1bmsKKzE4MDYzIDA0ZTc2ZTA4ZTEwZmY0MWZlMmFlYzhhNTZiZWFlNmZkYTM1MWRiYWEgbGVnYWN5LXRydW5rCisxODA2NCBjOTRmMWM3NzYxNTM2ZWE3MDYzMTY3MWZjMGNlMzljMWUxMDRkZGY1IGxlZ2FjeS10cnVuaworMTgwNjUgNzAxYTU2MWJkZWZhODE2NDg2NGNhYTkyODJhNGFiMmU1YTg1YmFhZCBsZWdhY3ktdHJ1bmsKKzE4MDY2IDc4Mzk2N2IxNjg3OWE4YTg0YmU1OGIxOTJmZTE2Yjk3YWU5MjJhNTkgbGVnYWN5LXRydW5rCisxODA2NyA5ZjMwNzc1MDZkMWExNmJhNDg3YmM1MTBiMDdmZjAxYTE2ZDhkY2JkIGxlZ2FjeS10cnVuaworMTgwNjggZDJjMjA1YzM2ZDhhNDE4ZjcwZGM5MTFmMDhmOTNiNDQ0YmQzNGI2MyBsZWdhY3ktdHJ1bmsKKzE4MDY5IGU0YzliODA1ZjM5ZmJkNzgzYTA5MjUwYTEwOWRjMTc3YjMzN2QxMzYgbGVnYWN5LXRydW5rCisxODA3MCA1MGE4ODhlYzU3YzEyNzExZmQ1MTFhMjkzY2UwNTM2NTkxMjBjYWJkIGxlZ2FjeS10cnVuaworMTgwNzEgODgyY2VmZTIxZGMzNjgxODVkN2ZmZDc5MDk4NjNjYjA2NzU4MjdlOCBsZWdhY3ktdHJ1bmsKKzE4MDcyIDdkNDUyNDliMTQ3N2Q5Yzc4Yjk1NGZhMzk0MDM1OTZiNDViYzA3ZmIgbGVnYWN5LXRydW5rCisxODA3MyA5NTk4NjUwZjJiYzkwMjMyMGI3ZTkyMGNlYzgyYzYwZmQ0OGQwMzFiIGxlZ2FjeS10cnVuaworMTgwNzQgYTM5NzVkMjgxMWYwMDg5ZjUyZGEyY2UzYzU4NmFhN2U3YjZjYTg4YyBsZWdhY3ktdHJ1bmsKKzE4MDc1IGE4MmU0YzI5NWI5MzAwZDMwOGIyNmQxNGJmNDIwOWJiMWYzMDc4NTggbGVnYWN5LXRydW5rCisxODA3NiA1YjU2NTRjYTc1NTViOThiMGUyYjQxY2Y2NjExMDlkNjAzZTQzY2MyIGxlZ2FjeS10cnVuaworMTgwNzcgOTlmMzhjNzU1YWJlYmE0NTUwMTA5OGY2YTJhYjQwNTY2MzU5MDFlNyBsZWdhY3ktdHJ1bmsKKzE4MDc4IDNlNzAxNmM3OWRhYTBlN2FmY2QzZTQ1MmZkZjJkZjcwMGM1ZTMzYzcgbGVnYWN5LXRydW5rCisxODA3OSBkN2M5M2E3OGM5NDkyOGFmYjljMjhjM2I0NGFiOWYxN2Y4OTJlMDQ1IGxlZ2FjeS10cnVuaworMTgwODAgM2Q5MGUxZDc2MDVmNzEyNzIzYzRiNGQ2YmNlMzBiZWNjNGIyNDBkMiBsZWdhY3ktdHJ1bmsKKzE4MDgxIGU0NzBhOTYxOGNhNzJhYmEzNTg2ZDE0YTM0YTNkMjM0NjE0MjcwZmQgbGVnYWN5LXRydW5rCisxODA4MiA3ZTkyYjdhNTA1N2M1MTBmMWQzYmVlMjc5MmUzNDNkZjAzYWNkN2U0IGxlZ2FjeS10cnVuaworMTgwODMgNDg2YTMxZDhhM2IzNWM1ZjkxZmUxNzI3YzU0M2M4ZmE3NmMwNjNmNSBsZWdhY3ktdHJ1bmsKKzE4MDg0IDQ4N2IzNTAyYTQ1YjMxMGZjZGE3MGFhMDlmZGIyZDY1OGNkNWQxYWQgbGVnYWN5LXRydW5rCisxODA4NSBmNzkyODIwZjNjZDRiZWY1NjA1M2NhZGZlOGU0ZGU1ZDAxMjY0NWFkIGxlZ2FjeS10cnVuaworMTgwODYgZDJiOWNjNDQwYjhkZDQyZTAzMTVmMmI4ZDMyNjFmMzEwYzdhMGIwMSBsZWdhY3ktdHJ1bmsKKzE4MDg3IGJkODhkZjIwZGEyZjU5YWI0ZWRkZDU5MmEzOTUzNzYwMjQwY2E1OTEgbGVnYWN5LXRydW5rCisxODA4OCAxMGIzY2JkYmRmZDlmZDkxOTVmNWY1NDAyM2EyZDQzZjcwMTMyMDk3IGxlZ2FjeS10cnVuaworMTgwODkgMzhjNzk1YWZiM2I4MDUzZWI2YThkMmFjZGY2ZTg3YjY5YjZkMmFkMyBsZWdhY3ktdHJ1bmsKKzE4MDkwIDg2NGYxNzE0YWYyODcxYjMwN2NlNDM3MWY5NmE5YWE1NmMwNGNiZGYgbGVnYWN5LXRydW5rCisxODA5MSAwMzcyMGEyNmNmZTczNjU0N2Y4NjdmNDc4MTM4OGQwMmI3Y2RkZGJlIGxlZ2FjeS10cnVuaworMTgwOTIgOGZlMmE3OTgxZDcwYjMyYTk4ZGJhNjQwYTY0NDIwNjJmMDkwN2VkMSBsZWdhY3ktdHJ1bmsKKzE4MDkzIGM5NGMyYWU3NDZmMWNiM2E2NDJhNWZkMTRhODMwM2MwYTdlYmU1OWQgbGVnYWN5LXRydW5rCisxODA5NCBmMWFkZThhYjE4Njk1NTM3Y2NlYzkwZjdjZTMzYTg2ZDY2NTY5NTU3IGxlZ2FjeS10cnVuaworMTgwOTUgNzViZmJlMzdhYjdhNmMwOTAzNGJmYTdjMGEwNmViNzZjNzQ2ZTk5ZSBsZWdhY3ktdHJ1bmsKKzE4MDk2IDlhZjdmY2UzNjM4NDEzMTczYTAwN2ZjZDM0MjI0MmVlZjE5ZjkwODMgbGVnYWN5LXRydW5rCisxODA5NyAwMjI3YjU5NjFlZWY3NGE4NzgyMzBhNjA4ZDBmMWYyYTk5YTViODBmIGxlZ2FjeS10cnVuaworMTgwOTkgZGE0M2IxNjk4NmI2NzcwMWQ4YjcwNDQ1ODdjNzE1ZGMyYzc5MzY2MyBsZWdhY3ktdHJ1bmsKKzE4MTAwIDY1Nzc1MGMxZDc4MzU0ZDg3ODc3M2RjZjJjMzJkOGQ5MjQ4NjRjNzAgbGVnYWN5LXRydW5rCisxODEwMSAyY2RmYzQ2ZTgwNjhkMGQ4YWQ5ODIzYzQ1YzgxMWY0NmM4NGVmZmFiIGxlZ2FjeS10cnVuaworMTgxMDIgZTllODgyNGUzZDhkZmQ5YTNiZmIyZWQ5ZmQ0N2FjMjRiNjg0NDA2MiBsZWdhY3ktdHJ1bmsKKzE4MTAzIDcxZWEyYmIwMTg4OTU3MmY5Njg3ODY2OGQxMTZkMTc2NDE0OWE5ZDAgbGVnYWN5LXRydW5rCisxODEwNCBlNGVhNDRiMTBhYmJlZjI1YWQxMDdlMGZlMTE2NGI5YzllZTRkNjg0IGxlZ2FjeS10cnVuaworMTgxMDUgNjgzNzEzNTA4MWQ0NzI3ZWVmZGU3NDc1NGJkZjJiMDIwYTYxZDMyNyBsZWdhY3ktdHJ1bmsKKzE4MTA2IGRkMGQxOTk2NzRmODJhNGNmNWUzMWY3MTMxOTNjMGY0ZDJmOTcxODMgbGVnYWN5LXRydW5rCisxODEwNyA4Njg2ZjI4NGZhOGQ3NDkwMTNlY2Y0M2Q5Nzk3NjgwZDAzOWVmNGE4IGxlZ2FjeS10cnVuaworMTgxMDggNzM1ZWQ4NTZkZTYwZTQxOGY2NzU3YWM3M2NiYWU0YmEwYzBhNTVjMiBsZWdhY3ktdHJ1bmsKKzE4MTA5IDJhMDVjMWZiZDg5NDdkZDIzMzAxZjhmNDgwZWVmZWRhNTFkYzU5YjIgbGVnYWN5LXRydW5rCisxODExMCBjYzllYjE4N2I3MzAyY2EzNzcwYjExNmE5YWMyY2Q0YWRkYzg4OTQ1IGxlZ2FjeS10cnVuaworMTgxMTEgOTcyMGMyYzZmNDM1ZDNkNmNkZWIzYjkwMmY0YWIyMDJiMmNkNjU2NyBsZWdhY3ktdHJ1bmsKKzE4MTEyIDBmOWZkM2ZkNzc5OWE4YWNjZjFmNTZiYmFjZWZkMTkwOTMxMTEwYzkgbGVnYWN5LXRydW5rCisxODExMyAwODEzMDIwYjI5Nzc1ZTFjZjJjZmEzNDE4MGYzYWFkZTQ3ZTY3ZTQ2IGxlZ2FjeS10cnVuaworMTgxMTMgMmZhNGUzNTA4M2UwMjM0MmNhMDE0YmY1YmZiYTQ2YWVjYjgxNmMzMSBsZWdhY3ktdHJ1bmsKKzE4MTE1IGJkNGNkNzNjYjBkNmQ1Zjg4Y2VkN2RmNzRkMzBkN2QxNGIyMjZiYjcgbGVnYWN5LXRydW5rCisxODExNiA2MWY4MjMwMDkxNDVjYTEzYThmYjVmNjk4N2ExNjI5Mjk5NjYzM2NjIGxlZ2FjeS10cnVuaworMTgxMTcgMzE0MjY5OGQxNzJjODU3YmI5OTE4YzUxMmYxZWI4ZjA1NjYyMjYwYiBsZWdhY3ktdHJ1bmsKKzE4MTE4IGExODdhZDgyYzMzZjQ3MjkzZjQ0YTRjMzQyMzhkM2Q0NGM2MDRhYzAgbGVnYWN5LXRydW5rCisxODExOSBkMmFhMjY2YWU0MWM4OGViN2VjMGUyMTg5MWZlYTA2YzQ1ZDhiYzA3IGxlZ2FjeS10cnVuaworMTgxMjAgYmM0Zjg5ZWVmYjA0ZDQyZWI3ZTFiMWMyM2Y0YTM2NmU4MDMwMDRkYiBsZWdhY3ktdHJ1bmsKKzE4MTIxIDg3NzgwZGJmOGQxNzRiMWJkZTc1M2FmNTBlODYxNTYxM2U4OGFiM2QgbGVnYWN5LXRydW5rCisxODEyMiAwZDNiYWJhYzQzOThmYmUzOGI1ZjQ3MGFkOWE4OGI0ZjAyYTEwMDRkIGxlZ2FjeS10cnVuaworMTgxMjMgYjUxNjI5OTgwYzg4NmMyODRlYjQzYjVkY2I0NDI2YjkxY2EzMTVjOSBsZWdhY3ktdHJ1bmsKKzE4MTI0IDM4N2YzMWFjMzJlNjQ4YzU0Mzc5N2Y0M2EyZmYyMzkwYmQ4ZmZjMjMgbGVnYWN5LXRydW5rCisxODEyNSBjOTRjMWI2NjBkZGIxNTZhN2VmYjRlZDgxZDAwZDg0ZjhjNDEyNWM1IGxlZ2FjeS10cnVuaworMTgxMjYgZDUwMzM1YWM1NTgwM2MwNDkxMWY0YzkxMzUxYzIyNDM5ZWNkNTFiNSBsZWdhY3ktdHJ1bmsKKzE4MTI3IDA4MzI4MTBjNDYxMjQzMzc4YzUzMDU4MWE1ODQ3Y2I1MGEwMDEzY2QgbGVnYWN5LXRydW5rCisxODEyOCBkNTc0MGUxMmVhOGEyOWE5ZGFhNGFkYWI1ZGFlNTlmMzk3YjNlNWY0IGxlZ2FjeS10cnVuaworMTgxMjkgNzRjNjE1M2FiYmMxMGQwZDdkZWQyNDBmYzQ3ZWIyNWJiODc5MDI2OSBsZWdhY3ktdHJ1bmsKKzE4MTMwIDkyOWM5MmM1MGNiMmJiZWM4MzY3YzA1OGJlMDE5MTI0MDlhZjA1N2UgbGVnYWN5LXRydW5rCisxODEzMSAzZTk2ZmQ0NGI5ZDBmNzhmZDQ5MjU5ODFjNDJhZmQ1Y2NiOGQzODA0IGxlZ2FjeS10cnVuaworMTgxMzIgNjM4MWZhOGQ3ZGYzMzcwNGJjMjk2ZDgwNGViN2M3NmUzMGVjOTdlMiBsZWdhY3ktdHJ1bmsKKzE4MTMzIDY4MTU4ZDY0ZTg3NGU5NTA3NGM4OTE2NzBkZGI0NGMwZDI3ZjNmNDQgbGVnYWN5LXRydW5rCisxODEzNCA4NDdkOTllNGYyNGFkM2UyMDdlOWE2YjhkMGFiZTdlMTk0ZDgwNjAxIGxlZ2FjeS10cnVuaworMTgxMzUgNjVkMjY1ZDg5ZDhmNDI1NWM3MzU3Yjk5OGQyMjBlOWY2YzA3ODJjZCBsZWdhY3ktdHJ1bmsKKzE4MTM2IGJhMzY3N2UxZjgxYjY1ZGM3NGM0MWRlZjk1ZWVkNWQ2MDZiYzhkNjEgbGVnYWN5LXRydW5rCisxODEzNyAxMTY3NmRkYWZmMDE1ZTI4N2EwZTc4MWYyN2I5YjY3MGU4NmEyMGQ5IGxlZ2FjeS10cnVuaworMTgxMzggMjU0MTA2MmVkNGRkOThiYWM5Y2IxZmM3MDk0Y2NmMGIyOTUyMmFkNSBsZWdhY3ktdHJ1bmsKKzE4MTM5IGE1Y2E1NDk2OWEzZmZlNzI4YWY1MzYxNmU3NmRjYjgzMzkxMmE3MzkgbGVnYWN5LXRydW5rCisxODE0MCBhZjJhYTgwN2FjZGU3ZmE0Y2EwODg2NDMwNDIyNDkyMWJhNjE2ZTAxIGxlZ2FjeS10cnVuaworMTgxNDEgYmYyMWU0MTdiZWQyMjM0OTIwNTg1YzMyYjM5OWJiOGU0M2M4NmE1MSBsZWdhY3ktdHJ1bmsKKzE4MTQyIDRjN2M3NzliYWQ4NzliOGRlYjcwZGRkMzVjZTdhMmE0NTQ4ZGMyOGIgbGVnYWN5LXRydW5rCisxODE0MyBiOTQwYTBmYzI5ZTMzOTQ5MzY1MDc3YTBmNWExZTg1NzczMzczYmY0IGxlZ2FjeS10cnVuaworMTgxNDQgOGY0NTkyZjU0OTg4ZGJlZDQ2MGE3MmQ5MzE2NGM2MzRiMjFjM2RkZiBsZWdhY3ktdHJ1bmsKKzE4MTQ1IDEzMmU2OTg5MmFhNWQxNWFlNTA4ODBhZDFjNWFhMTExYmZkOWE0ZTAgbGVnYWN5LXRydW5rCisxODE0NiAzYTdhZmQzZTZjOTc4MTRiNDA0ODQ3ODEzMDMxMDNlNzE1MTE4ZDNkIGxlZ2FjeS10cnVuaworMTgxNDcgMWY0YTlhZGUzMGVjYzE3Y2IxYjc4MzQxZDFlMGIwNWI4ZjM5ZmEzMyBsZWdhY3ktdHJ1bmsKKzE4MTQ4IDI3MmMyOTY1MDgxYzY1MTg2MDM2OGQ3NDFjNWM2ZWZjOTE0YzE5Y2IgbGVnYWN5LXRydW5rCisxODE0OSAyM2IxMTA4ZDZjOGI1ZmNhZDcyODI4MDFiMTI3OGQ0ZDFiZjUxOGExIGxlZ2FjeS10cnVuaworMTgxNTAgMWY5ZDVlYjg0YjBiMjBjMGJiNmU4YWJhNmRiMDc2ZWM4NDYzOTY5MSBsZWdhY3ktdHJ1bmsKKzE4MTUxIDlkZDdlYWI4MzZkN2NmYzljNTljM2VlYTZiOTYwNGE3MGNlNDMyM2QgbGVnYWN5LXRydW5rCisxODE1MiAwOWJmNmQzMDAyNGZiMDg4YTUwOGY2OTAyZWVmNTBlNTAzNGVkNzc2IGxlZ2FjeS10cnVuaworMTgxNTMgODQ3ZGM2MWUzMGY1YzhlODhlOTc2OTViNDQ3YTk0NWEwOWM2OTZkYiBsZWdhY3ktdHJ1bmsKKzE4MTU0IDc1N2ZmODhlMTdhYWRiZGEzZDMxY2Y4OGM2YWY0ZjI5MzBkZmIyZjQgbGVnYWN5LXRydW5rCisxODE1NSBlNmExMDg1NzI1YWNmNDc4YTllODFlYjM3NWU0NzMwNWY4Y2QwY2ZlIGxlZ2FjeS10cnVuaworMTgxNTcgZjIwZGVhZWFmOGI5N2MyMWQ2ZmUwMjk1NGJlZGZiN2ZkMDQ1NjgwMyBsZWdhY3ktdHJ1bmsKKzE4MTU4IDg1YTUwOWZhY2NjNzk2ZjMwMmRmZjk2NGRiZmEyOWRiZDNiNTU1MjggbGVnYWN5LXRydW5rCisxODE1OSA2OGJjZTVkODNmN2I5M2E3MWVlMmQ0YTdlM2Q5Y2Q4N2Y2MmE2NTg4IGxlZ2FjeS10cnVuaworMTgxNjAgMGRhNGNjYzdlOGNmMzZlNmZiMmJmNWVjZWJmYjhkNWEzODY1YTNiNSBsZWdhY3ktdHJ1bmsKKzE4MTYxIDJhOWQyNzY1NjI1ZTVhNzc1ZGQ1YmRhNjBkNDM1NTRhNzY3Y2QyMjcgbGVnYWN5LXRydW5rCisxODE2MiBiMjExMDI2Y2VmODRjYTgwM2Q4NmY5ZGFhMmI5NjM2ODBlNTYyYWM4IGxlZ2FjeS10cnVuaworMTgxNjMgMDgyMDk5NGUyZDVlODc2ZjFlMDliZjJjNDc1ZDg3N2RjMWFjMzczYyBsZWdhY3ktdHJ1bmsKKzE4MTY0IGE2ZjNlZjEwODE1ZWNiOGRjMTBkOGQ3YjljYTA5NGFhZGRjYTBmYmMgbGVnYWN5LXRydW5rCisxODE2NSAwN2YyNDI2MWM2ZTZlYmUzZWZjZTQ0OGNlNDk0NmM1MTZmN2ZiMjZhIGxlZ2FjeS10cnVuaworMTgxNjYgYTk5OWQwNThmYWI1NTgxNTgzOGMwMDA2MjM1Yjk4Nzg4OWE0N2FlOCBsZWdhY3ktdHJ1bmsKKzE4MTY3IGY4NzIxZTg0OTQyNDZjYmE0MTgzMDE5MmVkYjdhMjg0N2VjZWJjODkgbGVnYWN5LXRydW5rCisxODE2OCA4NDdhZTQwMDc0ZDRlMDA3MzRiMzBhMGQ0Zjc2YmUyNWFiYTY0OTQ3IGxlZ2FjeS10cnVuaworMTgxNjkgMDc1OGNjYjMzNjNjZmQ2NGU5Zjc2YzQ4ODAxMWNlZDZlNWNjYjg2ZSBsZWdhY3ktdHJ1bmsKKzE4MTcwIDVkMmEyMTg1YzY1MWE0MzM5YmE0ZWE4MTY3ZDYwYTY0YmY1NjBjNjAgbGVnYWN5LXRydW5rCisxODE3MSAzMzMzN2U1YTQzMDBjOThkYWExNTlhY2Q4YzBmMTU4Zjc1MjVlYzM5IGxlZ2FjeS10cnVuaworMTgxNzIgODZkMDY5NDE0MDk5ZmU5ODM2MzU0MjFmOWU1Yjg3MTMyYWIwNzEzZSBsZWdhY3ktdHJ1bmsKKzE4MTczIDQ5NDY4YzAwN2MwY2Q1YWYyOWMzOTcxZWZmNzQ5NjRjNTQxNWIzYjcgbGVnYWN5LXRydW5rCisxODE3NCA4N2I1ZTQ4MDc2MmY4NmIxNzk3MGM1YjNjYTkwMWJhNjQ2ODE3MDE5IGxlZ2FjeS10cnVuaworMTgxNzUgYjQ5ZjUyMmJmODkzZWE1MmFiMDU5OTY4YWY2MjE1ZGFlYWQ1MGY0ZiBsZWdhY3ktdHJ1bmsKKzE4MTc2IDhlODY1ZjVlY2Y3ODQxZmQ0MTkxMmFiMDRlMzBiZDEzZjdjODFmNGUgbGVnYWN5LXRydW5rCisxODE3NyAxMzk3NWFlYzUxNTIxNTYwMTczMzhmYWZmMWUyOTZlM2Y4YjNjZGNjIGxlZ2FjeS10cnVuaworMTgxNzggOGFhOTQ3ZTFlZWU4MmEyZWYyZTJjZjYwZDAwMTFjMDQzOGFmY2JhNSBsZWdhY3ktdHJ1bmsKKzE4MTc5IDA5ZWM4ODJjZGU2MTQ0MjBiOTU1MWEzOGJjMTk3YjBkYTc2YWI2ZGMgbGVnYWN5LXRydW5rCisxODE4MCAzYmQxM2EyZmM4MzgyNDg0ZTAwMmM1MmU3M2NlMWI1YTVhMjM0MjkyIGxlZ2FjeS10cnVuaworMTgxODEgMTFlM2E2ZTE2YTlmMjI1ZmE2MmE4ODE0ZGVjMDRmZTRjMDNlMDZkOCBsZWdhY3ktdHJ1bmsKKzE4MTgyIGQxN2JhMTQxNDgwYWU3YTYzYjc3ODI3MGFjZTQ2ZmUxZDRmOWU1OWQgbGVnYWN5LXRydW5rCisxODE4MyBmZDE3MjE3ZDViYTg2OGFmMGZlYTM0N2M4YThjY2NhOWZiM2M4MGYwIGxlZ2FjeS10cnVuaworMTgxODQgZDhhY2EzYzg5MGY3YTRmYzM1Mjg1NmIyYzFlZTQ4YjU2MjM1MDcyOCBsZWdhY3ktdHJ1bmsKKzE4MTg1IDY1NTk0ZmViNTUyNzU3ZTc2ZWFkOTY3MGU1M2QwYmM0M2ViZjY3MjkgbGVnYWN5LXRydW5rCisxODE4NiBlNWQ0YzQyNGM0NGY5MzZiNzY0ZjhhNTBhM2ZjYWRjZjgzMzIzZGQ3IGxlZ2FjeS10cnVuaworMTgxODcgYzE4NDZkMzMxZGU5ZDFkMzk3NTJkNWU1MTEzMDFmM2JmZWI3OTI0NyBsZWdhY3ktdHJ1bmsKKzE4MTg4IDBkNjNjMGNhN2FlNDIyMzk0NjUzZWMxYjE0NzMzNGVhMDRmNzNkOTQgbGVnYWN5LXRydW5rCisxODE4OSA1ZDU4NmQ0NWNiNWE1MjRhZDhhMDNkODE4OTg1MjcxZTc3OGU5NGY5IGxlZ2FjeS10cnVuaworMTgxOTAgODE4OTA0YTk5Y2EzNzMxN2UxYzIzN2IxN2ViZjhiN2I3MDhlYTE2NSBsZWdhY3ktdHJ1bmsKKzE4MTkxIDc4OGI1MjNkNDgyN2IyNDY5NDZjMDUzYzU1Zjg0OGI2MDRjZjkyZWYgbGVnYWN5LXRydW5rCisxODE5MiAxMmFlYzMzODFjOTQ2YmM3YjE4ODcwZjIzNWQwYWY5YWQwMjc5NzZkIGxlZ2FjeS10cnVuaworMTgxOTMgZDUxNTdjOGJiMTFhNGRkYTEyYzBjN2YxY2ZkOTJiODgzNDM4YjI1ZSBsZWdhY3ktdHJ1bmsKKzE4MTk0IDEwMGM1MzNkOWEzZTYxNTY2ZDNjNTFlYTcwNGJiNmM0MWI4NzdiYjIgbGVnYWN5LXRydW5rCisxODE5NSBlYzc5ODAwZjRjMjc3MDI1ZjAwN2NhZDMzY2Q1YmVhN2UwNDY0NWZhIGxlZ2FjeS10cnVuaworMTgxOTYgYmJjOTkxYWI2ZDMyMjFhNmY1M2Q1MmM1ZWY1MjIxODg2ZmVkZjg4NCBsZWdhY3ktdHJ1bmsKKzE4MTk3IGE4MWY5MjAyODAzZGJkMmU1NTE2MGExNDk1NTk1N2UzMjA0ZWQxYTUgbGVnYWN5LXRydW5rCisxODE5OCBjYTFhZTIxYTMwMzliMzQxZDNlNjY1NWY4NDk2ZGRiOTM3MGMwN2I5IGxlZ2FjeS10cnVuaworMTgxOTkgYzJkNzQ1MWI0MmY2NmM1MjhiNTAzMjZmZGFhNGZlMWMyN2YwMGFiZSBsZWdhY3ktdHJ1bmsKKzE4MjAwIGQ5OWEwZjZjZmNlMjBjOGFlOTk2MjY2NmU2Y2UzOTU1ZDBhMTYxMjkgbGVnYWN5LXRydW5rCisxODIwMSBjMmQxMDI3NGEyMTQ4OTJmNTNmNzIzZTIxNmNiMmI4ZDI5Mzc3OWVkIGxlZ2FjeS10cnVuaworMTgyMDIgY2IxMWZhNWIxMWY0MjNkZmI1MzM4OWFkNGQyMjMxNTk5MGVlNzU1ZiBsZWdhY3ktdHJ1bmsKKzE4MjAzIGFjZjJiMTllNDM0NDMyMzE0YWI2NzAyMTNiNzcyY2RlZDNiODFmODQgbGVnYWN5LXRydW5rCisxODIwNCBlNTlmNTM4YmI4MjkzYWYyODg1MTFkNTkwZWM0NjRiZWZkNjEzMzFkIGxlZ2FjeS10cnVuaworMTgyMDUgMDNkYzc2MWQyY2M0OWU4ODQ4NTZhZDIxMTVhZTY1NTM2ZTc3ZDZjNyBsZWdhY3ktdHJ1bmsKKzE4MjA2IDU2M2RjZmVjMmFlOWU2YzNhZTE5ZmU1YmM3Yzk3NWI5ODU5MWNmYTIgbGVnYWN5LXRydW5rCisxODIwNyAzMDQ4NzFkNmU4NjYyNDQ2Nzg0NzdiZTE5NzM5MjQxYmIzMmQzN2NkIGxlZ2FjeS10cnVuaworMTgyMDggZDRhNDYzMjZmYWY0MzY5NGVhNjczOWVmMjBlNzYwNzM1NDZkYTNmNyBsZWdhY3ktdHJ1bmsKKzE4MjA5IDBjMTk2NzJkNDdiYjFlMTcxMWNkNGJiMjkxMGQ2NzM5ZTUwYTNiMWMgbGVnYWN5LXRydW5rCisxODIxMCBiM2RlYmY2NDdiNTNlYTgzMTJiYjg2MGI3NTI1ODEwMzhiNDM1Yjk2IGxlZ2FjeS10cnVuaworMTgyMTEgYTYyMjRkYTdiNGU0MzVjYmZmMmUxN2E5NGUxYjU4NTg1OTFmOGQ2OSBsZWdhY3ktdHJ1bmsKKzE4MjEyIDNlNTRjZWZjNThjNjAxZThmMjBlMjlkOTc2N2FlOTQwMjNkOGIyZTMgbGVnYWN5LXRydW5rCisxODIxMyBmNDgwZDUyYzA3NjBhZGIxNDkyZTJjMjM1ZGYyNjZhOTZmNWY3NThiIGxlZ2FjeS10cnVuaworMTgyMTQgN2JlOWVkYzRkNWRiMTFiMDI2ZGM3Y2E0OGQ5MjYxZDllYmJhMjA0YSBsZWdhY3ktdHJ1bmsKKzE4MjE1IDJhMzY5NmQzMjcyMWU3MDA5ZDI5Zjg3YzFkMDUxMGYyNmYwNzFjNDggbGVnYWN5LXRydW5rCisxODIxNiA2ZTcwYmFhNDg3ZWQ1MjM0ZDRiM2ZiZDY1ZmJkMjRlYWJlMDdhMmU5IGxlZ2FjeS10cnVuaworMTgyMTcgZWUyNzFjMjBiMDVmM2IyNDlhMGMyMjdlYmUwYzZkZjdkZmRiOGZiZiBsZWdhY3ktdHJ1bmsKKzE4MjE4IGFiMzQzOGNmMWYzZTZiMzZhOTkwY2I4YTI1YWIxMmUyYzk1YmI2MzIgbGVnYWN5LXRydW5rCisxODIxOSAxMmI5MmEzNTY0MWJlMmVlY2JhNjhlZmVhY2FkMGJlZmU0MmQ4MzkxIGxlZ2FjeS10cnVuaworMTgyMjAgNzRlMWQ3OTUyMGZkNGNkZWNjZWFmYWFjZGQzZmExYWU4YmM3YzNjOSBsZWdhY3ktdHJ1bmsKKzE4MjIxIGEzYWYxNDVkMjUzMWUwYzM2NDI3ZmM1MTM3NzRmMDNhM2UzNDU5MjUgbGVnYWN5LXRydW5rCisxODIyMiA5YTE3Y2RjZDMzMjAzNThkYzE2NTMzZDQ2ODQ3MmExYTFiOGJkNDY1IGxlZ2FjeS10cnVuaworMTgyMjMgNDdkOWZiZTY1MzdjODdjZDZkYjkzYzJiYzY3NjdhZjlkNmE2YzIwMiBsZWdhY3ktdHJ1bmsKKzE4MjI0IDA5OTUyZDZlZDM3MjU5ZjE2ZDU2MTY1MmIyMDA1MWI4NTZjNGFjODggbGVnYWN5LXRydW5rCisxODIyNSAxZTRkZTYwMTA1MWMxNjI0MTE4ZGVhMzM2NDM5MWU1NzQ3OGYyOTk1IGxlZ2FjeS10cnVuaworMTgyMjYgM2M2MDgzMjQ3Y2U3NTVjOTYwMDI3NTJlYTljNTkzZTc3NDVmNjQ5OCBsZWdhY3ktdHJ1bmsKKzE4MjI3IDgyNzVkODY0M2U3OTg5MTM0ZWRiMDQ3YTUzYTIzMWI0OTA5ODllZmEgbGVnYWN5LXRydW5rCisxODIyOCA5MDBmMjY2YzVkOGUyYzE5MjcyNDZmNzc0ZDZhYjkyODA0YzQ1MTM5IGxlZ2FjeS10cnVuaworMTgyMjkgM2FiY2I2OTY2NjE3NTkyNjRjYWI2YTU2Mjg2OWVlOGEwZTM5ZjMxMCBsZWdhY3ktdHJ1bmsKKzE4MjMwIDJlMWFiMGM5NDFjMGVjYzI3YWRlYTA5MzNjM2FmMWY3OTkwMzA1NTggbGVnYWN5LXRydW5rCisxODIzMSBjN2Y1ZGQyYmRjN2Q2OWY1M2U5ZWY3OWIwOThjMmU2ZmZjNGY0NTE0IGxlZ2FjeS10cnVuaworMTgyMzIgZjYyMzM5MzhmZjg5YjBlNjQ4ZjZmMzEwMjBlOTgxZTVhZDY5N2M0NiBsZWdhY3ktdHJ1bmsKKzE4MjMzIDAxOTIyYTBmNmY5MmIyZTNmZWIzZjhjODllYTk5ZTIxOTkyNWZjODcgbGVnYWN5LXRydW5rCisxODIzNCBhODI2YTQ2YmFlNTRhYzkwZjBmYTllZDAxZmQyNjUyMGRiYWNlZGQxIGxlZ2FjeS10cnVuaworMTgyMzUgY2VlOTZiMzkxZmZjMjYwNjc1ZWI1Njk4MTJhZDIxNmQ2ZTYxOGJjNCBsZWdhY3ktdHJ1bmsKKzE4MjM2IDQ5M2NhOWU0MjYwZTUyYTIzN2Y0MGRkMzQ3NjViY2E0Yzg4MThhOGQgbGVnYWN5LXRydW5rCisxODIzNyA4M2NkZDQ1NDg1YTU3M2EyYWU1YmY4NzI0YjcxNTE4ZTk2ZjYxNTBiIGxlZ2FjeS10cnVuaworMTgyMzggOWIxYmUxZDg0ODEwNDY3Mzk3NDY4MGFjZmM0YjQ4ZjczMDhjNTcxOSBsZWdhY3ktdHJ1bmsKKzE4MjM5IDdhODJmODQyOTBmN2JiZDMwNDg4YTE1NWE4NmIzOWQyYjgzMWYyZDcgbGVnYWN5LXRydW5rCisxODI0MCBiYjAwNmFkMDBkOWVhYzZjZjk1NzgzN2ExMmQzYmE4M2ZiZjRmODIyIGxlZ2FjeS10cnVuaworMTgyNDEgNTJjMjdiNzExNjg2OTAwNzI0OWI2M2YxNTU1YzJhNGQwNjJlMjk2MyBsZWdhY3ktdHJ1bmsKKzE4MjQyIGMxMDRmMDBjOTkwOWViMTg2MDVkODc4MzkwMjgzY2E5ODdkMTViZmEgbGVnYWN5LXRydW5rCisxODI0MyBlZWI3YzhhNWI3OWY2NDNjMmRiNzdiNDcwOWRiN2M2OTQzMzUzYWZhIGxlZ2FjeS10cnVuaworMTgyNDQgM2NiMTJlMGU3YWNkMTAyZGMzOGI2Y2Y0ZTViNGFiMzAxN2U0NTg2OCBsZWdhY3ktdHJ1bmsKKzE4MjQ1IDIyZGJjZmZjNTRlZjEwZjg4MDNjZWNhNGNhZGQ1ZDEyNDgwYWEyMjEgbGVnYWN5LXRydW5rCisxODI0NiAxNmMxMmQxNjk4ZjZhZDYwZDFkNjlkMmJkNmM1MTFlMmE0YzhhNjI3IGxlZ2FjeS10cnVuaworMTgyNDcgYjM0NjllYjc4YmM2NjgxMTMzZGEyNWRkZTUwYmE3MzI3MGMyNTZhNSBsZWdhY3ktdHJ1bmsKKzE4MjQ5IGYyOTAxYjZhYzVlZDk0NjhjNTYyYzkwNGYyODMyODFiYzA4MTE2MWUgbGVnYWN5LXRydW5rCisxODI1MCA4N2E1YmFlMWI5NDRhOTk5MzFmN2I1YzFiNzc3MmRiOTZiMGUwZGIxIGxlZ2FjeS10cnVuaworMTgyNTEgZjYyZTNlNzg3MWJlOTIzOTJjYjkzZWQyMTRhNjAyMWZlM2RkMTE5YiBsZWdhY3ktdHJ1bmsKKzE4MjUyIDUxOTJiZmQ3YThiYmQ1OTAxNzkzMjRlMDJkYzY5YjdmZTljZjViYzcgbGVnYWN5LXRydW5rCisxODI1MyBmYWU1YjFlNDE0OTFkNjM2YTk0ZGY1MmFjNGNkZmM4MDc2YjYxMWQxIGxlZ2FjeS10cnVuaworMTgyNTQgODZmMDZjMTUzZGRhNGEzYTM0MzZiNzk3MzIxMDFlMjFmYTk1YTVhNiBsZWdhY3ktdHJ1bmsKKzE4MjU1IDk2YzM5NGE0M2I1YmFmYzY3MWViYjA0MGYzZTkxMjAzZDBkM2VlYjUgbGVnYWN5LXRydW5rCisxODI1NiBkMjY1YmY0YWRhN2M5MjEwZjU2ZGYzZDk1Mjk4MzViNzM1OGMxY2Q5IGxlZ2FjeS10cnVuaworMTgyNTcgYjcxNDU5YWVkYTk1NjhkZTc5Y2EzOGI0NGU5ZWZkNjY3M2FjMzFjMiBsZWdhY3ktdHJ1bmsKKzE4MjU4IDVkNWM1MTMwNGY3YzVhYThjNzA1MDI2OTI0ZGRjYjEzYTY5NTA1ZWYgbGVnYWN5LXRydW5rCisxODI1OSAzYWI3ZmFhZTgwM2FmMjRjM2M2NzBjZTAxOGE2NmViNmMyNzgyMTAyIGxlZ2FjeS10cnVuaworMTgyNjAgYWExZWMyNzBmMmQzOGI4NGUwMmMxN2E5ZTZjNDhiOTk3MmVkYmZjMyBsZWdhY3ktdHJ1bmsKKzE4MjYxIDhmODIzMTZmNjlkNDA1MWZiOTgxYmRlZWY3Nzg5MWI3ODI0OWU3ODYgbGVnYWN5LXRydW5rCisxODI2MiBjNDVjNTA4MGM4NDQ4MTBmMmFkMzFjOTE2ZGUzYThjNTczZDU3MDMyIGxlZ2FjeS10cnVuaworMTgyNjMgZmRlZDVjOWVjYzliYmY0YTBkOGQ0M2ZjYjBlMzhiZDUxMGFlOTM2OSBsZWdhY3ktdHJ1bmsKKzE4MjY0IDViNGFiY2VmZjUzZDRkMzk1YWJjMjFhYjc5NzQ3ZWMxYzJkNGQwOTEgbGVnYWN5LXRydW5rCisxODI2NSA5YTY4OTRmOGUxYTA5NzM1ZDk5M2YyNDI5ODA4ZmY2ZTFkZWJmMzA4IGxlZ2FjeS10cnVuaworMTgyNjYgYWYxZTllNjRlZDlkMjQxODkwZGVhNjQ1ZDczYzBmYzI1MDlkYmU5NiBsZWdhY3ktdHJ1bmsKKzE4MjY3IDc3MTcxMzE4ZTMyMTI4NzI5ODQyZTY3MWFkMjY0OThhZjNhYWVhMDUgbGVnYWN5LXRydW5rCisxODI2OCAzNzUyMjljM2FjMGQ5OWVhY2FjOWJlNDFiOTY3ODRmZjQwZTAxMmJmIGxlZ2FjeS10cnVuaworMTgyNjkgZGRkOTAzZmI2YTcxMDgwMzdjZDQ5ODIzOWQ5MGExZjBiZTBiNzA3ZCBsZWdhY3ktdHJ1bmsKKzE4MjcwIDk5Y2E0MTljYTU4YmJiN2UxM2RlMDlkYjEwZmQxODcxY2YyMzRiMzUgbGVnYWN5LXRydW5rCisxODI3MSBiNjQ4Y2IwZDE5ODhmMTdmNDQ1OTg0YjEwMWFkNTUwNjA2NzFmNWEzIGxlZ2FjeS10cnVuaworMTgyNzIgNTZlOTdlNzI3NTY5YzNhMjYzMTA4N2U3NzM4MWU2ZTI0OTJjZGMxYiBsZWdhY3ktdHJ1bmsKKzE4MjczIDg3NmNmN2IzZDNkZmIxYjViOWYxMjRkNzlhZDYxOWRmOTAwMTMwZTkgbGVnYWN5LXRydW5rCisxODI3NCA0YWU0OTI5YjEyZmZlMWQ4NzMxNmU3ZjgwMjdmMGQ4NWQzY2VhYzhjIGxlZ2FjeS10cnVuaworMTgyNzUgODZmNGUxZWY4MWNhYWMwNTViOGRjNjIwMmEyYTdjNzM5MDVmNDgyMyBsZWdhY3ktdHJ1bmsKKzE4Mjc2IDBmMDBiNmM3YjliOTVlMTM2NGQwYjI2NjFiMTgxZjM0NjhlNGUzYzQgbGVnYWN5LXRydW5rCisxODI3NyBjOGQ0ZTZmMWI1ZmU5NzVjMjc2ZjE5NWZhODE0ZDhiMDZiZjhhZjQ0IGxlZ2FjeS10cnVuaworMTgyNzggNmIyNTI0ZTljNjcyZTgwNWQ2MGQ2NTVlODE2MzA4Y2UyZTllNjM0YyBsZWdhY3ktdHJ1bmsKKzE4Mjc5IDA2NDY1ZWQ4MTgyNjMwNWE4ODdkYWEyMTg2ODlmYWQ1ZGEzNDZkN2MgbGVnYWN5LXRydW5rCisxODI4MCBiZDQxZTYyNzNlZDliMzE0NjY5Yzc4MmEzOTk1YzBmNDM5NWNiYWY1IGxlZ2FjeS10cnVuaworMTgyODEgMjdlNGY1NjAxYWE1ODljMjBkZjc2MjhmZjEyZmE1MmRiY2M2YzI0OSBsZWdhY3ktdHJ1bmsKKzE4MjgyIDQ5MTg1MTdlZDZiNGNiNGYwYjNmYWY4MTQ1OWJiNjZlMDdkMGQ5ODUgbGVnYWN5LXRydW5rCisxODI4MyAzOWFiODI3ZTcyYmQ2ZTc3YmRlM2Q5MzQyYTlmNWJjNThjZWIwZmNjIGxlZ2FjeS10cnVuaworMTgyODQgN2ViZGZlNDI1YzgxZWI2MjM2NzYyYjgzN2QyNDZkZGI1OWFiNjBjMyBsZWdhY3ktdHJ1bmsKKzE4Mjg1IDk3ZWEwYjQ5NDIyZmZmMmE4NGFiOWI5ZjJiODQxZWZkNDUyYjY3MmMgbGVnYWN5LXRydW5rCisxODI4NiBiZTMzMDc5MzYwYzY2OTRhY2QwNTcxNzllZGFhZjExN2M4NzgxZGNiIGxlZ2FjeS10cnVuaworMTgyODcgYTkzNTEwNTE5MjNlMGIwNDUxNWEyMzg5NGJjMDMxY2I4OGI1YTM3YiBsZWdhY3ktdHJ1bmsKKzE4Mjg4IGMwZjFlYmQzMjA3MjM5MDA4MzUwNjFmNTUwMTNjOGIwNGRlZDk5NDIgbGVnYWN5LXRydW5rCisxODI4OSBjODMzZGNkYjNhMTU1NDdhOWJkOTExZjY5MzJlNjNjZDkwMzdhNjY5IGxlZ2FjeS10cnVuaworMTgyOTAgNzhhN2Y4YTY0Zjg1YTc0ODE3YjU5YmFmN2U3ZDEzYjUwNWE0ZTAwZSBsZWdhY3ktdHJ1bmsKKzE4MjkxIGQ1YTU0MjhlOTY1YzRkMjUwYmI0NWMxNDVkODU0MWIzZTdlNTA0NDAgbGVnYWN5LXRydW5rCisxODI5MiA4NDk2OTg1NTBiMzJhNjhiOTVmNWQxMzYzNzlmYWYzYjNmMTdlMzE4IGxlZ2FjeS10cnVuaworMTgyOTMgMjA0OWQ1NzBjYTVhN2IwZTQzY2ExNTU3MWQwNTE3N2E2NDViNGIzOSBsZWdhY3ktdHJ1bmsKKzE4Mjk0IGFjNmZiYTBlY2MyOTAyNDI4OGZiZjdhNjhiODNiNGIxZDI1MGU2YzkgbGVnYWN5LXRydW5rCisxODI5NSA1M2M5ZDE1YWQ5OGVkNjkzNGYxMTE0OGIyNDRhZTJhZTlhODI3ODk5IGxlZ2FjeS10cnVuaworMTgyOTYgZmIxMDkzNzA2MGNjYmMzODhkOGRkNjM3YmNlZTJkZjg1N2Y1Mzc4YyBsZWdhY3ktdHJ1bmsKKzE4Mjk3IDRlODU3N2ZiOTQwN2ZmNmU0ZTQwMzE4OWIzMGQ3NTdmM2E4ZTZjOGQgbGVnYWN5LXRydW5rCisxODI5OCBkNWYwNjk2YzM3ZTgxYmFiMmY5MDdiZjljNGY5YzIwYjc2YWQ3YzhjIGxlZ2FjeS10cnVuaworMTgyOTkgNDMzNDU4NjUxZWI0MDI3OTU0ZmI3MzI1YzAzNjljMGRiN2M0MzlhYSBsZWdhY3ktdHJ1bmsKKzE4MzAwIDMyOGZhYzFjYTIxMGZjYjYwMGIzNWJmYTY0MjU2NjRlM2VjZTJmYWIgbGVnYWN5LXRydW5rCisxODMwMSBlZjQ2NmExOWUzYmM2YTI1NmQwMzQzODA5NGRlNzQxZTViNjU2ZjgwIGxlZ2FjeS10cnVuaworMTgzMDIgNGFjNTU1YTg3NmEyM2Y1MDBmNzY0Zjg2NDE3NTM2NGQ2YTc4ZmFiMiBsZWdhY3ktdHJ1bmsKKzE4MzAzIGI4NTVjODhjNmFmNmE0MTZkMjgxMjUxNWJlNTZjMzc4MDc5MDE5NjcgbGVnYWN5LXRydW5rCisxODMwNCA2OGRlOTE4NWI0MWUyYTMxY2UyM2NhNmUzYjhjYzRiNjQ4ZjJjMDU4IGxlZ2FjeS10cnVuaworMTgzMDUgN2U1MTRmMWZlMzFmY2Q0ZmFmYzYwN2JmMGY4MDFlYzQ2ZGVhMzVjMiBsZWdhY3ktdHJ1bmsKKzE4MzA2IGRjZDJiZWJjMTgwZWY0M2I1ZTBhNjU0ZjkwNmVlZTkzZWU3NTkxNGIgbGVnYWN5LXRydW5rCisxODMwNyBmODEzZWRlMTM0YmY2OGQ0NWM3MmNjMDMwYjA0YTc2MDJhNjgyYjZmIGxlZ2FjeS10cnVuaworMTgzMDggZjgyM2I5YWEwYzAzNjE1MTQ5ODQ2Yjc1Mjk1NmE5NDNjZThkMTkyOCBsZWdhY3ktdHJ1bmsKKzE4MzA5IDMxZjcwY2EwNmM2OGY5NGE3NGY0YTRkNmQ3NzY0ODk1ZDI2NzIxYjAgbGVnYWN5LXRydW5rCisxODMxMCA5YWI3YTU5N2VlZmU5MTQyOWVkZDA4ODdiM2MyMmYzZDg3NzU4NGUyIGxlZ2FjeS10cnVuaworMTgzMTEgYWU0OTAwNmIyZDhmYWE2YThiODA4MDViYTM1Y2I3NDJlMDc3ZDZlNyBsZWdhY3ktdHJ1bmsKKzE4MzEyIGRiNmQ5YmI3ZWM5NDUzYjc3NGI5ODhmNDgxZDQzOTBiOGE5NWU3MzggbGVnYWN5LXRydW5rCisxODMxMyBmMmMxNzZkODQ2YTRhNWI5MGNjMWM3YmIyOTc4NDZiOTQxOWNjZjc4IGxlZ2FjeS10cnVuaworMTgzMTQgNzcyMWZiNTA5NDYyMzFkOWY4NjNlMjNjYzg3NmZlMzg2MTc4OWZmZiBsZWdhY3ktdHJ1bmsKKzE4MzE1IGNlNzc3MzhiODFhY2JmNmJkZmY0OTE4MTVkODNjZGE4Y2Y0MjlmOWIgbGVnYWN5LXRydW5rCisxODMxNiBkMDE0NmQxMjg4OTdlNzM1NDY2MWQ5MTQ4ODI5NjhjMGQ3MWZlMTRhIGxlZ2FjeS10cnVuaworMTgzMTcgNTk3MDg5ZGQyNjA5YTVlYTJlMWVkNTdhNTY1MzljOWYxZjFiMzI5MSBsZWdhY3ktdHJ1bmsKKzE4MzE4IGFmMzk3ZjdkYmJkNWViNTA3NTdlOWU1YjU2Njg4ZjRhNGEzOGFiNGIgbGVnYWN5LXRydW5rCisxODMxOSA1ZDc1OGNmNTExMWQ3ZDhjZjg0MDEwZjE0OTFhNDcyNzc2NmU5YzM2IGxlZ2FjeS10cnVuaworMTgzMjAgYTc5ZDM2MjRmODQ1NGE2ZDQyODIxOGI4Y2U0NGU3ZWUzMjlmZjNhMSBsZWdhY3ktdHJ1bmsKKzE4MzIxIGQzOTdmNjY3NzVlOGJjNDFjYTYzYzU1MDY1MTM2YzY5ODcwOGI4NWIgbGVnYWN5LXRydW5rCisxODMyMiA5Zjc3NWUyNDliYTE4MDg0MTk2YjU2MjE5YTdlNGM1NDU5YmUxNDlmIGxlZ2FjeS10cnVuaworMTgzMjMgYmJlOGE2NGUyMTllNThmNWZiNTI5ODQ5ZDVhMWNlNjAyODhmY2QzOCBsZWdhY3ktdHJ1bmsKKzE4MzI0IGFhYTkxZWQzZmNmZDI5ZDU5NDAzMmQxM2M3OGMyNTE4MTY3NmQ4ODcgbGVnYWN5LXRydW5rCisxODMyNSBjN2YyMjVhZTMxNjA1YjIwMTM1MmY1ZjNlYWIxNWU0OTgwY2JhN2UyIGxlZ2FjeS10cnVuaworMTgzMjYgMGI4NGIzMWFhOTc1MTg5N2ZiNGY4NjU3M2EyYmZhZjdmZTk3YzZkOCBsZWdhY3ktdHJ1bmsKKzE4MzI3IDk3MzFiYmI1MmZiNGFjNDliNmUzZTVjN2I2OWI4NDc0NTE0ZjQzMjIgbGVnYWN5LXRydW5rCisxODMyOCBkNzg2NDM0NWIxYzhhOGM0ZTdhYjkyYjU5MmYwZDNjZGYzMWUwMjg5IGxlZ2FjeS10cnVuaworMTgzMjkgMjE5ODZjYzE0YmIyYTdkMGM0NTcxZTI3NThmYTg0NWVlODIzMDhmOCBsZWdhY3ktdHJ1bmsKKzE4MzMwIGFjMjIwYzMxZGRkN2U5YWIwM2QyMDlhMmJmZmQ3ZWQzOTlhNWNiOTEgbGVnYWN5LXRydW5rCisxODMzMSBlMGQ4YTZmMmQwOTExYjI2ZDZmYTVjNTM0M2NiZTg0Yzk2NGI1ZjNkIGxlZ2FjeS10cnVuaworMTgzMzIgODZjZjY0ODBkMmZhNjNiN2U0ZGEzMmIzMTEzYjQ1ZTQ3NTk5OTE0NSBsZWdhY3ktdHJ1bmsKKzE4MzMzIDQ4ODA0ZGFiNzg4Y2E2ZGE1YzBlZGU1MDllNGJkMmRkZTU2MDZiNDggbGVnYWN5LXRydW5rCisxODMzNCAyZWNlOGZhNTY4MDgwNzhiNzQ1NjZmYTNlNmJlNzI0ZTIxYjBlZjU1IGxlZ2FjeS10cnVuaworMTgzMzUgZWY5MTM5MzM3NTQ3NGZhOWQ2ZDM0OTk0MmMzNmViNzc5ZWY0NDczMSBsZWdhY3ktdHJ1bmsKKzE4MzM2IDY1NWY0YzRiYjk0NDliMWRhNjBkNGRiMWNjY2NlYTMxNGJjZmE1NzMgbGVnYWN5LXRydW5rCisxODMzNyAzYmUxZjVjNTIwYWQ1MjVmMmY1NzY5MDI1YmMwMDRjNjhhNWUxYzVkIGxlZ2FjeS10cnVuaworMTgzMzggYTVjZmY4YzFmNGU0YTQyMTRiOGYzOWNlZjNjMDY4NjczMjA2MmRkZSBsZWdhY3ktdHJ1bmsKKzE4MzM5IDg1NmIyYmMyMTZmOWZiMzgyNmNmMjE1MTRhNTQ2MTRjM2ExNTQ2NDggbGVnYWN5LXRydW5rCisxODM0MCBlOTg5NjRiYzI2ODE0MzIzMTQwY2YxOTRlMzM3ZTJlNDg3MGY0YjBlIGxlZ2FjeS10cnVuaworMTgzNDEgM2MzM2YyYzM1N2QzYjZjNzVmNGMzMDY5ZWUxOWFkMWQwYWE3ZDY1NCBsZWdhY3ktdHJ1bmsKKzE4MzQyIDA3YzJlMTM2MjYwYzNlY2U0MDI2NWQ4NTIwZjIyZTFkOTljY2YxY2EgbGVnYWN5LXRydW5rCisxODM0MyA2ODM4ZTcyZjhkZDI3MDdkYTA4ZTIxMDU5NmVlNmQ5YjhkMGQ0NWY2IGxlZ2FjeS10cnVuaworMTgzNDQgMTA1YzI1MDUyZGU5OGVjNmE0NjQ1NjRkMDZlMWY5YzY0NDc5MjRkOSBsZWdhY3ktdHJ1bmsKKzE4MzQ1IDA3NzA1MTc3Y2E2YmVkOTVhODgyNjY0OWQ1NDk5YzEwNGVlN2Y2M2QgbGVnYWN5LXRydW5rCisxODM0NiAxMDkxYWQ5YTAzMDNjZmM4YTI2YTM5YTM1ZmU0OGZlNDNhMTg2N2Q5IGxlZ2FjeS10cnVuaworMTgzNDcgYjMzOThjNDUyZDk1OTFhMjE0NDUwNDA2MDlhYjNhMzAyN2Q3YTQ3MSBsZWdhY3ktdHJ1bmsKKzE4MzQ4IGYwY2E0YzY3OTU3YjU3YTlmMmNjNWFmMDZiOTVhMGNlYWUxY2IyYjUgbGVnYWN5LXRydW5rCisxODM0OSAyZDFiYmJhYzc2ZDMwN2EwZjk4YmVlY2Y1ZGMzNDAzZTI0OGRlYzU3IGxlZ2FjeS10cnVuaworMTgzNTAgMTBmNmUxOTU2NzFkZmU3ZjdhOGI4ZTlhMDVkMjJlMTg1MmNlZGNhYiBsZWdhY3ktdHJ1bmsKKzE4MzUxIDhhNTk2ZDEwYmM3MDg1M2JiZmJhYTkxY2FkYzJmOTA3MjExY2IzMzcgbGVnYWN5LXRydW5rCisxODM1MiA1OGI0YWU0ZWM1NWM2ZThjZTJiMGJhZjI3OTg3MDJmYWY3YTUxMzJkIGxlZ2FjeS10cnVuaworMTgzNTMgZjY0MDM5MDIzZDY0OTIzYTA5ZmJlNDhiODQ4YzQ0NjlmMTFmNDhkOSBsZWdhY3ktdHJ1bmsKKzE4MzU0IGZkODRiMzUyNDE0NTc2MTM4OWQ2Y2JkOGY5OTY5MGNjYmE3ZmI0OGEgbGVnYWN5LXRydW5rCisxODM1NSA4YjU5NjQ1MWYxYzE4ZjE3NGZkY2ZhOWFlYTNlYmEzOTQ5M2VmNjI2IGxlZ2FjeS10cnVuaworMTgzNTYgMzJjNDQwZDJiMGRmZDZkZDFjNzZkZmM0NzE3OWIyZjRlMGIxZDE1NSBsZWdhY3ktdHJ1bmsKKzE4MzU3IDI2ZDQxNGMwYTA5MjAyZTBiZjA1MWRiN2Q4YzkwOTA0YTBhNjEzYTcgbGVnYWN5LXRydW5rCisxODM1OCBmM2JmNWYwODJhM2Y4YTc5ZmYyMTZiNGZjZmQ1NmRlNmIxNDJiZjE4IGxlZ2FjeS10cnVuaworMTgzNTkgNDYyNzU2MTFjZDU5YmU4ODgyNTNkMjFmMmIzYzllMTQzNjAxZDFhZCBsZWdhY3ktdHJ1bmsKKzE4MzYwIDhiZTg4OWU4MTE1YmNiMDRkNGZjOWFhNTg5YmI1NWUwZjY3ZmYyY2MgbGVnYWN5LXRydW5rCisxODM2MSBkMTM3Yjk0ZjNkZGZkMTZlYmUzNTRmM2VmNDFjYTM0ZDk5YjUzNmYyIGxlZ2FjeS10cnVuaworMTgzNjIgNTVmNGE2ZThiNWIzYTdlNDMxYjkzMjliZjQ5YTY5Yjg1NmJkMGQ0YSBsZWdhY3ktdHJ1bmsKKzE4MzYzIGRhYWRkMWU4NTMxNjU4MTg0Yzg2OGQ3OTM2YTQyMjVmNmZhNjI4ZGUgbGVnYWN5LXRydW5rCisxODM2NCAzOTc0MmM5MWFkZDNlNDdlMTEyOGM0MDkxMzdkOTVmZGQyZTY5MTIxIGxlZ2FjeS10cnVuaworMTgzNjUgNGI2NThjMDU5YzIzZDlkZjljYmNiYzQ4YzcyNjg5MmJjNjA0NWFjZSBsZWdhY3ktdHJ1bmsKKzE4MzY2IDVlOWQwMTI3YWNlOWExY2M2MDFhNzA1NGJjMzE0M2YyZGI4OGRhMGEgbGVnYWN5LXRydW5rCisxODM2NyBhYzgzMGM5ZTlhODM3MmEzMWMxYjc1Zjc4NzE3ZjcwOTkwYmNiODc1IGxlZ2FjeS10cnVuaworMTgzNjggMzQwNThhZjk3NmNlY2VlYWRmMTAzMjQwYmVjMjVlNWM5Y2M3MDY0OCBsZWdhY3ktdHJ1bmsKKzE4MzY5IGVjZGU3NzE0MjhmOWViNDcyZTg2NWU5ZDMwZjI2Y2QxYTFlMTA3ZDUgbGVnYWN5LXRydW5rCisxODM3MCAzMDU0NmEyYjk0NTBlNTg5Yzk4MDk1MTIwM2UyZDYwMjMxYzk2OTkwIGxlZ2FjeS10cnVuaworMTgzNzEgZGI3NTcwMjI1ZWY4NDIxOWE5MDBiZmE3YjE4ZmY0MzY4MTJlMWQyNiBsZWdhY3ktdHJ1bmsKKzE4MzcyIDM0ODBlODNlMTdhYmIxZTg0N2FjMjIxNGFlOWE4ZTY4NWJhZjFjMTEgbGVnYWN5LXRydW5rCisxODM3MyBlMTFjMTIzMjNlYmY1YzUwOTI1MWQ5NjJjMTg0ODA3NDk3NDVkYWE2IGxlZ2FjeS10cnVuaworMTgzNzQgZWZjOTZhYWI3MWMyODkxZDA3ZTEwM2ViM2JkMjE4YTE4NDlmZmU3ZiBsZWdhY3ktdHJ1bmsKKzE4Mzc1IDNlOTRjYzJhMDQ3M2ZmNWY4YmQ3NTg2OWVjMDQ1MzMxOTJmMWRiNDIgbGVnYWN5LXRydW5rCisxODM3NiBkZDU4M2MzM2Y0NTVhY2EzNTNlNDhiODI1YzU0OGZhNjY3MmZkMWIwIGxlZ2FjeS10cnVuaworMTgzNzcgYzEzMzM2NTcyZjRmNDFhMDFiYzM4Y2Y1YzkxOTA4YTFmMDMwZWI3ZiBsZWdhY3ktdHJ1bmsKKzE4Mzc4IDVlNDFlYmRmYTlhMDBlNDNmNTZjOGYzOGNhOTlmMTY0MTk2NDJiNmIgbGVnYWN5LXRydW5rCisxODM3OSBjMGFkNGMyZWY0NDQ2MWZjYTI4NmYzNzI3YjlkMjM4MGUyOGUyMzNlIGxlZ2FjeS10cnVuaworMTgzODAgZWQyOWRmN2ViNWM5NjE4NmU3ZDIwMDI3OTFjYWZjZTViOWQ3Y2JjNyBsZWdhY3ktdHJ1bmsKKzE4MzgxIDg4NTRkOWQ1YWRkNWY0NjIxZTJmZTcxOTVmMzdjYzExZjRmNWYwOWYgbGVnYWN5LXRydW5rCisxODM4MiAwNzBlZTMxY2FmMjhiNzBlYzA1MTIyYjFmMjE0NmEzYzA2YjNmYWFlIGxlZ2FjeS10cnVuaworMTgzODMgYWFhNTQ3NTJlNGJhZDAzOTYwNWFjYzgzOWRmMDlmZTk2M2RlNjI3OSBsZWdhY3ktdHJ1bmsKKzE4Mzg0IDEwMjIxYTZjN2MzYzVmNmNlY2FmZjNiMzA4MmE1MTVhYzlhZGQ4YzUgbGVnYWN5LXRydW5rCisxODM4NSBjZjE3NTBjM2Y3ZjdmOThkMDhlZGYwMDBmYWZjNGIwZjc5NTcwNjIzIGxlZ2FjeS10cnVuaworMTgzODYgMzJjNTVmNTc0NmRlZDIwYTIzNTNmNzQ4ZTI5M2Q4MmNlOTc4YWRhZCBsZWdhY3ktdHJ1bmsKKzE4Mzg3IDhkOWZmZmVkMzRmNDA2NGJkYzkwZDJhN2Y1Y2E4MzNlNTY1YjQ2YTcgbGVnYWN5LXRydW5rCisxODM4OCAwNDFkNTdlM2EyYjkwNGJlNWE4ZmZmMGNjNmYyOThmNTA3YTExMWE1IGxlZ2FjeS10cnVuaworMTgzODkgNWZlMmVjNTA0ODM2YzEwZjIwOTk5NDY4ZjY1Njk1MDk1M2VlOGFiYyBsZWdhY3ktdHJ1bmsKKzE4MzkwIGE5M2Q3OWRhNGY4YzVkYmNmM2Y4NGJkYzQwNzA3NjY1NGU5ZDUyNDcgbGVnYWN5LXRydW5rCisxODM5MSA3OWZjZDJiMzE4MDhiZGU2Y2RhMTQ3ODYzMTVlYjYyYWM5ZjUzNTk1IGxlZ2FjeS10cnVuaworMTgzOTIgYWQxNGRkYmQwOWE3MjVlZjZiNDNlZWExNDNiYzcyODFjNjA1N2QwMCBsZWdhY3ktdHJ1bmsKKzE4MzkzIDI5ZjQyNjk0NDAyYjgwY2Q5NDM3NWIwMjhjMjEwNTZkYWNjOWQyNjcgbGVnYWN5LXRydW5rCisxODM5NCA1ZDk4ZDQ5NzEzZjIxYTFjNjkzZGNiMzE0MTgxNDcyNDI4MmIwMWI1IGxlZ2FjeS10cnVuaworMTgzOTUgMGNiNzUxYjU2MzkxNmMzMGU4ZTdhNmViMzU1NWViNWY2Y2EwMDdmZCBsZWdhY3ktdHJ1bmsKKzE4Mzk2IDdlZTM5ZTE0Y2YyYjBmODJjNGJlODVhZTA5ZWIyYzQ3ZmVkMzA2OTIgbGVnYWN5LXRydW5rCisxODM5NyBjNTlmNjQ1ZGFlZGVkMGRkYTRlOGIwMTEyNTllNjA1YzQ2ZmYwNzVhIGxlZ2FjeS10cnVuaworMTgzOTggNTAzNThkNjRkYzQzN2I3ZTVhYjM5MTVjMmRiODJhYTQ0ZTY2Njg5MSBsZWdhY3ktdHJ1bmsKKzE4Mzk5IDNiMDRkMzQyNWZmMGYzMTA4OTRjZTcyNTU4NzIzMjRjYmZkM2Q5MmUgbGVnYWN5LXRydW5rCisxODQwMCA1YWFjNTg3M2FhYWU3ZDA0ZGY3Y2QzOWUyNzZkNmIwZWM4N2Y4OWJmIGxlZ2FjeS10cnVuaworMTg0MDEgOWQ0MzEyOWM4YzU1ZjMzN2E5YmY1OTU2YjE3YjYyNjQ5MTU5MTliOCBsZWdhY3ktdHJ1bmsKKzE4NDAyIDU4YmM5OWUwMTJhODVmYTk5NzcxNWI4ZGZkNjA2ZmRhMDA4NzY1MjEgbGVnYWN5LXRydW5rCisxODQwMyA2MzU5NDgwMTA2ZWNmYTk5YWQ2MTljNGViZDcyYmNhZTAwYzU0NGZkIGxlZ2FjeS10cnVuaworMTg0MDQgNzg1MTU1ZTJjZmNhMjk0OWYwZDc3ZmI2MDYwZTVmODk0NDk4OThiZCBsZWdhY3ktdHJ1bmsKKzE4NDA1IGNiZDRmMzU1YmI5NmY3OThjMzBjMWZlYjdmMzAyNTNmODY3ODY4ZDQgbGVnYWN5LXRydW5rCisxODQwNiBkNjk2MTFjY2U4Nzc2ODNiY2M1OTdkMmUyNTZkZGUyNmJjZDM1Y2U0IGxlZ2FjeS10cnVuaworMTg0MDcgYmI5M2IxZGNhNTcxOThkMTlhZDM4NDI4ZDc1Y2ViNTQ4NGRhN2MyYSBsZWdhY3ktdHJ1bmsKKzE4NDA4IGFmN2M2MjNkOGQzM2JkN2E5MDAzYzEzNWIxMjk5MWU2YmJiODE5M2IgbGVnYWN5LXRydW5rCisxODQwOSBmM2IwNjgyZDI2ZDYwMTFhMzdmNWIxNzcyZmRiYzJjNGNkNjAyNDBkIGxlZ2FjeS10cnVuaworMTg0MTAgMmZkYmNkZWUyZTFmMmVkNjhhNWU5YTZlZGJjNjE5MDVkOTMzYjEzNSBsZWdhY3ktdHJ1bmsKKzE4NDExIDg0NTY0NmIwOWJmODI0NTgyYjg3MWQwOTI3ZmY5NzIwYTRiMmU1MTQgbGVnYWN5LXRydW5rCisxODQxMiBmOWIxODRhNTcyMjM5NTAxNzliMWM2Y2YxMDNkZGMzMjdmMmRiOGMwIGxlZ2FjeS10cnVuaworMTg0MTMgNGQ5YzMxZjMyYzA5YzI0YmZlMjQ0MGNhNjljYTZjZTAwNDMxN2QyNCBsZWdhY3ktdHJ1bmsKKzE4NDE0IDU3NDM5MzM2YzJlMGVlOTZlZjU5MjIwMTJmN2NiMmVmMTU4N2ZhNjYgbGVnYWN5LXRydW5rCisxODQxNSA0MzU0NmM1YWVlY2NlYTdlZDk5OTA4OWM5OWNkNjAwN2RjODgxNzViIGxlZ2FjeS10cnVuaworMTg0MTYgZjcyMzQ1YjQzNjYyMDFjZmU1NjU0ZTFmZDExZTNkNjk0Y2YzMWMyNSBsZWdhY3ktdHJ1bmsKKzE4NDE3IGQzZjZmMzE1NWMyNDA0YmQxYzkxZDY3YTAyY2E0MTdlNDU5YjlkNTAgbGVnYWN5LXRydW5rCisxODQxOCBiMTc1NDAwZThiMjJhZmQzM2M5NDdiMzFmODRhMzFhMzQzYWJhNzgzIGxlZ2FjeS10cnVuaworMTg0MTkgYzgxYmVkMDE2OGEwOTQ5Y2IxOWNhMjQ0OWRhNmZlOGJhYjYxNWZiMSBsZWdhY3ktdHJ1bmsKKzE4NDIwIGQwOGY4Y2ViM2Q1NTZlM2VlNDVmNDYxY2ViZTFiNzFlZDU5MzhhZGYgbGVnYWN5LXRydW5rCisxODQyMSAxNDM2NDZiYWZkMWJlODkwZjZkZmVmYjE1N2IzY2VhZmVmMGMzOTVkIGxlZ2FjeS10cnVuaworMTg0MjIgOTQ1M2Y2ZmFjZWZhNDVlMTc2OWQzNjE5ZDU1ZWE4MjMxNmUwYzgwOCBsZWdhY3ktdHJ1bmsKKzE4NDIzIDc0ZWU2NjE1ODFiNmQ0N2U4NmU1NDRkMmJhNzViMzliN2I0ODAzNDQgbGVnYWN5LXRydW5rCisxODQyNCAzNWU4YTI5ZTU0ODg0ZTAzYmE1MmVmYTQ2NDFmYzgxZjU5YWE5NzJkIGxlZ2FjeS10cnVuaworMTg0MjUgYzEwNDI2ZGE3YmNlMjQyMGQ1OTMwN2Q1Y2E0NzgxZTg2NDQ5YWFjNCBsZWdhY3ktdHJ1bmsKKzE4NDI2IDRjMjAzNzllNjYzZDQ1ODJiZjBhNDIxNmJhZjQ1ODgwMGYyNTU3YzMgbGVnYWN5LXRydW5rCisxODQyNyA5OTQyMmQ2MTBkYjNhZTk2ZjMxMjhiODA0ZGVhYzgyYmU2ZmVhMTlmIGxlZ2FjeS10cnVuaworMTg0MjggZDM4NTE2Y2U2ZjE0MTlkN2UyOTM4NzA4NDQzMjU2YzFkZGY5MWRmNSBsZWdhY3ktdHJ1bmsKKzE4NDI5IGIzNDIwYjAwMmQ1NWNmNzE5MGE0N2EzYzJjY2IzY2UwMWM4ZDY1NWUgbGVnYWN5LXRydW5rCisxODQzMCA1NmFkYzY4ZTA2ZjY5MTNkYzk0NzM5YzU0OTRkZjMyODNjYzQ1NzFjIGxlZ2FjeS10cnVuaworMTg0MzEgZDQxMGY2YWQzYzYwMThlZWEzMTQxMDdhZjFiNjNhOTg1M2E1OTc4NiBsZWdhY3ktdHJ1bmsKKzE4NDMyIDAyN2VlOWE4NzBkMmMyMzNjOGZkMTU1NmU1YTg2MzkyMzcxOTlmZTggbGVnYWN5LXRydW5rCisxODQzMyAyMTc1ZTU2N2JkMDYyOTBkYmJhNzI4MGIyODA4MDk2NDc5NjVhNjMwIGxlZ2FjeS10cnVuaworMTg0MzQgMjQwNzRmOTcyMzVjNDlkM2IzOTNkN2FkMWU2ZmEyNGEwOTY2MGI5MSBsZWdhY3ktdHJ1bmsKKzE4NDM1IDRhOWYxNTUyYmE2OGUwYmYwMzk4NzAzOTY2NTc4NTAzMTcwYzAxYTUgbGVnYWN5LXRydW5rCisxODQzNiAwM2MzMmZhYTFhNDliNGM3YzU0NDJjMmEwN2UyYzBiZTg2MjFmMjYwIGxlZ2FjeS10cnVuaworMTg0MzcgNThmZTkzN2Y3MzRhNDg3OGFmNDQ5YjlhNTk5ZmI5ZmY4ZDQ2ZTViMyBsZWdhY3ktdHJ1bmsKKzE4NDM4IDk2YzNhZTEzZGRjYTgxOGIyMTNjYzE0NmQzZDE3ZDNlNjQxYTkxNjMgbGVnYWN5LXRydW5rCisxODQzOSBlMDc2NWM1NTEyZDcxOTg5N2QwNWFhNGE0M2IyZTQ3NWYxZjVmNjY3IGxlZ2FjeS10cnVuaworMTg0NDAgMzFkNzhmMzYxNTMwY2YwODczZTkzNDE2ZTYyMGFkMDA5NDJjMjIxNSBsZWdhY3ktdHJ1bmsKKzE4NDQxIDY2ODE2NmE1MGM3MDcxYjY1NzYyOTE1ZDUwMzQxY2ZlNDRlYTI3N2QgbGVnYWN5LXRydW5rCisxODQ0MiBhZmI0NWI3ZmEyNTI4Y2VhOTA0NzIyYjZkNjUyZGVjZWFlZTQwZDNjIGxlZ2FjeS10cnVuaworMTg0NDMgNjE3OWQ0YWZhNGU0ZTVjZmYzYzI1NjJhYjY4MGZmMzUyNzhlMmFkZSBsZWdhY3ktdHJ1bmsKKzE4NDQ0IGI4ZjViNzI2N2YxNDk3YzQ1NjM4YTFlMmE4MWViOTUzNWFiMTY3NDcgbGVnYWN5LXRydW5rCisxODQ0NSA2N2MyNGM3NGYxOGNjNDM0NGM0MTRiMjJhNzIzOGMxNzUzMjExYWNiIGxlZ2FjeS10cnVuaworMTg0NDYgYjJhOWJjOTE2NjhhN2YyNDBmNDkzYTg2NjFlZDgyMDQ4NjVhYTM0YiBsZWdhY3ktdHJ1bmsKKzE4NDQ3IGZmODQxMTJkYWJjODk1MjM2MDU4MjJmMGU3YWM1MDY2OTgyNDQ3ODEgbGVnYWN5LXRydW5rCisxODQ0OCBlYmNlOWIyNjdiYjhlYTYxOTJkMTk5ZjFhNjgzYzgzOTExZWRlNGViIGxlZ2FjeS10cnVuaworMTg0NDkgY2U5MjIzMDI4MTY0OGNmZDVjMDVhYzI2MTk3N2Y2Mjk1YjQzYzQwNCBsZWdhY3ktdHJ1bmsKKzE4NDUwIDg1N2E1NDAwYmU4N2VhZGFjZTg3MGZhMzgzMjU4OGViMGY2N2ZlY2UgbGVnYWN5LXRydW5rCisxODQ1MSAxZTc1NmY5M2JmNWRhMWU5N2QzOGYyM2QyYmE2N2JjYWU4NmNkNzY1IGxlZ2FjeS10cnVuaworMTg0NTIgMzYyODY2MzJmZjNhOTNjZjIzZjkyYmRhZDlkOGZhY2IzZjAzMGFhOCBsZWdhY3ktdHJ1bmsKKzE4NDUzIDUyNzU2ZjYxM2MxODJhOGIzMDE0NjU2YTE1ODc5Njk5YTBhNzg2MWIgbGVnYWN5LXRydW5rCisxODQ1NCA5Njk0OTA5ZGJiMGE3OTg4NmM1MjBlZjI4NzE4YzA0OWJjMjZhMjU4IGxlZ2FjeS10cnVuaworMTg0NTUgMTc3OWY4NTc0YTgzYTBmNDdjYjZlNDI2ZWU0MmY2OWUwODFjZjczOSBsZWdhY3ktdHJ1bmsKKzE4NDU2IDBmNDJmNjY2OWU4MDJjMmVmMjQ2YzlkMGM2YWY1Y2NlYTFmNDY0ZWUgbGVnYWN5LXRydW5rCisxODQ1NyA1OWE0NWZhOTUzMThmZWVmNzc5MDg1ZWMxMzhmYTc1MTJjODgwMDEzIGxlZ2FjeS10cnVuaworMTg0NTggM2ZlNTllZDExYWYxMGU1NDEyODZmNmJiOTQyZTBiNzJkMWUxMjU1YSBsZWdhY3ktdHJ1bmsKKzE4NDU5IDE0OGI4YzFiNzEzYTlkYTlhMDhiMDE1Y2Q1ZDQ0Njk4NDdlNzdiODYgbGVnYWN5LXRydW5rCisxODQ2MCBkNWM5ZGQyNGQ5NzdiOGM3MDQ1MmIyOWVlYzUzYWVmNDhlOGRlYjllIGxlZ2FjeS10cnVuaworMTg0NjEgNjYzMGNjYTI5OGNjMGViOWZjZGE3MmE1MDg3YzAzYTgyNGMxMDNiZCBsZWdhY3ktdHJ1bmsKKzE4NDYyIDUzNDIzZWMwYTcyODg0YjA1N2Y0NjEyNGVjZWRlOWMyMDM3ODVmNzYgbGVnYWN5LXRydW5rCisxODQ2MyBlMjNkNWIyZTIyOGM0MmMyMzhiNjM0MzJkMTUyNDcyMmM4ZGFlMjczIGxlZ2FjeS10cnVuaworMTg0NjQgOTg3Yzc0Yzg4NDI4OTdkNmY4MzY2ODllMmI3YTFkODYxYmExNGM3OSBsZWdhY3ktdHJ1bmsKKzE4NDY1IDE1ZTFlYjEwMTliOGEzN2FmNDg4YWNmMzZkZWJmZmI3YmNmNWIxNDcgbGVnYWN5LXRydW5rCisxODQ2NiBlMWYyZTNlYzc2ZDRmZTZhZmJmNDZmYzdkMDJmZmE5NGY1ZjljYjZjIGxlZ2FjeS10cnVuaworMTg0NjcgZjk5YmI2YTkyZTg0Zjc4MWE2N2ViZmNlNjUxMjg3OTQ0ZTgyNmI5MSBsZWdhY3ktdHJ1bmsKKzE4NDY4IDU5YmZiYmU1ODFjMmQwYmE5ZTc2Yzg0YTcxYmI1YmRiMzQ3Y2Q5ODggbGVnYWN5LXRydW5rCisxODQ2OSBmZjA3Njc3NTNkODEzZGMwODBiNDBjYzE2MGFkYWFiNTVmZmMyZTA0IGxlZ2FjeS10cnVuaworMTg0NzAgMDkwNmM4ZTJjOTYxYzNiMDNmMWIzYWFmM2Y4MGM1MzdmMjQ1YmQ0OCBsZWdhY3ktdHJ1bmsKKzE4NDcxIGVkMzE1YjU1ZjE5ZTYyZmFmMzhjZGQwMzc0YjdlZmMzM2EwNDc1NTYgbGVnYWN5LXRydW5rCisxODQ3MiAyZmU3NDI3NTkxZWE5NjdmYzg3YjBkOTFkYzI2OTk5MWM2ZDEwYjI4IGxlZ2FjeS10cnVuaworMTg0NzMgZTU3ZjkzYWU0ZmU5ZjY4NTJjMmNlOWJhOTcwOGUxMTdlNDFiYzUzZSBsZWdhY3ktdHJ1bmsKKzE4NDc0IDM1NzQ5YTU1N2YxZTVkNmQwYmE1YTdmOWIzZWZjNTAyZjEzYmNkOTYgbGVnYWN5LXRydW5rCisxODQ3NSA3YmI3YjcyZmE2NjY2YzE1MmYwNDJhNWExMmVkYmYxNmEzODY0YjY5IGxlZ2FjeS10cnVuaworMTg0NzYgMDc4OWRkMDYyZDZjMDgzM2QwMWZiYjRmZjFiNDIzMjU2Yzg1M2U4NCBsZWdhY3ktdHJ1bmsKKzE4NDc3IGUxMmI2NTBmMGZhY2U2ZDFmODdmZGU5Y2VlOTFhZmY1NDkyMmMwMzEgbGVnYWN5LXRydW5rCisxODQ3OCAwNTJlMzcyY2UxNTFjODQ3NzdmM2ZkZDlhMjhiMGIyMTJmNGU1ZjAwIGxlZ2FjeS10cnVuaworMTg0NzkgZDNlODZmZjg5M2IxMDU2ZDdlMDY1MTdkMWU5ZDg2YTU4NDZiY2M1OSBsZWdhY3ktdHJ1bmsKKzE4NDgwIDUwZDliNTkwNjI3ZDY0ZTM2ZDI5YTA1ODNiYjc0ZDczZTg5ZTUxZWEgbGVnYWN5LXRydW5rCisxODQ4MSAzMGVjODczMzM4YWQxNTY0NGZkZTdmYWVlMjQ2NjFkMGM5ZWE3ZDRiIGxlZ2FjeS10cnVuaworMTg0ODIgODI2MmJmYTUxNGMyYzAwMjkzZTczNmQyNmY1YmE4YzY3NjY2MTM0ZSBsZWdhY3ktdHJ1bmsKKzE4NDgzIGY1OTQ5Mzk3YzhhNTg4ZmY2ZWQwMWQzODBlYTQ2OWRlMTQ1Y2I2MGQgbGVnYWN5LXRydW5rCisxODQ4NCBkYjY5YzA5MmM5MDZkMzk3OTM0YjMwMjNkNjc4MjliODkzMTFjN2U5IGxlZ2FjeS10cnVuaworMTg0ODUgNTBkZTNiMTk4YTYyMDViMDU3MDBjYzJhM2I4MDdlYmRmYWVkYjMzNyBsZWdhY3ktdHJ1bmsKKzE4NDg2IDM4ZjA5ZmIxOGI4MDIwYzc3YTJjNmM5ZDY4YTlmNGRmZjNlYzZjYWMgbGVnYWN5LXRydW5rCisxODQ4NyA1MzgwOTcxOTk3ODM5ODZkMzRiNzVlYWU2ODBjY2Q1ZDNlZjY3MmViIGxlZ2FjeS10cnVuaworMTg0ODggN2UyYmI5OTRjMmQzYWM2ZTU2MzAyZTEyYjhkMzQ4NjQyM2NjZjZiNSBsZWdhY3ktdHJ1bmsKKzE4NDg5IDdmMjJlMzRjZTQwZTNlYWEyY2I5MmVjNTZjZDdmYThkNzg5ZTQyY2MgbGVnYWN5LXRydW5rCisxODQ5MCA1MGJiZWVkYmNlNGE2ODNiYTMwNjNmODNiYjIwMmQ4MjM0MTc4NmZjIGxlZ2FjeS10cnVuaworMTg0OTEgZGI3ZWU1YzYwYWYwYjg3ZDIzMDZjMDIwODY0OWM3NjYxMDhkNjc1MCBsZWdhY3ktdHJ1bmsKKzE4NDkyIDU1MmRiOGQ4M2FjZDg5NmQyMWQ2M2JhZTZkZjBiOWQ2N2QyNTIwZDMgbGVnYWN5LXRydW5rCisxODQ5MyAxOTc1NmI5MTgwNDE2NjI2Zjk1NDhlNzgyYTEzNmVjNjdmZTExYWE5IGxlZ2FjeS10cnVuaworMTg0OTQgMmE2MTJhZTI1MDk1OTJhMmMzODA5OGMzNGFhNTZiMWY3MTFlZWE1YSBsZWdhY3ktdHJ1bmsKKzE4NDk1IDQ0NmYzZjkzOWRmMDM5NzY2NTdlMTkxY2IzYzJiOTAyNmRmMDBiNDYgbGVnYWN5LXRydW5rCisxODQ5NiA4Mzg1NTE4Njk3OTA0ZDg5M2I3MDJjNDA1ZGU0MjQ5YzkyOWQ2ZmFhIGxlZ2FjeS10cnVuaworMTg0OTcgMmQ2ZTc2ODlkYzQyMDU3OTUyYmM2MmYyNzQ1ZGVjNWFhYzc2NjkzYyBsZWdhY3ktdHJ1bmsKKzE4NDk4IDdmYjdjNTFhMmU2MTYyMDA3YzNlYjNjNWFkNzVjMWI5M2FhNGQyZDcgbGVnYWN5LXRydW5rCisxODQ5OSA3NjM5YTk1NTI0NzllMzA5M2RhY2E4MmQzNzBlYzBhZTExNjU2YjhiIGxlZ2FjeS10cnVuaworMTg1MDAgN2ZiNTA5OWJlMjAyNjliYzUwYjcyM2I1NzNhMGI4ZDhiOTAzYWFkYSBsZWdhY3ktdHJ1bmsKKzE4NTAxIGM0YmVjN2M0ZDZmZjY0MTM4ZGNlMmEyYzgwZGY2NGMyYjhlODc0MjggbGVnYWN5LXRydW5rCisxODUwMiBmMGNkYTBkNGI1M2MyMDgyNmE4ZTU4M2FhMDMwMTc1NDc1N2U3MzZhIGxlZ2FjeS10cnVuaworMTg1MDMgMTljOGEyZDM4MDdkNThkYTA0MGVhYTdkM2NlNmYzODhjMWY4NDdhMSBsZWdhY3ktdHJ1bmsKKzE4NTA0IDYzYjgwYjc3ZjViMmRiMzA5Zjk4NzJhNmVhYTUxMTAyNmZjODJkNjQgbGVnYWN5LXRydW5rCisxODUwNSA4Y2ZlMjZlZDcyOGQ5NDJkMGQ1MmYxYTQ1NjMxZGNiY2VkNTBkOWIyIGxlZ2FjeS10cnVuaworMTg1MDYgYzEzZjVhMjBlYTMxMjMzOGExZmQ2OWIzNGRkZTFhNWNlMjhjMTE0NiBsZWdhY3ktdHJ1bmsKKzE4NTA3IDViMTU4ZmMwZWQ1NTVhMWFiMWU4NDI0NTE5MzIzMWEwMTkwMWU2NzIgbGVnYWN5LXRydW5rCisxODUwOCBlOWY0Yjc2Njk5YWEyMzEwZGNmMTk2NWMxMzM4Nzk3ODU1OGMxNzA0IGxlZ2FjeS10cnVuaworMTg1MDkgMWE0YTVhOTM2ZjUwOGNlNWM1NDdmYTAwODQ0NzE4OTA4MjIyYTdhYSBsZWdhY3ktdHJ1bmsKKzE4NTEwIDU2Yzc0NDgzYjA1MGNjMjE2NzBlZjU3NDkzZTBlNDE5MzUyMzE0MTkgbGVnYWN5LXRydW5rCisxODUxMSAyZjE3OGJkZGRjMTYzN2QxYjE1YzI4YmJjZmI5MWE3Njc2NDg2NWEzIGxlZ2FjeS10cnVuaworMTg1MTIgOTI3YmNjMzE1ZTU2ZTgzMDFmMmM1NWU3YjFjZmE0NzU5NjdmOWRhOSBsZWdhY3ktdHJ1bmsKKzE4NTEzIDNlMjU0ZjU2ZWVmMWNkNWM0ZjI3NjVmNDIxOWY4OWRkNDRjMTU1NjkgbGVnYWN5LXRydW5rCisxODUxNCA4MmJlYzM4OGM2MzYyOWFhYzViODQwYThhODFkNDY1NGU4ZjI5ODkxIGxlZ2FjeS10cnVuaworMTg1MTUgNjQwNWYzMGFhMDhjMmNjNTEwOGVjYTZlMzNmN2UzOTM5NGE4MzVhNiBsZWdhY3ktdHJ1bmsKKzE4NTE2IDgzZDU5OTY1MmI2MjJiNTM5YWFiZWRjOGEwZGY4MjA3NTMxMTYyOTkgbGVnYWN5LXRydW5rCisxODUxNyAxNzNkNzBlNzJjOWY2NWFlOGE1YTk2ZDJlZThhNDE3NDExZGI4YzU5IGxlZ2FjeS10cnVuaworMTg1MTggMDI2YTkyMTA1MTQ1MjhjNGRiZWZkZWU3ZTlhNmMyMzViNzcwMmY4ZiBsZWdhY3ktdHJ1bmsKKzE4NTE5IDU2Y2UzOGU1NzUwMjZiYjNjMmIwNjk2NzQ3OTQyOWVkNjZhNDUxM2EgbGVnYWN5LXRydW5rCisxODUyMCA2NTg1ZDNjMDRhMjlkODU2OWFkNjRkNjhiYTBhZjUxY2RmMmQ5Mjc3IGxlZ2FjeS10cnVuaworMTg1MjEgZWFmNWE3OGJkMjgyNzExOGEyNjE2NmIzMDkwM2I0ZDY0YTgxMmQwNyBsZWdhY3ktdHJ1bmsKKzE4NTIyIGFmYWQ2NTk3NWE4MmU1YzQ5OWFjZTMxMDcyMTgzMjEzOGNjMmI3YjcgbGVnYWN5LXRydW5rCisxODUyMyA1ZjNlZTVmMWIzZDc5N2Y5ZWRmNDhjYmUyYjdiYjczNzczNjY3ODQyIGxlZ2FjeS10cnVuaworMTg1MjQgMWU0MTcxNzE3ZTc3Y2NmMTgxZmM2YzFkM2I3MDg5MmU5ZDg0M2FjYyBsZWdhY3ktdHJ1bmsKKzE4NTI1IDE4M2QwYmQyZmQ2NmRjMmVjNTRhMDg2NzZmNDIwZTUyZjg0MTZlNWQgbGVnYWN5LXRydW5rCisxODUyNiAxNjkwNzU1YzU5ODZiYWJkMzQ0MDU1ZjZhOGZkZGM4NmNiNWZlYWU2IGxlZ2FjeS10cnVuaworMTg1MjcgOTBlYTFlM2VlZWIxNGQzNDNkZDkxYTRiMDAxZGIxZWZkMWVhNmQ3MCBsZWdhY3ktdHJ1bmsKKzE4NTI4IDNkNTViZjY1Njk5YWRkYzQ2YTBmZTgyNjEyOTA1YWE1MjgwNzc0NTkgbGVnYWN5LXRydW5rCisxODUyOSA4YjRjYTVkYTdkYzI2NWQ4NzZjYjMxMjM3MTk5ZWE2NzE5NWJhNmZiIGxlZ2FjeS10cnVuaworMTg1MzAgNWM2NWU2NzZmMjk5NmM1MGYwODY0YjRmMDQ4MzgyZmE5OGJmOTk1NCBsZWdhY3ktdHJ1bmsKKzE4NTMxIDUxYjU4OTgwNDA1MTRmODNiZTc0YTczNDMzNzcxNGI5MTAzZmU5OGMgbGVnYWN5LXRydW5rCisxODUzMiBjM2M4YmZhZDA3Y2EzMmMzMjljOGMyZTkzZDZlYzYyYTZmNTQ3ZWNlIGxlZ2FjeS10cnVuaworMTg1MzMgMjc3YTdhMTVlYjk0YjA1MzYxNTJjNTVlYWVkMGM4MjZlN2E2NzEwYyBsZWdhY3ktdHJ1bmsKKzE4NTM0IDY3YjNhYzQzOWY2NDAyMjgwZjk1N2MzMTA5MTVhMzVmMmRlODRjNGQgbGVnYWN5LXRydW5rCisxODUzNSA3NWMzYTY0ODQ3YzQ5YWYyMDc2NTMyZjViZjUzZjEwZDA0NDgzMWIyIGxlZ2FjeS10cnVuaworMTg1MzYgOTNhNTc1YmJhMDlmNmY4NTY4OGE3YjZlYjY3Y2U5OWFiNTQ4YThlZCBsZWdhY3ktdHJ1bmsKKzE4NTM3IDNmMmZmMzhjYzY1NzRlZDk5YzEyMTgwZGFlYWVlZTRlZDllNTAzMTUgbGVnYWN5LXRydW5rCisxODUzOCAyOWEyYTExNGU5YzkzMzJjNjhkMGI0MDE0MTkwZTdkNjY2NjUxYWZkIGxlZ2FjeS10cnVuaworMTg1MzkgMDFhNGRjMzFiNTc5YjI0ZDFiNjY3ZTQ1MjRiMGUwNWQ5YTczYjYyOSBsZWdhY3ktdHJ1bmsKKzE4NTQwIDljNzFhZGQ3ZTE2MDgxOGFlY2NhMjdjYzFiMmFhOTM2ZmQ5ZDA4ZTcgbGVnYWN5LXRydW5rCisxODU0MSBlYTQ4MzJkZWVhYzU5ZjE3YTBiNzUzZTA2NWRjNDg3MWRhMmFlMGUyIGxlZ2FjeS10cnVuaworMTg1NDIgM2NhNzAyY2FhNjFhZWFjYzY5OTVkMGNiZmRhOGE4NjJhNGVlMTBmNSBsZWdhY3ktdHJ1bmsKKzE4NTQzIGE1MTlmMjA3ZWQzNjg3MjNkYzIwOTZjZGI4YjRkMDhhMTY0NjRlZjAgbGVnYWN5LXRydW5rCisxODU0NCAxMDYxMmNiYjQ2MjNhZGVmYjk2Y2Y2OWRlOTgyYmYwYTE3YTU0NjBlIGxlZ2FjeS10cnVuaworMTg1NDUgZWNkYWNmNTE3NTk0NTI1ZGFhNWI4ZThjMjQ0NTE0ZTMwOTMyOGEwMyBsZWdhY3ktdHJ1bmsKKzE4NTQ2IGQ2Zjg2NjE5ZGJjNzM0ZmFlM2MzZGU0NzVlNWE5ZjExMDJjNWM4ZGIgbGVnYWN5LXRydW5rCisxODU0NyA5ODZkMWMzY2NkZGU5MWExNDE2YzkzNWU4OGVlNTNkMjllYjFjMDFmIGxlZ2FjeS10cnVuaworMTg1NDggZThmNWU2MWE4Yjk0MzVhODM2NTk1MTFjYTE0YWEwMTZhYmQ5MmU0ZCBsZWdhY3ktdHJ1bmsKKzE4NTQ5IDg0Y2RjODlhYzU2MWY5ODJhYjdiOThhM2Q0NmQ1NjVhNjBhNzRmOWUgcmVsZWFzZTIwLW1haW50CisxODU1MCAxNzVhM2IxNzIwNjg4MGEyOGQ3ZjQxNmZjMTEwYzhlYTI5ODA1NDljIHJlbGVhc2UyMC1tYWludAorMTg1NTEgNTU2YTRlNTNjMjY5NzczMzkxODgxYzYxNWRmYTE3YTEwZDNlZDI4YSByZWxlYXNlMjAtbWFpbnQKKzE4NTUyIGU2MDU2MjQwMDBiZjE5MTA1MDY5YjA3YTBjNjhiMjQ2YWZiNjdhNTMgbGVnYWN5LXRydW5rCisxODU1MyBmNDE3MDUzMDRhZjQ0MmYzMmNlOTA2ZGQyZjRkODk5MTE0NmNmMDlhIGxlZ2FjeS10cnVuaworMTg1NTQgMjgwYTc4ZWQwMDM1NTI4MDhkYzQ0Y2JiZjdjNTc2MjY2YWUxOWQ0YSBsZWdhY3ktdHJ1bmsKKzE4NTU1IDZmMTQ1M2JiZDU2OTAyZWI0ZmE3NTE3MTEwMTA3MGYxYjQwZjllZjYgbGVnYWN5LXRydW5rCisxODU1NiAxMzk2ODRhOTAwNDFhMGVjYzg5MDc2YTc2NWE0YmY2MWNkNTkzZTUyIGxlZ2FjeS10cnVuaworMTg1NTcgNTdhNDg1NzQzMGZmNWQyNTc3MWQ1Y2YyNDMyNTM3ZjFlNDgzYjk5YyBsZWdhY3ktdHJ1bmsKKzE4NTU4IDM2ZjdjMDljMmQ3ZjI0M2U2YzNhNmY1Y2Y3N2ZjMDk3ZmU1YTAyN2IgbGVnYWN5LXRydW5rCisxODU1OSAwYzIyYWYyY2RkNmZiMzdhNzEwOTg5NGJiNjIxN2IyMWEyNDQ3Zjg4IGxlZ2FjeS10cnVuaworMTg1NjAgOGUwMTQxN2VjMDAxN2FiNGU0ZjI1OTY0N2YzZjY0ZDgzZjk4MzM4OCBsZWdhY3ktdHJ1bmsKKzE4NTYxIDRiMTY4ZWViNjFiM2I3Yzc0YzY4YmRkYmFmMGNlNjIzNDRmNjQxMDYgbGVnYWN5LXRydW5rCisxODU2MiA1YTVlOWU3ZmI2YjIxMjcwOWM0NWFiYmM4ZTY0ZWM0MWI0YmI1YTZmIGxlZ2FjeS10cnVuaworMTg1NjMgMTk5N2RmZWQ4ZDIxZDZkOWY1ZWJkZDRkNWQwYzhlOGVmNDExNjVkNiBsZWdhY3ktdHJ1bmsKKzE4NTY0IGY2ZWUwZDQ2NzJkNjI5NjA2NWQ2Yjg4MTZlYTA4MTVmZTM0YmIzMTAgbGVnYWN5LXRydW5rCisxODU2NSA2MTJmYjc3MjdmYTI5OGUxNmYxY2M5NDRhZjNmOGQ2NjZmOTU4ZTkzIGxlZ2FjeS10cnVuaworMTg1NjYgYjQwOGFjZGNhZjNlZWVjYzVmZjBmMmExYmRjYzgwZGU3ODAwZGJhMyBsZWdhY3ktdHJ1bmsKKzE4NTY3IGJmOWJiMGUzZGQzNDEzZjMwNjc2MmZjYTE5YmU4M2RhODk1MTk2ZWYgbGVnYWN5LXRydW5rCisxODU2OCAzMDc1YTE1M2EwODNlMjI5YmRjYTJmZWJhZjAxOTMwZTFlMDFmNGI4IGxlZ2FjeS10cnVuaworMTg1NjkgZTI5NzhjMGI3Y2JkNjkyMWFmOTZhMzlkMzQxYjBiZjBhOTUyMDdhNyBsZWdhY3ktdHJ1bmsKKzE4NTcwIDE2MTg5MmJmN2MxNWVmZTk4ZWRmNDk5MDNlZmE5MDFlMmI0YjUzMWUgbGVnYWN5LXRydW5rCisxODU3MSBhNjI2ZTM5ZDY4NGRjMjNmYTZmNWY0YWE2MWRlNzk4NmU1ZDlmMGVjIGxlZ2FjeS10cnVuaworMTg1NzIgMjQ4MWI1ZmU4NmQ2ZGNlN2FjNDYwM2MzM2I5NTE1YTZiZjQzMTkxNiBsZWdhY3ktdHJ1bmsKKzE4NTczIDkwMWYzOGY3ZjZmNzU1MDc3NTJkMDM2YTIwNzA0MDdhNWExYjNjZDEgbGVnYWN5LXRydW5rCisxODU3NCAzNjkzYWJkMGVhYzFkNDFhNDcwODdlMDI3NmU3NTRjNTYzZmZjMTg5IGxlZ2FjeS10cnVuaworMTg1NzUgMmEzMDUxMjlkNTY2ZWMxNDNlNDI3MmE4YjA1MGJmMjg1NjE5ZmM5MCBsZWdhY3ktdHJ1bmsKKzE4NTc2IDRkOTc4YWQ4ZmIwNWQ2MDRlYTk3NGEwNjg2NzNiNzJkOGI5MDUxNWEgbGVnYWN5LXRydW5rCisxODU3NyAzNjJlNTNmNDNkZDIzNjFiOTA5ODhmZTY0YzgyODJlZDk0MzhkZThjIGxlZ2FjeS10cnVuaworMTg1NzggYzY1NmYzMDhhYTFmODdmY2ZkZGZhMjNhZGZiODBiNTgwMGI1MjEwOCBsZWdhY3ktdHJ1bmsKKzE4NTc5IDZlMmVjOGY3Yzg3MWY3NGEzYmVjMmVhMWZlNjEyN2YxYWZhOWQ1ZjMgbGVnYWN5LXRydW5rCisxODU4MCAyNjVmNGVmN2Q3YjFkMGQ2MjVhMzQzMDZlYzA2YWQ4ZDkwNjgzZWM3IGxlZ2FjeS10cnVuaworMTg1ODEgMDYxMjUyZjVjNzI5NmNkMzQ2ODQ4ZWNjMzQxYThlZjYyZjQ4ZTU5NiBsZWdhY3ktdHJ1bmsKKzE4NTgyIGVhZDhiNWI5OTRhZDdjZTYxMmNmNjBlYmM0NjAyY2VmNWU0YWEzNzUgbGVnYWN5LXRydW5rCisxODU4MyAzZTg2MmE1MTg2MWZkNmI2ZGNmMTkyZTE3ZDhiZjdkMzUwZGM1YTMyIGxlZ2FjeS10cnVuaworMTg1ODQgYWM3YWUzZWFkODhhNDRhYWEzNTQ5YWYwMGI1ZmU3ZmU4MWJhMzZlNSBsZWdhY3ktdHJ1bmsKKzE4NTg1IDJkY2M0YTg2YTg3NmE3MWY3YzZhOWU3MzdhYzVhNjNmNWMzNjBhMjAgbGVnYWN5LXRydW5rCisxODU4NiA4ZTQwMmFlY2EwYTNkMWNkZjhkYzM0YmZhMGU1ZjQ3OGM3ZTliMjM5IGxlZ2FjeS10cnVuaworMTg1ODcgZGI5ZjE4OTNiZTAxNjgxNjY3NjI1YWEzNDhlM2E4YmM5ZDA1NTQyYSBsZWdhY3ktdHJ1bmsKKzE4NTg4IDY0MWFkNmM4MzNiZTgwNGNhZGY1YWM4MDVlMmFhMzczY2FhMzAyYmQgbGVnYWN5LXRydW5rCisxODU4OSA0ZGQwYjk3YWE2ZTE2NjkyOGIwYzVhNWEyNmI5MGZkOWQ5OWNkMDk5IGxlZ2FjeS10cnVuaworMTg1OTAgMmIzYmMwOGQ0ZDg1M2FlZjQwNDg0ZjEzZDk3YTVhNTgyNWZhMWJiNyBsZWdhY3ktdHJ1bmsKKzE4NTkxIGQzYzdlZDE1Y2UyNTc3OGViOTUxMWZiZjEwNzFhODNkODRmZjY1ZTcgbGVnYWN5LXRydW5rCisxODU5MiBhMDY0MTU5OTRjYjU2YTc4NmY2MWY1ZTEwMzAwOTQ1NzRiZGE3YTAzIGxlZ2FjeS10cnVuaworMTg1OTMgM2FkMzAwNGRmZTZkYjZkOWQ0M2E4NjY4Mjc3NTRmYjIwNjAwZjMyMyBsZWdhY3ktdHJ1bmsKKzE4NTk0IDAwYzY4NTVkNzQyYThkMmE1MTg4M2Y2OGU3OTRlN2NlYjhhOTZhM2IgbGVnYWN5LXRydW5rCisxODU5NSAzMTdjMjAzYWJlZTY4NmNiNmJkYTI4N2FiZmExZDUyZTk5ZjBmZTNmIGxlZ2FjeS10cnVuaworMTg1OTYgODVkYzBjZTAxNjJlNmYzY2U2NTY0NDNlMGE0NjQwZTZiODllN2UxNSBsZWdhY3ktdHJ1bmsKKzE4NTk3IDYxMjRjZWRmODQzOGRjODZhMGY4Mzk1MjQzZmM5NGExNmYzNmJlNjggbGVnYWN5LXRydW5rCisxODU5OCAyNzI5MGViOWM1MjY0YjA3Yjk1YzVjOWRjZGZmY2Q1NDZkOTFmMzA4IGxlZ2FjeS10cnVuaworMTg1OTkgNzZjYWYwODU1ZDFmZmU3ZTk3MWJjMTEwMmNhODkyOTBhOTljZjgzZiBsZWdhY3ktdHJ1bmsKKzE4NjAwIDk3ODIxYTQ2ZTAwMDMwM2E2YjgyYzA5MjMxNjFmZTBiYzA1ZmIwYzggbGVnYWN5LXRydW5rCisxODYwMSAwYTc3MDEzYzUwYWNhMjA0NWIxNDg4NGY1ODMxODA3NWM3N2QzMTkyIGxlZ2FjeS10cnVuaworMTg2MDIgOWQxNWJhZjcxNDVhZmYyZTUwNWMwZjJiM2JmNDVhZWRiYjFkODg5NCBsZWdhY3ktdHJ1bmsKKzE4NjAzIGFiYjk0NjA5MzE4ZTZjNDM0MDQ3N2QwZjIxNmIzYjYyMjNhNDY3OGQgbGVnYWN5LXRydW5rCisxODYwNCBiZjgwODY2ODI0ZWNiNWVmOGE3OGM1OWEzODg4ZWMxMTk3MDBjM2Q5IGxlZ2FjeS10cnVuaworMTg2MDUgNGMwNDNlMjI3YzQ0MDdlYWRiMDlmMWYxYmQzODg5OWZkZjI0ZDRjZiBsZWdhY3ktdHJ1bmsKKzE4NjA2IGY1YzA0MTM0ZjRlMmJkN2FkM2E5ZGM4YzVhYmNhNjdhMDNiMTkyZjQgbGVnYWN5LXRydW5rCisxODYwNyA0ZGJiZjMyMmE5ZGYyY2ZiYjU1ODkwYWM0MTVhNDNiNmNmMmE2Yjc1IGxlZ2FjeS10cnVuaworMTg2MDggZmEzZjUzN2M4MjQ5YzQ0YWFmNjYwNTU2YTVhMWVkMzIyOWUyNzA4MCBsZWdhY3ktdHJ1bmsKKzE4NjA5IDc5ZjllMzMzMzE2ZTZiY2RlMmIwOWFjMWMwN2FlNDU5N2E2NWQ4ZTkgbGVnYWN5LXRydW5rCisxODYxMCA3N2M3NjFjZDEyNzJlOWIwMzA0M2JlNWEyNmFiM2Q2NDM2Mjc5MmUzIGxlZ2FjeS10cnVuaworMTg2MTEgZDY3Y2ZjYzA2ODNlZGE4NGZkMTY0MTU1NWJiOGUwMTk1MmU0Y2Y2MyBsZWdhY3ktdHJ1bmsKKzE4NjEyIDkzOWI4ZmZmYzQ1MmUwNTI1YjM4MDA2MWI2MzI4NjhkMzU1ZTZlOWQgbGVnYWN5LXRydW5rCisxODYxMyBjMDgyMmEwNWU5MjNiNmY1MDA5NGQ4NTkwZDQyNDBlYTgxOWZkOGI1IGxlZ2FjeS10cnVuaworMTg2MTQgOGQwMGY3NTU1ZWVjMjc4MmY4NTBjYTBmY2ZiOTg2NzBmZjNhZmViOCBsZWdhY3ktdHJ1bmsKKzE4NjE1IDdjOGZhYzRhYzMxYWJkNThjOTMxYmFiZTI2ZmUzYzA5ZjAwNDNiMTcgbGVnYWN5LXRydW5rCisxODYxNiBhNDNhOGExZjQ2ZWUxYmI2NWM3NDczYmM5YmU2OWUyYTNmYjUzNjBjIGxlZ2FjeS10cnVuaworMTg2MTcgNDU5NzljZGNkMzY5NzM5Y2JiODU5YTg1ZjVmNmM1ZDY1NWE0OTQ3NSBsZWdhY3ktdHJ1bmsKKzE4NjE4IGE5ZTE1YmNhYjMyY2I2MDEzM2RiNzYxMGYwMWIzZDI2ZTljZTE1MmMgbGVnYWN5LXRydW5rCisxODYxOSBhMWQ4OGFiMDIzYTBiZWNkNWRlZmE1MGI4YzM1MzZmMzRjZTFlNzI5IGxlZ2FjeS10cnVuaworMTg2MjAgYTMxYzM4NjhjODEyZmNlNzY2NmQxMjRiOGNiNTQ0NWY2ZGVkZmFjMSBsZWdhY3ktdHJ1bmsKKzE4NjIxIGE1NmMwMDBlNTc5Y2Y3ZTQzNTY3MWVmY2I4YTc1MjM3MzhmNTI5MDAgbGVnYWN5LXRydW5rCisxODYyMiA5NWVlNzlkZmQ3NDYyMzE4NjdkNzM4NGViMGIwMzdhNGZhNTEwNDgxIGxlZ2FjeS10cnVuaworMTg2MjMgZGVmNDE2Y2Q5MjNkZjIyYThiMWFmZGE0MGM0Y2E2NDlkODY5MGQwYiBsZWdhY3ktdHJ1bmsKKzE4NjI0IDM1ZTA4ZGQzN2RmMTM3ZTE2NTI4NTY4MDVlOTM5NWMyZWE2Y2ZlMjYgbGVnYWN5LXRydW5rCisxODYyNSA3YjNmOGU3NjFhMmQ4MmRiMzc2YzI4MzMwNzhiNDg1OWRlMTM4NWNkIGxlZ2FjeS10cnVuaworMTg2MjYgNmQ4ZjdlMTI0MmMwMjlkODE2Mjg5OGMzMWQ2NjQ2YTA1YjIwM2QyNyBsZWdhY3ktdHJ1bmsKKzE4NjI3IGQ2ZTZhNWNmZWIzZDZiN2QwMWFlNWZlZGU2YzQ2OTdlYzQyODM4MmIgbGVnYWN5LXRydW5rCisxODYyOCA4NzQ1ZmIzYTExOTE3MmFkOGViM2Y4MDRmOWEwNzEwZTBmNWZiZjgzIGxlZ2FjeS10cnVuaworMTg2MjkgZTc5MWY0OTA1ZDI1NjFjMjdmZGExNWRhMzJlMzVhZDcxZjJiNzBjNCBsZWdhY3ktdHJ1bmsKKzE4NjMwIGZiMTQzZmIyMzZkMGFmNGI2NTRmMjEwZmI2ODhhZmViNGJlODNmOWMgbGVnYWN5LXRydW5rCisxODYzMSAxOGE2ZTZkOWI0Zjg4YmVmMzlmNjM0ZDRiZTdjMzUwNmMwMjRlYzI0IGxlZ2FjeS10cnVuaworMTg2MzIgMDg2OGMzNjFhZjVhZmRhMmZmMmFjZTM5MDEzNjc5MzY1NzJlYzFiNyBsZWdhY3ktdHJ1bmsKKzE4NjMzIGVkYjk2NjZjMDdjMDRhOGY5ZTg3OWNjM2E5YzQ1ZTVmMDkyMDRmYzYgbGVnYWN5LXRydW5rCisxODYzNCAwNzZiYjI5YTY1ZGM0YjA5M2NjYWMzMjg3YjAxODQ1YTk0MzlkMGY3IGxlZ2FjeS10cnVuaworMTg2MzUgNWQ2ZmI3ZmY2OGM3OWE2OWZjZTQ0YzA0YjEzY2FjMGNmMTQ3M2MxMiBsZWdhY3ktdHJ1bmsKKzE4NjM2IGU4YWFkODQyNDczYTRhNWRiYzE5ZjVkZTc4MDcxOGVmMjQxOWNiNTcgbGVnYWN5LXRydW5rCisxODYzNyA0MzcwZmMxOTY5N2U0YTk2OTMwZGUwYjljODc5Njg5ZTBlNWNlMGE0IGxlZ2FjeS10cnVuaworMTg2MzggNTA3NjU0NGMzMzhiMTM5ZGI5YTZjYTA4MzljNTBhMWEzOWMzYWQ5YiBsZWdhY3ktdHJ1bmsKKzE4NjM5IGI1YTM3YmY5ZDEyZGE3YTIxMTQ4ZTI1Y2E3YWY2NmNlZmFhMDc4ZjEgbGVnYWN5LXRydW5rCisxODY0MCBjNjY5YzI5ZDFiOGNkZjliZGQ4MGEyODNhZWFiMGI3OTIxNGUyMzIwIGxlZ2FjeS10cnVuaworMTg2NDEgZDY0NmQ2MDY4OTI0MzBkMTYyMjJjNWYwZmY1ODRmYzBlZTAzNmEwOSBsZWdhY3ktdHJ1bmsKKzE4NjQyIGIxYzU3Nzg0ODBhMTlmOTU2MzdiMGVlMTg0M2VhNzVmZDMwYTg5MjIgbGVnYWN5LXRydW5rCisxODY0MyBhYjUzNTI0NDQyMDU3ZWRhMGUyMjhmODJjYWUzMGY0OTc5YWQ2YmM2IGxlZ2FjeS10cnVuaworMTg2NDQgZmNhMmNmODUwZTRhY2YxMjJiNGUxMjAwYTJlZmRjMGIxMzUzYTJjNyBsZWdhY3ktdHJ1bmsKKzE4NjQ1IDc4YzRiNjNiNWI5ZDM1NGY3MmUzZDY5ZjQwOWQ5NjM5ZTYxMzJjZTcgbGVnYWN5LXRydW5rCisxODY0NiBlZmYxMWZhYzVmMzYzOWE5OTFjMjQxMjZhZGU1ZWM2YjQ2NGRlOTRhIGxlZ2FjeS10cnVuaworMTg2NDcgODNlMTQ2OTc0YjcyYTRhOTdmMjg2MGIyMmY1Mzg1YzA2M2Q5OGM5ZiBsZWdhY3ktdHJ1bmsKKzE4NjQ4IGIzMWEwNDZmODhhNzcyNDEyOWVkYTU4M2NhN2Q4NDM5ZGUwYjhiZGMgbGVnYWN5LXRydW5rCisxODY0OSBkZGQzZDhjMmNjYTA1MjhhOGFkNTI5NDdlZmUwZWQxZGJiMWFmOGVmIGxlZ2FjeS10cnVuaworMTg2NTAgOWU5NTU2OTI0YjBhNzQyMWU4Y2JiNDQ2N2JiN2QzZWRkMDhjOTJhMyBsZWdhY3ktdHJ1bmsKKzE4NjUxIDFkYjNjYTk1MzBjMjg2M2RlN2JmYjBiZDA5OWQ3ZGYxYjZmYzUxODQgbGVnYWN5LXRydW5rCisxODY1MiA0ODU0ZWU1ODVlMGRmODgxYzgwMjU2MDg1NmI2OGQwZDI0YmQwYTYwIGxlZ2FjeS10cnVuaworMTg2NTMgMDEzMTc5Mzc2ZmEzNWU1M2UwNjBlZTU3MGY3OWUxMTU1MGNhZDA5ZiBsZWdhY3ktdHJ1bmsKKzE4NjU0IDBmZGZhYWVhNWUyZjkwMzFjZTMwMWE4MThiYTNhMGUxOWNmYmU0MzkgbGVnYWN5LXRydW5rCisxODY1NSBiN2Q1ZjY4YmUwMTdmNGM4MDM5YmI4NTdhZmJkYjE5ZDkyZjJhMTk5IGxlZ2FjeS10cnVuaworMTg2NTYgNjNjMDQ4M2VmZjY4ZmY4ZDIyNzQ0OTY4YzVmZDY4MjhjNmIzZjg4YiBsZWdhY3ktdHJ1bmsKKzE4NjU3IGI1N2UzZTM3NDMxNGUzNTNiNWE4NzBhZWU2ZjdkNzQzN2JhYzU0MjUgbGVnYWN5LXRydW5rCisxODY1OCBlZGQxOTIxN2IzOTY5NWRhOWJhNzY5NzZlYjdjYzg0NmQxMzI5NjUwIGxlZ2FjeS10cnVuaworMTg2NTkgZDAyN2U4NWUyMDlmN2Q4NGQxOWRmYzhkZmQ1MzE0MDY0MWJjMWY2MyBsZWdhY3ktdHJ1bmsKKzE4NjYwIDVhMzA4YTlmOTlhNTY2NDdmZGIzYzJkM2E0MWNmODI0Y2VkNThhMzcgbGVnYWN5LXRydW5rCisxODY2MSAzYTI2MDI3NGJjYzZhMTViNGVjNjcwMmY4YjEwYzMxMzlkN2E5ZmI5IGxlZ2FjeS10cnVuaworMTg2NjIgMjI4ZmZkMzZhMGRkYzczOWUwYjc5M2E0NjA0ODRmYTY2N2EwMGEzZSBsZWdhY3ktdHJ1bmsKKzE4NjYzIGViMTc2N2IwNjhmZWMyMjc2ZjczMmE5MjhlNGQxNmQyNmM0MTE3MDkgbGVnYWN5LXRydW5rCisxODY2NCA5YjY4MTRiZmIyYzBkOWY1MzIyMzk5MjgxY2U5YWNhYjExODM2ZmM4IGxlZ2FjeS10cnVuaworMTg2NjUgMzc4MTlhNzc3ZmMwYzQ5ZWY0MzBlNDdhMGNhM2QzZDc5MTYyNmZhMyBsZWdhY3ktdHJ1bmsKKzE4NjY2IDU0MTU4MDRmYjM0NWM2OTIyNGJmZjE3ZjkxZmFmZDg1YmJhYzM4ZGUgbGVnYWN5LXRydW5rCisxODY2NyAzYjliOGYyZGRmZTc5NmJjZDg3MzA4MDk0ZTk3ODJlZDRiMzhkYWQzIGxlZ2FjeS10cnVuaworMTg2NjggMjJmZWQyYjE1YTU0YjJiNWMxYTU2ODRhYWZhYjc1ZjZlMjM1YjJmNSBsZWdhY3ktdHJ1bmsKKzE4NjY5IDM3ZDEyMDIxZGYwNTExMzQ1OTc0MWI4MmY0NTMzZWJkYjY4MTI0YjUgbGVnYWN5LXRydW5rCisxODY3MCBmOTc3MmY4N2IxM2UzZDBmY2U2ZGE1ZjdiYTI1MDdmZWRkNjhiYjY2IGxlZ2FjeS10cnVuaworMTg2NzEgOTU0NjExZmQzNWUxZTk0MGQ0NmNmMTI2ZWJjMWJhNzFhNGY5MzhiOSBsZWdhY3ktdHJ1bmsKKzE4NjcyIDFhMDBkMjE5MTBjODlmMWIzOGIxMmE4NjUzYzFhMjYyZDZlNTc5OWIgbGVnYWN5LXRydW5rCisxODY3MyBhNTYzZWVjNDZjMWFiZTkxZjZhMTNjMDBhNjE5MDAyMzE2YzE5NjIzIGxlZ2FjeS10cnVuaworMTg2NzQgMDY0MDI2ZGM3NjRlODllNTBlN2E4MGFhN2IxZWZkYWQ0ODMwNWYwOSBsZWdhY3ktdHJ1bmsKKzE4Njc1IGZhYWY5ZjEwZDg0OTQzOWU3OTEzYzlkNDUyODYwZDM0M2MzMjQ3YzEgbGVnYWN5LXRydW5rCisxODY3NiA4NjhkMmFjZjc0NTgwOGM5MDMzZjU3Y2Q1ODI5ZDk3YTY5ZWNmNTZlIGxlZ2FjeS10cnVuaworMTg2NzcgYzY4YjA2MjQ5ZDhhMjE0NjdhN2FlNTNjNWYzYjZjNGJlYmFkOWEwNCBsZWdhY3ktdHJ1bmsKKzE4Njc4IDY0NWY4ZmQ2ZmE5ZGNjNTk5NTFjYzJkMjlkMjY5ODA1Mjg4ZjA3ZTggbGVnYWN5LXRydW5rCisxODY3OSAyZDM5OTA2NTYyNDgwMDQxODI2MGVmN2Y5ZDQzYmNlYzk4NTUyNmMxIGxlZ2FjeS10cnVuaworMTg2ODEgNzk3NzBjYTE1YzVhOWY1MjkxNGIxNjJjYjkwMWU1ZTRiM2VlNzBhMSBsZWdhY3ktdHJ1bmsKKzE4NjgyIDMzYjQ0NGNiYWRiOTkyYTdlNTcyOTFiYjllNzUzOTEzYjg3YTZiZWQgbGVnYWN5LXRydW5rCisxODY4MyAwZjIyZmViOTM5N2RiOWIxYjgwN2ZjZTYwNGQ3Zjg2ZDk0YTA2NzhlIGxlZ2FjeS10cnVuaworMTg2ODQgYzdkZmJhMGRiODc5MGIwMDRkMTFmYmMzYjViYTU1NzFmYmQxNjVmNiBsZWdhY3ktdHJ1bmsKKzE4Njg1IDk4MjE3NzdmOGRhZDZjMGY0NWYzMmRiODM1M2VhOTkwNzFkY2ZmZjggbGVnYWN5LXRydW5rCisxODY4NiA3ZjdlZjk0NDdlNTlmY2E0YjhlMjBhNTJiZGQzMTUzMzU3ZGZlYjA0IGxlZ2FjeS10cnVuaworMTg2ODcgNDMyOGZmZTY0N2JmN2JlYWZjY2RkNzU1ODEzOGVlMmQ4Yjc4Mzk4MyBsZWdhY3ktdHJ1bmsKKzE4Njg4IDE3NDQ5MGU5MjRkNDdmMTkyYmQ5OGZhOGRkMmVlNTNkNjlmNTA3ZjIgbGVnYWN5LXRydW5rCisxODY4OSA4MWRiOTJlODBlYTg4NjNkYjk5OWZjOWVlZWEzNjRmY2Y3MjU1N2Y1IGxlZ2FjeS10cnVuaworMTg2OTAgMDVhZDI5N2UxNDRmZTk3ZGU1MmVlMDJiNzUwNDQ4ODgwYzEyMGNkNyBsZWdhY3ktdHJ1bmsKKzE4NjkxIDkzMDhkYzhjODVlMDM1YzQ0NGI1ZDRmYTdhMjk5MWIxNzQwMTMwN2IgbGVnYWN5LXRydW5rCisxODY5MiBlMDBmNzE4ZTRkOGFiMzk1ZTY4MTk0ZTNkY2NlMTU4ZTdjY2ZiZGE2IGxlZ2FjeS10cnVuaworMTg2OTMgOWEyMzg1ZWUxZDk5NDQ2NDA3NjE3ODU1Yzg0ZDYyNGVlNmJkZDkzMiBsZWdhY3ktdHJ1bmsKKzE4Njk0IDBhZTM4OWU5MzVmYzQxNmViODc0MzdiY2QzNWNlMzkxODgxNDhjM2IgbGVnYWN5LXRydW5rCisxODY5NSA3ZWEzMGExNjM0NjM2ZDhmZWFjMmQ2NGU4YmI1OGMzY2Y5YzJiMTFhIGxlZ2FjeS10cnVuaworMTg2OTYgNmUzMjlmM2UxN2YwZTUzOWE2MjhkODhkMzAzNTZiYTFkNmYyODE1MyBsZWdhY3ktdHJ1bmsKKzE4Njk3IGIxYjBhNzAzZWM0ZTZhM2IwNjczZDEzZDJiM2JmMTU3NDBiNmViNzEgbGVnYWN5LXRydW5rCisxODY5OCAwZTRmNDhjNWZjODRkODgwNjA1M2Q5YzY4NTUzOTA4NjM0N2JkYmRjIGxlZ2FjeS10cnVuaworMTg2OTkgYmIzMDNhNzZhNDc4MzdjZjA0NzI2NmJiNDY3OWU3YjRjYjZkMTU1NiBsZWdhY3ktdHJ1bmsKKzE4NzAwIDY3YzhhYmQyMTAyNWE1NDJmZWE3NjM2Y2M4M2ExNDg4ZTU3MDU3NTUgbGVnYWN5LXRydW5rCisxODcwMSAzYjY0MzY1M2UwNzgyMGJmNTczNWIyNmQ1NmE2NjE3ODUzZWJkODc5IGxlZ2FjeS10cnVuaworMTg3MDIgN2Q1MDI1YmJhMDM3YzZjNGZhNTEwOTFiOTg4ZTU5NWE2NWE5NTUxYiBsZWdhY3ktdHJ1bmsKKzE4NzAzIDE3ZWJhNzQwNDA5OWNlNTNkM2Y1ODYyMTQxYWRiZmUyOTNlMmQxZGQgbGVnYWN5LXRydW5rCisxODcwNCBmNmNkMzY0OThhNTAzZjMxNjUxNjczMTJmZGQ1YWM4NjZhODhjMjkyIGxlZ2FjeS10cnVuaworMTg3MDUgNjAxYzUzYTllNDlkZjFmYjIwYTkyZThmNjQxZjBjNmQyMmUwMzc2ZCBsZWdhY3ktdHJ1bmsKKzE4NzA2IDI4MzM1NmZiNmVmYzc1OWRhYTc5ZDQ1MTU3MTg0NGQwZTIyMjdhNmEgbGVnYWN5LXRydW5rCisxODcwNyAyMTBiYmU1M2I2ZDRhYzc4YmRlYjQ3NDczM2QxYTk0OTNiZTcwODgzIGxlZ2FjeS10cnVuaworMTg3MDggZDQxZjliMGE0MGNhYTYxNDc4OTVlZTRjYTI1NzZhMGVmYjgyYjUxNyBsZWdhY3ktdHJ1bmsKKzE4NzA5IDY3OWQ1MDcwNWUwNjk1ZTExNjZiNDM1MjEyMGJjMWVmNDNjYTc1YzQgbGVnYWN5LXRydW5rCisxODcxMCA0MDVhNTk3MzU4NDE2ZDAyYTQwOTA1ZGY0OTJjYWY2YTQ5YjA0ZTY5IGxlZ2FjeS10cnVuaworMTg3MTEgMTdkM2E2M2UyMmM3NDI4MzkwZjgyMjEyNTdjMmI4N2UzZGZlYzhiMiBsZWdhY3ktdHJ1bmsKKzE4NzEyIGM3MDQyMTQzMzk5ZjMxODQ0YTJkMGEyMjQyMTUzMTIwM2ZjZTQwNmYgbGVnYWN5LXRydW5rCisxODcxMyBhM2MxYTIzNGNlZTcxODQxNGNjMjdjOGNlZWQwZTY4MGJjM2RlZDEwIGxlZ2FjeS10cnVuaworMTg3MTQgMGQ4YjViM2Q5ZDgzZDA2NmNlZDY4MWI5OWUzYTJjZjYyZTZjNzY4ZSBsZWdhY3ktdHJ1bmsKKzE4NzE1IGE4NGI1M2JhOTBjNDFkYmVkY2EzM2NmNDM2MjI3ZWVlYmNlYTZmMDIgbGVnYWN5LXRydW5rCisxODcxNiBmYzc2NTQ2NGIxNzgwMTJjN2NjMmFiOWI0MjQ4MWI3MWJkMGJkNTljIGxlZ2FjeS10cnVuaworMTg3MTcgMTUyZDAwNzE4MDA2MDlkNTBiMGNhNGU5NjJmZWU3YTc3ODUyM2Q5NSBsZWdhY3ktdHJ1bmsKKzE4NzE4IDhjNzE0MDlhYzBjMzk0ZDE5NjY1ODY5OGU4OTU0MWRlNTIyMTVhMTEgbGVnYWN5LXRydW5rCisxODcxOSAwYThkYTZmMzk3Yjc4ZjU4MThkOTA3ODc4NDE3MDlkZWU4YjBkYThhIGxlZ2FjeS10cnVuaworMTg3MjAgODFlM2Q4NjI2YWRmMGY3OTA1NzliYTg5NTExMDQyOTFhYWZlYzJhYiBsZWdhY3ktdHJ1bmsKKzE4NzIxIDMxOTY3YTIzMzYwMDkyYTVjODdmODdkYjA5Zjg0ODJkYmMxYmFhNDggbGVnYWN5LXRydW5rCisxODcyMiAwODNhNWM3NWVkOTA0NTIyMTNiNDg0NjA0NjA4OTYyYjhkMjJjMWE5IGxlZ2FjeS10cnVuaworMTg3MjMgZTdmNmQ1NGMwMTRkMzQxZWU1M2EzNzVjOWY1ZTdhYTEyMjhjMzdkYiBsZWdhY3ktdHJ1bmsKKzE4NzI0IGZjMWU1ODMxZmUxMDc3Yjc4MjFlZTNkNWZmZTA1NThmOTY2NWM2ZWUgbGVnYWN5LXRydW5rCisxODcyNSA3MWIxOWQzNmFhZmE5M2ZlYjAwM2MyMTQwMjc5MDJhNzNkYjcyNTlhIGxlZ2FjeS10cnVuaworMTg3MjYgMWIwM2Y3NmFiMDNlYTc0MjU1ZWI3NTQ1MmI5NmE0OTk1Yjk0YzhlZSBsZWdhY3ktdHJ1bmsKKzE4NzI3IDU1NzhlOWI0MjRkNGFhOGRkY2U1NmVhMGFjZmQyZGMwNGJiZjMyNGUgbGVnYWN5LXRydW5rCisxODcyOCA3MGE1OWUzZmIyNzhiYjUyMGU5NzEzN2JjY2RjNTVhOGQ4OGQ2OWZkIGxlZ2FjeS10cnVuaworMTg3MjkgZjVhM2Q5OGEzNWJjNGJkYzc0YTg0ZmJhNmVlZDg1OWQwZjA3YWQyOSBsZWdhY3ktdHJ1bmsKKzE4NzMwIDMwNjBjYmZhMDFiZTZkZmM2ZmRiODhmMGY1YzEwYjczYmJmYmYwNmQgbGVnYWN5LXRydW5rCisxODczMSAxYTRjMWMwZTE0YTEzZjU5NTI2NWFiNjRjYjE0Y2M0OTEzODY2MWE4IGxlZ2FjeS10cnVuaworMTg3MzIgMDEwZDAzODUzNTQ2NDZmMTU3MDA1MWYxOTM2ZjY1MDc0MzMxZGUwYiBsZWdhY3ktdHJ1bmsKKzE4NzMzIDYyYWVlZmEwMWZkZDU1NGUzMGI1MDVlNWUwMzc3NTRkZTcxYzU0ZTQgbGVnYWN5LXRydW5rCisxODczNCAzNjg1ZWYyYTU1YTQ4ZTNkNmMwMGE5MThlYmFmZjczMGYzYjI0ZGY1IGxlZ2FjeS10cnVuaworMTg3MzUgM2RkMjE3ZmJkZDU5YjFlZDI2ODM3MjE4N2RjODFkOWYxNTgwOWVhYyBsZWdhY3ktdHJ1bmsKKzE4NzM2IDRjMDFlZTBhODA3M2Y5ZGU0OGQyYzBmNTdkOGJhZjhmNWQ2MzcxMTMgbGVnYWN5LXRydW5rCisxODczNyAxOTU1NTdhMGYwNTBiODEyNzJlMmE1YTYxNTdlMTA3MzRhOTIyM2M3IGxlZ2FjeS10cnVuaworMTg3MzggYTMzZGUyM2IzMDY2ZmJjZGJiMjdlOTE2ZjQyZTg0MDg4N2VkODNhZSBsZWdhY3ktdHJ1bmsKKzE4NzM5IDkzZDA1NjdjOWZjOWNiMWYxNGU4MzcyZjExMWYzZjVjYThkMjNlOWIgbGVnYWN5LXRydW5rCisxODc0MCA3NTEyMTVmYTBkYTdmM2MzMTI2NzQ2NWY0Y2QwOTY3NTgxYjJhMDFkIGxlZ2FjeS10cnVuaworMTg3NDEgOTA5OTJjODJkNDZlOWZjZmZjNGY1YWY0NjA4MTE0Y2JmMDQ2ZmIzOSBsZWdhY3ktdHJ1bmsKKzE4NzQyIDNlYTEwZWU5MWU5YzVlNWQ0OTliODRiMDA5OGQxMmE0ZGNlM2ViMWYgbGVnYWN5LXRydW5rCisxODc0MyA0MTU0NjM1MzI1NWM3ZjBhOWI4NDM0NWRmMTBhNDEyOGM1YzRmMTdkIGxlZ2FjeS10cnVuaworMTg3NDQgMTkwZDE0YjcwYzI3YjhmNTUzMjBjNTk5MjQ0MWIxMDFjNDQ3ZTczZiBsZWdhY3ktdHJ1bmsKKzE4NzQ1IGY0N2QxY2JmYmU3MDYzMjRiOWE2ZTNkNjhmM2Y1MjM5ZDIwZWRkZDYgbGVnYWN5LXRydW5rCisxODc0NiA3Y2Q0NmZmODliZmMzYjBlZmZlMThjODk1NGM2ZmM5NmFmZWUyNjg5IGxlZ2FjeS10cnVuaworMTg3NDcgZTZhMGZkNTRiNjA3MmZhODRhMjhlZTU2OTBhMjgwYTNlZTJmYjM2ZSBsZWdhY3ktdHJ1bmsKKzE4NzQ4IGE3MDI1ZjA3MDljNWI5OWY5NTA4YjgyMjZjMTk5OTUwNjE0NGE1ZDMgbGVnYWN5LXRydW5rCisxODc0OSBmODMxMTVlZGYxNmFmNmFkNmI0N2U4N2YwZmVlYzk1YmFjN2JjOWMzIGxlZ2FjeS10cnVuaworMTg3NTAgYjUzMjA2Mjk1YmRmZWY3NTQyNDI5NTJjNGFjMjRmZDkzOTgwMmQwZiBsZWdhY3ktdHJ1bmsKKzE4NzUxIGIwYmE0NmIxNmUwNzUwOTRmYjA0NGM5NWViOTM3ZDU0MmFhNzI0YWYgbGVnYWN5LXRydW5rCisxODc1MiA3Y2JlNDVkNzlhYjVjMGJkMDYyMDcyMTE2ZjE3YjIyZDc5Njg3MzkwIGxlZ2FjeS10cnVuaworMTg3NTMgMThjNGM3Y2E5M2VhMDZhMTljYjMzMTcxYWJlNjFiZjViNTgzYzhiYSBsZWdhY3ktdHJ1bmsKKzE4NzU0IDhlZjMxYTAzOWE5NjQwYTA1NzUxYTEzNjYxMmViZTk4YjU5NjY3MzMgbGVnYWN5LXRydW5rCisxODc1NSA1NTNhMzE1ZjU4ZTkyZmQxMzJkMTRkNmVkOGQ4N2I3Y2M3NThjY2EyIGxlZ2FjeS10cnVuaworMTg3NTYgMWM2YjBkM2E1OGVhZGI1NTY3ZmNjZGRiZDg2MWZjN2Q5NDg0NGM0NSBsZWdhY3ktdHJ1bmsKKzE4NzU3IDg3NjRkZmZiYWYyMzRlMTk2ODdmMjI5ZmM4MWRhNDNiOWQzM2U3NzQgbGVnYWN5LXRydW5rCisxODc1OCBjODdlMmEyZTMzNWQwYTI5MDI2MjViNTJlMWRkZjRmY2YyMTEwZmJmIGxlZ2FjeS10cnVuaworMTg3NTkgYzU2OGJhOWRjMTgwYTJjYTIzMDkyNGY1MTRhMDEyZDk4MzY3ZGNiYyBsZWdhY3ktdHJ1bmsKKzE4NzYwIDgzNjZmY2ZiNjA5MDRjZmI1ZmFmNjgzZDYyNDFjOTUyOGJkMzNhZWEgbGVnYWN5LXRydW5rCisxODc2MSAxNTI4MTRmNmNkMTEzM2U3YjMyYTI3NzZhZmFlNzI0ZTMzNDg4MjJkIGxlZ2FjeS10cnVuaworMTg3NjIgMTEyOWUxNmExMWRmYjM1NzkxN2Q1YTZhOGMxZDE0MjkxOTcxMWUyZSBsZWdhY3ktdHJ1bmsKKzE4NzYzIGNkODNmN2E5Y2RjZDFmMzE1OWU2MzkxYmExNmMxMDZiNjBlYzBhMWIgbGVnYWN5LXRydW5rCisxODc2NCBlZWYzMjFiNmU0MWNlNjYzYzY4NmI3ZmI2Mzk4ZmE2ZmQzOGRlNmU5IGxlZ2FjeS10cnVuaworMTg3NjUgYzlkZGJlMzQwN2ZhNDQwMGRhOWFjY2ZmNGYwN2U3NWUyOWIzODgxYSBsZWdhY3ktdHJ1bmsKKzE4NzY2IDE0OTQ1OGE1NzQwYWYxZjU5NmQ1YWViNzhiOGJmZDE4NWEyM2U2YzQgbGVnYWN5LXRydW5rCisxODc2NyAxM2U1ZWIwMDZlYjMyMWJiZmU0OTM5YzMyYTQxNzRiZGRhYWM1MGFmIGxlZ2FjeS10cnVuaworMTg3NjggNTA4OTBlMzQ1NGM5NTBhODhlYjQzMTNlNTA0YmE2YWU4YTEwNDNiYyBsZWdhY3ktdHJ1bmsKKzE4NzY5IDEzMjViZGU5NDg5NmRkNWRkMzZmODU5ZjE1MTE1MmMzZmQ0MjQ3YTcgbGVnYWN5LXRydW5rCisxODc3MCA5OGU5NWUwZjViZWM3NDVlOWUwMTAyNzlmZTdlMGFmOTY3YmU5NWJiIGxlZ2FjeS10cnVuaworMTg3NzEgOGRiMzE5ZGRmYjM3OWU3Y2Y2YTc3OTgyMTczMTA4NjkxNmVkZTUyOSBsZWdhY3ktdHJ1bmsKKzE4NzcyIGY3ZjNiZTNkMDBiOWM5ZGVkNmM0ZmI2MTAzNGQxZWNlZWM0YjJjYWQgbGVnYWN5LXRydW5rCisxODc3MyBhOGVkYjNmN2Y0ZjgzYjk1YTA1M2JlZDA1NDEzNWMxOTNmMDFmMDZjIGxlZ2FjeS10cnVuaworMTg3NzQgZTgyNDY0NDBhODI1Yzk0ZGVhOWFkMjc5ZmY2ZjZiYmJkMzE0ODM2NiBsZWdhY3ktdHJ1bmsKKzE4Nzc1IGQ3ZDE2NjU1MGM0MzM5ZmFlZjk4YmIyMTk3YWMyM2U4N2MwODYyZWIgbGVnYWN5LXRydW5rCisxODc3NiA4OGExMjY3YTMzOTVlYWYxMzNlMTk4NDkxNWIwMmQ2Y2ZlYzg2NzQ2IGxlZ2FjeS10cnVuaworMTg3NzcgMTg1MTFlMTEyODcwMGQxZWQ1YjhkNjkyZTliZmFmODJhMGJmZWQ1MyBsZWdhY3ktdHJ1bmsKKzE4Nzc4IGFlNjM2YjhhYzQ4MDhkZjRiYmE5Y2ZhYmI5NDgyMTEzMzk2M2ZmMGUgbGVnYWN5LXRydW5rCisxODc3OSBhMzgxOTBmNzFiZjJiNWY1NzdhYjUyMzNkMGZlNTI0ZTUzODFlMzMwIGxlZ2FjeS10cnVuaworMTg3ODAgYmE2ZDRiNTIxODBhNzdmZmRjNjYyMTMwZTJiNTYyODIwYTc3YWJhMCBsZWdhY3ktdHJ1bmsKKzE4NzgxIGJlMjU3YTc1NTNhMjI3MTY2M2ZiZDEwNWQzZjE2NjZkMmU0OWUwNzQgbGVnYWN5LXRydW5rCisxODc4MiAwMDdmN2ZhZjYyYjIwMzE4ZjI3ZGEwZGIxYjQ4NDE5NmQ0MzM1NDVhIGxlZ2FjeS10cnVuaworMTg3ODMgNDg5NjkyZTc5MTUxNDMyMTQxNDgwZTFjYzA0ZWU4NjJmMDBkMzU3NiBsZWdhY3ktdHJ1bmsKKzE4Nzg0IGZkYTlmODZkYzRlODQ0NTVkYjkzOWI1NmI3MDEyMGRiY2M4NDE4YmEgbGVnYWN5LXRydW5rCisxODc4NSBmZjZjMzBlOGNhNzNjODY5Y2ZiZDEyYzQ0MGZjOTBkZTkwYjRmZTQzIGxlZ2FjeS10cnVuaworMTg3ODYgNzAyZWQ5OTY1MjI4YmIwN2I2MGE3ZjdmMGE1MGU2YTYyNmUzMjRhZCBsZWdhY3ktdHJ1bmsKKzE4Nzg3IDlkNWJlZWQwYjkzZmRmMzVhY2YyMTE5NWY1NmE5YmY0ZDRkMzdmMmIgbGVnYWN5LXRydW5rCisxODc4OCBhYzEzY2VmNDIzYzgzM2Y1ZDEyNzk3MjMyMDMxNTEzNjk0MTUyNDc4IGxlZ2FjeS10cnVuaworMTg3ODkgYzk1OWY0YjNlZmExMWFlNDlhMzE3OTZiOGFkYWVlMmIyNzFlZDg1YiBsZWdhY3ktdHJ1bmsKKzE4NzkwIDE4NzJlNjA5YTYzNGMwMmMxNDNiMTg3MDc5YzViNTJjNDQzZTFjZmIgbGVnYWN5LXRydW5rCisxODc5MSBhNDg0NTkzY2Q0MDdlMWM2NjE1NzRhMDcxZmIxZmZhMTg2NzUzZDg0IGxlZ2FjeS10cnVuaworMTg3OTIgMTRhMjdhY2M3NTVhYjQzNDFmYjc3Y2M4YzY2ZDllZTQyMjcxMGEwYiBsZWdhY3ktdHJ1bmsKKzE4NzkzIGRjM2I5YTU4MTY4NmNkOGM0YzRhOTJkYWJiMjFhNDZlMjQ4NzI3NDUgbGVnYWN5LXRydW5rCisxODc5NCAxODgxYjk2ODk4OWI4OGRhNzNkYjg0NjUwNTM3NDU1MDU2ZDZkZDFkIGxlZ2FjeS10cnVuaworMTg3OTUgMzVhNDE5NGY5ZWFkOWI5NmZjNjNmNTIyMDFlZTcyMjU5OWZhNDMzNyBsZWdhY3ktdHJ1bmsKKzE4Nzk2IGIxYTVlZGI4MGY1Y2ZjZWNiNWIzMTZiYTI2MTQxMTg3MjM5YjRlY2IgbGVnYWN5LXRydW5rCisxODc5NyAwYjBmY2UxNGQ0ZTg4MjZiZmM2YmNhYjMxZGM4Yjc3NDkxNTc5ZmVkIGxlZ2FjeS10cnVuaworMTg3OTggYmVjMGY2MWNmY2Q1NmUwNjM0ZGI3ZjdlMzE0OTgyYTQ0ZGM3ODYyOCBsZWdhY3ktdHJ1bmsKKzE4Nzk5IGQ5ZDBkY2I3MzVkN2Y3YWM0NTcyNzVkMWMxNTA3YTAxNGY4ZDZmYmIgbGVnYWN5LXRydW5rCisxODgwMCA4ZmQyMjFhZWQzNTc1OWJmMDlkZWI4MzYyMDQ5YWI3MmNmNGMwODM3IGxlZ2FjeS10cnVuaworMTg4MDEgODY3YTRhNmU3Y2RhODc3Zjg3YjZjZTAwZDM3NWY4MjhjNmI0OWUxYiBsZWdhY3ktdHJ1bmsKKzE4ODAyIGVhNDY0ZWRhNjE1ODRiODk4OTQyMzA1ODVkMWEzNDQ0NmIyNzM0YTggbGVnYWN5LXRydW5rCisxODgwMyA1YWJhZTc5NTc0MmVhOTY5MzdkZmViMWJlZDI2ZTg2M2QwMDUwZTM0IGxlZ2FjeS10cnVuaworMTg4MDQgNjQzOTBjZWFhYzFhZjljZjk2OGZjMDBmZTQzMTY3NWY1OGQ4Zjg1OSBsZWdhY3ktdHJ1bmsKKzE4ODA1IDViMDYzYmFlYmVmOGM2ZDU3Y2Q5NGZkZjFlMDUwZTIwOGViNTIwODkgbGVnYWN5LXRydW5rCisxODgwNiBmNDY0YTAzYmU4NWFlNmQ5MTJhYWJlMGQ1NTM0ZmExYWY4Njc5ZjFkIGxlZ2FjeS10cnVuaworMTg4MDcgMmVkZjVlZDMwNTgzOWIxY2NmMjU0MTE3M2U2MTg0ODdhNDQ3NGQwYyBsZWdhY3ktdHJ1bmsKKzE4ODA4IDRmNjIxNzA4NTE0YjFhYTVmMjFhMDYxMzEwNDEyNTllZmJjMDA5ZGMgbGVnYWN5LXRydW5rCisxODgwOSA2YTg1MjQ4YjQzOWVhYTNkOTA4ZWMxM2M2MmUwOThiMDJlYTZiNTM1IGxlZ2FjeS10cnVuaworMTg4MTAgM2JjMjQ0MDQyN2QzMzFjZmQyMTdhOTBmNjVkNjM2ZmZlNzA0MzhiMCBsZWdhY3ktdHJ1bmsKKzE4ODExIDc2YWQyYTlhM2U1MzRlMWMwNTY0YjQ2MzM1MzM5YWRmNWFkYzIwZDcgbGVnYWN5LXRydW5rCisxODgxMiBmMmUxMzg5NWJkYTdkZjUxODA3NzE2ZmQwYWUwMWNkMGVhNWMwOWJiIGxlZ2FjeS10cnVuaworMTg4MTMgZGIyNmI0M2M5MjRmMzBkY2EwNzRlYmRiNzM1MjQ1Mjc1MzExN2U4NiBsZWdhY3ktdHJ1bmsKKzE4ODE0IDFmOTJkNjNiMjBmMDIzMTA3ZmE1OWVlZjQwNzk5Nzg0ZThmZjYzMjkgbGVnYWN5LXRydW5rCisxODgxNSA4MzQ5YjRkZmM1MWFkZTYzZDI0ZmM5YzBiMjcxZjIxZmYxN2NlNTMwIGxlZ2FjeS10cnVuaworMTg4MTYgMDFlYWU0MDg1N2Q4M2RiZTU5YWVmODM5YTg2ODNmOWVkZjRhNjczOCBsZWdhY3ktdHJ1bmsKKzE4ODE3IDI4M2EwYjJhYWRjNWYyYWE5NGFiZjNmYTZjYzYzYjc0NmVlZWNmZTMgbGVnYWN5LXRydW5rCisxODgxOCA4NTdhYWQ4NDJhZTdkOTlkMTI4MmYzMGRmZjA4Y2VhZmNjMDk4MzNiIGxlZ2FjeS10cnVuaworMTg4MTkgYzFhOGRlYjE1ZjBlMDY2ZWUxYTEwYTE3MzQyNzYwNzBhMGJmMzFjYiBsZWdhY3ktdHJ1bmsKKzE4ODIwIGM4MjA1NTUyZGRlMWViNjhkZTBjOGJiNWY2NTZhOTQxYTkwOThlMDYgbGVnYWN5LXRydW5rCisxODgyMSBmZGEzZmYxOWQxYzRhOTY5ZWE2NDg1NGVmMjQzZGNjNWRiN2IzMjExIGxlZ2FjeS10cnVuaworMTg4MjIgZDczYjIxZGFlMjlhMmVlODk4OTNkMDRhOTY0ZjM5MmFjMGVhNGFhMCBsZWdhY3ktdHJ1bmsKKzE4ODIzIGMwMDAwYmQ2MjUyYzY4MDMyNTA0ZDE0ZjIxNDczNWE4MTYxMGJiNWIgbGVnYWN5LXRydW5rCisxODgyNCBmMTc1MWFiZjc3MWZmYzRhY2I2MTE5OTYzMmMyYTE5NzVlYTk0NWRkIGxlZ2FjeS10cnVuaworMTg4MjUgY2YxN2EzY2U1Mzg3NDNlZDIzYWYzMmFlNmQwY2FhNWE0NzE1ZWU1NyBsZWdhY3ktdHJ1bmsKKzE4ODI2IGRjOGEzMGI4ODg3YzgwNzNiZTVhN2QyMmQ5ZTgzZTc4YzU1M2JlNjQgbGVnYWN5LXRydW5rCisxODgyNyA1YWJiNDczMDRiYzc2ODVlNjkwYzVkZTA4MjlhNWY5OWNhMjMzZGMyIGxlZ2FjeS10cnVuaworMTg4MjggZTU5YjgzNWFkODlhNTJlY2Y5NzFjMjRlNWNjMWYyNjRkZTliMWE4OSBsZWdhY3ktdHJ1bmsKKzE4ODI5IGRjYWUzZTA4ZDg0ODQ4NTczYzJmMmJjOTc0NDRlNzdkOWIzYzdmNGYgbGVnYWN5LXRydW5rCisxODgzMCA1YmJhODVkNDllNWFmOGI2YzI5NGQ0YWExOWZmYmEyYTc5MTA1OGQ5IGxlZ2FjeS10cnVuaworMTg4MzEgZTIxZGE4NGQwYzY1ZjBhMTAyNDI0ZWQ4ZDg2OGM3Nzk1ZDE0ZDRiZiBsZWdhY3ktdHJ1bmsKKzE4ODMyIDc3MDA4ZjA3Y2UyNWRhYTAzYzQ3MjgzN2E1YWFlNjc3YTRiMTM2NjcgbGVnYWN5LXRydW5rCisxODgzMyBmZjljNzliYmMzZWVkMWIyMTU2ZjdhMmU3NzdiNGRjNGQ2MjM3MDE2IGxlZ2FjeS10cnVuaworMTg4MzQgODg5YjdiYWY4YmJiNGIzYzlkZDIwMzZkZDU4ZDRhOWRhNzg0MTc2MyBsZWdhY3ktdHJ1bmsKKzE4ODM1IDcyMTM5MjYzZjhhNzk3NTJkMjMxZThkMzk5YzA0NDZhZDUwMDk5MzYgbGVnYWN5LXRydW5rCisxODgzNiA1YjkxMDNlNjJmYWMzZGE0Y2YyODI1ZjljM2E3YzYzZmFlZGRjOTBiIGxlZ2FjeS10cnVuaworMTg4MzcgNTQyMDU4MjhiMWUxNzNjNmY5MmU4ZjJkOWEzMzQxZGM4MjYwZWYyZSBsZWdhY3ktdHJ1bmsKKzE4ODM4IDUxZmM0NTI3NmE0MzNkN2EwNWI1MzM3Y2RiYTY3OWE5ZWQzMDJmMjYgbGVnYWN5LXRydW5rCisxODgzOSBmMTY1NDVmNTgzNDU2MDhiNWFkY2U4NDM3MzQ5MDdjYzQxMGYxMjM3IGxlZ2FjeS10cnVuaworMTg4NDAgMjRkYWZiYjBkYjU4ZjY2MmU1ZTBlM2I3MjEwYWZlODc2YWI0YzRlMSBsZWdhY3ktdHJ1bmsKKzE4ODQxIGEzNmE0OTMyZTM5OTEzNWMxNTQwNGQ2NTc2YWI5ZmZlNWI4MjVkNmEgbGVnYWN5LXRydW5rCisxODg0MiBhZmFlNDA2OGQyZGQ5ODgyOGYyM2M2NDM5NDZkNTJkMmRkMGNiMjg0IGxlZ2FjeS10cnVuaworMTg4NDMgZDFjYjQxMzhmZDM0YTRhOTY5NzUyMDc0Yjc3MDI4NWVhZGJjZjVjYyBsZWdhY3ktdHJ1bmsKKzE4ODQ0IDkxMzA0YzRjNzI1NmY4M2Q2MDI3NWNhMzhjZTVhODU4NjYwMzA1YjYgbGVnYWN5LXRydW5rCisxODg0NSAyYjI5MzE5YWU2ODE5NDAzZWYwMzNjMThmY2IwMWZmM2RmMzgwYzdjIGxlZ2FjeS10cnVuaworMTg4NDYgNmMxNzUxZjZhZmUyM2UwZGViNDM0YjQ1YWZiNGI1NDAzMjc0OWRlMiBsZWdhY3ktdHJ1bmsKKzE4ODQ3IDE3ZjIzZjhjZDhjNzdmMmQ1OTU4YzUzM2FmYTgwMmMwNDhkYjYwMDQgbGVnYWN5LXRydW5rCisxODg0OCBiZDVhZWU2YjgzOTBkNGRiMjIwZjM5M2M3MWIyNDBkYTNiZWNlYjhkIGxlZ2FjeS10cnVuaworMTg4NDkgNWZiODY1MDc1MTljMDlkOWFkZWNjYzFmYTJjNTU0ZTY5NDcyZjY2OCBsZWdhY3ktdHJ1bmsKKzE4ODUwIGFlMjlhODliNzdjM2ExMjY0ZGU4NTNlMjg3ODNjNmNjYmEwN2JlZjAgbGVnYWN5LXRydW5rCisxODg1MSAxZjFlZmYwODFhMmE3NTEyZTgyMmQ5MDA0ZTM4ZmI4YWY1MDljZjNiIGxlZ2FjeS10cnVuaworMTg4NTIgM2Y0YjYwMDJjMDdkMzEzZGE2MzczYzliNWI5N2UxZGI2YjFiYWQ2MCBsZWdhY3ktdHJ1bmsKKzE4ODUzIDYyMDg0Y2Q5NTdiZDZkNGQyNDgxZjU2N2FiZmFkNmQyNDE0ZGM5ODYgbGVnYWN5LXRydW5rCisxODg1NCBhYWNiYTM3NDc2ZDQyNmVkMmNhNjVkMmI5ODZiMmE3YjAzODU4MjkyIGxlZ2FjeS10cnVuaworMTg4NTUgZWFlMjYxMTc5ODZmYTRiOGIyMjI1ODE5YjQ1ZTc1ZjkxMDYwODcxOSBsZWdhY3ktdHJ1bmsKKzE4ODU2IGY5YTE1YTU4M2M3OWQ5YTYxOTA3NWQyM2FmODg2MGU1N2NlZjM5ZDQgbGVnYWN5LXRydW5rCisxODg1NyA4ODMyNWI3M2E2YTNiMTI5NjZhOGUzY2U4NDZmNzA4NGMzYjk0ZjU0IGxlZ2FjeS10cnVuaworMTg4NTggYzUwM2ZhOWIyNjVlMjJiZTJlNTVhZDRhNWNkZDI5ZWU5NzE0MDYxZCBsZWdhY3ktdHJ1bmsKKzE4ODU5IDY5NjVjMjA1YjYwMzY0ZmU4OGZlYjk1MzZhOGVhODQyZGI1ODgwMWMgbGVnYWN5LXRydW5rCisxODg2MCBmMzkwZjQzYWM0YjY0OWE5YWE4MzNmYmVhMmEyYzU5YjdjMGI1MWMzIGxlZ2FjeS10cnVuaworMTg4NjEgMWRjMDJiMjI5NWE5NzQ2OTVlYzRhNmQ0YWMyZDkzZGIyOGQyZDkxNSBsZWdhY3ktdHJ1bmsKKzE4ODYyIDNmNjFlZjcyYWVmMzUwNmUyN2M0ZWRhMjBiMjVlMmFjYzQ0ZmM2NTEgbGVnYWN5LXRydW5rCisxODg2MyBmMzc0MDY3NGFjNWJmMzI5OWVmZjk1NmFlOGZhMjk3MWE2Mjg3MTZhIGxlZ2FjeS10cnVuaworMTg4NjQgZTFlNzZmZTNjYjUzYjE1MjVlY2I1YzdjMDg0YmI3Y2M5YThkMzM1ZCBsZWdhY3ktdHJ1bmsKKzE4ODY1IGU4ZWUwNzg1Yzg0Njg2OGNkZGQ0ODczYzYxNWVkNzAxOTRiNjM1MGYgbGVnYWN5LXRydW5rCisxODg2NiA5MjUxY2Y3MGVkMWY4YjVlZDViM2MwMmJjZTE3MjBkOWZlMGU1ODQyIGxlZ2FjeS10cnVuaworMTg4NjcgY2VkODA0MWViNGVhN2RhOTU1NDZiZDc0MTM5NzM2YzM0YmQ4NWZmMCBsZWdhY3ktdHJ1bmsKKzE4ODY4IDUxODExZDc4YTlkYWE2NGZlNTlhM2ZhNWE0NmI2YzBmMjc3NWU2NmQgbGVnYWN5LXRydW5rCisxODg2OSAzMjM1MmUxMjBjMzc5NDgyYzE4ODEyZDlhZjI2NDU2MTA1MWJiMTk4IGxlZ2FjeS10cnVuaworMTg4NzAgNGM4NTZhMTgwNDU4N2IwNTE3NzA1NDliOGY0ZGVjMDQ2NTdiODk5NSBsZWdhY3ktdHJ1bmsKKzE4ODcxIDJkZjQ1NzRkOTBmZTZkODg4NDBjZTdiOGNiNDA2OGU3MGZkMzVlMzggbGVnYWN5LXRydW5rCisxODg3MiAzM2Y1ZWU2YTBlYmU3NDlmZjQ1ZGYyZWJmODA2OTQ1NjIyNjk2ODc5IGxlZ2FjeS10cnVuaworMTg4NzMgZDkwZWVhYjVmOWE0MThlZGY4MzEzMjgxNDE5Zjc1YWM2M2FmNzkwNiBsZWdhY3ktdHJ1bmsKKzE4ODc0IDhlNGRmYjY4MTY4OWJhMGMzZjZlZTRkOTc5MTMzMWYxYTU1OWZhYTAgbGVnYWN5LXRydW5rCisxODg3NSA5YmM3NTQ0MTNhOGMyZGEzZGJkMzA1YWNiN2ZjNDVhMDdjMjEwNGJjIGxlZ2FjeS10cnVuaworMTg4NzYgNzU0ZWNkMjFmYmVmNjVlMmVlMTU0OTY1NzVjNDJiOWFhYWVjMjFlYyBsZWdhY3ktdHJ1bmsKKzE4ODc3IGM4MzJlZjcyNDk5ZGIzYmQ1NTI4MWRkYjY4MWMzNGFkYzExNDZjYTYgbGVnYWN5LXRydW5rCisxODg3OCA4Y2E2ZDhjYWZjZDM3Njc0ZjBjMmYxOGY2YTFkNjRkNzBjZmQxODliIGxlZ2FjeS10cnVuaworMTg4NzkgNzIzNGQ3YzNjMjlmOTc1Yzk0MDQwMzgyN2FlMjM4Yzg0MDcyYTQ5ZiBsZWdhY3ktdHJ1bmsKKzE4ODgwIDIxZTdhMThkZWJlNjgxYjU0NTNmYmRiMDY2NjU3MWUwZTI0Yzc2ZTYgbGVnYWN5LXRydW5rCisxODg4MSA0NmY3NzJjNmEyMDAzY2U5MjEyZDdiZDY1MzJiM2EyOWQxODkyMmZkIGxlZ2FjeS10cnVuaworMTg4ODIgN2MxM2JjN2M0ODVmYTdlMWE0NmY3ZTMwYzY5N2VjNzE2NTQwMzY4MiBsZWdhY3ktdHJ1bmsKKzE4ODgzIGNmYWMyMjQ1YTJjNzJlMTFmMDA5YTM0MzE3NmVhMzgxYmFjNjk3Y2QgbGVnYWN5LXRydW5rCisxODg4NCBkN2Y1M2YxMmRiZWUxZmY5MWY3ZGY3NmFjY2NmM2ZlOTZmNmE4Y2FmIGxlZ2FjeS10cnVuaworMTg4ODUgY2UwZTQxY2U3ODdmZmY5M2Q1MGU2NTM1ZTBlZjRiYjEwYTkxODc5YyBsZWdhY3ktdHJ1bmsKKzE4ODg2IDBmODEyNzM2NmEzZjdiZTI3MTc0NWU1MDcyNGZkNmViYTlkZDE1ODEgbGVnYWN5LXRydW5rCisxODg4NyA1ZGMxNzczYzdmN2M5N2UwN2U4MjgzZjdkOTUyM2YyYzY2MmVlNmM4IGxlZ2FjeS10cnVuaworMTg4ODggODY1MjY2MDExZGZhOTJhMmIxYTAwYzFlYTk2MzQzNjU0ZTJmMjVhZSBsZWdhY3ktdHJ1bmsKKzE4ODg5IDU5ODhmNzY0ODBkNmQ5ZmE4NzQwYWFmMWQxMGRmNmI5YTY5NDAzNjggbGVnYWN5LXRydW5rCisxODg5MCA4M2QzM2Y3ZTlmZDQ1NzQ3ODhlYjc2YTk3NzhmZjU5YmQxYzhkYTAyIGxlZ2FjeS10cnVuaworMTg4OTEgNTVkODlhOGZlOTYzZmViMTdiMTFjMzVlMzkwMTA5ZGYwM2U5ZWExNyBsZWdhY3ktdHJ1bmsKKzE4ODkyIDhiYTg5MDlmYjgyMzA0ZWNjOTdlOTZjZDdkMmZkMjdiOTE3ODBhOWQgbGVnYWN5LXRydW5rCisxODg5MyAxYmY1ZDhiNGNlYmU4OGVkMDkyZjE0OTc5ZGRlMmEzOTUyNDM2MGEwIGxlZ2FjeS10cnVuaworMTg4OTQgNWJhNDU5MTZhZmM3ZjA3NWIyZThhMzFhYmQwYzUzMmNmYzdkOGQ0NiBsZWdhY3ktdHJ1bmsKKzE4ODk1IDc2MTU1MTEyMTg3ZTBhZGRiMTVmMzVmZjAxYTc5MTI5YjI3NTEwYWQgbGVnYWN5LXRydW5rCisxODg5NiAxOWVlZTJkYjJiMTZjYjU4NDk5NDNjYjJlMTZkM2Q4MWYyNzk2Nzg3IGxlZ2FjeS10cnVuaworMTg4OTcgMTE0NGFmYjk0MDE5Y2RhMDlmYTkyNWI1NGM5OTkyNzJhOTJmN2U2NSBsZWdhY3ktdHJ1bmsKKzE4ODk4IDczYzQxYjQ5YTliODBlZmVkNDhjZDFlMmQ4ODRlOTFjZTYwZTMzOWMgbGVnYWN5LXRydW5rCisxODg5OSBiYTI5NWUyYzczZWE2MDhiZGUxZDhlNTdkMmM5ZDUwZGRhMjhkNWU5IGxlZ2FjeS10cnVuaworMTg5MDAgYjY4NjNiYTg4OTg5NjJkNTljOWQ4NmJjNmU5YWRmMjdlYjlhYzRiMSBsZWdhY3ktdHJ1bmsKKzE4OTAxIDRhNjY1OGUxOGYzNmYxMDBjNjk0YzFlN2RlN2ZhNjg4OTllZWMyMjYgbGVnYWN5LXRydW5rCisxODkwMiA2M2EwYTZkMThhNjA0MjU2ODQ4YjU1OGRiYTVjNTM0Y2EzMGMzNDRhIGxlZ2FjeS10cnVuaworMTg5MDMgMzBlMzFjMmFiNjBmYTU5YmI4MzBiMGRkN2Y0ODc3MjIyYmQ3Nzg2ZiBsZWdhY3ktdHJ1bmsKKzE4OTA0IDc4YmQ5N2Q4NDEzY2NmN2JmN2I0NDNmMTVlNjBkNDMzMzM5ODI1MTIgbGVnYWN5LXRydW5rCisxODkwNSA4YmFjMDY1OTM5M2ViZGZmZGU0NzY2Yjg1Mzc4ZTNhZjQ1M2JmNzE4IGxlZ2FjeS10cnVuaworMTg5MDYgMzVkZmY0NzEyYzhlNjI1YTZkZDE2NDkzNDRmNzA5ZTI2ZWU4NGEyZiBsZWdhY3ktdHJ1bmsKKzE4OTA3IDNhNTZmNjUwOTlhYTc4ZGRjODQyZWIwZDIzZmQ3ZDkzMGM1MGQ5YjIgbGVnYWN5LXRydW5rCisxODkwOCA3OTM3YmNiYmRkMjRhMDhkOGZhNjQ3ZWIyNDYzMzBkZmVlMjIwYjJlIGxlZ2FjeS10cnVuaworMTg5MDkgZTUwY2ZhNTQ3NWYzNDIwN2NlMTkxZjcxYTdkZWExZDA2NWY1MzZjMCBsZWdhY3ktdHJ1bmsKKzE4OTEwIDcwYmIxMTE5MDQ0YWNlZWViMzA3ZDU5ZTViZTEyMTczZTM5Yzk0Y2IgbGVnYWN5LXRydW5rCisxODkxMSBiYjgwNWNjZWI0MDMwMGE4NDAzZTU3MzJiMzczM2FkMmI4NGViMjFkIGxlZ2FjeS10cnVuaworMTg5MTIgZTYyZDVhZmYwYzNhZjFkMjQ0NjUzOGQ4ZTkxOWViNmI1NTY3NDI0MiBsZWdhY3ktdHJ1bmsKKzE4OTEzIDQ3OThkYzczOWMxOWEzOWY2NDExYmM5ZmM3ZTFjZTZiODAwZDJiZjYgbGVnYWN5LXRydW5rCisxODkxNCA3NWEyMWMyMzBhMjY4MTlmMWU3Nzc4YWQ4ZTNmMTI5ODlmN2VjODA4IGxlZ2FjeS10cnVuaworMTg5MTUgYWNhMDVkNzVkMjMyZjEwMGQ5NjgwMmEyYWQxYjJkYTRkOWI3ZjdlYyBsZWdhY3ktdHJ1bmsKKzE4OTE2IDRjYzlhMWViZWE2MjhlZDE4NDZkMjQ3OTk4OTBiMTM4YmRiNmU4MjggbGVnYWN5LXRydW5rCisxODkxNyA2NGZhYjAwNDdhMTQyOTJhNzIwYTk2ZmE3NWU0NGNlYTgzMjE1N2RjIGxlZ2FjeS10cnVuaworMTg5MTggODgzYzdmNjE1Nzg5MDk5YzY0ZTU3YmZjMTUwNTJkNDQ1MDExZjk1NiBsZWdhY3ktdHJ1bmsKKzE4OTE5IGUzMjU5ZTRiZWM2MDYzOTJkNzQwMzQ2MDM2YmRlYTFhMDhkNDkzZGYgbGVnYWN5LXRydW5rCisxODkyMCA0YzQwZTlkNzRjNWFhNWQyMDQ1YjgwOTUyNzI2YTNhYTdhOTRkMjJmIGxlZ2FjeS10cnVuaworMTg5MjEgNTY0YmMyNDJmZjBmMDgzZWIyYjZiYzcwNTA2N2VmMzVhMDc4NDgzZCBsZWdhY3ktdHJ1bmsKKzE4OTIyIDU5NmVkZjgxMjlhMDc4MGQ1Njg2YjQzNDBiZTVjYjg5MWEwZTY2NjkgbGVnYWN5LXRydW5rCisxODkyMyA2YjY0N2E1ZDViN2UzOTFlZTkyYjE3Y2YwM2ViMzExYTliZDRmYjk5IGxlZ2FjeS10cnVuaworMTg5MjQgYWZjNmYxMTM3ZWE0N2M5MjQyNzA2NDdkYjY4MjQyMzg1NjU2YWU5NCBsZWdhY3ktdHJ1bmsKKzE4OTI1IDgxMjg1ZjU0NWQ1NDY5NjhhYTFlMzNjOTIwNzlkMmU1ZGUyMjYyMGMgbGVnYWN5LXRydW5rCisxODkyNiBhOTdhYTkyMzg3NzExM2MxNjU2MWQ1ODY3MjA0YjJjNDE1ZWY1MDZjIGxlZ2FjeS10cnVuaworMTg5MjcgYzI5ZGEyYzE0NDE3ZDhlMDY5ZWUzZTU1Nzc1NmNhZTA3NjBhYThmZCBsZWdhY3ktdHJ1bmsKKzE4OTI4IGQ5YjY5ZDc4MGExNjBiMDUyYzViYWM4YjNhZDNkZTRkMzJlNzliZmUgbGVnYWN5LXRydW5rCisxODkyOSBmZTM2YWI0YjNlOTczMjU0M2FkMjZmY2YxODE5ZmY0MjU1YjA1YTVlIGxlZ2FjeS10cnVuaworMTg5MzAgNGRiNjY0Mzg5NDE1MjAyZGI5YTkxYWUxYmRiZjZkZDcwMDNkOTVhMCBsZWdhY3ktdHJ1bmsKKzE4OTMxIDY4YTgwM2I0ZDYxODJhYjRjNzJhNWUwYTJmZDEwYzU2NTE3NTYyYjEgbGVnYWN5LXRydW5rCisxODkzMiBiNTM0NWU5OTU5NmJlYTk4NDRiNzA1N2UyNTEwZDEzNTU4M2YzYmE4IGxlZ2FjeS10cnVuaworMTg5MzMgYWY3ZDc5MTRmYmY5OWJjYjI0M2NhYzE3ZGYyMWJjMmQ5MjMzOWFjYSBsZWdhY3ktdHJ1bmsKKzE4OTM0IGJhZTg4OWY0NGNkMWZkZGQyMjUxODZkZTkyYmI5ZjExZWE5NGU3NjQgbGVnYWN5LXRydW5rCisxODkzNSA3MTNlZDZjNmJjYjUzNGZkM2YwZTU0MDhhM2ZkODE4Y2MzMjczMzVkIGxlZ2FjeS10cnVuaworMTg5MzYgN2U1NWZhOTNmNGRiYzI4NzkwZTRhYzAzMGQ2NjljNGI0ZmJhMDM3ZiBsZWdhY3ktdHJ1bmsKKzE4OTM3IDUwYmJlODExYjM0NGM5MDY1MjVmYzRhZmQwYzEwOTI2YWE5NTc4ZDggbGVnYWN5LXRydW5rCisxODkzOCBlYWJkMDA4YjM2ZWU3ZmVjYTdlMmJlODY0ODZmZGYzYTllYzE2MTc2IGxlZ2FjeS10cnVuaworMTg5MzkgMmQzZTYwMTc5ZDdhZmVhZDcxNjBlNGNjMDM3MGJlNjVkOThiMzg0YiBsZWdhY3ktdHJ1bmsKKzE4OTQwIDkxYTYzZGY3ZWVlNDE4ZDE4NzE2Yjg1MWQ1Y2M1MTk4YjE0NDY5ZTUgbGVnYWN5LXRydW5rCisxODk0MSBjNDM1NTkwNWIwNDRkZTEwZDUyOThjODk1YjhmYzRlNjRjYjc3MWNiIGxlZ2FjeS10cnVuaworMTg5NDIgOTNmODM2NDMyYzJiZDJhMDI4ZDEyM2E1OWQ1NjhhMzM5OWFkMzVjMCBsZWdhY3ktdHJ1bmsKKzE4OTQzIDFiNmU0NTdkMDNhYjZjYjVlMzI4M2VmMjY0YTgwODc5NTA5ZjM3MjEgbGVnYWN5LXRydW5rCisxODk0NCBlMmIyYjA0M2FiNGVmOTc1NTExN2JhZDUyOTZjYzBhOGY2ZmY1OWFlIGxlZ2FjeS10cnVuaworMTg5NDUgYWJmYjExZjhlMDUxYTAxM2MzODIyYmI5YzQ1ZjRmMzZlNWMyZDJiMiBsZWdhY3ktdHJ1bmsKKzE4OTQ2IDRjMzA3YTEyZGNiOTc2YTQ3MTY2NmE2NTMxNThlNzc4MGZlMmNkNDggbGVnYWN5LXRydW5rCisxODk0NyBkNTZiNDkyNjUzMTBmZWE0ZGE2NTUxMDcyNDBiYzA3OTU3OGNkYzcyIGxlZ2FjeS10cnVuaworMTg5NDggNDgxYzNkNTBhNGU1NTU3YzViNWM3MTVjZWE0OGY2ODU1ZTI3ZTgyMiBsZWdhY3ktdHJ1bmsKKzE4OTQ5IDI2MzAzNWJlYTNhZjIxMGUyNDQ4OTg5Yzc0MjMwNDRiMGYyOTk0OWEgbGVnYWN5LXRydW5rCisxODk1MCBkYmE4MzgwOWE3NzUwNzcxMzAyMzQxN2UyNGExZmU1NmMxMzkzZTI2IGxlZ2FjeS10cnVuaworMTg5NTEgNmUxNDNhZjg0OTI3YTg2YTE1OGI1ZDMxNDUxNDBmMjkwOGRlZmFlMyBsZWdhY3ktdHJ1bmsKKzE4OTUyIDhhYzQwZDQ4YTU4MTRiZjk3MWJhZmUwMTExMDAzMzAzYmY1ZjQzM2QgbGVnYWN5LXRydW5rCisxODk1MyA0NWMwNjU2NjhlYTVjOGY5OWMxMjgxYjc2ZGZhNGVjN2M1NTg4MTQ3IGxlZ2FjeS10cnVuaworMTg5NTQgZjNmNmI3NTk4YmM1YTA1MjM2MjQ2N2Y5MTNjMjNhMTQ2ZmI4Y2I2NyBsZWdhY3ktdHJ1bmsKKzE4OTU1IDBjMWFjYzE1NDU1ZjBiNGIwZTI5M2NlMTBkZWU4MDM5ZTdjYWM4NjcgbGVnYWN5LXRydW5rCisxODk1NiBjYTQ2ZDM0NTQyNjllNjlkN2FhYTVhOTMwZWQ1YTFhNmM1ZjZlYzQyIGxlZ2FjeS10cnVuaworMTg5NTcgYWIwMmYxNzQxYTI4YzdjYzE3MDdjZGUxNjA3YWUwODY5MjI0MGM4NiBsZWdhY3ktdHJ1bmsKKzE4OTU4IGZiNjcxMjJlNWMxZWRiYWU3YjUxMWY3MzZmMDk2MjYyYjNjZDliMGYgbGVnYWN5LXRydW5rCisxODk1OSBlMzUzNmFhN2FlNGFjNGE0YTFhNWUxYTM2Y2M2MGU4MGFkYWVjNmRlIGxlZ2FjeS10cnVuaworMTg5NjAgZmI3NjdhNDQ5NjFlNzE5MjU5NzlhM2EzZmIyODk2OWVmOWYzOTMxYyBsZWdhY3ktdHJ1bmsKKzE4OTYxIDk2N2FiYmVjYzQwNDFhMjJlMTEzMjY0MjNkOTFkYzE2NzhmNGU3YWEgbGVnYWN5LXRydW5rCisxODk2MiBhZTI5NjIyOWY0MjY5NTdlNjhiNWQ0NGM5ODQxOTE0YzBiMDhiY2U2IGxlZ2FjeS10cnVuaworMTg5NjMgM2ZjZDdmNDY1ZjM0OWZjYjhmNjMyNWJmMGFkYTgwZTFmZjA5YzNiZCBsZWdhY3ktdHJ1bmsKKzE4OTY0IDdjYjk0MGMxNTY0NTFlZTNlNTBlMjY1YTZlZTFlMjBhOTA3NWM3YjMgbGVnYWN5LXRydW5rCisxODk2NSBlMDQxOGIxZjVjYjdjYjE3MGQyMjU5ZjdmYTU4MDdlNzNjNDQ3MWQ3IGxlZ2FjeS10cnVuaworMTg5NjYgYmFlOWFiYWRlZTIyYTQ4ODM4MDdkYjZhMWY2ZGNhODIzYjRhMjU0ZCBsZWdhY3ktdHJ1bmsKKzE4OTY3IGQ2OTU3MWJmNzg0MjY3YmRlZDc0NGY4N2U0Yjg2ZWMwMzJmNTJiZWIgbGVnYWN5LXRydW5rCisxODk2OCAyOGM0MTRkY2IzZTE4ZTU0M2YwMDA5MTY0ODJkYTk0NjdiMDE1NWU1IGxlZ2FjeS10cnVuaworMTg5NjkgZGMxYzU3NzE0YjNkZDRmMjQzZjYwY2ZmZDE0NTJhNzBhZjUzYjI0YyBsZWdhY3ktdHJ1bmsKKzE4OTcwIDI4ZDhjY2JlMjM3ZjY4M2QyMTUxOTY4MWEzZDUwMWNkMjkyYWJlODcgbGVnYWN5LXRydW5rCisxODk3MSA0ZDQ1MWM5MmJjNTBiMmQ2NDQ1YTlmNjE4ZWNjMWFkMGJiOTY1YzkxIGxlZ2FjeS10cnVuaworMTg5NzIgMTQwZDQ1YWEwOWRjMDlkNjAxZTc5NGNjNjI5NTAxNTg5ZjBjNWY4YyBsZWdhY3ktdHJ1bmsKKzE4OTczIGUwODI0YjM1NDRmYmVlODFiMjYzNzcxZGNmYmJjZTQwNTllYjIxNGEgbGVnYWN5LXRydW5rCisxODk3NCBhMDU5ZDEzNjA1YTBlMTc5OWEyYzQwOTAyN2FkNzlmODEyYTFhODMxIGxlZ2FjeS10cnVuaworMTg5NzUgNzA2NjZiMjdjMWIxYWNkZDcxMmYzZmFhZTcxYTVkYjA4YzdlYTU1OCBsZWdhY3ktdHJ1bmsKKzE4OTc2IDQ0ZmQxYTdjYjI3OTM5YWYxZGVhNGY0ODQ3YjE4NzBlZjkyZmUzYjAgbGVnYWN5LXRydW5rCisxODk3NyAzZTEzNTI0ZWQ4NmNjMGVjMzRmYTUxOWQ3YzQwNmI5YTY5ZjkzNDM4IGxlZ2FjeS10cnVuaworMTg5NzggNjBmYWM2MmY2YzE1ZWEwNjAwODZjZTRhZWIzNzU4YjMyYTBkY2U1ZiBsZWdhY3ktdHJ1bmsKKzE4OTc5IDhlMDEyYWU5YTA0MjMyN2E3ZDUxZjk5YTgwZWU1ZGEwNTNhMGE2MWQgbGVnYWN5LXRydW5rCisxODk4MCA2NDU0NWM5ODZiOThiMjZmMGQ0MjI4ZTA4MzI2MTZlNmQ2Zjc4OTg2IGxlZ2FjeS10cnVuaworMTg5ODEgOTJiMjE0YmI0Mjg4NDg1ODQxNmQ1ZDkwZGRjY2Y2MzhmNTE0ZWNiNSBsZWdhY3ktdHJ1bmsKKzE4OTgyIGUwNTIzYTQyYzc4Y2FlOTJlYWFlODY3MDE1MzUxMDhiNTVhMDg3Y2QgbGVnYWN5LXRydW5rCisxODk4MyBmNmQ4YTEzOTI5ZDcyNzA1MjQ0NTE2MzJmZjc2OWI2MDY3OWNjNGI5IGxlZ2FjeS10cnVuaworMTg5ODQgMjM5YzczNzJjM2QzN2Y4Y2U0YjY0OTFiNGM5NjU5MTJhNWQyZTY2MyBsZWdhY3ktdHJ1bmsKKzE4OTg1IGY5OTdkZWQ0ZTIxOWYzMGFkYjBiODk0NGJhNmIzMGE1MmY3NGQyYTQgbGVnYWN5LXRydW5rCisxODk4NiA0NTQwZTQxOGI4M2FiNGYxMDg1MTYzYWUxYzAxNjM5Yjg5NGRmZGVjIGxlZ2FjeS10cnVuaworMTg5ODcgNTQ4ZTdhNTQyOTE4NWZmMGFlZGRhZGNmYmYzZDU3NDAyYzNkYWRlMCBsZWdhY3ktdHJ1bmsKKzE4OTg4IGZiZjA3ZTFmM2NhMDcxZDkyNzBlNzEyYjQzMmY3ZDJlMDIxZTc4Y2UgbGVnYWN5LXRydW5rCisxODk4OSA2ZjFmZDg1MDAzOThjYTkxZDlmZDk2ZDVhOTk5ODZiMDMxMzRlOWMxIGxlZ2FjeS10cnVuaworMTg5OTAgZDA4NjQ5MDJjOGM3ZDg5OTRmZWY0ZTk1MTAxZDA0M2EyZDQyMzk5YiBsZWdhY3ktdHJ1bmsKKzE4OTkxIDU2MzY4ZDM1MDhkZTU2MDI0NDQ5MGY4ODU1ODE1NzAzZGUyMjI1OGQgbGVnYWN5LXRydW5rCisxODk5MiBhOWUzYTUyODE1ZTJiYjNlMGViZTdiZjVjYTE4NmE1Njk1MjVmZDg4IGxlZ2FjeS10cnVuaworMTg5OTMgYWEwM2MyMGU4OWI3YWVmOTJkODViM2I2MWZkNmNjZjRkZDFiZWI5ZiBsZWdhY3ktdHJ1bmsKKzE4OTk0IDhmNjU1MmM3MDMwZDA1NGZhMGVhYzhkZGIyNDU2YTk1ZDUxODYyZTEgbGVnYWN5LXRydW5rCisxODk5NSBkNDgwMThiMzNlMzU3ZjQ5ZmRhYmEwMDYxYjljM2IyNzQzNWI0NGVlIGxlZ2FjeS10cnVuaworMTg5OTYgYTA2YjczYWQzNzFlYTc3NjBmNWM0MzNjMzcyZWUzNDk1NDVjMjQwZCBsZWdhY3ktdHJ1bmsKKzE4OTk3IDUxM2U1OWIzYjlhOTBiNDI1MGY2ZmYyOGNmNGYzYWU2Nzk3MjQzM2UgbGVnYWN5LXRydW5rCisxODk5OCBmYTllZjBlMmRjMDdkYWRlM2U3NWEyZTczYTNmMGQwMDAzMDcyZmY4IGxlZ2FjeS10cnVuaworMTg5OTkgODgzY2IwZTMxYmIyYjNmNTNhMmRhODI1OTc1NWYzMjY4MGJkYzFiYiBsZWdhY3ktdHJ1bmsKKzE5MDAwIDQ5YjdjMWJjNjAwNDI5M2JlMjJlNGEwYTBjYjI4Nzk4OTdmZjRiYTMgbGVnYWN5LXRydW5rCisxOTAwMSBkOTZjZTk3MDhjMDA3YzdkZDI4ZjBmZWQ5NWZjNDMyM2Y0MzI2MWM3IGxlZ2FjeS10cnVuaworMTkwMDIgMzhkY2VjMDY2MTdiZGZhMWY1MmI4YWIwMjhhYmFmNzQwNWJkZTE1OSBsZWdhY3ktdHJ1bmsKKzE5MDAzIDA1OGJkMWJmZjAwODBlNTliMDJjNTFhNTBlMDcxZTk3Y2E3NmQ1OGUgbGVnYWN5LXRydW5rCisxOTAwNCA0OWY5NGEyYjFkZDQwY2Y5MTQ4ODQwMzkxZGRkYWFjMTEwY2U0MDc0IGxlZ2FjeS10cnVuaworMTkwMDUgNmFhOTcyZGY4MGQ1NzYyY2YyNDdhMDAyM2RmYzM4M2U2MWM1ZjIwMyBsZWdhY3ktdHJ1bmsKKzE5MDA2IGQxMmJkZTRiMmFlOTJjZDFlZmRkOWM3MTMzOGMwZGYxOGY4Y2I5ZWYgbGVnYWN5LXRydW5rCisxOTAwNyAyNmU4MzFiYjBkNmVjNjg4YzUwYTlkNDRkMjQxN2EwYWI1Njk0NmE2IGxlZ2FjeS10cnVuaworMTkwMDggY2Q5ZGRkZDg5N2E5NTUzZTJmODZiMjJlOTA1ZDM3YjMyYjNlYzliNyBsZWdhY3ktdHJ1bmsKKzE5MDA5IGZiZjhhYmVjOTNkMTlmYzAzNDdhZTdjZGEwM2UyZDFhMjFhMDI1Y2UgbGVnYWN5LXRydW5rCisxOTAwOSBiNjA4MzFlZWFiNWEwNmRkM2M1ZTgyOTdhOTllMzkyOTdhYTg3OTRiIGxlZ2FjeS10cnVuaworMTkwMTEgN2Q3NjVjMWQ0OWUyZjMxNTdhNmYxODljYzU3ODRkMzY1NTk4NWQ5MCBsZWdhY3ktdHJ1bmsKKzE5MDEyIGNhMDU1NjA2YjNhMTFjMTc1YjM0ZjllNmY4MzM4OGY2ODE4ODM5OTAgbGVnYWN5LXRydW5rCisxOTAxMyA0OTUxZjVjNDgxMDViYmRkZjcyODM0ZWVlMGM3YmVjNzNhYWEyZTZkIGxlZ2FjeS10cnVuaworMTkwMTQgODVlMzVlNjhlM2RiMDU3ODk2ZTQ2ZGQwYjJlZTViZmUyODhlNWVhYSBsZWdhY3ktdHJ1bmsKKzE5MDE1IGRmN2JmYjM0YjJhMmU4ZGQ2ODhmMTMxYzExMGMwYjU4NjNjNDBlM2QgbGVnYWN5LXRydW5rCisxOTAxNiAzZWU1NTg2MzQxNjRkYWY0OTlmNzc2NTcwMzVhZDg0ZDRlNjFmZjgyIGxlZ2FjeS10cnVuaworMTkwMTcgYjJjODc5NWEzNDQ4OWViMjJmNjY4Y2RhNmVmNjgzNzdmOTNjYTQzYiBsZWdhY3ktdHJ1bmsKKzE5MDE4IDgzYzFmMTQ2ODJhMjU2MWFkN2M0ZjVlNzJiN2RmYjZjNmQ1NTdiMGYgbGVnYWN5LXRydW5rCisxOTAxOSA2MmJmNzM5OThjZGIyMWI0OTRjMzZlMTI4OWVkZDYwZmQ5NDg1NDFjIGxlZ2FjeS10cnVuaworMTkwMjAgNjM5NmNjNmIxZjdhMTI3ZWQyMTdhOTEzM2JmODQ0YmE5NWVjZDJkMyBsZWdhY3ktdHJ1bmsKKzE5MDIxIDY4MGQ2YTUwYzJlODQ0ZjExODhhOGNmYWM2MWNlZDE3YmM1ZmY4ZGEgbGVnYWN5LXRydW5rCisxOTAyMiA0NjkyMGI2MGNkMzM0M2YyNjMzNTU0OTQ0YTc3ODhkNDBmYjEzYzVjIGxlZ2FjeS10cnVuaworMTkwMjMgYzBkZTcxMGYzMWMwM2Y4MDE5NDU1ZTFkY2EzNDMyODM4ZGM3OTEwYyBsZWdhY3ktdHJ1bmsKKzE5MDI0IGZkMjc4MDMxZjQ0OWNiODUxNzQ0ZmRiYzQ0NzU2NTA3NTJkMDJlNmMgbGVnYWN5LXRydW5rCisxOTAyNSA1ZjQwZmRiZGQwMmM0MThkMWFlM2UxYzJiZDhhZTI0ZDBhYTBkN2UyIGxlZ2FjeS10cnVuaworMTkwMjYgMjIwOGEwM2QwNWEzYWRkMWYzMmM1OTYwYTEwMzJkNzA2MzA4OTFiNiBsZWdhY3ktdHJ1bmsKKzE5MDI3IDBhNzIwNzBlYWI2ZWJhNjMwYzQ4OGRjNzQ2ZjM4NTljMzE0MGIyODIgbGVnYWN5LXRydW5rCisxOTAyOCAxMDY0NmQwOTJhNTJmYjJkMzYzM2ZmZTJkZDBiMTgyZjViNDY3OWMzIGxlZ2FjeS10cnVuaworMTkwMjkgNzFjZWFiYTNmNjE1MWI0NGY5ZTdjYjgwOGIwNDY2N2NmMmQzNjIxMyBsZWdhY3ktdHJ1bmsKKzE5MDMwIGEwZTUyMDM4Y2M0ZTFjODEzYzY0ZTg0Mjc0N2MzMGM2YjFiNjFjZTYgbGVnYWN5LXRydW5rCisxOTAzMSA3OGNkZGJhNDU4MDUzMmZhYTc3YmI1NTZhMzUzMjVjN2Y0NWRmOWVhIGxlZ2FjeS10cnVuaworMTkwMzIgMmM3ZGY0NTQ5NmE2Mjc2ZTQ2MzliZDI0MjE3MjAzYTIyYzIxNGYyNSBsZWdhY3ktdHJ1bmsKKzE5MDMzIDdhZTZhMDlkNGQwMmRlZGQ1ZWM5ZjYxNTg5MzBkNmI1M2NhMDc4ODAgbGVnYWN5LXRydW5rCisxOTAzNCA3MjViMWJhZjNkYWI5MWMyYjQzMWU1M2I5ZDU5N2RlMDNkZTkxMjFlIGxlZ2FjeS10cnVuaworMTkwMzUgZjc1Yjg2NDg5OWZiMTUzMTVkODEwOGU4NGY4NjM2N2FiZDY1OWQ1MCBsZWdhY3ktdHJ1bmsKKzE5MDM2IDMwYzRjNGU5ZTNkNTY3N2Y0NDgwMjlkNjUxYjkyNGZiOWNlMDlhYjEgbGVnYWN5LXRydW5rCisxOTAzNyA0Mzg0MjhkMWJmMjcwZTY5NzBmMmI0YWU1NjFlNDhlNjlkYjRjNTZkIGxlZ2FjeS10cnVuaworMTkwMzggMmRjYmMxZGZjYTljNTRkZTYzMDcxODY0NmQ3Y2UzNzY4ZTlhNmI1ZCBsZWdhY3ktdHJ1bmsKKzE5MDM5IDI3NzQ5ODE4MzAzMDc0OGEwZDYxOTUyZmRmOTQ2ZjE1NTQ3ZjVjOTYgbGVnYWN5LXRydW5rCisxOTA0MCBkMGU4ZTE5NTljMGJlNDJmMTIwYjlkMzg4NDEwMzNkOWRiZmQzZjY0IGxlZ2FjeS10cnVuaworMTkwNDEgM2EwZWI0NWIyYjVlMDI2ZGZkMzUxNzUzNjQ0NTM0NTU5NjM2NGE2NyBsZWdhY3ktdHJ1bmsKKzE5MDQyIDZmOTI5MjBjMTE1MDA5ZGY0NWEwMjM4ODJmNjMxYjdmNDAyMTgxOTcgbGVnYWN5LXRydW5rCisxOTA0MyBhNTRjMjgyYmZiNjNkYTJiN2E3OGU1ZTZjOWZiNGYxZmFjNTMyNDA0IGxlZ2FjeS10cnVuaworMTkwNDQgYjg4MmY0Yzg1NjY2OGFmMzMyNzQ4NzQyNThlNGZjNDk0Mjc4MzRhMyBsZWdhY3ktdHJ1bmsKKzE5MDQ1IGExMzBkNWY3ZTU4YWViMjE5NjRkY2U2NGE0N2Q5YzRkZWEyZmIxYzAgbGVnYWN5LXRydW5rCisxOTA0NiBlMjZmOGQ2Y2YyODhlZjM2ZTJiYjQ3NGVlY2EyZmZmZWYzNjViZDMzIGxlZ2FjeS10cnVuaworMTkwNDcgMTE1ZmRjNjFhZTkxNGI4MmE5YzhmYjEzNDM4ZDA4MTJmMjdkMTYyNCBsZWdhY3ktdHJ1bmsKKzE5MDQ4IDAxZThhNmQ4ZGE4YmI2NWVmZWY1MTUxNTk5MTExMTdlZDVkMDkyYzkgbGVnYWN5LXRydW5rCisxOTA0OSBkNzIxOGFjOTljMDlhYjJjZWU2ZGE3NGViMDE3YmJlYTJkZmNiZjVhIGxlZ2FjeS10cnVuaworMTkwNTAgNDk5ZTIyOWU2Y2VkYTg5MmVmNTcyMDM1ZWE1OWNkNjZhNGRhMWZiYyBsZWdhY3ktdHJ1bmsKKzE5MDUxIDk5MWExN2Q2MTAzNjI3NjljYTQyNWJjYjQ3ZmViYjY1ZTRmMjkwYTAgbGVnYWN5LXRydW5rCisxOTA1MiBjMTJkODYyM2IyOTQ5MGUxMjBiOTAwZGNhZTUzNDk0OTE1NjhlZDc4IGxlZ2FjeS10cnVuaworMTkwNTMgYzAyYWU3YWUwMTFkNjI4MmFiMjE5M2NhMzhkZTdkZjkzYTlhOWZlMiBsZWdhY3ktdHJ1bmsKKzE5MDU0IDRmZTY5YTlmOGIzMDc2YjllZjE3MWY5NGYxOWYyMzA1YjUzNTBiYjYgbGVnYWN5LXRydW5rCisxOTA1NSAxZmY0Zjg5MDFkOTYwNjA5NTVkMjdiNjllMWY1N2QxNzc4ZTIyMzcwIGxlZ2FjeS10cnVuaworMTkwNTYgZjRhYzA2MGE4NDFiMzk5YzA3MTZkNzZlN2Y0N2Q4ZDkwNjYzYTYzMiBsZWdhY3ktdHJ1bmsKKzE5MDU3IDFhYTgzNDlmNjY5NTU4MDZiMDA1ZDA0N2JhZWVjMDY0NTA4OTI3MGEgbGVnYWN5LXRydW5rCisxOTA1OCA1NzEyNjIwMjk4ODgyYWMwNjk3MWYwOWRjY2Y5YmQxOTBiNTkwZDY1IGxlZ2FjeS10cnVuaworMTkwNTkgMWJiNzY1MTY4M2U3NDEyODRhMTQyYzU3M2Y1ODFjODg1ZWNmYjk3ZiBsZWdhY3ktdHJ1bmsKKzE5MDYwIDMyNzU1YjQ1NjM2OWQ4MjI2OWI0NzNhMWExZjQyODgwZTVkZmI1ZTggbGVnYWN5LXRydW5rCisxOTA2MSAwMWU1ZDNlNTg4MzNhZDllOTkwZGY4N2U0MzJmNmY3YjIwZjY5NjQwIGxlZ2FjeS10cnVuaworMTkwNjIgMzQ4NDY3MGMzN2YyZThkYmYyMDYwMTFjM2Q5OWVmZTRjYmIwY2E5OCBsZWdhY3ktdHJ1bmsKKzE5MDYzIDM4Njc4Y2IwYjNjZGI4ZGQ2MjIwN2VlZTJkYzMzMzgzMGUxM2EzYjggbGVnYWN5LXRydW5rCisxOTA2NCAzOTdhZTUzZjFhNDg5OTA2ZTU2MTUxOTc5ZmUzNjRkNjAwNjNkYzU2IGxlZ2FjeS10cnVuaworMTkwNjUgNzQzZDUyMDc1YmU1ZWZjYmYwNzgxOTJhNmVjOGQyODUzMDMxYTlkMCBsZWdhY3ktdHJ1bmsKKzE5MDY2IDIzYWI1OTkyMTIyZTgxNDA4ZmZlMjM0NTJkNzVhN2Q3NTlkZTFiYjUgbGVnYWN5LXRydW5rCisxOTA2NyBhM2Y1N2VkNzU3ZTUwYTliNTQ5NjQwMmU0ZGQ3MTE3ODZiMjM1N2IwIGxlZ2FjeS10cnVuaworMTkwNjggYTY0NTNjZmI3MzNmMWQ3YWY4MzVmZmZkMmE2ZWEyM2FmNjY3ZjVkYiBsZWdhY3ktdHJ1bmsKKzE5MDY5IDc0M2YxNjMzNjgyNzNiM2I1ZDVmNDAyOTdlNDcxOTQxM2Y0N2Q4MjcgbGVnYWN5LXRydW5rCisxOTA3MCA4ZDRhMjVjODFhOWI5NDMwZmIwMmRhOTBkMGQ1ODgzYjVlZGRjZGE4IGxlZ2FjeS10cnVuaworMTkwNzEgNTVlOGMwMjZlMWUzZmYyMmM1ZTYyNGJlMjUwYWQ5ZjMyN2UzZDM4MyBsZWdhY3ktdHJ1bmsKKzE5MDcyIDFlNDNhMjQ1NmU4ZmU0Y2NlNTFkNTJhNDJiMmZkNDFjN2ZiYWUzMjYgbGVnYWN5LXRydW5rCisxOTA3MyA5OGI2NTQ4NGFkZTZhODRjZTgxMWRhYmI4YjBkMzEzZjVmMWM4NTU3IGxlZ2FjeS10cnVuaworMTkwNzQgMWRmNDBkNzcyNGNjZGU0MDY1N2MzOGM3NDUxOGE5MzY2NDU1MTVlNSBsZWdhY3ktdHJ1bmsKKzE5MDc1IGMwZjYxZDRmNWEwNDg4MTIzNDY5ZmIzY2MzMGM1NTk2ZjdhNzUzODAgbGVnYWN5LXRydW5rCisxOTA3NiA2MzVlOWRjZmVkMmNjNjU4NDg5NWNjYzQyMTcwNGI2ZGMzMzQzNmQ1IGxlZ2FjeS10cnVuaworMTkwNzcgNzI4NjBlZTllYWYwODkwZmQwZTJiNmJhNTkzMDM1MjMxYzBjOWU2ZCBsZWdhY3ktdHJ1bmsKKzE5MDc4IDVhZWExNTgxNTQzYjQ0ODI4NTBhNWIyMWFhMzg1ZDYzODc2ZTA2MTYgbGVnYWN5LXRydW5rCisxOTA3OSAzOTc0OTFhYTIwYTZlYmNhN2M5Mjg5MWI1ZTVkZDcwZjM3ZDg1ODJjIGxlZ2FjeS10cnVuaworMTkwODAgYTRlNTRiZmQzYzI5ZDY1NjkxMWVhYWI4YmNiZGYwOTkyOTA0MGU0ZSBsZWdhY3ktdHJ1bmsKKzE5MDgxIDI1OWY3OWEzNmUyZjM2ZDBiMmRlMWI0YmRhODI1MDY2ZDRmZWIxYmMgbGVnYWN5LXRydW5rCisxOTA4MiAxODVkZmMxNGE5MzQyZmI3NjViZDE1MWI0YWRjNWU5ZThlNjE4ZTEyIGxlZ2FjeS10cnVuaworMTkwODMgNTg4NjkxZjgwNmY0ZDA4MWEzNDQxNjcwMjEzOGMxZmQ4YmYzMGVlMCBsZWdhY3ktdHJ1bmsKKzE5MDg0IGEwZTQ2YzNiZTYzZWYyZGY0ZjQxZDQ1OTcxNzg2MDZhZTQ4YzVlYjYgbGVnYWN5LXRydW5rCisxOTA4NSA1NDUzNDE0ODg3M2U2ZjljMTc5MmNlNmVmZGQyZGMyY2E1NjZhYTgzIGxlZ2FjeS10cnVuaworMTkwODYgZDMyOTJlZTViNmUyNGExNWM1NDVlMGIxYjkxMTJiZTliODJlNzM0OSBsZWdhY3ktdHJ1bmsKKzE5MDg3IGU1NmRkMmRkOTk2MDcyYTc5NDk2ODllNDg3YTM0ZmIxNTA1MTNhYjAgbGVnYWN5LXRydW5rCisxOTA4OCBjN2M0MDRiMzVmMzNhMGQ1NGM4MmY2NzU4OTlmMTkwYzEzZTUwZmQ3IGxlZ2FjeS10cnVuaworMTkwODkgOGM0ZGI4YjlhZjliOTBlNTM2YmZiNTAwZTQ3MGU2MjA2MmUxZjhmMCBsZWdhY3ktdHJ1bmsKKzE5MDkwIGFiYjk0NTA2NjQzNjc1MDgwNDRmOTRmZGViMDJlNGM0MTBhZjMxYmQgbGVnYWN5LXRydW5rCisxOTA5MSBlMzAyNTg2NDUyYTMwODM4MGNiYTQ5ZTYwNjAyZDg4ZTEwN2U3NjY5IGxlZ2FjeS10cnVuaworMTkwOTIgMzlhMTRiYzhhMGY3OTBiODQ4YmVkZmQzYzZkNDg3Yjk5YWNlYTZjZCBsZWdhY3ktdHJ1bmsKKzE5MDkzIDNhMjBkYTI4OTNjNDdmNThiZDZkYTlhYTI2NWRlN2Q0ODc2MmE5YTIgbGVnYWN5LXRydW5rCisxOTA5NCBkZjJlZDU2NjRiZTUxNTIyZTEyZmRmNzg1MzZkN2RhZGMzN2IwM2U2IGxlZ2FjeS10cnVuaworMTkwOTUgOWJmNDM4YzhmNWM3OTM4YTVmNWY1NTE3Y2QzMjk2MDYwYjUwMWEyYiBsZWdhY3ktdHJ1bmsKKzE5MDk2IDQxZWQ0ZDg2ZGI3NzcyNTBjNjJjNDFiYTZlM2QwODcxMmNlZWM1Y2UgbGVnYWN5LXRydW5rCisxOTA5NyA1YzYwMTg0ZjdmNTJhYjFkNTIyMzNlYzllMzk4MzQ5MjBhZmM5NzU3IGxlZ2FjeS10cnVuaworMTkwOTggZTVkNTlhOWRiZmMwMjhjZGVmMGVkMjY3YTIzOWFjMmMwMzUyN2I0ZiBsZWdhY3ktdHJ1bmsKKzE5MDk5IDNmZTc1OTI0ZWFjMTBkY2FhOTczOWE2MzIzNGVlMmI3M2IxOTUzZTMgbGVnYWN5LXRydW5rCisxOTEwMCBiNGQ0ZjIwMjExMTQ0YTljOGUyODAzMWY0OGRmYTJlYTUwYzdkMTEzIGxlZ2FjeS10cnVuaworMTkxMDEgMmZmODI2MzE4ZTg5ZWRmYmQwZDc2ZWE3Y2E1ODI1NGRhMTRjNDM2MSBsZWdhY3ktdHJ1bmsKKzE5MTAyIDdmNjE4YmMxMzk4MTEwOTIyYzU1NTZkNmNiZGUzYjUzZDA5ZDJmYmMgbGVnYWN5LXRydW5rCisxOTEwMyAwNWJlNWY4NWYzYmY2MDhkNmI5ZDkyODU3MWI1YTNkZmQ4ZTlmMTVkIGxlZ2FjeS10cnVuaworMTkxMDQgM2M1ZjA5NDIyYjY5YTlmZDg3MjMwYmU3NGVlOWM1ZjcwMjFjNGJkMyBsZWdhY3ktdHJ1bmsKKzE5MTA1IDlmZDk2ZTI0NTViNjJjNzc1N2YxZTBlMTdkZGU1ZDQ1OTYwYzBmYjUgbGVnYWN5LXRydW5rCisxOTEwNiBmYTIwOWNjODRjYWNlM2VjOGQzYzk4ODM3OWI3ZjE2ODVlNDE3Njg1IGxlZ2FjeS10cnVuaworMTkxMDcgMDk3MzZhZWFiODMxMWZmMjM3ZGJhNWVjMDI0NWE2M2EyMmE3MGE5ZCBsZWdhY3ktdHJ1bmsKKzE5MTA4IGM0MWRkMjIwNGI5YzhlMGIzMDNkMTIyMTgwYzE3Y2Q1ZGEwNTI4ZDggbGVnYWN5LXRydW5rCisxOTEwOSBhNjhjNzAzMmNkZjI5OWYyYjNlZjgxMzhkY2E3ZmE0NTUyM2QyOWY0IGxlZ2FjeS10cnVuaworMTkxMTAgMTQwYzUyODU4ZjY1ZTQwODhhYjE1ZmY1Nzk2YWVkZDk3YTMwM2ZiZSBsZWdhY3ktdHJ1bmsKKzE5MTExIGZhMjcxZDdiMmE2MmJjYWZkZjkzNmY0YzE2Yzk2OWQ4NTIzYjkyNTYgbGVnYWN5LXRydW5rCisxOTExMiBhYWI4NzE2MzVmZmFlNDliODkwOWVmNjYwZWRiMjY0ZjYwMzBhZWQ4IGxlZ2FjeS10cnVuaworMTkxMTMgYmQ4ZDI5OGFmODgwYzJhMWUwMmMxOGVkNzk5ZjIzNDg2YTUwMmUxZiBsZWdhY3ktdHJ1bmsKKzE5MTE0IDNmODllNzI0MDA4NjA1NjgzOTQxM2UzOWYwNGE3YzhiYjVjYzIyMzMgbGVnYWN5LXRydW5rCisxOTExNSA0YjUxZDA2OWJlMzUwZWQ5YTU0MDRmMDI0NzYzOTY5YWNiZjAwMmE2IGxlZ2FjeS10cnVuaworMTkxMTYgYzFjZjVkMmMyNmNhZTcwZTMwYzhjMzVlMjg0NmIxZTFiMDAxMThlNCBsZWdhY3ktdHJ1bmsKKzE5MTE3IGY4MDQ1M2U0NDViNWE0NDE1OGVkOTY4NjJhZDAyYzVhYmViMTBkYWIgbGVnYWN5LXRydW5rCisxOTExOCAwNzA3MTg3MmRlM2UxMTRiMDEyNmMzZTI3YWI3ZTZmN2U5NTA2MjAwIGxlZ2FjeS10cnVuaworMTkxMTkgZmQ4YzcyMDMyNTFmZjM3ZGJiMzk3ZjdkNDIzYWU0MWYxNmEwM2M2OCBsZWdhY3ktdHJ1bmsKKzE5MTIwIGY0OTRjYTBhMmIzNDZmZjY4ZmFhY2NjNjUwOGJlYTI4MDJkYTlhMDggbGVnYWN5LXRydW5rCisxOTEyMSA5Mzg2YjMyYmZmMWRhYjQyNGQwYjU1NGY2OTg2MTliY2I1NDNhOGZhIGxlZ2FjeS10cnVuaworMTkxMjIgMjBlZjg0OWVjODc3YzcyZTU0YjZhNDRiZjU4ZDQ1YWUzYWQ0MzUxYSBsZWdhY3ktdHJ1bmsKKzE5MTIzIGJkZmM2ZjFmYTQ3NWNlNjczMTNkOTNkYzFlMzNhZTJiY2ViYWY1M2QgbGVnYWN5LXRydW5rCisxOTEyNCBhNzA0ZWE1ZWNlYjZiM2QxYWZjMWZhZGNkYzg4NTQ0MWNlZGY3ODRhIGxlZ2FjeS10cnVuaworMTkxMjUgNzYzYTNkNDJiYWVkZjE2N2QyOTI1OTA3NDhhZjNhMDY3MTJkMzJmNiBsZWdhY3ktdHJ1bmsKKzE5MTI2IGUxODg4OWUzOTQ5YzA2OWYxYzM0MWUwZTc3YzJiNjQ2NTNiMWZjYzUgbGVnYWN5LXRydW5rCisxOTEyNyBkNjE0YjZlOWZiNGVkOTRlMWYwMGI3MTA5MGU5NDFjMTM5YzdhY2UyIGxlZ2FjeS10cnVuaworMTkxMjggOTlmMzQ2NzM4NDE1YTA2YjMyZmI3YTRiYjExODkwMTc5Y2QxODkyYiBsZWdhY3ktdHJ1bmsKKzE5MTI5IDYwZWUzMzhmMGQ2NjZmZGVmZTAwMzYwMjE1MzE5NjZmY2M2MWY5MGYgbGVnYWN5LXRydW5rCisxOTEzMCBjMmNlOWIyZTViYjQyM2FhZWVkYjBmMWQ5NTQ5ODhhMTllMTk3YTBiIGxlZ2FjeS10cnVuaworMTkxMzEgNzc5NTgyNjZjN2Q3YWFiZmVjNTM5ZmJiNzFlNDU0MmY2ZDZlMGRlZSBsZWdhY3ktdHJ1bmsKKzE5MTMyIDkwMjU1ZDQ0MWNkNWY2MjFkMDg1YTQ4ZTNiZTE2NzI0ZmVlMzIyOWIgbGVnYWN5LXRydW5rCisxOTEzMyA3ZWYyMzgyZjYxMjNhMDY1ZjkwNzYyMTBkYTdjMTI0NTkzZjllY2YxIGxlZ2FjeS10cnVuaworMTkxMzQgODM1ZTlkZDU0YmZiOGFjNjNmZWFlMzkzZDhlMWY0Y2JmZTFlODg0OSBsZWdhY3ktdHJ1bmsKKzE5MTM1IGM4NWNhOGM2MjEyOWNjODExNGM1M2E3MDQxZjNhY2IxYmE2ZTQ5NzcgbGVnYWN5LXRydW5rCisxOTEzNiAyYWViM2EzNGM3YWNkYjMzZmZhNWY5ODdlNDVmN2IyYmM2YTZhYzM5IGxlZ2FjeS10cnVuaworMTkxMzcgOWNlNTE0OTgyNWY2YWVhYmQwZDdjYjQ2OTBmNjAyZmQ1YjBhODRiZiBsZWdhY3ktdHJ1bmsKKzE5MTM4IGNhODU1NDdmY2I1ZTQyNGY1M2JmNmM0ZDQ0NmVjMGM3OTU5NjYxNzYgbGVnYWN5LXRydW5rCisxOTEzOSAxNmUyMTc3MmNhM2YxNDYyMDJkYWQ3NTk5YWVkMTljNDI1NDliYjAwIGxlZ2FjeS10cnVuaworMTkxNDAgYjQ2Zjk1NmFiY2Y4NTJmNTYwYWU5OTM0MGU0MmZlMWIxZThhYjM3MCBsZWdhY3ktdHJ1bmsKKzE5MTQxIDc4NWNlNjE5Njc5NjE0MjgzNDMwZGY0OTMwZGZmMDYyNGNmZTM3MDQgbGVnYWN5LXRydW5rCisxOTE0MiA4YjgxYTdlNThhMWQxOWM4YmY2Zjk1YWJmNDU4NzgyNzU1ZjdmMzZlIGxlZ2FjeS10cnVuaworMTkxNDMgMmFiY2JlNDQyNzFhYmIwNzYzNDUzNzI4NTljYzUxOGJjMzVmMjMxZSBsZWdhY3ktdHJ1bmsKKzE5MTQ0IGVhNGEyZjNiMjY2ZTAxODY1ZmQ2NGEzMjU4MjY2NGI4Y2ZiNzhiNDkgbGVnYWN5LXRydW5rCisxOTE0NSA2NWM2YTI5OThiMWJkZWQwYzk5NjUzZDYyMjA3MzIyNWZlNzk0MzJkIGxlZ2FjeS10cnVuaworMTkxNDYgYTA1NThlYmY2NjEyNzUzZTAzODhiNmQ3YWUzYzBjMDQ2NTVkYTQ1OCBsZWdhY3ktdHJ1bmsKKzE5MTQ3IDE1ZTBjMTAwOTJiYjRkYjBhZDY3MzI3MmZhMjk3MzEyOGExYzk4NjIgbGVnYWN5LXRydW5rCisxOTE0OCAyMGUzYzBkNWU0NmZkMzQzZTE4ZjExYzYwYzNhZTVmZmRhYTZhMTQ5IGxlZ2FjeS10cnVuaworMTkxNDkgNGI3Mjg4OGM5ZTJmN2VkZDMzNjY5M2Y4NWYyZjY2YTMyY2UzOWNiYiBsZWdhY3ktdHJ1bmsKKzE5MTUwIGMwYTI0NDFhNDQ1NGJkZjMwZGExZDI3ODRkYmMyYTRiMWFlOTNlOGEgbGVnYWN5LXRydW5rCisxOTE1MSA5M2JhMzNkYzMzM2FmMjJjN2FhZGVkYzdiMGIxMWNiMTA2YjgxNWY3IGxlZ2FjeS10cnVuaworMTkxNTIgN2EyNTE0NDBjZTY3ZDY4OTRhYmYyZmJkZThiMzI2YjYyZjYwMmNhMSBsZWdhY3ktdHJ1bmsKKzE5MTUzIDA5NDAzYzVjZGFmYmMwOGE2MGIyNjg1NmYxZDQyODBkZjNiNjZhY2MgbGVnYWN5LXRydW5rCisxOTE1NCAwNTAxYzJhMTAzMTVmYzRmMGQ0YzE0ODUzZWMxMDY0MjYzN2NmMmY2IGxlZ2FjeS10cnVuaworMTkxNTUgMjdhNGExN2FlYzI1MTRjZDg4NjQ2Nzk5NzI5ZTk1NmQxODVmNTNmNyBsZWdhY3ktdHJ1bmsKKzE5MTU2IDI4YzZlYzU4MWFhNjk2ODIyYjk5ZTNjZjI5MmJhYTMxMjUzZDZiNzUgbGVnYWN5LXRydW5rCisxOTE1NyA3YjM0NzZjMTM4MmViY2JmY2E1ZGQ3NzcxNGNkZTA5NWNhZjU2NzIyIGxlZ2FjeS10cnVuaworMTkxNTggYWI5OWJkMzk0NzBjZTM5MWJhYzJmOGNjYzYwNzk5OTk3MTNhMTBkNSBsZWdhY3ktdHJ1bmsKKzE5MTU5IGQwZDhjOWQ1MmYxODQ5OWQwYWFkZWNlYjAxMWE0MDI4MWE0NjZjZGEgbGVnYWN5LXRydW5rCisxOTE2MCAyZGIyOTkzOTU4MGRiYTc4ZDUwNmEzMjFhMDYyYzJhNTI0MDkyZGY0IGxlZ2FjeS10cnVuaworMTkxNjEgZTFlMGU5OTZiMDAzNWRhMjJkOWRiNTZlODRiZjA2MmUwYThlMTdlYSBsZWdhY3ktdHJ1bmsKKzE5MTYyIDI2YzFmZmZkZmZmMmYwOGU3NGM5ZjRjYWJjMDNmMzY0YjcxYzM2YTAgbGVnYWN5LXRydW5rCisxOTE2MyBiZGZiODFkM2M2MTBlYWQ4ZjM5ZGM2YTUzOTY3M2VjNjFhM2I3ODUyIGxlZ2FjeS10cnVuaworMTkxNjQgM2ExZTY1OGU0NDc0NmMwMjE2YzcwYWY2ZmQ1NTI5YTllODc5MjE0OSBsZWdhY3ktdHJ1bmsKKzE5MTY1IGU3ZjQxM2Q0ZWUxNWFiODZkNDY0YTE1YmUzZmM3ZGFkMWQ0MmQ5MDAgbGVnYWN5LXRydW5rCisxOTE2NiBmYzNmNTA1OTQ1ZDRjZDA4MmQ2NTA2Y2FlMzE4NzMyMDYzMTc0YWJlIGxlZ2FjeS10cnVuaworMTkxNjcgZmIwZjU2YmIxNDA1OTk3M2U1NjQ1OTZkODY4OWNkYTg3ZDYyYzMxZCBsZWdhY3ktdHJ1bmsKKzE5MTY4IDhlODczZmE1NDUwZWJmNTZiZTQwNmYxOTZhNThkNGVhODg2NWRhOTcgbGVnYWN5LXRydW5rCisxOTE2OSBmODRmOGQ4MWUzMmNlNzA3MTEyYjM4NjUwOWQ5OTk3M2I0MjYzMTcxIGxlZ2FjeS10cnVuaworMTkxNzAgOGU2NmVhNjAyNjE2ZGE4ZmVlOTE4YWE3MTE5MGQ0ODdjNGE3ODU2OSBsZWdhY3ktdHJ1bmsKKzE5MTcxIDk2NjNkNWViYjY0NmMxMjJjOGMxYjUzOTc3NTQ0NzA3Mzk1ZjU4MjYgbGVnYWN5LXRydW5rCisxOTE3MiA1NGIwYWVmNjUwYzUyOWQwNzZlODc4MDkxZjc3MDY5YTBkNjRlODRiIGxlZ2FjeS10cnVuaworMTkxNzMgOGM0MWYzODYxYWFkZGNjYWYyZDBmMmJhYjE1ZjhlN2Y0OWQ4NzE5MiBsZWdhY3ktdHJ1bmsKKzE5MTc0IGI4MDE4MTQ1ZTJhNWU3OTUyNmI1NjllNzJhMGY3ZDc1NzNlNTcxYjYgbGVnYWN5LXRydW5rCisxOTE3NSA2NjJhZGYwM2U0ZmEyZjY2ZGE2Zjg4MGE4MWMwNzEwMjVjNThhMmVmIGxlZ2FjeS10cnVuaworMTkxNzYgMjRlNDU3YmExZjkyNmM1YjRjNzRjOGMyMjE2NmY4YjA0MzYwNjVlMCBsZWdhY3ktdHJ1bmsKKzE5MTc3IDI4YzYwZWY0OGZhM2ExY2JhMWUxOTM4Mzk4ZmZiZDQyZTJlOGEyMDAgbGVnYWN5LXRydW5rCisxOTE3OCA3OWU3MmNlMjJhNDMwZjAxYTA0YmJmZGE1N2ZkZDIyZjliNWZjMGVmIGxlZ2FjeS10cnVuaworMTkxNzkgODYxYmY4ZGNmYjU4Yjg2NjdkODVlOTZhMjA3MzI4MjM5MDFmZmU4MiBsZWdhY3ktdHJ1bmsKKzE5MTgwIDE3Y2FjNzBjYWU3NjYyMTcwYTJhOTU4ZTQ3ZWNkZWY2MzZlZjZlMzUgbGVnYWN5LXRydW5rCisxOTE4MSBiMzM1ZDRkZDIyM2YzODg0YTY3NmJjNDAwMjZiZTk3OTExNDZiZTVlIGxlZ2FjeS10cnVuaworMTkxODIgMGVmYTZjOTdhNGZhYjU2NTg2YWQ0N2MwMGM5ZWI1NTY5M2M3NWVkNCBsZWdhY3ktdHJ1bmsKKzE5MTgzIGE1OGM5OTNkOTIzNDU3MmY4MjlkODU4YTRlODJiM2Q3NzVlZmFmZDQgbGVnYWN5LXRydW5rCisxOTE4NCA5MjViMjMzZjAyZWEwZGNlMTk0NDY5NjQ3OWRkZjFkNGU2MjM2ZjdkIGxlZ2FjeS10cnVuaworMTkxODUgYWZkMDkzMGY4NjgzOTlhZWIyNTBmZTRkMmQzMTYwYTNiMjU0Y2ZkZCBsZWdhY3ktdHJ1bmsKKzE5MTg2IDlkNTcyMDM4MjA2ZTAyNzYwODk1NjMxM2JmN2U5MWNlYTMwOTRmZTMgbGVnYWN5LXRydW5rCisxOTE4NyAzMzAyMzk1NzVlMWU2NzU3ZmNmZTc3YTY3ZmRmNGFlM2I2ZjJhZTIzIGxlZ2FjeS10cnVuaworMTkxODggZmZkMjUxZGZhYmY0MmFkODJhOTcyMDY0NWYzMjljMTllZWJjMDA5YiBsZWdhY3ktdHJ1bmsKKzE5MTg5IDkzYWZiMmJiMjJlZDA5YmFmOGY5NjA3MDQ4MDM2NTE3MmQ4OGUxYjUgbGVnYWN5LXRydW5rCisxOTE5MCBhYmQzODNmMTkwNWM4MWVjZTkwZjRlMjJjZTNkZTQxOGM1YzViNWNiIGxlZ2FjeS10cnVuaworMTkxOTEgNGQ0MjRkMTM5N2IyZDhiOTg1NDc4MzU3OWViZjMyMGQ1NzEyMTVjMiBsZWdhY3ktdHJ1bmsKKzE5MTkyIGJlMDZiZmNiZTUxYTJlYWM1MDI1OGI3NzJjZjQyNTZhYzI3ZWFmYTMgbGVnYWN5LXRydW5rCisxOTE5MyAyNGU4YzY5Y2QzNGRhNTRhNTgyOTc3MDMzYTAwYjgyYWNlM2I5MGM0IGxlZ2FjeS10cnVuaworMTkxOTQgYmFjYmI0NWZlODQ0OGZlMjM2N2Y0NTIyMTBkNDdhODE3MDI1ZDE3MCBsZWdhY3ktdHJ1bmsKKzE5MTk1IDAxZDViODBhM2MwMzgyMzc1ZGY5NDY0OGE3NDZjY2I4OTM4ZGVmM2MgbGVnYWN5LXRydW5rCisxOTE5NiAzNmRiMTkzNjA4YmVlMTU0NWI3Zjk1OTQxNTg4MTI3Y2RjZmNmM2UxIGxlZ2FjeS10cnVuaworMTkxOTcgMjg1MmVhZGI3ZGFiYTUxMmNiMzFlZGNjNDMyNjYzNTJiZDQ4OGQ2MCBsZWdhY3ktdHJ1bmsKKzE5MTk4IDJkOGUwMjkwMmQ2N2U5ODg5NzE0ZDkwMDNhYWZlOWYyNmEwZmQ2ZjkgbGVnYWN5LXRydW5rCisxOTE5OSBmYTkzYmQxZDg3MDlkOGNiYmRjYmUwNGJiOTdjMDc2YTdiMDkyOGQ2IGxlZ2FjeS10cnVuaworMTkyMDAgNjg3ZjkzZGRmM2Q3MzQzYmEwM2JjYTIzY2RkOTlhOTM4YmQ4MmU0OSBsZWdhY3ktdHJ1bmsKKzE5MjAxIDY1NDk4MmE0NjYwNzc2OWVlYjIwZjVjYWQ0ODIxYzk4NmI4ZjFmMGEgbGVnYWN5LXRydW5rCisxOTIwMiAyMDcwNzQ1ODhiOWZkZTA0ZDFkNmMxZjMwNDU2ZTIwOTRiNGZmZTU4IGxlZ2FjeS10cnVuaworMTkyMDMgYTRiYmEzZWIzNGMxZjE3MzZlMjkzNTY2MzVkZTFhZDM1MDM3ODAzNSBsZWdhY3ktdHJ1bmsKKzE5MjA0IDA1YTkxM2ZmOTdhNmUyMTBmNmEyMDE5ODdiOTU5NDcxZmNhYzQzM2EgbGVnYWN5LXRydW5rCisxOTIwNSBmODdhNDFiOTZlMjhjYzk4ZDEwMTQ0ZTRiMGFlODQ2ZDc2YmNkZjVlIGxlZ2FjeS10cnVuaworMTkyMDYgYThkODg1N2FiMGYxZWNkNWJhYTYwY2U5ZjU1OWIzMDI4YTg0NTMzZSBsZWdhY3ktdHJ1bmsKKzE5MjA3IDBjYjQ3OTU1MzQ0ZTQ0NGUwMTFhYjM3OTI1MGRkY2FjMDc2YWRiZWMgbGVnYWN5LXRydW5rCisxOTIwOCA5MGVkZTUxNjVkMWYzYzE1ZWEwOGEyYjg3ODhiMzI3YTUxNzBhYjA3IGxlZ2FjeS10cnVuaworMTkyMDkgNmYxYzM3ZTgxMTYwNWJmYTA1MTE1Y2NlZjY3ZDI5OWJlODFmMTg4ZiBsZWdhY3ktdHJ1bmsKKzE5MjEwIDZkZjEyNzMyZTI2MmYzYzc4M2IyYzA2OWE3ZGQ2Y2JlYWI4YjhlYjUgbGVnYWN5LXRydW5rCisxOTIxMSA3YzRlYjQwZDRmZjc5MjhlNTBkZTEzZDJkNjBkODc1MDFiMDlkZTE5IGxlZ2FjeS10cnVuaworMTkyMTIgNjZkNGJmNTZlMzJkYmIxODViMmVlMmMzNjFlNDIwMzAzMjY2MWJjMCBsZWdhY3ktdHJ1bmsKKzE5MjEzIGVmMzJiZmE1ZjVjNjgxMzQ4MGI0YTEzOGM2MTRkNTczNTUwMWM4OTIgbGVnYWN5LXRydW5rCisxOTIxNCAwZWViMmVlMjA3OTk5ZGFhZWIxZGI2ZjFhMDU4ZjRmZjk1ODQxM2Y3IGxlZ2FjeS10cnVuaworMTkyMTUgYWUwNGQ2MTRhM2UwMzNiNDBlYmY3ZGFhODY3OTc5Y2I4YTdiNDc5YiBsZWdhY3ktdHJ1bmsKKzE5MjE2IGMzYjc1YTdmYWQzZjc4MDZjNzQ5MDk3NWIyYjdiNzIyMDk3MDRhODcgbGVnYWN5LXRydW5rCisxOTIxNyBlNDQyMGMyNDY4ZjkwYWE2YjFiNjFmZjE3MGIzYmYyMGZhODA1MmYzIGxlZ2FjeS10cnVuaworMTkyMTggNGZmMjg1OGQ3YTg1NTY4NjQ2OTU3NjgxMmZmNTMyZTRhNDFjYjQzYyBsZWdhY3ktdHJ1bmsKKzE5MjE5IDlmMmNhODU1ZmE0NGRiNjRhMTY4Y2I5MmVkZGJmOWU3NWQyODBmOGMgbGVnYWN5LXRydW5rCisxOTIyMCBmYThiZTI4NzMwYzk4NTMyNDNiNDI3ZmMwY2ZmMzczMjQyMGJiYWMwIGxlZ2FjeS10cnVuaworMTkyMjEgMTA5YzZhMjgwZTUxYWEyYzdlZjJjMzVmZDYwMTY2NjU0Njk4YjRlNSBsZWdhY3ktdHJ1bmsKKzE5MjIyIDk1ZGFlNjFjZWQ1MTgzM2Q4ZjE4NTkxZjg3MDE2MGNmZGY3NjhjOTAgbGVnYWN5LXRydW5rCisxOTIyMyA4YzVkOGI2MTc5NzlhYmIxZTZiZGQyNTFmNWY5OGFkYjQ3MDA3ZGRjIGxlZ2FjeS10cnVuaworMTkyMjQgNjU1YWFjY2QxY2FmOGE1NTlmZmMzMmYxNjNkMTAyMjhlNTljNDEyYiBsZWdhY3ktdHJ1bmsKKzE5MjI1IGMyOWNhMTk4MDMwMzhiY2I0YTJmMGFhNDk2OWNlYmJmYTFjZWJjM2IgbGVnYWN5LXRydW5rCisxOTIyNiBmMWUyZjk4ZjAxMjA3ODAzNzFkMjBhYmRhZTE2ZjRiZDZkMjlhYjYwIGxlZ2FjeS10cnVuaworMTkyMjcgNTBmN2RkMWE1MzU3ZDljOTU5MzI3YjliMTY3NzMyMWYyNTM5Y2IyZiBsZWdhY3ktdHJ1bmsKKzE5MjI4IDM4Y2E5Y2M5ZmM0OGExY2YzMDA3YTlhOTA5YmNmMjA4NzJkOTU3NWIgbGVnYWN5LXRydW5rCisxOTIyOSAzYzFiNDI2YjNmZjRjNmVjY2ViMWUxMjZmYmVmYTQ3ZDBmNzM0ZjNlIGxlZ2FjeS10cnVuaworMTkyMzAgYzY5NmE1MmMyNjIxODQ1ODIzMWZkOGY2MzcxZDZiZGI5ZTM3OWI3YSBsZWdhY3ktdHJ1bmsKKzE5MjMxIGMwNGNhNmNiYTFlM2M4ZThiNTJkNWEzNjE1MTE0ODcwNWI3YzEwMjYgbGVnYWN5LXRydW5rCisxOTIzMiA0YjViZWNmYTJlYjNhY2Q0ZjFmNTljZDc5YzMwNjNjNzMwMTM3Y2Y2IGxlZ2FjeS10cnVuaworMTkyMzMgM2ZlODU1NTI2YzU1NjA0OWQ4OWM0NGUwNmIyZjExYmQ2YTVhNjc1NCBsZWdhY3ktdHJ1bmsKKzE5MjM0IDY3MGEwMTk0YThkYTdlOGJlOGQxOTc5MTk2OWY4MmZhNjg5ZTJkZmQgbGVnYWN5LXRydW5rCisxOTIzNSA1ZGZkN2UxNmM2MmYxNzJlNjRhZDRiNGVkODUwMzE3ZDliOWQyZjQ3IGxlZ2FjeS10cnVuaworMTkyMzYgNjMyNWJkMDYzZjBhODgzMzZmYmE1NTA3Yzk0NTY2YzhjNGQ5YTU1MyBsZWdhY3ktdHJ1bmsKKzE5MjM3IDZmZDYzYzVjMTlhOTIxOGIyODk5ZWNlMjk0M2RiZTlhNWYwYzcwNjcgbGVnYWN5LXRydW5rCisxOTIzOCA4YjFhMzgyMjRhZGU5YjU3NWE1NTNiMjU4NTg2OWExMjlkMjMxYTdkIGxlZ2FjeS10cnVuaworMTkyMzkgMGQ0YjZiYTVlZWVjODUwNTIyY2Q5MzU3NzkzYjNjZWU4MWZmMWVmZSBsZWdhY3ktdHJ1bmsKKzE5MjQwIDRjZDU3NDQ2OWZlMWFhOGM5ZGEwZGU4ZjFjYzYyNzQyYTY5YTFlMjkgbGVnYWN5LXRydW5rCisxOTI0MSA1ZjA2ODNhNjllZmM2ODg0YzY0MTczYTAzZDhjZDAzZTU0NjI5NjZhIGxlZ2FjeS10cnVuaworMTkyNDIgM2E0ZDJiZWZiYjc0NzM0MmRmMzMwYThlMzNiYTZkNjc4MGM4YTM4ZCBsZWdhY3ktdHJ1bmsKKzE5MjQzIDQ4YjRhY2Y3M2FkN2FiZDIwM2QzMmQzYzg5NWEwMzZjMmVjZDk0NDIgbGVnYWN5LXRydW5rCisxOTI0NCBlYzhmNDdhMWNjNDgzODg3ODFkODJjNDJjNzcxZTdiYTg2YmNiNTgzIGxlZ2FjeS10cnVuaworMTkyNDUgOThhODhhYmU1OGQ0MmViNzg5MGQ5MTI4ZTIzMmFiMDE0ZWM5OTI3MyBsZWdhY3ktdHJ1bmsKKzE5MjQ2IGM4OThjZWJhMjI2MTg0MGViOWNkNGExMTkxYjQ4Yjc1MWZkNzZjMDUgbGVnYWN5LXRydW5rCisxOTI0NyAxZmI2NjcyYjIwZWYzY2NhZjIxMDQ4Njc4MDFiOTExY2QwYWQ2N2NiIGxlZ2FjeS10cnVuaworMTkyNDggYzI1NTViNGYzOGEzMTQwZjYxMjExOWE4ZDZiZTA0NTE0NDc4Y2VhZCBsZWdhY3ktdHJ1bmsKKzE5MjQ5IDU1Njg4NzI5NmQyYWQ4YWUxYWRkNDE4NmFiMDAwNjc2ODcyOGNkZTAgbGVnYWN5LXRydW5rCisxOTI1MCBmZDRhNjM1NjZiYTFmNGQ5OWEyNzk1OThhMTZjMzA4YjEzNjgwZjQ1IGxlZ2FjeS10cnVuaworMTkyNTEgNDZhOGNmZTlhZmE2MzRkMGMzOGMzZDQxYzFiOWNmMzQzYWViNTEzNSBsZWdhY3ktdHJ1bmsKKzE5MjUyIGQzNGYyNTA0NmFkNGJhNDY5ZDc3ZTdhNDQ0YjdlYTgxMWQwOTJjY2YgbGVnYWN5LXRydW5rCisxOTI1MyAyYWIyOGIyMTNkNzA1ZGNjOWZkMDMzYTI1NDM0YmE0ZGJhNjg2ZmVjIGxlZ2FjeS10cnVuaworMTkyNTQgMmVjY2ViOWQ4N2Y1OWUyMjBmZGI0NmRhZjAxNjZlN2VkMTExZmMyNyBsZWdhY3ktdHJ1bmsKKzE5MjU1IDAzOTQyNzBkNGQwNmQ1YTE4NzI1N2U0OTQ1ZTQxM2VmMjc0NzkyM2QgbGVnYWN5LXRydW5rCisxOTI1NiBmNzAwZTZiOGRlMWZhNjA1OWUyN2ViZDRlMjY3MWIwMTQwMTQyMDAwIGxlZ2FjeS10cnVuaworMTkyNTcgNzRkMTQwYTNmMDM0NjM1NDg0ODI0YTIyOTZjZjVhMGQ2YTBiMTI4MiBsZWdhY3ktdHJ1bmsKKzE5MjU4IGIyMmU0ZGNhNDUxYTM1NzY5N2M2YmJkNTFjNTQ5ZTVjMzAyNzJkMTkgbGVnYWN5LXRydW5rCisxOTI1OSAwYmI1OGNkZmE2ODhmZjFkOTM3ZmFiOWMwZWEyOTAyZmY3NzZiZjYyIGxlZ2FjeS10cnVuaworMTkyNjAgODBjMGIyODBhNGY5MTFlZjZiN2M4MmZlMzJjOWQ0YTBjM2NmZTQyZiBsZWdhY3ktdHJ1bmsKKzE5MjYxIGRjZTdiNGU2ZDQyMWJjYjhjYzcxM2RlNGE0YzMyNjBlN2ExZDYxYTIgbGVnYWN5LXRydW5rCisxOTI2MiAxNjZlODc4MzZlOGU2MDU5MjYwYzlhYTdkMzYxMTZkMjZmODExNDczIGxlZ2FjeS10cnVuaworMTkyNjMgYWJlODVkMjYyMmY5ZmJkZWY1M2NiNTQwZTViOGQyZmQxMDA5MTVkMiBsZWdhY3ktdHJ1bmsKKzE5MjY0IDA4YWM1NTZmMmQxMmRlNTllYmE2NWQzNDVhNDdkOTdhN2Q1ZjY5MzAgbGVnYWN5LXRydW5rCisxOTI2NSBjMjJlODcyNTAxYTBjOTUyZTQ2ZmY0NTk5OTExZDU4YmE0N2E2YWQ5IGxlZ2FjeS10cnVuaworMTkyNjYgMzkwY2E0M2U1Zjc5ZDBmMmZiMDlmZmMxYzBhNThjZGQ0ZDRmYTY2NSBsZWdhY3ktdHJ1bmsKKzE5MjY3IDdhZDk3ODMyYTVjZDA1YjE3YTVlZTIwYTQ1MWIyZTY3Y2YyMTVjMTggbGVnYWN5LXRydW5rCisxOTI2OCAyZDcyZGI5ZjVjYTU0NGNkYmVkMDkyZjkwOTA0YWYzYmI4Y2I3OTAwIGxlZ2FjeS10cnVuaworMTkyNjkgOTllZGUyMTkwODcyNzM2NDE2MmMxNWJlMmFjNjI0YjNhNzY0YWFhZSBsZWdhY3ktdHJ1bmsKKzE5MjcwIGVjNzA5ZWU4ZTZmYTY1MjdiYWRiMDNmZDE0YTczMjBmN2ZkNjUzZDEgbGVnYWN5LXRydW5rCisxOTI3MSA3NDMwZWJhYmRiZGNhZWUzMjljY2IxYzdiYzJkN2FlYzM0OWQzNmUyIGxlZ2FjeS10cnVuaworMTkyNzIgM2Q0YTdjZDBiZjE3OGFkNjNlMzhiZDNjZWVmNTBmMTMyNzI0MDJkYSBsZWdhY3ktdHJ1bmsKKzE5MjczIGFlZGI5M2Y5YzZiODBkNTk5MWMwMmRjOTY1ZThiMGFmOGUwNmFjYjQgbGVnYWN5LXRydW5rCisxOTI3NCAxMGVhNDA2MGM4ZGM1NWJkNTNmOGFmZWIwMWJmMjJhY2NjZmM1YWQ5IGxlZ2FjeS10cnVuaworMTkyNzUgODgxOTg2N2YxNGVmNjU5YmU4ZmY4MDUxYzAxMjRhNGQ5YzVkNDM5ZSBsZWdhY3ktdHJ1bmsKKzE5Mjc2IDE4NWI5MTk2NzE0N2RkMDI3NjYxNWUyOGEzMmYyYjc2MWQyZmI5OTkgbGVnYWN5LXRydW5rCisxOTI3NyAxMmQwMDQ4ZWQ2Y2E1YjY4YzJlNjQ3ZjU2YTJmMzc4ODBhNDU3Y2U5IGxlZ2FjeS10cnVuaworMTkyNzggN2QzOWQ5ZGNmMmQ2MTEzNzhmYWNjNjgwNDA4MDI0YmZiNzU1NGRjZiBsZWdhY3ktdHJ1bmsKKzE5Mjc5IDkwMWI5NDY1NjkyOGIwZDBhZWViNmMwNzI4MGEyOWM4ZjI0Nzk4YzEgbGVnYWN5LXRydW5rCisxOTI4MCAxYWM3ZTYxODZiNmUzZjc3YmE3YjM4NWFlZGRjNDY5MjA0NjVkZTlmIGxlZ2FjeS10cnVuaworMTkyODEgMWVmN2U0MzcxNWY1NDBjMzBiZGQ2MTA3YzVhZmNiMGZjMzhkNjljMCBsZWdhY3ktdHJ1bmsKKzE5MjgyIDM4MjA0MDkzZDljOTI5ZDY0NGVmOWM1NmJiODlkYWY5OTQ1ODdjMGEgbGVnYWN5LXRydW5rCisxOTI4MyBhYTg0NDcxMTQ2M2FhODk0YWZmY2UwOWE4N2JiYWMzZjRjN2UwZTI3IGxlZ2FjeS10cnVuaworMTkyODQgOGIzMThiOGQ3OGM5NDQ2NmRjYmVmNWJhOTEyNWNiNTNiMzk2ZjI5MiBsZWdhY3ktdHJ1bmsKKzE5Mjg1IDVjNDAxMTM0MDljMzI3N2M2NjI0MWM5YmM3ZjNjZTYxZWU5MGFjNzcgbGVnYWN5LXRydW5rCisxOTI4NiAyNWVjNGY4YzYwYWFjZjZhMDI4MzQ5YmM3Mjg3MTI2MWVjZDcyZTIwIGxlZ2FjeS10cnVuaworMTkyODcgM2ZmY2M5YjNiYWI4N2Y3MTQ4ODQzNzMwNmQ3YzAyYmJiMGFmNDFlYyBsZWdhY3ktdHJ1bmsKKzE5Mjg4IDdlYTdhMWM1YThkMjAzYjNmYjI1MDJlNjhlZjE1NWE5ODgwOWRhODEgbGVnYWN5LXRydW5rCisxOTI4OSBjOGVmODY0YmE4NjFmMjM0Y2I1MzVhYWZkOGY4Mzc1ZTZhZmYzYjQ0IGxlZ2FjeS10cnVuaworMTkyOTAgNjQ5Njg0NGM0YTQyODA5MDZiNzUyOWNkMzhkNDkxMjQzZDQ3OTVmMyBsZWdhY3ktdHJ1bmsKKzE5MjkxIDhhNDQwZmYyNzRlY2JjYjFlNTM1NjY0MTliODljZTM0ZTA1Y2Y1YzAgbGVnYWN5LXRydW5rCisxOTI5MiAyYmU3YzkwYzFkZGVkMmU2NDEwYzE3N2Q5NTUxOGQ1ODg0NTNkMTM2IGxlZ2FjeS10cnVuaworMTkyOTMgYzE2ZTA2MWQyM2U4ODZiYjFiMTFjY2JhNDI5NDhkMTY2Mzc3NzIyYyBsZWdhY3ktdHJ1bmsKKzE5Mjk0IDZiNWUyMGY2OWU5ZWU5ZDU2Y2JmNTBjZGUwNDYzNDQ2ZjhjOWE3YmUgbGVnYWN5LXRydW5rCisxOTI5NSAwMDc2ZThkMjhmOWViYTllZmY0NTA4Njk2ZGMzMzczMGFmMmI0MDAxIGxlZ2FjeS10cnVuaworMTkyOTYgNWE0YmRmYzY2MDgzZWNjMzNjM2MyMDBkODE4NGVhZjUyNmU5ZmY4NCBsZWdhY3ktdHJ1bmsKKzE5Mjk3IGE2MjE5OTUwNzY2ZTc4YWYzODZkOWU0ZWU1ZTdhZTJhMDVmMGUzYmUgbGVnYWN5LXRydW5rCisxOTI5NyBiMzgyZjFmMDdlYzZiMmM5NTU1MTY1OGIzMGM2MTM5ZWViMzIwNzdhIGxlZ2FjeS10cnVuaworMTkyOTkgNjc5ZjgyNmIyNGNhMjY5YjhmMThjNDA0M2VjZjVjM2Q1YWQ4N2ZmNiBsZWdhY3ktdHJ1bmsKKzE5MzAwIDI0NmIzYTZhYTdhOTQxMWVhNzc4NjEzNGEzMjVmZDAyMmQ0ZjJmZTEgbGVnYWN5LXRydW5rCisxOTMwMSBkNTU3ZmYwYTJmNmM5N2Q0MmE4MDMyNDM2OTljNTEwMWNlNWIxYjBlIGxlZ2FjeS10cnVuaworMTkzMDIgN2EzOTcwNGE1MDQ3ZTRmNmZjNzMwMTEwOTJiZTJkZTkyMTU4Y2QzMiBsZWdhY3ktdHJ1bmsKKzE5MzAzIGM0NTNmYmYzMGY2MTM3NzgxZjRmNTg0ZDA2OTgxNmQ4N2QxYzViMDMgbGVnYWN5LXRydW5rCisxOTMwNCBiMmM1MTZiYjczNGE3MjllYWYyZGU2Y2M3NjY2ZGVjZTQwYzM0YTI1IGxlZ2FjeS10cnVuaworMTkzMDUgY2U5ODUwMDUxMTIwNDkwZGUzMDg1MmQzZWJjOTdjMGEwZDI1OGVlYyBsZWdhY3ktdHJ1bmsKKzE5MzA2IGI3OGM4ZDhjNTJlNjFmNmExNmM2OTU4MjVlZDczYmJkZGYzZGYwN2EgbGVnYWN5LXRydW5rCisxOTMwNyBmOTNlMjNhODJhNzNkMmYxYmE5YTZlMGIwMjQwOTA3OGQ1NjFkNDljIGxlZ2FjeS10cnVuaworMTkzMDggNTc1ODcyNTg0YjBjZmM2ZGQ1ZjMyNjEwODE2MDg5YTBmMTkyZmVkMSBsZWdhY3ktdHJ1bmsKKzE5MzA5IGFjNTJkMzcyNzg2NzNmY2Y0NzM5NGVlNzcxOTU4ZWRlYzM4YzM3ZTQgbGVnYWN5LXRydW5rCisxOTMxMCAxODc3MDU3YWE5MjYyMDc2MTdiOTVmNmM5ZTg0NmY0ODY1MzRjN2EzIGxlZ2FjeS10cnVuaworMTkzMTEgNjRhMzJkZjVjMDYzNDVkODkwNmViMjVmNzgyM2RkYmVkZmM0MGZlMiBsZWdhY3ktdHJ1bmsKKzE5MzEyIGFmMzlkZTI2MmI5YzliOGYxYjdmODlhYWJjZWY1ZjMxODRmYzBhMTQgbGVnYWN5LXRydW5rCisxOTMxMyA5OWJlZmVhYzg0MDBmZmE4MDYyOTkwYjE2NThhZWU3NWZlZTBiNzA4IGxlZ2FjeS10cnVuaworMTkzMTQgMjg4NWEzMzk2MzVlZGU5YTAyNzFjMjkwZDMyZDM1NTg4Yjk5MzIwMSBsZWdhY3ktdHJ1bmsKKzE5MzE1IDJlM2RkNjJjZWFjNWY4ODQzOWUzOWMzODAxMmEzYjM2YjE4Y2I1OWYgbGVnYWN5LXRydW5rCisxOTMxNiBkZGNlNzE1ZTQ5YmEwNjc3ODdkNWFhMDliYTAwMzRiOGJmOTA4OGRjIGxlZ2FjeS10cnVuaworMTkzMTcgYjMwNWMxNTM2YjdhYTRkNDIwYmRiZDg3ZGZiYjM1Y2YzNzJiNWE1ZSBsZWdhY3ktdHJ1bmsKKzE5MzE4IGE1MDZmM2I3NTY5NDE0OTkzZTgxNGYwNzc1ZjgxMjRjODQzNzI2MTMgbGVnYWN5LXRydW5rCisxOTMxOSAzY2M4NjM1NTg3OTMzZWM1YTkxYWI2MGNiMzZiOTM4MzE4YzBjN2FkIGxlZ2FjeS10cnVuaworMTkzMjAgYzk5ZDZkNWFmZDc1ZDBiY2IwMGViZThhYjliYTU3NjMyMjRiZDJlNSBsZWdhY3ktdHJ1bmsKKzE5MzIxIDVlZjcxY2I2NjQ5NTM2MTQxZmRlZmRkODVlYWI2ZTEzYTk5NmEyN2QgbGVnYWN5LXRydW5rCisxOTMyMiBjMThhYzhjMmYwMzY1YmE3ZDNhNTllNjcyNThkMjAxOTRiMTk2NDYxIGxlZ2FjeS10cnVuaworMTkzMjMgMGJiMTcxMjdiMmY4ZWEzYzI4YTlmYWFkNmM0Y2RjNzNjN2YxMWZkMiBsZWdhY3ktdHJ1bmsKKzE5MzI0IGE0ZjZiNjMzMjMwYzM3MjJkMzdhOGRiNWI2N2FiOWExZjMyOWUzODggbGVnYWN5LXRydW5rCisxOTMyNSAyY2E4NzgzY2U4YTM1YWU3ZTJjZTkyM2MxNGNkOGZlMWZjMjY4YjBiIGxlZ2FjeS10cnVuaworMTkzMjYgMjg2YTlkOTg3Mzc1MzYzZDNlMmE1OTI1ODhlNzE1NmQ5MzQ5NTUwZiBsZWdhY3ktdHJ1bmsKKzE5MzI3IDY1YTcwODk1MDkyMmI2ZjhmODMyNGY5MDhiNTBhNmMwMzJiYzBkNTAgbGVnYWN5LXRydW5rCisxOTMyOCBlYTg4YzJhNzMxNzMwNDRmMTQ4MGE5YmZmMTJhZDhhMzU2MmNjMTlkIGxlZ2FjeS10cnVuaworMTkzMjkgMWM3MWFhN2Q1NTEzMWFiZjJkMDBiYzFhMjBmNjQyOWYyYWNlZjUwNSBsZWdhY3ktdHJ1bmsKKzE5MzMwIGVkNDMzOGM3ZThhNDVjODk3YmY4NDAzZWY1OGRkZDkzNDY1NDJiZTQgbGVnYWN5LXRydW5rCisxOTMzMSBjMGIwZmMxMzI3OWUyMzIxNjQ3YzI0OGRhNzA3ZDY0NGU5NWNmOTNmIGxlZ2FjeS10cnVuaworMTkzMzIgODA3Y2E2OTc2MjBhZWUxOGJjMjZhZTMwZDEwMmUzZDk5YWJmOWVhNSBsZWdhY3ktdHJ1bmsKKzE5MzMzIGFiMDJiYzZhNWFiMmNhZGMwODg1OTZjNjgxODNlZjJlMjdhMjNkN2QgbGVnYWN5LXRydW5rCisxOTMzNCA1NDllOTkzYTQ3NmNkNzBmMjUzNjkzMDMxYTQ0NGFmMTk1NmJjMjIyIGxlZ2FjeS10cnVuaworMTkzMzUgZjViY2JhNWZhNDFjOGIwYzZmMmE5Nzg0YjY1MzQyMDE0Zjc2MWNhZSBsZWdhY3ktdHJ1bmsKKzE5MzM2IDRkNDA2YzI2YzE2ZWE3OWRhN2EzNjk3MzI3MzYwMWQyYzJlNTA0YzYgbGVnYWN5LXRydW5rCisxOTMzNyBiNjMxM2M5MTE0ZWQ2ZDEyYzZhOWNkZjE2MWEzZDFkOGNmNjRjM2MwIGxlZ2FjeS10cnVuaworMTkzMzggZjdiMTY3YzgzMzE4NThkZDc0ODM1ZmQ0YzgxOWM4MjdjMDE0MmRiYiBsZWdhY3ktdHJ1bmsKKzE5MzM5IDU3Y2U5MmExNmIzYzllZWIyOGE2MzBiNzVjMjg5NmNjNjg3OWM5YmUgbGVnYWN5LXRydW5rCisxOTM0MCBlZGMwYzk5YTY5ZDZkMjI1NjIyNzNkYmJiNTljNDVjOWM2YjZhYzAyIGxlZ2FjeS10cnVuaworMTkzNDEgZDU5NjYzZDNlNDMzYTM1OTk3Y2U4NjlkYzMzNDBhYjBhYTI0NjFhYiBsZWdhY3ktdHJ1bmsKKzE5MzQyIGU5NzIxN2Y1YjMyMzE5ZjNhN2Y5ODdlMzIyZWZjYjY3ZmYyZGQ5OWUgbGVnYWN5LXRydW5rCisxOTM0MyA4MTFiMGNjYjYyYWVjZTkzN2QxMDNkYjllYzVhM2ZjNzQxMDhlOWQxIGxlZ2FjeS10cnVuaworMTkzNDQgMWZiN2JlZmI1OWYwNzNiMDFiYTE0NDdkZjM1NjExYTA3ZWVkOTdiYSBsZWdhY3ktdHJ1bmsKKzE5MzQ1IGMyMzNlZmNiNDg5ZTViZjVmNDdjNGU2OTRmZGUxMGQ0OGMzYWZjYzMgbGVnYWN5LXRydW5rCisxOTM0NiBiZjk3ODE4ZGQ5ZTFlMjhiOGFkMWRkYzlhZjU5OGUzMjEyMmQxZThmIGxlZ2FjeS10cnVuaworMTkzNDcgNWYxMmRmODhhMjA4NWFhMjM4OWUwZTI1MmRiMWU5ZGU5YjUxNTRhOSBsZWdhY3ktdHJ1bmsKKzE5MzQ4IDQ2NGRlOGRmYTU5ZTlhNzVkYWQ5ZDQ3MTk4ZjZjODJlZDk1NWIwNjcgbGVnYWN5LXRydW5rCisxOTM0OSA3NzFkYmIxNTU1NzVmYmNmZThkYTVkN2Q4ZGNlNDI4ZTE5MDA1YzY1IGxlZ2FjeS10cnVuaworMTkzNTAgOTJjYmVmZGI2NzRhNjVjZDc4MjFiY2M2N2FlZGRhYTI4OWI2Yzk5MiBsZWdhY3ktdHJ1bmsKKzE5MzUxIGE2ODg4NGRlMTJlYzU0ZTU0YjY4Yzk2ZDczNTUzZmRmYWJkYTBmZDIgbGVnYWN5LXRydW5rCisxOTM1MiA4N2YyYWJiNzMxODQ4YjZmZmEyYmYyNDk2OGFlZmY2NTk2NmE3YzhkIGxlZ2FjeS10cnVuaworMTkzNTMgYTRjNmU0MDFlZTE4NGMzZmZkNTI1ODA0ODMzNDMxM2UyM2IzMDI3NiBsZWdhY3ktdHJ1bmsKKzE5MzU0IGZjNGFjZTAyNDJjYjA5NGI2YjM2ZWQ2MWRiMTY2ODNlNzhjNDczYWUgbGVnYWN5LXRydW5rCisxOTM1NSA2ZTVhYjc4NDBiMDVkMGJjOTRkOWJmZWVjMTkwNWEyY2ZiYzUwYzM1IGxlZ2FjeS10cnVuaworMTkzNTYgZjRkMTVmZGQxNWRkN2IxZWU3NTFjYjc2OTIzN2YyZTkwODZjNjQ2MCBsZWdhY3ktdHJ1bmsKKzE5MzU3IDY5ZjE2MmRjZDhiNGMwOWM1ZWY0ZGRkNGI1N2I5MDdiNzlkNmY4YzkgbGVnYWN5LXRydW5rCisxOTM1OCAxZmY5ZDU3MWJhYzA5YTc4MTU2N2UwNmE5MTdkYTVlMDk5ZjgwZTgyIGxlZ2FjeS10cnVuaworMTkzNTkgZDMyOTYwNjM2MWY4YjNiYzVkZTU4NGQzM2VmMzdkOWQ1MmNlOGU4OSBsZWdhY3ktdHJ1bmsKKzE5MzYwIGY3NTFiOTZkZTYyMWVlNzE0ZTVhYWU1YmJlOGM2ODBlMWM4NjllNzQgbGVnYWN5LXRydW5rCisxOTM2MSA1OGRlMjgyOWNmZGQzYjg5ODEwMjU1M2NmOTdlZGY4MTBjOTRjZWExIGxlZ2FjeS10cnVuaworMTkzNjIgYzk3ZTYxODlhZDk2YTllYWQ1MmFiYTUxZjRiOTM4YzVlMjc5OGI1MyBsZWdhY3ktdHJ1bmsKKzE5MzYzIGIxMTc4MGIwNjhmYTZjMTIyOWNiZWQyOTVkZjNjYmU5NzQwNzVmYWIgbGVnYWN5LXRydW5rCisxOTM2NCBiZjAzMDlkNWZjMGE5MzllOTBhZWIxYjc2M2UxMjhiZjQxNjcyYTVkIGxlZ2FjeS10cnVuaworMTkzNjUgOGQ3NjU1YWM4YmY4NjhhNTM0ZTA0MTM4OTY5MDY2OWNjYWQyMGQ4NyBsZWdhY3ktdHJ1bmsKKzE5MzY2IDZmZmNlOGJlM2UwYjhkZDMxNGM2OTZlNjYxYzY0ODA2ZWRhNGFmNmIgbGVnYWN5LXRydW5rCisxOTM2NyA4OGM4N2M4OWI0MDY4MDA3ODk0YTExOTI1YThiNmNlNjVjNGVjYTIyIGxlZ2FjeS10cnVuaworMTkzNjggYjI2Y2JjMWZlNGUzYjViZjYxOTZiYTY5NTM4OTE2ZDY0YzkzNmQ0NSBsZWdhY3ktdHJ1bmsKKzE5MzY5IGJkZmM2YmY3YjBkYWU3ZDIyOGFhN2ZmZDc1MDlmZDZkYmJkZWVhYmUgbGVnYWN5LXRydW5rCisxOTM3MCA1YzNiZjJlODlkODAxMWFmYjVmZWY2OGI5OGE3MWEyNmIzNzU5YzdmIGxlZ2FjeS10cnVuaworMTkzNzEgNWY1ODhkZDU0MzliZjAwNmExNmRmMGYxNDUxZDBkZjRiOTA5MGYxMSBsZWdhY3ktdHJ1bmsKKzE5MzcyIGM4N2ZkZjdkZTBlNmI4ZjkxNzcwMGQxMDhmMWFlMTcyYTcyZmNiNjIgbGVnYWN5LXRydW5rCisxOTM3MyAxOGVmM2Q1ZWFiNGYyMmNiOTNhN2M3MDAyYTZhYzZmYWE4NDQ3ZDYwIGxlZ2FjeS10cnVuaworMTkzNzQgODkzYTUxNWQzMzFhNzNhYWIzNjdkOWUxYmFmOWFhY2ViZmRmNWM4OCBsZWdhY3ktdHJ1bmsKKzE5Mzc1IDU2NDNlMzdiOTlhZTY5ZWVmNjNiYmVlNWU0YjdjMDk2ODE5MWY3Y2UgbGVnYWN5LXRydW5rCisxOTM3NiA5MGM2MDBhODE5ZTk2ZDQ2MDY5NzllMmQ2OGUzOGRkMTRmZGI0MTEyIGxlZ2FjeS10cnVuaworMTkzNzcgOGJhNmJjOGMyZTA5MzgxZjM3NmYxMTkzOWE5ODljOWQzYzQxMTRjNCBsZWdhY3ktdHJ1bmsKKzE5Mzc4IGFmODg0NjU5OTljN2E2YzAzMzQ2YmIwYjhmNzVkN2U4ZmExZWUyNjAgbGVnYWN5LXRydW5rCisxOTM3OSBlZWU2N2E4NGU1ZmFhZjMwMGExZWYyNjgxYjg5OWUzNjgwMWQyZmY5IGxlZ2FjeS10cnVuaworMTkzODAgYjNkOTIzYTY2MTUyY2Q4ZDUzNjlmNjllY2ZhNGZkMjQ4ZDhlMTE1NSBsZWdhY3ktdHJ1bmsKKzE5MzgxIDYzMWQ0YzhkYjc4NDA4MDI4NjdmOTNiMzk2ZjIyNWE2MWY1N2MzNTcgbGVnYWN5LXRydW5rCisxOTM4MiBjODAyMzg1YTZhYzNlNjQyMjY5MjhhYzAzZTI4YzY4N2Q1ZDQ1M2I4IGxlZ2FjeS10cnVuaworMTkzODMgZTNkNDg4MDc0OGI1YzQ3NWM0YzU4ZThmZjAwM2VlYTUzZDFiNDQ5ZiBsZWdhY3ktdHJ1bmsKKzE5Mzg0IGY0Mjc5OWM2ODkyOWVlNjRjOWM4MjRmNmY5MmFhZDVkZTlhYjgyOTUgbGVnYWN5LXRydW5rCisxOTM4NSA5ZDYyNTMwM2Y5MTRiZTgzMGE5OTI3ZDNhNTRhMjUxMDVkNjE1ODU1IGxlZ2FjeS10cnVuaworMTkzODYgMjRlOTQ2ZTk1MWZhMmEzNWExOGE1OTIxY2E0ZDY5YWE0NTBjMjM1OCBsZWdhY3ktdHJ1bmsKKzE5Mzg3IGMzNjk2N2JkYzlkZDRkYWJiNzhiYzVmNzI0MGNlMzIwOWI3ZDRiMGEgbGVnYWN5LXRydW5rCisxOTM4OCA1N2QyNDhkZGJlMmFiYWI0ZGZmNGFhNjZjNWIwODY4YjgzN2RlOWY2IGxlZ2FjeS10cnVuaworMTkzODkgYThlMTIzZGYyNjhiOWNiZmEwNTAxODcwMGI2ZDFhNmU1OTM0NzIxNyBsZWdhY3ktdHJ1bmsKKzE5MzkwIGYzZTgzZTUxNGRkODlhZmNlZjgwNDk4MGY3ZjQwMWRjZjFiZjFjYmYgbGVnYWN5LXRydW5rCisxOTM5MSA3NTFlOWNjNDc3ZDlkMDM0OTI3NWRhYjkzYWNiYThhNGEyNDYyYzA1IGxlZ2FjeS10cnVuaworMTkzOTIgYTgwZjY3YjcyMzA4ZTlkMDUxNWJkYjQ5YWZmYWRlZmJlYzI1Njg1ZSBsZWdhY3ktdHJ1bmsKKzE5MzkzIDA2ZGQ5NGUyMGYzYjgxYmNjMTQwOGQ1MzcyOGIwMTI2NTQwZDNlZTcgbGVnYWN5LXRydW5rCisxOTM5NCA3ZmM2NGRmMTNkYjBhY2FmYzYzMzkxZDAyZGM0YWEzYjYxNTE2MDc0IGxlZ2FjeS10cnVuaworMTkzOTUgYzQ4YWYzOWNiMjkyZTAxYjdjOTJiNzAwNzQ2ZmNkZjY4ZThhOTgyYyBsZWdhY3ktdHJ1bmsKKzE5Mzk2IGI1OWYzYTFlYjEyMzkxYmMxYWVkYTc1YTY5ZDkyYzMzOTVmMTkwYjUgbGVnYWN5LXRydW5rCisxOTM5NyAwODRiM2RjOWI2ZmYzMTAyYWU4ZDVmOWU5YjdjYjRiNzliNTQ5MmJhIGxlZ2FjeS10cnVuaworMTkzOTggNTRmNzIwOWNjNzFlN2I2OTA5ZDMyZjJjMzZkMTRjOGVmNDE3ZjRkMyBsZWdhY3ktdHJ1bmsKKzE5Mzk5IGY0ZTcxYmFiNzg1M2M5N2I1NTc5NzkwOWMwZWZlOTY2NGNhMWQzZGMgbGVnYWN5LXRydW5rCisxOTQwMCBhNTQwYzZmZDBjZWQxZDg4MWRiZWNhMTdiODIxYjIxMjdlM2Y0MTdjIGxlZ2FjeS10cnVuaworMTk0MDEgYTQ3ZDkzZWYxMDNhNzY3M2JjMjJmM2I2NWU3ZjUyZGNhYjMyYjhkNiBsZWdhY3ktdHJ1bmsKKzE5NDAyIDgyMzZmM2U3NTg1ZTE0ZmM4MDAwYTRhOTI2ZjRlMDU1MTdjNDA2NzYgbGVnYWN5LXRydW5rCisxOTQwMyA4ZWVkMzczYmNlN2ZlNTBhZGUyYTYxZjU3ODRjMDUwYTRmOThhNWFiIGxlZ2FjeS10cnVuaworMTk0MDQgZmVmNGMwMzk3MzNkY2I4MWRjNzc5NGJjMjk1OWNlNDE2YWEwYzNiYSBsZWdhY3ktdHJ1bmsKKzE5NDA1IDEyMTRhYmVhMGM3YjJhODM1MTE3MGQ4ODg0NTVhM2U2ZGQyZTFkNDAgbGVnYWN5LXRydW5rCisxOTQwNiA0NjUyNzIzZWE2NTVjYTgyYThmZTI2OGExZTFjNDY2N2E3MTNlYjZkIGxlZ2FjeS10cnVuaworMTk0MDcgMzhlY2ZkMTFkOWI1M2EyNmM0Y2ViMzFjY2MxN2U0OGViOWFlOGM2NyBsZWdhY3ktdHJ1bmsKKzE5NDA4IDYwYTJlOTljODYzYmU5NzE5ZTMxNDM4OTU2OGRiMzhhOWUwNTFhMGMgbGVnYWN5LXRydW5rCisxOTQwOSBjYzljYjFlOTBiM2QyNGJkNzhkMzQwM2IzN2ZhYmE4NTNkMTU3MmMzIGxlZ2FjeS10cnVuaworMTk0MTAgZGE4NjgxZjE3YjUwMGU2NGUxZGU2NzFkNDRlNDUzYjRmZWI1N2NiMyBsZWdhY3ktdHJ1bmsKKzE5NDExIDdlOWY0MDUxYmE0YWYxM2ZmZDVhNWNjOWYxZTRlYWMwMmNmMzNkMjYgbGVnYWN5LXRydW5rCisxOTQxMiA4ZjcwYjVkZGQ1YzA4ZjY0MDg4ZjY3ODNjYWFjZDVjNTM3ZjdmYjZlIGxlZ2FjeS10cnVuaworMTk0MTMgN2RlNTA0MzgyN2Y3MGZkYzE4NmI2ZGY2ZWVlY2JjMDIxODcxZDRhMSBsZWdhY3ktdHJ1bmsKKzE5NDE0IGU1NTkyZjFlZjQxZjg2NTFmMjdlM2ZiNjVjOGIxMDU1MWQ2YThhZmUgbGVnYWN5LXRydW5rCisxOTQxNSA5YTk1Nzk0ZTBmN2VjNjViNTM2OWRkODQ1ZjdiMGYwMGI4YmI5NjdkIGxlZ2FjeS10cnVuaworMTk0MTYgNDQ0YzBlZWQ1YTY2YzVhYzk1NTIxYjQ3M2QwNzg3NGE0ZjEyNGMzOCBsZWdhY3ktdHJ1bmsKKzE5NDE3IGQzOGFmYjIwYzMzNmE3MjRhZWUyMzI0Mzg5MTc5MzViNDVkNjRhZTYgbGVnYWN5LXRydW5rCisxOTQxOCAyN2ZjZTJkN2ZhY2RiNDI3ZDk3NjhhYjgxYTZjYzJjZTU0ZmQwYjg0IGxlZ2FjeS10cnVuaworMTk0MTkgOWNlOWUwMzQyY2MxZjBmMDJlNTliZWNiZWU3NjBiMTY5ZDc5YmJlZSBsZWdhY3ktdHJ1bmsKKzE5NDIwIDE5MmU5ODU1YzdjMDA2NTU2YWQyNzhlMzBlYmE2N2E5ZDVmNWQ0Y2UgbGVnYWN5LXRydW5rCisxOTQyMSA4YzFjNzg3YmQ2ZjllMmI1YTVkY2QzNWVkMjRkNmUzMThkNTJhYTYxIGxlZ2FjeS10cnVuaworMTk0MjIgZThlNjM2Y2MxYTA5MzNkNmU3N2NjZGYwYzEzMmJmMDIzMzE1NDEzZiBsZWdhY3ktdHJ1bmsKKzE5NDIzIDBkMTMwNWM4M2RlNGM5ZTBkYzU4MWRmM2YwMzE2ZTJiMzYxOGI1MDEgbGVnYWN5LXRydW5rCisxOTQyNCA2MjM0NTY1NzZkNmE4ZTU0ZDVlOTBiNDY4MDY4YmQ4ZmMxMzU1OGQyIGxlZ2FjeS10cnVuaworMTk0MjUgMzBkMzRiYmY4NjIwMWFhOThjOGI0YTg2YTY4ZWYzYThmMTBkM2JmOSBsZWdhY3ktdHJ1bmsKKzE5NDI2IGQzNDg0Y2E0MGI4YTBkN2Y5MTFjYWMxMjQyZDYyZWJhMzY2ZTY5ZDAgbGVnYWN5LXRydW5rCisxOTQyNyAyM2I1ZTdkMDNmNzZmYmI4NTk0MGIwMDIwMDlhZWQxMTI1NmRkNmM4IGxlZ2FjeS10cnVuaworMTk0MjggNGNlZGM4MjZiZWU4YjZkMTk4NjQ4ODg5OTEzOWNjNDg0YWYyMDk2NiBsZWdhY3ktdHJ1bmsKKzE5NDI5IGI0ZmYxY2Y0YTEwZmFmYjg3ODI5NDYxYjdmNTUyOThlNWM0MjFmMjYgbGVnYWN5LXRydW5rCisxOTQzMCA5MTc2MzAxM2MzNmZjZjVjNmUxZTA5YmMwYzJjYzQzMTYyM2RjMGM3IGxlZ2FjeS10cnVuaworMTk0MzEgYzkwNGE0MGUxNGVhOWZmM2U0NzIwMTMyODZiMTVhMjJhMjMwNzdmNCBsZWdhY3ktdHJ1bmsKKzE5NDMyIDg2NTczODRkY2M0YWIyODNlZGQzYTcyZDM3Y2RkM2I4NjNjNzZmMGYgbGVnYWN5LXRydW5rCisxOTQzMyAyYzY0MTdlZjQ2Mjg1MGJkZWY4NjdlYWE2YmEwYzlhMjM4NTA5NjExIGxlZ2FjeS10cnVuaworMTk0MzQgZWUwZGQwYzc5NjRlZGJjYTA2NjNhMjY0ZGE1YTA2NzQ5MjkyNmExNSBsZWdhY3ktdHJ1bmsKKzE5NDM1IDQ3NzJmZTJkYjJjNDZjMjQ1YWUzNDg1YjgzNjkxNWNiZDU3M2I5MWEgbGVnYWN5LXRydW5rCisxOTQzNiBiZjljMjRiZWRhN2Q1NzUzNGU5MzBmNjY5OTU5OGU3MDJmYjdlMzA3IGxlZ2FjeS10cnVuaworMTk0MzcgNWYzYTgzNTA2MTVjOGI5Y2U2Mzg3MjM0NjhhMjliNTMzYzY3NzE1MyBsZWdhY3ktdHJ1bmsKKzE5NDM4IGY2NTQ0NjhiOWFlOGE5YTA1MWFhYTI4ZGNlN2VmMThhNDYzMTJmZjcgbGVnYWN5LXRydW5rCisxOTQzOSAwNjhjYjg0OTRiN2IxZTY2MWZmMDM0MjI2OTk3ZDk3YzM5NmUwODMzIGxlZ2FjeS10cnVuaworMTk0NDAgYjQzOWVlZGEwMDgyOGYzYmYwZDZhZTUwNTFhNzJlZDY0N2M3ZTI4YSBsZWdhY3ktdHJ1bmsKKzE5NDQxIGE2M2RjNTliZTBmOTg2YTI0MmFiM2Y0NDQwODk4M2IwODhjMjMyMjQgbGVnYWN5LXRydW5rCisxOTQ0MiBkYTE1ZTVmNjg2NDRhOTYwZGViMGI2YzcyNTViNTlmZTFhMzlhNzVmIGNucmktMTYtc3RhcnQKKzE5NDQzIGUyYjJmZTdmYWJiODk0MzkwNDFlMWE1YzgyNDczNjc2YmQ4ZGQ4MTcgY25yaS0xNi1zdGFydAorMTk0NDQgOWQwOGMzNzQ3M2NiOTI2YWJmOTYzOWQ2NzY2NWYxOTY3NWRjMmVlNCByZWxlYXNlMjAtbWFpbnQKKzE5NDQ1IGMwY2RmODI1OTllMDNmMzk0Yzg1MjE2ZjBiNmNjZjE3ZGIyNWIxMDAgbGVnYWN5LXRydW5rCisxOTQ0NiA5YThlOTYxYjUwNWYwMzA2OTZkMDJjZjFjOGEyYzMwMjg3MDQxYjUzIGxlZ2FjeS10cnVuaworMTk0NDcgODE3ZGY5ZWZhY2JhZTc0MzAxNmY1OGVmNzcxZDBhZmVmMTBlNzRhOCBsZWdhY3ktdHJ1bmsKKzE5NDQ4IDNmNmMwNWUwNDA4MjZkYzcyMjlkNDNkYjM3NDE0MjQxNmYwMmQ4ZTggbGVnYWN5LXRydW5rCisxOTQ0OSBhYWUyYmI4YWMzNzM5ZTBjNThlNGYyZGY3YmQ1YmRjZTFhMzlhNjRjIGxlZ2FjeS10cnVuaworMTk0NTAgNWZhMjU1NDJiODk2NzVkNDJiMTVkOGRmYTU1YjZmNjYyMzJiM2M0NSBsZWdhY3ktdHJ1bmsKKzE5NDUxIDliYjJiNjk2M2M4MjVhYTkwZTVlZTZiYzBmNzkxMWJhN2NhYzU3ZjggbGVnYWN5LXRydW5rCisxOTQ1MiA1NmE4MTA2YmFmNjM1YWRhMjkwMTk0YjYxOGIwNWMxZDVlOTg4ZGUxIGxlZ2FjeS10cnVuaworMTk0NTMgYmE4NDQ2M2VmYzdiYzVjYmVlZmQyYTczMGE0YjhiOTEyNjhjZDIwMCBsZWdhY3ktdHJ1bmsKKzE5NDU0IGY4MTNlOTg3ZTY1Y2U0MGE4M2Y0ZTkzNjJjZjBlYmI0NTdiZWY2OTAgbGVnYWN5LXRydW5rCisxOTQ1NSBkZjdkNTJhZTIwZTRjZDA1MzYwYzhhMWU3YWEwOGNiOTgzNzlhNWVmIGxlZ2FjeS10cnVuaworMTk0NTYgNzRhZTgwZDkwZmE2Y2MyNjQzNjU5YTg4NjU5YzFmYzEwNDUyZGVjYyBsZWdhY3ktdHJ1bmsKKzE5NDU3IGIzNjI1MTMxNmY2YWVkYTZlM2I5ZmI1MWQ5NjA3ODhhYTEyZDNiMTYgbGVnYWN5LXRydW5rCisxOTQ1OCA5ZWY5NzhjNmYwMzk1NjUwYzk5YjcyYjhhMDExNGQ4MmIwNGQ5YjM0IGxlZ2FjeS10cnVuaworMTk0NTkgZmZkYzcxODViZGFiZDYzZTA0OTMwYjAxNTc2YThmOTI2Nzg5ZDBhYyBsZWdhY3ktdHJ1bmsKKzE5NDYwIDA4NTUxMTkxNjc3NjI2OTZjNmExOGE0YWU1N2NhZmUwODA2NDA0M2IgbGVnYWN5LXRydW5rCisxOTQ2MSAwN2ZmYjBjM2JkNWVlNjdjMThiZWI3YjIyMTQyZjQ1M2Q1NDBhZTMyIGxlZ2FjeS10cnVuaworMTk0NjIgZTEwNDM2NzI1NmYwMjAzNzU0ZDRmZmE1ZjczYjgwNzZlNDlkYzRjMCBsZWdhY3ktdHJ1bmsKKzE5NDYzIDI2MGYwMzNhZTdkZjM4OThiOTMzYjZmMmU3NWNjYWFjZjFkNDBlMGUgbGVnYWN5LXRydW5rCisxOTQ2NCA4ODVkNTQ1MjQ4ZGIzODA3OTMzNzE1MTAzYWMwMjYyYjNkOWY5OGJjIGxlZ2FjeS10cnVuaworMTk0NjUgMGI0NTVhNDI4OTY3Nzg3ZTA0Y2NmOGMzOGM4NDZhNDhjOTcyYzQ5OSBsZWdhY3ktdHJ1bmsKKzE5NDY2IDk2ZDg4NjhhMDAyODRkOTljODhlMzk0MjgyNGE3NjUxOWMyMDYwNjIgbGVnYWN5LXRydW5rCisxOTQ2NyAwY2Q4N2E1ZDFlZjk3NGVhZTdmMDFjMjk4YmVhOTQzYWRjNWZkNDZlIGxlZ2FjeS10cnVuaworMTk0NjggZWYyYmUxMmIxOGZlYTM5NjZhOTdlOGE2MjQ0YjM2NWQ0MDNkYjBlYSBsZWdhY3ktdHJ1bmsKKzE5NDY5IGIwNWI4YjZjMGI0MzA5ODljN2I3YjZkOGM0MzliNTVmZTE4NjhlMjggbGVnYWN5LXRydW5rCisxOTQ3MCA0NGVmNjQ0Y2I1MjZlZWI3ZmRjMmE0NGQ4ZTdkOGEwNGNjYWE0MTA3IGxlZ2FjeS10cnVuaworMTk0NzEgOTQxYTc2ZjM4NzQ3NDI1NjE0MThkYjlkYzQ2N2Y4YzE5ZGEwMWE4ZSBsZWdhY3ktdHJ1bmsKKzE5NDcyIGY0MjVkODUyMzQ4MGIwMWZjMzY0NjEwOTI5NTViN2FlNjhlMTY0YzEgbGVnYWN5LXRydW5rCisxOTQ3MyA3MzMwNjk0OTExOWMwNGQzNThhMTA1NjhhZTBkMjNjNmY1ODQ5NjAxIGxlZ2FjeS10cnVuaworMTk0NzQgZjBmNTcyOWQ2MDNmYjU5ZjhhOTZmNjczNzE1OTgzMTZjNmI2ZWQ5NCBsZWdhY3ktdHJ1bmsKKzE5NDc1IGUzY2ZmYzAzOTRiZmI2YzA0NTJiNTg2NWM4Nzc3MzJkNmQ2MzA2NDUgbGVnYWN5LXRydW5rCisxOTQ3NiA4ZWYyNDY3ZjAxOTFiYjYxMDA0YjMwMDZhZGYwZjlmMDk3ZjdlZDQ5IGxlZ2FjeS10cnVuaworMTk0NzcgZjY4ZGJmZmZmOTI3YmZhNTY2ZmQyYzNhOWU4YWVmYjViNjEzMGFkOSBsZWdhY3ktdHJ1bmsKKzE5NDc4IDIwZTUyZTVhNDA4YTE2ZjAyODY2YTZmYWUyMjg2M2QwNDJhNGExZDYgbGVnYWN5LXRydW5rCisxOTQ3OSA4ZmY0Y2Y0OTI2N2VjNTQ3OTAxYzBkZTZmNjUyMThmYmIxMDBjNmJlIGxlZ2FjeS10cnVuaworMTk0ODAgZTJhNjM1ODQ1NjZmODJkYjkzN2UwYTMzMWExYjNiZGY4YjI1MjdlNiBsZWdhY3ktdHJ1bmsKKzE5NDgxIGUwNTBiOTRmMDRkM2M5NjcyNzkzZWY2YTQ5Y2QxODNlM2ZmOTM3ODggbGVnYWN5LXRydW5rCisxOTQ4MiA1NjkxNDg4NGFhYjYzMDFiNDc2MjRlZmNiMDYwOGQ2YzVjMTcyMzE5IGxlZ2FjeS10cnVuaworMTk0ODMgNGUyZDFjNmYyOTA0ZGE2NGJlZjNjNWQxMjkxZGY5YWQ4MDgzOGNlMyBsZWdhY3ktdHJ1bmsKKzE5NDg0IDFjNmJhOTQ2ZDhmYTBiZTJlNDQwMjEzZmI0Y2QzYTc0NWY1ZDQxOTggbGVnYWN5LXRydW5rCisxOTQ4NSBjOTU4Njc4NzIwZmRhYzQyNDY1NDVmNWE4OTg1NDVkZGIxMzAyZDA2IGxlZ2FjeS10cnVuaworMTk0ODYgOTE3ODBlYWQ4YzI1YjI3MjdjNDIyY2I4ZjdlYTVmYzRlNmUyNjRjOSBsZWdhY3ktdHJ1bmsKKzE5NDg3IDNhNmI0YTAwM2ExN2U0YjlhZjZmZGZiMWQzM2E3MzQ5ZTk5ZjcyMmMgbGVnYWN5LXRydW5rCisxOTQ4OCA2N2EwNjY2ZjExZTMyMzA3MGY1MzI4NTIzMTFmYWQ3NWMzNDE2NjA5IGxlZ2FjeS10cnVuaworMTk0ODkgYzlmMjNmODBmYzkzMGQ4NWZiMjlmYTMzZWM4NDRlYmNhNmE0ZDI5OSBsZWdhY3ktdHJ1bmsKKzE5NDkwIDYxMTc2ODM0OWRkOTBmMzlhZGYxMDljZGNkOWUxYWUwOTNlYjBlMWMgbGVnYWN5LXRydW5rCisxOTQ5MSAwNjNkNWM0ZjZjZTU4YjM0MDg4MTFjOWQ0NzdhZjc1OGE1MjkxMzYyIGxlZ2FjeS10cnVuaworMTk0OTIgYzg3ZTcwMTdkNjZiMzNhODhhYmQ5OWUzOTFmOTU5MzViZDcxYjhlNCBsZWdhY3ktdHJ1bmsKKzE5NDkzIDk2ZTljY2JmMTY1ZjZhNGUyMDE1Zjc5ZDE3MTQ4MmYzYTkwOWIxNTkgbGVnYWN5LXRydW5rCisxOTQ5NCBjOTUwOWQ4NGYzZGY3ZjhlYjBmNjM4YzgyODIzMDFlYjY4NDRhNjZmIGxlZ2FjeS10cnVuaworMTk0OTUgZTM4MTQ1MzA2MjMxMjYzNWE3NDE2MzMxOTY4N2I0YzVhOTk5NmVhMiBsZWdhY3ktdHJ1bmsKKzE5NDk2IDA1NjRiMTM0YjU4NDAzNTUxYmRiYTFkMDk4Y2EyZjQ1MGNmZDk5NDYgbGVnYWN5LXRydW5rCisxOTQ5NyAyMTcyNzc1ODM0NjhkMDU2ODg0ZTRmM2I1YWQ1YjU5ZmZmYzc5ZTIyIGxlZ2FjeS10cnVuaworMTk0OTggZDQ1NTliNzQ1N2EwZTMyYTMxNTI1ZGFhYjQyNjk5ODIxYzFkMGMwZSBsZWdhY3ktdHJ1bmsKKzE5NDk5IDJmYjY0OTgzOTY1ZmYyMjNhZWEyNTIzOTFmZjM0Y2ExYjUzYTRhZTggbGVnYWN5LXRydW5rCisxOTUwMCBlMzBjMTk3NTMyYWExMjZhNmRhYTRiMDdmYzY5ODM2YTA2MWJhYzkyIGxlZ2FjeS10cnVuaworMTk1MDEgNTlmNGY2OTYwMTAxNjhkYTE4YTliYTlhNzkwZDJmNGUyZTNmN2EzZCBsZWdhY3ktdHJ1bmsKKzE5NTAyIDc5NTY4YzBkM2U3N2E2OTM2MmIzNTc5Y2NmNWI0NzUwMzU2NTBhMWYgbGVnYWN5LXRydW5rCisxOTUwMyAxNDZkZmU3ZTAzMzgyY2ViMjE5MGNiMTljZTliN2Q2OTE5ZDMwZTdjIGxlZ2FjeS10cnVuaworMTk1MDQgN2QxZTdiNmVjODM5NDUzNDg2ZGIyYWNlODFlZjFmNjI1OTJjZmU5YyBsZWdhY3ktdHJ1bmsKKzE5NTA1IDM4ZjY5NzJkYzhiNDE3ZmYyYmFiOTg1MzIxNTVlYzhkOTFjYzYxNjQgbGVnYWN5LXRydW5rCisxOTUwNiAxNWYwMDY0Yzg0MDA5NmVmZGM5YWRjNTU2ZjE3MzVjNzU4YWExOTFkIGxlZ2FjeS10cnVuaworMTk1MDcgZjdhOTc3Njc3MWFiMGVmZTFkNjcyMDkyZTkwMDEwYmFhYTVkMjNlNSBsZWdhY3ktdHJ1bmsKKzE5NTA4IDdmMTI3YmUwN2M1MDk1Nzc4MWUxYzM4MWVkZjc3YjM3OTA5NmE2MTAgbGVnYWN5LXRydW5rCisxOTUwOSBkNmQ1YzExZjc1YTkyMmU5NWNlMmI5Mzc0Y2MwZWFiYmQ2MDFmODc4IGxlZ2FjeS10cnVuaworMTk1MTAgYjllNTQ4MWY2NDRjMzBhZjc0NjM0ZDZjN2U1ZDQ5YzEzNmYxNGFlMyBsZWdhY3ktdHJ1bmsKKzE5NTExIDcyOGMxMTU2MjE4NzJmMTcwMWNlZTNkY2ZlN2YzNTNiOGYzY2RjYzIgbGVnYWN5LXRydW5rCisxOTUxMiBhNTFiOTk2MWYzYmJiMGMwNjA1ZGE3ZTEyZDBlOWNiNGVmMDc5NDdhIGxlZ2FjeS10cnVuaworMTk1MTMgOGQ4NTA5NjE3ODc0MWY1OTQwODg3ODg4OGUyOGJkMjBmYTJjODgyYyBsZWdhY3ktdHJ1bmsKKzE5NTE0IGQzZThiODgwNjUxYjdkNDczNTRlOTg5OTFiMTMzZjEyYzRiMzIxOTIgbGVnYWN5LXRydW5rCisxOTUxNSA5MTUyMWM1MmIxZGI1NWFmYzZkNmZjY2E0MjA0ODM5YzM5YWE0ZmRmIGxlZ2FjeS10cnVuaworMTk1MTcgZGE5YTRhMTY5OGYxZjY4NGU3OTY5MWI5NjY0YjdjNjA3YmJlMWM5MiBsZWdhY3ktdHJ1bmsKKzE5NTE4IGI5ZmU4YmQ5ZTVmNGZiYjA2ZDI5OTY3YWIyZmU2YjBjMGRiZDY3ODUgbGVnYWN5LXRydW5rCisxOTUxOSA1OTIxYjEyOWYzNTA0ODQzNWMwNmVjNzQ5ZDlmOGQ0NzA2MTFhZmQ4IGxlZ2FjeS10cnVuaworMTk1MjAgMWQ3YWVkMDc2OTY0ODEyNmE1ZjYwNGM5M2MxODJmNzFkZjhiYjMwNSBsZWdhY3ktdHJ1bmsKKzE5NTIxIDdmOGU4MTdhYzQyM2M0NTY5Zjg5MTU2OGI3ZDEwMWE3ZTIwYzc5ZWMgbGVnYWN5LXRydW5rCisxOTUyMiA3OWQ1MzM5MzRhYzFiMzA5NWUwYzRmOWE0YjczMWUyMWMwZWZmZjI4IGxlZ2FjeS10cnVuaworMTk1MjMgMWE1YTQ0MTc3MmZmNjNhYTlmOTE4YzFiZTllYjU5YmIyYjA2YTFiYyBsZWdhY3ktdHJ1bmsKKzE5NTI0IGRlZWM2ZmE4MDQ3MTA4MzdkMTc2ODEyZGY4ZTk1YWQxOTMyODk1M2UgbGVnYWN5LXRydW5rCisxOTUyNSAwMDQ5Zjc3YjM2YzYyMzIzN2U3MWQyOTY5ZDFiZTE2NzdmZjA5ODdlIGxlZ2FjeS10cnVuaworMTk1MjYgNmFmNDE1ZjBjMDFlYjAwZDIzNzI0OTY1Y2UyMzllNzAyM2U2MTY3OSBsZWdhY3ktdHJ1bmsKKzE5NTI3IDg5YzFjY2VmNWNlODM2MGUzYjQ2NjQwM2EwM2Q3MTA0NWY1MjY2MTggbGVnYWN5LXRydW5rCisxOTUyOCA5NGEzODQ0M2Y5OWJiNTcwNTU1Y2IxNzFkNTQ1YTk5Mjk5YzUzNTVlIGxlZ2FjeS10cnVuaworMTk1MjkgNTc0NmQwYmY1ZjA0ZGY3ZjI1M2I5Y2IyMGY1NDY2MTU2ZjZkMjhjMyBsZWdhY3ktdHJ1bmsKKzE5NTMwIGRlMGU4NzUyZDViNzJjZTc0NTBjZjQ4NTUwYzM4M2IxMWEyZDMyMmUgbGVnYWN5LXRydW5rCisxOTUzMSBlOWZjYjQ2YzFmMmNhY2JjMzk3NDZkNWU3ZjU0ODM2YWRlZjYyMWRiIGxlZ2FjeS10cnVuaworMTk1MzIgNzI1MjM4MjkzODY5Y2M1YWM5ZjY2NWE3MGM3MTQ2M2FlN2VmMzc5OSBsZWdhY3ktdHJ1bmsKKzE5NTMzIDU3YTk3MjJjNTg4ZDRkYTJiOGE1YTBlODkxZjkyYmZkNTdjNWNkNjEgbGVnYWN5LXRydW5rCisxOTUzNCA5OTBmYTI1Y2RlMWNjZjE1NjhjODY5NDMwYThkZTY2M2VlZjIyYjAxIGxlZ2FjeS10cnVuaworMTk1MzUgYThhMDBkZTAyNGU3MzgwYTlmZTg0ZGNiZDcyNWYyYTdjYjU2YjlhZCBsZWdhY3ktdHJ1bmsKKzE5NTM2IDhiY2MxMGRiNTYyZTRmOWZmOGUyMmYyN2MxMzU4ZDBmZDdlMGQxYmEgbGVnYWN5LXRydW5rCisxOTUzNyAwZDNhZThmMDg0OWQ5MmE1Mzk3ZTFlNDhjYTg4ZTdiZDY2OTM0ZjY4IGxlZ2FjeS10cnVuaworMTk1MzggNWJjZjljNDliNmU3OGM0NWZiNmVhMGU3NzJjN2JhZjE5MjFiYjBjOCBsZWdhY3ktdHJ1bmsKKzE5NTM5IGY0ZTk3ZWMxZGM5YWI2MmU2MTUyZWZkY2EyODhjMjc0OWE2OWZmZjcgbGVnYWN5LXRydW5rCisxOTU0MCA5NjNmOTVlYjc2NDZkYWExODgxOGE0OTFmMzEyNjBlZTYyNDQzZDg2IGxlZ2FjeS10cnVuaworMTk1NDEgMjk0YmExNmIwZTg4YTQ3NjNkM2VhMDdiNTgxYTU0ZDRhNWVhODVhYyBsZWdhY3ktdHJ1bmsKKzE5NTQyIGI5NTVlNzQ5NTVkNTRjOTU4YTY5MjIyNzkxNzE4MjJmMGJkMTk4MzMgbGVnYWN5LXRydW5rCisxOTU0MyAwNmFkNTA1M2Y0MGEwNjJjOTA3Nzk3ZTUwM2MwYjEzNWJlNGZmODg5IGxlZ2FjeS10cnVuaworMTk1NDQgZGI0ZmM4MmFhNDRiYTliNTNiNjg0YTY4MGNmYjVhZmFhMTI1NTBjYiBsZWdhY3ktdHJ1bmsKKzE5NTQ1IDE3ZWQ2MWZkNWI2NTQwOTMzZjM1OTZjNzRhMzdjMGIwOGQwYTJhODEgbGVnYWN5LXRydW5rCisxOTU0NiAyNmFjYzI0NDVmMzczNzMyZjE3ZGQ1MTgyYWMwZjJlMWMwNjFhYTI5IGxlZ2FjeS10cnVuaworMTk1NDcgM2NiMDBjYmU3NDU1MDg0ZTcyMWU5MWNjYWE4ZDM1NTNmNjQ5YWMyMCBsZWdhY3ktdHJ1bmsKKzE5NTQ4IGQ5NGZlYTU3ODM0YzMzYTAxZGFiMDBjOTEzOGRjYjc1ODA3NTYxMDUgbGVnYWN5LXRydW5rCisxOTU0OSBmN2FlMGQ5MzdjZDA3NDMxYTMwMGM3MjMzMDlmZTgyNjIwYTM2NDE1IGxlZ2FjeS10cnVuaworMTk1NTAgYTZmMDgwZmU1MjUxMWY5Mjg2YWEzMzUyODcyZThkOTBmMWZmNDYwZSBsZWdhY3ktdHJ1bmsKKzE5NTUxIGEwYmFmNGNkODM1Y2YyZjQwZGI5MTU0NDY5MmNiNjkyYjA1ODRlNWMgbGVnYWN5LXRydW5rCisxOTU1MiAxMDJmZmUxNjExZTBmODQ3NDlkOGZkZmMwMmI4ZjhhZWQyY2EzYjg1IGxlZ2FjeS10cnVuaworMTk1NTMgNmViYjE0YjE0MWFkNTFiOWNjNGI4OGYyMTdiOGRiM2IxODNlZjA4OCBsZWdhY3ktdHJ1bmsKKzE5NTU0IDczNmJjZWVjYTNkYmQ2M2FmODMyODhkYjJiYmIxNzZmNzE3ZGE0ZjUgbGVnYWN5LXRydW5rCisxOTU1NSA0MTM0YjU5NzIyMTljZmJjOWVmZTYzYTc1NzMzYmI4MDU1ZjA5MzU1IGxlZ2FjeS10cnVuaworMTk1NTYgNjYyNjZjNDZjY2ZkY2Q2MmFhOTdhOGVjYjNmMmQ2ODdmNmE2MTJmNSBsZWdhY3ktdHJ1bmsKKzE5NTU3IDJhODZkNTE5ZjgwZTVlODg1MjEzN2NmOWRlYmM4MzU2MzdlNDNmZDMgbGVnYWN5LXRydW5rCisxOTU1OCBkZTVhOGRkMWM2ZjI0NzU2ZmE0M2E0MTYzYTBjN2YzMWNiOWM1ZTgxIGxlZ2FjeS10cnVuaworMTk1NTkgM2JkZDU2NWM3N2JkZGRkMjI4MDRmMDczZTE1OTdlZjJiNzVmZGFhYSBsZWdhY3ktdHJ1bmsKKzE5NTYwIGUxNGM1ZjM0ZmEwNTg1NmE1NDEyY2E4NWQwMzJhNDE5MmIzYTk0ZGEgbGVnYWN5LXRydW5rCisxOTU2MSA1NjQ5MjdjNTU3NDI1ZjhiZjU4Y2RiYWNkMzg2MmRhYjQxNWY5OTRjIGxlZ2FjeS10cnVuaworMTk1NjIgYzAyYTlkYjU2ZmUxNWQ1YjA1MzI2MDNhNDI1Y2Q5YWFmNzIyMWM1YyBsZWdhY3ktdHJ1bmsKKzE5NTYzIDFiNDAwYzg1NGEyYzJmZmU0MTg5ZDI4NGVlNmYyOTNkYjY0ZDhiOTQgbGVnYWN5LXRydW5rCisxOTU2NCA3MzM0YjJjZWRkYThlNzUwYmUyZWI1MzQ4ZDBiN2U3YzE5YzdhMGQzIGxlZ2FjeS10cnVuaworMTk1NjUgZDJhODQxNGExZWFiM2QxZTNkODVkMjhkNmM3NGUzNDJkNDllZmFhNCBsZWdhY3ktdHJ1bmsKKzE5NTY2IDYwYzkwZmY5YzJmNzhhZDZkOGU4MzhiMjM0YTA3MTgxMzQzYTg4YzYgbGVnYWN5LXRydW5rCisxOTU2NyBmOWY0YzIzM2VlMDM3Y2Q1MzRjNTY4Y2UxMDY1NzAyNWE0ODczZDI1IGxlZ2FjeS10cnVuaworMTk1NjggODE3MjkwNmM2ZGM4ZmIzNzg2MTU4OGJiYmMwZWE2ZTZhNWE0N2E5ZCBsZWdhY3ktdHJ1bmsKKzE5NTY5IDA0Njg1OTZlMzAxODc0MDA4ZDA3ZTZhN2E4YTM1ZTAxMGVlOGU4YzYgbGVnYWN5LXRydW5rCisxOTU3MCA5MzJhMWY4ZDkyZjcwOTE3MmMyN2Q2YTlmOGU0YjJjZDcyNThkYmJkIGxlZ2FjeS10cnVuaworMTk1NzEgNjE3Y2I0MGNiNzRiOGY3NDIwMDFkMTY3OTMzYmUyMTIzZWVmZmYzZCBsZWdhY3ktdHJ1bmsKKzE5NTcyIDk2OTZjOTVkMDliNzQyNGNkMTIzZDQwYmU4Zjk5N2FlMWI3YzAwZjEgbGVnYWN5LXRydW5rCisxOTU3MyA1Nzc5OWYwMTNhYWQyNTRhOGY4OWRmNmI2MTRhOGI0YmQ5NjBlODQ0IGxlZ2FjeS10cnVuaworMTk1NzQgMWNmMzZlYjVhMjVjMGY1NjAyZmNlMDczZmM0MzYxYzhjZDk4ZTc2OCBsZWdhY3ktdHJ1bmsKKzE5NTc1IDU4OTA4YmI0N2NjYWNhZDdhNjE3MGRkMGU4MTVkNzYzZWQwZGU4MTYgbGVnYWN5LXRydW5rCisxOTU3NiAyYzFmOGQzYmJhMmY4MWViYjUyN2I2NjRkNTIxOTA5NzYxZTk1OGFjIGxlZ2FjeS10cnVuaworMTk1NzcgNjM0MWY4ZDkwOWFjNWY1NmMxYzJmNzRkNmY5ZGEwNjIzOWI2NGQ5MyBsZWdhY3ktdHJ1bmsKKzE5NTc4IGU0YjQ3YjQzOTNjOGFkNGQ2YWNkMjVlMjhmODFiOTNmODQwMmEyNzcgbGVnYWN5LXRydW5rCisxOTU3OSA2ZDFmZDkyNDRkYWRhYWJlZjJhOWVlZWUyMTZjZTcxMTE2NWZjYjdiIGxlZ2FjeS10cnVuaworMTk1ODAgM2U5Mzk2YWM0YmEwN2U0ZGNkOTg2MDQ1NTlmOTY0YzE1MjQ0Mzc0OCBsZWdhY3ktdHJ1bmsKKzE5NTgxIGVmNjRkYzY4NTIwZmRiOTkyZmFlNTJkZjk0MzQ3ZDZiNWVkZmEwOWMgbGVnYWN5LXRydW5rCisxOTU4MiBhMWQ4YmI2ODY1OWE0NzQzN2VlZjcwZGY3ZGQyMzE0NDljMzA4NWUyIGxlZ2FjeS10cnVuaworMTk1ODMgMDFjMjQ3MGVlYjJlYTAzNDE1ODc2Y2EzN2M1NDZkZGZjM2JmN2Y5YSBsZWdhY3ktdHJ1bmsKKzE5NTg0IDg5YzEyNjg4N2RmMDkzZTBkMzdiNzU0OTAyYWU4M2FmYWI2Njg4NzYgbGVnYWN5LXRydW5rCisxOTU4NSA0MDdkNDAyMmNjOGMwNDI4YjE1NGZlOTZhNThlNTBkMDNlMWRjNDA1IGxlZ2FjeS10cnVuaworMTk1ODYgNGRiMGZkZGI2OTE3OGRiZmNmZDdiYTFhYWYzOTNkNzYwOTA0NzVjMCBsZWdhY3ktdHJ1bmsKKzE5NTg3IGNjMzM4YTVjMTZlNWM0MjAzZTRmZTMxZDE2NTE1ZjMzNWUxMTQ4NmUgbGVnYWN5LXRydW5rCisxOTU4OCA1OWYxYjU3YmM5MDk5OGYwNzQ5NzY4NmNhYzY2YTUyNTcyMjlkZjIzIGxlZ2FjeS10cnVuaworMTk1ODkgMTIwNjIxYmQzM2ZjYTU5YTEwMjZhMTZiNGJkYTViNDE2YjNjNjc1ZiBsZWdhY3ktdHJ1bmsKKzE5NTkwIGQxNzBjMWU3NzJjNTUzYTliNTg5NmI2YTRhMTRkZWY1ZDdlNDkzZDkgbGVnYWN5LXRydW5rCisxOTU5MSA1ODNhODEyYzQ1Yzg4NjEzNDU1NjdhNWNlN2NiOGMxYjc1ZDQzYWJiIGxlZ2FjeS10cnVuaworMTk1OTIgODAwYjAwNGFjYzcxNzgwZTZkOTkzZDMyYmY4MTQzNDNjYTkxNTkyNiBsZWdhY3ktdHJ1bmsKKzE5NTkzIDI1NmUxNTk5ZDhkOTZjM2JiZDc0N2JjMzYxZmY1YTBmMTQ2OWI0YzMgbGVnYWN5LXRydW5rCisxOTU5NCA3NDE0NWFiMWZkYzViZDlkZjUwM2ZhNjc1YjY0OTkyYmM2NjViM2Q1IGxlZ2FjeS10cnVuaworMTk1OTUgZTgxZGRhNWQzN2M0YjFiMDYzMDIwNjM5OGQ2YjUxZjQyNTBlOGUyZSBsZWdhY3ktdHJ1bmsKKzE5NTk2IDg2Yzc2ODNiNjA2YTkwYmVlOWNjOTA4NDBlYWI1ZWI2ODk0MjAyMTkgbGVnYWN5LXRydW5rCisxOTU5NyA4ZjAzNGJjZWU4NTZiYWRmMGY1NDY0ZjcyMzI3NjIyN2RlODA4YjE0IGxlZ2FjeS10cnVuaworMTk1OTggYzk5ZDE5YTk2ZTllYmJlY2Y2MmRjNzcxNTE2NmFlN2ZlZGI5YmMxOCBsZWdhY3ktdHJ1bmsKKzE5NTk5IDA1ZWMxYjA1NGI0ZDkzZmUwNmYyODllN2U4ZDM3M2NmZGQ3ZjZkMWQgbGVnYWN5LXRydW5rCisxOTYwMCA5Zjg2Y2JhNDc2NmI1NGVlOTUxNzAwZGQ4MGY1MGQ1Yjc4N2NiMmUwIGxlZ2FjeS10cnVuaworMTk2MDEgYjMyNzhiZjRmMDkxODIzNzEzY2ZjNDcxMTMzMjBjMmJiY2RhOWU3NCBsZWdhY3ktdHJ1bmsKKzE5NjAyIDM4NmNjNjk4YWVmOTU1NmY2ZGI0MGJiMWM0Mjc5ZWMxZWIyYzEzMDcgbGVnYWN5LXRydW5rCisxOTYwMyA4NDRmZGU2MDBhNjFkMzM4OWFhYjFiZjFkZWQ2ZjZhNDVjZjA2Y2ZjIGxlZ2FjeS10cnVuaworMTk2MDQgZGRhZmRiZjkxNDk4NWI4OTE0Y2Q4YTA0YTU3MDk5NGY2YTYzM2M3OCBsZWdhY3ktdHJ1bmsKKzE5NjA1IGMxMDA1NjEwMGVhNWRkMmZlODRkNTJjMmUzMjcwZDg5YmJlOWVlMGMgbGVnYWN5LXRydW5rCisxOTYwNiA4NDY2YmIzNzI4OWNkNmU3NjEwYWE4OGQzOGZlYTI0NzE0NTY4ZmJmIGxlZ2FjeS10cnVuaworMTk2MDcgZGI2MTg5NGIwZDZmYzNlNDAwZTQwMjQ0YzA1ZjhjOTg2ODQxMDhlZiBsZWdhY3ktdHJ1bmsKKzE5NjA4IDg1ZDJhZjk3MmU2MjMwNGMwYjkyMDYyMDk3NmRmYTNlZjc0YzJhMmQgbGVnYWN5LXRydW5rCisxOTYwOSAzNWY1N2M3MTcwYmQ0MGE3NWQ4ZGMzMmMyMTA1NGVmYjFiZjJhMzE1IGxlZ2FjeS10cnVuaworMTk2MTAgNGNhNjJhZmVjMDA0NTI1ZmMzY2I3MzRmYWFmNTY2MGNhMWU5MTI1MiBsZWdhY3ktdHJ1bmsKKzE5NjExIGI0MmIyMmE5MjI4Y2M4NjA1YTU5ZjkxNmIwNTQ5OWFiZDA4ZjA3MzEgbGVnYWN5LXRydW5rCisxOTYxMiBlMmEwZGI4MzllYjFhNDNiNDUyNjg2MzlkMmU1NWYyOTJjNDY3YzBmIGxlZ2FjeS10cnVuaworMTk2MTMgZTQ0NGE1MjcxMTgxMmNjY2M3MTBhOWFkYzAwMTU0MWM5ZGQzMWZiMiBsZWdhY3ktdHJ1bmsKKzE5NjE0IDk1MTg4OTNjYzhhN2Q2ZjVkMjI2ZWNkNzgwY2VjMjU0MmYzM2QwOWMgY25yaS0xNi1zdGFydAorMTk2MTUgMDZmNmYwZTFlMTA2MTZjOGI2NjM0ZDc3ZDFmOTk2Mzk5MTA1Y2MwMiBjbnJpLTE2LXN0YXJ0CisxOTYxNiAzYzBhMzUwMDIxMDhkMmUxMjA0MzFkNTRkNmMzY2JiZjUxNTdiNWFjIGNucmktMTYtc3RhcnQKKzE5NjE3IDZhNTViNjc3ZjUwOTY0NWYzYzg3YmJlYTk1MGNiMTk4MGVlYTE2MjAgY25yaS0xNi1zdGFydAorMTk2MTggNzgxNTkxOWUyYWY4YjYzZTBlYTc2MTY2ZGQzNWE5MGQwNTYzMWU3YyBsZWdhY3ktdHJ1bmsKKzE5NjE5IDkwZTkwYzkyMTk4YjdkYTYwOWU1NjBmYzNiM2ZjNzY3ZTUzNmNlYzMgbGVnYWN5LXRydW5rCisxOTYyMCBjYTFiZTdkMDA0MTNlOGFhYTVlMzljZjVhZGMzNDE2MGNhY2U3ODBmIGxlZ2FjeS10cnVuaworMTk2MjEgNWMzYWVkYzk2OWRhNDU2NzhjYzliMGVkMjBmMzkzNDg1ZThiMGU0NCBsZWdhY3ktdHJ1bmsKKzE5NjIyIDUxOTc3YWYyMzBmYTQ3YmVlOTQ4MTM3NjMxYzA1YjcxODI5MDcyZWQgbGVnYWN5LXRydW5rCisxOTYyMyAyM2M3YTAxMDhmNTkwY2ZjN2MxYjk4MWIwMmFlY2M1MzUxODU3YmUxIGxlZ2FjeS10cnVuaworMTk2MjQgMmZiNGQ2MjViZDM5ZjAxYTRhMmNiZjg3YmNkODliZTkyZDY1ZjBhMSBsZWdhY3ktdHJ1bmsKKzE5NjI1IDM0NDg1OTFlODI3NWU3YTc1YTQ3MmUwMjk1ZjRlZmM4MTUxN2NjOWIgbGVnYWN5LXRydW5rCisxOTYyNiBlMWZhOThmZDIzOWU3NWExM2YwOGY3NzVhODJhOWQzNTYyODRlNTA5IGxlZ2FjeS10cnVuaworMTk2MjcgODk5NjI4OGE4ODczYjFjNGU3ODE0YmJiMGE4ZWNkYTUyNDVmYjllZiBsZWdhY3ktdHJ1bmsKKzE5NjI4IDZjOTZlODMyOGQ1MzAxYjdiNmQ1YzE0MjFjOThkMTI2YTBiZTQ3ZDEgbGVnYWN5LXRydW5rCisxOTYyOSBhOGU1MWY2YjVjZmMwOTdjNWQ0ZmFiZDgyNDUyMTEzNWM1ZTQyODVmIGxlZ2FjeS10cnVuaworMTk2MzAgZmYxMjJjNDA0ZjY0MzFjNmY0NThhNGIxZmY3NzQ0ZDM5ODVkZmM5NCBsZWdhY3ktdHJ1bmsKKzE5NjMxIGRiNDhkMGIxM2IxZWQwMTIyMzcxOTA1NTgzOTRmMzc3Nzc1MzM0MzkgbGVnYWN5LXRydW5rCisxOTYzMiAyZjU4NWNiZTcxZGE1OWRlMzk3YTc3YzBhODVkNzA4YjVhMzEwMzQ3IGxlZ2FjeS10cnVuaworMTk2MzMgYTdjNTE0ZTE1MDAzNjcwYWFiOTFmY2M1OWQwNzNmZmEzNTMwNjgxMiBsZWdhY3ktdHJ1bmsKKzE5NjM0IGE4MDRjOTFjMTgyZTFjMTVlMTc5NmIxNTFmYzBmMDhjZDI3ZjM2NmYgY25yaS0xNi1zdGFydAorMTk2MzUgMGEzOGY0ZDk2NjdlY2VmZDlhMThmMWY2ODU4MWFiNjM3ZDYxOWUwNyBjbnJpLTE2LXN0YXJ0CisxOTYzNiBmNGYyODYwZDNhNWYzZTA5OThjOGNkM2E2ZmQyZmM2MDA2MjBkZTA3IGNucmktMTYtc3RhcnQKKzE5NjM3IGI0ZTQyZDI5OTYzZGQ0Y2JkMmQyYzU2ZTkwZTgyOTFkYjIyZjJlZmQgcjE2MS1icmFuY2gKKzE5NjM3IDdlZTM3OGQ1YTQxZDJkODMxNmVlMzI2ZjgxODk5MjQxOWE0ODA0ZTIgcjE2MS1icmFuY2gKKzE5NjM5IDYzNDhjZDQ1OWVlNDllM2U1NTdlN2Y1YjUxMjdlMDc4YjMwZjdiMmIgbGVnYWN5LXRydW5rCisxOTY0MCA2ODBjODg1ZGZhY2U5MWI5NDYxNjJlYjU2MjJmY2YzY2U2ZTE1OTVlIGxlZ2FjeS10cnVuaworMTk2NDEgYjZhNTJlNDM4MzQ0MWY1YTMzMTQwMWJiYmQyMmIzZjk5ZGUxMzMzNCBsZWdhY3ktdHJ1bmsKKzE5NjQyIGQ0NDZlNGVjOWI3YjM5NzcwY2ZmN2ZhOTI5ZTRmNjliMzA0NjE4YTUgbGVnYWN5LXRydW5rCisxOTY0MyA5MDUwMTFlODc0MGM1NDU5Y2Y4YmIxYjg3OTIzYTA1ZjRkZDdlYmY5IGxlZ2FjeS10cnVuaworMTk2NDQgMTRhZmZiZDAzNzUwNmM0ZDk4YmM5ODA3NDBlMDJhMDY1NDYxYTlhOCBsZWdhY3ktdHJ1bmsKKzE5NjQ1IGIyMzUxNjBmMTM0NjcwODUxOWNlMjVmNTJhMTAwOGJmNjM1MTA4ZGIgbGVnYWN5LXRydW5rCisxOTY0NiBlNGQ5YmEwYWMwYjJjYTE0Y2IzNDE4ZDI3NmNkNDdjYTcwZmNmNzdlIGxlZ2FjeS10cnVuaworMTk2NDcgNjdlZDhhNjkwNWMzMzlkYThlNWE5YTE4OTFmYzYwNjVhNDRlNWJjMyBsZWdhY3ktdHJ1bmsKKzE5NjQ4IDM4MzlmMGFhMWU3Y2NlY2U4YTEyMDg3MzEzZjQ5MmYzNzc5ZWI3NDkgbGVnYWN5LXRydW5rCisxOTY0OSBhNDE4MmM2NzljNjFjNDQ4MjUyNDBmNjNjNGVhNDJkZmY1M2MzN2FjIGxlZ2FjeS10cnVuaworMTk2NTAgMjkxNWViMDdiZDI1YTM0YjlmZTg0ZWYzYzc5MTBhODE4ZWQwNjQ1OSBsZWdhY3ktdHJ1bmsKKzE5NjUxIGI5ZTVjMTIyMjEyZWYzNDc4NmIxMDliNTI4NDY5ODIxMWI3Y2Y3ZDggbGVnYWN5LXRydW5rCisxOTY1MiA2OGJkOTZlNDI2ZTMyYmIxYjk5MmJhMTFiZjEwMTJhZGZlOWI0Y2Q0IGxlZ2FjeS10cnVuaworMTk2NTMgZWIyOTkyNGEzMzcwZTFmYTgyMGFhYmI4MjJkYWVjNTY5NWM0NzNjMSBsZWdhY3ktdHJ1bmsKKzE5NjU0IGJmOGQyYjkyZWEwZWYzMjUxY2NhYjZjMzNiMGNhYzEwYzkyYjA4ZDYgbGVnYWN5LXRydW5rCisxOTY1NSA1YTEyMzBkZTQzNmE4NjA1N2Y3ZmQ0NTgyODMyMWY2MzFlNjJjODRkIGxlZ2FjeS10cnVuaworMTk2NTYgNTg2NGE5YzU4YzgxYzIyODFhNjE3ODU0ZDE5ZDdjZTRhOTExNjlhNSBsZWdhY3ktdHJ1bmsKKzE5NjU3IDRmZWVhOTliZTc3N2Y5NjI3YjQwZDg2OTgyYTcwYmY4MmFkN2NhNmMgbGVnYWN5LXRydW5rCisxOTY1OCA2MGZkOWQ0NTQyMDZkYTU3ZWY1ZjIzOTkyMjc5ZTM2ZDZhYzJlM2VkIGxlZ2FjeS10cnVuaworMTk2NTkgOTk3NzgwNmI4NjE3NGQ5NmRiNzc2MTMzOGU2N2E0YmM3NDI0NWM5MCBsZWdhY3ktdHJ1bmsKKzE5NjYwIDI2ZDNlOGVhY2VkZmFkZWU2YjkwOWE1ZTE0ZjRkYzRhNDJlNzc2MTMgbGVnYWN5LXRydW5rCisxOTY2MSA5NTE5Y2FkNmJmOWQ0YzUzYjZiMTgzZTM2MGQ0ZDIwYWM3ZjBhMTgyIGxlZ2FjeS10cnVuaworMTk2NjIgMDBmZWE0MTczMGNmNDNjNWNjODE4ODlmMmQ4NzIyZGQzNTUzNDBiZiBsZWdhY3ktdHJ1bmsKKzE5NjYzIGU5OTFkODg0M2FiNDdlOTE2YjljNGI0ZjZhM2E5MmU4MjE0ZWM2MWQgbGVnYWN5LXRydW5rCisxOTY2NCA2N2JhZDlmMjBiMjljMTc5M2VlOWFjNzFmY2ZlOWJiMjUzMzc4NzFlIGxlZ2FjeS10cnVuaworMTk2NjUgYTg5Zjc4M2MxMzNhNTAyODg4ZmU3MGYzMmU3YzE0MzE1Njk2MDZkYyBsZWdhY3ktdHJ1bmsKKzE5NjY2IGRhZTM5ZWJiYzAwNDFjYzE1YmUyY2ZiNWI4NjNhNzY4ZTE5M2JlNTQgbGVnYWN5LXRydW5rCisxOTY2NyA3ZjhmN2JlYmQxZjY0Njc2NzlmNzJlYTI5OGEzOTExYWQxOGZkZjljIGxlZ2FjeS10cnVuaworMTk2NjggMjlhYTgzMmI4Nzg3NDc4NjZkNzhmOTgwMmRjYWRmYzA2NGYzZmJkNyBsZWdhY3ktdHJ1bmsKKzE5NjY5IGI4MDI0M2Y3Zjk3Y2JlNmE3ODY0MDVkYzg5YzU5YTE4NDhlZGY4YzggbGVnYWN5LXRydW5rCisxOTY3MCBhYzE4MGM5ODIyOTUwMDFhN2U0NjYyNTQwY2I4ZTQzYjVjNjE1NGQ2IGxlZ2FjeS10cnVuaworMTk2NzEgM2MyMTQyZjA3NmI0NmZlMmFiMmJkMDQ2NWY5NTVjNGZkYjQ3YWJhNiBsZWdhY3ktdHJ1bmsKKzE5NjcyIDI1OGRjYWZlMmQwYjhkYzZiY2VjMTZlMmEyMzJkOTE4NzdhMDI2OGUgbGVnYWN5LXRydW5rCisxOTY3MyAwOGQ5MzcxMDdmZTZjYzIwOTViMThhNjU0OTNjOGRkMjRkOTI0ZjVkIGxlZ2FjeS10cnVuaworMTk2NzQgZTAwNjJlODlkOGY0MjdhNWZhODhlNTBmZTUxMzVhNmU5MmJmZWQwYSBsZWdhY3ktdHJ1bmsKKzE5Njc1IDJjOTE4NmU0MGIzMDc3OGZkMDcwMWIxNGE3MzQxYjJhYWYxMTYzYWEgbGVnYWN5LXRydW5rCisxOTY3NiBhODY5NTA1MTk1ODYzYzg3YWVmMjAzNzMyY2ZkZWVlYzEzYWY1MDU3IGxlZ2FjeS10cnVuaworMTk2NzcgNDQ0NThmZTk0N2RkYjA1NTQ1Y2Y4YTg0NmZlOGIyNTc4Y2JiNjU5YyBsZWdhY3ktdHJ1bmsKKzE5Njc4IDgxNTY4NzlmZTYwZDFlMmRhYjMwNzk2YjkyNDg5ODZlZDMxOTIwNGEgbGVnYWN5LXRydW5rCisxOTY3OSA4Mzg5NWI0Y2UwYmJmMWVlZjVlNDcwZjNjNmNkYmUzNDZkM2VmZDdhIGxlZ2FjeS10cnVuaworMTk2ODAgYjI1ODVkOGZkYjhiYmY0NDIyNWNmNzJkZjYxZGY4OTUxMTQzZWEzNyBsZWdhY3ktdHJ1bmsKKzE5NjgxIDc0ZmQxOTU5Y2Y0NGVlMmIzZmMwMjE2ZDAyMzcwNmQxNWIzOGZiMmQgbGVnYWN5LXRydW5rCisxOTY4MiBhZTdkNzIwN2RhNDg4MDM2ZTJmNzE4ZmRhYThiZTlmNzZkNzk4N2Q5IGxlZ2FjeS10cnVuaworMTk2ODMgOGJmMGM0OWZjZTEwMWFiYTkxNzk2YjRlMDQxODhhMTA4MjVlYzAzMyBsZWdhY3ktdHJ1bmsKKzE5Njg0IDUwZDkxNTllZGFhYjY3NmJiZmYyZWU3NzRlMmIyNmU0M2Y1ZjM5YzkgbGVnYWN5LXRydW5rCisxOTY4NSAxZDFiZjY4MTNlZTU2OTg3OWRjNTA3NjkzMTlmOWIzZGNlNmM4MGFkIGxlZ2FjeS10cnVuaworMTk2ODYgNTgwYWQ2ODU0NDVmNTE4M2E2MTYxYTVkY2M2MjQ5NDNmM2U3YTUzNyBsZWdhY3ktdHJ1bmsKKzE5Njg3IGMzZmIwNDRkN2U2ZjFhYzhkNjA2MTk2M2E3YmJhYjU1MjI4Yjg2NzAgbGVnYWN5LXRydW5rCisxOTY4OCA0ZWFkZGY0NzhlOTdhNDYzYjc3YTk5MTdhNzNmNmFhMGZhMDllOGY0IGxlZ2FjeS10cnVuaworMTk2ODkgYjJjZmY1NzA1Nzc1ZTI2OTkzOThjZGRjNzkxNjEwNTExMzEyNmZhMyBsZWdhY3ktdHJ1bmsKKzE5NjkwIDc2NTgwMWRlMTUxMjA4M2Q2YTQ5NjBjMGFiYmNkM2ZlYzVlNTkwYTAgbGVnYWN5LXRydW5rCisxOTY5MSBmZmNiM2NmZjk0Mzk0ZDA1MjMyNjMxNTBhNTUyNjRmZDFmZDFmMzMwIGxlZ2FjeS10cnVuaworMTk2OTMgZmQyYTg2OTc2OWIyNDliODc2NzMxMzlkOWUxNjRlZTE3MjAyODU5NCBsZWdhY3ktdHJ1bmsKKzE5Njk0IDUzZThlYmQxMTYyMGQ0NWMwOGE3Mjg0ZDczMTU1ODI1ZGJhNDY1NGMgbGVnYWN5LXRydW5rCisxOTY5NSBmNTRiYWU4NmEyYzZiY2M2MTZiZTBjZTJlZTdjODExZjcwZTdjZDk0IGxlZ2FjeS10cnVuaworMTk2OTYgZjc5NmE4NzcxMTdlNzE1YjM0MWYxYmE3ZTAwZGMwNDI0ZTIwM2YzZSBsZWdhY3ktdHJ1bmsKKzE5Njk3IDBmMGVmYzJkMTJmMTQzYTY4NmVjZTc2NjhjMzVjMTc4NTM5NWFlZjUgbGVnYWN5LXRydW5rCisxOTY5OCBhY2JlNzRmM2E3ODZmMmY0NTc5YzZmNzg0M2M2YzJjN2UzOGQxNmVjIGxlZ2FjeS10cnVuaworMTk2OTkgZDRhMzE1ZTQwOTRjNDg3MWRmNDMzZDBmNmY2NjFiMjFiYjAyMDllNiBsZWdhY3ktdHJ1bmsKKzE5NzAwIDUxY2Y0NTFmYWFlNDYwMTk4Zjk3MDQ2YzBiZjU0MDUwYmMwMWNkZTAgbGVnYWN5LXRydW5rCisxOTcwMSBhOTU2OTM0OTFlY2FhZjcxMmRlYjc4ODY3MmU3ZmEwZWNjM2YyNDQ1IGxlZ2FjeS10cnVuaworMTk3MDIgY2U0NzQ5OGEzMTU4NTk3M2JhN2QzYzk1NWYzMjc5ODA0YmQ5OGFjMyBsZWdhY3ktdHJ1bmsKKzE5NzAzIDNiMDUyMTJjMTYxNjAyNTU3MDM4YWM4ODgwZTY0ZjhiMmQwYzZjZTEgbGVnYWN5LXRydW5rCisxOTcwNCA2NzMyOTA1Njg2ZDQwZTgxY2JmMDgxZDI5ZDhhZTdkM2FmMDFlZTg4IGxlZ2FjeS10cnVuaworMTk3MDUgZjUzNzBlMWUyMzkyZTZlNDJhZDQzOWE5ZDYxYTU5ZTA1ZDFkMWNmNSBsZWdhY3ktdHJ1bmsKKzE5NzA2IDI3ZjA0ZDcxNGVjYmM1MzZjZTdhZmRmMjNlYWUxZmQyNmI1YTNlMTkgbGVnYWN5LXRydW5rCisxOTcwNyBiNDYzYWNkNmRhMjIyOTllZDFhMDcwZmU4ZjJiYmI3Y2NmMjllZDJhIGxlZ2FjeS10cnVuaworMTk3MDggYmJkZWI2ZDRkZWExNTJmYzM2YTUxOGFhMjk2ZjljYzdmMWZkMzEyMiBsZWdhY3ktdHJ1bmsKKzE5NzA5IDUyZmUzNzdmMDdmMmNlMTYwYjAzMjVmMGFlYzIyNDA1NzM2ZThmOGQgbGVnYWN5LXRydW5rCisxOTcxMCA1OTAyYjU3OTRhMTdlYjdmNzMwZmYzODZmMDIwMmNjYjQzZjNmOTM2IGxlZ2FjeS10cnVuaworMTk3MTEgZjI5Yzc2Njg2NGNiNWEzODhmMzQyNzdlNWI5N2NmOGVkMjhhNjA4MSBsZWdhY3ktdHJ1bmsKKzE5NzEyIDBlNmEzZGE0Zjk1NjEzMDUyMTY2NWFiNjBhOGNjYmIxZDk4NmZiYTMgbGVnYWN5LXRydW5rCisxOTcxMyAwOWY2YzEzNzIwNTY5OTM3MDg4NmVmNmM3YzY2ZjFhYzc5YjU2Njc4IGxlZ2FjeS10cnVuaworMTk3MTQgZTFiMWU2OGNiZDhjMTViODFjZTkyMWU0ZGRmNmZlODhkMDMxNDY4MyBsZWdhY3ktdHJ1bmsKKzE5NzE1IDk1MGZjMjI2MWRhNDYxYTEyODg5OWMyZTRlMDFmOWM3NGQyMTM5YTYgbGVnYWN5LXRydW5rCisxOTcxNiAzZDI5NjkwYTI0ZTg5NTUwNjRkMDczOWQ3ZTMyM2NkMjcwODg1MzQxIGxlZ2FjeS10cnVuaworMTk3MTcgNzZhNjg0ZmUzZjdmYzVkODM5MGRhMjRhMDIzNzg3Y2M4OTJhZjhlMyBsZWdhY3ktdHJ1bmsKKzE5NzE4IDMyNmE0ZGNiY2QyMmE3NjZmMzk2ZTQxMDRhYzE3N2FhZjc0ZjVlMDIgbGVnYWN5LXRydW5rCisxOTcxOSA4MTU2ZGViMGU2MmRlNWUxMjE1OTdhODk2YTVhYjgyNTA1OWRhZGM4IGxlZ2FjeS10cnVuaworMTk3MjAgMDlkY2Y1ZWJjZDgwMzJmYzliZTMwNzRjYzk1NzUzYWExZjlhM2NiZiBsZWdhY3ktdHJ1bmsKKzE5NzIxIDJkMmVlMzBmNDNlYWRkNWRjZDJkN2FjMDg3YWVjZDk4YzFlNzUwMzYgbGVnYWN5LXRydW5rCisxOTcyMiA5NWE3YzU4OThmYWExZGE3YTBjNGI2ZDM1M2ExZjgwMjhmYzU5NjYwIGxlZ2FjeS10cnVuaworMTk3MjMgNDg5NGJhM2VkZDBhNTM0NGY0YTE5ZjEyZTFmMzJmOGRjMTFmZTkyYiBsZWdhY3ktdHJ1bmsKKzE5NzI0IGE4NzcxYTUyYWJiMzdmZTA3YzljNWVlY2UxZTViODVmMjU2Y2M1NTkgbGVnYWN5LXRydW5rCisxOTcyNSAyZDRkYTZjZmVlNjE4MjlmODNiNGQ2ZGQ5ZGIzMjcyYTA0YzY3ZDlmIGxlZ2FjeS10cnVuaworMTk3MjYgZTVmMmFiODExZWMzZDgxOGJkNDY3YzY1Y2E4M2NhNmZkZjEwZjk4NSBsZWdhY3ktdHJ1bmsKKzE5NzI3IDg0Nzg0NDI0OGM2ZjkyNzcyOTY4YmU5NGM5ZjMwMzc5ZDEzNzUxN2IgbGVnYWN5LXRydW5rCisxOTcyOCAwNTc4NWJkZjI4OWNkMDYwOGEzMTUyYzFmZDViOTdlZDFhNjJiMDJjIGxlZ2FjeS10cnVuaworMTk3MjkgYmM4OWYxMTYxNjBiOTc0YWMyNjg4ODUzYTkzZDFmZDk4YmY2ODE2OSBsZWdhY3ktdHJ1bmsKKzE5NzMwIGVjOTA4M2FjMjZkZjdkZGMxYTdiYmJmN2I3YWI0N2FkMjMxNDBiM2MgbGVnYWN5LXRydW5rCisxOTczMSAyNmNlNmVmYzk3NDQyNzlhYzY3ZmJjMWJiMTk2ODVkZjk0YWJhMTljIGxlZ2FjeS10cnVuaworMTk3MzIgYzU1NzgwODE1YTZlNWEzNWQzM2FmMGE2NmI2YzA2NDQ4MGMwNWNhMiBsZWdhY3ktdHJ1bmsKKzE5NzMzIGIwYWFmOGY4NWQxMjhlMjQwYTYyZDg5NDEzN2FkMTZjNjZjMzE5M2QgbGVnYWN5LXRydW5rCisxOTczNCA4ZDdmNzJjYzJlY2M4MTQ1NGM0OTFkNjY5YmMwM2I4NThhOWMyODQwIGxlZ2FjeS10cnVuaworMTk3MzUgY2Q0MDg1Y2VlMzA5M2FhNWY0MTAyOTJmMzY4YWFhNmFlZmI3OGY3MCBsZWdhY3ktdHJ1bmsKKzE5NzM2IDlmYTIwMDk4MjU4MzNjODE4NjE4NTQ1ZjU2YmYzYzdmNjVlMmJlZjQgbGVnYWN5LXRydW5rCisxOTczNyA3N2E1NDcwMjk5ZGJlNGQyN2U0M2JhYzUxNDZkYmI3YmFiYjVkOTQ5IGxlZ2FjeS10cnVuaworMTk3MzggMTNjZGJmYjU5MWE0NzQzYTE3NTBiOWYzNGIxM2M0ZDYwMGNkOTE0MCBsZWdhY3ktdHJ1bmsKKzE5NzM5IGQwNTJkZGRiZmQ0NDUwYTExOTM1ZDIwMDA3Njc5ZThiNWFmMjg1M2QgbGVnYWN5LXRydW5rCisxOTc0MCAyNTE0ZmNmYTBmMDgyNTRmZjM0NWNmNWQyNDIwOTNjMzQxNTlmYzYyIGxlZ2FjeS10cnVuaworMTk3NDEgM2E0MTFkNDFlZWI0ZmYwNzA0ZDJlYjJiNDVmMWJlZWYzY2ZjZGU1NSBsZWdhY3ktdHJ1bmsKKzE5NzQyIDc5NzZjZjdmZDE5NjgzYjU4YTQ0ZTRjNjQzMWZhMjk1NmE2OThlYWEgbGVnYWN5LXRydW5rCisxOTc0MyA3ZGM2NmQ1YjEwMGVlYWZmMDljNTI0ZTg4NmY0MGExOTdlOGUxMDZiIGxlZ2FjeS10cnVuaworMTk3NDQgNDEyNjgwM2UxYTg1ZGNhZmRkZWExZWI2ZjU4NjU3MThkYTdkMmNiYiBsZWdhY3ktdHJ1bmsKKzE5NzQ1IGYzOTllNmE4OGY2NTg0OTU4MTYyMWM3NjFlMzgzNmY5OGM0MGIzMjcgbGVnYWN5LXRydW5rCisxOTc0NiBkNjc1ZDc1YWY4Mzk1ZWI4NGFlOGYzMmFiMWNlZDgwOTdkZWUxMzllIGxlZ2FjeS10cnVuaworMTk3NDcgNTI4MGU4NDM5ZDU1NjM4NDI5NDA0NTRiYTE3ZjdkNDlmOTBkMjIzYSBsZWdhY3ktdHJ1bmsKKzE5NzQ4IDlkMDE4YTNkNzk0NmFhNzFkMTk3NTk2MGUwNjBmN2M5NDA1YTY0N2IgbGVnYWN5LXRydW5rCisxOTc0OSA3OWJiZjdhZDBmYzE3OWIyNmM0ZGE0MzZlMDgyM2MxMjVlZGFjMjBiIGxlZ2FjeS10cnVuaworMTk3NTAgMTBiODQwNjBiN2YzOWM2NzVjZjhlZDlkODZiMmM3NDU1ZjNmZDZjMiBsZWdhY3ktdHJ1bmsKKzE5NzUxIDhkNzQ4NmE4ZDY5YWMwYjFhNWJjY2M4OWRlYzMwN2UzNjZhOTFhNzUgbGVnYWN5LXRydW5rCisxOTc1MiAzMGJhODgzNzY0ZWJiNGUxOTU0ZjYxYTcyOWMxZGM4M2RiMmI3YWY2IGxlZ2FjeS10cnVuaworMTk3NTMgMWNmNTI1MzZjMzgxZWQwZGMzMWI1YzZkYWVjNmZmYjZiMjY1OGEyYiBsZWdhY3ktdHJ1bmsKKzE5NzU0IGFiYWVhNDQzZTI4YzJmY2FiOTQxNGE0N2EyNmYxNjY2NTliMmM2YzUgbGVnYWN5LXRydW5rCisxOTc1NSBiZGNkNzk4NzM5MjRjZTY0MmIwYWMzZGJiMzA5NDVjZDk2ODVmNDlkIGxlZ2FjeS10cnVuaworMTk3NTYgODU5ODI5Mzg0NjYzYjM2ZDkwZjk0YjkwYTg4MWU2ZGZlM2ExMThhMCBsZWdhY3ktdHJ1bmsKKzE5NzU3IGFkNzM0MzczN2FlZTllMTJlZTc0NjJlOWEyYmE2ZDE4NjdjMWRiNmUgbGVnYWN5LXRydW5rCisxOTc1OCA3YjViNTc1NmIyY2FkMGUxZjE0ZTIzMzhhZGIwZmYyN2ViMmJhYTdiIGxlZ2FjeS10cnVuaworMTk3NTkgMWNlNzUxZmE2N2Q4MDZlZTdiNTQ5MjcwY2E2ZGY5MzcyNjU5OTIwMSBsZWdhY3ktdHJ1bmsKKzE5NzYwIGQzZjY0NjQwNGE0MzU3MmE1NmIwNDFjNzUxZGU4NzZjYjBjZTZjNzQgbGVnYWN5LXRydW5rCisxOTc2MSA2OGNlMzI4NjE2MjZmOGU2NDMzNTZmYzhlOWIxYzBmNWEzZTIwZTI1IGxlZ2FjeS10cnVuaworMTk3NjIgMTRkYmRlMWVjZGVhYjljMzM2Nzc1ODIwOTZkZTZjOTEwMjIzMjIyYiBsZWdhY3ktdHJ1bmsKKzE5NzYzIGZjZmI0NDJkN2IzNGUyOTY1MzA1OTRkZmMxNDY3ZmFlNmNkYzY3NzMgbGVnYWN5LXRydW5rCisxOTc2NCAwZmViNjM0OTAwOTM1YWE2YjM3NzRhMDRjZjkzYzQ0Yjc1N2ZlMWNmIGxlZ2FjeS10cnVuaworMTk3NjUgZjI4N2M2ODRlMDRjNDVlNjgwMWU5YWIxOWY2N2Y5MmU3ZDI5MWQwYyBsZWdhY3ktdHJ1bmsKKzE5NzY2IDgwNmM2YWUyMzEwMzI0NzU1NTdjMDg3ODc2NDUwODkwNjgxMjU3MmMgbGVnYWN5LXRydW5rCisxOTc2NyBmMjdkMzI5OWRmMzkwNjIwNmE5ZWNmZWYwYThlZjA5Y2EyNzllZjllIGxlZ2FjeS10cnVuaworMTk3NjggZjFjOGVhOTJlZTg1MmVlNGE3YWJjZjE5YzgwZDc1NjMwYjRkNjQ3ZiBsZWdhY3ktdHJ1bmsKKzE5NzY5IGIzZDUwNGJkZDk3OWZhMzZlNDBhNjEyNGI0MGFkZDdlNjQxMjk2YmMgbGVnYWN5LXRydW5rCisxOTc3MCA4YWVjZGIyMjM0ODgxNzMwYTFkODExNDQ4YWJlMjM2MTdlN2M3ZDdhIGxlZ2FjeS10cnVuaworMTk3NzEgZmE4NGY5ZjQxMDkyMzExNmIxY2Q1Nzg3NzFlMDUwODRkOWU5ZDFlZCBsZWdhY3ktdHJ1bmsKKzE5NzcyIDc0YTlkMGE0MjMxYTVlYjBhMWIzODY0YjZlMTQyZjVlMDZiZjFmNDggbGVnYWN5LXRydW5rCisxOTc3MyBkY2VhMDkzODgzMzJjYWI4NTcyOTM0M2E4M2Y3NTI3OTdiYWUwNmUyIGxlZ2FjeS10cnVuaworMTk3NzQgMzIwZmE1MGExYTdkMjU1NjE4M2QxMTg2ZWUwZmExMDBmYjk2NDNiZSBsZWdhY3ktdHJ1bmsKKzE5Nzc1IDhkMWU4NDRmYmIxYWI1YWYwY2IwMTc2OTk1YWNkOTVlZjk2YzJkNzEgbGVnYWN5LXRydW5rCisxOTc3NiA1NzJiNjU0YmY0ZWQ1NGIwN2NlMzA2ZGYzNzIyNTAwYjllYzM0NjhmIGxlZ2FjeS10cnVuaworMTk3NzcgZjU1ZjM1ZGM1MzIwMWE1NDlkNGNjODk3OTYwOGZhZDAzZjk1NWU0NiBsZWdhY3ktdHJ1bmsKKzE5Nzc4IGU4Njg3NWYwNjliMTZlMzRkMDk2YjAzNzNiN2I0OGU4Njc3MjQ0OGIgbGVnYWN5LXRydW5rCisxOTc3OSA0MWYzZjRiMmZlNGE2NzYyYWIwMTA4NWJkZDc1OWRhOGZmNjE0ZTFjIGxlZ2FjeS10cnVuaworMTk3ODAgMGYwNzcwYTc5M2FjZDJmYjg1Yjk4OTRiOTIzY2ExZDZjMTExOTE3ZiBsZWdhY3ktdHJ1bmsKKzE5NzgxIGI3MzI0OWM4ZGUxODAxNjkzZDM2NGQ5OTEzMjZjMDI5ZDQ0ZjExZTggbGVnYWN5LXRydW5rCisxOTc4MiBmMWQ0NWQ2YzEyYTI4YzIyYTM5YThhYzE0ZmM3MzA4OWJjMTYxMWE5IGxlZ2FjeS10cnVuaworMTk3ODMgNmM5M2YxOGQzMjMzNDVlYWY2ZWI3ZjM3NDRkOGZkMTdlOGU1ZmNkMyBsZWdhY3ktdHJ1bmsKKzE5Nzg0IGZhODkwNmVjZGI3MDI0NTk1MGQ4ZWZkNzNlM2E2MGU1NjZmZDg0NWQgbGVnYWN5LXRydW5rCisxOTc4NSAyMDNhZDZmM2VmOGNlMTJlMmJmYTE5MmJjYmRmMzk5YTk5YTZlNGNjIGxlZ2FjeS10cnVuaworMTk3ODYgZGE2MzhjNDg0ZDA4YzYzZDY1NjU2ZWE1OThlNWRhY2NhMGIwMzA5NyBsZWdhY3ktdHJ1bmsKKzE5Nzg3IGE0NmExMzIwMWVlYjg4NDRjMTM5MmQ3MTJmMjBlNjQ1YWEzZTFmOTAgbGVnYWN5LXRydW5rCisxOTc4OCBmMDdmYTdmNTI2MmE5MmZkYzQ1M2U3YmQ4YTZjNjA0ZGY4NTMxYTM3IGxlZ2FjeS10cnVuaworMTk3ODkgZjI5MDI2NTkzNzRhYzg4ZTgyNGIyYjJhMWJiNDg3NWY3YzY5NmMxYiBsZWdhY3ktdHJ1bmsKKzE5NzkwIDQ5MzQxMDIyMjcxOTJlY2I2N2UyMmM3Y2E3OWM3MzUxNjQyMDYwZmUgbGVnYWN5LXRydW5rCisxOTc5MSBiMDQ1NmQzYTBmMWYxZDNlYzYzMmRmMTZiMGIzYWViMGZkZDg5MzM5IGxlZ2FjeS10cnVuaworMTk3OTIgYmIyNWYyYjdiZGFlMDNiOGM0MTYxZmVmYTM3ZjBkOTZhOGMwNTUzOCBsZWdhY3ktdHJ1bmsKKzE5NzkzIDZkNTk4MTdjZjc5MjhlYmViNTM5NmJlNDlmNGJmZDExNmIzOGVjNGUgbGVnYWN5LXRydW5rCisxOTc5NCA0OTFmYjQ5YjQ2ZTZmZGVkOTY1ODU4MmE5YjRmODllYTVmY2RlMmNmIGxlZ2FjeS10cnVuaworMTk3OTUgMDA0OTg1YTVhZDVhODA2M2E1OWE4NTE4MDk4ZDU5NzIyOTE2OTY5YiBsZWdhY3ktdHJ1bmsKKzE5Nzk2IDQxNTIwNWIyY2RiMmRkY2YyNTFhZjhhNDRmOTZiZjQ5ODcxOThmNTYgbGVnYWN5LXRydW5rCisxOTc5NyBiNWRiMjNjN2E4MDRhMTkyYmFiZGIwY2ZlYWYyZWMyY2M3OTk0MGMwIGxlZ2FjeS10cnVuaworMTk3OTggNWFiNGRhNmFkNGZjN2JjODg0MGM2YmRmNDZiNzZhZDRlYzY5ZGI5YiBsZWdhY3ktdHJ1bmsKKzE5Nzk5IGIwYTk4MmM5MWFmMDEzM2YzNjVhZDRmMjYwYWI2NDY3NTg4M2JkMzIgbGVnYWN5LXRydW5rCisxOTgwMCBmYWE3YWFlYjAyMTBkZjkxOGMwY2YyYjhlYTE0ZTMzYTYzYTNlZjc5IGxlZ2FjeS10cnVuaworMTk4MDEgM2M2NWJhYmYzMjJmYjNjNWZhZDM2ZDcyY2ExNjg4NmYzMjhiOTRkNyBsZWdhY3ktdHJ1bmsKKzE5ODAyIDI1NDhkMWE3MDE4MDAyZjVhNjY2MWVkY2Y0MmJmMmIyYzkyZGUyMDUgbGVnYWN5LXRydW5rCisxOTgwMyAwMmUwOTdmNzJkNDdiMGEzYjVjOTM1Mjg0NmE5ZDVmYWQ2MDNiODNkIGxlZ2FjeS10cnVuaworMTk4MDQgM2EyZThhM2VkZTQ4MTkzOTQ2NjU3ZTc4YzNlNDQwYjc3Yjk2ZDRmMSBsZWdhY3ktdHJ1bmsKKzE5ODA1IDljOTIxYThlZDNhNzIzYjg0ZGJmOWQ4ZjkxNzY4ODI5YWRiOWRkZmYgbGVnYWN5LXRydW5rCisxOTgwNiA1MmEzZjgyNjE3YzQwYzdlNGZlMWYxZjVlZjljOTgzNjc3MjUwNGY0IGxlZ2FjeS10cnVuaworMTk4MDcgYWJjOGM2YzAyNWNlODM3MTE5NjQ3MjliZWE2ZGYyZjk4ZTFkYjE2OCBsZWdhY3ktdHJ1bmsKKzE5ODA4IGIwNDZhMzFhZjJlMDZlODNhMTMyNzNlNzcwOGZiNjM1YTQ2MTQxMmYgbGVnYWN5LXRydW5rCisxOTgwOSBlYjRlZDlmMjNkMjA2OThlNTFhNjE1YzZmOGRjZTRmMGZhZjkxZDZjIGxlZ2FjeS10cnVuaworMTk4MTAgOTQ2ODNjODVlYzc2ZTZkMTYwNGMwNjg0YWZkMGY1MzdkN2MzZmQzYyBsZWdhY3ktdHJ1bmsKKzE5ODExIDhjNjRkZGExZDI2ZjMwZGVhYTNmMGU2ZTYzODNhN2U3Y2ZiNjdmNDAgbGVnYWN5LXRydW5rCisxOTgxMiBiODI1OWM3ZmY0OWM5YmRlYjU4ZDYyNmFhYWU1YjM1ZDdhNDc5MDdlIGxlZ2FjeS10cnVuaworMTk4MTMgNWQ3ZTBlYTMxODE4MGNmYjA0YmU5NzE4NzdjYjdlNmU4MjFmZTdiMyBsZWdhY3ktdHJ1bmsKKzE5ODE0IDA5YWVjNjY4ZGYzYWUyOGMyNmZlM2RhOGFiNDViYjU1NzBhZjA0OTIgbGVnYWN5LXRydW5rCisxOTgxNSBjMjhkZmU1Zjg3YTczYmUxOTA4Yzg3ZTE5OTFlNjJhN2E0NWViZTZiIGxlZ2FjeS10cnVuaworMTk4MTYgYTAxNWFlZDNhMWFjMTA5OGZlMzRlNDU5MTY5MTFjMDY0ZjRkMzU0MiBsZWdhY3ktdHJ1bmsKKzE5ODE3IGFmODEwZjA4NDI1YmVmMjU0OGI1ZmZiNTA4NzdhYTgxNjIwM2E1NWYgbGVnYWN5LXRydW5rCisxOTgxOCBlOTQ0NWM1MWZmMjlmNjkyMzE2NjcwNWVjMjYwYTNkZmY0NDZlMjE1IGxlZ2FjeS10cnVuaworMTk4MTkgNGJhYTVhOTU1NTMyYWU1NWE4ODFkNWNiNDUwNDYxMzI0OWRjODE4NSBsZWdhY3ktdHJ1bmsKKzE5ODIwIDhhNDY5NmQ3Zjc0YzBjMjFlNmVmZmZjNjM4MmJkMTc5ZDlmZjUzMDYgbGVnYWN5LXRydW5rCisxOTgyMSAzMWUzMDJlOTRkYTg4MWIyZGUzYjdkYTgyYjhjNzc3MmZkMjU0ZjAxIGxlZ2FjeS10cnVuaworMTk4MjIgYjI1MTMxYmM2ZWM3Yzg4MjU0NzE1Mzk5OWU4ZGVhNGVmNTcwOWRlMCBsZWdhY3ktdHJ1bmsKKzE5ODIzIGZhYTUyZjM4NGFmNjUyNDhkYjRiYzI2MmZiMjA3M2ExODMzMTM4MTUgbGVnYWN5LXRydW5rCisxOTgyNCAwOWJhMTVlZTE5NjFiYTMzNTdkYTkxOTcyYzI0ZTYxNWEzNmQ0NjgyIGxlZ2FjeS10cnVuaworMTk4MjUgYjZjMGNmYjFlZmVhY2NjNjY5NWI2NjM1YmY2YTAyMmIxZTFmNTk4NiBsZWdhY3ktdHJ1bmsKKzE5ODI2IGRmZWIzYWU2OTJjMTExOWVkNzA5MTQwOTAzMjAwYjQzNTM4NjljN2UgbGVnYWN5LXRydW5rCisxOTgyNyA4MzJlNDA5MDllZjQ4NGY0YWRmMTEwODg5OThiYzkzNmY4MGI3Mzc3IGxlZ2FjeS10cnVuaworMTk4MjggOWZkMjBjYWU3Yjc2Njc1NGM1NmM3YjI0ODQyZWZlNzhjNTQ1MDU0OSBsZWdhY3ktdHJ1bmsKKzE5ODI5IGM3YzUzNTM2MTQ2N2Q0OTAxZDE5NWJiOWUwZjkyMmQ2OGNkNzc3YjkgbGVnYWN5LXRydW5rCisxOTgzMCBhY2Q1MDYwODQ3MjdlNzM0ZDg3YjMwMmNjZmI2ZjZjZjhmZmQxOTBlIGxlZ2FjeS10cnVuaworMTk4MzEgYTFiMzQ0NmM3MjBmMWE0ZmY3NThlMmUxNDFhMGYwM2ZiNzgzYWU4ZiBsZWdhY3ktdHJ1bmsKKzE5ODMyIGNkNmU0YmM5OTI5NWI4NTVmZjQ3NWE4YzdmMThlZjcxMjgxNWE4NTEgbGVnYWN5LXRydW5rCisxOTgzMyBlNTNiMzI4NDUyMjRlNzkzMTk1MjE2ZGE4NjZiNjRhZmM1YjQ4NWVjIGxlZ2FjeS10cnVuaworMTk4MzQgOTEyMzFiYmIzODQyZjQ3NmYwOGM2ZTNkOGFiZjBlMGE4NTBlMDk0NSBsZWdhY3ktdHJ1bmsKKzE5ODM1IGI4MzIwYTI2YzA2NTc2ZDczOGE1YzA0NGRhM2Y0OGFmMGE2MWQzMjEgbGVnYWN5LXRydW5rCisxOTgzNiAwZDRlODA2YzQyY2NiZDNlYzJiYTM5MzM1OGVjZmFjOThjYTg5ZTU5IGxlZ2FjeS10cnVuaworMTk4MzcgNjAyZWIwNDZiM2U3ZDM0NDQ3OTcyMjExN2MxZTgxMDE4ZGYzMjQyOCBsZWdhY3ktdHJ1bmsKKzE5ODM4IDJjMjkwZDRjM2IzODJmN2E4N2ZiNTg2M2NkNGY0YTVmMjFkODVmZDggbGVnYWN5LXRydW5rCisxOTgzOSA2ZjQyYzFkNTVlNmFmMDY4NDAxZjFhNDRlMGY1Mzk0MDgxMGM5ZTE0IGxlZ2FjeS10cnVuaworMTk4NDAgZWMyOTg5NWVlNDBjZmQyNjExZjlmNTRhNzA0MjczZTZhMjYzMjIwMCBsZWdhY3ktdHJ1bmsKKzE5ODQxIDM4ZTE3YTA4OTQ5MjkwNjRmMjc1OTgwMWNkZmY3M2QwNTEzMzQ2ODMgbGVnYWN5LXRydW5rCisxOTg0MiA2YmJlMjY4ZjhhZDg0OTE4Y2Y0YWFiYjcyNzI3MDAxOGEzNDdiMzdmIGxlZ2FjeS10cnVuaworMTk4NDIgZDBjODMwZGI1ZTY4ZWRkNGFhYTM0MDEyMTZlNjEwYzlmZjE0NTgyNiBsZWdhY3ktdHJ1bmsKKzE5ODQ0IDlhOWVhZWNmMGZkODI5MjZiZDIzMDBlNjFlYjlkMmNiZWNkNDk5NzAgbGVnYWN5LXRydW5rCisxOTg0NSA3MjNjZjVlMzc4ZTU3ZGJkMmZhZWQ4N2M3YjdiMWQ0NWM1OTY5NmZjIGxlZ2FjeS10cnVuaworMTk4NDYgNjQ1MzJiYTVkY2VkNWRmZjNlNWM1Mjg5NWNkMmZmM2Y1YzgyOGQxZCBsZWdhY3ktdHJ1bmsKKzE5ODQ3IGI4M2EzYjc4MzE0ZWI4OTMxOTkzYTVlZmNkY2MyNThmY2FiZjJkZjYgbGVnYWN5LXRydW5rCisxOTg0OCBkODg4ZGM3YmVhMzJlYmY1MzE4MjY1OWJkOGM0NjFmZTI2MGFlYjJjIGxlZ2FjeS10cnVuaworMTk4NDkgMmRmZWUzMzNhNjUxMDA2Mzc4MDI2ZGZhNmI1MzM4NzgzMTlkMDRjNiBsZWdhY3ktdHJ1bmsKKzE5ODUwIGE3OWViYmE2NDY2YTYzN2JmMzU5ZmI4MTZiM2JlNjFmOTU3MTU3NTcgbGVnYWN5LXRydW5rCisxOTg1MSBlNmM1YmM1YmVhYjNhMDdjNzFhNDVjZTNlNDBiZmQ2YTBlMTA2M2U2IGxlZ2FjeS10cnVuaworMTk4NTIgMGI0YzU3YTI1OTc3ZWRhN2E5NzU2MWVjMWM0MDE2ZTJjZDFjOTljNiBsZWdhY3ktdHJ1bmsKKzE5ODUzIGQ1ZTUzY2Y5ZGU3YzMzMDkzNjJmNGM3ZGUwNjc1MTc1MTc3MjEyYTYgbGVnYWN5LXRydW5rCisxOTg1NCAyYjkzNTRmNDg1MmZhYWIwNWZkODM3M2MyMGE2M2ZmODkzZGI5NDY4IGxlZ2FjeS10cnVuaworMTk4NTUgYzFlMTk0OWYzOWZlYTIxNTJlNWJmZjhhMWVhYTkwYjczZWNhMzM5YyBsZWdhY3ktdHJ1bmsKKzE5ODU2IDY3MDJjMGRmMTZiNjY4YWEwM2RlNzZmODRkM2ZhYzhiNTFlMWE1ZWIgbGVnYWN5LXRydW5rCisxOTg1NyBjNzlkYWI2NTJlYTg0NDEzYzhjMzRiNzVmOTFkNjhmYTNhY2Q2YzYwIGxlZ2FjeS10cnVuaworMTk4NTggZDZlY2U3YzNiMzVlYWY2YTVlOWQ3ODg5NjBmYmZmNjUzNzdkZDk5MiBsZWdhY3ktdHJ1bmsKKzE5ODU5IGY1Y2I2ZDY2YTk3N2JkZTMzMDg3NDRjMDBkMTIxNjI3MjkwMjU2ZWIgbGVnYWN5LXRydW5rCisxOTg2MCAxYTVhMDNlMmRhNzM5NjllMjI2NTVmZWNkNmUwYzUzZGE4ZjQzODFjIGxlZ2FjeS10cnVuaworMTk4NjEgYzVhNDE3ZThkODRjODM2Mzc0YTI5MGMxZjA4N2RlZjgyYjkxY2M0ZiBsZWdhY3ktdHJ1bmsKKzE5ODYyIDYxYzlmYTk0Y2U5ZDlhNGFkOWExODBjYTU4NmJlNDljMGRkMTAxYjEgbGVnYWN5LXRydW5rCisxOTg2MyAxYzk1YjZiMDZhZTMxZDI3YTVhYjQxNTg2OTUyYWQwNzlhNjY4MzBkIGxlZ2FjeS10cnVuaworMTk4NjQgNDE1Mjg1NWVmOWE4YjYzNWE4NDEwMTBkZmUzNDk1N2FmNWUxMWZkOCBsZWdhY3ktdHJ1bmsKKzE5ODY1IGE5NzVmMmMxNTRjMDYwNDU5OTkxM2I2M2NlMWYxYTExZDc2ZWFkNTggbGVnYWN5LXRydW5rCisxOTg2NiA3YzdjY2ZiNWRiM2VmMTM3NWJjNjcwN2Q4YjdmZTZjMmNjMzI0Yjc2IGxlZ2FjeS10cnVuaworMTk4NjcgMWRkYzcwZGQxZDFiYmFkMDMxOTg4YmMzNTM2MTYyMTQ3ZTgwMTE2YyBsZWdhY3ktdHJ1bmsKKzE5ODY4IDg2MzE4NzMzZmU3MDkzNTlmYTcxOTljZGE2YmYxMWFlNjQwZjRkMWUgbGVnYWN5LXRydW5rCisxOTg2OSA0NTljOGVmMGEwMTAzNTk4MzQ5YzA1MzNkY2M1ZmQ1NjMyOTRmZDQ2IGxlZ2FjeS10cnVuaworMTk4NzAgOTEwNGVkMzhhYzA1MWM5ZDUwOTFhZGMyZDE5OWJlOTRmNTc3MDVhZCBsZWdhY3ktdHJ1bmsKKzE5ODcxIDQxYjkyNDllNGQ0ODYzYmQ1YWEyYmFjNzYyYTM1ODc5MTViM2NhMTAgbGVnYWN5LXRydW5rCisxOTg3MiA4NmZkNzIzZjI5Mjg2YTJjM2ZkNzM2NzM3N2Y3MDdiZjg4NTUyMTZmIGxlZ2FjeS10cnVuaworMTk4NzMgNGY5ZGI4MzQ4MjVjYWEwYzNmZDhiMTZlZDY3ZmI3OWFjZTk5MjE1MiBsZWdhY3ktdHJ1bmsKKzE5ODc0IGVlZTdkMGM1YWU1OTJhZjRkZTk1MGZiNzJiMzYyMDk0YzE4YmE1MjMgbGVnYWN5LXRydW5rCisxOTg3NSBlNTllZGE1MjVmYzFlN2I1MmI3NDVlYjNmOGYwYTBmY2RjMGJjZDdjIGxlZ2FjeS10cnVuaworMTk4NzYgMmRjM2NhMWQ4OTBjNzczMTdlNjM0Y2RiNjU1YTAzM2MxOWExNDQ3NSBsZWdhY3ktdHJ1bmsKKzE5ODc3IGYzZmIwNWJmZWVlYjEzNWM2ZTkyNjZmNjEwYmJlMjk2N2EyNWQyNzggbGVnYWN5LXRydW5rCisxOTg3OCA1MzRhOTNkODJlZGNhMWFkZmIwZThlMGNlNjZhODAxOWQ2MjczMDM4IGxlZ2FjeS10cnVuaworMTk4NzkgYjdiMDQ4ZGExNjczNWYwNGMxNjBjMWQ2MTIxODIyYWI2YTE1YzcyOCBsZWdhY3ktdHJ1bmsKKzE5ODgwIDU0ODcxNmUyZjFmMTNjMzhiOGI1ZmFkODJhZTAwZjgzOGUwMzY0NzAgbGVnYWN5LXRydW5rCisxOTg4MSAzYjQ5NGM1YzYyMzRkZWFkMTFhMzViODY3NjEzOTgyNGQ0M2M4YjY5IGxlZ2FjeS10cnVuaworMTk4ODMgNGMxN2NiMmM2MjFlOWJkMDlhYmI3YmIyMDkwNjY2MWRlOWEwYTJlOCBsZWdhY3ktdHJ1bmsKKzE5ODg0IGExZGQwYjA3MDlkMjA2M2ZmM2ZmNmNlN2Q1MDdhYjA1NTkyNDZjYWMgbGVnYWN5LXRydW5rCisxOTg4NSA5OWRlNGJmMmI5ZTU1MTkzYjI4MGE3MGNhOWQwOWIyZWUwYTMyZWZkIGxlZ2FjeS10cnVuaworMTk4ODYgZDU2ZDc3ZjkzNzNiZGVmOTliYjNiZmY4MTA5ZDNmZmIyMjEwMzllMCBsZWdhY3ktdHJ1bmsKKzE5ODg3IGRiNTU2MDQzNTNiM2EyYTRkYTJjOTM2YzIxN2E2MzY2YTk4MTY1NjggbGVnYWN5LXRydW5rCisxOTg4OCA4ZWFmNzRhMTExZWJkOTIwNTk4M2FlODEyYTcxMTkzMzgwMWNmNzQ2IGxlZ2FjeS10cnVuaworMTk4ODkgZDE1YWNlMzIxMTAyNjZmNmUzZDUwMGJhOThiNGYwMjk5NTlmMjZkZiBsZWdhY3ktdHJ1bmsKKzE5ODkwIDZiZGY1NjNjNzYzYjNhNGQwMzM3NzBjOTdhNmE1MTVhM2E5M2RmNjcgbGVnYWN5LXRydW5rCisxOTg5MSAzYzY1MGQ5YzM4ZTc0ZWVhYzNmZTQwZjdiZmM2N2Y4MjdlNDVjNDk0IGxlZ2FjeS10cnVuaworMTk4OTIgMTljMmY1MGU1Mzk1NzFjNGVmOWRhNTcyYzY4NjY5MWI2NTY2YzE1YiBsZWdhY3ktdHJ1bmsKKzE5ODkzIDNmNWE1NGE4YTFmYjUwNTg5NjdhM2YwYjBkZGZkNzgwOWFhYWFjNDggbGVnYWN5LXRydW5rCisxOTg5NCA3YTM2ZjYyMDFjOTQwMDcyZDJmMzYxYWNiODAyYTljNDRiYmNiNGY0IGxlZ2FjeS10cnVuaworMTk4OTUgODk1NDZiZGRjMjJjYzBkZWVmMWI0ZGM2NmMyNjQwMjBjOWUzNDIzZCBsZWdhY3ktdHJ1bmsKKzE5ODk2IDk1M2M1MGYxMjE4NGFhZTJjNDAyMmI0ZGJiZDI2NzRiNDRlMWU1NGQgbGVnYWN5LXRydW5rCisxOTg5NyBmMGVmZGNkMjQ1MTJmYjhkNGI0YjRmMGUwNjAzMDc3OTBhYzRmYWEyIGxlZ2FjeS10cnVuaworMTk4OTggY2Q3YWM0ZDlhZGQwMjA3OWEyOGI5NzI4NjViZjdkYjkzODU5MmE0ZiBsZWdhY3ktdHJ1bmsKKzE5ODk5IGUyMWQ0YzIwNTY1ZDAwY2E0MjQ3MzM0NGE1Mjk4NGEzN2QwNmVlNmMgbGVnYWN5LXRydW5rCisxOTkwMCAzY2ZiYmNiZjcxMzRkMTE3YjgyMTM4MGZiMmI1NTZkYmE5ZGVjYTUzIGxlZ2FjeS10cnVuaworMTk5MDEgOTcxZmY2YjU4ZWRiZmI3ZTY2ZmI1MTRlZTI4MTQ4MTljOGMyZTBmMyBsZWdhY3ktdHJ1bmsKKzE5OTAyIGY0MTQ2Y2EwZjI5MjFlMjBiNGQ3NDJjNThmNzMxZjE4MTI4MDg1MDAgbGVnYWN5LXRydW5rCisxOTkwMyAyYTgwMTkxZDEyMDMwZTgzOTgxYmQwNzlhMDNiYmI1MmYxMzZmZTMxIGxlZ2FjeS10cnVuaworMTk5MDQgNTFjNmEyY2IwM2QxYjQxOWUxZDRhNmE3YTMxYTM4YjkzMzBjYzg0MSBsZWdhY3ktdHJ1bmsKKzE5OTA1IDY1YTYzOGEyNGY3ZTk1NGY0ODA3N2JiZWQzODU3MDc0YjYzMWM5N2EgbGVnYWN5LXRydW5rCisxOTkwNiAzZWM1MDA0MDNmMDEwZDhlZmQ1NDMwNzFjZWVlYTM5ZDFkMDI3YzU4IGxlZ2FjeS10cnVuaworMTk5MDcgYjQwYWIzMTA1NTIxZjE5NDVjZGRiNzVjOTZjYWFjNTMzMTMzMjkxYyBsZWdhY3ktdHJ1bmsKKzE5OTA4IDFlNThkNzgyYzA5YWM5ZjNmYzEzNWI5NTQwYzNjNzVjZDhjNTliOTMgaXRlci1icmFuY2gKKzE5OTA5IGQ1ODExYWY4YWNmM2RkNGUzMjhiZGJkMTZiNzI4MWM3ZGFhZjg0NDkgbGVnYWN5LXRydW5rCisxOTkxMCA1MzNjYzkwN2VkYmQyY2I2MTM3OWRkNzUwNDBmMDVhMDg3MjUwYjMwIGxlZ2FjeS10cnVuaworMTk5MTEgYmE4MWQ3OWRjM2EzMWRhZjU3MDFmN2ZlMjRmMmFmZWUzOWE0OTRkNSBsZWdhY3ktdHJ1bmsKKzE5OTEyIDdlMWU2NzI1NTA5ZTZjNTk3MWM5ZTk0ZDgyZTRkY2Y3OTQyZDQ3ZDQgbGVnYWN5LXRydW5rCisxOTkxMyBhZDc0MTc0NWNiNmMwOTQxNjI2ZmNhNTQwNGIzMmFlZWE0MmJjYTVlIGxlZ2FjeS10cnVuaworMTk5MTQgOGEzNDgzMDgzMTZkNTQ0ZmIwNjgxZWM0OTQ4YWQ4MTMyZDA2YzI3ZSBpdGVyLWJyYW5jaAorMTk5MTUgNDIwYTA3ODFiYjkyZjdjNjAxMWM3ZTg4YTY4MDIxY2MxZjY1NDRjZiBsZWdhY3ktdHJ1bmsKKzE5OTE2IGMxZWRiMTRmMDQzYmJiNzMyYTJlZDI0NzFjMDY5ZWFiZWU3NDJjZmIgaXRlci1icmFuY2gKKzE5OTE3IDQwYWQwYTA3NjFkMjRmYTY1NGIwMTViZWQ4N2IxNDBkN2M2YWYyMjggaXRlci1icmFuY2gKKzE5OTE4IGYzOTRhZjhjNTgwZjA1NTFlNDYwOTNhYWQyZDQ5NTlhNDdlNjkwYzMgaXRlci1icmFuY2gKKzE5OTE5IDYyZjc0YzI1OTc2MmRmZTVlNWVkMDQ4M2JjZDIwYjY0YTkyMTFkNzMgaXRlci1icmFuY2gKKzE5OTIwIDNmNTU4N2MyOGE1MGY5MTNhN2MwZDA1Y2JlZGRkMjg4ZTI4ZWQ2N2IgaXRlci1icmFuY2gKKzE5OTIxIGY0ZDQ5OGE5ZDk4OTAzZmJjMTY4MTAwMmRlMWNlMjhiZjAxMGJlMjcgaXRlci1icmFuY2gKKzE5OTIyIDUyNzk3YjRiMzc1YmM5NDI2Y2QxYjA3NDJlYWJkZDJlZTM5NWQzODMgaXRlci1icmFuY2gKKzE5OTIzIGQyN2Y4NDRmNmNmZTU2MmUyNzNhNThlMDk5NjQ4ZGNlMTY2ZmZmNWQgaXRlci1icmFuY2gKKzE5OTI0IDk4YTJiYjkwNTIwZDZjZjVlMjgzMDg4NzQ4YmI1MWZiODVkMDI4ZjEgaXRlci1icmFuY2gKKzE5OTI1IGFmYjMzZmVmMTRjYjhlMzZlNGNmNGJhODgxODRmMDUxZTJmNmE4YWUgaXRlci1icmFuY2gKKzE5OTI2IDNhODY2NmUxMjlhZGY5ZWI2ZTBjNmIwNDhkN2E0ZWFiYjQxNzkxY2UgaXRlci1icmFuY2gKKzE5OTI3IDIyMGI2MjczOGQ3NDI4MTMzOTAyYzQzZWQyZjUwMGFmNjE1ZjhmNjMgbGVnYWN5LXRydW5rCisxOTkyOCA1ZDY4YWZjNTIyN2M5MWIxYmYzZGYyYWE2OThjMTkyMTUxMTgxNjVkIGxlZ2FjeS10cnVuaworMTk5MjkgMTcyZDJhMjgxNmJmYTNhMGFmZWIxMjZmMGJlMDM1N2Y0Mjg5NDUxMiBpdGVyLWJyYW5jaAorMTk5MzAgMDk1YjgwZDJlNzg1ZDlmOTIwYzllYjI0NGQyYzcyZjY5ZWYzZTgyYyBsZWdhY3ktdHJ1bmsKKzE5OTMxIDJlZDdjNTg5NDNlNjExMmFmMjVmOWJhYTdkY2NmODRhNzFlOGU4YzQgaXRlci1icmFuY2gKKzE5OTMyIGM1N2ExYjY3ODFiMDRmYjQ1MTdkMzFlYTk4N2E2YWYzMDY4N2M0OTcgaXRlci1icmFuY2gKKzE5OTMzIDdiYjEyNTZiNTA2ZGI0NjRkZThhYzk5NDRjZmJiNGIxMWY2NTdiMjUgbGVnYWN5LXRydW5rCisxOTkzNCAzMzc1YTJhOThlNTY2ZmQxM2U0M2MyYmJmNjliZjgzN2FkY2QxNWRkIGxlZ2FjeS10cnVuaworMTk5MzUgZWI0MzY2YjNlMzkxYWE5MGMzYzgzNzEzNTU4ODkwY2E1Mzk1ZTExYyBsZWdhY3ktdHJ1bmsKKzE5OTM2IDZjYTcyZDcxNTM2ZTBjN2YxZGVlYjg0ZjY3ODU3MTgzZDQxMGM5MzUgbGVnYWN5LXRydW5rCisxOTkzNyBmZjc1YzM4MmYwZDMyZTBmNzJkMzkwM2RkYjFhODY5NmUxNDNkNTAyIGxlZ2FjeS10cnVuaworMTk5MzggMWY3MDBhNzIwNmIyZmM0NGZiM2E3MmVjMWQ5NGIxNjIwY2RhYTAxMCBsZWdhY3ktdHJ1bmsKKzE5OTM5IDVlNmFiOTM5YmRiY2M0ZGE2YzRlZGQwNGI5OTc5ZmM5ZThjNzcwOTEgbGVnYWN5LXRydW5rCisxOTk0MCBiZDQwYjEzZmE1YWJmYWI5M2RhNGEzNTVhNjg1M2FmZTEwNmIzOWJlIGxlZ2FjeS10cnVuaworMTk5NDEgN2ViNWE2ZThjOThkNDUwY2NiZDM4YjA5ZGNhZjY3ODVkMDc5ODE2YSBsZWdhY3ktdHJ1bmsKKzE5OTQyIDdhNDE3NWUxMDYyNmNmNzQ5OGMzOTI4ZDQxMWU1NThmODk3MzUxMzQgbGVnYWN5LXRydW5rCisxOTk0MyBkNThlOTNkYWZiOThjMmZkZGRmNTA1MWVmMzY4M2E2ZGEwNzEzYzYyIGxlZ2FjeS10cnVuaworMTk5NDQgNGU2ZjE0ZTc1NTdlOTkwMDU0NzZjNGEwOTBiZmYxMDgxZDQyZGQzYyBsZWdhY3ktdHJ1bmsKKzE5OTQ2IDkwZTQwNjRjYTA0NWVjZThkMWE5ODUwMmQ4MmM3ZjAwNmRlZDRlZGUgcmVsZWFzZTIwLW1haW50CisxOTk0NyA0MTVhMTliYjE2NzVjNDc5NGMxNjhjNjRlYjhkNDI1MmRiZmY1MWE4IHJlbGVhc2UyMC1tYWludAorMTk5NDggNzQzMjk2Y2UwNTJiMTg3YWEwNzQzMGFmZGVhNTQ2MDY4YzkzYTY4MCBsZWdhY3ktdHJ1bmsKKzE5OTQ5IDE0YjdhN2I4ZDU4ZGJiZjJhNGRlMmRiYjE4NGY2MjFlODViNzI0OTIgbGVnYWN5LXRydW5rCisxOTk1MCA3OTdlYmI3MDMzZDcyNmVmMGU5MjhlYzQ4YjlhYWVhNDE0MGY3ZWEwIGxlZ2FjeS10cnVuaworMTk5NTEgYTEwNjZlNWExMDY1Y2FkNDE2ZWY0YzFiYWZmOTg0YzFkZWQzNzAyZSBsZWdhY3ktdHJ1bmsKKzE5OTUyIGRjMGY2MmU3NTg4YjNlODk1Y2RkNGQ4MzQ4YjE2NDc2NmZjN2QyNTYgbGVnYWN5LXRydW5rCisxOTk1MyAzZjUyNzZjYmJjNGRhMjQ0YWFmYzQ4ZjkyOWVjNjVlMjFhYWY5YmNlIGxlZ2FjeS10cnVuaworMTk5NTQgYTU4MTRmNjIwZTg2ZDlhNzAzZDY5N2M5ZjAyY2RkODhjOGMxN2I5ZSBsZWdhY3ktdHJ1bmsKKzE5OTU1IDMzYzg2ODBiM2IzNTQwNDZkMjMyNGE4NmMxN2ZjMmFkOTk5MDUyYTkgbGVnYWN5LXRydW5rCisxOTk1NiBkN2UwMmI5ZWUxNzljMWU0M2FkY2ZkNGE5ZGFjOWQ3OTAyMjUwNzJkIGxlZ2FjeS10cnVuaworMTk5NTcgNTQ2OTIyZmE4ZDk5NDkwYTM0MDIzZDg2ZWY3MWExY2I2MGIyZWNhNCBsZWdhY3ktdHJ1bmsKKzE5OTU4IGRkMDRiYmZkNWE3NmNlZWFhMDUyZDQxMzFhMzJmOGNhYzFmMjg1YzcgbGVnYWN5LXRydW5rCisxOTk1OSAyYzFiZTc5MjRiMDRhZmFmNzRiYWM3YzNjNzdlMTIwNmJlNDU4MzZiIGxlZ2FjeS10cnVuaworMTk5NjAgMjZjZGVkNTljMTcyNTNmOTdjNjVlMTRkM2M3MjQ5MGUyZjNkZmMxMCBsZWdhY3ktdHJ1bmsKKzE5OTYxIGViNGE1ZmYwZjcyY2M4NTM3MjlkYzliZGYzN2ZjMjMzYTVlZDNkZGMgbGVnYWN5LXRydW5rCisxOTk2MiBlZTY3OTNhZTA2YzE0ZTAwMzg3MjhiNjRmM2NjZjdhMWVmZmRlMTIzIGxlZ2FjeS10cnVuaworMTk5NjMgYjY1MGQ3ZGFhNTkzY2M5NmIyMzMwMDZiMTBjMThjN2IzY2M4NjE4MyBsZWdhY3ktdHJ1bmsKKzE5OTY0IGI0NWFlOGM0NjdhYWY0NGQwYWViY2M4MjI3MTAyNDY3MTY1N2Q3NzQgbGVnYWN5LXRydW5rCisxOTk2NSA0MzE3Mjg4OWU4ZTY2YjE4OThjNWVmMjI3NjM0Mjk1MWI3N2JiNmFmIGxlZ2FjeS10cnVuaworMTk5NjYgNDYyYjhkZmU4NzUzOTFlOTYzMTYwOTYyN2NmNzk1Y2IwY2ZhODFkNCBsZWdhY3ktdHJ1bmsKKzE5OTY3IDgzMjNiMDk4YzZjZTBiMWM2MzExZDJhZTUzZDI4Y2MxOGJkNDQ0YWIgbGVnYWN5LXRydW5rCisxOTk2OCA5MDc5ZjcwYTViODNmOWYyMjhlNWRhODI0N2Q2NjA0MGRjYTU3YzBkIGxlZ2FjeS10cnVuaworMTk5NjkgODVkNzRmMDQwNzEyZTY0ZGE1MzA5NDhmZWMwY2FkYWMwNGVlMTg3NSBsZWdhY3ktdHJ1bmsKKzE5OTcwIGY3ZTJjM2Q5YzM4NzkxZDMxNzljYjU0YTM0MTFhMDU2Y2JlOGFlNGQgbGVnYWN5LXRydW5rCisxOTk3MSA3ZTE4MWViYTZiOWJkNGQ4MTRiOTRiMDExZTA5NDEzNWQ2YTEzZDViIGxlZ2FjeS10cnVuaworMTk5NzIgYmMwNTU1YmUyMjEyM2E0ZDVhOGRjMzI0Y2I1Y2MxODg3ZDQ3ODI0MyBsZWdhY3ktdHJ1bmsKKzE5OTczIDUyY2IwYzVmZGYyMzgwOTkyODM5MmQzMjM0NjFhZDFjNmEyMmNlMzMgbGVnYWN5LXRydW5rCisxOTk3NCBmMjcxN2IwMTM3ZDA3Mjc0ZGVhYWZhNTAxZjczNTlhMjFiODA5YzI4IGxlZ2FjeS10cnVuaworMTk5NzUgNjQzNGRjNzc2Y2I5NzVhMmMzNTk1MDY0YTNmN2RiOTAwZmFjZmQxNyBsZWdhY3ktdHJ1bmsKKzE5OTc2IDEzODBhNTJmMWEyMTg2MjkwZjllYTVjYzI1OWEyOWM3ODU3NTI3ZTYgbGVnYWN5LXRydW5rCisxOTk3NyBjZThhYzM3ZGIzMDBhNWE3NDA0OGY4NTdiMzliYjQ1YzQ3ZDM2NDBkIHJlbGVhc2UyMC1tYWludAorMTk5NzggNmE1MjdiZTRjNGQxOTA3ZDg0ZDllYjQzNjIwZTU2ODhmM2M4ZmY5NSBsZWdhY3ktdHJ1bmsKKzE5OTc5IDNmMjI4MWUyNGUyZGM0Y2M5YTYxOTlmNGQ5NTdhNWYwNDUzNDI3MmQgbGVnYWN5LXRydW5rCisxOTk4MCBjMDY0YzBkM2M0OWI5MzYyMjQ5ZjZkMWJjZGI0ZTY2ZWNlNTA2NzNjIGxlZ2FjeS10cnVuaworMTk5ODEgNzQwNDY3ODIwNzJkNjA4YzhhYzBkNzljY2ZmNDk5OGU5YTc4MmM0MSBsZWdhY3ktdHJ1bmsKKzE5OTgyIGIxYWJiMjYyMjk3OTNkZjdjNWZkZGJlOGViOTMzMGNhM2VhNjBkYzggbGVnYWN5LXRydW5rCisxOTk4MyA3ZTkzOGYwZTlhNDk3NTQ4ZTg5OWQ0MmE2ZDU4N2U4YjQ2NDRjNmVhIGxlZ2FjeS10cnVuaworMTk5ODQgNzcxOTY1NTdmZDMxNjdjYWU0MzNkYjgwOWNhNzc1MzFjMWRiNjJkMyBsZWdhY3ktdHJ1bmsKKzE5OTg1IDljZmQ5YzMyOTdkZDQyOTNjNjAyM2M2YjBjNTRlYTg3MTg3YWYwMDEgbGVnYWN5LXRydW5rCisxOTk4NiA0NWFkN2E0NjhiYTJhMzUzYmZjNmQ2ZjI0OGFhYjg1ZWM2YTgzNWQ3IGxlZ2FjeS10cnVuaworMTk5ODcgZGQ1YTFiMjgwNDQwNzljMDYyMmYwNWU3MDNjYWQ2Mjc0NDBkNGMzNiBsZWdhY3ktdHJ1bmsKKzE5OTg4IDU3OWFjOGUzNWY1YjVlODI3Nzg3N2Y1NTVkODM0ZTg5NTFlMDQ0MjAgbGVnYWN5LXRydW5rCisxOTk4OSA4ZjMzOTI2OWUwMjdkNmY4OTE2YzNmM2RlZDZjNWQ5YTAyNWJlYjc0IGxlZ2FjeS10cnVuaworMTk5OTAgYzIxNGYzNzIwNjU4ZTJiODY1MzVmMDg2MmJjOTc0N2RmMDY5ZjQxYyBsZWdhY3ktdHJ1bmsKKzE5OTkxIDk4OWZlZDI4Yjc0ZjMzYTQ0OGUwNGY2MzljZDg0ZjczMWI0NzIwNzYgbGVnYWN5LXRydW5rCisxOTk5MiBkOWVlNTZiNmRiMjZhNTQ3ZmQ3M2Y4YzVlZDY4ZTZlYzc5ZjA5NDFjIGxlZ2FjeS10cnVuaworMTk5OTMgZGNmNzNmMTBmN2NjZjAzZDc5Y2RmMTFiZDQ4OTE1MTUxODA1NjI4NyBsZWdhY3ktdHJ1bmsKKzE5OTk0IDliZjM3NDkzMzg3MjA1YWNmM2RkYmVhN2M4MGE3NDBkZjJhMWYzYTEgbGVnYWN5LXRydW5rCisxOTk5NSBlZGRhNGE0MzIzOWJjYzMwYjUwYzIwMzA0ZTg4YTY3ZWI3ODQyMjRjIGxlZ2FjeS10cnVuaworMTk5OTYgYTM4Y2NlM2Y0MWI0MWRmYzIyMGRhMzU2YzVjZjBhNTA2NTFlZTVhMSBsZWdhY3ktdHJ1bmsKKzE5OTk3IGE0ODhhNjNjYjg2NzRlNmI3MDQyNGM5NjcwMzE4MmU0ZTY5OTk5ZTMgbGVnYWN5LXRydW5rCisxOTk5OCA4ZmYyNGFiZWIzODgxMTBjYjRjNTgyNzU4NWFiY2RkOWVmMzQwZWQxIGxlZ2FjeS10cnVuaworMTk5OTkgMTgyM2ZhMjMxNTIxNWMwNGU4NWUwZDRhMDJkMGUwOWQ4YjFjNDQ2ZiBsZWdhY3ktdHJ1bmsKKzIwMDAwIGFkYzhhNDFiZWU5ZjY5NzY5MTNiMmIyNTE5MWUxOTQ3NzZjZTI4OTUgbGVnYWN5LXRydW5rCisyMDAwMSAzM2Y3NzY5YTIxOGVkN2I1NGY2YjdhODVkOWE1NjI1YjAyODA1Zjc3IGxlZ2FjeS10cnVuaworMjAwMDIgN2ViOGIyNDBkZDZjNGIwMTc3NWZhODliY2I4ZTBmYTM3YzUwZWViYiBsZWdhY3ktdHJ1bmsKKzIwMDAzIDdlZDNlN2EwOGEzMTAxOWRjODM5M2Q3MDI0YTcxZjQzMzI3YjQ3OGQgbGVnYWN5LXRydW5rCisyMDAwNCBiZjY3OGExMWMyMWFlYzdkMTlmYjc0NThlNzBjMzNhM2I4NTEzOWIxIGxlZ2FjeS10cnVuaworMjAwMDUgNzZlYWIyZWJjZTU4YTQ0YjQ4ODBlNWUyY2YzYTAyMjA5ZjY3NmY3NyBsZWdhY3ktdHJ1bmsKKzIwMDA2IDQ4NjNiNTk1YmRhZTg2MDAxMjQ2ZTE0YmYyMTMzM2I1ZDE1OWFmOWIgbGVnYWN5LXRydW5rCisyMDAwNyA2ZmUxM2QwMDhlMjVmN2E5MzJlMzNjZjAxNTBlZGFjOTA2ZTFkMTdlIGxlZ2FjeS10cnVuaworMjAwMDggZTEyMTRmOWUxMmEzY2NmMTg2OGUzZmQ1ZjI1OGZkMDI3NDdjZGFlYyBsZWdhY3ktdHJ1bmsKKzIwMDA5IGQzMWFkZDk5YTg0NjhjYThjYjEzMDA1MmNkZjRkNmFmYTM5YzBlZGEgbGVnYWN5LXRydW5rCisyMDAxMCAzM2Q4ZGQwMmFhOTkxMjkxOWZlNjJiYzc4M2E2M2Y4NjczY2JlZjMxIGxlZ2FjeS10cnVuaworMjAwMTEgZjlhMDdlOTk5MDdlNmViOTc0ZTQ5M2E0NGVjNTI5YWFhN2ZjMWExOCBsZWdhY3ktdHJ1bmsKKzIwMDEyIDNiNmVhNGNmZWVlMDYyZWNiYmMwZjQ2ODY5NGU5NjRjZWZhMjE4ZTggbGVnYWN5LXRydW5rCisyMDAxMyA4NDhmMDg1NTk5MTZkNGE3MzE4OTZkZjMyODNjNDAyNWExNGQxZDE3IGxlZ2FjeS10cnVuaworMjAwMTQgNjQ2ZWMyYTRkN2Y0ZTBjYjI3NjA5MDI4NjEyOTBmNjdjOTlkZjY4YyBsZWdhY3ktdHJ1bmsKKzIwMDE1IDllNmU0ZjVlNTYwNDVmODY0MzUyMjI1ZDllNzBkN2M0YzYzZDVjMmQgbGVnYWN5LXRydW5rCisyMDAxNiBkYTZjNjYyOTgyYjY0NDQzYWFlMTE5ZjlkZDYxNjI1NjY5NDQzMWQzIGxlZ2FjeS10cnVuaworMjAwMTcgYTgzMDFkNGVkMmIxYjk1ODk2ZTBiN2E0OTllOGVmOGMyYjcwNjdjOCBsZWdhY3ktdHJ1bmsKKzIwMDE4IDIwNTRjZWEzODc1NGJkM2JhZGJjYTNmYzQ0MDNjNDNmYmNkNDZhM2MgbGVnYWN5LXRydW5rCisyMDAxOSAxYjg3NDVmYWEyZWQyYzlmMTRiZWFjNWVjYzI1YjM3MzJmNzg3YTU4IGxlZ2FjeS10cnVuaworMjAwMjAgNTRiNmQyOGE2ODc4YzliMTAyYzY4ZWQ0YmYzOTgzNDgxYjJlNWFiZiBsZWdhY3ktdHJ1bmsKKzIwMDIxIDExNDYwNzBmNDdlYzZiN2VhYzQ0NWQ1Yzg2Njg5YWE1NDNlMTk3NTcgbGVnYWN5LXRydW5rCisyMDAyMiAzMmJjYjRlMjEwMDU0ZmYxODJmNGNiNTEyODYzNDUwNzkyMzc1OTg4IGxlZ2FjeS10cnVuaworMjAwMjMgMGIzM2ZjNjdjYTRlNDlkN2UzYWY0NGNkMDE3YjAwZGExNzM2ZjM0ZiBsZWdhY3ktdHJ1bmsKKzIwMDI0IDFjOTBhMWNmNzk1Yzk2ODBiN2U0NzhjMzhmN2NhYzkyZmMxZWUyNDkgbGVnYWN5LXRydW5rCisyMDAyNSA1NTIxOGUwNDk1YmM0Nzg0ZjNiYTdlYTU0NGM4ZDE5NDI4NjEzYmI1IGxlZ2FjeS10cnVuaworMjAwMjYgZDBmZDYwYzU5YWVmYWQwYThlZjhlYmI5OGI5ZjIzNGQ5OWM3ZGY1YyBsZWdhY3ktdHJ1bmsKKzIwMDI3IDBmYTJjMDUxODhhMGI3OWM2ZTkyZTQwNTRlNjI3ZTk1ZjhhNWM3ODIgbGVnYWN5LXRydW5rCisyMDAyOCAyMDZhOWYxOTc4ZTUwMGE4NjljZmEzZjgyMDVmZDYwOWE2N2RmNThiIGxlZ2FjeS10cnVuaworMjAwMjkgMmVkODQ1ZjgxYjBjNWRmODg0ODE2ZGEyZjA5YWRmZTA0NjMzNjExZSBsZWdhY3ktdHJ1bmsKKzIwMDMwIDgxNmQ4NjAwMjY4MzFiMjQwOWRmMDY1MzM3ZGQ3YzA2MzY5YzAyMGYgbGVnYWN5LXRydW5rCisyMDAzMSA3MjQzZGViMDIwZTg3ZTMyYzA3NWJiZDQxNDllNzhiN2NmZTA1Y2IwIGxlZ2FjeS10cnVuaworMjAwMzIgYzliNGVmZjE1ZGNkYWNmNzkwNDg0NWNiOWQ3MDBiNGE1NWYyNWQyMCBsZWdhY3ktdHJ1bmsKKzIwMDMzIGY1OGE2NWQ0Y2MyMzc4MzdlZDU0ZjczYzZiMTQ0NDg5MTUxMTVjODMgbGVnYWN5LXRydW5rCisyMDAzNCBmNDI5ZWU5NDQ4YWFkNGQyZWIzNzY0NTUzYzc1NTRmM2VjNDc2Y2MzIGxlZ2FjeS10cnVuaworMjAwMzUgOGZiMTBhZmZiNjE1N2FjZGU1N2VjZjgyMWZiMTNiOTdlNWEwM2RjMiBsZWdhY3ktdHJ1bmsKKzIwMDM2IGMyZTRiYTNjODVjYzkyY2I4MzkyOTIwNzBhYmJmYjdhNDJlYTE2MGIgbGVnYWN5LXRydW5rCisyMDAzNyBiYmY1ZWEyYTIyZTU1OTdiOWQ3YzRkYTU5ODZlOWJmYWFhMmZkOTlmIGxlZ2FjeS10cnVuaworMjAwMzggODM2ODQwNDM3M2VjY2YyNjM3ZjNmYmUzMDA1MzllNjUyNGUwMzIxYyBsZWdhY3ktdHJ1bmsKKzIwMDM5IGYwN2JjNGY4ZGI5ZTY5ODdjZDJmNjY3NWZmMjMxMzk1Mjc3NmYwNDkgbGVnYWN5LXRydW5rCisyMDA0MCAzNDljODc4ODYwNGUyOTMyNDliOWVlYWQ5MmIzZmYwYzMxYzQyOWY1IGxlZ2FjeS10cnVuaworMjAwNDEgMjA2ODA5ZTI1YjUwZDJkZGUyMzg4YWE4MTkyOWI5ZTU1YjNlMWZiOCBsZWdhY3ktdHJ1bmsKKzIwMDQyIDUwODA3YzQ2NTAzNGI2OWEyM2MyODQ2NmRmNzBhZTg2MWVmNDI0MDcgbGVnYWN5LXRydW5rCisyMDA0MyBjNzRjNGJkY2I0MTEyMmYzODA4M2E5ZGFkZDk5NjgwZDM2MmU2MWQ2IGxlZ2FjeS10cnVuaworMjAwNDQgMjYwODY4Y2FlMWExZDVkZmQ4NzdmYzRmMWVmZTg5NmY0ZTY0ZWU5ZCBsZWdhY3ktdHJ1bmsKKzIwMDQ1IGNlOTBmNTY3ZmE0MjAyYTU5YzRkN2FlMTE3MWI5ZTA3Yzc5NWI1MzQgbGVnYWN5LXRydW5rCisyMDA0NiAwYjhiNmY4NDA2ZGNmYjgwNmQyZWQ4ZjU5MGViZmY4ZjQxZTZmYjAxIGxlZ2FjeS10cnVuaworMjAwNDcgM2I4YTViYmZkMmU1NzIwZDZlOTYxNDBlNGM0MGQ1MGJmNDk1OTFhYSBsZWdhY3ktdHJ1bmsKKzIwMDQ4IDE1NTA4NzIyNDllOWU4NTE5MzEwZjFiZmZjYzliNzg0OWQ5NDA3NmQgbGVnYWN5LXRydW5rCisyMDA0OSAxYmUwZDFjNTc4MzQwMjVkZDVkMWMzMzVkMmIwOTBmZjUwNTcxOWZhIGxlZ2FjeS10cnVuaworMjAwNTAgOGM2ZjIyY2VmODc4MjJkNmUwMGFiNjVlMTFhYTY5ZDJjNTllZmFiZiBsZWdhY3ktdHJ1bmsKKzIwMDUxIGY3MjE3M2M3OTNiNmQ4MzJjYmU0NzdmNjY2NTZmMWMyZGUzNGU5NjggbGVnYWN5LXRydW5rCisyMDA1MiAxMDk0MDU2MWU4OTFjMTAwYzk5MzVhMTlmZTUyODUxMGMwNmI5N2EwIGxlZ2FjeS10cnVuaworMjAwNTMgNzI5MTg5MWNiMGJmNzY4N2NjNWRmMDczYjZlOTIzYmUwNTg5N2E0MSBsZWdhY3ktdHJ1bmsKKzIwMDU0IGUzYjVkMDNlM2Q3ZGI3YzZjZmJiM2Y2MGRlYWM2MmJiMzg2ZTlhYzMgbGVnYWN5LXRydW5rCisyMDA1NSAxNDNlZjg4ZWM4NTYzNGI0NDA2NmU2ZGQ3ZTY3NDU1MmIyNzRhYzUwIGxlZ2FjeS10cnVuaworMjAwNTYgYWQ2ODNmMjBiYjE0MDc1YjFhYzIxMTQxZmYwMzJmZTkxNmZmYmJlNCBsZWdhY3ktdHJ1bmsKKzIwMDU3IGI0NGU3N2ExMjk3ODhkZTViOTA2MjI5YTgyMDlhZmRhN2JlNTI4YWIgbGVnYWN5LXRydW5rCisyMDA1OCBkYzlhMTUxYTBiZDUyYTk2ODJiZDA3NzAwZThkMjI5YjhhMjY5MDIwIGxlZ2FjeS10cnVuaworMjAwNTkgOWRiYWIzZDU0ZGVlZWMzZmEwYzU0NmZlMGFlODliODUyYjBhYzRjNSBsZWdhY3ktdHJ1bmsKKzIwMDYwIDM0NmU5Nzg2MzBhOWMzYmM3ZGUxYmYwNmYwNzY1NzQxMDlmYjA0ZDkgbGVnYWN5LXRydW5rCisyMDA2MSAwZDUyMzU4Y2IyODgzNDE5NTQ4ZDRhN2Y4NTQyNjIyNTE0MDk0OGFhIGxlZ2FjeS10cnVuaworMjAwNjIgZDgwNzQ4OGRmYzdhMTJiN2FlM2ZhYmM5MjFjOTUyNDg5Y2NhMjE0ZCBsZWdhY3ktdHJ1bmsKKzIwMDYzIDk2MjE5NmNlNzIzMTU2M2ZiMDU4NDRmYjYzZTZlOWIxM2Q4ODg2MmEgbGVnYWN5LXRydW5rCisyMDA2NCA0ZjY4ZDNmOGZkYzgyMDA4MDU5Nzc5YTg0NWFkNDg5N2NhZWMyZjlkIGxlZ2FjeS10cnVuaworMjAwNjUgMTA5MDJlY2FiY2E5YzczMGExZGYwZWQwNjE3ZTc5MzgyZjA5M2ZmYiBsZWdhY3ktdHJ1bmsKKzIwMDY2IDczZjQxYjBmZjc3NzVhZmRlNWY0MjZhZjFhMGQwZDBhYTlkNTljM2QgbGVnYWN5LXRydW5rCisyMDA2NyBjZDI0NTVjYjEzZWY1NWM2NWVjNmY1ODQwMWMxZWIwYmVjMGUzZDdkIGxlZ2FjeS10cnVuaworMjAwNjggZTQ5MDc4MTAxYTY4NzQxZDc3YTVmMDRiOGNiNzRhYjUxMjFhN2RlMSBsZWdhY3ktdHJ1bmsKKzIwMDY5IDU5NmVmYTdlN2RmODNjZmFmZDdiYThhNDQxYTMwYTYwNDY5MzlkNzUgbGVnYWN5LXRydW5rCisyMDA3MCA2M2NhY2RlYjgwNDViZDUxOWEyNmQ2ZDZhNzk3MjAwMDE4OTVjYzlkIGxlZ2FjeS10cnVuaworMjAwNzEgNzA3Zjk1ZDA1ZTY5MDc2NGU4OGJkMWNjNGE2N2IyNGRkMDM5NGQyOSBsZWdhY3ktdHJ1bmsKKzIwMDcyIDhkZjBmNjVlMzg2MDM1ODc4MTZkMTk1NzdkYjRiOWYwMWE5OGRhNGYgbGVnYWN5LXRydW5rCisyMDA3MyBhN2JiZjMzZmNlMDVhZTRiYmYwMjI5ZTEyNzk5YmI1ZmEzOTJlODliIGxlZ2FjeS10cnVuaworMjAwNzQgNzkxNmQzMmFhMDgxMjVkOGM5ZGY2ZWRmYzYyZGQyODgzYzhmZjQwNyBsZWdhY3ktdHJ1bmsKKzIwMDc1IDVlZTM1NDNlYTMzZjQyNTBlOTdjODFmZThjODU1NDFmNDZkOTdjZjIgbGVnYWN5LXRydW5rCisyMDA3NiA5ZTY0NjgzNTZhMGIzMzcxNjVmNWIyNWRmMDdkMjU1NmNhYzhkOTYwIGxlZ2FjeS10cnVuaworMjAwNzcgNTZkMTk1ZjIxYjRmZTBkYThlNWFjZGE5ZWVhYjlmNDJkN2VmOWQ0NSBsZWdhY3ktdHJ1bmsKKzIwMDc4IGY5YTMwMDE1ZThiMGZjYjRmY2M3ZjVjZjJjZjc4N2MyZTQxMmU4OWMgbGVnYWN5LXRydW5rCisyMDA3OSBmMmY4ZjNlMmFjMjMxYzFiZjQ5YWNkYzVmMjc0NzY4YzBiMTdiZDFkIGxlZ2FjeS10cnVuaworMjAwODAgZDQ4ZDA5Yzc4N2E4NDlkMTQwNTgyZTc4NWZiYjlhYjQzYWY1OTRkNyBsZWdhY3ktdHJ1bmsKKzIwMDgxIGY1ZDM4YzViMTc1MWUzZDcxNmQ1YzE1NjNhMDg3NDlmODJkZWRkYzcgbGVnYWN5LXRydW5rCisyMDA4MiBkNzE4YzI5M2ExZmZhMmI3ZjRmOTgxOGJjNzA4MjZjMGUxMGViMTA1IGxlZ2FjeS10cnVuaworMjAwODMgYmFjYWM3NWQyMmZkZTllODZhMjRkMGQ2MGE3ODU1MzBkYTMzMGM4YyBsZWdhY3ktdHJ1bmsKKzIwMDg0IGViMDZhMDJlMDUwNzZiZTRjZTE2ZDRhZDk5MDY3N2RiMWEwNDNjMzkgbGVnYWN5LXRydW5rCisyMDA4NSAxMTUzNzk2ZDIxYzI0MDcwNmJkMDkzMTIwZTgzM2YxZDdkNTJmOTk2IGxlZ2FjeS10cnVuaworMjAwODYgNDEyMGViZTA4ZGQwNDE2Y2MzZDdjODdjYWNhY2U1ZDBmMTdiMTA5MiBsZWdhY3ktdHJ1bmsKKzIwMDg3IDM0ZWYwNTQ0MTQxM2YyNmI2NWNiMTU0MDBjYWU4MmEyNzc2NThlMDcgbGVnYWN5LXRydW5rCisyMDA4OCAzOGVmNDY2MzU5NDkyNjU2OTAzYzc0NGViMjRkNmQwNWQxZTA3OWI0IGxlZ2FjeS10cnVuaworMjAwODkgMmU3ZjQ3MzE0YWRhYTMxNzc4MzRiY2YxMmQ0YmZkMWY3ZDRhODNmYiBsZWdhY3ktdHJ1bmsKKzIwMDkwIDU3MDVkNWE4YmNiM2NkOTVlNGZhYjBkMzNjMTJhOWVmMzZkOGE3ZGMgbGVnYWN5LXRydW5rCisyMDA5MSBjNThiNmQ4NjhkMDgxNmY1YTY5NGUxMGE2YmUzNTI0MTI1NGRlZTg5IGxlZ2FjeS10cnVuaworMjAwOTIgN2E0OTQwYTRhY2E2ZjcyOWUyOTA4MGNiOWZkZDkzNmQ3NjBlYjQyOCBsZWdhY3ktdHJ1bmsKKzIwMDkzIDcwNTdiNmFhNDZlYzU1ZmNhMTgwYzVmZGU1OGQ3MGUwYzU2ZGFkN2EgbGVnYWN5LXRydW5rCisyMDA5NCBhYzY1NmM4MzdiNmM3NjRiYWMxMGViOTJkMDk2ZjMzOTcyZWE2YWZhIGxlZ2FjeS10cnVuaworMjAwOTUgNmNmYTNkNjVhYjU0NjliZjA2OGI5MmU1MmM2YWVhZDQ4MWUzZTM1MSBsZWdhY3ktdHJ1bmsKKzIwMDk2IDkwNTQ2ZDZlNTQ0NTRmYzY4NTk0YTIwNWY5MTEyZTY2MTEyMWUxYzggbGVnYWN5LXRydW5rCisyMDA5NyBiNzQyY2FmMGE4NjJhNDVjM2YxNTY1NTcwYThiZTczYjIwNTdlYzg1IGxlZ2FjeS10cnVuaworMjAwOTggNDA3ZDYwYjJmYTQxYTk0YzlkZjRlM2M2NjVjYThjMDdlZDMzZWEwYSBsZWdhY3ktdHJ1bmsKKzIwMDk5IDc4MjIzOTQ4ODA1ODViZjdiNmE1YmEyZDJhZjdlN2IyMWNiYjRlOWYgbGVnYWN5LXRydW5rCisyMDEwMCAxNmYxNDVhYWMyZWMxMmU1ZDYxMjE3ODMyYzQ3NDlhN2I5ZjM2MWY2IGxlZ2FjeS10cnVuaworMjAxMDEgYzg4MTdhOWJiYmRkYmM0YzBjY2RhYmUxYTZiMDZhNzljYjZjNzRiMyBsZWdhY3ktdHJ1bmsKKzIwMTAyIDUyZGEwOTRiNTNlYzM5YmY5NTA1YWVmNjE5NmViOGYwMWQ4NGM3NDcgbGVnYWN5LXRydW5rCisyMDEwMyBkM2Y3YzdmYWRlYzAzOTg5Y2FlZDc5NDkwYmU5Y2QwMjg4MWJlYWJmIGxlZ2FjeS10cnVuaworMjAxMDQgNjQ4NzZiYjhhYWNkYzViMWRmOWQwNjM3NDg0MjViMmNkMjU1YWE1NCBsZWdhY3ktdHJ1bmsKKzIwMTA1IDIxNWRjNzI1ZGI4NDA0OWVkNjhmNTVhNzViOGQ3ZWY1MWI2YjVlZDYgbGVnYWN5LXRydW5rCisyMDEwNiA0ZDZlZTdmMmJlZTY2MDlhMGMzMDY3NmNkYjEyYTg2NzU0MWEyNGJjIGxlZ2FjeS10cnVuaworMjAxMDcgZjFhNDllZWM3YzJiZjFkYjc1ODVkMmVjMjczMTA5NjkxZjBkMTUyMyBsZWdhY3ktdHJ1bmsKKzIwMTA4IGY2ZTFmYTJkYjQ4Y2JiN2E0ZjcyZDI1YmU3ZjkwZjAzZDA0ZmE2MGYgbGVnYWN5LXRydW5rCisyMDEwOSBhMWI5OWQwODhjZWE4Mjk0ZDViOTIxMzI3ZDJiNDM0YTAzMTgzMzg1IGxlZ2FjeS10cnVuaworMjAxMDkgYjU5YTUzNmFlMWVmMzc3NGZkODVjMTdmNjIzZTg5MjZiN2I2YzA5NSBsZWdhY3ktdHJ1bmsKKzIwMTExIGIzZGNlMDY4NjhkNmQzNWY1OTAzNDUyZTZlOTBkN2YwYWM0MTdjMzggbGVnYWN5LXRydW5rCisyMDExMiAzZjkxMmZiOGMxODA4MTg0ZWJhNjMyODY3YjIwYWIxZGJiY2JhMzU4IGxlZ2FjeS10cnVuaworMjAxMTMgYjYwMDk2ZDUwMDFhNmUwZDgzNmEwNjYwZmY5NWM3OWNkMTFlMDE5MSBsZWdhY3ktdHJ1bmsKKzIwMTE0IGUzY2MyMGU5ZWEzNmVjZGQ3ODdiZmI3YmZkNmRmMDIxMWEzZWQ3NDggbGVnYWN5LXRydW5rCisyMDExNSBlZWMzOTFhNTVmODQ0MDE5ZWI0ZjNmOWM2NGMxNmUzM2Q4MjMxYzY0IGxlZ2FjeS10cnVuaworMjAxMTYgYjI5MTgzM2EwZWZiN2UxZDE0NjZkM2U0MTcyZWIwMTM0ZTNhYzFiOSBsZWdhY3ktdHJ1bmsKKzIwMTE3IGY5Mzk1Zjc2MjdjNGI3YmYyNGFmNGI2OTkzOTZkNDVmZTBkYzVkNmMgbGVnYWN5LXRydW5rCisyMDExOCBhYjcwNzIwOTQwOWJiOTU4NTc0YWQzNDYxMDY1YTQxNWE4MTBkMjg3IGxlZ2FjeS10cnVuaworMjAxMTkgMDJhNGIwY2ZjNTdlMTM1NGIwZWY3ZTBhNjZlM2M5NTMyODA5NGFjMiBsZWdhY3ktdHJ1bmsKKzIwMTIwIDNlYjhkNzI1OTk2OTI0YzJhNzU3ZmMwYWM5NjE5NmQ0MGZkNjcxOGUgbGVnYWN5LXRydW5rCisyMDEyMSAzMmZiNjY0M2FkZjFmMDRjYjg3OGViNmZhYjU1NTVjZTZiYzcxNWY4IGxlZ2FjeS10cnVuaworMjAxMjIgOTJiM2UwODMxOTcwMmE0YzczM2I0YmY0MzJjYWUwYzBjOTkyNjZiMiBsZWdhY3ktdHJ1bmsKKzIwMTIzIDQ1Y2RhMWIzOTM1NWJjNzY2MzllM2Y1YWRkOTcxN2Y3MjBjNTIyZGUgbGVnYWN5LXRydW5rCisyMDEyNCBiZjRjYzk5ZDcxMWQwYWM3NGYwMDE0NTlhNWNjMWI1ZWUzZDgzYzE0IGxlZ2FjeS10cnVuaworMjAxMjUgNGUxOWZiOGNmMWZiZDM5ODcwZWNiYWQ2YjZkNzg4MjA3OGU3YmUyNyBsZWdhY3ktdHJ1bmsKKzIwMTI2IGQyYjAxZDRlMTdlOWRjZmQyYjI3NmE5OGNhNzNkNDlkZGQwZjEwZTMgbGVnYWN5LXRydW5rCisyMDEyNyA3MWFmM2I2MGFhNjI5MTIzYTU2NDMyOTRjOWRmZWQ1Yjg2MjFmZWQ1IGxlZ2FjeS10cnVuaworMjAxMjggNWY3MTE4NWVmMmI1YWRkZWRlN2FjMjFiYmRlN2NmMmY4NzMzNWZjNiBsZWdhY3ktdHJ1bmsKKzIwMTI5IDE0MTIzMDk1NjMyNTZlMWU0MzAxNjNmYzdmZmVlYzc2Njg1ZTBlNGYgbGVnYWN5LXRydW5rCisyMDEzMCAzOTBhODMxNWQ2MzQyYjRjMmY3MGY4YTIxYmVhMjQ0ZWM4ZGJlYzc5IGxlZ2FjeS10cnVuaworMjAxMzIgN2MwNDcyOTMyZmJmOTYwYmQ1OWJiMjhkMmM5MmExNzYyMzJlNWVmMyBsZWdhY3ktdHJ1bmsKKzIwMTMzIDIyZDg1MDE3YmVjZTg5ODk5YjcyMTA2MmYzMGIyOWNkZTkyMDE3MjkgbGVnYWN5LXRydW5rCisyMDEzNCA1MzZlOGRkMzU5NTMyNDRkMzAyNmZkZjMxOTZiNmE4NGUyN2M2M2VhIGxlZ2FjeS10cnVuaworMjAxMzUgZWU0ODAzODI2Nzg0Nzk2NjkzNTc4OTdiMDQwNDNmMTc2MTk5MTUyMSBsZWdhY3ktdHJ1bmsKKzIwMTM2IDFiMTJlNjM0MDAzODk0Y2MxOGM4NDEyMTU4ZmQ5ZTdlMWY4ZTlmOGYgbGVnYWN5LXRydW5rCisyMDEzNyBhMzQwYmE0YWFjMjcwZDg0YWY2YjhkMWUwMjJhN2Y3ZDY3MjFmYTA5IGxlZ2FjeS10cnVuaworMjAxMzggMjVlOTNhMDFmODZkOWVmMDVkZTQ4MmZmYTEyYzY3ODAzYjQ5NjBlMCBsZWdhY3ktdHJ1bmsKKzIwMTM5IDAzNzdmOTI3Y2FmYTMzODQ2Mzg2MzQwYjJmZTdkNDQ5YWYwN2ZiZDcgbGVnYWN5LXRydW5rCisyMDE0MCA3NTEwM2JlZjBjMjQ1NWQzMzg2Y2FmMDQ0N2RmYmE0MjNmMzUyNzQwIGxlZ2FjeS10cnVuaworMjAxNDEgNTk0NzJiY2JmYjhlOGE1YWJkNThiMTcyN2QwM2I1NTdhNzFjNWI4NiBsZWdhY3ktdHJ1bmsKKzIwMTQyIDAyY2VjMDBmMjJiYjUzY2Y2MDhkMmUzMDZmMGI4MTIyZjhmZWQxMGMgbGVnYWN5LXRydW5rCisyMDE0MyA2ZDMwNTUyY2I0Zjk5MDg3YTFmMzkwYWZkZWIxMjQzZTkyOTZjYzE1IGxlZ2FjeS10cnVuaworMjAxNDQgNGFhN2FmYmYyOWQ4MjE1N2UyNDljODMwZjFiOTc2ZDgxMzQ0YjJhZSByZWxlYXNlMjAtbWFpbnQKKzIwMTQ1IGZkYzUyMmRjOWRmNTU2Y2NhYmJjYTdmZDk2NzQ4NmRlMWI0MTQzYWQgbGVnYWN5LXRydW5rCisyMDE0NiBiNTUzZmJhYzE0NmRkYmVhZDA2OWI0NjkxOWExMmIyMjgzNGVjYmIzIGxlZ2FjeS10cnVuaworMjAxNDcgODdkNTA5ZDA4NWEwZmMzODg1MmQ3MTk4NTY0ZWZlZjM0ZDY4MTgwMCBsZWdhY3ktdHJ1bmsKKzIwMTQ4IDg3MGRhMjRkNGJhZjI0ZTdhZjA3OGYxNjA1MTI5MDRlYzU1ZTg0MmYgcmVsZWFzZTIwLW1haW50CisyMDE0OSAyMmQzNDk3NDgzODRmODY2NmE4MGE4NmU4NjliNTMzNmIzOWE5M2MwIHJlbGVhc2UyMC1tYWludAorMjAxNTAgYzRhNWJkMDg4NTFiY2ZhYjVmN2FkOGE2MjA2OTY3ZDgxNWJiYjYyMiByZWxlYXNlMjAtbWFpbnQKKzIwMTUxIGVlMjY0NjY5YjY3ODBlOTdlZGU1MDRmNDAyZWJjM2UzMzZmZDM2NTggcmVsZWFzZTIwLW1haW50CisyMDE1MiBhMDAyOTE4ZmMwYzI3NjQ0YzQ3OTkwYzEzNzFiOTg2MzMyY2RhN2QyIHJlbGVhc2UyMC1tYWludAorMjAxNTMgMTJmZWU3ZmIwMTliM2I4NDM1NmIzMjJmY2M3NmJiYzJlYzllN2VmNiByZWxlYXNlMjAtbWFpbnQKKzIwMTU0IGJlYjI5ODJkODVhYTgyMmM0NTRmZWZlNGM5NzA0MmZmYjE1MTBjOWMgcmVsZWFzZTIwLW1haW50CisyMDE1NSAxMWEyMWQ1OTI4MzQ4N2E1ZTNjYTYxNzE4NjllYTRmOGMxNzQzMjA0IHJlbGVhc2UyMC1tYWludAorMjAxNTYgYTYyNmFjYzMwZmMyMzk5YWJkOWFiYjk5Njg5ZWFkNjY0NjllYjkxZiByZWxlYXNlMjAtbWFpbnQKKzIwMTU3IGY0Y2E5M2U4YTJkNDc5NjRjODdkNzhhNmEwZDY4ZTNlNjc0NDIyMTEgcmVsZWFzZTIwLW1haW50CisyMDE1OCA2MzkzZjU1ZGJkN2JlOWRmN2UyNzhjYmU3YjAzYzE5MmNhNWYwNzExIHJlbGVhc2UyMC1tYWludAorMjAxNTkgNWVkNGM3ZThiNGY5OGVjZmRmNDYzNWFjNjc1MGJhMDkzZmUzMmY3ZiByZWxlYXNlMjAtbWFpbnQKKzIwMTYwIDlkZGJiNzZjMzExNDU0MzViZTJmYWZjYjkxNmVhYjM1ZjE1YzRhODUgcmVsZWFzZTIwLW1haW50CisyMDE2MSA0MmIxYTY5OWE1ZGRjMWNkNTAwYjU5NGRlYWVhNjk2ZWUyNDZiOTNmIHJlbGVhc2UyMC1tYWludAorMjAxNjIgZDQ2N2QxODRiNDI5MzA0ZTgzYzFjMDI4YzEwM2ZkYzBmYjEzMTExNiByZWxlYXNlMjAtbWFpbnQKKzIwMTYzIDA5M2U5YTI0ZWU3NjdhMWQ0Y2NkZWYxOTZkMTViZmI5ODU5MjcwOWUgbGVnYWN5LXRydW5rCisyMDE2NCBlMmU5MTQ2ZjRhYjRkOWMyOWJmMzRiMGIxMTA0NDVjOTdlODViOTFiIGxlZ2FjeS10cnVuaworMjAxNjUgMjRkMjJlZWU5NGNmMzcxNTczZDEyMzJiNmNkMDEzZTMyNjRhOTI3MiBsZWdhY3ktdHJ1bmsKKzIwMTY2IDcyZmQyNjU3YmUzNDI4N2Y1OTZmMzRiYjZiN2IxZDU2YjFiMGYzMDIgbGVnYWN5LXRydW5rCisyMDE2NyA1MzZjYzEyNmZiOWY4YTA3MTEyYjA1MGJkMWI3NDJiYWZmMDhlODk3IHJlbGVhc2UyMC1tYWludAorMjAxNjggNmRjNDNlMGM2YmJmNTAzNTM0MzMwMDYyZTczYjcyOWVlMGJlMTkwYyByZWxlYXNlMjAtbWFpbnQKKzIwMTY5IGU1MTBjNGNjNTczNzYzZDNkY2QxNGI2MTJmYzk1YWFlMGUzMjJjMzkgcmVsZWFzZTIwLW1haW50CisyMDE3MCBhNDY5NjRkNzExMWRkZWY0YTJhMjkyMWZkNzRkMGMzYzRkNDY2N2NkIHJlbGVhc2UyMC1tYWludAorMjAxNzEgZDdlMGQyMGNkZGFkYjM2MzJlNWUwMDA2ZjUyMGI5MWEzOGMwZjU5NCByZWxlYXNlMjAtbWFpbnQKKzIwMTcyIGQ5ZmYxMzEwMGUyZjIxMjJjYTIzYTk5NDVmNjU1OTFhNWE2ZTNlNGMgcmVsZWFzZTIwLW1haW50CisyMDE3MyA1Y2YzNTVmNjdhYTM3YjFmNmZjZGQ1MGI4ZjliYWUzYjRjYWE2OTViIHJlbGVhc2UyMC1tYWludAorMjAxNzQgNTczYTkxMzg4NzA1YjUwMGZjYTViNGQ3M2FjMWYzZGYwMDFhYzAzOCByZWxlYXNlMjAtbWFpbnQKKzIwMTc1IGNjZWYwMmRhODhhNjdmOTkxODM3NGU4YTdlYTBjMTg0M2Y0YjE3NTkgcmVsZWFzZTIwLW1haW50CisyMDE3NiAzMTIwM2Q5OTM1ODI3M2NmNzMzYjlmZTFkYzIzZmM2Zjc4N2JlMTE1IHJlbGVhc2UyMC1tYWludAorMjAxNzcgOTk1NmExYzVkNDQwNTRkNjRmNjFmODg1YWViMGY4MWU0ZWNiYzEwMSByZWxlYXNlMjAtbWFpbnQKKzIwMTc4IDE5MmYyNWU0MWZiYmVlOTg4YmYxYjVkOTk1Mzg2ZDRkMWRmMTgyYTkgcmVsZWFzZTIwLW1haW50CisyMDE3OSAyYjU3NjhjMTM1OTkyMDI5M2U1NmUwZTg2MzVhZDJhMzc0NjQzMDQxIHJlbGVhc2UyMC1tYWludAorMjAxODAgOTkyNDYwYzY2OGMxNWJmOTI2NDg0Y2VlMzAzNmM5MDdlMzg4NGQ5NSByZWxlYXNlMjAtbWFpbnQKKzIwMTgxIDhkZWNhNzllYTZhYmI1NWUzM2Y4YjM4MDU3Yzk1NmI4ZmEwZDg3OGMgcmVsZWFzZTIwLW1haW50CisyMDE4MiAwNDM3NzViM2I4YjI5NjYzNDc0OWJmOTIxZjlhYzgwZjhjN2U2NjZiIHJlbGVhc2UyMC1tYWludAorMjAxODMgZjM0YzkwOTg5MTM4MzQ1ZGNmNjczYWQyMzIzNTViNDk2ODVmNjJlYiByZWxlYXNlMjAtbWFpbnQKKzIwMTg0IGQxYzEzNTBhM2E1ZjQyYjU4NWM2OGM0OThhYTI0ZWM4ZDQ3OWRhZDcgcmVsZWFzZTIwLW1haW50CisyMDE4NSA1YTRlMDgzOWNjZTc2Y2YwNmRlMjRmMTM0ZTY2YmVmNDdlYWFlMzExIHJlbGVhc2UyMC1tYWludAorMjAxODYgNWJkNjg2ZTBlY2Q0MWY2MDAxOTg3Mjk0YmZhODdiZmNmMDNlNjZkYyByZWxlYXNlMjAtbWFpbnQKKzIwMTg3IGQxNmVkYzcwNGRhMWY1OGNjNTRkODI4ZjJhYjM4ZGEyZDNmOWRjMTAgcmVsZWFzZTIwLW1haW50CisyMDE4OCBkNTNhOTY3OWE5M2JiOGJlODFhZDk1ZDNlMDNiZWYzZDI1ZDE2OGY1IHJlbGVhc2UyMC1tYWludAorMjAxODkgOTc3NmNmNWRiZmUzOGQwYzc4ODFiNmRlZTJkMWI1NWQ2YmIwYjNmMCByZWxlYXNlMjAtbWFpbnQKKzIwMTkwIDc2Yjg5ZmEzZWYzNDA2MGEzY2MxZDQ2ZTRmOWEzZWE1ZjQ0MjZkZTggcmVsZWFzZTIwLW1haW50CisyMDE5MSBjMDExNGVkZmQzMTM3NmE4ODZjYmQ3Y2FhOGUxMzUzMThkZjA1YjRlIHJlbGVhc2UyMC1tYWludAorMjAxOTIgZWYxMjIzZDg0NDJkYzU2ODFkOWVhNDhlZmExOTU0MzY3MjAyYmM1NSByZWxlYXNlMjAtbWFpbnQKKzIwMTkzIDZiMGZmNTI5ZDYxNTAyNDNiOTBlMDllODZlMWJiNjc0NGRkYTQyNjYgcmVsZWFzZTIwLW1haW50CisyMDE5NCA3ZDA0MjQ1ZWQ3NWYzOWJmMmU0ZmQzNGJjZGE2NzFmYTc1ZTg4NzZmIHJlbGVhc2UyMC1tYWludAorMjAxOTUgZDY1NDdmZjk0MTZiYWI4MTlhYjg5YmRhOWViMDhlMDI3ZmNhMzUzZCBsZWdhY3ktdHJ1bmsKKzIwMTk2IDAzYmEwNjI0NzQ4NjYzMGFhZmE3ZTBmNGVkY2EyMzA4ZTFlZjVlM2MgbGVnYWN5LXRydW5rCisyMDE5NyA4MzZjZGY4ZDEyNDVkNWY5MmIzZDVkMzZhODUzNjlkOTQ5MTJkNGNiIGxlZ2FjeS10cnVuaworMjAxOTggZWEzMjZlYjQ3NzVjYzFjNDBlZTFlMjEyZDVkZDc1OTY4ZTAxNTFlZCBsZWdhY3ktdHJ1bmsKKzIwMTk5IDQ2YTZjMjhkMzVlNWRiOGQxNGE2MTcxYzM0NzY5MmI0ZjQ5M2Q1NjkgbGVnYWN5LXRydW5rCisyMDIwMCAzMTFlNmFlZWY4NThhZDUwNTIzZTA2ZWE2NTEwNTMzMTk1ODkyNGUzIGxlZ2FjeS10cnVuaworMjAyMDEgMjg4ZDgwNWFmMTQyMThmM2Y0OTI5OTViZWJiMjZkYWUwZDY0N2Y0OSBsZWdhY3ktdHJ1bmsKKzIwMjAyIDUwNmEwODBkMzllY2ZjMjI5MjM5ODc0YWZlMGNiZTYxYmIyYTFiYzUgbGVnYWN5LXRydW5rCisyMDIwMyAzN2Q5ZWQ1NTQxNmZmMTlhZDY0ZTRmMjk4ZTMzMzZlMDc0MzY5MzU3IGxlZ2FjeS10cnVuaworMjAyMDQgMGNkZmNjZGI2ODcxMGExMGM1NjY4ZGRkZjMyYWQzNDllOTQ2NWE0MiBsZWdhY3ktdHJ1bmsKKzIwMjA1IGIwYTdmYWY5OGE4ZWRiM2YzYWUwM2FjNDBmM2ZjMzQ3ZWVjOTYxZDggbGVnYWN5LXRydW5rCisyMDIwNiA3NjM1Zjg4MzhjNjg5MmUyOWMxNjBiODM5OGNkMmE0ZDQ5ZTZmZTYxIGxlZ2FjeS10cnVuaworMjAyMDcgYjczNTQ3YmY4YmMyNDg3MjkxYzUwZjVkYjNiZGVmNWM5Nzk3ZjY1YyBsZWdhY3ktdHJ1bmsKKzIwMjA4IDExZWJhNWJiZmExNGFiNTFhMzIyYzNjNDcyMmVkMjE1MWU0OWE5YTUgbGVnYWN5LXRydW5rCisyMDIwOSA2YmU4YmI0ODA4ZTE0ZWY5ZGRmOTg4NmI4ZWM1Njg1OWJiNzJmMTdkIGxlZ2FjeS10cnVuaworMjAyMTAgNTdhNWY2YjAzMzdkMWUxNzM4ODRlYjg1NGE2ZjhkZjIxNmIyOTVhZCBsZWdhY3ktdHJ1bmsKKzIwMjExIDMxMDA2NmI5OTJmMmY4YThlMWI3ODcwZGYyYWU5M2ZiOGI4YTc0YTcgbGVnYWN5LXRydW5rCisyMDIxMiBiMjVhMjQxMzAyMGUyMzU4Y2VkNzk5ZDcxZDJkZDkwOTg5NTFmMjYzIGxlZ2FjeS10cnVuaworMjAyMTMgOTkwNmRiMmExZmZhNzg2MTE0N2M3NzkzMjRiYzQ3YzY5OWE5NThiZCBsZWdhY3ktdHJ1bmsKKzIwMjE0IDkyYjY1ZjEyMWEzZTk3NjcyMDFlYTcxMDZkNjM2YTA1YjkxNWQ5YWEgbGVnYWN5LXRydW5rCisyMDIxNSA5YjhlYTYzODdkYzYwOWZkMGE5M2Y0ZjQ2OWJjNjg4MDgxM2U0N2MwIGxlZ2FjeS10cnVuaworMjAyMTYgYmQxMTBlYWRjMTlhZDQwOTk1MWJmM2FmMzAyYzE0ZDQ5YTQ1ZTc3MCBsZWdhY3ktdHJ1bmsKKzIwMjE3IGU3ZjViNzBiMDYwNmFiYjBkOGI1ZDk4OTNiNWM4OGI1NzYwMjI4OTAgbGVnYWN5LXRydW5rCisyMDIxOCA5MTFlMjExYjg5MzBiOTBlMjRmYmUyMmQxOWRhNWIzYTIwMDczMDhmIGxlZ2FjeS10cnVuaworMjAyMTkgYTNkZWIyMDFlY2RhMTBmODE1ZGFmNGFkOTI2YTE0ODM0YTg3ZDQ5NyBsZWdhY3ktdHJ1bmsKKzIwMjIwIGJiOWUyMTQwMzVlMTI1YjkxMzQ4NWMyNzUzNmUzNjBjNGY1NjM0NzYgbGVnYWN5LXRydW5rCisyMDIyMSA3NjA3NTQ0MThlZTAyNzBhYzRlZGViODVhOWEzOWE2Y2MxODdmNDg0IGxlZ2FjeS10cnVuaworMjAyMjIgMDgwODI4YmY4ZGJkZThmZTE4YjE0NTNiNmE5NmNmNzlhOTkyOTY1YSBsZWdhY3ktdHJ1bmsKKzIwMjIzIDRiMzQ2Y2MzOTg5YmFhOTkzZWE1NzU4ZGM5NGRiMmY0OWI3MmU4ZTIgbGVnYWN5LXRydW5rCisyMDIyNCAxMmY3ZjE2N2FjNTMzZDQ2YTRmZWU0MmNjMWI2MWM1MDZlOTk0NWFkIGxlZ2FjeS10cnVuaworMjAyMjUgZDMyOGNmZWIwYzc1YmMwNDY0ZGVkMDBhZDVjNzhmN2ZhM2QwMDY2MiBsZWdhY3ktdHJ1bmsKKzIwMjI2IDE4MWQwMTMyMGVmNDNlM2Y1NjRlNzZkNDBlOGZhMTBmZDA2MTczOWYgbGVnYWN5LXRydW5rCisyMDIyNyBiM2ZkNDRmZmFiMWU5MTYxMDJlMmY2YWIxM2ZlYjFlOGE0NDQwZTQ0IGxlZ2FjeS10cnVuaworMjAyMjggOTJiNjBkZWU3ZjA4MzVkZjI4OWNjZTU2ODIxNjYxNWI3YjgwNWE1NiBsZWdhY3ktdHJ1bmsKKzIwMjI5IGNjYWU0MTJiYmMzZTIyY2ZhNjI0OWE3MDJhOTdjOGQyN2IyMTA2NDIgbGVnYWN5LXRydW5rCisyMDIzMCAyMTQ2YTczY2UzNWMwYmRkNDQ5OWYzZWU5YjRiMTdiZTg1NGZmMTZlIGxlZ2FjeS10cnVuaworMjAyMzEgOTZlYTBlY2NkYjMxNzM3ODg4MzU4ODE2YjY3NzE2NmZiYTBmMjhjNSBsZWdhY3ktdHJ1bmsKKzIwMjMyIGMzMjc1MmEyODY1MjIxM2UyYzM3ZTY3ODM3YzIxZGIwZDExNTA1MjQgbGVnYWN5LXRydW5rCisyMDIzMyBhNTcxMDU3OGMyZTAyMjE2NjI5MzM0YzFhMWI3Y2UxZTViYWJmODIzIGxlZ2FjeS10cnVuaworMjAyMzQgYWI0ZTRjYjA5NGMxZjY0MzBkNDM4YzkzZjdhZmM3M2FhOWYyODc3MyBsZWdhY3ktdHJ1bmsKKzIwMjM1IDgzZWU2M2JjZjAzNjU5ODcyN2ZiNjI3MDNiYTEyZTBmMjA1M2Y4YzEgbGVnYWN5LXRydW5rCisyMDIzNiA5ODc2ZDZiYWY4NDM4OTYzODFjZmM4NjJlY2RlMDlmYTQxZDUzN2VkIGxlZ2FjeS10cnVuaworMjAyMzcgZGU5ODU4NTMwYTU1M2RjODRlYWFkZGU4MjE2OTZiZDExMGFiOTczMCBsZWdhY3ktdHJ1bmsKKzIwMjM4IGYxZDJlODhmYTExZGUzMjYwNTgzNTkwZTIxOTVlMzFmOGFmZmQ3NzQgbGVnYWN5LXRydW5rCisyMDIzOSA1YWZmZmNhNjZlMmZhZTI2ZjIwNjAyN2ZhYmIwZmMwOWU3MTlhZDYyIGxlZ2FjeS10cnVuaworMjAyNDAgZjhmZGJlYjczNjY3MDhiNzMzOWNmMWQ3ZDhjODQ2NGUyNWE2MGRlYyBsZWdhY3ktdHJ1bmsKKzIwMjQxIDg3Njg2MWYxMzU0MzZjZTdjNzljZjk2ZWMwNWIyOTcwMTY1YWEzZjAgbGVnYWN5LXRydW5rCisyMDI0MiBhOWVmNDRiYmQ5NjgyOTA1OTdiNTY4NjY2OTRmMjMwN2U4Mjc2ODg2IGxlZ2FjeS10cnVuaworMjAyNDMgZTcyMmQ0ODgzZTE5NzE1ZWYyODhhNTJlMTY1M2RmMGNjMDNlNDc3YSBsZWdhY3ktdHJ1bmsKKzIwMjQ0IDMzMDhhZmNhYTEzMTU1ZDczZDYzYjNlYmViM2RkMTgzNzRjYTdmZDMgbGVnYWN5LXRydW5rCisyMDI0NSAyZDMwYTA5OTcwNWYzOWZjZGNlYWFlZDg1ZDYzNDk5NjdlMjdiMWViIGxlZ2FjeS10cnVuaworMjAyNDYgZWQzZTY2ZjMwODM3YzIyMTE2NTE2ZmNjZmQ3ZTNiNWY2MzY5M2E2ZiBsZWdhY3ktdHJ1bmsKKzIwMjQ3IGFlZDZiMTQzNmRiNDc4NzBmNWM4MDA1OTQyMzBhNDQzOTkwYjNkYTAgbGVnYWN5LXRydW5rCisyMDI0OCAxOTQzMzE4ZmFlMzE3N2E1OGVjYmVlYzBmM2M5NGRjODE2NDk5NTI0IGxlZ2FjeS10cnVuaworMjAyNDkgNDQ2OGE4ZGE2N2NhMDEwNDI0ZWFlYTc0YTc4MjhjZGJmMGY2ZjVmOCBsZWdhY3ktdHJ1bmsKKzIwMjUwIDI4Y2YwYTc5NDNjZmQ3YjIzNTMxYmMyZGQ2OGIxNDMwNzMyYTRiZGMgbGVnYWN5LXRydW5rCisyMDI1MSBjYzhhMjFiYTY0NDk5OGNjZWFkNDI5NjkyNDUzZTdiZmQ4ZDI0YTNmIGxlZ2FjeS10cnVuaworMjAyNTIgM2FhZWRiYWM5NWIzMTJiZTVmMTM5MTg4NDk5NDk1NGI2ZmM2MTg2ZSBsZWdhY3ktdHJ1bmsKKzIwMjUzIGExODQwYjliMTRmMTQ1ZjBkMWYxMGQ5NzJjYTZiN2QzZmNlODA5ZjIgbGVnYWN5LXRydW5rCisyMDI1NCA5NjIxZDBmYmMyZTUyZjBkN2Y0OTgxYjczZjk3MGViZjBlN2YzMzY2IGxlZ2FjeS10cnVuaworMjAyNTUgY2E1NjVlM2QzY2M1YzA2OTdmY2EzZDNiZTUxODM5ZGYxNTc2YWNjNyBsZWdhY3ktdHJ1bmsKKzIwMjU2IDZiOGQ5MWVhOWRlMzQzNDBmZGRhNmQ0MmYyMTJiZGRlZTFhZDk4NDUgbGVnYWN5LXRydW5rCisyMDI1NyBkMTA5ZWM2NjdlYzI1ZDhmZWQxMDYyYTM0NzZmMGZlNjhmMTQyMWE4IGxlZ2FjeS10cnVuaworMjAyNTggOGEzYmExMGYxMGY2YTI1NDkxNmFkNDgwZWFiY2ExMjM4NWI3YzFiMCBsZWdhY3ktdHJ1bmsKKzIwMjU5IDExZThiYjRkODQ1ZDJjMGJlNTNmZTAxYWJiZjU2NjM4MTE3ZGMzYTQgbGVnYWN5LXRydW5rCisyMDI2MCA1MDc5ZDZlM2I2MTUwODAwNzg2NjVmY2I0ZDYyZmQyNDdiZDBiMmIyIGxlZ2FjeS10cnVuaworMjAyNjEgZTJiM2U2ZDg1MzQzMGEyMTBmY2JhYWZlZmZhZTNhZDExNTAzMzFlYiBsZWdhY3ktdHJ1bmsKKzIwMjYyIGJiNzVkOTNmNmEzMWM5MzM0ZGVhNmMzNWFlZDgwYmRjNDdhYWRhNzcgbGVnYWN5LXRydW5rCisyMDI2MyBmMzk4ZTU4NTZmYTc0NjUzMDU1YjhiYmMzOGE2MzkzMjkwMDFiMWY1IGxlZ2FjeS10cnVuaworMjAyNjQgNjVmMzYzMjM2ZWNmN2ZhNmE4MzZhYTlmMzVjZGMxZTIzNzQyMTkwMSBsZWdhY3ktdHJ1bmsKKzIwMjY1IGU4NDNlZWU3YTMzZTg2MjViMDYyNmE0OTdmZmE2NDIyMzI5ZjFiNWUgbGVnYWN5LXRydW5rCisyMDI2NiBkMzgyNzkyMjkwOWNhMjU3NTRkYjljNzY1MWUxZDUxNTQ0MTUyY2UyIGxlZ2FjeS10cnVuaworMjAyNjcgZTU0ZTExYzMwZTRiMTU0OTdjM2Y3MmNmZTQ2OWUxODRkMDIwM2EwMiBsZWdhY3ktdHJ1bmsKKzIwMjY4IGNiNDBlNzcwYzkwM2RkOGUwYjk5ODk5MWYyYTEzNGI1ZjkyNDIxYWUgbGVnYWN5LXRydW5rCisyMDI2OSAwYzg3YWM2NzRjZTE4MjA2NzRhOTgzZDRjZjVkMjMxYWU3YTM0NDhkIGxlZ2FjeS10cnVuaworMjAyNzAgYTgwYTg0N2Y1ZjRlYmE1OGJlMTAwOTUwNDQ2ZmJiYzU0ZmQxNjNmNiBsZWdhY3ktdHJ1bmsKKzIwMjcxIDVmNjg3NTRlYjNiNmJjODAwN2MzM2U5NzBmZDBlY2M5MWI4ZDgxZGYgbGVnYWN5LXRydW5rCisyMDI3MiAzMGU1MjcwZGIxMjgzYmY4Y2RhMGFhODZkMTYyNmRmZDg0YzM5MjNkIGxlZ2FjeS10cnVuaworMjAyNzMgMGY2ZDhmZTRhM2E5MWNmZDdjZGM3MDkyN2Y1YTQyYWZlY2RjY2M0OSBsZWdhY3ktdHJ1bmsKKzIwMjc0IDQ2MjJhZjRkYTllMjgyZmIxZGNlNzhhNWFlMzExOWNhMTlkNDRhMWIgbGVnYWN5LXRydW5rCisyMDI3NSA4YTJkZDk3ODczZjI1NzYyZmY0YjdjYjMzOTcwZmE2MjVjYjkzNDg5IGxlZ2FjeS10cnVuaworMjAyNzYgZDM2ODU1MmMyYjcyNjEwMWY5ZmZiODY5YWM2NTY1NTc5YWQ5NjgxZiBsZWdhY3ktdHJ1bmsKKzIwMjc3IDdjNGJhYzJmN2IzYWI3MThlMjM5YjcwMzQ1MWNlODUxNjNjOWQ1OWUgbGVnYWN5LXRydW5rCisyMDI3OCA5YjI5N2FmMThlMmYzMTUwODQ0OWNlNDY2MjNiN2U0ODE4N2M4ZmQ2IGxlZ2FjeS10cnVuaworMjAyNzkgYjYxMmI1MTlkNDFhNTQ2OTg3NmU1MzA5YTllNmM3MTI2ZjRlYzUyMSBsZWdhY3ktdHJ1bmsKKzIwMjgwIGJiY2M5ODM3MzEyZThlNTlmNmJjNTgwOWQ1M2E4MWY3ZTNjY2EzNDggbGVnYWN5LXRydW5rCisyMDI4MSAwZWMwNmI0NzU1ZGI3MjRkNTI2ZWRhMzkyNDNlM2YzNGNjNzRmODEyIGxlZ2FjeS10cnVuaworMjAyODIgZTRhYmU3NGJjOTczMmQ3MjhiMzFhNWY0YTUzOTUxMjkwM2MyZTZlNyBsZWdhY3ktdHJ1bmsKKzIwMjgzIDQ3MWNlMGZhYTc3NTBmNDIwOGU2OTUyMTZlYzc0NGQ3NDFkZmJmY2YgbGVnYWN5LXRydW5rCisyMDI4NCBiMmJjNTYzMzIwNDVhZTAyNTI1YWI5MzFmODgyYzQwN2M1MWU1ZDlhIGxlZ2FjeS10cnVuaworMjAyODUgMTEyYmQ0N2UwNzhkMzE5MzBjNmM1YzgxNzJhNThhMGVjYTY2NzQ3MCBsZWdhY3ktdHJ1bmsKKzIwMjg2IDY4NzM1NDlkNDg0Yzc1ODVkNjBiZDJiZjM0NzRlODhhMmEzMmIwMmMgbGVnYWN5LXRydW5rCisyMDI4NyA0YjA2ZTRkYjAwNzVkYzNiMDU1YmZlZmRjMThlNmNlYTNlNGMzYjQ4IGxlZ2FjeS10cnVuaworMjAyODggNzE3YjBjOGRlNzFlOWExMjY3ZWU2MmNjOGQ4ZmI2ZDdjMmZmZmU0OSBsZWdhY3ktdHJ1bmsKKzIwMjg5IDg2M2U4MDczYzdhYWYzMWYzMTdiZTg3MmZkMWQ3NjU3ZGMzYzA5YWUgbGVnYWN5LXRydW5rCisyMDI5MCBiZWI5ZDJiMDI4NDY1N2JlMjNmYTlmOWIzNDQ5OGUyZGFhODhjODlmIGxlZ2FjeS10cnVuaworMjAyOTEgY2Y4YTU5NWNlYzMzNzQ4YjUyMzYyNDA0ZjczMzUzYTVhNmY4OWI1OCBsZWdhY3ktdHJ1bmsKKzIwMjkyIDAwNGM5YjAzMTkyNDFjNWMwNTQ2YWMxMGNiNTliNTRiOTA0N2I3ZTQgbGVnYWN5LXRydW5rCisyMDI5MyA3MDc2M2M0NzUyZTJmYTNmN2VjNmJhMzkwMTI1MDQ2YmYwMDM5YTg5IGxlZ2FjeS10cnVuaworMjAyOTQgMTM4NTdmYjMzMDE3NzBjZDJjYTQyNzZiMWEwYmYyNTlkNDEwYWZiOSBsZWdhY3ktdHJ1bmsKKzIwMjk1IDg1M2Q2YTk3YjdkOWI0ZDM4NmM3MzVmNmNmMGEyNzBjNmU4NjUzNWIgbGVnYWN5LXRydW5rCisyMDI5NiAzYjkwNWYyOGYyMjU2OThjOGI0ZDNmNTZjNTEzMDQ3ZDk4ZWFmMzkxIGxlZ2FjeS10cnVuaworMjAyOTcgMzRlYzVlMmZhMzU2MWVjYmYwM2FlYWVjYTg1OTlhZmM5YzA2MjBhNCBsZWdhY3ktdHJ1bmsKKzIwMjk4IDAxNzkxYTA5NzQ1NmI2ZmU3NTEyZTYwOGQ3MTExMDQzYTIxMmIwZTkgcmVsZWFzZTIwLW1haW50CisyMDI5OSBhZmJiNjViNjBmYTIwMzgxOTMyNDFiNTA1NjYyNDcwZTkzMjZlYTkzIHJlbGVhc2UyMC1tYWludAorMjAzMDAgYzllMDdiYzMwM2EyM2VkMGM3ODNiOTkwNjFhMzE5MjcwZDY5YzIyZSBsZWdhY3ktdHJ1bmsKKzIwMzAxIDlkNzZkODU1MmMzNjEyNzc0ZDZhYWFmNDc4ZTY0Nzk4NmQwZTBmOTMgbGVnYWN5LXRydW5rCisyMDMwMiA2OTRiOGMzZjI1ZTdjNmQzNzMxZjE0MjU1OWE4NDJhOGM0ODg3ZDI0IGxlZ2FjeS10cnVuaworMjAzMDMgODRhM2Q3MGVjNmY0NGQ2NWZhZWJjNzQ5ZDhlOTIzOTgyNTU5NTVkNiBsZWdhY3ktdHJ1bmsKKzIwMzA0IGY5Njc0ODllZTNiNjRiYWQ4NmU3NDVkMTVmZDg2N2U0ZDI1YmY2ZjMgbGVnYWN5LXRydW5rCisyMDMwNSBiZDg0NGIyMGI5Yzg1NDRmYjkxOTk3NzhhZmU3OWYwODk3MmRlMTRlIGxlZ2FjeS10cnVuaworMjAzMDYgMzcwNGJlM2RiMzAyODYyNjBmNjI4YmJmYjZhYmMxOGVmYWVkZTRmYSBsZWdhY3ktdHJ1bmsKKzIwMzA3IGJhZDJkYWViNzQ0MGMzMzEyMDQyZDU2Zjg2NDBmZWZkMmQyN2NmNmEgbGVnYWN5LXRydW5rCisyMDMwOCA0YzQ5N2M1ZTcyYWRjZTFkYjhkY2I4NWEyNmM0OTIxMzBkMDJmMWQ2IGxlZ2FjeS10cnVuaworMjAzMDkgNjVhOTIyNTFkNmI4NWNhYzIzNTllMjYzZDgzNTg2NmE3YmQxMTg4OSBsZWdhY3ktdHJ1bmsKKzIwMzEwIDlkY2I0YmQ2NTE1NDhlODc2OTlhNjIwZjBiYzZmOTBiM2RhZDk2YzMgbGVnYWN5LXRydW5rCisyMDMxMSBiOGZjZjQ1ZGM2ZmRjNzQzOTIzZGI3NjY0Yzk0MDRhMmI1N2M1NTliIGxlZ2FjeS10cnVuaworMjAzMTIgOTY1ZWViNDRlNDU0NDEyMWMyMjE3NDY5MGMwMjYxM2UxMmUwYzJmYyBsZWdhY3ktdHJ1bmsKKzIwMzEzIDNmYWRjMzdjZmE5MjA5ZWQ0MDY3NmU1YTA5YzI2NDBhMzc3NmM1NmIgbGVnYWN5LXRydW5rCisyMDMxNCA2NDM5NjI0M2MxMTQxZGNmOTA4NzYwZDczYzFkNDA3MDQ1YmJiNDNkIGxlZ2FjeS10cnVuaworMjAzMTUgMzQwMmM3MTY2ZDMwODExNDRjY2E0Y2JmMjQyZWVjMDM2ODU1ODQ2NCBsZWdhY3ktdHJ1bmsKKzIwMzE2IGYzZjk2NDE3NDNhMDdlODhkZjllZmM3OTg2NTI5YWJjZjBkYzY5YjQgbGVnYWN5LXRydW5rCisyMDMxNyA2MzJjNGQ1Yjc1YjdhOTZkZWMzZmNhMzJkM2FhYWFiOWEyYWEyMTIxIGxlZ2FjeS10cnVuaworMjAzMTggN2M2MTcxNTc1MmJlMjAyNmFiYjU4YjA0NTEzODQwNzkwMTA5ZDAxZCBsZWdhY3ktdHJ1bmsKKzIwMzE5IDhlYzdmNjU2ZjgwODMxZTZkYzY2MTJhMjQzZTVlNTYxMDc3OWYwYTAgbGVnYWN5LXRydW5rCisyMDMyMCAyNTdiNTdiY2NkZjNiZTg5NGIyYmQ4ZmQ5NzY3ZWQ3OTIxNjNhNjQ3IGxlZ2FjeS10cnVuaworMjAzMjEgMzE2MGRhNGRkZDg5MWFlMGJlODA2ZmQxZmZlMmViNjdjYTMwNzc5OCBsZWdhY3ktdHJ1bmsKKzIwMzIyIGVjMDc1Y2M4MmJkYjNmNTdjMmVmNWJmNzhmY2RkNDczOGYzN2IyZDIgbGVnYWN5LXRydW5rCisyMDMyMyBjMmZiMmQ0NzZiZDM4Y2RmMjdhYjM4NWMzNDk0ODM2MjgyYmIwMDg1IGxlZ2FjeS10cnVuaworMjAzMjQgZTUwMDkwMjVlNjJmMmMxYWY5OGZjMzQ3MGYzMDE1ZmEwMmRjNmYxNCBsZWdhY3ktdHJ1bmsKKzIwMzI1IGI0YjNjZmZjN2MzNTVmZjIxNGE0YjQ0ZDU3ZjAwZjFhZGNlMGRkODYgbGVnYWN5LXRydW5rCisyMDMyNiBiZmMxMGE4MDU0NWJhYWQ4ODkzYjJiOTMxNDFiOGM0NGQ2ZDhiNzI0IGxlZ2FjeS10cnVuaworMjAzMjcgYjAwNWViOWJjODQyZDk3YTVhMzE1ZDIxZDk1YWMxMWJhMmU4MWYxMyBsZWdhY3ktdHJ1bmsKKzIwMzI4IDJjY2MwZjJjOWUxZjI4MWZhMmNmY2MxYjJmYTA2M2M3NDJkOTE1ODQgbGVnYWN5LXRydW5rCisyMDMyOSAwZjMyYWI1YWZmZjg5ZTY0NGIxNjc3MDYxNGQ4NWFhNjYyNjY1MjRmIGxlZ2FjeS10cnVuaworMjAzMzAgOThmNjkyNDViYjY5Y2QyNDdhZmQ0MzI5ODQ0NmJjZDkzYWJiNzQ2NyBsZWdhY3ktdHJ1bmsKKzIwMzMxIDAyZDY5YTg4NzAzODkxMjE0Yjc4NzI4YzUyYzM0YWFmMWE1NGVhMGMgbGVnYWN5LXRydW5rCisyMDMzMiA0MWE0MjMyOTRjYjUxMzEyODU5YTVlYzYwNjZkYzMyZmMzYjVkYTY4IGxlZ2FjeS10cnVuaworMjAzMzMgZmJjMTJkNmNkMDUxMWI5NGU2NDE0YjA1ZDU3MGUwMzliOWFmZmZlOSBsZWdhY3ktdHJ1bmsKKzIwMzM0IDFjZGZmMjgzOGExNzhlZjQ2MWQ5MjRiYjlmODc5NjQ1NGJhNzA0YjMgbGVnYWN5LXRydW5rCisyMDMzNSA3NGI5ZmIxYzk2MzM5NzkyOGEzZTVjMGVjOGRjOGY5YWU1MTMxYTJkIGxlZ2FjeS10cnVuaworMjAzMzYgMmQ1MjE0MjBkYjhmMWUyOTJiZTJkNGMxY2Q3MTE4ZGUxYWZjM2NkOSBsZWdhY3ktdHJ1bmsKKzIwMzM3IDkyMzdmNThkY2MxOTIyOGYwOTBkNWY2MzJlZDgwYTMwNWQ2YmU1MzEgbGVnYWN5LXRydW5rCisyMDMzOCAxMTE5MDJjOTkxYTkwNGYzY2EyZTE0MDI0ZmE3OGEwZjU0NDU0NDA3IGxlZ2FjeS10cnVuaworMjAzMzkgZjBmMDQ2N2EzMzM0MmRhYzg2NzY5ZWMxN2I5MTAzNzg0MThjMDZmNiBsZWdhY3ktdHJ1bmsKKzIwMzQwIDAxODRjNTBhODc1MTBhZGE4MTdlYjU5OWFlYTU5MzllYjQ0NWFiZGEgbGVnYWN5LXRydW5rCisyMDM0MSAwNDc1YzhiNzIyM2JhNThiODQ3MTlhNjk4NzFhMjFmZjc5MTk3NjdmIGxlZ2FjeS10cnVuaworMjAzNDIgNDVjMTgyNTE5NmVkNjYwM2E3ZDJkYTVkNTllMjBhYTI4OTgxODJhZCBsZWdhY3ktdHJ1bmsKKzIwMzQzIDUxYzhjZTFhMmUyNTk5NTNmMjlkY2YyNmM2YjIwMWI1ZmNlN2Y4N2YgbGVnYWN5LXRydW5rCisyMDM0NCBmNzRmNWFhZmRjN2UyNTBhNWQ1NGQzMzUyMzhmOGY5NDVlNGNhOWE3IGxlZ2FjeS10cnVuaworMjAzNDUgOTk0MWM0NDgxNmMxYzczMDY4OWJkNGY1ZmE5NDFlN2Y3ZjY4NDNjMyBsZWdhY3ktdHJ1bmsKKzIwMzQ2IDFhMmZkNWM0ZGNmNTcwZmQxMGRjZTQ0Mzg1MTMwMGE4N2QxNDZlMzYgbGVnYWN5LXRydW5rCisyMDM0NyBmM2I2YWMxMjhkZTlmMTM3NWI4YTRmOGQwNzQ4Nzc4Zjg5YThkMmY3IGxlZ2FjeS10cnVuaworMjAzNDggZDkxNTc3NzgzMzM1NzY0MTQ2MWU0OGQ5MTZmMzI3YmMxY2JjYzliYiBsZWdhY3ktdHJ1bmsKKzIwMzQ5IDRlZTM0NmIzNTUyNGE4ODVkZGRlZTQwOTljYmFhYTE5MjVlNDRmMzkgbGVnYWN5LXRydW5rCisyMDM1MCAzYmRhNTkwNzEzODk1MTM0MTcwNDFlODgxZTFiOTRjZWJlMDhkZjU0IGxlZ2FjeS10cnVuaworMjAzNTEgNjZhN2M4YzhkZDI3MjM4ZjY0NDMwYjIyZGZjMGYyODZkZjdkNzNiZiBsZWdhY3ktdHJ1bmsKKzIwMzUyIDBkMDU0NmJkODQ0OGFjNTIyMGMwMWZkYjgzYjIwMTg4N2FjZTdlOWUgbGVnYWN5LXRydW5rCisyMDM1MyBlODQ2ZTk2MGU3ZjYzMWZiYjNhYTA2MWFkNTFjM2U1MDBmYTE0MjEzIGxlZ2FjeS10cnVuaworMjAzNTQgOTljNDcxY2VkMTcwMTg1Y2RmY2Q4MmRiZGU2MDRiN2M3N2VkNTFlNyBsZWdhY3ktdHJ1bmsKKzIwMzU1IGEwMDRjNjJlNjk2ZTZlMjI5MTA2ZjdhMzg3ODFjYTE5MzFmYmJkYjUgbGVnYWN5LXRydW5rCisyMDM1NiBlODc0MWRjMzZhZDEzYjkxOTQxOTQ4OTRkNjJhYzIyOTNlYThhMzk5IGxlZ2FjeS10cnVuaworMjAzNTcgYzI5ZWUzNzNmNzE4Zjc4YWI0MjM0NmQ1YWNjMTRlYThjYjYzYjVhYyBsZWdhY3ktdHJ1bmsKKzIwMzU4IGYxZWM1MmVmNzcxYzExYTZiNGJkYzRiNzhiNWExNTZhM2Y3MGE5YmQgbGVnYWN5LXRydW5rCisyMDM1OSBmMjQyNzJlODk2MjE1MjU3ODg1MWRjOTEyOTAzZTNiMjAwNWNlNWE0IGxlZ2FjeS10cnVuaworMjAzNjAgYjg0ZjA4NGIyOTkyYTgxZTZiMDZjMjA5YmIzY2VjMzVmNzA2NzYyMSBsZWdhY3ktdHJ1bmsKKzIwMzYxIDRiOWU2ODRiZWJiODcyZWIzYmUyNWZkNDdlZTVhYzMzZTZjNWIwNTEgbGVnYWN5LXRydW5rCisyMDM2MiA4YWE0ZGUyMDdhZTM2NGI0NGJhYWMyMjg2OGVhOWI4YmUwMzIxZTZiIGxlZ2FjeS10cnVuaworMjAzNjMgOTI2YjY0ZmJhNWU3ZWQ1OWEyZjQwMTNhY2Q2MzQzMTNiOTA1NGQyZiBsZWdhY3ktdHJ1bmsKKzIwMzY0IGI0ZTJiOGU5ZjFlNjg0MjM2OGY5NmZhOTQzOTk1ZjI1OTMxZTI3YTQgbGVnYWN5LXRydW5rCisyMDM2NSAyNGU4MWI0MzA2N2RjNjVmNWFhMjM4MTVkMDk0MGFjNDQ4YTJkODIwIGxlZ2FjeS10cnVuaworMjAzNjYgMjg4OGZjNjBiZjlhY2VhZDY0ZGUxMjgzZDFhNzY2NWJjOWQ5MjBkMCBsZWdhY3ktdHJ1bmsKKzIwMzY3IDMzOWE5M2IwMDg0Yzc1YjNhYzQxNzg2ZDYyMzFmZTU0NTU1ODY3NjggbGVnYWN5LXRydW5rCisyMDM2OCAxNDI1NDVkMmFhZmM4MGE3NzczYTZmOTBmYTc1MDBiY2ZiOGI2NTQwIGxlZ2FjeS10cnVuaworMjAzNjkgNGFiNTg2MjQ2NTNlN2Y1NWFlMWI5MDRhMjgwZjkyMTViOWQzNmY0ZCBsZWdhY3ktdHJ1bmsKKzIwMzcwIDI1ZjU1YjJlMzhhY2M4M2QyYmQyZWExNTRhMTc3ZDlkOWE0YjUxMGQgbGVnYWN5LXRydW5rCisyMDM3MSAwYjY5ZTE3ZTA1NWZhNzRlMjU5N2NmM2U3NmFlMTFkMDE2YTQxMDRhIGxlZ2FjeS10cnVuaworMjAzNzIgNjEzZGNkNTQ3NmI2ZTZkYTliZmZlZTMzYmVmMmYyYjRlNzNkMTBlMCBsZWdhY3ktdHJ1bmsKKzIwMzczIGVkMDdkNmE4NzNlNzM0MGM1ZWQ5Y2EyYTBmOTM5MmJkOGNlOGI0ZjkgbGVnYWN5LXRydW5rCisyMDM3NCAwNGRhZWUzYWI2MjdhMGE2OTJiYWI5MjE5NGQ1MmI5YzZiNDkzNzgzIGxlZ2FjeS10cnVuaworMjAzNzUgOTlhZDAyNTdiOTQyZGVkYzE3YzZiMmRmZGUwYWY4ZTU2MDBkNzhiYiBsZWdhY3ktdHJ1bmsKKzIwMzc2IDIyNjUwMzJlZmM5ZjBmNGJjNjI4ZGIyNGY5ZDNmNjM1NTI5ZTQzN2QgbGVnYWN5LXRydW5rCisyMDM3NyA3MTc1MmE0MWI1N2Y5OGJhNmNjNjVmZDg4YjExMTgyYTRmY2NjYjg3IGxlZ2FjeS10cnVuaworMjAzNzggN2U4MjlkZDAzZjk3YThiNjljZjA5ZmYxYWEyZmM2M2YzMzE5NWNmYyBsZWdhY3ktdHJ1bmsKKzIwMzc5IDY0MGFmZmRmOTllNTA3ZWE1MTQxMmViODcyNzE5ZDE5ZGFjMmUwMWMgbGVnYWN5LXRydW5rCisyMDM4MCA3NGU3ZTkzZWNkNDE0MTlkYTY5NTZhZGJmMmNmN2ExZGM3NzZjMjNiIGxlZ2FjeS10cnVuaworMjAzODEgOTZiZDRhODRmMWE0OTRjMjdlNWM0YWNhYjNkYjVkNDNmNmFkMTViZSBsZWdhY3ktdHJ1bmsKKzIwMzgyIGY3YzEyYmE0MjczNzA4ZWM4YTkyOTJhNzcwMjcwMmU2MDRkMjQyZWUgcmVsZWFzZTIwLW1haW50CisyMDM4MyA1ZjRmY2ZiOGQzZGQzNjY3MDFhY2UzMDgzYjRiODAyZjRmYTA1MDRhIHJlbGVhc2UyMC1tYWludAorMjAzODQgMzUxMzlhOTQ1NGQ0MzgwMTVhZTdiMjBhNzI2MmQ5MjVmM2Y2OTQwYSBsZWdhY3ktdHJ1bmsKKzIwMzg1IDE1Yjc2MDllM2UyYzg5MWQ0ZDYwMjM0ZmU2MGY1YTcyNmJmYzc0MzcgcmVsZWFzZTIwLW1haW50CisyMDM4NiBiNjVkMDg5ZTg4NDE4OTBhMTBmN2I4OGFkOWVhZjdhNmExZWYxZjA3IGxlZ2FjeS10cnVuaworMjAzODcgNmVlYTRjZWI3NTE2NTI4MmUyYjliODI5YzYwY2IyZmU4MjY5MzQ5ZiBsZWdhY3ktdHJ1bmsKKzIwMzg4IGEzNDI5M2NlZDYzYjYxMDlmNDc1ZTY1ZDg4MzY2ZjEyYzFmN2Q0Y2IgbGVnYWN5LXRydW5rCisyMDM4OSBlNTI2ZDkyNDg5NjVmNDdkNDczNWNiNTU0ZWYwOTE1NDhkYTAwYmI2IGxlZ2FjeS10cnVuaworMjAzOTAgMGIwNjBjZjc2MmNlNzM4NTE5ZTkyZTllYTRmYzQ3MmFkODI3MjBmYSBsZWdhY3ktdHJ1bmsKKzIwMzkxIDZhMzc3NjIwMTc1MDc1ZmQzY2I5NzZkZmQwMWViNDVmYTNjN2E3MzQgbGVnYWN5LXRydW5rCisyMDM5MiBmNzJkY2Q2N2NjY2IwOWNiMWE4MDE0OWQ0MWJkNTY0ZTRhNWUwYzFiIGxlZ2FjeS10cnVuaworMjAzOTMgODA2ZmQ4ODAxNWY1M2I3MzkxNjI2NmVhNGE2YTYxNzEyZThmZDYzMiBsZWdhY3ktdHJ1bmsKKzIwMzk0IDVlOTlhMWQwZWE0ZGQ3OTA0NGE3MGMwMTE0ZDI3MTg3ZGJmMWU5NDkgbGVnYWN5LXRydW5rCisyMDM5NSA2MWQ5NTRlN2JlOTkyM2E0MzRlYzk3ODNjNjgwN2UzZTY0NDFhZWU5IGxlZ2FjeS10cnVuaworMjAzOTYgYzViYWI3OTRkY2RlNjQ0OWMyODU3YjBhMmNiNjcyNmE2MjY3MzZmOSBsZWdhY3ktdHJ1bmsKKzIwMzk3IDMyN2VmYjU5ZGJjZGU3YjYwY2JhMzhjM2FjOWMzOGYyYWY3MzE3N2YgbGVnYWN5LXRydW5rCisyMDM5OCA4ZTE0MTVlZjliMjhkODMyNmViZmUyNWJjYmM1YzQxMWM2MjNjNjcwIGxlZ2FjeS10cnVuaworMjAzOTkgMTExNTNjMTQxOTk5MzFhYWE2NDZiMTE2MmM3OWQ3ZmE1OTU0ODFjMyBsZWdhY3ktdHJ1bmsKKzIwNDAwIDU1ZWUxNWM0ZWVlNjgzZjRhYWEyNTBiMDk0ODJmNWU0YjcyZWI0MmQgbGVnYWN5LXRydW5rCisyMDQwMSAwNjhmYjU4YTExZDQ4NjgxYzE1YWU5NzAzYjg1YzIwMjJhZmFjOTcyIGxlZ2FjeS10cnVuaworMjA0MDEgZDYxMTI3NmU5YWQ1M2I1ZDMyZDFlODA2NWUxZDgxMWMzMmY3ZDk2ZiBsZWdhY3ktdHJ1bmsKKzIwNDAzIDdiNjdlYjI2YjM5YWI2OGJmNTYyZjczNjJkYzk1ZGI1ZTRhZTY0MjcgcmVsZWFzZTIwLW1haW50CisyMDQwNCBmZDA2ODNjYjczMDEyZmFhYzA1ZmIzZDBjOTE2NjQ4ZDQyZDEzNmZlIGxlZ2FjeS10cnVuaworMjA0MDUgOTBhZTM3ZmY2MTdmY2ViNjA0MTYzOTI5MDE3MWNmNWQzMzViNzllNyBsZWdhY3ktdHJ1bmsKKzIwNDA2IDc2ZmFlNjE0NTI2Y2VjMWViNmI1NWRhOTViOWM2ZWRlMmM3MDg3YWEgbGVnYWN5LXRydW5rCisyMDQwNyBjNjUxY2ZkMGZmZDQ4OGE1Y2MzN2NjOWQ4ZDk2MGJhZmNmNzU0ZTliIGxlZ2FjeS10cnVuaworMjA0MDggNzczYzY0ZDM4YWM2ODk3Y2U0ZTk5OGFiNGQ2ZWFhNjA1MjM4ZGRmNSBsZWdhY3ktdHJ1bmsKKzIwNDA5IDgxODIzY2ZiNWIxNDY4MjNiMzYyMTcyZGQ4MjhiM2QwM2E4MWE5ZmYgbGVnYWN5LXRydW5rCisyMDQxMCAzM2Q3MWU4MGEwOWM3NzMxOTA5NGRkYWEwNzQyMGY2OTRlMzIxOWQyIGxlZ2FjeS10cnVuaworMjA0MTEgMWUyM2Q5MWMwYTgyMWMwNmRjNjgyNzJiNDAyYWVjMGY2NjVmZDA1ZiBsZWdhY3ktdHJ1bmsKKzIwNDEyIGY5MzljZTUyYTczNGQ1ZDJmNmIwNGMyMDY4MGQ3MGIxM2IxMzZjZWMgbGVnYWN5LXRydW5rCisyMDQxMyBmOWRmZDU4N2MxNDJiNjhkZGJkZmU5Y2NmYzlkYmUzN2M3NTE3YjkxIGxlZ2FjeS10cnVuaworMjA0MTQgMDViYWQyZjA1YmZhNmVjZWYyZjE0ZTQwODczYWY2YmI4ZDdmZGI1ZCBsZWdhY3ktdHJ1bmsKKzIwNDE1IGM5Y2FlNWE3MGI0ODI5NzIxMjUwN2ViYzQ4YmViMTQ3Yjk5MGNlMDcgbGVnYWN5LXRydW5rCisyMDQxNiBiMjg0MGEzYzU2MDFkNzc0MzAwMDI0MWY2ODcxZTQ1ZmJmOTJlNDk1IGxlZ2FjeS10cnVuaworMjA0MTcgODM4OWM0ZGY0ODhkYjA1YjNlMDE1MGJiNzg3M2QwMzViMmUzNjdjYiBsZWdhY3ktdHJ1bmsKKzIwNDE4IDc5ZWZiYzlhMDNkZWZjMzJlMzcwMDllMzlkNmE1YTI3Y2ZhNjMyNDEgbGVnYWN5LXRydW5rCisyMDQxOSA1ZmIwYzQ2NzUzZjk4MzAxMDc3M2MyOTI5ZGYxNzcxZTI1Yjg3YzM0IGxlZ2FjeS10cnVuaworMjA0MjAgMGY1YTI2YWE0ZTRhMzBhZTY0YjNkM2QxZjZkZjc5MmY0MGE0OTU3NCBsZWdhY3ktdHJ1bmsKKzIwNDIxIDAxYmUwODMzMzMwOGVhMzUzYmM0N2Q2YzY0OTBjMjMxOGE0ZjBhMDUgbGVnYWN5LXRydW5rCisyMDQyMiA1MDBkNTM0NjBmNTYwODM1OGIwNjFhYTU4NjIzOTFlZWQ1MGYxYzYxIGxlZ2FjeS10cnVuaworMjA0MjMgYzQ0NDJmYjk5ZDI2NWZiMTQ5OGM5MTM4NWUyNDFjYzk1ODYwOWUyNyBsZWdhY3ktdHJ1bmsKKzIwNDI0IDE3YTcxZDJiODFmN2NmNzg1NDJjYjM1MzhmNzk2OTM4OThlODFmMDggbGVnYWN5LXRydW5rCisyMDQyNSBjNDk3ZmEzZmUzOGEyZTNjODVkOTI2ZmUxY2FmMzlmNTJjZGM0Y2MxIGxlZ2FjeS10cnVuaworMjA0MjYgZGQ2YmU2MjVhOTIzM2Y4NTk1OTAyMTg5NGJlMDkzYjAyNTkzNmYyNyBsZWdhY3ktdHJ1bmsKKzIwNDI3IDFjZmVmOGFkZTI3MDczOTAzNDBlOTcyMmI2MGZlMzRkYzFjZjEzODQgbGVnYWN5LXRydW5rCisyMDQyOCAwMjU5MjljMTUzMWQzZDc2ZjZkZTRjZjdiZjJjZTkxZGNkYzVlZjRkIGxlZ2FjeS10cnVuaworMjA0MjkgODNjN2I0Yjc1NjY4ZmZjZDQ3MjJlZWQ1MTM5YzEwZjhiN2FkMGUyNCBsZWdhY3ktdHJ1bmsKKzIwNDMwIGQyZGE2ODFjY2I1NGRmNGIwYjJlNmUzZGU3NjNjM2MwYzgwYmFhNzcgbGVnYWN5LXRydW5rCisyMDQzMSBlMWM1MDdjZGM2ZjFmN2NmZDc3MDBlOGRlYTQwZjlkM2Y5ZWJmNTQ2IGxlZ2FjeS10cnVuaworMjA0MzIgMTYyZmE2YjEzNjZmM2I0YTQ3YzJjZGFiMGI0OTJhNzk3MzBiOGY4NiBsZWdhY3ktdHJ1bmsKKzIwNDMzIGYxN2E4MzBlMjVlYWIzNGUyMTgwMTU1NzNhOTlhYzBlYTg2NmE1Y2QgbGVnYWN5LXRydW5rCisyMDQzNCA1MmE4ZTM1ZGYxMjc5OTRjMjhiNWU1MTE3MWY4Y2MwZTk2ODQ2MjVkIGxlZ2FjeS10cnVuaworMjA0MzUgZTBhNWE2M2FkNzU2OTYxYmRiNmI0NGIwMDgwNDFkYTRkNjI1M2FiYSBsZWdhY3ktdHJ1bmsKKzIwNDM2IDQ0OTMxOTlkMmI5NTZlYzE4Y2JiYzJiZjMzZTgyMzQwNWQ2OTBlMjYgbGVnYWN5LXRydW5rCisyMDQzNiBmZjA2NWU2NzRhZjZjOWFiODk1YmQ5ZWZmN2Q5ZTkwMzlhMzc2YzdkIGxlZ2FjeS10cnVuaworMjA0MzggNDkwODViYjdiY2Q5OTQxNjk5YzlhMGFmMjk1YWRkZGQ2NTE2YzE0MyBsZWdhY3ktdHJ1bmsKKzIwNDM5IGU1MjJlZDgwZmIzOTMzYTYxYjZhNWFhMGM3YmZjZWU1YjNmYzlhNTcgbGVnYWN5LXRydW5rCisyMDQ0MCBkYTVlYWIzMzE0N2I5NTk1YjA0YzMyNGJkNzgzZDNmMmE1MDU1MGM4IGxlZ2FjeS10cnVuaworMjA0NDEgNjI1MjY5M2FmZDlhZjFjYmQ5ZDZkNjk0NmEzMjM3OWIwNmNkZThjMyBsZWdhY3ktdHJ1bmsKKzIwNDQyIDM1NGE1NzFhMDViNGY0ZTUxMDgxODdjNTNlNDNkZDM1MDI5YzI4ZTggbGVnYWN5LXRydW5rCisyMDQ0MyA2OTNmYTZiNDFkZmE1ZTBiY2U2YTI1Y2Y1NTA4N2NjYmQyMGQ4ZDYyIGxlZ2FjeS10cnVuaworMjA0NDQgODRkNzgzOWJkY2Y2M2RjMGUzNTk0YWM4OWE0OTdjODFkZTcwOWZkNSBsZWdhY3ktdHJ1bmsKKzIwNDQ1IGNiYzlmODg2NTU5NTg5Y2M0ZDQwODk4YjFjMDgxMDFjZjFmYzkzN2EgbGVnYWN5LXRydW5rCisyMDQ0NiAwNTQzNmE3NDAxMmQxYzYwMjZkOTI5MjUxZWFjYWQ2YWNhNzk2MjdjIGxlZ2FjeS10cnVuaworMjA0NDcgMWQ5OTUxZDEyNmY1YzM0NTkwOGUzMjA1MjU0NWQ3OGUzNjgzMGFjOCBsZWdhY3ktdHJ1bmsKKzIwNDQ3IDAyMGU5NWQ4MTgwZDc5NDNmZTU0NzAxZTFkYjBhN2Q3ZDg3ZTJiMWUgbGVnYWN5LXRydW5rCisyMDQ0OSAxOTY4NmE2Mjc5ZjQ3NWViODcxMTc1OGI0Y2EzM2QyNzYzYzI2ZGI2IHJlbGVhc2UyMS1tYWludAorMjA0NTAgZmZmMzAyMjFkMTlhMzRjMGVlYmZkZGRhMzBiNjU5NzVhNjg2YzQ4ZSByZWxlYXNlMjEtbWFpbnQKKzIwNDUxIDczMmRkZWU2ODk1NzIwOGIxZTdlZmEyODA5OTczMzQ5NzUwYzhjNDcgbGVnYWN5LXRydW5rCisyMDQ1MiBkMDZiYmI4YzQ5M2FjMDE2OTdlZWY0MDE0ODRhMWI0Yzg1ZDk0ZGE0IGxlZ2FjeS10cnVuaworMjA0NTMgMjhjMTRhNzlhZDIyNWI1MzIxNWYzY2Y0NDI3OWNlZmEyMGU4NjdhYyBsZWdhY3ktdHJ1bmsKKzIwNDU0IGRiOTI4YTI3N2Y4YjJlODQ4NTMzZDM5OWRiYjI2MjMyNTg3MDU3OGQgbGVnYWN5LXRydW5rCisyMDQ1NSAzNjIzMmY1NDMyMjBlZWRjOGQzYWY3YTExNDkzMzYzNjU3Zjc2ZjZmIGxlZ2FjeS10cnVuaworMjA0NTYgODk1ZmM1Yzk1NzYzZWQxMGQ3YTRkNzRkYjk4MTNjMTFkYTE0NzM4YyBsZWdhY3ktdHJ1bmsKKzIwNDU3IDI4MzY4M2I1ZTc2N2M3OTE0ZTgxODBlZWZlOWEwODBjNmRlMzY3ODggcmVsZWFzZTIxLW1haW50CisyMDQ1OCBiNmYwOGQyNzk1YjVlMjQ0MmM4ZmFhZjA1MWQ5ZjllZDBlZDQ4NzY3IGxlZ2FjeS10cnVuaworMjA0NTkgODhhNWM3NmZmYzhkM2Q4YWVlMzQyNDk2MWM5ZGM3ZTVkMmUyMzI4YSBsZWdhY3ktdHJ1bmsKKzIwNDYwIDQyYmNhZmZhNWQ5YjFhZTc0N2IzYzUyYTY4MGZjNzk3YTE1MDRiYWEgbGVnYWN5LXRydW5rCisyMDQ2MSBkOTQ0NDIzZTZmZmY2ZGMyNjI3NjgzY2QwMmNlODZiMGMxMGFjNDhlIGxlZ2FjeS10cnVuaworMjA0NjIgYTlhZDhkZWFjMTdkNWIyZmIyNmQzOTEzYmI2YmM0M2NhNDZjODkzNyBsZWdhY3ktdHJ1bmsKKzIwNDYzIDA0MDVjNjU3ZDJhYzlmZGRmMmRmZjY3ZDhiYjUzY2UzYzg3NGRjNmYgbGVnYWN5LXRydW5rCisyMDQ2NCA3NWUzMjJkNjA0ZjE2ZTI5ODcyZWUzMWY5ZDAxZjEwNmRhZWQ4NzhmIGxlZ2FjeS10cnVuaworMjA0NjUgM2VhYzIwYWZkNTRhYWFkNzQ3NzI2NmRhY2M5MDQyZjRkOTI2NjUzYiBsZWdhY3ktdHJ1bmsKKzIwNDY2IDUxOGRiNDU0ODYzMDE5YTRlOGZhYmIzYzE0ZTJhZjg5NDU0MGMzYTkgbGVnYWN5LXRydW5rCisyMDQ2NyBkMTEyZjEzNWFmOGQxNDE5ZjM3NjcyZWFmY2NlOTc1NGI4ODdjOTBmIGxlZ2FjeS10cnVuaworMjA0NjggMGRkNWQ2ZDlhOTUyYTZmMTExMDU0NjA4MzQ0NTJhNGFjMjFhMzdlNiByZWxlYXNlMjEtbWFpbnQKKzIwNDY5IDcwNzQzMDM4NDYwMzE5MTdjMjYzMGQzZjk4Y2VlYTg1NmQxM2ViNzUgbGVnYWN5LXRydW5rCisyMDQ3MCBjY2M0NGU1NDNiZWVmMTdlYjg0MTA4YjQ1OTgxZjdjZTNmYzUwMjI3IGxlZ2FjeS10cnVuaworMjA0NzEgM2RkOTg2MGU0ZTJkNGJkM2U3ZDgyNDYyNGMyNmRjZTQ5ZDRjYWZlMiByZWxlYXNlMjEtbWFpbnQKKzIwNDcyIDIyOGY0YjhkMThmMDFhOTkwODczOWI0MWI3MmZiNjU3NTA4MzMzNWMgbGVnYWN5LXRydW5rCisyMDQ3MyA0NTI2NjZjYjI4M2RmOGI5MjQ1YjMzOTA1ZmE4ZDk5MTdmMDMwZDQ2IGxlZ2FjeS10cnVuaworMjA0NzQgYzY1N2EzOTM3OTAyMDc3MjY1ZGUwYWRjNGEwNmViNzFlODU5MDUxZCByZWxlYXNlMjEtbWFpbnQKKzIwNDc1IGMxOTM3ZmFhYmIyMzc0OGE0ZTI4M2U3YzRlOTBjN2QyYWI3N2EwYTIgcmVsZWFzZTIxLW1haW50CisyMDQ3NiAyZmNiM2ZhNjdlM2I2ODc4NjY0YzUyYTM0NzljY2MxYmIzMmE3MGRkIHJlbGVhc2UyMS1tYWludAorMjA0NzcgMGQ3MGRhZWI4OTZlMWVmMzliOTA0MDMyMTlmZjI0YzllNGVmZDAyZiByZWxlYXNlMjEtbWFpbnQKKzIwNDc4IGY5OWRmMmEwZTJjZjljNjIzMTE4YWM2ZTk5MDAxOGYzYmZiMGQyYzggbGVnYWN5LXRydW5rCisyMDQ3OSBkMTZkYzI2ZWM0MjdhYjAwYjk1NDBlOGM4MGMxNjBlMTc4MjVjMmUzIGxlZ2FjeS10cnVuaworMjA0ODAgYzVmNzE5MWNlNjdlOTM0YmQxZjEyYmM1ZGQxN2NlM2E1ODYxYmU4ZCBsZWdhY3ktdHJ1bmsKKzIwNDgxIDdlYjg3Y2YxNmE1MzYwYzE0NGJjNTI5ZjI5ZjAwMzNhYmNjNDYzYWEgcmVsZWFzZTIxLW1haW50CisyMDQ4MiA1YTU4MDVhNDVkYmY0OTQxMTFlMGFhZjhmNDIxZWY2MzFmNzE4NTZkIGxlZ2FjeS10cnVuaworMjA0ODMgOTZmOWI4NmI3YjNkZGQ2NzYwZDBlYTNmNzk2MTFmYzU4MDRkMTgyMSBsZWdhY3ktdHJ1bmsKKzIwNDg0IDFlMzA0MmE0ZTYwZTJlM2NmMTI0N2Y3MDljY2ZiOWFhOWExODA0NzggcmVsZWFzZTIxLW1haW50CisyMDQ4NSA0NGEzYWM1OWMyNjhkZDhlYTUyMGY4ZmFkYjgwODJlODg1ZGViM2I5IGxlZ2FjeS10cnVuaworMjA0ODYgMWYzYTE5NGUyMWYzMWY0NTdmYmRkNDNiN2U2Y2M5MjI5NDNjMmE5YSBsZWdhY3ktdHJ1bmsKKzIwNDg3IDAwYTZiMDYwNTExMzUzNWUzZjMxODgzOGU0ODU3MTY1ODlmNmI2YmIgbGVnYWN5LXRydW5rCisyMDQ4OCA1NmYxYjhiYTVjYTE3ZDFiZDI5NTFhZmM1ODU1ZjQxODQ5NWQxNWUxIGl0ZXItYnJhbmNoCisyMDQ4OSBiZjk0YWYzOTZiMWUxMDdhZDNjZDhmMTE2NzE2YjI3NmVhODEyZGI4IGxlZ2FjeS10cnVuaworMjA0OTAgMWQ3MjZmNWNkNTdhMGZkZmJhNjIyZmFhYTM1ZmVjMmQ2NzZjOWUyYiBsZWdhY3ktdHJ1bmsKKzIwNDkxIDFiNDliMTc3YTEwNWUxM2NjYTFmMWM0ZTdiNDFmZWViYzQ2NWRiMjYgbGVnYWN5LXRydW5rCisyMDQ5MiAzMmU3ZDA4OThlYWI4NWRlODEzNGY5MzI2ODBhODVjNmU3YWJjZWMwIGxlZ2FjeS10cnVuaworMjA0OTMgYzNiYjBmZjM5NmRjYzYzM2NiNjcxOTZhNDM3NzYxMzNmNzAyM2ZmOSBsZWdhY3ktdHJ1bmsKKzIwNDk0IGUxNWFiNGU2NTJhZGNiN2ZhNTU2YTE4MTU0Y2MxMTZkNDljN2I1NjIgbGVnYWN5LXRydW5rCisyMDQ5NSAxZmU4ZTUwZTZlMWI5ODJkN2I3ZGQxZjY4ZTZhOTRkNDA2YTM1YjM1IGxlZ2FjeS10cnVuaworMjA0OTYgYjZkYmZjNDVhYzliZjE5MDM4ZTFjZDMyNThkOWI5YWMyMDg0MmYzOSBsZWdhY3ktdHJ1bmsKKzIwNDk3IGY2M2Y3NDkzNjRlZmZkZDM2ZTBmN2M4NDk5MThkOWI2NzkzMjk1NTQgbGVnYWN5LXRydW5rCisyMDQ5OCBkNjM4ZTQxOWMzMDQ1MmQ5ZDFkN2ZlOWE5ODYxZmQwYjlkNDVlZjNkIGxlZ2FjeS10cnVuaworMjA0OTkgZDMyNGFlMjg5MmZmYTRhYmZiMjE3ZjVhNTk4OWE3ZDJkMDlhOTBlOSByZWxlYXNlMjEtbWFpbnQKKzIwNTAwIDRkN2ZiMjRmZTc5NTNmOTBmODM2NGIyYTFmYWQ5MjZiMmU2YmJhNjUgcmVsZWFzZTIxLW1haW50CisyMDUwMSA0YWJkMDcyYWIzZDViNWJkYTFjZDZhY2JkMGFmNzEyOTIyMTNhZDVhIGxlZ2FjeS10cnVuaworMjA1MDIgMzg3ZTgwZTExYTc5NWZjZTU2NzY3Y2Y0OWZhYzMyMWEzZTdjZGYxZSBsZWdhY3ktdHJ1bmsKKzIwNTAzIDIyYWYxNWY4NDEwYThiMjc3MzQzNGQ5YWZjZGFjMjI4YzA0MjE4NDIgbGVnYWN5LXRydW5rCisyMDUwNCA3OWYwY2QzYTcxYTFlOTk2ZWQ4NDNhMjBjNzE3MGNiOGRjYmM5MmNlIGxlZ2FjeS10cnVuaworMjA1MDUgNjI0ZmM5NzEzZDE4YjExMDE1NmRmYjY2OTJkNmE1ZjI2MWYwYWY4NCBsZWdhY3ktdHJ1bmsKKzIwNTA2IDFlYjAwYTEyM2EwZWNkN2Q2ODE0NjIwOTA0MDM1YjBiYzU5NTFiZDYgbGVnYWN5LXRydW5rCisyMDUwNyBjMTlkNmRiNmU5OWI3YWFjN2NmN2M4ZWM5YTIwZmFjNTU4MDY4MjY0IGxlZ2FjeS10cnVuaworMjA1MDggN2RjZGIxNmJkMDY4Y2NhZWM1OTE3NDc1NmQ3OTljM2I0Mjk3NzQ0MCByZWxlYXNlMjEtbWFpbnQKKzIwNTA5IDE4ODU0MTdmNDVkYTM5ODU1YjhjNDIwMjgzNmEyZjQzYjAwNjdlMGEgcmVsZWFzZTIxLW1haW50CisyMDUxMCBiODMwZGYwODNhOWFkZDA3MDliNjhkMGI1MTkyMzE2YTAxMTE4NTg2IGxlZ2FjeS10cnVuaworMjA1MTEgN2FjYmE3OGUxZTA5MWRiYjdlZWMyOTA4MzAxNmY1YmI5MWMxNzhlNiBsZWdhY3ktdHJ1bmsKKzIwNTEyIGFhYzY1ZjUwZGY2ZmYxNDRiNjcwMWZlNTFhMTYzYjMwYTZiY2QwMmMgbGVnYWN5LXRydW5rCisyMDUxMyBiNDRiYTdjMDEyMTc3NWQ2NDQxMGNmMWM5M2QwMjc1YjVjODJhNGI0IGxlZ2FjeS10cnVuaworMjA1MTQgMWI3MzBiZjNmOGQyYWMxZDE1MjM3ZWM5ZWVlNGQ1MmQyNjdkZmM2ZCBsZWdhY3ktdHJ1bmsKKzIwNTE1IGVmYjVjODE0ZmZiNmFiNDg1NmNlODIyYmYzY2VhNzMxNjMzYmM2ZDEgbGVnYWN5LXRydW5rCisyMDUxNyA5OWU5NDZhODI2OTkyMTcwNjBiOTVkYTQ2MmFiN2Y3YWZiMDA2YjJhIGRlc2NyLWJyYW5jaAorMjA1MTggZTJhZjkwYjYxYjJiZDI2NzliNGVhY2NlM2Y4NGQzNWRjNjY0ZGMxNiBkZXNjci1icmFuY2gKKzIwNTE5IGI3YTcxMzViY2NjOGIzZTFhZDE0ODVlN2Y3NzBlZTZkNDExZGU4YTIgZGVzY3ItYnJhbmNoCisyMDUyMCAwYjVkM2UwMzEyMDE4YWRjY2QwOTAwNzZlYmUxMWYwYThkY2JmYjA3IGRlc2NyLWJyYW5jaAorMjA1MjEgYzk3YjM3MTM2ZDgzZTM1MzAwNTA5YmVhNTJhNDViMTFhZTFlYWJhMyBkZXNjci1icmFuY2gKKzIwNTIyIDY4MTkzMTBkZTgyODQ0N2NkZGZmZjBkNjAxNjUwNjkxYWZkNTU5YmEgZGVzY3ItYnJhbmNoCisyMDUyMyBhMWYwN2ZjYzNkNDEzZjc1MjdmNGZkOTUyMjIwZTNjOWM3MDNlYzEzIGxlZ2FjeS10cnVuaworMjA1MjQgNDRhMGE5YTI3N2VmNjkxYTNjYjNkYjY4NWFmMTA1N2I5Mzg2MDg0NSBsZWdhY3ktdHJ1bmsKKzIwNTI1IDE2ODYwODBhN2M2YzM3NmQzN2IwNWVlMjUyMjk3ZmI5MDQ3OGQ0OTEgbGVnYWN5LXRydW5rCisyMDUyNiBkOTFmYzAyMjY4ZDhkMDEwYjcyNWIxMGYwMGI1NzRjOWUxM2U3Y2FmIGxlZ2FjeS10cnVuaworMjA1MjcgOWMxMTMyZjMwOTVhMDYzYWU0YmU2YzM4N2E2MDcyMmUxNDU0NjgzNiByZWxlYXNlMjAtbWFpbnQKKzIwNTI4IDk1MGYxYzNhOGU2YWExNWYxZDQzN2EyODIyMTkwMzE2ZGIyYTAzNjUgcmVsZWFzZTIxLW1haW50CisyMDUyOSA3ZThlZDZlMzllYmQwZDc1NTkzZjAxYWQzMTM4NzdlOTFkZWJiMDdlIGxlZ2FjeS10cnVuaworMjA1MzAgOTFjYmQwMWI4NWNiZGY5MWFjMzUxZjdkN2QxMGQ2M2M3MTk5MTZmOSBsZWdhY3ktdHJ1bmsKKzIwNTMxIGE5NDg1ZDQwNGYwNWQyNDEwNjM3MTE0NTBhMTk3NzZjYjg4NTQ1OGYgbGVnYWN5LXRydW5rCisyMDUzMiBkYTQ4MDk5NDdhMzIxMDViOGY0ZDJiNzUyNjFjY2YxZTU1NmUyNDAxIGxlZ2FjeS10cnVuaworMjA1MzMgMjQ5MTIzYzFmNGRjMTEzNDBhNGI0MGM3ZGY0NWQyZmMzM2U0NDY3YSBsZWdhY3ktdHJ1bmsKKzIwNTM0IGZjZGRlNjgwMzMxZTVhZWNjNDg0MmIyM2YxMDAzOWQwMTY1ODJmMmYgbGVnYWN5LXRydW5rCisyMDUzNSA3ZjVlM2U2YjJhMzkyMDc1MDBjMjBlMDljN2RiMWZhNWRhNTU0Y2U1IGxlZ2FjeS10cnVuaworMjA1MzYgMGJjMzM3N2QwZDcyMDhiYzIyMzliYWM0MDQ3OGM2MGZlNjYwMzY4OCBsZWdhY3ktdHJ1bmsKKzIwNTM3IGI3ZGY4OGE3OGFkYmFiODFkOWY4N2I2ODA1OTk5NjlmNWFmMGQ2ZDggbGVnYWN5LXRydW5rCisyMDUzOSA5OTIxYTlkMjdmNzI4YzYxOTA1NjEzZWY2MmVhYjAzZjE5Y2UyM2M1IGxlZ2FjeS10cnVuaworMjA1NDAgOGZmNzZjZjMwYThjYzM3Y2Y2ZWVhMzZjZjYwNGI0YmViNzk5Yjg0OCBsZWdhY3ktdHJ1bmsKKzIwNTQxIDdkNjc2YjQyMzdhOTkzMmY5MTNmYjI4MTMxN2RjMmM5MTkxMDEwMzggZGVzY3ItYnJhbmNoCisyMDU0MiAzMmU3MzViZWYwYmMyOWIwNTY5MzY2NDc0ZDExM2NjYjNlYTg4NWI3IGxlZ2FjeS10cnVuaworMjA1NDMgYmQ2NWY4ODkzYmUzYWVmNDA1MDE0YzVhMzI3OWNjYWEzMzNkMTE5YyBkZXNjci1icmFuY2gKKzIwNTQ0IGIxMjU0MTYzOTRmYWNhMzA2NGZmZDdmMjEyODIwZGI0ZWJmNjczNjkgbGVnYWN5LXRydW5rCisyMDU0NSBhMTllNjhlMzY1Yzc1NzFkOTc4NDk0NjEzMWIzODg1N2RjMjFmZmMzIGRlc2NyLWJyYW5jaAorMjA1NDYgOTkzNDIyNWZlMjk3ODI3NDBiZjBiZmVmMDhlMmE2MDBmYjY4NGRjMCBsZWdhY3ktdHJ1bmsKKzIwNTQ3IDliZTc3NThhOGM5NGM4ODk2OTc0MzE5YTYzMzBkZTI0ZGQzMTA4ZTYgbGVnYWN5LXRydW5rCisyMDU0OCBiMjgyMzYzNDlkZTUxNDczNzExMWQzYzVlNjZjNGYxMTEyMmFiMzc4IGRlc2NyLWJyYW5jaAorMjA1NDkgOWU4MWQzOTFiNzY1ODlkODZmYWNjNDVkYWMyYWQzNTVjMzcwMDU2NyBkZXNjci1icmFuY2gKKzIwNTUwIDk4N2NlYjllYzAyMzMzZGMwYjFkMDM1MzY1NGRiN2Q3ODVkMjhjOTggZGVzY3ItYnJhbmNoCisyMDU1MSA4ODdiNTI5NzY1MmEzYzZmYWZhZjBkMmVlNGFiYjYyYjA3Y2ExNGMzIGRlc2NyLWJyYW5jaAorMjA1NTIgZTA2YzM2YzEzZjEyODYyNDNlZDA4NWRmMDUwNTU0MzU3ODFlNDkxNCBsZWdhY3ktdHJ1bmsKKzIwNTUzIDUzZWUwZmE2NzY2MTdhOTE3YzlhODJhOWU3MTFkYzI2ZTRhZjAwZjAgZGVzY3ItYnJhbmNoCisyMDU1NCAwMTNkZWI1ZTE3MmJmNWM5NGExMzZlMTE3ZmEwNTE1ZTc3ZDBiN2M1IGRlc2NyLWJyYW5jaAorMjA1NTUgNzAzN2QxZjZlNzlhZWI0Njk0MDAxZjdmOTYxMDg0NjZmNTJjZjUyNCBkZXNjci1icmFuY2gKKzIwNTU2IDU4N2RhMjlkNjlkNWQwY2U5NzE0MzU0MTQxNDc5NmQ2YmU3OTNjMTAgZGVzY3ItYnJhbmNoCisyMDU1NyAxNzIxMjYyYWJhYTgyYTMzN2RiYWViNDU3M2YyMWY5ODE3NzRmZTljIGRlc2NyLWJyYW5jaAorMjA1NTggNGI4MTFhNzFiZTVjMmZhZDk3YWU1YzlmYTIyMGFiMjljZjFjNzBiYSBkZXNjci1icmFuY2gKKzIwNTU5IGFlMDc1OTlhZGYzM2Y3YTg2ZGJkNzVlNWNmYjdlZjY3MjgxMWY3NzUgZGVzY3ItYnJhbmNoCisyMDU2MCBlMmRhZWYwNjg0OTZiYzEzNmI2MTMxNzRjNzQ1MDA4MzdiYTRlMWQ2IGRlc2NyLWJyYW5jaAorMjA1NjEgNTZjNTQ0NWVjODM1ODZlNWY3NzdhYWZjYTVkMDZhNjMzZjM2ZTU4ZiBsZWdhY3ktdHJ1bmsKKzIwNTYyIGFhNzA4N2FjNmQ5NTU5YmM5OTFmOGRkMDlmNGRlY2Q0Yjc0NjcwMDUgZGVzY3ItYnJhbmNoCisyMDU2MyBiZDMxM2E1ZTIwZDc4OGZmOTBkMTEwNTA1N2YzNmY5ZjQxZGY2NDBmIGRlc2NyLWJyYW5jaAorMjA1NjQgNWRiZmU4MzE2MjM2Mzg5Y2U3YTNkOWU2MGJkODgzMzk4YzRhMWY3NSBsZWdhY3ktdHJ1bmsKKzIwNTY1IGI1ZjU4M2VlY2IyMDNjNGMyODRiMjBjYzM0M2IwNGM3NTIwMDExNzAgbGVnYWN5LXRydW5rCisyMDU2NiBkMWVjNjc5YmFhM2RiODJhYjg1YWRjODA3YzJhZDE5ZDBlMTUwYzQzIGxlZ2FjeS10cnVuaworMjA1NjcgNTU3YWFkM2U3NGJhNjM0YjAyZmViODA3NmQxM2I3NWIyYTI5NDNmMCBsZWdhY3ktdHJ1bmsKKzIwNTY4IDZjODIyNzdlNzdmMzU3ZDc0YTM1NzE4MDQ3NmQ0YzQwNTgwYmUwNmUgbGVnYWN5LXRydW5rCisyMDU2OSBkZDI0YWJjYjIzMzFjNzhjZDY4ZDVlYTRkNzI5MjkxNWU4Y2M5NDE3IGxlZ2FjeS10cnVuaworMjA1NzAgMTExODFjZDM4OTdkYzFiODAxY2MxZDE5NzY0YmMzMWE3MDVjZjVhOSBkZXNjci1icmFuY2gKKzIwNTcxIDdhMzY3YWQ0M2YzNTIzOGQ0NjY0Y2NmYjk4YWY0ZTAxOTRhYzczNzkgbGVnYWN5LXRydW5rCisyMDU3MiBmYTgzMjZjYzc2MWNiM2FmZmQ2ODAyZWUwM2UxM2IzNWE1ZjA0YTc0IGxlZ2FjeS10cnVuaworMjA1NzMgZWJjMjRhMTA0MTMyOWM1ZWVmMmU1MGFlOWM5ZjZhNjQ4NjI4OGVkNyBsZWdhY3ktdHJ1bmsKKzIwNTc0IGE4NDg3NDY4N2NiMWNkZTM4NzE3ODA5ODY1YzU1Nzg4YTA3N2I1MTEgbGVnYWN5LXRydW5rCisyMDU3NSBhOTdlMThlNDk5YTljZjdiMWJiNGMwYTlhMjNkNGM5MTU2ZjA1ODQ1IGxlZ2FjeS10cnVuaworMjA1NzYgMDQ3MGJhYmRhZTQ5ZmVlODMzNjQ4NGU0ZDEyMzk3ODdkY2VlOGVkOCBsZWdhY3ktdHJ1bmsKKzIwNTc3IGE2Njk4YTAxNmFmZTIwNjFmNzc3NDViMTcyYjhlMDI2MjQxNGY3MDAgbGVnYWN5LXRydW5rCisyMDU3OCAwODVmNDYwYjBlM2I1OTk0YTI0YmQ4NDBiMDIyOWFlYWY2MGRiY2I3IGxlZ2FjeS10cnVuaworMjA1NzkgZDY0OThiMWVmNTBkMWNkOTNmMGQ3MjY0MjkzYjhlZjUzMDFmYTNjMiBsZWdhY3ktdHJ1bmsKKzIwNTgwIGRlYjhhNWUxNTFhMzQ2Y2Q1NGE2NGIwNDY3Y2RmZjBhMWRlMjg2YjkgbGVnYWN5LXRydW5rCisyMDU4MSAzMGQ3NTE4ZTE3ZTViZmE5MzUyZDI1Njk4NWFjNjRjNzA2MGU0NWZkIGxlZ2FjeS10cnVuaworMjA1ODIgMGZmNGNkZjM0ZmMxYTUwZjNlMGI2ZjQ1YTdkNzRhZGVmMWQwNmE1ZiBsZWdhY3ktdHJ1bmsKKzIwNTgzIDY0NTIzMzA3Nzk0ZTkzNTQ3YzU4NTYyNWEwNmI0YjcxZjNmYmZjMzcgZGVzY3ItYnJhbmNoCisyMDU4NCA1YjZkNTk2MWM5ZTM4ZTBmNjJmMTk0OGRiYjM2MzMzYzYwZjZiZTc0IGxlZ2FjeS10cnVuaworMjA1ODUgZDc2NjQ5YmQzOGQwMWM5NmU1ZGUyNmMxY2RmNmIwMGJjM2MxOTE0ZiBsZWdhY3ktdHJ1bmsKKzIwNTg2IGI5MDc2ZDg3MThhYjFkMmRiYWQwYTBjNDRkYWEwOGZkOTdmMDE3ZTIgbGVnYWN5LXRydW5rCisyMDU4NyA0YzI5YjA0ZTRkNmZjMTg2YzUxZmRmMTQyMmU4YTEyNjliNzUxNzQ1IGxlZ2FjeS10cnVuaworMjA1ODggMTJjODBiNTcwZDAwYTBlY2I5MjliOGNiZTY3YWZiZDQ1Y2MxMTI0NiBsZWdhY3ktdHJ1bmsKKzIwNTg5IDc2ZWU4YjYyZWUyYTgyZDYyM2M2YzRlMDkxYTRjOGNmZjEwZWRjNjYgbGVnYWN5LXRydW5rCisyMDU5MCAxNWNjZTNkODBkMGZkOGQzYmIxYTc2ZDMwNDA3YWE5NjI0OGI1MmE1IGxlZ2FjeS10cnVuaworMjA1OTEgZDdkMDUxMDNjMDIzZmM2NDU5OWNjYWUzNGYxZmQxMjQzN2IxMDJlNiBsZWdhY3ktdHJ1bmsKKzIwNTkyIDhkOWViNWE0ZWJjZDk4ZGRiNTg0ZTk0ODcwYWQyYWNhYjRlZTc1ODIgbGVnYWN5LXRydW5rCisyMDU5MyA5OWIwNmE2NDliMTQ3Yjc1MGM3ZDhhZGY1ZTYxMzZiODkyOTkyYzA2IGxlZ2FjeS10cnVuaworMjA1OTQgNzk0OGNkNGY3NjYzNzQyNDNmY2ExNDg3Y2I2ZTRhYWU3ZTQ3ZmNiMSByZWxlYXNlMjEtbWFpbnQKKzIwNTk1IDg2NDNlNmRlMTNkZmE3MDM1YTRlOGRlNDNiMjNiN2RhMzg0ZWIwYjcgZGVzY3ItYnJhbmNoCisyMDU5NiBlNmU4MWRjZWJmZGU1ZDllNGMyNTYzYTgxMGMwMmY5ZTBlNGNmNTRjIGxlZ2FjeS10cnVuaworMjA1OTcgOThmMzRjNDY0M2U5ODAwMTI0Y2JlNGRkZjBmNjRmODdjNDFmZjJhOCByZWxlYXNlMjEtbWFpbnQKKzIwNTk4IDBiZTI3NzAzOWQ5M2I0MmYzNmRhN2NmOTM1MWZlMzJjOGU3M2JlYzUgbGVnYWN5LXRydW5rCisyMDU5OSBkODA1MDAwNzZlOWZiOTVjZmY4MmI4MGUyNDI5ZDhmYjU1NzE2NDhiIGxlZ2FjeS10cnVuaworMjA2MDAgYmY3ZjE2NmQzYzk3NDYwZGIwZTg5MjJlMGE1NzkxN2VhNDQ2NGJkMCBsZWdhY3ktdHJ1bmsKKzIwNjAxIDU1ZTMyMDE4OTUwODdiM2VkMTE1MTUzMmY5NTg2MGI1ZjI5NmI1YzUgbGVnYWN5LXRydW5rCisyMDYwMiAxYzJkMjZlZWY3ZWQxYjU5Yzk4MmQ3NTVhMTRkODRlNDYzOTgwMzhiIGxlZ2FjeS10cnVuaworMjA2MDMgYmI2YzU5YTg1Y2ExNDdkZDE0ZDc3YzdjOWViZWQzN2JlYTBiMDdhYSBkZXNjci1icmFuY2gKKzIwNjA0IDhiMGMwYzQ4MmE1NWZkMDZkOWVjZTlkMzdkN2MwZjY2N2Y0ODFkMGYgZGVzY3ItYnJhbmNoCisyMDYwNSA4MzlmNmYyY2Q2NmYzY2ZkYTI2MTk5NjgxNWFlMGViOWY4ZWFjYWZlIGRlc2NyLWJyYW5jaAorMjA2MDYgMzA5MWZiODNkNTI3MWNjZDM5MTI3N2FiNTNhNzgwZjY2ZDM2NWU2NiBkZXNjci1icmFuY2gKKzIwNjA3IDhmYzdiZWNmNzgzOTQ3MjkyN2ZmNjQ4Y2RmNmY5YmQ5ODJlZTE4ZmUgZGVzY3ItYnJhbmNoCisyMDYwOCAwYTllM2FhNzFkYjlmMjMwYjg1N2U4OWQ4Mzg0M2VkNWE5OGMzOGJkIGRlc2NyLWJyYW5jaAorMjA2MDkgODJmOGEyYjFiNzljYzMyZGIxNmE3Njk4ZjJjNmFmYmEyMGMyZTNhMSBkZXNjci1icmFuY2gKKzIwNjEwIGZjNjU4YWRjZWRjOGU5YjRiYzI4NmU5NWZlNWJmMmM5NTU2MzJiNWEgZGVzY3ItYnJhbmNoCisyMDYxMSBmODllODUxNTNkMDQ3NTM5YzRmNDc0MzQ0YTBjOTY4MDJiNWZjMGY1IGRlc2NyLWJyYW5jaAorMjA2MTIgMzljYWJkMGFhZTFlYmQyODUzZTVjYzU4Y2YzNjZjN2IxZDM0ZGIzYiBsZWdhY3ktdHJ1bmsKKzIwNjEzIDlkMWUzMDRlY2IxOGE1OGRiNGZkYWNjMzA4MWFkMmE3NTU4NGQ1MjkgcmVsZWFzZTIwLW1haW50CisyMDYxNCA1NTI3ZDYyZmFmZTA1ZTZiNjZhNWU4MGE5ZjZlMGZiMWFmZGRjNTk0IHJlbGVhc2UyMS1tYWludAorMjA2MTUgNmY4ZWZkYmRmZjQ4MjNiY2FmZWRlMjFjMzhhNmVhOGExYzFiNTZlMCBkZXNjci1icmFuY2gKKzIwNjE2IDE2MmI5NGM4ZDJkMWE5NGFlNmI4YzQ1Zjc1MTA4ZWFjYWU3NjI5YTkgZGVzY3ItYnJhbmNoCisyMDYxOCBlOWE0ZTI3ZThkNGUxNmUxNGIzMmFiMjY2OTUzMDM3ZWEyNDY4MTE1IGxlZ2FjeS10cnVuaworMjA2MTkgMzk5ZDk5NjAxYjJkYzBkMmU3YmI0YjU1MGQ4NDIxOGMzNzczZDE5NSBsZWdhY3ktdHJ1bmsKKzIwNjIwIDBjOTg3NzEyMGYzODE3ODNmNzUwM2JkY2FiNGQ1NjAwNTA2OTNmNmIgbGVnYWN5LXRydW5rCisyMDYyMSAzY2Q0YWY2NjZkZTZiM2U2ZjAwYzgxMjIyMjBiMWFkOWY5NzU3YzM5IGxlZ2FjeS10cnVuaworMjA2MjIgOWUwOTNiZjhmNmE5M2YyYzMzZDdjZmFiMDkxNjZiZTZkMTk2OGU1OSBsZWdhY3ktdHJ1bmsKKzIwNjIzIDFlYmI0ZTU2NjI1N2FhODlkZWQwZjNkNmYwMTA4MzRmNWFhMDE0YWYgbGVnYWN5LXRydW5rCisyMDYyNCA0OWQ5YmE1NTU4OGI2N2I2Y2M2MTFiYzMxNGZiOWFhYTYzOWI0ODExIGxlZ2FjeS10cnVuaworMjA2MjUgZWU0ZDE3ODYyYjYxODBiMTQwNzU4MGZmNTc2OTM3NzQ2NTQ4M2QzMiBsZWdhY3ktdHJ1bmsKKzIwNjI2IDAwMmVjNzMzYjVkYzViNjM4ZDVjZGQ1MDA0N2FhODQwNDc0ZWU0MjkgZGVzY3ItYnJhbmNoCisyMDYyOCBkNGQwNjUyOWMyMTgxMWQzMGVjYjcyYWUyYzIxMTIyNDdlZjgyMTA0IGRlc2NyLWJyYW5jaAorMjA2MjkgOWU1M2E1ZDcxZjFkYTFlZjMxMDQ1ZjVmMzNhMzY5NjYzZWRkMWQ5MCBsZWdhY3ktdHJ1bmsKKzIwNjMwIDE4MTI0NzZiN2ZlNDU3MDIxOGUzZDZjNTNhZmU5NWRkOGZhNjg0NjggbGVnYWN5LXRydW5rCisyMDYzMSA2OGU3MWU5YmMyMDQ1NDJhOWEyY2RkYWQxNWIyODUwMGIxN2I3NTBmIGxlZ2FjeS10cnVuaworMjA2MzIgYWFiNmMxZjE5Mjg5ZGNmZGJkYmEyYzE5ODY2MWNlOTcxMThjNzAzMCBsZWdhY3ktdHJ1bmsKKzIwNjMzIDMwNjRiNzNhZGMxYWQ3NzA0YTE5ZWU3YzIxNDY2ZDM1MjViZmNhYjkgZGVzY3ItYnJhbmNoCisyMDYzNCA0NDI0ZTA2ZDQxNTk1NGZhMTIyNzdiM2I2YjI3MWZjZjQzMzUzNzQzIGRlc2NyLWJyYW5jaAorMjA2MzUgMWU5MDJmYzczNjQ1MTg1NDczZDc0NTQxMDI4YzhiNDZkMjIxZDcxNCBsZWdhY3ktdHJ1bmsKKzIwNjM2IGZmYzI5MjNiYWQxYTk2NDU4YmM2YTg5OGIyYTJkODAxMGRiNzYyOGQgbGVnYWN5LXRydW5rCisyMDYzNyBmOTcwMTk1MTk2YzRmYmU3NjMxMmNkZmY1ODRmOThjMTlkODZiZWNjIGxlZ2FjeS10cnVuaworMjA2MzggYWFkMGFkZjgwNmFkYzgyZGIyNmFmMTQ3MmExMjk4ZjgwZTlkNDUyMSBsZWdhY3ktdHJ1bmsKKzIwNjM5IDM3OWZlODg3NjQ0ZmI4MGM2M2Q3OTI3MjkxYzE3MGZjMzdmYjJiYTEgZGVzY3ItYnJhbmNoCisyMDY0MCA1NDYyMzYyNmRhNGUzYTFmZTkxOGJlYjFlZTM3MGYwZTQ4NGU0M2NhIGxlZ2FjeS10cnVuaworMjA2NDEgNDMzMDEzYWY0NTk4NzhhOGIwYzQ0NWIzYjVmZjAzOGUyZjQxZjg5ZiBsZWdhY3ktdHJ1bmsKKzIwNjQyIGRlZDQxYmU4NGRhNGZhY2MxNWQ5ZmMwNzJkODM3YmY0OGZhNWEzNjggbGVnYWN5LXRydW5rCisyMDY0MyBlM2YwZmQzOGMyNGI3MGIwOWI1OTE2ZDM2OWE4MWE1ZDdmZjRlZTE4IGxlZ2FjeS10cnVuaworMjA2NDQgZjNiODc4NWJkMDIyMmE2MWZlMmJiYTM4MDMyNGRjN2I4YWMzOThkMyBsZWdhY3ktdHJ1bmsKKzIwNjQ1IGI0MWY2ZWY2ZWE4Zjc4ZjE2YWNhYmM4MDgwYmE2OGE3ZDUzN2JlODggbGVnYWN5LXRydW5rCisyMDY0NiAyZjE2MDYyYTFiN2M3NWNmYmU2NjBhOWY4ZWE3N2VlZWFjZjg5MzY5IGxlZ2FjeS10cnVuaworMjA2NDcgYWQyNWJmY2M0Mzc3MTVmNzBjZmQzNzdkOWVmYWE5OGJlYTI5YTMxZiBsZWdhY3ktdHJ1bmsKKzIwNjQ4IGZlNGMxMDM0YjQ4MDEzYjRmMjJkYzc3MThkMzE1YzFlZjlkMWFlMWQgbGVnYWN5LXRydW5rCisyMDY0OSBiYThmOGU0ZDQyYjA0NzkyNWY4MTYxNjA5ZjEwYjY4NzRhNGVhNjU5IGxlZ2FjeS10cnVuaworMjA2NTAgMWM4NmM4ZDFjOWM3NjJhNzIyYTY2ZWE2YzRhYjdhY2I3MDU3MjZhZiByZWxlYXNlMjAtbWFpbnQKKzIwNjUxIDYxOTllNWJkMzcwYjU2MGM0NTMzODg1MmMxYzE3ZjJjMzZjOGI4MDQgbGVnYWN5LXRydW5rCisyMDY1MiAzNTBiZTE5Y2E2YTVmODlkZGNhNmI2MjhhNWJiYzA2YmZlMWE1NzRkIGxlZ2FjeS10cnVuaworMjA2NTMgMmE3Y2ZjMTcyYTY4NGEwYTJkNzQyMDE2OWI4NWM2OWM0NDZjNzJhZCBsZWdhY3ktdHJ1bmsKKzIwNjU0IDVlM2JhYjhhZWY3YjBmYWEyN2MxZGFlZDU4MGNkNjhjYmFjNmEyY2QgbGVnYWN5LXRydW5rCisyMDY1NSA2NDkzZDVlOTQxYzJhODBmZmVhNTgyZmMyNzQxYWI0YTg4YzY5Mjg2IGxlZ2FjeS10cnVuaworMjA2NTYgZmY4MTBmYjU5NTEzMjE5YWNkMmNlZDY5MjRjZDkzMGIzMTc5N2JmNiByZWxlYXNlMjEtbWFpbnQKKzIwNjU3IDc1ZTc4MTQwNDFkYWNiOGViZDNmOTQzMmU3NzMzOTdjY2VlOWVlYzUgbGVnYWN5LXRydW5rCisyMDY1OCBhNmEzOTlhY2Y2MjA2NGY5YWMyZmE0MTJjNjUzMDQ0NzVmZTJhMGM5IHJlbGVhc2UyMS1tYWludAorMjA2NTkgOTk0OWM4NzBlMTQ0MjBhMjY4MjY3YjRhOGQ2MDYwOGY5MTY1NmJmNSBsZWdhY3ktdHJ1bmsKKzIwNjYwIGJiMDk1MzQwYWM5ODc1OTNlYzE5NGUyNGE4ZmMwMGVmZjY2ZmUyNzggcmVsZWFzZTIxLW1haW50CisyMDY2MSBlZGUyOWFkNjQ0MGFjMDI4YjgzNzA4YjQwZjU1ZjU4NWQ3ODZlODYwIGxlZ2FjeS10cnVuaworMjA2NjIgMWRlYTQzMWZiMGEwNDExMjMxNzg3MjRhMzBmMThiYWUwMjM2OTczNCBsZWdhY3ktdHJ1bmsKKzIwNjYzIGNkOTJjMGQ3ZWFjNDdmOWQ0NzU2NjdiMTE2YjEyZTcxMzEwYjdiYzMgbGVnYWN5LXRydW5rCisyMDY2NCA5ZjZjZmRmNzFkNTA2OWFhNDMzMjRjNTk5NjcwNDI3OTk3NzI5NTg1IGxlZ2FjeS10cnVuaworMjA2NjUgNmRjMzYwNzhmNTNlMWU4Njg3ZWEzYjEwZDE3YjNlMjIwN2ZhNWRiZiBsZWdhY3ktdHJ1bmsKKzIwNjY2IDFiMWYwY2IyODVjMjU4MzZhNjIyZjE3OGMyYjY0NDJiY2NkM2MwZTEgbGVnYWN5LXRydW5rCisyMDY2NyBiZGVkNmQzMTg2YzBkMjk4YWQ2N2U5MGJjZjg3OWVkYTQ5Zjk5ZDFmIHJlbGVhc2UyMS1tYWludAorMjA2NjggNDg5NjYzMDU5MzQxMzIyZDI3M2QwOWM0YjA5MGFmYTUyMzRhNDQxMSByZWxlYXNlMjEtbWFpbnQKKzIwNjY5IGE2MjZmYTBlM2Q3NTA0ZDZjZTcwOWM1YjE0MDk5MDQwOWQwM2QzMDggbGVnYWN5LXRydW5rCisyMDY3MCAwY2ZhZGQ3NjA3ZDUxZTI1NGQyMjU5YmM5N2FlYWUyMGRlNTI1MWE2IGxlZ2FjeS10cnVuaworMjA2NzEgMDZkN2RhODE0MDlkZTFjMGZjNGYzMzI5NDNiNjZlMGFiY2RmN2I5YSBsZWdhY3ktdHJ1bmsKKzIwNjcyIGUxM2VlZGQwNGE0YTgxYzc1YzEzNWZiOTBhNjA0NjZlN2YyMTQ2MGYgcmVsZWFzZTIxLW1haW50CisyMDY3MyBlNzg1ZDdiZDc1OThmYTQ5ZjBlZjUwODdjOWVjYjYyMDNhZGNlMjA0IGxlZ2FjeS10cnVuaworMjA2NzQgNjBmOGMxNWMwMjU1ZGI5ODdlM2I3NjYwNzVkOWMyZTA4OGY2NWMwMCByZWxlYXNlMjEtbWFpbnQKKzIwNjc1IDM5YmYxZjZjZjBmOWJkNWY4MjA2ODE1YWY2YWYxZWZmNjFlZjUwYzYgbGVnYWN5LXRydW5rCisyMDY3NiAxNDc2MzJhZDFiY2MzYTNkNzMzMzIzNzNmMjMzZTYxZGE5OThlNTZiIGxlZ2FjeS10cnVuaworMjA2NzcgNDM3NDgyZmU1NWU2NDc3YzU1MjMzODE1ZjIwZGZlYmNhOGRkNzQ0ZSBsZWdhY3ktdHJ1bmsKKzIwNjc4IDBlYmZlOWExZWI0M2U5NWM0NGJjZDBmYTkwNzkwN2RlZmE5YjU0MjEgbGVnYWN5LXRydW5rCisyMDY3OSA4MjBlNWEwYzMxMTJmY2YzZDc5YjdkOWJlYjM2NjQ0MWEzYzFlYTQxIHJlbGVhc2UyMS1tYWludAorMjA2ODAgZjk3MWYyNTJkOWI4N2E2NTYyN2ZiZDY1YzIwMmM4YTI4MDRmOTU0OSBsZWdhY3ktdHJ1bmsKKzIwNjgxIGQwNWRiZjNmMzZmNjcyOTQyOGNiOWVlNjUxMWYyYWRhNjIwNTRkNjUgcmVsZWFzZTIxLW1haW50CisyMDY4MiBlZDc3MWI1ZGI1YWFmM2E3NzY3MDRlMDE2MTNhZWQ5ZjMzMGYxM2UwIGxlZ2FjeS10cnVuaworMjA2ODMgMWEyMWRkMTNlNjBhNmU3NDJlYTFiMGJkNTk4NzZmMDBiYWU3MzJmNSBsZWdhY3ktdHJ1bmsKKzIwNjg0IDNlZTlhM2Y2MGJjNzk2NGExNzIxZDE1YmQ0MDI2ZDRlNzU3YWVjNzkgbGVnYWN5LXRydW5rCisyMDY4NSA1M2JiZWIyNWJkZTcxOWY0NmFiNmI4YzZhOTNmYWRmNDM5MTc2Y2U4IGxlZ2FjeS10cnVuaworMjA2ODYgYjE2ZmM4OWMxOTRmNmEzNTRmMTVjNDE3OGI4ZGM3ZmFiOWZmNTNhZiBsZWdhY3ktdHJ1bmsKKzIwNjg3IGI3NmQxYjVlODg2MDBkNmVlZmUzN2JlMWE4NzEyYWE0YTg5NjQzODIgbGVnYWN5LXRydW5rCisyMDY4OCBjNTdjZTc1ZGNkZTBjODJmMTc2ZDhjMWUyZmY0ZjQ2N2Q1YmE3MzY1IGxlZ2FjeS10cnVuaworMjA2ODkgMjYxMTk2YmQxNmQ3ZWYyMmNmYzk5N2ViYjljZDc4NjE5NjdhNmE0OCBsZWdhY3ktdHJ1bmsKKzIwNjkwIGY0NjVjYWUzMDFlZTYxNWQzMDE4OGRiNDBiMzViODQ0YTA2ZTI1Y2MgbGVnYWN5LXRydW5rCisyMDY5MSBiMzkyNjZmNzQ4NGM0NDgwNTRlMzY5ZmE4YTYxZWQ1ZjhhMmE4NzBmIGxlZ2FjeS10cnVuaworMjA2OTIgYzg4NmNkMWMyMTg0NzNkMmNmZmY3NjM2ZTI0MzA0NjgxNTBmNTgxOCBsZWdhY3ktdHJ1bmsKKzIwNjkzIGY0Mzc0ZDc5MzFiYTlmZmJlYjUzNWE0MTRmOTE2YWNiOWY0NzUxNWEgbGVnYWN5LXRydW5rCisyMDY5NCBjNDdjYzlhOTg2NGM0ZTQyMWEwNGY4N2ZlOTMxYTJhNGY3MjVmMTlhIGxlZ2FjeS10cnVuaworMjA2OTUgZWY2ZjNlMTgxODc4NjYzM2I0YWJhMjVmYmYzYzZhNWI5ODM4MDkwMSBsZWdhY3ktdHJ1bmsKKzIwNjk2IDQ3ZDE4NjAyZDVlYTQ1NTEwNmU0MmVkYTk2YjJkNmMwMzNlODFjZWEgbGVnYWN5LXRydW5rCisyMDY5NyBhMDZhNzA0MjYwZTk2YTFkNWZlNWY0NTQ3YTA3ZDJiYTc5OTQ5Nzk4IGxlZ2FjeS10cnVuaworMjA2OTggYTk4N2NmMTgxNDM0OTBkYThhZGI5NDdjOGFjZjRlMzZlM2Y2MDJlNiBsZWdhY3ktdHJ1bmsKKzIwNjk5IDVlMGVjMzljNGNlY2M0YzQ4NGU2MzRlNjRmMDcyZjFiYzE3MTk5NjkgbGVnYWN5LXRydW5rCisyMDcwMSAwODBhMTI5MWJmNmM5ZjgxZjc2MTJjNDExNjIwYmU2YWZiNzk4M2NlIGxlZ2FjeS10cnVuaworMjA3MDIgMzMyNjk3ZGU4ZGI4ZTJkNTI5NGE3YzNiZGI1ODQxNWY2ZGQzMTczMSBsZWdhY3ktdHJ1bmsKKzIwNzAzIGI1MzRmMTA3Mzk4N2NkMzYwMzA2ODZiNzNjYTY3ZDVlZGQ5OWU1MTkgcmVsZWFzZTIxLW1haW50CisyMDcwNCAwOThkNmY4NjlhOWRlODU1MTc0ZDVmN2YwYWUzMmE0N2VmMDJjZjlkIHJlbGVhc2UyMS1tYWludAorMjA3MDUgNjg2MDU0ZTAzYWM1OWM1YmQyMGM2MDRmMmRkMDFhNDYxYjU1N2FhMiBkZXNjci1icmFuY2gKKzIwNzA2IGVmNjViY2VlNzJjYTIyMzZjYTdiM2NhMGU4MTA0M2U4NjY3OTdjMzggZGVzY3ItYnJhbmNoCisyMDcwNyA2NWUyNjExM2IzZmIyZTExZjliNjExZGFlMzBkOGE0ZDRjMzQ0MTMwIGxlZ2FjeS10cnVuaworMjA3MDggNGVmMWI2YTgzYTQ3OTRlMTQ0YjY4ZTRiZjY1OTc1NWUyYjc4NTNjOSBsZWdhY3ktdHJ1bmsKKzIwNzA5IDJmMGRmOWYwYjA4ODc4MmQ4NjdmZGM4ZTc3NzU4MTNjZTQ3NzZkZWEgbGVnYWN5LXRydW5rCisyMDcxMCA2NThjMDc3ZGQzNTEzMTM1YzQ5ZjIxNDdkNmQ4Zjg1OTg2OWMwZDM1IGxlZ2FjeS10cnVuaworMjA3MTEgNTFhYTQyNTAyOTc1NTBkYjFlYWFiNWUwYjc2ZmE2NTMxNDJlNDI3NyBkZXNjci1icmFuY2gKKzIwNzEyIDQ3ZDQ0ZDg1NDJiN2IyZmI2NTEyMjhiZTA0NTMzN2RiMWFjMTFiZjMgZGVzY3ItYnJhbmNoCisyMDcxMyBkZDZmOGM5Y2FmZjBlYzVlMDQ1ZWQ1NjExNjBmOTk3MmRhYWNhYjM0IGRlc2NyLWJyYW5jaAorMjA3MTQgN2E5ZjZjMDk3OTFhOGVlZDI2NGE0ODQyZGE5NWExODFkZTg2M2MwMCBkZXNjci1icmFuY2gKKzIwNzE1IDQ3ZjRkMDU2OGM3Y2I3MzI3NGRjZThmNDE2MmE0N2Y3YTExMWMwOTcgbGVnYWN5LXRydW5rCisyMDcxNiBjMTg4MGY2YjMxODljZjg0YzM0ZWYyZTAzODA0NDdmZDRkZDY3YWUxIGxlZ2FjeS10cnVuaworMjA3MTcgY2UzNzM0MmY2ZjZlM2YzMGU2MzZhMDdlMWU2YmRhNzYzNDI0ZGJlYSByZWxlYXNlMjEtbWFpbnQKKzIwNzE4IGNjOGQxNDhjMzk2YWU5MDhjOWI0MzM0NmFkODhlZGMxOGY1ZTM0ZTAgbGVnYWN5LXRydW5rCisyMDcxOSBmYjEwM2UzZGEyYWVhZmYzYzlmZTE5YzIyYzk2MDZlMTc0ZDYzOWM2IGxlZ2FjeS10cnVuaworMjA3MjAgMDFiNTA0M2E0NTA5ZjcwNDQ0MzQwODcxYTE0MDhkZWE0NDYxNDUxOSBsZWdhY3ktdHJ1bmsKKzIwNzIxIDY2OTYwNGQ5MzQzZjA1ZDE3Y2E4MzViN2FhNTU5YWZiZDI1N2U1OWEgbGVnYWN5LXRydW5rCisyMDcyMiA0YjJmZGFlYmJmZTVkZTMxYzg3MGIzNGYwNmNkZDRhYTE4ZGI3YmQ2IGxlZ2FjeS10cnVuaworMjA3MjMgMGVhMDkxM2Y4MjRkYWIzZmUxYjViMDEzNzdlOTJiYzMzYzkwOTNhNSBkZXNjci1icmFuY2gKKzIwNzI0IGQ3Y2NiOTMxY2E3OTU1NWVmODY3ODI0NjE3NTViMTJjYWVlMTdmMGQgZGVzY3ItYnJhbmNoCisyMDcyNSA3YTJhMTIyYzk5N2MyMDYzNzViZDEzMDE0NDdlZGMwNjc4NTI2MThlIGRlc2NyLWJyYW5jaAorMjA3MjYgZGNlMWY1MzQ1MWE1YWY0NjkyZTVkMzhhNmZlOTViNjNjYzczNDM4YSBsZWdhY3ktdHJ1bmsKKzIwNzI3IDU5NjA0ZjViNGRkMTI5MGUxZWM0ZmQxYWJjNjdmYTI5NDc4MWRhNTAgZGVzY3ItYnJhbmNoCisyMDcyOCA0MTllYmM2NzNlZDhkZjljNmY5ODEwYjhmNjAwYTU2NGRlNDEwYjdhIGxlZ2FjeS10cnVuaworMjA3MjkgMGViYjkxNTIxYWU2YmNlZGJiYzA1ZWVjN2I5MjYxOTJiMjEyOGI2YiBsZWdhY3ktdHJ1bmsKKzIwNzMwIGI0YjM2NTdjYjFmYWE0NTczYTRkNTRkZTc0ZDY5NzI4NjQ5ODc5ZDEgbGVnYWN5LXRydW5rCisyMDczMSA5OTNmYjE4MDFmNDFiMjRhNmFjMDgwOGVkYWViNmM0YmRjNTdmNTU1IGxlZ2FjeS10cnVuaworMjA3MzIgYTE1NzVkYmY3ZDgxMmIxOWU4NjU3YjAwMzkyNmY0YjhiN2FkMmE1MSBsZWdhY3ktdHJ1bmsKKzIwNzMzIGFiMTdiOGI4ODY5NjJkOTEwMGFlNjBiYmIxNmYwOGM5ZTM2NDNiNDAgbGVnYWN5LXRydW5rCisyMDczNCA1Mzg3Y2I3NjcwNTk0YTJmOWVmZDZjNGYzYzQ2N2Y0ZTYyMTc3ZTIxIGxlZ2FjeS10cnVuaworMjA3MzUgMWRhY2QwZDYwNjM3Yzg3M2M5MzcxZmQ0ZTAzOTgwNTRmMTEyMDYzZSBsZWdhY3ktdHJ1bmsKKzIwNzM2IDEyOTZlODYzMDRlZjU4ZjRmMmJlNWM1N2U1ZGRkYjM2YmRkYmYxMDEgbGVnYWN5LXRydW5rCisyMDczNyAwZWQ4YzVmM2Y1MzA2MjQxMjUyMWM0MzBjMzA2Y2IzZTNmMmQ0YTA1IGxlZ2FjeS10cnVuaworMjA3MzggOTljNDlmMDA5Mzg4ZTUyY2I0ODI0OWQyZWEzYTY2NTFlNTYxYWFmNiBsZWdhY3ktdHJ1bmsKKzIwNzM5IDg5OWYzNjdlYmE1NmI1MGM5MmUxMDZhNGU3ZDM4NDJlYjNiOWY2NTYgbGVnYWN5LXRydW5rCisyMDc0MCA0NzllYTY5ZWM4NWIzMjBiOWJiNjBiMzM3ZDI3MzA3ZDcxNGNjYWM0IGxlZ2FjeS10cnVuaworMjA3NDEgMjJhMGIyZTMyOTFmMDJhODg5ZTRkZWM4NTRhMzExNDZmMzNjMTdlNiByZWxlYXNlMjEtbWFpbnQKKzIwNzQyIDc4YzY0YzBmNjYxY2JjNGY1M2E4ODU0ZjUyY2MwOTEwOGU1NDIyM2UgcmVsZWFzZTIxLW1haW50CisyMDc0MyA4MDQyNWIyYzFlNGM3MDIzY2Q1ZWIxN2ZjYmVmMjdjZTJiZWE5MTJkIHJlbGVhc2UyMS1tYWludAorMjA3NDQgMmUwMTVmOGExYWMyMDFiMTJmMjI1MzRmNDFlYjBhMmI2NjIwMTk0ZSBsZWdhY3ktdHJ1bmsKKzIwNzQ1IDFjNjA0YmM2YjkxZTU0ZmRmMTYxNjdhYmU5MWRiZjVhMmQzOTg0MDIgbGVnYWN5LXRydW5rCisyMDc0NiAxZmIzZWNhODk2OWVhOGNmZTcwMDA3NWFiODIxZmY4YWEzMzNmODlkIGxlZ2FjeS10cnVuaworMjA3NDcgNmUwMDhjNjE5ODU1Mzg1NmYxMTc3NzhiODYxYTJmY2ViY2ZlNGUyZiBsZWdhY3ktdHJ1bmsKKzIwNzQ4IDNiNWJlYjkyNzdlMDQ3YmUzMzExYjk2ZjkzNDBhOTc5MjMzZTVkODggbGVnYWN5LXRydW5rCisyMDc0OSBhOGZhOWMwZjFlMGJiNWNjZDc4OTJiYTc3OTBkNjkwZTBkMTAzMWEyIGxlZ2FjeS10cnVuaworMjA3NTAgOGFlZTUzOTUwNTgzMDkyNTMzODRhY2ZjYjJhM2U1YzIwZTUxYmI3YyBsZWdhY3ktdHJ1bmsKKzIwNzUxIGEyYjY1NmE1MjI5NDNhMTkxOTNjMTJhNDkxZjdlZGQ0NGNiOWEwNGEgbGVnYWN5LXRydW5rCisyMDc1MiBjMTk5ODBjMDNlMmRlMTVmNDc4NzZiZTcwODJhNDA5NDdiNDg5N2U3IGxlZ2FjeS10cnVuaworMjA3NTMgNTU5N2Q0YmNkZTA3NTg1YjM5MzE1Nzg5ZWNlYTM2YjQ2MTk3M2Q3MiBsZWdhY3ktdHJ1bmsKKzIwNzU0IDdlYjMyODhjODFlMzU1YmNmN2U3OGVlMjM1MWM5OGE2MWRiODA2ODggbGVnYWN5LXRydW5rCisyMDc1NSA1M2ZjY2Y0ZDZhNDE0MTM1NzI3ZWUyNGQzZDBjYzQ3MjQ1YTRlMjE5IGxlZ2FjeS10cnVuaworMjA3NTYgNDllNzFhODNmNzkwZmEyMjRhMTdhNTU4OTdmZDM5YmY1MGY1ZDhhNyBsZWdhY3ktdHJ1bmsKKzIwNzU3IGJmNzBkMWY0ZjYxZjZjZDE1MTc0M2VlYmYzMzI3NTNlZTUwMjI1ZDggbGVnYWN5LXRydW5rCisyMDc1OCBjZThjMzU2NTQyYWI3Y2U2NmJjMmJkNDIxYTMxNDY2ZDA2NDk0YmVhIGRlc2NyLWJyYW5jaAorMjA3NTkgZGQ1ZmIzOWU2NWVmMzY1M2YyZGYwMDY3NTM1NmRmNTE2NjA4N2YzMCBkZXNjci1icmFuY2gKKzIwNzYwIDMzODAyNzk2MTJhMzNjOGJjN2IzOTNiODI0MDA0ZDBhMDI4ZWEyYzUgbGVnYWN5LXRydW5rCisyMDc2MSBmZjlhODMzOWFkMWI0YjI5NTliNmM2NTg3MjIxNGI0NDdkOTk1MWY3IGRlc2NyLWJyYW5jaAorMjA3NjIgOWY1NTk3ZWE5NmZjMTRlZDE3ZmUxZThmMDk5M2RkZDM3MzQ2NmRhNSBkZXNjci1icmFuY2gKKzIwNzYzIDdmMGY1ZWNlNDU2MjhiZTljNDIzZTI4NjMzMmExZTk5NDE4NzAwMTQgZGVzY3ItYnJhbmNoCisyMDc2NCAxNGZkNGJiNzc5OWFjMTVmNzg5ODM5M2I3N2NmNGU1YWM3ZDA5MGViIGRlc2NyLWJyYW5jaAorMjA3NjUgMTU3OWQzMDk2NzZlMzUwN2NhOTlhNjNkYzU4ODQ4ZjQ2NTllNThiMyBsZWdhY3ktdHJ1bmsKKzIwNzY2IDU0ZDM5NTQyNWU5MjkzNDY3ZDYxYmY3N2FhM2M4Y2I2YzcwOWYwMDYgbGVnYWN5LXRydW5rCisyMDc2NyBjMzRjYWI4N2Q3MjE5ZmJmODBmZmE4MWUzNjQ0ZDc1ZWUzMTZhY2Y0IGxlZ2FjeS10cnVuaworMjA3NjggYzgzNjIzMDNlYzNiMWUzMzIyM2IyZTY2ZjIzYjhmYzJkOTM1YzRkNSBsZWdhY3ktdHJ1bmsKKzIwNzY5IDIyMjc2N2ViMjhmNzVjZWUwYTFhOGM2Y2YzMWJhYzIzOTg3OTRjZTkgbGVnYWN5LXRydW5rCisyMDc3MCA0ZjIwNDk1YjhiZWRjNTk5ZWQ3NDFlN2UzNTMzNmY4YTcyYmI1ZWY4IGRlc2NyLWJyYW5jaAorMjA3NzEgNGFmODY1YjIyMWVkZjBjMjE5ODQ4MmFmNDE2OGEwMmNmMjkzM2I1NyBkZXNjci1icmFuY2gKKzIwNzcyIGI4ODFkYzNiY2ZiM2QzYjMyMjVkNWY5YTZjMzA2M2JhZDhmNmI0MDYgZGVzY3ItYnJhbmNoCisyMDc3MyA0YjA4ZmQwODdkMzY0M2U0OGJhNDc1NjZkM2RlNWQzMTg1ODNhMWM1IGxlZ2FjeS10cnVuaworMjA3NzQgOGNkODc0MWViZWMwZDQ0ODMxY2Q5YWViODE2MWU3ZGQzN2M4NjhiYSBsZWdhY3ktdHJ1bmsKKzIwNzc1IDIyMTFjODk5NWE1ZjhkODVhY2ZjZjhhYTE4OWUxOTgzMDljZjIxMDYgbGVnYWN5LXRydW5rCisyMDc3NiBkNmRmOGQzNzFiNjc0Njc4YWY5MGI1MzVjMzM0OTVlYTk0NzBlNTBhIGxlZ2FjeS10cnVuaworMjA3NzcgOGY1Y2U1ODExOWUwNTRhYjcyMzY1OGVmZGUyNWEyMTUzOGE4ZjI0NiBsZWdhY3ktdHJ1bmsKKzIwNzc4IGY3YzM4NTIyNmY2NWE4NTM1ZWQ1MjIyOWQzNDM2Mzg0NjliZTg0OWIgbGVnYWN5LXRydW5rCisyMDc3OSAyOWQ4NGY5MjBkNWI5NzMxYjA3NGNiZjU1YWMyYzcyZGY0YzM4MjgwIGxlZ2FjeS10cnVuaworMjA3ODAgMTlhNDQ4ZmRlZGY3MjRiNjE0YmNmODY4ODgxOWRkNjU5YzA2ZDVkMyBsZWdhY3ktdHJ1bmsKKzIwNzgxIDRiY2Y4OGU0YWJmZjIwOTljNDVhNjBjOWMxMjA1MmI5ZDdhZWJjMTUgbGVnYWN5LXRydW5rCisyMDc4MiA3ODAyNDhjZDFkOWFmYTViNzA2N2MwOWM1MTE5NzY3OTdiOThkZWUwIGxlZ2FjeS10cnVuaworMjA3ODMgNTAzNzZkNDcwNjQ4MjE3Nzg3ODFkZTVlYzIwNTI4YzE2NDFmNGNjNCBsZWdhY3ktdHJ1bmsKKzIwNzg0IGYxMjM5NmM1MWFlYWY0ZDQ5ZDJlNmNmYzE3Njg2OGU2YTQwMGEwMWEgbGVnYWN5LXRydW5rCisyMDc4NSAwYWRmYmUzMjg5ZDVhZTNjYjBlMzUyODIwYjhlODg4MmM3NTg3N2FiIGxlZ2FjeS10cnVuaworMjA3ODYgMGJlMTZkMGVjZjY0YTc5NzEyMzM4NzE5ZTE3ODI2NzZjYzMzYTJlMCBsZWdhY3ktdHJ1bmsKKzIwNzg3IDA3YTg3NTIwMDFiYWNiOWMxNWQxNDA4YWQ4ODZkMDg2NTE5NzU3ODIgcmVsZWFzZTIxLW1haW50CisyMDc4OCAwYjNkYTk5ODI0YzdkNWRmY2FhMzIyODliYjA2M2RhMDdkNGIxN2E0IGxlZ2FjeS10cnVuaworMjA3ODkgMjY3NDUwNTNmODQwNTk2YWMzNGQ5MTFkY2E2YzA1ZmM5NjgxMjc1MiBsZWdhY3ktdHJ1bmsKKzIwNzkwIGI1NGRiZWYxZjhkMzY1NjRmZmVjZjA4ZTBhYTY2ZWQ3YmYxMjU2YzkgbGVnYWN5LXRydW5rCisyMDc5MSBkODkwYTIxYmViZGEyYjhhMTRmMzE5MjQ2YTIzMGNmNmYxOWM4ZGU2IGxlZ2FjeS10cnVuaworMjA3OTIgY2VmNWI2MDBmYTE2Mjg0NmZhZWJkZmU4MWVjZjBiMTA1MTI4YzExMSBkZXNjci1icmFuY2gKKzIwNzkzIDc1MDllYTA3MmNjYjQyMmQxY2Y3M2E3N2NkMDE4NDc3MTQzZTExYzYgZGVzY3ItYnJhbmNoCisyMDc5NCA1YzA2YTk1OTZmYmZmZGQxMWQzYjViZDFkMjE1YjVkYWQ3ZTUwMTNjIGxlZ2FjeS10cnVuaworMjA3OTUgMWJlY2Y0NDJkNzM1NTliYzU2NmI4ZWQ1MGJhOWExZTMxMzcyYzlkZSBsZWdhY3ktdHJ1bmsKKzIwNzk2IGMzZmY1NzIyNjNkMzMyZjg1MTVhY2IwZTMxOGFhNTUwMTI5OGY4ZWEgbGVnYWN5LXRydW5rCisyMDc5NyBlZDFlOGI2ZTI2ZWNiMWM3M2ZmM2U3OGMwY2IzNjNlZTM5MDRkN2JlIGxlZ2FjeS10cnVuaworMjA3OTggOWVhODdjMGE3YzA0Mzc4MGQ1NjliNjNhNzFkMjI0NGQ4NjZmZDg4YyBsZWdhY3ktdHJ1bmsKKzIwNzk5IGFkNTAwYjUyNjczYzYzOTg2ZDY0YmQwNWU1ZTU2MDI4MjY3NTA4YjQgbGVnYWN5LXRydW5rCisyMDgwMCAyODkyYWEyNjA3ZDVmNWU3NDc4YWQ4M2M0MDc2ZjE2YzZlMmJkNWQyIGxlZ2FjeS10cnVuaworMjA4MDEgZGIwNzRhYmE5ZTM2NGNhNzYyNzVjYjE2MzkyOWYwNGFkOTEwNTllMSBsZWdhY3ktdHJ1bmsKKzIwODAyIDNkZDQ5NTQyYzRkMDFhMTYxYzllMjkzMDI4YWVjNDFmZmZlYjYzMGYgZGVzY3ItYnJhbmNoCisyMDgwMyBjODcyZmRmMTAxMzBmNDY5ZTkyZjhhMDg4MjFhM2FmODZhODYxMjBkIGxlZ2FjeS10cnVuaworMjA4MDQgZjE4ZTgwOGMwMjMwZDAzODdhZDZjMjJkZTM2ZTkyNDEwZWJmZGQwOCBsZWdhY3ktdHJ1bmsKKzIwODA1IDJiNWE5YmZmMWIxMWU5MzgyZDVhOWFmODJhYmQ1MmIwZTY2ZmMxMmMgbGVnYWN5LXRydW5rCisyMDgwNiA3ZWQwY2FlYmRkODYxY2UyZGFhMmYyNTQyMjU5MTJiMWQ2ZTczMmM4IGxlZ2FjeS10cnVuaworMjA4MDcgM2UyNTZmOWQ5OWFkZTBhOTE1Mjg5N2EzMDRkM2Q2ODk0OThhNDI0OSBsZWdhY3ktdHJ1bmsKKzIwODA4IGFkYTNiZDFiODcxMzQ3Y2NiMmEwZWZkOTlmYTUyMmYxOWE1NjhlZGMgbGVnYWN5LXRydW5rCisyMDgwOSBmYjMxYzMzNzYxYzk2NWYwYzA4YjFhMjg1NTllMTNlZGMxMWI2ZDVmIGxlZ2FjeS10cnVuaworMjA4MTAgOWZmMzVmNzY2MWJkNzNlZDYwMWI1NDI0MjYyNzAwM2U5Nzg4ZjM0MiBsZWdhY3ktdHJ1bmsKKzIwODExIDdmNDU1NGExY2FlMjI4ZjAyOTE5NzZjOWU5MzRmYTNiNzhlZjc4M2EgbGVnYWN5LXRydW5rCisyMDgxMiA2OTYwYjJiYmJmY2FhMjExYmJmMGIxMDg5ZDM3YjdiMzQ1YjE0YzU3IGxlZ2FjeS10cnVuaworMjA4MTMgMDE3YTY0YTRiZGM3YTk4YzYwMThjNGQ3NzRjODBkZGM1MmZiODQzNCBsZWdhY3ktdHJ1bmsKKzIwODE0IDI5NWEyZjQ5MjdhYjY5YTVjYWNhMGQzOTNlZjcyOWY5MTNmMzYzYzMgbGVnYWN5LXRydW5rCisyMDgxNSBhMGQwOGM0MmU3MTAyYmFlYWIzMzFhMTQ5MWZkOTY5ZjEwYWQwNzlhIGxlZ2FjeS10cnVuaworMjA4MTYgYmE5NzExMWE2YWQ5Zjk5N2YwMTA4ODY1ZTIzMzJjYzJmMzk2YTM5MSBsZWdhY3ktdHJ1bmsKKzIwODE3IDA1NWZjMDQ2ZTA4MGVjMGUyZGE0YTE4ZmQwZmFhMjAxMDY5MDMyZmUgbGVnYWN5LXRydW5rCisyMDgxOCAwMjhhMWQzOWVmYjY1YzRiMzhmYTg1NGNlYTQyNDljMTYzNzYwZTEyIGxlZ2FjeS10cnVuaworMjA4MTkgZDJkM2Y4ODY2MWEzZTk5NGFmNzE3ODI1NjBmZDJmYzYwNGRjYzM2ZCBsZWdhY3ktdHJ1bmsKKzIwODIwIDI4MDc5NDllMGJhNTkxZjE0ZmYxZDIzMDFkYTViMTk5ODgzMTkzNzEgbGVnYWN5LXRydW5rCisyMDgyMSA3OWFlZTQ5OGEyYmU1MWJmODg5YTE4NjY1YTdjMTgyYjU4MzU3ZGIyIGxlZ2FjeS10cnVuaworMjA4MjIgNzc2MzU0OWNjYTQ1NjRhNGU1MTMxZTVlNTZkYzRjNDI4NTJmMzdlYyBsZWdhY3ktdHJ1bmsKKzIwODIzIGI3N2M0ODg4ZDdjY2FkZDZmNzQ3NmJmY2YzMjU2ZjQzMGYzZjQzOTEgbGVnYWN5LXRydW5rCisyMDgyNCBiNTNiNjBmMWVkNDU5Njc4N2ZmMWE0YWMzNGMyM2Q5NDlmMzVhMzM3IGxlZ2FjeS10cnVuaworMjA4MjUgMzM1ZmJkZWU3Y2Y4M2MyN2JmYWNiYTMzNTI0MmY3NWJiNmJjNDEyOCBsZWdhY3ktdHJ1bmsKKzIwODI2IDk3ZWNlOTMyMWM1MzY0ZmU4NzllOGVjNjExNGJiODU5MzBiYTMzMzcgbGVnYWN5LXRydW5rCisyMDgyNyAwZTg2YmRlYjBiOTI2MTdlYjcwODJjZTk0ZGYwNDg3ZDc3ZTI1MjcyIGxlZ2FjeS10cnVuaworMjA4MjggYmU5NjllNzE3YjkxYjBhMjhiZjUyYzBjZGFlY2E5MTJiYWYyMDk5ZSBsZWdhY3ktdHJ1bmsKKzIwODI5IGZkZTU1MDhlODJkZTZjZDlkOGRkNzcwZGE2ODg5YjIzNzJjYzhmNWMgbGVnYWN5LXRydW5rCisyMDgzMCAwNDJkY2ExZDQ1MjZlMTU5MWNjZDk2NWUzZDVlN2RlY2Y5NzdmMmEyIGxlZ2FjeS10cnVuaworMjA4MzEgY2NiNmQ3NjYzM2JlNGQ5ZGEyN2VhOGU2YTQzYTQ0YmZmM2Q3NjFmYSBsZWdhY3ktdHJ1bmsKKzIwODMyIDY4YmYwN2U3YmNjYzk0ZGQ2ZTJkYWI4YTdkNTBjOWRkNzYzNGU3NDMgbGVnYWN5LXRydW5rCisyMDgzMyBiODIzYTMzMTgzZmM2NGJiZjk2Y2I3NjcxZTgwMDc0YjllMGY3MjU5IGxlZ2FjeS10cnVuaworMjA4MzQgMDk0Y2VlNjg5OGMxMDI2YzRhOTg2N2Y3OTVmNmVjY2Y2Mzk4Zjc2MCBsZWdhY3ktdHJ1bmsKKzIwODM1IDQzYjdlZTcxOGY1M2ZmYTkxYzNlNmE2NDJlZWYwNTYzMTZkOWYxYmEgbGVnYWN5LXRydW5rCisyMDgzNiAyMDBmM2E1ZGUxYzlhZGIyZWU4Y2FkNzJjM2ZhMWZkZjNjMzM4NzYyIHJlbGVhc2UyMS1tYWludAorMjA4MzcgMWViMTIyNTlmZWVhNjQ3OTg0ODI2Nzg2NzVlZWIzOTJkYTFhODJmOSBsZWdhY3ktdHJ1bmsKKzIwODM4IGViMDNjNmZjMzFlNWJkOWZiNTMxMGUwODE1OTUwNzJkN2Y2ZGZkZTUgbGVnYWN5LXRydW5rCisyMDgzOSAxNTFhMmZhMjk2ZmU0MmFmYTQxZmRjZTVlN2NlODU4NWEyYjExN2FhIGxlZ2FjeS10cnVuaworMjA4NDAgY2IxMWM1OWMxOGRkM2JmZmFjZmUxYmU2Mjk1NTI5NDM5ODM4N2UxOCByZWxlYXNlMjEtbWFpbnQKKzIwODQxIDEzYmRiNWIyMDdkMjZkOTM2OTY1OTQ2ZmZkMDkzZmUwYjRlNWZmNDIgbGVnYWN5LXRydW5rCisyMDg0MiA1MjRlMGYzYzE2OWIyNzA3YmFhNWU5NTEyOTc2NjM3MWRmMjBjMTNhIHJlbGVhc2UyMS1tYWludAorMjA4NDMgMTdjMjAwYTdkYjg1YWQ2ZDQ4ZTVhZDhlYTY1ZDc0YzRjNWZlZTk4MSBsZWdhY3ktdHJ1bmsKKzIwODQ0IDQzYWI5ZjgyNGQ4OTBkNTVjYjNhODRhYzljMzIyNDJlMTVhNTdkOGYgcmVsZWFzZTIxLW1haW50CisyMDg0NSBkNTY2NjZkZWI5NTM4ZmYzYWUwMzk1OTA0NjdkZmM4YWQxNmMwN2ZjIGxlZ2FjeS10cnVuaworMjA4NDYgNjAyN2QzY2Y4MDVjZjcwN2EzYjU5OGFkODk5M2Y3MDlhZTdhOTE2ZiBsZWdhY3ktdHJ1bmsKKzIwODQ3IDIwNjBlZTBhN2Q5MmM0MWYzZDJiMDlkOTU5MGIwMWY0ZThhMDg5MzMgbGVnYWN5LXRydW5rCisyMDg0OCAyMTM1ZDdkZTg2YWRiMmFhNWQ4NzExYTFjM2EzZjY1ZjFjMmI3OWRkIGxlZ2FjeS10cnVuaworMjA4NDkgYTkzZGFhZmJkMTNkNzQ4Y2U5NWQxNmFjOWVkY2FiY2RhNWJkYzEyNyBsZWdhY3ktdHJ1bmsKKzIwODUwIDBhZjgyNGM4ODIwMzA2MWU0MDRlYWQwNWJjM2YxZjljYTdiYjhlM2IgbGVnYWN5LXRydW5rCisyMDg1MSBmZDVmODMxODg3Nzg2ZDMxMmMzOGIzNmY3YWJkYmFmMWE5NmMzOThkIGxlZ2FjeS10cnVuaworMjA4NTIgOTNiNTkwNzI5YmRjODk5MGVlZjcxY2E1NDUxZWJiMWMzYWFkNjZiNiBsZWdhY3ktdHJ1bmsKKzIwODUzIGZkMTJlODJiNzcyN2ZiMjgyZjVlZDdkZDQxMDdiZjA5NjIyZDlkMjYgbGVnYWN5LXRydW5rCisyMDg1NCBhMWRkYzQwODBjYzU3MjE5N2VjZTg2Nzk4Zjg5OWEzNmY5NzcwZDQ3IGxlZ2FjeS10cnVuaworMjA4NTUgZjk1YmFkYTUyNzNlMjg5OTBjY2NjMzZmMzZiMzRlZjA2NDI3MzVmZCBsZWdhY3ktdHJ1bmsKKzIwODU2IDkzOWUzZGE1OWM2MTIyMTI2MzBhMTRmYzk1NzEwMGE2YjdhNWU3OWMgbGVnYWN5LXRydW5rCisyMDg1NyA1YjA5N2Y2MTcxNzM1Mzg5MmQwOGY0N2JmYTJhNTRlZDY1NTBlMjA3IGxlZ2FjeS10cnVuaworMjA4NTggOGRhOTQ3M2YwNzM2YjA0OGJhNGNhZTE0Zjg1MzRiMzJlZGM0NTdjMyBkZXNjci1icmFuY2gKKzIwODU5IDE0ZGE1MzE0NjY0ZDk0ODJjZGEyMTA2ZTA0OTUxODRkZjhlYWVlMjEgbGVnYWN5LXRydW5rCisyMDg2MCBjNGY1NTQwMWU4YWVkNTcwMWUxNDEyMzJhZDU3NWNjN2NmM2ZlNDIxIGRlc2NyLWJyYW5jaAorMjA4NjEgZTIwODBkYjcxYjFiMGNiYWFiNjZmZWM5Nzc2YzQ4Y2E2ODgyNGViYiBkZXNjci1icmFuY2gKKzIwODYyIGMxMGI0MTg1NTIwMjhhZDdiZmMxMWJlZDUzNGM2ZGI2MjBkZTAwZmMgbGVnYWN5LXRydW5rCisyMDg2MyBmMGMzZGUyMmNhZWRkZWEyMjRiNzgxMzQ1NGYyYmE3NGIzMGJmZGRkIGxlZ2FjeS10cnVuaworMjA4NjQgY2M5ODRlZDI2NTg2YWMwNmM2ZWM4OWQ2ZjQ3NzBkZWQ3YjNkNTNkNyBsZWdhY3ktdHJ1bmsKKzIwODY1IDVkNTBkMWZhZTA3ODdmNTkyZDU3ZGRiMTczZDBkZGYwNzJiOGI4YmIgbGVnYWN5LXRydW5rCisyMDg2NiAzOGZkZjk4ZGE5OWZkZDE2MmUyZGJmM2FmZjRjN2Q2YTljNWY2M2JmIGxlZ2FjeS10cnVuaworMjA4NjcgMzRiMTUwNGU2NjQ0YzdlOGRhMTBkYTIzNGIwYjFkNGY3YjQ0NDE1MiByZWxlYXNlMjEtbWFpbnQKKzIwODY4IGFlOGM0ZjQ3MGEwZTQ0NzI3YzczOTI0MDM1ZmExMDA4MDllMDQ2OWQgbGVnYWN5LXRydW5rCisyMDg2OSA1M2RlMGVlYTRkMjVjODZlOTk4ZWVjNTdhMzcyM2I4ZDU1NGFkNDkyIGxlZ2FjeS10cnVuaworMjA4NzAgNjk3MzdkN2Y0Nzc2ZmQ2YzMyOTQzZDUwYmQ2MjFjYTIxMzhkNmQyNSBsZWdhY3ktdHJ1bmsKKzIwODcxIGE0NmYxZjdhOWM4NjlhMmM3NTQ5ZTFiNTc2MWI1M2Q1ZTUzYTk0NTEgcmVsZWFzZTIxLW1haW50CisyMDg3MiAwYTdhZjBlNTM4ZDRhYmRjYzBiNTdmYTMzNmQ2Nzc1YWVjMTQxMWE3IGxlZ2FjeS10cnVuaworMjA4NzMgOWFmODA2YjI4NmM2MTY1NDc2NmQzZTMwYzE0OGMxNTA0OWMwYjExNyBsZWdhY3ktdHJ1bmsKKzIwODc0IDdiOTc3MWY2ODU2YjMwOWRkMzMyY2E5YTZkMmViYzY0MjRlMTE3OGIgbGVnYWN5LXRydW5rCisyMDg3NSBkODg0MjM1ZmU3NWMzZjRmNjUxMzEzNDAzZDE5MjA3MGVjZTZlMWU2IGxlZ2FjeS10cnVuaworMjA4NzYgNzc4NzFjNDk5MjE1ZmIxOWM3NDY3NGZjZTMyNmI3YzMyMTM4NjFlNCBsZWdhY3ktdHJ1bmsKKzIwODc3IDYxOWZkOGUwNjdkYWVjZjA3NzA4M2Q5NzY1ZmE0NDVmMTk3NDgwNjIgbGVnYWN5LXRydW5rCisyMDg3OCBmYmZmYjZkZTI1ZGRjYjNiODNlZGMyZjhlZDE3ZGFmNzllZjcxMGMxIGxlZ2FjeS10cnVuaworMjA4NzkgNDIxYjFkNjYwNDk1MDg4NjlmMWM3ZTcyOGUyOTY0ZGUyYzVlMDNiZCBsZWdhY3ktdHJ1bmsKKzIwODgwIDg0ZmYxOTc3ZDc3MjVmYjUyNDA1N2VkNzNlYmY5YWM3NGM1YWVhODMgZGVzY3ItYnJhbmNoCisyMDg4MSA0NjkwOWYyMjE3MGMzZTg2ODI2MDJkNjY3ZDBlYTVmYmExMjYwZGMxIGxlZ2FjeS10cnVuaworMjA4ODIgZmY2YTZkMzQ3MTk1YWQ0ZDI0MjNkODdjNmJjYzZkNWNjY2QwMGVjYyBsZWdhY3ktdHJ1bmsKKzIwODgzIDFiZTZkNjhhZTEyY2U3YjFhNGZjMzRhYjM2NjkxNmI4Y2NiYmZhODggbGVnYWN5LXRydW5rCisyMDg4NCA2YzVhODAwZGE3OTFmNDI1OWNkMWUxZDNmODY2ZGUwMjE3ZmY1OGE0IGRlc2NyLWJyYW5jaAorMjA4ODUgYTY0M2E4N2E0YjJjYWE0NjMxYzgzMjI0ZTczNWU5YTllYzA3ZjFkMyBkZXNjci1icmFuY2gKKzIwODg2IDcwY2Q5YTQxOTA3Njk0Mjc0MDQyN2ZkODgzNDI1YTMwYmU0ZTVhY2QgbGVnYWN5LXRydW5rCisyMDg4NyBiZDUzNDliNDExZjYxYTY5ZjFhZjUwMWZkNmVmMzU0NTljMjBkZWU5IGxlZ2FjeS10cnVuaworMjA4ODggZDQyNjk0MzdlOGIzZGMxZmM1ZjE3ZDU3NzQ5MWExZThjOTlkNDc2OCBsZWdhY3ktdHJ1bmsKKzIwODg5IGNlNjlmYjljOGQ1NjE3MDhiODkyOWUzYTkyN2VmMmNiNDUxNjY2YzkgbGVnYWN5LXRydW5rCisyMDg5MCAxNjAwNWIyODU1NzYyZGYxZGEwMGIxM2RlNzRjZTA4OGZkYTczODQzIGxlZ2FjeS10cnVuaworMjA4OTEgYTFmY2ZkY2IzNDc5NjY4MTUzMmRmZGIyYmUzN2U0YmFmYjc3MDA2YiBsZWdhY3ktdHJ1bmsKKzIwODkyIDVhYmMyMzI5OTIyZmVkNmEzMjYwZGU4MTZlZjAzYzFiN2IzMTA1NDEgbGVnYWN5LXRydW5rCisyMDg5MyBhODk1ZDdkNzM5YWQ0MTZiNzRlMmY4ZDU2ZGVhNTM2NWQ2NDhkMWVhIGxlZ2FjeS10cnVuaworMjA4OTQgNDc0ZTNkZTAwYjA1MGVjYmJiMDUxMmUzNGQ3ODBiODg5Nzk1OThlMyBsZWdhY3ktdHJ1bmsKKzIwODk1IDI5N2EyNjZhYzRlZTE3MmJkZDVmZjJlYWVmZjA0OTNkOTgwNjk3NWEgbGVnYWN5LXRydW5rCisyMDg5NiBkZWEwYmFkZTY1NmQ0OTE1MTBmMDhhYmViNGZlZmE2YWJiOWZmMmE1IGxlZ2FjeS10cnVuaworMjA4OTcgNjk0YzlmMGNkODE0Mjk3OTM0OGQ2YjM0MTJjZWU1MzkwYjJhYmJhMSBsZWdhY3ktdHJ1bmsKKzIwODk4IDgzMWMyN2Y4NzZhYzlkYmNkOWI3N2FiNzY2MzAwYWZiNjRhMGJlMzUgbGVnYWN5LXRydW5rCisyMDg5OSBiYmY3MDIwNDllYzZiMWJmMWY5YjM2MGQwMmY5NjE5MzdkYmZiODY3IGxlZ2FjeS10cnVuaworMjA5MDAgZTRlODUzZDU1Njc1YTI5NmJlM2U2YjdiZWVkZGFjZGEwMjJiOTNmMyBsZWdhY3ktdHJ1bmsKKzIwOTAxIGVhMGNhZDkyY2ZkMjdiN2Y2ZGNjYTczZTAyZWQ0NDUzNjE3NTY3YTggbGVnYWN5LXRydW5rCisyMDkwMiBjZTdmMGUzODA4MzA0ODdiZDkzZDhlMGYxZDY3ZjgwZDRhNDUyNGJkIGxlZ2FjeS10cnVuaworMjA5MDMgNTYyMTc2MTkxZTYwNDk4NzU5ZGI2YTAwYjJiYzc4ZjI1MmQwZjU3YSBsZWdhY3ktdHJ1bmsKKzIwOTA0IGUxNGI0MWZkMmFiMjUxNTIxODg2NzIzNGYyNzE4MTc0NTRiMGE0NzUgbGVnYWN5LXRydW5rCisyMDkwNSBjZmUwODFjOTU1M2VjNzg0NzZmZDc1NGFjODkzYmMxNzFiMzY3N2MwIGxlZ2FjeS10cnVuaworMjA5MDYgM2U2OWQ3ZGI1ZjhkNTBmYjU1MzllNDdmODk3YTg0ZTM1MjQyMTVhNiBsZWdhY3ktdHJ1bmsKKzIwOTA3IGE0MjkxMGI1NDQyYThmZDc3NGFmNmU0M2RjNzU3MmQzMGUzYmU3MWUgbGVnYWN5LXRydW5rCisyMDkwOCAyMmI1MTUyZDIzZmMyYmVlMDgwZmYyNjkxMzZhZDIzODBiMzczNDI4IHJlbGVhc2UyMS1tYWludAorMjA5MDkgMjIzNDQxNTQwNDQzMTY2NzhiNzc3YTFjOGI2ODNjNWQ5YjliMTQ3YiByZWxlYXNlMjEtbWFpbnQKKzIwOTEwIGI4NmVlZWRkYWUyMTM0NmU0YmNmZDJmNmUwNmQ0NGUyNzNhZjI0MzcgcmVsZWFzZTIxLW1haW50CisyMDkxMSBkYjQzYmUxOWQzZTMzYjAwMDE1OTE3MTQzNTg4YjEzYmQ2OTZkZWJkIHJlbGVhc2UyMS1tYWludAorMjA5MTIgMDk2MDcyZDg4Nzk4NjhhY2IwZGMyYmQ4ZmJhMjRkZjVjZjk5MjQwOSByZWxlYXNlMjEtbWFpbnQKKzIwOTEzIGQwNzk4YjNhMzhjMTU2ZWYxN2IyODg0ZTM3OGI0NTVmYjk3YjNmNjUgcmVsZWFzZTIxLW1haW50CisyMDkxNCAyZWRhYThlOWYzODE1MTVjYjBhNzg3ZTczZDllZmRjODJiOGIxOWQ4IHJlbGVhc2UyMS1tYWludAorMjA5MTUgMDcxMWYzY2Q0NGQwNzcwNzAzOTQzZjY2ZmQ1ZDQ4OWUyZjQ4OGUzZCByZWxlYXNlMjEtbWFpbnQKKzIwOTE2IGUxODE2ZjY0OWZmOGUxMjM2NDk4MTE3MjdmZDZiZmE5M2VjMTE0NjUgcmVsZWFzZTIxLW1haW50CisyMDkxNyA1ZDg5NGE1ZmNlMzhjMmM5NWRlMDA2NzY3NjVjMzhhMjY2ZTVkMDY1IHJlbGVhc2UyMS1tYWludAorMjA5MTggYjM4ZmQyYmQ2OGMwYTE5ZTQ1MjQwN2Y0ZTJmYjU2N2IwZWVhZDU2MSByZWxlYXNlMjEtbWFpbnQKKzIwOTE5IDE0NThiNTk2YTQzNGFjOGMzY2QwNDc5MDc2YTc0ZmQ3OWY1NDJhOTYgcmVsZWFzZTIxLW1haW50CisyMDkyMCA3OTNiNzU1NDNmMTNmNWI1YjNiODJmM2E1YjU1MTA4ZjJmOGE0ZWI1IGxlZ2FjeS10cnVuaworMjA5MjEgOGM0N2Q5ZGEzMGRlMjZkYzg4ODliYzliZDIyNTVjODM5MWExMTA4YSByZWxlYXNlMjEtbWFpbnQKKzIwOTIyIDlkZmQyMmU4ZTliNzZkZDE5NzEwMjg2NjgwNWQ4NmM5YjIyMzE1NzUgcmVsZWFzZTIxLW1haW50CisyMDkyMyBhNDI5ZGE3ZGI3MDY5NTQ2N2NkNjJjZTVmODZkYjdkZDFmOTIwYzFmIHJlbGVhc2UyMS1tYWludAorMjA5MjQgMjQ4NDE4Y2JkMDA1MjdkNDdlNTVmNTg3NmZiNDVkODMyNjBhOGYzNyByZWxlYXNlMjEtbWFpbnQKKzIwOTI1IDRlZDY1N2QzN2NlYTdiZDhjM2RhODBlNGRhMTJiNjdkYjVjYzg2ZGYgcmVsZWFzZTIxLW1haW50CisyMDkyNiA1Njk2ZGRkYTNlNDBmOTcxZmJhMTczZGEyNGY5NDQxMjljMmVkNTU4IHJlbGVhc2UyMS1tYWludAorMjA5MjcgZmM2OGY2ZWQ3MDE0MjA0NTVmNjdkMDhiNDg4ZWQ4OWI0ZjQ3MGIwOSByZWxlYXNlMjEtbWFpbnQKKzIwOTI4IDRhZDdhMmFiNDJiNDJlOGM1MGM5OGU5ZGE3MTUzNDA5MzQxNGIyYmUgcmVsZWFzZTIxLW1haW50CisyMDkyOSBlNWJhMGQyYjQ3ZTI5NDI1MmUxZWFiNGVmMzUxZWM1MmEzZTJlMjg4IHJlbGVhc2UyMS1tYWludAorMjA5MzAgMTAzMTExYWQ5OWYxZjBlMmViYTUwNDMxNjM2OWRkZWNkYmUwMjE1NyBsZWdhY3ktdHJ1bmsKKzIwOTMxIGFmNDg5NTg3NTA5ZGNkZGU2M2MwOTJlODAzZGNjYWRlYzlhMWY4YzkgbGVnYWN5LXRydW5rCisyMDkzMiBkODZiMjQ1ZTA4NTgwMWMyNGM3MjQxNDM4ZDI4ZGU1Yjk1ZDNjNjhhIGxlZ2FjeS10cnVuaworMjA5MzMgOTViYWEzMzNlZTQzY2I4MDE3ODc1YWRhZjI4ODdjOGZkZDU5N2YyMiBsZWdhY3ktdHJ1bmsKKzIwOTM0IDVlMTE0MTE1N2Q1M2ZkOTVlNzY4Y2EwY2VjMDY3NGYyNmViOWI3MGMgbGVnYWN5LXRydW5rCisyMDkzNSA3OGY2NzA3MWM5NDllYjJjOTJjM2ZlZTlkZDJhMzc3MGNkOWY0YmM4IGxlZ2FjeS10cnVuaworMjA5MzYgMTc4YmVkZjk1MzZkOGNlMWMwZmM2NjY2ZWUzMTA4NTVjNzA3MWUyYSBsZWdhY3ktdHJ1bmsKKzIwOTM3IDA1YWIwYTcxNGU0Y2FlYTk3NDBjZTI1ODljZDQ3NTkxMmVjM2EwMGEgbGVnYWN5LXRydW5rCisyMDkzOCBiMjAxOGU1ZDIxNDJiOTQxZDIxNzEyMDhkYjY4N2NhN2MxYjVmNGQyIHJlbGVhc2UyMS1tYWludAorMjA5MzkgZWQ4Yjc5YzZjYjRiMmNkYWFjNDNmNzZhYjk4ZDFhYThiOTJlNjVjZCBsZWdhY3ktdHJ1bmsKKzIwOTQwIGY5YTM0YWMxNGM4YmU5OTYyMjIyYjI0MWI3Njg3NDhlZDJjM2U2MTMgbGVnYWN5LXRydW5rCisyMDk0MSA3M2ZjYzRmNGExODIyOTBlZDE1MzA0YjlkODA4NTNhZmE5NjZhYjM2IGxlZ2FjeS10cnVuaworMjA5NDIgNDAxY2NmY2YyOGMzODg0MGVhN2U3NzJkZTIxMDBkYzg3MzM1MWI2OCBsZWdhY3ktdHJ1bmsKKzIwOTQzIDJmMmVlNWRhYTYwZGI2NTc5NzBjZjU2ZTc1ODE5ZGZlN2ZlMjk4ZjUgbGVnYWN5LXRydW5rCisyMDk0NCBiMGI0NmQ3NzM0ZTBlZDNlNDhjNGJmNTJhNGM0MjhjZWJkM2ViMjcxIHJlbGVhc2UyMS1tYWludAorMjA5NDUgNTI3ZDBmZmRmMDk5MDE2MTFiZjYzNjFjMzM4YmJmMmMzMzU2YjYyYyBsZWdhY3ktdHJ1bmsKKzIwOTQ2IGQ1NzlhNWQ4YjNmZWE4MWMxMTVjZmZjNjc0YTAwZTM4MDg0MDJjZjUgbGVnYWN5LXRydW5rCisyMDk0NyAyYTk0YmYyMzVkYWFjZmFlZjRlNzkzNzdlMDkxYjc4ZWYwZTdkNTM2IGxlZ2FjeS10cnVuaworMjA5NDggNWU4N2EwOGFiYjA1N2ExNWNhOTJjZDJhYzliYjBhYTA1ZTMzMDU5MyBsZWdhY3ktdHJ1bmsKKzIwOTQ5IDE5MmQzNjg2OTQ0NTU4YTNmMzU5N2RjZjRkYjljNmIxM2MwZmE5MGIgbGVnYWN5LXRydW5rCisyMDk1MCBkYjEzZmI1Yzg1OGE1MTkzMTExNmIyNDRmZTY3YjNlOWY2MDAwNjRhIHJlbGVhc2UyMS1tYWludAorMjA5NTEgYTJiOTk2YzcxNmExYzUwNDQ1OTkxYmY1NGQxMGJhYWZiNDc3YTA0OCBsZWdhY3ktdHJ1bmsKKzIwOTUyIDYyZWVjMjkzNmNkM2Y5ZTFiNjAwNTg1ZmE5MWEzNWZjNmIwZjI5NzUgbGVnYWN5LXRydW5rCisyMDk1MyA5NTI2ZjBlZDA2NmEwNDdlNGM0ZThmZDA1NGRlZDVlOTc3MjI0ODkzIGxlZ2FjeS10cnVuaworMjA5NTQgNDdjN2MxZWI5NTc0ZDE5OWNlNTRlNWUzMjJiNDNiNDY5ODc5NjkyOSBsZWdhY3ktdHJ1bmsKKzIwOTU1IDcwNmJiNmM5NDVkZmY1ODMzN2E3ZjkzNGY0NjY1MDM2YjI0MGJhNDIgcmVsZWFzZTIxLW1haW50CisyMDk1NiA4NTg1MDQxYmE1N2IxYmVjZTFkZjdkMzk0NGQ2MDdlYmJmNDBlYjM3IGxlZ2FjeS10cnVuaworMjA5NTcgYWUwOGEwMWYyZjJkZDJmNTg3ZmE2OTdkY2M1YzMwMDcyY2MyM2QwNSByZWxlYXNlMjEtbWFpbnQKKzIwOTU4IGU4MTljYzBhOWVmNmRjMGJlZGYxOWY1M2JlNDUzOTVlM2YzMzk5ZjQgbGVnYWN5LXRydW5rCisyMDk1OSA4MzYxNGQwZTAwZjE1ZTc0NWYwZTI0Yzk5OGFlMmE5MjQ2NzM3NDE1IHJlbGVhc2UyMS1tYWludAorMjA5NjAgY2RmODhiYTJkOTY4YjkzYjBiYWM1ZTQzODA5Y2Y4NGIxOTU0MWI3NyBsZWdhY3ktdHJ1bmsKKzIwOTYxIDA3NjllMTFkOWQ1ZjQ4ZjNlMzYxYTU0YTk1NjNlMTBlYjcwNDM3MzYgbGVnYWN5LXRydW5rCisyMDk2MiA5ZWUyMTgyNDgxYWY5YTE0NzNhNmFiNzBiODJkOWJlNTQxOTc2Y2VmIGxlZ2FjeS10cnVuaworMjA5NjMgNDQ3ZWE2NTE4MWMyODVjMDY3NDc5ODJiYTQ3ZDdlZDE3YzEwZThhZSBsZWdhY3ktdHJ1bmsKKzIwOTY0IDI5OGZiMjlkYWE4MWMyNzM0MzYyYzY3YWZlMDhlZjViZTc1NGE2YTAgbGVnYWN5LXRydW5rCisyMDk2NSA4Mzc4MjVhNzc5YzE2ZWEzMjFjNTMyNjYxODRiMjA0M2ZmMDZjOTYxIGxlZ2FjeS10cnVuaworMjA5NjYgNWE5ZGViYjE0NDQwZTI1MmUzMzU1ZjMzYmE0OTViYzE0Yjk2YjliNCBsZWdhY3ktdHJ1bmsKKzIwOTY3IDI3ZjI0MjJlYTMzNTc4MGE3NzBmZTE0NzI4NmY2YmMyNjk0YWM4YWUgbGVnYWN5LXRydW5rCisyMDk2OCBjOGNiNzk3NzIzNjRlNDg2MGFiMWNhZjQwYzMyYjg4YmIzZDE4NjRmIGxlZ2FjeS10cnVuaworMjA5NjkgZmY2NDRlNjA4NTI4Y2Y2YzQ3NWNhMDNjOTVhZTcyMThjNDM3YjFjNSByZWxlYXNlMjEtbWFpbnQKKzIwOTcwIGVjOTM0M2FkMWU2MDlhN2M1YmE1ZGU4NGMyZjQzYWQzMzI0ZDY2MTUgbGVnYWN5LXRydW5rCisyMDk3MSA5NzgwNmE1OTljN2ViNWE2OTc2N2NjM2IzODkxNTBiMTMwZDA3ZGViIHJlbGVhc2UyMS1tYWludAorMjA5NzIgNDViYWRmYmZiMDBlZjYxMzZmMDU3M2YxZTYxMTZhZmFjYjA3ZDI1OSBsZWdhY3ktdHJ1bmsKKzIwOTczIDI3ZWRlOGIwOTVkNmRmMWQxNGUxOWRhMmFkYTU1Y2Q0NzNlOWU5ZDkgbGVnYWN5LXRydW5rCisyMDk3NCA2NGUxZWEzNGI1NTMwMGQzZjJlNTU5NGY3NGUwY2IzZWUxOWQ4NWYzIGxlZ2FjeS10cnVuaworMjA5NzUgYmFmMjEzN2U5Njc2Y2I0NDZjOWY3ZDRiZDFhOTMyZTI0YWEwZTZlMSBsZWdhY3ktdHJ1bmsKKzIwOTc2IGU2MGZjMDE3NjJhMGY5MDE3NzQ2NjQ0ODc0M2NhZmVhNzg2ZmYyNjYgbGVnYWN5LXRydW5rCisyMDk3NyA2YTJlMjU0OGU2Y2YzOWExZDlmMWQzNTc0YjFlYWJlMmNjMDliOTRkIGxlZ2FjeS10cnVuaworMjA5NzggYTQzMDE0MzFiMmFjOGU3NWVmYzM4YzkyNjlkNzRjZjU2OTgxYzk2YSByZWxlYXNlMjEtbWFpbnQKKzIwOTc5IDUwZTMzODBiMDg2YTFkNDc2MjFlM2Y5ODg1ZjFlYzY2MWFjZWZhNmQgbGVnYWN5LXRydW5rCisyMDk4MCA1M2IwZjY1YTBhMDVkNzVkZjEzYWRlNDVmMzI2MmVlN2FiM2NhZmUzIHJlbGVhc2UyMS1tYWludAorMjA5ODEgMTgwNzEwOTExZjE1ZDdkYzY3ZDRhNDA4Njc5NmRlNmRkNjg5NDMzZSByZWxlYXNlMjEtbWFpbnQKKzIwOTgyIDU4Mjg0NWUxNGU1Y2MxNWNjMDhjZDE4ODdmMmI3MDJkODJmNDY4NmQgbGVnYWN5LXRydW5rCisyMDk4MyA5OWFlYTZmNWNlYmQyOGVmNTE5YzgxMGFmMmRlNjQ2ZDIzZjJlMzUyIGxlZ2FjeS10cnVuaworMjA5ODQgOWY5NzE2N2YxNjQzMDE2NzNjZWVjYjk2YTdlZmE3NDQwMTEwNzNjZiBsZWdhY3ktdHJ1bmsKKzIwOTg1IDBjMWEwNGU5ODEzNDJmZDViOTRkMWNhM2FjOGU1ODY4NmY4NWY0N2UgbGVnYWN5LXRydW5rCisyMDk4NiAwZDZmNzYwYjZlZjFhNjQ0MzZiMThmYTcxMTc3ODkxNTBlODliYzJkIGxlZ2FjeS10cnVuaworMjA5ODcgZmFjZmY1ZjUwZmNjYWYyOGU5ZGQ5MDA2YTRhZjU2NGJlY2I1ZjdkNyBsZWdhY3ktdHJ1bmsKKzIwOTg4IDAzOGUyZjc0ODAwZDk3ODMwMWVlNDBjZDgxZGI1MTJiZDM5NDJhZjMgbGVnYWN5LXRydW5rCisyMDk4OSBjYTdlMmUxYWU4ZGY5NmU1ODY2OTAyZDQyZjYzNzMyMjJlOGI3NGNjIGxlZ2FjeS10cnVuaworMjA5OTAgZTg2ZDMzMDgxYmJhOTRiZTlkNzg2ZTY2ODVmOTNmOWI1NWM3NGRkZiBsZWdhY3ktdHJ1bmsKKzIwOTkxIGM5ODdkY2Q4ODJiOWM3MzE4ZDg1MWY3NmRkZGEwMGMxYjgwYjc0NjMgcmVsZWFzZTIxLW1haW50CisyMDk5MiBiZDFjNGZlOTc3Y2JkYzc1NzMyZjVmMDFjYmQxYTJmY2FjYTFmNjg5IGxlZ2FjeS10cnVuaworMjA5OTMgOGQyYmJiYmYyY2I5ZmRjMmZhODdiYTNiODNiZGZkYmMzMzIwYzQ5NyBsZWdhY3ktdHJ1bmsKKzIwOTk0IDE5YjUwNGZiOWQxNTZlN2IxN2Y5ODkyMjFkMTVkNmNhODNlMGZiNDggbGVnYWN5LXRydW5rCisyMDk5NSA1MTE1ODdhYjJkZDJlNmYyODJkNmZhZGU4MDkyZTA4OGUzYjI1Y2Q5IGxlZ2FjeS10cnVuaworMjA5OTYgMDI0MjY3NDQxNzYxZTk0NGJmYWFmM2RjYWM4M2Q2MzE1NWRhNjI1MyBsZWdhY3ktdHJ1bmsKKzIwOTk3IDUzOTFiOWQwMjJhYzEyNzU3MTUxZjc4N2IzNDFmY2I0MGJiMGNhODYgbGVnYWN5LXRydW5rCisyMDk5OCBlZTVmMDE2NWU0ZTNlYjFkYjBkMDk0NGNjYmZmYjVhNmZkYTQ5ODFmIHJlbGVhc2UyMS1tYWludAorMjA5OTkgNGQ2MmEyZmVjOTMwYTJhODg0MDE3N2Q3Y2Q1ZDVmNzU0MTMyMzUwNSBsZWdhY3ktdHJ1bmsKKzIxMDAwIDZhZTYxMjI5MTJkMmVkYjlkNDI1MTBiOGY2OGZlZTMwZjhkYTNkZDkgcmVsZWFzZTIwLW1haW50CisyMTAwMSA5ZWJlODVlNzE1NTA0MTA0YzAwYmNkYjNkZjZlNjlhMWQ2ZmNjZDAxIHJlbGVhc2UyMC1tYWludAorMjEwMDIgYjk5OTc5ZDBmOWU3YzA4MDRkYjQ5Yjc1YzFhNjk2NDUyNTRmNjkxMiBsZWdhY3ktdHJ1bmsKKzIxMDAzIGJkOTdhNGZkYjZmM2M1ZjgyNmQ2NjZlZGNiZGI3NDM1NzM0OTQwNDMgbGVnYWN5LXRydW5rCisyMTAwNCBjMDAzNzMxNzdiYmI2ZDZhODY4YTQ2YWIzNzhjMDI3ZTJiOGM4Y2I5IGxlZ2FjeS10cnVuaworMjEwMDUgZmEyMjU1ZDMxNTAwZTkyZDQ0NzYyZDM2ODAxY2UyOWZjNDhlN2ZmMSByZWxlYXNlMjEtbWFpbnQKKzIxMDA2IGEwMjA4NTg3MWMzZmU0ZmM2NjVhM2QxMTY2NjFlZmE1Y2U0NjE4NmEgbGVnYWN5LXRydW5rCisyMTAwNyBkZjFjNTNhODE1MDI5MTI2NWQ2NzljZDQzZWM1NzNhMTUyNDk2NjBjIGxlZ2FjeS10cnVuaworMjEwMDggYTZmOGIyZmEyZTIwMTgzZTUxMTE5NDJmZWE3YzY3NmJiMjdhMjlmOCBsZWdhY3ktdHJ1bmsKKzIxMDA5IDkxNjE5ZDdkZjU4YjliMDdhZTk0ODFkYmNkZWViMTE1MTJjN2E1YzggbGVnYWN5LXRydW5rCisyMTAxMCA2ZmRjZTc2ZDQwNjY1ZTBkZDYyMzI1MmMwZDI3MDQzM2E3NTc2ZDI1IGRlc2NyLWJyYW5jaAorMjEwMTEgYmYxNmMzY2E1ODBlYzY0Nzc0YmU5ZmZhY2Y0OWYyYmU1OTA4ZWU3YyBkZXNjci1icmFuY2gKKzIxMDEyIDczYTFlOWY3YzgzZjIxNjYxOTYzZTQwM2JjNTRmYTE5ZDI5MTJhY2YgZGVzY3ItYnJhbmNoCisyMTAxMyA4YzQ1YTY0ZWU4MzFiNzg5MmJmYjdiOTA2OTM2MzZlMDAwZjFkMzM2IGRlc2NyLWJyYW5jaAorMjEwMTQgZTkxOTQ3MzE3NmM4MjM0ZGNiNTgxODUyMzUxM2UzNTIxMDY5MTdmMCBkZXNjci1icmFuY2gKKzIxMDE1IGVkNDI1MmJmMDgwYzk3ZTFkODY3OTBlNTAzYzY3MGQwMjcxYjUzZmEgZGVzY3ItYnJhbmNoCisyMTAxNiA0OWYwZmY2ZWI0ZWIxMzVkYzJhNWVjNTQyNmEyMzgyZWVjM2QyODU1IGRlc2NyLWJyYW5jaAorMjEwMTcgYzA3NDMwMjViMjNkYjM4ZjFmMzAzODJkOTkyODU0MTYwY2NlMjhkYSBkZXNjci1icmFuY2gKKzIxMDE4IDU0NjZjY2JiMmY5NzQ5OGViYmIwZjc1OGZhMmRiYzRjMDg1MDMyNmMgZGVzY3ItYnJhbmNoCisyMTAxOSA1YjUwNTZjZjE0ODhjNzVjYzRjM2EzZDhmMzYxOWIwMjQ0NDVmMjY1IGRlc2NyLWJyYW5jaAorMjEwMjAgZmI5M2RmYmQ4MDUyMzU3ZThkODU4NGVmZjg5N2JjZGZlZmYwOWYzZiBsZWdhY3ktdHJ1bmsKKzIxMDIxIGMyZDQ5YTczMjE2NmRiYjFkOTJlOTFkYWI4MmZiZGJlM2I1NTM3ODEgbGVnYWN5LXRydW5rCisyMTAyMiA5NTdmOTQyODY2MGYyMjk2NGQ1MmZhYzE2MGYwYzdhZDAzMjAyY2UxIGxlZ2FjeS10cnVuaworMjEwMjMgM2NiYjg1NzI2ZjZlZDIxNDI2M2Q5ZjNjOGUxMTE1ZDBjMWRiNjhjZSBkZXNjci1icmFuY2gKKzIxMDI0IGUwZjBmN2JjNWRhNzY5NGJhYzcwNWFiMmFlOWJhMGJmOWRlYTgyNDUgZGVzY3ItYnJhbmNoCisyMTAyNSAzYWI2YzQzNGE5Yzg3NTNjMjRhYmZlNTJmZDFlNzAwZjI5MTlkMjlhIGRlc2NyLWJyYW5jaAorMjEwMjYgNjUzMjIxMDM5NTVhMDRkMDkwZjA4N2U5MDE3ZDhlOGNmY2QwMjEwMyBkZXNjci1icmFuY2gKKzIxMDI3IDBkNDZiN2M3MTA1ZTJlM2VlMTE0YmZlMmU5ZjJlMWM2NTE0OGExMDggZGVzY3ItYnJhbmNoCisyMTAyOCBhNzgyNjg0MjQ4NjhhMTkxYWJiNGFiNGMzMGM1M2NkY2Y1NWRkMmFkIGRlc2NyLWJyYW5jaAorMjEwMjkgMGU1MThhNTNlYzViZWFkOWFkYmZjYjhkOTFiODY5NTJjNGZjNGZkOSBsZWdhY3ktdHJ1bmsKKzIxMDMwIGRjYjFjM2JkOGUwZTg5NzY2ZGZlY2U0NzMxOGVkODk5OGFmNjk3NmYgbGVnYWN5LXRydW5rCisyMTAzMSA5NmQxMTIxNTAxM2FiMjMzMGU5OWVkY2MwZmNlOWNmODIzZjNhMDA0IHJlbGVhc2UyMS1tYWludAorMjEwMzIgOTYzMzBjY2M4NzBhOTQ0NDEzMDE0NDI3M2QwZDJhYTczNDk5MmMxNSByZWxlYXNlMjEtbWFpbnQKKzIxMDMzIGVhODMwOGZkMDZmMjNkOWEzOTg4NTRjZTNjY2QwZGFiNDZlMzdiYTggZGVzY3ItYnJhbmNoCisyMTAzNCA4NTkzYjdlMGI2NDU0MTYzZmUzMDgyYzQzNmQ4Yzk4NDNkNTcyZTk0IGRlc2NyLWJyYW5jaAorMjEwMzUgNjU2OWM4NDk5YjE3MGZhN2I1MWQwYjY2NjVkZjE5YzcyYTBiYmJkMiBkZXNjci1icmFuY2gKKzIxMDM2IGU3OWJiNWI4YTVkMGU5YWE1MjRmZDExYTYyMWI3ZTc0ZjBjMjY2NDQgbGVnYWN5LXRydW5rCisyMTAzNyAxYjkyNzAxYTBlZDJkZDVmYjQ3MjNmYTljMjgzYzQxOTMyZWY3YThjIGRlc2NyLWJyYW5jaAorMjEwMzggYjczYzI4MTdjYzFhYzAyMWNjNzIwZjZmODQ5MmJhODJkYTMwZjQ5NyBkZXNjci1icmFuY2gKKzIxMDM5IDE0ZGM3NWE1NjAwYWM1YWJhMjhiZTY2MDFkMWQ4ZGJiM2E3YjNjNjAgbGVnYWN5LXRydW5rCisyMTA0MCA4MWE4ZDE4MzBiNjNhYmM5ODFkYmQyNjNjYzZjOTE5OTE0YzhkMzkxIGxlZ2FjeS10cnVuaworMjEwNDEgNjVhMmUzZThiZjU2ZDEwOTdmNDMwNWU2ODJjMGU4YmU1NzkyYjNhNyBsZWdhY3ktdHJ1bmsKKzIxMDQyIDU4NmZkNzllZjRkOTdjOGQ3NDkxN2QyY2I0ZjBkMTZjODZkZDhiMDIgZGVzY3ItYnJhbmNoCisyMTA0MyAxM2E4ZGNhNGIwNDBhZjg4MDlkYjA4ZjY1NDE2MmQ1OGExMGE3MTcxIGRlc2NyLWJyYW5jaAorMjEwNDQgYjBmYzgzNmYyY2VhZDBiMjBhODBkZDhkZDJmZTcyODAzZGZmMGVhYyBkZXNjci1icmFuY2gKKzIxMDQ1IGU4OTc1NTBiNDc0ODQwZjc2MTZiNTAzZTFhZmIxMWEyZjQzMTQxYzcgbGVnYWN5LXRydW5rCisyMTA0NiBmODQ3NWZhNmJhMzZkYTVjNWJhOGVlODE3MGIzN2RlNTVlY2E0N2EyIGRlc2NyLWJyYW5jaAorMjEwNDcgYzQwMTZhYmQ2YjdmM2VhMWRkNTA1ZDU2Zjg3MTljOTcxZjk2MjE0MSBsZWdhY3ktdHJ1bmsKKzIxMDQ4IGEzYzMyOWY2OWUzYTYwYmU0M2E2MmE4MzAwMTE2Y2FmOTg0ODRmNmUgZGVzY3ItYnJhbmNoCisyMTA0OSAyYjAxN2IyYzhmN2NiNTJmYTZhODU0NjhhNDBlZjg1MmI2NjYyOWI0IGxlZ2FjeS10cnVuaworMjEwNTAgZTY2Y2Y5ZDZhZDQzZWQwNTVmYzkzMTY3MDdkZjU1ZmJmYjI4NzZiNSBsZWdhY3ktdHJ1bmsKKzIxMDUxIDlhMjY4MzJkYTBmOWU2NTc3NTk4NzIzZmNjMmUyODRhNDE4ODhhOGUgZGVzY3ItYnJhbmNoCisyMTA1MiBhMWYzNTc2OTYyNjRiM2NiZWZhZjg1M2E0N2Q2NTM4NzFlYjA3Y2E0IGRlc2NyLWJyYW5jaAorMjEwNTMgOGNhZjIxOTcxZjM3ODc5ZWNlMjhmNTA4NzI2YWJiMDY3NDFkZGQ2NCBkZXNjci1icmFuY2gKKzIxMDU0IDdkZTdkMDY5NGJhODdhNGZmYjRjMzNlNGI1MmY0ZjYwZGI1NWUyNjggbGVnYWN5LXRydW5rCisyMTA1NSBhMjMyYTZjM2ZjOGM3ZGZhODNlMTJmNjczOTNhZDBiOGVhZjI3YmMzIGxlZ2FjeS10cnVuaworMjEwNTYgMTVmNDM4MWNmZjBmMGM2OGJmNGUzN2I0NDBhMGFjZTUwOWVjYmUwMCBsZWdhY3ktdHJ1bmsKKzIxMDU3IGQ5M2I0OTI5OGFmZDZmMTIxZjkyYTljN2U3ZGFjYmUyMjczMjFhZmMgbGVnYWN5LXRydW5rCisyMTA1OCAyZWMwOGQ2YzdkMTIwNDY5NTQ3YTEwODc3ODJiNTEwODYyZTIxOGRjIGxlZ2FjeS10cnVuaworMjEwNTkgOTk5YjEzZGUzOWE0MmRjNzdiNzg0OTUzYzY5NTE5ZDI2NDk0ZjA1ZCBsZWdhY3ktdHJ1bmsKKzIxMDYwIDFjMTgzYWU1YzkzNDkyYmM4ZjJhM2RlZWZmMWVmZTFjZDU2OWU3OTMgbGVnYWN5LXRydW5rCisyMTA2MSA1YTZiODNmNDE1MjdiNzgwYjA2ZjQyOGM3ZTY5MWFkMDk0OTliZjg2IGxlZ2FjeS10cnVuaworMjEwNjIgYmJhYzJhNmE1ZDE2ZmMyNzJiMWE3Y2E2MDdhZDA2NzM3ZjFhMWU5MyBsZWdhY3ktdHJ1bmsKKzIxMDYzIGFjNTQ4OWEyNTQ4ZGU0NjM1N2IwZmQ3NzUxZjA5YzExMmU3YTkxOGEgbGVnYWN5LXRydW5rCisyMTA2NCA4ODlkYjZkNTU1MDYwMWM1MzJiM2VhYjQwYzc0YTMyYTEyNjE4ZDAzIGxlZ2FjeS10cnVuaworMjEwNjUgYmRlMWNmNTc0MGVjNjlmOGI3NDY4Y2RlY2FmMGQyNTAwMTlkNWYxOCBsZWdhY3ktdHJ1bmsKKzIxMDY2IDEwOTkyMTk4YzlkNjdhYTVkZWQyNDY3OWUxMGUzMWY4ZTNkZDViMTQgbGVnYWN5LXRydW5rCisyMTA2NyA2MjQ3MjY1NjgwN2VhOThlNGU2YTBhODc1MzY2ODBjM2U4NWQ5NTg4IGxlZ2FjeS10cnVuaworMjEwNjggOGUxODc3NDBhYTk2YTY4MzEzY2U1YzVhM2MzMzA4OGRmOGQ2NWY3YyBsZWdhY3ktdHJ1bmsKKzIxMDY5IGY5MDFhN2RjNWZiNGNiOGYxNjdlMTc2YjBiMjExZjFhMTdkMDZmZjUgbGVnYWN5LXRydW5rCisyMTA3MCAxZjgzZTQxNTVmY2QxNzJiNDczOTc4MTk0NDQ5YWIyYTU1ODZiMGMxIGxlZ2FjeS10cnVuaworMjEwNzEgN2RlNWQzNzg1NzhjZGUxZDAwNzZiMGEwZWJjNzJiY2QyZTE5NGQzNCByZWxlYXNlMjEtbWFpbnQKKzIxMDcyIGU4NDk0ODg2NzRkYTI2NjE4ZDU0YTdhMmM0ODEyZmVlNzcwYTQyOGEgcmVsZWFzZTIxLW1haW50CisyMTA3MyA0MTBiYmY1ZDk4Zjk3YWEyMzU4MWY4MDI1M2UxM2I5YThmOGYwMWJkIGxlZ2FjeS10cnVuaworMjEwNzQgNzJiMTU3MzFhODc2OWEzZGU0NmU5ZGY3MDdlOWZlODU5MDkzYjM3NiByZWxlYXNlMjEtbWFpbnQKKzIxMDc1IDkwMTkzNzUwY2M4Mzc2YmYzYzgwMWQ1OTBhZmU1ZTkwZmZiMjA2NmUgbGVnYWN5LXRydW5rCisyMTA3NiBmM2JhYjkyOWQ3MGVlMDc3MGY1ZDY4ZmM0N2QzYTJiNmE0NjNkYWZiIGRlc2NyLWJyYW5jaAorMjEwNzcgNjIyODY3ZTRkODMyZmIwM2ExYTFkMjQwNDgxYzZmMmYyNGM1YmEzOSBsZWdhY3ktdHJ1bmsKKzIxMDc4IGFkZDA5NTYzOTg1MzBkZTQ5ZTM1NjU3Mzg5ODc2YzY1OWY5ZTEwMDAgbGVnYWN5LXRydW5rCisyMTA3OSBiYzA1YjBiNWUwNTc4MTMyZGFiNjUyNzRiOGJjOGFkOTE5OGU2YjU5IGxlZ2FjeS10cnVuaworMjEwODAgZmYyZDdjMTgzNzE1MmI2OWUxOTY4MmUwYmQzMzZlMWI1NWZjNTk0MyBsZWdhY3ktdHJ1bmsKKzIxMDgxIDRjY2JiOGU1ZmIyNGNiYzczOTVmZmUxODk0YWFkMjI3MmFjYTJlYjIgcmVsZWFzZTIxLW1haW50CisyMTA4MiBiOGZiZmE1NjljMzQ4MDNiNmM1MGUxMjU3NzYwNTE0MzQ3ZGE2MjdhIGRlc2NyLWJyYW5jaAorMjEwODMgNmI2ZTBiMGRiNGY3NTUxMWM3ZjZmMWVmZTBiNjIxYzY2MGY2ZTllZCBkZXNjci1icmFuY2gKKzIxMDg0IGM5MGJkZThiNjdiOGRjODc1N2JiOTY3ZjRmYmRmZGMwOWJjOGJmNTkgZGVzY3ItYnJhbmNoCisyMTA4NSBkYWJlNzEwMGIyMWYzMDdkOWMxNzBlNzQxZjQ4YTUxYmU0ZjQzM2NmIGRlc2NyLWJyYW5jaAorMjEwODYgNGNjMmFmOGEyZjRlNjYzMGQxZGFkNjVjMDkyZWFhMDk0NTBiNDY3MSBkZXNjci1icmFuY2gKKzIxMDg3IDZmZTU2YTliMzAyMThmOTIwNGQ5NDhjZWQyNTlkNTdjZjJkOTJkYmUgZGVzY3ItYnJhbmNoCisyMTA4OCBkZDA5ZjExZmE0MGRjOTVkZjg1ZjBiNjliMDE5N2ExYzdlMjVmZGQxIGxlZ2FjeS10cnVuaworMjEwODkgNWZjNmQwMjdlODYxMThlZWM3MTFkY2U5Y2FhMzc0NWY3Y2Q1ZjBlMCBsZWdhY3ktdHJ1bmsKKzIxMDkwIGJiY2RiZDhmNDQ2OTk1MWFjMDVlMDA5MmE5MzkyZjU4N2I2OWEwOGYgbGVnYWN5LXRydW5rCisyMTA5MSA3ZTQ1OWZiM2MzMzI5YmUyZWVlYjkzMTNjOTM3ZDQyNzdiYTllODYxIGxlZ2FjeS10cnVuaworMjEwOTIgNTkyMTA5ZjJhNmZkNjk2MDY5ZmVkNjNkMmNkMGM3ZjhjZTVkYmU1NyBsZWdhY3ktdHJ1bmsKKzIxMDkzIDYyNTQ3MzdjYjYyOTY4MDEzMzk5NjVkMzRiYTI4ODA3N2FkMjg5ZmYgbGVnYWN5LXRydW5rCisyMTA5NCA4NmNjZjkzY2M5NTIyODIyZDQ0MWU3ZDdmOTg0MjI2NmUxOTZkNmEzIGxlZ2FjeS10cnVuaworMjEwOTUgMThhMWUwOTM5N2RhYzk1YzZlZmU4YzczNTQ3ODUzMTU3ZWYyMjM4YiByZWxlYXNlMjEtbWFpbnQKKzIxMDk2IDQxMDE2Njc1MDAyZmU0ZDk5ZjI0MGQ5MzhhNjc5MjcxMWFiMjA0MzMgbGVnYWN5LXRydW5rCisyMTA5NyBhMDAxZmNiNzYxNzc5ZGU0NTljZGE4MjM2ZmQ1N2NmYzFmMWE5NzcxIGxlZ2FjeS10cnVuaworMjEwOTggYmQwMDU2ZWUxYTZlNDkwNWYzOTJkMzNjZmEwZWVmMmZiOTAyYWQ0NCBsZWdhY3ktdHJ1bmsKKzIxMDk5IDZlYTM2NmEyYjJhNjM0ZjRjMTUxNjk1NmUxYzJkYTRhYTIwNGQzMGQgbGVnYWN5LXRydW5rCisyMTEwMCAyMzY3YjdhMDAxYTdlN2U2OWE5ZjRhZjY4N2NkODQwOGVkMmQ3ZTM4IGxlZ2FjeS10cnVuaworMjExMDEgN2E5YTY5MjcyOWI0MDM5Y2Y3NDAzMWZlMTZiM2FkOWY2NjI5NGUxNSBsZWdhY3ktdHJ1bmsKKzIxMTAyIGMyZmNhNzdiYmYzYWI4ZDZmYzI3YjFkMmVkZTkzNTNiYjE0MzdmMjQgbGVnYWN5LXRydW5rCisyMTEwMyBkZTdmOWFhMGE2M2E1MjNiZjI3MTY0Yjg0M2E1NThlZmU1MTc2MGJmIHJlbGVhc2UyMC1tYWludAorMjExMDQgZjc0ZTkyYzhlYWMxYTY5ZTk4ZjE3MWU4MjhiNzJiNDMwNzY4ZDA5ZiByZWxlYXNlMjAtbWFpbnQKKzIxMTA1IDAzNzM4NmEyYjI0N2NiZTkzMjBmMDM4N2M2ZGQ4MmM2MjEyOTc5YjEgcmVsZWFzZTIwLW1haW50CisyMTEwNiAxNDIxMjllOWE5ODU2NDkwNjA3NmQ1MDgyYTQzMGNjMWNhYmNkZmIxIHJlbGVhc2UyMC1tYWludAorMjExMDcgOWRkYTBjMTFlMDA2OTlhOTQ0MDI4ZmMxYzAxN2Y2ZGNjMjZlYTViMyBsZWdhY3ktdHJ1bmsKKzIxMTA4IGEzYzliNDE0MGNjNWVjNWJmZjdhM2IzZTFkMTRhN2ZjZDA4MDkwNDYgcmVsZWFzZTIwLW1haW50CisyMTEwOSAwMjI0ODczYzBhYzc0YjAxYjAxMzdkY2QxNTU4MTY0Zjg0ZTk2MWQ5IGxlZ2FjeS10cnVuaworMjExMTAgNWQ2ZmMxOGM0MDA5ODVkYWQ3NDkxNmJhZDQ5ODA2ODQzMjQ4NWQ3NyByZWxlYXNlMjAtbWFpbnQKKzIxMTExIDE1YzA0ZmUyNGQ4NTg2NjJkZjUzMmZlMjBjNTcyMWIzYTNiZjMyNDEgcmVsZWFzZTIwLW1haW50CisyMTExMSA4MzQ1OWNjMTkxYzFjOWM4Y2M2YjA4YWRhOTljMDJmMGFmNmFkNTRmIHJlbGVhc2UyMC1tYWludAorMjExMTMgYzU3OGI3NWFkNjJmZGVkNzBiNjRhYjczNTFmZDRhMjg4Njk1OTdkYSBsZWdhY3ktdHJ1bmsKKzIxMTE0IDhjZjcyYjE4N2IzYWI5ODY2ZThkODQxZGY5MmYxODRhNzYwZTUyODIgbGVnYWN5LXRydW5rCisyMTExNSBiZTJkZGIyNWI2OThiMzlhODc5YzQ2NDUxNjE2YWVjYTliYjJiMWZiIGxlZ2FjeS10cnVuaworMjExMTYgZTIxY2Q0MTM1ZjNkYjFhZjIzYjNlNWY3MTBiMDdkNjM4MDMzZGJhNCBsZWdhY3ktdHJ1bmsKKzIxMTE3IDA5OWFlNDkxODA2OWE1YmI5NTA4MzY0NDg3NjhjMWM1MGNiNGQyMjEgbGVnYWN5LXRydW5rCisyMTExOCA3ZjVkODA0NGY5OTRjMWY1MTQwNjk1M2Q1ODc5M2UyYzA3MTU5YWIyIGRlc2NyLWJyYW5jaAorMjExMTkgYjE0MGI3OGYxNzg1Y2JhODg0ZDViYTVjYjExZmM4ZTAzZTlkYzhiZSBkZXNjci1icmFuY2gKKzIxMTIwIGE2MjMxZjI0ZGJiNmUwYTQ3NGU0ODNmZWUxNWQwMDg1OTczODhiZDMgZGVzY3ItYnJhbmNoCisyMTEyMSA5ZWI0NjlhNDMxNDQxNzY4ZGU4MTExMjEwNWEzNmYxZjYxYmQyOGIzIGxlZ2FjeS10cnVuaworMjExMjIgZTY0YzcwMzFkOTRmY2I3MmE0NDUyYzMyMGMxYjkxYWU1Mjc2YjY4ZSBkZXNjci1icmFuY2gKKzIxMTIzIGE0NzYzYmZlZDlmMGU5MzA3NTUzYjhjMjVjYmVmNTMzZjlmOWEwZDcgbGVnYWN5LXRydW5rCisyMTEyNCAzMWNkMGRiMGYwOWZjZDk5NWQxOTg1ODE0OTA5MjFmOWM2NGIxYzViIGxlZ2FjeS10cnVuaworMjExMjUgMmVjYWY5ZTIxYTA0NmQ2ZmU5MTg0OWI4ZWNkNjUxYWI3YTBjMjllOSBsZWdhY3ktdHJ1bmsKKzIxMTI2IDc1MTdmY2EzMjI2MmNiYWZkMzg5YzljMDIyNDIyMjdmZTg1Yzg2ZTYgcmVsZWFzZTIwLW1haW50CisyMTEyNyA2OTkxMDE5NDk1OTk0NDg0MDEzOGZjMjBjYzk0OWVjNWM3N2U4YzUwIGxlZ2FjeS10cnVuaworMjExMjggYzA2MTZlMDk2NDMwZjIwZDcxMWM0NDlmNjM4NDM1ZDRlYWI0ZTYwNCByZWxlYXNlMjEtbWFpbnQKKzIxMTI5IGU0MDY4MTU3ODJhZmQ0NzFiOGE0YTc1ODg3YzQ0MTk4NjY4YmRlNDkgcmVsZWFzZTIwLW1haW50CisyMTEzMCA0MGQ3OTRiNTA0MWRmMDQxNDcwNTFhMTY3NGMyZjgxMWQ0ZDIyMjQ4IGRlc2NyLWJyYW5jaAorMjExMzEgMDI1MzA3NzdiNTIxOGQ0MWI5Njk2MGZjOWY5NmVhZWZkODEwYWQ5YSBkZXNjci1icmFuY2gKKzIxMTMyIDA1MDU0YmQ3OTU5YjY0NTE1ODlkN2RjMDNmMDRhYjA0NGY4YTQzOGQgZGVzY3ItYnJhbmNoCisyMTEzMyBjNjE2NjU1NzgyZjFhZmMxOTA4NzkwNWY2MTQxYjZhMjE3YjYzYjY4IGRlc2NyLWJyYW5jaAorMjExMzQgYzI5ZjMxMzVhMjBjYjA0NDQ5NTZjYjE1NGVjNTdlYzQ5ZDU3OWFlNSBsZWdhY3ktdHJ1bmsKKzIxMTM1IDMzM2EyYzZlYjc0MzhhNTE3MTVlNWFjODMyYTI4OGJhODg0ZWNkNjYgZGVzY3ItYnJhbmNoCisyMTEzNiAxNjZiN2IzNjU4NTE5M2NhNzg2ZDNmN2Q3NGRlMTViYjUwNzRjMjVkIGxlZ2FjeS10cnVuaworMjExMzcgOTUyMjk3NmQxZTk5NmNjY2IzNTQxMzlmN2YwM2QxMzQ0MmU4OWU2NiBsZWdhY3ktdHJ1bmsKKzIxMTM4IGFjN2RjZjBlNTEwNGFmYTE0MGY0MzdiZTA1YTE2NTRiYzNkMjFjMjAgcmVsZWFzZTIxLW1haW50CisyMTEzOSAxZjEzNjQ4MDY1OTljYTMxZWU4YmQ1MGIxZWYyNTk4ODc4YzQ3YmQyIGxlZ2FjeS10cnVuaworMjExNDAgOWU5ZWRkYWMyNWI4NThmNmZjMGExZWQ5ZGMwMTEzNTZhMWRiNzRlYyBnZW4tYnJhbmNoCisyMTE0MSAyN2RkOWVjMzE2MmNkOGNhYjk0YmQ3MzQwOTRlMjA0NTcwMzUxZWIzIGxlZ2FjeS10cnVuaworMjExNDIgMGFmNmVhZjlmODllZWY0YTlkYWVkMTRkM2YzNTkyZWRjOWI4MzI2YSByZWxlYXNlMjAtbWFpbnQKKzIxMTQzIDM2NDI0NDI2OTUwNjNhOTgxMDkyZWE0ZTk3NzZiOWU1ZGYyMjE2OWEgZ2VuLWJyYW5jaAorMjExNDQgNmFjYmE5ZTQ3NThjYjAxODkwYmUwNjkxNzFmOGRlZmJmY2ExNjYzNyBnZW4tYnJhbmNoCisyMTE0NSBlMzI4MjE4NTQ2YjU5OGJmZTQ2ZjY4OTQ1MmFhM2JmMjhmYTg2MWNjIGxlZ2FjeS10cnVuaworMjExNDYgYjdmMmUyMzEyNjEwZWM0ZmIzNTFkN2RlZjQzYzEwODNjODJiMDAxYyBsZWdhY3ktdHJ1bmsKKzIxMTQ3IDlkNTMzYWU1NzRkMjBkMTRjM2RjYWQyYjZiYzA0MzZiNjQ3MDBmNjMgbGVnYWN5LXRydW5rCisyMTE0OCA4ZWVhMmVmYjM0Y2QxZjE2ZTZjYmY3MTI3Mjc1YzllNTE3MWEyOTY4IGxlZ2FjeS10cnVuaworMjExNDkgODVlM2ZhMWViODM2Yzg4MjIwZWZmNGEwYjc1YWE5NzE3N2QyY2MyNyBsZWdhY3ktdHJ1bmsKKzIxMTUwIGU4ODdkNjg2MmY3N2I0MDgzMGQ3NDdmMWEwNWExNmI0NjkwYWNhM2UgbGVnYWN5LXRydW5rCisyMTE1MSBiNDk5NDVlODA0NGE4MDZmYjJiYTI4YzUwMTY4OGQ1ZmZiZmNkY2JmIGxlZ2FjeS10cnVuaworMjExNTIgZWZmOGRhN2MzZGNiOWJlYjBlODViYmZmODA4NTcyOTJjNzg1MDk0NyBsZWdhY3ktdHJ1bmsKKzIxMTUzIGNhYzIwN2IzYTQzZmQ4YTg5NDY0ZGQyY2UwY2FlNGMzZDIzZmQ4OTkgZGVzY3ItYnJhbmNoCisyMTE1NCA3YTMzOGY1MzdlNDJiYjJhM2QxYWI0YzYwZDEwYTQwMGEzNjUxOTFkIGRlc2NyLWJyYW5jaAorMjExNTUgYTQ0N2ZjOTQ3Mjk5OWExNjM4ODAyNjRmMzU0MThjOTg5YTg1ZDk4NyBkZXNjci1icmFuY2gKKzIxMTU2IDI4YzRiNjZlY2JjNThkYWI0YTM5MTZhNzljYWQ1OWZjZDVmOTgzNDMgZGVzY3ItYnJhbmNoCisyMTE1NyBhN2MyZmZlYmJkMjY2ZmFmYjAxNGU4MTI0OTFkZjUxMWYzOTYwNTYyIHJlbGVhc2UyMS1tYWludAorMjExNTggNGNiMzQzMTRiZDk3MDljMDA1NmY3MzNlYTczMjQ5OTI5OGY2ZDE1NiBsZWdhY3ktdHJ1bmsKKzIxMTU5IDU0MWUwOTVhNmVkNjUxNjkyNWU2NjFmOGI5YmM4YzdmNzFlZTc2YzAgbGVnYWN5LXRydW5rCisyMTE2MCA0MThjYWJjYjc2M2YwYWMyZDU1YjBmYTVkNzZjODE4M2UyZDk4ZWRmIGxlZ2FjeS10cnVuaworMjExNjEgMzU0YTRkZjA5ZTM4NWI4NDkzZTAyZDgzMGU5NWE3YTVjN2E5ZjAwNSBsZWdhY3ktdHJ1bmsKKzIxMTYyIDMxY2I1ZDE3MzExYWI1Mjg5MDkxMWY3MjVlYWE1MWRlMmMyMjFiM2QgbGVnYWN5LXRydW5rCisyMTE2MyAwMTE2ZTQ1OWRhZDJjYmRlNmU5MjI2NGRmMTc3ZGMwNjU2ZjFkODIxIGRlc2NyLWJyYW5jaAorMjExNjQgNGUzMDE5ZGE5MWE5MzY1ZWJhNTE1NzIyYjI4ZDBlODE0MjBiYTFkNiBkZXNjci1icmFuY2gKKzIxMTY1IDIyZmViYTk2NTljZTc5MjBkZDYxMmNkODUzNjJlYzk0MmYzNDFhOTkgZGVzY3ItYnJhbmNoCisyMTE2NiAxMWFjMDJjMDM2OTBkNDE0NGEwYmZlZjUyNWE3ZDQ0ZjVjMzRkNDU5IGRlc2NyLWJyYW5jaAorMjExNjcgOTdhMjA4MjkxY2Q4YmIwODQ5YmQ1NWY4OTU3MWE2OTQ4M2M2NTQ1NiBsZWdhY3ktdHJ1bmsKKzIxMTY4IDQ3YzlkMGNiNmUzMTRkYmI3OTZkOTgxM2IzNDcxMDgwYjYwNjdhMjQgbGVnYWN5LXRydW5rCisyMTE2OSA3NjdjNGIyODIxMGFkZWI0ZWUyOGMzZGFiNmZhNmJlYmMwYTUwYzUxIHJlbGVhc2UyMS1tYWludAorMjExNzAgZGJlODJhOWM2ZjdkNzNmNTk5M2M0NTEwNjM2ODljYjc5OTIzYzliNiBkZXNjci1icmFuY2gKKzIxMTcxIDgwNjQ3YjgyZTFiMmQ4NzQ2YzdjZmI3MWFjYjBlMWVkNTUyYzExMjAgZGVzY3ItYnJhbmNoCisyMTE3MiAwZTdjYWQ1MWNmNjY1MzBlOGE0YWQ3YTc3MWZiNGM4MjFlYTlmNWM5IGxlZ2FjeS10cnVuaworMjExNzMgYTcxZmVlODRiNGU0OTAxYjk1NzI0NDIwYjVlMTg4YmY1NzIzMWE0OSBkZXNjci1icmFuY2gKKzIxMTc0IDhjZDRhM2YwMTk1MjFkOWE3ZDQ3NTYwNjQxMjYyMWEyYzBmOWZiN2EgbGVnYWN5LXRydW5rCisyMTE3NSBiNTFiNGMyYmY1ZjllYWZhODk4ZjAwZTgzYzE5MjgyYjhmM2IyZDhlIGxlZ2FjeS10cnVuaworMjExNzYgMTdiM2VlOWNjNDNmYTJmOTEzNTk4YzNmYmRlMTNkYjAzNzBmZDRjOCBkZXNjci1icmFuY2gKKzIxMTc3IGUxYjMwNjI1YTQ2NzQwODkzM2Q0OGIwNjU0ZDhiZWNkNDY3ZDYyMDcgZGVzY3ItYnJhbmNoCisyMTE3OCAyY2U3MGE4ODNhZjZhN2MwNjBlM2U3NTc5YjkwMGIzY2VlZTAwYTZhIHJlbGVhc2UyMS1tYWludAorMjExNzkgMzFjMTFhYjFhM2U4NTc0ZWE0MmIyZWQ2NGZmNWM1MjFmYjUzYjQ2OSBkZXNjci1icmFuY2gKKzIxMTgwIDA0NjNiOWU1NzA0ZWIyODc4NTdlOGNjMzI2ZDNlZDdmZTlhNzEwOWYgZGVzY3ItYnJhbmNoCisyMTE4MSA3YmM0NzNiMmM2NTQyNDMwNDI3ODRiOGFjYTI2NGNjMDI1Y2NkYzg5IGxlZ2FjeS10cnVuaworMjExODIgMWJjZThiYjQxZGJkM2YwOWQ3MGUwMmY5MGNkODIzMTZmMDk5Yjk2YiBkZXNjci1icmFuY2gKKzIxMTgzIDJlNGM2YmE3ZDA5YzE0ZDEwYjgxNDg3N2M0OGVlOWEwYTZhYmRmMWUgbGVnYWN5LXRydW5rCisyMTE4NCA5Y2U4YTk5NWJmMTJlNTgzZDQ3NDRhNDMzZTJhOGVlYjZiZmIzZWYxIGxlZ2FjeS10cnVuaworMjExODUgMDY3NmVhMmZmODY3YTk4ZGE0MmQ5ZTVkOGZkY2Q0YWFmZDk5MGFkNSBsZWdhY3ktdHJ1bmsKKzIxMTg2IDU0Zjc2MjkzZDkyNjk4NTE1ZDUwMzM3Yzg5MjVkMzQ3OGE5MjVhNzQgbGVnYWN5LXRydW5rCisyMTE4NyA4ZWY4NGI4M2VjMWZhNDM1NTE0Y2IxNWUwZjhlMGI3YWI1NTkxNjljIGxlZ2FjeS10cnVuaworMjExODggMTI2YTY2YjM0MTNjZDJiYmZmNDJhNjdlYjZmODIyYjhmMjE2ZGU5YyBkZXNjci1icmFuY2gKKzIxMTg5IGIxZjYzMjgwYjJjMjk4ZWM5MTE1MThmZWM4NTgxZThhZmNjOGFkNjYgZGVzY3ItYnJhbmNoCisyMTE5MCA2NTFjNjY0MDZiZjgyMTFjMGMxMGJkMGM1ZThlNGYyYWViNGI4MzEzIGRlc2NyLWJyYW5jaAorMjExOTEgZDYzOWExZTFmMWY0OGY4OGZlNDNjMDcxZjE1MDdmYzE2NjA3ZmFiOSBsZWdhY3ktdHJ1bmsKKzIxMTkyIDdjMzQ4OTlhZDUwNjIzZTJjM2I1MWQ3MTBjM2I1NmQ5OGJiOTY3MjQgbGVnYWN5LXRydW5rCisyMTE5MyAwZWMwM2UxYmU1NTg4ZWI3ZWFjZjJjMGQ4OGJkYzU2ODdhYTQ5NTdhIGxlZ2FjeS10cnVuaworMjExOTQgNGQxYzc4NDkzMjIxYWJhYTMyMWE2ZDkwMzRmMTQyYTg3MjI3YTk0MyBsZWdhY3ktdHJ1bmsKKzIxMTk1IGU1YjI3M2U5NWY3NGI4NDk4YzgzYzhhYzM3OWJmYTk1YmEzNDQzNDQgbGVnYWN5LXRydW5rCisyMTE5NiAzMWJkMjVhMmQ4YzViOGQ3YWY3MTg5NTVkMTZjMmFmYmYwNGZiNzMxIGxlZ2FjeS10cnVuaworMjExOTcgNmZiYzVmMjAxYTFmODc2MGNlN2ExNTFlNzNlOWU1OGNkNzA5NmVlMSBsZWdhY3ktdHJ1bmsKKzIxMTk4IGE2NjU3MmFjNzFlN2RjNzg0Yjk1MWE3OTI3MTc3NmNmYzg3YTEyNzAgbGVnYWN5LXRydW5rCisyMTE5OSAwMmFhMTMzZGViNTM4ZTRlODdmMmY0MTBkMmY5OWNmOWNjOWExZDcxIGxlZ2FjeS10cnVuaworMjEyMDAgZjkyNmViMWY1NzcwMWMyMzAxMDcyZDEwN2I5YWVmZGMzOWJhZDBmYyBsZWdhY3ktdHJ1bmsKKzIxMjAxIGVmYjUwNjljYzc0ZmU3MDhjMzhiZjU2MWQzN2FkMGMyZDllOTQ4ZGQgbGVnYWN5LXRydW5rCisyMTIwMiAwYmFkNDJlNTYzMjA0MTVjMmQxMjc1MmIxYjY3ZGMwNGFjODEwN2M4IGxlZ2FjeS10cnVuaworMjEyMDMgY2Y2YTg2NDM4N2QzNzg4MWFkNzI4NTg2NDNmNmZhZmE5N2Y0ZWU4OCBsZWdhY3ktdHJ1bmsKKzIxMjA0IGM1YWM2ZjA1NWM2MjM1YzI0N2EwNGRiMzQ4OTE2Y2JkMmNkMDE3YTggbGVnYWN5LXRydW5rCisyMTIwNSBkM2U0Mzk5ZmUyZjk0MzE2MTVhZGJhYmY2YTQzYjdkZjY0ZWI4ZTc2IGxlZ2FjeS10cnVuaworMjEyMDYgYzYzOGE3YTJmZTc3YjkzMjIyZjA3ZmMwZGZiMjgwZDZmMWQ1MjlmYSBsZWdhY3ktdHJ1bmsKKzIxMjA3IDY3NzFkYWIxZmUzMmZmMzkwODBjNmJlNDQ4NTdlZmRmOGEzZjFiMmMgbGVnYWN5LXRydW5rCisyMTIwOCAzNDBlOTMwMWU4NWIzMjRmYzVjMTU1ODExYmIwZmM5N2M4NDVhMjNmIGxlZ2FjeS10cnVuaworMjEyMDkgMTJkN2Q0ZGI2OWYyZjZmMDUxNmFmZTBiMmQ1MWIxMGQ2OTM1Yjk4YSBsZWdhY3ktdHJ1bmsKKzIxMjEwIDA5YTA4YTFlNDdkNjhhYTc2ZmNmZjZiMDRmMTA3YWExNWM1OTdiMjggcmVsZWFzZTIwLW1haW50CisyMTIxMSBlN2Y3ZWVmMThjOTg2M2NjM2E3NmNjMTg2Njk1Yjk0YzQwMmVjZTBjIHJlbGVhc2UyMC1tYWludAorMjEyMTIgYjczMjQxZTUwNTU2NzBlZTRmNDkyOGJlNDYzMThiMTc5YjAzZjhlNSBsZWdhY3ktdHJ1bmsKKzIxMjEzIGNjNzYzMWZiZjdmOTJlMTNkNGQ0YTRhZTdiYjk2OWE5NTI3OGM5YTkgbGVnYWN5LXRydW5rCisyMTIxNCA4MjYwMDBhNDA4NjY1MjI4YzY3NTAwZGRkNzBiNzMwMGRkNTA2OWY0IGxlZ2FjeS10cnVuaworMjEyMTUgMmYyMWZlYmY2ZDQ2MmI3Zjc0YjVkNjc5YmVjMzk2NDhjNjM2NzgwMyBsZWdhY3ktdHJ1bmsKKzIxMjE2IGY1YWIzNDc5YWNkNGQ1MzJhODJmZWQ4YzgyMzQwMjc1ZjUzZjRiMjQgbGVnYWN5LXRydW5rCisyMTIxNyBjMjU4NzZhNTFmMWI1OTYzMGZkYzBmMDk5ODdkYWFhZDhjYWIxMmQxIGxlZ2FjeS10cnVuaworMjEyMTggYTJlNmZmZjQ3MWIwMjUzMjAwOTY3ZGFkY2ExNDg5OWE4YThlZjllMiBsZWdhY3ktdHJ1bmsKKzIxMjE5IDE1YTI0ZTBiZjk0ZjIyZDEyYTVmODU4YmQxNWI1NTkzY2Q5YzYzNzIgbGVnYWN5LXRydW5rCisyMTIyMCBkMTIyMWZiZGQ4NWQ4Y2RmOTRjZGE1NmQyODU4MDVkZjdkOWQ4YzhhIGxlZ2FjeS10cnVuaworMjEyMjEgYmQzOTkzYzQ5NGExYmVlYTFhN2I2ZWI0MzUxNDIxNjFhMjc5MjYxYSBsZWdhY3ktdHJ1bmsKKzIxMjIyIGQzYjE5NTZlM2RlMGMxM2VjMDRkNmE4NTdhYjg5ZWVmY2FlNjg5YjEgbGVnYWN5LXRydW5rCisyMTIyMyBhZTBmMDljN2MxZTkxMTYwNDhjN2M3Y2MxNTJiOWViZmIzODkyM2M2IGxlZ2FjeS10cnVuaworMjEyMjQgM2E1ODAyN2NhZTRlN2RkZjdkNDYzOTM4NmE2YTQ4MDk4ODhiODdiMCBsZWdhY3ktdHJ1bmsKKzIxMjI1IGE3ODI1NDQxY2FhNGE3NzdhN2VjMDM0Yzg0YzUwYWQ2YzA3Mjg4Y2EgbGVnYWN5LXRydW5rCisyMTIyNiBhNDM4YWJhMmQxMzdiN2E1OTEzMjczNmI1OTdhNTQzYzBkNGVlZDZiIGxlZ2FjeS10cnVuaworMjEyMjcgYWVkYzNlOTIwZGViY2FkYThkMmY4ZTEzZmM4ZmNlMzIxY2QyM2IzNiByZWxlYXNlMjAtbWFpbnQKKzIxMjI4IDhlNWI1MzdmODdhMTkxOGNjMjc1M2E4NjIxZDM5YTlkZDkxMTY1NDAgbGVnYWN5LXRydW5rCisyMTIyOSAxOWJjNjNhODQ0MzkwZTRhODJiNzkxYmU1MjRhMDBiNjkzMTA3YmJmIGxlZ2FjeS10cnVuaworMjEyMzAgNTk2NTMzOTQyOWM5Y2QyMmZlNWIwNTMwMGE2NDZjMzEwM2NhY2IyYSBsZWdhY3ktdHJ1bmsKKzIxMjMxIDk5MGI3M2ZhMDc0Y2RhNGNhYjMxMmViODRlNjY1OWU4MDZlNzc2NzggbGVnYWN5LXRydW5rCisyMTIzMiAzNmU4MjU2NjBhMjQ1MWFjYzhiNmU1NTFlNWM4YmRkOTU5MGY1YzBlIGxlZ2FjeS10cnVuaworMjEyMzMgOWE0Y2FjMmI4YjhmYzk4NjcwMzEyYzhhZDZkODM1M2VlNjQxNWMxMCBsZWdhY3ktdHJ1bmsKKzIxMjM0IDFhNmI4ZjY5ZmVkNjIxODRmYTE3NTZhNzc3ZDhmNDEwYzAzMjQ2OWYgbGVnYWN5LXRydW5rCisyMTIzNSA1ZTQzNTczZjBkZjFmMTlhNzM4OTY0N2QxMDE2YzRjYjFlZDcwNjNlIGxlZ2FjeS10cnVuaworMjEyMzYgZWQzNzQ1ZGE3NDE5MjgwODZjNzRiOTY0NmQyNjBiMDNhMGVkY2YyNCByZWxlYXNlMjAtbWFpbnQKKzIxMjM3IGJlNDJjZTI5NWVkYjUzYTM1OTQ4N2UwNGRhYmNlNTA4NmMxMzkxZDYgcmVsZWFzZTIwLW1haW50CisyMTIzOCA1ODczNmNhOTE0M2MwZjZmNzVmY2QzYjg5MDAzM2M4OGI1MmRhNjRkIHJlbGVhc2UyMS1tYWludAorMjEyMzkgOTAwNTk0M2M3NTRlZTkyMGEwYjY4MmY1NjY3NmFlOWNiMDQxNDFlYSByZWxlYXNlMjEtbWFpbnQKKzIxMjQwIDRhODcyNjc3OWJiYWY3M2EzNmYyYWMxYTMxODZmNGJhMjlmOTdkYTEgcmVsZWFzZTIxLW1haW50CisyMTI0MSAyNTY0MDZiNWNmMGM0ZjRiOGZkMTM4YmIzYmRmZDQ0MmZmZDFmYjExIHJlbGVhc2UyMS1tYWludAorMjEyNDIgNzZjM2ZmNTdlYjZkMDY2ZjIxNDkwNDA0YWQ4Yzc1NGM4MGIxOGY3NCByZWxlYXNlMjAtbWFpbnQKKzIxMjQzIDYyNTNkMTI4YTc4YmY5MmM3NjdmNTBkNzMzOWU4ZDRjYjkzOTQzZDYgbGVnYWN5LXRydW5rCisyMTI0NCBlMzcwOGNiMWUwZDA3Y2I5YzVjY2MxZDAxMGIyMWUyMDcwODQyYzNhIHJlbGVhc2UyMC1tYWludAorMjEyNDUgODI2OTk0OTliMzhlYzFkMzA0MjljOGQyOThjMTFhMWMyYTM4ZWU3YSBsZWdhY3ktdHJ1bmsKKzIxMjQ2IDU0NmM3ODUyYmFjNTVjZDkyMjY3N2EzNzVkM2I5YTlkMTFkYjNhMGQgcmVsZWFzZTIwLW1haW50CisyMTI0NyAwZDRhZDg5ZWQzMmQ4N2VjYWVkYjNlOGE1ZGMxM2IyMDk5MDFkNzI3IHJlbGVhc2UyMC1tYWludAorMjEyNDcgNzNkZTk0YTcyMmQyMDZhNDVjMGI0OWQzMDExYzYyOWVhZDRkNjJiMSByZWxlYXNlMjAtbWFpbnQKKzIxMjQ5IDA3NTdiNmM5OTMwNDE0MzdkMWZiMzAwODQ0NmFiZDU0ODQzYTBlYjEgbGVnYWN5LXRydW5rCisyMTI1MCBmOWQxMjdhYjMyZWM5YWFkMzM3Mjg4MDYwNjRlZTNhMDM2NWFhNjhjIHJlbGVhc2UyMS1tYWludAorMjEyNTEgYjY2NGIwMmMzZTkxY2Y0OWUyZTEyZWVmMGVjODczOTBhMDYyZTMxYSByZWxlYXNlMjEtbWFpbnQKKzIxMjUyIDQwOWFiZjIyNTE4NWQyMWQzNzA0YjkzMTNiZjA0ZTBiNDYxMDliN2QgcmVsZWFzZTIxLW1haW50CisyMTI1MyAwODYxOWJmMTgyOTkwNDIzN2U3YTBjYzlkYThhN2Y5MmVjYzg5MzU2IHJlbGVhc2UyMS1tYWludAorMjEyNTQgZTFkZDQ2MzBlZjNiOTFiYWQ3ZjIxZDU4MWQzOWFlNjk0ODc5ZDE3ZiBsZWdhY3ktdHJ1bmsKKzIxMjU1IDY5OTFkZGFmZTM4MjhhMmRjMThmZWQ1ZDJmOGEzYWQzYThkY2ZlMTMgbGVnYWN5LXRydW5rCisyMTI1NiA2ZWVmMjFlNTIzYjY0NTY5NDkxNDI3ODJiMWY4YzUzZjFlMzY1NjllIGxlZ2FjeS10cnVuaworMjEyNTcgM2E4NzMyYzY3ODk4YzZkYWE0Y2ZhMGFhNWQ0OWUwNDNkYjVhYzc0OSBsZWdhY3ktdHJ1bmsKKzIxMjU4IGFjZDNkYTVkNTYzY2M4MmNmYjA3NDBhNTVjODQ0YzZlYjZhMDI4NDMgcmVsZWFzZTIxLW1haW50CisyMTI1OSA0OTc1MTczZTFhMDJkODJhZWQ4ODljMDczM2Y2YTVlNmNjNzY4OTdhIHJlbGVhc2UyMS1tYWludAorMjEyNjAgMjIwNDA1YzA3MjMyNTkzYTRjZDlhNzEyNzRjMzI4ZGIyZWZiZmYwYSBsZWdhY3ktdHJ1bmsKKzIxMjYxIDgzYzQ3NDhiOTM5MGU4Y2U0MjQ0MGZhMDU4ZjAzMThjOWE3NGM1ZmQgbGVnYWN5LXRydW5rCisyMTI2MiBhYThlMjM4YWIwYWQ3NjM0ZTdkZGQ2N2RhOWYxY2E3OGFhMzM0MWFhIGxlZ2FjeS10cnVuaworMjEyNjMgYTRkYzIxYjQ3NzRkYzk5N2UwNzAzOWUxYmViYWQ3OTExMWFiMzhlNSByZWxlYXNlMjEtbWFpbnQKKzIxMjY0IDdkMmU2ZTFkNjBjZTU4YmE0ZjlkZmYwOWVhZDFlNmI3MGM4MzVjYzEgbGVnYWN5LXRydW5rCisyMTI2NSA0ZWJkMjkyYzk3NWY4MDk4ZjFmNWFiNGE5Y2IyNzU5Yzg3MmE2OGZjIGxlZ2FjeS10cnVuaworMjEyNjYgZjAzNjE4MzczMjNkNmQ2YTQ4Mjc0MzEyYzRiYTFkODNlYjI1NmQxNSBsZWdhY3ktdHJ1bmsKKzIxMjY3IGI4OTNkMTIwNDVjYjQ2MDllYTIyMTM1ZjU3YzJkYjY1ZWJmMTg1OGMgbGVnYWN5LXRydW5rCisyMTI2OCBmOTI2MTkwNGNlYmJjNTU5YTRjZTA0ZWFjNjIyNzE2NmY2NGNhM2IyIGxlZ2FjeS10cnVuaworMjEyNjkgZDkyM2IzYzhiMTUyNjlhY2YyN2M3ZDEwMDE4OGViYzc5MjQ5YjY1MyBsZWdhY3ktdHJ1bmsKKzIxMjcwIGVhZTY2YmYyNDg3ODg4YmQ0NjkxNjYyOGNjZjNkMzU3MGFlNTI3MjYgbGVnYWN5LXRydW5rCisyMTI3MSBmZTQwNzFiZWZmNDE4NjhmOGMwZjQ2OTA0Y2RlMzQzMWM4N2JlYjU5IGxlZ2FjeS10cnVuaworMjEyNzIgZWI1MjQzMjJhMWMzMWM2MzUyOTc5ZDI1NWE1MjE1MjMyNjdhYWU2MyBsZWdhY3ktdHJ1bmsKKzIxMjczIGY4Mjg3ZDg0Yjc1NTE3MTZmNWFjOGMyMWUzNWFkNTUyZDhjZGVlZDYgbGVnYWN5LXRydW5rCisyMTI3NCBmMDI2MDViOGZkYzFlNTk3MTU2MjFmODgxZjVkYjllMDgxZThjYzViIGxlZ2FjeS10cnVuaworMjEyNzUgMDM3YzhiZTUwNWUwNTlkNzc0Yzg3MzQ1ZjUxMTVmMTU4Y2JkMjNmYiBsZWdhY3ktdHJ1bmsKKzIxMjc2IGExZWY0M2E2ZDZlMTMxM2Y0OWE5MTdkYTY2MWY5YmJiY2YwYjg0ZTQgbGVnYWN5LXRydW5rCisyMTI3NyAwNDM5YzgyYThmZjQ3NTYxMzA2NWFiZjY0NGZkNjljNTRlYTY3Yjk3IGxlZ2FjeS10cnVuaworMjEyNzggNDUxNzA5M2ViOTllYWNiYThhZDA4YjEyZWYzZjBmMGE5NTFmNGIzMCBsZWdhY3ktdHJ1bmsKKzIxMjc5IGU0ZDY1NWFlOTE0MGUzMTNmOTk1MzM5M2Q5YmY5NzRkOWI0ZTI2YzMgbGVnYWN5LXRydW5rCisyMTI4MCA0NzcxN2U1NjY3ZWIxNWYxODRlMGE3NzJkMzJiNWQ3YzhhZjVmZjU4IGxlZ2FjeS10cnVuaworMjEyODEgMjRjMjliMzcxNTEwMmNkYjM1NjlmMGI2YTQ4YzBjMmMyYjBlZTE2MSBsZWdhY3ktdHJ1bmsKKzIxMjgyIDlmYTU0YmQ3YTdjYjU2ZWM4ZTk0ZGQ0NDAzMDhkZjIyMzQxNzQxNmMgbGVnYWN5LXRydW5rCisyMTI4MyBjNGRiMDliODc0MjQyMzBkMjJlOWZmZWVmZGYzZTVjNGJiN2IzMDk5IGxlZ2FjeS10cnVuaworMjEyODQgZTNjZjMzNDhmZWNhNTMwYWY0ODNkZWRjNzRhNzQ1OGQxZjg4YTJjMSBsZWdhY3ktdHJ1bmsKKzIxMjg1IGYxYjVmYmVlY2MwZTk5MjE3MTQ3MmQ5ZThlZmUxMjdiZGY1ZjhkMmQgbGVnYWN5LXRydW5rCisyMTI4NiA0ODI2YTZjZGFmYzQwZGUyMmFjYmVjZTQzN2QwMGYzOGZmNjZmMTY2IGxlZ2FjeS10cnVuaworMjEyODcgNDVkZTFhYzJhMzc2N2I2ODVjYTBiYTEwOGQ1OGU0YThmNzU5NTMxMiBsZWdhY3ktdHJ1bmsKKzIxMjg4IDVkM2U3Zjk5Y2Y1MmNmNDZkZmM5YTU4MWJmZDc4YWQ0YmM5YmZmNjQgbGVnYWN5LXRydW5rCisyMTI4OSAwNjViMTdmYzBkMmVlMDZmNjUxMjhiNWFiZWIyNjIxY2QzZWVmMTcwIGxlZ2FjeS10cnVuaworMjEyOTAgOWYxZGZhNzg2YmE2NTVlZGExMjdmMWZlNWM2Mjg4OWY2YTQ4ZGU5MiBsZWdhY3ktdHJ1bmsKKzIxMjkxIDA1MTRiMTZjMWE2ODNmM2JkNTQ3YWNkOWZhMGQ0NjYzYzFiZWI3MTEgbGVnYWN5LXRydW5rCisyMTI5MiBmYjdjNDRhZTRhNjI3N2Q0MmI2NjMxZmU2MGY2YWFiNjZhN2Y0NGI5IGxlZ2FjeS10cnVuaworMjEyOTMgZDUwZDRmODFhYTRjNWE3YzAwZWRmOTA0NTMzYzU4OTVkYWYwMDE0ZiBsZWdhY3ktdHJ1bmsKKzIxMjk0IDM1OGNiNzRjMDg2NGY5YThiNzkzYTY3MWRmMmEzNmFhNDFkNmUzYTUgbGVnYWN5LXRydW5rCisyMTI5NSA1N2RkMTNiNmM4MDMxMGQ0NDNiMjBmZjU1Y2NmZDYzZjI4YjM4ZjQwIGxlZ2FjeS10cnVuaworMjEyOTYgMzA5ZmIwMjZjODRlY2Q1N2ZkMjU3MDk1ZTdjODM1ZGIwMjI5NzM4ZiBsZWdhY3ktdHJ1bmsKKzIxMjk3IDFhMmE5MTRiMjQ2YzIyYzZmMTMxZWJjYTA0ZjRlOGQxOTIxNThiMmMgbGVnYWN5LXRydW5rCisyMTI5OCBjODhmNDE0ODYwNWZkNTJjZTBlYjIwNjI2MzRkNzk4OTQxZjYyOWE5IGxlZ2FjeS10cnVuaworMjEyOTkgNmIwYTgxNTdiZTNiNjgwNmYxM2UwYTMyYjA0ZmVlYWMwYjdkN2FiNiBsZWdhY3ktdHJ1bmsKKzIxMzAwIDQxNDkxZDE5Njc0OGNkNGRmZjkwMzIyOWYwZDY1MTFkMjU3NmU0N2EgbGVnYWN5LXRydW5rCisyMTMwMSAzZDkxNjRkOTVlNzg5ZjcxOGQ2NzlkODI2MTgxMTc4MjdmNWYzNDY2IGxlZ2FjeS10cnVuaworMjEzMDIgYTQ2ZTM1YWNmOWMxYzY0YmE5MDE2M2JhYzBlZDRlY2Q5YjZmMTg1NyBsZWdhY3ktdHJ1bmsKKzIxMzAzIDE2ZTRlYjQyNzc5NzhmNjZiZThiNDY2Y2VlNTQ4Y2U5NTNlNzUzODIgbGVnYWN5LXRydW5rCisyMTMwNCA3OGJmYmUyZTcxOWNiM2JkOTAzNTRkNDg0OTc2NmQxMGU5NDcyYTk3IGxlZ2FjeS10cnVuaworMjEzMDUgNDI2ZTBjNzIxYmJmNmViMjBhNTI5N2NiZTA3NGNkMTgxOTQxZDBmOSBsZWdhY3ktdHJ1bmsKKzIxMzA2IGViZjYxYjViNWFlYmJjYTcxMWNjNmNhNzU0ZmRhMjExNTBjNGFlYzYgdW5sYWJlbGVkLTEuMS4xCisyMTMwOCBmZDgzMjEyZWI4ZjI0ZWZkNjQ5NGM4OWE0MzI2MjVjNTg1N2VmNDA1IGxlZ2FjeS10cnVuaworMjEzMDkgZGVlNDk4OTYxYmZlM2M5MGZjNzU5ZTAyYWI0YzRhOGRkOGQzZDdmMiBsZWdhY3ktdHJ1bmsKKzIxMzEwIDRhZDg0MmY5ZDQzMTQ3YTgwMThiYzBmOGIxZDdkOWEzMTllZTdjNzcgcmVsZWFzZTIxLW1haW50CisyMTMxMSA0NDEyMmU3YjQ5Y2YyYzk0NzNlNjhkYTIxM2RjYTg5MjVmYzQ5YzAyIGxlZ2FjeS10cnVuaworMjEzMTIgOWUzMjZjOWU2YmU1OTQyMTAxYzEwM2Q2YThjNjdkNTU0NTZkZmEyNSBsZWdhY3ktdHJ1bmsKKzIxMzEzIDg2ZGFiMGQ0M2I3MzEyZjBiODg3ZTU3NjkxYzRmZTc4ZDU4N2U3MzggbGVnYWN5LXRydW5rCisyMTMxNCA5NzM0Zjg5NWY0ZmJlZDk4YjQ3ZmE2MmRkMTI2Njk4ZjBmNDdkOTJhIGxlZ2FjeS10cnVuaworMjEzMTUgZDJjOTUwMDMyMzkzMDAxZjdiZDIzMmZjOGE4ZmU0NWQxYjI2NTY1NCBsZWdhY3ktdHJ1bmsKKzIxMzE2IDdjOGRhZDVmMmQ5NjZkYzIxZGJkZGQ3MGRkYjkwZjkxZTI5YjdkMDYgbGVnYWN5LXRydW5rCisyMTMxNyBiNTY1OGEyMzBlMWE1Mjc2MDQ1ZTI3YmQ0NmEzZTlhYzEzZmY4ZjM1IGxlZ2FjeS10cnVuaworMjEzMTggOGI3ZmY0NGI0NjY5NTk3YTY0N2Y0ODA2MjNkMzVkYThmNjg3YWM5MCBsZWdhY3ktdHJ1bmsKKzIxMzE5IDA2MzJkY2Q2OWVhM2FmMTlhNjk4MzU2NzRiNGQ2NDVhNzE0NmI2NDIgbGVnYWN5LXRydW5rCisyMTMyMCBlM2JhMzczOTg1NWFkMWZmNzdkODg0YmQ3ZjU3YmRjMDg5ZmMzZTQ5IGxlZ2FjeS10cnVuaworMjEzMjEgZjM4OTIzY2UzYzZiMGY0YWRiYTMxNjdiZjI0OTI1ODQ2N2Y3Zjg1YiBsZWdhY3ktdHJ1bmsKKzIxMzIyIDFmMWQyYzUwYjNjNzg0ODExYzc0YTEzYTRjNjZjZDY1ODg4MzQ4OTggbGVnYWN5LXRydW5rCisyMTMyMyBmN2MwMWI5MzhhMTczOGFkNzUyNWYxNDExMjVhMGYxODZhYTA5NDA5IGxlZ2FjeS10cnVuaworMjEzMjQgMDQzZTIwMDE3NGYxYjdlOWMzNGY0ZWQ2MWYxZDJjOGVlYzY5ODJjOSBsZWdhY3ktdHJ1bmsKKzIxMzI1IGUzMWEzNDkxNjZmNGUwY2QxZTI1ZTE5OTgwZWZhMjdjMzAxM2I0MmQgZGVzY3ItYnJhbmNoCisyMTMyNiBiYzA1YTk1MjQyYTM3ODAzYTUxYmRlNTI5MmExZDliZGJkMTkzMjVkIGxlZ2FjeS10cnVuaworMjEzMjcgZjYwNzhhMzBmNzBhMjgwZWE2ZWI1ODRlMjMzYjllYzgzNmE2ODc2ZCBsZWdhY3ktdHJ1bmsKKzIxMzI4IDY4MDBiY2NlMDQ1NTViOWZhM2ZlMjRmMzQwNTA5NWFlNjUyNzZhYzUgbGVnYWN5LXRydW5rCisyMTMyOSA0ZmEzMWVjYTNiZTRhNTRkOGU5MTdkMzUwODBiNDFjY2QzMTM2ZDA5IGxlZ2FjeS10cnVuaworMjEzMzAgMjk1YWNjMDc1NWYwYzdmZWM4YTFkOWFkZWM1MDJhMWZlYTM5ZTFiYiBsZWdhY3ktdHJ1bmsKKzIxMzMxIDU1ZjNhMDRlMDY0MTFlY2ZmMjc2NWQwN2YwM2NkOWE3MDQzOWFkODEgbGVnYWN5LXRydW5rCisyMTMzMiBmZmJiOWM5MThhYzA0NmIwY2U2YzViYjZiN2IxNDQwYjM0ODY2ZjcwIGxlZ2FjeS10cnVuaworMjEzMzMgMDM0NGU0YWM3MGIwYzhmOTU1ZTIxNWYwM2Q2NjRkNTJkYzlkNmRiNSBsZWdhY3ktdHJ1bmsKKzIxMzM0IGIxNDUyMWZkOGUzOTE2MjFhMzFkMGZiZmNiMTM1ZmVkMWUxMWM4MGEgbGVnYWN5LXRydW5rCisyMTMzNSAyMGUzYTZlMTBjMjQ4ZmUwM2NjYmNkZjQ1MmNkN2Q3MDdhZjcwNWM1IGxlZ2FjeS10cnVuaworMjEzMzYgMjJmODVjNmE2NTIwYTY5NThiM2E5MTE4NWM4Y2Q5NWU1YjAyMzllYiBsZWdhY3ktdHJ1bmsKKzIxMzM3IDkzMjkwM2M3ZDA1NGIwMmJiODk3MGNlMmYyMjE0Zjk3MTI2MDE4ZWQgbGVnYWN5LXRydW5rCisyMTMzOCA5ODIxNjNjNGU5ZDJiZTBhMDMyZjZlNjE4NTFjODM4OWUwMjJiMzA5IGxlZ2FjeS10cnVuaworMjEzMzkgNjhjMTJkNTU1NmRmNzE2YmQwNDZjZGY4ODMxNTAwNzM0NjJmYWQ3YSBsZWdhY3ktdHJ1bmsKKzIxMzQwIDBmZjc2ZDc4MWQyYzYxMThkNjk4MjE5ODljNGRlNDk0OWIyNmYxZDIgcmVsZWFzZTIxLW1haW50CisyMTM0MSBmZjhlMTgzYWU1OGY5NDFlZTI2OTY2NTI2MTI0ZTQ0ZmNlMjRhOTVhIHJlbGVhc2UyMS1tYWludAorMjEzNDIgN2NkNmU1MTVmZDMwYTY5MTYxNzk0MWFjNmUxMWY0YTZiYTY0Y2NiNSByZWxlYXNlMjEtbWFpbnQKKzIxMzQzIDMxNDg0MmRjZDUyZTk0ZTc0MWVjNzljZTkyMmVhMmE2YWZlNzM4NzIgcmVsZWFzZTIxLW1haW50CisyMTM0NCA4OTNiYTFmMDM3OGExZjY0NGJjMDVhZDRjNDhiNjBiNDhmM2RkNzE0IHJlbGVhc2UyMS1tYWludAorMjEzNDUgNjdjODQxZDgyMWUwNzRhOWI3ZjRjZTcxNDAxYjU1ZDEzNTIyZDA1NyByZWxlYXNlMjEtbWFpbnQKKzIxMzQ2IDkwOTg0MTU5NzFkMDE3MDFiYzNmMmE5OWNjMjcyNDFkMjJiOWM3ODggcmVsZWFzZTIxLW1haW50CisyMTM0NyBiZTk2NzFlNjFmNGE2MDg2N2E0ZmYxMWQwMWE4YmVlYzJhZjdkMzBmIHJlbGVhc2UyMS1tYWludAorMjEzNDggM2E2YTJlNTlkZTAzYzM3MWZmMzlmODAyNjM4MjI5YWFkZjExNjliNSByZWxlYXNlMjEtbWFpbnQKKzIxMzQ5IGFjMDAyN2UyYjNiN2E0ZmQzZjJiMDA0ZjU1ZWU3NmUzY2U0OTViMjUgcmVsZWFzZTIxLW1haW50CisyMTM1MCBlODY1MGQ3NWU1YTQ1NGM4OGM1MDZkYjI2NTYyYjk1ZTRmMGI1MzA1IHJlbGVhc2UyMS1tYWludAorMjEzNTEgNzVjMWY5YzNmMGQxZjdiODMwNmE4NjczNWZjY2ExMDA5NjNjY2IyNyBsZWdhY3ktdHJ1bmsKKzIxMzUyIDljMmJjM2U0ZGY3MzgzNzFmYTk3NDBmODdkZTU5MjM2NDJjYTM4N2IgcmVsZWFzZTIxLW1haW50CisyMTM1MyBkNTJlNjM1ZTIwNWY4NzYzNDM0YWJlNzU4ODJlNDUzZTE5MDNiYTE3IHJlbGVhc2UyMS1tYWludAorMjEzNTQgNmNlYzc2MWRmMmMzNGFlMTk4YTU5NDM1ZjIzMjIzZGFiYjU2OWQ5YSByZWxlYXNlMjEtbWFpbnQKKzIxMzU1IGZhNGE3N2U0MjRkZGIzNWU4OTMxMTM3NDVmZWYyYjM4NTQyMDNlMDQgcmVsZWFzZTIxLW1haW50CisyMTM1NiAwNzFjOTU3MjIxZWNjNTlkODU1NDVhMjA5NjBjMmU3ZDUwMTZlMDk1IHJlbGVhc2UyMS1tYWludAorMjEzNTcgYzgyM2VjNDdkZjQ5NWU1OGNmMTczODUxM2YwMzA0NTdhZDc3ZTQwNSByZWxlYXNlMjEtbWFpbnQKKzIxMzU4IDFhYTU5MWU0MTgxNTQ1YzNiZGM4NTA5ODM0MWU1NDdjMjQ0MzU5NmYgcmVsZWFzZTIxLW1haW50CisyMTM1OSAxNDBjYjI0NmI4NjRhZWEwM2Y1YWI2N2UxZWEwNjg3MDc0NThlNzI3IHJlbGVhc2UyMS1tYWludAorMjEzNjAgMTU5YWJmYzhiMWJjNTFiZmM5MmQxNmEwYmRkNjhhMDU3NjUwOTRjZSByZWxlYXNlMjEtbWFpbnQKKzIxMzYxIDBjOTc4NzI4ZWJhZmVjODczMmQ4ODljNDNmMGVkYTdmNWM5ZmExMDMgcmVsZWFzZTIxLW1haW50CisyMTM2MiAwZDI4NzQzNDE0NGI1OWMyYzFlNzZmNGNiZDJjNDA1OTE3NzkwNzgwIHJlbGVhc2UyMS1tYWludAorMjEzNjMgY2RhNmNhOWRmZDU5MGQ0OWY4MTllMWZhN2NlMzc0NmE4YWE5OTVlZCBsZWdhY3ktdHJ1bmsKKzIxMzY0IDNiYTdhMzU4Y2UwMjg4NWFmNGQ1YTNiNWIyZWQ2NTgyNDhkM2U0OTMgbGVnYWN5LXRydW5rCisyMTM2NSBmYjM1YjNhMjI2MDQ2MjIxZjdiN2QzNGEyYjY2NWI0M2JhMzYyOTFhIGxlZ2FjeS10cnVuaworMjEzNjYgZTQyN2FmYjU2MzdmMDhjMWMyNDBlZmVhZTE5NTJiMzI5MDlhMGZkZSBsZWdhY3ktdHJ1bmsKKzIxMzY3IDkzYmRjNWVjZTFiZjY5ODdiNjE3Yjg5Y2FiNGNmMjU5YTZhZDc3YjAgbGVnYWN5LXRydW5rCisyMTM2OCBlNDUyN2Q0NWU5NDJkMWM5NWY2MjBlZTE5NjFiZDM1YjJiYWY4MzY2IGxlZ2FjeS10cnVuaworMjEzNjkgZjk5NWM0ZjI1MTIwMDhiM2E1YTY0Yzk5YzlkNGUzY2IzMmNmZmQ4NiBsZWdhY3ktdHJ1bmsKKzIxMzcwIGQwMTRiNTIyNjkwMGQ3MzMyMTE5YjY4ZmEzODdjYmVhYWM3YTIzNTIgbGVnYWN5LXRydW5rCisyMTM3MSBiZjkzNmM1Mjk2MzUzYzI2OTRjYTNlZmM1Y2RjNzAyMDM4MzRmYzlkIGxlZ2FjeS10cnVuaworMjEzNzIgNDlhY2M4YWM2MGMyMzI0MTVkOWJkNTdkYmNiZWI0NjIyMWI4N2JmNyBsZWdhY3ktdHJ1bmsKKzIxMzczIDQxMjQzY2I0ZWEwNWQ3NzcxMmE1NDZjODk2NDUxODA1NDU0ODRjNTYgbGVnYWN5LXRydW5rCisyMTM3NCA5NzZiMGFlNGY1MjdjMWExZTc1YzViNWFjNDM1MTIzMWRhZWJlZTEyIGRlc2NyLWJyYW5jaAorMjEzNzUgM2YwYmRkNGFlNjg0MDBmNjQ4ODdjMDg2NmMzM2I2NWEwMThkYjVhOSBkZXNjci1icmFuY2gKKzIxMzc2IDc1NGRlYjg2ODIwZTVmNWNhOGNmYmE2MGYyNGYyYTM5OTUwYzA2YmQgZGVzY3ItYnJhbmNoCisyMTM3NyA2Y2EzZGQ4MmNiMDdlZDQzNTVhYjViMjMyMmRhYWQ1OGI0ZDNmMDM3IGRlc2NyLWJyYW5jaAorMjEzNzggMDRhNjRkMmQ4YjJkMjA1Nzg5MDVjNTdkY2VjNDYzMGFkNDUyYjM1OCBkZXNjci1icmFuY2gKKzIxMzc5IDAyMjZkMDZlM2VmZjU5Mjc0OTBlYTdjZTY3NThjMDQ2YjlkNTc4ZmYgZGVzY3ItYnJhbmNoCisyMTM4MCA3ZWY2NjJhZWQ5ZGU0ZTBhNjdhNTljYzI0MzhjNjFhNzc1NzM1ODcwIGRlc2NyLWJyYW5jaAorMjEzODEgZjczMDI5YzcxYjBkZjA5ZWUwNzk1NTkyMTFiNGE0MDZhOTRlZjc3OSBkZXNjci1icmFuY2gKKzIxMzgyIDJkMGI2OWE2N2Y2OTRjNjViMzliNWYzN2UyZTBmMDliMjA4MTQzMDYgZGVzY3ItYnJhbmNoCisyMTM4MyA0MDVlYWJhMzZiMmZjODYyZWMyYmE3YTRkN2VhZjllYjI4Y2NhMjJmIGRlc2NyLWJyYW5jaAorMjEzODQgMjc4MzliYTdlYzIyZWQ0OWUyYzMxNGY5MTYzYWJkNjlhNTk0YmM1MyBkZXNjci1icmFuY2gKKzIxMzg1IDg1ZGI5ODlmNmE3M2M2Y2NjNTZhYzQzOWRiNjhiNGU4ZjVhOTMyYTIgbGVnYWN5LXRydW5rCisyMTM4NiA2YTE2MzAxMTc4MDUxNjdlYWI5YzA4ZDQ2Y2QzYTlmOTc0NTA4OGY3IGxlZ2FjeS10cnVuaworMjEzODcgNzk0NTgyZmMwNjIzZTNiOTU4NzdhZDhmZDVkZWFmMTUzNTIxY2IzMCBsZWdhY3ktdHJ1bmsKKzIxMzg4IGMyYTYwZGU5MWQyYzcxMzgxM2YzY2QyMjEyNzVlZThlMDI0ZWIwNTcgbGVnYWN5LXRydW5rCisyMTM4OSBlZGFkZmEyODM1OWY4NTI1MzAwZGFjYjQzMDQ0MDFhMGZkMjg5NDE3IGRlc2NyLWJyYW5jaAorMjEzOTAgNTg0NjkyMDJlZThkOGIxYjVjOTdkMWQ1ZDg1YmFlNmY0MDEyYWJjZiBkZXNjci1icmFuY2gKKzIxMzkxIGZlNjMzNTM0ZjQ0Nzg2Mzc1NDdhMjc0NzhiOWMzNjk2NjYzNTIxMzAgZGVzY3ItYnJhbmNoCisyMTM5MiBhMTJlYzg4NzY1MTVjMzdlNzYzOTZiNmFjNTdhYzU3NmQ3ZjQyZjk5IGRlc2NyLWJyYW5jaAorMjEzOTMgNTY2OGE4NTUwYmU0NTQ1YjRiZTRkMjE1M2NkODllMjk3M2JlNjk4MCBsZWdhY3ktdHJ1bmsKKzIxMzk0IGU5MGZjMzRkNzNkMDBmYTIyYTFiNTJhYWY1OTVhZDMzOTlhMjY4NjIgcmVsZWFzZTIxLW1haW50CisyMTM5NSBlOGRjNzMzODY3MDYyYTE0OWFhMTI3NzMyODBmOTU3YWI3NzRiYjM5IHJlbGVhc2UyMS1tYWludAorMjEzOTYgMGZkYzI3NzllOGQ0M2M0Y2Q3ZWZjMmIyNmI2YWNmZTMyOTlmNzBiMiBkZXNjci1icmFuY2gKKzIxMzk3IDhkYjk0MzY3ZmFlMWM4MDgwNzBiMWMxZmMyMTE5ZjU0MDA3YjU5ODUgZGVzY3ItYnJhbmNoCisyMTM5OCBiM2JhMGY0OGFkYzRjZTgwNWI1MTZlM2RmY2RmODdmYmNiMTQ0N2RkIGRlc2NyLWJyYW5jaAorMjEzOTkgMTE2NjAxMWE5Y2ZjYTk4MmUwMzAyODNkNTJmNjIzMmZlOWNiYmUwMSBkZXNjci1icmFuY2gKKzIxNDAwIGY3MGIyZDYzZjMwOWE4ZTI2MTFmNjUxYWI4MjdkYjY0OGEzNzY0MTAgbGVnYWN5LXRydW5rCisyMTQwMSBkMzJmZTQ4ZmJiOTY4ZDcwYzEwMGU2ZGViN2MyZWYzODc1MjkyYjIwIHJlbGVhc2UyMS1tYWludAorMjE0MDIgMjY0ZWQ1NWRlYzZlMWFkMzU0MTljZjlkZDBiYjEzNjQ2YjM0MDVhNyByZWxlYXNlMjEtbWFpbnQKKzIxNDAzIDQ0OWRhODU3ZGNlNTk0NDFhOTFmZDI3ZTIwZjdlMzNmZGRmNjU2ZjkgbGVnYWN5LXRydW5rCisyMTQwNCBjMDI5Yjc0MzMyZDJhYWZjYmJjMGNkODA3MWQ1NDJmYjZiMTE1YzU1IGRlc2NyLWJyYW5jaAorMjE0MDUgZDJjOTk2M2U0MjkxNTU1NjgxN2MxYmRjNmI2ZWI1OWQ3YTlkYTZjYSBkZXNjci1icmFuY2gKKzIxNDA2IDFkYTcyNGNlZTIyZDNmNjU1OWNkYmEwMWQxMjdlZGU5MWMwZDNiNzggZGVzY3ItYnJhbmNoCisyMTQwNyA1YTc4NDEzNDBkYzdjMWM5MzBkMWQ1OTg0MzVmMjI5Y2I4MjllODQ0IGRlc2NyLWJyYW5jaAorMjE0MDggMDhhMmMyZTc5NGVmZGU2Yzk0MWM4YTYxNTNmMTlmZjkxMWNiMzZlZiBkZXNjci1icmFuY2gKKzIxNDA5IDAyMDBjZDIyNDkyZWMyNjA5Y2YxNGZkNDA2MzA0MjM5OGNkMTJmZjIgbGVnYWN5LXRydW5rCisyMTQxMCA0YmFiOWVjZjNlMDVlMmY2NjhmZjBiZmZiMGZlZjEwNmE3YTlmYzU2IHJlbGVhc2UyMS1tYWludAorMjE0MTEgMTczMzA0MjljZGZlYjU4MDhiMDgxYjgzY2VlYjk3N2YyYzJmNDM1MSByZWxlYXNlMjEtbWFpbnQKKzIxNDEyIDc5OGI1ZTZiNDkxNWYwZGU5NGVhNjI4MzE5OTMxM2FhYjYzYTQyYmQgbGVnYWN5LXRydW5rCisyMTQxMyA1NTk2NTA0YWQ0OWFmYjBhNWNmYTAzNzU2N2M5ZWY2OWE0NWFjZjI2IGRlc2NyLWJyYW5jaAorMjE0MTQgZTU4Nzk5ZWVmYTM5NzgxYzAxYjg4ZGJjYWI5MjA0MTA3OWViOTFhNyBkZXNjci1icmFuY2gKKzIxNDE1IDI3Yjg2NjUxNGM5ZWJkY2ZkMmEwNjgwODUwN2U4NDM0MDA0MjQyMDIgbGVnYWN5LXRydW5rCisyMTQxNiAyNTEzYmMxZGIxMmZlZGFhNDMwOTgyYzI4ZjFiNTE4ZTU1MDVmOTRlIHJlbGVhc2UyMS1tYWludAorMjE0MTcgNTIwZTFmNDAxMDFhYTAxZDM4MWI0MjA4MDZhNDEzMzM1OTVmZDFiNiBkZXNjci1icmFuY2gKKzIxNDE4IDg5MzdkMjM0YjJhOGQ2NTJmYzk1YjYwM2UzYTUzZjI1NTA4NGQxYzkgZGVzY3ItYnJhbmNoCisyMTQxOSBjNjcyM2NkNTU0NThiMjQ4ZGE3ODBjNTFjMTJjNzEzYTA0Zjc4Y2FjIGRlc2NyLWJyYW5jaAorMjE0MjAgNjUwZjcwMDRlNmQzOWFhMzM2Mjc0NmQzZmE2ZDQwNDU0MTI3MWZmYyBkZXNjci1icmFuY2gKKzIxNDIxIDIzYmIzZjQ5Y2I5NDI0OTgzYmRiYWFmYzM5YmE5YTNmZjg4M2JkMDYgZGVzY3ItYnJhbmNoCisyMTQyMiA0NGE4N2MzMDBmMmJhNGYzYTBmODRjYjQzYTE4MjIxMzY2MzdiNjgxIGxlZ2FjeS10cnVuaworMjE0MjMgM2VkYTYyMzFlMWMyNTg0OTA4YTQ4MTQxYTBlMTdlMmZjODgyMmQzNCBsZWdhY3ktdHJ1bmsKKzIxNDI0IGQyM2Y5OTMxYjAzMzU5YTg1ZmNmMmMyOTdjOGUzM2ZmODIwODQ0NjcgZGVzY3ItYnJhbmNoCisyMTQyNSA0ZTI2YjQxZDJmM2RiY2I2ZTc0YzQ0ODgwYzcyNDVhYzJlZWM3YjFiIGRlc2NyLWJyYW5jaAorMjE0MjYgOWRlNjU2MDA0MjBiNjA3MTgzNDFmYmI5Y2FjMzRlNzM2MmY2N2Q2YSBkZXNjci1icmFuY2gKKzIxNDI3IDljNThkZGM0NzE5NWFkODMzMTE4MWU5ZTk3MjRkNjMwZmI2YTYwYmMgbGVnYWN5LXRydW5rCisyMTQyOCBiZTA5NmJiNGUzZjIyN2E3NDQ0MzNhMzQyYjJkMzVkZDY3NDUzZTlmIGxlZ2FjeS10cnVuaworMjE0MjkgOTg1NTZjZGZlNzE2OTRlYjVjMGVhOGI3MDMwNmVjY2IwMDljMTAyNSBsZWdhY3ktdHJ1bmsKKzIxNDMwIGE4MGUwZDM5ZjEwYjI3ZmE4YWQ0ZTk1MWM2MGRhM2QwMjkyYWI0NDQgbGVnYWN5LXRydW5rCisyMTQzMSBmYTNhNDIwN2Q5NTcwODQ3NTJjZDVhZDNkM2NmOTJjNTEwMDU5ODEzIHJlbGVhc2UyMS1tYWludAorMjE0MzIgNTY2NTJlNjg0NzM3YjlkYjJmYzUyZTBkZTBkZjUzZmJjMmZhY2M1YyBsZWdhY3ktdHJ1bmsKKzIxNDMzIDkwMzIxMjYxMjc3MTI5MGE0OWY2MDdiNjYyNGIyNWE0ZjJjZDk3N2EgbGVnYWN5LXRydW5rCisyMTQzNCAxMTczNzFhZjU0NGIwOTBhNTQwOGIzMDAyYjVhNzI5YmZlNGJlZGQ3IHJlbGVhc2UyMS1tYWludAorMjE0MzUgY2FhOGZmYzNjZDFjNzBlMDdiNzY3ZjQ0MmU1MTZlMTAyM2JmNTdlNSByZWxlYXNlMjEtbWFpbnQKKzIxNDM2IDc3ZjQxNjM4NzkyMmVhNzgxOGIyNjQ1ZmE4MzNiYTJmZDE4NDNjNGYgbGVnYWN5LXRydW5rCisyMTQzNyBjMDI4ODY3MDIzMGU5MzI1YmY0NjNlNDZlMjkzNzhlYjAwNzljM2JlIGxlZ2FjeS10cnVuaworMjE0MzggMmUxYWRiZTg5ZTRhNTg0NDFlYjdlMTI5YmJhYzgyNTBlZjYyNjVjYyBsZWdhY3ktdHJ1bmsKKzIxNDM5IDgxMTg0MmRhY2QzOWUxZTljNzk5MWUxYjlmNDA1N2RiY2YzMGY2NTggcmVsZWFzZTIxLW1haW50CisyMTQ0MCA0NTFjMGFiYmY4YTlmNTQ1MjhlMWMwYmQ5NWYxMTVkNTRjYzM3YWM3IGxlZ2FjeS10cnVuaworMjE0NDEgZWFhYmNhMTMxNzRlMDNmYzRkZjY5ZWEyYjJjOWNiNWE5MzIwMWNiNCBsZWdhY3ktdHJ1bmsKKzIxNDQyIDNmZGUxZDIwMzMxZWFmNjFkZjEwZDAzMjQyYWY1NzNiMTZmZDEyZWUgZGVzY3ItYnJhbmNoCisyMTQ0MyA0NzJlZjY4MzE4YThiZjhmZDI3MTkyMDNhYzkzMjNlZDlhODE1NDFjIGxlZ2FjeS10cnVuaworMjE0NDQgNGQzN2I3MmFlMmQyNjA0MDA1NjZjNmMxMjEwNTU4NDQxNDNkZjQwNSBkZXNjci1icmFuY2gKKzIxNDQ1IGYyNGVjMjNjZDQ3ZWRmZjc2YjQyZDJiNjhhZjI2OWM4MDgxZGUzNDYgbGVnYWN5LXRydW5rCisyMTQ0NiBjNzZkYWQwNjQ2MWI4ODg0MDIwNzEwM2FmYjNkZDg3YTcyZWE1MjkwIGxlZ2FjeS10cnVuaworMjE0NDcgZmJlMGRlZDVlNGMxYmYwMjkxZTQ3ZGIzOWMyNGMyNTNjZDQ3YjE5YSByZWxlYXNlMjEtbWFpbnQKKzIxNDQ4IGZiOTZhNzhlNzJhYzZmNTQ4N2QyODNjNjUzYjQ1NzMyN2I4ZWQ5NTQgZGVzY3ItYnJhbmNoCisyMTQ0OSA3NjQ0OTJhOGY2YTc1OTM3M2U2YWJlMTM0YzVjOWUxNTVhMjA3ODdjIGRlc2NyLWJyYW5jaAorMjE0NTAgZTNlYWMyMWUxZDMwNGJjMzc2YzM3MWQ0OWZlNmUzMTE2OGI2NzVkZSBkZXNjci1icmFuY2gKKzIxNDUxIDlkNmQxMTE2YmYyY2NlOGM0MzI5ZDkwOWFlNTg2NmJkNGFiZjE3YWIgZGVzY3ItYnJhbmNoCisyMTQ1MiAxNjk0YWI4N2YxZDdjMzMzOTVlOTkzYWJkYmFlYjI2MmI4NDcyMTVjIGRlc2NyLWJyYW5jaAorMjE0NTMgZjM5OWU2YmM1MGFmZDVmM2RlNDIyNGUxODFkNTNkNzRmNGE0NTYxMCBkZXNjci1icmFuY2gKKzIxNDU0IDAxYjkyMGVhNTJmMTZmZGVkNDU3OTA3NWI1OWM3NmY4NzZmYTE3ZjkgZGVzY3ItYnJhbmNoCisyMTQ1NSAyZTMxNjY1YmJkYzI1NTMxNDg5ZTA2M2I1NWM5YjJhNjljYzkwMDQwIGRlc2NyLWJyYW5jaAorMjE0NTYgYmZlZDIxMjNiMTRkN2M0NTA2Nzk2ZTBjYjI5ODMxMmVmZDg3Mzk5MCBkZXNjci1icmFuY2gKKzIxNDU3IDBiZDY3YzhhOTY5ZTA1MThkYTk4OTRjMjdmYTBkYzBmMjhiNjM5MDMgbGVnYWN5LXRydW5rCisyMTQ1OCBiNjFmM2I2Y2UxZmY5MGQyNDNjODZlYjEzZjcyNGRkNDY0NTQyMDM3IGxlZ2FjeS10cnVuaworMjE0NTkgM2IyOTVjZTI3MDVmNjdhYzZmMTJiNTRhYzJkZDYxMmVjMWE2NzkxMSBsZWdhY3ktdHJ1bmsKKzIxNDYwIGUxMDBjMDVkNDQ0ZWU5MDE2NWNjOWQzY2YwOWJhZWQzZTkwZmUxNDQgZGVzY3ItYnJhbmNoCisyMTQ2MSAyNGEwZjg0YWQ3NDY1ZTdiMjEzMGNlZjMyNGI0MGRkYjU3YjEyMDVhIGRlc2NyLWJyYW5jaAorMjE0NjIgMzM4YWFhMTRjNGU1YWVlYmUzMWE3ZmFmODgzNmZhMTQ5YzBlOGRhZSBkZXNjci1icmFuY2gKKzIxNDYzIGIyMWU3MGM2ZDA5ZDRhMzAzN2Y1OTI1OGRmZTUwOGE4MTllZmZlZTEgZGVzY3ItYnJhbmNoCisyMTQ2NCA2MzBjODZkMzMzMGJkNDk3Y2E2MmU0N2ViNWYwNzk3ZjYyZjk3MTc5IGxlZ2FjeS10cnVuaworMjE0NjUgYmFmMDRjZGY2NWEzMDBkZTZhNDQ2M2UyZTJkYmEwMTE2MTFiMWViNyBsZWdhY3ktdHJ1bmsKKzIxNDY3IGZkYzNiMTYyMTVjNzVmMzJkYTJkMDczZGUyYjI5ZmE3YjFiNWI3NzggcmVsZWFzZTIxLW1haW50CisyMTQ2OCBmNjkyNWFkMmQxOTExYjM4ZTg3MjdlOTIzYjBkNDM1YjcyNGUxNzMyIGxlZ2FjeS10cnVuaworMjE0NjkgNDBkMTlmOTA3ZTEyMDE1NDYwMDhlOTU5OWQyMjI1MzA4NmYwNWE1MSBsZWdhY3ktdHJ1bmsKKzIxNDcwIGQxYzYwYjA3MjE3ZjhjNjJkZjY0OGE1ZGE2MWZjZGMzMTU2NmY4YTIgbGVnYWN5LXRydW5rCisyMTQ3MSBkYzc0ODIzYjQ5ZWE1NzBkZWM0ZDk5YWZkNmEyN2ExZDIyZjgzOWM3IGxlZ2FjeS10cnVuaworMjE0NzIgZjZiM2E3YTkwZDgzZmMwYmEwMjRlMDNhMGMxYjNkNTNmYjliYTIwZSBsZWdhY3ktdHJ1bmsKKzIxNDczIDA4MDEwMDY0NzM5NmM4ZDAzNGZjNmUzMDZkNzdmNDhlMGNiNTUxYmQgbGVnYWN5LXRydW5rCisyMTQ3NCA5NWUzOTQ3Y2EzY2VhMTk0NTA4NzhmZDhiNWQ3NWQ4NjZkNDQxNWRjIGxlZ2FjeS10cnVuaworMjE0NzUgODM0NzkyNTIzMDk0ODkxMjJmOGU4OTAyOTk1ZjRlOWE2Y2RlYjVkMyBsZWdhY3ktdHJ1bmsKKzIxNDc2IDhjZGZmNTQ1Y2JkZTUwZTI5NTZmZjBlMWY2NmQzNTZkYTMxNWUxODYgbGVnYWN5LXRydW5rCisyMTQ3NyA5YzZhOGRjZDcyMmQ1NTUzMTA2YWFhYzlmNTc3Yzc5ZTliZTJkMmEwIGxlZ2FjeS10cnVuaworMjE0NzggMDYzMzJiM2M0MzM1ZDQzMzAwYjJkNDQyZTJlNzE3MjBhM2ZjY2ZmMyBsZWdhY3ktdHJ1bmsKKzIxNDc5IDYxMzVjMTJlODQ0ODY3MmIxM2RjNGJjOGY0YjhiMGZlM2QzMzU2YjUgbGVnYWN5LXRydW5rCisyMTQ4MCAxZTAyZTIwMTRlMzZhNDA5ZDQ2NTZjY2JjZTdkYzVlZDVlYWY4ZDBkIGxlZ2FjeS10cnVuaworMjE0ODEgYWFkZDk5ODMwNTMxYWY1MDY1MzhhMWQ5ZTA5OGE1Mzg1MGE5MzA4MCBsZWdhY3ktdHJ1bmsKKzIxNDgyIDc0YjNjNGUzZjQ4NjExMGE0OGFhM2ExYTg3YjMyYzMxYTc1MDE4NzYgbGVnYWN5LXRydW5rCisyMTQ4MyBmODBmNmU5MjI4ZGU2ZGU0M2YwMGE5ZGQ2ZTY4YzY0YzY2NTIzNmQxIGxlZ2FjeS10cnVuaworMjE0ODQgMTE2NTMyMTQxYWRlZTM4MDQzODQzODgwNDgxNTc1ZmYxZmRmOTMwMiBsZWdhY3ktdHJ1bmsKKzIxNDg1IDFkMGQzZTZhMzIwMWEwMTM2NzVmNWQ0YzJkNDE3ZjFlM2U4MTU2YzMgbGVnYWN5LXRydW5rCisyMTQ4NiA3MjZlNWYyY2QzNmVkMGQ3ZGViYTgzOTBlOGU5NDY5ZDhjNDc4Y2Y3IGRlc2NyLWJyYW5jaAorMjE0ODcgN2RlNWMzNzYyMzJjYjRhMzgwNjYxOTdjYzUwMzllYzMxYzVjYjY3NSBsZWdhY3ktdHJ1bmsKKzIxNDg4IDgyNGQ2MTExM2E3MTIyMGNjOTMzY2YyZjg1ZTg0M2Q1NTgzZTgzNzMgbGVnYWN5LXRydW5rCisyMTQ4OSBjODY2MjU0M2NhNmE2ODVkNDE2N2U4ZGM3Y2RjM2QwMDJkZmVjMzYxIHJlbGVhc2UyMS1tYWludAorMjE0OTAgY2FkYzE4OTQyYTM0NDU3OTExZmVkNjNiZjg4MzY5OWI2Mzc4YWE3NyBsZWdhY3ktdHJ1bmsKKzIxNDkxIDdmODNlZTM3OTdhMjY0NjZkZmY0Yzk5M2Y1NWYwNzg1M2MxMDg5ZjkgbGVnYWN5LXRydW5rCisyMTQ5MiA3YjAzYzE1MDc1NGEwOWQ0MmZjOWNhNWY4NjAzZDFjZjQyMTRhMzFmIGxlZ2FjeS10cnVuaworMjE0OTQgYWZkYTVmZmY1MDI3MWJkNDJjNGMwNmNmMTlhZDU1YjIzYzJhNTkzMiByZWxlYXNlMjEtbWFpbnQKKzIxNDk1IDgyZjk1MjRjYzg0NDEyYWFiNDEzMjQwNzg3NTYwNTljMjAwMTg1YzggZGVzY3ItYnJhbmNoCisyMTQ5NiBiNGFmMDkxZTMxYzRhNDYxNzNmNGNmNDcyMjk0M2Y1OWU5N2IwZDk2IGRlc2NyLWJyYW5jaAorMjE0OTcgMmU2ZmI2ZTY0MjhmYTA5N2RjZjVlMmI2OGI1OTk5OWMwOThiMDdhNCBkZXNjci1icmFuY2gKKzIxNDk4IGQ5NGY4YjMyMTNlOGNkZmVkZTU5NTA1MzBmYjA2NDExZGM0ZjdjZjkgZGVzY3ItYnJhbmNoCisyMTQ5OSBhNDU3NzYyNzBjOGUxMWFjYzgyOGE4NjRkOTllYzkyMzBjZGZiYWIzIGRlc2NyLWJyYW5jaAorMjE1MDAgMjMyMDhmMzAyN2Y2ODMxYTNjYjk0ODNlYWQxODgxYjlhODhkMzZhMiBkZXNjci1icmFuY2gKKzIxNTAxIGEzMTg5MWNiYWQ0NDI3YjQ4NzJjODJhY2MxMTYyNGFlMDAwMGE0YjggZGVzY3ItYnJhbmNoCisyMTUwMiA2OWI4OGQzNGU3MjJkZTlmMjg2NzgwMWExNzZjN2UyNDJmNjYzNjkwIGRlc2NyLWJyYW5jaAorMjE1MDMgNDdiYjA2MDIzZTgwNTkzYTk0Nzg4Y2QyYzcyNDVjNTYxZWI2NTIxZSBsZWdhY3ktdHJ1bmsKKzIxNTA0IGY0MDMyYmVkNDcwZjM4ZjJkZmYwODIyMGMwM2UxYmQ2OGJkZjg1ZTcgZGVzY3ItYnJhbmNoCisyMTUwNSBjNWU0NjYzNGM3ZDk3OGU0NzFiZTg3ZTRhODUyYjE2Y2UxNmIwY2Q2IGRlc2NyLWJyYW5jaAorMjE1MDYgNTNkNGU3MmJiNDQzYjBiMzU4YjgxMDZjNTI0Yjg3ZjUyMzY2N2UwOSBkZXNjci1icmFuY2gKKzIxNTA3IGZmODFlNzM1ZTE4NGZlMzUxZWRmOWY3M2RmYWRkMjYyNDVmOTJlYjcgZGVzY3ItYnJhbmNoCisyMTUwOCAyMzkyNzY2NGM3Mjk1ZTg2ZWY2M2FhM2UzMzc4Y2FkMDIyYzViMmE3IGRlc2NyLWJyYW5jaAorMjE1MDkgZWI4MGI0OWM3YjE1ZmZjNmQ2ZGE1Zjg3MTE0YWZhMmIwZDAwZTIzOCBkZXNjci1icmFuY2gKKzIxNTEwIGU2ZGVmZTI0Y2U4NTU2NWQ4ZDAwOGYxOWUwMTEwNzRhMzQ2NzA5MGUgbGVnYWN5LXRydW5rCisyMTUxMSBiNjg5NDBjZjIwMTcyMTA0YjhhM2NiMDZjMjU3YjA2YTY1OTNiN2EwIHJlbGVhc2UyMS1tYWludAorMjE1MTIgMTE2NWQzZjdlYWYzY2E1ZmQwNGU3ZGRhMjY4ZmYxY2VkZWUzNTMwZCBsZWdhY3ktdHJ1bmsKKzIxNTEzIDk1MTI3NDdhZmU5ZTk0MmE3OWM0NDljY2M3MTZhOTgyZjY0MGY4YjcgcmVsZWFzZTIxLW1haW50CisyMTUxNCA1NjgyZjk2ZjI1ZGUyNDM4OWExYTlkZTgwZjZhNGFjN2RiZmQ2ZDQxIGxlZ2FjeS10cnVuaworMjE1MTUgMjgzNmIyNjg2MTgwNmM2OTU1NTRhMGE5NDBkMmFlZTM5OGI3MjQ5MCBsZWdhY3ktdHJ1bmsKKzIxNTE2IGZjMTY4MGZjOWQyMzY4OWNjMjQxM2VlZDc4ZTNhN2Y5Y2NhYWU4OTkgcmVsZWFzZTIxLW1haW50CisyMTUxOCBiY2JiYzUxZjBiYjNkOTZjYmEzYzY1YzU0NWZhMmMzZGFhZjVmZDI5IGRlc2NyLWJyYW5jaAorMjE1MTkgYjBmOTg0NzU5MTdkNGU1ZTEwMDRhYjVjMjViNDliMTU3Yjg2ZjAwNSBkZXNjci1icmFuY2gKKzIxNTIwIDM3ZDlkMmE3Y2E1MGRmYWJjOWMwYjI4MjU5YTFlNzgzNDBhZTExYmMgZGVzY3ItYnJhbmNoCisyMTUyMSBlZWIyZTc3YzViYWQyYWEyZDZjOWQwYWUwMTVkOTk1NjM2NmEzNjE0IGxlZ2FjeS10cnVuaworMjE1MjIgN2FiMDlmYmI4NjlhMGU1Yzc5ZmYzOGQ0ZGU0NzhlYzYxNmExMWM1ZiBkZXNjci1icmFuY2gKKzIxNTIzIGEyOWJlZjQ1N2VkOGYwMmJjY2M1MDU0NjUwODg0MDg3ZTJhOWIwZjEgbGVnYWN5LXRydW5rCisyMTUyNCBjMWU0MTNlZjk4MTc3NjUxNGNkNzZkNmVmZjJhOGU0MDM5MTdmMDkyIGxlZ2FjeS10cnVuaworMjE1MjUgZGZjYzAzOGMyZDRjYTY5OThmZTE0YzQzOGIwNzA5MWU4ZGUxZTZjNSBsZWdhY3ktdHJ1bmsKKzIxNTI2IGQ4NDE0ZjUxZDRmNThlZjc5YzM2YmRjYzM0MTc2NmNhOTNkNzY2MzQgbGVnYWN5LXRydW5rCisyMTUyNyAzM2I0MzU3YWViYjhjM2IxYjJiYjMzYzk2MzdmZGMzMjBmYzI0OTZhIGxlZ2FjeS10cnVuaworMjE1MjggNGU1ZTk3N2JkM2UyYTc0MGYyNTQzMTk2ZmNmNGViYjRkN2NjNzkxMyBsZWdhY3ktdHJ1bmsKKzIxNTI5IDA5MjM1YmU3NDY0OTM3NTE4NjExMWI2MzAwODRjYTZmZTNmMDM5OWQgbGVnYWN5LXRydW5rCisyMTUzMCBkNTZlY2FlNTdlMGMyNTI5M2Q5ZTY2Nzk2ZDFkOWFiY2Q5NTkxMjBiIGxlZ2FjeS10cnVuaworMjE1MzEgYjZjZWJiZWIwN2QxYjI5MjI0ZWE2YmU0MDZlMmVkZjY4M2E0YWRiYSBsZWdhY3ktdHJ1bmsKKzIxNTMyIGY4M2JkZDA3NTM2MWIxZjk4YTI1MzQxMjBmNDQyODA2MzU4MzA0NWEgZGVzY3ItYnJhbmNoCisyMTUzMyA5ZjAxM2QxM2EyOGIxZGFmMTg1ZjI5ZWM1YzFiNWE5YmZiZGVmZWRiIGRlc2NyLWJyYW5jaAorMjE1MzQgYjQ0MTFkZTAxNjYyZjdmOTI0NThmM2Y0OGJkNDUyOTk2MDFmOGVhZCBsZWdhY3ktdHJ1bmsKKzIxNTM1IDc2MzYwYWZkYjk3MDI3ZjAzZmFmNjY5NzJlMzU2OTA2YzgyNjBiMmEgZGVzY3ItYnJhbmNoCisyMTUzNiBmYTFlODhlYjE5OTRhNmJkZDJiMDFkMGJkOTFjYzUyMTdlYTZiNDQ4IGRlc2NyLWJyYW5jaAorMjE1MzcgMTQxN2NmNDcwYWU5ZTVkZjQ3MTg5ZTU2NjhlMmE3YjgxZTIwMDE4ZSBkZXNjci1icmFuY2gKKzIxNTM4IGQyZWIyMzYzNmNjNjI3ZWM5OTU1MmRmNDgwZWQ5M2Q2MzdkM2JmNjUgZGVzY3ItYnJhbmNoCisyMTUzOSA0NjgyNWVkMjM1MjhhMmMzYmEwMGJmZGU5MjJlYzc5OGNkNWExMTIwIGxlZ2FjeS10cnVuaworMjE1NDAgZjMxNWY1Njc0Yjk1ZjYyYmE2MzI5MjZhODkyZDBlZjFhMjc5NTFkNiBsZWdhY3ktdHJ1bmsKKzIxNTQxIGE5NzMzNDk3MWE4MTg2YjRhNzljNDQ4MDg2ZDE2MGFlMTgzYmZhOGUgbGVnYWN5LXRydW5rCisyMTU0MiAyZmQxMzc3ZWM0OGMwZDJiMWE2YjNjMTMwYjc5MzU4YWM5NzM3ZjExIGxlZ2FjeS10cnVuaworMjE1NDMgYTgzZmY3NzM5OTkyOWY1Y2ZmY2RhYjEzZWYwYmQ5ZmY3NzFlNjgwMSBsZWdhY3ktdHJ1bmsKKzIxNTQ0IDZhNWVmMTk5NDE1MzZlMWJkNGQyOTU1OWUzZGM1ZTRlNGIxYjkyZTIgbGVnYWN5LXRydW5rCisyMTU0NSA5OWM4YjViMGM4OTYzODQ1OGFiN2JiNjU4ODMzNWZjZmM4NzY5YWE1IGxlZ2FjeS10cnVuaworMjE1NDYgOWMzNTRlNjlhNDg5ZTg1OTFiYmM2ZTUyMWFhMDhmZjIzZDllNDljMCBsZWdhY3ktdHJ1bmsKKzIxNTQ3IDBiNDA2MWVlYzY4ZTAzOThjMGJiYzNmNWJkYjVmN2MxOGM4ZWNkNTUgbGVnYWN5LXRydW5rCisyMTU0OCA0NTkxNzMyMzc5MTUwM2Q4Y2E3Njk3MDZhYTA0ZTU1ZDhkNGY0OTE3IGxlZ2FjeS10cnVuaworMjE1NDkgNzFmMTYxZThhMWQ3MTY4NjdlOGQ4MTFlMjdkMWExYzg2NWFlZjY5MCBsZWdhY3ktdHJ1bmsKKzIxNTUwIDQwZTBmNWEzMzJlOTBhNjZhZTA0MGRkYWNiZGI0ZjFjNDhiOTMyZWQgZGVzY3ItYnJhbmNoCisyMTU1MSBkOTA1MmNkOWUwYTc2M2UxYzE5NzQ2YTkzOGFhZWVjYmIzZDExYjU1IGRlc2NyLWJyYW5jaAorMjE1NTIgZjA0YTFkZGQ3NDFhMzQ4NjU0ZWI3MDM5NzJjYmUxZTk3M2ZlM2NlMCBkZXNjci1icmFuY2gKKzIxNTUzIGJhOGE1NjJiZTM4MzU4Y2Y1ZDRlOTEyMzA0Y2RlMGI5ZDg2NmI0MTYgZGVzY3ItYnJhbmNoCisyMTU1NCA2YTVmZTFhOTQzY2NkNWMxNWQ1NWRlZTAwZjZlNzc1ZWRhYmY3MTA0IGRlc2NyLWJyYW5jaAorMjE1NTUgZWFjYjc4ZDljYjhlZGIwY2NmN2FiZmU0NTlhOTA5NDIzMjYyYmM1ZiBkZXNjci1icmFuY2gKKzIxNTU2IDY2MzcwMTZkZjZlMjhmNjZmOTQyNmYxZWFjMjA3ZmU1MjIzYzkyNDAgZGVzY3ItYnJhbmNoCisyMTU1NyAxNzNiYzcyNGQxMTBlMjk4MDM2MWYzZGY4MTk4YzY0NDA4ZWQyNjlhIGRlc2NyLWJyYW5jaAorMjE1NTggM2RhZTI1MWI1ZGY1YTMyNzVkY2FmNzYxNTk5YmExMWQyYThkMjM0OSBkZXNjci1icmFuY2gKKzIxNTU5IDVjOTc2OTAxNjczZTVkMDZmNDJkNTQ5YWQ2MTQyMDQxZjE2M2M2ZTMgbGVnYWN5LXRydW5rCisyMTU2MCBmN2RlOWUwNDg3Y2YxNGMyZTE0NDYyNDU0ZTFkYjRiMDFmMDZiNmIwIGRlc2NyLWJyYW5jaAorMjE1NjEgODhlZTk2NjVkZTA1NDNkYmZmNjNlYjMwNjVjZTE2NTM3MDRhN2FiOSBkZXNjci1icmFuY2gKKzIxNTYyIGY3ZjA3NmJmY2FlOWM4YzJkMjhlMzlmNmQ3MjBlY2I5MTI3OTUyYmUgbGVnYWN5LXRydW5rCisyMTU2MyBiNjZhNjUyZTNjM2ZlN2I4YTcxZjAzZWQ0NzJhNTEyM2NkYzFmZGViIGRlc2NyLWJyYW5jaAorMjE1NjQgYWE3NmMxN2E1ZjA4Y2Q5OTlmODg5MTg4YWI4N2M3ZGExMDYwY2RiZCBkZXNjci1icmFuY2gKKzIxNTY1IGRlODU2MGM2OGM2ZmRjZDY2NzFhNTY0OGZkOWVjOWUwYjlmYjU0NGQgZGVzY3ItYnJhbmNoCisyMTU2NiBlOGM2NjFkZjMwMzgxNGFlZDljY2Y2ODM3NTE2Y2M4YmFlNTY1NzNhIGRlc2NyLWJyYW5jaAorMjE1NjcgYzE1YWNmMmUwMTEwOGNhZDNiZjIzNjNmYTUyYzNkNTNjNjZkNWUyZCBkZXNjci1icmFuY2gKKzIxNTY4IGViMDRhMDU2NGE4MTg2MDdiMTA5ZDc0YjA4ZjQ3NDRhMjM2OGMyZGYgbGVnYWN5LXRydW5rCisyMTU2OSA5NjUzMjcyZjAzNmY0MGEzMzY4MWVlZTE3NTI2NGRkODExYWQ1ZmQ5IGxlZ2FjeS10cnVuaworMjE1NzAgNjg0YjAwOTkwMzJkNDYyYzhhMmEzYWU5YjYzMzM1NjBlYTAxNTlhYyByZWxlYXNlMjEtbWFpbnQKKzIxNTcxIDA1YzQ5MzQ2YjY4YjhkZjZlOTA2MmFiMjlkZTE0MmJjYTRlZjg3MmIgbGVnYWN5LXRydW5rCisyMTU3MiAzMTExOWQwYTE4ZTZmYzI5M2YwOThkOWZmMTM4N2Q2OGRiMGVjMDk0IGxlZ2FjeS10cnVuaworMjE1NzMgMTAzMDI4NzI1MjUzYjM4N2Q3M2VlYjRlMjk1MGVlZDI2OWE2YTJhZiBsZWdhY3ktdHJ1bmsKKzIxNTc0IDUxYzUwMWM2ODYwOGM1M2FmMDY3ZDliYjFlYzZjM2FkYmMzMWU5ZDUgZGVzY3ItYnJhbmNoCisyMTU3NSA2NWM5Mjg3YWJmODViYTg4ZTAwOTdlNmYyOGRmZWFiOGYwOWI4YjM0IGxlZ2FjeS10cnVuaworMjE1NzYgZWU3YTg2Zjg3MzgzNWZjNTdiNmJkMTM3MjE2MDIzZDQxN2FiODlmZCBkZXNjci1icmFuY2gKKzIxNTc3IGE0ZmJjMmYwMTM5YTgyZDdlZDdiMmQ1NjhlNmE4YWEzZDY2MTk0YjQgbGVnYWN5LXRydW5rCisyMTU3OCA5YzA0ZTIzZjhkNDNiMzkxODZlMjM0NGE1ZGQyN2Q2MTYwZTQ1YmViIGxlZ2FjeS10cnVuaworMjE1NzkgZDQ1YWI3MTQ2YjM3Y2Y4NzY4ZDQwZmQ1OTdlZGI2OWQ5MWJkNTdkZSBsZWdhY3ktdHJ1bmsKKzIxNTgwIDZkYTg2MjMzOWEwZTk5ZGI1ZDk3ZTVkMzYxNDNhYjhlMzVjNjc3OTMgcmVsZWFzZTIxLW1haW50CisyMTU4MSAyOTMzYWU0OTIxNmYyNjM4MmMyYWY1MDI3YjlkYmY2ZDRlNjI0OTJmIGxlZ2FjeS10cnVuaworMjE1ODIgY2EyZWE3NWRmM2YyNTJiMDcyODg2MTM2YTMzYmZiODg2NTc5YjM2MiBsZWdhY3ktdHJ1bmsKKzIxNTgzIDk0NmI4MTZhZDVjYjhmZGY4M2Q3MjViY2JjNmMyODdkMmQ2ZjM5OWIgcmVsZWFzZTIxLW1haW50CisyMTU4NCA5YWQ0ZGI5N2UyZDliNmVkMjkxMDkzNzkxZWNiY2M5NDI3ODI3NjljIGxlZ2FjeS10cnVuaworMjE1ODUgZDRmYjk0MTUzYjMwODIwOWU1ZjliMGM3MTg5ODZmY2VmNTRmYzZkNCByZWxlYXNlMjEtbWFpbnQKKzIxNTg2IGZiY2NmMThhYTU3YmZlYjBjM2Q3ZmUwYTE3ZTQ4NDljMzA1N2EyZjUgcmVsZWFzZTIxLW1haW50CisyMTU4NyBhNzhmNGJkNTllMTBhMGIzZWYzZDNkZTMwZGVlYzg0MDQwMzY5YjM0IGRlc2NyLWJyYW5jaAorMjE1ODggYWJjNGEzYjdkMThlMDFjNzkxYjE4YWZmMDFkMDA3YjkwNDRhMmNkZiBkZXNjci1icmFuY2gKKzIxNTg5IDJmMWI0Y2RjYmIwNmM0NDIyMjliYjYyZmVkYTczNDY4NTk1YTU4ZTkgbGVnYWN5LXRydW5rCisyMTU5MCBlNzhhNTEyNjhjODFkZmM3NTcwN2ZiYjcwNGEyNDk5MjcwNzdjOGQ2IGxlZ2FjeS10cnVuaworMjE1OTEgOGMzODQ0OWRmNzQ2MDk0MTFjMTM0YTRiZGJiYjQwNzVjM2JlY2EwOSBkZXNjci1icmFuY2gKKzIxNTkyIGZlZTViNTcxN2RiYmI4OTBkNGY5NGFkN2RiMGRjM2VkOWJmM2NiNTIgbGVnYWN5LXRydW5rCisyMTU5MyBjNmQ4NjQ1ZDRjODg1ZmZmOTlhMDMyODliNmI4ZTRmZThkYWM1NjE5IGxlZ2FjeS10cnVuaworMjE1OTQgNzBhZjRhMTczYTk1NjRmMDg4MDllNjk2NzI3MDJmZDZlM2E3ZjljYiBsZWdhY3ktdHJ1bmsKKzIxNTk1IGNiMmVhZjQ1NzM4NmI3ODY5MDE0NDQ3ODdlNDUyN2Q2MDkyMGI1ODcgbGVnYWN5LXRydW5rCisyMTU5NiA2YjkzMWJmNmJkZjY3ZjliN2U4ODY5Mzg3YzBmNGU5NjZkOTBhODYyIGxlZ2FjeS10cnVuaworMjE1OTcgY2Y4MTQ5Y2VkY2NkMjFhZjJlZjZjNDI2MTI4NmM2ZTRkY2JkZWNmYiBsZWdhY3ktdHJ1bmsKKzIxNTk4IDAwOTM0ZDYyZTc4MTY3MjMyZGMzNWE4YjY5NTEyZmRlNmY1NWRlZWEgbGVnYWN5LXRydW5rCisyMTU5OSAzZGI5MjFmM2VkZTBiYTU1YzhiNjE5NmQ1Mjc0ZjQ5Y2JiMTdmMGFlIGxlZ2FjeS10cnVuaworMjE2MDAgZWQwZjBkOTY3NTBjZGU2NTY2NDk0ZTU2YWM4MTg0NDUwMWI3YWQwMSBsZWdhY3ktdHJ1bmsKKzIxNjAxIDkzOWJiYzUxY2QyMTkzZDJkYzIxZDM0NTQ1Njc4ODkzMjI3NzM0ZTIgbGVnYWN5LXRydW5rCisyMTYwMiBjMWE1ZTUxNzU5MDdiMTI2MWQ2NGI5NmE1YzJiY2QzYTM2ZTA4ZDQzIGxlZ2FjeS10cnVuaworMjE2MDMgY2RhMTYzODNiYzZiYWEyZWJkNzVlNGU5NGJlNWM3NTY5NzhjYzdjMiBkZXNjci1icmFuY2gKKzIxNjA0IDNiMTNiMjY5NWI3YTZiNzYwM2EyYmE0ZGQ3ZmRlOGFjY2NhZmYzZTcgZGVzY3ItYnJhbmNoCisyMTYwNSBiNzNlMWY0MjJlYThiZmFhM2IyNGM2MjdjYWRlNzYwMmI3ZGQyM2MzIHB5LWN2cy12ZW5kb3ItYnJhbmNoCisyMTYwNiA0MDRjNjBlMDAzNDQ3MDY3M2I5MTJjZTEyY2NjMGQxMGIwYmYyZjlmIHB5LWN2cy12ZW5kb3ItYnJhbmNoCisyMTYwOCA4ZDZiNGFjMDQ0MGI0YzBjMjE3N2VhZmMyZGIwYWRhNGMyMzFmODg5IGxlZ2FjeS10cnVuaworMjE2MDkgZmVlYTNkMmYzNTYzZjBiZmFmNTg2ZTFiN2FmMWFjNDAwM2EwMjhlMyBweS1jdnMtdmVuZG9yLWJyYW5jaAorMjE2MTAgMTFkOWU0NmYxNDcwNTE3MTlmMzg4YTdiYzJjMjJjYjZhYjNiMWE5MCBweS1jdnMtdmVuZG9yLWJyYW5jaAorMjE2MTIgOGI5M2QwNGZhN2E5YjlmNTBhNTg2ZjBhOGNhYWJhN2EwOWY3MDhjOSBsZWdhY3ktdHJ1bmsKKzIxNjEzIDlmNzQ5NjVlMGYzNTg1NWM4NjBjOGYxODRlY2IwYmVlOGQwNTI2MjUgbGVnYWN5LXRydW5rCisyMTYxNCAzNGQ1ZTQ4YzFlZDI2MjU3YzVhZGY1Nzk4YjVkNjhhNmE5ODYwY2E2IGxlZ2FjeS10cnVuaworMjE2MTUgNmM1MDFkODkyMDAzMGE5MmFkZDk2YTRjZjcyMTRiOGExODAzY2Q1OCByZWxlYXNlMjEtbWFpbnQKKzIxNjE2IDQ5OGQ3ZGQ5OWRhNDFlOTI2NjM4OWYxZTMxODYxMzI1MmQ5YTA1Y2IgcmVsZWFzZTIxLW1haW50CisyMTYxNyA5OWFkNmZkMjc5ZTliZjVhNjA5YTEwZTU0YThmMTQzOGMxNDYzMDRmIHJlbGVhc2UyMS1tYWludAorMjE2MTggYjFhMWRlMThmOTFmYmNkMDc0NjQ1ODE5ODM2ODE5M2VjMTkyZTVhYyByZWxlYXNlMjEtbWFpbnQKKzIxNjE5IDg3ZWUxYzNmZDBjODIyNzU1ODVlN2IwN2E3YTRmOGFkNmZiMzljM2MgcmVsZWFzZTIxLW1haW50CisyMTYyMCA4MmEzNDkzMmVhMjJkNjI5ZDE0Y2UyZjg3ZjM4NzI2NmE2MjFjYjg1IHJlbGVhc2UyMS1tYWludAorMjE2MjEgYzk5MTI5YTBhNDdkOTA3YmI3ZDRmMzI1ZjAwOGRjZmNmNzQ2YjY4YiByZWxlYXNlMjEtbWFpbnQKKzIxNjIyIDA0ZTI1YzAxODQ5YjQ0YmI0NGZlMjk0NzRiNDY3OTU5MGNjYzg1OWUgbGVnYWN5LXRydW5rCisyMTYyMyBjMzk3ZDRjZDgzN2QyMDZmNWExMGEzMWQ5YzJkM2JhY2UwMDVhNThlIGxlZ2FjeS10cnVuaworMjE2MjQgYTRkMzUwOGFlZmMwZjk1OGE5OTAwOGNjMDk0NDFhMDkxMzNkY2ZkMiBsZWdhY3ktdHJ1bmsKKzIxNjI1IGRmYjc3NDIyYzYwNzQyOTY3MDIwNzQxYjJkMzAxMjQ3MzJmYjUyNmQgcmVsZWFzZTIxLW1haW50CisyMTYyNiAxMDZjOTk5NWRiNjhhZTVjOGY3Njk4MzBjNzI2MWIwNDg3MTQ3OWE5IGxlZ2FjeS10cnVuaworMjE2MjcgNzk1YWE0NTkwMjExMGE5OTg2MWQ3M2ZiODczNmFiZmEyMDZhZWJkMCBsZWdhY3ktdHJ1bmsKKzIxNjI4IDJlMmVmNDcxMTRmNzcyNDBkMDY4YjFjMzczZTM2ODJhNjVmMzdmNDggcmVsZWFzZTIxLW1haW50CisyMTYyOSAyZmJiMjVjMzA3MmViNmQ0N2U2NjgxMTM0OTYwMTdlZDgxNDczZTVjIGxlZ2FjeS10cnVuaworMjE2MzAgZTA2MTE1NWY5OWU4ZWIwNzcwNDNmMjA0MDljZDBhOWM5YjM4MGNmOCBsZWdhY3ktdHJ1bmsKKzIxNjMxIDk4YmRlNmU1ZTc0MzJkYzdkNzc2N2VmNzRjZTliMjc5ODk5NGE1MWEgcmVsZWFzZTIxLW1haW50CisyMTYzMiAyNmZjOTA1ZGRjMTJlNTViN2I3ODFjZGI0M2Y2MDQzMzE5MWNmZmRmIGxlZ2FjeS10cnVuaworMjE2MzMgNmY4YTI0MDJmNmZhNGIzZjkxZTUwZGVjMzFmNDQ3NzU2MWQ0YTA5YyBsZWdhY3ktdHJ1bmsKKzIxNjM0IDk5NzdjZjIwNjUzMmIxNDZmMzE5MjcyYWE4MjMwYmI5Y2RkNGI4ZjEgbGVnYWN5LXRydW5rCisyMTYzNSA0YzMzZGMzNDU5MDJhOTE1N2ZmMDM5NDE4NmE3YjU2ZTVlM2NmZDc0IGxlZ2FjeS10cnVuaworMjE2MzYgYzdhMjRkM2IzNTk3Mzk2OTcyOTdiZjBkNTFlOTNjZDEzNDNlNGZhYSBsZWdhY3ktdHJ1bmsKKzIxNjM3IDRiN2ZkM2FlMWQ5MzBiOTIyNThlNGY5N2NmMDZlODkyMWJiMWZlNDUgbGVnYWN5LXRydW5rCisyMTYzOCBmNDA5MmE1ZjdiYmM3MTQwYjFkNDA5NzE2M2QyMDg2Yzk4Y2U4NjJhIGxlZ2FjeS10cnVuaworMjE2MzkgMDY5YjgxNTE5YmU3ODUwYmI0MGFhM2NlNjRkYjQzYjMyZGU0MTZjYSBsZWdhY3ktdHJ1bmsKKzIxNjQwIDU4NDZjMjU4Yjg4OTYzNjk2ZDhlNTVlYzhmYmFiODM0Nzk3ZGM2ZGMgbGVnYWN5LXRydW5rCisyMTY0MSBjNGY3NTg1NzUwMmE2ZDNmNjcxOGYwNzZhYmY2MzlkMDVhNjg3ZmFlIGxlZ2FjeS10cnVuaworMjE2NDIgYmExZjNkZTEwMDg1NDM0ZjExZWY5NzExNzM1ZjFlMDViNWM4OGU0NSBsZWdhY3ktdHJ1bmsKKzIxNjQzIDQyNzQxZTY3NzMzODQxZjI5M2Q4YmRhNDg5MTBiOGZkYmUyMjgxMGUgbGVnYWN5LXRydW5rCisyMTY0NCBlYTdjNzdmZTUwYWU5OWRhYTRkMDVlOTAxOWJmZmE4NzJjNjkzODc1IGxlZ2FjeS10cnVuaworMjE2NDUgMmJiNzVhMWYzMTg0MTkyODVjZDhjMjg3ODlkOWQ0ZTcwOTY3MDI0OCBsZWdhY3ktdHJ1bmsKKzIxNjQ2IGU2ZWNkOGEwN2VhODhmMjdiZjU1MDQ4YWU2YmMyOTUwODg1NTE0YTkgbGVnYWN5LXRydW5rCisyMTY0NyA0NmRkODczZDI2ZjY0NGY0OTgzMWM2Zjg0ZjRjYjVhN2E4NmEzMmE5IGxlZ2FjeS10cnVuaworMjE2NDggMjAyZGRkYjdjOTc0NzRjYTcwNmY2NzY2NGNmMThjNGI3ZDJhNTVlZCBsZWdhY3ktdHJ1bmsKKzIxNjQ5IDg2MjYxNzFiMmM3MjUyODU1MmMxNjBhZTZjNjM1OTUwYzU2OTVkMjEgcmVsZWFzZTIxLW1haW50CisyMTY1MCBjYzI0ODY3NTdjOGJmM2UyMmJiOTRjNmIzMzUyYmMwMjdmZjYzYmRjIHJlbGVhc2UyMS1tYWludAorMjE2NTEgYzViNTA1NTJkNTZkMWY2MjczYzMxYzYzYzZiYjEzZDUwOGE2YjI1OSByZWxlYXNlMjEtbWFpbnQKKzIxNjUyIDMyY2IyOTVkMDg2MmMyMmExYjA3ZTgxNDU5MTc2ZWEwZjdlOTcyNTggbGVnYWN5LXRydW5rCisyMTY1MyA4NmIxYzgyMTYwZWE5OGQ1N2EwZjlmNDFhMmQwYmI4OWU4YmIyMTZjIGxlZ2FjeS10cnVuaworMjE2NTQgOGRlOTEwNDIxNzNmN2Y0ZTEwMWZhNDgyN2RjMDkyYWY4YWI3NGVlYiBsZWdhY3ktdHJ1bmsKKzIxNjU1IDI1NGE0YTlhZjBmYmM2ZTg1ODBlNDliYTJjNWI3MjFiNWRhZDEzM2MgbGVnYWN5LXRydW5rCisyMTY1NiBmNGVhMjFhMGY5NTQyZDM3ZmQzOGE0YWM1NjYzNzYzNGYzZDBkNTcxIGxlZ2FjeS10cnVuaworMjE2NTcgZDIxMTcwOWYyNWYxZWVjYjQxN2FjNTIxOTEwZWUxODBiYzIzODY0YyBsZWdhY3ktdHJ1bmsKKzIxNjU4IGIyYmY4OGUwNmZjNTk5N2I1ZmRkZjYyZDQxMDljM2E0YzFmZjgxMzggbGVnYWN5LXRydW5rCisyMTY1OSA2NWFmYWM4NGQ0ZjczMjM2ZWNhMTNlNzgzNjQwNGU4NzE3NjhjNGJjIGxlZ2FjeS10cnVuaworMjE2NjAgNzMyOGM4Y2Q5MTdkOWVmNjBlZWIxODZkMGFjM2FmYzA4YWY5MjkwYSByZWxlYXNlMjEtbWFpbnQKKzIxNjYxIGE1OWNhODQ0NmY5MmI2ZWRiNzdhMTljMzFiMzk5Mjk0YTc5NmM5ODAgbGVnYWN5LXRydW5rCisyMTY2MiA0ODYxMzczOTU5MTc2YzU4Y2QyNjdhMTFiNDEzNzQ5YzRkNzZkNDAzIHJlbGVhc2UyMS1tYWludAorMjE2NjMgZjcyYmNlY2RkMWY3ZTJmY2IxZDFhMWMyMmI5MTIwNGRjY2VkMWM4YSByZWxlYXNlMjEtbWFpbnQKKzIxNjY0IGQ5N2M4MmNiZDc2NjkxY2NjMDM2YmIxNWRiYTk1Y2Q0ZTZjZjY3NTMgbGVnYWN5LXRydW5rCisyMTY2NSBkNTAyNjZiNWRjNDhjNWFlMWNmMDY0NGQ1NzliOTkwYTQ0NTBlYTM3IGxlZ2FjeS10cnVuaworMjE2NjYgZWFlOTI3MjkwMzU3MWEyNzdjYjA4ZGQ0YjlhNDc4ODc5ZDZhZmEzMCBsZWdhY3ktdHJ1bmsKKzIxNjY3IGIxZDZhZTMyOWRkMDU4ZmQ1YTU2NTViNGViMzMzOTJjNjE0ZjZjMzcgbGVnYWN5LXRydW5rCisyMTY2OCBmZDk0NjEzNzNjYWIzMDA4YjgyOTJhNTUxMzljYTViZjQzMDcxNjg4IGxlZ2FjeS10cnVuaworMjE2NjkgMjFiNWIyZWFlYjNkNDFlNjI4MjNhMTMzZTg0YTYxNmU5MTVhM2IzYSBsZWdhY3ktdHJ1bmsKKzIxNjcwIDFmYmNmNTQ5YzFjNDUzNWYzYmU4MDNhMTg0NGQ4MDY4NDBjNzIyNGYgbGVnYWN5LXRydW5rCisyMTY3MSA2NGZhNzJhODQzNDc0OTAwMzkwNWY4MGQ1YWNlNGJmMGE4YTg3NjAxIGxlZ2FjeS10cnVuaworMjE2NzIgMjNkOGViMjllNGZhMGZmZTY4M2YyYzAxYzhhOTE3ZTQxODI5NWQxNiBsZWdhY3ktdHJ1bmsKKzIxNjczIGU0ZDZhNzM5OTk3ZDk2MWQyZDQ4MjA2ZDMwMmQ2MGM3ZDFmNmZkMGYgbGVnYWN5LXRydW5rCisyMTY3NCAzN2VlOWNkNTRhMTEzZmNiMjUyNTJiYzMxNzVhNDQ3OTJjMjcyNDNjIGxlZ2FjeS10cnVuaworMjE2NzUgZTA2NGY1MjZhNmVmZTgxOTJhMmFjYzNhOWY5ZGFjNTI2YTE2ZGU3NyBsZWdhY3ktdHJ1bmsKKzIxNjc2IGZjNWEzZWMwNzQ1ZTFkNmI4N2Y1OTBhMDU3MWZjYjk3MDU1OWRlOTUgbGVnYWN5LXRydW5rCisyMTY3NyBlYzlhYTBkYzhiNzM2MDZhNzE2ZWIxZWEwZjljMzI3MDA0NTI2MWJlIGxlZ2FjeS10cnVuaworMjE2NzggYmY1NjI0MThkZmI4MWUwZjY2YTNhNGJhYjA1NGNhMjRiY2JkZWVlYiBsZWdhY3ktdHJ1bmsKKzIxNjc5IGNkM2I0ZGQzZTRjYTE5MTc5NGVmZWIzMDM1MmFhMTRiZjYwODU3NmYgbGVnYWN5LXRydW5rCisyMTY4MCBlYTI2YzliNjZmYmQ5ZDJlYWIzNTNmZGNjMzdkY2NhZDBmYmUzYWY2IGxlZ2FjeS10cnVuaworMjE2ODEgMGM3MDEzNTM4OTk4M2NjNDVjNTQyYTEzNzIzYWFlZWVmN2ZmMTQxMyBsZWdhY3ktdHJ1bmsKKzIxNjgyIGIyODdmMjkyN2RiMzhhM2U1MWQwZGMwNWM4OTExNGVhMTE0OTU4OTQgbGVnYWN5LXRydW5rCisyMTY4MyAzZmNmOThjYTZjNGExNDZmNWFmN2M4ZmEzMDlkNGFjYTJmMTc2ZTJiIGxlZ2FjeS10cnVuaworMjE2ODQgOTA2MGMwNmJlZGJjNDMxODQ0NGFiMjBhOGE5MTkzN2NlYjZhZmE5YyBsZWdhY3ktdHJ1bmsKKzIxNjg1IGM0OTMwMTMxZjVlM2FjNzI3NWE2N2M0ZDM1MjYxOWNmOGEzZjZjNDQgbGVnYWN5LXRydW5rCisyMTY4NiBjMWVjODdmMTA0NGE0OWNkMTc4NmU4MGU5ZWFiMGRiNTBkYTdiYmY2IGxlZ2FjeS10cnVuaworMjE2ODcgNzA0NjFmMmQyMTA5OGQxYzUyOTI4NDMwMjYwZDllMmYzMTk0NmQ1NCBsZWdhY3ktdHJ1bmsKKzIxNjg4IGU2NzVmZjU3NDhmMDVmMjc5YWM0NjlmNDQzZWMxNjJkMDAzZjNkNGUgcmVsZWFzZTIxLW1haW50CisyMTY4OCAyMmJlZDJkZDFiMjg2NTY0ZGVhNGQ5YTY3ZDRlZDgwZGMzMjI1MTkzIHJlbGVhc2UyMS1tYWludAorMjE2OTAgMTM3ODNlMGEzNDIzN2Q1MGQ1MmFhOTIwZDA3NTU5ZDBlYTEyNTBjMSByZWxlYXNlMjEtbWFpbnQKKzIxNjkxIDZkNGM4YTI5YmU3MDg3ZjkwNmVlMmY0NjljODk0YTY1YWNkNTRiMWUgbGVnYWN5LXRydW5rCisyMTY5MiAwNDdkN2M0ODA2OGFkZDdhMzUwNGQ0MTJkNjcyZjU0YjMzZjVjNDIwIGxlZ2FjeS10cnVuaworMjE2OTMgZjUzZDhjNTJjODFmOGQ5ZTM0ZDJmMThjMDY5YjRiZTc5OWQ5MDFiZCBsZWdhY3ktdHJ1bmsKKzIxNjk0IGY2MGU4NTM4NGI3OTgxYTZlZjhlOGExMWViZTE1OWJjMTJiMmNjMTIgbGVnYWN5LXRydW5rCisyMTY5NSAwMDIzYTc4YzFjODJjNzE1MjBkNDUzNTdhYTdjYWY3YmUwZDMyMTk1IGxlZ2FjeS10cnVuaworMjE2OTYgMDlhNWZlMmE3NDI2NzM4ODljMTliMTIzNDhhMDM1YTI0YjU2YTQ1MiBsZWdhY3ktdHJ1bmsKKzIxNjk3IDcyOTM5YTIyMzBkM2JmMTcwODlhM2QyNTJjZmZmMzhmMjIyNTM1NjEgbGVnYWN5LXRydW5rCisyMTY5OCBiZmFhOTdhMTliMzA4M2YzNGY4N2FjYjQ5ZWUxYzlhZGQxZDAwMDJiIGxlZ2FjeS10cnVuaworMjE2OTkgMjliZTg3MWJkODc2ODU2NjNkYjg1MjI3YTk2NThlZDJhNTExNzVhOSBsZWdhY3ktdHJ1bmsKKzIxNzAwIDY0MTdkNTg4MTZjZmRkNWI5NjU0MDkwNjE3YjkyYzk2YWY0M2M0YzUgbGVnYWN5LXRydW5rCisyMTcwMSBhMDY4MzFiMzU0MDc2MWIwODViZGNkYzkzMTVhNTMwMmMwNjliYWQxIGxlZ2FjeS10cnVuaworMjE3MDIgZmQ4OTZiN2NhYmI3NDIyNTMyYzJlZTQ1MDZmNDNiN2Y3YjdiNWQ5MyBsZWdhY3ktdHJ1bmsKKzIxNzAzIDc0NjEzNDhkOTlkYTQ0MzZmZmQyODY2Yzk4NjY5NDc5MTBhYzcwNzEgbGVnYWN5LXRydW5rCisyMTcwNCBlYWUxN2M1NzY3Mjc0MjU5N2EwNmNmYTc0NmRlM2NkZWFmYTlhNGU1IGRlc2NyLWJyYW5jaAorMjE3MDUgY2ZlNTNhNjIwY2ZmZTgxMjczNjhlNjliMDBhYmRhZDJmM2IwZTc2NSBkZXNjci1icmFuY2gKKzIxNzA2IDQ5YzA3YWNjNmU4M2U3YjdiNjcxYmY3MTllNWM2NmY1Y2EyOTgyNzUgZGVzY3ItYnJhbmNoCisyMTcwNyBjOTQwMjg3ZGJhNzliZGY1NjM5MGFhZDkzZTVmYTYzODY4NmFiMmM1IGRlc2NyLWJyYW5jaAorMjE3MDggNjQ2ZTA1MmUwNWJlZDUxZWYyZDQzMDFlYTQ1YzE3YzdiYWYyZTA1ZiBsZWdhY3ktdHJ1bmsKKzIxNzA5IDU4ZWI1MDUyODY5MmM4ZTZjNDM4MTcyYjhlY2VjYmQwMWYxOTdlNzMgbGVnYWN5LXRydW5rCisyMTcxMSAxMmU3YWQxMDgyMjkxNjA1ZGU1NTRiN2Y0OTIwOWQ0YjY3NjE2NGY3IGxlZ2FjeS10cnVuaworMjE3MTIgOWI0MmRmNGI3NGQ0NTYzZWE0ZjliM2ZhZWZjMzM1MjBhM2UwZjc1ZCBsZWdhY3ktdHJ1bmsKKzIxNzEzIGY0MDE0MDU4OGIxZTgzYTc1ZmFhNTVlM2JiMzljNGVkNmQ1MmI2NzIgbGVnYWN5LXRydW5rCisyMTcxNCBlNzYwZWVkNWY2ODgyY2Q0NzYwYzUwNzA4MTUwMjU1ZTdjNDIyNjE2IGxlZ2FjeS10cnVuaworMjE3MTUgYWEzNDQzNjE0NWQwMzNkYmIwMjQxNDBjNmMyNzNhZGVlMmUwOGJiYiBsZWdhY3ktdHJ1bmsKKzIxNzE2IDVkMzk2NGU2MjJhODUyY2MzYjllOTY3NDRmYjYxYTY4YTM1MjJjMTAgZGVzY3ItYnJhbmNoCisyMTcxNyA2MzhkOTA0NGZiZTIxZWI4ZmE2MzhkNWIwZWM4Nzc0OTQ1NzE3NjZhIGxlZ2FjeS10cnVuaworMjE3MTggYTc1Y2EyMTdmNzM3NzdkNGRmZjY2NWY2ZTUwMDA3MGNlZTk3MGY1ZCBsZWdhY3ktdHJ1bmsKKzIxNzIwIGFjZTcwZTMyNzkyOWNhYmJkZTVkOTE5YTVkNTJkMTA1ODBmNTkwYjcgbGVnYWN5LXRydW5rCisyMTcyMSA1NTUxMWNhYTI0ZWViNTk2ZWM2Zjc4MjYzMWI1YzVjMTA4NDJhNzE3IGxlZ2FjeS10cnVuaworMjE3MjIgNWUxYTE0ZDk5M2IzNWI5MjM1NjI5OGI1M2FhYTlkYjJlNzUxMDAwZSBsZWdhY3ktdHJ1bmsKKzIxNzIzIDk5YjVkMzM0ZGUxZTQzMWZkYjZmMDBkMDVlY2VlMTE5MjkzZDdmOTIgbGVnYWN5LXRydW5rCisyMTcyNCAxNDRhMzAwNWI1YmFlM2RhNTFjMmE0ZjNlYzg3NjVhNjc3NWU5NTRhIGxlZ2FjeS10cnVuaworMjE3MjUgOWI4NTY0ZjZlMzRkNTFjYWUyOTU4MmRiYTJjYWQ4ZmYwMGJiNjkyOSBsZWdhY3ktdHJ1bmsKKzIxNzI2IGM0MDQxMDcyZDEwMTAxMGRiMmQzYzg1NDlmOTc3ODVmMjU5M2MwYzUgbGVnYWN5LXRydW5rCisyMTcyNyAzNDZkY2FmYzg3OGI0NjZlNmUwODFmMjk3Y2U3YjFlOTNkYzc0OWVjIGxlZ2FjeS10cnVuaworMjE3MjggNjcwNDY0Yzk0YjkyYTY4MjMyMGQxNzk0OTMxMzVjOWIwYzNhOGEzYiBsZWdhY3ktdHJ1bmsKKzIxNzI5IDdkNzc2MTRmZDBiN2ZkNzAxYzc4NjE4M2JhYTY5M2YzMjA3ODkwNGUgbGVnYWN5LXRydW5rCisyMTczMCBjNmMzMGU0NWFiNWJhNjYyYjU4NWYzNDkzM2NkNjljNjQzODdlOTAwIHJlbGVhc2UyMS1tYWludAorMjE3MzEgNDM4NGY5MTliNDQ4NTQxZmYxMjhjZThjMzAwY2I5NjI2NDY4YjNmNSBsZWdhY3ktdHJ1bmsKKzIxNzMyIDhkNjJkZGU3NjI3Y2VmN2NmMGU0Zjg4YzAzZmMzYzY0MWYxZWJhMWQgbGVnYWN5LXRydW5rCisyMTczMyAxMzJhMDZhZDk2ZWVjMWE1ZTg5ZDliNmYzMjJhZDBlZjI0YjU1N2M5IGxlZ2FjeS10cnVuaworMjE3MzQgYTg2MTk1ZTZjN2UzMzJhNTdiNjhiYWIwYzNlZDJmODE0ZGVmMTI2NyBweS1jdnMtdmVuZG9yLWJyYW5jaAorMjE3MzYgNmI2MGQwZDk3NGMzMWQ1YjlkYzk2ZTk3YjllODI1MTMxZDdjOGE3YyByZWxlYXNlMjEtbWFpbnQKKzIxNzM3IDI4ODE4NzY2YTY0Y2E1Zjk1YmJkMWY2OGU2ZDNhOGUyZTIwN2ZjNjAgbGVnYWN5LXRydW5rCisyMTczOCA2MWU1MGQwYWE1OWExZDg5NjlkOWQ4OTdlNzM0MWViOWMyOTg1ZDk2IGxlZ2FjeS10cnVuaworMjE3MzkgNDA1MzUyZWE1MGEwN2QzMWY2NWQ3YjFiZDA1MzEyODBjMWFkMjJjMiBsZWdhY3ktdHJ1bmsKKzIxNzQwIDQyNDdiNGIyYzQ4ZTY5MTQ3YTk4YjFlMWEzNzIyYWU4ODIzYWVhMzUgbGVnYWN5LXRydW5rCisyMTc0MSBmZTQ0NDI4Zjk3NzRkZjg0NWJiZjM3MzVjZmE4YWE1YTM5NmQxNjI1IGxlZ2FjeS10cnVuaworMjE3NDIgMzA0MTRiNDFmYWM5Nzg0YjZmMTM1YmE3NWIxZWEyOTQxMzAzYjNhMSBsZWdhY3ktdHJ1bmsKKzIxNzQzIGU5OTU0NTY3YzU0YjAyZjcwNGE5Y2ZkMGExMjVkZDVkZjBkZDc0YjggbGVnYWN5LXRydW5rCisyMTc0NCAyMWEwNGQxNWUzOGMyNmQ4MzNkMWUwMWI5NjlkZmUzYmEyZTc4NDEzIGxlZ2FjeS10cnVuaworMjE3NDUgNWI4MjBkN2EzZTdjMTNlMjlmM2YzNDJjYzk0NjZkOGFiNGNmZjkxMSBsZWdhY3ktdHJ1bmsKKzIxNzQ3IDI3ODMxODMwNDM1NzkxOTJkZjUwMzQ5N2NiODkyMjA0MjI3MzY0ODAgbGVnYWN5LXRydW5rCisyMTc0OCBjN2JlZjZhYTZmOTI2NzI3ZDExOTlmYmFjYTdhNWU1NmFjMDcyZDdhIGxlZ2FjeS10cnVuaworMjE3NDkgMjFjNTQ5YjY2NzAyNDExYzhlNjI4NzE1MzEzN2M0ZjI1OTEyOTEyZSBkZXNjci1icmFuY2gKKzIxNzUwIDExNTM4ODA1OTdjYzcyYThjZWNiZDFlYjNlODM1MjAzMTllNzA0NjYgZGVzY3ItYnJhbmNoCisyMTc1MSA5YTM3M2ExNDNhMTMwZjJhYmM4NjM0MDBiODIzMWEwM2UyMzFmOWRhIGxlZ2FjeS10cnVuaworMjE3NTIgMTkyNTBmOTE4MWRjNDRlMWE5NTZhOTM5NTdmNmRiNmI4NDJjODIwOCBsZWdhY3ktdHJ1bmsKKzIxNzUzIDIzZTZiYmE4OGQ2YTdmYzdmNWI5Yzk4NjIxMDY5NmI2M2Y2MDU5ODcgbGVnYWN5LXRydW5rCisyMTc1NCAyOGI2MjkxZTJhNWNmN2Y1NTJkM2RiOTlmYjdlOTAwNmNiNzZkNTFhIGxlZ2FjeS10cnVuaworMjE3NTUgM2YyODNjOThlODE1MDc5YjU0Y2RmZDNhMDczZDA2MzljY2QzY2IxMyBsZWdhY3ktdHJ1bmsKKzIxNzU2IDExNTFhYjhhMmNkZmU1OGUyNTBiNTA1NjFkZGJkMWI1ZTkxMWM4NzAgbGVnYWN5LXRydW5rCisyMTc1NyA3ZmRiNDE2MDNlOWEzYzNjMzEwY2E5N2E3NGUwMDQ0Nzg0ODY4NGUyIGxlZ2FjeS10cnVuaworMjE3NTggODU5NTA1MjI0ODUwMjBlZmIwMWY4YjIzOGZjZTg1ZGYzNWEyYWU5OSBsZWdhY3ktdHJ1bmsKKzIxNzU5IDcyMWYxYTg5M2ZiYmMyNDhjYzA3MWZlMzIzZjU4Y2MzZWUyNTVlNGYgbGVnYWN5LXRydW5rCisyMTc2MCA5ZjQzZTNhOWJiNmVlMjUyNmUyODljOTI2ZDU5YmE4MjY3NDQ5NWQ2IGxlZ2FjeS10cnVuaworMjE3NjEgYjlkNDdkMDgzZDJjYWYzNDI4N2I1ZDg5NzdmNDMyNzlmNThlNzQ3YSBsZWdhY3ktdHJ1bmsKKzIxNzYyIDI3NWFmYjVhNzY3ZTJiZDkxMTEwYjk3OTU2MDNlYzBiYzk3ZDhiNTggbGVnYWN5LXRydW5rCisyMTc2MyBmODRhY2M5ZGZkMGI1Y2RjYmFkOWNmMzE0MDJlNzAwNWVkMmY1MjliIGRlc2NyLWJyYW5jaAorMjE3NjQgMDg1N2ZiNDg5ZmEzYTYzMTA3N2E5NzMxZDhlNjE1ZjcwMzkzOWU2ZiBsZWdhY3ktdHJ1bmsKKzIxNzY1IDczMGFiMGJlZDZhYjQ2ZjBhMTcwODc4Y2YxYjQ4Yzk3NTQ3MmFlNTMgbGVnYWN5LXRydW5rCisyMTc2NiBmYWY3ZjE3MWE5ZjMyMjQwOWI1MThlMDE2ZmMzNTVlOGRhMGU3ZTQ0IGxlZ2FjeS10cnVuaworMjE3NjcgZGNkMWEwYWFhZWNiNDljYTc5N2NhNmNlYTdlNWI4NmZkN2U3NjMzMiBsZWdhY3ktdHJ1bmsKKzIxNzY5IDIxZDdiYWU5ZGMyZGI2YzJjYjNkNzJkOWUzZjczZDkyYTkzYTgwODUgZGVzY3ItYnJhbmNoCisyMTc3MCA1OTQ0NmQwZjgzNDFkZDE3MzBmMTYxZTAzZTFkNzI5NjIxNTc0MDljIGxlZ2FjeS10cnVuaworMjE3NzEgMWY5YzdiNGNlZTc3YWZlOWZhOGE0YTVlNGRlZTExMDAwNzc2YjUyYyBsZWdhY3ktdHJ1bmsKKzIxNzcyIGZkYjM2YTBjN2U2ZTk4ZTYyMGJmZjFmYTA2NDg4NjU2MTBlNjgxMzUgbGVnYWN5LXRydW5rCisyMTc3MyA0YWM5OGZlN2FiZDJiNTE2NzYyNjk4Njc0NmRlNDJjNDY0NTMxNDQzIGxlZ2FjeS10cnVuaworMjE3NzQgNjIzOGEyMjJiN2NkNjU4YWI0MzM5ZWE2YzNhNmJhNDc3NWNhODg5YyBsZWdhY3ktdHJ1bmsKKzIxNzc1IDM4NGE2MWZhNmY1YTIwNDdkYzRmMzllZjZmYjM1OWQ2Nzc3Y2IxNDMgbGVnYWN5LXRydW5rCisyMTc3NiAwYTkwZTVlYzYxYjY5ODFlNjU2ZTdlYzhkNDlhMjk2NGY4Mzc1ODc3IGxlZ2FjeS10cnVuaworMjE3NzcgMDFmYzk4YmEzOTlmMWE4YWYxZjM5ZDRmNzQzNDRiZTQwZjIxNGUzNCBsZWdhY3ktdHJ1bmsKKzIxNzc4IDE5ZGNmYjkzNWY2MGU0ZTBmOGFjZjg2MTI4YmMzMDQyOGQ0Y2M3NzEgbGVnYWN5LXRydW5rCisyMTc3OSAyNzEwNjRkYTFkNTJjY2VjOThmZTE4NTMxMDBiODU4MzRjOGNmNWRmIGxlZ2FjeS10cnVuaworMjE3ODAgMWYzZDc2NmRhZDkxZTVlZTI2OTI4ZTU5MjU5NGMyMWNkNWNmZGJiMSBsZWdhY3ktdHJ1bmsKKzIxNzgxIDkxNTkyMjJlNjQ2M2ZkNTk0NTA0OGI2N2QzYzlkNzYyYmI2YTVhZDkgbGVnYWN5LXRydW5rCisyMTc4MiAxMDcxN2Y4YTZkOTY4NGMyOTdlMTUwOWJhY2ZlNDg1YWY0YjAzZDJlIGxlZ2FjeS10cnVuaworMjE3ODMgOThkODFjYmU4YmJkN2ZkYjM5NjE3NDA1YTJhMGVhNzMyM2FhYzczNCBsZWdhY3ktdHJ1bmsKKzIxNzg0IDM1ZmVjNDg3YmNlZjc3NzM4ZDVmYjNmZmE5ZDgzOGM3MmQxNGFhMDMgbGVnYWN5LXRydW5rCisyMTc4NSBlNWU1YmI1NDgyZDNiNzJjNjcxMTI2YTg5NzEzOGNiNDE4N2U3YTAwIHJlbGVhc2UyMS1tYWludAorMjE3ODYgOTIwZWU3ZjJhNTkyMmU2ODVlYThjNTQzMjA3ZDkzZWM2NWM2MTdlZiByZWxlYXNlMjEtbWFpbnQKKzIxNzg3IDJiNWU3MzgzYzc3YTE2ZjM0ZWRlNDg3NmUzZmY4MWY4ZDdmNWY0YjAgbGVnYWN5LXRydW5rCisyMTc4OCAyOTU1MThlNmZjZWFiZTE5MDc2MjVkODU0YmVkOTkwMjJhZmUwZmVlIHJlbGVhc2UyMS1tYWludAorMjE3ODkgYzA2ZDgxNzllOWUzYjMzNjg5NmE1NmQ5ZDIwOGQzODZkMTc4NTk4NyByZWxlYXNlMjEtbWFpbnQKKzIxNzkwIDkxNDk0MDk0NmUyZWExZmNjYWUwMDNmYzAxMDNkYmM4MDkwZWNiODMgcmVsZWFzZTIxLW1haW50CisyMTc5MSBjOWI0YzhhZTYxNzkyMzA1MWE2MWZmMjYzMjdiOGM4MWVhZjgxMTYzIGxlZ2FjeS10cnVuaworMjE3OTIgNDAzMGM5MDE5MDY3YzVjMjA2N2U4ODMwYTMyZjAxYjBjNjg0ZTI1NCBsZWdhY3ktdHJ1bmsKKzIxNzkzIGZkZGU5ZmFjYmI2ZWE3ZDE1NWQwZDRkZTI4YWM2Y2MxZWQ2ZTA4NmUgbGVnYWN5LXRydW5rCisyMTc5NCA3N2M4MjgyNGRmNDEyOWYzN2JkYTYxMTk3N2FiMThkMzg4MTQ0MGZmIGxlZ2FjeS10cnVuaworMjE3OTUgZDU5YTg0NzZhZmFiOWRmNTRhYTA0MThlZDVjZTA0M2M3YTM3MmUyMSBsZWdhY3ktdHJ1bmsKKzIxNzk2IGM4ZTQ3MjhkMmFiMGYzY2E4YTBkMmIyMTY5ZGZmYTRjMDVjZWY1NTUgbGVnYWN5LXRydW5rCisyMTc5NyAxZDNjNTdjYzhkMDg1Yzg2ODdiNzhkODllNjk4YWQwYzMzNmRkMjU4IGxlZ2FjeS10cnVuaworMjE3OTkgOTgzYWNhYzU2NDY2YjNiY2ZjZGRkMmM0MzE4MjkwZWE3Yzk1MzZkYyBkZXNjci1icmFuY2gKKzIxODAwIDA1Y2Y2YjNlNjNkZTU1NGUxN2I5MzU2NjUzNDQwZDZiYzUzZGJhNDMgbGVnYWN5LXRydW5rCisyMTgwMSBlNTNiY2JjMzE2NWUzOTY3OWFmNjM4OTkzZWUyNWJiNDUwNzU2Y2NmIGxlZ2FjeS10cnVuaworMjE4MDIgZDNjMjViMDZiN2U1YjQ0ZGM1MzAxZmRmY2MyNjQ4ODAwOTY2NWRmMiBsZWdhY3ktdHJ1bmsKKzIxODAzIDU3ZTU5NTI1ZDIxN2RmY2UzNWQxOGE0NmViOGQyNDhlYmFiOGNlZWQgbGVnYWN5LXRydW5rCisyMTgwNCBmZGY4ZDA4MzEyNzg5NTNhMjg1NzljMWRjYTAzMmI3MGQ3MDVkNTM0IGxlZ2FjeS10cnVuaworMjE4MDUgZjcxOTY0ODZmNDJkMTgwOWQ1ZThhNGE2ZWRkN2MxY2NhZmQ1MzUyYSBsZWdhY3ktdHJ1bmsKKzIxODA2IDZhNTA5MTBjYTMwM2FkMDRhMzdjZjlkOGFlZmU5OWMzZWE2YzhjZmUgZGVzY3ItYnJhbmNoCisyMTgwNyA1NTcxN2RjMjI3ZjRkZTEwYjQ5MGM4ZjVmNjMzYjVkNjVjYmMxZWEyIGRlc2NyLWJyYW5jaAorMjE4MDggOTRmYmNmMTk2NTQ5NTU3YjhlMjcxZmI2ZDllYWY2N2U4ZDlkYTU3ZiBkZXNjci1icmFuY2gKKzIxODA5IDA3NzJlYWExNzYzMTlhYjRmZmM1OTQ4ZTY4MDM4ZmVlMDQ1MDc3ODUgbGVnYWN5LXRydW5rCisyMTgxMCA3MzM1YWM3YzUzMTU3ZmMwMGQ5YzFkZTM4YTUyMGFhMzg4ZmJhMDdkIGxlZ2FjeS10cnVuaworMjE4MTEgY2I1ZWE0ZDhlOGJmOTgxMWQ2NjZkZjQ0YzNiNDBhMGM3Njk0NDNhOSBsZWdhY3ktdHJ1bmsKKzIxODEyIGU1YTJlODkxNmUwYjRlNjRjM2YyNzgwYmJlMjUwNDY2MWUzN2IxN2EgZGVzY3ItYnJhbmNoCisyMTgxMyBjNDNmZTIxM2VlMTA4ZjUzNTMzOWI5YjI5M2I1NTc5Y2U2YjRiYWU0IGxlZ2FjeS10cnVuaworMjE4MTQgYWQ4MmNhZmU0NWFjZjQ5MWY4OTg2MTVkYWY5MmEzYzJkMjc0Mzk0MyBsZWdhY3ktdHJ1bmsKKzIxODE1IDMzODE4ZWM2Mzk1YmFkOTBhOGRjYzMyOGZkYmE1ZjMyMTQ3NWZkZjMgbGVnYWN5LXRydW5rCisyMTgxNyAxZjFjNzhiYTU3ZmY0NTdmNjAwYTI0YzU0NjM1NjI5Mzg2NDVkNjExIGRlc2NyLWJyYW5jaAorMjE4MTggZDYyMzNmN2I3NGMxOGZlNWNhZjY0NDU3NTYxNTdmMTc2MjNlZjM2YSBkZXNjci1icmFuY2gKKzIxODE5IDhhYTYzYWVhNzI2OTU5OGE3MTNiZTQ0NzQ4NmFjNTZlODhhODIwMTcgbGVnYWN5LXRydW5rCisyMTgyMCBjYjY2YTk4MzA5NmY3Y2YzOTUxNWI0YzMzYWU0YWVlMTU2NmM1MGM1IGxlZ2FjeS10cnVuaworMjE4MjEgM2I4ODg4NTlkNTJiM2E2MDdiYzg1YjU5ZDZhOGM4OTQwZGVhZTBjMyBsZWdhY3ktdHJ1bmsKKzIxODIyIGNhOGE0OGFiYTIyZWNlMjliZDY3NzA5ZDU1ZWFiOWQ1OGRmZTFjZTUgbGVnYWN5LXRydW5rCisyMTgyMyA1ZWJlZTVjMDYwZDBlN2RiMjE4YzdjMWJmZTIxMDhkYTVhN2I2NGQyIGxlZ2FjeS10cnVuaworMjE4MjQgNzQ4ZjZiM2E4YmY2Mjc0ODFmMjk3NjJkZWIyMjU0MzhjMmNjOWYwNiBsZWdhY3ktdHJ1bmsKKzIxODI1IGFjMTFhZjdkODYwYTM1ZjVjZTc2Njk0NzYxNGRlM2ZjNTM4NTUxMmYgbGVnYWN5LXRydW5rCisyMTgyNiBmY2RiOGM5NGI1ZDhmMzNkZWI4YjQ2NzBiNmYyN2NlZmNjN2I5ZTk4IGRlc2NyLWJyYW5jaAorMjE4MjcgY2Q2MzlhOTQ3MWI4Zjc5MDVlZjU4MWVjOTQ2YTkwYWMwZmMxMzdlYSBsZWdhY3ktdHJ1bmsKKzIxODI4IGU2MzhmMTIwNmVlMGJkOTlhOWE5MWYyNDUyZDg5MzhkMGE1M2EyYTQgbGVnYWN5LXRydW5rCisyMTgyOSA3MDI3NTAzN2YxMmQ4ZGVkNmFkMjJiY2FmOTNhZDc0MzIzYzBmYjhlIGxlZ2FjeS10cnVuaworMjE4MzAgNzQ2MjNiMDc2ZDFiZTllMzNkMDhmY2RmNjVlMTFkN2VmYjZlYzk2NSBsZWdhY3ktdHJ1bmsKKzIxODMxIDk1ZGRjZDQ0NGQzOTJmYmIxMzZjNzY3YjFhM2EyMzdhYTE0ODJhMTYgZGVzY3ItYnJhbmNoCisyMTgzMiBkODllOTM2ZTFiMTA2NWM1ZjU3MGMwMjU5ZTczMzAyZGQ2NDNjNWRhIGRlc2NyLWJyYW5jaAorMjE4MzMgNzA3MTFhOThkOTg5N2M4OTM3OWJhZDA0YWZlNDM5YzMxNWRjOWY4YiBkZXNjci1icmFuY2gKKzIxODM0IGUwOWJlZTliNTcyOTJkNzYxM2VlNzYyNDRiZTg0MjRhNTY3NDdhZTIgbGVnYWN5LXRydW5rCisyMTgzNSA1ODRiZTBiYmQ5NDJiNjQ1NWMzOTkyZmFiNDg2Y2YxNjE2YzkwZTljIGxlZ2FjeS10cnVuaworMjE4MzYgZjY1Y2U1OTkwNTQ3ZDUxMDRjYWRhZmEwMDk2NTJjNmVmOGI2MDExOCBsZWdhY3ktdHJ1bmsKKzIxODM3IGI3Nzc1ZWJiZjQ0OTA5OWE0ZTFiMDU0OTgyNTg1MTVjZjBlNjNmNWIgbGVnYWN5LXRydW5rCisyMTgzOCBmMTQ4MDAyMjk2NzdkZWEwYWFiNmU4ZjVhN2RiMmY0ZmI5NThmZDg4IGxlZ2FjeS10cnVuaworMjE4MzkgOTI2MjZmNDJlMDQzM2NlZjY2ZjVkZTY2MGRlZThhNDhiNjUyODU2ZiBsZWdhY3ktdHJ1bmsKKzIxODQwIDVmYzJiYTFjM2YyNDIzZWU5MzkzMDMzMjhiZGE2NmE1ODFlMDZiZTMgbGVnYWN5LXRydW5rCisyMTg0MSBhMDI3NzlmZDliOTIwZWI3ZmE5NWI3OWM1YzQxMzJiOWU1OTI4N2VmIGxlZ2FjeS10cnVuaworMjE4NDIgMWY5NzQzYTFlZDdiMGIwOGFhOTQxOGI4ZTczZDcyYjIyYzE1NTIyZiBsZWdhY3ktdHJ1bmsKKzIxODQzIDZkNGE1MzBmZTdjMTYyMjExMTY4OTgwZDZlMGE5MTE5ZDRmYWIxOTQgbGVnYWN5LXRydW5rCisyMTg0NCAzODRiOTExM2EyZTBjNjlhZGZiNDJkNWE3MWQ5MjAzMmExZDJhN2QwIGxlZ2FjeS10cnVuaworMjE4NDUgNzkyN2U4Y2Y0NjE1MGFjNGQxMmFlMDg3MjJjN2Y3NWE5MzhjOWVlOCBkZXNjci1icmFuY2gKKzIxODQ2IDM4MjA2ZjI5YjBmYzFjNTQ3NWQ3NzE4NWFhYmE1M2YyMjJjZjFiYjkgbGVnYWN5LXRydW5rCisyMTg0NyBjZmI1N2RiNGMzODhlNzU1ZjlkZTFhMDVkNzJlYWNjZTYwYjYzODgxIGxlZ2FjeS10cnVuaworMjE4NDggNDkyYTFiZDRkMGM1ZmUxYTJkZmM2ZGJjMTIxNTdmNWFlNWIzZDliZiBsZWdhY3ktdHJ1bmsKKzIxODQ5IDllZThmMTZiMGUyNzJmNjllYTQ0MGFmNThmMjg5NTdiODUwNjU4NDYgbGVnYWN5LXRydW5rCisyMTg1MCBmN2JlN2U5YTZmMjAyODFjYmJlNTY4M2EwZDE4MDU4NTFiYjkyYWJjIGxlZ2FjeS10cnVuaworMjE4NTEgZDNiYzgyZDFjNWE5Mjg1NWMwNDA4NzQ0M2NkMWU5MmM5Yjc4NDZmNCBsZWdhY3ktdHJ1bmsKKzIxODUyIGU0MjFhYTQ1MDQwY2QwODY5MWNhMzgyMjQ5NTVmMjU3M2IyYWMwYzYgbGVnYWN5LXRydW5rCisyMTg1MyBhN2JjMzM5ZWUyZjM1MDg5N2NhNTc1MWNhM2MxMTYzMWNmMmZhMWU4IGxlZ2FjeS10cnVuaworMjE4NTQgMmJhMWQ5ZDk5NmEzODNlZTIxMjRkYzNiNzcxNjFlN2Y4NjM2YTVmYyBsZWdhY3ktdHJ1bmsKKzIxODU1IDA1MDVkOWRjODMzZDc0MDM1OTUyODM1MzMxZGEyY2Q0Y2U2YWY2ZWUgbGVnYWN5LXRydW5rCisyMTg1NiBjNjU5ZDRjMDA5Y2JmYjM3ZjE0NGNkOGYwNmQ4Njk5OWVkNzExNzNhIGxlZ2FjeS10cnVuaworMjE4NTcgYWQyZjUyNmYwMDE5ZDQxOTgxZTk5MjA4MDQyNzUyN2VhYmU0MDk5MSBsZWdhY3ktdHJ1bmsKKzIxODU4IDhjYTcwYzljMTk3MTM3NmU1NGI1NTU1OTY0Yjk4MGZhMWViZmJiZjUgbGVnYWN5LXRydW5rCisyMTg1OSA0NzkzMmQ4MmI4ZWIxZmY2MDE4YWQxYzhhYmQzMWU2ZDcwMWM0NjU2IGxlZ2FjeS10cnVuaworMjE4NjAgYTM4ZTc3MjQwYTY3Mzk4MGVlOGQ5ODE4MTQ2MTVmMzEyNzJkMjQ0MiBsZWdhY3ktdHJ1bmsKKzIxODYxIDU0ZDA0NTljOGUwZmRiZDYzYzI0YmVhM2I0NWE1ODc2NTAxNTc4ZDkgbGVnYWN5LXRydW5rCisyMTg2MiBmZDc0Y2I1Yjk1NzMyYzg5ZjRmOTBmNjgzYTJhNTUwMTY0OGJkODFmIGxlZ2FjeS10cnVuaworMjE4NjQgMDljNmZlN2RiYjFjNTNjZDdhZTFlODViZDQxMjU2MTg1ZTZiMWUzOSBkZXNjci1icmFuY2gKKzIxODY1IDQ1ZjUzZmU0NGMwZTZkNWNhNmM1MmY0NzRiNDQyNGIxZjY1ZWIxODYgZGVzY3ItYnJhbmNoCisyMTg2NiA2MmUyNGJjNDdiNjIwNzJkMzE1NzQxM2U0MjQyMDJkZDM5YTJjYTVkIGRlc2NyLWJyYW5jaAorMjE4NjcgYjIxZGYwOTFmYmJmZDZkN2M3ZmZlODY4MTZjODRiZTQxZTQxMmJjMSBkZXNjci1icmFuY2gKKzIxODY3IGQyNTA5NTkxMzNiNWE5OTZiMWVkZjhhNDc3MmZhMDJlNThhM2E5NzIgZGVzY3ItYnJhbmNoCisyMTg2OSA0YzU5ZTkzNGU3NjVkZTUwM2JlOTM2OTg5OGU2OTExNjY5ZmY3ZTkyIGxlZ2FjeS10cnVuaworMjE4NzAgMDY0ZGU4NDM4NWNhZWEwZDI3ZDdlNTlkMDRlNmE5Y2ZhMjM4OTM3YyBsZWdhY3ktdHJ1bmsKKzIxODcxIDUxYzM4MmQ1ODUxYjkxOTJmODZkMWM0NWM2MTgyZTc5NGE1YjhhZDQgbGVnYWN5LXRydW5rCisyMTg3MiAwNzkxN2YxNDM0ODg2MjE2MDNlYzU2NzE5ZDc5OWI3NDBkMjEzZjIyIGxlZ2FjeS10cnVuaworMjE4NzMgMDA2OTU1NTFkNzIxMjExNzA1ZGQ3M2EyMjUxNjMyZjIxZDg2YmQ5NSBsZWdhY3ktdHJ1bmsKKzIxODc0IDQzODE0NjFjY2U1ZGY5MmNlMTM1ZDVhNGQ0YmMzZjBmMjZlN2YxNWYgbGVnYWN5LXRydW5rCisyMTg3NSA5MjE4ZmE2NTIzOTFmM2E4OTFjNzI0YzRiOThkMzdmODZiN2NjNDc1IGxlZ2FjeS10cnVuaworMjE4NzYgMjUyNDRiZGIxNjNkOTIxZTIxMzBjZTZhZTBlMDJlMmFmM2Y2MWE0NyBsZWdhY3ktdHJ1bmsKKzIxODc3IDFjMmRhNzhiODM5YjliMDU4ZDY2YjY3MzVhMjhlNTBmMDY1MGNiMjkgbGVnYWN5LXRydW5rCisyMTg3OCA2Nzk0ZGNhZTVkMGNkOTg0ZTBkMGQ3NDgzYWE1YWU4MjQ4ZDBiYjM2IGxlZ2FjeS10cnVuaworMjE4NzkgYzc2Njc1NmQ4NGQzMzc1ODMzOGU5NDlmNGFlN2ViZDJkN2M1ZjcwMCByZWxlYXNlMjEtbWFpbnQKKzIxODgwIGRhZWE5NGYwNjQyOTYwOWY0YmZiZGQ5YmZiNjQwY2U3OTM2MWI4MzggcmVsZWFzZTIxLW1haW50CisyMTg4MSBhMWYxOWVlMDFhYWUwZDVlZTNjMzJiOTdlZmJjM2MzZjFiNTMxZjU0IHJlbGVhc2UyMS1tYWludAorMjE4ODIgNTM1NDVjMzcxZmUzODQwZDEyMDk0N2M1OTFjNDBjM2Q4MmUxNjlkMCByZWxlYXNlMjEtbWFpbnQKKzIxODgzIDNjZDMwODFkZjYwMWMyMGE5MmY4MWFmNDI1MTg4YWIxN2MwNzIzYjEgbGVnYWN5LXRydW5rCisyMTg4NCA5NWVhNjEwZjNmNTRkNzJhYzg2NmUzNDk3YjgxNmI4MTI1ZTdkZDYxIHJlbGVhc2UyMS1tYWludAorMjE4ODUgMzZjNTYxZWU5NmI1MzI5ZjUwYjAzMGNkYjkzZjVhOWJiZWYwMzNmZSBsZWdhY3ktdHJ1bmsKKzIxODg2IDhkZjc3NDE1YTYxZDU2NGM4NjM5NTY4MjM1OWI0Y2MxYjhjZjZmYWEgbGVnYWN5LXRydW5rCisyMTg4NyAwM2MyMGU3Y2NlNmFjZDRkMjgwNDQ4MGRiNGI3YmNiZTFkZDkzNWY2IGxlZ2FjeS10cnVuaworMjE4ODggNzBlMTg1OGFkNzAzMjIxYTYyNjA4MzdlY2FiOTI5OGZjOGY4OGQ1MiBsZWdhY3ktdHJ1bmsKKzIxODg5IDIzNzM2ODY0NGMxM2Q1MzdjN2MyY2M4NzNhNTkzMzE1ZjQ0MzI1MDkgbGVnYWN5LXRydW5rCisyMTg5MCA3MjZmNGQwNmJkNGJkMzg4MDI5MWVjYTE2MzdjYTllMjA1NTFiMTUyIHJlbGVhc2UyMS1tYWludAorMjE4OTEgMjRkMDA1NTdmYmM5NWFhN2ZkMWZkYTMzODEyZjhiN2UxMDBjMjlhZCByZWxlYXNlMjEtbWFpbnQKKzIxODkyIGIwOTQ5NjU5NjBhZjkxZDBhOTMxNjdhMjg5ZmQxNDU5ZWViNGQzNTMgcmVsZWFzZTIxLW1haW50CisyMTg5MyA0YzBhZGI4YTViYzY1MzkzNDI4ZjY0NTFhNDA0N2M4YjQ3MzMyMTMxIHJlbGVhc2UyMS1tYWludAorMjE4OTQgOGNmNTNkMGY4NWM4NzRlN2ExZTdmN2MwMTVmZTJhMjRkM2I1ZGVkZiByZWxlYXNlMjEtbWFpbnQKKzIxODk1IDVjNzM2MjFjOTU1OWI1OGZiZmNjMDU2OWNmN2Q4M2UwN2E1OTcxOWMgcmVsZWFzZTIxLW1haW50CisyMTg5NiA1YjA3NDcwMjM5ZGI4OTI0Yjg3MzY0M2JmNDY3MzMzNGU5NzliNjEwIGxlZ2FjeS10cnVuaworMjE4OTcgNGNhOWFjZWQ1NTAzN2NmMzE2NTcxOTk3MWM4NDM2MmNhZWVhMjQ3MSBsZWdhY3ktdHJ1bmsKKzIxODk4IDU1MzIwZDYyOTFjOWY1YWI4ZThkNjFlZTQ1MGJlYmE2MWY3NGI3MjIgbGVnYWN5LXRydW5rCisyMTg5OSAzYzA1MGQxZTM1YjEwMmE5NmNkMTMxMDVkZDFiODM4ZmZkZGY5YjY3IGxlZ2FjeS10cnVuaworMjE5MDAgMTFmNGNkNDVhODBjMDc4MzdkMDg0OTVkY2RlZDhkMDRmZGZmODY4NyBsZWdhY3ktdHJ1bmsKKzIxOTAxIGJhYWFjOTRmZWM1NDc1MjBhZmU3MTY2NDZkZjUyNGU0NmU2OGI1NzUgcmVsZWFzZTIxLW1haW50CisyMTkwMiBlZTliNDU4MDQzMzc3MGI0MjdkZTZmMmVlMWQyNzMyOWY2YzVmMGE5IGxlZ2FjeS10cnVuaworMjE5MDMgY2E5ZDdhNjM3OTRmMDE1YjhiOGM3ODVlNWQxMzllNTdhNGFjODhhMSByZWxlYXNlMjEtbWFpbnQKKzIxOTA0IDkxNzE2OGZiZmQ5NGIzZGY3ZmU2YTNlOGViMzFkZTgyMDlmYjIxODQgbGVnYWN5LXRydW5rCisyMTkwNSBhNTU3ZTk1YjkyZjBiZGYyZWUxZTU3MTliMjhkYmY2MjliM2ZlZGI4IHJlbGVhc2UyMS1tYWludAorMjE5MDYgYWU2NzZjZjE0OTVkNGZjZmYzN2U3ODhjY2RhNTI4ODg3NTJhOTQ3MyBsZWdhY3ktdHJ1bmsKKzIxOTA3IGM3ODBjNjFiMzVjZWM5OGRiOTJlOTNiNGY1YmZlMjg3YTgzMjRmMDggcmVsZWFzZTIxLW1haW50CisyMTkwOCBhZDZjNWMyN2VjYmU2M2U4NjE2YTIzZjM2OGVhMTllMDlkYzgxN2NhIHJlbGVhc2UyMS1tYWludAorMjE5MDkgZjhlMjg2OTk3NmIwZTUwNzUwOTE0NTIyMGFhNmI4NTIyNDhhNWQ4MiByZWxlYXNlMjEtbWFpbnQKKzIxOTEwIGQ1MWIyZDkzMzgxNDc4NjE5YzI3Y2ZhNGQzMGJkZjVlOTA0ZTEyZGEgbGVnYWN5LXRydW5rCisyMTkxMSAzMzVlNzViY2I1MWFkODZlMDBiYjc1OGU0MjVlNTI0MjY4YzA5YzYxIGxlZ2FjeS10cnVuaworMjE5MTIgMmNlNmE5YjBhNTFkNjg0Nzc5MjA3NTA0YTljOTIyNDZhMWY0MjAwYSByZWxlYXNlMjEtbWFpbnQKKzIxOTEzIDE0MGI3MjkxMzBkMGM1ZjBiZTMyOGRkZjU3MjNiZjM0NDQ0ODk4NzggcmVsZWFzZTIxLW1haW50CisyMTkxNCBiMDMyOTY0OWI4Y2ZjZmE1YmEzNjFmYTE2MmFlOTQ3NmZlZDVkNjYxIGxlZ2FjeS10cnVuaworMjE5MTUgYzI1ZjJjMTNkMzgwNmY0YzM4NzY1N2VjYWIzOWU1NjY4OTI0ZDE0MCBkZXNjci1icmFuY2gKKzIxOTE2IGRmNGI2YjVlYTliODVjNWM3OGI4ZGZlODcwZTk0YTQ1N2I5NWE0ODYgcmVsZWFzZTIxLW1haW50CisyMTkxNyA1OWQxNGM4ODY1MWNiNDQ0Y2EwZTkyNTc1YWJhMTI1YjQxMTc1Y2YwIGxlZ2FjeS10cnVuaworMjE5MTggZmVjOGY0MDM1ZmIyODY2YWU0NWU4MTQ4MjNkZTY5MWM5YWFlNzY1NSBsZWdhY3ktdHJ1bmsKKzIxOTE5IGRlNmYxNTg5Njg2MTk4MGNhOGQ3MmYzZjgxZDNhNzdmOTBjMDA1MmQgbGVnYWN5LXRydW5rCisyMTkyMCBiMjZmZjE2NDMyMTFmMTRjMmM2MGQ0YTM4ZTkxMWM5Y2QyMTFlMmRlIGxlZ2FjeS10cnVuaworMjE5MjEgNzA0NDg2NjQyMDc5ZmU2MzEzN2MzYTEzODVlNjFiNjJkMWQ5MzM4NCBsZWdhY3ktdHJ1bmsKKzIxOTIyIDFhYTdlMjE5ZjUyZGM4MmE5ZDU2YzY4MDQ4MmVjYzk2ZDNhNTk5ZGEgbGVnYWN5LXRydW5rCisyMTkyMyBjN2NiMWM5ZTlkOWM1N2RiNTI2MTc1YjdmM2ZmY2QyODUyYjU5MjRlIGRlc2NyLWJyYW5jaAorMjE5MjQgYzcxMmIxNmZmYWNkNjNiNWQ2MjgyYjEzMzlkMDEyNmRiYmE0MjZhYSBkZXNjci1icmFuY2gKKzIxOTI1IGIxNDJiNTE3MzA5Yzc1MmQxMTFhNTQ1NTI0MGVlYTg0MTFhMWUwODYgcmVsZWFzZTIxLW1haW50CisyMTkyNiA5MjBlMDM2MWRkNmUzZTc0MmNkNTAzMmM0Y2U3MDQ1NmVjODQxMGY4IGxlZ2FjeS10cnVuaworMjE5MjcgMTMzZTU3MDE1MTAxNGY5ZGYwN2EyMjA2ZGMyMjYxNDYzMWI2ZmQ2OCBsZWdhY3ktdHJ1bmsKKzIxOTI4IDhjYTJlZjY2M2FkMjBjYmQ5ZTgyMDNiODJkZjg5ZjY5NmQzNTQyYzggbGVnYWN5LXRydW5rCisyMTkyOSAyNzZiZjU5NmU4ZDE4MDg2MTU4ZTBlYjg2MjFjODhiZTg3ZGMyYjcwIGxlZ2FjeS10cnVuaworMjE5MzAgZGY5YzRjNTRlZjNlZjlkNjM0MjU4NTczZWJhMmZmNWZjNjU4YTQ3ZiBsZWdhY3ktdHJ1bmsKKzIxOTMxIDc0YjdiOGE5NjI4YjY2MjAwZjAxNDIyNzAwMzlkMzRiMjZkNmRiNTUgbGVnYWN5LXRydW5rCisyMTkzMiBlNWJhZmRkZDFkYTA0MmU5YzQwZjBhNDFkMGRhMWNiOTRiY2ZkY2JlIGxlZ2FjeS10cnVuaworMjE5MzMgZDA5MzhiYzEyYTExZTY3YjNiZTA4ZTFlYmM2MDM1NTMxNTA0NDdhNCBkZXNjci1icmFuY2gKKzIxOTM0IGM2ZWY3MWU5NDNkZDY0MGI0ZmQyMWVlM2JiOTJmZDYzZmFlYTgzNjMgbGVnYWN5LXRydW5rCisyMTkzNSBhYWM2MmFhYTg0NmRlZmFkMGJjNDU1NDljYTMzNDVmZWYyN2Q0ZjJkIGxlZ2FjeS10cnVuaworMjE5MzYgZGI2NDdmN2M4MzFiYzU4YTIzMDI2ZGFmYmFlNzQzOGVmMDYyYzEzYSByZWxlYXNlMjEtbWFpbnQKKzIxOTM3IDkyZjgxNDQ5ZTE2YzIxZTdmOGY5NGE0NWM0YTE4YTExMTIxOGZmODggbGVnYWN5LXRydW5rCisyMTkzOCAwMTY5MmJmMDJmOTc4NTA1NTdhNmU0NGM4ODY2MmUzMTliZGYxM2Y3IGxlZ2FjeS10cnVuaworMjE5MzkgM2NkMDNhNjRjMzM4YzAwMzQzOThhMzI0NjIxZDhiZTE2MzFmZGU3OSBsZWdhY3ktdHJ1bmsKKzIxOTQwIGY4YmQxNGFlZjRkNmZiNWRkZjRlOWQ3YzcyNmYyZmQ4Njg5YzQ5N2MgbGVnYWN5LXRydW5rCisyMTk0MSBhZjlhZDkwYTQ0NDU4YjZlMmQ0OGNjZDhkZGUxYzMxNDM4MmQ2NWY3IGxlZ2FjeS10cnVuaworMjE5NDIgNGQ0NmExYjMzYzYyMTNiZTAwZTdlN2M5NDU5ZTRjZDNkMGUzMzg0ZiBsZWdhY3ktdHJ1bmsKKzIxOTQzIGU3MDkyOWUxMDY2M2NlZGRhODBiNmI0MGM0YTc0M2I4ZTU1NzhiOGYgbGVnYWN5LXRydW5rCisyMTk0NCA4MDJhODRlODRlYTk0MmY2MDY0MDhkMWQ0NjY3MjM0YmI1NjFmMzYxIGxlZ2FjeS10cnVuaworMjE5NDUgMjllMDliOTZlZDM2MzVhOTNjMzljZGVkY2Y3ZjU1ZDYxMzg1MTMzNCBsZWdhY3ktdHJ1bmsKKzIxOTQ2IDc0ZGZlMzIwMDQyM2RkMzZjM2NhYTBkZmJmYmM0YzYyMDg4NDczNDMgcmVsZWFzZTIxLW1haW50CisyMTk0NyAxZDUwODNlNmQxN2U2Y2NlNTdlNmE5YTAwYzJiODNiZjgzODJkMTExIGxlZ2FjeS10cnVuaworMjE5NDggNmJlZjA5ZGE5YjkzMjRmMjgyZDlhZDZiMzNmMzY0Mjk3NWY3YWY1OCBsZWdhY3ktdHJ1bmsKKzIxOTQ5IDBlYmZiMjU5ZWNjNjVlOGNjMjcxNWU2YTRlOTU5ODQwZTA5NzlmZDMgbGVnYWN5LXRydW5rCisyMTk1MCBjYmQyMmM5MDI3YjJiM2QzZjM0OTY2NjVmOWEwMWU0NjQyY2FiYWQyIGxlZ2FjeS10cnVuaworMjE5NTEgZmY4ZTBjZTFkOTg2OTgwNmZjNjhkNjUyNmFkNWIwMDZjYTVhYjYxMSByZWxlYXNlMjEtbWFpbnQKKzIxOTUyIDE0MWJkNzBlMGI3MjMwNTljNmRkNTQ4ZmJjNzk3ZDRlYzQwYWU2ODQgbGVnYWN5LXRydW5rCisyMTk1MyAyZTE3M2RhMTFkMmQxNDZjOGJiODIzYTcyZmZjNTlmM2Q2ODcxYmZmIGxlZ2FjeS10cnVuaworMjE5NTQgODI0MjkwN2M4OTU3M2Y4ZWViMzZhY2UyMWI0YzA5MjkxNTM3N2ZmNyByZWxlYXNlMjEtbWFpbnQKKzIxOTU0IDU3MjUzM2EzMDM4ZDE4MzJjOGEyMDBmYjg3MTgxMTJkZDgzNzU4ZTkgcmVsZWFzZTIxLW1haW50CisyMTk1NiA3OWQzMDRlM2JhMjU3YzkwY2E5MTRhOTg1MmZmMTRiNTFkNWI1ZDFiIGxlZ2FjeS10cnVuaworMjE5NTcgYjEwZmYzMzc4OTZiZTU3N2VkN2MzZWY0MDFiM2Q5YWI2M2RiNTZkMCBsZWdhY3ktdHJ1bmsKKzIxOTU4IDVkZTIzYTYzOGFkNjRlOWY1OTVkY2FkOTc3NGNkMDJmMzdhOWE5YjMgZGVzY3ItYnJhbmNoCisyMTk1OSA3NDNmOGUxZDk1M2NiYzFiZWY2ODk0YWVjMDZlMDhhYjJhOGVhN2ExIGxlZ2FjeS10cnVuaworMjE5NjAgNTc2ODRkM2NlZmNlOTFjMDM5MTliMWM1MWRiNDNkOGRjNWY1NGNhYyBsZWdhY3ktdHJ1bmsKKzIxOTYxIDJkNjg2MjYxNDNhNzljOWZhZjcxYjA5ZTdiYzRjNWNjMDQxMDk5YmIgbGVnYWN5LXRydW5rCisyMTk2MiAyMmIyZjRiNDM2YWZmODM5MDI1YTUzNzdjOTZkMzEzMGNmYjg5NWNmIGxlZ2FjeS10cnVuaworMjE5NjMgNGQzM2FjYmRjNTA4ZjRiZDc5NmJmMWI4ZjJjYmIwNGQ4Mzc2NWVhMiBsZWdhY3ktdHJ1bmsKKzIxOTY0IDIzYWU0N2UwMDExOWYzYzY5NjJlYjc0ODg2MTkwNTM4MTY0YzM3YjggbGVnYWN5LXRydW5rCisyMTk2NSA0NDE1NTEyMWYwMmIxZTI4Mzc0MWY1NjJiMjI0M2FiNmI1MGZjYTUwIGxlZ2FjeS10cnVuaworMjE5NjYgNWViNDYwYTY1ZmY3MGEzNGU1ZjQ1ODg1ZTljMDc5YzY0NWQ1OTYwNyBsZWdhY3ktdHJ1bmsKKzIxOTY3IDAxYWU5NjJkZjg4NWU0ZTZlN2JjY2M4ZjI1NTQ2MTAyMzhjYzMxNzQgbGVnYWN5LXRydW5rCisyMTk2OCA5ODQ4NGVmMjI1ZjkyODlmNjIxODE1OWNhN2YzYjg0ZjcxNmM4MDA3IGxlZ2FjeS10cnVuaworMjE5NjkgYWMxM2E2Y2UxM2UyNGNkMGRhYTE4Y2Y0MDJjODhjMzc0NTk0ZmM1NiBsZWdhY3ktdHJ1bmsKKzIxOTcwIDAxYzYzOTk3MWJmZjEzYmZkNTRmODQ0OTZlODJiZWM5NjA1MDIxOTggbGVnYWN5LXRydW5rCisyMTk3MSBiNDY1Y2Q1MGNmMzY0YTk2MjM1YWIyMzdjNDU0ZDk5Njk3YWVmMTc5IGxlZ2FjeS10cnVuaworMjE5NzIgMGUyMjMxMmM0NzMzNGJiZDg5Y2I5ZGUzMjFiNTNjZDU1ZGUwNmM3YyBsZWdhY3ktdHJ1bmsKKzIxOTczIGY5OTlkMzYwOWY3NDY2ZGM2NDUyNzMyZmI3YTViZDU3M2YwMTU4MDQgbGVnYWN5LXRydW5rCisyMTk3NCAyNDAyMDcwZWUwMjRjMzJlMjFiYTVjMDc3OGYwMjc1NjRjZjA3ZTliIGxlZ2FjeS10cnVuaworMjE5NzUgMThkZjA5NzhkZTVkMmUxMTIyODc2ZGZkYzlkMjA1NmFlMjg2NjAyNiBsZWdhY3ktdHJ1bmsKKzIxOTc3IGIzMDdlNWE4YjRkOGQ1OTFmOWZlOTQ2MTg5MmMyZTNkNjFkY2E2MTcgZGVzY3ItYnJhbmNoCisyMTk3OCAwMTQ2MzlkYzY1ZjhjNzY0ZDkxNjRiYTRiNDg0ZmMyMzg1ZmQ3NzlmIGRlc2NyLWJyYW5jaAorMjE5NzkgN2NkMjJiZjU2ZDdiYzIxODFjNDMyZGU2NzdmNTA5YTdjYWE4YjIxMiBsZWdhY3ktdHJ1bmsKKzIxOTgwIGQxMTE5NjMzYTczZTljZGRhNmI3ZDFkZmM0MWNkNWM1OTBhZDVhYjIgbGVnYWN5LXRydW5rCisyMTk4MSAwMmI4MWRmMDQ4YmM1OWY2N2ZjNjlhNWMxMDZmMjNlNDJlZTY2ODY2IGxlZ2FjeS10cnVuaworMjE5ODMgYzJmYmI1OTQxZWU1NmZiOGE5ODU2ZTkzYjMwM2Q0NDdmMDljMmZkZiBsZWdhY3ktdHJ1bmsKKzIxOTg0IDRkMGVhNGMyMzg2ZDVkODhjNDMzNzE5MWYwYjE3NzBhOWI3NzgwZjIgbGVnYWN5LXRydW5rCisyMTk4NSAzZDUzYjU5ZjQ4ZTY2YzgzNWQwMjg2MzljODY4OGU2M2JhOTEwYTRlIGxlZ2FjeS10cnVuaworMjE5ODYgNjA0NzkwZDQ5M2ZhNzM1OWQ2NmU4MmY5ZDA4ZjkyOGZjZGIyZmE4YyBsZWdhY3ktdHJ1bmsKKzIxOTg3IDE4YTNlMGQ4ODA4ZTBmNzU1NjRiMTNjOTFlOGJjMTMwY2E3ZGJmOTkgcmVsZWFzZTIxLW1haW50CisyMTk4OCBkNTkxYTk2YWVkMDY0M2Q1OWVlNjc1NGJiZWZhNmNjY2JjZDUxYmY1IGxlZ2FjeS10cnVuaworMjE5ODkgOTY0NTVmNGFiYWRkMzNlN2JhNDExMDRmMGI0MjIyZTk2NzY3NTE5YiBsZWdhY3ktdHJ1bmsKKzIxOTkwIDRhNDMxOTUyNjc2YjU3YjAyZWJiMTdiMjI4Mzc5MDU3NTg1Yjc2Y2QgbGVnYWN5LXRydW5rCisyMTk5MSA2ZDk4NzRiYjk3OGZiZjVjNWZkOWY2MmVlOGUzN2FkMzVkNmE2ZGY4IGxlZ2FjeS10cnVuaworMjE5OTIgOTk4ZjgwNTE0YTEzMTI5ODhiMzU0NDk1ODBkNDQ0YzdiMDVmZDY0NiBsZWdhY3ktdHJ1bmsKKzIxOTkzIDc2M2JiNmZhZTI4MGZmNzAyN2VkNzRmZTAwZTdlNDU2NmRlYzI5NzMgbGVnYWN5LXRydW5rCisyMTk5NCA3MGI5YjZmNGU3OWMyYTgyOTY0Y2Y5N2U4OGU3YzI0MmQ0MTJmYzM1IGxlZ2FjeS10cnVuaworMjE5OTUgNDQ2MmM1N2Y2Yzk0OGRkZDhkMDI2YmNlNmNlNWQxNmRmY2E3MDZjYiBsZWdhY3ktdHJ1bmsKKzIxOTk2IDc0ZjA1MGY3YzM2NGRlZmI1OGMxOWE1NzhiNmY3NDVmMjZjNTNkODQgbGVnYWN5LXRydW5rCisyMTk5NyAxYjY4NjhlODlhMjNlOGYwYTBlMDdjYWIxZDhjZWVjMjc5NDJiMmY4IGxlZ2FjeS10cnVuaworMjE5OTggYThiMWFjYzdhMjFmNTRkM2Q1MmQ0ZWZlZjRlMDczYjg2NGM1ZGVmMCBsZWdhY3ktdHJ1bmsKKzIxOTk5IDgxMzE1YjZmOTQ2OTUxMDIwNzRmNGIxYzA0NzdmMzJjMzNhOGUwZGEgbGVnYWN5LXRydW5rCisyMjAwMCA0MTAwN2Q1MGNjYjczZDI3NTYwM2RjZTY0MDYzZjliZjE4ODRjYmIzIGxlZ2FjeS10cnVuaworMjIwMDEgMjllNjYxYzUyYzBiNTVlOWI1OGJiYjE3ZjAyNTZhN2ViNGZlZTlmNiBsZWdhY3ktdHJ1bmsKKzIyMDAyIDBjM2FkNTAzYWQ2YzQ5MjAyODFlMzZjZjllMzk4NTM5ZjlmMTk0MmIgbGVnYWN5LXRydW5rCisyMjAwMyBjMzA3MWJkNmE3MTMzMThjYjBhYjc5ZWY5NjlmYzMzZmQ1YzMwMDYxIGxlZ2FjeS10cnVuaworMjIwMDQgMTA3MzI2NTE1NDI1ZGI3OWE5Mjk0MmIwNTY5MDViODE2YTg0ZTc1YSBsZWdhY3ktdHJ1bmsKKzIyMDA1IDY5M2IzOTgzMWY3MTgxMDcyNTU3NDZlMjAxNDViNTQ2NDRjZDkxOTcgbGVnYWN5LXRydW5rCisyMjAwNiA1MDAwNGJlZDRlNjVhOTE2YjNiNTE1MjM0YTdhZjliOTUzM2NhZWNiIGxlZ2FjeS10cnVuaworMjIwMDcgMzE1YjNjYjEyN2MwNjIyMWQ4NDJlZWFlZGI1YjAwMDE4NDIxMTBjMCBsZWdhY3ktdHJ1bmsKKzIyMDA4IGNlYmI0ZTE4NzQ0OTlkNDgzMDU3NzAxMTU1MDJiODYyMmM2NGFlM2MgbGVnYWN5LXRydW5rCisyMjAwOSBkYzliYWY4MGM0NWFmZDkyNjc2NzlhNjU2NjNkOWUxYWE0N2RkYjEwIGxlZ2FjeS10cnVuaworMjIwMTAgNDY3N2QyZmYzMTUwOGY1ZmE2YWFiNjQwYzU4MzRmNTU5MDYzM2Y0OSBsZWdhY3ktdHJ1bmsKKzIyMDExIGE2MzYxYzJlNTA0NGFjZDQ0NzFhYTg1NDljM2FkMDRjZTEwZTk5NzggbGVnYWN5LXRydW5rCisyMjAxMiAzM2Y4MjA4MDU1OWUxNjk4ZDQwNzkyMzkyMmM0MGMxN2FlNmFhNjk2IGxlZ2FjeS10cnVuaworMjIwMTMgM2FhODdmMzRjYWIwMWI2NDRkMjYyMmEwMzkwZjEyNjFkM2M5NDk5ZiBsZWdhY3ktdHJ1bmsKKzIyMDE0IDZmOTI0MmQ4NzA1OWU4NGZhOGE4YWE2N2VhZTQ5YmNmZGVkNjI2NjcgbGVnYWN5LXRydW5rCisyMjAxNSA0MDkwMDYyMDI5M2U2ZDZkY2MwMWNkNWRhY2ZlMjI5NjAzOWYxMWYzIGxlZ2FjeS10cnVuaworMjIwMTYgYjgwYWM4ZTMxYTgwMmVmZTc0OTYwZDMzODc1MjgxMjQzMzAzNzU3MyBsZWdhY3ktdHJ1bmsKKzIyMDE3IDdjOTI4MTE2YmFhMDBkZTBmM2QxYzI0NjUwNWViNGEzZWY4OWU4YWUgbGVnYWN5LXRydW5rCisyMjAxOCAwODFkOTZmYmNmNDMyY2JiNzUxOGRmZTc2MGQ1N2MwZjFiNjVlODBkIGxlZ2FjeS10cnVuaworMjIwMTkgMWJjMWZkZjE0ODJiMDZjNzdmYWNhNTYwYTVjMmM2YjZjYjZjNWFhNSBsZWdhY3ktdHJ1bmsKKzIyMDIwIGZkYjM4OGYyZGY0ZWFhNzMxOTBiNDI1MDE4NDU0ZTBlOTFkNGZlYjYgbGVnYWN5LXRydW5rCisyMjAyMSAxMzJjNGJmZGJhNzQ4MDE4Y2QwNjYwZTBjOTIzNDljMjc4OTM5ZjI4IGxlZ2FjeS10cnVuaworMjIwMjIgMTMxYTlmNzVlMjU4MmRkNTRlZjZjMTNkYTk2NTY1NzBjZTVmMmQ0OCByZWxlYXNlMjEtbWFpbnQKKzIyMDIzIDNjYzY2NzUwNjg3ZDVjZTgzNGU2NTE4ZGQ2ZjNmNTFhMGQ5NWRiZmUgbGVnYWN5LXRydW5rCisyMjAyNCA3ZTUyYmY1MmFlMzM0ODdkYzQ3NWYyMDM0NjM4ZmM1YmM5MDc5YzZlIGxlZ2FjeS10cnVuaworMjIwMjUgMmRlYTQwZTQwZDlkNTczZTUwNjdhNWM3NjBlOTkwYTM3NTI0ZDBjNyBsZWdhY3ktdHJ1bmsKKzIyMDI2IDAzMzA1NjAyYmE5Yjg1YjNiZmE4MWEzMzdiMjZkNDVlNGNiOGE0NDggbGVnYWN5LXRydW5rCisyMjAyNyA1ZTBhNDBjY2I5ZGE0Y2ZjOTVhNzI3ZTU0MGEwYjNlZGM0OWYwNmZkIGxlZ2FjeS10cnVuaworMjIwMjggYTg1NzVmMzU4YjlmZGY3ZDcwYTU0YzEzNTRlOWFhZTgwZjBhZDdhZCBsZWdhY3ktdHJ1bmsKKzIyMDI5IGFiOGFhNDMwMjEwOTkxMzIyNmUzMTdmMDdhNzkxNjVkZTMzZWM3YmEgbGVnYWN5LXRydW5rCisyMjAzMCBjMDMyYWFmNmM4MTIzMjBkZjIxMjE4NTA4ZGZkMzk2ODA3OTk3MDQwIHJlbGVhc2UyMS1tYWludAorMjIwMzEgYTFmNmZkMDEyMDVmMDIyY2NlZTMwMjZkZjBlNWJhOGYwZGMwMWE2YiByZWxlYXNlMjEtbWFpbnQKKzIyMDMyIGU2NmQ2NDdiNzMyZjIzZjc1YjQxYTdlYmVlODU3OTY3YjFiNjY5Y2EgcmVsZWFzZTIxLW1haW50CisyMjAzMyAxYzVkMjU2YjEyNWE0YzQ4YTA5ODNjZDI4ODBlZGFmYmRlNGNiZWY3IHJlbGVhc2UyMS1tYWludAorMjIwMzQgMDQ1ZjU1MTM1YWQwMDRhNGNiYjFmZWQ3ZTU1MzU4ZGFjNWNkYzA1ZCBsZWdhY3ktdHJ1bmsKKzIyMDM1IDg3NmFlY2VmNjQ4M2YzNGUzOTUyM2NjODkyYTgzMmMwNzkzMzJjNWIgbGVnYWN5LXRydW5rCisyMjAzNiAzZTVjZTk5NDU5ODYyYTIyMjc2OTY4NDJmNTFlZWI3ZGM4NWZkZTFjIGxlZ2FjeS10cnVuaworMjIwMzcgZTE0NjQxNDNjNDYzMzA2MjQ0NjRiZGVmOWFjMTQ0NzgyMDc0Zjk4ZiBsZWdhY3ktdHJ1bmsKKzIyMDM4IDEyY2JjOTQyZjU0OWQ1MzhlZmZmMDVkOTc2Y2ZhNjcwNzAwOTY4MTYgbGVnYWN5LXRydW5rCisyMjAzOSA3N2ZkMjBiY2M3NjYxYTcwYjg0YjViMTRkNDNiYWNmOGEyYTliNDJhIGxlZ2FjeS10cnVuaworMjIwNDAgNDNhYzE4MDRkMmFhY2JkZGNiNWM5Mzk4Yjg5OGU1MTMwZDQ3NmMwNCByZWxlYXNlMjEtbWFpbnQKKzIyMDQxIGVmMjAzMWM1NDg3NTc2MzI0ZDY3ZjM2NzFiOWQ1MWI4NDNmMDU4NmUgbGVnYWN5LXRydW5rCisyMjA0MiA1MzMxZjQ3MDU4YTE5OTEyMzIwMWEyMWZmZGMyNzQ3MmJlZmJjNDJkIGxlZ2FjeS10cnVuaworMjIwNDQgMmIxNjUyNmEzNWE0ZGUxMjFlYjdmMWEyZjZlNWY2YzY4YzUxMWMyNSBkZXNjci1icmFuY2gKKzIyMDQ1IGY1MmMwODNiNTU4ODE2ZTEzYjYzNTlmZjhlNzQ3NDQ3MDdiZjIzMWUgZGVzY3ItYnJhbmNoCisyMjA0NiAzMTQ3ZWZlMzFlYjg5ODIxNTM2OWNiNzFkMWE4MTBiNjlhZWJjNTI2IGRlc2NyLWJyYW5jaAorMjIwNDcgZDk3MmNlYjRkYzA2NDBjZjA1MTliNWQzODI2NzVjYzkzNDhjMmQ3NSBsZWdhY3ktdHJ1bmsKKzIyMDQ4IGQ2NDYyOGNjOGZmYzhhODZkZmY3M2ZjMTNiNjc1ZjNkNTNhY2E0NjIgbGVnYWN5LXRydW5rCisyMjA0OSA2ZjMwMWIzY2YzMjNlYzkzNTQ5YzY4ODZmMDFiMDViODI5ZTc1ODc0IGxlZ2FjeS10cnVuaworMjIwNTAgNGVlMWZlZTFkNGFkYjc0MzA0MGJlNWM5YzY0YzhkNDU3ZDcxYjFlZSBsZWdhY3ktdHJ1bmsKKzIyMDUxIGQxNjY5YWY5ZDBlYzUyZDM3Yjc0OTVlMTNjMzUzMGQ2MTNlZTUxZWIgbGVnYWN5LXRydW5rCisyMjA1MiA3MzQzNjIyZjJiODVkMTQxMjRhNGMzYjc4ZTk4MGU2MGM1YjliOGU1IGxlZ2FjeS10cnVuaworMjIwNTMgZDNkOWNlYTIzMTU2NjlhMjFlNzRlNGU4Y2EyMmE2ZGMwMWYwNTE0MyBsZWdhY3ktdHJ1bmsKKzIyMDU0IGFlMTljNjk5MDc0OTYyMGIwYWU5MThhNzg3ZTcyMDQ2MmMzNmRhYmUgbGVnYWN5LXRydW5rCisyMjA1NSA5YWMxZDM1ZjgxMzY2Y2UyYjI1NGU4MjJiNWFmODhlYmJjMmUxYTE2IGxlZ2FjeS10cnVuaworMjIwNTYgZWE4ZTk2M2Q5ZTY3MjQ0NjlkY2Y2MzYxNjAxYmE2ZjFjMjc5OWRhMSBsZWdhY3ktdHJ1bmsKKzIyMDU3IDZmNTkwMzJhZjE1OGYxODU2MTQ2MDVlOTNhMGU5NjM1MzA5YzdlYzMgbGVnYWN5LXRydW5rCisyMjA1OCA4MTMzN2ZiYTdkZGJlMDU5YjA5MTgyZjE1ZjhkZjE1Mjc5OTlkNDQzIGxlZ2FjeS10cnVuaworMjIwNTkgYzA3NjU1ZjcyNjQ3YjBkZmQ5NDQyZGY2MDJkYzJiMmVhYjliMTgwMSBsZWdhY3ktdHJ1bmsKKzIyMDYwIGE1YWFmNjhmZmNkYWFhYmM5MTg3ZGRhYWFlNGEyNzg2OTNjYjJkM2QgbGVnYWN5LXRydW5rCisyMjA2MSA5ZWNjZjc4ZmVhMWFjMDNlYjU4OWJjNzkwNjFmYjhhNjNjNGI5ZjBkIGxlZ2FjeS10cnVuaworMjIwNjIgNDMyNDU3ZjAyMjg3ODQxMDk2YmJmZjQxZDVhZGFkYmQ3MzJhMmY2NSBsZWdhY3ktdHJ1bmsKKzIyMDYzIGNiNzYxMTdjMWI0YmI4MDA5YjM5ZTRkODE4MTE2ZmIxZWU3NDczOTUgcmVsZWFzZTIxLW1haW50CisyMjA2NCAyNzYzNmM5MWNiMjdjNWExMDU0NDg3NGE2NTFhZTIzNmVlMDM3YmYxIGxlZ2FjeS10cnVuaworMjIwNjUgMWIwOWE5Y2IwNmQ1OWY1MDAwZTMyN2RkMzdhZGEyN2FlZDZhM2I1MCBsZWdhY3ktdHJ1bmsKKzIyMDY2IDNjMTJlZWU3YmJkNDIzNjQ3NmJhYzQ0MWE3Yzc0YTM1YTAxOGIyMTIgcmVsZWFzZTIxLW1haW50CisyMjA2NyBhMzU2NmVlNWIxZjk0ODQ0NGQ5ZjRiNmEwNDA1Mzc1MTY0ZjQ4N2MyIHJlbGVhc2UyMS1tYWludAorMjIwNjggMTExMTJiNzM2YzdiNWFjMGUyN2FhZTdlNDA0MWQxYzc0Yjc3ZThjOCBsZWdhY3ktdHJ1bmsKKzIyMDcwIDEyYjRiYzRhODA0ODhlNTgzYTMwMDE2N2VjZGE0MDNkNTRiZDJkNmYgZGVzY3ItYnJhbmNoCisyMjA3MSA0MDgxYjU2ZjIwZmY1OWJmYjExMzU2NDRhOGJhMmVlYTEwNjQyZDJjIGxlZ2FjeS10cnVuaworMjIwNzIgMmRmZmEzZDNkOTRmZjFhZGEyYjdkZjAwYzUwNWQ4ODNjZjE1Nzk5NyByZWxlYXNlMjEtbWFpbnQKKzIyMDczIDBlMjEyZTg4ZDMzZDA5MmQ5ZDQ3MTY3ZWU2YTc0MTYyMmIwNDU0NTkgbGVnYWN5LXRydW5rCisyMjA3NCA0ZDllYmVlZGJkMDQ1ZmUxOGE5N2RjNDZhNTFkMGViMjZjYWVmODFiIGxlZ2FjeS10cnVuaworMjIwNzUgOGM0MDJhZGVlY2NiYjViMDNhYWU2ZGU2ZjNmY2MwMDBjNjdjMjkyZSBsZWdhY3ktdHJ1bmsKKzIyMDc2IDBiOWNlYTYzYmNmY2RjYzMzYzk4NDI5OTQzNzQ2ZWM2OTkwZjVmNTkgcmVsZWFzZTIxLW1haW50CisyMjA3NyBmNWUyNWZlNDY2YTQxOTFkZDVkMGQ2MjMxNzc5OTI0NDZlZWY3MWVmIHJlbGVhc2UyMS1tYWludAorMjIwNzggOTJlZjM4YjAxMzQ2M2IyNjNlMzc5YjU1MGUwZjVjNDljMGQzMGUwYiByZWxlYXNlMjEtbWFpbnQKKzIyMDc5IDBjZTM1ZTdkNmUzMzY2MzUzNmNjY2I5OWEwNGVkZDU0N2VkY2VjNDkgbGVnYWN5LXRydW5rCisyMjA4MCA2NDM0M2ExMjcyMDgzYzA1MGNjMmVjNmI2OGE1ZjY1YWMxOTRjMjg4IGxlZ2FjeS10cnVuaworMjIwODEgMjI0NTZkMGVlNzM3OThjNDcyMjY2M2Y2Nzc0ZjFiOWRkODYwNDQ4ZSBsZWdhY3ktdHJ1bmsKKzIyMDgyIGM3YmI5NTYzYjE0OTgwMzdjM2EwMmJmZWVlYjczMzMzYTUyM2EwMTIgbGVnYWN5LXRydW5rCisyMjA4MyA5YjI5MWNhNjU0NmM0YjRmOTI0ZmU2ZmMxYjJlYzlmZjI1MzZkY2M2IGxlZ2FjeS10cnVuaworMjIwODQgZjEyZTFhNzY2YTE0MmQ1NDc1NTQ3ZGQ0MzU3ZDcyMTYyNTI5NmEzNyBsZWdhY3ktdHJ1bmsKKzIyMDg1IGFhYWZjODUyYzJkNTNmOGQyOTI1MmY3N2U4OTM4ODQ3YTUyMzA2OTIgbGVnYWN5LXRydW5rCisyMjA4NiBmYjgzN2M1YWU1ZDNmMzZiMTg2OWVmMzA5MGE1NTkwODUwYzVkMDgwIGxlZ2FjeS10cnVuaworMjIwODcgNWJkYmU2MWEwYzI4YmIyYzNmOTYwNTg1MGZkYmQxMGQyYzI3MjQ4YSBsZWdhY3ktdHJ1bmsKKzIyMDg4IDU5YjdlOGVjZmI5NjY3MzIxZDI5ZjRhMzM3NmJjYjY1MTQ0YTI3NWYgbGVnYWN5LXRydW5rCisyMjA4OSA3MWZlYWU3YmY1NjA5NGJmMzQwMTcxOTRjZjBhNmM5OTkxYTIxYzAyIGxlZ2FjeS10cnVuaworMjIwOTAgYmRiYjdjNGRjNjNhZGM1Nzc2NzUwYTE1ZDJkZDZiNjMxMDFkZTZmMyBsZWdhY3ktdHJ1bmsKKzIyMDkxIDIyMTU1YTcxODI1NDE1ZTczYmY4NWFhOWUyZTE0Nzc2MDgwNTYyZjMgbGVnYWN5LXRydW5rCisyMjA5MiBkZWFkOWZhYmJlZmI3YjU3YTAxOWVjZWM0ZTk1NTQwZjAxYTBjNWY1IGxlZ2FjeS10cnVuaworMjIwOTMgMGIxNjI1YTllODlhNzJjZmVjNjdjZjdjZWEyODJjZjcwZTVlMTM0YSBsZWdhY3ktdHJ1bmsKKzIyMDk0IGQyMGE0Y2EwNzA1YzFlYWQ5MzA5ZDM2YTI2NGEyYWE5NGUxMGJhODUgbGVnYWN5LXRydW5rCisyMjA5NSAwMTMyYWY2MzUwNmI5Y2RlMGQ3ZDc2YzcxZDkyNGZhYWQ3ZjJmZmRhIGxlZ2FjeS10cnVuaworMjIwOTYgODU4NDIxN2RkYzhkNmQyMDgyMWZhMjc5ODc3YzNjOTFjODc3MDM0YyBsZWdhY3ktdHJ1bmsKKzIyMDk3IGNiYWJlNTIyYjhmMTY3NmU1ZjdhODFlMjcxYWE4MjNkMTIxMTU0YmMgbGVnYWN5LXRydW5rCisyMjA5OCAyMmU4MjMxNDYzYmE2YjIzZTE1ZTRkZGExNDVjNmRjOWFiYzZjZjY1IGRlc2NyLWJyYW5jaAorMjIwOTkgZWRmMDU4YjE2ZGRmM2ZhZDNmMjI1NTBkNDVkNTZiYjI0YTQzY2YzOCBsZWdhY3ktdHJ1bmsKKzIyMTAwIGNiZmRmNjIzYzI2NmY2OTNmZGEyOWU1NTFjY2ViMTRiODdlNWI0NjMgbGVnYWN5LXRydW5rCisyMjEwMSA1YWYxZWU0MjI1NzUyN2I1MjRhZDZhZDljM2VmNzFhMGFjMzlkNDYxIGxlZ2FjeS10cnVuaworMjIxMDIgNzYyOGFhODE2YWRhOWRhOTY4YTI0YzM1MzRkMTBiZTliMzIzZmJmMCBsZWdhY3ktdHJ1bmsKKzIyMTAzIDI5MTA0MTczYTA3MmViZDYzYzFjZGZlNjcyY2RmY2FhMzA4NzUwMWQgbGVnYWN5LXRydW5rCisyMjEwNCA0NDNhODYyMmU4NTFhYmNmNjJlMjg2NWZhY2MyNTkxN2ZhMDI4NzY0IGxlZ2FjeS10cnVuaworMjIxMDUgNzljNjc2ZjliMzRhOTE0MGI5ODQ3ZTc5YzA1ODE5YTA1MGIxZGI4MyBsZWdhY3ktdHJ1bmsKKzIyMTA2IDk3NTNiMDI2OWYzYWMwZGQ2ODQwZWM4YTIxOTQzZmYyZWJmNDk2YzIgbGVnYWN5LXRydW5rCisyMjEwNyAzNGYwMWM2Y2M4MTg2MTM3MmVmOTg5ODBhYWNkMzgzNzk2YmJkOGNmIGxlZ2FjeS10cnVuaworMjIxMDggNTViNDViNDdmYzQ4NzhmYmY0NTQ0OGRjNzM3OTM4Njg5YzJiNGM1MiBsZWdhY3ktdHJ1bmsKKzIyMTA5IDM2ZTdkMWVhYmQ5MjFhYjA0MzRlNzUyMGRhZmFjMWQzMTk3YjRjNDggbGVnYWN5LXRydW5rCisyMjExMCA5MTQxMjJmYmVhZDJkYzJkZGJhOTk4YjNkZDFhYzQ1MzRlMGMzODliIGxlZ2FjeS10cnVuaworMjIxMTEgZjYxZGY4ZjBjYjQzOGE2NzUzOTRlNzA5OWFhOTQzZGUyNTkwZGQ2NSBsZWdhY3ktdHJ1bmsKKzIyMTEyIGRlYWY3YjEzOWJjOGY0YmJjMGM2Y2QzZWExODUyZjczYWU3ZGY0OGUgZGVzY3ItYnJhbmNoCisyMjExMyBmMDgyMTg5YTQ0NDI5NGI0Njg5OGY2NWU1YTlkNmRkNWI1MzYxODM5IGRlc2NyLWJyYW5jaAorMjIxMTQgNTEwZjdmNmE4NzdlY2Y3NGI1NjNmZWZkODZlNDljNDBiMTQ2ZWQ0ZiBsZWdhY3ktdHJ1bmsKKzIyMTE1IDJiYzY0ODkzMmQ0NGZiMTUzM2RjNDY2Yjg3MGFmNDBkNDQ5ODQ3N2UgbGVnYWN5LXRydW5rCisyMjExNiBiNzMyNjkwZjU2MWM2ZTc2NWI1MDM3NThhMGUwZTk1NmQzYmM1OTlkIGxlZ2FjeS10cnVuaworMjIxMTcgZTdjM2M5YmY1MmIyN2Q1OGVhYjZjOWJiZjFhMTU1MGRiM2Y3NDFkYyBsZWdhY3ktdHJ1bmsKKzIyMTE4IDQyZGQ2MjUxY2MzY2M0ZjAxYmQ0MTFlYjA5MTMxOWMzMzc0Mjg0NTIgbGVnYWN5LXRydW5rCisyMjExOSA3MmEzNjkxZjEwNzFmYWYyZTI2MTFiZTliYzFkN2JhMmI0YmZlNDdhIGxlZ2FjeS10cnVuaworMjIxMjAgNTJiZDllMWRiM2Q5MGE1MjE2OWVlMWEyN2UwNmFkN2JmZjAzMjRmNyBkZXNjci1icmFuY2gKKzIyMTIxIDUyZTkyY2ZhYjIzNzZhM2Q0NTBhMDhkOTg0ODgxYWExZGQyMzQyNzQgbGVnYWN5LXRydW5rCisyMjEyMiAyZjI3ODM4ZDhmYzU5NDI3NTg2MjQ4NmYwMzM1MDUwMTM4ZTA1NzQ4IGxlZ2FjeS10cnVuaworMjIxMjMgMmU0OWYwZTkyYmM1YWE1YzhiODZmZGU5YmNmMmVkM2JlMzJlYjBlNyBsZWdhY3ktdHJ1bmsKKzIyMTI0IDFlZmQ2OWJmMTg0YzM5MDg1MjNiMzkxODU3NzVhNWIxMmRjYjBiMmQgbGVnYWN5LXRydW5rCisyMjEyNSBmYTAyZjc5YmI0OTFjYzcxMTBmODc0YTUwNWFiMjI4YmI2MzZhYTMxIGxlZ2FjeS10cnVuaworMjIxMjYgMGFhMTkxNmNmMTAzNDkxZGM3YjZkNGVjZDg5YmJhZjVkNmYzNTg3YyBsZWdhY3ktdHJ1bmsKKzIyMTI3IDhlMmY2Mjk2ZmQ3YjRhNjc1ZDVjMGJhNmFjMDBhZTJmNmFjY2ZlYWYgbGVnYWN5LXRydW5rCisyMjEyOCBmNDlhMTJlN2UyNGE0MGEwZjQ3NDUzNDc4MjQyOTE4ZmZiMjQ2OGQyIGxlZ2FjeS10cnVuaworMjIxMjkgNGJmZDhhNWRhMGIxZGYxYjdmNzc4OWQ2NDE0NGFkMTNhNWQ2ZWZmNCBkZXNjci1icmFuY2gKKzIyMTMwIDIzZjU1YjlmNGJjNzQ0YjExMGY1YjU1NWY0NDE0ZDk0NTI4NzBiZjIgbGVnYWN5LXRydW5rCisyMjEzMSA0YThkZWQwODcyNjJmMmM1NjZlMDdhZGQzMGI2MWMxMGQ0NWM1NmEzIGxlZ2FjeS10cnVuaworMjIxMzIgMGRlZGFlN2JlM2FhMTA0NzFiYWMwZWU5N2M5NmU2ZGUwNjY1OWEzMyBkZXNjci1icmFuY2gKKzIyMTMzIDBmZGM1ZWViZTQyZDFjNTE4N2I5NjRjNmI1MTBiNzYxMTllMGM5YTEgZGVzY3ItYnJhbmNoCisyMjEzNCA2YzAxODVkZjcxNDdjMzk4MzA0NTJmNmM1ZmMzNDk2NmI4YTQwNmFjIGxlZ2FjeS10cnVuaworMjIxMzUgZGFiOTVjYThhY2ZjMmE0YTcwNjUyMDQ1Yzc1OWFhZjkzMzQzMTRlYiBsZWdhY3ktdHJ1bmsKKzIyMTM3IDQxOTA4NjkzNzc0Njc1YWI2YTAxZTg3OGJlYTlmM2JiMmM2NTQ4MjggZGVzY3ItYnJhbmNoCisyMjEzOCA2NTA5NzNlMjkyNmNhMWY0MDc4MmQxYTczMTJiZDA4MWNiNDE3NmQyIGRlc2NyLWJyYW5jaAorMjIxMzkgMDlkZjMyNTRiNDlkN2M5MzA2NTg1MzAyZmU4MTVhYjBiZGI1MzQzOSBsZWdhY3ktdHJ1bmsKKzIyMTQxIDE1NDFkNWM2YThmMTgxMjA4YWE3Mzc2ZTU3OGIwN2EwNzJjOWVlZGIgbGVnYWN5LXRydW5rCisyMjE0MiA5MDBlMzg1MjRiZjI5MWIxY2Q2YWVlMmUxM2IwOTg1OTZkZjM2NDdiIGxlZ2FjeS10cnVuaworMjIxNDMgNzE0OTE3M2U4ZWRjZGFjNmJmYjI2YWU1NTNjMGQwM2JhOTkyMjQ2MyBsZWdhY3ktdHJ1bmsKKzIyMTQ0IGY4NThmOTg3ZTc3MmEyOTIwMDZlOGY0NjJjZmQwNDVjOTU0YWM2YTkgbGVnYWN5LXRydW5rCisyMjE0NSA2YzIxZTkzOTRiNDRmNGZlMWVkODhkNjhiN2M5YTJhN2MxMzZkYjY3IGxlZ2FjeS10cnVuaworMjIxNDYgZmUzYmM0YTRhZDg0MzZlOWFlMWQ4YzUzMDkwN2MzMzAwNGZiM2M2YiBsZWdhY3ktdHJ1bmsKKzIyMTQ3IGE1ZTRkNGEzMGM5ODM4NTM2NzY5OWMxZDJjMzczMGUxNGFhNjIwZTcgbGVnYWN5LXRydW5rCisyMjE0OCAwMTNjZmZjZmQ4YTNiNDAxOWFhNjMyZDBjNTI1MjFkMTQ5Y2E4YWNiIGxlZ2FjeS10cnVuaworMjIxNDkgOTBkMDZjYmNlMjZhNGIwMTQ1Nzg5NTNjZGMyMTI3MjgwZTFkNDY4NSBsZWdhY3ktdHJ1bmsKKzIyMTUwIGUwMWQyOTYzOWQ4ZTVkM2M3YTU3ZTM3YzI3ZjVmNTUxOTRiNDY3ZGMgbGVnYWN5LXRydW5rCisyMjE1MSBhMDgxOTcwOGZlOWM3MmQ1OGI0ZmU2MTc1MDhhZjUxMDMxYTRiMjVjIGxlZ2FjeS10cnVuaworMjIxNTIgZjhmZGQ1MDgzYWYzNjU5MzgwZmQ1NTkxNGYwNWI1MjA5NmM2OGY2ZSBsZWdhY3ktdHJ1bmsKKzIyMTUzIDJiMTRmMTMwODI3NTUyN2QyYjRkNGVhMmU2NmEyM2I3ZjI2MjIwYzYgbGVnYWN5LXRydW5rCisyMjE1NCAxMzQ2ZWNmMzE4ZjI3N2QwYmU1MmNhYzA5NzVjNDNlYTMwOWRmNjFlIGxlZ2FjeS10cnVuaworMjIxNTUgOTMwNmRhZGRjMjZmZGFiNzg1ODBjZTA2OGM4OTFkZmVkNjFjNGIzZCBsZWdhY3ktdHJ1bmsKKzIyMTU2IDM4OGRmNDljMWMzODIyODI4YzM1M2FiMTkxNGU2ZDk2OTQ0NmViMzAgcmVsZWFzZTIxLW1haW50CisyMjE1NyA0ZGRjNWFiOWJlYzQxOWY2MzBjM2I0ZTc0ODRhYzc4M2JiZDQ0YzJkIHJlbGVhc2UyMS1tYWludAorMjIxNTggZjcyZDYxYjEyNDZlZTAxYzEzMTg2OGEyOWVlODkxNzJiZjllMmJjYyBsZWdhY3ktdHJ1bmsKKzIyMTU5IGU5MGE2NThhNThkNGY2MzNhZmExNjM4YjljMGMwNzNjYWY1YTE1ZDcgbGVnYWN5LXRydW5rCisyMjE2MCA0OGUwZmIwNTVjMzNjYWJhMjQ5ZTM3NWU0YjcyOTZjOTVlODg3NDlkIGxlZ2FjeS10cnVuaworMjIxNjEgZmVmY2MxZTgwY2VlMzU2MGFiNWE3MTI0Y2RjMTY3MmM3MGQ5NDAxYiBsZWdhY3ktdHJ1bmsKKzIyMTYyIDFkYjY5MDBhMDc4MzVhM2Y1YzNlOWVhODk0OTUyNzc0MjdkZmY3YTggbGVnYWN5LXRydW5rCisyMjE2MyBiNzYyMjIwYTYxNTlmYzMzY2MyZTc3MjE5ZmQyNGE4N2RhM2RmZTVmIGxlZ2FjeS10cnVuaworMjIxNjQgZjI4ODViMGRkYmFlYjYwYWNiMDYwOGViYjRhYTE4MjkzM2JjNjQzNCBsZWdhY3ktdHJ1bmsKKzIyMTY1IDQ3ODljMTJhODlmMWJmNDQzMjNiYjA3ZjNkODliOGRhZmNhZjQ2ZTkgbGVnYWN5LXRydW5rCisyMjE2NiBjZjkyNTQyMTAwMTVkYjZmOTY2NDFmYmJjOWJhMmU0NjlhMWRiYzlmIGxlZ2FjeS10cnVuaworMjIxNjcgOWFhNWQ2NmNkMTNkY2ZhM2QyMmU1ZGI2ZDgwODgwYjIyNjNhNGFkNCBsZWdhY3ktdHJ1bmsKKzIyMTY4IGVlZDhhOGE4ZjYyMmM4ZDk5ZDM5Y2M4ODI2YTAxNGM2MTQwYjlmMTcgbGVnYWN5LXRydW5rCisyMjE2OSBkNzU5MDEyMmY5YTI2MTM3MzExMzNhM2I2MmU2ZDRmNmQwOWM0OGI1IGxlZ2FjeS10cnVuaworMjIxNzAgOTMxM2I0OGYxMWMzZjhjNjdiZDI3Mjg1ZjkwNTExMDdmODU1NTI2OSBsZWdhY3ktdHJ1bmsKKzIyMTcxIDkxOWU2MGQ3NzMzNDJjYTRhYWJhMzkxYTQ5OWU1NWM2MjkyYzIxZjggbGVnYWN5LXRydW5rCisyMjE3MiBmOTQ2YjdmN2Q4MzE4ZWYzMDRkM2Y1NjVlNTJkOWRiMjk4N2MwYjliIGxlZ2FjeS10cnVuaworMjIxNzMgZWQ2MmFkMzA4MzRlYjBiNTM1NThkYTcxMWFkZjUyMTc2NjI5MTYzMiBsZWdhY3ktdHJ1bmsKKzIyMTc0IDFhZTcxODk3NmFjNmRjMTE4ZWIyNGJmMzQ3N2RlNGFiMmFkMjg1YjUgbGVnYWN5LXRydW5rCisyMjE3NSAwYzMwN2ZhMzQ0YjVjYTYzNTYzMTkxYTQ2ODY4N2RiMjM3MmNkZmUxIGxlZ2FjeS10cnVuaworMjIxNzYgYjAwZTdiMzhmNzdmMjc1MWY0ZDc1MGE3MjZjOWQ4ZGNlYjNjYTkzMSBsZWdhY3ktdHJ1bmsKKzIyMTc3IGJkOTcyZmE4NDFjNWZlYjZhY2Q0NzQwNWE2ODY0NDk0NTQ4M2RmMDAgbGVnYWN5LXRydW5rCisyMjE3OCA5YzNkNTM5NWUzZmQ5MzA5MzkyYmM2ZmQzYjNmMmViMWQzYTM5NDI1IGxlZ2FjeS10cnVuaworMjIxNzkgZDE0NGM4MWVhZjQ0NjgwZjk1MDc2YzgyNTMwNWRjZTJhYzE5ZWI5NSBsZWdhY3ktdHJ1bmsKKzIyMTgwIGRjNGJlN2JkNjc0NjEwNDFlMDAxNjhjMjU0MjYyMzU0ZTRmOWUxOWEgbGVnYWN5LXRydW5rCisyMjE4MSA2NTFlNjM5NDIwOGM4ZDkxZDgzMmJjYjVlYTg4Y2ZiOGU4YWVmMTNiIGxlZ2FjeS10cnVuaworMjIxODIgMWU2ODZiMDg5OGEyZjY4NzNlZjNlMWJiOWZlNjMxMGUzMzM3NjllYiBsZWdhY3ktdHJ1bmsKKzIyMTgzIDQ3MWE5MDE4MTI5YzNmZDE5MTkxZDY3N2VmNzUwOTUwN2Q5Mzg2ZjAgbGVnYWN5LXRydW5rCisyMjE4NCBmMWNmMmE0NDQxNzQ5ZmIyMDAyMzI5ZWFkZmM3MWJhMDI4ZGM5NDRjIGxlZ2FjeS10cnVuaworMjIxODUgMzQyODQyMTYyMDFiZWE5OTM1YjQxODIzYzFlOWQxOTM1ZWFiNmMwYyBsZWdhY3ktdHJ1bmsKKzIyMTg2IDNkZDhlNjRmNTEyZTg0YWZjNGMzODhiZjQ2NTRiODdiNGNmYjc3MTkgbGVnYWN5LXRydW5rCisyMjE4NyA5ZTRjMTI2NzNmYWI0NGZiZTUyNmVkYmM2YmJjZTA5MmQ0YzliZTAzIGxlZ2FjeS10cnVuaworMjIxODggZGFjOWNjYTQ5MDEyMWMxYWI2MGE1MWJhZmNhZjcyYjBkN2Q4MDlkZCBsZWdhY3ktdHJ1bmsKKzIyMTg5IDhiOWQ4N2FmNjFlYmRiZjY5NTNiZmEwYThhZTVlYzQzNDUyYTkzYmYgbGVnYWN5LXRydW5rCisyMjE5MCAxMTNmMGI1NzQ0YzQwYzkxZjA5MDUxMDQ1ZjQxMTJhNjBmNDlkMjE3IGxlZ2FjeS10cnVuaworMjIxOTEgMDA5MzUwMzFiMzczYzU0OTA4NmUyZDAzNmRjNzYzN2RmZDQ4Y2Y4NSBsZWdhY3ktdHJ1bmsKKzIyMTkyIGJhOWU0ZjU1MTMzZjkzYmUzNjQxMmIxYzM5NmFiZGRjMmVmY2M5ZjcgbGVnYWN5LXRydW5rCisyMjE5MyA5Zjc4NzU5YTUxYjBmNzNjODM4Zjg2YzUzNTA5MGIyZjgwZmFkZDI4IGxlZ2FjeS10cnVuaworMjIxOTQgNGY0ZDgzMDNkZTYwY2Y2YzA2ZmRlNGY4OTgyZDdiNWUyZWEzMjFiMSBsZWdhY3ktdHJ1bmsKKzIyMTk1IDA4Y2Q4MWNkZmZhOWRkMmY0ZDY2OTM5MjhlMzY3Zjc2ZDA4YzM4NWEgbGVnYWN5LXRydW5rCisyMjE5NiBhY2NmMTkyNTQzMWM3NzBlODMxZjE2YjU3NGQ1ZGRlN2JiMWVjYjViIGxlZ2FjeS10cnVuaworMjIxOTcgMmIxMWQxNjZiMDdiNzFhMGM1MDc0NTYzOWY5ZTllZjJmZDg3MzI5MSBsZWdhY3ktdHJ1bmsKKzIyMTk4IDM2MGNlY2U3NjEyMzU1ZTNmYWU0YmY0YWMyOGJiNmQxMWEyMjBlYWIgbGVnYWN5LXRydW5rCisyMjE5OSA3ZmExZjg3Y2E2YjJkM2Y2MmFiOGE4NzhjZmQxZDQyMDBhZDgxNjYzIGxlZ2FjeS10cnVuaworMjIyMDAgYjBhYWY3ODBiY2E2NmM3ZGY0MWM4ZWQ3OTIzMzkyMmFiYTg2NTc2YyBsZWdhY3ktdHJ1bmsKKzIyMjAxIDExNGE5MGE0M2RiN2U5ZTgwN2JmZDQxNTI0ODFmY2Y4NjRiMzE2Y2UgbGVnYWN5LXRydW5rCisyMjIwMiA4MDUwOTBjZTMyOGEwMDE3YzhlZTA5Mjk3MGM3OTFhZTI0ZmEyY2E0IGxlZ2FjeS10cnVuaworMjIyMDMgOTA1OWU3YzFkOGIwMThiN2QxNzE1ZjdlNWQ4MjFmNTY2MWVkYjRjNSBsZWdhY3ktdHJ1bmsKKzIyMjA0IDlmYzRhNWFiYjM2OTQzYWZmM2UzMzRmYzdiYzljN2M0NzdkMWU4YmIgbGVnYWN5LXRydW5rCisyMjIwNSBhZTQzZjk5YjQ3ZTFlMjc2NmJkMjk4ODY3NTNjZWVjYWYyZjY2ZDI0IGxlZ2FjeS10cnVuaworMjIyMDYgYTJiMzU4N2Y1OTJhOGY1ZGRlOWRlN2M2NGQxYmMxNzNkNTkwYzQ5YyBsZWdhY3ktdHJ1bmsKKzIyMjA3IDhlYTYwZTJiMGYyMTllNDIzM2JmYmE1YmVhMTY4MTQwZTEwODU3ZDggbGVnYWN5LXRydW5rCisyMjIwOCAyOGYwZWE4ZDYyNzgxYjRhYzJjNTRlOGZiYWFjZTQ5ZjAwNzdiYjMwIGxlZ2FjeS10cnVuaworMjIyMDkgMmFlMzdjZmIxODlmOWU5YWI0OGIyMjUzZjVlZDk0YzY5MjY0YzgyMCBsZWdhY3ktdHJ1bmsKKzIyMjEwIDE5YTNjNmFmNDM3NDQ2NGUwMTcyYzE2ZDY0OTVhNGVkYWM2Yzk4YmEgbGVnYWN5LXRydW5rCisyMjIxMSBiMTZmOGQwMWM1MWUzYTMzYTgzNTgxNjVlNWZhZTQyZGQ1NmM0OGQ0IGxlZ2FjeS10cnVuaworMjIyMTIgYzk0MmE5ODIxZDA5OTczODZiNGU0YTVjNjlkOWZkZGZmZWUzNDAwMiBsZWdhY3ktdHJ1bmsKKzIyMjEzIDgxMTE0MjA5ZWU4ZWVlODlhNjM5NjI4ZGQ1OTE1OTY3M2E4OGM3NTIgbGVnYWN5LXRydW5rCisyMjIxNCBjZWZkY2Q2MGE4YjJiMDE2NDRjZWM3ZGY2MmU0ZTE0MTNkZGJlMTllIGxlZ2FjeS10cnVuaworMjIyMTUgZjViN2ExZWM0YjlmMmIxZDQ2N2Q1MTY0OWE4MTlhYzUwOTVmMmU2YiBsZWdhY3ktdHJ1bmsKKzIyMjE2IDFiYzY3Y2Y1N2QwYWI2YTZiNzMxNjM4ODA2ZDZkOTNiMDZhMTVhZDggbGVnYWN5LXRydW5rCisyMjIxNyBmZTIwZDFjZmVjM2Q5YTNjMzllMWZiMWUwOGQ2YmZjY2U1NGY3M2E2IGxlZ2FjeS10cnVuaworMjIyMTggYzFkYWE5NGMyMWQ4MzBlMzJlOGFjMTg1ZjU5ZGEzY2EzOGM1MzFjOCBsZWdhY3ktdHJ1bmsKKzIyMjE5IGJiODVjY2JkNGZlZTU1NDNkZTkyZWY4YWViZDlmOWY0NzRjNzFjMDcgbGVnYWN5LXRydW5rCisyMjIyMCA3ZDI3ZTM4OGVjNmM5ZWQwMjM1MTU5ODZhOGExODZkNTJkMzZjYTgyIGxlZ2FjeS10cnVuaworMjIyMjEgZWM2NzZlMTQwNzNkN2ZjZmE1MjFjZDg4MWJmZDQ1OGU3NzE2OWUyNyBsZWdhY3ktdHJ1bmsKKzIyMjIyIDUwZGE2MzczNDFhZTUyMmZiYTJhY2I1MjVhZWMwMWYwZDUzZWVlMzYgbGVnYWN5LXRydW5rCisyMjIyMyAwMzg0OTk0NjY3MjcyOGYxYTdjMmFiMDdkYTJmMDJlNWJkNjFlOWE1IGxlZ2FjeS10cnVuaworMjIyMjQgMDc4YzE5NjFlMTc1MTQ2MDBkNjVmYThjNTIxMmM2NGFiMTg0ZDBhNSBsZWdhY3ktdHJ1bmsKKzIyMjI1IDgyMWUzNTcwNmMwNzE1OWY1YjExMjIzMWJlOGIzNzQ3ZDFjNmI3NzEgbGVnYWN5LXRydW5rCisyMjIyNiAzMGFlM2FmZjAzYmQ5ODQ4OTlmNWE3MTAyOTVlNDNjOWQ1MWZiNzhlIGxlZ2FjeS10cnVuaworMjIyMjcgNjAwYWM1ZGJjNjY2NGY1NGI2MzE1NjMyNzIwNGI5NjQ2ZmVlMDAwNiBsZWdhY3ktdHJ1bmsKKzIyMjI4IGU1NzU0ZjA0OGYwYmMzNWZiYzAwZTQ1ZmY1MTQyZjJkMzMzYjRkNDcgbGVnYWN5LXRydW5rCisyMjIyOSBiYWQ0MDhjN2Q5ZDc4NTQwNmNkNWE5YjY4MzI2YmY5MjNkMzgwNzA2IGxlZ2FjeS10cnVuaworMjIyMzAgN2IxYTA4MDQxNjFlZWQ4NzI0NWRiZWVmYmNiMTgxODc3ODM2OTAwMyBsZWdhY3ktdHJ1bmsKKzIyMjMxIDBhYjhmOTM3ZmY2NjViODU4ZGFkYmI5NzI5OTcxMzQ5YjRkZDlhODkgbGVnYWN5LXRydW5rCisyMjIzMiAyMzg3NmUyZDg0YjZmMWU1MTIyNTAxMGVlNWYzNTY1YzMyOWIxMmM5IGxlZ2FjeS10cnVuaworMjIyMzMgNjBhNzUwMDJhNzRjZmQwMmI1N2I3OWRiMWJkMzFmYmRlY2FmOGQwYiBsZWdhY3ktdHJ1bmsKKzIyMjM0IDk4MzE1ZjBlMWQyNmQ3NDI3ZjY3YjYwMWU2NWU0OGQyZWUyYTE5YjAgbGVnYWN5LXRydW5rCisyMjIzNSA2YjhiNjVmY2NiMDNkOWYxZmM4MzZiMWZhMTgxOTZmNThlOWU2OTlhIGxlZ2FjeS10cnVuaworMjIyMzYgMjYzZGNhZjAwZWVkY2UwY2YyYjZjYjRkMTkyNWRkY2MwODE5MzdiZiBsZWdhY3ktdHJ1bmsKKzIyMjM3IGU0YjY3MDVkYzg0ZjkwZGQxODUwMDUyNTg3YWY4NDNlNjk1N2Q1NmMgbGVnYWN5LXRydW5rCisyMjIzOCA5ZTU3OGZjYjhkZGFiNzNmZDEzMGNjMmFlMjA5NzY3Yjc5YWQ5ZDBiIGxlZ2FjeS10cnVuaworMjIyMzkgZDMyNjhkNjJlNDYyMjFkMjZkZGY4ZDk3N2M4MTJhOWQxMDA1NGM1OCBsZWdhY3ktdHJ1bmsKKzIyMjQwIGQ5MTVhMGVkYjJlYTMxMTFkNzM2YWQyMGRhYTdjMzIxZDEzODhlYWUgbGVnYWN5LXRydW5rCisyMjI0MSBiMTUzMDdkMjliZTdiYzRmZGVjODgzNjQyYjFiZTRmZjMyNjAwNWUzIGxlZ2FjeS10cnVuaworMjIyNDIgYzE3MjljZGMwNzM0MGNlNjIwZDRiZThkZTcyZDI4MGZhN2FmYmQzOCBsZWdhY3ktdHJ1bmsKKzIyMjQzIDNhN2Q2N2VlMTAxMTNlOGZiMjU2ZGM0NzE5MWQ0ZWIyNzI3ODQzYzkgbGVnYWN5LXRydW5rCisyMjI0NCA4MDNhN2ExNDQ4YjJkMWZhZmExNTQwMDc5MzJkZTg1MDc2NzBhNzNmIGxlZ2FjeS10cnVuaworMjIyNDUgMmQwYTA0ZTI3NTgxZThhZGJkY2YxYTA0OWU1MDNjMGFmNDU5MjhjNSBsZWdhY3ktdHJ1bmsKKzIyMjQ2IGY2NmNjZjJjNjNlYjNhOTNlMDJhZGZjOTBiYmM0NDhlODc3MmNkZTUgbGVnYWN5LXRydW5rCisyMjI0NyA0ZGY3MmVhNzhhZTgwNjI4MGMyZTdjNzY5MjRmZmM0ZDIxMWQzY2RjIGxlZ2FjeS10cnVuaworMjIyNDggOWE4OGU1MGJmMTE0NTZlMThlNWUwMDQwZGRiYzBkY2JiMDlkYTIwYyBsZWdhY3ktdHJ1bmsKKzIyMjQ5IGFkMmI4MDc1NWQyZDRjNmJkYmU0NzBiZjk4N2QyYTZhMmE3YjViZmEgbGVnYWN5LXRydW5rCisyMjI1MCA4ZDQ3YTIxZDk1ZTA0MjA3Y2M3NGI5NTQ4ZWYyMDgzOWVmMzNlMzdkIGxlZ2FjeS10cnVuaworMjIyNTEgOGU2MGYzMDAzN2ExZmNmOThkODU2YTIzYTVlMThmYjI4MWU2NGQ0MSBsZWdhY3ktdHJ1bmsKKzIyMjUyIDc0NTc3NGRiZWQ1OGU3NWY4YmFkNjIyYWZmYjg0NjdjYmY1ODc4ZTQgbGVnYWN5LXRydW5rCisyMjI1MyA3ZGI1YjU0MjNjY2Y5OTAzZGMxYjJmZDNmNWM4MzE2NzZmYjM3ZGNjIGxlZ2FjeS10cnVuaworMjIyNTQgMzUwNTBkMTg4YTZhYzFjMWM0OWZkN2Y5YzQ3OTU0YzdmZmU5OTQ0ZSBsZWdhY3ktdHJ1bmsKKzIyMjU1IGUyODJkNmIyYjc1OGU2NGYzNGQyNTIyN2NjNTQ5NTFkN2MyZWI4OTUgbGVnYWN5LXRydW5rCisyMjI1NiAyOGI2NDNiYWQ3NGQyYjY4NTA3ZWMzZWE2NmIyY2YzNzQzODIyM2MxIGxlZ2FjeS10cnVuaworMjIyNTcgMGM1ZTUxNjk0YjBmN2VmNGRmZjY0MDdhMzE2ZDVhMjllYzU4MzY4ZCBsZWdhY3ktdHJ1bmsKKzIyMjU4IGYyMDcyN2NjM2QwZjJmM2JmMTI0ZGFlMTg4ZjBiOWFjNWYyMzkxNzggbGVnYWN5LXRydW5rCisyMjI1OSAzOTY5ZmNiZjk1MDA4NmY0ZTY3MmUwOGY3YTUxNmZiZTVhNjRiZmZhIGxlZ2FjeS10cnVuaworMjIyNjAgMmJiMjQyZGM2OWQ4ZTQ5YTc2ZGJjMDE0YTBhZGIyN2VmZDYyYzE2NSBsZWdhY3ktdHJ1bmsKKzIyMjYxIDExYmJhMzBlOWMyODQwZTA0MzFlNDVmNzZiM2Q3YjFiNTNmMDg2YTQgbGVnYWN5LXRydW5rCisyMjI2MiBjOTBmMDAzNjEwOWQ0YmFhNzFhYzYyMWYwYjdlMTA4MTA0MmE4YTUzIGxlZ2FjeS10cnVuaworMjIyNjMgYTMwNzdmOTZkNDc4OTU5ZjJkMTRlNWNmYzkxYzBiYmIyODE3YzY0OCBsZWdhY3ktdHJ1bmsKKzIyMjY0IDY1ZmU2YjA3MjQ3YjAwNzA3YjVjODk0YTQ3YTg3Mjk4ZDI4MzBhMDcgbGVnYWN5LXRydW5rCisyMjI2NSBmOTQ5NDEzNWI1NzkwOTVkMGJjYmQyZWQ3Yjg2NmFkMWM5N2U0MzU5IGxlZ2FjeS10cnVuaworMjIyNjYgYzk3OTYyNWZlYjQ5Njg5MWU1NDI5N2ZmNjY5OTcyNDA1MWJjNTM2MSBsZWdhY3ktdHJ1bmsKKzIyMjY3IDhiZDA2ZTMyNDliYjVlMGMxYjk4YTA4NGFlYjhiMThmNDQyNjY3NmQgbGVnYWN5LXRydW5rCisyMjI2OCBmNTFiMTNiZjVkNTRmOWYyYThlMGRhYTQwZWE0ZTBkOWJhNDNmY2JlIGxlZ2FjeS10cnVuaworMjIyNjkgZTQyNjIzMGVhNTczMWM5ZjE2MTE1NjJhMmU5ZjlmMWVlZGRiY2Q1YyBsZWdhY3ktdHJ1bmsKKzIyMjcwIDljYzY3YWFmZWM2YzE4ODAwMmJmOTRkYWRlOTg4NzkzZTdkYTM2MWMgbGVnYWN5LXRydW5rCisyMjI3MSBlNTdhNDYxNDQ2OWU2ZjRjYjAzN2JjYzk5N2MxOTQ4NjI2NTY4YzdiIGxlZ2FjeS10cnVuaworMjIyNzIgYWIyZjgwOTVjNGZjYzZkMDJiODNhNDlhOWJiNTUxYzkyY2VjNDk4NSBsZWdhY3ktdHJ1bmsKKzIyMjczIGExYjRmM2ExZWUwNzk2NTVjYmViNWNiYTkzODRjYmUwNTg0MTYyNzkgbGVnYWN5LXRydW5rCisyMjI3NCBkNzk4NjVjMGY4MDQ1ODlkOGI3YmExY2NmZDMyNWUwZTBiOGEzYzk5IGxlZ2FjeS10cnVuaworMjIyNzUgZDAwODAyYzc0YmE0ZGM0MTkwMjQxZTMwNDRmZDA1Yjk4Mjk1MzVlMSBsZWdhY3ktdHJ1bmsKKzIyMjc2IGI2MmM4MGQ1OGQxZWMzYmU1ZDA3Nzc3YjQ1ZTNlODZhZWY3N2E4OTQgbGVnYWN5LXRydW5rCisyMjI3NyAzOWE3M2M2NzczZjEyZWQ5OWJiYjBkYjZlOTE4YzgxOWY3YjcwZTdiIGxlZ2FjeS10cnVuaworMjIyNzggNzY0OTIzZDk4NWE3NjgxNGU0YTdjOTJiZTk0ZDdmY2QzZTNkNGZmMyBsZWdhY3ktdHJ1bmsKKzIyMjc5IDMxMGE5MTcwYWFkNDc2ZGFlMTJkNmM0OThmMDNkZTVlYTQ2ZDQzNGUgbGVnYWN5LXRydW5rCisyMjI4MCBlZmRkY2Y3MTlmZjJlZmM3MmEyNWZkNzE0ZDdkNTMxOGMxYWY5MDc0IGxlZ2FjeS10cnVuaworMjIyODEgOTRjYThlYmE3ZTRmMDk3YmExNjIwZDI0NWVlNjg4ZjM2MmQwMDc0NCBsZWdhY3ktdHJ1bmsKKzIyMjgyIGUyZTU4OWZlYWQzMGYxYWQ4ZmU3NGMyMTdkMDM1YmQ3OTZkYzYwODUgbGVnYWN5LXRydW5rCisyMjI4MyBmNzUxMjVlYWQwYTIzYjk2MzQ4MDZhYWMxZTg2YmM1YjYwYzkwNWMwIGxlZ2FjeS10cnVuaworMjIyODQgYzNlOGY0N2ZlN2M4NGRmNTVjNmM3MzMyNzMzNWUwODVjZDM0NDZjMCBsZWdhY3ktdHJ1bmsKKzIyMjg1IDBhOWNlODFkZTM5OTkxNmE3MWNhY2M0Yjk5YzMzNmQwYWU1YTVmYzUgbGVnYWN5LXRydW5rCisyMjI4NiBjYjhmZGNlOWU2NWE2ZDI5Yzk5OWE1NmIzZTE4ZWI4ZDNiMWQzYmVjIGxlZ2FjeS10cnVuaworMjIyODcgMjdiNGRiZDQyOGZlN2Q1YjAwNjZlOWJjY2Y4ZTdmYzE5NWVjMzIwYiBsZWdhY3ktdHJ1bmsKKzIyMjg4IDM2Y2EzNzZlNTg2NDY1ZWRlMDg4Zjg3NjExNWNkMDQxY2RhMWRhY2MgbGVnYWN5LXRydW5rCisyMjI4OSA4OGQxMjRjNzQ3NjYwNmY2ZDJjMzIyMGZiYzUxODBlYWNjNjkzOTlmIGxlZ2FjeS10cnVuaworMjIyOTAgNWMyN2YwZTRmNTBmNzM2ZWY4NWU2MTY3YTdlNzFjMDA5ZWU0YjE0YyBsZWdhY3ktdHJ1bmsKKzIyMjkxIDlmNzg1MDczZTQ4YmRmM2M0OWRmNDNhMmJjZGE3NDZhMDM0ZWVhNTAgbGVnYWN5LXRydW5rCisyMjI5MiA2ZTk1OGQ1ZTk4OGJkMDVjMzQ2YzczNTJkNTMwN2Q5MzhkMDA4YWU5IGxlZ2FjeS10cnVuaworMjIyOTMgZjNlMjc4YmM0MzllMjcwOGExYWQwNzQyMmM5YzIwYzYwMmU0ZTlmMCBsZWdhY3ktdHJ1bmsKKzIyMjk0IDk2ZWJmMmI4ODZmNzY4MjliNGY5NzlhOTc2M2E4MWNjYWJhYmMzNDIgbGVnYWN5LXRydW5rCisyMjI5NSAxOTYwY2VlYzFhMDBiYTU2MjM5MTRhMGFmNDMwY2UyM2MwZjg4NmQ2IGxlZ2FjeS10cnVuaworMjIyOTYgYzRiMzFiZTdlMDgwYjk1YmM5NmVlMWIxOWE5YTBlZDg1NDhlNDc0ZCBsZWdhY3ktdHJ1bmsKKzIyMjk3IGU0MTFiZmI5ZGI1NzY0YWJiNDVlMzc1ZWE4MzU3NzRmYjQzMmRlZWYgbGVnYWN5LXRydW5rCisyMjI5OCA2ZmFlZDYxNWIwNThkZmMwMmEyOWE2NWIzMGJlMWFkNGVkYjhkNzM2IGxlZ2FjeS10cnVuaworMjIyOTkgZTc5ZmQzOTM0ZjYxMDI3ZmYwNDQ5M2FlYTlkNWQ3NWI4ZmE2YWJjYSBsZWdhY3ktdHJ1bmsKKzIyMzAwIDk3ZGU4NjhhZDBmNDAyODQzYzU2YzExNTY3ODlmYjFmMDZlNGQzOTQgbGVnYWN5LXRydW5rCisyMjMwMSA4ZWJmNzFlMWVkMjk4ZWE5MjFiNjgyMWNhYjY1ZTk4MmMyNmM5ODMyIGxlZ2FjeS10cnVuaworMjIzMDIgMTFhOTc2N2U1ZDhhNTNmMjVlNGMxNTU3YmM4YTMxNzc2OGYwYjMyNSBsZWdhY3ktdHJ1bmsKKzIyMzAzIDQ1Y2NmM2I4ODliNTAzNjhkZDAxNWZhOTBhYWM3Nzc5MDNiMjBkNDkgbGVnYWN5LXRydW5rCisyMjMwNCA5ZTZmNzgwNGVmMTQ1ZGQ4YzM3NTYzZjU3YjMzYTYyODE0NzljMjY2IGxlZ2FjeS10cnVuaworMjIzMDUgYzk1ZjBhMTJiNTFhNTlkMDZhNzUxYmY3NjA5ZDBhMDdlMGY3NmM0MSBsZWdhY3ktdHJ1bmsKKzIyMzA2IGRlNWQ3YTk0MjhlZjkwY2I3ZjM5NGFhNTE2NjUzMWIxYjM0OGUxOGYgbGVnYWN5LXRydW5rCisyMjMwNyBjMjM4NzQ1ZTBhYWU2YzA2NmNlMjIwODM5NTIyOWZhNzdmODI3YzY5IGxlZ2FjeS10cnVuaworMjIzMDggNjM1MGJiYWE2MzJhNzU1ZDgzOWMzZDY2Y2EwZDg0NGZmMTA1ZGY5ZSBsZWdhY3ktdHJ1bmsKKzIyMzA5IDllYzU2MTFjZmU5YzAzMzAzNDMyYmE3NTkwYzlhMTNkMWZmZDJlMDUgbGVnYWN5LXRydW5rCisyMjMxMCAzNDIwYzllNmFmMTEyOWU1YmE2NDU4MGY3Y2Q3MTliMTY0NjRhMDlhIGxlZ2FjeS10cnVuaworMjIzMTEgODc1YWM4ZTkzNTQyNGJkNmIwMzUzMjg0MTRiMTcyZGNiYmY4ODFhOCBsZWdhY3ktdHJ1bmsKKzIyMzEyIGVlYThkZmJiZWU4NjAyOTBmNzgzMWZiOWUyYTdlN2U2YjQwNzY4NDAgbGVnYWN5LXRydW5rCisyMjMxMyAxMGVjMzk2ODQyOGRjODNjODVjMjExZGY2MDAzYWRjODRhODI4MWM2IGxlZ2FjeS10cnVuaworMjIzMTQgMTMxYTAxYjZmNmM3MTRlNTkxOGJlZWU1ZDUwYTg4YzA2ZDcyNjg2NCBsZWdhY3ktdHJ1bmsKKzIyMzE1IGI3OTg0YzliYmYyY2RlMDM4YjQzYTAwNmE1YzU3MGJjMGFhNzU3YWEgbGVnYWN5LXRydW5rCisyMjMxNiAzNzNjYzU5NDE1OTAwYjQ0YjU5YmUyNzM2Y2EwNzQ1M2YwY2UzNDFiIGxlZ2FjeS10cnVuaworMjIzMTcgMDIwMWJiNWUzYjgzNmIzN2I2ZmE1Y2M0YjdjZmNjY2ZhYmNhMjhkZiBsZWdhY3ktdHJ1bmsKKzIyMzE4IDZiYTQ0MTUwNzIyMDRhNjFiYzI3YjE4ZTI5Y2NlYjcwMGI5NDRjYjkgbGVnYWN5LXRydW5rCisyMjMxOSBiNTU0NzhiZDkxNjVjNGZlMzlmNDI2NjJmN2Y4NDI4ZWExOWVhNDhjIGxlZ2FjeS10cnVuaworMjIzMjAgYjM1NTM3NmQwNzMxMjc4YWVjNWZhZDFlOTM5OTJiYTg3ODk3ZDkzMiBsZWdhY3ktdHJ1bmsKKzIyMzIxIDc4MjZjYzM3YTIzNGI4YjEwYmZhNWU1YWQ4NTk3OGY2M2MzOTkxNmEgbGVnYWN5LXRydW5rCisyMjMyMiAxNzUyNWI2YzUzMmM1OTI0ZTYxZjgyYzFjMzcxNGM1OTcxYmU5NzhhIGxlZ2FjeS10cnVuaworMjIzMjMgMTNkMGYzNGI2YTE2MDk5OWZlYzExYmY3NTE5Zjg5NjQwMDc3NzA0MiBsZWdhY3ktdHJ1bmsKKzIyMzI0IDhjYmY5ODRjOWMxM2Y0NzVhNmMwOGYwYTc5NjRmODA0YzU4OTQ1YmYgbGVnYWN5LXRydW5rCisyMjMyNSA5MTI5OTQxOGI3MmRjOWE4YmZjYjJlNjEyNjEyYjJlNzA1MTUyOTljIGxlZ2FjeS10cnVuaworMjIzMjYgNjAwYTlhMmI3YTE4MzEzMGYwYjY0ZmRlMmMwZjEyZWNjYWJlOGQ2YyBsZWdhY3ktdHJ1bmsKKzIyMzI3IDk1NTE1YzZiNjk0YWI1Y2ZhZGRjNjVlNGU1MzIyODdjMjgwMGRkNTggcmVsZWFzZTIxLW1haW50CisyMjMyOCA3N2U0MDVmM2E5NDJhOTE3ZmYxZTQ1OGM2MTA3M2FiMWY4ZTk4MWY5IGxlZ2FjeS10cnVuaworMjIzMjkgNjcyOWJmMzBkM2FlNWIxOGRmNjU2NTI2ZTUxNDAzNGU4MjQ0YTdmZiBsZWdhY3ktdHJ1bmsKKzIyMzMwIGUwODQ3YmExZDZmNGViMDZhM2U4NjgxNDc0ZjRhYTgxZDhjNDM0OGYgbGVnYWN5LXRydW5rCisyMjMzMSBhZjQ4MjA1NWQ1Y2U0OTBhMGRjY2JkZjZiY2Q1MzEwMGM2NjBlNDczIGxlZ2FjeS10cnVuaworMjIzMzIgZjhiNTFjOGNhMDgyNjMxOGM2ZjI4N2EwM2FlZWJhZTU4NGRjOTc4OSBsZWdhY3ktdHJ1bmsKKzIyMzMzIDY3YmUzYTY4ZmRlNDkyNDE0YmEyMjM3MmVmNDMzNTA4ZWE5Mzk0NWYgbGVnYWN5LXRydW5rCisyMjMzNCA3ODc1MmVhZTEzMmUxYjJjYTlkMTczMWFhZjljNzVlMzIwMWYxYTBjIGxlZ2FjeS10cnVuaworMjIzMzUgNDkwMWE5MzU0OTBkZDg2YmI0MDcyZWFmZDE0OTYxYTU2MTcxNjc2ZiBsZWdhY3ktdHJ1bmsKKzIyMzM2IGMzOTU5ZjZlNDA0NDc4YmQ1NjMzOWEzZTE2YzAzMWE2MmEwMjE2ZmQgbGVnYWN5LXRydW5rCisyMjMzNyA5NTdkZDY0NmI1Yjc0MzRmZDg5YTMwNjE3NDA3N2IzMTJiNjUyMmJkIGxlZ2FjeS10cnVuaworMjIzMzggNjc2OThkNjg5MjAzMjBmYThlMjFhZWUzZWZlZmIwMTRhNmI4MmEzZiBsZWdhY3ktdHJ1bmsKKzIyMzM5IDQwYTE3ZDk1MDBhOGI2ZWU3ZjI5NGY2M2IyNDZjZDMyYmFhN2M1MjggbGVnYWN5LXRydW5rCisyMjM0MCA5OGJiYTk4M2JmZDM3Y2ZmOTkwOTJkYjcwMjQ5ZjQ4OTRhNWMzYmE2IGxlZ2FjeS10cnVuaworMjIzNDEgZDk4MTIxOTMwZTcwNjFmNGNiZjcyNTJmMDdmN2M0MGFkNWE0NzI4ZCBsZWdhY3ktdHJ1bmsKKzIyMzQyIDNmOGE1NmY1MmNkNjFiYmE1NWM5ODBlYmQ5NGM1ZTkxNDc5YmIwMzAgbGVnYWN5LXRydW5rCisyMjM0MyA2NDYzY2Q5ZGIyZmNlZWNmNThjMmU2OGQ0Mzk1OTMyMDhkNWRlMDE1IGxlZ2FjeS10cnVuaworMjIzNDQgZmIxMmVhOTI5MGIyZDIxNzI5MTZhYTM1YzMyYTczMWMxZjkwMmUwNSBsZWdhY3ktdHJ1bmsKKzIyMzQ1IDgxNWU3ODEyNTM1N2FmNzk4ZDU4Mjg1NTVlNTE5MGU1NmUyMjI1MGMgbGVnYWN5LXRydW5rCisyMjM0NiA0YThhYjY3NzczYTljNmM1M2E1MzA1Y2RkNjE4YjcwNmI1MGU2M2I4IGxlZ2FjeS10cnVuaworMjIzNDcgOGMzNzhmOTA4NmNkNzNiNTRiZmJiMjFiYmRlMDY2ODAyYzAzY2QzYyBsZWdhY3ktdHJ1bmsKKzIyMzQ4IGUwMDFhOWNkZTZiYWY2YzhhY2RiNmU1YTJkZTkzN2RlZDlkOGJmNjUgbGVnYWN5LXRydW5rCisyMjM0OSAyZDY3ZDIzOGQ0ZTkxOGJhYmVjMWIzNGEyNjBlYzExNWFjMmQzZDM1IGxlZ2FjeS10cnVuaworMjIzNTAgODUyOTJkOTU5ZTFiODc3ZTk1NzgzOWViNTE2NWZlYzMzYjczZGQwYSBsZWdhY3ktdHJ1bmsKKzIyMzUxIDA4Y2ZkOGU5OTgwNjYyODQxOTkyM2NiZGJiZTBkODc5M2RhMDEzNGEgbGVnYWN5LXRydW5rCisyMjM1MiBmMGQ1MmE4ZmRlNWZlOGQ5OTM4OWQxNWIxZjUxZTU1YmI0NWEyZjFmIGxlZ2FjeS10cnVuaworMjIzNTMgZWRmOGQyZDFhOTBiNjk4OTNkNWFlNmI1OGUwNDNmOGJhYThjMzlkZSBsZWdhY3ktdHJ1bmsKKzIyMzU0IDJmM2IxODMwOWNjZTY3OGM0NmZjZGVjYjY2ODQ1NGM1NjRmMDJiMTMgbGVnYWN5LXRydW5rCisyMjM1NSA4MDlhZWM2NGE3OGViYTJmODEwMjljMmFiNGU5MjlhNzhhY2IxZDgwIGxlZ2FjeS10cnVuaworMjIzNTYgNDgxYjgxZDMwMGRmODJlOTRlOTgwZjQ1YmMxMTM5NmRmYzU1OGM5YiBsZWdhY3ktdHJ1bmsKKzIyMzU3IDNmMzRmNzI0ZjAxNDg5YmNiZDYxOTNlODhhZDA2NjVhMDNjZGFmODMgbGVnYWN5LXRydW5rCisyMjM1OCBjZDQ0MjU0MzYwYjZlYTk0YzdmNGQxN2RjMjIyNmVjZWYxYmY1ZTUxIGxlZ2FjeS10cnVuaworMjIzNTkgMWU2ZjRiYjY1MDY5ZDIzZTI0YzYwMDNiZDYwYWY2Yjk2YjZiOTFlMSBsZWdhY3ktdHJ1bmsKKzIyMzYwIDY0ZDRhZDczYTg4NzVlMGU4MTgyMTMwZDQwYWQwOWNjYmU3OTZiY2YgbGVnYWN5LXRydW5rCisyMjM2MSA3YTFlZjY3NWQ4YWNmMDQ0YWQwMWNhNDA4YmM3N2JhYTA1Y2U0MDkzIGxlZ2FjeS10cnVuaworMjIzNjIgMmY0MWM5NTJiZWIwNThlZDM4ZjY5MzNmZWJmNWEwMTNkMDQ3MGE0MiBsZWdhY3ktdHJ1bmsKKzIyMzYzIDc3NjYyOGVlYThmNzM2NzQ2MGZhZDA5ZDUzYWRkNGM2OTVmNzg1NTYgbGVnYWN5LXRydW5rCisyMjM2NCBiNzY1OGU2NjVkMmVjN2EzOTg3NGQ4ZmZjNzdiYTEzYTE4OTFmMGEzIGxlZ2FjeS10cnVuaworMjIzNjUgOTdhM2QzZDcwMjlmOGZiMjZiMjQ0NTBkZWRjNTQ3ZmFlMTllNDU3MiBsZWdhY3ktdHJ1bmsKKzIyMzY2IDM1MzcwNjJiM2RjMWJlMDgxZDRiOGU0NjgyNzE0ZTRkNWMxZmE4ZmYgbGVnYWN5LXRydW5rCisyMjM2NyA5ZDAyNGFlMDU4MzdjOTRiZTg2NTNlY2QxMjNlODY5YzY0YjhhNTRjIGxlZ2FjeS10cnVuaworMjIzNjggZDY0ZTA1OWNkMTk5ZGEzOGVhMTJmNjQzN2E0YzIwZGNhOGIxNTFkZCBsZWdhY3ktdHJ1bmsKKzIyMzY5IGIwNmQ5ZGJkYWY4ZmJlNzViYjMxMzE4Y2I1MzQwYWY5OTA0MWJhYzggbGVnYWN5LXRydW5rCisyMjM3MCBiMTYwZmE2M2Y0MGM1N2E0NDEzNjg0MDRmNTFiNWVkMWIwM2I5YTExIGxlZ2FjeS10cnVuaworMjIzNzEgNWQ2YjJjMTdlYTJjZDdhODcxODEyMDA2OGYzNjVjNjk5Y2RjODUxMyBsZWdhY3ktdHJ1bmsKKzIyMzcyIDAzOWUzZDI2ZWEzNWNhNjEzMzhhYTI1MTA5NjlkZTg2MzlmZTY3MDkgbGVnYWN5LXRydW5rCisyMjM3MyA2N2YzNTRkNDM0N2Q1ODIyODIzNmI2YWE4ZGY1ZjVlYmFjMDg4ZTk4IGxlZ2FjeS10cnVuaworMjIzNzQgMzA4NjBiZTNhZTdiZTlmNGRkZjVmMTdjNjBiN2RhZTUyYjQ3NTRiMSBsZWdhY3ktdHJ1bmsKKzIyMzc1IDgwMmM0Zjk0MGE0ZWEzMWEwOTkzNjFiM2E2YzAwM2MyNDlhMWEyM2UgbGVnYWN5LXRydW5rCisyMjM3NiA5NjYxMDkzZDNlMmFmZmMzZjc2OTMwMzcwZmVjNTI5MWRhNzc5NTUwIGxlZ2FjeS10cnVuaworMjIzNzcgODFmNGNkZjg2ODU1NzIyNjJiMmI5ODFlOWQ1YzU1NTlhZDk3N2VmYyBsZWdhY3ktdHJ1bmsKKzIyMzc4IDJmNjU5M2JmNThhZmJmOTNmZGE0NmQ2YjUwNDVhMDY3NDBkNzgzNjQgbGVnYWN5LXRydW5rCisyMjM3OSBjYjM0NmJhZWRhZDZjNGE0MThiY2JjZDgwNjIxNDBhNWIxYTVlOTRlIGxlZ2FjeS10cnVuaworMjIzODAgZjBkYjM0NTYyMWJhN2VmY2FmMmQwMjc1M2MxMTQ0YjgyOTViN2I2OCBsZWdhY3ktdHJ1bmsKKzIyMzgxIDcwNGFkODM0ZGUyNzY5NmJlNWE1MGU5MWVkZGJlNjg3MzA1YjliNTQgcmVsZWFzZTIxLW1haW50CisyMjM4MiBiMDAwMmQ3YzIyYjFmMGNkY2E5NmVhNTUxMTgyNWZiMDAzZGJkMTIyIGxlZ2FjeS10cnVuaworMjIzODMgZmZmNmM2NjI4NTlkOWMwYTA5Yjg4MWE3ZGJjMDNiMTYxNWViMjk0ZiBsZWdhY3ktdHJ1bmsKKzIyMzg0IDUwZjg4ZWU3MWQ0NWEzZDdmMjgwNzIwNjliYjQxOGQzNzM2ZGEyOGUgbGVnYWN5LXRydW5rCisyMjM4NSBjYTEyZTFlMzMzZWExMDQwMzYwMjg5MTM5ZWUzN2I4ODVjNDhkMjQ2IGxlZ2FjeS10cnVuaworMjIzODYgNjM3MGEwZjk4OGYwZDNmNjVhMjE3OWM5YWY2OWY2ZTkxNmFiYzIzOSBsZWdhY3ktdHJ1bmsKKzIyMzg3IGZkZTNiMGY3MmUzODkwMmVlY2U1NzhjZDhhNDM1NWUxM2U0NzU2MGQgbGVnYWN5LXRydW5rCisyMjM4OCAxZDQ2MmI3Mzc4MTBkYzgyMGQ5OTdmMmU4MTM0NjNiMTVlYmJjNTUyIGxlZ2FjeS10cnVuaworMjIzODkgZmMzOWMyMmI1YTdhZDE1YjQ3NDhlYzVlMTAwNzhlZGE0ZDk2Y2M3YyBsZWdhY3ktdHJ1bmsKKzIyMzkwIGIxNDk1MWNkMjU2NzNhNjAxNjZjNzBlOGE0OTE0NzU2ZTFhMTZjMWQgbGVnYWN5LXRydW5rCisyMjM5MiAyOTY3Y2E5NmQwN2VlN2VlMDk5N2JiNjgwODM5MTU1NzQ2YzVjOWY0IGxlZ2FjeS10cnVuaworMjIzOTMgNzhkMDBmNzAyM2EyMTZmMWI3NzU4MjEzNjhiZmUxZjBhMWY2ZGFhMCBsZWdhY3ktdHJ1bmsKKzIyMzk0IGNkZDBjN2E0NTU3NWEyOTExZjk1YjkwY2NmMzliNGZmZjlkZWM5YzIgbGVnYWN5LXRydW5rCisyMjM5NSAzMGY4YjY1NGMyZTViZmYzY2RhZjEyYTliMTgxMDFjZDVkZjVjMDE2IGxlZ2FjeS10cnVuaworMjIzOTYgYmNmZTMwY2QxZjBkZTE2YzllZDk1ODJjNGM4NzA3ZGI4NGU4ODRlZiBsZWdhY3ktdHJ1bmsKKzIyMzk3IDExNWU0MDk5ZjNkOTc5ZmIwZGViNDRjOWI2YjNiMzk2ZmZmMjEwZDcgbGVnYWN5LXRydW5rCisyMjM5OCBiZWU3NTU3MjEzYjIyOTkzMjk2NDYzZDg4OTAzMjM5ZTJjOTZjN2Y5IGxlZ2FjeS10cnVuaworMjIzOTkgYTk3YzgwNjRjOWQ4M2E0MTU4YTdhZTY5MmVkOTg4YjFmMzcxMzUzYiBsZWdhY3ktdHJ1bmsKKzIyNDAwIDY4MDIzMmZiNjFmMzAyMDdmMWRjN2ZmZDI3NGY4ZDQ2OWFhNTlmY2YgbGVnYWN5LXRydW5rCisyMjQwMSAwOTVjODlhODI1YTkwYTFiZjk3ZDg4MTE1YjA1NTY2MDgxM2I3YWM1IGxlZ2FjeS10cnVuaworMjI0MDIgN2U5ZjVjNTllOWYyN2YwMjY0ZGEyNjU3MDQ3NGY5YWQzNWFmNGVlZSBsZWdhY3ktdHJ1bmsKKzIyNDAzIDdlNDQ4NzNkYWY3YmRjMzdiYTFlZmM5M2IxZjIyMzE4OWRiZGMxZDcgbGVnYWN5LXRydW5rCisyMjQwNCAzMDFiY2IwMWI1MDM0NWYxYWQ2MDM3NDlkZjg2Yjc4YWQ5NGZjYTJlIGxlZ2FjeS10cnVuaworMjI0MDUgMDFhOWI3ODA3MTYwYjE4MTA4YTM4OTQyYjdmMzEyMDNmYjY4ZjdjYyBsZWdhY3ktdHJ1bmsKKzIyNDA2IDNjMWM5OTQ4ZmY2NTU3Y2VkYzBjYzQyZjRjYjI4OGI1ZGM5MDZiZjYgbGVnYWN5LXRydW5rCisyMjQwNyAzODM3ZGNjZDExY2FkMzUyNzUwMGRhMTI0YWZmMzgwYTg0NzU3Yzg1IGxlZ2FjeS10cnVuaworMjI0MDggNTBmYjQ2ODNhNDYxODYzNzlmZDU3YjMxOGRjY2U3NDMzZDMxMGVmYiBsZWdhY3ktdHJ1bmsKKzIyNDA5IDJjNGMyY2FhYmNmY2Q5M2IzNGJmMjM5Y2QyZWI3M2ZkZTM0MThlOGYgbGVnYWN5LXRydW5rCisyMjQxMCA0N2E0NWRhMDNiMDlhYzgxMjVmYzUwNzVjZTI3OTk1MzA5Mjc3YTQyIGxlZ2FjeS10cnVuaworMjI0MTEgY2QxMzEwZTg3ZmUyMTU1ZjM0M2M1YTU3ODkzOGJhYTg4NWY2NzhjZiBsZWdhY3ktdHJ1bmsKKzIyNDEyIDY3ZGNmMDRmYTc1NDE4NTRjNWFhYWU4MThmOTZkZjY2Njc3NzA4ZmMgbGVnYWN5LXRydW5rCisyMjQxMyBhY2MwZmZhYjA3NzFjOTAzNzQzOGRmYmU5NTQ3OTgzZDVkMDc0NTg5IGxlZ2FjeS10cnVuaworMjI0MTQgZGUxYzJkNGQ3MmJhMTc3YTJhOGZlM2EwNmRmZjQ5MzIxMzRkYTA0MyBsZWdhY3ktdHJ1bmsKKzIyNDE1IGZiMTUzZTMwNjE1Mjg4NmUzNDBkNWJkMWRhYTQ3NWU0NDVlYzM3MDkgbGVnYWN5LXRydW5rCisyMjQxNiA3YjUzZmIzYmEwMTE5MmJlYTA0OTMxMTM1NmE0MGNkZmEwMDZiNzRiIGxlZ2FjeS10cnVuaworMjI0MTcgODY5MTQ4NGM1YmVmNTMzZGRhMDRjYWRiZmQ1NTUyMmQyMTgxZjNlZCBsZWdhY3ktdHJ1bmsKKzIyNDE4IGI0ODRiMjA3ZTk2NDE5ZTgwYzViM2M0NjJkYjE2NDk1MzA1NDM2YzAgbGVnYWN5LXRydW5rCisyMjQxOSA0ZGQzOGQ5MzAxNTczYzkwY2NkOTRlODg1MmZiMmY4ZDAzYzU2M2YzIGxlZ2FjeS10cnVuaworMjI0MjAgYzlhNGU2ZDFiYzMwYjE5OGViZmZhZjExMDQ3YjI3MjRlM2M4NTNlNCBsZWdhY3ktdHJ1bmsKKzIyNDIxIGMwYTE2YjRjOWVkYjdlMWEwOWJiNmEzMzFhNTZkY2I2YThlZTcxOTkgbGVnYWN5LXRydW5rCisyMjQyMiBkMzdlMTc2NTgwNDhkYWI4ZWQzZTk4MGUwOGMwYjhiNzkwNmQwMjVlIGxlZ2FjeS10cnVuaworMjI0MjMgZjUxM2M2YzdkMTY3MGJjY2VkNTk2M2ExMjViYzhhMTczMGMxMTU3OSBsZWdhY3ktdHJ1bmsKKzIyNDI0IGU4YmU0MGM3NWEzZjcxN2M3ZTU1YzRjODFkY2ZhOGNjZTM5MjAwYjkgbGVnYWN5LXRydW5rCisyMjQyNSA3NzY0MGMzODg0N2JhMjU3YjM5YTk4YmMwMTVjOGI1YTFhMjljYzMwIGxlZ2FjeS10cnVuaworMjI0MjYgZDE2YTNhNWM4YTg2YjEzMGIyOWQyY2ExMGEyZWRmMWQ3ZmNiNTdhOCBsZWdhY3ktdHJ1bmsKKzIyNDI3IDM3M2I2YWJhZGM1MDBmY2M4Y2ZjYzY2MTM2ZjYyNGZiMTE4ODJjN2UgbGVnYWN5LXRydW5rCisyMjQyOCAyNDJhYzQyN2YwZDBmMGQzZDZmOTE3YmJlMDk1M2ZkODFhM2E3NzUzIGxlZ2FjeS10cnVuaworMjI0MjkgM2M3YWQ1MDM3YWIxYmM1YTIyM2E5NDZjOWQzOTExMWUyNTI0YjM4YSBsZWdhY3ktdHJ1bmsKKzIyNDMwIDQxNzg1NzkzYThhMzc1ZTBiZTFmZjhhZmMwMGY0MzlmYmQ5ZjgzY2EgbGVnYWN5LXRydW5rCisyMjQzMSBjZDFjMjc4N2ViYjRhOTMwMTk0YjJhNGMzZGFjOGE2MDAyMzczNzU4IGxlZ2FjeS10cnVuaworMjI0MzIgNmU0NmM3Y2QzNzQ5MGUxNDE0NDkwZDMwYTQyMGFkODg1NzAyNWU1NSBsZWdhY3ktdHJ1bmsKKzIyNDMzIDcxZjA1ZmQzMGU3M2Q1Y2I3ODI3NTQzNjVjYzRlZTk0NjM0ZGQ3OGEgbGVnYWN5LXRydW5rCisyMjQzNCAyNTU5MjY2OTg2OTJkNDZjOTFhMTBmYTQwZDcwZDFjMDU4ZjVhNWM3IGxlZ2FjeS10cnVuaworMjI0MzUgODRiNjAyMTMxNTliMDIyMzY4MDkyNWFkM2E5MzY5MTFkZmYwOGZlNiBsZWdhY3ktdHJ1bmsKKzIyNDM2IDBmNjEyZDY4N2ViY2Q3NzQ3NGVkOTEzMjFiNzliYzE3MWJhMDFlNWQgbGVnYWN5LXRydW5rCisyMjQzNyA1M2YzOTk1OTg3OTk5ZWMzZjYxMjZhNDU5YzdiMjIyNmQyZThjMTQ2IGxlZ2FjeS10cnVuaworMjI0MzggYWNiMThjOWZiMjBmNmE1MTkwOGFiMWRlM2NjZDE1NjExNWI1MjIzMSBsZWdhY3ktdHJ1bmsKKzIyNDM5IGUyOWJhOGYxZTdmODBhMmU2MjI1ZWM1MjgzMzQ3ZjUzNDAzNTlhOGEgbGVnYWN5LXRydW5rCisyMjQ0MCA2NTg4NWVhNzZjMzc3MTY0MThkZDEyZDZjYWRkZTkwZTFmOTQxZGExIGxlZ2FjeS10cnVuaworMjI0NDEgY2I3ZmI1NjVjODliOTRmYzgzMWY0OWQzM2FkM2U4MDAyY2IzNTdkYyBsZWdhY3ktdHJ1bmsKKzIyNDQyIGMzMzYzZTRkNmQxZDYwYWQ0YWVlYTJhY2JmZTYzNjIzOTVhN2FkMmQgbGVnYWN5LXRydW5rCisyMjQ0MyBjNjEyOTQyOGUwNTNjY2FkMDFiZDdlNjFjZGZiZmNkNWM4ZmZkYjQzIGxlZ2FjeS10cnVuaworMjI0NDQgMzhiNTkwNmZmMDMxZDNjZjkzYzEyNjhkNWQwOTUxMTI0ZDA4MWJkOCBsZWdhY3ktdHJ1bmsKKzIyNDQ1IGUxMTBjZDRmYzNjNjI1MGQxNjBkZjM2MjY1M2U3NTk4ZDg3MjYyOTQgbGVnYWN5LXRydW5rCisyMjQ0NiA1Yjg3ZWU0NDAwMGJhYTA2Yjg1YjQ5M2IzOGVkOTU1N2I2MmM0NmRlIGxlZ2FjeS10cnVuaworMjI0NDcgYTA4ZDBlNTg2MWNjZjI1OGFiM2Q0OGY5NTU2MzYzZDNmMDk1NWQzMSBsZWdhY3ktdHJ1bmsKKzIyNDQ4IGFjNmQ5Yzc0Mjg2NDMyNTMxNmQ4ZjY4ZjgwZGRlYjgzZmU1YWM2MDAgbGVnYWN5LXRydW5rCisyMjQ0OSBkM2RkMGYyZmIxZjQ0MWE4NjU0ZmJjN2Y5NDMxYTRlYTFkODQzY2IwIGxlZ2FjeS10cnVuaworMjI0NTAgZDk5YzEyNDBkMGFjM2VlOTliNGVjNDM2ZDBmNWM4NmZjNjVlMTZmOSBsZWdhY3ktdHJ1bmsKKzIyNDUxIDc4OGExNjM1MWUxODk0Mzg4Njk1MmY2ZmU1OGVmNGI1MTY4NDE0OTggbGVnYWN5LXRydW5rCisyMjQ1MiBmYmUyMDc0YzVmYTVhMjE5MTQyM2U5NDg5MWJkNTM4YjQ0MmM0ZWE3IGxlZ2FjeS10cnVuaworMjI0NTMgM2I5OGNmMTY5MmQ0MTU1Y2Y5MmZjZDE1OTRhNWI0Mzk2M2Y1ZTVmYyBsZWdhY3ktdHJ1bmsKKzIyNDU0IGJlMDI0YzI3NGUwMmNmOWEyN2M0M2ZmNDg1YTg2ODZhZmM4NGNmYWMgbGVnYWN5LXRydW5rCisyMjQ1NSAzODhiY2RlZTUxMjlhM2RmYWRjNWQwNTYwMTU0Njk1OTQyOGZhZDc3IGxlZ2FjeS10cnVuaworMjI0NTYgOWY4MGM3MGE3YTUxZWJmNzAxMjMyNjU4ZmJlZDk1NTNiOWE2ZjFiZiBsZWdhY3ktdHJ1bmsKKzIyNDU3IDA2ZjkwMjcxNDFmZjlhYjkyMjgwZGIyMzM5M2FlMmY3NDQ3YTQwYTkgbGVnYWN5LXRydW5rCisyMjQ1OCAyZmY1NzAyYWRiNTZkYWI4NDI5YzAzMGM2NDAzZmIzNzI1ZDhiM2Q5IGxlZ2FjeS10cnVuaworMjI0NTkgMzk1NmIyMmQ1ZTI5MzRmNjJlYmQ3MWUzNGQ0NDFhNzU3MDJmZjVkOCBsZWdhY3ktdHJ1bmsKKzIyNDYwIGZiZjFhZTc2OTMwNjYwMTVjZmZkNTM5YmI5NjliNDhjZmY2ZmRlZTAgbGVnYWN5LXRydW5rCisyMjQ2MSA5NjhkMTY5NTAxZjI3NjZhYmQwYjJlNTEzNmFhMmNjZGE3Y2MxYjY1IGxlZ2FjeS10cnVuaworMjI0NjIgNjYxNzAzMGM1MWUzYWQ4NTAzMGM3ZGUxZDUzMjc1NDRjNWRmNjdjZSBsZWdhY3ktdHJ1bmsKKzIyNDYzIGFmMWM2ODkzMjRmNTMxNmFmNjVlMTUwNTdhYWM1ZGZlY2U2NTZhZDEgbGVnYWN5LXRydW5rCisyMjQ2NCBmZWRiYTg2ODY1ZTI5NGM5NGIwZmM5Y2U1Yzg2NDBlMGQ0YWExODU2IGxlZ2FjeS10cnVuaworMjI0NjUgMWMzOWI5NmQyOWMzMjVmYWQxMTUyOTU3OGQ1MGNkYWQ5MjEzZTJkYSBsZWdhY3ktdHJ1bmsKKzIyNDY2IDE0Zjc4MmJhNDBmOTEyZjc1ODhjNjA4ZTYzYmQ5MjVjZWU3OTUwMTAgbGVnYWN5LXRydW5rCisyMjQ2NyAwNDY0M2ExODQ1NDZhMTE2N2Y5ZmJmY2ZlOTQ2ZGQyMDBlOGRjMjJjIGxlZ2FjeS10cnVuaworMjI0NjggNDlmZDcyNDM1MWY0YTg1NGI3YjIyYjJmMjVlMjVhOGMxNWNjZTIxNCBsZWdhY3ktdHJ1bmsKKzIyNDY5IGNhN2RiYWNiYmUxODY2YjZkYTc0ZDcwN2JkNTkwYzdiN2I1MTM1NTIgbGVnYWN5LXRydW5rCisyMjQ3MCBjM2M4N2NlNGFmZGNhNmIzNzhiZWIzZDFiZmM0MDg0OGRmMDBlNzhmIGxlZ2FjeS10cnVuaworMjI0NzEgNzg2MWVlOTUxYTkxYzRlOWY1ZmY3MTQwMmMyNGMyZWU0ZGNkMjQ0NiBsZWdhY3ktdHJ1bmsKKzIyNDcyIGViNWUyYjY4MzU0ZjVkZWJmMjNkMzAyMGY4YWVjMjQzNGU3MGRkOTIgbGVnYWN5LXRydW5rCisyMjQ3MyBiZDhjYjY2NWI1ZTEwOGIyZjk0Y2YwNGQ0OGM1ZWY2ZjI3MzQzMDRjIGxlZ2FjeS10cnVuaworMjI0NzQgZTlhOTdiMDI4ODliMDgwZjgzYzlkZjQ5MzllNzRjZTk5YzgxZGI0ZCBsZWdhY3ktdHJ1bmsKKzIyNDc1IGE5ZmYwZjZmZjI2MGVhNDEzNjExOTlhYjhkNjkyYjY0ZWM4MzRiNzYgbGVnYWN5LXRydW5rCisyMjQ3NiBkZDgyY2Q0ODZkOGExZDE5YTI0NzhjZjAxYzBkYzcwYTg1N2YxNjljIGxlZ2FjeS10cnVuaworMjI0NzcgMzVjNjVkOWFhODZhMjZmODc5YmJlZjYwZjhkN2M5ZDkxODZmYzEzMSBsZWdhY3ktdHJ1bmsKKzIyNDc4IGI2NTMxMjIzOGMwYjY2NGFhZDMyZGVjOGVhZjg3ZWZiMjc1MmEyZTkgbGVnYWN5LXRydW5rCisyMjQ3OSAxY2U1YTkwZmIxOTJiODQ2OTgyY2ZhZjI3NDU4MjA5YWI4OGNlYWQxIGxlZ2FjeS10cnVuaworMjI0ODAgZDg5OWJmYmZmYmJhMTc5NDc1N2NmMDE3NmYzZDU1MjNmNjMxMzg3ZCBsZWdhY3ktdHJ1bmsKKzIyNDgxIGMzNGJiZjE3Mzg1ZTRkNGQwYzg1YzQ2NDM3NjNhY2MzNGQyOGY3ZmEgbGVnYWN5LXRydW5rCisyMjQ4MiA1NTAxOTU4ZWRjMzYxZDE0YzgxZTBkZDcyMDMyOGU1YjRlZDY2ZGY2IGxlZ2FjeS10cnVuaworMjI0ODMgNGM4ZDc4NjhhOGU3NjEwMDM1M2M0YTY3MzBkNWNkNTIwM2M1M2YxMiBsZWdhY3ktdHJ1bmsKKzIyNDg0IDlmYjQ5Y2UyNDBkMTllYmU0ZWNkOTFjYTBlZTBkNjEyZTJjNmEzMmMgbGVnYWN5LXRydW5rCisyMjQ4NSBiOTUwMmQxYTI3YTdhNTk3OGE4YmFjZjcxY2FkZWRlMmUzOWU0OGVkIGxlZ2FjeS10cnVuaworMjI0ODYgMWFmYzMxMTZjNjAyMzViYTMwZGU5MmZmZGRlNDI2ZjNkNWRmZDhlNCBsZWdhY3ktdHJ1bmsKKzIyNDg3IDFiYTllMzY4NGQzNTQ4MmI3M2EzNzRmZjU3NDJiNTY0Y2UzNmRkZmIgbGVnYWN5LXRydW5rCisyMjQ4OCBmMTBiNjhlY2VlZmMxYWFmZTI5NDVlZWI5ZjMxZTMzYzUzOGE2ODlhIGxlZ2FjeS10cnVuaworMjI0ODkgYmU4NWY2ODZhZDk3YmJiZTIwZmM0ZTA1ZWJjZjNiMjZlNjAzZTBkNCBsZWdhY3ktdHJ1bmsKKzIyNDkwIDZmNmFjYmY3ODkzOTQzZjgzNGI1YzQyM2M5ZTM5MDgxYjIwZjc5MTcgbGVnYWN5LXRydW5rCisyMjQ5MSBiODY1Y2Q1YzE5MjUwMzZkYWVhYjNkOGIyYWRmYzNiNmEzNWU1MGM2IGxlZ2FjeS10cnVuaworMjI0OTIgYTVhOTMyYzIxNTgzMGUwOTUwNTdkNmMyNjY1OWVjZjIyNzNlNTFkZiBsZWdhY3ktdHJ1bmsKKzIyNDkzIGJhOGM2MmU1ZjkyZDY5ZGZhMzFjYmViMDJkOGZmYzVkNmI2NGFjOTAgbGVnYWN5LXRydW5rCisyMjQ5NCAxNGU2MDUxZDVmMWYwN2E4YjQ0MGEyN2NjMDUzY2U4MzRhYzBhNGJjIGxlZ2FjeS10cnVuaworMjI0OTUgM2FhMDYwNjQ0OTAzMTY2ZTkxZDc1YWM3YTEyNDNhYTQxZjhlODk0OSBsZWdhY3ktdHJ1bmsKKzIyNDk2IDVhZDcxZmRiMjA1YjM1NjdhYjJiMGIwNzc0Y2NhNmJmZjE5YTIyZjkgbGVnYWN5LXRydW5rCisyMjQ5NyA1YzJiZjZjZGUxMjMwM2IxYzJhYzIyM2E5YjI3YTI3ZjA2MmE4ZGQ3IGxlZ2FjeS10cnVuaworMjI0OTggZjdhMjEzMGEyNTYzNjc3NDRkZTczODQzZGRmNjkyOGQ3Zjk1ODcwOCBsZWdhY3ktdHJ1bmsKKzIyNDk5IDM3NTU4ZTg2NWVhZDU0YzI3OWM5NjE1N2RkYTU1N2IyNTZjNDdiYWEgbGVnYWN5LXRydW5rCisyMjUwMCBjM2Q1M2QzNGFiNDRkZWJjNjk0YjMwYjM2ZGUzZWI5NmQwNWRkOGMyIGxlZ2FjeS10cnVuaworMjI1MDEgMWU4N2RiMGNhMjQ4MmUxYzhlNTMxMzZjN2M2OTcyMmU4NzA0MjFiYyBsZWdhY3ktdHJ1bmsKKzIyNTAyIDE0NTZlYzczNTA4NzJkNjdhOTUyYjk1MmYwZTU5NGQyNjc2OTVkYzIgbGVnYWN5LXRydW5rCisyMjUwMyAxNTdiYmI4OTYxOThiOThjMWZmOWM5YTM1MzFjYjU2ODMwNDY0YTc5IGxlZ2FjeS10cnVuaworMjI1MDQgMTA2OTA5MGIxMjRlZjg3ZjNlNWNkM2YzN2U4Nzk5YzU3Njk4ZjA1NSBsZWdhY3ktdHJ1bmsKKzIyNTA1IDNkZGIyMTA5MzJjYTZkZDFjOGMzNGY2NTIzYWUyMmUxYzc4MDA5ZjIgbGVnYWN5LXRydW5rCisyMjUwNiA2YzRhODczMDY2M2FkZTBlOGUzODQ3ZTk4OTk1ZWQwMTk5MzJhMWM1IGxlZ2FjeS10cnVuaworMjI1MDcgNjMwMzAyNjY2NDY2MmI5ZmQwYjk0M2U3ZjVlODc4M2M4NzY3YjE5MSBsZWdhY3ktdHJ1bmsKKzIyNTA4IDgxNDQwZGQzMjZiYmUxNzUyZWFmZDEwNjg1ZGU4NWYyMjllYjkwOWQgbGVnYWN5LXRydW5rCisyMjUwOSBiOTcwMTUzOGY4Mjc2YTY5NGM1ZmFiNWE3YzVmNmNkOWRmNTg0Mjc2IGxlZ2FjeS10cnVuaworMjI1MTAgZWQ5YWJhYjk3MTA3OGNkYWZiMTFkOGJjZThmYjcxMmM0NjlhYTcyYiBsZWdhY3ktdHJ1bmsKKzIyNTExIGNlYTk0NTc2NGRiMjE5ZmQ5NGI2Njk5YmM4NjJkN2EyNmUzMjQ2MDggbGVnYWN5LXRydW5rCisyMjUxMiAxMTkwM2ViMDA5ZjY3MDIxYzliZDY0MzlmNWE1NDY2ZTFjODZkZWFjIGxlZ2FjeS10cnVuaworMjI1MTMgZmE3ODZmOGE3NTcwYTViM2MyNjI4OWIwMjNlOGFhZjUyYjE4MGNhYyBsZWdhY3ktdHJ1bmsKKzIyNTE0IGE3YmJhYzY5YzhlZjIyNjYwNjdlNjkxOGNlZWMxZmUyYmU1YzI2ZjUgbGVnYWN5LXRydW5rCisyMjUxNSBiMGQyZGU4Y2UyNGY0YzI1NzMzNGNiZDY2YzI2NTcyNDExODNkZTg3IGxlZ2FjeS10cnVuaworMjI1MTYgYWYwMDE4YmI4Y2ZjMzE5ZWNiYjk2MTMyMzI3NzVhYTE3YTZiMjAyNiBsZWdhY3ktdHJ1bmsKKzIyNTE3IDBjMmI0MzkxZGY3ZGQwYzRlNWFkZWZiNDdhNWIzNjA5NzY4MDkxMTEgbGVnYWN5LXRydW5rCisyMjUxOCA2Y2I5ZjUzOGRjZTQ5ODdkMGYyYmRhZDMzNmRjZmI4OWQzMzQ2MWQ5IGxlZ2FjeS10cnVuaworMjI1MTkgZmM3NjE3MzEyMTgyODNmN2IxYjZlMTc2NTg5MjdjODA5YjY2MTc1ZSBsZWdhY3ktdHJ1bmsKKzIyNTIwIGE2M2E2OTMzNTU0Zjk1MGQ4MmUzOTE0YmYyZmJiNDk2ZTRkMDA4ZDAgbGVnYWN5LXRydW5rCisyMjUyMSA2ZjYyZjVhNjJhMmM2YmQwNmE5MWVkNzRhYTkzOTA5MGRkYmJmMDIyIGxlZ2FjeS10cnVuaworMjI1MjIgMmQ4OGRlYTQ2NDE3N2NhNTdjMjcyZGRlZjNjNjRhMTA2OGRiYzNlMyBsZWdhY3ktdHJ1bmsKKzIyNTIzIDFmNGViOGM5MjVkNTE4ZTU5YmNhODAyNmE0MjQyYmE0MWVlNDRhNTQgbGVnYWN5LXRydW5rCisyMjUyNCBmN2RjMjFjYjE2NjFkYzM3OGIyMzkzNDVkOGQyMWJjNDViMzgzMzEwIGxlZ2FjeS10cnVuaworMjI1MjUgM2VhMjkwOWUwNTFmZmI2Njc3MThkNTE0NzZlM2M3YjgzOTg1OWUzMyBsZWdhY3ktdHJ1bmsKKzIyNTI2IGNiYWE1NDVjNzg4ZGFhOTc5MjEwNDYwNjgxNTRmMmI3ZmJiODE4N2EgbGVnYWN5LXRydW5rCisyMjUyNyBkMzcwYTU4ZmI3ZmQ4ZjNkZDA1OTJmYWRhNGFkMzQ2MDMzYTdlNzhkIGxlZ2FjeS10cnVuaworMjI1MjggNzk1N2IzZjVkNDYyZDdkZDAxNWEzMGFjZmUzNTczNDZiNmFjOTdiYiBsZWdhY3ktdHJ1bmsKKzIyNTI5IDQyMjQ2YjhjNThiYmE4OTYwYjNjYjc0NDJkMDcyZDgwNDU2N2Q4NjEgbGVnYWN5LXRydW5rCisyMjUzMCAxZmVjMDMwMTIzNDY3ODk1NGMwM2MyZDY4MzVmN2E2MmRhNjJlOTdjIGxlZ2FjeS10cnVuaworMjI1MzEgMjYxZTI4ZTdmYTAxZmFhMTI1ZTM0YmIyYjQ3YzBkMjlmOWQ2NDBmMCBsZWdhY3ktdHJ1bmsKKzIyNTMyIGI1MjVlNjAyZjZjMmE0Mjg1OTY0OWNkYzk3NDE4ZjNmMmY2ZWUyNGIgbGVnYWN5LXRydW5rCisyMjUzMyBkYjQ4OGNjOWYyNTk4ODZlNjZlNzFkODUxZWU2M2MzOTgyNzYwYjlmIGxlZ2FjeS10cnVuaworMjI1MzQgZWZkY2Y0MmY4ODUyNzJlYmRkOGE5MWEyYmZiMDc4NTcyODg2Yjk1NSBsZWdhY3ktdHJ1bmsKKzIyNTM1IDczZjY4NWRiOGMwYzc5Mjk3ZjhiNzVmMmNhMjQyYzY1MjlmZmRiMjIgbGVnYWN5LXRydW5rCisyMjUzNiBiNDE2MzhhMTFlNGU0MzllZmRiZWZiMDA1YWFjZjVkMjhlZTI4N2E4IGxlZ2FjeS10cnVuaworMjI1MzcgZjkzYzE2YzEwYTU1YzBlOWRkYTM3MzBiZGNhM2FhMDZhMmNiODEzMSBsZWdhY3ktdHJ1bmsKKzIyNTM4IGVhOWNmYzM4ZTExYmQ4MGUxODdjZDkxMzI2YWQzMTM0OTEwYTcwZjIgbGVnYWN5LXRydW5rCisyMjUzOSBiYTg3YzI0NGZiNTliZTY1NGI3ZmJhZGVkNzE2NjdhMWMwNzllYTMzIGxlZ2FjeS10cnVuaworMjI1NDAgMDYxM2ZhNTdhZTZkOWM3MzU0ZmVmODRiNWUyNTY4MDAyY2YwNmFjYSBsZWdhY3ktdHJ1bmsKKzIyNTQxIDA1YzlhMzVmMjE0ZjI4YjQ5ZjU3NWZlZDdjZTBkNzMwMjM0YjYwYzEgbGVnYWN5LXRydW5rCisyMjU0MiA2MDI2NGQxZTEwMGU5ZDY0ZTkyMWY0NGI5MjZlZGZmYzQ0MzA0OTU4IGxlZ2FjeS10cnVuaworMjI1NDMgZDZiMDg0YzI1YmE4YmQxMTc0ZjBmNDJiOWUyOTA4ZTkyZTUyYmJlNyBsZWdhY3ktdHJ1bmsKKzIyNTQ0IGViZmI3NGNlN2U1NjgxMzQ3NzQ5MjEyYjI3NTgwMGIxODc3Y2Q0NjMgbGVnYWN5LXRydW5rCisyMjU0NSBiMTExMmEyYzM1NGZmM2I0ZDVmNDkwMzY4YTNkZGE5NGFlNDczODQ2IGxlZ2FjeS10cnVuaworMjI1NDYgNzg2YWNlZDkzN2M1Mzg5YjFjNWY5MTg1MTE3YzFlZjFhOWVmOTBhYiBsZWdhY3ktdHJ1bmsKKzIyNTQ3IDYxMzBkZWViNGNjNjE1YjRjMDJjMGU2NTFlNGIwOGZjM2Y2ZTA1ZWYgbGVnYWN5LXRydW5rCisyMjU0OCA4NmNkNTdmOWRiOWI5NmYwZWQ2Y2Y5NTk5NjNmYjNkMGUxM2UyODRkIGxlZ2FjeS10cnVuaworMjI1NDkgZDQ2NjgyYmRhODJmZjVjZDgwMmE2MWFkZjQ5MzIxOGIxM2RlMjdhYyBsZWdhY3ktdHJ1bmsKKzIyNTUwIDgxNDQ3MjJkYzA3NjVlZjkyYTNmMDdmZWU3NmJiOTRjYjYwYzI2N2QgbGVnYWN5LXRydW5rCisyMjU1MSA3MjU3ZTg3ZTA3MjAxNmEzNzgwMGUxNmNjNzY5NzYxNzAyYWQwMjlmIGxlZ2FjeS10cnVuaworMjI1NTIgZGI5NzYyNTI5ZjQ1NDY2NjY0MmIwZTA0OTc0MWZlZGNhZjAwZGEzZCBsZWdhY3ktdHJ1bmsKKzIyNTUzIDM4YmUxNzdiZDQ5M2EwOGYxMjU3NGMyMDllYWI1MWMyYmRhMWVkNDAgbGVnYWN5LXRydW5rCisyMjU1NCBhNDhhM2Q3NTQ3NWVjZjJmMDM1ZDVjNDA0OTlhMjg1ZTQ1NTM0NjJlIGxlZ2FjeS10cnVuaworMjI1NTUgM2Q5N2E0YjVjNmFhNWU0NzNhOTA4OGQ4NmFmZDkzYzIxODVlOTU4YSBsZWdhY3ktdHJ1bmsKKzIyNTU2IDEzZjRiYTA1NTY4N2Y0N2U3MTg5MjU0Mjg3MjJjZGQ2ZGFjNzc2NmMgbGVnYWN5LXRydW5rCisyMjU1NyA5YjVhMmMxYTAyZjNjMGI5ZDU3ODY0NmUyMTFjNWVlMmI4MTVmMmFkIGxlZ2FjeS10cnVuaworMjI1NTggNWI2YTZkN2Q0NGFlZDJiMjAxYjdlNDI1NGE2YzAxYzIwYjg4N2E1ZCBsZWdhY3ktdHJ1bmsKKzIyNTU5IGY5MjBkZGI3N2Q4YjNmODQwN2E5YTlkOWQ4YjM2NmExY2Q1ODc0MzYgbGVnYWN5LXRydW5rCisyMjU2MCA5NDkwNWViNzJmNGZjYjViMjM1ODk5MWRmN2JiMjk3ZTJkZDE4ZmRhIGxlZ2FjeS10cnVuaworMjI1NjEgMDUxZDhlMzgwZjM4MmZlZDFhNDZmZGMxZWQyYWE3NGVlNGY3MWVhMyBsZWdhY3ktdHJ1bmsKKzIyNTYyIGU5M2Y1YzM4NWZmNDQzNGMzNGIxMDg4N2EzMDhmM2IyNWI4OWIxOGEgbGVnYWN5LXRydW5rCisyMjU2MyBkNWFjZmYxNzhhZDVlNjY0M2ZlZTJlMjE2NzZhNzZlN2YzMTFmY2QxIGxlZ2FjeS10cnVuaworMjI1NjQgYzBlZTEwZTBlMTNlMzVlNTQyODI4ZjA0YmQ1MDg3ZDIwNjBmNjQ1NiBsZWdhY3ktdHJ1bmsKKzIyNTY1IGJlOWI1MDcwNGU0YzBhODAzMTQ5YzU4MGM0MWUwZmZiNzg3ZjQ4MGIgbGVnYWN5LXRydW5rCisyMjU2NiAwZGFkMGRjNzE0OWIyYjdjMWRiMDdkMmRlN2QzYzMzZmNkM2JhZDdjIGxlZ2FjeS10cnVuaworMjI1NjcgZWZmOGNhNjc5YmY2YWVjYTY3M2QwYWU0NWNjZDhiNmEyMmY5OTI3NiBsZWdhY3ktdHJ1bmsKKzIyNTY4IGVhMTMxZmYxZDhjZDgyZjk5OTA4OTgzMWRlZjFiYWYwODU4MjMwNmEgbGVnYWN5LXRydW5rCisyMjU2OSA5MjIyYjZlM2IzNjg3ZWYwMjkyNWMyMjY4YWI4NTQyNzZjMWRlMWQ3IGxlZ2FjeS10cnVuaworMjI1NzAgNzhkYWNiNTQzODg3ZWZiODFiNWVkY2Q5NDY3YmE0MmYzNTgxMDUzMSBsZWdhY3ktdHJ1bmsKKzIyNTcxIGYxOTlkMGFhOWY4MTBmN2NhNWVhNDFiMjlhMzg5YmIzOWUxN2JlOWYgbGVnYWN5LXRydW5rCisyMjU3MiBiNzM4NDI4MjM4ZjE5NTAwY2IxMGFkNTBjMGZlMzFkOWQzMjU1ZjM3IGxlZ2FjeS10cnVuaworMjI1NzMgYTFhZGJmMDc1NjU3NzNjOTcxMGY1ZmVlN2NjNTQ5YjlkYzc4ZDQ4MyBsZWdhY3ktdHJ1bmsKKzIyNTc0IDYzYjliMTc3ZTM1MGZkNjZkNTM2NDA3NDllMjZkYzFlNWE0NzRjNjcgbGVnYWN5LXRydW5rCisyMjU3NSAxNzgwMjA3N2U3N2NmNTlmZDE0N2M5MmI0MGE1ZjdiM2E0NDA0NWE4IGxlZ2FjeS10cnVuaworMjI1NzYgM2IzMDc5Yjg1NzI3NDM1MjBhNzdhNzA5N2Y0NTQ2Zjg3ZDQ5MTIyYiBsZWdhY3ktdHJ1bmsKKzIyNTc3IDhjMmEyOWI3NTQ4ZWQ2MjQyZTE1ZDM1MDIwY2UyOTUxZTIxM2ZhNzggbGVnYWN5LXRydW5rCisyMjU3OCBiYWZiZTVjYzk0MWZmMWFjNzIwN2Q1N2E1ZmYxOWRiYTYxMjQ0MjYzIGxlZ2FjeS10cnVuaworMjI1NzkgMmJmMjY5MDk2NmZmZDMyMWFjNjUzYTFlMWY2NjdkNjNjZTlhNDU3YSBsZWdhY3ktdHJ1bmsKKzIyNTgwIDM2ZmE4ZTliYzJkYTllODI1NDM5MGE5NGQyNWIwZTY0NjYzZDk5NjQgbGVnYWN5LXRydW5rCisyMjU4MSAwMzM0NjJkZjE3YmY1OGI3YjdkYjc3OWQ2ZTNjMTViNTA2MWM5NWYzIGxlZ2FjeS10cnVuaworMjI1ODIgYzRiMmE2YjA0ZDBiOTBjMTA0MzA0YTRkZTFmZTBiYjk5MTU4NDA0YiBsZWdhY3ktdHJ1bmsKKzIyNTg0IGZjYWIzNmM5MzMyN2NhNWE1NmZjMGEwNjcwYmFmZjQ1NGEyMjJiYjUgcjIyYTItYnJhbmNoCisyMjU4NSA0ODRjMDVkYzQ5OTg0MTc3ZDE1ZmVkZGI5NjIxZjNlNzJkMzVkNzljIHIyMmEyLWJyYW5jaAorMjI1ODYgMjk0YTU2YmY3MzE1ZjAwMDRiZmQ1YTFkNzg4Y2JjYWM1NTI0NjZmOSByMjJhMi1icmFuY2gKKzIyNTg3IGZkMTE5ODk5MDQ1YzgzODRjY2VlZDg2MzYwZWU0MGUyMjFkNjJiNTYgbGVnYWN5LXRydW5rCisyMjU4OCA5ZTRmNzM5ZTlhODQ4NjhlYTA1ZjYwZTRlMWZmODExYWJlYjM5MzE0IGxlZ2FjeS10cnVuaworMjI1ODkgNjM4NmYwMWYyNDAxNjJkOTdhMDhiOWVlMmI4Njc2MzllNGY4MmQ2NCBsZWdhY3ktdHJ1bmsKKzIyNTkwIDVmMWU3NTcxYjEyOWNiMDdiOTJhNTUxZTNhYzg2MDc4MGNkN2FiM2IgcjIyYTItYnJhbmNoCisyMjU5MSA4YTZjZGExNzU1ZWI5OTFkMjQzNDY3ZDdkOTA2MWI5NDQzMjRlNTM5IHIyMmEyLWJyYW5jaAorMjI1OTIgNzM0MDY2ZjIxNjRmMzZlNDJiMjY1MWMwMTcwMTlmMTEzYmJhZGUxYyByMjJhMi1icmFuY2gKKzIyNTkzIDVjOGRlNjhiM2NkY2JjNDYzZGFhNTMzNTk0YjdlMjQyYjczZmJmOWMgcjIyYTItYnJhbmNoCisyMjU5NCBhZjA1OGQ2OWVhZWRkNzkyMmJmMTJiZDZlYjUxMjk3M2ZlYmM0ZTU1IGxlZ2FjeS10cnVuaworMjI1OTUgZDc2NGQ1NTY5MmExNGY0MWM2NTNmZjlkN2E2MTBkZjFjNDNkYmY0ZSByMjJhMi1icmFuY2gKKzIyNTk2IDQ3OWI1NjBkZWNhNzAxNzE3YWE5ZjIyMDk1MzRmYTk4MzM3ODFhM2QgcjIyYTItYnJhbmNoCisyMjU5NyA5MzVhYTA3NGNkYjg2YWJjOTE1MzJiYjU2YmQ2NGIwNzM2NTVlZTBhIHIyMmEyLWJyYW5jaAorMjI1OTggMmEwODNlMDUwNjE3YjU5MjFkMjIyYmNiYTY4YzIyOGI1YTc0MTE1MCBsZWdhY3ktdHJ1bmsKKzIyNTk5IDUwZDNiMzY2ZThjOGE5MGQ2ZjMwZGM3MmUxNDE5ODE4YTg2NDM3YTcgcjIyYTItYnJhbmNoCisyMjYwMCA4ODQyMjA4MTA5NWFmNDA4ZWNiODg2OGRhM2M4YTU3Mzg2YTE4MzVmIHIyMmEyLWJyYW5jaAorMjI2MDEgZTliNzk1ZDRjMDYwY2Q3MjIwNDNkNzIyOTM3NzQ2Mjk2NTg3YzM2OSByMjJhMi1icmFuY2gKKzIyNjAyIDdiNTUzYjFjM2U4YmQxNGQwYzhiNDE2OWM0YmMyMzZhYTM0YWQ5YWYgbGVnYWN5LXRydW5rCisyMjYwMyA2MGQ1Y2JiZWFkYzNiODY4ZjZlZWY1ZWZjNmJlZmRhMTVkYzZiNDExIGxlZ2FjeS10cnVuaworMjI2MDQgZmI0N2RiODU0MTBlNDlmODU1ODMwMDg3ZjFkY2ZkNWZiZmY2NWUzZiBsZWdhY3ktdHJ1bmsKKzIyNjA1IGMyZGIxOGMwNzBmZWNkYTE2YzRkZjQ1MTUyMDg0ZGRlZjhmMGIzOWIgbGVnYWN5LXRydW5rCisyMjYwNiA1ZWJkYzNhZDg4Nzc5ZmU4YWRlZTlkMmVhN2U0YWRlNzYyZDA5YmNhIGxlZ2FjeS10cnVuaworMjI2MDcgY2U2ZWE0NDQ5ZTk3Y2IxZWEyOTkwMzZiYmI4NjAxZTJjMTRhOTYxOSBsZWdhY3ktdHJ1bmsKKzIyNjA4IGI5Y2FmOGNiMTJhMmVjMzhmNjFmM2ExYjhiZGMyNTMwNTEzMzc3MGQgbGVnYWN5LXRydW5rCisyMjYwOSBiNDUwODQ3MzA5MTZkOTllMDEyMDI3NGNhZTAxMjVjZGUwZGE3MjNjIGxlZ2FjeS10cnVuaworMjI2MTAgNzdmNDk1ZTgyMmMxNTgyMDFhZjllYWJlNTM4MGZiYTQyMWNlNmNlMiBsZWdhY3ktdHJ1bmsKKzIyNjExIDBlN2FlZDUzYjU4MzMzMmJkYmI2NzlhYzdlZGRkYjRmZTU4MmQyOWQgbGVnYWN5LXRydW5rCisyMjYxMiAzYTJmZTc0NWEwYmJmYWZmNzU1OWM4MjgxZjQ1NDgwYjIyNWFkYTEyIGxlZ2FjeS10cnVuaworMjI2MTMgYjIyNjU4YTQ2OGNmYWFkNDM2NTQyYzAxYzcyMjk3NjM4NmE1N2MwYyBsZWdhY3ktdHJ1bmsKKzIyNjE0IDYyMTg0OTlhZWJkYTJiOTk5MjYyNDE2MDMwMDY1ODk3YzhlMGQ4OTQgbGVnYWN5LXRydW5rCisyMjYxNSAwZjg3M2QwNmFjMTNmYmUxNTMxNzM4MjUyZmNiYzdjNmJlMDZlNWE1IGxlZ2FjeS10cnVuaworMjI2MTYgZmIzMTllOWNjMmFkZmVkM2ZhNTg3YzIwMWYxZWFhYjQ2NWZhMGE3YSBsZWdhY3ktdHJ1bmsKKzIyNjE3IDc3NjFhYzhiZWI4MTllMmNhYmNjZTliYTFiMzY0NzYwMmI3ZmYwMWEgbGVnYWN5LXRydW5rCisyMjYxOCAwYzZjNmU4NzgzODhiOWFjNDljYWRiYmM1MzQ4MTY2ZjcwY2E2ODYyIHIyMmEyLWJyYW5jaAorMjI2MTkgODhiMWVjZDA0OGZiYzIzYzUwN2U5MDkyZTg0MTQ2NzlhMjlhZjlkYyByMjJhMi1icmFuY2gKKzIyNjIwIDhiYzdiY2EzMmE5NTY4YzZhYzJkNjM4MzEyODE3NTI4MjA1YTU5YzIgbGVnYWN5LXRydW5rCisyMjYyMSAyZmMxMDJiODM4ZWQ4MjBmNzY4MTZhNDVmZmNjOTE5MWJiNDczZjA1IGxlZ2FjeS10cnVuaworMjI2MjIgOTYyNjNjZmIyYzk2NjI5OTliYzZhYTdhMjQzNTgyZDdlZWRmNDA1NCBsZWdhY3ktdHJ1bmsKKzIyNjIzIGU4NTFlNjE0OGFkOGQ5ZTU2NWZmMzhmZjgzNTQ4ZmU4NjIzMTA3N2YgbGVnYWN5LXRydW5rCisyMjYyNCAxMDBkY2M5ZTZmMmYzYWFkOTAwMjkxZDY2MzA3NzI5MjQ2OGVkMGYyIHIyMmEyLWJyYW5jaAorMjI2MjUgYjk0Y2U3ZDcwY2ZjYTkwNjU1ZGJlNmRmOGI2NzcwYzIxZDhlZTZmZiByMjJhMi1icmFuY2gKKzIyNjI2IDYwYzBjZmY1ZDU3ZWNiZTBlOWNmMWI3NWRjY2RmZDM4ZWE0ZGMyYjMgcjIyYTItYnJhbmNoCisyMjYyNyA4NTNkYmUxMmJiZTY4YTY2MmFlYzc2YjUyNGMwYjI5YzEzMGU0Yjk3IHIyMmEyLWJyYW5jaAorMjI2MjggYmU1YmU5ODljYWZmZWEwNDZiYTBlMzMwY2ZjN2U1ODU2ZjJhMTZkZiBsZWdhY3ktdHJ1bmsKKzIyNjI5IDg2MDdiYzg5MGIxZjAyNWQyZGRlZmM4ZjBjYzFmMzE0YjE1MzFjN2MgbGVnYWN5LXRydW5rCisyMjYzMCBhMDM4OTkzODkwYjIzZTZjMzJjZGU5NDU4MDE0OTY1MWZmYmM3Nzk2IHIyMmEyLWJyYW5jaAorMjI2MzEgNTU0NDUwNDA5YTczOGUyMWY5ODAwOTM3MGEwZjgwNTczZTY5NzU0ZiBsZWdhY3ktdHJ1bmsKKzIyNjMyIGQ5ZWE5OWE2ZjZiNDQ2Njg2ZTdjODdlZDYxMGM4M2MwZjY3YmE2MmQgcjIyYTItYnJhbmNoCisyMjYzMyA1YmNiYzU5MGY0YTcxMTYwY2U4NjExMTE2MDQ2MzgwMjdlMzA3Y2M2IHIyMmEyLWJyYW5jaAorMjI2MzQgODk5NmRjNTIwYjU3YmI3MjRhOTNmYmM2YTFmNzVjNjUzNGM2YTVmYyByMjJhMi1icmFuY2gKKzIyNjM1IGFjNmJmYTU1ZmNlYmY0YjgwMTA2YjUxNjM3OTI1NjFjOGY4ODdkYjEgbGVnYWN5LXRydW5rCisyMjYzNiA2MTI1ZDlmOTI0NDFkYzMyYTUzZDYxMTVjODgyOTFjNDZlYzdlMzc4IGxlZ2FjeS10cnVuaworMjI2MzcgOWRlODNkZGE5ZjA5YTNkMTZiYWUyOWE5Y2E0MzE1NTk1N2M1Yjk1NCBsZWdhY3ktdHJ1bmsKKzIyNjM4IDkzMDZmODI4ZmJiNzczNGZiMTJkNTc3ZjRmMDk1Zjc2MTA5NWYzNjkgbGVnYWN5LXRydW5rCisyMjYzOSAwMWU2Njc4MGFmNjE2MzFiZWI3NjgxNjZkYTVlODMzY2ZmMWI0OWI2IHIyMmEyLWJyYW5jaAorMjI2NDAgODFjNzU2NWE1NmFjY2U4NThlNmVkZmNlYWU4NjMzNWM3NzZhYjM0ZSBsZWdhY3ktdHJ1bmsKKzIyNjQxIDdlNWU5NzRiM2QzNzZkNGJiNWVmYTEzMTk4YWJmMmFjOWRiNzQ1NzcgbGVnYWN5LXRydW5rCisyMjY0MiBiYzljOGNlYmMyZWZjODA3ODYwNTE0YTllZWYwYzhjZTVkMDNiZjI1IGxlZ2FjeS10cnVuaworMjI2NDMgYzQwM2FmMDAzODg0ZTZhZGI1ZjUyM2Q5MWY3NmZkZjg0ZTljMWFkOSBsZWdhY3ktdHJ1bmsKKzIyNjQ0IDBkMWJiZTY1YTFkODc3Yjg1NzUwNGU4MzJiMzRhNTRmZjMxNTc3MjkgbGVnYWN5LXRydW5rCisyMjY0NSBkNGJhNmUyYWFhZTM0YWMzZTBiYjAzOTExNzlmNDdiZjFkZWQ1MzgwIGxlZ2FjeS10cnVuaworMjI2NDcgY2NjNGFmNjg3Y2FjNmNkMjE4ZWMwMTM5NWJhMWFiOWRhYWQ4OTc4NCBsZWdhY3ktdHJ1bmsKKzIyNjQ4IDVmNzMxMTE1ZTM1MjZiZGE3OGEzMWFjZjlhOTcwM2YwMzYwYmZlYjIgbGVnYWN5LXRydW5rCisyMjY0OSA0NzYzM2I3OWVjMTlmM2FlNjZlZGRkZmI2MWNmNjY5Nzc2MDMyODI1IHIyMmEyLWJyYW5jaAorMjI2NTAgYjJkYWQ0ZDE3Y2E5YWUxZGZmM2ZiNWMyMzhmMDVkZTczOThjZmEyYiByMjJhMi1icmFuY2gKKzIyNjUxIDA5MjhjZDYyZGRlYTVkMjBjMWFjODAyNDA3ODMyY2ZiNjNkODMzMzQgbGVnYWN5LXRydW5rCisyMjY1MiBhNmNlMmQxNmQ3MzlmNzJiMjRiNzE5ZDhmYTA5NTI5ZTFmNzFmNzdiIGxlZ2FjeS10cnVuaworMjI2NTMgMGIxMWYwOWNmMWU0MGQzY2MwNTE3YzhmNzYwNDkyZmZiZTJmMDRhNCBsZWdhY3ktdHJ1bmsKKzIyNjU0IDI5M2E0MTJjOWZkOTdkOTUyNGJlNTllYzY2MTE3OGMxNmQxNzNjODkgbGVnYWN5LXRydW5rCisyMjY1NSAxMjU3ODVmMWUxMmZlN2I4MmE1MTg4MmU1MGI2NTlhZDcxNzg2ZDFkIGxlZ2FjeS10cnVuaworMjI2NTYgODExZjI4OTYzN2FkMjRlZjFlMmYyNGNjZGYxZGM4OTkzMWJmZjc1MCByMjJhMi1icmFuY2gKKzIyNjU3IGIxNTljZTMzMTVjYjhkYTY4YzBiZWQ1MGI4Yzc1NWRkMjM1YjgxYWMgcjIyYTItYnJhbmNoCisyMjY1OCAzNGE3NGI4MWM5YjJmYTY4NTY0MDA4MmIyMTgzYzBkNGVmODIzZmIzIHIyMmEyLWJyYW5jaAorMjI2NTkgNzMwZGNkNmQ1OTBiMmJiZTFjYThlYWQyYWE3YmQ5ZWJiMTg2YzE4MCByMjJhMi1icmFuY2gKKzIyNjYwIGY1MmZhMmI3MDNkNzJjNmRkMDE5ZjI1ZGRmNjc0YzE1ZWUyZjczM2MgbGVnYWN5LXRydW5rCisyMjY2MSBlNzZmN2M4M2ViMGQ1NjA5Nzk3YTY0OGJjNTBkYTU3NjgxYzM3YWIyIGxlZ2FjeS10cnVuaworMjI2NjIgNWMwMzU4NGNmM2NjMWM2NWRkYjE5NmE1MzhkNzAwNjk4ZmY2MWExZiBsZWdhY3ktdHJ1bmsKKzIyNjYzIDJiN2MwYmVkZmZkYmQzOTQyOTQ2MzA1Y2YwMTY0NWY1NTY1ZThlMTcgbGVnYWN5LXRydW5rCisyMjY2NCA4NTg2MjhjZjZlMjU2OTQ1NDcyYWNjOTY5ZGViNmM3NzI5NzdmNTMzIHIyMmEyLWJyYW5jaAorMjI2NjUgMTdlN2IxYTMzMWYzNWRmZWYwMmRiODlkZjQ4OWIwMWU0MWJjMjRlNiByMjJhMi1icmFuY2gKKzIyNjY2IGZhMzlmMDBkZDVjMzMzYmRhY2NhZDhkN2VhMDBlYjE3ZTk0OGNlMWEgcjIyYTItYnJhbmNoCisyMjY2NyBmZmVmNGU0MWYwNmVkYzQxZmQ4MmFkYzFjNTQ1MjRmMzRiY2FlYWM5IGxlZ2FjeS10cnVuaworMjI2NjggYzYzN2YyOWM4MTk4YWUwMzcyYzU4MmQwMjY2OTJjNGRlYjFlNzBiYSByMjJhMi1icmFuY2gKKzIyNjY4IGQ3ZjQyYzlkZTk0NDBkN2E2YTI1MmM1MGYzZGNiMDVjOTdlYmVjYzQgcjIyYTItYnJhbmNoCisyMjY3MCBkZTJmYmM1MmMxZWI5ZjRkODE5YjI3ZDIxNjdiZmQxZDEzMjc3ZTE3IGxlZ2FjeS10cnVuaworMjI2NzEgNzUyNjlhYjI2ZDAzMTM3N2IxNzAyNjE0YzlmMmU0Y2QwOTI1OWU5YyBsZWdhY3ktdHJ1bmsKKzIyNjcyIDhkNjQwNDQ1MzQ0ODU3ZTQ4ZDVhMzQ5NzJhZWZiYzQzMTY2MmQ3NmQgbGVnYWN5LXRydW5rCisyMjY3MyBjNzI2MTZkNjE0M2MyYzg5NzI3MmFmMTA4MGE0MjI3NDQxNmVjOTkzIGxlZ2FjeS10cnVuaworMjI2NzQgOWNmNjY5NTgxMTEwMzRiZTYzMjgxMDdmYWI0OTM1ZGUwZTVmNTg3NCBsZWdhY3ktdHJ1bmsKKzIyNjc1IDUwMGMzNTkwMzhjN2IyMzVmOTkxN2ZhMDhkMjM5ODJlYWMxYTJhM2IgbGVnYWN5LXRydW5rCisyMjY3NiBiMTM5YmRiNmQ0OGE0YmNkNTA5OWNjOGZlMzdmODQyYWFkMDFlOTExIGxlZ2FjeS10cnVuaworMjI2NzcgOTk5ZGU1NGFjNmE2MjFlNmU3ZmJmMmY5ODk1OWJmOGE4MWEwOTg2ZCBsZWdhY3ktdHJ1bmsKKzIyNjc4IDVkODFjNmJmZjMwNmU1YWYwYTY1ODAxNjJmOWVmZjZiNWEyY2E0ZmMgbGVnYWN5LXRydW5rCisyMjY3OSBjMTQwYmQ3ZDNiZGNmZmNlZmVlMGU4OTliNGY5OTY3M2Q2M2FmNWRmIGxlZ2FjeS10cnVuaworMjI2ODAgZGFkMzIwOWNlOTczMzJhOWRhMjU1OWU2YjlmNWU5MTA5YmM4ODliYyBsZWdhY3ktdHJ1bmsKKzIyNjgxIGUxNmFkNWY3ZjM4NzIyMWJmN2VlMGJlN2NiZTNmY2I3NjY3YzUwYWQgbGVnYWN5LXRydW5rCisyMjY4MiA1ZmVjMWM5YTIxZWFkZjRlOTU1ZTAyYjRjNjhkYzhiMWRmNTg4MWUzIGxlZ2FjeS10cnVuaworMjI2ODMgN2JlNGM3M2JhYzUzZTE0OTM3YTRiODhiOGQwODNlZWIyM2Q5NTRkMCBsZWdhY3ktdHJ1bmsKKzIyNjg0IGRlNzQ4MzQ3YTQwNDgwZmY0MjQwMjlmYzc4ZGU3YjJhOGU4NjY2NTYgbGVnYWN5LXRydW5rCisyMjY4NSBjYTFiOGNjMWJhMmJkNjViZGVlYzAyNmZkYzA1NjJlNzAxODUwM2UwIGxlZ2FjeS10cnVuaworMjI2ODYgMDc1NzA5ODM1MGMyODU3ZDUwNmY0ZjAzMGM5NzQ4ODhmZGU2NTAzZCBsZWdhY3ktdHJ1bmsKKzIyNjg3IDRkNjlkNzQyZGIyZjQ0YmQ4NjRlMDhhNWFjYTNmZjczMTM5NWI2NzIgbGVnYWN5LXRydW5rCisyMjY4OCAwOTIyZDYwOWFjZDEyNTJhNzdlYTA5NWQ5Yzc2YmQyNDdiNWRmNmI0IGxlZ2FjeS10cnVuaworMjI2ODkgNzEzNzJhMGY1MGUxYjRkNTBkODA0MTFhN2MxMzYyNTdiYzExYzNmZCBsZWdhY3ktdHJ1bmsKKzIyNjkwIDJhZWEzOTRmNDdkZDQwZTFmMmM2NGM3NDFhMDZiYTFjNjJlMWQ5NTkgbGVnYWN5LXRydW5rCisyMjY5MSBmNWQ4N2M0MWY2NWIyMDI3YjYwOTBhYWU1N2ZlNjEzMDg2NjkzM2IyIGxlZ2FjeS10cnVuaworMjI2OTIgM2JmY2RjYWJhNzAzNDI1NDRjYjVjNTE5ODZjM2VlYTVlZmM3MWZhMCBsZWdhY3ktdHJ1bmsKKzIyNjkzIDI1ZDJmNjQ4MzM4NDE5ZmI1YTBhOTNkMjNkY2E2OTk5OGYzYTdkNzMgbGVnYWN5LXRydW5rCisyMjY5NCBmOTRjNGJiNzg4OGIyYzc4Mjc5YTMxYjQ1Y2U2ZWNkMjcyZDhlODQ3IGxlZ2FjeS10cnVuaworMjI2OTUgY2VlMWRlY2M0ZmYyMDlhM2Y0MmVmMzdlNWM0M2Y0YzRhZTZiYjc4MCBsZWdhY3ktdHJ1bmsKKzIyNjk2IDI4MTdmMWQzYWRiZTMwM2YwYWEwNTRhMWM4Nzk0YTU3ZTZiOTUxZDkgbGVnYWN5LXRydW5rCisyMjY5NyAxMGI0NGUzYjM5MDU0N2ExNzZmYTQwYWM1NDQzNjg0MTAxMmJiZWViIGxlZ2FjeS10cnVuaworMjI2OTggN2ZiNWYxNTY4NWRkMDZhOTI2OGFiOTRlZDVjNWUwOTEzZGVmNDI3YiBsZWdhY3ktdHJ1bmsKKzIyNjk5IDlhZmQ5ZDVmYjk3YTBiNjBlNmMxNDA2MjA5MzY5NDc4MzVhYmFlZDEgbGVnYWN5LXRydW5rCisyMjcwMCAyNWI5YjYzNGQ5ZTNkMWVhZmY1NzA1MzExOTVjNzE3ZDM5MTAxYmViIGxlZ2FjeS10cnVuaworMjI3MDEgM2I1ZjM0YzViYzZjOTNhMTcwMDgwZDViNDc1NWIyNDg5YzQ1NDNhYiBsZWdhY3ktdHJ1bmsKKzIyNzAyIDZjMmI3YjYyNGVmMjNmMjJkMjg0Nzg1ODc5OGM3ZmI1MDY1MjM4YjEgbGVnYWN5LXRydW5rCisyMjcwMyA4ZjkwZTFmNTBjMTE4MzhmY2FkMDNiZjgwMmZlZTFiOGZjMzQ3NzQxIGxlZ2FjeS10cnVuaworMjI3MDQgNTAwMTljYjc4NGUwZGNlZWIzZGRhMTU0ZjZhYjkwMjM5NzA3NzhiOCBsZWdhY3ktdHJ1bmsKKzIyNzA1IDc1MzM0MTJkYzU4Y2Q2YTlmY2ViZmI2OTkzZDlhNzRkZmM4NGVjZjIgbGVnYWN5LXRydW5rCisyMjcwNiBmN2FhZjcyMWE4MWIzY2ZiNzVjODViYzU2ZjlkOTU5ODc2ZTA0NjM1IGxlZ2FjeS10cnVuaworMjI3MDcgMTM0ZTEzM2Q4YzQ0NWNjNmRhZmM2NTkxZDdiNTdiM2RhM2VmODA3ZCBsZWdhY3ktdHJ1bmsKKzIyNzA4IDBiNjQyZDIyMGIwMmUyZDBkZjg5M2FjMjM4OGRkNzY5YTUxZmI2YWUgbGVnYWN5LXRydW5rCisyMjcwOSA0NWQwZTExNDIxMmU5ODA1MTY0OGJjMWM2OGU5NzgwNmVkNzNkN2ZkIGxlZ2FjeS10cnVuaworMjI3MTAgNGEzMGVjNzk4ZTZjMmViODU4YTA3MGI4NTI0NmE2ODQ0NDE2ZmMzMSBsZWdhY3ktdHJ1bmsKKzIyNzExIDYxZDUzYzA1M2U0MzRlOWVhMDY2MmM1MTNjMjBkMWYyM2M0YmRlZmEgbGVnYWN5LXRydW5rCisyMjcxMiA2ZTZmYzdiNmEzNjAxYmRlNmVmNDgzNzM4YWRmYjYyNGMyNjA4ZDI5IGxlZ2FjeS10cnVuaworMjI3MTMgMGRjZWU5YmNkODEzZTg2MTYwNTI3OGVkOTZlYzE3NDE2N2EwODNmMSBsZWdhY3ktdHJ1bmsKKzIyNzE0IGIzYzkyZjAxMzg2OWYwNjg5ZWZmZDUyY2I1YTAxOTlhYTc5ZDVjOWYgbGVnYWN5LXRydW5rCisyMjcxNSA0NWVhM2I1ZmNiZTU3ODdiMDVjYmVjNjU3NjFmNjVkOGFmYmVhNjA3IGxlZ2FjeS10cnVuaworMjI3MTYgOGQyYjJjYjJmZWJjZjA0ZTk1MTIxZDhhNjhlYmE4YzNmNDAzZjM5MCBsZWdhY3ktdHJ1bmsKKzIyNzE3IDU1M2Q2ODg0MzhjNDM0NTZlYTc0NWU1NDhjZmEyMzQ4MTMyNTkxNDUgbGVnYWN5LXRydW5rCisyMjcxOCBjMzkyYzNlNDlkZDU2ZWQxNDJmZWM2ZWJhY2FhMzE1MDFkMjI2ZmZlIGxlZ2FjeS10cnVuaworMjI3MTkgZjlmNGJkY2JjMjVhYWUzYjg1MmRiNGMxMmM0ODlhMjg3YTAyMTdhMSBsZWdhY3ktdHJ1bmsKKzIyNzIwIGJjNjNhZmM3MDFlZjcwZGE2NWUwZjdkNjk4NmZjMzI4NmI5Y2RlZGEgbGVnYWN5LXRydW5rCisyMjcyMSAwZTcwZGY5ODQyNGVkY2MzNmI4ODgxZmNiMGRhMmZmNDMzYjdiMWE0IGxlZ2FjeS10cnVuaworMjI3MjIgZTFjOTFhYzU1Y2NhODA0Y2U3ZDEyOTIzYjQ1ODM2N2U0MjNlNDRkNiBsZWdhY3ktdHJ1bmsKKzIyNzIzIDY3YjMyNWNlMDIyNmQ0MGFmMTAxMjRkYmEzOTU2ZmZlMWQyMzA3MjcgbGVnYWN5LXRydW5rCisyMjcyNCA0Nzk2YTY3YTk5OGI5OTBjYjgyMzM3OGI4ZDdlMWUxY2RjZjFlZDM1IGxlZ2FjeS10cnVuaworMjI3MjUgOTg0ZmZhMTI0NjA2MDliOTkyN2MxYjk3NzE1MzIyNDM3ODYzNzIyNSBsZWdhY3ktdHJ1bmsKKzIyNzI2IDc3ZmVhOGZhMWYxNjQzMWMzOWZlZTcyZGZjNDdiZGFjYzFlZmFjYjkgbGVnYWN5LXRydW5rCisyMjcyNyA5M2NiNWVjNDQwMTc5OGQ1MjNhNjgxZjJhYmQ2NTBmZjAzMWEyNzY4IGxlZ2FjeS10cnVuaworMjI3MjggYzE3MWIwN2JmNmE5ZThkZWVmY2Q5N2FjZmE2Yzk5NmFhYThjMDBlNyBsZWdhY3ktdHJ1bmsKKzIyNzI5IGRlOTc3ZDc2MjdlYmZmYzE5MTcxMjA2Y2E0MTUwMmVlYzY1MWJjZjIgbGVnYWN5LXRydW5rCisyMjczMCAwMDNhMGZlOWMzNTAzZWVkMDZhZTU4OWE0NzUzNGE2YWViYzhjZmJjIGxlZ2FjeS10cnVuaworMjI3MzEgNWM4NTlkMmNiMzdiZGM1MDY5NjUyY2E4MzQwYjMzYjBhNDg3Y2ZhZSBsZWdhY3ktdHJ1bmsKKzIyNzMyIDNlNjhlMWEwMmFkMjA4YWRkOGYzM2JhY2MyZDcwMjBiZjRjNjIwMTggbGVnYWN5LXRydW5rCisyMjczMyA0MmIyZjE5MzYyNTQ2ZWQzYjgxNTE3ZmJkYjczODFkMjYwNmViMjBlIGxlZ2FjeS10cnVuaworMjI3MzQgM2U3NDMxOGExYjc2M2JkYjRiMTRiMzg4MjY2MDEzNmI3ZGIwOThmZiBsZWdhY3ktdHJ1bmsKKzIyNzM1IGM2Mzg1MDM4ZGUzOWFmZTVjNzEyNjI2YmQxODE0YjcwNmU4MWU1OGEgbGVnYWN5LXRydW5rCisyMjczNiBjMWFjNWY4MjdiYzI2MzAwM2M2YzJmNThlNGNhYjMzNmJhYzBiMDMzIGxlZ2FjeS10cnVuaworMjI3MzcgZDc5YjUxODY3Y2RiNTE5MDFhNWVkMTI0ZjkzZWNmYzAzZTU0NjRhMCBsZWdhY3ktdHJ1bmsKKzIyNzM4IDU2YjUwZTRkNjg3ZWJhNTEyM2RkOTAxNDliODQwOWZhNmUxNDQwMzIgbGVnYWN5LXRydW5rCisyMjczOSA2NzM0YzgwNjUxMTQ4ZjVhMDg1NWFmNjhkN2U3ZGRkODM2YjUxYzE1IGxlZ2FjeS10cnVuaworMjI3NDAgNDM1NGJhNDczNWEwOTY3NzYxNDRjODY3OTIxYmUyNzVhZGJlOTg0NSBsZWdhY3ktdHJ1bmsKKzIyNzQxIDYxNzU1NTU3OTYxMWZhM2JiMjU3Njk5MGZlNzMyYTE4OWI0MjNhM2YgbGVnYWN5LXRydW5rCisyMjc0MiA1NDdiNmVmMTEwOGM4NDk0NzlkOTA2YTM0YmFkZmIxZWNmYWE0MTUwIGxlZ2FjeS10cnVuaworMjI3NDMgZmM1Yzc1ODA3ZTE5NTJjYjZkZTk2MjIyYjAyN2NkOWY4NTk2MTVjZCBsZWdhY3ktdHJ1bmsKKzIyNzQ0IDA3ODI5MmJmOTRjYzcyMTBhNzVhZWVkMDRkNDI4NDA4YjViZmE1MGEgbGVnYWN5LXRydW5rCisyMjc0NSBkMGNlMDQ2MGY0YTdjNjFhZGQ0ODRiYjVlYmE3YmEwYWE3OWQ4ZDI2IGxlZ2FjeS10cnVuaworMjI3NDYgY2U0ZjFlOThiYTdlNDM2OWIzZWM5MDZlOTNhNzgzZjhhYzY2MzdjYyBsZWdhY3ktdHJ1bmsKKzIyNzQ3IDYyYmY5NDAxYTFhY2ZkZGZiOWVjOWU0ZTUzM2M4MGJiZDFmNWZmMTggbGVnYWN5LXRydW5rCisyMjc0OCAxN2IyYWZiYTdhNmZiMDRhMzEyMWUyNDE2Yzk5OWU3MGViZDk0YWM0IGxlZ2FjeS10cnVuaworMjI3NDkgNTk5MzFkYjU3MmIyNDQ5YTg4MjczNTRiMGZkMWJiZGMzYjlhYTdhMSBsZWdhY3ktdHJ1bmsKKzIyNzUwIGZlZmU5NTMxOWYyNGIwZDIyMjIwZjAyM2M4NDViMjIwY2IzNjk3MzYgbGVnYWN5LXRydW5rCisyMjc1MSA4NzYyODAzMGFkNzVkNjg3YmZkZTQ5Njg1YjU5ZDk3OTgzNWEwYzc3IGxlZ2FjeS10cnVuaworMjI3NTIgMDc2YWI4Y2I0NTFlYTAyMzc2OWNjMGE2MzFlZjhjNmZlNjE5OGE2OSBsZWdhY3ktdHJ1bmsKKzIyNzUzIGRiYmEyY2E3ZGMxZTVkNGQzNmVkYjk5ZGFjZDVlYWM0MDU1NjAwNGEgbGVnYWN5LXRydW5rCisyMjc1NCAzMzRmNDE3ODQ3N2FhNzc3MjE2OTFjNDRjMzAyYzdkZWE3MzI2NzU0IGxlZ2FjeS10cnVuaworMjI3NTUgY2UzMTliODJhOGU0ZGQ5ZDMyZmMyNjUyNmVlZTdkOWE3ZDA5YmQ4YSBsZWdhY3ktdHJ1bmsKKzIyNzU2IDVjZjkyNDFkMzViMDlhOWIwZGRmYzNkOTI5ZWRlN2M3M2EyZGNiOGYgbGVnYWN5LXRydW5rCisyMjc1NyBjYzAyMzQxZGVkZTQ3ZTA1OGQ1ZDY0NzcxNDJkZTdmZmI3MGFmYTRhIGxlZ2FjeS10cnVuaworMjI3NTggMjQ0ODBhNmQyN2M0ZDQ3OTM1Yzk0NGNkMTA5YzM1YzcwMGZlZDc1MyBsZWdhY3ktdHJ1bmsKKzIyNzU5IGIxYWNiY2Y3ZDU4Njg0MjZjZWNmYjQwZjg5NjhlNTE2OTQ3NTVlNjkgbGVnYWN5LXRydW5rCisyMjc2MCA1NDZlZjMxOGJhNWRjZDRhNzNiOWQ3N2E4Yjg1MzZjYmI0MDk2MGViIGxlZ2FjeS10cnVuaworMjI3NjEgNGFlYzljYjdmZTVkOWQ1ODMzMjAwNWNiNTU4MDllNDdkNzVlYmM2NiBsZWdhY3ktdHJ1bmsKKzIyNzYyIDFhNmNmMzI1MTQxZTBkOTU1ZjIwZmZlZTIyNWI0ODFjNTkxMTQzNGQgbGVnYWN5LXRydW5rCisyMjc2MyBmYmIzNTI2OGZlZDRmODc4YjFlY2E4MjM0Yzc5ZDA1YTZhN2JlMGM4IGxlZ2FjeS10cnVuaworMjI3NjQgOTllOTUzYzY3MDljZWVmNDcxOGIzZTIxNzI3NTQ3NTNlYzg2MGY3ZiBsZWdhY3ktdHJ1bmsKKzIyNzY1IGMwYzVmZTc5MDJjZjI3MWMyNjE0Yzc0NGViOTIwZWQ5ZGQwZjc0ZWUgbGVnYWN5LXRydW5rCisyMjc2NiA0MTJkMGViNWQ0YmE1MjE0MjZkODI0YTRlMTliOTRhNDc4ZGYzMTE0IGxlZ2FjeS10cnVuaworMjI3NjcgYTA4NDdiN2E4OTAyOGM3NjYxNWY4MGIxYjI5ZTdjNjYzMjVkODYwZSBsZWdhY3ktdHJ1bmsKKzIyNzY4IDNhOTAyMTFhMDI5NThmZWFlNDg3ZTMwM2U5NWRhZDllMjZiNTFkYjIgbGVnYWN5LXRydW5rCisyMjc2OSBhYjE5NGYxZjA1M2I2NmZkZjg2Y2ZjYmFmZjgzY2I3OWUxZTNiZmIxIGxlZ2FjeS10cnVuaworMjI3NzAgZjNlYzU0ODg5MDhiM2M0OTlkODYwMDIwMzcyMmRiYmRiYTgwZjBkOSBsZWdhY3ktdHJ1bmsKKzIyNzcxIDQ0MzNlYmE3MzllN2YxNmE3YzBkZjAxMjMwMjlmOWQ1NWNhNDgwM2YgbGVnYWN5LXRydW5rCisyMjc3MiBlYzUxZTEwYTYyMjljNmVjMTYyOTdkZTJmNWVkNTE4MmU1ODMyMmY5IGxlZ2FjeS10cnVuaworMjI3NzMgOTZhMGJiM2E4NTIxYTFiNmI1OTgyMzdlNDg3ZDA5NzA2YWVkNGE4MSBsZWdhY3ktdHJ1bmsKKzIyNzc0IGRkOGQ2MTUzYThjNjVkYjhlMWM0NzVjNTQ0OTg4ZmQ4MWM3MWMxZmEgbGVnYWN5LXRydW5rCisyMjc3NSBlZGU3ZmNiOGIwYjIzNzcxZjcxODBmYThjZDM4Yjk3NmJkYWVmMjk3IGxlZ2FjeS10cnVuaworMjI3NzYgZGVhY2Q2MDI3MmJlMzI0N2JmMDg2ZDdkMDVmMmIyN2RiYzVmZjRkMCBsZWdhY3ktdHJ1bmsKKzIyNzc3IDIwMmQ4ZGQ2NWViNWIyZmY0ZjcwYzk3ZjMwZTRhNDc3YTk2NTQ3ZDcgbGVnYWN5LXRydW5rCisyMjc3OCAzZTc4OTc4MjI0NTk3ZjQxNjEzMDk4NjE1NWY1YWEyODNlZGRlMzE5IGxlZ2FjeS10cnVuaworMjI3NzkgZGUxMDE1MWE3ZjYzZWRiZDE5ZjQ4NWFhNWFmMGYzYTQ0NTMzYjEzZCBsZWdhY3ktdHJ1bmsKKzIyNzgwIDk3NTM2MDhlMmQ1N2EzZDNjODA3MmMxYzQzMDViYTNhY2RjZGUxOTUgbGVnYWN5LXRydW5rCisyMjc4MSBjZjllMzQxODg3NjNjMDIxNDUyM2M3OTA4OWZiZTIzMzgzMjBlMDVkIGxlZ2FjeS10cnVuaworMjI3ODIgNDdmYTRhYzA0MmQ3ZjBlMzJlODEyOTZjYWU2MWQzZGRhODRlN2Y5YyBsZWdhY3ktdHJ1bmsKKzIyNzgzIGI0YTNmYzE0NzkyOTRiNDM5M2M0MWE1ZTE1YWI1ODE3Nzk0MjE1NzcgbGVnYWN5LXRydW5rCisyMjc4NCA3MmQ5YjdjMGQyMTFkYjc2OTViMzc3YjdiNzMyNjM2MTg4NjYxZThhIGxlZ2FjeS10cnVuaworMjI3ODUgZTE0MWIzOTJiNjFkZDJiNDNlNTY1N2Y3ZmQyYjgxOTE5ODQ5OTc2MiBsZWdhY3ktdHJ1bmsKKzIyNzg2IDNlMTBjMDg3NDAxY2ZjY2ViNWQwZTAwY2VmMTAwNzIwNTNkM2YxNDYgbGVnYWN5LXRydW5rCisyMjc4NyAyZDI1MTZlMzcyOTkzMTJjYTc0NjRjZmQ5NWMwZjlhMjdkZjBiMTNhIGxlZ2FjeS10cnVuaworMjI3ODggMWNkODc2NDIzNTljYTU5NTI5Zjg5MzVmMTk0YjM5YmRiODJhZDkyNCBsZWdhY3ktdHJ1bmsKKzIyNzg5IGQ3MTFlODJlY2UyMzMyZjEwMTk5NWVmN2MwODc5MTlhODI0NDQ2OGIgbGVnYWN5LXRydW5rCisyMjc5MCA4NTYwNWM5MzY1MmI1YTRlMDNhYjIwZWYwNGNkZTI1M2VkMGY4ZTYxIGxlZ2FjeS10cnVuaworMjI3OTEgNDc3YjZkZGQ0MjQyNWY2MmQwODM2ZTY2N2Q0NDZiOTExNzNlMDkxZiBsZWdhY3ktdHJ1bmsKKzIyNzkyIDdlNjI4ZjYwMjQ1ZTliMmQzYjBlZmRjNDc2MDIyZmYyNzBiOTQzZDggbGVnYWN5LXRydW5rCisyMjc5MyBkYTVlZWJiZmU0MWRhNWY3NThiZmQ0ZDNlZWZjZDkzODUwMjY1MTNmIGxlZ2FjeS10cnVuaworMjI3OTQgMTFhNzU4YzU2MDI3OTBmNjkzNGEzMDI3ZmEwZmE1NTM0MjE1NTBlOSBsZWdhY3ktdHJ1bmsKKzIyNzk1IDE5ZDI3MWYyOTdkYzc1OGNlMzdlNzUwNjZlZjA5MmQ1ZTE2Mjg3Y2QgbGVnYWN5LXRydW5rCisyMjc5NiAwMWE2OTAxY2QzMDVlMjllYWM3MmU1MmUyYTc3NjFhYTNlOTdiZGQ5IGxlZ2FjeS10cnVuaworMjI3OTcgNmMzMGQyMGQyN2YyY2NhOGFhYTVlOTI1YmE4ZTUyMTljOTY3MmE4YiBsZWdhY3ktdHJ1bmsKKzIyNzk4IDdiMzlkOTE0MjRhMmFmMGM5ZjEyZjY1MDcwZjgxZTM4OWViY2Y4NDQgbGVnYWN5LXRydW5rCisyMjc5OSBkZGM0YzJmNWVmYmM5NTk4YzVhODFkODdlZjAyYjYxMmViNjVhM2MxIGxlZ2FjeS10cnVuaworMjI4MDAgZWE3NmRlYTY0NDBmOTc4NTc2OWJjNDQzZTEzYTcyODcyZmQ1Nzk4NCBsZWdhY3ktdHJ1bmsKKzIyODAxIDM3ZTBiMGZjY2E1NDBmNjdiMzgxNjllNWFkNTRlYWE3ODllZTUzYmEgbGVnYWN5LXRydW5rCisyMjgwMiAyYzJjYzMxYmRmMTUzYWM2NzA1YzJjZTQ0NTljMmFjMzUxMDllZmVlIGxlZ2FjeS10cnVuaworMjI4MDMgMDIyNTFiMDQ4YmJiZjE5MmNiMDY2MDdlNDQwNGQ4N2U3NjgwODUwMSBsZWdhY3ktdHJ1bmsKKzIyODA0IDE4NDlmNDlhYTZmODY2NWZiOThlN2YxMDI4OGZkYzQ0MDIyYWMxY2IgbGVnYWN5LXRydW5rCisyMjgwNSAwNzM4OGE2YTU1MjZiOTVhNDQyM2ZhMDNkZDczMzQ5NDQ2N2NiOTQwIGxlZ2FjeS10cnVuaworMjI4MDYgODExNjhlZjRjYjY1OGJmNWNmZjQ3OWIxMzRlMGI2OWFlOWU0OTBkOSBsZWdhY3ktdHJ1bmsKKzIyODA3IDQ5YmI0MWE2OWRmYzM4ZWJjNmM0YTc4MDkwMzAwMDkzY2Q3MzJlM2IgbGVnYWN5LXRydW5rCisyMjgwOCBkOWVjYjIxNzAzNTRmNTYyZGZhNmJjYmRlOGU5MjM2NmViMWYyZmE5IGxlZ2FjeS10cnVuaworMjI4MDkgMzgxMTU4MGZkYzM3M2NjZDcyZDhlY2ZjOTRmNDRlZjUxN2U2OTI4NCBsZWdhY3ktdHJ1bmsKKzIyODEwIDNmYTI5Y2Y3MzE5ZDQ4NDUwNTY4ZGQ5ZjVjMjliZjMwMWI2OThiNjUgbGVnYWN5LXRydW5rCisyMjgxMSA4NTZlM2ZhMTRjYmE2OGZmODQzZDA2ZDk4MzljZWEwMjliZDY3ZTM4IGxlZ2FjeS10cnVuaworMjI4MTIgYjk4ZTQzNDYyNTdiZmJjMzdjMThmODMxMDliMGE5Yzc2NzUwNmQ5OCBsZWdhY3ktdHJ1bmsKKzIyODEzIGIwZjUyNzhhMmFiNDM3ZjJkMTE2NzlmZTUxODRiYzMyNTY3ZjFiNjEgbGVnYWN5LXRydW5rCisyMjgxNCBjZWE3ZmVhMTc0MmI0MDM4NDE2MzU0YjAyZjM0YjcxNjEyZjE5NjcyIGxlZ2FjeS10cnVuaworMjI4MTUgOWRhNjhjMDM3OWFiYjliYmViNWIxZmRiOTFhZTUyZDAxNzQxNTMzYiBsZWdhY3ktdHJ1bmsKKzIyODE2IGM0ODVkNzczNzZmYTQwNzUwNjA4ZjM1M2M1NzdmMzQ1ODJlYWU3MTMgbGVnYWN5LXRydW5rCisyMjgxNyA0NzZlYjdkY2VlZWMyNDk3ZDRiMTdmMmIwZTBiNzI2MjRjMzhiMTEwIGxlZ2FjeS10cnVuaworMjI4MTggNzI1NzYyY2EyNzc0OWFkNmVhOTdjMzc1OWE4NDkyYWQ5N2FmMWRmZCBsZWdhY3ktdHJ1bmsKKzIyODE5IDI2NTg4ZDcwMzUzMDhmMTBjMzk1NDBmNDMyOGM2YThkNTYxZTU2NmQgbGVnYWN5LXRydW5rCisyMjgyMCA3ZWRjMmZjZTFmODgxNTc0ODI4ZWQ4ZGVhYWZkNGJkNGZjZGM5YjJjIGxlZ2FjeS10cnVuaworMjI4MjEgYjY3MzA5NDA3Y2ZjODg1NGMxMzQwZjAwYzI0NThkMTZmN2NmZmZjZiBsZWdhY3ktdHJ1bmsKKzIyODIyIGZiZDQ5ZDE3MTdjNGMyODM4YWRjZWFhMzVhZmZjZmM5ZmFlNjFhYmYgbGVnYWN5LXRydW5rCisyMjgyMyBmNmY5MzQxOWJmYjY4MDIzY2MyNGI4MGZlZTBmMGZlMzQwNzczODhmIGxlZ2FjeS10cnVuaworMjI4MjQgNDNkZGM0NmM1YTk5Njc4Yzc5MDJlMjZlODNkZGE1MjY5NjM3MGNlZCBsZWdhY3ktdHJ1bmsKKzIyODI1IGRjMjc4MzljMGI4MGZhYjFlZjBhMzA3OGFmZjcyZTU0MzgwZDg4NDkgbGVnYWN5LXRydW5rCisyMjgyNiBmZDQ4YTU1YWMzNjRmZTMwN2ZhYzI2YTc4NmJhODQxM2I0MWJkZDk3IGxlZ2FjeS10cnVuaworMjI4MjcgMTNhOTNhNWRjYjFkZTY3ZTcyYjYyYjQyYWJjZmY0ZGQ4MDlhYmQ4MCBsZWdhY3ktdHJ1bmsKKzIyODI4IDQ0YTYyZTNiNzA2ZjkyN2YyYWIzMDE2YjQ5YjI0ZWVkMmRjN2ZiNjggbGVnYWN5LXRydW5rCisyMjgyOSBjMGNmMWEyNGZjMTNkZDlkOTMxNDQ3ZTMyMmJmMjZmZDVjMmI4YjM2IGxlZ2FjeS10cnVuaworMjI4MzAgYzQzZDdhOGYwMGE0NTk1YWEwMDJmZTYyY2U0ZWI2ZDM0YmFlNjkwNCBsZWdhY3ktdHJ1bmsKKzIyODMxIGM1OWYwNmYzOGE0NjhmOTgwM2UwZTdhMWRkZTM2NDliNzNkMTY4MjQgbGVnYWN5LXRydW5rCisyMjgzMiA1MDA5ZmE2ZGRmZWIzMjI4Njc1YjU2MWI1NTg3ZjE3OWExYjUwMmU4IGxlZ2FjeS10cnVuaworMjI4MzMgMmZlMDg5MThmYWM2NjdjOWYwZTBhMTFmNmQ3YzcyNmYxNGQ4ZDcxZiBsZWdhY3ktdHJ1bmsKKzIyODM0IDg0NDU1MzQ3M2ZhNDY2OGYwMzRhOWQ4MTJkY2E0ZTI5Mjc1Y2VjMDIgbGVnYWN5LXRydW5rCisyMjgzNSBiZjJjNzc4NDBmMWNjNmZmYjA4NzJhMTk1ODhhNjcxNjJmMTc0YTkxIGxlZ2FjeS10cnVuaworMjI4MzYgNDdlMGMwZmRkNGM4YTAwNzk3YmM3YTdmZTVmZTI1YzlhMjIyYmQwNiBsZWdhY3ktdHJ1bmsKKzIyODM3IDg1NzY1ZTYxZGViMGMzMWQ4M2Q0MGRkNTkwMjJjMGEyMjdhNzA2N2UgbGVnYWN5LXRydW5rCisyMjgzOCBhODBiNGIwMDZlYjdjZjMzZjgzODJiMjFiM2IzNjkxNTFiN2IxMDYwIGxlZ2FjeS10cnVuaworMjI4MzkgYzQ4NjU0OTU5ZGM0NmZkMDE0OWU5MTNiZGJlMGVjMGIyMWJkZDUxOCBsZWdhY3ktdHJ1bmsKKzIyODQwIGRiMzZlMzk2ZjA0MzE3MjJhYTZiMDAzMmFlOWUyNzA2NjM2ZTlkNzkgbGVnYWN5LXRydW5rCisyMjg0MSAxYmUxOGVmODY5YTQ3ODg5MzczZGEzMjE5OWI0NGNmYzc5NzE3NThhIGxlZ2FjeS10cnVuaworMjI4NDIgYmJkZjg2ZjM1OGU5NTU4ODhiNDA0ZDdkNTFkNTQwYzc5MTllMGU0YiBsZWdhY3ktdHJ1bmsKKzIyODQzIDA2NjMxNTQ0Nzk0MTZiMDk3YjRmZDUyYWRkMjZhZDJkYjgzMDZlMjkgbGVnYWN5LXRydW5rCisyMjg0NCAwMGRlNzE5YWU4MzE5Nzc5NGI1NWZiOWM1YWYwMjQ4ZDE1M2JjMmVjIGxlZ2FjeS10cnVuaworMjI4NDUgMWNlY2U3NDNhNzA4NDNhYzMzMWZiYmI2ZGFkYzVmZWRkN2UyYzgzZiBsZWdhY3ktdHJ1bmsKKzIyODQ2IDA0ZmQzODY5YzZiYmViMjA1ZDExOTFkNzExZGQ5NmM3NWJmMmUyYzEgbGVnYWN5LXRydW5rCisyMjg0NyA5MDRiMmY5ODExYTI5MTJlZGQ1YWY1NTZhMTkxMzU1NDRjZDBkZThmIGxlZ2FjeS10cnVuaworMjI4NDggNWQ5NzM0NDhlNjkxZGYzMzg1NGViNDZjZjIxZTdhZTIxZWE1ZTFjZiBsZWdhY3ktdHJ1bmsKKzIyODQ5IDRhYzlhNDRjN2U0NzhjOWY5YjhmMWZhYTk2MmE5MDM3MGYzYTkxNzEgbGVnYWN5LXRydW5rCisyMjg1MCAxMGJmNGJlZDUwOTZmODRiMTczMTRkZTA1MGE3YWU5NjZiOTVjOTY2IGxlZ2FjeS10cnVuaworMjI4NTEgNmQ1YWMzYzQzNDE2MzRmNjE0NmQyYWI5ZDIyYjdmYzcxMzY1NzIzZiBsZWdhY3ktdHJ1bmsKKzIyODUyIDQzZmU5Mzc3ZTJjZjYwMzY1NmQ1MTRiMzljMmIyODljNmNlMWY4MTkgbGVnYWN5LXRydW5rCisyMjg1MyA2YmViYThiNmY2MGFkZDk2YjBhNmVkODk1M2QwYTAzYTg0NjFlOWVhIGxlZ2FjeS10cnVuaworMjI4NTQgYjRlOTE4NjEyZGM5NzUwYmVlMzhkMWExNzk3NmE3Njc0NDFlNzIyYiBsZWdhY3ktdHJ1bmsKKzIyODU1IGM3NzNkYWE0NDg0MDZlOGM5NGRkOWRiNGFmNjZkZmYzMjlmMzI4MWEgbGVnYWN5LXRydW5rCisyMjg1NiA4ZjAzNTgwMGEzNzNkNzZjOTk2NmZkNzJmZjA3NmMzYzY4YmZjMmNkIGxlZ2FjeS10cnVuaworMjI4NTcgYzM5NmFmZWYxYWE5MjMyOWE0MWU3MDgzMWQ0ZTlkMjMzNWUyNDUwZSBsZWdhY3ktdHJ1bmsKKzIyODU4IGY3Y2Y4OTYxYzY2NzhlNDBlM2Q1NGUzMGQ0ZjZjNjkyNzE2Yjc2NTQgbGVnYWN5LXRydW5rCisyMjg1OSBmNGE4OTllN2VjOTNhZjA1NjhiNmIyNjI3YTdlNmE3NzZjZTE1ODI4IGxlZ2FjeS10cnVuaworMjI4NjAgMjUzYWFhMWVkY2JkMTgwNTNiMmFiMTRjYjJjMGI4ZDY4ZmNhOWRkZSBsZWdhY3ktdHJ1bmsKKzIyODYxIDMzN2I1MzY3OWM3MzQ4OWQ5NTI4ZTExNGExNmQ2ODhlNjI0ODMyZWUgbGVnYWN5LXRydW5rCisyMjg2MiBiNzMwMTA3ZGJkMTM3NTJhMGZjOTc3MzAxNTBmZDAwNTA4YzI5ODEyIGxlZ2FjeS10cnVuaworMjI4NjMgYTg4NWQ4NzYxYmQyOTA1MDBmNGFhZmQ0N2Q3YWQ5ZDg4YjU0Mzg5YyBsZWdhY3ktdHJ1bmsKKzIyODY0IDU2NjNiODgzZWE1ZDk5OWI2MTg0NzZlOGI4MGI3YTAzY2E4M2UxOTcgbGVnYWN5LXRydW5rCisyMjg2NSBiNzA2YzAyN2MzYzBjYTE0MjVkNDkxNjIxMDkzY2QzODNkMGIwZDI5IGxlZ2FjeS10cnVuaworMjI4NjYgMGJlYzY5OTc4M2QwMDliZGMyYTM0ZjgyYjY2MWFmNTU1OWZkODc1YSBsZWdhY3ktdHJ1bmsKKzIyODY3IDFhYzExMGU5MDVjMmYyNWU0YTQ5NWE5Y2JhMDBiMGI0MDNiYjYyZDcgbGVnYWN5LXRydW5rCisyMjg2OCAzOGE2ZGRmZjg2NmYxNzg2ZTU2NDRlMjA1NTM4YzA0YmMwZjAzNmFlIGxlZ2FjeS10cnVuaworMjI4NjkgMGY1MTQ2NWY5ZjMzNDBjNjlkMTI2NDMzNTEzNTU0MjYwN2UwZjkyZSBsZWdhY3ktdHJ1bmsKKzIyODcwIGQxMDY1M2U3MWNmZTA0MjIwNWMzNjgwYmIyODdiY2VkYWQwYmQ2MzIgbGVnYWN5LXRydW5rCisyMjg3MSBmMDliZTY0MWM3YTNhMWIxOTJkZGQyYWNlN2NmMDFiYzZmZjk1ODg2IGxlZ2FjeS10cnVuaworMjI4NzIgNTQ1MDgwZTMwNjI3Y2RjYjBlY2VjMDQwMTM4MDIyODJmMjkxYjc4YiBsZWdhY3ktdHJ1bmsKKzIyODczIGVmMmNmOTk0M2FjZGE3ZWVkMmM0MmM3ZDBiYzc5MjcwNTFmMjQ4NzcgbGVnYWN5LXRydW5rCisyMjg3NCA0M2NkMGI0ZTcyNjFmZDgxMGY4ZjNiOTkxZDM2ZTI0YTA4M2YyN2M2IGxlZ2FjeS10cnVuaworMjI4NzUgYWUwNTZmMTE0OTc0OTY1NTNlODg5N2QzYmIyMjk4ZmQ0MDIyMzAwMCBsZWdhY3ktdHJ1bmsKKzIyODc2IGFkMGNjZTRhNWRlMWY3OGEyMDkzZmFiY2NiZjNlMTkzNmZhZmEzNmQgbGVnYWN5LXRydW5rCisyMjg3NyAyMGZiNzU5MWY4ODU1OWMwYTY5NjU1MjAyMDQ5MjYyNDllZGU1YWMxIGxlZ2FjeS10cnVuaworMjI4NzggYzBhNDQ4MjliY2Q1ZmYyNjExNWYxYjk1YTc3N2NiNDAxZDdlMmYzMCBsZWdhY3ktdHJ1bmsKKzIyODc5IGNmMTkxOWVhOTRjMjhhMmYxZDNkOTg0MGM4NmI2NDdjODczYzEyNjggbGVnYWN5LXRydW5rCisyMjg4MCBmNWNkZTdlZWI2ZDc3ZGE2OWZiZjU4NzNjNTYwMDNjY2I4MGI1MDM5IGxlZ2FjeS10cnVuaworMjI4ODEgNzFkNDVmMzE0ZDkwYWUzNTJlZjE2ZTM4MjliMzNhOGQzMDk1NGEyMSBsZWdhY3ktdHJ1bmsKKzIyODgyIDA4YWJlZTJhMzk4ZWZhNTRlZjQ2YTk4ZDQ2MTk1NTk2NTVkMGMxNDQgbGVnYWN5LXRydW5rCisyMjg4MyA0MGZlYWVkYjc4NjdlMzRjNzc4ZjZmN2JjYmYwZDhiZjIyYmRjNGJkIGxlZ2FjeS10cnVuaworMjI4ODQgNjBmMjkwYTdlYWU4YzE0ODliM2Y3ZDgyNmE5NjgxMmUyY2VhNWM5NiBsZWdhY3ktdHJ1bmsKKzIyODg1IGY0YWYyN2NiMjYzMjQwYTBhMjFlMmUyNzQ3NWVkODQ3ZTFjYWNjMjMgbGVnYWN5LXRydW5rCisyMjg4NiBjOTY0N2ZhNzhmMDUyZjNlZjBiNTNiYWVlZjM1MDFmMDU2MTAxMjM2IGxlZ2FjeS10cnVuaworMjI4ODcgZTAzY2UyZDY1NTg1NTdhMjk0MmRhZTI2MjgwODY5Y2UyZGUxZGM5YyBsZWdhY3ktdHJ1bmsKKzIyODg4IGIxYjA0NzljOTEwNmQ1ZWQ3M2FmZmZjNTFiZTZhMTU5NGMyY2M5YjYgbGVnYWN5LXRydW5rCisyMjg4OSA5MmRmNjg0NTEyMGQ2NDYxODM3OWVmYzlkNjc3NTRkZmE4ZDU0NGExIGxlZ2FjeS10cnVuaworMjI4OTAgZDU1Yjc1YWMyZmI0ODgzMTY1ZjQ4NTAwMTk3NWZjZjU4ZWRhNGRkZCBsZWdhY3ktdHJ1bmsKKzIyODkxIDc5NzQwOWQ5NzAyMjQ1YTM5YjM3YzQxNWE4OGFkZWZjNjc1NjBiMTEgbGVnYWN5LXRydW5rCisyMjg5MiAwMWRhZThhMDNmODYzNzYyMDZjODRmZDZiZWFkYTZmYWYxMTM3OGQyIGxlZ2FjeS10cnVuaworMjI4OTMgYTNjMDQ1ZmE0OWY1MGNhOTU3ZTM4NTlhYjA3NzVkOWIwNzhkOWNjMiBsZWdhY3ktdHJ1bmsKKzIyODk0IGE0ZmVlZmNlMGNlODQ5NjlhYzQ5NTc0ZjFlNzIxMDcyMzNmZjYxZWEgbGVnYWN5LXRydW5rCisyMjg5NSBkNGIzYjhlMjM1NDRiOGY0ZGVmODJiNzZhOWI4OTBjNGY0NmEwOGRjIGxlZ2FjeS10cnVuaworMjI4OTYgYjM5ZTU2ZGZlMzVkMmI5OTQ0ZTQyMWZmMWRmNjhlOGIxMmNlYjYyMSBsZWdhY3ktdHJ1bmsKKzIyODk3IGRlMGYwMzUyMDVlZjlhMzQ3YzNiNDY3NmM4ODU3OGRlMmNhYzU5MzggbGVnYWN5LXRydW5rCisyMjg5OCA3OWUyMzI3ZTUxZDYxMzZkOGQyMmY2ZWYzNWRlZmEyOGM5NWNmZTBhIGxlZ2FjeS10cnVuaworMjI4OTkgNmI4MWY5ZTlkODYwMGEyODRmZWEzYzJlODM4ZTFlZWQzZjAzYmFkOCBsZWdhY3ktdHJ1bmsKKzIyOTAwIDkyZDBmYWM4YTE2OTM0ZjU5ZTIyMjU4N2M1MWIzMzI2ZTY4YzIxNGUgbGVnYWN5LXRydW5rCisyMjkwMSA1NzVmNTBjZWNlYmExODMxYTk4OTIwZjQyMzdmYzgwMWQyNDU0OWRkIGxlZ2FjeS10cnVuaworMjI5MDIgOTM3OTY1NTE2YjU0NzJmMjlmNGY0NTY4Yjk4MmQ5YmQwZTQ1NTU4OCBsZWdhY3ktdHJ1bmsKKzIyOTAzIDJmYTYxNWRmYzQ2NGM4MGUyNjM0MGE2NGJhODhiNjBkNmRjMWRkMzggbGVnYWN5LXRydW5rCisyMjkwNCA4MGJlYmM1Mzg5ZmQwZDE4YmY1NzE1YzExYmM0YjY0NzNhMDI5ODZkIGxlZ2FjeS10cnVuaworMjI5MDUgYjRlZGNlOWQ2ZTk5MGVjNGU5MTU2M2ZkYTZmNjE4YTlkNTc2Mzk2ZiBsZWdhY3ktdHJ1bmsKKzIyOTA2IDg0YmUwY2FiNjNhODg0YjQ2YjBhMjc2ZmU3Y2FkZGYyODU1ZmRmZWUgbGVnYWN5LXRydW5rCisyMjkwNyA3ODBlNzQxNTg1ZTEwZTI2YzU2ZDExZjhiZmMxYmIzNjdhZjg2ODMxIGxlZ2FjeS10cnVuaworMjI5MDggOGY4ZTk3MTEzMmI4NjczODQ2NTQyNzE0MzBhNDcyNjRlZTI5ZDE5MSBsZWdhY3ktdHJ1bmsKKzIyOTA5IGVjN2EyYTZjZGJlOWM0ODZhN2E2ODkxNGI4MzBmNjViMGYwMDM1N2EgbGVnYWN5LXRydW5rCisyMjkxMCAwOGMzYzllZGQ5OWJiMGJhMWU0ODA4MWFiYzQwZmU4YzA3NDdmMmFmIGxlZ2FjeS10cnVuaworMjI5MTEgY2Y2NWViZjg3NTYwOTEzMWU4YzkzZTYzMmM2NWQxMzhhODVkNTVkOSBsZWdhY3ktdHJ1bmsKKzIyOTEyIDhkMzU4YzI0ZGNmYmIxMDQzYTk3MGE4ZmExMWI3ZGRjMTZlZmI5ODMgbGVnYWN5LXRydW5rCisyMjkxMyBjYzYwNGI3MTAzNmM0ZmY4YzJkMjEzYjQ4ZWJjYzg2Mjc1OTA5Yzc4IGxlZ2FjeS10cnVuaworMjI5MTQgODdlOGZjMGE5ODYyYjU1MzljN2YyYTZmMjdiMTYxM2M0ZjQ5Njc3OSBsZWdhY3ktdHJ1bmsKKzIyOTE1IDc4Y2ZiOTkzZjI3NDE5MDZkNzQxODdmMGYzNjUyODRkOTE3YzY5MmQgbGVnYWN5LXRydW5rCisyMjkxNiA3ZGYzMDBkMjg0YzZhYTAyM2YzYjNmZjI1MDgzMDg1Y2UwNjg4YWY2IGxlZ2FjeS10cnVuaworMjI5MTcgMzU4NDU1MGE2MjJhZDU5YTY5MmVhZTgyOTJhZTE5Y2JiYzdmZDQwYSBsZWdhY3ktdHJ1bmsKKzIyOTE4IGIzMjcxMjk3Yjk4NGVhNDliNjkzNjE0ZGVhY2I4NGI1Nzc4Y2JiYzcgbGVnYWN5LXRydW5rCisyMjkxOSA3MTUyNDQxMDhmYWEwZjc3MThiZTliNTg2MGZjYjJkZWYyYjVjNjllIGxlZ2FjeS10cnVuaworMjI5MjAgNjg1ZGNhZTVjMTIzNzAyOTgzNmI5ZWIzOWUxMzY3NDU3YTIwOTI4OSBsZWdhY3ktdHJ1bmsKKzIyOTIxIGM3NjhkMzE5MWRmMWMxZWJlYTViOWQxODc2YWZmMTY4ZDFiZTZmZjYgbGVnYWN5LXRydW5rCisyMjkyMiA5MTUzMzY3NWQ2Y2JmMGFkNWYyNzUxNzUxZDE1NzAwNTU0NWU1NDY3IGxlZ2FjeS10cnVuaworMjI5MjMgODJkYjlhOTAwNmFjNWVlM2NlYmYzNzNhYWFmYTVkNjRhZTc4ZGQyYyBsZWdhY3ktdHJ1bmsKKzIyOTI0IDY5NTg3ODRiMWNlZjAxNWNkZGZlMjMyYjg4NTZhODhmYjk5NWM0NGEgbGVnYWN5LXRydW5rCisyMjkyNSAzZjg0YjIwMDBmNjJiNDE0OGZmN2E0ZmY2MjI3NDA2ODAxM2ExNGM3IGxlZ2FjeS10cnVuaworMjI5MjYgN2RlNGU2YjhkMTk5YzBlNGE0NTJkY2VkZDE4M2RkYTkwZDczMzQwZCBsZWdhY3ktdHJ1bmsKKzIyOTI3IDhkZmIxM2E0ZTE3NWMwZjM1MTU2MTM2ZGExZDNjNTg0ZTBkZTU3NzAgbGVnYWN5LXRydW5rCisyMjkyOCA4Y2JjNzRmNTU4NmI1MDc2N2QzMGQ2MmVmM2VkNmU3MjVlYjE5ODVmIGxlZ2FjeS10cnVuaworMjI5MjkgNzE0YWVlY2MyMzE2MmY3NDdiYWQxYWZmN2UyZWVkY2M5ZjYzZGVmZCBsZWdhY3ktdHJ1bmsKKzIyOTMwIDZlYmMyNjMzM2U2ZDdjYzFlYWVlMzhhZTU2ZGE0YTk2NTZmNmY0MjUgbGVnYWN5LXRydW5rCisyMjkzMSA3NDllNDljOTQ3YzA3MWJlOTAzMGE4ZDg1MGJmZDAzOGNlMzA1OWZkIGxlZ2FjeS10cnVuaworMjI5MzIgMzczMWFkMWQ5MDMzM2VkMTFiMzgzODczNThiMzc3ZTdmMWNlMDJlZCBsZWdhY3ktdHJ1bmsKKzIyOTMzIDMxYTY2YzBjN2QzMDFlNmEzYWUyNTdhZjEwNzg3NThkNWQ0ODc5ZmIgbGVnYWN5LXRydW5rCisyMjkzNCBjZmM1ZTUxNjBjZjVkZjgyNjUwMjFiNzM5MjQyNjVkZmJiNzQ5MTRhIGxlZ2FjeS10cnVuaworMjI5MzUgNmI4Mjg1M2RmMmVkYjc4Njc3N2ZiMmRjZjM1Zjk3YjZmZDQwNTQ5NCBsZWdhY3ktdHJ1bmsKKzIyOTM2IDkzM2U4MTI5NzRjM2VhOTBkOTNlMmUwMjA0NTc2NjcxNjRjYzBjMTAgbGVnYWN5LXRydW5rCisyMjkzNyAwNDIxOGU4NWIxNTZmZDY1OGY0NzAwYzAxMDA0MzAwZjRiNzBlZGMwIGxlZ2FjeS10cnVuaworMjI5MzggNjE3ZjVlNzJiMGVjODMzMmQ5MmZkOTVhMTY0YzI0MzFhMjI4YmI4NiBsZWdhY3ktdHJ1bmsKKzIyOTM5IDM3MTZiMTE2ZmIzMTMyMjU1YjQ1NzRjYjE1OTA5ZmVhZTMxZDRkMWUgbGVnYWN5LXRydW5rCisyMjk0MCA5ODMwZDAwYjg4N2RmYTQyNmQwZDk5MjA2YmZkYTQ4OGU3ZGI0Mjc5IGxlZ2FjeS10cnVuaworMjI5NDEgODQzZGE5Nzk1MzgxMzA3ZjAxNTI0N2IxZmMxOWZjYmU5ZDczNDY0OSBsZWdhY3ktdHJ1bmsKKzIyOTQyIGJjNmJkMzVmNTk5OGRmNDlmNWRjNGYyMjEwMTk0MTZjNmJlNzczZmIgbGVnYWN5LXRydW5rCisyMjk0MyAzNzJkOGMxZDJiNjRlMjg4ZDYxMDIwNzBjZTYxZThmNTU2MWQxZGI0IGxlZ2FjeS10cnVuaworMjI5NDQgMmE0ZTNjOTI4NWI1NGZiZTg2YmM4N2MxMmJhMWU2NzQyMTkwOWQ2ZCBsZWdhY3ktdHJ1bmsKKzIyOTQ1IGZiYWY0ZTU1MjYzZjkxMDM5M2Y5Zjg3YTNmMGRjZTgzMTQ5MmRiZjMgbGVnYWN5LXRydW5rCisyMjk0NiA0NTY1NzM3NmI5YjhjYzkzNDYzNWJmZjY4ZjIzY2E2M2EyZWY3NzM2IGxlZ2FjeS10cnVuaworMjI5NDcgZDZlMWIxMDkxNjA5NzFiMzcyNDhhYzFkYzYyZTNjMDczNDYzZTJjOCBsZWdhY3ktdHJ1bmsKKzIyOTQ4IGUyMDJhNzVkODgxZTE0Nzk5NWJiNDM2NTU2ZjZlNzg2OWQ2ZWRhNjkgbGVnYWN5LXRydW5rCisyMjk0OSAxOTAxZjg3NWI3ZDNkMWQ4ZDRmMzAyZDEyNzk4YjYyYjFkYjgzZmJhIGxlZ2FjeS10cnVuaworMjI5NTAgYjdmNmZiYzA4N2E3N2VhYTcwNzY3MWIyNmJhMGVlMTMzYmJlODQzYSBsZWdhY3ktdHJ1bmsKKzIyOTUxIDUwMDU1NDViNjQ4N2YwNmE3ZWQ2OWFmZmIzZDMyMDQ1MWFmMjQ0NzkgbGVnYWN5LXRydW5rCisyMjk1MiAxMWIzNzNiMDBmMmFmZTFhZWYwNTdlOGNmMjMwZjgwOTQ3NGQ5ZjdhIGxlZ2FjeS10cnVuaworMjI5NTMgNmVhZmM0YTYzNTlhODBhOGVlMTU0MWUwNzg2NWFlNDY4YjgxMTFlMSBsZWdhY3ktdHJ1bmsKKzIyOTU0IDBiMGM4NDA3OGY5MTYwZGEyNjE1ZWQ4MGY3MGMzYjQ3OWM5MGM0NGEgbGVnYWN5LXRydW5rCisyMjk1NSAxYzhhOTUwZDY5NzAwZTc1YjE0NDNlODE4YjQ3OGVmMDExMGQyMjA5IGxlZ2FjeS10cnVuaworMjI5NTYgYmQyNTJiMTgzMmEyZGJhMTg5MDgwMmVhMGMzNjE2YzU2NWQwMDkwMiBsZWdhY3ktdHJ1bmsKKzIyOTU3IGI0NTIxNDM2ZThmOGY5OWQyODE3MjdhMzc3Njc4M2E1N2RiYTUzZmIgbGVnYWN5LXRydW5rCisyMjk1OCA5NDMzZGQzYzE5N2VmNGIxZjZhM2Q1YTU5OTJiNjQxYjUwOTYwNWY1IGxlZ2FjeS10cnVuaworMjI5NTkgNDUwZTVhMGU5MjZiOTQwZGI4OTM5YTE0NzJiODc1Nzg0YzcyNDA2YiBsZWdhY3ktdHJ1bmsKKzIyOTYwIDBkOTYxNDVjNDRiODlmNmEwZmQzYjgxZDcyODYzNWU2MTkyYjYyMGMgbGVnYWN5LXRydW5rCisyMjk2MSBmYjJkODNhYWZmNjg2NDVmZTdmNmYyYTEwZjZjMTg1NGJiMTk2NjUwIGxlZ2FjeS10cnVuaworMjI5NjIgMDFkZTBhNzAzMDY5OGM3NGMzMjhlNTE0ZjUzYmYyYmEyZTY1NjY2NiBsZWdhY3ktdHJ1bmsKKzIyOTYzIGQxOTY0OGNhODc0OWNjYzFhNDI0OWIxNDU3NTI1OWRiMjViOGI1ZWMgbGVnYWN5LXRydW5rCisyMjk2NCBjZGZkZDUzNTk0MTFhMDk3NDI5MGI0MDQyOTc3YjcyZWVmNDdhMDhlIGxlZ2FjeS10cnVuaworMjI5NjUgYTY4NGI0YzEwMTI4NDNlOTMxYmUzMDIyN2E2NGFiNDU3OTcxMzU1OSBsZWdhY3ktdHJ1bmsKKzIyOTY2IDc3NjZlYTcyNDMyMDk0Zjc5ZjNhYmYzNDkzOGQ5NjI4ZjQ0MjRmNTUgbGVnYWN5LXRydW5rCisyMjk2NyAyMWQyYjllZWRjMmRlMTc5OTYwNDNjNDU5ZWY1YTIwNDZlYTMyNjYwIGxlZ2FjeS10cnVuaworMjI5NjggMmE5YmJkYmVmYmIxYzk0ZjFkMmZlMjA5NjMxNmU3OTcxNjYxMmM2NiBsZWdhY3ktdHJ1bmsKKzIyOTY5IGJhOWFhYmNkODllM2RlY2VhMmVlOTJlMWVjZDU3Nzc5OTZkMmZiNDEgbGVnYWN5LXRydW5rCisyMjk3MCAyMjZkNWVlZmE0NGFmZDZiNWNiYzU2Yjg2Njg4N2E2MDBkOTk2M2FjIGxlZ2FjeS10cnVuaworMjI5NzEgNTQ4N2Q5ZDUzYTBlMWU1NTIxMjFiYzkwMGRiNzMzMzM3NTA5NjNmZiBsZWdhY3ktdHJ1bmsKKzIyOTcyIGYzMDM2ZDRlM2MyMmFmODEyZjA4OWFhZTE0MTM1ZmUxZjc5MGNmMjkgbGVnYWN5LXRydW5rCisyMjk3MyA0ZDJjYjZlYWE0MTEzOGM5YTAwNDJiMjUzZWI4ZDFkNWViNWMwNWNkIGxlZ2FjeS10cnVuaworMjI5NzQgZGViMDhhZjg5YTM1ZDY5ODg0NjEyZDMyZWYxMTQyODlkMDY2MzA5YiBsZWdhY3ktdHJ1bmsKKzIyOTc1IDJlNmRhMmRkMmFiODIwNzBiNDExMWY1OWFiNDRmYWY1MzU0NzdhNDggbGVnYWN5LXRydW5rCisyMjk3NiA4NWViMWM5MTFhZTVjMGM3NjZjMGY3ODhlYmY1Y2UzOGY4MDJjZDE5IGxlZ2FjeS10cnVuaworMjI5NzcgYjdkYzUxNTk0NDhmNDhhNzczMjJiOTJkZWZkYmQ5YTM0MjgzYjU2MiBsZWdhY3ktdHJ1bmsKKzIyOTc4IDJjMWE5ODMwOThhMDY0YjQ4ZDkyNWEyOTM4ZjRmY2ZiMmM0ZjllNTYgbGVnYWN5LXRydW5rCisyMjk3OSBkOWRhYTRhNjdiZTI2MjM4OWExMGM0ZjYyMjExMGQ0YWExNDM0NjMyIGxlZ2FjeS10cnVuaworMjI5ODAgZjU2YzkxODIwZmFlMmQyY2E4M2JkM2ZhODIxZDU2YjBhODYyN2NmYSBsZWdhY3ktdHJ1bmsKKzIyOTgxIDBlNDY0NmJmODA0MTEwZTMzN2VlMzg0OTRhN2UxZTQ5YTk4MTJhNDcgbGVnYWN5LXRydW5rCisyMjk4MiA1NmM1NDlhMjUzYTZlOTRjNmZjOWE2YTExYTQ3OTNhOGU5YjI5MzI2IGxlZ2FjeS10cnVuaworMjI5ODMgNWRkMjhhYTJiZTZiZmQwMDQwNDMxMmMwYzY2NDIxNTkyMDA5ZDUxZSBsZWdhY3ktdHJ1bmsKKzIyOTg0IDhkMmM3NDM2YjlkMjdmN2YzMjVjZTY0OWI0MzI3MDJjZDM4NGVhMDkgbGVnYWN5LXRydW5rCisyMjk4NSA4ZTZlMjQ4ZGZkZDg2NWJiOGI2YzMyMDI4YjViNDI2MTcyNjg5YTEzIGxlZ2FjeS10cnVuaworMjI5ODYgYTVlZWIxZTcwZjQxZjJmZTg2ZGQ4NTI3NjEyODI4NjdmZDk5YzNiZSBsZWdhY3ktdHJ1bmsKKzIyOTg3IDJhNDY1YjBlYjU0ZTQyMGFhM2RmMjQ3OTZkYmYyZTNmMGVlYTIwMDQgbGVnYWN5LXRydW5rCisyMjk4OCA4NTQxODc4Y2YyZTEzZDI1NjA0ZmE5NTAzOGI0YmY4ZjRjM2I4NzBhIGxlZ2FjeS10cnVuaworMjI5ODkgZjE0MzBlMzM4MmJiZTRiYWY4MjQyYjhiNTg1OTk4MTY5M2MxNzU5YyBsZWdhY3ktdHJ1bmsKKzIyOTkwIGRjMDU5YmZiNTNiMjJlY2Q2NTEyMjg3ZTlmMGJiZDIyNTU3OGUyMmUgbGVnYWN5LXRydW5rCisyMjk5MSA5ODg1NmE0YWVkMTAxNzI2YWU2ZDI0YjVhZDA2N2QwMWQ4NzEyY2MxIGxlZ2FjeS10cnVuaworMjI5OTIgN2ZhNDA1OTdkYTdlN2Y5MmUzNDgwZmM2N2JhMjBjNTc1NTQzYjJkMCBsZWdhY3ktdHJ1bmsKKzIyOTkzIGM5M2Q3ZDA4NTdhMjc2ZGJjYjFhMTI0MzFkMTE1MmNlNDM0YjVjMTggbGVnYWN5LXRydW5rCisyMjk5NCBmYTA2MjFlNGFkOGFjN2Y3ZjhkNTc0YzRmYWUzNGM1MzFhZTM2OWM2IGxlZ2FjeS10cnVuaworMjI5OTUgMzViNmExZDBiMWUwNTRiNGQ2NGUyMDU4OWFmOGQyNGZkOGNhMTU2YyBsZWdhY3ktdHJ1bmsKKzIyOTk2IDNkNzZkZmMzNGM1N2U2Mzc1NTI4ZDgxNzZlMDFiZjhkNTQyMWJjODIgbGVnYWN5LXRydW5rCisyMjk5NyBkYmI5ZDgyYzdjZTM3ZmY0Mjg1NzMwNDlhNGYyOGFjYmI3OTM0ODAzIGxlZ2FjeS10cnVuaworMjI5OTggYzA1ODBkOGMxOTNlM2UzM2ZjYjc4YzU3OTRiM2FhNjQ4ZDI0NTU4ZiBsZWdhY3ktdHJ1bmsKKzIyOTk5IGUxZjFlOWViZjA1MDEzYTcwNmU2ZjA3OTEzYzYzMjE1NGNjOWZkYjEgbGVnYWN5LXRydW5rCisyMzAwMCA1YTdhYzhjMDYzY2NjZmMwYzZlYzI3YTMwNGNkZDlmNWUzNGMwZmM0IGxlZ2FjeS10cnVuaworMjMwMDEgYTFkMzk3MDg4NWJkYmViYmU3MDZhZGI2NDlmMWU4YTJiNzA3MDA1NiBsZWdhY3ktdHJ1bmsKKzIzMDAyIGNhN2Y3NTc2ZDgyM2U4YzcwYjg2ZDAyYTVmODg4MmRlZjA1MTcyNWUgbGVnYWN5LXRydW5rCisyMzAwMyA2NGJjZWYxNzAyYWQ5N2FlMDE3ZmVmNmMwNzlmYjcxOGExYjZjZTlhIGxlZ2FjeS10cnVuaworMjMwMDQgOGU4N2NkZGVkOTZmYmZlN2Y1YTZlNWMyYzRlMzM0OWQ1ZTc2MTZiMyBsZWdhY3ktdHJ1bmsKKzIzMDA1IDk2ZGE5ODVjZGU5ODQyNmFhYzRkM2ExYjVkNGRhNDkzYTkwNmFjMjAgbGVnYWN5LXRydW5rCisyMzAwNiA0NDE3NWJiMGI3YmZjODA3ZWVjNmRkYTkyOTYwZGJhOTgwZDRhMTRkIGxlZ2FjeS10cnVuaworMjMwMDcgZDA5MjY4ZDBlYTUyOWI2NDkxM2NlMDRiOWJiYmZiYzUzYjBhNzJiOSBsZWdhY3ktdHJ1bmsKKzIzMDA4IDk0ZDBmMmVlYTA0N2UyZThiMTIzZTMxOTc1MWRmNGYxMDcwZjU2ZDUgbGVnYWN5LXRydW5rCisyMzAwOSA1NzhlZjM2ZjhmZGUwYTQyYjZjYmRkNGE0YmJlOGU5OGQ4NGMzMjg3IGxlZ2FjeS10cnVuaworMjMwMTAgNWZjZDBkNDFhNDQ2YmQ2NTI1MDcwOTRlMDBmNGE4YWU0MTQ3ZDdiYiBsZWdhY3ktdHJ1bmsKKzIzMDExIDJiY2NlOGJhYjhiYmU4ZGJkMzc4MjNjODI2NTc3YTQwZWEzMzBlYzkgbGVnYWN5LXRydW5rCisyMzAxMiBkNTQzNzhkMzMzNGZkNDI4ZTBhYWVjOTE5NDIyODBjYzRmNTBkMTA5IGxlZ2FjeS10cnVuaworMjMwMTMgZDRmNTNiMWZiNDI0MGRmYzJiMzg3Y2RlZTBkMjZjY2ZkZTk1YjU3OSBsZWdhY3ktdHJ1bmsKKzIzMDE0IGE1ZWFlZjQ3YTliMzM2MGZmNDIyYzdkM2E2YTQyODMwMmM5MDQzZDkgbGVnYWN5LXRydW5rCisyMzAxNSA0MmQwYmRlNzM1MzNlMTI0NWM2MzUzMTQyNmM2ZmNiMjVmMWVmNDQwIGxlZ2FjeS10cnVuaworMjMwMTYgNDMyNTkxMzI4NDEwMjQ1YmQ4YjUwNjYxN2YxNDFiMDE4YmE2Y2RkZSBsZWdhY3ktdHJ1bmsKKzIzMDE3IDMzNWJmM2VhYjlmMWFkZDlkOWE1ZjAzYTg5NjczNzQ4OTAxNmY1ZmIgbGVnYWN5LXRydW5rCisyMzAxOCA2YzdkZDliM2U1MGI1ZjMzNjhkNDEzMmNiMjMzMDAzOTMzMjhjY2ZhIGxlZ2FjeS10cnVuaworMjMwMTkgYzU1MjNiMGY4OWQ1ODNkZWRlZDFlYTcwZTJlMDFiMzg3MzIyNmRkZCBsZWdhY3ktdHJ1bmsKKzIzMDIwIGVlMTJjMzhlNDZhNmZjMDM1Yzg3YWMwMjNlNDlmZTk0MTYwNjc3OTEgbGVnYWN5LXRydW5rCisyMzAyMSBiMjMyMzg2NDZkMTU2YjJkMTcwOTU0MWRhYWFhZmViODc1Yzk4Yzc3IGxlZ2FjeS10cnVuaworMjMwMjIgZTcxNDcxNTZlZjMzZTc0YTQ3N2JjMDcxM2ExYmE0MDk5MDI3ZmYyZSBsZWdhY3ktdHJ1bmsKKzIzMDIzIDFjNjJiNGE1OTdmNmU3MmIwNWM3M2RmMmZjMTJmYjVmMzdjNWVlODEgbGVnYWN5LXRydW5rCisyMzAyNCAwN2JiMDlkZjMzMjRmMTAyMDFjODgyOTI5OTc5OGRkNmE0NjczNzg4IGxlZ2FjeS10cnVuaworMjMwMjUgMWNjODRkZmNkNmJkMjc0ZjNiNTdmNGIzNDY2ZWY4OWMwY2FjMjVkMiBsZWdhY3ktdHJ1bmsKKzIzMDI2IDdiNzIyYjZjYzc3YjMxYzI4OWYyNjU4MDFhZTdhYjMwMjNiYzc4NjIgbGVnYWN5LXRydW5rCisyMzAyNyA5ZGUyZjdlMWI2ZThiOWJlMzgxYmExMGFmMTA2OTUzNjM5N2JjOThjIGxlZ2FjeS10cnVuaworMjMwMjggMTNiNjU0Y2U2M2E0NzdiZjZkNjg1YTVhMThkY2JiMWQyM2RhNDkwOSBsZWdhY3ktdHJ1bmsKKzIzMDI5IDE3MzEyMmU1ZWRlNDE3MmM0MTFhMWU4YjY4MGFkNzA2YjQ2ODA5NWMgbGVnYWN5LXRydW5rCisyMzAzMCBjNzM3ZDEzZGE5MmQyYWUwYTA2MDMwYTZhOTA4YjIxODkxNTU1N2UzIGxlZ2FjeS10cnVuaworMjMwMzIgNGFiZmMxNzY2ODVjMzAyYTIxYzE2MDNjNTdlNGM3YmNjNDMwOTZmNCBsZWdhY3ktdHJ1bmsKKzIzMDMzIGY4MTRlYTZiYjY2NzZiODI0MTk1YzUxMjA4ZGQ2NjNhN2M5ZmVhZTIgbGVnYWN5LXRydW5rCisyMzAzNCBjYWQ5MzNhNDU0ZmU2MWQ0ZGYxODBhYTJiZTI5MzhmMjdlOGRjNjZiIGxlZ2FjeS10cnVuaworMjMwMzUgOTRlMTQxZTIwZDYxOGU4ZTEzMWY5MGJmN2NkYWMyNjExYmFhODhjYSBsZWdhY3ktdHJ1bmsKKzIzMDM2IDBiNTc3MjkyODRkZmI0ZTZjMjM5ZjE2YWIzNDk0MWUxOTQyNmUwOTggbGVnYWN5LXRydW5rCisyMzAzNyA5MDc5NzEwZWMyMTY5NmUzOTg0Njc5ODJjYmM2MWM4YzkxYjY5NmM2IHIyMmEzLWJyYW5jaAorMjMwMzkgOTYwNDc0ZDEyOWFlZDczNjVlYzc5YWFlYjBhMjZiY2E0ZGZlODY0MyByMjJhMy1icmFuY2gKKzIzMDQwIGM5N2RkYTIzOGIzNjI2NjFiYWI3N2JiYTlkMGFjM2E3OWM1MmEyMTkgbGVnYWN5LXRydW5rCisyMzA0MSAzZjYyMTQ4OWJlNzIxZGE2ZTRhZTUyYmNlNDQ2NzI5ZGQ3MDViNzI3IHIyMmEzLWJyYW5jaAorMjMwNDIgYjM1YTJiZjBjOTgwYWI0NTNiNGRhYTQzMWRkMWE0YTlkYzI3ZGYzNyBsZWdhY3ktdHJ1bmsKKzIzMDQzIGUyZTlmMTcyMmM0ZmEyOWYwY2ZjZTBmY2RkODM5NDE5NTg3MmUwMGQgbGVnYWN5LXRydW5rCisyMzA0NCA5NWVhNjYxMjIzMjU2ODhlMjRiN2ViMTcxNGFmMzIyMzg1ZmY1NzNhIGxlZ2FjeS10cnVuaworMjMwNDUgOWM1NGExNmFjOGI5ZWRjNTM0ZGE4YTZkMzIxNWY0NmMyODZlMDJhMSBsZWdhY3ktdHJ1bmsKKzIzMDQ2IDcwMGZlZmRjMDNkMjg1ZjMyNGZhY2UzM2IzYTg3ODVmYTJiODJjZmIgbGVnYWN5LXRydW5rCisyMzA0NyBjMGY5NGJjNWZmZTgwNmU3Nzg2MWY2OTJiYmQxNjE0NGExMzhkODc5IHIyMmEzLWJyYW5jaAorMjMwNDggNzcwOTdhNTVlOTczMWYwNWUwNGY3OGQ1YTUzMjU2OWQzOWU5YmZlOSByMjJhMy1icmFuY2gKKzIzMDQ5IDAzMDgwZTM5NWM5ZWQwZmVhODU4MzU2ZmU5MDM3NWFlYmVmZTdhOGYgcjIyYTMtYnJhbmNoCisyMzA1MCA3OGU3M2I4NTFhYTlkYmEzNjRmZTkxZmZiNjM3ZDM0Nzk2OGFjODk5IHIyMmEzLWJyYW5jaAorMjMwNTEgMjg1Yjc0MGI4NDQxOTJjNjdmODQzODIwYzYyNmQ2NGVkYWNjNjZhMyByMjJhMy1icmFuY2gKKzIzMDUyIDQzZGM4MjdkZDcxN2NhZmJhZDViNGE0NDVhN2YyNjUzZjUxZTgxMzUgbGVnYWN5LXRydW5rCisyMzA1MyAwOTFjMDFkMDdkOTgxNDI3Y2ExNGMxMjA4NGQyMmY5OThmOWVjOWRkIGxlZ2FjeS10cnVuaworMjMwNTQgZDQ4MDE0ZGJiODVmNmE5YTViNmQyZWMwNDQwY2Y1YzMwNjI5MmMwOSBsZWdhY3ktdHJ1bmsKKzIzMDU1IGVkNTQ5NDNjZTI0ZTBmZTQ0Njg4OGY5NWY4MDZkMThkOTZjYzQ3NjEgbGVnYWN5LXRydW5rCisyMzA1NiBmZTIyOTcyN2E0MGNmZDQ5ZGI0MTk2M2JjNTFhYWUzMmNmNjM3N2E5IGxlZ2FjeS10cnVuaworMjMwNTcgYjQ3ZDI5Njk5Y2QyOThiMWIyYjQzMjZmODQ1NTNiZTY5NWRhMzkxOCBsZWdhY3ktdHJ1bmsKKzIzMDU4IDMyY2ZjZTRkODNkYzA2MDQ4MGI5MWZiNDhhNDdiYzQ4YmVhM2U4NDIgbGVnYWN5LXRydW5rCisyMzA1OSA5MDMxYWFiMjdlYWVkZDJhNTBiNGIzZjQzNTFlMDNkMGY3ODhjNWM5IGxlZ2FjeS10cnVuaworMjMwNjAgNTYwMTU1ZTc1MDg3OGMyZGYwMDBkOWFmNTc1MDY5MWVlZTAyYTNmZSBsZWdhY3ktdHJ1bmsKKzIzMDYxIDhjYWM1ZWI3MDNmZDg0NjVkYzI0MDllZmNhOTY2ZTQ1NTVhNWMyOGYgbGVnYWN5LXRydW5rCisyMzA2MiAwODZmZmFmYWVkNTUyNTk5MGY1NDg3NWEwYWRhM2UwNDdhMjAwNTA5IGxlZ2FjeS10cnVuaworMjMwNjMgMDU4NGM5MTMyNTI1YTU4OGUwNTQ0NjJjNzRmZDhhNmViMDJmOTg5YSBsZWdhY3ktdHJ1bmsKKzIzMDY0IDc5YTMxYmE4NzNhMzQzZGQ5NzUzOGFlMDRlMmJmNDJiY2NjYzFkNWMgbGVnYWN5LXRydW5rCisyMzA2NSBjZTU3ZmZmOTM5NjI5ZDBjYWJlODEzMWVhMTMwODUwODllZGMzMzZjIGxlZ2FjeS10cnVuaworMjMwNjYgMzhjMTJmYWY2MTJhYTU4OWM4MDk5MDRlZTQwNzg3NTExMTU2MTg1MyBsZWdhY3ktdHJ1bmsKKzIzMDY2IDA4Nzk2YTEzN2YxYWRhMjQ2MmY3YTMxNzczMDZkZjVmNjdhNzY3ZTEgbGVnYWN5LXRydW5rCisyMzA2OCA3MDQxMWViYTIyNWIxYTUxZjdjYzNhN2YyNjhlZTk2ZjVmNzUzYmVjIGxlZ2FjeS10cnVuaworMjMwNjkgZGM4N2Q5MWQwZGZkNjg1ZTg1NDRlMWU2MmU0N2RkYjQ3NDdiN2U4NSBsZWdhY3ktdHJ1bmsKKzIzMDcwIDhkNTg1ZDgyMmY5ZDBkYjFjYzkxMGE4MmQ1NWEyYzAzMGY0OGU3M2UgbGVnYWN5LXRydW5rCisyMzA3MSAwY2JiMDYwZGEyYzM0YmNkMDk0ZWY1YTFiYjE5MmQwOTk4YzM1YWZmIGxlZ2FjeS10cnVuaworMjMwNzIgYjczOTYyODdjZjY1Yjk3MjZjMjQ4NTE5NzkyNzlmNWQ3NzBhMDFhYyBsZWdhY3ktdHJ1bmsKKzIzMDczIDZiMWJlMTRkNzY1MDMyNDkwMzc1ZDIwMGU4NDQ0ZWMxYzFkYTM5MDIgbGVnYWN5LXRydW5rCisyMzA3NCA1M2UwY2FlM2NmNmNkMDkzMWI2ZTdkN2U4Yjc4MjY2MWNlNjQ1YjBiIGxlZ2FjeS10cnVuaworMjMwNzUgZmU1ZWMxYTNhN2UwZjczMGIwN2ExZDY1OWNjMmJhNGVkMmNmOWU2MCBsZWdhY3ktdHJ1bmsKKzIzMDc2IDNmNzNhOGJmNzZmN2M5OWJhOTZmMTY4ZTQ2Y2FiMWUyN2Y5NTQyOTMgbGVnYWN5LXRydW5rCisyMzA3NyAzZGMzMTU0MDk5NjgxNDJjMGQ2ZDU2ZDUxMWJlM2RkYWI1NDNjMzc2IGxlZ2FjeS10cnVuaworMjMwNzggNmU1N2RjMzA1NTUxMDhhNmZjMTgzMzRhMWEyZDgwMTZjZGMwMmU4NiBsZWdhY3ktdHJ1bmsKKzIzMDc5IDM3MjE0OTc3OTI0MDY2OWY4NDc1MzEyYmJiODg5ZDNkOWQ1YmUzMTcgbGVnYWN5LXRydW5rCisyMzA4MCA5MTk1MzJjNTBhMTc1OWI4OTRkYjk1ZjAxMDU1MzRiNDFkMWI1YTAxIGxlZ2FjeS10cnVuaworMjMwODEgOGVmNDU2OTQ5Yjc2MjQ2YWVlODRjNjg1NTJkOTVlNDM1YzNlMTdiOCBsZWdhY3ktdHJ1bmsKKzIzMDgyIDM5ZWVhYjY4OWQwNjdiMDljYTVmZGIzODA5YjFkYTczMTk0YzE3NTggbGVnYWN5LXRydW5rCisyMzA4MyA1YjI4ZDdkYzMwMDYyNWI1ODNmMmRmMTYyZDg4MzMxOGRmMzg1N2IxIGxlZ2FjeS10cnVuaworMjMwODQgYmJhZWE1M2FjMDg3ZjU4NjU3ODJkNTA1ODBmNTkyZjk0YmRjZjljOCBsZWdhY3ktdHJ1bmsKKzIzMDg1IGU0MTkwNjBlMTNjOGQ0NDEzZjBkN2E2ZGE0YzJjZmFmNTlhMDM5MDQgbGVnYWN5LXRydW5rCisyMzA4NiAxMzU5ZmFjNjE3ZjFiYjQ3Yjg2NmYwNmE1OTU0Y2YwOTVjYTU0Y2RkIGxlZ2FjeS10cnVuaworMjMwODcgMDBkODA5NDdkODE3OWY4ODlhMGM3ODJhOGI2MzEwMjM1YWYwMDk4ZSBsZWdhY3ktdHJ1bmsKKzIzMDg4IGY0NDYwNmIyNDJjNTkxMTE0MDc5MTYxNDI2OTg5NmE4NWYyZTE5ODUgbGVnYWN5LXRydW5rCisyMzA4OSA1MzI1MGNiMTA2ZWI0NzFiNzQ0ODNhYjY4MWU2NmQ4MjI1ZjEzNDkxIGxlZ2FjeS10cnVuaworMjMwOTAgOWNmMTMzOGZkOGQ5ODUwMDIyMjlkYmViMTRiMzYxOWJjMzVkOTNjMyBsZWdhY3ktdHJ1bmsKKzIzMDkxIDU0MjBlN2QzNDhhNDRjNjMxYjhjMzVlYzliYjU1NjQzNDAxZmJkZDIgbGVnYWN5LXRydW5rCisyMzA5MiA1MTU4ZTQ3ODk0NTkyMTgxMGUwZDY2OTM2Y2YxMjY5OWNiMDZhNzlhIGxlZ2FjeS10cnVuaworMjMwOTMgYzE1OTIwYzJjZjZjY2I5ZmU5ODg0NDg0ZDQwMjNmNmQ0MmM4ZWQxMyBsZWdhY3ktdHJ1bmsKKzIzMDk0IDEwZjU5MjdkYmYwNWQwODlkYzZiNmIzMDI2MDZmNWM1NWU0NDEzZTcgbGVnYWN5LXRydW5rCisyMzA5NSAzNzc3NDZhMzg5NzIxOTk4YzQxYjlkYjQ5NDc5ODcxOGZjOTk2ZmEwIGxlZ2FjeS10cnVuaworMjMwOTYgZDhkZDc1ZTNiMzA0NjVmYjFlNTczYjY5MDhiZGZmYThiMDU1ZmU2YyBsZWdhY3ktdHJ1bmsKKzIzMDk3IDIwOTI0YTcwZmExYmJjNjQ3M2E4MmE3NzI0Njc2MGJkOGE2NDg0OTYgbGVnYWN5LXRydW5rCisyMzA5OCA2ZmY3ZWU4NGQ1YTE1ODM1ZDljNjE0YmM3ZTBhOTdkYjE4NmIzZjZjIGxlZ2FjeS10cnVuaworMjMwOTkgOWU0ZDFhNjMwN2Y2Mzg1NTUyNWIzMGI3MDllMzBmOGYwYzNlM2Q3NCBsZWdhY3ktdHJ1bmsKKzIzMTAwIDdhOTgwYzk4YzhhZWZmZDNmMjJlM2M5MDE3Yzg0MmM3YjQwZmQ5NzUgbGVnYWN5LXRydW5rCisyMzEwMSA2NjJlMjJmOTk2MzlmNTA3NGUyYzg0ZTg0NGNlMjljYWZhODBkMzEyIGxlZ2FjeS10cnVuaworMjMxMDIgYzVjMjQxYmVmODhkM2IwNjZmNGI4ZmExZmEwOTdjMmMyZDA4OTViNCBsZWdhY3ktdHJ1bmsKKzIzMTAzIDhhZjc0ZjAzNThhYzM5YTliY2QwOTViMDFiNGE2MmU0Mjk0NmU1MjcgbGVnYWN5LXRydW5rCisyMzEwNCBiZjAyMDJkYWM0NDE3MTYwYmViNzU1MWZlN2VmZDI0OWRmMjRiNmM4IGxlZ2FjeS10cnVuaworMjMxMDUgMmI1ODFmNGM2OWI0ZjIwOTRlM2YxMGUyMzhmMzE3MjRlMjNiZjkwMCBsZWdhY3ktdHJ1bmsKKzIzMTA2IGYzZjY5NDExMWVhMDgxNjBiNDdhMzYxMjRkOTFlOGIwOGQ5MzlkMzAgbGVnYWN5LXRydW5rCisyMzEwNyA1ZTc5YmVkMzQyNmY5M2RmMzM2ZmQ2YTc3ZWUwZDE5YTkwNzkxYTkwIGxlZ2FjeS10cnVuaworMjMxMDggOTgzMDMyM2Y1ZjhlYjJlNThiYTZlYTVhNjc4YmQ2MzM5MzI3MzNhMCBsZWdhY3ktdHJ1bmsKKzIzMTA5IDQzZWQ4YTM0NWY0ZDgzMzkxZDM4NWU1Y2Q3ZjI4ZjM3MDRjOWM3MGMgbGVnYWN5LXRydW5rCisyMzExMCA1NTY4YjMyMDkxNGY2ZGI5NTc0MjMwN2Y4MzcyMTMzYmU0MTBlM2U3IGxlZ2FjeS10cnVuaworMjMxMTEgNDE0MTNjNzgzODM2NzkzNzM5NjIwZTZkOGZhZWFkMzQyYmEwZTc3OSBsZWdhY3ktdHJ1bmsKKzIzMTEyIDlhNWJiZjg0NWM2MzNlYzdhMWU2NWM1OGNlZjE2MWExMGM0NDc4Y2QgbGVnYWN5LXRydW5rCisyMzExMyA4NzNiZThlMzQ2MmJlZTY3YmFiNTNjN2Y4YmY4MjllYzE1OGNhNTZlIGxlZ2FjeS10cnVuaworMjMxMTQgNTg3MWUwYWEwMjFiODUwY2NkOWVjOWRjY2ExOWIxMjM2MTBhNmU2MCBsZWdhY3ktdHJ1bmsKKzIzMTE1IDJhODA5YjNkMDNlOTRiZmY2MDY2ZDNkMmE2ZWU3YzljYmExMzk4MzkgbGVnYWN5LXRydW5rCisyMzExNiBkOTk3MGQ2MzE4NzgwYjk4OGY1MzU0ZTM5MGFhZjkwZDIwNzBjN2U4IGxlZ2FjeS10cnVuaworMjMxMTcgMzZjYTE2ZGMzNWI5ZDk5OWRmMDRhY2VhMzAxNTc4MGI1MzE2MjQwZiBsZWdhY3ktdHJ1bmsKKzIzMTE4IDY3NjI5OGMwYzc2Mjk2MzQ4ODc4YzBmZTA3MmZkNGNkMTUwOGMxM2MgbGVnYWN5LXRydW5rCisyMzExOSAzMDQ2NTJmZmM2YWM2MDM1NGY5ZGM3M2ExMzNlNDgwODA0MWM1ODE1IGxlZ2FjeS10cnVuaworMjMxMjAgZjJhMzAwOWI1MjhlOTNlNWMwNjNjYTU0NmUyZTc1YTNiYjg4ZGU2MiBsZWdhY3ktdHJ1bmsKKzIzMTIxIGEzNDk5MWI5MTAwODYxOWNiYzdlMDVmMDViYjhlZjBiYmY4MjA0YzAgbGVnYWN5LXRydW5rCisyMzEyMiA1NzgwNzI0NDcwZWViNGU3YTBiZDc3ZTFlMDNmNmJiMDFlNDIxZTZkIGxlZ2FjeS10cnVuaworMjMxMjMgYWY5ODI4MmU5Mjc3YjdjZGNhODYxOWI3NjljYjllNmY0YTQ4OTRiNiBsZWdhY3ktdHJ1bmsKKzIzMTI0IGRmNDkzNjQ2ZWM0ZGNkOWU4NmIxMzNlMjNhOTg2YTBmNzA4NjViNTMgbGVnYWN5LXRydW5rCisyMzEyNSBlOTFiOTkxMzg5ODVhZTk1MTU4ZmI4YTQxMzFlZmY4NDBlYjY5NjU4IGxlZ2FjeS10cnVuaworMjMxMjYgMTgwODZjOTEzZWQ1YzUxMzFiMjRhZTA5MzI2ZWZjOTRiZDhlNDhlYiBsZWdhY3ktdHJ1bmsKKzIzMTI3IDUxMzYzMzQ4ZGNmYWI3YjAyZjdkMGY0NGJiNzM1NTUwZDg1NjBiZmUgbGVnYWN5LXRydW5rCisyMzEyOCBhMTllZWE0MTY2OGZjZmZhMDBlZjEyYmI0MDgwNWNiN2JiMTkxMTNjIGxlZ2FjeS10cnVuaworMjMxMjkgZWQzZTUyOWZiZTQ3OTFjOGFiZTlkNDJmODA2NTZiODg1MzgzYzQ1NCBsZWdhY3ktdHJ1bmsKKzIzMTMwIDcwYmRmODQ4NjJhZDFjYjMzNDNmOGY1M2E0NDRlYjg2N2JmY2Y2MmYgbGVnYWN5LXRydW5rCisyMzEzMSBiODdjMDU4NjI4MTU1OTY3MmVjNGRiODk3ZWE4NTVmMjY0OGFlMDhkIGxlZ2FjeS10cnVuaworMjMxMzIgNjJkMzFlYzQzZGY2NjM0OTdkNDJjOGQ3M2IxZjFmMWUyNmIwOTQ5ZiBsZWdhY3ktdHJ1bmsKKzIzMTMzIGNjMTQ2ZWU1Mjg5NzViNTI3M2FjZDg2YzFmNTdmMDg1NWQ1YWMwNGIgbGVnYWN5LXRydW5rCisyMzEzNCBiYzUwNTgxYjNkN2NkZTI3OGZkY2MwNTBjYmJiYmFmYTFlZjZmMzk2IGxlZ2FjeS10cnVuaworMjMxMzUgZDFjZDRjZDcyMjcxZTA3YTc1N2ZmOTAwNGQ0ODAwZGY0YTNlYmQyYSBsZWdhY3ktdHJ1bmsKKzIzMTM2IDE2ZTRkMDk2Zjc4N2QxYTk1MjQ4OTJiYjkxZjE0N2EzNGRjYzU0MWEgbGVnYWN5LXRydW5rCisyMzEzNyA5NmY1M2Y4ODMxZWVlNGQyOTA5ZjY4ZjhiODY3MjM1YmM2YTVhOTZlIGxlZ2FjeS10cnVuaworMjMxMzggYzhmZWNlMzdmMDIwYjBlOTYyNjIzZjI4OTAxZGU5YzM2MTlmOTQxMyBsZWdhY3ktdHJ1bmsKKzIzMTM5IGRmNjZiNGRkMGIwZGJiNDQ4OGJhY2Y2YTNmNmJhNzdhMGQ3ZjZjODUgbGVnYWN5LXRydW5rCisyMzE0MCA3MmU2ZWI2NTMzMTIwN2I4MTZlM2ViYTViMDgyYjQ0OTE0NDJhZjUyIGxlZ2FjeS10cnVuaworMjMxNDEgM2IwZGExM2FjZTQ4NTcyMmVkMmU0Njg5MTUwYTAyMmM2YWQ0N2UyMSBsZWdhY3ktdHJ1bmsKKzIzMTQyIGIyOGZjOGMzNmUzZGU3OGY3ZTE1MTE5M2M4OTA0NDRiM2JlZDFjMzUgbGVnYWN5LXRydW5rCisyMzE0MyAyZGE2NmNlN2VlMjI5NTE3NDcyMDkzNDEzMTJjOTY0ZTE1ZDliYmM0IGxlZ2FjeS10cnVuaworMjMxNDQgNzMzMzE0ZmNmZGFhMGE5NWVmNmJiNzhkN2ZlZWQyNDgyYzJlZmY3OSBsZWdhY3ktdHJ1bmsKKzIzMTQ1IDMxZmU4YjNlMjc2YmFhZGU0NTAxZjc1ZDU4ZjA3Yjg0Y2Q4MTBhYTQgbGVnYWN5LXRydW5rCisyMzE0NiBjMzNhODU1YzEyNzQ1ZjgyYTljOGQ1MmRjZjhkOWJmMjcyZGUyODAwIGxlZ2FjeS10cnVuaworMjMxNDcgZTkxM2Q3NTcxM2U2NDMyNTE3MzlhZDYyMWI4NjY0NTVhMGZlYTBjYiBsZWdhY3ktdHJ1bmsKKzIzMTQ4IDNhZjAwNjUwMzY3OGE3YzRlYTYyNTVhYjA1ZjVlZTIzNDU2OTBmMDkgbGVnYWN5LXRydW5rCisyMzE0OSA1MWNjODI2MDVkMzJkYjdiMTQyZjU1MzY2ZTkxZGU2YjFkYTQxZmVmIGxlZ2FjeS10cnVuaworMjMxNTAgMWM0MWZiZDA5ZDkzYTY4NjExYzIwZWNhN2IwOGQ0NzhjYzAwNjdjMCBsZWdhY3ktdHJ1bmsKKzIzMTUxIDA0OTFlYTYxMWJjNGI3NzNjMWJiOWZjYTViNTBjZmM2MDNmZGE1ZTcgbGVnYWN5LXRydW5rCisyMzE1MiA4NDM3NjM1NmZmODkwZTkwMjc5MjBkZDIyNDZmMGQ2ZGRhNGVhZTBlIGxlZ2FjeS10cnVuaworMjMxNTMgZmM0MGQwYjU0MDQzN2U5ODg3MzQyODM2ZTFjMzM5YTJjZmZkNjRkZCBsZWdhY3ktdHJ1bmsKKzIzMTU0IDFmNjE1MjYzMDdjMDBiNjc4OGExYTY5OGJjODlmNDcwODU2OTY4MTUgbGVnYWN5LXRydW5rCisyMzE1NSBmZjM3NzQ3MmVhYzk0MGIyNWRhMTMxMjQ0NjllMjc0YzY4MjgwZjFkIGxlZ2FjeS10cnVuaworMjMxNTYgMDc4MThjYmNkMzAyNjg4Y2ExMjQxNzU2ZmM5OWVmN2MxOWVlZTZjYSBsZWdhY3ktdHJ1bmsKKzIzMTU3IGRlMzk5NTZiNTQ1ODA0MzY1ZjE2MjRhNTJlNTJkMjdiNDlkMTI4ZDEgbGVnYWN5LXRydW5rCisyMzE1OCBjMDgyOTcxODIzY2U5MTMwODhhMTk4ZGY5YThlYmMxOWQ1Y2Q2OGE0IGxlZ2FjeS10cnVuaworMjMxNTkgNThkNTAwOTRiZjgwODQ3NDAxMWY4Yjc0ZGQzODE5YTg2MzlhYTc5MSBsZWdhY3ktdHJ1bmsKKzIzMTYwIGE3YmEwMGUzYjBkZTJmZDRiZGM3MjlkMzAzNTNlZGJlYzdmMTViYmYgbGVnYWN5LXRydW5rCisyMzE2MSBmMzlhOWJlN2M5YWY3NDY4NWM0MTFlYTU3ODMyOTIzYTBjYTdmYmNkIGxlZ2FjeS10cnVuaworMjMxNjIgZDY4Y2ZkODVlNmRiOWI1ZmJiYzgzMmY2ZDJjNTMxYTBjOTczM2JiMSBsZWdhY3ktdHJ1bmsKKzIzMTYzIGQ1N2E2YzgxMzY1OGNjMDMwMGY1ZjRkMzY5YWVlNzAzZDNjZWQ1YjYgbGVnYWN5LXRydW5rCisyMzE2NCBhMjg4YTU1ZjkyOTE1MWJiYWQ1ZWEyZTZhOGY0NjQzMGU2YTc3ODAzIGxlZ2FjeS10cnVuaworMjMxNjUgNDliN2UzOTgwODUzYmMyZDU1MzQ3YzFiY2Q3ZTZkYTJhYzFiODU0MyBsZWdhY3ktdHJ1bmsKKzIzMTY2IGNiYTQ0OWFiNTkxNTc5Yzk0ZmNkMmQ3YzBiNWZhNzdmNTk2ZDM2ODIgbGVnYWN5LXRydW5rCisyMzE2NyA3MWM4NTNkZWRiMDcyOTFkZWYwYmNlOGM0NjBhZmMyNDY4ODc3MjNjIGxlZ2FjeS10cnVuaworMjMxNjggY2EwZjU0ZGFjZGQ4YzQ1ZmU1ZmJkMGM2MDA4NGVlMGIwNGVlZDkzNyBsZWdhY3ktdHJ1bmsKKzIzMTY5IDIwMjdkYzEyNGVkZGFkYmM5ZTgwNGVjNmNmMGEyZjY0MjZjZjJlOWYgbGVnYWN5LXRydW5rCisyMzE3MCAyMjYzY2I0M2VhYWJiZWEwY2ZkNWViMWNlMzEyNTQ3YmI2ZTIyNjEzIGxlZ2FjeS10cnVuaworMjMxNzEgMWI1NWQ3OWM2OWQ1ZmUwNDlkMzUzYTc1MzAzM2FkYWMxYTZmNDYxYSBsZWdhY3ktdHJ1bmsKKzIzMTcyIDI5NGEzOGExOWI1YTk3ZWU1YWFkZTFiODRjZWRiZjA5NTQ1Yjk2N2EgbGVnYWN5LXRydW5rCisyMzE3MyBkOTZjZGJiNGQyN2JjMWUxNWM3YjVmZGY4YmVmOTY3ZDgzZGJhYTEwIGxlZ2FjeS10cnVuaworMjMxNzQgOGU0ZDM1YmM2NzNmZmFkOWRiM2MyYjk3NGI4NzgzZDllMWUxZGZiZiBsZWdhY3ktdHJ1bmsKKzIzMTc1IDYzOTMwMTU5Y2EzYzcyYThiOGY0NDNmMzQzOTczZmFhOGMyMjAwNTcgbGVnYWN5LXRydW5rCisyMzE3NiAxNmY2NGQ3ZGE4ZTMyMWMyMWRhMDc1NmZiZDdkMTA2NWUzMjk0NTBkIGxlZ2FjeS10cnVuaworMjMxNzcgOTdjZjZkY2QwYWVkMjdhNmJkZmJlYTJhZWZlYTE4ODQ2M2JkNDNjNyBsZWdhY3ktdHJ1bmsKKzIzMTc4IGNiMzVkMGY3MDRkZTBiNzBiMDZiMWJiZmUxMDEyYjAzY2M2MWNlMjYgbGVnYWN5LXRydW5rCisyMzE3OSAwMWY2NmY1ZGIzMjYxODUzMTgyZGM0Zjk4ZTk4MmU3MjQ2YmJkODI4IGxlZ2FjeS10cnVuaworMjMxODAgZGY0MDk4NDRiNjU5NzkzZjM2OWZhYWRiODVhY2E5NjhlNjkzZGQ0MSBsZWdhY3ktdHJ1bmsKKzIzMTgxIGNlNDE0YTZkMzBiNDZlODM2ZWNlNjYxZDI5NzMwMGI0ODBmNDc0NzIgbGVnYWN5LXRydW5rCisyMzE4MiAyODk0NDU4ODc3YzgyOTkzNzEyOTA5MWEyYjU0NjMwNzdjYmM1M2RhIGxlZ2FjeS10cnVuaworMjMxODMgNjA0NmU5NTQ2YTcwMmI2MTUzMjM2MWE5MWM2ZmNjOTc0YzA0OTZkNSBsZWdhY3ktdHJ1bmsKKzIzMTg0IDliYzc2ZTM2YmE1N2VjOGY1YTNmYmNjMzE0OGRmZTNiODUyMmYxYjEgbGVnYWN5LXRydW5rCisyMzE4NSAzNmMwN2ExNzE4ZTk4OTI5OGU2MGQ4ZjBmNDU3ZThhYWI1N2UzNzliIGxlZ2FjeS10cnVuaworMjMxODYgYzMyN2E4YWM5ZjJiNWZkMTAwZjA1ZmE0MjYwYWU3ZDgyODVkYWJlZCBsZWdhY3ktdHJ1bmsKKzIzMTg3IDYyMWVkMTM0NDVkZTU1Zjc5YTdhMTAxNzk2YjlkMjNhNTllYWRhZDAgbGVnYWN5LXRydW5rCisyMzE4OCBiNmNmMmYyN2U0NGZhYTUzZGFlZDI1MzM5ZDI0MzA3ZDdiZDQ3OTA1IGxlZ2FjeS10cnVuaworMjMxODkgZjJmMjVhNzM4ZjdmMDkzYjQ0YzUyOTJkNTc2OTY2ZGNlOGJjYzk3MSBsZWdhY3ktdHJ1bmsKKzIzMTkwIDYxOWEyZDZiNWVhOTIxOWQxNzY0MTUyZTNjNTZhMWU5OWY2MDUyOGYgbGVnYWN5LXRydW5rCisyMzE5MSA2OTQ0ZjViOWRlMDNkYjllODYwYThiOTFjOGQ0N2RhOTEzZDdkZGVmIGxlZ2FjeS10cnVuaworMjMxOTIgODk2ZjJkMWUyZjQ2ZDc2YzE3MzQzMzM0MTlkOTk0M2E5Y2ZmMjQxYyBsZWdhY3ktdHJ1bmsKKzIzMTkzIGZkN2E3ZjgzMjI1OGQ3YTk3MjM4YTljMzM4MmQ0ZTE2YmM1ZDA4OWMgbGVnYWN5LXRydW5rCisyMzE5NCBhYWNhNGQzY2Y2MmI2NzViZTA3MGM2NzdhMjMwZjg0MTQzODNmOGRlIGxlZ2FjeS10cnVuaworMjMxOTUgM2JmNjIyYmMyNzkyMTgxOTNkZjE4ODE3MTU1NDU2OTNhMDIwZTU2MCBsZWdhY3ktdHJ1bmsKKzIzMTk2IDBkNTM1Yzg2YmU1ZjUyZjBhODQxMWM4ZGMxYTlhMTkyMmZhNGVjYzMgbGVnYWN5LXRydW5rCisyMzE5NyA4NTIyYjAyMmY4MGEyOTM1ZjY2MDJhYzBlODQ2M2JjNTUyZWRiOWVkIGxlZ2FjeS10cnVuaworMjMxOTggNjc3M2RjZmUzNGEzNjkxZjU4MGYxOWUyNjI1MjJjNGVmYzFiNmE1MiBsZWdhY3ktdHJ1bmsKKzIzMTk5IGQ5NDBhZjUyNTg0MDhlZDQ4ZDBiZDlmYzI0M2EzMzAzYzlhZjczYTEgbGVnYWN5LXRydW5rCisyMzIwMCBiZTRiYWFmYTRjNTI4ZDA2MjM1NjRlM2VhNzU0NTkwZTFmZjliNmU3IGxlZ2FjeS10cnVuaworMjMyMDEgNDE3OTliNzBhOTZjMWUzY2MxMTllYTkzM2M2MmY5YTUwOGQ5MWI1OSBsZWdhY3ktdHJ1bmsKKzIzMjAyIDNmMTkyMjk5MDkwMzQ5MjQwY2EzMmRhMDljY2ZhYzQ1ODdjMTU3MDAgbGVnYWN5LXRydW5rCisyMzIwMyBlYWYxMjAzYjg1Y2ZkMDg0ZTAyN2JiNGU0YTlhN2Y4YjkzZTZmNGE0IGxlZ2FjeS10cnVuaworMjMyMDQgMDRjZTJhNDhjMGE4MzFhODRiMWEyMmI1NjA5OWU4NGIwNmFkMWI4NiBsZWdhY3ktdHJ1bmsKKzIzMjA1IDc2MTMzYTQ2NWUwMzk2ZjQ4Y2RmM2NjOTVkMmM1NDYyNjc1ZmIyNWMgbGVnYWN5LXRydW5rCisyMzIwNiA3ODk0NmE3ODQzNTEyMDJkMDUyZDJmYWIzOWJmNGZjYThkNTJjNjMyIGxlZ2FjeS10cnVuaworMjMyMDcgOTZjNGEzZjA4ZGNlMjRkYmRmNWY3MDUxZTE5OTAwY2JmZWU5OGJmMSBsZWdhY3ktdHJ1bmsKKzIzMjA4IDBmOWRmNTYzYjY1ZGU0ZTE0ODIyMzFhM2U0ZDQ4NGJiMTdlMjE2MWUgbGVnYWN5LXRydW5rCisyMzIwOSA4NGFmMWRkMDExZWUzM2Y3YWNkZjlkZTY2NjVlZGQwODcyYjc3OTE3IGxlZ2FjeS10cnVuaworMjMyMTAgZjM2YTJkNDBhMWRmNjhhZjM0MjIzMzE3MTEwNDZhN2M4NGZmMjMzMiBsZWdhY3ktdHJ1bmsKKzIzMjExIDMzNjY5Yzg5MTRiNGFlMTIzYzNjOTU4NDI3YTkwZDljYmY1NDE0NTEgbGVnYWN5LXRydW5rCisyMzIxMiA5MDk4YTMwOGE1N2IwNzhjYTAyNjc0M2E1NzBiNzI5OWI4YTViYzA4IGxlZ2FjeS10cnVuaworMjMyMTMgNjA4MWQ3MzYxNjdiMGU2OTNmMDViMzc5ZWZjMDc1ZjZkMDE1NTExYiBsZWdhY3ktdHJ1bmsKKzIzMjE0IDAzZjNhYjBjNzI4NmRjYTFhZWJkMTM2YWRhN2I2NGQxN2Q0MjhiNjUgbGVnYWN5LXRydW5rCisyMzIxNSBjYWUzZmYzMWJkOTEyYzE0MzdkYWI0NmM4MjEzYThjM2I1OWY4M2ZjIGxlZ2FjeS10cnVuaworMjMyMTYgMDgzNzRhODUyNmUyMTAzZmQ2YzBiNmNkNDIwYjIwZDIxZGMwN2EyZSBsZWdhY3ktdHJ1bmsKKzIzMjE3IGNjNTJiMDVhYzk3OTU0NDJhNzQ3N2RmODFjZGY4MTFjMzVhOGMxN2UgbGVnYWN5LXRydW5rCisyMzIxOCA5NjllMzA2YjYyZmRlOWJkYTY3ODQ4NjM3MGI5M2M3NTE4MjBhZmY0IGxlZ2FjeS10cnVuaworMjMyMTkgNDNlNWZkNTRmOGM5OGQ5YTdkZjVmMjllNWQ2ZDkzZGQ4Y2Y4NjhlZSBsZWdhY3ktdHJ1bmsKKzIzMjIwIDgxNzc0NWU1YWRmYjM3NmQxNjU3MThjZDRiOGMyNDFkZTE5ODg2ZTEgbGVnYWN5LXRydW5rCisyMzIyMSA0ODY4OTM0NmU4YmJkNjY3MDJiNGIxNzRjNmUxNGMzNWE1MmUzMDIxIGxlZ2FjeS10cnVuaworMjMyMjIgMGI1MWU2MDdmMzMzN2Y5NDU3MDI0NGQ5NjlhZDU1NWY4M2YxNDMxNCBsZWdhY3ktdHJ1bmsKKzIzMjIzIGU5MTI4ZWE0NWNkYTgyM2U3NzhlNTkwMjA1MTYwOTQwNWU0ZjFjZDcgbGVnYWN5LXRydW5rCisyMzIyNCBiMTQwOGEyOGQ4YmUyYjZmMTY3ODllMzFjNTE5NDJiNDVjZjM2YjUyIGxlZ2FjeS10cnVuaworMjMyMjUgZjc2MWNhYjI4YzFjMTBmNDk1ZTlkMTMyNmZmYWI5YjNiZjhlZmE3MCBsZWdhY3ktdHJ1bmsKKzIzMjI2IGQ0Yzk2NTMxNjYxMDRmNjlkZmU0YjM3MWMxNDE4MmNhNDIwMGVhODYgbGVnYWN5LXRydW5rCisyMzIyNyAyMGFkZmVjNjE0NjdkNWJjNGRjMmEyM2Y3MjM3ODVhYTAyMWExYzI3IGxlZ2FjeS10cnVuaworMjMyMjggMDVmNmIwOTg5OTUzMmE2NjE3YjU2Y2MyOWI5ZGQwZDJhZWI5Yjk4YyBsZWdhY3ktdHJ1bmsKKzIzMjI5IDhlZGM0NGJkMGFjN2YxNDNhMzkwN2U1M2Y4NThkMDAyYjY2M2M4YjQgbGVnYWN5LXRydW5rCisyMzIzMCA0ZTQ0NWEzZTA3YzZiNTM1OGI5ZmUxZmY4ZWJmNDJmMmIyNDRhMjNmIGxlZ2FjeS10cnVuaworMjMyMzEgZGEwMDE4OGQ1MjcwOWFmNjg5YTM1M2Q5MDlmZWMxMzIyODk1NGU5ZSBsZWdhY3ktdHJ1bmsKKzIzMjMyIDYzMTNmYTM4ZTkwZWFkYTM0ZDY0MDkyMjk3ODBhOTcxZWJhZGZiZmUgbGVnYWN5LXRydW5rCisyMzIzMyBhOTYwZTY3MzA3N2ZjNWIyODM1NWUzMWYxZjU0MmFmNzJhZmJjOGY3IGxlZ2FjeS10cnVuaworMjMyMzQgOGRjZmFmMGU2NTU5YmI2ZGNiNDFiYTY5NGNiODJiMmFiZWM2MDg5NCBsZWdhY3ktdHJ1bmsKKzIzMjM1IDlhYjZhZjY4MTVhZmNiNmRhMDYwNWNmZWJjOGM4YjA5MmQ5ZTEzOGQgbGVnYWN5LXRydW5rCisyMzIzNiAwZmQ5NTIwMGFiNmVjNGQ3YTA0OTE2MmY1MzI5NDQyZjFkMDVkMjgyIGxlZ2FjeS10cnVuaworMjMyMzcgYmY0YjFiMDhhMmM2ZjIyOWE5OGZkY2I4MzcyZDI4M2JjYjk5ODdkYyBsZWdhY3ktdHJ1bmsKKzIzMjM4IGQ1NjQ2YzBjNTEzMGNjMmY5MmRlMDcxYWMxMzhiOGJlODc4MzY5YWMgbGVnYWN5LXRydW5rCisyMzIzOSA5ODgxMmQyMjEwNzUxODA2Y2U3MmY2MzYyODMxMjEwNGJiZTE0YWIxIGxlZ2FjeS10cnVuaworMjMyNDAgNzEyYWZkYWUxMTIzOTRjMGE5ODlmMGYxNGE1Y2M5NThjOTA4ZDI3OCBsZWdhY3ktdHJ1bmsKKzIzMjQxIGY0MmY4OWI1YjhmOWJiNDZhMmM0NWIxNTBmM2ZhMzkyYjRjMmI4YmUgbGVnYWN5LXRydW5rCisyMzI0MiBkYjE2ZTI2YTA3MWI4MzQzYzM5YjkwNGM5ZTkxYzBlMjYxOTFhMjQ0IGxlZ2FjeS10cnVuaworMjMyNDMgZmNiODc3MDY5ZmFhNzExNzMyYzA5YmYyMDgzODBlMjc4NGYyZjU4MiBsZWdhY3ktdHJ1bmsKKzIzMjQ0IGNlYzllMjVhZjEyMWIxNjU3MWY4MTA3YjEyMjNkNzIyY2IxYzFkZTYgbGVnYWN5LXRydW5rCisyMzI0NSBmZmExYTg3YWM0M2E4ODZlZjI1NDgyMjAyMzU4NmE5NWI4ZDAxMTFmIGxlZ2FjeS10cnVuaworMjMyNDYgODcxMzRjN2YyYmM3N2I4MzY0NTRiNmQ2YTk3MzkxNzkyMTM1NzFlZCBsZWdhY3ktdHJ1bmsKKzIzMjQ3IDlkN2NhNTkxNGQxY2ViNTYzYjUwYjgzZGVmNzg0NzhlNTI2NWE4MTMgbGVnYWN5LXRydW5rCisyMzI0OCAyOGVmMjJhMjU5OGU1YWEzMWIxN2ViZTVhMmU0N2JkMGI2ZTZiZGYzIGxlZ2FjeS10cnVuaworMjMyNDkgYWI2YzE0ODIyZGUxYmY2NWVjMTBkYzBlNzY2YmVjN2ZhMTYxMjg3MSBsZWdhY3ktdHJ1bmsKKzIzMjUwIGIwN2NiNTFkNzMxYzg3MTE1YTE2MjE1NzBmM2M5ZjgxY2NjNjgyZmQgbGVnYWN5LXRydW5rCisyMzI1MSA2NDZlMjQ3Mjg4NTIzYjhlYzkwYTBhNzRlMjlmMjI3YzJiMWRmMDRhIGxlZ2FjeS10cnVuaworMjMyNTIgOTQxYzI4Njg2MDM5Njg0ZjAyMThjNzkwNDdiNGZiMDNhODZiYTNjOSBsZWdhY3ktdHJ1bmsKKzIzMjUzIDhhMGM5NzQ1M2RmNDgzNWQyZmJjZmJhMzI0ZDkyMjgyNjk3ZTExYTEgbGVnYWN5LXRydW5rCisyMzI1NCAxZjRlMjYyN2I2MjcwMTFkNDNiMTAyNDNmY2ExZjY3MDZkNDQ1ODU5IGxlZ2FjeS10cnVuaworMjMyNTUgMzRhZjE5ZGNlZjU5M2YxY2FkMGU2N2U5OTMzZTkzNGY4MTMyNTZjMiBsZWdhY3ktdHJ1bmsKKzIzMjU2IDdmZmUyNzZhNjg1NGM4MzIyN2QyNGQ1ODAzYmYxZDFiZjYyYTYzMDIgbGVnYWN5LXRydW5rCisyMzI1NyBiMGFmYjY5MTM0MDFhYTc0YWViYzk2MmFjYmE1ZjA4NzViZjFjNTY2IGxlZ2FjeS10cnVuaworMjMyNTggYzdjYWY3OWY1MTQzM2Q4NmJjNGI5NTE4YmVkMGZmZDQ0ZTY0YWYyZCBsZWdhY3ktdHJ1bmsKKzIzMjU5IDM4MTVjOGFkMDJkMDMzNDA5MWUyMDdhODZkMDk5ZDZiYmZhMjcxMjEgbGVnYWN5LXRydW5rCisyMzI2MCA5YzhiMTk2MTUwMzQxMzQzNTYwNGZhYzJlNDY3NmU3ZmM4NGRmZTg0IGxlZ2FjeS10cnVuaworMjMyNjEgMmE3YjRkNDQ2MGQzZWJlODZiMmQ5M2VkMWY5Nzc4MDBhM2Y1NGY2ZSBsZWdhY3ktdHJ1bmsKKzIzMjYyIDU2ZmZlZTFlZWVlYzRmOTkwZGExMmZlYTRiZjEzOWI3YjkwNzIwZmEgbGVnYWN5LXRydW5rCisyMzI2MyBlZDE4ZDQ0MzlmMDg0ZjI5ZWQ5NjJhOGI5MDIxYTY5ZDU5ODU4ZDdmIGxlZ2FjeS10cnVuaworMjMyNjQgMGZlMzE4YTc4OTkwNDE0OWZjMDI4NTVhMmM5MjM3ODRiNjNhZDk4MCBsZWdhY3ktdHJ1bmsKKzIzMjY1IGQwM2MxOWRiMzA5NDc3YmViNDRlOTNlNWQ3Mjc1ZGVkMGNlMjBhYWQgbGVnYWN5LXRydW5rCisyMzI2NiA3NWI3ZThiZGIyMWVmNjA1NDVjOTZlYTgxYzAzMWY5ZjYxOTkzNWUxIGxlZ2FjeS10cnVuaworMjMyNjcgM2ZhYWJmNTRiOGI4M2QxMjVkZmNlY2Q1YmE5NzUyNDA2YzA0YmYzMyBsZWdhY3ktdHJ1bmsKKzIzMjY4IGUzMTg0ZTQ2MzAzYjU0OTgyOWRlNjgwYTU1NjIxZGM4MDhkMDNkYjUgbGVnYWN5LXRydW5rCisyMzI2OSBmMDIwZGE3ODFiOTE1Y2M2YWJhM2RhNjczMDQyY2JmNmIzZjFjMDViIGxlZ2FjeS10cnVuaworMjMyNzAgY2E3YWYyYTVkOTE1YjljNjRmM2EzMzhlNTk0Mjk0OGYzZmExNTU5MyBsZWdhY3ktdHJ1bmsKKzIzMjcxIDcxODk1ZGQyNjhlMmQwNjM4NDc4NjE1ZmI3OTZiYjYwYzg5N2RmZjEgbGVnYWN5LXRydW5rCisyMzI3MiAwODQ0NmE5ODZhNTYyZDJhYTkwZWYzNTllMTk3NTBkNTdhNGFhNGYwIGxlZ2FjeS10cnVuaworMjMyNzMgOGFhMWFkYTMzZjY0ZTIwMjdiYzRjOTkzMGYyNjRjZmFmMWQ1NmZiMSBsZWdhY3ktdHJ1bmsKKzIzMjc0IDBmZDEyZjkyY2U4ZjBjNjBjNjU3MmNlZjAyMDc0NThjMDc3NmMyNDMgbGVnYWN5LXRydW5rCisyMzI3NSBiNzBjMDg4MTNiYTk3YzI0YWEwNzMwYTNkMGU2OTY0YTE1MTMyMTEyIGxlZ2FjeS10cnVuaworMjMyNzYgNDBjYzY2MjFlZGRjYTA3MjFiZDE5OWU3ZTc5ZGUyZjRmY2E4NGJlNSBsZWdhY3ktdHJ1bmsKKzIzMjc3IDEwOWRlZjRhNWY2ZTk4NTJhNjIyMWIyM2Q1YTk2NThlYzc2YmM3OWEgbGVnYWN5LXRydW5rCisyMzI3OCA3MjlmZGYwNDU0OTQxZTk2MGI5MjNkOWI3ZWFmYjgwNThmMTk1NWMzIGxlZ2FjeS10cnVuaworMjMyNzkgNGY3NDcxNDJlODRjODM5OTI2MGEzMzljZDg1MzkwMThjMDMzYzc4NCBsZWdhY3ktdHJ1bmsKKzIzMjgwIGI3ZWM5ODVkODVjNjE5NmUyMjBiNTIwNDNmZmU2Y2QxMzFmYWY5M2EgbGVnYWN5LXRydW5rCisyMzI4MSA3YzVjZDY4NWMxZGUwMmQ5NzVmMzllMGNlNzRhY2Q3YTFhZWIyNGY3IGxlZ2FjeS10cnVuaworMjMyODIgZTYzZjk3NTYyYTYyOTE0MTZmZWJiNGQ0YzA4YWMwMGFkZTk3NzRlOCBsZWdhY3ktdHJ1bmsKKzIzMjgzIGRmMWI4M2ZkMGViYmRiYjdhZGFmN2QwOWNlMmU2YmY5YTBiZDgzYTkgbGVnYWN5LXRydW5rCisyMzI4NCA0YmJiNGQ5YjRkNzc2NDFkMGQ1OWE5MmNjY2EyOGFmZmNlN2YxZWVhIGxlZ2FjeS10cnVuaworMjMyODUgNjM3OGNiMTE3YjczYmIzMmFlOWQ1MGQ5YzQ1MDRkMjkyYmE1MDVmMSBsZWdhY3ktdHJ1bmsKKzIzMjg2IGU1YTNmOWQ3NzY2YjdkMGY0Yjk0MDFlYzZjNzg4YWY1YzNiYWRlMmUgbGVnYWN5LXRydW5rCisyMzI4NyA1YzlhOTU1ZWYxN2NkYTExNzMwMTJjZGU2MjllMTcxYTNmMTRhOTJiIGxlZ2FjeS10cnVuaworMjMyODggMTA0YjVjOWI4OGVhZTk3ZGRiOGM1OTE2MjM5NGUyMTY5OThlOGM1ZiBsZWdhY3ktdHJ1bmsKKzIzMjg5IDA2MmFjOWFhZmU0N2I4MzBiMzQ5YTRiY2M1ODE5Nzg4MmFiN2EyYTIgbGVnYWN5LXRydW5rCisyMzI5MCAwOTk2ZjA3ZDA0YTNhY2YwZDYwYzE0ZTA1ZmI3ODQxYjExOGI4MGVlIGxlZ2FjeS10cnVuaworMjMyOTEgYWI2MmQxNDdiYTkwZjM1OTc1Mzg4OGQzNTc1M2YyZTE2ZjJjMzJkZiBsZWdhY3ktdHJ1bmsKKzIzMjkyIGU1MjFmYzM3MGJlMjA1MGY0NTNhNmExZTk4MGJkNDQ3MGUwMGRmNGEgbGVnYWN5LXRydW5rCisyMzI5MyA4YTZmMmVlNmVhYmEzMWE0Y2E0NjhhZDdmNGEyYTFhNzJhYjRlOWEzIGxlZ2FjeS10cnVuaworMjMyOTQgM2E0YTAwMzllZGYzMmJmNjkyNThkOWQwZjk5ZGQ1MjlkMmVkNzI2NyBsZWdhY3ktdHJ1bmsKKzIzMjk1IDU5ODgyZTdhYWI4OWM5MTI0NDBkZDdiMTUwOWQzNzJjNzRhZWQxM2IgbGVnYWN5LXRydW5rCisyMzI5NiBjZDcyYjY0YWVjOTc4OWNlZGZlN2YwNzI5ZWU0MTI0NGYxZmVkMmQyIGxlZ2FjeS10cnVuaworMjMyOTcgZTA4ZjQyM2Y5MTY1YzA1Y2VlZDM0MDMxNjkxYTRkMWJjNjU2OWRhYSBsZWdhY3ktdHJ1bmsKKzIzMjk4IDY2YmIxMGVlNDk2MTJiOTE2MGRiN2Q5YWFiMjVhZTU3Mjg1ZWFmNjQgbGVnYWN5LXRydW5rCisyMzI5OSAxOTI5ZmM2OTZhMDQ4NDFjM2Q2MWRlZjk5ZjkwNzVkYjZhZmVjNWVkIGxlZ2FjeS10cnVuaworMjMzMDAgN2I4YzExNzM5NzE0ZDI3MDA2NDZmNjNjYjJiN2MwMWFlZWYwMzMxMSBsZWdhY3ktdHJ1bmsKKzIzMzAxIDliODE4YWYwZDczMGU5YmMwYTU3NjhiYmU4Y2FjNWMyNGVhODY2NjQgbGVnYWN5LXRydW5rCisyMzMwMiA0YzVjZDNkMWNmNGI1YmMzYzgxZDI3Y2JlOWE4ZmU4NTc1N2VhZDMyIGxlZ2FjeS10cnVuaworMjMzMDMgNjMxMDgzN2NhNTM0MzkxNzdhYTQ2N2ZmOTA0YmVhYjQ3YzkzM2EzYiBsZWdhY3ktdHJ1bmsKKzIzMzA0IDFhNThjNzQ2NjJlOTNkNjRkODY2OWU2N2UzYjI2MzJiMzUyZGU4MDQgbGVnYWN5LXRydW5rCisyMzMwNSA2ZTkzYTE1ODY4MDBhNzlhNWVmNmIwZmQ0YjdiOThiOGFiOTAwMGIzIGxlZ2FjeS10cnVuaworMjMzMDYgNDk2NmNmNzkzYjQ0YzA2MjM5NmY5Y2IyMzFjZjljNjI3OGU2MjVjZCBsZWdhY3ktdHJ1bmsKKzIzMzA3IDBlZTg5MDNkM2ZlZDAxNzEyN2NkMTQyYjg2MjBhMWY4NGJiYWQyZTggbGVnYWN5LXRydW5rCisyMzMwOCBiZmQ0ZTAzYWQyMTJkMjQ5ZGY0OTdmZGY1ZjgxZmUxZWNmNWVhZmQzIGxlZ2FjeS10cnVuaworMjMzMDkgOTIwYzYzY2ZjYTBjZGUzMjgyYWQ1ZmRiZWM1NmRlYzQwYzQ4YzZlMSBsZWdhY3ktdHJ1bmsKKzIzMzEwIDg4YTAzZWE1NzcxNGY4ZjE1NWRmYTdlNjI0MWUyZWEwZTIzMWIwOWYgbGVnYWN5LXRydW5rCisyMzMxMSAzM2VkYzk5ODYxYjkwZDRkM2Y1YTQxMDRhOGYzMWVmYjM3YWM3YjJjIGxlZ2FjeS10cnVuaworMjMzMTIgNWIxYWQ3YWNhYmI1YmM1NGNlZGQ5NDRmODI4NjVlZTc0MmZjZmI1NSBsZWdhY3ktdHJ1bmsKKzIzMzEzIGMyYmYwYjEzMzgwZTMwNGYwZDY2MDk3NjllOTQ2ODNmNTJhNDkzZjMgbGVnYWN5LXRydW5rCisyMzMxNCBkMmQ4MzViMzVkNDc1ZTViNzVkMmY0YTMxMDZkZjBjNGQxYzU1M2VkIGxlZ2FjeS10cnVuaworMjMzMTUgY2NlYzAyYmZlOWEwNThmNjQ0OTY4ZWFkYWM1ODY2YTU2MGJlNjBiMCBsZWdhY3ktdHJ1bmsKKzIzMzE2IDJjYWRkYjgyZmZlYTJmNTNiYjk4YWYzNTQ3NGVhNmQ1ZjUwNWU0OWQgbGVnYWN5LXRydW5rCisyMzMxNyA2MzkwMTM5YWQwODI1ZGNiMWRhZGI3MmVjYmMxMzUyYjY5NGEyZWFjIGxlZ2FjeS10cnVuaworMjMzMTggOWE1OTliMWQ5ZDFjODRhNzc3OGNlZGU1NzMyZDE0YzliYzE4OTJhNCBsZWdhY3ktdHJ1bmsKKzIzMzE5IGVmMzAzNGE2MGEzZWMyZWYyOWRiYjIwZTQzMDNhNDI1ZmJlYWVhMTMgbGVnYWN5LXRydW5rCisyMzMyMCBmODQ2OTFiMTE0MDI3YTlhOTkxOTcyYmQ3M2I5OGQyYjQxNDc3MzFlIGxlZ2FjeS10cnVuaworMjMzMjEgMTRjODNjZjdmMzM4MmUyZmMwZjBiMTk1MGU1NjliNWNjODliZDc1NCBsZWdhY3ktdHJ1bmsKKzIzMzIyIDI5OWY1ZmNiMGJhODBlY2RkNmQwYmE2ZWRjYzY2OTBhYWU2YjMzYzAgbGVnYWN5LXRydW5rCisyMzMyMyA2OWU4MjA2MjRjYmMzMTZhMzllMTg5NWUwZWQwYTNkOWQ5ZGEzODEzIGxlZ2FjeS10cnVuaworMjMzMjQgOTBhNGYyM2FiZGE3ZGNmMDYyZDFlMzVjYTQxMjJlM2NhZTU0YzgwMCBsZWdhY3ktdHJ1bmsKKzIzMzI1IDkzOTc3ZjE3NTUyZDU4ZTgzOTNjZWMwMDM2N2VkOTQwY2MwZjZkNjQgbGVnYWN5LXRydW5rCisyMzMyNiBlMDFkZThiYzU4MTM3NzhhZjhjNTc2YzlmZjJhMzIwYWEwYjdhNjcwIGxlZ2FjeS10cnVuaworMjMzMjcgMzk5ZDc3N2FmMDQ4NTEyNjdkZDA3MDQ0ZTIwYTFiMzlhYjk1ZjBjMSBsZWdhY3ktdHJ1bmsKKzIzMzI4IGQ4YWJmOWNlMzIyNTMyNTY3OWNjMzg0N2FkZWM5Y2NkMjFkMzhlZjkgbGVnYWN5LXRydW5rCisyMzMyOSA1MTE3NzZkNmQ3ZDg2ODVhODZhNDI5NzE1MGJlMzA2YWE5NGEwZmIwIGxlZ2FjeS10cnVuaworMjMzMzAgYWFlNWNmN2U1ODYxNWM0N2NiMTVmYzg1OGQ3MWJkNGEzZDczMjc3MiBsZWdhY3ktdHJ1bmsKKzIzMzMxIGQ5MjUwZDViNzlhNzU5MjZjYjFiNjUyMjZiYzNkYzg2MTBhNTYzMmIgbGVnYWN5LXRydW5rCisyMzMzMiA4ZjE5YjJhOGM2M2M2Nzc5NzBkMjc0OTY3YzBkMjE1MmQ4MmIzNDRjIGxlZ2FjeS10cnVuaworMjMzMzMgMDA0Y2RlZmI3MGQxZjlkYmNmMmQyOTU3ZDI0OWU2Y2YyM2E1N2U0NiBsZWdhY3ktdHJ1bmsKKzIzMzM0IDkyOThmZWU0NDZiNzc0MGFkM2ZjNmNhZjM0ODA5MGVkY2Q0OGYxYTcgbGVnYWN5LXRydW5rCisyMzMzNSBmNDhhNDFjOTcwMjE1Njk0MjI1YTI5NjVhNDliZTFjZWI1Y2NjZDJjIGxlZ2FjeS10cnVuaworMjMzMzYgNDM5N2ZhNTE1MmZhNDE2NjgxYjY1MjZlMWFmYzIzMzU2ZjY1ZjZkMCBsZWdhY3ktdHJ1bmsKKzIzMzM3IDE4ZGYzMmY2Y2VhMTNlM2UyN2ZkZjRkYTE0Y2YwMDIyNmU0ZWE3ZmMgbGVnYWN5LXRydW5rCisyMzMzOCBmZGZjMThkNTU2MTUzMDg5ZDExZTUwOWRiYTM3OGI3M2ZiMWZmYjkyIGxlZ2FjeS10cnVuaworMjMzMzkgNDhlOTNlZjNjNWI3MGI4ZTQ0M2I3ZDBjZTYxNmQwN2IxODUxNTA1NyBsZWdhY3ktdHJ1bmsKKzIzMzQwIDMxOTJhMzJmZDQ4ZjZjNGM5ODliZDE3MGE0MjBjZTVmZTkwMzE4MjAgbGVnYWN5LXRydW5rCisyMzM0MSBkYWQ5NGNhNDdlMjEzOTE0ZTQxMWFkNDUyOTljZmM3ZTdmZjUyNzhmIGxlZ2FjeS10cnVuaworMjMzNDIgYjQxNjFjZTU4NWU2NGNhMWM5ZDIxZWQxYWI5YWE0ZDgyZmVlY2U4NCBsZWdhY3ktdHJ1bmsKKzIzMzQzIDM4NmZiMjZlMDg3NDdlYmY1NWVmMjBiZWI4ZGFmNDJlNWVjYzI3MTggbGVnYWN5LXRydW5rCisyMzM0NCAzNzE5YmE1ZWU4NDQ2YTZkZDIzMWRlYTdlNGVmNTNhYWMwYzE3NDRjIGxlZ2FjeS10cnVuaworMjMzNDUgOTMzYmY2OGUyNjUwM2E4YzJiMzZjMTgyM2MxYzc3ZWMyZDdhN2ZmYSBsZWdhY3ktdHJ1bmsKKzIzMzQ2IDQwZDRkMWNkNmM4NGE0MTYxNjZmNmNlMjk5OGQ0ZTRhM2UzNjQwZmMgbGVnYWN5LXRydW5rCisyMzM0NyBiNTJhNjMwNTIzMDY4NjliMmY1ZjU2OWQ0OTI1YTU1MTYzZjMyOGRmIGxlZ2FjeS10cnVuaworMjMzNDggYjI4YzA3YTFiNDBkZjk5ZTUxMzMyM2MyZTJiZWNmNzc4YTc0YTBmYiBsZWdhY3ktdHJ1bmsKKzIzMzQ5IGQ2NThhMTVhOTBhZDk1OTI4NmE2MjcyZWY4MDVkNjBhZTFjYmYzOTcgbGVnYWN5LXRydW5rCisyMzM1MCAyODljMWE3MDAyODY0Yjk1YzNmNTllY2EzNDYwZjIxNTM0OTZiNzQ5IGxlZ2FjeS10cnVuaworMjMzNTEgMTlhYmMzMzlkM2ZjZjJmMWJhOTJkYTMwMjczOTZjNzcwMTc5ZWMxOSBsZWdhY3ktdHJ1bmsKKzIzMzUyIGEzODFhYjBmOWQyODNiYmFiMjY2Yzg4ODRjYTFhMzM2MTM5NWEyYjkgbGVnYWN5LXRydW5rCisyMzM1MyA1NmJkZDkwYzlmZDZkZDg2NjZmNzQyNzNhOGIwMDI1YmI0MTM5N2MyIGxlZ2FjeS10cnVuaworMjMzNTQgODE5YjZmZjdlNTZhNmI1ZmM2MDE4NDZmYWEyZTUzN2RjN2YzOGE3OCBsZWdhY3ktdHJ1bmsKKzIzMzU1IDJhNjhjNmUxZjljNTRhOWRhYWMyNjdkN2RjOTcxNWQ2NjkxYmY0NzcgbGVnYWN5LXRydW5rCisyMzM1NiBhYjFhZjFjYTAzMGM1YzViYzQwZGE0YjBiYmNmMGI0ZTFmYWI3MzllIGxlZ2FjeS10cnVuaworMjMzNTcgNjAwOWQ4NTlmYjU3M2VjYjBiYWYyYzBkOGZmZjZlMjM5MzY1NGE3NiBsZWdhY3ktdHJ1bmsKKzIzMzU4IGQxOTEwMjIzYjI0N2RmM2QzMDFlMzM4Y2VjMWRjNmU3YTQ4ZmQwYWUgbGVnYWN5LXRydW5rCisyMzM1OSA4YTE2MTRjZWIzNzc3ZWMwYmFlMGM1YTE5NGJkYjdhOWFmNmYyNTYzIGxlZ2FjeS10cnVuaworMjMzNjAgM2RmNGI4Y2RiOGM2ODc5YzBiZWJkMDA3YTgxMzAyODdkZTBhZDIyZSBsZWdhY3ktdHJ1bmsKKzIzMzYxIDhmMjVlYzAxMDE4YjVhODY1ZDY1NzQ5NDVlMjZiNWZkNWY0NjE3YzcgbGVnYWN5LXRydW5rCisyMzM2MiA4MzIxNmNhNjdlYmVhMWIzNDBlZjYzNzc0MjRmY2QwZDM5ZmU1MDNiIGxlZ2FjeS10cnVuaworMjMzNjMgMzM0YmYwYmFlZWI3ZWI5MWEwZTU5NTY0MzFmNmYzZGU4NDNlMWE1OCBsZWdhY3ktdHJ1bmsKKzIzMzY0IGQ3ZDg0ZWFlOTJiYTBhMTI5YjE2NzExMzQ5ODYxNGY3ZTk0YTEzZDUgbGVnYWN5LXRydW5rCisyMzM2NSBiZWZhNzI1OGMyMDBmMzhlODllMTVhM2VlNmY1NWNiMGM4YzY0NDc2IGxlZ2FjeS10cnVuaworMjMzNjYgODBlMzZkYWIyMTExN2E0NDBiMWZkN2E5Mzg0MmYzNTI2OThkMmM3ZSBsZWdhY3ktdHJ1bmsKKzIzMzY3IGU4YTI5ZDIzYzcwYThkM2NiY2ZiMDAzMjNjYWQyZTdkNjBmZWVlNjcgbGVnYWN5LXRydW5rCisyMzM2OCAxMmE3ODdmYjcxZGYzNTI2ZTAxODdlZmRiYzM3ODM5ZDIyMjE1YTU4IGxlZ2FjeS10cnVuaworMjMzNjkgMjMzZjk2MDZiYThlMjRlMDMyMTc0ZjE3ODBiOTNkMTFhNTE4ZDViNiBsZWdhY3ktdHJ1bmsKKzIzMzcwIDhlYzk1Y2U3ODczNTgzNjZhYmJmZWRiYzZiNzZkMmQ0MjQzYWU3MGEgbGVnYWN5LXRydW5rCisyMzM3MSA1NTg3NGQ4ZTBkZmJhOGEwZDZjYTU4YTJmNWM2NjBjMTNiOTFmZDFhIGxlZ2FjeS10cnVuaworMjMzNzIgZTAyNmY1MTdmNjU1YjQ1MDk2MDJkZDAwNzI4Mjg1ZTYyMzQyNzE1OSBsZWdhY3ktdHJ1bmsKKzIzMzczIDhjMzcxNDM1ZjY5M2MwZmJlNmQ4ZmE4NzQ3ZGI5ZWM5NzNlZDBlOTQgbGVnYWN5LXRydW5rCisyMzM3NCBiOWY2MGI4MjUyNjFhMGY5NWQ2MzA4NDA2MzNmZWEyYmI0Y2EwNTNiIGxlZ2FjeS10cnVuaworMjMzNzUgMDE3NmY2MWFmODQ1ZDRjOGNmMmJkMmE1MGY0OTQ3MGRjZGQwNTRjZSBsZWdhY3ktdHJ1bmsKKzIzMzc2IGY4MjJiMzU2YzNkOWRmYTgwYTViNmRiNDk0NmE3NzNmMzNjNWUwMjIgbGVnYWN5LXRydW5rCisyMzM3NyAwOTgxODY2MTNiMDU3ZDgxY2FhMGVmODQzZjUxZDgyODk0ZjYxMGI1IGxlZ2FjeS10cnVuaworMjMzNzggYWVkNjIxMThkNjMyZTg4ZDM1YmJmNmQyNzc2YzQ0Yzc0OTExNGZlMyBsZWdhY3ktdHJ1bmsKKzIzMzc5IDljMmI5Yjc2YTA4ZTNlY2Q5OTY4MjZjZjRmZDhlN2Q1YWQxYzE3MGMgbGVnYWN5LXRydW5rCisyMzM4MCAzYmNkYjUxOWFiZjg4MTEyOTI5ZDIwZjYyNjQ3ODc5YjBmZTRiYmI5IGxlZ2FjeS10cnVuaworMjMzODEgM2ZiMjkzZmExN2M1NDY4NDg5ZmVhY2IzYjYyNzkwYjNhMDM3YmU5OCBsZWdhY3ktdHJ1bmsKKzIzMzgyIDY5NzIwNmU3NDc2MzliMThhYTk0YTc4ZGVlODBiNTA2ODUwNTZiY2EgbGVnYWN5LXRydW5rCisyMzM4MyBmZGZjZmZjMjE1MmM2MGVhYjYyMzdlZWViYWZhNWVlMTNhMTk5OWZiIGxlZ2FjeS10cnVuaworMjMzODQgZTNhMmU2MDc2YmM1MjY1MGEwMmI3YWFkMTgwMmJmNzE2ODczYzVlYiBsZWdhY3ktdHJ1bmsKKzIzMzg1IDczZmJjYzk1ODI5NWYzOTU2OWUzYjUwNTNiMDk1NjEwZmUzZDQxMGYgbGVnYWN5LXRydW5rCisyMzM4NiBhMjc2YWU1ZmU4YzMwMjliMmQyOThlNzkxMTY3MDhmOGY0MTZjZmJiIGxlZ2FjeS10cnVuaworMjMzODcgYmEzNzE0MTkxYTdhMmYzZWViZGEyYjdhMDQxYTRhNGRjMDVjZDU2NyBsZWdhY3ktdHJ1bmsKKzIzMzg4IDQ0MWIyZTE1NTgyNmMxOGVmNzI2OTAzYTQ2ZTZiNGNhNjNhMGFjNzggbGVnYWN5LXRydW5rCisyMzM5MCBjZTI3ZDljMGMzNTgyMzE1NGFlZTlhZDZjYWZiNzE2NzU1ZWFiNzQxIHIyMmE0LWJyYW5jaAorMjMzOTEgYzI3ODJjMzVlNzJkNzQ1YjM1ZmMzZjBjOWJiODliNjc3MzZhODYxYiByMjJhNC1icmFuY2gKKzIzMzkyIDNhYWM5MTZjMTUwNWM3ZGI3NmY4ZGIwNmExNTkwODMxYzNhMWU5ZjcgbGVnYWN5LXRydW5rCisyMzM5MyBhOTdmYmM1YjE4YjZmYzExYzk4MGM0OGQyNzZiYzBiYjgyYTE1YTNlIGxlZ2FjeS10cnVuaworMjMzOTQgZmNjMjE2YzU4Yzg3ZmEyYzYyMDE1YWMzNjI4MDIyMDdjYWQwOTYxNyBsZWdhY3ktdHJ1bmsKKzIzMzk1IDcyN2I5NWRkODY4ODYxMTVhMTVjYjk1MjlmNjU3ZGEzYzFjYjQ1ODcgcjIyYTQtYnJhbmNoCisyMzM5NiAxYzUyOTEyODA1NGM4YzIwY2UxYTU5Y2QyOTJhOTljMDhlM2I5NzgxIGxlZ2FjeS10cnVuaworMjMzOTcgODMyNTZiZWYwZDc1ZTMxMzVlNDg3MTRhNjlkNjY3ZmU1ZjAyMWFkNiBsZWdhY3ktdHJ1bmsKKzIzMzk4IDcwZTU3Zjc1OTQwMjdkMjhmOGZjZDQ0YWIxNTE4ZWE2NjkzM2RiNWMgbGVnYWN5LXRydW5rCisyMzM5OSBlYzJkNGY5OWJhZGM0YjcxM2NkMWViMjFjNmJlMTA4OGM0ZjJiMjZmIHIyMmE0LWJyYW5jaAorMjM0MDAgNjg5MDA3MTg3N2RjODYwY2RkOTYzYTRkYTc0NWUxYWU4Zjk5YWE4ZiByMjJhNC1icmFuY2gKKzIzNDAxIDIyNWYxN2VjODkzMjNhOGIxN2I4OTUwY2U5OTFjNDRiOWVhYzVlYTAgbGVnYWN5LXRydW5rCisyMzQwMiA5NTYwZjg2YzRmYTRhN2YzMGQzNDkzN2M2NjM3MWJjNDdkMjQ5YWM1IHIyMmE0LWJyYW5jaAorMjM0MDMgY2E5NWJjZTVhMzNlZmZmN2I4YjNjYThhZjUzNTYxODJhMTg4MjA3MyBsZWdhY3ktdHJ1bmsKKzIzNDA0IGJkZTlkZWI1OWQxYmMwOTU3MzFlYjdiZDZiNzllYzU5Nzk0MTAzY2EgcjIyYTQtYnJhbmNoCisyMzQwNCAyYWM2YzMyZmMyMDZkZjkxNGRjMmY5ZDQ1NmU3OWM1OTY1MzcyOGI2IHIyMmE0LWJyYW5jaAorMjM0MDYgODllNWYxMGM5Zjk5NDAwZjI4NzBlZDg3MGI4NmI5M2E0M2Y1Y2I3MCBsZWdhY3ktdHJ1bmsKKzIzNDA3IGI5NGJjN2VjN2JlODUxZWJlZjRkZjM0NDRmYzI5ZWY1Njc2NGZmZTMgbGVnYWN5LXRydW5rCisyMzQwOCBlNzhjOGY0ZTJiOGM5NDM1NTMzMDRlMmJmMmIxZGJjN2EzNWQwYTEyIGxlZ2FjeS10cnVuaworMjM0MDkgYzZmYzg3ODEwNTUxNDNjMDQzZWQzZjllY2YzZGQ1MDNkYTU5MzI2ZiBsZWdhY3ktdHJ1bmsKKzIzNDEwIGI1Y2M1ODZhYzI1YWVkMGQ4MmYwNjAxZDVjOWEwYTIyY2IyNTNmYTcgbGVnYWN5LXRydW5rCisyMzQxMSA4OGRhMzhhNWYwYmY1YTg1MjYyZjY0ZmZhZmNjNzJkMGM0YTY3NDJjIGxlZ2FjeS10cnVuaworMjM0MTIgMjA2YjI1ZmViZGUzY2VhMDAwNDQ0NWUyNmViYzU1ZmIwNzM3ODVjNiBsZWdhY3ktdHJ1bmsKKzIzNDEzIDFmNGQ5OWU3YjFlNzU0OTljYzM1M2JlNWE4ZGM3MWY5ZWJhZGEzOTQgbGVnYWN5LXRydW5rCisyMzQxNCA1NzA3ZGE5MDA5MzYyOWJmZjZiMWJmZmZmZjUxNzMwYTMxMTUzNzJkIGxlZ2FjeS10cnVuaworMjM0MTUgYzhmYjAwZjVlYjVlNWRhOGU5YjQwOWQ5NTBjNGNlN2ZkZDhmZjBjOSBsZWdhY3ktdHJ1bmsKKzIzNDE2IDcyYTUzNDdkMmY5YWQ5OWU4ZDkwNGQwNDg4NTYzZjNjZDgxYTQ1M2IgbGVnYWN5LXRydW5rCisyMzQxNyBjNjhlZjQ3YjE3MDlkYWU2NmRhM2FjZmRjNzUzZTI1NmVjY2FkOTlhIGxlZ2FjeS10cnVuaworMjM0MTggZDVkMDAwODYyYTY2OWE5ODQ2NDYwYzdlMTIwMzcxZDUxMTc5MmIxMSBsZWdhY3ktdHJ1bmsKKzIzNDE5IGJiYjM1M2QzMWUyNTQyNWM4ZWNkNmEzNGM0YjBkYWFhMGFhMTIwMWIgbGVnYWN5LXRydW5rCisyMzQyMCA0MTZmMGJjMjI4ZThiOTQ1OTc5ZDg5NDE1YjY4Njk3ZDFhMWVkNGM4IGxlZ2FjeS10cnVuaworMjM0MjEgOGJhMzI4NzE4M2UwNWJlMWFkNjE4OWI5MjljMDBmZmI4NzVmNmQ4ZCBsZWdhY3ktdHJ1bmsKKzIzNDIyIDJjOGE1YTE3MmY0N2JiMzVhODVhMTBkNDVkYTgyYWQ0YWFlNTIzZDIgbGVnYWN5LXRydW5rCisyMzQyMyA2ZmY1MzE0MzViMzRkYzcxOTg0ZmFkZTAyMTc1OGQyMjJjNzE2ZGM2IGxlZ2FjeS10cnVuaworMjM0MjQgYmVhNjg2NDQ5NTk1NjM1NDgyYjA0YmJlYjhmYTQ2OGNiMzI0NDcxNiBsZWdhY3ktdHJ1bmsKKzIzNDI1IGVkYjBiODA1ZTU0OTg4OTBhYjAwYWE1MmY0MGFhOWU5M2Q5ZTlmZWEgbGVnYWN5LXRydW5rCisyMzQyNiAzYjM1NmY3NzkyMmQ4ZGI1ZDEzMzgzZTczZDAxZjY5NjA2NjM4OGE5IGxlZ2FjeS10cnVuaworMjM0MjcgNDcwYzFjNzJhMGE3YTVmMGI5YmEwNDkwYTRiYTQ0N2MzNjM2MTRiMSBsZWdhY3ktdHJ1bmsKKzIzNDI4IDViNGY3MzIxZDljYmY4MWI2YmQ0NTFhNjVhYWNhZTk0ZTY0MmUzOGEgbGVnYWN5LXRydW5rCisyMzQyOSBkYjgyYzBiNDBkZmM0MGZlZTFiZWRkYjVmZGUzNmY2MTI2ZjgyOGQ5IGxlZ2FjeS10cnVuaworMjM0MzAgNjUwOGFkYmQwYmIxYmIyNjYzNzRkN2I0OTcyMzg3YzdlNWQyNjEyNyBsZWdhY3ktdHJ1bmsKKzIzNDMxIDAwNmNmYWFjMDI5YTc2ODRiYzdiYjE4OTM0NjQxZDllZjI2ZjU2MGYgbGVnYWN5LXRydW5rCisyMzQzMiAwOTFlOWUzY2VlYWYwN2I0MjlmYjE1MTFjNGVlY2E1MDUxMzQ0Y2YzIGxlZ2FjeS10cnVuaworMjM0MzMgYWJkNmEwOGIyYzMyNzFhZmQ4ZjA0NGIyMTkyNzJkMzQyMGE3NzBmZSBsZWdhY3ktdHJ1bmsKKzIzNDM0IDVmYjA2OTFmYjY5MDM5MWUzN2MyMTdjMTlhOWIxMjQyMDMwZDA2NGUgbGVnYWN5LXRydW5rCisyMzQzNSA4MzEwNjYzM2Y5MzMzNGY1NzI4Njc0YTdlMzhkMmJmOTIxNDMyOWM0IGxlZ2FjeS10cnVuaworMjM0MzYgZGUzZTg1MTgxOGE0MzI3ZmI5OWNkMGM1ZjNiN2Y5MTE3MDNkNWQyNiBsZWdhY3ktdHJ1bmsKKzIzNDM3IGYxMDA3OTNjYTlhZmM3MGZjM2ZiOTgwYjgxYjkyODY0MWVkNDNjNWYgbGVnYWN5LXRydW5rCisyMzQzOCA4Zjc5ZmE1MzdiZDI0YjMwYTM4YzE5NzVjYTY5MDVkNjM2NjY2Zjk3IGxlZ2FjeS10cnVuaworMjM0MzkgZmVmMjg5ZDY2ZThlMTU4MjMxMjlhN2M3NzVlNDU1ZmJlYjNmMzUyNiBsZWdhY3ktdHJ1bmsKKzIzNDQwIDc1NGI4MTYyODRkMTM4ZWVjZjY3ODdjY2JhZjgzZDc5NDYxNWY0MWQgbGVnYWN5LXRydW5rCisyMzQ0MSA4Nzk5ZGZhMGY3NmFjNDdjNTEyYWY5YzJlNWRiZmMwMmRkNTk2Y2YyIGxlZ2FjeS10cnVuaworMjM0NDIgMDFhNWM0M2YxODk0Y2RmMWMxMzZmOTc3NjU3OTMzMDk3ZWJkYTVkOSBsZWdhY3ktdHJ1bmsKKzIzNDQzIDVlY2MwMmMxZWRhYzNhYzY3OTYwZGI5YzA2ZWUzZGZlNjM3ZTQzMDMgbGVnYWN5LXRydW5rCisyMzQ0NCA3ODRlMjFiZGQ5YTJmOWRkYTM0ZmU2YzM2MjEyMDYzNTNmN2EyZTdmIGxlZ2FjeS10cnVuaworMjM0NDUgOWRlMjkxNjk0YjFlMWJkMWNmY2NkZWE3YjJjZWU2MDBlOGM4OGUzMSBsZWdhY3ktdHJ1bmsKKzIzNDQ2IDZkNzNiNTRkOTIwNTIwMTRlMjMxYmE5NzljYjM5YjY1MzU1MDczOTggbGVnYWN5LXRydW5rCisyMzQ0NyBjNmI2MTg5YTgzOTc2MDhjNjQyNGRjODQ5ZWIwYzVkZmI5YzQ1ZTUzIGxlZ2FjeS10cnVuaworMjM0NDggNGM2OTIyZjI2NmYwNzk0ZmE4MDE1NTJiOTQwZjc1ZDM1ZjZiNDFkOSBsZWdhY3ktdHJ1bmsKKzIzNDQ5IDhkNzlkYjAxYjJiYTI1ZGI4ZWUxYjkyM2Q5YThhNDUwNzA1MGQ4OTAgbGVnYWN5LXRydW5rCisyMzQ1MCBjNzgxN2I2MDc0YjU4MDQ0Y2E2OGI3YzkzYzFiMDIyNGZlMTkzNzlmIGxlZ2FjeS10cnVuaworMjM0NTEgOGU0ZTQ5MTA1NTk1NGJiZjY3YjA0OGE3Yjc0NTgzZDdlMzE1ZjAzNyBsZWdhY3ktdHJ1bmsKKzIzNDUyIDZkZGE0OThjY2NjNDg1NWEyMmRmMDMyNTJiMzFlNWY2NTk0ODU5NmQgbGVnYWN5LXRydW5rCisyMzQ1MyA1OGI0Y2ZhNTQ4NzE5MWMxZmIyZjgyZjBlOGJhMDE5OTkzZDZiODQ1IGxlZ2FjeS10cnVuaworMjM0NTQgNTY0MmQzN2YxYjE2MWQ1NTUzNTg0N2M5MTMyOTUzMTA0OTQxN2E4OCBsZWdhY3ktdHJ1bmsKKzIzNDU1IGU5NDZjNWQyZmUxNTFmNWIxYjI3NTFkODNiMGE5MGZmOWYzZGZkYzQgbGVnYWN5LXRydW5rCisyMzQ1NiA0OWExM2U2ZTkzNWRiMjk2NmEyNWVkMTAzNDQxN2UwYzY3MTQ4MWFlIGxlZ2FjeS10cnVuaworMjM0NTcgYmU1NDhkNGJlODg4ZjQ3ZWVjODY1OTBjOGJjODIxOTIyY2NmZmUyOCBsZWdhY3ktdHJ1bmsKKzIzNDU4IDIxMDYwMzE4ZjUzOWFmMDk5YWE0YzcxNzYxODI5ODM1NWNmNTdlYjYgbGVnYWN5LXRydW5rCisyMzQ1OSAzNDA4ZDkyOWJiOTQwYWQ2MTBkMmI2OTRkNjZjNzkzOTAzNTAxNTM1IGxlZ2FjeS10cnVuaworMjM0NjAgNmRlNGVlNDc3OTQ5ZjhkNzg2Mzc0MWYzOTQxODUyYzIwMzEzMDRkNiBsZWdhY3ktdHJ1bmsKKzIzNDYxIGI0ZjBmMTBhNmM1ZjRkMzcyMTI1MThjNjJmMmFhNDI1M2Q4ZGFkM2EgbGVnYWN5LXRydW5rCisyMzQ2MiA1NzhjMWJiNzI4Mzk5MjU2NTk2NGEwOGIxZTRjODk2MmY4NTczNzk0IGxlZ2FjeS10cnVuaworMjM0NjMgNzJlZTU3MzQ3YWVhNjUzMzQxYWM2Zjc1YzczYTEyZTFiOWU5ZTc4YyBsZWdhY3ktdHJ1bmsKKzIzNDY0IGY1ZDc5MWMyYWNjOTUwZWViOGVmZWM4NTVmZjIzMTU0YjczMmUxMDEgbGVnYWN5LXRydW5rCisyMzQ2NSA3ZDVhZTdkN2M3YTk2MzZlYWM3YzJiZGQwZWU0YWM0MjJkYzNkNTE4IGxlZ2FjeS10cnVuaworMjM0NjYgZTVjM2NhN2I1MDk5MjRiNWM0NTgyMTcyMDEyZmUzM2JmNTFjZDEzZSBsZWdhY3ktdHJ1bmsKKzIzNDY3IDk4NzNjOTljNDNmNzUzNjc4NzQzYzRjMzM5ZmY2ZWQ4YjY5NzQyMTQgbGVnYWN5LXRydW5rCisyMzQ2OCA4ZTZmNjA0YjA3OTkzN2JhODc0YzE3ZTc1MmRjMmQ4YTIyNmQ2OTM1IGxlZ2FjeS10cnVuaworMjM0NjkgMDAxNTJlNjg3NDVhNTE4ZGZlMmU1MmY2NTg5YzEzNGY0YTc1ZjEyNSBsZWdhY3ktdHJ1bmsKKzIzNDcwIDIwYmE0MmNjYjM2ZjY3NjU0OTJiODg2ODAyZTI0NWFiMzM2OWI0MTcgbGVnYWN5LXRydW5rCisyMzQ3MSBlMmRhOWE5MjlhY2FiNTUyOTBlOWU3NjgyNWJkYzJkNmZjODZmODM1IGxlZ2FjeS10cnVuaworMjM0NzIgYmE1YWFhNmJjMWU1NmI1YmQ3NjExZmRlMDFlOTU2OGQ4MzY3YzNlYiBsZWdhY3ktdHJ1bmsKKzIzNDczIGU3ZWY4ODEzODk0MTlhNjg2NzcwODkyMDIxOWIxN2I0YWY1OGY1MGYgbGVnYWN5LXRydW5rCisyMzQ3NCA2OWI5NDFkMTMxNzY3NTM1Zjg5MWIxMGM5YTAzYWZiYzc3ZTEyZGJmIGxlZ2FjeS10cnVuaworMjM0NzUgYjJmOTU3ZjljNmY0MTNiY2YzOTc5ZjAyMTFjYmE3ZWFlN2Q2Nzg4ZCBsZWdhY3ktdHJ1bmsKKzIzNDc2IGUzZDc1Nzc4NjE5ZTNkYzZiN2VmNjI5YTVmNjU5N2E3M2Y1ZTZiZjcgbGVnYWN5LXRydW5rCisyMzQ3NyBkMDUzNzI2ZmIwMWJkYzY0YWE1OGJhNzQzMDJkOTZmOTNjMWQ4M2M3IGxlZ2FjeS10cnVuaworMjM0NzggOTY5OGI3MWIwMDMxNWFiOWFiNzM4OTViYzRkNjc0MzQyZGI5Y2IxNSBsZWdhY3ktdHJ1bmsKKzIzNDc5IGZhY2UxZWFhNjhjYTliNWFlZWVmZTY4MjY5NTgwMTZjZGE2MDFjNDUgbGVnYWN5LXRydW5rCisyMzQ4MCBhNWEzMzA2NDZjMTMyYWMyZjQzZGU1MGVhYzhhYzNhM2VmMGVlYjhmIGxlZ2FjeS10cnVuaworMjM0ODEgYzBhNmY1Mzc3M2UzNTNjZTkyYTJmYTgxMTM0MjZhNmYzNTBmZWIxOSBsZWdhY3ktdHJ1bmsKKzIzNDgyIGJmNTU3NGY0ZjQxZjc2ZmQ2NGUwYWIzYzFmNzRjY2IwYTE5MmYwY2QgbGVnYWN5LXRydW5rCisyMzQ4MyA1YWNkMmE4MWQ2ZmE3MTQ2NzdhODdlMDIwNTRmMTMxYzE4NWQ1YzczIGxlZ2FjeS10cnVuaworMjM0ODQgMGI5OTE3NGQ2YjE3ODQ1ODc2YmU3ODkzNTVhNzZjZjU0MjM0YzJhNyBsZWdhY3ktdHJ1bmsKKzIzNDg1IGFiYWY5ZWEyZTU2MDcyOTk1MDk2MmM3ZTE3MzdkNGRjZmVjNTVkYWIgbGVnYWN5LXRydW5rCisyMzQ4NiBhNGVmMDNiNWE5Mjg2ZDlkYzkxYjUxMWIwMGQxOWYwODczMGY4NTUwIGxlZ2FjeS10cnVuaworMjM0ODcgYTgxZGIxMjk1YTllMjI3OGVjZmVhMjBiOTc3ZDVjZWRmZmJiMGQ0NSBsZWdhY3ktdHJ1bmsKKzIzNDg4IGQ2ZWFlNjRmZGI1YWMxODYwZjdhZjliNTEzOGFmMDYyYjJjN2IyYzQgbGVnYWN5LXRydW5rCisyMzQ4OSBhYTE4YzBlY2M0ZmI2Nzg0N2VlNDU0NzM5YWM1ZDlkMWI2ZThjYmM0IGxlZ2FjeS10cnVuaworMjM0OTAgYWI1MDQyMDU4YjZmMWVmZWE0MGU2OTUyZDM3ZGQ2NzY1ZWQ5MDhiNCBsZWdhY3ktdHJ1bmsKKzIzNDkxIDkyZjg2NDM2YjZiZTYzM2RhMzBhMzg4ODYwZWQ0YjFmNjIyNGMwMWQgbGVnYWN5LXRydW5rCisyMzQ5MiAxYmVlNDliYzhkOWM1NWVkOWU2MTc1Yzk2MGJjZjdkZjljOWJjYjYxIGxlZ2FjeS10cnVuaworMjM0OTMgOGJhZDU1ZWRmZGYzOTM4MWE2NmFmZmE3Yjc4NGUzMzg1NDQzY2JmMiBsZWdhY3ktdHJ1bmsKKzIzNDk0IDVhMmU3Yzc4ZDQzMzQ1ZWI2YzgyN2M5ZjZkYTc5MTY2NmVkODg3NmQgbGVnYWN5LXRydW5rCisyMzQ5NSA0NjRmOWEwOWE5MTAzOGE5ZGNjODQxMDkxODFjZDA4NDJhYzVjMWIyIGxlZ2FjeS10cnVuaworMjM0OTYgZDQ3ODI0OTRhMWUzYzI5ZWQzMjRlZTU0NjI5YzU0NmQ5OGI2ZWJmMiBsZWdhY3ktdHJ1bmsKKzIzNDk3IDgxMzg2YTcxZWNjZTg2NWM4ODJjN2Q3YTc1MDNjN2M5YWVkYzRmMGUgbGVnYWN5LXRydW5rCisyMzQ5OCA3ZWE2MWRhODc4YWYxMDczZTFlODI1OGQxOTg0OTRlNzZhMzkyMDE1IGxlZ2FjeS10cnVuaworMjM0OTkgYWNmYjI3ODY2MmM2MmMzMjAyMjU5NTA1N2U4MjBlOTQ1ZjFlMzYyNiBsZWdhY3ktdHJ1bmsKKzIzNTAwIDllZTZhOThmMDMyYzMxM2U4ZjA4OWZhNGVlNTUyY2Y3YjhlZjBjOWEgbGVnYWN5LXRydW5rCisyMzUwMSBkMTY3MWRkZWFjZTBiNjQ0MTY2NGZjZGEwODhlOTUxZTFjMTRjNDEyIGxlZ2FjeS10cnVuaworMjM1MDIgZTdhY2EyYTMwMmNkNzEzNDg0NGY5OTFjM2FkNTRiYzBkZmEwM2I1OSBsZWdhY3ktdHJ1bmsKKzIzNTAzIDI3NDVjM2RjMjRhZjI5Y2U0MzA5NmQwNDJiN2JlZGU4ZDBiODBlMWUgbGVnYWN5LXRydW5rCisyMzUwNCA1YzQyNjFlNzQ0NzgwY2YwMDMxMWNhNjgyMWRlZTk4ZTZlZDQyM2VlIGxlZ2FjeS10cnVuaworMjM1MDUgYWZmNmZjZDI2YzE1YzQ3MTMwMWI2ZGE5YzExYWFhNWRjZDk3ZDFmOSBsZWdhY3ktdHJ1bmsKKzIzNTA2IDdjZWRiYWFhMTJlNDc0ZmM1NjgyNzkzMGEzMGFiYjI2M2QxZDlhYzMgbGVnYWN5LXRydW5rCisyMzUwNyAwZTk0MGRhODQ1YmY4Mzc5MDgyYjI0MzYzNTY3YzVjN2Y5MzBiOTU0IGxlZ2FjeS10cnVuaworMjM1MDggMTY2NThkZjg0NTZhNjYyODFiNWZjMGY1NzA3MTJiZjZjOGE5NTg2YiBsZWdhY3ktdHJ1bmsKKzIzNTA5IDcxNjBkNzk1NDczZTkxODNlNzRkZGMxYjI4M2Y5Y2VlZDkxOTBiNDkgbGVnYWN5LXRydW5rCisyMzUxMCBmM2IzZmQ1YWJmYTYxNmRmYTNjNzBlMDM3M2MyODhlYzczNzVhZDIxIGxlZ2FjeS10cnVuaworMjM1MTEgYTRkMzI4ZDUwODk3NTliY2Q4MTg1ZWYyZTUxOWUwNzdkOGY0NjgyYyBsZWdhY3ktdHJ1bmsKKzIzNTEyIDEwYjk3YWU2OTAyNWM2NTRhNzM1YzYzYzM2ODAwZTk5NzNjNjU0OWIgbGVnYWN5LXRydW5rCisyMzUxMyAxYWNlY2M5MDhlZTg2YjRmM2QxMDdjMTllYjdkYzVmODk0MDQ2YjRmIGxlZ2FjeS10cnVuaworMjM1MTQgMWRiNWFhNjc2NWMwMWIxNDVkMWEzYzY5YWE0MzAyNGMzYmQzMGVmZSBsZWdhY3ktdHJ1bmsKKzIzNTE1IGIwY2U5MjU2MWUwNzViZDVhYjM3Mzg1NDA0N2RhZTNiZWRiMmMzZmIgbGVnYWN5LXRydW5rCisyMzUxNiBiODVjZDE2M2NkNWNkMGU3ZDE1NjVmMTY4MDRjM2VkNzhhNDQ2ZjBjIGxlZ2FjeS10cnVuaworMjM1MTcgZDk2Y2QzOGEzZmVjNzI5NDI2MDdkYWMxNDIxY2ZmOGQ5MTI1MTMyZCBsZWdhY3ktdHJ1bmsKKzIzNTE4IGM2OGYzNjQxYmFjZDgyNzIzZDMwYTUxNWE3NGI5ZTc2Y2Y1NjBhOGYgbGVnYWN5LXRydW5rCisyMzUxOSA2NjkyODU1OTIyODg0YjUxYzg4YWJlYjJlMjlhOWRlNWI2NzQ3OTBiIGxlZ2FjeS10cnVuaworMjM1MjAgNmYwMjU2OWNjNDZmZGE1MjE3ZmNiNzc0ZDM3MDQ0MzM2ZGJmZTk1ZiBsZWdhY3ktdHJ1bmsKKzIzNTIxIGUzZjYzYTk1NDU1ZjdjMDI0ODJmOThiZDVmZmZjZjNmY2JlODA3OTggbGVnYWN5LXRydW5rCisyMzUyMiAzMTg1ODk0MDRiOTU3Mjc4MzBiZWI1MzkyYTAyZTc5NDFjOTNjZjdlIGxlZ2FjeS10cnVuaworMjM1MjMgNjE1MmY4MmVhODIzODAzMGRjNTdhYzkwZTQ1NzIwNzRlNDQ4MjI5YSBsZWdhY3ktdHJ1bmsKKzIzNTI0IDFlYTViYmJhYjdkNzcxZGNhOTg5YzY3YTIzZmI4MDY2ZWFhYTM5MTEgbGVnYWN5LXRydW5rCisyMzUyNSA1NmYxNzgxMDUzNGMyZDNiNTU4ZDk4YjgyMGNiNjAzYzljODY1MWExIGxlZ2FjeS10cnVuaworMjM1MjYgZGUyOWM4ZTRkZTliMzE0YTg3NTY0OWY2MWJmMzYyYjVhOTJkMTJkOCBsZWdhY3ktdHJ1bmsKKzIzNTI3IDg3M2Q1ODRjMTIyMTM5MGI5OWYxNWM2YjQ1MDM3MDg0ODVhNWUxYmMgbGVnYWN5LXRydW5rCisyMzUyOCBkMDkyYWJjZjljNGI3NmVmMjgyY2JkYjViYWM3OWVlYTQ1MDAxZTk5IGxlZ2FjeS10cnVuaworMjM1MjkgZTRlNzQ5YzQyZjQ2MTdmZTY0MGVkMTQ2OTJmMTQwMDM3NmU2YTdmMSBsZWdhY3ktdHJ1bmsKKzIzNTMwIDI0MWVmOGE5MjNjNzYzOWEzZjE4N2E1OWVhZThmOTRmODM0OTE4YjIgbGVnYWN5LXRydW5rCisyMzUzMSA1OTM0YWVlYjM5N2YwZWZlNWU5YmJkZjBiMmJkMWU3MDIyYWFkMmFhIGxlZ2FjeS10cnVuaworMjM1MzIgMDUyNTA0NzYxNThhNjU1YTU5MDI0OTlhMmNkNDU4MmZkZDJmZGU1OCBsZWdhY3ktdHJ1bmsKKzIzNTMzIDdlYTA0MDI5ZDFhZWFkN2EyOTMyMTkzYzg3YmZiMmI3MjMyNmRjZjggbGVnYWN5LXRydW5rCisyMzUzNCBjZTRhN2U0YWQ2YzQ4YzlmMDE2ZjRiZWIyMjViYTk4MzIxNWI3ZmVjIGxlZ2FjeS10cnVuaworMjM1MzUgNjEyZTg2YTRjZDlmNmVjM2E1MTQwMjYxZWE0MGRjYjQwZTJlM2YxMiBsZWdhY3ktdHJ1bmsKKzIzNTM2IGYwOTE2YTZkY2VmMjc1ZmZlMmNhNDkwNTcyZmRmMTZkY2M2NTc0OWIgbGVnYWN5LXRydW5rCisyMzUzNyAyMjY5Y2IzNzFlMDVmYzBjYjVjZjRmNTQ4MGRhM2Q3YWI2ODk5N2NhIGxlZ2FjeS10cnVuaworMjM1MzggZDdkOTU2YjQ3ZDI0MmUyYjdlNjBkNDk1ZjliYjIzMWJjMzFhYTgwYiBsZWdhY3ktdHJ1bmsKKzIzNTM5IDE2N2U3Zjk4YjUxZmIzN2QwMTY0MDUwODcwMzU5OTdmMGExMGYxNzcgbGVnYWN5LXRydW5rCisyMzU0MCA2NmE1NmEyMGNmYTNmNmNlMjI2OTUwNTU4N2NlZGUzNTY0NTBmYjNkIGxlZ2FjeS10cnVuaworMjM1NDEgMjk4M2I1NDI1NmM3MjI1ZTYxZGVjYmIyYmQ1ZTU5ZGQyNzRmNTg5OSBsZWdhY3ktdHJ1bmsKKzIzNTQyIGEyNjVkOGJkMmYyNzc3YzFlNTk2ZDMzYjZkOTk0MjQ2MTllNTZiYzggbGVnYWN5LXRydW5rCisyMzU0MyA4YjNlYTczMzVjMWJkYzY1MzIwM2QzMWMwMjUyNDg5YjgxYzQyMmFmIGxlZ2FjeS10cnVuaworMjM1NDQgOTdjZmE0NjFkNzkzZDM1ZGU3OWY1YmE1ZWQ0NjAwZDQ2ZWU0NjVmOCBsZWdhY3ktdHJ1bmsKKzIzNTQ1IDM4MGQ0YjRlZTYwMjQzYzIyM2FlMDVhMjA3ZTFjMzZiNWE1OTRiOWEgbGVnYWN5LXRydW5rCisyMzU0NiBlMzc1MWFmMGYxZGQxNzhjMjQwNTg2MmQxZWY5YTkzYzcxNmY4ZjM1IGxlZ2FjeS10cnVuaworMjM1NDcgMDRmMjk2ZjcxMWRmMDIzYWZkMWYyMWM5MTkxOGZmOTA0MDdkZDY4YyBsZWdhY3ktdHJ1bmsKKzIzNTQ4IGZiNWYxMjExNzAzNjAzNTA5NjI1YWRjMzJmZWQ1NWFmZTYwODU5MDIgbGVnYWN5LXRydW5rCisyMzU0OSBjY2I3YWJjNzE0ZWRkYTdlOTQ5ZDgxMjdiODJmZTdhYTA0ZGQyYzM4IGxlZ2FjeS10cnVuaworMjM1NTAgYzg1M2QyNDZmM2M4ZjcwMDQxMDY1NDcxOWQ1YTI1MWFjMWYyZDhiMSBsZWdhY3ktdHJ1bmsKKzIzNTUxIGY0ODc4MjIzN2Y4NTMyODgwMjdiMjg4NjY3ZmU1ZjhlNmIyNDQ1ZGUgbGVnYWN5LXRydW5rCisyMzU1MiA1Y2NmZTA0NDkyYWM5YjczNDZiZmI0ZjM1YmMwMWZlY2ViZDhhMWVmIGxlZ2FjeS10cnVuaworMjM1NTMgNmU3ZDVhZTI4MDBmYzk0NzQxNDBlYzhiYzgxNjMyYzliY2E5YmJkNSBsZWdhY3ktdHJ1bmsKKzIzNTU0IGFjZDgzNzgyMTZjMzFmMWNjMmI2NjA3YmI3Y2FhMjhlMThmODA3N2EgbGVnYWN5LXRydW5rCisyMzU1NSAxNzhiYTMzZjY3ZTRlOGQxZTQ2N2RlZDRiNzAzNTM5NmZhMzQ5OTA3IGxlZ2FjeS10cnVuaworMjM1NTYgYTQzY2I2YzU5MDcwZjgwZTUwYzY3YjdkOTZmYWFhNThkMTA3NWNhOCBsZWdhY3ktdHJ1bmsKKzIzNTU3IGIyODVkZWNmMDQyMWVjNjY5OTE0MDAzNDkwZjU2NDEwYzIzNGUyYjAgbGVnYWN5LXRydW5rCisyMzU1OCA0MjZiMzc5YTEzOGI0MWI3MWFiNzZhNzVkOWY0MTgzY2QwODc3NWM0IGxlZ2FjeS10cnVuaworMjM1NTkgNWQyZDFlMmVjNDczYjEwMjUwYjE4OTQ1MDRjOTVkYjMxOWIwZjE2YSBsZWdhY3ktdHJ1bmsKKzIzNTYwIDZjYzBiNDgwNDllYzRiNTllYmQ3NWVlZjZjNWJkNjQ2N2E1NGI5OTMgbGVnYWN5LXRydW5rCisyMzU2MSA3OTM5MmFiMmMwMmE5ZTJkZDliZjkzMWZjYTIxNjEwZjY1OWFmZGM0IGxlZ2FjeS10cnVuaworMjM1NjIgNjIxMTY4NGVkOWRkZjA3NzM2MDEyNmFjOTU0M2VjZDc4MjQ5NjRiOCBsZWdhY3ktdHJ1bmsKKzIzNTYzIDQyYjUyNzkzNzQwYzBkZjE3MDVhMWZjMjlkYjM3ODIxMjQ3OTE1Y2IgbGVnYWN5LXRydW5rCisyMzU2NCA4NzRiYjE3MDc0YjBkNGRmOGYzMGNhNjlhZTI1NzAyNTdmNzVlYTFmIGxlZ2FjeS10cnVuaworMjM1NjUgM2IzZWU5NzYzM2MxMWRiMDQ5ZTdhMmZmOWFkYTE3MjRmZjA1NDRmMiBsZWdhY3ktdHJ1bmsKKzIzNTY2IGM1MzQ1YzBhYmQ3MDYxOTMwNjQwNTlhNzZkMjdkZjhiNjMyYzRjNWMgbGVnYWN5LXRydW5rCisyMzU2NyBmYWVjNjljMTE2NDAzNjFhMWFlOGMxOWY3OThlNTQ2ZWQ4MGViNDAzIGxlZ2FjeS10cnVuaworMjM1NjggZTQ0Y2RlZjc5MWVlODQwNTVhODJlNWIxY2NkYjNkZDdjMGJjOGY0NSBsZWdhY3ktdHJ1bmsKKzIzNTY5IDA4Mjk1ZWM1OGVhOTdkZGUxNjViZGU5YmRkZTkzYjVhZTg5ZTJiN2QgbGVnYWN5LXRydW5rCisyMzU3MCAxY2EyMjhlMjFhOTg3YTcyMmYxNDQ2YzgyZWM3OWNmYTZhNGE0NTVkIGxlZ2FjeS10cnVuaworMjM1NzEgYWE2ODEzNDViZmFiMTMzNzNkMmFmMjlhNWFiNDE1NTg2NDNiMzc4MyBsZWdhY3ktdHJ1bmsKKzIzNTcyIGNhMmJjNWNkYWE4ZTllZDIxZDQ2MmUzM2RjYjhlZjVlYjFhYTg5OWQgbGVnYWN5LXRydW5rCisyMzU3MyAzMjZlNWE3MmM2NjAyOGUyYmE3ZDBiMjYyYzU5NGI2NDUyYTkyNGEwIGxlZ2FjeS10cnVuaworMjM1NzQgYjQ0NDdiYjVhYTBlYWRlYzk1NmE5NWI3OTAzZDZhM2YwN2U2OWU0NSBsZWdhY3ktdHJ1bmsKKzIzNTc1IDEyMzUzYjEzMTIyNGM2YWNjODU5OTY2OWNjNGUyZThiNzJiMDc4NzggbGVnYWN5LXRydW5rCisyMzU3NiAzMzkzZDZmODA3ZjVkN2I1YmEzMWVhMWQ5Y2UyOWI5ZjZhMWU0NjJlIGxlZ2FjeS10cnVuaworMjM1NzcgZWExOTEwZDJjNzgxZGQwYTlkZGI4MGI0MzBmYmEyNzM5ZWVkM2Y1ZSBsZWdhY3ktdHJ1bmsKKzIzNTc4IDI4NGVhYmUzYjU1MmNkYTNmY2RkMDY4YTU2NjhmMjgxNjBlOTg4ZjEgbGVnYWN5LXRydW5rCisyMzU3OSA3YjQxZjdhMmU1Mjg1NGYyOWJjY2EwNzhkODI2M2MyOGZmMTUwYjk2IGxlZ2FjeS10cnVuaworMjM1ODAgMmUwNzNiYzcyNjg2OTUxYTJhYTkzNjA5ZTZkNTg2MjMzNjBkYWM2YyBsZWdhY3ktdHJ1bmsKKzIzNTgxIDRlZjdlYjkwYjY5YWM3NGRjN2Y0NjAxOTExZWVmZDY4YjE0ODU2ZTIgbGVnYWN5LXRydW5rCisyMzU4MiBmOWE2NmIyNGJmZmZiYTJlMmY2MDk2OTQwOGE0MGU1MjY0NjUwMTdhIGxlZ2FjeS10cnVuaworMjM1ODMgMTI1MzU1M2ZjM2NjOGVjMmIzMTkwZjRmNDM4M2RlMjc4N2MzMmUzMCBsZWdhY3ktdHJ1bmsKKzIzNTg0IGYyOWI4ZWEwYjY5NTQ0OWNiOGIyYzQ5MDZiODUwMjU4M2JhMzIyYWYgbGVnYWN5LXRydW5rCisyMzU4NSAyNjdjNmZlMGFiYzJlZWI4YjdkYjEyOGRmZTM1OGM0ZGMwNjZjODM3IGxlZ2FjeS10cnVuaworMjM1ODYgNWE5ODgwMTU2ZDcxMjUzN2U1NGFmNjRmY2JiYjFhYzk2ZTJiYTNmZSBsZWdhY3ktdHJ1bmsKKzIzNTg3IGJkYTI3NGRkZTI3ZTEwMjY0YjEwZTUzOGUyMDJhNWFkMTVmYzE2MDEgbGVnYWN5LXRydW5rCisyMzU4OCA0MjlhMDhlMmZjNzgyYzNjNmI2Y2U4OTAyZDE5YWY1ZjhmMjdjNDg0IGxlZ2FjeS10cnVuaworMjM1ODkgODU4NTUzNWU0MDRiY2FiOWRiNGQxNDgzNWQxOTg0NDAzNzljYmJlNiBsZWdhY3ktdHJ1bmsKKzIzNTkwIGIzMmQ2NmE0YjVlNmFkNDJiOGI1NmNjZmE3ZWQ2Yjc5MmZjYTkzYjcgbGVnYWN5LXRydW5rCisyMzU5MSA1NGYwNWI5YjFmYzRiYmJhOTJmNmNmZTk1MGM3ZTg3ODI3ZjBkNjg3IGxlZ2FjeS10cnVuaworMjM1OTIgMjZiNWY4Yjk0ODcyYjdhZmY3MmFkNzQ3MWExNWE5ZmQwNzdlMmQ2OCBsZWdhY3ktdHJ1bmsKKzIzNTkzIGE5NzYzNjc1Yjc0YzdhNWZiZDJiNTQ0N2YwNTM1ZDJhMTQxNTAzZTcgbGVnYWN5LXRydW5rCisyMzU5NCA3OWZiY2ZmZjU3OTcwYmUxNmE5YzNiYzA4YmM0Y2FiZTE4MDU1YTI3IGxlZ2FjeS10cnVuaworMjM1OTUgYzUyNDdhMzY2ZmY1N2JlZDg4OGRkNDk0ZDJkY2VkODdiMjhlNjM1OSBsZWdhY3ktdHJ1bmsKKzIzNTk2IDA0ZmVlNzBmZWQ4ZmVhYjk0YzIzOWQ1YTRmMzdmZTAyMzlmYmJiYjUgbGVnYWN5LXRydW5rCisyMzU5NyA4Njg5NmI1ZjFlYmMyZjgxYjIxMzhhYjRiMGZhZjk3NDdjYzdkMGZiIGxlZ2FjeS10cnVuaworMjM1OTggYzcwYTJiNTdhNGRkMjUxZWFjMjQ1ZjFhNWE2ODk2MzI3MTA3ZTA4ZSBsZWdhY3ktdHJ1bmsKKzIzNTk5IDgzODM3YWM1YmI0MGY0ZDVhNTE0MDg3ODc2NTEzZTRlNzNlYzViNjkgbGVnYWN5LXRydW5rCisyMzYwMCAxYjNmZmRmMTIxNTA5YmY2NDQxNDFkZmI5MDFkNDc4ZWRkYWJiMTViIGxlZ2FjeS10cnVuaworMjM2MDEgNGJmM2ZjZTNmNmNlZGY1ZWJmZTc5MzIyYTZiNmYyZTZhYzQxYmIyMSBsZWdhY3ktdHJ1bmsKKzIzNjAyIDcwOTZlNDRjZDFiZDI5ZWUxMGY5YzVlZThhNmJmYjkzYzZkY2U4Y2YgbGVnYWN5LXRydW5rCisyMzYwMyA4NTIyNmRmOWE1YmU5MWUxNzhhODNjOGI0MWJjYmIyNjE1MTA3Njg0IGxlZ2FjeS10cnVuaworMjM2MDQgNTNhOTU3MmI2MjM3NzdlMDFhNzliZmY2MDdkOGM3NTFkMWVmNmZiOSBsZWdhY3ktdHJ1bmsKKzIzNjA1IDE0ZTBmZTE1MjcxMWZhMjQ2N2RkOTBmMDczN2YwMDQxYWY5NWM4MzAgbGVnYWN5LXRydW5rCisyMzYwNiA0NGJlZDI1NGQ4MzczY2VjZmNmYmMwZDg5OTc0NzNkYTgzNWNhYmEwIGxlZ2FjeS10cnVuaworMjM2MDcgN2JkMTIyNzBkYzNlNzdjZGM5ZjRmOGIyM2IyMjVlNDI2ZDIwNTMyNyBsZWdhY3ktdHJ1bmsKKzIzNjA4IDM2ZDE0ODIxNGQ4ZTI3ZGZmNDI1ODkzNjE2M2Q0MmIxMWExYzVlMGQgbGVnYWN5LXRydW5rCisyMzYwOSA2N2E3YTk5ZjJkNWFjMzhjNjM2ZGJjMDMyYmQ0MTVkNzk3OTE0NDg1IGxlZ2FjeS10cnVuaworMjM2MTAgMzJlMTJmOGQ3NWQ4MzI2YjM0Njc0OTA0OTZkMjg5YzYxOGEyMGNlOSBsZWdhY3ktdHJ1bmsKKzIzNjExIGI3OWZmZDNmY2EyOGM4ZmY1YTlkYThiZWVkZTRlNGUzN2I4NzE1YWQgbGVnYWN5LXRydW5rCisyMzYxMiA0MjVjNmM1NThmYWMxYWE5OWM0NTk1NDhiMDRjZDU5ZDNlMGZjYmY1IGxlZ2FjeS10cnVuaworMjM2MTMgMzNkYWM2MTgxYmU1N2M4ZTkyOGYwMTNiMWVhODVmNTEwZGIwYjIyMyBsZWdhY3ktdHJ1bmsKKzIzNjE0IDBhOTE1YjIyZTAwNmFhMWNiYjAwZWVmZWM5MWQ0MTQxMmRhYTYxZjMgbGVnYWN5LXRydW5rCisyMzYxNSA2NmU3NzU4NWI0YmQ5NTk0Mzc1MjM5MGU5Yjk1ZTUwZDY2NjNkMjE1IGxlZ2FjeS10cnVuaworMjM2MTYgOWU3YTBhZjRjMGEzYjZhNzFjNDc3NGQ4YjU2MjllM2EzYjYxOWE5YSBsZWdhY3ktdHJ1bmsKKzIzNjE3IGQxYzdiM2VkZTQ4MTU5MjYyMDI0ZDZkZjJmOGIwNTVmMjBmZDU3OWQgbGVnYWN5LXRydW5rCisyMzYxOCBmZGMxOTE0NDA2ZTI2ZTI3MmZmYjQ2OWQ4YzIzNTZjNTlkMjZmNzc4IGxlZ2FjeS10cnVuaworMjM2MTkgNGRiYjUwNTgxZDkwM2E0NDI4YjQxNThjZTc4MTkyYWVkZjYwOWVkMiBsZWdhY3ktdHJ1bmsKKzIzNjIwIGMwZDY2Mjk2NjI3Mjc0NjQ3YzljZWIyMWY1MWM3MmRmM2U0OWFjZjUgbGVnYWN5LXRydW5rCisyMzYyMSA5MmQ1NmFlNjNlZDNmN2QwZGM1MzBmYmE0MDZhZmM1Y2U0NDJjZjkwIGxlZ2FjeS10cnVuaworMjM2MjIgOThmNTk3YTE3YzkwN2Y5NjJkODMyYmNhMTAyNGU1ZGU0MDA2MDljNSBsZWdhY3ktdHJ1bmsKKzIzNjIzIGUxOTFjZWVlNjcyZmZlMTU1ZjVjNDg5MTg2MmQ2ZDc2ZWNiMGU4MjcgbGVnYWN5LXRydW5rCisyMzYyNCA4YTA5Yzg1NWY5NTczMDQxMDVkYjhiNjEyZGE2YzAyYzQxYTVhMTAyIGxlZ2FjeS10cnVuaworMjM2MjUgYzQwODMzM2QzN2YwNjE1NTYwMmViNTczMDI1MjE1YjMxMmZhM2JiMSBsZWdhY3ktdHJ1bmsKKzIzNjI2IGI5OTdhYzcwZTQ0NWVkYmEzZmI1MTc2M2ZkMzEyZjg0OTEwY2NhNTEgbGVnYWN5LXRydW5rCisyMzYyNyA2YjFkOGNiOTkwNGFjMDFkNDEyNmYyZDIwZjg4NGFlMTNjMjlkMDNiIGxlZ2FjeS10cnVuaworMjM2MjggYjBkODMwNmMwOWM1MWIwYjY5ZGNhODZjMzYwZDY0NTA1ODBiZTcyZCBsZWdhY3ktdHJ1bmsKKzIzNjI5IGU0NmY2OWY1Nzk4YjY4OGMxYjAyY2JjODA5NmVlZWI0ZGU2NGIzNmUgbGVnYWN5LXRydW5rCisyMzYzMCA3YmNhY2E2NTMzODgyNGQ2NDYyNzMyZGJmYmM4ODgxYzAzYmJhMjk1IGxlZ2FjeS10cnVuaworMjM2MzEgMzAwYjFkOGJmYTRkZTFkMzUxMzFkZWE4NjViNjk3ODI5ZjZjOGE5NSBsZWdhY3ktdHJ1bmsKKzIzNjMyIDllNzJiY2ViNTQwYjU0NzQwZjRkZWExNDRkYjJhZDliOTk0NTY0MWIgbGVnYWN5LXRydW5rCisyMzYzMyA4ODMwYmUzMjA5YTJhZDFiZmQzYTQxNjcwMTU2NmI5YWUyZmIyNTdhIGxlZ2FjeS10cnVuaworMjM2MzQgYWJmZDE3MDAxZThmNWVmZTFhNzM5Y2JmM2YyNjNhN2VhMDhkOGY2YiBsZWdhY3ktdHJ1bmsKKzIzNjM1IDhlZjNlOTUxODJjMzZkYzEzZDViNTJmYzE1ZDU0ZjgwNTRkODk0YmIgbGVnYWN5LXRydW5rCisyMzYzNiBkYmVjODYzZDMzZDdlYTM1MDE1YzQwZTA1ZmVmOWU5NDg5MWNiYmNkIGxlZ2FjeS10cnVuaworMjM2MzcgNGJjYzIzMWMxYTQxYTRlMjkzZDNlNmUyMmI0ZDQ2OWI0YzFlODJlYiBsZWdhY3ktdHJ1bmsKKzIzNjM4IDk0OTgzOTQyYzk0YjliN2VhYmUzMWU5MjlhN2JjY2I4YzhiNzhhNTIgbGVnYWN5LXRydW5rCisyMzYzOSAzYWIzYjUzNWRhZjI0OTVmNmVhMDlkMmRjYzZmY2M5MDc5MDUyYzkxIGxlZ2FjeS10cnVuaworMjM2NDAgMDYxZGEyMmY0MjAzOWNjYWRhYmQxZDM0ZWM1N2U3ZDdhZDYzZmFhYSBsZWdhY3ktdHJ1bmsKKzIzNjQxIDljMmQ0NDQ2NzRkMDkwMWY1OTRmNWUyODM2Y2Y0Yzg1ODg5ZGE4ZjcgbGVnYWN5LXRydW5rCisyMzY0MiAyZjg5YjM0NGZkYjNkZDVjODRjMjdkYzU5ZmI4YWJmNjVjNmYxN2RmIGxlZ2FjeS10cnVuaworMjM2NDMgYWZmOGQxNGIyOGFkYTNkNzllZjBiNjVhNTJhZjg5NWUzYTQyNTg4NyBsZWdhY3ktdHJ1bmsKKzIzNjQ0IDNhZGMzYTE0Y2RlNDEyN2FjMWY0YWU0ZGY5YjQwZDdkYmZhMjc2MTggbGVnYWN5LXRydW5rCisyMzY0NSBiNGY4Mjk5NDFmM2RmNDExZTExNDNhMTFjZGM3ZGQxODA4MmU2NzA1IGxlZ2FjeS10cnVuaworMjM2NDYgYmUwODczNGIwYWZkMjEwMTY5MmFkODlhMjI0NWQ5MTE2YTg2YzU5NyBsZWdhY3ktdHJ1bmsKKzIzNjQ3IDNiNDVjMDRhNDgzM2JlOTBjZTdjNGQ1NGI4YzgzMGM4NzIwZWU2MTUgbGVnYWN5LXRydW5rCisyMzY0OCAyYmE0MDE4ZGUyZTMxMDY0ODA5YjVjNmQ1M2UyNGI5Zjc3NDQ1NzdlIGxlZ2FjeS10cnVuaworMjM2NDkgYmU1OGVlZTY5YTk0OTQ0M2IwYTllZWY4ODk0NjhmYmI1MjAyYjQ5ZCBsZWdhY3ktdHJ1bmsKKzIzNjUwIDNjMDFjMzRkMDdmNjhlYzE2Y2E0Yzk1MmM3MmE4ODdhOGQ1YWQ1YjcgbGVnYWN5LXRydW5rCisyMzY1MSBmOTA4YjA2M2YyOGI3OTc1ZTVlZjg4NWJkNmU5NjJjNzJkODFkYzhmIGxlZ2FjeS10cnVuaworMjM2NTIgYmU4Y2JhNWEzYjdiZTg3OTkzMGNkYTNkZTM3NjJjYTAwZDk2ZmNiYiBsZWdhY3ktdHJ1bmsKKzIzNjUzIGI0NzE2ODE3OGQ4NzljYmUzMjkzODBkN2Q3MGI3MTcyNzRkZjk3YTggbGVnYWN5LXRydW5rCisyMzY1NCA5NDZiZWJkMDAxMzJjM2JiZDQwMzc4MjBiY2FiYTAwZGU3YTIxMjhmIGxlZ2FjeS10cnVuaworMjM2NTUgNzczYTEzMGIzMzBlYmVhY2VjOTNiMTQ0NzA0ZmFjZjYyYzYzODk5NyBsZWdhY3ktdHJ1bmsKKzIzNjU2IDg1M2MyNjhiZjI0Nzk1ZTdhMjViZWFjYjc0M2FhMzE1NDZjMTA4YjMgbGVnYWN5LXRydW5rCisyMzY1NyBjMjdjZjkxM2IxZDY5MTAzMGQ3ZTJkMzNlNzE0MDJmZDg4ZDIyMzIzIGxlZ2FjeS10cnVuaworMjM2NTggYWQxZjA4MTI4MGFhMDA5ZjVlMzJmYWM1MzllODkxZDg3Yjg4ZWZkMiBsZWdhY3ktdHJ1bmsKKzIzNjU5IDIwNTA4NzdjMGMzNjNhYzE4MTFhYjVjYTMxMDU1MTdmNjE0MDVmMzYgbGVnYWN5LXRydW5rCisyMzY2MCA3Mjk0OTMyZDc0ZWNhZWY1YzUzYzk1NmQ1OGE0NmMyYWVlNmZhNDgxIGxlZ2FjeS10cnVuaworMjM2NjEgOWZlOTc1NDhkOTUyMWZkOGVhODQ5N2IyOGJiZjRjNjk0NzM3YmEzOCBsZWdhY3ktdHJ1bmsKKzIzNjYyIGM5YTIxMjMyOWRhNmYwY2ExYmM3ZTFmMzhhYTJlZTY4NjRmYWFlZTAgbGVnYWN5LXRydW5rCisyMzY2MyA2NWY2MGQzZmNkZDc3ZTAyZTczMDI1YTQ0ZmYyMjBjN2MyMzAwNDUyIGxlZ2FjeS10cnVuaworMjM2NjQgNjU3OTA1NjIwMzNjMTNjYmM4MmIwZmQ0YzE4ZWU3YWMyN2E3OGM0NiBsZWdhY3ktdHJ1bmsKKzIzNjY1IGI3NDYxMGM5MmQ4YjgyNmQwYjNiZGViZWIyN2VjMjEwZjI0MTMzNjAgbGVnYWN5LXRydW5rCisyMzY2NiBmNTdmMTdjYjQxMDg2NTQyYmNhYjBhMjIwOGM4ZjkyMDNhM2RjZDY2IGxlZ2FjeS10cnVuaworMjM2NjcgZWQyZWVhYjgwMmQyYzQ5YmQxNTQ5NDAyNzM4ZjA1ZmQ5NjcxN2YwMiBsZWdhY3ktdHJ1bmsKKzIzNjY4IDlhZTc4ZWY4NThlMmNhOWJiZWE2ZmIwMmIwOWI2MzJlMWYxYmM2NzQgbGVnYWN5LXRydW5rCisyMzY2OSBiNmE1ZmVjYmVjM2NiZWE2ZjhjY2NjMGMwOTYyOGZiZjE4NWQ2YTM5IGxlZ2FjeS10cnVuaworMjM2NzAgYzNhOTM3Y2Y2MGE1ZjVjZGE3ZDY1YmIzMTUxNDFhYWJhYjIzOTg0MSBsZWdhY3ktdHJ1bmsKKzIzNjcxIDZiMTA0MDgzZjVmMzNhOTBiOGU3Y2YxN2I2YTgxMDJlNTU0OTA1M2MgbGVnYWN5LXRydW5rCisyMzY3MiA0NjlhOGUxZjdlZGY1MTM3ZjBjMzIyMTRjYjgyNDgzNzBjMjdhZWM1IGxlZ2FjeS10cnVuaworMjM2NzMgYjk4MTg1Yzg4MmU0ZTc2ZmExOTI5YThjMWE1ODVkZGY0YTliZjY5MCBsZWdhY3ktdHJ1bmsKKzIzNjc0IDJhNGJiN2QxOWI2MDNmZTg1NmQ0ODVmZmMzYzU1NDM0NTg2MDY0ZDYgbGVnYWN5LXRydW5rCisyMzY3NSA0ZGFiNjFmNDg0NTgxNzIxZmIwOWRjYmU2Mjc3OTdiNmQ1ZmRjOWZkIGxlZ2FjeS10cnVuaworMjM2NzYgNjk4YmY3YzIyYmZlYmE2MmNlZWNlNzljNGFlOTg3ODQ4YTUyODg1ZCBsZWdhY3ktdHJ1bmsKKzIzNjc3IDFjYTYyN2M0YzEwNWYyMWZiZDJjMjdlOTU1ZDM5Nzg4MzVjZjViMTggbGVnYWN5LXRydW5rCisyMzY3OCBlNGQwYjFmOTRlY2E4ZDZiMjMyNDU3MjU0NjNkYjhlYzMxYWM3YmE2IGxlZ2FjeS10cnVuaworMjM2NzkgNjIxYzc3MDNlOGI3NTI4ZTlkZjliYTM3MzhiZWJhY2FhNjg2NjNiYiBsZWdhY3ktdHJ1bmsKKzIzNjgwIDU5MDBhOWQ4MDg0ODA5MjY5YzU1YmJiYmM4OTRkMGJlMTU1OTViN2YgbGVnYWN5LXRydW5rCisyMzY4MSBjMTY4ZWRhNzM2ZTQ0YTdjOGI0Y2RhZTM0YjIxNmM3MTE0MTg2Yjg1IGxlZ2FjeS10cnVuaworMjM2ODIgOTAzMjIxODUyYzNhNTljMzE3MDczNmVhMjQzYWUyYTEzOGRlNjAzYSBsZWdhY3ktdHJ1bmsKKzIzNjgzIDRmM2QxMjQwODMwZTZmNTMwMzhhODAyZWRkYTA0MDgwNGQ1YjVhMWYgbGVnYWN5LXRydW5rCisyMzY4NCAzYTE4MTMzZjk5MDY0MzUwNGI0OGUwMDA0YmM1OTE4NGQyYjJmMjM0IGxlZ2FjeS10cnVuaworMjM2ODUgZWU4OTU2N2JjYWI0NDUwYTUxYWRlODg0MTFhNzhhNTI4MTEyYzhhNCBsZWdhY3ktdHJ1bmsKKzIzNjg2IGY2MTg2MDdlOGY5ODQyMGQ2ODg4YzRlNDc3NzJiZTgyMjhhOWE4MDAgbGVnYWN5LXRydW5rCisyMzY4NyA0Njk4YTNlYzVmYThjZmFkOWI0ZDc5NTEzOWU0ZGFkYmI2NDZmNTk2IGxlZ2FjeS10cnVuaworMjM2ODggNmRhMDM3MThjMTMzMGMzYzIyMTE4Nzg3M2FhOWM5Nzg4MTllMmEwYiBsZWdhY3ktdHJ1bmsKKzIzNjg5IDdkMWY0OTBiNmNiMTcyODI0ZjlkZGViMDczZWE0ZGY1MTUyNDlmMDggbGVnYWN5LXRydW5rCisyMzY5MCA1MThlMzBmOTBkMWY3ZDg4NDRlMjcxODhkYWE1OWNjYTU2YzQ2ODJmIGxlZ2FjeS10cnVuaworMjM2OTEgNDcxMmJiNjJjYzI1ZDA1YjJkMGM3NmE5M2NiM2JmNThhZWU4ODkxYSBsZWdhY3ktdHJ1bmsKKzIzNjkyIDYzMmI5ZDNhOGQxYTdiMjkwNmY3YzgyYjE3NDFmY2Q2YjE5NjQyYWEgbGVnYWN5LXRydW5rCisyMzY5MyBiMDI5ODZlOWE2YmU0NzIyNjY0MmI3ZTVlZDY1N2RlMThiYWQ4ZTU0IGxlZ2FjeS10cnVuaworMjM2OTQgNWQ1YWQ5NTFhNmQ2ZTE3MGQ0ZjMzYjY0MjlhNjhlY2NhOGJhOTA5NiBsZWdhY3ktdHJ1bmsKKzIzNjk1IGNlZTBmZTVmY2UxMTVkYTU5NTk4YTg0ZmE5ZThjMjdiM2NlMDVmM2MgbGVnYWN5LXRydW5rCisyMzY5NiA1NjE0MWI4NmE3ZjJjOTVhMTJmNjZkZWVhNDk4MmY3NGE1MzU5Y2IzIGxlZ2FjeS10cnVuaworMjM2OTcgN2Y1MWE0YjdkZWI0NDBlZTJmZDVkNmM0NzNjNGNmMTAxZDE2M2Q1YSBsZWdhY3ktdHJ1bmsKKzIzNjk4IGJhMjg1MDQwOGYwYTI2MGQ1OGQ5NDM2Y2EyNDM0YTRlZjRiZDQ3ZDIgbGVnYWN5LXRydW5rCisyMzY5OSA1MDAwYjVkNGMzMjY1ZjU0MTBlNzc4YjMzYWQ3YzJlMjUzODdiZDRhIGxlZ2FjeS10cnVuaworMjM3MDAgMjAxMThmNDEyOWRlZmRmZTMxOWZlMDg3OTc4MTA3N2ZkY2Q1MGJiNSBsZWdhY3ktdHJ1bmsKKzIzNzAxIDM1ODM5N2I5MDcwZjZhN2VlOTVmZTM5MzQwOTdhMGZkZjFiOTc5YzQgbGVnYWN5LXRydW5rCisyMzcwMiAwOGQ3YTY3NTZiZmVkOTJhODg4YTgwYjNhZjRlYzk3YzQ1NjY3OTFhIGxlZ2FjeS10cnVuaworMjM3MDMgODU1NzFkNWY2NTQ1YjY3YmE2ZWJmODA4N2FmN2E2NDBlYWY4MGUxZCBsZWdhY3ktdHJ1bmsKKzIzNzA0IDliZTJjYzZiOTk1OWQ4MzFjNTFhYjA2ZTA0YjAxMzRjNjk5ZjIyNDYgbGVnYWN5LXRydW5rCisyMzcwNSA1NjI4MzRlZDhiYWJkZjdhZTMxY2I2YjkzMTgxODlmNGY5MTQ0MWFkIGxlZ2FjeS10cnVuaworMjM3MDYgNDY3YWM0NTNjY2MzMmM3ZWI2M2QyYjlkZWRhNWYyODQ3YWNiZjdiMiBsZWdhY3ktdHJ1bmsKKzIzNzA3IDAzNjI0ZDc0ODRmYTA2MDBlMGM0OGZkZWNhNzRhMTg0MjE3ZTc1ZTkgbGVnYWN5LXRydW5rCisyMzcwOCBiYzkwNWExMWMxNDhhNDhiY2I1ZmQ0MGIxMzM1YTUyZDlkNjQ5ZjMwIGxlZ2FjeS10cnVuaworMjM3MDkgMjdhYjAzMjdiMmZjM2E5ZTdhN2JkMDNhOGU4NjNjMzM0NWZmNDkxMiBsZWdhY3ktdHJ1bmsKKzIzNzEwIDg1NTI0NWJiNGQ0Mjc2Y2VmNzhhMmNjZWRkOWVmNmU2M2I1NDY2NjcgbGVnYWN5LXRydW5rCisyMzcxMSAzNTNhM2U5Zjg1MTZjMTU5OWI3OGZkYWEzZTM2ODM0OGNlNTBjYTViIGxlZ2FjeS10cnVuaworMjM3MTIgYjFhODYxNmYxM2U0Y2Q3MjZiZTU1ODAzOThmNzQ0ZTA0YWU5ZDM4ZSBsZWdhY3ktdHJ1bmsKKzIzNzEzIDY5ZTY1ZTczOTFiODE3YmMwNDg0NmI3ZThhMWJmNzA5ODVmNDAyNzAgbGVnYWN5LXRydW5rCisyMzcxNCBiNzI1NjhhMmMxN2NlYzIzMDg5MTE0Y2ExZDI1NGQzZGFkNDVlNmJmIGxlZ2FjeS10cnVuaworMjM3MTUgOTliMmJkMjViYjEyZDQ3YTAxZmMxNDMxNDQ1OTU1NWFlNjE2ZWYyNCBsZWdhY3ktdHJ1bmsKKzIzNzE2IDQxYmVkMWY2ZDI2Y2ViM2E3NTdiM2VhMjEzMzk4YzJmODE1NmYyYmIgbGVnYWN5LXRydW5rCisyMzcxNyA2NGY0YWM2MDZhZTUzMTNkNDI1ZWQ4YTNjMDA4NmNmYWNiMTJhY2M0IGxlZ2FjeS10cnVuaworMjM3MTggNTk4YzAyYWIwNjJkNDNmZmNjNjZmMWRlOTRiNDdjMGMxNjNiNWJkNCBsZWdhY3ktdHJ1bmsKKzIzNzE5IGVjOTU5NjY4NzI5Mjk2M2UzNmU0YmFkNGI3OWQxODg0Mjg1Zjc1ZTYgbGVnYWN5LXRydW5rCisyMzcyMCBiZmY2YzJkNzZmMzM2YzUyZDZkZWI0OGM2NzkxNDMzZWE3YTAzZmJhIGxlZ2FjeS10cnVuaworMjM3MjEgNGY3MWRjZmQwYTkzNzBlZjdiZTQyNmI0Mzk4NzI3NjgxODI3YzcyZSBsZWdhY3ktdHJ1bmsKKzIzNzIyIGE5NjIzNWIyY2E2MjViMzBhNjg2NDZhNjM4NGVhZWFjM2M2OGQ5N2YgbGVnYWN5LXRydW5rCisyMzcyMyBjNjhkMTg1NWRhYTllYTI0ODUxYWFiYzFmMzA5Yzg3NWI5Nzk0ODdiIGxlZ2FjeS10cnVuaworMjM3MjQgZmZiZjk0ZmQ5Y2VmOGUyZjZlODUzMWRhY2UwM2UzMWVlMmFiMDA2MyBsZWdhY3ktdHJ1bmsKKzIzNzI1IDdlNzFlZWJhYjRlYTM5ZTk5ZDYyNmQ3MmNiYjM5NWFhNWU5NzZhNWEgbGVnYWN5LXRydW5rCisyMzcyNiAyZjBjNWFmNGQ1ZWEwN2ZiNTZhMDViNmU2ZDE1YmE0YmRiMWRkNGU0IGxlZ2FjeS10cnVuaworMjM3MjcgY2UxMmJiMTA5N2E0MTY3NTM0ZTQzYzQ2NGY3ZjFlNzY1MWM1M2ZjZSBsZWdhY3ktdHJ1bmsKKzIzNzI4IDk4ZGYwMTE1ZWNmOTAxMmM0NmNlYzk5OWFhOTZjMzdjMWQ2NTMyNWIgbGVnYWN5LXRydW5rCisyMzcyOSBjNzI5MTVkOGFhYzcyODlmODZjZGM4YjMyNDAxNGE0ZmE2ZTVmNDNhIGxlZ2FjeS10cnVuaworMjM3MzAgNjBlMTJmODNkMmQyMjVlM2IxYTg5MmVmMDRmMWI5NmE4NjQ2ZDNlYiBsZWdhY3ktdHJ1bmsKKzIzNzMxIDViNWMxNWEwOTVjYzdhYmI1MTVmNDg3MTU0ZTQ0NGI5ZTk2MjMyMTAgbGVnYWN5LXRydW5rCisyMzczMiBlYmZkODdlODc4ODRlMDZmODAyZTEwZGFhYjJlOTMxODllY2RiZjczIGxlZ2FjeS10cnVuaworMjM3MzMgYzQ2ZTk0ZmQ2OTg2YjZlMGVhNjZmNzhjMDQ0MzUxZTEzODM3ZmJlNCBsZWdhY3ktdHJ1bmsKKzIzNzM0IDg5NjRlZjg0YzkyZjRkMjE3OGJiMzhmZTQxZDFmOWZhMzRjNThlNGIgbGVnYWN5LXRydW5rCisyMzczNSBiYmRjMGFiZmJiMTM5N2ZmNTFiYTk3MzQ3NzJiY2NlNWVmMmQ5OWFlIGxlZ2FjeS10cnVuaworMjM3MzYgZGM3MjA0ZGQyNjg2ZWEzZWNmYjkyOGFkOGVmMDY5NTQzZDI1MjA4OSBsZWdhY3ktdHJ1bmsKKzIzNzM3IDhkNWMwMDBlMGU1YjQ0Mzg4ZjUzMzM5MmJlMjYwOTdjYTM4NWYzYWYgbGVnYWN5LXRydW5rCisyMzczOCBhNWEzMGJhMjg5OWY1N2U5ZGVmNjFmYzc5YjNjNWMyNGM0NmJiNjExIGxlZ2FjeS10cnVuaworMjM3MzkgMmYwOTVjM2UwMDdkZDc3NmQ0NzQ0OWNkODFhNWJjNjZmY2QwOWI2OSBsZWdhY3ktdHJ1bmsKKzIzNzQwIDBjYjI4N2NkNzU0N2E4NDdjNjI0M2VlZDY1NjE0NTVmMjIyNTA1YjYgbGVnYWN5LXRydW5rCisyMzc0MSBjMjM5ODllMjJmZmE1MDExNGZiMTVmZjg4MmRmMzg1MGZiNjMyYzRjIGxlZ2FjeS10cnVuaworMjM3NDIgMDcxY2ZlZThkOGViOWFjMjk2ODNhYWY4MDA0MzdlNDZhODA0MTUxNCBsZWdhY3ktdHJ1bmsKKzIzNzQzIDc2OWRmODVkNzBiYzEzZmYwZGM0MjVlNDNmNDZkNGNlNzRlNzFjNGYgbGVnYWN5LXRydW5rCisyMzc0NCBkZDBjZGQzZGVmZDgzOWY4OGM2YmZlZmExYmIwMGI0ZTA4ZjE3NWQwIGxlZ2FjeS10cnVuaworMjM3NDUgY2Q5NmM0YjAxZmYwZjBhODMxM2VjMDMxZmJkMzYwNGE2ODJiMDFhMCBsZWdhY3ktdHJ1bmsKKzIzNzQ2IDhmNDczMTc5YjA3MzAwOTRmMmE1ODA4OGY0YzBjMmU3YmViNGU0NzkgbGVnYWN5LXRydW5rCisyMzc0NyA1ZDY3ODM1NmM4OTQyOWIyZTRiOTNjYTlmYzRhZjEwYzQ0NjNlZmNkIGxlZ2FjeS10cnVuaworMjM3NDggMWE5NDk0ZjllZGIyNzAyMTdkNjgwMDg0ODgyMDlhMjI1ZmRkOWI5ZSBsZWdhY3ktdHJ1bmsKKzIzNzQ5IDRhZjhkMjRmYTY5MWVlYTFhMGU2YTFmNTAwMTVlZDNlYTlhZTQ0ZDAgbGVnYWN5LXRydW5rCisyMzc1MCA0YmZkYmM4MjMxMGYxYmMzNWE2ZDBiNmU0YWQyYTUyMDQwZjQ5YTY3IGxlZ2FjeS10cnVuaworMjM3NTEgYjY5MjczYmVlMDk1MGNkN2M5MGIyMjMyMDVlZTNjNmU2ZWZiZGQ3NiBsZWdhY3ktdHJ1bmsKKzIzNzUyIGJlNjdiNjZlNWZlZDBmNzI2NmNlZTc5M2QxNmY5ZGFiMGI4NGNjMjUgbGVnYWN5LXRydW5rCisyMzc1MyBlMDlmYjQ4NDg3NjUzNTI4ZmU2NDEyYzNjMzM0NjFhODViMjQ0OGRkIGxlZ2FjeS10cnVuaworMjM3NTQgN2NiZDQwN2JlNmU3ZDNkMTZkNzc4NjQyZWYxMjJhNzAwNjAyMWIyNSBsZWdhY3ktdHJ1bmsKKzIzNzU1IDE0OWE2NWZhNDI3YzM0OTU5YjYyMWRmZmFkNzI1ODZmN2VkY2E4MGMgbGVnYWN5LXRydW5rCisyMzc1NiBiZjRmZjA1ZWFiNTIwN2FkMDY2ZWViMjA1MzE0MTJhOTk1OWQ1ZGUwIGxlZ2FjeS10cnVuaworMjM3NTcgMWQ5ZTY5ZmNmMGY4ZDRmNTE2MjdlZWYyMWU5ZWRjZGQxYmFkMzY4NyBsZWdhY3ktdHJ1bmsKKzIzNzU4IGM4YjBlOTk0NTE1OTlmNWM3NzE3OGIxNjJlYWQ2MzQ1MjNjMWU1ZDAgbGVnYWN5LXRydW5rCisyMzc1OSA2OGZlZmE5ODJjNWMyOTFlOTc5YzdjMjYyNjU2YTVjNTFkMGIwZGYzIGxlZ2FjeS10cnVuaworMjM3NjAgN2NiZDI4ODdmNjBmY2UzZTRhOTQ2OTJhMDkwNTRmZTNmYjE0ODkxNyBsZWdhY3ktdHJ1bmsKKzIzNzYxIGE5YjE5ZGIxODBhMjYwMGIwMjFiM2M2ODFlNmJmYzlkNDM1MzY5ZDMgbGVnYWN5LXRydW5rCisyMzc2MiAyYmM0MTgzZmI1N2U2OWZhMTYwZGMyNDFkNDhlYzg5NGE1MDNmNDk2IGxlZ2FjeS10cnVuaworMjM3NjMgYTBjOGMyZTVhNDRkMDg3MmFjNTIzZjhkOGI5OGY3NTY3NDE0ZjNlYyBsZWdhY3ktdHJ1bmsKKzIzNzY0IGZkZGFjZWZlZWIzNmRmYTI2YjE1MTJhNTcxZWRhMTY4ODgzZmVjYzkgbGVnYWN5LXRydW5rCisyMzc2NSA3MzNjYjI2OGFkMmZiMGI3NDA3Y2NjZjVkODVhMjc5ZmUzNzRiODBjIGxlZ2FjeS10cnVuaworMjM3NjYgNjQyNmE1YWRiZjc3NTNiZjA2YzdjNzVkZDQwYTE2ZGVjZGU0NzdmMCBsZWdhY3ktdHJ1bmsKKzIzNzY3IDg0MzMxYzhkOThhNDFhZGQ5MGQ3YjY3MTRmZjQzZjk4ZjlmZTViYzUgbGVnYWN5LXRydW5rCisyMzc2OCBlMDg2NGFhYzliNmIyNWQyN2ZjMTVkYWY5YzY4OWFlYTk3MzU1MGZkIGxlZ2FjeS10cnVuaworMjM3NjkgOTM4NDFjNWY0NzViMTAwYThjMjU0ZmRmZGE2Mzk3ZDA3NGMyNDU1MSBsZWdhY3ktdHJ1bmsKKzIzNzcwIDk3Yzc1Zjk4MWE5ZTYyNzNkNzNjNmYyZGMxN2IyMjMwYmZmMTA3NWIgbGVnYWN5LXRydW5rCisyMzc3MSAzNjRjMjM4YTY4NzEwZmQ5NDYzMmJkNTA4NjBlMWQ4ZmI1M2E0YjUwIGxlZ2FjeS10cnVuaworMjM3NzIgOGUwYzMxODQ5YzY0OGU3ZDM2ZWZiYmQxY2U3NTgxYmM1ZDQxOWI2MSBsZWdhY3ktdHJ1bmsKKzIzNzczIGRmYzlmMjNjODY1NTM0NTMzMjMxNWRkNzI0YjNhZWE1NzA3NGQzNzMgbGVnYWN5LXRydW5rCisyMzc3NCBiZGM0ODZjNjZkZjA0YmEwZDc0NDkxOTFhNzZlYzk3NmU4YWIzN2RiIGxlZ2FjeS10cnVuaworMjM3NzUgYzEzYTQ3M2NlMWI3ZWRkYmIwOGRmMDhiNjNjZDA0Zjg4OTUwMDU0MiBsZWdhY3ktdHJ1bmsKKzIzNzc2IGRmYjJlZmE1NTk2NzJiODdlZWEwZjU3YjVlNTk2ODUwNjZiNTUwMWEgbGVnYWN5LXRydW5rCisyMzc3NyA2MmIyMDc1ODg4NjZjYzZmNTBlNTUwOGYzYWFmMzFiZTk1YzljYzA5IGxlZ2FjeS10cnVuaworMjM3NzggZjkzOGNkMWJhOTRlYzRlMzI3MzAwNTQwNGUwOWFhYTg1MDAwNmI5ZiBsZWdhY3ktdHJ1bmsKKzIzNzc5IDA2ZjEyNTRkMjI4MDhlYWQxODIwMjNhYTVjNjY0OWQwMDgxYjdlNmIgbGVnYWN5LXRydW5rCisyMzc4MCBkMjExNjBhOTIxNzkxMzg5YzEyODU2ZmIxM2U1MGYzNDliNWMzZmU0IGxlZ2FjeS10cnVuaworMjM3ODEgZDUxZmU1MjBlNWZkYzAyMGMzMjc1ZGJhNDAwMjEwMmJiMjg3NmUxOCBsZWdhY3ktdHJ1bmsKKzIzNzgyIDIzZGM3YmIwYmU0ZmI3Nzg2OGUwNTM5NmYxNTEwMWM5NWUwZTk0ODkgbGVnYWN5LXRydW5rCisyMzc4MyBkMDFjNWYyOTkxNWEyOGM4MzhhNDcyNTI3NTNlMjNmODVmNzg1YjE5IGxlZ2FjeS10cnVuaworMjM3ODQgYmMzYzg0MTk4NzRjNmUxZjM4OWNmNWM4Nzk3ZjIwMTgwMDc3YWFkMCBsZWdhY3ktdHJ1bmsKKzIzNzg1IGNiODdiZDk3Zjc0MGYxNzUxYWZmZTQ4MDFlMjUxYjI5ZDA5MzFmN2YgbGVnYWN5LXRydW5rCisyMzc4NiAzZDEzNDE3YTYzZTBmZDczNWE4NWUyZDFiMDZjOGVlMDcxN2M4ZjAxIGxlZ2FjeS10cnVuaworMjM3ODcgNTRhODM5NjA0NTQwM2MwZTI4N2YyZWNmZDFiMzhhNzBmZDBlMjgxNiBsZWdhY3ktdHJ1bmsKKzIzNzg4IGZkNTYxNDRhOTZlOGZhNjQ0YzVlMjkxODliNjUzOTFlNmE1ZTU5M2YgbGVnYWN5LXRydW5rCisyMzc4OSBjOTQ4YmNiMDQxNWUwYzMyZWE0MTM4NmJmODQ0M2ZkZDA0Y2M5MTkyIGxlZ2FjeS10cnVuaworMjM3OTAgMWYzYzFlODMxZjIxNmE0OWJlNmMwODMyM2E3MzA2MjljZjdlMDk1NyBsZWdhY3ktdHJ1bmsKKzIzNzkxIDNkM2I2YjRjYjc5ZjM5OWIyMmUyMTQ5YTc3MDcyYTkyNjE3M2YyMTUgbGVnYWN5LXRydW5rCisyMzc5MiBjYjMzNGE4YzhkZDIzYTU2NmZkYWQwYmY3YjA0NDVjMTI5ZGFlMmM3IGxlZ2FjeS10cnVuaworMjM3OTMgZGJmZWQzYmYxNjBlZWRhMDNkM2EzMjAxNzk5YTMxYTM1MzVlODQzNiBsZWdhY3ktdHJ1bmsKKzIzNzk0IGYwZTMzYzU3ZTQ2ZTgwMTAxNGQ5NzhkMTBiY2FjY2I0NTZkOWY5MmIgbGVnYWN5LXRydW5rCisyMzc5NSA5Yjg0ZWZiZjZiMGQwYjc3NjczMzJkMjM0YzNlN2U0NmRmNDEyNjMxIGxlZ2FjeS10cnVuaworMjM3OTYgYmMxMzhiYzczY2RkMWMzNTRmNzE5ZTc2MzM2N2E3OTZjMDFhZDMxMSBsZWdhY3ktdHJ1bmsKKzIzNzk3IDRmN2JlZmVjMzViMDE5N2Y0Yjc5MDcyYTU4YTE4OWFlNDI4NzZiZjIgbGVnYWN5LXRydW5rCisyMzc5OCBjMjAwNWJiODc5YjQ2N2Q1NDc5ZmYzMmFjYzI3ZjU4NjQ0Y2M3MzU4IGxlZ2FjeS10cnVuaworMjM3OTkgODBiOGJmYTA0NDA2YmYzZjQ5MTVmN2JhYTJiYzZjNDBmNzEzNDgxNCBsZWdhY3ktdHJ1bmsKKzIzODAwIDRiMTYxNWJmNmViMDlkMzFjNzYyMWM2NWE5ZWY5MTM0MTNlOTM5YjggbGVnYWN5LXRydW5rCisyMzgwMiAwMWFmOTFhZWNjZDQ0NzI1NDI0MTc5ZTI3YWY2ODMxZjM5MzY4OTU5IGxlZ2FjeS10cnVuaworMjM4MDMgZmUxYjZjZTRlYjkzNjM1OTg5MmM0NzBmYzc5NTIyOTc2YTk0NDBlYiBsZWdhY3ktdHJ1bmsKKzIzODA0IDJkNTk5YTM2YjY3YThjMzBjYjk4YTQzZGVmNDljN2VkZjM3ZWQ5YWEgbGVnYWN5LXRydW5rCisyMzgwNSBhZDI2NjIwOTVkNzcyNDY5MWQwYzQ4NGFmZjQ2YzJiZDI5NmQ0ODgwIGxlZ2FjeS10cnVuaworMjM4MDYgZjU2N2I0NTczN2MwZTM0ODBlMjhkMTJmMTEwMjg4M2UwNTIxNmNiOCBsZWdhY3ktdHJ1bmsKKzIzODA3IDI5NDkwMWFiODYzMGI1ZGMwOTcwM2NmYzA3NzA4YTI0NmZhZTRhZTAgbGVnYWN5LXRydW5rCisyMzgwOCBhODk5NWE2ZGU4ZDAwNWU2NjM2NmU3MzE1YzYwZjgzMDk4YWFkNDAyIGxlZ2FjeS10cnVuaworMjM4MDkgNGJhNDU0OGJhOTQxNzk0MGRlMmJiODMzOTdjMTJmM2M5YTYzMTM5NiBsZWdhY3ktdHJ1bmsKKzIzODEwIDM2NzE0Yjk4ZmU1MTIwZTY1MjcxZDgwMzFlN2RhZWM5ZmU1OThjYzggbGVnYWN5LXRydW5rCisyMzgxMSA3M2ExMzk1YTIzNTE2NDkwOTY5YTA0MzFmNmQzMzlkZjE4MTRmNDMyIGxlZ2FjeS10cnVuaworMjM4MTIgYTEyY2NkYmNlOGRhOTNlYmE2NWI4ZmE0ZTQyOWM1MTQ2Nzg5N2M2OCBsZWdhY3ktdHJ1bmsKKzIzODEzIGE1NjQyN2U1YzVlMTcyODRjMjJmOTI3ZWYxY2IzNDJlM2UyMTdlZTQgbGVnYWN5LXRydW5rCisyMzgxNCBkODgyNTQ3NWI4MDA3MmU4ZWE5Yjk4N2ZlODZjYjgzMGI5N2UwMzgyIGxlZ2FjeS10cnVuaworMjM4MTUgNmE1YTEwYTViNTI2NWRkMTNlNjY1MDhiZmEwMWZhMWFjZmU1ZWUxOCBsZWdhY3ktdHJ1bmsKKzIzODE2IGM5NjA4Yzc5MGY2ZjVmYTg1MTM5MTRhMzQ5ZTRlZWE1YzdlOTcxMzQgbGVnYWN5LXRydW5rCisyMzgxNyA2NWRkNjE1N2Y5OTkzNGJhNDEwNzBmODZjOGY2M2VhYzkwZDIwMzRjIGxlZ2FjeS10cnVuaworMjM4MTggNzIyYmIxZmQzMWVhMDk2ZmNlYmYwY2MwMWQxZjg2ZTlkYTNiYjVmMSBsZWdhY3ktdHJ1bmsKKzIzODE5IDAzMzZlZTViNDZkNDIyMmVjMzA3YTRiZGU2ZjdmYjVjMmQ5YWViZDQgbGVnYWN5LXRydW5rCisyMzgyMCA5NDliYTQ3ZThmMzBjYTdmM2Q2MzgyMTljNTM5ZmQxN2NkN2VlMGRmIGxlZ2FjeS10cnVuaworMjM4MjEgODdlNWZlMDU2ZDI5OWY1ZWEyYWFjNTJkOGE3ODkwZDYxNDJlYTc3MSBsZWdhY3ktdHJ1bmsKKzIzODIyIGFlNTA3Y2Y2N2ZiZmM0M2QyZjE5MTg5OTIwMDgxZmM0NzBkMjdkNzkgbGVnYWN5LXRydW5rCisyMzgyMyA0YTI1N2E1OGJlOGJmYjczMzFhZjc2YTZiOTAyOTQ4ZDFmOGQ0MzU5IGxlZ2FjeS10cnVuaworMjM4MjQgZGE4MTEyNWIyYWY4ZWFmMTBiZDEzMmZhYjMwYWU3NjU3MmJkNjM2YSBsZWdhY3ktdHJ1bmsKKzIzODI1IDQ3M2FkYmY1MjE3MTg0OGQyMTczMzE2MTQ4M2EzMGU1NTYwMjg3MjQgbGVnYWN5LXRydW5rCisyMzgyNiBlYzcyYjYzZDI2OWFlYjlhMzI5Mjg0YjAwZDdlNmFiNWVjYzdhNjRjIGxlZ2FjeS10cnVuaworMjM4MjcgZDA2MjFhNjY5YzU2OTBkMDZiZGUyODUwZTZiMzZkNjk1ZDMzNGM0YSByMjJiMS1icmFuY2gKKzIzODI5IGVjMDVhZmFmZTEzYjk1ZDdmNjRhYTUxMmFhYjc2ZTdlMDdjNzgwZjUgcjIyYjEtYnJhbmNoCisyMzgzMCAzNzdiMDlhYzcyNmU3ZWEyZTI2NTg0MjcxYjdhM2RhOGQ2ZmZmYWQzIHJlbGVhc2UyMS1tYWludAorMjM4MzEgOTA1OGU0OWM2YzU3ZDIzN2I5MGJhYzY0MGU4YzUwNGU4MGNjMDJiNCBsZWdhY3ktdHJ1bmsKKzIzODMyIGNlMmEzZjE1NjE1ZjZiYTNhZjcyNzNlYzEzNTMyMjRjYmViOTlhYmIgcjIyYjEtYnJhbmNoCisyMzgzMyA4ZGRkZmZmYjlmMmJiN2U0YzhmN2MxYzkyZTViZjI3NmUyMTUzNjFmIGxlZ2FjeS10cnVuaworMjM4MzQgNmY5OTAyYWNlMThkOGViNmYwYjgwMmJlNjkyNmEzZTM2ODhiZmM2NiBsZWdhY3ktdHJ1bmsKKzIzODM1IDA4ZjE2NWYxMzVhOGE2NDM2MGU0ZDgyMzU5Zjg0NDI1ZGI4NjUzZGYgcmVsZWFzZTIxLW1haW50CisyMzgzNiBjYjhlOGI0MmNkZmJlYjVlMTc0MzA0YzQxZjlhNGY5Y2I4NDc4ZTYxIHIyMmIxLWJyYW5jaAorMjM4MzYgZTlmYWQ1NWVmNzA0ZGJlYmNkZTVlMTRjYjhkYjk2YWY4NGMyMmU1NSByMjJiMS1icmFuY2gKKzIzODM4IDYxODA5YzUxNGFkODA2OWVmMjQzMjM2MjBkNjNjNGVkMmNkNGVjMGYgcmVsZWFzZTIxLW1haW50CisyMzgzOSA4MDVmMTg0YjZkZTA5YTUyOWNhMjAzN2MxNjNkZWE1NzY0ZmZmMmJmIHJlbGVhc2UyMS1tYWludAorMjM4NDAgZDA2NDQ2ZDRlNzhkYTIzNDA4YmY1ODU1YjIzMDhjZjkzOGJhNjViMiByZWxlYXNlMjEtbWFpbnQKKzIzODQxIDcxMTEzNWNlMWU1NGY1ZTc2OTExNTAxMmQxYzlkM2ZkZGMzN2QzMTkgcmVsZWFzZTIxLW1haW50CisyMzg0MiA1NDFmODI1YzdkNjM3Y2VjOWRjZmVjZDI0YmM2ODU2YTkxNjU0N2VkIGxlZ2FjeS10cnVuaworMjM4NDMgYTliYWJhMTZlYmYzOWQxYzk5ODcwMDBkNzdjOGZkZmVlM2ViMWFiNiByZWxlYXNlMjEtbWFpbnQKKzIzODQ0IDVmNDk1MGRkMzdjOGE5YjczYzQyMTZiYTc3OGU0MmExMzE1ZGZhNzUgbGVnYWN5LXRydW5rCisyMzg0NSA1YWY2Yzg5YzhjYjc1ZjMzN2QzMDVlOTc2ODc5MjkwMDM5YjNmNGQ5IGxlZ2FjeS10cnVuaworMjM4NDYgMTUxZTQ1ZTk4YzExZDM1NjMwMTk1N2EzMDBlNTIzZjgxYTIzZDM4YyBsZWdhY3ktdHJ1bmsKKzIzODQ3IDJjYjMyZjdmNzhjMmQxZTRmZDZlZjgxYjI2Y2IyNDdlYTgzZGMwYTIgbGVnYWN5LXRydW5rCisyMzg0OCBjZTg4ZWI0NjVjZTc2YzEzYWQwOWQ5MTFiMGFiMWRkOTFhN2YzOGJhIGxlZ2FjeS10cnVuaworMjM4NDkgOTA1OGJjY2U2OWUzMThjODBkNDRmYTAzYWYyMmVhNWMyYjAyNmY2MCBsZWdhY3ktdHJ1bmsKKzIzODUwIDg0YTU4NmFjZGMwMjM3MzNhYWUzZmUxZGE4ZWUzMTMzYjM3Y2E1M2UgbGVnYWN5LXRydW5rCisyMzg1MSAzNzZlZTE3NGVjZDA3NzQyMTE2OWI4OTAzM2MwNDc3NGU0YjQ1N2JiIGxlZ2FjeS10cnVuaworMjM4NTIgYmYwM2I4ZTNlZjkzYWYxMTUwOTA5ZDhjOTVjYzMzM2NiNDYwMzdlOCBsZWdhY3ktdHJ1bmsKKzIzODUzIDgwYmNjOGI3ZDYxOTBlYjczZTBhMTFmNDFmNjQwNGUzZWFjNDdhNWQgbGVnYWN5LXRydW5rCisyMzg1NCBiNWNhMDY4N2JhNmE4MDk2YjExYmJmOGQ2ZTZlOTVlMGJhY2JmYWFlIGxlZ2FjeS10cnVuaworMjM4NTUgODg3YTkzZjlkNWQ1ZDljYmZhMzhjNGJlYmQyMzI1MDljZjM0ZmUwYSBsZWdhY3ktdHJ1bmsKKzIzODU2IDdkMTI1NzQ4NWFlZjJlN2I4MGY3MWQ3ZmVmYjhiMTBlMDFiYTI4YTQgbGVnYWN5LXRydW5rCisyMzg1NyA5YmQ2MDNkNDM0ZjU1MmFiODMzYjAzMzE1NTU3NTUwODFmN2FhZWMyIGxlZ2FjeS10cnVuaworMjM4NTggMzI1ZDUxM2E1MGJiYThlOTAwYmI2ZmE0MmVhYjI2MDRjYWRlMjJlNCByZWxlYXNlMjEtbWFpbnQKKzIzODU5IGFhZDc2MjUwM2QxMWU4YzI0NDMyNjVmYTk1NDMyZTMwMDNjNzNmYmIgbGVnYWN5LXRydW5rCisyMzg2MCBkMzI5ODQzNWQ4NWI1ODRiNjUwOWZiMDhiYmNjMjc3M2VjZGFmNzYzIGxlZ2FjeS10cnVuaworMjM4NjEgMDUwZWQ4YTIxY2RlNWRkZjNlZmI1YWQ1ZjMzMmU4ZGViNjE0ZTAyMiBsZWdhY3ktdHJ1bmsKKzIzODYyIDkyNDZiNmM3ZTc0MjJiYzZlOTIzNTczYzAyYTIzMzc1NjE5Njk2ODAgbGVnYWN5LXRydW5rCisyMzg2MyA4MmJjZmFjODk2NDI1Y2M4YWZmZDVjNzM2ZDE2ZTgxMmVjMjVjODY3IGxlZ2FjeS10cnVuaworMjM4NjQgMjVkNzY0ZDg4MTQ5MWM3M2QxMDE5OGU0ODI4NGUxZWUyMGE0ZjU1YyBsZWdhY3ktdHJ1bmsKKzIzODY1IDBkNWU2ZmMwNDgxZDYxNGFjZmM5MDI0ZWQzN2RiYzE1YzAzMGE1MDUgbGVnYWN5LXRydW5rCisyMzg2NiBjNGQ5ZDg2NzQ1MDYyZWExZTMyNGIxOTQ3YjE3NzlhODFhNGE5OTBmIGxlZ2FjeS10cnVuaworMjM4NjcgY2E1ZjJmZjgzOTc5MmFjODJlOTViOTlhM2U4ZTUxYjhkMDIzZTIyYSBsZWdhY3ktdHJ1bmsKKzIzODY4IGI0N2UxNWZhNDNlODUxYzM2MDcyYjhmNjg4OGZmMDUxN2NiMmVkNjEgbGVnYWN5LXRydW5rCisyMzg2OSBlYjZiOTUzZWNmN2NhN2VmMzUzYzgyMjk1MzFjMmE3YjkwMTg4MjZkIGxlZ2FjeS10cnVuaworMjM4NzAgZmY1N2ExYTM3MGIzNTAxZjI1MjI2ZTJhZDI2YjZjNzJkYzRjYTQyMCBsZWdhY3ktdHJ1bmsKKzIzODcxIGVlYmRkZDNiOTRhNTMwY2E5MTUwM2E0NWE4ZTZiMjVmMDJlZGYwMDkgbGVnYWN5LXRydW5rCisyMzg3MiA1YzFkZmQ5Mjg3N2Q0NTdkNzUxMWE1Y2Y3ZjQ4YTkyNjFlNzE0ZGIzIGxlZ2FjeS10cnVuaworMjM4NzMgOTAwOWMyNTY5NGQxZmMxYmJjZTU1YTBkYTBkNjBhNzkxMGJiODc0YSBsZWdhY3ktdHJ1bmsKKzIzODc0IDRiNzlkN2Q5MWI0ZjlhMmEzZTkzZWUyOTM4ZDk1NGVkY2I3ZWE2OGYgbGVnYWN5LXRydW5rCisyMzg3NSA3OTQ1NjM5ZGYyNjUwMGNhY2RkZDA0MTY4YWE4ZWM0NGI3YzIxYjc1IGxlZ2FjeS10cnVuaworMjM4NzYgNzM3MDJkN2YxM2IxYjE1OWEzOGVlZTllNzBmZWViOTdmZmQ5NjFhNyBsZWdhY3ktdHJ1bmsKKzIzODc3IDJkOGRiZWJmODFlMDZhMTdjZWY0YmM4ZmRmZjQzZjM2ZDg1NzExY2EgbGVnYWN5LXRydW5rCisyMzg3OCA3ZjNkMGNjMjE4ODk5NmZmMDMxZGI3YTNiZjcyYTk5ODk5OWFmN2NkIGxlZ2FjeS10cnVuaworMjM4NzkgNjg5ZDBiYmM5MWIxMzkyNTkyNzNmNGFjYWJiYWMxMDEzNjc5ZDZhZSByZWxlYXNlMjEtbWFpbnQKKzIzODgwIDgyOGNiMGMyYzQ4MDVkZTMxNGRiMzIwNDQ1NDNkNTM5YjU4ZDI0YjMgbGVnYWN5LXRydW5rCisyMzg4MSA3ZGNjOGEyODEzM2EyMmIwOTQzZTg1MWI1OGJhYjdmOTdhZWU0MmNjIGxlZ2FjeS10cnVuaworMjM4ODIgNzE2YTQwNmU5YjRmYjNkNWE3NDcwOTVmMGRlNGViZDhlOGZjOWQ1YyBsZWdhY3ktdHJ1bmsKKzIzODgzIGJlYTk0MDRjZTYyY2QyNDgzYWNiZDdmMzgxNWViMWJlMDEyZTNkYTAgbGVnYWN5LXRydW5rCisyMzg4NCBiZjRiMzc1MThjMTQ3NzJlYTIzZWFhY2JmMzAwMjczMzM0OTcxYTYyIGxlZ2FjeS10cnVuaworMjM4ODUgNDAzZGQ1OWNhN2Q1ZGYwMTIwMzhkZWM3YjM0OTUwOGVjYWRhYWQ0MSBsZWdhY3ktdHJ1bmsKKzIzODg2IDMwMmExYzAyNWRjNzkyZWE4ODJiOTQwNzAzNGY4NDY4MzQ0YWY4N2EgbGVnYWN5LXRydW5rCisyMzg4NyBhM2Q2YjMxZThiYjlmZGNkZWM0MGQ4MjQ1MDBlZGI1OTBhNTRiYzZlIGxlZ2FjeS10cnVuaworMjM4ODggYjk3NDUyMjliZDEzMmM3MjQ5YTlhZWRkMjI5OTcwZmQ2M2FjZGEzYSBsZWdhY3ktdHJ1bmsKKzIzODg5IDU3YjUxOTY2YTRmMWYwNmYzMDcyZTY5MWQ5OGM3OGM3MDQyNjUxOTUgbGVnYWN5LXRydW5rCisyMzg5MCAwYjFjMTM5NGJlYzYxMTkzYTAyZGE5YjA1NjdmODRhNWYzMzYyYWM4IGxlZ2FjeS10cnVuaworMjM4OTEgZTRmNTEzODI5MmU2NTliZTI2NWZkNzAwYjRhMDk2YTI4NWRkZTlmOSBsZWdhY3ktdHJ1bmsKKzIzODkyIGI2ZjgxOTdmNGRmNzg0YWFhYmE2OGUyOGZlYTNiNDA0ZDY5Y2MwYjMgbGVnYWN5LXRydW5rCisyMzg5MyBhYTU2NDc1NjllZTJhYjM0MTVmYjJkMDgzNmRhMzMxYTMwMzZlOWRiIGxlZ2FjeS10cnVuaworMjM4OTQgNGZiNzcyN2U0ZjQ3NWJlYWMwODQwZWY1YTQxZGE2ZGE1ZTM3MmUwNiBsZWdhY3ktdHJ1bmsKKzIzODk1IDdjMzgxZGQwNzc5Y2E3NmM5ZmIwNjE1NjUyZTg3OTY5YjU2NDJjZGEgbGVnYWN5LXRydW5rCisyMzg5NiAyYzFhNDU4NGE3MDQzMzVlMDU2OWU5OTA1MDY4NjQ0Y2UwOWZlMWU3IGxlZ2FjeS10cnVuaworMjM4OTcgM2QyOTliMTU2NTExMThjYzk4ZmVmMjkzNjg1YjNjOTYyNTliODUyYyBsZWdhY3ktdHJ1bmsKKzIzODk4IDk3YjE4YzA5ZDIyYTJhMzQ2NDE3YTFjMTA3ZjI1ZDg1N2RlNzc1ZmUgbGVnYWN5LXRydW5rCisyMzg5OSAxNTk4NTg4ZWYxYWRiN2U0ZjhkOTQxNmNkNjI1MWU5YTZlNWY3MmE3IGxlZ2FjeS10cnVuaworMjM5MDAgYWNjN2UzYjRkMDQyZmVlNWE3NzQyMzM5ODE0Y2U4N2JhMmM5ZTU2ZiBsZWdhY3ktdHJ1bmsKKzIzOTAxIGU0OTZiODUyMjljNzliZDAyYTljNzZjOTIzNzg4NzdjYTFiYzY4YzcgbGVnYWN5LXRydW5rCisyMzkwMiBkNWIzMWVmMjNjZWJlMzFmMzZiNzEwZWU0NTAzZjRlMjdhNzY1NWUyIGxlZ2FjeS10cnVuaworMjM5MDMgNmM4NGQ1NWFiYjU4YTEzNTdhNzBjODhhZWNjMzlhZjA3NTc2NTVkMCBsZWdhY3ktdHJ1bmsKKzIzOTA0IGZlZDhhMTg4OTRmNWY5YmJkNGM4NWY1MGUzMDUxNTdiZDQxZWRjMWIgbGVnYWN5LXRydW5rCisyMzkwNSA4OTliZWJjODkwNDdlNTA4MGIzMjA5YjQyZDIwODk2ZDVmNTEzNmUwIGxlZ2FjeS10cnVuaworMjM5MDYgMDRmMjgwMWQ5OTc3MGY1OTM0N2NhNWVlNWUxZDlmY2U3MWE5MzljOCBsZWdhY3ktdHJ1bmsKKzIzOTA3IDNmODBjOTFiNWMzY2ZkYjU0ZThhMGY3YmU2ZWFmZjFkN2Q0YjhkZjQgbGVnYWN5LXRydW5rCisyMzkwOCA4YjllMmZiY2FlMWZmY2ZiY2MyNGQ3NTk2MDFiYjVmOGFhYjkwNDAyIGxlZ2FjeS10cnVuaworMjM5MDkgNmYyY2IxODA2OGRkZjkwNjUyZTc0OTk3Njc4M2NjOTIyMmZkNDEzNCBsZWdhY3ktdHJ1bmsKKzIzOTEwIGFhNDZjNjYxODhkMzZjOTU1MDIzZDEyYmQwZGNiOTUyNWZjNzFjMmIgbGVnYWN5LXRydW5rCisyMzkxMSA3MWE5YjA1M2FiNDJiMmNkMmJiNTA3OTg0Y2QwOWI0NWIzYTdkYmRlIGxlZ2FjeS10cnVuaworMjM5MTIgYzgwZGFmY2UxYjc0YTZhZGY5NDMyMzI3YWNlMDlmNTBiNTNiY2M2YSBsZWdhY3ktdHJ1bmsKKzIzOTEzIGFiODMzZDlhMDliOTgwYWYwZGZiOTc3MTcwMDY4NTlmMWIyNTllZjkgbGVnYWN5LXRydW5rCisyMzkxNCBlZjc4ZWM2MDJhNDA2MzgwN2QwOWNmNGZlMDkxYmQ2NGFlMzZlNzE2IGxlZ2FjeS10cnVuaworMjM5MTUgN2M0MWM0ZmJmOWM3M2MyYTc1ZjQzMWUzNzg1NTc1MmY3ODZiYTlmZiBsZWdhY3ktdHJ1bmsKKzIzOTE2IGIwNzg5OTFjYjU2YTNkMDNmMDRjNWQyNDBhMjVlNDcxYWIwMzU3OGYgbGVnYWN5LXRydW5rCisyMzkxNyBjYWJiNTY4YTU1OGIxZTYzNGNlNWUzZjUwMTEyYjU5NzQ4Mjg2ZTUxIGxlZ2FjeS10cnVuaworMjM5MTggZGQ3OGIxYTcxZjNlYWY3MzEyMTVkMjQ4M2VlNWFhNDRlNzA0ZTlkOSBsZWdhY3ktdHJ1bmsKKzIzOTE5IGZlYzk1MGQ4YzI1ZDdiNGZhYjJjOTMxNDhiMjQ2NDhjZWEzMzFlOTUgbGVnYWN5LXRydW5rCisyMzkyMCA1Mjk1N2EyZGZhZmU2OTA0NTk4OTYzMjQyMDNiNGJmYmVkMWMzMGM1IGxlZ2FjeS10cnVuaworMjM5MjEgZWIwMDRjYzAwOGQyNzc2YzhhODEwMTcwYTEzN2I1MzU0ZWIxMWYzMSByZWxlYXNlMjEtbWFpbnQKKzIzOTIyIDhkZWIzYjVmZDdjMTc4OWZiNmQyOWM5ODNhNDhmODQ1MjllYzgzNTIgbGVnYWN5LXRydW5rCisyMzkyMyAyZDNjZWU5ZjE2MzMyMGFjMzQ2MDc4NWQwMzFlZGEzODE2NTRlYmEzIGxlZ2FjeS10cnVuaworMjM5MjQgNzU3YmNmYTIwMWRjMTk4YTQ2Mjc4MjI3YjM5ZDQzMjAyOGRhNzAwOCBsZWdhY3ktdHJ1bmsKKzIzOTI1IGVkZDlkMGIzYzQ3ZWZhZTdmYjIwMTBlMTMzMjkwYjU2ZWFhZjBiN2YgbGVnYWN5LXRydW5rCisyMzkyNiA3MzQ0Njg3YmYyYzBhYjhmZGQ5ZDUwZDcxNzE5OGY3ZjE3NGQ3ZWNjIGxlZ2FjeS10cnVuaworMjM5MjcgZDBlYjIwMzZlY2NhZjI2NGU5NWZhNWFhODdhZjRmZDkyZDRmN2Q0ZSBsZWdhY3ktdHJ1bmsKKzIzOTI4IDM5MzU1NmFkYjI5NTBhMzc3MmI0MWE2NWZjZDg2ZWFiZjFiZGM5YTggbGVnYWN5LXRydW5rCisyMzkyOSBkY2FhMmM4OTQzMGU3OGZlYzExYTdmYWZiODNiOTdhN2E5MjBjZWEyIGxlZ2FjeS10cnVuaworMjM5MzAgY2UxM2FhMzFlMTg5YTA5ODFkYzQ1YzJmMjU2NmMwN2IxNDVhZDIxZSBsZWdhY3ktdHJ1bmsKKzIzOTMxIGMwNWQ0ODk1MjM0YzEwZWI5ZGYxZTMxYTkyODAxMmM2OWRlNzhhNDYgbGVnYWN5LXRydW5rCisyMzkzMiBmNzAwOTE2N2RkNjdjMzhkZDA0YWQyNTYzMDk3NzM2ZDgwOGE4MTE5IGxlZ2FjeS10cnVuaworMjM5MzMgYzQ3OGE1MDkxZjNmZmZiZDVhOTg5MjNjZjk4YmFhYzIxOGJkNzM3NiBsZWdhY3ktdHJ1bmsKKzIzOTM0IDVjZDhjODdhODhhZWQ4MWI0NzRhMGVhZjI3MDE4M2I1MTM2NGYwM2YgbGVnYWN5LXRydW5rCisyMzkzNSAwMzk3YTc1YTViZmRkNWZjZmQyYjE0YmRiYTVhOGE0ZmY1Y2Q1OWRlIGxlZ2FjeS10cnVuaworMjM5MzYgM2NlMDNlMmYwMWVmN2YwMTZmMjQxOGYyZTI3NzQ5MWQ3OGUzOGQxNSBsZWdhY3ktdHJ1bmsKKzIzOTM3IDg4YTI0MmJmYjIzYWIwYTE1ZDk0YWI4MDBkMTc2MjFlOWZjZTAwMTYgbGVnYWN5LXRydW5rCisyMzkzOCA5OGU1ZDkwMWJmZGZkOTIwODgzNDQzM2ZlZjlkMjgwNWE4N2Q4MTA5IGxlZ2FjeS10cnVuaworMjM5MzkgM2U5Yjg1ZGU0NDdiOWE2MDdjNmNlMjk3NGFmY2RkOTliMDkxZjk4NCBsZWdhY3ktdHJ1bmsKKzIzOTQwIDUzNWRjMzY1MGJlY2Y1M2RlYWVjOGNmMDBmY2NkNDZmZTRjMWVhMzcgbGVnYWN5LXRydW5rCisyMzk0MSAzY2ZkNTc4ZjY0OGIyNDhlZGYyMDc4YmRjMWQyNGViMGIyOTA0ZDY3IHJlbGVhc2UyMS1tYWludAorMjM5NDIgM2ZiNDAzZWFlZGUxZTYyN2FlMmYzYzY3YTE5NzA2ZGQ3MTBhYjQ5OSBsZWdhY3ktdHJ1bmsKKzIzOTQzIGQ5NTFjMmRlMDk1Y2FlYzQ5NmViODhkZjUxZDI1MGQ5MmU0YTU5MzkgbGVnYWN5LXRydW5rCisyMzk0NCBhZjlmMjkwMjY0YWZkZDc5M2I0N2MzNzBhNjllMzk3NTdjZDI3YjhmIGxlZ2FjeS10cnVuaworMjM5NDUgYWJhN2E0ODk1ZTRkYWU0OTFjZWIwNDE4MTYyYzkyY2ZiMTI4ZGJiYSBsZWdhY3ktdHJ1bmsKKzIzOTQ2IDc0MThlMGQ1ZmMwMTBmYTE4NzlkMDY2MDc5NTY4YWFmNTg2YjE2ZjMgbGVnYWN5LXRydW5rCisyMzk0NyBhZTk0YjVmN2RkMzBmNTU0MTAxOWNiMWM4NThiNDkyNWJlM2UyMzQ3IGxlZ2FjeS10cnVuaworMjM5NDggZjYxNDgyNWQzMjZhYzI3OGIzYjc5NmQyMTE0YzAwMzMyYTNmNWEzMCBsZWdhY3ktdHJ1bmsKKzIzOTQ5IDYxZThmMDFkZTgyMTI1ODU2M2U0NDdkOWNiYjEyZTdiYWJjYTQyNmYgbGVnYWN5LXRydW5rCisyMzk1MCBlODljMjVjYTZiMjlmNjA1MDY3NmUxZjZiN2NlY2E1M2I1ODM5ZTBjIGxlZ2FjeS10cnVuaworMjM5NTEgZTNjMjRmYzIwYThkYmMwNmM0NDk0Mjg0OGQwY2VlNjkxZDU2NGI3NyBsZWdhY3ktdHJ1bmsKKzIzOTUyIGEwZjFjMmQyYWM5ZTRhMjMwMzMyMzQ5YzQ3ZDcyNTUwYzUzYzVjNGQgbGVnYWN5LXRydW5rCisyMzk1MyBmMzFiMTJhNDI5NTFjZDc1N2YyMmIyMDEwMjVmNWNjNTNiYWIzNzNlIGxlZ2FjeS10cnVuaworMjM5NTQgNTA1ZGQzNGUwZWViZjlmODI4OTM2YjU5NTJhZjdmZjg1Zjg5YWYyZiBsZWdhY3ktdHJ1bmsKKzIzOTU1IDQzM2FlNDgzODcwMzVmMTk2NzNmMWRjNzFkNTcwZDQ1M2NlNGNkOTYgbGVnYWN5LXRydW5rCisyMzk1NiA5OWFkMmE5ZDIwZTFjMTI3OGYwYWNmYTg2OTYyMDYxYTkyYmExOTZhIGxlZ2FjeS10cnVuaworMjM5NTcgMzExYTJhYmVhOGE0N2FjMzJhMzUzNGIxZTU5ZjNiYzc5YTdjNTQwNyBsZWdhY3ktdHJ1bmsKKzIzOTU4IDM2N2NkOGU1ZGY0Nzk0OTRlN2NlMDc1YmMxZjVhNDU0M2YxMDcyNGUgbGVnYWN5LXRydW5rCisyMzk1OSA5OWVlNzE5MTk3YmE3ZWMwYTQwZDM1NzFmOGRkOWQxOWEwOTE3NjQ0IGxlZ2FjeS10cnVuaworMjM5NjAgYTAzMzJhZTg0OGUyNmZiOTZhYzYwMzc5ZWI2MzFkYjNmYmEyYzBhOSBsZWdhY3ktdHJ1bmsKKzIzOTYxIDg2ZmIxOGZhMzQ2ZjhhOGE2OTc4NzQ0ZjI3NmI1ZDQ4ZTVmYjE3NjYgbGVnYWN5LXRydW5rCisyMzk2MiBjM2UwYmQyMDc3NWNjNDlmNDM0NGI1NmMyYTUyYmE0MTNmY2UyYjQzIGxlZ2FjeS10cnVuaworMjM5NjMgMzgzODBkNWYyN2Q0MGIyY2I0NmRjMTViODA0YmU3NDQzMjg2NWFiMiBsZWdhY3ktdHJ1bmsKKzIzOTY0IDY5MDM0MjBmMGE4MjVhY2NlZWY0OThhYzljOGFjNWI5MDc1ZTMwNDEgbGVnYWN5LXRydW5rCisyMzk2NSBkMDIwNjhkMTYzY2ZjZWRlYzEwNjI3OWVhZDI3YjlmYjBhMzhkYjMwIGxlZ2FjeS10cnVuaworMjM5NjYgYWRmNTY1ZjBmOGFlNjA4NWVlODBjYmJlNjBhN2ZhMGFjOGE4NzBjOSBsZWdhY3ktdHJ1bmsKKzIzOTY3IDM5ODEzNWU0MDBjN2Y4M2I1MmQ5NzZhN2I2NGY3ZjNmOWUxYWI1YjEgbGVnYWN5LXRydW5rCisyMzk2OCA2NDhiYzc0YzQ3YWI3MjYyZTNmODFkZDNhOTQ2MTBhZWNkMjJkZTQyIGxlZ2FjeS10cnVuaworMjM5NjkgYjIyOTIwOGEyYTcyNzM4Yjk4ZWZkZDA5MTI0OTZkYmMyYjZiNThmOSBsZWdhY3ktdHJ1bmsKKzIzOTcwIGZhMGJmNmM3OWUwNDJhMDJhZjMzZDgyOGMwODlhMzQ3MDkyOGEzNDYgbGVnYWN5LXRydW5rCisyMzk3MSA1ZGUzYTU5NDcyNTdiYmIxNDQ2NDhkMTM2M2Y0YTNjMDI2MGJhYTBkIGxlZ2FjeS10cnVuaworMjM5NzIgNWY2ODUwZDFmOWU4NTIzOTIxZGRhMWE0OGI5MDk2NDY2ZGMzNzdlYSBsZWdhY3ktdHJ1bmsKKzIzOTczIDRiM2VmYzc1MDEzOTZmYzIwMWQ2Mzg2NDVkNDg4ZGZlYzdkYmRiOWIgbGVnYWN5LXRydW5rCisyMzk3NCBiM2EwMGQzMTY1YmVlMjMwOGUxMjU5MzUyZWI0YzljZWRiYTdhYjJiIGxlZ2FjeS10cnVuaworMjM5NzUgMjkyNWUyN2EyODFjNTIxYTNiZjFhYTE0MzFiNjNkYzk5YWEzOTg3MSBsZWdhY3ktdHJ1bmsKKzIzOTc2IDc5OGY2MTk5N2MwOGQ1ZDJkMDQxZWRiZmQxNzRiYTUxZTgxZjIyMzAgbGVnYWN5LXRydW5rCisyMzk3NyA0MTMzYWJlZjVhYmJkMWEwZmM5YWQ4MzJlNDUyMTVjMTRlMjU5MmQ2IGxlZ2FjeS10cnVuaworMjM5NzkgMTg0YjhiOWEyNjU0Y2JkZmNmY2Y1N2M0NmI3MzY5MjA2YzcyMjQxNCBsZWdhY3ktdHJ1bmsKKzIzOTgwIGU5MTJiNjgzZWQzZTE1MzZmMGI0YzlmNWU2ZTFkM2I1NmEyMGY1NDQgbGVnYWN5LXRydW5rCisyMzk4MSAzMTA0NTBlNzRmMmY1N2RkZmRiYWIyYWU2OGE5MmJiMzVlNDc3NDY1IGxlZ2FjeS10cnVuaworMjM5ODIgYTQ0Y2MwYzIxY2ZlMzE1NDI1ZTM4MGU2NDZjMDFhZDJkMWUzMzMzNyBsZWdhY3ktdHJ1bmsKKzIzOTgzIDI4OTA3NjliMWU2OTY2MjRmNmY5M2QwYTk4MWRjNDFiYmJjNGRlMzUgbGVnYWN5LXRydW5rCisyMzk4NCBhNmE0YmQyZjA2ZDBmOWZlMjg0NzEwODQ0OTc4ZjQ1NmEzZmJmNGFhIGxlZ2FjeS10cnVuaworMjM5ODUgN2Y0MDg5NTE5OTI2ZTVjNWExNDMzMTcyNDRjYjRhZGJkZjNjMTUyNCBsZWdhY3ktdHJ1bmsKKzIzOTg2IDA5MWY5NjU2ZDc5YjM1OTE4ZjkwNDJjYWI2NzhlYWEyMTgyNTFjYTcgbGVnYWN5LXRydW5rCisyMzk4NyA1ZTZmODE4N2JkNDg5M2YzOTU0NTBiMmYxYzM4NDg1ZWY3ODMwN2M3IGxlZ2FjeS10cnVuaworMjM5ODggZGNmNzY5YzEyZDhiNDEyZmJkYjcxNTc5NTIyOTQ1NDRiZGVjZWI1MCBsZWdhY3ktdHJ1bmsKKzIzOTg5IDg0NzE1ZDUyZDk1NGU5ZDUwNzk0N2I1NjViZDAwMGQwYjkzNGViZjYgbGVnYWN5LXRydW5rCisyMzk5MCBjNjM4NDU5MWQ4NDZjZTZhMWIzZDY2YzcyNGExNzM3ZTM1MjM2NGQ5IGxlZ2FjeS10cnVuaworMjM5OTEgNWUzNDdlNGUwNWJmNWVjYzhiMGRhNDIzZmQ0OTM0ZDVhNjhkY2VlNyBsZWdhY3ktdHJ1bmsKKzIzOTkyIGFhZWZjMmYyMWJhZWYxY2UzOWU4MmQwYjM0OTRmY2FhZDYxZjFmYjIgbGVnYWN5LXRydW5rCisyMzk5MyBhY2I4NTRiODk3YmI2MTU0Zjg0OWEzOTBhNjg0MmVhM2RjYjk3MjQwIGxlZ2FjeS10cnVuaworMjM5OTQgNjc2ZjEwNmE1MDAyM2Q0MTBmMjVhMDAzNjFiN2Q0MTIzOGYxMDJmZiBsZWdhY3ktdHJ1bmsKKzIzOTk1IDZhYzQ1MjQ0YzQxZTBhZTdjZDU3NzBjNTg0NDI1MzNmY2QzYzBiZjkgbGVnYWN5LXRydW5rCisyMzk5NiBmMjI0NjMyZDAyNjAzZjFiNjg0MzZlZjQyNjdiOTQ2NWI0NWRjYjhmIGxlZ2FjeS10cnVuaworMjM5OTcgNzEzMDc1MGE2MjIyMmU0NGZjNGIxZWMxYzQ4NGRlMjQ2NzFhOTljYSBsZWdhY3ktdHJ1bmsKKzIzOTk4IDU4N2I3NDg1NGY4YzA1MDQ5MmJlM2E5ZmVlNjA5MTE4YjJjZDFhMTIgbGVnYWN5LXRydW5rCisyMzk5OSBhYmQ3MWU4OTg0MGY3Nzg0MWYwNTQ4ZjZjMmRhZTlhMThmMjcwNDRmIGxlZ2FjeS10cnVuaworMjQwMDAgY2Q4MzVjYWE1MDZjMDkyYjEwNGExZjI2NmZmNTg2MTY0ZWFiN2UzMiBsZWdhY3ktdHJ1bmsKKzI0MDAxIGNkNjAwMDM5YTEyM2UwZjdiNTU3M2FlYTBiMmVkYWY1ZWM5YTMwZTYgbGVnYWN5LXRydW5rCisyNDAwMiA3M2NhYmU2NjRjMTFlYjZiYTdiYjJiNDIxN2Y0YzcwYzZkNTE1ZjliIGxlZ2FjeS10cnVuaworMjQwMDMgODM1OWMxMTg5ZjczMDI1MDQ5ZGY5MWUwZGQwYzYyZWFiNTVkNjJjYyBsZWdhY3ktdHJ1bmsKKzI0MDA0IGIzYjJmYTc2YTM5MjllY2VmMDZjMWI3OTM4MDFlM2E3ZTI4NjY5OGEgbGVnYWN5LXRydW5rCisyNDAwNSA2MzVmYTE0ZWRhNTA5YTgxZWIzNTQyYzk0MGUwNDlmNTE5MDVjNDMzIGxlZ2FjeS10cnVuaworMjQwMDYgYjA2MjgwNDNlNTM3ZGFkNzg0YTUwMWJmMmY2MjY5MGQ5ZjRkZDg3ZiBsZWdhY3ktdHJ1bmsKKzI0MDA3IGZhYTI3MjZkZWEzNzE1NzgzN2M4YjkyOTYyYjIwNmNjMjEzNjAxOGYgbGVnYWN5LXRydW5rCisyNDAwOCBhNzg4NGU3ZWVjYzliMjU4OTM5OTE3MWM5MTU4N2NiMmViMTFjZGM1IGxlZ2FjeS10cnVuaworMjQwMDkgMDBhNTgxYmRlZGViYWYwMjQyZjUxYzlkYWI3ODgwMWU5NWZmNTQ0OCBsZWdhY3ktdHJ1bmsKKzI0MDEwIGM3YWFjNzhlMjNiNDljMzFiZTE5NDczZGRiOWRjYTQxZjg4MTEzYzMgbGVnYWN5LXRydW5rCisyNDAxMSAzYjg3NzQwZDFiYmM4NWE2Mjg4NDQ1NmRkOWUwNDY4MjcyYmJiOWI2IGxlZ2FjeS10cnVuaworMjQwMTIgYWQ0NWQyMmIxOTVkMTNhODI5ZjUyYTQxNDcyOTMzNDFkYWMzNzZlYSBsZWdhY3ktdHJ1bmsKKzI0MDEzIDNlNDYyNTgxOGY1ZmY1OTY0Y2E4ZTljMGFmOGU5MjJkZmVmYzEwNmMgbGVnYWN5LXRydW5rCisyNDAxNCBkNWY2YjRkNTgzODBlYWE1ZDY0YjdlZDkyYmE3OTAxNWMyOTlmYTJmIGxlZ2FjeS10cnVuaworMjQwMTUgN2RhNDE3OTk5NTExMTMwOGY2NTk3ZmYxM2JiNzc3ZTZhNmVmOTRmMCBsZWdhY3ktdHJ1bmsKKzI0MDE2IDIzZDIzMGVmNDE1YmE1NmEzMmIyM2UyZmY2NzIzNTg4ZDBjY2Q0ZTAgbGVnYWN5LXRydW5rCisyNDAxNyA4MzYwZDY0MzI3MDdjNWI4NzQ0M2UwM2QxMzI1NzNjZTYzOTgzODdkIGxlZ2FjeS10cnVuaworMjQwMTggNDYxN2QzZDc3MGM1OTkwZmJiMzBkMDY4Y2NlMTNlODFlNTMwODNlZiBsZWdhY3ktdHJ1bmsKKzI0MDIwIDlmNjI5NTVkZTRjM2ExZTcyYjBkMjEyNDJkMDg0OWNkMDEyOGQwMWYgbGVnYWN5LXRydW5rCisyNDAyMSAwOGRmZDNjMjJmNDFkY2UzYTE0OGI2YzBhMmI4MjI3ZjVjYjU0YWYwIGxlZ2FjeS10cnVuaworMjQwMjIgNzc1OTI2YmNmMDY5MjVmNzFlYjc4MTg2OGU4ZmU1MGYwYmMxNmRiYSBsZWdhY3ktdHJ1bmsKKzI0MDIzIGM4YmEyZGIxYzNjMjRiY2FmMDFkNzU0OTg3M2Y3YmJlNjZhYWUxOGQgbGVnYWN5LXRydW5rCisyNDAyNCA4NTEwOWE2MDk5YjVlMWYyN2I0MzM3NjZiM2QwMmI2MjljMGMwOWJkIGxlZ2FjeS10cnVuaworMjQwMjUgZjJhZjQyY2Y4MjdhYjdlMzk2MTFkYjZkNzY3NDMzMGFkMjdkNTc1NiBsZWdhY3ktdHJ1bmsKKzI0MDI2IGVjZDY0OTMxNDgyYzlmMmU3NTUxNmM5NzZlYjcxNThmZTQ2MzgxYjAgbGVnYWN5LXRydW5rCisyNDAyNyAyNzIzMzY2NDhkMWZmMWUyY2ExZTFkZjc1N2UxOGNiNDE0ZDcyYTVhIGxlZ2FjeS10cnVuaworMjQwMjggMTdmN2M5YzFkNjZhNTE0YWJkODgyMzJkNzcxOWM0YTE3NTQ4ZmZhZiBsZWdhY3ktdHJ1bmsKKzI0MDI5IDgyOGJmMzE3ODgwYTIwNWU5ZTc0MzIwNTdhYWNjMzdmZGJmNGVlY2MgbGVnYWN5LXRydW5rCisyNDAzMCAwNTBmYzUyYWIzZDQxNTI3MjBhMTZkYThjNjQ5ZjIxZGMwZmQwNmU0IGxlZ2FjeS10cnVuaworMjQwMzEgYTRiZjNjNWNjNDVhMmJhMjNjNDdhODg5OTk0OWFlZTBhMGIxOTE0MiBsZWdhY3ktdHJ1bmsKKzI0MDMyIDViMjM2ZjM3N2EyNTg4NzFmZGU2MDZmMjcwMzU3ZjhkMzVlMTE2ZTIgbGVnYWN5LXRydW5rCisyNDAzMyA2YWVhYjM4MDI5MmVkNDY5OWM4MmZmOWFiMGZjMWU2NjE1OWI0NGIwIGxlZ2FjeS10cnVuaworMjQwMzQgMDgzNDEzNjIyNTk1OTdiYTRmZjNjMTI5ZmZjZjFmODliNWIzNDhmMCBsZWdhY3ktdHJ1bmsKKzI0MDM1IDZiMTRkMjllNTMwODk3MDJmMGIxMzU4YTc5OGY4NWJhZmE5NWE4ZTYgbGVnYWN5LXRydW5rCisyNDAzNiA3ODFhZTE3NmJhYzJjMjUyMDA4ZjRlNTFjZTJlN2E5MzI5OGE3OTQ3IGxlZ2FjeS10cnVuaworMjQwMzcgMzdiOGQ5MmUxMmY1MThkYzcwZmExOGJkY2RjN2U2NGNhZjRiM2FhZiBsZWdhY3ktdHJ1bmsKKzI0MDM4IDNhMDdiZDJiMDM4NmUxZjNiMGZmZTg0NGZiODFjMWU5ODNhMmY1NDQgbGVnYWN5LXRydW5rCisyNDAzOSBhNmFmMDA5MzQ3ZTEzMTI4ODY5YzVlZjVkNDg3MDkyN2M4ZWI5OTAyIGxlZ2FjeS10cnVuaworMjQwNDAgYjNmNDhjNWQ2ZTE2NzQ4MjZiM2EzNTk5NWNmYzM2NDE1NTYyNmU4MyBsZWdhY3ktdHJ1bmsKKzI0MDQxIDdiMDU0NmVlNDc4OWVkZDY1NzA1YTBiZjlhOTQyYzA2MDA4ZGMxNWQgbGVnYWN5LXRydW5rCisyNDA0MiA1MjNlYzcwMjE4ZTQ5MGE2ZThiODJlN2NhMGUyMmJjZDJiN2UyNzc2IGxlZ2FjeS10cnVuaworMjQwNDMgZWJhNjNkZDBjMmY1YTkyZGZlNTA0NmM4OTk1NDVjNjgyYmUwMDczZCBsZWdhY3ktdHJ1bmsKKzI0MDQ0IDEyNDRlZTE4YmFlYzMzZjQ2ZjZhMGRlZGUwOTRlZjI4YTlkOGNkNzQgbGVnYWN5LXRydW5rCisyNDA0NSA3NDQxMmU1OWJmZjgyNjEwMDBiNWY2ODQ1NTRhZjkzZjZhODljOGMyIGxlZ2FjeS10cnVuaworMjQwNDYgNzZhODU3NTJkNDUyNGMyNDQ4MGIxZTczNTdiMDMyZWE5MGVjMDcyMSBsZWdhY3ktdHJ1bmsKKzI0MDQ3IDEwNDNlMTBiZTc4MDA5MTIxMDQxMTIxOTgzMDFhNzQ3ZTNjNjIwYjcgbGVnYWN5LXRydW5rCisyNDA0OCA3NDRhMTkyMjBhM2NiNzZmZTMzMGRmMjJhZTA1YWY3MTUxODkxNjllIGxlZ2FjeS10cnVuaworMjQwNDkgYTZiYmEzMWIzY2Q3NzU4MTQyMWRlMGMxNDEzMTUyNGJjOGY0YTJkMiBsZWdhY3ktdHJ1bmsKKzI0MDUwIDU3YzYxYzYyMjRhMmY0YjYwYzcyNzhlNmEzYWEzNWE1MDdhMTQ4NDUgbGVnYWN5LXRydW5rCisyNDA1MiA0YmI2NzUzZTdkNTNlZTU3ZDZkNTY5NTM1ZTFkZmExZGIyMmFlNTA1IGxlZ2FjeS10cnVuaworMjQwNTMgNjExMjNiODYwYjQ1NTZhNGFhN2Q2Y2VkMzkyOTZhMjgyZjNlZTFhMSBsZWdhY3ktdHJ1bmsKKzI0MDU1IGFiMmUzMTU4NDlhN2I2YzdhYTMxNWJmYzg1MWZjZjI1NTM5MWEwMjcgbGVnYWN5LXRydW5rCisyNDA1NiA2MTIyNmRkYWRjOTc1NzIzNjg0YzUzY2ZkMzcxNDU2YmYxZmZjODEwIGxlZ2FjeS10cnVuaworMjQwNTcgYjFkOTAyOWUwOWQxNGQ1MTc3NThiZDAwN2FjYjAyNjdkNWQ3Mjg1YiBsZWdhY3ktdHJ1bmsKKzI0MDU4IGEyYjExZDAwYjY5NzQ2NmMyNzZiOTAzZTg5ZDk5ZTgwMjNhNTMwYTggbGVnYWN5LXRydW5rCisyNDA1OSBhOTAwMmZiMGE3ZDc5ZDNiNGNkY2MxMzE0YTEzYTY2ZTM5YzEwYjNjIGxlZ2FjeS10cnVuaworMjQwNjAgNGRmNjUyN2I3ODgyMjA3ODg4OGY3MGI3NTQxMjU4N2RkMjU4NjRjZCBsZWdhY3ktdHJ1bmsKKzI0MDYxIGZlYjgwNTA5ZmIyMTUwNjE4MzZkYThjZTJjNmVhZDUwMDg1MDI2ZjUgbGVnYWN5LXRydW5rCisyNDA2MiAyNWZlZDFkMDk2MDUzNWUzMTA4NTU1ZWE3ZDk3OTEzMWNjMWJjN2RiIGxlZ2FjeS10cnVuaworMjQwNjMgNDBkZTg0YmM2MmFkMDIxNDhmMDJhYzI2MTdjMTgyNTJjMzlkMGJmNSBsZWdhY3ktdHJ1bmsKKzI0MDY0IDk2MWIyNGY4ZTFkODI5OGY3ZjM1ZDg1YTk2ZTY2N2E0Nzc1MzhjZDIgbGVnYWN5LXRydW5rCisyNDA2NSBjOTFmMTdhNGRjN2JmMjJlOTdhYjAyYjhiYzZkZTE2NTUxMjY2ZTVlIGxlZ2FjeS10cnVuaworMjQwNjYgMmY3YjY5MjZlMzhkZDEyNTU2NDhlOTY5Yjg2N2IwOTIxYWIyN2FkZSBsZWdhY3ktdHJ1bmsKKzI0MDY3IGUwYWYyODJmNWRmYWM0YWI5YzNjNWJmNmVhYjVkNmQ1Y2MyN2M3NjcgbGVnYWN5LXRydW5rCisyNDA2OSA3OWZjYmMzMWEwM2VjOWRlNDM5NWVhNDAzYTQ0YjdiNjE5OWQ3YTU4IGxlZ2FjeS10cnVuaworMjQwNzAgODNhM2UyMWE3Y2MzZjQ3YWIzYjNkYzZjYjFjYWY1N2Y2MmM5ZmNiYiBsZWdhY3ktdHJ1bmsKKzI0MDcxIDczYWJlMGFmN2UwNzBlYWMxNzg3Njg3MTJiZDQxYTQ4Zjk5ZGFhNzcgbGVnYWN5LXRydW5rCisyNDA3MiA5YzIzYWJhYjk2MmRhNTBhZjA2MjE3ZDUxZTNjYjM4ZjlmNGY5ODJiIGxlZ2FjeS10cnVuaworMjQwNzMgZmE5N2M5OTcyZDFiMzhlYjc5MWM0MzUyYzBmZWVhZDYwMGYyM2FkZiBsZWdhY3ktdHJ1bmsKKzI0MDc0IDYxMGE2NDRmZDRjM2FiZjQyYWUyZDNmYzUzMGM5MzcxNTk0NDMyMjQgcmVsZWFzZTIxLW1haW50CisyNDA3NSBlZjhiZDhiZTk4YmViMGI1YTI0MTNkYTYwNWRkZGMxOTcxOTAzNDU2IHJlbGVhc2UyMS1tYWludAorMjQwNzYgZWU3MGZhYzk1MzViNDUwOWI1N2I3ZjMyOWNmMDQzYmFlYzgzNDI2ZCByZWxlYXNlMjEtbWFpbnQKKzI0MDc3IDc1NmI5ZWRmMjU0ZmMyMTNkNGYyMzFhMDllY2Y4YTkzOWNmZGY3ZGEgcmVsZWFzZTIxLW1haW50CisyNDA3OCA1MWVhY2FkYzgxNWEyOTYwNWZlOGQ4MzQzMmU5M2IwMjMzZTk1ODA1IHJlbGVhc2UyMS1tYWludAorMjQwNzkgMTA0MjIzYjMyMjZhNDBhYjNiNzFkNGY0ZWIxNDA4NTdhNGJiMDI4ZiByZWxlYXNlMjEtbWFpbnQKKzI0MDgwIDA2Mjk2NjZlNjVjNTNmOGQ0Y2I0NDgzODFkMTk5MGU5ODMxZmQ1NDIgcmVsZWFzZTIxLW1haW50CisyNDA4MSAwNzZlNWU0OWUyN2QzOTQ2MjdhNmUxYWYwZjQwMTNkMDZhN2Y3MDRjIHJlbGVhc2UyMS1tYWludAorMjQwODIgNDJmMjJlYTZhMGYxMzYxMzczZWViYWQ2NTM5MWNhNTA2ZmE2MWI5YSBsZWdhY3ktdHJ1bmsKKzI0MDgzIDAyNmJmMGFiNjhhNTE1YjRkNzlhMzlmNzc5M2Y0MDBmYzdjZmIzYmYgcmVsZWFzZTIxLW1haW50CisyNDA4NCA0NjRkMjEzZGE4ODhjN2YyZjExNjJjMjFlZTk2NjI3NTI3OWUzODliIHJlbGVhc2UyMS1tYWludAorMjQwODUgODIxZTE0MmUxOWZhNGNkODFiMGEzZWY1NGQzZjRhNWFlNmE0ZjA5OSByZWxlYXNlMjEtbWFpbnQKKzI0MDg2IDZkMzhmYmEwNWYzNTc0ZTgyNzAxYzc0Y2ZhZjY0OGE1ZmVkYjIxYzMgbGVnYWN5LXRydW5rCisyNDA4NyA4ZDRiNjY0MmE2MDRhMDAxYjdjMmM1OWZkZTc0NjdmNGMzZGRlNzU4IHJlbGVhc2UyMS1tYWludAorMjQwODggMTk2NTExNmQxYWVjYTk0NGIxZWI1YjVmMTAyNjE0YzU2ZGQ4NzY0MCByZWxlYXNlMjEtbWFpbnQKKzI0MDg5IGY0ZWZmMzI0N2M2NmFjOWY4MDk4NDBmOGUyNzhkNjU3MTdkMmFkMmIgcmVsZWFzZTIxLW1haW50CisyNDA5MCBlZjFlOWM4YWEzZGRmZGI2ODA0OTE2MjZiNTEzOTk3M2ZhMzlmN2NlIHJlbGVhc2UyMS1tYWludAorMjQwOTEgNTdhYjY1YzJmMTcwNzkxZDZlMGFjNDFiZDlmODU3ZTZlMDA5MTg2YiBsZWdhY3ktdHJ1bmsKKzI0MDkyIDNlMDk4YTk2MzU2MWQ3NzAzNzkyMDg2OWRkZjE2ZTRkNDM2ZDE1NjMgcmVsZWFzZTIxLW1haW50CisyNDA5MyAzYTc0OGNhYTAzYjkxYTE1MGM1YWZiMDgyMWFjYzE3NDhlMzJmMjg5IHJlbGVhc2UyMS1tYWludAorMjQwOTQgOWFkZWQ2MjM1ZDg5MGU5MGEyMzczOGRmZDlkODViMDI5NTg3OWFkZCBsZWdhY3ktdHJ1bmsKKzI0MDk1IDI2MWE3MGMwYWE3OTJjM2I2ODZlNzQ2YmUyMDlkNjc0NjUxMjNmOGMgbGVnYWN5LXRydW5rCisyNDA5NiA1MzQ2YjY5MDZkMWFmODVlOTFhM2Y3MjAzZGJjMzg5YjljZTk3YTg4IGxlZ2FjeS10cnVuaworMjQwOTcgY2E0MThhNWZhNDcxY2I4ZDI1OTczZWFjOWJiMDgzYTRkZTE3YTBkNSBsZWdhY3ktdHJ1bmsKKzI0MDk4IDY1NmMzYzg0ZGViZWY0ZWY3YjljNDc3ZDA1ODllMjk0NWE1MDE5M2QgcmVsZWFzZTIxLW1haW50CisyNDA5OSBjN2FhMzMyYTJmZmFmYjczNDA0ZDU3YzRkMjJlMjc1ZTE4N2FlMDBjIGxlZ2FjeS10cnVuaworMjQxMDAgYjNkOGQyNjE1YjIzYmY0ZjBkYjNiMDhmN2E4NGQyOGE0Mzg1NGVjNCBsZWdhY3ktdHJ1bmsKKzI0MTAxIGRlZjJhMTE5ZDVjZGEzMWE0NmJlYmI2ZWRjNWZiNjVjYzVjYTI0ZWUgbGVnYWN5LXRydW5rCisyNDEwMiAzNzUxMzY2YzJmMzkzMWNhOWRiMjgxMTNkNjdlZDU1YWVmZWU3ZDcxIGxlZ2FjeS10cnVuaworMjQxMDMgOTUyMDExNTMyNTFjYmIwYmY5MzQ1ZmM0ZmI3OWQ3N2ZmZWM1MDU4MSBsZWdhY3ktdHJ1bmsKKzI0MTA0IDZmMjU5ZjdiYmVkODBlNGE1Y2E5ZjMyZDYyZjBhMGJlZGFhMTNjN2IgbGVnYWN5LXRydW5rCisyNDEwNSAxNGRjNjkzYWY1MzIxOTU2OTlhODAzNTgyNGYxOWFhMTNkZjZjMjRlIGxlZ2FjeS10cnVuaworMjQxMDYgNWYyNGIyMGUxMDNkMjMyZDk4NDc5NWM0YmVjMTQzNzU5MGRlNmU4MSBsZWdhY3ktdHJ1bmsKKzI0MTA3IGRhYjUyZGJkMTJhYTE0NDRiZTk3NzM4ZGI4NGU5MjE5ZWFiMzIwZjIgbGVnYWN5LXRydW5rCisyNDEwOCBkMTM5ZWM0OWQyMDRkNzA3ODlmODQyZmU3MWQ3MjEzZWY4ZGNjZTU5IGxlZ2FjeS10cnVuaworMjQxMDkgODYwNDcyODc3ZGRhMTUxMTFiODExYjRkYTQzMGRjOThjYjY4NjgyMSBsZWdhY3ktdHJ1bmsKKzI0MTEwIGIwYzMxMGNkYjk4NjlhZjY5M2UwYmIyZmI2N2NiNjczOWIzZGMwZWYgbGVnYWN5LXRydW5rCisyNDExMSAzZmJkMjUzZGVhNWQ0YTljNmY4NTNmMmI0YmRhNDM3OTg4MzhlMTYwIGxlZ2FjeS10cnVuaworMjQxMTIgYzFlYmMwMjg1YTVlN2QxYjE5YzgwNzkwODBiNmJiYzczNjQyYmEzMyBsZWdhY3ktdHJ1bmsKKzI0MTEzIDk4MWU1NDY4YzliNTMxZmVkNDlkMDAyMzM1YmI1NmMyOTllNDUwODggbGVnYWN5LXRydW5rCisyNDExNCBmMTg3ZDI0MDU2ZjQ4ZDg1NmZhYzQ3YTQyOThjMmE2MjFjYTUwZDllIHJlbGVhc2UyMS1tYWludAorMjQxMTUgZjZjNzQ2MGNjYWY4OTlmMTIzODhmZjhkNDhiMDI4ZWRkNjYyMGE3ZiBsZWdhY3ktdHJ1bmsKKzI0MTE2IDM4MDNhZjlkODc5NjNmOGMyOTdiNDcyNDZmNjFmYjBhZjg1MDFmOTYgbGVnYWN5LXRydW5rCisyNDExNyBlYWNmODFkZjZjNDI3NTZkZmJjMWQ3MzYyOTc5MWU0OGQyMDVhYjdjIGxlZ2FjeS10cnVuaworMjQxMTggOTE2ZjE5MWZjZmY0M2YwNWI2NDk1ZDQwNDU4Y2VkY2JiM2ZjZGY4YyBsZWdhY3ktdHJ1bmsKKzI0MTE5IDhkMTRmNTM0YTVjMjc2ZjY5YzVmYjkwM2E1ZDk2ZTI0MzM0ZDEwNmIgbGVnYWN5LXRydW5rCisyNDEyMCA2OTkwZmU5YzQwZjZhN2EyOGIwZTkwYTI0OTkxM2MyY2ZjMDYzMDAxIGxlZ2FjeS10cnVuaworMjQxMjEgNGFkZTc2YTZiMjQ1YmE3OGRiZWU4NThiZTkwMzdmM2IyYTVkYTIwOCBsZWdhY3ktdHJ1bmsKKzI0MTIyIGUxMGQ5MDcwZTEwNzMyYzExZWMzYWI1M2M0ZWZhZGM0NzE2OWYzNTIgbGVnYWN5LXRydW5rCisyNDEyMyBlYzYzMmE0MWVlMzVkOWI2NDYxMzRkY2FhMThhNTk1MmViODkzMGNhIGxlZ2FjeS10cnVuaworMjQxMjQgZDlhOWQ5MjYyNGRiOTc0MjhhMzRjMmFlZGJkZGU0ZDBmOTU2Zjk3YSBsZWdhY3ktdHJ1bmsKKzI0MTI1IDQwNGFlZWNhNTFlOWM0NTFhMTBiY2MzYTFhZmZiMDU0NDcwMDkyNTggbGVnYWN5LXRydW5rCisyNDEyNiAyOTYyZjAxOTI0Yzk5N2EzNWNmOTJlZWY0Y2FlNjQwZGQ2ZDBkZGU5IGxlZ2FjeS10cnVuaworMjQxMjcgZjM0YThkZjhiYmE0NjAwODhiMWVlOTM0MWM0MzVhOGU3NTQ5OGZmNyBsZWdhY3ktdHJ1bmsKKzI0MTI4IDA1M2RiZDliNThkZjAzYzAwMjMxOTdkODMwOTViYmYwODZlYmM1MWYgbGVnYWN5LXRydW5rCisyNDEyOSA3N2JiMmFlMDY3YzI1OGNkNGE3ZDY2Y2FhOTNkMWEyNzFjZDczYmJmIGxlZ2FjeS10cnVuaworMjQxMzAgMDQ0NGY1NzZjOTJiMTllODFjMjQ1NWRjNjIwNWIxMDQzYzc1NDY4NCBsZWdhY3ktdHJ1bmsKKzI0MTMxIDYzOThkMTA1NWZjZmI5ZGUyY2RkODY1YzhhNzQyMDlhODJlMGM2OTUgbGVnYWN5LXRydW5rCisyNDEzMiA4Y2YxZDkyNjY5MTEzMjhlODNkNmU0ODY5OTJkYWRjZTAwZjk2NzFmIGxlZ2FjeS10cnVuaworMjQxMzMgZDFiM2NhODlkNzhiNDlkYmRjZmNiNWIwOTJkZThlM2YyZjQ5OTdlMyBsZWdhY3ktdHJ1bmsKKzI0MTM0IDI0MTA1ZTk4OWYxNzhmMmY2MDhlNTFkMWRmMGE3ZGJmOTkwMmYyZDQgbGVnYWN5LXRydW5rCisyNDEzNSAxNWM5MjRhMTFhZWNjNGRlNGE2NzhkOTQzOTg3MWNlODRlODA4MGM3IGxlZ2FjeS10cnVuaworMjQxMzYgMGNhZWE1ZmVmYTVjMWM3ZGRlNjhiMTcyNTk4M2FlYWZjNDc4ZjcxMCBsZWdhY3ktdHJ1bmsKKzI0MTM3IDVhNDdiNThhNDRiYjRlNGFiMTNjMWE1NWI2MzgzOTcyZDllYmQ2NTAgbGVnYWN5LXRydW5rCisyNDEzOCBkOWI5YjViNDgxNWI2MjFkY2YzMmIwYzQ2NmE5M2I5YThlZGZjNzhiIGxlZ2FjeS10cnVuaworMjQxMzkgZDZmZjFkYWFlMzk4MTc2NDZlNzhhODRiNDA3Y2U5ODE2ODE0ZTE1NyBsZWdhY3ktdHJ1bmsKKzI0MTQwIDg5NTczNDFmOThmODQ3ZDZmNGQ2M2RlMGQ0NjA3ZTZmNWRlZThhNWEgbGVnYWN5LXRydW5rCisyNDE0MSBmNTQ4MjhlYjhlMDc2ODlhMWY1ZGQ1OTYwYjAxMGY5NzgzZTgxYTg4IGxlZ2FjeS10cnVuaworMjQxNDIgZWJiZGMzOGViMTFjOGE4YmY5ZjE2NWU5NTY4ZWVhMDFjOWI3Yzg2ZCBsZWdhY3ktdHJ1bmsKKzI0MTQzIDQwYTg4OTg5ZDZjYmE0NGU4NTNhZTJlYTA5NTA4NjRhYWMyNTc0NzMgbGVnYWN5LXRydW5rCisyNDE0NCAyZDllNDFhNzJhNjhiMzkyNGE1ZWE3Nzk4NmNjOWIxZTBmZTEwZDc1IGxlZ2FjeS10cnVuaworMjQxNDUgN2JiMzFmYjQ4M2JjODY3YjQ0NzkyYTM5NTk4YzU4NjkzMzI4ODgwYiBsZWdhY3ktdHJ1bmsKKzI0MTQ2IGE4YTY2MTIwYmFkZWRiYWRiZjhiYzE4YjkzNTk2MmZlN2U3YWUyZmYgbGVnYWN5LXRydW5rCisyNDE0NyBmNTc2ZmZkNTc5NjZiNTdkYWJkNjVkNjUyYjcxMjM5YTYyMjliNTY1IGxlZ2FjeS10cnVuaworMjQxNDggN2U4Y2RlNDY0ZGI0MGU5OTI4ZmM4Y2I0MzI1YjY0MGNkYmU2NTdiMyBsZWdhY3ktdHJ1bmsKKzI0MTQ5IDdlMjQ3ZjA4MzdlMjY5NTQ0ZDJiYTg1ODZmODU1NGNkYTZmNjZiN2EgbGVnYWN5LXRydW5rCisyNDE1MCA4MTFhY2UzYzQwZDAxYzJhZWViMGU0M2JlOGY2YjNlYmIxMTkwZmM2IGxlZ2FjeS10cnVuaworMjQxNTEgMTc5Y2QzNzBiNjIxZmEyNGZjMzZjODNjZjI2N2U0N2Q5ZDJiYjgyYyBsZWdhY3ktdHJ1bmsKKzI0MTUyIDI3ODc0Yzg2MDI2ODM3MzExOTE4ZGM2NDFjYzRjYjUwMmRiODRjOTUgbGVnYWN5LXRydW5rCisyNDE1MyBkNTRlMjk0NDg0YjJiZmRiM2IyNzFhMDRjOGIwODYxY2YyM2NmMTAxIGxlZ2FjeS10cnVuaworMjQxNTQgNzMyZWEyMmViNTE4MmZkMzBhMGViMjdmM2MwOGRmZGI2MTZkNTdiZCBsZWdhY3ktdHJ1bmsKKzI0MTU1IDhhNzJlZjZiODExOGQ3YzVhYzc3YTQxZThlNTY5MTE5NjUwMmI3MGUgbGVnYWN5LXRydW5rCisyNDE1NiBlZWY5YmQ4N2ZjYzA3OGQ4ODk2MTFkZjI1OWI3OGUwZjk2MzA5MDgyIGxlZ2FjeS10cnVuaworMjQxNTcgMTk4MTdhNGZhMmI2Y2ZiYmI1NTBhZjdkZGEwODZhMGE3ZjcwZDE5NyBsZWdhY3ktdHJ1bmsKKzI0MTU4IDg5ZDE3MWY2YmM3ZDYzMDU4MjU3MDQ4NzE4NmJkNTE0OTQwMzM3OTkgbGVnYWN5LXRydW5rCisyNDE1OSA2ZWUxOWMxOWIyYzM3M2E4MzYzYjdjNWYwZjBjYTE0MDdlYjg4YzE2IGxlZ2FjeS10cnVuaworMjQxNjAgNWM0MzViNWI1OWRmOTBlZjE1MmZjYjk5Yzc2NDM0YzBlNzY1Zjk5ZSBsZWdhY3ktdHJ1bmsKKzI0MTYxIGE2MGMxZThiMGJiYmViYThmMDgyNWYwOGQxYTY5ZmU5NTFhZGNhZmQgbGVnYWN5LXRydW5rCisyNDE2MiA3ZjU2MWZlOWVkZmMyMjgzYzQ5MmYyYTliODVmNzdhNTY4MGExNmFhIGxlZ2FjeS10cnVuaworMjQxNjMgMGMxNzUxNWIwNWRiOGI3YTJlNDZjZjZhYjIxNzE1YTljNjcyZGVhOSBsZWdhY3ktdHJ1bmsKKzI0MTY0IDJjZDJhZTRkZTMwZDkyMWFiMmY0ZjRjMjQ0ZWM1ZmJhNDVmYTY3MGUgbGVnYWN5LXRydW5rCisyNDE2NSA2NDBmMDI4NGUzMGFiMjk0Y2NhYzU4MzUyNDY4MmJhNzRhODM3ZmNmIGxlZ2FjeS10cnVuaworMjQxNjYgZTIzMTQwZjZmYjkwMzk2ZTMzNDc2YTkyM2E4NDlkMDYxMTNkYjFjZSBsZWdhY3ktdHJ1bmsKKzI0MTY3IDQxZDJkMDBhMzFmMTVkOTE1OGRlNTZkZWNjZGYxYmM0OGRhMDAzY2QgbGVnYWN5LXRydW5rCisyNDE2OCBmNDY3OWY2YTk1OGY5NTRlOTZjZGZkZjk1NjA0MGZjYjg4NTc0NDkwIGxlZ2FjeS10cnVuaworMjQxNjkgZGU0ZjZiMTRkMzgwYWNkMTM1ZmQxN2YyYjM4OTM3NjBmYWZjYTk2YSBsZWdhY3ktdHJ1bmsKKzI0MTcwIDViNjFhMmZmNjk2ZDBmNWE4NjRhNDY0OGUyMmRmN2FhN2EzMDJlZmEgbGVnYWN5LXRydW5rCisyNDE3MSBiNWZlOWE5NDE0ZmNhNjZiOTZmNTcyM2JmNzliODBiNjMwNDk2ZWU3IGxlZ2FjeS10cnVuaworMjQxNzIgYWYzNjczODEyZTMzNjEyYTFhYmJmNWY4ODRjMWNmZDBhYjRhOGFhNiBsZWdhY3ktdHJ1bmsKKzI0MTczIGUxODRiYmQ3MTY3YzNmMDQ3ZjliZDI0MWNmMTA0YjNkOGJjZDI5YjEgbGVnYWN5LXRydW5rCisyNDE3NCBjM2QzZGM4Mjc2NGM5ZjRhMTllMTExMWJjZjM1NDdiYTY5Y2E5MThkIGxlZ2FjeS10cnVuaworMjQxNzUgODcyMmIwYWJlYWM2Mjc4ZWZmYzhlNzYxZjk2N2M3YzI5YmY0MWUzZCBsZWdhY3ktdHJ1bmsKKzI0MTc2IDBiNjMzMmMyYWJhMDFjYWNlNjc2YzQzNmU1YjE5ZTg4NzdhZDA1MDggbGVnYWN5LXRydW5rCisyNDE3NyAzNTg2NDg4NzNhZGVhMmRiZTBiZDZmOTFjMjBhNDc3ZTAzNmE3YTdjIGxlZ2FjeS10cnVuaworMjQxNzggZDNmM2QyMWFjMDRiYzkzNjMyOGQ5MDc2MDgwY2VhNTY5Y2M3Y2QwZiBsZWdhY3ktdHJ1bmsKKzI0MTc5IGJmY2MyZWQ5Y2FiYTI3ZWQ0MDFmMzAzYzVmOWI1Yzg2YmU5N2ZjY2EgbGVnYWN5LXRydW5rCisyNDE4MCBmMmM3ODhhZGJkYmJhZjNiNDU4MTRmMDgyMmFhNWU3NDFhMjZhOWY2IGxlZ2FjeS10cnVuaworMjQxODEgYjBhNmRiYzkwMDQ3MDYzOTg3NGNmMmQ4NGY2MjA4ZGZiNjIwNWYzYyBsZWdhY3ktdHJ1bmsKKzI0MTgyIDYwMjdmZGYxZWJkYTNhYzA5OWFlZTUzZWQ0MDUxMDRjNTQ5YTMxZDkgbGVnYWN5LXRydW5rCisyNDE4MyAzMTZmZmZkODBiMTYxYzhkMjNmNDkxYTMxNzRjYjM4YTdmYWRhOTFlIGxlZ2FjeS10cnVuaworMjQxODQgODBiYWEyN2JmMGVjMzE2NTI3OWY0NTgxNjI1MDY4OTQxZDQ0NDViMCBsZWdhY3ktdHJ1bmsKKzI0MTg1IDY2OWVkZGY0NzBiYWRkNmU3Nzg3M2IyY2NlNjVmMzMxN2FhZTYwYWQgbGVnYWN5LXRydW5rCisyNDE4NiA4MzQ2MjU1Y2NhN2M3YTkxMmY4ZGZmNjk0MGQ1NGQ1ZDNkNGNmMWNkIGxlZ2FjeS10cnVuaworMjQxODcgNTVhMDYwZjQxNzNmNzIwNjZkNjljODA0NDc5YmQyMTA5MjBlNzRkNyBsZWdhY3ktdHJ1bmsKKzI0MTg4IDA2ZDk1YjY4NzdjNDVhYWY5OTBkY2M5YjgwM2RmYTI2NmE2NDU1ODkgbGVnYWN5LXRydW5rCisyNDE4OSBkODhkZDVjMmIyODJiOTUwNjE0NWZhNmU1NmU1MzAyNDU0ZDUzYjZiIGxlZ2FjeS10cnVuaworMjQxOTAgOTMyNTNjNjVkODYzMTE1Y2VmNTU1MDBmYjNhNDkyOWYyZjVkNTMxZCBsZWdhY3ktdHJ1bmsKKzI0MTkxIDIzYTIwOTQ4NGYwMjhlNjYxZTg0ZTM4MjkxNjhjOTg3ODYxMzdhZDUgbGVnYWN5LXRydW5rCisyNDE5MiBiOTg1MGM0NDc1NmIzYzc4YzBiOWFlZWQ1N2U1ZjNjNGNhNzE5OGZhIGxlZ2FjeS10cnVuaworMjQxOTMgMjAwMTQ3MTY1NTZiNmJiYmFhNjgyMzE4YzdlNDI5MzE0NjhiNjY1OCBsZWdhY3ktdHJ1bmsKKzI0MTk0IDdiNTg2NDk0N2JhZjZjYzkzNDg5NTM2NDFhZWM3YzU1MDEyY2IzMDggbGVnYWN5LXRydW5rCisyNDE5NSBiMjFiNDIzMzBlNDAyMTk4OThiNzcxNDRiMTgzZGIzOTU5MTAyYmZhIGxlZ2FjeS10cnVuaworMjQxOTYgOTA4NzFmYTQzZjRlMGFlMDExNDdiNDE3ZTk4NjJhYTAyYTRjZmYxNCBsZWdhY3ktdHJ1bmsKKzI0MTk3IDllODg4NWJiZGJjOTUzMzFiYzRkZDg3MGYxMjYwNzA3NjI1NmYwYTEgbGVnYWN5LXRydW5rCisyNDE5OCA3YTk5MWQwMTJjZDYzMWNhMTIwNDAxZjk5YmJjYjM1NTAyOWFmNjc4IGxlZ2FjeS10cnVuaworMjQxOTkgOThkYmIwNzljNWQ0OGMxYzljN2M5YThkNDIzZjQ3NDVhODRkNTUxNSBsZWdhY3ktdHJ1bmsKKzI0MjAwIDIxZmE3NTc5MDgyMjIzYzc2NTE0YjI5ZmEwMmRlMmJjYzBlNjdlMzYgbGVnYWN5LXRydW5rCisyNDIwMSBlZTE0MzdmNWRlMDMzMjg4OWQ1ZTgzNGVlN2Y0MDVmMGU4NjQxNWE2IGxlZ2FjeS10cnVuaworMjQyMDIgN2NlZGJmYWM3NDZiOTc3M2QyNDk5ZDU3NDdiYTI3M2Y1ZjE5MWQ2MyBsZWdhY3ktdHJ1bmsKKzI0MjAzIDVjMDJkMjE1YTM4ZGI5MDI2ODQxY2FlMTUzMDA5ZWM5NDIzN2VhZmYgbGVnYWN5LXRydW5rCisyNDIwNCAyYjVkMzMyOWQ3ZTJhNGJlOTNjOTIyN2U2NjdlYzRmNDkwYjkzYzhhIGxlZ2FjeS10cnVuaworMjQyMDUgOWFlZDc0NTI4NjYxZjcyNTM3NmFjNDAyNjNkMGJiZjMwNzQ5ZTI5NSBsZWdhY3ktdHJ1bmsKKzI0MjA2IGZhN2UwZDAwYzgyOGU0NWU0NmU5YTc1OTgwZWNjMTA1M2I2ZGYxODUgbGVnYWN5LXRydW5rCisyNDIwNyBjZDYwNmE1ODQ5MDNlNDgxNWVmYmRiNTA1MjkzMWQ3ZTI4ZWIwNjQ3IGxlZ2FjeS10cnVuaworMjQyMDggMTk3NTA1ZTY3NTJhMjU0ZGE4YjU0MzAwZjVmYzlmYmUzZTEyYTg0OCBsZWdhY3ktdHJ1bmsKKzI0MjA5IGVjY2U1ZDdkYTYwN2RlNGFmMjkzY2U0ZTM5NWYxMjE2YzBlOWZlMmIgbGVnYWN5LXRydW5rCisyNDIxMCBiYTk0NTVmYzRjOGIwZTI1YjJkYTY0OTUzMzY4ZDgyNjgwMzE5MmZhIGxlZ2FjeS10cnVuaworMjQyMTEgMGI2NDUyMGMyMDBjODhjN2Q0ZTQ1YzAzOTkwZGQ2NmU1Zjg3YThjYiBsZWdhY3ktdHJ1bmsKKzI0MjEyIGUwNTNlNDRmOTY2NmZmOGRhNDY3ZDk5NDM5ZDJjZTE0OWM1OTI3ZjggbGVnYWN5LXRydW5rCisyNDIxMyAxM2ExOGNiZmZkOWM3MGJjYmRjMWQyMDNkMDFmMWJlMTM2N2UwYjg0IGxlZ2FjeS10cnVuaworMjQyMTQgNTQwZTUzMjVmYzZiMDhkYjIyMDQzMTQ1ZTJjNmFiMGU4YzYxZjI1OSBsZWdhY3ktdHJ1bmsKKzI0MjE1IDEzZGY4YjZjMmI4MGM3NTI4MTYyMmRiY2MwMzMzZjY5ZjExNDk5MWQgbGVnYWN5LXRydW5rCisyNDIxNiA0NWM5NTJkMmE2MTEzNTIzM2YyMTc0ZGIwYzg2ZjMzZDJmOTRiYjQwIGxlZ2FjeS10cnVuaworMjQyMTcgNWU3MzVmMTk3Y2E2N2RiZjg2Yzc4Mzk1NzA2M2M1NTI1MzJjMzQ3OSBsZWdhY3ktdHJ1bmsKKzI0MjE4IGQzZGQwYzJhMTc3MWQ4NWZlZmFiNmQ5MmUzOTFlNjc4MTM5MGRkYmIgbGVnYWN5LXRydW5rCisyNDIxOSBlNGQzODBmNWYyOTc2NjQxYjZiNjJmNDg2NjhlMDYzM2U0NjFmODBhIGxlZ2FjeS10cnVuaworMjQyMjAgYzNiMzNlYWQzNTQ2ZWY0MWI5NzQxZmM3ZjMzYjRlYjZlM2Q4MDllMCBsZWdhY3ktdHJ1bmsKKzI0MjIxIDNjNWQwZWVhMWFlMmIyMjhjYTdhOGM4Y2Y2OWQxNDM3NGQ0ZTIxMTcgbGVnYWN5LXRydW5rCisyNDIyMiBlZjEyYzlkZGVmYTcwNTYwM2I5MDM0ZTVhNjczNjI3Yzc3ZDcyYjFlIGxlZ2FjeS10cnVuaworMjQyMjMgYzU1NWYxZTdjNGJlNGQ5M2QzOTg2YTI5ZDI3YzczZTEyODE0ZTQwNyBsZWdhY3ktdHJ1bmsKKzI0MjI0IDliZmMzMWNhODBmMzQyZmEyNDY3ZWExNmEzZDY2OTI2NTVjM2Q1YTQgbGVnYWN5LXRydW5rCisyNDIyNSBkMjdjZThmZTQzZjgzOTkxZjMxNDcyZTRlNzMzZThiZTkzYjM3ZTkwIGxlZ2FjeS10cnVuaworMjQyMjYgYzNiMDgzMTk5NTljNGNhMDlkMmQzNTBjNTk4Y2I5OWUzNjViZjQxOCBsZWdhY3ktdHJ1bmsKKzI0MjI3IDBkMTc2Nzg0NGM0YjcwN2EyNGIwYWY4ZmYxNDFkOGQyMGJkMTY1ZTUgbGVnYWN5LXRydW5rCisyNDIyOCA3NzFiMDI5YmRiOGExODM2Y2NmMGU1YzAyYmY4YjRlOGM0OGJiNDIwIGxlZ2FjeS10cnVuaworMjQyMjkgOWVkZTRkNmNjOWRlOGQ1ZWRmMjAwOWY4NTJhY2VmMTQxMzdjMzY4YyBsZWdhY3ktdHJ1bmsKKzI0MjMwIGMzYjNlMmU0MDAzNWVhMGU3ZTI5ZmFlN2IzZDViMTAyMmY5MzBmZTUgbGVnYWN5LXRydW5rCisyNDIzMSA2MTVhNGY1NjAyNjg1MTA2ODczMmMxNjQxN2VmZjhhMzdhMzQzYTcxIGxlZ2FjeS10cnVuaworMjQyMzIgZjc5Y2ZkMDU0ZjIxYjgxYzllMjM3ZTVlZDA1YmI5ZjI2NDM1NzQ3MiBsZWdhY3ktdHJ1bmsKKzI0MjMzIGNhOGJlYzRiMzM4Mzc0MmNmM2FiZTM4YjExMzc4ZmE1NDdlOTIxZTQgbGVnYWN5LXRydW5rCisyNDIzNCBhMTNkN2NkMGVmN2YyNzUxMWQxNGNmNmIzMjMyOGUxNGQ1MGFjMTk2IGxlZ2FjeS10cnVuaworMjQyMzUgZGE1ZmJjMWViMWQwNWZmOTFjNjE2NGEyNDM0OWQ0NjJhMmE0MTQ2YSBsZWdhY3ktdHJ1bmsKKzI0MjM2IDNkNTIyY2JiN2E4MWYxOTY1YjI3N2I3NTQ4ZTM1YzZhZTUxMGNlZWMgbGVnYWN5LXRydW5rCisyNDIzNyAzMDBiNjhkNjNiOWY0YzI1YmI1YjA2MjNhNzIzNTVjNjg4ZDhiNzliIGxlZ2FjeS10cnVuaworMjQyMzggYTNjNTdlNTliNWE4MTNiZmRmYjRjYTcxNzE1MzVjZjZkZWEzMjk5YiBsZWdhY3ktdHJ1bmsKKzI0MjM5IDNlOWQ2ZTlmYmU1OGY2YTYzNmRjZTk0NzA2NmM5MjAyNTExODRmYWUgbGVnYWN5LXRydW5rCisyNDI0MCA5Y2E3ZTQ2ZmFhMjRiYzI5ODRhOGRmZGRkMTUxNjZjNjg2OGQ3Mjg2IGxlZ2FjeS10cnVuaworMjQyNDEgNTU0NTgxOGY1ODFhODJmNmQ2MzNiMWM2ZTdkOWVjMmQzNjFlODM3MSBsZWdhY3ktdHJ1bmsKKzI0MjQyIDkwYTBmMDk1MThjOGY2ZWYyYjUxZmE0OWRmODU2NzlhYzE0Y2RjY2UgbGVnYWN5LXRydW5rCisyNDI0MyBiYjg3MTYwOTVhODFhNWNkNTU2NTJhY2JjNjFmZWMwZWNhNWRlMGMyIGxlZ2FjeS10cnVuaworMjQyNDQgZjFjZmRjYTczZjg2OTU4NzdjOGJlOWVmOGViMGViNDlhMThmMTRmNSBsZWdhY3ktdHJ1bmsKKzI0MjQ1IGMxZWNhZmQxNTU2MGI1MTliMWU2NDQxOWU1MWVjZWM0YTYxYzI2ZjIgbGVnYWN5LXRydW5rCisyNDI0NiBlMTY3YjgyYzY0NDQwZDgwYzBkY2E3ZjdiNzgyNDZiNDA1ZTU0OTU3IGxlZ2FjeS10cnVuaworMjQyNDcgZWJhOGM3NzFkYjY0Y2I1MDk4YTJhN2IxZjVlOGE2MWM3MDU4MGUwZCBsZWdhY3ktdHJ1bmsKKzI0MjQ4IGNlNjlkNGVlMmZhMDBlMTdhZjY1Y2M4NTcyODk5YzQ2OWY3NjY4ODAgbGVnYWN5LXRydW5rCisyNDI0OSBhYzUxOTE2YmZkYTA3ZTJkODkwYzA5MjkzMWJlMmY0NTQzNDg1ZWE2IGxlZ2FjeS10cnVuaworMjQyNTAgZjE2NzFhNjEwMDc5OTM5NjBhZTNkZTQ3MDA2YmNlNzI0ZmUzZTM3NSBsZWdhY3ktdHJ1bmsKKzI0MjUxIGU3MWNjZmJmMzZiYjhkZWQ2Mjg0NjJkYWY1NDc0OWM5MzU2N2YxMTggbGVnYWN5LXRydW5rCisyNDI1MiAwN2YxZDJjNWRkMDQxYzhkODQxMThmNGI2YTY2Y2E0MGJkOGRhMGZlIGxlZ2FjeS10cnVuaworMjQyNTMgOTVlMzU4NGFiZTQ1NzZlMWRjNDgyYjYyNzQ3ZDFiNzU2MmY3N2IwYiBsZWdhY3ktdHJ1bmsKKzI0MjU0IDQ0ZjNmNWE1YmZlMjQ1ZDc0YWE3ZDA4NmRkNTU5YWEyN2E2ZjAzM2QgbGVnYWN5LXRydW5rCisyNDI1NSA2M2MxNDY2OTUyN2U0OTdkOTA0MWEyZjE5YjEyZjE4ZmRiOGUyNGMyIGxlZ2FjeS10cnVuaworMjQyNTYgNGI5ZTYzY2YwMmE2ZjgyOGM5ZDBjOTAzMWMyZGM1NjU3Y2RkM2QwNSBsZWdhY3ktdHJ1bmsKKzI0MjU3IGIwZGYxZmQ4MThmYzFmNTY1YjFhMjQ1ZTE4YWNiOTBhYTU3NDE3ODIgbGVnYWN5LXRydW5rCisyNDI1OCBiMTYzZTc4NmFjNzRlNGE1NjdlNDEwOGI5MDUxODdjNDBiNzQ5YTJiIGxlZ2FjeS10cnVuaworMjQyNTkgZjcxMWNmNDU4NTI1ZWVkN2NiZjhhMmMwZDE2ZDQ1YWI4ZmY4ZWNhNSBsZWdhY3ktdHJ1bmsKKzI0MjYwIGFhY2U0ZmFmZjE3ZGQ5MjQ1ZWRmYjdmYjUxNGYyZmVmMzI0NDBhMjMgbGVnYWN5LXRydW5rCisyNDI2MSBmOTZlODkxY2YwZTRlZTUyZGI5YjQ0ZDBhZWYxNzhhOTg0NjlhZWRjIGxlZ2FjeS10cnVuaworMjQyNjIgYWMyYmMwN2U4Njk3Zjc2NWVhNTk0OWE2Mzk0ODFjYjAzOWFmZjRjYSBsZWdhY3ktdHJ1bmsKKzI0MjYzIGE4NWEzYzEwYmE0ZGE0YWQ5MGNiMzgxMDk0NzE3Y2UxYTQ1NDE5NjIgbGVnYWN5LXRydW5rCisyNDI2NCAwMWU0N2NlOTYyMDEwZjZjMTRhYWUwYmFhMTJiZWIxZGQwYzI0NWMzIGxlZ2FjeS10cnVuaworMjQyNjUgODE2MjY0YmRhMTM2Y2U2MjE3Zjg1OWYwZjBjODdhZTFmZDdlYzRmZSBsZWdhY3ktdHJ1bmsKKzI0MjY2IDBkMWRlYjQwMjE5ZjlmYzAyODdmY2RmYTE3MTVmMjU1ZGIxYzY3MGEgbGVnYWN5LXRydW5rCisyNDI2NyA1YjU3OGQ0ZDg5MDJiOTViNTIxZGRiZTBiNDg4YTBjYTRjY2U4MDExIGxlZ2FjeS10cnVuaworMjQyNjggZDliNzg1M2EwNDMxYjM2ODQ4ODYzZWVhMmQxNWYwMzg5ZTVjMjhiZSBsZWdhY3ktdHJ1bmsKKzI0MjY5IDNhNTQzYWYxOWM3OTVmYTE5M2Y0ODUyYTI2MjFiZDFlYzAwZDIzNGIgbGVnYWN5LXRydW5rCisyNDI3MCAyMmRmM2VkMTFlMjE5NmRjMmIzOGY0MGU4N2UyYzRlYWIyZTFmMzIxIHIyMmIyLWJyYW5jaAorMjQyNzIgMDkyNDRjNDY4MzBmN2I4OTA4NmJiOGMyZjc0ZDI2Mjk0OGM3OGFjMiBsZWdhY3ktdHJ1bmsKKzI0MjczIDE3NGNjYjAzNWIzZDg1ODkzYmI4MGJhZjg4NTFhZjA5Y2Y4MjY1YzggbGVnYWN5LXRydW5rCisyNDI3NCA1NzBhNTRiYjFhNTk4ODgyYzEwNWI3ZTFjMmRkYjRiMjY5YzExZjg1IHIyMmIyLWJyYW5jaAorMjQyNzUgYzMyOWI4MTFlZTU0OTZiZDU5YzQ4NDkyNDA0NzA0YWUzOGEzNjgyYSByMjJiMi1icmFuY2gKKzI0Mjc2IGYwYjU3NWQ2ZmVhYTcwZGY0MzM5ZTQwNDdjYTc3MzA3ZTliMmMyOGMgbGVnYWN5LXRydW5rCisyNDI3NyA1NTVhOWUwMDE5YTc3OTk2YjkzOWJkOWU3N2M5NmM5ZWJhMDdiNDUwIHIyMmIyLWJyYW5jaAorMjQyNzggNmJmZmQyZTIzMjZhMzE0MTgwNjlmZDI1ODA3N2E4YTg5ZWE1OGRiYiByMjJiMi1icmFuY2gKKzI0Mjc5IDg0YmNhMWVmMTE2OGJjOTdhODJlNTRmN2Q0Nzc0NGRkZDU4ZDVkZGUgbGVnYWN5LXRydW5rCisyNDI4MCAzZTBjY2NjYzRkY2IxZTc3YWFiMWU5NWQ1ZDE4NzM5NzU2ZGJiYjk5IHIyMmIyLWJyYW5jaAorMjQyODEgNDY1YmFiMDdkMmE4ODQ4MDhmNjAwNWQ0OGNkNjM1MjI1OTYxNTMyZCByMjJiMi1icmFuY2gKKzI0MjgxIGY3MTU4MWNlN2EzY2VkNjljMWJiZTVhYjkxMzk5MGE1YzhjNDE2OTQgcjIyYjItYnJhbmNoCisyNDI4MyA5MmQ2ZjZmOTdjNzBjOTRmNjg4N2E1YzMyMzRjODFkYzRlZjQ1ZWU1IGxlZ2FjeS10cnVuaworMjQyODQgMzBlMTNmMGVhNzZiMjFjN2EyNTJjZTQyMzQ2YmEwMjMyMmFjOGIzZCBsZWdhY3ktdHJ1bmsKKzI0Mjg1IDQzNjUzMWIwYWNmODFhMTQ3YmEwN2U2MjcwNDRlZWU4ZWExMzQ1YTMgbGVnYWN5LXRydW5rCisyNDI4NiBmN2I2MTAwNTkzZGNmMTc2OTVjM2RjMzMzNzVkMTI4OGRhNzllMDBjIGxlZ2FjeS10cnVuaworMjQyODcgYmVhOTJjM2Q3N2EzMmE0MTZlNjNiMGVjYjYwNzg5ODEzZGQyOGM4MiBsZWdhY3ktdHJ1bmsKKzI0Mjg4IDM5NGRhNGVmZmJlYzY4ODI4NGMyOGYzMTNmNzRhZDljMDg3MmJiMWQgbGVnYWN5LXRydW5rCisyNDI4OSBkOTE0ZTBmMzlmODM3OGUzMTkzNzYzMGE1NTY2Y2FiY2ExZmUwZDRkIGxlZ2FjeS10cnVuaworMjQyOTAgMWI0ZTJhNzk3NTk2MWEwODlkYTk0MGFiMDkxMDdlMGZmMmQzYjlmMSBsZWdhY3ktdHJ1bmsKKzI0MjkxIDZlMTBhMTQ5OWUyNDIzZDJiNDdkNGY0Y2QyNGI2ZWM3OWZkNmQ0MzQgbGVnYWN5LXRydW5rCisyNDI5MiA5NGZlMTdjNjc3MTU0MDgwMjc5MDYyZTdiNDUxNWE0ZDZiNWIwYTM2IGxlZ2FjeS10cnVuaworMjQyOTMgNjFhMmRmNTY3NDZlZWUzZmRhMWY5OGY4NjljZDIxNzgzZDM0NmQ2MiBsZWdhY3ktdHJ1bmsKKzI0Mjk0IDIyY2VkZWRhMmE3M2NjNTk2YzZmYTdhODMzMDEyOGIzN2FhYjdlODMgcjIyYjItYnJhbmNoCisyNDI5NSBiNWMyZjc5NGQ4MDU5MzcxN2UyZTg3N2Y2MTgwNDk3NGQ5NDc0NzBlIHIyMmIyLWJyYW5jaAorMjQyOTYgMWZkYjg5YThiNjIxOTliYThlNjI4ODE3OWQzZTQ1NGJlOTdjYTBjNiByMjJiMi1icmFuY2gKKzI0Mjk3IDQ0Yzc3ODFkM2YwY2NkNDhjMTE5N2M0OWJhOGE1Njk2ZWM5ZDRiY2IgcjIyYjItYnJhbmNoCisyNDI5OCA0MWVmOTgyYTY0YjFiMWQxOWQ3YWE5OTNlZmRjMGQ2M2ZhMTU2OGY1IHIyMmIyLWJyYW5jaAorMjQyOTkgMTI2ODk1YTM5MmJhNzNmYjk3ODM1N2MzYmRlZWYxY2VhMmY5NWIzZiByMjJiMi1icmFuY2gKKzI0MzAwIDE0NWZhZjI5OGNkY2MxMzI0Y2VjYmViZDVkYjIzNjE1Y2Y2YjQ3ZDggcjIyYjItYnJhbmNoCisyNDMwMSA5NGM4NThmZWFlN2Y4ODYxMGNmM2UzMjdjMDcyNjQxYTg3YjMxNzQxIHIyMmIyLWJyYW5jaAorMjQzMDIgYzUyYmI4NjJkMGY3NzM1NGRhN2M0ZGFmNDdjOTM4MDZmYTUwOTkwYiByMjJiMi1icmFuY2gKKzI0MzAzIDMwYTQwODBiYzMwYjU5MWRjY2JhODMxM2RiYWRhYWY3NDcwM2JjYjYgbGVnYWN5LXRydW5rCisyNDMwNCA0YTlhOWNjMDQxZGVjZTZhMTllMWQwOGIwMGM4Y2YwNzQxZWZjZmM5IGxlZ2FjeS10cnVuaworMjQzMDUgZmUyOTMyN2U0NzFjZTJlNmY0ZjFjNTRkMWYxNTFlN2E4NjcxZDc3MyBsZWdhY3ktdHJ1bmsKKzI0MzA2IDhjMzIxOWE0ZGNkNmRlYjYxOWE4NWM2YjcwNzQ3MTg1OGM2OGJlMTIgbGVnYWN5LXRydW5rCisyNDMwNyA0MWI4ZDY2NzMwZDYxZjRhMWE2MGVhOTk1YjQ0MTkwMTJjZmJlODNhIGxlZ2FjeS10cnVuaworMjQzMDggMzNlYjYzYjg2YTE5MzZlZTQ3NDhjZWEyZmM3MjE1YjUyNWIwNDcwYSBsZWdhY3ktdHJ1bmsKKzI0MzA5IDQ5ZGMxNDRhMTU1NTdjMTdlNmE5MTU3M2M5NGRiMTZmZjY3MDMxYTMgbGVnYWN5LXRydW5rCisyNDMxMCA1N2M3OTFhNWY4MWM3NTg3MmJlZGJlNGJkMDMxOWY3MWVmMzA1Njc3IGxlZ2FjeS10cnVuaworMjQzMTEgMmI2NTBjMjFhNTYzOGQ1OGZhZGU4NzA0YjY3Mjc4ZWNjNTVjY2NiMyBsZWdhY3ktdHJ1bmsKKzI0MzEyIDQyMzY1YjcwZTlkOGI4ZTRlYjUwNGIzMDUwZjQwNjc0NjIwZDliZjQgbGVnYWN5LXRydW5rCisyNDMxMyBmNGQ5ZmEyMDdlNDBlNWIwZWJhZGVlNzI2NDhhMGQzNTFlNTk1ODc0IHIyMmIyLWJyYW5jaAorMjQzMTQgNjJjNjNiYTkwZGYyMTBiYTM2MGE4Zjk3NWY2NjE4MTVlODNlOTc3ZiByZWxlYXNlMjEtbWFpbnQKKzI0MzE1IDBmNDA4MjYxYjNjOGI3YWFiYWMxZDM5YjI1NWQ2OWQ1OWYwZDI4OWYgbGVnYWN5LXRydW5rCisyNDMxNiBhOTY1MzgxMTczMWEwMDNiYTQ4MDFjY2EyZDcwM2JjOTEzMGRlYzIwIGxlZ2FjeS10cnVuaworMjQzMTcgOWY2NmFhZGRmOGQ0MGJmMWEzODIxZjJhZDE5MWY5ZGMzODdmOGU2YyBsZWdhY3ktdHJ1bmsKKzI0MzE4IDdlYmMzZTI5ODNkMTFiMmQ1ZmEzY2M1NjU0OWQ5ZmE5ODBjNTk4ZTMgbGVnYWN5LXRydW5rCisyNDMxOSAxZGFlYmZmMTc3ZWYxMzc3ZTFjYjk5MGUzMmZiZDAxZjlmY2U5NTg4IGxlZ2FjeS10cnVuaworMjQzMjAgZjk1N2QzOTZjODRlNzFkZjIyN2JlZjczMGM2MjEyOGUyYWFlNThlZSBsZWdhY3ktdHJ1bmsKKzI0MzIxIGU3OWZjMjU3YmNhMGU2ZWQxMDc4MWIwN2JhODM3NzY2MTZjYTY0ZWEgbGVnYWN5LXRydW5rCisyNDMyMiBkZWUwZTg2NjY1M2U2ZTQxYjVmNjUxYTIwOTIyMzkwZWJkZDk4YjBkIGxlZ2FjeS10cnVuaworMjQzMjMgM2RmYmJmNDJiZjE2YWU5N2ZiYmQyYTQ2ZWYxM2IxOWIwZmYwYzVlYiBsZWdhY3ktdHJ1bmsKKzI0MzI0IDFlZTc1YmQ0ZWUzNDY4ZDUxN2JjNTE3NWJjN2RmNjE1ODhmN2E4MzYgcjIyYjItYnJhbmNoCisyNDMyNSAxMDllZDY5NjQ4MzJhZGY4N2M5YjA0ZGM0NTYwNjJmNzFlMDFjNGVjIHIyMmIyLWJyYW5jaAorMjQzMjYgYmQyZTg5ZDc3ZDQ1YWRmMTdiZTA3ZjhkNTEyODEyZjM3YWU0YjYxNSByMjJiMi1icmFuY2gKKzI0MzI3IDRjODMyODc4ZGU3NGViNzIxYTVmNmNlZmRjMTZiOWFiNGQ0MjVkMGIgcjIyYjItYnJhbmNoCisyNDMyOCBlM2UzY2Q0N2JhZDVmZDM4M2JjNThiYjIyNTg5MjU4MjhhZjc0MTI4IHIyMmIyLWJyYW5jaAorMjQzMjkgZDIxMDI4ZDVjYzg1MjhjNDY1ZDc4ZDY2ZTI2ZWNmNDRiMTAxODczMSByMjJiMi1icmFuY2gKKzI0MzMwIDQ4MjYwYjBiNTI2ZjY5YTE1YTFkNDcwZDdkYzc2ZDFlZmVhNTc3YjQgcjIyYjItYnJhbmNoCisyNDMzMSBlZTI0YmQwY2FkMjkwM2IxMDg0YWYwYjE4MzM2OTQ0M2Y3MzllNjdmIHJlbGVhc2UyMS1tYWludAorMjQzMzIgYzdlODMzYjNjZDljNWFhYTJmZWY1ZGQyY2I1MjNiMzZkODlmZjE3OCByZWxlYXNlMjEtbWFpbnQKKzI0MzMzIDk3NDYyMTk4MTNmOTk3OTI3ZWVkYzI3YWRlZWM1NTBlNjU4OTJjMWUgcmVsZWFzZTIxLW1haW50CisyNDMzNCAxMWNiM2RlMDgyM2RhOGVjMjhiOGUyNTY0MmQ1NzE1OTU4NzlkMjIyIHJlbGVhc2UyMS1tYWludAorMjQzMzUgMjIzOTUzMDY5YTFhMDlmMDI5NmFmMmE5ZGFmMTBlZDM2OTEwNDAyOSByZWxlYXNlMjEtbWFpbnQKKzI0MzM2IDNmYzA2YzExNDlhNDNkYjJmODY2YTc1MzllZTdhZjljYjBiOTNhYzMgcmVsZWFzZTIxLW1haW50CisyNDMzNyBjNDQ5OTU5NmIxYTQwZmQ4YmNmMWQ4OTY3ODg3MDg4Mjc0YjhkYjYxIGxlZ2FjeS10cnVuaworMjQzMzggMWNmNzdkZjk1ZjQ1MjUzODk3NjU5M2U0ZjliN2VlODFjMzI3ZGM4YSBsZWdhY3ktdHJ1bmsKKzI0MzM5IDU5ODFkZmRkYTg1NzBiNjE3MjNlZDg4Zjk5MTk4OTMyMzA5YmM2N2YgcmVsZWFzZTIxLW1haW50CisyNDM0MCBhZmI3ODlhYWRhMTZmZDhkYTZmZDQyZDkzZTRiZDZlYWU4MWNmNjEzIGxlZ2FjeS10cnVuaworMjQzNDEgNzc4ZTZhODBmY2VlNGY1NWZmNDM2NmQ4OGFkY2ZkYzMyOTU2YjQxNiBsZWdhY3ktdHJ1bmsKKzI0MzQyIGMzZTZlNjNkOWJhMmQ4MjlmMDFjYzY4NjM5NGExOGJiOGZmNjkxNjUgbGVnYWN5LXRydW5rCisyNDM0MyBlNWNmNzRmNzkxNjc5YmFlMTVlYTM0MzQyNjdlMTRkZDMxNDgzNGU2IGxlZ2FjeS10cnVuaworMjQzNDQgMDg0NmI0ZTI1MTdkZjAyOGJjYTJhNGI2ZDJhMDAyZThmZTExOTI1NiBsZWdhY3ktdHJ1bmsKKzI0MzQ1IDcwYjQzMDZmNDg4ZGIxNDYwZWExMDA5N2FmNzgxZTRmNWIxZjJkYjkgbGVnYWN5LXRydW5rCisyNDM0NiBiM2Q2MjdlZTJiNzNmZTFjMDVmNzA2MWEzMmI5NjVhOGZkNzZmNjMyIGxlZ2FjeS10cnVuaworMjQzNDcgZTZlYWY5NTdlYTI2ZjcxNjRkZmI2ZDBhZDA0YzA2MjQ2ZTg4OGI3NCBsZWdhY3ktdHJ1bmsKKzI0MzQ4IGIxMTRiMTAwNzQxOGVlMmUxMGQxNDE2YzBmMWEyMGQ3NjNjZTRiOTUgbGVnYWN5LXRydW5rCisyNDM0OSA4ODFmNDliZWZjYTNjMDFhMDRiYTk4Y2M2ZDA3YTFkMmE0NTIwMjhkIGxlZ2FjeS10cnVuaworMjQzNTAgY2QwYjc1YjE5ZGY3ZDgyNjI3ODJhYTU1NzE1OGNhYjAzNTFmMDA0MSBsZWdhY3ktdHJ1bmsKKzI0MzUxIGZlZDUwNzFkYTk1NzVkNGQ2OTQ0NWY0OGMzMDIxZTQxMWU2YWYyNDYgbGVnYWN5LXRydW5rCisyNDM1MiA3Y2E1YTQ4MWMwZDE3OTU1Njk2M2NkMmRlYzU1NmVmNTdhYzg0N2E5IGxlZ2FjeS10cnVuaworMjQzNTMgMWFlMmFmZTY3NWZkYTdiY2M1MTBjZDk2Y2NmOWVjNTA0Yzc2MzE2NCBsZWdhY3ktdHJ1bmsKKzI0MzU0IGRhMzg4ZTFkNDA0YmZiODNmNTkxMDNiZjI4YzY2MmVkY2MzNzcwYjkgbGVnYWN5LXRydW5rCisyNDM1NSBiN2YzOGU3NjUxNDc5MzM5MzVhYWRlYzZhMDVhZWNkYWRhZjc0MmQ2IGxlZ2FjeS10cnVuaworMjQzNTYgYmNiZGE2MDZkOGM3NTcxOGI0MDI4M2M3YzVmOTgxYzE2MGRjY2I2YSBsZWdhY3ktdHJ1bmsKKzI0MzU3IGQ0NTY5MWE2OTg3ZmU5NjdhMDVmYmJjZjFiN2YwOTdjNDkwY2YzMzggbGVnYWN5LXRydW5rCisyNDM1OCBiYWM5NDJlNjg1ZmFkMmRiYmQyMGQ5ZjYzYWU4MTliMDQyYzgzN2RhIHIyMmIyLWJyYW5jaAorMjQzNTkgMzZjODk3YmNmNGQ3ZTY5NDI0MDExMzg2MjNlZjNjMzlmOTkxMmViYSByMjJiMi1icmFuY2gKKzI0MzYwIGY4ZmRiZmE4ZDVmM2I4MmZlYTk5Zjk1ZWI3OTlmODdkODcyZDg2MzYgbGVnYWN5LXRydW5rCisyNDM2MSAyYzBhOWE1MDg2ZTEwYjk5ZjA0MWQwYjBhY2EyZGI2Y2MxZGRkNDczIGxlZ2FjeS10cnVuaworMjQzNjIgOWRmODJjMTNjNjc1ZjA3NDAwMmQwMjgzMmJmYWQ5OTEzNTk3NjZkZSBsZWdhY3ktdHJ1bmsKKzI0MzYzIGU3NjMwNmVlYTM3MDk3NTBkYjU3NjgzNWVhYzViNjdkMjFjNDJmZmIgbGVnYWN5LXRydW5rCisyNDM2NCA1OTdkMTBjZjc5MzhlOWJiMjY1OTdlMzM2ZjVhZWYyNmQzZDZlMTY4IGxlZ2FjeS10cnVuaworMjQzNjUgMTgwMmE5ZWRiNGVlZjRkOGU2MGVmZDhlMTc1OWM5NDAwYWViMDcyNyBsZWdhY3ktdHJ1bmsKKzI0MzY2IGJjMDJjM2IwOTYyNmEwNDVmNjZiNDc5MGQyYzlmNzdjNjZkZTQ5OWUgbGVnYWN5LXRydW5rCisyNDM2NyBmMTg3NDk2ZmZhZWY5ZDIxZmMyNjM4OTBlOWE1OTdlODkzZTljNzkzIGxlZ2FjeS10cnVuaworMjQzNjggYTJkNzhlMjFhNzg1N2UxNmVjMDdlNDA2OTcxMDEwNDI1YzAyYmI2MSBsZWdhY3ktdHJ1bmsKKzI0MzY5IDUwY2ZiZGRjNjAzN2U5NzUxZThlMTk3ZWE0NzlhN2MxNjJkZDMzMGMgbGVnYWN5LXRydW5rCisyNDM3MCAyMjVjN2RkMTdlMzcyNjc5NDNkM2Q3M2FjZTQ0MDI3YmMzYTlhODBhIGxlZ2FjeS10cnVuaworMjQzNzEgYzljNGM1MjNkY2JmMTI4ZDdhNjVhYjc5YWJkNzJiMmQxNGU3Y2M4ZCBsZWdhY3ktdHJ1bmsKKzI0MzcyIDliMDU5ZjFiMmExZjA1Njk5OGY5OTg2NTEyN2MzMTAyZGMwMWEyZDQgbGVnYWN5LXRydW5rCisyNDM3MyA3ZDNhMjExZWYyMzM2OTlmZWRhZjQ5YWQ5MDk3MjRkODg2MmFhMTljIGxlZ2FjeS10cnVuaworMjQzNzQgYmE2N2I5Yzk3YjY5NmJmNjI1NWQ1YjM5YjBjMmY1YTA3NWE1OWFlNSBsZWdhY3ktdHJ1bmsKKzI0Mzc1IDYzOTJmMDMyMjJlMDEwZTgwMzM4NjcyOGE3OWZkYTg2OGYzNzU4MmUgbGVnYWN5LXRydW5rCisyNDM3NiA2MzljMGEzYWU4ZGNiNDVkYTE2MWYyZDgwZWNkOGQyNzkxMDE2ZDZiIGxlZ2FjeS10cnVuaworMjQzNzcgMzA0YjM0MDIzODc2OTIwZjU3MDQ2NWMyODYyYmVkNDA2ZjQyYzZjMCBsZWdhY3ktdHJ1bmsKKzI0Mzc4IDQ3ZWE3M2ZkN2U2YmEzMGNiOTg2YjAxMzc5MTRkNzM3OTAyYTYwM2EgbGVnYWN5LXRydW5rCisyNDM3OSBkYzY0MWUxMjU2ZjljNGRlODA3MjdlZjZkMjVkYzMwMDIwOWU4MGY5IGxlZ2FjeS10cnVuaworMjQzODAgYzVmYmU5MmUwMmQzYTE1NzAwYzlmNDljNGVkOGEyOWIzNmRmOGE0ZSBsZWdhY3ktdHJ1bmsKKzI0MzgxIDM3OWZjNjZmNGM5NmQwYTFmN2MxNzZmOWJlZGQxMGNkNzM1YjZkMmYgbGVnYWN5LXRydW5rCisyNDM4MiAwMjVhZDI3ZDQyMjRmNDU3MjQ1MTM0ZmNjOWJhZWUwYjM4NmNlNmE1IGxlZ2FjeS10cnVuaworMjQzODMgOGNlZjc1Y2FjYjAxNjA0Y2RmMDAwMGFkZmViNjY4YzY3MWQ0OTg1YSBsZWdhY3ktdHJ1bmsKKzI0Mzg0IDViNDU5Njc3ZmM0NDRmYzliMGMwM2JiYjk2ZGQ1MGFiMThhMGQxOTkgbGVnYWN5LXRydW5rCisyNDM4NSA5NGY1YTlmYTM1ODM0NzUwODE0ZDE2MjlkNjdkNDNkYWViZDk0MGIzIGxlZ2FjeS10cnVuaworMjQzODYgYzhkNzc1YjlmZjkyYTliYjkzOTVkNTBiNmFmNmZhMjE2ODZkYTQzMCBsZWdhY3ktdHJ1bmsKKzI0Mzg3IGQzYjY0MDFjYTI3M2I1ZTRjOGVjZGEzYWE5Mzc3NTg5ZmI4MDQzMzEgbGVnYWN5LXRydW5rCisyNDM4OCA1MmNlODg3ZGIzYzkzMWE2MzhlMWFmNWZjYTVjMjNlOGY3OTc4ZjNkIGxlZ2FjeS10cnVuaworMjQzODkgM2ViMjRmNGM4OGQ1YjE5Y2ZlYTRmOGRlZWM5YmYxNDQ0YWVmYjNiNSBsZWdhY3ktdHJ1bmsKKzI0MzkwIGVhNWIwZjBiNzE2ZjI1NDg0MzI2OGE5MjdhMjg0Yzc0NzY0NGQxYjggbGVnYWN5LXRydW5rCisyNDM5MSA0MWVhMmFiYjc0ZmIzOWMxYmM3NzdiNmVmN2E4YWIxOTY4ZTU3ZDkyIGxlZ2FjeS10cnVuaworMjQzOTIgMzQ3ZWE2OTMwMDJkNTJiODllMzEwZDBiNDU4NjBmM2IxM2ZiNGI1MyBsZWdhY3ktdHJ1bmsKKzI0MzkzIGQ5NWE0ZWM2ODVlMGUzOGEzOTc0ZWVjYmE2OWQ1MDVhMjE2YTQ5OTEgbGVnYWN5LXRydW5rCisyNDM5NCA1ZTI1YzY2OTc0MWNmOTExYTFkYWE5MTE2MWI1NTdiNGYzN2MyYTkzIGxlZ2FjeS10cnVuaworMjQzOTUgNDdmNjUzMzY3NGZkYTJkYjYyNmJkZmI2Mzc0MzM3MzU4NWE5M2NiYiBsZWdhY3ktdHJ1bmsKKzI0Mzk2IDUzMjcwZDI4MWJmMDgzYmQ4ZDE2NGUyODc2ZDQ0NjRmYTYwOWFlNWIgbGVnYWN5LXRydW5rCisyNDM5NyA3ZGUxMzNjYmJhZjE4ZTg2ODNhMDQ4MTMyOTExMmE0NTY0YjQ1YzgwIGxlZ2FjeS10cnVuaworMjQzOTggYzIxNTAzMTNkOWQxM2U2YjUyNmVlY2IxZjUyYTQwZTQ5ZDNiMTg2NSBsZWdhY3ktdHJ1bmsKKzI0Mzk5IGIxMjgwY2JhNzliNTlhYzNmNmI5Y2Q0ZGYxZmM0MzRiNDdkMDkzZTcgbGVnYWN5LXRydW5rCisyNDQwMCBjZGI3MGJmODhkYjFhOGQwYmE2MDBmNDAyNDYyZGExMzNiYTA2MDBkIGxlZ2FjeS10cnVuaworMjQ0MDEgOWJhM2M4Mjk0NmI4OTYxYzE3Njc5ZTZlMDNlYjY5N2VjZjg3ZTRkMCBsZWdhY3ktdHJ1bmsKKzI0NDAyIDgyZDg0MTM2MzZlNzc5MGQ1NWY5ZjhmYjgzYjQ0NzVmZTNmYjhlZTAgbGVnYWN5LXRydW5rCisyNDQwMyA4M2ZjODgzNTBmODBhMjJiOWVjYWM1NzViZGQxMTExNzc0Njk1ZGI3IGxlZ2FjeS10cnVuaworMjQ0MDQgMGZlYWM0NWVlNjYyZWZkMDllNzMwYzY0ODAwYzNmZTUyZTUyNzRmZiBsZWdhY3ktdHJ1bmsKKzI0NDA1IDE4M2YyODU5OTczNjYzMWQ1MDkyMzAzOThmYjI3MTAyNTIxZjkxMTkgbGVnYWN5LXRydW5rCisyNDQwNiBkNmMxODNjYTA5M2M4MDNiNDZlZTg2YjcwNGE5NjNiOWExYTJiZmY2IGxlZ2FjeS10cnVuaworMjQ0MDcgY2VjODAwOTMxYTM3MGQyNWM5NGE5ZmFlMzNhOGZmMzRmNmUyOTEyNSBsZWdhY3ktdHJ1bmsKKzI0NDA4IGU0MjIwMzFiOGZkNzA4NjJlMDU3NzRhMDM2OTg5NTQ2NTdiOGVkZGEgbGVnYWN5LXRydW5rCisyNDQwOSA2NzQ3MTA3MGI5NjY4M2MxZjJlNWYwZjNmYjVmZTA3ZWMyMjk0ODc5IHIyMmIyLWJyYW5jaAorMjQ0MTAgMTE0NzVkZDQ2ZmE3NjEzMjcwNDcyM2UzM2U4ODJiMTY0ZjQ1NDNiMyByMjJiMi1icmFuY2gKKzI0NDExIDM0ZmM1MjM4MzEwZDMzYzQwODUzNGVlZmE4ZjcyMDIxOWRjNzRlOWYgcjIyYjItYnJhbmNoCisyNDQxMiBlOWEwMWUyNGE0YTk3NGY1NGMwYjRiOGRjMWIzNTQ2OThkY2E3OWNiIHIyMmIyLWJyYW5jaAorMjQ0MTMgNjE4NWE2N2IzMDEyODQwOWU5NTM4MTdjZDlkZTE4ZDUyZDA1YjUzMyByMjJiMi1icmFuY2gKKzI0NDE0IDAzYWVhNzU3NWFmYmE2YmY5ODIwZDFiYzQzMjMwOTA5MDA4MmFkYjAgcjIyYjItYnJhbmNoCisyNDQxNSBhNzE4YmE5OTJmMTA0YWYzZDlhYmU3YTllYTk0NWI2Yjk0ZDU1MWQwIHIyMmIyLWJyYW5jaAorMjQ0MTYgYmUzOWZhNTU1OGM1NDVkYTMzZTljODMzZTQ1NzVlMWFjOTdkZjA1MCByMjJiMi1icmFuY2gKKzI0NDE4IGQxOTUxM2UyODkzYzk5ZWZlNWViY2JmMTVlNTE3NmM1MDRiYzBiYzEgbGVnYWN5LXRydW5rCisyNDQxOSAzODI3ZjEzNmUwZDZlNmEwYTE5NTRhYTM5MjViZTk4MjliYmFiMmZhIGxlZ2FjeS10cnVuaworMjQ0MjAgMjcxMWY4ZGIxNjRjZmFiNWU3ZDk0ZGRlZjRjZTIzYzllZTNhM2UzMiBsZWdhY3ktdHJ1bmsKKzI0NDIxIDEyNjY4ZDBhZjhmN2Y1NGY3OTI3ZTg2OWEyY2QwMjg5OTUwM2ZlMmMgbGVnYWN5LXRydW5rCisyNDQyMiAwNTA5NTM5OGY5MzkyZTJlODc0YTNhZWM2OWI5ZGI1NTcyNjNiNjBkIGxlZ2FjeS10cnVuaworMjQ0MjMgYWYxYzVmYjZhNzAzOTJiMzBlYzYxYTFmMWE2MzEzMWFjNGNlMTkwZSBsZWdhY3ktdHJ1bmsKKzI0NDI0IDhkMGMxMDZkOTA5OTI2ODExZTMzYTAzN2ViMzNmMTE2YjM0YjA2MjEgbGVnYWN5LXRydW5rCisyNDQyNSAzOGQwYmQwZmE3ZjJlN2I3MGJiNTNlOWM5ZTk0NTMzOTVhNTlkNjQyIGxlZ2FjeS10cnVuaworMjQ0MjYgZWQzZGNlMTdmYzc5YjdhNmM2ZmZjY2M2YTI5ZGNjNTU1MWJlMDZjNiBsZWdhY3ktdHJ1bmsKKzI0NDI3IGY3ZGIyYzBhMzBmY2U4ZDU5NzNjMjBlOGIxODRkZDllMGM3MTM3YjcgbGVnYWN5LXRydW5rCisyNDQyOCAwZWQ2ZmM3YzFjMDkzZDA2Y2QwOGQ1OGY0NDNhODlmYjZiMzMyMjdlIGxlZ2FjeS10cnVuaworMjQ0MjkgMGE2NzQ2M2Y4YjdkMjI1OWM4ZmYyZmUxZTYxNmU0ZTVlODhjYTVhOSBsZWdhY3ktdHJ1bmsKKzI0NDMwIGNmNzk3MDMzNDA0MThmZDc0ZDk0M2M3ZDgwZjMzNmFiOTY3ZjZhMzMgbGVnYWN5LXRydW5rCisyNDQzMSAyZTZjZTNhNTYyODRiZmVjYTViOGY3YTVhNjAwYzM0NGQ4NzhiMjE2IGxlZ2FjeS10cnVuaworMjQ0MzIgNDkzZjkzMmQ1ODI5YjFkYzhjMTgwMmMxMTgyNDBmZmM2Y2VlZmIyZiBsZWdhY3ktdHJ1bmsKKzI0NDMzIDQ2ODUzMDczODRlYjBkN2ZkMzFhMDg2MGE4YzY1ZDAxNjgwNWRjMDMgbGVnYWN5LXRydW5rCisyNDQzNCA2NzFhODQ4NjZhYzk5OTYzOGVjZjBlYmQ4YTY2MmU4Nzg2YWEyZTAzIGxlZ2FjeS10cnVuaworMjQ0MzUgNjg3YjhjNzE5MmExYTE2NmMwNmQ0N2FiNzBlYzlmZTFjYjBiOTUwMSBsZWdhY3ktdHJ1bmsKKzI0NDM2IDIxODIwNzMyYTExNzFiZmM2NzQ2YjcyYWQzZjlmZjQwNzE3ODJlNGQgbGVnYWN5LXRydW5rCisyNDQzNyAyMWJiNGM0YjdlMjZmNTA4NzA2ZWI3OGI0ZmU1NDhjZDVhYTlhYTM0IGxlZ2FjeS10cnVuaworMjQ0MzggMTdlODdhYTM3Nzk2MmM1ODY0ZDZhZDA5ZjcyNDBmYjgxMDE1ZjczNCBsZWdhY3ktdHJ1bmsKKzI0NDM5IDZiNmE5Y2FlMjU2ZWUzMWMzNGNkODY1ZGViMzAyMTgwOGRjMjRhYTIgbGVnYWN5LXRydW5rCisyNDQ0MCBkZDI4YTRlY2IzN2Y2MDkzOTQ5NTEwZTliZTRlMzg5ZjZkYzJhYWE3IGxlZ2FjeS10cnVuaworMjQ0NDEgMTVmZjUwNDYzMmVkNmE4ZTgxZDc3ZjkwMWUzYTlkZWQ1NDFlMzEzNyBsZWdhY3ktdHJ1bmsKKzI0NDQyIGExM2E0MzkzZjQ1YzAxZWFlYjBjMDI1MTM2ZjE0YzUwN2RhYjMyM2UgbGVnYWN5LXRydW5rCisyNDQ0MyA2ZTM0MTUxYWVmZTY2MzA1M2YxYmNkMjhmZGUwMWFjM2ZkOTc3MjIzIGxlZ2FjeS10cnVuaworMjQ0NDQgNjBlMzZkNTE4NzU4ZjFlMjk0ZmMxNzJiOWNkMmE2NmZjMGU1NjEzMyBsZWdhY3ktdHJ1bmsKKzI0NDQ1IGE5YTg3MzQxYTllN2IwNmVjZDA0OGZkNDA3MDRkNWRkNTU5NDdmY2QgbGVnYWN5LXRydW5rCisyNDQ0NiBlYzg4ZmM0MzAxMjc2MTFlNmE4ODBlYmNhOWY2MGU1Zjc1NDFkZjY0IGxlZ2FjeS10cnVuaworMjQ0NDcgYWJlMTRhYzYyMDI0MjEzNzU1Mzg3ZDYyYzFkMDkwOTY0ODY1Y2FjMyBsZWdhY3ktdHJ1bmsKKzI0NDQ4IDk0MzYzOWI5NDRhYjRlZTMyYjMzZDk0ZmIxNWUwYjdkOGQ4ODMyODQgbGVnYWN5LXRydW5rCisyNDQ0OSAxOTdhOTA0ODliZWVkOWM1ZGFkNTQ3MGZmMTVjNWYwYzhhZjAxYTY1IGxlZ2FjeS10cnVuaworMjQ0NTAgNWI4ZjA3ZTYzOTljMWU2NzAyZTlkYTQyMzUxNTlmMTY4YmFhOTc3ZCBsZWdhY3ktdHJ1bmsKKzI0NDUxIGEyZDAzY2ViYTgwZWJmYTYyNWNjMmE0NTdlOGYxMDQ1MDdmM2ViMDUgbGVnYWN5LXRydW5rCisyNDQ1MiA2NzUwOGEzNTFhYTJiZmJiNjI3OTA0MGJmMDc4Zjk3ZDExYjIwOTJhIGxlZ2FjeS10cnVuaworMjQ0NTMgMWM2YzAyN2ZkMTEwYmY5YjVlM2Y0ZjQ5YTI5MmVmNDhiYzY1MGU4ZiBsZWdhY3ktdHJ1bmsKKzI0NDU0IDUxYjQ1NzJjZjAxM2QxYTZjOGM3OTZiMThlMjBmNTZiODU5ZTczNTAgbGVnYWN5LXRydW5rCisyNDQ1NSA4NDJiMjgwNDIxYmE2MWVjZDRhMTlhZGJmYzA5MWI3MDZkMmU3NjQwIGxlZ2FjeS10cnVuaworMjQ0NTYgNzI5NjZjOWRmOWE5OTg3ZWNjNjMxNDNiMjI5OGE0NTk1OTdmNGIwMSBsZWdhY3ktdHJ1bmsKKzI0NDU3IDk2YTA4ZmQzOGVmODEyNTk4ZDQ1OGZmOGEzNzQxODRmMzViYjkxOWMgbGVnYWN5LXRydW5rCisyNDQ1OCA4N2ZhNmU5YmQ3N2VjM2M3YmQ2MTgxM2RkNmM1MzJjN2IyNTZjYzAxIGxlZ2FjeS10cnVuaworMjQ0NTkgMzRmZTc0MzM1MjZiYTQ3ODViYTZlMjA2ZjAyODQ4ZmFiNzI4MWU0MSBsZWdhY3ktdHJ1bmsKKzI0NDYwIDkwYTBkODAwMzNiNGY3MDM0NmJmZjk2MGZlNzdiMGViOTk2OWVjODUgbGVnYWN5LXRydW5rCisyNDQ2MSBkNDUwOWNmOTNmNTBmOTJjMGE2NzJiMzE4N2QzY2Y4YTQxODhlZmU0IGxlZ2FjeS10cnVuaworMjQ0NjIgOGU3MjQ1NDYwZDMwYmZmNDllOGQ3NTFlMTZhNWZhMjRmZGVjZTUwNCBsZWdhY3ktdHJ1bmsKKzI0NDYzIDBkZDE2ZmQzNmVlOGU1YzRiOTE1NTVjNzZmNDU3MGNjZWQwYmJkZDUgbGVnYWN5LXRydW5rCisyNDQ2NCA5MThiNTczNTRkODc0OGI5NzM0ZDEzYzJhNDQyODU0YTJkMGU5OTQ2IGxlZ2FjeS10cnVuaworMjQ0NjUgYmU1ZjUyOTYyYWRiMzRkMmQ1M2NhMWEwYjI3ZGJlNmUwYjc2Yjk2MSBsZWdhY3ktdHJ1bmsKKzI0NDY2IDExYTk2OWUyZmE1MDUzNTZiMGYwNmQzZDBkY2ZkMGI0Y2EzOTMxNjEgbGVnYWN5LXRydW5rCisyNDQ2NyBhMjBiMzcyZmI5MzljMjIwODQxMDhlYTVhMDIxY2M5YjQzMGNmNTJhIGxlZ2FjeS10cnVuaworMjQ0NjggYmNhNTNhMzdhOGE1YWZlMjQ5OTg2ZTA5Mjk2NjBkMjZlN2U5MjUxZSBsZWdhY3ktdHJ1bmsKKzI0NDY5IDlmZWNiYTUyNjkzNjdhZWI5M2NhNzU1YWY4MWE4NWM5MDQ1MTRlYjcgbGVnYWN5LXRydW5rCisyNDQ3MCBlNTkyNDcyZDU1YTM4ZjBiZGQ0ODhkYTFlZDM5NWU5MzQxYzA1MjE4IGxlZ2FjeS10cnVuaworMjQ0NzEgMWFjYzRiYTczYjlkMTYxNzdjMzZkNzE3NWVjYzBmN2NlZDkwOGQ5NCBsZWdhY3ktdHJ1bmsKKzI0NDcyIDZmYTk2YjMyOWUxNWVlMWMwNWRmNzkzYjZkZWVjMDQwNzM3N2QzZGEgbGVnYWN5LXRydW5rCisyNDQ3MyA3MzM4NGUxM2JkMmFlMTEyYmU0NmRjYTVhOGIxMWZlODljMDgwNDg3IGxlZ2FjeS10cnVuaworMjQ0NzQgOTQzY2E4MWFkMWRmM2Y1Mzk5NzMzM2Y4YjVkYTNjMDg1OTU2YTMwZCBsZWdhY3ktdHJ1bmsKKzI0NDc1IGUxYTY3YmU2YzZlNDBhM2UwYjY1ZjI0YmNmM2ExZDRhNjIxNGMzMDEgbGVnYWN5LXRydW5rCisyNDQ3NiA3YjY4Nzk3MTRiNzQ2NmU0NDlmMTdhMjczMzZlYmNjZGJmNDdlZjRlIGxlZ2FjeS10cnVuaworMjQ0NzcgMjFhYzU1ZmIyZGQ4YzgyYWQyMGZjZjZjMWNhOGNkOTNkODQ4MTcwZSBsZWdhY3ktdHJ1bmsKKzI0NDc4IGNmZTQwN2U0ZDhjMDE1ZGE2NGIxODc4ZWE2YjI5YmM5NGU4ZGYyYTYgbGVnYWN5LXRydW5rCisyNDQ3OSAwYjRhZWI0MTNkN2RmNzMwYTg4MTZlZTgzNjBiMGExODAyZjFhZWY5IGxlZ2FjeS10cnVuaworMjQ0ODAgZmQ0MmVhY2U1MGVhNWRhYjQ2NzYzNGJmMWY3ODVmNWFlYTg3Mjc3YyBsZWdhY3ktdHJ1bmsKKzI0NDgxIDQ3NWM4MjcxZTA1N2U5ZmU4YTY2ODRlNGU3ZTBkODIwOTMwNmE5ZGIgbGVnYWN5LXRydW5rCisyNDQ4MiA4OTA1ZTY3MjVjYTFiM2E4MzA4MTdiZjA1YjM3OTA4ZWQxYzc0NzQ4IGxlZ2FjeS10cnVuaworMjQ0ODMgMmRmYzYwMGY5OWNlZTZkNjIxYTc5ZGZmMjFhMTVmMWFmN2YzMTFhOCBsZWdhY3ktdHJ1bmsKKzI0NDg0IDI0NThjYmNjMWRkMzc2NWU2ZjZjZTViODMyYzlhNzJkNmZkYjRjNzAgbGVnYWN5LXRydW5rCisyNDQ4NSBkZjJmZmIwY2Q2YmJhNjBiMjJjYjhiODUwNWM4OTMwNDRmMWFkNzYyIGxlZ2FjeS10cnVuaworMjQ0ODYgMGI2YTE4YzZlNTllYzQ1MDg1NmFjNmQxYmI1OWY4ZWM2OTE1YzkxNSBsZWdhY3ktdHJ1bmsKKzI0NDg3IDc4OTI5MmNmMDkxNGM0MzYzZDQxNDZlNGM2YjEwOTcyMTVmMmY1NmMgbGVnYWN5LXRydW5rCisyNDQ4OCBjOWE3OTY0MDBhNTFjNTE0ODdjMjcxZTMzNTQxOTU2YzdlOGYxYTc5IGxlZ2FjeS10cnVuaworMjQ0ODkgZDRjYzA1ZjZlMTgzOWQzMGY0ZGIwYmE5ODE5YjUxNzcwYTlkMjg4ZSBsZWdhY3ktdHJ1bmsKKzI0NDkwIDdkMWVhYzQxY2UzZWNmZTBhZTJjZmQ0OTI3MTJjOGY4ZjU0YTczNmIgbGVnYWN5LXRydW5rCisyNDQ5MSBiYzUxZGU2NDNiNWU1OGNhY2YzZWIxNjdjY2U5NDcxNGVjZmFjODBjIGxlZ2FjeS10cnVuaworMjQ0OTIgNDg1NDIyOTAwZWYwNzljMjE3ZmM3NWRmYjNmYjcxN2Y1OTllNjE2MCBsZWdhY3ktdHJ1bmsKKzI0NDkzIDBmYmM5Mjg5YTRjN2NlNDAzOWJjNGYxMmNkNDgwYzhjN2Y1MmFlNGQgbGVnYWN5LXRydW5rCisyNDQ5NCA5NDRkNmUwMmYzNTkxNzc4M2I0Y2I4YjM2NTVkNmMwZTM0NzljYTM4IGxlZ2FjeS10cnVuaworMjQ0OTUgNDczZjI5NDExZjNiMmVkMjM4NzM1NmQ3MTYyOTQ5ODNmZWE4M2E3ZiBsZWdhY3ktdHJ1bmsKKzI0NDk2IGFjMTM1N2ZkMWFlYTFmOGExMjRjZDgyMjY1ZWNlN2FmZTk0YmQxNjkgbGVnYWN5LXRydW5rCisyNDQ5NyBjMmJmZmE2NzJiNzU5YmY5YWYzNzUzMzMxZjdkZWU2ZTk4MTJiOTZiIGxlZ2FjeS10cnVuaworMjQ0OTggYWViY2U0ODViNTZiOWNiNTA1OWFhNjhhYmMxYTcxODllMGZlYTJkNyBsZWdhY3ktdHJ1bmsKKzI0NDk5IDAxODkxODZmNGVkOTE4MjI5MWZlNzQwNzdkNzhjZGI5MTE1OTBjMWQgbGVnYWN5LXRydW5rCisyNDUwMCBlZjZmNjkyYzc2ZTIyYTliZWYxZTc4M2QzYTlhOTA0ZDE5NjhiYWI2IGxlZ2FjeS10cnVuaworMjQ1MDEgMDhmMjFhNTM3NGQ5YTlmYjljOWFiMjRlYmNiOTRjM2FlMjNkNjJkNSBsZWdhY3ktdHJ1bmsKKzI0NTAyIGE2MjNmOWNmOTUzNTQyMzFhMmRjYmJjMjViMGMwZDI3M2FjODRkOWYgbGVnYWN5LXRydW5rCisyNDUwMyA2YTczZDU4ZTE3NDcyMmYyOWY4ZTE0YWM4YmUzZDAwZjJhOTk3ZTY4IGxlZ2FjeS10cnVuaworMjQ1MDQgMzNjOGQzMzVhMmM0Mzc3NjJlOGE3YzFhMDcxYjRiZWViMzMzN2E1MCBsZWdhY3ktdHJ1bmsKKzI0NTA1IGMxOGFkNTJkZWNlMzVjMzgxY2RjOGRhYzQ4YzAzOWJjMWE2ZTdjMzAgbGVnYWN5LXRydW5rCisyNDUwNiA0MjZjMGQyNGRlYmQ4YTU4ZWU3YjYxNmQwNTE3ZDNmNzJiMjZlYTVjIGxlZ2FjeS10cnVuaworMjQ1MDcgMTUxOWQ2ZmFhYjE1OTQwNDVlZGE1N2UzN2M1NzAxOTVmMzRiNDI2MCBsZWdhY3ktdHJ1bmsKKzI0NTA4IDViM2IyOTI0NzU3MzVhOThmZGNmMThlNzBmZjY0MGJjMDlhZjUwM2QgbGVnYWN5LXRydW5rCisyNDUwOSA5MjA5MDJmNWE4ODRjMDlmNDVhOGQwMTJmNDllNWRmZmExNjA0OGQxIGxlZ2FjeS10cnVuaworMjQ1MTAgYWQ3YjQ0MjRhYWI2ZjNiMzNiNGEzNDg3NGI3ZDY0MTU0YTdiNzFhNyBsZWdhY3ktdHJ1bmsKKzI0NTExIGYxN2EzN2RlNjI4NWFhNTFkZGVhYTkzYWM1OGI2OGMxMDQ4ZDc2NGUgbGVnYWN5LXRydW5rCisyNDUxMiA2MDQxNWJmNWY4ZjJhNDY2MWUwOWY5ZmE1YmM1ODRlMDc5YWNlN2MyIGxlZ2FjeS10cnVuaworMjQ1MTMgOTQ3OTMxMzkyNjk0ZWQzOWEzMmE5ZmIzNWYzN2UyZTFkOTBlMmU3MCBsZWdhY3ktdHJ1bmsKKzI0NTE0IGRiOWI1OTc2ODI5ZTQ0N2MzYTM2ZjNmYTk3YTJlZGMzZTM2NTZkNTcgbGVnYWN5LXRydW5rCisyNDUxNSBjODRkZjg0ODYxNjM2NmY3YWZiODc2NDEwODhlYjhiNzYxYzI1N2Q3IGxlZ2FjeS10cnVuaworMjQ1MTYgZDk1ZWI3ZWM0NTUzNTQyYjU4ZWFhMmMxNTI1Y2M0ZjdjZThlNWZhOCBsZWdhY3ktdHJ1bmsKKzI0NTE3IGY3OWU0NzE5ZGI5NjQ1ZjVjMzgwODU5NmVlNDhhMmNhMTk5OTc4NjAgbGVnYWN5LXRydW5rCisyNDUxOCA4NjRjYzU5M2JkZGEyNzdkZjk3OTlmNDAxOTMyZTc4M2U3MGU2ZWYyIGxlZ2FjeS10cnVuaworMjQ1MTkgODE5MjhjOWQ3MDExN2VlZDZkM2EyYzQyMDJhM2Y3YTMzMWQ0ZGM0ZiBsZWdhY3ktdHJ1bmsKKzI0NTIwIGJjZjY2NmU4ODMxMjFkMmI3ZTM3ZTcxNTNkYzBjMGUxNzY2MTNmN2EgbGVnYWN5LXRydW5rCisyNDUyMSBlYWQxZmEyNjk1MDJhMWNlNmZiNGZkM2I1OGQxOGQ1N2U4ZjBhOGE1IHJlbGVhc2UyMS1tYWludAorMjQ1MjIgZDgyNjVhMGMzY2YwMjg4YTZkMjFlOWVkYjljNTA1NTVmMzdjZDU3OSByZWxlYXNlMjEtbWFpbnQKKzI0NTIzIDJkMjE2NTBmNDZmODlkMmVhMGZjNWJkYTY2YjdiYWQ1NzFkNDUxNWQgcmVsZWFzZTIxLW1haW50CisyNDUyNCAxNTFiNjk2N2JkMjEwYjJjMTJjZTViMWQ3ZjhkOWYyODFkNjg1YjAxIHJlbGVhc2UyMS1tYWludAorMjQ1MjUgNjcwOWFkNGZlNzVlYzhlNTU4YzZlZWE5ZjFiY2Y5NTM0NDc1OGRkZSByZWxlYXNlMjEtbWFpbnQKKzI0NTI2IDNiMDllYTcyM2VjZTcyMmU5MWM4MDM5MjlkZTFkNjUxZjAyZjcwZTkgbGVnYWN5LXRydW5rCisyNDUyNyBkMjZlNjU5NTA3NDAyYzM3NmQyOGM1ZTNhYzc0ZDUwNDNkZjU4MTUwIHJlbGVhc2UyMS1tYWludAorMjQ1MjggMTk4YWViZTEyMzk5OGQ5NjVkN2FhYWZiNTE2MjE4ZWQxN2U0ZjIzNCBsZWdhY3ktdHJ1bmsKKzI0NTI5IGEzOWFmODAwYjlhM2VkOWY0N2U1MTRmNjBkMGJkZjljMmM4MzljOTggcmVsZWFzZTIxLW1haW50CisyNDUzMCAxNDhmZmQ5NTc2MThkMzJlYWUwOTRiZDk5OGRkNDM1NmFiMDlhYjIzIHJlbGVhc2UyMS1tYWludAorMjQ1MzEgNjU2YzRjZjUxNjVmYTgwZGMzNWE2NzY3ODRjYmNlNzQ5MDhkZjNjYiBsZWdhY3ktdHJ1bmsKKzI0NTMyIDkyMDVjZmI3NzA5NDY2NTAwNDE4MDgyZDliMDFhN2ZiY2U0NTFiYWIgcmVsZWFzZTIxLW1haW50CisyNDUzMyBkMjI5MGU5N2RlMTg3ZDNkZDk2NGQzYmFiYWEzNTM2YzY5ODQyMTQ2IHJlbGVhc2UyMS1tYWludAorMjQ1MzQgMzQzMjdjZjQ1Mjk5NGE4ZjA1YjM4NmFkOThkMjQ2NDI0NDlmNDY0YiByZWxlYXNlMjEtbWFpbnQKKzI0NTM1IDIyZDgyMTY3M2U1MjY3YTEzMzVkODhlMjNjYTI4ODIxNTNhMDk2ZjYgcmVsZWFzZTIxLW1haW50CisyNDUzNiAwMmQwMTcwMzk3ODg1YzZkZTc2NTc4ZDc1NDAwMGI4YTIxYjM0OGFhIHJlbGVhc2UyMS1tYWludAorMjQ1MzcgNGFmMzE4NmU2NjMxNTE4ODE3MGIwN2IwYmYyYjk3MWVlMjQ1M2U4YiBsZWdhY3ktdHJ1bmsKKzI0NTM4IDVhYjBkYzdmMmViMDQ2MmZmZTM0NTFlNzgwZjE4OTY2YzA0YzkwZTYgcmVsZWFzZTIxLW1haW50CisyNDUzOSA5NWI0MmYxMDU1YzI0ZTcwYzE5NGJmYWIwYWM2NzI1MzczNzkwNjM2IHJlbGVhc2UyMS1tYWludAorMjQ1NDAgMGJjODgzODQwN2JiNTc5NmU4OWFiYWZhZDZlYjEzODZiZGYwZGJmOSBsZWdhY3ktdHJ1bmsKKzI0NTQxIGFjY2JlNTY4NGFjNjE0ZDVlYjMzZDk5YzM5ZjgwZjExYjJhMjE3ZmUgcmVsZWFzZTIxLW1haW50CisyNDU0MiAwMGVjZmUxOWE4ZDI5ZmVhNDRlZGQyOTM4NmM5YWE4MzAxN2FlOWExIHJlbGVhc2UyMS1tYWludAorMjQ1NDMgMDYwYzM3NTg3OTUxYjFhODQxYzUxYTQyYWI5YWFhODBkNjRlNjg0MCByZWxlYXNlMjEtbWFpbnQKKzI0NTQ0IGEzZDAxYTIyNTMyOTczZGI2MTMxY2JlMTU3ZmNhYWFhMDZiMDg0NTkgcmVsZWFzZTIxLW1haW50CisyNDU0NSA0OTMwMTk4ZjkyZGJmMzYzNDFjMDIwMjc4ZGFlNmQyZGQ5OTUwMjU5IGxlZ2FjeS10cnVuaworMjQ1NDYgODAzY2NiZTNlZTdjYWI1YzIxODI4YTBjZGI1OGNlNDczZThjYTFiMyBsZWdhY3ktdHJ1bmsKKzI0NTQ3IDlkYzg3ZTYxYjVhMmUyMmVlMjI5ZTAyY2M5OWY3MWNiOWJkZTZiNzUgbGVnYWN5LXRydW5rCisyNDU0OCBiNzgyNDkwZGE3ZjA4MjE4NDI2MTQwZTBiMjVjMDgxOGVjNzM0YzBkIGxlZ2FjeS10cnVuaworMjQ1NDkgODlhNWMxMTA2YjgyZjE4MDg3MjBmYjc5NThjZGU1MzlkOWZkYzJiNiBsZWdhY3ktdHJ1bmsKKzI0NTUwIDQyZDA4MTk1NDZkNjA5ZmI4MmI5YmMyNjM1ODU4NGM3YjNmZWQ5ZDQgbGVnYWN5LXRydW5rCisyNDU1MSAzZTg0NjBmYjJmYmU0OWY4MDc2ZmU1MzE4ZTcwNTc0NWVlMGE1NzdjIGxlZ2FjeS10cnVuaworMjQ1NTIgOWQ2ZmJjYjk1MGY5YjM0YTRkYzFkYmMxZTQ1NTg3MTE2M2JlZDZhZSBsZWdhY3ktdHJ1bmsKKzI0NTUzIDU0ZGRjMzc5ZDRmYzI4OTgwMjg5YzAwMDQwYmZmOTQ5MDU0YjdiZGEgbGVnYWN5LXRydW5rCisyNDU1NCBhZDg3Njc0ZGUzYTFiM2M0ZWZlZTI1NjNhZDI1NzQyZWVlZmQ2ZGVlIGxlZ2FjeS10cnVuaworMjQ1NTUgNWMwYmE2ZWJjNjJkMGNkYjkzMjUzNjM0NTBiNjFjMWEwYTJiMDAwNyBsZWdhY3ktdHJ1bmsKKzI0NTU2IDIwMzQ5MDJiMGYxYWM4NGFmYmI1ZWU5N2MxOWY4MmRhZGIxZWM3YzUgbGVnYWN5LXRydW5rCisyNDU1NyAxMjg5YTA1NTllNWE0NGRkMWQwYzdlMDdhNTRiYzc1YTQxNjU0YjhmIGxlZ2FjeS10cnVuaworMjQ1NTggYmE2YTdhNWMzMmU4NzE3MzFiZmM3ZDU2MzBiYWVjNmQ5MDA4MTg3NiBsZWdhY3ktdHJ1bmsKKzI0NTU5IGNiOTIxZDQ4M2UwMDk0MmU0NGZjMTI2M2MxOTliYzRjOGQ1YmFlMTcgbGVnYWN5LXRydW5rCisyNDU2MCBiYTE2ODU2YmZiYWJkOGQ0ZGVhMDEyMGY2ZDkwMGU5ZDA2ZWQ3MjJkIGxlZ2FjeS10cnVuaworMjQ1NjEgMDYyYzZmNDcxMDZmYmUxYWNmNGM4MDhmYzMxNDAyZGE0YjYyYWYwMyBsZWdhY3ktdHJ1bmsKKzI0NTYyIDIyNGVkYmFmNjMwMTkxNTQ0MjUxYmEyODc1MDcxZTc4ZTMzYjMyOTYgbGVnYWN5LXRydW5rCisyNDU2MyBiMjZkNThiOTgxMGNhZDdlODMxNmMyMDYxODczOGYwMzdmNjhkZTUxIGxlZ2FjeS10cnVuaworMjQ1NjQgNDVlMTE3NzQyNGUxYzc5OTY4NzJmNWJiZWUxMGI3M2VlNzVkN2ZlYSBsZWdhY3ktdHJ1bmsKKzI0NTY1IGUzODZmNmUyNmE0MmUzODFmNzg0ZTllMTkxNWY1MGJjMzBmYWJjYWQgbGVnYWN5LXRydW5rCisyNDU2NiBkMDI0YTVjNzJjYjU2M2M0YjQzNDQ2OWM0ODNkYzk4YmFmODJkZDg2IGxlZ2FjeS10cnVuaworMjQ1NjcgMTkxODZiMTdkMjVhYTM5MDBkN2JhYTBhODgzZjBlMDkzNTYwNzJmZCBsZWdhY3ktdHJ1bmsKKzI0NTY4IDE0NTA3NjcxYzAyY2M5OTg5ZDI5OWFjMTMyZGE2YWZmOGI2NDI2ODIgbGVnYWN5LXRydW5rCisyNDU2OSBmYmY2OGM1OWQ2NmNjZDI2MDcxYTc0YTg3YWQzNzUzMGQ3YWFkNzM5IGxlZ2FjeS10cnVuaworMjQ1NzAgMDhkYmY2YjNjMzE2NDMxOGViYjI1NzBkYmE4N2FmMTQ3NWE1YjA2NyBsZWdhY3ktdHJ1bmsKKzI0NTcxIGU1ZDI5NTU0MmM3ZmI5NjYxMTY5YzE3YTg4MDE1ZGJiZjkwMDcxMTEgbGVnYWN5LXRydW5rCisyNDU3MiAxMDJkMThlYTAyY2ZhYzM5YTIxMzhlYWI3MjllYTI1OTFjODhiMDNkIGxlZ2FjeS10cnVuaworMjQ1NzMgYzUwNmJmN2IyNmI4YTBmMWY5OGYyY2U5YWYwY2NkMzk2YjdjODY1MiBsZWdhY3ktdHJ1bmsKKzI0NTc0IDQyNzFkYTcwZWQ5ZTEzNjIxZjNlNTc1NWJjMGViMjQ2NGI5MmQzZTMgbGVnYWN5LXRydW5rCisyNDU3NSBlOGZlYTk1YTgyYTQwMzYwNzgwYWRiMzAwYmFiNGY0NzI3NGFiNTM1IGxlZ2FjeS10cnVuaworMjQ1NzYgMmYyYWJlZWVmZDg3OGJlZjMzN2M3MTZiZTg5ZTAyMjU5ZDUzMjVhZCBsZWdhY3ktdHJ1bmsKKzI0NTc3IDI2NTY3ZjI4Njc3ZTE0YWZiNDVlZDlkNWVmM2E4MzhmNjg1YTA2YmMgbGVnYWN5LXRydW5rCisyNDU3NyBhYmVjNGUzYjA4MWYyZjgwMmMwZjI3YmMxZWE3MGVkNzUyYWJkODRjIHJlbGVhc2UyMS1tYWludAorMjQ1NzggNGRhZTg0MmFhN2M1OGZmZGU0YjQ3YmY5NTAyODNmNzA3ZDM3OTM0NSBsZWdhY3ktdHJ1bmsKKzI0NTc5IDdhN2Y1NTdiNGQ1NDE4ZWIzNzAyZGE1MmU5NWRjOWM4M2RlOTZlMmIgbGVnYWN5LXRydW5rCisyNDU4MCBkMjk2ZTZiYjE3ZTU0Y2YwN2NmMDFlMWFhZmNmYmFmYjc0OTBjOWRlIGxlZ2FjeS10cnVuaworMjQ1ODEgMmI1ZGM2Yzc3YzNkZTZkZmI1ZjMxNWY5NTliOWEzYzc0NTdlNWEwNyBsZWdhY3ktdHJ1bmsKKzI0NTgyIDk3NzA5ZmQ4ZmRhMDI2YmVlOGFhM2Q3ZThlYWI1M2IzYjMxODZmOTcgbGVnYWN5LXRydW5rCisyNDU4MyBhYzNmZGQxNDEyZDllYWE4M2M3Y2MwMTU5MTQ5NTZkNjUwNjYzMDY5IGxlZ2FjeS10cnVuaworMjQ1ODQgZDY0ZGZiZGM1ZjhjNDQ4MDZjMDI0M2MyNjAyYjMyYzIwMTA2MWM0YiBsZWdhY3ktdHJ1bmsKKzI0NTg1IGVjYmJlY2NkZTA3ZGQzYjk2MDVlNGNiMDg1YTc5MjkzZTg2M2MwZWYgbGVnYWN5LXRydW5rCisyNDU4NiBjZmJlMzhhMDNlOGMxOTA3YzBjYjJlNjk5YTMzMzY2Zjg0MDJhNzk2IGxlZ2FjeS10cnVuaworMjQ1ODcgYjAxMzIzYmZjZjZjZTkzMjlmNDkyZmUyYTg4NDAyYmI4ZTY2OTZmYyBsZWdhY3ktdHJ1bmsKKzI0NTg4IDI4ZjRjZWEyMDlkNzhlYTg2YTUyNzlkZjg2N2Y5MDUxOWMwZTI2MDUgbGVnYWN5LXRydW5rCisyNDU4OSBmNzAyZmYzOTBlNGRjNzczZDJjMWYyNTZhNThhNWExMjhjM2NiMjVkIGxlZ2FjeS10cnVuaworMjQ1OTAgMDNmMzE1NWNiNmViZTE3ZmM2N2Q2ZTU4YWFmYzc3ODViOGY2NjY2YiBsZWdhY3ktdHJ1bmsKKzI0NTkxIDY0MzI0NGY3ZjQ2NzA4ZDFlNzE5NGQxMzgxYzk3YjIzMjBiN2QyYzggbGVnYWN5LXRydW5rCisyNDU5MiAzNjU3YmVmYWJhNGYwYTgxZGExYmUxZWViYmVmNDIyMjk1NWM1MDg0IGxlZ2FjeS10cnVuaworMjQ1OTMgOTkxYjE3MGNmNDM4NWQxMDI1NzFkYTNhOTI2ZWIwMjNmMDM1YTQ1NCBsZWdhY3ktdHJ1bmsKKzI0NTk0IGQzNWE1NzcxYzRjNjlmNGUzYjc4NjMwNzIxNzgxODAwNTRkNWM4M2UgbGVnYWN5LXRydW5rCisyNDU5NSBkNDkwN2NkY2MyOTk0NTQzNjY2MzQ1ZjhjMGJkOGQwYjhjNmU0NTAyIGxlZ2FjeS10cnVuaworMjQ1OTcgNDNiOGE5NjJhMzJhZWVjZWUyM2QyYjZiNGYyMDk5NGU5YWQ3MDhhYyBsZWdhY3ktdHJ1bmsKKzI0NTk4IDUwZjI4ZWQ4MDQ0ZmZjMWM0NDVmYzczYzBmZDFhOGQxNzc5YTE5NjYgbGVnYWN5LXRydW5rCisyNDU5OSAxZTdjMGI4NDk1ODRkN2ZmN2ZmYmQ3M2ZhMjBmZjYwYTE1ODI2Yzg0IGxlZ2FjeS10cnVuaworMjQ2MDAgZDUxZjIxNThmYTc5MDcwYTRhZDE1MzU4MTgwMGE1MGJmNGFhM2YwZCBsZWdhY3ktdHJ1bmsKKzI0NjAxIGQwYzIwNDBmZWRlN2Q0ZmFkODVmM2E5MTAwZDk3OTJhNDRlMWQ2ODEgbGVnYWN5LXRydW5rCisyNDYwMiA3NzZkZDJlNzY3OGUwNDNkNjVlODRjMWQ0MDg5MWNhYTIzZGJhZTM4IGxlZ2FjeS10cnVuaworMjQ2MDMgOTgzNWJhYjI4NzZlNDJmODNkNmJlYzU0YTBiNzgyYTYwODA4ZTMxNCBsZWdhY3ktdHJ1bmsKKzI0NjA0IDIzNzVkMmRmYjViM2E2MmI4NmNkYThmM2JiYzI5NDRiZGFlOGZiMzkgbGVnYWN5LXRydW5rCisyNDYwNSBlOGRkYWIxMzczMmFiYWQwYjI5NDljOGI5Y2JjNjNhZGVkNzBlMzYyIGxlZ2FjeS10cnVuaworMjQ2MDYgYjgxMGMzMGI0YWExYTdhZDkwZTA3ZGJhOTZkMDQ3NWM0ZjdmNWJjMSBsZWdhY3ktdHJ1bmsKKzI0NjA3IDI0YTZjM2ZkMGU1OGJjMGExOTQzNmQwYWU3Y2Y1NTQ1YzgwMmVhODQgbGVnYWN5LXRydW5rCisyNDYwOCA1OTg5NDQ5NmI1YzczNjJkZDRlYzljZmE2NTY0MzFmNDE5ZDVhMzEyIGxlZ2FjeS10cnVuaworMjQ2MDkgYmI3OGE1MmI4ZmZjZTI3MDVkZTgzYTk1MTA2MDI2ZTUyYzE2Y2JmNCBsZWdhY3ktdHJ1bmsKKzI0NjEwIDExOTQyMjQzMGU4ZmNiZTFmMjBjOTA4OThhNzVmMTVlNGExOTkzN2IgbGVnYWN5LXRydW5rCisyNDYxMSA5YTI0M2VlMzU0YTEzNGNjNWQzZmFiNzczNmI1N2Q1NzM0NjE2NjVjIGxlZ2FjeS10cnVuaworMjQ2MTIgNjJlYTMxN2RmYzdmNGEwYTU4ZTVmMDI2ZWY2ZDViNmQ1NWYwMjU2MSByZWxlYXNlMjEtbWFpbnQKKzI0NjEzIGY1NTMyY2MxNTE0YjdkYjYzNWIwNjY0ZTc4NjYwZTk0ODE4MjdmNTIgbGVnYWN5LXRydW5rCisyNDYxNCAxMmMwOTRhMjMyNzM0NmU2YjliM2E0OTEzYTNmOWM4ZDQwY2ZiZWNkIGxlZ2FjeS10cnVuaworMjQ2MTUgZGU3NjQ2NjNjMzI1YzA0NjdhNDQwMmY2YTZlMTNhYTg4MmMzZDlmMCBsZWdhY3ktdHJ1bmsKKzI0NjE2IGI2ZjU5MmVlYzI0MWQ2ZWNjY2IyNmQ5Yzk4YjNiNzIyZjM0YzNkZTUgcmVsZWFzZTIxLW1haW50CisyNDYxNyBkOTgwZWJjYzY5NmEyODgyOTVhODQ0N2NjY2NjNWQzNjhiZGE2MGRmIGxlZ2FjeS10cnVuaworMjQ2MTggZDg2ZDZlMGQxNThjNWM4MjQwNzQxMmNjMTIzZTA3Yzc0YzM4NjhmNSBsZWdhY3ktdHJ1bmsKKzI0NjE5IDBkMmVlZjYzNmQxMjljNTc1ZDkyZDk4NTg1YWE2NzY2MmU4OTBiZGEgbGVnYWN5LXRydW5rCisyNDYyMCA4OThjODI1ZTA4YWNjY2Q2NDUwNWYzZDJlNjI3OWZhZTU1ZDc4N2I1IGxlZ2FjeS10cnVuaworMjQ2MjEgY2I2MjAzZmYyOWU1YTFlM2I1ODgwMDcwNmZjNTI2NDRhNTRmY2M0OSBsZWdhY3ktdHJ1bmsKKzI0NjIyIDI2MDc0MzNiMTNlOWU4MWVjYTI4MmQzMmEzNjAyYTQyNjgzODk5YTEgbGVnYWN5LXRydW5rCisyNDYyMyA5MDgwNGEzNDg5MjNkYzdmMjc2OGJkMDM3OTM2MDYyNTFjN2U0ZWZhIGxlZ2FjeS10cnVuaworMjQ2MjQgYmZhNWY3YjRlNzg4NTk4YmVmZjFmMjBmYzg1N2VjMDNkNWJiZmQwZiBsZWdhY3ktdHJ1bmsKKzI0NjI1IDAxMDI2OTI0MTdhZjBmZTNlMTJlMWIyMTdlYzFmOTU1YTMwY2U2YTggbGVnYWN5LXRydW5rCisyNDYyNiA5MWRkMjIzODI5YzZlMDM1NjAxMWJlMmM2YzFmNGJiNDc5YjE2NWE4IGxlZ2FjeS10cnVuaworMjQ2MjggNGQ1MDk4Y2ZhNzgxYmZlM2E3YmYzM2VhNjY0YmIyYTE1OWMyZjFhZSBsZWdhY3ktdHJ1bmsKKzI0NjI5IDliMmQxZjhmNGJlMzQ5ODNiODQwOWYyOTEwM2YwOTBlNThhYzVlZmQgbGVnYWN5LXRydW5rCisyNDYzMCAwYzJlYTIzM2FkMjQ5M2I1MDQ5YjBjMmQ4MmVlYmMxMGZlOGE1NWI0IGxlZ2FjeS10cnVuaworMjQ2MzEgYjU4M2NhZjFiZTg4MmIzMjk4MDliMTkwM2Y5OWU2MDBlZWNjYjgyMCBsZWdhY3ktdHJ1bmsKKzI0NjMyIGJiNTY2ZjUyNWYxMmNmODhlZGNiYTAwN2I5ODdjZjgzMjg1NTM1MjMgbGVnYWN5LXRydW5rCisyNDYzMyA0YmNmYjlkYzU3ZTAzZGNiMzUwODgyZTc2MDc0NmQ3MzEwYWZhNjgxIGxlZ2FjeS10cnVuaworMjQ2MzQgNjBkZjJiZjg1NGFjZTQxN2I3MTAwOGE1NDYwMThhZDEyYzIzOTVhNyBsZWdhY3ktdHJ1bmsKKzI0NjM1IDNhMmNmNWU0NTY1NmE5OGE3NTcyOTQzNWEzNjNkNmM5YzBhZjBhOWIgbGVnYWN5LXRydW5rCisyNDYzNiAxODUyY2FiYTcwMTRiNDE1NDk3YjM5OGIyZmIyMDk1ZjFkN2ZkNDY1IGxlZ2FjeS10cnVuaworMjQ2MzcgNjQ0ODg1MTE4ZmU3Nzk4NzZjNzM5OWJhYWIzNGJmNTZkZGU3M2E3MCBsZWdhY3ktdHJ1bmsKKzI0NjM4IDc1MmZhNDg1YzRhYmE1ZjQ3MmExMTI1YWY3NjkxYWVkOTJmNTk5NTAgbGVnYWN5LXRydW5rCisyNDYzOSA4YTI2YmIzNjlmNTM3N2Q2OGEzOTcxMGZjYTQ1NGVmNzZkOWEyY2NiIGxlZ2FjeS10cnVuaworMjQ2NDAgYzlhZGFjZTNjODIzZWZkZjU3ZDRhZmQ5OWEzZTYwMjI0MTVmNzBkMCBsZWdhY3ktdHJ1bmsKKzI0NjQxIDM0YTFhNTBlNmFiNmY4MTkxYTE2YzZlMmZmM2JmNjRiZDhkZWVkMDMgbGVnYWN5LXRydW5rCisyNDY0MiA3ODRjOGJjMGIzMDM0YTU0ODVhM2ZkNzlhODJhMzZmZTAyNjgyNWZhIGxlZ2FjeS10cnVuaworMjQ2NDMgODQ4ZjY5ODg4MjlmMWEyZTU0MGQ0ZmZmNzdmOGE3NTIwNjVjMzFlYyBsZWdhY3ktdHJ1bmsKKzI0NjQ0IDQ0MjBhNGJkOTZhNDRjMWEzMGM1YTA5Y2I3NjQyNmRlZWM3OTFjNjEgbGVnYWN5LXRydW5rCisyNDY0NSAyYTdkNWZmZWNlMWM5Yjg3YmY0NDNiOGE1YzgzNjE3OTM5OGQ1NmFjIGxlZ2FjeS10cnVuaworMjQ2NDYgZmJiZDhhNGNhN2E2ZmNjNWI5ODk4YTliN2VjNmQwNDdiODQyY2JmNSBsZWdhY3ktdHJ1bmsKKzI0NjQ3IDZkODc0YTkxYjU4YjgxYjg4M2EwYzllM2ZhM2M2ZGY0NTFjODJiNTYgbGVnYWN5LXRydW5rCisyNDY0OCBjZjJmYjIwYTZjZTdlYjNiMDJlZDI5ZWJhYTYzYmFkNjEwMTcxNGUzIGxlZ2FjeS10cnVuaworMjQ2NDkgMThmNjA4MTBiOTRhM2YwMTBmZTRkODE0NWUzZGUzNTdmZjdiZWY3ZCBsZWdhY3ktdHJ1bmsKKzI0NjUwIDdjNmRmOTY0YjA0YmI0MTRhYjQ1YjliYTU2MmIyMGI1YzVjMWIxZTAgbGVnYWN5LXRydW5rCisyNDY1MSA5M2Y1NDA1OGVmNDhmNWRjYmZkOWNhMDUyMmM1NjM5MjM0MmM0NDUwIGxlZ2FjeS10cnVuaworMjQ2NTIgNjgwNDBkYjA4NGI2YWE1N2FjZDVlNmYyMjY3ZTVmOTAyOTA2NzUzMSBsZWdhY3ktdHJ1bmsKKzI0NjUzIDUyNWM3NzM2OGNkMDU3ZGYzNTk3NmNlN2JhODg0ODdlMmZhM2UzMGQgbGVnYWN5LXRydW5rCisyNDY1NCAzZDY4ZTMxMTBlMWZlNThlZTZlNmU1MzIxY2JlNDdjZDM0MTM3NTc3IGxlZ2FjeS10cnVuaworMjQ2NTUgMGIxZmFmMTE2ZjYzZWE4YzU2ZDE3ZjI0Nzk1MDEyYWE5ZDQxNzBhZiBsZWdhY3ktdHJ1bmsKKzI0NjU2IGEzOTJlMWZhZTYxZGQyMmZlOTEyMjgxNDVlZWUzY2UwOTlkMjIyMGEgbGVnYWN5LXRydW5rCisyNDY1NyA3YTU4Y2QzMzdjZjQ0MGExYzExMGQxMmM5ZTEyNTA1MzVkODIzZjg5IGxlZ2FjeS10cnVuaworMjQ2NTggZjdlYWVlYWM5YzY1ZTdiZTRiODFjODczNmQ4NWIyYzNlNmU5YWIyNCBsZWdhY3ktdHJ1bmsKKzI0NjYwIGQxZjkzOGVlZTcwMGEyNjI5MTc3OGFkOTA4NTE5ZjczMGU3ODBmNzggbGVnYWN5LXRydW5rCisyNDY2MSA4YThmNTdkY2Y5ZmU3MzYzOTdmNDk5YjMyNTMzODdhNjM1ZGE0NDY0IGxlZ2FjeS10cnVuaworMjQ2NjIgZjU5YzZiNWRkMTIyMmIyZmNiMjJkNTRmYWZlNmU3MjI4ZDc0OWVkNSBsZWdhY3ktdHJ1bmsKKzI0NjYzIDEyMzEwZDY0M2Q4ZDcyOTc2NWQxMTMyYzQxOTZlMzJiYjA5MmNjYmMgbGVnYWN5LXRydW5rCisyNDY2NCA5MzhiNWJmNzRmYjk0ZjViZjg1NWY3ODMyZDBhMjMzZDZhNDg2MTk2IGxlZ2FjeS10cnVuaworMjQ2NjUgYTUxNDZmODQzMDEwMDYyNzUwYjM0MWU2N2I5NzMzMWY3NzU0OWI3OSBsZWdhY3ktdHJ1bmsKKzI0NjY2IGJlOTkwZTcwM2QwZjE0NzJjZmRjNzQyNGY5MTE4ZWY2NDZiMjZjMDIgbGVnYWN5LXRydW5rCisyNDY2NyBiZTMyODNlZDhmOTc1ODg0MzkzMDRjODU5NDAwZTI3NjcxNmRhYjhlIGxlZ2FjeS10cnVuaworMjQ2NjggMjU3YzkzODkwMGE2ZTVlM2Q0ZTc4MDFmZThhOGY5ZDAxMTlkZDk4ZSBsZWdhY3ktdHJ1bmsKKzI0NjY5IGZiZGRiNjRkMjFjMmNiM2Q5OGVjYmZiMGM5NTE1MjE2NmZiODM4NzUgbGVnYWN5LXRydW5rCisyNDY3MCAwMDNkYzU3M2IyOTUwY2ViNGU3ODMxNTI2MjYxZDQ1OGU1YTU2ZTdhIGxlZ2FjeS10cnVuaworMjQ2NzEgYzY3MDQ2ZWY1Mzg1NjdiY2Q0YWM5NTcyOWMyNzBlNTBiNTM1NDgyZSBsZWdhY3ktdHJ1bmsKKzI0NjcyIGRlM2M4OGI1Zjg4OTYyYmQ3ZmUxYTNmNjQ1NGE5MDk2YTBjMWE2NzMgbGVnYWN5LXRydW5rCisyNDY3MyAyZWIyNWVmMzQzODZjMzk3NWRkMmRjZjJlYjNkNzBhN2FlMzk4ZDJjIGxlZ2FjeS10cnVuaworMjQ2NzQgMmMyMDhkYmYwY2IwMzg3NTcwN2JkMTA3Y2Q3MWU1Y2EzYmY1ODc1OSBsZWdhY3ktdHJ1bmsKKzI0Njc1IDI5MDcyZThlOGQ5ODJiMWFmYmE0MjY3OTFhYjNlNzE5OTdlY2NjYWYgbGVnYWN5LXRydW5rCisyNDY3NiBlOGIwOThmZTNkZjg3OGY4YzQxYmRkYTM4M2UwM2NlYWU4ODc3MWU1IGxlZ2FjeS10cnVuaworMjQ2NzcgMzAxMmY2MjZkZjdjYjM1ZTEzMGNlZGEwOWI2MDJmNzNjODA0YjMyYSBsZWdhY3ktdHJ1bmsKKzI0Njc4IDcxZTVlZWNkNTg5ZTU1YzMzNTZlY2JjY2YwYWQyYzgwMmY3ZjhmNWUgbGVnYWN5LXRydW5rCisyNDY3OSAwNDAyMzBjMTU4OTA0N2E3ZTJjYzJmNWVhOTM4N2ZiYjU1OWE3ZjEwIGxlZ2FjeS10cnVuaworMjQ2ODAgNWFiOWE2NWUyMzQ2NjE0NjE1MzViMWE0NDcxZmM2ZjA3YWM2ZmViYyBsZWdhY3ktdHJ1bmsKKzI0NjgxIGY1Nzc2N2Q3NmRlNmRiN2Y0ZjRkZjUwYTQzOWEzNzM0NWRiNzRjMzEgbGVnYWN5LXRydW5rCisyNDY4MiA4YTg5ZmYxZTA2NjJkYjRkYTA0ZTU5ZTZiN2VhOGUzZmM4NmZiZmExIGxlZ2FjeS10cnVuaworMjQ2ODMgZDg3Y2E5MzJlNzBmY2QwYmE1MDBhYTg3MDhlY2NhNTEzNjQ3OTQ1YSBsZWdhY3ktdHJ1bmsKKzI0Njg0IGFmNTE2MDRkMDBkYjI3MTQ0OWI3N2YxM2I2ODE2YTUwNjdiN2ZiYzIgbGVnYWN5LXRydW5rCisyNDY4NSA4YTAzNTA4N2ViNzI5Nzc2YjI3ZGVkMmRhZWJmMTk0ZmU3MDUxZTA2IGxlZ2FjeS10cnVuaworMjQ2ODYgNzM0NjZhNzZmMjVlMmU3MTcyNTI5MDQ4N2FkYzdlYTJmZTE0NDMxZSBsZWdhY3ktdHJ1bmsKKzI0Njg3IGMyOTY2YTdiZDExMzUxNDk4MzlkNDNlMGIxZmRjZTBkNjk4MTJmYTIgbGVnYWN5LXRydW5rCisyNDY4OCBjNTkzOWQwYzc0N2E0OTJjMjUyZWZjNDcyOGMzY2ViYzM2MWFlMTY5IGxlZ2FjeS10cnVuaworMjQ2ODkgNDk3NzJkMzE4NDQwYjhiNDk1NmJhYWQzMDY0Y2E5ZjUwNjYwMDU3YiBsZWdhY3ktdHJ1bmsKKzI0NjkwIDdlMGQyZDU5YmJjZTliN2VjNDg3NTkxYmQ3NjY2MjVkZTljYTY4OTAgbGVnYWN5LXRydW5rCisyNDY5MSA1MGQwMzY2ZThmMDU4MjJmOWNlYjgxMzRjZDEzNDg5MTFkMDcwZmU3IGxlZ2FjeS10cnVuaworMjQ2OTIgNWY1NzEzNDRjODljY2YwMzI2NzBiMGRkNzE4NjJlYjc5YjMyYjNlZCBsZWdhY3ktdHJ1bmsKKzI0NjkzIDExNmFmMmYwMTQ0MmE5MDBiMDg4ZGU3ZTYxNzkwYTI1NGJkMGRhNWEgbGVnYWN5LXRydW5rCisyNDY5NCA3NDNmNjdiZWZiNTdlOTUzMjY4YzcyN2U1ZmNhMTNjMmE1ODNiYjk5IGxlZ2FjeS10cnVuaworMjQ2OTUgNDRlYmVhYjI2OWM1YTc3ZWZlMjA4MDAyZmM4Yzk3OGNmZWU3YjVkMiBsZWdhY3ktdHJ1bmsKKzI0Njk2IDkxMzQ1OGVhZWY5MDBiOWMxNjlmYTRiNzU2Zjg0YzdlOGFjZDJlNTEgbGVnYWN5LXRydW5rCisyNDY5NyBkMTZiMzI3MTgxYThkNmIxNjEzZDIyNjc1MWJlNTZlZmQyY2MzMzBhIGxlZ2FjeS10cnVuaworMjQ2OTggYWJjZDJmNTJmMzE2ZGEwN2YzMjRkNWE0YzE5MTRhNDEzMTA5OGZlZiBsZWdhY3ktdHJ1bmsKKzI0Njk5IGM0NGM5MTE2MDZhNDRjZjcxM2EwMjBmZTA0YTgwYTNhNmYxZGE4OGYgbGVnYWN5LXRydW5rCisyNDcwMCBlYjc4ZjAzZGNkZWM2ODMwMjgzZjNhMWU3MDllNDYwYWJlMGUzMmEyIGxlZ2FjeS10cnVuaworMjQ3MDEgODFhNTc4ZWI3MzQ2Mzk1Y2ZkNzcyZWZiNmVhOTA3ZjE2ZWRkZjk0ZiBsZWdhY3ktdHJ1bmsKKzI0NzAyIDQyY2Q1MDU5NGQwZDk3ODJkMWM3YjYwM2FiYjIxMGY3MzJhZDg1MTMgbGVnYWN5LXRydW5rCisyNDcwMyBkZmFjYzczM2NiZjRiNWM5NDU2YzI3ZDJmZTVkM2YxMzA0Yzg1NTQ3IGxlZ2FjeS10cnVuaworMjQ3MDQgNzUwMzdkODZiMTEzNjMxODE3MGY4ZWM3ZTllZDAyYzI5ZmMzMjQ1MSBsZWdhY3ktdHJ1bmsKKzI0NzA1IDk2YmJiM2QwYzZhMDQ0ZjAxNjI1ZTFhYmU3ZWM0NTdmNDVlMWVlNmQgbGVnYWN5LXRydW5rCisyNDcwNiAyYzMyZmM1ZjIzYzAzNzA0M2YyZTVlMWJlYjczMWRiMzM3YjZlNzFmIGxlZ2FjeS10cnVuaworMjQ3MDcgNjU3OGM3ZGMzMjhiMWU3Mjc2OWY5OWJlNGQ2MjQ1ZDkyYTljMTY2OSBsZWdhY3ktdHJ1bmsKKzI0NzA4IDNmM2VmMDc0MzUzN2IyN2E0MDg3MGViZTdkOWZmMzgwYTAyMjFhMGYgbGVnYWN5LXRydW5rCisyNDcwOSA4MmFmNTRiNDM4MTc3NTFjZTNlNGY0MTA0YmQ0NDUwMjcwNWQwNWM1IGxlZ2FjeS10cnVuaworMjQ3MTAgNTYwMjIyZTlkNDcxMGIwYTRmNjI3NWYyYmQ3NTNhYTI2NWQ0ZmYzMCBsZWdhY3ktdHJ1bmsKKzI0NzExIGVjMzJlNTlkZjQwMGJiNzY3ZDQwNzJkZTZjMmVmYjJmOTQwMDEzMDQgbGVnYWN5LXRydW5rCisyNDcxMiA1YzliYTI0MTgzOTAxYmY1OTI0Mzc4YzkxZTkyZWYyMjc4ODg4MmYzIGxlZ2FjeS10cnVuaworMjQ3MTQgZGUxMjU3OTJiZmFhZGRkMDgyYTc5MDZiOTI1NmMwMjRmY2FiNWFkMyBsZWdhY3ktdHJ1bmsKKzI0NzE1IDMzZDU5ZTE4YjY4ZDQ0NGEzNWQ1NzdjNmZmYTkwNTQxYmY4ZGZiOGIgbGVnYWN5LXRydW5rCisyNDcxNiBjYjA4YmM2OTg2ODU5ZTc0ZDY1YTY5YWMwNDc5NDc1YmQwODNhYzIxIGxlZ2FjeS10cnVuaworMjQ3MTcgNmRhNjA5MWEzMWVlZjIwOWE2MTE0N2MxOWJkM2U4OGJmMTQxNGU1ZCBsZWdhY3ktdHJ1bmsKKzI0NzE4IDA1YmM1OTA1MjI0OTM0ZWZhNDM2NDA4MDMzMmIzM2M2MTFiYzQwMGMgcjIycmMxLWJyYW5jaAorMjQ3MTkgMjJjOTg4Y2MxNTJkMTIyYjI0NzE3ZTc2ZGM2NDA4MzdlOTUyZDkyYSByMjJyYzEtYnJhbmNoCisyNDcyMCAzZDk3YTA1NGY5ZDRhZmU1YTZhNzg2ZDNiNmU4MTdjZGYwYTEzN2E2IGxlZ2FjeS10cnVuaworMjQ3MjEgNjk4YjZlZWI5YTg2ZDg5MzgxYmIzMzU5YTgyNDhjMWIzOWEzZTc0OSByMjJyYzEtYnJhbmNoCisyNDcyMiBlYmY4YTAzNjE1MWQ0NjVjMjU5NmVhODJjZjBhMjExYTkwZjNkZTdhIHIyMnJjMS1icmFuY2gKKzI0NzIzIDIwNGQxZDViMDhkNjhhOGM3OGY1NzA4Mzg1ZGJiYTI2ZTk1MWM2ZTggcjIycmMxLWJyYW5jaAorMjQ3MjQgZmJkNTdlZTViNzdkNzgyNTAwOTI5MWNlNzVhMWQ1ZDg2YTIyMDkzNiBsZWdhY3ktdHJ1bmsKKzI0NzI1IDNjZTg3MWEwNDU1YjUyZDVkYjQ0MjFhYjkwZmQ1NmE5YmZlMTMxYzYgcjIycmMxLWJyYW5jaAorMjQ3MjYgMzYzYjJmNzUyOTM1MWVkY2FiYjA1ZTliYmQzOWYxMjYzNTE3ODIxYSByMjJyYzEtYnJhbmNoCisyNDcyNyA2ZWE3MTkzYmRjMmVhZmQxOTQzZTVhZDgzNTdhOTIyODA2YjZmZWUyIHIyMnJjMS1icmFuY2gKKzI0NzI4IDA2NDMxMTE0OWNiNGQzZGZjNDhiZWUyZmM0ZWM5MTdjMDdlYzZhYzEgbGVnYWN5LXRydW5rCisyNDcyOSAyYWZlNDJmMjQ1NTkwOGYwZDAwZTQzZGJmYWFmMmNlODIzZjA0ZDAzIGxlZ2FjeS10cnVuaworMjQ3MzAgOWM4MGI1YWY4MTIxYTc0YmRhMjcwOGVmYTNhZjhjMWY2MGViNTE3NCBsZWdhY3ktdHJ1bmsKKzI0NzMxIGZlMThlYjA1NTEwNzQwODI2OWI1Mjk2YmRjZTAwMjAzNWQ3YmQ3OGQgcjIycmMxLWJyYW5jaAorMjQ3MzIgY2VkYjUwMzkxNTVhNjU1MzMxNGEyZjc0M2ZmNjM5N2M0ODc2NjQzYSBsZWdhY3ktdHJ1bmsKKzI0NzMzIDMxYTI0OWEzNDBmODE3YWQyOTFiN2JiYjdiNzVjN2M1ZThiY2FkMWYgbGVnYWN5LXRydW5rCisyNDczNCA4NTA4NmYzZTcwZjM0Nzg4OTNmNGM2Y2VkZDcyYTk0YmU4MjAyZTFjIHIyMnJjMS1icmFuY2gKKzI0NzM1IGZkYzBjZjU2YmE5Y2ZkNWYwMjRlZTQyZTdhOTBkNWIxNjBkZmZkYmMgbGVnYWN5LXRydW5rCisyNDczNiAyNzY2OGRhYjc3Zjg4YWNmMmVlYTA1ZjdmMGQ1OGQ2MTljMWNiZDEzIGxlZ2FjeS10cnVuaworMjQ3MzcgMDQwNzI5NDAyMWEwYTZhMDE4YTE2ODIzNDUxZmZmZGQ0NWQ5MjVkMCBsZWdhY3ktdHJ1bmsKKzI0NzM4IDFkODlkYTgyNWY5NTc4ODZlYmRiMmNhMTMxOGZmNTI2MTNhYmQ1YzMgcjIycmMxLWJyYW5jaAorMjQ3MzkgMGE5NDhjZTQ3ZTdhMDZhMzUyNjc1N2Y3YjNmYWZlOTM1M2VjMWRkYyByMjJyYzEtYnJhbmNoCisyNDc0MCBlNjNmNDY2OGM5NWQwODcwOTNlYjY2NGE3ZTI0MWY1NTkyMTY4Zjc0IHIyMnJjMS1icmFuY2gKKzI0NzQxIGZmMWI1NzFhY2E3MTBmNDAzOTE5OThkNjljNWIwNDllMGEzZGNjMzEgcjIycmMxLWJyYW5jaAorMjQ3NDIgOGZiMGMyNGY0ZDQ1MGQ5NDBiNGU1Y2Y2MzMzYzYxY2E2M2M1YzgyYSByMjJyYzEtYnJhbmNoCisyNDc0MyBiMTE3NzRjY2QxMDFmNzMwZTkyNzEzMGNlZjEwYzgxODYxYjAzOGMyIHIyMnJjMS1icmFuY2gKKzI0NzQzIDdmNDY3OGVlZmFmYjE0MzkzNWMzOWMwMzY0ZTBiNTNiMzNkMjg4MjAgcjIycmMxLWJyYW5jaAorMjQ3NDUgNDIxNmVmMTk2MjBiYmRlZGU0Y2IzYjFmMzA1ZjU5NmE4ZTM3ZWU2MyBsZWdhY3ktdHJ1bmsKKzI0NzQ2IDhiMmJkMDc4MDkyNWY5ZDVmMWM2Yjc3NzBlY2E4ODJkMzEyNDQ0NjcgbGVnYWN5LXRydW5rCisyNDc0NyBmNTM2Zjg1Mjk1Yjg2MzdjYmYxNWE3NWUzYTU3MjcxZmYyMjJiNDZkIGxlZ2FjeS10cnVuaworMjQ3NDggM2ZjYjIyNDhiYmU4ZDkwN2U4ZTZjY2UxODg1YzZiMTE4MmJmOGUyMiBsZWdhY3ktdHJ1bmsKKzI0NzQ5IDZiMzBjM2Y0Mzc4ZDQzMDRjZTFlN2Y2ODY0MjY3NTFhZGM1ZWEzZTQgbGVnYWN5LXRydW5rCisyNDc1MCBjMzkyMGM0MzUzMzMxODg0ZjJmMjI4ZGFmZTUyY2FmZjdiZTk2N2U0IGxlZ2FjeS10cnVuaworMjQ3NTEgNTcxZDViN2I3NDZjODJhZDgxMThkNDJjM2I2YTJhZmVjZWFlMDZlZCBsZWdhY3ktdHJ1bmsKKzI0NzUyIDgxMzQ5ZTUxNjU5YjUxYzVmY2RlMmFlYTJjZDFiYTQ5OTZlNzBjZmUgbGVnYWN5LXRydW5rCisyNDc1MyA0Y2IyMjNlZjg2OWJhMDUzN2M3YzkxYmNiNzAzOGRhNzUzODU4NjYwIGxlZ2FjeS10cnVuaworMjQ3NTQgYWE0NzUzZjk0NTcyMjE0MTYyMTYwOWI5OTdkMWYwYmE4MzdiMmFjMiBsZWdhY3ktdHJ1bmsKKzI0NzU1IDU1OTIxMjU1ZWM5M2QyMzQzODRhZjFhNjc2ZTQ3ODE0MTAzNTY0ZTAgbGVnYWN5LXRydW5rCisyNDc1NiAyNzRhYTkxYjQxN2MxM2Y1MDk5MDIyZjIwZmQ5NjMyN2EzM2I3ZDgzIGxlZ2FjeS10cnVuaworMjQ3NTcgZTBlMmI2MTYxYzdmZDZiZGVhZTdhYThjMTQyNDZjYzU1MDI2MzUwMSBsZWdhY3ktdHJ1bmsKKzI0NzU4IGE5NjU2Y2UwMTViMGQ4ZjEyOWQ3OWE4NzcwY2E0MDQ3NWZhMmU3OWIgbGVnYWN5LXRydW5rCisyNDc1OSAwNjNmOGEzMWI2YjhiNzI5ZTJjOGY4N2UxOTM0OWY2MjI3YWI2NGVjIGxlZ2FjeS10cnVuaworMjQ3NjAgYTYyMGVmODRiMGZiMjYyMzE4NTE4Mjg0M2RmY2ZjZjUzNTBiN2M3MSBsZWdhY3ktdHJ1bmsKKzI0NzYxIDNmY2MyZTI5OTJkNGQ1ZTU3YjQ3N2I5NDU1ZTAwOGYxN2YxNGI4ZDggbGVnYWN5LXRydW5rCisyNDc2MiBiMmQzMzkxMzY0YmJiNzMxNmNmMDMwNDgyODk2YmJkNzkwNzM0MjE5IGxlZ2FjeS10cnVuaworMjQ3NjMgZGJkNmE3NjEyMTU5NmJlMDNiM2NjYWE3M2RjYzRmYmY0YzI5NDE0MyByMjJyYzEtYnJhbmNoCisyNDc2NCBhMDI5ZTM0ODMwNGM4ZTdjYTU5MTM4ZjA5NDY1ZWJmMmE4YjkzMjExIGxlZ2FjeS10cnVuaworMjQ3NjUgZmQ5ZDdhZTNmOTRhNzAyNWRlNjVkNTIxOGYzNGIzODhkZDc2NTEyYyBsZWdhY3ktdHJ1bmsKKzI0NzY2IDNkMmNjODU3NzEyN2U1NjNlOGZiMmNjYjRhMDRhMmE1MGI1OThmMjUgbGVnYWN5LXRydW5rCisyNDc2NyAxNDUwZWU2YjhiOWVjZDdkYTk3YWQ2MDI2NjI0MzkwZGJlMmUwMzdkIGxlZ2FjeS10cnVuaworMjQ3NjggYzY1ZmFjN2MyODQzM2U2ZTg2MTRmNWNmODZlODkzNDJmNTkzZGY4YiByZWxlYXNlMjEtbWFpbnQKKzI0NzY5IDk3ZDg1Nzg4MWM4MmFmM2QyZGU5N2I4N2VlZGI2NGVjYjIwOWJjNTEgcmVsZWFzZTIxLW1haW50CisyNDc3MCBmNTQ2NjIzZWYwYzY1NjVkY2ZiNGU5MTRhZTM4YzlkZDdlZmM1NDMwIGxlZ2FjeS10cnVuaworMjQ3NzEgNWE1OTBmMTk2ZWM1ODNhNzE4MGFlN2NhNTU4ZGQyZDZiMWQ5YjQ5YSBsZWdhY3ktdHJ1bmsKKzI0NzcyIDlhNjM0ZDYwNTQyYWU3MTY0NDYyNzMwYzU1NDY3ZWMwMzk2NTFiMzYgbGVnYWN5LXRydW5rCisyNDc3MyBkN2E5ZWJhNzRmZTI2MTFjZmEwZWIwZjEwNzIxZTEwZGIzYzkzNTA1IGxlZ2FjeS10cnVuaworMjQ3NzQgMzBlZmU0NmY4ZTNjYWE1YWIxZmU0NDBhMThiMzE3MzlmYjdlYTQ2NCBsZWdhY3ktdHJ1bmsKKzI0Nzc1IDA1YWQ3YTY5ZDkzMzExYzdkZjFhOWQzYWM1YjM1NDkwODZlNTI1MmYgbGVnYWN5LXRydW5rCisyNDc3NiBkN2QyNWVjMDJkNDEyOWJlY2UzZWYwZWM2Y2ViMDJiNGI3Mjg0MzY3IGxlZ2FjeS10cnVuaworMjQ3NzcgNGY2MjFiYWM3NTI2NWRhMjdlZDQyYjMzYThmMjExYzk0ZTgxMDFkZCBsZWdhY3ktdHJ1bmsKKzI0Nzc4IDUxOTMyOTBhZWYwYTViNGMxZTMzODY4MmU3NTQxODgwYWYzZmRkYjIgbGVnYWN5LXRydW5rCisyNDc3OSA0MGM1NmZlZmExNzcyYjYyOTQwNjlhYTI1M2FkNTMxYjUxNTFjNjY5IGxlZ2FjeS10cnVuaworMjQ3ODAgNzdjNzQ3NmY0MWJkZTc2NzQxMjgzYTA1OTA3YzdkOWMyMmYyYjY5OCBsZWdhY3ktdHJ1bmsKKzI0NzgxIDdlNzQ1NTg5MGZkNmViMWE1OWM2ZmI1NTQ0MTZiMmVhMDMzNDEwYWYgbGVnYWN5LXRydW5rCisyNDc4MiA5N2YwOTk2NzFiYmNkZGU4ZjAyYjhkZTAzYzZiYjMxNTNjODNmNjEzIGxlZ2FjeS10cnVuaworMjQ3ODMgM2FiZjAwMjE1YzFjY2UwNjMwM2I1MjAyZDdlMjlmMTUwZTVkNWZmZCBsZWdhY3ktdHJ1bmsKKzI0Nzg0IGZhMGJkZTNjODZiMjc4Yjk1ZDBkZWRhZGJkN2Y0ZGQwYWQ5YzkyZGUgbGVnYWN5LXRydW5rCisyNDc4NSBiZTVjYTBiMjViZmRjN2JkYjI2MzE4MzBhNWQyZTFhYWQwODBmMzk1IGxlZ2FjeS10cnVuaworMjQ3ODYgZmI2YjNmYzRlMGMxYWFiMTM0NjgwYzllYmYwZjg3NDY3MzcwYTJhZiBsZWdhY3ktdHJ1bmsKKzI0Nzg3IGJkMTJiNTk3M2RhYTk5NjUyNGUxOTVhNjQ2Zjc2N2I5NjlmODUyZjQgbGVnYWN5LXRydW5rCisyNDc4OCA3YWY0NWFmZmQzNTMyYTBiMDhjZjdiYTg0YzZiNzViNWQ2OGIwZDdkIGxlZ2FjeS10cnVuaworMjQ3ODkgOTg0NjQzOTRjY2UzMzY4M2JhZWUxNmZmYjhiMmNhODQ2M2M1MDQ1YiByZWxlYXNlMjEtbWFpbnQKKzI0NzkwIGUzYzJmZDE3N2E2ZTRlMmVlNzg5ODkzNmE4MGM1Y2VlNTI4ZWM0ZjEgcmVsZWFzZTIxLW1haW50CisyNDc5MSBjNTc5N2EwMDgzZDhmYTJhMGQ1MzZlNmQ4NGQ1OWZhOTFmYWY5ZWEwIHJlbGVhc2UyMS1tYWludAorMjQ3OTIgNDY1YzkzMjVhZjY5ZjQxODY0ZDI2Y2U4NzcwZWRjNjliNTJlOWYzZCByZWxlYXNlMjEtbWFpbnQKKzI0NzkzIGY2ODVmMDcwNGJiZDNhOTg1Y2QyY2U3ZWI3N2I4ZmUwMTAwODQ3ZmYgcmVsZWFzZTIxLW1haW50CisyNDc5NCAwZjc0ZGI3NGE4ZjQwODAzMDdiYzQ4YTdiZGQwYjVkZWM5NmM2MjhhIGxlZ2FjeS10cnVuaworMjQ3OTUgMzMwM2YyZDkyY2VmOWM4ZDM0ODkyZWNjNzQwNDc5ZTcwMWQ5YTM3OCBsZWdhY3ktdHJ1bmsKKzI0Nzk2IDY2NGFjODIyN2NjNTNmM2UzNGFjOWRmZTkwNmI5YmFlMmRkZDg2NmEgbGVnYWN5LXRydW5rCisyNDc5NyBkZjc3MGRkMGJlYzRhNzZmZWZiYTRiMTdlMjE3YmJlODE4YmJmOGExIHJlbGVhc2UyMS1tYWludAorMjQ3OTggYjI3NTk5YWJjYzQ5YTExN2U4MWRkZTU3OTk3ZmFkZjQ5YTJjZjk2YSBsZWdhY3ktdHJ1bmsKKzI0Nzk5IDk0MjMyNDU1MTRhODg1ZWM5ZTc3YmQ5YjdjZmE4YTFjZWRhNzA1NTQgbGVnYWN5LXRydW5rCisyNDgwMCAzYTkzMTQ1YjZhOTYzMmRiMjY5NDZkYTliOTdhZjIzYWU3MDViZjhkIGxlZ2FjeS10cnVuaworMjQ4MDEgNGUzNWZhNWQ1NzA4ZGM1NTcwY2JlYTMxNzkyZDZhNzRjM2IxYzJmZCBsZWdhY3ktdHJ1bmsKKzI0ODAyIDgzNDhlODQ0MWVhZjc1YmU4OGViYmU5Nzc5MmMzMDgyMWI0MmI1NzEgbGVnYWN5LXRydW5rCisyNDgwMyBmMThjZmRlMmU4MDQ5ZThlMGQyOTZmY2RkZDRmM2NiY2E2ZDhlMzFjIGxlZ2FjeS10cnVuaworMjQ4MDQgOTU5YTJlZDU3MzVjZDA4NTliZGJlOWRkNmZjMTliYTVmOTExYzcxZSBsZWdhY3ktdHJ1bmsKKzI0ODA1IDgwM2FhMGMyYjEzMGY5MmQ1ZDQyNTc5NmM0OGYzNWM4NmY0ZDFjODYgbGVnYWN5LXRydW5rCisyNDgwNiA2NzNiYmYxMTU1MDg5MjI1ZjRlOWJhYjI2MGY4MzQ5ODY2ZTZkNDI2IGxlZ2FjeS10cnVuaworMjQ4MDcgZTFmM2ZlNTY3N2RhM2Q4ZWU1ZWU4YTRhMDhiZDhmZTUzMmQ0Mzk4OCBsZWdhY3ktdHJ1bmsKKzI0ODA4IGEzYjA2NzNiYTJjYTVmYTQzYzM5ODU1Njc3ZjRlNDVkNDU3YTEyNmYgbGVnYWN5LXRydW5rCisyNDgwOSBhYWMyMzMzMWEyNWQ3ODMwZWZjZmI2M2E5ZDMwYzczYzM1ZjAyY2M1IGxlZ2FjeS10cnVuaworMjQ4MTAgYWYyNjIzYmI1ZDBiYzNkOGRhNGIyZWQxZGVkOTA3ZjEyNGQ4ZTYyYiBsZWdhY3ktdHJ1bmsKKzI0ODExIGNjYjI2YTExODg2N2U4MjA0Yzc0YTc2ZGU4ODBhNzQ2MjUwNzM0ODQgbGVnYWN5LXRydW5rCisyNDgxMiBiNDg5MTBhOTU3OTcxYTc5ZTlhMzk3NGVjYjc5M2E4ODZlZjQ1MDNmIGxlZ2FjeS10cnVuaworMjQ4MTMgNGM4MmM4ZWQ2ZGY0ZDRjNDdkNDc1NWE5OTQzZTBjZjJhNzA0ODIwMiBsZWdhY3ktdHJ1bmsKKzI0ODE0IDIxYzdkNzU2NTk3N2NlYTY5NjY3ZmQ4NDYzNDM5M2U2OGQxM2U3MmYgbGVnYWN5LXRydW5rCisyNDgxNSAwMGIzYWQxY2U0MDRkNmZmZDMzYWI2NGVlZmMzNTZkMGExMDhiYzlkIHIyMnJjMS1icmFuY2gKKzI0ODE3IDAwM2E5ODVjYWI5NWJiYjZhOTliNjM2MThiMGFmZDIzYTQzYzYyYzIgbGVnYWN5LXRydW5rCisyNDgxOCA3NjIyNTQzNGE2ZmVkNzQ0YTFjMmQ0ZTlkZWRlZTAxNDdlYmU4N2Y2IGxlZ2FjeS10cnVuaworMjQ4MTkgODczMjkxYTQ4ODllYzkyZTZlYjA4ZjQ3NjA1YzYzODM0MWNjNGZkZCBsZWdhY3ktdHJ1bmsKKzI0ODIwIDJkMzc2ZDkyNmRhODJhOTAyMWZhODE0MmI0ZDVlZjQ2MDIwODEzOGEgbGVnYWN5LXRydW5rCisyNDgyMSA5ZDk1YzFhODljZmNiMGEzMzk3YTk2OGJlNzRhMzBmZTM2YzI0OGMzIGxlZ2FjeS10cnVuaworMjQ4MjIgNWUwNmY4ZmUzOGVlNGFmZjgzN2UxMTZkMWE0M2RiODM4YTY4ZGQ0NyBsZWdhY3ktdHJ1bmsKKzI0ODIzIGExOTkyNjk0YzgyNDI1ZTBjNDI1YzRlMzEzMTEyM2Y0YWVkN2Q1OTEgbGVnYWN5LXRydW5rCisyNDgyNCBiYjE2OGRlNTBhMDMyYjczOThjOGU0NTBmMWFiMzYyNjE5YmRkM2RmIGxlZ2FjeS10cnVuaworMjQ4MjUgMWQxYzQ2ODI0ZmMzZTdlZDUwMGFhNzRhNTRiZjQ3ZTJiMWE1YmY0ZCBsZWdhY3ktdHJ1bmsKKzI0ODI2IGJmNjQ0OGYwMjI3Mzc0ZWRhOTE4OWVlZTViZGFjNTgyNzZjYmQxNjMgcmVsZWFzZTIxLW1haW50CisyNDgyNyBjYTQ1MGU0ZGZmOWE2MjY0ODQwNTIxN2M0ZTQ0MDdkZWZkOGM4ZWQ2IGxlZ2FjeS10cnVuaworMjQ4MjggMDQ0NjMwMTYxMDkzYzkxNzQ0YzUzOWU2ZjUwYjllZDQwYjYzYWRhNiByZWxlYXNlMjEtbWFpbnQKKzI0ODI5IDE2MjEwNmIxNmU0NDRjMWE0NzViNjA4NGQwZGZmYTQ0YjMxNGRmYjIgbGVnYWN5LXRydW5rCisyNDgzMCA0NGM0NzlmODRlMzY4YzBiNWYzZDg1MzU4NGJjODg5YWYzMjY4MTI4IGxlZ2FjeS10cnVuaworMjQ4MzEgMjQ3NDQxNGQ0MzQyOTI0YjA2ZmJiOWRjMThiYjA2NDQ2ZmFmODRmMSBsZWdhY3ktdHJ1bmsKKzI0ODMyIDdjMmY5NWRlY2NhZDVlMjQ4NDg1YzA1MDE3Mzg3MDE3MDM2YjdhODEgcjIycmMxLWJyYW5jaAorMjQ4MzQgNjVmNDA5NGY0M2Y0NmZkNTI5YTY4NGZlMjlhNzhjMTUyMjAyMTNiZiByZWxlYXNlMjEtbWFpbnQKKzI0ODM1IDgxNGNlMDkyOTUzZWMyM2YzOTgxNGZjOGRjMGQ0MGJmZDc4NWU3NWEgbGVnYWN5LXRydW5rCisyNDgzNiBlOTIwMmZlMzJmMGI4ZmY2ZWFiODU5OWQyYzM0Zjc2OGJjOGJkNmZkIGxlZ2FjeS10cnVuaworMjQ4MzcgODhiYWE0YzRlZWUxMDViNmU0NzlhZjRlNWJkMTM3NjY5MzBhOGM3ZiBsZWdhY3ktdHJ1bmsKKzI0ODM4IGNjYTU2YTk3NmNiMjVjYjA2MDI0ODUxZTgxZmExMmYyMGIyYTZiNDYgbGVnYWN5LXRydW5rCisyNDgzOSA0YTM0ODYyYTM5OTQyM2Y0NzAyNTkzOWQzNDRmYzM4ZjBhZDgzNTcwIGxlZ2FjeS10cnVuaworMjQ4NDAgNjUyZTE4Mjc5NTgzYzE0NmE5Mjk2NDg1ZDE3Y2RkOWU0YWFmZjE0YiBsZWdhY3ktdHJ1bmsKKzI0ODQxIDVhNTA0MTAyYTA5YzUwMjQ3YTEyM2E3N2Q5MWQyYWNmMzMxOWRiYWMgbGVnYWN5LXRydW5rCisyNDg0MiBhMDNiMTNiZTJmNjhmOTViZDQ2ZGJkZTFiMmNhODYxYmZjZmE0OTlhIGxlZ2FjeS10cnVuaworMjQ4NDMgMzgxNWE5NTk4MTljNDY5MzgzYjVlN2YxM2ZmODgxMWNhYTRjNDQxYSBsZWdhY3ktdHJ1bmsKKzI0ODQ0IDNjOWYzOTFkN2UwMzM4NDIwY2MyYmY4OTU5YWZlYjA1MGQ5YjJjYmQgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NDYgMzI0OGVhZDcxOTI4NzlkOGNiZDBjNDA0NzRmMTMzNDA3ZmVjMWQ2OSByZWxlYXNlMjItYnJhbmNoCisyNDg0NyBkNmE0NGZkMWY0YzE0MzcwOTA2NzkyNzYyMTlmNGQ2NzY2NjFmYzg5IGxlZ2FjeS10cnVuaworMjQ4NDggZTNkZTM4YWE2NDYyMzE0ODFhZDAzNjRlNDlkMDA3Yzg0NDA2N2RhZiBsZWdhY3ktdHJ1bmsKKzI0ODQ5IDA5N2RkOTUzZTExOTYyNGYwMTlmODkwNWVjMzhiZjc1NTMzNmQ2ZmYgcmVsZWFzZTIxLW1haW50CisyNDg1MCA1NjhjNzVkZDUwNzgyYTliNDAzMTE3MTZjMjNiOThjYjBmZTNiMGNmIHJlbGVhc2UyMS1tYWludAorMjQ4NTEgODVlNjk0ZTliOWZjMTQ2NDRkMjU1MWIwMzQxZDJkMGFmZGVkZTk5NyByZWxlYXNlMjEtbWFpbnQKKzI0ODUyIGUzYWE1YWFiMjg3NmRmYmUxZDlhZDFhZjllZTViZGZkMDdhY2VkMTIgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NTMgODJhYzgzNDc0NDYyOTExMjVhZTFjZWNmY2ZhODNjNjhiNzYwZmRiNiByZWxlYXNlMjEtbWFpbnQKKzI0ODU0IDI1YmFiZDQzMmIyNGY0YmIxMjVkYWUxZTJjYmVlOGYxNzYwMDZmZmYgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NTUgMzI2ZDk5NzJmNmY2MTAwMzZmOWE0ZThiYmVlMjFhMWE2YTdmNjQwNyBsZWdhY3ktdHJ1bmsKKzI0ODU2IGU4ZDM2YzE4MzEzNzU3Mzc0ZmJjMjg2NWJkMjAwZTQ3MjQ1ZTlkYjYgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NTcgMDQ2MTJkYzMyM2RmMzA4MjBjNDhlOGU4ZThkMjE3MDU0ZGM3M2NmZiBsZWdhY3ktdHJ1bmsKKzI0ODU4IDc2N2QyNDVmZDhkY2ZiNjllZjZiNGYzM2I0YjliMjgxZjBmMzdlZTUgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NTkgMDk1MThjNGM2ODUwOGI0MmQwOGY3MDg5YTQ0Yjg5YWQ5MDBhMjU2NCBsZWdhY3ktdHJ1bmsKKzI0ODYwIDQ4ZjMyMTk4Y2ViOTFmNDlkZDhhMDBhNDBkOTJkZDRhNTVmZTA1N2QgcmVsZWFzZTIxLW1haW50CisyNDg2MSAwODI1ZWIxZGJlYjgxY2FiNzYwMTdmNWY0ZWEzN2ZiYTAwOGFkODI3IGxlZ2FjeS10cnVuaworMjQ4NjIgMTc5OTc4MjA5NzFkMGMyOWJlNTdkY2M1YTFkOWY5OGE5MjNkMTRlMyByZWxlYXNlMjItYnJhbmNoCisyNDg2MyBmYzllMjcxMTcxNGRlZTk5NTk2YWQzNjQxM2QwMmEyYmNmZmU4N2JkIHJlbGVhc2UyMi1icmFuY2gKKzI0ODY0IDZjMjNhM2ZiMGIwNDk4NzJhNTM3NzRhZWIxNzUwNjcyNTA2YjNhMmUgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NjUgNjA2MzU0NDAxMzk2ZjU0MDZiZmEwMTk5ZDcyZmE0YWIxZjcwNjNmZiByZWxlYXNlMjItYnJhbmNoCisyNDg2NiAzZmZlZWRhMDIwZGNhZTEwZDY4MjIzMmU3YzVhYjNhOGI0MDBlNGRiIHJlbGVhc2UyMi1icmFuY2gKKzI0ODY3IDQ3OWNmODgyYmRiNWU2NjJjYjcxOGZkM2JlMzNhMDUwNzJiNDVkMDIgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NjggMTEwMDNiNjY1NTQ1ZDYxZjE0OGJlN2MwODUwMDljMmVjNTA3ZDUwZSByZWxlYXNlMjItYnJhbmNoCisyNDg2OSAzMjQ2ODRhZGI0ODM1MjQxMDUzMDEzY2U4NzAwYTU2NDA2MDgwMDVjIGxlZ2FjeS10cnVuaworMjQ4NzAgNzRjNWRjYzE1YjczNTU2NTQ5MjY4OGE1YmU2MGFlODY1YTcxNjg1MyByZWxlYXNlMjItYnJhbmNoCisyNDg3MSBlOTNmMTQ0ODYyZGU5NzJiMWIxMTdlNDZhMWZjYTMyZmZlMjA0NDY3IHJlbGVhc2UyMi1icmFuY2gKKzI0ODcyIDhhZjg2YTk1MmIyY2EzZmEyMGI3ODNmZThkOGRlMDM0MWQ3MmNlN2UgbGVnYWN5LXRydW5rCisyNDg3MyA0Zjg5MzIxMzRkY2EzYjNmZDdhNDgxMDIxMjNiYjY3NDhlYTQ0MTA5IHJlbGVhc2UyMi1icmFuY2gKKzI0ODczIGRjYThiNTg3NDY0MzlhOWY3ZGYyMTJmNjQzZWU0ZDQwZWI4ZGYyNGIgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NzUgOTM1Yjg2MDJjYWQ5ODM2NzA0YTNhYTE3Y2JiZDhlNGVjOTgyNDA5MiBsZWdhY3ktdHJ1bmsKKzI0ODc2IDkwMjUxOTdhOGVhMGM0YmJjNzZhMGQwOGIyNDRlNGE3ZGQ4YjAyMzIgcmVsZWFzZTIxLW1haW50CisyNDg3NyBlMGE1ZDE2YTljYjk1MTk2Y2ExODYxNDQyMzA5M2JlYjIyMWUzOWQwIGxlZ2FjeS10cnVuaworMjQ4NzggY2I1NWYxNWIyNzMwMTA1ZmQ5YjU5M2UyMWE5OTA3MjRjOWI5NDVhNyBsZWdhY3ktdHJ1bmsKKzI0ODc5IGI0ODRhYTYxY2FiNGE2YWVlNmZmMDdmMTg5MmY5NWE0NWE5YjdlYTEgbGVnYWN5LXRydW5rCisyNDg4MCA5ZDQ4MGQwZmU2OTA1NzFjZmJhZTUyMGIyZDcxZDY1YmMxZWFlMDIyIGxlZ2FjeS10cnVuaworMjQ4ODEgMjY4YjU3ZDlkYWVkMThhM2M4ZTc2YjVkNDNiMGZhOGE1ZDkwYzkzNCBsZWdhY3ktdHJ1bmsKKzI0ODgyIGZjODEzMTY0Y2U5Zjk4MTNlNjcyMDBiNDY3YmM4ZTlmODU4YmRkY2IgcmVsZWFzZTIyLWJyYW5jaAorMjQ4ODQgMzQ5ZDY2Y2Q4NzRjMzM1ZGM0NjU2MDk0YmQzYmM0NzZmMWFiOTUyZCBsZWdhY3ktdHJ1bmsKKzI0ODg1IDdjMjhlOTU2ZjliMGJhZDZiYzZhMTQ5ZTNlZWVjYmUwMWYyN2VjMDYgbGVnYWN5LXRydW5rCisyNDg4NiBhYzNjZTFmYWVjNjhlYTNjNzExNGExY2YwZGU0Y2ZjMjY2MGY3YTM0IGxlZ2FjeS10cnVuaworMjQ4ODcgNDIzMmQyNTdlNGZmMjJlYjg3ZjdiMzM1MDE4NzQ3YTlkNzZiMzBhNyByZWxlYXNlMjEtbWFpbnQKKzI0ODg4IDQxZmY0Nzc3OTI2ZWI1MTkxOTlhNWRiOTcxZWU1NWQ5ZWFjZGZjYTUgcmVsZWFzZTIxLW1haW50CisyNDg4OSAxMzM5YjZkMzJlOTUzZGI4YjhiNmI0MDY3Njg3OTk0NzgyMjM0NGRlIHJlbGVhc2UyMS1tYWludAorMjQ4OTAgZTY5YjIxZjI1MjllZTZjNDU5YWEyZmI3MjY4ZmU5NDgzZmEzNTVkYSByZWxlYXNlMjEtbWFpbnQKKzI0ODkxIDRhMmMzYWUwOWUwYzRlZmRlYTJhNTYzY2M4MzcwNmNiMWUzZGRjMDIgcmVsZWFzZTIxLW1haW50CisyNDg5MiAyYTc4NWI2NjhhMTYwOTI1NGVkYzdmNjBiM2Q2ODYzZmIwYTcyY2RlIHJlbGVhc2UyMS1tYWludAorMjQ4OTMgMDA2YzU1YmRmN2UxNTZmYzJlNTc1NmVkZGM0MGY1MjdlZjY5OTJiYSByZWxlYXNlMjEtbWFpbnQKKzI0ODk0IGM0OGQ4YjM2MmFjZWUxY2RlMmIwNzQwNmJhYzEzYzA4ZDQyNmJjNDkgbGVnYWN5LXRydW5rCisyNDg5NSBjYTI3ZDgyYWM4OWI0NmUzZDNlOWVhM2UwN2EzMzQ4OTJjOWQ3NzA4IGxlZ2FjeS10cnVuaworMjQ4OTYgZThjYjIzNmFhZDI3OTYyNmZhYWY3ZWJhNmM0Zjg2YjU4MTUzYzYxYiBsZWdhY3ktdHJ1bmsKKzI0ODk3IDdiZGU5Y2E5MDU1NDkzNGUxMmVkYTZkNGQ2ZDkxYmNkYTQ4ZGU3MTkgbGVnYWN5LXRydW5rCisyNDg5OCAwYWY5YWM4N2ZmYmMxZDllMzI1NjZmODIxNTMxMTE2NTAxYTBiZThmIGxlZ2FjeS10cnVuaworMjQ4OTkgYmY1MTkzMjFlNzk2N2UyZDIwNmMxOTBiODJjYjc4MDE1ZGFkYzdiNCBsZWdhY3ktdHJ1bmsKKzI0OTAwIDVkNDEzNTYwOWVmYzFhODQwODNkZmViMWYxY2ZkNTIxOTlmMGNhOWQgbGVnYWN5LXRydW5rCisyNDkwMSA5YzMyZTkyMDBhYmVlOTFlMjE3MDkyNzI3NWM5MWNkYzBhNDM3NjhjIHJlbGVhc2UyMS1tYWludAorMjQ5MDIgNWYzMjEzNjU1ZDk1NWY0MTdiNTEwMWI4N2M0YWQzNTU4NmY2ODIxYyByZWxlYXNlMjEtbWFpbnQKKzI0OTAzIDExNGE2YmNmZTg2YmI4NGYxZmNhNjdiY2VjNTFiMWExYzAyOGZiOGEgbGVnYWN5LXRydW5rCisyNDkwNCBmNzIyNDRjZjg1YTliNzYyMmI0N2JhZDZkNzRlYjA4ZDY5YTZlMTZkIGxlZ2FjeS10cnVuaworMjQ5MDUgYWQxMjZjMDYzNjU0OGQzNWJlNDc1YTExZDYxNmNlNmU3N2JjYjYzMyByZWxlYXNlMjItYnJhbmNoCisyNDkwNiBhNjBmY2RjNzUzNDZiM2UzNjhhNDQ4NDA5OWZlMWU1N2JjN2E3MzQ0IHJlbGVhc2UyMi1icmFuY2gKKzI0OTA4IGQ1OTg2OGJhZmViMTBiMmNlZDhjMmFiMjZiZDQ2MzhiMDY2ODllOTAgcmVsZWFzZTIxLW1haW50CisyNDkwOSA1OGE4MmE0YmU4YjE3M2U1MmU5ZmNjZTFmZWUzM2I2ZmRjNWEzYjAwIGxlZ2FjeS10cnVuaworMjQ5MTAgNjg4NDJkMjk1ZDJjY2NkZjg2YjkwY2NiOWMxYzg0NjQ1NTZhNzE1OCBsZWdhY3ktdHJ1bmsKKzI0OTExIDgyY2IxNzQ5OGZjMWZiN2RlYjczYjJmM2I5OTI2MzhkYzU0ODM0NmIgbGVnYWN5LXRydW5rCisyNDkxMiAzYjM5YmEyYjgwMGVkZDdkOWEyNDU0N2YwNWYzMGQ1OWYzODNmYzZjIGxlZ2FjeS10cnVuaworMjQ5MTMgMTg5NDc5NmU5MzBjMTQ1NzRiZDMzNGRiZGU1Mjg2ZTUxODU0ZTk4OSBsZWdhY3ktdHJ1bmsKKzI0OTE0IDQ1NTQwNzJlNzZiNGYwOWFiNmZlYzk5M2I4Y2U5MDgwNGVhMWEyNDEgbGVnYWN5LXRydW5rCisyNDkxNSBiMmU3OWNhYTY4ZTBiMWM5YmM4NWNlMzlkY2IzM2JhMTFhYjRmMmMxIGxlZ2FjeS10cnVuaworMjQ5MTYgZTZhN2FkNmMzNjUyZGEzYTM4ZDRiZmEyNjU5N2M4ZGI1ZmNkMDc3NiByZWxlYXNlMjEtbWFpbnQKKzI0OTE3IDU4Yjc3ZWY0NzJkNGMyYTMzMjBmNjVjNDk4Yjc2ZTc0YjBhOGRiMDkgbGVnYWN5LXRydW5rCisyNDkxOCA1MjA1M2FmY2FkMzI1YzYzODY3YTljNTZlMDgxNTBiY2NjOTk4NjEzIHJlbGVhc2UyMS1tYWludAorMjQ5MTkgMWVjMzRhMGQwMmE3N2NlNDNhYjI5YmVkYjU1M2Q4OGVjYThhOTM1NSByZWxlYXNlMjEtbWFpbnQKKzI0OTIwIDQzYjY0MjQ1ZjFhYTdiOWUxM2M3N2U3OTY5Y2E5OTk3ODliOWQxZmYgcmVsZWFzZTIxLW1haW50CisyNDkyMSBhYjkyZWFhMTQwZWY5NGU3NWNkMmY2MzliOTVlNGY2ZWVhZDZiYWU5IGxlZ2FjeS10cnVuaworMjQ5MjIgODQ3NDI1ZDViY2E4MDc5MzliNzZkOTE4NjkxMDgxZjY4NDM3YjNlOSBsZWdhY3ktdHJ1bmsKKzI0OTIzIGY4NDc1MTM1YWMxMzQzNmYwNjJjMzVlZTE5ZjhjNmM3Yzg4ZjI1ZTggbGVnYWN5LXRydW5rCisyNDkyNCBmY2I2NDliMTAwNGRlMzdlOThkMWYyNzdkNGZiMTdhMzgwNDFkYWJjIHJlbGVhc2UyMi1tYWludAorMjQ5MjUgNWQ3NzgyNWJiYzEwNjU4ZjIxMTUxMzM1NWU4N2JhY2ZiYWRmMGY5OSByZWxlYXNlMjItbWFpbnQKKzI0OTI2IDllMDIzM2MwZTAwM2M5MThjNzUyNDM5OGQwZjAyMDg2NjdiMTBmYjcgcmVsZWFzZTIyLW1haW50CisyNDkyNyBhYzhkODVkYTZkMGRiYmU0ODczN2MwZTEwNzFlNWMyZmM2Zjc4MjhkIHJlbGVhc2UyMi1tYWludAorMjQ5MjggZTIwNDdhZjBiMmU2ZTZmZDJiNTI1ZWMxOTBhZDE2ZDI0ZDVmNjVlMyByZWxlYXNlMjItbWFpbnQKKzI0OTI5IDEyZTBkNThlNDRiZGJhMTRjYTQ2NmEzZDc3ZDQzOGEyNmU0NWVhMGUgcmVsZWFzZTIyLW1haW50CisyNDkzMCAxOGRiOTFjMGE3OGYxY2U3ZjIwYjQyODI3ZWExMmQ4NTc0MWM1NzM2IHJlbGVhc2UyMi1tYWludAorMjQ5MzEgZWZkMDRkMWYzMDg1ZTFmYTYxNDJkZjIyMzgyZDZjMjFlYzZhN2M1MCByZWxlYXNlMjItbWFpbnQKKzI0OTMyIGNkNzdhYTExZWRkYzE5ZjZjOGEzZjVmMjUxZjJjYTVmZDlmZWM2OWMgcmVsZWFzZTIyLW1haW50CisyNDkzMyA4MTJkMTU0M2JhMDg5YWExMDNmNDY1NmIzYjg5ZjdlODEyZmI1M2IzIHJlbGVhc2UyMi1tYWludAorMjQ5MzQgZDA4OWQxZTg0MTFjY2M0MzQ5YjUxYzUzNDVjZDk3OTgyMTJhNGJmZSByZWxlYXNlMjItbWFpbnQKKzI0OTM1IGY3Nzc1OGM4NzJmYjUxMWY2M2IwMDFiZGEwYzcxYTIwOGY3ZTllYTYgcmVsZWFzZTIyLW1haW50CisyNDkzNiA4ZDUxYzc1Mzk3MTliMTljNTQxNWI4NjI1ZDgxZjY5MjNjZDRlNTQ2IHJlbGVhc2UyMi1tYWludAorMjQ5MzcgOWNjZWFkNWZkMjk3MTE3OGE2ZDE2NGI3OGU2MGQ1MWVkYTc1OWZmZiByZWxlYXNlMjItbWFpbnQKKzI0OTM4IDM5NzdhZDNiMDgyNTdkNTBhNjQ3YWI4NjYyZDhhZTQ4OThhMDU2NzQgcmVsZWFzZTIyLW1haW50CisyNDkzOSBiOTM3MWYzMjQxYjg1MDA3ZTJiOGE1ZjZkNTA1NWZiOWJlMjgxYWEwIHJlbGVhc2UyMi1tYWludAorMjQ5NDAgYWM0YjFjNGMzYjEyZjI4NGRmMzcxYTBmZWM3ZmQ0ZmJlNDBhMDg3NyByZWxlYXNlMjItbWFpbnQKKzI0OTQxIDdiMmQ3MDFlYzQwNGQ3MzlhODgwNjYyYzIyZWEzMDE2ODY3NzI3NDIgcmVsZWFzZTIyLW1haW50CisyNDk0MiBhOTRlNDgyMTM5OGRhMjljNTgyMDE3ZDkwMjNkMWNiM2U5MTczNTdkIHJlbGVhc2UyMi1tYWludAorMjQ5NDMgYTJlYWI0ZGU1NTA1Mzk5YjIwMTQ1NzNhYjk4Y2NmMGZmYjE2NWFhNiBsZWdhY3ktdHJ1bmsKKzI0OTQ0IGVjNjIzMDQ3MDczYTJiZTQxNzI4NDQ5OTVmYzBjZDVkZDY0YzRjZjggbGVnYWN5LXRydW5rCisyNDk0NSAxNmE4MjQyM2I4NjAyMDQ1N2E0ZjRlODE5YzgwNGI0YmZmMjI3ZTljIGxlZ2FjeS10cnVuaworMjQ5NDYgZmRjMzllMjdhNDk0ZThiNmE3NGIyZTUwMzcyMTcxNmNjOThhMjhlZCBsZWdhY3ktdHJ1bmsKKzI0OTQ3IDI5YzFhNThkZGE1M2ZhZjM1OTllY2U2ZjhhMWFkOTQ0MjI1MzAzNWMgcmVsZWFzZTIyLW1haW50CisyNDk0OCAwOTdhZTBhZGY0N2ZiYzQxNmNjZGZkNDAwYWVhNzkxMTM4MTc0NzBjIGxlZ2FjeS10cnVuaworMjQ5NDkgNmU5YTRmOWE1NWE0MWIzNGE2ZjljNmYzYjNkYjg3YzE1YTU0N2Y2OSBsZWdhY3ktdHJ1bmsKKzI0OTUwIGQwNGViOGQ2NjRlMmRmMzBjNmZiZTA0YWRlZTBkY2UzZWRmY2Y4MjkgbGVnYWN5LXRydW5rCisyNDk1MSA5MmRhNzRjOGU1ZThjMDJiN2Q3YTE5NTU3OTBjZWE1ZmM1ODM0MzkwIGxlZ2FjeS10cnVuaworMjQ5NTIgNWI3YjM4NmNiMGQ0NTM1NzZhN2I4NTE5NjhiOGQxZmI3OTE3NGNmZiBsZWdhY3ktdHJ1bmsKKzI0OTUzIDdkZDM5NTk4ODI3NTgxY2IxNWNmNmY2ZTlmYjc2ZjQ3ZWJlN2I2ZWUgbGVnYWN5LXRydW5rCisyNDk1NCBmZjcwZTU2MzRhZTkxMjdhNzkxZmIxYjM3ZWJlZGE5NDYyZjc2MjBiIGxlZ2FjeS10cnVuaworMjQ5NTUgMThhNzBhODJhZjE1OTc4ODYxNDYyZjdiOTZmZWRiYjY5NDU5ZDk4YyBsZWdhY3ktdHJ1bmsKKzI0OTU2IGU1NjA0N2RiNjUzODQ3MjM1MzIyYjQ1MDIwMjIyY2EzYjM0YTNlODAgbGVnYWN5LXRydW5rCisyNDk1NyA1ZmY4YmIyNTAzMWM4MjMwOGM4MWExYTE5YWZiMmJlODJhZDZhMmZlIGxlZ2FjeS10cnVuaworMjQ5NTggODU3ODM1NWQyM2QzNDk1YTA0YTMwOGM3OWM1OTJlMDA1MjNlYzY5MiBsZWdhY3ktdHJ1bmsKKzI0OTU5IGNhYzkzMWFkM2NjNWE2NzJkMGUyNjYzNTkxNmJkZDkwMDFlZjYwYjQgbGVnYWN5LXRydW5rCisyNDk2MCA2OTcwNTFmNjdlOTc2YTUwM2E2ODM2MTJmOGZiODA3Nzg4OGM1ZmYzIGxlZ2FjeS10cnVuaworMjQ5NjEgZmU1NGU4ZDkzY2I0OGMyMGQxZjg1MDA2ZTA3MTQ3NGZiYTViOWJmMiBsZWdhY3ktdHJ1bmsKKzI0OTYyIDUyYjNiODQ2ZjExZjU0ZGNiNWQ2N2EwMzYyZmMyMmYwMDczMGEyNjAgbGVnYWN5LXRydW5rCisyNDk2MyBhNTBkZjY1YWNhN2E5YjgxNTAwNGNjY2JjNDNhNjkzMTFhNTQ3NWU0IGxlZ2FjeS10cnVuaworMjQ5NjQgMmY0MDczMjY5ZGFmZDMzODdiYTE4MWFhZGY5OWQzYmQyZTBmZjc4YiBsZWdhY3ktdHJ1bmsKKzI0OTY1IDY0ZDBjOTQ5ZjMzZTJmZWJkYTdiYzFlNDYzZmE4ZDY3NjQwYjU2MzggbGVnYWN5LXRydW5rCisyNDk2NiAwMzVkOWM5NmFhZWNmYzg4NDBkNTgyNDQwYjVmMWQ3YmNiNzM2MzY5IGxlZ2FjeS10cnVuaworMjQ5NjcgNjdkYTExMjkzNDA2Y2Q0Zjc0NGZjMzE4Njc3NTI1NTAzMDU4MjI2NiBsZWdhY3ktdHJ1bmsKKzI0OTY4IGJlMjEzZjFjZDQ2MmUxYjU4YWFmY2FmMWQyNDAyZWZiNDdmZmIwODUgbGVnYWN5LXRydW5rCisyNDk2OSBmYjM0ZjU1YTAzZmFiZjQwMjE3ZjIxNzRkZWExYzIzMzA0OTA3YjYzIGxlZ2FjeS10cnVuaworMjQ5NzAgM2JhMGYxYjIwMzIwYzk3NGZiMGJjMDk1YzQxMWIzOTgxMjNiMjIxMyBsZWdhY3ktdHJ1bmsKKzI0OTcxIGE5ZTA2ZmZhZjdmYmU5ZDhjNzlhOTg4ZTY4NGU2ODE0YmZhYmRkNzYgbGVnYWN5LXRydW5rCisyNDk3MiA5MzdjYzEwY2QzOWRmMDE3N2MxZTJjZjk3MTg3ODgxZWI1YTBhZWYzIGxlZ2FjeS10cnVuaworMjQ5NzMgZGE4Yjk5NzQ2OWU3ZGMwZmI1ODE4MWIxNWE3M2MzNjY4M2M0NGNmNSBsZWdhY3ktdHJ1bmsKKzI0OTc0IDhkZmJmYmM5MzFiNGE2N2I4OTFmNDIxZDg4NGZiOWM1OGFjMTc3MjAgbGVnYWN5LXRydW5rCisyNDk3NSAwOTVjZmYyMTk1NmNiZjkxNGU1NzFlOWViZTJlMjBmNGQ1NmEyMTE2IGxlZ2FjeS10cnVuaworMjQ5NzYgZWE4NWVlYTZiMmI5NDlmZGE2MmI1NjUwYWJjOTU2ZGI0NTE1NzBhZCBsZWdhY3ktdHJ1bmsKKzI0OTc3IDNiNDNmNDBhZjI3YTk4NGExYTY2MDkxMGZkMzAwMGZjNjdiZmIwY2EgbGVnYWN5LXRydW5rCisyNDk3OCBjY2VhODc4MmI4NDcyMzFlMGNlODRjYzNhYjc4NGQ0YzJiYjgxMWQ1IGxlZ2FjeS10cnVuaworMjQ5NzkgM2M4YTllZjNiOTU0Mzk2MmViN2RiMGI4NWMyNGU0MTE2YTBkOTU3MSBsZWdhY3ktdHJ1bmsKKzI0OTgwIDVkMDA5ZTVlMTNmNzk5ZWVkODU0NDgwYzBiY2Q5ZmQ4NjVlODVmMTEgbGVnYWN5LXRydW5rCisyNDk4MSA3MjQ2ZmU1ZTVhMjgyN2UyZDRlOTkwYjhjNmE5MGUxODViZTA0NzMwIGxlZ2FjeS10cnVuaworMjQ5ODIgZDU5NGE1OGI0NDZkNWYzY2U0YmJlY2RkZjE4ZWYxZDAwMWQ4ZThkZCBsZWdhY3ktdHJ1bmsKKzI0OTgzIDE0OTFmMTEzN2UwZWE1NzBlNThhYjQ5YzIxODcwNGM0MTVhZjM3ZDkgbGVnYWN5LXRydW5rCisyNDk4NCBiZTg2OTdjNzBlN2MyZTU1NDQ5YTU2MjEzYjliYjEwOTkyYjU0MGIyIGxlZ2FjeS10cnVuaworMjQ5ODUgYTMzYmI3MzI0NjgzOWRiOGNkOTNjNDcxMDY0ZTdiY2IzNDYyMjA0NyBsZWdhY3ktdHJ1bmsKKzI0OTg2IDc1ODMzOWRiZGFlYTc4MmQ1ZmUwMTU4ODMxMTcwMDYyOTRjNDUxMDQgbGVnYWN5LXRydW5rCisyNDk4NyBkZTFlYmNlZjdkMzEwN2U0YjMwODIyZjkyZGVhNTM3NzMxNzA1YTAyIGxlZ2FjeS10cnVuaworMjQ5ODggMDUxZjNiNjVkZGFiODQ5NWJjZjFiMDY2NjgyY2EyNGVjNDhkNTYzOSBsZWdhY3ktdHJ1bmsKKzI0OTg5IDZkNDI4OGU4OTE4YjI2NzRiODdjZjQzOGIyZDM3MTc3MGUxYjU3YjYgcmVsZWFzZTIyLW1haW50CisyNDk5MCBkY2NjYjljZWEwNTkzMWEyNTQyNDcyY2Q1NDljNTY4ZmM5YjIwNGJkIHJlbGVhc2UyMi1tYWludAorMjQ5OTEgZGZjOTcwNDA5ZjdlZDAyMzQxZjdlMjJiNjcwZmZjNTI2Zjc2MzM2YiBsZWdhY3ktdHJ1bmsKKzI0OTkyIDY2ZTAwODBjNmRjYzkwMWIwYjg0Y2M4ODAzYjRhN2E4ODc0MjRhOGEgbGVnYWN5LXRydW5rCisyNDk5MyA1ODYxODg1NTc3ZTk5NzA1MWEyOTIzNTU3ZDgwMWIyZTU4NDE1NDJhIGxlZ2FjeS10cnVuaworMjQ5OTQgNmY2ZjBlMTAzNTY2ZGM5Yzk1MWY2ZjMyOTkwNmZjYmI2MjRjNjA2YyBsZWdhY3ktdHJ1bmsKKzI0OTk1IDYzYTJmYWMyMTA0YzlhN2EyZGM1MTBiM2ZlNGFiNjI1ZDFkYjVlMzIgbGVnYWN5LXRydW5rCisyNDk5NiA2YWU4NWQ4Mzg0NjZhMjU3Y2Y1M2MzZTYxZjAzYTdkOThiYzBjNjE3IGxlZ2FjeS10cnVuaworMjQ5OTcgOWM3ZGEyNzJjOWI5NGU4ODE2MjdjN2I4YTYwZmVhMWVmZDNiZjRhOSByZWxlYXNlMjEtbWFpbnQKKzI0OTk4IGNkMDdlODQyMzVlNmRiMDM1M2UxYWNmYzAzOWZkODY3MDFiYWY3MzIgcmVsZWFzZTIyLW1haW50CisyNDk5OSAyYjc0NjU0M2FiM2Q3MjhkZTQ3NjgzZTJhNDE4ZjdkNTU5ZTY1N2NhIGxlZ2FjeS10cnVuaworMjUwMDAgNjIyMTllZDIxNTk5YmNlNGQ5MzBiZGI1MWRiZjgyYzk4Yzc5N2M1ZSBsZWdhY3ktdHJ1bmsKKzI1MDAxIDg1MWU0YmYzMDM1OGVmOGQwM2UwNDZjZDA5M2MxN2QzMzZlZTRlMWEgcmVsZWFzZTIyLW1haW50CisyNTAwMiBiNzJkYTA3ODBlN2E1OTJhMmU1YzQwOWViZmFmMmMzNWRmYTYyOGUyIGxlZ2FjeS10cnVuaworMjUwMDMgM2E0YTM0ZmRmYTgxYTA5NmJjYThiMWRkNjhhYmFhMjFhNTk2Zjc0MyByZWxlYXNlMjItbWFpbnQKKzI1MDA0IDM1ZTNmMjQxOGIyZGE5ZjZmMjk4YzZjNDE0MTI2ZmFlYjRkMzI4ZDkgcmVsZWFzZTIxLW1haW50CisyNTAwNSAzYzBiZDJmMzdhNzg4YTFmZjA0YmY5ZDQ1MTdkOTJhZTVhYTU3NmMzIGxlZ2FjeS10cnVuaworMjUwMDYgYTNhNjJlNDQwZjJhNjkyZDBmZjc1MzgwYjMxMDk0YThkM2U4NDIwZCByZWxlYXNlMjItbWFpbnQKKzI1MDA3IDdlMmEzYTJiYWMzM2ZjOTg4ZmU2MTQ2NmJjZjIxMjNmYjllZWRjNWIgbGVnYWN5LXRydW5rCisyNTAwOCBhNWJlMDc2NWM1NzEzNjExOWY1NGU0YWUyNThkZTg0NTNlYjg0ZjFjIHJlbGVhc2UyMi1tYWludAorMjUwMDkgOTkxMmE5NmMxZmIzOTRmMGMxMTc3MGNmNzBlNmFhZWM1Mzc2MmE1NSBsZWdhY3ktdHJ1bmsKKzI1MDEwIDE5NTkxN2I3YTYwMjQyZmI0ZDA2ZWYxMzA2NWIwZDc3YzE3NmQ1NTYgbGVnYWN5LXRydW5rCisyNTAxMSBlYjA1MTlhNDY3YWJhMjRmZDA3M2Q4ZGZhYTU2YzFmMjU2ODY0ZmNmIHJlbGVhc2UyMi1tYWludAorMjUwMTIgZWM0OGY5NmM5Mjk1ZGRlMDgwZWYyN2VmNDlmNTRiMWNiMzk0MGFmNCBsZWdhY3ktdHJ1bmsKKzI1MDEzIGMzYzZkZTE0NTMwOTk2YTY2YmFjYTI3Njg5N2JjN2FmYzJmZTdjMzQgcmVsZWFzZTIyLW1haW50CisyNTAxNCA2ODgzNGE2OTc0NmE4NWY3Y2JiYzBkM2VmMzg1YjFmMzI4MjEyYjI1IGxlZ2FjeS10cnVuaworMjUwMTUgMjliM2RjOTBiZTk1Y2I0OGFhNWU1YmI4ZDk2Yzk1YjQ1MTBiNmRjMCBsZWdhY3ktdHJ1bmsKKzI1MDE2IDlhMjY4Mjk4MjZlOTc5MmI4MTc0ZjM3YjNmMTlkNzljOTEwNDFhZmEgbGVnYWN5LXRydW5rCisyNTAxNyA2YjBlMTZjYjY1ZDU5MjllZGM4ZGY3NzgxMjdmNjI0ZWVhOWRmYjNkIGxlZ2FjeS10cnVuaworMjUwMTggMzRlZGRjYTFmZGE3OWE1NTQwYzI3OWU0N2UwY2I2MGY3YTdjMWZlZCBsZWdhY3ktdHJ1bmsKKzI1MDE5IDdjNTgyZDFiOWNmODFlMWE0YWJiMzZmMWJhNDE1MDgxNmE4NGEyNzcgbGVnYWN5LXRydW5rCisyNTAyMCAyMmRhZDlmZTA5Y2ExM2RjZjk5YWQxMWUyOThmMDMxNmMyNzA5ZDE1IHJlbGVhc2UyMS1tYWludAorMjUwMjEgMzYyOTE1YjM4NzI0NDRjYzk5NDA3ODMwMjU3OTk2YzZjOGZmZjY5YiBsZWdhY3ktdHJ1bmsKKzI1MDIyIDlkZTM1MGE2NTQyZWRmMWE4NzE5MzQ3NGIzZTY0YjJmY2FjMzY3MjkgbGVnYWN5LXRydW5rCisyNTAyMyBiNTY4NDNjMTUyNDliMzk4OWVlNDU2ZDMxODM4Yjk0NGU2ZmM0MTkxIHJlbGVhc2UyMi1tYWludAorMjUwMjQgYTkxMTkzNDEyNmZkODY2ZGMxMGZjOWE1MGYxZjE1MDJiMjM2NzdlNCByZWxlYXNlMjEtbWFpbnQKKzI1MDI1IDcyNDhjMzc1MTNmMzc1ZGQzMDMwNTZiOGQ5NTI1MTY0Y2VlZGQ1YzYgbGVnYWN5LXRydW5rCisyNTAyNiA4MjM5MTI5ZTc1ZDBhMGFhNTI1YzIyN2Y5NWYwYjU5ZGE2YzRhYWY2IGxlZ2FjeS10cnVuaworMjUwMjcgNzJiYjcwZTk2NDBlNDgwNGIxMjZjYmQ3NTFlNGQ1OTQ5MGRkNWU2NiBsZWdhY3ktdHJ1bmsKKzI1MDI4IDBkM2JiNjhlM2EyOGEzMmUxMjYwNmFlZjRlM2RiNTNjNmY4ZGFlODggbGVnYWN5LXRydW5rCisyNTAyOSA1NDRlMjYyMDYxYTM2MmNjZDIwNTgxY2YxZTcyMTkwYjIyZTU1YWI3IGxlZ2FjeS10cnVuaworMjUwMzAgNjQ2ZjhjMDg4ZjVkODQ3ZWI4NzBkZmFjOThmZTk5NGQ3ZDljMTk5YSBsZWdhY3ktdHJ1bmsKKzI1MDMxIDg5NzBlNzQ2NjgxMTMzYTg0MmE1YTA5N2EwOGM0ZTI0YzViMmJlNzggbGVnYWN5LXRydW5rCisyNTAzMiBmZmFiYWM1MDk3M2RmYzYxOTM5NGQwYThjNjNlYWVlNmI1Y2FkNmEzIHJlbGVhc2UyMS1tYWludAorMjUwMzMgYTFjMzI4MzM3YzhlODQ4ODYyMjA3YzBiNWFmZTNjMjIxZjBmMDFmMiByZWxlYXNlMjEtbWFpbnQKKzI1MDM0IDg4YzQ2M2Y4NzllZjI3NTViYjMxNGI1MmU0MDM1M2I5YzU3MGE1MDAgcmVsZWFzZTIxLW1haW50CisyNTAzNSAwNjhlODczZjA5MzJhYWJhYjM3ODQ2ZGQzODNlNGMyNjU4MDMxMjRjIHJlbGVhc2UyMS1tYWludAorMjUwMzYgMDhhM2FhOTUxMmU5ODJiMjBhYjg0MGNjNmRiNDhhMDMxNWY0NTRlMCByZWxlYXNlMjEtbWFpbnQKKzI1MDM3IDI5OTk2OGMyNzliOTgwZDczMTA2ZDFjOTIxOGY1NGNiNzkwMmEwODQgcmVsZWFzZTIxLW1haW50CisyNTAzOCAzYTU1MTUwNTBiNDM2YmM1MjNmNjkzYzE3MTUxNmM4YWRkY2ZjNjdlIHJlbGVhc2UyMS1tYWludAorMjUwMzkgYTFkNmNkOTdlMzE5NjNjZTJlZjZhYjkzMTIwYTcwMGUyNjhmODJjNCByZWxlYXNlMjEtbWFpbnQKKzI1MDQwIGVkYzM1MzJmYjJiOGZkMGZmZDYxMDYxOWU0ODZmZGFhMGMwYTgzYTQgcmVsZWFzZTIxLW1haW50CisyNTA0MSBjNGZlOTVmZWEzZTZmZmFmZjAyZDJjOWM3OWYyYjdiMWM4OGJlZjQzIGxlZ2FjeS10cnVuaworMjUwNDIgZDA1ZWJiZDk2NWEzNzEyNWY3NDcxNTg0NmY4NjZlYjliOGYwM2NjMSByZWxlYXNlMjItbWFpbnQKKzI1MDQzIDExNmUzMjE4YTdjYTYwN2E4ZTI3N2M3NzFhZTA0ZWFiZjg0M2UzY2UgcmVsZWFzZTIxLW1haW50CisyNTA0NCA4YjI0NTI5N2MxNjZlNmNjMjU2Y2MyZjAzZTM4ZGNhODgyMTA4NmMzIHJlbGVhc2UyMS1tYWludAorMjUwNDUgNTkxNWQ0NWI4MDk4NDE2Zjk4ZTFmYjcyNDkwNDM1OTIxYjlkMTUxZSByZWxlYXNlMjEtbWFpbnQKKzI1MDQ2IGE0OWE2NWE5NWUzNWNkMzY5Y2M4ZTZhM2RmYTI5MGZlMTFkMjUzYmUgcmVsZWFzZTIxLW1haW50CisyNTA0NyAxZWRmNWVkMWFmMDgxYTAyNTVkMGU4MWY1YjkzY2E4ODAzOTIyNjFjIHJlbGVhc2UyMS1tYWludAorMjUwNDcgZjc2YTQyNWIxNGU0ZWU4YWRlNWU5MjM5NTk4NTM4NTM0YjNhOTBhNCByZWxlYXNlMjEtbWFpbnQKKzI1MDQ5IDNlNzhiZjBlMmJlOGQyZGRmMTkyNmJkZGMzYzIzODQ1ZmZiYmNmMTEgbGVnYWN5LXRydW5rCisyNTA1MCBkYjJjMTI4MTI1ZjQ1NjlhYjliZGRiZjBhYmE4YWQ4ZjJiYjljNTZmIHJlbGVhc2UyMS1tYWludAorMjUwNTEgMTBkMWQ3ZDYzNWQ0MjJlZjc0YTRkNjNiZTk1OTI3MjE3NWMzZTFhYiByZWxlYXNlMjEtbWFpbnQKKzI1MDUyIDJmMzY0ODYwMGU2MDFmZGQ5OTU5YzdhNDUzOWI2NGZlY2E2OGEwODUgcmVsZWFzZTIxLW1haW50CisyNTA1MyA3ZmUzZTYxYWJjZTNlYTgyYzJkM2I0OWFhZjI2ZTFhYTE4NWY4YTkwIHJlbGVhc2UyMS1tYWludAorMjUwNTQgNWM2MmVmYmNlNGZhMDYxZGRkYzg4NjE5M2MyZTY2Njk1NzgyYjEwZSByZWxlYXNlMjEtbWFpbnQKKzI1MDU1IGQ3NGRjNDA2NjQxNjg5MjQ5MDI3ZWM3YWFjNzNjMjIwZTE0OGUxYzQgcmVsZWFzZTIxLW1haW50CisyNTA1NiBhZWRkODUxODc0OTY0ODdlYjkxYzc0YjFhMTcyNGIyNTQwZDA2MmI5IHJlbGVhc2UyMS1tYWludAorMjUwNTcgY2UzNWU1NzBmZmEyMWViZGIwNzQ3YzZjNDlmYjEzOWRhNzYxNzQ3NSByZWxlYXNlMjEtbWFpbnQKKzI1MDU4IGEwYjM1MmU3Njg2MmRmMGM4OTk1YmRiOWU1NzVlODBhMjdlZDMxZjggcmVsZWFzZTIxLW1haW50CisyNTA1OSBlYTE3NTVkNzNlOTIxYWM5MGE2MDNmYzJlMmY2Yzc4MDgzYmEzNTk5IHJlbGVhc2UyMS1tYWludAorMjUwNjAgMmUyMjg0NjFhMzkxYjE4ZDc5NjVjNTkzYzRjOWM2YTgyYTQzZjQxYyByZWxlYXNlMjEtbWFpbnQKKzI1MDYxIDMyYzFjMGFmY2Y5OGRjNGM3ZDc4NTY0MWI2YTBmMWNjODc3YjFkYTUgcmVsZWFzZTIxLW1haW50CisyNTA2MiAzYjU0YzQ0NTI0ZWI2MjQzNDM5NjYzMzlhNTdlZjI1N2JiN2FkNjU4IHJlbGVhc2UyMS1tYWludAorMjUwNjMgNDhlY2Q2MDYxZTg4ZDBkYmU5MDJjZTY3M2M3MTQzZDkxYjUzNDUzZSBsZWdhY3ktdHJ1bmsKKzI1MDY0IDQwMjczNjFlNzk1NmEyMWVmZjlmMDRiMTA4MDg0NTQ4ZjE4NjU0MzYgcmVsZWFzZTIyLW1haW50CisyNTA2NSA3NTMxY2M1OTJlNDYzYTFmODQwZWRkNTc2NDhhMGUzYTY3OGUyOWRmIGxlZ2FjeS10cnVuaworMjUwNjYgNGE1YTAxMGM4ZjQ0NDI5OTc5NmFkZTVkZTA1ZGJhNzI5ODRiNzI2NSByZWxlYXNlMjEtbWFpbnQKKzI1MDY3IGFhODNmZTZlOWM0ZjVkZGM0ZmU0MWI3M2ExMThhY2U0NmE1NDkyZDQgbGVnYWN5LXRydW5rCisyNTA2OCAzYjczMzI1YjMyZTU5NDNmYjQxN2Q1Njg2NjFkYTg3N2Q0MWRiZjliIGxlZ2FjeS10cnVuaworMjUwNjkgYTZhMzFjNTVhMTZkMDUwMDg4ZDM3Yzc1NTRhYmFhYzY5MzM4Y2I4ZiBsZWdhY3ktdHJ1bmsKKzI1MDcwIDg2NjYxNWYwYWUyYTcyNThkNmIwNDUxZmVmZDRjYjgxYTk3ZGZmNGUgbGVnYWN5LXRydW5rCisyNTA3MSAzYmU0MGQzYWZmOTQ1ZjZhOTAzOGEzNmY2M2FkY2JhMzgxNmJlM2Q2IGxlZ2FjeS10cnVuaworMjUwNzIgNDM3MzkzZTc4MGNiZmYzZDMyZWE5NDQwMjQxYzQwYThlYzQ3ZjA3MiBsZWdhY3ktdHJ1bmsKKzI1MDczIGM2NGZjNTZmNjA3MjVmODkyODI4MWZjZDI0ZmZhMGI5OWMwY2NmMjggbGVnYWN5LXRydW5rCisyNTA3NCBlMjIzMzk3YjI2ZmE1YTI2NWZkZjM0OTJmZmFjY2VmODBjZWE0MTUyIHJlbGVhc2UyMi1tYWludAorMjUwNzUgNjMwMjkzYmUxMDM1NmUxYjA2MjczNTZhNGU3NjIzNjk3NmNkMmZhZSBsZWdhY3ktdHJ1bmsKKzI1MDc2IDRjNmMxM2FhOGE5OTc1MjlmNzA2MjhjNWZmNmJjYTc1NTAxZmQ2NTQgbGVnYWN5LXRydW5rCisyNTA3NyA0ZWFlNjZiZTFkMjkxYmEyNzQ1OWFiNjE4NzZkMjhhYmM5YTM5NDk1IGxlZ2FjeS10cnVuaworMjUwNzggMWQ5MTgyMDEyOGExYzk5Y2EwODQ0OGUxOTY4OTIwMDY2ZDAzMzdhNiBsZWdhY3ktdHJ1bmsKKzI1MDc5IDgxYTgzYTY1MjQ2ZDMwMDZjOTY3YTRjNTI0N2NkZGU3OGUzOGY1MzggbGVnYWN5LXRydW5rCisyNTA4MCBlYzZiNjdkMjgwM2QyZmEyMmRjMWMyZTVmOGI3MzQwNDMwMTcyY2Y5IGxlZ2FjeS10cnVuaworMjUwODEgZTk5MTk4MjM0ZDk2ZDI0ZDU0YjQ5MzBjZjkwNzExYjM4Y2NkYTRkYyBsZWdhY3ktdHJ1bmsKKzI1MDgyIDI1ZTQ0YTAxMjVlNDU3YzZhZjY2ZDc0NTQ2ZjViNjZlNDdmZTY0YTQgcmVsZWFzZTIxLW1haW50CisyNTA4MyA5ZTE3M2NiMzViNmRmZGQ3M2VkMzViMGQxZGQ2MzQyZTRiOTNkOTUwIHJlbGVhc2UyMi1tYWludAorMjUwODQgZWJlNmJkNTc2ZjY1ZDliOGFlZTA4YzI4OTE0M2UzY2QyODg2NjVhZCBsZWdhY3ktdHJ1bmsKKzI1MDg1IDg4NGU1N2JmM2FkYTQxMDczYjZlNmQ3OTE4YWI4YWUyMzIwODkzZTMgbGVnYWN5LXRydW5rCisyNTA4NiA1ZDJiZmJkNDdmMWJlMmEwMmFmYjAyMDUyN2QyY2FjYTE5ZDZiYTI4IGxlZ2FjeS10cnVuaworMjUwODcgNjc3NjFkNWI0YWU2YTJlZjE1NzFkZjdkNDY5YTUyZDBmZTU0MmMyYyByZWxlYXNlMjEtbWFpbnQKKzI1MDg4IDVhMzI5YTI1NzE5N2Y5NTJjNmRkZjZkYTdjNDZkY2E4NjVlM2IwNjEgbGVnYWN5LXRydW5rCisyNTA4OSA1NGVjY2M1ZDIyZGQyNzQxZWY4OWY4MGUwMDU2ODUzZTlhOGU2MjI2IHJlbGVhc2UyMS1tYWludAorMjUwOTAgZTY1NDc1YjRmM2NmOGI1OGU2OTk0YTRjMGE5YWFhZjY3OWU3ODIzNyByZWxlYXNlMjEtbWFpbnQKKzI1MDkxIDNlMjZmNWRhY2JiZTY2MmYxMGI1OWNmOGNjNjFmNDNmMjZjNjNhOWIgcmVsZWFzZTIxLW1haW50CisyNTA5MiBkOTYzMTg0MzgxMTg3Mjg4ZGY4OTc4NDFmMDY2ZmY2NzU5YTZhZjUzIHJlbGVhc2UyMS1tYWludAorMjUwOTMgMzFiMjUwMTQxNzRiZDZjODQ4MjQzY2ZhZGNlOTQ2Njk0NWUyZDc3OSByZWxlYXNlMjEtbWFpbnQKKzI1MDk0IGRjY2JkN2JiNWJkNWM4NTE1MzMzZWNkOTY5NzRmOGYwOWNlZTkyOTcgbGVnYWN5LXRydW5rCisyNTA5NSBjM2E4NjQ4YmYwOTdhYjcwMTI4YjRmYjFmZWE5NjNkYzdmNzViMDQ3IHJlbGVhc2UyMS1tYWludAorMjUwOTUgY2YzMWIxMGU0NWI0ODYxNTA5NGNhZTkwZTNjNWJkMDcyNTg3ZDhlNiByZWxlYXNlMjEtbWFpbnQKKzI1MDk3IGJhOGRiOTBlZWY0ZWNhYThhMWZjYmU0MDNhNmUzYTQ4YjA4NDVkZGIgbGVnYWN5LXRydW5rCisyNTA5OCAzMGE4MTcwMzhhZjBmNGJkNmRiNjg5ZGQzMGQ2NjUyMzlkMjg4NDE5IGxlZ2FjeS10cnVuaworMjUwOTkgY2ExYjY3ZjVhM2VjZDhmNDdiNjNhNDc3Y2M1Y2UwMmU5ZGU0ZDQ2ZSBsZWdhY3ktdHJ1bmsKKzI1MTAwIDJiNTZhZjY5ZjY3ZGVkOWY2ODRmYTMzNmRiNmRmNjM4M2RiOGU4N2EgbGVnYWN5LXRydW5rCisyNTEwMSA4ZjRjYzgyMWFmYWE3MjgzYTVlOGU4MTNmYjI1NzVkOTUzZjQzZjI4IGxlZ2FjeS10cnVuaworMjUxMDIgZWE4Yzg0MDBhNGM4ZDAwZTc0ZTc0YWI0ZTE4M2UxY2Y2MGRmNWFiOSBsZWdhY3ktdHJ1bmsKKzI1MTAzIDlkNWFkZmY4N2YzMDAyMGFhMmJkOGMzNGIzNzU0N2FjODUwYzNhMGEgbGVnYWN5LXRydW5rCisyNTEwNCAzNGY4NWEwYTdmYWFkY2I3ZGNmZDhkZDhlYzZhZjIwYWJjNjllMGM1IGxlZ2FjeS10cnVuaworMjUxMDUgNTNmYzZlYzhhODM3NjA1YjMxZmM4MDk4NzM3ZTczZWIxMDUwYzkzNyBsZWdhY3ktdHJ1bmsKKzI1MTA2IDFiN2VjMzk1ZDM5MjRmOGYyOWY1NGRlNDdhMzcxMDJjZmIzZDkyOWIgbGVnYWN5LXRydW5rCisyNTEwNyA0NDJlZmYyOWI0OWY3YjMzNjM4ZjgzMDViMWU4ZTc5ZTM2YjFjZTc4IHJlbGVhc2UyMS1tYWludAorMjUxMDcgZDgyM2ZjMTM1ZTkwZTdiYjg0NTkxNWNlYzkwMjc3ZWJmY2QyYzhkMyByZWxlYXNlMjItbWFpbnQKKzI1MTA4IDc0MjQ2YTJkOTk2MjIzZWMxZWUxZGVjOWE3NDZhODdjOTcxZTkyNTMgbGVnYWN5LXRydW5rCisyNTEwOSA2NjA1ZjA3NmY5NWEyZDA1NmMyM2MwYzhlZDExZTg3NzUyYWRhZDdjIGxlZ2FjeS10cnVuaworMjUxMTAgYzRmNzJiNDcyMmRhNjM0ZDBjNTE3ZTA0ZGU0MzRiYjJkZTZjM2E5MiBsZWdhY3ktdHJ1bmsKKzI1MTExIDljMGEwYzg5NzczZjE4MmIwMDY1OTdlZTlmNDhhZGNmZTEwZDZlYmEgcmVsZWFzZTIyLW1haW50CisyNTExMiA5ZDc3MDhkZGNmYjk5OGUyOTQ5MDI1NDJlYmMwNWUzNDM2Y2Y2OTc4IHJlbGVhc2UyMS1tYWludAorMjUxMTMgMTlkNjY4NzUxYjFlYWYwMzQzMDA4MDY2YzVlM2NiODM5NTllNGY0NCByZWxlYXNlMjEtbWFpbnQKKzI1MTE0IGNmYmRlODUxOWU1MDBlMTIzMGEzZTY3NGIzZDAzZWFlMzE5MzJlNTEgcmVsZWFzZTIyLW1haW50CisyNTExNSAwZWZmOTYxYTE1YjUzODhlZWI1MzFlNDdiOWQzOTNkZGZlMmE5ODZhIGxlZ2FjeS10cnVuaworMjUxMTYgZDYwMzUwZDcxYjYwNTgyOGU1YjYwNDRmZjcxOGIxYWM5OTczYWE4MyBsZWdhY3ktdHJ1bmsKKzI1MTE3IDQwNjMxYWU3NGIxN2JiYTIwNTFjODc0Yjk1OTJkZWU3ZjVjNDMzMGIgbGVnYWN5LXRydW5rCisyNTExOCBjYjQwYWNhNDE4ODljZTc3Mzg1ZjZmNDY4ZWI5MzllZjBkMjFmYWFmIGxlZ2FjeS10cnVuaworMjUxMTkgNzIzM2I4NmJlNjU2ZTM5Zjk0ZWE5MmY2MGIwM2ExNDI3YjFiNTlmOSBsZWdhY3ktdHJ1bmsKKzI1MTIwIGRiYjcwM2ViNmIzZDliNGUwYTNlZmM4ZDE3ZGE5NjIxYjJlMGZiNDEgbGVnYWN5LXRydW5rCisyNTEyMSAxYTI2ZGNkZmI2Y2M5ZGVlM2Q4ZDMwOTU3NTllYzJiZTkwNDM5YTMzIGxlZ2FjeS10cnVuaworMjUxMjIgYTFiMDY1ODI5M2E3MDk5MTNiODEzOTRkOTY1MjI1Y2JiZTkzMjA1YSBsZWdhY3ktdHJ1bmsKKzI1MTIzIDY1MmRjNTFiNWY4MzIxODdjYmFkMDczNGZmODQwYWUxNjUxYzgyY2IgbGVnYWN5LXRydW5rCisyNTEyNCAwMTEwYTA5ODNlNjE5MzBjYzEwNWQxYzQ2MTc4NGRmNmY3YjQ4NTExIGxlZ2FjeS10cnVuaworMjUxMjUgMzY4NTYxNWQyMWIzMjdmNTgxMWU2OGQxMjNmMDI5N2VjMTRhMzY2NCBsZWdhY3ktdHJ1bmsKKzI1MTI2IDhiMTE2YTg0NDliZDVlZWRmYzgyY2ZlNzYzZDJhMmQzMjdjNzIyOWMgbGVnYWN5LXRydW5rCisyNTEyNyA4YTJjZDFjMGMxMzU0ZWM4ZmFkNmIzOGYyMzM1YzAwYjg4ZmEwNDZmIGxlZ2FjeS10cnVuaworMjUxMjggZTIyN2M4ZDAzZDZkOGMyNGQ0NTRjNTNhNzE2MzFkYTRmY2QwOTcyNyBsZWdhY3ktdHJ1bmsKKzI1MTI5IGU2ZDVjNGM3NDViYzAxM2M0ZmM2MzEwODhjNTNmYjMxNzQ0NWE3YjkgcmVsZWFzZTIyLW1haW50CisyNTEzMCA1Nzg3ZmM0OGMyYjU1YTUwNzE4YWE0MDZkZjRhMzkxYjYxOGUwN2YyIHJlbGVhc2UyMS1tYWludAorMjUxMzEgOGU2N2Q5MDM1YjY5OWFiYmEyMTE4MTJjNTUzYjY1ZTJkOWRhMTk1YiBsZWdhY3ktdHJ1bmsKKzI1MTMyIGVjNzUwZTM3NjcxYmUzZWI1MjVlZDg4ZWQxN2U5ZDRhOWQ1ODIwMWUgbGVnYWN5LXRydW5rCisyNTEzMyBkNWEzOGEzMmY3OGI1MGNjODU4OGVjYzI0NDVhNDIzNjdjNGU1NWZhIGxlZ2FjeS10cnVuaworMjUxMzQgMWVkMjY4ZWEyZDI2MzAzOTMzNjUxYzZmMWMxMDIxZTVlNjk4YzE0ZSBsZWdhY3ktdHJ1bmsKKzI1MTM1IDE2Y2M1Mzg0MDFiM2YwODJkZGQ4ZmQ1NjdlN2Q1YTIzZDFmOWRiMWIgbGVnYWN5LXRydW5rCisyNTEzNiA5YmVjMTgzZmVmZmY2MWNlZDNjY2FkMWMwNWQ2ZDNmMTYwYjM5OWVlIGxlZ2FjeS10cnVuaworMjUxMzcgNjMzZTY0NTY0ZWRmYTFhYmM1Y2EyYTY1Njg2MDhmZWIxNzliOWYwYSBsZWdhY3ktdHJ1bmsKKzI1MTM4IGY4ODczNjI1ZDhmNjA0YjZmYmY1ODNkMWUzMzMzOWNmMGUxOWM1YjMgbGVnYWN5LXRydW5rCisyNTEzOSA2Zjk1OGY0OTliNDI5NTcwNTM2NGU1Y2VmYmY1YzE0ZjBlZGNhMjAwIGxlZ2FjeS10cnVuaworMjUxNDAgMGZlODc1ODY2ZDRlZjU2ODYyNTUzODFkNmJiYTU4NjQzYTU4ZmM4MiBsZWdhY3ktdHJ1bmsKKzI1MTQxIGRhMTdhMTBlMmYyMzFjOTIwNzY1OTQyZWI1YjI3YTEwNjFhNGNiMjUgbGVnYWN5LXRydW5rCisyNTE0MiAzZTBkYjk4NGJkM2UzMDRjNzdhZTE5YjNhMmNkZjhmZWM4N2JlZDQyIGxlZ2FjeS10cnVuaworMjUxNDMgMmM2NjE3ZjI3MGUyYzkyZGJiY2YwMWYwZDIxYzdkYjY0MjJjZWY2YiBsZWdhY3ktdHJ1bmsKKzI1MTQ0IDVhNWQ5NGM0OTk3NTBlM2QzY2E4YzU5NDM2OGY1ZGViNDZiMTZmMWEgbGVnYWN5LXRydW5rCisyNTE0NSA2YzVjMTEyZDQ1MzM5YmQ3NzI4NTNiZjg5OTk5Y2QxZDg5ZmE2MTI2IGxlZ2FjeS10cnVuaworMjUxNDYgMTM4M2U2ZjdiMTFmOTlkNzQzNjllZWNiOTAzYjI5M2I1MDJiZjZjMCBsZWdhY3ktdHJ1bmsKKzI1MTQ3IDNlZjdiZWQwMDdmNmVkMzdjMjk2OTlmNjRjZWMwM2Q4Njc3ZGE0MDAgbGVnYWN5LXRydW5rCisyNTE0OCAwNWZhYmQ4ZjRlN2Y4ZDY1ZjNkMWIwYWE1MzE1YWY5NDJhNGUyMDYyIGxlZ2FjeS10cnVuaworMjUxNDkgMTllMGE5MmUzMjc3N2VkNmZhNWRjMjdjZmJmOWU4ODcxYTc1ZWRmYiBsZWdhY3ktdHJ1bmsKKzI1MTUwIDZhOGM0NmQ4MjEyYmM2N2IyOTJlNjk4MmU3NTQxNDY3MTFmMjlhYjEgbGVnYWN5LXRydW5rCisyNTE1MSA5NTc2MGFiMTE4NzU1ZjU3MWZiMWRjOWU0MjNiOTc4YzhhYWQ0NTk3IHJlbGVhc2UyMi1tYWludAorMjUxNTIgYTY4YmE3NTVkNzAwZTVlMzFhY2ZlZjQxOGZmMjNmZTUzYzI4ZGUyYiBsZWdhY3ktdHJ1bmsKKzI1MTUzIGNlMTBhN2Y5NjdlNWE3YmRiNjI0ZWM3M2Q2NDA4YTVkMTM1NTliNGQgbGVnYWN5LXRydW5rCisyNTE1NCA0ODNmNWYyNzJkZWZjNmY0N2U0OTljM2Y2OWI3NjZiYzFlMTc0NjAzIGxlZ2FjeS10cnVuaworMjUxNTUgYzg4ODYyMGU4MDYyYzdjN2QwZjUwOGIwMjE4YjMzOWEzN2NhNzBiYSBsZWdhY3ktdHJ1bmsKKzI1MTU2IDI2YTU0ZDNmNTVlNDdmZjM1NDczNGZhMDY1YzU5YzNlZmNhN2M1NzAgbGVnYWN5LXRydW5rCisyNTE1NyBlN2Q4YTlkYTNiMTgwNDBiN2YzMTJkYjM2ZDg4ZmQ0ZGYyM2EzODM1IGxlZ2FjeS10cnVuaworMjUxNTggMDNhMmJhNzQxNzliOWYxNWYwZGFjNzNiYjc0YTBiMWE1MmEwODIxYyBsZWdhY3ktdHJ1bmsKKzI1MTU5IGFkY2MxNDE0MjQzMmU4MTRlMjA3NTVhYzhkM2FlZjA1NGMzZGQyYzUgbGVnYWN5LXRydW5rCisyNTE2MCAyNDA5OGY0ZjY4MmVkMTZmZWYxNmRmYTIyOTUyYmZlNzVkN2ZhYTBiIGxlZ2FjeS10cnVuaworMjUxNjEgZmEzMDUxZTBmZDkzMjEyMDlmN2VhNDY3YzU3NDk4MDgyOGNhYjE0OCBsZWdhY3ktdHJ1bmsKKzI1MTYyIDJjOGIwM2VkMzkwNjNhNGUzMGZlMDU1NGZlNzY4NDNhYTQ1N2Y2OGEgcmVsZWFzZTIyLW1haW50CisyNTE2MyBlMGRiZDE3NTRhYTkwOGMxN2MxNWY4ZTM3NWI4YjZhYTEyYzljMDY3IHJlbGVhc2UyMi1tYWludAorMjUxNjQgYWFlOTc3Y2E1OGEzYTdiMWUxM2UxNDAyMzc2YjhiYjdlMjQzMDNiMSByZWxlYXNlMjEtbWFpbnQKKzI1MTY1IDM0NWI5MmVkMmEzZmI3YWEyZmM5YTU0MWQ0ZGM5NDU2ZmI1ODM1ZTMgcmVsZWFzZTIxLW1haW50CisyNTE2NiA5MjYwZjY5NDMyYTkzYzlhN2Q0YWZkMjJlNGIxOTVjMzI0YzYxMzQ4IGxlZ2FjeS10cnVuaworMjUxNjcgNTlkMDliYTFmNzgyYzhmOGVhZjNhZTE3YjYwNDVmZmI4NzE1NjFhMSBsZWdhY3ktdHJ1bmsKKzI1MTY4IDYzY2JhNDIzZmEwNDBiZjEwNWYyYzg4YzhiMThlNTMwNzJkMTlkYzUgbGVnYWN5LXRydW5rCisyNTE2OSA3NDQxNTMzYWNhM2JiOWJmNjA1M2ZlOGJmOTFkOTM2YzUxNzg5NDJiIGxlZ2FjeS10cnVuaworMjUxNzAgN2ExMWJmYzY2MjE0MzE3MTM3ZjM1NjE4ZWUwZDY0NTU5ZjFjYzNmZiBsZWdhY3ktdHJ1bmsKKzI1MTcxIDQ0NDU5MWFmZmQwZTAzY2MzMDZjNmM2NjM0OWM2N2Y0ZmM1YmQzODggbGVnYWN5LXRydW5rCisyNTE3MiBmZmM0MTE2ZWMxMTlmOGFiY2Q5YmY5ZWZiNmI3MGMwM2FkNDE3ODVmIGxlZ2FjeS10cnVuaworMjUxNzMgZjNiMGUzY2IzNDBiMzAyMTg5MTA5MzNjOWI5Y2ExODA2MmFjOGI5MSBsZWdhY3ktdHJ1bmsKKzI1MTc0IDA1ZTYzMTExYzMxMDZlMGQ5YmEzYjk4NTg4ZjM2MzM2MTU0MTc0MjggbGVnYWN5LXRydW5rCisyNTE3NSA5MDUyMTNlMjg2Nzc1NzEzY2ZmM2U2YmFhNWNlZDgzMTI1ZmIyODAzIGxlZ2FjeS10cnVuaworMjUxNzYgOTY5Y2UwMTdiZDNhMTc1YjU1MDU0NTYyMTk5NWViYWIzNmE0NDM3MyBsZWdhY3ktdHJ1bmsKKzI1MTc3IDNhNzA3NTIwZGUzMDkzZTdmODFhOWY4MDAwY2QzYmMxYzAwNGM1N2MgbGVnYWN5LXRydW5rCisyNTE3OCA5MGMxZjNmMzdkYWU0NmE4NWZlNzJmNmIxMGJmZjYxNzFkZjZiODI5IHJlbGVhc2UyMi1tYWludAorMjUxNzkgYjEyZGNkMjc2ZGIwZmQyM2U5ZWU5YTA3OTgxM2EwYjIxZGUyNGZiMyByZWxlYXNlMjItbWFpbnQKKzI1MTgwIGE0ZTQ3MzY3OTliMThmMzY5ZjdmY2IyM2ViZTA5ZTU0ZjEyYzNmZWQgcmVsZWFzZTIyLW1haW50CisyNTE4MSAxZDg2Y2RiMTcyOTE2MDllZDBlZGMzMTEwZjUzMjMyNWM0ZmQ3ZDkwIHJlbGVhc2UyMi1tYWludAorMjUxODIgMTRkYTdkZDM3Yzk0ZTZhNjQ4YjI4Mzc5MWJlZjZlZmYyNDkxMzQ1YSByZWxlYXNlMjItbWFpbnQKKzI1MTgzIGRmZjIyOGFkMTdiOTgzNTI1YTM3NjU4ZGZjZTgxMjllY2FlMWI0MjEgcmVsZWFzZTIyLW1haW50CisyNTE4NCA2ZjQ1NWQ0OTE4NzE1ZjM3MTllZjdkODNkNjIxOWMwMTE1Yjc5ZDE1IHJlbGVhc2UyMi1tYWludAorMjUxODUgMDZmOGE4MjFiNjgzY2QxMzU1NWM4ZTU4YmMxZjgwYTlmZGMzMzczMiByZWxlYXNlMjItbWFpbnQKKzI1MTg2IDdlNzk2NGM2ODJiNTYyMzhmY2JkMzMzODk3N2Q2MjUyZWQxNjFkYTcgcmVsZWFzZTIyLW1haW50CisyNTE4NyA3YmEyYThjMTYyZmEyNjdhNzczYTE1MWIzMTIwNTVjOTA1MzRmODA0IHJlbGVhc2UyMi1tYWludAorMjUxODggOWI0MTRkZjQ4ZTE0N2U5NTc0NDQyMWM2MTg2NTZjNWVjZjhjNzczZSByZWxlYXNlMjItbWFpbnQKKzI1MTg5IDczMWJlYjY3ZmVjOTAxN2E5MjZiMjZmOWE2ZjJiNTkwNDM3NDhlMGYgcmVsZWFzZTIyLW1haW50CisyNTE5MCA1Y2FlYTJiMTMyY2ExODVlMDdlMGJmZjUwZDkzYTczNmFmOTE5NjI1IHJlbGVhc2UyMi1tYWludAorMjUxOTEgNGY1NGU5YTI5NzZlNmMyMjFjZDYwNmJmYTk2YzcwMTBhOGZjM2Y5NSByZWxlYXNlMjItbWFpbnQKKzI1MTkyIGFhNzEzYzRjNDk4ZGVkZjNkYjIwZmE1NzE3ZDAyN2RhYTU5Zjk3NjQgbGVnYWN5LXRydW5rCisyNTE5MyAwNzBkMzkyMDQyZTNlZWY2NzAyYzUxODc4YmNlZjMzNzJlZGI4YTI1IGxlZ2FjeS10cnVuaworMjUxOTQgYzFkNTVhNjI3ODk3NzQwMzc3Y2YxZTdmMGMwOWVhMTRjY2RkN2IzNyBsZWdhY3ktdHJ1bmsKKzI1MTk1IGYzNzliYzBjNWUzZmM5NzI0NzNjNjNlMjliMWU1YzFkNDk2OGM0NGUgbGVnYWN5LXRydW5rCisyNTE5NiA2YTFlNzRhZGY4ZDZjZWM0ZDJjMTEyNjY3OTY2NTgxOTg3YTkwMDhjIGxlZ2FjeS10cnVuaworMjUxOTcgMTFjYzA1OTg1NzRkODE4NDVmMThjMmRiZmNlYTAzMjNmZmZmNTNhYiBsZWdhY3ktdHJ1bmsKKzI1MTk4IGZjMTBlNzAyMThkM2JlM2MyNWZjYTMzODllMzc0NGM1YWQ5MWY2MzAgcmVsZWFzZTIyLW1haW50CisyNTE5OSA1ZTY3YWQ3NmM3MmZkYWRiYzhhNzE0ODA5OTk0NGFmN2JjNzY2NTdmIGxlZ2FjeS10cnVuaworMjUyMDAgZmQ0MTg0ZGEwOTgzMGY2ZGNiMGI1MWY2YTE0MzI2MjFlZWIxNjE5ZSBsZWdhY3ktdHJ1bmsKKzI1MjAxIDRiM2IwNmRlMDJhMzExNWJjMDQwOGU1YWY1NWMzNjc2NDhlZDMxOTUgbGVnYWN5LXRydW5rCisyNTIwMiBmZTJiNjRmYzU3YTBhMGU0MGZjYWU4NjBlNGEyYjhjMDM3ZGI0NTY1IGxlZ2FjeS10cnVuaworMjUyMDMgNDNkOWMyZjlhMmY2YmMwMjE3MzVkOTA2MjNiYmFlOGU3NDYzODY1YyBsZWdhY3ktdHJ1bmsKKzI1MjA0IDQ4YjU5ZmE2ZjY0NzIyZDVlY2ZjNzU4YTFjNGZjNTE0MTFmMjY4ODMgbGVnYWN5LXRydW5rCisyNTIwNSBhOTNhN2JjYmMzODZmZDY4NzhhZGE0MGJiMjZkOWE1ZDU2NzBjZWM4IGxlZ2FjeS10cnVuaworMjUyMDYgMjZiNzU4YzAwZmI2MDY0NTMxMTE2YzExMmNiODFkZWY0ODdjZjk1MiBsZWdhY3ktdHJ1bmsKKzI1MjA3IDQ1NzMxZjEzNjBlZWNlMjY1YjkyZmYzNTk2ODVkNWZjOGVkMTQzMDEgbGVnYWN5LXRydW5rCisyNTIwOCBmZDQyNGY1MTlhOGViZTgzZTg2MDM4M2UxNDk1ZmQ1NzUwNTVlNGExIHJlbGVhc2UyMi1tYWludAorMjUyMDkgZmFhYWViNTM1ZDM5MmU3ZTBkYmFmYmUzNmQ0NmE1Yzg2ODc2YjIxMCByZWxlYXNlMjEtbWFpbnQKKzI1MjEwIDBkMDhjYjg0OTUxMTgwOGEzOWRlYmZkZWRlNzdmOGQzNjRmYjY0YjAgbGVnYWN5LXRydW5rCisyNTIxMSBlMGZjMjg2ZDU3YTQ2Y2Q2YTc4N2FhNWI5MWUxOWZmYjJhNjRhZWY2IGxlZ2FjeS10cnVuaworMjUyMTIgOWUzODRmMTAzMDQ3MjEwODdlZjc1YjFkMWY5NTY4MzJiNjkyNWE5ZiBsZWdhY3ktdHJ1bmsKKzI1MjEzIDY1ODNjOTVjZjY5MjI0MmRiMTM5ZmNkMGRhYmQ5YjA4Yjg1OTBkM2IgbGVnYWN5LXRydW5rCisyNTIxNCBjNDMzZGUxN2MxNTgzYWFhNzgyOGVjOGQ2YTA1OGM5Njg0NzYxYjc2IGxlZ2FjeS10cnVuaworMjUyMTUgMWYyZTkyODUwMTg4NzM4ODg5YWMzYjBkOTA1ZWZhMDI2YzJlODM1ZiBsZWdhY3ktdHJ1bmsKKzI1MjE2IDJmNjE2NDc0ZWFlYzdkZjVhYjE4YzU3MzM2MjljYzJkMDg5ZjZjY2QgbGVnYWN5LXRydW5rCisyNTIxNyA5Y2ZmODkwYjRmYjA3NmE4MzUxZjNkY2FmMGNlNjcwNjg0ZDZlMzMwIGxlZ2FjeS10cnVuaworMjUyMTggZDUyMWNmMDg5OWM4MDNiNTJiMGRhZWQ0OWI3ZTlkODU4N2I3MjE1NSBsZWdhY3ktdHJ1bmsKKzI1MjE5IDc2NjA3YTBjNjk1NjA4ZjU3NjMwNDQzMzg2YzQ2ODQxZDM0ZWExYTUgbGVnYWN5LXRydW5rCisyNTIyMCAyMGJjNGZmMTIxNWMwZmU3MGM4NzQwMTQwYmNmYjQ3NDI5NGRkMDY3IGxlZ2FjeS10cnVuaworMjUyMjEgZjVhYWI4ZWI4MTI0MTU3YjJkZmM5OGE1MmFhY2FiNmQwMjE0MGJjZSBsZWdhY3ktdHJ1bmsKKzI1MjIyIDUzYWM4Mjg0MjE3YWZkMWZhNzMzY2YyMjk1ZTMzNTE3MTE4MTEzMjcgbGVnYWN5LXRydW5rCisyNTIyMyBjYmY0MTkyNWRkM2U5MzE3MWIwZGQ5MTYxYTNmZjYwZGJhYjg2ZjdjIGxlZ2FjeS10cnVuaworMjUyMjQgZjcwOGE5MDdkYzY5MWE3YWNiMzg3NDQxNjQwZDM0YTZhYzM2YWYxNCBsZWdhY3ktdHJ1bmsKKzI1MjI1IDUzZmVjYzhkZDRjOTA1Y2NjNzc1YWUzNGJkYWM1ODM3MjQ3MDllZTQgbGVnYWN5LXRydW5rCisyNTIyNiA2ZjYyZDUxYzljMTI4MTlhZDMzODg4Njg5YjM5YmEwYzkzZmRmOTI0IGxlZ2FjeS10cnVuaworMjUyMjcgZGEwMDhiNWM1MDM1ZWMwNWRiNTI4OTExM2E0MzI1ZGM3ZWNiYzhlZCBsZWdhY3ktdHJ1bmsKKzI1MjI4IDNjZDBiNGJiNWUzNGQyNDlhYWMzODE3OTM1NzMxOWM0YzE5ZDc5YWEgbGVnYWN5LXRydW5rCisyNTIyOSBiNWQwMDJlOTA4MjdlMDZmZTdkYjFiYjUwOTMyMDA5MTY4ODhiNjFjIGxlZ2FjeS10cnVuaworMjUyMzAgMDQyZGIwMzgyY2QzYjgzMmY1ZWNlYWNlZGU2YzM2MzMxNTg2ZGQ5YiBsZWdhY3ktdHJ1bmsKKzI1MjMxIDUwNDNiNzM4YjA3MjBjM2YwZTA0YzI3NTI2ODBlN2YyNDQ5ZWJjNzIgbGVnYWN5LXRydW5rCisyNTIzMiBlZDg2MWUwZDRhNzFkNDg2NmNlNjE1MDMwOGE0MWI3MzQwZmM3NjhkIGxlZ2FjeS10cnVuaworMjUyMzMgODQ0ZmU3MjViMWNkNDMxMjhmZjVmZmZmZWJiMmY1NDY5ZjM2NTY4ZiByZWxlYXNlMjItbWFpbnQKKzI1MjM0IDRkNzIxMzU3YmRkYjVhOGFmNTY5OWU2Y2Q5NDJlZTZmMzU2MWFhNTYgcmVsZWFzZTIxLW1haW50CisyNTIzNSA3ZmFmMGZkZGY3ZTY4YWFmYzlkMmM2Mjc2MjUzYTdlNTI2ZjJhNTE3IGxlZ2FjeS10cnVuaworMjUyMzYgNzhlMzZmMDUyM2E4Yzg1OGEzYmQ3MzE3MDgxZDU2ZmQyYTlmODU1OSBsZWdhY3ktdHJ1bmsKKzI1MjM3IGU0ODg0NjcxN2MyNmYzYzM2OGJjNzk3YTYxYjUzZDQ3ZDZiZGNlZGMgbGVnYWN5LXRydW5rCisyNTIzOCA0OWQ5MzY4OTQwMmI1NGUwMTA0YmMzMGY2NDQyZDczN2NlMmRmODNiIGxlZ2FjeS10cnVuaworMjUyMzkgOGRhZmU0YTc4Y2FjNDY1MTVhNjNmNTQwMzQzNzA0NjQ4ZmFkMzE3MiByZWxlYXNlMjItbWFpbnQKKzI1MjQwIDM1Zjg0ODkzYWNmNzY5YzhkMmYwMGEwOTEwOWFhNWIxYmM0MWIwOTcgcmVsZWFzZTIyLW1haW50CisyNTI0MSAxYzc2OTIxN2MxMDU5ZjNmZTMzNTdlMGNlODk1NjU0MzY3NTM2MGYxIHJlbGVhc2UyMi1tYWludAorMjUyNDIgOTRiYWM4OGYxNTBmMDAxMDJmNTQwMjZiYTRmMjFhYTk0Njg2M2I0NCBsZWdhY3ktdHJ1bmsKKzI1MjQzIDBhODEzYTNkZGI5MmRkOWNhZjlhNWIxYzJiMjNlOGIyZWE1OGI2NTcgbGVnYWN5LXRydW5rCisyNTI0NCAwNGNmNGUxM2U1YzlmYjM0ZWQ3NDEzMGQ1ZDE5YWJmOTJjMTVlNjBlIGxlZ2FjeS10cnVuaworMjUyNDUgYzgyODZjYzcwMmM5OTI0ZjFlMmIyMTNjZmVlYWUyMjAyZmRkMDQwMiBsZWdhY3ktdHJ1bmsKKzI1MjQ2IGFiZWRiMjQxOGY2MjMxYWRmMjQyMDUwOTJhNTk5OTZmMWYxZTRjMDIgbGVnYWN5LXRydW5rCisyNTI0NyBlMTA4Njk3MjZjZDQxYjcyYThiMWY5MWRjMGFmM2IzM2Y0ZmM3NDU1IGxlZ2FjeS10cnVuaworMjUyNDggODM2YzFkYmYyM2EwZWE5ODFjZGY2M2IzZjcxZDM1NDI2NGJjYmYxZSBsZWdhY3ktdHJ1bmsKKzI1MjQ5IDE5ODM0Y2QxMDFkOTFiNWYzMjZlNDUxZDkxNDJlOTExNGFhZWZkMDcgbGVnYWN5LXRydW5rCisyNTI1MCA2NGU1YTM5ZjFmZjA5NjE1ODJmNjFhMzk1NjI3YTViYjVkNDI1ZjRlIGxlZ2FjeS10cnVuaworMjUyNTEgMTdhNTZlMWM2ZmY4ZTI3ZDJkM2RkOTY1M2U0YjFkMDZjMWY4OTI1YSBsZWdhY3ktdHJ1bmsKKzI1MjUyIDhlZDdjNjFiNWYxYmEzNWIxNWExYTRiNTE5MzExMjY2MjFiY2JlNTQgcmVsZWFzZTIyLW1haW50CisyNTI1MyA4NjEzZGYxN2YxOWJiZDM4ZTU5MTQxOGM4NGRkMWYyM2FjMTE4MDA3IHJlbGVhc2UyMi1tYWludAorMjUyNTQgZjI0NTk1NWIzZmJlN2Y0YTJjMWFhYWIyMjUwYTVkYjZmYjU3OGQxYiBsZWdhY3ktdHJ1bmsKKzI1MjU1IDIxZjU5ZDllZDE2OWY0ZGIwNzYzYjgzY2UwMDQ3YzBkZDgxZWE1MDMgbGVnYWN5LXRydW5rCisyNTI1NiA5MzczNDhlZjE4Yjg1NjA0MjNhODllNjkyNTgxNDBiNDY5YTIxNzNmIGxlZ2FjeS10cnVuaworMjUyNTcgOThlOTJhNjRlNzNjMmZmNzUxZWJhYjI1NWMxZjhkMTQ1MWMzZTZlMSByZWxlYXNlMjItbWFpbnQKKzI1MjU4IDg2ZmNkOTQzOGNiZWJkNzE4Mzc4ZTU0ZTY0YjIyYjllYzIyNWVhOWEgcmVsZWFzZTIyLW1haW50CisyNTI1OSA0YjVjMjhhNjJkMTZlNGE0Zjc4YzNiNGQzYTEyN2YwYmEzNzExODU0IHJlbGVhc2UyMS1tYWludAorMjUyNjAgNTdlYWE1ZDY5YWMzNWY1MGQ4MGE3ZGMwZDBmYzQ4MzBmMWZiOWU1YiBsZWdhY3ktdHJ1bmsKKzI1MjYxIDRjMWNjZjM2MDI1Y2Q5N2FhZGQwZWExMzE2N2ZhZmNkNDAxYzkwMDQgbGVnYWN5LXRydW5rCisyNTI2MiAxZjZiYzQ5OGU2ZTU2ZTJmYzU1ZTVlZjNkMDQ0MGJmYTI3YTdkODNlIGxlZ2FjeS10cnVuaworMjUyNjMgYzA1MThhZDcyYjkyZTBhYTljYWRhNTEwNjcwNTZiN2Y3MGVlMDAxMCBsZWdhY3ktdHJ1bmsKKzI1MjY0IGYwMDc4MWQ2NjRhOWE0YjQzMWViYjA3ZTQzZmExNjhkNmQ3NDc1YjggbGVnYWN5LXRydW5rCisyNTI2NSBkY2MwNzc4ZWI3ZDNiNDFjMTc4MmFjYmQzNjdkMTAxMjM2NTUxNWViIGxlZ2FjeS10cnVuaworMjUyNjYgZjg4MWUwNjE4ZGYwYWY2NjUwZDExZDY3NjVhNGYzMTRlYTc3YzQ1OSBsZWdhY3ktdHJ1bmsKKzI1MjY3IDdmNjUyM2IzMjE3OTI2MjNhNjFjMjZmMGIzMjUyNzZkNDJlMTlmMTEgbGVnYWN5LXRydW5rCisyNTI2OCAxNmZhZjY4NzUwMDQ1MmY5ZDJiMzMxMTgzYzRlYTZhZWJlMTZjYmQ1IGxlZ2FjeS10cnVuaworMjUyNjkgN2MzMGNiMTdjMmY2NTZkN2EwNTM2ZWI5ZWNjMzI3ZWYyMDhkY2YyYyBsZWdhY3ktdHJ1bmsKKzI1MjcwIDE2YzJhZTM2OWQ3MTVlMmU5ZjY3ZjA2ZjIxNTI4ZjNlOWNiZTMyMDAgbGVnYWN5LXRydW5rCisyNTI3MSA3OTRmZTM3Y2E1ZjRlOGI1OTk2M2IxOGQ3N2E2YWYzYmY4YzYzNjAzIGxlZ2FjeS10cnVuaworMjUyNzIgMTUxN2I0NTQ3Yjg3NjZjYTM4NzUwNTNmNTkwZDgxOTU5NjIxYjQwMyBsZWdhY3ktdHJ1bmsKKzI1MjczIDlkMmFlODUzMTk0NDA0NTg4MDZlNGZkOWFhMTAzOGE0ODkxOGYyOGEgbGVnYWN5LXRydW5rCisyNTI3NCAwYzY5OTkyY2NlMDk5NDZkMzg5NzVmMjM0MTNkNjAxZjQ3NzBhOGYxIGxlZ2FjeS10cnVuaworMjUyNzUgZTE2MzcxM2I0N2NmMjFiMTNjZDliODU5MWE2ZGMxNWFmNjgyZWYyYyBsZWdhY3ktdHJ1bmsKKzI1Mjc2IDE1YzBlN2FlZjY2NmQxODgzYzJkN2U1ZjcyYzliOGE0MGRmZGNjZTkgbGVnYWN5LXRydW5rCisyNTI3NyBiOTgxNWY0ZDhiZTM1ODU0OTU2ZmYyZjc3YThlNjYyY2M4MTlhM2QyIGxlZ2FjeS10cnVuaworMjUyNzggMDc2ZTlkYzc3YWFkYjM4NTcwMjM2NTVmNWVmNTEwZDg4OTg5YjdjNyBsZWdhY3ktdHJ1bmsKKzI1Mjc5IGMzNzYzOTc2MTEyZDVhZmZiYjllNDU1OWY5MDEwMjE4NWQ5NTM2YjcgbGVnYWN5LXRydW5rCisyNTI4MCA1OWJiNDNiNmViMTFmMjVmYzljNDIwZGYyM2UyOTg2OTdkODZhOTE2IGxlZ2FjeS10cnVuaworMjUyODEgMGY1ZGZhMzNmOWVlODRlMGQ2YzA3ODc2NTRjYWVjMGUyYmFiNDExNiBsZWdhY3ktdHJ1bmsKKzI1MjgyIGY3YWEzMjdmZjBmZWI5MjcxZTNlZmZhMmE2NDllNjllMWY4ZjhkMDAgbGVnYWN5LXRydW5rCisyNTI4MyBlZmI2ZTYxN2FlYTM5ZGQxYWFhN2YxY2M4YzkwZWE0MjE1NmFjOTBmIGxlZ2FjeS10cnVuaworMjUyODQgODdhZmY2NDhkOTk0ZTIzN2RjMjZlZjY2ZDQ0ODJhNWFmZDUyYThkYSBsZWdhY3ktdHJ1bmsKKzI1Mjg1IDEwOTdmNzMwMjk0YjJjOTBhOWM3YWJmNjI1NTNjYmNkNzViZWE1M2IgbGVnYWN5LXRydW5rCisyNTI4NiA5ZjZlMGNmMWFiMzA5N2ExNTVlNzVmZjJmMTNmODg3YzEwOTI1NmRmIGxlZ2FjeS10cnVuaworMjUyODcgMjQ0ODI5MjFhNzhhOWI5MmQ0YTU5NWQ5NTY2NTRkZjQ3YjY0YjMxYyBsZWdhY3ktdHJ1bmsKKzI1Mjg4IGExM2JmMmY3MjYyOWFiNjhhNzEzMDc1NGM3YTVjZDE2NjA4ZDc0MTUgbGVnYWN5LXRydW5rCisyNTI4OSA3ZTcxNTljMDI4MzA5MWY4ZmViN2IwZWViZjYwZDVjZjEyZWIyMmI0IGxlZ2FjeS10cnVuaworMjUyOTAgODhlMjE3ZTUwNTNmZTQ0N2RmZGQwNzhmNTBiMGU0YWY0N2RlMmYyOCBsZWdhY3ktdHJ1bmsKKzI1MjkxIDc3ODI0MTU4MWQ0YTM1NmM2MDM4M2VlZDZkYjYwNzYwM2RkMGYyOWMgU291cmNlRm9yZ2UKKzI1MjkzIDdmMzViYjkyZmJmNzUzNDgwMmI4OWQ3ZWU5Nzg3ODljNjAzNmJkZDAgU291cmNlRm9yZ2UKKzI1Mjk0IDdkNWIyYzY3OWYzYmNkMTNkNmY2OGEwN2ZlYWY3YzExMGQ3YjYwNTUgbGVnYWN5LXRydW5rCisyNTI5NSBhYjY4YWQ0M2Q1MTQzNWQ2MTAzYTU1NTRiNGUzMjg4NDA5YjBiMWY4IGxlZ2FjeS10cnVuaworMjUyOTYgYjM4NjI5YjkxNTQ1MTJiYWNkMzFkMTQzNGY1MWI3NjVlMTE5MDg2NyBsZWdhY3ktdHJ1bmsKKzI1Mjk3IDcxZmZjOWZiNTk4NmY1OTUzMWEwODU5Y2UwMDJiYzhlOTlmOTg2YTQgbGVnYWN5LXRydW5rCisyNTI5OCBlMjBkMTJiNWRhZDFjMGZjNjIzYWVmZTYwODUwZmQ0YjA4MDZjZjBmIGxlZ2FjeS10cnVuaworMjUyOTkgZDc0Mjc5OGNkNGI0YTQ2YjhjNDdhNzE5ZGNmODAxM2JhOWI2NjZkNyBsZWdhY3ktdHJ1bmsKKzI1MzAwIDgyOThlOWM1MzVkYTg0ZjE5MzVmYjUyZjI2M2VlMTVlMDYyZjhlZGIgbGVnYWN5LXRydW5rCisyNTMwMSA0YWIyOWIwNmE3NmNiYTBlMjJjNDhhMjNhMTUzMjVmYjY2MjRhNGUwIGxlZ2FjeS10cnVuaworMjUzMDIgNmJkZmM5ZjZmMDU5MDMyZDVlZmZjODA4YjRiMWFlNjEwMTRmMzYyMSBsZWdhY3ktdHJ1bmsKKzI1MzAzIDMyZDBlZjZmMTk1NTcwNjJjMmIwMzBhNjA4M2JkZjljMDAxZjIxMTcgbGVnYWN5LXRydW5rCisyNTMwNCBmNzQ1N2ZhYjc2ZjBkYmJjNzBiMjc5ZDE4NzRjYzNhMDkxMDA2NTA1IGxlZ2FjeS10cnVuaworMjUzMDUgOWQ0NGU3NTJkNjE3ZWM1NDA5YjRhZGZmOGY1ZjU5YmZkZDMyMTk3ZCBsZWdhY3ktdHJ1bmsKKzI1MzA2IDljODMyM2FiZjFkYmQyN2Q5Y2EwY2Q3ZDcyNTQ5OWU5YTU5NjkxNzYgbGVnYWN5LXRydW5rCisyNTMwNyBmMzkyMTM0MDVlMDVjNDhiNjM5ZjNjN2NhMmNiZTBlNjgyYmQ0M2MwIGxlZ2FjeS10cnVuaworMjUzMDggY2JmMWRiY2ExZjYzMGNjMzcwMmZjYmRlMGI3MWJkNjI4YTQ2Y2RkZCBsZWdhY3ktdHJ1bmsKKzI1MzA5IDc2NmM1OTM3YTYxZWM2NzdhOWQ4Mjc2NjEyMzlhZmZmMTAyZTYxMjkgbGVnYWN5LXRydW5rCisyNTMxMCA5MWE2ZGI2ZWZhMTQ5YTI1MTVjZWRhY2Q5ZTQ2ZWI1MzY1MTkwMWUzIHJlbGVhc2UyMi1tYWludAorMjUzMTEgZDI0NDExMDVhOWJmZjEwOGNlYzkwMzJkMjM1Y2RlMzBkODc3MTlhYyByZWxlYXNlMjEtbWFpbnQKKzI1MzEyIDE3Zjg0NjlmMDlkMjA3YWViMzUyMGI5NDYxN2YyNmEzM2NjM2RhMDMgbGVnYWN5LXRydW5rCisyNTMxMyA4MWMyYmRhNWQzNzc4ODg2NGQyMzhlZDFlYmI2ZWM4YzllNjcyZTM5IHJlbGVhc2UyMi1tYWludAorMjUzMTQgNDg2NDQ0NDUyMGQ5MmJjYTBkY2YwNzg2YzFlMjUwYjQ5NGFjYTMyYiBsZWdhY3ktdHJ1bmsKKzI1MzE1IDY3NmRiMDMwMGYwNjc3ODVmYmQ5Mjg0YjAxZTQ2N2EzNzE5YjhiMWIgcmVsZWFzZTIyLW1haW50CisyNTMxNiAwYzllYmNmMTdlYmZkNTkyOTZlMTY5YTRhOTk1MmE1YWVlYjg0MDdjIGxlZ2FjeS10cnVuaworMjUzMTcgOTdmNDllZGNiZGU3MjBhMDczNDhiNDUxYmY4Yzc2YTY4NjBkMzQxZSBsZWdhY3ktdHJ1bmsKKzI1MzE4IGI1NWYyZmY4YjI1ZjYxN2U0NGYzOTc5Yjk2NzFkMTE3YzgwNWMwYTUgcmVsZWFzZTIyLW1haW50CisyNTMxOSAyZTllMWIwMmI3ZDdiNjJiMjgyMmQ4MDc0NWNiYjE1M2IzYzc3ZWM1IHJlbGVhc2UyMS1tYWludAorMjUzMjAgOWZhNWQ0MGNjNzIyMmQ2ZjE3ZDU5MTk0ZjA4ZmIwNDMwMDNkN2IwYiBsZWdhY3ktdHJ1bmsKKzI1MzIxIDVlZDc4MmJkYmIyYWEwMDc5YTZkMWMzNTUwYjM4YzVhZDQ4OWQ3NTggbGVnYWN5LXRydW5rCisyNTMyMiAzOTU3ZDE1NWY4YzU1MDE5NGE4ZTVkMzhlYTYzOTM5ZjU2OGE0MDk0IGxlZ2FjeS10cnVuaworMjUzMjMgN2E5MTdhZDhmNDQyNGY1MmZkNDk2YjEwYWM5ZjdlZmQ1YzczMTUxYiBsZWdhY3ktdHJ1bmsKKzI1MzI0IGVhMjNlNmU0OTI5MDNkMTAzZTYzNjYzNWIzOTdjNTkwZGFmNTIxNDAgbGVnYWN5LXRydW5rCisyNTMyNSBkM2IxZjJjMGViY2ZjM2UzZjk5MDU1ZGM0NjQ4ZjBhYjY4NDM3ZjYzIGxlZ2FjeS10cnVuaworMjUzMjYgMmZhYTIzZmFjZWY3MmRmMjRlZjhiMzZhMmVhMzk4YWU1ZDE2MmI1YSByZWxlYXNlMjItbWFpbnQKKzI1MzI3IDk0YjkwY2RkNmUwZmU1ZTNmN2EyOTM5YmI1YTc0YTc4ODcwZGRhNzggbGVnYWN5LXRydW5rCisyNTMyOCBjNWQzZTQ1ODc0OWU3ODFlOGNkMzA2ZWQyNGZjYzRkN2NmYzE1ODZkIGxlZ2FjeS10cnVuaworMjUzMjkgOWM0MDI1MjNmOGY1YWI1N2Q0NTg4NzhhNGI0NWI3MjM0N2JjZjIwMSBsZWdhY3ktdHJ1bmsKKzI1MzMwIDRkNTU0NzAwYzRkMTcyMzI2OGE5ODY0M2Y4YjMyN2VlN2VhMDk0YjQgbGVnYWN5LXRydW5rCisyNTMzMSA2Mjc0MWIyNWVkNjUxNzg2NDg1MjU1OTNlZmZjNjc1NTE4OGMxMmVjIHJlbGVhc2UyMi1tYWludAorMjUzMzIgNzJjOTU0NDhlZTRiM2MwYjVjNGQ4MmY4ZWZjZGZmN2MzMTdhZGFmYyBsZWdhY3ktdHJ1bmsKKzI1MzMzIGIxYTg3MWRjNTE5NjJkNWI4MTM3ZjNmMjg2NGRmYzNmN2RjYmU1OWQgbGVnYWN5LXRydW5rCisyNTMzNCBmY2U3Mjc4ZDQ2YjBhODQ5MGU0NjliNWZjMzlkMDA2NzIyOGNmYzI1IGxlZ2FjeS10cnVuaworMjUzMzUgNGExMzM3OTA2NjA4ZmI3NmEzZTk0MDExNjgyZmIzNzlmN2Q4YjkyMSBsZWdhY3ktdHJ1bmsKKzI1MzM2IGVhOGRiNmY1ZDFjNTc5MjZjZTU3MTNkYzhkYjQ2NzE0ODhkMTcyMGYgbGVnYWN5LXRydW5rCisyNTMzNyAwNTJlZmMwNjUyMGEyMWRiZjY4YzFjODZjYmJlYWExMDc2NjMyOTk2IGxlZ2FjeS10cnVuaworMjUzMzggOGUwYzNiNzVlZmY1OGIxNWE5ODY2YmY4MGNjNGU5YjQ5OWViODEwZSBsZWdhY3ktdHJ1bmsKKzI1MzM5IGU5NjRlMGZjNGJmZTcxYmIzZDAzMjdlMDhhNjA1MGQxZTViY2FiODkgbGVnYWN5LXRydW5rCisyNTM0MCBhMGFkNjljMGJjMzY3ZjM0MTNkNTg3ZTRkODA5NTI5Nzk3MmJjZGQ3IGxlZ2FjeS10cnVuaworMjUzNDEgMTllM2Y4NjU5ZWVjZTJjNTBjM2YzNmM3YWJjNTI0NTVhMTQwZWJkYyByZWxlYXNlMjItbWFpbnQKKzI1MzQyIDg4YThmY2FkMDJkMGRjY2JjNGZmNzk3YTY3OGYyNGM2ZmMzYTA3ZTggbGVnYWN5LXRydW5rCisyNTM0MyBjODBmNTYwMTBiMjg1YzgzYmVlZGUzMWY2OTg0YjYxYTM4MzMxMmJiIGxlZ2FjeS10cnVuaworMjUzNDQgNGU5Y2MyNmUwM2ZkZTkwMzhjOWZiMWE2MTkxYWYyZDI2ZDFmNDM3MCByZWxlYXNlMjItbWFpbnQKKzI1MzQ1IGUwOGFiMzQ3ZDEyZThiM2ZhZmUyYWFlM2E0OWI4MDBjYjMzNTNhNDAgbGVnYWN5LXRydW5rCisyNTM0NiA0YzMzODdiYTExOWQwMTg3YjIyYTE1OGU0YjQyMWZkMTk4MzAyMDQ2IHJlbGVhc2UyMi1tYWludAorMjUzNDcgMThiNWM3ZjY0YzgwNWMxNWU0ZjZjZGEzY2E1MWI2MDQ1MTgyYjQyZiByZWxlYXNlMjItbWFpbnQKKzI1MzQ4IDliNDVhNTg3NGMwOTkxOWFjMGM0YWU2YzYwNThmYWVmYWE0MjM3ZDIgbGVnYWN5LXRydW5rCisyNTM0OSAzNWQ5ZjU2OTM2MWFmZTZjYTNkMDk2NTQxOTBhYTBjMWQxYmU2Y2FlIHJlbGVhc2UyMi1tYWludAorMjUzNTAgMGY2MzExMWJmNGM1ZDc3NWY5MjY2OTdkM2RhODg0M2FjNmRhYjgxMCBsZWdhY3ktdHJ1bmsKKzI1MzUxIGY5MmU4NjhlYjQ0MGI3NjA5OTQ4YTU1NzYyZGNiYzlhZWY2YzljZTcgbGVnYWN5LXRydW5rCisyNTM1MiBjODQzYmU1ZDU4YTlkYzhjN2RjMmJmNTRhNWE3NmM5OTM5MTM5MTk1IGxlZ2FjeS10cnVuaworMjUzNTMgMDlhYjljZTFmNTJhNjAyNGVlYjUyZTcxNTJlY2MzODBmODJhN2Q1YSByZWxlYXNlMjItbWFpbnQKKzI1MzU0IDA4YzViMGM3ZDlkODE4ZTdjYWVjOWM3NTEzN2Y3MTI5YjViY2FkODUgcmVsZWFzZTIyLW1haW50CisyNTM1NSBhN2ZiZGU2ZTM0YTUwZjQ1OGZkYmVlMWMzNGE2YWVhYjYzYTQ5NjljIHJlbGVhc2UyMi1tYWludAorMjUzNTYgNGU5OTYzMTRmOGZiNDQxMzlkMzgxYjg2MjZkM2ExZTc1NDc2MDkxMiByZWxlYXNlMjItbWFpbnQKKzI1MzU3IDFhYTBjZTYwZjZhODUyNzBjMTUyNDY4YjIxOWQ2MWM4OGI2NWU4ZTkgcmVsZWFzZTIyLW1haW50CisyNTM1OCAyNzE0NzM5ZDQ4M2I2MjdkNzEyODkwYzliZGFhZjYxMTRhNGI0NWE3IHJlbGVhc2UyMi1tYWludAorMjUzNTkgMGIxNWNmMTE0MzFlNGQxNzZlMGZmYzFhODY3NTQ3YjhkNDk5OWNkMSByZWxlYXNlMjItbWFpbnQKKzI1MzYwIGNiNWI0YTU0ZmYxMmE0Y2Q4MzAxZjYyNDZhYjM4OTk4M2UyYTM2NzAgcmVsZWFzZTIyLW1haW50CisyNTM2MSBkZWZkMmIxYTg0MjY4OGJmMTYzOTA5NjNlMWNiNzE1YjU0ZWEwZGE0IHJlbGVhc2UyMi1tYWludAorMjUzNjIgN2FlZTBmOGFmYWM1MDhjZTZmYzE4ZTBkNzFmMzRhNWY5NzExOWU4MSByZWxlYXNlMjItbWFpbnQKKzI1MzYzIGJjNWJmNzJmYjVkNDVkNGMwZDZhZWY2YTM1MjRmYjBkZTZjN2U0ODYgcmVsZWFzZTIyLW1haW50CisyNTM2NCA5NjU4NzQyNzllZTJkMjY2NTk2MTA1ZTNlNmZkNTNkZjIxYzBkOTM0IGxlZ2FjeS10cnVuaworMjUzNjUgNWU5NWYzZWU3N2VjMTQzYzdlMjNmMGU2NjVjNTcxNmYzYTQ4YjYxYiByZWxlYXNlMjItbWFpbnQKKzI1MzY2IGE2YTViMWZjYzJhN2U4ZjU0ZWEwMGNiMjJjNDJlNmU4MmQ3OGQxYjYgcmVsZWFzZTIxLW1haW50CisyNTM2NyA1MTI2NmIyYjQzNjBkNGU2ZDA5OTY5OTM1MGQ4YjllYjUxNTZmMWIzIGxlZ2FjeS10cnVuaworMjUzNjggNTJhYTNlM2U1NzdmMTIwYzU5MmM4ZmVjMGE3NzM3OWIyMGUxYjU0MCByZWxlYXNlMjItbWFpbnQKKzI1MzY5IDRjZGFmZmM5ZTE4Y2MwZjBiZTUzODIwM2U0NjU4NjY4YWJmY2M4MjEgbGVnYWN5LXRydW5rCisyNTM3MCA4YTc5MTMzMGZjMjAzYjZjMjUwNzQ1MzU3NzUyMWU5OTY0MjBiY2I0IHJlbGVhc2UyMi1tYWludAorMjUzNzEgZDI0YWFkZmUzYzA2YTlhOGJjMTczN2QwOWY0MzNlYzExZGIxZGFiOCByZWxlYXNlMjItbWFpbnQKKzI1MzcyIDhjZTE3ZGE5OGU4Y2JhZmNiOThlMGIxODIxODc0OTA0NWFmZjAyOWIgbGVnYWN5LXRydW5rCisyNTM3MyA4MmZiMGY5OWUyZGFkMzE4ZGU0MDNhNGRkOThiYmM1YzAyOWUxZjc2IGxlZ2FjeS10cnVuaworMjUzNzQgOTYzNjc1ZmU5N2U3ODkxZTIzOGZiZmQ5Yjc3MmFiZDg4YTgxMjY5MCBsZWdhY3ktdHJ1bmsKKzI1Mzc1IGU3OTk0OTg4MzZiOTRlYzlmZDQ1ZmIwYzYxZDU0N2ExYjFhOGQ2MDYgbGVnYWN5LXRydW5rCisyNTM3NiA5ODg1ZGEzZmVlZWNkMWIxMzBhYzNlNDBlOWMwODY4NjhiZjgxMzM2IGxlZ2FjeS10cnVuaworMjUzNzcgZTNmYjhkMTZhNTFhY2E1N2QzZjlhZjJhOGZkMzg4YzA0YTA0OGEwMCBsZWdhY3ktdHJ1bmsKKzI1Mzc4IDRlYjgxODY5ZjYxOTdiNWIyNWFlZGQwMzcyZDlkZGNmODk3NTk2ZDEgbGVnYWN5LXRydW5rCisyNTM3OSA0ODFlOWE0NmQ2ODAxMWIzMjM3OGJlZmYwYTZmYjliYWYzNjc1NWVmIGxlZ2FjeS10cnVuaworMjUzODAgODBhMDRjYmNkMGM4MDExYTYwMmVjMTA2NjYxM2U0NjkxNzQ0ZmY5MyByZWxlYXNlMjItbWFpbnQKKzI1MzgxIDQ0ZWRiZTBmMjE3NDhlOGUyZTNjZDUwMDEyYmFhODc1MGRkNTE4N2EgcmVsZWFzZTIyLW1haW50CisyNTM4MiAzMmQyNGY4ZDY0ZjdiMzZkYTc0NDI5MTY0NDZiYzYwMTFlMTQ3NWI1IHJlbGVhc2UyMi1tYWludAorMjUzODMgOWY1ZTM1Nzg2NzUyNTI3YmRiZTk2NjBhZGFiZDNlYjllYjE0NzcxMiByZWxlYXNlMjItbWFpbnQKKzI1Mzg0IDcxZjI1Zjk1ZTkwMjU5ZDUyMTA2ZDc0ZTVkMmNiZDVlNjQ4ZTZjMjEgcmVsZWFzZTIyLW1haW50CisyNTM4NSBiODY5MTYwMWQyYTAyODgyOTdhNTZkMTk5ZTE5ZjAwNjQ0ZjVmZDJjIHJlbGVhc2UyMi1tYWludAorMjUzODYgZTA2ODQ0MGUxMTZmOTM5NmU4NWZlZjE0MjgxMmZhYTcxNjNmNDZiMiByZWxlYXNlMjItbWFpbnQKKzI1Mzg3IDk1ZGMzMDI0OTI3Yzk4OGViZjE2MmRhNjU3NWRiMWRkOGE1NDA4OTcgcmVsZWFzZTIyLW1haW50CisyNTM4OCAwMmE3YzY0ZTMzMzFmOTk3ZGM1MDMyMDc4N2IyNDc2ODFiMzA2N2E0IHJlbGVhc2UyMi1tYWludAorMjUzODkgZmJlODIwZTBjNjAxZDY2NTc5ZjFiMDEzMGNiNjZkZmFmODAxOTY3OSByZWxlYXNlMjItbWFpbnQKKzI1MzkwIDdmYmVmZTNlM2RlZTJkNzIyYTVkY2RjNWY1ZWUzMmJhYWEzMmMwYWYgcmVsZWFzZTIyLW1haW50CisyNTM5MSA1NTZmYjdmMWI2MDY3NDNlMTg2NTRkZTNiZjU0OWYxY2Q3YjZjOTA4IHJlbGVhc2UyMi1tYWludAorMjUzOTIgYTViMjVhODE2YTZkNjhjMmU5M2NjODY0ZGMyNTlmYTg2NzVjODZkZSByZWxlYXNlMjItbWFpbnQKKzI1MzkzIDk5MzQxZTg1MDE3ZWE0NmJkZTgwY2RkY2QzNDU2NTZmOTg3OWNiNDMgcmVsZWFzZTIyLW1haW50CisyNTM5NCA3NjEwNzUyODBhOTVlNjBiZTFhNTZkZjU0NjI1NzhhZTdjMzkyOTM5IHJlbGVhc2UyMi1tYWludAorMjUzOTUgYjEyZTk3MTQzNjY4ZDg3ZDhiNmRiM2E1ODJkNDA1NTdkOWRiY2ViYiByZWxlYXNlMjItbWFpbnQKKzI1Mzk2IGZkYWFmYWE4OTU4N2Q3OTkwYzRlY2VlYWEwZDA4ODNhNzNhMjU2YTkgcmVsZWFzZTIyLW1haW50CisyNTM5NyBhZTQ4ZDU0MWY2NWFjMzlhYTY1ZWJhOGQxMmY0NmE1MGJiMWQ4MmZhIHJlbGVhc2UyMi1tYWludAorMjUzOTggMjI5M2UwZDdiNWM0NTA2ZmUxMzU4M2U3NmRmOWYwNWFlYjBmMWNlNiByZWxlYXNlMjItbWFpbnQKKzI1Mzk5IDIyOWI2MjRjNmI1NGM5MTYwYjM5MjM0M2JiYTY0YTU2NWUzMjc0NmMgcmVsZWFzZTIyLW1haW50CisyNTQwMCA3MjIzYzU0YjA3Mjc2ZDk4MGRkZTg5MzNhNWRiMDI5OTAyM2E1YmFiIHJlbGVhc2UyMi1tYWludAorMjU0MDEgZTZkNDRjZjI5ZGJmOTc2YTUxZTRmNWFjZGNiYWJmMDQ4NTZlZjAwMyByZWxlYXNlMjItbWFpbnQKKzI1NDAyIDEzMzljYmU5NGNlZTU1NDVhMzJiYjJmZWU0MWM0ZDM1OThkYTc4N2QgcmVsZWFzZTIyLW1haW50CisyNTQwMyA4NzVmYjViNzI5MTBjMzUxZjhhMjQzZDAzMDNiYzFmYWRiZTU2Nzg5IHJlbGVhc2UyMi1tYWludAorMjU0MDQgZTBhMjg4ZGIwMjJkZTFiMTFjY2JmY2E2NGFiZjU1OTYyZjE4OWU4NiBsZWdhY3ktdHJ1bmsKKzI1NDA1IGYzODYzMzAzYTlmNGZhNTVmMGJlYWM3NzkwYWRmNzBjYmI2ZmU3ZmUgcmVsZWFzZTIyLW1haW50CisyNTQwNiA0N2FhMTA4MWFmMjgwOTgwMDdlMWRmZjg4NTlmYTY0YWI0ZDUzMDUzIGxlZ2FjeS10cnVuaworMjU0MDcgMTQ5OGM2ZTRiNDNhMWY2ZGI5MTBlYmZlZmNkNGJlMzllMDdhZGQ4ZiByZWxlYXNlMjItbWFpbnQKKzI1NDA4IGNhMmNiYTEwYjQ0ODdhYWYwZmZmMjk1ZWYwZTU2Y2YwMDgzZGNiNTcgbGVnYWN5LXRydW5rCisyNTQwOSAyNzYyZDIyNTFlODVkYzY0YTc2MjEwYTExYTVmMGU0ZDNjZWYxNWQ5IGxlZ2FjeS10cnVuaworMjU0MTAgZWZhMjNkMjZmYTM1ZDQ2ZTRmZWNjNDc0NGY1MTFiODFkMTdmOGVhMyByZWxlYXNlMjEtbWFpbnQKKzI1NDExIDZiZTY1OTIzYzAyZDZkYzQ2NTUxZjk5Yjc4NzA0ZGM5ZmE3YmY3MWIgcmVsZWFzZTIyLW1haW50CisyNTQxMiA5YjFjYzk5ZjU5MzJhODQ5NzhjMjM4ZTM1NDQ5YWNhNmIzMmU2MjMxIGxlZ2FjeS10cnVuaworMjU0MTMgZWNmZjQwNDYxOTdkYTE4MDhiN2EyMWQ4MGEzMzIxY2VlNzBhOGZmMyBsZWdhY3ktdHJ1bmsKKzI1NDE0IGUzMWFkNGRkMzBkOTk4ODMzMzhkYjc1MzM3NzliMGNjNGI3ODVlYWMgbGVnYWN5LXRydW5rCisyNTQxNSAwOGQ1Y2Y1OTZiMDEwNzFjMGRjNjNjNDA3NGVjNjEwMzcxMjcxZDY5IGxlZ2FjeS10cnVuaworMjU0MTYgNDkxOTdmZDc2MzYyYjJmNzRmZWViYjM1Y2JiMjE4MGZhZWE0Y2U1MSBsZWdhY3ktdHJ1bmsKKzI1NDE3IDVjYmNmZGUzYWQ1NTA3NjdkZjg4YTE5NTE0NTQ2N2EzZWQ2ZTNkZTcgbGVnYWN5LXRydW5rCisyNTQxOCA4NmQwZjdmODY1NTA1ODdhMTkxNDU3ZmY4NWQ0NWE3NmQ5MGQyZDk4IHJlbGVhc2UyMi1tYWludAorMjU0MTkgOWYxZWI4ZmYxNzk1NmFkOGUyODE3NjU1MjRmZGRlYTU5ZjJkZWM0NCBsZWdhY3ktdHJ1bmsKKzI1NDIwIDQzODU0MzExNjRkYTU5ZmM2NWM3Njk2YjdjOTI5YjllY2E5MWY1NzUgbGVnYWN5LXRydW5rCisyNTQyMSBjYThhMjg0OWRkNTZlYzEzN2M1ZWY2ZjFiNTE1ZTM4NDA1ZjBlZWRjIHJlbGVhc2UyMi1tYWludAorMjU0MjIgNDZiY2VlMTFiNDgwNTBkMTE1OTVmMmQwM2FhMzQ1YzM1MzdkZTY0MyBsZWdhY3ktdHJ1bmsKKzI1NDIzIDUxZWUzYmRkYjcyY2U2ZTQxMzRjNzEyZGI0M2ExYmVjNjMwODhhOWMgcmVsZWFzZTIyLW1haW50CisyNTQyNCA1Y2I2Y2M0NmNkNDJjZTRkNjQ4NTgwZTVmYTdjZDYyMzNjNTU1MzU4IHJlbGVhc2UyMi1tYWludAorMjU0MjUgMTA4N2NhNTE5ZWI5YWU3ZjI1ZTM2M2YzYTg4M2NhYTliYWFhNjE0NyByZWxlYXNlMjItbWFpbnQKKzI1NDI2IGE1MGJhYTEyNmM3NWU2ZThkNmNmOGRkNTRiZDA1MzJmMDg2YWM4YzggcmVsZWFzZTIyLW1haW50CisyNTQyNyBiODM3NGRlODRlMmFlNzM1MTUxY2JhNDYxYzM1NzI3ZDA0NjkzZmEzIHJlbGVhc2UyMi1tYWludAorMjU0MjggOTcyMjRhOWNjODNjNjUxMmE3MGRmYjZhOTg3Y2U3Nzc2YWFmZWVjMiByZWxlYXNlMjItbWFpbnQKKzI1NDI5IGY1NzZkOTAwMDI2ZjM2Yjk1OTkzZjY0OTVlZjU4MDQ4OTM5N2Y1NWEgcmVsZWFzZTIyLW1haW50CisyNTQzMCA1YzE0OGY1ZTFjMTE0MjAwMjU5YmJjNzg0ZTViNDcwZTMwMTY5N2EzIHJlbGVhc2UyMi1tYWludAorMjU0MzEgM2MzYWNhYzg2NzM0NTQ5ZmEyNTAzMzI4YTllM2MyZWMyMWQwZmZkYSByZWxlYXNlMjItbWFpbnQKKzI1NDMyIDUwMzJlYzg5MWU3NDU2M2U4ZDJiMTM2MzdiZjMzZDgyNmVkYzFmZjIgcmVsZWFzZTIyLW1haW50CisyNTQzMyA0YmJhY2FlZGM2ZTJkNzQxNWJiMDI1YzQ2YTVjMGU4NWVmYTc0MTNjIHJlbGVhc2UyMi1tYWludAorMjU0MzQgYzJmOTBjZTU5NzU1Mzk4MzEzN2FiMDc3Mjg3YmY1ZmM2NDBlMWQ3NiByZWxlYXNlMjItbWFpbnQKKzI1NDM1IDUyMTA2MjkwZDM5MmM5NGFlNGVkNGI0MmU1YTVjODk4OWJjZGQ2MzAgcmVsZWFzZTIyLW1haW50CisyNTQzNiBlY2U0MzE1YzEyMDZmN2Q0MmI0NDFiOTgyNzM1ZWRkYzNhOGY4ZjQ4IHJlbGVhc2UyMi1tYWludAorMjU0MzcgNjU5MjZhOTcwYTE3MWM4MWUzMmQwMzgzNjA2ZGRlYWMyZDQwYjZkYyByZWxlYXNlMjItbWFpbnQKKzI1NDM4IDVkMWIyMjAzYjZlY2Y3Y2QyNTZiM2Y3ODYzZjkzMDc4NjIzMjUzMmQgcmVsZWFzZTIyLW1haW50CisyNTQzOSBiMzgzYzNmZjNiMWVjYmUyNmYxNjM0Y2EzMzhmZTYyOTBjN2JjNTYyIHJlbGVhc2UyMi1tYWludAorMjU0NDAgMjg1MmI0Y2I3ZjZhYmYwODY0NWQ1NTcwMGFiMjk5Yzg0YTkxYzVlZiByZWxlYXNlMjItbWFpbnQKKzI1NDQxIGI3MDIxMWMxZDI1Njc5ZTRlNGEzY2NjMTE2YTU4MDczOTZjNjdhZmIgcmVsZWFzZTIyLW1haW50CisyNTQ0MiBiNWI3NzM1MGEwMDQ0MDNkNzA0ZTdlMDc0MDEyODQwNmFhNzQ0NWU4IGxlZ2FjeS10cnVuaworMjU0NDMgOGQ1ZGMxYTdlZTE4N2JjYTEwMmUwMGU1NzM4ZjY0NTkxZTY2NWI2OCBsZWdhY3ktdHJ1bmsKKzI1NDQ0IDYwNzJmYTQxMGRjYzk0YTRjM2M5YzAzY2U5ZWIzYjFhOGU2NGJlOTMgcmVsZWFzZTIyLW1haW50CisyNTQ0NSA1NWM0ZDA4M2MzMDlhMGVhNzcyYTcwYzUxMDk0OTg4OGI0ODgxNjAwIGxlZ2FjeS10cnVuaworMjU0NDYgZGZlYWMwMzM0NTc0Zjc5ZTA2YjkzNGMzZjA5NThkNDVkMGViMDE0OSByZWxlYXNlMjItbWFpbnQKKzI1NDQ3IGFkM2Q1OTYxMjM0NWEyNDEyOGI4NmM4OTlhMmQzYTlmY2YwOGIwMWUgcmVsZWFzZTIyLW1haW50CisyNTQ0OCA2OGE2YTlkZDQyZjgwMTFjZmZjNTFiNjVmN2UyZDMwOTJkMGEyNjI5IHJlbGVhc2UyMi1tYWludAorMjU0NDkgYTlhZjg5ODY4Njg5YTA1OGZmMGZiYzNlZWIyOWYzNTZhMmE4YjhkOSByZWxlYXNlMjItbWFpbnQKKzI1NDUwIDViMjRhNmFlMmRjNGYwZDhkZmVlYjJhYTg0N2NlM2ZlNGRlNzMxOWMgbGVnYWN5LXRydW5rCisyNTQ1MSA3MzZmYjVhZWM5YjNiN2MxZTU3NzZmZGE4Mjg4YTAzOTlmNmNlZDUyIGxlZ2FjeS10cnVuaworMjU0NTIgNDAwOWMwODQwMmIxNDU2MDU1MjBlNjc0OGNkNDU0MmM4ZTJlMGQ5NiBsZWdhY3ktdHJ1bmsKKzI1NDUzIDkwZDNjZTNlYjE5Y2I1OWFjOTE2NjI3ZDBlOWI3NWNlNjIzYmIyZDMgbGVnYWN5LXRydW5rCisyNTQ1NCA3MDY1MTM1ZjkyMDJmMzhjZTg4ZGExYTRjZDc1YTI5MDUwYzM5NDdiIGxlZ2FjeS10cnVuaworMjU0NTUgN2EzZTAzYjU0MWZmYjEyNzgxMmFlZWM3MzQ4ZDBmMjQ1NjQwNDFlMyBsZWdhY3ktdHJ1bmsKKzI1NDU2IGNjOGI3ZjcxMTI3ZDg0ZDBmYTUzOGQ4YjgwMTczOWM0Y2Q2Y2M3MGQgcmVsZWFzZTIyLW1haW50CisyNTQ1NyA2NmM3NDVhN2FiYjFmZTgyMWVhYjU0YzUyNmFhNDUxM2U3ZmJiMTQ4IGxlZ2FjeS10cnVuaworMjU0NTggNTk1NWUwZTI5NzZkM2U5MTUxNDc2ZjdmNmIxYWJiN2QzODM4ZGM0MyBsZWdhY3ktdHJ1bmsKKzI1NDU5IDllNWZmNjc0NzQzN2Y5ZmU0Mzk2YTlhMTkyN2QwMjQzZTYzYWNmYTIgbGVnYWN5LXRydW5rCisyNTQ2MCAyZWZkNDNjYTAzM2Y2NDlkZTEzNTI1NzkxZDFlOGViODY5ZjdlOTNkIHJlbGVhc2UyMi1tYWludAorMjU0NjEgOTY2NzI1MDk1ODU0NmRmMmNlZDk5YmQ5NzEyODhlOTNhMDBjNjViZCBsZWdhY3ktdHJ1bmsKKzI1NDYyIGQwYWNiM2NiMDExZGE1NWViNzU2MzExNzRkNGY3OWIwZTlmZTU2N2EgbGVnYWN5LXRydW5rCisyNTQ2MyA0MjNiYzliNTFhN2U0MTMzYzVkYjQ1NWQ5ZjdiYTQ4OGI0NjVhNWM0IGxlZ2FjeS10cnVuaworMjU0NjQgYzgxZThlYTBjNGJhN2M3MzY1Nzk2NDhiY2I5NDJkOGE4YzUyYmNiMyBsZWdhY3ktdHJ1bmsKKzI1NDY1IGZjZjBjMjQ0ZTI4N2U5MmQ2YzYwMDZhYmRjZGFiMGRmM2MwYWE0NTkgcmVsZWFzZTIyLW1haW50CisyNTQ2NiA2NDQyZmJlNWRkMDQyNDBhMTY1NzUwZWNjOTA1NTQ5ZDRlZWUwZDdkIGxlZ2FjeS10cnVuaworMjU0NjcgY2QwY2U0NzBjMTUzYzk0OGFhYWY4ZmM0YzUzOWQyOTFhYzc2NGQwOSBsZWdhY3ktdHJ1bmsKKzI1NDY4IGQzODQ1ODA1MjQ0MmZmMTUyY2RhNDlhYjk4N2QwNzcxZTQ0ZWI4NmYgbGVnYWN5LXRydW5rCisyNTQ2OSA5M2ViNGI2MWY2ODdiYmRiNDA2NDI0NGNjNWZkOTEyMDVhZDcwZjg1IGxlZ2FjeS10cnVuaworMjU0NzAgMTNhYzI3ZmEwNzA0ODM5NDEwZmQ1YmVkY2ViYjM0NDdjN2ViZDRmYSBsZWdhY3ktdHJ1bmsKKzI1NDcxIDM1NGNkZTdmOTBhMTUyN2FhZmI2OGY4MTk3MzI4ZmJiZTA2MTliN2IgbGVnYWN5LXRydW5rCisyNTQ3MiA1OGYyYzI5OWI2NTQ0MzM4YjA3NjcyZWJiOTg5NDI5MTY5ZDg4NDJhIGxlZ2FjeS10cnVuaworMjU0NzMgYWQ3OTY5ZThmNThkZmFjMzk1MTk4NjQyOTQ1YmJjZTY1YTBjZDYwZCBsZWdhY3ktdHJ1bmsKKzI1NDc0IGM0OTQwODRkYzZkODg5MDgzMWQzMmRlYzNmZmI4OTVlYjUwODFlNzggbGVnYWN5LXRydW5rCisyNTQ3NSA4YjEwNGE4NWI5OWM3YTI3Nzc3NGExZmU2MDkyYzkxMWE4MmE5MGFiIGxlZ2FjeS10cnVuaworMjU0NzYgNzlmMjkyZGJhYmNlYTI5NWRiNmE2MTBjOTQyYjUzMTE1OTFhZWYwMiBsZWdhY3ktdHJ1bmsKKzI1NDc3IGM0NTRiNzZkNTFlN2I5MDA3MTVjZmU0MjI5ZDBlYzU1YzQ4MjAyM2EgbGVnYWN5LXRydW5rCisyNTQ3OCBkMTA0YmI1MGExOTRkMzJhZWNkNTAxNTVlZWRjYjEzZGFjMDc2YmIzIGxlZ2FjeS10cnVuaworMjU0NzkgMGM0MjMwMjY5ZWQzZWZiOThjOTdlNGI2ODQwMmIwYjQzNTliNTdmNSBsZWdhY3ktdHJ1bmsKKzI1NDgwIDEwNDY5NjQ4OTZhMWE0ZTM5NjY0NjU4NTJkYWM0YjQ5ZmI5ZGY4NjcgbGVnYWN5LXRydW5rCisyNTQ4MSBjYmMwOGIxNzJkMWZkNjE3NWJlZDliNjQwNjM0OTUxMTYyMjRkNzMyIGxlZ2FjeS10cnVuaworMjU0ODIgMDg1OWU3NjQ1MDllNmE5NjI2MTQ0Mjc1NDI0YjNhMmQxMGM0ZWVlYyByZWxlYXNlMjItbWFpbnQKKzI1NDgzIGIyYTJjYzBjMmE2MzczMGI4NTMwY2MzNWQ5NzNhNmFiMGUwMDkxNjkgbGVnYWN5LXRydW5rCisyNTQ4NCBkNDQwNmZiZmNiNGU1NGU5YjQxNTM0ZTkwOTc4NDQ0NWM4MmYyMjA4IHJlbGVhc2UyMi1tYWludAorMjU0ODUgMDc0YjdlM2U1NDhkOGU3MzExMWU5YWQ5MmZlYThhMGNkZGMxNjBiNiBsZWdhY3ktdHJ1bmsKKzI1NDg2IDNhMDZlMTlkZjQ2YjkwM2IyOTdhZWUzODM0YWRmMTRlNjg0OGNhYmIgbGVnYWN5LXRydW5rCisyNTQ4NyBlZGYwNWM2OWJiZjNiYmJlNTAzNWZiZmM0NjgwYzA2OTBkMTg1YjVhIGxlZ2FjeS10cnVuaworMjU0ODggNzRmMTZmN2E2MzY5NjY5N2M2MTllNmRlMTJmMjAzYTBiZjk5MTdmOCBsZWdhY3ktdHJ1bmsKKzI1NDg5IDk4NmViMWQ0ZWJlZjUzYWY0NTY4MzZhMzBiOTk5ZGY1NjMxMTAzY2UgbGVnYWN5LXRydW5rCisyNTQ5MCA1OTk0NDQwZTVkZDUyYjg2YzUzN2RhMzBiMDcwYTViZmU0ZmU1OTJiIGxlZ2FjeS10cnVuaworMjU0OTEgMmJmZDEzN2E5NzZmNTk4M2U0ZTdjMTY5MWQyN2RjOTUzMDEzYTk3OCBsZWdhY3ktdHJ1bmsKKzI1NDkyIGUxM2FhNGM2NzJhOTQ5YmE4NzBjOGQ4Yzg2NTcyNjc5ZWRlMzdlNWIgbGVnYWN5LXRydW5rCisyNTQ5MyBlODFiMzA3NmE2YzMwZDljYTQyN2M2NWRiOTIxZGM5NjVhODJhYWYyIGxlZ2FjeS10cnVuaworMjU0OTQgY2NhOTg4ZjNmNjRmMjA0N2EzZjRmM2UxNDJjNmJhZDQzMjdjMThjNyBsZWdhY3ktdHJ1bmsKKzI1NDk1IDk5ZTYwODE3Y2U2ZWNlMjUzMTk2ZjE5NDIzNGFjM2QxOGY3ZjY1NWUgcmVsZWFzZTIyLW1haW50CisyNTQ5NiA1NDkzMjA1NGY2YTk0MWU1ZWJhOGM4YjI3NWJkODM4MDI5NmViZWNmIHJlbGVhc2UyMi1tYWludAorMjU0OTcgZTU5OWU3YjhhYmY3MDI1M2JkZTViZDRkZWI0ZTdlZmI2NDI1ZmExNSByZWxlYXNlMjItbWFpbnQKKzI1NDk4IDlmZGRlOGNjZGNhNjVlNDRiODY3M2YwYTIzMzE0ZWQyMTk4OWYxMTggcmVsZWFzZTIyLW1haW50CisyNTQ5OSA3ZTE4ODE0MGI2MTgxYzI3OTMwOWVhZTIzOTg1YTZjOWRkMDUzZGUxIHJlbGVhc2UyMi1tYWludAorMjU1MDAgMWE1MTEwYjRiZDcyYTJlMDZiOTYyMzYzMzlmNWJlMTA3MGU2MmVlNCByZWxlYXNlMjItbWFpbnQKKzI1NTAxIGVkMmExN2EzNzZkMGM2YmVlNmUzNGJjMWJiMGRiZTI4ODRjZjYyZGYgcmVsZWFzZTIyLW1haW50CisyNTUwMiAzNDc3MDMwMzI3YTYwZTMwZmFhZDI4YzhjYjZkMDIyMzdhZDM0ZjIxIHJlbGVhc2UyMi1tYWludAorMjU1MDMgMWU4YmU3NGEzNzRiYmFkZDYyMjY1NjRlMWJkNmY2YmU0YjVjOTdhMyByZWxlYXNlMjItbWFpbnQKKzI1NTA0IDRmZjlmOGE3NGM4MjdlZjNlYTJiMzEyNWRlOGU1YzliMGRmNWI5MGMgcmVsZWFzZTIyLW1haW50CisyNTUwNSBjMjVkNmQ3ODBiMWI0NzJkOGI1YTYzNTI3NWIzNmUzZWU5YWYwOTJkIHJlbGVhc2UyMi1tYWludAorMjU1MDYgZmQwZWUwYTA3MDQ3ZDE3ZWM3MThmMTQyNDg5OWVkZGI2MTQ0N2NjNSByZWxlYXNlMjItbWFpbnQKKzI1NTA3IDhlYjU5MWRkNzY4MjY4ZDBmYWI5MTZiYjljMzRjMDM0M2VmODBiY2QgcmVsZWFzZTIyLW1haW50CisyNTUwOCBiZWY0NGQxMDhlNTc2MTM4MGYyMGRiM2Q3M2IwOWZkYTcxMDc0YmI3IHJlbGVhc2UyMi1tYWludAorMjU1MDkgZGIwNDA5MzhkYzY2M2IzZDZlZWRkNjE1NWUxZWY3MmU1MGNiZDkyMyByZWxlYXNlMjItbWFpbnQKKzI1NTEwIDFkMWEwMWQ5NTZhMmVmMGU4NDlmMDhkNjhlNjVjMTY2MDk2YjA4NjYgcmVsZWFzZTIyLW1haW50CisyNTUxMSBlYTliZTJlNWQ5NTQ0NTQ0MWJmNzNmMDIyZDFjNTFkZmNhM2RlM2RkIGxlZ2FjeS10cnVuaworMjU1MTIgMWU2MGIxZTE4MTQ1ZGRlMjgyY2E5NGNiMTJiODkxOWJkMWYxMWJmOSByZWxlYXNlMjItbWFpbnQKKzI1NTEzIGU0ZDdlNTEyOWU0YzE2N2QwY2JmOWEyNmQ5ZjRkODEyY2Y5OGZlMTUgbGVnYWN5LXRydW5rCisyNTUxNCA0YjM0NTk1MWE1YzUxY2ZkZmQ1MzVhNzk2ZDQyMmMxYzdiMTYxZmExIGxlZ2FjeS10cnVuaworMjU1MTUgYTUzNzMwY2QyOWMxNDc0YTVkN2NjOGJlM2M4OTI5YjdmYTc4NmQ5MSByZWxlYXNlMjItbWFpbnQKKzI1NTE2IDUxMzEwMzI0OTQ2MmQ3YzViM2Y3YmEwYjBiOGZiNDI4ZGRmZDg5ZTYgbGVnYWN5LXRydW5rCisyNTUxNyBlODFhNGU5OWVjZmEzYzZiMTIxMzViMzlhYzVkZmJjZDUwMDVjODY3IGxlZ2FjeS10cnVuaworMjU1MTggMzQ1ZGVmMzdiMGQ3YTU4N2U3NTBhNDZiNmZlMDM4MmY5ZTY2M2ViMSBsZWdhY3ktdHJ1bmsKKzI1NTE5IGUzMDE2MmIxYjMwNDY4ZGJmYzYxOTRmNjc3MmYwNWZjYjNlODExNTQgcmVsZWFzZTIyLW1haW50CisyNTUyMCAyYjNmNDM4MDY3M2Y4MTYyZmYxMjhkMmNjYjg5MmIxYmZiMDBmMzk4IHJlbGVhc2UyMi1tYWludAorMjU1MjEgYjFkNTczYTJhNzc0NWIzNzkzZmRhZGU0Njg0M2ZjYTg3MzQ3YTRhMSByZWxlYXNlMjItbWFpbnQKKzI1NTIyIDcxOTAyZTFjZmJlZjMwYjE3NmI4YjZlODlmZDljZWE0OGRjYjQ1ZDEgbGVnYWN5LXRydW5rCisyNTUyMyBkNjk3ZDg4ZDI1YjQwY2FlYWNjNTBhNDFmNzk4ZGYxMGIzOGJkZGYzIGxlZ2FjeS10cnVuaworMjU1MjQgYWY1MmJmOGUyYjg5ZjQzNTVhMGFhZDI2MWU0MWE5NjY4NmJmZWU4ZCByZWxlYXNlMjItbWFpbnQKKzI1NTI1IDgxZGZhMmRiNGM2MWIzMGVjYjg4M2VmNWY4NGE4NzUxMTVhNDIxY2IgcmVsZWFzZTIyLW1haW50CisyNTUyNiA0Mjg2MjE2OTU0MWZiOWQ1MDMwYTU5YTA1NWYwMDgwNzFlNmEyMDIzIHJlbGVhc2UyMi1tYWludAorMjU1MjcgYWY2MTIyZGYyOGUwN2U0MmNhNTY5ODA4NWYyMmE1NTRmYThiMjZjNiByZWxlYXNlMjItbWFpbnQKKzI1NTI4IDIyYzY2NTg3YzQ1MmUyNDk5OGNjMjM5ZmMxZDdlZmY5Mzk1YTFkMDMgcmVsZWFzZTIyLW1haW50CisyNTUyOSA4Mzc5NTFlY2RjZTk1NzU0Yzk5OWU4NTVkMWRhOWY2ZmQ1ZWU0ZmViIHJlbGVhc2UyMi1tYWludAorMjU1MzAgODU3OWQzZDMwMWQ0OGQ0ODUwYWVkNjQ0NGQwNjMyZGUxYjRjZWE3NCBsZWdhY3ktdHJ1bmsKKzI1NTMxIDY4ODMxYWM1NDk1YmIwMTNmZDAzZjg5MDQyMGY0ZTgyZDRkMDAzZjkgcmVsZWFzZTIyLW1haW50CisyNTUzMiA0ZDViZWNjNjkwMmJjY2YzZjZjYmY0Yzc4MzY5MDAwNDBiYTlhM2VlIGxlZ2FjeS10cnVuaworMjU1MzMgMzJhMWI0ODRhMmYzYTUyYThjNGU4ZTA5ZjNmNzdhM2FjYTZhYzVlYSBsZWdhY3ktdHJ1bmsKKzI1NTM0IDEwM2M0YzRjY2NmYjdiNzk0YmUzNTM3ZjBlOWNjNWFlMmQwMjE3MzIgcmVsZWFzZTIyLW1haW50CisyNTUzNSBjYThiZDk5N2U0MTlkNDE4OTY5Yzg2YjkxMWZiYzYzMmMzYzA4NGQ1IHJlbGVhc2UyMS1tYWludAorMjU1MzYgYzVjOWUzNmMzOTA5OWY5MzkzNzFlODQ5ZDc4ZDFkMjk1ZTgyYTIyZSBsZWdhY3ktdHJ1bmsKKzI1NTM3IDBlM2U2OWUwMWVjZDY0N2Q5YmYzNTdiMDVjYjJiODlmMTY2NWM3NGQgbGVnYWN5LXRydW5rCisyNTUzOCBjZGEzMDZiMjMyMWY2ZDYyYjU1YjY0MzRhZTExYmQ5Y2U5MjI2ZjY1IGxlZ2FjeS10cnVuaworMjU1MzkgZTIxOTZiYTM0MzMwZmNmZDlhNjg2NTI3YTI4YzcyZGVmMTEyOGRiNSBsZWdhY3ktdHJ1bmsKKzI1NTQwIGVlMzNiYmFmMzM4MTkzNGY2YjdmYWI3ODEyYWRjNjdhOTU4ZDkzZGIgbGVnYWN5LXRydW5rCisyNTU0MSA2ZmE1NmM0M2ExYmFlNDhjOGEwMTljOTVhOGYwMThmYTc4MDE1NmM1IGxlZ2FjeS10cnVuaworMjU1NDIgZGFmMDRkYjFhNjk5OGQ3OTJjMDQ1ZDZiZTljMGY5YWE3N2FiMjY2ZiByZWxlYXNlMjItbWFpbnQKKzI1NTQzIDI2NjMzNGE1YzRjYTI2YzY1ZTYzMjNmOTZkY2RhMjZlMjE0MzNiYWUgcmVsZWFzZTIyLW1haW50CisyNTU0NCBkMmE3NmY3ZGQ2NTEwNjZkNjc3YmQ0ZTUwMDNjNTIyZmQxZTA4MzdiIHJlbGVhc2UyMi1tYWludAorMjU1NDUgZjhhOWRiNjdmYTViNDVlOWRlYmJiMTUzYjcwMjczMzYxMzY3M2U4NyByZWxlYXNlMjItbWFpbnQKKzI1NTQ2IDUzNGU3OTA1OWJlMTAwODc2ODRkZjkwNjYwMWVlODI1OGI2NDY5ZjIgbGVnYWN5LXRydW5rCisyNTU0NyA4MWE4ZGIxNWZiOTg4YmVhNDA5MzRkZWQ0ZmFlMjEzZjkzMTc5NGVkIHJlbGVhc2UyMi1tYWludAorMjU1NDggYWMxMTMxZjczZDFmZDcwOWRiNzY4ODNhZjkzNDM2YmE4ZTE1ZjRmOSBsZWdhY3ktdHJ1bmsKKzI1NTQ5IGM2Mjg5ZWM4ZGEwYTc5Y2MxOGRlZGVjZDlkODdlYjZjZGU3OGY4NTYgbGVnYWN5LXRydW5rCisyNTU1MCAyYzVmODAzNzEyNjFlZGZhOWRmZjNhMjRlYmFjZGQ5MzMwMTIwZGZhIGxlZ2FjeS10cnVuaworMjU1NTEgYzZhNjYwZjg5ZmZlODU2OGVmZDlkMGIyMThkZjU4MDA0ODQxZjg4NyBsZWdhY3ktdHJ1bmsKKzI1NTUyIDFjYTJlYjY1MGUxMzc3YjU1ZjdjOWE3NDBmNDIwYTljNWE1MDIwZDYgbGVnYWN5LXRydW5rCisyNTU1MyA5NWU4NjQzMDk4MmJlN2Q5MjAwNjdmMjM5ZDBjMjFjZTBmNTc5ODcxIGxlZ2FjeS10cnVuaworMjU1NTQgY2I0ZWRkMTA4NzdkOTE3YzhlZGY3YWYzNDdkZDU0ZWM1Zjc1NGUxYyBsZWdhY3ktdHJ1bmsKKzI1NTU1IDA0NGY5ZTcxMzIwZjYyY2VjNjAyMmQzNWY5YzNiOTBlNmEwMzUyMGEgbGVnYWN5LXRydW5rCisyNTU1NiA5OGEzZmE1ZjY4N2NhYWVmYzE1OWZkMWU1NmE2MWJkOWQ5MDJlNGQxIGxlZ2FjeS10cnVuaworMjU1NTcgZmM2ZGMyZWEyNWNmNzdiOGMwNzAzZjY2MjFiODg2YTYwNDAxYjJkZSBsZWdhY3ktdHJ1bmsKKzI1NTU4IDI0YmE2OTNlOWM3MzllNjc2ZWYyMjQ1MDA4M2E5MWRiOTYwMWRhOGYgbGVnYWN5LXRydW5rCisyNTU1OSAwMWQ0NTgyNjk3NTAyZDY1MDFhYmJlNzYwOTQ1OGExZjE5ODAzODI3IGxlZ2FjeS10cnVuaworMjU1NjAgZDdmM2Y4M2I5NjU4OGMyYzBlNTBmZDViNzJhNGE5ZDhjNDg0OWYyMyBsZWdhY3ktdHJ1bmsKKzI1NTYxIDI2ZTNiNTYzZTI2MTMyZGFiOGIxNGZlNzQ5MWMxODZlY2UyMWMyMDggcmVsZWFzZTIyLW1haW50CisyNTU2MiA0ZWJhY2FlZTMwMDllMjY3ZGRmZGI1OWU3MGUwYjIxNTViZjY3ZTk5IHJlbGVhc2UyMS1tYWludAorMjU1NjMgZGFiMDVhYjAzNDdiOTNiNzE3ZTA2MDJiNmE5MjkxODUxYWFhMmNjYiBsZWdhY3ktdHJ1bmsKKzI1NTY0IGFkODFmOGZiNGVlNDc1MTQzOGE3NTEyZWQwY2Y4MzYwYmEzNThiMDIgbGVnYWN5LXRydW5rCisyNTU2NSA1ZjJjMGY2ZjBhZjczNDljNzUxZDBkODM1MjEwZGE2M2VkNmY4NjI3IGxlZ2FjeS10cnVuaworMjU1NjYgNDA5YWMwZjY4OThmNDFiMmQ3MjQ2YTcwNDhhMWE2Njc5OWJjNzMyMCBsZWdhY3ktdHJ1bmsKKzI1NTY3IDkyOGMxMjgyZTVlMmI1Y2ZjOGJmN2EzM2Q2Y2E0OGY3MTJiNDI1OTkgbGVnYWN5LXRydW5rCisyNTU2OCBmNDQ4NzM1MGM1Mzc4N2E4ZjRiYzQ5ZTI5MmFhZGEzYzNkMjQyMzEwIGxlZ2FjeS10cnVuaworMjU1NjkgYjg5OGMwZmViNzU0ZTQ4OWZjNDM1M2ZkOWZhMjllZmM2ZTcxNWVjNSBsZWdhY3ktdHJ1bmsKKzI1NTcwIGYwYWUzNzYyNTE4OTVjODBiYjE5Y2IwOWQ2MzNhZTY1OWY0NDFkZDIgbGVnYWN5LXRydW5rCisyNTU3MSA3ZmVmMzU2ZGFkNzVmOTFiYjdjMjQ2YjYzNWZmZWI2M2Y4Nzc0OTg3IGxlZ2FjeS10cnVuaworMjU1NzIgMGIwOGVlZmI2ZmMwNzdlZGRlNmQ3NTc4ZTJlZGVlNDUyN2Y3NTA5YyBsZWdhY3ktdHJ1bmsKKzI1NTczIDBkYzEwZDU1NzA2MjM4ZDQ3N2Y5Y2ExZmVhOGM2M2U2OWZhOWQ5OWEgbGVnYWN5LXRydW5rCisyNTU3NCAyMzkyNjljOTY1MTQ0M2RkMmRhYmIyNThiMDY4MDY1OTM0YWIxZDZjIHJlbGVhc2UyMi1tYWludAorMjU1NzUgMjM2MDZiNDlhZjc0MzA0NjQzYTkwN2FlMDZkNTBlNTU3ZTk4MzI5YiByZWxlYXNlMjItbWFpbnQKKzI1NTc2IDI2YmViZjIwODkxZTc1OWJiMjBhMDQxZGEzZmM0YzljY2NkYzcxYzUgbGVnYWN5LXRydW5rCisyNTU3NyBlMjRiYTA0ZDAxYjA4ZTcxY2ZlNjZmM2EyYTljODNhNjVhMzQ1OThmIGxlZ2FjeS10cnVuaworMjU1NzggOTA3ODMyZWU3MTczNzEzOTQzYzAzMmM4YzhiMjBjODc5NDk2MmNkNiBsZWdhY3ktdHJ1bmsKKzI1NTc5IDY0YzczMWQxODBlOTFlMWRkMjY3ODQxOTllMjZmZDA2YjdkODhjNGMgbGVnYWN5LXRydW5rCisyNTU4MCBkYTUxOGZjNzgwNjY3NDMyNjg0N2M2Zjk4ODU4MzQ2Y2JiOTc5M2M1IGxlZ2FjeS10cnVuaworMjU1ODEgNTQ0MGU0YjE3YWZmYjJlZTNhMmEyMzc4NGEyOGQwNGZmNmUzNjU2YiByZWxlYXNlMjItbWFpbnQKKzI1NTgyIDc4YmRmYmI2ZTU5ZTEzNWRlOWJhMTFiNzVhYTJhYzAyYjY0MDI4N2IgcmVsZWFzZTIyLW1haW50CisyNTU4MyA4MTI1NWI1YmUyMTlmYTM2MWYzOTdlNTViMGRjZTA0YzcwYWYzOTU5IHJlbGVhc2UyMi1tYWludAorMjU1ODQgZDZkMTJlMjFkNDRmNTI3MGI2ZDVhMjk5YWQyODhmOTdmZjllMDI3YiByZWxlYXNlMjItbWFpbnQKKzI1NTg1IGU2MWQyOTgyZmMxMzVkNDE1YzdlMzdkODRlYWIxNDM3NmRiYjcwZmUgcmVsZWFzZTIyLW1haW50CisyNTU4NiAwMWE1NWMzZDUwNWMwZDdhYWQ3OTViNzg4NWQ4YzE1MjBlMTMyNzA2IHJlbGVhc2UyMi1tYWludAorMjU1ODcgYTc2MmVkYjA0NjFhN2JlYzQ3MGEwY2NhYWE2Nzk0MDg2N2FhMTU1NSByZWxlYXNlMjItbWFpbnQKKzI1NTg4IDY3YTVlMjVkYzg4YmM3NGViMWM5MGYxMGZkZTAxYzhkOGQwMmRjMWEgcmVsZWFzZTIyLW1haW50CisyNTU4OSA3ZjRkMTVkODc4Y2NkNjA1MmMxMmNmMDgxMWVlNWE3Mjg2MTI1YTU0IHJlbGVhc2UyMi1tYWludAorMjU1OTAgMmY0OGFlNWM4YTk0NzBkMTlkMjRiY2JhYzAxY2I0NmY0YTgwNTE1ZiByZWxlYXNlMjItbWFpbnQKKzI1NTkxIDRiNmVkYTdkMGM4ZjU0Y2VjZDFhOGQ4MGRhMzk2MGQzNjI2Zjc0MjggcmVsZWFzZTIyLW1haW50CisyNTU5MiA5OTY4ZDhkZGRkNTNkZDYyOTZjY2MxZTcwMWM5NWQyNjM0Y2FlYTdhIHJlbGVhc2UyMi1tYWludAorMjU1OTMgZmM0MDU2YjljZjE4YzE3MTY4YTc2ZTA5NWRlMzYwMzhhYWQxMmY4OCByZWxlYXNlMjItbWFpbnQKKzI1NTk0IDQ1MmNjMGYzYWUzY2E4Zjc5ZjNhMTA1NzE4NzRmNzA2ZGNiMDlkNTEgcmVsZWFzZTIyLW1haW50CisyNTU5NSA2NDFmMjYzZjRmNDRiYjhlNDk0ZGVkYjA0MDg0OGQ0YTAyMjhmZWU5IHJlbGVhc2UyMi1tYWludAorMjU1OTYgMTgyZjAxNzNhOGVlZjViYzE1NTJhODg2NjA5NDdlNTc3ZDNmYjQ0NCBsZWdhY3ktdHJ1bmsKKzI1NTk3IDIyZmM4YjgyMmQ0MGQyYjA2MTFlMTM5MGU3ODQ4MjJlMGI5MGIwOTggbGVnYWN5LXRydW5rCisyNTU5OCAyOTg4NzlhOWY5ZjRiYjQ1YmYwMGZkNWI4N2I1M2FkZTI3YWNjYzgzIGxlZ2FjeS10cnVuaworMjU1OTkgNTBjNjY2NmZjNDU2NzAzOWE2ODA4ZjM4MDA0YzZmM2I3MDcyYTNlNCBsZWdhY3ktdHJ1bmsKKzI1NjAwIDQyN2UzMzFiNDFhMmUxY2U0Mjk0YzJkYzdmZWM3NzM4ODQyOTMyMWUgcmVsZWFzZTIyLW1haW50CisyNTYwMSBhZTU3OGM4YzZjZWQzODA3ODY1NGNlMWViMzMwZTMyZGRmYjc3ZjFlIGxlZ2FjeS10cnVuaworMjU2MDIgZTU0ZjVjNTBlZjA5YjlkYWVhZjE2ZWZkM2NmYjBjMGI4Yzk2YjZkYyBsZWdhY3ktdHJ1bmsKKzI1NjAzIDIzNmFlNTNkNjQ2NjIyNDYzMTE3YmU5NzUwNGU3ZDdhYzYwNDMxYjEgbGVnYWN5LXRydW5rCisyNTYwNCA3NTg0YjZmMWFmZGU0MjRkZDQwNTJlN2U2YTE2NWUwZmE3ZmNmMWNhIGxlZ2FjeS10cnVuaworMjU2MDUgMTYzZGU3MWYxOTQyOTM4YWMyYTVjZjkxYzkwMGQxNmViZTliNDQxYiBsZWdhY3ktdHJ1bmsKKzI1NjA2IDZhMjc5ZTE3MmQyMjNlNmZmMjlkZTFiMDMyNDg5MGU5ZmZjMjlhMTEgcmVsZWFzZTIyLW1haW50CisyNTYwNyA3MmZkYTY0YjJhMmU4Y2RiNGNjMzgwYzM3YWNmMjRhOGJhYzdjNzA2IGxlZ2FjeS10cnVuaworMjU2MDggZThlNDY1ZTZkNDVmOWYwOTMxYTEzMzY3YmExYWRjOGI0Njc5OWJlMyBsZWdhY3ktdHJ1bmsKKzI1NjA5IDI3YTBmYjAxOTU5OTEyNGJhMzYxOTU0NjU2Mzc0ZWMxNDkxOGQ0ZDAgbGVnYWN5LXRydW5rCisyNTYxMCBhYmNlZDU1ODFjMTg1MGE0YWMyMzExZjk5OGI3MjM1YjQ4YzRjODI0IGxlZ2FjeS10cnVuaworMjU2MTEgMWU3Y2M4ZTRiYWFiOTVhNGFiNjc2YzJkMDkwYjRiY2U0ZTY5MDg4ZiByZWxlYXNlMjItbWFpbnQKKzI1NjEyIDI3MmY5NjUzODVjNzEzYzc4YzMwZmE4ZmQyNWRmOWVhMTVjY2MxZjMgcmVsZWFzZTIxLW1haW50CisyNTYxMyBlZGFiYWQwMjVlZjFhNWI1ZTUxNzJhNTkzMDUxYTcwMGZmYTk5ZGI1IGxlZ2FjeS10cnVuaworMjU2MTQgOWYxMTkxMzJmZmJjNDYzZTk3OTBkYTVmOWI0ZmU0NDVjZjUyYmQzNSByZWxlYXNlMjEtbWFpbnQKKzI1NjE0IDcwZWRkMjkyYzc1N2FmNjhjYTIyNTkwY2VlOGM3ZDEzMTljOTllZTQgcmVsZWFzZTIyLW1haW50CisyNTYxNSAzN2I2OTgxNWFmMjJmZDU2ZjYzZGZmNGY4NGI1ODIzYWVjZjg5MzU2IGxlZ2FjeS10cnVuaworMjU2MTYgOTNkYjcyM2Q1ZTQ3ODkxMjBhMTgzMjI3NDFiM2ZjMTkxZTYwMjliZCBsZWdhY3ktdHJ1bmsKKzI1NjE3IDA5Mzk0MmJhZTFhNjM5YWYwMzgxMWE1NDhiNTBhNWE1MGM5MWI3NmIgcmVsZWFzZTIyLW1haW50CisyNTYxOCA1NGI2MzYxNjBhY2RmZTY0NmQ1MjJhY2FiZjJhMTBjOGZjYjUzZjhiIGxlZ2FjeS10cnVuaworMjU2MTkgYWEzYmY1MjVmNDgyY2I5OGQ1NzcyN2E0MGQ1MmUwNDMxMmExOTRjZCBsZWdhY3ktdHJ1bmsKKzI1NjIwIDIxNmNjZGEyODRkODU4NWU1YmZkYzI2ZTViNDYyMzE3Mzg1MzdiMzYgbGVnYWN5LXRydW5rCisyNTYyMSAwNzUwNWE0NTEwMTc2YmYzODA0YmQzMzFlODRjYTg3Yzk2OWYxOWMwIGxlZ2FjeS10cnVuaworMjU2MjIgZDMwNzk3ZTVjYzFhYjg1NTM1OTM4OTcxNDJlMTIwZDM3N2RkYzAzYyByZWxlYXNlMjItbWFpbnQKKzI1NjIzIDZjMzRjZDNhOThhOTNlMDI4ZmVlN2VkOWQyY2IyNWFkZDYzZDkyMzkgcmVsZWFzZTIxLW1haW50CisyNTYyNCBhZmYyMTQ1M2JlZmZmMWEzMzFhMjVmODYwNTgxODNjYjhhMDFmNzcxIGxlZ2FjeS10cnVuaworMjU2MjUgMTdlOGEzYzkzMTBjYzM5MDJmNGM3YTZlOGVkNTBiYTY2MmE5ZWI4YiBsZWdhY3ktdHJ1bmsKKzI1NjI2IDhlOTlkNTY4MTk4NDZlZjQwODVmNTM4NThjZjI0ZGQxZjg3NGQyNzUgcmVsZWFzZTIyLW1haW50CisyNTYyNyAxNTBhMmE5YzU1Yjg3Y2FlZjI0NzMxNjY4ZWFkZDVhN2E5NmUyN2FiIGxlZ2FjeS10cnVuaworMjU2MjggNjQ4NWQxYmE3MzVjYzVlYzVhNjgzMDAzNGY2ZTllOGYxODQ4YzYzZSByZWxlYXNlMjItbWFpbnQKKzI1NjI5IGY5YTVhOGZjMzE3Nzk2ZTAxYzYwYzhkMzNmM2ZiYjM2YWYzNjAzNTUgcmVsZWFzZTIxLW1haW50CisyNTYzMCAyYThiZjNkMGJkODY1ZWI3MGMxOWU1MmM4NmExMjk0YTZkMzZhNzE3IHJlbGVhc2UyMS1tYWludAorMjU2MzEgMTAwMDdhYTc4YTVlOTU0NjI4ZDk1NzJiM2UwMGY5ZmJhZTJkMzVlOSBsZWdhY3ktdHJ1bmsKKzI1NjMyIDY5YWQyYTFhZDY4OWUxNDYwZjAxOWU3ZTc0MDNkZTQ3NTU4MDcyNTEgcmVsZWFzZTIyLW1haW50CisyNTYzMyAwYmIxN2QzYjUxOTdkMTZiMDJkNmM4YzE5YzA1ODU5NjQyMWU0MGJlIHJlbGVhc2UyMi1tYWludAorMjU2MzQgMjgzODE2NTI5ZTcyNTBmZmVjNTQ0Mjc4OWEyYjY0MzY0NDcwZmU5NyByZWxlYXNlMjItbWFpbnQKKzI1NjM1IDc2M2Q1YWU4OWU5ZWQ4N2MwNGQwOWFmZDE4M2UyZmZiNjBiNTJjZWMgbGVnYWN5LXRydW5rCisyNTYzNiAxN2NhMjkwN2QxMzU5ZDEzMjJlODkzZTAzNzI1ZGI2ZWFlZmUwMjkxIGxlZ2FjeS10cnVuaworMjU2MzcgM2M2ODVjMDM3Nzk0ZmE4MmRkODE4NGYzMGFkY2NjODc3YzhmZDM4OSByZWxlYXNlMjItbWFpbnQKKzI1NjM4IGYyZGEyNThhYWMyMDk2ODU2NmJlNGE2NDhiNjc1NjU0Zjc0NjBmYWEgcmVsZWFzZTIyLW1haW50CisyNTYzOSA5ODkxOTU4ZmM0YjI5NmI3MTE0MmNmZGEzMjFkODZkYWZlMGUwYzE3IHJlbGVhc2UyMi1tYWludAorMjU2NDAgYWE0NGQzNzk5YjQ3YmJiMzUyYWM2YzEyZThjYzgxOTM5Y2UxYzVhNyByZWxlYXNlMjItbWFpbnQKKzI1NjQxIDZkNGUwNWQyNTc1OTZmNGU2MzU4ZTEwNmI5ZTAzYWJiNTJmMTQ0YjEgbGVnYWN5LXRydW5rCisyNTY0MiAyMmUwZGFkYTU2ZDdiODY0YmIzZWQ1MjQ4ZmE3YzVmNjA3YmE2OTE0IHJlbGVhc2UyMi1tYWludAorMjU2NDMgNmEzNDhhMzkwMGNkZjgzNjA1MDBiZjI1NTRmZTUzMjgyNDNjMWM2YiBsZWdhY3ktdHJ1bmsKKzI1NjQ0IGYwMzQ2ZDkzMDc3MDE2ZTJjNmExMzE3YjAyMmJlODYwN2VjYThiMzggbGVnYWN5LXRydW5rCisyNTY0NSA1YWRlN2U4MjA0ZTUyMDJmNjExNTE0NzVlZWExZDkzNGM0N2UzYmZlIGxlZ2FjeS10cnVuaworMjU2NDYgMTYwZTMzNWZiZTZmZGQyYjQxZGVkMTYzNjI5YzVmM2FlMzYwNjk3MyBsZWdhY3ktdHJ1bmsKKzI1NjQ3IDU2ZjRkZmNjYTlkODFmYzE1MmI1MjRkZjg5YTg3Njg1ZjlmZTE0NjMgbGVnYWN5LXRydW5rCisyNTY0OCBjYjZjODVkODM5MWY1ZWQ1MTcyNTI3YzRjODAyMGM5MmIyMDg1NTgxIHJlbGVhc2UyMi1tYWludAorMjU2NDkgZTRlNTRmYzVmYjNkMzk1Mjg4YWExZDA0ZDY2NmQwZmQ4ZmQyZmIzOCBsZWdhY3ktdHJ1bmsKKzI1NjUwIDkwNzhmMjk3NmJjY2EzYzA0NGU4OGRkYTVmNjYzYTE0ZTI0MzRlMjUgbGVnYWN5LXRydW5rCisyNTY1MSAxODczODMzYzYxNmRmNDMzYjE3ZGFjMWY5NzZiMzM5OWIyNzhlYjNiIGxlZ2FjeS10cnVuaworMjU2NTIgYTc5NTg5NzFkZTFjNzJkYzNjZWVhOGM0OTRmNjE4MzcxNjQ3ZWU5OSBsZWdhY3ktdHJ1bmsKKzI1NjUzIDEyNTc3YWU5NTk1NjIzMjY2Y2M5OWZlZTg4YzI4MjBkNDUwMDE4MjkgbGVnYWN5LXRydW5rCisyNTY1NCA0OWVkYmVlOWRhZTIyMjQ4YzVkMzFjODY0N2EzMjA5ZTI3NDY3ZmU0IGxlZ2FjeS10cnVuaworMjU2NTUgMjRhZjg0MjAzMGEwYjQ3ODc4NjNhNDk5ZmFjYjk4ZmQ1YjRjMDZlNiByZWxlYXNlMjItbWFpbnQKKzI1NjU2IGM2YzFhNWZiYjZjMWYzZWRlZWY5Zjc3Y2RmNjlhYTUzMGI0MmJkMWEgcmVsZWFzZTIyLW1haW50CisyNTY1NyAzYzc0YTFiMTI4N2FmYWNjZTJiODdhN2E4OTA2ODMxODgwZGYxYTc5IHJlbGVhc2UyMi1tYWludAorMjU2NTggOWEwOTFkNzIxMzZhYzA1ZjE1ZTg0NzYyYjY4MTk3Nzc3YWY3ZDcxOSByZWxlYXNlMjItbWFpbnQKKzI1NjU5IDU0M2IyYTQ4NDY3YjY0Y2RiZTM2NDY2OTI1MDIxODhhYzI5MmU3NDUgcmVsZWFzZTIyLW1haW50CisyNTY2MCA2MzNhOTZhNjUwMDkxNDhlY2U5M2VjOGFmODQzMzk3MmNmNWYwNmE3IHJlbGVhc2UyMi1tYWludAorMjU2NjEgNDFiNTE1M2Q3MDVlNWY3YzBhNjgxYmY1NTFlYjIzMGMzNjE4YzFiMSByZWxlYXNlMjItbWFpbnQKKzI1NjYyIDU0YmNjNWVjM2E1MTI1NTcyZDA5MDE1YmEzOTA1MzIyZGU0MWFjMzcgcmVsZWFzZTIyLW1haW50CisyNTY2MyBhMzQ2MGNiMjNmMTk0NTE1NDg3ZWQyODk0MjJjMjU5YmYwYjU5MTRjIHJlbGVhc2UyMi1tYWludAorMjU2NjQgYTBjYzUyNzM1ZTZlNDY4ZDk0ZmYyMGVmNjQ0NjE5NGNjMjc5M2FmNSBsZWdhY3ktdHJ1bmsKKzI1NjY1IGM0MDM2MzMzNTU4NTUxOTY2NjhhZjU3MzcwNmRiMmNmZmQ4YWI3YTggbGVnYWN5LXRydW5rCisyNTY2NiA5YzQzNWIxYjU5YTU2YzA0NGFmYzlmMDdjMDI0NjlhN2ViNDM2N2FkIGxlZ2FjeS10cnVuaworMjU2NjcgZWEzYjE4Nzc0NmY3ZDUzOWU3YzIyMzgzMTNiODYxNTg3ZTlmYTRiYiBsZWdhY3ktdHJ1bmsKKzI1NjY4IDA4OWFiNWJhOTQ2NmI0NmVkYTYwMzIzOTJlMjY2MWQ5YTRjZmVlZGQgbGVnYWN5LXRydW5rCisyNTY2OSA5OWUxZmVjMjZiNDA1YWJiNDRiNjIxMGRhM2RjYjA1MWMwYWVlNDkyIGxlZ2FjeS10cnVuaworMjU2NzAgYjU1ZDdiYzA1ZWM4ODY3NmIyZjEwOGY0ODk2NWUzMzYwNGIyNzIyMyByZWxlYXNlMjItbWFpbnQKKzI1NjcxIDEzNGNiNDE4Njk0NjZhYmNmNDJmODA4ZWI1YmExYWRjN2RmZTBmNGMgbGVnYWN5LXRydW5rCisyNTY3MiAwNDk3MzljYTBjMTM1ZDFhNTFjMWU1MTI5Mjg5YmE5OTVkZjQ5MjZiIHJlbGVhc2UyMi1tYWludAorMjU2NzMgMzVjOWJlNjkzODg4ZTAwYmRhZjg1MGFhMGZkOGIwZDk4NTYwOTdhZiBsZWdhY3ktdHJ1bmsKKzI1Njc0IDE5ZDFkMzUwMjBiZDQzN2QzYmRiNDYxMjQwY2VmMGQyMDZhNGQzOGEgbGVnYWN5LXRydW5rCisyNTY3NSAzZjZkZGVhYzQ4NTZiNTI4OGZlMDcwM2YyYzU0ZjFhMDk3ZDdkYmJiIHJlbGVhc2UyMi1tYWludAorMjU2NzYgYTQxNWNhM2U4OTAzODYwMTRiNzgwMTJlNWUyZTg0Yjg2Y2Y5ZTY3ZSByZWxlYXNlMjItbWFpbnQKKzI1Njc3IDA0MDhlY2Q4NGFhMmEyNjA0OWYyZTkxZGQ0ZjZiZTY2ZmU1YzMyNTMgbGVnYWN5LXRydW5rCisyNTY3OCBjYzc4OGIzYjIxYjYyMjRiMzZkNzY5OTViMzhlY2VkZGZkZmY3MjQ0IHJlbGVhc2UyMi1tYWludAorMjU2NzkgZGM4MGNlMTFmYWUzOTA5YTMxNDE3NTU4MGI0YjMyNGEwYjRhMzFmOCBsZWdhY3ktdHJ1bmsKKzI1NjgwIDVmNGZmYmZlNmJlNjgxYjVmOTYwYjZiMTlmNDM5MGZmMDNhYmE2YjkgbGVnYWN5LXRydW5rCisyNTY4MSBhYjc0ZmY4MGY5ZDBhYzUzYjIzMjJjZjVmYmU2Mzg5NjllNTQwZTZlIGxlZ2FjeS10cnVuaworMjU2ODIgZGM2MDU0ZTViNjQyY2QzYzNmMWY2MTdkN2Q0MzI5MGUyNGMyZDBmMCByZWxlYXNlMjItbWFpbnQKKzI1NjgzIDA5NmI3NTEyMGU3MmI0NGZlNGEzMmRlMjkzY2Y4Y2IyMDBlYTZiMjEgcmVsZWFzZTIyLW1haW50CisyNTY4NCA1YTc3OGFlMTg1MTIzODkxY2VlYWEwZDYxOWFjNGEyZmE1Zjg3Y2IzIGxlZ2FjeS10cnVuaworMjU2ODUgYWM5NzZkMzY3MDhkM2Q3ODFjMGY3YTYwNjY4YzcxNGVmNDgwNmJiYiByZWxlYXNlMjEtbWFpbnQKKzI1Njg2IDMxZDlkMTFhMjk0Y2E5N2Q1YmNmYjkxY2ZmOWVjNjBiMjQzYzFkZGQgcmVsZWFzZTIyLW1haW50CisyNTY4NyBkZmYwYTQ0YjIzNjhlNDE0YTQ0NTY4ZWFmNzJhMTM1ZmY5NjBiNGIyIGxlZ2FjeS10cnVuaworMjU2ODggMTZmMGRlZmE0NWMyMGRmMjYwNDE2MGFmMzgxM2NjMjkxMDIyYWE2OSByZWxlYXNlMjItbWFpbnQKKzI1Njg5IDM5OTI1NDRkYzE0NWZiZWJmYjEzNzM1MDI4NjZjYzQ5NDg4MDljNmIgcmVsZWFzZTIxLW1haW50CisyNTY5MCA2ZDA4YTI5NTViYjYyNTE4NzI3OTIxZjE0MDg4MTJlZTc1ZDgzMDcwIGxlZ2FjeS10cnVuaworMjU2OTEgYTYxOTNhODdmNTAwZTI3NzdiM2YxOTY4MzhlNjAyYjZiZjdmYjg1NCByZWxlYXNlMjItbWFpbnQKKzI1NjkyIDFhNzUwZmI5M2IxNjkzNjFjYmIwZWY4ZDA0NjFmNTA2MGYyZTk2ZmUgcmVsZWFzZTIyLW1haW50CisyNTY5MyBmMmViOTVmYjQ1MjllMjc2OTU2ZjA2YWRlYWE3YjMyMmIxNTQwODVmIHJlbGVhc2UyMi1tYWludAorMjU2OTQgMjhlMzc5MDViZWU0NTgyOTM0ODU5NzNiYjBjMTc0Y2QyODk4ZTM4ZCByZWxlYXNlMjItbWFpbnQKKzI1Njk1IDc5ODU2YWQ3NDlhYjdkYzczOTg2YTkzMTIzMjA2YjUxY2M3NWQzZjIgcmVsZWFzZTIyLW1haW50CisyNTY5NiBkZWJiMDA1ZjE2NzNhMDM5MmY3M2QwNzg5OTBlYjgwMWExZDIxMzYwIHJlbGVhc2UyMi1tYWludAorMjU2OTcgMGZkMzgzMWNmMmEwNzU3YTNmNjM3MDc1ZGE2MjRmOGMyOWZmMDJkZSByZWxlYXNlMjItbWFpbnQKKzI1Njk4IDAyOWU0Y2JkMjMxMjk5YjFiZDFjY2EyYWFmNmZkZDQ0ZWUxMzRjZTIgcmVsZWFzZTIyLW1haW50CisyNTY5OSBjOTAxZDE1OGFkNjg5MzZlOWMxMTUxNmYyM2FkMjg4YTEzYjA2YmQ5IHJlbGVhc2UyMi1tYWludAorMjU3MDAgYTM0ZjkxOTVmNjExZTczZjYzMjVmZWY0ZGEzYjAxMTgwNzIwODA5NSByZWxlYXNlMjItbWFpbnQKKzI1NzAxIDZjM2UzMjM1N2Q5MTA4YzMyNzYxNmFiYWEyZTFiYmRhZjM2YWJjOWEgbGVnYWN5LXRydW5rCisyNTcwMiA3ZWNjNDkxMTdkN2U4OGI2NzI1MGY0YzM0MzdmMjYzYjdmN2Q5OWIxIHJlbGVhc2UyMi1tYWludAorMjU3MDMgMjU0OGUyZjMyM2ZhN2U5Y2UzZjA4NjRiMzcyNGNlMDQ5MGQ3M2NiZiBsZWdhY3ktdHJ1bmsKKzI1NzA0IDEyZDIwNGQ5M2FmMzY1MzQ1MmZjZjFjMTY4MmNjNmE0NTI5NzQ2NWYgcmVsZWFzZTIyLW1haW50CisyNTcwNSA2NDFmYjRiNDcyMGU3NjljZWI4MWZjZDQ2MjFhNTc1YjgzMDEyYzc4IHJlbGVhc2UyMi1tYWludAorMjU3MDYgZjk3NmZhYTMzMGVhMTY3ZDgyYWQ1ZWZiYWRkODQ1NDhmYTJlMTk4MiByZWxlYXNlMjItbWFpbnQKKzI1NzA3IDFmNzMyNTFjNjI1YWM2MjIwOWRmNjZjNjI5OGFmMTg2OGJiMzRjYWMgbGVnYWN5LXRydW5rCisyNTcwOCAyN2YzNmY0YmY1MjU4YmVjNDUwMzMzMTRmYmZkNTA4MjgyMzRlMGU0IGxlZ2FjeS10cnVuaworMjU3MDkgYjg3OWU2ODUxYmUzYjk4ZjFiMWMwYTUxMGM5MmEyNWNiMjc2ZWI0OCBsZWdhY3ktdHJ1bmsKKzI1NzEwIDUxYWE5ZWIyNGQ4MWY2MjdiMGQ5Y2YyN2I3ZjUzYzNiZWVjNjJmNzUgcmVsZWFzZTIyLW1haW50CisyNTcxMSBmYjlhMDA4MjFjMGQ1MGQzM2Y4MGRjNmRjMTJiY2Y0Yjc0MzhkNDZhIHJlbGVhc2UyMi1tYWludAorMjU3MTIgNGNlNTE3YjNlMzAxZjZjYzUyZDY0ZGE4OGQxMWNhMWM5YmMxOGU5NiByZWxlYXNlMjItbWFpbnQKKzI1NzEzIGEyNzMzZmVmZmIzNjY5N2ExYzE0ZGJiNWFmODY0OWM5MDcyOTViNzggcmVsZWFzZTIyLW1haW50CisyNTcxNCAxYmI0ZDJiYWJjMTQ1YzZmMmI1ZTdhYzMwYzBmMjhiYzIzNzE1OTI4IHJlbGVhc2UyMi1tYWludAorMjU3MTUgNWE5ZGFkYTdjYmFjMzdkNTVkNzI0MjY4OTBhNTViMGMwM2FiNDMxYSByZWxlYXNlMjItbWFpbnQKKzI1NzE2IGRjYTRhN2MzNmViOTljYzlhNWI0M2U4YmE2MzljMDM4YmExMDdkZWUgcmVsZWFzZTIyLW1haW50CisyNTcxNyAzNTEzYTlkMDkwYTlhOTVlM2ZlNGNkMjE1Y2UzNjI4NjBmN2JhYTAzIHJlbGVhc2UyMi1tYWludAorMjU3MTggOTJlYmU0OWQyMmM1M2JkMTU4YTljZjYxNDg4OGUwZTlhY2MzM2I1YiByZWxlYXNlMjItbWFpbnQKKzI1NzE5IDg0ZjJjNzc4M2QzMTAxNjViN2JmZDg0ZjgwODYxNWRiNTc2MjhkMmEgcmVsZWFzZTIyLW1haW50CisyNTcyMCBkZDE3YWFkZTNiZWI4YTU1MjQ1ZWZiYTY3ZThiYmIzN2Y0MTAxNTdmIGxlZ2FjeS10cnVuaworMjU3MjEgZGY5NzliZGQ2YWVmZDJiZWRiMjQ1MzcwMDg4MDQyMjJlZmM4NTRmYyBsZWdhY3ktdHJ1bmsKKzI1NzIyIGM4YTZlYTAwYTllMWFkY2JiMTlhNjJjMDFlY2VkMDQyNTFiZjBiMjcgbGVnYWN5LXRydW5rCisyNTcyMyAxN2Q1NjEyNDNmZjgxMmRkMTJhZjZlZDgwNTc1YmFhY2RkNTYyZWY3IGxlZ2FjeS10cnVuaworMjU3MjQgOGVkNjQ3ZDMxZjQ0ZWY0ZmE5NWIxNWM2ZmUxMjM1ODQyYmUwMGMxNCBsZWdhY3ktdHJ1bmsKKzI1NzI1IDZhYzQxNTBjNGU4ODQxYTI5YjIxYjZjYTI2NmYzYmVmODkxOWEyOTcgbGVnYWN5LXRydW5rCisyNTcyNiAzNGNiZWZkMmMzZmU5NjY3NjU1ODU3MDA1MTdlNDE4ZjdjOGM1OTQzIGxlZ2FjeS10cnVuaworMjU3MjcgYzg1NGI2ZDBiMmMwNGJiNzE5NzdmYzFjNGYyNDg5NzNkNDQ4YWJlNiByZWxlYXNlMjItbWFpbnQKKzI1NzI4IDEyMWUxOThmNmRkYTllOGI5NTNkNzQ2ZjAxNDJlODI0NDEyYTA0ZDMgbGVnYWN5LXRydW5rCisyNTcyOSBmMmI2Y2NjMDA4MDg1MTRjYTM0YzFiYmVkMzUzODk0MjBiNzU3ZjI4IGxlZ2FjeS10cnVuaworMjU3MzAgNzE1ZDYzMWVlYTJmNDI2MjNhY2ZjYzhhZmZiNTE0MTJkM2EwNjg1NCBsZWdhY3ktdHJ1bmsKKzI1NzMxIDdmMGQzOTAxNGUyZTE1ZWE5ZmIzZGFhMTAwYTkyNmM5MjQyZDgyNzEgbGVnYWN5LXRydW5rCisyNTczMiBjMjEwNTYyZTE1NTgwYzYyNjUxN2NmMmI5MmZjNjU3NWM2YTMzNGJmIGxlZ2FjeS10cnVuaworMjU3MzMgYjM1N2RmMzAxZjVmMjU2ZjJmMzRhZDI5ZjMzODdhYjUzMDRiNzUzYyBsZWdhY3ktdHJ1bmsKKzI1NzM0IDA3MWY1MDNlNWY0ZjRhZWMzNTNiNGY5ZDI5OTJhY2EzYTA2YmI0YTQgcmVsZWFzZTIyLW1haW50CisyNTczNSAwYTk2ZGFiNzBhMTU3NGViOGEwYmQ1YzQxZmI3ZDA4N2U1NzdmZDQ1IHJlbGVhc2UyMi1tYWludAorMjU3MzYgMjQxNzY5NDMyNGVmMDhkMTMwZmYzZmZiZWU5YmVjOGYxYjljODQyNSBsZWdhY3ktdHJ1bmsKKzI1NzM3IDg2MDBkYmE0ZjU5ZDNkMjUyMTcyMmNkN2RhYTEyMzc3Mzg5ZTViMDkgcmVsZWFzZTIyLW1haW50CisyNTczOCBjZjlmMWI2ZGJhM2I0Nzg3ZGViOWZiNWU5YzE5ZDliY2ViYmNlYmEzIHJlbGVhc2UyMi1tYWludAorMjU3MzkgNzc1ZGE2MTc4ZTg2NTU3ZjAxYzI3YWRiNjE2MmMxOGU2OWVkN2Q5OSByZWxlYXNlMjItbWFpbnQKKzI1NzQwIDQ2NjhkMWM5MjZjZGYwNDljZjU4Y2Y5YTdhYTkzYTJkYTA4MzcwN2MgcmVsZWFzZTIyLW1haW50CisyNTc0MSA1NTUxMmZlMWQ2ZjE0YTQxNzJlNTRlNzUxOTM3OGVkOTRmM2FhYzdmIGxlZ2FjeS10cnVuaworMjU3NDIgYjkwMDRiODM2OTk0ZDk0M2M5NGNhMGQ0ZmMzNjM4Y2JhMzQ0MjM4MCByZWxlYXNlMjItbWFpbnQKKzI1NzQzIDY4ZTdlOGRmYzVmNTAyYmQ2M2U0NzJmMGQ0YTg2NDljNmI5ZTFhODEgcmVsZWFzZTIyLW1haW50CisyNTc0NCAxNjVlMjBhYzBhYjEyYTdjMjk0MzkzNTk0NDVkOWZlYTA3MDYyN2IxIHJlbGVhc2UyMi1tYWludAorMjU3NDUgZDVmNjNlN2NhYjMxYmQ0YjY1M2VkNjFiZmYyYzEwZmM3ODMxYmM2MiBsZWdhY3ktdHJ1bmsKKzI1NzQ2IDQyZTZjM2NkYzA5NTgyNzZjNjIyNjAxOTg4MDViNTE3MGE1ZWUzMWQgbGVnYWN5LXRydW5rCisyNTc0NyA4ZmM5YTU3NmZiZmZjNDFkYTUxMGMwZmNmMjExN2MzY2Q1N2Q0MTIzIHJlbGVhc2UyMi1tYWludAorMjU3NDggMDkyOTg5NGNkZjk1ZmMwNTYxYWYyMGIxOTM4N2QwNTY5YjhjYWVhNCBsZWdhY3ktdHJ1bmsKKzI1NzQ5IGI1OWU4YThkZjU3ZTg2N2IyYjU1OGQ5YmMxMzJlMTc2NDEwOTg0ZTIgcmVsZWFzZTIyLW1haW50CisyNTc1MCBjNzNjNmE1YjZhODA0NGJlMzc5NWZlMDA1MDRjYzU2YmFjZTk3NjlhIHJlbGVhc2UyMi1tYWludAorMjU3NTEgZmQwNTBhYzFlMGNlNWIyOGRmN2VhZWRiYTA5ZGJlMzljMDdhMmU1MCBsZWdhY3ktdHJ1bmsKKzI1NzUyIGFmODg0MWFjMjk4OWRiYWJlMmZkY2M0NjY0NDg2ZWUwNTUyNmU4NjAgbGVnYWN5LXRydW5rCisyNTc1MyAxMWY2ZjhjMWNlNzM0Zjk4NTc3YWFlYTk4YTVlZTU5MWQ2Y2E4NTYzIHJlbGVhc2UyMi1tYWludAorMjU3NTMgNzY1NDM0ZTdhYTAxOWMxYmI4MmY5ODEzYjgwMjU4MzA4NjdjYmRjMCByZWxlYXNlMjItbWFpbnQKKzI1NzU1IGU4OGQ1ZTI2ODdlZTQ3MzA2NmVmYjgwMzZjZDc5MzhiOTRkOTBlZDAgbGVnYWN5LXRydW5rCisyNTc1NiBhYjY2MTZlNmNlYmZkMWZiOWM3OGUyYzQ5YWYwOGE2MDg5NGZjY2JmIGxlZ2FjeS10cnVuaworMjU3NTcgMGM4YTM4NWZjOGEwMTMwYTEwYzNjODBmYzg3YzU5YzY4NGZjMjM3OCBsZWdhY3ktdHJ1bmsKKzI1NzU4IDY3MDZiODNkMWJkMTVjMzlhYjk1ZGY0Mzc5ZjRjMzc5ZGZjODViYmEgbGVnYWN5LXRydW5rCisyNTc1OSAxMzJhMDY0ZGE2NTZlNTIzZTZmMDVjZTg1ZjEzMjdjMjRkYjgwMDBmIGxlZ2FjeS10cnVuaworMjU3NjAgOTYzZTgxNGU2OWNjZjVmZTYwMmM0YmMwYzI2NGEwNTlmMzE3NDhjOSBsZWdhY3ktdHJ1bmsKKzI1NzYxIDk4NGViOTk1ZmI5ZWRjM2M1Y2MxZTg4MjMwZGIyNjcyMWNjOGRlNmQgbGVnYWN5LXRydW5rCisyNTc2MiA3MTg1N2YxNjIyMzExNTU2MzFiZjE2YjIxNTQ5NWI1NTNhODBiMTYzIGxlZ2FjeS10cnVuaworMjU3NjMgOGJmY2Y2ODI3MjQ4MmJhYjczMTA0NzRiMjEzMjc5ZjUxOTlmYTgwMSBsZWdhY3ktdHJ1bmsKKzI1NzY0IGE2YmI4MDAyOGFjZjJkY2JiNjQyY2VkNzhiYjYzNDFjYmZmODc4NGQgcmVsZWFzZTIyLW1haW50CisyNTc2NSAzNTFmOWI0ZDgwYzVkMjcwYzViZDNlZjRjNWFmOTMxMWU1MGE3NGQwIGxlZ2FjeS10cnVuaworMjU3NjYgY2VjZGE0ZWNjMDkwY2E2OTg4ZGI4ZGQ2Mjc3MmJlOTE4MTdiMmY2ZCBsZWdhY3ktdHJ1bmsKKzI1NzY3IGUxNTAxMDlkMmI5YzYwYzlhZDgzOGUyNzRiMDA1NDhjOTA1YzA4YmUgcmVsZWFzZTIyLW1haW50CisyNTc2OCAwNzNkYjY4YTJjMmJiZWZmYTFiN2MxNDY3ZmU5ZjhlM2IxMDlhYWEwIHJlbGVhc2UyMi1tYWludAorMjU3NjkgMGM4ZWQzODQxYTY0ZjhmODI2YmZkNTc4OGJiNzkwMzAxNzRhMGNiYiBsZWdhY3ktdHJ1bmsKKzI1NzcwIGEzZWU3MTMyMDM2YWYwNWQxMWVjNjIyYWIxZTY4OGM2ZDYzMTc4ZWUgcmVsZWFzZTIyLW1haW50CisyNTc3MSA0ZTgyM2JmMjUxMmNlZTg3Zjk2OTE3NjM0YzA5ZTJlNmIwYjFlNGRhIHJlbGVhc2UyMi1tYWludAorMjU3NzIgNDU3YmYxODRlN2JhOGI1NzhlMmFlNGEwYWE3N2Y2ZWNlNzBlZjllMyByZWxlYXNlMjItbWFpbnQKKzI1NzczIDRhNDU5N2JjNGVhMjIyNzg0MDE0ZTBjYzRhMzhhZjZlZGQyZDUzYWUgcmVsZWFzZTIyLW1haW50CisyNTc3NCAzNmM1MmNmYmQwYjc1ZTYwNTRkMmUwZmVlODg2ODUyNjk0M2I3ZjIxIGxlZ2FjeS10cnVuaworMjU3NzUgOTI3YmQ0ZjZlMzViMmVlOGU2MjUyYTcwNDRjYmE2ZGI0NTNkMzA0OSBsZWdhY3ktdHJ1bmsKKzI1Nzc2IDUzYTFmMjFiMDQ1MTQ4OTNjNWQ3ZGVjNTUxOGE5YTEyZWFlYmQzMzkgbGVnYWN5LXRydW5rCisyNTc3NyA3MDEzNDBjODc3MjMxOWJjNmU0ZTQwOWI0ODhhN2ZhZmM4N2ViZjEwIGxlZ2FjeS10cnVuaworMjU3NzggYzc4ZmZiZmMzNmQ5MzY2MGRkZmE4YzdkMDExM2YwM2ViM2JkNGMxNSBsZWdhY3ktdHJ1bmsKKzI1Nzc5IGRmMzU2NTZlN2Q5OTcxOGZmN2E3ZGRlY2ZhZGQ1ODJkYTQ4Y2E2M2EgbGVnYWN5LXRydW5rCisyNTc4MCBlNjIxNzRjN2Q4ZTUxNzY4NmY4ODRlZmQwMGI3YzlhY2M5MjAwM2Q1IHJlbGVhc2UyMi1tYWludAorMjU3ODEgYjE0OGUxOGFlNzdhYjAzOTFiMjcyOWIzYTg1Y2E0ZGM4MzgwNTdiMSBsZWdhY3ktdHJ1bmsKKzI1NzgyIDdhZmJiZTI4OGFmM2RhNmNkOWM4YjlkZmE5Y2UxYTZmYmI1NWNhYWIgbGVnYWN5LXRydW5rCisyNTc4MyBmNjRhMTE5N2E1MmE0NzgxNjViYWEzOTg1NjRkNzQ0OGJjYzc3OWUxIGxlZ2FjeS10cnVuaworMjU3ODQgOTg5NWUyZTMzNmMzYTEwZjZiZGMxYzc1YjgzYzBhZWM1ZmVmMGQ3MiBsZWdhY3ktdHJ1bmsKKzI1Nzg1IGI1MjNhNDcwYTBjZTk4YmU5NGNhMGFhNjQ0ZDRmN2I0YjMwYThhMjAgbGVnYWN5LXRydW5rCisyNTc4NiA1YzNhMjU5MjM4Y2ZmNTNjNDY3N2IwY2JhNTU3YjE4M2I3YjYwODQ5IGxlZ2FjeS10cnVuaworMjU3ODcgYmU0OTJkZjgzZDAzMDA4YmE1N2NhZTEyNmRiOTE1NDQyOTVmOTI1YyBsZWdhY3ktdHJ1bmsKKzI1Nzg4IGY1MmQ2YTY3NWY1Zjc4NzYzMTQ2YzhjYTFiYzk4MDg0Y2FiZWM1YTcgcmVsZWFzZTIyLW1haW50CisyNTc4OSBlYWM1NjBjYzAzOTlkN2YzMzhiMDM3YWRmZWFhOGFiNjA2OGQ4Y2RkIGxlZ2FjeS10cnVuaworMjU3OTAgYzEwNjhiMDkyODc5ZmNlNjFiOTY5YmFhNzEyNTljOTg2MWYwNGM0ZCBsZWdhY3ktdHJ1bmsKKzI1NzkxIGY0ZTI0YWIwZDEyNGFlZGI1ODk0OTk0OTUwM2MxMmI1NjVlZTEwZGYgcmVsZWFzZTIyLW1haW50CisyNTc5MiA3MDAyZjI0ZjgxOGZiMmM3ZTA5YTdjOGZkYmMwODVlMWQ2ZmM4YjAwIGxlZ2FjeS10cnVuaworMjU3OTMgNTAzYjkyZTY2YThjNzY1ZWVjZjU5YzBmMGNhYmViMzNhYTMzNmIzNSBsZWdhY3ktdHJ1bmsKKzI1Nzk0IDgzMjA1OGYyMWFhMjc0NDU1ZTIzZjVhODhlM2NjY2Q4MzE4ZWY5Y2IgbGVnYWN5LXRydW5rCisyNTc5NSAyMzdhZDQzZjg5YThmOTQ1MDJmZGQwNDAzZjY0NjQzYzA1ZjAyNDAzIGxlZ2FjeS10cnVuaworMjU3OTYgYzBhZTZmNDZmMjMxNTc0MzIyZWNhYjA2ZWYyYTAwMDVhZTRjOTg4MyBsZWdhY3ktdHJ1bmsKKzI1Nzk3IGQ4ZDk4MWQwYTQ3ZTVmMmE5ZWRmNTkyMDk5NmUwZGVkODIzMGMxOWMgbGVnYWN5LXRydW5rCisyNTc5OCA4ODhmY2Q5Yjg1OGRjZTMzMTczODBjOThiZjdiMzUyMTRhYzU3ZDFiIGxlZ2FjeS10cnVuaworMjU3OTkgZDJlNDU3YzQ0YmYyNzU3NTI5ZmI1YWMxZWYxZTcxNjY3ZGIyNjI4OSBsZWdhY3ktdHJ1bmsKKzI1ODAwIDA4Zjc0MmRmOTkzN2EyY2NiM2M5ZGM1NzJjMzE4MzkzMzI4YzRjMTYgbGVnYWN5LXRydW5rCisyNTgwMSAyNzNlZWUzODcxMmNmZmVhMWIzYTdmNWIxODRkM2Q2OTY5NWMxZjczIGxlZ2FjeS10cnVuaworMjU4MDIgMTA4NDZmMWUxNTkyZjk5YWJiZDBiNzBmMWFlM2Q0OTUyOTk1NjQ0NCBsZWdhY3ktdHJ1bmsKKzI1ODAzIGIxODM2Y2NjOTUxYzk3ZjUwMTVjNmZjNTI0MGU2YjllYmE5YjM2ZmQgcmVsZWFzZTIyLW1haW50CisyNTgwNCA5YWZlYWY5OTc5YTBhMmJhMWY4NTc3YmViNTM0N2FkOWYxNTQ4ODU3IGxlZ2FjeS10cnVuaworMjU4MDUgZDFhZWNmNjYzMTY3OTBlNWU4MWY4NjdiZTU2MGFjNWE5ZDA5ODM4ZCBsZWdhY3ktdHJ1bmsKKzI1ODA2IDcyZmQ4NDE2OTg0YjgwODUwOGQ0NmFiYTZlMjJiYTFhZTE4NmRjMjYgbGVnYWN5LXRydW5rCisyNTgwNyBlYzFhNWEwMjlmNzRjNTdmZTI4MjkzNmM1MDdmN2ViNzExMmViODk0IGxlZ2FjeS10cnVuaworMjU4MDggZDVhYWQ2YzU4MWM5YWU0NzNlOTJjNWQyYzc0OTYxMDkwYzJkNmQzZCBsZWdhY3ktdHJ1bmsKKzI1ODA5IGVmNmUyZmVmODFkMmE4YjhiYThlMTIwNWJiMDljMzU5N2U3ZTk3NzEgbGVnYWN5LXRydW5rCisyNTgxMCA5ZThhYTI5NTIzZjA5Nzk3NjJiZmRlMGViNWE1MTMzZmQ5ODY2YzU0IGxlZ2FjeS10cnVuaworMjU4MTEgODgxYjY0ODRmMGRmYWE2MWIyN2UzODI3ZjBlZjBmNmJlNTExODNmMSBsZWdhY3ktdHJ1bmsKKzI1ODEyIDUyMjA4ZmU0YWM0NzExNDhjYzcxZjc0OGI0YzVkMDlhYzMxYjM4YjEgcmVsZWFzZTIyLW1haW50CisyNTgxMyBkODY0ZTJiZDkxYTZlMTE0M2ZlOWRmYjgxY2ZkNjIzYTFlZjRjZTAyIHJlbGVhc2UyMi1tYWludAorMjU4MTQgMjM5MjVkZjRlMzcxMzA2OGZlZDg5ZTUwYjg4YmY0MjIxM2JmNjFjOCByZWxlYXNlMjItbWFpbnQKKzI1ODE1IDdiNWQ2ZjFmMWM2ZWM3NjUzYjM5ODIyMjFlZWZmNmI5NGRhMDMyZGYgcmVsZWFzZTIyLW1haW50CisyNTgxNiAyYTdmNzFhOWJkMmUzMGNlYWZjYWRkYjVlM2U1ZDc4Yjk1Yzg2N2Q4IHJlbGVhc2UyMi1tYWludAorMjU4MTcgMWZlMzgwMjMzNmEzNTZjYWRlODdlZjYwYzZmM2FjNDlmYmQ4Y2U3OSBsZWdhY3ktdHJ1bmsKKzI1ODE4IGEzNjdiYzYxZDViNjA3ZTlmMWVkOWIyODA3MTMxMjA0YzYwNzcyZGMgbGVnYWN5LXRydW5rCisyNTgxOSBmNmU2ZmRiOTM1ZDIxNDIxOTM0YTUzNGYwNWU5YTc0M2I2MzQxZjRkIHJlbGVhc2UyMi1tYWludAorMjU4MjAgNjhmZTJiMzkxMTU5NDcyZWEwZjQ2MDAzNTUwNTk3YTYxMDYyYmJkMSBsZWdhY3ktdHJ1bmsKKzI1ODIxIGJlYTAxZGMyZjAwZTJiZjNlMmU3Yjg0ZTU4OTgxMThjNzVhOWU0ZjcgbGVnYWN5LXRydW5rCisyNTgyMiBjM2UwZWEwOTczNzM2NmRiOTk0YzJjOWM2MGI0NjgxZTcyZTQ1YmRjIGxlZ2FjeS10cnVuaworMjU4MjMgOWJhOWQxMjM4ODA0ZjQ1ODcwOGVmNGRlOTUxMzQwNGQ2M2Q0MDQ4ZSBsZWdhY3ktdHJ1bmsKKzI1ODI0IDg1YmQ1MzRjYmQxOWY2OTMzMTU4ODQ1ODAyMDRkM2QzMWVlYTY4ODQgbGVnYWN5LXRydW5rCisyNTgyNSBmNTUxYWY5MjY2MGViMjJmMDZiNTQxZTk1MDFjNzdmMjhhNDBjODY4IGxlZ2FjeS10cnVuaworMjU4MjYgYWI5OGEwZGVmOWQ3NjMzMzdmMDFiNjY1NTcyYjFiZWYyZmUwYjZiYiBsZWdhY3ktdHJ1bmsKKzI1ODI3IGFiMjRlZjJjOTMyMzg5YWZkNzU1NzM5ZTRjODc2NjA2NTg0MTQ3M2MgbGVnYWN5LXRydW5rCisyNTgyOCAxZGIxNTEwYWJlMjE4N2I2NTZlYjI0N2Q5ZDk2YzU0NjJjNGRiNGM4IGxlZ2FjeS10cnVuaworMjU4MjkgYWFmNWVlM2I4ZjkzNTU2NDhlNWZlNjUxNDczNzE3ZjRmNjRkYzUyMCBsZWdhY3ktdHJ1bmsKKzI1ODMwIGVlYmFlNGY2MGQwNWNhMzQ0Mjc3M2Q3ODRkNTljNjM2YTBkYTA1YzQgbGVnYWN5LXRydW5rCisyNTgzMSA4ZDAwNjE0OTNjNTdkMjI3YmVjOWM5YjliZTU1ZDc1MTE5YjFiMWM1IGxlZ2FjeS10cnVuaworMjU4MzIgMGU0NzU4Y2NmZTJiZTY5MGVjM2ZmYzhmNWMyY2IxNWMxMzRlMTNhYyBsZWdhY3ktdHJ1bmsKKzI1ODMzIGFjZjVlY2Q4MDZhZmM3OWZhNTE4N2Y0ZTc1Yzg5NmJhNDY3YmY2MjIgbGVnYWN5LXRydW5rCisyNTgzNCBhZDM4MjVkMDRkZWNkNjIyNjQ4OTFkMWIwM2IyZmQ1Nzg3NTNmZmRhIGxlZ2FjeS10cnVuaworMjU4MzUgYmM4OGYxYjQ3NjQ4ZGU2ZTZlNTdiMWZhYWUzMWNjMDVmZGZiNjNmYyBsZWdhY3ktdHJ1bmsKKzI1ODM2IDdhZGVkNmQwNjk2ZTM0NTg0Y2I5OWUyOGFkYWIxYWRhM2I3YmRjZGEgbGVnYWN5LXRydW5rCisyNTgzNyBlNGQxMGJkMzk3M2YxNjQ4M2UzNjY4YzljY2IyZDg0MmE1YWUwZTMwIGxlZ2FjeS10cnVuaworMjU4MzggZDc3ZTc0ODg2NWZmOWI4OWJhOTNjOGMzOWUyY2M4OTlkYmRmMjE0NSBsZWdhY3ktdHJ1bmsKKzI1ODM5IDgwNWJlN2MwZTI2YzUzMDlmMzVlYzk2OGVmZjdlZDkxYTFlNTIwYmMgbGVnYWN5LXRydW5rCisyNTg0MCA2NDA4Mzg0YzgxMzdiMjQ4YjU3MTU4NGMxYzQzZTU5YmE4MTA3Y2Q5IGxlZ2FjeS10cnVuaworMjU4NDEgZmI0NTc5MTE1MGQxOTc3NzczOTZiOTkzNThhZTIxOGEzYTJjY2M4NSBsZWdhY3ktdHJ1bmsKKzI1ODQyIDE1NzAyZTFiOTYxZWJiNmNmZWFhNGFhNjYwMzM4MmVmMDdhN2Y2NDYgbGVnYWN5LXRydW5rCisyNTg0MyA3ZGUzYzliNThkYjhmZWZlZjQ4NzQ3NTM0ODRhOGM3ZmE2YWIwNmM3IGxlZ2FjeS10cnVuaworMjU4NDQgMjNiOWFlNmIzZjdhZmViNWEwNGIzNDYxMTUxNjc1ZWU1ZjlkOTE4NiBsZWdhY3ktdHJ1bmsKKzI1ODQ1IDBmMWFlMzdjZDhlYjAyN2U5Mzc1N2E4MjAwZGI2NGI4ZWI0ZmU4MzkgbGVnYWN5LXRydW5rCisyNTg0NiBmZmNiMmZkMjk0N2UxMjhhNzgxMmFlNjk2NTczNGY3NjEwMTU3YTg5IGxlZ2FjeS10cnVuaworMjU4NDcgYjM2MGE2NTBhMGRiZTQ5ZWQzMTliNWIzNDJmYzNmNzk5MjBkMTg4NSBsZWdhY3ktdHJ1bmsKKzI1ODQ4IDhlY2QxYmFkMjQwODFiNWM5NTIxODQwNWExZWU3N2FjYmVmZDc5OWMgbGVnYWN5LXRydW5rCisyNTg0OSBmMDJjZGIyYmMxN2E3M2ZiOWQ0MTI5NmY4ZmMyZTBjMDQ2ZDA3M2Q3IGxlZ2FjeS10cnVuaworMjU4NTAgMTM2MWY3YmIzZjE5OTM3MTZiZDQ5MDJhMTYwZmE1YTZkMmJkZjdkYyBsZWdhY3ktdHJ1bmsKKzI1ODUxIDYwMzkyNTRhYWFkYzQ4NzI3OTc4YmU5NDc3ZGFhNDkwYzZmNDE5NGQgbGVnYWN5LXRydW5rCisyNTg1MiBkNGY1NDE0NjdiNmQ1MmU1ODhmZjBjNDIzMjY0NTk5ZTFhNjE2ODE4IGxlZ2FjeS10cnVuaworMjU4NTMgZmY5YWI3ZDMwYmJmYmQyMWI2YjcxNjFkNGRiYzM1NTJkMzdhNTcwZiBsZWdhY3ktdHJ1bmsKKzI1ODU0IDQyMjUxM2Y0MjBjZjM5ZmMyNzFiNDU2YWIxNGNiNTczNjAwMmQxMTQgbGVnYWN5LXRydW5rCisyNTg1NSA2NmFkYjU1MWNkMzhmM2QyYjBmYTU4YzYwNzEyNzlmODE3YWYyNGYzIGxlZ2FjeS10cnVuaworMjU4NTYgNzIyNGExZGY0ODA5ZmI0NzFhZjM0YjJkZDBmMzJhOTM3YzkyZWI1ZSBsZWdhY3ktdHJ1bmsKKzI1ODU3IDkxZjlhMjQ4ODdjYjVlNTgwOGVlMDUzYTdhZjBjYmUzMzIxNjljN2IgbGVnYWN5LXRydW5rCisyNTg1OCBlY2QxODFiMDJhOGE5NjZhZTFkN2FiOTFmMTBmZDIxZTFkYmI3OGM3IGxlZ2FjeS10cnVuaworMjU4NTkgMzkzYjBjM2Q5NzczMjQ3YTZmZjMxM2VkMGY5M2NmOGNjMmM3YzNmNSBsZWdhY3ktdHJ1bmsKKzI1ODYwIDU0YmNlM2NhYmNjZDU3YzdjMzhmNmU0MzBhNmNhNjk4ODU4M2ZmMzkgbGVnYWN5LXRydW5rCisyNTg2MSAzYTNkZTY1NjdmMWE1ZDIxNTk3MmU2NTZhZmI2OTk1NTEzNzcyNDk1IGxlZ2FjeS10cnVuaworMjU4NjIgODJiZGJjYTAyYzA3NTFhY2EzOTM3YTNlOWVjMzVlYWVlNTRmNzU3YyBsZWdhY3ktdHJ1bmsKKzI1ODYzIDllM2Q2YjVjZWUwNzYyZDY2MDUzOTYyYTBiZWFjOGI5MDdjODAxY2QgbGVnYWN5LXRydW5rCisyNTg2NCA1YjhiZTg2MTFkOGNkODkxZDEyMmM4OThkM2FlNWY1ZGQzNzA4NTQwIGxlZ2FjeS10cnVuaworMjU4NjUgYzgxNjU3NThhNmRlN2MyYTA1YWNjOTU3OTVhNmRlZDU3ZTI3NWQzYiBsZWdhY3ktdHJ1bmsKKzI1ODY2IDI1ZTJiNTgwYjJjZmJiY2IxYmExNTQ4MjJkMGU3NjY3MTE5MjQzNWQgbGVnYWN5LXRydW5rCisyNTg2NyBhMzJjN2IzZjFmMTEwNmM5Yzg4ZDgwMmVjNDFhZDFkMGU5ZDU2MTU2IGxlZ2FjeS10cnVuaworMjU4NjggZTk0ZWRkZWNmMzMwYTA0MDQyOTQ5OGZhN2ZkOTJhOGVkMjU3MTBkZiBsZWdhY3ktdHJ1bmsKKzI1ODY5IGU3Nzc0NTI2NDgzMDZlZTYyMTRhNWNlOGFhMzcwMDkwNjQ5ZDBkMzYgbGVnYWN5LXRydW5rCisyNTg3MCAzYmQyMmJkMTg3YzMyYjUzYzJmZDZiODliMTYzYjY4YjI2ZDUxN2Q0IGxlZ2FjeS10cnVuaworMjU4NzEgNTRjMDVhOTQ3YmNiYzU4ZDg5NTAxNzE0NTdjMzM5MjRlNjNhODlhYSBsZWdhY3ktdHJ1bmsKKzI1ODcyIDBlZGEzZjgyYjZmM2Y0MjgxNGY3OThmMWE0OGVmMzhiZmU0MzJhYmMgbGVnYWN5LXRydW5rCisyNTg3MyAyMDVjMTA2MzJmMDg3ZjM5ZTE4YjQxZTUyMGRjM2U3MjdiY2Y1MjFhIHJlbGVhc2UyMi1tYWludAorMjU4NzQgNjU4ZWEwMjY2MzRjNGMyMjAxM2RjODFkYTk1MzhkOWU5NTYwOTgxZCByZWxlYXNlMjItbWFpbnQKKzI1ODc1IDBkZDJmOWI1N2NmZjVhYzkxOGU4NzViMjdmNjQ2NTJhZmFkMTkyY2MgcmVsZWFzZTIyLW1haW50CisyNTg3NiBhNDA1NDNiM2UzYmYzMjY0M2JiMzVkOWNkZDUyZDgwYTFiY2RmMThhIHJlbGVhc2UyMi1tYWludAorMjU4NzcgODE0MzI5YTY0MjZjZDc3ZDk2MDZmMTNjOGIwMzVlMmUxY2EzMGMwNiByZWxlYXNlMjItbWFpbnQKKzI1ODc4IDRlZjM2OTNmMWEyNmFhZDkwMzdkZWU5NTEzZDJlZjE5ODIzYjljYzAgcmVsZWFzZTIyLW1haW50CisyNTg3OSA2NjU3OTFkNTNjNDM1NmEyMjY2NTdiOThjMTU2YWY1MmI1OWMxODI0IHJlbGVhc2UyMi1tYWludAorMjU4ODAgMTYyNDVhOWNiZmExZGYzNzBkYTdmMTQyZmJjZmQ5ZjI4MWVmMDdhMiByZWxlYXNlMjItbWFpbnQKKzI1ODgxIDdjN2M5MGZjNzAwNWE3ZWZjNzlmNzA4NGFmMzBlYTA3YjM5MzM0YzkgcmVsZWFzZTIyLW1haW50CisyNTg4MiBjM2RmOWI3YTZhY2FiMTg5YzRjYWY0NWRmMzMyOTMxZDc3M2JmNDI0IHJlbGVhc2UyMi1tYWludAorMjU4ODMgNzk1YmRkNjkyMTc2MDI1YTRhOTFhYzZjZWY4NTI4MTIwMmYwYzRkYyBsZWdhY3ktdHJ1bmsKKzI1ODg0IDhiZmM5MTg0OTI0MmMzMDg5OGRjYWRkOTk4OTQ3NDQ1ZjJlOGMyYWYgcmVsZWFzZTIyLW1haW50CisyNTg4NSA2NGE2ODM2MTg0OGNkNDAyNmZkZmRhMWI3MTQ1ZWE2OTNiMGRlYzM2IHJlbGVhc2UyMi1tYWludAorMjU4ODYgMGFhZTA5OTg2ZmM5OGY1NmQ3OWMzMmJlMDQxY2FkMWRhYjQzMjM1ZSByZWxlYXNlMjItbWFpbnQKKzI1ODg3IDRmZjM3YzU4YWI4OTM5M2FkOTI3YTIxNjAzMjg4OTI1NjFkY2VhZDMgcmVsZWFzZTIyLW1haW50CisyNTg4OCAwYzE5MTJmOWQxY2U4M2RlZmU0NzFmN2QwZjlmNmIwZTU3YWVmYTU0IHJlbGVhc2UyMi1tYWludAorMjU4ODkgYTJmZTBlY2QwY2UyYWJkMGNkYTY2OTlmNWY4Y2QyNWZmMmY2NzI2MCByZWxlYXNlMjItbWFpbnQKKzI1ODkwIDJmOWM2Y2JlYWE2MjhkNWUzZGRiZDVjNjU1ZTA0NWIwMjNmYzgxYWQgcmVsZWFzZTIyLW1haW50CisyNTg5MSBkNjZlNGU3YzllOWE3MGM1NjAzZTQ1OThmZDkyMTNlNzAwNjI3OTEyIHJlbGVhc2UyMi1tYWludAorMjU4OTIgNDU3MjFjMDIxNjA2NjRmY2I1ZGM1N2Y2MjJhMGYwNmMyYWQ4ZWUzYSByZWxlYXNlMjItbWFpbnQKKzI1ODkzIGVmMzE0YjM3ZTI2MGNlZGJiYzU3MWI2ZmM1MjAzNzE4MDE1ZTliYjkgcmVsZWFzZTIyLW1haW50CisyNTg5NCA5MTk4ZmIwNDM1ZmJhYWNlYTkwNzE4ODVjYzFjZGM4NTVjZGQ0MDNkIHJlbGVhc2UyMi1tYWludAorMjU4OTUgMjkxMjAxNWExZTdiNzZiODVlNWUzYzJhNzQ2YWE0YmFhOTA2YzVhMyByZWxlYXNlMjItbWFpbnQKKzI1ODk2IDgwOTBkMGQ2M2VlMWE1OTE3ZTBkY2I5NWU4ODI4OTQ4ZjhmNjJmOWEgcmVsZWFzZTIyLW1haW50CisyNTg5NyBmNmE3ZmRiZDMwZDRmMjE2ZjYxZGE2MDZlOTg4OWNlZDUxZTNkM2RkIHJlbGVhc2UyMi1tYWludAorMjU4OTggMjFlODk3MmQzN2U0NjgxZWNiNGU5OWE0M2Q4ODcwZjE0MGU3YWY2MyByZWxlYXNlMjItbWFpbnQKKzI1ODk5IDFhZmJjNTYxODhiMDA3NDhjYjlhMTA3NzhmMTQ5YjBhMWUwOGM0OGEgcmVsZWFzZTIyLW1haW50CisyNTkwMCBkYTlhZGVjNjZlMmIyMTlhMTQ3MTU4Yjg5ZDQ5NTY2MjM4YWU2NWMwIHJlbGVhc2UyMi1tYWludAorMjU5MDEgZTJjYmU5YzMzNDExYTBiMGI1Nzg0ZWE1NThmMzQwZjA4ZDIxYmZlNSByZWxlYXNlMjItbWFpbnQKKzI1OTAyIDc1ZWYxZjE2NzI1ZWY0ZWNhYmRjZWQ5NjAyYjMxNDU0NDhjYjZlZmYgcmVsZWFzZTIyLW1haW50CisyNTkwMyBiNzI2ZTZiM2E4NTIzY2E0NTIyNDI5Nzc1YTMzNTcwMzU0NjkwNjQ4IHJlbGVhc2UyMi1tYWludAorMjU5MDQgMTZlNTQyYWYyYzQ1YmMwNzkwM2FhMzBjYmVkMWJhNmNhNTY4ODg3OCByZWxlYXNlMjItbWFpbnQKKzI1OTA1IGM1YzEzMjYxNjZiOTIxYTQ3OTY0YzBkOTU5ODlkODE2NjY4NjY3ZTggcmVsZWFzZTIyLW1haW50CisyNTkwNiA3NTY2MTg3YTIwMWNmMjE0NTk4NmY3Mzg5YjI1YWI1OWY1OWE1ZGQwIHJlbGVhc2UyMi1tYWludAorMjU5MDcgMTQyZmQzZTEwNzNkMWUwNzU4NDIwMmRmMzhiNjE2N2NkMjVjYWE4NyBsZWdhY3ktdHJ1bmsKKzI1OTA4IDZiM2U5OWIyZmY5MWM0NTcxYTBkNmIyNjliMmNiZDUzOWUyYTFmZDQgcmVsZWFzZTIyLW1haW50CisyNTkwOSAwOTIyYzkxOWNlZGJlMzdjMGQ1OTcwZjIzOTAwODRhNTY5MWI4ZmViIGxlZ2FjeS10cnVuaworMjU5MTAgNjNmYmNhODk4ZWFjMjZhYzQ0ODQ4NWQzODBjZjc3ZGY1ZGZjNDcxZCBsZWdhY3ktdHJ1bmsKKzI1OTExIGZhZDA3MWZiNDE0MWZlNjA5YmE2NzZmZjc1ODVhNDVhOWY0ZTdmZjMgcmVsZWFzZTIyLW1haW50CisyNTkxMiBhZDE1YjM5YWQ4ZjcxMjQwNDAxMWEyOTM1MzMzNDQwZWY5YTk4YmEyIGxlZ2FjeS10cnVuaworMjU5MTMgOGI2MzZmY2I4NjE1ZWEyOTIwZWNkYjk3N2Y1ZDI2MWE0MmE0ODM3OCByZWxlYXNlMjItbWFpbnQKKzI1OTE0IDllYjRlNjIzMDliMGUyMzJlMDdjZWZkNDA3Y2ZlNzMxYWI2YjFhMTggbGVnYWN5LXRydW5rCisyNTkxNSAyNWI1OTlmMzYwYmMyMWQxODM1NzRmYmI5OWMzZGE0NGZlZmFkNjBjIGxlZ2FjeS10cnVuaworMjU5MTYgNmRlMWExOWY0N2E0MjVmZTExZjI5MWJhYzZiYTQyMGEyYjJiNGIwZiByZWxlYXNlMjItbWFpbnQKKzI1OTE3IGY5ZDk2ZGVkZDFmNDY2YjQ3ZDEwNDdhNjMzYWU5MDIzMjJmMjVjYzEgcmVsZWFzZTIyLW1haW50CisyNTkxOCBmMmEzYWY0ZmE0ZmZlZWYzNGI3ZWM3MGU4YTE0NjViOTViZWQ1MzAxIGxlZ2FjeS10cnVuaworMjU5MTkgYjY4YWY0YTgwMDBiYTEyYTYxYWRmZjhjZDU2MjlhMjQ0NGRlZmQyNSByZWxlYXNlMjItbWFpbnQKKzI1OTIwIDNmNDIxNjM0YzM3Y2M2YzVlMmY1NTAyODU3YjU3YmI4NjRhZjcwZjMgcmVsZWFzZTIyLW1haW50CisyNTkyMSBiNTlhZDRiOTdhNDI2ZTE0ZmI1ZjAzNDI5YzhmOGY1YWU4YjlhMGI1IHJlbGVhc2UyMi1tYWludAorMjU5MjIgN2E0Y2I0ZTk3OTc2NmFhNjBlZDU3NDM1NTY5ZTc3MjY4N2FiY2Y5ZCBsZWdhY3ktdHJ1bmsKKzI1OTIzIDA0M2FkN2FkYzg5NmY0YTQ4ZmUzMzQ1MmM1ZWYwMmY5ZWM5MmZlZDIgbGVnYWN5LXRydW5rCisyNTkyNCAzMDNiNmFkMTNhMzJkOTk1MTEyYzlhMzEzZjA3ZGJjNTY3YzdkOGVjIGxlZ2FjeS10cnVuaworMjU5MjUgM2JmMmI1YWNhNjFlYzE4NTBkNTAyNjk4MjI0MjZkMThlNmJiY2YwOCBsZWdhY3ktdHJ1bmsKKzI1OTI2IDliYjQ1MDM2NWRmNzg3MWMwZTQ5YzNlMjQ4MjgzODU3Mzk3MzZmOTMgbGVnYWN5LXRydW5rCisyNTkyNyA5MDZhZDM2Y2I3YmNjZTc1ZDVjODg1MTA4Y2RmYWFjZTAwNzVmM2YzIGxlZ2FjeS10cnVuaworMjU5MjggMzllNDJkNmY1ZGEyZDA3MDRhNTI2MmJiM2I5ZGZiMGJmYTNiY2VkNCBsZWdhY3ktdHJ1bmsKKzI1OTI5IGFlZGRhMGFiZDMxM2UwMGVhYTQ3Y2QyNTg3ZDhmZWFkNWEzOTMzMGUgbGVnYWN5LXRydW5rCisyNTkzMCA2YTFjODc1MmE2NWZiMDcxZmRkNDUxMmE5NTNkYWUxNjBmZTNjMjA2IGxlZ2FjeS10cnVuaworMjU5MzEgZWU0YjU5YjVmZWI3MmY3YmViMDJkMjcwOWE0MGIxZDk5ODUzYThhNCBsZWdhY3ktdHJ1bmsKKzI1OTMyIDQ3MGU5ZGEyMWM0YWU0ZmY1MWYzNjI3ODI1MDczYWRmNzMxNGVmMGEgcmVsZWFzZTIyLW1haW50CisyNTkzMyBkMTkwYjJkMzAzYzI4MWQ3YmQyYzE5NmQ0ODE0MjBhYmJlMDRiZWI2IHJlbGVhc2UyMi1tYWludAorMjU5MzQgNWEzMGQ0YjNkYTM3YTEwYzYwMTRhNzgxNDYwMmU5NjFlMjQwZDFjOSByZWxlYXNlMjItbWFpbnQKKzI1OTM1IDI5ODgwMmFiZDM4ZGZmZmE3OWI0NzJjMmY1ZGRjMzM3MGViMjRmZmMgbGVnYWN5LXRydW5rCisyNTkzNiAwNmE4MTU2ZTNiY2Y3M2JmY2I2NDU3ZDA4NmJiMjVjY2Q2MjI0ZjZiIHJlbGVhc2UyMi1tYWludAorMjU5MzcgYmMyMGJhYWFlM2VlMTE5ZTM5YTlmMmUyYTJmNmEyNDNkMTlkYjA0OCBsZWdhY3ktdHJ1bmsKKzI1OTM4IGQ3MWQzYjcxNWIxM2VhMjk0YWQ4M2Y1MmZkZmJmMWRiYmIwMzFhMTQgcmVsZWFzZTIyLW1haW50CisyNTkzOSBlNmM2YmFiY2VlZTUzNjBmM2RiNzM4NGQ3YTQ4Y2FjMWE5NTllMjc4IHJlbGVhc2UyMi1tYWludAorMjU5NDAgM2EyMWRiZTFiNmZlNDY4OWE4ZTg1ZDYwZGM1MWJjMTc3MzRkYWYxOSByZWxlYXNlMjItbWFpbnQKKzI1OTQxIDY0YTEwNDlmZTUzYjk2MWE1MWI4OTkwZDU0OTBhOWJkMTQwMmI3ZGMgcmVsZWFzZTIyLW1haW50CisyNTk0MiBmMGVmOGI0MjZkOGQ5YjA3Y2FiM2ZhYzdiYmEzNGM5YmYyODg0ZDg3IHJlbGVhc2UyMi1tYWludAorMjU5NDMgMmQzM2NmZDZjMTdmMDc3OWJmN2NkM2Q0MDI0MWIwMGI4OGE2OTU3MCByZWxlYXNlMjItbWFpbnQKKzI1OTQ0IDlhMTdiM2EzYWYwOTg5YzBkNDFmNGFkMzE0YWUzZGExZmY0MTNlMTggcmVsZWFzZTIyLW1haW50CisyNTk0NCAxMWM5NTJjN2Q0YmU2NjM4MDQwNzY0OTEwYmU4MGJkOWMzYzE3ZGU2IHJlbGVhc2UyMi1tYWludAorMjU5NDYgYmNkMWZkZjEzYWNmZTM2NzFhZjY4NjY0MTIwYTRmZTg4Y2ZkNGJjNSBsZWdhY3ktdHJ1bmsKKzI1OTQ3IDkzZGFhNGZkZTA4N2VkZGFjODNkNTEyNWExOTliNGExNzg5YjY2YWQgbGVnYWN5LXRydW5rCisyNTk0OCAzZDY4MDg1ZjQ5NWY5ZTU4ZTM2NTI0N2RlMzIxNDk2ODZiYjBlMTk1IGxlZ2FjeS10cnVuaworMjU5NDkgOTFlYWI3NDU4MTBmMTEzYzQwNWZlNmYyNDc2YTUyNmFlNGQ2MTljMCBsZWdhY3ktdHJ1bmsKKzI1OTUwIGYxZGJlY2I3ZTQxNjBkMjc0ZTJmYWQ0MmI0NGQ4MGQ5M2UzNjc5M2YgbGVnYWN5LXRydW5rCisyNTk1MSA2NmU4NWE3MzJkZGRlMTkyNTg2Y2E0YTAyYjQwMjk1ZjQxYjRhOGRhIGxlZ2FjeS10cnVuaworMjU5NTIgYzE4ZmU0ODcyNTcxNjBmZDY4MzczYjA0MDJiMjc1OTVmOWEyMWJjNiBsZWdhY3ktdHJ1bmsKKzI1OTUzIDdiY2U0NzUxYmZiMzQwZjJmMTgyOGVkMWYzNzdmNmNmMjJlMDdmNTcgbGVnYWN5LXRydW5rCisyNTk1NCA3ZDBmMGJiOTQ0OGIwMTAwNjI2ZDgzOGFhNzI3NmYxN2MxN2ZkOWE0IGxlZ2FjeS10cnVuaworMjU5NTUgYTc1OGQ0YzQwMWUwOGVhYWRjODIwNWFjZjM2Yzc3MDgwMzY2YzU4MSBsZWdhY3ktdHJ1bmsKKzI1OTU2IDliNTMxMGNmYTJlMGRkYjE2MGM3M2Y3YjdkYjViYmE3NjVhYzdjZmIgbGVnYWN5LXRydW5rCisyNTk1NyAyMDRkNDZmYzU0ZjY4ZTAzMzRmZDcxNjkzNjBkZDgwOWEyOTBjMWE1IGxlZ2FjeS10cnVuaworMjU5NTggMGEzYmYyMmFlY2E0YTJlNGI4NWY0ZWU3MjFhMTdiZDU1NDFlMzRjMiBsZWdhY3ktdHJ1bmsKKzI1OTU5IDFjNzIwN2FkNWRiODE1NzgyMzM4ZWRjZTU3ZjVjYTE0ZjliMjY4ZjUgcmVsZWFzZTIyLW1haW50CisyNTk2MCA4MDgyMWE2NWZkNDk4MTgxOGQ0ZTcyOGI5YzhlNzQzN2E1ZmRmZDAwIHJlbGVhc2UyMi1tYWludAorMjU5NjEgMTk0ZWQ1ZTBkYzhmZjBkZTEzMGU5YjI1ZTY4OTMyMDQxNmIzNmY4YiBsZWdhY3ktdHJ1bmsKKzI1OTYyIDBjNWM2NGI3NWQ1ZDBhMTgxMmRlOWViM2EwNzU1NTFiNmM0OTc0MDQgbGVnYWN5LXRydW5rCisyNTk2MyBhMzMxYzYxNmJiMGFkNWNjNTRlYTlmNzkzZWRmZmQ2NjhjY2MzNGY2IGxlZ2FjeS10cnVuaworMjU5NjQgZjNhOTEzZTY0ZWI4ZWQ0ZGI5MjZiMTAwOTBhOWRkMWFlODAyYWNmZSBsZWdhY3ktdHJ1bmsKKzI1OTY1IDI4NjhlOWE5ZTI4MGI2OGEzOTY1MmUyNjk3ZTUyYjdhNTQ0MmE2ODQgbGVnYWN5LXRydW5rCisyNTk2NiAzZjRiMmY5M2U4YjViNTQyNmU4ODhjNDliNDQ5YjdjNWY4M2RkYTk5IGxlZ2FjeS10cnVuaworMjU5NjcgZGExNjQ1ZmQ5YzI0MzhhZmViZTc0YzA5MzIwN2RiOGJmNjVhOTljNCBsZWdhY3ktdHJ1bmsKKzI1OTY4IDFjODM4YmU2ZDAwNGJiODg2MDYyZjNlZGM5OGE2MDQ4ZjA5M2U2MDIgcmVsZWFzZTIyLW1haW50CisyNTk2OSBhYzI0YzJjOWJjYWY4M2Q4Y2RmNWVjZGZkYWI4MDE2NmU2YmZmYTUzIGxlZ2FjeS10cnVuaworMjU5NzAgODM3NzZiYTU4MGVmMjBhNWM0MzVkZTQyYjdkNmM4NzUyY2I4ODQwMSBsZWdhY3ktdHJ1bmsKKzI1OTcxIDRjN2JiMGI0ZDM1NGJkMjQ3NjEzYmZmYmExM2I5NmU0NjZjMGQzMTcgbGVnYWN5LXRydW5rCisyNTk3MiBjOWI3MzI2MjhlNmM2MDYzZjE4ZjBiMmQwNWZjNjk1ZTQ1ZGVmNzM3IGxlZ2FjeS10cnVuaworMjU5NzMgMjY3ODVmZTYzY2JiZTJkNGM2NTkxYWRiODY5OGQ2MzI2YjM0Nzk2YyBsZWdhY3ktdHJ1bmsKKzI1OTc0IGY2MmJmYjBiMDk0NmNkNmMxMzcyNzU5MzcxY2EwZmE1MTU3ODdlZGUgbGVnYWN5LXRydW5rCisyNTk3NSBkZGM5NTQzYzc2YTAzMWM5Y2IyZDIzNzhkM2IxMjUzMjkyMDIxNWI5IGxlZ2FjeS10cnVuaworMjU5NzYgZjI5NGZkZDE4YjViMDhhNGMwNzMxZmE5MDVhNGVjYjA3NjcyNzYxYSBsZWdhY3ktdHJ1bmsKKzI1OTc3IGQ2ZjUwNjRmMjY3MzcxM2ZhNjVlOTNmZTE0ODcyYzBlZjRjZjkwNmIgbGVnYWN5LXRydW5rCisyNTk3OCAzMjk5YjdhYmE4ZWJlNzAzMjljMWVjMWMwNGZlY2VhOTQ1OTE0ZjBlIGxlZ2FjeS10cnVuaworMjU5NzkgNjc5NmRkMzBhNjAyNDc5NGJkMGExMGI3ZDRhNjk2ZTYwYmEyOWJkNiBsZWdhY3ktdHJ1bmsKKzI1OTgwIDE5ZDRlODM2YmQwNzVlZWRlYTIxMTUyMGMyNmFkYjEwMGJkNjk1M2YgbGVnYWN5LXRydW5rCisyNTk4MSBlYzZlY2JiMzRiMDZiOWUwNDViODhlNjYyZDVkZDg3MDFiZTIzMWQzIGxlZ2FjeS10cnVuaworMjU5ODIgNmE4NTA0NDhmYzhlOGUzYWM5YjM2ZWE5NzA3NTQ5NDNmZjExODI3NyByZWxlYXNlMjItbWFpbnQKKzI1OTgzIDgzMGM4MjlhN2ViMmFlZDU1MjJhN2E0Nzk3ODk2OWRhODZmNGVjZmYgbGVnYWN5LXRydW5rCisyNTk4NCBhNmJiM2NjOTE5Yjk2NTZkNjdlNzdkODg1OWNjNDBiMjJiYzY0YTFjIHJlbGVhc2UyMi1tYWludAorMjU5ODUgZDlmMzAzMDNjODYwZDAyMThjMWQ1ODA0MjYzZjE0MmUxNzhkMGI0NyBsZWdhY3ktdHJ1bmsKKzI1OTg2IDg4MGQzMTA2NDk5YmFiNWJlZjRiOTc2YTM3ZGQyYmVhY2ExMjVlN2QgcmVsZWFzZTIxLW1haW50CisyNTk4NyA4OThjMzkyNDc3ZDkxZDEyODY1MmM1NzQxODUxODRlNzI2NTJiOTkwIGxlZ2FjeS10cnVuaworMjU5ODggMDQ0NmVlYjc4N2I3ZjkyZGFkMjFhNTZkYWJkMmFjNzMxNGViZGM1NCByZWxlYXNlMjItbWFpbnQKKzI1OTg5IDUxYjFjNWVhMGZiYjQ1NjE3NGU1NDBiODhmNzNhNDVhMzdhZTAwMTMgcmVsZWFzZTIxLW1haW50CisyNTk5MCA4NDY4NGZjMDJkYTAwNGY0OGMzZWM5NWYwYTVjNTc4NjZlMTZlOTdhIGxlZ2FjeS10cnVuaworMjU5OTEgNzIzMGUwMWMzYzQ5NGVkNGMzMzIwNThhOTI0ZjhjMDQyOTM4NjgwZSBsZWdhY3ktdHJ1bmsKKzI1OTkyIGU2ZmNjZGU2MTA4NjZkMWIyZmEyNjdiNGQ3MTE1N2YxODUyNTNkOTggbGVnYWN5LXRydW5rCisyNTk5MyA3ODcwZmFjMDQ5ZjcyMTNhNzc4NjFlNTA5NzQ0MTMyYjExZTQ3MzczIGxlZ2FjeS10cnVuaworMjU5OTQgMzQ5NDA0NDI2ZmFhYzM3ZTI0NWM1ZDcyZDU4OTEyYzU4MjQ1MWI5YiBsZWdhY3ktdHJ1bmsKKzI1OTk1IGY4YzY1OTg0OGFkNmY3ODJiNzhiMGFkM2EwYmFhNzI4YzZjZjQwZjUgbGVnYWN5LXRydW5rCisyNTk5NiBiOWNlOTY5MjgxY2I3MzgyMTM1MWY2OWU5OGM1NjRkMGRmYzAwZDU0IGxlZ2FjeS10cnVuaworMjU5OTcgNzI2Yzk2MWYzZGI1MWE3NTBmZWVlYzE1Zjk5ZDlkNjZjNmRlNmZiNSBsZWdhY3ktdHJ1bmsKKzI1OTk4IDBmODAxNjI2YzJkMzc5YzhjOGI0YTQ5MjMwNzA0ODg1MGExZTZmNzIgbGVnYWN5LXRydW5rCisyNTk5OSBkNzc4ZWE5ZGU3ODBmYWMwZjg3ODYzMzE1NDYyMTk0NmM3NDVmOGI4IGxlZ2FjeS10cnVuaworMjYwMDAgYzE2NjYxMDRiNTU0ZjlhNmNlY2UzYjRhMWYzNDYxZDAxNTgzM2I5NyBsZWdhY3ktdHJ1bmsKKzI2MDAxIDljMmNhMzdiZGVlYzU4MTU2ZTRhYTI4ZGVmYTVmNDRiMjAxYjdhMTMgbGVnYWN5LXRydW5rCisyNjAwMiBlYzEwNDNmNmQwNWVmY2U3Nzc4YTZjZmI4NmU0YjMyNzI4NTZjOGU3IGxlZ2FjeS10cnVuaworMjYwMDMgY2VjZjMxZGI4YjBkYjU3MzQzODBjMjhhYzM1YzY0NmVjYjgzNDAyYSByZWxlYXNlMjItbWFpbnQKKzI2MDA0IDk2YjEzNmI2MTE3ODQ1NDhlYmEwNzMyMzE5ZGU2MWU1NTgyMWRmNTkgbGVnYWN5LXRydW5rCisyNjAwNSBkMjkxMTlkMjQzZTllMzdhNGE0MDVkZWUxN2ZkNTE1ZTdjMGVhMmRjIGxlZ2FjeS10cnVuaworMjYwMDYgYjE3MmVlOTNjMTNjNmM5MzJkZGIwZmU2ZmI2OWEwMGE5NjViODQ2OSBsZWdhY3ktdHJ1bmsKKzI2MDA3IDE1MGYwMzQwN2QwZDI2OTcyNDNkMTZhYTNiZmJmZjI1ZGU4NGJjNzAgcmVsZWFzZTIyLW1haW50CisyNjAwOCA4NmEyN2JhMWJlZTc1ZjAyMmJkZTIyZGUxMmEwOTZkOGQ5ZjZlZDVjIHJlbGVhc2UyMS1tYWludAorMjYwMDkgNTY1NWJmYjYwN2NhNzIyNGFkOTdjYzk1YmJjMzcxZjM5ZmIxZGQxOCBsZWdhY3ktdHJ1bmsKKzI2MDEwIDhhODM2ZDBiNTk3NDE2NWZmMGI4NDdmYzMxYjRiMjFjYjA1MWU0NDIgbGVnYWN5LXRydW5rCisyNjAxMSAxNjE2YmQ4YjMxYmMwNDgwODczNTQwOTc5ODY3NGE1YjQxOGQxZGQ5IGxlZ2FjeS10cnVuaworMjYwMTIgMjI4OGM3MjRmZTJiYWQwMTQwZmE2OTljNjRjMjAwZDA0Y2ZmZGE5NSBsZWdhY3ktdHJ1bmsKKzI2MDEzIGYzYTQxNmIxNzhjNDIzY2YwOWM0MGY0MWRlZDk2ZjAxMTBjZDVmZWIgbGVnYWN5LXRydW5rCisyNjAxNCBlOTcxNDc1YzA0NzE5MzFjZWViNjNlN2JlYTZjZDFiZmJkZmY4ZjNlIGxlZ2FjeS10cnVuaworMjYwMTUgMmRhMTEzNzYwMGFlN2U5ZWFhMWQ1Mzg5OWRhZTJkMGIwNTM5OTkyMSBsZWdhY3ktdHJ1bmsKKzI2MDE2IGE4MmNlMTk4ZmU2OThjMmU1NzZkNDJlMmY5NWY5YjdhMWRiYmExYjIgbGVnYWN5LXRydW5rCisyNjAxNyAxMDcwMjNjMGM0NTZkZjNjMmM4MzI0OTQ1NTk4ZmEwN2VmZjZkZTI2IGxlZ2FjeS10cnVuaworMjYwMTggM2FhZGUxNTBlNzE3MjQ3YjM5YWVlMDQ2ODdkNmQ4OWYxMzEwZmFhOSBsZWdhY3ktdHJ1bmsKKzI2MDE5IGFmNzE5MTRkOGJkZjBkZmU1ZGI0N2Q5OTVmZDBhMDBhYmI4MzdkYmMgbGVnYWN5LXRydW5rCisyNjAyMCA0MDkzMTFjNzgzODM2NTNkNjgxMDk5MzE0YzA0ZDk5ZTFiNzdhZWNjIHJlbGVhc2UyMi1tYWludAorMjYwMjEgYmNjZDQ2MTNjNDk2YTMwYmIxYmFkNjQxOWNhNzg0OWJmNTllZjZkOSBsZWdhY3ktdHJ1bmsKKzI2MDIyIDQ2NDA3ZDBhNjAwMGY1ZWUyODhiNWFkOTQ4ZTQzMjBjY2E2YWU3MzEgbGVnYWN5LXRydW5rCisyNjAyMyBjMTZiZWE3OWY0ZGIzYjRlN2M1MWE1MTMzZTczMzk3NWFlMjQzY2M4IGxlZ2FjeS10cnVuaworMjYwMjQgMWFlYTdhZjA5MjYwZTdmMjE0ZjNmY2U1NGQyMmYyMDFjMmYxZjkxMSBsZWdhY3ktdHJ1bmsKKzI2MDI1IDlkMmE4ZjZiMDZiNmZiOWM0NWQ3NzZkZGRmNDE4Yjc3N2RlNTI1ZDIgbGVnYWN5LXRydW5rCisyNjAyNiBmNjNmMmJjOGJkYmE2ZjBkNWQ4ZTQyYTNlZGU3YjUwMzRiMzU3Mjg3IGxlZ2FjeS10cnVuaworMjYwMjcgNDVkYmZjZjBmYTE5ZmJjYjgwN2E1NmIxOWVlNzE1NWNjMWNlMDU1ZCBsZWdhY3ktdHJ1bmsKKzI2MDI4IDUzMmMyN2E3MzViN2I5MjViNjY4ZGQ5ODEzYWE5Y2M5NGU5ZjM0OTQgbGVnYWN5LXRydW5rCisyNjAyOSBkOTcxZDFlYjcyZjZlMjRmZmFkOWI5YTlmNmE5MDI0ZGJmYTdiZTI5IGxlZ2FjeS10cnVuaworMjYwMzAgM2UwZGE4NDkzOWQwYjMzNDA2YmNlYTA4MzYyYzYwZGRhN2EyZTRmOSBsZWdhY3ktdHJ1bmsKKzI2MDMxIGJmM2IwN2M2MmNmN2JlMjRlNDY5ZTNjNDE4YmE2NTQ3NGY2OGJhNjAgbGVnYWN5LXRydW5rCisyNjAzMiBmYzJlN2UzOTdiYzY2YmY5N2E4NjA5MDE3ZGViNDNkM2I5MjIwNWMwIHJlbGVhc2UyMi1tYWludAorMjYwMzIgNDA0NWU2ZTkyZmFmYWJhZDQyZjZjOTk4OWI2NzA3NmZiYWQ0NTJjYSByZWxlYXNlMjItbWFpbnQKKzI2MDM0IDg2Y2U5ZWUxNDA0NTBlMTZhNWJhYmZlMTRkMDNhNTdiNTZjNDAwYjYgbGVnYWN5LXRydW5rCisyNjAzNSBiOTY3NDBjNDJlODA3MGI3MmQ0MzE1NjQ1NjA4OTQ1OTEyODM2NTVmIGxlZ2FjeS10cnVuaworMjYwMzYgOTExZmUwNzkzMDUwNDY4MTMxYWE3ZDkyYzdkODY2YWNkNzc5Zjc0ZCByZWxlYXNlMjItbWFpbnQKKzI2MDM3IDU3ODExYzM1NWYzYWJjZWU1N2IzMzMwNzE4ZTY0MmM5ZTExYmY1MjEgbGVnYWN5LXRydW5rCisyNjAzOCAwYjU4ZWEwNzQ5NWNiMDdlYjhmZmNkOGZhZTRlODc4MmVlM2M2YjhmIGxlZ2FjeS10cnVuaworMjYwMzkgODgxYTZjMmQ1ZGIyYjhjZDZmYWJlOGZjYmJiMTkzNTZiOTdjOWEwZiBsZWdhY3ktdHJ1bmsKKzI2MDQwIDE4Y2ZlZjAxMWFiZTdlNjhhZjVlMGZiZGZjY2NkOGY4MWNjOTM0Y2MgbGVnYWN5LXRydW5rCisyNjA0MSA0ODhiOWIzZjU5OWFkNDEwZGIxYzEyNjc1OTdjODVmYTliZTQwYzkwIGxlZ2FjeS10cnVuaworMjYwNDIgN2MwY2NhYzk3ZjhlZmQ3ZDg1NjgxM2NlNGM4NTRkM2VmMzNmMTg2MSBsZWdhY3ktdHJ1bmsKKzI2MDQzIDEyMGU0YmEwNTUwYmQ3MDk3OTc5MjkxYjg5NzE5NWRkOWRlMmY4ZDcgbGVnYWN5LXRydW5rCisyNjA0NCA0NGJlNWU3NGYxNzI3YmU0NTU5MGNmMjIxZGJlYjg4YmY5NGNkYjI4IGxlZ2FjeS10cnVuaworMjYwNDUgNmYyZjFiMDRlODJlMGRjOTZkNzA1MTg5NzczYzQ4OGJjYzNkNDg4ZiBsZWdhY3ktdHJ1bmsKKzI2MDQ2IGZkMWI4ZWJlNGVhZTQ4YjZkNDdhMTg4MDMyNTM5YzIwZjYyMGJlYmEgbGVnYWN5LXRydW5rCisyNjA0NyBiNDU3NjM2NTM5ZTgwZDUxMTExYjBkOGY1NTY2MDJjOTViMDVlN2MyIGxlZ2FjeS10cnVuaworMjYwNDggZjhiZDkzMDY0NGFhMzQ0ZTU5NjllZmViOTRjYzYzNmM3MzE0NjBmNiBsZWdhY3ktdHJ1bmsKKzI2MDQ5IGVlZTMzNzJjMmY5NjJkNDg1NTI5MmFhNTRkNDcxNThmZTgwMDVhOGQgbGVnYWN5LXRydW5rCisyNjA1MCBjMDU5NmY4NGE4ZmIxNDliMzc4MzcwOWQ5NTE2MjhjZDZlYjE1MGI2IGxlZ2FjeS10cnVuaworMjYwNTEgNjE0MTY3ZGYyMDk2MGE2MmJjZGNmY2Y2MGZhZDlkZTk2ZjM0MWU1ZCBsZWdhY3ktdHJ1bmsKKzI2MDUyIDAwYjI5NzJhYjRhNGIxYTFiM2U5OGE2OTVmMmYwOTU1NWJlYmJkOWMgbGVnYWN5LXRydW5rCisyNjA1MyA1YWUzYzMxNjczZTRkZDY2MjFhN2ZmNzAzOGJkZjZlYWIxYzI5MWMyIGxlZ2FjeS10cnVuaworMjYwNTQgMmMwMmNmMjc4ZjAyODJmMTdlYzk1OWFkNmQ5ZmMxMzA2NTRkZDcxZiBsZWdhY3ktdHJ1bmsKKzI2MDU1IDU5NjE2NzY0N2JjZjU3ZGE0NjI1OWFmNjNjYjM1MDU0MzkwNTkwZGMgbGVnYWN5LXRydW5rCisyNjA1NiAxNzM4NzEyOTMwMzQ0YWEyNGM0MzEzOWNkMjk1MzNiZTVmM2UwNTFiIGxlZ2FjeS10cnVuaworMjYwNTcgZjA1ODNiMWU5M2FiMGY4YTUyNjNmNGQ2MzlhYzJjNDI4NjdhYjM3YyBsZWdhY3ktdHJ1bmsKKzI2MDU4IGZhMGYzNWY5NDRiNTYzMDBkNGFmYTk4MzBmM2IzYWJkNWYwNjdhMDIgbGVnYWN5LXRydW5rCisyNjA1OSA2YmI0Mzg2YjExMTEwMzM0NGNlODgzM2IzNzIxY2YyNzNiYmVkYWMxIGxlZ2FjeS10cnVuaworMjYwNjAgYTRhMWU2ZjU1NTMxOGFlMDIzNjMzMzU3ODkyMjA3MzFkMGQ4NWZiZiBsZWdhY3ktdHJ1bmsKKzI2MDYxIDM1ZjU4YzI5Nzg5OTY0NGNjMzc5MTZiNjFlNjkzN2U0YTkxMzY1ZjQgbGVnYWN5LXRydW5rCisyNjA2MiAwZWVjZTczYzEzYzA4ZGVhZDc0YTA5NWU0ZjgyZDFiZTFmZTBjYjI4IGxlZ2FjeS10cnVuaworMjYwNjMgY2YxYTA1Yzg2NTk1YzEwY2IyMGE0ZmIxNTMwNmNlYTlhZGE2NzU0ZiBsZWdhY3ktdHJ1bmsKKzI2MDY0IGYwN2NhOTk3MjMwNDA4OTI5ZDI0MzFkNTRjOWM2OGFjNjIzMzhhZGUgbGVnYWN5LXRydW5rCisyNjA2NSBlMGVlMDA5NDE3ZGYwNzNlZDFlNDBjNzllYzBlYjljZDAzY2NlYzM1IGxlZ2FjeS10cnVuaworMjYwNjYgMThkY2NkZjJjNDZkODAyNzRlYmJkZDljM2I5ZTM1NjVlNDU3MWY2MyBsZWdhY3ktdHJ1bmsKKzI2MDY3IDg3MDNkMjA1MjMzOTk4NjZmMjkxN2M1N2VjMjUwZjIxZGM3Y2NjYTYgbGVnYWN5LXRydW5rCisyNjA2OCAxNGViZDc2MTA5MDI2Y2FjYzdmM2QzNDc3MmE1MmE5NjA0ZDM3OGUwIGxlZ2FjeS10cnVuaworMjYwNjkgZGMyZjc0NWZjYzY3ZTgyYzdkZTQ0Y2VkZmQ0MmZjZjVjYWI5Mjg1ZSBsZWdhY3ktdHJ1bmsKKzI2MDcwIGFlYTZkZmVhYWFiODQxNjkyYzAyODhkMDBmNWNiMzEzZDczMmU3MTAgbGVnYWN5LXRydW5rCisyNjA3MSAzYWE0YmY3YWMzMWU5ODVmMzUxM2E4NjdhNDcxNzE1MDU5YzU3YTFmIGxlZ2FjeS10cnVuaworMjYwNzIgOGEyMjViZDg3NjNhZDBmZDYwYmRkMzc4OWFlZjllYTRlZDhjOTE4ZCBsZWdhY3ktdHJ1bmsKKzI2MDczIGNhNDY1ZTRkODhiYzFmNzJiYzM2OTM0ZWEzOTVmOTczNDUxMTkxZjMgbGVnYWN5LXRydW5rCisyNjA3NCBiMzgzZGZlMzZlZWU3ZGVhMzZmYjMyYTYyM2U5NWIxYTgwZjIxMDQ0IGxlZ2FjeS10cnVuaworMjYwNzUgY2M4YjczMDQwZTgzN2Q2YmVlMzA3MTE4N2UyZTg2ZDY5NTRhMDMwMSBsZWdhY3ktdHJ1bmsKKzI2MDc2IGNlY2E2Y2M0NDQyMDhjMTA4Y2Q2OTg3ZTI4NDI4MmQ1MDE4MjZlYWYgbGVnYWN5LXRydW5rCisyNjA3NyBlMGVkZmVlYTUxODNiNDYzMDE3MzcyNjgzYWY5MDgyNzUzYjYxNzZiIGxlZ2FjeS10cnVuaworMjYwNzggMjJmZGI0MTZiYTJmMWI0MjlmZWE3NjIwM2Q2YmZjMTEyMmJlYzkxNSBsZWdhY3ktdHJ1bmsKKzI2MDc5IDBiZGQ0MTNhMzQxNjliNDY5NDk2MWIwOTM5MjJhNjE5OGRmNTQyYzMgbGVnYWN5LXRydW5rCisyNjA4MCBjM2Q2MzczMDg5NTRhMzEyM2RjYTg3YWZhMzlhNTMyZTcwOTVhYzZlIGxlZ2FjeS10cnVuaworMjYwODEgZmEwYWM4NDU5MjliMjFlMGVjZTY1YTBhNmI3MzMwOWZiNmE5NWViZiBsZWdhY3ktdHJ1bmsKKzI2MDgyIDZjNGIxOTMwMTZjNjc1YzFjNTAzMGMzMTc2NzlkYWE5MDRkNDgwYWYgbGVnYWN5LXRydW5rCisyNjA4MyAyNTNkZTU4OGYyZmI2NWUyZjE3NGNkZGQ5MjNhZWY4MjU2YjY3Yjc5IGxlZ2FjeS10cnVuaworMjYwODQgYmE2OGRkYTE1ZGYwNjg3ZWNjYTEyMmU3NmIxMDNkYTZiZjBmZTI0MyBsZWdhY3ktdHJ1bmsKKzI2MDg1IDFlMzA2MmU2OWYyY2MxMTAzNTlkMTU0ZTYyYzJlYTdkNDE2OTRiYzcgbGVnYWN5LXRydW5rCisyNjA4NiA5YmFhOGM5YTFlODQzYTk4MTM5YmVjYjY5NTkwODVkOTM4YmFjNmFjIGxlZ2FjeS10cnVuaworMjYwODcgZmE5NTU5YzViMTAzNzE1MzI2NDM2YmEwZjU0Njc2MmQ1Y2Y5YjJkZSBsZWdhY3ktdHJ1bmsKKzI2MDg4IGM4NDExMGYwNWRjMzZjNDcxOTc2MDFmNjllZTYyM2M5Y2I1ZjViM2UgbGVnYWN5LXRydW5rCisyNjA4OSAwOTczNjkzZTRhZDIxZDY4OGIzYTQ3NzcxOWI2YWY1N2U1MGVhMTE3IGxlZ2FjeS10cnVuaworMjYwOTAgMTRiNzk4NmE5MmUxMDM4ZmE5MDJjNDA2OTE2M2U3MGFkYTZjYmExNCBsZWdhY3ktdHJ1bmsKKzI2MDkxIGNkZmYzYzdjMWE3NjQzNzkxMGY0MTljZTA0MzVjYjlhZjFjZjc4MmMgbGVnYWN5LXRydW5rCisyNjA5MiA2OTMxZGJkMmVkYjQyMWRiNTIzZTJiOWNlNmIwNzkzZGZkOWRhYWI0IHJlbGVhc2UyMi1tYWludAorMjYwOTMgMGI2NDU1MGE3NDYxMTVjNDdlYjZlODM0MmZmMmMzYWI4ODRiMGE3NSByZWxlYXNlMjEtbWFpbnQKKzI2MDk0IDAwMTU0YTBmZGU2MTc1YTRjODU0ZGY2Yjc1N2IzNDgwN2M1NjRjMmEgbGVnYWN5LXRydW5rCisyNjA5NSBkMjQ2NzAzODRjMzljZDI2MGM0MGVmZmZiYzM2N2NhMzNlZDVkNGYwIGxlZ2FjeS10cnVuaworMjYwOTYgMWFlNDIzMjYyZmM5ODY4MTVlZDk2OGFjMTljNjc4OTA0YmRjNjQ4ZCBsZWdhY3ktdHJ1bmsKKzI2MDk3IGYwMmVhOGU4MjRiMGMxMzc4OGUxZTE0M2JkNzYxMjI4NTNjM2Q3ZjAgbGVnYWN5LXRydW5rCisyNjA5OCA3M2U4MjcyMmIwM2MzOTJmMTU2YTFhYjA1OTdkNjNiNTlkZDRiN2U5IGxlZ2FjeS10cnVuaworMjYwOTkgODEwYzE0ZjI0MzczNmQ5MjJiNzIwMzNhZDFkOThlYjAwZGQwNzRjYyByZWxlYXNlMjItbWFpbnQKKzI2MTAwIDgyNmJjMTUyMmQyMjEyYzNmNGViMzAwMDc5MWJhNDZkNDBkYTc0YjEgbGVnYWN5LXRydW5rCisyNjEwMSBlNDQ5YzgxYzFjMDFmNGUwMmM1MGU4YmMxNTZjMWUxM2UzOWNiYmQwIGxlZ2FjeS10cnVuaworMjYxMDIgMjcxZDYyMWYwZTlmZGYyMmRhODNhODI4Y2MxOTU1MWJkZTQ4NjAwYSBsZWdhY3ktdHJ1bmsKKzI2MTAzIDc3MWIyYThkNDQ1ZGMzMjFhZDU3M2Y3OWIzY2Q4ZGI3ZDIyYWVmZjkgbGVnYWN5LXRydW5rCisyNjEwNCBmNTFiNzc4ODQwMTI4N2VmZTNlZjZlNjdkNmNlYzc5NGY2Y2Q0ZWFjIGxlZ2FjeS10cnVuaworMjYxMDUgNzM2MWVjODgxODhhOTFlMWExZThjNGJkNGZlM2Q1ZGRiZTU1Yzk2ZiBsZWdhY3ktdHJ1bmsKKzI2MTA2IDI4MGU3YTIwZTMxYTVjODY4MzRhYmU0YWE5YzIzMDliMWY5NGM5ZDcgcmVsZWFzZTIxLW1haW50CisyNjEwNyBjMTE4ZDA5NWJkZGViNWRiMTczNmNkYWZmZDIyZDVjNzhjM2ZjNzVjIHJlbGVhc2UyMi1tYWludAorMjYxMDggZmVlMmY2NmYzYzE2NWVmMGMxNjE5MTRmYzJiYWUzOWVmNjUzMDI2OSBsZWdhY3ktdHJ1bmsKKzI2MTA5IDFiZGYyMTdiYWQ5MzA5Yjc2NjkxNmE0OGZhMGU3ZGZmY2JjMTBlY2QgbGVnYWN5LXRydW5rCisyNjExMCAyMjI0YWZjNjNhNWJiOTYzZmYzNTE0NDRkZDI0NGQxMDA2OTdiNDRkIGxlZ2FjeS10cnVuaworMjYxMTEgNTNlZDlkZDZiY2Q1ZDQ5MDllNzk5NDM2MGYxZDgxMDdiNTRiMzk2NyBsZWdhY3ktdHJ1bmsKKzI2MTEyIDUyMjQwNWFiMzVjMWFkMmM2MjI4YzA1NjI2ZDZmYzhmYmZhYThjYWEgbGVnYWN5LXRydW5rCisyNjExMyA0YzEwZjE2OTI1MjMyNjQ1NzlkMTYwYmZiNjdkNDllNDIzOGE2NmYwIGxlZ2FjeS10cnVuaworMjYxMTQgNDA4MWVmZjkzMmZlMjg3OTI2YjNjYzkyMTIyNTk2NWRlYzI5NTlkOCBsZWdhY3ktdHJ1bmsKKzI2MTE1IDJhYTk0OWQwMmQ0MDUzMjhkMzEwNGM0MjU3MjM4Njk5MDE4OTFkNjAgbGVnYWN5LXRydW5rCisyNjExNiBjYjVmY2EzY2U3OWE5ZmE3OGM2YTcyYTc5MDg4ZjA3ZDVhMWNkZmQ1IGxlZ2FjeS10cnVuaworMjYxMTcgZmQ0NDk5OWU3ZWFkNDIxN2ZkNTEzZjUwODVkYWRmNTkwNjIxNTRkZiBsZWdhY3ktdHJ1bmsKKzI2MTE4IDY4NzFlNjc0NWFhNTQyMTBhOWIxMDJjZThjYTNjNDc1NDhiZTNmMjggbGVnYWN5LXRydW5rCisyNjExOSA2ZmE0NmMyMTc2NmQ5MjMxZGRhYThkYzdjYWFmZGE3NDFiZjYxNDg5IHJlbGVhc2UyMi1tYWludAorMjYxMjAgZTcwYzliN2FhZjNkNjg5NjRlMWZjM2M5NjJlMjU0NzU0ZTVhNGRmMiByZWxlYXNlMjItbWFpbnQKKzI2MTIxIDg3MTk4NjYwMTRhYjM2YTkwOWY3NTYwYjI4ZTQ2NDJhYTYyMTBjNjMgbGVnYWN5LXRydW5rCisyNjEyMiA5OTMxZjE1NGJlOTg4ZjVkODhkNGU5ZWQwYTg2NWRlOWQ3MTcyYTlmIGxlZ2FjeS10cnVuaworMjYxMjMgODE3YjQ5NGM5YjVlNDk3YjRmZDAwMzc5NzBhYzBhNGUyYTJhYjdhNCByZWxlYXNlMjEtbWFpbnQKKzI2MTIzIDViNTQ2NDBlNzJiNjZiOGMwODU3OTVlMjhlZjc1NmQ1OGI5NTVjNmMgcmVsZWFzZTIyLW1haW50CisyNjEyNCBhNzg4NGQ3ZDJkNDg5MDBmOTVkMmQwZDQ2YWY5MzRkNDQ5MzE5MTI4IHJlbGVhc2UyMi1tYWludAorMjYxMjUgMzQyODIyOWYxMmJiMTlhMjg2OWMzM2ZiNDJlMDllODUzNDJjNzQ1ZSBsZWdhY3ktdHJ1bmsKKzI2MTI2IGFkM2NlNzMwMTZiZmFhMWJjNmNjNWU2Njc3YzllNzY3MzYzYWQxYzAgbGVnYWN5LXRydW5rCisyNjEyNyBkMjZkODU3NWFjNjIxY2YyZmM4ZWQ2Yjk4MmVhYjMyOWJlNGU4Zjg0IGxlZ2FjeS10cnVuaworMjYxMjggNTRlYThhOTNlY2Q3ZTYyMTk3YjNiNmYzMzJkZWNhZjhlYzIzYjM2YSBsZWdhY3ktdHJ1bmsKKzI2MTI5IDNhNTA2NTAwNWZjZmQxMjExMmFhMmIzMmNkMzY1YTU4OGE1NTk1MTQgbGVnYWN5LXRydW5rCisyNjEzMCA5ZjUwOWU0OTBmY2M3OWNmZmVkZGIyZDRmNWYzZDYxZWI2YmYzMDhlIGxlZ2FjeS10cnVuaworMjYxMzEgMzE0ZTE0MTZhYTVkNWY1ZGNjZTYwMWI0YTU2NmUxOWE2NDJjNThiOSBsZWdhY3ktdHJ1bmsKKzI2MTMyIDI2MGExNzIwZjYyOWM0ZmYzNzAxYWI0YTRkNjYyMzY2ZDY1YWUxNTggbGVnYWN5LXRydW5rCisyNjEzMyA1OWQzOTEzYTI5YzQ0MzkzMjNjNzQxMGE3YmI2NDhjOWVlYzI0ZmM5IGxlZ2FjeS10cnVuaworMjYxMzQgYTZmOGUxMjg2YjE1NTZlZGVlYmQ1MTIzYWUwNGQ2NmQ3NzJhM2I2OCBsZWdhY3ktdHJ1bmsKKzI2MTM1IDAyZmRkZjdjMjVjMmRlM2UzMmJmMDc4MTgzMzI3YjM1MDNhMGYzYjkgbGVnYWN5LXRydW5rCisyNjEzNiA3NGRlODY0MTgyODQxMGUyNTYyZGI1N2Y3MjY0NmNmNWQyYjE2YzE4IHJlbGVhc2UyMi1tYWludAorMjYxMzcgZDZlZjk1N2JmMjkwZmM2ZTY1ZjcxZmQ3MjM0MmM2OTQxNjFjYTJlYSBsZWdhY3ktdHJ1bmsKKzI2MTM4IGE2YThjNjllYzBlN2M1OGUxM2I5MGNiNWJhZWVjZWZhNjNjYzUzNjcgbGVnYWN5LXRydW5rCisyNjEzOSAzNjE4NmFmM2MxMjUxNjRhNzBlYTFmYWQyYTU3YTk3MjcwZTZiOGNhIHJlbGVhc2UyMS1tYWludAorMjYxNDAgMTQ5ZmJiYjAzOTE1NzViNWY4ODViN2M5MmUwNzI5ZDk2YWNlZmE4NSByZWxlYXNlMjItbWFpbnQKKzI2MTQxIDVmN2Q3MGFiNzRlZWZmZGZjZGRlNzIxY2RhNWZhZWI3MTVjNGFlZTggbGVnYWN5LXRydW5rCisyNjE0MiBlYzY3ZmNlM2ZhM2NlZDRhM2M4ZDhjYzQ4Yjk2NTcwZmYyZmNkZmJmIGxlZ2FjeS10cnVuaworMjYxNDMgZDk5YTFkZGY5NTE4MDUxNzhkOGYxODVhN2YzMjZhODJiM2ZhMWJlMSBsZWdhY3ktdHJ1bmsKKzI2MTQ0IDAxYzVhZTZmYzViYmJhM2E3ZTFhYTE1N2M2NmQxZTU1ZTkzZjMwZGUgbGVnYWN5LXRydW5rCisyNjE0NSAwYjJjMDg3NTQyYmNiZmYzNzA0NjIyMzQ5YWJiOWQ5YzViNWIwNmJjIGxlZ2FjeS10cnVuaworMjYxNDYgYWE4ZDU5ODIzYWRkMWE4ZTdmN2U4YTdmZThjN2Y3MTBhOTdlM2M4YiBsZWdhY3ktdHJ1bmsKKzI2MTQ3IGE4Yzc1Y2Y3NGRjMTQxMTJjMGVjODBjMmMyZGJmNjVhZmM3MzlkYTggbGVnYWN5LXRydW5rCisyNjE0OCAwMjhlYmM4ZmIzOTA4YThjZGI3YTk0MGJlMWExYzQ1YzQ0MTcyODY4IGxlZ2FjeS10cnVuaworMjYxNDkgMjIzOTZmNzdjMzU2YWEzMDlmYjhmMDIwYTY4OWQ4NDM5YTQzM2I5MSBsZWdhY3ktdHJ1bmsKKzI2MTUwIDk3YTM0NjQzZTU0NGE5NzA1ZGRkZDQ4NzgxZDgyMTgzMjEwNTExMmYgbGVnYWN5LXRydW5rCisyNjE1MSAwNjY2OGQ4ZDkzNDNmNDY0ZDkxMDhkM2QyY2FiYWU0ZjU4YjM5YjY1IHJlbGVhc2UyMi1tYWludAorMjYxNTIgOWFjYWI3NmIwMDE3OGQ2NDg3ZDY0Y2IwMGQyZWE4NTAwM2EzYTM0YSBsZWdhY3ktdHJ1bmsKKzI2MTUzIDE5MjI5MTVjYjczZDdhOGFjY2M1MWZmOTVkNTQ4ODA4MTllZjZmNjIgcmVsZWFzZTIyLW1haW50CisyNjE1NCAzYzg3ODE0OTJkMWZkYjhiYTM5NTBlMmU5NGE0Zjc1ZWViMmU0YTdiIHJlbGVhc2UyMS1tYWludAorMjYxNTUgZjY2M2ZmYmU5ZTVjNDBkNGEyYWM1OWU4YTg4ZDVmMDhlYTkyYjhhZCBsZWdhY3ktdHJ1bmsKKzI2MTU2IDRlZDA2ZjhhYWRkMzc4NjMyODhlMzZkYWE2ZWUzMTZlNGJlOWJhZjIgbGVnYWN5LXRydW5rCisyNjE1NyBhYzVlMWQ5MDI5Yjc5NDUyNmM3ZDMyMDgyYzdlMzA4MGQ5YWU4ZTExIGxlZ2FjeS10cnVuaworMjYxNTggNjkzZTAwMTY0MDgxYWVkY2NjOGNmNDc1MDJmODg0OGU4Y2I2ZjE1NSByZWxlYXNlMjItbWFpbnQKKzI2MTU5IDBlYjgzYWFjZTA3MTY2N2RhOTVhODMyZmRlYWFhODZmMzZhZjM4ZWMgbGVnYWN5LXRydW5rCisyNjE2MCA1OGIyZjQ2MjZiNjRkNzhhMWYxODQ1ODc2MjQ3MWY4NDU1ZGQxODlhIGxlZ2FjeS10cnVuaworMjYxNjEgMjEwMDg4N2I0N2NiYjliZTJjZmVjMWYzYzhiNmFjZGRmODFmMDg1ZiBsZWdhY3ktdHJ1bmsKKzI2MTYyIGYwMjc3MTQ2YWExNmRiNjQ5ZjdkM2Y5YTcyZjliNWFhNDQ4ODVmOTMgbGVnYWN5LXRydW5rCisyNjE2MyAxN2ExNzUxYWQxZDkwMjFmZWE4NGExOTYwNWMzODk5YjdkZmRmNzdkIHJlbGVhc2UyMS1tYWludAorMjYxNjQgMjFmMzUzMTI0MTQ1YzQzYTM5MjFjODIyNWU5ZTU1NzMwNWNmOWFmZiBsZWdhY3ktdHJ1bmsKKzI2MTY1IDc3MzQzYWEwM2UyZjM2M2M3YjQxMDQxNjEwZjc4YzgzMzRjYjYxZjUgbGVnYWN5LXRydW5rCisyNjE2NiBmMWFmOGFkMTEwMDBhMDg5YmUwZjlmZGI1YmEzNzJjMTk4MmMxN2EzIGxlZ2FjeS10cnVuaworMjYxNjcgYzgxNWUwMDNkYmNkOGJkNWMwY2U0NTg0NDExNGY2MTdmNjU2YmU0YyBsZWdhY3ktdHJ1bmsKKzI2MTY4IDg4MmVhNWNjNzY4N2FiYmU4ZjRjNzBjMDI0ZDg4YThlM2FkNDMyOTcgcmVsZWFzZTIyLW1haW50CisyNjE2OSAzMzM3YzQxYzEzMmIxMTRhOTRjNTJiNTBjMTg0ZmQ5ZjJjODAyNDJhIHJlbGVhc2UyMS1tYWludAorMjYxNzAgMmI3MDI1YTIzMmUxZjdmNDk0Y2M5OWIzM2NmYjU4OTMyYTZkM2UyNCByZWxlYXNlMjEtbWFpbnQKKzI2MTcxIGEzYmYyYzk3ZTgwOGU0MTY0OGQ2NGIxYTVmYTY5M2YxMWI4OGY3MTMgcmVsZWFzZTIyLW1haW50CisyNjE3MiBkZDg5ODhjYTRiMTQ2NmQzNjdhMThmY2MwZmVhODYwNTYxNDUwNmRhIGxlZ2FjeS10cnVuaworMjYxNzMgMTJiMDAzYmU1ZDk2YzUzODk3NzA0N2EzMmY2ZTVhMWZhZTdjMmNkMSBsZWdhY3ktdHJ1bmsKKzI2MTc0IDUzM2NkNTE5NzU3NWRhNzdjMDdmMTFhNjZhNWQzNjIzYjA1OWZlNzAgcmVsZWFzZTIyLW1haW50CisyNjE3NSA0M2VlNzM3YTFiN2YxMGFhYTBhOWJkNTkyMjhmMzdiNjg5ZGYzY2Q3IHJlbGVhc2UyMS1tYWludAorMjYxNzYgMzUxNTc2NzEyM2Q4YzhjZTUzOGZhMmUzNTFmNmQ4NmVmYWExN2IzMCByZWxlYXNlMjItbWFpbnQKKzI2MTc3IDM1Yjc5ODQzODUyN2ViNjJmZDc2MmI2YjQ1ZjViOTg2MDdhNGFkZmIgbGVnYWN5LXRydW5rCisyNjE3OCA2YWZmZmZmMWZmZjFlZWE1N2ZlZDAzMjI2YTQ1OTUxNDZlMGZhNzg1IHJlbGVhc2UyMi1tYWludAorMjYxNzkgNDNjZWUxODE4MjQyMGExY2M2ODUzYzYwMzI5Yjk1NDRmNTRmZTYwOCByZWxlYXNlMjEtbWFpbnQKKzI2MTgwIGMxYWVjNjMyNGFkNTRlMGE4ZTUyNjJmZTNjZTNiMWE2YTI3NDg2MWEgbGVnYWN5LXRydW5rCisyNjE4MSAwYWNmNjgyMGQ5ZTM1MTAzMzU3M2I2NDg4ZWE3NmU2M2EzZTA3MzIwIGxlZ2FjeS10cnVuaworMjYxODIgNDJjYzg3YzQwMTAzNmIxZjMwNjdiOTVmNTU4ZmJhYWRhYTVjY2Y5YSBsZWdhY3ktdHJ1bmsKKzI2MTgzIGM1NmVhYWQzYTBiMzlmMmFlMGY1MzgyNjUwNDJlNjJiYmU1ZjQxM2EgbGVnYWN5LXRydW5rCisyNjE4NCBmODlmMjAxMDg3ZWE2NzVhNTExYjg5YjJhYjI2Yzc3NWZhZmIyYzIyIGxlZ2FjeS10cnVuaworMjYxODUgZjY4ZGRmN2YyMWY4NGE1YjVlMGUyNDJlZDczYTc0NzVjOGYwODE2MiBsZWdhY3ktdHJ1bmsKKzI2MTg2IDhiYTQ5OWVjYzZjOTEyNGM2MDQzYWViNmZlMzI1Mzk0MmQ5OWFiMTggbGVnYWN5LXRydW5rCisyNjE4NyAyOTU1MWY3NDdjMGVkOWQ0NjcxOGQ4NDRiOGVjYzlhYWFjOTZmNzY5IHJlbGVhc2UyMi1tYWludAorMjYxODggM2I2ZjQ4YjU0NjY2ZWNmYTEyMWVhMTY5NjZhNGI3MzQwZjczMmQ5MyBsZWdhY3ktdHJ1bmsKKzI2MTg5IGFhZjU3MmUzMzRjM2M4YmEzOTQ5ZGFhMTM2YWNiM2I0ZmJmMjM1YzYgcmVsZWFzZTIyLW1haW50CisyNjE5MCBkM2NmMzgzZGYwOTZjMmM4Y2U2NTQ1YzA4NDM3MjMwZTM1NzMzOWZmIHJlbGVhc2UyMi1tYWludAorMjYxOTEgYTlkZDVlNmQ2ODA1NjNlMDc4NjNkNzRmN2Q1OGMyODAzMTE3NWYwMyBsZWdhY3ktdHJ1bmsKKzI2MTkyIDNhZjhhYjFiMDVmYzdmMTI5MDIzNjZmMTNiN2VhNTg2MTdhNzNiYzUgbGVnYWN5LXRydW5rCisyNjE5MyA1ZWRhN2RiMDA3ZDZkNzhlNjgxMTkxNmUzMDVjODM2YzA1NWM0YWUxIGxlZ2FjeS10cnVuaworMjYxOTQgYzg2NWNmOGJlZTQwZDY5NTFiMDMyMWQyNjBjZjEzMjg3ZDMzZmRkMCBsZWdhY3ktdHJ1bmsKKzI2MTk1IDA5MDg3MjllOTRlMGYxNWYxZDZkODcwMDE1OTc4ZTY5ZjM5YWI2ZmYgbGVnYWN5LXRydW5rCisyNjE5NiA3M2QxNDViZmQ4ZTQ1ZTBiMGNjMTg5OTZmNGY0MWY4OGY1YmRhMmY0IGxlZ2FjeS10cnVuaworMjYxOTcgZjFmNTdiZjA5MDkyZWJlNmMyNjk5MzNjODc1OTUwZTE4NzkzMjliMSBsZWdhY3ktdHJ1bmsKKzI2MTk4IGVmMmZiY2U3MTczNjlkZmNlMDgwNzUwY2VlMjNmNGU4ODgxYjY3ZjIgbGVnYWN5LXRydW5rCisyNjE5OSBkNzUzMTMwNzQzNTU1MWEwZGI1ZjU4NzIwYTcwYjQ5ZjAxZGFhYTBhIGxlZ2FjeS10cnVuaworMjYyMDAgMmVkZGNlNDRiM2JlZGJjNzEyMDUxMjg1YmZkY2U5ODg1OTVjMzlkMyBsZWdhY3ktdHJ1bmsKKzI2MjAxIDE4Njk2ZmMzNTA2MmY2MmFhNDBjMTM4NDkwNDFkZGMwNzI0NWYxMDkgbGVnYWN5LXRydW5rCisyNjIwMiAzOWVhMDlmZjU3MzRlY2NkZjFjNjI3MmU1ZjE1MmIzZmRkYWM4ZmZiIHJlbGVhc2UyMi1tYWludAorMjYyMDMgMDc5YWJlMDVlOGJjODFjM2Q4YjkyNmVhNWJhZWMxMTkwNzdkMzFmYyByZWxlYXNlMjItbWFpbnQKKzI2MjA0IDM4Mjc5MWRkY2UxYzE4MzJmMDUwZjVlNmRiY2ZmOTA2YmUxNzY2YTIgcmVsZWFzZTIyLW1haW50CisyNjIwNSAyMTZkYWQ3MjA5YmM3MDEzMmNhMjI5YjkyMGQ5NGFiMjQ0OGViNzIwIHJlbGVhc2UyMi1tYWludAorMjYyMDYgZDcwMjk2Nzk0MzVmN2VjMjkwNjBjZTE4MDU3ZTE0M2U5NDU1YmRlMCByZWxlYXNlMjItbWFpbnQKKzI2MjA3IDY4MDcxYTcyNjk3MDZiODFiYTU3OTUxNjY0NGMwMzFhZGI0YWNlZDIgcmVsZWFzZTIyLW1haW50CisyNjIwOCBmNjA5M2JhYzlmYjY0ZmUzNGYyNWI2ODRmNzVlNjRhZjc3NjRlODc1IGxlZ2FjeS10cnVuaworMjYyMDkgZTU4OWU0NzNmMjMyZmJmNzdmODllODQxOTc4MDFkZDc5OTVkNDBiYyBsZWdhY3ktdHJ1bmsKKzI2MjEwIGQ2ZDY0MjM5YWEwNTE1OGEyZjc4MzYyYjZjOGI2MjY4MzBkMTY5OGIgbGVnYWN5LXRydW5rCisyNjIxMSBmNjYwMGIwZGI2ODhhNzc2ODBjMDAxZmYwZjdlNTBmNzQ3NzQ4Y2M4IGxlZ2FjeS10cnVuaworMjYyMTIgZWQwMzgwNmQ4OGNkYzk3MjllZjAwNWI5MGQ0Y2ExZjI4MGI2MzRlNiBsZWdhY3ktdHJ1bmsKKzI2MjEzIDZlOWMwZDliZGQ3ZmQ0YTYyNDE3ODdmNDRjZWZlNGE3ZmU1YzJhMWMgbGVnYWN5LXRydW5rCisyNjIxNCAxODhiMGZhMjgwMDdlODZhOThlNTEzNWMxZjAyNWJiNDQ5MjYzMjZlIGxlZ2FjeS10cnVuaworMjYyMTUgMzJlZWM2ZDc5YzkzZjJhYjUxMjYyODE1MGQ0MzZlYjg5ZmRiYjMyNyBsZWdhY3ktdHJ1bmsKKzI2MjE2IDQxNmRiOGQ5NjIxNmI5MTFlYzhhOTU1NGY3NWVjMzNhYTQyNWFjMzEgcmVsZWFzZTIyLW1haW50CisyNjIxNyAyNzNmNTFmNTIwMDAxOTE3ODQ2ZDQ1ZDJlYzgyZjFiZTEwNTBhMzNkIHJlbGVhc2UyMi1tYWludAorMjYyMTggZTI0YjhkMGI2NDcwNGIxMGNlM2IxNTA0MDhiMjE0ZTNkZGJmNzE3NyBsZWdhY3ktdHJ1bmsKKzI2MjE5IDIyZjdlZjdiYTcyYmE0NWNlNTY5MTU5ZGVmNzdkM2Q0NTYxODJmNjggbGVnYWN5LXRydW5rCisyNjIyMCBiYmYwNWFmM2MxOTEzOGQzNTcxNzI1Mjk0Y2Y2ZDIzZGE1ZGE2NzQ0IGxlZ2FjeS10cnVuaworMjYyMjEgMDQzNjdjZmY4Njg5NWY2Y2NiNTgwZjcyZTIwMWNhOTcxYjkwOTg1ZiBsZWdhY3ktdHJ1bmsKKzI2MjIyIGE2NTI3ZDFlZTQ3NDI4YWI2MjI1NjlmMTc3YWJlZDI1ODZlZDQ5NzEgbGVnYWN5LXRydW5rCisyNjIyMyBmOTIzNmNhZDY5ZTYyODBmYTg3NzI0YjdjNGNmZjQ0NjU4NTg4NGY0IGxlZ2FjeS10cnVuaworMjYyMjQgNmY4YTVhZDM5ZTZmZTcyZTFmMGUxMDg1ZDBjMmU1YTdkNDE1ODRjNyBsZWdhY3ktdHJ1bmsKKzI2MjI1IDY4MDRlNDhhMDAzM2I0NjY0NWI4NzhjZDFhNDkxZWM2NjE3NDVmMDQgbGVnYWN5LXRydW5rCisyNjIyNiA3MDE0OTIxODIwYTUxY2QxYWVlYWQzZDFkYTQzODI0NWFkMjM4ZjUxIGxlZ2FjeS10cnVuaworMjYyMjcgYTU2MWZmMWI0ZmZhMWZiYTk3OWUzMzEyZDE3Y2Q3ZDU5YWJkYmE1ZSBsZWdhY3ktdHJ1bmsKKzI2MjI4IGUyZjIxODdjM2QyYzFjYTc5OGVhZjk2OGFiOTUxMzYyNTI1MDRkZDkgbGVnYWN5LXRydW5rCisyNjIyOSAwMGU2NDBlNjgwYmQyOThkYzc3MDk3YzhlZTdkNzc0MTBjOTAzNjU2IGxlZ2FjeS10cnVuaworMjYyMzAgYjFmYTkwZjhiNmMyMTIwM2QwYmYwMzZkYjYyYTc0ZjBlZTk5Y2Y2MiByZWxlYXNlMjItbWFpbnQKKzI2MjMxIGM5MTYyNmQxZjQxMWYwY2JmYTI3NGFmYTE1YjBjMWM3NDVkMzAzNzAgcmVsZWFzZTIyLW1haW50CisyNjIzMiAyNTI0MzhiYjA1ZDk3YTg0YWQxZDg4MWNhNTJiYmFkNjg1NjlkZjEwIGxlZ2FjeS10cnVuaworMjYyMzMgZDQ2MmM3OTBjYzViZDc2OTc4N2Y5YjgxYjc0M2NiMzNlN2JiNzdmMyByZWxlYXNlMjItbWFpbnQKKzI2MjM0IDhkMzM3YjNiNjU1YTNhYTYxNzhhMjY1YjkxZWFjZDk0OGE3NmU5MGQgbGVnYWN5LXRydW5rCisyNjIzNSBjM2U5YTA1MmUyNjhhMDA3MGRhN2IyYTYyOWI3Y2E5ZDU3N2UxNDExIHJlbGVhc2UyMi1tYWludAorMjYyMzYgZTNkZTlkMTlmYWFhZmM2Y2Y4YTE4NDYyMTY2MmVjNmRmYzIyMDRjNiByZWxlYXNlMjEtbWFpbnQKKzI2MjM3IDFhM2IwODY2M2ViZTAxZTdiZjc5YTE2NjA1YzI3MmE0YjE5NDhhYjEgcmVsZWFzZTIxLW1haW50CisyNjIzOCBhNDFhMWUwMDUxYzVkNmUyMDJkZjI5ZDk1NGFlOTFkNzFkNGYwMjlkIHJlbGVhc2UyMS1tYWludAorMjYyMzkgM2E2NzE4YjliNjVhODM4YjI4NzZkNjlkMTExMWZkOWI2ODNmZmFhYiBsZWdhY3ktdHJ1bmsKKzI2MjQwIGUxNDIzZWM5ZTZlYzM2MmQwOTY3YTc1NDQ3N2M0YjdlYmI2MWQ5ZmMgcmVsZWFzZTIyLW1haW50CisyNjI0MSAzODlkNDI5YWRhNzJjNmQ0N2UyM2ZmMzczMmFmOWJmNjIxYTY2N2E4IHJlbGVhc2UyMS1tYWludAorMjYyNDIgNzkyODc1MWJmZGVlNTE4N2FiMzliNmI4OGE0YmIzODUwYTIwOWI4MyByZWxlYXNlMjEtbWFpbnQKKzI2MjQzIDViZTA2NzdkODEwZDAyNmE3OTU1NmQxYWQzOTc4MmQ3Njk2ZmQ4YjIgcmVsZWFzZTIxLW1haW50CisyNjI0NCBkOGJjNjhjYjE3ZTAzNzAxMjhiOWRlNGYzNTBmNDE0YTIwMjAwODA5IGxlZ2FjeS10cnVuaworMjYyNDUgNWQzODMwMDZkMzZiOWQzNjRhNTI0MmMwNjk0MmUyNjQ5ZjUyZTNkOSByZWxlYXNlMjItbWFpbnQKKzI2MjQ2IDI4OWVhMWQ1YzVhY2NjZGMxOWRmYTZlNzc2Nzc2MjRhYThhNjBiYTQgbGVnYWN5LXRydW5rCisyNjI0NyBjMGRkOGJiZGRlNjA0MDgzNDc5NWQ2NWEyZWE2YTQwM2EyOTE2OTZjIHJlbGVhc2UyMi1tYWludAorMjYyNDggZjk3NDczYjM0MGE1ODAzY2IwZGNjZjc2NGU0MzUwNzQyZWJjZDdjMiByZWxlYXNlMjEtbWFpbnQKKzI2MjQ5IDJiM2E2YTg0NGJmZmRiYjllOGRlODUzZmVlNTM1ODY0NjQ5MTExODQgbGVnYWN5LXRydW5rCisyNjI1MCAxNzBmYjViOTQ3M2Y4YTM0MjRkMmE2MGJkNjcyNDQzMTcxYzAwY2Y2IHJlbGVhc2UyMS1tYWludAorMjYyNTEgYWY3MmQyY2YyYzU1ZWI4ODQ5MDA2ZDBlMDAwNjVhODEwYWM1MWQwOCByZWxlYXNlMjEtbWFpbnQKKzI2MjUyIGI4MWQwZTg5MDQxMmNjMWFmMmM0NTIwMmEyODkxM2Y4NDM3MWFkMGIgcmVsZWFzZTIxLW1haW50CisyNjI1MyAzM2IyYTg5YmY0YTZhNWIyNjdiNWQxODNlMjU4NTM2NTcwODZmZGEzIHJlbGVhc2UyMS1tYWludAorMjYyNTQgMWEzNzU2NjFjYzk3MzI5NTAxMDRkMjA1ZTRjNzg4MWJhMGM0Zjc5NyByZWxlYXNlMjEtbWFpbnQKKzI2MjU1IDU3MGE3ODAyNzlkMWE0NjFiZTY0MmUzYjc0YTExY2JhMThmOWVlOWEgcmVsZWFzZTIxLW1haW50CisyNjI1NiBiNWFhZGU5N2Q3MjNmYThhNjNlN2IxOWJiMTYzMGRjNjFmZTJjNzBmIHJlbGVhc2UyMS1tYWludAorMjYyNTcgN2Q0MGI2OTFkYmE3NjM3Y2NiZjc3YTEyOTNkZDIzOGUzNzJlOWJhNCBsZWdhY3ktdHJ1bmsKKzI2MjU4IDhiYWNhNGVjZTY0NTUzNTI3MDdhYjZmYWYxMTEzZDBhZDUyNjlkMGEgcmVsZWFzZTIxLW1haW50CisyNjI1OSBlYTQzNTIzYjViZTc2MjdmNGJhNjIyYjc4YTk4NzhhZWYzNWNjMmQ4IHJlbGVhc2UyMS1tYWludAorMjYyNjAgYzBkN2I1Nzg4Y2JlNjNiYWFjMDI0NDk1MjEwNzM5ZDA2NzdkODk3NCBsZWdhY3ktdHJ1bmsKKzI2MjYxIDg5MTNkZmExMTAyN2VkYWE3YWExMTVjY2ViNzAxNmNlYTliZTlmMTMgbGVnYWN5LXRydW5rCisyNjI2MiAxMWNmZTgzODNjZjg4NzUxZmFkM2Q3OWUxZTZiMmJkMzEyMmQwMDY2IHJlbGVhc2UyMi1tYWludAorMjYyNjMgZmJkZDQwYjkyYjg3MGI3ZmY3YmQ0ZWRkNjIzNmIwNjdiOGI0YWRhOSByZWxlYXNlMjItbWFpbnQKKzI2MjY0IDdlODRkYTljOThlYmE2YjgwODFmYzNjM2NjMWE2N2ViMjNhZWU1N2MgbGVnYWN5LXRydW5rCisyNjI2NSA5ZDI2ZDU2OGRiYjMwNzYzYzVlZTJhYjMwNGIzYTJjYWFhZDkxYjFkIHJlbGVhc2UyMS1tYWludAorMjYyNjYgYjYwODQ0NWIyNWYwMjliMmRhZGM4NWZmMGFmMzFjZWI3MjNmM2NhMCByZWxlYXNlMjEtbWFpbnQKKzI2MjY3IGFjOTliZWQyNGI3ZDEwNmNhNTFiNjA0NGM1MGQ3Y2ExNjk1ODYwZmQgcmVsZWFzZTIxLW1haW50CisyNjI2NyA3ZDE1MDRjODBmYTA3MmI0YmE4NmVkZGExM2ExM2IwYTA1YWU4ZWFiIHJlbGVhc2UyMS1tYWludAorMjYyNjkgNWFiM2U4ZjE0ZDQ2NjM5ZDZjNDBjOWNiNjJkMGQ3Y2Y4Yjg3Njg3MyByZWxlYXNlMjItbWFpbnQKKzI2MjY5IDM5NDc5MDMxNmFhMzgwZDIyZTRkNjcwYmM2OWE2MzllNzI1ZjAzMDAgcmVsZWFzZTIyLW1haW50CisyNjI3MSA5OTAwMWZkOTVlNDhkYjgxNWE4ZmQwMWIzZGQwMTc3OWUxZWU3OGU1IGxlZ2FjeS10cnVuaworMjYyNzIgMDc3M2QyMzIyNGQyYWE2YjU1MDUxY2ZkMDc2OWFlZjNhYzZmZGY3ZiBsZWdhY3ktdHJ1bmsKKzI2MjczIGMyNmFmMWFiYzJjNjIxMzAxMmFkNTkwZjk0MWQ5YTg5ZWFkZmExOTAgbGVnYWN5LXRydW5rCisyNjI3NCAxMjEzM2M4YjgzY2Y1ZjRlZTMyNGNlNzQzYjQwYmZkYWI0OTVlY2VlIHJlbGVhc2UyMi1tYWludAorMjYyNzUgNzI4MWEwNmUzYjU3ZjNiZWJjNTc1MjE0MWViMDNhY2Y1YmI2NTJmYSByZWxlYXNlMjItbWFpbnQKKzI2Mjc2IGZlYjZkMWJjZGQxZDYyZTE4OWRlMjMwNWRjNThlMmNiNTc3M2MxMGEgbGVnYWN5LXRydW5rCisyNjI3NyA5MDgxYzkyYTBjYzg1ZTQ0ZmM2N2VjM2ZjYTczNDQ5YmZmZTg3ODFkIHJlbGVhc2UyMi1tYWludAorMjYyNzggOGEwMmMzM2VkMmMxOGJiMzg0MGIwOWIxZTBmNWU0N2ZjNjViMDFlMCBsZWdhY3ktdHJ1bmsKKzI2Mjc5IDE1YzE4YmM5ZDcxNTY1ZmU3ODc5NDhmZGU2YTAxZjBlYTMwNjljYWUgbGVnYWN5LXRydW5rCisyNjI4MCA1NDIyOWMzNTEzMmU3NzUxZjFiZDA2NzQwYTJmOTQwYThiZGU1NmIzIGxlZ2FjeS10cnVuaworMjYyODEgMjM5MmFmMDVmMDUyNmI1NjAzMDAwYjc4Y2U1YjhmNjFiOWFmMmE2NiBsZWdhY3ktdHJ1bmsKKzI2MjgyIDNjODc2ZmYyOWE4M2VkOWVmZGU0OTI1YTE4Nzc2YWI1NWJiYTBiNjcgbGVnYWN5LXRydW5rCisyNjI4MyAzZjIxZTRlMzkyNjgxMDNmMjE1NDM1MDkyMjliOTVlZmNjYzVlMDgxIGxlZ2FjeS10cnVuaworMjYyODQgYTVlZWIyODhlMDIwZjczMGM5MGQ2ODQ5ODExOWE0MmVmNWEzZDQwOCBsZWdhY3ktdHJ1bmsKKzI2Mjg1IDA3N2NlOGI1ZDgzYjU5YjczZTczYzdhYTVkMTAzYjQ1M2YyYmVkYTkgbGVnYWN5LXRydW5rCisyNjI4NiA0YzQ5OTQ0N2NjNDlmODg3M2VlMTg1ZGE4ODlhOGU5NDVkYjIwMzgwIHJlbGVhc2UyMi1tYWludAorMjYyODcgMzMyM2YzZjQyMmRiMDlhMTIyNGNlMGI5M2ZlZDc5ZjQzM2RlNDQ0YiBsZWdhY3ktdHJ1bmsKKzI2Mjg4IGUyMzM4MWZhNDc1MDM4MDJjZDE0M2JmMmFmYTkzYzllNDQ2OGZhZmQgbGVnYWN5LXRydW5rCisyNjI4OSBlMmRlYzNjZGYzYzI2ODBmZmQ3ZTg2MmRiYzgyYmZhMWFjYTY3MTY5IGxlZ2FjeS10cnVuaworMjYyOTAgZTMwN2E5NGRkNzdiZmRjZDViN2RlN2RiMjQwNWFhYTUzZTg3Njk3NiBsZWdhY3ktdHJ1bmsKKzI2MjkxIDI2N2I5NzMyYmY0NjU1MDBiMmEwNDg2OTkwNGY2ZjZmMTE3YmY1MWQgbGVnYWN5LXRydW5rCisyNjI5MiBhOTZlN2U1ZjM0MDc3MTVhNzAyMzJmMmE1ZmM3OGNmODZhMTE1MmI0IGxlZ2FjeS10cnVuaworMjYyOTMgZjc2Y2E5ZmJjN2E0NzYyYzQ4ZDYzMDc4YmM0NzMwNDMzNjE0NDQxMyBsZWdhY3ktdHJ1bmsKKzI2Mjk0IDMyYTliMTlkYmExZGQ2NzAwYWUzYjdlOWJiYmIyYTI2ZTIyMzI1YmQgbGVnYWN5LXRydW5rCisyNjI5NSA0NGVlNjhhYzVlN2Y5NjFiNmZjMzk5MTQ3ZjBjMTdjMjQyZTg2YjJlIGxlZ2FjeS10cnVuaworMjYyOTYgZDRmOWUxOWI4YzBiNDI3NjBhMzg3YTdmNDgwZDU4OWY0NzRkNzI5ZSBsZWdhY3ktdHJ1bmsKKzI2Mjk3IGYxNGU0NTUwYjJmM2NlYThjOTNiNzdhNDRkY2Q3ZWJiNDE2MDZjYTEgcmVsZWFzZTIyLW1haW50CisyNjI5OCBhNTRiMjNiMmYxNzIwYzMzNzI3MWI4ODdmOTBkZWNhYmQwNWJlYmJlIHJlbGVhc2UyMS1tYWludAorMjYyOTkgNWM1NTM3NzJjYTU0YzNmZDRkZTlmMGJiNGU5YTg0YzA4NmE5MTZjNyBsZWdhY3ktdHJ1bmsKKzI2MzAwIDUzNGFhYjViY2NlYTQ1YjNjNmViZjA2NDQ5ODIyZTJkNjYxZDYzMGYgbGVnYWN5LXRydW5rCisyNjMwMSBhYjY3OTkzMWFlMGQxNzE3MGZiZmEwOTAyYTgzOGNjZGVjYzk2OWZkIHJlbGVhc2UyMi1tYWludAorMjYzMDIgMDU3YzVkNzljOTg4YWRkYjc3OTc2ZGQ3Yzk4ZjU4M2U3YjM3NmM5ZCByZWxlYXNlMjItbWFpbnQKKzI2MzAzIDk3OTM5ODM0YTY3MzUyMjAxYTRkMmM1YTU4NThjNzZhNDgwMGQ4MDkgbGVnYWN5LXRydW5rCisyNjMwNCBjODc1MGQ2M2RjMzU1ODQyNjRkM2NmNzFjMTNkYThkMDFlMDRkMDMxIGxlZ2FjeS10cnVuaworMjYzMDUgNTBjOWMyNDE0NjNkMjFhZWFmMTZiZTA4MjA4ZGIzNmZiNmE0MjhlMyBsZWdhY3ktdHJ1bmsKKzI2MzA2IGMwNDkwNmZhMTc4Yzg4YmIwMjRmNDdhNjQwNjdkZjRjN2EwMDdmYjYgbGVnYWN5LXRydW5rCisyNjMwNyBjYzUwYTA5MWY1NzNhZmZjMzExMmRjY2VjZjNkYjg0NDg2NDhiZjk5IGxlZ2FjeS10cnVuaworMjYzMDggMWE4YTc0OThiMGJiMzcxYWNlMjJkZGZjMmQzYTU0NDM1NDZmNDIxNCBsZWdhY3ktdHJ1bmsKKzI2MzA5IDZjYjUyODI5ZGExYTJhYWM2NzY5NmMwYjQzOGM3YzIwYTk2ZWVjYmYgbGVnYWN5LXRydW5rCisyNjMxMCA1ZjU0NTRhNDhiNWFiOTZmZTM5MzM0ZDBmZDc2NWRiYzcyZDhjZjZkIGxlZ2FjeS10cnVuaworMjYzMTEgMjFmMzE5MzlkYzJmNzQ4ZjJmZjkwZTgzOGJmMzljMjQ2ODk5YTgwOSBsZWdhY3ktdHJ1bmsKKzI2MzEyIDZhMzYxMTJhM2RjZTA2NzViYjJiYTU2N2RmNTY0ZDlmNjlhOWY5YzQgbGVnYWN5LXRydW5rCisyNjMxMyBjOGMxZGMwNzI3Y2Q1MGNkZTdkY2M2YjNhMWZmNWIzZmZhNGUxZjZmIGxlZ2FjeS10cnVuaworMjYzMTQgYmZhMzMwYjg1MjA1MDdkOTkxMjdkZmM4MmI4Y2EwNzBmMjM4NzZjMyBsZWdhY3ktdHJ1bmsKKzI2MzE1IDlhNThlOTdkYjQ0N2MzZjQ5NmE5Njg1NDE4OWM5ZjA2NzAxNjg3NGUgbGVnYWN5LXRydW5rCisyNjMxNiBjZWE4NTJmOGFhNDc2MzAzN2YwMTVlMjMwNzk3OTVjODZkNmQ3YmFkIGxlZ2FjeS10cnVuaworMjYzMTcgMDNhODMzNDBjOTE0YTkyYzZmYjc4MzcxZGU4ZjU4OTU3NmIwY2EwMCBsZWdhY3ktdHJ1bmsKKzI2MzE4IDRmOWQ1ZWE0ZjM3ZDljMTIxYjgwYTg1N2YwNjAwZWRiNDhmY2M5ZjEgbGVnYWN5LXRydW5rCisyNjMxOSA1ZjJkY2RkMDkzMjkzNmM1ZDJiZjRiYTQ3ZjQxMGZlYWE4OTU5NTlkIGxlZ2FjeS10cnVuaworMjYzMjAgZjgxNzAxYjcxMjE2NGY2NjIyZWE4YTA1NGMwNjNjYTA0MDBmYThjYSBsZWdhY3ktdHJ1bmsKKzI2MzIxIGEwYmI1ZmExYWIyZGNkZTBlZjBjMzM5N2QyNDEzNTU2Yzg1ZmYxN2UgbGVnYWN5LXRydW5rCisyNjMyMiAzZjIzZDcyZWY0MTBmNjY2ZTA0ZThiMjkwMWFmZGViYjBiM2ExMTI2IGxlZ2FjeS10cnVuaworMjYzMjMgNmQ3MzFiNjQ2NzBiNjkwZDI0YjM4ODViZTRlZjlhNzg1ZTg4ZDI5YyBsZWdhY3ktdHJ1bmsKKzI2MzI0IDk1NjNjOTY2NGEwYmI4YTJlY2U2ODlmMzViNGEyMDQwMjI1ZGMxMDcgbGVnYWN5LXRydW5rCisyNjMyNSBhMDA0NzNmMzMxN2I5M2Y3NTQ4NDViMTY5NGM3ODUzM2M1MjM0MjJkIGxlZ2FjeS10cnVuaworMjYzMjYgYjM3MzE0ZmNiY2M5Zjc1MjA3NDdlMmQwYTQ4OWY4ZTExYWFkMjg0YyBsZWdhY3ktdHJ1bmsKKzI2MzI3IDA4NGFiNzM3NzdhMzQxNzRkZTdkODk4MzA5ZTQwNzFjYmZiMWJiYzggbGVnYWN5LXRydW5rCisyNjMyOCA1NDk1YjZkZjBjNjVkMzBmN2RiM2Q1MWM0OGM4ODA3MmZlNDAyMTUyIGxlZ2FjeS10cnVuaworMjYzMjkgYmEwMjM2Zjg0MzE4YzIzOWVkODNhOGJmNTZlYThmZDUzYWQwOGIwMSBsZWdhY3ktdHJ1bmsKKzI2MzMwIDMxMDBiYTI2OTEzYzdkNWJhYTExMzFmZGE3NGY1MGMxMzZkNDI0ZWIgbGVnYWN5LXRydW5rCisyNjMzMSBmOTNhMjZkMWJmYTBlOWRkODMxODExODA2YzQyNzVjN2MxZWU3MTk4IGxlZ2FjeS10cnVuaworMjYzMzIgOTBiODM0Y2U1NzA3N2ZlZGE1ZmMxOWEwNWMzMjg0MzJhN2QyZjkzMCBsZWdhY3ktdHJ1bmsKKzI2MzMzIDk1ODE5ZjdmMGJjZDJjZGM4ZmU1Y2EyOWIwNDAxNTg1OTY0ZGY4MjAgbGVnYWN5LXRydW5rCisyNjMzNCA2OTljYzEzOWQyZDI0ODY2YTEwYmExYWRjOTYzMmNiZWNlMDMxYTc0IGxlZ2FjeS10cnVuaworMjYzMzUgNzI3NzhlYzk0ZGVjNjY3NjM4MjczMzExMDBiYjhmMThhMDNiY2E1NSBsZWdhY3ktdHJ1bmsKKzI2MzM2IDI5ZTZjYjgzMjQ5N2I1ZmU4YWQyZTczMzY4YmJkZjAzYjk0YjBiZDkgbGVnYWN5LXRydW5rCisyNjMzNyBhOWU0MDI0ZDhhMzc3MDE5NTYwNTI5YmFkZTA1ODcxMmRiNTBiZmU1IGxlZ2FjeS10cnVuaworMjYzMzggNGJhMDkxY2M3MGI4OWIxNjY0NGFhNzVlMTczN2RmZGQyNGQ0MDBkNiBsZWdhY3ktdHJ1bmsKKzI2MzM5IDM2M2M3ZmMxNzRhYzhiZGI3YjgzMTk4MWI4OWM2M2MzMjEzNDcxYTIgbGVnYWN5LXRydW5rCisyNjM0MCA5ZmU5NGMwMWVhZjFmZmY1MDA3YzAzODQyNTVlNDE4MWJkMGRjZDc1IGxlZ2FjeS10cnVuaworMjYzNDEgOWY5NDkwMjdkN2JhMTkzYmQ2MTQzZjJhYTY0NGI5MDM3MDQ2N2QyOCBsZWdhY3ktdHJ1bmsKKzI2MzQyIGRjMWZiMTlkOTkwZDY5MmYxN2NkMWUwY2U3NzEwNWNjMzJjNTQ1ODAgbGVnYWN5LXRydW5rCisyNjM0MyBkMDk3NDBiMmUwM2RlMWY4NWNhMDg0MzU2YTQ1ZDAxYWMwMmVjY2E0IGxlZ2FjeS10cnVuaworMjYzNDQgMWMyNmEzMTA2NjUzMTBmNjNmZTU3NTc4NzczZmQwMzMxYTJiZTM1MiBsZWdhY3ktdHJ1bmsKKzI2MzQ1IGM1YTY3ZjUwNTMyZTkxNDcxMWQwY2ZmNTk3YmEzZWM5NDZiNGU0MDEgbGVnYWN5LXRydW5rCisyNjM0NiBkOWQ4MmMxZWY4NjQ1MGRmMjMzNTUwMGU5YmUzYmI3M2JhYjdjNmZiIGxlZ2FjeS10cnVuaworMjYzNDcgMjk4YTdjNTFkMmMwMWRlZGQ1YTA4MGM0NjllNmMwNzE0Y2VlMjBkNSBsZWdhY3ktdHJ1bmsKKzI2MzQ4IGM4ZDYxZmYxYzBkNmI3NDk1NDkwYWE5OWQ0MDNmMmZkOGUzMzQ3OGUgbGVnYWN5LXRydW5rCisyNjM0OSBiZTU0NDY1YTM5YzQ1NGE1OGIyYjE3YzM0ZWE5Yjk1YWIwZTcyZDE3IGxlZ2FjeS10cnVuaworMjYzNTAgNjE2NjE1ODNhMTJmYWIyYWYwY2ZkMGM1MDgzYzNiMzJhZTEzMWExZSBsZWdhY3ktdHJ1bmsKKzI2MzUxIDI0NjYzYjg2Yjk3NTA1ZWNhNjA3MjE5MTdkNDczZTJiMjMzOWQ3OWMgbGVnYWN5LXRydW5rCisyNjM1MiAxZTFjNzIxNDMzZDhlNGEzYjA4NzUzY2U0ODFhZWU1YmJmNzk1ZDAyIGxlZ2FjeS10cnVuaworMjYzNTMgYmViMzIxODkwNWEyZmU5YjE0YjYzNGUyMGIyZDlmOTRhMjQzYTE1YSBsZWdhY3ktdHJ1bmsKKzI2MzU0IDBhMTlmMDE2YTk5NDY0N2VhMTI4OWNiNDEzMjBjMmJkM2ExMGE1NGEgbGVnYWN5LXRydW5rCisyNjM1NSAxOTZkZmE3ZWQzNDhkYmZlOTYxNTc2MjY4MTk0NWRiMjEwODZiOTQxIGxlZ2FjeS10cnVuaworMjYzNTYgNjkwZDcxMmUyODA3YzNlMWM4Y2M1MTIwYjdhNTliMzQ0NzJiZjIyYSBsZWdhY3ktdHJ1bmsKKzI2MzU3IGI5YWQxZTlmNTlhODVlYTA3OWU4NzBlOGUxNjU2NDdlZTY2MTAwNWEgbGVnYWN5LXRydW5rCisyNjM1OCAyZGQwZjg0YWYwNzE2OTI5MDE2MWVhMzUzMzVhNGY4YTJkY2E1NjBiIGxlZ2FjeS10cnVuaworMjYzNTkgYTljYjkxOWU0OWUzMzFiYmU4YmU5MTFkNmY3OWM3NzBmYTY3Y2E3YiBsZWdhY3ktdHJ1bmsKKzI2MzYwIDI1YTZlMzljMzFhMjA3MGUxNTFmZThmNmFmZTZkYWIwNjQ0MTI2NTUgbGVnYWN5LXRydW5rCisyNjM2MSAwYjFlMjBjMzRjOGVhNmMxOWU0YzUzMTU1NzU5OTBiOWQyZGQ4ZjEyIGxlZ2FjeS10cnVuaworMjYzNjIgYTA1NjFjZjQ5MTYzNGRiMTRjNzZlMzIzOWFkZjY2YWYwY2MwYjQ0MSBsZWdhY3ktdHJ1bmsKKzI2MzYzIDhmOThjYjNhMGYzNjhjYTQzZjFmNTAzMzBjMDQxMGNhOGE0YTE0YTIgbGVnYWN5LXRydW5rCisyNjM2NCA0ZjA2M2I4MDMwOGQ5OTIzZDA1YTY3MWU0N2E0OTJkMDk5MmFmZThlIGxlZ2FjeS10cnVuaworMjYzNjUgMWY3YWY0ZmIzYTUxNTJjYTE0OGUxZTBhYzJmNjYzZTQ4NTZlYTEyOCBsZWdhY3ktdHJ1bmsKKzI2MzY2IGU1NGI5YzM4NDhiN2EzNDkyMDgwYTQ4OWYzNDVkNzE3MzA0MTNlZGUgbGVnYWN5LXRydW5rCisyNjM2NyAxY2VhZjdmODA1NWQ2ZjMwYWZhN2RhZmE1ZDc4MmFhN2VmZTliNDI2IGxlZ2FjeS10cnVuaworMjYzNjggZGIwMDNiOGE5YmI5NTQ2MDA5MDk1YjAzMGE3N2RkMTdmYzU3OWM3OCBsZWdhY3ktdHJ1bmsKKzI2MzY5IGQ1MDQ4ZjliOGI4MjU3YjFjMWJkZGNhYjkxOWNiNTRhZGY3YzI4YmEgbGVnYWN5LXRydW5rCisyNjM3MCA4YmU2MjM4NzQ4YzRkMGFmM2NjNzBhMGJiNjYzYWQ3MTdhODQ5Yzc1IGxlZ2FjeS10cnVuaworMjYzNzEgOTMxZDQ0ODgyMGFlZWYzOGRiNjIyMDNiYjA5YmRlYzEyMzVhZjAwNyBsZWdhY3ktdHJ1bmsKKzI2MzcyIDk4OTM3N2NkZjA1MzJkNzc3NmNiNjY3YzZjNTYzN2ZkM2M3YThlNmIgbGVnYWN5LXRydW5rCisyNjM3MyAwOGFiMGE2YmYxZWJiMTRhOTBmNGNiOTMyOGNkMGY2ZGJiOWEzYTNjIGxlZ2FjeS10cnVuaworMjYzNzQgZDYzMjI5ODMwNjllMDZhYTI0YzkzZGU5OGZlYzk1OTg1YmU3MmI4NiBsZWdhY3ktdHJ1bmsKKzI2Mzc1IDNiMDgzYjI2Mjk2YThlODEyNzY0ZDI4ZTEzNmIyN2JhMjI1ODY4MTYgbGVnYWN5LXRydW5rCisyNjM3NiAyMDJhZTViNzVjY2EyNDM4MjcyNDg3M2JmZjk5OGZhMDIzNDYxNDNkIGxlZ2FjeS10cnVuaworMjYzNzcgYjVmOWY3YThmNTY2NmU0ODlmYmI1NWQyYjAzOTJhZDFmOTM2YjM2OCBsZWdhY3ktdHJ1bmsKKzI2Mzc4IDQ0NjM3YmQ3ZjU5YjY0Mjk4YzJkMmMyNDkyYjRiM2I1ODVmYzAwMTcgbGVnYWN5LXRydW5rCisyNjM3OSBiMWFiNGJjNTIyNDNkMDBkOTA3NDBjODgyMzJmMzM5YzY4NDYxZGVjIGxlZ2FjeS10cnVuaworMjYzODAgYzYwMDNkZTczOTc1NTdiOWM4NGQzNWViMzcwY2Y2ODI3OTcyYWE1MyByZWxlYXNlMjItbWFpbnQKKzI2MzgxIGUyODQ4NjE4YmQxOTU5YWQxNDZhOWIxYTFlZjllNWE4Y2VkMDkxNGIgbGVnYWN5LXRydW5rCisyNjM4MiAyNDcxODMyNzAwOTU4Zjc0YzkyMzZhYWIzODYxODg2ODE1YjNkOGQ2IGxlZ2FjeS10cnVuaworMjYzODMgZWJlM2NlNmNiZmQ3ODYxNTIyOGJlY2NmOTBlM2I3ZTFjNzg1ZjdjMCBsZWdhY3ktdHJ1bmsKKzI2Mzg0IDg5OTAwMmE4ODJhMDhhNTA5ZmY2YjJlYzI0M2ExZmU0N2Q3ZDIzZWQgbGVnYWN5LXRydW5rCisyNjM4NSA0ZTU4YTM4ZTNjMDYxYWFjMWQ3ZGU3ZDRlYWVlOGVlN2RiZWNlYzI2IGxlZ2FjeS10cnVuaworMjYzODYgM2U4OTI1ODJhODUwYmM4YjYxMThmZDdlNzA4MmJlYTQzYzg5NzlkNSBsZWdhY3ktdHJ1bmsKKzI2Mzg3IGYzZmM5N2RhNjhhOTg1OGMzZjlhOGY5MDMwNGU4ZWRmZTE1Yjg0YjMgbGVnYWN5LXRydW5rCisyNjM4OCAwM2MzOTY0MGQ4MWE4OTQyZGNmYzQ1YTEzZWE5YWU3YzNhMWY0ZDVhIGxlZ2FjeS10cnVuaworMjYzODkgYTlhNmMxMThkZmJhNzU0M2IyZjYxZWVmODc1ZmFmNzRjNjEzMDJiNyBsZWdhY3ktdHJ1bmsKKzI2MzkwIDgyOTE0NzNmZGUzZWIzMmM1MTdjMDc1MTZkZjhhOTljYjI5NjBkZTMgbGVnYWN5LXRydW5rCisyNjM5MSAxODYyMzc0YWIyNTM5OWQ1NWY4Njk4Nzc5YzUyNzdiYTMyNDY4N2FiIGxlZ2FjeS10cnVuaworMjYzOTIgNWJkYTU0NmViZTI0YWNmOWVhYjE3MGJmMjFjNmM4MDc1MTZhZTVjOSBsZWdhY3ktdHJ1bmsKKzI2MzkzIDFkYjNhMDI5NjVlNjU1ZWY0ZWY4NTFhNThmZDhhOTc1OWQyZTgzYWQgbGVnYWN5LXRydW5rCisyNjM5NCA4YjkyNjBlOTIwMTBiNTRlOGFiNWU4ZTM0ZmQ2ZThiNTQ2OWIyZjk0IGxlZ2FjeS10cnVuaworMjYzOTUgNTNiYTkxMTBhMWYxNzc5N2M3NTNlYzNkNzExN2U2YmQ0NDBlMzc0OSBsZWdhY3ktdHJ1bmsKKzI2Mzk2IGIxZWU0MzIxYTUwYTdiMmM1OWJhZDEzMDE0NjhhM2IyNzAyZDQyMzUgbGVnYWN5LXRydW5rCisyNjM5NyA4ZjY0NTE4MDUzNGQ1M2Y2YmY2MzczNTUxNTllYWEzNmFhZjY5NTg0IGxlZ2FjeS10cnVuaworMjYzOTggODlkYjllM2YzNWE3NDhiMTlkOTViMzRhOTY1MjVlOGQ1MjA2NGMzYSBsZWdhY3ktdHJ1bmsKKzI2Mzk5IDlkMzUyNjY3ZDcxNWVlYzA3ODM0OGM4ZDk1NGY2MDBhN2FhMGJhZGYgbGVnYWN5LXRydW5rCisyNjQwMCA0NTQzNTFlZjUwZjFkMTk3MGNlNGI5YzNiZDMwY2E1ODgxMjNkNjU2IGxlZ2FjeS10cnVuaworMjY0MDEgY2QyMDJlZjY3MjZlMzQ1N2Y1M2I2NWNkNTQ3MDM3MmEzYTYxZWY1ZiBsZWdhY3ktdHJ1bmsKKzI2NDAyIGYxYWExOGM4Yzk2YjgyMWM5NWIyMGI1NGYyMTAxNTdmZmQ3M2UxMTggbGVnYWN5LXRydW5rCisyNjQwMyBlMWY4ZTI5NTQ3NDk5ZjQ5NzNmZjliYWJkYjMzZjNiOGZhMGI5YjMzIGxlZ2FjeS10cnVuaworMjY0MDQgN2ZlY2Q2ZDU4ZjM4ZWYxNzRkM2FiMzQyNGJmZTllYzQzNDJjZDUwZSBsZWdhY3ktdHJ1bmsKKzI2NDA1IDBmMzdjYjVhN2U5ZThjZDViMDgyZDdmNTE2OTU1MDBkNDFmMzRlNjcgbGVnYWN5LXRydW5rCisyNjQwNiA4YjEyNjhiYzM3MWE2NGZmNWJiY2YzNzc5Y2NjMTBmNDE1OTI1MWM2IGxlZ2FjeS10cnVuaworMjY0MDcgNzY5ZTBhNTM4ZTU0M2QxNWNkODc4NmJiN2FmYzRmYmZhMzZiYWM3OCBsZWdhY3ktdHJ1bmsKKzI2NDA4IDc1MTI4OWNkMWFiNzEyZDllNzYyYTE4NDllODI1MGI5MmRlZmU1NTkgbGVnYWN5LXRydW5rCisyNjQwOSBjMTY2OGE4MTkyNDJjNTEzYTJhZWMxOTNjNDVkZDJmMDg4OGRhMmI3IGxlZ2FjeS10cnVuaworMjY0MTAgOWU2ZmY3ODcyODBhOTVkZDRjMDhmZDBhZDUxNDgwMDE2YzlmNzRiNyBsZWdhY3ktdHJ1bmsKKzI2NDExIDhhOGFmZmNjZjQ2M2JiNWM1NzgwZGU3MGY5ODk5OTczOTc3Zjk1MjEgbGVnYWN5LXRydW5rCisyNjQxMiAxOWVhMDBmZWRhMzM2Y2QxMWQ5OTQ2OTE4MDBkNTVmZGJlMDgyZGQzIGxlZ2FjeS10cnVuaworMjY0MTMgOGViNmRkM2Q4MzIyZWZiZDRmOGJjNDIyYzg4MTIzYTEwOWEwOWViMSBsZWdhY3ktdHJ1bmsKKzI2NDE0IDA0ZmJmNjVjNzNlZjZmYzZhNzg4ZmM0ODhjNzY1ZTcwNTU5YTYxM2EgbGVnYWN5LXRydW5rCisyNjQxNSA3MWJlNWJhODhhYTdhNzJjN2FjMDBlNjI4MjhlMzhhODc0OTNlYzQ1IGxlZ2FjeS10cnVuaworMjY0MTYgM2FmMmNhZGNjZDZhYzY1MjNlOWIwZTljNjIzNTZiYzdiNjQ2NjlhMSBsZWdhY3ktdHJ1bmsKKzI2NDE3IGExMzU5ODBkZDRlOWI2YjliZjEyZWJlM2QxOTI3MDdhMTg4YzYwZDggbGVnYWN5LXRydW5rCisyNjQxOCA2YmUyODNkMTQ4ZjdlMzg4MjU1OTQ5NDQxNTk0ZDMwZjkxYTZkNGRjIGxlZ2FjeS10cnVuaworMjY0MTkgODAwNWZjMWFlZjM5YzhmMDYyNGU0MTVjNjkxMmY3MGVhZjViMjlkNiBsZWdhY3ktdHJ1bmsKKzI2NDIwIDRjMGFiNWQ2YTYzYzQxZWFjMjljYTI4N2M3ZDdjNjE1MjYyNjVlNjIgbGVnYWN5LXRydW5rCisyNjQyMSBjMzI4ZDcyNTBlOTI2NjAwMzZjOWJhOGFkNWNjNGRmMDJhMzRiNmI5IHJlbGVhc2UyMi1tYWludAorMjY0MjIgZGJkMGVlN2Y2MGUwNTY5NzBhNmEwNzMxYjRkNTkwYTIzNzhmYjU4MyBsZWdhY3ktdHJ1bmsKKzI2NDIzIGMzNzFiYjNlODUyOTFiOWUzMzRmYzUzNDc1YzRmNmQyNDI5YWRlZWQgbGVnYWN5LXRydW5rCisyNjQyNCA1MzBhYmEzMTE2YTQwZDA4NWU0YTEwODk3OWY2MDNlMjliZWJmM2Y4IGxlZ2FjeS10cnVuaworMjY0MjUgZGMwYzEyMTNjNzlhYmRkYTA5MzViMzgwNjRhM2ZmMjBhZjNjMmJiOCBsZWdhY3ktdHJ1bmsKKzI2NDI2IDkzOGZmM2NiNTFjMjZiZmU0MTllYjY1Y2ViN2FlY2UzN2I5ZDYxOGYgbGVnYWN5LXRydW5rCisyNjQyNyAwM2ZmMzU2OWJhMDRjYWY2YzU2ODFkMjgwZWU2YWRkZDNmMGMxNjlkIGxlZ2FjeS10cnVuaworMjY0MjggZjM2Nzc0MTRiYzNkZWY2YTA5MDU1ZmM2ZWE3NDk0ZDJiNjMzNmViZCBsZWdhY3ktdHJ1bmsKKzI2NDI5IDQyYzk5NzI4YjZjY2EyZjllYzJiNzgzZTUzZjE0Y2M3NjcyOTQ4MTAgcmVsZWFzZTIyLW1haW50CisyNjQzMCBiYmFiM2ExN2I0Y2Y0ZTNjN2NkM2Y0ZjRjNWI3MTJmYTU1MDA5MTdhIGxlZ2FjeS10cnVuaworMjY0MzEgOTdiOTQ4MGJiZWVjNzVlNjE1OWM1NDA5NzEzNzcwNzM0NWRlMzg5YSBsZWdhY3ktdHJ1bmsKKzI2NDMyIGZkYTczYmZmMjFmZmE1NmQ1YTllY2UyZjI0OWNmMWM4Y2JjOGNiMzIgbGVnYWN5LXRydW5rCisyNjQzMyBkODllNTU3M2RkMjM3ZTEzYjA2MjQ3YWQyMDUzZGI5ZjNkZDJjMWUwIGxlZ2FjeS10cnVuaworMjY0MzQgMjFkMjUyMDI4NDA0YzgwZGQ4MjI5ZWY5MmM2OGVkOWE4MmUwMTRkMiBsZWdhY3ktdHJ1bmsKKzI2NDM1IDRmZjkwYzk5YzMwMmFhNmJkNDNjNGQyMjgxZWMzZmUxZmVmYjc3MjIgbGVnYWN5LXRydW5rCisyNjQzNiBiN2U4NzczMmY2YWI5NDEzZDU0ZmRjZGFhOWVjOTlmZjM0YjZlMTY5IGxlZ2FjeS10cnVuaworMjY0MzcgMGZjZTU1Njc1Y2JjYjM4MGMyNDJmMzlkZWY3M2I4ZTM4ODMxNDhhNCBsZWdhY3ktdHJ1bmsKKzI2NDM4IDNiZDMzNmI2Y2IwM2E2N2Y3M2U3MTBlZjE2NjQwYWQzMTdmNWEzY2UgbGVnYWN5LXRydW5rCisyNjQzOSA0YWRkZjRjZWFmYzU0N2Y0N2JmZTA0OGM1N2IyZWM2ODFlYTI0NTA0IGxlZ2FjeS10cnVuaworMjY0NDAgOTY5YzFkMTE4Yzk3ZGViZmQzZmE2YThmZjZhMTJjYWI0OTJlNTI0YSByZWxlYXNlMjItbWFpbnQKKzI2NDQxIDEwZTAxMjJiNWZlZDVmODhkNzIxZGE5ZGQ5YWQ3ZjU5NTU3OGY4MWQgcmVsZWFzZTIxLW1haW50CisyNjQ0MiAzYmY3NjJlMGUwNmVkMDlhOTFlM2UyNjY0NDE0MmZhMWI5ZWViYTNmIGxlZ2FjeS10cnVuaworMjY0NDMgMzkzZTlhMjE2YTg4YjUwMDEwOWYwMzE4MzZlYTZjZmYyY2QwZDA3ZCBsZWdhY3ktdHJ1bmsKKzI2NDQ0IGU0ODRmMzBkYWM3N2E2MTcxYTI3Yjk3ZWUzNjU2MDFhYWU4Yzg3OWYgbGVnYWN5LXRydW5rCisyNjQ0NSA4YzNkZDFjMmVmNDc5ZWU2ZWM0ZTYwZTE5YmFhOGVkMzU3ZTI3MmRlIGxlZ2FjeS10cnVuaworMjY0NDYgNDIzYTM2NzhiYzdjNzE3NmVhNjBhYjFlMjE3N2E5YjZmYTE5ZWFkZCBsZWdhY3ktdHJ1bmsKKzI2NDQ3IDRlODI1MjI4NDdkMGRlODFlMDAzNzc1MDYzYzVlYWI1OTJkOTRiMTIgbGVnYWN5LXRydW5rCisyNjQ0OCAwOWRiM2Y1ZDBiZDBlYTBiZjNiYjJhNWY1OWExNjRkM2RiM2RhZjIyIGxlZ2FjeS10cnVuaworMjY0NDkgOGM3YTM5ZDBmZWZkODAxZjZkZGM4OWNlMGZkZmFhMTI2ZjM5MGNlNyBsZWdhY3ktdHJ1bmsKKzI2NDUwIDMxNGY5MmEyNDI5M2IyYWJiY2YwN2NlYTNlN2Q1N2M0MDE2NDVjMTkgbGVnYWN5LXRydW5rCisyNjQ1MSBiMzk1NDc3ZDg0ZDBkNzY5OTczMDdkNGRhNjg4YTAzNzgzYWU3YmU3IGxlZ2FjeS10cnVuaworMjY0NTIgOTk3NTc1NjJiZmI5NTdmZDRiNTk0OTc5ZjMwOWVjZTkyOTc3MmI4ZSBsZWdhY3ktdHJ1bmsKKzI2NDUzIDllYmE2MGFjZTJkYWUwYzI1YzQ4OWVjNmY1YTA1OWRjMjZhNzU5NWIgbGVnYWN5LXRydW5rCisyNjQ1NCA5MTFmOWYxNGUyZDU3ZTliNjI0MmM2YTJhZWMyOTQ1NmQ1YWRiN2JjIGxlZ2FjeS10cnVuaworMjY0NTUgMmE1NDI3ODQwNjJmNWE5M2Q1YzNjMDkwNWM2MjhmOTkzMWUyNTZkZiBsZWdhY3ktdHJ1bmsKKzI2NDU2IGI1YWFlMmE2NWY2ZDEyMmEwZjczNWZhMmU1ZTliODQ2MjYzZDcyZjEgbGVnYWN5LXRydW5rCisyNjQ1NyBmODY3OWY2Nzk4YmY2N2I5MTRmMzcxZTE3NGMxY2I3NjcxODA4NDg3IGxlZ2FjeS10cnVuaworMjY0NTggMDNhYmZhN2RiNDQ5OGM1Y2I5Y2VkYjBmOWQ1ODljMmVhZTg5YzBlZCByZWxlYXNlMjItbWFpbnQKKzI2NDU5IDcxNzJjZWYyM2IwNTQ5ZWJmZTY5M2Y4YmI5Zjg2YzljMzZlNTE3YWMgcmVsZWFzZTIxLW1haW50CisyNjQ2MCA3Mzg5NWM5OWZjYzViYmVlYzc1ZTFjNzNiMmE4NWE5OTAxODc5YmZmIHJlbGVhc2UyMS1tYWludAorMjY0NjEgYjZmNDMyYjMyMTQzOGNhY2I1NGNiODg3NWRiYzAzYjBhMGI2ZjljZiByZWxlYXNlMjItbWFpbnQKKzI2NDYyIDU2OWUzODNiZTBkYTlhNmQ2YzdlM2ZjNmM2OWZmYTM3MDY4YWVkMTUgbGVnYWN5LXRydW5rCisyNjQ2MyBkNDQ1NDVjNGE0N2E4MmYzMjBlNTA1YjAyMjZhY2IxOGM0Njk3YzY5IGxlZ2FjeS10cnVuaworMjY0NjQgZDI3ZTk3YjhhODY2ZTZkYzRmYmNjYzI4YzUwNmM2YzU0NTYxZDc5NSByZWxlYXNlMjItbWFpbnQKKzI2NDY1IDI2ZTNmZThhODhmNTdiNzFjY2FmYmMyZGEyMzhlNzFkOGZkMzZkZmYgbGVnYWN5LXRydW5rCisyNjQ2NiAwMWY3M2ZkNjYzMTA5ZmIxMjI0M2Q4YmU1NTllY2YzMTYwMTgzYzRhIHJlbGVhc2UyMi1tYWludAorMjY0NjcgOTc4MzZmNjE5M2RjMzA3MTViODIwZmMxMTBiOGYwZGJjNmIxNDM3NSByZWxlYXNlMjEtbWFpbnQKKzI2NDY4IGY1ZWRmNzAyNTI2NzY4NWUzMTcyOTUyZWJiNmNlZmFmMWY3NjRlYzcgcmVsZWFzZTIxLW1haW50CisyNjQ2OSBkZjQ1YWRmNzdkMzZkZmRlNGQ4YjYxNGZjMmNjNzM0NjJmZWQ3ODUyIHJlbGVhc2UyMi1tYWludAorMjY0NzAgN2IwMGRhYjk4OGNmNDQwNzg2ZTM5Y2E1ODk5NTc4NTBlYzBhNzdlMyBsZWdhY3ktdHJ1bmsKKzI2NDcxIDJkM2EyYmViM2Q0ZDcwMjlmM2VlOThkNTdlZDViNzM5YzQ0NmI2NmUgcmVsZWFzZTIyLW1haW50CisyNjQ3MiA0MDc5ZTljMjNmYzE3Mjc2M2JlYjZkOGY5ZjRiZjlhMTdkYWM4MzMwIGxlZ2FjeS10cnVuaworMjY0NzMgYTNjOTgyZDQxMmI0NmUxY2Y5NGNmNDRjNzIzMzM4ZDcwZjlkZTRmYSBsZWdhY3ktdHJ1bmsKKzI2NDc0IGU3NTEzZTE0MmM3MGVkZmJjOTIzNDEwNjlmYjI0ODY3NWM2NzAxZWEgbGVnYWN5LXRydW5rCisyNjQ3NSAxZGEwMmJiYTYyNzY3M2FjZmM0M2IwM2NiNDFlMDJjZGIzN2YyNTE4IGxlZ2FjeS10cnVuaworMjY0NzYgNzEyMWQ3ZDU3MmQwMWFmMzBiNjIyNmQ4NTBmYTc3MWU1Y2JiZTExYSBsZWdhY3ktdHJ1bmsKKzI2NDc3IGZkZTg3OGJjMGUzYmU1ZTQ5ODE3OGYxNWMyZGFmZDBlZDJkN2Q1OTUgbGVnYWN5LXRydW5rCisyNjQ3OCAwZmZiNTRiMWMzZWE1Y2ExZTg4Nzk0Y2YxOWVkMzEyYmM4NTgyNzUyIGxlZ2FjeS10cnVuaworMjY0NzkgZjkxN2U3YTZlOTExYjc3MWUxZDYxNDU4ZGRmMzdiYWZhMmU1MGZhMyBsZWdhY3ktdHJ1bmsKKzI2NDgwIGZhNDFmMjQxMDY4ODczMTJiNWY2MjJjYjEyOTk0ZjE2MzVkZWNhZGIgbGVnYWN5LXRydW5rCisyNjQ4MSA3MzdmNDQ1OGU1ZGUwMTFlMDNjMzE5ZTA4ZTM5NTM2OGZlNzk2N2I4IHJlbGVhc2UyMi1tYWludAorMjY0ODIgYjBlNTlmMWU0OTVhYzZkYjk1NjZmODg3ZGM4MjJhMzcyNTdmZjQ0YiByZWxlYXNlMjItbWFpbnQKKzI2NDgzIDYyN2I3Y2E1MjIxYWMwYzkxZWExOTM5MWE3MjNmZWU4YmM1MGNlYWIgbGVnYWN5LXRydW5rCisyNjQ4NCAyMmRhMjYwODI4NWNmZTc3YTRlYWJjNjY1ZmNlN2I1MjM1NjUwM2E1IHJlbGVhc2UyMi1tYWludAorMjY0ODUgMGJhMjMzNDFlNWNmZjRlOGU1ZWQxYjc2NzZmZTU3NjlmN2FhZTc4NSByZWxlYXNlMjItbWFpbnQKKzI2NDg2IDkwODA1ZmNjNmM3MDI1NzNmMTE4ZWI5OWRiYzdkYTI2ZGQzNzUxZjQgcmVsZWFzZTIyLW1haW50CisyNjQ4NyAzNjhlODA4MWU3M2M0ZGJkMjgwNDNlYmUxYzhiYWEzZTY3OGRmMWNiIHJlbGVhc2UyMi1tYWludAorMjY0ODggNzA2NTBhZTFhMmNmMDAyM2YxNzM4MWJlMjhkZWZiNzg0MTA0MjBlOCBsZWdhY3ktdHJ1bmsKKzI2NDg5IDVhYWYzZDdiOGQ4YzA4OTNiMTUwZWYwZGI3NzllZDBmYmU0NDg2ZGYgbGVnYWN5LXRydW5rCisyNjQ5MCBhZDQ0YmYxMTc5ZWIyNTRiNWNhOTdjNzU1ZmNjYmZlMmJjNTU5YWNkIHJlbGVhc2UyMi1tYWludAorMjY0OTEgZGUwOWI4NzRmMDdhNjg4Y2NjNjYyNzBiNzgzZTdhYjA1ZDI4ODEzYyByZWxlYXNlMjItbWFpbnQKKzI2NDkyIDkwYWRiY2Y2MjAxMzYxYzdkYmI4Y2M4MzUzOWFkOTc3NTAyYzQ0NTMgcmVsZWFzZTIyLW1haW50CisyNjQ5MyA2NzU3OGE4MzBkODFjYTM5MjZlYmU2OTZjOTE5ZTAzOWI1ZjAzNTI4IHJlbGVhc2UyMi1tYWludAorMjY0OTQgNmRhMWY5OTE3ZTliM2U1MzM1ZmI1NWFiMzgxYmQ0MmE1OTdmN2Y0OCByZWxlYXNlMjItbWFpbnQKKzI2NDk1IDQ2OTRhMGRmMTc0ZTQ4Yjk1MWJhZWU3YjliYzVjY2VkMWNmMzA2M2MgcmVsZWFzZTIxLW1haW50CisyNjQ5NiBhMDQ3ZjE2ZmI4YjNlNzIyMGM5MjE1YjQ4ZDI3NTI0ZTY4MTllODA3IHJlbGVhc2UyMi1tYWludAorMjY0OTcgZDliNzFmNjI4MTRmOGQxYTVmZTZkOTUxOWY0MWI4OWNjNWNhMjljOCByZWxlYXNlMjItbWFpbnQKKzI2NDk4IDkxYTIyMjhmMzAyMWI3OTJkMGRkOGQyMjNlOTYxNDk1Yjg0MmIwNjIgcmVsZWFzZTIyLW1haW50CisyNjQ5OSBhYjUxMjMyNzRjY2ZmM2Y2ZjBlYjk0NzhlMWNkYmNmZjI2YWFiODk1IHJlbGVhc2UyMS1tYWludAorMjY1MDAgMmExMTE0NGY4ZjBjMDc3ODM2NjE5OThhNGI2N2ZjY2NjMTdjMDVkNSByZWxlYXNlMjItbWFpbnQKKzI2NTAxIDQ2ZmZiMTQ5ZWE3M2E0NDE0NDI2NWIyZWRhYWFmOTk2NzgyYzMxNzEgcmVsZWFzZTIyLW1haW50CisyNjUwMiA4YmEzMGUyZDhhZTY1NmQyZTI3NmQ1MWM4Y2E3NWRkNGMxOGUyN2NjIHJlbGVhc2UyMS1tYWludAorMjY1MDMgYjdmOTUwNmU2MGM5NGZlMDFmZjZmZDk2YmI5NzM2NWUzODgyNzZmYiByZWxlYXNlMjItbWFpbnQKKzI2NTA0IGE1NzVlNmVlODVkOTk2OTU1MTRkMWE5MDU1Njc0MGJhMGNlYmMxM2YgcmVsZWFzZTIyLW1haW50CisyNjUwNSBhMzZmOWZiMmM0MDQyYWYyNjQ1Mjg2NDY2ZTI3NmEyMzYwMjdlMzU0IHJlbGVhc2UyMi1tYWludAorMjY1MDYgMGVjZWY4YmZiZDRiMDIwMDI1OTc3NDZjYTRhNDk4MWU3ZmMwYmEzNSByZWxlYXNlMjItbWFpbnQKKzI2NTA3IDYxY2MwODc0NWQzMTU5MzYwYWIzNGE4YWUwYzlmYzZiMDgzYmRlNmMgcmVsZWFzZTIyLW1haW50CisyNjUwOCBkYmYwMTNjYzNkZWVlMGE0NWZlYzk0NmRmMTMwMWM0ZDc2MjRlMDgzIHJlbGVhc2UyMi1tYWludAorMjY1MDkgYzQ2MDljYTE3ZTNlYTBkMDc4NTNiZmIzY2RmMDIyOTVmMTE4Y2NkMSByZWxlYXNlMjItbWFpbnQKKzI2NTEwIDYyZmFiYmQ0NTdiZTZiNGI0OWNiZWRhZGUwODkxMjE0OTU0OWI5MWYgcmVsZWFzZTIyLW1haW50CisyNjUxMSA1MjI1N2FmZmUwYzllYTNhYTUzMjc3ODA2NzhjZjIyMDkwMmFlOWY1IHJlbGVhc2UyMi1tYWludAorMjY1MTIgZjc2OWI0OTU4ZTY2NjM5ZmJmNmMyMzdiNmU3YmM0MzkxZTA1YTU1MCBsZWdhY3ktdHJ1bmsKKzI2NTEzIDk1MDUyNzE1NjUxYjYwMGQ2MDRlZjU5NzRiOTZhMDU5YjUxYjU1OGMgcmVsZWFzZTIyLW1haW50CisyNjUxNCA5MzY4NTY3YTEwNDdjZTc4Yjk4YjkyZTdhZDg2OTkzYWVjOWM1ZjUwIHJlbGVhc2UyMS1tYWludAorMjY1MTUgMWViNDJmYzY4YjVmODVlOGYyOWNhYjZhZjMwMzBmZTg2M2ZkODc4ZSBsZWdhY3ktdHJ1bmsKKzI2NTE2IDYxZWI3MTgyNTM1ZWYwODUwOWNlMDZmOGY4YTg5MjI1OTgzM2RjNjggbGVnYWN5LXRydW5rCisyNjUxNyBhYWU4MTRmOTRiYWRkZmFkMDg4OTcyYmUyYWY0MTdlNjllNjM3NGI2IGxlZ2FjeS10cnVuaworMjY1MTggNTRhZjQ0OTY3NjA0NTVmNTVkMTllZGRjNDcwZjA5OTAzNGZiZWU4MCBsZWdhY3ktdHJ1bmsKKzI2NTE5IDRhYjIxZTM1NDQwM2UwNWJmYTFjYzVlZGQ1Njc4NDZiZWVhMWZiYTggbGVnYWN5LXRydW5rCisyNjUyMCBmY2EzNzljMzA5MDZlMWQ2ZmFjOWJjYjRhODVlYmQ5MzE0YmUyZTA3IGxlZ2FjeS10cnVuaworMjY1MjEgYzU0OGU3MjZiM2JjOGJlNmM3ZGEwYmVjZDZlYWE4NTIxODc1YTlkZCBsZWdhY3ktdHJ1bmsKKzI2NTIyIDM2MmMxYjgxZWU5Yzc5ZWI2ZTZhZjNlMTc3MDhiYzlkZGNkM2U3NWIgcmVsZWFzZTIxLW1haW50CisyNjUyMyBkZDQxNjM3NGFiMzg2MmUyZWFkOTBkM2NhNmZhMWZmNjU4ODIxMzY3IHJlbGVhc2UyMi1tYWludAorMjY1MjQgOGMxNDQyNDViMzE1Y2Y0NDRjYWUzNzNhMjViYzk1MmZlNWJjOTkwMSBsZWdhY3ktdHJ1bmsKKzI2NTI1IDg4M2Q2OWRlNTYwYmZmOTExZjczMmZiOTA0Mjg4N2M2YmI0NDVmNjEgcmVsZWFzZTIyLW1haW50CisyNjUyNiAxOTVmZTVmZjUwYWI5MDBiMWMyNTJkNGMzODhmZmRjODJhYjczNjllIGxlZ2FjeS10cnVuaworMjY1MjcgZjBkYzk3YmI5YzBkZmE1NzI2ZWViZTI3OTI1MTZiMzYzZmQwZTA2MyBsZWdhY3ktdHJ1bmsKKzI2NTI4IDBhYjI0NWRlN2RkYTc0Y2RjNDRkNTMyY2Y2YmI5OGMxOGZmYzI5YmQgbGVnYWN5LXRydW5rCisyNjUyOSBiNjNmNGExOWViZGQyN2Y4NzI2NGEwYzllNWRhNWUxNGRjZjExNjVjIGxlZ2FjeS10cnVuaworMjY1MzAgNzEzZmY4ODlkMDk0ODU5ZDQxM2Y0ZTFiMjE5NDdjZmMwZGYyZTA2MiBsZWdhY3ktdHJ1bmsKKzI2NTMxIDNhMGEyZjA3N2I4ZjAxMDlkNGIwYTAxYmU0NzI0NDg0YTIwNjIxN2EgbGVnYWN5LXRydW5rCisyNjUzMiBkNWNlN2ZmNTMxYmQxNmJlZDAxNjFjN2E1MzI2ZDE0ODBmOGE1M2VlIHJlbGVhc2UyMi1tYWludAorMjY1MzMgZjAzNTcyMDg0ODUxYjQ5ZWY4ZmEwZDlhMDNkMzRlMGQ3Yzg0YjUwZCBsZWdhY3ktdHJ1bmsKKzI2NTM0IDJmYzk0YmE1ZGJmZjEzMjkyN2RjZTdmNTU5NTRkYTdkZWRhMTM5MmIgbGVnYWN5LXRydW5rCisyNjUzNSBlMWQwZDdjNjk5OWE1MTY3MzhkNzZkNTkwNDQyZWNkYjMzMTMxYjM2IGxlZ2FjeS10cnVuaworMjY1MzYgMTYzMjg3NjFlYWJmNTk0Y2QyM2EzYjk0OTQ3NjE1MmNmNTE5Yzc2MiBsZWdhY3ktdHJ1bmsKKzI2NTM3IDY4ZDcwYjQxMDA5ZWQ5NjQxMGNmODQyZGQ0OTNkNmNiM2UyZmQxODIgbGVnYWN5LXRydW5rCisyNjUzOCBlZjczZmY3YTk4OWU3ZjBlNTk2NDlkZWI4MWY0NDUyZjRiNjk0Nzc5IGxlZ2FjeS10cnVuaworMjY1MzkgOGNmMWVmODE0ZWU0M2E4YjhjYzhkNTYxOGFkMTBiZmQwNTBiODYwMiByZWxlYXNlMjItbWFpbnQKKzI2NTQwIDYyMTg4MjhiMGExMTJiZGVhODY2Y2IwZTRlYWIyNDFhMmI2MjAwODMgbGVnYWN5LXRydW5rCisyNjU0MSAxYTYxODE5NmUxNWE5YzU3MzAzNWRiOTYzM2U5YmI0MTFkZDIxMGFmIHJlbGVhc2UyMi1tYWludAorMjY1NDIgMWRmOTMxOGIyYjhlMDZlM2YwMWE5YTI2M2NlZGE1YmIyNDU4M2JmOCBsZWdhY3ktdHJ1bmsKKzI2NTQzIDFhNzdhZjYxMTEwNTlmYmQ3NGQ3MmFhOTJhMzBhYTBiOTY1MDc2NWIgbGVnYWN5LXRydW5rCisyNjU0NCA5OThjYzQ4NDY0ZmVmYWI3ZjAyZmYxNDZiYTgzYjAwZWM5ZTY2N2JkIGxlZ2FjeS10cnVuaworMjY1NDUgYzI3N2ViYzNjZTBmMTkxM2JhMmVjMTU5YjhiMjg0YzRiNTAxZTJkMyBsZWdhY3ktdHJ1bmsKKzI2NTQ2IGU3Nzk5OTE2NTk2ZDM5ZTU5NjVjYTE5ZDIxZjUwZGRmYzRjMmU0MTAgbGVnYWN5LXRydW5rCisyNjU0NyBiNDM1MmY1YTM0NTIyMTI0NjhkNThhYjk2YjMxN2Y2ZjI0NzVjYjZhIGxlZ2FjeS10cnVuaworMjY1NDggN2MwZThkYmNmNTdhNTk0ZWVkZmE0MTY4ZGY0NWM0OTE4NDRiZmU1MiBsZWdhY3ktdHJ1bmsKKzI2NTQ5IDJmZDYzZDc1ZTkyZjk1Mjg1NGNmOTdlZjRmMzhhMmQyOGM0OGY1OGIgcmVsZWFzZTIyLW1haW50CisyNjU1MCAzNzQzNWY5ZjA0ZDY0NTUyZmEwMDQ4NmVjODFiMzkyZDc0N2MzYTNlIHJlbGVhc2UyMi1tYWludAorMjY1NTEgMGJjM2E0MWQ0ZTQwYTI2YjY3MTc3NWQxMWViODMxMjE4NDNiYjViMyBsZWdhY3ktdHJ1bmsKKzI2NTUyIGQ0NzhmOGFmYzM2ZGQ1MTg0YzhkZDczZmFiOGZkODRmYjdkOTQyMDQgbGVnYWN5LXRydW5rCisyNjU1MyBmMWQ2MTQyMTI4ZDNlNDkzOTkyN2E5OWI4MGZmMWFiN2QwNjliODU4IGxlZ2FjeS10cnVuaworMjY1NTQgNTA4ZmQ5NTJjOWU5ZjIzZTQzZTkwNDAyNWNlODk4MWFkNmEyNzE2ZCBsZWdhY3ktdHJ1bmsKKzI2NTU1IDBjOGU3NjJhNjc3YzQ4MWNiZTI5MTU4ZWM5OTZlN2Y3NDdhYjg3MmEgcmVsZWFzZTIxLW1haW50CisyNjU1NiBmM2JlMDVlNjJhZDFhOGQ2OGQwODhhNGY3MjNiMmZhNjcyZGUyZDg1IGxlZ2FjeS10cnVuaworMjY1NTcgNjBmMjQyNTg5YzMyN2E5Mzk1MDExZDE3MmY5ZDRkZDI5YzI2ZjBlYyBsZWdhY3ktdHJ1bmsKKzI2NTU4IDY3NTliZTA4OGQ2OGJkZTY3Y2IzNDE4ZjY4NmU2ZTgzNzkwMzM0MWYgbGVnYWN5LXRydW5rCisyNjU1OSA5NTBhMjJlYjhjYzhhZGVmNWFkNjkyMmI2OGY0N2VjZmYxODhmNDE1IGxlZ2FjeS10cnVuaworMjY1NjAgMjE3ZWVhOWQ2NjE1OTU4MTI0YjdmZjU4OWM0ZGYxMDY0NjYzMWViNSBsZWdhY3ktdHJ1bmsKKzI2NTYxIGQwNzhmODQ4YWMzYjg4MGY1YzFjODc1OTllNTQzMTRjOTU1OGI0MzIgbGVnYWN5LXRydW5rCisyNjU2MiBjNDA4ZThiMjY3NWFhMmVhZTcyMTE4YWM0MWVjMjdlODkxNGE5MjhhIGxlZ2FjeS10cnVuaworMjY1NjMgNDliZjVhOGZhMTUxN2UxYmY5MWEwNTdhOWFmNDQyZjA4YTIzMjkxNCBsZWdhY3ktdHJ1bmsKKzI2NTY0IDU4M2MyMjZhZmRlNmNiMjA0YTJiZGNiN2IyNjNmOTIxYzBhZGEwODggbGVnYWN5LXRydW5rCisyNjU2NSA2ZTU2OGVlMzFhOWNlYzA4MzBhNWQ5YjBiMDg5ZjkwMzAzY2UyNzJlIGxlZ2FjeS10cnVuaworMjY1NjYgOGY5YWQyYzA1ZGFkZWE5ZTVjM2U0MTRiMDcwMDk3YmNmOWUzYjA2ZCBsZWdhY3ktdHJ1bmsKKzI2NTY3IGZkNjA5ZDJjMTY2OTFmMDIxMDJmODc5NTVmODViOWU4MWUxNDExZTcgbGVnYWN5LXRydW5rCisyNjU2OCA1YzMwMTc3NTY2NWQ5Y2ZhZDg1ZjlkZjdjMzkzM2U1MTYxNDE2NmIwIGxlZ2FjeS10cnVuaworMjY1NjkgMzgyZTM3YWMzNzRkYTJjYTc1NGQ3NjZiZjllY2E4ODI1YjEyMTUzMiBsZWdhY3ktdHJ1bmsKKzI2NTcwIDZiMmFmNmRhZmU3YzczZjU2OGEyZjRjMGRlNTlhNWUxNDRiYzhkY2QgbGVnYWN5LXRydW5rCisyNjU3MSAwZTQ0OTdmYjJkZThkNGExMDk0ODFmZmQyMWZmZmM3NzM4NDI3MDAxIGxlZ2FjeS10cnVuaworMjY1NzIgZTE2ZGJmODc1MzAzNzM4M2JlODVjMTY5YzFlMjRlMTgyNGU3ZDMzNCBsZWdhY3ktdHJ1bmsKKzI2NTczIGVmOTE5ZDI5NWExMjBkNjU4NWE4YjA0ODk4YjBlNzc5N2M1MDU2M2UgbGVnYWN5LXRydW5rCisyNjU3NCAxOWY1M2FhNGUxZTUxNDc3MzI4OTQzYmY5ODVmMDg3OGEwMWQ2MzIxIGxlZ2FjeS10cnVuaworMjY1NzUgZDhlOWY2ZjU3ZjEzMzY1MzM5ZmI0OGM5ZDRhMTI4ZjJjOWQ4NGE1YSByZWxlYXNlMjItbWFpbnQKKzI2NTc2IGIxOWE1YWRiNjk5MDA0OTNhNmI2YmMzMDNmMzc1OWYwNTc4NzJhMTkgcmVsZWFzZTIyLW1haW50CisyNjU3NyBiYTg4OTk4OWE3ZWIwMWZhZGYwYTZkYjEzNjkyOTkxMTc0YjM1OGFjIGxlZ2FjeS10cnVuaworMjY1NzggZDYxNGFlOTQ4YmMzYWUzYjViZWIxZjdmMjZiYTRhYzFmODI1NjJkMSBsZWdhY3ktdHJ1bmsKKzI2NTc5IGIyMzZkMjA4MzBmZTUzZDU4ZjI0YmVhYzc5YmQ1MzhiMWUzYTc0OGIgbGVnYWN5LXRydW5rCisyNjU4MCBiMDhiNTFkY2UyNjRlM2Y2NDE4OGU3NGRkOWQwYjk1YjY4Njk3Y2EyIHJlbGVhc2UyMi1tYWludAorMjY1ODEgYmQwOGM2OTU1ZTliZGQxNjQ0NTA5ZjhiZWM1ZDQ1M2VmODBlNWUwYiBsZWdhY3ktdHJ1bmsKKzI2NTgyIDU1NGYyMTk3YTdhNzZjOGY3MzkxMzM1YTRlN2JjMWFjMzQ3OGJlYjcgbGVnYWN5LXRydW5rCisyNjU4MyBhYjRmYTc4YWZkZGY2MTlhMjZjN2ZjY2JmZWRlNjkyOWU3ZGYzOWQzIGxlZ2FjeS10cnVuaworMjY1ODQgZjVhZWVhYWYwMzk3NGUxZTdlNWVmN2EwYmE2MjIzYjg3NWRlYmQxZSBsZWdhY3ktdHJ1bmsKKzI2NTg1IGVkNWQ3NTkxMmQ2MGRhOTFkNWI5M2YyMzY2MTAxNzRkM2ZhYTRkYWEgbGVnYWN5LXRydW5rCisyNjU4NiBlNjM5ZTM0ZWY5MDExZThmM2FmMzhiN2M1YzFhZWQxMWJkYTA5NTU3IGxlZ2FjeS10cnVuaworMjY1ODcgZGQzNTBiNjM5MzA5OTk0NjhkMzhkMGNjYzI3ZTIxYzZkYmU4MWJjOSByZWxlYXNlMjItbWFpbnQKKzI2NTg4IGE0MzE4OTIzYzdhYTMzNDg2NGQxYjZjOGIzNTZjYTUxOTQ0MzU3MzUgbGVnYWN5LXRydW5rCisyNjU4OSA2ZGI2ZTNkYzgzNjZiZWM2NjY0MjVlNjdjZTAyYjdhMzRkMTQ4MTU0IGxlZ2FjeS10cnVuaworMjY1OTAgMmI0N2QwZGNmYTY2NmE4ZDU4MWMzNGIwYTZhYmI3MzhkNTE1OTVlZSBsZWdhY3ktdHJ1bmsKKzI2NTkxIDg2MzEyNTU0NTMwMTU5MzA2YjRmZGM4NDRlZmQ0NjBjYWRhNTE2MzUgbGVnYWN5LXRydW5rCisyNjU5MiA4YmI5MGU4YmYzNjNkM2QwZjRkZWZiMTczMjczZTUzZTc2ZWQxMThhIHJlbGVhc2UyMS1tYWludAorMjY1OTMgZDMyNTQzMzM3YTIxNzVlNWJkZTczODk5MzkwZDFiMjEwNDJhMWM4NCByZWxlYXNlMjEtbWFpbnQKKzI2NTk0IDQwYTE4ODA1NTM2OTFmY2M5OWIzZTVhY2I4NDVjMjU2OTJhYWYyN2IgbGVnYWN5LXRydW5rCisyNjU5NSBhZWYyNDhjMTY0NWEyNDJiYmM3MTVlMDYzMWNlOTA2YTRlMTBiYWUwIHJlbGVhc2UyMS1tYWludAorMjY1OTYgNzcwYzJkMmY1NDcyOTliZDUxMjMwNjAxNWVkYzUxMjI0YTQyMDRkNSBsZWdhY3ktdHJ1bmsKKzI2NTk3IGY1MWQxYTJkNGE0YTFmYWQxYWEzYmE0NmRlNGI0ZGI1YzA0MmEwNjYgcmVsZWFzZTIyLW1haW50CisyNjU5OCA1ZDEzNWU0MTRjNzY0MzJkZDNlMjE0MjE5OTFjMmYyOWUxNGRiZDc5IGxlZ2FjeS10cnVuaworMjY1OTkgZDMyOGU1YmI4YTg4MGY2NDgyNThiMjhiMTUxMWE4N2U1OTQzOGE2YiByZWxlYXNlMjItbWFpbnQKKzI2NjAwIGRhYmIwYTNmNDdhNTU0MjAyMDUxZmI4ZDVkNjc4YmRkYjJiMmQ2ZGMgbGVnYWN5LXRydW5rCisyNjYwMSA3NmM0NTAzNzExM2ZkYTM2M2MyMDk1ZjJiMmU0NWM4ZWY1MDRkYjc1IGxlZ2FjeS10cnVuaworMjY2MDIgMzA0NThhMTFiNWUwOTNhZDUzMGFmZjllODQ1NDNhZWY4NzcyMDFjZCBsZWdhY3ktdHJ1bmsKKzI2NjAzIDRlMjM0Yjg3MTcwYjA4ZWUyNmE1ZGFkOWE5YjdjOGI0NmQ4YjMyMmUgbGVnYWN5LXRydW5rCisyNjYwNCAyNGIzZWFkODljYWU4NzgzNjBlNDNiOWUzZTJjZWYzYWUxZWRlNjUyIGxlZ2FjeS10cnVuaworMjY2MDUgOGZlYzExMGU5ZDAyMDg0OTBkYzkwYWQyZjZmYTc2MDZmN2Y4MWI5OSBsZWdhY3ktdHJ1bmsKKzI2NjA2IGUwNDcwZjJkZDQxMGU4YmI3NTIxZjQzODNlZThjMDA1YmUzMWZmNjggbGVnYWN5LXRydW5rCisyNjYwNyA1ZmRhZGM5NDI2NjUwMmQ3MjY3M2RkMmYzZmYxMjU0MzQ4ODA1NzgzIGxlZ2FjeS10cnVuaworMjY2MDggYjBiNjMyMTA2ZmQ3NjVkMWNhYmQ5Y2Y4MThjNTRlNmU3M2QzODYwNyBsZWdhY3ktdHJ1bmsKKzI2NjA5IDk3NjUwZWRmNThiYjE3ZGIzOTYwMjI1ZThlZDFhZjFiZTY5MGU1ZmQgbGVnYWN5LXRydW5rCisyNjYxMCA1ZTgwYWQzNmQ4ZmZiYzQ0YjE0MmI3ZmI0OGY1ZjE1YTJlOTlkNjE5IGxlZ2FjeS10cnVuaworMjY2MTEgMjg0Y2ZjYTc0ZGY0MGQ2MTM1NmQ0MWZiYTBjYjZmMTA5ZWYwYWNjYiBsZWdhY3ktdHJ1bmsKKzI2NjEyIDQwNWIyOTFjMzIxZGEwZTkxYzExM2FmYjA0OWM3NGFiYzZmZmI0NDAgbGVnYWN5LXRydW5rCisyNjYxMyA0ZjMzNWNhM2YxMWNjMTg0NDE4MWMzMjZkMDE5YzU1YmUyNjM0ZTQ0IGxlZ2FjeS10cnVuaworMjY2MTQgNzJjYTBmZDRkY2E2YmY1NjU4YTIwZWY2NTMzYzFkZDNkZTBhNDI5ZiBsZWdhY3ktdHJ1bmsKKzI2NjE1IDliMTc1MDE4ZmRlZjc4NWNhMmM5ZjdlOTUyMGNiNTY2MjExZWM0NTMgbGVnYWN5LXRydW5rCisyNjYxNiAyOTIyMTEzMjE3Njk3YzFiMDcxY2I3OTM0ZDhkYjVlZjRkMGIyNzAyIHJlbGVhc2UyMS1tYWludAorMjY2MTcgYTgzOWE2YmU4NTc4OGQ1MDM3MDRhZjRmNDZjN2YyOTYzNTM0ZWNjYyByZWxlYXNlMjItbWFpbnQKKzI2NjE4IDY2N2IwMjZhODlkOTBlMmU0OGMxZjIwMTg5MjYwZTNjMDI2NGFkYzcgbGVnYWN5LXRydW5rCisyNjYxOSA5YTliZWMxMGFhOGM2Y2QyOGI3MjllYzAwMDBmNGU2MTY2NzFmNzM4IGxlZ2FjeS10cnVuaworMjY2MjAgMWNmODg1OTMxNjY5MzkwNzI4YmY3OWI3YzM5NmRlNzA2NzBiYTUzOSBsZWdhY3ktdHJ1bmsKKzI2NjIxIDllMzUzMmI3NTQ3MWU2OGY2Y2NmNjk4OTZkOTEzYmY4Nzg1ZTk1OGYgbGVnYWN5LXRydW5rCisyNjYyMiBlNTI0OWE2Y2MxZDg3ZmU2YzNlMzI5NDY4ODQ0OTc2MDNhMDk4YzQwIGxlZ2FjeS10cnVuaworMjY2MjMgNzM1Mzk3N2Q2YjY0YWNmMjBiZjI1NWY3YmNmMWRhYzE0NzMzZTI1YyBsZWdhY3ktdHJ1bmsKKzI2NjI0IDM3ODEyZjJiYTFhYWJlYjU4YWI0MTgzY2UxZTRlMTc0YjU2MGNhMDggbGVnYWN5LXRydW5rCisyNjYyNSBiNTcyZjdhMGJiNTYzNWM1NmY0ZGY3ZGI5NTRiOTgwN2IzN2JlMDI4IGxlZ2FjeS10cnVuaworMjY2MjYgOGQ0YjI1Y2VlZWZlOWY5MThlY2Y1ZWYxNTdjYTBlZWQxZWJiZjgyMCBsZWdhY3ktdHJ1bmsKKzI2NjI3IDdiNjZjZDE1ZGNlOTkwMzFhOTdhNDA2YzE0NGE3YzIzMzc5MzM2YmEgbGVnYWN5LXRydW5rCisyNjYyOCAyMWNlNWQ1ZTBlYzcxNGE5NmNiNjcyNzUwMDMxNzE3YmY3ODM4Nzk2IGxlZ2FjeS10cnVuaworMjY2MjkgNDkzMjA2YjcwMWRiNTE3NDE5Y2QyZjg3ZTM0MTc1MGY0YzZiMzczZiByZWxlYXNlMjItbWFpbnQKKzI2NjMwIGVjMmE1NTU5ZTc2OTViYmQ2ZTc1NmZlNWZiNjFlYjJlZmFkNjM2NjQgcmVsZWFzZTIyLW1haW50CisyNjYzMSBmOTcwNTg4ZTg5YjEwZDMyZWVjMDlkNzJmOTA3ZTEzMWNjYzUzYWIyIGxlZ2FjeS10cnVuaworMjY2MzIgODAzZTZhNjk1MzA2NGMzOTllMzM3OGIzYTVhM2ZhMmI3MmY1OTliNiBsZWdhY3ktdHJ1bmsKKzI2NjMzIDU4Mjg1NWY2ZDM1YmVkZmIwYjE2N2NhY2IyY2RiMWZkYTZhZDdkOTEgbGVnYWN5LXRydW5rCisyNjYzNCA3MGEwODk3MjIzOTM1YmYyMWNhMmYwNDQwNDgwNjg0NGMxN2ZhM2IzIGxlZ2FjeS10cnVuaworMjY2MzUgMjljYTllMTJiZjEwMTlhMmM5YjdlOWVkMDVhNjE5OGEyN2E1YTAzZSBsZWdhY3ktdHJ1bmsKKzI2NjM2IGQ0NzI5MGRkMmQ1N2U2NTE2NTYxNGRmNGIxZjllZThjOGUwYTZlZGQgbGVnYWN5LXRydW5rCisyNjYzNyA0NjQ1MGYxN2EwNzA1NjFjNmY1YWM4NzIxMjBmMjc2NDVmZDg4ZDkxIGxlZ2FjeS10cnVuaworMjY2MzggMzE0ZTA4ZTgwOTBmYjRkOTBhNmZiNGM1YjExOTUyYTI0ZjI1YWYzYSBsZWdhY3ktdHJ1bmsKKzI2NjM5IDVmNWNlYTI3MmI0NjIzMWMwOGUxMGU2MmNjMmUzMjdmYWRiOTQzZmMgbGVnYWN5LXRydW5rCisyNjY0MCAyMDA1NTlmY2M2NjRmN2I2NmI5MzgyODI1MWUyY2Q4MWIyM2E1YTdiIGxlZ2FjeS10cnVuaworMjY2NDEgOWUyMmE4NzAyZGUyZDg0ZDQ4Y2VkYTg3MGRkYjBmNzE4YTYwMzBkMiBsZWdhY3ktdHJ1bmsKKzI2NjQyIGY1ZmQ3ZTI5NTg5NzU5NWNmMTI3NmQzNWJmZTM1MjczMmI2NmE5NmUgbGVnYWN5LXRydW5rCisyNjY0MyBhNGU3NWQ1M2QzMmI0ZjU3N2I1NjFhZDVmYTA0YTQ2YWVkOTI2ZDk3IGxlZ2FjeS10cnVuaworMjY2NDQgM2VkZGQ5ZDY4YWY3ZGJjMDQ1ZjFkNjlhOGYzMDJiN2QxMjJiMjViYSByZWxlYXNlMjItbWFpbnQKKzI2NjQ1IDAwZjY2MzYwYmUxOTg2MDY1MjM0M2JhYjc5ZWExNjIxMTIwYmU2NjMgbGVnYWN5LXRydW5rCisyNjY0NiBhZmUyNjM2NzJmZDg0YmFiYmQzNTM4NWE0MjhjZmQ1MjE0MTFmZTc0IGxlZ2FjeS10cnVuaworMjY2NDcgZTExNDcxYTA2MjZjMTIyZDQ1YTkxODg3NDgyOTFkZWIzN2NjNjJlOSBsZWdhY3ktdHJ1bmsKKzI2NjQ4IGI2MGI3M2Q0MWViNGE4M2RlNGYxYWQ2MTg5OGY2OGQxNjlmNWE1NTAgbGVnYWN5LXRydW5rCisyNjY0OSA0NzI4YmVkZjRiNzg5YTcwNTE4ZTgxMmZlYjM2ODFiMTcxMzZjZDZiIHJlbGVhc2UyMi1tYWludAorMjY2NTAgN2M2MDk0YjE4ZDE2MTAwYWU5ZDQyZDQ3OGI0NzNhMzYxYTE4N2IwOCBsZWdhY3ktdHJ1bmsKKzI2NjUxIDVkZDUyYTliMDQzOGE4Njk1ZmMyODQzNzRjYTVmYTUyZTBlY2Y4MDcgcmVsZWFzZTIxLW1haW50CisyNjY1MiA2NTYxMGJjNGU2YTU3M2YwNDdjNTRkMmRkOTk1MDkxMTNkNDRhOGQ4IGxlZ2FjeS10cnVuaworMjY2NTMgYjkzZWQxYTRlNDlmMWE4NjkyZTAxOGEwOWRhNTE2NDNjZGIxNGFlMyByZWxlYXNlMjItbWFpbnQKKzI2NjU0IDhmMWIzNzFmZmJhZjYxZDdhYjI5M2RiNDcwNzI4NWQ4NTI5OTkzMGYgbGVnYWN5LXRydW5rCisyNjY1NSBiNzM1ZTg5Y2NkYTc0ZjgwZDcwMmYzM2IyZjZjMjdkYTRkYzFjNTQ2IGxlZ2FjeS10cnVuaworMjY2NTYgNmZhNzZiNGU1OWZlZmU4MWM1MTExOThjN2Y4OTY1ZDAyYTI3OTM3NCBsZWdhY3ktdHJ1bmsKKzI2NjU3IDE3Y2FmZTgwNWYwNDVmNjUyYTY1MjM0OWQ5Zjg1M2M4ODA0ZmNmOTAgbGVnYWN5LXRydW5rCisyNjY1OCAwOGU2Zjk0ZjNhYjAwNzk4NDYyMjVjYzNjNmU4ODQzMjA1Mjk2NGY2IGxlZ2FjeS10cnVuaworMjY2NTkgNWE2YmU4ZmE4ZGUyNGU2YzdhZmEzNzk3ZDUzNzE1OTBmMmZiNGRkOCBsZWdhY3ktdHJ1bmsKKzI2NjYwIDAxNDc4YTEzMjkwODliODAyOWNlMWNlYTgzN2JjMzM0ZWYzMDk1MDQgbGVnYWN5LXRydW5rCisyNjY2MSBiNWY2ZTlmNmU3ZjRiNzk4ZGUwODYwNzZiNTIwMmUzYThjMGM2OWU2IGxlZ2FjeS10cnVuaworMjY2NjIgNTczMmE5Y2M5MWM3YTk0MmIwYmZmYTM3ODhkMDZhZWJiN2I5YmU4MCBsZWdhY3ktdHJ1bmsKKzI2NjYzIDUzZWJhZTc4MjNkOTc0MmYzNTE0YmNkZDE4NTk4ZWFhMzcyMDcxYzAgbGVnYWN5LXRydW5rCisyNjY2NCBhMjE1MzI4NTY1MjQ2MDA5Njk2MmQzZmM0ZmIxZmIyZTQxNzUxNjc5IGxlZ2FjeS10cnVuaworMjY2NjUgMjBhN2IyY2YzYzFmZTM5NWU3ZTViNzNhOWNkMjkxNGYxMTc1MDYzNCBsZWdhY3ktdHJ1bmsKKzI2NjY2IGVmNmUzMWYwY2VlMTI3NjE2YjdiNzBhZWE0MWJiNDI3NzkwNGQwNGIgbGVnYWN5LXRydW5rCisyNjY2NyBjZjk2NDBiZTZmOGE5NTIwZTNmMjFjZDFjNmFhZWMwYWQwYzI3NWQwIGxlZ2FjeS10cnVuaworMjY2NjggOGFlN2I0MGFjNmQwN2ViZWQ2NTcwZDQwNWRhZDcxZTBlYWVlNzY4ZiByZWxlYXNlMjItbWFpbnQKKzI2NjY5IGQwNTMyYWUwNWVkNzJhYzJjNzFhOTNkMmIwOTQyNDkzNTQxNzc3ZWQgcmVsZWFzZTIyLW1haW50CisyNjY3MCA0Y2U2MTE2NTBkMGNlODdlMjM3MDMwMmI5NmIzZTk1NDFkMWFiODc4IHJlbGVhc2UyMi1tYWludAorMjY2NzEgMDE3NjVkMzA1MzJlMjlkNDZmYmI5NDRkYWM4NDhlYzA5MDFkMDg2OSByZWxlYXNlMjItbWFpbnQKKzI2NjcyIGJhNjcyMWFlNGI4MDkzM2NiNWI4MmUwMzVkNzBiNzgxYzQzZDJmOTkgcmVsZWFzZTIxLW1haW50CisyNjY3MyA1ZGJjNzllZTA4ODViZDU2M2MzNGZiM2FkYTAxNGUwMTI3ZWFlMGVlIHJlbGVhc2UyMS1tYWludAorMjY2NzQgMGIwODljOGFjMDc3MzAxMmVjNjBmNjkzZWNmZGYwMzU3ZTE1NDI1YiByZWxlYXNlMjItbWFpbnQKKzI2Njc1IGFhYjQyNzNhN2NmNzE2NzM5YWQ2YWU2NmZlNmI4NDY4YzE3ZWNiOTYgcmVsZWFzZTIyLW1haW50CisyNjY3NiA0YzhmNWE4OTBmOThiZWVlZjM3NmJhYWJiM2ExYjZmYjE0MDhjY2EwIGxlZ2FjeS10cnVuaworMjY2NzcgMTMzNzYzMzMyNzY3MzQwM2FmOGMwYzJmM2YzZTdjYWI3ZjIxNGRkZiBsZWdhY3ktdHJ1bmsKKzI2Njc4IGFmMWZmNDFiZTQ3Yjg0NTMwNmM2ZWJmN2QyZmQ0Njc0MTgxNDhhYjQgbGVnYWN5LXRydW5rCisyNjY3OSA0NmNmYjg1ZjBhYWU3NjA0MDdlMzRiM2I0Yjc1Mjg4NDBmNWYzMmQ2IHJlbGVhc2UyMS1tYWludAorMjY2ODAgYTQ0M2U1ZTVlY2U3ZjYxYzJjYWJjYWEyZTZjNzBiNTQzMDZkNDgyOSByZWxlYXNlMjItbWFpbnQKKzI2NjgxIDIzYmY2ODc3OGEyYTg1YzI5MWFiYWYxZmQxN2RlYzI5NmYyYTE5YmMgbGVnYWN5LXRydW5rCisyNjY4MiAzODg0NDkzNzA5NDYyNDdmMDdlNzdhODdlM2M5YjUyNGIxMjdiOTQwIGxlZ2FjeS10cnVuaworMjY2ODMgMTc0YmEwM2M4OWZiNDgxM2E0YThmYWNiNGM4ZWFmZDFlZjdjYjMxMCBsZWdhY3ktdHJ1bmsKKzI2Njg0IGFmNDk5YjUwYTA5NDY0M2M3N2Y3YjZkMTI3NzcxMzJmZTdjNzhkMzQgbGVnYWN5LXRydW5rCisyNjY4NSAzYzdiMjJkMTEyZDM1ZTNjZjIzZWU3M2MzZTI5NTk2ZWQ2YjkzZTdhIHJlbGVhc2UyMS1tYWludAorMjY2ODYgMTgwNmQwMmMwOGM0NDdhNTJmYWMxOTQ2ODU1MDljNDE1MzA3ZGI5YSByZWxlYXNlMjItbWFpbnQKKzI2Njg3IDY4OTI2ZDBhYWQ0MDNiZjhhNGRhYmRmMDMxYzNiOTRmOTA3NTU3YTMgbGVnYWN5LXRydW5rCisyNjY4OCBiYTI5MDEyODdjYjdjYTg2YmZjZDMxOTE5MTJmODZiMTgxOGNhNDkzIGxlZ2FjeS10cnVuaworMjY2ODkgOGI1OTI2MDMyYjU2YTIwNWE0Y2FlZjNlZTEzZjYzYmY2Y2UxZDUyYiByZWxlYXNlMjItbWFpbnQKKzI2NjkwIGZmZDVkODZlOTZjZWIwZjkyNDExZmFkYzM3NjVjMGZjZThlZTM4MWEgcmVsZWFzZTIxLW1haW50CisyNjY5MSBjMzMwNzdkYzBjODNiOWMxOWRhNjI3OTQxYzA1MGE5ZWVjYTNkYWViIGxlZ2FjeS10cnVuaworMjY2OTIgYWFlNmRjNmIyYTU4OThlMzJjMTAwYzdmNDU4MTA2MmM1ZmRjY2ZhNSBsZWdhY3ktdHJ1bmsKKzI2NjkzIGMxZDFhZTE1ZGU5MmM5YWY1NDY2OWYyZDk3NGIzMDBlOGZhMzg4NmUgbGVnYWN5LXRydW5rCisyNjY5NCBjZDAyYTM2NzA0ZmVmMjNhYmE1MzkxMTE4Nzk1ZjY1OWMyMjMwN2FkIGxlZ2FjeS10cnVuaworMjY2OTUgYzkxN2ZlOWJjNjU0ZmU5NjYwNjE3NzBkYzQwZDRkYjVkYzQ4NTljOSBsZWdhY3ktdHJ1bmsKKzI2Njk2IDNkZWJjOGMzNGNjOTEwYzgyMzcwOGRkYmM1YWUyYjUwZTk4YTBjYmUgbGVnYWN5LXRydW5rCisyNjY5NyA4N2M5OGFmNjFmYzRhYjk1Y2YwMzRmZmJjZmY5NmRmZWY4OTU5MDY2IHJlbGVhc2UyMi1tYWludAorMjY2OTggODM4NDI3ZjBhZjIzMmQxNGRhNDY5ZTFlMWEzMDIyZmFmODM0MDQ3OSByZWxlYXNlMjItbWFpbnQKKzI2Njk5IDk3ZTBiNTA0YzAwMDk4ODFhZWI5NGVhYmI5NTY4NTIwMTA1NzllODUgcmVsZWFzZTIxLW1haW50CisyNjcwMCAwMmQ1MjgzYjFlMjFmYzYyZTZlOWFjMTliODZmODU2YTkwNjFkZmE2IHJlbGVhc2UyMS1tYWludAorMjY3MDEgMzY5N2EzMzY0MDBmYWJjMjYxNDA2NDY2YTY3MDE3ZWJhMGYzMWEzOCBsZWdhY3ktdHJ1bmsKKzI2NzAyIDU1NDIzYzFhYmNkMTQ5ZGU4ODMwZTVmYTY4ZjdiM2RiZDdlZDBkZWQgcmVsZWFzZTIyLW1haW50CisyNjcwMyAxMzA1NmI2MjY3YTI1ZjE2ZWNhMGVhYmY5YzY2YTdjNzZmZWVjYTBmIHJlbGVhc2UyMS1tYWludAorMjY3MDQgMDNiMWU5ODliMWQ5Nzc0NThkNzdiYzZkMzk2NTE2YjBkZDA1Y2RhMCBsZWdhY3ktdHJ1bmsKKzI2NzA1IGJmZmM3MjM2YzRiYTI4OTE0N2RlOGRkOGFhYjdhMzcwOWM4MTU0ZGIgbGVnYWN5LXRydW5rCisyNjcwNiBkOTNmNTM3YTc1MmI4ODZlZGVhNjRhZGZiZTE4Y2Q5Yzg4YjU0ZDczIGxlZ2FjeS10cnVuaworMjY3MDcgODdjNzE2YjI4YTNlY2YwYjBmYjcwZGY0ZjdhMmIxNTg1MTA1MjkxYSBsZWdhY3ktdHJ1bmsKKzI2NzA4IDJkMmZhYTUxZGNmZGFlOGNlM2UwMTI5MDQ0NGUyNjg4YzQ0MDYyMjIgbGVnYWN5LXRydW5rCisyNjcwOSBhYTA4NTU0ZDFhOWI0MWFiOWEyMzI0NzZjMGQwY2I0NjY2OWJiYzk3IGxlZ2FjeS10cnVuaworMjY3MTAgMWM5Y2UzNGQ1MjlkYzM4ZjI5NjA3YzRkY2E2NzU5MzBkYTQ4OTU4MiByZWxlYXNlMjItbWFpbnQKKzI2NzExIGI0OTFhYjc4NzdkMmQyYTI1YTk3OTM0YmJiMGYyOTAyMDI0ODY5YzggbGVnYWN5LXRydW5rCisyNjcxMiAyMzhkZmVjOWM4OTllOGUzM2RjNDc4MTBiNTdjOTE1NzlmY2RhMzdhIHJlbGVhc2UyMi1tYWludAorMjY3MTMgOTgxYzZiNmZmMmYxNzIwMTlhOWQ0MDA5YmViM2JhYzI5YTIwOGYzZCByZWxlYXNlMjEtbWFpbnQKKzI2NzE0IDljOWUwNzM1OWQ2ZTY0MDQ3YTljZmFlZWU3NzZiMjVjZDAxODI2MjUgcmVsZWFzZTIxLW1haW50CisyNjcxNSBkNDY2YmMxOWY3MzEyYWU1NzcwYmVhMTQyMjVhODRhZTk4ZjQyYzBhIGxlZ2FjeS10cnVuaworMjY3MTYgNjdiY2I0ZjUyMzdmMjQ1MjYwNzljZTVlZjMyMGFjMGRiZjYyNWVlMyByZWxlYXNlMjItbWFpbnQKKzI2NzE3IDBhNGQ2YjI0MGFiMjQ4NzdiZGVlODQxZjE3YmZjZmVlY2JjOWI2MmYgbGVnYWN5LXRydW5rCisyNjcxOCAwNjZkODI3NWFkNjQzYWJlYmY4M2JkMWFmODNhY2U4NDRhZDAzMmJmIGxlZ2FjeS10cnVuaworMjY3MTkgZmQ2OWYzZWU3N2VhYzFmNjJhMjY3NDIxMzQ2ZGQ4M2I4MmJiN2Q2MSByZWxlYXNlMjItbWFpbnQKKzI2NzIwIGVjZjA3MGMzNDk5OWU2NTYzN2FjOWFkMzgxZWZjYzgwN2ZmYmYwZWMgcmVsZWFzZTIyLW1haW50CisyNjcyMSA3YmY3Y2YzYTM1YjkwNDRjZGFjMzBkM2UyOGRlMGNmZWNhNWFkYzRkIGxlZ2FjeS10cnVuaworMjY3MjIgYWVlOGYxNmYyNzc0MWQxNjgyMDg1NDEyOGFhY2M5NWM5MDA0MzExMyBsZWdhY3ktdHJ1bmsKKzI2NzIzIDE4ZjhhN2I1NmY4OTAwMjNlYjBlYWUwOTZiYTY1YTk2ZDY4Y2U3MjcgbGVnYWN5LXRydW5rCisyNjcyNCAzNjg0MGE5ODk3MjJkN2U4NDQzZTg2ZTg5YTJkZTFjOGEyZmQ4OWRiIGxlZ2FjeS10cnVuaworMjY3MjUgYmVjMTU3ZGJlZTJlMDhhNmIyNTY2M2RiOTk0NGQ0YzJhMmMyN2NlOCBsZWdhY3ktdHJ1bmsKKzI2NzI2IDNlZmQzNGZlNjY2ODA2NGFhNDNmM2ExMTlkYmU3ZGRmYWYzMThmZmQgbGVnYWN5LXRydW5rCisyNjcyNyAzYjMyM2RmOTQ1YmI2YmYxOWNmYWUzNjViZGQ5ZGY5ZTY0ZDYzNmNlIGxlZ2FjeS10cnVuaworMjY3MjggYjI3ZjM2Y2YzZDNlMDIzZGNlYWE2ZTc3MGFhNzc4OWM4MmQwY2U3ZSBsZWdhY3ktdHJ1bmsKKzI2NzI5IGQzZDg1N2E4ODJmMGY4MzliNzcxYjVjN2NjZGIwY2Y3YWZiYjljNzkgbGVnYWN5LXRydW5rCisyNjczMCA3ZWQ0OWFmMDQ4YmEwOTNlNDczODRlNzQ2NGY3NjRmOGNiYzI5ODBjIGxlZ2FjeS10cnVuaworMjY3MzEgMTA1YmU5MzZiNWMzNmQ2Mzc4ZTcxN2E1MzI4MDZjZGNkODcxZjg5ZSBsZWdhY3ktdHJ1bmsKKzI2NzMyIGFkOTdmY2U5ZGNmZTI1ZWM2OGE2NDYzZjBiMGYxMTQ1MjViMTRmZmUgbGVnYWN5LXRydW5rCisyNjczMyBjNTY4ODhkMTcwOTg0ZTEzMmYzZmVjODhiZGY4MTg0OTJiYTcyMWM0IHJlbGVhc2UyMS1tYWludAorMjY3MzQgNGFmNjY5ZjljNDJlMDgyYjFhZTdlZjU5OWFkMmNkNjU0MzQyYTgyMiBsZWdhY3ktdHJ1bmsKKzI2NzM1IDY3NTFlOGJjZmQyOTNmY2FiMDc2NDBkM2ZlMjQ2OTAwYTUzZDcyYjQgcmVsZWFzZTIyLW1haW50CisyNjczNiAzYjgyNTY3NWQxMTk0NDcyNGFmYWI4N2Q0YmFiMTNiNDJiNjNmODI3IHJlbGVhc2UyMi1tYWludAorMjY3MzcgY2JiZTI4OWU3YzJlOTI4NWYzOGNlNGZhNzBhYzNlYmQ2NzFkYjA4NCBsZWdhY3ktdHJ1bmsKKzI2NzM4IDJmN2Q4NjlkYWQ0ZGY3YmJkZjY3MTE5MWZlNmRlZWFjMDFhZDkwZmUgbGVnYWN5LXRydW5rCisyNjczOSA0ZDZiZWFiNzY2ZTI3NGQ5ZjlmZTMyMTY5ZGJkMmQxMzUzMDA0NDU3IGxlZ2FjeS10cnVuaworMjY3NDAgZTVkZjA4NmVkNDU1MTg1MGVhYjlhOTY5NTI2NjkwNzg0ZjY4ODMyNSBsZWdhY3ktdHJ1bmsKKzI2NzQxIDliZTAxYjdiNmM4MGFiZGM5ZDMxZGMwMDY5NDNlMmU4ZmQzNmY0YjggbGVnYWN5LXRydW5rCisyNjc0MiA4MmE4NTBkYjdlYzU3N2U4MjcwMDgwN2E4NTdmNWNkZTVjOWVkMGFjIGxlZ2FjeS10cnVuaworMjY3NDMgMTMwM2RjMDcyM2ZjYzEyM2M5Y2YwNTg2OTQ2MWZiN2E1NGFlNGU3OCBsZWdhY3ktdHJ1bmsKKzI2NzQ0IGNhOTA3ZjI4ZTJkNTU4MmFjZTE2MmNjNzU4NDI3NWZhZjRlYzU1MTcgbGVnYWN5LXRydW5rCisyNjc0NSAwNzE5YTM3N2E2MTZjMTM5ZmJkMGQ4N2Y0YzMwYzgxYTg1YmYyYjE2IHJlbGVhc2UyMi1tYWludAorMjY3NDYgNDIyNzg0NzA5MzgwYWE0ZWE3ZmI0ZDM2NGI2ZjBiNDVhMWM5ZWUxMyByZWxlYXNlMjEtbWFpbnQKKzI2NzQ3IGY4ZmY5ZmFiOTJjZWU0NTRmYzkzMWJhYTljMTY2NzIxMGVkMGIxZjEgbGVnYWN5LXRydW5rCisyNjc0OCBhOWM5ODE4M2ZmODdmZTY2NThkZDdkOWRjM2QwMzZlOTJjNjE3YjI1IGxlZ2FjeS10cnVuaworMjY3NDkgNmE3YjI2YmRlMGU4YjljODYxZDRkZGNhNDRjYzk2YjU4NDkyMWZiYyByZWxlYXNlMjItbWFpbnQKKzI2NzUwIGM3OGI1MmRhYzk2MzBjMDQzYzZhZWUzM2NlMWJiOGI2YTQ3YTQ2ZDQgbGVnYWN5LXRydW5rCisyNjc1MSA0MGZlMTgzYTg5MjIwMmQ1YzY0NzdkNGVjYzJhOWU4OTYxNmI5NGY2IGxlZ2FjeS10cnVuaworMjY3NTIgZmE3MzIwY2IzN2Q5NWVjNGZmODU5MDA3NTA3OGMwYTBmYzliMmVmYSBsZWdhY3ktdHJ1bmsKKzI2NzUzIDIzMDA3MzQxNDUwNDBiY2E4MWFlYmJkOGNiNmQ4MGU1ZTQ2M2Y2NmMgbGVnYWN5LXRydW5rCisyNjc1NCBkZmQ5OGU5NTIxYjM3ZWY5MDlhMDdlYjMyMWM5NmQ0ZjQ1NDZjYjFhIGxlZ2FjeS10cnVuaworMjY3NTUgNDRmZWNjMzM4ODlkOGMwMGRkMTFkZmY4OGI0YjRmMjljMTAwMDJjMCBsZWdhY3ktdHJ1bmsKKzI2NzU2IGJmZTkxZTFlMzFiMjAwNjI3NjkzYzNmMGQyNTk4ZDQ5MWNhNDgzYjkgbGVnYWN5LXRydW5rCisyNjc1NyAzODg0MWJlYTI0ZmRkZGU5NTNjY2E4NzUwZDczYTlhMzcyYmRjMWYyIGxlZ2FjeS10cnVuaworMjY3NTggMGQ4NzQwMDk0YmVjYTI2ZDcwZWU2NWRlNDIzY2ExM2E3NDcwYTE1ZSBsZWdhY3ktdHJ1bmsKKzI2NzU5IDk1NmQwMzhiMWRkMjZmNTZjMTU3YzY0MDI3M2RmMzA3N2M0MzlhZjYgbGVnYWN5LXRydW5rCisyNjc2MCBhODY4YmFlYmU5NTY0NjU2ZTM1OGJkZmIyNWQ0ZGE3YzY3YjVkZTA3IGxlZ2FjeS10cnVuaworMjY3NjEgOTM1NDJlZmFjMDY2NjliYWFhODRhNzkwNTNiMjhkMzE3ZDQyNDBhMyBsZWdhY3ktdHJ1bmsKKzI2NzYyIDRlNzgxNWM5NWQzZWFhOTRkMzAzMWU0YjU5NmQxZDMzZmExOWQ1NDEgbGVnYWN5LXRydW5rCisyNjc2MyBiOTcyNmJhNzFhYTNmNWU3YjJjNzViNzQyYWRiYmVhZjMwZWZkMDUxIGxlZ2FjeS10cnVuaworMjY3NjQgYzVjMmIyNGRiOGE3MTE5NTA4OTlhZjM0ZDBjNjEyMzFlMjQ1ODJlMSBsZWdhY3ktdHJ1bmsKKzI2NzY1IGIyYWEyNjQ4ZGYyN2IwYWU2ZDY5ZmEwNmFkYjg1ODE3MjI1MGVmZjUgbGVnYWN5LXRydW5rCisyNjc2NiA5NzdlNTM0ZmM2Yzc3NDIyMGNkMjU4YmJlZDZmYTNlMGYzY2JkYzFjIGxlZ2FjeS10cnVuaworMjY3NjcgZTBlZDY4YWRiYTMzMjc1NmY0MjNhMzJlNjJkYjhjMjYxNTBmYzFlMyBsZWdhY3ktdHJ1bmsKKzI2NzY4IGVlMjkyYTUzZTVmY2U4OTRmMDVhNWQwYTY0YmMxOTY3ODgyMTU1MzIgcmVsZWFzZTIyLW1haW50CisyNjc2OSBjNWM0YzExMjEwODc3OTdkZWExMGYzYjQyMTI5OTkxNjdhNzA3ZTU5IGxlZ2FjeS10cnVuaworMjY3NzAgMTBhZTJkNjExYWU5NDE3ZDY4YmEyZTE4MWMwNGU2ZjQ0OGViMjFiNyBsZWdhY3ktdHJ1bmsKKzI2NzcxIDQ3MzM4NWZjYTI5OTI4ODNmYmU5NDY0ODVlMjkzMWIxMzI2MDg2NWUgbGVnYWN5LXRydW5rCisyNjc3MiA5NGJmNmFjZWZmNzg4YmVmYWRmYjU4NDQ5ODkwMTYwZTgyYmYwYTgyIGxlZ2FjeS10cnVuaworMjY3NzMgMjMzOWRkZTZiYWJlY2Y4ZjEyOTJlNDg0ZTdkZjMwMjE1ZTdjMGVlZSBsZWdhY3ktdHJ1bmsKKzI2Nzc0IDYwZDg2YjJlYWIwZmFmYTIyODkyZTQwODQzYzVhZTBkOGQ3MzQ0YzYgbGVnYWN5LXRydW5rCisyNjc3NSBlNWVmMTY2ZmMyMmY2MjNlOGM2MGZmYzE2ZWU4MTU4YzI0MzYzMmI4IGxlZ2FjeS10cnVuaworMjY3NzYgMjExYjE2YWMwNjZhNzA0ODM0NzIxMTI4NzRiNzhjOTdjNmVhNTdjOSBsZWdhY3ktdHJ1bmsKKzI2Nzc3IDU4Y2FjNzA2MDJhYTY5OTM1OTA5NDY5YjdkNmI3Zjk0Zjc4NGExOWEgcmVsZWFzZTIyLW1haW50CisyNjc3OCAzOWU1YzBkNmMxODIyYTgwZTdiZjljODhiNmVlYWRlZTAxZTdiYzYzIHJlbGVhc2UyMS1tYWludAorMjY3NzkgODFkMDY3MjA1Yjg2ZjJiN2QwNTFlZWViMzAxNWE5ZWY1ZmE3ZThmYSBsZWdhY3ktdHJ1bmsKKzI2NzgwIDRmNjdlNTY2ODZlNThkOWFlZGNlNjk4YzA4ODE5NWFhMTcxN2ZjNjcgbGVnYWN5LXRydW5rCisyNjc4MSA5MGVmYTFjYWIzYmMyYzc1NjFkOGQ4NzFiOWM3NGI2NGRmYmY5MjUyIGxlZ2FjeS10cnVuaworMjY3ODIgNjQyYTQ1M2U3YTJlOTIzZTA1OTAwZTYyNTkyMWU4N2MyMGY4NzQ2NyBsZWdhY3ktdHJ1bmsKKzI2NzgzIGYzOGJkYjJmY2FlMDJkMDU1N2M3ZTJmMDFjZWI4OTkyYTQ0NDE3NzYgcmVsZWFzZTIyLW1haW50CisyNjc4NCBjMzc1YzViMjY2MzEyZTEzMDM1OTg0NDIyNTk5NzhkYzE0YmU2MTk2IGxlZ2FjeS10cnVuaworMjY3ODUgNjM4OTBiYzI5YTdjYmY0Zjg5NjZiMjA4MDE2MjliYWE3Zjg3YWUyYSBsZWdhY3ktdHJ1bmsKKzI2Nzg2IDYyNDAzYjkzZjQ3MGIyMmUwOTgyOGEyODlmN2YxY2VkMDRkNmMxZmUgbGVnYWN5LXRydW5rCisyNjc4NyAxMTU3MjgxZjAwYTAyYjEzNzdmOGY3ZDFlYjE4MWQ1YWRhMmJjYzk0IGxlZ2FjeS10cnVuaworMjY3ODggYTRkNjc1YjhiNTNjMDI0MDc5M2JlOTI1MjQ1OGIxMDMwYWNlOWU0MSBsZWdhY3ktdHJ1bmsKKzI2Nzg5IDhlYmE0YzkyZGYyYjRlNGU1NjE3ZTVkZjQ5MjlkNjVhZWJlNjczYjIgbGVnYWN5LXRydW5rCisyNjc5MCBlMTFlOTUwYWNjMjM1MTYxMDUxZmJmYjg3MTkwN2RhNTI1Y2NkMzIwIHJlbGVhc2UyMi1tYWludAorMjY3OTEgMWJlNmU3OWIxZDQ2MDUwODM5NmE1M2IzMTcxNDcyMWZmNGQwMjJmYiBsZWdhY3ktdHJ1bmsKKzI2NzkyIGFiNTIzMTJmODJjNzkxODg2NDBiYzFhOTE4NTIzNTU1YzZmMzJmMDkgcmVsZWFzZTIyLW1haW50CisyNjc5MyA1NjI0MGJjZGE4OGM5MWYwYjEzMWM5ZmM2MzZkNWM4MGI1Y2MzZGY5IGxlZ2FjeS10cnVuaworMjY3OTQgZmI2NGYyMTE3NmFmYWVhZGUzNTQ5OWQ4ZjQwYWUyNmJmMDRmZDk0MSBsZWdhY3ktdHJ1bmsKKzI2Nzk1IDk5M2M3NzU4N2RjYTIzOTIzMmNkN2IxZmZmNjc1NTg0Y2M1ZjQxNDYgbGVnYWN5LXRydW5rCisyNjc5NiAyNWZkNGE4ZjllMDkyMjc0Y2QzZTMyM2U5YjEyYWFlMTczYWY4YzI5IGxlZ2FjeS10cnVuaworMjY3OTcgZjlkNWUxZmIyYWE2OTczY2FhNDJmN2VlZGJiNDlmY2U0NGEwMGJlZCBsZWdhY3ktdHJ1bmsKKzI2Nzk4IDgyNDYwZmRhNGY3NjcxMGI2M2EyMTJjYWVhNTA4ZGQ2ZTRiZjI0MTkgcmVsZWFzZTIyLW1haW50CisyNjc5OSAwOGQ2YzhiNzgwZDk2OTlkMjk4ZDY5ZThjZGI0Y2I1YjZlYzMwZGY0IGxlZ2FjeS10cnVuaworMjY4MDAgZGUwYWMwM2U1ZTcyZDhjODU2ZmZmOGFjZmMyZTBmZWQ0YzdlOGIzMyBsZWdhY3ktdHJ1bmsKKzI2ODAxIDI4ZjcxYzRiZDE2YmI1OTNhZDUwNDE0MTUxNjFiZjhiODU5YWMyNGMgcmVsZWFzZTIyLW1haW50CisyNjgwMiA2YjJiYTNiN2VkMzI2YmU0YWE0ODc5MzBkODJlYWY0YjM0ZmE4YjQ5IGxlZ2FjeS10cnVuaworMjY4MDMgYjE1ODk2MDUzOTMzMzRhMzA0MDcwYTlmMTY0MjcxYTZkODlkMjMwZSBsZWdhY3ktdHJ1bmsKKzI2ODA0IDAzZGZlN2QzNDNkYmFjM2Y4MGI1OGE5NDE2ZGMyOWNiZjg1ZWYxYjcgcmVsZWFzZTIyLW1haW50CisyNjgwNSBmMTIxOTMwNTkyMzlkYjJhNDk0MTg4MjVkYTZiZDZmYzFkYzI0MDNmIHJlbGVhc2UyMi1tYWludAorMjY4MDYgZDNmMjc1YmQyYzYwYTFkMGY4NjEwZGEzYmQxMDA1OGIzNTY1Y2Q5YiBsZWdhY3ktdHJ1bmsKKzI2ODA3IDE5YTk0OTI1Mzc4MTJmYTIxMTgyMGM1Njg3MWRiNTQ4ZjA5OGViYmUgbGVnYWN5LXRydW5rCisyNjgwOCAwOGNjYjBmM2UyZDQ5NmM3YmU3NmFiM2IzZDMxNjI2ZWVhZjRkZGIyIGxlZ2FjeS10cnVuaworMjY4MDkgNDUzZTU5YTQ3MmIyMWEyOGY5YjE0NzBiYzMyMDNlZTM0NDM1YTQ3ZiByZWxlYXNlMjItbWFpbnQKKzI2ODEwIDcyZjBjMWEyNDVmOGRmOTRmMGYxNjdhMmYzOWQwYjIyM2EyZGY2NjggbGVnYWN5LXRydW5rCisyNjgxMSAxY2M5M2Q1MDFiNDVmMDZiODRiYmVjN2NmYjQ3MGVhYmRkYWI1MWFlIHJlbGVhc2UyMi1tYWludAorMjY4MTIgMjczZGQyNTA4YzU3ZTFiNjU3ZDY2YjhmMmM0NzgxNjVmOTUzNzk3NCBsZWdhY3ktdHJ1bmsKKzI2ODEzIDZiYWUwYzMxYmJmYjI2MTA0ZmEwZmY4ODRjYWJhZDc1N2Y4YTI0ZDcgbGVnYWN5LXRydW5rCisyNjgxNCAyNGUyMzM0ZTdiYjJmOGFmYjZmMTg1YmY3ZjMxZjg2OWE4MThmZWU4IGxlZ2FjeS10cnVuaworMjY4MTUgMjZiOTI0YWQyNjZjZmI1NmFmN2FhNzdmYjQxMjE2YzlmMzUwYjIyYSBsZWdhY3ktdHJ1bmsKKzI2ODE2IGY5OGEyN2NiOTI4MjM5NDJlNTJjNjU0OWFkNTEyMDE5NjY0YjgwMGIgRFNfUlBDX0JSQU5DSAorMjY4MTggNjhjNzc2YmE1ZWE1YWQxYzVkZmJlZDVjNDliMTgxOGFjNTIwN2NkMiBsZWdhY3ktdHJ1bmsKKzI2ODE5IDY0ZWIxMTliODE2ZDVhZDVmNTE4MmJlOTZiOTAwN2RmMDg5MmQwN2YgcmVsZWFzZTIyLW1haW50CisyNjgyMCBkZGI0MWU4N2Q2NTE0Zjc2MGUyNzg2ZTNkOWQ2NmE4ZWMyNTVkY2FkIGxlZ2FjeS10cnVuaworMjY4MjEgOGE0NWJmZDZiNDcxN2MxYjQyNWE1YzhhNDU4MzgzNTdlMjMzOWU5ZCBsZWdhY3ktdHJ1bmsKKzI2ODIyIDdlNTE0MWI2OGM1ZjFkMDRkYzBiNzc0MTA3ZGY3ZTk5ZmFkYWMyZWUgbGVnYWN5LXRydW5rCisyNjgyMyBkOWJiNGVjM2U3NWIzMjc4ODJiMDAyMDM5N2MyYmUzZmY2ZTVmMTcwIGxlZ2FjeS10cnVuaworMjY4MjQgZTQzYWFmZmZiMDNjNjc2ZjFhNjFhOWVhNDhkZWZiNzU5NmVlZjliYSByZWxlYXNlMjItbWFpbnQKKzI2ODI1IDYxMzQ4YWEyZmY5ODZkNWJmZDZjZjdkOTk4NzdjOWViOWJjMzZmZGYgbGVnYWN5LXRydW5rCisyNjgyNiA4MTgzODU5ZGNmY2QyMTUxNTVjZmU4MTJkMTBjZDk1MmRkM2YzMWExIHJlbGVhc2UyMi1tYWludAorMjY4MjcgYmU1NGJhNGIyYzQ0MGU4ZWM5NzIzMTM2YmJkY2M5N2E4YTUwM2I1ZCBsZWdhY3ktdHJ1bmsKKzI2ODI4IGMyNTU2ZTMwZmNiNDgyYWRkMGVhMjAxZGM0YjA3Y2M5MTk1MDUxMTAgcmVsZWFzZTIyLW1haW50CisyNjgyOSBhYjIzNDEwN2UyNjczMjdjNTMxNjliZGZlNjkyYWM3M2U5MmI2NjNjIGxlZ2FjeS10cnVuaworMjY4MzAgM2FiZmYxMWY4MmIzNTM3NTY5YjgwZDJjYTE3NTdmZGZhNzFhODAyOSByZWxlYXNlMjItbWFpbnQKKzI2ODMxIDEwYzgyMDA4M2MyZGMxNjQ0YzgyZDBjODgxNDMxMTVkMDI2MmQ4ZGYgcmVsZWFzZTIyLW1haW50CisyNjgzMiAxMmI0NjU3NTg3MjlkYTI5MDA0NGM3ZDk0ZGFlMmQ2ODE2ZGRlMDU5IGxlZ2FjeS10cnVuaworMjY4MzMgYmQxYzRiNjVkYjc5MTA0ZDQ1ZWZjN2ZiMWZiZjgyNDc5MjE2YmM2ZCBsZWdhY3ktdHJ1bmsKKzI2ODM0IGEyMTk4ZjcyZDVlYmVhMDA3ZjNkZjVmMWVmNWE3ZDNlMjQ4YzVmMzIgbGVnYWN5LXRydW5rCisyNjgzNSBiZTBiYzU1ZWNmNGEwZjYxOGZiMDg1YjgzZjQ3MTQ0NzQ1YzZmZmZmIGxlZ2FjeS10cnVuaworMjY4MzYgMDc3ZDQ0YjA0MDViZTZiMjBjYzg1MzNlZmNjNjVjMTIxNmM2NzAxYyBsZWdhY3ktdHJ1bmsKKzI2ODM3IDM0NGFlNTMxZTZhNzNlMjI3MTE3MTc5YmVhMDRhZTMzZDVhMmM5YjQgbGVnYWN5LXRydW5rCisyNjgzOCA3Y2UwMTg4Mzc4ZWYzYThkODY3NjFhOGJmMTY1MTUwZDc5ODhlNjkwIGxlZ2FjeS10cnVuaworMjY4MzkgNTBhOTdhOTYyOTk4N2EwMmNiNzEzNjk5OWYzMjAxYzY1M2ViYWYxMiBsZWdhY3ktdHJ1bmsKKzI2ODQwIGQzZTAyNWVmMWZiMmRmOThjMDg2MWExOTc5ZGQ0MDA0NmMyMGQ3ZGIgbGVnYWN5LXRydW5rCisyNjg0MSBkMzViOWZmZjgxZTA5YjI1ZmUzN2I1ZDU5ZTkzZTljY2Q4M2UzNjI1IGxlZ2FjeS10cnVuaworMjY4NDIgNzMyNDlhYmVkNjgzNzYwZGIyMThiNmQ2MmRmMjZmYThhNTgwOWMwNSBsZWdhY3ktdHJ1bmsKKzI2ODQzIDVkNzNhMmM3ZmFlNjNmZTYxMzI2NjZiYWNjNmM5YjViZTMzZDkxZTcgbGVnYWN5LXRydW5rCisyNjg0NCBkOTE3ODU3ZmQzMzRlYTllOGQ1Mzk5MDU0YTVhNDFiY2I3MDEyYWZjIGxlZ2FjeS10cnVuaworMjY4NDUgNWJkMzBhMzY4OTdiMWU0NzYwZGM0NzlkMGYxMTFiMTkzODg1ZTJiMiBsZWdhY3ktdHJ1bmsKKzI2ODQ2IDE3NTYyMTA2YzJhMDQ2NjgyZDcyNjg3YmFmMzIwNTIzYjMwY2RkN2EgbGVnYWN5LXRydW5rCisyNjg0NyBjZGQ1Yzc1MTgyM2NkOTI4ODVlNWExNzZmYTExNWVmOTE0MjZmZGE5IGxlZ2FjeS10cnVuaworMjY4NDggYzc2ZTVjMWM2ZTQ1NDViNTc0MGI0NDNiNmM5MWFmZjg1NzJkYmI5OCBsZWdhY3ktdHJ1bmsKKzI2ODQ5IGJiNTc5MGM2Y2RhYTE0NzM3NDVlYmFlMjY1MWFiOWMwYzAwOTkwMjcgbGVnYWN5LXRydW5rCisyNjg1MCA5YjFlM2I3YmQ3ZjEyNDI2OWJjMzY4YjkzYzI5NjQzNzcxZWFhODdkIGxlZ2FjeS10cnVuaworMjY4NTEgYmU2NTM2ZjJlYmVmYjE2MzMyMjViYmE2NmIzNjMwMTM3ZmExODYzMyByZWxlYXNlMjItbWFpbnQKKzI2ODUyIDI2N2FlNTllZGRiNGM0YjVlNTZiMTU2OGU4YzVkOGE0ZWRmMGRlYzggbGVnYWN5LXRydW5rCisyNjg1MyA2ODRlZGQxNmJiZDgxZmM0ODdiMmNmMzgwNmI0MGUyZjVhOTE2MWM2IGxlZ2FjeS10cnVuaworMjY4NTQgODY3M2MyZWRmMjFjYmU0MDRhNTcxY2RiNDMyZTAyYWYzMGEwZmNiNCBsZWdhY3ktdHJ1bmsKKzI2ODU1IGJkYTk4YmFjNjk1NjAxYzJiYmRjNDdlMjZlMzViMzk0M2E2NGI5YTUgcmVsZWFzZTIyLW1haW50CisyNjg1NiAwYzQyY2VlNDc1ZGZmMzVkNjJiMTEzYzRmNDViZmNjYWU0YWZiNGM2IHJlbGVhc2UyMS1tYWludAorMjY4NTcgNzZmMzc2YmVhNWU1YTlhOTE4ODUzNmQxMWQ1Yzc1MTZjOGMwOWVlOSBsZWdhY3ktdHJ1bmsKKzI2ODU4IDY4ZTNmM2RkNGQ0ODg0OTE5ZDk1ZGMwOGQ0MjkyYmYxM2I1OTliZjAgbGVnYWN5LXRydW5rCisyNjg1OSBmNDMxODg4NWNlOWE2MzI4OGIxMDA5ZWEwOTdjOWMxZjBjZDY5MjhjIGxlZ2FjeS10cnVuaworMjY4NjAgOTg5YTdhZGY4NGVmYjM1N2M1MTc1ZGNjYzE4NDRkZmY0Y2RiMTZiNSBsZWdhY3ktdHJ1bmsKKzI2ODYxIDg1NjE1ZWE2NWIxYmY4MGFmOTY1YzY3ODY4NzQwNjRkNmU1Yjg3ZjMgbGVnYWN5LXRydW5rCisyNjg2MiBkYmE0ZjUxNzY0OTJmNDU0MWU1NmI0Y2QzMGEzMTI1ZWM0YjcyOGRkIGxlZ2FjeS10cnVuaworMjY4NjMgYWQ5MDRkYjczNDRhOWY5NDFlYTBmZmEyYTM4NTFjZjlkNjhiYzhmNyBsZWdhY3ktdHJ1bmsKKzI2ODY0IDYyNjg4ZDZhYzM4NzljMGNkN2U1ZTRjMzNiMDRlYTM2MmQ0ZTY3MWIgbGVnYWN5LXRydW5rCisyNjg2NSBkYzNhN2Y5OGQ0ZWQxMmYzZTg2MmJiNTIyYmFhMDI0YWMxMWU3YzI5IGxlZ2FjeS10cnVuaworMjY4NjYgNjMxZjkyODY2NzMyOWJiNmM2ZDI4YWRkMWFmZjliMzA4NjE0YzNjNSBsZWdhY3ktdHJ1bmsKKzI2ODY3IDE3MmI2MjUwZDUyNjAzYmY3NzU4ZTMzNGMyN2RmYjJlNjc2ODVkNDYgbGVnYWN5LXRydW5rCisyNjg2OCA3NmVmNGI5NDJiMTMxYmQ4ODNjZTFiNTdjNmY2YjMwM2I3ODNkZmQ5IGxlZ2FjeS10cnVuaworMjY4NzAgN2FiOGMzODExNzIzOTcxNGVlNjVkOTcyOTgyYmNiZDUyNzAzZDk5NiByZWxlYXNlMjItbWFpbnQKKzI2ODcxIGM0NGIyMWZjZDM4YWQzMmU2Nzg1MzRiOWJhZjRmNWU3MjUxZDYzMzEgbGVnYWN5LXRydW5rCisyNjg3MiBiMWQ4NjgzNTIxZWM0ZjM3NGZhOTJhNzc0YWMyOWVhZTg0YzViZWUwIGxlZ2FjeS10cnVuaworMjY4NzMgZmJhMDUzNDdiYjMwYWQ3YWEyNmNhNmJlYWFiNWJiMGM5YmI4ZjUwYSBsZWdhY3ktdHJ1bmsKKzI2ODc0IDgyMzA5YzczMjVlZmUzNjg2YzgxYTA4OTY2ZmJkOGJhMTcxODQ1OTEgbGVnYWN5LXRydW5rCisyNjg3NSA3YmMzMWFkOTQ3N2NmNWY2NWUwMjY2NzQ0NmE4ZjhlNjNlMzcwZjdkIGxlZ2FjeS10cnVuaworMjY4NzYgMjY3NWIxNThiZjY3N2RmZDkzMDllOWZiNDI2YzQyZWQ1YjNlOTIyNyBsZWdhY3ktdHJ1bmsKKzI2ODc3IDM1ZjAxYmYzNGQ2MDQzNzZlOTM0MjRlZGU3ZTg2YjU1ZTc4YWY4OTkgbGVnYWN5LXRydW5rCisyNjg3OCA5ZWVhNWVkZDg1N2Y2YWU0ZTNjMTM5YjAzYzdkNTY1ZTY3YjEwMTc4IGxlZ2FjeS10cnVuaworMjY4NzkgYjM4OThkMzI2NTE5ZWUyMzkwNjQ2Yjg1Njg0ZTdmYTY3M2IzZjY4OSBsZWdhY3ktdHJ1bmsKKzI2ODgwIGJmZWExNGY4ZmYzNTNjNWZmMjgwMTVjYjAxYmJjNGU0NWFjMzZiNjcgbGVnYWN5LXRydW5rCisyNjg4MSA3M2MwMWIxY2JkYjJjMDE2MWUzMWQzZDI0YzVjMDY5MWI0ZThjMTE1IGxlZ2FjeS10cnVuaworMjY4ODIgYzAzZTg4OTlkNGIxOTA0NDJmZDc3MTc2YWY2OThjOWYxNjVhYmYxYSBsZWdhY3ktdHJ1bmsKKzI2ODgzIDAwMTQzODdmZDYwNDRkMTEyNTQwM2JmZTI1N2QwNDJkOWNhYzBjNDggbGVnYWN5LXRydW5rCisyNjg4NCBiODcyOGQ1OGU5YzMzM2ViMGU4NTY4NjIwYmRlYjQzMDMyYmRmZGM1IHJlbGVhc2UyMi1tYWludAorMjY4ODUgYTkwZmFhNWY5NDE3MWM3MDcxMTUzYTcxMzlmYzAzYTY2OWM0YWFiNSBsZWdhY3ktdHJ1bmsKKzI2ODg2IDJhZmYxMmUyYTk0ZjVjOWRlMzU2OTcxMTdhZmMxMmYxMTc4NDBkMGYgbGVnYWN5LXRydW5rCisyNjg4NyBiNjAyZjIyOTFiNWZkM2ZlNDg3ZTg1YjcwMGFhMGJhNWIwMmU0ZmJlIGxlZ2FjeS10cnVuaworMjY4ODggMGUxNzcxZmMwMTJmMjZkZDczYzQ4YTRmNWY3ODNmMWVkMmEyMmI2NyBsZWdhY3ktdHJ1bmsKKzI2ODg5IGM3OWIxZTU1NTJlODQ5NTlhZjI0ZWFjODkxMDUxY2I3OGE0ZTg2NTUgbGVnYWN5LXRydW5rCisyNjg5MCA5ODgyN2E5ZDYyYzMyZWFjNmI5NjE4ZWI4MzQ4ZmYzNTRmODczZTdmIGxlZ2FjeS10cnVuaworMjY4OTEgYjIxYjY5NjU4NjYyODliMGQzMzkxMGZjMTY0ODUyZjdhNGJhNzkwMyBsZWdhY3ktdHJ1bmsKKzI2ODkyIDhhNDlhMTNmYjI4ZGY3MGUzMzQ3YjczYjc3ZWUwYzhmNTRjOWFjNWEgbGVnYWN5LXRydW5rCisyNjg5MyBjZWNhMjgxNjc4MDA4YTNkMTM0ZGQxMzVlZmI2MDVmYzJiYmQyYjg3IHJlbGVhc2UyMi1tYWludAorMjY4OTQgZWNlZjY1ZTU3Y2M2YmQ5OWI0ZmNlMDJmOTFkYThmMGI4Mjc3MTAxYSBsZWdhY3ktdHJ1bmsKKzI2ODk1IGE5OGU5M2VhZmVmN2UwM2VlMGMzM2EzZjBmMzU2Yjk0ZTJjMjliYzMgbGVnYWN5LXRydW5rCisyNjg5NiAyNjAwY2Y3ZDMzYWY4MjNjYjZiOTQzYzJmNTZjZGQ1Y2NjYjM5ZTVlIGxlZ2FjeS10cnVuaworMjY4OTcgYTRlZmI1OWY4NzY3MTgzMjU0MGQzNjNkM2RjZDYxZjhiYjdhNTgwZSBsZWdhY3ktdHJ1bmsKKzI2ODk4IDcwYjVlMTExY2NiMDkwMmY3MjBiNjE5ZTBjMTc0ZTcyZDI5YWNlMzcgbGVnYWN5LXRydW5rCisyNjg5OSA4ZDk0NmM5MzM5ZTgyMTAxZWJhYjdlYTcxODM5MmVhMWEzZDE2YzhhIGxlZ2FjeS10cnVuaworMjY5MDAgMGE0YzkyNTU5YTBiNDE2NjRmMjFhYzA0ZTcyYzUxMWRkMzQ0MjU3YyBsZWdhY3ktdHJ1bmsKKzI2OTAxIGZhOGZlMmU5ODA2MjVhZTY4YmI1ZDNmNDNjNDdlOWNmMDVhMjY2OGYgbGVnYWN5LXRydW5rCisyNjkwMiA5ZTY3YTBkNTcwNWZiYWI5ZmI2YWFmM2FjMjY5NmJjZjg3MTcyNDAzIGxlZ2FjeS10cnVuaworMjY5MDMgYjQ5MGZmMTcwNmQ5NjQ2MmYzMjlkOTE0ZjExNzNhMjU5MWE0ZmRhZSBsZWdhY3ktdHJ1bmsKKzI2OTA0IGJkNTg5NDZhYTUyMWIyZWNmN2VlNGY1NWQzOTgxMjJmNzFhM2U0NjYgbGVnYWN5LXRydW5rCisyNjkwNSBmNmRlZDZlZmFiY2YzMDkwMjYwYjNlZDkyMTcwZTcyYzIzOTBjZDU0IGxlZ2FjeS10cnVuaworMjY5MDYgMjIwYjk4ZjA2NDE1NjRhMDU5N2I0Njg0YzNiN2IyZDExMjUwNWI4OSBsZWdhY3ktdHJ1bmsKKzI2OTA3IDQwYTAzMTE1NTg5N2Y5YmViNzJmZjdkMGE4ZjNlMjY5MWNmYmMxZTUgbGVnYWN5LXRydW5rCisyNjkwOCAxYmYzNGY0Mzk0YzUxN2U0MzQ0NjAxMzI1ODczNGEwYmY2NDk5MDAzIGxlZ2FjeS10cnVuaworMjY5MDkgY2UxZGEyZjk3ODA3NmU0YzY5YjI5YzQxODcxYThkZmExMTViM2ZlYyByZWxlYXNlMjItbWFpbnQKKzI2OTEwIDg4OTAzODUzZjE4MGVlNmJiMmUwYzFlODA4N2NiZDI4OGIwMjQyNGYgbGVnYWN5LXRydW5rCisyNjkxMSBiNzRhZmRkMDcyZWIwYTE4OTlmY2Q0ZjE2NjVmOGE4MjBmYThiOWExIGxlZ2FjeS10cnVuaworMjY5MTIgMzAzZDgxZTE1ZTcwYzNhMjQyN2E3MmFlNjgyZWYwNzY5NWJjMjhmNyBsZWdhY3ktdHJ1bmsKKzI2OTEzIDQ0NmIyZjJjMDFkOGFhY2EzMjU3YWIzYzFjMmMxMzg1M2Y0OGFmNGMgbGVnYWN5LXRydW5rCisyNjkxNCBiM2M1MGY2OWYzOGJmMjM4YmRkNTYwZjdkMWFlNTg4ZTU4YTNkMjUwIGxlZ2FjeS10cnVuaworMjY5MTUgYTY3MjQ4ZmQyMzcwMTBmODJhNTczNGY5ZTdmMTg5MTEyNWI5ZGZkMCBsZWdhY3ktdHJ1bmsKKzI2OTE2IDNiMmE3ZWUwODY2NzYxZGQ4NDAzZGU4N2U4ZDU1NDZiODIwNTc0OGMgbGVnYWN5LXRydW5rCisyNjkxNyAzYWVjZGJhNDU1Mjg1YTBlNmRiNDc0NGZjNGI0N2FhM2I4N2RiYjc3IGxlZ2FjeS10cnVuaworMjY5MTggZTUyNDJmNThhNWI2ZjkwZDg2ZGNkYTczMDI0MTAxNGQ0M2M5YmMxMSBsZWdhY3ktdHJ1bmsKKzI2OTE5IGM0ZmEzN2Y4OTc4Mzk5MzIxZTQ4NjYyYTk5NDYwZTNiNzdhNzQzNWYgbGVnYWN5LXRydW5rCisyNjkyMCBmZWNjZTAxNzMyNTRmN2VhMmRjZWEyYWE4Mzc1MDIwZjkxZjczZGM3IGxlZ2FjeS10cnVuaworMjY5MjEgYTM5OWQ4YjEzYzJmNDU4YjQ5NTEwYWQ4MDU0NmY3ZTJmYTU1YjcwYSBsZWdhY3ktdHJ1bmsKKzI2OTIyIDVkMDk1ODk4ZGFlNjU5YmZkMWFmYzdkZmFiZDU0MjhkNDI5NTk5YjUgcmVsZWFzZTIyLW1haW50CisyNjkyMyA1M2M2MTQyODhlYWI5NGY2YjBlZGY4YTQ1NzA4NGM0YWZhNTQxNzBhIHJlbGVhc2UyMS1tYWludAorMjY5MjQgM2E0NzkzNTc1ZWNkN2VmNjhjZWRhZWUyNTdlMDllYjk2Njk5OTYwYyBsZWdhY3ktdHJ1bmsKKzI2OTI1IGM1ZThmODlmZDM1ODY4ZDUxZmMyNjVjNDlhNTQwMWUwNDFhNjZmNjAgbGVnYWN5LXRydW5rCisyNjkyNiBlYWNhNjI3ZjJhNTQ2Y2U4ZThmYzU0MmU2ZjliNzIyZWRhY2RmMzQ4IGxlZ2FjeS10cnVuaworMjY5MjcgNTA4OTY1Y2U1ZTQ3MmY5NmQ5MjZhYzcxMmUwYjI3YWJhNDU4Y2YxYSBsZWdhY3ktdHJ1bmsKKzI2OTI4IDNmMjQyY2RkMDkwNGVlMTE1YzVmNDY1ZTUwYmNmY2ZhMTAxYThjMWIgbGVnYWN5LXRydW5rCisyNjkyOSAxYTY3ZmJjN2EwNjY4MjMxYjk4ZTQ5Mjk5ZDQ0ZGFiMWE4ZDc3ZDNkIGxlZ2FjeS10cnVuaworMjY5MzAgY2FmNjJlZWY3NzIzZTRjODc4NDRmZDdhNjBhNWQzZDQzYjdhMzhkYyBsZWdhY3ktdHJ1bmsKKzI2OTMxIDNkODNmYWJlZjBhNDBlZTVkMWYwZGNjNDliNzZhMzNlYzEyZWRlZmEgbGVnYWN5LXRydW5rCisyNjkzMiBhZTBhM2IxNGQyZThiZTc4MDE0ZmVkNTNjOGRlMmRkYmJjMGY0ZTMyIGxlZ2FjeS10cnVuaworMjY5MzMgZGMyNjIzZTAyNDNlMjhiZjc3ZmFlOWNlZjUwODI1YjJlMTYxNmMwZiByZWxlYXNlMjItbWFpbnQKKzI2OTM0IGI2YzMyYmViNGRiY2M5YzgwMjkwOWYzN2NiMjVmYTg0OGEwZjI5MDkgbGVnYWN5LXRydW5rCisyNjkzNSBkNWFlNmY3MTRjZDUxY2M3ZDJhZjk3MjQ2MGZjYmYwMGIxZWMwYTQwIGxlZ2FjeS10cnVuaworMjY5MzYgNGQ4ODRhZDgwZGRhNTU0ZTk5ZTg3ODg1MTAyYzM0NGUxMmNkYzVlYiBsZWdhY3ktdHJ1bmsKKzI2OTM3IDBhYzY1M2Y0NjlmMDcwZDQ0YmE1YWJiOWJiNjU2NjU0MGZhNzAyYTUgcmVsZWFzZTIyLW1haW50CisyNjkzOCA2NjhjNWNhNGUwZDQ4YzYxNzJhNWNhYzEyYTY5MjFkMTZhMTQxMzVkIHJlbGVhc2UyMi1tYWludAorMjY5MzkgOTlkZjI1NzE0MmY2NDM4ZGE3ZTFjNTEyNGExZTIzNWU5YjI5Y2Q3MCByZWxlYXNlMjItbWFpbnQKKzI2OTQwIDdkNGM1ZTRhMGNjYzI2Zjk5ODUwYWU2M2NjMjQ3N2Y3YTgyYTQzMWMgcmVsZWFzZTIyLW1haW50CisyNjk0MSA4ZjdiNzljZGEwZDMyMWQ3ZTgzZWFkNjM1MTYwY2Y3ZmIwYzM2NmIwIHJlbGVhc2UyMi1tYWludAorMjY5NDIgYzM2NzYwN2JiNWY3ZDIwNDg5ODY1YjBhNDgwZTFkNmUxMmU0OWI3YiBsZWdhY3ktdHJ1bmsKKzI2OTQzIDRlM2VhNTVmN2UxMThjYTZlMjdiOGU4NWE3ZGUyMjM3ODA4YTRiMjcgbGVnYWN5LXRydW5rCisyNjk0NCA3ZGJhODBkNThmZmQ2NjQ0MzY4OTA5YzZmMzg2NmM4YzAzOGRiNWJmIGxlZ2FjeS10cnVuaworMjY5NDUgYmViNTI3MTU4Y2JjZGU3MmMxOTg1N2Y0MzgwNzJkMzM1MTczMjA2OCBsZWdhY3ktdHJ1bmsKKzI2OTQ2IDE5MGI2YmMxOTEyYTVkNWQ2MmQ3OWJjOThlNWE2MmYxNzY2MDBhOGQgbGVnYWN5LXRydW5rCisyNjk0NyAwNjAyYzdlNmI5NGQ3MjEzYTRlZDI3NzZhZTBjYzkwNjJjMWEyYTE2IGxlZ2FjeS10cnVuaworMjY5NDggYzZhZjU3NGJkYTI5MjhmMWNkZDE4ZjM2M2Q5M2M5ODdkZjUzMDBiNCBsZWdhY3ktdHJ1bmsKKzI2OTQ5IDBlODM3MGU3MDg4ODYzY2QzZDE1NWEwMjc2N2E2ZThkZDM2NTEyYTUgbGVnYWN5LXRydW5rCisyNjk1MCBmYmE1N2U0MGY1NDdkMGJkNjM5ODFkZWFmNTE5MDQ5MmFkOTRhZjNmIGxlZ2FjeS10cnVuaworMjY5NTEgZjEyNDkxMTcxNjM4NjAzODIxYjhiODI2YmM1M2MwMWYzMzhlYmFjNSBsZWdhY3ktdHJ1bmsKKzI2OTUyIGFiOTRlYzRhZjk4YTkzNGY2ZDljN2ZlNjRiMDE4ZTMwODM1MDEzN2QgbGVnYWN5LXRydW5rCisyNjk1MyBiMDY1OGZlZWY5MzllMTZjMjRhMTY1YjIyNjYwMzZlZTYxYWRmOGY4IGxlZ2FjeS10cnVuaworMjY5NTQgYTRiYjE4MjEyYjQ4MGViOTNkMWJiNzU4YTgzZDUyZGI1MjkwMzg0MiBsZWdhY3ktdHJ1bmsKKzI2OTU1IGFjYmU4ZTdmOTlkOTNiN2ZmMzRkYzJkZmJlODIwNjY1NGZlMWFhYWUgbGVnYWN5LXRydW5rCisyNjk1NiBkNjdmMWUzYTlmMWFiZjU4ZjJiM2FlMmRkMzNiM2JhMmU4ZWMxYzM0IGxlZ2FjeS10cnVuaworMjY5NTcgYzg0NGZjYzNjOTUyM2ZmYTdjN2IzNjgzMTZkMGExYmI4M2JmZDBmYiBsZWdhY3ktdHJ1bmsKKzI2OTU4IGMzYTY3Y2U1ODI0NWY0MjU0YTA5NGM4N2Y1Zjc0NThmMjQ3M2ZjMjQgbGVnYWN5LXRydW5rCisyNjk1OSA0MzgwYTdhYTE4ZGM2Y2RlYzhkODg5NDU4YzVmM2ViOTk3ZDFhY2JkIGxlZ2FjeS10cnVuaworMjY5NjAgYzJiYzJlZDE0NWY3MjdjNWMxYjQzNmIwOTQ0MWNmM2Q3ZmQ4NTIwYyByZWxlYXNlMjItbWFpbnQKKzI2OTYxIGVkMDA3ZTQ3YjNhMTM5OTg5MGIyMmFiMWFmMGU3NGYyOTczMmFjNTMgbGVnYWN5LXRydW5rCisyNjk2MiAyYjFkNjE3ODFkNjM3NDg5NzEzMjdiNmRlMDkxZDllZTJhNjhkOWYwIGxlZ2FjeS10cnVuaworMjY5NjMgMTk3ZmIzMDVmYzVjY2NmYzgyMzQyY2Q0NzIxMDMwM2IyOWJjMGM3MCBsZWdhY3ktdHJ1bmsKKzI2OTY0IDkwZWU1NWI5ZDcyYWQxYzM3Yzc5MGMyOWIwMTVmMmE1MGE2YzgzNTcgbGVnYWN5LXRydW5rCisyNjk2NSA3ZTQwMDU4Mzc1NWZmNDgwNmNkZGNlMGQ0NWMzMmY4YmVhNzgzNGI0IGxlZ2FjeS10cnVuaworMjY5NjYgZGJhYmIxZjdlZDNhNDRjYjc4ZGI3ZDVhYTg4NzVhNjdkMjgzNjkwZCBsZWdhY3ktdHJ1bmsKKzI2OTY3IGNmZmQwOTFmNTZkMGVmMDVhYWFhZjhlNWY3ZGRkNWVhMTk1MDIyYjQgbGVnYWN5LXRydW5rCisyNjk2OCBlZjhkNDU2MDY3ZmQyOGM3NjI4NWEyNzliNTExNzI2MTEzNzQ1NWQ5IHJlbGVhc2UyMi1tYWludAorMjY5NjkgNzEyMDYyMGY0MzJiZDA5MGE2MWVmODA4YWEwMWRkMGI1MjM2NjBlOCByZWxlYXNlMjEtbWFpbnQKKzI2OTcwIDVlZGVhNzUyYTQyMTlkYzJhZDk1OGQ2YmU4ZGRiODVkMDA1MzNhNjYgbGVnYWN5LXRydW5rCisyNjk3MSBhNjhmYWEyNjg1M2NlNzM5YWVlYTFjMDA3ODA2NTM1M2M2MWY3ZmU1IGxlZ2FjeS10cnVuaworMjY5NzIgZWMyN2FjMTlmOWUzYzFjOWYwOTgzYzBiNTRmMTc4YmIyNzExOTg0MiBsZWdhY3ktdHJ1bmsKKzI2OTczIDQ1NmQ1ODQ1MWZlZWE3NDdjZTExZTg3YjE5MDg1Y2NlMjFmMzY4OGEgbGVnYWN5LXRydW5rCisyNjk3NCAwYTI4MThjYzM0MmNlNGQ0MjE2Y2Y2OTFlNjM3NDIyYTdmZDVlZjBjIGxlZ2FjeS10cnVuaworMjY5NzUgMjFiMWQ3NDJlNGE3MDA5Y2RhMDY1MWRkNmY4ZmE2YTZhMzIwNDFmYSBsZWdhY3ktdHJ1bmsKKzI2OTc2IDNjYWVlMjk1ODM4N2NkOTJmM2RlNDYwYjNiMmRmOWE2MWNhZGYxNWEgbGVnYWN5LXRydW5rCisyNjk3NyA0YTFmNWJkNDg2ZmY5ZjgwZWJiZWZiMTE3MWQxNWFmOGMxMzQ0MmU4IGxlZ2FjeS10cnVuaworMjY5NzggZjRlYWIyNjhlNjE3ZTkwNDkyNjFmYjQ4ZGUxMzFiZjZiNjM5MWIxNyBsZWdhY3ktdHJ1bmsKKzI2OTc5IGE2NzE1YWQ0MTZlNWRhMmVlZjBkMGZhYjNlMThhODI5ZjdhNjJlMDkgbGVnYWN5LXRydW5rCisyNjk4MCA5ZGE4NTgzN2ZmMjUwODRiM2UzODhhMjNkNzA4ZjZiZTA0MTRjNzMzIGxlZ2FjeS10cnVuaworMjY5ODEgM2UzYjNjMTc3MGFjMTFiNTlmY2NkNTkzMTcxZTZiOTAwNTFmNjFhMyBsZWdhY3ktdHJ1bmsKKzI2OTgyIDU0NDgzYmMyMTg3MWVmODViYzdhMzJjOGQzM2Q3NjFmYjlkOTc0NmEgbGVnYWN5LXRydW5rCisyNjk4MyA5MjYyNmU1YWIwNjczNTRkZDFiOWRiMTJhNzNkZTllMWU4NmNhZWZmIGxlZ2FjeS10cnVuaworMjY5ODQgYTFkZTBiYWI1NDc1MDkzZjkwNWEyMjVmNmEyNjMzMDA0NWNjMWJmYyBsZWdhY3ktdHJ1bmsKKzI2OTg1IDg3ZjQwMzc3Y2Y1NDM4YjUxMDYxOWRiYzc4M2Q0OTE4MTFlMzMyMmUgbGVnYWN5LXRydW5rCisyNjk4NiA1ZWRkODA3MjZkOTY2ZmRhMmU5MGRkNWJmZTRiMjdjNGIzYjJlNWE1IGxlZ2FjeS10cnVuaworMjY5ODcgYzAwZmViYmUwOTI5NWUzMDBkMTgxNjc2NjUwNTc4MjM1MGRjZGNkMSByZWxlYXNlMjItbWFpbnQKKzI2OTg4IGFlZDM5Y2FmOTg2MGRkNjA4YmIyYzg0ZjgxZTM1NzdjZmI1NTIyZjkgcmVsZWFzZTIxLW1haW50CisyNjk4OSA2NWNmNDc4OTUwZmY1YzNhODgxYTVlYmRkYTg3NTMzOTZhYmU1N2VhIGxlZ2FjeS10cnVuaworMjY5OTAgNjNkMTQxNDFkZDEwZDAyNTVjY2ZiNmMwYzRjNzc3NmEyM2NhZTgzZCBsZWdhY3ktdHJ1bmsKKzI2OTkxIGE2YTc2NWM3ZDMzYjRkNzFhNzYzYjk2YTBkNmZhZmQzMWViMDZhODYgbGVnYWN5LXRydW5rCisyNjk5MiBlYTk3OWM1MjA2YjdlNmI4NzU1ZDkwNzE0MWQzNzk0MzRhN2JlYjY0IGxlZ2FjeS10cnVuaworMjY5OTMgNGE0ZDEyMGIyYjBlMDlhOGY1NmIwNTMyYzg4MzI1N2I1OWQ1YmNmZiByZWxlYXNlMjItbWFpbnQKKzI2OTk0IGFmZTk0NjkxODI2N2ExYzUwNjNkMTIxNjczMTAwZjUyZWRmNjM2ODQgbGVnYWN5LXRydW5rCisyNjk5NSAxYTUyMTYyMzU2MDI4ZDRmM2Y0YmM3OWVmYzkwNGY0MmU4OWY4NTkyIGxlZ2FjeS10cnVuaworMjY5OTYgMTE2NjAxM2ZhYjc3OTUzNmY2NTUzM2E2YTQxODkxNTBlZjMxNTg0ZSBsZWdhY3ktdHJ1bmsKKzI2OTk3IDBlZThlZjdjYTA5YzYzMmUzNzIyYTRkYTZmZTZkMDlmMmExNWJlYmEgcmVsZWFzZTIyLW1haW50CisyNjk5OCBkYmVlMmY2MjhhOTA2NzIyZmM0MzBlMGUzNDJjODI5NWM4YTFhZDBlIGxlZ2FjeS10cnVuaworMjY5OTkgMWU2MGI1ZDQxNDE3YjEzODRhMDk3OGU0OGJlYjdlMzdmNTI1MGRhMiBsZWdhY3ktdHJ1bmsKKzI3MDAwIDg1NTFlNjQyNzI3YzIzNWUxNTczMjljM2I5ZGNlZDY3MjM3YmVkZjggbGVnYWN5LXRydW5rCisyNzAwMSAwYjdmZTBmYTlkYzZiMWMzYTllODJmZDQwMTFjZDRhMTA3NWQzMjc0IGxlZ2FjeS10cnVuaworMjcwMDIgOGMyMTVkZGZkM2QxYTE4NWNmY2I1ZmJkYjFiMTljNzYzYjIxODQ4YSBsZWdhY3ktdHJ1bmsKKzI3MDAzIDk0MGZlZjMyNGViY2I1ZjhjMzEzNDYxZTdjMzgxNTAzZjIxMmQxZWUgbGVnYWN5LXRydW5rCisyNzAwNCBhMjUwODBmNjkwMWZlNmM4ZTkzM2I2YzQzOGQ4YzBmMGJjZTMyYjVhIGxlZ2FjeS10cnVuaworMjcwMDUgMDRhNGEwZTcxYThkY2Y3MDFjODg3NGYwOTM1NThjYjI4ZTk1NjAzMCBsZWdhY3ktdHJ1bmsKKzI3MDA2IGM2NDYzYWZkOWYwODYwYjg0M2JhZWYwMWUyMGM5NTNiYjgyYWVhZmUgbGVnYWN5LXRydW5rCisyNzAwNyA3MGQ3NjgzMzU1MGIwZDkzNTk1ODk0NTgwOGZkOTY0YTZkMjQ1ZGZiIGxlZ2FjeS10cnVuaworMjcwMDkgM2ViZDM3NmFhNGNiNmI3OTc1MjUxYTkxZjA5ZGEzN2IzNWZkMzNiNCBsZWdhY3ktdHJ1bmsKKzI3MDEwIGUxZTkwYjBmMWY0NTAwYmI1NWNiZTMwMjk4ODYwM2MxY2ViYzg2MzggbGVnYWN5LXRydW5rCisyNzAxMSAyMjBlZDdmZWJiMDAxOWNhNmZhNjc2ZWZmOWZjZmE1NzQyYmVlNzdiIGxlZ2FjeS10cnVuaworMjcwMTIgZWM4OTQ5ZTRlNDZkNzgyNDYyNWQwNmZlZWIyZjMwYmUzY2FjZWI5OCBsZWdhY3ktdHJ1bmsKKzI3MDEzIGI5NGFjYzE4NzQwZTdlNjg2MmVhNzRmMjNjZjdlZTllY2EzZjQ3NzEgbGVnYWN5LXRydW5rCisyNzAxNCBiOTIxOGVmYWU4ZjU1YzhmYmJhYWUyNjIwZjk4NmM5ZTUyNjlmNmUwIGxlZ2FjeS10cnVuaworMjcwMTUgYTM0NTIzMTIxY2Y0NDE0ZTkxYzFjZGFjNWU0M2Y3ZWZhNjQ4ZDUyNyByZWxlYXNlMjItbWFpbnQKKzI3MDE2IGYwY2EzOTM1ZDAxMWRkYTcyZjM4ZGUwNGExNDhmMGM2MWUyNWQ5ZDggbGVnYWN5LXRydW5rCisyNzAxNyBiNDAxNjVhNGVmZTlhZDJiZGIzNmJiMzZkMTBlY2ZkMjg1YmNjYWY5IGxlZ2FjeS10cnVuaworMjcwMTggZWI2YTE2NTFjY2RhMDM3MmY2N2MyZWQ5Y2EzYTYwOTMzN2JhNWMzOCBsZWdhY3ktdHJ1bmsKKzI3MDE5IGI4NmVhZWIwZDdkZDQyYTc3ZTljZWI1NmZmM2EzNjZmZTVjOWYzYmQgbGVnYWN5LXRydW5rCisyNzAyMCBlZTc3MmY2ZTg4MWJiMjM0MjBhMzc3YzZiOTFiMWE2ZWFkZDExNDY5IGxlZ2FjeS10cnVuaworMjcwMjEgYmZkYmUyNWE0NWIwNjg2OGYxNzdlMDhlOGQ3ZWRjODQ2ZjM2N2Q3NCBsZWdhY3ktdHJ1bmsKKzI3MDIyIDVmOTc4MTk2ZmQzZDAyZmYxN2RiOGQ3NjFhZjJmNzA2YjljYzk1ZDIgbGVnYWN5LXRydW5rCisyNzAyMyA5NGFhNGViOWJiN2Q5NDJkMDVmNDIyYmMwY2JhYTRhNWMxMmQyNzcwIGxlZ2FjeS10cnVuaworMjcwMjQgNWM1ZmZmNWRlMjUwZDczYjcwZWYzZTJmNWViYzAxMGIyZDIyZDE4MCBsZWdhY3ktdHJ1bmsKKzI3MDI1IDE4ZDU4ZGUyMDNkNmU4ZGUzMGRmM2NiMzgxYjJhZGRiMjQ2NGEzNzcgbGVnYWN5LXRydW5rCisyNzAyNiBiNWMzZjEwY2U2Mzk3OWQ2NzY3ZjI4YWIyMTJmMjAzZGM0ZDQ0MDM5IHJlbGVhc2UyMi1tYWludAorMjcwMjcgMjdlMjEyMGNiNDc2MzEzZjkyN2I3ZmFmOTRkMjZhZGFhODE4MWM4YiBsZWdhY3ktdHJ1bmsKKzI3MDI4IGU0MTkwNjZmNDA4ZjJkNDJlN2E3MDU3MDJkMDM0YTE2YzU2MzQ2MzcgbGVnYWN5LXRydW5rCisyNzAyOSA4MTBkY2Y5ZDgxYzk4ZGNjZmM2YzExN2UwY2I2MWY4MGIwMTBmMDg5IGxlZ2FjeS10cnVuaworMjcwMzAgNmRjZDRiNmVlNWRhOWU5NGQ5NThjOTcwYzg1ODI4ZTdjNzhhYmFhMyBsZWdhY3ktdHJ1bmsKKzI3MDMxIDJiZWNiNTc5M2FjZDFjOTg2ZmQxZjQyOGI3ZDM5YWQ4YzQ4NGQ2YjggbGVnYWN5LXRydW5rCisyNzAzMiBkYzdkNWMyZDU4NDVhOWMxNmQ4N2MyNTFlMWEyNDA1MjA1ZmZmNzg4IGxlZ2FjeS10cnVuaworMjcwMzMgY2E4NzExOTI1NWViMTc3ZmU3ZDZlNGRlNWRiNWEyZDA2Y2IzMjAyOCBsZWdhY3ktdHJ1bmsKKzI3MDM0IGUzMjE1MmFmZGU0YWJjY2E4OTI2ZDdhMzdmYzc1ODRhNjc4ZWM2OWUgbGVnYWN5LXRydW5rCisyNzAzNSBjM2RiYTkxYWZhNmQxNDJlMzlmOWFkZmUzYmFhODNiMmYxYWY3ZDk5IGxlZ2FjeS10cnVuaworMjcwMzYgOGVmYTUyZTBhODQ0ODU5MzlhMjRhNTQwOTY3OGRhOTkxMGYwOTU2YiBsZWdhY3ktdHJ1bmsKKzI3MDM3IGVkYzQyMzk0MGNkNjYzOWU0NGMxZjFiNWE4ZGM2ZGE1MWZhNTMxMmEgbGVnYWN5LXRydW5rCisyNzAzOCBiOTJmODE5Mzg4NDNmOWI2Zjk3Y2Y3NTBkYTU1OWFmNmUwYTNiYzBjIGxlZ2FjeS10cnVuaworMjcwMzkgMmZjYzZkNGU0Y2QyNjFmMjY1ODY0YTZiNmQ5MTJmNmFhZWRlZDgwZSBsZWdhY3ktdHJ1bmsKKzI3MDQwIGYzNWU3NTFmNWZmMjU4NDY2MTM0YzU5YzAzNWUxYTZiMzkwZTBkMDggbGVnYWN5LXRydW5rCisyNzA0MSAzYTFhYzExZWJlNTBjM2UyMDZmMTU4Y2Q2ZDc2ZmY1NDBjMTI4NGVkIGxlZ2FjeS10cnVuaworMjcwNDIgNzMyYjY5MzE4MTY4YzJjODExOTM0MGUzN2ZmNTA3MjRkNWMxM2Y4YiBsZWdhY3ktdHJ1bmsKKzI3MDQzIDVjNTkwMmRlNWE1NDIxNGYyYmU1MDVkMDkxZWI3ZmIwNjE3MDAyOTggbGVnYWN5LXRydW5rCisyNzA0NCBiMTgzNDhiZGNhMDgzZTMzZTVmNjNjMzEwOTNlOWNhNDVmODk2ZTFmIGxlZ2FjeS10cnVuaworMjcwNDUgZjE1OWVhOTU1ZTgwZWEyYmU0YTMyZmViNDBhN2I1MWYxZmQxNmE0NiBsZWdhY3ktdHJ1bmsKKzI3MDQ2IGUzYTg0MGZhNTg0Y2I4YmU5YzY3Y2FmMmI0OTk5NDI5MjI5MDQ3MjcgbGVnYWN5LXRydW5rCisyNzA0NyBkNTA3YWQ4NjIzNDIzMjM3NjY3OWQyZTZjYmY4N2FhOWUwMGIzZjE4IGxlZ2FjeS10cnVuaworMjcwNDggNjEzNThmODAwYjYxNjkwMjc5YWQxNGY4NGU1MWVkZjRjODBiYjk2YyBsZWdhY3ktdHJ1bmsKKzI3MDQ5IDMyNWJiYjQ5MzdjNWRjOWYzZjQ3MmE1MDk3MjUwNTgzYzBjMzk0ZGYgbGVnYWN5LXRydW5rCisyNzA1MCA4YTlhM2FmZjMyZmM1OGQ0MWQ4OWE5YzU3MzdmZjI5ZjI1Y2EyNjdmIGxlZ2FjeS10cnVuaworMjcwNTEgMTQ5MzhlNzYyNzZhMWE2OTY2MGM5OTM3MjllMTRhNzE4ODU5OGNlMSBsZWdhY3ktdHJ1bmsKKzI3MDUyIGM0ZDJkMzA1ZmQ5ODJhN2RjZTkwMGZmYjk3ZGUxNDQyZGY0ZGIzOGEgcmVsZWFzZTIyLW1haW50CisyNzA1MyBkN2JkN2I3MzI5YTdlY2Q3Mzk1OGI3MjQ1Mzg3NzM0MTQ3MmE3NTVjIGxlZ2FjeS10cnVuaworMjcwNTQgZDZmYWExMzc5NDhkZWZjZDNmNDBjNjQwNzhmZGM0YTA1ZGQzODA1MyBsZWdhY3ktdHJ1bmsKKzI3MDU1IDM5OWFmY2U4NmViMGQ4MDgyNjcwZWYyMDFmN2NiNzAyZTU3ODY4OWYgbGVnYWN5LXRydW5rCisyNzA1NiAzYmRmYzQ1ZDkwOTY4YzljOTllMzZhN2I3ZDQ1Y2E3YzM4ZDUyYzgxIGxlZ2FjeS10cnVuaworMjcwNTcgM2EyYTZhZjkwOTkyODNiZDk5ZjYxZWVjYTAyMTg4MWQyMmVmYzJkZSByZWxlYXNlMjItbWFpbnQKKzI3MDU4IDg5ODMxNThlOWYxMTM0NmVjZWZkZDIwZWMxNWY3ZGMxNzVjN2FlYjMgbGVnYWN5LXRydW5rCisyNzA1OSAwODA1N2E5ODc5MTBiM2Y5NGExYTU3YjZiMTk0MWVkYjY3ZjJmMDA2IERTX1JQQ19CUkFOQ0gKKzI3MDYwIGE1NmY4YzMwYWY3MWM4OTVhZGNjODg2YTBmNTYxYWVlODI3ZTVlMDQgRFNfUlBDX0JSQU5DSAorMjcwNjEgOGI5ZDkxMzA4MjBlZjdlZDg0ZDM2NGMyOTgyMGUxNmFiMjZhODQ3YiBsZWdhY3ktdHJ1bmsKKzI3MDYyIDYyNjZmMWJkMWFiOTNlZmRmMTY4YjQ0ZDI4MzQ5YjNhNzIwYzRmOWQgbGVnYWN5LXRydW5rCisyNzA2MyAwMTk5YWEyNzRjN2JmZmRlODYzNGI3ZmNkOWU2YTFkMWNkNWYxMmNkIGxlZ2FjeS10cnVuaworMjcwNjQgY2NlYWY3OGI4NWRjNzJlMDFjMTBlZmMzYzVhNGQ3NmVlYmVjMGY5YiBEU19SUENfQlJBTkNICisyNzA2NSAwZjU3MGJlNjczNmViZTJlZjRjYjZlNTkyMDI4ODhlZmFmZDA5MmU1IERTX1JQQ19CUkFOQ0gKKzI3MDY2IGMwZThjMDdhZTFkNmNiNTVlMThjMmU5MzllNmUyZTgzZDFhNjlkZGEgbGVnYWN5LXRydW5rCisyNzA2NyA3NzE4YjI3NGFkOGIxMmNkMDJhMGU0OGQzOTljZWExN2RhZGJlZWFlIGxlZ2FjeS10cnVuaworMjcwNjggMThkZGMwMmNlMzZmMzU4MmU5MjA5NDFhNjFhYzJhMDE1MGU4MzNmMyBsZWdhY3ktdHJ1bmsKKzI3MDY5IDY3YjlmNTNhNzgwMTRjYWRjNTE3MGMxNGQxY2YxYWY2OTQxZTUxN2UgbGVnYWN5LXRydW5rCisyNzA3MCA5YTVjNDg1Nzk2MzM5ZWQ2YTBmMGU3MzljZWNmYmI5YTdjMzMwZjRhIGxlZ2FjeS10cnVuaworMjcwNzEgZDRmNmUyYWRkZTQ4NDZjMjA3ZTI5MWExNjJkODczMDRjODNmZWMyMyBsZWdhY3ktdHJ1bmsKKzI3MDcyIGFiZTFiYjc2ZWU0NDc0NDk0YjY2MDlmMGIyYzE0ZDcyZDE0ZjIzMzMgbGVnYWN5LXRydW5rCisyNzA3MyBlNGFkZDdiYjVmMTQ4ZGI1MWNkNzBiY2IzYTFkZTlhNDZjYzdjYTg5IGxlZ2FjeS10cnVuaworMjcwNzQgZjg1ZjQ1MzFjM2MxNjQ0ODkyNjYwMTcyN2RiYmRkYzhlZmYwMTAyNCBsZWdhY3ktdHJ1bmsKKzI3MDc1IGUzN2YxYzBmOWExZTkzNmZhNzYzOGVlNzAxZGZjZmY4ZTkwM2Y0M2IgbGVnYWN5LXRydW5rCisyNzA3NiAwNThiZDJkNTBlMzMzOWY2MTRkZTBjNzljY2JkZjAzMTlhMGQxZmFjIHJlbGVhc2UyMi1tYWludAorMjcwNzcgNTZhNGQzYTUwYjc2Yjg2ZGJkNTJkNjVlZDE1OTQ5MTk4ZDVmNzY5MSBsZWdhY3ktdHJ1bmsKKzI3MDc4IDNiMzc5YWUzNTY5ZDkzMTBjNGYzNWQxMzUwMWViOTg1MjNlMjVkZjQgbGVnYWN5LXRydW5rCisyNzA3OSA0NGI5OTc3ZDQ4NDg3ZGVkYTU1MjUxMDI0OWI2YTE2YzBmNmIxOTMyIGxlZ2FjeS10cnVuaworMjcwODAgNTY1MDMyYjQ4ZjUwOWM1MzMzOGViMjkyZTUxMzA1YjZhMTNkODhiOSBsZWdhY3ktdHJ1bmsKKzI3MDgxIDI4Yjk5NzFmMDY4ZjdjZDRiNGM0ZDk0ODM3NTRjODM4ZGM5ODVhYjcgcmVsZWFzZTIyLW1haW50CisyNzA4MiAyYjEyMTlhNzJlZmNhNmVjNzY2ZmFmMTc4N2JiMDRjN2Y0ZTgxODk3IHJlbGVhc2UyMi1tYWludAorMjcwODMgOTY5YmQ1OTdmOTIzOGM3OTY2NmVjYTJkZTZjMzA1ZDI1ZmVjYzQ5YSBsZWdhY3ktdHJ1bmsKKzI3MDg0IGMyNzMzZThmNjYxMmI5YjI1ZWE4Yzc0NmIwNzYyMjdjYTE4NDExNzEgbGVnYWN5LXRydW5rCisyNzA4NSBmYzUzNjFlMDI4ZjNkN2Q2ZjcwZTVlMDY2NDg1Y2VkMDg0ZjZkMGMwIGxlZ2FjeS10cnVuaworMjcwODYgNzcxNTRjZWYyOWQxOWY0MGYzNWM4YTYyZDE1MjkxZjUwMmFkNjQ5NyBsZWdhY3ktdHJ1bmsKKzI3MDg3IDQ0NDk1NGM1NDM0YzFlZjdkODE0ZjhmMjhmYWViNGE2YTI2ZmNkYTEgbGVnYWN5LXRydW5rCisyNzA4OCAyMzdjYmQyYTkxZTliYmZjYjI2ZTYzMTU0ODU5YjA5NTAwNWI5MmRkIGxlZ2FjeS10cnVuaworMjcwODkgYjA2MjA4NWMxZmYyYjgwYTY1NzJiMzUzMWJiYjY3N2YzZWU3ZjczYiBsZWdhY3ktdHJ1bmsKKzI3MDkwIDQ4ZTkzN2UxYjNmZTNkMTBjMjZhYTBkMzk1MTlmMzM2Y2UwOGU0OWIgbGVnYWN5LXRydW5rCisyNzA5MSA3NWM1MTk5OWM4ZDU0Zjk1YWQxYjU4ODAxMzFlNGJiZGQ4NjQ1MGY1IGxlZ2FjeS10cnVuaworMjcwOTIgMmY2Zjg3MDhlM2U5NDVhNzE2OTJiYzliNzY5NjRlNzYwYzk3MGY1MyBsZWdhY3ktdHJ1bmsKKzI3MDkzIGRiMjM5ZWMzMDdlMDc0NzFjMmU4YmExZjMwMDJlZmUyZTI3MDhlZWQgbGVnYWN5LXRydW5rCisyNzA5NCAxMjM1YTk1ZmVkY2Q2Y2FmMmY0Zjk0ZDY2NzYwY2IxYTFjZWNjYjA5IGxlZ2FjeS10cnVuaworMjcwOTUgMmNkNmVkMWMxYjU4M2JhMjc4NzUwOTgwMDBhNmJhY2ZlODAzNjA5NyBsZWdhY3ktdHJ1bmsKKzI3MDk2IDlkMTFmNTE4NjBkZDNlMWZkM2YzZmZjMmJmZDk1Yzg4MGZkOGVkZTkgbGVnYWN5LXRydW5rCisyNzA5NyA1NTYyYTQ5OWZiN2Y4NDUxY2ZlOWNkZDE1NWZmNWM1YWYyZDhmZjMwIGxlZ2FjeS10cnVuaworMjcwOTggNWY4NWNhZTI1ZTE4NTU0MTlmMmViMzQyM2U4OTZmYTQwZTgyMDQ4NyBsZWdhY3ktdHJ1bmsKKzI3MDk5IGFmOGQ0MGU0YzM3NzczMjA3MWFhMjg2OTM0NTc3MGZkMWUyNDk0ZjQgbGVnYWN5LXRydW5rCisyNzEwMCBlMGE5MWM2NzM4OGY0ZmQwYWE1MGQ3NjJiNTY2MjM1NDgzYWQ5MmFmIGxlZ2FjeS10cnVuaworMjcxMDEgYmQyNmMxMjA1OTFhNTc4ZTliMTQwY2I1MTZiYjI2MzI5YmE5YzQyNCBsZWdhY3ktdHJ1bmsKKzI3MTAyIDdlYWFiZTc3ZDVjYmQ5ZjdmYjNlNmEzMGM0MzhjNmQyYmJlZTk2MTEgbGVnYWN5LXRydW5rCisyNzEwMyAzMDgxMjJiNjk5NmU0NGRjMThlZTk1ODNjNTRlNDczMzVhMzYzZjUyIGxlZ2FjeS10cnVuaworMjcxMDQgNjU1ZjQ4NjI4NDM2OWNkNGM4Mzc1MzI5MWUyNTU4N2RhMGQ2Njg5ZSBsZWdhY3ktdHJ1bmsKKzI3MTA1IDE4NDJkYjZhMTM5NDg1NDZjMWQ2YWJkNGNkZjNkOWRkMzg5ZjUyM2UgbGVnYWN5LXRydW5rCisyNzEwNiBkZjFhMjc1ZmY0ZjI1YjU0YTM1NDJkYjkzNWFmZGQ5NGZiZDMwODA1IGxlZ2FjeS10cnVuaworMjcxMDcgYTY4ZDI0NjZkOTRiZjU1NDkyMDhiZmFlNGRkY2Y2ZjQwOTAzZDVmOCBsZWdhY3ktdHJ1bmsKKzI3MTA4IDI3ZjQ4MzE0YmE5ZDBlMWVjMzM2NGY2NGExMTYwNWE5NDUyOGE4MTAgbGVnYWN5LXRydW5rCisyNzEwOSBhMjEzNmFlOWQ0Zjc2ZTcyNTA5MDc0MzIzM2I3MjI2MDhkYThjNWZmIGxlZ2FjeS10cnVuaworMjcxMTAgNjg5NTIwMGQ2MmIxOWNlOWQ4YjRjMWZlMzdlZmJjNjhkMTMzZDdjYiBsZWdhY3ktdHJ1bmsKKzI3MTExIGZlNzY5YjA3MTUwMzUzZmUyMWM0NzYzOWUyN2M3NzliNTQ0MDgzNDQgbGVnYWN5LXRydW5rCisyNzExMiAyZTFkZWY0MTdlY2I4OTdjOTRlZjc2ZjExODQwMmY1MjU2NDhkZDJlIGxlZ2FjeS10cnVuaworMjcxMTMgZWEwMzU0OTBmNjI0NWMyODkxNDgyMWRiYzQzOTFiNDgyNGQzMmQ1OSBsZWdhY3ktdHJ1bmsKKzI3MTE0IDM4ODMyMDAwZjdlOTQ1YmU1YzQ0YTY3NjYwNGU1MDdmNjY0ZTI1MGMgbGVnYWN5LXRydW5rCisyNzExNSA0M2RkY2RjZDNjNzFmZTRlZjc0MTJjNjk0MGQyZTZjNjRiOGQyNTJkIGxlZ2FjeS10cnVuaworMjcxMTYgNGQ1OTMyNTRiYTkzOTI1ZGVlZGQwMGFhY2U5NzU2MTRmOTg5MTYzMCBsZWdhY3ktdHJ1bmsKKzI3MTE3IDJkNjdhMGJhOTAyMGQyOGU4OTJkOGQ2NWMzYTRiMjMxNzNlMzQwZTUgbGVnYWN5LXRydW5rCisyNzExOCAzNjY4NzdlZGQ0ODc2M2NjYThhMTc0NmQ1MzMzNzBkOTIzMWQ0Nzc1IGxlZ2FjeS10cnVuaworMjcxMTkgN2JjNDgwMjllYWE5Y2IzZDkwYmJlODI3ZGRmNzY3MmU5YjQ3ZWE0MSBsZWdhY3ktdHJ1bmsKKzI3MTIwIGExNjhiMmY2ZDdkYWFkNmY1ODI2ZWY5ZWU5NTYzNzk2NzE4OTBmYWYgbGVnYWN5LXRydW5rCisyNzEyMSA0NzFhNTdiZjJkYWUxODVkNDgwYWUzZDhjYmEwNDk2YTMxNTE5ZDRlIGxlZ2FjeS10cnVuaworMjcxMjIgNDEwOTdlOTJmNTYwZjk5OTM0YmIyYWNmY2QyODE2NDhjYjFmOTExZSBsZWdhY3ktdHJ1bmsKKzI3MTIzIDJjOGVhN2Y5YTNjZWRjMzdmZjFhNjUzOWZmYjVkMzkyOTFjMDdhOTAgcmVsZWFzZTIyLW1haW50CisyNzEyNCAwMjc5MDQwYWUwM2NiYTRkODliZTEwYWQ1NDI2MzY1MTMwZjY3NzE4IGxlZ2FjeS10cnVuaworMjcxMjUgOGU1ZjI2Nzk2NjIwMGIwMzM3MjI3M2Y3OWNhNGNkYjI3MjBmZTIwMCBsZWdhY3ktdHJ1bmsKKzI3MTI2IDA3NzFmOTM4MmQxZTMyZGU4OTU2MGJmZWU1MmZiMzExZTNmYzQ4MmYgbGVnYWN5LXRydW5rCisyNzEyNyBjN2U4MDc4MTcxNTkxY2NkN2NlYmQ3ZWY1NDVlMWUxN2Y3YTJiZTFmIHJlbGVhc2UyMi1tYWludAorMjcxMjggOTEzMTczMDFkZDA5OGNhMzNiN2YyMTAyMWI3NTY2OGY3NTExYTM5YyBsZWdhY3ktdHJ1bmsKKzI3MTI5IGU2NDBkODliNDkwNzQxNWEwODQwODYyMGZmMzIyZWZkYzJmOWE4NDYgbGVnYWN5LXRydW5rCisyNzEzMCA5NGQwZGM5ZDZlNDRlZjEwNzQyM2JlNmI5MzBlZjhiZWQ2NmE4MDc0IGxlZ2FjeS10cnVuaworMjcxMzEgYmFkYmM1MzM0NDg4NjEyMmFhODk4MjUzMWRjYmFiZWUwYTRlYmUwZSBsZWdhY3ktdHJ1bmsKKzI3MTMyIGYxNmY2ZGE0ZjVmZmRiNmQ1ZGRjNzBhMjEwZGNkODI5NjZhMGM2NGEgbGVnYWN5LXRydW5rCisyNzEzMyBkNThmYjU0NDUxMTg4OGU2ZmI1OTE4NjNlYzg1OWU2NjY2N2FhOTM4IGxlZ2FjeS10cnVuaworMjcxMzQgYTdjZWFkYjAzZWRjOTE3NDU0NGE1OTJiNTYxMTY0ZjgyNjgxZDI3NSBsZWdhY3ktdHJ1bmsKKzI3MTM1IDFjYmNkZGNhMzNiMDI4M2MzODQ2ZTgwMmMzOWEzY2JjYmNiZGVjYmQgbGVnYWN5LXRydW5rCisyNzEzNiA1ZmIwOGQ4MzJlYWM5YzkwODM3ZDRmMjNjZjhmZTlkNWRiNzIxZWVkIGxlZ2FjeS10cnVuaworMjcxMzcgNDY4MGVmNGZlOTBhZDQ1MzNkMzRiYjY0NjA3NDk1M2UyYTcwNDk5NiBsZWdhY3ktdHJ1bmsKKzI3MTM4IDM1YjYyOTA4NTVmYzFlODc0Mzg4MzVmY2E5MTUzN2FhOTAzYmEyZGMgcmVsZWFzZTIyLW1haW50CisyNzEzOSBmNmIyNzE5ZmJmMTE5ODk3ZWFkMjUwNzFjZmRjMmFkNTlkMzVhMGE2IGxlZ2FjeS10cnVuaworMjcxNDAgMDZkYmQwODk4YjM5ZTI0M2RhMzFkNDdlNzFhZmQ2ZjAzOGQxZjE4ZiBsZWdhY3ktdHJ1bmsKKzI3MTQxIGE1NTM0ZmFlNTExMDE2ODY3NzIyOTExNzAwM2MxODM3YzJkYTBiMzAgcmVsZWFzZTIyLW1haW50CisyNzE0MiAwYzY1ZjQxZmQ5MjE5ZWQ4ZmQyM2JkYzQ2YjkxYzVkMzliNWY5ZjhlIGxlZ2FjeS10cnVuaworMjcxNDMgNTAwNjMwMTZkMDQ2OTlkMTE4NmZlMjhkMTdlY2E3YzY4MWUxN2M0ZCByZWxlYXNlMjItbWFpbnQKKzI3MTQ0IDVmODZjMjFiZDlmYzg5MDU2NTZhMmE0NGY3YjdiZmY0NDlkMzJjMGEgcmVsZWFzZTIxLW1haW50CisyNzE0NSA3MWRiNDI4ZjZlMDhhNDU5YWU0YzQyYjFlODZlNDViYzk2NzNhMzM2IGxlZ2FjeS10cnVuaworMjcxNDYgYmVjMWI5NDJlMGJjM2NkNzFlNzY5YTAxNzIzMTFmNTY5MjMwYmJiOCBsZWdhY3ktdHJ1bmsKKzI3MTQ3IDI0NTIyNGQxYjhjOTIwMWEyYWU4NDNlZTEyMTdlM2JlM2U3NTE2NDQgbGVnYWN5LXRydW5rCisyNzE0OCA1NWM5MjI2Njk5MTMxMzQxZTI3ZjQ4YTRlZTgzN2I5ZmFjNTExYzcwIGxlZ2FjeS10cnVuaworMjcxNDkgYzdjZGE2M2EwMDdlNDRmNjE2ZDA1YTRiMDk2YmRkNjM3ZjhiNTlhOCBsZWdhY3ktdHJ1bmsKKzI3MTUwIDczMDQ5MGZmMjVlYTM5YmQ2NTAyMWE5ZTRlZTBhODgzNjI4YWM3YmQgbGVnYWN5LXRydW5rCisyNzE1MSA1NGY2Zjg5MTM5ZGI1M2Q5MThlNTU2MWM3NTU5NzNmMjMwNWE1MjZjIGxlZ2FjeS10cnVuaworMjcxNTIgMGRhYjhiYTFkMjk4MDc5ZjljMDQ1OWU2ZTE1ZWU1ZDZlYjJjNmMzYiBsZWdhY3ktdHJ1bmsKKzI3MTUzIDI0YjBmNmQ2OTNlMzRiMzdjNTJkZjA1OTA4ZTJiN2M1ZGQ4M2Q2ZWEgbGVnYWN5LXRydW5rCisyNzE1NCA3YTMyYzIzNTZlNTY3Y2Y4OTlhMjY4NDYyM2Y1NGYwMGE1YjIxNDk3IGxlZ2FjeS10cnVuaworMjcxNTUgZTBmYmY5YzRkNDZjMmQyYmU4ZDc4NTM3ZGQyZmI0ZWI3NzU3M2FlZCByZWxlYXNlMjItbWFpbnQKKzI3MTU2IDkzMjk3NzA2MzdhODU4NTIxOTRmNmViNjk0ZDE0NzUzOTAyZDI1NzUgbGVnYWN5LXRydW5rCisyNzE1NyA5ZGEyZDhjMTMyMDkwOTQ4MzU4Yjg2M2I1YTBiN2UzYTMxMGEwZjdhIHJlbGVhc2UyMi1tYWludAorMjcxNTggYzAxYzFiNGE4MTcxNmQxZTIzN2Q0MTBiYzNiZTE5OTY4YzRkYzY0MCBsZWdhY3ktdHJ1bmsKKzI3MTU5IDQ4NmY0MDQ1ZDEzZGY2MDg5NmFlZjliYzIxZDk2MTZmMzVjZmU5NDcgbGVnYWN5LXRydW5rCisyNzE2MCBjZGU2NjA4NzM5YzQyZDQ1YTFmNmIwODUwN2Y3NTU3YzQ4OWM0NTEwIGxlZ2FjeS10cnVuaworMjcxNjEgN2RkNDMyZTFkZTI2NjY0MDJlZjZiNTkwZmYzMjAwNTllMmFjNmYyMCBsZWdhY3ktdHJ1bmsKKzI3MTYyIDdjZGM1MzFlNmE1MDRhMDlkNzgzN2Y3ZmJiYmE1M2MyOTA2MzBlYWUgbGVnYWN5LXRydW5rCisyNzE2MyAxZjFhNmY3ZGQ2MDAxNGRiMDZjZDhiYWVlZDg4OWUxNDc5YTNmOTUyIGxlZ2FjeS10cnVuaworMjcxNjQgODBkNDUwZTU1MmY2OTljZTY3YTBmNzgxZTdiYTFjNzhjZjkyNjA4YiBsZWdhY3ktdHJ1bmsKKzI3MTY1IGZjYzM2ZWUxOTI0YjMxNmRhOTc2NDZlOGU5MjI0NzM0NTk3ZTBjYmYgbGVnYWN5LXRydW5rCisyNzE2NiBiYTI5NDg1ZDA3MjBiZWVhOGYwMTY1N2U0MmEyZDVlM2NmMmU4OTg0IGxlZ2FjeS10cnVuaworMjcxNjcgMWRhNmQ2N2Y0YTA1YzVlMzBmM2Y1NDJmNmJkYTUyYWNkNDYxNTUwMiBsZWdhY3ktdHJ1bmsKKzI3MTY4IDJhZDEzZWU2ZDg1MDVjMmMyNDEwMDg2YzE5NjA1MWY4NTE4ODMwNTcgbGVnYWN5LXRydW5rCisyNzE2OSBiZjE1NTVhOTI3MTE3ZGIxOGQzZWM2MjkzZGE4OTRhZmE4ZmM0NjE3IGxlZ2FjeS10cnVuaworMjcxNzAgYjJiMWYxZmY1YzcxY2RhN2MyZGY3NDU4ZmM5ZGY5ZmViYTZiNTU1NSBsZWdhY3ktdHJ1bmsKKzI3MTcxIDRlYzU4YzI3MGYzZWMwYzBjOWVlZjg5ODk1MTM3NjY2MzFiZDQyY2EgcmVsZWFzZTIyLW1haW50CisyNzE3MiA3ZWFkMmQ5ZGY3Zjk2OGNkNTRjY2NmNmIxYjcwNjU3YTcwNDczZjQ0IHJlbGVhc2UyMS1tYWludAorMjcxNzMgMGIxMmFmYzQwMTJhODA2Y2JhNDVlNjM1NDRiMGI3OTVhYzg3N2Q3MyBsZWdhY3ktdHJ1bmsKKzI3MTc0IDA2MDFlY2M3ZjRiZjczOWRkMzk3ODIxN2MyYzNmMzQ3MGNlMDc3Y2YgbGVnYWN5LXRydW5rCisyNzE3NSBjNzRkODZkYzQwMTc3NGRjOThlZTQwNTE0ZmM2Y2VkNjc5ODJkZWFiIGxlZ2FjeS10cnVuaworMjcxNzYgY2M2NWI1YmNmYzM4MzY5YjhkOWI2NTc2YTQ3OWFmNjFjMTY5NjU3YyBsZWdhY3ktdHJ1bmsKKzI3MTc3IDc5ZGNkNTdmMjcyZGVjNDkzMzMzNTZjOTA0NWM3NjRmOTY3NjYyMDYgcmVsZWFzZTIxLW1haW50CisyNzE3NyBiYjViMzcwNDkyZDZhMzc2OWU3ZTNhYTUwYmY0NTcwNmMyZDM0MmZhIHJlbGVhc2UyMi1tYWludAorMjcxNzggMDFlNGI2OThmZjdlZmUwYjFmMzI5N2ExYjY5Y2I3ZGRiMjRhYzZhOSBsZWdhY3ktdHJ1bmsKKzI3MTc5IGUzZTAxOWJjNGUxZWNlNDE0NWVlMTc1NzUxY2Q2YzZiODQ3MDFjNTUgbGVnYWN5LXRydW5rCisyNzE4MCA4OWE3ZmE5MThjM2I3ZjY4OWFmNDM0YmY1NzhiMzZmMzY3YmE0ZjljIGxlZ2FjeS10cnVuaworMjcxODEgZjZjMjZkMDgzYmY2YzhkZjMwODkzZWU2ZGFiZjRmYzk4NjE4NmY1YSBsZWdhY3ktdHJ1bmsKKzI3MTgyIGM3ZDdkMjMxOWIzYTFjN2JiNTNiMWRlZjFhNjg3YzE3MzBiODFkMzMgbGVnYWN5LXRydW5rCisyNzE4MyAyMDNkMTQxMmE3ZTgyNmQzYzA0Mjk2MmVmNWZiMjUxOWY1MWYzNmNjIGxlZ2FjeS10cnVuaworMjcxODQgZTRkNTU3ZDQ2Yjk2ZmQ2NTQyMmRiZTM3NjY1YTQ3M2RmNzMwM2FkNCBsZWdhY3ktdHJ1bmsKKzI3MTg1IDJkOTdiYzJiYTUwZDI3OGQwYmViNjJmNjNkZjQzZWQwNjY2Yjc1YjAgbGVnYWN5LXRydW5rCisyNzE4NiA4YTBhMTRlMzcyNWUzNzYzZjE1Njc3NzZmYWEwYjk3MWUxZGYyOTIwIGxlZ2FjeS10cnVuaworMjcxODcgNDNkNjU4ZGM4ZGQzNmU0NDczNmQzYjUxNmJjZWNjOTNmZGVmMzEyOCBsZWdhY3ktdHJ1bmsKKzI3MTg4IDEzMGZmZjQ4NmZhNjRlZjgyMDA2ZDI3MDU1ZDI0NzYxZTQ1MDNiODUgbGVnYWN5LXRydW5rCisyNzE4OSAzMTI2YzQyNjI5NjI5Yjc5NWFjM2RjMDRjNjQ3YzE3YWUzNzA5N2U2IGxlZ2FjeS10cnVuaworMjcxOTAgOTlkMjI3MjMyNTJmNTkwODk5NWRkODZhMzY1NzZiMjc1MjgwYmVlMCBsZWdhY3ktdHJ1bmsKKzI3MTkxIGM0OGJmNWRmNjE0YWMwNGE3ZDI1NTY4N2E5YjBkNzU1MDg2NTIyMWEgbGVnYWN5LXRydW5rCisyNzE5MiA4ZmY2OTFkYzdmMjkxZGRkMGM3YjUyNjg3YWRiYjU4ZmZhMTdkYzg2IGxlZ2FjeS10cnVuaworMjcxOTMgOWYwMDA5Y2E5N2I5YTVjMmQ3Yzg3ZWQ4ZGE4ZDNjMDUxMTJjZWZjMCBsZWdhY3ktdHJ1bmsKKzI3MTk0IGFiY2ZhNDk5NTJjNDMyNjI3ZTZkMTE0YzZmMDBjOGY4MThkY2RlZDMgbGVnYWN5LXRydW5rCisyNzE5NSBkNWU4OGMwYzllMDllZTU1YWIzODE1OTAwM2UzM2RhOWVhMjFmODk5IHJlbGVhc2UyMi1tYWludAorMjcxOTYgNDFjNGRkYWIzNmYyZTIxZTJjMTM3NDIxOGUyYWUwZGRmNmE1MTY2OCByZWxlYXNlMjEtbWFpbnQKKzI3MTk3IGU0MjcyYWQxYTYzNjk0YTIwZDFiMTUzMmNlYmU0NDlhZjc3M2YzODAgbGVnYWN5LXRydW5rCisyNzE5OCBhZGUxZDU2MTA5YTgyZjk1MGI1OTg5MjAzMDFkNzZhMzJiM2JkYzkwIGxlZ2FjeS10cnVuaworMjcxOTkgZjczMDZhZTg2NjJkYjU4ODIwY2ZlZGIyODQ2NWY5ZDQ5N2VhZGI1MSBsZWdhY3ktdHJ1bmsKKzI3MjAwIGVkMWJhMzdhNDZiNzNmMGM1YjI3MTI0NTU1NGMyZGM3YmU0N2EzMmYgbGVnYWN5LXRydW5rCisyNzIwMSA5ZjBhZDBlYjYxZjA4NmNjZDdhN2YyYTY2MmViZTA4ZDM0M2Y0MDc5IGxlZ2FjeS10cnVuaworMjcyMDIgOGFlMjZkOWJlMWI0ZmMxM2Y0ZGY1OTExYmMxNGE4YzU5ZDVjMWFhZSBsZWdhY3ktdHJ1bmsKKzI3MjAzIDFjZjFmOTgxMjIxOTc5ODk0MzMxNGYxM2FmMjVhMDA4M2JmYmE1YTAgbGVnYWN5LXRydW5rCisyNzIwNCAwNjVhN2YyM2JlMmZkNDRhYzdhYjA5ZTZlM2M3NTQ3Zjg1NTQ5NDg3IGxlZ2FjeS10cnVuaworMjcyMDUgMzU5YTU3ZTk2ZDVlYjYzYmRjNTc3ZTIyZThkNjcwYTM3MDNhZDFiYyBsZWdhY3ktdHJ1bmsKKzI3MjA2IDk1MjYzY2NlYzgxOWNjYzUyZmMxZGViNTgyNDhjYTM2OGZkYzVjYzIgbGVnYWN5LXRydW5rCisyNzIwNyBjODgxNWJkMDFmZjU3OGU1OWE1NjU0NjJiYTBkNTVhYTA5MjkyMTBhIGxlZ2FjeS10cnVuaworMjcyMDggOTAzMTEyYzFjODg3NjA4OGI5N2ZmMTE3NzkzNjIzYWY0YWQ0ZjE0YiByZWxlYXNlMjItbWFpbnQKKzI3MjA5IDNmMTk2YjRkYzRjMTA2ZWMzNjY4YjdmNjllYmZhOTEyN2IyY2YxMmIgcmVsZWFzZTIyLW1haW50CisyNzIxMCA2YzYxOWMxNjFiODdmOGRmZDgxMTI2NTZiMDc2MGY3MmQ2MDk2ZDFlIGxlZ2FjeS10cnVuaworMjcyMTEgODVhNGU3MjdiMTZiYTFlNzNhY2E0ZDViMTI4YjFkM2IxOWU1Y2JmYSBsZWdhY3ktdHJ1bmsKKzI3MjEyIGJkMzdlYjRkYWYzYjY3NDgyOGQ2MGM0OWNhNDg3ZTlkMjE5ZjA3MTcgbGVnYWN5LXRydW5rCisyNzIxMyBiNDgxYmE5NjdhZDgzNzEwZDM2OWFhYTU5NmYxNDNlNTA5MjljZDcwIGxlZ2FjeS10cnVuaworMjcyMTQgYmViNjk5ZTEwYjI5Y2UyMjRlMDEwZTU5ODk0MGVjODI5ODJiMDZkOCBsZWdhY3ktdHJ1bmsKKzI3MjE1IGY2YzJjMDg5ZmRmMmFlMDNlMzc5YjY5OWM0NjMyM2RjMzEzZTg3YzYgbGVnYWN5LXRydW5rCisyNzIxNiA3MjUyYjg2N2Q4MWUyOGVmY2Y2MjllMTA5YTQ5NmZjZTQ4ZThhNGQ1IGxlZ2FjeS10cnVuaworMjcyMTcgYzljOGY1MjNmZjFiNTY2N2ZmZGRkNmMyODE4ZjkzNmNjZWNmZDY4NiByZWxlYXNlMjItbWFpbnQKKzI3MjE4IDg1NDU4M2NkNjNjN2NlNTczYjdiODcyOTJkMGJlNDBjYWFkNDE5ZmQgbGVnYWN5LXRydW5rCisyNzIxOSBkNmFlNTQ0YWNkMjRhMWY3MmNlMDA1MzRmZWQ0NjRmZGU5MWVlNTA0IGxlZ2FjeS10cnVuaworMjcyMjAgNDYyNzVmOWU3NDA3MTBkOWIwZTVhMGFmMjY0YmQ0MmQ5NjcxN2I3NyBsZWdhY3ktdHJ1bmsKKzI3MjIxIDhhNDc2OTI0ZWNmZWExOTRmNDdjMGMyNjYwY2QwNmRiMWQ4MGEzNWEgbGVnYWN5LXRydW5rCisyNzIyMiA4YmM0ZTViYTFmNjUxN2E3ODg3ZTg5MmE4YmM3MmYzMTU1YTgwMjYxIHJlbGVhc2UyMi1tYWludAorMjcyMjMgMmIwNzEzMzcyMDVjMDFjMjY4NWIxYmJmMjJhZmYzYTVmMDU0ZjUyZCBsZWdhY3ktdHJ1bmsKKzI3MjI0IDg2OGNmYmRjYTkwOTY5OWIwYzU2OTMwMGExZTAyNzRkMjc1YThkYWUgbGVnYWN5LXRydW5rCisyNzIyNSA1MDI3ZTdjMTJhMTYwMDNhMDZmYjAzYTBhNDQxZmZjYmVkOGRjOTUxIHJlbGVhc2UyMi1tYWludAorMjcyMjYgNTk4NmRiZDAwOTRmYzNiM2Y0MzI0MWUwMWE5ZThiY2NjYWJlZGJhZiBsZWdhY3ktdHJ1bmsKKzI3MjI3IDZkMDA4YTRlMjYzMzM1ZWZmN2VlMzZkNzUxNGI0N2U5ZDBhZTJjYWYgcmVsZWFzZTIyLW1haW50CisyNzIyOCA2M2VlMzFiYjI1ZjMyNTYwMjkzNzdmNmI3NDAzNjdjOGE4ZTA1MmQ3IGxlZ2FjeS10cnVuaworMjcyMjkgZDdiMzA3YzM3OWM4ZGMxZGQ1ZDAzNmZmYzQ3OWRhNzM0M2I5OTM3MCBsZWdhY3ktdHJ1bmsKKzI3MjMwIGI3OWQ0MzMwNWM3MmQ5NDczZjU4NTM2Y2VhMTkzMWZmOTNhNzNlNjQgbGVnYWN5LXRydW5rCisyNzIzMSBkZmE2ODY2OGQwMGVjZGI1NmFmYmZkYmU0NWQ4NmM1MzYzMDViNjc1IGxlZ2FjeS10cnVuaworMjcyMzIgNmMxYTBkYzg1MWI2YzFjYzM5NWM4NmYxN2FmNjcyOWFlMThjMjM2ZCBsZWdhY3ktdHJ1bmsKKzI3MjMzIDFhNzZlM2M0NTA4ZjM2MzUzYjJlM2RiNjVjZTJmZTdkNmZjY2JiNDMgbGVnYWN5LXRydW5rCisyNzIzNCA0ODdhNmI5OWY3ODExYjBlODEwNmMwM2RkZjIxZTFhNGViMzdkMmY0IHJlbGVhc2UyMi1tYWludAorMjcyMzUgNDVkNjc2OTMzODgyOGY3ZjFiZGEzMDhlMTdhZTQxNzU4NmMyM2VmMiBsZWdhY3ktdHJ1bmsKKzI3MjM2IDhlNjc2MGJmMTg4NGU3Y2I0MDA4N2ExYmY2ZTQ5MzU0NGRiNWI1MTIgbGVnYWN5LXRydW5rCisyNzIzNyA4YWQ4MWIzNzk1NTIwMDU4YWUxYzc4NDNmMDEwMzBkNjJlZjUyYWE3IGxlZ2FjeS10cnVuaworMjcyMzggNjNkMWUzMjYzZjQ1NjJmMzk1NDU5MjYxMzY0MTZiZTE0MjRmOTRlYSBsZWdhY3ktdHJ1bmsKKzI3MjM5IDk1ZTdiYmJkMDk1NDk0NWVkYTk4N2NlNzAxZWEzNzM2NTE1ZTQxNzkgbGVnYWN5LXRydW5rCisyNzI0MCBjMDJkMWM5YTY2MmU2NjVhNDA3ZDUwOTk0YTQ0NGYyMjE0MzE1MzNhIGxlZ2FjeS10cnVuaworMjcyNDEgNDU4OGI2ODIwYTExZTU0YmJkNDA5ZmJlZmNjNTcxOTBiYTViYzU0MiBsZWdhY3ktdHJ1bmsKKzI3MjQyIDE1YWIyOTM5Mzc3OWYxOWFhODNhMmFiZjRjOWRmM2I3Yjc1MDExZDYgbGVnYWN5LXRydW5rCisyNzI0MyA1YWZkMTRhMmE4YmM2Yzg3NjAxNDgxYTY1MmQ4ODFmOTE2Y2U0NzlkIGxlZ2FjeS10cnVuaworMjcyNDQgODMyZjA1MDExNDhiYjc4ZWNmMmVlNDNlMjlkM2IyNjk1YzRlZDE3ZiBsZWdhY3ktdHJ1bmsKKzI3MjQ1IDA0OTlkZjU4ODRkMmY1NGZmYzQzZjA0ZjY3MzFlNDY2NzI2ODUxZDggbGVnYWN5LXRydW5rCisyNzI0NiA0ZjZkMzFkYWNkNWU2N2U0OWM1MmM1NzczOWJlMmNkMDBlZjg5MzE0IGxlZ2FjeS10cnVuaworMjcyNDcgMDg0NzVjODdkMjRmNTBkMjdiODQzZTEyZThlMTA3NjU5ZmQ3NzdjYyBsZWdhY3ktdHJ1bmsKKzI3MjQ4IGJiYWVhZjI3MTljNGJiZTY1NjJlODdjZTBhMGNlOTE4NjU3NmE3YmIgbGVnYWN5LXRydW5rCisyNzI0OSA4YjdkODdlYTQ4OTRlMWQ2MDk2MGJiMDg2ZmQyODUzYjdmNzZhYWQ2IGxlZ2FjeS10cnVuaworMjcyNTAgM2RiYTg2NmU4NjJlOWZmYTYxYmE0NTFiNGI2Zjk3MWQ1MDMwMDIzNiBsZWdhY3ktdHJ1bmsKKzI3MjUxIDAwMGFiNTg0ZTc3YTYxYjQyODhhZWIxYjYzYmNkMGU3NWNjYTU3ZjAgbGVnYWN5LXRydW5rCisyNzI1MiBlYTdlNzE3ZGVlMjcyM2I0MTY0OTk3NjBkNTU1NDdmMDk4MDg2MDIyIGxlZ2FjeS10cnVuaworMjcyNTMgNGM2N2RkNDJhMWQ5ZWEzOGM1OTljOTczNDhmZWNjY2NjN2Q0MWJkOSByZWxlYXNlMjItbWFpbnQKKzI3MjU0IGFiNTM1NWQ4NzNkZDU4N2MxYmVlNDcwMGRkMjAzZjNlOGFhZDdjYzkgcmVsZWFzZTIxLW1haW50CisyNzI1NSAxY2VmNjFkNTk0Nzg2NzFlMDViYjMyNTRhMTZkOGNiMmU2MmU1Y2ZjIHJlbGVhc2UyMi1tYWludAorMjcyNTYgN2I2NmYwMDM0MjMzYTc2Njc0MWMzMzZlNDk2MDFiZjNiNjdkYmMxMiBsZWdhY3ktdHJ1bmsKKzI3MjU3IDQxYWI1MzJkNGY2MDFjY2E0NGNjNjk5NWIwMDM3YjVhOWIzOGRjZTEgbGVnYWN5LXRydW5rCisyNzI1OCBjMTQ1ZmRkZWEzNDA4NGZmNjNhMTkwYmEzNjEyMzRmYzAwODBmMzdlIHJlbGVhc2UyMi1tYWludAorMjcyNTkgZWE5ZDMzM2Y5MDM0ZTFkNTIzNzQ2MmJiODMwMDMyODgzZmVlYWU0MCBsZWdhY3ktdHJ1bmsKKzI3MjYwIGE0NGYzODc3YTM4NmJmMjczODc1NGUxOWM1MzE3OGJkZDg4MGQ0NzcgbGVnYWN5LXRydW5rCisyNzI2MSA4M2U0NThhNjNjM2ZiYWM0Mzc2ZTQyZDk0YjIyZGQ2MzgxMzMzZmQwIHJlbGVhc2UyMi1tYWludAorMjcyNjIgMzI0YzcyNjc1YzhkMDRiNGIyMjUzYzBjYTQyOGI2OGQ0NGRiMmVmYyByZWxlYXNlMjEtbWFpbnQKKzI3MjYzIDAyYzUwNDVkNWI0ZTBhMzI3ZjhmZTg4OTI3NzBiODZlY2E4MzI0ODEgbGVnYWN5LXRydW5rCisyNzI2NCBhZDFkODYyZmI2MzI2NGRmMGEzZjgyMmNjNDg2YTg1NjRlMTE3OTQ3IGxlZ2FjeS10cnVuaworMjcyNjUgODMwNWExOTU4NGJjODhhZTE2ZTY4YThlY2Y1NWVhZDEyMDY2NjAyOCBsZWdhY3ktdHJ1bmsKKzI3MjY2IGY1MDMwYTI5OTM1ZGNhYjNhMzJjZGEwYTg2YjEwMTBhZmY4ZWE3NjEgcmVsZWFzZTIyLW1haW50CisyNzI2NyAyODU3MDJmMDgyNGE2MzdlNzNjOGU1ZjFiYTVmNGJhZmM0MjUyZDEyIHJlbGVhc2UyMS1tYWludAorMjcyNjggMDg5OTQwOWEwY2I2ZDFlMWUzYTg2MzY5ODdjYzM5YzZmZWE1NjQyOSBsZWdhY3ktdHJ1bmsKKzI3MjY5IDAxY2RkMzhkMzVmYTBkMGMyMGIxZTNmMzNmYTlmMWEzOGFkZGQ1NzMgcmVsZWFzZTIyLW1haW50CisyNzI3MCBhMDdiYzMwM2E2MGQ4YWUzYjc0ZTU5NWMxNjBjM2M4OGZhZjU1MTY4IHJlbGVhc2UyMS1tYWludAorMjcyNzEgMDY2Zjg5MzgwNzFhNTUwODhkZGY3ZGZjY2I2OTIyODFhZmJjM2E5MCBsZWdhY3ktdHJ1bmsKKzI3MjcyIDRmMDYwNmNlZWVmOGM5NDM5NGViMmJjZjI5M2UxZGU1MDVlMzU3MDIgcmVsZWFzZTIyLW1haW50CisyNzI3MyBlOGJhZTI1Mzc4NGIzZWRjYmNlMTMyNjQyNzRjYmU0NzM3MjJiNzdkIGxlZ2FjeS10cnVuaworMjcyNzQgOWNlNzFiMWNjMTdmNzE4ZTljYjkyNTBjYjIwZGYyN2MxZWQzZWE3MSByZWxlYXNlMjEtbWFpbnQKKzI3Mjc1IDczY2Y0ZDg0NzU3MGVjYWFiNTQ4NTI0M2RhODdiZWE0MTU5MTA5N2MgbGVnYWN5LXRydW5rCisyNzI3NiA5MmYyODljMmY3YzYzZDk3N2IxNTkxOWU4YjM4ZGFmZTQ5ZDM1OWJiIGxlZ2FjeS10cnVuaworMjcyNzcgYjE2ZDRiZTZhMjMyZWUxODExMTg0NzVlMzBkMGFiOTFlNGU0NTFhYiBsZWdhY3ktdHJ1bmsKKzI3Mjc4IDkyMTA2NGMyNjI5N2IyNWViMjNiYTk2ZDRjYzFiZWIxNzQzYTU4Y2YgbGVnYWN5LXRydW5rCisyNzI3OSA2ODkzY2VlYzg2MTBlOWM1NDg0MzQ2MWQ0OTM4ZDc5NWYyZmE0YmE3IGxlZ2FjeS10cnVuaworMjcyODAgMDc1Zjc1NWE2NWRhMTZiZGVmZmYzNzA5MDBhODM5MjJhMDU0MTYzNCBsZWdhY3ktdHJ1bmsKKzI3MjgxIDEyOThlOTdmYjM0M2FkYjE2YjJkZDFlZGJkM2M0NmNlNmM3NWRiYTEgbGVnYWN5LXRydW5rCisyNzI4MiA3ZTNlYWM1ZDMyOTk3OWNkOTYyMGY4ZTBiMWZlMzRhNTg0N2NhMGRlIGxlZ2FjeS10cnVuaworMjcyODMgNjIwYjY5OTY4NWZmMDQyOGQyOTU2MGM5OTc5YWMzMmQzZTNkZmExZCByZWxlYXNlMjItbWFpbnQKKzI3Mjg0IGZmMGNkNjg3OGJkZGU1ZmJmMjM2NTc1NzExYTA4NWQzNGI1NzA3NmYgcmVsZWFzZTIxLW1haW50CisyNzI4NSBjZTE2M2YzNDBjZGZmNWMzNjIyZjk2MjI4ZWI4MWJlMzE0MmE2ZTkwIGxlZ2FjeS10cnVuaworMjcyODYgMGJjZWYzY2EyMWMwNmEzNzIzODdkMTkxOGU5NzU4ZWQ3YTM5YzcxNyBsZWdhY3ktdHJ1bmsKKzI3Mjg3IDVmNjlkNmYxN2FhMzEwOTJkNzA3N2FmMmY4Y2RiODc1OGMyYTMwYzcgcmVsZWFzZTIyLW1haW50CisyNzI4OCA4MTVkMDI4MDBkOTgwYmYwMjEyMDg0NDk1NWZmZDA4MjgxNDVjOGY2IHJlbGVhc2UyMS1tYWludAorMjcyODkgYmFlOTk2YmI3ZDgyY2UyZGVlOTI0MTc3MWY0YTJhZTVjYzI1OTc2NiBsZWdhY3ktdHJ1bmsKKzI3MjkwIDM3NTYwZjQzNGY2YTJiZWFlMGRhNmQyYTc1Y2IxNDFjMTg3Y2RmNmYgcmVsZWFzZTIyLW1haW50CisyNzI5MSAxMmY0OWZhOGY0N2YyYWJhMjQ2NmJmMjA0YzFjNDE5ZTE4ZWIwN2YzIHJlbGVhc2UyMS1tYWludAorMjcyOTIgOTIxMWJjNzI0OWEwN2ViMzQ0MmQ0Y2NkMDUyMjYzYWU1OTU3MDUxNiBsZWdhY3ktdHJ1bmsKKzI3MjkzIGZiYTdkMTAzNWZlZDVlZmMxYWE0MDMzMWExMGM0N2I1YzNmY2U0ODggcmVsZWFzZTIyLW1haW50CisyNzI5NCA1NTg2ZjIwODU4MTU4NmI1ZjkxYjhkOTMwN2MzNDQzZWVlYmI3MzQyIHJlbGVhc2UyMS1tYWludAorMjcyOTUgOTcwYWE5NzEyODEzMWFlNDk3N2U3OTkyNzA2MWQwNGQ4ZTI5MmFiYSBsZWdhY3ktdHJ1bmsKKzI3Mjk2IDdkZmU0OGM3YWE2NWUwYzZjZWNkMTVlOTgxYWZjMGFhODRiMDg2YTcgbGVnYWN5LXRydW5rCisyNzI5NyAyNmJhMTdiNzU4YjllZGQ5OWJiZGNjZTk0NTg2NTU1OTZmNWRhNDdmIGxlZ2FjeS10cnVuaworMjcyOTggOGViMmYzMWVlYTllYjNlYWUyYWEyYzY0Mzg2ZjI4OWMwNDFhMDViMyBsZWdhY3ktdHJ1bmsKKzI3Mjk5IGU1NThhNDBiNmI1MjMxMTYxMGQ4YjA5MWU0ZjM4YzA4YjJhYTMxYmEgbGVnYWN5LXRydW5rCisyNzMwMCBlYWI4ZWNhOWVjNTFkMmI5MmY3MjlkYTIzYTUwM2ZkMjk4ZGNhNGU4IGxlZ2FjeS10cnVuaworMjczMDEgNWEyMzAyZjc5NzI0OWU5YTE2NmMwNjkxMDg5YjlhZDQ1Yjk1YTk1NSBsZWdhY3ktdHJ1bmsKKzI3MzAyIDMwNDJkYWQxNDlhZTczZTczY2QyYzU0OTI1N2IxODlmMGVmZjQwYWIgcmVsZWFzZTIyLW1haW50CisyNzMwMyBiNWJkZTc3ZGEyMGUwN2NmOTE3ZGE4ZmZjYjI4MmI4MjE5MDg2MjE2IGxlZ2FjeS10cnVuaworMjczMDQgZDNiNWZhZmVjYjI5ZGY4ZmFlMWY2YzY2OTJiMWI3OWZiZGYxYzBkYyBsZWdhY3ktdHJ1bmsKKzI3MzA1IDM1MDBkYTY2NmMwYzNkNjk2ZTE3NzllOGQzMWFlYmI0MWVmYWNiY2EgbGVnYWN5LXRydW5rCisyNzMwNiBkNjJlNjg0NTQyYjliYmY1MzY2Y2ViZWQzZGFjMzExZWE3ZWM5YjBhIGxlZ2FjeS10cnVuaworMjczMDcgODRmMDkyYjEwNmVmYjkwZmRhNjAyOTExMTZkNjYxODAzMjVhN2QwMSBsZWdhY3ktdHJ1bmsKKzI3MzA4IDgzMzU0YzJjYTM5MDNkMTZiNDE1OWQ4ZDNlYjIwODUzZmJjOWM1YjEgbGVnYWN5LXRydW5rCisyNzMwOSBhNjBhM2Q5YzZmZDlhNmU4NjNhODM4ZTMyMDgxYmNlMDU3M2MyMmQ2IGxlZ2FjeS10cnVuaworMjczMTAgNmUyYTNjNTcwMGFjOWM3YTExZGJhNjc1YjQwNTZkZjM4NjY0OTRlZiBsZWdhY3ktdHJ1bmsKKzI3MzExIGRlNjI1NTE3YWRlODAyZDRkMzNmODRmOGNiZDdkNTgxMThiZDU1YmUgcmVsZWFzZTIyLW1haW50CisyNzMxMiBhZWE4ZmIzZTNmM2Q3ZGI4MzVkZTdhMzEzODg4ODhlOWVjMzdhMjdjIHJlbGVhc2UyMS1tYWludAorMjczMTMgODVlMTIwNGI2NjE3MWJjZjdhOTgyYTBjMGQ3MGRlMTFiYjRkYjEzMyBsZWdhY3ktdHJ1bmsKKzI3MzE0IDY1MmYxYjMxOGU1YTA4MWU3ZDVjZDE0NjI4MzllZGUzMzY0YzczMGIgcmVsZWFzZTIyLW1haW50CisyNzMxNSAzNzExOGI2ZTVmNDYxMjRjYTQ0NjBiNzJiMDI1MTdiNjBiZTU5NzM5IGxlZ2FjeS10cnVuaworMjczMTYgODNhYTk5ZGVkYTc0ZGUxNThiNWQ5OTI0MDU3MjkwODkxMjBlNjZiNyBsZWdhY3ktdHJ1bmsKKzI3MzE3IGVkNjJjMDRiMTlmNTIwZTM1OWI2ODE1YzBlM2JmZGIyMmY5N2RlOGEgcmVsZWFzZTIyLW1haW50CisyNzMxOCBmN2NlNjk2OTc5ZTE4YjAxMWE3ZTQwNzc5NWYxZDk4YWEyMzI0YzQzIGxlZ2FjeS10cnVuaworMjczMTkgZDRiZDY2MDE3MDFkMzVkYzk3OWZkN2E5OTU2ODVlOWY3Zjc0ODFjYiBsZWdhY3ktdHJ1bmsKKzI3MzIxIDM4MzRjYjBlN2JlNjVjNWNjYzg1MDMwOWQxNmViYTU2NDlkNjE3YmMgbGVnYWN5LXRydW5rCisyNzMyMiBjYjA4Y2E1N2UyYTk2NjI4ODcxODA3ZGRlYTI0ZjQ0YmEzYjUxMzkyIGxlZ2FjeS10cnVuaworMjczMjMgMTFhNmQ5YjVmOTkwNjU5NmExMWE4ZTNhMmFlOTI4MjgxOGVhZWMxNiBsZWdhY3ktdHJ1bmsKKzI3MzI0IGFhMjM4NzcwZDgwOGY1M2VlZTY2MWVmNThmZDMzNTNmOWZhN2I2M2IgbGVnYWN5LXRydW5rCisyNzMyNSAxYTJiNTM0NGQxY2NmM2U2MTQ4ZDA2MWU5OTY0ZWQwOGI3Mzg3MGJhIHJlbGVhc2UyMi1tYWludAorMjczMjYgMDNiYmE3MjgyODUyY2JkMmFjNGExYzhkODQ2M2RiYjQwNzNmYmNmYiBsZWdhY3ktdHJ1bmsKKzI3MzI3IDMxMzgxNjcyMDFhYWNkNzhjYzNlZTJmNTY5OTA1N2RiYjQxNTYyMGUgbGVnYWN5LXRydW5rCisyNzMyOCA0ZWVkNTFhZDQ5M2Q0ZWYzYTVmM2M5MWU0MzhmMGQyM2MxMDk5Mjg0IHJlbGVhc2UyMi1tYWludAorMjczMjkgMDk2YjQ3NWUxYmVmMDI1ODM3MzkwY2M1OWY4ZjhmNDRjMjJlODc1MyBsZWdhY3ktdHJ1bmsKKzI3MzMwIDdkOGM2Yjg4OWI1NGUzMDFkZGZhOGM2MDc0MmY0NDYzNDU0ODVkMjYgbGVnYWN5LXRydW5rCisyNzMzMSAxMTFjMWU1OWFkNzJlYTAyNjUxNTNiMDIyNDIxYmVhZGNkMjcyMDBhIGxlZ2FjeS10cnVuaworMjczMzIgZjU0MDVjNmVjNGFjZDM2OWQzZTI5MzY2ZmUxYTA5MzU5ODc3ZmU1NCBsZWdhY3ktdHJ1bmsKKzI3MzMzIGY3ZTE5MWM4ZGIyM2YzMjY2ZmEwNTkxYzExMzAwZWUzN2ExNGM1ODcgbGVnYWN5LXRydW5rCisyNzMzNCAxZmUwMDVjNDI4MzY4N2JjNWE1ZDYxZTE2M2MyNDU4NmVhOGM5YjI0IHJlbGVhc2UyMi1tYWludAorMjczMzUgMjViMGFmMjdkZGM4NTcyZDEwMDFjZTZkMDA1NWZjMDI1YzFlYWJkMSByZWxlYXNlMjEtbWFpbnQKKzI3MzM2IDFhODA5NmJiNGM0ODI4MGM0OGMyNDJmOGEwMzZiZDk1NTgxNTcwM2QgbGVnYWN5LXRydW5rCisyNzMzNyBlMmZhNzQxYzU0N2Y1MTUxMGRhZjZkNTdhYTQ4N2RjMDVjYTk1MmNjIHJlbGVhc2UyMi1tYWludAorMjczMzggZWRkN2MwMTQ2YWM4MjRmNWI0ZTRjOWNjNTVmMmFkYjkzZDNhZmJlOSBsZWdhY3ktdHJ1bmsKKzI3MzM5IGE3Mjk5N2Y3ZGI0YzcwMThmNWI5NTQ0ZDcwNzYxYzVmMzg4YWEwODkgbGVnYWN5LXRydW5rCisyNzM0MCA3ZWJkMmNkM2FlZjAxYjczOTZiODEzNjM4ZmZjOTA4OTdlNmZmMDY5IGxlZ2FjeS10cnVuaworMjczNDEgODE0OWQ5NzhiMDA2Zjc3MGE5MWE3OTk4Njk2YjYwNDFlZmZkMjQyZiBsZWdhY3ktdHJ1bmsKKzI3MzQyIGZlOWM3MTMyYTg2N2U4ZTdhMmE4NTQ0NjJkZDg5OWJiZTAzYTU4OWMgbGVnYWN5LXRydW5rCisyNzM0MyBjNjlkYzQzYjcwMGE5N2Y5NWY4NWZjNTA1YTEyYjQyNmNiZTgzOTQzIGxlZ2FjeS10cnVuaworMjczNDQgNDgxZTRhNGI4ZGUwNjljMTU3ZDBkNzM5Y2M2YWRlNGMwYWZmZTRhNSByZWxlYXNlMjItbWFpbnQKKzI3MzQ1IDM2MDBkOGQwNzM1ODMyOWQ3N2VlNDZlOWNmZmYxNDJkZmNkMWVjZjIgbGVnYWN5LXRydW5rCisyNzM0NiBhN2IxNjllZjgzZWFjYzFjZjgzMjIyYTgwYjkzMGNkNjE5MmUyZmZmIGxlZ2FjeS10cnVuaworMjczNDcgMjZhMGQwZGExMzEyYzNjMGNmYzY2ODBmMjJkYWVlOGZiOTRjMWFmMiByZWxlYXNlMjItbWFpbnQKKzI3MzQ4IDA4MjViZDdiNWI1NThlMDFlOWE0NDRhMGUzYjQ4ZDhjZDQwMTQ4MmIgbGVnYWN5LXRydW5rCisyNzM0OSAzNWM5ODk0ZjA2Yjk2MGNlMTA1YzM2MjlhYzdkMmU3Zjk0YTFhOWFhIGxlZ2FjeS10cnVuaworMjczNTAgMzI0NjNlOGU1ZTFhZTZjZDk4MzRjMTE2N2M1Nzc5MzdmNTc4NWZlMSByZWxlYXNlMjItbWFpbnQKKzI3MzUxIGExODFjY2NhMTMxMjgzMmRjMmIzYTAzMmVlY2ZmMmVjOWE1YjM0MWMgcmVsZWFzZTIyLW1haW50CisyNzM1MiBkN2E2MjA0MmU3ZWZhNTk1MGQwZjViMjU3NmVmOTA0YWZhOGJkYjA5IGxlZ2FjeS10cnVuaworMjczNTMgMjEyZWU2MzY1YmZmOTgzZDkxZDg1MTk4NDJlMzRjYzYyMDg2M2Q2NiByZWxlYXNlMjItbWFpbnQKKzI3MzU0IDdkOGExNTA0OTZhOGYwNmQwNmEzNzAyNTg4ZWQyOTYyZjhlYzMyODYgcmVsZWFzZTIyLW1haW50CisyNzM1NSBkN2Y4NTEyZGE0MjM2YzlmYzFkNTk3MzBmYTZjOTE3NjExZDYwZjI1IGxlZ2FjeS10cnVuaworMjczNTYgYTU2MjkyNzMyNTY2ZGQ0NzgyNGEwZWEyYTdiMmZiZGE5YjFjNWUwOCBsZWdhY3ktdHJ1bmsKKzI3MzU3IDg4NjMwNzZlMmRmOTMwNzc3ODYyNWM0ZDk5ZDkyNTZlYzJlZDE1OGIgbGVnYWN5LXRydW5rCisyNzM1OCAzM2VhNTIyZGQzZDIyZWE5OTEzY2UyN2ZjZGZmMDQ3MDViNTU3MDE5IGxlZ2FjeS10cnVuaworMjczNTkgYjc3MTg1N2VkNzg4OGRlMzNiOTY4YWJlYWEzODczOGJkOWFlNmVhZCByZWxlYXNlMjItbWFpbnQKKzI3MzYwIDRhYjlkZjI0MTZmOTM2ZGMyYWYzN2ZiMDQ3MWUzNDMwMTNjMjM5OTggbGVnYWN5LXRydW5rCisyNzM2MSA5NWRhOTkxODdjNTc1NDIwOTM3ZDdlNWYyMTE0YTUwNjlhZDQ2ZDM0IGxlZ2FjeS10cnVuaworMjczNjIgYWQ2ZmExYzA0ZTQ3NDc3MDhkZGFiMjIzZTVmMmFjZTdlYmUwMTg3OSBsZWdhY3ktdHJ1bmsKKzI3MzYzIDQ4YWQ0NzBjMWY4ZTE2YTQyYWQxOTM5NWEyODZiZmRkMWRjZTJkZWIgbGVnYWN5LXRydW5rCisyNzM2NCA0MTQ2OGY5MzUzY2U5YTg5MzMzM2MxNzIwMzI4NjE1NWYwNDY0YjRiIGxlZ2FjeS10cnVuaworMjczNjUgNzAzZTYzYWUwZjAxZmM0ZGYwMGNlYmMyNDhkODI2NDJiYjQzOTMwMSBsZWdhY3ktdHJ1bmsKKzI3MzY2IDFmNjUxMDA1MWM4YWU4NjJkOTJhNGU0YTI3ZmUyODIzZDdiZDUzMzEgbGVnYWN5LXRydW5rCisyNzM2NyBkYWI4NzAxYmQzZmEyNGI0MTVlOGMzY2ZjZjFhNTAzYThlY2VjYWY3IGxlZ2FjeS10cnVuaworMjczNjggNGU2M2U5NzcxZjMwYzUwOTg0OTYxNmQ4ZWU3OWRmYjJmN2E1MTY1NiBsZWdhY3ktdHJ1bmsKKzI3MzY5IGI4ODc1ZjE2YTRiZTU0NWYyYjc5MDQ0ZmY0ODE3MjA3YjUwZWUxMjkgcmVsZWFzZTIyLW1haW50CisyNzM3MCA0NWI5ZTEyMmMzM2E3YTFlZGYxODIyYTM3ZGIzZWQ2ZWRmZTI4ZjQ3IGxlZ2FjeS10cnVuaworMjczNzEgYjcxZTBmOTZkZTIzMzU3YWYzMjA4MzNmMmFiYWUwN2ExMGZiODBlMCBsZWdhY3ktdHJ1bmsKKzI3MzcyIGVhMTg3NzhkZjZjMzcwMDhjMjE5YWQ2OTJiYjNlNTJjODZhN2NhY2MgbGVnYWN5LXRydW5rCisyNzM3MyAxNGUyZWI5ZTVlZjJiZWE2MGFiZDhiMTQ5YTVmYzMxYzk0ZDRjNDZmIGxlZ2FjeS10cnVuaworMjczNzQgMTlhNjA5NTE3YWI4YTZiZjUyYjNjOWU0M2Y5MzU4YzgwNzRiMmZhYSBsZWdhY3ktdHJ1bmsKKzI3Mzc1IDE0ZDhlZTFlOGRlNWNjZDE0YzUxMDgwMjQ3NGYwZmE2NGJiNmMxOGEgbGVnYWN5LXRydW5rCisyNzM3NiAwMGU1NzhmNzhjYWFhMmE4NzYzZWQwYzUyN2U1ODNmMzJkZjQ4MDg1IGxlZ2FjeS10cnVuaworMjczNzcgNDRmN2ZjMzA3NjczNjgzODQwNDhlMjA3NTU5ZDk4ZTRlYzUzZTdkMCBsZWdhY3ktdHJ1bmsKKzI3Mzc4IGM4ODI5MDQ2MDc5MTljYTMxZGE3NGRhYjFjNzM5NTkwOWRlNzNhNzQgbGVnYWN5LXRydW5rCisyNzM3OSBkYzg3MmEyZjUxM2I0NDIxYWMwZTk0Y2YxMzlkZTQ5MzE4Y2Y5MTAzIGxlZ2FjeS10cnVuaworMjczODAgOWQ4OWE5YTA1NGUwNDA5ZWYxMzdlNWVmMjU4NmE1NmI0N2U2OTViYiBsZWdhY3ktdHJ1bmsKKzI3MzgxIGU4YTI2M2RiMWJlMDMzYWI1OWNiZjRmZjMzODk5MWMxNjk4ZDNiNzYgbGVnYWN5LXRydW5rCisyNzM4MiA3MWYxM2NmNGY5ZTJkOTMyYjVkOTg5MDRmNDY3YjZiODE0MDY1M2Y0IGxlZ2FjeS10cnVuaworMjczODMgMmU1YTFlOGMwYjQ4MWQ2NGEzOGZmZGU1ZGVmNWI3YzA1OTBlYzRhOSBsZWdhY3ktdHJ1bmsKKzI3Mzg0IGVkZjk1MGJmNDIzMjU4YzZmYTYyNjQzOWNlNGY0ODcxMzRmNGRiM2MgbGVnYWN5LXRydW5rCisyNzM4NSA1ODQzM2I2NmY1ODM4OTgwNmQ3MTc3ODU5ZjkwYjVlYTk4M2RiNTQ2IGxlZ2FjeS10cnVuaworMjczODYgN2Y4M2IyMTI0YjRlZDM5MzZlY2U5OTViM2I4NmY3Zjc2ZWRlYTUxZSBsZWdhY3ktdHJ1bmsKKzI3Mzg3IGQ4ZGU5YjVmNTYxZWVlOGVmMjQ0NjU2MTQ2NWE0YTQ3MjNkYTRhMmUgcmVsZWFzZTIyLW1haW50CisyNzM4OCAzODQ4YWEzZWRhZmM2Yzc3MzQ3OTliNzcwODY4YjViYzJjNzBjMjAyIGxlZ2FjeS10cnVuaworMjczODggNzRkNWNkNjk4YmJmNzFjZDliNGI5NjQxOWQ5MGMwOTA4ODM1YzRhZCByZWxlYXNlMjItbWFpbnQKKzI3Mzg5IGZjZjJlMDFjNjE2YTYwNGVhZjBmNTM1YTVlODhmZTI3NDMwYjhjZmQgbGVnYWN5LXRydW5rCisyNzM5MCA5MTM1NzBhYjA3Mzc0MzM3NzkzNjJlODE2MjM4ZDNhNzRiYTc0ZTUzIGxlZ2FjeS10cnVuaworMjczOTEgOWE5ZDZjZTVlZDRlMjI1ZmM1Y2YzZjc2ZmEwZjM5NzFkM2I1ZWE2YyBsZWdhY3ktdHJ1bmsKKzI3MzkyIGJiZmVmOTQ4YzQzZTgwMDQxYzUxZmZmODhjM2FiNzJkZGMxOGUyYjUgcmVsZWFzZTIyLW1haW50CisyNzM5MyA3NDM2ODk4N2Y3ZjBhMDNkZTE5NDVlOGY3Y2RiZmIxYjA1YmM3ZTQ2IGxlZ2FjeS10cnVuaworMjczOTQgYmJjZWU3NDc4ZmNiODQwNDg5NzVkZDQ0YTFhNzk4ZjFhNzQ0ZTNiMiBsZWdhY3ktdHJ1bmsKKzI3Mzk1IDM0YjhjZGJiZDhmZTMzOTRlNTRlYjU4N2M4ZmFhZWJjYjhlZTY0YzAgbGVnYWN5LXRydW5rCisyNzM5NiA5YjZkMjU5YzI1ZWI3ZWE2MDFlZTRmY2I5MWE2ZGQ1Y2NiMWQwYjUyIGxlZ2FjeS10cnVuaworMjczOTcgNWI1MDhjZTA0OWY1ZDA4NWIzNjE5ZGU2NWNiYTc4M2ExYmQwMTVlMiBsZWdhY3ktdHJ1bmsKKzI3Mzk4IGM0ZDY4ZjgyYTZkZGI4MTY4Yjg5MGUzM2M3MzBiODA1ZDUwN2M2ZWIgbGVnYWN5LXRydW5rCisyNzM5OSBkMTBmMWM2ZDllZTk0MzA2ODI5NWUwMWE1ZjUwMGEyMDU5MWExODY1IGxlZ2FjeS10cnVuaworMjc0MDAgYzEwYzA5MTkyYzEyYmNhMWUxYzkwODUzMWViZjY0ODk0NDRhNjk0ZSBsZWdhY3ktdHJ1bmsKKzI3NDAxIDA3ZTc0OTkzNTczYzViNWVkNWNhNjVjYWUyYWRjZDE2ZTkzZWRmZjYgbGVnYWN5LXRydW5rCisyNzQwMiAyNzVkMDRhMzU1NDIyNjRiZDIyYjNjZDg1YWNkNjhkMjBjZmIwMDg4IGxlZ2FjeS10cnVuaworMjc0MDMgNzdhOTZhYzRkZGU0YzA4MDVhYTYxNmZhOWJkNzEzMzEwMjc2ODcwZSBsZWdhY3ktdHJ1bmsKKzI3NDA0IGVhZTQ5NmVmYTQ2MDEzMjc0NmM1MTNlMWQ4YWMyNjUxOTZmMWJkYmIgbGVnYWN5LXRydW5rCisyNzQwNSAyYzIyNDVhYWNlZjg4ZmM4NWU5NWQwYTQ5OGUxOTE4MjZmNjQxMDZjIGxlZ2FjeS10cnVuaworMjc0MDYgOTM3NzE1ODY1MmRkMGQ0Yjg2YTFlYzJiMmZjMGI1MWFkNTBmOGY0ZiBsZWdhY3ktdHJ1bmsKKzI3NDA3IGEzZDYxMjhhZmIyZTU1MzFjOTJkMDE1MDc2M2Y2ZGQ3YzMyOTg3NTkgbGVnYWN5LXRydW5rCisyNzQwOCBhNzhkNDFlZTk0NzRmNzYxNzRhMWNjMmMxNDVlMjUwMjk2ZGIzMzJlIGxlZ2FjeS10cnVuaworMjc0MDkgYWYwNTMyZjIzYWIzZmZmZjllNzAwNDE3NmFkNTM5ZWIwYjdhZTQ1YyBsZWdhY3ktdHJ1bmsKKzI3NDEwIDYzZmJiZWQxMDcxNGFhNTQ2ODBkYjhmNjU2NWJmMDVkNDM0ZjdlMzYgbGVnYWN5LXRydW5rCisyNzQxMSBmZWYzOTdiMWI4NWMzZDg5ZjdhZDRjY2UyZDYxNjBiNWFjZTlhZTliIGxlZ2FjeS10cnVuaworMjc0MTIgOTBjY2E4NTdkMjAzMjJhMWIyN2U3ZmE5ZTY4YTJiNGQ2MTJiOTE2NyBsZWdhY3ktdHJ1bmsKKzI3NDEzIDQwNDYyODJjYjMzOGNmN2U1MzZhYTEyNDZiZmNmMjUzNjhmMGQ5MzkgbGVnYWN5LXRydW5rCisyNzQxNCA4ZWE4NjU2NGZiMzI2NDM5ZmVlZjZjMGE3OWJhOTNlZjZkNDQ1NzQ3IGxlZ2FjeS10cnVuaworMjc0MTUgYmM2YWFlNzRkZGZlNWM0MGIzZTc1MzY2MWU5MzRmMTRlNjdlYmRhOCBsZWdhY3ktdHJ1bmsKKzI3NDE2IDJjNzliMWE4ZDYxNjUzOTE1MWY2ZmY5ZWE4MjMyZjk1YmJjOTcwMGMgbGVnYWN5LXRydW5rCisyNzQxNyBkOTNmMzQyMDE1MDM4YTc5OGY2Nzk1OGQzZGFiMDc3NWUyZWE4YzkyIGxlZ2FjeS10cnVuaworMjc0MTggNzE4NDBhMWJkODJmYzdjNDY0N2I0M2IxMWI0MjY4MTlhM2UyZGMzZSBsZWdhY3ktdHJ1bmsKKzI3NDE5IGE5MjIxMTJkNzgwYzU4OTdmZjQ0NTcwYzgzNGEwNGY5OGM4NzYyYTcgbGVnYWN5LXRydW5rCisyNzQyMCBjYjE2OTk1YWE3ZTgwOWVlMjRlNzNmYWRmNmRkZTQ0NzMzY2JkMjYxIGxlZ2FjeS10cnVuaworMjc0MjEgOTkxM2NmN2M0MDg2MWZmNDk0NGM5OGNmZWZjYTJjMjQ4YzhkOGY4ZiBsZWdhY3ktdHJ1bmsKKzI3NDIyIDY3ZjJiNDBiYWI3MDcwYTJkYTA1NWMwMWViM2NmZTVlNmViYWNlY2MgbGVnYWN5LXRydW5rCisyNzQyMyBlOWE2YTBjNGIzM2YzYzhkZmRkZTE3ZmYxNGU5YTJhMGRmMDgwYTZmIGxlZ2FjeS10cnVuaworMjc0MjQgZGNjMmI3NWQ3YTc4YzBmNGQwNDFiOWQzMjM2ZDYwYmNlYWE2ODM1MSBsZWdhY3ktdHJ1bmsKKzI3NDI1IDE4NzE3MzM1MjQzNTQ5NjVjZmU5YjJkZTdjZDY5ZjM2MWQ1MDU4YjYgcmVsZWFzZTIyLW1haW50CisyNzQyNiAzN2ZmY2UyZDljM2NlMDUzNmYwZjU5Yjk0YmE2OTEyYmZhNmYzYWZiIGxlZ2FjeS10cnVuaworMjc0MjcgZDI0YzhjOTQ2NzQxYmZiNzk3MzMxYzkxNjc3YWEwZmUxMjFhMzkzNyBsZWdhY3ktdHJ1bmsKKzI3NDI4IGRkOWQyZWM5NmVhZDBjZTcyNGEzNThmZjY2NmJlODg2MWZlMDc1MTMgcmVsZWFzZTIyLW1haW50CisyNzQyOSBiOWUwYzU3NTMyMzgwODRiNjVjYjgxZWVjMjYxMzVjZWZhZDhlZTAwIGxlZ2FjeS10cnVuaworMjc0MzAgM2U4NjNhNjViMWE0NDJjZGM0NmIzNjE0NmIwMTRlOTliMzNiODZlNCByZWxlYXNlMjItbWFpbnQKKzI3NDMxIGU4Nzg5NzUxYTVjY2MzNjY1MTQ4YmYxYjk5M2UwNzI5MTE3MTMzZmMgbGVnYWN5LXRydW5rCisyNzQzMiA5MjgzNGEyNDhjMTVjYmY3ZWYzZmMxNGQ4NDE4YjhhODAzMmFlNDhlIGxlZ2FjeS10cnVuaworMjc0MzMgNjBlNDFhNTRlN2IxMDliMjBiZjAxMzAzOTVlMDlhYTkzMTMyNzI3YyBsZWdhY3ktdHJ1bmsKKzI3NDM0IDJjNmY5MzFkOGRkMjUxNDFiYmE2MGU3YjQzNjc5ZmNjMzhiN2M5ZmEgbGVnYWN5LXRydW5rCisyNzQzNSBjNzk0MzJmZWI4NjIxNTRhYTg2ZmY3ODI4MGY0NzRiZWQ2MWYxOWNjIGxlZ2FjeS10cnVuaworMjc0MzYgNWFmOTA4MWE2Y2Q0MDllNGFlYjEwOGEzMTFmMmJhYmM2ZDMwMDM4NSBsZWdhY3ktdHJ1bmsKKzI3NDM3IDBkOTcxNmMzYjhlY2YzNWM5OTI0ZmZlMzA0ODRhMzY2ZjJjNmUwYWYgbGVnYWN5LXRydW5rCisyNzQzOCBiMTI4MjU1YzJiZWE3MDc3ZGIzMjg5ZWRhMjhlNDQ0OTNhODQ1MDY4IGxlZ2FjeS10cnVuaworMjc0MzkgODE0MmY4ZDY2OGEwZjRhYjdhYWZlZTkwYmVjOWJiYjMxNzI3Y2UwNyBsZWdhY3ktdHJ1bmsKKzI3NDQwIDg2YjM3NjBkMjg1ZDYwZjZkYzkyMjZkYTdjOGRiZTI3ZjVlZjAzYzYgbGVnYWN5LXRydW5rCisyNzQ0MSAxMzE0NjQyY2EwOTc2YmJmMGViYzU2M2JiY2E4NDZjZjUyYTg5YTg1IHJlbGVhc2UyMi1tYWludAorMjc0NDIgYTE4MDVhNTQ2NjZmYmJmZDkxYTBjNmYzMjhiNThlMjEzMmRmMDc3MiBsZWdhY3ktdHJ1bmsKKzI3NDQzIDMyZGIwNzVkZWYzZjU2NGI1YjZiMWQwMTI3YWQ0YzVkNTAyMWY4M2EgbGVnYWN5LXRydW5rCisyNzQ0NCA5NWNjZDViYmRjODZkNGYyNWNkOGY5ZTlkNDk2YjM4NzRmMDU0OTY3IGxlZ2FjeS10cnVuaworMjc0NDUgYTUxNjJmZDY1YzNkNWJiMGQ5ODYyYjgzMzk1OWY0YWE5YjY2MjQxMyBsZWdhY3ktdHJ1bmsKKzI3NDQ2IDcwMmE1OTAwZGY3ZDY1ZjlkNDA2OGIyNTEwMDg5ODc1YzY4YzY5NjMgbGVnYWN5LXRydW5rCisyNzQ0NyAxODNlYmEyZDIyMTQwYzFlMWViYTVjNjNjMWUyZGZkYjZlNTk3YTQ0IGxlZ2FjeS10cnVuaworMjc0NDggMTU0NDdhNTU3M2JkMTE0ODkyNzNlNTE0MWUzMDBkZTIzMDAyMTQxYyBsZWdhY3ktdHJ1bmsKKzI3NDQ5IDgwMDkxMmY3ZGYyZTM5MmEwNDhkMTZmYmJkOWRjYTMyMjU0Yzg3YmYgbGVnYWN5LXRydW5rCisyNzQ1MCBlNjZjZWQ0ODFjNzdhNGJjYjI1NTQ5ZDllMzA5YWFlODVlYzJiMDBiIGxlZ2FjeS10cnVuaworMjc0NTEgZDcxMjZjMzQxMjhhOWQ5YmQxMzM2NmYwOTE2MGZiODRmMTllZjU3ZSByZWxlYXNlMjItbWFpbnQKKzI3NDUyIDZmZWQxMzQyMmJiMWFhZmQxMjM5NjE5Y2ZjMzVlMWY3M2IxZWYxYjUgbGVnYWN5LXRydW5rCisyNzQ1MyAyMmQyZjAzN2FmOWQzYzRjZWI0M2M2ZWM1MzRmZDUwYmIyZmM1MmZkIGxlZ2FjeS10cnVuaworMjc0NTQgODZkZmI5NmExODMxZmQyN2VhYTNhMGMzMzQ1ZDJmMGNmMTUyOWNjMCBsZWdhY3ktdHJ1bmsKKzI3NDU1IDM1NWU0NmNjMTI0ZmYxMTE2ZTQ1Y2YwMzNlMmYxNGJjZWE4MDk0OTMgcmVsZWFzZTIxLW1haW50CisyNzQ1NiBiNzRkNGE1OTc5M2FhZDQ0N2I1MTVjMjFjOWQ3MDk2ZWI3MGRiMjUzIGxlZ2FjeS10cnVuaworMjc0NTcgYjE4NWM4NTk1MmZlODM4ZDcwOWEzNjA1Y2I3ZDZiZjJhZjNiOGMwYiBsZWdhY3ktdHJ1bmsKKzI3NDU4IGJjMDBlZWVmMGFjN2JhY2MwNDMwMTUzNmEwMmVjYmM3NjcxODYwZWUgbGVnYWN5LXRydW5rCisyNzQ1OSA0Mjk4ZTI2OWJkNjcyMDEwNDM4Y2EzY2Y4OTU1YzIyN2E5ZDY4MWJhIGxlZ2FjeS10cnVuaworMjc0NjAgNDAyNjU2NWZhN2ViZGZmMTkwYjJjNTI5MTgxZTU1ZTg4OTgwM2YwNCByZWxlYXNlMjItbWFpbnQKKzI3NDYxIGEyYjY3N2FmN2IyODlkNjVhMGMxMTUwOTEyODg0Yjc2NDczNmRjZWYgcmVsZWFzZTIxLW1haW50CisyNzQ2MiA2ODk5NWU4NTRhODhlM2Q1ZDdmN2JkYTc3NzY0M2UxNzA2MGRmOGIzIGxlZ2FjeS10cnVuaworMjc0NjMgZGJiMTRmODVhZTdiNjBkZDMyOGZmMWE2ZTNhNGRhODliMzc3N2M5MiBsZWdhY3ktdHJ1bmsKKzI3NDY0IDJhMjA1NzQ0MDBhZmI2MDg4MGE0NWE5OGM4NjJhOGM0NmEzZjUwN2MgbGVnYWN5LXRydW5rCisyNzQ2NSBmN2FiYmQxNWI0ZjQ4MTliMTdkMGM4NGIyMjAwNzc5YWM5MDU3YjAwIGxlZ2FjeS10cnVuaworMjc0NjYgY2ZjZmI1ZGY2ZTYxY2M0YjUwZmUzYzUyYjA3NTg0OWQ4NjY0YmI4ZSBsZWdhY3ktdHJ1bmsKKzI3NDY3IDUxNDgxYjM5Y2Q4NjVjMWU3ZWU0YjMyMWVhODAyOGZiNjk1NDNhZWEgbGVnYWN5LXRydW5rCisyNzQ2OCAwYTE4ZWY1Y2IzZTdlZDc3MTk4YzczMGYyZTlmNDBjMjYzNjJjZjA4IHJlbGVhc2UyMi1tYWludAorMjc0NjkgZjhkNDFlMjY0OWI3ZTVkZTc3YjY2OTEyNzE3ZWI2ODg4MmRlZGQ3NSBsZWdhY3ktdHJ1bmsKKzI3NDcwIDI4ZjJiYWUxMDMxYmYzZjA4NTU2YTM5ZTI4ZjcxMDkyMWU5ZjhmYmMgcmVsZWFzZTIyLW1haW50CisyNzQ3MSA0NmE4NGQyZmY0ZTJhYzdhMDI4ZGM0YzMxZGYxYTQzODIyYWZmYzEwIGxlZ2FjeS10cnVuaworMjc0NzIgNjY3NjYyM2IzYjc0MjE5MTZlNzk1NDlmZTc0YmQ0MzNhMGE4NzBjMSBsZWdhY3ktdHJ1bmsKKzI3NDczIDhjZWVlNjYzMDMyMmM1NzU0NTQzNmMzNzZiMDYxMGY0YTg1ZmMzNmUgbGVnYWN5LXRydW5rCisyNzQ3NCBmN2MwZDY4NzFiMDdmMDMxMWZkNjk2OTY0MGE5MzIwMGE4MTVkZTE3IGxlZ2FjeS10cnVuaworMjc0NzUgNzMzNmY1MWZhYTQ2Y2I3ZTFiNTIyMDM0M2E5NTVlNDI4MDk3ZGY1MiBsZWdhY3ktdHJ1bmsKKzI3NDc2IDZjZDkzMmZmMGYwOWQ4Y2ZlNzNkNmRkMGYxNWI3MzhmOTk4MTI4ODQgbGVnYWN5LXRydW5rCisyNzQ3NyA4MDE2MmRiZDQ3ZjAxMzJmYTU5YzhmZGYyMGM2Y2FiM2RlYjZlODQ5IGxlZ2FjeS10cnVuaworMjc0NzggODA1YzIyOGNmNzdiNmZmZjkyMGI5ODdhNGU2NDUzMjI4NzZiNDdjNCBsZWdhY3ktdHJ1bmsKKzI3NDc5IDM0ZDcxMzcwOThhNzUxOTQ3ODU4MWU0YzFiMDU4ZDJjZTEyOTYxZjMgbGVnYWN5LXRydW5rCisyNzQ4MCBjYmRiYjkyZWZkMzY5Zjg0OTdlYThhODIzNDEyZmQ5YjYxNWU4N2IwIGxlZ2FjeS10cnVuaworMjc0ODEgZjM1ZTI5YWEwZDkyNGM0MjQ1YmU0MWIxNWNhZDIyMzlkMzI4NzY3ZiBsZWdhY3ktdHJ1bmsKKzI3NDgyIGZmNjg3M2QyOGExNDY4M2U1YzBmYjg0NjdjOTY2OTBjZjg3YjE4MWUgbGVnYWN5LXRydW5rCisyNzQ4MyBmYTZiZTllZTZjOWM0ZWI3ZmRiMzk1ZWM0MjIxYzIyZDY4ZDZmZmExIGxlZ2FjeS10cnVuaworMjc0ODQgMTMyNDBiOGY4Y2EwMTQxYTJlYWZkODkwMjYyZjc3NTc3YjhlYmY5NyBsZWdhY3ktdHJ1bmsKKzI3NDg1IDFlMGFjYjQ1Y2E4ZjBmY2UxYzVmNjVhZDIxZWE1YmQyMGZkMGMzZWYgbGVnYWN5LXRydW5rCisyNzQ4NiBmMzZmYTEwZWJmYTBjMjYwNTdlY2UzZjdlNzEyOThhY2UwMmZiNTM2IGxlZ2FjeS10cnVuaworMjc0ODcgZjMzYmI5YzEzMWY4Y2NlNTY0NDg0OWRlMTVkMGQwMTZiYjdhY2UwZiBsZWdhY3ktdHJ1bmsKKzI3NDg4IGI1MWE1NzhmNTc2OWI1ZjE5OTk5OThhY2Y1MDFiNjFkMmM5NzVmMjEgbGVnYWN5LXRydW5rCisyNzQ4OSBiZjM0MjFhMjg3NDQ2Y2QyMTY4Mjk4MmYzYmYyN2IwYzYwNjVlZTY1IGxlZ2FjeS10cnVuaworMjc0OTAgZDMzMjQ4NGUzOTRhODBiNDZmMGZmMGY2NGI1MGI3YzY0YTA2MTE1MSBsZWdhY3ktdHJ1bmsKKzI3NDkxIGFhNjIxN2JmOTc3NjQzYWM0NzhkZDEwOGNlMWE4MzBlNDQzMTUyZjYgbGVnYWN5LXRydW5rCisyNzQ5MiA1ZGE2MDVkMmI1NDc3YTQxMTk3NGZlZTI2ZDg0MGRkYmRhYWFiZmFjIGxlZ2FjeS10cnVuaworMjc0OTMgZjM4MTEyYjg4Mzg4ZTc4ZmIzOGI2OGQ5NGRiZDk0ZWQ5ZDhmM2FiZiBsZWdhY3ktdHJ1bmsKKzI3NDk0IDdkY2VmMmY4NzA2ODIyNmRjN2RiYTliMmNiZGFhMGMyODk0MTkxYTYgYXN0LWJyYW5jaAorMjc0OTUgZTMzMzkzY2U0YzUxM2FkN2MyZWMwNzQ1YWZiYTE0MjhmYWU0YzE5MSBhc3QtYnJhbmNoCisyNzQ5NiAzMGM3Y2M1ZjI1ODczZWY4NzNiYWZmMGEwOWM1NjI3OTRhYTUxMWEyIGFzdC1icmFuY2gKKzI3NDk3IDMzZjIxZWFiYzE1NTA2ZGQ1YmQ5MWI2MDE1N2FiNzY1MDVmNDY3MDcgYXN0LWJyYW5jaAorMjc0OTggYzk2ZTU4NDM4YTlmMTY1MzM4ZjcyZDRmMmRkNmRlYjY2MDBhZjBkNyBhc3QtYnJhbmNoCisyNzQ5OSBmNzRmM2MzMTkwOTkzZGEyNDk2ZjY0Y2EyMTRjZDg5YTNjMGVjNGIwIGFzdC1icmFuY2gKKzI3NTAwIGM0MjYzNjMwNmU5NmI2ZDA4N2QwNjk4Y2Y1ZTkyMzliOTJkOTNkN2MgYXN0LWJyYW5jaAorMjc1MDEgMmE2ZWM5OTIyMjhiYTdhMzVmMDRmMjE0ZmRmMjVmZTBlZmQzNjI4ZSBhc3QtYnJhbmNoCisyNzUwMiA4NDRmMTI5ZmExMjg1Mjg1NTc3Y2U0NTU5MDM5MTFkOGQwNDZiNWMwIGFzdC1icmFuY2gKKzI3NTAzIGZkZjgwZTA0ZTRiYmQxMmExYzE2YjMzZGIwNzczOTMyNTFhZjk4OWUgbGVnYWN5LXRydW5rCisyNzUwNCAzMTEzNzU0NjRmYWMzMzJhY2MzMjI0N2M4ZjAxODQ3NDQ2ODZiMDIxIGFzdC1icmFuY2gKKzI3NTA1IDllNjNiMGY0MDlkNGIzNjA2N2I3YzM2MTc1NmUzMWZkNmZhNDEyZWYgbGVnYWN5LXRydW5rCisyNzUwNiA3NmU5YTE0ZmI3YzVhMGFmM2I5Njc5ZmU4OGY0ZWIyMzc3MGRkY2Q1IGxlZ2FjeS10cnVuaworMjc1MDcgMzk5YjA5YTI3YWYzMTRiNDcwYjMxNjM3OTVmMjliYjNlOWZlNjczYiBsZWdhY3ktdHJ1bmsKKzI3NTA4IDcwN2M2ZjAyNjE0MmE0MGQ2YjVkODZkMTZkMmZkOTRhMDk5ZTlhYzcgbGVnYWN5LXRydW5rCisyNzUwOSBlNWVjZWY1YTEyM2FkODkwZjM1MTIxNmFjNzJmYWM3ZjU0MjgxMWEzIGxlZ2FjeS10cnVuaworMjc1MTAgMTJmMmJlODVkYTI1OWE1MjYzMDE5Yjk0ZjNlYTRmMTdmNWNjNDJlZCBsZWdhY3ktdHJ1bmsKKzI3NTExIDhkZmFjYjA2YzNkMWE0ZjEwMmFiMWM2ODIyMGJmNWYxMDY5ZTk5ZmIgbGVnYWN5LXRydW5rCisyNzUxMiA4NjVhNzdjZTQwYTlmODYzZDc0NDMyYjZhMDE5OTEzZDNlYzVmMTNlIGxlZ2FjeS10cnVuaworMjc1MTMgN2MxYTc2Yjc4NzEyMjJjMmExOWJkMmFlODg0MWIwOGZmNDJlZWQ3YSBsZWdhY3ktdHJ1bmsKKzI3NTE0IGE0ODNjNWRkYjdmMWI1ZTcxMTBmYmQ5YjBlZjE5NDc2MjQxZTNmNWMgcmVsZWFzZTIyLW1haW50CisyNzUxNSAxNzZhZDcwNmFmYmM1NmJiNzM3ZDM3MzJlMWVmMjRhYWFhNDI2NmQ1IGxlZ2FjeS10cnVuaworMjc1MTYgYzM2YmU3OWZkYmVhMTcxNjAzYzQ1MTlhNzkxZjk2YTYwY2RlZTBmMyByZWxlYXNlMjItbWFpbnQKKzI3NTE3IGFiZWRjNWNlY2M2NDlkNzNjOTRmZDEwMThiMDkwMzQ2ODZjMGVjNDUgcmVsZWFzZTIyLW1haW50CisyNzUxOCAzOWMwYmYyMDFkYjljNDMxZWE5ZDg0MjNiYTc3NjY4MDllYTE4YjI0IGxlZ2FjeS10cnVuaworMjc1MTkgNDBiZGEzZTA5MGY2N2JhNjg0YjNmNmY3NmQ0MzY1MGEyMzJjMTA3NyBsZWdhY3ktdHJ1bmsKKzI3NTIwIDIxYmQ4NmUwMGJjZWMxYjMzNDYzNTgwNTNiMTQ5MmFiMWI5MGRlNTAgcmVsZWFzZTIyLW1haW50CisyNzUyMSBlOWU2MTExYmVlYzE3MTllOGZkZDU5NGQ0ZTEyMzEzMTg0OTliNGFjIGxlZ2FjeS10cnVuaworMjc1MjIgZDdkODE2ZTFmNTIyNjRhYTg0OTgyYjExZjNhMTgzMDQwZTUwOTE5YSBsZWdhY3ktdHJ1bmsKKzI3NTIzIDcxODkwOTEyMTczNzFiZjRiZDc4ODIyMmM5ZWRiYTM0NTZlNzg2YjMgcmVsZWFzZTIyLW1haW50CisyNzUyNCA2OWZkODI2NThiZmIzMjc0ODE5NTY3MzY0YWU2YzAxZWZjMTE0OGJmIGxlZ2FjeS10cnVuaworMjc1MjUgYmUwMmQ1MTRiOWE2Njk2YzIwYzdiZmIzZTE3YzllMTVhODY0OTFkMiBsZWdhY3ktdHJ1bmsKKzI3NTI2IDQ4MTA4MGY3MTQzOWFiMzJiZWNiOTA2YmEwYjhjZjBkMGU5ZWZkMTIgbGVnYWN5LXRydW5rCisyNzUyNyA3YmNkODE3NzYyOGYzNWFhNmEzOTY4YTgzZDAxODZjNjk5MjMxOTFiIGxlZ2FjeS10cnVuaworMjc1MjggZWEwMzg0Mzc1NGMwMDI0ZTc0M2VkOTI1Mjg0MDY2NzdlMjczYmY4NyBsZWdhY3ktdHJ1bmsKKzI3NTI5IDU2MmQ3ZjhhODJhMTliYjMyZTFkYTgzZjE0NDMyNTUwYzRjYmEyZDAgbGVnYWN5LXRydW5rCisyNzUzMCBiYjdjMzk2ZGUzYWJhNzgwYTEwYTIzOTY4ZGI1NzYzNmQzNGFiMDg1IGxlZ2FjeS10cnVuaworMjc1MzEgYTU5ZGYyZmE0ZWM4YWZmNDY2ODM5MDM4YTY1NzI5OGU3ZDMyMGM1YyBsZWdhY3ktdHJ1bmsKKzI3NTMyIDIwOGZiMWQ2MTE0ODRlNzExYzA0ZmYyNWM3ZGZhMDAwYWY0MTA5ODcgbGVnYWN5LXRydW5rCisyNzUzMyA5NDU2YTJjY2RhNjEwYTFkYTRkY2VmZGE0NzI5NzYyZjdhZjVmZGFkIGxlZ2FjeS10cnVuaworMjc1MzQgNDRjMTk2OTlmYTdlZjlkZDNmMzI5MmM5ZDY4ZDA5MjQwNzI0NTk5MiBsZWdhY3ktdHJ1bmsKKzI3NTM1IDlkZGVkNmYxODgxOTFkMDg3NDQ0MzJkNGQ4NDM0OGIyYzdiNGNmZGIgbGVnYWN5LXRydW5rCisyNzUzNiAyMzNhNTBlMTBlNjZiYTRjZjAzNWRmZGY3OTYyZTgzMjBiYTFjYjQ1IHJlbGVhc2UyMi1tYWludAorMjc1MzcgY2I3MjgxNDFhZTEyYTI1M2NkNmU1YjQxM2M1MTBmMWRjNTBjNGRhYiBsZWdhY3ktdHJ1bmsKKzI3NTM4IDYzN2RmY2Q5NjNiOTgzMmE0Yjg1MWRkNzgwNTBkNjYyMzU0NzdhMTEgYXN0LWJyYW5jaAorMjc1MzkgZDRkNWMzNDBlMDU0MzgyYjA3OGVkMjhiZTcwMDNmMzcyYmI4NDM3MiBhc3QtYnJhbmNoCisyNzU0MCAyMmIyMTJkZDg2YzFkYTNjNWRiZDY2OGZkYmFmMTU5MGFhMTE5MjVjIGFzdC1icmFuY2gKKzI3NTQxIGZkMTczOTRmNmRjZWUxYjhmMjc4MGUwNDQwYTU2NDVjNjBhMDY4ZjQgbGVnYWN5LXRydW5rCisyNzU0MiBlNjg1ZjMyZDgwNjg4ZDE4YTlhZDNjMzBlYTkzNjhiYTQwMjU4NTQzIGxlZ2FjeS10cnVuaworMjc1NDQgOGVlMmFiNGYyYTJkNDk4ZTJhMjA3YmU0ODYyMTkzNWRhZDQ1ZWVhMCBsZWdhY3ktdHJ1bmsKKzI3NTQ1IGEzODdkNGU1MzljMmQ4MmU3ZGJhZTNiYTc5NWJkNDAyZGRiOWZlNzQgbGVnYWN5LXRydW5rCisyNzU0NiA3OGFiMDg2YTM1NDg0NmZjYTg4NTQ3ZDg2YmU5ZDY1NzY2NGE3Mjg5IGxlZ2FjeS10cnVuaworMjc1NDcgMDk1NDI2YWY0YTQyNDA2NjQ2OTIyMzUyNzJmM2ZhMGQ4MGE5YTgyNiBsZWdhY3ktdHJ1bmsKKzI3NTQ4IDgwZGE5NTFjODlmYmUxNDFlMTc0MjAxOTM1MjEwMjc5Y2FkYTM2YjYgbGVnYWN5LXRydW5rCisyNzU0OSBkM2U0OTBhNTE0MDhiODhmYjg4OWE0NWYzZGEzY2E0MDg5N2ZiN2Q2IGxlZ2FjeS10cnVuaworMjc1NTAgZmRkODM2NTc1MjQ4Zjg2OWRmODNjMzhiY2RjYWIzNWMyMGQxZTNjZCBsZWdhY3ktdHJ1bmsKKzI3NTUxIGMzMWFmZWE4ODkzNGUwNjQ2ODIxMzkyYmQyNjdiMmQ1MTVjZGUyODMgbGVnYWN5LXRydW5rCisyNzU1MiAwY2FiNGU0ZmRjZjM4MGM2MWExZDk5MmQ0ZDA3YmE0ZjcwZTEyYjM1IGxlZ2FjeS10cnVuaworMjc1NTMgNWU0YjhkMWU5ZmQ2YjJiOTdkMGJlNDBmNTczNDMzYTNhZjZiNmYzNiBsZWdhY3ktdHJ1bmsKKzI3NTU0IDM3MTk1NDc4NTczOWY1NzQ2M2Q4NjNjN2Y5OThiODU0OWMwZmQwYjIgbGVnYWN5LXRydW5rCisyNzU1NSAyYWJmOWU5NDAyNzRmMDhmYzQ1ZWE4ZTExYWU2ZDFmMzI5YzJmZGRmIGxlZ2FjeS10cnVuaworMjc1NTYgNDNmYmM2NzM3NGE1N2I2ZWY2NjAzNzQ3ZTViYTdhNGRkZjJmMDNiMiByZWxlYXNlMjItbWFpbnQKKzI3NTU3IDI1ZmUzYTBhODBmYjg2MjM4Y2FkYWM3MDI5ODVlMjI3ZWNlOGE4MWYgbGVnYWN5LXRydW5rCisyNzU1OCA5OGFkNzcyZGVmYWFiYmMyMDZjMzhlYjlkNmI4YWZmMDZmM2I0YjRlIHJlbGVhc2UyMi1tYWludAorMjc1NTkgYTAzOGFiZDA4ZTRhYjUyYjBiYjRiMmFiMGM4NjRmNWE0OGI1YWI1NCBsZWdhY3ktdHJ1bmsKKzI3NTYwIGM4OWQzMzNmZTBmZTM0NjcxNjU3NWQ4MGE0NzIyOTJjM2I2NWRmNmEgbGVnYWN5LXRydW5rCisyNzU2MSBiOTkzZTY1MWViNzQ1Zjc4NDZhMDJiYzI3ODA1NGYwNzVlOWM1MmUwIGxlZ2FjeS10cnVuaworMjc1NjIgY2I3M2U4OTFkM2VlM2Y2MGIyOTU2YTkwYmI5ZTEwZDA4ZDNmMDA0NiBsZWdhY3ktdHJ1bmsKKzI3NTYzIDYzYTg4N2Q4YTFlM2E1MTkzYTI3Zjk3MzIxMDI3NjU4NGNlNGQ1YjkgbGVnYWN5LXRydW5rCisyNzU2NCA1YzE1MWQ5NThmYzE0NDIxMTNjNTIxZDIyNGQ2YTZkM2FiMzA2MGNhIGxlZ2FjeS10cnVuaworMjc1NjUgMTcyM2JjZGMxZTg1NGU4OTFiNzlkNTcxNTE1NzU3ZGQ1MTBhNGJmMCBsZWdhY3ktdHJ1bmsKKzI3NTY2IGM0ZGNiODBmNDhlYTE1OGVlMDU1NDRhNDkxNzQ1NzZmOWY2NzkxM2YgbGVnYWN5LXRydW5rCisyNzU2NyBhMzNmMmRkNDY0NDRiNjdkMDljYWQ1MjE2YTFiYjhhNDhiNmI3ZTY2IGxlZ2FjeS10cnVuaworMjc1NjggYmVjNWI2NjEwNjIyOWM3MGE4OTUwNjlmYTM0ZDgxNjY3MDIyNmNmNyByZWxlYXNlMjItbWFpbnQKKzI3NTY5IDk4MmE5MGE0ZDY3YjgzZTM4YmEyYmNlMzc3MzQ4Mjc1ZGNhZmY2YWIgbGVnYWN5LXRydW5rCisyNzU3MCBkYzIwYzdlYjQzNGY1MjFhZTY3YWM5ZmQ4YmJiOWY3NzI3NzI0YzVlIHJlbGVhc2UyMi1tYWludAorMjc1NzEgY2NlOTMxNmE2MmY4ODY3OGM1MDFlM2UwZjE1M2FlYmUxZjUwYTgyMyBsZWdhY3ktdHJ1bmsKKzI3NTcyIGEyYmNiMDBkY2JkNTk1YjExNDk1YzEzN2Y4NmY0M2E5MjUwN2ZiMzIgbGVnYWN5LXRydW5rCisyNzU3MyA3YjVlNjEzNzNmNmVkYzliZDUwMDU5OGIzNDU3NWM1MjAwYmJlNmRmIGxlZ2FjeS10cnVuaworMjc1NzQgYjlmMjNlMjI1M2Y4ODdjMjg4NTA0NjI5OGIxYjdkZWU1YzMzYWNiYiByZWxlYXNlMjItbWFpbnQKKzI3NTc1IDZlYjc0ZTgzYTZmMTFhNDgzOTUwOTgzNjA1NzQ2NDgxMDIyYzM5NjQgbGVnYWN5LXRydW5rCisyNzU3NiAwNzgwOWY2YTc5NjhiMjdkYWZmNTA2NzQ1ZmRiNmU2MTNmNmU0OGZmIGxlZ2FjeS10cnVuaworMjc1NzcgYmY2NDAxOGE2NGZmNGM3NTRjZTEwM2YwYWJiNTg0MjdhNDk4NzdhOCByZWxlYXNlMjItbWFpbnQKKzI3NTc4IDVjY2FhYWQ0ZjMzYjFiYWZjOGQ2MzFmZmI5NWVjYWJjM2ZkNzQ5ZTAgbGVnYWN5LXRydW5rCisyNzU3OSAzZDFmM2I3YWRlMDczNDMzOTYzNzVhZDZmNDFlZmIwNTc4NzEyNTg4IGxlZ2FjeS10cnVuaworMjc1ODAgZjAyNTk5ZWM1Y2I5MzEwNmYzYzMyMjdhMzBhMmE3ZDcwYjA0N2U5NiBsZWdhY3ktdHJ1bmsKKzI3NTgxIDk5MGZjMDRjZjBkNDAwMTQxNTUxNWU5YTU2NjRhMzY4YmRlZDZiNTcgbGVnYWN5LXRydW5rCisyNzU4MiAwYjZhMmFlNzA2ZTIxYTg3NjFhNjRkM2Y1NDc0OTI0ZjcyNDg5NGIxIGxlZ2FjeS10cnVuaworMjc1ODMgNzc0ZGMwN2YxYzE2ZTIzOTZlMDk0MzMxZGM2YzEwMWEzM2Q3OWEwMSBsZWdhY3ktdHJ1bmsKKzI3NTg0IDlkZWJhMzVlNjI0Y2JmOTUyMmI2NjdhZjNmNGExNDgzNzU3NTc2ZWMgbGVnYWN5LXRydW5rCisyNzU4NSAwODIwMjNjMjBjZWYyMjUwNThlMGE1YTdmZjgzMWZjYzA4ZDQzYzJiIGxlZ2FjeS10cnVuaworMjc1ODYgZTQ4YTRiMGJkYmI1NWRhNDk2ZGQ1ZjRhMDMyYjZlODVlNzI0Y2U3NSBsZWdhY3ktdHJ1bmsKKzI3NTg3IGYyMDEyZGIxNjE2YzNlNTY5MjQ3MjE1NGViOGFjOGUzODcwNTM1OGUgbGVnYWN5LXRydW5rCisyNzU4OCBmYTlhZjI0NWNlYjRlYWQyNTY1ZTNmZTlkNDFjZGEyYWJmN2MwNjZlIGxlZ2FjeS10cnVuaworMjc1ODkgNTYxZTMzYTZhMzEzODQxN2M2ZDk4MTdhOGEzNjBlZWVjMmMwOGI3NyBsZWdhY3ktdHJ1bmsKKzI3NTkwIGVmYWJjMTUxMWRjMjcxZWMwOTdiNDY5ZGNmZGNkNzEwNjgyOGI2YzQgbGVnYWN5LXRydW5rCisyNzU5MSBhNTQ2NTkzOTY4ZDY0ZGY0NjU5ZDc2Mjc1MzhjNDc5YmFmOGE2ZmRmIGxlZ2FjeS10cnVuaworMjc1OTIgMjUzNjdjN2M0MGE0YzZkZTU0MDgxOTA4OTJhZGMyMzQ0NWQyMTRkZCBsZWdhY3ktdHJ1bmsKKzI3NTkzIDA2ZWU4NjJkOTgxNTQzNDQ5NTI5NjM0ODY3MDg4N2M3OWZiMzVkYTIgbGVnYWN5LXRydW5rCisyNzU5NCAyOTZkZDMyNDI1ZDZhNzNmNDg5ZDQ5ZTQ3OTNlZDVlZDdmZTBjMDA4IGxlZ2FjeS10cnVuaworMjc1OTUgMDg2N2RhNWU4NTQ4OWFjODU1Zjk3MTdhZTFkOTI3NGY3MTJjMTEyNSBsZWdhY3ktdHJ1bmsKKzI3NTk2IGYwYTJlYzc4YmQwNWMzNzU3YWUwNDNjYWM1MTNhODI5ZWU0YzcwNjYgcmVsZWFzZTIyLW1haW50CisyNzU5NyAxNjMxNGZmNThlZjQ4MDUyYzVjMzJlNjkwYTFhNTRkYzU3ZTM5YjI0IGxlZ2FjeS10cnVuaworMjc1OTggYzhhMTlhNDI4MzU4NGJiOWJjZWFlYTBlMjcxODZiYjI2N2ZiMzU3YyBsZWdhY3ktdHJ1bmsKKzI3NTk5IDQ5NGE4YmViNDU4MjY1YTFkYmE1NTBhYWUyYWMyY2I4NGE5N2ZkMDIgcmVsZWFzZTIyLW1haW50CisyNzYwMCBkZmQ4NWU5MDIzZmNiYzQ5NmI5YmU0ZWU0ZDk1ZTBlNGIwZDNkZWMyIGxlZ2FjeS10cnVuaworMjc2MDEgZGFhNWIxNDQ5MmVlOTA5ZGEyZWQxYTI5MjI4N2VlNzU0NzZmZTg2MCBsZWdhY3ktdHJ1bmsKKzI3NjAyIDc2YWY4YjMwODk0YTdjZjlmMDUzNGU1MTE3NDk5MGRjNzgyMDkzZWQgcmVsZWFzZTIxLW1haW50CisyNzYwMyBhZDVmM2EwNTI2ZDFmNDNlNzgxNDBmYjBjMDhkZDBjM2Y0YzRkNmE3IGxlZ2FjeS10cnVuaworMjc2MDQgNTY1NzgxZWExMzdiZTJiZGM1MjhjMzZiNWI5NWJjYmJmNzViMzg1NSByZWxlYXNlMjItbWFpbnQKKzI3NjA1IDQyZWQwMmFmYTYzYmY3NmI2ZmI0ZGQ1NTZiNzhjMWEyZGI3OTM3NmMgbGVnYWN5LXRydW5rCisyNzYwNiBiMzQ3MjMzNzgzZWUzOTNiY2VjNWJiZTg3NjNmYWE2NDc2NTI2NzRiIHJlbGVhc2UyMi1tYWludAorMjc2MDcgOWJlYTJjMGM4MzhlNmM2Nzc4NDY0YzhhYTNjYjBmZWQyY2MwMGM1MyByZWxlYXNlMjEtbWFpbnQKKzI3NjA4IDYyZDhmOTc0ODExZjFhNDYyNmU5NzgxZTc5NGJlMWZiMjMzMjZkMDcgbGVnYWN5LXRydW5rCisyNzYwOSA4YTY3ZjI4YTQyYTVkYzE4Y2Y1MDE2YjlmMmUyZjc1MzZmM2NiZWMyIGxlZ2FjeS10cnVuaworMjc2MTAgNWI2NmU2M2Q3YWJiNzBkNDg0ZjM4Y2U5MDU0YjBiNTA2ODU0MjUwYSByZWxlYXNlMjItbWFpbnQKKzI3NjExIDQwZDk2NDkzYTQyOTUxYmY5YjI2NjVmMWE3NDJiZjJkMWMzN2FjNDQgbGVnYWN5LXRydW5rCisyNzYxMiAyODYwYmUyNDQyNjNlNDA0OTc0YzdkNzk0OTlkZjQzMDMzNWE5MDBiIGxlZ2FjeS10cnVuaworMjc2MTMgYjYyMTM4NDNkOGJlZDAwZWQwMjYzMWMyMTNhMWVkZmRiNWUyNWViNiBsZWdhY3ktdHJ1bmsKKzI3NjE0IGUwNmIxYWIwYmRiODBjMzQ4NGMxZjg0ODFmMGU0ZDAyNGI0ODJmYTIgbGVnYWN5LXRydW5rCisyNzYxNSAxMWM0MjUzNjk4ZGM3M2RjYTRmNTA4NmM4ZWYxMDVjYjdmNzZmZmQ0IGxlZ2FjeS10cnVuaworMjc2MTYgYzg5MTdiNTljMDY1OWFhMzhmNTNkODYyNzA3Nzc4MzA4MDAxZGU2MiBsZWdhY3ktdHJ1bmsKKzI3NjE3IDczYTg4NDQ4N2E3NjY4MGFiM2EyNmE4NmJkMDNiOWFhOTk0YzIwODkgbGVnYWN5LXRydW5rCisyNzYxOCAyYmU2M2UyMGE0OTgyZDVhYjc0OTFlOGYyY2VmYmU2ZmI1NDI1Y2NlIGxlZ2FjeS10cnVuaworMjc2MTkgMDU5NzdjNWY4ODBjZjhhMWNjYzkwZjQ2MDM3NGFjNDhhMzg1MTkyNyBsZWdhY3ktdHJ1bmsKKzI3NjIwIDM4OTViNzhkM2VlMGNlY2Y1ZDgyZTg2NGRjMjhhMzFjMjc1MTBjMjkgbGVnYWN5LXRydW5rCisyNzYyMSA1MWNkYTZlODc2NGE2ZTIyZDU3MzJjNmMwYjJkYWI0ODEzNjMxNTNkIGxlZ2FjeS10cnVuaworMjc2MjIgOWVhZmI0Y2VhNDdhNWM5MDAzZjZiYjA4ZGFiYzhhMTgxMTUzNzVmMiBsZWdhY3ktdHJ1bmsKKzI3NjIzIGZjMjdmZmUyMDM2YWExMGZlNzJlYmM2NmVlZDg1MmNjYzIyNWM2ZjUgbGVnYWN5LXRydW5rCisyNzYyNCBhM2ZjMWQ4ZTBhZTgxZTRhM2ZkMjBlZjhiZmRkMDFiMDM3MzcyNGI2IGxlZ2FjeS10cnVuaworMjc2MjUgYzQyM2E4OGIyMmNlZDM0NmE4YzRjMzc4ZmY3YTJkZGZlODI5ZTEyNCBsZWdhY3ktdHJ1bmsKKzI3NjI2IGRhNGM3MTIwMTQzZjA4ZDkzMzg1MTI0MzlmZWE4ZWZiMmQ0MzNlZGEgbGVnYWN5LXRydW5rCisyNzYyNyA1MDQ0MzEyN2IyMWRjNDk3MTgyMzRjMjRhZGI4NTU1MmViZmM4MWM5IGxlZ2FjeS10cnVuaworMjc2MjggOWE1OGQ2NGY4ZmMzZmQ1MjY0YzY4MGFhMDBjYjM3MWIxMjk1MWM0OSBsZWdhY3ktdHJ1bmsKKzI3NjI5IDVkM2VjMjhlOWE3YWQzZTgwY2EyNDI2ZmUwNjkyMWZlOGJjN2FmZDMgbGVnYWN5LXRydW5rCisyNzYzMCAzMDU0MjJkNjlkMzEzMzJkYTk5MzFkNTRhMmNlM2IyMTM1MjUxMWY1IGxlZ2FjeS10cnVuaworMjc2MzEgNGE3YjNiYWMzODEyODdiMjQxNmNmNjEzNzQ2NGU5YTIyNjYzMzY3MSBsZWdhY3ktdHJ1bmsKKzI3NjMyIDgwNGVhNTFjZmNlNmUyYzAzMjEyYjUzZjhlODQ3MjRhNDU2MzgzZDcgbGVnYWN5LXRydW5rCisyNzYzMyA3ZDA5ODIwNTZmNzJiNTdkODdhOTM1YWNiNTdjM2RmZjJjODM3YmU0IHJlbGVhc2UyMi1tYWludAorMjc2MzQgNTU0MmJmMGJiY2UyM2NiOGJhMmQyMzFkMzhlZTBmNGUzZGIxZjVmYyBsZWdhY3ktdHJ1bmsKKzI3NjM1IDYyZjRiNDViMDVmZGRhMTNiOTQ0MDE5NGQ3NmExNmMyMGYxYjA4YzUgbGVnYWN5LXRydW5rCisyNzYzNiA4MzEyMGY1YTQ4YzIxMzllZWRiZWM4MTQ1Y2ViOWVlNTkzY2VhYmE1IHJlbGVhc2UyMi1tYWludAorMjc2MzcgNDFjNTRiMzdlMDMwODg0NzJhYjdhZjAxNTg0MzczMTk3MjUyOTMxNyBsZWdhY3ktdHJ1bmsKKzI3NjM4IDg4Y2QyN2RiNzliOTNmMjg1NWYwZWZlYjg1ODM2ODEyNjJlZWIzYzYgcmVsZWFzZTIyLW1haW50CisyNzYzOSBhNjcxNzI3NTE5NWM5MjkwM2JjZTYwYzhmNmVjMjhlYTFlZDZmMGRhIGxlZ2FjeS10cnVuaworMjc2NDAgZWFjNTRhODMyNzJmNDIwMGU5ZGFlMWYyYTU1ZDdhMDFkM2VkZjQwNyBsZWdhY3ktdHJ1bmsKKzI3NjQxIDJmNjBmOTBjZTMwOTNkYmIxNTk3MTM3NjQ2NGFhNzA5M2JkZGRmMTIgbGVnYWN5LXRydW5rCisyNzY0MiA2YWEyZDA5ZTMyYzEzZmI1NmM5NjgxYmVmMjE2MDQ3NDJkYmE4M2QwIGxlZ2FjeS10cnVuaworMjc2NDMgMjdlOTRjYWNiNDNiZDZjMzRmYWY1NjAwY2YwNzUwZTEzYTViNzcwYyBsZWdhY3ktdHJ1bmsKKzI3NjQ0IDNiNTcxZTMyYTZlNDVmYjgyNWJiYjY5YTk2MWZiMjBkMmU1MTBhZWMgbGVnYWN5LXRydW5rCisyNzY0NSBlNjAzMzI1NGRmMjE0NTViOGZjNDE0NTg1MjkzZTUyNmU0NjNjZjBmIGxlZ2FjeS10cnVuaworMjc2NDYgMThjMWIyOTBlNDg0Mjk3NDcyM2YzMTI2Y2Q0ZmNlZmYyNWEyMjI3YSBsZWdhY3ktdHJ1bmsKKzI3NjQ3IDRhNWM2ZjY5NDQ3ZDZiOWZmNzc3OGIyMGE1Y2UwMmNjYzU5MDJkODYgbGVnYWN5LXRydW5rCisyNzY0OCBkOThiMGNkZjdlNTFiNmExOTBmYTQwMzQzYjNhOGI3OWMxMjI0YzkwIGxlZ2FjeS10cnVuaworMjc2NDkgNzZjZDI4NmU3ZGU1ZTc3OTViOTE5MzA1ZDliYjZmM2VkOTc0ZWFhZCBsZWdhY3ktdHJ1bmsKKzI3NjUwIDNhM2UwNzFkODRmOTg1ZmRjMjM5OTU2MDdkNzljYWU2YTBmZTRmYTggcmVsZWFzZTIyLW1haW50CisyNzY1MSBkNzIzNzAzN2YzNzk0ZDkyNDc0MWZmOThlMzg0OGY3MzAxZDhhZTU5IGxlZ2FjeS10cnVuaworMjc2NTIgYTRmNGNlNWU4YWE5OTE0ZTMyMzA3ZjU4OGY3ODA1ZWIwY2M1Mjk1MiBsZWdhY3ktdHJ1bmsKKzI3NjUzIGQxYjJiZmQ5M2EyNzA4OTUwY2EwY2U2ZDZiM2Y3MzViMzlkZmI3MDAgcmVsZWFzZTIyLW1haW50CisyNzY1NCBjM2NmMjIzMzhlMWNlOTQ3MjhmZmQ3YzQ4OTRhZTU0MTY2MTgzOGRhIGxlZ2FjeS10cnVuaworMjc2NTUgYzMyMGEwN2YwMTQ2NzFhM2UzMGE4ZDNjMDEzMjg5YTBjYzYzNDc3NiBsZWdhY3ktdHJ1bmsKKzI3NjU2IDFjZWJjZTUwZmU3MTIyNGQxMDk0YzY1ZGEwYTM0OTU5N2ViZjg5YjIgbGVnYWN5LXRydW5rCisyNzY1NyA5OWRhOTM2ODNlYTViMjU0ODYwZTE2MTNmMTkwYTA0OTRkMGUzNmM5IGxlZ2FjeS10cnVuaworMjc2NTggMzUyOWFkMjEzOTU1OTQzZDM0NThhMTAyOTIyNzZiNjVhZTdmNTE1MSBsZWdhY3ktdHJ1bmsKKzI3NjU5IGViMDRmMTdjYzAwOGNhNzUzM2Q3NDhkMzdhNTNkYjBmOTdlOThhNjAgbGVnYWN5LXRydW5rCisyNzY2MCA3MWYxZjM1YzAzNTczNDc2ZWEzOTgzMTM1NDY3ZjA0MDdkZjBkMDFmIGxlZ2FjeS10cnVuaworMjc2NjEgMWE3MDNmOWJiZGMwZmVkY2FjZTQ3OWY3NTRmYTMxOTI4NzZkZjMyNSBsZWdhY3ktdHJ1bmsKKzI3NjYyIDE1OThhMWU0NzNlMjQ3OThmZDU5YWNkYjE0M2JjNjE2NzY4MzE0NTkgbGVnYWN5LXRydW5rCisyNzY2MyA4MTljODAzMzcwNWI5NTRmNTU2ZTcyZmVhYzIzNWY3YTEwZDhjMjY1IGxlZ2FjeS10cnVuaworMjc2NjQgOTcwNzg2ZDAyZTgwNWRmMTdkNGQ5YjY0NzA3N2M0Y2ExZGJmNjRlOSBsZWdhY3ktdHJ1bmsKKzI3NjY1IGMwYTY3YTFjYWIwOWM5NzM3YzIxZTdhMDc0MzM0ZTVmZTBlNDA4YjcgbGVnYWN5LXRydW5rCisyNzY2NiBkODkwOTc5MjAwNWFiODJlZDFiYzJiMTMxMGZkZGFmNmNkMTg0YjJiIGxlZ2FjeS10cnVuaworMjc2NjcgNDQ1MjJhNzVkZWVjZWE5NDRjODMyZWZlNGQzOWQ2NzExMWIyMTkwMiBsZWdhY3ktdHJ1bmsKKzI3NjY4IDRlODUzMDZhOWJiZmE4MWVjNWJlNWYzODZiMTQzMjgxZDJlYzg2MjkgbGVnYWN5LXRydW5rCisyNzY2OSAxNTc2YTJkZmYwMWY4ZTk4YTI1NWExZTg3ZjU2MjUzZjRkNTUzNDdlIGxlZ2FjeS10cnVuaworMjc2NzAgZDgxNGE3MzE5MjRhMzE1ZWE1OTdlZTJkYzRkZjRkMzljYWFiMTgxNyBsZWdhY3ktdHJ1bmsKKzI3NjcxIGI1OTYyYjU4N2NjMDkyOWVhMWNmZjRkNWVlYWRjMDI3YjE2ZDAxN2UgbGVnYWN5LXRydW5rCisyNzY3MiAwOWU0ZGU1ZGNiM2JhYjFlY2Q0OGVjNTQ4YjQ3OTM4Y2Y2ZjVmYjY1IGxlZ2FjeS10cnVuaworMjc2NzMgM2NhY2VmMjQ5ZWI1NTBiMjYzMDI2YzlhZGY2NzE1NjgzMzhmMjRiNSBsZWdhY3ktdHJ1bmsKKzI3Njc0IDJkNDA3NDg0YTRlNjMzOGVmZjU0NmMxZGVjNGYwNWI5MDRkZmZjYzggbGVnYWN5LXRydW5rCisyNzY3NSA2NDAzNzBmMDhlMmFmMjk5NjdiYWI4OGFmYzQxNGE2YTRkNWNhYmNjIGxlZ2FjeS10cnVuaworMjc2NzYgMGEwOGVkMDViZDQyNWMwYTE2YWY3MjUxYzNiYzE4MGEzZDYxZGJkYyBsZWdhY3ktdHJ1bmsKKzI3Njc3IGEyNmNhOGFiMjdmMmIyMDE1MTJhOTg1MTRmMmVkZGFhM2ZmZTc3NmQgbGVnYWN5LXRydW5rCisyNzY3OCA4N2UyNTM0ZTlkNjRiMzcwNTBjMjcwN2Y4ODI5ZGM1NWY4N2Y0ZWIyIGxlZ2FjeS10cnVuaworMjc2NzkgZTY2MjIyNjIxMWU1MzljYWVkZmQxNGM5Y2UyM2JmYjg0MmM4N2YwMSBsZWdhY3ktdHJ1bmsKKzI3NjgwIDM3OWIwMWUwNzQyMjE5OTA2OTYzYjgyZjlkZDBmYjNjMDM5NjM5MjAgbGVnYWN5LXRydW5rCisyNzY4MSBhMDMyOThhM2FjYWQxNDM5MDkyZTBmNDk4MzBlMGFjOGZiZTIyOTJjIGxlZ2FjeS10cnVuaworMjc2ODIgNTJiMDk3NmU0OGExZDZlNDlkNDA1M2I5ODM3ZDlkYjRhNzc4YTIwYSBsZWdhY3ktdHJ1bmsKKzI3NjgzIDljMDE3ODRjZTdjYWI1MTQzMWQ4YjlkNDUwZWFlZmNiY2M3MzBiNjIgbGVnYWN5LXRydW5rCisyNzY4NCBjNGJmNDVjYTRkNTU2NzY5ZjAxMjdjZmU2Njk2OGQwMTE5ZTdjNTU4IGxlZ2FjeS10cnVuaworMjc2ODUgOTM0MzRiYzA4OTlkOWZkNTRhNzliOGU3NTExOTViNDQyZTRkMDdjMCBsZWdhY3ktdHJ1bmsKKzI3Njg2IGM5MWI3ZjM0NjI2YjljZDNlNTg3M2NkMmI1NGM3OTM0NzlmNTRkZTMgbGVnYWN5LXRydW5rCisyNzY4NyA0MjhjYmJmMDU2MzkwNjk4NTMwODljOTA2YzdhZjRmMTdkZGE3YTZkIGxlZ2FjeS10cnVuaworMjc2ODggMTMyNTc3ZjY5M2IxY2MxNTk3MzE4MTk0YjFlODI0NTM3NzgxZDVhMiBsZWdhY3ktdHJ1bmsKKzI3Njg5IDQxNjY1NGUyN2Q4ODkzMzU2M2YyYmI0MjU0ZDc0YzAyNDkyNGNkZjggbGVnYWN5LXRydW5rCisyNzY5MCA2OTEzNGM2MWY4N2MwNmJjMWFkMzgxMTQzM2JjMjAwZTI2MTU5ZTZjIGxlZ2FjeS10cnVuaworMjc2OTEgMDhkMzA3Y2JjY2Q5NTEyMGFlZDljNjdiODNlY2I2NTBhZmQ2MzY0ZCBsZWdhY3ktdHJ1bmsKKzI3NjkyIDVlZGU5YmNjNjUxZWIyZjAxOWE0Y2E2ZTNlNjI5ZGU3NjU1YWMzYmQgbGVnYWN5LXRydW5rCisyNzY5MyBhMzUzZDZhNDUyNzY5ZWEwMmJiMjkxYjg3ZDUxMGVjMDBhZGNhMjEwIGxlZ2FjeS10cnVuaworMjc2OTQgYzRiM2EyYjI0N2FjMzdhMzcxMjVmOTdlMjg1ZjdlMGQxNzFlYjI0YSBsZWdhY3ktdHJ1bmsKKzI3Njk1IDY1OGUxMmNjMDMzNjJkNWE2NDI3Nzc3YzhjMTZjM2RiYjM1YWJmZWUgbGVnYWN5LXRydW5rCisyNzY5NiA3NGY5YTIwNmQ0ZjA4ZGUxMzIzZTI0NTNhYWE0YmJkMjczMzZiMDYzIGxlZ2FjeS10cnVuaworMjc2OTcgYThkZjBjMGJlMjQyM2FlYjZkNjFmZWFiMzZlNDJjOGY5NjJiNmQxMCBsZWdhY3ktdHJ1bmsKKzI3Njk4IGRkMzgyOTFiODlmYjU0MDA3NWI5ZGMxYmE1YjFkNTI0NzkyZTg5YjEgbGVnYWN5LXRydW5rCisyNzY5OSAyOWFlOGU4OTE1M2JkNmU1NTdiZGQ5OWJkMGUyN2Q2M2Y4OGQ0OTAyIGxlZ2FjeS10cnVuaworMjc3MDAgMTI4MTVkMDUwODBjZjY5YzJjOWE5OTNlNGVlYzE5NjA3MDQwMjM5OCBsZWdhY3ktdHJ1bmsKKzI3NzAxIGM0MzQ2NmY3ZGFlODQxNjQ1N2U3MDgxYTZiNDI5MmI2NGI4NDA0ZDEgbGVnYWN5LXRydW5rCisyNzcwMiA0NzhhMmQ2NGFjNTgzMDhmYWJmNGU0Y2Q3NTdhNzI2NGZlOTczYzdjIGxlZ2FjeS10cnVuaworMjc3MDMgMzEyMjczNTNjYmJjYzAxMGI1ZDgyNjk2MGUzMDY3NDZkOTgxNzUxZiBsZWdhY3ktdHJ1bmsKKzI3NzA0IGFmZTQ3OWE2MjM1ZWMwODQxNWU3NDY1M2JiYjAzMzYyZDAyNDRjZTQgbGVnYWN5LXRydW5rCisyNzcwNSBhYjE4NzdhN2IyNjI1YmQ2YzQ2ZWZiMzE0OTBjNTZhNWVmZTM5MjlhIGxlZ2FjeS10cnVuaworMjc3MDYgZDlhZGQ0MGY5MmZmMzJmMTk4NDdkZTMyNWI1YmYzZWZhMGRhM2JhMyBsZWdhY3ktdHJ1bmsKKzI3NzA3IDE3ZDUyNjI5Nzc1NTdmN2U2MTgwY2U3YWIxNzllZWMxNmFlNTBhYmQgbGVnYWN5LXRydW5rCisyNzcwOCBhYTRiOWE3YjM4MTdhMTllNWZhNTg0OTFhOWEwM2FjYzIxNmU5ODYxIGxlZ2FjeS10cnVuaworMjc3MDkgZWIzOWJhNjBkYWUwY2ZjMjk1YmM4M2NlOGQwZDRkYTY1ZDBkMWU4NyBsZWdhY3ktdHJ1bmsKKzI3NzEwIGQ0OTdmNTIzYjgyZWQ3NGFjYTEyNjM5OTUxNmUzM2ExY2ZkODA4YWEgbGVnYWN5LXRydW5rCisyNzcxMSBlMzc1MWZjMDNlNmM4NzgyZTk3NmJjZjUwZWEzZmIxZjk2ZmMxZmJkIGxlZ2FjeS10cnVuaworMjc3MTIgNTNiMzIyNzFlOGUxZjE2ZGY0ZDkzOGNiY2JkNzQ3ZjM2ZmQ4YmEyMyBsZWdhY3ktdHJ1bmsKKzI3NzEzIDY5Nzc3N2NjODNjYzBmZjA2MzU4NTEyZmE0ZmZlNmZmZDcxY2M3NTcgbGVnYWN5LXRydW5rCisyNzcxNCA4YjRhMTY1YmFhZWVkZjY5ODRlNGFjMGViZjAxNWE3MTc1MzU4NmUyIGxlZ2FjeS10cnVuaworMjc3MTUgZGRmNjcxNjMzNDY1ZTUwNmY1YjdjOTY3YWUxYzFmNmY5NjIwN2FkMSBsZWdhY3ktdHJ1bmsKKzI3NzE2IDIxMzFiYjc5MGFmOTU4YzY1MTM0MTc4NTc1MDRiNjAwYTE0ODRlZDggbGVnYWN5LXRydW5rCisyNzcxNyAwNmI5YThkYWQ3MjFiMTkwNmUwZjliZGMwZjFmMjE3MTM1ODU4MDdkIGxlZ2FjeS10cnVuaworMjc3MTggMmY2MDM0NGE0OWU4OGNlNGVkOTk3NDM1MTA5MzE5NTEzZjA1NDkzYiBsZWdhY3ktdHJ1bmsKKzI3NzE5IDQ5YTNlODMzNDdkZGVkMGIwOTk3ODQ5Y2U3MDU4YjkwYWE4NzZjOTEgbGVnYWN5LXRydW5rCisyNzcyMCA2N2VhYWJiMDE3ZTBlMGQwMWI4OWFkMGUxZTZiN2QxNDhmMDkyMTFkIGxlZ2FjeS10cnVuaworMjc3MjEgYTliODA5YzhiOWRiYWEzZTQxNWUxNjVkNjE2YjM0Mzk3MTg4NmQyNyBsZWdhY3ktdHJ1bmsKKzI3NzIyIDEzOTg1OTAxNmI0NGJiOWQwNjcyNGIxMGU4OGU2NDI2M2Q2ZDVlOWIgbGVnYWN5LXRydW5rCisyNzcyMyAzZWYwMTljYWFkMWU1MTUwOGQ0OWI2OGYwOWZjYThjYzE5ZTg4ZWQ3IGxlZ2FjeS10cnVuaworMjc3MjQgMmFlMDE0NTkzMWYxZjMwOGQzZGRiMjkyOGVlZDhlODJlYTMzYzA0NiBsZWdhY3ktdHJ1bmsKKzI3NzI1IGYwOWNmOGViYTdlMjM3OTBmZDM2NTU2NThmYmZlOTZlZjI2MzI1MmEgbGVnYWN5LXRydW5rCisyNzcyNiBiYjA2OTJlMzBmYzZiMDFkM2ExNTBjZTBiMWNkMzUxYmNjZmMzZWNmIGxlZ2FjeS10cnVuaworMjc3MjcgMjMyYWIwZDY2Mzc1MmJhMmVhNmExMWUxMzQ2ZTE0Zjg3MTRmMjVlNiBsZWdhY3ktdHJ1bmsKKzI3NzI4IDJkYzIzZjBmMzQyMTVkNmY0NmEzNzk0MzU5MDQyMjJhMGUxMGJhMzYgbGVnYWN5LXRydW5rCisyNzcyOSA0ODkzMGIwMDQzYjc3MmI4YTYwMjkxMzRjNGUxZGU2ZmQyZjM3ODM0IERTX1JQQ19CUkFOQ0gKKzI3NzMwIDE4N2M0ZmFkZTNkYjNlYjVmOTExYTVkNTY1OTlkMTkxNzU2NjQwNjUgRFNfUlBDX0JSQU5DSAorMjc3MzEgMzBkMGQ4ZGJmMjQ0NThlYjE2ODRkOGIwNmU5ZjIzMjg2MTg0NWExOSBEU19SUENfQlJBTkNICisyNzczMiA3ZmVkMzUxM2FiZmE3MTNkZWMxNjZkZTk4YmNhZDZjNTEzMzQ2ODJmIERTX1JQQ19CUkFOQ0gKKzI3NzMzIDNhM2JjN2Q5ZjFmNWU2MTYxYzIwOGYwOTgzOGY2OTliY2E5NjA0OTcgRFNfUlBDX0JSQU5DSAorMjc3MzQgNGY2ZTU2YzQ0NzM5ZmU2Yjk0ZmJjN2RmM2JlODU3ZDBkYWQ4NzAxYiBEU19SUENfQlJBTkNICisyNzczNSBkMmQ4MWQ1M2Q0YTEyZGYzMGFjZDYxZWQwM2RiZGE1ZTRhNWE1OWM3IGxlZ2FjeS10cnVuaworMjc3MzYgODA4YjRmZTUxODRmY2FkNzY1ZjFlYjlhZmEzOTQ5NzAyMjg3ZTBmMCBsZWdhY3ktdHJ1bmsKKzI3NzM3IGFhNWM5OWI2MWRmNzc3NDFhZDY5YjJlNjlmZDMxZTNlMGYyYmQ3OTIgbGVnYWN5LXRydW5rCisyNzczOCAxMzdmZGRlNzAwMDYwMTAyZjI0YzQyOTNkOWExZTRmZmIzOGVkODU3IGxlZ2FjeS10cnVuaworMjc3MzkgMTU3YmJmYjE3ZjQ0Y2U5MmRiZjZiNThmNzgyMmJiYjRiYzVkYzVlMCBsZWdhY3ktdHJ1bmsKKzI3NzQwIDU1ZWFiMTBlNDcyZDM5ZjM4NDYyMmJmN2RhNWJjZjUxMWJjZDc4OGMgbGVnYWN5LXRydW5rCisyNzc0MSBmZGE1MTNiNjcxYjZjOWY2MmJlNjc5OTc0NGEwMDkzYzZlY2M3YTRmIGxlZ2FjeS10cnVuaworMjc3NDIgNGVhZGY3ZGZjZGI0YThlZWQ0ZGEzYTE5ZTc1ZjQwYWFmMDNkZDI3MyBsZWdhY3ktdHJ1bmsKKzI3NzQzIDE5NDE0MGM4MzI3NjA0OWRmNTU1NjJmYTQ2NTdkMzg5NzRiNDM0NWMgbGVnYWN5LXRydW5rCisyNzc0NCBhMzU3MTQzNjgzN2MxYTI0NWQyMzA5MmM4ZTVjYjEzYTM2ODgzZGI5IGxlZ2FjeS10cnVuaworMjc3NDUgMTdlOTRlNjIzNTNjNzM4ZDM3NWU3NjVmZTc3YzFhOWQyMWU4NGYxNSBsZWdhY3ktdHJ1bmsKKzI3NzQ2IDMzMDhhOTZiOTc2ZjZlODk1MGQ3Zjc2ZWYyNDY1OThkYTZmYWY3ZjAgcmVsZWFzZTIyLW1haW50CisyNzc0NyBmM2M4ZTNhZjdiNmJmNjI2NzhiMmE2ZjcwNTIzYjRkMTUzNzVlMjNlIGxlZ2FjeS10cnVuaworMjc3NDggMDIwZDk2NjI1MzU3ODY3Y2Y2MGY1NzE3OTUyOTA4ZTliOGJjMTlhNSBsZWdhY3ktdHJ1bmsKKzI3NzQ5IGU4ZmQ1Y2FiMGRiM2VhNzI2MDc1ZDQ5OGFlOWViMjA3ZTk0ZTU4NmMgbGVnYWN5LXRydW5rCisyNzc1MCA3MTNhZDdlMDQwNmFhNjJhZTMxMGVmY2IwOTZjMGM4MzMzNjlkZjFjIGxlZ2FjeS10cnVuaworMjc3NTEgOTc5ZmY1ZDBhZTA3YWY1NDNhNzczNzM2NDdlZGZkNWUwOWY5MzljMyBsZWdhY3ktdHJ1bmsKKzI3NzUyIGFhMGQyZDUxZmJkZWMxMTJhZjMwNDMzMjE2NzE3ZGNkZGU1ZmQxNjkgbGVnYWN5LXRydW5rCisyNzc1MyBhNzE4NmJiOTE0MmM5MjllZTFkMDA1YThhZTZkM2U4YjIxN2Y5ZDQ2IGxlZ2FjeS10cnVuaworMjc3NTQgMTAxMjkwNmU4YWRmMGZjNTEwMWE2NDY1YzBhOWU1MTAwNmIxM2E5NiBsZWdhY3ktdHJ1bmsKKzI3NzU1IDhkMjNiZmEyMGNkYmNkYjBhYWNhMDQ4ZTRjMmQ3YTdkNzI5MzQwOWUgbGVnYWN5LXRydW5rCisyNzc1NiA0YWI0ZGFjNDYyZmZkYzk5NWYzZDkyNjY5ZDhjYTc1YjAyMjVmMjhiIGxlZ2FjeS10cnVuaworMjc3NTcgZTM2MDVlYjJmODY2YjNiNTMzZjljNWQxZjdiMWI3Yjk3MDAwMjg0ZCBsZWdhY3ktdHJ1bmsKKzI3NzU5IGY2ZWFhOWQ5OTZlYzI0MmM2NWI2ZDg2N2MxZWYwNzMwOWRjZjRjMTUgbGVnYWN5LXRydW5rCisyNzc2MCA0MGUwMTQwMTgxY2Y4NTAwMGMwNWExMTQ1NmE2MDBkNWEzNDc3MzZjIGxlZ2FjeS10cnVuaworMjc3NjEgNDNlZTFjMDc1MGEyMzU1NGJkZTU1NGZmNzNhNzMzMDNkYjkzOThjMiBsZWdhY3ktdHJ1bmsKKzI3NzYyIGRmZTU0YWYyOWE0NzNmZmU4ZTM3OTgyM2QzMGIzNTc2YWY1NzZkNDQgRFNfUlBDX0JSQU5DSAorMjc3NjMgOWQ2NDFjZTY2YWYzNTgyMWNhODJjNWYwODg2YWE4ZWNlODhkYzNjNyBEU19SUENfQlJBTkNICisyNzc2NCBmNzljN2FhZTY2MjBkOGIyYjNmNzg3OTkzMDA2MTdmMmZhNGRjNDUxIGxlZ2FjeS10cnVuaworMjc3NjUgMzA3MGI3MTdmYzNkODMzMjY2YjhmZThhMzVlYTRhOTY2NzQ1MDFkYyBsZWdhY3ktdHJ1bmsKKzI3NzY2IDg5Y2U2MjEyNjY2NGYyNGI2NDBiZjljOTQ2MmI4MmFjZjE4NGM5NTIgbGVnYWN5LXRydW5rCisyNzc2NyBhYTllMDU0MjcwYTJhOWZlZmE2NmI5ZWVhYjI3OWRmM2Q1MzU3NzdiIGxlZ2FjeS10cnVuaworMjc3NjggZWMyYzg1NGJkMTk2ZDNhY2FjNDc0YzMzMDVjZDZiZTExNTdlZWMyYiBsZWdhY3ktdHJ1bmsKKzI3NzY5IGM5ZGU1NWZiYjJiMWRlYTdjZWZkMTNlZDZkY2M0MmUyNzYxYmYyZmMgbGVnYWN5LXRydW5rCisyNzc3MCBlMmQ0NjFiZWZjN2E4YzViMjE3NGFmNzcwZTM5ZDFmNWJiNDA0NjkyIGxlZ2FjeS10cnVuaworMjc3NzEgNjcyODQzZWU0YjYxZmIzOTFhMDhmM2FhNWVjNWU2OTc5ZDlhODVhMiBsZWdhY3ktdHJ1bmsKKzI3NzcyIGQ4YTY4MmQ0YzY5MjQwNDcwMDZjOWIyNDhjYjMzZWQyM2IyMzZmNzcgbGVnYWN5LXRydW5rCisyNzc3MyA0MTU2YmY5YjAwNDNjMGI3OGI5ZmEwNDQzZGYwNmNjNWJmNzhmYjRjIGxlZ2FjeS10cnVuaworMjc3NzQgM2M0NWRjZDAxMDFkZWViZWU5NGUwZjg4YzA0MTQyMWIzYmVkNTVkNyBsZWdhY3ktdHJ1bmsKKzI3Nzc1IDY2NzMxNzFmYzM3ZWJmMWJlMTg1OGI4ZDBlYzJmNWY2MWUzOTZkM2UgbGVnYWN5LXRydW5rCisyNzc3NiBkYmRhZGE5NjY4NTgyZGYxNGRjY2U3MzU1NzQ1ODMyMzdhYmFlYWNlIHJlbGVhc2UyMi1tYWludAorMjc3NzcgMGUyN2I2NzI0N2RhYTRiMGYwZWE0ODRjNDQyOWUwYWNmNWJlNGI3MiBsZWdhY3ktdHJ1bmsKKzI3Nzc4IGI0NWQxYjMwNDBhZWYwMGY3NWM5NjI1NzUzMzRkNDY4Y2FmYWI2MmYgbGVnYWN5LXRydW5rCisyNzc3OSAzYWFhZDlkZjcxMWU0M2U0ZmU5MjRlYTM5ZmUyNzg1Nzk1YTkzYzc2IGxlZ2FjeS10cnVuaworMjc3ODAgZWI3NTlkYTA2NGFhODVkYjg2M2I2OTMzNTM3YWEzMGMyMjM2ZDg3ZCBsZWdhY3ktdHJ1bmsKKzI3NzgxIGFjNDliMjgwN2I3NTBkNDc5NzhmMDg5MjQ1OTkwZDZmNGJmZGYyMTUgcmVsZWFzZTIyLW1haW50CisyNzc4MiBiOGUzNTk2Y2ViZDdkMzQ0YzA3OTIwYzJlNTExY2RiMWM0MzkxMWZlIHJlbGVhc2UyMi1tYWludAorMjc3ODMgMGEzMjdiNzY4ODY4NzRhYmRiZjE5NzAxODkyODM0MzllZGMzNDlkNiBsZWdhY3ktdHJ1bmsKKzI3Nzg0IDA3ZGQyZmM2YWM5Yjc3YWJjYTM4NWJiN2MwMjI3YWM0OWZkYjM4MDkgbGVnYWN5LXRydW5rCisyNzc4NSBiYjY0YTg2MTRmNjY4MTc0ZTQzYzAzODliNzIzMjllYWNmNzBkNDllIGxlZ2FjeS10cnVuaworMjc3ODYgNDc3Yzc0ZDAwNjZmMDYyNzY4MGVjOTJlNmU2OGNiZmU4YTM5MjM0OSBsZWdhY3ktdHJ1bmsKKzI3Nzg3IGVkOThjODhiMjM1M2JlNDA5M2IwNzA1M2E5OTYyZDdhNWM1MzBmOTcgbGVnYWN5LXRydW5rCisyNzc4OCBmNjA1MmFlYjEzNGZjYTFlODE2ZmYyMmJmZmYwODA5Y2YwZTAwYTIzIGxlZ2FjeS10cnVuaworMjc3ODkgYzdlZDkyNWM3NWIzMTBhOWFlYjhmYTMzMThmMjA5NmI4ODA2ZjhjYyBsZWdhY3ktdHJ1bmsKKzI3NzkwIDYwODczNWRkMmViYzdkNmU1MWM4MjA2ZGQxOGEyMGU2Y2I1MTcyNjIgcmVsZWFzZTIyLW1haW50CisyNzc5MSA4MWNhNmNhNWMzMDc0YjM0M2NlYmE3ZjlmMWE1MDY3OWEzMTZmMWEwIGxlZ2FjeS10cnVuaworMjc3OTIgYmQzNjY1YmQyZjc4MzMyNDA5NmU5MzgzYTYzMTFmZWY3ODAyY2JiZiBsZWdhY3ktdHJ1bmsKKzI3NzkzIDhjNmE5OTIyNDU1NzlmMzgxMmE5NTljYzlhYTNiNTExNTQwZjJkNDQgbGVnYWN5LXRydW5rCisyNzc5NCBlYjU1NGFhMzYxZTljZTgyMDZlN2NlYjNjNGQ3NzQyNTI1NWRjNzgwIGxlZ2FjeS10cnVuaworMjc3OTUgY2E1YWM5NjdjN2M0Y2NjYTEzZGNiOWQ4NWM3MDJkOGUwNWMwZTdlNSByZWxlYXNlMjItbWFpbnQKKzI3Nzk2IDgwMTI5ZDRhOGNlYzE3NTMxZTNlNjNlYTdlODlkMjYzYjA0ZjAyZTQgbGVnYWN5LXRydW5rCisyNzc5NyAzMDQ0MDg3MWM2ZTU2NDBjNmQ1NmU1MDFmMzk0N2I0MzVlZDBlZmUyIGxlZ2FjeS10cnVuaworMjc3OTggZDA0OWZkNThlNGRkYzRkZGVlYzc0ODJkZTI0YzliZWU4ODE0ZjFiYiByZWxlYXNlMjItbWFpbnQKKzI3Nzk5IDRkZTVjN2U2MjMxZTVkMzY5MDVmNzRjN2RhMWY0Yjc0Y2UwYWJiOGIgbGVnYWN5LXRydW5rCisyNzgwMCBkNmVjNGRhYjkyN2U2N2QyMjg1NzRhNWY5M2M3YWFkNjdlY2YzNTczIGxlZ2FjeS10cnVuaworMjc4MDEgMzFhNzExOWJkOGQ0ZGVmNzEzNzQyMTE5NjFlM2JlZGJhZWMwM2UyNSBsZWdhY3ktdHJ1bmsKKzI3ODAyIDhlMjY2ZDBhY2QxMGEwODIxZDUxMjZmZmQ3MThkNzg2MzAwODEyZDYgbGVnYWN5LXRydW5rCisyNzgwMyA0NzA4YzA5ZjAzNTBmOTU0NjQwNjM0YTA4MDA5OWMxNmM1YWVmZDg1IHJlbGVhc2UyMi1tYWludAorMjc4MDQgMDg5MjZjYzVmMmFmZDA0MTZmMGE3M2ZiMTkzMGNhNDAzY2QzYzEzNyBsZWdhY3ktdHJ1bmsKKzI3ODA1IGEwODhjZDA4ZGFkZTc2NjI1MGQxODY2MDY5ZDc5ZDdjNDc5MDdiNmQgbGVnYWN5LXRydW5rCisyNzgwNiBmNWNmYTBlZTAyY2YzZjY2YTJhYjczYjRlMmE2ZDgxZDY2YzBiZjQyIGxlZ2FjeS10cnVuaworMjc4MDcgZGQ2YTk3MTFiNDNjZDkwNmYwZTQyMWI2OTIzZjhmYWNmZTQzNTAwNSBsZWdhY3ktdHJ1bmsKKzI3ODA4IGEwYTU5ZTUyYmFlYzVkZDBjOGVhNjA1YzgwYjcwZjYzZGNiZWQ4YTEgbGVnYWN5LXRydW5rCisyNzgwOSA1MTVlODcyM2NhZWZmNjU5NjM0ZjA5Mzk0ZjlhY2M2MGJiMmM3OGI1IGxlZ2FjeS10cnVuaworMjc4MTAgMjc1NjkzYmNlZTc0MDJiMzBiNmM4Mzc3YjYxMjkwZDA4NzA3MTE1ZiBsZWdhY3ktdHJ1bmsKKzI3ODExIDM2ZTJmZDNmMDhmNzU4MGRlZTQ2YWQ4YjA2OWU5Mzg5N2U3M2JjODUgbGVnYWN5LXRydW5rCisyNzgxMiA1YmU5NjFhOGU5ZGIzZTE4MGY4NjNkZjQyMmViYmE5OGYwZjBmYmQxIHJlbGVhc2UyMi1tYWludAorMjc4MTMgYmQ2MjY4YjE3Yjc1NzdjOTE3YWJkMmRiOTk3NmRiY2U0MmU0NDYzNiBsZWdhY3ktdHJ1bmsKKzI3ODE0IDNkYjI2MWE5M2E1YjlmNzNhMzdlNjM1Mjk4M2VhODk3OWVmNmE3YzMgbGVnYWN5LXRydW5rCisyNzgxNSBmNGNkNzhiM2I3NzRjZmI5NGE3MmFhNmZmNWE0NTY0ODA3MWFlZDA5IGxlZ2FjeS10cnVuaworMjc4MTYgZWQ4OTI0MTFlZTBkMDBiNWVhODRlNDhiYjkyMGQwZGJjMzExZmJiNCBsZWdhY3ktdHJ1bmsKKzI3ODE3IDlhZmFjMGRkNmI2ZTRlYTBlNjMyZTA1MDhkYzI5NThlOWE5OTJmMzUgbGVnYWN5LXRydW5rCisyNzgxOCBlYTQ4MjE5NjQwNDMyNGMzYjBmOTlkNDJjNTE0Y2M5YmM2YzBiMzM3IGxlZ2FjeS10cnVuaworMjc4MTkgMTVlZTQ0NWFmMDdmN2E4NTI2OTkxY2QxYzgyMDYzZjgyZjU2MTk5YyByZWxlYXNlMjItbWFpbnQKKzI3ODIwIGY1NWQ1OGVlNGVhM2ZjYzAwZTI2MDQ0ZDdiZGZhYTMwOGU3OTI2MmYgbGVnYWN5LXRydW5rCisyNzgyMSAxNGJkNWFiMGNkYjY2YzY1ZjU3NThjZWEzNzI4NjFiYmRhMTliNTEzIGxlZ2FjeS10cnVuaworMjc4MjIgZjQ0MzZlMWIxODY4ZmVmMmYxMmRjNzI2OTllNTJjZTU4MzQ4YjllMCByZWxlYXNlMjItbWFpbnQKKzI3ODIzIDczODNlNjc0ZmNkNTFiOTMwMGU3NTk4NTk3N2UzYjVlZTdiOWNjNzAgbGVnYWN5LXRydW5rCisyNzgyNCBmZTIyNTBmNDVhYzA4NDUzMGI5MWM3MzQ4ODYxYzNkZmY5NjhiZDlkIGxlZ2FjeS10cnVuaworMjc4MjUgOWVmODIzNzc2NjlkNTNhOWJiNWMxYjgyMmY5ZDdlNmE3YzgyYzc1MSBsZWdhY3ktdHJ1bmsKKzI3ODI2IDdkYzNmNDA3N2U1OTU1M2VjN2Y5NTkzZGYyNDNmM2EwNTZkNmRhZDQgbGVnYWN5LXRydW5rCisyNzgyNyBkOThmOGUwM2ZhMzEyYTNiNDYwNTIyMzVhYjM0NDQ1YjUwMGRjYjMxIGxlZ2FjeS10cnVuaworMjc4MjggMzAxZGQ1NDY1YjhlMmIyODYwZDhmYmY1MDAyNWQ0MDU1NmNjZjFlOSBsZWdhY3ktdHJ1bmsKKzI3ODI5IDY2OTg5NjY4MzhjOGU0OTAyYWMzNTYyYzc4OWRjNmQ5Mjk0NjUzOTEgbGVnYWN5LXRydW5rCisyNzgzMCBmZTAzYWI1ODBmOTU1YjkyYjY4NDgxODY5OTM5MTFiMDVkZDM5OWM5IHJlbGVhc2UyMi1tYWludAorMjc4MzEgMmNkNTFiMDUyZGRmNzdiOTM1YjcxNDA1Y2FjMzI5MzEyZWU2NDg2OCBsZWdhY3ktdHJ1bmsKKzI3ODMyIDZkNjExMjZhY2U2OTViMzg3NTkyZWJhNDIyMjY2NzUzYzY5MDJlMzQgbGVnYWN5LXRydW5rCisyNzgzMyAyMjZiYTM0YmQ5OThiNWVlM2ZkMGFhYzllYTZlMGU4MjlhMzQxZmVhIGxlZ2FjeS10cnVuaworMjc4MzQgOWQ0NzNkNGQxMWE2OTNlN2RjYzA2OTU4YTRhNGEzZGMzOGEzZGJjMCBsZWdhY3ktdHJ1bmsKKzI3ODM1IDMyZGRlMzdjOGQ5NTk3NDBmZWIxZjUzZjhmZDBjZDZmMWVmMzJiNmEgbGVnYWN5LXRydW5rCisyNzgzNiBjM2Q5ZTAxYzYxMjQwOTdlYjNiYzI3NDhjYWFhOGY1YjViMzFjNzI5IGxlZ2FjeS10cnVuaworMjc4MzcgNmY4MjRkNmYxMjg2MjkxMjRiNzExOTQxMzQ5OTRjYzdlZjZhOGJkOCByZWxlYXNlMjItbWFpbnQKKzI3ODM4IGRkZDZmZjA2OTNjNGYwMGRkN2IxZWY3M2JhYzYzMTI3Y2UxODNjMjMgbGVnYWN5LXRydW5rCisyNzgzOSAzNTQzMjMzNzFlMzg0OGQ1YmEzYjUxOGZiNWY3YmQzODEyYzkyMzIyIGxlZ2FjeS10cnVuaworMjc4NDAgMmFkZDI3YjU1ODY0YWIwMGQ5YjZkN2M5MDQ2YmUyMjIzOTI3ZDcyZiBsZWdhY3ktdHJ1bmsKKzI3ODQxIDc0N2ZhNjVhOWI0NzVhOTJlNDBjNGM5YzEyYWU4YzI1NjliZjM2YWUgbGVnYWN5LXRydW5rCisyNzg0MiAyMjU3MGU3NmNjYTE2MjFlNmRjM2YwOTZmNTkyOGQ4ZmNkZWViNTFhIGxlZ2FjeS10cnVuaworMjc4NDMgYTVlYTRkZDE3ODgzYTdhYWE2MTI5ZWVmMDhjZjkzNWJmYmUyMGIxOSBsZWdhY3ktdHJ1bmsKKzI3ODQ0IGYwZDEzOTlhMjQ0NWQwZGM5YjU0OGI3OTExYjIwMTJjNmU2ZjM2YWIgbGVnYWN5LXRydW5rCisyNzg0NSBmODI4ZjMyMjA2YmE1MmI0ZTM0NGI3ZGMwZGUxNDdiNDBhMTM4ZjI3IGxlZ2FjeS10cnVuaworMjc4NDYgZDk3MWI4NzAzNTA4MTIxY2JmYWZlNGNiNWVlNGMwYmM1NDJiNTkzOCBsZWdhY3ktdHJ1bmsKKzI3ODQ3IGQyMTZlNjdhYzIyMWMyMjBhMDk5Zjc2OWRhZDJjMzQ0ZWQyYTVkOGQgbGVnYWN5LXRydW5rCisyNzg0OCAyNzgyNWQyNjgzMTdhMTExNjA0NGNiMThiMzdmYTQwMGJmYTFkNzY1IGxlZ2FjeS10cnVuaworMjc4NDkgNWYxNDlhZGU5YWYxOTE2MTZiNzFhYzk0NWNlOThlMmE3YTBiNjEzZCBsZWdhY3ktdHJ1bmsKKzI3ODUwIDE4OWViNmZhOWRlZDg1MzFmZmFkMmIxYjEwZTAwYTVkN2EyMzllMDMgbGVnYWN5LXRydW5rCisyNzg1MSAyZDc3YmU0MWVlNWZiMDdlNThhOWQyNDlmZWQzNTYxNDczYzdhMDAyIGxlZ2FjeS10cnVuaworMjc4NTIgN2ZjMmNlYzRkYzgyOGQ0OWVjOWIyZDQzMGIxZWYzYzVmYWJmOGMzMyBsZWdhY3ktdHJ1bmsKKzI3ODUzIGExYmRkZjZhMzJjYWJmNmRhMTMzODk3ZmM2YjQyYjAxMjJiZGZkZWYgbGVnYWN5LXRydW5rCisyNzg1NCBlYmM4NjY3ZjMyNWFkYmJjNzBiOGJkNzIwNTU2NjQxZjNmYzhlZTIwIHJlbGVhc2UyMi1tYWludAorMjc4NTUgZTMzNGRkNGU1MTBmZjE3MjdmOTNlNTQwYWMwMDdmYzJkYjBjODRlNyByZWxlYXNlMjItbWFpbnQKKzI3ODU2IDRhNjZiZWYxNWMzYmI2N2RhMDM3NDUyMGQzZTFhMzBlMDBkOTQ3YjIgbGVnYWN5LXRydW5rCisyNzg1NyAxNjFhNWVmMDIzMGUzOTA2OWVhY2MwZThjMTJjZjkzMWIyMWE1MGRjIGxlZ2FjeS10cnVuaworMjc4NTggOWIyNDk3ZTI5Nzk1M2E5OWY4ZTFkOGRjZWM2NmRlMzkxNjVkYjRmNSBsZWdhY3ktdHJ1bmsKKzI3ODU5IGU1NjI5OGRjMGY4YWU4MjE0NDJlNDE5Y2JkZmViZGQ1MzI4NDFjNWQgcmVsZWFzZTIyLW1haW50CisyNzg2MCA3OWYxMjliMDczZGViZTNiZGMwYTgyYzUxYzk1OTM1NDBkZmM4NTY5IGxlZ2FjeS10cnVuaworMjc4NjEgYjZhODJmODE4NTQwNmM0Y2VjZWYzNzk5MjQzM2QwNWVlY2FhYWIzZSBsZWdhY3ktdHJ1bmsKKzI3ODYyIGY2NmIzYTM1MDljNzBjYTA2YjM2NTg3MjAwZmNlNTI2NGQyNTIyZjMgbGVnYWN5LXRydW5rCisyNzg2MyA0NWI0ZmM2M2JmNjcxOTM2NTRiMGVmNDc3Mjg2MGU4YTI4YmY0MmQyIGxlZ2FjeS10cnVuaworMjc4NjQgOTBiNDk2NjhkMGFjM2Y5OGE5NmJmNjI1YzUyOTM2YjY2Y2RkNDk2MiBsZWdhY3ktdHJ1bmsKKzI3ODY1IDVkYmNjZTIxZGZlZWE2NzIyMDQxNmRjMmE5ZGY3ZmVmYTM0MDkyYWYgbGVnYWN5LXRydW5rCisyNzg2NiBlMTQwOWFiMGZlNjk4NzM1ZDJjZmVhZGQ5MDYzN2EzZmY3NjAxMTcxIGxlZ2FjeS10cnVuaworMjc4NjcgYWQ0ZDIzZjFiZjZlNmEyYmM3Mzg2ZDQ2ODU2N2M5ZDBkNDA2NWY3ZSBsZWdhY3ktdHJ1bmsKKzI3ODY4IGIzODc1NGYxY2I2MTEyMmVhZWNiMmRhZDNkNzViNzJmZTk5ZjcxMjMgbGVnYWN5LXRydW5rCisyNzg2OSBiNmU1MWIwODZjZjRkNmNjNWE5ZTM2NzkzN2QzZmM3YmQ3MDFiY2ZkIGxlZ2FjeS10cnVuaworMjc4NzAgNTY0NjI5ZDFmMWFjNGEyMGZlMTBmZWY4NzYyMDViYzc1YzQ5YTU3YSBsZWdhY3ktdHJ1bmsKKzI3ODcxIDAzZDg1ZDE5NzA1MmE5MTJjNmVmZjkxOTU0Y2RkN2IzMzZkZTMwMjAgbGVnYWN5LXRydW5rCisyNzg3MiA4NjkxZWRhNGMwNTczMzQ3OWEzNTY5MWQ1NjFhODQ2Njc5MDY3ZDgxIGxlZ2FjeS10cnVuaworMjc4NzMgNzg5OWZkMmFmOTEyNWY4NjUxNTM5M2Y3NjY2ZWVhYmM3OWYwM2RlZiBsZWdhY3ktdHJ1bmsKKzI3ODc0IDcxYmEyZTk2OWMxMTQxNWQ0MGQxNzZjNzRmMzM4MDUzNzdiOWFjNjQgbGVnYWN5LXRydW5rCisyNzg3NSBlMDEyOGQ2MTZmODc5NTlmODZhZGVhN2Q3OWYxMjM3ODZkZjFlYjdjIGxlZ2FjeS10cnVuaworMjc4NzYgZjA1YTMxMWQ3OTg4NjI1N2UyN2IyOTQxOTJlN2E1MzFkMzMyMGE1OCBsZWdhY3ktdHJ1bmsKKzI3ODc3IDEyYWFmOGQ1YWQyYmU3MDc1NzI4NjI2MDY2MDc5MDU2ZWU0NGIyNTIgbGVnYWN5LXRydW5rCisyNzg3OCA0ZTYyN2Q4Y2Y5ZjRkMmE4NDk2ZjRhMzc5ZmRhZmU4NWYyMDdmZDEwIGxlZ2FjeS10cnVuaworMjc4NzkgZGYwNjI4NjYyYjQ4MWUzODU0OTQ1Mzk2YTY2YWY2MDFmOTQ4ZWQ3YSBsZWdhY3ktdHJ1bmsKKzI3ODgwIGJjYzM1YTBmMWE3OGU4Y2ZiMTllMGZmODM5Y2I5OTAzODY4MDQ5MzIgbGVnYWN5LXRydW5rCisyNzg4MSAwODU0NTI0ZWNlMDA4NDBkYTU0MjMyNmQ0MmI2ZjcxZThkM2M0ODcyIGxlZ2FjeS10cnVuaworMjc4ODIgNGJmYzhjNTE5YjZkZDU0YTk1ZDliZGI2ZWM5MTdjNTMxY2Q5YjAyZSBsZWdhY3ktdHJ1bmsKKzI3ODgzIGZiMDY5MWYxMGQ5MTJiNDlmNDNiODdlNWM1MGJhZGY4M2Y1MTA4OGYgYXN0LWJyYW5jaAorMjc4ODQgM2RkYWNlMWQxMmE5ZmU1MGM2Y2VmNGM5MDhjM2NhMDRiMTNhMzdlYiBsZWdhY3ktdHJ1bmsKKzI3ODg1IDgwOTFhNGEzYjhhZWMyZWYzMmUxN2Y4YjI4ZWFkZjk1MzBiYmRmMzUgbGVnYWN5LXRydW5rCisyNzg4NiBlYzFhMmQ3YWMwMmJjMDQ5MjM5OTJkNjM1OTg5NTFiYjc2OTFiZWUyIGxlZ2FjeS10cnVuaworMjc4ODcgMzAzMzVjNjhiNzg3ZjkxZmUwNjE4ZmNjZDZmMWM4MGNjODNhNzg4NyBsZWdhY3ktdHJ1bmsKKzI3ODg4IDI2NzBhNWRiNjg0MzE1Y2ZlNDU3M2RjMTMzYmE3NWFmNDlhMzllOGIgbGVnYWN5LXRydW5rCisyNzg4OSBkYWY3NTc5YzIyNDgyMTkyY2NlOTg1NDViZGU3ZjVlZTQ2NjRkNWRiIGxlZ2FjeS10cnVuaworMjc4OTAgNmRjZjEyOGQ3ZTAzMDhhY2Y4NWY2YzA2NjBkY2ZjNGE4YzM1MmM3NiBsZWdhY3ktdHJ1bmsKKzI3ODkxIGFjNzYyODc2OWJhNTNlMWJjNTY0YThmYjVkZjM5MzMxZDI5YjRiOGMgbGVnYWN5LXRydW5rCisyNzg5MiAxN2E4Yjc0YmJlNWNmMDRjNjhjMGU5NDQ2MDI0Nzg1NTk4ZDhiYWJlIGxlZ2FjeS10cnVuaworMjc4OTMgZGZlNjg4NGI1OWUwZTdlNDBiZWY2NmI3ZDMwNTgxYTZjZmEyYTY0YiBsZWdhY3ktdHJ1bmsKKzI3ODk0IGZlMmNmY2U0ZTY1ODYzZWQzMTcyYjViMTM0NTRiOWNlNDBlN2IxOTYgcmVsZWFzZTIyLW1haW50CisyNzg5NSA0ODk3ZTI5ZTE5Y2MwNjdjNmI5MzBmMGZlMjMwM2NlMGM0MDc1YjQzIGxlZ2FjeS10cnVuaworMjc4OTYgODdmODI4NzI2ZmU2ZWFiNjE5NTk4ZmVkNjE4YTExY2I5NzhjZTMzNiBsZWdhY3ktdHJ1bmsKKzI3ODk3IDMyNGIyZTdhZjY4MzU3YTBiNzNmOTMyODAxOGUzNWYwNWUwYmQzMzMgbGVnYWN5LXRydW5rCisyNzg5OCBmYTMyZTdhNjVhN2U4ZjhiZWEzM2M5YTVjMjgzNzdjNDBkODJjYTlmIGxlZ2FjeS10cnVuaworMjc4OTkgZGZlNWE2ODk5NzliYTgyM2NmYmVkNzUwZWEyMTUxZTA1YmRmZjUyNiBsZWdhY3ktdHJ1bmsKKzI3OTAwIGFiYjUyZDU2YmE1YWFiYzVmMjA5N2MyYTk3MDFmOGNlNGU2MTJlOGMgbGVnYWN5LXRydW5rCisyNzkwMSAxMmQ4NWI3ODUyNjM2MzRlN2EyNjlkYTcxMTgzMWRkYTUxYmY1NmRlIGxlZ2FjeS10cnVuaworMjc5MDIgN2VjYjZlYjFmZTc3Mzk3NDU3MzY1NmUyYmI0ZjEwN2EyOGYzYjYwZiBsZWdhY3ktdHJ1bmsKKzI3OTAzIDdmYWMxMzNkNTM5ZmZhY2IwYTI1N2E4YjVjNDU0MjY3NGFlODAyM2YgbGVnYWN5LXRydW5rCisyNzkwNCA1NmNlNGM4ZjRmMTY5ZjIxYzljMTc4ZDUxYTAwYjljOWViZGM1ODBmIGxlZ2FjeS10cnVuaworMjc5MDUgNzAyZTExM2QzOWIwZDU1YmRiOGQ4ZWI1YzE2OWFhOTllMGE3OTU3OCBsZWdhY3ktdHJ1bmsKKzI3OTA2IGQ4YmEzNzNiZjJiM2M3MjdiNDE2MzNiMzQzZTcwMTcyNTU1YTMwNmYgbGVnYWN5LXRydW5rCisyNzkwNyA5NGZmMDc0MzgzNzdiODdkNDhiNjU4YjQ2MDdiMjBjNTA5NGJiMzcwIGxlZ2FjeS10cnVuaworMjc5MDggYWUyZmI4ZGEzODYzZTk5NjQyNTlkZTQ4MTdhZTcxYjZiMDZkZTc3MSBsZWdhY3ktdHJ1bmsKKzI3OTA5IDc1ZmQ4NjI5MDFkODNlN2YwMzM2NWFjMmY0ZmRiMzg3ZDY2NDJkZjQgbGVnYWN5LXRydW5rCisyNzkxMCA4YTEwYTcyMWI4NGJjZWVjY2JlYmVhYjM2N2EwYmRkN2QwMjQ3NTRhIGxlZ2FjeS10cnVuaworMjc5MTEgMGNmNGUwNTM5Y2MxZjU4MGMzZjZiZDZhNjQ4MTc0MjUzMjgzMzE4YSBsZWdhY3ktdHJ1bmsKKzI3OTEyIDE3NWNkMGUwODhhYWNjZjkzZDRhMDAwNTZiMzk0NTQzNjljNTM2ZjYgbGVnYWN5LXRydW5rCisyNzkxMyBhZGYwYjIxNWE1MmFlMjU5MDRmZDI4ZDBiNzZlOTczOWViMzg3YmFiIGxlZ2FjeS10cnVuaworMjc5MTQgNWJkMGYyNDFlYzVhZGJiOTI4YTVmMTU3MmUyYzljZDM5YjE0MDcxMyBsZWdhY3ktdHJ1bmsKKzI3OTE1IGE3M2E1ODk4YmY0OTJhNTYxMmJhMWVhZWFjYWU5ZTRhY2EwZjVjOTcgbGVnYWN5LXRydW5rCisyNzkxNiBhNTMyNGIwOTQ5NDJlMzI4NTY3NDRjMDA1Y2RkM2QxYTE1M2U2N2ZmIGxlZ2FjeS10cnVuaworMjc5MTcgM2NiMDU1YWFlNzM5NTdkODAyMjM1MzdiOGIyYzY2NTVlMWYwNjA2YyBsZWdhY3ktdHJ1bmsKKzI3OTE4IDFmMDE3ODcwNTUyZTY1M2JiOGRhMTQxOWJhM2JiODEzNDkxZjY5MTggbGVnYWN5LXRydW5rCisyNzkxOSAzMmY5MmQ3NjZiODEzNmFhYjQzYjYyYjcxNTY4ZDYxOTZmY2UwOWM4IGxlZ2FjeS10cnVuaworMjc5MjAgNjJmNmJhYmVjZTFmYzMyNDU3NGRjMmJlNTI2NmU5YTAzNDUxYmMzZCBsZWdhY3ktdHJ1bmsKKzI3OTIxIDM0NDQwMDViNjUyNzAzZDJmYjQxZGJjOTFhN2E5YjVkNmVlZjE3OWUgbGVnYWN5LXRydW5rCisyNzkyMiA5NWRmODdkNDQ5MjNiZmQ0Y2VmYWEwZDlhNGI1ODU0ODZmZmRhZmYwIGxlZ2FjeS10cnVuaworMjc5MjMgOTUwYzVhMDlhZDk5ODk0MTlkZmFhZmY0YWYzOTAxYzM0ZGE2MmE0NiBsZWdhY3ktdHJ1bmsKKzI3OTI0IDgyYzQ4NjUzODYxYjU2ZThiYzBjMzg2YWEwY2U0NzhmMWU3Y2U1NGMgbGVnYWN5LXRydW5rCisyNzkyNSAxYzI2ZWI3NjgyOTM2ZDAxOTA3NjJhODE0ZTVmY2IxZjg0ZjNkMjhkIGxlZ2FjeS10cnVuaworMjc5MjYgYWYxZmI0ZmVjMmI0NGQ0MjYwZjQwNjlhNzYxNTllYTk4MmIzYTM2MyByZWxlYXNlMjItbWFpbnQKKzI3OTI3IDQxODk1NjA5ZDA4NGNkYTc1MDgzYWM5NjViNmJmNjAwMTNkNmEzMDMgbGVnYWN5LXRydW5rCisyNzkyOCBlOTYxY2QyZjIyZTQyOGE0MWUyNWM3NTExOTk3NDY2MjZiOTliYjBlIGxlZ2FjeS10cnVuaworMjc5MjkgMjhhNWM4YWZhMDU2ZTUyY2ViNzBkZTBhMmRiMWNiMTJjMDFmYjJkMCBsZWdhY3ktdHJ1bmsKKzI3OTMwIDhkNWUwZTNmNjQ0NTAwZjI2ZWY4YjI5NDdkYTE2M2Q2ZDQ3YWQyNTcgbGVnYWN5LXRydW5rCisyNzkzMSAwNmYxZTJmZDA1YmNhYWUxNmYzY2Q4M2ZkMzE2Yzk0YWMyOWY3NGM4IGxlZ2FjeS10cnVuaworMjc5MzIgNjE0MzU4ZTNjNGY2YWVmZjJiMGQ5ODg2Y2RmOTFmZmRlOWIzNjMxYSBsZWdhY3ktdHJ1bmsKKzI3OTMzIGZmOWVmYTY5MjU5NGZiYjgzZmViODVmNzU1NjE3OTQwZDJkZjk0YjAgbGVnYWN5LXRydW5rCisyNzkzNCBkMGQzZjc2MGQwNjc1ZGUzNzcwNjU0MTkxZjI3MmQwYTYzYTYxZTVlIGxlZ2FjeS10cnVuaworMjc5MzUgYzAwZGYyM2U4NTZlNWUyYmQxZGJiMTQ5NDQyMzNkOWM3MzRhOTVhYyBsZWdhY3ktdHJ1bmsKKzI3OTM2IDBiZDUyMWViNzE0ZWFjYTg2ZjhjYTI0NTNhZTRmYjUzNjRiZTFiZTMgbGVnYWN5LXRydW5rCisyNzkzNyBkZDk5M2QwMWU3NDA0MTE4ODM4NDQzY2Q1YzMxZDNhYTQ4Mzk0MWQwIGFzdC1icmFuY2gKKzI3OTM4IGI1YjliMDMzNDQ2OWM0NzZmZWZmMGZiZjZkMmM3NjljMjAyNTI5NDcgYXN0LWJyYW5jaAorMjc5MzkgZDJmNDFjOGE4MWYwZDk1MzhjYTUyYTMyMGNkYTJlMzM4OGVjNjE2OCBsZWdhY3ktdHJ1bmsKKzI3OTQwIDk2ZmRlOTgwOGUxNWM3YTAzM2RhNzNmZWE0Y2FlYjM1YmUzY2M1MmIgYXN0LWJyYW5jaAorMjc5NDEgNDIyODZkMmU0ZDJmZjc1YTYxODI4ZDAxYzRiYWM1YTA5YTJhODJiNiBhc3QtYnJhbmNoCisyNzk0MiA1M2YyMWY0MzQ5NTY2NTZhYzk3OTc5ZmQ0ODlkMjUzZTdiZGZkNjExIGxlZ2FjeS10cnVuaworMjc5NDMgNGYwMDEzNGI1NjFkYjUzNGEzMmY1ZmQ0M2JmYWUyMDc1NmQ5N2ViYSBsZWdhY3ktdHJ1bmsKKzI3OTQ0IGYyMDI1YzY3NmUyNDE1NzI1ZjZkM2ZjYzNmNDMwZTk1ZmJjN2FhNWMgbGVnYWN5LXRydW5rCisyNzk0NSBkODc1MDg5N2M4OTdjYWFiMTE0MzZmOWZkNTAzNzMwMjIxMDk0MTg1IGxlZ2FjeS10cnVuaworMjc5NDYgYTZhNGE5NTFjNjE2Y2U3YTkzZmNmNTdkMjQ1NTEzNTA4ZDdhZmM4NCBsZWdhY3ktdHJ1bmsKKzI3OTQ3IGUyMTM4MWZkODc1NjQxMGFkZDNlNzlkZDZhYWE2ZDA5NDYyMWNiZmMgbGVnYWN5LXRydW5rCisyNzk0OCBjOTgwOGY1MjEyMGFmYjllMjZkNGQ4ZGY2MzgzYzNkOThkOTg1NWNhIGxlZ2FjeS10cnVuaworMjc5NDkgZDVmMTdkODVmNmEwNjU4M2I2YmY3YWM2NmFiMjNiNzkyNmFjMWFhYiBsZWdhY3ktdHJ1bmsKKzI3OTUwIGRmNGE5ZDNhYmM1NmExMmE3YWIwOGQ4NDg0ZWUyZjk4MjkyMDc5YTQgbGVnYWN5LXRydW5rCisyNzk1MSA1ZDZlNDcwY2UwNWNkNWIxODBlMjFmYjQxOTRmZjIzOGM5OWY2NmMzIGxlZ2FjeS10cnVuaworMjc5NTIgYmJhYzRlM2NjYjYyNTIzNjZiOWNiZDkzMGQ0ZjMzYzY2YjFlNDgyMSBsZWdhY3ktdHJ1bmsKKzI3OTUzIDRiZjk0MTQ5ZDIxYzdlNDYzYmE4ZGFiYTFkYjE5MTQ5ZjMwYzY3ODUgbGVnYWN5LXRydW5rCisyNzk1NCBkMjZiNjJmMGM2ZGJjMzUyZjBjMjUwZjViNzQ1MDc0YzkzYmM4MmU5IGxlZ2FjeS10cnVuaworMjc5NTUgZjA1OWQ1NDM1ZDY1MzJlZGU3MDU4Mzg0M2U5MjIzODE3MTk4NzNiMiBsZWdhY3ktdHJ1bmsKKzI3OTU2IGI0MjY5ZmE2N2MzZTljYzRhMGUxZjQ3MzlmMzQyZmFmNjU5OTc1M2IgbGVnYWN5LXRydW5rCisyNzk1NyBiMjVjMzFlMDA4YzhjN2QyMTQ5N2UzZjU2YmFhNjYxZDdlZWQ5OGQ1IGxlZ2FjeS10cnVuaworMjc5NTggOTM0OGZhMjBmMjE0OTIwZDFhZWNiZDNmYmUzMGJjMmFjN2ZjMmY2OSByZWxlYXNlMjItbWFpbnQKKzI3OTU5IDQ3OWY4ZjRlZTRhZDQ1NWFjMzUxZTJjNzIzNWJhMjU0NGVkZGY5MGYgbGVnYWN5LXRydW5rCisyNzk2MCAwYmIzOTg2Y2Y2NTNhNjA1ZWRlZDg2YjlhNTFjYTU5OTM4YzJjMzk4IGxlZ2FjeS10cnVuaworMjc5NjEgYzhkNjk0YjY0MWYxOTI0OWQ5Y2RiYzk5NGFjZTVlMWUwOWIwZTI5OCBsZWdhY3ktdHJ1bmsKKzI3OTYyIGFhYmM5NzkwMmUxMDQ2YWJjYmU1MjM0NTUwOTlkNzU5YTcyYTZlZWUgbGVnYWN5LXRydW5rCisyNzk2MyA3Y2E0NmUwODIwMGRmZWU1M2UyMTZiMTdiZTMxODQ2YTYyZjI1OWY1IHJlbGVhc2UyMi1tYWludAorMjc5NjQgNDU3YTA0NzgzMTgzZjU2ZjcwMTYxOGFlNGQ1OGJhZDVmYmFiNzBkYSBsZWdhY3ktdHJ1bmsKKzI3OTY1IDhjMzhlYTA5MmYyMDdlYmY0NzA5YzBiZWNiNTc5YjEyZjg1MjYwZWMgbGVnYWN5LXRydW5rCisyNzk2NiAxMGRiZGU2OTg3NjY5MjRkZmNkMzc3YTI4NzlkZDJlOGRhOWQ4NjY1IGxlZ2FjeS10cnVuaworMjc5NjcgODFjNTZjYmMxZDVmZjQ4NWU2NDJhN2NhZDg1NWI0ZDU3MDNhMDMyZSBsZWdhY3ktdHJ1bmsKKzI3OTY4IDAwNDg4Y2E5ZTA0Zjc1NGI4NjcxMjEzMjFkY2EzNTgyMTdkZTU1YWUgbGVnYWN5LXRydW5rCisyNzk2OSA4NTExMjFlY2MxMTExN2E0NzgyNTg5M2M1MDk1YzM3ZTNmMDA1NjcyIGxlZ2FjeS10cnVuaworMjc5NzAgODBmZDBkMzYxZTE3ZjYwNGFkYWY2ZjFhNzYwMzBmYWIzMGRmNTZjZCBsZWdhY3ktdHJ1bmsKKzI3OTcxIDkyMGFkMDk5MzBkYzUwOWM5N2RkMmQ2NGRhOGMxYTZkY2QyY2U3MjMgbGVnYWN5LXRydW5rCisyNzk3MiAzZTcxOGMzZDUxZWZhYmQxMzhhMWQxNzJiMDExYTc0ZWQ0MDIzNWE3IGxlZ2FjeS10cnVuaworMjc5NzMgYTMyY2ZmMGM3NWRjYzdlZmI1ZGJlMmRhOWY3YWEzNzNjOGIxZjhjYyBsZWdhY3ktdHJ1bmsKKzI3OTc0IGNjY2JjMmM3OGMwOThiMzc5ZmExMjhjNmU3M2EzNWExZTVhYWU3MDIgbGVnYWN5LXRydW5rCisyNzk3NSAyNDQxMTdhZWJiZDU4NWJlZTllZWFmNWNhMDA0Mzc1ZjZlOTM2ZWYyIGxlZ2FjeS10cnVuaworMjc5NzYgY2EyMGJlMjQzODFmYjMwNWYzMjkxMmY3OTRjY2JlMmRjODc5NmM1YSBsZWdhY3ktdHJ1bmsKKzI3OTc3IDQzODJiMjM3NDM5MDFkZTcyNGVjNTg4YmE5YzdkZWQ1NTQwYWZiNzkgbGVnYWN5LXRydW5rCisyNzk3OCA5YjFiMmI1OGM4NjY2MjM2NzBjYTY0MGI1MTk5ZWRhODUzZDczYzJjIGxlZ2FjeS10cnVuaworMjc5NzkgMDBmOGRkYTE3ZWUyYjUyYWZhZGU5NTE0OGMxMDc5ZTBlZmYxNGRmMiBsZWdhY3ktdHJ1bmsKKzI3OTgwIGVjMmUyODMwMGI3NjU5YzY3OTczM2IwZTcxYThkYTcwNDhiM2Y0NTUgbGVnYWN5LXRydW5rCisyNzk4MSAyNWQ2N2M5NGE2ZDFhMGM3MzM1YzlmZDY4NzU3ZDNmYjk5MTBmODVhIGxlZ2FjeS10cnVuaworMjc5ODIgYzM5YWVkNDVkYmU5OWRjOWEzNDc4YTNkNTk3NDBkMTkwODJjYTkxOSBsZWdhY3ktdHJ1bmsKKzI3OTgzIDlkYmExMjE2N2RiNmY3ZDIyNmZhOTQ1MmVmMzlmNWVhNjZkOTNjNmIgbGVnYWN5LXRydW5rCisyNzk4NCBjYjMwOGExM2ExZmQyMDQ2ODdlYmM0NmYzZGJjYmVhZWExNWI1YWRlIGxlZ2FjeS10cnVuaworMjc5ODUgZmQwNWMyZDM1ZmU3MTkxZjJkYWVkOGVkYmVhODBmYzhhNzk1MzA1NCByZWxlYXNlMjItbWFpbnQKKzI3OTg2IDgzOTMxNWRlMGNhMTBlMmNiNDk4NTEzMTYyNzZjMjBkMjhmMGE0NzMgRFNfUlBDX0JSQU5DSAorMjc5ODcgMWVhNTY5ZWE1MWZkOWRlODAwODc0MTk1MjY4Y2E5YjIxOGRmZWI5YSBEU19SUENfQlJBTkNICisyNzk4OCBlN2I2YmMyYjM1ZTJlNDJiZTg3N2E0ZDMxNmIxN2EzNDk0NDY5NGFjIERTX1JQQ19CUkFOQ0gKKzI3OTg5IDMwNzMzMmYzN2I3ZDkzN2Q0ZmUzYjUxNjU0OWYyMjY4YzJlNjkyMjEgRFNfUlBDX0JSQU5DSAorMjc5OTAgMzI1N2VmZGE0NTEzMzFlN2JjZDNiNjBkMDE3NDA2NTczNWM4MmIzNiBsZWdhY3ktdHJ1bmsKKzI3OTkxIGU0YThlM2U0MjEwZDk3N2U3ZTc5NzY2YzRjNjczNTc0MTE4NDQwMWIgbGVnYWN5LXRydW5rCisyNzk5MiBkYTg4ZTk5MGY5MmNjZDJlNzE4M2Q2Mzc3MWIzNjRjOTlhMTg4N2QzIGxlZ2FjeS10cnVuaworMjc5OTMgNmUwZGVlZWI5Nzg3ZDNiM2Q3ZmI3Mjk3MTU2M2VjNGFiNzFlMTdkNCBsZWdhY3ktdHJ1bmsKKzI3OTk0IGY5MjhmN2VlYTJkNjk4NTg2ZDMwNGZkNTRiNzhhZDlmZjAwZDk5YWMgbGVnYWN5LXRydW5rCisyNzk5NSBhNTA2YWI5YmI0YTQxNDcwNDllZDdkNzQwNWU1OTMyYjE4ZTE3YTRhIGxlZ2FjeS10cnVuaworMjc5OTYgYTAyYWJhNzJjYmIyNDk5ZTVhMzAxNzc2NmQ4NzJmM2IyZGM0MjlkZiBsZWdhY3ktdHJ1bmsKKzI3OTk3IDAwMTY3YjJlY2FjYzVlYmMzNzliNmZmYjUwN2FjNTA1NWM2NDc5MGEgbGVnYWN5LXRydW5rCisyNzk5OCAxMmUxNDYxNzFmM2RjOTA2YjkxYmFlMGM2YzlmNGQxZmJlNGFhNjliIGxlZ2FjeS10cnVuaworMjc5OTkgZDdjYTBhMmNlMDc0NmI4NmIzMTIyNzU2NTc5YmE4MmQ4ZDUxNjUyZCBsZWdhY3ktdHJ1bmsKKzI4MDAwIDU5ZDUzMzU4MGU3MmQ2MTUzYzhjZTRkNjMxN2RhMDU5YzNlYmUxNTAgbGVnYWN5LXRydW5rCisyODAwMSAyNjJhZDE2YjRkZTA5YTMyYjFjMTM0YmMyNTAwMWY3YTAxNzk1NzQxIGxlZ2FjeS10cnVuaworMjgwMDIgZjVlMjljNzMzNmRkODhlYmUxNjBlNDNlNTJhMTZkZTQyMzllMmQyMSBsZWdhY3ktdHJ1bmsKKzI4MDAzIDczYjMwOWNmMDIxMzU1MjljOTlkODRiY2MzZjM0Zjk4NjNiZDE1MTMgbGVnYWN5LXRydW5rCisyODAwNCAyYjA3NjZhZmFhMjIyZDBhYjA3MWViMDdjYThmODI0YjNjYjBhM2M3IGxlZ2FjeS10cnVuaworMjgwMDUgZmQ0NTc1YjU2YTRkZTAxOGU2NzhjZTQ3MzY2ZTI0ZTg4NGY5OGFhZiBsZWdhY3ktdHJ1bmsKKzI4MDA2IDk0MGM0ZjU0NmU3ZjE3ZTc0ODNjZTlkNDQ3OTY1N2MxNjQ4ZjYyM2UgbGVnYWN5LXRydW5rCisyODAwNyAzZTRkNDMyODcyZWE3OTE4ZjM3MzJkMjg1MWVhOGZkMzUxOGEzNDE2IGxlZ2FjeS10cnVuaworMjgwMDggYjY3MDdlMTU5OTA5YTY1Zjg4YzhjN2ZkYzI2Mzk4NWVmMDZlNjhiOCBsZWdhY3ktdHJ1bmsKKzI4MDA5IDQzNGVjNTIzZjMyYzdkNjA2ZGYyODYzMGE4MDQ2NzQwNjY1YmI4ZTMgbGVnYWN5LXRydW5rCisyODAxMCAxM2RlMmY2ZjA3ZGRkYzk4MTkwM2IzNTY4YzQ4NmI0ODRlM2YxYzk0IHJlbGVhc2UyMi1tYWludAorMjgwMTEgNjU0MmRmYTQwZTc3Yzc2MWQwMTQ4MDk2ODZhMjI3YTY5MDFiYWMzYiBsZWdhY3ktdHJ1bmsKKzI4MDEyIDhhNzRmMzM1Y2ZiYWI5ZTEyNzc1NDE3Yjk3MjZlMzk4NWEzNzQ4NTMgbGVnYWN5LXRydW5rCisyODAxMyA3OTFiYmVkYmJiZTllMzc2Y2Y4YmQ0OTRiMjRiODJlNzNhYzc2N2MzIGxlZ2FjeS10cnVuaworMjgwMTQgNDBlYjgwZGM0MjUwMGU5ODBlMThjYWNkM2Y2ODM5YjMxMGY0ODQyYyBsZWdhY3ktdHJ1bmsKKzI4MDE1IDhhMWMwODZhZDIxM2E3NjVkNDFlZTYwOTgwZjUyMmEzMGZhZTE1YWMgbGVnYWN5LXRydW5rCisyODAxNiAzNWRiYTYwMDdhYzM3ZDJmNGQ0ZDhjMjZlZGQ5NDlmN2FmNTkxOTYxIGxlZ2FjeS10cnVuaworMjgwMTcgZGJjMGYyZjExNDE0MjBjZGYyOTc4YjU0MjZlMDQ1ZjJjNmRlM2FkNSBsZWdhY3ktdHJ1bmsKKzI4MDE4IDY0MmRkY2ZlODY0YTRmZWFmYTg4ZWY2YmNmMDEyYjU1ZWE3YjQ5NDggbGVnYWN5LXRydW5rCisyODAxOSBiNjRkYjU1MDk3MmMxNDBmNDRhMWZmZGE5ZWU5Y2Y2NTc5NWNkODZhIGxlZ2FjeS10cnVuaworMjgwMjAgNzM1NDQxZmRhYjdlNDc0ZmU0NTBhMTZkOGE2NmI0NDU3OTVlMDdhNyBsZWdhY3ktdHJ1bmsKKzI4MDIxIDgwYjEyOTQ0YTQyYjBhZjcxNTA1NzUyMjg2Yjg4ODg5MDFiY2U5M2YgcmVsZWFzZTIyLW1haW50CisyODAyMiBjOWQyNDI4YTZhODVlZTg4NWVlZTRhODI4OWEyMWE2ODkwZGYyODQ3IGxlZ2FjeS10cnVuaworMjgwMjMgMTFiMjYyZmVkNTgwOWNjYzQ1NDg1MmY3ZDU0YmM2ZWY3MGE5MGI4NCBEU19SUENfQlJBTkNICisyODAyNCBmYjQ1OTFjMDQ3MGUyODAwZmM4ODc1NzRlMWRmZTUwNWFiZWYzNWYxIERTX1JQQ19CUkFOQ0gKKzI4MDI1IGQ2ZTVlOWExYmNhMDhkNWM0MjcyMmZmYzM1ODU4YmEyNzI3ZjEzNGQgRFNfUlBDX0JSQU5DSAorMjgwMjYgYjQ3YTZhMmExZTU2MGMyOTExZTYwZDc4MjZiNzU4NjljMWQ2NmZlNCBEU19SUENfQlJBTkNICisyODAyNyAxODY5Y2VjZDM5MzM0OTIxMDRkZmMzODMzMTc2NzJjMmRkM2U3OGUyIERTX1JQQ19CUkFOQ0gKKzI4MDI4IGY3MzI1OTc2ODQyNjdhOWJiYjRmOTBkMDM2YjgyMzFiOGNmYjljN2QgbGVnYWN5LXRydW5rCisyODAyOSA2NDQ1ZTQ0ZmNiNzgzNjBkNzI1ZTljODBhNWYzZDQwYmY1MmEwZWU2IGxlZ2FjeS10cnVuaworMjgwMzAgNDgyYzk0MWQ1OTNmODYxYzRmZjUxYWE1OWE0ZTI5M2UzZjc3ZjY1MCBsZWdhY3ktdHJ1bmsKKzI4MDMxIGYzZTY5YjlhY2M0MDZiM2UxZGYwZDE0MzIwNDIzMjEyMjAyM2E1MjQgbGVnYWN5LXRydW5rCisyODAzMiBkZGNiOWNlMDQ1NDY0OTYzMmRiMjhmYjY2NDY0MzM0N2E3NmFjNWJlIGxlZ2FjeS10cnVuaworMjgwMzMgMGRmOWE5YzA4YzEzOWU5NjFkM2YyMjA4ZDJlMTMxNjA4NDA5Njg5OCBsZWdhY3ktdHJ1bmsKKzI4MDM0IDdmODk2N2Y1OWNmODJmMGYyMjBkN2RlM2RjY2U3OGM3YWYxMTFhNzAgbGVnYWN5LXRydW5rCisyODAzNSA0M2NhYTIxMmI5NTljZjdiMGE5YTg1NzA0Y2NiZmIzMjQ1MTU5MjEwIGxlZ2FjeS10cnVuaworMjgwMzYgMTEwYzZlZGFmNjJmMzg1OGU0ZDYxMWE2ZTgyYTk0NDg5NDdlZTdkYSBsZWdhY3ktdHJ1bmsKKzI4MDM3IGY2YTk3Y2QzYmEyNGI0NTU3ZTA3M2VlMGJhMGUwYjY5ZWJlOWVjMmUgcmVsZWFzZTIyLW1haW50CisyODAzOCAxZWJjMTI4ZTQ4NDJjMjg0YTJjNGM0YjRmNzc3Y2I2NGIzNjVjYTU3IGxlZ2FjeS10cnVuaworMjgwMzkgNzc4MDkzNTMzYTQ2Mzk5YWJiM2IxMDdmOGI0OTE0MDZhNzlhNGY2OCBsZWdhY3ktdHJ1bmsKKzI4MDQwIDdhZTNkNzQ4NjgwMWU3ZmJlZmNjZDc3NGJiODM0NjBkNjFjMzk2MzcgbGVnYWN5LXRydW5rCisyODA0MSBkYTkwNjUzZmMyYzZlYmNlYjBjMmQ0ZWY4NzBiNmJjNGNjZmUzZDA3IHJlbGVhc2UyMi1tYWludAorMjgwNDIgZjMzYzAxY2M0MTRjODk3NTQ1NjQyMDk0ZTliZDQ2ZWVjMDdiOWU5MSBsZWdhY3ktdHJ1bmsKKzI4MDQzIGE5ZjI1NjdjMmY4Mzc2NTgyMTdlNmRjYTMyNzU3ZWIxYWY5OTYxYmMgbGVnYWN5LXRydW5rCisyODA0NCBmYjFkMGU1NWIxNTIxZDZiYWJkYzY5OGIxOGIyMzk2ZTBhZGZjNTU2IGxlZ2FjeS10cnVuaworMjgwNDUgYmVlZDFjMWU3YzZkZjY3NzE3MzNmZjJlMjQ5YTI4YzAyMmM1ZTgwNSByZWxlYXNlMjItbWFpbnQKKzI4MDQ2IDBkOTg2NjBlMzY1Mzk1ZGRkOTQ1Y2IxNzYzYTlkZWVkYmZlYzY3ZTAgbGVnYWN5LXRydW5rCisyODA0NyBhMGViOGUzODJkNzRjYjEyMmI3YjFjYTQ3MDAyYzNjYjU4MmFiNzk5IGxlZ2FjeS10cnVuaworMjgwNDggMjdkYTJiODFhNDk2YTkyNWUxMTFiNDViOGU3ZjM2NzhlOGY3YzAyYSByZWxlYXNlMjItbWFpbnQKKzI4MDQ5IDdiYTNlNWZiYWFkODBjMzMwYWRkYzdjNWY2Njg3ZjQzZGI0NWMyYWQgbGVnYWN5LXRydW5rCisyODA1MCA4Y2YwMDMzOGI3MjhkMzg3ZGNjYzEwOWUxMzRmYzgxZGU5MzczYmIxIGxlZ2FjeS10cnVuaworMjgwNTEgNGIzNDJlZDMwOWUwMmNmOWI2YmIyMmE3N2QzNmU5MDgzZmE2ZDU1MCBsZWdhY3ktdHJ1bmsKKzI4MDUyIDY5N2QyMjNhMmY3NjY2MDM2NmQzMjUyZDdmYzZmNWQ3Mjg4NjNkYzEgbGVnYWN5LXRydW5rCisyODA1MyBlZGY3NTcyMTNhOTJkYjAzY2Y4OGU3MTA5YWZlMGM5YmRlZDdhNTRmIGxlZ2FjeS10cnVuaworMjgwNTQgMjI0YzUxNmJjMTFmMWUxNDQ2ZWM3M2Q0YjkzMzhiMjAwZGYzZjA4ZSBsZWdhY3ktdHJ1bmsKKzI4MDU1IDlkODRhNWJkNzY3ZmE4ZDA2NTg2MWYyNDhlNDA5ZTQ1MjgxN2IzOTcgbGVnYWN5LXRydW5rCisyODA1NiBhYjVlZWEyZGQzYzAwYzA4ZDE0MTRkYmFmMThjYjBkMmRmZDg0ZDQ3IGxlZ2FjeS10cnVuaworMjgwNTcgZmQxYjVlZmEwY2UzZWFjYzg5MzJjODUwNzIxZDQ0ZDExMjBlMjZkYSByZWxlYXNlMjItbWFpbnQKKzI4MDU4IDFhYjI3YzE3NzBkZjViODY5YjdkZTdjYTA1MGIwMTAxMWI1OWYwZmIgbGVnYWN5LXRydW5rCisyODA1OSBmNjcyZTFkYmFkOTIyNDExYjQzMmM4MjgyMTEzNmExYzg1NWZlZDMzIGxlZ2FjeS10cnVuaworMjgwNjAgMThjYTRlNzgzZjk4N2JkMzNhNmM1MmRkMmVmNTdkY2I2MGExZmZhOCBsZWdhY3ktdHJ1bmsKKzI4MDYxIGU2MWIxMThlOWNhYjI5MjZjYjU0ZWJmZTIwYTRkZDljMjk0YjkyYTQgbGVnYWN5LXRydW5rCisyODA2MiA5NTU5MTRiMGE0ZDY0NmU3OGIxYWI4MGQ3Y2QwNmUyMjYwNWNkNDU2IGxlZ2FjeS10cnVuaworMjgwNjMgOGJjMjY1YjA4NGQ5N2MxZjdjZmYzYmZlNGIyMTE4ZjFlYTQ5YjM3MCBsZWdhY3ktdHJ1bmsKKzI4MDY0IDU5ZDkyMjg3NzhhZDYzZThiZDc2OGYwMmE2NWQ3ZmIxY2M0NTA2NjYgbGVnYWN5LXRydW5rCisyODA2NSA3MjkyODdmN2ZjMmU1ZmFiMDA0MTUyOWQ5NWJkNDBkYzA1Nzg2MDZmIHJlbGVhc2UyMi1tYWludAorMjgwNjYgMmY0MTFmMmQ3OTFhZGU3Njk2NTAwZGZhNzk2NGMxYThlMjc0NjA1OSBsZWdhY3ktdHJ1bmsKKzI4MDY3IGE2MTg5M2Q3Y2VmMjUwY2QzNGRjMjE0OGMwZmY4ODkxOGQ4ZTA1YzUgbGVnYWN5LXRydW5rCisyODA2OCBiMjY1ZTc2YmFiODgzMjkzNDFiYTg0NDdhNTJlOWM5ODNiODc2NTNlIGxlZ2FjeS10cnVuaworMjgwNjkgNmE2ZDAyYmUzMjFjY2QxMDE4MjM3M2M1MGI5MmUwNTJiNmE3YzYyOCBsZWdhY3ktdHJ1bmsKKzI4MDcwIGQyNWNmOTRkMjBiMWVhZWViMDg4OGRjNjIxYzIyNzA5NGMxMzhmNGYgbGVnYWN5LXRydW5rCisyODA3MSA0ZmJmNTM0MjExYjk3Yzg4MmMwOTg0NGJjMDA0YjE2ODBhZjExZWM5IGxlZ2FjeS10cnVuaworMjgwNzIgNTc5ZjA5YzBmZGJjZDkyYWRkODY2M2M0MmI3NjAzMWM2MDMyZjU1MiByZWxlYXNlMjItbWFpbnQKKzI4MDczIGJkYmE3MmZmZDIxYmY5ZDYyNjc0YmIxMDYzYmI3ZDdmNjFkNjZhNGIgcmVsZWFzZTIxLW1haW50CisyODA3NCA5NWM0NjIzZjgxODUwOGYyZmI5NDRmMGE3MmYzMGE1MGQyYTc0MDJlIGxlZ2FjeS10cnVuaworMjgwNzUgNzBiNjc1MzExN2NjMDFiZDdmNzc0MjQ3NmEzOGJlMGNkOWJhMDRiOCByZWxlYXNlMjEtbWFpbnQKKzI4MDc2IDY0N2Y5MzY3NzUwZTg3NDAxMzFjNDRkMWNhZWQ2YTk4ZDg1Zjc4N2UgcmVsZWFzZTIyLW1haW50CisyODA3NyA2ODhlZWZiYTA4NjliYjVkM2YyYzgxNmE1MDBlYWMyMDM1MjAwNTBkIHJlbGVhc2UyMS1tYWludAorMjgwNzggMzc5NmQzOWYwYjgwYzgxYzg1ZWRjOTdjNmQ0YjBhOWI5ZmM5NTdlNCBsZWdhY3ktdHJ1bmsKKzI4MDc5IDMyNjliZGQ2NTk4OGVmZjg5NzYzNzA4NGE4MzFhY2ViNWJlNDNhOTkgbGVnYWN5LXRydW5rCisyODA4MCBmZWMwYjBhZWYxNGJhNDg3ZTA2Njg2NGE4NmY0ZWIzOTVmODM4MTAzIGxlZ2FjeS10cnVuaworMjgwODEgOTgwNzY3YzZjZDk3NWI2MTdlM2EwN2NmMWI2ZmQ4ZmEzYTA1ZDljMiBsZWdhY3ktdHJ1bmsKKzI4MDgyIDQ3OWNiNWZmMmU2MDljNWEyMTdhODI5NDBiZmY5MzkzYWI3YzIzMTkgbGVnYWN5LXRydW5rCisyODA4MyA3MWRjYTdjNzZmYTIyNzkyYmU5M2ZiOTBjNGM0YmU3ZTkwOTI1YzFjIGxlZ2FjeS10cnVuaworMjgwODQgN2IxMGU3ZmY3OTRkYzUwMDBmYWVjYTFmMzA2MDJmZTFlZDgxYjI3MCBsZWdhY3ktdHJ1bmsKKzI4MDg1IDZkMjZkNGI5YzVhMzZjMThlNTUwNzM5M2IwZTg3ODJlZGI1MjYzYWEgbGVnYWN5LXRydW5rCisyODA4NiBhZWUxOGVhM2QyODQ3NjUzNTA3ZjJiMWFiMTY5ZTQxOGEzZGY0MTFhIGxlZ2FjeS10cnVuaworMjgwODcgMDQ5MmFkMWFjNjIzNWQxZmFmM2E4NDM5MjgwNWNjYzJhZWU1MTg1MyBsZWdhY3ktdHJ1bmsKKzI4MDg4IDU2NzcwNGJmYTU5NWE1YWI3YjRjZTcxYTk2YzQxNjJiMjQwMTc0MjMgbGVnYWN5LXRydW5rCisyODA4OSAyNzRlNDJhNjkxZTBjODQzNjUzZmY4YjJhMjRjOWM2YjJjOTQ5Y2QwIGxlZ2FjeS10cnVuaworMjgwOTAgMzY0OTNhN2M2MjUzOWJjYTk5NWE5M2IxMzY3MWY0YzRjZjkzMDUzNiBsZWdhY3ktdHJ1bmsKKzI4MDkxIGJlNDdkYjM4MzA3ZTE4MzFhNmI0ZjQ3YzZhZTYyODFlNWJhODExMTEgbGVnYWN5LXRydW5rCisyODA5MiA4YjQ3MDI4MTY0NWU2MDFkZjMyZGQwZGQ4NjVlN2QwMWMyMDBiZjRkIGxlZ2FjeS10cnVuaworMjgwOTMgNzM0Zjg5YzE5NGRkOWYxMDNlYzMwNGJhY2Q5ZWY4OGM0MzVlZjljZSByZWxlYXNlMjItbWFpbnQKKzI4MDk0IGRlYmNmNzIwNjdmMDU5NjdiNWQ3NTY0N2Q2MzQ0ZDFmMDk4MGJmMDYgbGVnYWN5LXRydW5rCisyODA5NSA5YzZmMGUxOTk5MDM1YTRmMTQ3NTUyNjI3MjE1ZDc1ZGZhNzRkNjhhIGxlZ2FjeS10cnVuaworMjgwOTYgMGNkYjZlOWJjYjUyMTRkYjM4NzBlNWI4YTZhMTQ1MmVkMDhjMzdhZSBsZWdhY3ktdHJ1bmsKKzI4MDk3IGEyOGM5YzMzNmFiNzExOTE3MWRiN2U1ZDZjYzM0NTkwMzVjOWQ1YTggbGVnYWN5LXRydW5rCisyODA5OCBlNzFiYmJhMGEwYjk3NjY4Yzc2ODQwZjRkNmEzMGRlOWJkYjNkNGE2IGxlZ2FjeS10cnVuaworMjgwOTkgODJlM2ZkYjI4MTY0NTBjMmNiNWVkZWQwZmM2ODBjOGQ1Mjk5YzAxMCBsZWdhY3ktdHJ1bmsKKzI4MTAwIGE5ODlhMmVhYTJhYzEwOTI1NTg0YjBkMjNmZjc4MzdkYzE0MDcyMTkgbGVnYWN5LXRydW5rCisyODEwMSBiYTMwMzhhMjdjMWUzOWI3NTVmNDhhZGViYTZjMTU2MzJiZGU5NTFhIGxlZ2FjeS10cnVuaworMjgxMDIgZWVmNzNlODgyM2Q1YWVmOTFkNDliN2VjMWM3MDFmOTc4NzNkOTMyNyBsZWdhY3ktdHJ1bmsKKzI4MTAzIDMxYjlkMzY5ODYxZDg0OTk3ZDk1YmQxYmE0NTQwMmI3NTFiZTNjMWYgbGVnYWN5LXRydW5rCisyODEwNCA4MGM3YTgyZDYxNDQ4OWU5NDUwNGYxNjhiYWQ2OGZmZjE4MGQ2MDNmIGxlZ2FjeS10cnVuaworMjgxMDUgMzQxMjhjY2YyZWU2MTkzYjJmZjQ3ZWFiOGZhNGVmM2U3MTIxZTllZiBsZWdhY3ktdHJ1bmsKKzI4MTA2IGEyZjliYjU0MjMxYjEzYTliYzczN2Y1YTEwNjA1ZTg5ZTI1MmEwMTUgbGVnYWN5LXRydW5rCisyODEwNyA2ZWI5NTg3MTZkOTdjODQwY2VkMmJlY2Q0OTM0MzM1MjgxMDdkYjNmIGxlZ2FjeS10cnVuaworMjgxMDggNDE4MWUzYTQyZDBhMjNkYWJkYTBmN2NmODlhMDlkMTQxMmIwNTBjNiBsZWdhY3ktdHJ1bmsKKzI4MTA5IDU2NGFiYjk4ZGViODljNGUyOWQ5YTdjNjlmYWI1NWIyODNiN2I4MzUgcmVsZWFzZTIyLW1haW50CisyODExMCBlNWJjNDcwZDFkMWUxZmUwNzY2Njg2YzI0NDk1YTBhNjZjYWY0YTllIGxlZ2FjeS10cnVuaworMjgxMTEgMGQ0NmU0Yjg5Y2FlN2E0ZWExZTNlZDRiMmFjOWVkMDZkNTE2YWQ0NSByZWxlYXNlMjItbWFpbnQKKzI4MTEyIDJkY2Q0ZDkyODE0NzAzZjk5MWRmNGVhNjhmZjJiMWQ4ZGQ3ZTE0MzggbGVnYWN5LXRydW5rCisyODExMyBhYThiZDBkYzRmOGExMDZmMDY4NDBhMzdhZTlhNTk0MjdlNGY3YzA4IGxlZ2FjeS10cnVuaworMjgxMTQgNmM5NjU4N2ExOTdmOWNkYTQzMmI4ZjUyNTRiZmVlMGJhNWI0ZDlmNSBsZWdhY3ktdHJ1bmsKKzI4MTE1IDExYzcwMTAzODgwNTY1MTkzZWE0YzVmMDc5ZTdiMjM2NmRkMmYxZTkgbGVnYWN5LXRydW5rCisyODExNiA0MDY3ODhjYWVmNmYyNmVjZjBkNTA3MWJmOTlmZWJlYzE2NDc0YTg0IGxlZ2FjeS10cnVuaworMjgxMTcgOTQyOWMzY2Y0MmE3MTJiZjQwYTBiOGYxNjhmYWQwZTg1ZjE4N2ZmYyBsZWdhY3ktdHJ1bmsKKzI4MTE4IGRiMjdhNDJjY2Y0OGFjMzBlYWExNzJiMTQyZGYyNjg4Mjk5MmFlNWYgbGVnYWN5LXRydW5rCisyODExOSA3NDE0M2RiNmFlMmY5N2ZiNmE1NDBhZjc1OGVhNjA1N2RkZTI2NGRjIGxlZ2FjeS10cnVuaworMjgxMjAgNGM3NDZiYTI0ZGUyMWM4MTBiNTBhNzlhYmYwNTdjZTMxNjg0ZWVlOSBsZWdhY3ktdHJ1bmsKKzI4MTIxIDM0M2U2NGM5MmViMjhlMDliNWUwYzc0OTQzOTYyMjM5YmYwY2ZjNDQgbGVnYWN5LXRydW5rCisyODEyMiAxZDNkOTgwYTMxODYwNDFjMDYyMzk2YjljZDU3Zjk5MjZhYTdiOWRlIGxlZ2FjeS10cnVuaworMjgxMjMgMTI5ZDhkMmUxOTA0YzcyNjk0NGMxZDU5YzcxY2MyZTZlMDdhNWM3NiBsZWdhY3ktdHJ1bmsKKzI4MTI0IDVjNzczMTZiMjFmNzBkNzU4Y2RiNjVjNWQ4OGEyMGZmMjNjODVkMTggbGVnYWN5LXRydW5rCisyODEyNSAzNzRmODc5YzVkOGJkOTdmMGFjNGJiZjljYzc1MWJhNDQ2YTE0NmQ1IGxlZ2FjeS10cnVuaworMjgxMjYgMmQzYzRhN2FlYzBhNzA2ZGY1MjUyYjY0NTQ4M2I0YjM4OWMxMjE5OSBsZWdhY3ktdHJ1bmsKKzI4MTI3IDUxMGU3M2FlM2U5ZTlkMTIzZWEzMzYwMmVlZjE0OTM3NjEzZmU2MTggbGVnYWN5LXRydW5rCisyODEyOCA5ZTJmNTM5NjM0ZTgwYTFlZDYzY2M4NjFlMDkxMmEwODBkNGVlMGJiIHJlbGVhc2UyMi1tYWludAorMjgxMjkgMTEyNWQ5NDg5ZGZhNDAwN2JlNjdhYmY3Nzk4ODg4NWFlNzUzZThiYiBsZWdhY3ktdHJ1bmsKKzI4MTMwIDY5MDc5YWM3YzUxMmU1NjBhODFjZTQwNzJhYjYzZWI2Y2IzMDRiMzUgbGVnYWN5LXRydW5rCisyODEzMSBiYmQ1ZjhhZjU4OGFjMTBjZjE0ZDMwYWY3MDk2OTQwZmE1ZDk2NzNkIGxlZ2FjeS10cnVuaworMjgxMzIgYjU2NDBlNzRhYTVjMjhiZWZjMTliY2ZmY2JiNDQ2YTg5MTUyNzU3ZSBsZWdhY3ktdHJ1bmsKKzI4MTMzIDNiOGE3MDdiNDFjNDYyZjBkOTBlNmZlMDliMGQzZGVjN2QwNjk1Y2IgbGVnYWN5LXRydW5rCisyODEzNCBiMmY3ZGY0Njc3MjIxY2NhZGFkYzU5MzY1YWVhY2RmMGU4NWRmNDcyIGxlZ2FjeS10cnVuaworMjgxMzUgOGQ4NTBkNThmMTA5YzdmNTdlZDQ3YWMyYzg3MDE1OGNjMGM1ZGU5NSBsZWdhY3ktdHJ1bmsKKzI4MTM2IGQ3MTVjYTlkYjNhYWEyZDE0YzA4NmEyOTUxZmYyYWM4MzNjOGRmNjEgbGVnYWN5LXRydW5rCisyODEzNyAwOWZmMGVkMzNlZmNiOTE5N2VhODRiN2U0Y2ZkOWIyODJlNjcwZjYxIGxlZ2FjeS10cnVuaworMjgxMzggYjAyNzNmMzk3Y2YxMjJkYmEyMzJhOWMzMjlmZWQwYTMxZTIxMDQ1ZiBsZWdhY3ktdHJ1bmsKKzI4MTM5IDQ5MjMxNjBlMDcwN2Y3YzNlNGZlMDFjNTk2ZDVlNTRmM2IwMWMwMWMgbGVnYWN5LXRydW5rCisyODE0MCBiMGQ1ZmI1NzdhYjYwMWNkYTM4YmFlZjQyNGZhYWY5ODk0ZTI1YjM2IGxlZ2FjeS10cnVuaworMjgxNDEgZmYwNWVlZjNhNmQxZWIwZDBhYzUwMzhkMWU4ZjEwNjEzMzY0YTgyMyBsZWdhY3ktdHJ1bmsKKzI4MTQyIGVhYTg3NjMyYjFlOGVkZjhlMmJlODNmMzNlOTAyZDI0MmRkZTZkYzcgbGVnYWN5LXRydW5rCisyODE0MyA1NjU2MDliYjhkODk4ZDNjMzc1YjYxZTU4Mzg5ODQzOWVjZjMwNjM4IGxlZ2FjeS10cnVuaworMjgxNDQgZWVjNjgzMjgxOGEzNzAwOWU4ZDcwYjNiYjkzYjRhMDRmNTUzYTI5ZSBsZWdhY3ktdHJ1bmsKKzI4MTQ1IDEwMzkxZDU4ZDE4NDExZTM3NjQwMjQyNjgwY2YwZGI4ZWYwMmMwM2MgbGVnYWN5LXRydW5rCisyODE0NiBlNzU2ODY3YWNlODEwYzhmYmNmNTk5NTkwYzI3N2UyNmMxZWEwMWYzIHJlbGVhc2UyMi1tYWludAorMjgxNDcgYzY1OWYwNGVlNDk5MzY4ZDU0NjM2MDE1ZDBjZWRhM2ViNTQzMWZiMCBsZWdhY3ktdHJ1bmsKKzI4MTQ4IDZkOTk3NGI0NWZlYTEzMzM5NDlkYWQ2NjZmNTY5Y2ViYzYxODllZGUgbGVnYWN5LXRydW5rCisyODE0OSAxYTMyNzBlMjZjMTYyZjQ5OWEwZjE2NDM1M2Y4NjkyMmYxZjkyMmE2IHJlbGVhc2UyMi1tYWludAorMjgxNTAgYmEwMzVmNGI0N2MxNTYwMmYxMTU0MDdjNDY1Mzc2NzhjYWFhMGMzZSBsZWdhY3ktdHJ1bmsKKzI4MTUxIDQ5MTY5ZDAwYWIxODIyNDNjOTRlYzlmN2QwYmVmMjZkYmE0OGYxNjcgbGVnYWN5LXRydW5rCisyODE1MiAxOWUwMTBmNzkyYTM4M2UyZWNiNzM1OWRlMDE4MTg5OGJmNzcyMTMzIGxlZ2FjeS10cnVuaworMjgxNTMgMThjMzViYjVmZTA3NDNmZjU3MWM4MDI2ZDRlN2I5YTcxOTlhYTg1NCBsZWdhY3ktdHJ1bmsKKzI4MTU0IGE0MzUxOTg4N2IxNzk0ZDcwMTdlMWE3MTc4YmNhZTc5YWJiOTA0ODYgbGVnYWN5LXRydW5rCisyODE1NSBjMjQ4YmVlNTJkYzZhNzhlOWQ4YWEwNjEzOTk1Y2U0ZGIzOWUzZTdkIGxlZ2FjeS10cnVuaworMjgxNTYgZGJmNmU1NjMwMjNiOWQ0ZjY3NTViN2VmZWM2ZGQyYTU2NTA0NmU1MiBsZWdhY3ktdHJ1bmsKKzI4MTU3IGMxZWI2Njg1MjVlMTFjZTQ3ZmE5NDdiMTAwOTkwZDM0YjAzYzQ4OWEgbGVnYWN5LXRydW5rCisyODE1OCAyN2FlOTc4YmVlNTg1NzM0MjlhOTc2NjIxMGQwZDUzODljMGU5ODAyIGxlZ2FjeS10cnVuaworMjgxNTkgOGFiMzAzMzc1YjMwNWU4Mzg4NTQ3ZTFkNGM3ZWNhODQ2ODdkZTc1NCBsZWdhY3ktdHJ1bmsKKzI4MTYwIGM4OGQwODQ4YzVjOTMwYzI2YzAwZGJiMTFmNTgzMTE4MjBjOWY3YzEgbGVnYWN5LXRydW5rCisyODE2MSA5YzI1YWExM2MzNmUxYzkyYjkwNGVmMDMwYjc4YmQ2NTc3Yzg3MDZlIGxlZ2FjeS10cnVuaworMjgxNjIgYjUwNDgzNTY4NWMzNGVhNzNlNzIwZTY2ODAwMzhhOGRiODkyZDgyZCBsZWdhY3ktdHJ1bmsKKzI4MTYzIDI3ZWNhNDc2NjkzN2FlZjRjYmUyZmI5ZWRkOTliNTYyMzQ4OWQwNGIgbGVnYWN5LXRydW5rCisyODE2NCAzZDIzMzUwOTRiODhjMTdmYTZiNWY2ZDA4NTQ5ZGNjNDJiMjVmYjhkIGxlZ2FjeS10cnVuaworMjgxNjUgZGNmYWJlNjVjMjJlNWIyYjY4Y2UxNTUzYWUwNzI0OWU1ZTlmOGJjMyBsZWdhY3ktdHJ1bmsKKzI4MTY2IGUwNDMxZDljNDQ3NDIwMjdmNzI4YjVjMzI2MGViYjliODQ5NGM1YjIgbGVnYWN5LXRydW5rCisyODE2NyBjY2Y2NmExYWEwYjg0NDI5ZDU1NDhkMmI1M2Y2MDE5ZDUxNzJhZDgwIGxlZ2FjeS10cnVuaworMjgxNjggNWVkN2M5NzdkMmE5NmRiNmQ0MDBjZjlmYTVkNmU0ODdkMWVlM2MyMiBsZWdhY3ktdHJ1bmsKKzI4MTY5IGYwYmQ1Y2Q0YjE3MDZiMzM5ZjBhMTM3ZTRhZWYyOWU2YzYwOTBjMWIgbGVnYWN5LXRydW5rCisyODE3MCA0Y2FmZDlkYmM4YjQ3OTE2ZTkyMzU2NDIzOGFhOTM2ZWJhMzA5MDllIGxlZ2FjeS10cnVuaworMjgxNzEgNThlYTQyMGRkYzVlZWFkZTBlMmZmYmNiYTA0YmMyNGEwZjMzZjQ1NyBsZWdhY3ktdHJ1bmsKKzI4MTcyIDI3MjIwNTdmZmU4NjAxMDk5NzQ2MTBhYzYxNmM2YjQzNjI2MmI5ZWEgbGVnYWN5LXRydW5rCisyODE3MyBhY2IyNTg1NDVhNWMxMjU0NmI0NTE5YzAzNDU0NDM2OTI5NjdhZDQzIHJlbGVhc2UyMi1tYWludAorMjgxNzQgMGFmYWNmNWRjNDJlYWJmOGIwYzI5OWQwMTdlMjA4YTkyMzAzZTY1ZSBsZWdhY3ktdHJ1bmsKKzI4MTc1IGQ3NWJkOWU1YzRkOWMzZDg0ZDUzMTg1MDE4ZDhjZTRhMTY4NTE1MTQgbGVnYWN5LXRydW5rCisyODE3NiAxODI0OTgzZmQ5NGE3NDQ4NDhhMzJkNDJjOWEwYTNmNTMzZTUxZmVlIGxlZ2FjeS10cnVuaworMjgxNzcgYzYwZTg5NWQxMTI1YjM0ZGIyODEzMzRjODVjMWU5ZGRlZDExNjk4OSBsZWdhY3ktdHJ1bmsKKzI4MTc4IDgwMWE0NGFiMmFhZTY3MjE4OWRjNzhlNDNlM2UzYzY1YzlhZmIxYmYgbGVnYWN5LXRydW5rCisyODE3OSA5ZTdlYzJmNWExYmQzNzNlYmI4MWJjYjgyYjBlMTU2MTBiZmI0YjYzIGxlZ2FjeS10cnVuaworMjgxODAgNmM2ZGY2OTIzNmIxZDI5NWE4NjZjYzllMjdlZGJhMDYzM2IzODdmZiBsZWdhY3ktdHJ1bmsKKzI4MTgxIGZlMzQ3MmYyZjhlYjcyMmQ1ZWUxMzg5MWYwZmY4ZDlkODlkNzNmZDIgbGVnYWN5LXRydW5rCisyODE4MiA2OTZhMjg0NTY5ZTY0Y2I4YTEwZjZkMzdmOWEzNjc3YzVlYWRlMTkxIGxlZ2FjeS10cnVuaworMjgxODMgZjFkMThmY2Q1NmU2OTYyODU5OTJkZDI2MWRkMjc2MmMxYjUwZDIzNCBsZWdhY3ktdHJ1bmsKKzI4MTg0IDUzY2I3MTYzODg0MWU2ZGQ4ODM5NTI2ZDc1ZTgyNTg5ZGY1MjkyNWUgbGVnYWN5LXRydW5rCisyODE4NSAxZmUwNjY1NWM1MGM5NTllM2VlYWQ0ODE0M2ViNjg1ZTFjYmUxZWVkIGxlZ2FjeS10cnVuaworMjgxODYgZmFlMzg2ZDVlMzU0NTZlNWFiMTllMTlkMzE4ZjliMWExNWQ2YWE0ZSByZWxlYXNlMjItbWFpbnQKKzI4MTg3IGMyMzg1M2Y3ZWJlYjllMDVjZWIzNThjYmVhMTFhYTAwYzFhNmUwNmQgbGVnYWN5LXRydW5rCisyODE4OCAwMWQ2YzUxNDZmZjlhZWNhMmZmMzEwNzRjZGRlZjBlYjViZTgwMzcyIGxlZ2FjeS10cnVuaworMjgxODkgY2VjNDFlMzc2MWFjM2U0MzQ4YzVjZmQ4MzcxZDY1MmFkNjNhMWEzMCBsZWdhY3ktdHJ1bmsKKzI4MTkwIDRkZTlhYzBlNDE3MzY2MWJlMWYxZGUzMjExNDY5Y2IwZmZlMWEzNDYgbGVnYWN5LXRydW5rCisyODE5MSBmMGQ2M2FhMWRmYzdlOTA5YTJkMDNhYTI2YTcwOGRmM2U0YjYzZGJmIGxlZ2FjeS10cnVuaworMjgxOTIgMGY2MWUwNzQxNDdmYjFhYWZjYTI0NzgzNWE3NzBkMjAwZGE2NjQxMiByZWxlYXNlMjItbWFpbnQKKzI4MTkzIDFmZDM4OTAwZjUzYjg2MTBlZTlmMjBmZmIzNmFhNDAxZjhjNThkMzUgbGVnYWN5LXRydW5rCisyODE5NCBmY2JkZTIyNjU0NWNjMzhjMjYzYjVjMzc1NDE1MDMzNjVjNDQ3ZjVjIGxlZ2FjeS10cnVuaworMjgxOTUgODI1OTQ4YzIxZjBkYzEzODg1Y2I4MTBlYjMyMTQzNjU2NTQzYjYzYiBsZWdhY3ktdHJ1bmsKKzI4MTk2IGRiZjRjYzU2MDg5ODgzZTA3OWM3MDhlM2U2OGQ2NzdkZjJlMzYyNzkgbGVnYWN5LXRydW5rCisyODE5NyA0YzQ2YjNlZGFhNTg3YzBlMWY3NTBiMzk0YjkwMTJkOTgzM2Q5ZDcwIGxlZ2FjeS10cnVuaworMjgxOTggMTk1MWIyYzY2MDQ0MzhiMTMyZmIxODM3OGY4ZjIwMmYwZTgzOWZmMyBsZWdhY3ktdHJ1bmsKKzI4MTk5IDFjNjNkMzA4MjY1NjllYTE3NDY1YjkwNWUxODg2OWNiN2IxMmQxYTAgbGVnYWN5LXRydW5rCisyODIwMCA0NTJkNmE5MTYxOTYyNDYzZjU2NWVjZDkxYTRjNjI3Zjg1Y2U4Y2I3IGxlZ2FjeS10cnVuaworMjgyMDEgZGU3MWU2ZmU2NGIwNTI1OTQ5ZDMyOTU5OWMyYmZkY2U2NzJlMmY0MCBsZWdhY3ktdHJ1bmsKKzI4MjAyIDZhOWVhMGMyMmNlYTFmOWFiMTA4OWFhODUwOTUzZDNlZTE0YjQ2YzMgbGVnYWN5LXRydW5rCisyODIwMyA0NjFhZmRiNWNiOWVkZjYzMDZkM2VlODdhZTMyNzgwNmRkNmQ0YzM2IGxlZ2FjeS10cnVuaworMjgyMDQgZDlmZjk3Y2U3NWJiZWQxZTc2NzM5NzhhMTM3MGZjN2FkMTQ2NjM3MSBsZWdhY3ktdHJ1bmsKKzI4MjA1IDkzMWZiMzcwMGQwYmE5MWI5MDVlY2QxMjhhNzhlMTcwYTk1Njc4YTAgbGVnYWN5LXRydW5rCisyODIwNiA4NjI2OTViOTIwZmRkODhmOGE2YjM3N2UwMjNiOGQ3MzE4ZjlkNGYxIGxlZ2FjeS10cnVuaworMjgyMDcgYTYyY2VlNGVlZDk2NmYxZmMyZDNkOTJjOWRjNGU1MTQ0Y2RmMDAxNiBsZWdhY3ktdHJ1bmsKKzI4MjA4IDE4Y2JhZGQ4MDcxMjVhZWQ0MmIxOGExZTdiYmE2MDNiY2Q1MzViZWYgbGVnYWN5LXRydW5rCisyODIwOSAzMGNmZjljMWJmNjkzYzA4Y2VhMmE5NmVkM2UxOTE3ZjQ3MjE2NjgzIGxlZ2FjeS10cnVuaworMjgyMTAgZjE0N2I1OTQ0MjQ0NjdmMTQyNzkzOTQ4NTdhNDhlZTU4NGUzODMxMyBsZWdhY3ktdHJ1bmsKKzI4MjExIDliMDZmNDRiZDRhMzRkODczZDZkNWMzNTQ4NjQxOGY3MmY3OTljNzggbGVnYWN5LXRydW5rCisyODIxMiA2ODVjZDUyYzRjNDM4YzNmZjU1NDcwNzAyNTc1MGFhMWJjYjBlNDlhIGxlZ2FjeS10cnVuaworMjgyMTMgYWI2M2FmM2VjMzQ5NWNiYzdjODkwM2EzMWM3NGI4MGMzZDYyYTJjNSBsZWdhY3ktdHJ1bmsKKzI4MjE0IGM3NWNkYzQ3MWIyMjQ0YThiM2E3YzVlMWNlOTRhMWFhM2U1ZjBiOWMgbGVnYWN5LXRydW5rCisyODIxNSA3Y2U4MmU5ZDA4Yzc4YTUwNTkwYmY4MGZhMjIxOWFhNDk0YjY3NTkzIGxlZ2FjeS10cnVuaworMjgyMTYgNTg2MjNjZTk0ZDQwNmM0OTE0ZDU5ZGU1MDVlNzg5Y2FjYTk2YTU2OSBsZWdhY3ktdHJ1bmsKKzI4MjE3IDc0ZWQ0NTcyMDhjMWEwZjUzNDg5N2NjZjg2M2E1NDM0YWNmZjBhZmUgbGVnYWN5LXRydW5rCisyODIxOCA3YjdkODgyMGFlMzgwZjA5ZTYwYmI2YWNlZTE5M2RjMWY2ZDMxOTc4IGxlZ2FjeS10cnVuaworMjgyMTkgNjQyMGI5N2ViNTlmMTdjMTFhYmNhNGI0Nzk3YThjMjgzNzQyNDkxZCBsZWdhY3ktdHJ1bmsKKzI4MjIwIDUwZmFhNjgzNWRkYzQxNzk5NDIxMDIyMTk3YjgxYWU4NzY4OGU1ZWQgcmVsZWFzZTIyLW1haW50CisyODIyMSBjNDU2NDJlMWRjYTkzYzUzNWYyZjU2NzBlMzI5YzUxZTQzY2RjN2MxIGxlZ2FjeS10cnVuaworMjgyMjIgM2FlOGUzZmY3ZTNmMzQzN2NjNmU5MWNiOGJiMmRlZjgyNGIxZTFhOSBsZWdhY3ktdHJ1bmsKKzI4MjIzIDMxZDI4NjAwODllNjAwYjZmNGIyMWQ1ODk2MTI5ZDgzYjQ1NGVjMWMgbGVnYWN5LXRydW5rCisyODIyNCA0ZTQ0ZmFiZTBmYTAxN2JiODViMjUwMWM0MjE2ODIxMGQ4YjNlZGYyIGxlZ2FjeS10cnVuaworMjgyMjUgMDExMTM4YjVmMzg5YTI4NDhlMjVlYjYyMTNjZTU3ZmQzNGJlODlkZCBsZWdhY3ktdHJ1bmsKKzI4MjI2IGFlOWM5ZjkwYjRiMDFiZmEwYjE5MTFiNTk3N2QyNWQ2Yzk4Yzg3M2EgbGVnYWN5LXRydW5rCisyODIyNyBkM2Q3ZGU3MDNhMjJkYWFjOGQ5ZDk3MjdkNjZmOWFlYWEyODZkMTliIGxlZ2FjeS10cnVuaworMjgyMjggNTg4ZDE0NWM0NGRkOWU2Yzk2MTdkOWU3MjAzNmY3OTMxZmY0NjA2NCBsZWdhY3ktdHJ1bmsKKzI4MjI5IDdjOTFkMzAzYzU2M2ViZTg2YTgxZDk1ZWE2ZTZmNGNlODVhOGFjOTQgbGVnYWN5LXRydW5rCisyODIzMCBjMDAxZTVhMTUzNjlmMzdhN2JhMTIxZTIwOTdmNmFlODYyODA4Mjk1IGxlZ2FjeS10cnVuaworMjgyMzEgYTdkYmU0ZTdmNWRlZGNjMmYwZmMzODUzYzA3MGVlZjQyNjNiZThmYyByZWxlYXNlMjItbWFpbnQKKzI4MjMyIGU1YTA3Y2M4MTU1OTA1ODRjNWFjYTNmMWFiZmQ0YmU5MmY1ZmRjZjkgbGVnYWN5LXRydW5rCisyODIzMyA0Y2Y1MDI3MTZkMTVkNTNmZWZlNWNkYWFhYjJjODBjZTMxY2Y4MDQ0IGxlZ2FjeS10cnVuaworMjgyMzQgMzFlZTMyYzIzZDI5YzU5ZjlmMzEwMzNmYjdlMzViNTExNDIzZDZkYSBsZWdhY3ktdHJ1bmsKKzI4MjM1IDhlM2UwZTExZjE0Y2FjYTMzMzU0N2FiZWQzZmJhNGQzNmU3OWJlMTQgbGVnYWN5LXRydW5rCisyODIzNiBhNjAyZTQ4NzhiNGVjZDBjYWFiMzk0NTljNDJkZjQ5ZGJjZmE5ZmZlIGxlZ2FjeS10cnVuaworMjgyMzcgNDUzYzg4Zjk2M2VjMzI2Mzg4ZTg1ZjM1ZDVmYjM4ZjBlZWExOGJmZCBsZWdhY3ktdHJ1bmsKKzI4MjM4IGNhNThmNWE0NTU4YjhmYTkyOGMzZDJlMGJhMzY5MTRiNzQzZmFkMWYgbGVnYWN5LXRydW5rCisyODIzOSA2NGY0ZGQ3NzBjNjdkYTY1MDlhOTIxODQxOGY4NGNlMjc0ZmQ1YmNkIGxlZ2FjeS10cnVuaworMjgyNDAgZTM5OWQwYTg3NWI3ZTFmZjM4OTI0Y2RkZDhlNDczYjg4ODM2YTY0MiBsZWdhY3ktdHJ1bmsKKzI4MjQxIGMwMDRiMmJjZDU0MjFjNDQ0N2UzNDVlZjllZTQ5ZGYxZWVlYzkwM2IgbGVnYWN5LXRydW5rCisyODI0MiAxOWYyNWJjZjVhMDAyZWQxYmU3YmZlYzE5NDEzMWZkNTVmYzM0YjA0IGxlZ2FjeS10cnVuaworMjgyNDMgYWVhNjhjYjM2ODU5NjEzNGNjMmE1MWEyMzFlZTY1YmE5YjE3YWEwMSBsZWdhY3ktdHJ1bmsKKzI4MjQ0IDE3ZTk1Y2MwNmY2OTNiMDZjOGRjZjgxMmMxZjY0YzFkN2ZjZjI4YmIgbGVnYWN5LXRydW5rCisyODI0NSAyZmY0MjY4ZjI1ZGM3MzhhOTg5NjAyMDU2NmVlZjFiMmFiNDQ3MTMyIGxlZ2FjeS10cnVuaworMjgyNDYgM2FmOGQ4MWQ3Zjg2ZTQ4YWY5YzgzZDE1OTMyMWNiNjgzZTE2YjQyMCBsZWdhY3ktdHJ1bmsKKzI4MjQ3IGM5YWY4NzUwNDhlNzI5NmI1MGY0YjcxYjdmYWQ3MjBiNTJiYzMwNjEgbGVnYWN5LXRydW5rCisyODI0OCAxMWMxY2M5N2I4N2EzMWY2ZjYzNWRmYTUxM2VhMjgyZTI5MDc1YjdkIGxlZ2FjeS10cnVuaworMjgyNDkgY2Y1OTI4ZmFiMTA4ZGU5ZmJlMDI2MzJkMDcxNzZjNzE3YzJiM2FhNyBsZWdhY3ktdHJ1bmsKKzI4MjUwIDY5MzlkNzIxODJlNmM0OTkxY2M3NGU1NGM3NGNlNTAzNDk3MzhiNWUgbGVnYWN5LXRydW5rCisyODI1MSAxMGE0ZWM0NTU0OWQwZDg5NDkxMGRkYTk4MThiOTc4ODE5MzU0NWUyIGxlZ2FjeS10cnVuaworMjgyNTIgODczZjEyZjY4ZTNiMTAxNDliY2Q3ZjNkOThkMjk1ZjZmZmI5OWNlNyBsZWdhY3ktdHJ1bmsKKzI4MjUzIGRhY2QxMGQ0NmU1Mjk0MDViOGNmODRlOWNkZGZlMDkwMmY0NmNmOWUgbGVnYWN5LXRydW5rCisyODI1NCAzYzljNTZkOTdlNTVlNzIzYjZlNzNiODNiMTdkZmFjZTVhYjJiOGRmIGxlZ2FjeS10cnVuaworMjgyNTUgOGFiNDZkZjMxODJlNzk0MzNjZmIyOWU3MTA4MmExZWNmN2MxYWQwZCBsZWdhY3ktdHJ1bmsKKzI4MjU2IDM0Y2M5ODg5MmU4OTJlNjczN2VlMWIzMTQzODgwMmU0MmM3MWUxZjUgbGVnYWN5LXRydW5rCisyODI1NyBhZDM2MWUxZDU0YmJhM2UyZjRiMTI1MDNhNmRmZGM0YTQwMTRkZmE3IHJlbGVhc2UyMi1tYWludAorMjgyNTggZTlkZDNlOTFlNjUzMTBiNzA3ODlmMDlhZjgwNzVjM2E3MTYyOGQ4NyByZWxlYXNlMjItbWFpbnQKKzI4MjU5IDEzNmI4NTM2MjJjYzkyMzQ3Njk2MDc3YWUzMmQ5NDcwZDg5ZmUxOGYgbGVnYWN5LXRydW5rCisyODI2MCBiZWQ1ZDVlNTM2YmMwY2VjMmJhZWM0MWMzZjdjNGRmZGU4NTFmMTRhIGxlZ2FjeS10cnVuaworMjgyNjEgODc0NDhhMjI4Y2NhMmJlY2IyNzJiMzg1NjY5M2NmN2ViOWEyMjNjNiBsZWdhY3ktdHJ1bmsKKzI4MjYyIDBlZjZjMmFkMDc2YjEzMzkwZDY5Yjg1ZjE4YWFiMDM4YjZmZmI2ZTMgbGVnYWN5LXRydW5rCisyODI2MyA1OTI0MDZlMGM5YjAxOWI2NjQyYWM0YjAyZDZkOThiYjliYTNlZjk1IGxlZ2FjeS10cnVuaworMjgyNjQgZjI0NDc2ODZlYzVlYmU3ZjE5OWQ3ZWUwOTYwY2Y4Y2Y3YmNkNWU0MyBsZWdhY3ktdHJ1bmsKKzI4MjY1IGU0NWQxNjExZTg2OWQ2NDBkZDUxMzdlOTJkMzhhZmFlMzEzMjlhYjggbGVnYWN5LXRydW5rCisyODI2NiA0ZTc5NWZlOWY1NGIyMWI4ZmU0MDNlMzFmZDlhNTBlZjJmZDgzZTBjIGxlZ2FjeS10cnVuaworMjgyNjcgNWI2NTZjM2UxMzJiODY3NDFjZTZjNWEyMzMyNmNjN2E1MTI3NzFiNyBsZWdhY3ktdHJ1bmsKKzI4MjY4IGEzZWJkMTIzM2MwMGVhYmY5MDliZTgyMjIzZmZiZDVmMThmYTkyNWUgbGVnYWN5LXRydW5rCisyODI2OSBlNTAxNGFjOTdiYTE4NzlhNmU0OTQ2NTk4MzQ0NjU0NWJlYjk0YmJmIGxlZ2FjeS10cnVuaworMjgyNzAgYjU0Y2ZhOThiNjZiOWIzNGM2MzQ3MjViOGZmMzUwMDlhMDI0MDBmNyBsZWdhY3ktdHJ1bmsKKzI4MjcxIGYwZGJkNWI0OWQ4YTAxZjUxOTdkMTA2YzQxZGVkOGM5NzM0MGQ0MjAgbGVnYWN5LXRydW5rCisyODI3MiAyNTVkMWQzZTY2YTNhZDliMmQzYmIxYTE2MDZkYmYxYWFjNDlkNGUxIGxlZ2FjeS10cnVuaworMjgyNzMgMjMwNjAwMWY2ZWFhMzUwZmEwNTk3MjMxYjY4YmRlNDBjNGQ4YzQyMSBsZWdhY3ktdHJ1bmsKKzI4Mjc0IDljYTg5NjQyMzM3NDMyY2QzOGFjM2M3YjZlYzZlYWYyYmE5ODQwMDQgbGVnYWN5LXRydW5rCisyODI3NSBkZjIzMjZhNDg5NGRlZTc0M2FhYjk0YTdlYWY5MDU1MDkxODQ0MGViIGxlZ2FjeS10cnVuaworMjgyNzYgMjU4ZTBiMTM0N2MyYWQ4NjhkM2I2Nzg0MzhmODdmOTQ1MzIyMTI4OSBsZWdhY3ktdHJ1bmsKKzI4Mjc3IDliZWNmZWY2ZTMxYTZiZDcwN2VlZWJjNzY2NzNmNmNjNTQ4Y2ZmODIgYXN0LWJyYW5jaAorMjgyNzggNGYxM2U1OWZkMGEwM2Y5NjUwYWY3ZjZkOWQyMzJhOTdkMmVjYWUwYyBhc3QtYnJhbmNoCisyODI3OSBjZjU2MWU2MTIzNzhjMWEzYWZjOWRkMjRlYzFkZGZlZGE4NjM2MmM0IGxlZ2FjeS10cnVuaworMjgyODAgOTlmNWQxOGJlNTg4MDM4NmRhNjQyNzUzMGI5ZDhiNzUxNTgyNzE3MyBsZWdhY3ktdHJ1bmsKKzI4MjgxIGI1MTdkOTI5MmNlN2MwZjFmMjYzMmEyM2Q5Y2ExNzI1ODY2NGI3NWIgbGVnYWN5LXRydW5rCisyODI4MiA4MDg5YmEzOTc0ODBlNDBjY2RiYjY1NTI1OGU2NGRmODA5OWYxNmU0IGxlZ2FjeS10cnVuaworMjgyODMgNzI1MzM3YjY4Y2EwMmIzYzFhODA3OTlmODM4ZTgxY2Y0MmFlZTM1NiBsZWdhY3ktdHJ1bmsKKzI4Mjg0IGZjNzQwM2UxMTg3ODMzMGMzYWQ0Zjg1N2RmYWE1ZWNhM2NhY2QxZGMgbGVnYWN5LXRydW5rCisyODI4NSBmNDg1MTA0ZTRlZTg1MmI0YzI5MWVjOWRkNjRkMjNmOTkzNWJiODc0IGxlZ2FjeS10cnVuaworMjgyODYgMjM5YmRhYmI2M2FmOWQ3MTdmZGQ5YzcyZjQ4NTM5YzVkZTQzYjNlNSBsZWdhY3ktdHJ1bmsKKzI4Mjg3IDcxMGJlYmUyMTgyY2IxNDRhMTk5ZDJkOWYwMTdjM2RjZGUyYjQ5ZGYgbGVnYWN5LXRydW5rCisyODI4OCBkMzU0MWQ5MGQ1ZTA2ZTViZGIwNjQxN2Y3ZjY2ODU3ZDIyZjBmYWZiIHJlbGVhc2UyMi1tYWludAorMjgyODkgYWFhZTY5MzIxNzcxNzE4MzhiZGY5Mzc3MzA5NTVhY2IyOGNmYjU2OSBsZWdhY3ktdHJ1bmsKKzI4MjkwIDVmZjNkOGFhYThmOGEwNmIxODI5YTAzNDNjN2M3NmEwY2IzMjk0ZjEgbGVnYWN5LXRydW5rCisyODI5MSBjNGU1NTA3MDJhMjlhMzQ1OWRlZDEyNmZlNDA4YzJkY2Y5NmRiODBkIGxlZ2FjeS10cnVuaworMjgyOTIgODc5MTE5M2IwOWQ2NDE3YmU0ZmQ2MGViZTI4YjJmOGMzOGEzNTJkNCByZWxlYXNlMjItbWFpbnQKKzI4MjkzIDAyYjJmMDg4NWM1MjEwMjQwZGMyZmIxMzkxNDBiMjU3NjAyMDY0MWEgcmVsZWFzZTIyLW1haW50CisyODI5NCBkNzk3Y2ZhOGNhMGQwNDVkNWQzYWEwZTBiMTkwOTgwMWUwZjIyYTM0IGxlZ2FjeS10cnVuaworMjgyOTUgMjRmMWQ4NDVjZGI1NzMzMWFhZjVhNGQ3MTVlNjU1NmYwZDg1NzZmNCBsZWdhY3ktdHJ1bmsKKzI4Mjk2IDQ5MmFkZGI4MTJlZjExNzgwODFhOWYzMmRmZDFkNDRjNmE1YWI1MWEgbGVnYWN5LXRydW5rCisyODI5NyBkN2VmMmJhMWI2ZjVlZjBhYzFmNTk2MjhkZmU1NTZkYTk5M2Q2NmY0IGxlZ2FjeS10cnVuaworMjgyOTggYWViZjhjNTJhODQyZDQxZDkyYThlNjMwMDRjZWIwMGFjMzVkNzlmYiBsZWdhY3ktdHJ1bmsKKzI4Mjk5IDRlNGEzNDRjOWI2Y2U3YjBjNzFjYjUyODAwZTYwNDA4ZjhmMTQ4YWEgbGVnYWN5LXRydW5rCisyODMwMCA0NGQxZDBiNjIzYTlhZjc5NDJmZjdiMTU4NjIxNThkZmVjMTQzOGE3IGxlZ2FjeS10cnVuaworMjgzMDEgODg2MmJjNTk2ODVhY2Q2MzdmNWFmNDY2NGNiZjZiZmIwZGQ3ZDlkZiBsZWdhY3ktdHJ1bmsKKzI4MzAyIGM4ZDk1OTJjOWU3NDk3YTIxN2EyMDIwMDQ4NzE0OGVjNGI0ZDhkYWUgbGVnYWN5LXRydW5rCisyODMwMyAyN2YwZGVlYmYyNjQ4YWZhNTU3ZDZhNTRkMTM2NDllYmE5MjRiYWMyIGxlZ2FjeS10cnVuaworMjgzMDQgNjMxMGE0YTIxZWI4OTJjZTNmYjhhYjc0MTkyODE3MTRhNjVlYTkxNSBsZWdhY3ktdHJ1bmsKKzI4MzA1IGE4NjlkMmRlNTM2ZjhkMzBjYzZlN2M2ZmQzNTAxZjRiMjZlOWQ3N2IgbGVnYWN5LXRydW5rCisyODMwNiA4ZjhmZTk5MGU4MmMzMzRmNTBjYzZhNWZlOWRlZTEyYzQyYjhiNmNlIGxlZ2FjeS10cnVuaworMjgzMDcgMmNkZjNkMGRmYWJkNTAxMGE2OWE3ZGJkNjE3OGI3OTBmZTI2YWI3ZSBsZWdhY3ktdHJ1bmsKKzI4MzA4IGJjNjYwZjczNzk1Y2Q3Y2UwNzA5Y2RjODhhNzZhY2ZhZjEzOTgwNjkgbGVnYWN5LXRydW5rCisyODMwOSBmNTdkNmRiNDIzZjJkYmRiNDczYjhjNWU3NTE5YTQ5ODM5MDljMWMyIGxlZ2FjeS10cnVuaworMjgzMTAgZWNkNGFkYTI1MmJjMDlhZDlhODVmNDg5MWQwYWNkMzkzOTZmMWUyMiByZWxlYXNlMjItbWFpbnQKKzI4MzExIDY0MTc4NmJlYTEzZTJiNWE2MWE3ZjhlYTQyOWIyMGQ5NjVkNzU0NmIgbGVnYWN5LXRydW5rCisyODMxMiBhYWI3ZGViYzczYTg4ZTIxMzVkYzcxOGVjZDcyMjdmNzFmZjdkMDYxIGxlZ2FjeS10cnVuaworMjgzMTMgMzExNDVkNjY3YjE0YTVlNjY0ZDc0MWVjZjM4NWZlMzg2Mjc2N2U0ZCBsZWdhY3ktdHJ1bmsKKzI4MzE0IGIzZWZiZGNjZjdjNjRjMGJkNTdmNDZjMmI1MDQ0ZmM2MTA5ODkzNjMgbGVnYWN5LXRydW5rCisyODMxNSBjNmFkNjAzYmQyNjQ1YWVjOGJlNjUwOWYyZGY4MjhlZDZjMGIzNzA2IGxlZ2FjeS10cnVuaworMjgzMTYgNWFjYWU3MTljYjhhYmE1YzQ0ZWE4MzUzM2E2MTk0NDdlOTU1Zjg4MCByZWxlYXNlMjItbWFpbnQKKzI4MzE3IDVjMzg0NTdmNmIzYjg1YjZjMWI3NDE0ODMwNDZkOWQ0MDYyMTZjYjggbGVnYWN5LXRydW5rCisyODMxOCAzNWZlNWUzY2Y4ODVmNjQ2YTY5ZTEwYzA5MjRmN2MxMWExNzMwNDZlIGxlZ2FjeS10cnVuaworMjgzMTkgMGVlNDhhZWZhNDc0OWU3M2Q5MTczYmI5OWU3ZTYyZjYwYWI3NDg0ZCBsZWdhY3ktdHJ1bmsKKzI4MzIwIDU5YWNkNTAyODgwNDQ3ZjQwZTJkZDBkMzhiZmM0OGM3NjdhNmRhODMgbGVnYWN5LXRydW5rCisyODMyMSA2ODRhYjA2NDBlMDRmYTBmZmE4OTNjODVkYTNjMTNiNjI5NGIzYWIxIGxlZ2FjeS10cnVuaworMjgzMjIgMDFlMWQ2YWJjNTAxMjJmMjhlYmMxNDUzZTU4ZGE4MjliNTE4NmRkNiBsZWdhY3ktdHJ1bmsKKzI4MzIzIGUzZDk2ZTAwZGM2YzFjMzMzOWYzOWVmZTM0ZjVkNmRhMzczNDVjOGMgbGVnYWN5LXRydW5rCisyODMyNCA4ODY2ODZmYzkyYTk5Y2ZkMWQzMTQwOTA0ZTdmYWIyMGQ0MjczYTA0IHJlbGVhc2UyMi1tYWludAorMjgzMjUgMGQ1ZDhlMWNkYzIyY2ExNjcwNmRjMWNlNTAyZDI5NGRiZTY1MTI4YiBsZWdhY3ktdHJ1bmsKKzI4MzI2IDRjYjI1M2M1NTZiMTBhM2Q0YjlmNDFmNzMxZmNiNTkyZWJmZjg3ODcgbGVnYWN5LXRydW5rCisyODMyNyA3MTQ3OTcxNTZjNTEyYjk0ZGVlNDJmNDFiYzAxNmMyNGFlYjZmOWQ1IGxlZ2FjeS10cnVuaworMjgzMjggOGVlZjAzODUwZjU3NzY3ZmFjNzAwNDFkNWRkODM3NjkxZThlN2U1NyBsZWdhY3ktdHJ1bmsKKzI4MzI5IDVmYzQ2MDk4MTU4OTIwNTc1Y2RhNmI3NDk2NjZkMDc2NjhlZTFlMTggbGVnYWN5LXRydW5rCisyODMzMCA1MWMyNjk5NGQ4ZWM2OWE3MzA3OTg5MjMwZjM3NTkyNjg2ZDAwMjIzIGxlZ2FjeS10cnVuaworMjgzMzEgYTExNDMyMjRlZTBkMGY3Njk0YTk0NjhhYTE1NmIxZGM2MWE1MGFiZSBsZWdhY3ktdHJ1bmsKKzI4MzMyIDk0MDYwNWQ0MTU1ZmRjNjc5M2MxMDQ0M2VlODQ5NDhkYWUxZGVkZjIgbGVnYWN5LXRydW5rCisyODMzMyBkMmViMDA3NDQ4YTNlNjU4YWQ2NzI0MGE0ZmRmNjk5M2MyNWI2MTk2IHJlbGVhc2UyMi1tYWludAorMjgzMzQgYzRhNGI3NDJhZDZjNjVkYjNlMTdlM2M2ZmNjMDBhODdiMmYzMzM0MiBsZWdhY3ktdHJ1bmsKKzI4MzM1IDBkZDViY2MxZWUwYmQzZTk5ODhmMWY3ZjYyOWI2NGU0NWIwMGUwZDIgbGVnYWN5LXRydW5rCisyODMzNiA0MTlkNDdjNzcxNDM0MjhlZmQ2ZWMwNTViNmY5ZDA4YTMwMzFmZTRhIGxlZ2FjeS10cnVuaworMjgzMzcgZThmNzczMDdkOWM2YTI4ZDAxN2Y3ZjUxNWZjMzc4MGUxNjc0NTBlOSBsZWdhY3ktdHJ1bmsKKzI4MzM4IGMwZTk4MGFiNTRkYjNiZDk1MGE2M2QyNWVmMTExOTVkN2QwMTcwMzcgbGVnYWN5LXRydW5rCisyODMzOSA2MTdiZDU1YjRhNmVkYmMyNGY0Y2U1ZTdlYjIzNzg5M2Q0MGNkM2ZkIGxlZ2FjeS10cnVuaworMjgzNDAgOWVlNGY0Y2I5NzcwNjk5ODFhNDFiNDllNTk4MTNjYjZiNzVlMzI4OCBsZWdhY3ktdHJ1bmsKKzI4MzQxIDYwNjBjZjY2ODJjMDI1Njk4MzQyYjk1NDYzN2Y1NTFmNzVhNmI5YWIgbGVnYWN5LXRydW5rCisyODM0MiA2NDUwOGEzN2E4ZDViNTBjODFjMWUxOGU4YmUzNThiZDdjMWI2NTA1IGxlZ2FjeS10cnVuaworMjgzNDMgMjk0ZjdiZTI2MTlhNjAzMWVkOWNmMzc4YTZhMGFjNWQ1NWY0ZWVmNCByZWxlYXNlMjItbWFpbnQKKzI4MzQ0IDIxOWU3MDM4OTA3MjY3OTk3Y2RhNzM5MTk3N2JkMDJmZWQwNTRjOWQgbGVnYWN5LXRydW5rCisyODM0NSBlOTUwMDcwOWQ0OWM5OGE4NmQwNWMyZjZmZDNjZjViYTNjNzA3NGFiIGxlZ2FjeS10cnVuaworMjgzNDYgMmI2NmFkZGUwMjMwNjY5MjQyNmEzYzQ3ZDRkMDZiOTA4Y2U5ZGNiNSBsZWdhY3ktdHJ1bmsKKzI4MzQ3IGJiNmE3MWQzZmRjYjc1NWY4NzQ3YmMxNDFlY2U4OTQ4NDY0OWNlZTMgcmVsZWFzZTIyLW1haW50CisyODM0OCA2NzA0ODQ1NGFhMWU3NDY3OTM5ZDcyY2MwODY1YTg5YzMwNWJhNjMyIGxlZ2FjeS10cnVuaworMjgzNDkgZDEzNTUxY2Q2NjNlNTc3MmU4ZTMyOWJjYTlmOTQ4OGI0MTliMzI2OSBsZWdhY3ktdHJ1bmsKKzI4MzUwIDUzMDY0MDg2NTdmYzY2NGFhYzAyOTllZWVhNTAxZDkzYzg0MTFiZTAgbGVnYWN5LXRydW5rCisyODM1MSA1NGI2MDFkM2IyYTZkZDkxZjI2NWU0NjNjMjJlYmYzNjdmMTIyZTg0IGxlZ2FjeS10cnVuaworMjgzNTIgNzQxN2E2ZGM3MzY2NjJkM2ExYmFkN2E5MTE1YWY1ZTQzOGMyMjQ4OSBsZWdhY3ktdHJ1bmsKKzI4MzUzIDBjMjAxNTQ4ZDNkNGZlNTM5NWMyNjJhMDVlMTg4MzMzNjI0Zjc5YzMgbGVnYWN5LXRydW5rCisyODM1NCA1NDRhMzI2YmFmN2YyOWYxMjYzYjBjZTUzMDFmZGNmZDEwMTlhZmY5IGxlZ2FjeS10cnVuaworMjgzNTUgOGFkY2E1ZjliZmZkODZmZWM2MzJmNGVlYjk4OWY5ZTIwNDIxZDA0ZCBsZWdhY3ktdHJ1bmsKKzI4MzU2IDlmMjZlMGMwYzY5MjcxMDRiY2ZiNjJkMGIwMzM4MTliZDM0MmZjNmIgbGVnYWN5LXRydW5rCisyODM1NyAxMzM4OGNhZmMxNmU5NjMzYjNmMWQ1MjMwYjAwNmUxMzMwZDUzOTk0IGxlZ2FjeS10cnVuaworMjgzNTggMWJjYWZiYzY5Yzk2NzI3NWRkN2M0NzBhZTVjNmQ5ODgyZjhiODUyYyBsZWdhY3ktdHJ1bmsKKzI4MzU5IDZhMThiNGU4MzhlYWYzZjljNzUzMjI5MjNlMGI3MTFhZDJlYTQ3NGYgbGVnYWN5LXRydW5rCisyODM2MCAzMzBmNmU0MjI3NGY4Mzg3YzA4ZDU3MjRiNzhmMmViMjIxMjhkMGFlIGxlZ2FjeS10cnVuaworMjgzNjEgMDVkYTk1YmNkNzI0ZGZmN2U3OGU0N2U0NzM4MTE0MzY4NTdjOGU0MiBsZWdhY3ktdHJ1bmsKKzI4MzYyIGM1NWU4ZDZjMDkxZjAzM2NmN2VlYjYzNmRlNDM3YjU4ZGNlMjFmMWIgbGVnYWN5LXRydW5rCisyODM2MyA2MjgxMGJlYjlhZjQ3NzczMGJjZjA3ZmRjNzg2ZWM2NjRhMjA2NmYwIGxlZ2FjeS10cnVuaworMjgzNjQgZGM2NmViNGNkMTdhYzJhMDAwZmYxOTA2MGU4YTM4NDQxYTkyYTY5YyBsZWdhY3ktdHJ1bmsKKzI4MzY1IDZlNzhhNTRiYWMzYzg0MDQxYmFmZTNjMDAzMDNmNTQ1ZDhlZjA4OWYgbGVnYWN5LXRydW5rCisyODM2NiA4YjZiZjViYzUxMjI2YjcyMjhmYTMxNmM2NzdmOGQ1MGJkMjJmY2ExIGxlZ2FjeS10cnVuaworMjgzNjcgYjkzM2QxOWFlODUxMmNiYTAxZTcyNjRjYTQ1ZDFlYTAwMDE4MTM2NyBsZWdhY3ktdHJ1bmsKKzI4MzY4IDA0M2ViYTUxOGM2ODljYmRkYjM3MWU1YjcwZmZlOTkwNGM1ZDkyMDUgbGVnYWN5LXRydW5rCisyODM2OSBjMWY2ODJiZWViZWExY2YxZTFlOGVhZTcyNzk5NzIzY2QzY2ZjYzMzIGxlZ2FjeS10cnVuaworMjgzNzAgNzNmYmNmMjFiMmMwZmJhY2M5ZjcyZDQ0Nzg5NmRkMDkzNGEzYTQ0OSBsZWdhY3ktdHJ1bmsKKzI4MzcxIGQ5MGE2YWRkN2NhMzk4Mjg3YzBmOTQ2OGZhODhkYWRhNjdlM2YxMWIgbGVnYWN5LXRydW5rCisyODM3MiAxYjRlZjljZDE4OTc0MmJjODBhZWJhZmJlNWY0ZGRkZDY0MzIwNjg5IGxlZ2FjeS10cnVuaworMjgzNzMgYzQ1YjI4NjU4ODA1ZmE2Njk0ZTM5MzY1MmViMDE5MjkzNThiMmFlMyBsZWdhY3ktdHJ1bmsKKzI4Mzc0IDgwZjY1YzYzZTg2MGMyNmRkNWIyNzMyYTg2MzU3MmExYTY0ZjhjNDAgbGVnYWN5LXRydW5rCisyODM3NSA5NTE4NjU5MWNiY2ZlZWUxNDY3MDZlZmYwOGUzYzU3Mzg3YzJiZGI3IGxlZ2FjeS10cnVuaworMjgzNzYgODE2NzllYmVjMDdkNzE5YmE2Y2NhNTllMmQ1Yjc2ODA2MjVmNGE2MyBsZWdhY3ktdHJ1bmsKKzI4Mzc3IGY2NTgxMjk5YmMwM2I1MThiYTdkY2MxNTE5OGY4NzY3YTc5NjlkYzEgbGVnYWN5LXRydW5rCisyODM3OCA0MjYzNjM4YTQ2OWY4ZGI4NjdkYjA5OGNhMzBjZmZiYWM3MmEwMjNiIGxlZ2FjeS10cnVuaworMjgzNzkgOGVhMTE3ZWJiMmYzNDlkZTVlOGUzZDQ0MTlmNzhhYThlNDE3ZmZhYSBsZWdhY3ktdHJ1bmsKKzI4MzgwIDY2OGVlYWQxM2E3YzU3ZWU2NWRiNjBmZjE4Y2U5Mzc1NDg0OGI2YmQgbGVnYWN5LXRydW5rCisyODM4MSA3MTkwMzQ4ZDQ2NmRmZjVkNjYwNTZjYWEyMjczYTI4OTA2NDBmMWJkIGxlZ2FjeS10cnVuaworMjgzODIgN2JlYjE2OTIzYjcxYmI3MGZlOTVhZjM2YTY1OGU2OTg2ZjkyOGRkYyBsZWdhY3ktdHJ1bmsKKzI4MzgzIDA2M2YyMDMxNjYwYzNlMjU4ZjM2ODgwZjVkMDhkNDMxODliMzI3N2EgbGVnYWN5LXRydW5rCisyODM4NCAyNWY2OTU0ZmVmMzQyM2QwN2I4ZjNhZjhlNzc1ODVkNzM4NjZlMjRkIGxlZ2FjeS10cnVuaworMjgzODUgYjFhYjRlOGQ3ZDljNWEwYjI4OWYzZDQzNjhjODljMmI0NGM3Y2RiZSBsZWdhY3ktdHJ1bmsKKzI4Mzg2IDgwYWM4NjE5NGExMmJiOTRhZDYyMWU3YzIxZTM2ZDVlZjY5ZTliZjEgbGVnYWN5LXRydW5rCisyODM4NyA5ZTExYmI4M2Q5NTNiYTNhYjYxZTNiOTYzZTU0N2M1N2NlZGYxNTU2IGxlZ2FjeS10cnVuaworMjgzODggZWU5OWQyMjI1NzBhOTQ2MDBkZjA3MDAzOGVmNzNkNDRmY2ZhOGVkNiByZWxlYXNlMjItbWFpbnQKKzI4Mzg5IDIyYjcwYzM5ODNiNTM4Y2FlNTc0YWM4Y2Q3YmY5NDEwOTg4MjEzNTEgbGVnYWN5LXRydW5rCisyODM5MCA0YmI3NzZhMDJlNmU4NGY4YTdhMDgyYzVjMjBlOTY0MDYxZTlhOTUxIHJlbGVhc2UyMi1tYWludAorMjgzOTEgODBkMDM1YzQ1MTQ5M2RkZWM3NGZjYjBiMjQ0ZTQ5YjRlYmIxNzM0ZiByZWxlYXNlMjItbWFpbnQKKzI4MzkyIDE0NjFiOTQ2MDZjNTQxNGViMjliMTY1N2FjYTc3ZDFkMzRkODJiZDcgcmVsZWFzZTIyLW1haW50CisyODM5MyAwMGYxMWVlZGQ2MDMzNDVjYmE5OTIzYTM2ZGJhZjA1NjUzNDUxNmNkIHJlbGVhc2UyMi1tYWludAorMjgzOTQgOTEzMGVhNjY5M2RhN2VlOTlhM2M0ZTNiN2Q1M2JkMDVlYzdhYzFjOSByZWxlYXNlMjItbWFpbnQKKzI4Mzk1IDBkNjYxN2E5Y2I2MTBkMjcyMmFhMjUyMzcwZDUxMzJhM2VmMzRjNDAgcmVsZWFzZTIyLW1haW50CisyODM5NiBmNGJiMGZmMzEwZDM0ODljMjNmNzQ4NjQyMDUzZTNkZWQ2Y2JmMzk5IHJlbGVhc2UyMi1tYWludAorMjgzOTcgYmM4MWVlMjA2MjhmM2NjOWQ1MDEwY2Q0MTg5NzhmNWFlMmRkNmE0YiByZWxlYXNlMjItbWFpbnQKKzI4Mzk4IDY0NjFhY2RlYjU4YzkwODJhZmVlOGU1NjRmMGJjZWFiY2RlZTYxMDQgcmVsZWFzZTIyLW1haW50CisyODM5OSBjNTQxN2YwZWU1ZjA4MDJiMTg3Mzg5YjcxOGIxMmQzMWI5NDU1NDcxIHJlbGVhc2UyMi1tYWludAorMjg0MDAgZmQwNjZkMTk0Y2ZmNDFjMmJiZjdhNGE1YTNhN2ZkZWQ1NmM0NWNkYyByZWxlYXNlMjItbWFpbnQKKzI4NDAxIDVlNGVhZGYxOTAzYTAyOGU2NTVhYjU4MjlmZjUxMDBlOTAyZTU4NmIgcmVsZWFzZTIyLW1haW50CisyODQwMiA4NmFhMmMyZGE0MGU0YjUyY2M2ZGVlMTAzZjUzMzdjNmU2NmJmN2IxIHJlbGVhc2UyMi1tYWludAorMjg0MDMgYzUxMmE5NDMzZWFmM2IzZjE2MGJiYTY5MDVkYzU1NTM1YWU3Mzg0MSByZWxlYXNlMjItbWFpbnQKKzI4NDA0IGEwZGM2ZjUwNDk3Mjg1YTE0NmIxMjBmOTNhMWU1OGRjNDY1NWY4M2UgcmVsZWFzZTIyLW1haW50CisyODQwNSBhYzQ2OGUyMGI0Y2VkOGJjYTA2ZWE0YjhlYjA1OWU1Y2U0NmQ0OThjIGxlZ2FjeS10cnVuaworMjg0MDYgM2E3NDk5NDMxZGNjZjNjZmZkMWZmNDhkYzI3ZjMyYmNiOTAwZjJiZSBsZWdhY3ktdHJ1bmsKKzI4NDA3IGY5NWMwYjg5NGYyNzY2ZTkyZGU4MTVmOTQ4ZTgxOWE5YWE4YmI2MGQgbGVnYWN5LXRydW5rCisyODQwOCAyY2NjZjgyNDIwMDliYWM1NTk4YjI2MmIzOTNjZDExYTZhNGE1OWQ2IGFzdC1icmFuY2gKKzI4NDA5IGZjYjUyMDFjNjllZDg2NzUyYTU4NDY2M2E0NTZhM2E1M2RhMDU5MTUgbGVnYWN5LXRydW5rCisyODQxMCA0ODEzODM3MzcwOWI0NzAwNDA0M2M0MzkwYjBhZjA0MmE0MDhhZmRkIGFzdC1icmFuY2gKKzI4NDExIGJiYWViZTZiN2MxYWRmZWJlN2RhNTljNWJhZWFmMzAyNzI2MGQ2MTEgYXN0LWJyYW5jaAorMjg0MTIgMGI3MjY0OTZjZjQ0ZjE3YWRmZTNiN2NiZmE0NjI3NmU0Y2NlNDEzNyBsZWdhY3ktdHJ1bmsKKzI4NDEzIDU5YjdmNGU5ZmQ2MTQ3MGRiZGRhZDBhNmU1MDVhZTcwOGE1MDQ0OTAgYXN0LWJyYW5jaAorMjg0MTQgYzc0NDE0NGM0MDQ5ZGY2NzM3YWRkZTdiYjBkNjA5NmNlYjhlMDUyYSBsZWdhY3ktdHJ1bmsKKzI4NDE1IDk0YWRmNjk5NjE4ZmVkNWFkNDdjNzAyMDE5OGM3ODhkMGJjYjhkYTIgYXN0LWJyYW5jaAorMjg0MTYgOGZkYjA4NzdkMzUyMzgzODcwYWIwOWI0OWE5MDcwZjkwODYxNmU2MCBhc3QtYnJhbmNoCisyODQxNyA3NjJkZDA5ZWRiODM0MmZiMDQ4NDM5ZmFiNmVhODFkNjJjMTMxZDY0IGxlZ2FjeS10cnVuaworMjg0MTggYjQzOTg2ZjczZmM5ZjhhMjhhZDlkZjY3MDMzMDc4ZGQwN2U2MTcyYyBhc3QtYnJhbmNoCisyODQxOSBmODI0NzVkNzg0MTUyNWM4NmY1OGViZDgyYWE1MDQ0MjQxNjJmZmZlIGFzdC1icmFuY2gKKzI4NDIwIDEyYmI2ZjBjNjBmOGM2MzhjMTJjYmRiOGE0ZjQ2OTJmNGI3MWVlMTQgbGVnYWN5LXRydW5rCisyODQyMSAwODU3YWFkYzYxMmEzMzU4ZWEyNGNiMTQ0Y2JiZTRmYmYwNGYwNmM1IGxlZ2FjeS10cnVuaworMjg0MjIgYjViNzBlNDEwZjEyNGY4ZWI5NTkzNmVjNzMxNjQ3NTA2OGVjMjE2MSBsZWdhY3ktdHJ1bmsKKzI4NDIzIGFjZWNkYzRmNzMzMzYzYzRlN2UxNDUyYWJkZWQ2OTM3NzEzYTViYTQgbGVnYWN5LXRydW5rCisyODQyNCBjNjgzMTFlZmQzNDZlZDlmNDA2Nzc4OTIzMzQ2NGEwMWQ1YTIyOWQ2IHJlbGVhc2UyMi1tYWludAorMjg0MjUgZDQyMWJiYzk5NjFjOGNmZTBhYTI2NTliMjBjODBjNjg3NGUxOWFmOCBhc3QtYnJhbmNoCisyODQyNiAzNTc0OWRiMTA4MDkzMDU2MTAwNTBmYmY2MWI1ZDg1NWNkMmI0ZTFkIGxlZ2FjeS10cnVuaworMjg0MjcgZjM2ZTE2Y2E4ZjUwNTgwZjUyODVlZDgzZTMyMTJmMDYwZWQxYzU2MSBsZWdhY3ktdHJ1bmsKKzI4NDI4IGYyZDc1NzQ5ZTYxYzVlMzIyNDkyYTFlMjhjZmRjZGMwNzlkMzAzMTggbGVnYWN5LXRydW5rCisyODQyOSA2ODYyN2UwYWNkMTViYWI4NWJhZWZiM2RhMmFkYTllZGI2YmFlMzhhIGxlZ2FjeS10cnVuaworMjg0MzAgZmVlYjBiMDJiOGYyNTI5ZTVlNDBjOTdhYTNmZGM1NjhlOWE4N2ViOCBsZWdhY3ktdHJ1bmsKKzI4NDMxIDI0ZTgwZDk2YmQwYjZlOTI2YWI5ODUxNGEwNDQ0ZWY2OGViNTdmNTUgbGVnYWN5LXRydW5rCisyODQzMiAwZWJlYzgzZWIzZGRmYzFjNWI1YTJhZmQxMmRlNzYyYWRlM2FhYjM0IGxlZ2FjeS10cnVuaworMjg0MzMgYWE0NTAzNTU2MzM5ZWRjZTAzNzQ5MzJhYmIyNWQ5YTQ0YTdlODliMiBsZWdhY3ktdHJ1bmsKKzI4NDM0IDgxYmU2MTA1NjcxN2Y4ODEzNjA2MmZiNzI4ODlmNzY3OGI1MTJmYTggbGVnYWN5LXRydW5rCisyODQzNSBiYjI4YmJjMjhjMzIzYWIyOWQ1MDY1NWUyNjc4ODg5MGM0NmM2Yzc2IGxlZ2FjeS10cnVuaworMjg0MzYgZTQxMDU4ODQ1Yjc5MmVkNjYyN2U5ODRmMGNjYjEyZDRjMDFkMjZmNiBsZWdhY3ktdHJ1bmsKKzI4NDM3IDkwYjEzZDk5OTgyNzEwZmY2YzM5ZTA5MmJlY2E2N2E3MzkxZDMyZGUgbGVnYWN5LXRydW5rCisyODQzOCA4MWFjYmUxNjgwYTMzMDhiYjgxOGFlMDYzMmY3N2Y5MTVjMWIwYzUwIHJlbGVhc2UyMi1tYWludAorMjg0MzkgYTZkZTUwYzBkNDU3ZWI2MWNmZWI1OTkyZDc1MTFjMGNjODFkNzNmZCBsZWdhY3ktdHJ1bmsKKzI4NDQwIDA0OTA5NmVmYTJjM2NhODc2YjE5YzM3YjI0NjhkNzM4NDVmZDk2MGEgbGVnYWN5LXRydW5rCisyODQ0MSA4ZmE3NTNhOTcwNzdiYTA5YWQ1YzQyMWMwMDcwN2NhZGMwOTAzNmY3IGxlZ2FjeS10cnVuaworMjg0NDIgMmMyYjg0YmRhMTQxYjdhNGM4YzU5MzFlYWY3YTBmNmEyYjI3MmJkNSBsZWdhY3ktdHJ1bmsKKzI4NDQzIDM0ODQzMDk1NzNmMjFjODM5Yzc3NTM5MmI1Y2JlZGVjMTEyM2YxODAgbGVnYWN5LXRydW5rCisyODQ0NCBhZDI4OWZiYjZiNDhkNzJiNzgzOGU4M2ZlMGYzMGI3Zjg3ZjM2ZmE5IGxlZ2FjeS10cnVuaworMjg0NDUgYWZmMDY3YmE4ZDA3ODhmMGE5MzdlOWJlM2RlZjYyNTBiNzM4YTU4NyBsZWdhY3ktdHJ1bmsKKzI4NDQ2IDhjNjFjOTIwMjViNmM3N2I4M2U5MmJjNzg5MzA3NGIwNDdjMWRjNjQgbGVnYWN5LXRydW5rCisyODQ0NyA0MGU5Y2ZkZTFjNTA4ODBhMWYxOGUwYTRiZWUxMzEzY2RmNDkxODdlIGxlZ2FjeS10cnVuaworMjg0NDggN2ZiMzc1OWQzODY2ZDUwODRlNGEyMjI1OTJmMGRjNzY3OTVlODQ4YiBsZWdhY3ktdHJ1bmsKKzI4NDQ5IDhjODA1MjM3ODAxN2NiNDUzYjBmMjMxNTUwZWQ3M2FlNTc2MDUyOTggbGVnYWN5LXRydW5rCisyODQ1MCA0ZTk5NmU5NTllYzE4N2M3MTM3ODE3Nzc3ZTcxYzEwNGVkMDFkMjg3IGxlZ2FjeS10cnVuaworMjg0NTEgZDVlYmQ2MTZhM2U2ZjRiY2Q1ODA5M2JjNTVjMzhhMzY1OTZjMTE4MyBsZWdhY3ktdHJ1bmsKKzI4NDUyIDBlMDFiODVhZGQ4MTI2ZTZhYzczNzg1N2NlOTllYjZmMDNiMWRiMzMgbGVnYWN5LXRydW5rCisyODQ1MyA3ZDNmODMwNmEwMWVkNWFlNTQzZWI4NDhhZmM1OWZkZjg0ZGI3MGM2IGxlZ2FjeS10cnVuaworMjg0NTQgMGI5NzkyY2JlOTAwNDJiMTc3MDFlZDMyNDM5M2MxNmU2NjdkMzhhZiBsZWdhY3ktdHJ1bmsKKzI4NDU1IDM2NDdiMzBhYTlkZTA5YWM1NmIyZGI3MmY3NGExNmU0ZWUyNjQ5ODMgbGVnYWN5LXRydW5rCisyODQ1NiBkYjQ5ZWU3NmI3ZDBlM2Y3NmRjZjA1YmEyYjMyNGM4MzkxMDcwM2VjIGxlZ2FjeS10cnVuaworMjg0NTcgZWQwYjAyNjcyZjA5MDVkZDBhOWEzZmE2MGYyZmIwNWI4ZjIwMWFiMCBsZWdhY3ktdHJ1bmsKKzI4NDU4IDExODlmNzdjZGY4NDVkMmNlNzllOWNlZDAyZjg2ZTIxMDcwMzJmYzQgbGVnYWN5LXRydW5rCisyODQ1OSA4Y2YyMDU4OTJmNjYyODk2MDZjYzI2YTM4OGI1M2VjZDMzNDUxYWJjIHJlbGVhc2UyMS1tYWludAorMjg0NjAgYmQyYWEwMjQ3YWRhYWQ4YzQ2YTk3ZDk3NDcyNDQwYzk5ZWY2NzY1ZSByZWxlYXNlMjItbWFpbnQKKzI4NDYxIDc2Y2Y4OGU4OTM3NmRjMjU0YWQ3ZmY2MTIwZTZmODMxYzA5NDZjZTMgbGVnYWN5LXRydW5rCisyODQ2MiA0MzRiYzFkZWE0ZjhiYTdlNzdkNjU4NmIzM2VkNGVmN2JkMTFmMDNjIGxlZ2FjeS10cnVuaworMjg0NjMgZWMzNzM2OTZjMTdiYzM3ODYyNjVjOTcyMWM3Zjk5ZmUxZTY0YmU3NyByZWxlYXNlMjEtbWFpbnQKKzI4NDY0IGQwNDEzZGUxNDNlYzI0NWFiMGUxMjVmY2UzZDMzMDg1ZjEzODRiOTkgcmVsZWFzZTIxLW1haW50CisyODQ2NSBkODNjMTRhZTY0N2RkMDMxMGMxYWEwZmUwNWYwZmVjNDZkM2I1ZWEyIGxlZ2FjeS10cnVuaworMjg0NjYgNDAyOWQ2N2NkYmQ1ZmRiZDQyMjVmZDc3Yjg4NDdlMGIwMzgzZGQ1MSBsZWdhY3ktdHJ1bmsKKzI4NDY3IGNiZWUyZWQ2Y2Q3NTVhNzcyN2IzYjhlYTAyNmM4NmNhZGE1MzQ0NjQgbGVnYWN5LXRydW5rCisyODQ2OCBhN2E2MGIxNDFkMWRhNjgzOGRjOWUxZTFjMzM0OTk5OTVlNmI3NTMxIHJlbGVhc2UyMi1tYWludAorMjg0NjkgNjNjYTEyYWJhMDc5MzRhNTlhNWY0NWM3MzdlZTZmN2Y4Y2I2ZGRhZSBsZWdhY3ktdHJ1bmsKKzI4NDcwIDhlOGQzZTRhZjRmNDY4OTRiNzgyYzlhN2QyMDk3M2IxMmUyMmY2Y2MgcmVsZWFzZTIyLW1haW50CisyODQ3MSAxYWEwODE1ZmFkNGIxMTY3MWM1ODEzNTI0OWE5ZjllZmNkMDQxZmI0IGxlZ2FjeS10cnVuaworMjg0NzIgZTBiODU1YWFkMjMwMjA5MmUzMzZkYWQwMTY3YjBlM2YzMWE4YTUxNiBsZWdhY3ktdHJ1bmsKKzI4NDczIGUyMDQyYzc2YWYwNjU2MGNjYTJiZTZhNDMxZGE5NWQ4ZWI2YmEzOTkgbGVnYWN5LXRydW5rCisyODQ3NCBiODA2N2RkYzExZjg3YTk3ZDQ1ZjNmZTcyNzU5YjNhZTFjYmMzNGUzIGxlZ2FjeS10cnVuaworMjg0NzUgYWQzYmU0NzFiMzk5MjE5MzMwNjg1ZDQxZmI5YjJmNWRmODIxMmJmZSBsZWdhY3ktdHJ1bmsKKzI4NDc2IDBkNDkyOTAyODk0YTU1ODg3MGU3NTNjNDZlYWM0OTA4MmQ1YzM5YTEgbGVnYWN5LXRydW5rCisyODQ3NyA3Yzc2YzBmYzJlOTJhMDk3YmY4ZTkwMDU4M2IxZDVhMjRlMGE1ZTY0IGxlZ2FjeS10cnVuaworMjg0NzggMTAwZjE1NDk4MmM4YmJlMDljYTUxOGFkMGY5M2RjZDRiNDlmOGM2YyBsZWdhY3ktdHJ1bmsKKzI4NDc5IDdkYzdhYjVkYjkwOTllODQ2NDliNGMzNTRiMWQ0ZDExODAxNjlmMjAgbGVnYWN5LXRydW5rCisyODQ4MCA4MWEzNmQyYTJkMTM3ZDEyMDliNTQxODIzZmVkZTRkMzdhYTgyMzIwIGxlZ2FjeS10cnVuaworMjg0ODEgNWE4OGYxNzRiNjg0Y2JiZjgwYzFjN2I3MTY0ZWQ4MDIzMDhjMzhlYyBsZWdhY3ktdHJ1bmsKKzI4NDgyIGFiMTc2ZTE2NGVhYjY5NDhiMjc5MjVlNGYyMWFkZTZmMmQwYWMyZjggbGVnYWN5LXRydW5rCisyODQ4MyA0NmIwNTA0NTU1MzM2ODNiZDhkZDIyNzA2ZWZjMTZjNzAwMjg1MmU0IGxlZ2FjeS10cnVuaworMjg0ODQgMDNlYWRjNTdkNDI5OWM0MTRhMWRlOTkxMmQ2M2E5MjY3Mjg3YjNiNSBsZWdhY3ktdHJ1bmsKKzI4NDg1IDgyMzFmODZjODYyOGE0NjM5YzE5MDE0MGNhNzlmZjQ5MDljZTVhMTIgbGVnYWN5LXRydW5rCisyODQ4NiAyNzRmYTBiMzRjYTdlNmIzZDQ0YTExNWRkNzI2OGFhMjE1MTRkYTEwIGxlZ2FjeS10cnVuaworMjg0ODcgMDViMTVjZTI4ZTMxZmE0Zjk0YTg1Mjk0OGM0MGQzYzgyMTQ1ZTBjYiBsZWdhY3ktdHJ1bmsKKzI4NDg4IDVmYjZmNWJiNzY5OGZiOGY5OTExZTJmOThmMGYyMDIwZTZkNDc2MjYgcmVsZWFzZTIxLW1haW50CisyODQ4OSBlZmMxMjhhMzM0YTU1ZjI3NGEzYmQxYzMxYzk2MjNmMjEyNzJlZWMwIGxlZ2FjeS10cnVuaworMjg0OTAgODI1ZmM4NTUyMzI1N2Q5ZTkwYzY3MjI4YTljYzgwM2MzYjVlNDU3OCBsZWdhY3ktdHJ1bmsKKzI4NDkxIDMxYTc3NGE2ZjYwNGI1NzBmOTE3MTZlNTU4ZTdkYWY0YTQxZDMyNDQgbGVnYWN5LXRydW5rCisyODQ5MiA2YTIyMTgzNGVkN2RmNDJlODBjMjAxYTExNDI2MDc3ZGQ0ZTYyOTAwIGxlZ2FjeS10cnVuaworMjg0OTMgYTU0YzVjZmEzZjhmYjIxNGNkMzVmNDFiOWExZjhjYzQ3M2U1MjZkNiBsZWdhY3ktdHJ1bmsKKzI4NDk0IGJlMjg2OGE2M2VkNTNkMWYyNGU0YzA3MWY0ODkwNmU1YTEzOTI4YzIgbGVnYWN5LXRydW5rCisyODQ5NSAwMDRkZTFhYzIzYzQ0MjMzZDlhYjQyMDFmZWFjM2E2MTgxZWFmMzU0IGxlZ2FjeS10cnVuaworMjg0OTYgNGFlYWNmOWY5ODU4ZTQ1ZmQwMjAwNDE0YmU4MzIwMWQxNjYwMDM5NiBhc3QtYnJhbmNoCisyODQ5NyAyNmM1MGYzMjI2MjIwMDIyODBiZGYzMmM4ZWE3OTliZDJhNzY2ZGI5IGFzdC1icmFuY2gKKzI4NDk4IDAyZTBlNmQzODEzZTllYjM0MmY1ZDM2YTg0ZjQyYzYwMTkyMDQ5YzAgYXN0LWJyYW5jaAorMjg0OTkgOGU0NzM2MWM0YjViMDM5NDliZTkyNzFmYzE0ZTZmNTQ0NWI3YzkwMSBhc3QtYnJhbmNoCisyODUwMCAxM2U5MGUzYzRjOTkzMWJmZjViMDU3YjgwYTdiOWZhN2IyY2JiMGI2IGFzdC1icmFuY2gKKzI4NTAxIGM1NTY5MDY0Nzk2MTMwMTI5MzY5NDJjOTcyYjMzMjRjYTY0ZDBjMzUgYXN0LWJyYW5jaAorMjg1MDIgODk0MjE1MDVkYjU5MDMyOTNkYmVhMGFlYTAyMjVlM2IzZDhiMTk2OCBhc3QtYnJhbmNoCisyODUwMyAwYzU0NDg4YTc0ODIxOWZmZGE4YmU2ZmY4Yzg1NDZkNWYzZjYyZmRiIGFzdC1icmFuY2gKKzI4NTA0IGVkMmE4YzU0OGM0NDRkOGI5Zjk1Y2JkMzY1ZTAxNTRjNDQ2YmFjOTkgYXN0LWJyYW5jaAorMjg1MDUgNWExMDE2YjJjNDQwY2RjMWE0MmU4NDJlOGFiM2JkNmY0NGU1YTA1NSBhc3QtYnJhbmNoCisyODUwNiA1YTQxYTcwYmM1ZDE3Y2UxNDNlZjY5YjExYmRjMWM0ODEwNmFhNjAyIGFzdC1icmFuY2gKKzI4NTA3IDJiZTk2OWQyOTUxMGJhOWM0Y2FmYmVkZmVkMmMwMzhhNDY0OTFiMDkgbGVnYWN5LXRydW5rCisyODUwOCA5YTJkZTM5ZThkYTc1ZmJiZmVlZTRiMjYwZGQ0YTdmN2E0MzMyMDI0IGxlZ2FjeS10cnVuaworMjg1MDkgNzA2MDNmNDg0MDI5NDZhMjM4N2UwZTM1YzM4ODIxMjk5ZmZiODc5MSBsZWdhY3ktdHJ1bmsKKzI4NTEwIDRjNGY5MmIwYWY5MDM2OTU0MzIwZmI1MmUyYjdiZjZjMTFmZjQ3YzUgbGVnYWN5LXRydW5rCisyODUxMSBiMzM3ZWYxNmMwZDJkOGJjMzEzMGQ3MzU0NGM3NzU3MzFhNjYxYTM3IGxlZ2FjeS10cnVuaworMjg1MTIgNWZlNGQ5M2RmNDI5MTM0ZWY4Njk1YzEyZTU5ZmY5NjJmZjhiNzNkMiBsZWdhY3ktdHJ1bmsKKzI4NTEzIDg0YmZiOGE4MDVmYzlmZjY2YjM4MWVlMWUxNjQ2YzFkMzIxMmEzNDYgbGVnYWN5LXRydW5rCisyODUxNCA5YTE3OGFkYjRlMmRiMDA4NzJkY2M1ZmM1NzkzMDFkY2VhYzRiZjU2IGxlZ2FjeS10cnVuaworMjg1MTUgMTk5ODJjNWViNDkzYWYwOWEyMmY1MDdhNWJlNTAyYWQ1N2UyMWRhNCBsZWdhY3ktdHJ1bmsKKzI4NTE2IDg3NzE5ODcwNWM5MmFkYjAyOGRhYTJlMDZhZWM5OTRlYWIyYzE0ZTQgbGVnYWN5LXRydW5rCisyODUxNyBjMTQ5ZDM5MzE0MzQ0NzQwZjQ2OTZjOTUwNjVhZGFmY2Q0YjRlYTg0IGxlZ2FjeS10cnVuaworMjg1MTggMDMzN2RhZDg0MDNlMTBhNzM1OGJlNTY3NWYzMjY2Mzk0MGVmM2QwMyBsZWdhY3ktdHJ1bmsKKzI4NTE5IDQyN2VmYzM1YjViZWI2ZGViOWJkMjlmMDIzMWJlNTc2ODNkMzIwNTggbGVnYWN5LXRydW5rCisyODUyMCBhZTE0NjllNDY4YTA0OTA4OTZiYjFhYjkxZmVjYjljZTA5NDk0MjA3IGxlZ2FjeS10cnVuaworMjg1MjEgNmE4NWExYzlkMzNkOGYzYWYzMmU3NDQ2MWYwMzdhMDM3NTJkNGU0NyBsZWdhY3ktdHJ1bmsKKzI4NTIyIDFiODBlMGZkNWE0ODE0NTk4ZjQ0YTU1NzA2OGU2YmM4YTA1ZWZjMDMgbGVnYWN5LXRydW5rCisyODUyMyA5OGRkYzQyOTdmMzYxZGU1ZGJlOWJjYjMzNDUyZjYzNTc1MDNlNmM0IGxlZ2FjeS10cnVuaworMjg1MjUgNTY3MmIxNTczODU1YTUxNWFhMzYzZmQ3ZjhlN2RhZTJiNDI3MGI5ZCBsZWdhY3ktdHJ1bmsKKzI4NTI2IDczYjJjYmFlOWQ5MDE3ODA0MzcwY2U1YmViNWZhOTljNzBiMjY2NWEgRFNfUlBDX0JSQU5DSAorMjg1MjcgYzAyYTY2ODQ4OGQwODJjNGQwZGI4YjM4NzI3NzdlNjhjMWEyYzJkNiBsZWdhY3ktdHJ1bmsKKzI4NTI4IGE2OWExMjQ4NGQ2OWFhODY2ZTY3MjY4ZjdhNzYxNDUyZDAzYTI3NTIgbGVnYWN5LXRydW5rCisyODUyOSBiYzU5MGJlYWRmMGJkMTc2MzRiYjBlMWY2NDJkYjY2NzdhZDdkMzhiIGxlZ2FjeS10cnVuaworMjg1MzAgMzIzMzFkMjZkN2NmMTkxMTRmMWY4MGIzZWViNTlhNTU3OWY0OGU5NSBsZWdhY3ktdHJ1bmsKKzI4NTMxIDhhMTZkZTBiZTExMTc4MDkyYmJlYTA1MDY1MDE0YzdhZDRiNDdlZmUgbGVnYWN5LXRydW5rCisyODUzMiBmOWU0MjQzZmY3OTJlNzk0MTFjMTg4YTUxMTZkZTI1YzY4NmYxNmY4IHJlbGVhc2UyMi1tYWludAorMjg1MzMgNGI1ODBhNDYyNTA4MGNkYmViMjJkYjhmMTQwYTVhMDVlYzViNGI3OCBsZWdhY3ktdHJ1bmsKKzI4NTM0IDM5ZTA5ZjMwZjdlZjI4NDZhN2YxYWI1OTYyMzBlMWY0NGM0ZTZkM2IgbGVnYWN5LXRydW5rCisyODUzNSBjMGQ1ZmY4NTU1YWRlYTQ3MDVkNDU1NmZmYjA5OTU0N2FjOGJiYjY1IGxlZ2FjeS10cnVuaworMjg1MzYgMGVjYjNjYWJmNDBiOWE4NmU2MzZjYjk5Nzg3NmI1ZDY3MWZmMzM1NyBsZWdhY3ktdHJ1bmsKKzI4NTM3IDNhMjZlMzUyZjBhNmQyNzVmZjFlMDc3YzgwYWFhOGNhZDIxMjlkZTEgbGVnYWN5LXRydW5rCisyODUzOCAwMGI2ZGQ0MTRiODA0NjFmYjc4MDFhNGU4YzFkNmQzZTFjMWI4NzFiIGxlZ2FjeS10cnVuaworMjg1MzkgMDQwMWEwZWFkMWViMzM0N2QxMjBkMmEwODE0ZGNhNTIyZjEyYjgxMyBsZWdhY3ktdHJ1bmsKKzI4NTQwIGI0NzBiNDE3ODM5ZDhjYjQ2ZGYzMWEzNDUyNzBiN2UzMmUzNmVmZTEgbGVnYWN5LXRydW5rCisyODU0MSBmMGZmMDYwY2QxOTRlNTE3ODcyNWU1YzkyODIxNzY2OTQwMzgyYzM0IGxlZ2FjeS10cnVuaworMjg1NDIgZmIzMzRiMWE1NmE2NWMwNzEwOGFiMzhiZTgxOTMwNzA3MTkzM2U1ZSBsZWdhY3ktdHJ1bmsKKzI4NTQzIGEyYjFmM2MxMTM4N2E2NDcwOGM4NWVkZTA4OGNiMWQxZDBiNTBkYjcgbGVnYWN5LXRydW5rCisyODU0NCA4ODM0Mzg1ZjI5YmY1NDEwZDlmNzI4YWEwZDM3YTZkNzZjNTc4ODk0IGFzdC1icmFuY2gKKzI4NTQ1IDc1OTYxY2IzNzQ3ZjlkYjliZjQwMWNmZDFhOTRmZGIxNDAzMTEyN2MgYXN0LWJyYW5jaAorMjg1NDYgNjkyOTNiODQ5ZDg1ODA3YjRkNmUxODFiYjI0NmI1NTBhYTJmY2FlOCBhc3QtYnJhbmNoCisyODU0NyA3YzczMzM4MDI3MTQ5YjIwYzg2OWE5ZjQwZGE1MjMzZWI2ODdjMzVlIGFzdC1icmFuY2gKKzI4NTQ4IDRlYTA4MTEwMDMwNTI5YjhiOGIyOGRmOTViMDljODI1MDUyNTdkYjAgbGVnYWN5LXRydW5rCisyODU0OSBlZmMwZWRjMzBmZWE0MzUwZmVjMGMwNWJkZjllMzNjNTYzMmYzZTBiIHJlbGVhc2UyMS1tYWludAorMjg1NTAgMzAxNWM2NzhmODFkZGY4NTBkZjEwMGU1YTg2ZTMxM2RjMDc1MDAwNiByZWxlYXNlMjItbWFpbnQKKzI4NTUxIDBjZTI3MjJhM2UxNTRkMDkzNGJiYjliNTUyNmVkYzVlOTM4ZjgyODQgbGVnYWN5LXRydW5rCisyODU1MiA0YzgxNjNhMjc2NDAyOTdhNmIxY2JjOTlmNWQ0NWRmNWQyZDg5OThjIHJlbGVhc2UyMi1tYWludAorMjg1NTMgOTUzZWJlMGMwYzI1ZWVhYWUzYjNlZjc4ZTU0YTE4YmUwOTgwOGY4ZSBsZWdhY3ktdHJ1bmsKKzI4NTU0IGM3MzEwZjM0OGM3OGUyYWZjYWZiNmFjYjFiZWFhYTk2M2UxZjk4YTMgbGVnYWN5LXRydW5rCisyODU1NSBlNTAwZjE4ZjMxMzEyODJhOTdlN2M2ZmMzZjVhNDZlYzMxNWJiYTJlIGxlZ2FjeS10cnVuaworMjg1NTYgNmI2N2QyNjA3OWYyNTU2OTBlY2ZjYzIyZGUyYjIwNzU3NjYyYmVmNSBsZWdhY3ktdHJ1bmsKKzI4NTU3IDI3YzcxOGM4MmVmZGUxNDZjNGY4OWMxNzQ0NjhmYjYxMTRkNmNiNmQgRFNfUlBDX0JSQU5DSAorMjg1NTggNDhkMTA4ZTViODg0MWEwZTg5Mzg5ZjAxZjhjMDNlMGU5ODRjNTk4MSBsZWdhY3ktdHJ1bmsKKzI4NTU5IDE3Mjg0NWMwOWFmZWNmNTQyNTNhNGY4NDNjYTRhZTdlZTM1ZDEwNGUgbGVnYWN5LXRydW5rCisyODU2MCA1NmY5ZjVhYjZlYzExZjhhOWZjM2I2OGE0YTFmOGMyZGZiMmIwMjFjIGxlZ2FjeS10cnVuaworMjg1NjEgNTE2NWEwZWU4NGM2MjBhNmY2ZWNkMDNkNTNhZGNkZDk0MmM2N2E0NyBsZWdhY3ktdHJ1bmsKKzI4NTYyIGYxYzY5YzMyYzQyYjJiZWFlNjQ5MzNjZjNiYTM1NmIzNjM4NTUwYTYgbGVnYWN5LXRydW5rCisyODU2MyA5NjRkNjg4OGEyMzY4ZTllMWMwYzEyZTRjNDM0NmEyMzBiZTg1NWI0IGxlZ2FjeS10cnVuaworMjg1NjQgMzY4YmMzYTQ5MTllMzA1YzVjODM3MmZiMzUwNmZmZWI5MGIwODY3YiBsZWdhY3ktdHJ1bmsKKzI4NTY1IDg1MjllNTU4ZjcxZDc0MmZlNWJmNzY4M2Y5MTIwNmRkMTc3MWE0YzAgcmVsZWFzZTIyLW1haW50CisyODU2NiBiODllYmQ1N2NlYjRhOTVmMmNiMzgwNGFkMzRmZmQxOTYzYzM1ZGE3IGxlZ2FjeS10cnVuaworMjg1NjcgMzhmYTc0YTIwNWVhNTZkODU2NmY0NjlmNWQ0MDRhNDcwNDQ1MDk2MSBsZWdhY3ktdHJ1bmsKKzI4NTY4IGNjNTNkZGI2NDI0ZjNiNDE1MjVmOTA4ZTczZDdjZTZkNGU5NTdiNDYgbGVnYWN5LXRydW5rCisyODU2OSAwZjAwMTY2MzJiZTQ5ZjlmMDlhMDUwMjkwZDRhYmNmODE3YmY1YjM2IGxlZ2FjeS10cnVuaworMjg1NzAgMGQ5MmViNjNkYjg5YWU4OTRiOGIwNDg4YWE3YjFjZThiMWI4OGE3ZCBsZWdhY3ktdHJ1bmsKKzI4NTcxIGRkYWQzNjdiODBjM2Q0NjgxMmRhMmRjNWI4ZTM4OWQxNmFhNDdiNDAgbGVnYWN5LXRydW5rCisyODU3MiA4MDYzNGNhMDJkYmY5MzY0YzIxMjIxOTJmOTFjMzBkNGMwOWFjY2QxIGxlZ2FjeS10cnVuaworMjg1NzMgZDQ0NmI1MTUxMzE2ZWE4MmU3ODA1M2EwMTVmZWNjYmQ0ZWFlZDNiZCBsZWdhY3ktdHJ1bmsKKzI4NTc0IGFmNjk0NWYzM2IwODYwZmYxMGMwNjAwMjQ3MzVlYmIxYjllMmVmNTEgbGVnYWN5LXRydW5rCisyODU3NSBiZTI1ZDIzNmYyODZkZDRlNzFhYTExZDlhNzJhMGEwMDNmYTU0OGY4IHJlbGVhc2UyMi1tYWludAorMjg1NzYgZGViNjRkZmM4NDE2NmNhNTE1Njc1MjMzYjEzNjBjODZkYzdlMjQ3MyByZWxlYXNlMjItbWFpbnQKKzI4NTc3IDY1ZTBmMmUzOTVhYzgzNzY2MDI2YmRmZWZhNmFiMmUwMjNlYmZhYjcgbGVnYWN5LXRydW5rCisyODU3OCBhZGFiZGI5OWVjYzRlZTc0NmQyOGNjNTMyZjEyYWE5ODUwNzliMmMyIGxlZ2FjeS10cnVuaworMjg1NzkgNGIxNTRmMTlkMWFmMmY0ZjBlZGMzZDNmNGM5OTAzZTVmOGJiZWIwNyBsZWdhY3ktdHJ1bmsKKzI4NTgwIDBlMjM2Njg3OTI4OWUyMjYwY2EyOTMwYmY4NTVkOWY3MTJmZDMwNzQgbGVnYWN5LXRydW5rCisyODU4MSA0YjIwNWUwZmI0NmJjMWY4NjEyMmY2N2NhYjZmMzhlYmE5NDA5OTgyIGxlZ2FjeS10cnVuaworMjg1ODIgNWMyNDMzOGYzYWU1ZjQyMmI2OWI0MzlmNzMxYjFlNjE5NDg2Y2M3ZiBsZWdhY3ktdHJ1bmsKKzI4NTgzIDEwZjk4ODg4NTNjYzYwNDEyYmNmYmVlNzZjMWE4NGY5N2JmOTg0MjIgbGVnYWN5LXRydW5rCisyODU4NCBhYzc0MTU4N2U2NmI5MjM0NzQ4ZDZkZWI0ZDFjOThkOTI2MTYxMTA2IGxlZ2FjeS10cnVuaworMjg1ODUgNWNiOGQ1NzJiNGRlZjAxYWMzYzIyZDUxYzJiZjRlZTY2MWIwN2U2NCBsZWdhY3ktdHJ1bmsKKzI4NTg2IDBjOWRmZDVhMDZkNDQ3MGMwMDA0Mjk5YWM0NWIwNmE0MTFiYjY3OGEgbGVnYWN5LXRydW5rCisyODU4NyA3NDFlZGQxY2EyM2E4YmU5YmY0ZDYxODdmNWQxMWY2MWE4ZmYyYzJlIGxlZ2FjeS10cnVuaworMjg1ODggZTU2NmFmOTQ2NDhiYTY2MzIwOTQ1MjFjOGM0MDdhYmYwNDNkZTRlNyBsZWdhY3ktdHJ1bmsKKzI4NTg5IDY0NWRjMzNjZDQ4MTI0MGYwODU5N2I1ZDM2ZmRkZWNmN2FlNjFhMjcgbGVnYWN5LXRydW5rCisyODU5MCBiZjkwZmI3MWFhNzZkOTNhMzYxMzEyNmNkNWM5MzkyY2EzNTk5MGRlIGxlZ2FjeS10cnVuaworMjg1OTEgYzFjYTAzZWU1MTZlMTNkYzZiZGIwODhjZWI2ZjdiZTExM2IzYWQ2YyBsZWdhY3ktdHJ1bmsKKzI4NTkyIDBmMGQzNDc0ZjNmNjg5ZGZlMjEzN2Q1M2Y4YWFjNDFjNjllMmYyNjQgbGVnYWN5LXRydW5rCisyODU5MyAxM2E1ZjMyNjI4MzIxMjU3YmVjN2QwM2JjMDY4ZDMxNmViZjc4MmY5IGxlZ2FjeS10cnVuaworMjg1OTQgZTE2MTcxNTZmOTNmZGM5YTczOGJmNGIyZjY5YmEwMjA2M2FlNjVkMiBsZWdhY3ktdHJ1bmsKKzI4NTk1IGMyMTNlOWI4MDAyNjI5OTc5ZTU5MTkxZmIwN2FiM2ExZGRmYWFiZGUgbGVnYWN5LXRydW5rCisyODU5NiBhMzdjZmMxYzk3MTZjN2E2NTgzNGY5M2FhMzk2MGJkYWZhNTFjZmIxIHJlbGVhc2UyMi1tYWludAorMjg1OTcgMmFjMTBkOTMyZDdmNTU5MTcyYjM2Yjk4OWY0NGNjZGY4YmI1MmQwZSBsZWdhY3ktdHJ1bmsKKzI4NTk4IDYxMDQ4YWRhMDViY2M5NTQ5MzI3ZDhhNWI2MTI2M2FhN2U0OGVkM2QgcmVsZWFzZTIyLW1haW50CisyODU5OSBiNmJmYWE2Y2E4NGQwNTRhODE4OWRjYjVmNzAwZDQ5NzQyNDFkMjNhIGxlZ2FjeS10cnVuaworMjg2MDAgYjhiOTJiM2Y1YjE3YzZlY2Y5Yjc5MGU5OWJjMTc3YTE1Y2UxNWYzMyBsZWdhY3ktdHJ1bmsKKzI4NjAxIDk4ZDhiYjJlZTRjMzM4NDgxY2ExYTdhMWFlMmIxYmQ2MmRiMjE3NWYgbGVnYWN5LXRydW5rCisyODYwMiA0MGMzNTE5MTM5ZGU4YjZjMDIwM2NlOTI2YjQyMWI2NTIxY2QwYzM5IGxlZ2FjeS10cnVuaworMjg2MDMgOWVlMmZiMjdkMzNhNzIxODRjODdiMjMyZGMxZTliMjBiYjRkM2RmMSByZWxlYXNlMjItbWFpbnQKKzI4NjA0IDEzZDA2ZTVjOGE1YzNlZjRiOTU1MGRlNjI1ZjQ3OGQ3NDg1MWUyODUgbGVnYWN5LXRydW5rCisyODYwNSAxYzAxOTdmNDljNTljMDM3NzY1ZDU4YTIyMTMxMjAxNjgzNDg0OWQ4IGxlZ2FjeS10cnVuaworMjg2MDYgNWExN2YwOTc4MzI2MDA5YzA2YTEwNmJmZjk2ODVlZjk5N2RhMGNkMiBsZWdhY3ktdHJ1bmsKKzI4NjA3IGY0ZTlmMDlkZjRmMjM5ODNjNjM4YjAxODY1MjJhN2JjYjM5MTkwZGYgbGVnYWN5LXRydW5rCisyODYwOCAyOWVmYzJkODNhZGU2MTlhMGEzNmM2YTI3NjJhMjQ1MTk2N2UwYzU3IGxlZ2FjeS10cnVuaworMjg2MDkgNGY0MDAzMDQzYjUwMTMxZWQ3ZGFiY2QwMDBkMWE4OTUzZmM3Mjc5ZSBsZWdhY3ktdHJ1bmsKKzI4NjEwIDAzODcxMWFlMTNlMGUxODM0OGE1MzEwMThiNDA4YzRhODMxNzBiNWUgbGVnYWN5LXRydW5rCisyODYxMSBiY2RiNjBkZjRlM2VmYjMzMDhiOWU4NTE1YjllNDEwNWQ2Y2U2YjllIGxlZ2FjeS10cnVuaworMjg2MTIgM2VmYmQxOTQzYjhjMWU4ODhjZGNjZjZlM2QzYTJlNjVlNzllMGYwZCBsZWdhY3ktdHJ1bmsKKzI4NjEzIDExNTA1NjBjMTAwMzEwOGYyNjYxZGNjNjkxNDYyYTRmMjljMDYyYWIgcmVsZWFzZTIyLW1haW50CisyODYxNCAyNGZlMmFjNWFkY2MxOWM5ODkyNDgwOWQ5NjA4YzljYTBjODAxNmUzIGxlZ2FjeS10cnVuaworMjg2MTUgOGE2ZjU0Yjc2MzQzNDA3NmM5MmU2ZmY0NWU0NTZjNzE3MDk4MGNkYSBsZWdhY3ktdHJ1bmsKKzI4NjE2IDRiOTg0NDE4OGQwNGU3MGQyN2UwZjU2OTUwMmE5OGNjNzRjNTM4NjMgbGVnYWN5LXRydW5rCisyODYxNyAxODE2MGNiNjM2NTA5Y2ZlNGRjZjYyNTY5Y2M5YTIxNmM5Y2FkZDdhIGxlZ2FjeS10cnVuaworMjg2MTggYTBiZTE4MjYzMWNjM2JhYmQyYjc0NDRjYWQ2ZjUyZDg2YzI4M2EyYSBsZWdhY3ktdHJ1bmsKKzI4NjE5IDQ2YWMzNjUzOTZhNDk3ODRjYjIwMWQ5ZDE1MmZjODBlMGM4ZWE3ODMgbGVnYWN5LXRydW5rCisyODYyMCAyYmYwOTg5MjRiYTQwOTUyZDM0NmJkZWZmMDE5MDI0NmY2YjQ4OGRjIGxlZ2FjeS10cnVuaworMjg2MjEgZjE4ODViOTlhMzljZGFjNjdjNmFmZTBmMDhiNWZhM2ZhMTc2ZGM2MSBsZWdhY3ktdHJ1bmsKKzI4NjIyIGIzYzQ1OGUzYzI4MGY4ZmQ2MWQyNDlhMmUyMDRkMThiNzczZTQ4YjggbGVnYWN5LXRydW5rCisyODYyMyA0NmU3MmE3MDg4NTc4NDRiODJmYTA1YTAxOGJjNDQ3MWY5MDIwYWE2IGxlZ2FjeS10cnVuaworMjg2MjQgOTA5NjBmN2Y0ZjMxNDRkZTFhN2I3MDA4YmZlODU2YmZhYjcwZmVjNiBsZWdhY3ktdHJ1bmsKKzI4NjI1IDQ1ZGYyZGUzNGNkMzliZjdjYmUyNjRlNzA5MmExYzA0NjM1MjhlMGYgbGVnYWN5LXRydW5rCisyODYyNiA1ZDIwN2U1N2QwNDAxNDBjZTNiNTJhNzZlZTI2MDFkNzIzZGY5ZDk1IGxlZ2FjeS10cnVuaworMjg2MjcgNTUwOGUwNGQ0OTdjNjg1MTZmYWRlZWI5MDgzNjRjZjYxZWI1MDU4ZSBsZWdhY3ktdHJ1bmsKKzI4NjI4IDk2ZGQ5OTI3ZTAxMWQ4YjE1YTVhNDNjZWU5OTI3ODFlNDczYTZmOTEgbGVnYWN5LXRydW5rCisyODYyOSA0YjMyYmU2NjE3Nzg1ZDM1MDA1NGI1ZDRlZjk4ZTRjZGE4OGE1M2Y0IGxlZ2FjeS10cnVuaworMjg2MzAgNDcwODFhNzUzZWNjNDgyNjRjNmQ5MjhiMTdhNzhlMWRjMzc3YjJlNCBsZWdhY3ktdHJ1bmsKKzI4NjMxIDY0ZDEwNWRkMDgyM2JhOWI4ODRhMGRiMmQwZDg5YjUzMmEzMThhN2EgcmVsZWFzZTIyLW1haW50CisyODYzMiA4ZGQ2ZjU1ZmQ0YjdlN2VkOWM1YTdmYTA4NjhlODQ4MzczMjJiMjc0IGxlZ2FjeS10cnVuaworMjg2MzMgYzE4NGU0MTY4ZDE0YzhlOTc5Y2Y1ODVhM2ZiMTkwZTA2ZjZjODM0NyBsZWdhY3ktdHJ1bmsKKzI4NjM0IGNiYjZjYzc5ZDMzNjUwNzU0NTAwOWM2YjdiZjc3YzVlNWYyZmY1MDMgbGVnYWN5LXRydW5rCisyODYzNSAyN2Y4MzU0ZjQxYjZlNzI0NjhlZjkyNzhhMmMxMjM5ZmYyNzc0ODVmIGxlZ2FjeS10cnVuaworMjg2MzYgYWZkMDAzMGU0YzM4YzYwZmQ5YTY2NThkYmRmMjYyNmM2ZGZkZjRmMiBsZWdhY3ktdHJ1bmsKKzI4NjM3IGFiZDYyNTQxN2E1MzU5YTA1MzkwYjhjMmZlNTBkYzAzYjI4NzQ2OWYgbGVnYWN5LXRydW5rCisyODYzOSAyZTdmZTU1YzBlMTFhY2U3Njc1NWM1OWQ1ZmQ3MmE5YmM1NjYwNGE3IGxlZ2FjeS10cnVuaworMjg2NDAgMmQxM2Y5ZDk4MTM1NzdkZjVlN2Y4NmRhOTA1MTFjODA4MGVjNGE0MyBsZWdhY3ktdHJ1bmsKKzI4NjQxIGJmNzVmM2E0NTkyN2ZmYjMwYTM1MzBiNDBmOThhZWQ1YTk2MDg1NWUgbGVnYWN5LXRydW5rCisyODY0MiAxZTQ2ZGExZTY1MjI2ZDA3ZWE1MTAzZjI0YmVmMTM0YTg3MjE3ZWYyIGxlZ2FjeS10cnVuaworMjg2NDMgMjQ5MGNmN2U2OGE0NGFlMWVhNTQ3ZWMyYmQxZGY5MTVmMzE0NTE2MCBsZWdhY3ktdHJ1bmsKKzI4NjQ0IDlmM2VhMzdkYzQzY2I3ODU4ZjQwN2U0ODY3OTgyODcyYjgwZDYzOGIgbGVnYWN5LXRydW5rCisyODY0NSA3Njc2OGFkYjZmMjMyOGIyZTFlMTE4MDhjNjg4MzBmNjkzNTc1YmZhIGxlZ2FjeS10cnVuaworMjg2NDYgY2JjZDczZjU4N2FkN2E0OTg4MGJhZDkwNzkzNWQ3N2Q3YTNmNGI2OSByZWxlYXNlMjItbWFpbnQKKzI4NjQ3IDEyOTQ5ZWNlZDU1ZmY3ZDljNDRmOWNhZmUzN2RlYWE1NDZiYmEyNDQgbGVnYWN5LXRydW5rCisyODY0OCA3NWNkNGMyMDNkOGYzYmRmMzQ3NWJmNDQwNDNiNmVlYzFkZWY4NzFlIGxlZ2FjeS10cnVuaworMjg2NDkgNTMzMGMwNjIwODEwZTVkYWFhOGE3YmMzOGVmN2JmNWMxN2MyMGZjMyBsZWdhY3ktdHJ1bmsKKzI4NjUwIDAyMjBiMDA3NWEzNWQ0OTg1YTgyYzE1Y2JiYTk2MmU4MGY4NzdhNDkgbGVnYWN5LXRydW5rCisyODY1MSA5NTFmNWYyOGYyZmViMzNhMzk0YmZhMTE2N2EwMzFjZjk2OWYyYjY0IGxlZ2FjeS10cnVuaworMjg2NTIgY2RhZDZiMDkyMWQ1NzgyNTMxMTU5OTBjYWJiY2I4YzQyNzE3YzgxNSBsZWdhY3ktdHJ1bmsKKzI4NjUzIDRmZDBiNzZjNzQ5ZWViNjFjN2I3NWQ5MzQ2ODZiMDk0MWJlNjVlN2UgbGVnYWN5LXRydW5rCisyODY1NCA4YTdhMmYxZjg4ZjA2NTM0YzZiZDM5MDJjODFiNzkzN2M1ZDQzYWI2IGxlZ2FjeS10cnVuaworMjg2NTUgYWMwZTFlOTMxZjM5MDBjOWVkNjBhNjIxYjY2NTRmMTk5YmE5MTdjOCBsZWdhY3ktdHJ1bmsKKzI4NjU2IDQwZTViMmRhOWYyODQzY2IyYmMzOGY1ODcyYWFjNTU0ZjZmNDVlMGEgbGVnYWN5LXRydW5rCisyODY1NyA1ZjVmMWM4MjU3ODQ0MDAwYzVmZmM0MWM3MTI4MGZmNjJlOGRiZGNlIHJlbGVhc2UyMi1tYWludAorMjg2NTggMmIxNzAxY2Q0NTY2MjE0ZjY2YTRkYzQzNmVmYmE2NWMzYzJlZDJlNCBsZWdhY3ktdHJ1bmsKKzI4NjU5IGU3MDlhM2M4YmZlY2M1ZGZkY2JmMTgwMjMxY2JiZjhjMTA2MWIyZWMgbGVnYWN5LXRydW5rCisyODY2MCAyM2EyYmFkOGQ4MmNlNjQxN2ViZmYwYmMzODYwOWJjZGNjYzgxMmFhIERTX1JQQ19CUkFOQ0gKKzI4NjYxIGZkOGFhN2FlZDRkNTFlNmNmNzg2ZWFiMzlhMjI1ZWNhMmYxNzczZDMgbGVnYWN5LXRydW5rCisyODY2MyAxOTkwNDc1MGMzNjU3Yzc1NzM2MzMwNjBmOGYzZTczZmIyNTc5MTQxIGxlZ2FjeS10cnVuaworMjg2NjQgODA5YzE0ZjExMDFhOTViOTA2M2JhNzM2MTE5OGRhNDEyNzRjNDBlMCBsZWdhY3ktdHJ1bmsKKzI4NjY1IDFhNzg5NWY5N2IzMGQxMzg3M2FkZTk3NzI5NTA1MDU1N2MzYTA2NzIgbGVnYWN5LXRydW5rCisyODY2NiA4Nzc1ZGVlNjBkODlhNTU5YWFjOWI3OTA5NTk3ZmQyMGViOWU3NTVmIGxlZ2FjeS10cnVuaworMjg2NjcgMjk3MGU1ZTc2MDFmZjI2YmU0Mjc5NjVkNmE2MGExNGRiODM2MjU3NyByZWxlYXNlMjItbWFpbnQKKzI4NjY4IDhmZDRlMjJlNzhmMDFjNWM4NzI5NDRiYzljMWY1ZWU2OTQ0MmIyNTUgbGVnYWN5LXRydW5rCisyODY2OSBhYWMxZWU5NjZmNTZhNGQ2MGEyOTI0OTlhMWU2YzY4ZWE3MzNhODEwIGxlZ2FjeS10cnVuaworMjg2NzAgOGQ3NTFiNjJlY2M0MjViNGUwN2ZmNDM0NTc0MDA5NDM1ZmZhYTVkZSBsZWdhY3ktdHJ1bmsKKzI4NjcxIDk2YjJmZmI3N2IwMTc0MzdlNTBkNDkxM2FkMWYzM2FmNmY0M2Q1MjMgbGVnYWN5LXRydW5rCisyODY3MiAyOTMwZmFmMTI1Y2E5ZjNmZDQ1YzE1M2IzNmRkYTcyN2FlZGI1OGQ2IGxlZ2FjeS10cnVuaworMjg2NzMgNzAwOGU1MzU3OWViZDc1OGZmNzhmOTdlYWQ0N2IyZjVkNWM2OGZlNCBsZWdhY3ktdHJ1bmsKKzI4Njc0IGEwZjY0MTljYjEzZmU2YWNkYzVjZWQwYTEwMjc1ZTE0M2U1YTlmODYgbGVnYWN5LXRydW5rCisyODY3NSA3NzhmNzIyMWY5NTUxMTU1MjEyNDcyM2VkNGM4YmJiNThiNTU3M2VkIGxlZ2FjeS10cnVuaworMjg2NzYgY2MzNWQ3Yjg3ODUyZjQxODhhYjljNmEwOTAxMmE4MDQ3ZGFmNmI0NSBsZWdhY3ktdHJ1bmsKKzI4Njc3IGM4MDQ0MTIzZDExMGI2ZGFhYTE5N2IxOWI1MWMzNzJjMjM0MGE5YzYgbGVnYWN5LXRydW5rCisyODY3OCAwYmY5NjhlZTE1Yzc2NTRlZjc3NzUzZmQ2ZDEzOTFhM2ExYTBlMmYzIGxlZ2FjeS10cnVuaworMjg2NzkgMWJiZWRmNTQ4MWM4YmI5ZDhjODA0Y2Y0YWIzZmY3NTA4M2VhM2UzNCBsZWdhY3ktdHJ1bmsKKzI4NjgwIGUxYmE0MWRjOTc4NDI4MTY4MmNlMjQxNjdmMzMzODFlNDc4YmJkZTEgbGVnYWN5LXRydW5rCisyODY4MSBkYmYzY2MxZjQ3MzNjNWVhOWJjNDVlNDA3ZmUwNDU3ZDU0MjdjMzRmIGxlZ2FjeS10cnVuaworMjg2ODMgMTM4NWQxNzlhMTdhZGE0MjExNDFlZDhlMGU3YWJmMDBlNjQ1Y2ExNyBsZWdhY3ktdHJ1bmsKKzI4Njg0IGIxMjhlOGExMWUyOTVhZTIzZTk5ODY2NWExYzNmYjhkYzBmNTU5OWQgbGVnYWN5LXRydW5rCisyODY4NSA0ODBjYWY3YzBhMTRlMDQ1ZWMyOGMwMWVmYzlkNzdmMzY4NGE4NTFlIGxlZ2FjeS10cnVuaworMjg2ODYgZmMyYjczODAyZjdiOWQ5NzFkODVkNDZlNmZkYmQ1YzE3NjE1ZDNmMiBsZWdhY3ktdHJ1bmsKKzI4Njg3IDFkZDdlNTFmZTBiZTdjYWI2YzliOGE0NjBiOTE2ZTcwM2IwYTgwZmIgbGVnYWN5LXRydW5rCisyODY4OCA0NjkwY2E3NTViZWM2MzlmYmJiY2I2ZjFiZTI0M2RiM2RmM2MwYzRiIGFzdC1icmFuY2gKKzI4Njg5IDZiMGU4NDZiOGQzN2U1NDE1N2FlNzZmZWViOWIxMGE0MjZlODYyMzcgbGVnYWN5LXRydW5rCisyODY5MCA5ZmNiNzdiMDRmOTdmYjMwOTcwYWNlNTI3ZTg0NDI3NTFiZTQ4ZmVkIHJlbGVhc2UyMi1tYWludAorMjg2OTEgNmViOGRiNTNmN2ZjYWM0ODBhMDQxNTMwNWUxOWQxNzQxZTY0OTM1MSBhc3QtYnJhbmNoCisyODY5MiBlMjA1YzdkZTVhNWE0NTRhM2MzNzExMmQzOTc1Yjk2ZmU5MDgxMzFjIERTX1JQQ19CUkFOQ0gKKzI4Njk0IDI5NTU5ZTIxY2Q1MzA0OTNmYjQ1Y2RhZGZhOTA1YWIyNzVlMTc3MjcgbGVnYWN5LXRydW5rCisyODY5NSAxYmQwODliMWRiN2ZkYWFjOTViNjBhZDc2ZDM2OTY2YTgyMDhjMTdhIGxlZ2FjeS10cnVuaworMjg2OTYgM2RiMDNjMGQxNTMxMGFhNGMxNzk3MWMzMjY4OTY0N2IzNjg4YTNlOSBsZWdhY3ktdHJ1bmsKKzI4Njk3IGU1N2U0YmI1MzJiYWI0ODkwMjE2ZjVmOTZmNDU5YWExOWI4OWYwODkgbGVnYWN5LXRydW5rCisyODY5OCAwNGE1NDFlNjg5NjQ0MmE2MTY2NmZmOGVjZTg0N2FmZDQ4ZWM0YzAzIGxlZ2FjeS10cnVuaworMjg2OTkgYWQ2NTI4NjkxYzMwOWFhODc5MmVhZGI2NGVmMGE2ZTIxNzU5Zjc0YyBsZWdhY3ktdHJ1bmsKKzI4NzAwIDBlYzQ3NTNjY2IwZmI2MmUxNTQzNGI4NDYwN2ViZWY4NGE4ZWFlMDUgbGVnYWN5LXRydW5rCisyODcwMSA1MjcyYjc2M2MyOWM5YmE3ZjRmYzJiMDA5YmI2ZmE1OTcwYTc3NDMyIGxlZ2FjeS10cnVuaworMjg3MDIgNjE1OGZjYTViY2JmMjJhOWY2MTgxNWEyYzAzMmY2N2RjYTY0OThlZSBsZWdhY3ktdHJ1bmsKKzI4NzAzIDRiNjE4NTEyODgxNGMxNDNjYzkxOGIwOGIxOThlZjZhYTlkZDZjOWIgbGVnYWN5LXRydW5rCisyODcwNCBmZGE0OGRkOTRiMDcwNDkzMWU1MmFlMmRkN2E4NmMzYWEyNjRjM2VkIGxlZ2FjeS10cnVuaworMjg3MDUgNzM0MjljYTc0OGNlYmJhZTJlNDlkOWZlMDhmOWUyOTRkYWRhY2RlZSBsZWdhY3ktdHJ1bmsKKzI4NzA2IGU5YTYzZTQ4MzEwOWNlOGM5YjU5NTBlY2E0Y2FlMTZkMjE2ZjY0OWUgbGVnYWN5LXRydW5rCisyODcwNyA4NWQ4MWUwOWUyZjdkNzk1NGEyYTQ2ODY1ZDY1NGMxNDU0ZWQ1MGI0IGxlZ2FjeS10cnVuaworMjg3MDggNmVjMTU0Njg0MGFlNjYyZmY4NWFmOGEzNjk5ZDEwMGQ5OWNjNjFhNiBsZWdhY3ktdHJ1bmsKKzI4NzA5IGEwM2Y3Nzg2OWIyZjU0OTYwMmYxZGFmNWYyOTk3OGVmMjMwYmIxOWQgbGVnYWN5LXRydW5rCisyODcxMSA5NzNmNWZmMjA3Y2M1OGE1Yjk1MmQ4MTk3OTNjNTdkMzIwNjFkOTM5IGxlZ2FjeS10cnVuaworMjg3MTIgNWVhODJjYjU1NjgyM2Q1YmM4YTEwMTc1YTZiNjA3NDlhZTgyNmI4YSBsZWdhY3ktdHJ1bmsKKzI4NzEzIDg1NGRkNzY5NmViMmJlYWNhMjdjZjU3NDgzYWZiZTg4YzQ3NTkyMjQgbGVnYWN5LXRydW5rCisyODcxNCA1N2QzYjk2NjUxYjZlYzg2MzUwODQ3OWQ3OThiYzc5NjhmZTgwY2M2IGxlZ2FjeS10cnVuaworMjg3MTUgOGNlNGJhODUzOTY5MTlkMWYyNGYyOThlZDUzNGEwMGIxYzVmOTFjZiBsZWdhY3ktdHJ1bmsKKzI4NzE2IGM2ZGU2OGNjOGUyYmJjZTk3MGMzZDM3ZWQ0OTQ0OThkYzI0ZGI0MzggcHktY3ZzLXZlbmRvci1icmFuY2gKKzI4NzE3IDkzZTI1NDU3N2NmYTUzMWI5ODhkOGZhMjgzYmE3OWEyMGIwNDBkZjcgcHktY3ZzLXZlbmRvci1icmFuY2gKKzI4NzE5IDk4ZTEyYWE4YzU0NzVmNTdiNDMyNzkyMWQwZDRhOTY1ZTY5NzIwZWQgbGVnYWN5LXRydW5rCisyODcyMCBmYjAwZmQ5MzE4OGE3NjU5ZjgzZGFmY2VkZjhlMWViNzJkODMxMWE4IHJlbGVhc2UyMi1tYWludAorMjg3MjEgYzc3MjY0MGQ1MzVlMDQ0MThhNzRmZWQyMzkyNGJmNDFlMjQ4MTQ0NiByZWxlYXNlMjEtbWFpbnQKKzI4NzIyIDZjMjFlOTVhNDg4MTc3NTZkNmFkMGUxNzE5YTlkOWQwOWJlZWUwNjEgbGVnYWN5LXRydW5rCisyODcyMyA5Yjg5MjRiZDViNWNjZGRkMTRhNjZjZTEzNzBkY2I0YmI0MmQ1OTEyIGxlZ2FjeS10cnVuaworMjg3MjQgZjNkODhlZTA1OTI4ZDUwNjFjMGRmNDE0N2FmNDc2ZTYyMDI4ODA0NyBsZWdhY3ktdHJ1bmsKKzI4NzI1IDQ2OTJjNDg3ZWU5MTFlYWM1OGRjYWM1ZWI1MGI2MjM3OTM1NTJlZGQgbGVnYWN5LXRydW5rCisyODcyNiAxYmJmOGU1NWE4YmI5YjBlZTQ0NWM5NDljYTZhNzA4NTZlY2EwNTBmIGxlZ2FjeS10cnVuaworMjg3MjcgYWVjMGY5NDRmNmEwMTc2MWYzMDNhNDQwMzFkYjc0Y2U1NWNlZDU3YiBsZWdhY3ktdHJ1bmsKKzI4NzI4IDYwOWYzZDMxZDFjMjRhNzMwODhmNWMzNWY0N2VjMGY3ZmJjNGJlZjkgbGVnYWN5LXRydW5rCisyODcyOSBjZDcwYzg4MDNlYjVjMGQwYTRhYmFiNGQyYmZmY2FmYTViYWVhMTFkIGxlZ2FjeS10cnVuaworMjg3MzAgYzk3YTRjZTNjNThlZGFiZTY4NzE4NzhkNzA5ZWMwNjBhNWRmOTRmOSBsZWdhY3ktdHJ1bmsKKzI4NzMxIDRkNmY4MjA0MjM0YThkNjljZWQyYTM1YzMwZWJjOWNmNDEzZmVmYWQgbGVnYWN5LXRydW5rCisyODczMiBiNjRmYzZhMTA0OWU5YjcxNTdmOWZjNzFkMzk2NDBhNGI2OTJiMTIxIGxlZ2FjeS10cnVuaworMjg3MzMgYzQ1NTY0NzY4ZjUyNmVkZjlhNmJlMTkyOGNkZGRmOWI4OGMzZjIyMCBsZWdhY3ktdHJ1bmsKKzI4NzM0IDA1NWY3ZmFlODE1MDkxMzRmZTM5ZWMxYWM2YjQxYWYwZmI3NjI4YzYgbGVnYWN5LXRydW5rCisyODczNSA3NTJmNjg5NWNjNjMwYThmZjRkYjdhZmIwODM4N2NjOTU4ZDMxYTM4IGxlZ2FjeS10cnVuaworMjg3MzYgZjVlYzA4ZDQ1ODU5Mjg3NGM0OWRlYzI4MzFiNzVjNjM5MzFjOWE4NyBsZWdhY3ktdHJ1bmsKKzI4NzM3IGRhNGU1ZTQ2YWUzZmI5ZWQ2OTgxYmIwOGFiZTVkMWMzYTY2MWUzMWYgbGVnYWN5LXRydW5rCisyODczOCA2Nzc3ODExOTYxNTI2MDc3ZmE4ZGJlNzk5NDI1N2EyYzJmYzA3MDk2IGxlZ2FjeS10cnVuaworMjg3MzkgNjFjMjUwNmVjMmU4ZWE0ZDBjZjlkNTM1NTRhMjRjMmZjNGFhODNmNSBsZWdhY3ktdHJ1bmsKKzI4NzQwIGRiZjkyYzU1ZmJiOGI3ODkyMmM2NDFiNmUzZTVlMjEwZDU0OTgwNDggbGVnYWN5LXRydW5rCisyODc0MSA0MDE0OWI1MDAyMGNiYjY4NmVjNzc4NDU1OGY3M2ZmNTJmNjhjMGU4IGxlZ2FjeS10cnVuaworMjg3NDIgMWIwZWE0NzI3OWM2OGFkOGY0MGQ0MGZhMjM1MTM1YTVlMmIxYTE4NyBsZWdhY3ktdHJ1bmsKKzI4NzQzIDdiZTI2NTQ0YmU0ZTM1ZTRmZTViYzdlN2Q1NDFkYjYwM2U2ZjQ2N2EgbGVnYWN5LXRydW5rCisyODc0NCBjNjcwOTQ1Yzg2OTUyMjg4OWMyMDU4OThjMzYwYmYwMTZlYjhiNTdkIGxlZ2FjeS10cnVuaworMjg3NDUgMjJkMTk4OTEwYjIwOGE2MDY3NDI2NmNjMjEyNjc1YWIxMDA2NDQ0NyBsZWdhY3ktdHJ1bmsKKzI4NzQ2IDFjN2VlMjNkYzQ5ZTE2OThhZTc5NTA1Yzc2MGM1ZDM5MmM5YmUyYjYgbGVnYWN5LXRydW5rCisyODc0NyBlZmU2MzkxNTFiZmVjNWJlMjFhZjUyMTA2MjkxMDM5Mzk1MTAxY2MyIGxlZ2FjeS10cnVuaworMjg3NDggZWIyOGRjZGRkMzRkYmJjMjZlN2UyMGY5NjUxYmJhYTA0NTVjY2Y1MSBsZWdhY3ktdHJ1bmsKKzI4NzQ5IGRmMDNmY2M2NjEwNDM2MTgzODczNTM1MzAxNGMzMTE2YmIzMmRjN2MgbGVnYWN5LXRydW5rCisyODc1MCA3MTc3OWI4MzllMDk4NzRkOWJhNDkzOTc3NWEwMDMxNWFmNWViMmE3IGxlZ2FjeS10cnVuaworMjg3NTEgMDM5OWM4YWVhN2IyODYxZDE3ZDgyZjFiOTljZjc5YjM3OTY5MzE5MSBsZWdhY3ktdHJ1bmsKKzI4NzUyIGJkNjUxMGM1Y2FiYzQ3ZDk1ZjVmNmZmMDk0M2NjYjcxNTMwZjJiOTQgbGVnYWN5LXRydW5rCisyODc1MyA0NjhjM2JlNmMzZTJjZDEyNDg5YWViZDEyNjc3YTUzMzAwMDU5NzUyIGxlZ2FjeS10cnVuaworMjg3NTQgYWJiNzY4YjQxN2ExMzMwZDZmNDNlZGQ2ODQ2N2I4ZjVjYmQ5NTQzMCBsZWdhY3ktdHJ1bmsKKzI4NzU1IDg2ZmY5NWIxYzYzNmQ1ZTE1OWUwYjQ1OGY5ZmE2YzMwMGI2YWUxYjEgbGVnYWN5LXRydW5rCisyODc1NiBlYjdiN2I3MTllZTU2NDlkZTkzNjQ0ZTUyMmMzNWQ4N2QzNzFmMzgzIGxlZ2FjeS10cnVuaworMjg3NTcgYmQzYjkyZGM5NDBhNjQ5ZWM3ZWYwZDJkMWExNjZiNzY1ODRjZjNjYiBsZWdhY3ktdHJ1bmsKKzI4NzU4IDhlZGExNjZiMTA0ZWNhOTA0ZGEyZDg2MTEzOWE3OWU3NjAxOGFjN2UgbGVnYWN5LXRydW5rCisyODc1OSA5MmEzZDg5N2U4MTkzZWQyMzhkMzRmMTY2NzAwMjE4YjY0ZjUzNGUwIGxlZ2FjeS10cnVuaworMjg3NjAgNTNlMmM0NDhiMTY5YTMyNzUyNDAxYWE2ZDgxYjEzM2U0YWIzYzY4ZSBsZWdhY3ktdHJ1bmsKKzI4NzYxIGI5NjhmMDM4MjM1ZWExYTU1MTM0ZTgxNzdjY2NhMWU5NDNhNmJhN2EgbGVnYWN5LXRydW5rCisyODc2MiBkZjBmZjViMTdlMWFhMTVkZGI5ZDgwNzZhMDMwNWRkMzEyZDJiZGUzIGxlZ2FjeS10cnVuaworMjg3NjMgZTllNzRjYzU1NDBhZDhiYTBmMWIzZGUyOGFjMjg1OWY4YWJmMTgwMyBsZWdhY3ktdHJ1bmsKKzI4NzY0IGJkYzNkZWYzZDA4NWRkYWQxZmI4YTllM2I5ODJjYzVlODhlZTBkZjIgbGVnYWN5LXRydW5rCisyODc2NSA4MjNmMDJhMjIyMTBkOGE2YTRhZGE3NDI3MDQwZWVmNzNkZTEyY2NlIGxlZ2FjeS10cnVuaworMjg3NjYgMTRhZDU2MGY0YTk3ZjgxYjY5ZjVmZDZhOWQ2Njc1Y2JhMTliYmUwMSBsZWdhY3ktdHJ1bmsKKzI4NzY3IGYxNzU4MjcyNzY0YzcwYzUyOTMwNTAwMjBkMGJjMDkxYzRiOGQ5MzkgbGVnYWN5LXRydW5rCisyODc2OCA3ZGU4OGNmMDc4M2UyY2MzYzIyZDU2YzdkYThlYmFiMWRiMTFkZjZkIGxlZ2FjeS10cnVuaworMjg3NzAgOWM3YTA2YWM4YjI3NzJlOTQxY2Q0MmYwZjA1MDNiZDQzOWFhODA3ZCBsZWdhY3ktdHJ1bmsKKzI4NzcxIDI0ZTc4OWI2Y2NiNjQxNmQwNDNmNjRjOWFmMmUyNDk4MmM1NTU3ODMgbGVnYWN5LXRydW5rCisyODc3MiA2YjYyYWI4NDg1ZWI4MTk2NDdjYzQ3MTZiNWI1NDE5ZTc2ZmU2NGViIGxlZ2FjeS10cnVuaworMjg3NzMgMDczOTA0NmEwYzNhNTE0ODM0ZGZiMmFiOTI3YjUzNGI1OTIyNDNlMCBsZWdhY3ktdHJ1bmsKKzI4Nzc0IDMzN2ZjYzI0OTg1YjM0NGFiNmI4ODM4YzM3ZGU1ODhkYWU0MzZkMTkgbGVnYWN5LXRydW5rCisyODc3NSBhM2IyOTU5MThjNWZkNWE1M2NmMTBhYzYyNGQ2YjIwYWE3YmQyMTc5IGxlZ2FjeS10cnVuaworMjg3NzYgMzNiMjQ5YWY0MzY0ZGM4NGI4YWUyMWNmNTQ0NGU2ZTdmZTRhZGUzMCBsZWdhY3ktdHJ1bmsKKzI4Nzc3IDljOTU0ZTY0ZDE3YTk0YTBiMTQzMGVkYWE1NjhjYjBkOWJhNTdkYjYgbGVnYWN5LXRydW5rCisyODc3OCBhMzAyMzA4ODE5ZjA1ZGE4NzkxNzczNTlmY2RmZmZkZDdlODE3MTkzIGxlZ2FjeS10cnVuaworMjg3NzkgMmY0NGE5MGZmZjA3N2VlYWZiN2MyYzk2MjlhMmY0NjhmODAzNjkxYSBsZWdhY3ktdHJ1bmsKKzI4NzgwIDJhZTJhMjAzZjQ3YWMyYTZlYTU5ZjUyMGJhOTg3ODhkNDdjMTg5OGYgbGVnYWN5LXRydW5rCisyODc4MSA5ZjYxNzEwNjI4YzRmMjk1YmI1MTZkNTMzYzFkZWQ0OTBhMjRhOWFlIGxlZ2FjeS10cnVuaworMjg3ODIgMmMzYjUzOTdjM2Y5ZWMxMTY4OTZhYjhmMGJlMmVlZjQ3ZWQ3MDUxMiBsZWdhY3ktdHJ1bmsKKzI4NzgzIGJkMjRjMjU5OGE0MjlkNzZmMTUxMGI4NzkwZWNjYzA3N2ZiNzliZDggcmVsZWFzZTIyLW1haW50CisyODc4NCBiNTI5YWMyZjlhYjY0YjkwYmQwMTUzYWRiOTMyODRlOTFiN2U1ZjljIGxlZ2FjeS10cnVuaworMjg3ODUgNDlhM2ViZTlkZjE0NzY2NTUzYTExMWU3ZjQ1ZGEzMWEzZTk3NWFiZiByZWxlYXNlMjItbWFpbnQKKzI4Nzg2IDZlYTg5ODdjNzQ2ZmI1NWU3Njk0MGU5MWUwYzczNzUyZGUxNzYzZDUgcmVsZWFzZTIyLW1haW50CisyODc4NyAyN2ZmNjk0YzhjMDUwYjQ1ZjFhOTdjOTk0MDM3YmQ4NWNjZmE4MTc4IGxlZ2FjeS10cnVuaworMjg3ODggM2FlY2E2YzUwZjM4MDBjYWU4YjUyOWViZmY4YWNlZmU2YzMxODQwNyByZWxlYXNlMjItbWFpbnQKKzI4Nzg5IDgwMjU4M2Y4OGFlMGQ4MjU5MjlmZmQxYTVhMDFjYmZiM2YzOGNhMjkgbGVnYWN5LXRydW5rCisyODc5MCBjOGNiODk3OTA2MmNlN2Q2MTZiNDYxYTA1MWJkOTI1Y2NhYzk1M2ViIGxlZ2FjeS10cnVuaworMjg3OTEgMGViODgyMDY4YTdjZWUzNmJmMWM5MjliMjAzNjk2OTRmOWEwYTAzZiBsZWdhY3ktdHJ1bmsKKzI4NzkyIDg2NjIwYWZiMjIxMjRiZGIxNWQ4OGEwYTRiNjQxY2EwM2RiODJmOTUgbGVnYWN5LXRydW5rCisyODc5MyA2ZGVjNzRmNDQyNDIwOWRmM2E4OTU5YTkwZDgwMWZmMmRlOTUxNDRlIGxlZ2FjeS10cnVuaworMjg3OTQgMzdmYzZhODNhMTM0ZWE3MmQ5NWQ2MDRhNjQwZjQ4NDgxY2Q0MGMwOCByZWxlYXNlMjItbWFpbnQKKzI4Nzk1IDU4NmZhMjQ0NTk4MjQ3MzJiNDVjZGNhZDQ5ODQxYjQzYmU1ZjYxMWQgcmVsZWFzZTIyLW1haW50CisyODc5NiBjNDNjNDI4MzkwMTE4ZTE1NDM4Y2QyMGMxMjkzN2FjYTVjNGZmNzE3IHJlbGVhc2UyMi1tYWludAorMjg3OTcgZTdkYjFjOWExMGZjYjg3MTEyMjg2ZjhlYWE4NjAwMzFlMDE2OGI4ZCByZWxlYXNlMjItbWFpbnQKKzI4Nzk4IDAzM2FkY2JiNGNiMmE3NDRhOWIzNDI1NzRhYTVmYTVjZDY1ZTk1MzkgbGVnYWN5LXRydW5rCisyODc5OSAyYmE4MGE0MzEyZmY1MDIwN2I1MjNiNzc2NTU5ZmI3NTMzYmVlMzhlIHJlbGVhc2UyMi1tYWludAorMjg4MDAgODVhYjQ2NTBkZmFhNmE0MzEyZmM3YzU5Njg5YmZmYjIxYjgzNTVkOCByZWxlYXNlMjItbWFpbnQKKzI4ODAxIDk2ZTJlZmZlYzk0ZDFiZWE1OTBhNjM3MDQ0NzY5ZjdlNWQ5N2Y2MmEgcmVsZWFzZTIyLW1haW50CisyODgwMiA5ODhmNDI1ZDE3NjY1ZTdkY2NlNTAyMGZiOTQyMTU4MTdkNDM5OTgxIHJlbGVhc2UyMi1tYWludAorMjg4MDMgNDYxNzBlNTYwZTAxZTE4YzdkMmE4MzkzNGQwMTVmODc5MWQ2YTI0OSByZWxlYXNlMjItbWFpbnQKKzI4ODA0IDFmOWU5Nzk4MzAyYmZmYzBiMTcxYjhhYWI4NDAxMjg3N2FjYjFkY2EgcmVsZWFzZTIyLW1haW50CisyODgwNSAwZmJiNzZiNTA3NGI3ZTkxZmY0Y2NkYjJiNGQzNTBlYmZlMTUyYTlhIHJlbGVhc2UyMi1tYWludAorMjg4MDYgM2Y1MDQxMjk1NDQ4Yzg2YmU1YjliMDY3OGM4ODk4MzNmNTJlYjdhYiByZWxlYXNlMjItbWFpbnQKKzI4ODA3IDUyNTViNDVmZGRjMjU5YWI3OGIxZDgyZDlkZmZmOTIzZGFmMjczZmYgbGVnYWN5LXRydW5rCisyODgwOCBmM2MzZTczMmQxMmU2OTRiZTFjY2Y0NTAyYmUzYzM3NzdkZWNmYmUxIGxlZ2FjeS10cnVuaworMjg4MDkgNTI0MjBmZTY3Yzk2OTAwNDdkYTNjODA5NzkxMTgyNWVlMzQ1YWUzZiBsZWdhY3ktdHJ1bmsKKzI4ODEwIGM2MzEyMzYwYzg2MTcxZmRjYTllZDIyN2QwZWYwNzM2MTc3Zjg5NmMgcmVsZWFzZTIyLW1haW50CisyODgxMSAzN2Q4OGI0MmVkMTFhOGEwOTIzNzlkYzhjMzJmNmUyN2YxNmEyNjFmIHJlbGVhc2UyMi1tYWludAorMjg4MTIgNjUxMzQ2NmJiNzc0N2EwNzM0ZjlmZmM3YTI3NWNiMmI4NjY3ZWFhYiByZWxlYXNlMjItbWFpbnQKKzI4ODEzIDBiNjhkODEwYThiZWNmMmI4Nzc5OGM0MjAxNDQ2M2Q5M2NhZDczMmIgcmVsZWFzZTIyLW1haW50CisyODgxNCA5ZGQyMWMxZmFkOWE0MDA3MDMwMDkxMTRkMDk3OGQ5OGEyNjdkZjlkIHJlbGVhc2UyMi1tYWludAorMjg4MTUgNzg2ZTBlOWE1ZjdmOTI4MjdlMmQ1N2RjZTFlZWIwYzFhYTg1NzkwMCByZWxlYXNlMjItbWFpbnQKKzI4ODE2IDExNmIwODU4ZDRiMGJkYjAyNDRkZjRkYTMyYTExMzM4M2EyMWZkN2QgcmVsZWFzZTIyLW1haW50CisyODgxNyA2NTFhYmNmNjNmZTEzZDNlMjZmMDg4Mzg4NzBjYzE2MDgyMDg2MGEyIHJlbGVhc2UyMi1tYWludAorMjg4MTggMmJmZTQ0YzRkYWNiZjM3OGQ0Mjg1OTY2ZTAwMmZjNzhkZjJkOWEyMiByZWxlYXNlMjItbWFpbnQKKzI4ODE5IGNhYTNhMmZjNmEyMDg2NTlkYjE1ODIwMzgxNDE4NGE3ZWI2NTZhY2UgbGVnYWN5LXRydW5rCisyODgyMCBjMDY2ZGMzZWExNTIxNjk4ZTZjMGNiYmE0MzVkYWNjZTVkYTY5MzQ1IHJlbGVhc2UyMi1tYWludAorMjg4MjEgZTg0ZDMyNGFjNjZhNDg4NjVjNDhmYzIyZjg3OGI4OTc5ZTQxYmJiMSByZWxlYXNlMjItbWFpbnQKKzI4ODIyIDRkZjBlNjkxZjRkYWU4NmIwN2NlZWQyNTMzOGZmZjFmNThjYmRkMTMgbGVnYWN5LXRydW5rCisyODgyMyAyZGNiYmJiMDA3YzJhYjc3YzBkZWU5OWFkNTlmNmMwY2JhNDkxNGIxIHJlbGVhc2UyMi1tYWludAorMjg4MjQgNGQxMGMzMTc5ZWFkMGY1NjI4MTM2MDVlYzNiMzI4YTdmMzc2M2JkZiByZWxlYXNlMjItbWFpbnQKKzI4ODI1IGZiYzgyMGQ3MDFiY2E5OGNiYzQwNGZmZmFhNTA0OTNiODMzMTc1ZDggcmVsZWFzZTIyLW1haW50CisyODgyNiA1ZTRlOGMxYWI3MDQwMDEzMTJlMDc5MjFhMGEwZjQxMzdiMjYwMTM2IHJlbGVhc2UyMi1tYWludAorMjg4MjcgNGRmODA3YWRmZjg3M2Q1MGIxM2FhM2M5YmUzN2I0ODBiYTVjNjFjOSByZWxlYXNlMjItbWFpbnQKKzI4ODI4IDEwNzY3YThjMmUyZDY1Y2Q5ZTM1YjIxYjAyNDE5ZmEzMWUxNTUwOTQgcmVsZWFzZTIyLW1haW50CisyODgyOSAwYzQ0ZmEwNGY1MzM1ZWZkZDhlMzMwMmY4ZmQxZWEzYjQyYWQyNDMwIHJlbGVhc2UyMi1tYWludAorMjg4MzAgZTUzNzg3YjFhZDg1ODE4MDZjMjVlYTZhYzRhYjg5OGExMDA4Mjg4MCByZWxlYXNlMjItbWFpbnQKKzI4ODMxIDcyNWY4NzU5N2FkOWUyN2NjNDc4YjFlZTI1MWQ2OGEzNDBkN2Y4NWMgcmVsZWFzZTIyLW1haW50CisyODgzMiBlODg5MWU2OTUyZWI2MDE1Y2MwNjAwOGZkYzdiNzA3ZTdmYzY4NmI3IHJlbGVhc2UyMi1tYWludAorMjg4MzMgNDYyYzM1YjlhYzFmYTRhNDYyNWMwMWU3YTkzYzg2NmE0M2EwNDM2MiByZWxlYXNlMjItbWFpbnQKKzI4ODM0IDgwY2UzODRkNDA4YTZmOWU5NDZlMzliMjkxNWVhMTM3ZDVjYWNhNzkgcmVsZWFzZTIyLW1haW50CisyODgzNSA5MTExMDc4Mjk5MDNiOGFlMzBiNzIzMDdkNTkzODQxN2E1ZGE5NjI3IGxlZ2FjeS10cnVuaworMjg4MzYgZTVlMDU3YTZkMjgxZjMxNWZkMmE3MDk0NjFkMmUxYTZmMGZjYzAzZCByZWxlYXNlMjItbWFpbnQKKzI4ODM3IGRlMjFlOTNiYWRmNjM2NTgzM2M2Zjc5M2VhNGU2YmE4MDI2Y2YxZjkgcmVsZWFzZTIyLW1haW50CisyODgzOCA3OTI5ZDc1NjZhOTQyODkxOTc4MDE0OWE5YmY0OGE2NTY3MjliY2ZhIHJlbGVhc2UyMi1tYWludAorMjg4MzkgYmIyMDMzYzhiOTJmZGRjNDE5ZTNmMTliMjdkMDg2ZDdjNGNlYzY0ZSByZWxlYXNlMjItbWFpbnQKKzI4ODQwIGY1NTllOTdhNDFiZTRkMGI0NmQ5N2FmMWU3NThlY2Y0NjZjZDk0ZTIgbGVnYWN5LXRydW5rCisyODg0MSAzMGJmNTU0OTFlNzllZGQ5Njk4YWQzOGM5YTQzYjI1ZjE1ODI3MTZjIHJlbGVhc2UyMi1tYWludAorMjg4NDIgOWNhNjA5ZjhiZGYyMjYxN2M0Nzg2Y2RlNzMzMDYzYzBiYTdiNmIxOSBsZWdhY3ktdHJ1bmsKKzI4ODQzIDg4ZDBmNmQ2YjAzZWMxYmE1OWYwYjIwMzE0M2NhNGQ1MmUxZWUxZGEgcmVsZWFzZTIyLW1haW50CisyODg0NCBiNDZjN2RhMDY0MTBlNzFmOTdjNDk3NzNhMmRlN2YzMzc3MDdmNDU0IHJlbGVhc2UyMi1tYWludAorMjg4NDUgZGMzMTY2OGE3YzA5ZGNiYjE1NzI3OTNkZTNjY2FmMGU5MjdiM2RmYyBsZWdhY3ktdHJ1bmsKKzI4ODQ2IDk3NDI0Yjk5ZGY5MWM1OGYyMTUxNjM1MDE3MTIzMjUyMTIwYzE3MjkgbGVnYWN5LXRydW5rCisyODg0NyBkNGZmOTg0MTQxN2FlMDZmMjUyZjM5ZWUzMjZjZmYzOGNiMzk4NzVmIGxlZ2FjeS10cnVuaworMjg4NDggMDIyNmYxNjU2ZDgxNTFmNzhhZmQ5MzQ4YjhmZjY3MjI0YThmM2QxYyByZWxlYXNlMjItbWFpbnQKKzI4ODQ5IDcxMDM1NDgzM2JkMTk4MDk4ZjU2NmFlNDUwZmU0ZDg1MTk5ZjAwYjMgcmVsZWFzZTIyLW1haW50CisyODg1MCA1MWNkZjQ3MGY5NzQ0MDlmNWIwMTdiYmYxZTZhZDNiNDJjYzIwZjJlIHJlbGVhc2UyMi1tYWludAorMjg4NTEgNzVjNGE2N2RjYjhjMzYwMzIxYWJiNTFmYzZiNDI4NTBjOTlmNjI4OCBsZWdhY3ktdHJ1bmsKKzI4ODUyIDQxMGY2ZWFiYmMwYjg4NDRhMGExZjIwZmY0YzFjY2FhYThkODc5MDYgcmVsZWFzZTIyLW1haW50CisyODg1MyA2ZmMwYjcxNmMwMzg5YTA4ZDM3MWUyNDJmMDk0NDdjNGIxOTJkNjY2IHJlbGVhc2UyMi1tYWludAorMjg4NTQgNDA4MDFkZjg1OTEyMWE0ZTYwYTA5NzhmNjQxODI0NzQ2ZGM4OGJlZSByZWxlYXNlMjItbWFpbnQKKzI4ODU1IGI0OGEyMzZiOGM3Yjc3ZDgxMGJhODA1YjQ2NGIzNGJiNDkzYzIwY2YgbGVnYWN5LXRydW5rCisyODg1NiBkOTM1YTFkNzAyMzBiOTE4ZmU2MmU5ZjA4ODg4NTIyNTE5MWJkYjQxIGxlZ2FjeS10cnVuaworMjg4NTcgNGQ3ZTllNDBkM2U0YWM5ODI3MWZkMmY0ZmU2ZDIzMGMyNmRlMmI1YiByZWxlYXNlMjItbWFpbnQKKzI4ODU4IGQyZGJlYTE3ZmM2ZmU4YzBkMDY5ODNmOWQxOTU2NDA0YjExNjI4MDcgbGVnYWN5LXRydW5rCisyODg1OSA5NDMxNWE5N2IzOWU2NmVjYzVjMTUwMmU1MzQxOGQyZGVlZWM3NjFhIHJlbGVhc2UyMi1tYWludAorMjg4NjAgN2QwYzRkN2UwYThjNzE5MWQyYjg5OGU2NmRjNzBjZWE3MmYxNGM2NiByZWxlYXNlMjItbWFpbnQKKzI4ODYxIDQ1YTIxNGYxYmYwYjQ1NGFmZjkzYzg3NzA5YWEyMTA1Yzk5NmRjMzcgcmVsZWFzZTIyLW1haW50CisyODg2MiA4MzIwODRhMzAyODA5NmMzN2UwZWVmNzhmNWYyYTlhNTkxZmM4N2Y1IGxlZ2FjeS10cnVuaworMjg4NjMgMDQ4OTY4Y2EyNjY4ZDQyMzUyMjUwNTIwYjVkN2Q1NzdhN2JjYzJmYyByZWxlYXNlMjItbWFpbnQKKzI4ODY0IDI1M2UzOTdkZjY3YjFlMzc0M2Y5MWNlNjkzZjQwN2VhMzA0OGRlYjIgbGVnYWN5LXRydW5rCisyODg2NSAwYTA5NWEyNTc0MjQ1MDAzOTJkY2RjYWY3NGUzZjc2ZmZjODAwMjExIHJlbGVhc2UyMi1tYWludAorMjg4NjYgMTg0OWUyMzU1MmRmYmMxZTE2YTljMzhmZWVmOTRjMGRmZTQ2ZGE2YiBsZWdhY3ktdHJ1bmsKKzI4ODY3IDU2Y2I5MmRiYmFhZmMwNWJkZWVjMTAzNDM1M2RiMzZlNjE4OTRiZDAgbGVnYWN5LXRydW5rCisyODg2OCBhYTMwNDhlYmQxOWEwYTVhNmQ4NDkwOGYzYTE4NDQzMzZiYWM4ZjY3IHJlbGVhc2UyMi1tYWludAorMjg4NjkgZjc0OWQ1MGRjY2RjNWViZmU1MDQ5YTkyYTQxM2I1YzM3ZWZiZjBmMCByZWxlYXNlMjItbWFpbnQKKzI4ODcwIDkxYjRmN2FiZWJhOGQ1NTJjYjIyYjliMGZlMGFlYjRkZWU1YjVkYWEgcmVsZWFzZTIyLW1haW50CisyODg3MSBmYjBmN2NjNWE2OWY2YmY0YTU2ZmE4OTdjZDgzYTJiYTAzODBmYzAyIGxlZ2FjeS10cnVuaworMjg4NzIgNjIzN2JlMjdhNTk3MzViZjZlNzAyMTZlMGU5NGZiY2FjNzQ2N2IxNCBsZWdhY3ktdHJ1bmsKKzI4ODczIDU1NGY5NzUwNzNhMDM4MGVmNzE4OTVjNmJhOGI4ZDdkMzIwMmI1OWMgcmVsZWFzZTIyLW1haW50CisyODg3NCAyOWY2MTYwZWMwYmQ5M2M4MDlhNDM0ZWMyMjRiZDNmMTNjNDIwYmZjIGxlZ2FjeS10cnVuaworMjg4NzUgZmU2MjExYmY5MGJiOGY1NDk4ZDY5NmUyNzIwMWZkOWRiYjRkODU2MCByZWxlYXNlMjItbWFpbnQKKzI4ODc2IGM2ZjMwNzJkNTk1ZDU0ZjUxMzEyNzZhY2Q2ODZhOTM2MDllZWY1OGQgbGVnYWN5LXRydW5rCisyODg3NyBlYjI1MmIzNzRlY2ZjODVlNmI3NzJlZGViMjU4OTE4MmJiZjdmZmEwIHJlbGVhc2UyMi1tYWludAorMjg4NzggMWY5YjNjYjY2ZTA5OGUwM2M0ZGFhMjJmZWJmODdlNWU5YWQzYzdjYyBsZWdhY3ktdHJ1bmsKKzI4ODc5IDExMDg4YzUzNDY3YTE3NjhkNmFiOWI0NDZkMjI4ODNlYWE5Nzk1YzEgcmVsZWFzZTIyLW1haW50CisyODg4MCA3MmQ1NmI0NDYwY2I5ZGYzY2E1MTlkNzUxMzEwMGFjY2I0YmVlNGFmIGxlZ2FjeS10cnVuaworMjg4ODEgYjYyNTE0YzIxNzYyOWUyMDNlNDNhNmNlNmZiM2UyYmUzYmVkZjNlYiBsZWdhY3ktdHJ1bmsKKzI4ODgyIDNjM2I4OTQ2ZGM2M2M1ZGI2OTI4YTVjYzc2NzEwNWI3MGI5MjI0ODMgbGVnYWN5LXRydW5rCisyODg4MyAwYzc3OTQ5MmNkODA3Nzg4OWY5MzU3MWYyZGU5ZGM2YTdjZmQ2NDAwIHJlbGVhc2UyMi1tYWludAorMjg4ODQgODU0NTM0YzYwN2ExNmNkNGRmYTk0MDViNTM2MDMzMDE2OWFmN2RmMiBsZWdhY3ktdHJ1bmsKKzI4ODg1IGRmYjc0ZDYxMTgzZDczNzg5MDIwOWZjM2RhYzA1NmQ1OTE1ODRkM2UgcmVsZWFzZTIyLW1haW50CisyODg4NiBjZDgzN2VjYjFkNzA5NTNlNWE1YWE4NjhhZWNiMjk4ZGU5YTBmZjRmIHJlbGVhc2UyMi1tYWludAorMjg4ODcgYmRlMGQyNjI2YjIwNWRjYjM4NjUxYTQ4ZmUyOTkyZjk5NjhiZjZkMyByZWxlYXNlMjItbWFpbnQKKzI4ODg4IGQzMjU4OGM4ODYzMzI5NDY4Y2M0ZjZkOTk3NThjYmQ1ZTk5MDNjNDQgbGVnYWN5LXRydW5rCisyODg4OSA4OTgzMDRmNmRhMjNiNWM5NzE1YzVjMGZiY2E2N2EwMDUxNTFmODliIHJlbGVhc2UyMi1tYWludAorMjg4OTAgYjYxMTIzMjcxMjRiNDZhMjc0MWVlMDVlZjVkNDY2OTRmZTcxYjhiNCBsZWdhY3ktdHJ1bmsKKzI4ODkxIGFhMzFjNjhkYTg0ZGY2ZjI4ZDc3ZWRlZjhiMmU3ZDY3NGQ1NjdjNmQgcmVsZWFzZTIyLW1haW50CisyODg5MiBkYjVmMWRiN2IzNGUxOGM0YmE2YjU3ZjdlMzA1ZjY3MjdlZjI0Y2Q4IGxlZ2FjeS10cnVuaworMjg4OTMgOWJhMDExMTM4ODMxOGE0YzNiZjBiZWY2ODRmNjU1YWMwNDg1MDVhOCByZWxlYXNlMjItbWFpbnQKKzI4ODk0IGU4Y2RlYTQ0ZjdhYmNlYzZhMTU4MzY1OGQ0MjE1ODgyYjFjNzRlMmYgbGVnYWN5LXRydW5rCisyODg5NSA2YTJkZjQ0YjhiZmQ0OTZmYWUwNzUxZTliMGYwM2I5YzQ3MmNhZWMwIGxlZ2FjeS10cnVuaworMjg4OTYgN2NkNmY1NDkwNzU4YzYzYjYxNjgzMDc2OWY1ZDYxYzdiMzM5ZmIyMyBsZWdhY3ktdHJ1bmsKKzI4ODk3IGY4MTgwYTc0YjBmYTVjNmVjNzViNWQ2MzQwMmY4ZDc3NTg3ZmYyYmQgcmVsZWFzZTIyLW1haW50CisyODg5OCAwNWZmZTIwMWU5MDJkODBmODg3MDNhMDNhN2IzMjI3N2NiMzY4MjkzIHJlbGVhc2UyMi1tYWludAorMjg4OTkgMmViNGVlZDUzOGM2ZDNlZmQ1ZGEyYzVmNTAxZGZjMWIzZTgyZThkYyBsZWdhY3ktdHJ1bmsKKzI4OTAwIGQwYWFkNTE5ZTcxMzBkYTNkMDEyMmJjMjNkMmIyYjdjNDE5MjUxZDYgcmVsZWFzZTIyLW1haW50CisyODkwMSA0ZDM2Nzg3MmZjYzY2NWJmYzI0ZmU2YWMxOWU5NTNmZmY5OWRjYjZhIGxlZ2FjeS10cnVuaworMjg5MDIgNzZjY2Q1YmY5ZmYyNjI5ZmU0M2IxNTQ0NTJkNjNjZTA1ZWM2NTBkNiByZWxlYXNlMjItbWFpbnQKKzI4OTAzIDQxZWIyNGI3NDdjMDJjZGNmNWE5MDJiMGVjNjAyOGZlNTQ4NmQwZDQgbGVnYWN5LXRydW5rCisyODkwNCBkY2FmZDk5Yzg1YjY4YTg4MzA3MzkxMjk0NTEwYTgyOGFiNTVlOGFkIGxlZ2FjeS10cnVuaworMjg5MDUgYTc3MjU0Y2JkNGYwNmIxZTgyNWI5NWE1YWJiOTYwNmRjNTcyNWY0ZCByZWxlYXNlMjItbWFpbnQKKzI4OTA2IGQwN2Y4ZGIzZGI0MWU0Yjk0OTc4MmE2MGNiZDM3MzMzODE1MzVkNjYgbGVnYWN5LXRydW5rCisyODkwNyBiNWE5YWFjNGIxMGZmZjc4M2M5NDRlODhlODIzZTA0ZWM3ODcxODIzIGxlZ2FjeS10cnVuaworMjg5MDggMDk1NTFjNmRhMjk5ZjgxOGNiOWZkZmY3MWQyYjg2YmMxODRiZTJhNiBsZWdhY3ktdHJ1bmsKKzI4OTA5IDE2ZTY2MTk3MDkzMDcwYzg4NzZiNmVlNzk1OTYwZjUwODUwMjY3YTAgbGVnYWN5LXRydW5rCisyODkxMCAxZDkxZWRmZDc1ZjJiNDVkNmU0ZTg5YzNhZTdkZmFlNjRmMTI3MTU1IHJlbGVhc2UyMi1tYWludAorMjg5MTEgNGRhOGE0ZGUwN2MyMzNkMDdiM2RjMDdmMDA0NTYxOTRhMmQzNjFkNSBhc3QtYnJhbmNoCisyODkxMiAyODMwZjk2MTQyOTQwNWZjY2FlNzgxNTc1ZTcwOTA4MDE2NGM4NWRiIGFzdC1icmFuY2gKKzI4OTEzIGQ4ZjQ5ODBiOTY1Y2ViYTAxYTkyNDg5YTMyZDlhMjAyNWY5OGI4YmIgYXN0LWJyYW5jaAorMjg5MTQgZGZmNDhjNDE3OTgwMjE0ZGU1YjYxMjgzZGFiNmRmOTQyYzdkYTBlOSBsZWdhY3ktdHJ1bmsKKzI4OTE1IDk2OTYwZDY3MzllMDk3MmM5ZWYwZmU5YTljMjNjOTE1MTM4N2QxYzMgbGVnYWN5LXRydW5rCisyODkxNiAxZjJiMWU2ODQ4NTAzNmI4MzQzZDg4NjRjNzkxNWJkYjA4YWU0YjRjIGxlZ2FjeS10cnVuaworMjg5MTcgNzg0M2I1MzAwOWQwNjkyMjllYzhlNjM3YWRlNzhhNTM5NDhhODg0NCBsZWdhY3ktdHJ1bmsKKzI4OTE4IGI2ODZkZGIyNWM2OWI0YjY2MWVlMzBkZDQ3YmZkOTk2MmJkMjRhNmUgbGVnYWN5LXRydW5rCisyODkxOSA1NWYwOTBiMzhiODhkMzhmMzM4M2Y2ZGE3ZjlkZjlhNTkwZjM1ZDBjIGxlZ2FjeS10cnVuaworMjg5MjAgMGZiYmU3OWI0ZWRiNWIwYTRlYmQ1OTEzY2RmNDhjMjI0NWUyZWRmNCBsZWdhY3ktdHJ1bmsKKzI4OTIxIDE4ZTY3OWJlMjExOTM2ODlhN2Q2MzJmNjJjNDI0OTc5NmVmYTg5YjIgbGVnYWN5LXRydW5rCisyODkyMiA4YTZlZWIwYzc5MzQxNDRlNmU2YmVlNzQxN2Y2ODcxODA4ZmE3OWZjIGxlZ2FjeS10cnVuaworMjg5MjMgMmE3NjNlN2I3ZGViZDA3ZGNjNWJkYWM0NzU2NTEzYzQ3ZTMzNDhjZiBsZWdhY3ktdHJ1bmsKKzI4OTI0IDI1NjU0YjgxMTYxNmIwZjA1N2FlOTBlZjFjNjNiZjY3NzI1ZWQ5MDggbGVnYWN5LXRydW5rCisyODkyNSA1N2VjMTY0MzE4OGM5MDMxZmNhNjVjZWViOGFhNTNhODM3YjlkZjlmIGxlZ2FjeS10cnVuaworMjg5MjYgZTJmNjVhNDljYTM0M2UxOTE1ZTZmNjcyODc1ZjE0ZTM2MzFjMzIxMSBsZWdhY3ktdHJ1bmsKKzI4OTI3IDdkMjY5YmMxMjU4N2RkNTczNzMxZTEyNjVhNmM5OTA3MzZlY2Q3MWIgbGVnYWN5LXRydW5rCisyODkyOCA4Yzk1NDg2MzAxYjNmNzQ5YzZjYzU4Yzg5YTUwZmY2YzZhMmNhNTEyIGxlZ2FjeS10cnVuaworMjg5MjkgYmJmOGNmNWVlOWY5NDIyODRlYjY5M2RjMzkxMDY3ZTlkYjBmMTc2NiBsZWdhY3ktdHJ1bmsKKzI4OTMwIDlkNTBiYzgzMWJjYTA0YzZiNmI5MTZjZjRjM2MzNDg0YWQyNDFkZDIgbGVnYWN5LXRydW5rCisyODkzMSAyMTQ0NGJkY2IwOWMwNDg5MWQwNjg3ZWZlNjljMTk3MzdkNjc5MjRlIGxlZ2FjeS10cnVuaworMjg5MzIgODBmNjczODVmNTk5ZGMxNzMzYTE3OWQ5MTg1YjIwOTkxMWFjYjJjYiByZWxlYXNlMjItbWFpbnQKKzI4OTMzIGZjNTM0ZDFjOWMyODM5NjdhMWE5MTg3NWMyZGM1YzA1NzFkOWFkMTEgcmVsZWFzZTIyLW1haW50CisyODkzNCBjYWMxYjAzNGI5MDM3NmJhOWRiY2YzOGVlYTA2ODFkMzIzNjBhNGYxIHJlbGVhc2UyMi1tYWludAorMjg5MzUgZTQ3NTJmMzE2MDUzZmEzNjhiZmEwYzk4ZTAzNjBlZjBjOTI4YzNhYSByZWxlYXNlMjItbWFpbnQKKzI4OTM2IGNlN2JiZjNkOTQ5MzUyMTMyODYyMDE0MDM2MWIxZTg1ZDNiNjg0OTEgbGVnYWN5LXRydW5rCisyODkzNyA4NzdhMzkxNGRmMjI0Mzg0YzY5NDA3ZDBjYWNiNzA3M2I1NmIxYWE4IHJlbGVhc2UyMi1tYWludAorMjg5MzggNzY2YmZjOTNlY2JhNjZiNmQ2NmQyNjQzODA4M2Y5Njc2NGNhM2I3YiByZWxlYXNlMjItbWFpbnQKKzI4OTM5IDc1YjA4ZTZlOTdjNjBkNmViMWVkZTc5ZmUxMzI3YTI5OTQ5YmYwZDYgcmVsZWFzZTIyLW1haW50CisyODk0MCAyMGQ3YTU0NTU5MDc4M2I0Nzc2MzdkOWI1YmE3MzIwMjRlOGQ0OGM4IGxlZ2FjeS10cnVuaworMjg5NDEgNmQ1ODcxNTQzMGE3YmI4MDQ0ZDVmYmNhZDZlMzlkYTI1MzRmNTNiYyBsZWdhY3ktdHJ1bmsKKzI4OTQyIDJhYzdiMDk2NGM3YmE5NzY3MzM5YWMxYTIwYWJlZTIxNGU3N2IzM2QgbGVnYWN5LXRydW5rCisyODk0MyA0ZTA1YWFiNjBiZGZhYTVmYzdjNGExOTEzM2YzZWI0NTZmYzkyYTQxIGxlZ2FjeS10cnVuaworMjg5NDQgYzNlZWFhZmU2MjY1ZTNiNDViNDhjODAzOTdmNzhiOTEwZmYzNTEwNiBsZWdhY3ktdHJ1bmsKKzI4OTQ1IDVmNWZkMmM0ZmNmMjI3ZThhMzcwYWMxMGIxMGFhZTg3MzFkODI5ZjkgcmVsZWFzZTIyLW1haW50CisyODk0NiBkMGU1NzQzMjZkMThiM2IzOGJhYzJmMjM0YWEyNDQ4YmYzOTdjOGJlIHJlbGVhc2UyMi1tYWludAorMjg5NDcgYjUyNmUxMmI5NDFiN2ZkYjZlYTExZTNlYTBkZjA0ZTJiMDAyMTBmNyBsZWdhY3ktdHJ1bmsKKzI4OTQ4IGM1NzM4NDhjNzVjMzMyYWJhOWI3YzIwMTM5ZjJmNmZlOWUxZDAzY2YgbGVnYWN5LXRydW5rCisyODk0OSAwYWE2NGVlYmQ0OTMyY2Y5YzY1MzE2ZDFhYTcxZGIyMzk0ZTI4ODM1IGxlZ2FjeS10cnVuaworMjg5NTAgZGVhNjE5YjU4ODJkMGM5NjQ1ZWNmN2ZmYjM1MzQ3MDRmYWY3MDg4MSBhc3QtYnJhbmNoCisyODk1MSAxOTU4MzNhM2YxMGRhZjBkMmI3MjNkMWE5NzIwZjg2ODM4NTMyODIyIGFzdC1icmFuY2gKKzI4OTUyIGM0NjI4ZDlhY2M5YTE1NzBkNTA0ZGFkOGU5MTA0NjJiNWNjZDNiY2MgbGVnYWN5LXRydW5rCisyODk1MyBkYjlmZWUzNzNiMzAzYjAwZGI4ZWM5OWFhYmY0Njg0YzBiMWQyYTBhIGxlZ2FjeS10cnVuaworMjg5NTQgNzQyOWYyMjQ3M2NjN2MwNGM0M2Q5NjM4NjNmYzg3ZmJhZWU5MzNkOSBhc3QtYnJhbmNoCisyODk1NSA1NmRkODZiNGNiODc3N2UxN2YzNTViMzkyYWM4YTI0NGRkYmUyYmNjIGxlZ2FjeS10cnVuaworMjg5NTYgMmM5OGViMWMzMTYyZDhmZGRkNTcxYTg0OWNhMTUwZDQyOWYyYTUxYSBhc3QtYnJhbmNoCisyODk1NyAyN2Y4MzU1MTlhNWU3ZGViZTg3ZTM3OTYxOWY1YWU3NWVhYTI5ZDc1IGxlZ2FjeS10cnVuaworMjg5NTggOTE2NzQ5MGIwZGU5NGJjMjMwYzVkYWRmOWQ2ZTVlODc2YjBlODk4ZCBsZWdhY3ktdHJ1bmsKKzI4OTU5IDJiYzJlMDJmZDZkZDEyZGI0NWVlMjQ0YmYyNmQwZDk1ODcyYmY1YzkgYXN0LWJyYW5jaAorMjg5NjAgNDU1NzdlMTg1NmQwZTkzODY0OWNmZDQyNGFhZmE2ZGE0YjZiMDM0NCBhc3QtYnJhbmNoCisyODk2MSA3ZmQyZGEyMDE4MjNkMWNlN2RkYzU2MDkzZDAzMGIzYmZlYjhlMWI0IGFzdC1icmFuY2gKKzI4OTYyIDI0YzVhMWM4N2YzYmYxMjI5ZTUwNmY4NzU5M2Q0YzFiMTM4NTU5NTcgbGVnYWN5LXRydW5rCisyODk2MyA2Njk0ZjBjY2Y4ZWE0YmU3NTY3NGYxNTcyMGJjMzQ2MmU2MDA0ZjZhIGxlZ2FjeS10cnVuaworMjg5NjQgYmMwOTc4NDU5ZmZiNzgwY2YzODM2ZDQ3ZDc0NGE1ZjVmNjM3M2Y4YSBsZWdhY3ktdHJ1bmsKKzI4OTY1IGIzYTk4ZWVhMzRjODQxYzIzZjhjNzM2NGVhY2JmMGIwNGFjZDUyMjMgbGVnYWN5LXRydW5rCisyODk2NiAyZDgwYmY2NWNkMDk3OWQ5MDJhNDM3Y2E0MmE4N2EzZmJiNTRkY2ZlIGxlZ2FjeS10cnVuaworMjg5NjcgZTFhNzMyODg1YmUwOTYxNThlNmY0ZjUwZmQ4OTBlMjRkNWE5YmM4NiBsZWdhY3ktdHJ1bmsKKzI4OTY4IGQxYjZiMmNhOWQ5Yjg1MWQyMzY0OTIyY2MwMGMzOGJkNDhjNmJlNGQgbGVnYWN5LXRydW5rCisyODk2OSBkMTI0ZmIwODc3Nzg1NWRmZjJhNzU3OGQyOTFjODg2NmJkNzY3NGU5IGxlZ2FjeS10cnVuaworMjg5NzAgYmQwNGUyYmQ0MzdmYzVkMzlkZDJlNjI3NDBhMzhlOTcxZWJiZDgxMCBsZWdhY3ktdHJ1bmsKKzI4OTcxIDU5ZjgyZDk2NjgyZTlhODA4NWRjNGRkN2UxMGRmODMxNTZmMWJmNWMgbGVnYWN5LXRydW5rCisyODk3MiAzNzdkNjRjYjUzNDcwYjA2NjI5YmVkZGExMzgwOTQzNTdiMzE0YjMxIGxlZ2FjeS10cnVuaworMjg5NzMgZDcyMmJiNTIwNWFkNzAyOWRkYjE2ZjUwNTJjMGM4MTVmYTFiY2NiNyBsZWdhY3ktdHJ1bmsKKzI4OTc0IDQwNTk0ZWYzNGIzMDljNGVkZTMxMTRjODcwZGJlNDJhMTA5OTg3OGUgbGVnYWN5LXRydW5rCisyODk3NSBhZTJmMjM0ODgyYjIxNjg2M2UyNDc5MTE1MjA0ODRlZGZhY2IwMWI1IGxlZ2FjeS10cnVuaworMjg5NzYgYTM2NDdkMTFjYjcxMzQ3OTA5YTk1ZWQxMGVlMjRlY2E0NjA4NGU0OCBsZWdhY3ktdHJ1bmsKKzI4OTc3IDU4YmZhN2RkYzk5OWFjOTY0MmVmOGZhNjY4MmIyNjgxNmRkNDM4YTAgbGVnYWN5LXRydW5rCisyODk3OCBiNWQwNWYxMGQwYTViYzJjMzQ4OTEzZjJmZWFiYzEyZDBlNTU1ZTBiIGxlZ2FjeS10cnVuaworMjg5NzkgMWVhNmUzNTQ3NjEwMzgwZjg4MDYwZTFjOTAzMGViOGNiM2Y2MWM5YSBsZWdhY3ktdHJ1bmsKKzI4OTgwIDMwZWU5OWE4YjBhZTM1YTliOGNiMWY3MzIyZTBiZWJiYWRmNjFjM2YgbGVnYWN5LXRydW5rCisyODk4MSBjMTJhNGY3YTAwYjc0YWYxOWY1MTBiNTZlN2FjNTRhNjcwZWQ2NGI0IGxlZ2FjeS10cnVuaworMjg5ODIgMmUxNDA3MDBmYjZjMGM1M2JhZjQwMTFjZWI2Yzk1MWFjMzY1MjU1NSBsZWdhY3ktdHJ1bmsKKzI4OTgzIGQ3YmJhN2ViMGVhZDBjNzEzZjEyNzRkNWQ4ZTVlZGFlMDE4MzVmNjIgbGVnYWN5LXRydW5rCisyODk4NSA1NDIwOTY5ZGRkNzBiYTg1YmIyYWE0NTFlOGU3MzE4ZTI4Mzg4NTVlIGxlZ2FjeS10cnVuaworMjg5ODYgNjM2YzBmOGIzOTg3OTM2ODk0NGIyN2FkNDQzOTg5MjhkMjAyOWExMSBsZWdhY3ktdHJ1bmsKKzI4OTg3IDE5NWQyZjI1NzZlNDJjYTQ4NmRhM2VjNmZjMTRmMTU3OGFkYmQ0YzIgbGVnYWN5LXRydW5rCisyODk4OCAxMTU3MzZkZGVkN2QwOGNlNDhhNmFmNWU1NjlhNWM3ZjlhMTNjYjgxIGFzdC1icmFuY2gKKzI4OTg5IGI5MjMzZWNkOWQ0MTk0NzMyM2Y3MDFiYzEwZmQxNzcyZTllYjdiNWYgYXN0LWJyYW5jaAorMjg5OTAgNzBkOTNiNjIzNzBiN2JiYTk0OTUyYWQxMWI1NmZkYTQ4ZDEzZDhhNiBsZWdhY3ktdHJ1bmsKKzI4OTkxIGI5NmI4MjY0ZDZhZDJmZmQ5ZTIxODNlOGFkNDUwNzk5MzE5NjY2MjAgYXN0LWJyYW5jaAorMjg5OTIgOWU4MTVmMmMwZTg0ZjAzNzQ5ZjkyMTQ2Mzg4MmUzYmM2YjlhMThkYiBhc3QtYnJhbmNoCisyODk5MyAxMDk0YzZlMDM2NWU1YjA1NzBjYTg1MmMyMjkyZTVjYTcyZmRlZjI4IGFzdC1icmFuY2gKKzI4OTk0IGZlOTVjZmM2ZWJhN2RjMzRkNTU5NWM4NzAzYzY0ODE1YzZmYjI1MDEgYXN0LWJyYW5jaAorMjg5OTUgOGU0Y2FiYjJlMDAzZDI5YjlhOWRjNjRhOGUzMmUyZDZhOTg3MTk0NiByZWxlYXNlMjItbWFpbnQKKzI4OTk2IGNhMDFmNGI4NTg1M2U0NGIzNmY0MjRjMTNhNDM2OTQ1ZGM2ODg5NGQgbGVnYWN5LXRydW5rCisyODk5NyA3NWU1YTJhNzE3Mjk1YWMyMDlkNDUyNmI3ZTkwNzM3OTBkZDIxYTI5IHJlbGVhc2UyMi1tYWludAorMjg5OTggMDgxNDhlOTE2ZDM4NTFmMjhiN2U3OTlmN2VmZWE1ZjI3N2IyZTVjZCBsZWdhY3ktdHJ1bmsKKzI4OTk5IDg2MTA2NTI1NjQ4NzBhODMwYjk3Y2I0ZGM4MGU0MGRlYWViODZjOTYgbGVnYWN5LXRydW5rCisyOTAwMCA5M2VmNzQ1NTU1ZDdjMGI1MjI0NWMzMmEwZjQ3MTY3MmI4YzQ0MWE3IGxlZ2FjeS10cnVuaworMjkwMDEgNjFkNjI0ZjVjMTA3YTdlODc3MzVjMDc5NjM2YjBlODAzZThlYWRlNyBsZWdhY3ktdHJ1bmsKKzI5MDAyIDJjMGUwZjBkY2E2ZjUxMmY0NWRmMjJiYjYyMjhhOWE3Y2UyNTE1YWIgbGVnYWN5LXRydW5rCisyOTAwMyA1ZmUwN2NkNGIyYmZkNzExNDUyMTQ4NjcyMjc0YzQ3NTA0MjUxZGViIGxlZ2FjeS10cnVuaworMjkwMDQgMmRjMGRhNTM3MmI0NzAyYmU1NWYyNTQwODg3ZGQyOGIwZDFlMWRjYiByZWxlYXNlMjItbWFpbnQKKzI5MDA1IDQ3YWE5ZmM3NGRhOGNmNTMwZmEwYzRkYWYzYThlODUyNmEyNTViNjEgcmVsZWFzZTIyLW1haW50CisyOTAwNiA5OGU1OGQzYzVmY2ZhNDg5ZmRjYjQwNzY4OGQzN2M4MzZlMmZmNmI4IGxlZ2FjeS10cnVuaworMjkwMDcgZGZlZWMzYjM0ZmFlYzI0NTVkNDA1OWNlZmM0ZDNlNDE3ZDZlMjI2NCBsZWdhY3ktdHJ1bmsKKzI5MDA4IDJmYTU1OWZiNmVjNTIyOTliODcxNzFlOWI4ZjFlMTRkY2Q4M2I4MjggbGVnYWN5LXRydW5rCisyOTAwOSAzNzMxYmUyOGUxYTMyNjRjODk0ZDJiNWFkY2FiY2VmZjhhMjdlYTNlIGxlZ2FjeS10cnVuaworMjkwMTAgYzdiOWRhODU5YjU1ZjgzNjUxOGNiNGE0MTA3YjMxZWUzN2JmNDgzNyBsZWdhY3ktdHJ1bmsKKzI5MDExIDYxODIyZDJiNWU4ODZhNzVlNDc1NjY1NGUwOTdlNDI4NTQxZTJiZDEgcmVsZWFzZTIyLW1haW50CisyOTAxMiAwZWQ4Mjk0NzU3MTc0OGQwMDZjN2E5ZGFmZjBiZjI3NjA0NDMwZjYxIGxlZ2FjeS10cnVuaworMjkwMTMgMGU5Mjg4MDc1MzZjMTZhMjEzMzhkMDQ4NzczM2E0MWU2MzdlMmUxYiBsZWdhY3ktdHJ1bmsKKzI5MDE0IDFkYTVlMTdiZmU2M2EyMDgxMzRkZGQzODA1NWU1N2VkNTU2NjYwNjEgbGVnYWN5LXRydW5rCisyOTAxNSA0MWUxZDhjMjI0ZGYyZTNhYWU3ODE1ODI4ZTE5MjdmOTA5OTk4ZTcxIGxlZ2FjeS10cnVuaworMjkwMTYgNTU1MjM0ZDRmMGQwMDkxNGM2OGNmYTU4NTdlODBmZGFhZjg2NDdjMCBsZWdhY3ktdHJ1bmsKKzI5MDE3IGY2MWQxZDJiOWNlM2IyMmRhNGE2MmIyZGE0ZTk1YjkzZTZmN2Q4MjkgcmVsZWFzZTIyLW1haW50CisyOTAxOCAzNjEyNDE1N2IzMTdhZGJhYjgzNWZiNjM5ODE4OGQ2YTg4ZWVlMGE0IGxlZ2FjeS10cnVuaworMjkwMTkgNDg4Mjk1ZDFiYTExZWIyMTY3NDQ0Y2VhYWU1NDkxMmMxZWI2NjdjOSByZWxlYXNlMjItbWFpbnQKKzI5MDIwIDhjYjA3NDBkYTFmZDU5OTJlYmVhMDc1N2I1ZjhjY2M0ZDVjODc0YTggbGVnYWN5LXRydW5rCisyOTAyMSBmYzcwMjkwODEwOTMwNjhmNDczZmIyYWVmNjQwNjYwMWI2MDFmNGFiIGxlZ2FjeS10cnVuaworMjkwMjIgMTRjNGM4MzNjZGE5Y2E0ZTRlZGQ3MWYxYjdiYjY3NzlmOWE5OWMxZSByZWxlYXNlMjItbWFpbnQKKzI5MDIzIDEzZmI0ZDE2ZjYwNDJiYWUwMjMwZTAxNzk2NzgyM2Y3ZDNjMTA2ZDUgcmVsZWFzZTIyLW1haW50CisyOTAyNCBmYjBjZTc3YTMxOGFiZDM4NDBlNTQwODZhMmNjZjhjMjkzNzU3ODhlIHJlbGVhc2UyMi1tYWludAorMjkwMjUgMDcwNWNhMjlhYjk2NmZkMTMyYzcwMjA2OTA4ODEzMDNlNzcxNzFhYSByZWxlYXNlMjItbWFpbnQKKzI5MDI2IDQ0NDQ3ZjMxNWFlOTExNWQ5ZDRkMWRjYTM1NjU4MzBjMzU5YzcwOGYgcmVsZWFzZTIyLW1haW50CisyOTAyNyA3NzliYjZkZGRlNGI4YjI0MjQ2MGY3NTY5ZWNmNjI0Nzg3MzVkMTJlIGxlZ2FjeS10cnVuaworMjkwMjggNmRjZDA2NjRiMDllMmNkOTI0NTZjMjRkZDUyZWIxNDFjYzkwNzZmZiByZWxlYXNlMjItbWFpbnQKKzI5MDI5IGQwNzI4YjRiMDdjMzNiMTdkNmY0MGVjMjc1ZTE1ODY1MGI1YjA5MGQgcmVsZWFzZTIyLW1haW50CisyOTAzMCBiMTk5MDJhZDE4NWZiZDhiMzhkYjI0NDVlMzIxZjg0MWE2NGRkODc1IGxlZ2FjeS10cnVuaworMjkwMzEgYjExYmMyMTRlNGYyZjc2ZDk5ZmI5MGIxNDc1MzMxZThkZmI3NDcxMiBsZWdhY3ktdHJ1bmsKKzI5MDMyIGM0MmM5ODhiMmI5OWNhOTBhMmZhYzQwODRlNjg3ZGY3ODk1OGZmOTkgcmVsZWFzZTIyLW1haW50CisyOTAzMyBhYWU4Yjk0Mzg1ZDZiNThhOWJhNTJkYmYyMGI0MjgzZWUwOTQyZTcxIGxlZ2FjeS10cnVuaworMjkwMzQgZGUzNzBlNjUwM2RmNjhhMjNlYTgzYzI3YWIxMDFkMDFjZmE3ZGFjNiBsZWdhY3ktdHJ1bmsKKzI5MDM1IGM4NWQ3Y2RkOTgzZjMyODU2YjJhOTAxZjQ3NDZhMzNmNGIwOTkxZTcgbGVnYWN5LXRydW5rCisyOTAzNiA0MzY3MWUwMTE2ZDUyZjA1MzgxMmNmMDFlNmM2NmE1ZmM0NTI4ZGQ5IGxlZ2FjeS10cnVuaworMjkwMzcgMDIzMWNjNTRmODdlYWM0ODQ0YWE2N2ZiOGRmN2U2ZDI0MDg5MjY3ZiBsZWdhY3ktdHJ1bmsKKzI5MDM4IDgyNDE2MmViNzk3NzM3MGZmMDM4NTgwZGIxYjVhOWM1NGEyNTJmODIgcmVsZWFzZTIyLW1haW50CisyOTAzOSBjNWE4MWMzYmRhZGFiYzU3ODYxZWQwZDc3YmQ0YzZlZTAxOThkZmQ0IHJlbGVhc2UyMi1tYWludAorMjkwNDAgNDA1YTViNGY0NTNiZWM0NzA1ZTIxYmM5NjUyMjFjMjFiMTE4MmVjNSByZWxlYXNlMjItbWFpbnQKKzI5MDQxIDZjY2E2MTRiNWUwMzNhNzk2ZmVjY2M4M2RmZjMyNWFiMjM4OWQ0NmMgcmVsZWFzZTIyLW1haW50CisyOTA0MiAxMDBkYWEzNjE5OGRkODU4ZTM4OGJmNTQzMjNlNDIxM2IyODU0ODRjIHJlbGVhc2UyMi1tYWludAorMjkwNDMgODNmNjRjMDRmMDAyNjkwZjI3YzJjMjRkMmIwMmJmM2JhODc1N2RjOSByZWxlYXNlMjItbWFpbnQKKzI5MDQ0IDM2NzljNGZjNjhiYzA0ODY2ZTlhNjFlY2M0ZmNhMzk3ZGM1MTFiMzEgbGVnYWN5LXRydW5rCisyOTA0NSAyNzZiNmM0NTI5OTk0Y2UzNWFiNjZkYjVjYTcyMjNjMGJiODYyZjBhIHJlbGVhc2UyMi1tYWludAorMjkwNDYgZDQ5ZjE2NGU2YTk3NGQ3NGYwZWZkMTY0MzUxNTQyZmM4MzkzOTU0ZiByZWxlYXNlMjItbWFpbnQKKzI5MDQ3IGMxYTZmNDRlMjUzNGQ4M2I4ZmM0ZDhmNjlkOTFiNTEwOWEwZjIxYzMgcmVsZWFzZTIyLW1haW50CisyOTA0OCBhNTI2OTViNzFlN2RhYjVjYmZjNzUzNzM1MzYyYWE4MTBkNWYxNTRiIHJlbGVhc2UyMi1tYWludAorMjkwNDkgZGFlMjI4MmJjNzZiNDI3MjdkMWNkOGZiMzBiOWNkNjVhYTY1ZGNiYiByZWxlYXNlMjItbWFpbnQKKzI5MDUwIGIyODdiZGFjZGUzOWZhZjM2YzAyNGNiODNmZTU3NjM2NjI3MzU1ZmUgcmVsZWFzZTIyLW1haW50CisyOTA1MSA2MDAzOTkxNzMxYTk5MDZjOGNjYzkyODRlMzU2YjU4YTg1ODAyNGM5IHJlbGVhc2UyMi1tYWludAorMjkwNTIgMjM0N2Y5MDE4NDMxNTNkOTM0ZWJmZTQzYjM4OGZiOTgzYmU0NWZmZiByZWxlYXNlMjItbWFpbnQKKzI5MDUzIDQ0OTJkNzczMjdjNWVlMDlmNzNjMDdhY2YzYTYzNWY0NDkwZmJkMDQgbGVnYWN5LXRydW5rCisyOTA1NCAyOTExZWIzNzcyNjZkOTc1YTk4ODkwMTRhMzI1NzUwMTkwNTNlYmU5IHJlbGVhc2UyMi1tYWludAorMjkwNTUgYjMyNTY0ODdhZWU4ODg2MzY0ZGZhZjJmOWU3OWNmOGY5YjBlYjM5OCByZWxlYXNlMjItbWFpbnQKKzI5MDU2IDc3NDc3MWM1MGIxODdjZjYzMTBmZjZjYTU2NTE1ODNhNjllNGJlYmMgbGVnYWN5LXRydW5rCisyOTA1NyAyYTk0MmExYzQyZTg0OWZkYzU0YjdmOWFmZmY3MWNiOGIxM2NlYzMzIHJlbGVhc2UyMi1tYWludAorMjkwNTggZmVkN2M0MWNhYWFlZjU1MzIxZWMyYTY2YTI0MmZhYTRjNDNlZjU4YiByZWxlYXNlMjItbWFpbnQKKzI5MDU5IGM2MmZiNjNkY2ZkMWI1M2QxNzkyZDcwOTE0YmQwMmQ3MzZmMTQ4MzEgcmVsZWFzZTIyLW1haW50CisyOTA2MCA2YjFkNDY0M2EwZmQ1MGU4MDg0OTZlY2M1ZDljMzczZmZiNmM1MDA3IHJlbGVhc2UyMi1tYWludAorMjkwNjEgZTg0ZTA4MzcyZWZhMWVjNTA1M2FhMWFhODBlNjMyNjAzNDRiOTYyMyByZWxlYXNlMjItbWFpbnQKKzI5MDYyIDUyM2ZkODkwMzU5ODc4YWRlYmQ1ZmE3ZTQyNDQxMWQ0OTI3YWNmNGEgcmVsZWFzZTIyLW1haW50CisyOTA2MyAxZTM1OWRjYjRmYjNiNzIyNDRmODdjZTUwNTk5MmIyY2MyN2FiZjU4IHJlbGVhc2UyMi1tYWludAorMjkwNjQgMzkzOGU5YTA5Njg5NGM2Yzg2NmFlNDRjOGQ1MjZhMTlmNmQxZWQ3NyByZWxlYXNlMjItbWFpbnQKKzI5MDY1IDg2ZjY2MDYxMDAzYzA2Y2I5NzQzN2UwNGZlMzEzZjdhZGYwY2Y5MWUgcmVsZWFzZTIyLW1haW50CisyOTA2NiBhZDM3YjkzZTdhMmU2ZjEzNDEyNGRlMDFkMDM3MGQ4OGZkNGE3NzAxIHJlbGVhc2UyMi1tYWludAorMjkwNjcgYTY3YjlhMTk1MjY1YjVlYjBlNDFkZDQ1NDZmNGQ1MWUyM2E0OTgwNCByZWxlYXNlMjItbWFpbnQKKzI5MDY4IGE2ZWRjMWIzZmQ1NjYxNmM0NmIzM2YwNTRhMzFmMDQwODMwMDRiZjggcmVsZWFzZTIyLW1haW50CisyOTA2OSBjMWY3YWY0MmE3ZjE3Njc5MzRjN2E2OWE5OTY3NTMxMzAzMmJjOWMxIHJlbGVhc2UyMi1tYWludAorMjkwNzAgMWI4Njk3ZDYwNTY4YzQ3Yjc0YjQ0MDc5NTgwMzRmY2VlYjRkMmZiNSByZWxlYXNlMjItbWFpbnQKKzI5MDcxIDFkYWVhYmIzNjI0NDMwZWUyMmM3MjQxZjg4NzA4YmNiNDU1YWIxNjIgbGVnYWN5LXRydW5rCisyOTA3MiA5NzdmYTEzNTkwNmQxYTE0Yjg0NWI4ZWZiOGY0MDQ3MDgzOTQ1YTA3IHJlbGVhc2UyMi1tYWludAorMjkwNzMgMjg4YzFmZmQ2MDZlYWJiZjViNGQ1YzkwZjNjOTUzMDI0NWY5M2NiNyByZWxlYXNlMjItbWFpbnQKKzI5MDc0IGYzN2EzNGMyNTZjNGIwNDNlMzFhMmNhZTUzMTI5ZWE2MGZiMDQ4MTEgcmVsZWFzZTIyLW1haW50CisyOTA3NSBmOTkwNmU2MjYxYzVmMGQ0NzE4ZGQxZjdjZDYxYjRkMDExOGQxMzg0IGxlZ2FjeS10cnVuaworMjkwNzYgM2VlZTcyOTMxZDE3ODNlNTBlYTk5MGUzMzhmMWIxM2Q5M2ZhNjI4MiBsZWdhY3ktdHJ1bmsKKzI5MDc3IGYzZTcwY2MyNjQyMmQwZDEzOTUxMDk4MGIzNWU1ODAwMTVmMzVjYmQgcmVsZWFzZTIyLW1haW50CisyOTA3OCBjNGMwOTNlMjNjNmRkMWM4MDU4Nzk1MGZlNzlmNjYyMTIwZmUwOGQwIHJlbGVhc2UyMi1tYWludAorMjkwNzkgMzhhMWU1NmI5YmYzNTI0OTVhYTM0ZTE2YzlhMDk4MDBlMGQ2ZWRjNCBsZWdhY3ktdHJ1bmsKKzI5MDgwIDYzNzlhNTUxNDA2NWM5NTZjMTI1ZGE1NzMwN2I2YTJmOTA3Y2FhOTEgcmVsZWFzZTIyLW1haW50CisyOTA4MSA1ZjJjNmFjMjE1Yzc5OTVlZGQ3OTRiMTZjZjI4ZGZjZjg3YzRjOTgwIGxlZ2FjeS10cnVuaworMjkwODIgYjVkZWMwYTU1NGIzODBmZmMyN2Q0NWMxNGY3MjNhNjM5ODQ0YjZiYiByZWxlYXNlMjItbWFpbnQKKzI5MDgzIGRmMjc2YjczZmU0YjU3OTQ4MGNkZDIyYmUyZjQ1NDE2ZTJjMmQ4ZTAgcmVsZWFzZTIyLW1haW50CisyOTA4NCAyZGNkZTkwMzkxYWFlMzQ3NThhZWQwMmUxOWQ1NmNiOWM3NDM3Mzk2IHJlbGVhc2UyMi1tYWludAorMjkwODUgODdkYWE1NjU0NDJkYjgwMThhOGRmYmE5MjAwZmM4YjFmY2RhMGRjMSByZWxlYXNlMjItbWFpbnQKKzI5MDg2IGEwMDA1ZDI2NzczZDAyYzEwNTNlZmE3MzE4NTZmYmY3Y2Q1M2VkOTYgcmVsZWFzZTIyLW1haW50CisyOTA4NyBiOThmODVkYzJkODgxNTU4YjExMzQ2M2U1ZWZlMThmYWQ2OTEyZTQxIHJlbGVhc2UyMi1tYWludAorMjkwODggOGE3NTk3MzM2NzZmYmE5YWFlNmI2MzNkZGVjZGFmNjJjZTljMjhhYiByZWxlYXNlMjItbWFpbnQKKzI5MDg5IDRiYjkxOGVhNjRkMWUyYmM1ZGJiMGM5YWZhMDFlNTE1ZjQ2OGI5MWMgcmVsZWFzZTIyLW1haW50CisyOTA5MCBmODY3Y2E2YzdkNjk4ZTVlYmYyMWU2OTVkM2Q1OWM0NmE0NzRjOTIzIHJlbGVhc2UyMi1tYWludAorMjkwOTEgM2I2MDk1MjA0M2NkMDUwOTNkNTUzNzhlZmNkMTZlMTM2ZWEyMjNkOSBsZWdhY3ktdHJ1bmsKKzI5MDkyIDViYjJjMDU3ZmQ0MGI4OGEyZGQ2YzdjNzM1ZmQwNjEyN2VkODUwMjIgbGVnYWN5LXRydW5rCisyOTA5MyA0NDZiODM1ZmMxOWIyY2ZlZDc5MzgwYjdlOGZlODNjZDQ4YTVjYTFmIHJlbGVhc2UyMi1tYWludAorMjkwOTQgMjVkMWY0ZjkxNDg3ZTBkYWJjNzcyMzc4NjY2OGIxN2M4MTIwN2ZlZCBsZWdhY3ktdHJ1bmsKKzI5MDk1IDg1MDYyYTEyYzI0ZjhmYjQ1NDQ3OTZhMzM4Yjc4ZmM4NWE5MGQ4OGIgcmVsZWFzZTIyLW1haW50CisyOTA5NiA0Y2EzMmU0Zjc4MzkzYTI3YWU4MDZlNjQ3YmIwOWU3ZWE3NDM2MDUxIHJlbGVhc2UyMi1tYWludAorMjkwOTcgZWZhOWE4NjQ2NGQzNDJjZjFlNjNhMGQ1ODgwOTEwMjQ4MDZlYzFhOSByZWxlYXNlMjItbWFpbnQKKzI5MDk4IDg1NTM5Mjc5MDk0ZDE1ZTcxMTU4NWZlMjg5M2MyNGM0MGQ0Yzg0MDggcmVsZWFzZTIyLW1haW50CisyOTA5OSBhOTRmMjcyZTYwMGQ5MDk5NGMyNDVlNDRjZDVmZDdkMGRkMWM1MjE4IHJlbGVhc2UyMi1tYWludAorMjkxMDAgZWI4NDk5NzNiOTQxOGRlMzY4ZTA1MzJhM2FjYWM1YTRiZmU5YzA3MSByZWxlYXNlMjItbWFpbnQKKzI5MTAxIDQyMTM5YWJmZGJlNWJlYjVkNjNlMTFmM2MzZWMwNmFjYzAwODkwODkgcmVsZWFzZTIyLW1haW50CisyOTEwMiAyOWQ0MGVhZTg3MzZiM2YzYmNmZmJhNzM5NmI3ZTEzZmI4OGNjY2ZmIHJlbGVhc2UyMi1tYWludAorMjkxMDMgMGU2ZjBhMjJjNmE5MjNjODVmMzdmMDFhN2QwMDM5MDcwZmQ3MTc3NSByZWxlYXNlMjItbWFpbnQKKzI5MTA0IDVjZjMzZGI1NTBkNzVjZWJjOGY5YTlkMjM2MjY2NjFkNWU1NzhmYjUgcmVsZWFzZTIyLW1haW50CisyOTEwNSAxMzQzODU4NmRhYTYzNzNjZGI0YzE2NGU5NmYwZjdiMTU4OWYwMmI0IGxlZ2FjeS10cnVuaworMjkxMDYgYmYyOGQwZjc4YmQ1YjI5YjQzNmEzYzY3NmQ4MDczNjRiNmU0YTk1NSByZWxlYXNlMjItbWFpbnQKKzI5MTA3IDVjNmZhYzk1YTk0YjRmY2M5NjVhMWQzMzY0ZDQ5MzBhYWYxYmJjOWEgbGVnYWN5LXRydW5rCisyOTEwOCAxOTlmMGY2YThhMzYzMjA2ZDc0OTM1NDc4NzdiN2Y0ZGQ2NWZmMmEzIHJlbGVhc2UyMi1tYWludAorMjkxMDkgODhjMWM0ZDc4OTE2NmRjZTMzZGQ2MjhmYzAyYzg0YTUzNzNkM2M1YyByZWxlYXNlMjItbWFpbnQKKzI5MTEwIDMzYmQ2NDQ1YjdlOTM5NGMzNjdkZDdhMTczZmIwNjljODI0OGRiZGMgbGVnYWN5LXRydW5rCisyOTExMSBlMjE4NDc1MzE2NzQzODRjNDQyMDNjMTRjZmM3ZWM4MGUzNjU5NGNkIHJlbGVhc2UyMi1tYWludAorMjkxMTIgMTVlZTI5OWQzOWU2NzFkOTIwYzgxOGFmNWFkZmVhOGM0YjI0MjAzNiByZWxlYXNlMjItbWFpbnQKKzI5MTEzIDVkOGJiMDBmZWUxODk5Yzc2YTllNTY5NTNjYmM1NGI2ZTA1NjIyMmQgcmVsZWFzZTIyLW1haW50CisyOTExNCA0OTkyN2I2YjVmNDBmYTQzZTVhMWEzNDFmOTJiNDc2NmQxNzM4YTA1IHJlbGVhc2UyMi1tYWludAorMjkxMTUgM2ZhNTQ0YTNjNWVkYWFlZDdlZjYwOTFkZDBlOTJiMmU4NjhkZGZiNiByZWxlYXNlMjItbWFpbnQKKzI5MTE2IDExNTdjNDAwMzE2YjFlNmM5NmM0MzUyMDE5MzkyMTFmZTliYWE4MmEgbGVnYWN5LXRydW5rCisyOTExNyAyMTAzODQ2ZWVmNzNhZjU0ODlmNzg2NTM5YmI0NWJkYzJjMjE4NjE1IGxlZ2FjeS10cnVuaworMjkxMTggYzU4MDQxZTZhNzk5NzRlNGM4Y2I0OGJmMzg5ZTU3N2YxYmQwOTQxZiBsZWdhY3ktdHJ1bmsKKzI5MTE5IDBhMWMxYzVlMWFiNGYyOWUwZjk3ZWIwMDBjYjE3ODdmMzUzNDMzYTEgbGVnYWN5LXRydW5rCisyOTEyMSA0YmU5N2VkYTQzNmJiNjMzMDllYTI0ODgzMTQxMzZhMmY2NTM0MTlhIGxlZ2FjeS10cnVuaworMjkxMjIgMDY5MGVhNmQxMTUzNTcyYjMyYzllNzdhZDEwZjg3ZTJhMDI0NDdkZCByZWxlYXNlMjItbWFpbnQKKzI5MTIzIGY1MDk5YTUzMGQ2N2FmODBhZWYwMjM1MWI3MzBjZGNiYjUzZGUyNjYgcmVsZWFzZTIyLW1haW50CisyOTEyNCBjYjljMWY5NDIyMGI5OWVhYWVlYTVjODY4YTc5NDRmNDlkNzQzMDVmIGxlZ2FjeS10cnVuaworMjkxMjUgMDAwZDE1NTgxYTc2ODZkOTVlZTAwYTE1Mjk1ZGNlOGJjYTczMGU4OCByZWxlYXNlMjItbWFpbnQKKzI5MTI2IDkwMjc0YmEwNDQyNGQ3NjEwNWUyNmExMTIxZDFhNzllYzBlNzYzOGYgbGVnYWN5LXRydW5rCisyOTEyNyAxNGI2OGY1OTI5NWUzOTU2YjdmMTM1YmVkN2Y4ZGE4YzAyMGJkYTczIGxlZ2FjeS10cnVuaworMjkxMjggMzdjMDQ0NWJkYzkwZDk3ZDU0YjhkZjRmN2JiZjc2YjBmYTQxYzkxYiByZWxlYXNlMjItbWFpbnQKKzI5MTI4IDAxMjgzMTNjMjg1NWQ3MTc1M2YwMGZjY2M2MGJiMzllZDkyYTBjNTQgcmVsZWFzZTIyLW1haW50CisyOTEzMCBkZGJmNjlhYmI5NWNjODg2YWMxYmNkMmExYjIwNGU3MjA5Zjc1ZWEyIHJlbGVhc2UyMi1tYWludAorMjkxMzEgNGE4MjViOTAyMzEwZThkY2Y0ODhjNDMwZjhkZDgzYTQ0ZGQwYzhmOCBsZWdhY3ktdHJ1bmsKKzI5MTMyIGI2NTlhYjQ5NDU3MWVhN2U3YjI4Y2E3MGZhMzU3MzEwMzhjMzA3M2EgcmVsZWFzZTIyLW1haW50CisyOTEzMyA2M2M2ZjQ1ZTk0N2RlNDkyOTRkZjE2OTQ0ZTg2NmVjMTc3NmJhODU0IHJlbGVhc2UyMi1tYWludAorMjkxMzQgY2Y5MjY2MGUxZTNjZTNmNGVlOThkOWFiY2MyMDI2M2EwM2NkOWY1NCByZWxlYXNlMjItbWFpbnQKKzI5MTM2IGM1ZDkxNzkxZTU3YjI5NjM0ZDZhOTViNDQzNTYwMTM2OTc5MDhmYzAgcmVsZWFzZTIyLW1haW50CisyOTEzNyA4ODk3YTBiMWNiMDc1NDE4YTBkMjVkMWE4OTEyOGFhNDA4MzZiNTQ3IHJlbGVhc2UyMi1tYWludAorMjkxMzggMWE3OWI5ZTM5ZTcyNTJiNjA4MWFjOTE3OGQ2ZjEzZGYxMWJlY2FiZiBsZWdhY3ktdHJ1bmsKKzI5MTM5IDljZDZlZDk1NDA2NWRiNjIwZWZjMjM3OGVlMWZkODI3ZjY0YTIwMTQgcmVsZWFzZTIyLW1haW50CisyOTE0MCA2Mjg1MzE5NWJlNjhkMWZkMjUyNmI4OTUxNDdkMWY1NjM1N2NmNzEzIGxlZ2FjeS10cnVuaworMjkxNDEgNDFlODI4MGEzNjg1YTcwMjdlMDg2NTRiMGRmODE4N2EwMTc3ZGIwNiByZWxlYXNlMjItbWFpbnQKKzI5MTQyIGJhYzVhNDkzMjkwNTk5YThjYTkzNDNmMGMyOTZhNTIyZDczYzNiYjQgbGVnYWN5LXRydW5rCisyOTE0MyA2ODk2Y2VlZDQ2YTZiMmQyZWQzNzUyZDEyOTFmZmYxNGFjMGI4NjRkIGxlZ2FjeS10cnVuaworMjkxNDQgYzUyMTY1ZjJjZGY0MzkxZmJiNjRjM2M0MDE1MjJmN2U3NjE4NzEyYiBsZWdhY3ktdHJ1bmsKKzI5MTQ1IDM4NmU2ZmUyYzhkMmM5YTA2YzA1MzhlYjQ5ZjNkNzg4NjliYjk2YWIgcmVsZWFzZTIyLW1haW50CisyOTE0NiA2NWRmZmM5YzBhMTY5ZTdiZWJhM2Q3NGIzMjgzMjc1ODY5Yjk2YzE1IGxlZ2FjeS10cnVuaworMjkxNDcgYmE1MjJjNzRhOTMxMDFjNDM1YWVmZmU3ZWVhZWYyOWIwZTYwN2JiNCBsZWdhY3ktdHJ1bmsKKzI5MTQ4IGNlNDlmMTJhMTc2OWU2YTk3YzlkYzY0ZDdlNzdmNzkxMjRjYWYwNzUgbGVnYWN5LXRydW5rCisyOTE0OSAzODg0M2QzNWI2NDY2MDJhNDZiYjU2YTVlZDEyNjdkNmViOTcxMGY4IGxlZ2FjeS10cnVuaworMjkxNTAgYzdkNTgwMWJiYWU4YmNkYzU4OTU1Y2RkYzgxZWNhYmVmNDczM2M4NiBsZWdhY3ktdHJ1bmsKKzI5MTUxIDY5NWFkOGY4NzcwOTUxMTMzOWZhYzJkODhjYmVmNmFjZmExZGI5NTEgbGVnYWN5LXRydW5rCisyOTE1MiAwODA5ZGM1OThmZTIzYTJiMzJjNzAxOGUxOTk3YjU5YzE1ZmY3ZTEwIGxlZ2FjeS10cnVuaworMjkxNTMgZjRhYTY1NjcxMGYwMzlmMzc3ZjRhMGU3MGVhMGNiN2YyYzBlYjVkYSBsZWdhY3ktdHJ1bmsKKzI5MTU0IDU2YzBiYTIwMzI5YjRkZWQ0MjVmMWQ3NzdiZmUxZTdjYzkzM2Q2M2MgcmVsZWFzZTIyLW1haW50CisyOTE1NSBiMmU4MzdmMmQxNDFjNmZiZjlkNzFmZjJmMjcxNzgwMmYwZjBlNTk1IGxlZ2FjeS10cnVuaworMjkxNTYgZDhlYzk4Yjc0ZmE3OGI1NTRiYTljMWYxNGY3ZmJlOWNmZmRjMWQzOSByZWxlYXNlMjItbWFpbnQKKzI5MTU3IGIzOWJkMDNhOGRhYjY2OTIzODhkOWMxNjg0NGRjZTVjODVjYTBhZDIgbGVnYWN5LXRydW5rCisyOTE1OCAxM2Q2MzlhNGFmZDdiODNhOThjM2FmMDMxNDZhNWE3ZjIzMGQ1ODdlIGxlZ2FjeS10cnVuaworMjkxNTkgYTk2MjFiYTdlM2RiZDEzNDBiMGQwODdhNzZjZTQ0YzM0ODQyNzU1YyBsZWdhY3ktdHJ1bmsKKzI5MTYwIGU5ZTdmMTYwYWFjOTkwZTIxNWJhZmRmYTBmZDhiM2ZkZGQxOTQyOWYgbGVnYWN5LXRydW5rCisyOTE2MSA1MDAxM2QxYzZhNDNlYTFiZWVmNTI2ZjEzYzA2N2I1M2ViYTI2ODQ5IGxlZ2FjeS10cnVuaworMjkxNjIgYjc4ZjVjN2U1NzkwMjE5MDgzNTNhNjIwODcwMmFlOTcwYWNiYmJkZiBsZWdhY3ktdHJ1bmsKKzI5MTYzIDJmYjkxMGIxMzljMmUyNWQ1NmNlYjE0NDc1NDdiYjRkYzhjMzVkZjQgbGVnYWN5LXRydW5rCisyOTE2NCBmZWI4ODYzYjZmYzQ2NzRiZDdiOWQ0NzkxZGI1OTA1NzY3N2NiNjJiIGxlZ2FjeS10cnVuaworMjkxNjUgNmFlNmYyMDYwZTI4ZDM2NDM1YTkyOTlhMTg0ZmVjYzdkYWVlNmQ3OSBsZWdhY3ktdHJ1bmsKKzI5MTY2IGM2MjFmNzFiYzcwMjU2MDlmMDliOGQxODhjZjU1MTQwZThhNDBkN2IgbGVnYWN5LXRydW5rCisyOTE2OCA4MTIwNGUyMGNmZTU5ZTM3MmE3YTYwMTFmYTZiZjU2NTA0NWE3N2YwIGxlZ2FjeS10cnVuaworMjkxNjkgMGE3YWE4NzRjNDUwYmRkYTU5OTlhMzJjMGIyZGE1ZTJjMjRmMzU2ZCBsZWdhY3ktdHJ1bmsKKzI5MTcwIGU5NTkxNzJjYWY0OTMyMTg4MGY4M2M5OGRmYzM2ZTNhOTM4Y2I4NDIgcmVsZWFzZTIyLW1haW50CisyOTE3MSA0NDc3NjJlYmIxMWQyZDcyYTE1MTg4OWI5YjJlNDYxODVhODc3MmIwIGxlZ2FjeS10cnVuaworMjkxNzIgZWU3NTZhYjZhMTNlMGRmNzM4ZmI3OWJlYzE4ZDFlNzNkMTE2YjlkNCBsZWdhY3ktdHJ1bmsKKzI5MTczIDBmNTA1MzZhMTBiYjc3NjRlN2Q3NzIyZmMwZjA2N2Q0YmYwNDIxZDYgcmVsZWFzZTIyLW1haW50CisyOTE3NCAxZmUxYTU3ZDhlYjFiMjdiOGUzODdiZGFkZDc5ZTcwZGM5OWJhZmY4IGxlZ2FjeS10cnVuaworMjkxNzUgNzMzZGYyZDFlYmE5NzFiZjUwYTQ3MTBkNTgwNmE3NzhiZDA2MzY1NiBsZWdhY3ktdHJ1bmsKKzI5MTc2IDFhOWY0Nzg4NTI2MDRhN2QwY2NjMzgwMWJhMzZhZmNkNzM2MjM2NjEgbGVnYWN5LXRydW5rCisyOTE3NyBiYWQ5Njk5NTc2ZDlkOWJkNTYwZDgyZDRiMjc4ZDA4ZThkZWJkN2NkIHJlbGVhc2UyMi1tYWludAorMjkxNzggYWU2ODYzZTg3NzI0MzdiYzFjNzI1NmNkMTNlNDA5NGNhZGI2YzkzYyByZWxlYXNlMjItbWFpbnQKKzI5MTc5IDA2ZjYxNzNiODBmYjQxNzFkMDc5N2I2OTQ5YTA2ZmEzN2U2NmVjNDggcmVsZWFzZTIyLW1haW50CisyOTE4MCBlMDY3NDNmYWI0Nzc1Y2E4NDMzOWIzYzVjMGM3OGU3ZDdiNmQwM2I3IHJlbGVhc2UyMi1tYWludAorMjkxODEgNDFjNTkyMTIyZjYyOWZkNWQ5ZDYwOWE0N2JkNmRmN2Y5MzExNmM1YyByZWxlYXNlMjItbWFpbnQKKzI5MTgyIDJhZGFkYzE5OTIzY2UxMmYzMDkzMTIzODk1MzM2ZjJlMzdmNTg3ZDggbGVnYWN5LXRydW5rCisyOTE4MyAyOTBlYTBjNmRlNmE1YTFhY2YyYTNjMDZiMjIxNjcxNjIxZDMyMGM1IGxlZ2FjeS10cnVuaworMjkxODQgNTViMTgzOTQxMjNiN2FjNjI1NzU4ZGVjNzdkNGM4NTljZTliMmY1NSByZWxlYXNlMjItbWFpbnQKKzI5MTg1IGUzNzRlYTdhYzRjZTQ4YTA0NDkyOTU0ODI4MGFkZTE5ZmNjYWZkZTAgcmVsZWFzZTIyLW1haW50CisyOTE4NiBmNTMyZTliNjk1NTFjMmU3ZTc4NGFiYjFlNWNmMDJlYzk4ODI0MDNjIGxlZ2FjeS10cnVuaworMjkxODcgM2MyNmFlNjFlOTUyM2ViZGYzNTA1YzFkYmRlOTc4NWMwMDJlNDRjYSByZWxlYXNlMjItbWFpbnQKKzI5MTg4IDhiMjBiMjZmMTE4Njk5ODAyMzljYjEwNjc4ZDcxNWQ4ZDIyYzk0YTggbGVnYWN5LXRydW5rCisyOTE4OSBmNmVkYjFlZjJlM2Y4MDBmNjVjNmUwNjVmZWJmNGZjYWQxYjQ0ZTdjIGxlZ2FjeS10cnVuaworMjkxOTAgNjFlNmI1N2ViYmUxZDgwZWVhMjgyMGJjNzIwZDczNWI3MmRjNWEyZSBsZWdhY3ktdHJ1bmsKKzI5MTkxIGQ2MzRmYmQ1ZTQyMzJkZDdjMDkxNzA3ZTQyOGVlMjllMTlkMjVkYmEgbGVnYWN5LXRydW5rCisyOTE5MiA4ZTkyYmU2NWRlZDM2NjhmZTZhYWFhOGQ0ZjE3NTQ1MjNlMDdiODZiIHJlbGVhc2UyMi1tYWludAorMjkxOTMgNjVmYTE5M2VhMTA5MGNlN2Q5Y2Y5NjRmNDFhZjdmZWY4M2VhYjVhYyBsZWdhY3ktdHJ1bmsKKzI5MTk0IGY0NjE4MjdkYzdkZTZjM2YzZjM1ZjkxY2U5MDNmNzA0MjZlYjM0NWYgbGVnYWN5LXRydW5rCisyOTE5NSBmYTE3MzcxOWFjOGMwZWE2MTFiOGE2NmFlNGRhNjM3OTBmOGNiYzI2IGxlZ2FjeS10cnVuaworMjkxOTYgYjU5ZDFhMTE5MzkzMmRiMzZkMzNmNjFjOWI0MzZlMzc5N2UwNWIwMiBsZWdhY3ktdHJ1bmsKKzI5MTk3IGFjZTgyZGEzYjQ1MGU0YTI5YWJmMWNmMzBjZGYxY2UxMjhjZWI2ZjkgbGVnYWN5LXRydW5rCisyOTE5OCA3ODdmZWNkMGFhMWJiMTA3Njg2OWY1MTMwMDZjYWI5OTlmZTVkZDY5IGxlZ2FjeS10cnVuaworMjkxOTkgYzU5Y2U1MTNkZWY2MjViZWE2YTA1ODA5Mzg3MTZlNmFmY2E3NmUzMSBsZWdhY3ktdHJ1bmsKKzI5MjAwIDNhM2Q1YWVjN2E2YWZmMWRmZWU0ZjUzOGQ3OWZiY2Y2NTdiYWI3NGYgbGVnYWN5LXRydW5rCisyOTIwMSA3MDA1ZjRiNmNjMTIyY2NkOWZmYjkxMWJhODlhNmUyZTVkYmVhMjRmIHJlbGVhc2UyMi1tYWludAorMjkyMDIgNmQyMTM4Mzg5NjY3MjU2MjA1N2YzYjc1Y2FmYTk0Y2JmMDk5NDYxNSByZWxlYXNlMjItbWFpbnQKKzI5MjAzIDkyYThhMzUyZTAyNDMwNjMzYThlY2ZkZjYxNGMwNTI3MDYwZGVmNjQgcmVsZWFzZTIyLW1haW50CisyOTIwNCBiMGZhNWY2YThiYjk3ZGU3YTU1Nzg5ZjM0ODMwOTQ4ZmRmZWVkY2E0IGxlZ2FjeS10cnVuaworMjkyMDUgZWVlZDdjOGIyMzFhZWQxNjc2N2UzNzBlNzdmMmMxMjNlMDU2OGI2MCByZWxlYXNlMjItbWFpbnQKKzI5MjA2IDk3MDAyYjI1MDQyNTY3OWQxODYyNmE2N2M3ODJlY2U3YTY4OTFjNjcgcmVsZWFzZTIyLW1haW50CisyOTIwNyA3MGY5MDI2YTJiMTZmZDM4ZDg3YzI3MjRkNTZmMDNiMzhjMWM5MWY3IGxlZ2FjeS10cnVuaworMjkyMDggMjFhYjJhNjc0YzBhMTQ2NGVhMDZiZGQyYzllYjBiNDRlNGQ3ZDRjMSBsZWdhY3ktdHJ1bmsKKzI5MjA5IDM5NmM4YTI0ODgwYzgyNWQ1NDI0ZjBlNmNmMmM0YmY5Y2UxN2YxOTcgcmVsZWFzZTIyLW1haW50CisyOTIxMCA4NmJmODQwYzJhMWNhOGJlNGZkZDQwMjU3NzAyZTMwMTU3YmNlODM1IGxlZ2FjeS10cnVuaworMjkyMTEgNTRlYmYwODVkMjZmYTk2NGNhZjYyZGY2N2M2YTc0MWM4MWZiMzE1YSByZWxlYXNlMjItbWFpbnQKKzI5MjEyIGY3Y2NmNDk5MTU2NWMzZmIzMzIwMjhhMWQzYzJhNmFjM2ZmMWE2ZDUgbGVnYWN5LXRydW5rCisyOTIxMyA3MzQwYjY0YTQ5MDgyMjNlYmJmM2UwMmFlN2U4ZGRhMWQ0NjNmZDgzIHJlbGVhc2UyMi1tYWludAorMjkyMTQgNDg5MGYxYmRlYWE2NDJlMjBjN2U0Zjg3NjkxY2MyNTQzNzk2NmYzNyBsZWdhY3ktdHJ1bmsKKzI5MjE1IGY3YTQ2YjBkM2MwN2FhMzBlNjVhZTFjMjYzMzNhZWZiMTY3NWQxNjcgbGVnYWN5LXRydW5rCisyOTIxNiBkNDNlODJiOGQ3OWQ1Njg5ZThiYzliYjc2NmRiODRjM2M0OTY4ZDJjIHJlbGVhc2UyMi1tYWludAorMjkyMTcgZWMwYTQ4YWU4ZWI0N2VhMTZmNzM3ODQ4MTY1ZWNlOGQ0OTlmYjllYyBsZWdhY3ktdHJ1bmsKKzI5MjE4IDliZDJmOTc5MmVmYmE2N2ZmNTRmZGFmYWNjOTgyZmMwOGEzYTMxOTAgcmVsZWFzZTIyLW1haW50CisyOTIxOSAzYzk1ZTA5NzY4NDQ4ZWNhMzQyM2RjMDJlMGFiZjYwNTAwNDE5NjA2IGxlZ2FjeS10cnVuaworMjkyMjAgMmQxN2UzY2I3NzRlODM2M2Q5MTU0NDRjNGUxY2QyNTU2M2FlMzQxMiBsZWdhY3ktdHJ1bmsKKzI5MjIxIDc1Y2JlYzQwZGI3ZDVmYzU0MWNmZDBmZGJlM2JiZTUwM2U2MmNjZTYgbGVnYWN5LXRydW5rCisyOTIyMiA2ZDM1ZDQyOTJkZWM0NmQyMTgzOTI2MmM1ZmFlYjIzYTFkMTJlMzc5IGxlZ2FjeS10cnVuaworMjkyMjMgNjMyMjU4MTE0OThkNTExZDMxYjFjM2IwNDJhZGZhNmRmNDlkZWIwZiBsZWdhY3ktdHJ1bmsKKzI5MjI0IDA4MzhjNDI0NzkxNzgzZmVjOGE1ZTNkZGI2ZDFkNDBkMDQ1YjE4MTggbGVnYWN5LXRydW5rCisyOTIyNSBmNDQ5ZmI1YmJhYjhhZDY5YTUzYjI1NDJjNGQxOTYzNGMyOTMyZDUwIHJlbGVhc2UyMi1tYWludAorMjkyMjYgNTYzMjg0MWEzMmE0MDU5ZWJlYTM3NTdmNWMzNmJmN2YxMDUxOWQ0MyBsZWdhY3ktdHJ1bmsKKzI5MjI3IDZlZDBiYmRhYmRjODE5ZWMwYTI1YTFhMDdkMDUwYTFmMjIwNzJmYTQgcmVsZWFzZTIyLW1haW50CisyOTIyOCA2OWFhNjBkNzcxZDFmMzE5OWNjZDM2MzE0ZDUwYTZjNDJjMzQ4YmE3IHJlbGVhc2UyMi1tYWludAorMjkyMjkgYjRlZDlmOTMxOWNkZTQxMTVkYTFmMTU5NGU4ZWMwNzA0MDJhMDZhMyByZWxlYXNlMjItbWFpbnQKKzI5MjMwIGY0NDdiNjk2MDFiOTE1NmUxZDVhYTIwZjEwNTk1NzVhM2JlNWRlMjggbGVnYWN5LXRydW5rCisyOTIzMSBjYTk4OWE3MWI2YzdkZDdkY2QxMTVmYmYxZjllMjcwNjMxZmJhM2EwIHJlbGVhc2UyMi1tYWludAorMjkyMzIgNzFlM2E4ZTlkODg0MDYxYzFkNTdmOTZiOTlhMjQxZjgxNDllMzk1NCByZWxlYXNlMjItbWFpbnQKKzI5MjMzIDQ0NzI5ZmJiM2Q1YmJjMWFmYzZjN2VhNzBlY2MzNmRjMjJhMTIwZDQgbGVnYWN5LXRydW5rCisyOTIzNCA4YWU5YzBiMGFhMGYxNTRkY2M0OGRmMTVhMWQzY2NiYmI0NjVmMzE0IGxlZ2FjeS10cnVuaworMjkyMzUgN2E1N2RkZjcyNzk0ZWY5ZjEzOWE2NGYwYzBlOGJlOTQ4YzNkZGZhNiByZWxlYXNlMjItbWFpbnQKKzI5MjM2IDAzN2RmYmEwNzBhYzc4YzM4YTYwMmQyZGE5OWY3OTQzYzc1ZDQ1ZjIgcmVsZWFzZTIyLW1haW50CisyOTIzNyA1Njk4ZjBmZTJlYTAwOTAwNjA4ZWI3NGJiMzNhZGU2MzBmMzcxNmZhIGxlZ2FjeS10cnVuaworMjkyMzggOTUxZTNmZTdlZDNhZDNhNTZlNGI2Y2I3N2M4MWQ3ZDNhOGMyMDkxOCBsZWdhY3ktdHJ1bmsKKzI5MjM5IDNhODc5ZjJmY2EwNjZhZDI2ODI0ODYwZTQxOTZlZTViYWM4ZjgxODAgbGVnYWN5LXRydW5rCisyOTI0MCBkNTg3MWQ2ZTczNWQ3NGRmYzcxNWFlYWE2ODkxM2JiMGRmNzI4ZGM4IGxlZ2FjeS10cnVuaworMjkyNDEgMzYyMzAxYThjM2U0Mjg5ODZkNDA1MjNjMjRlOWNkM2UzNTE5NTI3ZCByZWxlYXNlMjItbWFpbnQKKzI5MjQyIDkxZWJmNDg4YjVhMTg3YmIzY2IzMTIzOWUxMzYwYTRlNTQ4ZjkxYmUgbGVnYWN5LXRydW5rCisyOTI0MyBjMzU1ZmQzN2Q2NDA3YjE0MmZjMmRmMTc4Y2ZkODU0MjA4Mzc5OWYxIHJlbGVhc2UyMi1tYWludAorMjkyNDQgODRlZTVhNDk5NzQzMDEwNjg4NmY5ZDY4OWUzNGY2ZTcyNjgyYmIxYyBsZWdhY3ktdHJ1bmsKKzI5MjQ2IGVkZjVlN2U1NWQxNDBhNzcxNzVlNzAyYWY1NmRlYzcxMWFkOTZlZmQgcmVsZWFzZTIyLW1haW50CisyOTI0NyBhZGU4YWYxYWEzYzY4ZjQzM2I2NzJmOGQxNzkxZWU5ZDYzYTNiODBkIHJlbGVhc2UyMi1tYWludAorMjkyNDggMWRhY2I2YWMzOGU5Y2VlNTMwYTdmOTUwYjQ3OGI4OWJhZDFlNWNmOCByZWxlYXNlMjItbWFpbnQKKzI5MjQ5IGNjNDFiOWNhY2FlODQ3ZTUxM2Y2ZmM1MTM0ODRiZTJhNDU3ODYzODkgbGVnYWN5LXRydW5rCisyOTI1MCBmMGE3NGFlMDlhZDczZTQ4YTM1MTk1NWQ2MDlhODg1YzcwMGY5MjhhIHJlbGVhc2UyMi1tYWludAorMjkyNTEgMmVmNzFmMzUxYzc0YTJlMWY1MGYxMzZlMjZkYWZkYWEwZWI0YjI1YyBsZWdhY3ktdHJ1bmsKKzI5MjUyIDQyM2FhNWVmOTI0N2JkNGY1ZGZlYmZjNDgxYjkwMDc1MjQwMTk3MWYgcmVsZWFzZTIyLW1haW50CisyOTI1MyBjZjE4Y2EwZWVhODkyZDU1YjQ5Mzk0OGJmMTJmY2ZmMTQ4YTJkODRiIGxlZ2FjeS10cnVuaworMjkyNTQgYWYyMGFlYWFhOTgyMDRhMDQ2MjdkMjdiZmM5Y2YyNmM3NmI4ZGY5YyBsZWdhY3ktdHJ1bmsKKzI5MjU1IGJmMzg0MTExYjNiMzhmN2Y4MjE3ZTFkYjAyODZlZmI1MjExOTQ1NmYgcmVsZWFzZTIyLW1haW50CisyOTI1NiBlYTFhNGNlYmM1MzBhNWIzZGU3ZWJkZThmZTg4YTQzMGFkYWQ2MjZkIHJlbGVhc2UyMi1tYWludAorMjkyNTYgNjFkNTMxNTMzYTg2MjI0YTFjMjY5MTdjMTgwMTNkOTFmNTkyZmJmYiByZWxlYXNlMjItbWFpbnQKKzI5MjU4IDgzODI4NTgzZDkxNzM4ZjZiYTg2ZTU2ODg4OGZjNWY3NTA2NjFmMzkgbGVnYWN5LXRydW5rCisyOTI1OSAzMWIyZmI0NDg1MTQ2MzJhNTUxOWRiNzY3ZjllN2Y3MmZhZDM1M2MzIGxlZ2FjeS10cnVuaworMjkyNjAgYTNkNjEyZjA1NjNmMTY0MzZkYjdlMGNhNjU0ZDkxMjJmZGY3NjU0MyBsZWdhY3ktdHJ1bmsKKzI5MjYxIGI4NThmNGM4ODNkZGRlNGQwODRjOWI4ZTRiZDRiZWIzOGJmOWRmMzcgbGVnYWN5LXRydW5rCisyOTI2MiAwMDFiNzg5ZjFmODRjMDA3OGNjYzUxZjlkNmRlY2IwZmMxMjJjOTMzIGxlZ2FjeS10cnVuaworMjkyNjMgYWMxNDMxN2E5YWU4YjMxNmU0YmE1MjdjNzA3NDkyY2Y3NzRmNmRmNSBsZWdhY3ktdHJ1bmsKKzI5MjY0IDNlYWZiZGU1NmIyMTlmMWRhYTVlMmM4NTJlYWUwOWFjMWJmYzVkYzEgbGVnYWN5LXRydW5rCisyOTI2NSA2NmUzZTVmMDkzY2ExMTM3NDg3ZGM4MDg2OTNmYmNmM2JkNDI2ZThhIGxlZ2FjeS10cnVuaworMjkyNjYgODVjODdiM2FjOTZiYzI2ZTU3NGY5NTRlMzFiNzZiZjk0YTVjYjg3NSBsZWdhY3ktdHJ1bmsKKzI5MjY3IDZjOTMwZTI1NmExNmQyNDg5ODZhZWQ3OTAzZDc0NTNlY2YwOTBmNWQgbGVnYWN5LXRydW5rCisyOTI2OCBiYzgxZDUzMWM2MjkzMjI1MmE3MjU4ZTM2YjgyMTFmN2RmYTliYzVjIGxlZ2FjeS10cnVuaworMjkyNjkgMzQyODQ4MjVkOWNkODFjMjkzMzNmZWQ4OWEzZjE5NGRlZDVmZmExZCBsZWdhY3ktdHJ1bmsKKzI5MjcwIGM3N2Q4MzU3MGIzZmNhZmY2YTM2Yjc4MjA0ODQ2ZTVmOWUwNGM4NmEgbGVnYWN5LXRydW5rCisyOTI3MSBhYjlkNDAxNmI1ODdkNWFlOWE3ZDVlOTQyZjIxNGFkZWJhM2E4OThhIGxlZ2FjeS10cnVuaworMjkyNzIgNjAwMTI2NWVjNjg2MTU2YzdhN2E0ZDE5MmUzMDVhY2FhMzAwNWYyZiBsZWdhY3ktdHJ1bmsKKzI5MjczIGI5NzY5ZjcxMzNjNjBhYzJiNDI2YTI0MWY3ZWQzYzIxNGVjMjI2ZGEgbGVnYWN5LXRydW5rCisyOTI3NCAwYmJlYTRkY2Q5YmVkNmQ4MWM5Mjc0NWNmNjhlODg4YjE2ZmJjZjk2IGxlZ2FjeS10cnVuaworMjkyNzUgMzdiZDJhOTAxYzEwMGE5ZmNmYzBiYmM1NTQ0YmU3YTE5OGQ3ZTEyOSBsZWdhY3ktdHJ1bmsKKzI5Mjc2IGZkY2E4N2M0MjM0ZWE0NmE1NDJhZmMxNzhiNzIwMGU1ZTc0MTQxZTQgbGVnYWN5LXRydW5rCisyOTI3NyBjZGNiMTAyZjhlNTZjMmNmNGE5MGE4NzNmNDNmNWJiNWJhN2RkYmFlIGxlZ2FjeS10cnVuaworMjkyNzggOTE1MTEyNjcxMTUyZjQzZmE5ZDdkY2I2ZWZhMzA2NjVhODYxZDkxNyBsZWdhY3ktdHJ1bmsKKzI5Mjc5IDU0ODM0MzYzY2NmMGRhNjlmMzQwZDBmYjc0MTdkZWEyZTU2ZTZkMDAgbGVnYWN5LXRydW5rCisyOTI4MCA1ZDM1MmRlOTQ0MTU4MGM4M2MyZGMwMmE2ZWM0MDY5MTQ2ODE3YjczIGxlZ2FjeS10cnVuaworMjkyODEgNzc3OTk4YTIyN2I3NGQxN2Y0ZGNiMjcxOTJlYmU3YjllOWFlNjljMiBsZWdhY3ktdHJ1bmsKKzI5MjgyIGI4Y2JkYjczNWNmMmIxOTllNTY0Zjk0ZTkxODliNGFmNDIwYjU2OTkgcmVsZWFzZTIyLW1haW50CisyOTI4MyA0YTkyYzdkOWQ0MTU0YjA1ZmJkMjQ1ZmZlMDZkYWQ4YTRlMGQ3MDYwIHJlbGVhc2UyMi1tYWludAorMjkyODQgNzZhYzE2MjkzZTRiNmM3NDA3ZWE5NTE0ZjkzNzJiN2Q4MWEwZjgxYyBsZWdhY3ktdHJ1bmsKKzI5Mjg1IGZmNjdkNWZmMTIzZTU2OWNiMGI1NTVjYzRlNDk4N2U3NDM0NGMzYWQgbGVnYWN5LXRydW5rCisyOTI4NiA3OTQxOTg5N2EzNmZlNzk3NzU1NmI3NGQ2MDA4YjU2NmNmMTIyMzQwIGxlZ2FjeS10cnVuaworMjkyODcgYzQ0MDNhM2VmYTVkNWY4YjhkODRlNDZjZDJiODk4ZGM2YmZkMTUwMyBsZWdhY3ktdHJ1bmsKKzI5Mjg4IDEyMjI3ZDc5ZjZiYTRjNzZkZjA1ZmM2NzFmMTVjNmI3NTE4NmZlYzAgbGVnYWN5LXRydW5rCisyOTI4OSAwZjRlOTk4ZTNlYmI2MzM0Y2IxYmE3YTUyMTM2NWI2ZGUwMzBlZjcxIGxlZ2FjeS10cnVuaworMjkyOTAgMDMyZjE5NjA1OWFhMGI0ZjcxZTBjODBlNGZjYzBmZTk3YTZhYmUxMyBsZWdhY3ktdHJ1bmsKKzI5MjkxIDk5MGIyNzUxNDkzODJiNGU3ZDdkOTRiNGFmNDhhZjkxZGJhNmM0MjkgbGVnYWN5LXRydW5rCisyOTI5MiAxYWZiMjI4ZTQyNjViNWE4NmYwOGMwYzg0ZGI0MDYwNjk0MzE1MDE2IGxlZ2FjeS10cnVuaworMjkyOTMgY2ViZWUyYTllM2NmOTk2MGMwMDU1NTM1ZjM5YTA0YjVlYWZlNTZiOSBsZWdhY3ktdHJ1bmsKKzI5Mjk0IGMyZGQ0MTMwMTg0MTA4YmU1M2I1MWY3ZTM5YTg1ODlmMWZhYzUzMTAgbGVnYWN5LXRydW5rCisyOTI5NSAwOTNmZTViOWY2Zjk0OWFhNWJiZDExNGYwMzVjOTI4YzAxZDU1Yzk1IGxlZ2FjeS10cnVuaworMjkyOTYgN2VhNjc0YWM1OTBlZjU3NDhkM2M0YTFkYjc0MTc2MDc3NGMxNTcxMyBsZWdhY3ktdHJ1bmsKKzI5Mjk3IGRjNDIwZGUxN2E2ZWU2M2NlZTAyMGI1MTk2NDdhMTNmMmEzNDU2MzEgbGVnYWN5LXRydW5rCisyOTI5OCBkZWFiZDA1M2I2ZGUxZjRlZDY1NmFmZDM5Nzk1ZmZlOTg1N2Q3YWM5IGxlZ2FjeS10cnVuaworMjkyOTkgODA1MDE1N2E0NDMwYmI3YmQ4NzIxMzU5OGI3NDM4NGJiMDAwM2E5OCBsZWdhY3ktdHJ1bmsKKzI5MzAwIDA5MGI3MmMwZDJlYjczMDI1OWE5YTc2Mjk1ZGUyNTEyNmQxZmE4NmEgbGVnYWN5LXRydW5rCisyOTMwMSA0NGNjN2M2MmQ5OGRiMzc3NjFjNDMxN2M1NGVjNTJmMmU1MDI3Y2ZmIHJlbGVhc2UyMi1tYWludAorMjkzMDIgMDM1YjhkZWI1MmMxZWY0ZDBlYjUzMDE3Y2E3YTQwMmMxOGVlNzM5NiByZWxlYXNlMjItbWFpbnQKKzI5MzAzIDQ3MDI5MjEyOTdkMTI1NWExMGNjOWM3M2JkMTI4N2IzNWEwNzEwNzEgbGVnYWN5LXRydW5rCisyOTMwNCBhODlkMDE0NTU5ZTA1N2YwMTYyMzI5Y2M0ZDhlNDViOTcwOWVjNjRkIGxlZ2FjeS10cnVuaworMjkzMDUgMmYzNjQ3YjIxYjA3NjMzOTBmMmQxNzg3NTE0MWQ4MzU1NGY0OWZmOCBsZWdhY3ktdHJ1bmsKKzI5MzA2IDg1NDA4ODdiY2VjNmM5YjkwYTJhYWFiNDEwMjI3OTUyMmQxZjdjNTkgcmVsZWFzZTIyLW1haW50CisyOTMwNyAyNDM1MDM5MjZjODFkODBlYzUzZTFhYjA0YjAzNWQzMzViZWRkMDQyIGxlZ2FjeS10cnVuaworMjkzMDggZWVhNDBjNDE3MjA1MzlmYmY3YjM0MzBkMGQwYmEzMzE5OWIxMjc3MiByZWxlYXNlMjItbWFpbnQKKzI5MzA5IDA5ZTNmMGQ4YmUxMGJlYjVhYjBlZmU4NDg0YWRhNDdiNGE3YjIyYzkgcmVsZWFzZTIyLW1haW50CisyOTMxMCBlYWI3OTQwMjc3ZmJiM2MxMzRiZGM0NDExODc2ZDJlOTJjMzRiN2M5IGxlZ2FjeS10cnVuaworMjkzMTEgN2I3Yjk2NTU1ODQyYTk0ZDQ2NzU3M2M0NmMyNWM0NzA1YjMzY2QxYSByZWxlYXNlMjItbWFpbnQKKzI5MzEyIDMxYmRjNjZmYjMwN2YwMTVjZjBlOGMwNzA4YTU4NTk5ZDRhZDM2MWMgbGVnYWN5LXRydW5rCisyOTMxMyA0YWNiNTUwMWI0OTAwYzcxM2QwMjJmMDNkZTc4MTRjNGViOWY1Y2YzIGxlZ2FjeS10cnVuaworMjkzMTQgOGZiMTJhYzc5YzkzN2FhNDM3ODU5NjU2ZmIxYWQ2MTNhYjYxNWI0NyByZWxlYXNlMjItbWFpbnQKKzI5MzE1IGVlZDBmY2Y4NWI2MjI5MDQyOWMyMTE5YzVkZmQ3ZjBjZTA2NzMwOGQgbGVnYWN5LXRydW5rCisyOTMxNiBhNWRiMjQ2ZDk0YTBiOTFhZDk0NDM0YjJjOTc2Zjk1MzAzZmUyOTM3IHJlbGVhc2UyMi1tYWludAorMjkzMTcgMDU3ZGU0MWRhZjQ4OTJkMDFmZmRlOTllMzg2ZmIzNDQ2YjY3ZTc5NiBsZWdhY3ktdHJ1bmsKKzI5MzE4IDY3MzgxZWJkNWY0ZjcyNjA4M2FiODU1ZDdhMjVlNGY3NDgwMThjZGMgbGVnYWN5LXRydW5rCisyOTMxOSA3ODg1ODk5ZmI0M2ViNTBjZDI5OTQyYWZmNzEwNDRhYmI3YjA4MjFhIGxlZ2FjeS10cnVuaworMjkzMjAgMWY1ZjY0ODE4ODZkOWFiMzQ4MTFkZTZlNDVmOTMwNjI1ZjUyZjdkNSBsZWdhY3ktdHJ1bmsKKzI5MzIxIDY4MGJmY2M5Y2EwNjZjNmM2ZGUyN2RjMDNlNDNiYWM3ZGQwYjcyYzUgbGVnYWN5LXRydW5rCisyOTMyMiAyZjliMGEzNWUyMDU3ODhmN2UyM2ExYmY0NzdkMDg4MDQyYTI0ODFhIGxlZ2FjeS10cnVuaworMjkzMjMgYTExY2ZhZTcxZGViMDc4NmU2MjIzMDA3MDQ5ODk0MDBjYTk2NTQwZiByZWxlYXNlMjItbWFpbnQKKzI5MzI0IDg0YTNkZDk5NGNkMTg4MDRmNjMzYjZjODNmNWYyOTZkMGJkMTM1MzUgbGVnYWN5LXRydW5rCisyOTMyNSA1NGYzMmJhNzA0N2NiM2ZiMTg5MjA3MTNlN2JiNGU0YmU1OGM1ZWNmIHJlbGVhc2UyMi1tYWludAorMjkzMjYgOWRkOWM1MzFjYTc4YzRmMTBkYzExNjRjNjEyOTk4MDM1ZDY3MDVjNCBsZWdhY3ktdHJ1bmsKKzI5MzI3IDRjOGE4Yzc0ZjRiZGE5NGZmMzg1ZjY1YzE1ZTRiZjIzN2YwY2ZmMGIgcmVsZWFzZTIyLW1haW50CisyOTMyOCA4MjNlOTQ3ZTI0NTAyNTdmZmM1N2M5ODFkMjVjZGExYmZhZWVhNmNmIGxlZ2FjeS10cnVuaworMjkzMjkgMzVmNDc2ZDY0ODFlZjQyOWRlZGFjMGU2Mjk0MmYzNjI5MDkzYThmYiBsZWdhY3ktdHJ1bmsKKzI5MzMwIDQxZTAzNjFhMjE5MTIyZmFlNzMzYzBmNmQyZDUzMmYxMGEzNGE1NjIgcmVsZWFzZTIyLW1haW50CisyOTMzMSBlNTZiNTJlNzhiYzk3OTBiNTNiNjc4ODUwYTNmMzdkMmYyODFkYzk4IGxlZ2FjeS10cnVuaworMjkzMzIgMTUxYWEzNDM0YWE2NzAyMzk3MmNhNzNhZGRjY2ZjMzc4OTQxN2E5NyBsZWdhY3ktdHJ1bmsKKzI5MzMzIGQxN2ZmYTA1MjJiNzU5ZWU5OGE3M2NkNTFkNjdiOGRkNjk5ZWVhYWUgbGVnYWN5LXRydW5rCisyOTMzNCBiOWFhODcxZjg0NGJmY2ZmY2VjNjI1NmU3MjEyNjUyYmNjMmZiOGE2IGxlZ2FjeS10cnVuaworMjkzMzUgYjdiMDEyZTc4ZGEzNWUzYmM1NTE3YzUyMDExZDVhMWE5NmI5YjM5MCBsZWdhY3ktdHJ1bmsKKzI5MzM2IDJiMTU4MjY3YjAwZTRjMDljMDExMzA3YjA5YzI4YTI2MmU3MmVlYTQgbGVnYWN5LXRydW5rCisyOTMzNyAyYmNiNDE2MTFmYWU5MTkzNTJiNDA3MmIwOWE3ZmJlYTlhMjBiMTkyIGxlZ2FjeS10cnVuaworMjkzMzggNGViOTRjNTZjNDZhNDcxYTQ2ZDNkOWE3ZDBkN2EwODAxMmY3OTE4MSBsZWdhY3ktdHJ1bmsKKzI5MzM5IGNiOTEwYzM5NDkyNzE0OTUzNzUwMTQwMjEzZWEyNWU1NjkwYTM2MjQgbGVnYWN5LXRydW5rCisyOTM0MCBhOWNmZWI0MmUyNDA5OTg2NGEzZmMwNjZjY2QzMTdkOWRiZjM3ZDc3IGxlZ2FjeS10cnVuaworMjkzNDEgNTdmYjNkNWUzZGQzNzYwMWVmZjgyNzllYjA2NWI3YWRkYTE1ZmJkNSBsZWdhY3ktdHJ1bmsKKzI5MzQyIDc5MzA1YTJlZmE4Yzg3OGVjMzdiMWJjOTBmZjlhOWIxMTY4OWJlYTggbGVnYWN5LXRydW5rCisyOTM0MyA5MjUzZmU4NmI5MjJmYTFhMWQxMmIyMGUwMWUxNjFjMzNhOWIzZjBiIGxlZ2FjeS10cnVuaworMjkzNDQgNWY3YTMzNGMwOTI1MTA5OTQzYjVmZWRiZjVlZTg4MDQ3YWZhNWI3ZCBsZWdhY3ktdHJ1bmsKKzI5MzQ1IDE1NjA3ZWM0OWZhZjEwODE4NDdiZGI5MDQ4Mjk3MWNmZDdkODM4N2MgbGVnYWN5LXRydW5rCisyOTM0NiBkNGNmYTQwNDNjMDk0ZDdiYTBiZjA1YzZjNDEyMTQ5OTkzY2E2MmMyIGxlZ2FjeS10cnVuaworMjkzNDcgY2EwMjVlOWZlNWJjMmU5MDRiNDIzZWY3YWFlYWVhMDZiZjdmODdkZSBhc3QtYnJhbmNoCisyOTM0OCA4M2EzMmM1NDdiNDk5M2I2MGY1YTQ4M2E0ODJkZGE3YmU4ZmViZmYwIGFzdC1icmFuY2gKKzI5MzQ5IDA5OGNkYmFkNTVjZjJlNzYwNDJmNjcyNDQ2ZTAxODNiNDgxMjQzZGEgYXN0LWJyYW5jaAorMjkzNTAgMmQ3ZjQyNzcwNzMzMjVjYTg4ZGEzODdmMWE4Y2RmODE3ZTU0NzNjOSBhc3QtYnJhbmNoCisyOTM1MSA0NTg3ZDFhZjJjNDE0M2U1YTQ5MGFmZDYzYTlkMzEwZWJiMGI1NGFhIGFzdC1icmFuY2gKKzI5MzUyIGFhMmVhNWZmNWY0MjcwOWQ3NDhkNjhkOTdkYzgzYzE1OWUyOWU3YjQgYXN0LWJyYW5jaAorMjkzNTMgMDdjNmQzYjkyOTNjMjc1ZGM5NTE5OWU0MzZiYjZjMDNiZDRjYTk0NCBhc3QtYnJhbmNoCisyOTM1NCA0NmI1NjczY2EzODBkYWI4NDVhNWZkOTlhZDJiYjhkZWRiOTAxMjFkIGFzdC1icmFuY2gKKzI5MzU1IGUzNjVlNmJmNDFiYjAxZjY4MzJiZGYyM2JlMTE2ZDc5NGU1ODc3NDQgbGVnYWN5LXRydW5rCisyOTM1NiA0ZDUwMzE4YjNlYjE4MWRiN2Q2Mjg4ZmQ1NWEwMzUwMWViOTZjZTYyIHJlbGVhc2UyMi1tYWludAorMjkzNTcgOGQ0NGQ2MTQ5NDFkNDc3YTY2YmMzMTdmMDQ1NjMzY2RhMjIwYjYwOSBsZWdhY3ktdHJ1bmsKKzI5MzU4IDZmMTg1MDhiZWQzZDI3ODg1Y2JkZmZhZTlhM2RkMThlZDdlZmRmMTYgbGVnYWN5LXRydW5rCisyOTM1OSA3ZTgwZTdkMDVhMTZjODM5YjdkYTI3NWE2OTQ2ODMyYzRjODY2YzhjIGxlZ2FjeS10cnVuaworMjkzNjAgMzRmMTdmYjQ5YzUxMzExMDM5ODZjZTliMjE1ZDExYjRiMGU2MmJjNSBsZWdhY3ktdHJ1bmsKKzI5MzYxIGZlYzE1YmFkMzg2ZDlmMGQzMDcwNWM0ZDZjMzQ1MDQyMzE0YmIwMzcgbGVnYWN5LXRydW5rCisyOTM2MiBhNzBmY2M1ZGJiYTUwNWRkYjU1ODY5N2YxNzZhM2VkMDhhODRjZGYzIHJlbGVhc2UyMi1tYWludAorMjkzNjMgNTI5ZGE1MDVlYWJjNzMxMDM4OTMwYmY4NzExYmRkOWJmNDEyZjA5MiBsZWdhY3ktdHJ1bmsKKzI5MzY0IDE3NTA0MWUzNDU4N2E3NjFlYWJmNmU4NzBhYTkwNGE4ZGM5ODQxZjMgbGVnYWN5LXRydW5rCisyOTM2NSA3ZjAzMGI4ZjkxN2Q5MGIwMmM0ZjM5ZTBiMDJlMTFlYmVmMWM4ZWFhIHJlbGVhc2UyMi1tYWludAorMjkzNjYgZmJlYTcwYTQwMjkxNTQyMTgzMWZhNWNiMmExNDgwYTcxZjkyMmNiYSByZWxlYXNlMjItbWFpbnQKKzI5MzY3IGFjMjM5ZWUwYzllOGI4NzFkYTA4NmQwNGE0YzNkNjdmN2Y2NjZkNDEgcmVsZWFzZTIyLW1haW50CisyOTM2OCBjZjg3OTIwMzUxYWNlOTI3N2E2N2I5MTRjMzU4NTZmM2EyMDNjYmM0IGxlZ2FjeS10cnVuaworMjkzNjkgNDAyZmRhZTY3ZTQ0MGY0ZDg2YTU3MzkxMzc2NDRiZjU4Y2Q0YjFmZSByZWxlYXNlMjItbWFpbnQKKzI5MzcwIDE5NTAwYzliNThjMTYxYmZjNTNhNmU3YzYwMDZmNjU5ZWMzZTY5OWYgbGVnYWN5LXRydW5rCisyOTM3MSA1MDliYjBiNmRmYTNjYmNjOTBiNzM3MjBmYjg2OGU3NjQwNzgyYzc5IGxlZ2FjeS10cnVuaworMjkzNzIgMTI0OTI0NTIxMmU0NDYxNjFjNGY1YTdlZjdiMGNkYTRmZmJhYWM4ZiByZWxlYXNlMjItbWFpbnQKKzI5MzczIDM3ZDg3ZGM4MDNkN2E0YmQ2MmRlNzVmMTEyMmFlZTE3ZGMzNjg4YzkgbGVnYWN5LXRydW5rCisyOTM3NCBkM2I3Mzc3YzhhZmFkZTEyMDlkZjg5MDAwNDg3MjMzMjJlNzU3ODY0IGxlZ2FjeS10cnVuaworMjkzNzUgYzMzOThjMjVkZmVmN2Q5MDY1NmVkM2NkYTEzNzFhMzBjMmM2OTE5NSBsZWdhY3ktdHJ1bmsKKzI5Mzc2IGZiN2M1MmNhOTg0MDUxMGU2ZmYxYjZiMzc5MDEzOTM3NGRjZDc2YjQgcmVsZWFzZTIyLW1haW50CisyOTM3NyAwOTVkYmJlYmE5YzA0ZmQ2NDQzNTNkMzk1MWQ0MDgzY2RmNGFhOWY1IGxlZ2FjeS10cnVuaworMjkzNzggNDg3ZDNjMjQ5MGJjMDM1ODgxMjBlYWQyNWFkOTA3ZmE5ODVmMTBhNSByZWxlYXNlMjItbWFpbnQKKzI5Mzc5IDAzYzNmNjEwZTA1NDEzMDhiNGI1ODRlNmYyZTgzZDE1YjEyZTJlZGMgbGVnYWN5LXRydW5rCisyOTM4MCA1MTgyOGVhNTBiNTljMGU4MWU0Yzc3Y2U1MGE0MWM5ZjQwMjYwODUzIGxlZ2FjeS10cnVuaworMjkzODEgMTc5NDgyODc1Y2ZiYTVjNDBmN2Y4ODcyZjcxODllZTVmYWM4OTg2OSByZWxlYXNlMjItbWFpbnQKKzI5MzgyIDUwOTA1ZGIzNWRhNWIwZjA2OWZkYzRmMjVkNTliMDE2ZmM4YzE4YjcgbGVnYWN5LXRydW5rCisyOTM4MyA2ZWE5ZWVmOTkxMDg0Nzg2MzA4Zjk4NzhlYTYwMjNjZmE4OWY3MmZjIHJlbGVhc2UyMi1tYWludAorMjkzODQgZGYwNTVhOWVmZjljZjkwNzc4YzBkYmU2ZGMzMGE5MTBiMjBkN2MxMiBsZWdhY3ktdHJ1bmsKKzI5Mzg1IDBiYWM2NmUxYjM1NjkwNGVhZTQyZDc4ODBjZTdiM2ZhNDY1NWI2NzIgbGVnYWN5LXRydW5rCisyOTM4NiBhY2NkMmY1NGUxODQ3YWM0NWE5ZWQ4OTAzOTQxODRlMmFmMWViYThiIGxlZ2FjeS10cnVuaworMjkzODcgZDMyYzQ1ZDI3OGIyNDkwZGY1NWU5ZjcwODIzZjIxMWFhODQ4ZWFjNSBsZWdhY3ktdHJ1bmsKKzI5Mzg4IGY3ZGEzM2JjZTFkOTM5OTZjOGU3YmNmMjQ0NjAxNjM5ODJmODI3NjIgbGVnYWN5LXRydW5rCisyOTM4OSBmYmExNmI5YmM5NTE3ZjRiZDlmNTQzYTJmYzM4NjE1ZmYxZTVlODM3IGxlZ2FjeS10cnVuaworMjkzOTAgYjA2MzgzMjllM2I5YTFhOWI2NWJhMWI3MGJlNWMzMTBmYmJlNmViZCByZWxlYXNlMjItbWFpbnQKKzI5MzkxIGYyZGFlM2Q5YTc1YmQzYzNlNTg2ZGUyMmEyOWMxNmM5NDEyNDA3ZjkgcmVsZWFzZTIyLW1haW50CisyOTM5MiA4YmI2MDAzZjdmNTRjNTk2NmVhZWVlNDhlNmQ5MGJmZDUwYmYyMDBiIGxlZ2FjeS10cnVuaworMjkzOTMgNWI2ZDU1YjQ1Mjg3YzQzNGY2MmQxMGM3N2VhNDJmYjcwNzdiZWFkNSBsZWdhY3ktdHJ1bmsKKzI5Mzk0IDk5MDFmZGE3YzM2NjRhN2Y3NTMyMzJlOWVhOGRlOGVmZTAxY2ViNTkgbGVnYWN5LXRydW5rCisyOTM5NSA0ZWY3Njg2YzRjODg5ZjY3MTY2ODYyYjIzZWI0MTZkOTkxYjY3MGYzIGxlZ2FjeS10cnVuaworMjkzOTYgNGY0ZTAyNjBiNzcxMzIzODEzZjM3Y2Q5NWEwYmZmMTVjMTFkZmI1YiByZWxlYXNlMjItbWFpbnQKKzI5Mzk3IGU4ZmM0NTllYzAxNTU4NWJmYjEwMTI5NzE5YmYxNTE5ZmMzNjE5NWMgbGVnYWN5LXRydW5rCisyOTM5OCA2ZTQxNGZiYTQ2ZjY4YzI5YTA4NjVjY2M1Y2U0ZGE5ZGRkNTFlNWEzIGxlZ2FjeS10cnVuaworMjkzOTkgODM0YjBlMDM4OWM1YTliM2E5Mjg5NTQyNWM3NGQ2OTcwNGEzOTc1YyBsZWdhY3ktdHJ1bmsKKzI5NDAwIGRjNGEwMzM2YTJhMzNjYzFjNmE4NDlmNDMxZDUzODM2MjcyMjY2ZGUgbGVnYWN5LXRydW5rCisyOTQwMSA2ZDU1NDJjYTI3N2EzOWE4OTc2NGM2N2EzNzA3ODI1MmFmMzk1NjRkIGxlZ2FjeS10cnVuaworMjk0MDIgNTg5NDFmY2I2ZjViYzE1NmExYjFlYjhjZDQ1MjQ3ZDc0NjI1Mjg1MiBsZWdhY3ktdHJ1bmsKKzI5NDAzIDcwNDkyNjhmMjUyZDI3MjVlNzhkOTU1NmFkYzlkN2M4NDNhZWRjZGMgbGVnYWN5LXRydW5rCisyOTQwNCA3NTc1NmM4NTU4YmQ5MTE3MWNjNTg0MDczNzM2NWRjZTllZDVmNTQ1IGxlZ2FjeS10cnVuaworMjk0MDUgZGVmOTYwOWQ5MzY5Y2E4YWU2ZWUyOWQ3YTNhNWYzNGFmOWViZTQ5MiBsZWdhY3ktdHJ1bmsKKzI5NDA2IDMwNjViNTRlM2FiNzFiZjE3ZGYyNmExYmQzYjBiMDdkN2NjOTdlZmMgbGVnYWN5LXRydW5rCisyOTQwNyAxMWZjY2NjZDM2MDA0NzkxNjc0YTQ1ZmJmMjRjYmUwMmRkOTIyNjZmIGxlZ2FjeS10cnVuaworMjk0MDggNzkwNzI5NDc3NjEwZWE3N2I4MTY3NzNiZDczNjAyNmZkZDVlOTlhZiBsZWdhY3ktdHJ1bmsKKzI5NDA5IDA0Y2MxMmJkY2VkZWFhNzViZDU0YjBlNjI5ZmViMDMxNGM1ODhkYWUgbGVnYWN5LXRydW5rCisyOTQxMCBiZTg4MTYxNDg0OGIyODg2M2ZmMjNkNTdmZTAxMDdlODk2NmZlYTAzIGxlZ2FjeS10cnVuaworMjk0MTEgOTQyNDBhZDUwZGJlMmU3MWI4Y2IzZDY4ZmVhOTUxM2VjN2ZlZDc3NSBsZWdhY3ktdHJ1bmsKKzI5NDEyIGI2ZWU4MDQ3YjI1MGQ0YTk0ZGZjYzk2ZjhhOWU1ZWMyYjAyNzYzYjIgbGVnYWN5LXRydW5rCisyOTQxMyBmYjU3ZDU3NzdhMjQ5MmI3MjczZjA0ZjVjOGEyNDA5M2E2YjQwNjI3IGxlZ2FjeS10cnVuaworMjk0MTQgNDhlNDYxMmY4N2NkOTI4YjllZjdhYzk3YzNlYzZhZjM5ODA4N2ExMyBsZWdhY3ktdHJ1bmsKKzI5NDE1IDQzZjcwMTA5Y2RhNWM1NThiZTI5NjY5YzVmNDkyODkxNmZhNDgwODkgcmVsZWFzZTIyLW1haW50CisyOTQxNiBlMWRiMWY5MGUxN2Y5ZDM3MGYxMjc3ZmFlOTRkNzY2MGExNTRhYzhmIGxlZ2FjeS10cnVuaworMjk0MTcgN2I3NzNhMTI3MWMzZGYzODI0ZjcwOWUwNGM4NWVmNmI3YTk0OGIzZiBsZWdhY3ktdHJ1bmsKKzI5NDE4IDNkYjc3MmQ0NWY5ODg2YzliYzIzMDE2NDJiMGM5Mzc4ZGZlMjY0NGQgbGVnYWN5LXRydW5rCisyOTQxOSAyNmI0NDBjMzdjOTRjODkyNjFjY2Y5OTMzYzZjY2UzZjU2YTJjZTM3IHJlbGVhc2UyMi1tYWludAorMjk0MjAgMjUzZTllZGZkZmMwNjBmZjc3YjQ4OTZmNGFlMmI3NzFjZjA5ODliZSByZWxlYXNlMjItbWFpbnQKKzI5NDIxIGFhZTM3NjRjNGQ1OGQ0OTFmNGM2NWYxYWEyZTAwNGNlMTAyMWI2ZTEgcmVsZWFzZTIyLW1haW50CisyOTQyMiBiOTI0NmY4ZmI4ZmQzMDRjZWM3MzZlZWJhYTFkMjI5YTk4NzBlOGFkIHJlbGVhc2UyMi1tYWludAorMjk0MjMgODA4ZTUxM2EyZjVjMmZjNDg4OTZmODdhNzYyMTNhYTBkZTYwOWNmZCByZWxlYXNlMjItbWFpbnQKKzI5NDI1IDg1ODVmZDlhZWNlZjk1YWRlNjU4NWY4MWQ4Zjc5YTEyZDY0NDlmMjEgbGVnYWN5LXRydW5rCisyOTQyNiAzNmQ0MThiZWE1NTIxOGYwZjBmNjEwNDgzZjI1NmE0OGI2Mzk4YTU3IGxlZ2FjeS10cnVuaworMjk0MjcgNDQ1ZmViMjZhZGZiOWFhNTIwMWYyNjQ1NWViYjMwODA0ZTlkYTYxZiBsZWdhY3ktdHJ1bmsKKzI5NDI4IGY0ZjE3Njc4ZmRkODY1OGRiYTRiZmZkOWU5MjAyMDFkMTBmZjMwN2MgcmVsZWFzZTIyLW1haW50CisyOTQyOSA5NDllZDgzNjVkNThkMzUxYmM3MjA1NTZhMzFlZDBmZTJiYjU0YWEyIGxlZ2FjeS10cnVuaworMjk0MzAgMThlZGYyM2JmNDk5M2Q3MTAyOTQ3ZTM0NDc4OWUzYzEzNWEwNDNlZiBsZWdhY3ktdHJ1bmsKKzI5NDMxIGRiYTYwZDAyNGU0ODQzNjNhMmY4ZTljZDM5NzRlZWNhN2I0NGFiMTkgbGVnYWN5LXRydW5rCisyOTQzMiAwOTY2NDJkN2VjYTI1YmI3ZDJjYjIyNjMyNTg4YzUyMTgwZGM3MmUwIGxlZ2FjeS10cnVuaworMjk0MzMgZmM2YTE5ZjY5YWM3ZTJiNjBlZTc5Y2VmYTJmZmMxNjNlMmQwOWYzNyByZWxlYXNlMjItbWFpbnQKKzI5NDM0IDAxYmY5Yzg4ZDk2MDM2YjY2NjJhMTU5MjdhZGQyNmMyNGM0NTZjZTMgbGVnYWN5LXRydW5rCisyOTQzNSA3MjczNGIzOWY4YWEwYWNmNTI2YWQyM2E2NzlhZWZhNDZhYTAyOGFlIGxlZ2FjeS10cnVuaworMjk0MzYgZDkwZWY0NmQwODM4MjhiYzk1YzBiZDQ2YjkxMWVmZWJjOTJiZTczMSBsZWdhY3ktdHJ1bmsKKzI5NDM3IDRhMjRjNmE2NDI5YTY2NzM1MDdlM2E2Yjc5NTMwNmY1OThkNjc3MTkgbGVnYWN5LXRydW5rCisyOTQzOCA5MWQzZDQ0NTJjNDgyMjBiNDY3OTVjMDMzY2M0Y2JlNGYzMDU3YjE2IGxlZ2FjeS10cnVuaworMjk0MzkgZTM0OWZlMDkzYjM0YTkxODQ5ZDE4OTlhZGE1NWJhM2IyOTliN2QzNCBsZWdhY3ktdHJ1bmsKKzI5NDQwIDMyM2U0YzExNDZkMGM2MDI1ZjZiZmRlNDhjMmYxMDY0MzBlNzIyMGYgbGVnYWN5LXRydW5rCisyOTQ0MSA1NTE3YzM2YWM0OTdkYzM2NDBiMDZiY2RiOTFlZDk0Mzk3YTg5YTc0IHJlbGVhc2UyMi1tYWludAorMjk0NDIgNjg3NWJkN2NiNTcwNTczZWVjMzNjYmU2NzQzNWViMTkwY2NhYWJlYiBsZWdhY3ktdHJ1bmsKKzI5NDQzIDViODI4ZmZlMWIzNWYwMWVlNmNiZTM3MDIxNWU3YjNjN2Q5ZDliNzUgbGVnYWN5LXRydW5rCisyOTQ0NCA0MjUyYjA0ZjNlZWQ2MzRjZTIzY2NkMjA3ZjhlNTU2NDQyZjE5NDg2IGxlZ2FjeS10cnVuaworMjk0NDUgOGU3MzM4MzQ3NGVhZWI3ZWUyOTJmNmQzOWI2MzlkYzU2OTUzYjUwZiBsZWdhY3ktdHJ1bmsKKzI5NDQ2IGQ3ZGEwODBkNzc2MzA0YzhiYzM5ZWQ3NTdkZWIxN2VhZGFhMDlmZjEgbGVnYWN5LXRydW5rCisyOTQ0NyA0NzJhNDJlMjAyNDQwOWFkYzU5NjBhNjMwMTJkMjI5NWY4YjAzOTBlIGxlZ2FjeS10cnVuaworMjk0NDggY2I4Mjk4YTZlZDQ3YzQ0ZGRmMTA2NTFhNmU3MDJhZTQxOTY5MTcxOCBsZWdhY3ktdHJ1bmsKKzI5NDQ5IDY2NjJmOWQ0MjIwYjVjZGEwNjQ1ZTE2YjYzOWIzYWE5ODRmMDgxNmEgbGVnYWN5LXRydW5rCisyOTQ1MCBhNjhjNmQ2MmZlNzg4ZGY0MDA0OTFkOGY2ODhhZWYzOTcyOWM0ZmQyIGxlZ2FjeS10cnVuaworMjk0NTEgMDQwYWY5YzczNmJiMTk4YmU4NTM2MzI3ZmJmMTI3NTNkZTVlYzdjMCBsZWdhY3ktdHJ1bmsKKzI5NDUyIGI2NDc4ZDQ2MzU1NTRiZTE1MjlhZTk1ZGE4OTEyNGVjZDViZDMxNmUgbGVnYWN5LXRydW5rCisyOTQ1MyAyZDgzN2UyMDgzZmFmMzUwOTQyZDZjNDZmNmQ4YjhlNjZhN2U4ZTQ1IGxlZ2FjeS10cnVuaworMjk0NTQgMWQwMmI0MDVlMzFmYjIxOWMwNzUyZDQwMjI5OGY1OWQyMDA1OTU2ZSBsZWdhY3ktdHJ1bmsKKzI5NDU1IDRmMWI3Mzk2YTNjNTQyNjg5NDQ3N2U3MzFlYmI4MDkzMzE2M2NiYTMgbGVnYWN5LXRydW5rCisyOTQ1NiBkODEyYjhhYWVmYjMxYjQ2NjJmYjZiNTZjZDk2OTljN2M3NDRiZGE3IGxlZ2FjeS10cnVuaworMjk0NTcgMDE0N2ViZWY5NDUzYzM2MWY0Mzg0MmE5ZTMzN2E1YmM0MWJiZTFjZiBsZWdhY3ktdHJ1bmsKKzI5NDU4IDA2ZTAwNTY2NmM0MjI5MWY4ZmRkMGI1NjUyZDVkNDYyNGEyYTgyNDAgbGVnYWN5LXRydW5rCisyOTQ1OSBlMWJmNDYwNGMwYTU4NGIxYmIxODA0ODIzOTA2NTU3N2U4MjZlMmE5IGxlZ2FjeS10cnVuaworMjk0NjAgZDMwOGRmODI0ZTJkMTViYzAxMmY5YzE3ZGIyNTczY2YxOTAxZGIyOCByZWxlYXNlMjItbWFpbnQKKzI5NDYxIDE1MjIxOTgwNzE0NDcyZDEyMzRhMDZiYTRiMTk4YzczYjE1YWMyNzQgbGVnYWN5LXRydW5rCisyOTQ2MiAxNDI1YmVhMmVhNjZhMTBjOGRiMzhiYmEwM2E1ZDg3NDAxZDc4NzQ2IHJlbGVhc2UyMi1tYWludAorMjk0NjMgOWNlZDNlNTE4N2VlMWQ2NjU4ZWQ0MGUzMWZkYjEwNzQ0ZTVmZDY3NCBsZWdhY3ktdHJ1bmsKKzI5NDY0IDZlMTFhZTA0YWYxMDk0OWE2MGU1ZGJjYWY3MDhiN2VhMzAyYjcwMjUgbGVnYWN5LXRydW5rCisyOTQ2NSA5MGY0ZWVlZmM1MTZmOWYzZDNlMDdjMTA1YzMxYWRmMzdmMTAwYjgyIGxlZ2FjeS10cnVuaworMjk0NjYgNjExYWY3OWMwZTg5MmI0ZWMzNDNiYTBkOWYyOWM5NTJiZDkxZmRlZSBsZWdhY3ktdHJ1bmsKKzI5NDY3IDI3M2NhZDdmN2RmNzIxOTY3ZGFiYjRjNDRlMWVkNzNhNzQyZTQxYzQgbGVnYWN5LXRydW5rCisyOTQ2OCAxOTc2MmE0OTM2ZmM4NGI0YzA5Y2UwNWY0NmUxOTFhMjYyMGUyZGZhIGxlZ2FjeS10cnVuaworMjk0NjkgMGZkZmNjZGZlYzA2ZjJlZWMyNDViM2FjYmM5MTczZTIzN2M2MmU5NiBsZWdhY3ktdHJ1bmsKKzI5NDcwIDkwYTA5Y2QxNTMwNTkzMWRmNWQwMTc2NDMyOGI2MDk3ZTgzYWI5YTkgbGVnYWN5LXRydW5rCisyOTQ3MSBiYjgxMzM0NmIyMjdlZTFjOTY0NjFmMmMzZTVhMzk4OTRmZTVlN2ExIGxlZ2FjeS10cnVuaworMjk0NzIgMWFhYTEyYzA4YjM1OTQ5Zjk0ZDUyOTY0YTZhZDY2OTdlMDg2ZWEyYSBsZWdhY3ktdHJ1bmsKKzI5NDczIGE3NTM2Y2ViMDZmNjNjYmZlZmMyMDkyYWVhY2NiNmQyNzhhNjM0ODAgbGVnYWN5LXRydW5rCisyOTQ3NCA1NDhlNmZmYmZmNzU3YWI4OTZhY2UwODkyNTA2OTc2MjhmMmFmY2I3IGxlZ2FjeS10cnVuaworMjk0NzUgM2YzYjdhNjA4NmI3M2IzYmViMGM4NzdiODM2ZTdiYjU5ZGE5YzJkOCBsZWdhY3ktdHJ1bmsKKzI5NDc2IDhhODhlOTc3YTcxYmJlNjNlYzBiN2M2NzJmYTcyZDNmMGY0MTJmMDUgcmVsZWFzZTIyLW1haW50CisyOTQ3NyA4M2QyMWVhOTQ1N2RiMmVjZmM2ZDE5MTQ2M2Q5ZjJiZGY5YWUyOWJlIGxlZ2FjeS10cnVuaworMjk0NzggYmRlMzY2MDU0MmNkM2UxOTBhYzk4ZjZiZDVlYWJkNzRiM2I5OGZlMSByZWxlYXNlMjItbWFpbnQKKzI5NDc5IDQxZWNhZWM1YjRmODFlZjgzZGI3ZWNjMzUyMDIwYTNkY2ViZWI2YmUgbGVnYWN5LXRydW5rCisyOTQ4MCA3MjA1N2VmOTAyYWFlZTA3MGQxMWZjZDMzZjM0NDFiZGY3NTY2MTJjIHJlbGVhc2UyMi1tYWludAorMjk0ODEgMjhjZmY2MGE2MDk3MDJkZTc5OTE3MTk2NDBlOTYwNTkxZDY3NmQwMSBsZWdhY3ktdHJ1bmsKKzI5NDgyIDQ5NDZkNGYzN2Q4NGUyYWE0ODg4ZGMwZTFhYWM1NWVmODg5OGE5ZjEgcmVsZWFzZTIyLW1haW50CisyOTQ4MyAzZDYyN2UzZDk1NjEzNjUyMWFhN2I3NDQzM2QzMzcxMzUyMzlhNTE0IGxlZ2FjeS10cnVuaworMjk0ODQgMzFiNTg0OWNhYzQyZmI1ODEzNDE1MmJmMmQxMDQxOTRkOTUyYzIyNCByZWxlYXNlMjItbWFpbnQKKzI5NDg1IGIyOGU5YmYwZjA0NmFlOWEzY2M5ZDEwOGEzNDMwOTZmNDE1Zjc2YjcgbGVnYWN5LXRydW5rCisyOTQ4NiAwMjllNzVmZmU3NTBkMzRjM2FkZTA1MjIxMmUyMzBjZGZkNjk2Y2ZjIGxlZ2FjeS10cnVuaworMjk0ODcgMzZlYTMxYmM5MDc2NTBlMTA0Zjg4NjdlZjM1MThkOTllMjkxMmY1MSBsZWdhY3ktdHJ1bmsKKzI5NDg4IDAzYjAyNzBlMTE2YjM3MmE1YzgxM2Q4ZjA0MWQ5ZTJmZmIzMDFkMWIgbGVnYWN5LXRydW5rCisyOTQ4OSBjNmNhMzliMTU4Y2RmOWIzNjAzZWY4MzE5NTg4YzZlMTAxZTc1MzI3IHJlbGVhc2UyMi1tYWludAorMjk0OTAgMzI2M2FkNGZjZjgxMWExNTdlYTk5MGVjZThiOTM4YzhkYTgyZTlmOCBsZWdhY3ktdHJ1bmsKKzI5NDkxIGQ0MjQ1NThkMjRmOTAzMmE5YWEwZDc1NTRiMzE0YTYyYTNkZmRjNTQgbGVnYWN5LXRydW5rCisyOTQ5MiA1YmU1Yzg0ZGVhMjNmZjcwMjQ4ZDY0MjlhMmEzODJlYjYyNTZjOGY1IGxlZ2FjeS10cnVuaworMjk0OTMgYmQ2NzdjOGU0MDY3MDI0OTQ2YWNkNmYwYjk2MDM5NDI2ZDZiNTdmYiBsZWdhY3ktdHJ1bmsKKzI5NDk0IDM2ZGU1YTczMTI1N2ViYWIxNGVjMTFmZGZjMjhlZjQ2NjRhZTkxYjEgbGVnYWN5LXRydW5rCisyOTQ5NSA5YmZkNDdhOWM4YjM1MDE5NGJmZDU5ODVjMjMyOGVjNDMyMTlhYzM3IGxlZ2FjeS10cnVuaworMjk0OTYgNmZhNWM5NTQwOGViZDg0NDE4ZjgwM2YxYTNmMGExNzA4N2I1YTU2MSBsZWdhY3ktdHJ1bmsKKzI5NDk3IDhlMzI0Njg0Mjc3MzRjOWFhMTZiNTQyMTA2NGJlYmIxNzlhNjgzY2YgbGVnYWN5LXRydW5rCisyOTQ5OCA3NTgzMDFlZTBiYjc2NWM4YWRlNzliZjY0MmExYmQ2ZTE2M2I3MWZiIGxlZ2FjeS10cnVuaworMjk0OTkgZjU0ZTg5MjcyYWRlZDI5NTNiMTlhMjY3MTYzMDljNGZiMmExODhhMSBsZWdhY3ktdHJ1bmsKKzI5NTAwIDliNDczODZiYTViODA1NGM3N2ZlNzc5OWU3ZWZlY2ZiZDg1NGY0MTYgbGVnYWN5LXRydW5rCisyOTUwMSAxMjQ0ZjRjMzgzNGY0OTAyMmZiZTgyYmI0YTE5NWM2ZDQ1YzZjYTI1IHJlbGVhc2UyMi1tYWludAorMjk1MDIgMThlMDk3MjA3MzhmNmZmNTMxZDc3NDY1NTRiOWYwNGFhZjAxNGNiOCBsZWdhY3ktdHJ1bmsKKzI5NTAzIDBiZGEyMGFmZTYyMzNmYjM3ZDI5OTE0M2Y0ZTQ2ZDY1ZjBhNDJhYWUgbGVnYWN5LXRydW5rCisyOTUwNCBkNjhmYzQ5YTcwOTYwMWJjMDA5YjMyYjk2YTVjZDRiODJiODg5MWMzIGxlZ2FjeS10cnVuaworMjk1MDUgNjRhOTZiOTdlMWU5N2NlYjdjZDVjNjNlYjczYmQwZmVmZDZmNjYxYiBsZWdhY3ktdHJ1bmsKKzI5NTA2IDJkZjk4ZmYyY2RkYTFhNjUyNzY0MTFjZTEzYjRkYmFkNGU2OTQxNDEgcmVsZWFzZTIyLW1haW50CisyOTUwNyBhMmYzNjkzNDYzOTMwN2ViZmUwNjhjOTQ3NjA3OWE2OTU1MDNjMDllIGxlZ2FjeS10cnVuaworMjk1MDggZjU0MzlmODEzM2Y4NTdiMzg5ZjY5YTRhZWE1YTExZGQzMTU4ZThiOCBsZWdhY3ktdHJ1bmsKKzI5NTA5IDIyNWVhMWY1MmRlOTVhOTE5NjA1NWViOThmZDFhNmE1ZTBmMDYzYzkgbGVnYWN5LXRydW5rCisyOTUxMCAxZGU3YWM3MjliZmE5MjNhMmUwMGQ2MjU4ODI2M2EzOGExM2JhODU2IHJlbGVhc2UyMi1tYWludAorMjk1MTEgMTgzZmMyMWZiODY2MjMyM2RjYjMyOTgwM2YzM2VlY2E2MmNlMDBlYSBsZWdhY3ktdHJ1bmsKKzI5NTEyIDZlZDJlMjNhYWU0NTY1MjM4MDZlMmZkNzEyZjQ2Nzk3ZWRmZDQ4NGIgbGVnYWN5LXRydW5rCisyOTUxMyA3NzFiNmY1MjFiOTU2MWQ4ZTQyZTkyNGQxYTE1NDMzZTRjNjkzOTIzIGxlZ2FjeS10cnVuaworMjk1MTQgNTIxZTg5YzRmZjQ0NzgyMDkxNzNhNDU4OTg4ZjMwMDYxYjEyYTYzYiBsZWdhY3ktdHJ1bmsKKzI5NTE1IDNhNzYwNmEyMjM3YmI2OTU3MjFjZDA2MzkxNWIzNWE1MDJkZDY5YTYgbGVnYWN5LXRydW5rCisyOTUxNiA1MjVjZGRiNzY4MmFjZWU3ZWQ4YjkzODY0YTU3OGQyMWU4NzIwMWFiIHJlbGVhc2UyMi1tYWludAorMjk1MTcgZTlhYTM5NGM3MTkxNzI3ZmJhYzVmNWU4NWQ4M2VkMjljOGY2Yzk3NiBsZWdhY3ktdHJ1bmsKKzI5NTE4IGNlMzY5Y2Q1NjI2YmU3MTQxYjNiODJhNmY4ZDJkOTZiMDg4YmNjYWMgbGVnYWN5LXRydW5rCisyOTUxOSA0YjgwNDRkMWYxYWMzMjgxOWE2YzBiNjAxMTljNzA2ZjU3ZDkxYjBmIGxlZ2FjeS10cnVuaworMjk1MjAgOWRhMDI2OTM3ZmE1MjgwOTUwYzU4NzliMGQ2OGY1ODA0M2M3OWE1NCBsZWdhY3ktdHJ1bmsKKzI5NTIxIDFjOTlhNWEwYjg3YmRlNjAyZGRhMGZiZWRjZmU0MzVhMTRlNDg1NGIgbGVnYWN5LXRydW5rCisyOTUyMiA2ZWUyZjliNGJmNWM0YjcyZmMxMDc3NDU1NjNiZTk4ZjFjOTJmMzYyIGxlZ2FjeS10cnVuaworMjk1MjMgMWRiYWJjNWJlZmY3ZjU1YTliYmM0MDJiNWJhODNlNzgzYTYwMzhiZiBsZWdhY3ktdHJ1bmsKKzI5NTI0IGE1NTk5NzQwYTZlODBmOTA4MjFhNmU4MTdkOTU5YmRhOGNlNmZjZTMgbGVnYWN5LXRydW5rCisyOTUyNSBiNGE2MjgzYjkxNWJjNjFkNWI2Njk5ZWMzZjQ5NWEyZThiZTkwN2U5IGxlZ2FjeS10cnVuaworMjk1MjYgNTgxOWM0NDM5YmEyNDY0ZTlhMzQ0ZTQ3ZDQ3OWYxZjYyNDEwMjM0ZiBsZWdhY3ktdHJ1bmsKKzI5NTI3IGM1NDcxNmFlZDI2YTA2ZGVhYTZhOWQ1MWUyNDg4YWUzOWYyMzFiNmQgbGVnYWN5LXRydW5rCisyOTUyOCAxYjRjNWU2NmE0YjRhZDE3Y2ExMDViYzQ4ZmM5ZWU2ZDA3MDQ5ZThiIGxlZ2FjeS10cnVuaworMjk1MjkgODEyMTM1OGUzMjE3MDNhNTc0ZTg5ZjA3ZDQ2MzU3MDFmYjYzOGFiMiBsZWdhY3ktdHJ1bmsKKzI5NTMwIDY5Njg2NGFhMDVkMzM0MzEwMjUwNzAyNTYwZmM5YWQ2MTYwNzAxNjEgbGVnYWN5LXRydW5rCisyOTUzMSA2YTQyNTM2ZmI5ZWViYjk5MDBlNGViYmFmMzlhOTE3NjU5MWFkODMxIGxlZ2FjeS10cnVuaworMjk1MzIgYmEyMTk0YWQzYjQyM2MzZWI4M2M4ZDQzODA4MGI0MjYwOTk5OTBkNSBsZWdhY3ktdHJ1bmsKKzI5NTMzIDFhMzBlZDE5ZjY0YWZmOTBjMGUxZTYxMDVhMmYzMTAzNTBlODlkMzIgbGVnYWN5LXRydW5rCisyOTUzNCAxM2IyZWM1MzZlMDcwNWU5ODEzYzNkY2E1NmM3NDM2YmI0ZGE0Mzg0IGxlZ2FjeS10cnVuaworMjk1MzUgOWRkOTM3OWFjNmQ2NzkzYjc3NjhiMWI5YTNjNWNkNGI4Mzg5YTBjYyByZWxlYXNlMjItbWFpbnQKKzI5NTM2IDNjMjNlNGMzZGEwMjA4NmY1YTZmY2I3MmUzNDc2YWYyODg3ZDY5YmQgbGVnYWN5LXRydW5rCisyOTUzNyA5NTFkYWNjMjE4NDdkNzA1MGYyMTg3OTQ4YWY4Y2VkNTFmMDAyNzE2IGxlZ2FjeS10cnVuaworMjk1MzggOWI1YjdkYTM2MmE1YzZmYTVkZWYzMjAxYmI1NTQ3MGM3N2Q2MmM0OCBsZWdhY3ktdHJ1bmsKKzI5NTM5IDBkYmQ2YjczYWJkMjMxZjEzODlmOTZlNjNkZGQ2Y2YxNDc5ZDU0ZTIgbGVnYWN5LXRydW5rCisyOTU0MCBmZTZlOTg5NGMyZDQyYTRiYWVjYmQwNmM4ZDk1YWI5MjliN2UwZjViIGxlZ2FjeS10cnVuaworMjk1NDEgOTUxNDA3OTMyMDAxOWQ2OWQwMTc3ZGQ4MTJlMzFhOGU4NzlhNDA3OCBsZWdhY3ktdHJ1bmsKKzI5NTQyIGQyN2U1Y2FkMzhkNzgyNGU0ZTg4MDlmMWVjMWRiZjExYTMzMjliY2UgbGVnYWN5LXRydW5rCisyOTU0MyBlZjU4OTNiYjc5ZWYzOWM5OWM3NTY0ODE3NDExZWRhNTkxOTYxOTUyIGxlZ2FjeS10cnVuaworMjk1NDQgODdiN2ZhZTEwYTE5MzA3NzdiOTNhMTcyZjFhNzBiMmRhMGU3MmVlZiBsZWdhY3ktdHJ1bmsKKzI5NTQ1IDg2OGZmMGRmYWJkMmNiYjA2NDk0MGEyMDliYzMwODBhZWFmNDVlOGEgbGVnYWN5LXRydW5rCisyOTU0NiBmMmVkNzIyZmYwMDM1MGMyNjA4MWE2YmNjOGU4NGQ5MWEzMWVkOWI3IGxlZ2FjeS10cnVuaworMjk1NDcgODhiYmMzMGIwODQ3OGQxMzI2NzMyYWY5NWM0NzFlN2JjZWVhMmEwMiByZWxlYXNlMjItbWFpbnQKKzI5NTQ4IGIwNjNjNDNmNGRmMDMyY2U4ODFkMTFjNTc4MTJkMDg2ZTZhMTYwZDggbGVnYWN5LXRydW5rCisyOTU0OSBkYWIyYzEyYjY4MmU3ODc1NTg3MWMzN2JhZTk0ZTk5YWIyY2Y1NzU3IHJlbGVhc2UyMi1tYWludAorMjk1NTAgN2ZhOTNiNWRkZmJkNDkyNTdlNDMyMjRhODA5Mzg4MTU1OTY4MGYwNSBsZWdhY3ktdHJ1bmsKKzI5NTUxIGQyYmU3OTZjNGI4MWQ3YjlhNzM3MmJhNjFhNGExY2JlYjA1ZDY5MGYgbGVnYWN5LXRydW5rCisyOTU1MiAxYWZjYTM3NWYyYTllMzZmMjg5OTE1YjA2MjM1MjI4YWQ1NDA5NmFmIGxlZ2FjeS10cnVuaworMjk1NTMgZjNkNDQ5MjZhMWJlZmRlZmQ3ZTBmYTg4NGI0ZGYxN2FjZDIwNTFhNCBsZWdhY3ktdHJ1bmsKKzI5NTU0IDk4MzIyYzA3NWY0ZDk1Mzg4NjI1YzdiMGJjZTFkNTE3N2Q2NDM3ZTAgbGVnYWN5LXRydW5rCisyOTU1NSA1M2EzODIzNDQ4ZDkzYWYyM2Y3ZTljNDI5NGFhMmQ4NWUxZGY4NjM5IGxlZ2FjeS10cnVuaworMjk1NTYgY2FiMTY3NjEzZTQzYjczN2JmOTU0YzgyZDQzZGNmNWEyOTk4YzU3ZiBsZWdhY3ktdHJ1bmsKKzI5NTU3IDEzYWY4MGYwMjA4MDA4ZjEyYTAwMGZhOWE0NjkzZjU3MGJjYWNmY2QgbGVnYWN5LXRydW5rCisyOTU1OCA5OTlhY2NmYTkxYzU2ZGE3YWE4ZWIyMzI2Mzg0YzY4MzMyN2YyZWNlIGxlZ2FjeS10cnVuaworMjk1NTkgZjNhNjQwMzViYThiZjE5NjMyOTUzNGUyNzgwYmRmYzk5YjE3ZDNhYSBsZWdhY3ktdHJ1bmsKKzI5NTYwIDJjMWJiZmMxMjJjMWE2NmZlZDI2NjQwZDJlY2UxMjA3ZDIxM2E4YjIgbGVnYWN5LXRydW5rCisyOTU2MSA0YTI4OGI0OTRjYjJjOWE4MGFkM2UzZDQxOTI3MzRhMGNmMWU1OWRhIGxlZ2FjeS10cnVuaworMjk1NjIgZDY5ZThhOWZlZDExZmNmMzU5ODI0NTA5ZGMxYzJmZjlmM2UxYTg2ZSBsZWdhY3ktdHJ1bmsKKzI5NTYzIDM0ZTcwYjg5YmJiNzIzMjQzYTY5MjBkMGUyZWJmMzkxYjc2YWM0MTAgbGVnYWN5LXRydW5rCisyOTU2NCBiNTY0ZWM0YjdlNWIzMzE5ZTQyYzM3MjY5MGY2NzMwNDU5Yzk4ZDk5IHJlbGVhc2UyMi1tYWludAorMjk1NjUgZjM1MzczMTdiMWIyNWE2ZjFlMDQ0YmY1NTA4MjZjMzE0Nzg5MzFiZCByZWxlYXNlMjItbWFpbnQKKzI5NTY2IDM1MTU4ZmQ2MGIzYmEyMmI3MmQ4YWYzOWM5MTc3OTRjZGY4NzViOGMgcmVsZWFzZTIyLW1haW50CisyOTU2NyA2MmY4OGMwMmM5ODcyOGYzMDZlYjZiZDFlMjdhYzdiODA1OWJlMzVlIGxlZ2FjeS10cnVuaworMjk1NjggZDk0NzRjMDQ0NWJhYmY1NTZhZTQxNzI4YjI1NjVkMDQyZDkyOTcxYyBsZWdhY3ktdHJ1bmsKKzI5NTY5IDUyNjUyZmI4NjQ5ZDczMWFkOWQ3MDlhYTNhZjg2NzY2Mjg2N2ViMDAgbGVnYWN5LXRydW5rCisyOTU3MCBmZjFjNjA0NmYxMGI5NDdmNjFhNmY4YTg3MDY0NjcwMGQzZTNlNzAzIGxlZ2FjeS10cnVuaworMjk1NzEgZjYyZjc3M2JjOWZkZDJhMmQ5YTBmNmEzM2FjOGIwNGEyYjM0MWEyNCBsZWdhY3ktdHJ1bmsKKzI5NTcyIGY0Njc0MjdlMDNmYTlkNWNiYzFkMzIzMmJjYTc4NzVmNTM0NWExNWMgbGVnYWN5LXRydW5rCisyOTU3MyBjYmJmN2YyNDI1ZDllMTA4YTI2NDkzMWE5YWYwNGUyMzVkZmYxZDVhIGxlZ2FjeS10cnVuaworMjk1NzQgZTUyNjM2NWRkY2NkZmQwZWRkMDA5OTliMGM5NGU1NmNkMDRlMDdlYyBsZWdhY3ktdHJ1bmsKKzI5NTc1IDkzM2M2ZDYwOGQwMWIzY2Q0MzA5N2EzMjI2MWZjOTE5YjNjZWQxYjggbGVnYWN5LXRydW5rCisyOTU3NiAxMzVmMDhiNzNiZDVkOGIxZTcxMGExY2Y5NWIwYmYzOTU2NmYxY2ExIGxlZ2FjeS10cnVuaworMjk1NzcgNzU2MzE5YTEzN2I4MzI2ZGYwYTBjODJlNWRmNTUxMjU1NmI2YWY2NyBsZWdhY3ktdHJ1bmsKKzI5NTc4IDA4MjBhZDQ5ODI5ZDgwYjk4NzU4MzRiYzMyN2JiYWQzOGJhMjZmMWUgbGVnYWN5LXRydW5rCisyOTU3OSAxZjM2NWI5OGYxMWNjNTQ1YWIxYzZlOTcxYmVhZjQ3NjRkNWVjNzE5IGxlZ2FjeS10cnVuaworMjk1ODAgMDgxMTkwNDg0YWY2MTYxNmFhMWM3ZWM5NTQwNmFhYjIwNzVjZmQ4YiBsZWdhY3ktdHJ1bmsKKzI5NTgxIDAwODQ4MzQyZDQ5ODRhZTQ3NWMzZDA5OGM4MzdiYTllYjQ2ZWZhYTAgcmVsZWFzZTIyLW1haW50CisyOTU4MiA1M2U5MDQxZWZiZTNmZDZhNDkxOThmNjZjYjBmNDdmNGQ4MzIwM2Y1IGxlZ2FjeS10cnVuaworMjk1ODMgNTQwODgxZWUyZDRhY2M0YzU4ODY3MzkwYTk2N2E3N2I1YTUyOWMyOCByZWxlYXNlMjItbWFpbnQKKzI5NTg0IGVmM2Y2OTI5ZmMwZTE5NTk1NGJkNWE3ZDU2NDFjY2Y4MmI4YjQ3ZGQgbGVnYWN5LXRydW5rCisyOTU4NSAyODMyNjI4ZWU4Y2M4NDA4YTM2NmFhZDliODRkYTFkYjcwMmU0MGY0IHJlbGVhc2UyMi1tYWludAorMjk1ODYgZTYxYjk0NjQ3NGRmYzY5MjgyY2Q5MTdlYjZhMGZjM2MyODk4NjI5MiBsZWdhY3ktdHJ1bmsKKzI5NTg3IDk2NGQ2Yjc5YzIyZTJlOWMzZGZhYTUzODMxMWI3MGQ3ZmNiNGJhYjYgbGVnYWN5LXRydW5rCisyOTU4OCAyNjczNzMyYWQ1ZjE5MWI2NjlhZDk0NjM0ODc2ZGEzZGUwNjU1ODg0IGxlZ2FjeS10cnVuaworMjk1ODkgYWRhYTQ1MGU3ZDcwZGMwMjFhMjE3NGFlOWQ0MjY4YWNlZTk0NzRlNyBsZWdhY3ktdHJ1bmsKKzI5NTkwIDlmZmVhNTBlODMzMDE3NzlhOGQwYjA0ZWIyM2E5NDBiNjNjMjVhZjQgbGVnYWN5LXRydW5rCisyOTU5MSAyZjJhMmZkODQ0YmQ3NGJhOGY2NDBiNDQ5YjY3MWVhZmRjYzRiZjI1IGxlZ2FjeS10cnVuaworMjk1OTIgOTA0ODIwNzk5MmYwMGJiNTNjYTJkZTE1NTdkYmFkNDBiNzFiNTg4OSBsZWdhY3ktdHJ1bmsKKzI5NTkzIDg5NjVhMmI4MDRiNTA0OTViY2Y3MTM3OWQyY2ZhMWNkMTFjYTc3ZWEgbGVnYWN5LXRydW5rCisyOTU5NCBlOWFlYmQ0Y2Y1NmNmNGY4MjY4YjJhZjBmM2RlNTJkMWVmNGM2MDJhIGxlZ2FjeS10cnVuaworMjk1OTUgOWM0YmJiM2JiZDBkZTcyMzZlZTU1MjQzODdhZTliOTMxYWM1M2JmNSBsZWdhY3ktdHJ1bmsKKzI5NTk2IDAwNDIxNmQ3YTFkYWJjMDA5ZjJmMDlmMThkNGU5ZWZiYzg3NDBkOGQgbGVnYWN5LXRydW5rCisyOTU5NyAxZWJiNWRjN2Y2OTZlZjc1Mjc3NjYwNzc4OTU1ZTQ5ZGRkZGNjYmM3IGxlZ2FjeS10cnVuaworMjk1OTggNjQxNjc3NjA5OThjNDMxNDM5YmRlYjg2MWJlMTI5MmE4NzUxZDkwZiBsZWdhY3ktdHJ1bmsKKzI5NTk5IDNhZDRmYWU5ZWQzYWQwYzZjODQ0NTUwNmNlN2UxZGM0ODZmZGExMjUgbGVnYWN5LXRydW5rCisyOTYwMCBjZmIzMTdlNGE3NzAxZDJiZmQ0ZDJlNDc0Yjc1MTlmZWZjZWQ2NzA4IGxlZ2FjeS10cnVuaworMjk2MDEgYTZkMTZlODRmZWMwNTRlOTQyMWQxZDVkMDZjZDdlYjYxNzg1ZjIyNyBsZWdhY3ktdHJ1bmsKKzI5NjAyIDA5OWQzNmNiYmI2MTFhYjVmYjMyNGJiMmY0MjU2M2EwNDEzMDRjOGEgbGVnYWN5LXRydW5rCisyOTYwMyA5OGYzZmQxZWQ0MmYwNTc2NjU1MjJkOTQxZjBlNjg3NzE0YTgzMzZmIGxlZ2FjeS10cnVuaworMjk2MDQgZTIyMjZkNDdlYmYwMTI5N2M5OGExYTkwN2I0YWM1OTEwYmQ0NGRiNiBsZWdhY3ktdHJ1bmsKKzI5NjA1IDIzZWY3YzE2M2ExMjUwMjlmNTEwOWM5ODU1NzE1YjM5OGM3ZTU1ZWEgbGVnYWN5LXRydW5rCisyOTYwNiA0MjAzMDQ3ZTIwMjIzN2U0YzkxYThkZTQyNWIwNTAwY2E3NWY5ZmRhIGxlZ2FjeS10cnVuaworMjk2MDcgYTU2YzkwY2ZjMDBjMGRiYTc1MDcxMDkxNzhlODM5YmE3MWEyZTA0YiBsZWdhY3ktdHJ1bmsKKzI5NjA4IDQyY2YxYjVlNjM5MjZmNmRkYTM2OWVkOTg2YWUxNGQxNDMxODMwYjkgbGVnYWN5LXRydW5rCisyOTYwOSBlOThhMjEzMTAxYjM4YTliOGQ1M2I4YzFjMjEyYTUyODAxNDcxM2NhIGxlZ2FjeS10cnVuaworMjk2MTAgNGI5MDVlMTk4M2I2MTBiMjVhMzUzNWI5NTkyMDcyYTY5ODdlYjdhNCBsZWdhY3ktdHJ1bmsKKzI5NjExIDA3NjUxMmEwYzZjMjJjOTJiNzI4MzIxNGNkODliNDAwYjJmYTZiNjkgbGVnYWN5LXRydW5rCisyOTYxMiBmNDI3OGFmOGVlZmEwMmJhZmE3OTY4NmZkOWVjNGJiMjM4Y2I0OWI0IGxlZ2FjeS10cnVuaworMjk2MTMgNmU0MWNmZDI1YmRmMGZlMjg2YTFkNmQ3MzNkYzU3MGY5OWRhOWFkZiByZWxlYXNlMjItbWFpbnQKKzI5NjE0IGEyYWU2MzVlNDNiNjE4NzExMjU4NTcyMWQ5NzY5Y2QxMzU2ZmZlMGIgbGVnYWN5LXRydW5rCisyOTYxNSA0YWI2YjdjM2YzMTE3ZDI3NjMwMjYyN2U2YjllYjBkMDA0N2UzMmRkIGxlZ2FjeS10cnVuaworMjk2MTYgMTQ0ZDlkNDhiOTZjZmVhODM3YTAwYzllM2U0ZTFjMmMzNjgxZTM5MyBsZWdhY3ktdHJ1bmsKKzI5NjE3IDAwYjRjZmY5MzYxOGU4MDAyZDliMzdhYmU5YmRmOTE5YmI1YTg2Y2MgbGVnYWN5LXRydW5rCisyOTYxOCA2Y2U5MjI4YTNkYTIwMGEyY2QxMTM1YmUxOTM3YzExNzllMDdiZjRlIGxlZ2FjeS10cnVuaworMjk2MTkgYzJlYzc4OWRlZTU2NzZiZWQwMmM2YTZmZTcyNTk5MGJkYWE0OTlmZSBsZWdhY3ktdHJ1bmsKKzI5NjIwIGJkZGU5NGUwMjkxODBiNTRlMzUzMDAxYzkwN2Y0NjcwNmY5YTUxYTAgbGVnYWN5LXRydW5rCisyOTYyMSBhNDhhY2I1YjQwZWZjNDU1Njg1ZDU3YjE0ZmI5ZTVjNGFiOTg3ZjdiIGxlZ2FjeS10cnVuaworMjk2MjIgOTEzOTI3ZDMyNjFlZGIyMTNkZDYyNjc1ODVjMzU1ODlkOWMxZDNjYyBsZWdhY3ktdHJ1bmsKKzI5NjIzIDliYjRhZGZiZmNjODMxMzk3NDg1MjhkYWUxMzZkNzkwMTM3ZTUxNjkgbGVnYWN5LXRydW5rCisyOTYyNCA2NWQ2ZjBiZmE0NjE1MDQwZDRhYjhiMTFjYWMxMmMzNDBjOTlmN2IxIGxlZ2FjeS10cnVuaworMjk2MjUgMGI2MTFlNTBjNWZjM2M0ZGNkZTdlMDc0MGJkZWFjYjhlNmRmNzlhZCBsZWdhY3ktdHJ1bmsKKzI5NjI2IDU4MDgzZDhlYTlhNWFkM2U2MDFiM2EwMGMzNmNiODM1ZjM0ZWYzNDcgbGVnYWN5LXRydW5rCisyOTYyNyAzZTFlOTYxNmY4Yzg2NWEwMjQyOGM1YmMyMDNmZjYwMTIzM2ViMTRjIGxlZ2FjeS10cnVuaworMjk2MjggOTc0OTczMmEwZjZiOWZmZTgwZjlmZDIzMDNmMjczNWNjNmZhOWQ5NCBsZWdhY3ktdHJ1bmsKKzI5NjI5IGVjMzQxNGM1ODg3MjYyOTg0NjE1OTM1NDkzOGQxMWQ0ODg1Y2IzYzQgbGVnYWN5LXRydW5rCisyOTYzMCA2MDc4YWJjNjkwMzZmYzc2ZmJlMGU5YzQ4MzVjNGQ5YjU2Njk0NjdjIGxlZ2FjeS10cnVuaworMjk2MzEgYmI3MTg3ODJlNzM2OWM1YzI1YjdmZmQ1ZTI0MjgwNmM3OTM3ZmM5MyBsZWdhY3ktdHJ1bmsKKzI5NjMyIDhjZWI0NTVmNTU0MTEyY2M3ZjVlMDI1ODk5OGNkYTA4MjI1MTE4YTUgbGVnYWN5LXRydW5rCisyOTYzMyBmNDkyOTI2MjFiMTczYWFmN2Q5OGFhYzEwYWIwMDdjMGJmOGJiZDQ3IGxlZ2FjeS10cnVuaworMjk2MzQgMjRhNTUyMmQwNzg0YjM1OWQyMDlkNDg5YmU3MWE2YjAzMjA5OTk0ZiBsZWdhY3ktdHJ1bmsKKzI5NjM1IGYwZWUzN2U4OTMyZmFjOGQwNTNlNzA2MzE5YWQ1ZjE5NzE2NmU5OGUgcmVsZWFzZTIyLW1haW50CisyOTYzNiAyN2Y2NDMxNGYwZGU3ZWZhYjZiNmU5Yjc1ZGJmOTA4OGJmODE1ZTRlIGxlZ2FjeS10cnVuaworMjk2MzcgZTYyNzc0YjQ0N2MxMDdhODg4YzQ0ZGYzNjMwMzAyZDU0YTc4ZWU1NiByZWxlYXNlMjItbWFpbnQKKzI5NjM4IGRkMTBkOTdkMzI5YTYwZTcwZTEyYTQyNjdmOTE2YmU1ZjY4MDRiNTYgbGVnYWN5LXRydW5rCisyOTYzOSAzYzA4M2Y4ODE2NTVkMzRmNmNjMzAwODVjNjc4MTc0MWYzMTA4MzRlIGxlZ2FjeS10cnVuaworMjk2NDAgYWY1YjQxNzZmNGVmNjg2ZGExZWVjZDg0ZmM3YzcyMDBhYjU5NmUzMiByZWxlYXNlMjItbWFpbnQKKzI5NjQxIDYzYTA4NjM5ZGFlMmEzZWMwZTIzZjcwMzcxNDM4ZTU0OWY5OTFkYTEgbGVnYWN5LXRydW5rCisyOTY0MiAyOWY3ZDFkNWU2ZDYyNDlmZmVhNjI0Zjg2MTQwOWM4NmFjZDQzOGUwIGxlZ2FjeS10cnVuaworMjk2NDMgZTNkMjY5MWZiNmI4YzJmYTBjYzdkYzQ1NTU1MjhiYmE5MTM4MjI1NiByZWxlYXNlMjItbWFpbnQKKzI5NjQ0IDIzZGY0NjU2ZThhMmFhNDc3YzA3YWRmNGIzYzU5Nzc3ZGU1MmQ4YmEgbGVnYWN5LXRydW5rCisyOTY0NSAxYWI2NTdlMDA3NjI3NTg0YzlmOGE3ZGQ1OGJkOGJiMTljN2JiNGNiIHJlbGVhc2UyMi1tYWludAorMjk2NDYgOTVjOWM1NjZiZGQ2ZDhjZWNjZWFhNzk1MGNiYmMzNjMxYmE5MzZkNyBsZWdhY3ktdHJ1bmsKKzI5NjQ3IDRiNmQ4ZjUxNjY5ODE3ZjEzNzA4ZTZjYTMzYTJhYzVmZmQwODQ5OTkgbGVnYWN5LXRydW5rCisyOTY0OCAyNTFlNTUyYzgzNTIxMGU2N2JhMDNkYThiYzc2ZjZiMTRkZjVlMjQ2IGxlZ2FjeS10cnVuaworMjk2NDkgNWI2MmI5ZWE0NjBiMjM5ZTMyZmI2MmMzNmIzYjgwYzNhZTdkOTg1YSBsZWdhY3ktdHJ1bmsKKzI5NjUwIGU3MTc3MGE3ZjU0OWZhOGQzZmJjNjQyM2E0ZGE3ZmE0MTc5ZmMzZjMgbGVnYWN5LXRydW5rCisyOTY1MSAwNGQzZjk1Y2ZkODlmMGMwYjQ4MGZkYjA4NTM2MDMwZmQzM2Q3OGM0IGxlZ2FjeS10cnVuaworMjk2NTIgMDgyOTMwZGZiZWJkZGJlOTZmZDI3YWYxMjI0NjczNjlmNmYxMTZkOCBsZWdhY3ktdHJ1bmsKKzI5NjUzIDFjMDU1MTcxYjg3MTFmYmI5OTg2NGMzZDljN2NmNGQ4ZDdlYWQ1NGEgbGVnYWN5LXRydW5rCisyOTY1NCBmOTZmYTNhNmRkYTQxOGMyNDRjMWVkOGZkNWNhOGFiYTU3NjA3MTdiIHJlbGVhc2UyMi1tYWludAorMjk2NTUgODNhZTRhOTAyZGYwOGY3Mzk5MzIyMjZiYjZmODc4ZDllYTIyYTlkNCBsZWdhY3ktdHJ1bmsKKzI5NjU2IGRiZTI1Njg3YmU2ZTVjMzY5MTczZDc5NDA4NjRmYmRmODdjMzRmMWEgbGVnYWN5LXRydW5rCisyOTY1NyAwYjIzY2RhMDA0MTcwZDlhNjJjMjBhNDkwYjg1MzBkNGQwMTdmNjFkIHJlbGVhc2UyMi1tYWludAorMjk2NTggNDZkMGI0NmE3NTRmZTFiNTdhZmI5YmFkOWI5N2UxNDlkNjAzNmMzMiByZWxlYXNlMjItbWFpbnQKKzI5NjU5IDFhZjQxMGUzM2JlY2Y1ODFkNzRiN2Y0Mjk5YTQ1NDFiOTFkMDY5ZmMgbGVnYWN5LXRydW5rCisyOTY2MCBmNzJiMWY4Njg0YTJiOTgyNmQ0NDA4Y2QzMDI3YTY2NTIyMDhhNzhhIGxlZ2FjeS10cnVuaworMjk2NjEgM2U1OWQ2NzRiOGMzNjQzM2VjZTBjNWEwOWZjODZkNzZiY2JmOGM0NCBsZWdhY3ktdHJ1bmsKKzI5NjYyIDRjMjUzMmMxY2IyZGUyNGQzZDUwMTMzM2Q0ZTRlMGE5ZDhmZDY3YjMgbGVnYWN5LXRydW5rCisyOTY2MyBhZjM5NjQ2NzllMmZiZDliZjk2OTZhZmNhMGQ0MWI4MzZmYTZiMTIyIGxlZ2FjeS10cnVuaworMjk2NjQgYWUxNjlmNWI5NGUwNDgxMzY0ODk0ODU4ODliMzM4NzNkN2E5MzFjNCBsZWdhY3ktdHJ1bmsKKzI5NjY1IDBlMGIzZGNmNzg3ODk4OTQzMWQ5ODg3NTY2NzIwM2NmZWExOGU2ZTAgbGVnYWN5LXRydW5rCisyOTY2NiAzOGQxZjgzZDU3NzEwOGE2ZTMwOWUwNjAwYjgwMTk4YTcxODc3MTQ0IHJlbGVhc2UyMi1tYWludAorMjk2NjcgZDZkYzQ2YjlhZjNjMGUyNjhlYTQ3MGUyN2M3MjYwY2RjODUwMTU1MCBsZWdhY3ktdHJ1bmsKKzI5NjY4IDM5MGJmNWQyZDhlN2RmNjYwMDE5MTlkYTJjYmYwNTBjZTExMzhjZGYgbGVnYWN5LXRydW5rCisyOTY2OSA5YzdhYTQzYjIxYTlhOWIwZWZlY2UwYzgzY2ZmMzc2OTMxYTVlOTAyIHJlbGVhc2UyMi1tYWludAorMjk2NzAgZDU2MzNlOTNmNzA3ZjM0MmI1NDIwMDNkYzllZGYzMTBjOWM0ZmQ1ZSBsZWdhY3ktdHJ1bmsKKzI5NjcxIDkzNzM1Nzg4MjJiNTkwZTA3YTAxMGQ2NWNlNzY0Y2MyZTNlNGRjNTkgcmVsZWFzZTIyLW1haW50CisyOTY3MiBhNDJmNjNhODBjYzg3MzZhN2E2NTBmYzRhMTZlMWNhY2Y0NWY5NTY3IGxlZ2FjeS10cnVuaworMjk2NzMgNzg1YWQwNzQwMjdiZjBlMzNmY2JhNTQ1OTZhMDk2MTBjYTUzMzU5MyBsZWdhY3ktdHJ1bmsKKzI5Njc0IGNiNzFlN2M2MjBlMmY1MGE5N2FlZjI0YzAzZWQ3MmUwM2RmNzU0NDkgbGVnYWN5LXRydW5rCisyOTY3NSAxZGY5OGY2OGQ2MDc1MzBlYWFjODk4YWE1NDdhZTE2NzZlMDg5YmE4IGxlZ2FjeS10cnVuaworMjk2NzYgZDM3ZjEzNzhkOGI4YmY5YWQzNjlhYmQwNjMyYmJiMmUyNDc3Mjg5YyBsZWdhY3ktdHJ1bmsKKzI5Njc3IGUwMjMzYzQ0MjUwMjZlYThiMDljY2EzZDg4OWJlMzQ5ZDNlMTc3YzggbGVnYWN5LXRydW5rCisyOTY3OCA3ZTU4YTE1MDQ4NzI2ZjJiYjA0ZWU5YzlhN2Y1Yjk1NjMwZjFmOTYyIGxlZ2FjeS10cnVuaworMjk2NzkgMWNkODEwNmJjZDIwNzFjOWRmNTZhMTE5NGE1MjRiZDliYzhlYzU0MiBsZWdhY3ktdHJ1bmsKKzI5NjgwIGJhZjg3ZDI2YmEwM2Q1MzdiZWI5M2Y2MDg1ZDlhNWQwM2M1MjQ0MmYgbGVnYWN5LXRydW5rCisyOTY4MSAzZjU3NzNhODg4OGVmZDY2NWJhNzYzNmFhNmZjYzQxOGJmNjFkMzBlIGxlZ2FjeS10cnVuaworMjk2ODIgZDMzMDA1ZjgzODhlNzRlMTk1N2RiYWZlYjM3Y2JlZWJmMTBhNDkxOSBsZWdhY3ktdHJ1bmsKKzI5NjgzIGZmOTJjYzI3ZmQxZmYzMGQ1NDE1YjhkMGUxMTkwYmE3MTZlMTM0YWQgbGVnYWN5LXRydW5rCisyOTY4NCBmZmVjNjc0MDkxNDA1OWJkZWE5MTIyYzMzYmRjNzExMGYxOWZkYjc4IGxlZ2FjeS10cnVuaworMjk2ODUgNThmYmE1OTU3MjZlYWRhZmVmNjFkY2QwMjNhNzVlNmVhZGZmNzQxYiBsZWdhY3ktdHJ1bmsKKzI5Njg2IDM4MzU4NzAyN2M3NGQxYzFiODM3M2RmMDc4ODEyMDUyZDdjOTRkYTggcmVsZWFzZTIyLW1haW50CisyOTY4NyBmNDY1ZDY2OTJiZGUzMzUwMzMxNGMwNTM0ZmQwOTFjNDg3OTU4ZmJiIGxlZ2FjeS10cnVuaworMjk2ODggN2Y4NzA0NjdjMTgyYTc1ZTBkNDQ4NTRmNGE3OGQ1MmFhZGI3ZjI2MCBsZWdhY3ktdHJ1bmsKKzI5Njg5IGI4MzAzNDEzYTU3ZTVhMTVkYzE3YzQ5Yzc0NjhlNjQ2YWU2YTUyMDggbGVnYWN5LXRydW5rCisyOTY5MCBhNWQxZTA4MTQwNjFjNTJhYjJiYzM3ZjYxZDQxZTUxZWUwNjI4MDk2IGxlZ2FjeS10cnVuaworMjk2OTEgZTg5MDU2NzE4MjM1ZGNhODdhMTI2ZTUyMmRiNTM3ZTk2ZmQ3ZjVkMCByZWxlYXNlMjItbWFpbnQKKzI5NjkyIDdjZmI1MmY5ODEzOTZmZWVlODllNzFiM2YyMDc2YjY5OWY4N2Q1OGIgbGVnYWN5LXRydW5rCisyOTY5MyAxMjdlNGJmYWNiYjc1MDQ5YzMxNGU1YjEwN2Q5MjgyY2E3NjMwNTQ4IGxlZ2FjeS10cnVuaworMjk2OTQgNzZmMzJmYmUwM2NjNTRlNTU0ZjIwNDlmYWEwMWVlYjQzMDExMmY0NCBsZWdhY3ktdHJ1bmsKKzI5Njk1IDU3ZmNhY2JkYzg4NWE1NTdjMjIzM2UyMWJhMjRlNWRjM2UxZGYwNTMgbGVnYWN5LXRydW5rCisyOTY5NiAyMGZhNjMyOWI1OGZmODA0MDYyYWE4OWY5NTMyZjliN2I0YzU4ZTEwIGxlZ2FjeS10cnVuaworMjk2OTcgZWIwYzBjODNiOTJhMDlmZjZhZGM0ODQ2ZWQ2ZDM1ZGM5ZTkyMDEyYyBsZWdhY3ktdHJ1bmsKKzI5Njk4IGZmYmVhZDM0ODRlMTAzM2IyYzMwYzM4NjBjZGFhZDZiYjQ0MmZmZGYgbGVnYWN5LXRydW5rCisyOTY5OSBjOTUxOTA1MzJjMGNiNmQ5ZTFlMDQ0ODcwNjMyMTE4YWM0NjFmYTEzIGxlZ2FjeS10cnVuaworMjk3MDAgNTJmNjEzM2UyMGQyMGViNjAzYmJlYjM4Njg0MjNmOTFkMmIxY2MwYSBsZWdhY3ktdHJ1bmsKKzI5NzAxIGFkYjkzZjRlOTc4MDUxZTQ2ZmFhMDBhN2Q4ZGRlMmE5ODI2NDgwMzQgbGVnYWN5LXRydW5rCisyOTcwMiAxOTAzODlmZDgxNTljN2M0NmRkZjk5OGFlMjk3NDFiMmIzYTNkYWE3IHJlbGVhc2UyMi1tYWludAorMjk3MDMgZWNkZmY0NjIwMmMwZmYzNWNiZWYwNTlmYjE0NjhkZWUxNmExNjM0YyBsZWdhY3ktdHJ1bmsKKzI5NzA0IDUyOTcxOWE1MzUwZTc1ZWUzMWYxZDQzOTQzNTRkZDUyOGZhYjhmODEgbGVnYWN5LXRydW5rCisyOTcwNSBjYjI0ODcwNGI3ODRlM2M3Mjc0NTkxOTlkNjdkNjE5YzU0YzJhMmI4IGxlZ2FjeS10cnVuaworMjk3MDYgNzk0MjBmYTIyMmI4NTA1OTVhYzU3ZDQ4OGQzYzJhNjI3OGI5OWYzNiBsZWdhY3ktdHJ1bmsKKzI5NzA3IGUyNmZmNzVkY2Y2OTExYzAxYjIzMWQyYmVhMTY1ZTNkYTM3ZDBhOWYgbGVnYWN5LXRydW5rCisyOTcwOCBjNDJiNjM3Yjk1MTQ2ZDczODZkNDg1YTAxYjE5MzQ0ZjE5OTdmOWNlIGxlZ2FjeS10cnVuaworMjk3MDkgYzg1NDgwNjkyY2FlOWNkOTAwYTUwYTYxZGZjYjRlOWVkMDllYjJlNyBsZWdhY3ktdHJ1bmsKKzI5NzEwIDg3ZTY5YmFkYTE5NWVlZjVmNmNhNWVmOGJjNzZkNWIyNWEyNDcyZjIgbGVnYWN5LXRydW5rCisyOTcxMSA5M2YzMGMzODg5YWE0YjdhODJiMzQxMWYxN2YyYzNhMzUwMWIwNmZiIGxlZ2FjeS10cnVuaworMjk3MTIgM2VlOTUxOWVhYTRjNDc2NzhmNjBlNTkwZTU1MzdlMTZlZGIxYTVkNSBsZWdhY3ktdHJ1bmsKKzI5NzEzIGU5Zjg5ZGJhNTA5M2IwYTM4M2Q5YjcyMWQwMThiMTgwZWViYjQ5YWIgbGVnYWN5LXRydW5rCisyOTcxNCA0NDliMmI1Y2FmNTgyZmRkYzg5MTFlZTdkMzJkNjBjYzdkMjc4NTBmIGxlZ2FjeS10cnVuaworMjk3MTUgZWRkMmViODhmZDZjYTBlY2I0ZDY0N2JjOTc5ZGJjNDk3ZmQ5OTRmNCBsZWdhY3ktdHJ1bmsKKzI5NzE2IGEwZWZhNGM5NTY5ZTMxOTZkZGJiZTRlMGQ1MjZkZjM1M2IxYTI1OWIgcmVsZWFzZTIyLW1haW50CisyOTcxNyBlNDI5OTdhY2M3ZjFlNzU0Njg2NmY3ZTdkY2RkZGJlNmE0ZGY2ZWE3IGxlZ2FjeS10cnVuaworMjk3MTggYTRlMzAyMWVhYTdkNDBiOWVkYjYxNDMxNTc4ODBhZjBlNzkzNjk1NSBsZWdhY3ktdHJ1bmsKKzI5NzE5IGIxMzg4ZjU4YmRiNWQxMGUxNjAzMzJiMGM1OWQxZDhiYmEwNjZhYjYgbGVnYWN5LXRydW5rCisyOTcyMCA0YzA2YmRkN2QwNWMyZjMyYjdmNDEyZmUzOTE0Mzk5ZDQ2YmU4ZGZkIGxlZ2FjeS10cnVuaworMjk3MjEgOGVkNjZlZGZmMzg3YzZkNDgyNDQ3NDcxYjhmNGI1OWMxMGI0ZTFjOSBsZWdhY3ktdHJ1bmsKKzI5NzIyIGZmNzYzOWRkY2FmMjFjYjZjNmZmYzM0MTY2NWEyZDU5YWUwMDM2ZDcgbGVnYWN5LXRydW5rCisyOTcyMyA2MWEwZWY1NDJiNmY1ZTFiNTg1YjBhNDk4ODcwZWE3YjA5NjFiMDY4IGxlZ2FjeS10cnVuaworMjk3MjQgZDYyYzFiYTMzOTY0MDY4NjRkYTVkMDYyZGUzMzVlN2QwYTE2YmZjYSBsZWdhY3ktdHJ1bmsKKzI5NzI1IDNiZTFiZGM3NzllMDZmMDQ5NjBhZDkxZGIyZTFmMjhjNGZjNmRjZGYgbGVnYWN5LXRydW5rCisyOTcyNiAwZTg5OTBlODkyYjZkNmEyYzhjYzM0Y2QxNTVmYmU3YjQzNjAxYzM5IGxlZ2FjeS10cnVuaworMjk3MjcgMDJkNDhlZDQ0N2E4M2IzNGNhZTg4YjM3ZjcyMThjMzNhMjhjNWEwOCBsZWdhY3ktdHJ1bmsKKzI5NzI4IDE0OTE2NWNkZmY3Y2RjNDkzNzE5NTEzYTE0NjM0ZmNlMGNlMDk0M2IgbGVnYWN5LXRydW5rCisyOTcyOSBjZGQyODlhMDY2MTRhM2MzNDk3MjRmYjk5ZjM0MjA1ZThkNGIwMGQxIGxlZ2FjeS10cnVuaworMjk3MzAgNjc5YjJiODI1NGFlNjY2ZDc4ZjZmNTM4MzNkZGNhZjViYjg4YmM4OSBsZWdhY3ktdHJ1bmsKKzI5NzMxIDRiZTM0YmQ3M2RmZjQxZTY3YTljZWUxN2Y2NDkyM2E1NzI0N2I3N2EgbGVnYWN5LXRydW5rCisyOTczMiAyMmQ3MzI1YmE3YWM0OTY5ODIzY2U4Y2VlNmQ1NGQ5YzhlNDQ5ZDc5IGxlZ2FjeS10cnVuaworMjk3MzMgYThkMTMwYTZhNzRkNjhlOWJhMDVhNzk1M2VhOGY1OGVmMmFkODI2MCByZWxlYXNlMjItbWFpbnQKKzI5NzM0IGYyM2MzNWY4MTAzMzk5OWM4NTM5ODc1YzA1NGNhZTE0Njg5OWVjMDIgbGVnYWN5LXRydW5rCisyOTczNSBiMTk0NDNiZGY0NDdlN2Q4MWEwOWM5NzNmNzZhMTE1ZWQ0NzkxOTFlIGxlZ2FjeS10cnVuaworMjk3MzYgNjBkODA5YTI1YmFlYzgxMzkwOTBhNzc0ZWI0OGZjODM0NjM1ZDNhZSBsZWdhY3ktdHJ1bmsKKzI5NzM3IGIzMjdmZmNmZTliN2I5NjE0YWEwMjg2M2QxZmU3MWU0NjE0MTM1OTAgbGVnYWN5LXRydW5rCisyOTczOCAyMDVmYmYxYmQwNzU2MmYyNDI1NjA2YWRmOGY5MTJmZDU5NmI4MDk1IHJlbGVhc2UyMi1tYWludAorMjk3MzkgNzY2MDFmYjA3OGQ0MDE3YzgwNTc5NDJiMjc2MTQ1ODEyMzc0OTc5MCBsZWdhY3ktdHJ1bmsKKzI5NzQwIDI0NGU4ZmJlNGUyMDQ1NDBkM2Y0NGVhZGMzNWE4MTVmNzk0NzI5NDkgbGVnYWN5LXRydW5rCisyOTc0MSA1MzNlYjUzYTdmYmRkMDNlZjU0NmU3YjIwZjU2NTcyMDNlMGI3MmExIGxlZ2FjeS10cnVuaworMjk3NDIgZTM4ZDUwMzM3ZThjZDgzMDI0ZmRkM2FhNGRkYjc5NDFiMmY1MDBkMiBsZWdhY3ktdHJ1bmsKKzI5NzQzIDQyMjc5ZjdkMjQ0ZGY3NGIyNzZiMzA5NTAxNWUwZjVmM2ZkN2EwNTMgbGVnYWN5LXRydW5rCisyOTc0NCAzNGZiYmNiMTA1YTQzYjY2NTYwMmI1ZWI0ZmI3ODlmYzRjOGRjODRhIGxlZ2FjeS10cnVuaworMjk3NDUgODNjY2FhYWIzZTVlNDc3ZDYyZjk3NjUwNDg1YTI5MDlmNDViYjViYyBsZWdhY3ktdHJ1bmsKKzI5NzQ2IDZiNTU2YzU0NWZmYjM4YWRiYjcwZGM0MDkyYzBiYjgwYmQxZGE1OTQgbGVnYWN5LXRydW5rCisyOTc0NyBlMjcwYzBkNDFhMDUwNTdhMzExNjQ3YzYyNGJkMmM5YzhkYTNiZGNmIGxlZ2FjeS10cnVuaworMjk3NDggYzQxOWZjZTE1MjllNTdiZTRhZjAyZjdiZmMxYjBhZjU4OTdmNjFkMCBsZWdhY3ktdHJ1bmsKKzI5NzQ5IGZiY2NlZjhiMzE1MzMxYjE0Mjc3ODJmYzQ4MmZiNDRiOWFlYmRjODIgbGVnYWN5LXRydW5rCisyOTc1MCA1N2M2ZTg0ZjcxY2VjNjZhMGQ3YjgxNTY2YmM2OWQwOTZkNTkxMjJjIGxlZ2FjeS10cnVuaworMjk3NTEgOTU4ZDA3MDg1ZGNmNGFlODA4YzZkYjk2ZWQzZjM1Y2ZmYTIwNTcxZSBsZWdhY3ktdHJ1bmsKKzI5NzUyIDUwYzk1OGY3MDNlMzAyODllMjZhNmMwNjhmMDA5ODY3Yjc0OGI1NjcgbGVnYWN5LXRydW5rCisyOTc1MyBkNjYxMjliNTUxZGI0ZmFlMjA4ZjI3YWM1OWM0NzY2ZmI2YzU1YTMwIGxlZ2FjeS10cnVuaworMjk3NTQgM2FjNDY0YzM3Mzc0YzQzODRmZWYxODE1MDRkY2MzODE5ODc1ZWE5YyBsZWdhY3ktdHJ1bmsKKzI5NzU1IDdjMDhmNmNiOTBlNGY5NmUxMmM5MzFlZDQyODUwNDVmZWY1YWQ2ZjIgbGVnYWN5LXRydW5rCisyOTc1NiBkNDQxMWQ5NTBkNDgzMjU1MDM0NTk2MDVkYTEwNWQ5MjdlNTJlZjA5IGxlZ2FjeS10cnVuaworMjk3NTcgODc1MTQwZDMwZTE3NjU2MGFkZjQyNmRkZjUzNDljMGI4YzE1ZjdkYyBsZWdhY3ktdHJ1bmsKKzI5NzU4IGVlYzk5NzgzNzE2YzNhY2RjNGJkNTQyZmE2MDBmY2EzOTRiNmU1NzEgbGVnYWN5LXRydW5rCisyOTc1OSBjZTY0MGRhYjEwZTQzMmM4Nzk4OWI4MGU0YzU1ZTcxNDg3ZDIwOGNkIGxlZ2FjeS10cnVuaworMjk3NjAgZWZlNThjMTBjY2YxNmQwMDY2YmRhMjEyNDE4NGQ5YTNiNjhmNmY3YSBsZWdhY3ktdHJ1bmsKKzI5NzYxIDRlZDIzMGEwYzkzMWViMGYxY2E1M2RhNWQ5ZmIxNGY0ZTM0MWFlN2YgbGVnYWN5LXRydW5rCisyOTc2MiA0MmJmYzk4ZDI5NWI3ODUxZTE3MDE3N2RlZjcxMGZmMjQ5MjgzNDRhIGxlZ2FjeS10cnVuaworMjk3NjMgOTZiZGI0NDc2M2MzNmRmMTk2NTQxOTI4OTlmNGE4NWJiYjIxN2E4OCBsZWdhY3ktdHJ1bmsKKzI5NzY0IGEyNGJjNmEyZTJjZGZhNjY2M2NhMjUwNzJkZjRjNjliOGM1MTNkMzggbGVnYWN5LXRydW5rCisyOTc2NSBiMGI2MDg1OTgxNzAyMDVmZDE3NDBhNDMzNDViZTc0NDU3MmU3ODFhIGxlZ2FjeS10cnVuaworMjk3NjYgMDkzNGE4YTBiYTBkODU0ZmFkMzQyZGIyNThkMjM2OTc3ZmVhZjRhNCBsZWdhY3ktdHJ1bmsKKzI5NzY3IGU5NjU3NWY3ZTk2YTdlYzJmMDA0YWU3MWNkZTA1MmI4YTJlMzI4ZmYgcmVsZWFzZTIyLW1haW50CisyOTc2OCBkMzFkZGM2NmIxYjU1MWY5OWNmZmU0Zjg2ZmJmM2E0MzliY2EwYjk1IGxlZ2FjeS10cnVuaworMjk3NjkgMzE2ZmRkYmMxZTA3ZWVlYmRhODA2ZTEzNjAyODFkNmM4NTQ3MDZkOSBsZWdhY3ktdHJ1bmsKKzI5NzcwIGZmNWI1MTBlYmE2YjY3OTQ1YmY4MzEyNDY2ZDA3YzA5ZWQzODk1NWYgbGVnYWN5LXRydW5rCisyOTc3MSA2ZDBjZDgwZTI4MDQzMGQ4OGNiMDAyMTk4ODU4N2NlMjgwYmQ5YTJmIGxlZ2FjeS10cnVuaworMjk3NzIgMWJkOWQ5ZjAyYWQxYjQ1NjJjOGIwMzhiNWQwNjRhNjhjN2EzOTRlZCBsZWdhY3ktdHJ1bmsKKzI5NzczIGJlYTk5MWU2NWZmZDM5Yzg5ZTgxMDhjZmQ1ODBkZWRhMzQ5ODNhNTYgbGVnYWN5LXRydW5rCisyOTc3NCBiYWNkNjc4YjNjNGNlZDIzNGMyYzZkOTQzNGFlMjdjYzE2MjgzMDQzIGxlZ2FjeS10cnVuaworMjk3NzUgZjZlNDY1ODViNmIzNGMwZGM2YmU5OTRjM2UzMTQ0MDExMDhkMjc4NiByZWxlYXNlMjItbWFpbnQKKzI5Nzc2IGM3NzQzNWQ4N2MyZTkyMGRjNDA1NjA1YzhiMzgzNDM5OTk3NDMzYjcgbGVnYWN5LXRydW5rCisyOTc3NyBkY2RlMjUzNDdlOTM4OTAxZDUxYTNmZWQ3MzAyMmE4MjkxMmMwMjFmIGxlZ2FjeS10cnVuaworMjk3NzggZTNiOGY3N2E2OTgwMGIyY2IyYjA4ZGQwOTVlZDY0ZGYwY2JjYjViNSBsZWdhY3ktdHJ1bmsKKzI5Nzc5IGZmN2FkMzJjOTU1NGVkZjI4YjlkZDcyZGY2NGE2MGI5MzA5ZjYyN2UgbGVnYWN5LXRydW5rCisyOTc4MCAwYzg5OTM3Y2ViZWQzNzZlNDBkZTY5Zjg2MTQxZjgwOTUyOWUzYmY3IGxlZ2FjeS10cnVuaworMjk3ODEgMDgwODM4ZTM4ZTdjNGFlODRkMjI4MTFlMTg2YmZhNzZiMDJiMjg2ZSByZWxlYXNlMjItbWFpbnQKKzI5NzgyIDMyZGY4ZDU5NjBkMTgyZmQ3YzRhMTFkMmFmMmUyYmMzZmE4ZGUyNDAgbGVnYWN5LXRydW5rCisyOTc4MyAyNTFkZDEzNmJhYzNiYjAzMTU3Yzc5M2QwNzEzMmQ1MDBkYmVkMDYyIHJlbGVhc2UyMi1tYWludAorMjk3ODQgZWYxZTM4MzJhOWVhMjAyMzUyNzBjMmI1M2JiZTcyNDRiMzQ1OWJkZiBsZWdhY3ktdHJ1bmsKKzI5Nzg1IDQwM2RjYmM5MDQzZjY4NzRkMGZmYWRiNGNkMTE0MGYzOTc3MjkzY2UgbGVnYWN5LXRydW5rCisyOTc4NiA3ZmM3MDRjY2ExODEzYmIzYzA3ZmM1MTNlYmNhM2FmMTU0MTljYTkzIHJlbGVhc2UyMi1tYWludAorMjk3ODcgYmFhNDdkN2U4NGUyNTgzNjA5MjYyNmFiMTI4NTkzNzY5MTliNmY3YyBsZWdhY3ktdHJ1bmsKKzI5Nzg4IGYyZmMzOGY4Y2E5ZGUyZThiNTFkMDM2NzQ2MGQ3ZWFlM2IzMjZmYWEgbGVnYWN5LXRydW5rCisyOTc4OSA4YjYzOGJlNzZjYmUyNDBiNTY0ZDQxNDZiZjc0NzYwOTZjNDJkMGU0IGxlZ2FjeS10cnVuaworMjk3OTAgNDFmZjUwYjRkMDk3NDIzYjBmMmE1M2M2ZDliZWE0NDZiYmQ1NDk3OSBsZWdhY3ktdHJ1bmsKKzI5NzkxIDhlNjAxM2JiZTdhN2MzYzRmZTk5ZDBhNTQ3MmFkOTU1MGY3ZDhiNDAgbGVnYWN5LXRydW5rCisyOTc5MiAzZmQ4YzJhZmYzMDUyOTczOTlmZjFmYmYyNTc4ODdlYmVjMTRhYjliIGxlZ2FjeS10cnVuaworMjk3OTMgYTI3YWM5ZDMyZjIzMzhmYWFjNGY4OTUwOWU5ZTIwZjMwYWFmOWFhMCBsZWdhY3ktdHJ1bmsKKzI5Nzk0IGE0ZGJhMDU4ZjcwZWFmZmMzZjhiMzZjZTMxODVkOWI3ZDcwNGI3M2UgbGVnYWN5LXRydW5rCisyOTc5NSA5MTBmYTczOWY0YTRlN2MzNDg1MDljMWY5M2U1ZDFhMWI1M2YzZmZjIGxlZ2FjeS10cnVuaworMjk3OTYgOTBlOWEzZWNkYTQ0OWRjNmJiMWE2YTVkOWFiODc4ODg4ZGZjZTg5YSBsZWdhY3ktdHJ1bmsKKzI5Nzk3IGQ0MWM0Yjk1ZTcxNGRlMThmZjgzMjQ3NDlhMTFhM2UyNzI3YjM4MjcgbGVnYWN5LXRydW5rCisyOTc5OCA2ODAzNjBlNjhhMDYzYTY3OGE4OGE1MDUyNTNhNzkwMjRiYWMzYWMyIGxlZ2FjeS10cnVuaworMjk3OTkgZmFkY2FiNjVhYTg3NGI2NDkyMTY5OGMzMmZiODE0MWUyNWVjNzIyYSBsZWdhY3ktdHJ1bmsKKzI5ODAwIDA2NzU0ZDczYzYzZTQ2ODdiZTY4ZTA3YmI0MzYyNzA3Y2I0OWI2ZmYgbGVnYWN5LXRydW5rCisyOTgwMSAwNWQ2YWRlM2U5MmI0YjFjNTgxNWQ5OWUyODcwNzA1MzFhZmZiNGE2IGxlZ2FjeS10cnVuaworMjk4MDIgODIzODk2Y2UyZTVkMDU2OGNiOWMzNDM3ZmU1ZTAxMjhjM2QyMTUyYSBsZWdhY3ktdHJ1bmsKKzI5ODAzIDJiMGU4MTVjMGIzMDdmZmUzYzVkYzIxMzBmMDVlNDQxM2Q3OTI4MjcgbGVnYWN5LXRydW5rCisyOTgwNCBlYTFkMjA1MGQ3ZGFhZWNmNTYyYWRmNTBmOTA1YzY5N2Y4OGNhZGMyIGxlZ2FjeS10cnVuaworMjk4MDUgZjNhNjkwMzdmZGYwZmFkM2E1OWYwMzc1N2U3MGRmNGJiYzQzZGQ2MiBsZWdhY3ktdHJ1bmsKKzI5ODA2IDQ0ZDdlYWFlMGQ4ZDM4YjIyNjJkMzJjY2JlZWUwYTY3NjVjNGVhNTggbGVnYWN5LXRydW5rCisyOTgwNyAzMDg2ZTExMTc4M2E3OTEwNDFiOGNkOGRkNTAzZWY5ZDMwM2I2N2I5IGxlZ2FjeS10cnVuaworMjk4MDggNjBiZDdhZjAzMjRlODBjYTM3N2M5NDQ1NDQ4MzQzYjk4YWMyZmVkNiBsZWdhY3ktdHJ1bmsKKzI5ODA5IDYwMWI4ZmMxMmZiOTUzYTE4NzBjNzg5Mjc3YmJkZmMyM2EzOTY4YzQgbGVnYWN5LXRydW5rCisyOTgxMCBmMzQwMGVmMDJhNDU5YzQ3YjIwMTk5MjVlYmU4MGQ1MjRhYTI4MTkyIGxlZ2FjeS10cnVuaworMjk4MTEgYzc2NzYyZDY2ZjQyMWMxNzJlNTJjMDBhMjQ1NGJjMjA5NDczYThmZSBsZWdhY3ktdHJ1bmsKKzI5ODEyIDk1N2NhMmM1MTc5MDQ5YTM1ODNlNTQ4Mjg5ODcwYTE2YTRiNmUwOWEgbGVnYWN5LXRydW5rCisyOTgxMyAxMDg3MWY0NGU3ZGIyOWQ2Y2RmNjM4ZTc5ZWE0MWY4YzZkMGExNGFlIGxlZ2FjeS10cnVuaworMjk4MTQgNzMzZTRiOWQ1OTJlYmNlYjA5NGMyOTlkMDk4ZmRkNThhZjExZTM5NiBsZWdhY3ktdHJ1bmsKKzI5ODE1IGFjNzg3MmU1NTQwNTliZDk4OTQwMzQ3YWFlYWExNmU3MmNjYTVhMTIgbGVnYWN5LXRydW5rCisyOTgxNiA2NTg5YzM3YzBkZGQ3MmIzZjNjOGU3Zjg0ODllNzRiNTM2ZjA1MWM4IGxlZ2FjeS10cnVuaworMjk4MTcgNGVjMTkwMmVlNmI3N2NhOGQ5NWM1NzQwMWM5OTc0MjYwZmU4MTEwNyBsZWdhY3ktdHJ1bmsKKzI5ODE4IDU2MTE4NWQxM2Q1Y2M0MWY3NjEyZDY2ODRlY2I2Mzk3ZGZlMTExN2QgbGVnYWN5LXRydW5rCisyOTgxOSBmNzg1MjcwY2VlMTk3ZDE3MTRjODU5ZDM4ZDNkYTYxNTViMDJjZmJjIGxlZ2FjeS10cnVuaworMjk4MjAgM2M2NGVmODdkNWY4OWY1NDY4MDQ0YjI4NzQ0NWRiY2NmYjEyZmM2YSBsZWdhY3ktdHJ1bmsKKzI5ODIxIDA2N2EyZWY2ZDhhOWYxNmYzYjhiYjQ4NzgwZWVkMzgwMmIyNmMwMzYgbGVnYWN5LXRydW5rCisyOTgyMiA5ZjQ2OWRhNTkxYTllN2ZhZjFjNTYwODk4MmI1NTI3NTFhMjI0ZGQwIGxlZ2FjeS10cnVuaworMjk4MjMgNTQ3ZGU0MDdjMTMzNDczZWQzZjIzOWNiNjQyNTQ4OTBiNDJjYzAwYSBsZWdhY3ktdHJ1bmsKKzI5ODI0IDNlMDJlYWQ4ZGUwNTgwMDc5NzlmMGI3NDNiNjJmYjdmYTU2N2YyNTIgbGVnYWN5LXRydW5rCisyOTgyNSA0NmJiOWFkODMxOGYxOGZhNGQ1NGNlOWZjZmQ3MzQwNjZiZTBkZjFhIGxlZ2FjeS10cnVuaworMjk4MjYgN2I5MDk2NTAxZWE4MGQ4MDU5ZWVjYjk4NjBjODE2M2Y4OTBlMTAzNiBsZWdhY3ktdHJ1bmsKKzI5ODI3IGFiZjU2NWNmNWI1NDc0YzgyZTRlOTAxY2UyOTI3MTk1NTEyM2U4YTIgbGVnYWN5LXRydW5rCisyOTgyOCAxM2MxYWExNWUwZmI1ZGE5NDgzNzUxM2Q2MjRlZTIwODMyNGVhMGEwIGxlZ2FjeS10cnVuaworMjk4MjkgZGMzOTllOWNhYjg5ODZlOTI3MmEzODNjZjVkZjI5OTJlZGRiZmIwZCBsZWdhY3ktdHJ1bmsKKzI5ODMwIDMyMmI2NjRhMjAyMmQ4Nzg0YTk2MzM4NDc3NTI2YmNkOTI2NWJmYWUgbGVnYWN5LXRydW5rCisyOTgzMSAzNWYxMjVkNTJjZjVhODFiMTJjMDEwYjNlYTNhMGI1MTZiYmRjNjUxIGxlZ2FjeS10cnVuaworMjk4MzIgOGZlMjk2YWQ1OTM2YjM3MDI4YmVkNmYyNWRiZmZjYjFkZWIwZGJlNiBsZWdhY3ktdHJ1bmsKKzI5ODMzIDc3MDkzZDU3Y2NhOTk3YmU2NDg1YzgyYjBhNjk1YjAwNzNlMTE5OWUgbGVnYWN5LXRydW5rCisyOTgzNCAzZjdhZWE1YjkzYTE4Njc5MjgwMzJhMzdiMzUzYTE1ZGQ3ODQ3N2JjIGxlZ2FjeS10cnVuaworMjk4MzUgNzkxMTg2MzJlMzdlNDAxZTA3OWNiZTAwOGZiNTJiNzY5ZWQxMzBhZiBsZWdhY3ktdHJ1bmsKKzI5ODM2IDU0YTc0YjBkZmUyNmNmYTYyZDk2OWIyMmU1MzRjY2YzMzVlMWMwZGMgbGVnYWN5LXRydW5rCisyOTgzNyA4MjM2ZDUyODg0MTI1NmJjMWVkNzc4YmMwMDYwOTQ3MDc2NWEwM2ZiIGxlZ2FjeS10cnVuaworMjk4MzggODc4ZmVkYzZjN2U3YzRlNTUxNDMwYzMyYmVkZDY0MTRlMzA4ZDZjYyByZWxlYXNlMjItbWFpbnQKKzI5ODM5IDZlMjI4ZTFhZmYzODU4N2UwMWUzMzE4MzdhNGIyNjExOTExYzY3MzIgbGVnYWN5LXRydW5rCisyOTg0MCBiODI0MjhiMTc5NzhmYjBkYjZlMGJmOTA1MmVhNmQ4YTliMDI0ZjUxIGxlZ2FjeS10cnVuaworMjk4NDEgNGYyZDUxNzRiZDRhYzViOGVlYmE4MGYwYzIzYjRhMGU1Nzc4ZmE1OSBsZWdhY3ktdHJ1bmsKKzI5ODQyIGQxZDg5NTliMTM4YWNmZWQ5ZjY0NTMwMjgzYWRmNzQwMjNhZWQyMTMgbGVnYWN5LXRydW5rCisyOTg0MyAwOGI3MjBjZDM4N2UzMzU5NWNiNmE2NWQxZjJjMGQ1NjY5ODQzYzI0IGxlZ2FjeS10cnVuaworMjk4NDQgMGM3Y2IyNzQ2ZDg2NDM0NThlZGEyZGVmMTcwZDRkYTg1OTg0MGJmYyBsZWdhY3ktdHJ1bmsKKzI5ODQ1IGMxY2FhNWJmZjI5MmFmNTJlMGYwMjY4NGJhZDFiMjk1N2QxZDE2MDggbGVnYWN5LXRydW5rCisyOTg0NiBjMjYwNGQ2OWFhNWQ1MmJjMmQ2ODNjYmMzYTI3ODBkYmI1OGYzYjExIGxlZ2FjeS10cnVuaworMjk4NDcgOWU0ODlhMGRmN2I1YWY5ZDY2OGQ2NTM5MGM4YjYyMGE5YmFiZWFjNSBsZWdhY3ktdHJ1bmsKKzI5ODQ4IDNkMGUwMjk3NmJjMzM2NjQ3YTc5NTk1YmRlNTJjYTYwNDg5ZTdjODcgbGVnYWN5LXRydW5rCisyOTg0OSBlMTY4NzYzZTg2MWEyYzQ5MTI3ZmNjODQ3ZmJjNWMxYmM0YTZkN2VkIGxlZ2FjeS10cnVuaworMjk4NTAgZDRjYzk3MWQxOGE2M2UxMGZkZmRjOWZiZGY5MDE2MjJjOTMyYTE5OSBsZWdhY3ktdHJ1bmsKKzI5ODUxIDEzNWJiMTEyMTVhMDk0YmU4NjJhYjY5OTI0Yjg1NzM4ZThiZWU2MzQgbGVnYWN5LXRydW5rCisyOTg1MiBkMGYyZDFmM2ZjODU0MmE2MzA5YzAwOWEzYjA3MGMzN2U4YmQ3YjdiIGxlZ2FjeS10cnVuaworMjk4NTMgMGYyNzY2MzAyYmEwYTlmMzY4ZTc4YjU0NDVkYjdlMGRkNGNiMTBmYiBsZWdhY3ktdHJ1bmsKKzI5ODU0IGQyZmI0MmVjOGJiNDIyZTMxNmRhMzMzNjI3Zjk0ODhmMWEyMDcxYzAgbGVnYWN5LXRydW5rCisyOTg1NSBhYjM3NjNkNDc3Y2M0MDhhNjc4Y2QxM2YxYjFjNDY5YzU0NTI1YjMyIGxlZ2FjeS10cnVuaworMjk4NTYgMTg4NWIyZDYzOTNhOGFjZDcwNGMyODM5OGMxYTkzY2E2N2FlMTBjZCBsZWdhY3ktdHJ1bmsKKzI5ODU3IGY4YTFiYTQ0NjE1ODQ2OWNlYzY4N2JjMjkxN2QzMjNmMzg3ZjUxZjcgbGVnYWN5LXRydW5rCisyOTg1OCAxMTkxOTdmYTYxNDA4ZWQ1YWI4MTAzMWJmZmJhYmU0YmMxYWQzMDJjIGxlZ2FjeS10cnVuaworMjk4NTkgM2Q1MjNkYmM5OWJlZWE0YTc5NDU4YjBkMTNjYjRlNTM2ZjUyMzAwZiBsZWdhY3ktdHJ1bmsKKzI5ODYwIGU3NDg2ZjNlZjc1OWE4YjJlNTQyN2Y0MDBlMmQ5N2EyZGY4MzFjM2QgbGVnYWN5LXRydW5rCisyOTg2MSBkZjU1NmZkZWM2OWQwNWYzNTQ3OGUxZGJjNWM2ZThiNDhiY2I0YjQ5IGxlZ2FjeS10cnVuaworMjk4NjIgMWY4MDAwNTdiNjM3MjhmNTI1N2ExYTY3MzQ3NjgyNjY0NTQ2MWVjMCBsZWdhY3ktdHJ1bmsKKzI5ODYzIGRmNzE5NzM2ZTE1MWI1NzY0NjhjM2MwZjljYjk2ZmU2MGZjNGRjY2EgbGVnYWN5LXRydW5rCisyOTg2NCBmY2Y5NzM0ZTEwMjE0YmUzYzRmMzc3MDc1YTNjYWMyMzJhYjZiNWMzIGxlZ2FjeS10cnVuaworMjk4NjUgMWJhZjFjZGRjMGVjZDk2OWM2NzRjN2JjZjc0YzliNmEzZTIwNDc2MiBsZWdhY3ktdHJ1bmsKKzI5ODY2IDhhMDEwYzI3ZDZjYjlhMzZjZmU1Y2E5ZjU1NDY2ZDQ2MGFiOWU0MzUgbGVnYWN5LXRydW5rCisyOTg2NyBhOGNhZGZiMGZmODMyZjZiY2JjZjBkYWQ3ZjMyZWQ5MDY2YTU4MDk0IGxlZ2FjeS10cnVuaworMjk4NjggZDIwN2QxZDc4YzVkNWExZmJkZDQyOWI3NTViMjQxNmZiZjFjNzIwMyBsZWdhY3ktdHJ1bmsKKzI5ODY5IDQ4MmFlMDU1YmJkNGZhMGFjNWM0Y2FlNWQ1NzY4M2FkMjBjZjcyOGUgbGVnYWN5LXRydW5rCisyOTg3MCBiYjM4ZDdhYmMzZmNkY2Y3OGE5NzNmY2M3MmQxYjRkNDIyNjRlMzA4IGxlZ2FjeS10cnVuaworMjk4NzEgNDkxYmZjNGEwZjViYjYyMjk3YTdjYzdhYWJhNGRlM2M5NzU0ZTViNCBsZWdhY3ktdHJ1bmsKKzI5ODcyIGIwNTVlNzg4M2M4M2ZjNTI3NDY2YmQxMTM5MWU1NWFmNmJlNGFmMGYgbGVnYWN5LXRydW5rCisyOTg3MyBlM2ZhZTdiNmMyMDc4ZjRkOGFjNTZlMTFmNzZlMmNmMDhjZmQ3ZWI2IGxlZ2FjeS10cnVuaworMjk4NzQgYjI3YzFjYWQ3N2VhNzA3NTBlYzRmOTZmZmY4M2QxMGI0YTgwZjczOSBsZWdhY3ktdHJ1bmsKKzI5ODc1IGEwZDc1MmJlNTU3NzMwYmUzMTkwMmE5NGQ5YjM5OGUzOTI2OTUxNTcgbGVnYWN5LXRydW5rCisyOTg3NiAyODEyY2FjZTMwMWFjZDdmZTU5MjUzYzQyY2U2MWNkMDVmMWRjZWM0IGxlZ2FjeS10cnVuaworMjk4NzcgY2M2Mjg1NGY2MzZjZjIxMDdhNzgzNjEwNTg0YzkxYTJkNmZmYjdlZSBsZWdhY3ktdHJ1bmsKKzI5ODc4IDQzODA0MzVmZWY2NjUwNGY0YzFkNDg1ODBhODM3MjQ3ODNmZjFlYmEgbGVnYWN5LXRydW5rCisyOTg3OSBjYmQ4MWQwOGM0MzAxYzRiODBjY2Y5M2RiYjhiNDJiMGQ4M2U5ODFiIGxlZ2FjeS10cnVuaworMjk4ODAgNDg4MTYwMjFmNTg4MjkyMTVmYzVlOWVhMDhhNTdjYTBmZmZjZWZkZSBsZWdhY3ktdHJ1bmsKKzI5ODgxIDFiNDdiNTc2ZTBkNGE2MWQxNWY4ZjBkMDk5ZDEwYmIwZTk0M2FiYmMgbGVnYWN5LXRydW5rCisyOTg4MiBiMzg1MzNlMDFkNjVmYzlmYThiZjlkN2JmZGVhNGZlMzg3ZmJmNDgxIGxlZ2FjeS10cnVuaworMjk4ODMgNzAwZTE4MmIyOTAxOTM0Mjc3YzNhYzI3MDJhYTk2ZWI4ODI3ZDcyYyBsZWdhY3ktdHJ1bmsKKzI5ODg0IGY3MTAxNzAyMmZjZWNjNjJlZmM3NTY3Y2I5Mjc0NjNhOWQ2ZmNjNjQgbGVnYWN5LXRydW5rCisyOTg4NSAzZmE2ZGVkMGExZTk0ODBmZTNiZDgzN2I1ZWQ1YTY5Y2JhNzQ3MjhkIGxlZ2FjeS10cnVuaworMjk4ODYgNTQ0NzI3ZDQxZjU2ODdmZWM5NTc5ZWVhZGEyMzUyODVhMjNiYjI0OCBsZWdhY3ktdHJ1bmsKKzI5ODg3IDI2OTE4ZTJlZmQxNzdhYTdiOGQxOTJmZTkyMjNiOTRjYTZiNWNkMTAgbGVnYWN5LXRydW5rCisyOTg4OCAxYTA5NGVmMGZjODYyYzQ0YmYwYTFhODY2NjMyNDYwMTBjMDMzM2EyIGxlZ2FjeS10cnVuaworMjk4ODkgZGRlOWM2MmE3MmZlMDNhYjMwYzY0YTkwYjJlZjI0MzAxZjRhMzVhOCBsZWdhY3ktdHJ1bmsKKzI5ODkwIDU2OWUxOTNiZjU5ZmNhNzAzNTE5MjIyZjcxYjE5ZDMxNzJiNGNjYzkgbGVnYWN5LXRydW5rCisyOTg5MSBmMjgzNTUzMTA4NjcwNTViNTE4M2FiYzE3ZDM5N2Y4OGU2Y2Q1ZWNkIGxlZ2FjeS10cnVuaworMjk4OTIgZDU4ODI0Y2ViMzVkNTg2NzlkMzIxMDdjYjQ0NmM0ZTcxZGYxZTU4NyBsZWdhY3ktdHJ1bmsKKzI5ODkzIGJkMDllM2EyZDUzNjQwZTgzZGNhYjJmNDhjMmU1ODExOTM2NzY1OTMgbGVnYWN5LXRydW5rCisyOTg5NCAwMzAzNTUyM2IzODVlZTk2M2JiMjMwN2Q4MmMxYTkyZjcxOWVhMTI2IHJlbGVhc2UyMi1tYWludAorMjk4OTUgMzVmNDQ0Y2E1ZTA1YzM3MzcwMTY3N2EwMzMzNDk5NzM5YzlmZDhmOSBsZWdhY3ktdHJ1bmsKKzI5ODk2IDFlNTE0ZTM3NzYxM2UxNzY4MjYwMTkxYmJjOWFmM2I2ZWJkMTkzNTMgbGVnYWN5LXRydW5rCisyOTg5NyBhYjZjN2IyN2E0Y2I5MTRjZDk4YmY2ZjZjN2M2YTUxOThlZmQ1MWMzIGxlZ2FjeS10cnVuaworMjk4OTggOWQ2YWVkMmU2MGUyOGY2Nzc3ZDY1ZTZlYzA4Y2E2Zjc0YjAzMjEyZSBsZWdhY3ktdHJ1bmsKKzI5ODk5IDRkNDcxNTI2YWNlMTI0Yjk5ZDRiZDEyYzNhNzQwN2QxOWE1Y2M5ZDYgbGVnYWN5LXRydW5rCisyOTkwMCAzZDI4NjlkZTIzMzZjYjEyOTNhMTI5MDEyMWNjMzJmYjU1NTg3MWM0IGxlZ2FjeS10cnVuaworMjk5MDEgNTFkMDA1NzgxYzg2OTE0ZjZhMTdkZDZhZGUxNDk2M2YzZjY5N2YxMSBsZWdhY3ktdHJ1bmsKKzI5OTAyIDYwOWI1ZjM3ZjE0ZmUyYmQ5MWY0ZDljNjE2OGRkMzkyNWQ2ZGQ5NjggbGVnYWN5LXRydW5rCisyOTkwMyA0NTc0YjY1OWVjMzdhYmQ4ODdiMjllNDdiNmE0ODljMTViYWUxZTNlIGxlZ2FjeS10cnVuaworMjk5MDQgNjUxMWIxNmZmZTg5ZmZiZWZiOWY3YzFjNDU4NmZiZTkyNWI0OWNlYSBsZWdhY3ktdHJ1bmsKKzI5OTA1IDAxMDNmMGI3NWZlMjYzNDdlODg2MDhlZGVlOGM2NTRjMTM1OWJmMWEgbGVnYWN5LXRydW5rCisyOTkwNiA0YmVlMzM3OTA5NDBjY2RkZjIzMGEwZDQ5ZmYzN2I0M2EzYTRkNmQ3IGxlZ2FjeS10cnVuaworMjk5MDcgYjA0ODlhNjA1OTdmNzQxNDFjOGM4MTJiZWI3NGYxY2NmZTRlOGU0YSBsZWdhY3ktdHJ1bmsKKzI5OTA4IGFkNzVlZmUyZjBhNjZjN2ZkZDFmMDZhODgwYWRkMjQ5YThkZTRjNzggbGVnYWN5LXRydW5rCisyOTkwOSBjNTIyYzhjNzFjYWIwYzEwZTg1NmM1NzNjMDE4NjFiMzJhNmZlOWI5IGxlZ2FjeS10cnVuaworMjk5MTAgYzZmZmQ4ZTYxY2NlNmRiY2MwZjBhMTM4ZjZlNjU5YjFjNzNlNjk3MSByZWxlYXNlMjItbWFpbnQKKzI5OTExIDZkNTkwNjg1M2E3ZDkwN2U2ODM1NTAxYWY0OTUzZDA2ZTFiYzdhOWYgbGVnYWN5LXRydW5rCisyOTkxMiBjMmJlNGRjMjU0MDU1NDM1ODcwODk3ZTk3MjlmMzYwN2M3MzU4YTNkIHJlbGVhc2UyMi1tYWludAorMjk5MTMgNGEwMTIwOTkyNjkxNmQ5YWI1M2UwMDg2MGE0ZTliMzQ3OGVmNzU0MyBsZWdhY3ktdHJ1bmsKKzI5OTE0IDU3ZDAzMzc1YWVhZDc3YTg1OTk1MDI0OWFiNmZkODZhZTIyYmZkYTQgbGVnYWN5LXRydW5rCisyOTkxNSBkNDQ5NDViODFmZmFlMDA3NzVmMTJmYmE4NWYxN2I3M2Q0ODQ1NDYxIGxlZ2FjeS10cnVuaworMjk5MTYgYzViMTMwNTA4MWRmZDEyOTlmY2E5YzU5NWEzYmI1MTU2NTE2MDUxZiBsZWdhY3ktdHJ1bmsKKzI5OTE3IGFhMGUxOWI2ZTFlNzVhMGM1NzRhYjc3M2YxNThhNGNjYzNhOTZhZGQgbGVnYWN5LXRydW5rCisyOTkxOCBhMzUwYTQ4N2VhYzExYjM2NTU5Yzk1NDZkNTBhMWVlMzE5NzFkNmU4IGxlZ2FjeS10cnVuaworMjk5MTkgMzY3MjUyMjE0ZGFmMGYyNzUyOWMwZmI0YTRhYzdmNTZlZWIyNjhhNSBsZWdhY3ktdHJ1bmsKKzI5OTIwIGMxMjU4YjFhMzZjNmY2OGRmNmMwMTllYWQ5NTM1ZmJhNjk1M2ExZWQgbGVnYWN5LXRydW5rCisyOTkyMSA0YWMzOGYyOGNkMTBhMTVjY2M5MjRjOTRjM2NkYjMyNzAxZTJmM2YyIGxlZ2FjeS10cnVuaworMjk5MjIgNzQyMTM2NzI3NGI0NTQ4MWVmMjcxZGE2MjdkZmM2YTdmNTJmNmI0NCBsZWdhY3ktdHJ1bmsKKzI5OTIzIDc3NzdkY2ViNjZlZTE0NGNjYzU2NWZjM2I1NjY3YzA0Nzg1NTNiNjUgbGVnYWN5LXRydW5rCisyOTkyNCA3YTA5YjM2Y2EzNzljMmMwN2Q2ZDc5MThjMGZmNGUwODdmMjQ0MTEwIGxlZ2FjeS10cnVuaworMjk5MjUgYmRkYzQxMzE1MzM2NTBkOGJkZGQ4NTYxNTBmZjJiM2NjMDcyOGFhZSBsZWdhY3ktdHJ1bmsKKzI5OTI2IDhlYTJlMzU5OTdhMDRiMjA1NDMwZTgxNDRjMmU5YzAzNTUxM2FmNTkgbGVnYWN5LXRydW5rCisyOTkyNyA4Yjk4OGEwOWRlOTZkZGE2NjlhYzk3NTBhZmUzNjkyZWUxNzBkY2RkIHJlbGVhc2UyMi1tYWludAorMjk5MjggY2EwMWYzZGU2NjRlOGI2MDkzMTI5MTk1ZDY0NGY1OTdkMDI1Nzk0NSBsZWdhY3ktdHJ1bmsKKzI5OTI5IGNiODVhYWU3ODk4MDJhZDY3YTY1NWVjNzRiZDdjOGUwMTM5MDBjMjUgbGVnYWN5LXRydW5rCisyOTkzMCA2MGU1Nzc5N2I4ZTYxYTMxMWNhYTI5ZWE2NGNiNTY4YmVjNjBjZjg4IGxlZ2FjeS10cnVuaworMjk5MzEgMjcyMDRmMDcxMmEyNmVlOGM0NThjZjkyMWY1NWI5NjhiM2Y5MzA2NCBsZWdhY3ktdHJ1bmsKKzI5OTMyIDVjN2EzYTE3MzEwZDFhMmE4ZDM2ZjczZTMwMzlhY2VkNjZkMTNiM2MgbGVnYWN5LXRydW5rCisyOTkzNCA0OWY0OWFlYmY1YzIwYmUzMmQ4ZTRjYzYyYjkxMGZmNjc3ODcyOTE5IGxlZ2FjeS10cnVuaworMjk5MzUgZTUxY2JkY2EyMDg1YmE5NzJhNzdlZmZiYzgwY2JiNmZjMzIzNjkyZCBsZWdhY3ktdHJ1bmsKKzI5OTM2IDAzYWZkYTlhZDA5MDhhM2ZjMTI4ZTgzZTNiYjIzNjA5NjNlY2UwMzcgbGVnYWN5LXRydW5rCisyOTkzNyBkZDgxN2JiMzY0NmJjYjkyZGRkOTRkZGMwNDNkYTY0NGZhY2RjNjYxIGxlZ2FjeS10cnVuaworMjk5MzggMzdhMTc4YzBmZDU5ZjJmMjQzMmU5OGM1NTdiZTg5MDMwZmZmYTczYiBsZWdhY3ktdHJ1bmsKKzI5OTM5IGRkYmIwNTdlNWFiMzE1YmNlOTQ2MWQxYzA2MjY5MGQ0MzhhMWY0YTEgbGVnYWN5LXRydW5rCisyOTk0MCAxNTk1N2I3ZTQyNDc5ZTI5OTlmZDgwZTQ5ZGYzNzUzYTViZWUzYTBiIGxlZ2FjeS10cnVuaworMjk5NDEgYzg4ZjZmZmYxYzNmMWM3ODE3MzY0ZDMzOWQ5YmE4ZTEzMjFiODZhNiBsZWdhY3ktdHJ1bmsKKzI5OTQyIDE0ZmMxODczMzRjNTgxNWE5OGUzODFkMGJkMWU3YTE4YTRmNWM4NDkgbGVnYWN5LXRydW5rCisyOTk0MyBlMWEzMzEzNmI0ZTI2N2JiZjQ5ODliYzMzMzMzNjI2NjY3Yjg1YjEyIGxlZ2FjeS10cnVuaworMjk5NDQgNDE4YTdlYzkyNTk5MzBmZmY4NzM1NzM0NTUzNTVkM2RhNzQ2Y2RkNyBsZWdhY3ktdHJ1bmsKKzI5OTQ1IGE1NzNhZjVkYjgwNzQ1MmVhYzc0YzcxNmVhMmY5ZWE3ZDlmMDI3ZmQgbGVnYWN5LXRydW5rCisyOTk0NiBmYmIyNGNkNTQ3NjZjZTc3YjkwZTMwNWJhZTUwYzY5YmMzYjA5NGQ5IGxlZ2FjeS10cnVuaworMjk5NDcgZjc5ZWJiYWE0ODMzNGQ1ODJlZGRjZGQ1YWI4MmQyN2FkZGNhMTQzNSBsZWdhY3ktdHJ1bmsKKzI5OTQ4IDk1ZWRiNDhkYmZhMTZmNjNlNjgyYmU4YjBkM2IxODA1NzA3ODNiNjEgbGVnYWN5LXRydW5rCisyOTk0OSA5OWM3OGNmOTU2MTA1MWE5YTAzMGE1Y2VhZGMwNGM2NjE2ZWZlYzg5IGxlZ2FjeS10cnVuaworMjk5NTAgYjhmZmZiYmQ2ODMyNjYzNmRkZDY2MWI0ZTNlOGMxYzhkYTEzNGI2YSBsZWdhY3ktdHJ1bmsKKzI5OTUxIDA2OTBmODFjY2U3OGJlNzRhMTA4MjBjMDk5Y2VkMTVkYjYzZTczMGYgbGVnYWN5LXRydW5rCisyOTk1MiAxMzgzODUzMGY2MTk1NzQ0N2Y5ZDk5YTA0MDA4NDhkNTI2ZDBhZTVhIGxlZ2FjeS10cnVuaworMjk5NTMgNmM0NTk4NWE4ZmRiZmYzYWExNGQ3NjM0NTdiYjg2NjQ2ZTNmYjIyZiBsZWdhY3ktdHJ1bmsKKzI5OTU0IGYyNTViM2Y1ZTkxMzYxYzQ0ZWFjMzJlMWZmZWFjMjI2NjA3ODZhODggbGVnYWN5LXRydW5rCisyOTk1NSBlMDc5NDhkNWNmNjdjNDVkYzdmODgxOThiMjkxMDRiYjhjNGM4NWI5IGxlZ2FjeS10cnVuaworMjk5NTYgNzQ2OGI2OGU5ODI4NmY0ZWMxYWMxN2RlM2JmY2NiNDBmOWNjMGJkZCBsZWdhY3ktdHJ1bmsKKzI5OTU3IGQxYjRlNzAxNmQ4OGE1MmViOGI2MmNkNTQ3Yzk4YWFhZjcxMWQ2MmMgbGVnYWN5LXRydW5rCisyOTk1OCA3YmEwNzJkYjM4MjhmN2QzYWQ5NjI2MGM2YjRhMzg2M2FjZmU4MWQ3IGxlZ2FjeS10cnVuaworMjk5NTkgYjI2OGE2ZTg1OWNiN2IyODY0OWNlZjk4YWE4ZGQzYmQ5YzYyZDg5MSBsZWdhY3ktdHJ1bmsKKzI5OTYwIDI4ZWZlMTZhOGI3ZGY3YWQwZTk2NGRjMjgzNDZjNTRhNWViZDQ2YTIgbGVnYWN5LXRydW5rCisyOTk2MSBlMjZhMjA4ZWE3MWI4MzU3MTZmYTAzYjVlNWYyZDc0ODFlYjQ0NzUzIGxlZ2FjeS10cnVuaworMjk5NjIgMGY4NDhiMDYxNDZmMGM5NzU0NjdkYTAxNDhlNTU0NGRkODAwY2U4ZCBsZWdhY3ktdHJ1bmsKKzI5OTYzIGI0Y2U2YWMxN2Y2MDc5ZTY2ZjM0MjFhOGYwNjViMDdkMDgyZTQyM2QgbGVnYWN5LXRydW5rCisyOTk2NCAyZjQwZmE3OWI1OWE1ZjI3OWMwM2Q3MWFjYzBkMWZkOWRkOGE0M2QwIGxlZ2FjeS10cnVuaworMjk5NjUgYjhhN2M0Y2YzZTZkMjYwMDU5NzIwZWNjYjU4MjA3OWFhYWYzNWNmYiBsZWdhY3ktdHJ1bmsKKzI5OTY2IGMxMzVmYjJiYjgyNWFlODA4NWIyODFmYzY5Mjk2ZjJkMzNhYmU3NzUgbGVnYWN5LXRydW5rCisyOTk2NyBhNTZlMGIyNTE3YmQ4MzU2NGE4MjNkNjliNzIwZjZiMWFkMTMwZmY1IHJlbGVhc2UyMi1tYWludAorMjk5NjggYWY0Njk4ZTU5MWVjYzhlMjk4NWIzZTkxM2MyMGQyZmQ0MGVlYWQyYSByZWxlYXNlMjItbWFpbnQKKzI5OTY5IGUwYjU5NjA2MDMxM2U2MzcwOGY3YTI5NGU1YjAwZmVmYTQ0MTYxNGEgbGVnYWN5LXRydW5rCisyOTk3MCAyMzhjYWM5N2QxNjU4NGJlMzE1NWI3YTRlZDQ0NGM0ZTY2YWY1NDE5IGxlZ2FjeS10cnVuaworMjk5NzEgYjMxYmQwMDRmNDMwYzczMzg4YTA5YzczYjBhODIzZTcxYjYwOGQxOCBsZWdhY3ktdHJ1bmsKKzI5OTcyIDNmODAxOTI3MzU0OWVjZjJhODllOTZlYmRjNmZkZmNmMDM5YmIwMGUgbGVnYWN5LXRydW5rCisyOTk3MyA1NDY3YzZlMWY1NDFiMDRmZWI1MDE3Mzk4NzRlN2ZjMDA2Zjg3NjY0IGxlZ2FjeS10cnVuaworMjk5NzQgMjc3NWRlMzVkZDI5ZDQ5Y2VkNTA2ZDZiNzJkMGFjNzE1YTc2ZmQxYyBsZWdhY3ktdHJ1bmsKKzI5OTc1IGYwNzcyYmQ3Y2M0MDEyYzIwZjg3NGY4MTNkODkzMGM4NDg4NDZmYWQgbGVnYWN5LXRydW5rCisyOTk3NiBmOGQxYzY4MjBiZmFlYzUzODlkNzcxOTY2MTc1MjQzZWRlZTRhNDZkIGxlZ2FjeS10cnVuaworMjk5NzcgNzZmNzliYjM2ZmM3NzNkYzkxYWU0MTM5N2ZkNWU3ZWMzY2FkNTQxOSBsZWdhY3ktdHJ1bmsKKzI5OTc4IGNkMWZlNGI1ZjdmZmNjMjNlZTljOTJiOTYyNDY1YTkyNWUxZGI0OGEgbGVnYWN5LXRydW5rCisyOTk3OSBmODYxMzBmNDViZjc1MGQ4ZjliZDg4ZDVlMjRkYmQ2OWQ2MzkxZWU5IGxlZ2FjeS10cnVuaworMjk5ODAgNjcxMzI3MTk1ZGMzMGVhNWQyYzQ3ZWIyOTQ5NTcyNjA2MzYwNjcyMiBsZWdhY3ktdHJ1bmsKKzI5OTgxIDgyNTQ0NWY5ZDZiOGIwMmM4ZWJjYTIyMjc1YTgxY2YxZGY0YjA1MGYgbGVnYWN5LXRydW5rCisyOTk4MiAwMDE1ZDNmMTg5ZTE0OWEyOWI2NmE1MjE3NWE2ODQwNGQyZGNjNzM3IGxlZ2FjeS10cnVuaworMjk5ODMgZWRhOGU2ODk4ZGQzZWU3YzExZTMyZDBlOTQ4ZDdhNWYzYWFkZDdjZCBsZWdhY3ktdHJ1bmsKKzI5OTg0IGE5YjRiNmFhMTIyMDI3NzRjZTQ4MzNlM2QyZWIwNWRjMDA0OTBhNTAgbGVnYWN5LXRydW5rCisyOTk4NSBmYTQ1MzJlZjk5YzlhOWYwODgzYTJiMTFiZWIxYTliNDg4NjM3YmYyIGxlZ2FjeS10cnVuaworMjk5ODYgZTkyM2Y2ZDNiNGEzMzA5MTc3MTdmZGI2OTczY2UwMDI4ZTU3YTA4YSBsZWdhY3ktdHJ1bmsKKzI5OTg3IDllNGM4MDM0MGZhMWQ5NzU1ZWYyY2Q4M2ZiNThmYjIzMzM5ZDYxMWUgbGVnYWN5LXRydW5rCisyOTk4OCBmNDBhMmQzYTJhYjU1MzcyYTVjZjZmMmQxMjRkMGY4NzAwNTliY2Q1IGxlZ2FjeS10cnVuaworMjk5ODkgMmQ0NGFiZTU3YjQyNjM4NDBkY2Y4MDU4OTQzMmNjZTMzY2Q2MWRjNyBsZWdhY3ktdHJ1bmsKKzI5OTkwIDM3NmJkMzU3YzRkNWFlNmQxNjdhMmZhZDdhN2Q2MjZlNTRlZjA2OTQgbGVnYWN5LXRydW5rCisyOTk5MSA1YTllNzA2NGM5MjM0ZDEyN2QyMDg0N2IwMzk5ZWMzMWQwOWIwNDRlIGxlZ2FjeS10cnVuaworMjk5OTIgNjQzMTAwMTcwYmRlOTFmODY1ZThlYzNlODA0NTYwZTQ0NmJjZGM2YSBsZWdhY3ktdHJ1bmsKKzI5OTkzIDUwYzYzM2E4N2UzNTU0N2YxYjNkOWNhMGEyYzljN2I4YjM4MWI1MDAgbGVnYWN5LXRydW5rCisyOTk5NCBmZDZmYjczZmIyMGZkYTFmYzk4OGU5ZThjY2Y0MDllN2RmNjczYzc4IHJlbGVhc2UyMi1tYWludAorMjk5OTUgODUwNDU5MWU0YzYzMWI0NDc3YWEwMWM1YTBhNTYzZjkwMGQxM2Y5ZCBsZWdhY3ktdHJ1bmsKKzI5OTk2IDk0YzU1M2ViODhjM2E1Nzc5MmNkOWU5ZjdlYTY0MjQ4MTI1MjdkNTIgbGVnYWN5LXRydW5rCisyOTk5NyAwYjY2ZDRlOWY0ZjQ4NTk2NzliNWI0MDU4MGRlMzA0MjIyZDhkMmZmIGxlZ2FjeS10cnVuaworMjk5OTggMTdkMTIzZjMzNjExMDYwMDU4YWE1NGRmZjAzNjUyYzY3ZDNmODhkYSBsZWdhY3ktdHJ1bmsKKzI5OTk5IDc5ZjkwNjNmYjU4ZWNiMjhkYWI5ODRiMDhmMDc4YzdmZjE2MjQ0NzQgcmVsZWFzZTIyLW1haW50CiszMDAwMCA0YzE2NDI4ZmJjZDgzYzVmMTcwMzkwMjY2OGRiZTA5YWM3MjMyYjQwIGxlZ2FjeS10cnVuaworMzAwMDEgYTVhODczNTcxMWU4MTZmODUxZDQyYmRkZTg0MGIyOTBlNzVhZGM0YSBsZWdhY3ktdHJ1bmsKKzMwMDAyIDdhYmE4NTljZWU1NDUzMjdjODhlNTU0ZTVhZTMxYjMxMzViZTA0OGMgbGVnYWN5LXRydW5rCiszMDAwMyBkMmQ3ODE3ZmNjYmJiYWUxM2Q4ZTkxN2U1MjJhN2U5YzYzMDdhMzExIGxlZ2FjeS10cnVuaworMzAwMDQgOWZiOGFhZGU4ODdmODU1Y2ZkMjViMTcwOGM4MDcwMzEwNzllYzgzZSBsZWdhY3ktdHJ1bmsKKzMwMDA1IDE4ZGNmODBlNmY4ZGVkZDRlMWMwOWZjZGFmNWUyNjcyNTgxYjJjOWIgbGVnYWN5LXRydW5rCiszMDAwNiAzOGZlNWViNmFjMjU2NzIxMjYxNzllZTJlMDI3OTNmOWU0NWU1OTIzIGxlZ2FjeS10cnVuaworMzAwMDcgMzk4MWNmMmE1NzMwNTM0ZDg5NmRjNzRkYzNmYmJiY2U1OTM5ZDA1OCBsZWdhY3ktdHJ1bmsKKzMwMDA4IGI1ODM3YjhmM2IyYzRjMmI2YjAwNWVmZjI3NjdjYTEzZjUxZWJiYzQgbGVnYWN5LXRydW5rCiszMDAwOSA4ZTE1NjdkYmNiYTg5M2ZlNjZiM2MwOTMwNzlkM2Q2OWNjYzcwYzBhIGxlZ2FjeS10cnVuaworMzAwMTAgNjE3N2ExM2U0YzE0NWE0MGQxOGYyY2JhMGVmZTRjNGVmZmVkMGFhZCBsZWdhY3ktdHJ1bmsKKzMwMDExIGQ2ZDUyMjJiN2U1NTUyYTkyZTdhMjBhYjU0M2FhZGU3OTI3ZjY3ZmMgbGVnYWN5LXRydW5rCiszMDAxMiBjYTZmYTY5NzExYmI1ZTBlMmRmOTY5ZjNmMDJhN2E5ZDgyOTcyMzc5IGxlZ2FjeS10cnVuaworMzAwMTMgNjFlMmI4Y2VmZDg2NzAwYmYxZGNmMWQwNzNiZTAzY2U3YmJmM2FlMCBsZWdhY3ktdHJ1bmsKKzMwMDE0IDZlYTc4NjUyODM5NWFiNzQ0MDc5N2E5MjNkNDdiMmIwYTNkN2FjNjkgbGVnYWN5LXRydW5rCiszMDAxNSA5OTdmYTAyMjQ0YmFjMmMyYWQwNjVhNjlkODNiMWIyNzY3MzZlYmQyIGxlZ2FjeS10cnVuaworMzAwMTYgMjYyMTk2ODMxOWYwMzQ0YTJmYzE3OWUyZTcyOThhYzQ2NTUxZmI5ZiBsZWdhY3ktdHJ1bmsKKzMwMDE3IDBlNmUzOWZiOWNkNzMyYWQ2ZGQwMWM4ODQwMjFkNDAyNWU2NWQzZjkgbGVnYWN5LXRydW5rCiszMDAxOCA5MTBmYjY2YzNiODFjYmNlM2I2NThjYTJmYjJiNjE5NTFiZDk4YTVkIGxlZ2FjeS10cnVuaworMzAwMTkgZTQyNzMyZTI4OWI5YTQxNmRjYzY2NmY0ZDNlNmQ5YzhhMzRjN2Q4NCBsZWdhY3ktdHJ1bmsKKzMwMDIwIDU4NDQwZDBiOWI0ZWE2YzdjNmJjYzgyZDlkMmVjYjU1MmFlMjlmMDYgbGVnYWN5LXRydW5rCiszMDAyMSA5NzU0ODJkNWViNWNlNzk0ZDUyMTNlNDgyOGI5NTA2OGU1N2VmM2E4IGxlZ2FjeS10cnVuaworMzAwMjIgOTk3MGQ3Nzk4MGEwZTJmYjkzOWM5MDk5YWI3MzQwNTQzOWJjNDQ0MyBsZWdhY3ktdHJ1bmsKKzMwMDIzIDhhNzVjNjZiZmExNGRlNGJhNzJhY2M1YTA0NDllZjlmYTQ2MDBjMjggbGVnYWN5LXRydW5rCiszMDAyNCAwOWM3ZWQxYjdhODczOWQ4Mjc5NjcyMjhjNjAxNGRkNzhkYzc2MTQzIGxlZ2FjeS10cnVuaworMzAwMjUgNjg3YjRiMTY1MjY4Yzc1OWZkNDc3ZTI4OGViODU1MGJiNjIyMGE5NiByZWxlYXNlMjItbWFpbnQKKzMwMDI2IDY3OTEyZDgzNzk5ZjczYzBjZTk1NzE2NGI5MDFkMjRkMDZkYmQ4YWIgbGVnYWN5LXRydW5rCiszMDAyNyA4YjM2MDFhNjIzMzYzMzJkZTI0YjA2YjM0YmZmNDU3ZTk1ODY2ZTI3IGxlZ2FjeS10cnVuaworMzAwMjggYjljOTEyZTJjM2MwMDYzZGM5MGI1NDU1NDA1MWJjY2FhODgxODRkNyBsZWdhY3ktdHJ1bmsKKzMwMDI5IDBjOTk1Y2QwNzAyNjc3MTk2MDNmYTcxM2Q5NWNlYTQ5M2NmZjJjMWYgbGVnYWN5LXRydW5rCiszMDAzMCA0ZTZhYzJmZTY4ZjBiY2E4ZTNmMTkwNjA5YWE4ZjAzNzkxZjg2YjdkIHJlbGVhc2UyMi1tYWludAorMzAwMzEgYzg4NGE2YzQ3ZTA2MGU4YjFmZjAzMDM5ZWU1NGI5NTYwY2RmMzljMiByZWxlYXNlMjItbWFpbnQKKzMwMDMyIDRiZWJmMWExOTMxOWM0MTVjZTkzYzNkZDdjMDE0MzhlNDBmNmQ3N2UgbGVnYWN5LXRydW5rCiszMDAzMyBhMzZkZmZkNzUzMDA5YjhlZjNlZTkyYTNkODEyNzBhNTk3ZTJmODg2IHJlbGVhc2UyMi1tYWludAorMzAwMzQgMjQyYWQ1YzU5MmNjMmFmZGE4NWRhMGJjMjkzYTFlYWQ0MmI5ZGI4NCBsZWdhY3ktdHJ1bmsKKzMwMDM1IDRiZTYyZGM5YTNlN2Q3NDkyNjBjNDMxNDhjNzI3ZGY1NzVkMDc4YWUgbGVnYWN5LXRydW5rCiszMDAzNiA3MDFiNzk3YmJkYzhmYjQ0NjBkMGUzNTMyY2MwYzE0MzEyMmE1NjY5IGxlZ2FjeS10cnVuaworMzAwMzcgMGRiZjk4ZWUxMThlMjY5NTNiNjE3MWM0ZGRiOWE4NGJhNDVlYmM4OSBsZWdhY3ktdHJ1bmsKKzMwMDM4IDhmNzQzZWJlNmM2NjMyYjAwYTNjYjJlZjEzN2NjNjc0MmZkZWQ2YTggcmVsZWFzZTIyLW1haW50CiszMDAzOSAxMmJjNGEzZTQ1YWY4YTI0YzFiOGVjZmViODZkYjg1ZGQ3MmI3MzQ4IGxlZ2FjeS10cnVuaworMzAwNDAgODUxYzYyOTIwNWQyZjNmYWUzMmE4NDQ0OTg5MzQ4ZDZlMDk4OTg1OSBsZWdhY3ktdHJ1bmsKKzMwMDQxIGI1NjZiZThiZmMyM2M3OTAyNjRkZTBjOGJkMjUxZDM1NzFkYTQ0YzYgbGVnYWN5LXRydW5rCiszMDA0MiBmYTY1Zjk0ZGM0Y2RiYzc0NTkwZjU4MDg3NTAxYmQ0MWJkMWUxNTRjIGxlZ2FjeS10cnVuaworMzAwNDMgYTlmNmMwMDZhYTQ1ODg2OTA5NmM0MzhmNTMxZmVmY2NlNGI1ODhkNyBsZWdhY3ktdHJ1bmsKKzMwMDQ0IDcxNWUyODg4ZjM3N2ZiOTJlZDIxM2ZjNDU5Y2FkYmNhZDA2NDg3NjggcmVsZWFzZTIyLW1haW50CiszMDA0NSAwNjAxYTkwNTU4ZmRiYWYzOWVjYmQ3ODZlYWI2OWY4NmI1MTU2MzQ5IGxlZ2FjeS10cnVuaworMzAwNDYgMzQyYzM0YzQzOGEyNjA4YTE1NTQ2NWZhMmFlNDgzNjA0YzZlYTVlOCByZWxlYXNlMjItbWFpbnQKKzMwMDQ3IDgyYjlmNWM3ZDAxYTE0NjYyN2ZlZTY4ZjRhYmE0ZjVhYmFkZjgxYTUgbGVnYWN5LXRydW5rCiszMDA0OCAyYWJhMWFjNDc0NGM5Njc5Mzk1NTJmZWU4ZGJkYjU3ZjAwMjVkZTgwIGxlZ2FjeS10cnVuaworMzAwNDkgY2I4Y2ZhZGY3NWEyN2JmOGI1M2UzYTA2OGIwNzk4YTFlOTU4YTU5MiBsZWdhY3ktdHJ1bmsKKzMwMDUwIGQ3NTVkNDI5MmYzZmZiMTJmYjgxN2M3MDNlMjI2N2ZjNzlkNmUzNTAgbGVnYWN5LXRydW5rCiszMDA1MSAyOWU4ZGU1OTc1NmE0NWI2MmVkZmNiODgyNjhiNTBkOTEwZjdhYzQ5IHJlbGVhc2UyMi1tYWludAorMzAwNTIgMWQ5ZTMwYzA1Y2RlNGNiMjY5YWMxNWRkZWM2MTdhZGUwNGJkN2I3ZSBsZWdhY3ktdHJ1bmsKKzMwMDUzIDkzYjVjYTk0MjNlYjI3OTViZDdhMzE4MTMzMTEzYjk1N2ZkNzBhNTIgbGVnYWN5LXRydW5rCiszMDA1NCA3YWU5YzM2Y2JjYjY2YTcxOWJlY2E4MDM0OTBmMGI4MjcyZWEzZmUyIGxlZ2FjeS10cnVuaworMzAwNTUgNDA1MjM5YTdlMGQ4YmM5NDg4YzdiODZiYzFhYzJiZWIxNjU1MWE1YyBsZWdhY3ktdHJ1bmsKKzMwMDU2IDhjYTgwODQzYTY3MTYxNzU5OTcyOTBlOTZhZGEwMmNhZDk3NDMxY2IgbGVnYWN5LXRydW5rCiszMDA1NyBlODk0MGQ0Y2Q4Y2FlN2FlMzZmY2ZiZmZlNjY0NzNlM2RlYThiMTZlIGxlZ2FjeS10cnVuaworMzAwNTggZDRiNzY4MTdjOWU2M2M2NTEwM2Y3YzQzM2U5MzcxNTczZmFiMjYwYSBsZWdhY3ktdHJ1bmsKKzMwMDU5IDkyMDZiMDA0ZjE1MmM0M2Q1YTFlZGZjMmQyM2IyZjBmNTRhYmFkNTQgbGVnYWN5LXRydW5rCiszMDA2MCA5NTI2ODdlYTljYjEyZDk4ZDY2MDFlNGM4MDJjZDczNWM0YTE2OWE3IGxlZ2FjeS10cnVuaworMzAwNjEgODk5MWY3ODgxN2M3OTAwNGEwYzgxNzNmYzk0Y2IxNjJkNjMxOWMxOSBsZWdhY3ktdHJ1bmsKKzMwMDYyIDRlOTRhYTA3Mjc2ODYyMDU1ZjQ1NDliMmI5NjZjOWQxNmU4NjRkMGYgbGVnYWN5LXRydW5rCiszMDA2MyAzZjQzODNhMDRiNjI1NGIzNmEyZTMzMDJmNzdkOGJkNzc5MDM1M2VlIGxlZ2FjeS10cnVuaworMzAwNjQgZTY0NDI1YmI5NGQ4OWEzMjBjOTAzYmI3ZjExMjkyNzczM2IyZWQ1YiBsZWdhY3ktdHJ1bmsKKzMwMDY1IDgxMDMyZTk3YmEzY2EyMDAyMWQ1YWY5Nzk5ZjFiMTAyMGQ5MjgxMDggbGVnYWN5LXRydW5rCiszMDA2NiBmNWI0ZTE3NzQ5NjE3YTk2MDEwNTc3ODUyNDFjZWU0YTZiZDgwMDdjIGxlZ2FjeS10cnVuaworMzAwNjcgZjlkNTE2YzYxZTdiOTMyY2Y2NWY3ZWE4ZjcwNTk4MTQ5NTE5NTEzOCBsZWdhY3ktdHJ1bmsKKzMwMDY4IDYxNWEyNWE2ZWI1YmFhYzY2NmZiNTQ2NTRiYTUzZTliYTUwNTFjMjcgbGVnYWN5LXRydW5rCiszMDA2OSBjMjM0ZjQ4ZGUxMzhmNDk5YjBkNGQ5ZjM3NGNlNzUxYmUzYjRhNTI5IGxlZ2FjeS10cnVuaworMzAwNzAgMGM2NDZiYWVlYzU4MjMyNWJiMWQ5NDBkM2Q2MDkxMGIxNmVkMzI1ZCBsZWdhY3ktdHJ1bmsKKzMwMDcxIDIxMTAzODUwNWU1NmM0ZWI5NzNhYmI1NmEwMmUxMjNhOWIzNzcyYzQgbGVnYWN5LXRydW5rCiszMDA3MiAwNTYzODc3Njc4MzI1NTk4MDFhYjUwMzk4ZmNkYjNhYTViMzM1NmNhIGxlZ2FjeS10cnVuaworMzAwNzMgYzM1NzY4ZDc4ODNlNDg0N2U5ZWM2MGJkOWIwYjYyZjI4YTI1YTIzNCBsZWdhY3ktdHJ1bmsKKzMwMDc0IDMwODRiZjhiZDExYzBhYTYwYTNmMzYxOGYxMDRjOGMwN2RlZDI0MzQgbGVnYWN5LXRydW5rCiszMDA3NSA3ZGRlYTRkZmE1MTlkM2FkOGU2MDJhOTg0YjFlZjczMjI3NTcxYTY2IGxlZ2FjeS10cnVuaworMzAwNzYgNTZkYmQ5MDc5YTEzZWQ2ZWY3NDFhZjU2NDdhYmIyMzQ2MjAxYWRiMCBsZWdhY3ktdHJ1bmsKKzMwMDc3IGVjZWE4NDEwMTc4ZTA2NWIxMjc0MGZlMzE3MWY2MWY3ZDVkMmYxMDkgbGVnYWN5LXRydW5rCiszMDA3OCA3NWJmYzI0ZmQ3NDg1MGQxN2U5NTIzMjVhYjU1ZGQ1Y2M3NTZhNjAwIGxlZ2FjeS10cnVuaworMzAwNzkgY2MwNWMyYzg2NjBlMGM2OGFjY2JjNTZiZDhlNjg4NzJkZTU1ZjE2OSBsZWdhY3ktdHJ1bmsKKzMwMDgwIGMxNjNlZDE3ZjhiYTM4NWFhODdjMDM0OTJjNTRjZDdhMGU1MTZkY2YgbGVnYWN5LXRydW5rCiszMDA4MSBiZmIyNjY0Y2RiMWJlODdjMDFkNjFkZDQ4YjA4NTIyMWFjZjYxMDM3IGxlZ2FjeS10cnVuaworMzAwODIgYWY1MTE5YmUyMjFmNDM5OTkzZjNjZDQyYmM4MmMzNWVhODJlMTQxOSBsZWdhY3ktdHJ1bmsKKzMwMDgzIDM3OGNlMDIwZDllNjhjNjc1ZjQ2NmUxMmViMmE0ZTU1Y2QwZTI4YmIgbGVnYWN5LXRydW5rCiszMDA4NCA5ZGIzOTZiY2U0ZTc1ZjIwNWI3NDMwMmVmMzhkZmM0MTY0MWExNjIzIGxlZ2FjeS10cnVuaworMzAwODUgZTM5ZTc0YWVhMmZiOGE3MzQxNGQ5ZmRjNWQ2NGUwZTdlNTljZTgxYiBsZWdhY3ktdHJ1bmsKKzMwMDg2IDE0ZjUzYjZkN2Y1OGIyMDRiNmRjMzhiZTU4ZjliZTNiM2E2NTRjM2IgbGVnYWN5LXRydW5rCiszMDA4NyAyZmFiMGI2NDg4YjUxMGFjOTM2MzI5OGY1MmNlMTA1MDU0YjI1YTM1IGxlZ2FjeS10cnVuaworMzAwODggNzRkMWFkNjFmODQzY2IyZmU0ZThlMmJjMDM4Y2I4NzVmZjZiNGEzYSBsZWdhY3ktdHJ1bmsKKzMwMDg5IDg3NzE5OTNjOWFhY2FkYTQwZmI4MTIyYzQwMzU5MmM2OGE1MmRiNGMgbGVnYWN5LXRydW5rCiszMDA5MCA5N2Y4MzU0MmY4ZWVmYWFlMWRmNDFiYzRlOTU3OWRiOTFkNGFmMDEzIGxlZ2FjeS10cnVuaworMzAwOTEgMjhiYzJkM2FmOTFkYjY4OWQ0MDgwMTgyNzVjOGY2MjMyNTY2YjgxNCBsZWdhY3ktdHJ1bmsKKzMwMDkyIDJjN2JkYmI1MGU3NjI4Y2E1MDMxM2RiZDFhMDVkZWVkMDA4ZjI5MGEgbGVnYWN5LXRydW5rCiszMDA5MyAwMjc4NTI0OGUwMGE2ZjQ0YzdmMTU2YjBlZDI5ODExZDJjMTQyMTdkIGxlZ2FjeS10cnVuaworMzAwOTQgMjBlMDc1NWYzNTU0MWQ2OWVlNjQ5NzcxOTEzZTk2MDdiMDkxOGNlMSBsZWdhY3ktdHJ1bmsKKzMwMDk1IDNiZTRmNWQzNzdkOGIyYzU0YTc2NTg5OGJlODU0YjhiMDhjOTVkODQgbGVnYWN5LXRydW5rCiszMDA5NiA5ZTc1MWVlZTgxZjUwNGU0NTI1ZTY0NGI4MjAxNGE4NDk1MWViYWM3IGxlZ2FjeS10cnVuaworMzAwOTcgYjYyOTk4Zjk4OTczZTMzMWQ4MWFjYWI3MTJmNDEzZTIxZjEyZjIxNiBsZWdhY3ktdHJ1bmsKKzMwMDk4IGNiOTNkOTI4N2I0ZWFlYzRkZjMwZTg2NGY0MTI5Mzk5MGEzZDA0ZTggbGVnYWN5LXRydW5rCiszMDA5OSA3ZDE5Mjg3NWExMmY3OTkwMmFiZjM2MTllMGJkYWU4NTY1ZDI2NGRhIGxlZ2FjeS10cnVuaworMzAxMDAgMTk1MDdhMWQwMjU0OGViYTkyZDRkOWE0Y2UxZTkzYjc0MTBiYzZiYSBsZWdhY3ktdHJ1bmsKKzMwMTAxIDgwOTZkY2M3YWY2NWJiYjYxMDNjZjZkZjQ3YjE2MmRlMWMwNjRjZjUgbGVnYWN5LXRydW5rCiszMDEwMiA2MzdiMTBiNTJlMDJlNjdmMzQzNjFkY2IwYWExNDBjYWY3OTQwMjZlIGxlZ2FjeS10cnVuaworMzAxMDMgYmExNTc4YmU1NzA2ZWQ1ZTk1ZGIxNzM0YzhhYzAwYzhiN2U1ZGU1NiBsZWdhY3ktdHJ1bmsKKzMwMTA0IGU0MWVlMmI4ZTczZGVhY2VmNmNmMWU2MTc3NGFlNjViNmUzMjJhOGIgbGVnYWN5LXRydW5rCiszMDEwNSA3YmFiZGFlYTdkMTlkN2YzYTFiMmExZDhiOWUyOTUxMGUwMjUzZWI3IGxlZ2FjeS10cnVuaworMzAxMDYgOGRmYzBmYzRjMTRiNTEwMDEwMjIwYjUxZWY4MjQ1YjU5YTcxNmI0YiBsZWdhY3ktdHJ1bmsKKzMwMTA3IDk4MTY0NjY2ZDJhODk3MmE0NzVmMjkzMWUzN2I2MmE5YWEwNDU2YmMgbGVnYWN5LXRydW5rCiszMDEwOCA1OWRkOTI1N2JjMDMxNmY2YWM3NjVjNWUyMDgxYTRjZTI3NzllOGYyIGxlZ2FjeS10cnVuaworMzAxMDkgZDdkNTI1ZTMwY2MwMjBmNjE1OGRmMDVmYmRlODdhZjZjNWRmY2RkMSBsZWdhY3ktdHJ1bmsKKzMwMTEwIDg5MGFhOTNkZDljMzhlNzMyNjhjNDE4MzQ5ZDViYmU2MDIxZGZhZTAgbGVnYWN5LXRydW5rCiszMDExMSBiMGJmMzYwNDI0NGZkNTljZDNkY2M3YTc2ZGIwMzA4ZDkzZWI3MmQ4IGxlZ2FjeS10cnVuaworMzAxMTIgZmQ0NTVkZjU1YjEzNWJiNTMzZGI4YjhhMTZkMmExZTExYjVkNzMzZSBsZWdhY3ktdHJ1bmsKKzMwMTEzIDk2YjhjOGFlNzI2MmVkZDY4ZWU4ZmI4YmUzOGM4MDM3MjJlZTAyZDcgbGVnYWN5LXRydW5rCiszMDExNCBjNjliOGU2MWU2OTViZDFlODlkOGY0MDQ0M2U5NGY4YmM5NzYzMjFiIGxlZ2FjeS10cnVuaworMzAxMTUgMzQyOTk1NTcyNGIyNzkyMmQ2YTdhZWU1NGVhMmJiODQ3NWIwMTk1MyBsZWdhY3ktdHJ1bmsKKzMwMTE2IGZkNmJlODdlNWMyOTdlNThiYjcwM2Y0MDYwMzBlOThhZjgxMThkNmMgbGVnYWN5LXRydW5rCiszMDExNyAwZmY0NzM2MmJiODExNGEwNDZlNzkwYTQwZjg5ODI1MGQxZTlmMzhkIGxlZ2FjeS10cnVuaworMzAxMTggYmI2ZWEwNzkwOTQ3OWE2M2Q2NzNjNzBjY2JlNDg5YzI3OTQzODU1NyBsZWdhY3ktdHJ1bmsKKzMwMTE5IGU3ODNjZGZhMGI0MTlhMWI0MDRiMGVmYmEzOGE1YTZlZTZiMmYwOTcgbGVnYWN5LXRydW5rCiszMDEyMCBkMjMwMjMzOWE4YWQ3ODQyMzRjYzY1YTZlODlhODgxMGQ1MzdiOWE5IGxlZ2FjeS10cnVuaworMzAxMjEgMDJiYTQ2NjNjYWQyMTI3YTYwYWU2YjBhMmZmOGZhMmM2ZDI2OGY0MCBsZWdhY3ktdHJ1bmsKKzMwMTIyIDQxMTg4ZTM4OWM2MTQ0ZjJjMWU5Mzg4YTMwOTNlZGE4YzQ5YzU2MmYgbGVnYWN5LXRydW5rCiszMDEyMyBkMTc2Y2JmZDM3NjU2MDBlYWEzOTU3NzU5ZjQ1MTgxZDlmNmViYjFhIGxlZ2FjeS10cnVuaworMzAxMjQgOTI2N2RmZmZmMzJkMzFkM2UxNjcwZmIyY2Q1NmZlOWY5YmFmMWY3NyBsZWdhY3ktdHJ1bmsKKzMwMTI1IGY4ODNlZDdiOTNjODY4ZGIxMmVlNzQ0NDM4ODVmYzEzODVmNTRmNGIgbGVnYWN5LXRydW5rCiszMDEyNiA2ZWZhODIxNmRiNmE4OTI4MjdhNjFmYWQ2MjczYjc4ZTIzNDAwYzFhIGxlZ2FjeS10cnVuaworMzAxMjcgN2IxZDEwN2U2M2FlNmY3NmE1ZTUyMDA2ZTdhMzhmZDcxNTM4YTRlYyBsZWdhY3ktdHJ1bmsKKzMwMTI4IGNhYTI0NWFmNzc4NjQxOGQ1M2FmODA1YjQzMDYwMDkwNWQ3YmVlYWYgbGVnYWN5LXRydW5rCiszMDEyOSA2ZTJjMmYxMjIxZTUzNTI4YjZjYmM5ZTQ0N2NiMWEwZmRkMGRiYjZkIGxlZ2FjeS10cnVuaworMzAxMzAgNDgzNGY4MzY4MDM2Mzg2ZDdjZjJkMDNhNDhmZjkxNDZjOWM5MWVmZSBsZWdhY3ktdHJ1bmsKKzMwMTMxIGE4MDAwMTVlN2NmMmE2ZGIwOGI2NzYzM2Y2ZDBjMDIwNTE3Yzg5NzcgbGVnYWN5LXRydW5rCiszMDEzMiA2MWIzZDE3OWY4NjhlNzQxNTY5YzI5NjRhYzFjMWI2YTQwNDEwMWMwIGxlZ2FjeS10cnVuaworMzAxMzMgZjM1NmZjYjcwZWFlNTVkMzczNzFmZWZmMDU5MjMzM2RhNzhmOTc3OSBsZWdhY3ktdHJ1bmsKKzMwMTM0IGI3YmYzOGQ0NDU5OGY1NTg5YzA5NDNlODVhYmQ3YmNiZWY0Yzc1NDcgbGVnYWN5LXRydW5rCiszMDEzNSA2M2Q3YjVlMzk2ZmI4OWQxZWU4Y2ZkNzY4NzYwZGFiNjcxMmRkYmQ4IGxlZ2FjeS10cnVuaworMzAxMzYgNDBmOGI2NDhlNzY1OWI3OTE1NDA3MWQyNjQwMmEyMzNkNzk3NzJmYiBsZWdhY3ktdHJ1bmsKKzMwMTM3IGQ5OWUzOGJiNmRjZDM1YmJhYWJlMjdhMWI3ZWY0ZjNhY2JmMjZiZmQgbGVnYWN5LXRydW5rCiszMDEzOCBmODM4YmM5MDU2Y2MzNzlkNTljMmIyZmZlZTVjMDMwZTEzMTg2MDYxIGxlZ2FjeS10cnVuaworMzAxMzkgYjEyZTMyNmI0ZWEyNDdmNGM1NzUxN2M4MTY3YTEwZjFkYmIyODcyYiBsZWdhY3ktdHJ1bmsKKzMwMTQwIGU4ZGMxYTBkNmY0ZDRkMTBhNDBkZjc1NGI5NWQyOTAyYWE0MmQ3Y2QgbGVnYWN5LXRydW5rCiszMDE0MSAzMzhlMDI1ZmRlOGI1MTZlOGVjOWJiZWQ1MjIyZGVkMzlhNWU5ZTkxIGxlZ2FjeS10cnVuaworMzAxNDIgZmUyZDQyMjM4NWIxZmVlNjZmOTk4N2FiNmUwYTk5MjIxYmMwMTZlNSBsZWdhY3ktdHJ1bmsKKzMwMTQzIGNiMDZiZmM4ODc3YjI0OWIyY2Y5ZmZkOTU2ZWM2M2QwZmUxZmVlOWUgbGVnYWN5LXRydW5rCiszMDE0NCA5OGQxMTg1NWI0NmNjZWVmODM0M2JkN2Y0ZjE1NGIzMzI5ODY4YjIzIGxlZ2FjeS10cnVuaworMzAxNDUgZjc2NzE3NzA3YTZkN2EwOTJjMmY0MDJiMGZlYzZiYmIxOTIzYTZkZSBsZWdhY3ktdHJ1bmsKKzMwMTQ2IDM3M2QwYThlZDZiZTY0YTVkMWYxZmRmNGVlMDllYzg3YTNhMjk0NWIgbGVnYWN5LXRydW5rCiszMDE0NyBlZDI4Yjk3NTJmOGQyYWJmOGRlNTRmNzc0YjJkYWJmYzVhMDM3ZDBlIGxlZ2FjeS10cnVuaworMzAxNDggMTMxMjI5Nzg4N2EzZjdlMDZlYTliM2NlOGNkMWRjN2EyNWQ0N2MzOCBsZWdhY3ktdHJ1bmsKKzMwMTQ5IDMwMGY5MjZmMmIzZWI1OGZkNDlmMDQxZTNjNGQyM2IwMWE3OTZiYWYgbGVnYWN5LXRydW5rCiszMDE1MCA4ZGQyNWE2ZjU5MTM5MDRjN2RhODMyMzZmN2ExNzRkNmU0NDRmOWIxIGxlZ2FjeS10cnVuaworMzAxNTEgNWI3MTVjYWQzNGQwODI1ZGMxODMxOGVhMWRiZDRlOTFmZjc3MDhkNyBsZWdhY3ktdHJ1bmsKKzMwMTUyIGM3ZWM4YWQwMjM0ZmFmNGQyMTk3NTE1MDdiNTUzZGQxZjFlZWJjMzYgbGVnYWN5LXRydW5rCiszMDE1MyBiYzkwNTZkODQ3ZWY3ZDQ2ZmFlNTk1NGRiYTVlZjdlMjk2MGI0ZmRjIGxlZ2FjeS10cnVuaworMzAxNTQgZjdkOGQ0OWU4ZjVkZTI3Y2IzYzFlNzkwMTYyOGMwZTY2ZTUyMzgxOSBsZWdhY3ktdHJ1bmsKKzMwMTU1IDQzYjU0YzJiYzRlNjAyMDVkZTA1YWFkNzcwMjUzMGYwYjJkNDg4Y2MgbGVnYWN5LXRydW5rCiszMDE1NiA3OGQ4NzJjZDA2NGMyZWRjNDkwY2Q5YzY5MGE4N2M1NWUzNDNmMjkwIGxlZ2FjeS10cnVuaworMzAxNTcgYWI1MGEyMWI4N2FlYTEyZGYxODExYTBhZTRmNWFiZDgxMWUzNDVkYSByZWxlYXNlMjItbWFpbnQKKzMwMTU4IGJjNjY2MmJhM2E3NzU1YmJhNTY4ZmEyMmNmZmRkM2UxN2UyOWFiYWYgcmVsZWFzZTIyLW1haW50CiszMDE1OSA1NzkxMDE5YjZlNGU4ZTJiZWVhYzRkNGZhYzE2ZWIwNTRkOWM4YmRlIGxlZ2FjeS10cnVuaworMzAxNjAgYzExYTZlMWNlZGUwZGUxOGUxNWM0MWJhOTY1ZDRmOWIyNjEzZGYyZiBsZWdhY3ktdHJ1bmsKKzMwMTYxIDYwNTllNDFiZDc3YTNlNTc5M2E4NWM3NjM0Y2RmY2Y1N2Q3OTZhOGIgbGVnYWN5LXRydW5rCiszMDE2MiBhOTk3NGE0OGE0ZDZjZjlhY2MwZjUyMmEzYTc0YmY2NWIzNmRkYWIyIGxlZ2FjeS10cnVuaworMzAxNjMgYTIwY2I1YWJhYjZiNzhmNWE1Y2NmYjNhY2FkOGUwNzIxNjQ3ODc0MyBsZWdhY3ktdHJ1bmsKKzMwMTY0IGFkM2Y2NmU3ZmIxMDQyMDEzYTk0MWExZjBmZWM0NWZmMmU0MGY3NDMgbGVnYWN5LXRydW5rCiszMDE2NSA2YjM5MDU0OGM2OTgwMDQwYjgwMjFmZGNlMGUzZTg0ODFiMzAwN2RkIGxlZ2FjeS10cnVuaworMzAxNjYgYzc0YjY5YWI0NzQyYWI4NDg0NzRmY2Y1NzhlY2RjYTkyNjgwYjNlZSBsZWdhY3ktdHJ1bmsKKzMwMTY3IDIzMThmNGJiMGJjNWNkODViZWU3NGRiMGUyNWMyMGU4MjFiY2RiMjggbGVnYWN5LXRydW5rCiszMDE2OCAyZTBkYzllMDgyMjI4OTZhMzQyNTg0MzBhOWFjMDAzZTJlODE1ZWI5IGxlZ2FjeS10cnVuaworMzAxNjkgMzZjZDI2NDFlODI2NzRjZmM0MmE5ZTA4N2IwZjBhODYzN2NhMTUyYyBsZWdhY3ktdHJ1bmsKKzMwMTcwIDQxNzNlNDNlZjQwY2NlNjZmNjNkZGRhY2YxZGMwNzIzZDA4NWVmNGIgbGVnYWN5LXRydW5rCiszMDE3MSA5NzUzMzNkNDBiZjgzMmE0MDJhMDZiZmE5NjYyYTY2YWJhMDk4MDE1IGxlZ2FjeS10cnVuaworMzAxNzIgYzQyODZhNmFiMDBjOWUzNWI5YzZhYzI0Y2VhOTdhMmRhZGE4MjFhZCBsZWdhY3ktdHJ1bmsKKzMwMTczIDQ5Y2VlZTAyNmQ2NjNlMjA4OWE0NDdkMWEyNDMzMzA5YzU0OTU5NTEgbGVnYWN5LXRydW5rCiszMDE3NCA1MWU3NDMyMWFkM2Q2MDczZGIzOWY0MDA5N2NmYmMyODcyZjZlODk4IGxlZ2FjeS10cnVuaworMzAxNzUgYTIyM2UyNTU0MTkwMWNlNzc2OGM2Y2VmNWVkNDMxOWM5NjlhNzIxOCBsZWdhY3ktdHJ1bmsKKzMwMTc2IGFmNjYwY2FiMWNiZTkxMWRlOWNlZmVkYTBiNDdkZDkxYTc2OTJjNDAgbGVnYWN5LXRydW5rCiszMDE3NyBlNDA0YmJlZmYwODM3MWIzNWNjNjFmNTUxN2ZiNjQ2NGZlZjFiMzQzIGxlZ2FjeS10cnVuaworMzAxNzggM2VkNDdiMDc4NTA4MTlkMWRhZjUzM2M3ZmJlMTYwMDk2ZDQ1NDYzZiBsZWdhY3ktdHJ1bmsKKzMwMTc5IDQ1YWIzMTEyN2JmOTIyYjk5YTU0MjllOWNkODE2MzE1NjQ5MzRkMTggbGVnYWN5LXRydW5rCiszMDE4MCAxMDFmZTMyZjU2ZmZlYTU0MDhhODAyOGY3MjJkZDI2NTNkNTcxZmQ5IGxlZ2FjeS10cnVuaworMzAxODEgYmZlMzg5NjFjYTQyYzg4NmQ1MWQzNzE4YWY5OGU5NTExYzEwMTc1MyBsZWdhY3ktdHJ1bmsKKzMwMTgyIGY5MWQ3OGUxOWM4NjZmOWU2OGRhNWVkOGZhZmQxYjE4OTIxZmU0OTYgbGVnYWN5LXRydW5rCiszMDE4MyAyZWQzNGYwMWM4MWNhMTJhN2UzZjcwMGIxYzNhODkwMDc5YzQ2MjA2IGxlZ2FjeS10cnVuaworMzAxODQgZDY0MjE0Njk0MDgzYmViZDRkMjg0ZGM5YzBkN2JkNGI2MzU1ZmIyOCBsZWdhY3ktdHJ1bmsKKzMwMTg1IDFlMTcwYTk1YjY0ZmRlZmI4ZmUxNjFhOWIwMTA0MWJmYTE4NDViYTggbGVnYWN5LXRydW5rCiszMDE4NiAzNTkzZjJiOTFkN2Q2MDVlNWM0NTgwOGU4MzQ4ZTgyYzFiNmRiNTkyIGxlZ2FjeS10cnVuaworMzAxODcgODkzMTdkOTNmNjM5NzM5ZTE2NjJjNjJmY2YyNjQ0YmU0NzUxZDE2ZCBsZWdhY3ktdHJ1bmsKKzMwMTg4IGQzNDhiMTdjZWFhZDY5MzYzZjk4NmNjMGY2MjdhYWI3MThkMmNiZDUgbGVnYWN5LXRydW5rCiszMDE4OSBkOTM5YWRiY2E3NzRmMDBkYjlmNGIyMGM4M2QxMWEyNDQ3NWM3MjViIGxlZ2FjeS10cnVuaworMzAxOTAgMDRiM2E5ZjZiZTQxZjRlNDJlNzAxNDhiMjU3MDkzMGNmY2M0YTZiMyBsZWdhY3ktdHJ1bmsKKzMwMTkxIGVhYjZkN2M4MDM0MTkxNzlkMjAyMTkwYjljYTNiOWE2NGMzYTg2YmIgbGVnYWN5LXRydW5rCiszMDE5MiAyZjUyM2FlOTBlMDYwYzg3YjNlNTZhMmIzNDI0YzRmNjJjMmMzMDkwIGxlZ2FjeS10cnVuaworMzAxOTMgZTgyMzI2OTk2NDgxYjIxMDQwMzhhNjA5MzY0MmIwMzg2ZTBhZjc3ZSBsZWdhY3ktdHJ1bmsKKzMwMTk0IGEzNjAwYzRlY2M4YmYyYzIyYWJlNDljNmMxNDUwMzM5ZGU3NGE0NzQgbGVnYWN5LXRydW5rCiszMDE5NSBmNTVmNWUxZTMwYmM5MjU3NTk3YTMwNDUwOTliZjEzY2FiNTA1NjZmIGxlZ2FjeS10cnVuaworMzAxOTYgZGZjYzIwNTdhNzU1YWU3YzZmOWRjYjgwODBkZWFlM2RlMDUxZTVkMiBsZWdhY3ktdHJ1bmsKKzMwMTk3IDUzODQ0N2M5ZDU0M2RiMmI0MDUzNGYyYTRiZDUzOTU3NTc0ZjJhOTUgbGVnYWN5LXRydW5rCiszMDE5OCBhMTJlMTcyNzg1MGFmOWIwNjE1ZmNkOWZkNDRjZDM1NDAyNzkxNTM3IGxlZ2FjeS10cnVuaworMzAxOTkgY2ZkNWE2ODI5MzdlMGM0MzY0OTg0YWU2YWI1ODM1YWJmMGIzZWI0ZSBsZWdhY3ktdHJ1bmsKKzMwMjAwIDkyNGM0ZjIyYmFjNzk0OTFjYzlhOWY4MjE2YWQxYTc3YzY5Y2QyYjMgbGVnYWN5LXRydW5rCiszMDIwMSBhNTQzNjNlYTY5NDYwNTY5MWEzMzA3NGIyYTFhZTkxMTdjNDlkOGRkIGxlZ2FjeS10cnVuaworMzAyMDIgOTAxZTQ3Y2M4Y2FjYzgyMGYzNTUyM2U1YzE2MTBkZTk1ZWY3MDBkNyBsZWdhY3ktdHJ1bmsKKzMwMjAzIDk2NmI4Mjc5ZDFmYWQ4MTQ0YmUzN2IxYzk1MDM1N2ZjODhiZGUxMmIgbGVnYWN5LXRydW5rCiszMDIwNCA0OTY3NzkwNDcyZGJkM2VjNWZhOGJjMDJlMDJlYThjZDM3OWY1N2YzIGxlZ2FjeS10cnVuaworMzAyMDUgYzdjMmIyMjJiYjhhZThkNGM2ZmY1YzI4MjRjOGYyYzQzMGZhZWEzZSBsZWdhY3ktdHJ1bmsKKzMwMjA2IDVmYmE1MWYzNzI5YjJkZGY1ODVmM2E5OTJlOTEyYjg0YWI5ODhhNmEgbGVnYWN5LXRydW5rCiszMDIwNyA0MWJkMzdiZWYzYzc3M2JlYjUyM2RjMDk3N2U3MTJkN2I4YzM5NzM2IGxlZ2FjeS10cnVuaworMzAyMDggOWI0YzAxNGIzYTIxOGU3NmE5ZDk3NjBjN2Q0NTVmNDQ2YTdmYTQ0NiBsZWdhY3ktdHJ1bmsKKzMwMjA5IDU3M2U0ODJlZGVjMWE1ODM2OTE2YzJlYzFhMGJlOTQ0YzVkMWM4ZWQgbGVnYWN5LXRydW5rCiszMDIxMCBhMDNjZTVkOGYyOTc1NGY3NmM2ZmQ2OGM2NWUzMmMzODI2MTU5NWMyIGxlZ2FjeS10cnVuaworMzAyMTEgNzA5ZjkwNTQxNTg1MjE4NzQ4MDdmNmE3ZTAxMmViYjkxMjE3MmQ1MyBsZWdhY3ktdHJ1bmsKKzMwMjEyIGQ4ZmRhNDgxOGJmZDVmNTZhYTUyMDU3YmViZWY1MDE2MGFlZGIyOTAgbGVnYWN5LXRydW5rCiszMDIxMyAxNmFmZjcwNzdlNGJlZTRhYzA5NzBhYWFkMTQ0YzU4NDAxMjFhZWQ5IGxlZ2FjeS10cnVuaworMzAyMTQgMmI0NmQ3MjkyZjI3NzQzMGNmZmMzOGM0YjM2YWE5NjlkNWVjYzVjYyBsZWdhY3ktdHJ1bmsKKzMwMjE1IDZmMWY4NDIwM2VjZjBiMWE1NjU1MDdiZGQwM2M4ZGE4NWFiY2FjZWUgbGVnYWN5LXRydW5rCiszMDIxNiA3OGU4NTdlOWRkNDc2OTA1NWY0ODgxZDNlOGZiOTkxMzFjNDg2ZDI2IGxlZ2FjeS10cnVuaworMzAyMTcgYzY1ZThjYjkxZjRjMzZkOWRmOGI5ZGZkN2FhOGM3YjRmNjNiNmI4ZiBsZWdhY3ktdHJ1bmsKKzMwMjE4IDcyY2YwODlkNjM0YTE5ODQzNDkxMjczMzYyMjVjMWJiZjRlOTkwMDkgbGVnYWN5LXRydW5rCiszMDIxOSBjYWRmY2U2NmQ4NjE5YTZiYzM1NzlkNmEyMmFmOGI3YTU2YzI0NmY4IGxlZ2FjeS10cnVuaworMzAyMjAgMmYzZDZiNzlmMTFiZDNjNGRiZDEwY2FkY2IzODFmYmQ0NWYxYzk5MyBsZWdhY3ktdHJ1bmsKKzMwMjIxIGQwNTIxMTI3MzFhOGUyNWJmMTcyMWIxZjUxYzFmZTY5YTg1OTQ4ZjAgbGVnYWN5LXRydW5rCiszMDIyMiBiMGFjZjVkZTM0MjFjZTBmNmNhOTA0MWJkNzhlMmNjYWMzOTNlNTE4IGxlZ2FjeS10cnVuaworMzAyMjMgYzFjOGJkYzRlM2RiZGNmMGI5YmQwMjJhOGY4NDg4OGZlNTExYjA3ZCBsZWdhY3ktdHJ1bmsKKzMwMjI0IDA2NTg2NDA0ZWM0Y2RhMzAyMGQyNjllNWM3YjIxM2U3OWY3NjZlYjggbGVnYWN5LXRydW5rCiszMDIyNSAzMzY5Njg4MjFkY2JjZTFhYThkMDZkMDFkNGQ4Nzc3ZGE1OWUxMjRmIGxlZ2FjeS10cnVuaworMzAyMjYgZGI5ZmNhMTQ1MDU4NGI1M2EzZTkwMDA1OTNkZDk0MjcxMDlkODQyOSBsZWdhY3ktdHJ1bmsKKzMwMjI3IDYwYjM4OWE0ZGMwODU1MDFhZTQ1NTY3M2JmOTE5ZjM2NTFlY2FjZjIgbGVnYWN5LXRydW5rCiszMDIyOCBiOWU0NWI4MjhhZTExYTBlNTVjZWJlZGU2YjUwMmE5YjViOGQzNGE1IGxlZ2FjeS10cnVuaworMzAyMjkgNjVhY2VjOWNiZTY5MjI3ZTUyZmQ2YzM3MDA1NTA4YzYxNTU0YWRjNiBsZWdhY3ktdHJ1bmsKKzMwMjMwIDE2Mjg4YjA1NGZjM2YxMzMwZGI3OGE3N2IyNTU3ZThjNTMwZTMzMDggcmVsZWFzZTIyLW1haW50CiszMDIzMSA3YzE1YmY3NzI2YjI0ZTUyMjUwMGU0NmUwMDJlY2UyNTdjYWU2NjA4IGxlZ2FjeS10cnVuaworMzAyMzIgOGMzZWY1MjRmYWEwNjdmZGI4NjM3YWMxNTk1YzExZjI1NWZhYzliZSBsZWdhY3ktdHJ1bmsKKzMwMjMzIDk1YmMwYzA1MjAzNDUwODdkMzA1MjEzODM2YzI0OGE0ZjRlNDQyNTQgbGVnYWN5LXRydW5rCiszMDIzNCBjY2YwYjAyN2I1ODU2ZDU3YmYzNmI4ZDM2MTdlMzFkMzkwNjdkM2I0IGxlZ2FjeS10cnVuaworMzAyMzUgN2ZkMWJmMjBhMGMwZTljYmE1MTdmMmZjZDM2OTBkYjA1YWJjMGQwYiBsZWdhY3ktdHJ1bmsKKzMwMjM2IGMxMjcyZjNmMjhmNTE3OWIyMzNkM2M2ZTM3YzAwMzY0ZTYxNmNjMWMgbGVnYWN5LXRydW5rCiszMDIzNyBlY2MyN2ExYzMzY2E3OTg5NTJlMTJkZWMzMzgwMGMyYTFlZmRjYjM0IGxlZ2FjeS10cnVuaworMzAyMzggNjIwMDk2ZmQ1NTY0YzM2ZDAzNzY2M2VkYmY5NzRkY2I0MGM5ODVlMCBsZWdhY3ktdHJ1bmsKKzMwMjM5IGM2MDljZDQ5MDZmYjRhZWRhYzNjYWE1NDRhMjgyNzEyMmZlMjNlMDggbGVnYWN5LXRydW5rCiszMDI0MCA0OWQwMjJiNWZkNjQwNTE5MGY5NTY2ZjZhYmM1YzZkZDZlYTMzYzgxIGxlZ2FjeS10cnVuaworMzAyNDEgNGM5ZmU0OTA1ZThmYTA2YjI3ZDU5MjU3ZTc5M2Q2NGZlMjIwNDhjNSBsZWdhY3ktdHJ1bmsKKzMwMjQyIDZiMzFiMjZlNDE4ZGRjODQ1OWUyNmU0YTc3NWU4YWE5ODUwZDBiNWYgbGVnYWN5LXRydW5rCiszMDI0MyAwOTU0NDBiOTc1YTFjODcwNThmZjk3M2Y2MTZkOTU2YTQ3MTFkMzliIGxlZ2FjeS10cnVuaworMzAyNDQgYWYyMTdjY2EzYmZjN2MxMzQ4ZDg0ODY5YmQzMjkxOGQ0MjU4NGZkMyBsZWdhY3ktdHJ1bmsKKzMwMjQ1IGFkMjYzZDI2ODI1NTQ4MDI0ODA5ZTg2MmMxYzJkMWQ4MTNiY2E1MjcgbGVnYWN5LXRydW5rCiszMDI0NiAzNDZhMDcyNzBlODdkZDY0OWM4YjNjMjA4YTYyMDliYTNmYWZjMDhiIGxlZ2FjeS10cnVuaworMzAyNDcgYWVmM2EwM2E3OWYxMGUxNzdhZTBkN2NiNTZkMWVjNjRhZjVlMzA1NyBsZWdhY3ktdHJ1bmsKKzMwMjQ4IDhhYTc1NmU1YWNjYzg1ZmNjYzliMTU2ZmE3ZDhjNzRhZjI0NjdkY2YgbGVnYWN5LXRydW5rCiszMDI0OSBmYzdmZGVjM2ZiODYzZDJjOTEyOTNiYWFkNjM5ODJhZTBiY2NlNDAxIGxlZ2FjeS10cnVuaworMzAyNTAgMjQwZmRiZWY4YzYwYzM2YTBiODhhOGQxNjRkZmI2Y2I3YjlhZGRiNyBsZWdhY3ktdHJ1bmsKKzMwMjUxIDBmMTQwNWFjZTQzN2U5MjZjOWI4NDUyMmVmMmRhZDU4Y2MyYjIxOTYgbGVnYWN5LXRydW5rCiszMDI1MiA4OWRkNzRmN2FlMzI2YzBlZTMyZTQyMDRiZWJhZTBhM2ExYTc5NmI3IGxlZ2FjeS10cnVuaworMzAyNTMgZDE2MDgxNmI5MWU1ODNkMjMwZGJjOGQwNDg0YzUyNDU5ZWQ5NjgzOSBsZWdhY3ktdHJ1bmsKKzMwMjU0IGY4NWNiMDg5NTUzNWRlNzY4YTYwZDliY2VlMmYzMzc5OGY5NGIxZDAgbGVnYWN5LXRydW5rCiszMDI1NSBiYjRkZjAwMDBiNmQxYWM0ZTc3MWYzN2E1NTEyMTU1YTYxOWQyYjMxIGxlZ2FjeS10cnVuaworMzAyNTYgNDRkNzQ2OGQ2ZGI2ZTIzMzkxOGJlZGY4MDkwZjE4OTgzMzdkMjYwNSBsZWdhY3ktdHJ1bmsKKzMwMjU3IDkyYTQwNjExNWU3Y2QzNDE2NjZiYTI1MDY1ZjBlZTIyZDg4YmVjNGMgcmVsZWFzZTIyLW1haW50CiszMDI1OCA1ZWZlNmIwYWMwZTZiY2MyMGE1NjBhYjhmMzAwZGY1MGIyNTgyN2FjIHJlbGVhc2UyMi1tYWludAorMzAyNTkgYzU1ZTZlNjAxYjk5OGQ3MmI4OWE1NmI4MGRkYjNiZWJlOTYzZTYxOCBsZWdhY3ktdHJ1bmsKKzMwMjYwIGJjN2Y4OTEzZjVjYTg2NmNhZThhMjFkYmY3MWYyZjljYWVlNGY0NzEgcmVsZWFzZTIyLW1haW50CiszMDI2MSAzMDAxMzQyOWJiODQ1OWUzYjgwNjQwNzM2OWJjYmIxNDAwZWIzZmJmIGxlZ2FjeS10cnVuaworMzAyNjIgOGUyNzUxMmNjMTdkZGNiN2Q0N2I3MTdjNWJjNzRhM2Y2NjMxZGQ5ZCByZWxlYXNlMjItbWFpbnQKKzMwMjYzIDBiMzRmNTFlYWI0ZWE0ODdiYTFjMDFjZTk5NDEzNDZkNmE3MGVlYTEgbGVnYWN5LXRydW5rCiszMDI2NCA3YzUxOTZmMDE1MjRiOWU5N2MxODIyNjhjNjZkNmE3ZWU5NzQ3MTMwIGxlZ2FjeS10cnVuaworMzAyNjUgMmYyODQzNjA2MGM0NTY1NGJiODU4MWZjYzA3NTE0Y2EyYzU5ZTBhNSBsZWdhY3ktdHJ1bmsKKzMwMjY2IDE0MzkyMmE0MGZhYzZmN2RkNTAwNDU0NTg2OTUwYTg1ZTJjMzE5ZGQgbGVnYWN5LXRydW5rCiszMDI2NyBmYmM4NWFhYTI2MGJhMWFjNGQ1ODlhN2E1NGIyNjk3NTUxNWI3MDA4IGxlZ2FjeS10cnVuaworMzAyNjggODljOWM2YzQwNWVmOGM0MTVkZTg3ZjAxMzY2MDZkMDQ1NjBiNjZlOSBsZWdhY3ktdHJ1bmsKKzMwMjY5IDU4YmQ3MTAwZWUxNTdmMTdiODVkOTQ0ODAxYWMxZWMyZmU1NGZjYzEgbGVnYWN5LXRydW5rCiszMDI3MCA4MTZiOGRkY2NmZTE2NTE2MTRkMTY0MDE4OTk5Y2Q2ODNhYzkzOTFlIGxlZ2FjeS10cnVuaworMzAyNzEgZGI5Mzg4ZjM3ZDhjNDcxZjFmZDU0ZDhjMDc2Nzc2ODYxOTVhZjc4NyBsZWdhY3ktdHJ1bmsKKzMwMjcyIDA2ODY4Mzc2YWEyOGQzOWZjNmU5ZWEyODlkOTE1NTZlOTc5N2FjYjQgbGVnYWN5LXRydW5rCiszMDI3MyBhMmQ0MDJlN2NkOGFkZDMyYTc4YmZhZDI1YjIyYWU3M2RmNGU4ZmQ4IGxlZ2FjeS10cnVuaworMzAyNzQgY2Y3MzY2M2NmZjU5ZWE0MTYzZDhmMTI5NTEzM2NlODgwNjIxZGNlMCBsZWdhY3ktdHJ1bmsKKzMwMjc1IDQ3ZTdjNzBlODQxZmUzMzAyN2M0ZWI5YTk2YzY5ZGVkYWRjYzZmZjUgbGVnYWN5LXRydW5rCiszMDI3NiAwZjA2MTU2YzhlMDM3NjZmOWZmNGZkMTg5NzU4ODdlZWNmM2UxZDNiIGxlZ2FjeS10cnVuaworMzAyNzcgNTA3YWE5NmExMjhmZmRhZDk0MTdiYTU0ZTllZWViYzVlMjU0YWVjYSBsZWdhY3ktdHJ1bmsKKzMwMjc4IGIyYjQ3OTcwNTJjNmZkY2RjYmZlZmM2MWI5NDMzYTk0Y2MzMjFiNWEgbGVnYWN5LXRydW5rCiszMDI3OSAyOTk2MjFlY2E5YWQ1MzEyZWU0MmYwM2FmNzUyOTU3ZmZkMDE1NmVkIGxlZ2FjeS10cnVuaworMzAyODAgMzBhNzczODk0MzgxOGI3YWQ1MDIyNmMwYmIwZGU4YTY4NDcxMjZjOCBsZWdhY3ktdHJ1bmsKKzMwMjgxIDgyZDhiNWM2YWM0YTdmYzJlZTdkOWVlMGM4MjkwOTY2YTBhNDJlZDMgbGVnYWN5LXRydW5rCiszMDI4MiAyNTg1ZDQ1OTZkOTAzYjBhMTA4MGU4YWI1YTQzZjY2NmQ0MzgxNGM1IGxlZ2FjeS10cnVuaworMzAyODMgZmZjMWU5ZTVmZjlhNzI0N2NlYTZiNTY3YTUyYmY4OWFhZWE1ODM3NSBsZWdhY3ktdHJ1bmsKKzMwMjg0IGIyMDRiNGE3MmI0ZWU4YmFmMDQ1MGM5YTViMzJmYjM4YzE0Y2IwOWEgbGVnYWN5LXRydW5rCiszMDI4NSAyMzE5ZDEzZDU0ZjU3NTE1NTA1OGY1NzEwMzIwNzMwY2MyNzU5ODA0IGxlZ2FjeS10cnVuaworMzAyODYgN2Y4MWQxNmUyYzVkN2FhMzg0Y2VjMTlmMWUzNzI0OGQyYTEyMDBiMiBsZWdhY3ktdHJ1bmsKKzMwMjg3IDg1OGVlMTE3MTRhNjMyNDI3ZTMzYzg3YmM2ZjgxYTI5MTZhNTgwZjkgbGVnYWN5LXRydW5rCiszMDI4OCA5ZDBlNjJjOWExMjhkN2ExNDcxNjJiM2I1NjdhNmZjMWE2ZTZjMmI4IGxlZ2FjeS10cnVuaworMzAyODkgZWRmMzA0ZTYwY2M2MWVkOWI2ZTQxMWU5MjhkYjgwOTViNTExZTkxYyBsZWdhY3ktdHJ1bmsKKzMwMjkwIDE3ODg0NDk4ODgxMmYyZGYwNjI4YzIzZjIwNWJiZGM2OWQ1M2M5NWIgbGVnYWN5LXRydW5rCiszMDI5MSAyMjUxMTk1YTNkZDFmY2U3MTRmNTFiZjhkYmUxN2M1OGFlZDczMGJmIGxlZ2FjeS10cnVuaworMzAyOTIgN2M4YWYxOTc5ZTc4ODViNzc4OTk1ZTczODQ1MDI5NGQ3N2QyNmU2NyBsZWdhY3ktdHJ1bmsKKzMwMjkzIDhlY2NmYWUwNGJiNGY2ZmU2NjE5NDFjODI3ODRiNTgxYzIwNzg4NmQgbGVnYWN5LXRydW5rCiszMDI5NCA2OTMyNzk0ODE3YzJkMWRmMTE2YTk0ZWY2MzM3YzI0ZjNkNTY0MTdjIGxlZ2FjeS10cnVuaworMzAyOTUgMGM4NWE5NDdlMmMwMDBkNjY3YjkzNGIzMmIyYmNmMGVhMjQ2NGVhNiByZWxlYXNlMjItbWFpbnQKKzMwMjk2IGUwOTRhMDNhODBmZjQ1ZWY2Y2YzNGMxYzJjOGI1OGNiZjhmMDc2MDMgbGVnYWN5LXRydW5rCiszMDI5NyA1N2EwMGRiNzMxZmNmMWYyY2NkMzRkODI3MjE3YmE5MTRhMTcxNWUzIGxlZ2FjeS10cnVuaworMzAyOTggNmJiYmU2N2QxZWFmNzE3MzE5ZGY3ZWVjNmI5Nzk2YmJlZDg5N2FjYyBsZWdhY3ktdHJ1bmsKKzMwMjk5IGQ2ZjQ4M2ZjOWUwMmUzZGVkN2JmZThmZGQwM2E4MmM4MGQzMDI3YzYgbGVnYWN5LXRydW5rCiszMDMwMCBmZWE5MmU3ZWM2N2FlMzUwNTU5MDk3MjYwOWQxZGZiNjgwNTEzZTI0IGxlZ2FjeS10cnVuaworMzAzMDEgMmUyMTk1ZmU2YzI4YTc5NGZmZTljNTZkMzZlYzFjNzUxOTMzMzBlZCBsZWdhY3ktdHJ1bmsKKzMwMzAyIGZiMzZkOWI1MGRmNThjODcxZjk0YWVhMWI5YjdmY2IyYThkOTY0MjcgbGVnYWN5LXRydW5rCiszMDMwMyBlMTUzOTYxZjk2MWYyZjZiYTcxNzc3ZDIyMTAyOTQ1NmFlMTVkOTVhIGxlZ2FjeS10cnVuaworMzAzMDQgM2MzMmE5NGIwYjE3NjI2MjlhYjliMWJjMGFmMmRhNmRkODg4MTg0OCBsZWdhY3ktdHJ1bmsKKzMwMzA1IDEzZDU5ZGJmYjhkNDRhZTY0YmJhZGViYjQwMTE2NWJiNWQyYTQ0NGUgbGVnYWN5LXRydW5rCiszMDMwNiA3ZDdhMDFiZmNhYWZiODY5NzVkYmU2N2QwZDUyODkwOGQyOWY5NDk0IGxlZ2FjeS10cnVuaworMzAzMDcgZjY0Yzk2OTIyNzA4YTUxMDRiZmIwNmU4ZGU3YTRmNmRlNzM5YjNhYSBsZWdhY3ktdHJ1bmsKKzMwMzA4IGY0YjFiZWVkNjQwNTJkMGIzYzUxYjc2ZDI1YWQ4NTRhMzM2OTFkNGQgbGVnYWN5LXRydW5rCiszMDMwOSA5ZTQwOTEwN2FlZWFhMWYzYzMxYjgzMGFhN2ZiYmE0Nzg4NzY4ZDIzIGxlZ2FjeS10cnVuaworMzAzMTAgYmIxNTQ2YjQ2MDFiZDBkMmZiZTE3ZDExMDc3OGJhMWM3MTc3NDU0ZiBsZWdhY3ktdHJ1bmsKKzMwMzExIDU4ZDc1YTNjOGFmZWE3ZWE0ZGYzMTMxNzczZjdlNDYxZjNiYjA3YzEgbGVnYWN5LXRydW5rCiszMDMxMiAzZTFiZDEzN2QzYzJiODhhNTgyNGUxZjVkYTYzYjcxM2IyMWFkYjJkIGxlZ2FjeS10cnVuaworMzAzMTMgNWNjZGU4YTE1MjZhNDBkOTJkYzU0YzhkYjc5YjY3ZWMzZjEwOTljNSBsZWdhY3ktdHJ1bmsKKzMwMzE0IDc5YzlhMDdiMjg5NjU5Mjg2ZjE0MzUxZmRhMzgyNDE4OWRhOTZhODQgbGVnYWN5LXRydW5rCiszMDMxNSAxNWJiNjc2ZjJlOGMwZjJjMmY4ZDg0OGU1NzEyM2UxMzFkYmQ1YWE1IGxlZ2FjeS10cnVuaworMzAzMTYgMDAwNzVmMWVmODY2YmY0NGFjN2Q4MjQwZjRlMWI5MGNiOTUzYzMzNiBsZWdhY3ktdHJ1bmsKKzMwMzE3IGM0NGQ5OTRiMzllNTQyNjk2MjQ0YzU4NmVhYWFkMDVhYmJhMWFhN2MgbGVnYWN5LXRydW5rCiszMDMxOCA3ODY3OThlODY0NjljYjgwOGMzMDA4Y2M1ZTQ2MTlkYTEzNzJlZjhhIGxlZ2FjeS10cnVuaworMzAzMTkgMzdlZjAxNzY0NmM0NjE4YTNmYzBiY2FmYTAwMzI4Y2RlYjk2MWJjNCBsZWdhY3ktdHJ1bmsKKzMwMzIwIGQyYjAzNjI4MTQwMzEzYjg4YTFkMDIzNDZmNjY5MTMzNDI0MDUyZTkgbGVnYWN5LXRydW5rCiszMDMyMSBhOWI1MjJlNTQ1Y2Y2ZjA4M2UwOWNmYjc5YTljODVkZWQ2MTJlYmMwIGxlZ2FjeS10cnVuaworMzAzMjIgNTQxOWVmNGE0ZDcwYjBjNWZkYTI5YTg0OGFlMWFkNzIxZGE5ODczYiBsZWdhY3ktdHJ1bmsKKzMwMzIzIDY3M2RjYjliNTFjZTJiZGYxMmRkYTM1MTJlZGMyMmJmNGZjYjllMDMgbGVnYWN5LXRydW5rCiszMDMyNCBmYzUxNjlhYTQxY2VmODViOTY5N2MzOTQyZmRmOTU1MzI1YjY1NTAxIGxlZ2FjeS10cnVuaworMzAzMjUgZWE3NTkxOWM3NjlkYjY1ZGIyZjQ5YjU5OGUwNDMxN2Y1ZTI2YTg4MyBsZWdhY3ktdHJ1bmsKKzMwMzI2IDg2NWM1OWI1YmZkNzEyODI4ZjM0Y2FkNWEzNzdkOGNlMDA5M2Y1ODUgbGVnYWN5LXRydW5rCiszMDMyNyBiY2E1NDA5Yjc2ZWNmYjkzNDJkMjRiYWExMjMyMWQ5NWM4NjllYjM5IGxlZ2FjeS10cnVuaworMzAzMjggODAzMzAyNTczMTUyN2JlNGFiMzQwOTg4ZThhZmIyZDY5YTQwZDY2MCBsZWdhY3ktdHJ1bmsKKzMwMzI5IDVmNzRlMDQwMDEyZDY5ZWY4MzVlMmM2NmVmNWE3YTczYTY2Y2ZkNTAgbGVnYWN5LXRydW5rCiszMDMzMCAzZWU1NGZiZmU4NDZkODllZGYwZTVhZGQzYTllNGIwMTkyNTllZWY3IGxlZ2FjeS10cnVuaworMzAzMzEgMmNlOGNmMjg0YjE1MGMwODE4MTQ1NDIwOGY0NWY1MjNjYmJhYTQ2MCBsZWdhY3ktdHJ1bmsKKzMwMzMyIGRhYTQ1OGIyODM4NTFiZmQzYzk0ZmVlMTlhOTQ4YjFlYTc0OTRhYzMgbGVnYWN5LXRydW5rCiszMDMzMyA2NjA5OTZhMjhlZThjNGU2YjE2Njk1ZjFlMTc5YThkYzM2NTdiNGI4IGxlZ2FjeS10cnVuaworMzAzMzQgNzA0ODQyZjA1YjA5MWU1OGQzZTkzZjRiZTM1NjlmYjA5MWYxOWVjZSBsZWdhY3ktdHJ1bmsKKzMwMzM1IDZjZjYzNzc2N2NlMjRkMmMzYTgxMWNjZDZiMjBmMDYxODI4MGEzZmUgbGVnYWN5LXRydW5rCiszMDMzNiBiNGNhNWI5YmE5MzM1NTI4YWE2OGJjY2FhYzA5ODI5ZDQxMTE2Y2E0IGxlZ2FjeS10cnVuaworMzAzMzcgMjc1MmU5YWFlOTdiZWQ2MDFkYWU4ZmNmY2ViNWI1MTYxNTI1MjFkNCBsZWdhY3ktdHJ1bmsKKzMwMzM4IDNjZjVhNzg1MmEyZjNmZDRmMGIwYTZkZWUyNjZlZjk5MDY5YmI5OGIgbGVnYWN5LXRydW5rCiszMDMzOSAzYTEzMDA0NzI5MDE2M2EwNTk2NmQzYWRhYzI0MDE0MTc3OTNmYWI5IGxlZ2FjeS10cnVuaworMzAzNDAgMDM2OTE5OWEyNjVhZjg0MWZmYTE2MTRhYjMxNTkxOTdlZjVkNGJjOCBsZWdhY3ktdHJ1bmsKKzMwMzQxIDAyOWVkYTkzN2JiNDc0M2YwZTE3MTYwM2RhNjMwZmE0OGU3ZjI1ODYgbGVnYWN5LXRydW5rCiszMDM0MiA4M2Y4YmQ2YWU4MTE3MjIwZDJiMTJmZDA3ODcxNjM5Y2I1ZGRmYjFhIGxlZ2FjeS10cnVuaworMzAzNDMgYWFjYThhM2IyM2NkMDVkMjIyODMwOThmMDE5NzZmNmNmZjMxZWM1MCBsZWdhY3ktdHJ1bmsKKzMwMzQ0IGE2ZjBiYzZlOGIzOGRlNWY3NzA2MzRjNDA0OWJlNTYxYmFmZTJlNjYgbGVnYWN5LXRydW5rCiszMDM0NSBmMzA1YTU3OGIzOTQwZWM4M2NiODZmNzdlYmViZjc5Zjk3YjhlZWE0IGxlZ2FjeS10cnVuaworMzAzNDYgNDhhZmI4ZTE0MjBiYjg2ZjljOWFlZmQ4ZmFjNGFlY2JhOGJiYTk0YiBsZWdhY3ktdHJ1bmsKKzMwMzQ3IDQyMjc5YTAyMTI1ZTI4NDYxZWE0NzRkNjA2NGZjMDA0NDMwYWFjZDggbGVnYWN5LXRydW5rCiszMDM0OCAyM2E5ODBlYjhhZmJiMzVhMjkzM2UyZThiZWUzNmRiYTY5MjUxZDQ3IGxlZ2FjeS10cnVuaworMzAzNDkgMWVhYjI2ZjcxNzE5OWQ3Y2EyODM2OGQ3YWM0ZmEyNDQzOGM2NmMwZSBsZWdhY3ktdHJ1bmsKKzMwMzUwIGY0ODNlZmNhMjI0YzZjZmRiMzU3ZTBmNTdkNDhjZTc1NjMzZmEzMmMgbGVnYWN5LXRydW5rCiszMDM1MSAzZDEwNjBkYjgwNjI4YmM1ZTk0OWZkMzczZTI4NmNlOWUwYzM3NGUyIGxlZ2FjeS10cnVuaworMzAzNTIgMjZkZjYwMTNiMzAzZDRhYmRlNGRmMzFkNWZhMGVlNjRkNTA2YTc5MCBsZWdhY3ktdHJ1bmsKKzMwMzUzIGQxNzdkZDBjYThmNzBlNDFiZTAxYzdmZmEwZTMzNDVkOWU4NTAwOTQgbGVnYWN5LXRydW5rCiszMDM1NCAzNTQ2OGFkNTAyMmE3NzQ1NjkxZDUwOTUyM2VjNDE5OWU2ZTM4MDFmIGxlZ2FjeS10cnVuaworMzAzNTUgMTIwYWZiYTJkYmY2NDA3Y2Q3N2I1NmMxNWQyOTY4NWU4MTE3MzkwZSBsZWdhY3ktdHJ1bmsKKzMwMzU2IGMyNDk2MDdlZjUzNWYxMTI4NGY3ZDMwNTc3YmZlMThhNDUyMDliMjggbGVnYWN5LXRydW5rCiszMDM1NyAzMWIxYjA0NjAzMDNkODVkNzQ3MGRhODAxOWYyNDdhN2E2NWRlY2JiIGxlZ2FjeS10cnVuaworMzAzNTggOTA5MzRlNGM5MWJhNGJjZDI4NjZlMmVmZjdiM2E2NGU4ZWMyZDdmZiBsZWdhY3ktdHJ1bmsKKzMwMzU5IDZlYzM4NmI0NWUxZmFlZTE2OWNiYmVkN2EzMzI0NmQ4MmI2MWU4YjcgbGVnYWN5LXRydW5rCiszMDM2MCBkMjE5OWZjMTRkMDYyNGFkODBkODYxMjUzM2ZhMzRlMWFjN2M1ODFiIGxlZ2FjeS10cnVuaworMzAzNjEgMjEzM2NmMzU1YmZjOGEyYzkyNTA5NzdhYjAyM2FjMGUxMGU1MjVhNSBsZWdhY3ktdHJ1bmsKKzMwMzYyIGYwZjlhY2NhNDE2NGFiZDc4YjVlMWQ2MDRhNmQ4ZTI5YzNjNjYzMTcgbGVnYWN5LXRydW5rCiszMDM2MyA1NGFhY2I4N2JlZGEzMDM3ZGZhYmZlM2JmM2U2N2Y5MDI4MDA2ZmVkIGxlZ2FjeS10cnVuaworMzAzNjQgYjYyNWYxYmY3MmY5MGQwNGM0OTUwOTNiNDFkMzljNGUzNjhlMTE1ZSBsZWdhY3ktdHJ1bmsKKzMwMzY1IDQ1ZmMwZTRiNTA4NDUyMjc1YjQ2YmFkOTJiMmU1ZTcxYzI0NWE0OGUgbGVnYWN5LXRydW5rCiszMDM2NiBiOWMxNTk3ZDgxMDJlNDVjYTQ1ZDhiM2U2ZWI2ZjIyNmJmZjQ0YmE5IGxlZ2FjeS10cnVuaworMzAzNjcgMTI3NTNlN2IxNWY3ZTg2YmUxNDM1NmU1NGQxMDljZjM2NTc5NzFkNiBsZWdhY3ktdHJ1bmsKKzMwMzY4IDgwNTNiYzBiOGJiNTgxYjRiODY3MGNhNWZkY2M2YjY2NDg3ZjFiNTEgbGVnYWN5LXRydW5rCiszMDM2OSBiYzIwZThiNDZkZTBkMGFlN2FlZjI2OGU0NDg4ZDc4NmUyNjJmYzBiIGxlZ2FjeS10cnVuaworMzAzNzAgOTU1MTBmMGEwNjI0NTg0YjQxYmI3Yjc1ZmFmODg2NWM4OWZjZjUxYyBsZWdhY3ktdHJ1bmsKKzMwMzcxIDJhOTViN2Q1ZmJkZTBkNGNlNzA3NDMxMzAyYjc2NjMxYjBkMDAwYjEgbGVnYWN5LXRydW5rCiszMDM3MiAxNDA2NDRmMjJmNjQ4Y2RmMGIzZDNjYzRjYjVkMGU5OGQ5ZTYwOWZjIGxlZ2FjeS10cnVuaworMzAzNzMgMGEwYzc1OWVkMTY3OTlhYTJlMDZjZTlmM2M5OGJmODRhNDFiMmQ0YiBsZWdhY3ktdHJ1bmsKKzMwMzc0IDRjYmRiYjBiZGQ1ZDRhZWMxMDI1YTZhNjg4NjZjODQ1OWFiZWEzMDIgbGVnYWN5LXRydW5rCiszMDM3NSAzYmMyYWY0MWMwMTY1NzlhOGUxYzJhZjRjM2E3YTQxYzcyMzU5MzRiIGxlZ2FjeS10cnVuaworMzAzNzYgMDk2ZDEyZGIyNjM2NTIzY2U1Yjc1NWZkYzNjYzM4YzViNzA4ZmM3NyBsZWdhY3ktdHJ1bmsKKzMwMzc3IGE0NDc0ZTE0ZmFjOTdiNGE2MjI5YTA1Zjc3NjIzMDM5YWZlMTIxZTggbGVnYWN5LXRydW5rCiszMDM3OCAxOGQ0ZjcxZjVlZDZhOTM2YTRiMDczYjg0NmQwZGM5MDY5MmRjYjRiIGxlZ2FjeS10cnVuaworMzAzNzkgZDVhZDI5YTQ3M2UxZDk5MGEzMDExNDEwZGRiZWUzYzYyYjNlZjBlMSBsZWdhY3ktdHJ1bmsKKzMwMzgwIDJjNTJhYmVlN2QxMDYyYzUwMGVjMjhjYWRhNzE1MDQxYTJmNGQ1MmMgbGVnYWN5LXRydW5rCiszMDM4MSA5N2M1YWE4MmIzZTljMTUyNGJiYWZkZDc0OWNhNjVhNzJhMzIyNjIwIGxlZ2FjeS10cnVuaworMzAzODIgNDBkYjc4MTU5MTc3NjIwZGUxM2FlOWJlMDFkYmQ3MTYwZTczYzE4YSBsZWdhY3ktdHJ1bmsKKzMwMzgzIDdlYTc2MzczNDFkMGExNDdhNGMzNDZlYjU4YjViM2QyNjMzYTFhMmIgbGVnYWN5LXRydW5rCiszMDM4NCA0N2U2YWI4ZDU3NTFkNGEwN2Y4YzY2Njk4NTZkODg5ZjNjMzExOTM4IGxlZ2FjeS10cnVuaworMzAzODUgY2NiYTNiNjZkNjc2NjYxZjZlMTYzZTMxMDk5MThkZWQwNGEzOTczYSBsZWdhY3ktdHJ1bmsKKzMwMzg2IGJjYWNhMzZhNTgzY2M0NTkzYjVkZWQ5MWI3N2YxMGI5Mzk0ZjkwOWUgbGVnYWN5LXRydW5rCiszMDM4NyAwNzQ5MTk3MTUzNTVhYzg2ZTM3M2M4MGE1MzNkN2VlN2Y1YjcxYTk3IGxlZ2FjeS10cnVuaworMzAzODggNjg4ZmE2Y2RhYjk0M2M1ODAwNDA1MjY5NzhkZTgzNjNhNjVkYzJiMiBsZWdhY3ktdHJ1bmsKKzMwMzg5IDg5OTlkNzJjMmU2Y2RlYjFhNjAwZmQxNWQxOTdjYWFkYzQ3YmFhMjEgbGVnYWN5LXRydW5rCiszMDM5MCAwMDMyZGJlZWMzOTFjMTU3MDIyZjhkNGU0N2Y3ZGRmM2Q3ZTRiNTFmIGxlZ2FjeS10cnVuaworMzAzOTEgN2NkYTM2MDM1NjdmOTY3YWFiMmRhNzFlM2FjNmI1OTljNDRlMDIwZCBsZWdhY3ktdHJ1bmsKKzMwMzkyIGMyNWQ3ZDJjMTcxMDQyNmM3NjYxNjkzMzM0MWYxYTMwMTkzNjk1MDMgbGVnYWN5LXRydW5rCiszMDM5MyBmYmNmM2M0YjQyNzJlMjE1ZmMyZDc1ZjVkMzE1N2JkMmE4MzI3ZTE1IGxlZ2FjeS10cnVuaworMzAzOTQgZjUxNjFjYTRkZDY4MGQ0ZmJlMzNhMTlhYWM3OWI2MzQwYTY1NDI3ZSBsZWdhY3ktdHJ1bmsKKzMwMzk1IGE0M2EyYjE4YjVjNDhiZmU2Y2Q3YWUzYTIxMWEwZDJhMTIzZGM4YTAgbGVnYWN5LXRydW5rCiszMDM5NiAwNTAxNmJiOTE3NjZmZTlkMWIxOWIxNmI3MTc1MjdjMjg2OGJjM2ZmIGxlZ2FjeS10cnVuaworMzAzOTcgYjkzODQ1MjI2ZGI2OGQ4MzJjMmFhMTg0NmQ1YTMxNWI5YzVjZDkxMCBsZWdhY3ktdHJ1bmsKKzMwMzk4IDQyZjE5YTZjNjU3MDFjZGYzNjUwMGU0NzBlOWIwZWUwZGIxNGEyNGEgbGVnYWN5LXRydW5rCiszMDM5OSBmYWY5NjVkNzM4MjRiZjI0NGViNjRmMWZlYTAyOGVlMjY5YTBiZDdjIGxlZ2FjeS10cnVuaworMzA0MDAgOWQwNTgwYWNiNDVmZjQ1ZWE3NTcxZDQzMzBjOWZhNmNiZTYxNTdlMCBsZWdhY3ktdHJ1bmsKKzMwNDAxIGRiZmMzZWY3ZDAwMzUwZTA5ZTk1NTNlOTU2NDk3MzY0YjViM2RlOTAgbGVnYWN5LXRydW5rCiszMDQwMiAzMWFkZWE0OWE1NThmNzI4Y2U5MzM5OWJlZmVhOGY1YmNlYjIxNjFlIGxlZ2FjeS10cnVuaworMzA0MDMgOTY0Njg4NzBkMjA2ZDk0ZjFhOGE0ZDljZDA0MzAxODE5NGE3ZDI4MCBsZWdhY3ktdHJ1bmsKKzMwNDA0IDNkYjE2NWYwMjEwNzQzNjNiMTYwOGFhYWIxNWMzNTcwNGVmNjZhNjYgbGVnYWN5LXRydW5rCiszMDQwNSAzM2RjZjRmZDBmZjkwM2ZiZGZlMzA3NmNlODRiODJiZDhiNjk1NGQ4IGxlZ2FjeS10cnVuaworMzA0MDYgMjRjYjYyMjI1MDQwY2ViYjI4MmFiYjI0YWMxYzNhZGMyOWI4ZTAwZCBsZWdhY3ktdHJ1bmsKKzMwNDA3IGZmYTRhYjM3MDM2ZjAxNWZlOTk2NDBkMjE0YTliMDhjOGYxNGExMGUgbGVnYWN5LXRydW5rCiszMDQwOCAzMmU0Yzc3NTM0MTYyYzVmN2FmY2RhNGQ0MWQwMWI4YjAyNzcwY2UyIGxlZ2FjeS10cnVuaworMzA0MDkgNmM1MzVkY2VkYWQzMDNjMTNlNDM0NzJiOWQwZjc4ZDI3ODMxOTczZCBsZWdhY3ktdHJ1bmsKKzMwNDEwIDc5NDY2ZjA0ZjFjNTRiNTJiNzJlZDIxYzlkYTUyNzA5MTU1NWY2NWIgbGVnYWN5LXRydW5rCiszMDQxMSBiOTFkOTVlOWIyNDlhNzkzMzVhNmE2NjA5YzExZTZhYWZmYWRhZjhiIGxlZ2FjeS10cnVuaworMzA0MTIgYTA4NWNjMDQ3NjgxMDk1OWRhY2QwYzA3Nzc4OGZlMGY1NmZkMTdjMSBsZWdhY3ktdHJ1bmsKKzMwNDEzIDg0NjhlM2ZjM2EyYmM3MWNjMmI3MDg4NmQ5NjE0YzFjYzA0MzYzMTggbGVnYWN5LXRydW5rCiszMDQxNCAzZDVhYmQzZDllNGJhODA1MTk0M2Y4NTVjNDViZjBiNTJiMTI0NWI1IGxlZ2FjeS10cnVuaworMzA0MTUgYmMzMDU4NDk1MjJkZjc4NzI5ODJlNzIwYjgwZDM2NTNiOGVmNWJiOSBsZWdhY3ktdHJ1bmsKKzMwNDE2IGE4MmQ5MmY3ODQ3MmM3MDdlNmU3ZTExYzUwZmVlZDQzZDVhYWRhOTcgbGVnYWN5LXRydW5rCiszMDQxNyBiZDBjNDA3MTk1ODM2YmQwZjE5OWZiZDZiY2UyN2M5NmQzODljMGU4IGxlZ2FjeS10cnVuaworMzA0MTggNmU1NDFhNzJhZjFhZTY1NDM3NzQyZDI4NDU2ZTdiOTI0NTMzMDdiNiBsZWdhY3ktdHJ1bmsKKzMwNDE5IDVjYTcwNzIzNjFiZDk1YTAwZDRhZWUxMDk4YWQyMzZiMTkyNTQ2OWMgbGVnYWN5LXRydW5rCiszMDQyMCA3MjM3MjFlYTQwMjU5NmM0MzVlZTY2ZmM3NzU2ZjIxNTU2Mjc2MTdlIGxlZ2FjeS10cnVuaworMzA0MjEgNTUxNDExNDRkYWI1ZTUwOTEyYjEwNzQ0NDBjNWJlN2E0NTRjZTFlNSBsZWdhY3ktdHJ1bmsKKzMwNDIyIGJlZWE0MjE1Mjc4NzQzZGExMWVhZGI1MzliY2JlZWJhNDhhNzAzODEgbGVnYWN5LXRydW5rCiszMDQyMyA1MjY3NDJhNzRkMDY1YjNiM2ZmNDMyNmQ2ZDMzYzc1YjkxNDBmMDc3IGxlZ2FjeS10cnVuaworMzA0MjQgYWNkYjM5YjcxNGIxZWVlNDhkNGRiZWMyMzM4MWI4MzRlMGEwMjM1NSBsZWdhY3ktdHJ1bmsKKzMwNDI1IDAyYzZmZDVjZjc1YmNmNTZmYjRiZWM3NzZiZmUwMTg5MTEwY2UwODcgbGVnYWN5LXRydW5rCiszMDQyNiBiZTczMmUyMTllZDEwMjY3ZDkwMjc4M2JlZTczMTRkYjE0YTI1MmRkIGxlZ2FjeS10cnVuaworMzA0MjcgYTU4Y2VjZjU5YjA2M2Y1NTUxYzhiNGExM2M0NTRjMDdiMDQ3MGEyZSBsZWdhY3ktdHJ1bmsKKzMwNDI4IDdiNWE3Y2ZjMTdhOWU1MDE3Zjc1MDNkMDMyYWU1YWJjODVlMDc0ZGMgbGVnYWN5LXRydW5rCiszMDQyOSA5NGJjODEyYTNjNTI4NTE1OGU2MGZlMTI0NWU0MTc5ZDIxZWI4Zjc1IGxlZ2FjeS10cnVuaworMzA0MzAgMzVmY2FiZWZjOWQyZmQzNTY5NTcyOWVhOWFkNmI0Y2YyYjRhMjM1ZSBsZWdhY3ktdHJ1bmsKKzMwNDMxIGYxNTU5NDYwYjk1MjYyNjkzMmM0NjUxZjcxMWM4NTRhNzFiYjI3YWQgbGVnYWN5LXRydW5rCiszMDQzMiAxNjM1NjNjY2I3ZDYwYWRmODRlOGI1MDYwNGE5YjY1NjNjZWYxMDE5IGxlZ2FjeS10cnVuaworMzA0MzMgMjQwYTI0MDFjNDA0ZGU2YWY5OTgzYzI0Y2QwMDk2MzQzYzQ1ZGMwOCBsZWdhY3ktdHJ1bmsKKzMwNDM0IDM4OTI3ZmQ1NjdiNGU0ZjJmOTI4OGY4ZmRjNzM0ZDMxNzk5MzViNGIgbGVnYWN5LXRydW5rCiszMDQzNSBiODIzNjZiYzU0Mzg0MjhhOWQ5NWQ2YzI0YzhlNzZkYTVlNjliY2RjIGxlZ2FjeS10cnVuaworMzA0MzYgM2MwNDFiMTlmMWQzNjc3YTNjMzkxYWJiZjU1YjhjOTQyMzQ1ZTM3YyBsZWdhY3ktdHJ1bmsKKzMwNDM3IGI4YzcyZTg2YTEyZDQwNzAwYjFiZTA3NDY3MzI5NDVlYjlmYmUxMDMgbGVnYWN5LXRydW5rCiszMDQzOCAxYzU4ZmU1Yzc2OWYzYzA2ZTcxYmUzYjAwMDBjODc4OTA5Y2EwNTJmIGxlZ2FjeS10cnVuaworMzA0MzkgYTVjODc5NzI2YjNhMzIzMzc1MTZiZjViMTBiMWQxYmQyOTQyYWY1ZSBsZWdhY3ktdHJ1bmsKKzMwNDQwIGI5YzQ2MmQyM2YzYzY1MjE0ZDQ3ZDE2YTVjYjU0Y2Y3MmI2NDQyY2YgbGVnYWN5LXRydW5rCiszMDQ0MSBhNTczZmVkZTg4ZTJiMThlNGU3ZDFmMDc4YmZmYWY5OWJmZjA5MGQ3IGxlZ2FjeS10cnVuaworMzA0NDIgNWRmN2EyODRlYWY0ZWQ3NzFmMTc3NGMyYjNiNDY1Y2E3ZGQ1Zjk5NyBsZWdhY3ktdHJ1bmsKKzMwNDQzIGI3OTBkYTA2NzFmN2E3MWU5MDIwZTQxMjgzNDFiNTBhN2I5ZTM2NDQgbGVnYWN5LXRydW5rCiszMDQ0NCA0YjRjZTI0OTBmZTJlZDdlZWM1MTliNmEyY2NmZDg2NDk5OTI4MmE0IGxlZ2FjeS10cnVuaworMzA0NDUgMTAzODk5Y2U4OGIyZmNhM2U3ZjFlNzk2NGJhYTE5ZWQxYjY5MzczMCBsZWdhY3ktdHJ1bmsKKzMwNDQ2IGJmOWUwNDI0MjM3ZjUxNTYyMmQ4MDUwZTFhY2EwZmJiNjQxYjlkMmQgbGVnYWN5LXRydW5rCiszMDQ0NyA3NzZmMjcwYTZlYTljNzBiZmU2N2U0NGU0MTM1NGExMzhlYjM5MmE1IGxlZ2FjeS10cnVuaworMzA0NDggNDQ0OGZmOGIzMjM5MGJmZDkyNWY2OTM1M2Q1ZGRhMTcxNWJlMTAyNyBsZWdhY3ktdHJ1bmsKKzMwNDQ5IDRjMDNhNGZhZDcyZWYyNjE3MDdiODgyZWNlNDMxMGUyZTBlODQxZTcgbGVnYWN5LXRydW5rCiszMDQ1MCA4NDg3OWUxODM3NzM4NDk0OWZhMjliY2E2MjFlYWI1NTBjYzM5OWYzIGxlZ2FjeS10cnVuaworMzA0NTEgOTA5OTgwNzlhMWEyMzg5MzI1NGRiYmY1OTJkMmE0OGU2ZWJkNzhlZiBsZWdhY3ktdHJ1bmsKKzMwNDUyIDY3ZGYyODkzYTUwZWU4MTc3YzEwMjY5N2M0OTQwOWI0YmFkZjg2OWMgbGVnYWN5LXRydW5rCiszMDQ1MyA3MDFiMTAyOWFmNDA3OTA1NTBlZTdkNDk5MWIxZmIxYzJiMjc4YzhlIGxlZ2FjeS10cnVuaworMzA0NTQgNzBmMGYyNWIxMzRlNDI4YzFkMTdmYjgyYjUzNzdlMTIzN2NhMTNkZSBsZWdhY3ktdHJ1bmsKKzMwNDU1IDc3NGY3NTRmZDFmZjE1MDM4ZmJlOTEwN2FjYWRlOTE1NTJmMjI3ZjAgbGVnYWN5LXRydW5rCiszMDQ1NiAzNWU1YjAyMWI3NzQ0NDcyMDNlZTczNDE2YjliMTlkYzJmMDljODViIGxlZ2FjeS10cnVuaworMzA0NTcgNzg0ZTdmZGY4YzUyNDM0NmZlMDNmNTNkYmFiMDVmMWQxNDM2ZjU4MyBsZWdhY3ktdHJ1bmsKKzMwNDU4IDY5ODk2MGQ1NjFmOGRhNTg5OGUwZmRhYTJmYzAzYWVlZTE3MjE4MjMgbGVnYWN5LXRydW5rCiszMDQ1OSA1YjE1NzU5NjhmN2ZhZjgwZTcwMjgzNDFiMWNiOTI2YmYyNGRjNjg3IGxlZ2FjeS10cnVuaworMzA0NjAgNTY3N2U5ODBlMDQ3ZTQyNDhmZmZhMDA1MGI3NzJmNzFkMGE5M2I0NCBsZWdhY3ktdHJ1bmsKKzMwNDYyIDJjNjcxNjlmNmUxM2ZiZGQxN2I0Nzc2ZGM3OWJjNTJhZWUyNWFlNDkgbGVnYWN5LXRydW5rCiszMDQ2MyBlMDJkYWY2MzA3ZmM4YThlYjVlMDAyNmU4YzcwZGVlOWVjMDczODZjIGxlZ2FjeS10cnVuaworMzA0NjQgNTQ5ZDA3ZDBhZWQ3ZWNhMTkwMjdjOTY1Y2I3MDkxMWFkM2FjZjFkNSBsZWdhY3ktdHJ1bmsKKzMwNDY1IGY3MjJhODMwMTQwZmI0MTVlNWUyODczZDRlMTExNGY0ZDFlZTc4ZTQgcjIzYTEtYnJhbmNoCiszMDQ2NyA3ZTIzNTFiYzZlN2E2OWJmNjhkZjcxMjUzNTE4NmJjNWIwNmFjMjcxIGxlZ2FjeS10cnVuaworMzA0NjggMWM2NWZhNWU1MmMzZDgxYWIwMWJhOGVmM2EwYmRlZDRhZjNmNmJkZSByMjNhMS1icmFuY2gKKzMwNDY5IDE1MDE3YTc5YmFjZGRhZDI3YmJhYWQ0ZjM5MmJiNGIwOTExNzczMTggcjIzYTEtYnJhbmNoCiszMDQ3MCBkNmRjZmY0YjM1NzQyMzQ4MGU0N2E1NTVlYTAwYmYzMmYyY2U4ZjMyIHIyM2ExLWJyYW5jaAorMzA0NzEgMmI4MDExNjgxNWI1MzVkZDk4MDJkNmMzNTkxYTZkOWNiZDY0YWI5NyByMjNhMS1icmFuY2gKKzMwNDcyIDkyZTU3MmUzY2E5ZjhjODMzOWY3ZTk2YTk1NmJhOWI3ODJiODgyNmQgbGVnYWN5LXRydW5rCiszMDQ3MyA4YThkZmYyNTBiZTQzNjJmYTFhNjdkMzFhZDQ4ODcwYjYwM2YyNmZjIGxlZ2FjeS10cnVuaworMzA0NzQgYmNiZDk0YzYxMGU4MjNmMjk1ZDFiNzQzOTllYmI2OGI4NzhmYWM1MiBsZWdhY3ktdHJ1bmsKKzMwNDc1IDdjYjczYTczMmY3NzFlYWEyMzZmMmRmNDJiOThmODUyNDJlYjkwYWIgcjIzYTEtYnJhbmNoCiszMDQ3NSAwMTgzMDc3NjVkMzRkY2Y2MmQ2ZDJhZDY2YmQ3ZjdiZGU1MzFlZmEyIHIyM2ExLWJyYW5jaAorMzA0NzcgY2ZhMTNjZTk4M2JhMmI3ODk2NmMwZWM3ODcxMWNkZjdjODIyMzYzZiBsZWdhY3ktdHJ1bmsKKzMwNDc4IDY5OTA1MDU5YzdiZDE4ODU5YjNmOGEyNjNjZTg3ZWVlYjFlYTI3ZTMgbGVnYWN5LXRydW5rCiszMDQ3OSA3NDA3OWJlNmYzZjExNGUxOTIyODMzNTJmOTAyNzFhNzZkMTAwM2Y1IGxlZ2FjeS10cnVuaworMzA0ODAgY2Y4MWY4MjVkYWFjOTI2Y2Q1NDdhMjQyYTBlNTVjYmVjNDE1MTliYyBsZWdhY3ktdHJ1bmsKKzMwNDgyIDRlMDkzMmExMTJmNDJiNTU5YjczMWM5ZWQ4Zjg3ZGQ5YjYzMTZjZWQgbGVnYWN5LXRydW5rCiszMDQ4MyA5NmUxYWI4ZGY4ODM4NGFkYTc4MzAyMmI4NzVjYjk3NDJmZDVhYmE0IGxlZ2FjeS10cnVuaworMzA0ODQgMmE4N2Q5NDg5MTEyZmEyZTM0YWEzZTg3NWI2ZjIzNjBlY2ZkYzJiZSBsZWdhY3ktdHJ1bmsKKzMwNDg1IDAwY2QxZDcxNTljMmI0NTEzMTEyMTFlYzBlZjljOWY5NWY0NDJhYmMgbGVnYWN5LXRydW5rCiszMDQ4NiA2Y2ExYzBkM2VmMTkzMTIyNDQxNDI1MGExMjE3M2VjZDNlNjk1MTE2IGxlZ2FjeS10cnVuaworMzA0ODcgOGVkNDcyZTViY2Q0NGRkMzIxYjQzNWY5YmQxOTkwNTVhMDc5Y2VkMSBsZWdhY3ktdHJ1bmsKKzMwNDg4IDg4ZGYyNjdkYjg1OWUzZjRiODlmZDY4NjRkOTFiZTQ0MzAxNDE5NDcgbGVnYWN5LXRydW5rCiszMDQ4OSBiZGE0MTg1NjcwY2NiNzQ4ZTgzOTlhZjYxOTBjNzc5ZmFmMTliN2VlIGxlZ2FjeS10cnVuaworMzA0OTAgMjkzZWRhM2U2OWY1ZjU4MjE0YWFiMjk5Y2EwMzg5NmRiMTRlZGMwMiBsZWdhY3ktdHJ1bmsKKzMwNDkxIGY1NzA4M2EzNDE5NjY0YWI0OGUwOTRjMGI0ZTdhM2UxODdlMGQxNTQgbGVnYWN5LXRydW5rCiszMDQ5MiAxYzQwNjBkOWU2ODc0YzM1ZmMyYjdmYzNkMGFhZTBiNmI4ZjUxNGEwIGxlZ2FjeS10cnVuaworMzA0OTMgZWE2N2NlYTY3NmU5OTM0NWIwZGZlYTI0NWJjOTQxYWFkOWVlNDhhYiBsZWdhY3ktdHJ1bmsKKzMwNDk0IGQ4NWVhZjQ3ODU1NmVmYzYxM2Y2ZjRmODkwOWIwYjYyNzkzYWQwNWUgbGVnYWN5LXRydW5rCiszMDQ5NSA4MTIwOWMwZjA4YTA1OTI2ZjdiZDBlOWY5MDU1YWNjZWFkYjAyZDA1IGxlZ2FjeS10cnVuaworMzA0OTYgNDU3OWU4M2M2NjNiNzAyZWEyMGJhYjFhNjIzMmExMTFiNWI0YWE3NCBsZWdhY3ktdHJ1bmsKKzMwNDk3IDcyYzNmNzM0N2U4OGM4OTQ0MDZkZWRkYTc4N2ExNmZhY2M1YTljNjEgbGVnYWN5LXRydW5rCiszMDQ5OCAyNjg3YTkwODU0MTFlNzg1N2Y2NTYyZTAyMjcwODYxNTM2MGJkN2FjIGxlZ2FjeS10cnVuaworMzA0OTkgNWM0ZmEwNGM5ZjYyOGQ4OTkyYzI1MDY2YWJiNGZjOWJlYzQ2YmU2NiBsZWdhY3ktdHJ1bmsKKzMwNTAwIDZhNWNmZmM2MjM4N2RkYWEwOTBiYWM1MzNlYzUwYTg3YzlmN2I3ZmQgbGVnYWN5LXRydW5rCiszMDUwMSBjMGIzYmI0ODViY2Y4MDAxNmNlODYwYWRlZjVkYWFkZWRlNGY5MGJhIHJlbGVhc2UyMi1tYWludAorMzA1MDIgOTdkYzUzMGQ5MGViNzg1MjYyZDE1OWY5NTkzZGNhZjkzZTc4MDk2OSBsZWdhY3ktdHJ1bmsKKzMwNTAzIDQ3OTMxMDE0OWIyZWRlMWU3MDk3MjE5N2E0ZWE5ZjU4MjJlZWIyZmMgbGVnYWN5LXRydW5rCiszMDUwNCBmZDlmMjBjZTNiYmExZmM5YzM4YmIzM2M4MzA3MDRmNGI1MjEyM2U0IGxlZ2FjeS10cnVuaworMzA1MDUgNzQxYWE5ZDZkOGJlZDc0MDVmYzMzMWYzN2JiMjMwMGVkMjYzYmYyNyBsZWdhY3ktdHJ1bmsKKzMwNTA2IDBiM2ZjY2ZiZTJhMjg3NjFlZTRjNTc4NjFiMTI1MDIwYzZhYjQwZTQgbGVnYWN5LXRydW5rCiszMDUwNyA5ZWU0ZmQwNWQzY2JjZDVhZDdkYWIzODMzYmJjZjkwYjJkYzBmOGMzIGxlZ2FjeS10cnVuaworMzA1MDggYmZhMzI2MTNkZWM4ZWNhMGU4MTc2MjZmOTg0ZGZkZmY1YzU4YmQ1OCBsZWdhY3ktdHJ1bmsKKzMwNTA5IDcyN2JjYjgxMWM1MGY5NWZkOTQ1YjJmMGVmNDM4OTI4OTU2YTJhNTEgbGVnYWN5LXRydW5rCiszMDUxMCBlMmM4OGM0NTFjMTlhNTQ0NGM5NWJjNzA5ZjMyYmY1MGI1OTMzNDE4IGxlZ2FjeS10cnVuaworMzA1MTEgZjQ0MWM0ZTViMjM0NjU2NTQ1Yzg4ZmU1NDYzMTliN2Q5YmI0YTczNiBsZWdhY3ktdHJ1bmsKKzMwNTEyIDEwOThjY2M4NGQ2M2Y4OTJmNjJmYWNlODIzOTUxZDViN2JmYWI0NzYgbGVnYWN5LXRydW5rCiszMDUxMyA4MDZkMzZlNTZiZmEzZTA4MDExZjQ5YmIwYjNiZTc3MGYzZDRiODBmIHIyM2ExLWJyYW5jaAorMzA1MTQgYWQxMmVhOWM3ZWZkZjQ2YjYzODliZjNjZjY1ZTU1ZGU5ZmRlNWMxNyByMjNhMS1icmFuY2gKKzMwNTE1IDQ0MTQ3MDdkOTM3NjE2YzZhZDRiNjBjMjYwYTMzMWE5YWY4NDk1OTIgbGVnYWN5LXRydW5rCiszMDUxNiBlMzI3MWU4YjE0ZGVlMGZiZTA3ZDFhODUyYzAwZjgyMTNmN2Y3ZmZlIGxlZ2FjeS10cnVuaworMzA1MTcgYzQyOWZlNWRlNDE3MzU2MmQ1MzAzMWMwZjM4NTE2YTRjZGNhNjhjNiBsZWdhY3ktdHJ1bmsKKzMwNTE4IDMzOGFjODZmNDQyZDk5YWMxYWJhNzU0NGM0ZjFmZjhlNGNmOWMxNGEgbGVnYWN5LXRydW5rCiszMDUxOSBkMjc5ZDc2M2Y0NjI1NGVjNWRjMWZhNmQyNWUyMjY3ZWE3MjcyMWE5IGxlZ2FjeS10cnVuaworMzA1MjAgZDU5YjdjYmNlYWMxYzZjOTY1N2QxYjM5MWM0NjlhYWUyMmI2YmIxYyBsZWdhY3ktdHJ1bmsKKzMwNTIxIGIxZTIzYzM1NzA3YmU0YzAxMDJiNzU5OGI1NDk1N2RjOWJiYjc1MjMgbGVnYWN5LXRydW5rCiszMDUyMiBiNjFhNjYwMjJkNWE0MDFmNGY2MzI1MTA3MTMwMzUzOWYxNGYzNTU4IGxlZ2FjeS10cnVuaworMzA1MjMgOGVjZGRmNGFkOGIwMjgxZDY5NDY2ZGI4NTZjZmUyNjZjYjJhODQ5YSBsZWdhY3ktdHJ1bmsKKzMwNTI0IGRjMzNkMDI3NjQ1YTRmM2Q5MGRhNmQzM2ZmYTJiOTJiYjliNTcyOTggbGVnYWN5LXRydW5rCiszMDUyNSA5M2I2YTNmNjEzMmRjODI4NzMyMzMxNzAyZWM2MGRkMzk4ODFkODc3IGxlZ2FjeS10cnVuaworMzA1MjYgNDFmNzcyNmUzZTUxMTdhOTE0NDRkZDQzODA5MTkxOTNkMTU1ODAzMiBsZWdhY3ktdHJ1bmsKKzMwNTI3IGE5ODY3M2JlMjBjMjgwMmVmYTQ1Yzc0ZjVkMTc0MjI2MjcwOGE1MjggcjIzYTEtYnJhbmNoCiszMDUyOCA0MmYzM2JkNjljNzI0Y2Y0ZjVmYTRmMTg1MDI1YjVkMjlhMjU1MWVkIHIyM2ExLWJyYW5jaAorMzA1MjkgZjBiZGY0YzU5MGVjNDBmOTgxZmVhNGEyMzkyMDVhMzdjMDMyNDNhNiByMjNhMS1icmFuY2gKKzMwNTMwIGJlNTExMjAzMTE2ZjA2ZjMwOGM2NzU2ZmM4Mjk3YzQxZDhhOWQzYmIgcjIzYTEtYnJhbmNoCiszMDUzMSAxM2M5MDM4ZmE5Mzc2OTkzOGM2MWQ3ZWQ2MmM2MGIxMmYwNTQ1OTcwIHIyM2ExLWJyYW5jaAorMzA1MzIgZGQ2ZjFkZjUyNGRkYzc0MDI0OTFjNGFiZjg0YjEzODRkNTU2MWFjMiByMjNhMS1icmFuY2gKKzMwNTMzIDY4ZGFmZTFiYzAxNjlhODY2NzlhY2YzMDJmNTA0NzVkMThjNjcyZDQgcjIzYTEtYnJhbmNoCiszMDUzNCAwMjU5ODU2YzFlNDc2MTA4MjdjNTBkNWU5NWU1MGRiMzljYTI3YWY5IHIyM2ExLWJyYW5jaAorMzA1MzUgOTlkZjBlNTJmNjM0MzMyNjVlNTY3ZjI4MDViYmM0OTFlNGQ1NmQwYyBsZWdhY3ktdHJ1bmsKKzMwNTM2IDFhZTc4MjQ5MzEzMmI5YTQwZTkwOGFmYmE0NTJjMmIyMTY5MjczYWQgbGVnYWN5LXRydW5rCiszMDUzNyBiMzBmZTRkY2M2OTc5ODYzYmU2NzZlYzA5YzYyZmM0ZGRkZTdhYmRhIHJlbGVhc2UyMi1tYWludAorMzA1MzggNmUxYTc0MzVkZjI1ZDM1MzE3M2QzNjBkZjIyYzZkYTQxMGNiYzljNSBsZWdhY3ktdHJ1bmsKKzMwNTM5IGU2NWZmY2I0MzY5NTE4ZDcyYTE1ZGM4MWY0Y2MxMGQxMDgxOTdiMmUgcjIzYTEtYnJhbmNoCiszMDU0MCBhZTlkOGY1MGU3NmEzNjAzYzJmNTViZTI2ZjE3YTU2NTc4MzU3NWE2IHIyM2ExLWJyYW5jaAorMzA1NDEgZjlhNTU1N2M5NDQ3YWNhMTZkZDYzODI1MjNiNWJiZWYxNzMxMTlkYSByMjNhMS1icmFuY2gKKzMwNTQyIDA0MWM1MmY0OWRmMjI3OGRmM2I5MmU3ZjJmNDA3NTc0OTVkZjM0NTIgbGVnYWN5LXRydW5rCiszMDU0MyAxODg0MTZmYjdhYzUyZDJlYWE1MThiOTQ2OWUwNmM0MmJmZmY1ODE1IGxlZ2FjeS10cnVuaworMzA1NDQgZWJmNzI2NWFhZTRlYTkyZmNjZWYzMDVlMGU2OGQyZDEzYzdiZDMwOSBsZWdhY3ktdHJ1bmsKKzMwNTQ1IDIzMjgwYTY0Mjg4ZTNlYTE3YTQ0MGI3ODhkNWQwYWYwMjI1YTA0ZWMgbGVnYWN5LXRydW5rCiszMDU0NiA1ZDk5NzI2M2I4NTliOTJmMjc1ZjdlZWMxMWZmMzgzNzhiYTQzNGQzIGxlZ2FjeS10cnVuaworMzA1NDcgMjM3YTE0NjIwNzg1OWI1ZDY3NWY3NzNhOGZmODMzM2ZmY2M1MTU5MCBsZWdhY3ktdHJ1bmsKKzMwNTQ4IDczN2E1NDc2Mzk2YjY0MTY4NDFmMjAyYTMwMTFkN2JkYThjOWY4YjQgbGVnYWN5LXRydW5rCiszMDU0OSAyNjdmNDViZTljMDJjZDQwYmVlZDM3MDQ0OGZmN2MwZWNmY2U2NjNlIHIyM2ExLWJyYW5jaAorMzA1NTAgNTU0MTIxZmNiYjlkY2JmZDYwMzRiNjlkMmE4MDBkY2EwNzhhZjhkNyBsZWdhY3ktdHJ1bmsKKzMwNTUxIDFjZDljODU2NDg3NWI4NWI1MjA3YTRkMDU5NThjMzhjNGQ2MDkyYjcgbGVnYWN5LXRydW5rCiszMDU1MiA3MGQyY2IzNmZhMTdhMzFmZTdhNWQ2ZGNkYTY1MjdlZDIwYWQyOGY2IGxlZ2FjeS10cnVuaworMzA1NTMgNzgyMjc3MDljYTA0NGY3OWU0ZmUxYmQ2NTk2MDQ3ZmEzNDY5ODk4YSBsZWdhY3ktdHJ1bmsKKzMwNTU0IGFmMzU3OTUxMWY4NDY4ZmQyMTAyZDYyYzkzZGRjNDU1NWQ3YzlmZWQgbGVnYWN5LXRydW5rCiszMDU1NSA5ZDA4MjkxY2Q0MTE2NjIxOWViZDFiNTJmZDBkNTg5MGNjM2I4MDk0IGxlZ2FjeS10cnVuaworMzA1NTYgNzE0Y2RmMDgwNmMxNmY3YTQyNjM2MDRiMGNhOTUzNzhkMTYxZTYzZCBsZWdhY3ktdHJ1bmsKKzMwNTU3IGUzODJkMzkzMzMxZDVjMTIxZWM3ZmFmZWQ4OTliM2Y0ODNhZTc1ZjYgbGVnYWN5LXRydW5rCiszMDU1OCA5NGI5Y2Y0Mjc0ZGUxZTA1ZjlmMTYwYTJiZGFmOTNiMzE2MzcwMjljIGxlZ2FjeS10cnVuaworMzA1NTkgZWUzNGI2NDk1MmMwZjhhNjcyYjA3ZWJhOTc1NjgwZTIzOGFlMzZhYiBsZWdhY3ktdHJ1bmsKKzMwNTYwIGNkM2M0ZGYxOWIwMzViNmFlYWEwZDE0ZmEyMmU0MjQ2YTIwMjQ1MGMgbGVnYWN5LXRydW5rCiszMDU2MSBhZmViNzBjODc2YWEzNTE0MjE3YjkxNGQxZjhiNGFkZWI1NTljNjZjIGxlZ2FjeS10cnVuaworMzA1NjIgY2Y5MDMwOWVmZWVlNjIyZGY2NDFhOTY5MDUwMGIwODM5YWQ3NTNiZiBsZWdhY3ktdHJ1bmsKKzMwNTYzIDY5NzdlMzIwYTc1NmM0Njg1ZWJjYmIyMTlkYWUzZjhkZDM3OTAxMzUgbGVnYWN5LXRydW5rCiszMDU2NCBkM2JhN2Y0YTlmODhhZmU1ZDgyNjBkOTAwZTMwNWU2Yzk4NTk4NDQ4IGxlZ2FjeS10cnVuaworMzA1NjUgYWFlOTQ5NTA2ZDJhN2QzMjgzOTMxNmM1OGU2MzhhMjViMmRlMWI2YSBsZWdhY3ktdHJ1bmsKKzMwNTY2IDE1N2E5NWY0MTdmM2Q3YmNjZDAzZjMwZmExZjNhMDRhMmE3M2IyN2YgbGVnYWN5LXRydW5rCiszMDU2NyA3OTAxZmQ5NTAxN2YwOTQ3ODNmMjIxY2VhNzNjMGY2YjFjNjhlNGY3IGxlZ2FjeS10cnVuaworMzA1NjggY2JkZjYwY2NmNTRmNWRmYzdiZWQwMGNhZGM3MDI0NGMxNWRiZGQzOSBsZWdhY3ktdHJ1bmsKKzMwNTY5IGViMzIyZWY2N2M5ZmVjNTAxOTQyZjNhMjBhNTAxNjBkZTU5YjEwNGIgbGVnYWN5LXRydW5rCiszMDU3MCBjYzViMmQwYTRhZDFkODZmZTI2OTc4ZGM5ZjRlOGE3ZmI2ZjdlNjM2IGxlZ2FjeS10cnVuaworMzA1NzEgMDZiM2ZhMjVkOWYxZGUzZmE3NTNlMTcyZjY3OWZiOGNiZjk3MzlkOSByMjNhMS1icmFuY2gKKzMwNTcyIDE3MTJlMjA0YWE5MmYxMjA3ZjJlMTZkN2Y4YmFiMWRlYTE2MzUxZDUgcjIzYTEtYnJhbmNoCiszMDU3MyBlZjUzMTQ4MmJiMzdiMGZiMzhiZjAxNjJhODYyN2NkZTIxZmYzZDMxIGxlZ2FjeS10cnVuaworMzA1NzQgZTkyMDQ0YzBiOGVjZWU4MTc1YWE0NjZlZTUzYTMzY2JhNDUzNWUyNyBsZWdhY3ktdHJ1bmsKKzMwNTc1IGMzMGY5NzI4NzYwMjk0ZjJmODhlZmUzNWQ5ZWIzM2ViMmMyZDIwZTAgbGVnYWN5LXRydW5rCiszMDU3NiAxNTY0YzY4MzllNmIwZWI4MDU5YWU0YzgxY2QwMjE1OWRjMDlkYjI1IGxlZ2FjeS10cnVuaworMzA1NzcgMGJhNDY2MDZmMGY5MTE4ZGVjYmE0MGQzZmYwODI4MGUyNThlNzdhYSBsZWdhY3ktdHJ1bmsKKzMwNTc4IGI4NjU5MjVlZjY4YWI2M2Y3NDhlZWZkNjhjZDQwOWQyMjZiOThjY2MgbGVnYWN5LXRydW5rCiszMDU3OSBjMjlhZGE2YzFjOTA0YTI3NDVkYTVhMDUxODZhOGEyOGIwMGEzMmUxIGxlZ2FjeS10cnVuaworMzA1ODAgNzUzMzA2ZjliMGEwZTMzOGM5YjEzNjIyYjRkZWY1NDU4NjAxZTIwNyBsZWdhY3ktdHJ1bmsKKzMwNTgxIGMxZjRlNTNjNDJkZDBjZTA1YTQ4MzFkYTFkYTU0MDA0MzJiNjQ1NzYgbGVnYWN5LXRydW5rCiszMDU4MiA5NzJmZWMyMWYyMjNiNzEzOGJjOWJkMDc1NWJhYzFjNzA5N2E3YzU5IGxlZ2FjeS10cnVuaworMzA1ODMgYTc0Yzg4ODM4YTU1YjQyMWY4YmJlOTkyNDllNzJmZTA3NDNhZmQyZiBsZWdhY3ktdHJ1bmsKKzMwNTg0IDJhZTFkMTc1NzJkYTZhOGU3NGZjZjVmNzAxMTZjYmU1NWZhNmM0NTEgbGVnYWN5LXRydW5rCiszMDU4NSAzMTk5ZTk3NGY1NWFhM2Y2ZGU1MmY2OTI0ZTIwOGRhYmE5MTYxNTcwIGxlZ2FjeS10cnVuaworMzA1ODYgNjRlOGM2OTg2NjEwYzJiMzc4NjQ4MDY0YmRmZmQxNGRkYzcxZjJhMyBsZWdhY3ktdHJ1bmsKKzMwNTg3IGQ1ZTA5ZDQxMmI1Mzg4MDY3ZWI5M2RjOGZlMTg3ZDBhMmY1YWVmMmEgbGVnYWN5LXRydW5rCiszMDU4OCBmNzIyNjQyMmMxZDBhNGI3MTQxNmJhMzA1MjUyYjM4MGYxMzhhZTRiIGxlZ2FjeS10cnVuaworMzA1ODkgOTAzNTBiNWQzMzk3YzRmZDY4Y2EzZWM0NmNkY2Q5OThjOWFjMWVlNiBsZWdhY3ktdHJ1bmsKKzMwNTkwIDM4MzE5NDA5ZTg5NTY3ZTI0MjhhMTZkMDVjOWUwMWJkYzc5OTEwNTYgcmVsZWFzZTIyLW1haW50CiszMDU5MSA5M2YzMjJmNTYyZjM5OThjZmYyNjUxMjYwMDJjMmQxYjc4M2QyNjgyIGxlZ2FjeS10cnVuaworMzA1OTIgYWJiNWE2OWQ2MGNiZmY5OTQ2MzliZjM0MDg2ZjhiMjE1NTNhMjNjMCBsZWdhY3ktdHJ1bmsKKzMwNTkzIGExMjM3OTNjYTE5M2JlN2Q0OTA1ZDUzYzBiNGZiY2RmMTAzZmUyNmEgbGVnYWN5LXRydW5rCiszMDU5NCAzYTI5NWNlYmE0MDFmNTdhZDZkYTY2NjZlZDdiMDU1YzNlMzc5YzA5IGxlZ2FjeS10cnVuaworMzA1OTUgMzg4ZTU0NzQ3NzQwMGY0NTJmM2IwMWNlNGZmN2U5YmQ3NjhlNDA4NSBsZWdhY3ktdHJ1bmsKKzMwNTk2IDU0ZWY3ZDUyOTZmMTA0MGFhMzhkODFhZWIzNTYxOTBkM2Q1M2QxNTQgcjIzYTEtYnJhbmNoCiszMDU5NyAxYWM5OTk0ZGM2YzI1ODEzMDJhYzk4YTUzNTYzNGVkMDkzNDIxZjYxIHIyM2ExLWJyYW5jaAorMzA1OTggMWEwZWFiYmRhNjU0YWE1NTFlZGM2ZTY3YzQ2YmI2MTNmMGIyZmM3MyByMjNhMS1icmFuY2gKKzMwNTk5IDk3YjVhYjY3YjlmMjkwOWQ4NGQyNDI5NTA2MGMzZGNiNmQ2MTI3YTggcjIzYTEtYnJhbmNoCiszMDYwMCA1MmNlNzEzNThlMzJhMTE2OWRjZjAzY2E3NGMxZjRkZmFiMzFiODZlIHIyM2ExLWJyYW5jaAorMzA2MDEgN2RhYjI3NzMxYmU4MThkMDRiMjI4ZmU1MjdjNTE2MWZlNTVmZjcxZSBsZWdhY3ktdHJ1bmsKKzMwNjAyIGJkNzUwMzc4ZDVjMWZmYzJkMzMwN2M1MDE2MDIxOTdjYzFjNTEyYWMgbGVnYWN5LXRydW5rCiszMDYwMyBlODQxYzg3M2E5MzcwM2NmNDZhMzU0NDNjMzQ0YWE1M2M5YWM4YjEzIGxlZ2FjeS10cnVuaworMzA2MDQgMjdlOWMzY2Q1OGFmZDMzMmYzOTNhNGZjYTViYTI0MmIwZGFhOTQxMiBsZWdhY3ktdHJ1bmsKKzMwNjA1IDZjNGJkNDg3ZmQyNjBiZDkzZGEwYWE5NDI2ZTZmZmUyMmEzNWMwMDkgbGVnYWN5LXRydW5rCiszMDYwNiBhMTY2NGI3ZGE3NmY3OWMyMmE3OGQyMTBkYjI1Y2VjZmY5MTQ1YTdjIGxlZ2FjeS10cnVuaworMzA2MDcgM2UyM2RlODAyYTVkYWNmZjI2YzZhNjkzMDMxYTU0M2Q4NmQzYjJhOSByMjNhMS1icmFuY2gKKzMwNjA4IGI0MjI1NWM4MjJiMWU1NzFkNWM0ZTAzZDk2YTA2Zjg1YmQ1NWUwYTQgcjIzYTEtYnJhbmNoCiszMDYwOSA4ZDdkZGJiMzMwZDMxY2JjZmE1NTkwZDE1MGU1ZTViOGFhNDQ4NzNhIHIyM2ExLWJyYW5jaAorMzA2MTAgNWFiNGI2NDhhNGNmNDdkZmMzMmExOTBiNjg1YjRkNGZlYjhmMzNjZCByMjNhMS1icmFuY2gKKzMwNjExIDk2YThlZmQ5MTk0OGMxZWFjMzU4ZDczZjY3ZjAyODIzZTkwYzlhY2UgcjIzYTEtYnJhbmNoCiszMDYxMiAzM2I0NjEwYTg5MjI1M2MzYjZlYTRjNmYwMzU3YmJkOWMxYzkwMjBmIHIyM2ExLWJyYW5jaAorMzA2MTMgZjlhNWVkMDkyNjYwMDYxMDA4Y2RkZDNlOTFmNGFhMDFkMzU2NTJjOSBsZWdhY3ktdHJ1bmsKKzMwNjE0IGExNmJjNjRmMTE0NWI0NDhmNWUyMjlhMDc2Y2IzMmYwNTNkZmMzMTAgbGVnYWN5LXRydW5rCiszMDYxNSA4MjI2NjU4YTYzYmIyZTNjNTA2MWQ4MzMzMjFmMmEwZjFiOWQ4NzE5IGxlZ2FjeS10cnVuaworMzA2MTYgNmQ3ZGFhNTMyOWM2YWNhZWM5NTYzYmQ2ZGI5NWIxYmYxM2VkY2UxNyBsZWdhY3ktdHJ1bmsKKzMwNjE3IDY5MzMxZmFjNGVmMjViMGQxMDgwMTcwMDY4MzAxMTczY2RkZTk5YWEgbGVnYWN5LXRydW5rCiszMDYxOCA0MzA2YzY2NWY4NTdjY2U4OTYwNjIzMDg0MDc1ZGIxMWMxNzc4OTFhIGxlZ2FjeS10cnVuaworMzA2MTkgMjQ0M2M1NTdjYmMzZDNjOTAwNDA4ZThkMzBiNTNlNTVkNGFjNjJhMiBsZWdhY3ktdHJ1bmsKKzMwNjIwIDgyZWFjMzFlNmUyZGM5OTc2ZDM1ZDU2OTI0Zjk5NmIxOGQ2Yjk3MmEgbGVnYWN5LXRydW5rCiszMDYyMSBhZWU0M2E0ZjM1NzBkNzIzODQxMGE2MGExODQ0MTI3NGU5ZWZkOWFlIGxlZ2FjeS10cnVuaworMzA2MjIgYTBhNmY0ZGQ3MzI4Njg1Njg1Y2ZmNzlmYjNkMGEzOTQ3YmQ0ZGUxZiBsZWdhY3ktdHJ1bmsKKzMwNjIzIGZhYmE2ZTZjODI0ZGY5ZTQ4YmJmNGYyOGFhYzEwMWRjMGMxNWJhN2YgbGVnYWN5LXRydW5rCiszMDYyNCAwNDY0YWNiNWIzZTQ2YjFlNTdiM2I4ZmI1Zjc2ZTJmYjY2MzQ2Nzg3IGxlZ2FjeS10cnVuaworMzA2MjUgNTVkZTJiOTUxODFlOTM5ZjJiZDI3ZWY0MDNkNTdkYmQzNTAzZTE2MiBsZWdhY3ktdHJ1bmsKKzMwNjI2IDAzNjRhYWU1YTVhNDBiYWY4MDdjOTNjZWY1YzQ3NDA3ZjgzY2ViNTYgbGVnYWN5LXRydW5rCiszMDYyNyBlNzE5YWI0NmFkYWJmY2IxYTg3ZDU3N2MxOGIxNjM5ZGI3NmU1M2ZiIGxlZ2FjeS10cnVuaworMzA2MjggZDJmYTFkZGNkZjZkYTZlZGYyYTE0MzY4MWUxZTI5ODc5ZTQ3MGQzNyBsZWdhY3ktdHJ1bmsKKzMwNjI5IGIyZmM0OTQ5NjNiMmVjOTQyNTUyNmU2ZjA3NzY2YWI0YzA3YmY4NTIgbGVnYWN5LXRydW5rCiszMDYzMCA5ZGI0ODgyNjEwZTViODNiYjA2ZGRhOGY0ODIyYjQ1ZDllM2UxOWE3IHJlbGVhc2UyMi1tYWludAorMzA2MzEgYTJmMTdmNGE2YTIyY2ZiOWIzYzRhNThiNGQ1NGMwY2EyOGViMGMyNCBsZWdhY3ktdHJ1bmsKKzMwNjMyIDM3YmViNGQ2MDkyOTgzYmM4M2I4YmI2NTVkYTk1MTQ4ZjdhNjQ3Y2UgbGVnYWN5LXRydW5rCiszMDYzMyBlYjkzNTNiNDNjZDEyYzE3OTJlMzkxOWM5Yjg2MGMyZWQxNWVmMGI1IGxlZ2FjeS10cnVuaworMzA2MzQgYjNjOGQ5YzQ3MmRjOTI2YmJjZTM2MGI0OTA0NGQ5M2FhZDRkYjdjOCBsZWdhY3ktdHJ1bmsKKzMwNjM1IDg2ZTdhMWY3ZjI2NTI3NzA2NjU1ZDhiZDFmYzNkMDBiNjBhYjViYTQgbGVnYWN5LXRydW5rCiszMDYzNiA3ZWM3NzE4OTM0MTAyYTk5YmI2NjMzZTVmNmZkMDUxODkzOThlMmJkIGxlZ2FjeS10cnVuaworMzA2MzcgYzBkNWZlOWEwZjFjM2U0MjM3NjMzNzEwNzBkNmI3ODU2ZGMzZWM1MiBsZWdhY3ktdHJ1bmsKKzMwNjM4IDFiODgxZDVlNGE5MDNlNWM0NjdiZWM1MzA3MWQyODRhZWYyZTQ2MzMgbGVnYWN5LXRydW5rCiszMDYzOSBkMTg1MGEzNmFlNDFmZDlkZjkzYmZhYWI5MDQ3MzhkNzFkZDg5MTQ4IGxlZ2FjeS10cnVuaworMzA2NDAgZTU0ODU1MjU3YTRmOTMwZjMxZDQyMmRhYTlkZDYwYmU1NzU0MGZmNiBsZWdhY3ktdHJ1bmsKKzMwNjQxIGFjYzgwZWFjZTRkYzEzNGUxZTMzMTc5NDI5NWZkNzZmNmE4ZDdhNGEgbGVnYWN5LXRydW5rCiszMDY0MiA0NmE2ZWQ3Y2M0ZmU5NWViODE0MTJhZGMyNjI1NjljMjA3NDZjMTlkIGxlZ2FjeS10cnVuaworMzA2NDMgNDVmMWU2YjEyYTgxM2I0M2IzOTUzMzA0ZTVmM2VmODE0MWMzM2Q3ZSBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMwNjQ0IDA0N2I2ZTE2YWIyZTRkOWY4ZjFkMWE5ZmJhYWM0MTcxMzFlODI4OGQgbGVnYWN5LXRydW5rCiszMDY0NSA2ZGZkYjFjMDMwOGFkMWZlODY0YWVjZjY4Njc4MzJmMTVmNDdhZjI4IGxlZ2FjeS10cnVuaworMzA2NDYgODYxN2MyNTA2YjhlNDU0OWIyZGVjM2JmMDAyMGE3NDNiMzNjNGFiYSBsZWdhY3ktdHJ1bmsKKzMwNjQ3IGU4N2Q1OTBhNWRlMTg3NDdjNzVmYjEwY2U2YzFkMDRmNGQ5M2M4YmYgbGVnYWN5LXRydW5rCiszMDY0OCAyMmQ2NjA0OTRmMjljNGQ3OTFjNDY0OThlNTU3MDdlYWI4MTRmNjZlIGxlZ2FjeS10cnVuaworMzA2NDkgNDliY2ZlY2IyOTYyNzI1NmFlMjg4M2RmMGNjMjI2NTE3MWQyZTc2ZiBsZWdhY3ktdHJ1bmsKKzMwNjUwIDY1N2FlYWZiYmM5YTBjODRmZDY5ODk4MzMxZTZkOWRlZTYzZTc0YTUgbGVnYWN5LXRydW5rCiszMDY1MSBjMjY2M2NhMzFkN2QwZTM4ZGFiMzhlZDc3OGM0YTAwMzI1MzQxNDE1IGxlZ2FjeS10cnVuaworMzA2NTIgM2QyOTYyYjAyNDllNTQ1MWFlMWJmNTgxMzJlNjdhNjAzNzc4M2Y4ZCBsZWdhY3ktdHJ1bmsKKzMwNjUzIDMzMzBhNTA5ZDJiZDgzNWNmZWRjNDAxODAwY2FlODQxNGI3Y2VmODggcmVsZWFzZTIyLW1haW50CiszMDY1NCBhZjhhMzBkZTY2NzI1YTAxYWFhMDMzMDMwOTg2MWYxNTdhMWNjOGM2IGxlZ2FjeS10cnVuaworMzA2NTUgN2JiYjBkZDhkMjMwNjg5N2E0OWE0ZjU1YWM2ZjU0OTVmYjVmZTMwZiBsZWdhY3ktdHJ1bmsKKzMwNjU2IDhlMjFiY2YyMTU4YWM5MTA0N2MxNjM2OWE1NjI3MTE4MWYzZTA2NjggcmVsZWFzZTIyLW1haW50CiszMDY1NyA1ZDRmMzE2ZDg3MWMwZTZjMTViZjgxMmNkZTAxYTBhMjYxNGRiYTM2IHJlbGVhc2UyMi1tYWludAorMzA2NTggODFjZGFiYmQ2M2Q3Y2Q5OTg0NDI4OTI2ZDZkMzQxYTg0NWQ3ZTIyOCBsZWdhY3ktdHJ1bmsKKzMwNjU5IGFjZjFiNTEyMTJjNTlhOWI3ZGRlOWNlZTlkMTJjMDBmNmIxOWI5NWIgbGVnYWN5LXRydW5rCiszMDY2MCBlMjA0ZGZmM2ZjYmY5ZTA0ZDEwY2IzMDcwOTUzZjhlNTFhMWMzMmJjIGxlZ2FjeS10cnVuaworMzA2NjEgOTJlOTIyZTczMjdhZTMyNzM5MzYxZDlkN2Q0Y2I4YWI5ZGQxMGUzNyByZWxlYXNlMjItbWFpbnQKKzMwNjYyIDU3NmUyYjVkOGNmODgyNWE4NTY3ZjI3NmIzNDI3ODkyNTE4ZGE0MWEgbGVnYWN5LXRydW5rCiszMDY2MyAxMzc1YmZjYjY3N2U2MjBlZTEzNWQ1NTdlYzI4NWIwMWQ1YzFiZWIyIHJlbGVhc2UyMi1tYWludAorMzA2NjQgNDc3OTljMjc2NDYxMTdlOTZiMTUxMmIwZjhlZDcwM2VlZjIyYmM1MiByMjNhMS1icmFuY2gKKzMwNjY1IDU2YjhmOTA4ODEzY2IwY2JjNGRiMjhiMzZjZTE5OTBjMzI2M2E2NzcgcjIzYTEtYnJhbmNoCiszMDY2NiA1Y2Y0MTBlNDcyNTE2NjMwNWFiMjU0OWRlNGI1NDFkNWYxYmMzNWMzIHIyM2ExLWJyYW5jaAorMzA2NjcgZTI2NWVmY2JjYmQxNjUyMDcxOWRhMzQzYWQ0NTdlNDQ5M2UwYTdkOCByMjNhMS1icmFuY2gKKzMwNjY4IDIyMjdhZDg2ZDMzYzUyMzgyMzMxMzIyNzE4YzM0MDUzNDhkMWYzNWUgbGVnYWN5LXRydW5rCiszMDY2OSA1ZWQ4MjA2NzBhZjM1YzlkZTc0OTFmODA0YjJhYmY4ZWZlZDExNDIwIGxlZ2FjeS10cnVuaworMzA2NzAgYjk0MzU2MGU1ZjdiNTI1NjcwODRlNWEwNDRjYTllY2M1N2Y2YmFiMiBsZWdhY3ktdHJ1bmsKKzMwNjcxIDI5Zjg5YzcyNTdiZDBjOTgwNmU3Yjc1NjI0NjIzNTVlYjU2NmRiZjYgbGVnYWN5LXRydW5rCiszMDY3MiBlMTgwMDhiNzExYjAyMmZjYjVmMzc3NGExYWYwNzY2Mjg3YzJmOWFhIGxlZ2FjeS10cnVuaworMzA2NzMgYWU4MzhmNzc0ZjZjMWUxZDFmN2ZkODliYWFmNWJkMjgwMTYzYzVmMiBsZWdhY3ktdHJ1bmsKKzMwNjc0IDgwZmNlYWIwNjgzNWU2MTkyOGJlOWJhNGQ3YjU5MDQwMzdjMTc0YjggbGVnYWN5LXRydW5rCiszMDY3NSAzZjRlODBlYmRjYTgzNTRiMGIxZjU4MzA0MjVlNDI5Y2RiNWFjY2ExIGxlZ2FjeS10cnVuaworMzA2NzYgNTg1YTY0NjBmNTc3NmZlYjhmZWJmZmNhYjQ3Yzg0YjcxZGNkNThlZiBsZWdhY3ktdHJ1bmsKKzMwNjc3IGIxZjVmZGJlNjM5NzJmNzkzYmU2NzIyYzQ0OGY5ZjVjNGM3MjZhZjIgbGVnYWN5LXRydW5rCiszMDY3OCBlYjZiMzZiMjZlOGQyYjZhMmZlMDNmMzIyYWI2ZDFhYmVjZGIxMzMxIGxlZ2FjeS10cnVuaworMzA2NzkgMjMyNjAxOTg4ODVhY2YzYjFmOGQ2NWFkZjY1NjU3MGM2ZGFlOTQxOSBsZWdhY3ktdHJ1bmsKKzMwNjgwIGM1ZDAyZDUzNzBkOTM3YmYwMDZjNDZhN2NkZThlZTk0MzA0MjRjYzEgbGVnYWN5LXRydW5rCiszMDY4MSBiNDlhNDBkYjdiNDcyYTI0NWY0MGQwZTgzNTc1YzcxY2I0NzU2ZDk5IGxlZ2FjeS10cnVuaworMzA2ODIgOTEwZTc2ZGQwNGRhZjY1ZWFjMTY2ZTk2ZGMzOGE3ZTgyN2RkZGY5NyBsZWdhY3ktdHJ1bmsKKzMwNjgzIDczNGViZDQ3YmMyYTlkNDMwMzYxM2YyYWVlZmU5MDc3ODhkNjlhZjAgbGVnYWN5LXRydW5rCiszMDY4NCAyZjkzYzIzMWVhZTBlYThjY2NjOTE4MjBiMmYyZDhlMTk3MzIzODFjIGxlZ2FjeS10cnVuaworMzA2ODUgZWY0M2RlNTYyZmQxYjI1MWJiMTU3YzJiYjY0YzZlMzJjOGY2ODg2MCBsZWdhY3ktdHJ1bmsKKzMwNjg2IDBjYWRjMjkxODBlNjE1Y2YwZDE3ZWUwNjNjNjcxNTc4MDBmOWRkYmYgbGVnYWN5LXRydW5rCiszMDY4NyA3ZjA5YjE5OTJjZTlmYzM1ZWFiZTkyYTFiMzhhZjA4NTMzNmE4YzkxIGxlZ2FjeS10cnVuaworMzA2ODggY2NmNTlmMWFiNDMxMjg2NGYzMGIyOWFlZDBiODJlYTA2NmE2YWU5ZiBsZWdhY3ktdHJ1bmsKKzMwNjg5IDBiZDA3MzkxZDkyMWJjYzE1MDY0MTZkYTM0MmI4ZjIyMzFjMDgzZmMgbGVnYWN5LXRydW5rCiszMDY5MCBhZGY0YWIzZWFhNjIxYzQ0MWZhNzdiMmIyZDU3ZmEzYzdhNTczMjFlIGxlZ2FjeS10cnVuaworMzA2OTEgNGI4OWQ3NmZiMjA1YWMwZGQzMzQyNjZiNzQxNDQyMDUyMGNjZmI4MyBsZWdhY3ktdHJ1bmsKKzMwNjkyIGQ1ZDEyZWEzYTU4MDlmZWEyM2M4ZGQ3NWNlZTFkNGI3NTkyMTcxZmEgbGVnYWN5LXRydW5rCiszMDY5MyBiOWY1YmVlOGVjMThlOGZmMDRjOTgyMGQzOWU3NGMwNDI2N2M0YjhiIHJlbGVhc2UyMi1tYWludAorMzA2OTQgMGE5Nzk2YTY0NjhlZjEzZjIzMTU2NmMzMWJiOGFjMjQ4YjY4MDVkOSBsZWdhY3ktdHJ1bmsKKzMwNjk1IDQ3YjEzNGJiNTFjMzAyZDhlYTJlZDAxNDZkNjRjNzI3MzI4NDczNDEgbGVnYWN5LXRydW5rCiszMDY5NiAzMThhYmE5NGMxZTdiMWVjZWQ5NGNmZDM4NDQ2YzNkNTBiZmEyZTY0IGxlZ2FjeS10cnVuaworMzA2OTcgOTI1YTdiMWY5M2VlMDBmOGUwNGUyMWZmOGNhZDI2MmRmYjQxMjJjMiBsZWdhY3ktdHJ1bmsKKzMwNjk4IDA3YzZjMmU5OGExY2RlMWNiNTFlZmYxNmJiNWZjMzlmYTA3NDM1YWUgbGVnYWN5LXRydW5rCiszMDY5OSA2ZmU0OWRiZjAzZmQ0NmZiZjYzNjZlOGVkNWRlYmQ1MGJlODI0MDcxIHJlbGVhc2UyMS1tYWludAorMzA3MDAgYTBlMGNhYjVjOTI3ZmMxYWY5MmVmMGMxYjUxNmJmY2E2OWJjZmU0YiByZWxlYXNlMjEtbWFpbnQKKzMwNzAxIGNkZjFiYTJhYjcxNTI5NDIyNmI4ZTE1YjZhYzgyNWJlMDg2MzdkNTEgcmVsZWFzZTIxLW1haW50CiszMDcwMiA3NzA2YTA2ZjVlNjkyNjk0ZjViYWU3YmZhZjIzNDFlYjA5NjU3MDhkIGxlZ2FjeS10cnVuaworMzA3MDMgMDFkOWZkNTk1Mzc1ZmU1NWRiZDA0ZjhkYjViNDlhYmYxMmYzNjdkNCBsZWdhY3ktdHJ1bmsKKzMwNzA0IDcyODM4M2RjNzM5ZWYwMGYyNTNlZjgyYjkxZTE4M2UwMmI1ZjcyYWQgbGVnYWN5LXRydW5rCiszMDcwNSBjNzk4NjEzYTg3NjU1YmEyNjM1NzgyNzUzZjAzNDY3NzIyZTNjNWIxIGxlZ2FjeS10cnVuaworMzA3MDYgMDRhYTg2ZDQ5ZDkzZTU1NjQ5MGJjZDg5MmQ3OTU5YWE4NzBhYjg3ZSBsZWdhY3ktdHJ1bmsKKzMwNzA3IGZjNGJiMzgyMDQ0OWUzZjBmYWRlOWJiZGU1NjU0NGRkMWMwNDliNzAgbGVnYWN5LXRydW5rCiszMDcwOCBiY2FlMmE3MGUxZWM3YzlmODQ0MDMxMzgwNTI3YTEzMGI4OGVjODY0IGxlZ2FjeS10cnVuaworMzA3MDkgN2VhNDQzMDUyMmRmNDkzYTA4NGRkN2NiYTg5ZjFlN2MzNzI1YjkwZiBsZWdhY3ktdHJ1bmsKKzMwNzEwIGQwM2MxMzAzNDU2MGEzNjJlNGQ4ZDE5MjlkOGRjZmFkYTk2ZGVjNzggbGVnYWN5LXRydW5rCiszMDcxMSBiMjljZmFkNDQwOTdiNThjMmIxNjJhYWRiMWQ4ZTc1ODRlNWJlNzQyIGxlZ2FjeS10cnVuaworMzA3MTIgYjM0NjI3MjU0NGExODJjMTZiZDNlZDAxZDRmYWFkMzViYmQwY2Y0OSBsZWdhY3ktdHJ1bmsKKzMwNzEzIDkzNDczMjc4NzQxOTRiZjhhZTQ2NGJhOWI0OTRjYzk5MGNkMWFlNmQgbGVnYWN5LXRydW5rCiszMDcxNCA1OTMwOWQ0YmY4NDFiNjkyOTYxNzc3NzBiZmVhNmRmOTE5Yjc4ZDQ0IGxlZ2FjeS10cnVuaworMzA3MTUgNjVkYzAxMTBhNzM1YzEwMTI4ZWVmMjA5YzBkMTRmNjk1OGI5ZWZhYyBsZWdhY3ktdHJ1bmsKKzMwNzE2IGQ0YzhhZjkxMTlkMTkxOGZmNjZmNzk1N2IwMjY3YmRkM2ZiYjAwYTUgbGVnYWN5LXRydW5rCiszMDcxNyBhNTFlNWFlMjk4ODJiY2IxYmY1ZTM0MmEyYzNiZGUyY2Y4YmQwNjM2IGxlZ2FjeS10cnVuaworMzA3MTggYjg3MjQzNDFiYjFhYmMzMmY5ZmY2MTVkOGYwMWQzZjg3ZWZkNWYyMyBsZWdhY3ktdHJ1bmsKKzMwNzE5IDc3YjcwYTg4ODRjYjIzYjg2ZmQwMTJlNDFhMDEyOGQyN2RhM2I1NzYgbGVnYWN5LXRydW5rCiszMDcyMCA5MjgxMmY2Y2Q2M2I1YjJjMmJiZDg1NWVjN2JmMDcwZDI1MGZkZTI5IGxlZ2FjeS10cnVuaworMzA3MjEgZGM2ZmI4YTZhZjNkZWYyNzgwZWZmNWU2OTQ4MDM4MjY1NjQzNDAwYiBsZWdhY3ktdHJ1bmsKKzMwNzIyIGFlMTIyNjc1ZGYxZTkwY2U5NjQxNDM2NTY0MmFmN2I0NDdlOTQ5MmYgbGVnYWN5LXRydW5rCiszMDcyMyA4MWRhNzNiOTNjM2M2MmYzYzIyNjc2OGQ3YTJlZTJjNjczZGMxNGIxIGxlZ2FjeS10cnVuaworMzA3MjQgMGEwMzVmOTI5OWE5NzlmNzg5YzFiZTExNmY1NzliMDU2ZTEyNjdhNiBsZWdhY3ktdHJ1bmsKKzMwNzI1IDNjOGQ5MWYzZjRjNjdkZTc4MzE3YTU3NGYzOTFhZTZkYjI2NDc4ZGMgbGVnYWN5LXRydW5rCiszMDcyNiA0ZjE5Yzg1MjRmMWFjN2U0ZTdhY2I0NDE2OWQ3ODkxZDE0NzE5ZTUwIGxlZ2FjeS10cnVuaworMzA3MjcgNmFlMzYxZGY4NzBlZWEzMThmN2JiMDBkYmE0ZDQ5ZmEyODIxZjMyYiByZWxlYXNlMjItbWFpbnQKKzMwNzI4IGIwZDUyODMyN2M0YzFhNmNmNmNjNTM5ZTljZmU0NjZlOGM2NWE3NzAgbGVnYWN5LXRydW5rCiszMDcyOSA4MGVhMDQ4ZmMwZDczNWYxZmRhYTkwYWVmYzdhMDA2YjY0MmUwZGJkIGxlZ2FjeS10cnVuaworMzA3MzAgNDI4ZWVjZGZkNTdmY2FjZTJlN2QxOTFlYTg2OTBlNjMwMThjMzQ5NCBsZWdhY3ktdHJ1bmsKKzMwNzMxIGE0OTRmNWE4NjM5ZjI5MDQ1ZmI3OTcwNzVjMDRiNmMxMjU1YzRlZWUgbGVnYWN5LXRydW5rCiszMDczMiA0YTYyYTk0MWYzYjEyYTMwMzVhY2I3MTliYzVkOGQwOWRjNTQ5OTVmIGxlZ2FjeS10cnVuaworMzA3MzMgZGUyYzk1ZDgxOTg0MTYwZjU5ZWYwMDFhYjVjYWEwMGFjM2UxMDA5NCByZWxlYXNlMjItbWFpbnQKKzMwNzM0IGY5Njc3MmUzMWUyMzNmNzc3ZWQyMWViYjczOGI4Y2Q1ZDM5OTQwNDkgcmVsZWFzZTIyLW1haW50CiszMDczNSAzYjNjZTk2NGFkYzljMTNmMmZhNTY5OGEyYTdmNjc0ZjJlMTVjM2RlIHJlbGVhc2UyMi1tYWludAorMzA3MzYgN2E0ZDc4MjcxNWY0Yzc2NjI0OTRjZTZjY2ZkOGQyMjNlMWI0MjM1ZCByZWxlYXNlMjItbWFpbnQKKzMwNzM3IDEwYjdlNjAyNDViNTY5NDAxYjk2MzYyN2ViNWY4ZDA3MmI4NDc2NjMgbGVnYWN5LXRydW5rCiszMDczOCAzOGQyMjM4Yzc5NWU0NmU5YjE2ZTdhYjM5OTJmMjRjNDAxNTQ1MjQyIGxlZ2FjeS10cnVuaworMzA3MzkgMmVkNTE4YWIyZmQyMGEyZDIyMjk0MDQ0NjQ5YTMxNmYxZDIyNTBlMSBsZWdhY3ktdHJ1bmsKKzMwNzQwIDE3ODc4ZDQ1OGNmMTJmM2RmZDEzZTJhMTA0OTBhZmY3NzhhZWQ3YTQgcmVsZWFzZTIyLW1haW50CiszMDc0MSAxMTE5ZDU4MjYwOWExNGYyNGUwZjRhN2U2ZjIyMDU1MDM4YzUyYzJmIGxlZ2FjeS10cnVuaworMzA3NDIgMjA5ZDY3MjEyODgzZDAxMGMzNmM2ZTU2ZjFkMjczMWEwNmM5MGNjZSByZWxlYXNlMjItbWFpbnQKKzMwNzQzIDIwMWNkZWIzMDVmNjRhMDk0MDNmMmZlZDQ2YzkyOWU2ZTExNmM0MDQgbGVnYWN5LXRydW5rCiszMDc0NCA0MjBlYTIwNWYwMjQxZWU0NTE5NTQwMjZjODJhNGY1ZWFhNTA3ZjU1IGxlZ2FjeS10cnVuaworMzA3NDUgNWQ0MmRiYTQ5ZmU1MDcyNzViOTgwYjRkMWRjNTlkNDAyODI3NjY3MiBsZWdhY3ktdHJ1bmsKKzMwNzQ2IGViZWIwMGI4ZDUwMmEwYzk5NTNiNDFhZDkwY2Y4ODJlYmVhNzdlMGUgcmVsZWFzZTIyLW1haW50CiszMDc0NyAxMWIzNDU2NGEwZmQwNTgyMWRhNDIyMDU2Yzk4MDE5MmIzNDhkZWJjIGxlZ2FjeS10cnVuaworMzA3NDggM2EzM2JkMGY5YzRiZmRjNzU0ZWM4ZmUxZTEzNTIzYzljODA4ZGFiNSBsZWdhY3ktdHJ1bmsKKzMwNzQ5IGYzNGMyODY1MGYxNGUxOGU1ZmYyNTM1Y2M4NDExNWUyZDk5NWQzMWEgbGVnYWN5LXRydW5rCiszMDc1MCA3ZjM3ZWQ1NDI5MjAwM2VhOGYwY2M0OGZkZGUzYWMzNDU1Y2ZjYzYxIGxlZ2FjeS10cnVuaworMzA3NTEgMThmMDcyZDE0MGE5YzdmZTc1ZWU0YjE0NTE0YzZjNzE5OTJmMmQ3YyByZWxlYXNlMjItbWFpbnQKKzMwNzUyIGZkM2IwNzExYjI1ZmIwNTVmYWYwYmJkODM4Mjc3NWNkODJjNWY0MWEgcmVsZWFzZTIyLW1haW50CiszMDc1MyBlZWJjNGZkYWM1OTRlNjkyY2YxZjA4MDBlM2ExZDQ4OGFhNTg3YjNiIHJlbGVhc2UyMi1tYWludAorMzA3NTQgZTlmNDViOGVmZDZiNGQ3Yzg3NmI0MGU1YmYyNGE2NmM2NWZhMzgyZCBsZWdhY3ktdHJ1bmsKKzMwNzU1IDhiZDZiMmFlMjg3NGIwNzlmYjBlNWFmN2JjOTUxZjUxMDFiZWY1ZmMgcmVsZWFzZTIyLW1haW50CiszMDc1NiAzZWRlOTBkNmUxY2YxMjVhMDIwM2I0OWVmM2M3NDk4NDhkOGYxNzVhIGxlZ2FjeS10cnVuaworMzA3NTcgODRhOGU3ZDFkYWE5NzY5ODE1ZDk5ZDZkM2VlNzk1ODUyOWI3NjVjNiByZWxlYXNlMjItbWFpbnQKKzMwNzU4IDNiZmRiYzNkZmJjZTkyOGM5MTcxZGM0OGE4NzE3OGY1NGYxOTJiNDEgbGVnYWN5LXRydW5rCiszMDc1OSAwYTZiODgxOTBiOGIxZDNiZWY1MmE5Y2U0NzM1MjdlY2U1YThhOWUyIHJlbGVhc2UyMi1tYWludAorMzA3NjAgZjU5ZDgwYzdlMWJiNGQxOGY5MDAwZDUwMWQwMzFmYmM5ZGZjZjRlOCBsZWdhY3ktdHJ1bmsKKzMwNzYxIGY5NWU5ZjNjOWZlYTc4ZDRkNzE3ZWRhMDNkMWY1MGQ4NjQ4NzQ2MTAgbGVnYWN5LXRydW5rCiszMDc2MiBhNzcwNmQ0YzY5MGMyMGFlNjFlZTgxNmQyZDkzZDQ1YTRmZDA4YmYxIGxlZ2FjeS10cnVuaworMzA3NjMgM2FmYmQ1NWZiMThmYTRhYjEzYTM4Y2YxYjE0ZDIxNTE2M2U3NzQ0YSBsZWdhY3ktdHJ1bmsKKzMwNzY0IGIzZjEwNTM5OWQyMjgxMWRiYTVkMTk5YTk1NjYwYzQ2NjFmNDQ3MjQgbGVnYWN5LXRydW5rCiszMDc2NSBkM2FiNTMyYjNiNmQ2ZWJiMjBhNzFmNmEyNWYyY2M5NWYxNjc1ZjFlIGxlZ2FjeS10cnVuaworMzA3NjYgYTU2YzNjNTYyODhiOWZlYjI3ZGI1YmE5MDlkZDQ1MmI1NzBkOGQ4OCBsZWdhY3ktdHJ1bmsKKzMwNzY3IDVkZGI5MGY4MTY5YTU4OTM5YWU0NDNiMDc3MjRiN2JkYWIwMmI4MmMgbGVnYWN5LXRydW5rCiszMDc2OCBjNDE1MGY3ZjZhNjk2MTUyNGFlODg4NzIwNzcwMmUyYjc3NTdiNGYxIGxlZ2FjeS10cnVuaworMzA3NjkgN2MzNGU1YmYyZTIyYjFmODU4OWY4Mjc1ZWZlZWVjZWUzMmMxM2YyYiBsZWdhY3ktdHJ1bmsKKzMwNzcwIDE2YTg3Njc0NjI4NTBjNzQ2ZDAyNWMzOGZhYmRkOGFjMGY0NzgyZmQgbGVnYWN5LXRydW5rCiszMDc3MSBjOTk0OTNhYmEwOThkMjUzYzJkYjc4ZDE5NmExNjQ1OTFlYTdmNmUwIGxlZ2FjeS10cnVuaworMzA3NzIgNDBjZDc0NzgyNjAwODExYWQwMjg3ZTc4YzRkODM3MjdmNjVkMTdiYiBsZWdhY3ktdHJ1bmsKKzMwNzczIDFjYTdiMmQ2OTI0MjVkYzY3Yjg0MDkzMzZjYWE1ZDM4YmE0ZjQ0ZmYgbGVnYWN5LXRydW5rCiszMDc3NCAyNjE1NDc3MDM0NDNkYWI0NTQwOTdiNTBkNTE1NTFjMDUyNzRkNmUzIGxlZ2FjeS10cnVuaworMzA3NzUgYmFmZjU2YWRmYmMzMzgyNDhmOTVlYmE3OWY1Nzc1YTQxZWM1ZGNmNiBsZWdhY3ktdHJ1bmsKKzMwNzc2IGFlODliNTU2MDUwYWUwNTcyZjRjNmRlYmQ1NzI5MDA0OTg3M2NhOTEgbGVnYWN5LXRydW5rCiszMDc3NyAzZmJmZmQ3MzZkOWQwNGMyMjA4ODk2ZWQ0NzY5MjNkNmQzZjliYzZhIGxlZ2FjeS10cnVuaworMzA3NzggZThjMWE5NTQyZjY2YTY2OGQ3OGY3ZDJmZmJlNzhjZWIzZjg4NzUxYiBsZWdhY3ktdHJ1bmsKKzMwNzc5IGZhZjI1NmE1OWVjZWIyOTM3NzdmMjc2NDcyNDVlNTRiZTM0NDAzZWEgbGVnYWN5LXRydW5rCiszMDc4MCA0Y2RiNTAxYWI2YTIxNzdhZjNiZGEwODgyMjc2ODU2ZDhkNTdmNDVjIGxlZ2FjeS10cnVuaworMzA3ODEgZjA1NzY0ZDcwODJjYzFhMGExYTJjN2ZiNjE3MmY5MTNiOTViMjkzMCBsZWdhY3ktdHJ1bmsKKzMwNzgyIDc3NDI4ZTgzNWQ2N2VkODA2MzQwOGE0ZjE5ZWNiNTFkOGY5N2NlMzYgbGVnYWN5LXRydW5rCiszMDc4MyA3YWNmNTc0NDBmNGUwOWZlNWJlZmNjYTA4NTU5YzlkYzNkNWU0OGU0IGxlZ2FjeS10cnVuaworMzA3ODQgOGQwZTA3YzI3MGVmOWIzMTE0Nzc0Y2FiZWYzN2UwNTU4OGJkOTk0NyBsZWdhY3ktdHJ1bmsKKzMwNzg1IGFmODExMTcyNzE3ZDBhMzEwMTRlZWRmYWU1NDRkNDdhYjY1NjRhMjEgbGVnYWN5LXRydW5rCiszMDc4NiBhOWRkYWRmNzg5ZWFiOGY2OThkYTM3M2U3YzcyOWE3M2U2MjRmMzRkIGxlZ2FjeS10cnVuaworMzA3ODcgYjc0NDUwOGQ1YjEyNjQ2YWYyMGJjZWMyNTE0YWMzYjExM2VlOWI3YSBsZWdhY3ktdHJ1bmsKKzMwNzg4IGJlM2QxYjdlNjJkYzI2OWNiYjg0N2JkYjQxY2UxMjg3YjQxNGI5YjcgbGVnYWN5LXRydW5rCiszMDc4OSBkYmU0ZjU3ZThiYjI5NTZjYzk4YWU5ZjIxOTczMTIyOTAzNWM0ZjQyIGxlZ2FjeS10cnVuaworMzA3OTAgMzkyZmVlY2QyZjFjNzFlZDhiNzNjYzkyNzFlMDgxNmVkZWUyOGQzYiBsZWdhY3ktdHJ1bmsKKzMwNzkxIDkxZDY3OGE5NGM3MzYzZjUwZGU5ZDlmNjczMDJkYzAwNGYyY2IxYzggbGVnYWN5LXRydW5rCiszMDc5MiA2NGQzZmU5MDRhMGFmOGQ2NzRiMjRlYWUwNDVkZDVkZjM5MzdhY2JhIGxlZ2FjeS10cnVuaworMzA3OTMgY2RhNWFiNjI1Nzc0ZmFkZDUyMDI5Nzk0NWQ5NGUyMmE2NjI2NWNlYyBsZWdhY3ktdHJ1bmsKKzMwNzk0IGQyYWU1YWZmZGUxNGU3OTY0MDEyYTQ2MTc5MGY2N2JjYTZmY2E5NmYgbGVnYWN5LXRydW5rCiszMDc5NSBiZWRiNzVkOTBlMDNjMzk5ZjJlMDE2ZjYxODJlYTM3YWRhYzAzMTM3IGxlZ2FjeS10cnVuaworMzA3OTYgN2ZkZDVkNjJjNjE1YWYyMGFmNjRiOTgxMDJhNWMxOTg4ZmViZTg1ZCBic2RkYi1ic2RkYjMtc2NoaXpvLWJyYW5jaAorMzA3OTcgOWRhNDNjZGU4YTE2NjFlNjhjNDU1ZmFhZThlNDc2ZmU1YjQyYWM4OCBsZWdhY3ktdHJ1bmsKKzMwNzk4IGNiZjM1NWYyOGNhOWY2ODkyODc4OTkxNDljOWEzMzQxMGM3ZTVlMGUgbGVnYWN5LXRydW5rCiszMDc5OSBjODIzNGUyNjExNWM2NmQ0YWM5YjQ4YTJiZWM2ZTYxNjRlMmI2YmFmIGxlZ2FjeS10cnVuaworMzA4MDAgOWRlMDY0YzdhMjQ3ZjExZmMzOGUwNGJjZjlhNzQyMTAwMmVlNTE4MSBsZWdhY3ktdHJ1bmsKKzMwODAxIDg3YjY2YjZmZjVlNzZmNzcwMmVhM2ViNzQ1NTA3M2UzZTU0NGRmNzQgbGVnYWN5LXRydW5rCiszMDgwMiA1YTA1MDIwMGY3MzY1ODZjNWY4ZDUwY2RkZDc3ZmZiZjdjOWU4ODY1IGxlZ2FjeS10cnVuaworMzA4MDMgYzZmNDliNzk3OTYzZWNiZmY5ODVhYTRiZThjN2RhYWVkNmM0MzdlYiBsZWdhY3ktdHJ1bmsKKzMwODA0IDg2Njc1NmY2NzBmZmQ1ODQ1M2QxNWFjZTAwYTdiNGE4NzVkOGYxNTggbGVnYWN5LXRydW5rCiszMDgwNSBkZjI3NTRhY2E3MTcwNGY0YmE0N2U4NDQzYWFjZTQ1YzVmY2U2MmRmIGxlZ2FjeS10cnVuaworMzA4MDYgNDBlNWViOWUwNGUwZTgzNWFiNWNlNWY2NWVjNWMyMTA5ZWI5MDFhMCBsZWdhY3ktdHJ1bmsKKzMwODA3IDA0ZTU2MTBjNWVmZTk3YWY0NThmY2RkNDY2MWVjN2Q3NDY1ZmE1ZWIgbGVnYWN5LXRydW5rCiszMDgwOCA4OGZhYTk4NWQ5OGMzZjM2NjNhMDczNjc2ZDUwM2NmYmMwOWJlODI1IGxlZ2FjeS10cnVuaworMzA4MDkgOTdmNDk0YmY3MzE5MGFkOWJkMDZiMmJiYWU1YmQ4NjcxYjdhNzU2NCBsZWdhY3ktdHJ1bmsKKzMwODEwIDc1ZGE0OTk3NzU3MWE0ZWFiOWExOTJiMDJhNmEyYWI4ZjEzMTNlYjYgbGVnYWN5LXRydW5rCiszMDgxMSBlODNhNDJhOTBkZjE2Mzk2YTdhZmJmODc1ZWQ0MGU4YTVmZDdlOGUzIGxlZ2FjeS10cnVuaworMzA4MTIgNzAzOTM3NTIyNmE3ZjI2MjdhZjBiNTU0NThkYWJhMDEyNTJlNzRiOSBsZWdhY3ktdHJ1bmsKKzMwODEzIGQ3ZjgwMDI4MzAxZGViNzRhMDFmNTg1NTEyNzNmZGQ0MTFkNTkzZTcgbGVnYWN5LXRydW5rCiszMDgxNCBiZmMxNDBjN2UzZDA2NTFmMDNhMzkzOWFlYjEyZGVkOWY0OWYzOGE3IGxlZ2FjeS10cnVuaworMzA4MTUgNzA1NWY0YzFlZGNjMzQxZTdkNGM0NTRkNmExOTRjNjg1MDA3YzI4YiBsZWdhY3ktdHJ1bmsKKzMwODE2IGI4Mzg3NzMwZGQ4ZmY0MTVlNzkyN2Y2ZmEyZDQ0MzgzYTg4MDc2MDkgbGVnYWN5LXRydW5rCiszMDgxNyBjMWM0NTQ3NWYxNzBlNDBlN2U5MmNkZjUyMzlmMDY4N2U4MzNkYzIzIGxlZ2FjeS10cnVuaworMzA4MTggODE1NTFhZGYxMmY2ZDFlY2YyNDVjODk5ODZkZDc3YTczNDZjZThhZSBsZWdhY3ktdHJ1bmsKKzMwODE5IDA1ZmY5MDRlZTRlMDdiNmM2NmNmNzJhNThlMjA4ZGNlNzQ0N2JjZmEgcmVsZWFzZTIyLW1haW50CiszMDgyMCA0ZmE5YWQ4NWMzYjE1ZGMyZGY4YmU4NjU0NWFiN2M5Zjc1NWI4MDNkIHJlbGVhc2UyMi1tYWludAorMzA4MjEgMTM2OWQyNGJjODYxZGNhMjY4NzE1OGRlOWQwMDE0MDVlMzY4MmI5MCBsZWdhY3ktdHJ1bmsKKzMwODIyIDVhOTc1ZTgyZDcwZmI1YmMwNDljZDQ0NjIwZDhlZDdhYWQ1OTQxZjIgbGVnYWN5LXRydW5rCiszMDgyMyBkZTgwMTczM2VjMTg4NzViYzJjYjZkOGQzNjI2N2QxNTI1ODkxMDU4IHJlbGVhc2UyMi1tYWludAorMzA4MjQgMGY4ZDE4OTMxMGI0NWE5ZmRiNjQ1NDNmNTRlOGNlZTkyODBhZjNmZSBsZWdhY3ktdHJ1bmsKKzMwODI1IGE1NTUyMzBiZTNjYjAwNzNiM2U4MmRhY2FiMGJiNzg1N2ZiNTg5YTggbGVnYWN5LXRydW5rCiszMDgyNiA3MDQ2MzlkMjBhNmNkNjI1YmMwYTMxMmI2N2Y1ZWI0ZTQxNDg4NzhiIGxlZ2FjeS10cnVuaworMzA4MjcgZWE3NjgwZWFmOTM3ZGY3MzgyNjQyNTJkNTU2MDczNmQwMGYwYmY3NSBsZWdhY3ktdHJ1bmsKKzMwODI4IGRhZGQxNzhiNjVmYTU2OGFlMGRhNmM4NWUwNzhhMGQyOTg1OGFlMzEgbGVnYWN5LXRydW5rCiszMDgyOSBmZjE3OWJhZGUzZjBkYzM5ZTRiZDBhOTljZTVjMzJkOWRhMzg3ZmU4IGxlZ2FjeS10cnVuaworMzA4MzAgMTg1ODQ3MTQwY2E1ZGJkZGExMWZmOGYyYjFlMzI2M2Q4YzFhZWNjMiByZWxlYXNlMjItbWFpbnQKKzMwODMxIGEyZjg0ZDI4MzVmYWY4MjVkOGUwM2U0YzYxZDQyYTQ3MmI0OWUwMTIgbGVnYWN5LXRydW5rCiszMDgzMiBlYWE2MTJhNDFkZDBkNjllYjBkOWYwOTU3MmJhMzBhZDViZDQ2NGUwIGxlZ2FjeS10cnVuaworMzA4MzMgOTIyMDA5OGYwMzI3ZTliMmMwMTMwYzQ4MGU4N2VmMzY4ZjUzODk3YyBsZWdhY3ktdHJ1bmsKKzMwODM0IGM2ODI5MDc5MGQ1M2Q2ZTAxZGMzMjI3MGRkNDA5NGM4MTEyZmM2Y2EgbGVnYWN5LXRydW5rCiszMDgzNSBjZGFiMmI3NGYzMDdlYWQ2Mzc5NzU2OGU1OTU0M2Y2M2IzOTFkNTgwIGxlZ2FjeS10cnVuaworMzA4MzYgZWZhMmY4YWJiMDJjOWE2MTViMDA0Yjg5MWYzNGU5NDMyOWNmOGNkYSBsZWdhY3ktdHJ1bmsKKzMwODM3IDNjNzAyM2M5ZThlMjY3MWJkY2RkNzY0YmQ5NTY4OTNjNmJjZTc3M2YgbGVnYWN5LXRydW5rCiszMDgzOCBkOTY2YmI1NGIzZGUwZDhlNWQ3NTA0MWY4MTE1ZjJmNDA5OTJmNDg1IGxlZ2FjeS10cnVuaworMzA4MzkgNzA2N2QzNmMzY2Y0NzAxOTU2MTA3NWNjYjU1NzA5MzFhNTVkZjg1YSBsZWdhY3ktdHJ1bmsKKzMwODQwIDc1ZjM4YzQxNWU3ZDRkMDdjODY0YmIwMDEyYmZlYWFkOGI5YzI4ZGMgbGVnYWN5LXRydW5rCiszMDg0MSAxNTYyYzFlMTBiNDk3ZGE5NzE0OGNlZjk2YzIwZDZjYWM5MzA2OWQ5IGxlZ2FjeS10cnVuaworMzA4NDIgMjk5ZWYyZGFiYjUyYzY2MjRjMDM3ZmIzNjMzN2Y5Y2ZkMjE1NjYxMiBsZWdhY3ktdHJ1bmsKKzMwODQzIDg4YmYxMDMxMzU4NGRlNDE2N2YzODY3NDA1OGY5NTc0NjhlNTAyODIgbGVnYWN5LXRydW5rCiszMDg0NCAxYjYyMjlhZGIzZGY5ZGYwMmM0NGE2OWYxZWM0MjlhZTM1YmM0MTBjIGxlZ2FjeS10cnVuaworMzA4NDUgZDVhMzM4NmM3NmY0OTQ1NmNiNTA1YjFmOTgyNzIwODA3ZTI1NmI4NCBsZWdhY3ktdHJ1bmsKKzMwODQ2IGM0MDQ4NzljZjk5OWIwMzMwNWUxMWIxOWFkNDUwZjVkNTc3NDI0MGEgbGVnYWN5LXRydW5rCiszMDg0NyA0NGUzNTJkN2Q1MmZmYmI0NGZhZDEwZDcyMWFmMjUwMTc2YzU1YmZkIGxlZ2FjeS10cnVuaworMzA4NDggZTJkYTBkZjM2MTNkMWNhM2FjNGFiMzg4NzJhMjAzODYxZDU1OTliZCBsZWdhY3ktdHJ1bmsKKzMwODQ5IDY4MzMzOWI4NTJhYmQ0OWI5YmRhNmI2NWJmYTVkYjA3MjRiZjI3YmMgbGVnYWN5LXRydW5rCiszMDg1MCA4NzA0NWE4ZWM1NDcxNzkxNjAzMDcxNzVlOTlhOGYwNDkxYzUzMDU1IGxlZ2FjeS10cnVuaworMzA4NTEgNmNkYTdjNjEyMTU0YTc2ODY4NTc4YzlkZGE5NTJjNTZmNTQyYzIwNCBsZWdhY3ktdHJ1bmsKKzMwODUyIGEwYTkxNDcyM2M0ODBiNzEyNmMxOTlkNmM0MmNiMjgwYTM2ZWQ3ZDMgbGVnYWN5LXRydW5rCiszMDg1MyA1OTdhYTk5NjZlYzZiYjMzMzA3N2E4NzY0Y2YwOGUxZjcyMTVjNDg0IGxlZ2FjeS10cnVuaworMzA4NTQgZjRjNjk0YTAxNDI1NjgzNWI3Y2NhMGFjNmVkNWY0NTRjZjY2MTc2NCBsZWdhY3ktdHJ1bmsKKzMwODU1IDIyZmI3NmM1MzkyNjc1MTZkZDYxYzY1YWU3MjhjZjVjYjVmYWZhM2MgbGVnYWN5LXRydW5rCiszMDg1NiAyYzY0OWM3YWU4ZjNmMmJmN2M0YWUxZDAwYWM2YTExMjg3ODYyZDBjIGxlZ2FjeS10cnVuaworMzA4NTcgY2JjYTBiY2YxYzMxZTllYWNkOTFkNzE5ZDA4Yjc3NGFiMzdhN2RhNSBsZWdhY3ktdHJ1bmsKKzMwODU4IGI0NzBjYTg0ZmQyYjVlYzk5ZWE2OWQ2YWYxZTliZTUzYzIyODgyYTMgbGVnYWN5LXRydW5rCiszMDg1OSBlODA0NTZhZDE5NWI2OGQ4MDZlYjY2MDZiYjYxZDIxMjQxMDdmYzJhIGxlZ2FjeS10cnVuaworMzA4NjAgZDM0ZWYwMGQ5ZGE4YTA4NjA4NjQ0M2Y3MjVmOGE4NjNkN2M0ZDFhOSBsZWdhY3ktdHJ1bmsKKzMwODYxIDhiNTNiMGNlMDZkNDU4ZTdmNDFhZTYwMWFhMjcyNGM0ZGJjYWYyY2IgbGVnYWN5LXRydW5rCiszMDg2MiBiYTYzZDcxN2M3NWYwMDA0YzBiY2VhYzcxMjRlNWI5YTNiM2NhMjIxIGxlZ2FjeS10cnVuaworMzA4NjMgOWZlMzZhZTJhNGEyYjJhODVmNGJiZGFkOGE0OTUzYmMxNGM2MDIwMiBsZWdhY3ktdHJ1bmsKKzMwODY1IDliZTMxNDlmYmVlNzE3YjQ2M2E4OGFkNDcyOTBhYWY5N2ViZGRmYzUgaWRsZWZvcmstbWVyZ2UtYnJhbmNoCiszMDg2NiA0MTJlNjZlMzUzMGVlN2YwYjY3MTI3NDhmZGQ4MGJiYjlmZjRiNWMyIGxlZ2FjeS10cnVuaworMzA4NjcgNGY1OTk4MWY3ODE3ZGFjMTE1OTA4OTA0MjliMzY0OTdlYWY0NTI3MCBsZWdhY3ktdHJ1bmsKKzMwODY4IDE4MDA2N2MyODgwZmVlNWM0ZDQ2Y2M4MjI0ZGMzNGU5OGQ5ZTE3MTYgbGVnYWN5LXRydW5rCiszMDg2OSAyMDU1ZDAzNzI5NWNmMDk5OGMwYzkwYzNjYWRiZmIxMGUzZjcyMWNiIGxlZ2FjeS10cnVuaworMzA4NzAgMzBkYThjOTZmZDI5ZWYzNjViODhmYzk2YWUyOTUwNGMwOGJiYTczZSBsZWdhY3ktdHJ1bmsKKzMwODcxIDVhY2Y2OTY3ZDZkZDM3MTQ4NjBkYzNkYzk2ZjE5MGMwMzlmOGFlOTkgbGVnYWN5LXRydW5rCiszMDg3MiBkZGI1MmY1NjczZGI1YTg1M2U3MjVmZWI2NWY3OGVjMWIxODlkZTg0IGxlZ2FjeS10cnVuaworMzA4NzMgMjI5OTJmYTUxODMxMGZlZjE4YTg1YzE4OTk0MDgxNjJkMzEyNjhiOSBsZWdhY3ktdHJ1bmsKKzMwODc0IGJiZjE0MTg1YmYxZTdlNmI2ZDI5MWUxMTg0YWM1ODhiZTQxMzIxMTYgbGVnYWN5LXRydW5rCiszMDg3NSA0MDY3N2ZlODUwM2QzMGUwZTFjMWI4ZWVlNTJlMWFkMGRlYjkxN2M1IGxlZ2FjeS10cnVuaworMzA4NzYgMjdhZWRjZjQ2YmNjOTJmZjNmMTc5NGRkY2I4MTE3OThlYjAzMjczZiBsZWdhY3ktdHJ1bmsKKzMwODc3IDQyOGM4YTQyMzA0M2VhZGQzNjViNmE4NjMzYTY5YjNhNGUzNTYyMDEgbGVnYWN5LXRydW5rCiszMDg3OCBkYzYxMTYyNzgyNTkzZDhjNzQwZGZlMWQ4ODBiNTMxMzhjYTJlYTI4IGxlZ2FjeS10cnVuaworMzA4NzkgOGRiMmU3NGRkYjBlNWFhNGY0ZjBlY2ZjZWVjOGM4ZjI0NzdiNzA5MyBsZWdhY3ktdHJ1bmsKKzMwODgwIGFmZDFkYzYyZTM1NGRlZTMzYWEzOWNjNDM4YWUyZDhmNTYyOGJhZmIgbGVnYWN5LXRydW5rCiszMDg4MSA1OGJhZDc2OTc3NmU1OTk5ZTRhZDMzMTNmN2UzYTIwMzYyOGQ5ODY0IGxlZ2FjeS10cnVuaworMzA4ODIgMDRlNDU2NTgzMmJkZDM5YzhiNGI2M2E0ZGYxZmZkNDFlOTJhY2YwZCBsZWdhY3ktdHJ1bmsKKzMwODgzIDI3M2IyYjQ5YmZkODY4OTk4NjA0YzRmZTJiNGY2ZjFjYzg2ZDRhMmIgbGVnYWN5LXRydW5rCiszMDg4NCA4OTFlYzRkMjY2ZDE3ODY3ZWIwYzMzYzE4NDg5NjQxYTk1MGU4YTIwIGxlZ2FjeS10cnVuaworMzA4ODUgNGE0OWI1YWE1ZDIxMjcxOGM0MTRmNWUyZjkxN2RjYTYyMTRmMzI3OSBsZWdhY3ktdHJ1bmsKKzMwODg2IGViMWU1MjlmZGZkZjBkNGI5YzJkMjI5MjU4ODZkM2JmZDkzYTA4YzEgbGVnYWN5LXRydW5rCiszMDg4NyBmZGU3OGQ4MGUwOTg5ZDJhMzQwM2FmM2M5NWQ1ZDNkYWQ5M2RiN2ZlIGxlZ2FjeS10cnVuaworMzA4ODggMDBmMjk0YmY4Mjk5ZjYxNzYyMzFlOWY2NTEwOTJjZTNkMmFkY2JkMyBsZWdhY3ktdHJ1bmsKKzMwODg5IDYxNDdiYzE0ZDI3N2I2ZGJkNTZhY2VkZDcwNzFjMGRkNWM3NDg5NDkgbGVnYWN5LXRydW5rCiszMDg5MCBmZjBlMWVkOTk4ZGVkYWIzY2Y3MTZlNWUwYTA5NThhMGZmM2U2MzI5IGxlZ2FjeS10cnVuaworMzA4OTEgYzFkYzUwZGY1NzhjZGNlYmE1ZjI1ZDI0NjFhZWQ3MjBkMTMzOTdiNiByZWxlYXNlMjItbWFpbnQKKzMwODkyIDEzYmVlYTJkMmQyNmFhMWExZjUxYTFhYzg0ZmM0OTQzNDQwMzlmNzIgbGVnYWN5LXRydW5rCiszMDg5MyA5YzRiNDIwN2U5NzlkYzNiZmMwNDYwOWE4NDFmMWUxZmQyOTRmYWEwIGxlZ2FjeS10cnVuaworMzA4OTQgNWIzZmJmZjA1ZmZkYTliM2ZjZTIwOWJlNzBkOWYyYjExMDQ1Njg1MyBsZWdhY3ktdHJ1bmsKKzMwODk1IGI3MjU2NDk2YzliMDFjNzQ2M2ZhMWQxYjk4NDkyZjNmYjk0ZWRiYzggbGVnYWN5LXRydW5rCiszMDg5NiBkMjljNzhkMjdjNWUzYjg4YWQ4ZjE5ZTE3ODY5YjMxOTM1OGFiNDI5IGxlZ2FjeS10cnVuaworMzA4OTcgYmUxNzhhZmQ0MTgxNDUxMWZlYTg4ZTQ0Njc1NDQ4MGZkMjE3YTYyZCBsZWdhY3ktdHJ1bmsKKzMwODk4IGUyZDc5ZmZhMjkyOGM0MGVhZDRlMTVkZGI3ODFlNTE2MGM1ODhjOGEgbGVnYWN5LXRydW5rCiszMDg5OSA4NDBlOWZlZDkwOGExZmI4NWRmZWQ1ZTIxNTU2ZjljZTQ1ZTQ0YzY3IGxlZ2FjeS10cnVuaworMzA5MDAgZjNiYWJhZWRlMTg5YTBiNmEzYTJjZmQ3ZjI3YTkyZGFjMTI5OWM4NCBsZWdhY3ktdHJ1bmsKKzMwOTAxIDgxNTY5Y2NkZTViZGYwMGRmNjVlZjc1ZmRkZTE0YmM4ODRlNzNhOTQgbGVnYWN5LXRydW5rCiszMDkwMiBhNDU3NTMxYzBmZDQ5NTEwNzIxNzY5NTBlMDRmMWMxNzdmMGY3NzM0IGxlZ2FjeS10cnVuaworMzA5MDMgNjI5NjAzZjY0NDEyNmNhMzUyYzExOTk3MGNkZDE3M2JjMzdkODAwOCBsZWdhY3ktdHJ1bmsKKzMwOTA0IDhkODY5ZjkyMWYyMjY0MjEyN2Y5OWYwMjgzNjA0ZjJiMTE5ZTM2MGYgbGVnYWN5LXRydW5rCiszMDkwNSA5YmNmODVkMDEzNWMyZTc0YWZlOGM4MTcyMDM0YWQwNmM5ZWE3ZDk4IGxlZ2FjeS10cnVuaworMzA5MDYgNTE3NGI0YTcxZTZlNGI3NzRmYTk1ZmY2OGYyN2U1NmNiYjhjZTg2NyBsZWdhY3ktdHJ1bmsKKzMwOTA3IGQzNjNmODNjMjg0NmE1MmY1NzIzZTE1NWNkMmE2OGUxM2IwMzBmN2MgbGVnYWN5LXRydW5rCiszMDkwOCA5MWE1NzMyNDNkNWQ3OWVhYTUwODI3OGNhYmFkYTU1OGU5NjkxMzAwIGxlZ2FjeS10cnVuaworMzA5MDkgMDE1NjQ3YzdlMTg0MzM2NGE2NmEzYTBmOWE5NjVhMDdmMzY4NjdhOSBsZWdhY3ktdHJ1bmsKKzMwOTEwIGY5YzQ4ZWQ2N2E5M2FkNmVhNzkwOTUwNDUwZDI2Yzg4NGZlZWFmNzYgbGVnYWN5LXRydW5rCiszMDkxMSBlN2NkYjUwM2QxZTA1YmFlOTE4NGIzNzRkOTNjYmNiZjdjZWIyZmY3IGxlZ2FjeS10cnVuaworMzA5MTIgYWE5NGM4MjBiM2VkMDJkY2Q5YjQ2MmU0Yjc5NWFmZTYwYjUwYzIxNSBsZWdhY3ktdHJ1bmsKKzMwOTEzIDg4MmUzZWVhYzNkZDdhMzA2MDVhMDZhMTZmNDg5YWE3NWFhOTdlMTcgbGVnYWN5LXRydW5rCiszMDkxNCBlN2NkM2NjMTEyZDMwMDEwOTI0MzUzNzc5Nzg5MmNhYzUzM2E2MjAzIGxlZ2FjeS10cnVuaworMzA5MTUgMjhiM2Q5YThlZTFhMzM2YWE5NmIwMjU1YzhiZDg2NWU1NTkxM2VlNCBsZWdhY3ktdHJ1bmsKKzMwOTE2IGU3YmU2ODY4MDMzMjZlNDgwODFmMWM0YWQxOTZjN2QxZjA5YzQzMjQgbGVnYWN5LXRydW5rCiszMDkxNyAxMjM1OWU1Mzc1MTJjMzI4Y2QyM2Y4MjFkZGYxZDk5MTZmNzgyNGE4IGxlZ2FjeS10cnVuaworMzA5MTggMDA2NDA3MTRhNTlhNWQ4OGQ4YzNkNzE2MjM4OTI1ZjYwNWEyMzk1OCBsZWdhY3ktdHJ1bmsKKzMwOTE5IGYxZGQ5MDM1N2RjYmExN2NkODI5Y2EwZDQyNGI4ZWI5NzdiYjQ4MTQgbGVnYWN5LXRydW5rCiszMDkyMCBlYWYzZjgwNzAwYjNkNWQxOWI4OWJmYWI4OTk3OWUyMTY2YTBmODM0IGxlZ2FjeS10cnVuaworMzA5MjEgNDc5NThjOTk0NTJkZTM2ZTJmOGUwM2MzY2NhZTI4ZWY3NzhhOWI3ZiBsZWdhY3ktdHJ1bmsKKzMwOTIyIGQxNmE5Nzc3NDZhMjM3YzYyNGU0OTUzOTBmMzg0ZTI1NGU2MmI3YjEgbGVnYWN5LXRydW5rCiszMDkyMyBkYTBjOTkxMjU1YzJlZjY0ODQzMWQwNGZkMDFlYWRmODg2Yzc2MjA2IGxlZ2FjeS10cnVuaworMzA5MjQgNDE3MmIyODZkNjU4YzdhMWI4YTVlMTY1YjA3NWVlZWIzYTFjYmU3ZSBsZWdhY3ktdHJ1bmsKKzMwOTI1IGU5NDVhMDNlZTU2YzY5ZWY1N2Q4NjlkYWEwZjhmYmU2NWZiNTFmMTEgbGVnYWN5LXRydW5rCiszMDkyNiBhZWQyZWY5NmVkNTRkNzk1OWJjNTMxYmIyMDViYzJiMWJmMmZjMWMyIGxlZ2FjeS10cnVuaworMzA5MjcgNmViNWUxYTA5Yjk1ZDVlNmE5MWE3M2QwNjYxZTEyYjgxMzI5MDhlZSBsZWdhY3ktdHJ1bmsKKzMwOTI4IGFjZWRlY2QyMDEyNmFkZmIzMzdkNDExYzJlOTQ3MGFiYjgwMWY3ZmEgbGVnYWN5LXRydW5rCiszMDkyOSBjYWE2ZGY5ZTA4ODA1ZGNjNzU0YTczZjQwYzA5N2ZkZThhMzY1NWQ3IGxlZ2FjeS10cnVuaworMzA5MzAgZDE5YmMzYjE4MTNjYjUxOGM3NmJkZWEyMjVmNjAyMTExMzk4ZmJmZiBsZWdhY3ktdHJ1bmsKKzMwOTMxIGVhNWVlM2U3YmZiMTBhNzhmYTg4NzE5OTc3MjZkNGRmMDFhOWJjNGYgbGVnYWN5LXRydW5rCiszMDkzMiAxZmQwNGMzNzQwOWFiM2ViNTQ3ZTAwZDVmMWQ5ZDA4NTEyNjA5ZDNmIGxlZ2FjeS10cnVuaworMzA5MzMgYTI0ZmQ0NWFjZWIxOGJmYjIxNGE0OTc5N2MwM2MwZDc3MWI2NmQ2YyBsZWdhY3ktdHJ1bmsKKzMwOTM1IDU2ZDgzZDBjNTViNjBmYzE3ZjliZDY3NDQxNGVjMGFmYWUyZDgzYmYgbGVnYWN5LXRydW5rCiszMDkzNiA1NTBjMTVjNDkxOWIxNjI4M2NjODBiZWI0YTRhZDg1MjBiMjVhMDJjIGxlZ2FjeS10cnVuaworMzA5MzcgNWMxMzNkMTNmMzI1NjJjYzQyZjc2MTgyNDFiNjYwZDg0YmU0Njc1MiBsZWdhY3ktdHJ1bmsKKzMwOTM4IDk5MjRmMjJkNjYwNGU0Mjk0YjMwYjZmOTZmYWI5MDZlMTM2MmQzMmUgbGVnYWN5LXRydW5rCiszMDkzOSAyNzQyZWE5M2FiMjMzYTQ4ODI3NjE0OWZkM2Q2MTk0NzU2ZWNjMzhjIGxlZ2FjeS10cnVuaworMzA5NDAgMjBkZjI0YTEzMzQ5MDI5ZTZhMjU5NWRmMjZjNTlmYWEwZmVkYzAxNSBsZWdhY3ktdHJ1bmsKKzMwOTQxIDllNDMwYWNjY2RiOGY1YzAxZTA2M2I4YTlkMjdlZWEyZWVhMWUyOTEgbGVnYWN5LXRydW5rCiszMDk0MiAwMDlmM2FiYmY3MjYyYTI1YWZlOGNhMWQwMDMyMmFlMDFmYTVjY2U4IGxlZ2FjeS10cnVuaworMzA5NDMgYzc0Y2VhMjQzNzJlOGY1ZjMyMWNhMTNhNjBlNjM5ZmVhZjE5Mjk0NyBsZWdhY3ktdHJ1bmsKKzMwOTQ0IDdkM2M2YWQ0ZTNlZGM5YzJjYWYyOWE4MjNkNDRiMzM4MDhjZTY0MTcgbGVnYWN5LXRydW5rCiszMDk0NSAwYWVhYTNkMWUwZmY3OTQyYzE3YTc2ZWY0MGI3NjdjODgwZTI0YjMzIGxlZ2FjeS10cnVuaworMzA5NDYgMjRjOGZiZWM3NjFmMjMxZDdmMzhmMjI4NDliN2VkMDQwYjA0YzM5NyBsZWdhY3ktdHJ1bmsKKzMwOTQ3IDNjM2U0YzhjNGE5ZGZmMDI2YjJjYzE2YzNjYjA3YzI3MzA5MTdjMzEgbGVnYWN5LXRydW5rCiszMDk0OCA5M2JhNDJjZjRlNTNhY2Y4YjExMmJlY2NhOWQ1YjVjMThlMmYzNWNhIGxlZ2FjeS10cnVuaworMzA5NDkgZmEyNDUzOGY4NjUwYTU2MmM1NTAxNGUwYTIyZGJiYTBhMWQ2ZGE5NyBsZWdhY3ktdHJ1bmsKKzMwOTUwIGUyNmEyZjdmMjI0YjU5YTQyMjM4NjM5ZDc0NGUzMWE3YWI0ODgzMTYgbGVnYWN5LXRydW5rCiszMDk1MSBiZjBiYzg0ODE1MDIxNDNiMWM3ZGIyMTBlYmNmYzk4MTgwMzNhODVkIGxlZ2FjeS10cnVuaworMzA5NTIgM2NkOWRkZDU1NjJlYTA5OWJhMmFiNmI1OGNiY2FjZDJhZDJhYmQ4NyBsZWdhY3ktdHJ1bmsKKzMwOTUzIGI0NjVjOWQyMTk2YTNjYmE4NzkzYmZlM2FiM2ExYjc4YTAzMzE4MDUgbGVnYWN5LXRydW5rCiszMDk1NCAxYWUwYjE0MjM3MGU0MDg0ZWRhNGNiMjIwNDkyZTNmNmJjY2EwMzllIGxlZ2FjeS10cnVuaworMzA5NTUgZjhhOTAwODVhY2M0MWU5YTA2MTJiYWI3OGM4YmFiZDYzMjQ0ZmZmNSBsZWdhY3ktdHJ1bmsKKzMwOTU2IDQwNDc4MjE0MTliNTdhODg1OTBjMTlkOGI3ZTEwYjRiODYzNmMzMzEgbGVnYWN5LXRydW5rCiszMDk1NyAzNTczNjU5MWRjMWU3YTUzMWVjMzJkM2M5OTlkNzRiMDM3YWQ2YjdjIGxlZ2FjeS10cnVuaworMzA5NTggNzExNmNiNWJhYzUwODNkNDliMjJmYjVjZTJmNTljY2RlY2VmNjIxYyBsZWdhY3ktdHJ1bmsKKzMwOTU5IDQzMGVkMWM4ZTA3MWRhYjAxMTU0MGYzZGE5YzI4YzlkMjdmNjBlODQgbGVnYWN5LXRydW5rCiszMDk2MCA2MGZmMWJhNDI4YzNmYTBiMDY0ZGU3ODI5MmI5MDA1MGRkMDc2ZjQyIGxlZ2FjeS10cnVuaworMzA5NjEgOTFhZTI5MmMzYTk3ZjBjZDM4YTAyYmMzYjI5ZmJiNWIxOTc4MjJhNCBsZWdhY3ktdHJ1bmsKKzMwOTYyIDE4ZThlZDgwZThkMTc0OGRmZjVmM2ZiNzQwYTNiMzBjZDQ1ZWJmMmIgbGVnYWN5LXRydW5rCiszMDk2MyBkOWQyNGNlMWNiZjY1OGQwNzMzYWFiZDgzMjkwNjZkYzA3NDM1NzVkIGxlZ2FjeS10cnVuaworMzA5NjQgZTRhNWY3NTM1MDhiYzUwYjAxNTQ0N2ExNGRiNTZiZDkyODhhNjBhNiBsZWdhY3ktdHJ1bmsKKzMwOTY1IDVkYjJjZjNlNzdkYjMzYzk4MGZkMGUxNDljODBmNjc2NmI0N2Q5MWIgbGVnYWN5LXRydW5rCiszMDk2NiA2YjBkYmRlMGZlZDcxNWEyOThjYjc0MjExYWVkMWRmZjU5YzIyZWY1IGxlZ2FjeS10cnVuaworMzA5NjcgOGYxMzcyOWE5NGE5NjZhMWExOGNhNDdkODExZGM0NjU5ODQ0YzM1MCBsZWdhY3ktdHJ1bmsKKzMwOTY4IDFmNjMyNzE0MGZjMjNjZmI4MDdkOWY5MTZlMTM1ZWZiOTE1OTRjZjcgbGVnYWN5LXRydW5rCiszMDk2OSBhMTYyNjJiYzYwOThkZDA4MDE3YzM2MTY4Zjg0ZDQzZTJiZTJkYmQwIGxlZ2FjeS10cnVuaworMzA5NzAgOTI1ZWRmOGUwMDBjYTdkZmFhMjEwZjc4ODZhMzEzNGZjMjlkYWExOCBsZWdhY3ktdHJ1bmsKKzMwOTcxIGQ4YzJjNDBiMzg2YjE5YTBkNjc4NmVlYjg3MTkxMWY0NzFiYTU1NTkgbGVnYWN5LXRydW5rCiszMDk3MiBiM2NiZTdhMDE0MmE3OGQ5Njc1NjllNmJkNzMyYzJhYjYzNGZlODkwIGxlZ2FjeS10cnVuaworMzA5NzMgMGE0N2Q4MzJhNjRiNWI0ZjEzYTIwYWM4ODQyOWNkYmE2NWJmMzYxOSBsZWdhY3ktdHJ1bmsKKzMwOTc0IDQwMTVhMjdhMWQxM2YyYzc0ZDYzYzIyY2YxZWJhMTk0Njk2YWVjMmEgbGVnYWN5LXRydW5rCiszMDk3NSBhMjMwZDEyMDBiYzM1YjNkMjY2NWFmZDNhOTljYjE2OGQwNWI3NGU2IGxlZ2FjeS10cnVuaworMzA5NzYgN2ZiNWU4YTU0MWFiOGZjZTczYWQ2NTlmNGU2ODIxMWMwZTg2OTUyNiBsZWdhY3ktdHJ1bmsKKzMwOTc3IDM1MDlhZDA3ZDE1NmFjYjZlNTY4MmIzYTFjNDRmMWIxZmEzMDkxNjkgbGVnYWN5LXRydW5rCiszMDk3OCA5ZmUzMjE1NGQyODkwMmVlNjVmN2Y5MDA5ZjQ0NTRjMGZmYzMwOGU4IGxlZ2FjeS10cnVuaworMzA5NzkgYjJjZTljNjM3YTJiYzYwMmM4MjkwNDcyNTk2NjVlMTVhZWM3NDEyZSBsZWdhY3ktdHJ1bmsKKzMwOTgwIDExNWVlNDA1MThhODRkY2FkZWJiMWI4ZWUwOGNjYWNkNGFhN2ZlMjcgbGVnYWN5LXRydW5rCiszMDk4MSA2MmM2Njg5M2MyZGJhMmE0NTAzZDQ2NGExYTkzYWY4ZWI2YTY4MDFiIGxlZ2FjeS10cnVuaworMzA5ODIgNGMwM2VmMDZjM2ZmNzA0ZmExZDBiOGMyOGIzNmFkNzUwMjA1MWY1MSBsZWdhY3ktdHJ1bmsKKzMwOTgzIGVhNDgwNDA2Y2M2NTYyMWNmMGVlNjJkNTQ3ZTY0MzhiMzVjZDZhZmEgbGVnYWN5LXRydW5rCiszMDk4NCAwNTU0YjdjNWY2ZDdkMjY5MjAzOWMwMGYyNTJmMTFiYTQyYjJmMmRmIGxlZ2FjeS10cnVuaworMzA5ODUgODgzYWYyOGI5YTBkMDY2MGVmYmIyZjk4NzExYzlhYjljOTQzOTg4MyBsZWdhY3ktdHJ1bmsKKzMwOTg2IDI2YTc5MjAwNzY2NTI1Yjk1MmU2YWZiYjQ3ZDgwZGY0NDk5MjYxMWQgbGVnYWN5LXRydW5rCiszMDk4NyAyZWU5NzQyYWFkZDg5MjE0N2U1NTQzMDIyYzAyYmUyNmYxMzNiNGNjIGxlZ2FjeS10cnVuaworMzA5ODggZWQwZDRhZTZjNmNlNDA5MTg4YzA1ZjFiNmMyYmQ4OTEyMThjMmIzOCBsZWdhY3ktdHJ1bmsKKzMwOTg5IDhkY2U3YTVlNWZjY2QyN2VjNTBkYjIwMTVkNDI0ODJjZjEzOTg3NjAgbGVnYWN5LXRydW5rCiszMDk5MCA3NjRkZjJmZGM5YzYzNjc1ZWM1MGE2ZDJlMDcyYzFlZTg3NzA1OGIwIGxlZ2FjeS10cnVuaworMzA5OTEgZjQ5MTFmN2FhZDAyNTM4NTI0MDZiY2YwMjBmMzQwYjQyY2U0MDkxYSBsZWdhY3ktdHJ1bmsKKzMwOTkyIDZmZmFmY2VmOThmYjM3ZmQ1ZjQyMTU3OTZlNmU4Y2EyMjYyMDc1ZWUgbGVnYWN5LXRydW5rCiszMDk5MyA1Yzc1NDhiZjM3N2IyMjg4YzZmMzg1OGVkMDBiODNlYTA4NGQyYjI5IGxlZ2FjeS10cnVuaworMzA5OTQgMTdkODdjNWJhNmU0YjcxNTIwMDcyZTNkNzU2MjZjYWM4MThkMmIwNCBsZWdhY3ktdHJ1bmsKKzMwOTk1IDA1ZjdlMWM2NWQ3ZTgzODNiNjMxN2Q5MjVjMTg4NTAxMTRmZmNiNjYgbGVnYWN5LXRydW5rCiszMDk5NiBmNGU4YTZkNGFhN2MzN2UxYmY2NDRkNTBiOTliYmJlZGI4YzJjYTUzIGJzZGRiLWJzZGRiMy1zY2hpem8tYnJhbmNoCiszMDk5NyBmOGQyOGU4MmM0Y2M5OWEzYmUxMDJhNTRhZTllNjg4ZDE2Njg5Y2FiIGJzZGRiLWJzZGRiMy1zY2hpem8tYnJhbmNoCiszMDk5OCBkZTQwNjE1ODRjODM5MTU3MjI1ZmQ4Yzk0MTNlNjdlZWYxNDMyZDk3IGxlZ2FjeS10cnVuaworMzA5OTkgZmNjZDllOTQzMjExYWQ2M2IzZTY2NjcxM2UxYmUwYjY0NjViOWFiNSBic2RkYi1ic2RkYjMtc2NoaXpvLWJyYW5jaAorMzEwMDAgYjc5YzFhZmZmMTEyODM1MWE4ODIzMDI4NzhjM2QzMzc0NWJjYmYxZCBic2RkYi1ic2RkYjMtc2NoaXpvLWJyYW5jaAorMzEwMDEgMTU0YmFjMGIyNmE1NGVjMTkwOTI2YzdjOGJiNTU0YjZhNmYzYjczYiBsZWdhY3ktdHJ1bmsKKzMxMDAyIDMxMDE0ZmJlMjBkYmIwODgzMDE0MWU2YTc0ZDc0NDU2NzAyZDk5ZTQgYnNkZGItYnNkZGIzLXNjaGl6by1icmFuY2gKKzMxMDAzIDM4YzdjMmQ0Y2Q1YWNmNDM1ZTNhNTY0NDAzMTliZDgyYzI1OTQ2ZDcgbGVnYWN5LXRydW5rCiszMTAwNCA5MjRhZGU4MDEwNGIxNzM5NjY2YWQ1MTcxNDNjMDljOTA0NjM1ZDE3IGxlZ2FjeS10cnVuaworMzEwMDUgYmE5MzEwZmVmNDlkZDgyOTM4ZGVmODc4YWQ1YjEwY2M3YTI3MTU0OCBsZWdhY3ktdHJ1bmsKKzMxMDA2IDZlODllODBlNmEyNjdjNTE2NDY3ZGIyYWY1YjgwMWFkMGUyY2I1NzEgbGVnYWN5LXRydW5rCiszMTAwNyA3MTJiMDFkNTJlOGNkMmIzZjk1YmE4ZWU5NDRhM2IyNGZhY2Q4OTQzIGxlZ2FjeS10cnVuaworMzEwMDggMTRiMTc1OGRmZGRlZGFjZGEwNWI4NTZmMjg1NDkxNGYwMjgwZTA2YiBsZWdhY3ktdHJ1bmsKKzMxMDA5IDI5ZmQ5ZmRhZjUyYTkwNWE3NTc0NzlmODc5ZTExNzViYjk4ZTE0ODYgbGVnYWN5LXRydW5rCiszMTAxMCBlZTBlNTE1NDA3ZmQ5NzlkZTMxOGIxZjVhOTdmMjRiYzAyMjY1NTE4IGxlZ2FjeS10cnVuaworMzEwMTEgN2M4ZGZkM2Y0YWU5MDZlM2FhMTA3N2UyNzBjMGQzMDFjNzJiNGU5YiBsZWdhY3ktdHJ1bmsKKzMxMDEyIGY5Mjg0YjU3YjQyMjlhZWQ4NmM5MWY0NmZjYmNiYjk1ZjhmOTZlYTEgbGVnYWN5LXRydW5rCiszMTAxMyA1YmE3OTM0YTdiYTAyMTg0YzUyZTNkNTA1N2EyYWU1MzE5N2I4ODRmIGxlZ2FjeS10cnVuaworMzEwMTQgMzZmNzFmZWY1YjEwOGZjODAzMjMwYmZhMzEwZmVmZGJkZDE1ODlmZSByZWxlYXNlMjItbWFpbnQKKzMxMDE1IGU5NTc4NzQ3ZjQzZGZlNjZiNzA2NTQ0OWJmZTZkMmU4YTdmMTZjZjkgbGVnYWN5LXRydW5rCiszMTAxNiAwOTA0ZDg3OGI4ZjE4Nzc3ZGFmNzY1NzkxN2Q2NGI2YzRhZjYyZjUxIGxlZ2FjeS10cnVuaworMzEwMTcgZTljZDIyODEwNGExMzBiZmQ2MTE4NGUyM2EyMWZmYjI5MzgzMDc1NiBsZWdhY3ktdHJ1bmsKKzMxMDE4IDNiYzcxZDIzNGEyOWU5ODk5Mjk4ZTliNmIzYmI1MjJjNDVjYjBlY2YgbGVnYWN5LXRydW5rCiszMTAxOSBiODNmYThmYTEyMWU4NGQ4MzNlNjBhNTlmZmZiZGJlZThiNmU1ZGVjIGxlZ2FjeS10cnVuaworMzEwMjAgNDI0N2U2NDBlMmE2ZWIyYTU4Yzc5ZDAwYmFiYjU4ODU5MWRlMWE2ZSBsZWdhY3ktdHJ1bmsKKzMxMDIxIGE4OWMwNzdlNjQ4YTE4ZmNkMmU0NmI0MmU4NDc2YWZmMDNlYjE5MDEgbGVnYWN5LXRydW5rCiszMTAyMiA3YjdkM2I5MDYzNjMwZTRhZmZkMTRmNDA3NTQ5MzEwMThlZjYwZDhlIGxlZ2FjeS10cnVuaworMzEwMjMgMWYxNmFiZmFmNjNlOWYwZWU0ODhhODllY2U2OTNiN2ZiZTBiOTA4YiBsZWdhY3ktdHJ1bmsKKzMxMDI0IGFkYmMzZmU4YzgxY2MzYTNhMGE5NTFiZThhNDlmZTNjOTgyZDE5ZDEgbGVnYWN5LXRydW5rCiszMTAyNSA1ZTQzNTVkODBkZDE1OTczNDBmYTc2YjE3MDMxZjhlZDBkNTMwOWE5IGxlZ2FjeS10cnVuaworMzEwMjYgZTkwNWIyMmUzOTJiYTU4ZmVmOTM1ZWI2N2JiM2U2MWFiMDk4OWFkNSBsZWdhY3ktdHJ1bmsKKzMxMDI3IGQ4NzUwZTBkM2ZiODg4ODM2YWI3ODM4YTgwNjVlZDdkMmEwYzYyOWEgbGVnYWN5LXRydW5rCiszMTAyOCA0YzM1YTY2ZmNlNGRmMGVkOTVlYjkzOTA0NDdhZmJkYjI1M2E5ZTEzIGxlZ2FjeS10cnVuaworMzEwMjkgYWUzMWZjYjdiNThlNGNjZDg4MTEyMWYwOWYyOWIwMzA0ZjRmZDI3MSBsZWdhY3ktdHJ1bmsKKzMxMDMwIDA5MGE1MGNiMjY5MDBlMDg5ZTQ1MjdmMzQxYWM2YmEzYWJkM2RmMzEgbGVnYWN5LXRydW5rCiszMTAzMSBlNDJlMzAyNWJhZTNiNDlhNTg3NzI1OWQ5Zjc0YTg0MTE2ZmNhNGRlIGxlZ2FjeS10cnVuaworMzEwMzIgNjIwNTM5MTY1ZTUzMDhhYzlhODQ4MGEyZWU3ZGUxMDg4MzY0YWYzMyBsZWdhY3ktdHJ1bmsKKzMxMDMzIDBkZDhkOGE3NjAxNWVmMGRiYjk2YmVmZDkyZWQ3ZmZiZGY1ODYyNjAgbGVnYWN5LXRydW5rCiszMTAzNCBmZTQwZmNmNDllZTU2NmRmYjVmYzI5MTg5MTcwZDE1NjZjMDE2ZTI5IGxlZ2FjeS10cnVuaworMzEwMzUgYjQ4MGE0ZjcwN2Y2MTc4YjIwNjI2ODAxZmVkMDU2YTM0ZTNmMTczNCBsZWdhY3ktdHJ1bmsKKzMxMDM2IGQ5ZDU3ZjVmOThjZGE3MjJiNzg0YWZmOWRlODhjMGVmY2FmMzI4NTcgbGVnYWN5LXRydW5rCiszMTAzNyAxNDI3NmU0M2VjZTYwNDc5ZGFjNjY3MjE0MDJlNDFkOWM5Zjg1NTA3IGxlZ2FjeS10cnVuaworMzEwMzggNDRmNDY1NjgzOTI3YjNjZmM2ZGMzYzNhNmYwMzRhNDBkOTk2MGU1YiBsZWdhY3ktdHJ1bmsKKzMxMDM5IDIwYzU4MWMyM2JjZTMzMzY4NjUyNDM0NzQ5MGQ0OTJkYTU0Y2Y5MWQgbGVnYWN5LXRydW5rCiszMTA0MCAwZGUxNDI1MmQyNmNlNmRkM2MxNDExZmE3YWNhMjAxZTVjODE0Njk5IGxlZ2FjeS10cnVuaworMzEwNDEgYTJkOTZlN2Q5MWExYTlmOWViMDkxNDczNzc1OGY0MzVlNDM5MWZmOSBsZWdhY3ktdHJ1bmsKKzMxMDQyIGIxZDFmZTdmYjUxNGIxNzNhODA4Y2E1ZGI5NjlmNWI0MGVkMjY1MDggbGVnYWN5LXRydW5rCiszMTA0MyBkNjJiZDI0MDcyOTE5YWIwNDUzZTQ3ZmZjYWMyMmNlNDNkMjkzMzQ2IGxlZ2FjeS10cnVuaworMzEwNDQgMGU2ZGNlMWVjMjMxY2Q0N2M0MzBkMmYxZjViMjljNGFmMmU3ZWQyNiBsZWdhY3ktdHJ1bmsKKzMxMDQ1IDVmMzI5NDJhMjI1YWRhOWVhNWI5NWFkZjgwYmZkYjc1YjAwOTlhOGMgbGVnYWN5LXRydW5rCiszMTA0NiA1MWFiYjVlODYyMjYyNTU1ZmNlNTI4ZDNhNDI5ZWE3NDQzMDdiN2M2IGxlZ2FjeS10cnVuaworMzEwNDcgYjJiNTc0MTE4ZmZkYTNmZGY3NGQ2YTJmYmUyYTlmYzg3Njk5OGFhYSBsZWdhY3ktdHJ1bmsKKzMxMDQ4IDgxYTJkMTg4ZWExZjlmNmEzM2ZhOGI0OTVlZTA3OWNjZTUwYjBmZWYgbGVnYWN5LXRydW5rCiszMTA0OSA2Nzg2ZTg2YjhmZjBhZDBiYTI1NzM4MmJkM2ZhYWE1YzhiZjJjZTRjIGxlZ2FjeS10cnVuaworMzEwNTAgMTdiZmQ1ZGJjMGYxNmRjODVjMTZiMjA4OGFjYzQyODA3ZDY5MzIzNSBsZWdhY3ktdHJ1bmsKKzMxMDUxIDBmOWViODQxM2I2MWI0ZTYyNTFlNDlmMDc3NjI1OTQ3YmNiMjJhMmEgbGVnYWN5LXRydW5rCiszMTA1MiBiMTczYTJhMjMwODI1YTQxZmFiMWRhZjhkMGM1NDhlM2I0ZjJiOTc3IGxlZ2FjeS10cnVuaworMzEwNTMgZDVmNDdlMTQ2NWQ2NmRlNTAzMjgyOWFiYmUyNGUzNTBlNzcyZDAxOCBsZWdhY3ktdHJ1bmsKKzMxMDU0IDBiYjE1NGZhODA0N2M4ZjBmYzgwM2JlY2FmNmEzOTVkMTQxYmU2ZmYgbGVnYWN5LXRydW5rCiszMTA1NSBkZGVlOGMxNTgzMDFjNjgzY2ZiOThlNTdmOTZmZDI2OWVmYzkwNTUyIGxlZ2FjeS10cnVuaworMzEwNTYgMmUxOGRiY2Q5ZTA0Y2FiZDY0N2VkYzMyYjlhMGNhNzg4YzNjMmI0ZSBsZWdhY3ktdHJ1bmsKKzMxMDU3IDY4OTI1N2NhNGQwOTJiNmQ3OWQ4NTIwMzQ5YjcwZDVkZjEyMTlkNGEgbGVnYWN5LXRydW5rCiszMTA1OCA2OTZjNDJkYTc4NzUzMzE4MjExMzBlMDg5ZWI0NTE0MmJjN2Y2MDczIGxlZ2FjeS10cnVuaworMzEwNTkgNTc2NWQ1MjRkZTcxZTJhY2RiOWVkYmIwYTNlNTAyZmVkNDU1NmRiYiBsZWdhY3ktdHJ1bmsKKzMxMDYwIGQxMTIyM2RhYWY2MWQzYzUxM2JlY2FhMGFmMTlmOTMyOWQ3M2E2YmUgbGVnYWN5LXRydW5rCiszMTA2MSAwMmYxMzhjNjM5YTA4M2ExMzc0ZTA3NDQ2NmZkN2Q3MjA4OGNmNjZlIGxlZ2FjeS10cnVuaworMzEwNjIgODQyZDZhMjQ0OTdhZTgzYTUzNjkyODFiNWViYWQzYWIwYmFjN2FkMiBsZWdhY3ktdHJ1bmsKKzMxMDYzIDk5MDk5ZGViNjAyNjQwYmI5NTZmNDMxMjY5MmUzOTM2ZGM1YmFiMzcgbGVnYWN5LXRydW5rCiszMTA2NCA3MmIzOGQ1ZmU2MWY5YWZlZWQyYTJjNmZkNGQxNjBlNWE4NTRjYWE4IGxlZ2FjeS10cnVuaworMzEwNjUgY2JjODYwMjhkOWYzYmFiNzBhZDgyNDk3NWIzMWFjYzAwODljZmFkOSBsZWdhY3ktdHJ1bmsKKzMxMDY2IGZkYzUyYjExOTcwOTBlMTMyOTBmOTg0MzhlNTU4MzU2MmE2NDgyMjEgbGVnYWN5LXRydW5rCiszMTA2NyA4Nzk0M2ZhZjRmZDIxNmE2MTAyZTA3ZDQ5OTU0MWM4YWJjNTExOGU2IGxlZ2FjeS10cnVuaworMzEwNjggOTdiMjgxNzA2MzRjY2YxOTJjOWFlZjU2YjU4MDg5Yjk4NjQ2MTI3NCBsZWdhY3ktdHJ1bmsKKzMxMDY5IDJhZGQwMDhiMWI3ZDA3NWQzMzAyNzc0YmE5OWY1NWZlMmZiMjI2OWQgbGVnYWN5LXRydW5rCiszMTA3MCA4OGNlZWVlZDcwYmQxNTFkNWVjMDkwMTExMzliYmVjOWFjMzg0YzlhIGxlZ2FjeS10cnVuaworMzEwNzEgMGM4ODEwMzczYTFhNzcyODY0OTBjOTYxYmI1NDVjZjQwMTQxZDVkZCBsZWdhY3ktdHJ1bmsKKzMxMDcyIGVkMmQyM2QyZmQ0MTJiOWY3ZTc2NWYyNjZhMTcwOWUwNWQwYzkyZWUgbGVnYWN5LXRydW5rCiszMTA3MyBjNDdkZTg4YWU4NWQ3ZTU0N2EyZmQ5MTZjNTM5ZGI1ZmYyMzkxM2MyIGxlZ2FjeS10cnVuaworMzEwNzQgZjk4MjJiMThjZjkxOWM1NmNiYzlmZWE2NWNiNTgzMzk5MWNkOWIzOSBsZWdhY3ktdHJ1bmsKKzMxMDc1IGJkNjNmMjhjZTdhOGJmZGExMDAwNWMzMDc0NzgxYmJiOWZiNDUxNmEgbGVnYWN5LXRydW5rCiszMTA3NiBjZTc0OGFmYmQ2ZWZkMmQ0YTczNDE0YjYyMTkyNzdmZDViM2RkZWQzIGxlZ2FjeS10cnVuaworMzEwNzcgYzQyNWY2NmRiNDU4MjI1MDNkOWVjOWQ0NGUyNDU3Nzc5NmIxYmU0YyByZWxlYXNlMjItbWFpbnQKKzMxMDc4IDdmY2RlZWIxNmVjMGQ2NGViYzJmYzg5Y2RhYjYwNzdkNGQ2MTAyZWUgbGVnYWN5LXRydW5rCiszMTA3OSAzMTgwNzg4MGY1OTk2NTkxNGNjMDFiMWZjZjU1MmZlYTgxY2FhMDBmIGxlZ2FjeS10cnVuaworMzEwODAgZDNhZjFlNzkzMjQzODkyYmRiYzJhMjBhNWIzYTFmNDU4NzUxYjZmYSBsZWdhY3ktdHJ1bmsKKzMxMDgxIDUwYzczNDI1MGUwNTI5YjY2YjU1ZGMyOTdlMGM0YWZlYjVmMjg1ODUgbGVnYWN5LXRydW5rCiszMTA4MiA2NTk3YzA5YjFlNmRjOWQwMGQxZjM1MjhlMjc2OThjMzE2ODAwOTVhIGxlZ2FjeS10cnVuaworMzEwODMgM2FlMGEyZjg3YWEwNmM3NGQ2OWFiNzBmNzlmMDg0MmFlZDYzMzMxZSBsZWdhY3ktdHJ1bmsKKzMxMDg0IGMyNjdmMjg3MjRkZGNjZGViYzUzMTg4ZWRhNWRhOWUwY2E3MjA1YjkgbGVnYWN5LXRydW5rCiszMTA4NSAyNGUzNGFiYzYyOTUwMDk3MzA2NTBhNTBlMTY3YzU2OTIwNjUwYTQwIGxlZ2FjeS10cnVuaworMzEwODYgNWVlZmVjOTRhNzg0ODU0MmI5YTA2ZThjNWYyMWMxZThkZGI4YjcwMSBsZWdhY3ktdHJ1bmsKKzMxMDg3IDhkODM1NzhkYmE4MTQxZDQ2ZmZmZTEwMjZhYWQzNWUxNDY4NWE4NDQgbGVnYWN5LXRydW5rCiszMTA4OCBmYWFiZDk4NjdmYjhkYzQ5OTQwZDM4YzIyOTZkYTdhNmMwYWJiYmViIGxlZ2FjeS10cnVuaworMzEwODkgNGFhNGU2YjNlY2E3MjNmNDM0OWU3NDZmN2I2NjMwZDU2MTcxYTNlMiBsZWdhY3ktdHJ1bmsKKzMxMDkwIDNjODkwNDlmZTYyOGQzNGRhMWVhYTFlNDlhYTY1MDgxMmU1ZGM1YjIgbGVnYWN5LXRydW5rCiszMTA5MSBkNDJkODNlNTY4NmMzYjk2YmVkZWU0ZDNiYzg1ZGM4ODE0OWQ1ODdlIGxlZ2FjeS10cnVuaworMzEwOTIgYWIxNDNhZWQ0OWI5MDZmYjgzMzYwMDAzZDJlNmQ3NmU5YTQ4OGY4MiBsZWdhY3ktdHJ1bmsKKzMxMDkzIDI1Njc4OWFhYWNkNjVjMDMyMzJhYzJmMWUxNDQwMzhkYWMyOWM3ZjUgbGVnYWN5LXRydW5rCiszMTA5NCA2MjBiYjM1NTFiYjY3NDdhNjYwYjRkZWZhZGRlM2YyMDQ1NTI3MTRlIGxlZ2FjeS10cnVuaworMzEwOTUgODc2M2E4ZjZjMGQ1YmVmMmU4MDAyNWMwMDQ5MTJhYjdjNTZiNDgyMCBsZWdhY3ktdHJ1bmsKKzMxMDk2IGMwNzViYTJhYmY3YWJhNmY2ZmRkMzM4MGY3Y2Y1MjNlNTI2MWQ0ZGYgbGVnYWN5LXRydW5rCiszMTA5NyBmMzNlNjQ0ODQ2MjA4MWM3NGNiZGUxYmIxODY5YmNjYmI4YmJjNDQ1IGxlZ2FjeS10cnVuaworMzEwOTggNzZmYThjNzlhODlkMGE2OTBiYzM1ZGU5ZTlkYjc5MjkyZGI3ZTQwOCBsZWdhY3ktdHJ1bmsKKzMxMDk5IGJhNTdjM2RhZjZlOWEzOWQ2ZWIwMmQyNjIwNTY5ZjMzYjMyOWVmMDMgbGVnYWN5LXRydW5rCiszMTEwMCBiZDhlNjIyMmUxNmEzMmEzYWY0MzI2YjAxMDkzMDM3YTJjY2Q2YWViIGxlZ2FjeS10cnVuaworMzExMDEgZjIzNWYxMzVmM2Y4YTI3ODYyOTNhNzY5MzkwMWJhMDQ5Y2Y3ZTA3NyBsZWdhY3ktdHJ1bmsKKzMxMTAyIDY3NGYzZWVjZmZjNTA2OWU3MWNjN2FhYWIyZjgzNmRjMmIxNTg2OGIgbGVnYWN5LXRydW5rCiszMTEwMyAwMTkwODcyZWJjZjNkNzc0ODQwMTYzZmM2NjQ5ZTA2NDBkNTNiODY3IGxlZ2FjeS10cnVuaworMzExMDQgM2I5ZmI1N2ZhYzM0YTI1ZDQ5OGE0ZDU1YjEzY2M0YzIzM2E0NGQzYSBsZWdhY3ktdHJ1bmsKKzMxMTA1IDE2MDg1MDdiY2MzZmY4NDdhZjU2MWI5NmJiNjJmMjEzZjQxOTQ5OTUgbGVnYWN5LXRydW5rCiszMTEwNiA5YmMxYzg0YjIzZTY2MjM2OTMyODMyNjY5OWNkNjBmNzhiMWU4OTdhIGxlZ2FjeS10cnVuaworMzExMDcgMmYyMjdmZjExZjVlM2FlYzE2NGE5NTliMzQ0YWQ0YzVjN2JlMjgyMyBsZWdhY3ktdHJ1bmsKKzMxMTA4IDZmZmI1YzhlNjUzOGVlODViOGEyZTQyMjQwYTNiNzliZGMyNTlmZWUgbGVnYWN5LXRydW5rCiszMTEwOSBmNDdhZjJjZGI5ODNiNDFmNWVhY2JiZWJmMzEzNzI2Njg1Mzk2NjU3IGxlZ2FjeS10cnVuaworMzExMTAgMmQ3YzBjYmM4M2NmM2Y0OWI5YTAwYWExMTUzYjQzM2NhMzc4MjA5MSBsZWdhY3ktdHJ1bmsKKzMxMTExIGQxZWRhYWE5MzhmYmU3NDg1MmZmNTU1MmFmNDUzYzljYTRkZTZlMTcgbGVnYWN5LXRydW5rCiszMTExMiBhMmRiNDM3ZDMxNGI0ODkzN2JhMGJjZTc4OWYwNTU1NWMyNzE2NDIwIGxlZ2FjeS10cnVuaworMzExMTMgNjU2MzVjNzIxMzVlMWFjYzljNjczMzViZGZlNWM3NzZiN2QzMTQwZiBsZWdhY3ktdHJ1bmsKKzMxMTE0IGEwNTgxNDE4NGU4YzZlNTA2MWNmMGJmMzJlMDIxNGQ4NTdhZDljMTIgbGVnYWN5LXRydW5rCiszMTExNSA5ODE5N2ViZTVjY2I3ZGVmNzhlN2I0NDc3OWJmZjkxNjI2NGMzMTAyIGxlZ2FjeS10cnVuaworMzExMTYgNzI4MzE0MGQ0MzE5ODZiMjQzZGFhNzAyYThmM2I5OGE4ZmNmMzMyNiBsZWdhY3ktdHJ1bmsKKzMxMTE3IDNlYjEwYTE0YmEwMGQ5NmIzNDA0NjRjMmVkY2ZiM2I4OWQxNTVmMDkgbGVnYWN5LXRydW5rCiszMTExOCBlM2ZhODM3N2YzMGM1ODBhNTBiNGI5YWVlZGM2NmZkMDVhY2I5M2NjIGxlZ2FjeS10cnVuaworMzExMTkgOTMyMTA1NjRiYjQ2MDc5ZjBkNjJlMTU0NjM1ZjRlNGJlN2MwZGE1ZSBsZWdhY3ktdHJ1bmsKKzMxMTIwIGQ2YjY1ZTM4NTVhMjUwMGQ4ZDE1OWUzYjRkNDM2ZWZiZjgyMTJkOTUgbGVnYWN5LXRydW5rCiszMTEyMSA3OGU0M2IzNmU3ODQ0ZWI4ZDQ1OWU4Yjk0MmM2YzM5YzliMDQ0ZTU0IGxlZ2FjeS10cnVuaworMzExMjIgNTdiZGY0YmFjNDM1YTdlNjZlY2Q1ZmNjMTdmOWU2NjkwN2Y0YjkyNyBsZWdhY3ktdHJ1bmsKKzMxMTIzIGU1ZDE4MTEyMDMwMzQ5MTE1ZWIyNmRkNzMxMGI0NDNjNTA2NmM0NjYgbGVnYWN5LXRydW5rCiszMTEyNCA5MTVkMzI3YTIxNGE5YWZhOWI2ZTg0MDFmOWUxNmVlY2VjZDZlNGUzIGxlZ2FjeS10cnVuaworMzExMjUgNzIyMjhhMjVkYWFhMjU5MjM0OTA5MTFlNjA4OTYzYTcyNjk2OWU5YyBsZWdhY3ktdHJ1bmsKKzMxMTI2IDhlNjBlYzg4ZWNiODRkOTI1MzBkODM0NjQyYTM4OTY5NWZlZThiNmUgbGVnYWN5LXRydW5rCiszMTEyNyBhMzVkZmNhOTMzMThkMWY5ZTgzYzE3ODZjNWM1OTNmZDk3YTJmYTJjIGxlZ2FjeS10cnVuaworMzExMjggZDE1OGQxMGVmNGFlYjAyN2I3NDRmNTZhYWU1ZDNkYWFhZWE0OWEzYiBsZWdhY3ktdHJ1bmsKKzMxMTI5IDMxM2U5NDRhMmM4ODYyMzZhNmUxOTdhZmIxYzVhNzVjNjNmOTQ3MDkgbGVnYWN5LXRydW5rCiszMTEzMCA5YTNiODQ0M2Q1YTYxNjE1ZmZkOWRlM2Y1ZjM4NzA1MzkzMTg5NDc5IGxlZ2FjeS10cnVuaworMzExMzEgYzQyMTRjMjBiMjFkYzAyMGE4MDdmNjBiMTIzZDQyNDk5NDA4ZTFmMyBsZWdhY3ktdHJ1bmsKKzMxMTMyIDgyYThjYTNjOTI4YzBhZGUzM2Q5N2IyMTFiMDBkMzBlYjg1OTZlMmMgcmVsZWFzZTIyLW1haW50CiszMTEzMyAxZmE0NDQxNDk4NTg5ZDUwMTg1NzNmMmE1MDI3ZDJlYzQ0YzYwNzQ4IHJlbGVhc2UyMi1tYWludAorMzExMzQgNDJiNjE3ZmQ5YzY5MjNkNzU3MjI4MmI5YzE3ZGIxNjhlZmRjMWVjYyByZWxlYXNlMjItbWFpbnQKKzMxMTM1IDIyNTUxZTFkMmM2ZTcwZWQ0ZDQ4YmQzYmU4NTkxZWJkZTY0MmEwMjggcmVsZWFzZTIyLW1haW50CiszMTEzNiBjY2ZhY2FlYzA5Njg5MTllYmJmZThiZDk5OTNiMDY2MGUxYmRjNzc2IHJlbGVhc2UyMi1tYWludAorMzExMzcgYmViMjAwOGEzYzMyOTVkN2U1YmYwYTJhYTQ4OTVjMmE1NTVmODdlYyByZWxlYXNlMjItbWFpbnQKKzMxMTM4IGM5Y2NjOWQwYmE5OWE4OGRiZTllYTQ1ZDkxMWFjNGZjNTk0NjU4NGIgcmVsZWFzZTIyLW1haW50CiszMTEzOSAxZDhjODYyMzRkOWMyYmRmMDY0MTAyODgwOGZiNTk0M2YwYjQ5ODZkIHJlbGVhc2UyMi1tYWludAorMzExNDAgMDYwMjA3OGJkY2UxMjNiMDJiMDI5ZmU0OGM2Y2FlNDNlODRlMjk0YSByZWxlYXNlMjItbWFpbnQKKzMxMTQxIDA3MjlmODM5M2IxNjAzZjdlN2UyNDVkNDM4ZmU4MWJiZmYxYzNkOTIgcmVsZWFzZTIyLW1haW50CiszMTE0MiA2NDdjMjkxNDdkNWQyN2VlODRiYjQzYTFmNjc0OGY4YjYzZWIxMGU4IHJlbGVhc2UyMi1tYWludAorMzExNDMgODM3MDFmYWIzMmZlMTE3NTg5NThmNWQ3N2E3YTIxYTI1OTU1ZTllMiByZWxlYXNlMjItbWFpbnQKKzMxMTQ0IDQ1YWQ3N2E0M2Q4N2Y2OWJhZjQwMmIwMDVhOTI4M2NmOGUwODBjNTYgbGVnYWN5LXRydW5rCiszMTE0NSAyYTgxYzFhODgzY2JiNWMzZWNhMjAxMWY0N2IxM2QzZjIwZGIwNmY0IGxlZ2FjeS10cnVuaworMzExNDYgOWNkYzIzM2I3MjI0YjAzN2JkY2Q3Njc0YjYwODBiOWIxOTRjZjhjYyBsZWdhY3ktdHJ1bmsKKzMxMTQ3IDc0ZDk2MDRlOTM1MzE2ZDdhMTY3ZDNmNTc5MzIyMWVlZTE0YTc1OTQgbGVnYWN5LXRydW5rCiszMTE0OCA1NThkMGYzYjYyNTQ4YmY0MzYwZjgzNWNjYjI4YjA4NTNjNDQ3ZTE0IGxlZ2FjeS10cnVuaworMzExNDkgYmJkOGFiYWEwZjMzNTEyODIzZjZjY2I1YjJkZmVlOTM5ZWMxMzczYiBsZWdhY3ktdHJ1bmsKKzMxMTUwIDE5ZDBjOTk5NTU1ZTkxY2JmNzcxMTNhNjc4ZTM4NjJiZjg5NzY2MTMgbGVnYWN5LXRydW5rCiszMTE1MSA2NWZkYmQ3ODFjYTk5YWYxOTlkOGU1ZTkxMjU5OTg1ODA4NTEyYmJmIGxlZ2FjeS10cnVuaworMzExNTIgYTI0NTI4MzE4YmU5NmNiYTNmYjIwMjE1NDQ0ZmVmMTJmMTlhMWZkYiBsZWdhY3ktdHJ1bmsKKzMxMTUzIDgyMDEwMzhiYmYzMGJkNWJkMWU0MTJlYzRiNzBmOGZhOTU4ZGI1ZTUgbGVnYWN5LXRydW5rCiszMTE1NCBlYWFlZjUxNmE2ODUzZGU3MjQ4NDcyYzZmZTZiNDFhY2ZiMDkxZmQ2IGxlZ2FjeS10cnVuaworMzExNTUgNDU5MDYyMjNlZmIyMzZhMTFkMGMyZjM2NDI3ZjAxMjc4YmZhNGZmNSBsZWdhY3ktdHJ1bmsKKzMxMTU2IDRjOWQwMmM1NjU3YjM1YWJlODcwOWRhMDUwZDFjYWJlMzgyNDAxMWMgbGVnYWN5LXRydW5rCiszMTE1NyBhZmM5YTA5NWEyZDU2ZjhmNzg5ZTg0YmYwMzM0YTRlMmNlNzAzMzRjIGxlZ2FjeS10cnVuaworMzExNTggZjdiMzgyNmQwMTNhMWRlZGIyMTNiMzAyZGQ1OTU4N2ViZTllODMwNyBsZWdhY3ktdHJ1bmsKKzMxMTU5IDY1NjdmNDgyOWU3ZWM0ZmYxYTViZmQzZjBhNmI2M2U2ZDdiZGYwMGUgbGVnYWN5LXRydW5rCiszMTE2MCA3YmY3ZGFjNGRjNDk2MTRiOTIwMzZkZTI3MzIyYTE2OGJkMTRkMGM1IGxlZ2FjeS10cnVuaworMzExNjEgNjQwZTUyZGVlMWEwM2QyYTIyNTg3MWIwNjUxNDZlYTQ4NjI5NzNjOCBsZWdhY3ktdHJ1bmsKKzMxMTYyIDQ4MDMzMDE3Yzc4ZjIwMThjYWQyMjU0YmJmZjQzMjhjNjY3YWM0YWUgbGVnYWN5LXRydW5rCiszMTE2MyBjNDBjYjliZmM4ZTdjM2RmMTY1ODliZGUyYmViZmM5ZTdiNzE5ZjBiIGxlZ2FjeS10cnVuaworMzExNjQgZTRlMjZmZTI4NmMwYjg5YzJiYTYxYjkxMmVjMmU0ZWVhYzRkMGFlZiBsZWdhY3ktdHJ1bmsKKzMxMTY1IDk3NGYxOTZhYmI4N2JlY2NlYjg2ZTRkNGIzOWFhZWIwMzc3MzliZTggbGVnYWN5LXRydW5rCiszMTE2NiA2MDE1NDljNjQwMzljODRiYmU4MWU0NjA0OTdiYjk3ZTFmMzU4YTZiIGxlZ2FjeS10cnVuaworMzExNjcgMmNkNGUwZGZmM2E0MzI3NjBhZTk0MjFhZjgyMGVlMTlmYWJlMjljNyBsZWdhY3ktdHJ1bmsKKzMxMTY4IDYyMDVkYTM4M2U0Y2I0MWI2ODUwNjk5OGIzYTIzMDE4ZGUzNGNkY2YgbGVnYWN5LXRydW5rCiszMTE2OSAwMDQyNmM3ZjE0N2QyMDFhNDMyNTZkYWVmODdkMzM0NzM0MDQ5MWY4IGxlZ2FjeS10cnVuaworMzExNzAgZGQ3M2ExMjE4ZjY5YTg5NjRhMGQyYmE1NGNmNTVhODNjYmM1Zjg4MiBsZWdhY3ktdHJ1bmsKKzMxMTcxIDRkMDRmNDVmZjhhMWU2YzU4ZTcwNWVjOWI1ZGRjMTVlYzMxZWZhYmUgbGVnYWN5LXRydW5rCiszMTE3MiA5MzRhMmI0OTdkMWRkMmFkZTUzMzA4ZTk0ODIyNjEwOTU2OThkNTMwIGxlZ2FjeS10cnVuaworMzExNzMgOGExNDdhNDFjM2Y3ZmFlMGJjZjUzMzJlMjZlN2NmNmZiOGMwZDY1MCBsZWdhY3ktdHJ1bmsKKzMxMTc0IGI2NmFjYmUyOTU3NWM0NWQ1YWVmYTY5YWIzNzA1OWQ5OWJhZmE0NzcgbGVnYWN5LXRydW5rCiszMTE3NSBlOTk2MTVkZTc2NDc2M2M5MGUyM2U0MGIxYjA2ODkwODQxNjg4Mjg3IGxlZ2FjeS10cnVuaworMzExNzYgNTJjZTU3Yjc4YzcxYTg2MDEyZjgyZTFmYWVlODI2OWMxYWJlNDM3NCBsZWdhY3ktdHJ1bmsKKzMxMTc3IGRiNzg0ZDI5ZjQ4MWUwNWJiN2UyM2JjNTVlOGI5NjZkNDJhNWYyMjYgbGVnYWN5LXRydW5rCiszMTE3OCBmNjE5ODYxNDA1MDMwYWFhODJlZTU0ZmE0ZjBiZTc4MWUzNmI5ODhmIGxlZ2FjeS10cnVuaworMzExNzkgZjI2MDM0M2VjY2YxMzIyY2I5MzA0YWQ0NGJkMjIyMGMxY2RiMTg3YiBsZWdhY3ktdHJ1bmsKKzMxMTgwIDU5YjRlYmMyOWQ1MzE3YTZiN2ZjMWI2MGQzOWMzY2EzNzFiMGRiN2EgbGVnYWN5LXRydW5rCiszMTE4MSBlZDkxYmY2MDFiMmRlOThhZjA4NGRjOTc3MmM2ZWY1ODk5NGQ3NzI0IGxlZ2FjeS10cnVuaworMzExODIgMTA2YTQ0YTRiOTc1ZGI0ZjFiMDg2YWY0NWNkNDdjZTUyYjZhYTVkNCBsZWdhY3ktdHJ1bmsKKzMxMTgzIGE5ZGQyMTdhOWJiMTAxZTA4YjEyMzI0ZDgzMjM2NjU5NjRiZDAyODQgbGVnYWN5LXRydW5rCiszMTE4NCBlMTFlOTc2ZmVlNzgxMmFiNDExOGM1YmZiYWQzMmUzNDgwN2Q1OTIwIGxlZ2FjeS10cnVuaworMzExODUgYmEzZWFmZjQ5YjdhZTA4OWE4OGZjMDEyODZmMWRhNDFlNjUxNmZmMCBsZWdhY3ktdHJ1bmsKKzMxMTg2IDY3MzE1MDI2ZDZkMzU5OWI2NmNhNTkxNDczMWViYWM4NTIzNjRhZjMgbGVnYWN5LXRydW5rCiszMTE4NyBiNTk1YzQ3MzVmY2NjNmZkMDAzYjNhODc4ZTg4YTQxNTA1OTY5ZDQxIGxlZ2FjeS10cnVuaworMzExODggMGJiYmNhY2MwNWZiOWU3ZThlZTg0NzBkZGM2MzM1ZGNjZDk4ZjY3YiBsZWdhY3ktdHJ1bmsKKzMxMTg5IDZhMTM5NDY2MDI3MDc0MTcwMjU2NmVkODc2YzUyYTI3ZWRkNjhhYmUgbGVnYWN5LXRydW5rCiszMTE5MCAzNTI3OGFhYWU3NzVjZjk3MWMyMGVhZjJjNTUwNDA3NjNiNTU3YTEyIGxlZ2FjeS10cnVuaworMzExOTEgM2E1MjhhYTIyMmI2YzlkNmRmZTIxM2JiZTZjNzFiNTg1OGQ4OGU4MSBsZWdhY3ktdHJ1bmsKKzMxMTkyIGRmMzYzZDFiMzg0Mjg4NTZmYjRiNTQ5MjM4MmZmM2RkNjljODdhNTkgbGVnYWN5LXRydW5rCiszMTE5MyA2NTJkZjQ1NDk3MDg1NTJhMzA2ZmY3MmJlNzRiYjU4NjY3ZTE3YjcwIGxlZ2FjeS10cnVuaworMzExOTQgZDVlYjEyYmNjZDFlOWY1NTQ1YTBkNDY0MDBkM2I0ZDk4NDQxMTg4NiBsZWdhY3ktdHJ1bmsKKzMxMTk1IDVkNzg4OGZiZWEwMDQ4NGI3NTAwMWM1ZTUzZDg1ZTM0MjJjNDI5YzUgbGVnYWN5LXRydW5rCiszMTE5NiBmNjJlYzI0MDVlOWZjYjU1ZWYxZGRkMjA4YzU0ZjU0OTM5Yjc1ODRhIGxlZ2FjeS10cnVuaworMzExOTcgOGU1ZGU0MzUyOWI3NTczY2ZiNDUwYmU4NDIzYmNiY2U0MTYyMzg5MiBsZWdhY3ktdHJ1bmsKKzMxMTk4IDNlOThkMmUyZDg0N2YxNmM0M2MyMTUzZTA3YzIwYzI2NGQ1MTA3NzIgbGVnYWN5LXRydW5rCiszMTE5OSAyMDMzMGUxMzIxMWVhZGZmZTdiNWI0NjcxNWRiMTcyZmRkNGEyZDU2IGxlZ2FjeS10cnVuaworMzEyMDAgM2IwYjM2Y2RkOWNkOTllNzRhZTA1M2E2M2FmNTZlZjVmYjZhNGY2MyByZWxlYXNlMjItbWFpbnQKKzMxMjAxIGM4OTQzZjg3YzY4Yjk5ZjJmMTY1ZmZiZTIwN2QxNmMxMzhiZjJlMDUgbGVnYWN5LXRydW5rCiszMTIwMiA5NjA4MDNmOWY2OTg5OTRmYTNkMGFhZjQ3MDg5MzY3MWQ3YmI5ZmE0IGxlZ2FjeS10cnVuaworMzEyMDMgY2UzZmFhYjA2ZGU3NTNhNmE5MTQzOTU1N2Y3NzgxMDE4OGIxMDBkNCBsZWdhY3ktdHJ1bmsKKzMxMjA0IDhmODQ0OGZiNThkNmY4OTYwNzUyYTM1Mzk2ZWY3YTY4OWI1N2RkYTggbGVnYWN5LXRydW5rCiszMTIwNSA5NWYzYTFjZDAwZTE2MGQ4NWY0ZTg3Mzg4ZWY3NDNkZWExYTA1ZTI1IGxlZ2FjeS10cnVuaworMzEyMDYgNTE5OWY3ZWE2NzQ2ZjM5ODMzNWE3OTNlOTk4YjkwODY4OTcxZmZlOSBsZWdhY3ktdHJ1bmsKKzMxMjA3IDI2MTkxNWE2YzY4NTJjOTg0ZmJjZjNiNzA3MDNhNjJlMDNhNmQzODQgbGVnYWN5LXRydW5rCiszMTIwOCBkNjk4YzU2MjNkYTA2ZjUxZWM1OTdkZGM3MDBkODM1ZTYyYjI2YmIyIGxlZ2FjeS10cnVuaworMzEyMDkgYjE5YWFhZWI2ZDY0MjAzMTYzYWQ5Y2Y5MGRlNjNmMGJkNGYwMTg1MSBsZWdhY3ktdHJ1bmsKKzMxMjEwIGU1NDU0ZmUxYWFmZDBkY2Y5ZjJlYTY4YmFlZjk2YTNiOGRiZGJkNGEgbGVnYWN5LXRydW5rCiszMTIxMSA3NGFhYmQ0NDE5ZDQwZDY1YmM3ZmZiZWVkNGQ0MzlhMjZhYTY3Y2E0IGxlZ2FjeS10cnVuaworMzEyMTIgZWQxZDRlNzk3MTA5NWJmY2M0YTFlYzkzMTM0MjYzY2FhZWM3NjE0ZiBsZWdhY3ktdHJ1bmsKKzMxMjEzIDk2ZmQwMDRhNThiMGQzMmZlZWFkOGY2MjU5YzA5YjY0OTM0YzNkOWEgbGVnYWN5LXRydW5rCiszMTIxNCA5ZTQ3ZjllZDQ5ZjY0NjIyY2I3ODdmZjE5ZjQ3MjZjZGQyZDQ2YTRmIGxlZ2FjeS10cnVuaworMzEyMTUgMzU5OWY2NTkzZmU5MGMwYzk5YWFkNjgzZjYwOWM0OTBlMWZiM2E1MCBsZWdhY3ktdHJ1bmsKKzMxMjE2IDIwYjgwM2NmMjE5ZDA5ODRmZThhNmE5MTNlM2I1ZjcwNmU2MDZhNGUgbGVnYWN5LXRydW5rCiszMTIxNyA0YzdiMWI3ZDdmMzExMTY3ODY2OTBlMTg3YzZiZDNiMDM0NmZlZDRmIGxlZ2FjeS10cnVuaworMzEyMTggMGVjMzg5Njg4NmU2OTZhNzg5ZjBmZmI5MzMwZDM2MmExZWU0ZGNiYiBsZWdhY3ktdHJ1bmsKKzMxMjE5IDhmMzc4MzVjZjRhNDExYjQyZjAxY2RlYmMyZmZiMzI0ZDA4OTIzNDcgbGVnYWN5LXRydW5rCiszMTIyMCA5YWI5NzFjZDE5NjU3MjRhZjBjYTg4MzM1NmU4NDhhYWVkOTA1NzQxIGxlZ2FjeS10cnVuaworMzEyMjEgNjNkNjM0ZWQ5NDVjYzAxZTg4NzA0ZWVlZDY3ZDI1ZmFmMGIxMmFiNyBsZWdhY3ktdHJ1bmsKKzMxMjIyIGFjNDUzYmIzNzBhMmU5YzcxYmE4ODMwNDlmZTdiYmQ0MTg0NWFmYTQgbGVnYWN5LXRydW5rCiszMTIyMyA3YzRkZGEwYzE0NWYwNDAxYjU1ZTBhMWE2YzQ3MTZkN2ZiOGQxMmNlIGxlZ2FjeS10cnVuaworMzEyMjQgMWEzMDBmNDc1MzMyMDVjMDg2NjVkODQxMDBiNzNhMGE0ZmM2ZDNjZSBsZWdhY3ktdHJ1bmsKKzMxMjI1IGViMjg3ODk0MDkwNTg2MDRlNDdjYmI2ZTFiZDYyZmM3OWQ4YmMxNDIgbGVnYWN5LXRydW5rCiszMTIyNiA0MzE0M2Q0ZGQ2YjFkNTEzYjEyZTg4YWIyY2JhMGExMjkxMjg1ZWMzIGxlZ2FjeS10cnVuaworMzEyMjcgMTg2MTMzNWU3OGFhMTE2YzdkMzk4MDI0ZmQ0Y2Y2MGUzZDc0NDhkNCBsZWdhY3ktdHJ1bmsKKzMxMjI4IDBmY2E2NWEwOWYwNjI4MjhjNWU1OWE4MTY4OTMzOTYxOGJjNzdjZTIgbGVnYWN5LXRydW5rCiszMTIyOSA2MTRhYmJhNWI3NjI0ZmMzNTdmODg1NzY2MDlkYzkyYjEyYjRhOGZiIGxlZ2FjeS10cnVuaworMzEyMzAgMzc5OTlmNjkyNGI0ZTU1MzI4ODJmZWI5ZTBjZGVhYzM2Y2YxZWIzZCBsZWdhY3ktdHJ1bmsKKzMxMjMxIDg0ZjJjNDM4YzNmNTJiYTE4ZWYzMmY5M2Y4YmVmNGFlYjNlNjRhMDggbGVnYWN5LXRydW5rCiszMTIzMiAwNDI4ZDU5MDY5YTk4NDEyN2RmNjdiMmU3OTFmMGE5NjA0OTMzYzU0IGxlZ2FjeS10cnVuaworMzEyMzMgYzhjNzgxNmQzYTJkYTZlMzA5NjQ0Y2JlMDFmNzQzYjU5YmQ5OWU4OCBsZWdhY3ktdHJ1bmsKKzMxMjM0IDBmNjczMWQxMjZkZWIxOGMzN2VkNzY5YWYwNWM0NjM1YTRmOTViNzcgbGVnYWN5LXRydW5rCiszMTIzNSA1MzdiZmNlMmI3MzAzZjFhZjFkNjA4N2E1MTI2YzdjZmE4NmZmNmMwIGxlZ2FjeS10cnVuaworMzEyMzYgZTBmYTUyMDY3ZGJlZmI4MjczZjdiMmI4ZjE5Y2NhZTQzZjYzNjI5MSBsZWdhY3ktdHJ1bmsKKzMxMjM3IGY4N2I2ZDE2YmFlODVhNzlmZmUxNTBhYzE2MmJmZmNkMTM3YjBmNGUgbGVnYWN5LXRydW5rCiszMTIzOCA5YzNjOTkzZTliOWNmMjMzNGFkMjNkZWE3MzNkZjEwOTk4NDBlMTY1IGxlZ2FjeS10cnVuaworMzEyMzkgZTRmZTE2OGUzNWYxNDNmYmNhNTJlZTBjOTQxZTAyZWQ5OWFhNjMyMSBsZWdhY3ktdHJ1bmsKKzMxMjQwIDAwMWNmNzRkYWM1MDFhOWU2NTNkMzM1NzIwYzdiYWIzODdkZWJhZWIgbGVnYWN5LXRydW5rCiszMTI0MSAxNjg1NmM5NTE0ZTA1YTg4NDZkNGRkNjU0NTZlYTk3Y2FhN2U1OGM3IGxlZ2FjeS10cnVuaworMzEyNDIgYWFkZTRiYzEyNWY4ZmYyOTI0ZTRmMzU1OWIxYzY4NDJjMmZlZGE5YiBsZWdhY3ktdHJ1bmsKKzMxMjQzIDc2Mzc2ZTVhZjM4OGQwMTkyZWE5NGJhMGQzNmIzYjdjODJmNDNhZDcgbGVnYWN5LXRydW5rCiszMTI0NCBlM2I1ZjMyMWVlYmIwM2Y0YmVlNTA1MmU4NTExNjZhMmViNjdjMTg2IGxlZ2FjeS10cnVuaworMzEyNDUgNTkzNWI4MjQzZDc0ZTRmZjE4ZGQyNTQ3OWYwYTlhZjQ3NmI3MTAwNSBsZWdhY3ktdHJ1bmsKKzMxMjQ2IDQxMzEzZDIwZDFkZGUyNjhhYmUzOGNmM2VkMzUyMzk3MTE4ZGFlNjEgbGVnYWN5LXRydW5rCiszMTI0NyA1MjJlZGQ1OTFkMmNmMTM3NWJhNDI3NWQwZTM5NTE5OTNmOGUyMjBmIGxlZ2FjeS10cnVuaworMzEyNDggNDc0Y2JiZGYwMGNlN2Q2NDQ3OGU4MDUwOWFlYTcwYTg3M2E1OGI3OCBsZWdhY3ktdHJ1bmsKKzMxMjQ5IDIxMjgzYjZlYTdmMWE2ZGZiNzA4NjVmMmIxZmYxMjZhMDllNDgyMTggbGVnYWN5LXRydW5rCiszMTI1MCAwNDM4NGY0MjkwYmFmNmVmYmM4ZTE5MWRjMmMxOWQyNDJjMDc0MjQ3IGxlZ2FjeS10cnVuaworMzEyNTEgY2FkMTE4NWVlZWY3YzE2OGFlYTFhMjljNTBiNzdkODE3YTkxMWNlOSBsZWdhY3ktdHJ1bmsKKzMxMjUyIDcyNjcyMTRmMDc4NTZiY2U3NDcxODYyYzVmN2YwODBlZjEyMzZiY2IgbGVnYWN5LXRydW5rCiszMTI1MyAzOTgyZjExNzY3OWVmYjgzNjhiOTgyZTYyYjc3Nzk1NjM5ZTgxYjcwIGxlZ2FjeS10cnVuaworMzEyNTQgZjJmMDZiNmVjZGQ3MWJkNzVmNDRhMjRlYzJmOGU5MmMxOTQ0YmJiYyBsZWdhY3ktdHJ1bmsKKzMxMjU1IDVlMzE1MjlmZGQ0ZmFmOTg2MWZkMmYxMzlmNGRhYzU3MDhjMDZlZjcgbGVnYWN5LXRydW5rCiszMTI1NiBkNTAyMTg3YjJiMDZlMDBhN2Y1YjdiM2VhMDZiMTg3NTllNzFjOWFiIGxlZ2FjeS10cnVuaworMzEyNTcgOGQ5MmFmMTQ0YzE2ZWM3ODc3MDM3YWEzOGNhZTQyMTI0NmE3MzdjYiBsZWdhY3ktdHJ1bmsKKzMxMjU4IDAzY2ZjNjM3YzM5MzU4ODJmMjNjODg3ZmYwMzQxZWJjMDE1OGY4OTYgbGVnYWN5LXRydW5rCiszMTI1OSBiNDY2YzVmYjRkOGVhYmNhM2FlZTAzYzNiMDBkZjdjYjA5ZDZjOGRhIGxlZ2FjeS10cnVuaworMzEyNjAgYzFlY2RkZTMyZjg2M2M0OGRjODA0M2M1ZjcxNjMwYTFjMTdjMGNlMCBsZWdhY3ktdHJ1bmsKKzMxMjYxIGZhOWY5ZTU3ZTk4Zjg2MDhjMjRhZWU5MzZlNDM5ZDdhOGM0MGFjZTUgbGVnYWN5LXRydW5rCiszMTI2MiBlNWUyNDJjZjQ2YjFjNGM3N2E1MjcwNDJiYTIwZTQwYzc3YjE5MjRhIGxlZ2FjeS10cnVuaworMzEyNjMgN2IyY2Q4MDBjMjI5NmQ0MmVjYTQyZjRkNTQxYzdjYTYxMjBkMjMxMCBsZWdhY3ktdHJ1bmsKKzMxMjY0IDMyZmI5NGE2YTRmZTliZWNjZTMyZWQ5MTZhMjE5OTUwNWViYWEwMGMgbGVnYWN5LXRydW5rCiszMTI2NSBkYjQxNmJkMThkNGY3OWYyZjhlZjAwMTFjMzUyOGQ2MmFlZWVjODUwIGxlZ2FjeS10cnVuaworMzEyNjYgNDM2N2Y4MDVkYjA5YzNmNjYwNjZjMDI3YjVlOTY4ZTA5ODQwODkzMiBsZWdhY3ktdHJ1bmsKKzMxMjY3IGQ4Yzc2NWMwOWQ4YzFhOGVhNjZiOThjNGUzYTE3NmE3ZTU4YTY1ZjEgbGVnYWN5LXRydW5rCiszMTI2OCBjZTM0MGZiNGI2MTQ5NTEyYjdmZGJiY2VmMjVjMzliYTczZDRhMGMyIGxlZ2FjeS10cnVuaworMzEyNjkgNGI5YjhkZjU0ZGU5YWQ4NTU0MjI0ZWFjZjY0NjdjYTNlODFjNTJhNiBsZWdhY3ktdHJ1bmsKKzMxMjcwIGRmNzQxMjdlMmM5ZmQxNTIxNTg5Mjk0NTJjY2EzODhhYTJiYTg5MGQgbGVnYWN5LXRydW5rCiszMTI3MSA5NTAzNjg1ZmI0ZTg4MDg5MjUyNjFlOGVlNmQ2MjcwMzhhYmZmZmI5IGxlZ2FjeS10cnVuaworMzEyNzIgYjMzMWU1ZTVjYzRhYmYzNTVkZWVlN2RlMDk3NTAwOTM1NDk3MWVmNyBsZWdhY3ktdHJ1bmsKKzMxMjczIGFiZjlhOTEyY2ZjZTljNWJiODBhNzk0ODBmYmYwZWQxYWEyYmI5MmMgbGVnYWN5LXRydW5rCiszMTI3NCBjNDk2MzgzMDVhMjhiMGQyODA2ZjJhNDc0YTkxYmQyZGY5ZjRiYzg3IGxlZ2FjeS10cnVuaworMzEyNzUgODUzNTkyMTcwOTFjYWFjMmJmYjRiYTQyYmFhNzY2MDk2MWQ4MTI3MSByZWxlYXNlMjItbWFpbnQKKzMxMjc2IDk0MWRlNzkxYjE3YWViMzI3ZGYwZDJjM2E2ODY0NGQ1NjVkOGNkMjAgbGVnYWN5LXRydW5rCiszMTI3NyA1OWFlNDFlMDRmZmJlN2ZjN2I4NTY0ZTQwNzg1ZDIyYTI3ZjNlNjQ1IGxlZ2FjeS10cnVuaworMzEyNzggOWY5NDAwOWIxYWUwY2U3OGFlMjRiMTZkMjRhMmZiNmFhN2Q4NzBkOSBsZWdhY3ktdHJ1bmsKKzMxMjc5IDQ3YTY5MTVkMWMzNmI0YjM5NjNmYzkzNDdmZDkzMzZkNjdkM2RmN2MgbGVnYWN5LXRydW5rCiszMTI4MCBjN2NmMWI1ZDQ3MWI3ZTdmM2UyZWZlNDQ0NzBhM2RlMWI1Njk4ZTgzIGxlZ2FjeS10cnVuaworMzEyODEgNzg1MGZhN2ZiNmYxYTE0OWE4OTcxYjMyZmY3NGRkNWQ5MDU4MGUzZCByZWxlYXNlMjItbWFpbnQKKzMxMjgyIDMyOWEwMDc3N2UzMjBjYWU3ZWE4OGEzNDBiZjQ2ODZjNGMxN2IxYzAgcmVsZWFzZTIyLW1haW50CiszMTI4MyA2YjE3ODlhYzJmOTU4MTNlMTI4NTkzNDJlOTkzYmMxOGI2Y2M0ZDA4IGxlZ2FjeS10cnVuaworMzEyODQgOThjMzRjYzFjZjQwMGI2NGU0OGFmMmNiNDQ0OWUyMmZjYzNiYjY5YyBsZWdhY3ktdHJ1bmsKKzMxMjg1IDAzOTU1MTJjZTFiNWFiODljMWM2Njc2NzAwY2QyNDVmMDVmZWQ0MTUgbGVnYWN5LXRydW5rCiszMTI4NiAzOGQwNTA1NjE5NWM5YzE4N2U3ODZkMDdlZDk2ZjBkZGVkN2Q2OTY5IHJlbGVhc2UyMi1tYWludAorMzEyODcgYTRiZGU5MTUxMThjNjA1OTM0ZWNhYjBhYTUwZDNhYWEyNDZlMWM4NSBsZWdhY3ktdHJ1bmsKKzMxMjg4IDU5NDgyMzE3MTY2ZTZhNzczMjQ3M2FmZTIxYzZjOTMxYmFmMWExMTYgbGVnYWN5LXRydW5rCiszMTI4OSBjODE0OGQ3ZjBjOTg2ZTBmMGRlOGY2MmQwOTYwNzEzZTM1N2RjOGI4IHJlbGVhc2UyMi1tYWludAorMzEyOTAgYThhNjQ3ZTE5MjdiNTZlOWQ2NzcyNDZjNWZiZTViZTU0MjNiYzU0YSBsZWdhY3ktdHJ1bmsKKzMxMjkxIGY0Y2RiYTgzYmU1NjAyOGU2NWNmYWM5MzcwZGFhOTNlZmFmY2FkOWYgbGVnYWN5LXRydW5rCiszMTI5MiBmYzg4MTc0YzBjMGFkZGUzNmNhNjM4NjE5NDFhY2I0Y2RmYjIxODZhIGxlZ2FjeS10cnVuaworMzEyOTMgYTAzNmE1MTk3NjEwYzdjOTI5ZDBjOTA0ZjhlMjBjMmQ5ZjM3MzM3OSBsZWdhY3ktdHJ1bmsKKzMxMjk0IDdiNTA0M2MwZmY0NzY4Njc4NjAyZWM5MmYzOWQ2ZjczN2NmOGQ0ZjMgbGVnYWN5LXRydW5rCiszMTI5NSBjNWFkMGEyNDg5YjgyNzVkMGEyZDRkMDM4MzEzYzNkYTNlNWJlNmJhIGxlZ2FjeS10cnVuaworMzEyOTYgODJjYmYxMTc4ZTRmNGYyYTY2MDBmZDQ5ZTI5ZGJlMjlmMGZhY2FjNSBsZWdhY3ktdHJ1bmsKKzMxMjk3IDJkNTViZTNhOGVjMzRlY2IxOTEzMmQ0YmFiZjEwMTYxNGZiYmY3NmQgbGVnYWN5LXRydW5rCiszMTI5OCBkYzVlMWQ5MTgwNTU4MTM0ZDI4NmZiNzQ4ODJkODRlMjE5ZmE2NTE3IGxlZ2FjeS10cnVuaworMzEyOTkgMmMzODlhMDQ0OGE0ZmIwOGM2NDUyNmM3Y2EzYjhlYWQ0Nzc1MmVhMSBsZWdhY3ktdHJ1bmsKKzMxMzAwIDlmNzEzYzdiN2ZkOTEwMGU1NjUzODVjMDYzZmU3MTJmOTYzYjViOTkgbGVnYWN5LXRydW5rCiszMTMwMSAzNTY2Yjg0ZTY2YjllNzU2YjIzMDZhZGU2MjYwMmIxYzAyMzgyMjc4IGxlZ2FjeS10cnVuaworMzEzMDIgMjRlOGM3ZTUyMWY1OThlNWQwZWQ2NzAxYTQ5YzIwNDU4YjExZGYyOCBsZWdhY3ktdHJ1bmsKKzMxMzAzIGJmYzUyNDM3OTMwNzExODQxNjQ1ZWY3MmQwMzhhZTgxYTMxNTQ3OTYgbGVnYWN5LXRydW5rCiszMTMwNCBjMTg0MjI3MTZmZjI2Yjg4MTA1MjcyZTllYTg5Mjg1ZTAxMjIzNmVjIGxlZ2FjeS10cnVuaworMzEzMDUgOGJmZjNkMDk0NGJhNzY5ZmJmMjdiNGNhZWFkZjhiODQxN2ZmZTM4ZiBsZWdhY3ktdHJ1bmsKKzMxMzA2IDVmNjkzMWI4MzUyZTQxZjBlMWJiMzU1YmZiZmE0NzZmYTI0YTk1MzkgbGVnYWN5LXRydW5rCiszMTMwNyAxZGM2MzY2NTQzZDQ4NWU3NjRhZjU5YTUwM2FmMzAxOTg0YzQyZjc0IHJlbGVhc2UyMi1tYWludAorMzEzMDggZmM1YTYwYTYxZTMyZjUzZWRjMDg4ODMyMjA1YjlkZTdhZWQ4MDY1MiBsZWdhY3ktdHJ1bmsKKzMxMzA5IGRkMTEzMDI1M2YxMDNiOTZkNmFiZGZhZGQxZTIyODdlNDM1NjAyYzUgbGVnYWN5LXRydW5rCiszMTMxMCBjYzAxZmI2NTRjZTNmNTVjYjZkZTNlMTk0YzkzOTBkYzU3YmU5ODJkIGxlZ2FjeS10cnVuaworMzEzMTEgOTA0ZjBlNzY5ODIwOTA1ZWJjNzY1YzIwNGE3ZjUyZmIyMzgyMDRlZiBsZWdhY3ktdHJ1bmsKKzMxMzEyIGViY2FlZDc5NDhlODBlMWNjOTdmNmJmNTJhYjBjNWU4N2RmNjBjZDEgbGVnYWN5LXRydW5rCiszMTMxMyAyMTAwMTgyZjc0ZTM4YWM1NWY0MGI0NDMzN2ZmZGY3NzE3MzZjOTllIGxlZ2FjeS10cnVuaworMzEzMTQgYzIwZmVjYjVjYzljNTZlMzdmZTY3Zjg4OTc4ZjkzNTJhMWY3YmNhYyBsZWdhY3ktdHJ1bmsKKzMxMzE1IGYzNDQ0NmZhMjE2ZTVmY2MxMzcyYTQ1YWNmNTkyNjA1ZGI1ZDhmN2MgbGVnYWN5LXRydW5rCiszMTMxNiAwYmRmZDY1YmIxMjI1OTMxMDljOTc2YjEwYTZhMzAyNmE5MTc5YWVmIGxlZ2FjeS10cnVuaworMzEzMTcgMzliMWJhYzg5MzY1ZjgyMGNkMzkzODJmNGI5NzczM2RhODQ0MjMzMSBsZWdhY3ktdHJ1bmsKKzMxMzE4IGYyYjQzMTM2NGY2ZmNiZjBmYTQyMjMyY2QxOTRkZTI0MjgzMDlmZDIgbGVnYWN5LXRydW5rCiszMTMxOSBiNjUwYTU0YTc2ZmRhZGFlYjdlMTUzMWU0ZjJlMmYyOGU2MTQ0YmMzIGxlZ2FjeS10cnVuaworMzEzMjAgOWE2MDU0YzZkNDZmYWI2ZGIzYmZmMmY5OWRhNzhlNjE3NzdhYjEzOCBsZWdhY3ktdHJ1bmsKKzMxMzIxIGI1NmYwMGVjODA4MzEyNzg3YmUyMmUyZjhhYzUwNDczNTU5NDllZTQgbGVnYWN5LXRydW5rCiszMTMyMiBmMDQwOWQ3NTRiOTM3N2VmYmNiOWZlNWRjMTZlODE1NDRlY2EwMzdhIGxlZ2FjeS10cnVuaworMzEzMjMgZDJiMDFjOWRmZjE2ODM1YjllYWY4MTk5YmRmYTBlZmM5YmY4MDkwMiBsZWdhY3ktdHJ1bmsKKzMxMzI0IDIwNDJlMjA1MWQ5Nzg0NzU2Mzc1Nzk5ZTdhNmNkYjNlMTUyYTI4ZDggbGVnYWN5LXRydW5rCiszMTMyNSAwNDAwYmE3OGE4OTc5YTRmODg5ODA5NmVkNDM4YTc2YWIzOTM4MWU2IGxlZ2FjeS10cnVuaworMzEzMjYgNjE5NzNkNWY2ZTI1M2M4OTdiODk3NjEwNTBkNzc1ZGI0Y2IxZTlhZCBsZWdhY3ktdHJ1bmsKKzMxMzI3IGU2MjA5OWM2NWEzYzNjMWUzNDk0MDE3YmUxZWFmMmFiODVmMGIyNjcgbGVnYWN5LXRydW5rCiszMTMyOCBiMDUzOWE0NTA5MTcyNTBjYzZmNWUxZmIyYjVmNjI3NzZlOTc3MmYzIGxlZ2FjeS10cnVuaworMzEzMjkgMzYxMTk3NmNiMTc0YTVmOTUzNDlkYjVhNzZjMTlmZmRkNjM3MjY3MCBsZWdhY3ktdHJ1bmsKKzMxMzMwIDBjN2U4YzNmNjQyZjYxNWE1NzJhNmNhNDQ1NjIxMDhiZDNiZWRiODAgbGVnYWN5LXRydW5rCiszMTMzMSAzNzJlMzQ4M2QzMjc1NDI4MWM2MTc1MGFiMGVjNmZmOTcwMjhkOWVmIGxlZ2FjeS10cnVuaworMzEzMzIgYzdkZjIyNWU0ZTRhNTc1MThkM2YwNjcxMzc5MzBjODAwM2E4MjU2MiBsZWdhY3ktdHJ1bmsKKzMxMzMzIDhkMWIyNzJjOWU3MWMyNDI5NGRiYzc2ZTc3ODM5N2M4OTk5MDY2ZTUgbGVnYWN5LXRydW5rCiszMTMzNCA5ZWM0N2U2NTExN2QzOWRhYTM0MzRmNjliNmI3ZmIwNWQ1ZDgwZTY5IHJlbGVhc2UyMi1tYWludAorMzEzMzUgZTg4NzhjOGY1NGRmNWQ1ZTExYmE3YmQ1MDdkNjNjNzA4MjA2MDQzNiBsZWdhY3ktdHJ1bmsKKzMxMzM2IGI5NWI5YWJiOWJmMzllNTcxZTczNmUzMTZlMDU1Zjg1OWRjYWU5NDQgbGVnYWN5LXRydW5rCiszMTMzNyBkMmU3ZjQ2OGYyMjRlODEyZWQ1M2ZlZjk3ZGViYTI3MTI4NjY0NjUzIGxlZ2FjeS10cnVuaworMzEzMzggOGQ2ZWUxNTg2NmIyMTZkNDFhYjlmMDBiNzYxODJiZThjNDE5MWY4MiBsZWdhY3ktdHJ1bmsKKzMxMzM5IDU2NjNlMGM4MTg2MDJmMTg0MGZiZTUwNTZmYzk0ZDBjMWZmOWQ4YWUgbGVnYWN5LXRydW5rCiszMTM0MCA0MjM5NmE3ODZmNTkzMzJkYzI0ZGQ0NzY1NmJiOTNmYjlkMTFlNmU0IGxlZ2FjeS10cnVuaworMzEzNDEgY2QwNWFmNzAxZTVkNjViYjcwMjFkYmZjYjVlMjVmOWJjYmUwZWUwOCBsZWdhY3ktdHJ1bmsKKzMxMzQyIGY2Yzk1ZjkxMzhhZDM3MmQ5MTI4NjMwNDdiOTliZTFmMjFjYzlkZjcgbGVnYWN5LXRydW5rCiszMTM0MyA0OGRjNGE1OWE1MGVmODZlMWEwMzBkNDM2NTkyZjUzYjgzOWM2MzM5IGxlZ2FjeS10cnVuaworMzEzNDQgY2IxZWVhZWI3NGEwNjYwNzg5M2FlZWU4ZDQ2MzhkNzMwYTU3ZjMwMyBsZWdhY3ktdHJ1bmsKKzMxMzQ1IGZhZmZiMTFmNTRlOGQwYTRmODc5NWM0MjlkNjExMmI1OGQwNDA0ZGUgcmVsZWFzZTIyLW1haW50CiszMTM0NiBiZjA4M2UzNTE4NWY1NDMwY2MxYmU1ZGVlMzI3Yjk2MTQzOTI3ODBiIGxlZ2FjeS10cnVuaworMzEzNDcgNTlmYmFlMzNhMGY5ZDdlNWRlN2IyMGJjMjk1ZWY5MzhmYWM4ZmRlYyBsZWdhY3ktdHJ1bmsKKzMxMzQ4IGVlMTBkN2U3ZjgxOGNjNDNiZmQ3YmM3Y2I0MzQ3YmZjZjUzYjlkZjggbGVnYWN5LXRydW5rCiszMTM0OSBmYmM0NWJlYWYwMzQ0Y2ZkZGNkMzNlNTdjMWE4NjFiNTQzYzk4MTlmIGxlZ2FjeS10cnVuaworMzEzNTAgYjgwNGVlNWJlYjQ5MjM5ZGU4MDMzMmE5MzExZjFiMjZmMTQwM2RkNSBsZWdhY3ktdHJ1bmsKKzMxMzUxIDE5YWMxMmFjODA0MTUzNTNjOGZjMmZkYjBiODNhYjIxMWEwYmNjYzggbGVnYWN5LXRydW5rCiszMTM1MiA2NTFkMTEyM2VkNmUzNzIyYTNhYWZmMDJhOWU5YzI0MDFjOTYxN2QxIGxlZ2FjeS10cnVuaworMzEzNTMgYmRlYWNmN2IxNWM5NjZiYjUxNDE3NWIxODAwNzFhMGY0ZWU5Zjc0YiBsZWdhY3ktdHJ1bmsKKzMxMzU0IDAxMWY3MzQyNThkYjliYmViNDcyMGMxNWM0YWViYjc2ZGMyZjg2MWQgbGVnYWN5LXRydW5rCiszMTM1NSA3ZGZmY2M0OThjNDU4MzFiNmNiYjQzNzA0YTZmZThiOTNlNjhmN2UxIGxlZ2FjeS10cnVuaworMzEzNTYgYzM3N2M1NmVkZmM4ZDM2YjA3N2NkMzUwYjczZWFlYzE3OTY3YjNmNSBsZWdhY3ktdHJ1bmsKKzMxMzU3IDZiYTk0MGNkOTllZjk4MzFjNjIwNWE4NjY3MTY5MjMzYjU2ZTgwNmEgcmVsZWFzZTIyLW1haW50CiszMTM1OCA0YTAyY2E2YmRiNmY0ZjdjY2M5YzdhMjQ3NzM5Y2U5N2RhZTZiMDRkIGxlZ2FjeS10cnVuaworMzEzNTkgYmY5Y2EwODZiOGFhNjI3MDQyYTI3OGRiYTc1NDNiNDliZWNhMDdkOCBsZWdhY3ktdHJ1bmsKKzMxMzYwIDZiNTY5NjU0MWJhNGVmNGE5M2U1ODI4NGY4YjAzNjE5N2M5MGY0NzIgbGVnYWN5LXRydW5rCiszMTM2MSA3ZjE3MWY5ZGI4YWZlNDg0MDVmMDhjNDJhZDAzNTc1YTk5MjMxNWJhIGxlZ2FjeS10cnVuaworMzEzNjIgNTIzZWZkNzczMjYxYTY3MmFhOWZiYmFiZWJmNWM4M2Y2ZTg1MzZhNSBsZWdhY3ktdHJ1bmsKKzMxMzYzIDk0YmQxMWIxMWRmN2Q1ZmRiMDc1MThhYTY5Mjk3N2ExMDk5NTJkZDIgbGVnYWN5LXRydW5rCiszMTM2NCA1ZDJkMjRhNzM4MjU5MmQwMTNmZDlmYTI1NzNhZjA1YmVjZGEyNjgzIGxlZ2FjeS10cnVuaworMzEzNjUgMjIxZWFmNzgxNGY0NGI2MjkwNjBiYjJiZGIxYTMyYmNhNDhlNjAzNCBsZWdhY3ktdHJ1bmsKKzMxMzY2IDEwMjU5MTIyYmY1ZjJkMTM5YWU2Nzc0OTdjOTc1MTk2MGRmMmI5M2MgbGVnYWN5LXRydW5rCiszMTM2NyBiNTE5NzBiYTIxODA2MzMwOTQ1Mjk2MmJkNmFhYzVjNWE5ZGNhMDFjIGxlZ2FjeS10cnVuaworMzEzNjggNTAxNzNlYTFmZDQ0MDcxNmE5MDAyODU2ZDk5MTRkNDc3ZjBkZDc0NiBsZWdhY3ktdHJ1bmsKKzMxMzY5IDE1YjAzMTc0ODExNmMzNjhjNWJkYjMwYzM2N2MxNzBjOWM4ZTI4MDIgbGVnYWN5LXRydW5rCiszMTM3MCAzMTYwZDMwNDE1MjE5NGNlMDg3ZDhjMjEyOTY5ZWI0MDM5MGYyNTkyIGxlZ2FjeS10cnVuaworMzEzNzEgMWMxMjk5YmMzM2Q2MDcyNzZjYjMyNDlmNjQ4MWJmMWNjNDg4OTc2OSBsZWdhY3ktdHJ1bmsKKzMxMzcyIDIzZjZiMGQwMWJjNmFkNDM0Y2I2MDk4ZDllNWRlMzJhNmRjYTZlYWEgbGVnYWN5LXRydW5rCiszMTM3MyBlNGRiZjBmMDA5NWJlODZjZjM1MWY3NGJhMWRkNjRlNzY2OWNhMzJjIGxlZ2FjeS10cnVuaworMzEzNzQgZGFhNDQ5NWNmNjFhYjE0YzQ1ODYzY2FjODJmOTQ2ODIzMGI5ZmYxOSBsZWdhY3ktdHJ1bmsKKzMxMzc1IGU5ZDcxMDJmODI3ODBmZmJlMDIyOTRhMWM0ODk2MmIxYzYxOWE4MTAgbGVnYWN5LXRydW5rCiszMTM3NiBlMGRhNDU3N2FhYTYyNDE1OTY3YjU2ZDI0ODM4NGE4YzM2ZmVlNmU1IGxlZ2FjeS10cnVuaworMzEzNzcgY2IyYzNmYmJhNzJlZTc2YmZlZTE2YzUwNWNkYzliYjhmNzllNjgxZCBsZWdhY3ktdHJ1bmsKKzMxMzc4IDNlYjAzNzZlOTNlODQyMDY1MGI0MzMwY2I0MzRkZTk1ZjFkMmIyYzkgcmVsZWFzZTIyLW1haW50CiszMTM3OSBjNWRkMDc3ZGUwZmM2NDZhN2UxN2RkMzI3MTkzMjk4Njk3YTIzMjRmIGxlZ2FjeS10cnVuaworMzEzODAgN2EyMGJiZGJmZjM2ODJmN2Y2NjUzZDViOTcwMjc1MTM4NTQxOTMyNSBsZWdhY3ktdHJ1bmsKKzMxMzgxIDRiNzVhMGI3Njg1NzE5YmY4YjNlMTMyNDRmOTdkYTU5YzkwMjZmODEgbGVnYWN5LXRydW5rCiszMTM4MiA1NjIwYjA3ODYyNzExOWI2OWI2ZDAzNGY4NzVjNTJmOTVlYzMyY2QyIGxlZ2FjeS10cnVuaworMzEzODMgODFhZmNhNzQ3Y2FhNWMxODZlZDAxODc5ZTYyMDc5YjgyMzVmOTY5MiBsZWdhY3ktdHJ1bmsKKzMxMzg0IDAxNjBmZmNiMTllMzM3YmYxM2I4MjljNTI3MTFiZWZkMmFkMzJmZWMgbGVnYWN5LXRydW5rCiszMTM4NSBjZDEwZmE3MjFhNTEyYWM4YjM4MmUwYjdlM2MzMzc3NGU2YjQwZTQ0IGxlZ2FjeS10cnVuaworMzEzODYgYTg3ODA0NzlkNGUwOTc3YzIyOGViN2Y4Yzc4MjY5NTY5ZThlZWFkZiBsZWdhY3ktdHJ1bmsKKzMxMzg3IDk0NTNkOGNkZDAxZThmN2MwOGI1MDUzNmFjYjA4OWZjYjZkM2YxODIgbGVnYWN5LXRydW5rCiszMTM4OCBlN2NkMDg2MWMyNzNiNTYyNjRjYjdjYTI1ZTdlY2MzZDYzMmNkYzRlIGxlZ2FjeS10cnVuaworMzEzODkgMzg3NDYzMzdhZTZlMDhlMTUzODZjNTQ2MzJmZjliMzgzNmVhM2QyMCBsZWdhY3ktdHJ1bmsKKzMxMzkwIGY4NDQwYmI4ZWRlNWQxOWY0OWZjMmY2ZmVhYzVlYWZmOTIzYjc4MmQgbGVnYWN5LXRydW5rCiszMTM5MSA4M2JiNmM5ZGQ3OGMwYzYzYmM1MTFkOTQwOTA2ZGFlYTEzZjlmNTA1IGxlZ2FjeS10cnVuaworMzEzOTIgZDE5NjYxZTE5OGY3NDcyYjYwMzYwZWRlYjQ1ZmU4YmU3Mzc5MmUzZCBsZWdhY3ktdHJ1bmsKKzMxMzkzIGI0ZWIzNDM3MmJkYjVlNzEyYzdiNjQ4ZjAzOGNhZDIwZmVkNmI3NGEgbGVnYWN5LXRydW5rCiszMTM5NCA2NTQ5NDQ2OWFkM2VlZmRlMjRkYmM2MmNmZDIyMmI3NWY2NTc0NTY5IGxlZ2FjeS10cnVuaworMzEzOTUgYmJiYmEwZWU2MWZiNmYyZjYwODQ2NjM4NGFhOWJhZTgzOTlmZDZjMCBsZWdhY3ktdHJ1bmsKKzMxMzk2IGU2Y2Y5NTU3ZGU0MmE4OTljOWY5YWI1NDc2ZGYzNzMyZmMwZGU4OWEgcmVsZWFzZTIyLW1haW50CiszMTM5NyBhNTIxMzdiODhlYjNjZjY0ZDliNjVmZDEwY2I1Y2NkOWMzZTdhYTU1IGxlZ2FjeS10cnVuaworMzEzOTggODcwY2YxNGFkZDJhZGJjNzA2YTQ5ZDQ3YjM1N2FlZmUwZDlhN2ZjZiBsZWdhY3ktdHJ1bmsKKzMxMzk5IGE5Yzk2YmI0Njk1M2JkZThiMTRkN2QzMjhjNTYyZWQ5MGE5MGVjOTAgbGVnYWN5LXRydW5rCiszMTQwMCAxMDBmYjY4NGNmM2U1ZjUzNDNjYTBiMDRiNjQxY2NmNTMwZWU2ZTJmIGxlZ2FjeS10cnVuaworMzE0MDEgMTFlNjEyM2RlNmZlZDZmZjkwNjVmYWVkOWI3MGE0ODlhY2ZmZmFhMiBsZWdhY3ktdHJ1bmsKKzMxNDAyIDg4YTQyYTdjMjM4YTY0ZTc5MDI1ZWNjZGY0ZTU4YTE4MThlYzQ3YWUgbGVnYWN5LXRydW5rCiszMTQwMyA2YWY3ODBlMDg2MmQwMDljNjgwYWUwODk0MDQ1ZDY5OWM1OTEzMjA3IGxlZ2FjeS10cnVuaworMzE0MDQgYWJkZWViODE4YTlhMDdjNDEzNTYwZTE1MzljNDYzOGY2YjliM2JhYyBsZWdhY3ktdHJ1bmsKKzMxNDA1IDg3ODllOTgyMmFhNGM5NzFkZjFmOGVhYzYzYTEyN2Y0MzYxMTlhY2YgbGVnYWN5LXRydW5rCiszMTQwNiA4YTZjNDU5MTBlYzkwOGQ1NzgzNjQ5NmJkMTNhN2M4OGU4ZTdjY2U2IHJlbGVhc2UyMS1tYWludAorMzE0MDcgYmU3NjgzYTZmNTIxYzVhNmQwMjgzYzVmNzRmMTM2NDU3YTJlYjRhMSBsZWdhY3ktdHJ1bmsKKzMxNDA4IDg4NGZiNTU4ZjJiOTFkMGJkMDIxNjdmYTNhYWRiNjZjYWNjODc3MGUgbGVnYWN5LXRydW5rCiszMTQwOSA1ZmVkMTE0MmZkMzRiOTA2NmE0NmYxMzc3OTkxNjc4MTQxZjRiOWJjIGxlZ2FjeS10cnVuaworMzE0MTAgMTQ4ZDhjMGI5NjQ3MjMzOWE1YjI4NzkxYWY0OGRlYzg2YjgyMzA2MSBsZWdhY3ktdHJ1bmsKKzMxNDExIDQ2NjU5Njc1ZDdmNzkyMDljZmRlNDYwZjU1YWE5MTIyZWMwMmM1YWQgbGVnYWN5LXRydW5rCiszMTQxMiA1MjBhOGMwYzlhMjVlYzhiNzFkMzdhNDVjZDA5MDJmZDY2NDFlZjYxIGxlZ2FjeS10cnVuaworMzE0MTMgMjA5NGUxOTlmZDU1NjMxZjBjNjJmMTAwN2M1MTg2NDM0ZTUyM2Q5ZSBsZWdhY3ktdHJ1bmsKKzMxNDE0IGVhY2Y5Nzc1OTAzOGMzNTkyZDgwY2U4Y2RiMDMzNDBmYTU2NjdlYzIgbGVnYWN5LXRydW5rCiszMTQxNSAyMDZjNWUzYjViZTc1YjE5Y2VlY2ZmZWRhNjliZmQyZDliYjQxY2UyIGxlZ2FjeS10cnVuaworMzE0MTYgY2VkZjllZmE2OGY4MTRmMzhhMzEyNzk1NWEzNzI5ZDMwOTU0MTQ3MyBsZWdhY3ktdHJ1bmsKKzMxNDE3IDMxZTg1ODFiY2YyNTkzNzhlOTVhZjI2ODlmNDA1MmU3NDk4Y2M4MjcgbGVnYWN5LXRydW5rCiszMTQxOCA1N2QwYmFkNzNjOGU1YTI0YmNmMTU0MWVhMGYyNjBiMjJlMWYwNDI0IHJlbGVhc2UyMi1tYWludAorMzE0MTkgZTdkNTlkYjY4MzlhNzE5YWE1Zjc0YWViNDlhZDlmZTQyMDJjODRjZCBsZWdhY3ktdHJ1bmsKKzMxNDIwIDVhZWUxYzI3MjkzOGQ1MDUwM2IwODRlYzRkMzgyZWQ1MzMwNGI4YzEgcmVsZWFzZTIyLW1haW50CiszMTQyMSBkOGIwNjAxMmIzODE1ZjJhOWNmMGI0ZTg3NzQwNGQ5ZGU4OWJmNDA1IGxlZ2FjeS10cnVuaworMzE0MjIgYTc1OTA1N2VjZjFiMzIwNTcwNTA4YzZmOTliYTdlNWU5MWJmY2JiNyBsZWdhY3ktdHJ1bmsKKzMxNDIzIDY2ZmEyNDc3N2YwYWVmZDhjNGQ3OGNlOTA0M2EzZWNiMTFiYjVkODAgbGVnYWN5LXRydW5rCiszMTQyNCA3NDI4YzEyZjUwM2Y2ZDk2OWNmZDFjMjhiMzllMzk4ZDE0M2YyYTM2IGxlZ2FjeS10cnVuaworMzE0MjUgNGUzMWU0MDg2ODQ5OGE4YmFiOWM0YThlODE1ZTg5MzhjOGU5NzhkMyBsZWdhY3ktdHJ1bmsKKzMxNDI2IGNmMWVmY2E4MmIxODM3ZmIwYzNiNTk3ODAxZTNjY2UwMDNmNTJmZDQgbGVnYWN5LXRydW5rCiszMTQyNyBjMTYzZjk1YjMwMGM2NDlmOTA1NzE4YWFiODY4OTZjYTdjYTY2NWQ0IGxlZ2FjeS10cnVuaworMzE0MjggZDBmNGYzY2Q0ZmU0MWM4NTc1MmVhOWYwMjg1OTg3NGFiM2Y0NTFlMCBsZWdhY3ktdHJ1bmsKKzMxNDI5IDE5N2Q2NGRjMDRkYzI0NmY0ODcwYTQ4NGZmNDE5NzUxYTI3NWNmYzcgbGVnYWN5LXRydW5rCiszMTQzMCA1NWFkZjA4YTIxM2EyZDg0NjFmMTdmN2EyYmZiZGMxMTYzNzc1MjI4IGxlZ2FjeS10cnVuaworMzE0MzEgODFiMmJjYmZlMzliYjYwMDgzYmRkODdmMTg0OTIxOTZjZWEyNTE1ZSBsZWdhY3ktdHJ1bmsKKzMxNDMyIGU1ODIwYTE1MGQ4N2ZlODQzNGVjODBlZGQ0MGI4MzRmYzQ3MDVmZGMgbGVnYWN5LXRydW5rCiszMTQzMyA5YmRhY2NkOGE5MDhjMjMwMjE1MDA2MDIyYzk2ODk0MzcyM2Q4M2YxIGxlZ2FjeS10cnVuaworMzE0MzQgMjMzZWQ2Y2M4ZTE0YTcyNGVjNmY5N2M3YzhlOWQ3OGUzMDE1YWRhOCBsZWdhY3ktdHJ1bmsKKzMxNDM1IGE2ODJjZWM2Yjg4MGE0OTc0NzkxY2QwMGZlMGYxMmE2ZmE3MWQ3NDMgbGVnYWN5LXRydW5rCiszMTQzNiAzZTE2OWQyOTQzOTViODFkNGE4MDhmMDczMGVmOTZmMjU5MzIzMmM2IGxlZ2FjeS10cnVuaworMzE0MzcgMTc0NzQ5ZjViMzJmYWExODYzM2I2NjQ3ODgyZGUzZDJkY2Q3NGFjNSBhc3QtYnJhbmNoCiszMTQzOCA0N2I4Y2FiYWI3YjEwM2ZlY2I1OTRkOGNjN2QzYmY5N2EzZTkyMTMzIGxlZ2FjeS10cnVuaworMzE0MzkgOWI0MjMyMGYxZTBmYjA0ODc5YWMwZmM1Njg2ODg2ZjNiOGUzMDgzZCBsZWdhY3ktdHJ1bmsKKzMxNDQwIGIwZGNhOTJjMjk5YTVlOTYzZTRhMWViMzBiYTRkNTJjYjA5NmNlM2QgbGVnYWN5LXRydW5rCiszMTQ0MSA5NWI3NTA0NDZiYjk5ZDRhZDFhMDNmYzMxMTMxMjAxZGZjMmZmMDJmIGxlZ2FjeS10cnVuaworMzE0NDIgYzVlYmFjYmJhMGJlYzA1OTMxYTg3NjdhODZlZjNiOTIyMGYzOWI1ZSBsZWdhY3ktdHJ1bmsKKzMxNDQzIGNkYjFhYmMxYjQwOTI5YjgwMWExOTA0OTJiZGZhYzY4YzJmNTZlZjMgbGVnYWN5LXRydW5rCiszMTQ0NCBjN2Q3ZjM1MGU5NmM0NWE5NjhhNWY0YTg3MDk5MWI1ODQ3NzVmN2E2IGxlZ2FjeS10cnVuaworMzE0NDUgYTZkZmFiZjNiOTJiZDdhMzU1ZTg1YTEwNzA4MGYyMDY4N2FjOThmMCBsZWdhY3ktdHJ1bmsKKzMxNDQ2IDkzZDQ0ODcwZThiNThhMWVjZDEyM2Q2YWE5YmQ5Yzk0Y2U5MThkMjAgbGVnYWN5LXRydW5rCiszMTQ0NyBjMzQ2ZDA5NTc5MWQ3ODg4NTdkNjBmNGE1ZDgxOWYwZjI5NGYzMmE5IGxlZ2FjeS10cnVuaworMzE0NDggYmUzNzFmZmM0Y2QwN2ExYWU1MTEzYTdlYzU1MDVkOGZiOWRiMGU5NiBsZWdhY3ktdHJ1bmsKKzMxNDQ5IDRiNWMyZTAyNWM1ZWY1Zjg5MmRmN2VkOGRiYjRhNDMyYWY0NDdiNTkgbGVnYWN5LXRydW5rCiszMTQ1MCA4ZTc0MzJjZGY3ZDhmYzY1NGFjYmM5YTQxNjBmODExNjA3NjE1MTcwIGxlZ2FjeS10cnVuaworMzE0NTEgMjc1OWIwNDhkYTliNmY0MDlkYzE5YzA0M2MzZmQ4NDNiYjU5MDM1NCByZWxlYXNlMjItbWFpbnQKKzMxNDUyIGVmYzQ2NTgxMGUxZWRhYzlmZjExYWE4MjljOWUyYmMyZTU4MzA5OWUgbGVnYWN5LXRydW5rCiszMTQ1MyBlYzEwNTJlZjczYmE4OWM0NzNhNDdhZDMyOTM2YjlmYzA0YWQ3YmQyIGxlZ2FjeS10cnVuaworMzE0NTQgMzAxOGYzMWY2ODMwOTIzYjkwOGNmY2NlZjE4NTM2NjY1NWMzNTVlMyBsZWdhY3ktdHJ1bmsKKzMxNDU1IDJjNGFiMWRhNmViNDdlYTE4Y2E2NGY2ZGI4ODE2MjcxMWFjOTkwZjAgbGVnYWN5LXRydW5rCiszMTQ1NiBiZWRhY2E5ODUzZjkwNGNiM2I5YjQ4MTM3OGZkNDZjYzkzNGI0MGJkIGxlZ2FjeS10cnVuaworMzE0NTcgODRkMzA5YjY3NmZhN2I3NzEyOGI0OWEyY2EwMDNkMWUxZDIwMjc0NSBsZWdhY3ktdHJ1bmsKKzMxNDU4IGUzMWIzOTkzMGEzMTI4MzRlY2RiYzg3MzVmZDUwNDJmNzFmZDZiNGEgbGVnYWN5LXRydW5rCiszMTQ1OSAzZGEzMTc3OGVjZDcyNGY4YTE0MGZlNzc0NmQ0NDNkMWY1YTNhMjIyIGxlZ2FjeS10cnVuaworMzE0NjAgODUwYzBkYTEwMWI2M2ViYmViYzQ2YTJjZTg3NGQ0ZTg3MWVlM2ZiYiBsZWdhY3ktdHJ1bmsKKzMxNDYxIDJkNTAwNDliZDIxZGY3Y2FhMTFlYzJiMWQ1MDUzOWQ3OTk2ZTljY2MgbGVnYWN5LXRydW5rCiszMTQ2MiA3MGUyOWVmOWZhNjJmMDFkNGYzYjNmNzkyZTc1YzQwZWI1Nzk5YjE3IGFzdC1icmFuY2gKKzMxNDYzIGFjNjgzYWM2NzU5YWZjZmY1NDM4NGE0NzE3OTJjZmEwMzA3M2YwYTEgbGVnYWN5LXRydW5rCiszMTQ2NCA0NGYzZTMxNTkyOWI5ZTRkOWZkZjMzZGY5YWE5ZmMzN2QyMmRmYWQyIGxlZ2FjeS10cnVuaworMzE0NjUgZjY3YWI2YjY2NDU0MGI0MmQ3MGFhZDBmNGZlYTE3MDFiZmFkMjYwZCBsZWdhY3ktdHJ1bmsKKzMxNDY2IDg2YjUwNmRiZWExODAzMmZmMWNjMTBlNThjZjgwYTUwODg1MDRiY2EgbGVnYWN5LXRydW5rCiszMTQ2NyAxYWZhZmVkOWZhNzc1NWJjMzg2NTQzZGU3MDhlZjgyOTdkZjMzYTFhIGxlZ2FjeS10cnVuaworMzE0NjggOGMyMTFjY2RlMmI0YjRkOGM1NWJlMzY0YTRmNjBhZmQ3ZmE5NzIyZCBsZWdhY3ktdHJ1bmsKKzMxNDY5IGM5NDAxYTM2YmFlNzE0ZjBjZDVmMTQxY2QxN2Y0NjczMjZlYTU4N2UgbGVnYWN5LXRydW5rCiszMTQ3MCA4YzZjNzk3NzI3YTkzNWZiMDU3OTUzMWNlYzM5MGRmZjVjOTVhYTliIGxlZ2FjeS10cnVuaworMzE0NzEgMWJkNDg1NzE3NTY0NjI2MGI5YTQ1MTdhNzcyNjEwMTZiMDQzNThlMCBsZWdhY3ktdHJ1bmsKKzMxNDcyIDE0NDUxZGQzYWNiMDRkMWFkZDgxMWFjMTZkNGMwNjZiZGFmMmNmZjYgbGVnYWN5LXRydW5rCiszMTQ3MyA5MjU1ZmJkZTQzZjM2MmQxYzA0ZjM0ZGU0NjNlYjdhNzJmMGYxMDk0IGxlZ2FjeS10cnVuaworMzE0NzQgM2IzMGY2NjM2MmJlMDA1ODc5NDRhZTk2OWM2OTJiMGZhYzFlMjY1NCBsZWdhY3ktdHJ1bmsKKzMxNDc1IGE2OTYyZjUyZjIzOTgxYTRjMTg5Yzk0M2IzOGY4NDBiOThhMDE3OGUgbGVnYWN5LXRydW5rCiszMTQ3NiBiNTU2MGFlNGQ5NzFkZTA1NTMzMmViNzRjZjBmY2UwYjZmOTE0ZDhlIGxlZ2FjeS10cnVuaworMzE0NzcgZGFlNzlkNzgzMjA1Nzk2MDZjNWZkY2MzYjIzYzI1OWE0YzVjMjI3NiBsZWdhY3ktdHJ1bmsKKzMxNDc4IDBmMDE4ZGY5NzRkYmI5YzgxMTM5ODg1ZmYxZTAxNWM1YmNkYmE3NjggbGVnYWN5LXRydW5rCiszMTQ3OSBkYjFkNDU4NGE1ZTFjMTE1Y2IwODJhMjVmYzkxN2NlNDg2N2Q3OTU3IGxlZ2FjeS10cnVuaworMzE0ODAgYjRlZWIwYmJkZDQ4YjhjYjQ1YjdkMTQzZjFkMjdjN2RlM2ZhYTczYSBsZWdhY3ktdHJ1bmsKKzMxNDgxIDQ3YTc2NGU0M2U5MDE4NTNiZmU4ZjM0NjA0NmIzYTU4YmRlMGRlZTggbGVnYWN5LXRydW5rCiszMTQ4MiBiNTQwZTYwOGJiOGE2YmNiMTg0NjBjZTYxNWQ2NjQ3NmFmN2ExMjI0IGxlZ2FjeS10cnVuaworMzE0ODMgYWE4OGFlZjNhYjBlZWE4NDAzNzMzMWNhZDhiNzI2NzM3YmVhOGQ0MCBsZWdhY3ktdHJ1bmsKKzMxNDg0IDFlNzZhZTNjMTE1NGQ2ZWYxYWZiY2EyNjg3MmExYjMwZWY2OTgxYTUgbGVnYWN5LXRydW5rCiszMTQ4NSBmMzEwODk0MTA3Y2IxOTUzYTFiZDVhNzc5YmVlNmRiNTI3YmZhOTZiIGxlZ2FjeS10cnVuaworMzE0ODYgZjMzMTBkY2VmM2Y4YjVlMDg5ZjY3YzQzZmE3NDcxZTcwMmJhZGIxNiBsZWdhY3ktdHJ1bmsKKzMxNDg3IDcwZTE5NmFmNDc2ZDQ4ZWVjMzUxZmY2MTBiMDM1ZjJiOTBmOTQ1OWQgbGVnYWN5LXRydW5rCiszMTQ4OCA5MWZjOTYzN2U1NmEwOWMyMDMwZDU1MWNmZmVlZjAzNjIxMTAxMGJlIGxlZ2FjeS10cnVuaworMzE0ODkgZTA3YjIxZWEzYzQ1ZGRmNDQ5MzBlZmU5MWEwODE2MjhkNzM2MDFkNCBsZWdhY3ktdHJ1bmsKKzMxNDkwIGNjNGFkOWFmYTIxZDMzODgwZWUyZDIyMzJjY2VmNWJiMTZlZDRiNWMgbGVnYWN5LXRydW5rCiszMTQ5MSBjYjNmMTg5MDhjZWJlZTA1YjljOTE4NDIwMGY5MGVlNTY0MWE1ZjEwIGxlZ2FjeS10cnVuaworMzE0OTIgYWMxMDcyOWYwOTMyZDA5YWI5NzhiOTNkMzM3ODAxZmVlZDUzMGNhNyBsZWdhY3ktdHJ1bmsKKzMxNDkzIGUyNzM0MmE2NDE3MzdmN2UwMDQ2ODE3ZjFlNzJkYzk0YWQwYmY5OGMgbGVnYWN5LXRydW5rCiszMTQ5NCAyMjY0NjM0NDU2OTcyMDNhMjc1MDM1YmQwNmIzMjk2ZThjYzA4ODZlIGxlZ2FjeS10cnVuaworMzE0OTUgM2JhYWJkMDI3Y2M0ZDQxMjBlOGUxMjcwYjc1MDAzMmZlNjMzYTc4ZSBsZWdhY3ktdHJ1bmsKKzMxNDk2IDhkY2M1MjBkM2EyOTY3YTJiYmM1NjE2MWY2YjJjNmQyNWM4ZGNhOTEgbGVnYWN5LXRydW5rCiszMTQ5NyBiMjhkNGZkZTllOWZiOGYzYzhiOTBjZTkzZDg4NzkzNTRiZjJlMGM4IGxlZ2FjeS10cnVuaworMzE0OTggNDMzN2E4OTlmZDEzMjQ3ZjMyNDIxZTQxMzkxMmI1NmQxYTVlM2MyZiByZWxlYXNlMjItbWFpbnQKKzMxNDk5IDQ3Yzk0MjEzNThkZDA0N2QyOWMzMzIwNzUzOGIwYzg2NjUxZjE0NWEgcmVsZWFzZTIyLW1haW50CiszMTUwMCA0Yzg1ZGUyNDdlZWRiOTdmNDRjOTQ5ZmY4ZDM4NmM2NGUyMGVjMGFjIGxlZ2FjeS10cnVuaworMzE1MDEgZTBhOGMzMTE1MDA1ZTFjMzM5ZTkzNmE2OTAwYTI3YWNkNzVkZTNlYiBsZWdhY3ktdHJ1bmsKKzMxNTAyIDJlMGFhNjhkNDM0ZmNjNDA2YWRhOWZmNWEzOThhNzg2NTJhZGIwYTggbGVnYWN5LXRydW5rCiszMTUwMyA1M2M4MDI5MjcyMDJlODQyNzUzODQ0NmE0NTc5MzFlZTUzZDUwMjQwIGxlZ2FjeS10cnVuaworMzE1MDQgOGZjOTFmNTBiODYxNTA2NWQ2ZmNjZWU4ZmU4MzE4ZGZiN2Q4OTkzOCBsZWdhY3ktdHJ1bmsKKzMxNTA1IGQwZDI5ZGYyYjYzOTAwNTNkNWIzZGI0OTU5OTcwMzUyNTI0ZWE1YWUgbGVnYWN5LXRydW5rCiszMTUwNiBjYzk1YmI3ODcwZGM1NDdjMGNjOGU4MzVmZDc0MThlNjdmNzkxYTM1IGxlZ2FjeS10cnVuaworMzE1MDcgZDVlYTJiNjdiNWY0NDNmM2M2NTc1ZmNiZGZjOGE2MDI3NDc0ZWJhMSBsZWdhY3ktdHJ1bmsKKzMxNTA4IDBmZTMyMWU3OGFkMzFhMWJhYWJkOTY1ZDU1NzkxNjE3Mjg3YTYzNDAgbGVnYWN5LXRydW5rCiszMTUwOSA0Yjk5YTcwMWRlZmUwZWI3MGI2MzE5ODgxMGE3NjA0MjUxYmNiMGM0IGxlZ2FjeS10cnVuaworMzE1MTAgOTYzMjdlYzc2ZDllMDJiODQzMTE1OGQyNDYxYzE4Y2MzZTRmZDhhZiBsZWdhY3ktdHJ1bmsKKzMxNTExIGUwMWQ1ZGJiNjZhNDU5MDExZTE0Y2ZjODJiNDcwMzBjMzkyNzYwOWUgbGVnYWN5LXRydW5rCiszMTUxMiBlYjJhOTg0ZDM3NDczZWNkZTczNWQyNWJiZTk2NjhhYjYzMjRhMWJhIGxlZ2FjeS10cnVuaworMzE1MTMgMzg3YTQxMjJjYmQxZTY2YzJkYmNjNWNlNTMxOWViNmUzYjZiYzI0YyBsZWdhY3ktdHJ1bmsKKzMxNTE0IDllMGYyMjQyMjc3YmZjMWZjNDAyZjE0NjAyYjRhNjc3YWRmMTEwYWUgcjIzYTItYnJhbmNoCiszMTUxNiBjZWY3Yzk1ZTc0OGMxY2M2OGU5NGI5YWNiMzI1NDlkZmE5MzkyZmNhIHIyM2EyLWJyYW5jaAorMzE1MTcgNzY1MDE5NzU4ZTk1MTAyYTJiYWExY2IyMmEwMmJjNGQ4OWI5OTE2NCByMjNhMi1icmFuY2gKKzMxNTE3IDcyMWI2ZjE4MWZjYjlhOTQyMGJjYTg4ZDdjMGY1Zjg1NDc0ODIzYzEgcjIzYTItYnJhbmNoCiszMTUxOSBjNGI5MTlmYTBiZTNlYjk0ZjczYzc0OGI2OGRhYTViZGRmOTZmNTlmIGxlZ2FjeS10cnVuaworMzE1MjAgNDgwOWZiMGU4NjYwMTg4NGY4ZjNlMGNjNzU4NmM4NGJkNTdlMGJkMiBsZWdhY3ktdHJ1bmsKKzMxNTIxIGY1OTg3MDk3NjE0Njg2MGJhYmM1ZDM2NDg2NWU2ZDdkY2ZiZjE0NDggbGVnYWN5LXRydW5rCiszMTUyMiA2NTg2MDIxMjRkZjUyODIzYTY1OTJhNmQ2NThkYWVmNTA2YTFhYjdlIGxlZ2FjeS10cnVuaworMzE1MjMgMmM3NTE5MzZmNjk3NjdhN2FmNDM0OWQxZGNmZjcyNTNkYWU5ZWU3ZiBsZWdhY3ktdHJ1bmsKKzMxNTI0IGIyNmY1NzU4NDE0YTBmMTM1MDhmMGJhNDlhZWIzZTcyOWI1NzMyOTAgbGVnYWN5LXRydW5rCiszMTUyNSBlN2IyNmMzZjM1NmY1N2QzNTljNTUwOTNmNjkyZjhhNDY3NzQyNjFlIGxlZ2FjeS10cnVuaworMzE1MjYgMGIzZGIwZWRiMTUxZWMwMDdmY2QzZmI1MjRiZmQ3NjRjZjQ4MjI2YSBsZWdhY3ktdHJ1bmsKKzMxNTI3IDUzNjdjZDBlZWM0NzdjNzU5MGEzMGQyMGVlMTY5YWU0MDNmOTc3YWQgbGVnYWN5LXRydW5rCiszMTUyOCA0NDg5OTE4YTRjY2RiOTAzNjAyNGNjODNiMjc2YjhhOTk5YjA1YzhlIGxlZ2FjeS10cnVuaworMzE1MjkgYmVlYTRmMjFjOWYwNTdjM2IxMzlmZjk2ODBmNTgxNjI2MWIwZTgzOCBsZWdhY3ktdHJ1bmsKKzMxNTMwIGUyNjdlZDEwMGQ4NWZjYWFjOTU2YzA5MDI5OGYxMWI4MTMxOWM3M2IgbGVnYWN5LXRydW5rCiszMTUzMSBlMTFhMTc4YmI0NTNmYTQ0NzZkMTRhNWRkYjE2NjY2NDFkYzdjZDc0IGxlZ2FjeS10cnVuaworMzE1MzIgMTA3ZDk4ODkwMWEwZjkzYzQ2OGFjOTEwNTA3NjYwMTAxMjI4NzAzYyBsZWdhY3ktdHJ1bmsKKzMxNTMzIDllMzhmODE3MDkyZmVmMDkyYWRmN2FjNDczNGRhNmMwNzExOGZkNjkgbGVnYWN5LXRydW5rCiszMTUzNCBlMjdmNThhNTA3MzcwNDgyOWM3ZDliMTI3YTc5YTUzYTdhMjI5YjZkIGxlZ2FjeS10cnVuaworMzE1MzUgOGY3MDYwMmZiZWJiM2MzY2UxNzcxYTA0ZjkwZDAyMDQ2Mzg2OWMwYyBsZWdhY3ktdHJ1bmsKKzMxNTM2IDFkOTJjMTViZDBlNzI1ODkxMzdkY2Q2NGRlMDRiNDkzODlmNjFlNjkgcmVsZWFzZTIyLW1haW50CiszMTUzNyA3MzllY2ZiNWYxNWU4ODljMGZmMTE4YzhlMmVhMDRiMTg0ZjMyOTUyIHJlbGVhc2UyMi1tYWludAorMzE1MzggNzdiZWY2YWE0OGU1NWZiMGQ4NmE4YjE4ZDQzMzYyMjIwMzFhY2EzZiByZWxlYXNlMjItbWFpbnQKKzMxNTM5IDE2YjI1MDMyMjE3ZmY1MTAxMzZhOWNmZmJjNzI5MWMzMmRiNWNkNDIgbGVnYWN5LXRydW5rCiszMTU0MCBkOTJkOWI2YThhN2QzYzI2ODdiYjUxZWYwMjdiNGI1Yzk5NWE0MDdkIHJlbGVhc2UyMi1tYWludAorMzE1NDEgZWI1ZTI5NjE3MzEwOWQwY2NmMDk4ZmZhYjlmMTViNTA2OWRhZTU1NiByZWxlYXNlMjItbWFpbnQKKzMxNTQyIDVjZjA5MjFmNGI5NjI2MjVlOWRhZTJmMWExY2FmYzk1Y2M0YjU1NWEgcmVsZWFzZTIyLW1haW50CiszMTU0MyAyZGY5MjA0OWQ5MjUwMTdiYmI4NjAxNTJhY2Y3YWI3Njg0NGM2YjE2IHJlbGVhc2UyMi1tYWludAorMzE1NDQgYTRmOWQ5MWEzMjFhNzlkZjQ4Yjc1Nzk1NWQyNmQyMTQzMGY2YWEyZCByZWxlYXNlMjItbWFpbnQKKzMxNTQ1IGZlMTBlY2U4YmE2OGM0YWVmYTQ4ZDEzMzczNTc2MDdlM2FmOWUxN2QgbGVnYWN5LXRydW5rCiszMTU0NiA3YWEyMTYzODg5YWNmODdmMDY1NDkxYWRhODE1MDM5NDNlNWUyYTQ5IGxlZ2FjeS10cnVuaworMzE1NDcgMGViOTQ4MzY0OTkwZmI5OTE1MjRkYjQ2N2Y5NTFkMDY0YjM0ZTBmNCBsZWdhY3ktdHJ1bmsKKzMxNTQ4IGZhY2ZmNTIyZTc0NDJjZTAxZmE4Y2IzODBiNjUyYzVmZDEzOGNkMzcgbGVnYWN5LXRydW5rCiszMTU0OSA3MjlhMWMyZWM0ZThlMGZkYTJkZTUzYTNmZDdiYTE0MmFkZWRmNWNlIGxlZ2FjeS10cnVuaworMzE1NTAgNjEyODgzZWFmNTBjNmU3MWNhMTg3MDA4ZTZmNTFlOTlmOGViNzE1ZSBsZWdhY3ktdHJ1bmsKKzMxNTUxIDc5YWQ2MTU2ZDZjNDI0NDY1ODE3YzViYmU2ZjQ5NjhmNGIxYTQ2MzUgbGVnYWN5LXRydW5rCiszMTU1MiAwNTZmZmE1NTQ1MTdhNzg4Nzc3ZGVlYmQxN2IyMjQzMzdlNWViOTFlIHIyM2EyLWJyYW5jaAorMzE1NTMgYThjMGFmODIyODg4NDZlOGE5NWVhZmU2OGIwMDJmNDZlMzJmMWE3OSByMjNhMi1icmFuY2gKKzMxNTU0IGEyZTk3MDU4OGU1YmI2ODgwMmVhY2Y5OTI4MDAyOTA4YjNhZTUxZGMgcjIzYTItYnJhbmNoCiszMTU1NSBiY2UzZGYwNzVmMzc4MDkzYjI4MGY0ZjBmMzJiNTg0MWUwMzI4ZTFlIHIyM2EyLWJyYW5jaAorMzE1NTYgM2JiY2MzYmJhNTYwYzhiNDY3M2YzMWY4YWZkMWY4NmJmMmNkYTU2NCByMjNhMi1icmFuY2gKKzMxNTU3IGI4NDk0ODJjNzBjNmQ5ZjBiNTUwMmNjMmFlYTAyOTk1YmE5M2NmMjQgbGVnYWN5LXRydW5rCiszMTU1OCBmYWM3NjIyODNhYmNjYWYxMDI2ZmZjYzAwY2QwYmI3NTdmMDk4NjgyIHIyM2EyLWJyYW5jaAorMzE1NTkgMWU5MDc0NjJlODNhZGJjZjU0ZGJhNzU0ZWY0NDAxMGU2MGU4ZjlmYyBsZWdhY3ktdHJ1bmsKKzMxNTYwIDc4YzljNGEwMThjZDFhMDM4YjdmYWU1OTQzNGRjMTJhZjJhMWFiMzIgbGVnYWN5LXRydW5rCiszMTU2MSAzMmEwYzJmNDIyZjE4ZGU5MTY0ZTAzMDExZTYxMzc5OGEwOGEzZjNjIGxlZ2FjeS10cnVuaworMzE1NjIgMjFhNTBjMzA4ZGI0NTkyZWQwZjhmZDVmYTA5NDRjYWU0NGJmMzczOCBsZWdhY3ktdHJ1bmsKKzMxNTYzIDVkZmFmZjk4MDkxMDAxZGQ2ZjI1YWIyMGNjNzM0MWY1MGRlYjE5NDYgbGVnYWN5LXRydW5rCiszMTU2NCA4NzJjNmYyMDI4ZmM0YjdmMzZmZmZmNWMzNWNkNWVkNmY1OGQ0YjMyIGxlZ2FjeS10cnVuaworMzE1NjUgODA4NDM3YjgzYjE1MTg2NmFkMjNiMDk4ZTViNWQ1OTMwYzUwNDM2YyBsZWdhY3ktdHJ1bmsKKzMxNTY2IDYxZmE2YjU1YzFkZTJkNjVhNGU2MzMyZDFhODk4ZWUwNWNjYTFjYTUgbGVnYWN5LXRydW5rCiszMTU2NyBlNjNmMWVjY2QyNTBkYWQzOWE1ZWI5MTg4YTkwYjgzYTVlZDNkZGExIGxlZ2FjeS10cnVuaworMzE1NjggOTA2NDU5NjE0YjVlNzEyYjUxOGM5MTYyOWU4NTNmZTFkMGZiYzlmMCBsZWdhY3ktdHJ1bmsKKzMxNTY5IDQzYTllY2JkOTYwN2NhMzNkMTg3Mjc5MTZhODNhOTM1ZDA1ZjRkNGIgbGVnYWN5LXRydW5rCiszMTU3MCBhYmQ1N2M1MzU4YmQ3YTBlYTAzMTAyZTk4MDI5MDMwMDRhNzM5ZTIxIGxlZ2FjeS10cnVuaworMzE1NzEgNmUyMGIwNDllZDZmNmM0NWM4MTk1ODNiMTE4ZWUwNzAzZmQxMmU1NyBsZWdhY3ktdHJ1bmsKKzMxNTcyIDI1ZmQyOGM4YmI2YmFlOWE4MWUzMzZmMmViNTJkNTI1N2MwYTRiZGQgbGVnYWN5LXRydW5rCiszMTU3MyA5MDRhOGI4MjJkYWZiZmJjNmVmYTI0NTg1NjlmMzZmZTE0YmY3NzEzIGxlZ2FjeS10cnVuaworMzE1NzQgNTNiZWYyMGY4NGNjZDJlOTIzOTkzYmNmNWNhMWYyYTJmZGE1ZmRkMiBsZWdhY3ktdHJ1bmsKKzMxNTc1IDFjMmM5N2QzNDU2Mzg0ZTcyYjlmMWIxNDBkOWU1MGZlM2VhOWRhY2IgbGVnYWN5LXRydW5rCiszMTU3NiA5MTYyNGE0NzUzN2M3MDFkNThlODRmY2M4NzkzMDJhMDBiMTRlZjAwIGxlZ2FjeS10cnVuaworMzE1NzcgZjM0ZmNkNjNhZTI4ZTA4MzU3NzI2Y2Y4ZmU3ZmYyOTFjYjUwOGMwMyBsZWdhY3ktdHJ1bmsKKzMxNTc4IDUzZmZhYjVkYjAxNWRkN2FjNmFiOGE4YWQ2NTdmN2RjNTdkMGJjYjAgcmVsZWFzZTIyLW1haW50CiszMTU3OSBiZTA5ZDMyNjg3ZDhjNWVmNTc5ZDU5ZDBjMTJjNDRjYmQ4MGE0YjBhIHJlbGVhc2UyMi1tYWludAorMzE1ODAgM2RkYjA5MmFjZWE4YjhhZTUzM2UyOGJhMmQ1NmUzNzQ3MWNkMjNjYSBsZWdhY3ktdHJ1bmsKKzMxNTgxIDRmNmM2MzMwODA2MzM3ZDUwYjI4NGNmMzhiY2Q4ZTYxYjdkMTQyYWMgbGVnYWN5LXRydW5rCiszMTU4MiBkOGI5ZDdjMDQxNDY1NDNlNzFhYmQ1ZmNiMGZkYWM3OGIzMTU0YzNkIGxlZ2FjeS10cnVuaworMzE1ODMgMWI2NTM4YWEwOTU5MWUxZTliNDI2MDhiN2VhNmE2ZGUwZDk0MDg0MSBsZWdhY3ktdHJ1bmsKKzMxNTg0IDRlYTM3OGE3MWY5NjZhOGJkOGYwMmQ2NmMzNTgyOGNjOGJkNWIwYWQgcmVsZWFzZTIyLW1haW50CiszMTU4NSBkYjkyYzc3YjA1ZTI2YjVjZTM5MDVjN2IyMjNiNTZhNDkyYTA2MDRkIGxlZ2FjeS10cnVuaworMzE1ODYgNDg2YTBmNTE2ZGIwM2QxN2M3MDg3ZmE0NWI5ZWE0Mzg0YzJlNjg5MyBsZWdhY3ktdHJ1bmsKKzMxNTg3IDc4NGVkNjA1YjUxMzBiYWE2ZjQzZmIwYmEyYWY0NGFhMmNkNDM3ZmIgbGVnYWN5LXRydW5rCiszMTU4OCA3ODAyZDhjMWFkYWM4NDBiMjA0MjgyODcxZTU3ZTMyOGNlOGRlMjhiIGxlZ2FjeS10cnVuaworMzE1ODkgMmU4ZjA1MzE5MTliYjJmMTQ0MWMyZWE3N2Q1YzQ4MzFlZjUxNzgyMCBsZWdhY3ktdHJ1bmsKKzMxNTkwIDE5MmJkNmUxMzVhYWRhNThmNTc1YzM3Mzc4NWQ3ZTRlMjhlNGJjODkgbGVnYWN5LXRydW5rCiszMTU5MSBiMzhjZWJjNzZkODI1MWY1YTI5ZGJjMzAxOWEyZWJlYzBkZWMzNWVkIGxlZ2FjeS10cnVuaworMzE1OTIgNWFiYzVkMDg4MTRmOTY4YTNhY2RiNGMzZTM3NTVhNTBlODhjYmM0ZiBsZWdhY3ktdHJ1bmsKKzMxNTkzIDgyM2Q1YjFmMzJlMTJlYjU5OTU1MzNhYTU2ZTA0N2YyZThiOWNjNDEgbGVnYWN5LXRydW5rCiszMTU5NCAwYTg5YjQwNmM3MzJmMWY2YTIzOGMyYTE5ODU5YmE4YmU0NWRjYTc0IGxlZ2FjeS10cnVuaworMzE1OTUgNDk4ZGIxYmNkNjY0ODk0Y2FkM2FiY2MzN2NjODM0NTU1MzViZmJkNyBsZWdhY3ktdHJ1bmsKKzMxNTk2IGNhNWIwY2Q3YTUyNTA0OTVjZGIwYWRjZDQzNmUxODZmNmFmYzkzMzQgbGVnYWN5LXRydW5rCiszMTU5NyA0MDEzNDA3MGU2YTZhMGRkYmIxZjdlYTc4ODQ5ZjhmZTdhZTNmN2FhIGxlZ2FjeS10cnVuaworMzE1OTggYThjODdhMGJlYjk4MDM2MTA5MTVjZDA2NjEzYjAzMDc2YjBmODMxZiBsZWdhY3ktdHJ1bmsKKzMxNTk5IDFhMGMyMzFjNmIwY2FlODA0Mjk0MjZmMTg5OWEwYzE4NmY2Zjc5OTMgbGVnYWN5LXRydW5rCiszMTYwMCA3MjNjNTQ1NzMwN2Q5Mzg1YWIyYWFiZWUxOTBlOTQwMTY3ZmY5MjIyIGxlZ2FjeS10cnVuaworMzE2MDEgN2Y5MGI1YjcwMDFlZDFmZDg4Zjk4M2RiNWYwMzViODE1ZjJjYzBiYSByZWxlYXNlMjItbWFpbnQKKzMxNjAyIGZiNzljYzI2MzBjMWVlNDI0MmJiNzIxOWMwNThkN2I4YmYyNGQxODYgcmVsZWFzZTIyLW1haW50CiszMTYwMyBmOGZjNWUxNGJmZTg3YTVjZjVkZDc1YzJkMTYzMWU0YzcwNDg4NTJiIGxlZ2FjeS10cnVuaworMzE2MDQgYzc1NjYxNDQ0NjU1Mzg4MzI1ZDIwMTM1Y2RiZDc2MjVlNjJmYjExMCBsZWdhY3ktdHJ1bmsKKzMxNjA1IGMzNjY1ZGY2NmQ2ZDViMmM4ZGE5Yjk2NWJiMWNjMDI5MTJlMWM5MTkgbGVnYWN5LXRydW5rCiszMTYwNiAzMjQ4OTZiN2Y0ZTFlMjU5MThhZjFhOGU5OTM1MzQ0NjFlY2NhOTc4IGxlZ2FjeS10cnVuaworMzE2MDcgYzYxZWYxODNjZTJmMTU2NDVjNGE0MDBhYzAxZmE2NWE5YTljODYyMiBsZWdhY3ktdHJ1bmsKKzMxNjA4IGQ2NzMwNTkwNTI2YzMxNGM1YWUwZjZmOGJhNmE3MWUzNjQ3YTExM2YgbGVnYWN5LXRydW5rCiszMTYwOSA5ZDI5N2QzZGUzNmY1ODYxYTVkYjc2N2U5Y2E3NDBlYmJlMTU3ZDc1IGxlZ2FjeS10cnVuaworMzE2MTAgZjcyYzM4M2JjYzQ1ZDRmODg0NGYzMDNjNDQ2MTk0NjVhYTE1ZWNmYyBsZWdhY3ktdHJ1bmsKKzMxNjExIDg2ZDgzODRkODgxMDJmZTI4ODcyMzAxNzU2NGIxMzc2YTJiNmM1ZTYgbGVnYWN5LXRydW5rCiszMTYxMiA4NjY5NjRjODViOGUyNmQ4Mzk1YzQxNzc2OWVhNGU1MjVjY2YzODMyIGxlZ2FjeS10cnVuaworMzE2MTMgNWIzZDU5Yjk3OGEyZDY5ZjE2NmUzZDk3MmFhYjMyMWQyZGRjOWJjNSBsZWdhY3ktdHJ1bmsKKzMxNjE0IGE4YTY0MzY0YTcxMWQ0MTlkNmE4YmE1ZjZiZTg1ZGVkZWExYmZmOTUgbGVnYWN5LXRydW5rCiszMTYxNSAwNDU1Y2Y4OWIxMjM5OGEwZTY4YzNlNjUzZGM0MDg5MTA5YmZmNTk1IGxlZ2FjeS10cnVuaworMzE2MTYgYjA0NjI1Y2VhMDYxM2FhZDZkYTY4MGEzZmY3YjhkZjA5MmE2MWU4YiBsZWdhY3ktdHJ1bmsKKzMxNjE3IDdmZGNjNGNmYzc1OTE3NTU0ZTlhZDc3MzExNjdkZmMyZWM3OGI5ZjMgbGVnYWN5LXRydW5rCiszMTYxOCAwMGRlZDYyZDI2NzhhNDM1ZmQ0MGQ2YmNkMDA0MWI4YmQwOTZhNjhiIGxlZ2FjeS10cnVuaworMzE2MTkgZmNiMzliMGE2ZTMwNmM4MDU4Y2ZlNzQ1ZmEwMWZkZWRkZGI5ZGY3MiBsZWdhY3ktdHJ1bmsKKzMxNjIwIGJiNmJkNTQ5ZjkyYTc5NjRlYjk2OWFmZTA0Y2FhNTA5ZmUwMjQ1N2IgbGVnYWN5LXRydW5rCiszMTYyMSBiOGNiOTBmYzM1MjNkMzY4NDlhNGEwOTg4MGJkOTY5MTU1N2Y4ZTZkIGxlZ2FjeS10cnVuaworMzE2MjIgMGM4OWRjNjI1NGJlOGQ4NzRlZjEwYjNjOWZmMThlNDhjYzY0MTY3ZSBsZWdhY3ktdHJ1bmsKKzMxNjIzIGNmOWQ5MTI4MzQ1YzNmMWI0OWFkZmNkZjZlZTljYjI3ZTgyOTc1ZmUgbGVnYWN5LXRydW5rCiszMTYyNCBhNTg3NDQ1M2JmMTdjNjYwOGU1OTJkN2ZiYTgyZjdiM2Q5NDQ4NzFjIHJlbGVhc2UyMi1tYWludAorMzE2MjUgMjk5NjVkMGQ0NjUwNTlkMzA4NzRlNmY3ODBjNTQ4NGFlMTI2Y2M0MyBsZWdhY3ktdHJ1bmsKKzMxNjI2IDQ0YmExNTcyNTE4ZjcwMjlkYTU0YjBjYTM2M2I5MTY3YzdlZWMxMTcgbGVnYWN5LXRydW5rCiszMTYyNyBmNDJmYmM3YzdkOGU5YWMyZTA1ZmQ0MmU3NDIwMDIxYmQwNmFmYzA1IGxlZ2FjeS10cnVuaworMzE2MjggMjQ3NDM4MTUyN2JiYzljNDJhMjBkNWU5NDlkNzUyMjNkNGEwNzcwNyBsZWdhY3ktdHJ1bmsKKzMxNjI5IDQ2NTQwNWExNTljMWY0Mjc3ZjZhNGU2ZDQ2NzRjODExMzc5NTgzMTkgbGVnYWN5LXRydW5rCiszMTYzMCBkOWU5Yzk2NGI2YTQ2ZTUwZGFmZjM0OTM2YTViOWUwNzNlYjIzNzZmIGxlZ2FjeS10cnVuaworMzE2MzEgMTRmNjVkNjYxMDg0OGU1YmM5NTZiNDc2OGQ0OWM4Yzg4ZGNkNTY2MyBsZWdhY3ktdHJ1bmsKKzMxNjMyIDNjNWE4ODE0NDcwYzljNGJmYWI3NWVjNzBkMzU2MDIzZjRkODRkZTMgbGVnYWN5LXRydW5rCiszMTYzMyAwNGE5M2I3YmRjZTQ5NjExNWIxMDc4Yjk3ZjI5MmNjM2Q5NGU3NDFjIGxlZ2FjeS10cnVuaworMzE2MzQgMTJiYWI4N2EzZGQyMzQ1Y2U5YTQzYTAyMzQwZmI5YjkzM2E1MDg1MiBsZWdhY3ktdHJ1bmsKKzMxNjM1IDg5OWYyZDIxMGEzNGQ4NTQwZTZhM2ZmNGRjNmU0NmQ0ZTk2NTEzOTUgbGVnYWN5LXRydW5rCiszMTYzNiBkNWFhYTY3YzA5NmFmMzU2OTJlM2JkYzk0MmFlZmViYTgwYWU4YmMzIGxlZ2FjeS10cnVuaworMzE2MzcgNzQ4ZjJlNWI4MjkzODgyZjdmY2JiMjE4OWEyODlmYzJiYzk0MmIyMyBsZWdhY3ktdHJ1bmsKKzMxNjM4IDMxMDA4NDMzYzc0ZmFkZjhiZmE5YjlkMTZlY2I2MDRlNTdiMmM1NTkgbGVnYWN5LXRydW5rCiszMTYzOSBkNTBkMWZmNDJiNWFjZThkNTU2MTZmMTIwOWFhNjUxZTczZWRiOWVhIGxlZ2FjeS10cnVuaworMzE2NDAgMmQ1OWNhMjlmMzg0ZDc5MmIzYTgxNmI5ZTVhNWUyMjJjZmI2ZWQ3NSBsZWdhY3ktdHJ1bmsKKzMxNjQxIDdlNjQ5MTM4MzEyYjNmZjRkZDgyZGIxY2Q0ZjVkZjY1Yzc0MzRkYWIgbGVnYWN5LXRydW5rCiszMTY0MiA1NGIzNWRhOTg3OWU5ODgwNWNmZTEzYjU0ZGMzNjNiYWI2Y2EyMGJmIGxlZ2FjeS10cnVuaworMzE2NDMgYWIyNzE4M2M4OTI3ZjY1MDk2NTE0OTliNTRmMzliYjQ3MjdiMzRjMSBsZWdhY3ktdHJ1bmsKKzMxNjQ0IGY0ZTcyYTFhOWYxM2U4NmMyNjJlZjQ1M2M1NTIwMjc1NTE1N2ExZTIgbGVnYWN5LXRydW5rCiszMTY0NSA1ZTVlZWZhMjVmM2FkMWJmNTk2OGQwYzQyNzIxYjg3MGY4MmFmNWY5IGxlZ2FjeS10cnVuaworMzE2NDYgYmY4NjZhYjM5ZGZmMmE1Nzg3NDZiNzEzODg0NWJmNDEyN2Y0NTkyMiBsZWdhY3ktdHJ1bmsKKzMxNjQ3IDJmM2NkM2Y1NDBhZDFhYTUwZDhjZWUzMWIwYjE4OWYyMGU2ZmU4NDIgbGVnYWN5LXRydW5rCiszMTY0OCBkOWI0ODdiOTAzNGE0OTNmNjc0OWM3Y2EyODY0MjY5NjI4ZDJjYTg4IGxlZ2FjeS10cnVuaworMzE2NDkgMTU3NzNlNzU4ZmM3M2FiYzQ5NTc0YzlkOGRkOWU0MGNmNTc0Mzg0MSBsZWdhY3ktdHJ1bmsKKzMxNjUwIDk4ZDEwNzEzNjJmMDQwZDQzOGU1N2FiNWE4ZTczZmJlMzkwMWVmZDUgbGVnYWN5LXRydW5rCiszMTY1MSBkZDZhNjI1NzhiYzg2NDA2NDRmOWJhMTQ3MWJjNDFhNmIxZmEzZDcyIGxlZ2FjeS10cnVuaworMzE2NTIgZDM2ZGQ0MWU4OTBmMmJhMTk2YzM4MGUxNzZlZTQ2ZjgxZGYyNGJmOCBsZWdhY3ktdHJ1bmsKKzMxNjUzIDdhMmY2ODMzOTVlNzI4MmM4YjMzZGZlMjc2YTg2MGRkZDk0MGQ5NjggbGVnYWN5LXRydW5rCiszMTY1NCAyYzhjMmM2YjJhYjc5YjFlNGYyNjIwODk3OWEwZjUzY2I4YWQyNzFhIGxlZ2FjeS10cnVuaworMzE2NTUgNjI4ODhhN2VkZjBiNTU0ZjNjZGQyMDUxODZkOTc2ZWJhOGQ3YTVhZCBsZWdhY3ktdHJ1bmsKKzMxNjU2IDE0NDYzZjQ3ODI0MDIyNjhhYWQzNjZiM2U5MTc0NTkwMDIzOGRhYzEgbGVnYWN5LXRydW5rCiszMTY1NyAyZmM1MmJlNzc5OTkxMzRkNzBmMjU2ZjUyN2Y4MmZmNWQ0ZDdkMmMzIGxlZ2FjeS10cnVuaworMzE2NTggOTM3OGY2ZTU1MWFlNzIxNmExZDBiZjUwZTJhODBlNTJjMjMyYjYxZiBsZWdhY3ktdHJ1bmsKKzMxNjU5IDliNGVlZDRiYjNlMmU0YTE4MzM5YzUyOTg4N2U2MTc2MWM0YTQ0MjIgbGVnYWN5LXRydW5rCiszMTY2MCA0ZjRmMmExNTQ0Nzg0OTU1YWUzMThhMmZjYmNiNTZlNzNlYmQ4ZjExIHJlbGVhc2UyMi1tYWludAorMzE2NjEgODY5Njk1Y2JhMmNkMzdlNjNhZDVkNGNiOTJjYTU1YWFlNThiNDVkZiBsZWdhY3ktdHJ1bmsKKzMxNjYyIGQyNDU2NGU3ZTk5OWNkZGNjOWFhM2QyNTc0ODRlYzA1NTg2NTdjZmIgbGVnYWN5LXRydW5rCiszMTY2MyBjMjRhMjNiMWYxOThhZjBiNTM1NzE5Y2JhN2E2ODY4MmZmNmNlNTdkIGxlZ2FjeS10cnVuaworMzE2NjQgMzljYjkxN2I1ZjdhYjRiYWU5MjQyYjYwYWUxODgxMmZjYjE2YzkwYiBsZWdhY3ktdHJ1bmsKKzMxNjY1IGYxOTgxZWU5ODIyM2NlNWFiMjUwZTcwMDYzYTgwNDhkMGQzMGYwMzUgcmVsZWFzZTIyLW1haW50CiszMTY2NiA4OGU1OGUzZDU4MDc3M2U3MDRlMTYxOTVkYjYxZmRiOTYyYTNlNDkxIGxlZ2FjeS10cnVuaworMzE2NjcgZjQ2OWE2ZDA3N2YxZTk1MDhlN2I0NGVkZGQ1YTRiZGE3NWQ4OGY1MSBsZWdhY3ktdHJ1bmsKKzMxNjY4IDRjY2NlZjliNGQ1NDU3NTdiZTJhMzE0MzU2ZjhjNTk3ZWVhOTBkMjcgbGVnYWN5LXRydW5rCiszMTY2OSA1ZjkyMzE2NTMxOWQ1Y2I2OGM5NTliODYzNjhmZWJmZGZkNzM3NjFkIGxlZ2FjeS10cnVuaworMzE2NzAgODc5MTM1MjlmMjQ4MDk4ZjllNTQ3ZDJiNmI1OTM3NzI4ZWEwYjllZCBsZWdhY3ktdHJ1bmsKKzMxNjcxIGEyNGFhYmNmNWVhMjgxODZiODVkNmEzYzE2MDg5M2UzYTZiMjY1NzQgbGVnYWN5LXRydW5rCiszMTY3MiBiMDA5YzNlZjI3YjUxYzUzNzliMDNiNzM5MzgxYWEzN2YwMDkzNzQ5IGxlZ2FjeS10cnVuaworMzE2NzMgNTBlYThkZWQyOWQwMTdmMzcyNTM5ZDhjNTM5MDc1MzQ3M2E1NTNhYSBsZWdhY3ktdHJ1bmsKKzMxNjc0IDA0N2I1ZDAwMGFhYTUxNjRkZDc4YmU1ZDExNjA2Nzc3ODY1YWZlODQgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTY3NSAxZDY2MjM0MmUxOWE2NGIzNjk5YzRiZDc3ZTA5YThhNzcxMTJjNzlhIGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE2NzYgOTdiOTdlNTcxOTBjZmY3Mzk5OGZkMTllMjNhOWY0ODQ2NmVhOTU4YSBsZWdhY3ktdHJ1bmsKKzMxNjc3IGY5ZjMwMTBmYzg2Zjc2YTkxYmMyZjU0MDE5OTg0YmEzYzVkMWU1ZDQgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTY3OCA5Y2E0YTY3Yjk5NzM2ZmJlYTA3ZDhhMDk2MjQ0MGYwOTNiMzU4OGJhIGxlZ2FjeS10cnVuaworMzE2NzkgY2RlNDQ0MTg0MzM2ZmJkYzdiNjU2YTUwY2MzMjk3Zjc0N2UzZmM3NiBsZWdhY3ktdHJ1bmsKKzMxNjgwIGI1MzQ1NWE1MWI3ODA5NWY1M2QwNzY2ZTZjZjAwNjY4MGQ5ZDAzODggbGVnYWN5LXRydW5rCiszMTY4MSA2NTVhMDg1NTdhNDNlYzE2MjRhYjY1YjIyMjY2YzE3MDhiNjQ2MzhlIGxlZ2FjeS10cnVuaworMzE2ODIgNzg5YjI0ZDY1ZDQyMDQ1Nzc4Njc4YmJmODdmNDQ2M2Y0ZTI2OGVlNyBsZWdhY3ktdHJ1bmsKKzMxNjgzIGViMTVkZTZhNGE0Y2QwNmQyMGViYTA4ZmE3MzAyMGE0MTg5MTc3MTcgbGVnYWN5LXRydW5rCiszMTY4NCBiMjBhMzY4NWQyM2UxZDFhNmUzNWNmNDFlZjViYmNmYzU4YTI0MjVkIGxlZ2FjeS10cnVuaworMzE2ODUgZjlkYjlkYzQ1NmFiNTcwMzgxN2NlNzRkNGEzMjI5N2IwNjdmN2NiYiBsZWdhY3ktdHJ1bmsKKzMxNjg2IDdkMDRiZDg5NzY2MTg3NDVhMDFjOGZmNGY0MzI3M2QzYTA1ZDA0YzUgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTY4NyA0MWE5YTA3MmM2ODE3NmFmNmNjOGQ1MjBlZGQ5Nzc5NzlhOWE1OTIxIGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE2ODggMmNjMTlhMzI1ZDY2NzY0MGU5MzI5Y2ZkNGE3MzhjNzJiYmRiYjQ2MCBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNjg5IGRiZjNlYmVjYTdiMWRhNjJlNjIyOTU2ZTU1MjkyMDZlNjIzODY2MjMgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTY5MCAzNzc5NjFkNzY2MTA1ZmVlMzdmNDA4MjEyNzgwZTJkZGQ4N2QxZmI3IGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE2OTEgMzk5MmNhNzAwZTY1ODAzMTM0ZjY2MWM2ODcyN2JhOTY3MjFkNTk2NiBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNjkyIGEzY2YwN2JhYzM3MzY5ZjJhNjVkNTI2NTU4NjgyMDNjYzM1Zjk0MjEgbGVnYWN5LXRydW5rCiszMTY5MyA1MjRlNWY5Zjg1ZTZhZjAzMzdjYTNiODk1NmM1OGYwZDM2Y2I0ZjdmIGxlZ2FjeS10cnVuaworMzE2OTQgODg4OTY1NGMwZGQ1ZDA5OWYwNTg1OGYwNWQ4OWIxYzU4ODYwOTRhMCBsZWdhY3ktdHJ1bmsKKzMxNjk1IDg0M2Q1Yzc4OTUyYTgyMmVhMDE5MjdmMDJiNWFiMDA0M2ZjNWU1ZTYgbGVnYWN5LXRydW5rCiszMTY5NiA4OThjZTRlOTZmNTkyYjBjNWIwNjVjMTU2NGMwOWQ0NTFiNzE1MzBmIGxlZ2FjeS10cnVuaworMzE2OTcgZjliNzAyYzUyZGFlYTI5OTYyY2UwMzkyYTM3NWEwNmUwNWQxNDNiMyBsZWdhY3ktdHJ1bmsKKzMxNjk4IDI4MTVjMWE5ZjczNTgzNGJlNzYxMmIwNmJjMjY5YTFjYzQwZTc5ZDUgbGVnYWN5LXRydW5rCiszMTY5OSA5ZTczN2Q2M2YzODAxZTc0ZGJlZGYzMGMyNTJkZmFjYzM1MDZjYzMwIGxlZ2FjeS10cnVuaworMzE3MDAgNDRjMzEyMzY3NDNhMDc4MTUyMTBkMDRhZTEwNTk3YTU3YmY0YjNhZCBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNzAxIDI5NDc0NTliMDc4OTIzMjkzZDc2OGJhZDA3MDliYWViMmYzOGJmNDYgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTcwMiA5MDJmY2ZkNWQ2NWQwOThhZThhYjAxMTA5N2EzOTkwZWVhNzUwODNiIGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE3MDMgNzZkMDYxOGYzZmUwZDg3OTJiODQyZTc1NTQzMjM2MTEyZTZlMTQzZiBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNzA0IGE4MzYxYmNhMWM1Y2M3N2U0NmExMTFkYjRjZDBkOGM3ODJjOThlYzcgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTcwNSA1YzBkYjQxZDM4ZjkzNjA5YjgzMjZmYWRlYTEyYmM0YmI5MGU2MmZjIGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE3MDYgOTVhYmYzZmMyYjJkMzM0NGM0NzE1ZjY3ZDY4YjBjODM2NDAwOThjNyBsZWdhY3ktdHJ1bmsKKzMxNzA3IDEyZDRkZjcxYmRhYTM1ZGY0MmVlNjQ0NzFlZGI1NmY2YjFiYTgxYTEgbGVnYWN5LXRydW5rCiszMTcwOCBiZGE0OTBmYzI2OTFlYjk4Nzc0ZGJmOTRkOGRiZDU1NjEzNmYwMTRkIGxlZ2FjeS10cnVuaworMzE3MDkgMGQ4NTUyNDA4ZmNkZTE4YTc1ZGJiMDYyY2QyNzNlNjg0OGNhZTk1NSBsZWdhY3ktdHJ1bmsKKzMxNzEwIGU5ZmMyYzE0MTYwODllYjg3MDE5Zjc5MzA3YjYxZjE3N2UzYmM2MTIgbGVnYWN5LXRydW5rCiszMTcxMSA2ZDc4YzZiZjMxZjdkMmM4ZmNmYWMxNzcyNjRmNTlkMjMwY2MyNjZmIGxlZ2FjeS10cnVuaworMzE3MTIgMTc4ZDE5Y2ZmMTYzODEzMmZjNzMwM2ZkYjNhZjdiMzdkNDEyMjg0MyBsZWdhY3ktdHJ1bmsKKzMxNzEzIDNmZTcyYTk5NDEwM2IzNWNkM2QzZTE5ZTkzNmU1OTNiNjE0MWIzMzMgbGVnYWN5LXRydW5rCiszMTcxNCA4YTcxMzAxYWZjMmRhNjAyYjY3OTRjY2MxOGFkZmY4NDg5ZGIwZWFkIGxlZ2FjeS10cnVuaworMzE3MTUgNDNjN2Q4YTA4NGZiYzM5ZDllMmU1ZWM3NWFhMDM5OWEyODZlZmYxMSByZWxlYXNlMjItbWFpbnQKKzMxNzE2IGU0MDU5MjljMjIzZTU3Y2IyZDhhNGIzZmQyYzY3ZTAyYmNiOGQ2MGUgbGVnYWN5LXRydW5rCiszMTcxNyAyOWQ4MDM0MGZkNDE0Zjg0MzM2MzBjNzBlZDViODBiOTY5MjNhMWUyIGxlZ2FjeS10cnVuaworMzE3MTggMDFhZWQ3MmUzMDllNTJjMWRiZTYwYmMwZGQ3Y2M0NzI0Yzk4YTgyMCBsZWdhY3ktdHJ1bmsKKzMxNzE5IGJhMWJkNmY2ZTZlZGM1NjA4ZGM2NjEyNTVlODc0ZWFkZDYyNzg5OWIgbGVnYWN5LXRydW5rCiszMTcyMCBhYzk2NWE1MDJkMWI3N2M1ZGE2Yjk4MWRkZDBhZTJmNDE2M2QwNWI5IGxlZ2FjeS10cnVuaworMzE3MjEgYWI4NWM3NTZjNWRmM2M2MWJjNjMzNDQ4MDRlMmFmMjNiMDdkZGFlYyBsZWdhY3ktdHJ1bmsKKzMxNzIyIDg5MTM3YmUyNWU3YWQ3ZWU0ZmEwZDBjODhjMGE0ZGI5MDY3Nzc5NDAgcmVsZWFzZTIyLW1haW50CiszMTcyMyA4NzcwNGY4OWVhM2Y1Y2YzOWExNWE4Mzk0OWNkMWQ1YzNjYjhiMmUzIGxlZ2FjeS10cnVuaworMzE3MjQgMzdjZGUwNzhiOTMzMmJkMjkyOGZkZTk0Zjk2MThiMDUyMzczZGM1OCBsZWdhY3ktdHJ1bmsKKzMxNzI1IDMwMzBkNjdmYjRhNTY2OTdkNTQ0M2Y4NDE3YWRmNDRlNWUzZWE2OGUgbGVnYWN5LXRydW5rCiszMTcyNiBiYzJkMDcyMzA5MzRkNGNlZWVmZjFiYTFkZjNmZjhhZjM4NWE0MzMzIGxlZ2FjeS10cnVuaworMzE3MjcgY2UzNzYwZThlNjQwNmE3NzViMjQwNGZhMjJmMGYzNTMwODk1NWE2OSBsZWdhY3ktdHJ1bmsKKzMxNzI4IDI0ZmUwMjM5MDFiMDdiNWJiYzJhNDJlMDk5ZmM3NjVlMzk5NTFjNzMgbGVnYWN5LXRydW5rCiszMTcyOSBhNmNkOWQ2ZDVjYTNhNDkwYzNkMDE3NjM0YzVlYTYzZTljMmZlOTRlIGxlZ2FjeS10cnVuaworMzE3MzAgNTc3NmZkMTg4ZjIwNTQ1ODY4MmMzZTE2NmE3MmFiN2Q2MDZlMzEyNyBsZWdhY3ktdHJ1bmsKKzMxNzMxIDNmOTBkMjFkZWJlOTZlMTgyMjU5NDI0MGEyYzNmOWUxZjMyNTJkMzIgbGVnYWN5LXRydW5rCiszMTczMiAzOTVlYjU2MWVjZTEzNjc2YzBmMmVkMDhmZmFkNjk0OTg0NWE5MzdiIGxlZ2FjeS10cnVuaworMzE3MzMgNDhhNTExM2RmZWY5ODEyYjYyZWQ1Zjc3MGZmZjU3MjAzODM3MDQwYyBsZWdhY3ktdHJ1bmsKKzMxNzM0IDU5Y2EzMjAwYjZlNTAzNGUyM2UwYWYyNDEyMjkxMWE3NDJkNjhmYjAgbGVnYWN5LXRydW5rCiszMTczNSAwYThlODYzMmM2MzE4YjhjNWYwZjQzODU5OTMyODBmZDc4NTc0N2I0IGxlZ2FjeS10cnVuaworMzE3MzYgMDRkZjk2NWQ2NzViN2Q3ZDNjYjA3MzdiNWVlYmYyNzhmODZjNDhlMiBsZWdhY3ktdHJ1bmsKKzMxNzM3IDU4NTIzNTJkOTUyMjJiYWU2OTBhN2MwZjUwOGJlMjI4MWM2MDc4MDYgbGVnYWN5LXRydW5rCiszMTczOCBjZDIxYmU4MmY1MGJiY2JiZTc4ZmU2MzU2MzZkNDBkZGRkOTAxYTFhIGxlZ2FjeS10cnVuaworMzE3MzkgYTFiOGU2NTRkNWZlMTVmOTlmM2M5OTJmNDcyNTk4NjBiMWQwMzQxNyBsZWdhY3ktdHJ1bmsKKzMxNzQwIDkyZjFkMDJlMjhmMGE5YTRmNTljNzUyM2MwNzU0NTlmMDY3NzFhNTkgbGVnYWN5LXRydW5rCiszMTc0MSA3MzZhZDczZGY1YjQ4ZWZmYzY3ZTA2MDg2MTZiODI2ODEyNWVhZmIwIGxlZ2FjeS10cnVuaworMzE3NDIgNDZhODFiZDhjYTBjZDAzMTE0ZDZjNzg3ZmFiZjZkYTJmNDZiNjg1MiBsZWdhY3ktdHJ1bmsKKzMxNzQzIDI5ZGRkYzAxYjVlYzM3NjlkZjM0Yzk1M2ZjMTg3YmI3ZTgwNzFkMGMgbGVnYWN5LXRydW5rCiszMTc0NCA4ZTYwNzE4NTY4OWE0ZDZhYWEyZTAwZDI3NjYwZmFkYzBiNDM2M2M1IGxlZ2FjeS10cnVuaworMzE3NDUgMTdlNmU4MTRkMDk0ZTlkYjNmYjdhN2ViYTQzNGJjZTE5NmZhYmY3ZiBsZWdhY3ktdHJ1bmsKKzMxNzQ2IGU0OGZiNWZiZmRmNGRhN2JhZTJlZmJhODZhOGJiOTE4YWUwODJmYmUgbGVnYWN5LXRydW5rCiszMTc0NyAxNDlhNTc3MmRkMGM0NjJiNjQ0ZDQ4NDY2NTg2MGZjMWQ3NGYyYTQzIGxlZ2FjeS10cnVuaworMzE3NDggZmNiYzgyNGI2ZTM4MDk0YzdmZDU0YjRiNzVlM2VjMjk1MmJmMjU0NiBsZWdhY3ktdHJ1bmsKKzMxNzQ5IDAyN2RjMjEzYzU3ZTcyZGFlM2M2YTQyYjk4YzAwZTZiMTViZWViNzMgbGVnYWN5LXRydW5rCiszMTc1MCA1Y2E2NTBhOTAwNWZhNGIyYzg3MDRjNzNmYmQ1MjgxZTdjNzUyOGQ2IGxlZ2FjeS10cnVuaworMzE3NTEgOGYwMDhiN2NiOTdiM2M0MjQ5MzQ4ZWNmNmZmNDdlN2FkODU4OGE0ZSBsZWdhY3ktdHJ1bmsKKzMxNzUyIDJhYmQ4YTVhZjZkZGIxMThiYTg2ZjQ4YWUyNjc4M2NjZTAwNjE4YTcgbGVnYWN5LXRydW5rCiszMTc1MyBiN2MyOWRjOGFmYTBmMzA1YjkxNjAyMWI0ZjUyZmRhNGVlNmUyOTZkIGxlZ2FjeS10cnVuaworMzE3NTQgZWZlMjQ5ZDA2OWJhNDFiODA1NzljNmFhMDkyMDliZjg0NTlmNDVhNiBsZWdhY3ktdHJ1bmsKKzMxNzU1IDgxNDE1MDQ4YjJhZWYwMDEwNDUxZjRlM2FiMjA3NTY0Yjg2NzBjMzcgbGVnYWN5LXRydW5rCiszMTc1NiA4YjdkOWViNDk3NThjNTYxMmI4M2E0NTEyYTY3OWIxOWYzMmY3NzJjIGxlZ2FjeS10cnVuaworMzE3NTcgMDc0OTc4Nzk5NGRiZjM4M2ZmNzRjNTY2ZjYwMTU2NTViZTQwZDRhOCBsZWdhY3ktdHJ1bmsKKzMxNzU4IGY1N2QzMGQ1MDY0OGVkODAwZmI3OTMxYmM3YTgwNjQ1YTc5OGYyMzggcmVsZWFzZTIyLW1haW50CiszMTc1OSBhN2YwMTMwMmIxNmQyYjE0N2U1NTQ0OGE3ZDU0OGY5NWUzYzM4ZGRjIGxlZ2FjeS10cnVuaworMzE3NjAgMGFiNDU0NTkzYjUzYTE1ZjVhY2M3MzM3MWVhMjNmZWYxMWZiMmVhYyBsZWdhY3ktdHJ1bmsKKzMxNzYxIDA1NTc1YjdlNjcxNDA4NDNlYjBlMTUyMDUwNzhmNDEyNGY5YjljMjcgbGVnYWN5LXRydW5rCiszMTc2MiBhMzgyMjYzZGYwMWQ1YTI3ZjMwZDY3YzQ0MTQ3MjM0NDVmZDhjN2Q4IGxlZ2FjeS10cnVuaworMzE3NjMgYmFkOTE1NjQ1ZmEyMmRmZTk2NWZkMWMzNzM4NDFhNjJhNGM2MTQ1MyBsZWdhY3ktdHJ1bmsKKzMxNzY0IDc3MTk2MWU0NTMxNGYwMmMxYzEwZDQ0ZmI4NDk5Njg0YjE2OWViNmIgbGVnYWN5LXRydW5rCiszMTc2NSA0MzkxMDFkNDcwNWJiMDVlYmMxZjdjMTQ3ZWIxMGM0ZmJlZGY3ODgzIGxlZ2FjeS10cnVuaworMzE3NjYgMmMzZWY0NjM1OWVmNDYwNWNiNTc4YjkzYWE4NTJiOGQ2ZGVmN2M2MSBsZWdhY3ktdHJ1bmsKKzMxNzY3IGZiOGY3NmRmNjRmZjQwNTU1ZDNkYTU1MmI1ZjMxZTU1MzY2MWY1MTYgbGVnYWN5LXRydW5rCiszMTc2OCA5MmUzYjYxMWRjOWY5MjA3MjBiNzJiNjBhZGNkODc0MDE3NDBjYjMxIGxlZ2FjeS10cnVuaworMzE3NjkgMDA4YTI2YzM1M2FmOTcwOTRjY2M4MWY2YjdhZjgxOThkZmY2OTJhOCBsZWdhY3ktdHJ1bmsKKzMxNzcwIGMwM2JlMjJmZGQyNGMxZTU3ZDIzMTQ0NTE2NTUzNWU0YWI4N2QzMTcgbGVnYWN5LXRydW5rCiszMTc3MSBkNGIyNjJmYmQwNGEyMDdlNjVmY2U2ZGFiY2YwYjgwYWQwYTE3NDgzIGxlZ2FjeS10cnVuaworMzE3NzIgZjJiZDBmNGQ4NTc1MGI4Y2VlNDNjNjk1ODQ0YmJiZmE2NWZjMGQ3NSBsZWdhY3ktdHJ1bmsKKzMxNzczIGIzYzE1ODdiMmI4ZTMyMmNkNzI3MTRjMmRlODAxZDY1MjBmZjRkYjMgbGVnYWN5LXRydW5rCiszMTc3NCA3M2IwZGMyOGM5MWE3YWU4YzA1NGE3MzViZjRiYjM5NDEwMzA1ZDUyIGxlZ2FjeS10cnVuaworMzE3NzUgOTA3MDQwNGYyNGZhZDU4NzRmZWUwY2Y2ZDE2NmVjZmM4MjYwOTIxNiBsZWdhY3ktdHJ1bmsKKzMxNzc2IDdjOGU4ODA3YWVkMjljNmYyZGZlZDkzYzJhNGNkMmZjZmI4MWI1ZWQgbGVnYWN5LXRydW5rCiszMTc3NyA5OTdkNDgxZWE0MDkxMGExNGM0Y2QyZmEzOTVkNWQyMDllMDFmOWE5IGxlZ2FjeS10cnVuaworMzE3NzggZGM5NDc1ZWM3OTg1NWNjOTA4ODk2Y2M2Y2Y5ZDYzOTI4N2M4YjVlNyBsZWdhY3ktdHJ1bmsKKzMxNzc5IGVjYTY5N2UwNmEwN2NjMjk0YjE2ZTVhNzViN2JiMzlhYmFkNWRmN2EgbGVnYWN5LXRydW5rCiszMTc4MCA3MzNhZWJiNTdmYjAwOWMwY2EzMDQzNzNlNTJlZTJjZmE4ZDkzZTdkIGxlZ2FjeS10cnVuaworMzE3ODEgYTJkNzliOTNiNTBhMGE5M2ViYjdkZWEwNDMzYmJiNTlkZDE1Mjg5NSBsZWdhY3ktdHJ1bmsKKzMxNzgyIDI3YWRkZWEzM2UwY2FkNDhhYTcxYTQ5NDMyMjkxZmZmNjkwYTBhMjkgbGVnYWN5LXRydW5rCiszMTc4MyBjZGVhNWIxYjgyODBjZjllZjkxNjE2ZDc3MjNhYjllNzgwNzAyNjgyIGxlZ2FjeS10cnVuaworMzE3ODQgNDMwNjZmNjdjNWRiYTc0MTcwMDhmNTkzOGYyMzZiYzQ0ODk2ODQ0ZSBsZWdhY3ktdHJ1bmsKKzMxNzg1IGI4NGU2YjRlMThjODU5OWNmZDM5NzUxODRmZmU4MWIyOWFjYzA0NGQgbGVnYWN5LXRydW5rCiszMTc4NiA2ZTQ5YmEzZjYwYmU1NTYwMDllNTZlM2M4NWExMTY3ZDY3YzNmMGYxIGxlZ2FjeS10cnVuaworMzE3ODcgYTJlNjhhZGRlOGIwZjRjYTA5NDhiMDQ5Y2YzZTNlODY4MGZmNzNjMyBsZWdhY3ktdHJ1bmsKKzMxNzg4IDRjYWZhNTE0MTAxMjUyZDU5MTdkOTE2MDY0MGM4M2ZlNDViMjE2NjUgbGVnYWN5LXRydW5rCiszMTc4OSA0N2NiODVjZGQ1ZjMxZGU4YjVmZjdlMWUzYTk3YjUyODc4YTBjYzQ4IGxlZ2FjeS10cnVuaworMzE3OTAgZDQ0ZjljYzI3MjkwNTU1NTMyZTFmZWVlODIzY2JhMTJlM2Y5YzVkOCBsZWdhY3ktdHJ1bmsKKzMxNzkxIDI3MWJhYTg4NDI0YmUyOWE4ODNhNTIxOWRkYjc5MzMxYWFhY2FhNzEgbGVnYWN5LXRydW5rCiszMTc5MiA2MjczYTE1OGZiMGFjZDcxYzc1Yjc4MThlMmU4MTI2ZjYyMzExMDliIGxlZ2FjeS10cnVuaworMzE3OTMgYjVkNmMzOGViMTYzNmZlNjM5MDgwMzJjNzFhZGNjN2ZjM2NiYjYwZiBsZWdhY3ktdHJ1bmsKKzMxNzk0IDQ4YTYxYTRiNzNhMTBiZTE1ODAwMGJhOWM0ZmEwNjczMWZkOThhZDIgbGVnYWN5LXRydW5rCiszMTc5NSAzMGZhMWY2MWIyMzFhN2VkNmI4M2I0YTgwYWViNmNlMmViMzYxMzYyIGxlZ2FjeS10cnVuaworMzE3OTYgOGYyM2QzOWE5YTMzODdhNjI4N2RiYzg4NmIzNDYxMWJmNDg2OGFhMCBsZWdhY3ktdHJ1bmsKKzMxNzk3IGVhNzAwMzJhMjRiMTAyNDIxZmRjMzMyNGFiMzMxYWZjZjIwNjQ0NTggbGVnYWN5LXRydW5rCiszMTc5OCAwMDg5MmFmZmI2MGFlODRmNjBkOGNkOWY3NDUzMzZkNzFhMzY4NGY3IGxlZ2FjeS10cnVuaworMzE3OTkgZmUxZDU3MWMzZjgwM2UzNzNmMDk5ZDZlZGNlMDMwZWU2ZDQwMzVjMCBsZWdhY3ktdHJ1bmsKKzMxODAwIGYxM2FkYzAwYzE2NTIwMzQ3YTkwZDBhOGI2MmM5NjUyZjUyODhmNTcgbGVnYWN5LXRydW5rCiszMTgwMSAwNTc0MzI2Yzc4YmJhZTQ2YjdlZmQ4NzZlYzc3NTQyNjNhMzBhMGZiIGxlZ2FjeS10cnVuaworMzE4MDIgNTg1NTkxNWIwMGY1ZTUxNDcxMzBkYjE5MDdkOGY0ZjkyYmE0M2UzMSBsZWdhY3ktdHJ1bmsKKzMxODAzIDVjM2FjYmYyMmEyNmY2NzJmYjBkODE0NzY5YjFmM2E5YjYwYjlmOTcgbGVnYWN5LXRydW5rCiszMTgwNCA2MjY5ZWFhZGQ0MWVmNGJiM2I4YjMwMzkzNmZjMzNkMTQzNDk5OWExIGxlZ2FjeS10cnVuaworMzE4MDUgZjk1ZGZiMzNkNzYyOTNjODA4OTExNGU5YTY3MThmNzNiM2ZhNjJjZSBsZWdhY3ktdHJ1bmsKKzMxODA2IGE1OWQ4ZTRjYjkwMzg2N2JmMWU3MDIwMDIwMWVjZTM5ZjViOGFkNjkgbGVnYWN5LXRydW5rCiszMTgwNyA0ZjY3OWFhNjIzYzJmNmMyNTYzZDRmZGRmMDc4OTc0MTUwNTYxZWJlIGxlZ2FjeS10cnVuaworMzE4MDggNGI2ZDdjNzU2OThhYzdiZjMxZjY3NGMwNDY4MDU4NGNjMmExM2E5YyBsZWdhY3ktdHJ1bmsKKzMxODA5IDZlZThkNWEzMGNiYzIyMjRhMWQ0MTJiYzU4ZGJkNzI2MzdiYmU1YTUgbGVnYWN5LXRydW5rCiszMTgxMCAzNjU1ZTkxYjNkZWFjZmYyY2ZjMWE1ZTQ1NzYzMzE0MTQ3ZGZkOGY5IGxlZ2FjeS10cnVuaworMzE4MTEgNGIxZmVmMzdhYzdiZDdhYThjMWI3NWZmNjg5ZGZiMTcxZjllZWY4YSBsZWdhY3ktdHJ1bmsKKzMxODEyIGQ3NjMwMTg1ODk0MWM5MGI4ZTc2ZDk4ZTgyYWIyMjJkN2M3MWVkYzUgbGVnYWN5LXRydW5rCiszMTgxMyBiMjQ2Y2EwMzNlM2VlN2Q4NDI1ZGFmM2M2MTY0ZmQ1ZGFkZDk4NWNiIGxlZ2FjeS10cnVuaworMzE4MTQgMDNkM2ZhM2UxZDRlNWNhNGZjNTc1NWViYTJhMjViMDJlNDEzNzUyMyBsZWdhY3ktdHJ1bmsKKzMxODE1IGZhMThkZjc0NmVjNTI1ZDc3MjZhNWJjYjVhZTVlMDE1YzVjYmFmNzkgbGVnYWN5LXRydW5rCiszMTgxNiA1YzQ2Yzk1ODdhMmZhMzE3OGVmMWMwYmVmNzM2MGNkODkzZjNlNDk3IGxlZ2FjeS10cnVuaworMzE4MTcgOTI3YTk4MzNmODNiNzlhZTFiYTk4NzJiZmNhOGZhM2FlMTJhMTkyNiBsZWdhY3ktdHJ1bmsKKzMxODE4IDZjMDY2N2FjOTM5ZWRkM2Y1YzA2ZmM3YTJjOWMyM2ZhMDdkOWIxZjggbGVnYWN5LXRydW5rCiszMTgxOSA5MmI5MzAxMzAwYzM5NjgwNWVhMWZkNDI5NjFiYTdkZjJjMTE5Mjk0IGxlZ2FjeS10cnVuaworMzE4MjAgMjc1MWM1ZWY5OGJlNmNjOTc5MzNkMDg0YWQ4ZmVlZTdkNGViNmQxOSBsZWdhY3ktdHJ1bmsKKzMxODIxIGE0ZTdlZGM2OTA1NGQ1MDNiZjIzMGFiZTY4NTQ3MGJlMDk5MWJiODQgbGVnYWN5LXRydW5rCiszMTgyMiAxNTY5MTFkYmEzMDZjMTI3ODMyYzdkNzljNGZlNzJmOGJlOGY1OGVlIGxlZ2FjeS10cnVuaworMzE4MjMgYmVhM2QxZmRhM2RjYjAyMTEyMWY3YmY2YmRkY2VlZWQ3NWJhYTQ0OSBsZWdhY3ktdHJ1bmsKKzMxODI0IGI3OGQ4YmI1ZWJkNzE0NzRkYTc5OWQwODU3YjZlZmRlMDA3MjI4MTQgbGVnYWN5LXRydW5rCiszMTgyNSBlMjhiNDhmYzkwMGJmZGFhZDMzMTIxZjFiZThiZTg0ZjhkNzNlOWIzIGxlZ2FjeS10cnVuaworMzE4MjYgZmM5MjlkNzFhNDUwZjQzOGQ4ODIzYzNjMTRlODRhZDM5ZDhjMGQyNCBsZWdhY3ktdHJ1bmsKKzMxODI3IDY1YjcyMjY3MzgyOTA5NzM3ZGIzZjU2MzA5OGZkN2Y4ZmRkNmVlYmQgbGVnYWN5LXRydW5rCiszMTgyOCBmZDliODgyYmUwNzk3NWJmZmQ1YmIyNzQ5OGU0NDdmMDEyM2NkZGQzIGxlZ2FjeS10cnVuaworMzE4MjkgN2YwYmZiZWM5ODdmYTBkZjI3ZWVkMDZhMGEwY2ZkZDlhMWNmMTVlOSBsZWdhY3ktdHJ1bmsKKzMxODMwIDMzNjU2NjRiODI5NDJiYWM2NjVjOTczMTIwM2UxYmRjOWQ2ZTAxYTggbGVnYWN5LXRydW5rCiszMTgzMSA0YzY0NGE2MGMzMGQ5Mzg1NWRmMWE4YmQ0MDNkYzFmZWM3ZmE3OWJhIGxlZ2FjeS10cnVuaworMzE4MzIgYjEzNTZkYmFhYjlhMmI5NmVmYjZhODExODI4MTZjOGQwMWMzNmU1NSBsZWdhY3ktdHJ1bmsKKzMxODMzIGZiYWUyMGEyZTExNmRlZWY3YWYwOTQ0ZDRlNGU1ZDYxMWY4MDM2YjcgbGVnYWN5LXRydW5rCiszMTgzNCAxMDI4ZGM2ODA3YTVmOTgwNWNiYTliNjI3MGMxM2FiMDFkOWMyYmRjIGxlZ2FjeS10cnVuaworMzE4MzUgNDU5YzQyOTFmNzU5NjMwZDdhMTVlOTMzNzQ2ZWNmODUwMWI1NzVjZSBsZWdhY3ktdHJ1bmsKKzMxODM2IDZhMmQ5YWU0MzBiZWE2YzFmMzUyMDgxODY1YTYyNGIyMDZhNmY2OTQgbGVnYWN5LXRydW5rCiszMTgzNyBhMjk1N2ZmY2I1OTg2NWQyZjYwNzc0ZTBkNGY4YmU2ZTVlMWIwODYzIGxlZ2FjeS10cnVuaworMzE4MzggZWY1MjVjOTliNGVlZDY2ODUwY2QzYzZkNDg0MmEzNGZiZTc0NjhhYSBsZWdhY3ktdHJ1bmsKKzMxODM5IDUxYzc0Yjc5NWU5ZTk0OTRjMDlmZDc3MTZmZDAwNmQzY2FkYzY1OWYgbGVnYWN5LXRydW5rCiszMTg0MCAxNjJlZDJhOWNjMGM4YTI3ZTY4MzYzMTNlOWZhNWZjMTAwZTAxNWZjIGxlZ2FjeS10cnVuaworMzE4NDEgN2ZjM2U2NGQxNDI0MTUzMmNlNjNkMjgzZGZkNjMzOGExMWNhYzNkNCBsZWdhY3ktdHJ1bmsKKzMxODQyIDczODE0Y2I1ODI3ZjhjNWQyMzRiMzc5NDI4ZmU3ODkyOGUyOGFhYmQgbGVnYWN5LXRydW5rCiszMTg0MyA4ZDEwZjY4ZDdjM2IwYWYyOTFjMTViODFlNTI2NjY4ZDA2YzY4ZjJhIGxlZ2FjeS10cnVuaworMzE4NDUgYThkMjRiOTdjODEzYjIwZGRjNGE2MzY0ZmNiZDZkZmMyMjhlY2MyNiBsZWdhY3ktdHJ1bmsKKzMxODQ2IGI5NzJiZTgwNjQ3N2YxMzFhZWNhZDFhOTY2ZWVkNWI3MTE1ZDI3ZjUgbGVnYWN5LXRydW5rCiszMTg0NyBjOWZjMzVkMGEzZWJhYmYwZDRjMDE0ODVhYjRhMjc1MjNiMjIxNjlkIGxlZ2FjeS10cnVuaworMzE4NDggMjI4OTdjYTEwMjg4ZGQxYzJkNTY2YTE1OTdlYTk5NTY1YjU1NzRhMCBsZWdhY3ktdHJ1bmsKKzMxODQ5IDVhNGM3ZTZmMDA4ZTIxMmYzZjA2MGNjNTQ4YjdlMWVlMDRjOGU2NDYgcmVsZWFzZTIyLW1haW50CiszMTg1MCBlNDA1Mjc3Njk4NjRjYjI5ZDY5MWJiMWNlMzliMjc4MDNjZGQ5MWJiIHJlbGVhc2UyMi1tYWludAorMzE4NTEgMTcxZjE4NjJkZWE5NTczNTRlNDFjMWY2ODkzYzk0ODBiODJmNGVkNyByZWxlYXNlMjItbWFpbnQKKzMxODUyIDY1ZGQ5NjEyYTc0ODA4MDE2MTEwN2I2NDQ3YmZkNTVjZDkzODIzM2QgbGVnYWN5LXRydW5rCiszMTg1NCAwYmExN2U5M2YxMzlmNTc0ZmUzYTViMzAyMzJkNzUzODVjZWE4NmQ2IGxlZ2FjeS10cnVuaworMzE4NTUgNzY1NGMyNGRlY2M0ZWRiOWM0NDJiZTc5ZGMxODk5MDE1YTQ2OGRlYSBsZWdhY3ktdHJ1bmsKKzMxODU2IDJjMjJiNWMwOWE1OGRjNjE5M2UyYTc0ZTdhMDNkNzEzYzViZWM4OTIgbGVnYWN5LXRydW5rCiszMTg1NyBhYmZlNGIzODAzMDVlZDhjMmE5MTdiZTA5M2NhMjMzYjliMjI0ZWQ1IGxlZ2FjeS10cnVuaworMzE4NTggMTQzMTZkZjFjMjk4YjcxNjUzZGM3NTRiNTFkMDg0MDI2YjI3MmNlMCBsZWdhY3ktdHJ1bmsKKzMxODU5IDk2MDJjNjY0ZWQ3YTJjYmU2ODFmMjAxOWVkYWRiNjc1OTc3NjEyYTEgbGVnYWN5LXRydW5rCiszMTg2MCA3MzQzNGZhOWQyODUyYjc5Yzk5OWQyNzg3YzRjZTFhMzliYmY2ZmMwIGxlZ2FjeS10cnVuaworMzE4NjEgOGMwODI5MzZkYWFmZGFlZTMyMzk1N2FjZDlkZWM1ZjZjYWRhOGIzOCBsZWdhY3ktdHJ1bmsKKzMxODYyIDQ3MDUwNGVmNTc4YjIwNTM2Njg1OGFhNDdhMDIwOWQ5YWE2NGExZmYgbGVnYWN5LXRydW5rCiszMTg2MyBiMTRkNjc0MWY0OTY1MWI4NmY2MjAwMDFlZDNiNjYwMGZiOTM1OWMzIGxlZ2FjeS10cnVuaworMzE4NjQgNzAyZTU0N2YzMWUwZDUyNWRmNTU0Y2IzZWEwNDU4N2YwODAxOTcwYiBsZWdhY3ktdHJ1bmsKKzMxODY1IDIyNmM1YmRkMTYwYjk1YWU3YzcwZmRiODFhZmE5ODYzNDUyMDY4Y2EgbGVnYWN5LXRydW5rCiszMTg2NiAwMGJkYTU2ZjU0MzMwNjNjZmJlYzFhNTU3MTIwM2YzYmE3MmI4ZDMzIGxlZ2FjeS10cnVuaworMzE4NjcgOWMzNTcyYTU1NzVmOTk3MzIyNGQ5MDUxYmE4NzQ0ZmZjYjJkMmVlZCBsZWdhY3ktdHJ1bmsKKzMxODY4IDVjOWRjZGM3ZmU4ZDY5YjNiMmY0YzNlN2ExZGExOGFmN2JkMzg0NGMgbGVnYWN5LXRydW5rCiszMTg2OSA0ZjQ3ZGYyMDQxNWM3MWViOTkwOTYxZGNlNjE0ZmYzMzZmMzY4MzIxIGxlZ2FjeS10cnVuaworMzE4NzAgMjQ4OWQyMjIyOGRiYmM5N2RkMTAxYTE4ZGI2YzdiMWYwNmE5YjgxZiBsZWdhY3ktdHJ1bmsKKzMxODcxIGVmNTVmMjIzMmExMGQ3MzFiZGVhZTA3ZWZkYzQ4Yzg2MGZmYWJhYzAgbGVnYWN5LXRydW5rCiszMTg3MiA5MGY3ZmJjYjM3MDY5NTdlZjc2OThkODY0ODBiNGMwMjNkYWIyZjAzIHJlbGVhc2UyMi1tYWludAorMzE4NzMgOTE4OGNiOGUxOTFiNDg4Y2E1MzBiZGZjNTBlMzBlNTdmNzk1NDA5ZSBsZWdhY3ktdHJ1bmsKKzMxODc0IDkyNzhiMWM4MGE2N2YwY2ZjZWFkMjk1ZDRjYjQ5NTcyMjY1MzhlZmMgbGVnYWN5LXRydW5rCiszMTg3NSAzZTE5ZTNiNzJkOWIxYjk3NmRjYzQ3MTY1NTMwMDI5NTBjZWExOGJmIGxlZ2FjeS10cnVuaworMzE4NzYgMDIzZDNiNTBlNTk3OTc0ZWIzZDQxYzJhN2JhZDNkNGNlNjMzMmI3ZiBsZWdhY3ktdHJ1bmsKKzMxODc3IGJjMzcwYjg3NTNmMTI2MGEwZjRkNjY5YjE2YmI0ZGY1YzEzYmYxNjQgcmVsZWFzZTIyLW1haW50CiszMTg3OCAzNjBhNTc4MDU2NzZkZDIzYWI5YTY0MGVhZjg0ODg0ZGYyOGQxMGY5IGxlZ2FjeS10cnVuaworMzE4NzkgZmQ1ZWY3MDAzNDY5YTYzMTg2NDU4Y2ExN2UxYWJhMmNhYzRiZWVmNiBsZWdhY3ktdHJ1bmsKKzMxODgwIDkyZGFmOGIwNmFiYzE4NjJmNWVmZTY4YzUxMDc4ZTA0NmYyZTlhOWIgbGVnYWN5LXRydW5rCiszMTg4MSA5ZWJjNjFiOWU4YmRiYTY1YTM5MTUyZWM1MjU1NTIxNTAzMWU3N2QyIGxlZ2FjeS10cnVuaworMzE4ODIgNjdiMjJmYTRhOGZlNWY0NjRlZmJmY2JiY2Q5MzRiZWZjZGE2ZmUwNCBsZWdhY3ktdHJ1bmsKKzMxODgzIDRlMjIxMzY4YWY3MDdiNGIxNTNhYmY3YTg2ZmU3OWZkMDQwZjA1YjAgbGVnYWN5LXRydW5rCiszMTg4NCA4NTA2MjZkNDc1NzQ5ZDQ2ZGVlYjc0NjU4YmEyZmM4OTRjNGQ3ZjY5IGxlZ2FjeS10cnVuaworMzE4ODUgMzM1OGRmYjFiMThiNDIyZTBhOWJlYzg0MDE2ZDcwYmRjYzI2NjIyZSBsZWdhY3ktdHJ1bmsKKzMxODg2IDE4NThiY2I2MTcwNjgyYzNiNzdlM2I0ZThiODcxMmJiOTk3YTUyODYgbGVnYWN5LXRydW5rCiszMTg4NyBjZGQ1ZDBjZmE2ZGNlMzU4ZDkyNmI5ZWU4MzYxYzBlYjFiZTc0Y2E3IGxlZ2FjeS10cnVuaworMzE4ODggNjJkZjE3ZTUwMWRjNjgzYTM2MjQ4ODlmMGU1ZDUyODA2NzllMDA3MCByZWxlYXNlMjItbWFpbnQKKzMxODg5IDAyY2UyMjgzMGFiOTYwOTc5YTAyNjg1ZDAyMGM2ZTg5ZmViY2I2NzEgbGVnYWN5LXRydW5rCiszMTg5MCBiOTFhODFkNjgwNjgwZTAxZmQ2MTQxNzNhYjE1NWZmNmM2NzkyMTcyIGxlZ2FjeS10cnVuaworMzE4OTEgMjkxYjlkODY2ZWNmMmE5YzhkN2YzZWZkZGI3OTg1OWNiODFkMGJjMiByZWxlYXNlMjItbWFpbnQKKzMxODkyIGVlYzNmZDE2NGE3ZGI4ZGQ0YzdmZTg4YzE5ZTIyNDBkZmU3NDMxZDAgcmVsZWFzZTIyLW1haW50CiszMTg5MyA5ZjI4N2U1ZWIwMzc3NTI0OWVlMWQ0OGEyMzk5N2I0MTIzZGVkZDg5IGxlZ2FjeS10cnVuaworMzE4OTQgNzAwMDNiMGNiODM3OTUyMGQ2ODAyNDFjZmU4MDY5NTE0OWYzZTYyZSBsZWdhY3ktdHJ1bmsKKzMxODk1IGI1NmQxMGVkMzNjNWU4NWFmMmVlZGYzY2E1YTAwYmExOTUyYjQxNjkgbGVnYWN5LXRydW5rCiszMTg5NiA5MGYxN2MzNzRmNTkyNzI4ZTg5ZTQ5OWEwNjY0N2MzMjRkNDIwZTliIGxlZ2FjeS10cnVuaworMzE4OTcgMzQzNGQxYjkyMDZhNWJkOGRlOTc0YzFhNTAwYmE3Zjk1ODQ0N2Q4MyByZWxlYXNlMjItbWFpbnQKKzMxODk4IGNjMzVlZDJiMjZhOGIyYjUwNDMzNTQ0YzMwZDMyNmM1MmZlNTUyMzEgbGVnYWN5LXRydW5rCiszMTg5OSA1Y2YxZjJmMzBkYmQ2Y2M0MDY1YjM0ZDVlNTljNmZkYzViYjZmN2FmIGxlZ2FjeS10cnVuaworMzE5MDAgNzk3OTA5NDkyYzM4NjcyMDQ0MzdkMWJlNWFiMWM5ZmNjNGRmNjM4ZCBsZWdhY3ktdHJ1bmsKKzMxOTAxIDI2ODA4YWM3ZWU1MWFlOTkyYTlhMGE3ZWY3YmRlNzQwMzM2ZjM1ZDAgbGVnYWN5LXRydW5rCiszMTkwMiA5ODBkNmUwMTEyY2UxZTQ2NDNkNGRkMWFjMmM5N2ZjZmM1YjdmODRlIGxlZ2FjeS10cnVuaworMzE5MDMgNjFiMGZmOThkOTVkZDM4MWUxY2Q3M2RhOWYzMDQ5MmJjNGQ2ZTY4NyBsZWdhY3ktdHJ1bmsKKzMxOTA0IDE0MzkxNTc3NmNiYzJmZjMxNzYyZTNhNTc5MjRhMDEzMjVmNTQ3OWUgbGVnYWN5LXRydW5rCiszMTkwNSBmNWM5N2I2NWY5ZTg1Njg1NzljYjkzMjU5Yjc0NDE3YWUxNzhjNDVkIGxlZ2FjeS10cnVuaworMzE5MDYgMWZjMWEzMDVlMzk5OWE0NDEwODMwY2Q0N2UyMDVhNmNiNDkxYjM0YiBsZWdhY3ktdHJ1bmsKKzMxOTA3IGI3MzQwYjA5NTU1ZDMwYmU4YmQzNGRmNWVlZWU4MjBiNTA2Yjk0MjkgbGVnYWN5LXRydW5rCiszMTkwOCAzMDk2ODk5Zjc3NGZlYWM5MjgzYWE5YjY1OGMzZTM5N2YxYjExMWQ0IGxlZ2FjeS10cnVuaworMzE5MDkgZTM2ZmY0OTJjYmIxNjIzYzBkZDdjMTYzMDhiZDI3NTRkZjNhOGVjYiBsZWdhY3ktdHJ1bmsKKzMxOTEwIGQ1NzQyMTYyMzQ0OWI3YWIwOTJhOWVmMTBiYzI0YTliMzI3MTc1ZjEgbGVnYWN5LXRydW5rCiszMTkxMSA0NTA1NGJmNTkyZTVlMDNlZDYxNzEzZjViY2QyMzM2NGNhNTFlZTVlIGxlZ2FjeS10cnVuaworMzE5MTIgZGQ4M2E5YTUzZGJmYjkxZjg5NTM5MTUxZTg2ZTliYjI0NDI0MThmMSBsZWdhY3ktdHJ1bmsKKzMxOTEzIGQzNGJjYjNjYjIxNmVhOTY5NjkzYWZiN2M2ZTFjODhiMzVkZDlmM2UgbGVnYWN5LXRydW5rCiszMTkxNCBlZGRmNTlmNWNjNTg0MTQ3N2RlNjIyMmU4ZTcxYjQ1ZDJkYTBlNzAzIGxlZ2FjeS10cnVuaworMzE5MTUgM2ZmYmJiNGY0OGRhNjMzZjJlYTQzNzIzYWIyNWUxMzNmNTQ5MDgyMSBsZWdhY3ktdHJ1bmsKKzMxOTE2IDhkN2ZmZTRjYWFkOWFjYWM4NDFjNThlOGQyZDMxYWFkZDU0OWEyYTAgbGVnYWN5LXRydW5rCiszMTkxNyAzNGUyMmNkZmFhZDI0NjM4NTM4MDQ4MTc2ODEyM2E5MjgzODFhOWYxIGxlZ2FjeS10cnVuaworMzE5MTggYzdjZWI5NTYwZWIwZTFiYWExOTdmZWMwMGNiMjJmODk1OWEwMzgyNiBsZWdhY3ktdHJ1bmsKKzMxOTE5IDcyMjQ3ZWUyMjY1Mzc0Y2M1NWI5MGM4ODI1ZjkxOTBjYzZjYmRlNjYgbGVnYWN5LXRydW5rCiszMTkyMCA2ZmRkY2RkMTFmNDlmYWRjMGM3OGFlNDkwMmY1OGYxYTgwYmNiYjU3IGxlZ2FjeS10cnVuaworMzE5MjEgMzFhNTExZjc0YjI4MTZiMTBiY2I4MWY5M2QzYjI4MTY4YjRlNGVlMyBsZWdhY3ktdHJ1bmsKKzMxOTIyIGJhYjJiMjg2M2E2ZTA0YzAzOGY0MzNkZmI1MzA1MWZiNWNjNzE2NWYgbGVnYWN5LXRydW5rCiszMTkyMyA4ZTI0NzNhZDdjMGNiYWIzZjZjYjAwZDliZjYxM2FkN2IxNGZkNDYzIGxlZ2FjeS10cnVuaworMzE5MjQgYzk3YzEwNGMyZDI0OTZjOGIxZDE1ZDVjNzMzZjk2YmM4OTMwYzkxYiBsZWdhY3ktdHJ1bmsKKzMxOTI1IDlhYWM4NzBmMDNhMjk5MDJjMWY4M2JiMTVkODcwNjJkZmEwMGE3YWQgbGVnYWN5LXRydW5rCiszMTkyNiBkZTAxMzI3NjU4NGFlYmVlNDljNjcwYzc3YmQ0MDA1ZTVmNGFjNjUzIGxlZ2FjeS10cnVuaworMzE5MjcgZmY3OGMzYzNlYmM0NjZkMDI5MGY5MWFhOWE5NWQwNTYxMmI4YjhiNSBsZWdhY3ktdHJ1bmsKKzMxOTI4IGViNDgyNzhjMmUxMDI1Y2IwODY3MzViN2I2NmNkNDAyODE4OTcwYWQgbGVnYWN5LXRydW5rCiszMTkyOSA3Zjk4MWRkN2ZhOGQyZGNhNDVjOTk1NzM4M2ZkYmQ5YzAzMzMzODYxIGxlZ2FjeS10cnVuaworMzE5MzAgZmJhZTY0NTUxM2Q3NDczNGYxYmJiNTdiODI4MDU5ZDUzYjRhNGU4YiBsZWdhY3ktdHJ1bmsKKzMxOTMxIDc3MDg5MmQ3OGYyYmI3OTg2YTFlMjc1NzE0MzQzNzFhYTNmMDU2YzcgbGVnYWN5LXRydW5rCiszMTkzMyA0NTg1NGZjNzA3ZDY0OTk0MmI2ODEwMjBiMWFkNGZiZDQ4YjNjZDE0IHJlbGVhc2UyMi1tYWludAorMzE5MzQgMzA3NDhjMTVhNDgxYWY3NzE2MzFmZmMzYjQ1YTA3ODMxNTlmMGJmMCBsZWdhY3ktdHJ1bmsKKzMxOTM1IGUzMzNkNzY1ZjQxZWUxZjM5NWFhMzk5NzFiYWM0NDMwZDBhZDg4NDMgcmVsZWFzZTIyLW1haW50CiszMTkzNiBkODc3ZmZhNGY3ZjIyYWM1ZmU2ZWU0OWExNDU1YTM0MmM2NTAwNzI5IGxlZ2FjeS10cnVuaworMzE5MzcgY2U0YjkyOGM4MzQwYTEyMjhhYTkwNDc5NmU3ZDVkNTVjNThkN2FlZSBsZWdhY3ktdHJ1bmsKKzMxOTM4IDc5NWQ2MTQ0ZDJlZTRjZDg0MzAzOWY1NTBlN2IxMWJhN2UzMGI2OTUgbGVnYWN5LXRydW5rCiszMTkzOSA3ZGEyZWUzYTljNDNiM2I5ZjI0MzgyYWRjYzIyZDM0YjliNGE1OTVhIGxlZ2FjeS10cnVuaworMzE5NDAgY2E0M2FiYjA3NjM4Njg3OTMwZDdmMGY4MTQ1MGVlYzcyZGM2ZTg4OSBsZWdhY3ktdHJ1bmsKKzMxOTQxIGUwZWJmYTJmYjkzNjlkYmM4Yzc0NjQyMWYxZmFiMzM0MzZmMmY5ZjIgcmVsZWFzZTIyLW1haW50CiszMTk0MiBmNmJmNzgxNzMxZDQyNTY0ZGI4ZTZjZDczN2VmODNkOWVhMDUxYzU4IGxlZ2FjeS10cnVuaworMzE5NDMgZjk5Y2Y5YmZiYmFmNWJlZWZmM2M2MjlhNzFjMzg5ZDQxOTJlNjhhNSBsZWdhY3ktdHJ1bmsKKzMxOTQ0IGI4NzIyOTc0MDZhYTljOWZiODZlYzE2NGM2Y2ZkOGU3YjU3MzcxMjkgbGVnYWN5LXRydW5rCiszMTk0NSBiMjM0MzQyMTFkMDFkZDgwMGYyMWZkOTE2M2ViOWY2MTk3ZWRlOWQ3IGxlZ2FjeS10cnVuaworMzE5NDYgOTQ2MDFkOGZhNTFkYjY4ZDhiNDJmOWFiMjQ4NDVkNTdkZTBlNzdhMCBsZWdhY3ktdHJ1bmsKKzMxOTQ3IDk4M2U5MjkxYTdiNDYxZTJhZDY2YTQwNzU3NjEwZDhjY2ZjY2M0ZDcgbGVnYWN5LXRydW5rCiszMTk0OCBmODEyMzljMTJjNjBmODA2MjIzMTllNmFlNTg1OGU2YjE2ZWM1ZWU0IGxlZ2FjeS10cnVuaworMzE5NDkgNGVkZTU3YTQyYzYyMGIyZDFlMDBlNTRiZjYzMjlkMzUxOWM3MzI1NSBsZWdhY3ktdHJ1bmsKKzMxOTUwIDMzMzE5NDU4ZmU5OTViZWRiZTVmMjg2ZTc5MzkyYzkwNjY4NzJkNjkgbGVnYWN5LXRydW5rCiszMTk1MSAwNzYxN2QwOTA0YTYzZjM2MTdlYjE5YWI0ZWQ0YTViZWJmZjg3YjY5IGxlZ2FjeS10cnVuaworMzE5NTIgNWVlMjlmMTM2NGYzMzU3ODE1ZjI4YzI0YmExZDY4OWU1N2FjMDc5MiBsZWdhY3ktdHJ1bmsKKzMxOTUzIDE2YWE3MmE4YzI4MWVmMjBhNTFkYjdhOGNiM2YwNGQyOGMzMTdkNjEgbGVnYWN5LXRydW5rCiszMTk1NCBiYzkwNzZiMDE2OTQ5OGFhNTNiMzc0NDc2ZjA4NTU0Yzc0MGZjZWZmIHJlbGVhc2UyMi1tYWludAorMzE5NTUgMWUwZTY3OTQ3MTc1OGI1OWYwNjU3ZTRmNjVmNGFjYzVmYzI3Zjk4YyByZWxlYXNlMjItbWFpbnQKKzMxOTU2IGQ1NjI4MmMyOGExZWZjZGY1ZWNjZDAxMTkzNDU0MGExMDJkNDRkZGMgbGVnYWN5LXRydW5rCiszMTk1NyA0ZjAzOGQzYTg4NzhjYmY3NDk1YjcyNGE1MWRlYWJiMjU3NDA1MjI2IGxlZ2FjeS10cnVuaworMzE5NTggYTIxMTBjYjE2NWYxMTFiZmZlOTQ1YjQ0YzMxNzJmNTE3MDA3YzhmMCBsZWdhY3ktdHJ1bmsKKzMxOTU5IDY2NDIxMmE2ZTI4M2UyYTJiYjgxMzRhMTI1ZDViYzdiOWNmMzhkNTMgbGVnYWN5LXRydW5rCiszMTk2MCBlZTk0YTk4Y2YzOTZjMDQ0NWEzOGJhOTc2ZjZhYWU3MjA5YTRjNWZkIGxlZ2FjeS10cnVuaworMzE5NjEgYzZjMmYyNmRmNjViMDRlY2RkZjcxNzIyZmU3ZjU4ZTU2Y2ZlNjIxNSBsZWdhY3ktdHJ1bmsKKzMxOTYyIDVmNTM2NGFjNGFkYmM0N2MwZGM4MTQ5NGZkMmZhNmJkZmM1NTU0N2QgbGVnYWN5LXRydW5rCiszMTk2MyBmMDBjZDY5M2Q0ZTAyZDMyN2ExNmE0NzUwNmU1M2NjYmI1ZjQyYjY3IGFzdC1icmFuY2gKKzMxOTY0IGU1MzA0M2JkYjhmMjNhZDRkOTE4ZDhhZDMzOGVhYWUwYTEyNmI5OTggYXN0LWJyYW5jaAorMzE5NjUgY2I4ZDQyN2FmZDIxMTU3MmNkNmM4MTdjZmM0YWQwNWZkYzIzNjk3MiBhc3QtYnJhbmNoCiszMTk2NiBmYTM1YzhiNDViMjQ1NmQ1MzJhNGYwMGIxOTZiY2M0ZjA2NDhkODBjIGFzdC1icmFuY2gKKzMxOTY3IGQxZDYwYzJlMGFlOTkzYTZjMThhMDllNjE0ZDM3OTMyYzdhMjk3MWEgYXN0LWJyYW5jaAorMzE5NjggMzA1YzE3NTExYTg2OWM5NmU3MjNiMDk0ODE2YzhkNjM5ZTVkNTdkMCBhc3QtYnJhbmNoCiszMTk2OSA1NWQwZTk5OGJjNDZjNDc1MGViZTY4Yjg4N2U4NGJmNGQyOGIzYzJiIGFzdC1icmFuY2gKKzMxOTcwIDczNjVmMTMwZjE1ODNkYTZmYzRiNzk4MDE3MmNkODJkODY1MTM3N2EgYXN0LWJyYW5jaAorMzE5NzEgOTA3M2Y4ZmY3MjU2MmFjNzk3MWE4MzFlOTg4ZmQ0Y2UwMjRjNjNjNyBhc3QtYnJhbmNoCiszMTk3MiA2M2VkODUyOTA0MTMzNjA5ODg5ODBlZjMzNmY3YmIwNGVlMzgyMzQxIGxlZ2FjeS10cnVuaworMzE5NzMgNWVmNjEzMmYzY2FiYzlkZGUxYTgwYzIwNWY0NDcxZjRiNDBiYTUxYyBjYWNoZS1hdHRyLWJyYW5jaAorMzE5NzUgZWM4MDNjYzU3MTg1MTdlMjY1OThlNTNhZTBmMWE3YThlN2RlOTQzNyBhc3QtYnJhbmNoCiszMTk3NiA1YjE1MmFhYzgxM2Q3ZGIwYmUwZWZhNWY5MmNkNTQwYTUwZjZhZWQxIGFzdC1icmFuY2gKKzMxOTc3IDhmZmZhNmQxNTQ0YTg0MzVlNDAwYTE4Y2IzNTE5ZTkyMTEyYzg3ZGMgYXN0LWJyYW5jaAorMzE5NzggZGNkYzQ1MTc0MGZhYjRiOTU0MjI5OWQxYjI5ZmE3OTE5ZWZlMjgwMyBsZWdhY3ktdHJ1bmsKKzMxOTc5IGYzNjJjOWFlZGYxMzRhNWFhNDU2OTk2MjgyNThkOWQzNTUxNWEwNTAgYXN0LWJyYW5jaAorMzE5ODAgNzM2N2EzODRhNzQ1NTU4YTcwNzAwMjYxNjkwOTdhMGU4ZmE2MmVhZCBhc3QtYnJhbmNoCiszMTk4MSAxMWQ4MjdkOTM5MDQyOWI4YjE2NmY0Yjc5ZTQyZGNhMDY1NGRkNGU5IGFzdC1icmFuY2gKKzMxOTgyIDYzM2E0YmJkNzk3ZTE3ZWU4OWU2NDFjZmJhOGQ1MDI2Y2Y5NWI3YTMgYXN0LWJyYW5jaAorMzE5ODMgNzU2Zjk4N2MzNTkwMTNiOTY2MWMzN2IzMDk2OTEzNWQ3ZDViZGY1NCBhc3QtYnJhbmNoCiszMTk4NCAzNTBlYTI2ZTdmZDk1ZTllODEzYTJiNDllNmQ2YTc5NjQyNjczNDIxIGFzdC1icmFuY2gKKzMxOTg1IDIzMGNjYjllNTAwMGVhMzJhODhmNGMxODIzNmIyYmEyOGExYjRkZWIgYXN0LWJyYW5jaAorMzE5ODYgMDdmM2ZhNjM5ZDhlYzZkNWU2NGUzZDkxZTg0ZmM2NTI3ZDk4MWI3ZSBhc3QtYnJhbmNoCiszMTk4NyBiMDlkYjBiOTZhNzZiYzI4YmU2NWQwZWNkOGM0NWY3MmI3NGY4NzdkIGxlZ2FjeS10cnVuaworMzE5ODggMmRhMTRmYzllNzJiY2FjOGI4N2Q2Y2VkNmVhOTYwNDY4ZTQzMTY3OSBhc3QtYnJhbmNoCiszMTk4OSBjMjViYjkxM2EyMzYzYmY2OTcyZTI3ZWVhZDNjYzU5MjIxMWFkMWQyIGFzdC1icmFuY2gKKzMxOTkwIDhlNjdiZWY0MjlhNDA4ZGQwODlhYjk0M2JlMDBiZWNmMjA4MTk1YjEgYXN0LWJyYW5jaAorMzE5OTEgMjVhM2NjMzc2NTcyYTY3OTBiZmUzZTBlZDMxZjIyOTVmMDg3NzNlZCBhc3QtYnJhbmNoCiszMTk5MiA5MDlmYmUyNDNmOTAyNjY3Yzk0MzBiYWY1MTM4ZDg2NmQ0MjVmZjA2IGFzdC1icmFuY2gKKzMxOTkzIDZlYTIwYjg2YWM4ZGNmNjQ4YjdkOWM0MmNkYjNmZjhhMzk2MTI5MTAgYXN0LWJyYW5jaAorMzE5OTQgZjZhMTE5MjAxNDZlYjU4M2NhZmYxOTZiMTBjY2U1MzI5NDQ4MjU2MCBhc3QtYnJhbmNoCiszMTk5NSA0YmNkYTYzZTEwNTQxYzU3NjFjY2ZiNDkxNTFlMTdmMWFhZjlhOTRkIGNhY2hlLWF0dHItYnJhbmNoCiszMTk5NiBmODRlMWY0ZDQzOGViMDhlNzU3ZTBhM2RlZWIxN2NhMTY1ZGIxZGY1IGFzdC1icmFuY2gKKzMxOTk3IDQ0OTYyMDIxOTU5ZjI4ZDEyMzQ2NjNmZjczYTNlNmIxM2Y4YjAwNTQgYXN0LWJyYW5jaAorMzE5OTggNjNhYzNkNjNiOWZlN2FkYTk0MGNjNGY2MTgwZDg3YzQ4OWFhMWY1NiBhc3QtYnJhbmNoCiszMTk5OSAxM2U1NjdhZjk0ZDhhOWMyMzM3MjRjZDEyNzE2YmNkMGNiZDJkMjYxIGNhY2hlLWF0dHItYnJhbmNoCiszMjAwMCBiYzc2NTdhYzQ2YmJlN2VhZjhhOGE0MmZlNjI3ZjNkMWI1NjdkN2RjIGFzdC1icmFuY2gKKzMyMDAxIDQxYjFmMjJmY2IwMTc1NmUzMDFjNjA4NTcxYmNmZjAzYjczNDJiYjMgYXN0LWJyYW5jaAorMzIwMDIgMTQ1NjYyMTgwMGQ0NTk2NTU0YTBjNTI3MGFkZGI4NTAwMGQwODJmOSBhc3QtYnJhbmNoCiszMjAwMyA4ZThhOTExM2ZhMmQ4NWQyNzQwYTYwZWNkMWY5NmQ1MzhlNmY3ZGJhIGFzdC1icmFuY2gKKzMyMDA0IDM2NGJmZTc5NDc4ZjRjYjU2ZDc2ZWM1ZTI0YmRkMzZhNWE0NzRhMDQgY2FjaGUtYXR0ci1icmFuY2gKKzMyMDA1IGFmMTc2NDg4N2FhMjNjNTljZTBmOTBkZTYwZGMxMDhkYzhiNDkzYzUgYXN0LWJyYW5jaAorMzIwMDYgM2VmZDgzNGQwZmM1MmJmMWFlMTgwYzZhNzEwNTRiMjVjNzdjY2IwYyBjYWNoZS1hdHRyLWJyYW5jaAorMzIwMDcgNzMzNzI5MjYxYzQxYTIyNjYwNTQxMGFlMjNhMTVjN2Q5Yjc5MDA3MSBsZWdhY3ktdHJ1bmsKKzMyMDA4IGIwY2NjNWI1ZjdlMmYyZTg0ZjdhNDQ0NWFmZTQ5ZmJkNjBlZDdjYzggY2FjaGUtYXR0ci1icmFuY2gKKzMyMDA5IDYzMmE2Y2FlMGJlNmYxNjRjZTA4ZGI5ZmRiMWYyYzllODIzMWRhZmIgbGVnYWN5LXRydW5rCiszMjAxMCBhYzcyMWVkNjE5MTQ0ZmJjYmRjYjlmMWZkYjUxZmFmYzg2MGI2MzA2IGxlZ2FjeS10cnVuaworMzIwMTEgZTA2YzU0MGRjMmUyZjEzYWE3NWJiOWU3NzIwMmYxN2E3MmQ3MDc4OSBsZWdhY3ktdHJ1bmsKKzMyMDEyIGZlYTI5MjkyYjkzMWI2NzY5Nzc3YTczODNmY2MwZWYwYTEzMGM0MjAgbGVnYWN5LXRydW5rCiszMjAxMyBmM2Q0Y2MyOTk2ZDJjODYxODNiZjMwNTU4OTI3MzdjN2JmZGY2MzVkIGxlZ2FjeS10cnVuaworMzIwMTQgZjUyOWRlY2Q4MjFmZWZmNDhiNGJkMzcyN2IxODM2MDU0NzA3M2NlZiBsZWdhY3ktdHJ1bmsKKzMyMDE1IGVkM2M3MDA4ZjkwZThjNWU0NGYyNzFiOWJhNjIwOTk3ZjNkNmY1MmUgbGVnYWN5LXRydW5rCiszMjAxNiAwY2Y0ZTMyNDAzODA3ZTBjOWYwNjU3ODYwNWY1MTFjNDBhZDY4ZGQwIGxlZ2FjeS10cnVuaworMzIwMTcgNTQ5NmI4NjFjODlhYjkyNzY3MzE1MDVlYjY4YzFmMzA5M2EzMjgyZCBsZWdhY3ktdHJ1bmsKKzMyMDE4IDcwYmQ4ZDhjODc3YmMzZDMwNTIyNDIwZGE4OTc2MjdmNDM3NGMzN2MgbGVnYWN5LXRydW5rCiszMjAxOSAwYzgwMmVlYTU2MTU3OGE5MjhjNjU1MTUxMjFkNDI1MDA5OGFhOWQzIGFzdC1icmFuY2gKKzMyMDIwIGI2ZTYyY2JiZGYzZGVkMjhhNTNmMDQxYTM3ZGI2MjAwNzZmNTkwNzggYXN0LWJyYW5jaAorMzIwMjEgYjQ1MWE5ZTZkOTQwOTBmYWY0MDE2NTY5ZDU0ZDlkNTk2NWU3MzAzZSBhc3QtYnJhbmNoCiszMjAyMiAzMzkyOGE1MWYyZjExMmJmMzhiM2NmZDJjMjQ1NzYzNTZlMTFiYmU4IGFzdC1icmFuY2gKKzMyMDIzIDFhMmZkMTA5ZjZiNjk2MTk0NzExYzFlODQyOWM1MmExNDExZmQyNTEgbGVnYWN5LXRydW5rCiszMjAyNCBiNTc1NDZiMzNjYjEzNjdmMDU0NjMxYTE0ZDEzYTQyZjA5ODc5MDIxIGFzdC1icmFuY2gKKzMyMDI1IGVjNjIyMWU5Yjc5YWNjNDZmMmEyZmMzYjM3YzljYWRiZmNmZDI5MTEgbGVnYWN5LXRydW5rCiszMjAyNiBhOTM1MTI3MDM4NWFhMDRhMWMwMjY3YTJlYTMwOGRlY2I5M2U3MmIxIGxlZ2FjeS10cnVuaworMzIwMjcgMzBkMWM4NDhkMmIwMTY4NThmZjA4ZDI2ZTNhMTRjMmQwYzExZmYwNCBsZWdhY3ktdHJ1bmsKKzMyMDI4IGQ2NTUzZDA4MjdhYjk2OGM3OTA4ZDM1YjFkZDMxZWJmZWUyNTdhNDMgYXN0LWJyYW5jaAorMzIwMjkgODRiMTYzNTIzY2Q0ZGExY2Q4NzI5YTBhMjAyNDUzZTkwZGYwZDk4MCBhc3QtYnJhbmNoCiszMjAzMCAxNTJiYWY0ZTM1NTU1MWU3MWFiYzU0OTJhNTgwZDQ3OTI4MDA5OTJkIGxlZ2FjeS10cnVuaworMzIwMzEgNzIxZTllNGVlYzFlZjA4ZTExMjcwZGRlMDFhZTEyOTM4YTYxZjc4ZiBsZWdhY3ktdHJ1bmsKKzMyMDMyIGZhNzk1ZjRlNmRjNzc0YmQ2MzQ5Y2VlMWJkZmZjNTI3YTgyM2E2ZGEgYXN0LWJyYW5jaAorMzIwMzMgZTVjMDA4OTU1MzgxMTEyNmNkNTI0MzE0ZjA0N2NlZWZjZTMwMWFlOSBsZWdhY3ktdHJ1bmsKKzMyMDM0IGE4ZWM3M2QxM2QwMzNjNWFmZGFmMWZkYWVlNTA5MjdmNThlYmE4NGYgYXN0LWJyYW5jaAorMzIwMzUgYmI4NWJlODM3NmI4ZWJiOTA3Yzk2M2I5MzRkZDEyODk2OTlmNTMyZSBhc3QtYnJhbmNoCiszMjAzNiA4YWRlOTBhZjYxNGMzOGMyZGVlZDM4MDlkZjMyNDFlZmZlN2QwNWYzIGxlZ2FjeS10cnVuaworMzIwMzcgMmVkN2MxYzQ1N2I5M2ZmZjdiYjQ3OGFiNjEwMWJmMGZhODU0OTZjNCBsZWdhY3ktdHJ1bmsKKzMyMDM4IDZjNjQ2MTZkMTdlZGJjOWJmNjc2M2NhMjFjYTI3ZWY0OTBiY2NjZmIgbGVnYWN5LXRydW5rCiszMjAzOSA5ZDNhMjVlOTkwNzViMDMzMTRhNTJjOTk3ZmZjYzU5ZDVjYmRlNTFmIGxlZ2FjeS10cnVuaworMzIwNDAgMWIxZDk5ZGRhMmExZDY0MWFkMWZlYWQ1MmI4M2QwYzYxMTUxN2QxOCByZWxlYXNlMjItbWFpbnQKKzMyMDQxIDQ0NTljZGNiZjUzODQyN2ViYmE1OTBlMmE2YmI3MmE1OWU5OTdhZWYgbGVnYWN5LXRydW5rCiszMjA0MiBjYjMzMmQ0NDkxNzE2ZTIzODcwNmZiMGIzYzJmZTcxNWRkMWQ3MDVlIGxlZ2FjeS10cnVuaworMzIwNDMgY2Q1NTg4NzYyNGIzMjVmOTFlNGQzYWU1NjJjNGY5NDNjNjE4YmM0MyBsZWdhY3ktdHJ1bmsKKzMyMDQ0IDIxMTQzNDg2Y2U0MGIzNzc3NzY4NGI5MTAwMTBmNzQzMDEyYWE5YzggbGVnYWN5LXRydW5rCiszMjA0NSAwNDE4MmU1YTYwYjExMjJjMjA3NjNmNDNiNjUyNzFlNWQ3NDg5NzFjIGxlZ2FjeS10cnVuaworMzIwNDYgMmUyMDY5MmRkMjg2ODEzNmZlOTUzMTQ0MTE2NTFjYTYzMGFjY2EzOCBsZWdhY3ktdHJ1bmsKKzMyMDQ3IGVlMWM3MDkwNTBiMjQ5NDYwNTdiMGJlZmRkMzk1YTdkMWViYzkxMGUgbGVnYWN5LXRydW5rCiszMjA0OCA2MzA0MDlmNDFjYzNmNTlhZmJlYTgzM2JlNjE4YjYyMDU4MWUyMDY1IHJlbGVhc2UyMi1tYWludAorMzIwNDkgODcxZGE3MDNlNGMwYTVjMjdjMWEyZGNmMTFiODRmOGIzNzliMjYwNiBsZWdhY3ktdHJ1bmsKKzMyMDUwIDVkZGJjOTc5YzY1NTk1MTgzMDhhNjM1YzM2NzA1NTFhOGRhNjk0ZDkgYXN0LWJyYW5jaAorMzIwNTEgZDcwMDFmYWRmZWZjMzc3NWViNDI1ZDg0YTAwYmRmMDllMTk1NjE2YiBsZWdhY3ktdHJ1bmsKKzMyMDUyIGQ5M2E4NDVjZTVjMDkwM2ZkZDFjMWYyZTE5YmUxMDJhMzFjNGE5YjMgbGVnYWN5LXRydW5rCiszMjA1MyA5MzRkYmViNDBiMzE3MTU3NWY3ZGExZDMxYWRhYmUyY2JjOGI2ZjdhIHJlbGVhc2UyMi1tYWludAorMzIwNTQgZjI1ODBjMmU3NGRkNzk2NjhlM2E3YjM5YWQ2MWMxZGQ3NGQ1MzkwNyBsZWdhY3ktdHJ1bmsKKzMyMDU1IDAwOTJiNjlmN2Y5OWFhNGFkYTRlZjAxMGM4YmYzOGUxMzYzYTExM2QgbGVnYWN5LXRydW5rCiszMjA1NiAxNjFiOGJkOGEyMjZmY2Y5ZGE1OGU5MGE4ZjNlYzU1MjQ4Nzk3Mjg2IGxlZ2FjeS10cnVuaworMzIwNTcgMjQwNTM3MWJlMzRjOTY2OGU1MjBlZjMwZGE1ZmMwYjgyOGMxYTdiNyBsZWdhY3ktdHJ1bmsKKzMyMDU4IDNmYzU3NjQyNzNkOTZmMGFhMzhmNDQxZWEzNzc1NzVjMjZmNTczYmUgbGVnYWN5LXRydW5rCiszMjA1OSA1MDBmNTQ1YTI0ZjA3ZjdmMTcyYjY0YmIzZDNmMDA0ZDc3YWVkZTgyIGxlZ2FjeS10cnVuaworMzIwNjAgZjBhZDhmYTg4ZDdjY2VmMmQ0NGMzMDZiNGY5MWE2MzQwY2M2ZTY2OSBsZWdhY3ktdHJ1bmsKKzMyMDYxIDBhM2NlMzA2YjExYTVkNGE5ZjgxYzdmY2JkNDAyYTlkNmJhYTQxZGMgbGVnYWN5LXRydW5rCiszMjA2MiAxNTdjODcyZTY4OTJiOWIzZDZlNTY1ZjBmOWQ2MmNlMTk2MDRjYTE5IGxlZ2FjeS10cnVuaworMzIwNjMgMzdlYjg5MjlmMGNiNDAzMGYyYTIyYzg1ZTZiYTU1ODA2OTVlNWQxMyBsZWdhY3ktdHJ1bmsKKzMyMDY0IDU2ZDliYmJhZTZmODEwY2UwMTE5OTgwOTI2NjliODBjMGQxYzAwYTcgbGVnYWN5LXRydW5rCiszMjA2NSAwNTQ0MzQzMGQ3ZWQzZGQ0ZDZmYTZjMjMxMDUyMDYwY2M2YzM4NzE0IHJlbGVhc2UyMi1tYWludAorMzIwNjYgZGY5YjdjZWUxMzM5NTE2YmI4NTdmZWNiYjA2OWM5YTk0ZWIxNzVkNCBsZWdhY3ktdHJ1bmsKKzMyMDY3IGYzMDc4NjU0YTVjMDJmZGY4OWI1ZGE2MWE5OGY5ZThmNDAzZjNjYTggbGVnYWN5LXRydW5rCiszMjA2OCAyMzVkNTQzZTBiODQ5NzExMzVmNGUxMzk0ZmMwNzFlYzI2NDA0MjM1IHJlbGVhc2UyMi1tYWludAorMzIwNjkgN2EzZjcyOTgzYTdlZDU3N2VmYzJjMTA0ODc0ZTkyMzJlZmY3NmQ2OSBsZWdhY3ktdHJ1bmsKKzMyMDcwIDgwNDQ3M2NmNzEyMTU0NDA1MDRmMDFkMDhjYjAxODIzNDVhMTQ5MTEgcmVsZWFzZTIyLW1haW50CiszMjA3MSBkOGY5OGRjNmU3ZTA0YTE3ZWVkYzBiY2Q3ZTVlMTU3ZmNlYjkyZjA5IGxlZ2FjeS10cnVuaworMzIwNzIgMDc2Yzg2N2I5MTZlMjMwNmE0M2EyZjM0MTQxODg0ZTI1ZmFlZjk4NiBsZWdhY3ktdHJ1bmsKKzMyMDczIGRmNjViMDIxN2RkN2YwOGU2ODFlZDlmMjkzNjdiN2YwMDRkOTA4NzAgbGVnYWN5LXRydW5rCiszMjA3NSBhZjA1Zjg4Yjk2NDEzNTk2NWFlZjRjNDQ0ZWQ5YzBiYmQzMDMzYTdkIGxlZ2FjeS10cnVuaworMzIwNzYgYThkNjU3NmI5NWFmYWNiMWQxNTMyYTZlNDE1MTllOTAwY2JiMzBkYiByZWxlYXNlMjItbWFpbnQKKzMyMDc3IDljNjIwOTI1MzYxNWZmNDBiYWNlNDM5YTQ3OGQ0NmNkYWI4ZjcxZTkgYXN0LWJyYW5jaAorMzIwNzggNWZiZDg4MDFmYTI2MjVlYjJhODk0MjkyOTczOThhMzNkMmIzY2ZiMiBsZWdhY3ktdHJ1bmsKKzMyMDc5IDE1OTJlYTM2YTcwMjMyN2U1YjZiNjM1NmQyNTI2YmE5N2EzNjYxNzEgbGVnYWN5LXRydW5rCiszMjA4MCBhZDQyY2JlYTIyNThhNzcyMjk0YTVmYjgxY2Y5YmVlNmE4YjZiN2MwIGxlZ2FjeS10cnVuaworMzIwODEgYzdmMTBhOTAwZDYzMjg4ODNhOTJhZTVhZTg5NDc1ZjBjNjllNTYxYyBhc3QtYnJhbmNoCiszMjA4MiBiODcwOTVmYmIwNTE2OGQxY2UyZTE3MDYyOThhZDU2ZGUwYTVjZmQyIGxlZ2FjeS10cnVuaworMzIwODMgZmM4NDE1MzUxODBjOTg0YmNkODZlNTFiZDE4MGM1MmRlMjk3ZjJhMSBsZWdhY3ktdHJ1bmsKKzMyMDg0IDcxNDBhNjIzNmMzYTg4Yzk4MmE0MmIxZmY1ZTFmZTQ0MGQ2MWRlZTAgbGVnYWN5LXRydW5rCiszMjA4NSA3NTFkN2NlOWI0YjIzYTg0YzhkN2MxNGJmNGI4YWY5NjE2OTdjNGFhIGxlZ2FjeS10cnVuaworMzIwODYgYjY2YTJlNDFkYTNlZTk5MTVmZjVkZjY0NWI0YzczODE1NWNlYjE5ZSByZWxlYXNlMjItbWFpbnQKKzMyMDg3IDA0YzFiYTUxZWZkYmNiYmM5OWY1MzJiMjg4ZDQ5Y2Y4ZTdiYWNmMDkgbGVnYWN5LXRydW5rCiszMjA4OCA4NTJhYWU4NGM5ODEzNzNlMDJhYzRlZjVkODcwYmFiYjhiY2I3N2U2IGxlZ2FjeS10cnVuaworMzIwODkgMGY1NThlZWRlNmM1NzdhNThjYzEzOWI1YmNmZDNlMmZkZTE0ZmZiYyBsZWdhY3ktdHJ1bmsKKzMyMDkwIDUwNWU4YzBmYTkyZmUyY2EyYzJiNzY0ODc4YjI1ODJlMzA0ZjQ2NzcgbGVnYWN5LXRydW5rCiszMjA5MSBiYmI3NDhmNjgxNGQ2NDBhNjQ5ZGYzNTQ0MWFlM2FiZWIyMzE1ZWJkIGxlZ2FjeS10cnVuaworMzIwOTIgZjNhZGQ0MTY2MjhkYzc0MTQzNmZhNWNmNDc0MTllZDgwYTg1ZTA3YSByZWxlYXNlMjItbWFpbnQKKzMyMDkzIGIxZmJiODNlNTEzOTE0OWU5Yjc2NTk1MmFjNDU5NTVmZTVkODY3NDQgcmVsZWFzZTIyLW1haW50CiszMjA5NCA4ODAyZGUwZGE1MzM5MTE2MGZkM2UzNWQ3Yjk1MjM3NDIyNTE5MTJkIGxlZ2FjeS10cnVuaworMzIwOTUgZTEzYTdlMWZkYjllNWI3YzI4YzEyY2YyN2QyYmJlOTM5NTExOTYyYSBsZWdhY3ktdHJ1bmsKKzMyMDk2IDg2YTRjZWE3MDk3M2FiZWI0NzMyODYzNTU1YzQ0OGU0ZjQ0NjBlZDcgbGVnYWN5LXRydW5rCiszMjA5NyAxMmRhZDIwODFlMmU4MjNmZTkyMTk1NjQ0NWY4MWUwOTkzM2U3YmU3IGFzdC1icmFuY2gKKzMyMDk4IDRhZWJhY2M3ODY3YmIxZTBmYWFjZjIyMDMxYzhlODMwOGJiYWVkMDcgYXN0LWJyYW5jaAorMzIwOTkgZjExNTQ0NzNkYWM4YTcwZGY0MzVmYWZlYWY4NzA3Zjk3ZDQzZWQ0MyByZWxlYXNlMjItbWFpbnQKKzMyMTAwIGFmZDVjMmU0YjRhZjZkYzFlY2UwODIwNWM0YjYzMWIyN2RmODA2MTggcmVsZWFzZTIyLW1haW50CiszMjEwMSAyODdkYWE2YTdmNGYyMjBkZTgxMDhmOGY1NjA3NGUyZTM4MTJkNGEwIHJlbGVhc2UyMi1tYWludAorMzIxMDIgOGVmZTk0NDU0OTViMGI3NmQ0MDZhNWFhNWNlYzk0NWRjZGY3YjY2NCByZWxlYXNlMjItbWFpbnQKKzMyMTAzIDU1NTBmNWE5ZDcwY2E3NjIwMmVkMzA3NzJhZjBlM2Y1YjA1OWMxODcgbGVnYWN5LXRydW5rCiszMjEwNCBhOGU1ZWMwNzA0MzNmNWFjYTJiYmRlNzg5MWYzMzQ1ZjM1NWUxNzVhIGxlZ2FjeS10cnVuaworMzIxMDUgMzYyMjJkMzgyM2YxMjk4NjAzNDEwNjY1NjRjZmYxMWQ3ZDYzZjk1MiByZWxlYXNlMjItbWFpbnQKKzMyMTA2IDk3M2Y5ZDM1Y2YxZDBmMTUyNGQ3MzRlYjVkNzlhMjczYTVjMjAyZWQgbGVnYWN5LXRydW5rCiszMjEwNyBhYjJhNTQzZTg1NWJjOTg4ZWJiYjJjOTNiNTIzYjM2MzY5ZjkwNzQ3IGxlZ2FjeS10cnVuaworMzIxMDggZjM4Y2E5ZTFiNjgzYmY3YThiNmI4NGNiNWRjNTk5MjQ4NzYxN2MyOSBhc3QtYnJhbmNoCiszMjEwOSAwYzQzMzVmMTBjNjdhMmQzYTc4MzlmN2I0YjAyYjIyN2EyZWJlNmZmIGFzdC1icmFuY2gKKzMyMTEwIDQzMDhlOGE2YzQ4MGRlMDBiZTJmNjA4OTVkODMzMDI4ZGI4OGY2MGEgYXN0LWJyYW5jaAorMzIxMTEgZGM4OTBhNGMwNTI4MDU1ZWQzMWZiMDIzYjNjM2Q1MDUwZGNjYThlMCBsZWdhY3ktdHJ1bmsKKzMyMTEyIGI4NWEyMDU2MzFhNDVjMDM4YTVmZGEzMzJmOGViZDllN2E1Y2M5MDIgbGVnYWN5LXRydW5rCiszMjExMyBmMzExYjVkMjFlZjU2NGIxMGRiODVhM2RiNjhkODdlMGNkNTcwYWIxIGxlZ2FjeS10cnVuaworMzIxMTQgNGY4ZjE3YWYzNDg3YmFiMTRiMDBiNDZiOTc4N2JiYWMzYzRmM2Q1MiBhc3QtYnJhbmNoCiszMjExNSA3MzhlMzc4ZmEwY2MxNzE4YzEwZmFmMWM2OGRjNDhhODI2YzI3MWYzIGxlZ2FjeS10cnVuaworMzIxMTYgMzJiZWE0MWZlZjY4ZDA0OGEyNmNjYmFjYTU5NDk2YzNhYjVhYjg0YyBsZWdhY3ktdHJ1bmsKKzMyMTE3IGQ3ZDdhZjVmMzIzMWYwMTJkNThmNTNkNDcwYzRhNmJhZDZiZThiY2MgbGVnYWN5LXRydW5rCiszMjExOCA0OTIwMjhlNDcyNmYxNTc1NTAzYWU1YTNjNThlNzljMThhNDVjYmFhIGFzdC1icmFuY2gKKzMyMTE5IDgxYmNjMGY1N2Q1NzBmYmRmNWYwY2RiMjM2MDI3MTk5NTkzMzg5MmIgYXN0LWJyYW5jaAorMzIxMjAgY2ViN2JiNzkxMzUzMzY2MzAwNWZlM2Q2ZWRiNzk4YzRiZGRiN2ZkMyBhc3QtYnJhbmNoCiszMjEyMSBlZDIxZDhiMzdlMzNkNTVmNWY4ZWEzOTA1MjM0M2FlMTZmNjUzNDM1IGxlZ2FjeS10cnVuaworMzIxMjIgM2Q4YzEyMTRhMWM3OWJhNzgxNDBiM2Y3NGFkNDI4YTI1ZTY2ZGQ1MiBhc3QtYnJhbmNoCiszMjEyMyBlZDczZDY1ODcyNWFhNzhkYTZmY2VkZjNkMDBhN2Y5NjEwYmRjOTZiIGFzdC1icmFuY2gKKzMyMTI0IDQwZDk2NTliNTZjOTQ2YzU3MTUxZWQ1YjIwZmEyY2ViMGI0NDMyNWEgbGVnYWN5LXRydW5rCiszMjEyNSAzZTM5OWE4NjE4ZGIzNWI0N2JkNTFiODJhYmMyN2QxMjQ0OGNkMjBkIGxlZ2FjeS10cnVuaworMzIxMjYgNDJkZmEwODkxYjMzMjY2MTE3MDhkMjczNTk1NmNhZTkwZTM4NTY2OCByZWxlYXNlMjItbWFpbnQKKzMyMTI3IGNiYTBhZWVlMGQ2NTE1MzFiOWFhNTU1ZjRjOGIwM2EwOTM4NDUzNTYgbGVnYWN5LXRydW5rCiszMjEyOCAwMGE1NmZiZWE2OWZiMGE3MGFiNzBlNjE0ZDQ0MDQ4Mzg2MjIyMWM0IHJlbGVhc2UyMi1tYWludAorMzIxMjkgMGZjZjlhZTI1Y2ZlYmU3M2MxMGI4MTIxMGU4OTI4ZTljMzE0YzVkZSByZWxlYXNlMjItbWFpbnQKKzMyMTMwIDRiNmUyMGYwYmE0Y2RhNTM5YzYzYzkwMDE4ZWZmZjc3MmJhNmQ4OGMgcmVsZWFzZTIyLW1haW50CiszMjEzMSBjYjVkYjU1NjFjZGNhOWQzNGQyYjA2NjQ2Mjc1YjA2YTNjZDhlOGU0IGxlZ2FjeS10cnVuaworMzIxMzIgODQ5ZGZlYTE4MmNhMzc3MzM5ZGRiZWM0ZDliMTQ0NmI0NjAzNWU1MCBsZWdhY3ktdHJ1bmsKKzMyMTMzIDExN2FjZTg1MjFhMWQyOTY3YWQxZTM2YzIxYWM5ODlhYTZkNzExNTggbGVnYWN5LXRydW5rCiszMjEzNCBhMDUwM2JkYjBjMjQyY2Q4OGRmM2YyNmU2N2IwMzYwMGVlZDFmNzYzIGxlZ2FjeS10cnVuaworMzIxMzUgODIzM2EwMjk0YzQxZTNkZTAwNTc0NGMwZGRhMTYxMDhmOWMxMDY4MiBsZWdhY3ktdHJ1bmsKKzMyMTM2IDM3NWZkYjgyYTNjYWUzMjhhNTgyNzI3ZjQ4M2RlZmJkMzJhN2JlNTEgbGVnYWN5LXRydW5rCiszMjEzNyAwZGUwZGVkMTk5NjhlYzQ3MjIxODdmNmQ5NzJjY2FjMDY2NWEyNDMxIGxlZ2FjeS10cnVuaworMzIxMzggYWNmMzU5NmZjYzI4ZDUwNGZmYjgxNTdhMTdlYzA0ODM2NjA0MTE5MiBsZWdhY3ktdHJ1bmsKKzMyMTM5IDE3NGNlNGNkZWM0NzI2ZDkxMTg0YzdjN2ZkODljNDMwMGU0MzY4NDMgbGVnYWN5LXRydW5rCiszMjE0MCA5MGM3N2I4YWYxYTQ5NzQ0NjBmMjZmYjJiMzdkNzVkY2NkNTRhYmIyIGxlZ2FjeS10cnVuaworMzIxNDEgOTQwMDUwNGNiMGIyNjFlMDMzZWRkZjI4OGMyNjE5MmNmZGQ1MWMzMSBsZWdhY3ktdHJ1bmsKKzMyMTQyIDRjNTk2ZGQ2MGMyMmQzMGQ0ZGViZjg2NzRlMTQ0YTkzNGI0ZGEzODggbGVnYWN5LXRydW5rCiszMjE0MyA3OGY4NDZmYjU3MGEwNjMyYTc2ZTdiZTI4ZDUwMjliY2ZiMzk4NDNlIGxlZ2FjeS10cnVuaworMzIxNDQgMzY4YmViZTMyNzQzMzkwMWM2NjdlZmVmMWI1ODU1OTM3MWM2NzcyMCBsZWdhY3ktdHJ1bmsKKzMyMTQ1IDI1ZTc0Njc4NzFjNTg3MmI5YjcxY2Y4NDdjOWMzNTJiNTY1NWEzZDggbGVnYWN5LXRydW5rCiszMjE0NiAyYTMwOTVhNDE1YjEwYmExMDM1NzM0ODFhNzFhNGIwNDM3MjYzMmZmIGxlZ2FjeS10cnVuaworMzIxNDcgNjY1M2E1NjAwMmVmOWQ4MzE2ZGI4YTNmYTRkNjA0OTAxNDliZDBhMyBsZWdhY3ktdHJ1bmsKKzMyMTQ4IDk2NGJkOTdhYzFmNWJkM2Q5NTM3ZWIwNDM5NjA0MTg5MjQyM2Q3ZDYgbGVnYWN5LXRydW5rCiszMjE0OSA0ODdkZjI5NGQzMjgxMGM4ZWFmMTUwZjJmNWY3N2JmZWRkMjIwNjZjIGxlZ2FjeS10cnVuaworMzIxNTAgYzAxZmRjM2E5MTgwNDJkOTQxZWQ1ZWM3MGQ2ZWI0N2ZiODdkYTQ2MSBsZWdhY3ktdHJ1bmsKKzMyMTUxIDRmZjYxMWIxNjQ4NDkzM2YwMjM0ZmQwOGM2MWY5YTI3YzE0OWQ3MGQgbGVnYWN5LXRydW5rCiszMjE1MiA5MmQwMWYxMDJjYTA5OTNlYjE0NGI1YjdjMzY3NzAxNGM4ZDNjMTNjIHJlbGVhc2UyMi1tYWludAorMzIxNTMgYjViM2U2ZjNmMzE3ZWQ4ZDQzOTZhNzdhNDUxOGFkMWMxZjJjZTNlZiBsZWdhY3ktdHJ1bmsKKzMyMTU0IDViNTQ2MmFlMzE0ZGRkMzU3M2UyNzRiMmNkZWVhMDA5ODMwNmU2ZTQgbGVnYWN5LXRydW5rCiszMjE1NSA1ZmE4MzQ0ZDZlNmYwMWQ1MmFjMDk0NjJmZjlhOTZlODMyMjc0ZjM2IHJlbGVhc2UyMi1tYWludAorMzIxNTYgOGJmMDg0YzRhZDlmNzRiOGEzNTEwNDIyZWY1M2Y3YmRjNmYyY2ZhNSByZWxlYXNlMjItbWFpbnQKKzMyMTU3IGJhNzE2MjI0OTc0ZTk3NjlmODdjMjk2YjIyMzAzYjIwNDQ3MDllZmYgcmVsZWFzZTIyLW1haW50CiszMjE1OCAxNjM5ZjYzNWQ5ODNiOWZjNDcwYTc3MzQ5ZWY4OTQ5ZTBmNzYyMzA5IGxlZ2FjeS10cnVuaworMzIxNTkgODc4MzY2YjBlOTdhYzcxNWEyYWMzNTA4YjVlODI3NWQ2NzhjMmIyZSBsZWdhY3ktdHJ1bmsKKzMyMTYwIGYyMTNlZTZjZTU1ZWU4ZmEzYzE0YjY1OTBlZmU4NmU1ODIyOGY5MmUgbGVnYWN5LXRydW5rCiszMjE2MSBiOTA2NGVhMDU5M2VhMWQ3MzQ3MmJmNjZmZGFjMTA5ZGQ4NDlhMGYyIGxlZ2FjeS10cnVuaworMzIxNjIgYWUwYWViMGQ2MzFiYzVjNWNhM2YwZmUzNTIxM2M1MjliMzY3YzUwOCBsZWdhY3ktdHJ1bmsKKzMyMTYzIDQ2OWZiNmNlOTY5MzUxZmIzMDc2ZmY4M2E4NTkwYmYxYjg5NzM5MjMgcmVsZWFzZTIyLW1haW50CiszMjE2NCBjN2JiMjU0YWI4OTBlMWI5NTI0Y2U0Yjc1Yzk4YmZjOGE1NWM0ZDU3IGxlZ2FjeS10cnVuaworMzIxNjUgNzExMDNkZjlkNjRiMDdkYzNjMTA3NWMxOTliNTk2NmE0MTdmYmJiMyBsZWdhY3ktdHJ1bmsKKzMyMTY2IGJiZWQ3ZTEyYjg0MjJjMDkxZWVlMjE3NDk1N2EzNmYzM2U3ZDBhMWQgbGVnYWN5LXRydW5rCiszMjE2NyA4OTg0ZGYyZGMyN2IyNzBkOGMyOTAzMzE1NzMwODVlMjlhZGZjYTgyIGxlZ2FjeS10cnVuaworMzIxNjggYjYxYTllMjFhNjZkY2E1OWZlMThhY2RmZTg4OTJmMDZlY2MwZDBkNSBsZWdhY3ktdHJ1bmsKKzMyMTY5IDM0NDgzNzY5MDc4YjMzMzcwYWRmZGY3ODIwZGI3M2ZlMTc2NDJiZTYgbGVnYWN5LXRydW5rCiszMjE3MCBlOTMwYmViZWM4YzBmNWRkM2M0MGY5MGNmM2IzNWM5NjFiNDA3OTEzIGxlZ2FjeS10cnVuaworMzIxNzEgZWU4ODUzY2M4Y2ExZjY5YTg5NzM4NmE5Y2ZiNjFjMThlZjQ2YTc3YyBsZWdhY3ktdHJ1bmsKKzMyMTcyIDAxN2QyZTNlYTJhZTRiYTZkZDQyNzVmNTI1NTI2ZWJlOTEyNWE2MjcgbGVnYWN5LXRydW5rCiszMjE3MyBmZDQzNGJlYjVmNTYwNzliMzQ5ZDMyMmY3YzkwNzYzZjNmMDJjNmU0IGxlZ2FjeS10cnVuaworMzIxNzQgNmFhMWMwODI2YTM5YmU2ODM0NDI5OWYxZGQwN2ZjZmU2MjUyNTQwZiBsZWdhY3ktdHJ1bmsKKzMyMTc1IGQxMGRiYjk0YzllZTFiZmY5YzE0ZTZjNWYwODc4MTU3MzEyZjY1OTQgbGVnYWN5LXRydW5rCiszMjE3NiAyZDRjMWU0ZTViMzZiNTQ0OTkyMTY2NTZiNjVmNzMzMDJiYTkyNDI1IHJlbGVhc2UyMi1tYWludAorMzIxNzcgZGI0Nzk5Y2EyMDIxYmNmNTVkOTI3YWZlMzQ4MjM0MjNkNDdiOGRkNiBsZWdhY3ktdHJ1bmsKKzMyMTc4IDlhY2RjNmM0NDE2YWM1MjI4ODI1NzhlZjg0ZjIzYjEwZWRlNTY1YTAgbGVnYWN5LXRydW5rCiszMjE3OSBiMzdiMjk4MjA4NmJjMzMzMTE4OTYyMjEzYWExNjYxMzhkZDBiMDQzIGxlZ2FjeS10cnVuaworMzIxODAgNjJlODgzZTJkNTE3MTFmMDA4ZjEzOTgzZTBlMTQ5YmM5MjhmOWNmZiBsZWdhY3ktdHJ1bmsKKzMyMTgxIGU2YmYwOGRhZGQ1YzIxNzYwNWVlOWRmY2IxNDEzZmUxMWIwOWZlM2YgcmVsZWFzZTIyLW1haW50CiszMjE4MiBiNDQ4N2EzYjVmMWExZDFiZjM0NDIwZjlhZGQzNGFjZjVlZjk3NzU4IHJlbGVhc2UyMi1tYWludAorMzIxODMgNzgzOTVlNWI0NzgyY2MzNDkyODg0ZmMzZTljNTVkMDk3NzVkZjFiMyBsZWdhY3ktdHJ1bmsKKzMyMTg0IGJhMmQ4OTIxYThkYTAxOWI4ZjIwMzIyNzIyZmI2ZWY0NmY1Y2E4MzEgbGVnYWN5LXRydW5rCiszMjE4NSA4NGFjYmEyMjc5NTQyNGNmZGU1YzE0MzgzZDMyMDkzNTg0YmVlODNlIGxlZ2FjeS10cnVuaworMzIxODYgYWZmMDgwZjJlZmI0ODY4YmY4YWE2NzYzZjY0OTdiZGYzZDMyZjZmYSBsZWdhY3ktdHJ1bmsKKzMyMTg3IGU5MmMyNWQ0MjhiODdmMDIyYmRkYzFiYTBkMzE3ODhlZDY0ZDU0ZTIgbGVnYWN5LXRydW5rCiszMjE4OCAyMWY3Y2ZmMTc5MGZkYzhkNTllNTFjN2MzYjhhNzllN2UxYWIwYTYwIGxlZ2FjeS10cnVuaworMzIxODkgY2Q1MDExMjE3MTViMDY4YTM1OGMyYzA1MmYxMTdjOWFhOTA2NGY1MyBsZWdhY3ktdHJ1bmsKKzMyMTkwIDdhNjI4MTQ5M2QyYzY3MTA0N2MxZGZkNTU4NTBiNGJjNzA5NDBjMTAgbGVnYWN5LXRydW5rCiszMjE5MSBmMjFjZDA3OWQxMDgzNWY0MTQxNDNjZGU0MWY4OTVhMTA1MGFkYjhiIGxlZ2FjeS10cnVuaworMzIxOTIgNmU3ZWZkNmMyNTEwYTJiMmQxY2QxYjVmYjdiMGVhMzA2NWMxYzg4ZSBsZWdhY3ktdHJ1bmsKKzMyMTkzIDlkZGM0OThiNzAxM2I4NmU3MWI4OGFiNjAwMzkyZmI5NTE4ODAzZDUgbGVnYWN5LXRydW5rCiszMjE5NCBiYzg5MjNmZGQ4M2I1ODhmYmFjZGY1NGQyYTgzYzkyYjljZTdiNWIxIGxlZ2FjeS10cnVuaworMzIxOTUgZDA4ZDdiNGJlNTMyMDEzMjEyZmZiYjAwYTVlNzk5ZGMwYmRkZjU1YSBsZWdhY3ktdHJ1bmsKKzMyMTk2IDc1MTEzNzU5MjUyYzc4OGMxNjI3NzI5ZjczNTZjNThhM2UyNDc4ZjUgbGVnYWN5LXRydW5rCiszMjE5NyBiZmM3YTlmYTM0ZDZkYjIzNGU4OTE4MjMxMDljYjQxNzA1ZGQxMTk5IGxlZ2FjeS10cnVuaworMzIxOTggNWZiZGNhZWY5ZGRhYTIzMjVhNzQ1NGU1OTM0NmVmYjJjMjEyMjI0OSBsZWdhY3ktdHJ1bmsKKzMyMTk5IGZhZWI3MDhiYWNjNDIxNjY3ZjYwYTNhNGY2NzA1Y2I5MTEyMDcyNzIgcmVsZWFzZTIyLW1haW50CiszMjIwMCBkYTc0YmRkOTM0NDFiZDQwMjQ2YjljZDk2MTY0YmQ5NDE0YjZlYTQ2IGxlZ2FjeS10cnVuaworMzIyMDEgYmUyZWNhZmIxNWFkMGVhMDI2ZmE5NmJjMjFhY2Y1YzFkNTMzZDYxOSBsZWdhY3ktdHJ1bmsKKzMyMjAyIDIxNWYxZjQ4NTFhNDYzOWFlY2Y2NDIxOTdlNzNkZmNlYWY3N2UyNDIgbGVnYWN5LXRydW5rCiszMjIwMyAxYmQ1MGMyODIwM2ZjZjI3ZTMwZGJjNWQzZTAzYTg1MzliNTJiNDc3IGxlZ2FjeS10cnVuaworMzIyMDQgZjMwMWVhZWRkZTg1OGJkYTdkMDAyYzg4ZmU1NjljZmRlYjJkODEzMCBsZWdhY3ktdHJ1bmsKKzMyMjA1IDhiNDk0NDVjMGEwZTAzOTBiZjA1YmIxMzY5OTQxNGQ5YzFhZDYwNjkgbGVnYWN5LXRydW5rCiszMjIwNiA5ODEwMzJlNjQ3MzYyZjA4MWE4OTFkOTExY2E0NzQ4NmJjMTkzY2JhIGxlZ2FjeS10cnVuaworMzIyMDcgYTVjNWRhNTQ2YzI5MjhjN2RmMTU4NjgyMzljYTBkMWVkMTJjNjcxMSBsZWdhY3ktdHJ1bmsKKzMyMjA4IGMyYWQ2MmY0ZWE5YjMwYjVhZTAzZTdhMzFjNWEwOGM4YjBjMGJjYTIgcmVsZWFzZTIyLW1haW50CiszMjIwOSAwM2JiMGM0MDhkNTczMThjYTViZThlOWY5NTJmYzkxNWUzMWE0MjcyIGxlZ2FjeS10cnVuaworMzIyMTAgYTBjMDAyMDUwNTI2NWE4ZTM4OTdkZDYyNDRjNjJkOWRiNWYxYTFhOSBsZWdhY3ktdHJ1bmsKKzMyMjExIGMzNmJkMWM4MzZiOGM4MGNkZjZkODc5OTlhYjIwMDRiYmY2NjRjZTYgbGVnYWN5LXRydW5rCiszMjIxMiAwZDI2OGM2ZWYwMGFjZGU2YTAxODBmMGQ4ZmU2YjMyNDEzMzNiNWVjIGxlZ2FjeS10cnVuaworMzIyMTMgOTRhOTg2NWFhMWM2NDQxOWMzYmI0OWM4M2JkMGExNTNiZWM4NWUwNSBsZWdhY3ktdHJ1bmsKKzMyMjE0IDhjOTMwNzViOWNiNTUxMGJhOTNhOTE4MzIzZTA1Y2Y0MWQ4MzgzYWEgbGVnYWN5LXRydW5rCiszMjIxNSAwMmM4N2YzNDhlZGIyMmY4ZTVjMTIzZjQ4ZTJmOWNiODFiMzNlODFhIGxlZ2FjeS10cnVuaworMzIyMTYgYTU3ZWU3YjJhODc5ZGUwMmJiNTU3ZWQ4ZGQ1Y2EyYTM0MzFiYzg1YyBsZWdhY3ktdHJ1bmsKKzMyMjE3IDk1YjZkZDA0ZGE4ZmRjMWQ4ZGFkODY1NzYzNmM2YTdiZDJjMjEwYmIgbGVnYWN5LXRydW5rCiszMjIxOCA4ODNhNjk0Nzk1ZjU3MDNjYjQxZWNmYjVjYTkyZjYwMGJiZWRjMjc4IGxlZ2FjeS10cnVuaworMzIyMTkgZWYwNWY5ODFiYzRiOGRhYjFiYmQ4OWJhYTUxY2Y0NTI2ZWE4OGM1ZCBsZWdhY3ktdHJ1bmsKKzMyMjIwIDZmMTNhZGRlMWI1MWJiNDkyOTQ2YWFlMGRhMjZjYzIzNGYzMzcwYTcgbGVnYWN5LXRydW5rCiszMjIyMSBkZTUwOTM0ZTExNDViZjZkOTBiNjU5NTlmNmNlMTg2ZjJlMDUyOTBkIGxlZ2FjeS10cnVuaworMzIyMjIgMjJhZmRlMjZiM2QxNjZhYzBmMjZhNmE0NTlmZmZjNmYyZjNlMmZjMSBsZWdhY3ktdHJ1bmsKKzMyMjIzIDlmZWRlNzAwM2M2NWY2ZjZlMWIxOTU3ODU4Njk0NzJlZWI5ODc0MDkgbGVnYWN5LXRydW5rCiszMjIyNCBkMmQyMzJlMjQyN2JmNzRlZWZmZGM1NGIyYzdmMWNlYzkzYmFlOTNhIGxlZ2FjeS10cnVuaworMzIyMjUgM2NmMjZiOWY5NmY3ZTY0NjQwODcyMGIzYWRkNWMwZGQzM2FhZDZjYyBsZWdhY3ktdHJ1bmsKKzMyMjI2IDExNjYwZjQzNjFmOGEzNjg5NzU5YWNhYTU2MDFjZmY4Y2MwNDM2ZjkgbGVnYWN5LXRydW5rCiszMjIyNyAxYWVhZDBjODQ1MDc3ZTA4MDc1NDcyMmFmMjkwMjg3Y2Q3MjIzZmQzIGxlZ2FjeS10cnVuaworMzIyMjggNThkYjVmYmQ5YzI4MmE0OTc1ZDc0NWFlYTBmNzA2ZTc4YjY2OTBjNyBsZWdhY3ktdHJ1bmsKKzMyMjI5IDIwZWU2OGNiMGJjNDdjNjczZDBlOTkyZjI0N2I0NTc4ODIwNzQ2YTAgbGVnYWN5LXRydW5rCiszMjIzMCA3ZmUzM2MxNTQxZGZmYWY4MWE5M2Y5ZjI2ZDEwYjcxZWEyZmEwMjJmIGxlZ2FjeS10cnVuaworMzIyMzEgZWVlNDk2OWFkYmFlMGQxNjQyZmExYTJjNDQ2YzUwNzNlZDZiNzZmZCBsZWdhY3ktdHJ1bmsKKzMyMjMyIDk0NDE2OTRhNzBjN2VkMzk4MzY2MDc2NDJkZjQzM2NhMmRhZTQ3NGYgbGVnYWN5LXRydW5rCiszMjIzMyA0MzZkODEyZjJiOTRiN2RhYjdhYWQyYzk3MDUzMTdkMWVhYmVmY2UzIGxlZ2FjeS10cnVuaworMzIyMzQgZjNiMjRhMmY2ZjRkYTg2YTkyNzBlOWFhNGI1MTRhMzU2MTAyMmY1MyBsZWdhY3ktdHJ1bmsKKzMyMjM1IDgzMjIwNzdkMjM0Y2ZhYjgwYWU5ODZjMzY2MTAzNTE2Mzk3YzM0OGUgbGVnYWN5LXRydW5rCiszMjIzNiA2OTUyMzczZThmZTVjODcyZTYzNzkxNDgwMjYyMjk4ZWMyMzhiNWZhIGxlZ2FjeS10cnVuaworMzIyMzcgNjdkMzZmNGRmZWExMjRhZTg1YzBjMTBkMjhiODMzODMzYWI3MmIyZCBsZWdhY3ktdHJ1bmsKKzMyMjM4IGM3MWI5YmExZjA0YzE0ODI5ZmE5NjU0ZDlkZDUzZDBiYjM3OWQxZWIgbGVnYWN5LXRydW5rCiszMjIzOSAwNzkyY2FhNjM3MWM5ZDFkMjVkMDRiYjBjNzU3NTgxNjI0M2NjZmVlIGxlZ2FjeS10cnVuaworMzIyNDAgYjE2NzE1NTBjN2UxZGM3ODI4MTcyYmIwYjQ2MmE2OTFjNzY3OGViMSBsZWdhY3ktdHJ1bmsKKzMyMjQxIDRjNjU4NTI1M2U2ZjEzMjRkMjEzYWY0YjlmYTQ2ZDFmODQ5ZTE0YzAgbGVnYWN5LXRydW5rCiszMjI0MiBiNGI4ZmUyYTYzMmMzYmNiNDUyYmMwNDBkYThkMjM4Y2E4NzM4YTllIGxlZ2FjeS10cnVuaworMzIyNDMgNGYwYjdhY2ZmYzdkNGM0YzdlYjQyZDNjMGIwOGNjYTI5ZjU3YjU5YSBsZWdhY3ktdHJ1bmsKKzMyMjQ0IGQ1MzU3YWFkZTRiNzMwNjQ3MGNhZjg0ZmEwZjFlYjI5MmYwZGQyYWMgbGVnYWN5LXRydW5rCiszMjI0NSA5ZmRmYTczNjU3OGQ3MzZkNzA4YTQ3NGU1M2M2NWRjOGYwN2FlNTk0IGxlZ2FjeS10cnVuaworMzIyNDYgZWI1NTE4OGYxNjNhY2VlN2EzYzlhZTc5MTJlOTMzMGUyNjQyZGQzNyBsZWdhY3ktdHJ1bmsKKzMyMjQ3IGRkZDkwNmVmZmQ5YzNiNjVkMGUxM2M5ZDg1NWZjNTM2M2MxM2NlMmIgbGVnYWN5LXRydW5rCiszMjI0OCA4MjRkYzI4ZjkyMmQyOTljMTc2YmI3MzY5MjcyNjQzMjNmZDc1ZWU4IGxlZ2FjeS10cnVuaworMzIyNDkgNmMwMDA0NjkwOTQxOGI3MjFiY2FkNDExZjk4YjkxZTdhNGUyYzYxMCBsZWdhY3ktdHJ1bmsKKzMyMjUwIDgxZTViZjYyM2VjZjc1OGJjMjVjNjJjYmIxZWJkNGVjMTIwZGVkOTIgbGVnYWN5LXRydW5rCiszMjI1MSBlODBmMThhNDljYzlhYzhlMzExZjQxZDhkNjA3MTMxNGZiMDQ3OTllIGxlZ2FjeS10cnVuaworMzIyNTIgMDdkOGUwZWFiM2FmNDlkNThlMzIwMmI5ZTgyNjk0ZTE5OTg1YmUwYyBsZWdhY3ktdHJ1bmsKKzMyMjUzIDJjZmQ5MTZkZDMxMjQ5ZGYyZDQ1NThhZTNiOWJkM2U5M2JhZmNkMTMgbGVnYWN5LXRydW5rCiszMjI1NCAzYzM5MTk1ZGFiOWE0MGVmMzE5MDhmNjRkMGZlODRkZGUzOGFhM2IwIGxlZ2FjeS10cnVuaworMzIyNTUgM2Q5M2MzMDM5Yzg3MWNjZTkxOTc4ZmZjN2I0OGU2NzMxZGFkZDc3YiBsZWdhY3ktdHJ1bmsKKzMyMjU2IDhhYjc1MmRiNDc3NWQ1NTNmNzMxYWZkM2QwMzEyMDlkZGI3ZjgwNTEgbGVnYWN5LXRydW5rCiszMjI1NyBmYTgyZjg2ZWFhMDk5NDBhNjZjZTM5MzRiODU2NzU1NjRiM2Y1Nzk3IGxlZ2FjeS10cnVuaworMzIyNTggMzM5MmYzOGJkMTE0YjhlMTU5YTIxZTIwMmRmMDBjNGY0Y2VjMGViNCBsZWdhY3ktdHJ1bmsKKzMyMjU5IDk0N2MyOTM3YzA5ZTIyMTNlMTU1YjAzNWZkYjk0M2JhZjA5YTFkMmMgbGVnYWN5LXRydW5rCiszMjI2MCBhMjZiNmIyNzVmYjcyZDk4OTdjZTFjOTk3OWIyMTBlNmY1YmYxODVlIGxlZ2FjeS10cnVuaworMzIyNjEgMzZlOWJhNDA1NDkyNTlmM2VlMWU3NGUyZjQ1ODNkODY4YmNmZGU1MyBsZWdhY3ktdHJ1bmsKKzMyMjYyIGM2MjllZDhhOWRiYjNhODRjYzM1ZmU5YzNkYWIyN2E0ZmY1YzllZTIgcmVsZWFzZTIyLW1haW50CiszMjI2MyAxMWY3ZjExODA3MmI2NGZmMDFmZjIzNjI0MjkxNjllZGM0NWFlZWExIGxlZ2FjeS10cnVuaworMzIyNjQgYWNmYTBmZjhjNWE0MDE2YjU5ZWYwNTYxZDJiOWE0YzE2MWU3MmY0MSBsZWdhY3ktdHJ1bmsKKzMyMjY1IDliZTQxMDM4MDdmNWM3NDVmZjliMjUwNjRmYzZmMmY3NjhjNGQxYjkgbGVnYWN5LXRydW5rCiszMjI2NiBiZTBkNGVjNmJmNWE5YjgwZTkxY2E1M2ZiM2QyNzNhZmM2NmJjMDhmIGxlZ2FjeS10cnVuaworMzIyNjcgNDgyNGFhYjEyNTQ5YmIwYzM3Y2E4MDJhMzNlMWM3MDAxNzgwMWZlNiBsZWdhY3ktdHJ1bmsKKzMyMjY4IGE4ZTY0MGI0NzdmNjZkNWI2MTUyMmJkNzljOWM1ODA3MjBmNGE0MDQgbGVnYWN5LXRydW5rCiszMjI2OSBjZmVjZTE4MjJlOTQyMzcxZjdmOTliNGIyM2QyZjY2NjVlZDEyMzhhIGxlZ2FjeS10cnVuaworMzIyNzAgY2EyNDgyMDEyYjNjNjAwZjg2NWQzYWY5Zjg5NDE4ZWRlYjhmMmZmZiBsZWdhY3ktdHJ1bmsKKzMyMjcxIDhlNTQxYjA3OGVkYjUwOWI2Y2RlZjBjMjA3NjEwZGM0OTgzYzI5YmQgbGVnYWN5LXRydW5rCiszMjI3MiBiOTc0NWNkNzkxYmZkZGE3ODAwNmYwYmQ3YjIzZTNjODY0ODMzNzkwIGxlZ2FjeS10cnVuaworMzIyNzMgMTkzYjhhZWMwMGNlMWJlMmYwM2FhOTY5OWE1ZDZmNjUxNmNmNzkzMCBsZWdhY3ktdHJ1bmsKKzMyMjc0IDlkNGUxMzg0OTRmYjMxMmNlMjhhODUyNGU5MWIwNWQyNjRmOGQzODcgbGVnYWN5LXRydW5rCiszMjI3NSAwZTg0MTZiZTIwOGUwZWI2MDRjZmZmZTdjYjU3MGY2MzZiM2MwM2QxIGxlZ2FjeS10cnVuaworMzIyNzYgMDRiMTcyODQzMjkyOTgxMjE0OGNiMWM2OGQ4NWRlODc2ZTU5MDgxZiBsZWdhY3ktdHJ1bmsKKzMyMjc3IGQ4YThmNzQ0YTNlNTA4YjVlMTMwNzM3NjI2ZmM0NTY0ZDk1NjVhYjIgbGVnYWN5LXRydW5rCiszMjI3OCA3ZmRhMDlmNzUxYWQ1YjFjOWI0NzhmOTNkNzBiMzY3Njc3MWQ2ODNkIGxlZ2FjeS10cnVuaworMzIyNzkgMjhhMjk3NTUxNGNkNjFkNDM2MDBjODUzZWZjOGQ3OTJmNmRhM2JjNSBsZWdhY3ktdHJ1bmsKKzMyMjgwIDU2MDA2ZDk3YmNlZjBiZTUwYzdiYmY4YTJiYjY1ZDM2OTA4ZDBlYTQgbGVnYWN5LXRydW5rCiszMjI4MSAxZTkwMDQ1NTNlMWQ5MDViNDEwOWNkNzM2Njk5ZmRiYjhkNWJkNTE4IGxlZ2FjeS10cnVuaworMzIyODIgMTZmNDdiZDQzMWM0ODc5MmNlY2U3NTRiMGMwZDRkYTA5MzRjZjFkYSBsZWdhY3ktdHJ1bmsKKzMyMjgzIDJmYWU1Zjc2MzFlZjRhYWU3YTBjMWJkYWI2YzQ1MzcyNTJiZDZkOTEgZ2V0YXJnc19tYXNrX21vZHMKKzMyMjg0IDRkMjI1OWNiNzdhMGUxY2Q3ZDg1NGRkMGQ1MGQ1ODJlZTczZjJiNzggbGVnYWN5LXRydW5rCiszMjI4NSA3ZmExNGYyMGFlYTQyMjMyYjY0YTZhZTA2NDI0MTcwNTEyYzdhNjUwIGxlZ2FjeS10cnVuaworMzIyODYgODgzNjUyOWU5ZTY2NzBhNTVmNzQ1NzE3ZWMyOWE1NjU1YTQzZTYxMiBsZWdhY3ktdHJ1bmsKKzMyMjg3IGVlMTY1ZmUxYjQyZjYzNGM2Yzk2MGIxZjI2ZTU2MjFhOWY1MjZjNTAgbGVnYWN5LXRydW5rCiszMjI4OCA1ZjFlZjE4ODJiMjUxODhlZTA2ZTJhODRiZWNjODdhZDg4OWRjYjQyIGxlZ2FjeS10cnVuaworMzIyODkgN2U2NjVjMTYwNTgzZmI2NjM3OGQzZWM1ZjlmODQ0MDYzNzcyZWQ5ZiBsZWdhY3ktdHJ1bmsKKzMyMjkwIGVlNmRmMmM2NjhlYWNjZGQ5YzAzYTJkMjQ2NzdhZTcwMTQyZTA2N2YgbGVnYWN5LXRydW5rCiszMjI5MSAxMmQ0NDA5ZTU5ZTMwM2EzOTc4ZjVkMGI0MzNhN2U4ZDY3NTY3OTQ2IHJlbGVhc2UyMi1tYWludAorMzIyOTIgZTMzZmVkYjU4MWY0YjA3YTlmODQ1N2U4MDE4ODk4OWJjMjY4OGUxYyBsZWdhY3ktdHJ1bmsKKzMyMjkzIDIzOTQyOWRjMDI5ZmM4ZDU1N2FjNjgwY2M4MjQyM2I1YzJjY2QxZWMgbGVnYWN5LXRydW5rCiszMjI5NCBhOTM4YjEzZTAyOTExMjM4MmFmNDA1ZjhkYTJiMjFmYzIwN2U0YmQ1IGxlZ2FjeS10cnVuaworMzIyOTUgNWJmZGJjMGZkMTcyMmE4NDMzYzM5MzhkZmZkNDM3NTA0YjI5ZTdjNSBsZWdhY3ktdHJ1bmsKKzMyMjk2IDA0NmJjOWQ3ZmIwZTQzM2M0NWYxNzc3MjY3NDcxNmZmZTIyYTE0MWYgbGVnYWN5LXRydW5rCiszMjI5NyAwZDhkNGM4ZGM2OGJiODg5YmU0ZDNhNWNlZjZmMTc2ZWYyNTM5YmE1IGxlZ2FjeS10cnVuaworMzIyOTggYzU1NWNkMDJiMGY5NjNjZTA0MWU2ZGNjMmZlZTY0NTQ1NjViN2YxMyBsZWdhY3ktdHJ1bmsKKzMyMjk5IDE5MjU0MTM0MzFhNmVjMjhmYzg2YTlmNjc5OWNkNjgyYWMzMmUxZmEgZ2V0YXJnc19tYXNrX21vZHMKKzMyMzAwIGZkYTJmN2Q3ODNjMjRhZjNhYWMzNTM5MTUwODUyY2I3Y2RiMWM3MDIgZ2V0YXJnc19tYXNrX21vZHMKKzMyMzAxIGQ0MWQ4ZGU5NzY4ZjM3ZjE3MWU3M2EwN2FlNTdiNDY1YjE3ZGI5ZWQgbGVnYWN5LXRydW5rCiszMjMwMiAyYTIzZmM4MzcyMGZhMTI2NGMzYzVkYTU2YTMyNjMzMDMyNTdlODUzIGxlZ2FjeS10cnVuaworMzIzMDMgYzFiYTUwNzkwYzgzODQ4NWJiZGJkM2U4NWZiMWYzOTVkYzVhMGUxMyBsZWdhY3ktdHJ1bmsKKzMyMzA0IDllYjY5NjRiNGI2Yzk4OGQ4NmVjZTRhZDEzNzdlNjVjMjgzMDRiYmIgcmVsZWFzZTIyLW1haW50CiszMjMwNSAxNTU2YTM4ZDUyNzgxNTQxZDk5YTQwNzBiNDJmYjk0M2MzYzg5MWVmIGxlZ2FjeS10cnVuaworMzIzMDYgNWZmMWYyZjlmYzM0OTNmM2JhY2EyMzU3ZDU0NjdhOWZiNTJlOWRlZCBsZWdhY3ktdHJ1bmsKKzMyMzA3IDE4MTUxNjZlODA5Nzg3NWUyNmMyNjQzY2E3ZTkzYTQ2MmQ0MGViMTMgbGVnYWN5LXRydW5rCiszMjMwOCAzMWNiOGUwMjYwZGI1MTAyYjBhYjUwNmM0YWVlMzljOWQxMjQyOGFlIGxlZ2FjeS10cnVuaworMzIzMDkgYWIwYzA2N2ZlMjg2ZmJkMzAzYWNlYzE2ODgzNzQyNzRiNTg5NjYyNyBsZWdhY3ktdHJ1bmsKKzMyMzEwIDI3NjM1MmJmY2I0MmI0MWFhZTk2NjE0ZmFiM2RlMzIxNjFjZTNmODIgbGVnYWN5LXRydW5rCiszMjMxMSBjYTY0YzFiZTIzMGJhY2U0YTNiZTJiMTAzYzkzMDQwOGIyMTIxODdjIGxlZ2FjeS10cnVuaworMzIzMTIgY2Y0NWFkM2NhNGI3NWRkY2RiYzUxMmQ3MmI5M2IzZmMwZDU0MTRiMCBsZWdhY3ktdHJ1bmsKKzMyMzEzIDQ2MmE0YzMxMThiYmMwNjgyOWNhZjFkMGMyOGFmY2Y0YTM2NzE0ZGQgbGVnYWN5LXRydW5rCiszMjMxNCA4YmQzNGRkNThhOTJhYTMzNDczZjlmOTdlYjI3NGNiN2NiMTY2YjM3IGxlZ2FjeS10cnVuaworMzIzMTUgYzViZDhhODQ1MjIzOWYzNmJlMjMxOGE2MzQ0YzU2ZDc4NTk5NzdhMiBsZWdhY3ktdHJ1bmsKKzMyMzE2IDcwZDZmOGIwZmM2OTQ1ZTcxZjQ0MzhjZTA3YjRhOTFjYTEzMGMzMTggbGVnYWN5LXRydW5rCiszMjMxNyA0MGQyODdjM2Q5MDYyMGE3NzY1MzAxNTg4OWRlZDViYmI4NDY0ZDZhIGxlZ2FjeS10cnVuaworMzIzMTggZDBhZTYyMGFmYmQ0ZDQxYjhhNjVmMTI1MDUyYWM5MGUyNGU3ZDZmNSByZWxlYXNlMjItbWFpbnQKKzMyMzE5IGVkNWVjZDYzYzFjZjliN2Y0ZjI5OWM4MTJiODY4ZGU4NWEwZTczMGQgbGVnYWN5LXRydW5rCiszMjMyMCA5NjQyZmI0Y2RhMmZlNGFmNTZlMGI4Yzk4YzhkZjVjNTUzMjI2MjIzIHJlbGVhc2UyMi1tYWludAorMzIzMjEgYzk5MjVmYTI5ZWEzN2U1NTg4NDg2ZDk3NTI2NTlkYmRjY2ZhM2Q0NiBsZWdhY3ktdHJ1bmsKKzMyMzIyIDA2ZDEzN2E0MjdlOTYxMWQzZmIyNjBhMjEzZGY0MThmY2FlOWM3N2UgbGVnYWN5LXRydW5rCiszMjMyMyA3OTIyZDVmNDM4NTQzYTU3NjVkZTY0ZjgwMjI5Y2UzMTcxZDIwMzQ3IGxlZ2FjeS10cnVuaworMzIzMjQgYTQxNTRkZDU5MzlhYTZiYjNhMTEyODkzOWU5MDc0ZDZiMTM4M2QxNSBsZWdhY3ktdHJ1bmsKKzMyMzI1IGQ2YWZlMTk2ZWY4MjA4M2ZmMjIyNjIwYzlhYTU5NWVmY2M1MzlmYjMgbGVnYWN5LXRydW5rCiszMjMyNiA2NThiMTBjNWJhMmEzZDZiZTE2N2YyZjRkN2ExMWUzYTdiNjE2NjBkIGxlZ2FjeS10cnVuaworMzIzMjcgMDE4MTcwYTRhMmQ3YWMyNTBhZWRmMDc3ZmI5NjhlNmFjOTY4Yzg3ZSBsZWdhY3ktdHJ1bmsKKzMyMzI4IGFlZjAxYTA3NmVmOTY3YWU3OTNjNGQ2M2M3MjQ0MGI1MTMyZGMxM2QgbGVnYWN5LXRydW5rCiszMjMyOSA5Nzg5MDEzNGM5YzQ0MzkzYmIzNmEzODI3YzA3YjU1NmFiMjA1Mzk2IGxlZ2FjeS10cnVuaworMzIzMzAgNDFmNDU4YjhkYTIwYTMzNGVlYzY3ODE4ZWRkOTg2ODI3OWE1ZTQ0NiBsZWdhY3ktdHJ1bmsKKzMyMzMxIDQyZGU1MGUxOTJkZjViOWU0ODA2MzNhMjNjODY5OGZmZmNjMDA5ZjUgbGVnYWN5LXRydW5rCiszMjMzMiBkNmUxM2QxMjEwYzZiNTg1MGZhMTUxODFkNDBkYjliODA4OTVmMDY5IGxlZ2FjeS10cnVuaworMzIzMzMgMmNlMzlhN2JlNzlkOWE1YjE3ZThkY2Q3ZDA4NzEyYmY3NGFhODJiNSBsZWdhY3ktdHJ1bmsKKzMyMzM0IGZhNzg3NGVjNmE3MWVlOGM5OWMzMjJjMmI4NGRhMTEwYzJhNTA2YzAgbGVnYWN5LXRydW5rCiszMjMzNSBiZTE0OTcwYTk5NTUyMmZlZGFhODlmYmM0NzVmYjE0NzgyNWQwYjVkIGxlZ2FjeS10cnVuaworMzIzMzYgNTI5MzBiZTlkZmVhNWE1NWI0Y2Q4MjFiMDRhZThhNjNmNzg2ZGRkZCBsZWdhY3ktdHJ1bmsKKzMyMzM3IGRlNzY5MDUyNzU4NDNlNzlhNjRiYTUxNTcyZTk1YmE3MGE4Y2EzNzcgbGVnYWN5LXRydW5rCiszMjMzOCBlZGNmZGIyYTg1MmU5YWYzZWQ5ZjdhZTk1NTIyNDc1OGE0ZTkwMGI0IGxlZ2FjeS10cnVuaworMzIzMzkgMjlmM2IyMzc1MDQ5ZWYwNjgyN2U1M2IxYzMwZDU3N2ZlNjEzMTUzOSBsZWdhY3ktdHJ1bmsKKzMyMzQwIDE0OWJkMGVmOTRmYjg0ZGU5YmNhMmEwMDA1ZGI2Yzc0YTdlMmQ2YWIgbGVnYWN5LXRydW5rCiszMjM0MSA4MjBkOTU3MGVkZWJjM2MyYmQ4ZmZkMDVkOTQxNGQ4MGU0YTkxZmUxIGxlZ2FjeS10cnVuaworMzIzNDIgZDMxMjdiNjcxZDM2YzM4ZDhkN2JjZDRiZDU4Y2VkNTRmNGVlYzc3MSBsZWdhY3ktdHJ1bmsKKzMyMzQzIGQwOGQxNWE3MDI5NTBiNTdhZDJiNWRjYzdmZDJhYzkyMjVmNjMwYTEgbGVnYWN5LXRydW5rCiszMjM0NCBlYzJhMGYxNWMxNGNkMTlkNDQ5NDNjY2ZmYTliODJhNzlmZGM2NzFhIGxlZ2FjeS10cnVuaworMzIzNDUgMWQ4ZTg0ZDk2ZGRlYzZkZjE3MDZkODhhM2I1ODdjOGJkODcwZWE4ZCBsZWdhY3ktdHJ1bmsKKzMyMzQ2IGFiNGZiZjhlYmFiM2IwYjU4MDZhNmI0MWRkY2MyODkyYTk0YmZjZGYgbGVnYWN5LXRydW5rCiszMjM0NyAxM2QwYTNjNGU0NjU3NWJjNzJkZWYzOGM0NDk3NDVjODU0MTY3ZjdkIGxlZ2FjeS10cnVuaworMzIzNDggMTZlZjViOWJjNzg5Y2I5YTM4NTQwZDUxMjFlYzI4MjRkNDBkNDczNiBsZWdhY3ktdHJ1bmsKKzMyMzQ5IDVlNmZmYTY1NTQ2MjM0Y2IyOGExNWE2NGRjZDgzMTBiMzMzNmU0NDMgbGVnYWN5LXRydW5rCiszMjM1MCAwM2FmNDZkMWFjMjg0MDU2NzU1MWRjZDhhMTIyZGMzMGIzMzQ1OTAxIGxlZ2FjeS10cnVuaworMzIzNTEgNDY0OWYzMThmY2IwMmRhZmJlZTJmNjE5OTQ3M2YwODFhNjk1NGZjYSBsZWdhY3ktdHJ1bmsKKzMyMzUyIDgxNjBiYzc4YzkzYWIxYTYyMmViODc1ZjlhMjA0NzM0ZDIxMGE1ZGYgbGVnYWN5LXRydW5rCiszMjM1MyA4OTIwNWY1YmI0NDBiZmNhYjVkZjBmOWJjMmE0MTgwNWM5MDA2YzAwIGxlZ2FjeS10cnVuaworMzIzNTQgOWVhMGNjZGRiZWFkMzY5NGZmMzIwOGQ4YjcyMTUyNWZkZGExYzJlZCBsZWdhY3ktdHJ1bmsKKzMyMzU1IGRlNmQxZTdlOTgyNTcyNDJkY2U0NDIxMmRhNTdlY2FkNjQxYjQ0ZmUgbGVnYWN5LXRydW5rCiszMjM1NiBhYzhkYmJlNjI0MzJiOTRmM2Q2MDA2ZTk4Yjk4YzFhMmVjYTA5NTBiIGxlZ2FjeS10cnVuaworMzIzNTcgMDUxYTRmMTJjYzQ2MjU3MTc4NTNkODM1YzMxMGZjNTE0OWIzNmJhMyBsZWdhY3ktdHJ1bmsKKzMyMzU4IGY5NjhlOTNlM2NlMDE4NzE3Njk4YWQxNGM0MjZjZDEzNWQwNjgzYWMgbGVnYWN5LXRydW5rCiszMjM1OSAzMWNiZDQ2ZjBjN2Q2OGRiMGVjMzk3MDRjODMzZGZiOGNkYmQxZjU0IGxlZ2FjeS10cnVuaworMzIzNjAgYWM1ODYwOGNkMjNjZTg2ZTViYmM1MzI1ZDYzNTE5OTYzMmUzYWMxOSBsZWdhY3ktdHJ1bmsKKzMyMzYxIDg2ZjQ5MzNmYTQyOTVlMWVkZDNiMDBmNjA1YjMxY2JhYzMzNDUxOTYgbGVnYWN5LXRydW5rCiszMjM2MiBiYTkwOTIzNmViMTNiMTA4ZTA1MjJmNjZlODA4YWMyZTQ0YmY4OGZiIGxlZ2FjeS10cnVuaworMzIzNjMgNDNkMzJmNGY4OTEzODQ3NDg5ZjM2MDBlZmNmY2RlMjVlMWFhYmQ0YiBsZWdhY3ktdHJ1bmsKKzMyMzY0IDVjODg2ZTAzYjQzZTQxY2I3MWY2NGYyZDZjYjA2MGJjZWY0MWZmY2EgbGVnYWN5LXRydW5rCiszMjM2NSA3YmJhM2UyYmU1NGU3ZWFhNTAwMmY2OTAzYmYwNzA0NjAyNmJiYzdhIGxlZ2FjeS10cnVuaworMzIzNjYgYWE2MzRhZGI0MWE5MDBhZDhjOTc2MDFlNDIwY2Y0OTVhZGI0OTBlZiBsZWdhY3ktdHJ1bmsKKzMyMzY3IGQ3OTI1NDRhYjExMWY0NDJjOTZlZDRiMGExNzdiY2M0OTU1MmIzNzAgbGVnYWN5LXRydW5rCiszMjM2OCA1MmYzZDkwYzE3ZTgzZGU1MzQ1NGQ4ODE1MjY2OWJhYTc3YmM2YjY0IGxlZ2FjeS10cnVuaworMzIzNjkgY2VjOWQxM2M0M2ZmN2RiODJhYjgwZDYzMGFjYjM2YzU4NGQyOWZkZCBsZWdhY3ktdHJ1bmsKKzMyMzcwIGQzMjk3ZTI5ODIxMWI4YzdiYTUxNmY2OTMzM2MwMGQyOWM1OWQzYjYgbGVnYWN5LXRydW5rCiszMjM3MSA2NmNjZWI3NTYyYjU2YTkzNGZmNjBlYTFlZjMxMmYzZDRjNDFiNTc3IGxlZ2FjeS10cnVuaworMzIzNzIgYmQ2NzhlNjVmNzg0MzIwZjQzYmMzZGMyYmU4ODk4YzZmNGFkMjk3ZSBsZWdhY3ktdHJ1bmsKKzMyMzczIDZlMmU1OTg1Mzc1YzYyNDdlYzZiZTA1ZGE0MDA0NGY5MzdkM2NjYzkgbGVnYWN5LXRydW5rCiszMjM3NCAwMTRjZmFhN2E3ODRmYmEwYTI2MmZkMzQzYjQyMTNhOWFlMGUwYzhjIGxlZ2FjeS10cnVuaworMzIzNzUgMWY5NjA0OWE3OWQ0Y2Y5ZjI5Mjk5MDMwMzdkOGIxNzFlODQ0OWUxNiBsZWdhY3ktdHJ1bmsKKzMyMzc2IGMwYTI2YzVhNzkzNjQ3MGUxOWMyYjc1NDM3MzIzNTg0OTM4ZWQ1MDAgbGVnYWN5LXRydW5rCiszMjM3NyA1NjNiYWEzZTQyOGY2OTQ2NWJjNGQxODk5MTQzMzA4YTNkMjNiN2U5IHJlbGVhc2UyMi1tYWludAorMzIzNzggYjQ5ZmYwNGMxOGRlN2VkMGU0ZDdlZjU5ZGQzYjI5N2RiNDQxZTdmMyBsZWdhY3ktdHJ1bmsKKzMyMzc5IDg5ZGMzMjY3NDU1NGVlZDAwNTYzNjEzMzQ0YTI3ZWRlYzJkNjRhYmIgbGVnYWN5LXRydW5rCiszMjM4MCA3NTY1MTJmYmI1Mjc4ZDI1MWQ0NWIyOTk3MjQyZjhkZDJjMGI3YjMzIGxlZ2FjeS10cnVuaworMzIzODEgYTFkN2NjZDk1YTVlODNkNjE0ODk4MGNhYThjYjhhMzRkMDNkODZiOCByZWxlYXNlMjItbWFpbnQKKzMyMzgyIDBhZDc0NTNhOWY4Mjc3NTAzMDZlZmU3M2JkMjBhNjgxOGVhZjQyMzkgbGVnYWN5LXRydW5rCiszMjM4MyAwODVmNjgwMDljYWQ4MThjZWI0ZDMzMTM3MGUyNTk3OGQxMmVkMWFiIGxlZ2FjeS10cnVuaworMzIzODQgOWM3YWQxZTQ1NTk2MGNjZTc0NjIzN2FiYzNhZmZhYmZlNzcwMDk4MSByZWxlYXNlMjItbWFpbnQKKzMyMzg1IGRkMDIyZDQyM2I4YTA4ODZkZWY2MTM0NjcxOGE3MDM5ZWZkZDI2Y2QgbGVnYWN5LXRydW5rCiszMjM4NiAwNzE3MjQyMjk1YjExY2IzN2ZhYTA4YWIxZDJiY2E3NjdjZjYwNmI5IGxlZ2FjeS10cnVuaworMzIzODcgOTllODJkYmFmMGNjZDgyOTg3NzY0YWQ3YWRjYmM5MDU0MTMxMTZjOCBsZWdhY3ktdHJ1bmsKKzMyMzg4IDdmMjM2NjdkM2NmYzRhZGRiNDIxNzM3MjIwYzg1ZDcxODBiZGVjODIgcmVsZWFzZTIyLW1haW50CiszMjM4OSAzZGYwY2YxNmRlZmMyMjhmN2MzODJkZWNiYjI3MjNiYzgwZDJhMGYxIGxlZ2FjeS10cnVuaworMzIzOTAgMjJkMTc3NjgyYWUxNGZmMTdmYTE2ZjZmNmYxMjY1N2ZiZjJlMjM0MCBsZWdhY3ktdHJ1bmsKKzMyMzkxIDE3MWRiZGRmMGEwMjE2NzBiNTM4Y2Y1MzQ1NTkyNDY1MmQyNjUzYmEgbGVnYWN5LXRydW5rCiszMjM5MiA2NTAzYWQ4ZGNhODgxN2RjMTA0YWNlOGJjNTg5MTcwN2IxODZhOTBjIGxlZ2FjeS10cnVuaworMzIzOTMgNjM0OGI4NWJjYjlkZTgwYjU4ODZlMWI0N2UwNjNlYTQ1ZjY0ZDIxMiBsZWdhY3ktdHJ1bmsKKzMyMzk0IDljMGFkNjk0ZTNlMjBhM2YyNmZlZjBhM2M4YjQyMjEzODA3MDg5NWQgbGVnYWN5LXRydW5rCiszMjM5NSAyYzc0NDdlZmMyYThkMGUxNmUwZmQ0NmUzOGJkZDU0ZWRkNGZmOWQ5IGxlZ2FjeS10cnVuaworMzIzOTYgNzUzODJkMTAyNzQ5Y2NlOTQwZGQzMGIzNDE3MDMzNWU0MzU4OWMxYSBsZWdhY3ktdHJ1bmsKKzMyMzk3IDYwZWFjYmVhNzE5OTJjMTY3MWU2MTM5MWE4NmNlOGQwNDg0OGVhZjIgbGVnYWN5LXRydW5rCiszMjM5OCA5Yjc5NjA1MTcxZWJkNGY1NTY4ODI5MTc0YTkzYThhZjY5YmYyZjNmIHJlbGVhc2UyMi1tYWludAorMzIzOTkgOTQ2NmI2ZTI0ODMzMmU1YTI2YmE5OThhZDBkYTA1YWM4Zjg2YjU0YyBsZWdhY3ktdHJ1bmsKKzMyNDAwIDAwYjg5NDcyNjIwZDdlNGJhODg0ZWE5NWMyM2Q0MTJjNmIzMDdlNGQgbGVnYWN5LXRydW5rCiszMjQwMSAyOWI2YTQ4ZjRjNDUwY2ZmYTc3NDgwN2JiYTBlZmYwZmQwNTEyNThlIGxlZ2FjeS10cnVuaworMzI0MDIgMGVhNTk5MWY2ZWRiYzRjMjczY2U1OGQ2NTEzN2FmNDE3N2RlNjI4MCBsZWdhY3ktdHJ1bmsKKzMyNDAzIGUwNmYyYmY1NmI0MDY4Mzc0YzkyZmIzMjc4NmQyNjVjM2Y1NjhmOGYgbGVnYWN5LXRydW5rCiszMjQwNCBjOWJlZTExZWFhOGI5ZTVjOWMyYmNiM2QwZDIxNWFkMzlkYWZhODgwIGxlZ2FjeS10cnVuaworMzI0MDUgYmM0MjMxZWIyNzU4NDE2ZjY1MzE0MGVkOWRkNmYwYWYwNjU5NjhkNiBsZWdhY3ktdHJ1bmsKKzMyNDA2IDIxMWMwMmZiNjU3MGFmZTFjMmVkMDQwOWE5OWFiMTE4MjhkMTc5OTUgbGVnYWN5LXRydW5rCiszMjQwNyAzZWJiNGJjZWJkZDdlZDY0NzA2MTk2MmQyOTA2ZjU4YzA5MzA4NzgzIGxlZ2FjeS10cnVuaworMzI0MDggMGQ1MzAyOWI3OTQ5N2E2MWQ4NzFkYmFhMDYyMTEzMjIzMDFmODhiNiByZWxlYXNlMjItbWFpbnQKKzMyNDA5IDcwOGFlYTgyYWRlODcwYWIyYjNmMjJmZWE3ZjAzNGYwYWFjNGI1NjAgbGVnYWN5LXRydW5rCiszMjQxMCA1MWVkOWY1ZTM2YTE4Yzc3MjQ2M2Q1MGVhMzZiYzM3ZDBjYjViZjMzIGxlZ2FjeS10cnVuaworMzI0MTEgNzg3ZDY2NWUxY2RjNzMwM2NiYTllM2UyOTJkNzg2NWU2NDlkMTE4MiBsZWdhY3ktdHJ1bmsKKzMyNDEyIDM5NWYyYjk5Yzc1MmY5MDZhN2MzNTJmMjg0YjE2M2UwOWU3ZWE1MWYgbGVnYWN5LXRydW5rCiszMjQxMyAyYzViZjA5N2RhZjg1NWEwZGFlZTllMWNhN2RhMDhjNjEyMTI4M2FlIGxlZ2FjeS10cnVuaworMzI0MTQgNzQ5ODE5ZjhiMmFkY2E3M2Y1ZGVjZWJlZGYyYTFjNTJkZWRiMTMwZiBsZWdhY3ktdHJ1bmsKKzMyNDE1IDYzZWIwYzk4N2RlN2RiNDAyOTEyMWJjOTdiMGIxYWUzNWZiZDUxZjkgbGVnYWN5LXRydW5rCiszMjQxNiA4YTZlNGM5MmJkN2YyYmQxMjdlMjMxNDE5Mjg4NDVmZTc2MWVkYjJiIGxlZ2FjeS10cnVuaworMzI0MTcgNjgxNjcxOWY0MzljNTlmZDcyNmU1OTIxMWU5NDA1ZTExMmRmOTczMCBsZWdhY3ktdHJ1bmsKKzMyNDE4IDU1ODY4OWI2ZDdmMGViNTJlZjFmNjFhYmI1MzZhZDA4ODYwMGY1ODUgbGVnYWN5LXRydW5rCiszMjQxOSAwMTVkODkxZjM4NzNkYzAzNDg0NzJkOWIwMTAwY2ViYTA5MzVkYzk4IGxlZ2FjeS10cnVuaworMzI0MjAgMjRkMmEwNWY0MWNjYTE4MDJhN2FmOGFjYWJmODAyOTE1Y2I2ZTY1NiBsZWdhY3ktdHJ1bmsKKzMyNDIxIDY0ZDdiODc2NzIyZmQ4Nzk0NjE2ZjEwN2FmYzlkYTU3NTA0MGQyMmEgbGVnYWN5LXRydW5rCiszMjQyMiA4MDk0YzBkYjk1ZjhiNmE5NDg2ODM2MGEyY2YyNTk5ZmVkZjRiMjExIGxlZ2FjeS10cnVuaworMzI0MjMgODAzYmNhMjI0YzhmYTdkMjE3MjA4MDIyNzM4NDBjMTUxZGNiZDdmNiBsZWdhY3ktdHJ1bmsKKzMyNDI1IGE3NmEzNjgzMDEyYmMzN2M0MDAwMmQxNTBiMjgwYzEyYWUyMDgwMzcgYXN0LWJyYW5jaAorMzI0MjYgMDVlNTczODhjYjhmZGNlZThjOGE5OTc0MzM4NGRlYjMzMjFjNjU2ZCBsZWdhY3ktdHJ1bmsKKzMyNDI3IDcyNWIyODFjY2VhZDM4YmY3MTIxNjNiNjJkMWQ0ZjI1Nzk5ZTYyYjIgbGVnYWN5LXRydW5rCiszMjQyOCBmODc0YTRkMjljYTQxNzhlYjUxMjkzMGFlOGZlOGFjMTA0OWQ1MmFmIGxlZ2FjeS10cnVuaworMzI0MjkgMjE2MzNlOWRmOGNjNDZjODY0NTEyMTg0MjJkODQ4ODFmMzRiOTJiOCBsZWdhY3ktdHJ1bmsKKzMyNDMwIDExMjU0MDE2MGI2NTJlNmFjMjJiN2U5ZGMxMGExMmI3MzY4ODdiOGEgbGVnYWN5LXRydW5rCiszMjQzMSA0NmQyNmFmYThiOTU2M2ZkMTI1YWRiMzcyMjA3OWQ4MjhkZTJmMTU5IGxlZ2FjeS10cnVuaworMzI0MzIgNzJkYjc1NzVmOTcwMDBjOTdiMjY5YTFhYzZkZjcwOWZlZGVlMGI5YyBsZWdhY3ktdHJ1bmsKKzMyNDMzIGE5YjU2Yzc4ZTBkNjRlY2RlNDM0YzlhYzMzODM4NTgyY2NhYzliNjEgbGVnYWN5LXRydW5rCiszMjQzNCAyNWM4Y2VlNDQ1N2U2YWQwYWZmMjEyODdlMDAwNzEzMmVhMGUxMmU1IGxlZ2FjeS10cnVuaworMzI0MzUgYzM0Y2Y5Y2U5NTJmOWZhMjgyYmE2NjE4YTZmZmZiNjIyODZmNmFlZiBsZWdhY3ktdHJ1bmsKKzMyNDM2IDBjOTUwZTMzMjNlZTRlZTYzNzA2MmI5ZWFhZmE1MGVjM2NmYTA2YzEgbGVnYWN5LXRydW5rCiszMjQzNyBjYTRiZGFmNWM3NTc1ODU5ZWFlM2ViNDk5YzViOWVlNjgzNGQ2MDg4IGxlZ2FjeS10cnVuaworMzI0MzggMTAyZjllMzU4ZjUyMTM4ZWNmNGM0MTQwNjc0NzU4Y2RmMTcwMzdlNiBsZWdhY3ktdHJ1bmsKKzMyNDM5IGMwYTFlZmUxMDI4NDczY2NiZjFmZDI1ZDhjODIzM2YzOTUxMGIzZWIgbGVnYWN5LXRydW5rCiszMjQ0MCAyYmEyMGZjOWY0OTUzYzA4YmE5NWFiNDc3NmI4ZmZkODA5NzBlZDY4IGxlZ2FjeS10cnVuaworMzI0NDEgMjhhMDk3NjdhMjRmZmE3OTFjNjcxM2U0MjM1ZWUyNWJmZmFlYTkzYSBsZWdhY3ktdHJ1bmsKKzMyNDQyIGE1ZTFiMTY2MmVjMDExOTFlZDM5N2IwZjliYzllNTI0YzZkNzA3MzMgbGVnYWN5LXRydW5rCiszMjQ0MyAyYWY5M2ZkZmY2MDg4OGU1NDc2ZDU4ZWY0OTY1YTU2OGVhNzJiMWNkIGxlZ2FjeS10cnVuaworMzI0NDQgMTEzYzMxODg4NzU1NjE0NjZkMTFlYzM1ZTExNDczOWFhN2M3ZjBjMyBsZWdhY3ktdHJ1bmsKKzMyNDQ1IGVkNzRhYzIxYzEzMzIyMGZjMmM2NGU0Njc1MGEzYzMyMGEyZTk1ZGMgcmVsZWFzZTIyLW1haW50CiszMjQ0NiBiMzE2MjkzMzU2MzU1ZWZmNzY1NGZkNGRhMWZjYTNiZjJmMTdmMGUxIHJlbGVhc2UyMi1tYWludAorMzI0NDcgNzNkY2U4OTNlYjRiMzgwMjhkM2JlYjZiMzI4NDA0OTQwMzY2OThmMiByZWxlYXNlMjItbWFpbnQKKzMyNDQ4IDZiZDI4YWJkMzFhN2YwZDNlNmE5MmQwZjc2YTZhOWU4ZjgzYzU5MzYgcmVsZWFzZTIyLW1haW50CiszMjQ0OSA5MTEzMGE0Y2MxY2UwZWY0NmQyOWNmODQyYzNiNmY0MDlkMzA2NzQ2IHJlbGVhc2UyMi1tYWludAorMzI0NTAgNTdlNjE1ODg1NzFiMjBiMTJiMDA1MmM2ZWNlOTY4NDMwZjljOWIzMSBsZWdhY3ktdHJ1bmsKKzMyNDUxIDA0NWJkMTRmNzQ2ODI1YjIwNDhlZDZlZjQ1YTQ3N2ZmZTM1YWFkMmEgbGVnYWN5LXRydW5rCiszMjQ1MiA2MGU3MjIzODRkNjJjNmY4MDY3ZDJkZjIxYTZkMDNhZTgxNWMwOTNmIGxlZ2FjeS10cnVuaworMzI0NTMgNjRjYjY1N2IwMzM4NDQ0ZDJlMzhlZjdkYjk3MTQyNTlhZGVhOGNjZiBsZWdhY3ktdHJ1bmsKKzMyNDU0IGRlZjA5ZWMwYmMzMTcyYzU0Zjc1YjEyOWEyMTUxMzgxZjhkNjliZWMgbGVnYWN5LXRydW5rCiszMjQ1NSA3Mjk2Y2QzZjQ1YzdmNDczZGU3YjJhNWQ5NmNlMjhhNDNhYzQ2ZmQ5IGxlZ2FjeS10cnVuaworMzI0NTYgMGNkOGQ1NzBjNTkxMTM5YmM0YWM2MWUxM2MwY2I3NmQyNjAxZThhYyBsZWdhY3ktdHJ1bmsKKzMyNDU3IDJmYWQ1NDgzOTFkZWQ2ZWQ0YmQwMWE2MDg3ODc3YzliZDhiOTU2NmMgbGVnYWN5LXRydW5rCiszMjQ1OCA5Yzc4NWFiMWVmZjAzYTI3MTE4OGRmM2M5YzBjNWI0NzkyODAyNjBiIGxlZ2FjeS10cnVuaworMzI0NTkgZGM0ZTQ3ZTZmMDAyMzVkYmJiNjQwMjQyYTc5YjI0NWIwMWY1MmYxNSBsZWdhY3ktdHJ1bmsKKzMyNDYwIGIzN2FmMjFiNzdiZTMxNWM4MjBkN2UxZGU5Y2E2Y2FiOWMwNjRlMzIgbGVnYWN5LXRydW5rCiszMjQ2MSBlMDZhYWQ5MGMwYWUyNGQ5OGZkYmIxOGIyZjkyOTIxOWE3MTgxMWUxIGxlZ2FjeS10cnVuaworMzI0NjIgMWM1YWQ5MzYwMzhlZjI2YzI5ZDYwZjU2NTNjOTQ0MWJlN2M1MWVmNSBsZWdhY3ktdHJ1bmsKKzMyNDYzIDcwMTJjYTY0YmM3NDk1YzczYmQwN2EzOWM2ZDUyMWU3ZDk2YWViMjUgbGVnYWN5LXRydW5rCiszMjQ2NCBlNGE1ZjM4ZmYwMDg5YmYwYzJiNmVmYjA4ZmY4N2U3YzQxNjYxZTg2IGxlZ2FjeS10cnVuaworMzI0NjUgZmExNTlmZWYyNzMwMDRkZjVhZjZkMTE0ODFmNDI3YjlhYjRlNGU4NCBsZWdhY3ktdHJ1bmsKKzMyNDY2IDQ1YzRhMmYxNTdiMzhlYmJjZjYyMjVhNDkzZGFlNjc0YTE1OWViZWYgbGVnYWN5LXRydW5rCiszMjQ2NyA5OGUzMWNmZDI2ZGMyNjFiYjRmZjIwMGU0NWY5MGJmNjU4ZWRkZDcyIGxlZ2FjeS10cnVuaworMzI0NjggZDgyMjM4ODA4MmJhZDQ3MTQ5NjJjNjUwMDlhYjY0YzljZWQ1Yzc5YiBsZWdhY3ktdHJ1bmsKKzMyNDY5IGMyYTA1ZTA3ODVmMTQ4ZmFlOTc3Nzk4MmZjNWE5NTY4OTQ3ZTBlZjcgbGVnYWN5LXRydW5rCiszMjQ3MCAyN2FmMzdkZDVhMGJmNTIxODQ1YTgzMmI0YzdiMDU2MjIzNWU2YThkIGxlZ2FjeS10cnVuaworMzI0NzEgMzlkODJkMDM4ODc4OTQxYWMxMjgwZjIwZjZmODVlMjc1Nzg1NjcxNSByZWxlYXNlMjItbWFpbnQKKzMyNDcyIDQ5MGFmMDBmYjE4MzBjMzU0YjM2ODg5NzNmNjhhMzA0YzRiZmJlNGMgbGVnYWN5LXRydW5rCiszMjQ3MyBlZjA3OWRlZmQyY2MxMWY1YTI4ODliZjgzNzk0MjhmNDgxMzBjOTBlIGxlZ2FjeS10cnVuaworMzI0NzQgZWU4MTVhNmIxMWUyMDJiZWIyNjU1Mjg4ZGY1ODYzYWNlNjkwNmI3YSBsZWdhY3ktdHJ1bmsKKzMyNDc1IDg2NTExYjk2ZDk4MGM3Y2NjZTY4MDYxY2U5NWY1YTEyMTJlYWVkMmYgbGVnYWN5LXRydW5rCiszMjQ3NiBjZDgyMjUzZjIwYjcwYzM2NzlhN2ZjMmI2MmMwYWVkYTY5NWU4ZjE1IGxlZ2FjeS10cnVuaworMzI0NzcgZmViMzU5NTRiMDM4NjhkMTJkYzFlMWI1ZDU2YWQ5Yzg5OTNiM2JiZSBsZWdhY3ktdHJ1bmsKKzMyNDc4IDRjNTNiNjk0YWZhNjk4MjQ4MmZmNjI2NWMyN2JmOGQwNTcwMzdlZTggbGVnYWN5LXRydW5rCiszMjQ3OSBmMzUxZmFiNzM4OTdkZGRiOGIzYjgyYzU5NTY4NjhhZDYzY2JkZjlhIGxlZ2FjeS10cnVuaworMzI0ODAgMWJlZjNlY2EyMGNlMDk5MWYzMDM0ZjE3ZjJkZTYwNTI2YjJkNTFjMCBsZWdhY3ktdHJ1bmsKKzMyNDgxIGFlMTdmYzgxOTMwOGIzYWI2NmY3MWI0ZjZlOTMyMjAxNjM2NjdkYzggbGVnYWN5LXRydW5rCiszMjQ4MyA3MzZiYmRlY2FhMWRmOWQ0YmY4YjYxZGU0NWQwM2M5MGE5MjU5ODg3IGxlZ2FjeS10cnVuaworMzI0ODQgNTQ1ZmFlYzc5MGM0NzMyNjBjNjUyYmFhM2JjYmExMTFiOWNlZjEzNCByMjNiMS1icmFuY2gKKzMyNDg2IDVjY2I1NTM2ZmVmZWJiYjY0YTMyOTE3NTZhNTYzOGJjMjc5YjJiNmUgcjIzYjEtYnJhbmNoCiszMjQ4NyA1Y2RiNzI4MGMzMjY2ZDk1NDhjY2Q4YTZiM2Q0MDZhMjFmMzhjOWNhIHIyM2IxLWJyYW5jaAorMzI0ODcgNWZjNjBlMGI4ODM2ODAyMDdjZmIxMDA4NjVjNDJjYTNhMmIxNjYzNyByMjNiMS1icmFuY2gKKzMyNDg5IDU3NmZhMTdmZjA3Y2MxNzNkMmIyNzdlNDVlNGE0ZGVhYjQ2YWJkMmIgcmVsZWFzZTIyLW1haW50CiszMjQ5MCAxNzFlY2ZmZjI2NTc5Yjc1OWY4OGI5ZWFjNWExNWUzNTM3ZGFkNjliIGxlZ2FjeS10cnVuaworMzI0OTEgYmRjZjM3YmU5MDRkYmQyZTM1M2YxYzdmYWVmMzE2MmJhNjFhMDI4MSBsZWdhY3ktdHJ1bmsKKzMyNDkyIDMwMzBkOTRhOWMwNTkwYmU0MTcyMGI5YzdjYWVkMTUyMTRlN2M4M2UgbGVnYWN5LXRydW5rCiszMjQ5MyBiNjJkODc4MTY5NzY5NTQxMmQ2ODZlZDAwNDNmZmQ3MWVkMWE0MTRmIGxlZ2FjeS10cnVuaworMzI0OTQgOThmNWJmYjE5Yzg2OGIzNjNmZDQwMDRmMzMyZmViODQ2YzVjOTRlZSByZWxlYXNlMjItbWFpbnQKKzMyNDk1IDY4YzYxODZkYzFhMTFiYjQxMmVlMDNhZWI5ZDFlYmFkZDdjM2JmMTcgbGVnYWN5LXRydW5rCiszMjQ5NiBiNjdmNWMzOTVhNjg4ZTU5MDU4MzY4MDQ4OTJmZGIzNmU2Y2U2MjQ4IGxlZ2FjeS10cnVuaworMzI0OTcgMTAzZmFhMGMyZTFlNmY2ZmI0YjQ3YjdlZDI0NTQyNTBhMDBhNzEyMiBsZWdhY3ktdHJ1bmsKKzMyNDk4IGRiOTg0NTkwN2U4YmVkMDM5NjQ2NWEzYmQ3M2JjZTZlMmVmNzg2MTUgcmVsZWFzZTIyLW1haW50CiszMjQ5OSA2NDIzMGVlOGVlYTU5NWJlMmU0MDRlM2UzMWRiOWMzY2RiNGUwZjJhIGxlZ2FjeS10cnVuaworMzI1MDAgZjUwZDBkMGYyOWEyZDBiNTI3YTVhMjhmMTM3YWI0ZDNiYjdlMWY0MSBsZWdhY3ktdHJ1bmsKKzMyNTAxIDZkODUyZWJmZjM2ZmY2M2I3OTg2ZTY4ZTIzYTZiMDY5OWM1YTk2MTAgbGVnYWN5LXRydW5rCiszMjUwMiAxNjM3NDA1MmNiNWRiM2M4YzZjMjQyNGI2NTNiNzViMzMyYWIyZWE0IGxlZ2FjeS10cnVuaworMzI1MDMgNTNmZjIzYmIzMjQ4ZmI4NDcyODA3MDBiZGE2N2NjZTU0ODA3NzIxOSBsZWdhY3ktdHJ1bmsKKzMyNTA0IDc0M2FlOWNiM2E4M2RiZmYyMzEwMWM0NjhhNWUxMWQ5MWI4YmI1MmIgbGVnYWN5LXRydW5rCiszMjUwNSAxYTBiN2ZjNDYyNWI4ODAzZTMzODNiZDMwOWE2ZjM2NzA5ZjQyNGYxIGxlZ2FjeS10cnVuaworMzI1MDYgM2E4YjhhZWRlMTAwZDhjOGVkYTlkNjU4YThlYzEyODljZjZiYzQ2NyBsZWdhY3ktdHJ1bmsKKzMyNTA3IGE1MzUyOTA5NWU5NTQwOTQzODRmNzNhN2NlNmY1OTc0Mzg5NmExOGIgbGVnYWN5LXRydW5rCiszMjUwOCA1ZjNlOGJjYzhjN2ViY2E2NGJjZjAxNmU2ZDNiN2I3MzljMGVlMjA5IGFzdC1icmFuY2gKKzMyNTA5IGIxYmM5ZTE3MWM2MmU4MjlhZWNjYWY4MDA5OGFjODk3MTk5MzdmODAgcjIzYjEtYnJhbmNoCiszMjUxMCAxZDk3ZjUyYmM4NGZiMGRiYjk1MzNkM2ExNDQ3ZWUwMDU0YzM2NWRlIGFzdC1icmFuY2gKKzMyNTExIDcxZTE5MWI4M2QwNDY1YmNkMTcxNDY3N2M3OGNkZTkwMTdlOTg0ZDcgYXN0LWJyYW5jaAorMzI1MTIgYjg0NjEyMTgyOWJkYjAwN2NmNTQ3NzkyOWY3ZmUzOWRmZGM3Y2U0NyBhc3QtYnJhbmNoCiszMjUxMyBhNjEzMzBhM2Q1OWMyMWNkNjI0OTU3N2YxNjRmMWQwZTQwOTgxMzFhIGxlZ2FjeS10cnVuaworMzI1MTQgZjU1YjU1M2EwYjM0OTk5ZjYwNTA2YTg4ODAxNGI1MWJjMTZlOGIwOCBsZWdhY3ktdHJ1bmsKKzMyNTE1IDYzOTJlODQzNzU4ODgxMzEyMDczNTU4YjZhM2UyZTk2NmI5ZDBkYjIgbGVnYWN5LXRydW5rCiszMjUxNiBjNmQ2YWQ4NjJhOGMzMzExM2VlNzRiMmMzYTQwYjA1ODk5MjExMjcyIGFzdC1icmFuY2gKKzMyNTE3IDY1ZjcyMGZhNjIwMGZkYWZmNDBhZDI5ODAzMTg0MzAzZDI2NjA3YmYgbGVnYWN5LXRydW5rCiszMjUxOCAyNDAwNzFhMmI0NjZlNGYyYTMzZDgyZTkzNDQ5YjdjMzgwNzg1ODc5IGxlZ2FjeS10cnVuaworMzI1MTkgODVmMGU2MDk1NGNhN2IwMDA3NjY2OGMxZmMzNDY2ODVkYzY3ZDVlMyByZWxlYXNlMjItbWFpbnQKKzMyNTIwIDllYjViZTkzNzk5MGE4OTJlNWE3M2FhYjYxOGE2MjFmNTA3OThkMzggbGVnYWN5LXRydW5rCiszMjUyMSAwZjBmNjIzNGYyZmY0ZWZkY2M3M2YzY2E2MzE3ODBhOWIzN2M4ZjdjIGxlZ2FjeS10cnVuaworMzI1MjEgNjdjZTRlZTRhMjlkMWU3Y2UzNTdlZjhkMWMwMGM2OWQ1NTdjMTBiMiBpZGxlZm9yay1tZXJnZS1icmFuY2gKKzMyNTIyIGUyZDI5NTY5OTk2ZDgwZDYwNWRhNjZlMTdiZDQyOTQxZTAzZTFjOTcgbGVnYWN5LXRydW5rCiszMjUyMyAyMzE4YTllMTZhYjBhOWRjOTg4ZGZmZmU3MTU4M2FhM2ZjY2Q3NDczIGlkbGVmb3JrLW1lcmdlLWJyYW5jaAorMzI1MjQgNzVjMWNlZDkzYmI1MmMyYWJjYTA2YmZkMTIxMWU0NzQyODFlMzQzNSBsZWdhY3ktdHJ1bmsKKzMyNTI1IDZjNDE3NTUyZjQ3MzVjMDhjOGRiNTY2MTM0MmVlYWIzYmJjYmRhMDEgaWRsZWZvcmstbWVyZ2UtYnJhbmNoCiszMjUyNiA2ZTk4NjIwNjZlMjk2ZWM4NDg2OGNhN2EwMjAzZDA0NjkzN2Y1YzNiIHIyM2IxLWJyYW5jaAorMzI1MjcgOTk4ODFiNmVhOWY3ZDk4MGIxNDE3NThmMmIwYjg2OWRhNjYzNDg2NCByMjNiMS1icmFuY2gKKzMyNTI4IGEzNDE5NzZmZjQ3NmQ4ZDRjZDExZGEzYmI0MjEwNzUzODVkZWYwMGUgcjIzYjEtYnJhbmNoCiszMjUyOSBiMThkMmYyZGIxOGQwOTBjNjE5MGIzMzMyZTAxNTBhMWE3ZDQzZGQzIHJlbGVhc2UyMi1tYWludAorMzI1MzAgODllMzVjZGJlY2NjMGNmMTkyY2NmOWIyYzhkMGFlZGM2NDA3MTFmZSBsZWdhY3ktdHJ1bmsKKzMyNTMxIDY4NzMzNzliOGQ4YzVhMDcxNTI1YWM1ZTM1Yzg4MzIyNzIzZjBkMmYgcmVsZWFzZTIyLW1haW50CiszMjUzMiBlYTc3NzI3MzJkYTE5YzMxNDdmYmUwZTg5MWRhYWNmMWRlYzNlZDgzIGxlZ2FjeS10cnVuaworMzI1MzMgNDk0ODZjNTQ0YWNkZDU2MTcyYWRkNDZlOGNkMjdiMjA5NGU2YjBkMiBsZWdhY3ktdHJ1bmsKKzMyNTM0IDY3MWU0ZTJlZWM0YmE3M2U4NGE4NTg3Yzg4MmNkMGUxNjhiYWNhMzAgbGVnYWN5LXRydW5rCiszMjUzNSBhZjUzNzI5ZDNjZGQ2NDExOTUyMjU0NzA2Mzk3MDAzMmZjNWFlOTBjIGxlZ2FjeS10cnVuaworMzI1MzYgZTRlYWJlNWIzZGExM2Q0ZmFhM2QyNzFjM2EwMzhlNWFiOWRlN2YyNiBsZWdhY3ktdHJ1bmsKKzMyNTM3IGQzMTY0YTMwNDU5OGIxNGYxNGRhOTNiYTFkYTRhZmU4MGY3ZTU2NTUgbGVnYWN5LXRydW5rCiszMjUzOCA5NmI2Y2M1ZDQwOGI4NGQyNWYxZWYyNjAxYWQ0ZmZlMjAxYWY3NDQ3IGxlZ2FjeS10cnVuaworMzI1MzkgMzlmNGI5N2NlODI4MTlkYzJmMTEwM2EwNWE0N2RkMmQ0M2RmODgxNiBsZWdhY3ktdHJ1bmsKKzMyNTQwIGQ1ZTI5MWYwYWUzOTU1Y2FhN2Q3MDAxYjczMDE4ZWU2OTgyZjU1YzMgbGVnYWN5LXRydW5rCiszMjU0MSAzNWM5MGQ5Y2MzMTM1NzUwNmE4ZDg2NzYyNzZhN2RjNzg0YmI0MDllIGxlZ2FjeS10cnVuaworMzI1NDIgZDMwYTZhNTc0OTc5YzhiNmYxNjVhY2QyYzU4YWFkZTlhMjM1ZTRkZiByMjNiMS1icmFuY2gKKzMyNTQzIGJjMTM1ZDdiN2RmMTZmYjdhYzFkYTA2MDViMGZlOGYzYjE3NDIzOTcgcjIzYjEtYnJhbmNoCiszMjU0NCBlZGRjYjc5MGVkOGQ4YmQ1MWYxOTA3NjY2OWMwYzYzNDIzNjY1NmQ4IGxlZ2FjeS10cnVuaworMzI1NDUgMmQwNjljMTZjOGIyZDE5MTI4NTc3NzY5NDEwNGM0NWI1M2Q5N2EzNSByMjNiMS1icmFuY2gKKzMyNTQ3IGQxY2RlM2RhZjlhOWU2MTY2N2VmNzZmYzk4NGQ4OGY0MjMzOTU3NDYgbGVnYWN5LXRydW5rCiszMjU0OCBmNDIzODAzNjAwMGM0NTU2YzQzOWJkYzE4OTQ3MjYyODEwNzYyNThkIGxlZ2FjeS10cnVuaworMzI1NDkgYjlhMzA3M2Y5MzkyOGMxYjgwMTEyNGJmNDdiNmU4MzU1ODQwZTNlNSBsZWdhY3ktdHJ1bmsKKzMyNTUwIDgxZDM3M2U1ODk4MzhjMzM5ZTAzMmU2ZWMxNzExZDhlYzE2Nzc2ODUgbGVnYWN5LXRydW5rCiszMjU1MSAyMzdmOTdjNzE2OTFiZjNmODQwZjZmY2QyNGNlZTVlNGViODY4NjVhIGxlZ2FjeS10cnVuaworMzI1NTIgMDgxZWY3YjZiZTA0Mzc2ODM3ZmIyNDVhMjcyMmU3ZGI4NzQxYWI5NiBsZWdhY3ktdHJ1bmsKKzMyNTUzIDBlMzVjMTU5NzQxYjU3MWRlNTMxMDZiNWRmNWFlNzA4NzYzNmNlOGMgbGVnYWN5LXRydW5rCiszMjU1NCBhYWIwZGJlM2MwMDgxZmJkODRhOWRmZWRkNmNiMjgxYmE2ODA2MjdiIGxlZ2FjeS10cnVuaworMzI1NTUgMDM5YWIzMWUxMDM0Nzc5NmI0YjgwNjhjYWFjNGYyMjAyYzRhY2E4MSBsZWdhY3ktdHJ1bmsKKzMyNTU2IDQ1MjhjYzBlZGI2ZGE1NGY5NjMwMzMxZjg3ZjllODRmZTVlMzEyZDggbGVnYWN5LXRydW5rCiszMjU1NyAxZDFhODVmMGU1ZTk5OTg1N2MxMDNmNzI4OWYzZGM0OTlkMTIzNzIzIGxlZ2FjeS10cnVuaworMzI1NTggZmE1OTUwZmJlNzM2NzRkNmUwMGM1ZmExOTdlZTNiNzYwNjYxNTNlOCBsZWdhY3ktdHJ1bmsKKzMyNTU5IDFlYWMxYTM1YjM3MDQyOWU2YmY2YTZhMWQzN2VkMmZlYjQyN2U0MDMgbGVnYWN5LXRydW5rCiszMjU2MCBlNGU3MmZhNGM5MTQxMmYzNjI2ODI2ZTMwZTFkZDg3NWUzYTc0NzY4IGxlZ2FjeS10cnVuaworMzI1NjEgY2U5ZTJhZThkNTlkNjY0MTZhZWU5YTNlNTI2YmYzZDc0YmU5OWU5ZiByZWxlYXNlMjItbWFpbnQKKzMyNTYyIDA2YWJmYzljNjhlNzcyN2VmYzBjNzhlNjc3YmY1MWZlYTlhN2ZkMjggbGVnYWN5LXRydW5rCiszMjU2MyA2YTUxZDExZmIxZTkxNWY3NmFkNDhhNDI0YzljM2Y3ZTNhMzEyNzE1IHJlbGVhc2UyMi1tYWludAorMzI1NjQgOTZlZWU3ZDA0ZDg4NDA3ZDczOTY2NmU4NGQ5Y2EzY2IxZWQzYWQwNiBsZWdhY3ktdHJ1bmsKKzMyNTY1IDRlZjEwOGY4MTgxZjMwYzU0ZTU5Mjg2OWYzM2M3OGU4NjVkYTIxODIgbGVnYWN5LXRydW5rCiszMjU2NiBiMDRjMDc0NTg2YWE0MjY2MzRhZTRjMzFkYTRiOTM0MjRmOWEyM2U0IGxlZ2FjeS10cnVuaworMzI1NjcgMzM0NzU2NjE4MjNkMzczZDY1Y2E5MzUxN2MyN2E1N2Q2MmZkYmFjYyBsZWdhY3ktdHJ1bmsKKzMyNTY4IGZhMDA2MzkyODUxODE3YzMwOGZhMjYyZjdmNjE2NDExOTIzNTk0ZmUgbGVnYWN5LXRydW5rCiszMjU2OSAzOWFkNzYxNDMyODhiYTJhYWRjMjljMzU0Y2NlY2IyYmQ0MTY1ODY3IGxlZ2FjeS10cnVuaworMzI1NzAgMTc0MWFmNDhmZDlmM2U2OWZhMzU1OTI4M2NkZTY3ZTZjYTkyMWE3YSBsZWdhY3ktdHJ1bmsKKzMyNTcxIDkyODcyNzg5MTZlM2M1ZjFmMWU3ZDhkM2VhMmY0ZTVjNTU3MTk4ZjggbGVnYWN5LXRydW5rCiszMjU3MiBmMmM3NGNmZWEwNTEyNDc0YWRiMjM2MzhmODhlNTJlNDUzN2NlNDc5IGxlZ2FjeS10cnVuaworMzI1NzMgMDBmYzEzOGQ4NTU2NTg3NzQ5YmI3YTUyNjU4MWY5NGJiN2Y0NzkwNSBsZWdhY3ktdHJ1bmsKKzMyNTc0IDg4OGEzMTE4ZTBkNDIyODhhZWIxNzMyZDVmM2YxN2IyZmQ0ZjllOWQgbGVnYWN5LXRydW5rCiszMjU3NSAxMTQ5NTBlZTlhYTczM2VlMmMwMWZmYzNlYzg4MGI0NTk4NjNkOTE2IGxlZ2FjeS10cnVuaworMzI1NzYgODM1MzMwMTZjMjg5NzE2NWNiNGY3YTY2YWNjMGQ2NjI2YjFiNGE0OSBsZWdhY3ktdHJ1bmsKKzMyNTc3IGIzYjI4NDQzNmMyNGEyMGEzODI5Zjk3MGI2NjdkMzQ0MGY1NTM3YmMgbGVnYWN5LXRydW5rCiszMjU3OCBhNzY5ZTA3OWJiMTJmZjgzZWM5N2VmMzgwNzEzMTE3MzY3N2VkZGNiIGxlZ2FjeS10cnVuaworMzI1NzkgNzgzZGRkZTM3OTJiNjY5NDg2NGU5NDRhZTZkYjE4NGVlOTNmNTY0MiBsZWdhY3ktdHJ1bmsKKzMyNTgwIDBhMTgwZWUyNDczYmQ5OWVjNGNkNmZiZTRhYmYzYTVkOGRiNjNjNzkgbGVnYWN5LXRydW5rCiszMjU4MSBjNzk4ZDI4ZGVlNDZiMTlkMTYxMjYwZTdiNDE0MzBhNDYzZTcwZjg4IGxlZ2FjeS10cnVuaworMzI1ODIgOTJhMWU1ODVhYmY3NjNhYzM1MTY0MmFhMmRiY2JjNmY1MmM1YTc1NyBsZWdhY3ktdHJ1bmsKKzMyNTgzIDE4MDgyYjJkMmViZGYxNWIzZmQzYjlmYjU0N2Q4MDNiZDg3MzM2MzYgbGVnYWN5LXRydW5rCiszMjU4NCBhNDBiNTY3MWE1NjM5MjFkMjlkMDU3ZGZiN2EyMGQ0NWNhZjdmZTJkIGxlZ2FjeS10cnVuaworMzI1ODUgNmEzMTE3ZGY1ZTEzMTI1OWFlNDJmOWUyODAwYTExMTJiOTYwMzNjNiBsZWdhY3ktdHJ1bmsKKzMyNTg2IGQ5MTgyMWQ5ZDQ3MDk2NzJjMGJjNjk1NTFjZjQ0MzRhZTBiMDk2MGQgbGVnYWN5LXRydW5rCiszMjU4NyA5OWNmMzM2OGQ2ODdlYTg5ZTdmYTY3M2M4NDUxNzY2NDUwMDllYTU1IGxlZ2FjeS10cnVuaworMzI1ODggYTExNGVlNzQyNjdjNzMxMzBiNTg3MGQ5NjJiNTI2NjlhZWNhNmNlNSBsZWdhY3ktdHJ1bmsKKzMyNTg5IDJlZWU5NjU1ZDcxYjBmODk2ZDZiYWM5YmVlNzhiMjA3MzYwOTczODkgbGVnYWN5LXRydW5rCiszMjU5MCBjNWYxOGRiMWM5NjYxZDU4MDcyNTMzNjk5NTc4YjJmYmM0ZGZmODVkIGxlZ2FjeS10cnVuaworMzI1OTEgNWQ0ZDRlYmZkMzE3MWU3NTM1Yzk0MTg3Yzg1YzdhODg3YzdjYWQwYiBsZWdhY3ktdHJ1bmsKKzMyNTkyIDQ3NTZmYTUzODU2MDZmYjEyMmY1ZTlhN2QxNjdkOWRmM2Y1NTdmMTkgbGVnYWN5LXRydW5rCiszMjU5MyBmYTA1NzgyNGM5YjRiNDI3ZDA5NGEzOWU1NDgxNjBjYTc0NGViNDJhIGxlZ2FjeS10cnVuaworMzI1OTQgMDVkYTc3MjZjMDI3ZTQ3ZjExMDliMTdjOWI3ZWQ1NGM4MzhlZTBiOCBsZWdhY3ktdHJ1bmsKKzMyNTk1IDM5MzQyOWE2ZmExNmQxZDkwNDg1N2ViNWRhNjA5NjRlNjFhNGViMjAgbGVnYWN5LXRydW5rCiszMjU5NiBlMDU5YThiMTFiOWVjY2IxMDA3MmY3Njk5ZTRlYTQ5ZGVhMzVjMjZiIGxlZ2FjeS10cnVuaworMzI1OTcgZmFmMmNiNTA3MGI0YzhkMTNiN2FjNTlhNWY5OGNmNzQxNmJmMmY0YyBsZWdhY3ktdHJ1bmsKKzMyNTk4IDAwMWE5MDU1NTc4MDhhMTVlODQzOWI1ODNjMWZlYzY5ODlhZTcyZjkgbGVnYWN5LXRydW5rCiszMjU5OSBkYmRlYjczNGZmOTc5OWRhODE2YzU5MzZjNWM0MzZjNDMxZmRhYzExIGxlZ2FjeS10cnVuaworMzI2MDAgOGRmODk3ZjE0ZmI4NjAyNmYzNDQ3OWIyZTA5NjljODBmNGJjNGRiZCBsZWdhY3ktdHJ1bmsKKzMyNjAxIDMzNTk4ZThlNDliMjBiYTRiNWE3OTlkMmExYmMyODIwMmI5ODM4ODIgbGVnYWN5LXRydW5rCiszMjYwMiBhYzQ4N2E3ZjdmMmM3NzA5NzU3OGJlZDFjOGI4OWZjYzdjM2E1NDYwIGxlZ2FjeS10cnVuaworMzI2MDMgM2E5ZjVmMGM1MTJlYjQ5ODBlYzFhYzgwOWZhZjY2NzRhZmVkNTZiMCBsZWdhY3ktdHJ1bmsKKzMyNjA0IDE5NjQwMTJmNmZiMGQyM2JmOGQ3YmEzOTliYjVlODU3NGEyNjFjMjAgbGVnYWN5LXRydW5rCiszMjYwNSA2YzRhMDRjZTk2NWMyNThmM2E5YmIwZjk0ZDkxZWMwY2FkN2I5NWVjIGxlZ2FjeS10cnVuaworMzI2MDYgMDk0MjJjMzAxODI2NWI4NWE4MGYwMDg5M2UxNmEyN2Q1ZTM2YzlhNCBsZWdhY3ktdHJ1bmsKKzMyNjA3IDlkNWE3NTkxNjk3MTA5NTgwYzU4ZGVmNjJjOTE3ZTA3ZTY1MWUxNWMgbGVnYWN5LXRydW5rCiszMjYwOCAxNzYzZDlkM2ZkOWRmZWVjZDZkNmUyN2JkYjU2N2ZhMTRjODZiZTljIGxlZ2FjeS10cnVuaworMzI2MDkgOWI0ZmY0YmYwMzNiODE2NDc4MjZhZWU5ZmNiMTdjN2UxMjU2Y2Y1YSByZWxlYXNlMjItbWFpbnQKKzMyNjEwIGJhZWEzMThiZTQ5OWNkZmM0OWI1NTdhZGQxMWNlODM5OGI5NDMyZDEgbGVnYWN5LXRydW5rCiszMjYxMSAyNWIyMjE4ZGEwOWI1OWY5NmI4OTZlZTZiNDEwYTY4YTI4MDAxMTk3IGxlZ2FjeS10cnVuaworMzI2MTIgMzVhNGQ3NGI1YjhlZDk5YmQxNzA1MWYwOTdkYjE5MjNjNjYxNmI5ZCBsZWdhY3ktdHJ1bmsKKzMyNjEzIDZjYTk0YWViMjkyYWM0Nzc5YTMwZjc2YmJhZGMzNWU2MDc5MmE4NjkgbGVnYWN5LXRydW5rCiszMjYxNCBhYzI5MDE1ZmY2YTgxZWYwNDE4ZGExOTZkODU5ZGI0ZjkzODBjOWY5IGxlZ2FjeS10cnVuaworMzI2MTUgMTg5ZmRhZThmNDkyYmY2Y2VkM2Q1YWUwYjE0YTMyYzI5ZjRhNjUxMyBsZWdhY3ktdHJ1bmsKKzMyNjE2IDI1ZTY2MGU3MGRjZDA2MWU5OTgyYjAzNzhhYmYzNmYwMzY3YzBhYTIgbGVnYWN5LXRydW5rCiszMjYxNyAyZTk5NTZkMDFkZTMzMmY3ZDEyZjIxODRlYjBlOTFhNjU0NzAyMzZjIGxlZ2FjeS10cnVuaworMzI2MTggNGJhNzYzYmM1YTU2MGRjNTdkZDE4MGIyZDc1ZDU2ZTk2YjU3Yjc4MiBsZWdhY3ktdHJ1bmsKKzMyNjE5IDM1MGVlMzFhYWIwYzAyNDI0NzNkNTBhYzkwZmUzM2ZhZmUwNGFmZWMgbGVnYWN5LXRydW5rCiszMjYyMCA5OTU5ZDhmYTRkZGYwZjhjMDQwOTYwZWYxMGFjY2U2Y2M5YWFlMGVkIGxlZ2FjeS10cnVuaworMzI2MjEgYjE3NGQwOTI3ZjBlMjU3OTQ5YzljMTNiZmY3ZjQzNWMyYzA0NTM3YiBsZWdhY3ktdHJ1bmsKKzMyNjIyIGM5YzZiYTc5NTJhODIyN2FhOGQzYjJiOTI1OWJkYWJkZWFlYzk2MmUgbGVnYWN5LXRydW5rCiszMjYyMyA5ZjkwMjJjMjEwNTYyMzQ5ZjQ3MDE4NzUxODkzNjVlNjdiNjQ0MWUwIGxlZ2FjeS10cnVuaworMzI2MjQgNjViZjY5ZjdjMTQ4OWQ4ODQ4YWIyNDZiZTNiYzVhZDI2NGRhYWViYiBsZWdhY3ktdHJ1bmsKKzMyNjI1IGM5MjQxMmQ2MzRiMTBiMzAwMjg4N2Y0MjM1MGM4ODRhM2YyZTAyODYgcmVsZWFzZTIyLW1haW50CiszMjYyNiA2OGYwNDJmYWZiN2RkMDliZGZjMjZmYjM0NmZlNDY0Y2M1ZTBlMGQ2IGxlZ2FjeS10cnVuaworMzI2MjcgYmIxNzcwOWEzN2EzYWMwNzQ5ZWMxMmE0MTAxNzQwMWNiMjFiMWIyZiByZWxlYXNlMjItbWFpbnQKKzMyNjI4IDNlODhjZmYwNTgyMmYyYzFiNThhNWNjMDc0OGZiY2Y5OGI5MWUzZjEgbGVnYWN5LXRydW5rCiszMjYyOSA0YmY4NjUxOGQ5YWU1MDE4MjA3MGY1ZWNmMDA4ODAzZTU3Y2M1NDQyIGxlZ2FjeS10cnVuaworMzI2MzAgNGMxMzkxNjg2NDhjNmFkZTNjMzAxYWE4ODljMjk2OTczMzQzMGU0ZSBsZWdhY3ktdHJ1bmsKKzMyNjMxIDgzZmUwZjVjOTM1OTdjYzZjMTZhNTZhMDMyMWU4MjZmYzU2MWJkNTEgbGVnYWN5LXRydW5rCiszMjYzMiBjZmNjNDVmMTg1MTVhMGRhN2VlZGFhOTNiYjY2ZTdmMGQ1MjJlZDQwIGxlZ2FjeS10cnVuaworMzI2MzMgNTg5MmMxZTUxNWI0ZGE5ZTEwNzQ5NTc5NTQzNjZmNDY0NjQ4YTEwNSBsZWdhY3ktdHJ1bmsKKzMyNjM0IDgxNWZmMGFiMjRlNzI4YzFjYjZkYzAwOTNkYmMxMzM3M2MyYzkxMDggbGVnYWN5LXRydW5rCiszMjYzNSAzMTJmMTE4NmFhMzk0NTgxYjViMTQ1MDE3NDVhMmQwNDFmODM1MzU4IGxlZ2FjeS10cnVuaworMzI2MzYgYTVkZDU3NDdjZGZlMjY4ZDRhNTZjNWYxYmY2MTkzZTkxZTk4ZTQ5NyBsZWdhY3ktdHJ1bmsKKzMyNjM3IDE3YmZhNzg2MDc1YWRjYjMwMTA4ODZlNGMwNDI4MWU1YjQ3YTgzY2IgbGVnYWN5LXRydW5rCiszMjYzOCBiNTRhODRkMjljMDAwMTZkZWE4YmZmMjAzNThjOTU4MWJjZDMwOGQ0IGxlZ2FjeS10cnVuaworMzI2MzkgNDEzODhlODQyNjFiMjQyYTYyYmZkMDUwNGE4MTIxZDMzMDljZWM1YyBsZWdhY3ktdHJ1bmsKKzMyNjQwIDIyMmMzZDJmZTQzMWIxMzcyYmM5NzAwOWYyNzhkNjNkYTEwNzgwNjUgbGVnYWN5LXRydW5rCiszMjY0MSA4MmZlM2E5YWMzNzFkNDM0NmFjZjZlZmVhZjY0N2RiYzczNjQ1MmEyIGxlZ2FjeS10cnVuaworMzI2NDIgNjFkM2Y4ZTY2ZDhmYzA2MDA4ZGQ3OTU0MGViMjVhMzg0YWVlMTE4ZCBsZWdhY3ktdHJ1bmsKKzMyNjQzIDQ5M2ZkN2U1MjIwNmExYWU1YTA0NDEwN2MxNjQ1NTA1NDk4OGFjNWQgbGVnYWN5LXRydW5rCiszMjY0NCBjZTZjM2NjNDIyYWI1MTYyODQ2YWJkYjRmZmViMjY0ZjIxN2U0YTlhIGxlZ2FjeS10cnVuaworMzI2NDUgYjM3MDJiNjgzZjJhZDJiZTZiMjBhYzdjZWEyZTE3Njk3Y2M1NGUxNiBsZWdhY3ktdHJ1bmsKKzMyNjQ2IGYxZmNhYzRjYWJhZDg2ZmNhOTEwMGMwNzMxYTFjOWU3OTAyNzNmODQgbGVnYWN5LXRydW5rCiszMjY0NyBkNTQ2MTBmNGYyNjFkY2I5ZTE2OTQ2YWZjOTFiNWE4Mjg1ZDM5YzIyIGxlZ2FjeS10cnVuaworMzI2NDggNmIwN2YzNjljZjAzZGFkODQyNmNmNWQ3YjAyMzM3MjAxMGZmMTk2NSBsZWdhY3ktdHJ1bmsKKzMyNjQ5IDM4MGE5YTVhZmFhMGJkYjJmNWY2OGNhZDk5NzAyYTRkNmExNDhjMDIgbGVnYWN5LXRydW5rCiszMjY1MCBlZDRiMDk4YzdiY2ExZDk4YWY1YmY2NmE0YTk1ZGJmMDY0Y2RmZDRmIGxlZ2FjeS10cnVuaworMzI2NTEgNmZjYTZlMDdjMmZhOWE2ZjVhNmEzMzkxYjg4YTliNTYzOTRiMDdjYyBsZWdhY3ktdHJ1bmsKKzMyNjUyIGUxMDdjOTIxYjhmMzMxMTYyMWFmNjVkNzMxZGEyYTVjOGFiMzAwZjMgbGVnYWN5LXRydW5rCiszMjY1MyA1MDk1Mzc4Mzk0MjQ2YWZmYjAyNzRhN2YyN2JkYzBmNzljNjM0ZTQ2IGxlZ2FjeS10cnVuaworMzI2NTQgNmM0MGI3M2M3MDQ1N2VmYmNlMTY4ZjljZDU3MzA4MThmNzUwMThjOCBsZWdhY3ktdHJ1bmsKKzMyNjU1IDUwODQxODk4Y2MxOWMwYWMzNTdkNTAxZjIwNjE0NzQ3ZWRkYTFiOWIgbGVnYWN5LXRydW5rCiszMjY1NiAwMTNkOTVjMzQ2ZDIzNTU0MzJlOGQxN2M2ZjU2M2MwNjM2YTM1NTNhIGxlZ2FjeS10cnVuaworMzI2NTcgYTA3ZGVmMGRjNzg1MWVhNDhjNWIxNmQ0YTkyZmNlODc3N2U0OWNiOCBsZWdhY3ktdHJ1bmsKKzMyNjU4IDMwNTVjOWJkZmY1ZjUxMTlhNjAyOGRkYzZjZGI3NjMwNmNlMjJkZjggbGVnYWN5LXRydW5rCiszMjY1OSBmOWU2ZjlmYjhkZjBjNWYyMDUyNDBkZGFiYzE3ZDdhN2Q4ZDJmMTNkIGxlZ2FjeS10cnVuaworMzI2NjAgYTNiMjYxMGI1MDQxYTkyYWFlN2QyNTFjZDVmYWZlY2RhOGIwY2M0NyBsZWdhY3ktdHJ1bmsKKzMyNjYxIGMyN2E2NGIzODc2MjdmMWJiZGRhNDMyZmQ1ZTYxNGNmMTMxZjQzYzUgbGVnYWN5LXRydW5rCiszMjY2MiBkMmFmYTAwYzIwZTNjNGZlNzI1MjBmYTRmN2E5ODcxNjc0N2EwZjRkIGxlZ2FjeS10cnVuaworMzI2NjMgOWI3MTY0Y2MwYzkyNjZlZDZlMjFjNWQzN2YxMTIyZTVlMjg5YzYyMSBsZWdhY3ktdHJ1bmsKKzMyNjY0IDA0NjEzMTYxYTMyYjZiYWZmYWMwNmYxNzNlZDA2NmM3OGMxYWU5ZjEgbGVnYWN5LXRydW5rCiszMjY2NSBlNjk2ODg4NmE5N2RhMTkwZjg1ZDEyOWIxZmNiYTkwZTk0Njg5OTYyIHJlbGVhc2UyMi1tYWludAorMzI2NjYgMTU3YTI5ZTE5ZWI5ZWM3OGMyNWEzMDlkMzVlNWM2YjMwNmMwMzdjNCBsZWdhY3ktdHJ1bmsKKzMyNjY3IDA2N2E5ODIzMjlhY2MzMzg2YTgwN2IzNjA3MmRhMTIzNjc3MmYxMzAgbGVnYWN5LXRydW5rCiszMjY2OCBlZWVkYWM0OWU4NmIzODhmYjIzYzE1MTM1NzE3MTZkNzRhNTc1N2UyIHJlbGVhc2UyMi1tYWludAorMzI2NjkgMTA5ODEwYTFhZGE4NjA2ZjI4MDMwYjNjZDc0MzlkM2NkNzg3ZWFlMCBsZWdhY3ktdHJ1bmsKKzMyNjcwIGQ0ZjY1NDRmNzlhY2U0NDFkYTdlYjc0N2RjNjdhMzMxYzliMzg2NTIgbGVnYWN5LXRydW5rCiszMjY3MSAxM2Q4ZjI5NzM3ZTVkZTI2ODI3NjZiZGJlZmE1ZmYyMTdjNTQyYzg2IGxlZ2FjeS10cnVuaworMzI2NzIgZGMzZjNmMzAzOGE4Y2ZhOTRmMThhZTJhZmE1Mjc3MTM5ZGJlMWVlNCBsZWdhY3ktdHJ1bmsKKzMyNjczIDA4OWYyNDIxZWIxOGEwYmFhODI0ZTg5NzI4YjBmYWNhNGYwMTM1NWYgbGVnYWN5LXRydW5rCiszMjY3NCAyZjY1MmE1OWViYjAxZjgyZGYzMWVlNzc1MjFjMWNhOTUxNDcyMmViIGxlZ2FjeS10cnVuaworMzI2NzUgMmY3NDNkZThjNWUyYTJiZjczYzdkMTQwYTI2ODFkOGNhNzg2YzMzYSBsZWdhY3ktdHJ1bmsKKzMyNjc2IGNiODMyYzJjZDU0ZDRhYTc5NzczNmE1YWI1ODYyMzFjYjY3Zjk5MmIgbGVnYWN5LXRydW5rCiszMjY3NyAzZjcwZDc1Y2QyOGRhY2JjNGM2MzQ4NDY4OTE5ZmU3MmVhM2UzZGZlIGxlZ2FjeS10cnVuaworMzI2NzggNGRlMDJmMThhNDFiNDJlYmFlY2I3NjRmZTQyMDIwNWJhMTc2NDc4MCBsZWdhY3ktdHJ1bmsKKzMyNjc5IDU3NGI5NTUxY2ZjOWU2MTlmYmUxNTMzNDQwMmZlYWUwMDM3M2JlZWYgbGVnYWN5LXRydW5rCiszMjY4MCA2YmJhNDhkMWNlM2JiMDY5N2I4ZWQ3ZDBlOGMzNjhmMWNjYWQ2M2M2IGxlZ2FjeS10cnVuaworMzI2ODEgMWMyZTYwM2ZlZTAyMzBlZDc1ZjY4Yjc4NzZhY2JlMmQ1M2I3ZDYyOSBsZWdhY3ktdHJ1bmsKKzMyNjgyIDRhZWFjYWRlNjYwMDliMTg2ZmI3MTliM2IwZmJlNDMwYjVhNTVlNTYgbGVnYWN5LXRydW5rCiszMjY4NCBkNWU0ODczNjJkM2FkZDQ5NjUwNTZkZGYyMmMwNmZkZDY5NTVjYjI4IHJlbGVhc2UyMi1tYWludAorMzI2ODUgZmIxMTdkN2Y1OTUwYzY0YjRlY2MwMjU3OGVmNTcwMDk4ZGZmMWU3YSBsZWdhY3ktdHJ1bmsKKzMyNjg2IDNmMjE0YzI2NGY2M2Q1YmM0MDA2NDcyM2Y1NDE2YTVmZmFlMGI3MjEgbGVnYWN5LXRydW5rCiszMjY4NyAxM2RiNWI3ZGUwZGRlNzUyM2VhMTVhNDA2NzczZjU2OGNlMDFhZjY4IGxlZ2FjeS10cnVuaworMzI2ODggNjU2NDkzNTM0Y2M3NzY2YWE2MWY2OTcyMzY0MjZjNzNmYWJiYmE3MyBsZWdhY3ktdHJ1bmsKKzMyNjg5IGUxZDVjYThhYjdkYzgyYzcyNjM5ODIxMTkzOGEyN2I3MmI1ZWI2ZjQgbGVnYWN5LXRydW5rCiszMjY5MCBjY2Y3ZTEzOGExMjZkZDMwZmNmMmM2MGY2MmEzN2ZhNjAwNzUxYmJhIGxlZ2FjeS10cnVuaworMzI2OTEgZGI5MDg0M2IwMGZjZGI4MzQyOGQ5NDllMzdiMGIzYTQwZGQ0OTMxMSBsZWdhY3ktdHJ1bmsKKzMyNjkyIGQzYzFhMDNhNTEzMDg5MDRmMzUzODliMmI3YzRmNzBmMTNiYzM2NjkgbGVnYWN5LXRydW5rCiszMjY5MyA1OWIxYjNlMmEyM2I1ZTk0YzAyN2FkOThmNzIxNGVkNTMyNzcwMjFiIGxlZ2FjeS10cnVuaworMzI2OTQgZWZmODZjZjhmM2JiM2U3ZWRiZTBiNDhjYjkyMzI5MGM4MzIxNjRlYSBsZWdhY3ktdHJ1bmsKKzMyNjk1IDgxMDg4ZGYwYjFkZjM2NDBlODliNGQ1Y2Q5NjQ1ZjNiZDgyZjlmZDEgbGVnYWN5LXRydW5rCiszMjY5NiAwNTU5ODc3YWRhNWNmMzA5YTYwM2RjZDk0NjU4NWYyOGMzOWYxMDI0IGxlZ2FjeS10cnVuaworMzI2OTcgOGU3OWRjMzczMWJmZmMyNmI5Y2E4ZGEzNmEwMzM1MzUzZjlmYTlhMiBsZWdhY3ktdHJ1bmsKKzMyNjk4IDQzMDAyMjMzY2MyY2RhMDE0M2Q5NGE2MzE4N2ZiYzE5NGE2MjYzYTQgbGVnYWN5LXRydW5rCiszMjY5OSBkZTU2NGE4NzMzZDIyNzUzZmU4MzA5MmQyYmVkZDdkNDRlMmZkNDQyIGxlZ2FjeS10cnVuaworMzI3MDAgNThjOGUyODQ1MWE5NzdlMGZhNGE2NzEwYzNhMzUyYjRjMjlmNGE4MCBsZWdhY3ktdHJ1bmsKKzMyNzAxIGQwNmFkYjVhM2NjOTZkZmZlM2JiOTBhOTk2NzliYmE0ZDdmZDc1NmIgbGVnYWN5LXRydW5rCiszMjcwMiA1NGYxZmZhMzc0MjllYWM3YTUwMTk4YzE1OWZjYWU5ZDk3N2Q3YmNlIGxlZ2FjeS10cnVuaworMzI3MDMgMDY0NDE5NzczOTU2YjcwOThiZDRjMzk3MzE4YzI3ZGFhN2FlYWI2MSBsZWdhY3ktdHJ1bmsKKzMyNzA0IGYyNzhiMjdlZjEwNWQzNGVmNDQ2YTQwZGZhMGJhY2Q2MzUxODI0ZTkgbGVnYWN5LXRydW5rCiszMjcwNSA3NzUwYjg0NjJhOGZjNDA4NmY3Zjk3ZTNmOGQ1NGU1NzA3N2ExMmRmIGxlZ2FjeS10cnVuaworMzI3MDYgMTQzZmZmOGQyMTg5OWQwOTNmZmM4NjJlMjhiYWE3MjEyYmRkZjcxYSBsZWdhY3ktdHJ1bmsKKzMyNzA3IGNmZmI1MTdmNGUxNWY5ZDZjODUwYzdjZTRkZjY2ODVmYjI0ODM5OGMgbGVnYWN5LXRydW5rCiszMjcwOCAyYjBjMGJkYTVjY2E3YjZlYTczNTMxNWVkZjBlZGZlM2VlY2I2YzcwIGxlZ2FjeS10cnVuaworMzI3MDkgNmRjODJkY2Y1NTg5MjYwMmQyNGZiODNkNzdhYmRkM2U1M2I1NzJiZiBsZWdhY3ktdHJ1bmsKKzMyNzEwIDQ1YmZhNmQ1OTFmN2NhNGE1MmFkNDk3MDBiMDI2OWMxNjdjMThjOTIgbGVnYWN5LXRydW5rCiszMjcxMSBiYWU2N2U0MTRhMTNhNDJmMDlkZWZjNjc1M2NmYTBlMDNjMzMwNGIwIHJlbGVhc2UyMi1tYWludAorMzI3MTIgZTA5Mzk5ZTNiMmMwOTBkZjQ5ZWMzYmRhNjRjNDUwMTRkYWJjN2Q5NiBsZWdhY3ktdHJ1bmsKKzMyNzEzIDkyZWJkM2RhZjUwNzJlZjMxYWI1ZGI1ZmQ2Nzk2ZDk4OGUzOGMzMjggbGVnYWN5LXRydW5rCiszMjcxNCA5ODM1YjQxMTMzYWMwNmU2OTY4YWUyNWQ4YWU0ZmRiZTk0MWY2YjJjIGxlZ2FjeS10cnVuaworMzI3MTUgMWJhYmJiNDkxOWE3ZjE3ZDJmZGJlOWFmNzAzYWE2NDUwMjY5OGZjMyBsZWdhY3ktdHJ1bmsKKzMyNzE2IGMwMTlhYTgyN2Y4NjA1Njk3NmQyOTEwMGVlMDAyODFmN2YyZDkzODMgbGVnYWN5LXRydW5rCiszMjcxNyBhYjdkYzUzOGY2ZjcyZDI4YTIxYjkyZWVjMDQ2YzU1ODczYjBiMWE0IGxlZ2FjeS10cnVuaworMzI3MTggOGU5MmYyZTJiZGE5ZjViMGMwZmIwYjhlMDUwZWEzMjk1Njk4ZWQ4YyBsZWdhY3ktdHJ1bmsKKzMyNzE5IGJmMTYzNGIwMjNkNWFlY2ViODQ4ZDlhNzE3YTIzOGU4YmE5YWI4NDcgbGVnYWN5LXRydW5rCiszMjcyMCA5MDM0MmYzOTU3MjFkZjY0ZTE5MGM2ZWQ4MWY5NTZmNWNkNGY1MTk5IGxlZ2FjeS10cnVuaworMzI3MjEgMDQwNjVjNGExYzZiNWFmZTUzOThhMDlhOTEzZTAzNjdiZWU5NzA0OSBsZWdhY3ktdHJ1bmsKKzMyNzIyIDFjODQ4ZTlmNjE2NjIzMWMwN2VjZGFmODUxNDBjYzMyODAzZjk2N2EgbGVnYWN5LXRydW5rCiszMjcyMyA1NjQ4OTcwYzY2NWYxN2YzOGQ4OGVlMjhiNTMyZWIzZmQ3Yzk5Y2Q0IGxlZ2FjeS10cnVuaworMzI3MjQgYjEwYTdmYWNjMWU4ODZkZTg0MjMyOWMxYmMzYTYzZmUxNGZiY2FkNyBsZWdhY3ktdHJ1bmsKKzMyNzI1IDg1ZjFhOTRhZjM3NDIyNmY0OTQ0MDk0MGU2MGY1Y2NiYjRiN2U2YTcgbGVnYWN5LXRydW5rCiszMjcyNiBjZDQ4OTAzZTQxYmVmY2RlMTYxNjY3ZjZhYjNmMTcwODNjZDZkYjU2IGxlZ2FjeS10cnVuaworMzI3MjcgYzRlOGM2NzIxZTQ1NjY1M2FkMTdjYjhhZDZiYmVkMDBkYjBlZjEyZSBsZWdhY3ktdHJ1bmsKKzMyNzI4IDk4OGIzZTgwNzA0MzZkZTIzYjU2NzY2OWNmODQ4NzA2NTJjZGNlODYgbGVnYWN5LXRydW5rCiszMjcyOSAzNWEwOWRjODA4NGM5ZDBhZWY5MjI5MTRhNTMxMTIwYmYwMzk5MzMxIGxlZ2FjeS10cnVuaworMzI3MzAgYWQ4NGZlNThlYzJmOGFkNzdiNjQ0YTkxOGM5M2E0YTk2NTJkZDljMyBsZWdhY3ktdHJ1bmsKKzMyNzMxIDc1NGM0MWJjYzgxYTJjODEzYWNlNTgwYTJlY2FlMmNlZWQ0ODg1OGIgbGVnYWN5LXRydW5rCiszMjczMiA3OGVmYmFkNTNkZDg2Yjc3YmEzOWY3OGE5NzhhZDViNTNlOTIzMDMyIGxlZ2FjeS10cnVuaworMzI3MzMgZjU3NzUxZmZkNmU3OGFiZWNjZmRhM2U2NWEwNTU4YzIwNDY0MjE1YiBsZWdhY3ktdHJ1bmsKKzMyNzM0IDQzN2JjZDUyY2MwNDVjZjYzNjYwY2JkYThmMDk1NzA2NTNiY2YzODYgbGVnYWN5LXRydW5rCiszMjczNSBmZjEzNmZlZjcyMzFjNDdmNDRmMDIxZTVkMGI2YzVlMjEzOWQ0YmJkIGxlZ2FjeS10cnVuaworMzI3MzYgNTQwYTc3MjAyOGQyNmE1MzljNGNiYzNkMGUzN2FkZGE1ZjkyMmM0YSByZWxlYXNlMjItbWFpbnQKKzMyNzM3IDcwN2U1Zjg5YzIxMWIwZDVlZjFlZmFiNmFhNWZiYmZkNjI1MjJhNDcgbGVnYWN5LXRydW5rCiszMjczOCBjZTFkN2UxMGY0OWU5ZDBjYTY2MzJhZTJmY2IyYTMwYzQ4ZjkwYjlmIGxlZ2FjeS10cnVuaworMzI3MzkgNWEwYmI2ZWFhNzc2MTg4MGE5ZDExYTQ5ODY1MTQ2YjE2YTUwOTg4YyBsZWdhY3ktdHJ1bmsKKzMyNzQwIDQzMmFkZDg0ZTA2MmRjYTk3YmNiZTcwMWI5YWU5ZTVmYWVjODFhYmMgbGVnYWN5LXRydW5rCiszMjc0MSA1MjZmMzdmYjM4MGQ4NjQ3MDRmNDVhMjhmYjBlODE2NGFjMjhlYzUxIGxlZ2FjeS10cnVuaworMzI3NDIgNGIyZTA1YzE3NTRlNmQzMzRiNzBiMjFiMTY5Mzc4NThhMTFkNGQ2NSByZWxlYXNlMjItbWFpbnQKKzMyNzQzIGE1NzFhOWQ2MjU3YTJhZDFhZDA1N2UxMzU0YmYzMWUzNjJiNmYyY2YgbGVnYWN5LXRydW5rCiszMjc0NCA1YmY5NjE4NmRiMzFjNTM5ODJlNDI4Mjk0MmE5ZTkyMWUxZDU1NjYzIGxlZ2FjeS10cnVuaworMzI3NDUgMjIwNjAwMDRiOTRhZWVmYTA4YTU5NTk2ZTExZjIwYWNkYWQxY2ExMyBsZWdhY3ktdHJ1bmsKKzMyNzQ2IDRhZTNjMmQ5ODg5MGJkODk3NDYxZGNiODdiNThmYTAwYzg2NzY5NDQgbGVnYWN5LXRydW5rCiszMjc0NyBhMWQ1NjMxOWVmMGViMzg0MDczMTNlMzQwOGIyMjhhMTY3ZTZjNDg4IGxlZ2FjeS10cnVuaworMzI3NDggMjJiODkwZDE1N2Y3ZGIxYjY2ZmMzYjViNzlmOGY3Nzc1YjNhNjAzYiBsZWdhY3ktdHJ1bmsKKzMyNzQ5IGM1ZTk2NTVlYmVkNzJiOTBlZDUyZmI3ZDRiYjY4ODI4OWMzZGM5OWUgbGVnYWN5LXRydW5rCiszMjc1MCAzY2Q1YWVjNTllZDIzZGE1ZWM2NGQ0MDE3NjE4ZmVhNzhhYjJiZTZkIGxlZ2FjeS10cnVuaworMzI3NTEgZThiNTcwOTA1MmUyNWEyZDAxMGZiZWQ1MDViMzlkYWYyZWM1MTA3ZCBsZWdhY3ktdHJ1bmsKKzMyNzUyIDI0ODA5NmE0NTczMmMxYTA1MTUzNTczMGY0NGUxMDkxNTRhODQzYmEgbGVnYWN5LXRydW5rCiszMjc1MyA1Y2U2Mjk2NDIxNTU5ZTFkNjJiMGVhYzhkYmIyYmRhOWEwNmE4NmVmIGxlZ2FjeS10cnVuaworMzI3NTQgMzRkNjNiOGMyNzViYjljMzA0MDdkNTVmZGI5YzdiOWEwM2ZlYmE2YyBsZWdhY3ktdHJ1bmsKKzMyNzU1IDMyZTcwYWQ3OWY2NmQwY2Y4N2I0OGZiMjM1NTA1YmIyMWY2NWQ3ZDUgbGVnYWN5LXRydW5rCiszMjc1NiA3YTFhZTQ3NWUwZGFkNWZmYTliOGU2ZDRmOTk0ZmFiZDY0Y2I3YjQ4IGxlZ2FjeS10cnVuaworMzI3NTcgNjRhOWUxYmUzMjUxM2Q1ODlmYTQwMThkNTQ2M2YxMTM0MTY4ODU1YiBsZWdhY3ktdHJ1bmsKKzMyNzU4IGE1ZTk5ZTdlN2ZmMDMzZGI4NWM1ZWNjYjVjYzgxMjRhMmQxMzZmNDQgbGVnYWN5LXRydW5rCiszMjc1OSAxOWM0MTQxODZiOWU1MDViMTcyNWY4MDdhMTFlMGZhYTcxNGY5MWU4IGxlZ2FjeS10cnVuaworMzI3NjAgOTFkZTNhMDkyNGEyOThhZDk1MjhiNGYzNTRhZDI4OTY4NWUwMWNmNSBsZWdhY3ktdHJ1bmsKKzMyNzYxIDkzYzkyZjIwYjZiZmI2ZGQwMjU2MzA1ZmMzMmNlODA4Nzk1MGU2NWEgbGVnYWN5LXRydW5rCiszMjc2MiBjYjAwMjU0NTE0ODJiYzM2N2JhZTNhOWUwMGU4MDhlNDE1MWY5ZjE4IGxlZ2FjeS10cnVuaworMzI3NjMgYzA2YmY2YjJiMTlkOTAyY2Y4YWI5ZWZhZWUxYzJiYWU5MWFiNzg3NyBsZWdhY3ktdHJ1bmsKKzMyNzY0IGQ2YmE4MTlhMmY5MDEzYjU4YWViODUxZmU3YzFhOTkyNGI0NGZlMGYgbGVnYWN5LXRydW5rCiszMjc2NSBmNGQ0MDZhY2YxY2EwYmQ1NGRiOGQ3OGYzYmVjY2E3NDNhOGVkNjE5IGxlZ2FjeS10cnVuaworMzI3NjYgODU0MDYwNDVmMDE0ZGQ5ZGRlMjg1ZTU4NzIyYzIzNjg3ZmE0MDdkOSBsZWdhY3ktdHJ1bmsKKzMyNzY3IDUyMzcyZGMxOTBmY2ZiZmEwNzVlNzU0NTJjYWMzYzBlNjU4ODhjNmMgbGVnYWN5LXRydW5rCiszMjc2OCA0YjAyMjAyNjBmNjJlMWY0YjY0OTQwYTljZWU1YzI4NjQ1MTk0NGZmIGxlZ2FjeS10cnVuaworMzI3NjkgNGY4N2E4NGU5YmViYjI5ZmIwZGQ4NzZmZDc5YzU0YmMwMDNlMDdjYyBsZWdhY3ktdHJ1bmsKKzMyNzcwIDI0Nzg2YzMxMzBjYTg3NmRjNGE1OWNlZGNhODk2OTgzZjU5ODVhYjcgbGVnYWN5LXRydW5rCiszMjc3MSA2YWMwYTY3MmIwODIxM2ZlZTcwODU4OTc0MGI2MThmZmZlOTQxZDg2IGxlZ2FjeS10cnVuaworMzI3NzIgZDdhYzFhNjQwZDhmOWMwMGNhNjIyMjRkZmJlYTg2MzVjYzAxN2VlOCBsZWdhY3ktdHJ1bmsKKzMyNzczIDc4NzVmY2FhZTdhMzcxMmYxZTRiZmY4ZTM3OGViZGY3MWYxOGI5Y2UgbGVnYWN5LXRydW5rCiszMjc3NCBhZGRkNDM3YmU3NDkyMTYyN2RjYTk4OTM2NWE2NzIzNjMxNjAxOThjIGxlZ2FjeS10cnVuaworMzI3NzUgMjlmMTk0NjBmMDY3ODU1YzZkYWQ3NGE1MmU4MGQ5Mjg0OWVmMDhkNiBsZWdhY3ktdHJ1bmsKKzMyNzc2IGM3ZGZkYTk5M2IyZmFlZGEzMmMwNzllYjE2OTJlYWM0NGI3NDllNWUgbGVnYWN5LXRydW5rCiszMjc3NyBjZmY2YjhmNDIyZDE3YTY2MGNhMjE3NWQxNzFkYjhhOTJmYzkxOWI5IGxlZ2FjeS10cnVuaworMzI3NzggN2Y1OWRjZThmOGMwZDQyNDkxMzFhMDI4ZGI5N2RiZjI0MzRiY2ZlNCBsZWdhY3ktdHJ1bmsKKzMyNzc5IDkyZTUzYzhlN2E3MjQzYjIxNDNmYTg3YWNkZWUzMTcwYmEzYWFjNzkgbGVnYWN5LXRydW5rCiszMjc4MCA2ZDkzMzMwNzc2MWMwMTU1OWY5YzBhNDIwYjZiOGEwNmUxZDIxODdmIGxlZ2FjeS10cnVuaworMzI3ODEgZTY2OTFjZTkxYjlmZDllNTk4OTdmNGRlZDI1YWYxYzA0ZGQwMDYwNSByZWxlYXNlMjItbWFpbnQKKzMyNzgyIDUyYWViYzE0MDA2ODdkMzQ2NjhhZmZlOWM0NzY1ODk1ZDg4MjYxNGMgbGVnYWN5LXRydW5rCiszMjc4MyBjZjMzODYzM2IwNzQ2YzBhZWJjZmEwMTU2YjBhNzg3ZDA5OTYxYTgzIGxlZ2FjeS10cnVuaworMzI3ODQgNGNiZjc3ZWRlZWQ1Mjc5MmIxMTczMzFiMzNkMDVmNGRjMDU1ZjhkNCBsZWdhY3ktdHJ1bmsKKzMyNzg1IDk4NzZiMThlZGNhYjQwNjA4YWFhZTY3YjNjMjQzOTVkZGE5YzVmNzggbGVnYWN5LXRydW5rCiszMjc4NiA2NmFhMTA1YzhkMTc5OGIxOTdiM2M3NjIyZDZhOWFjOWU3ZDJiZTI0IGxlZ2FjeS10cnVuaworMzI3ODcgNjBlNzNjNTA1Y2YyYzFjMjliNjE3ZTU2YzJlMTg0Zjc5NjdkMDExNyBsZWdhY3ktdHJ1bmsKKzMyNzg4IDUzZGQ4YzQyNjNmZDMxZGZhOTllMmU2YTU1MWQ3NTk4MTI1NDBkYmIgbGVnYWN5LXRydW5rCiszMjc4OSAyYzM1OTJkMTJkNjk0ZTNhYjgzNTE5NmEyMTVkMjEyMWVkMzMyNmJkIGxlZ2FjeS10cnVuaworMzI3OTAgYzFlODNiOGQ1YjcwZmVkZTUyYjU3MzIxYjk5ODMyZGY5NjU1YWZkOSBsZWdhY3ktdHJ1bmsKKzMyNzkxIGU5ZjlhMTk2ZmRlZmU0ZjcyZTg3NjBiYWIwNDE5NjBmNDYyNDdkZTYgcmVsZWFzZTIyLW1haW50CiszMjc5MiBjMzEwZjlkZGZkY2JkYjFhN2I1NTNiMWYyODA5M2U1YzI5YTM5NDM4IGxlZ2FjeS10cnVuaworMzI3OTMgYWUwNGE3M2JmOGZjMWJlNzEzMDU5NzAwYzAxNGYxZDg2MDY4YmUxMSBsZWdhY3ktdHJ1bmsKKzMyNzk0IGU1N2UyMmFhNTZhNDg2NzcwMzVkNGMwNTgyMjQ1YjRhMzRhZDg2YTEgbGVnYWN5LXRydW5rCiszMjc5NSBmOTM1MTJmMWUyMGZmMTZlNTVjNDM4YmE1OTBjNmEzOGY4YjI0OTlkIGxlZ2FjeS10cnVuaworMzI3OTYgNWRhMTk4NDgwYjZhNzZmZTM4YTFhNjZhNjFhM2QwMjc5NWRlYmJlNSBsZWdhY3ktdHJ1bmsKKzMyNzk3IDQzMzJmMjA1MzNmY2RmM2VhOTRmMjYwYzdiM2M4MDA0Mzc5YWNkYTIgbGVnYWN5LXRydW5rCiszMjc5OCA2OTMxNTVjZGFlMDNmODIxMGI0OTg1ZDg5M2E0NzEyMDVkODA5YTU0IHJlbGVhc2UyMi1tYWludAorMzI3OTkgZTZlMTAwZWZiYzdkMzFlYTQxYTQxYjQwN2JiZmRhMTNmMWNmNmI2YyBsZWdhY3ktdHJ1bmsKKzMyODAwIDJiZjI4OTA0YThlY2FhNTMwYTE1NzMyYzJmMTMyZDM5NmY0MzZhYmMgbGVnYWN5LXRydW5rCiszMjgwMSBiNjE5MWNhOGVkODA3MTU5MmJiYzhlMzJlMDQxZDc3MWJmMmJlZTIzIGxlZ2FjeS10cnVuaworMzI4MDIgYmM1MjE2ODk2M2IzMjFkMGNlOGFiZTEzNTViNzllMDU1ZTY0ZThmZiBsZWdhY3ktdHJ1bmsKKzMyODAzIGVmM2VmODhlMzYxNGY2YTEyNzBiYzNjMDg0OTI3NmQ3ZGQxZGJlMGMgbGVnYWN5LXRydW5rCiszMjgwNCA2YzMwYmIzZTMzMjU3N2M0M2U4NWRhYzVkYmUxNjY2NDZmMDM4MjE3IHJlbGVhc2UyMi1tYWludAorMzI4MDUgOGJlOWEzMTZlYjlkZTE2NWM1NDI4ZjdjMWFhZDY1NjkyNzk5OGM5NiBsZWdhY3ktdHJ1bmsKKzMyODA2IDI5ODJlNjE4MjU2NjFlZjFiOWI5NmMxMGI5MmNhMWRhNmY1MGQwZWYgbGVnYWN5LXRydW5rCiszMjgwNyAxNjcyMWQ3M2FkMjkzYmQ5MjcxZmU2YmE2ODYxNTcwMjExNmE1NWE5IGxlZ2FjeS10cnVuaworMzI4MDggNWU2ZDBkY2YxNTVmODczNGU4ZTBmMjRhMjdlYTYxMjEzMmJlNGU0ZiBsZWdhY3ktdHJ1bmsKKzMyODA5IDQ2ZmMzZjhlOWVlZTMzOWM1ZmM4MjM3M2YwMmZmNTkxN2MyMDBjZDMgbGVnYWN5LXRydW5rCiszMjgxMCA5ZDhkZTU2NWU1ZGVhY2RjN2M1MzU5YWVlOTEyYzkwYjQyYjdjMWExIGxlZ2FjeS10cnVuaworMzI4MTEgN2YwMDc0ZWU4YWI5OTUzMjk3ODE3OTJmOWNmNDkzMjhjZjQyYWYwMSBsZWdhY3ktdHJ1bmsKKzMyODEyIDAwMWQzYzdlOTYzNzBjNjVjYTgzZGRhYTdjZjAxYWFmYWNiM2Q1YTQgbGVnYWN5LXRydW5rCiszMjgxMyA1MzJkZTE5MzMyYTQ3OTMxMDc3OWIzOTg4ZmI5ZjVlNDlkZjBjMDk5IGxlZ2FjeS10cnVuaworMzI4MTQgNGMxZDFiMzU5ZjA2NjljOGE1ZmM1MTgwYmQ5MjEwZDQ0MTA3ZWIzYSBsZWdhY3ktdHJ1bmsKKzMyODE1IDFkNGVjNTJiMzE2YzBiODBkMmE3MjVmYTNmOGUwZWFmNjhhMmI2NTMgbGVnYWN5LXRydW5rCiszMjgxNiAzODRiZGEzNDM3MjVhMGRlZDBkY2RmMjgwMTdkNDZkYWNmOGNmZWI0IGxlZ2FjeS10cnVuaworMzI4MTcgMmJiNWNlZWY5YWMzYzJkMjIxNDdmYmJiMDdiYjFjNjg0MmE2YzA5ZiBsZWdhY3ktdHJ1bmsKKzMyODE4IDRkOTAxN2VmN2I1ZjMxMTA4OTljOWQ0NGEzYjRmMTYzZjEwNmRlNzIgbGVnYWN5LXRydW5rCiszMjgxOSAzZjlhYTZmMWFlZjA4YzRkMjJlNjIxODJmNjU5OTg4ODljN2U2ZjRmIGxlZ2FjeS10cnVuaworMzI4MjAgODliNGU4ZTJjMjMwY2JlODVmMDY0NDFkNGJkMGE2YjA3ZDQ1MWNmMyByZWxlYXNlMjItbWFpbnQKKzMyODIxIDY0M2YzYWM0MzBiZTg3ZGM0ZTEwYjk0NDczOThmYWMzNmExNTY1ODMgcmVsZWFzZTIyLW1haW50CiszMjgyMiA2NTQ1ZTc0OTg2MzVlYzIxOWRiMGIwZjY4ZTA3YWZjNmRhMmU1ODFkIGxlZ2FjeS10cnVuaworMzI4MjMgNDM0ZWYxNzRmNDc4NjIzODI5YjY5OTNhMDU3YTg3NzUwMTA0NDI3MCBsZWdhY3ktdHJ1bmsKKzMyODI0IGYwYjY3NzMxZTU0NWI1Yjk0NDczYzRhZDM3YzNiMmQyNGJhMTgwYzcgbGVnYWN5LXRydW5rCiszMjgyNSA5Y2YwOWY5MmIxOThiZWRjZWY4NDI3YWEwOGZjN2M3MTEwMDNkZjMzIGxlZ2FjeS10cnVuaworMzI4MjYgOWFlMTdiMzc3OWJiYjAyZDBmMjRhOWI0YjkzZjJmYmUwYzQyMTM0YSBsZWdhY3ktdHJ1bmsKKzMyODI3IDQyMWZmZDdjNTdhZmVlYTczODAyM2FkYzE1MmFlMTI4ZmMyNzI3MDAgbGVnYWN5LXRydW5rCiszMjgyOCBlZmU1ZGQ2MGNlZTg4YWJmN2NmNTg2ZGNhMmI0MWVhMDhkOWEyMGU5IHJlbGVhc2UyMi1tYWludAorMzI4MjkgNDVmN2RlN2YxMDUyYzhiMDFjZjZhZGNlMzQwMjAyZDg2MWY3MzYwYyByZWxlYXNlMjItbWFpbnQKKzMyODMwIDU3MGE3YjhhYTE1NDIxNjU2NWM3MmVmMzU3OWI1MTgyNmM2NGExYWMgcmVsZWFzZTIyLW1haW50CiszMjgzMSA0ZjUzMWNkZjI0MmU4YWMyZjkxZWNiOWU3M2RhZjA4MzQzNmFkYzUyIGxlZ2FjeS10cnVuaworMzI4MzIgMWRjN2MwYTAyMGQzZDdlMzViNzJhMTFiMDQ4ZWRmYTQ3NDg3NGJmZCBsZWdhY3ktdHJ1bmsKKzMyODMzIDZlOTVhZGQ5MmM5OWJhYjhmM2MwZmQ3MjExODc0MGQwMmJlNzNjMWEgbGVnYWN5LXRydW5rCiszMjgzNCA0NjMwMGI5YWYwMmI5NGRhZGNlNTIxNGJkOWU2ZDI3YWQ0ZDJmNmY4IGxlZ2FjeS10cnVuaworMzI4MzUgZjQ3NWJlYzMxNjk1NTE0NDVjN2ViNWQ4ZTQwOTY0M2JiZWIwMzlkNSByZWxlYXNlMjItbWFpbnQKKzMyODM2IDA1NGQ5YmMwZDg2MDhhYjczNDRkMDZhZDYwMWFkNzE2YzBkYTk1ZTggcmVsZWFzZTIyLW1haW50CiszMjgzNyBmMzljMjcxYTlhOGU2YzIyOGE0MTA5NDA0MmQ0NGM0ZGJiMWFkZWI4IGxlZ2FjeS10cnVuaworMzI4MzggOWFhMDZjYmQ5Y2MxYTMwN2M0YzljOTJkYzlmMzAxNjhjNjU2NTdkYyBsZWdhY3ktdHJ1bmsKKzMyODM5IGM3ZjZmNzM3NDNiMDhiNDhiMzNmYTQ3YzRhODc5ZGFiMDI3NTlhY2QgcmVsZWFzZTIyLW1haW50CiszMjg0MCAyYWFhMzllZGM1MTFlN2QzMDBiYTIxMzQ2Mzc3ZGMxODhkM2UxN2JmIGxlZ2FjeS10cnVuaworMzI4NDEgODk2YmJkMDgwNmU4ZjNmMjBiYmQ1NzgxYjcyZmYyYWZmMzlkYTIzYyBsZWdhY3ktdHJ1bmsKKzMyODQyIGJlZTNkMWExYjlhOWEzY2IxNTViNzY2MTU4MjhjYjUxZTY4YmY4MjMgbGVnYWN5LXRydW5rCiszMjg0MyA0YjFjMTUwZDA3ZDhjNWIwNDFiYjM1ZDVhZGI3MTAzYWY4YTQ2YzExIGxlZ2FjeS10cnVuaworMzI4NDQgMjI3YzY2NDZjYzZiYjViMWEyYjRiZWIxNWIxZWI4ZDZiMWU3YmUzMyBsZWdhY3ktdHJ1bmsKKzMyODQ1IDEyOTdkNDA1MTU1YmQzNmQxNTdlNmExZGNjYTdiOTcxMTkzZGU1ZjIgbGVnYWN5LXRydW5rCiszMjg0NiA5YjI0MjUwNmQ2ZGM3ZDQ3ZjNkYjhkNjc1YmU3MzI3NjM0MzJkZDlhIGxlZ2FjeS10cnVuaworMzI4NDcgZDY2NWM2Yjk4Y2QyNDFiYTY3ZGFhYTYyYWZhNWI1MzdkNzU5MTczOSByZWxlYXNlMjItbWFpbnQKKzMyODQ4IDgxMjk2YTgwYTE1ZjJlMjA1YjdjOWQzN2I3YjRlMGUzNDM3MTUwOTcgcmVsZWFzZTIyLW1haW50CiszMjg0OSA2ZDZiZGEyNTQ5YjZiZDQ2MGQ1YjM0ZjBlNGVmYjI1Yjg5NDY5MDAyIHJlbGVhc2UyMi1tYWludAorMzI4NTAgYTkyMTBiZWMzYjVhZjkyNzQ5MTY2NzI0ZmNjMTMwODkzYWNiZjQ1OCByZWxlYXNlMjItbWFpbnQKKzMyODUxIDBhOTdhZGM2YTQ3ZWIyNDVjYzlhN2VjMjJiNGUyOTQ3NzNmYWZhMzIgcmVsZWFzZTIyLW1haW50CiszMjg1MiBiOTc2MmYwMDNmMzA4ZDE3NTI3MzFhZTNmYmJlZjMwZjFjZjFmOTdmIGxlZ2FjeS10cnVuaworMzI4NTMgY2QxYzgyNmM5OGEyYmZiY2U0YWFlZGI1YjFmMDA5Y2IzYmRiMDc1ZCBsZWdhY3ktdHJ1bmsKKzMyODU0IDM2MWZhZDYzMzMyZGQyNDkwNWQyMjgzOWYwZmI2NjJjZGRkZDlmNjkgcmVsZWFzZTIyLW1haW50CiszMjg1NSA3NTRmZDM0YWQ5Nzg0ZTJjNzdlNzE2NzliNWM0NjZmZTNmOTIwYTZjIGxlZ2FjeS10cnVuaworMzI4NTYgZjZlOTFjYTU2YTQ5OGM3ZjYwYjU5ZmQ3ODIwYzIxY2RjYjg4MTcxYiBsZWdhY3ktdHJ1bmsKKzMyODU3IDMxNWE3NDcyNzdiZmU3NmQ1ODM5NTM3OGU5ZTEwNGI1OWFhMGI0NzYgbGVnYWN5LXRydW5rCiszMjg1OCBiMWY2NDM2OTBhODg3Y2UyMWVkZTY4YjJmMmU5YzE3NGJiYWZmMTU2IGxlZ2FjeS10cnVuaworMzI4NTkgNTZmZmNhMDJjODI0M2IzNTFmZTc0MjQzMmYxOTVkNjhmZWU2NzM5NiBsZWdhY3ktdHJ1bmsKKzMyODYwIGU3MDk0MzkzMzczOWVmY2E2OTA2NGUxZWQyYjAwODI1MGQ5ZmI0NmIgcmVsZWFzZTIyLW1haW50CiszMjg2MSA1ZWNjNDhhZDY2MzQwMDBlN2VkNjNjNDA1YjFmNWI2ZmMwMzYzZTYxIHJlbGVhc2UyMi1tYWludAorMzI4NjIgZmY5YmEzZDFlMjgwY2M2MjE3M2M0OGFlMmU2YmJlZGM0MWFkZDY3NiBsZWdhY3ktdHJ1bmsKKzMyODYzIGRhMmM1ZDlkZDYwZTA3ZTMzMzQzODI4MzJlYTc3MWM2MjE4MGMwZDEgcmVsZWFzZTIyLW1haW50CiszMjg2NCAzNWIyNzY5YjAyYjYzNDA5OTg2NTIxNzIyMTQ5YmIwMjQ5M2M5ODRmIHJlbGVhc2UyMi1tYWludAorMzI4NjUgZTVhZmYwNjAzN2I3OTRlNmVlYTg2N2IxYWQzZWQxNzhkOTU5YzA2NSByZWxlYXNlMjItbWFpbnQKKzMyODY2IGQ5Y2Y1MzZjNTM0MGNlZGRlN2Y1N2U3ZmVmNDJhZGFlY2VhZjI1ODkgbGVnYWN5LXRydW5rCiszMjg2NyA1ODRkYzQ2Y2EwNjZkYTAzODNjMmRkZTY0ODgwZTIwMTgwNThhOGJmIGxlZ2FjeS10cnVuaworMzI4NjggNjQ2MjIxNmZlM2E4N2FiYzBhZDU5NTE5NmFlMmJjOTNkZTE2ODM2ZSByZWxlYXNlMjItbWFpbnQKKzMyODY5IDRiYWM0ZDBkM2UzZWQxYjI4ODc3Yjc5NTM2Y2MwZjUzYzdkYmY4Y2QgcmVsZWFzZTIyLW1haW50CiszMjg3MCA2OTk3NDY2MzMyNDZjNzI5NmU1MjJkNmVkYzA0NDMyZmI3ZTNjMjY1IGxlZ2FjeS10cnVuaworMzI4NzEgZjA1YmFlNDEyYjcxYjI0NTcwN2YwMzcxMjFlMWE3MWM5YTFjNjJhNyByZWxlYXNlMjItbWFpbnQKKzMyODcyIDk4NTY3MDY1MDY0YjdiYjU5N2IyMzEwOGQwOGMyMGM2NmZlNmUyNDkgcmVsZWFzZTIyLW1haW50CiszMjg3MyAwNTIzZjA5YmIzNDg2NzU2YjdlZTllMzIwYjQ4MjE1NjU2NjliZWVjIGxlZ2FjeS10cnVuaworMzI4NzQgODU2MGIxNDZmNDFmMWQwN2MyNjcyNDIzNDk5MWI2NTUyMGYxODc5YSByZWxlYXNlMjItbWFpbnQKKzMyODc1IGYxNTYyNmM3NjQxODY3MzllNzE0ZGI5ZDExYWY2MmVkMzFkOTY4OTkgbGVnYWN5LXRydW5rCiszMjg3NiAyN2VjMTQ3MWRjYjZhOTJmMmExMTkxMTVhNTg2MDY1ZmFjNjM2ZjJjIHJlbGVhc2UyMi1tYWludAorMzI4NzcgZWEyOTU4YmQ0MjcxZmYxNjYzNjJmZWE5ZDVmOGQ2MGM3MzVhYTgwMSBsZWdhY3ktdHJ1bmsKKzMyODc4IDg1OGQ1NjhlYmY3NjMxMTA3YTFlZDE4YjQwYjNiMTBiZmE1YmUxZGEgbGVnYWN5LXRydW5rCiszMjg3OSBmM2YzMDY0NTdiNDMwZWExOWQ3ZGU3OTQ2YjdiN2JiODUxNDUwZjA5IGxlZ2FjeS10cnVuaworMzI4ODAgM2FhZjI0Yjk0OWRmYjYyMDkxNWM2OTA1M2M4ZDY3Y2M3ZGM1MTM1OCByZWxlYXNlMjItbWFpbnQKKzMyODgxIDA1MmM2MjYzZGYyNjlhMjY0YzIxODRmZDgzOGNiNmRhNDNlMjYzOTEgbGVnYWN5LXRydW5rCiszMjg4MiAxMDhhMTAwNmE5MDUzYTRmYzM2YzExMjA1YmU2ODE1MzYxNzA1ZGFjIHJlbGVhc2UyMi1tYWludAorMzI4ODMgZjdkZmFlYWE0YWI5ODhhNTQ2YWVlMmE4ZGIxYWZlZWIzN2Y5NjdkMCByZWxlYXNlMjItbWFpbnQKKzMyODg0IGJkODIxNjFiNjFlNTU2OTQ2YjI0OGEyMDkzNmNhNzU5YzZjZTZlNzEgbGVnYWN5LXRydW5rCiszMjg4NSA2N2Q1NjBkNjA4Y2VkNzZhZmUxZTFiNDU3MmRiZTIzNmQ5NmE2YTJkIHJlbGVhc2UyMi1tYWludAorMzI4ODYgODU2YzgxZjcxMjEzZGEyM2U5NjA0ZmJjOGVmOWZhZTkxZDliNzAyMCByZWxlYXNlMjItbWFpbnQKKzMyODg3IGVhZjkwZTg1MGQxMmU5ZmYxMDdiNWZiMmQ0NTQzNGY3OWY3ZmJlMjAgcmVsZWFzZTIyLW1haW50CiszMjg4OCAzNzdhMjlmNmQ2ODc5M2Q2ODdiMTk3ZWY3ZTMyYmQxODM2NDcwMjNmIHJlbGVhc2UyMi1tYWludAorMzI4ODkgZjNkMWVkMTQxMTg4MmQ1OGUxYzk5MjkxNTcyMDA5NTg3NjgxNmFkMSByZWxlYXNlMjItbWFpbnQKKzMyODg5IGFjNzdiOTEzNDI1MzRkMDliMWU0MzJlMWRjM2I3MGRiYmVjM2E5MTkgcmVsZWFzZTIyLW1haW50CiszMjg5MSAwNjg1MjlhOTA5OTI2ZDRmNjAzY2YwYjZkNmEwZDRhMzM0NGFkZGZmIGxlZ2FjeS10cnVuaworMzI4OTIgNzUyZmM1ZWExNmI5YmQxM2ZiMTY0MDFkMjYyMGFmNTU5OTA5MzViYyBsZWdhY3ktdHJ1bmsKKzMyODkzIDM1ZDcwMGQ5MDE1ZTA1ODg4Y2IwY2Q5YjY3NmI4NGFiYjZlNWY2ZjkgbGVnYWN5LXRydW5rCiszMjg5NCBlNzIxMDI1Y2NhMDkzOWZhNjVlMmMzNmRjMjY0MDRmZjQwZGZlNjlmIGxlZ2FjeS10cnVuaworMzI4OTUgMzg3ZDdjMjIxNmExNjliNmM2NmQ4NGY4ZTQxYjIzNDhjZmE2MzBjYSByZWxlYXNlMjItbWFpbnQKKzMyODk2IGQ3MmFkMDdjNzM5ZWEyYzhlMzU2MDFmOTc2MmY5MzJjNWU5NzY1MmIgbGVnYWN5LXRydW5rCiszMjg5NyA2NDIyN2Y4ZGU3ZGFjMTA1ODQwNDQ1NmNkZmU0Y2UxMTNmNDUxNmYyIGxlZ2FjeS10cnVuaworMzI4OTggMjNhZDhiNWQ3YjRhMGVmMzY4OTc0ZDMwNmUxNmU5ZTRmMDViNDhkNiBsZWdhY3ktdHJ1bmsKKzMyODk5IGNhMGM4MTM3ZGU4NDQ1NWVhZmUxOTI0ODUzMjE2NjdkNzFiMGNkZGEgbGVnYWN5LXRydW5rCiszMjkwMCAzOWI4NzE2Nzg0Njc1M2QyMjU1MDMxMGU4ZTViOTg3ZGRlMjZjMDA2IGxlZ2FjeS10cnVuaworMzI5MDEgMWMzMmQ0MjA3NDA0YTg2NDQ1ZjE5MGUwNDRmMTcxYjc1OWY1NmI4NSByZWxlYXNlMjItbWFpbnQKKzMyOTAyIDJmNDI4NzVkOTM3ZjI0ZDU0ZDc5OWFmNzczMjlkMzE3ZTFhY2RjY2QgbGVnYWN5LXRydW5rCiszMjkwMyA4OTNhZTUyNjY3NzY1M2YzMGEzNWVkYWViNTczNDQ1OGJlMDE1MzhjIGxlZ2FjeS10cnVuaworMzI5MDQgMzQ2MDlmYTM1YjExYzE3ZmI1M2E1MzQ5ZjIyMGUwNDA5ZmJmNzg5OCBsZWdhY3ktdHJ1bmsKKzMyOTA1IDNhOGIxZDE2YjdjNmNkY2RiNTUyYWQxNGRjZmVhYzcwODY1ZWIzZjEgbGVnYWN5LXRydW5rCiszMjkwNiAwYjc2Njc5YmYzZjk4Yjc3NDFjZmE4ZTg2NTJkNjk1NzU2NjM0MmY4IGxlZ2FjeS10cnVuaworMzI5MDcgYjRjOTJlOTgwM2E2MjEyMzRkYjZlYjQ5YzZmMjRkYzczZjZiMjA2YSBsZWdhY3ktdHJ1bmsKKzMyOTA4IGJlNzBiODQ3N2Y0M2QwOGE2ODI3OTgxOGFmOGEwYjY4ZjRmZTZlZTYgbGVnYWN5LXRydW5rCiszMjkwOSAzNjg5YjAwNTVjMmRiMjI5NmE5ZTlhOTk3YWMyYTUwNTE5MmRjZmYzIGxlZ2FjeS10cnVuaworMzI5MTAgYjkwOWZkZjBlZGY4ZGRlMGM2NzgyODU3NzA5YTJjMDMyN2YxZDVlYSBsZWdhY3ktdHJ1bmsKKzMyOTExIGRlYTM4MTE2YzM3MzUyNmRjNDY2ZTFjNzI5ODYxNTA3MWRiN2NhNjYgbGVnYWN5LXRydW5rCiszMjkxMiAxOGMwMjA0NjM5NjVkMDI5ZGY3YzEwM2ZlMzBkNGM4ZGY0OWQ2OTc2IGxlZ2FjeS10cnVuaworMzI5MTMgZjFlNTY3NDg1MTk0NDhiYzljMDRjMjAyYTRmM2JjZjY2MjljZmFjZiBsZWdhY3ktdHJ1bmsKKzMyOTE0IDE2MWYwNWY0NjgwZDlkM2Q4Mjc3NWZjOWM5MWExMmYwNDY3ZThmNjcgbGVnYWN5LXRydW5rCiszMjkxNSAzNGY0MmUzNDUwYjRkNjJjMzk1MmU5NjhlZWZiODhmYWU5MmIyYjZiIGxlZ2FjeS10cnVuaworMzI5MTYgN2VhNTUwZWNmNDNkNzRlZDQzM2I1Mjk4ZGFkNTJiY2MwMmZkNWI1YiBsZWdhY3ktdHJ1bmsKKzMyOTE3IDQ1YzZiZTM1NzMzZmRkNmFmOGJjYWQ1Yzc2OTllNzBhMTM4YWE3YmMgbGVnYWN5LXRydW5rCiszMjkxOCBhOWQ3NzhiZDk2NTM2ODgzM2YyOTdjZGNmZDhhYWM2OWYxMDdjNjQ5IGxlZ2FjeS10cnVuaworMzI5MTkgNzRkYTRkMmVhYWQzNjc5YmVlNzVhNDc2NWIxNDAwMGIxMTI5ZGVmZCBsZWdhY3ktdHJ1bmsKKzMyOTIwIGQyM2U5MzIwZDM1MDAyZDY4YTk4NWFmMTEzMjE4MDBlNDUxNWI0ODYgbGVnYWN5LXRydW5rCiszMjkyMSAzYzRkOTVhNGNlMTc3ZTdiYmQ5ZDgwMDZkODU3NTdhNjNkN2VlMDRmIGxlZ2FjeS10cnVuaworMzI5MjIgNzg4N2ZlM2E5YThmZjZhOWE3YWQ4MjE5NDBmNTZmNTY1ZTNiZDY0OCBsZWdhY3ktdHJ1bmsKKzMyOTIzIGM1NjMzOGUwODdjYWNhZjhjMDQxZjZiZDBiMDFlMmEyMGUzNTQ0MTEgbGVnYWN5LXRydW5rCiszMjkyNCAwODYzMDkxOWJmNTJiMmVjOTM0YzEwOTZlZTExODRiNmIxYjQwOTdiIGxlZ2FjeS10cnVuaworMzI5MjUgOGY3M2RmMDk5OTY3MzQwMmEzYmMwMGMxZThlYjg2MzdkNmMwZmQ1ZCBsZWdhY3ktdHJ1bmsKKzMyOTI2IGI3Y2QxZmYwMDE5YjlhZGVkYzMyOTZhMjY1ODhmM2U2MzJlOWY0NjYgbGVnYWN5LXRydW5rCiszMjkyNyA4OTc4MTIzMThmZjQxZDQ5NzAyZDg1NzhjMDA4ODdkMmQ3MzdkMzAzIGxlZ2FjeS10cnVuaworMzI5MjggZGY4MGE1YjY5NTdiNWVlNWE3MjYzY2JjZjY4YjM0MTIyNzIyYTEyMyBsZWdhY3ktdHJ1bmsKKzMyOTI5IGEwNDNhZjYwOGU5NGNjNzMxMTI3OTg1OTVhM2EzOWNmY2Y4MDE5MmQgbGVnYWN5LXRydW5rCiszMjkzMCBmZWM3ZjMzYjY5N2MxODVhNjhlODQyMWNmYjJmN2I1YjVlYTgzMWZmIGxlZ2FjeS10cnVuaworMzI5MzEgNjY3MzA1M2VkYWQzZjNkOThlYjMxMjkwYTA4NDNiYTQwY2Y2OTgwYSByZWxlYXNlMjItbWFpbnQKKzMyOTMyIGNmYmE3NmY3NzY0MzU4ZmYyNDkxZDUxMzU1NzJiZDUwZDNiNGIzNWMgbGVnYWN5LXRydW5rCiszMjkzMyBiMzcyYjkwM2QxMGU3YWRkMzI5M2E5NzdjMGU5MTg3MzU0ODRkZjNhIGxlZ2FjeS10cnVuaworMzI5MzQgOGYyYzVjZjYxNzYzOTA2YzMyZmM4ZDY4ZGVlYTZiZDcwZDUxOWJkYSBsZWdhY3ktdHJ1bmsKKzMyOTM1IDQ5OTJjNjBkNDIyYjI4ZDFmZWI2YjMzYWJiOGY1YWNkMTY2NTU0YTUgbGVnYWN5LXRydW5rCiszMjkzNiBjMzI1ZThmMjBkNmU5NDA5NWYzMGUwN2E1MDgwZWE1MjMxNGJjN2M5IGxlZ2FjeS10cnVuaworMzI5MzcgN2YxMzBhNDM3MGM5ZTM0YzY1ZmU5ZTE2YWVkM2VmZmQxYThjOWQxYSBsZWdhY3ktdHJ1bmsKKzMyOTM4IDhlZWIxZGY2OWYzNTc1MTc0M2FlMDdhMTRlODcwNjgyOTY0ODBkNjcgbGVnYWN5LXRydW5rCiszMjkzOSA5NDlmNDE4MjlmMzZmNGY3ZDNmYWY3ZDk0YzUzMjZmYTQ4ODgyNDIyIGxlZ2FjeS10cnVuaworMzI5NDAgYTVjOGVjYTU0YWViMDFmMzMwNmU5YmRlZDgyMTc1ZmE1ODI3ZDhiZCBsZWdhY3ktdHJ1bmsKKzMyOTQxIGRlNDFmM2NkNjQ3NDQ1MjE0ZmNmM2ZiYjc5OTJjMzFiOTZmYTM4ZDMgbGVnYWN5LXRydW5rCiszMjk0MiAwNDM3Y2Y0YjllZWMxZTJmMDIzMzQyYzlhZTZlN2IzY2I0ZWQxYTdlIGxlZ2FjeS10cnVuaworMzI5NDMgODExYWQ1ZjJmNzAxNGMxMWZlY2E1N2IyYzk3MzkwNWMyN2RiYzc0MCBsZWdhY3ktdHJ1bmsKKzMyOTQ0IGI1YmFkZDNhOGQ0ZjM5MThmYzhhYzVlMDMwNjg5NTJmOGJhNzk4N2IgbGVnYWN5LXRydW5rCiszMjk0NSA3MDYyNmM1NzNlZDcxZGQ5YjZjMWNlMjVkZjdmNDQ1ZmUzMGQxNTE4IGxlZ2FjeS10cnVuaworMzI5NDYgMjE0NTFmNzYwNTk2MzFjY2E5NWYyZTVmN2FkOWQ5YTdiODU4NzIzZCBsZWdhY3ktdHJ1bmsKKzMyOTQ3IGU4YzRjMTVmNDU5ZTM1ZWMwYzg4YzU1YjY1MmY0Y2U3MTQzMmRhMjkgbGVnYWN5LXRydW5rCiszMjk0OCBiZDM0OTk5OWNiMDgyODg5OGQ4MGViMWRjYjVkZGVlYjhhMGQ2MjVkIHJlbGVhc2UyMi1tYWludAorMzI5NDkgZDQ2NDU5ZDgyYTc5Mjc4ZTU5Mzg0NmFmOTIyMDY3ZDJjZjFlNzI2NiBsZWdhY3ktdHJ1bmsKKzMyOTUwIDdmN2EwNzgwNDZmYjVjMTBiZjMxNzcyNzUzNDc0OTA0NzJkMTYzYjUgbGVnYWN5LXRydW5rCiszMjk1MSBjMWU4MGYyZjFjNDcxYTIzY2Q3NjZiNjE2M2U3NzkzZmM1ODYyZTNjIGxlZ2FjeS10cnVuaworMzI5NTIgYjU0NzhkMWRkNjdlZGQ5ZDY2ZThhZDBlOWQ5ZjY0Y2JkYzJiNzAyZSBsZWdhY3ktdHJ1bmsKKzMyOTUzIDBiZWIxYTY1MTQ0MzU4MDJkMDMxMzRjYTA3YjUwYWIwOTMyNzA1N2UgbGVnYWN5LXRydW5rCiszMjk1NCA3MzI4MzY2NjYwMDAzMjNmZWY1MjM3NzUyMWE2NmRlMTY5MjViYjE0IGxlZ2FjeS10cnVuaworMzI5NTUgOThhZmZkYmM0MTZjNDEwOTk0ZDU1OGQ1MDY2NzcxYjdlNWMwZDVjMyBsZWdhY3ktdHJ1bmsKKzMyOTU2IDA4YTFjYmRkMDM2N2ZkMDFiMjczOGNlM2VjNWJlNWEwNzY4ODcyZjEgbGVnYWN5LXRydW5rCiszMjk1NyBlM2FlZmViYTQxMTYwOWEyMmM3NWY5MzcwMTVhNGIxZWFjYzhlZWNjIGxlZ2FjeS10cnVuaworMzI5NTggOThkODE1OTllY2E3NGVjMzNlYmZkYWJmZWQ5N2UzMGVmYjI4NzQxNSBsZWdhY3ktdHJ1bmsKKzMyOTU5IGMzYTAyMDc0Y2JlZTliNmFlODM4Nzk4MDYyOTViMDg2MDc3ZjdiY2EgcmVsZWFzZTIyLW1haW50CiszMjk2MCBlNmY4ZTI2ODdjNmZkNTc1MjRlYTZkNWQ4YmE2OWMxMTUzMjkzYTIwIGxlZ2FjeS10cnVuaworMzI5NjEgNjQ2OGYwZTFmNGE4NWJiZWRiZjRjNTM5NTJjYmZlN2IyYWViMWZmYiByZWxlYXNlMjItbWFpbnQKKzMyOTYyIGFkMWU2N2FjNTY3Yjg3Mjk5NGNiYTllNmM4YzRhMGRhOTM1MTJjMzYgbGVnYWN5LXRydW5rCiszMjk2MyA0NjI5NGVkZGJhNTUxM2JiYjU0MTViMzJhZTg3ODE1NTNiOGI0MTQwIGxlZ2FjeS10cnVuaworMzI5NjQgNjcxZTljM2FmNGYzODVmYjg4ZWRlN2U2NjdjZTFiZDY0ZTc1NWU3MiByZWxlYXNlMjItbWFpbnQKKzMyOTY1IGVkNzA3NzlmNjQwMjFjOTBlZmJmYzAzODc1MjJhNWNlMjIyNTFjZGIgbGVnYWN5LXRydW5rCiszMjk2NiBiMTc5MmE2MThlNmRiY2JlMTFlNDA3NjNkYWVkMmViZDhlZjAxMTM5IHJlbGVhc2UyMi1tYWludAorMzI5NjcgZGJjZTU1NmNmYzk2ZTkwNzA5ZjQ0NjM0MDc0NDYyODAxMzhkYjJlNSByZWxlYXNlMjItbWFpbnQKKzMyOTY4IDUxY2U2OWJkZjQxODZlODIwMTQ3OTQxZGU0NzEyOTI1YTUwNGNjNDMgcmVsZWFzZTIyLW1haW50CiszMjk2OSBjMjkxY2EyOTQ5ZTkyNjQxZTZjZmFlMmM1ZDY4ZjA3Y2ZjYmU4MGZkIHJlbGVhc2UyMi1tYWludAorMzI5NzAgMjcyYzc1YjFkMjJlYmIwNWZjN2JlMmIwNTc3ZWEwODk0NmVkYmQ3MCByZWxlYXNlMjItbWFpbnQKKzMyOTcxIGY0NGZiZjc0ZWI2MWRjMjhjMTdmZjg0NTAzMzUyNjlhZmI4ODZkMDcgcmVsZWFzZTIyLW1haW50CiszMjk3MiBmN2Y0NmQ2NzNjNjFjNzJjYzhjZDA5M2MwMTdmZTBmZmQ3NGYyZTIwIHJlbGVhc2UyMi1tYWludAorMzI5NzMgNjVmN2VmZDM1ZjExOTAxYzcwZjVjOTdiMmE5ZmRkNzNmM2EwMDNhNSByZWxlYXNlMjItbWFpbnQKKzMyOTc0IGIzMWM4NGJhMWYzMTQ0ZjUwNDc1NjVhZjQzNzExYmQzYTBhNmM0MmMgcmVsZWFzZTIyLW1haW50CiszMjk3NSA3NzQ2MjY5Yjk1MWNkZDYyY2Y2OTA4YmNhNGIxMjc1ODA1ZjdlMTAzIGxlZ2FjeS10cnVuaworMzI5NzcgYmYyZGMwZDE3MTQ4ODI3ZDYwYTZmZDJjNjlmZjViYmRmNDgzNmJjZiBsZWdhY3ktdHJ1bmsKKzMyOTc4IDEyZjllYTMyZjIzYTUyOTcwYmI0NTllZjI2Njk5YTczYmRlMzBmZTggcmVsZWFzZTIyLW1haW50CiszMjk3OSAwMDhjZDEwMTI2OWRmNjgyOTY4MDRmMzE3NGJjOTUyYzcwYjRjMDIwIGxlZ2FjeS10cnVuaworMzI5ODAgN2JlYzYyODk5OGZlOWU3NTcyNjdlNTZhYmRlM2RiYTY4MDY1ZmU4YyBsZWdhY3ktdHJ1bmsKKzMyOTgxIGU5NTBhYmMzMjkyMjdhYjY4MDA1NzQ3MTAwZGNlYTY3NTA5MDQyNjQgbGVnYWN5LXRydW5rCiszMjk4MiAzNjgyYWEyNzE0MWI0NDIyY2U2YWVmOWVmZTljOWJmNzQ2OWU0NGM1IGxlZ2FjeS10cnVuaworMzI5ODMgODcwMGExYzcwMTZiMTBmMDk4OGQ5YmFmMzY0MWFmYmRkY2Q4NzUyZSBsZWdhY3ktdHJ1bmsKKzMyOTg0IDYzYWI1MGVjNGE0NjYxNWFmMGQ0Njk1NzE2ZmM4OGEyYWM0NjUzZGEgcmVsZWFzZTIyLW1haW50CiszMjk4NSBlNDU4M2QxNjZjYmNkNzk4NmJhMWI0ZTJhMjEwODEyOGUxOWVjMDgyIHJlbGVhc2UyMi1tYWludAorMzI5ODYgMjlhYjFjOTIzZjc1NzEwYTJiOTRkZjM4MWE3YTIzMDc0ZTBmYzJhNyBsZWdhY3ktdHJ1bmsKKzMyOTg3IDQ3YzcyNWEzMmIwZWMxMGY4YWFlN2U3MDdjMWE2N2Y5YTQzYmQ1YmEgcmVsZWFzZTIyLW1haW50CiszMjk4OCBjMDAxYmIwMDA1NTgwZDJhNTY5YWIyZTcyZWRhMjI3YTZkNWZjMDdkIHJlbGVhc2UyMi1tYWludAorMzI5ODkgODNhMmU3MTMzYjAxMDU1M2I1NDc1NjA1N2NjNzgzMTE4M2RjYTVhMiByZWxlYXNlMjItbWFpbnQKKzMyOTkwIDg5MGNkN2EyMjIzZWZiOTY4ODQ2MmJlZTRiNGNkNjhiZmJmNTlmNzUgcmVsZWFzZTIyLW1haW50CiszMjk5MCBmNGYxMzRhZDQ2YWJkMGJjOTczZDNmNjA5NGVhNTZlNjJhYzVjNDkyIHJlbGVhc2UyMi1tYWludAorMzI5OTIgZjk0OTU4MTVjMThmMzE5ZDk2MjlkZjRiNzQ1NjI1OWQ2NDZiN2UwMyBsZWdhY3ktdHJ1bmsKKzMyOTkzIGY0MDliMzNjMjljZTQ5MjAwZTMxOTgxNzNjMzc1MjUwMzUzNDE3MDQgcmVsZWFzZTIyLW1haW50CiszMjk5NCBmYzI4NmUyODU1NmY3ZDg2ZGZmOGZmYmMyMDVmYjM3ZWU4NWUzNzIxIGxlZ2FjeS10cnVuaworMzI5OTUgYzY5YWQ5MjI3YWZkNGY5MzFiNzRjYTU2NjAyZmVlZWQyMTdkZmM5YSBsZWdhY3ktdHJ1bmsKKzMyOTk2IDZhYmNiNjkwYjQ3YjU0YTdhOGI1ODViYjIxNGM5NGEwN2M4MzU1ZjEgbGVnYWN5LXRydW5rCiszMjk5NyBkODljMDgzN2Y4ZjQxODMxNTVkMjU0NWZkNTVkODAyNjRlZThiNGMxIGxlZ2FjeS10cnVuaworMzI5OTggZTRmNzBlNjAyNTk4ZDQ4YmEyYjQyOWQ1NzViZWRmMjMwMmI3YjdiYiBsZWdhY3ktdHJ1bmsKKzMyOTk5IDk3ZmQxZjQ5ZjAyNmFhNTA0YzVjYWY3YTA4Njc5Y2U2NjllMzEwOGYgbGVnYWN5LXRydW5rCiszMzAwMCBiMzQ1NWM0YzE3OTg4Nzc4ZDc4Y2E1Yjk4Y2I4ZDZjOTU5NDhlYTEzIGxlZ2FjeS10cnVuaworMzMwMDEgNzU0OTRhZWE0N2NhNzI2NTQ5MWVhMjQxN2EzYzA4MjlkYWViNTQ4MyBsZWdhY3ktdHJ1bmsKKzMzMDAyIDQ1ODVhYjBkYTAwMzc3YmFmMGU5Y2EwZmVjZWIwZmUzNmQ1NTAzYWUgbGVnYWN5LXRydW5rCiszMzAwMyBmNTg5MTQ1OWI4MTNlZTI0NGU1ZDUzZmE2YjA4OTNkYTQ5YTA0ZDhiIGxlZ2FjeS10cnVuaworMzMwMDQgMmY3MzFjNTdjZGM2OGY1OTQwZDAzZjk5MDhjOGJjOTQ4NmNlNGE3YSBsZWdhY3ktdHJ1bmsKKzMzMDA1IDI3YmQ0Y2QwMmJiODdlMzc3MTUzYjNlZTI0NzBjZjAzMjAxOTA0YzggbGVnYWN5LXRydW5rCiszMzAwNiBmYjg0ZTBlYWJhZDRlNGIzZDE2ODAzNDNiNWM2ZGEyOTgwMTdlYzcwIGxlZ2FjeS10cnVuaworMzMwMDcgMWFlOGI2NzQwOTA2NTIwNjVjZGQ4YWVlOTE0MGJjY2E0MDUzYzk2NCBsZWdhY3ktdHJ1bmsKKzMzMDA4IGIxMzk1MDE0NzE0YWQ3ZjA2Y2UyZmFkZTYxZDhlZjRhMTU5ZmViYTcgbGVnYWN5LXRydW5rCiszMzAwOSBiNTJlMGFkMzA1ODU4ODBlOTI2NjZhMjQ3NzBmMzdkYWQ0NmFiYmI5IGxlZ2FjeS10cnVuaworMzMwMTEgNTNkOWI0ZWVjNGNlMGEyODRmYmM1MGZkMjUyZTNhYjU1NjJlYzdhMCBsZWdhY3ktdHJ1bmsKKzMzMDEyIGEzNjkzMzYyMjRkZGE0OTUzOWExZGNkNjQ1OTdkODEyNGM1ZDU2YTcgbGVnYWN5LXRydW5rCiszMzAxMyAyMDg5NGRiYzdmNmE4YTU3MTI0NDI1M2FlYTE3MTU4MTgzZjQ2ZjI3IGxlZ2FjeS10cnVuaworMzMwMTQgYjFlYjJhNDc1NmJjYzMyOTNlOTFiZjI3MWNhOTU5NzUwZmFiYjQ0ZCBsZWdhY3ktdHJ1bmsKKzMzMDE1IGVkOTQ5YjgyZjk1ZDljOGE0YjE5NzRhNDQwMGNjMTgxZTEwMzY2NjYgbGVnYWN5LXRydW5rCiszMzAxNiAzZjEwYTI5ZTBlNmExYWUwMDVjNWYyMDVmMDk1YzM4MzkyZTU2OWQ3IGxlZ2FjeS10cnVuaworMzMwMTcgZmRhYzliNGQzNzE3MjUxMzI5OTc0OGFmYTNiNzk0MzJmN2U0M2YzYyBsZWdhY3ktdHJ1bmsKKzMzMDE4IGY4MmI2ZDJiNzNmMTExMzcwYThjODRkMjkzYTg4M2Q5OTJjMzYwZmMgbGVnYWN5LXRydW5rCiszMzAxOSBjNjYxMDBjMDllYTExNjI3ZDQ5MDA5ZjI1MjEwMjk1NzY1MWE0ZGE2IGxlZ2FjeS10cnVuaworMzMwMjAgZTBmMDcxYjQ3NmZkMTZmZGRkN2FiODVhYjkzZGE2Mzg2ZmQ3YTFhNiBsZWdhY3ktdHJ1bmsKKzMzMDIxIDcyY2U3Y2MwM2YyN2ZkMjYyMmVlNzI0ZmYxNzBhYzIxNTVmZjIxNjUgbGVnYWN5LXRydW5rCiszMzAyMiAyNjE2ZmU1ZWVlZTE3OGQzNjNjNDI1MDIzZWRjZDYxZDFmODJhZDM2IGxlZ2FjeS10cnVuaworMzMwMjMgY2EyMGMzY2JjOTU2ZWEzMjNiYjk4ZGM5MDc5OWNjZTkyNTY4M2ZjYSBsZWdhY3ktdHJ1bmsKKzMzMDI0IDEyMTkwMjFjNDg2NWFlODA3ZjMzMTQwYTA1YjU0YTI2OGYzNWZmODQgbGVnYWN5LXRydW5rCiszMzAyNSA1OGMxYWQ0MTdlZTdjYWVkNDI4YWEyMjI2ODY1NDk4ZjA4YjgxNWI1IGxlZ2FjeS10cnVuaworMzMwMjYgYzAxZWRjMzVmZmQ2NzZiYTRhNjZiMGQxZGMwYjVkOTUyZTgxZDA0YSBsZWdhY3ktdHJ1bmsKKzMzMDI3IDhjNmQ0ZGE1Y2NkM2Y4OWQ1ZTU3ZWIxOTI2OTBiZDhmYWZmYjk5ZjAgbGVnYWN5LXRydW5rCiszMzAyOCAyMGUxYWQzYWU4YmIwY2ExYTIzZmYwNjUzOGVmY2E0NjE5MzNlMWIzIGxlZ2FjeS10cnVuaworMzMwMjkgOWU3ZDIyOTMwZGFhMTJmMjdhNTdjMmMwYjA2NGQyZjU5NTI1MjY3OCByZWxlYXNlMjItbWFpbnQKKzMzMDMwIDIzZjYxMDFjYzg3ZWYxNTEzYTk0Mjk3NWNkYmExZTM0ZmI3OGVhNGYgbGVnYWN5LXRydW5rCiszMzAzMSAyZTJkZDYxNDM5NDM5NzdlZDdlNzM0MDUwNjA5ZjkzOGZhMmVjYWU0IHJlbGVhc2UyMi1tYWludAorMzMwMzIgNDA4MWI0OTBkNTRjYWNmMjEwMWYyNzFlYTc2MmU3OTYxNTg4ZWIyYyByZWxlYXNlMjItbWFpbnQKKzMzMDMzIGMwNTU5NzkzMDBmMTc4MDUyMjcxMDY2YWM0YmZmZTIzY2NiOGIwZDQgbGVnYWN5LXRydW5rCiszMzAzNCAyNGU3NGQ2ODc5ODAwYmJiYjMzM2UwNzlhZjQ3NWE3ODNhZGMwNjYwIGxlZ2FjeS10cnVuaworMzMwMzUgMzQ3ZTdiNmRmZDUzYWQ5ZDcxNzc4ZmYxNGYyOTljZGEyOGMwMTE2NSBsZWdhY3ktdHJ1bmsKKzMzMDM2IDI0ZmZmMzJlZDA2NWMzM2RhZTAzOWM1OWY3OTgxNGJjYjBlNjZjODIgbGVnYWN5LXRydW5rCiszMzAzNyAxNWYxZGM1YjdkZGMxY2Y2MTRiNmIyZDViMDA0ZGIyN2NmMWJhMmNkIGxlZ2FjeS10cnVuaworMzMwMzggNTg1ZTMwM2E5NDkxMzUwYzgwNjkwOGNhNDJlNzY3ZWMyNmE0MGJhMiBsZWdhY3ktdHJ1bmsKKzMzMDM5IDBkNTg4ZmFkYzFmODJmZmFmNTVlNTU1MjUxNTIzNzQzYTU1YjJhNzAgbGVnYWN5LXRydW5rCiszMzA0MCAyZDM5ZWMwZTU1YWE1ZmE0ZGJjM2MyMzg3NmE4OTdjOWU2MDgxM2FiIGxlZ2FjeS10cnVuaworMzMwNDEgYmFlNmNlNmQxZTVhMzdkMjZkYzEwYTY3M2VjYTU4OTYwMWZkZmQxNiBsZWdhY3ktdHJ1bmsKKzMzMDQyIGNkNWVjYzViMzhlYjg1OTdmNjYzNjE1NDA2Nzc3M2I2ZmE5NWQwMTMgbGVnYWN5LXRydW5rCiszMzA0MyBlZmYzMzMzNGNhNjczN2QyMDYxNzQxOWZhNTAwMWQxNGVmMGQ0OGIwIGxlZ2FjeS10cnVuaworMzMwNDQgZGI0NmNlZGFmN2NlMjBiMjE0NDA5MTNhNDc1NmM3OGFjMTQ2YzU1ZiBsZWdhY3ktdHJ1bmsKKzMzMDQ2IDg1NzQyOGNiNDE4YzdjOGUzZmE2OTE5NGEzNmM3N2YwMmUxNTg1NmQgbGVnYWN5LXRydW5rCiszMzA0NyA2NTQ5MDg4NDdlZWY4YmY2MGRhNjU2ZmRjMGYwNDNkYzcyZTdiMDkwIGxlZ2FjeS10cnVuaworMzMwNDggM2IyZTJiMTQ2ODFjMDJlMGJiMjMzOWMxMzdiM2M2MGE3ZDIwYmI5YiBsZWdhY3ktdHJ1bmsKKzMzMDQ5IDllMWY4ZmM1ZTcxZDMzNDcyMmI2MTM3N2Y3MzAwZGViNTQ1NmI3N2YgbGVnYWN5LXRydW5rCiszMzA1MCAyNmUwN2E2ODQ4OTBjYmNjOTc0YmY2NjhhMmQ4MWEyOWJlZmRkMWQ4IGxlZ2FjeS10cnVuaworMzMwNTEgY2UyNWI0ZDc0NmVhMTAwNjdlMGNhMzVmYzVjMWE3ZWEzNDZiN2JjMyBsZWdhY3ktdHJ1bmsKKzMzMDUyIDkyZmZlNTAyMTEyODE5ZjMzYzY3MTFiMWNlMzkxZmJjN2UzMjY2OGUgbGVnYWN5LXRydW5rCiszMzA1MyBmYTYwNGFmMGNkYmZiNjMxYmY0YjE0ZmZmODVlNmUzNzI1YzI1ZjVkIGxlZ2FjeS10cnVuaworMzMwNTQgNjFlOTY2YzllY2U4ZDkwOGRhZmM1YzAzMjRlYTUxZDA1NjFkZGU4ZCBsZWdhY3ktdHJ1bmsKKzMzMDU1IGU2YjBhNDA2ZGMzMWVmNDJlZmZkODYxZTc1Y2JmOGRmZTVmNzY3ODggbGVnYWN5LXRydW5rCiszMzA1NiA1MjU3NjY4MTdlYjY4YjYyZGFlMTAwYzRhZjc2YmM1MWMwOGM2NWZmIGxlZ2FjeS10cnVuaworMzMwNTcgYjBhN2VhYzZjNjUxMTAxYjdmYjcwMzU5N2Q5N2RhYWUxYTU1NzY3MiBsZWdhY3ktdHJ1bmsKKzMzMDU4IDgzMjM2ZjU4ZTY4MTIxZTM2NTJlZTliMWY1YTJkODI1MjRkZmExZWMgYW50aG9ueS1wYXJzZXItYnJhbmNoCiszMzA2MCBjZjBiYWFmMTZlMGQ3ZjUyMWRlYjAwZTFmOTVjZGRkZmI0NDA0MjA1IGxlZ2FjeS10cnVuaworMzMwNjEgYTJkNGM2NGY1YjhiMzE0YjUzZTRhZGEwNjdiOTZhNzVkZWZiN2M2ZCBsZWdhY3ktdHJ1bmsKKzMzMDYyIGQxYThjNzMyMzU5ZTdkOTQxMmIyMGFkY2M5NGY3MjMxNDlmZTcyODMgcmVsZWFzZTIyLW1haW50CiszMzA2MyA4YzVhNjg1M2EwMmFkYjgxYmQ2N2VhOGEwOGY0YzI2ZjUxNzJiOGQ3IGxlZ2FjeS10cnVuaworMzMwNjQgYmVmZmM3MzY2NmZkMjBjYTM4YjYzZDRhM2I0NjEyNGNmM2VjY2I2MSBsZWdhY3ktdHJ1bmsKKzMzMDY1IDNiNTRkZmYxMzMxMDFlZTI5Yjk0OGJhMDgxN2M5NDZlZGQ0ZWViNDAgbGVnYWN5LXRydW5rCiszMzA2NiA5YmI2ZjNjNWIwNGEzZWY4Y2VjMTRmMGUzMGY3NzRhYTJhZWY4YThiIGxlZ2FjeS10cnVuaworMzMwNjcgMzFiMmNiYTY0YjM5OWJmNTkzMTcyM2UxNjYzOTFiY2MyNzgzMTU1YyBsZWdhY3ktdHJ1bmsKKzMzMDY4IDI5NzYwMDU2ODg0YTllNzE1MjFlYWU1MGZkYzZhMzZiMWIzMjllMzUgbGVnYWN5LXRydW5rCiszMzA2OSBmMmRmOWM5ZjBmY2I2MDliNmU5Njg0Njk5ODIwMjYwYzBhYjZjM2FiIGxlZ2FjeS10cnVuaworMzMwNzAgYmFjMmMwZTdjMjBhMTIyMjUwMDBhZTY5OWRkN2ZhOGMyZjdhMWNhNyBsZWdhY3ktdHJ1bmsKKzMzMDcxIDM1NmJiNTljNTQ4NmIyZTVlYjJiMWY1YTJhMjllZGViNjZiOTU4MGMgbGVnYWN5LXRydW5rCiszMzA3MiA2NDM4NjQ2NGY3MTY5MTE3N2U5YTQyZDcxYmE0NDg5YTFlYWNlMWFhIGxlZ2FjeS10cnVuaworMzMwNzMgMGE0MGM2ODdhZjVlYzk2ODAwODAzMmU3NGRlMmIxNTQwMzI2YTgwMyBsZWdhY3ktdHJ1bmsKKzMzMDc0IDg4OTUxYTVmZDJhOWVlYzAzZjQ3MTU5YWMxNzhiNTBiNDRmNjA4NGYgbGVnYWN5LXRydW5rCiszMzA3NSBhYjFkODVmOTg0ODU2ODc1NTBiMTI2YzQzZjI1YjE4Yjc3MDE3YzI4IGxlZ2FjeS10cnVuaworMzMwNzYgOWUxZDc4MDlhOTk4MTZhZDlhMDc5NTI4NjYwMDlhNmJkMjJiOGUxNyBsZWdhY3ktdHJ1bmsKKzMzMDc3IDE5ZjRmNDhiYjAyYTdlNmUwMTRjM2QzZjI5ZmFkNTE0YjIzNjJmMzYgbGVnYWN5LXRydW5rCiszMzA3OCA1YThmZDViM2U0YzQwNTEwYjA1NzgwYWNkMzlmNWU2MWJhODc4NTA3IGxlZ2FjeS10cnVuaworMzMwNzkgZjg3ZmNkMDg3MGJmMmM5ODZkZDFkODA1MzAyMWUzNDNkMjQ0YjcwMCBsZWdhY3ktdHJ1bmsKKzMzMDgwIDJiYTVlYzZiM2NkYTJmYjBlN2VkYTU0Nzk2NDBiYTNlNzA3NjY1NDUgbGVnYWN5LXRydW5rCiszMzA4MSBjZjhhZTNiMGRjZGM5NzBhYTg5NGUyZmQwZGQwMTYwMDZjMTI2N2FmIGxlZ2FjeS10cnVuaworMzMwODIgN2M0OTgzMWQyM2M1OWIwN2I2NjM2MGQ3NDc4MzI5MDgyZDlkN2ZjYyBsZWdhY3ktdHJ1bmsKKzMzMDgzIGZjMzkyZGFiZTJlMzBmMGVhOGU5MGViM2MyZDJhODA4NjUzOGJkMDYgbGVnYWN5LXRydW5rCiszMzA4NCBiNmMyNzFiYTAzZTE4MTQ0MzY1YTM4NzIxZjZmMzZlYTAwYzM5NGNlIGFudGhvbnktcGFyc2VyLWJyYW5jaAorMzMwODUgMDg5ZmJlM2ExMTRlZjliZWM2NGFiNTlkNmQ3NzA1M2QyZGJiNjAwYyBhbnRob255LXBhcnNlci1icmFuY2gKKzMzMDg2IDBkNjFhMjdjMzg5NjllMDY4NDZhZTljZmE5MWIyYzEyZTdmNWI0ZWEgYW50aG9ueS1wYXJzZXItYnJhbmNoCiszMzA4NyBmZmQwMmJhYWIyNTkzMjBlNzMyNmMwOTc2Mzc5MWI3ZjY3N2M5NDNiIGxlZ2FjeS10cnVuaworMzMwODggNzBkNjI1ZmY1NjJiNWQ2OWMzNTliNzRjNGMyZDQ2ZDNiYjJkZWQzZSBhbnRob255LXBhcnNlci1icmFuY2gKKzMzMDg5IDkyM2U2ZmI4NTVmZjRmN2EzNzMyYjNhZTQ0MGMxYjM1NWJiY2IxNTUgbGVnYWN5LXRydW5rCiszMzA5MCBlZGNmZWY5NDRlMmY0MDZjODI3YWIxMTZmODBmYjRhNjQzYmU5NWQwIGxlZ2FjeS10cnVuaworMzMwOTEgNWM1NmJmM2NiMjA1NTA4NTI5Mjk4NGIyZTI4ODU5YTExN2VkZmI3MyByZWxlYXNlMjItbWFpbnQKKzMzMDkyIGM0ODFjNjg2Mjc1YTc4NWE1OTMwNDVmMGRhMDk5NWM1YTg2YzZhNjAgbGVnYWN5LXRydW5rCiszMzA5MyBiODBhMjIyNTBlNGYxMWE0YjQ3YjVhMDFjZDI4MGM4NTVkYjVjYzU0IGxlZ2FjeS10cnVuaworMzMwOTQgZWZlZDY4OTczYTNiZWYzNDA4MjI3MzYwNWIyY2RjN2RjZGI3Y2JhMyBsZWdhY3ktdHJ1bmsKKzMzMDk1IGUyZjI0MTBjMDk2ZTAzZjNkNDIwZjdhMDMwN2RkYWU1ZThhZWMyNmQgbGVnYWN5LXRydW5rCiszMzA5NiAxOTMzOTdjNDRhZTUxNjRmMmVjMDc4M2YzZTA0MDk1ZWRkZGEzODQ0IGxlZ2FjeS10cnVuaworMzMwOTcgZTY5ZTU0NTUyZDEwOGRiNjc0NDQ3YmRmZjg4MzlkOTdlMmM1YTZjMiBsZWdhY3ktdHJ1bmsKKzMzMDk4IDBiYTdjMTAxNjQ4YWM4MjgzNDBjOGU0ZTczNTRmYmI4NTgxZmU1ZGYgbGVnYWN5LXRydW5rCiszMzA5OSBmYTQ4YTkwZWRhMTI1YWViMmU4NDhiMWUwOTZhM2ZlNmYxMGY3Yzk0IHJlbGVhc2UyMi1tYWludAorMzMxMDAgMTc5ZDU0NTJiYjlkOWY2MTE0YTQzMDhkZmFkNzNhODFmODcyZDY4NiBsZWdhY3ktdHJ1bmsKKzMzMTAxIGI0MDkwMmI0MjI5MGRiNjk0ZWZlMzNiYzIzNjYzMDZlNjEwOWNmN2UgbGVnYWN5LXRydW5rCiszMzEwMiA3YjcwMDQzOTNiNWIyNmYyNTNlNmYxYzFlMTU3ZWVhNDVjYjE3YzA0IGxlZ2FjeS10cnVuaworMzMxMDMgNTJiYWFlYzdlNWNmMDg5ZjM1MTY1NjhkNjE1OGIyYWY4ZDY1YWQyZCBsZWdhY3ktdHJ1bmsKKzMzMTA0IDE3NDMxYmE4Y2M0YmZhZGEzMjY4NGFhZWY0NzE2MjVjYTU3MTVmMTkgbGVnYWN5LXRydW5rCiszMzEwNSA2ZmVjYzk5YWZhNjlmZmQ0ODBhMjkyZTYyMGQ1MDFlZTZlNzU0NzNmIGxlZ2FjeS10cnVuaworMzMxMDYgYmIxOTEzNGUwYTRkMGI5ZTQ0MzMyYmQ4NWVhOTdjMzBkNDNkYWVmMyBsZWdhY3ktdHJ1bmsKKzMzMTA3IDhkMTYwMDk1ZWI2NjgzZTNjMjJhNTg5NzYzOWZkZDY3NzMwN2Q4NDIgbGVnYWN5LXRydW5rCiszMzEwOCBlNWQwMzM2MDU3MWQ5N2NhZmRlZDQyM2NjODY4YTllNjJlMDYzMzRhIGxlZ2FjeS10cnVuaworMzMxMDkgZTk5NTNiMzk5ZDU1M2Q1Y2M4ZGYwYWU5YTc5MDc0MmY0MmMzMjEzNiBsZWdhY3ktdHJ1bmsKKzMzMTEwIDJjYjk2OWZmZTFiZjI4ZTU0YjA5ZmNjNjQ3N2E1YmVmNjVhYmY5MjYgbGVnYWN5LXRydW5rCiszMzExMSA1Yzc2Mjc1Mjc4MmMyOTM4MjhkMDkxMmNkNTRmY2M0NzA1MzllNGMyIGxlZ2FjeS10cnVuaworMzMxMTIgMmQ2OWE3MDdjNDkyOTg1NDkyYTMxZjNiNTc3NTNiOWIyZDI1NWE3NSBsZWdhY3ktdHJ1bmsKKzMzMTEzIDU2MzQzODE2YjU4OTdmOGFmNzAyZjI1YTBkMTU4MGU4Njk2ZDMyNTUgbGVnYWN5LXRydW5rCiszMzExNCAwNTA1OGQ4MTM0NDE4ZDQ4ODU4NDUzZTExNGJmMDliNGRmY2MyODk2IGxlZ2FjeS10cnVuaworMzMxMTUgMzAxNmExOWUzMjBlNjQ1MTcwNmY5ZTBmNTdjMmM0MWI3OTQyZDNkMiBsZWdhY3ktdHJ1bmsKKzMzMTE2IGVmYWQ1OWYzOTU2NGJjZDk0ODE3OTcxN2NiZGY4NmIwYjZmZDhkMWMgbGVnYWN5LXRydW5rCiszMzExNyA5YjcyNTU4YTFlYjlmNDBiYjJjMGE0YmUxNzE5ODFhYTc2NWEzMTg4IGxlZ2FjeS10cnVuaworMzMxMTggNmQxNjBlZTM3MTk2NTU5ZTNkYzYyMzdhNzc3NzU0NjE1MzBjZTM4YiByZWxlYXNlMjItbWFpbnQKKzMzMTE5IDFmMzM0MTk4ZTZkNzYzYzZjMGFiNzhkODA4MmFhNDc5ZGE2NzFkMzMgbGVnYWN5LXRydW5rCiszMzEyMCBiODIyYzJhOGUwOGY0MzA1ZmVhNGE2N2YyYTVhZGRkNWJkNWVjMjkyIHJlbGVhc2UyMi1tYWludAorMzMxMjEgOGJlZDU1MjAzNTU5ZjhkZDVjNWFjMzkxYjc2YWM3ZjI0MWI3OWVkOCBsZWdhY3ktdHJ1bmsKKzMzMTIyIDIxYmZjYjdjOTc2ZGI1ZTQzYzg3NzBjYjU2MWY1MmFmNWRhMzlhNWQgcmVsZWFzZTIyLW1haW50CiszMzEyMyA5ODgzY2Y4ZmYyMTdjOWVkODgyNTNkYzRlNDFhMTJkYjdiYTI5ZGFmIGxlZ2FjeS10cnVuaworMzMxMjQgOGIxNzY2YzhhZDNiYWI0ZTljYjE1MGYyNDBiODI4ZDc2YmY5MThlZiBsZWdhY3ktdHJ1bmsKKzMzMTI1IDA2MmUzNDJjY2ZmNThiNjI5NTM1NGNkYmYxMGYxZDQ1YTI0M2IwMDEgcmVsZWFzZTIyLW1haW50CiszMzEyNiA3NGEyOGYyZTk0Y2Y5ZTI5MmVlZWQ4MTA4NWY5NTY1NTVmYjVmNmVjIGxlZ2FjeS10cnVuaworMzMxMjcgMmNiODkzMGNlMjI1OTkyNmFlNGE3OWE3YjljZDNiOWNmZGE5NjIyZSBsZWdhY3ktdHJ1bmsKKzMzMTI4IDFlMmU1NDgyMTc4NWY5YTRlYmVkNmVmODdmYjQ0ZDg1ZDdjMmM5NzMgbGVnYWN5LXRydW5rCiszMzEyOSAzNTIzYmE5MjQ1MGNlNjQxNjA2Yzg5N2QyZDhjZTRkMDllODEyM2U2IGxlZ2FjeS10cnVuaworMzMxMzAgMDQxNWFmNjM0MTIyNThiZTFhYTQ1ZDY5MWRjNjU2MzZjZDhhMjM1YSByZWxlYXNlMjItbWFpbnQKKzMzMTMxIDVjNWI1ODc0NjQ4NjZkZDNkNzMzN2NiOTVhMTNmYjRlOWJjYTUyNmMgcmVsZWFzZTIxLW1haW50CiszMzEzMiAwY2YxZWM1OGUyMjBiYTY4NjJhMTQ5OWI1Njc4YTc0YjU0YmVmMDVlIGxlZ2FjeS10cnVuaworMzMxMzMgYTcyMWIwOTRmN2JjMmRiZmQ3MTEyNTU2YmU2MGZlNTQ0MWEwNTRkNSBsZWdhY3ktdHJ1bmsKKzMzMTM0IDRmMDc2ZmMwMTk1YWMyNjI0YWVhNDc4ZjhiYTU2MmRmNDQzZDMxYmQgbGVnYWN5LXRydW5rCiszMzEzNSAxYWI5OTc4MTIzYmVjZWExNDVmMDkwZmExZmEwYTExYjQxNjJjZDNhIGxlZ2FjeS10cnVuaworMzMxMzYgMTRhMTU0NzEyOWZiZjVlYmIyMjhiYzgyOWJmMDBhMGYxOTJmMzJiMyBsZWdhY3ktdHJ1bmsKKzMzMTM3IDMzMWFmNDVkZmEwZGMwMTc4ZDhhZjNjYTI1MWE3N2Y5MTg5MDEzOTAgbGVnYWN5LXRydW5rCiszMzEzOCA0ODc0NjE0Y2M3YTM1NzAzOTJkM2VjOWZhZmQ3ZTY2Y2QyZjY5OTU1IGxlZ2FjeS10cnVuaworMzMxMzkgNTEwNjBiMTY5YjMyMzdhNDE3ODA2MWY5Y2FjMWZlMzcwMzEwOGQ4NSBsZWdhY3ktdHJ1bmsKKzMzMTQwIDg5MmRmYzllNzI1NjdmZGI3NzlmOTcyMmUwYTQxMDQ0MGQ4NDhhY2UgbGVnYWN5LXRydW5rCiszMzE0MSBkZWI5NzE1YmM4YWU3YzAwZTZjNDYyZTkzOTUyNjBlMTFhM2NlNWVhIGxlZ2FjeS10cnVuaworMzMxNDIgODM0Y2QxMjE4ZjFiNGQyNDU4NWU4MDAwMzk5ZDNiYmVmNTZjOWZjZCBsZWdhY3ktdHJ1bmsKKzMzMTQzIDA4NmJkOWU3ZDI0NDJhMGJhNmMzNWVhZDQ3M2Q2ODZiZGJlMzE4ZWIgbGVnYWN5LXRydW5rCiszMzE0NCAwNmYyOGFkZWE2ZDJjMDkxYWM4ODdmM2I3ZWYxOTQ2ZDJkYjY1NjMwIGxlZ2FjeS10cnVuaworMzMxNDUgYmRmZjk2NWQyNjAzMjk5YWM2NjFlYzMzNDMyOGU4MDlhZDczMTdkYiBsZWdhY3ktdHJ1bmsKKzMzMTQ2IDIzZTdiMjU3N2E0Njg4MDViZjYyNjBjYjFmYTY1NDY0YjA4OTllMGQgbGVnYWN5LXRydW5rCiszMzE0NyAzMTMzYjUwZTk5ZjMyNjVmOTkzNTk0MWU0NGQyOGIzYTVjYjljYWVkIGxlZ2FjeS10cnVuaworMzMxNDggODdhMjUzYWFhMGQ1MjEzN2NkNzUxMzZhNjVjNDc2MzMzNzcwYzQ0ZSBsZWdhY3ktdHJ1bmsKKzMzMTQ5IDgxZTcwZjEyZDYyZmM4NDc3OWI1MmQyNTZjM2Q4N2JmYjU4OWExMTkgbGVnYWN5LXRydW5rCiszMzE1MCAxMzg2Zjg2YzUwOTVmNDc1OTQ2MzRlYWZhMTQ4MWNiNTAwMWQ3ZjU2IGxlZ2FjeS10cnVuaworMzMxNTEgNTE0M2NmZTdjYzc1Y2MwNDRmMDlmNTBkZjBjMThiMmZkODM5OTI4NCBsZWdhY3ktdHJ1bmsKKzMzMTUyIDYwZGFiYTkzNzc1YzUyMzYwMzY1OWQ1NjViMzNiY2I0MzViMWI2ZjUgbGVnYWN5LXRydW5rCiszMzE1MyA5NzE4ZGY4NDlkYTkyMTAyZGI1ZDA2ODRlNjkzZjI2ZTIyNjFjNzVhIGxlZ2FjeS10cnVuaworMzMxNTQgMDg5MDQ2NjAxMjcwNjU5MjllOWI0MmFiM2QyNWM4NmQ2MGEzMzAwNiBsZWdhY3ktdHJ1bmsKKzMzMTU1IDUyMjA0NzQ2NjBjZTgxZDI2ODg0OGNiNzhiZTZkMTJmMTg0OGZiODcgbGVnYWN5LXRydW5rCiszMzE1NiBhYmMyYTIwZGMzYTMzNGMyY2Y0YTg1YzJjYWRkYmEyZWQyNzJmNTllIGxlZ2FjeS10cnVuaworMzMxNTcgNDBjNWYxYzA4ZWM4YWFiMGQxZjhjYWUwNTIwYWY2ODMxOTdkMjQ2MSBsZWdhY3ktdHJ1bmsKKzMzMTU4IDEwMDcwOGViOGM4MmQyYzc4N2I5ZDc1ZTdkM2I4OTk0OGE5NGRmNjAgbGVnYWN5LXRydW5rCiszMzE1OSA5NGY5MTA3ZDlhNjNhOWQ5YTJlOTIyNTczMzAwNWFiNDcyODVhNzI3IGxlZ2FjeS10cnVuaworMzMxNjAgNjUzMWM3NmI2MDRkY2FmZTJjMjU0Y2I0YzU1ZjE4YjkzZGJlZGRiNyBsZWdhY3ktdHJ1bmsKKzMzMTYxIDE0MDJmMjY1ZTQ4ZjYxM2JhZjllYjM3NGM1MDQ0MGQwMTBiYjE5Y2UgbGVnYWN5LXRydW5rCiszMzE2MiBkMGQ0ZDY5NmFiMjRlOGQ2MjgzZTk1YzMyYTE0NzY3NjllMzViOWQ3IGxlZ2FjeS10cnVuaworMzMxNjMgYWE4NGVkZTFjMzY0ZWJkY2Y1MmVmMzY1NmJlZTE5NDM5MjRkMzA1MiBsZWdhY3ktdHJ1bmsKKzMzMTY0IDZjNmIzMjFkMWQxMGVmZDFmMDQwZDUxNTFhY2Y3MDAzODdlNmZlYmMgbGVnYWN5LXRydW5rCiszMzE2NSA3MWMwNmJjNWE3M2VhMWI2ZTY1MzkyNmRiMTI2OTU1NzQ0MTQzOTQwIGxlZ2FjeS10cnVuaworMzMxNjYgN2UzMzYzYTc2NjFkMjU1MWNjNjVlNjhkM2QyNDFiYzk0OTQzODgwOCBsZWdhY3ktdHJ1bmsKKzMzMTY3IGQ3MmIzZjBhNTdhOWRkMmM3NDA0ODRiY2VkZTJhOGZkODNkZGM2MDggcmVsZWFzZTIyLW1haW50CiszMzE2OCA1ZjAxZDUxNThkMWY4NmUyMzNjZGIzMDQ5Y2ZhZjMzYjNiYmY0YzljIHJlbGVhc2UyMi1tYWludAorMzMxNjkgZGI0MzEyOTQ3NDk0MGQ4MDQ3OWJmMDFlOTExYjc5NDlhZGFiYWUyMCBsZWdhY3ktdHJ1bmsKKzMzMTcwIDExNTE4YjZjZTVlYzAzZDM5ZjUxYmM4NjZiY2JmZTE2NmFhNDE0NmQgbGVnYWN5LXRydW5rCiszMzE3MSA1MzU1NDY4OGU1YTIyZThmYTI1MGVhZDUzY2JiZGYyMmZlOTY0M2I0IGxlZ2FjeS10cnVuaworMzMxNzIgMjllZWU1YzFkZDQyZmM4YTQxMDM4MDFjMjgyNTMwZmFiYTM3ZWI3OSBsZWdhY3ktdHJ1bmsKKzMzMTczIDAxZTkyNTM3MWQ3Yzk0MDg4Y2E4MTg5MjNlMWQxZmRlMDEwNjRmZGMgbGVnYWN5LXRydW5rCiszMzE3NCBkMWFjZjg5ZDFjNDlhNmQ2MDExNWZlZjM0ZmE0ODhiNjAzMGRiZmFjIGxlZ2FjeS10cnVuaworMzMxNzUgNjQ0NGVhM2RjODNjNDRlMTU4MjE4NDcyNjliMTBmNGJmNjQ2NWRiZiBsZWdhY3ktdHJ1bmsKKzMzMTc2IGU1NGUyZGU0NmJjM2Q1ODczN2Y0ZjczYmM5MjE4OWQ1MGYyNDJiZWEgbGVnYWN5LXRydW5rCiszMzE3NyBjYTllMzU5OGNjZmI1ZWM4MWIzZmRiYzlmOWYyNjRkYTYzMmU1MDEwIGxlZ2FjeS10cnVuaworMzMxNzggMjMxYTM1MTBlMjQ2ZmUwYzk0M2U1NmFiMDRjYWU4ODc2NWY4NjdmMSBsZWdhY3ktdHJ1bmsKKzMzMTc5IGQ3NjFmZjU1YjNiZWY0MWZlNTJmYTNlOTVhNjdjOGIxOWMxNmQ4MDggbGVnYWN5LXRydW5rCiszMzE4MCA5NGFjMWQ0MmE0MjA0ZjJkMGI4NmNiNDhhNDhjYzA0ODgxYjM1YTJhIGxlZ2FjeS10cnVuaworMzMxODEgMDVmYjUxZDA3YWRhZjViZjMxNGE4Nzg1ZWM4NTBhMmUwNDI5Zjk4OCBsZWdhY3ktdHJ1bmsKKzMzMTgyIGM2ZWI1NjllNGI3OTMwOWI4NTBhOGM4YjI1MjBiYzk0ZTIwOGNiNmEgbGVnYWN5LXRydW5rCiszMzE4MyA1ZDExZmRmYTdjMDA4NDc1MDA1NDIxYjNjMWQ0NTBjMDAwNGJiNzJjIGxlZ2FjeS10cnVuaworMzMxODQgYjc0ZTBjYzIxY2IwNDRmYWJjYTU1ZTJhODg1ZWQ5YjRmYmY5YmQ2OCBsZWdhY3ktdHJ1bmsKKzMzMTg1IDcwZTY0OWZhM2ZjZDEzOTE2YThhYjI1NGNlYTYwNWNhZTc3MGVlZmQgbGVnYWN5LXRydW5rCiszMzE4NiA4N2YzMGZjZmFkNDg4ODFhMjNhMzdiYzYxYmY3NzEwMzk3OTUyZTQyIGxlZ2FjeS10cnVuaworMzMxODcgYjFhYTFkNDM5Y2JhMzU1ZWVkOTAyZTFlMmYxNjdkMDQ1OTFkNTU1YiBsZWdhY3ktdHJ1bmsKKzMzMTg4IGZiMzMyYTA5NDliNzRmNTYzMTVmNzQzNjczNjkzYTYyN2JiYmYwOGUgcmVsZWFzZTIyLW1haW50CiszMzE4OSBmNmQ1MDNkZTQ1YmRlMGY5ZjFhNDM4OGNiMzg1MDJiNjQ3NWUzMDBkIGxlZ2FjeS10cnVuaworMzMxOTAgZjY3ZTRjNWFlYTkzN2RjMzgxNDQwODQ0OGI1NzZlODNkMmQzNjA1NiBsZWdhY3ktdHJ1bmsKKzMzMTkxIDdhZWU2ZWY1OTZkZGJkZTYzODNhOTY1ZDUxODYzYTUwZTQ5ZWQ0NWMgbGVnYWN5LXRydW5rCiszMzE5MiBmNDhiYjk0ZjMyODk1ODMyODcyNmU4MzhkY2MyNGI4NTRmZmRjOTFlIGxlZ2FjeS10cnVuaworMzMxOTMgZjE3NWY3NzliZTg5MGI3ZjlmMWQwYjA4YTUxMGI3OWMxNWI2MDE3NCBsZWdhY3ktdHJ1bmsKKzMzMTk0IGVhNzdkNDNlMjAzZDFmNTZmNTBjMTViOTRlZmUxMTIyMzdmYzkyOWMgbGVnYWN5LXRydW5rCiszMzE5NSAyZmJkMjU2YTFkYjI1NjI2YmJmZjQxZGE2YzkwZjg2OTgwY2UwYjEwIGxlZ2FjeS10cnVuaworMzMxOTYgMGI1MzIyYjg1M2QyZjc1MWI2MDMxMGJkNmIyMTA1MGZhNGRkMzhlYiBsZWdhY3ktdHJ1bmsKKzMzMTk3IDhiMDMwMGU3ZjFkY2IxOTkwMTljNjlmMzhiMGYwNmRiZDExZGQyZWQgcmVsZWFzZTIyLW1haW50CiszMzE5OCBjNjQ2ODdjZDViMzcxZDIzMjM4MzkyM2Y3YjA4ZjU1NDY4YTNmNmQ3IGxlZ2FjeS10cnVuaworMzMxOTkgMzRjMDQwZGRmOWU4ZWFkMjQ0NWEyMWQ3YjJiZDBhOTE1ZjU3ZTg0ZCBsZWdhY3ktdHJ1bmsKKzMzMjAwIGNkNjJiMzM1OWU5NTYwZTVmODc0NTE1ODQyNmNjMGUzZGQ0ODNiMzggbGVnYWN5LXRydW5rCiszMzIwMSBkYzZjMjFkYzg2ODRlMDYzOTdjYzAxNmQyMmM3MDU3ZTg0OWFmOGY3IGxlZ2FjeS10cnVuaworMzMyMDIgZmFmYjZlYjBmOTdlOGU0YzY5NDIzNTMzMGUzYmRlYmYwOTdlYTYzNSBsZWdhY3ktdHJ1bmsKKzMzMjAzIGMzYmM3ZWQ5ZDMxNTk5ZTBlMGY5YmQzODg0ZTZlNjRiZGRlY2ExYjYgbGVnYWN5LXRydW5rCiszMzIwNCAyZDQwMjdlZmJjMTJlMjJmZGEyNzg1ZWFjM2NiM2U4MDYwYWYxMWFhIGxlZ2FjeS10cnVuaworMzMyMDUgNjliYzdjYTVjYzFhOGY1MDFmOTM2ODJhMDBmOTA4YzIxYmU1NjljMSBsZWdhY3ktdHJ1bmsKKzMzMjA2IGUyMjgzMzZhYWYwOGQ3YzM1N2EzZDA2NmY4YWEyYzk3MGFiZjU2YTggcmVsZWFzZTIyLW1haW50CiszMzIwNyA5MTk3Mjg1YTM5MzM1ZTA0YjJlNDQ0Y2U0OWIzMjhhM2YzYjQwNGYwIGxlZ2FjeS10cnVuaworMzMyMDggMzI1OTJmMWE2ZjIyYjQ5OWEyMTJjNjg2OGZjMzk5Zjg4MDY1NDY4OSBsZWdhY3ktdHJ1bmsKKzMzMjA5IDZmZTAyMzY5MGQ3ZjEwZDNjYzUwNmJiYTVmMTZiYjM3NzAwODU5ZTAgbGVnYWN5LXRydW5rCiszMzIxMCA5NDRmNjAyYjc4ZmU0ODg5YTEyNGMyYWYzYmVjMDg5ZDllMDI3MjBjIGxlZ2FjeS10cnVuaworMzMyMTEgODc4MGE0OWQ4ZWYyYzE0M2ZiNjU4MTJjNTE0MzEzNWZjNTI2NWQyMSBsZWdhY3ktdHJ1bmsKKzMzMjEyIDdjN2Y0MDQ1YmEzNjcxYTAyMDkwNjRkZjY5ZTVmZjI1NWY0ZjI3ZWQgbGVnYWN5LXRydW5rCiszMzIxMyA0ZDFmYTljNWNiMmNmMjVkOTBjY2E3MTYyM2JmYjc3ZTk3YzZhMDY1IGxlZ2FjeS10cnVuaworMzMyMTQgZTk3M2RlZDhhOTJhODgyODVlMDI5MTAwMmJiZjE4YjJjNjhlYzU1YiByZWxlYXNlMjItbWFpbnQKKzMzMjE1IDUyMDAyODc4ODliZDJhNDEwNGVlMzhiMjdkMWQ1M2NkMTMxMjhlYjQgbGVnYWN5LXRydW5rCiszMzIxNiA2YTVlOTVjNjdkMzIxYzEwNTg5ZDkzZDllMmQwMjY0ODY2ZTQyODU4IGxlZ2FjeS10cnVuaworMzMyMTcgMWE0OTg2OTIyMzU3NzIwM2UyNDM1YmRiNGYwZDA3MDI2YWRjMTY4MCByZWxlYXNlMjItbWFpbnQKKzMzMjE4IDRiODZkY2FjMjIwMTA3NmQ2Mzk2ZWUwZjIwZjFhODAxNDViNDM5MDEgcmVsZWFzZTIyLW1haW50CiszMzIxOSBkZTNkNDllMGY2NDkxM2MwMzg5MWEwZTFiNjdhYjQxZDUxNGUyMWE4IGxlZ2FjeS10cnVuaworMzMyMjAgNDI3MjMyMmI5MmU1ZTllODI1NjZkMjIyZGM2Njg1OWE2MDJiYzg2NyBsZWdhY3ktdHJ1bmsKKzMzMjIxIGU1ZDNiMWQ4OWM0MDE4MDBkMDRkN2FkNDA1ZmNmYTI5ZmYzYWFhMjcgbGVnYWN5LXRydW5rCiszMzIyMiA5NThiNDBkODBiMzMxODMwZDAzM2JhY2MyYWEwMGEwY2RlODQzN2MwIGxlZ2FjeS10cnVuaworMzMyMjMgYTI5NjIxNGQyZWJiYTMxNzBkMTkxODA4Y2E4M2VmY2UxMTMzNWQ5NyBsZWdhY3ktdHJ1bmsKKzMzMjI0IDcxZDNkYTExNTgzOGYzMzFhZTBmNGI1OGRjOGI5NzlmOTcwZGNjYjEgbGVnYWN5LXRydW5rCiszMzIyNSA0NDhjMTQ0MTk2NGZkNjBlOWJkYzU3ZDg4OTRkYzEzZDcxNWI2NWE2IGxlZ2FjeS10cnVuaworMzMyMjYgNzU2NDY4MzA3ZTYxNzlmZTg0ZjFkOGQzNDU3MDlkMjVkYjU2MTJmZCBsZWdhY3ktdHJ1bmsKKzMzMjI3IDkxMjU5YWUzNWUyOTk0NjcyMzk5MWNhNjk4NmIzM2Q4MTk5NDc0MmUgbGVnYWN5LXRydW5rCiszMzIyOCA4ZTkyY2MwNGI2NGIwMDA0YzIyYWY3NDAyNWFiYjFkNDg5ODIyYjc3IGxlZ2FjeS10cnVuaworMzMyMjkgZDE1ZTJiN2Q5OTFjYzkwYjE1NTRiYzg2NGRiMjdiN2YxM2Q5Y2Y3OCBsZWdhY3ktdHJ1bmsKKzMzMjMwIGVkNDVhOTk1MTMxMjY4YjI0Y2UwYzcxN2NkMzk0N2RmY2JkNDhkNDggbGVnYWN5LXRydW5rCiszMzIzMSBhZDAyYTM4YTk2ZWE5ZWRlYTFlMjcyZmRkMzdhNDZjZWM3MzM3MTg2IGxlZ2FjeS10cnVuaworMzMyMzIgZjI2ZDEzMjM2Y2U4NGE4MDllYzI3YjY1MWNmNzEwM2MyY2UxNmM1OCBsZWdhY3ktdHJ1bmsKKzMzMjMzIDFhYTkwNTdjMzhiNGVkN2E4YjUyNWExY2FhMDExM2FjYzcyMTZiMWIgbGVnYWN5LXRydW5rCiszMzIzNCBlZWQ3NDMwYjdhZjE0YTdmNTllM2M1ZTU0OTg0ZDdhYjM4MDE2OGI5IGxlZ2FjeS10cnVuaworMzMyMzUgNWM4NzM3YmQ0Y2U2ZDRmYmE1MjUxM2RlNmY1ZmIzY2QxYTEyNGRhYiBsZWdhY3ktdHJ1bmsKKzMzMjM2IGUyZjc4MzQ4ODAyNDhkNGMzMjVmYmMzODlkZTg5ZGI4ZTI4MTllYjAgbGVnYWN5LXRydW5rCiszMzIzNyBjZGM3NWRlMmY1YzFhNjRmM2FkZmYwYjQ3YTNmMDgyZDgwYmNmNDZiIGxlZ2FjeS10cnVuaworMzMyMzggYjhiNTdiZGJmY2VkZjRjOGYxNDYwNDAyNDMxNWYwOTkwYzk0NjQyYyBsZWdhY3ktdHJ1bmsKKzMzMjM5IGY5M2I5MTllNTcyOTBlZDI2ZDUyNzIxYTJjMmY2ZTFkYzQ4OWM0MjEgbGVnYWN5LXRydW5rCiszMzI0MCAxNjllMDFlYzM1OTY1OWZjZTNhNjNhNDEwZTQ0MGE2NWUzN2Q0NGJlIHJlbGVhc2UyMi1tYWludAorMzMyNDEgNTYyM2Y5ZTJiNTU1ZjBlOTcwMDZjYThhMGMyMWVjZDQ0NjZlMjYwOSByZWxlYXNlMjItbWFpbnQKKzMzMjQyIDYwY2U3M2VhOWM5MmYzNDJmNTUyZjY3NTVlY2UxNGFkMGVjNmExZGIgbGVnYWN5LXRydW5rCiszMzI0MyBhOWE5M2ZjNTBiOGQ4YWU3ODc4YjYxYzVkZGYxMDVhMmZmYzQwNjM2IGxlZ2FjeS10cnVuaworMzMyNDQgMzEyZmI3NmI3M2NjN2M3NGQxOTE2ZGZhNzIzZTVlMzYyNTRmMmNmMSBsZWdhY3ktdHJ1bmsKKzMzMjQ1IGVlMTRlNWIwNmVkMTM2YjEyMzgzZGFiNjFkMTYyOWViYmFjNzc3OWMgbGVnYWN5LXRydW5rCiszMzI0NiA3ZmU0ZTlmMTY2MzQ3YjY0MWZhNGRlZDZkM2NkZDRkNmNkMjE0NWY4IGxlZ2FjeS10cnVuaworMzMyNDcgZGEwMjQ4ZmNmYzUyNTFiY2Q3MTBjYWIxNTE3ZDIwNzhjMjA0ODU1YiBsZWdhY3ktdHJ1bmsKKzMzMjQ4IDlkZjFmM2Q4OWU2MDBjNDE4N2UzM2Q5NTE0YjYzOGMxMTQxMjIzM2YgbGVnYWN5LXRydW5rCiszMzI0OSA4YjE2MzM3MDM3MmRkYWQwZTAzNDA2NDg4ZDA1YjBjNTk5MWJhNmM4IGxlZ2FjeS10cnVuaworMzMyNTAgN2Y3OWVhZDcxMmY1OGQ0NzFkZjdhNDQzMDY3MzUwOTcxMjM0MzRmOCBsZWdhY3ktdHJ1bmsKKzMzMjUxIDk5NjVlYmNkZDE3MmY5MmY0MTA4ZjM1MzBhNWE1OTBmNGQ4YWNhNjAgbGVnYWN5LXRydW5rCiszMzI1MiBiNzhkNjNkYWUwMzA3NmU5Y2RhN2Q1ZjdmNjM0YWQ5NTNlZDBjZjgyIGxlZ2FjeS10cnVuaworMzMyNTMgODgwN2U5MDFjNTI2Y2I0NGJiOWE2NjBlMzY5NzhhY2QyYzc2MzE3YSBsZWdhY3ktdHJ1bmsKKzMzMjU0IDRhM2VmMzgwNzhlNTUxNTdkMzdlZDRiOTI4MDg1NDg0OTA3ZjE2YTUgbGVnYWN5LXRydW5rCiszMzI1NSA5YTMwNDRlNTc4MWVhYWM1ODg0YzZiY2NiZTE4ZTYyMmEwM2ZhOTM2IGxlZ2FjeS10cnVuaworMzMyNTYgYTQwY2YxZDBhODg3ZmRmYjdjNmUzMjliM2Q3MTJiN2ZmZmM0YjRmZSBsZWdhY3ktdHJ1bmsKKzMzMjU3IGVhYTA2MmZkZDQ2YWIwMjY1NjE2Yzg0MDU0ZDgzOWIyYTFlZThiYjYgbGVnYWN5LXRydW5rCiszMzI1OCA4OTExY2E4ODk4MWFmODYyZTYzZTRhYWFlOWNiMjRjYTdjNWI3YThlIGxlZ2FjeS10cnVuaworMzMyNTkgYjM1ZmY5YjU5MTQ5MzFjMzg4ODBkOTI3MDlmNGU2OTUyMmZlYzQzYSBsZWdhY3ktdHJ1bmsKKzMzMjYwIDQ2NmI1NzllMDA4ODIyNjJiZmIxMmEyYWUzMTE1OGEzMTliYTRlNzggbGVnYWN5LXRydW5rCiszMzI2MSAyMDFjZWFmOTU5NzUxZjQ0MmEzYTYwOWI3NjViZmQyZmZjMjA1ZTg3IGxlZ2FjeS10cnVuaworMzMyNjIgMmIxM2I1OGFlM2E4ZTc2MzdhZjg0M2NjZjcyNDg1NTA5MjY2OWU1NyBsZWdhY3ktdHJ1bmsKKzMzMjYzIGVhMzg0YjFkMGQxM2RiYjY3N2NjMTk2ZjQ2MjE0YzAxZTI1ODIzOWUgbGVnYWN5LXRydW5rCiszMzI2NCA3YjUxOWVhNzUwMWFhYmYyOGFiM2E5MWU4MTU4MWZlNDI5YzUxOTVjIGxlZ2FjeS10cnVuaworMzMyNjUgY2FhOGMxMjBlMmNiMmIyOTZkNjA3Y2ZlM2RiZDA5Yzk5M2RjODhiYyBsZWdhY3ktdHJ1bmsKKzMzMjY2IGZlYThkZWUyNzMzMmZmY2Y1MmY1OTVlMWZlOWQ4NDEyNjIzYjNiNzYgbGVnYWN5LXRydW5rCiszMzI2NyA4YTI5MTZjNDMzZDk0ZmRiMmM5NDc3MzY5NWQ1YWE0OTg2MWE0MTE4IGxlZ2FjeS10cnVuaworMzMyNjggZTQzMTI2YzQ3MGE3NmVhOWZiZDNiOTJlN2U4Yjc4YWY2MzFmZjc5NSBsZWdhY3ktdHJ1bmsKKzMzMjY5IDJkMTZjM2VmZTE0N2U3YmQ0NGI3ZDc4ZjRmZmNkM2Y0ZjVhOTg2YTcgbGVnYWN5LXRydW5rCiszMzI3MCA2MGI1M2RiMTRhYTNjYzQxYTJjZWVjODQ3Yzg1MGZiZjVmOGMyZDQ3IGxlZ2FjeS10cnVuaworMzMyNzEgYmU2MjAwMDdlYzFmNTI2NTIwMTg2MDFiZmJlMmY1ODA1NDE1NmE2NSBsZWdhY3ktdHJ1bmsKKzMzMjcyIDAxNjlhY2RmMmI1YmMyNjk3ZTE3YWUwMmQyNjU2ZmNkYzg1NjNhZWQgbGVnYWN5LXRydW5rCiszMzI3MyBjZDNmOWIxNzBjMzdmY2JjMTkyYTdjMGU1MDk4ZWViNjIyZGVhMDNjIHJlbGVhc2UyMi1tYWludAorMzMyNzQgY2FjODU1Mzg3YjU2N2I2OTY3MGFjOGRiZTY4OTc2M2I4ZjYzMGViYiBsZWdhY3ktdHJ1bmsKKzMzMjc1IDg2MzQyZmE4OTIwZGFmZTMwYmYxZDNmOTk1YmQ2MTQwNzkxZGVlNjEgbGVnYWN5LXRydW5rCiszMzI3NiAwYmRiNGFjZWQ2ZTIwZDg2NmNjMzVmODdmN2NjYzg0NTE1MjFkNTljIGxlZ2FjeS10cnVuaworMzMyNzcgY2QwOTNhOTkyMzhkNzIzNjQ3ZDkyZTI0YzdkNTU5ZjIzNmEzYjQ4YSByZWxlYXNlMjItbWFpbnQKKzMzMjc4IDQ0ODFjNWJkYTE5NjZhZDg2MGExNjllMzAwMWNlNjk3MDA5OWM0NjkgbGVnYWN5LXRydW5rCiszMzI3OSAxYmE5MGQ1MTQ5N2JhNjg1NzAwZDhmMDA0ZGZlZjA5ZjQ0MWRiMDFlIHJlbGVhc2UyMi1tYWludAorMzMyODAgYmFkY2QxNThkODFjYTIzZjYxNzlhNDk2Y2QxMTczZTIxMmVkZDFjZSBsZWdhY3ktdHJ1bmsKKzMzMjgxIDU4MjUxZTBhOGI3ODdiY2UzYjM0ZjVmNWZiYzA5YmIzODRkZjAwZWIgbGVnYWN5LXRydW5rCiszMzI4MiBmODA2OWY3ZWRkNGEyOWJmNmM1MDRjZGZkYzRhOTU0OTAxNGZiYjU1IGxlZ2FjeS10cnVuaworMzMyODMgNzdlZGEwZmIwZTE0OWQ0NzIwMGUyYjg0ODFlOThiYjJkMWEzZjY4NiBsZWdhY3ktdHJ1bmsKKzMzMjg0IGRlZDlhYmNiOTE3NGFhNzc0ZDJhNzU1MmQ0MWVjZDFlNTk5YTMyMDIgbGVnYWN5LXRydW5rCiszMzI4NSA3ZDMwNTg1YTU5MzQwNTUxNWY1MTRjNDgzNWU0ZWU4NjhkYWQxOTAwIHJlbGVhc2UyMi1tYWludAorMzMyODYgODUzZTZhMmI5MDY4ZWU2NDMyMTQzMTcxMTMwNGQ1ZmZhZTlkM2IxYSBsZWdhY3ktdHJ1bmsKKzMzMjg3IGE0NjQwMjBmMTVkNjc1Mzg4N2Y2MmE3NGIxYzA5OWQ2Nzg5ODQwZGYgbGVnYWN5LXRydW5rCiszMzI4OCA3ZDQxNzg1ZmI2MGM2ZTQ4MjdlZDZiYTVjZmU0YjVkNzdjZTQyYjVjIGxlZ2FjeS10cnVuaworMzMyODkgYmExMmQyYjRiMzFkZGJiNmFkNDkyMzI0ZmJhMTg1ZTg2YjFmZmU4ZSBsZWdhY3ktdHJ1bmsKKzMzMjkwIGUxZmEwN2JmODU0ODg4NWIwOTI5OTQ0ZWUwY2RkZDY5NDNmZDgxM2IgbGVnYWN5LXRydW5rCiszMzI5MSBiYzEyMTVmN2RiYTM4NmI1ZGJmNGRmMWEyMDk5YjNhNzQ0MTgwYjNlIGxlZ2FjeS10cnVuaworMzMyOTIgYTRkNmJjNzFmMDkxYzI3YzllNGFlOTJiNzFiZmY5Y2VmNzBkZTM4YyBsZWdhY3ktdHJ1bmsKKzMzMjkzIDQxMGIzYzIyMjIxMTRjOTg1YjczYWFlMTI2M2JmYzA4N2RjNDQyOGEgbGVnYWN5LXRydW5rCiszMzI5NCBmODgzZGIyNWQzNDQ0YmRlYWEzM2VjMDM5ZGZiMGU5YzAyYjMwN2JiIGxlZ2FjeS10cnVuaworMzMyOTUgNjc2YWE2MjgzMGQwZTk5NTJiYWQwZWE3MTUxOTkzMGEzMWU3ODQyMiBsZWdhY3ktdHJ1bmsKKzMzMjk2IDUzMDRiZmYyNWUxODM0YTYyNzY5ZmNhZjc3YzFiYWM1M2JmYzExMGEgbGVnYWN5LXRydW5rCiszMzI5NyA2YWE5NzJhMjFhYzRjMTcyZDY1MmQ1NmY4Y2VkOTY0N2NiMmY5ZmE4IGxlZ2FjeS10cnVuaworMzMyOTggMWVjZGI5NGExODUyMmY4OWVmN2NhMTAxZTY3ODExOWUyMmMyNmQ3YSBsZWdhY3ktdHJ1bmsKKzMzMjk5IDlkZTgyZGJjM2JkMDJiN2JiZTg3YjkxZjMzOGIxMDZmNjRmNWRhNDYgbGVnYWN5LXRydW5rCiszMzMwMCA5NzNiMWUyZTI3MjYzODE1ZDI4YmRlODBlYzAwZjhhOGJhM2Q4NTY4IGxlZ2FjeS10cnVuaworMzMzMDEgNWQ3ZTZlODI4MjE4N2Y1ZDM0MTdhM2MyNGMxZGU4N2ZjNDRlMjM1OCBsZWdhY3ktdHJ1bmsKKzMzMzAyIDdkNWE5YzFhMDE5NzA4NDYwYzFhNmVmZDNlZTZmNDVhZTUwNjFiM2MgbGVnYWN5LXRydW5rCiszMzMwMyBhZDJkY2E1Y2ZlODFhNzcwN2U4NjA4MTA5ZThhMzZjMzc3NGY0MmQ5IGxlZ2FjeS10cnVuaworMzMzMDQgNDkwOWFhNjQ0MDVmYjFjMjA2ZjBkNzRlNWQyMjI3Mjg2MGZkNTcwMiBsZWdhY3ktdHJ1bmsKKzMzMzA1IDU4ZjE0MWQxY2NjYTI5OTVjMTM5MjIxOGJmZGQ0N2I1Nzc2OTg4MmYgbGVnYWN5LXRydW5rCiszMzMwNiBmYTk3MjkzNTMzYTkxZjRkYzY5Mjg2YmRhNjkzNThkZmVlMTdkMzE5IGxlZ2FjeS10cnVuaworMzMzMDcgYTYzZWE3YzQ3NWNjNWUyODAxZDAxZjhkYmU3ZWRmODlkZjFlYmU1ZSBsZWdhY3ktdHJ1bmsKKzMzMzA4IDYxZjk4ZWQ0YjZiNThkM2JmY2MyNmY4NGQ4ODdiZjA2NWYxMzUwOTggbGVnYWN5LXRydW5rCiszMzMwOSAwNTA5YTc2NTIxNjdmNDhhZjNmZWExNWRkM2Q1OGZjNjQ1YzQxZDY0IGxlZ2FjeS10cnVuaworMzMzMTAgZDY2OGE4MzM2Nzc0NzgxY2Q3ZmEwNmZlOWQ5MmQzOWNjY2QxNTRjYyBsZWdhY3ktdHJ1bmsKKzMzMzExIDQ2MmRlOTMzMzI1MWNhODAxNDA0NzE2YmQ2NDQxMDI5MmZkNWM3MGMgbGVnYWN5LXRydW5rCiszMzMxMiA4YmQyNTgwZTAxNTU1MjFkZGUzNDc2MzEzYzE2Mjk5OGEyYzViYzliIGxlZ2FjeS10cnVuaworMzMzMTMgMzg4MTg4M2I5NDBlYzBlNDMwYjQ4NjM0MjExNWFkYWY1NjYxNGJiMSBsZWdhY3ktdHJ1bmsKKzMzMzE0IDBhMzc1MWRmNDE5NTJiNTRmOTA2NDljOTAxNjg2ZmQ5OGFlMmQ5YzIgbGVnYWN5LXRydW5rCiszMzMxNSA2MDQ1NDJlNTkxZmE2ODFjNjQ4ODc5YmI2Yzc0NmY2ZmU3N2NkMGZiIGxlZ2FjeS10cnVuaworMzMzMTYgMTZlZWQyZTk4ZmQ5MzU0NjhkYWQyY2E2MThjOWQwMjI2NjBhNTMzOSBsZWdhY3ktdHJ1bmsKKzMzMzE3IDY2YjZkMWNlNDJmZTYxZTIwMzk0OTM2YmFlYzljN2JmOWRhMGQ3NjUgbGVnYWN5LXRydW5rCiszMzMxOCBmOWI4ZDRiZjA4ZmI5YWQ4YTk4NjE4MGUxMTA4ODJkYjRmMzdjN2ZkIGxlZ2FjeS10cnVuaworMzMzMTkgNTgyODg3YmE3YTY4ZGQ3Y2Q0MjZmY2M5OGQ4N2Q3YmE5ZmVlODQ5OCBsZWdhY3ktdHJ1bmsKKzMzMzIwIDViMTA1YTk1MDMzNDhmYjJlZGFlYjViNDAyMmQwYzczMmM5NmFjNTAgbGVnYWN5LXRydW5rCiszMzMyMSA5NTUxY2RhZjZlN2UxYTg4NDIyM2FiZDZmZjM1N2UxNzZlMDExOTUxIGxlZ2FjeS10cnVuaworMzMzMjIgNjk2MTk1NDJhOTE2ZTM0M2QyYjM3MDE0MWYwMjcwMmMxNDc5ODFhNCBsZWdhY3ktdHJ1bmsKKzMzMzIzIDlhNGJjZmRkYmZhMTJmMTU0NTNiYzJiNzVmOTZhNWNjNWRmZjA2YzEgbGVnYWN5LXRydW5rCiszMzMyNCA3OTMwM2RlOWEwNWE2ZWYzYzg5MzJlNmU2NTIxMThkY2Q3ZmIzY2MwIGxlZ2FjeS10cnVuaworMzMzMjUgMTMwOGQ3ZWM5OTUzNTA5OWUzZWJmZmY1ZTAxZDQwNjY4ODBhMDllNiBsZWdhY3ktdHJ1bmsKKzMzMzI2IGNiOTNiODYyNTMyZjQ5MDMxYzJkMjYyN2E1NTA4YWQzMDNlNjVjNzAgbGVnYWN5LXRydW5rCiszMzMyNyAzY2IxODIxMjUyMWQzNDg5YjA1ZmM1ZGE4NDEwZmE1MjcwNmRlMGIwIGxlZ2FjeS10cnVuaworMzMzMjggZDc2MjZiODBkZTk1MTY5NGFmNjQ0ZWVhZmYyMTM4ZWI5MGFjMjJhYSBsZWdhY3ktdHJ1bmsKKzMzMzI5IDcxMGMwOWY0YzA1YTIzZjRlMzI0YTZhNzc3OGJiMjRmNTk1ZDNkNjggbGVnYWN5LXRydW5rCiszMzMzMCBiYTc1YWY3YWIxMzZmMzFhOWQ4YmM4ZGJkZjZlMmE0ZjUzMmYwN2YxIGxlZ2FjeS10cnVuaworMzMzMzEgMzZhMTc5MDRhM2VkMDA2MGU0YTFjYzk3ZmQ3OGFlODhmOGQ5NTA3NiBsZWdhY3ktdHJ1bmsKKzMzMzMyIDk2ZWNhYWI0Y2JhNjgxMzhjNWM1Nzg5MDVlOTc1NjFhOWQxZThjYzAgbGVnYWN5LXRydW5rCiszMzMzMyBiZTk5ZjU5NzA2ODg5MGNiZmNlMjdjMDNlOTJkNzRjZTBkNDU2MDQwIHJlbGVhc2UyMi1tYWludAorMzMzMzQgNjZkYzA1MDEwNDdkNGMyNjA5N2FjNjZiYmM4OTVhNThlMDRjZWQxOSBsZWdhY3ktdHJ1bmsKKzMzMzM1IDRmZjgzYzBiNDVlOTI1MjJiMThjZDU5ZmQ1MDIyMjE1Nzc3NWZkODggbGVnYWN5LXRydW5rCiszMzMzNiA1MTM5N2VkZDJiZDRkNWQzNmE4NTczMjU5ODIzYWM1NTc4ZWNlYjEzIGxlZ2FjeS10cnVuaworMzMzMzcgZjA4MTE0N2MwYzhhZmFiNTQ4NGRkMzhjZTc3ZjU1OGE2OGIyNWNlNSBsZWdhY3ktdHJ1bmsKKzMzMzM4IDI2OTJiMWM5MmU4ZDkxYTM2MmM1MjA5YzJlNDE3ZjkzMjMyNTA3NDMgbGVnYWN5LXRydW5rCiszMzMzOSAwNTJiZmNiYWJiN2I5ZDkyZjFhYzk2Y2UzNWYyZDdhYjdmNjRkNzk1IGxlZ2FjeS10cnVuaworMzMzNDAgMzY0MDI3YTgxNWI4Y2YyNTMxZTI1YzI5MTg3NTExNGQ5YWFiMzFiYiBsZWdhY3ktdHJ1bmsKKzMzMzQxIDI4MGZiZTVmNGUxNmVjYzZjZWI2NTNiZWRhNTVjZmZiYmQyNjdkZjYgbGVnYWN5LXRydW5rCiszMzM0MiBkMGYxNTk3N2YzN2Y0NzUyYzVhODc2MWM0Njk5NjZiM2QyYTkzODBiIGxlZ2FjeS10cnVuaworMzMzNDMgNGUxYTQ3ZjUyMDRjYmU0MTk4NjU0ZTMzNTE1NTJjNjhhOTBhYjMwYSBsZWdhY3ktdHJ1bmsKKzMzMzQ0IGMxNDlkZDRjZmQ2NmRmMWFmMWE3OTMzMDExOGRiYWFkOThiOTU2MTggbGVnYWN5LXRydW5rCiszMzM0NSA5MjA3Nzc2NDBkMjg5OGQ3NzBkOTdjYzdmZmFiZjMzODEzYzhiMTM5IGxlZ2FjeS10cnVuaworMzMzNDYgZDM4ODBjMjM3NjI3ZmFjNWM1N2U0ZDU3NzRiYWQ4MDFmMGI4ZWI5ZSBsZWdhY3ktdHJ1bmsKKzMzMzQ3IDZkOWVkNTRhNDgyMTkwYzczNTJiYzBkMWNlMTk2MDMzYmJmNTNjYTggbGVnYWN5LXRydW5rCiszMzM0OCBlYjBiNjdlM2MwNGVjNTY3YTI5YTdlNzQxNTcxNDc3OGEzZDllOWFiIGxlZ2FjeS10cnVuaworMzMzNDkgMzcxMDkyY2U1YzJiYzMzY2Q1ZjgzMDk3YjhjOTRkZjNkMjdmZDQzNCBsZWdhY3ktdHJ1bmsKKzMzMzUwIGM1YmIzMWU0NWM2Njg3NmIwMDg0NTYzMzhhNWIxNzUyMTk1ZTQwMWUgbGVnYWN5LXRydW5rCiszMzM1MSA5ZmU2N2Y3ZjM0NTlhYjU2Nzk4YTViZWE3ZTRiN2EwYTFjNzlkNTgxIGxlZ2FjeS10cnVuaworMzMzNTIgN2EyNzY2YzlhN2I1OGM4NzY4ZjNiNDkyOTc3NDE4MDFhNzQxNTk4NiByMjNiMi1icmFuY2gKKzMzMzU0IGY0ZTJlNWE1ZWM2MjJiMTE3YjhiNmM4YjE2OTQ3MDg3NzY2YTc1M2EgbGVnYWN5LXRydW5rCiszMzM1NSAyNWI5ZmQ2ZDhlMzAwYjQwNDU1Mjk1YWIxZjZjZDg0OTBjMzFhNWIzIHIyM2IyLWJyYW5jaAorMzMzNTYgNzJkY2M2M2Y0ZGVhNmI2ZjBlMWY1NTVkNmZiMzJkZjFiYTU4YzQ5NyBsZWdhY3ktdHJ1bmsKKzMzMzU3IDg0MmQ5ZTMwZGI5YzM3MjZmMDhjNDM5YTBiN2M0NjZkN2UxNTY2ZjYgcjIzYjItYnJhbmNoCiszMzM1OCBlZjdhMWQyODU3NzE0OTQ3YjY1NDNiNmIyNTVkZmQ3YmJiYzhkZTUyIHIyM2IyLWJyYW5jaAorMzMzNTkgZjRmMTFlZDNhZTQ0MDllNzZiZmQ2MjA0ZWFmZjEyYjllMzk1NDg0NSByMjNiMi1icmFuY2gKKzMzMzU5IGRjMWIxYzdhNmI5ZTY0ZjdhMjExZWE5ZThhN2RhNDgzYzJiYmExNjcgcjIzYjItYnJhbmNoCiszMzM2MSA1MzdjOGIxYWVmN2ZhYzg4NjZlNmRiYmJlNDNkY2IyNzMzNmY0MmQyIGxlZ2FjeS10cnVuaworMzMzNjIgYzRmOWZmMjkxMjI5YmM4ODQ2YjE1YzY2NDI2Mzk0ZGI0NWQyZDE5YyBsZWdhY3ktdHJ1bmsKKzMzMzYzIGQ3MTY0ZmJlYzdjZTE0MDM5MWJiYTY4ZWZjMDI4OTYzMmUwNTk3YmYgbGVnYWN5LXRydW5rCiszMzM2NCAyNmJhNzFhYTViMjE1NTU2YTczZjU2YjVhZmM2YmU3YWI4YjFkODU5IGxlZ2FjeS10cnVuaworMzMzNjUgZDBkYzk1NjQ2N2JmMWI2Y2M2Zjk0YjBlMDkwYTZhOGIxNDQ3ZTkzMiBsZWdhY3ktdHJ1bmsKKzMzMzY2IDNlZDJjOWE3Njk2NTY4MzM1MmVlZWQxNjZmZTYwZjEyZjk1MzgyOWQgbGVnYWN5LXRydW5rCiszMzM2NyAxZDc2Mzg2MmQxYTFkNzAyZDkwMTM2MmQ3OWQ3ZjEwYzc3MWViZGM5IGxlZ2FjeS10cnVuaworMzMzNjggZjFjMjc5ZDcwMGE2ZDZmMGNmZTc2MTM4ZjM0NjA2OTkwYzJlZjhjNCBsZWdhY3ktdHJ1bmsKKzMzMzY5IDhkYmM0ZWM1NzIwZGJkNWYzZDk5YzVhNTY0NmJhY2ZjNGI3N2U2MGYgbGVnYWN5LXRydW5rCiszMzM3MCA2NDgzZWVhZWFkODJjMGViY2ZlMjZkYjU2MjQ4ZDc0MDM3MDU0MzUwIGxlZ2FjeS10cnVuaworMzMzNzEgN2I2ZmE3YmIyNGYwNjQ2ODRmMzgwNTMwZDU0NDZlYzdiZDQ0NTE4YSBsZWdhY3ktdHJ1bmsKKzMzMzcyIDhmZjA0MGU5ZDU2Njk1MTJhMmM3ZTI5Nzc1ZjFkOTdhYzRiNTEwMmYgcmVsZWFzZTIyLW1haW50CiszMzM3MyBkNjc3NDI0YzljYTcxMDU5MzE3MjRhMjdlNzc3M2U2MDM3MTA5YTczIGxlZ2FjeS10cnVuaworMzMzNzQgODkxZTU1MDJlYzllM2IxMThkYjgyMmVlNjgxYmQzODBlYTJiMzExNyBsZWdhY3ktdHJ1bmsKKzMzMzc1IDE1MzY5NDFiNTQ3ZjA2ZDNjOGIyN2U3ZGU4NzFiYzVmOTY4YmY1YTQgbGVnYWN5LXRydW5rCiszMzM3NiBhNGZlYWQwZTI0ZjhhZWZjYmI5NDQ3YzFkM2ZlMTljZDc5ZmYxOGRkIGxlZ2FjeS10cnVuaworMzMzNzcgNzYyZTJhMjk3YWI5N2EyMWJkN2U1YjYwZGVkNzNjMDg1MGMxOTQwNCBsZWdhY3ktdHJ1bmsKKzMzMzc4IGUzODE2NGFhNWJlNTEzYjdkYjhiMThjYjczMmVmYzFiYjczNjkzYTMgbGVnYWN5LXRydW5rCiszMzM3OSAxZjM1NDdkNDkzOWZkYzg2ZTcyYTgyOGUyNTNiNjUxYTlkZmE2Mzk2IHJlbGVhc2UyMi1tYWludAorMzMzODAgNGQyNjU0N2ViZmMzODg0YzYzNGIyYzk3YTRjNTdkYTg5ZjU4N2FjYSBsZWdhY3ktdHJ1bmsKKzMzMzgxIGQ4ZDE5NzU1MWExZWRiZWVmZWFlMmQ4ZTVhNDMzZjIxMzg0OGIwMjEgYXN0LWJyYW5jaAorMzMzODIgYjc1MjhkYWU3NjU2N2IxZjVmMTE2ZmE2OWRmNjIxMDY2YTM4NDIwMyBhc3QtYnJhbmNoCiszMzM4MyA1ODEzMmM4MTNkN2JlOTQ1ZWE3NmQ4YWY4YTdlODkyMThjYjUxOGYzIGxlZ2FjeS10cnVuaworMzMzODQgOGVkMmVkNzc4Njk0MTY1MmUyOGM0NzE1ODVmMzhkOGI1ODhlM2ZlMCBsZWdhY3ktdHJ1bmsKKzMzMzg1IDI5MmU4NDQ2NmU3ODE5NWQ0ZjU2MzdjNzNmYjJmNWUzNzQzNTdmYTcgbGVnYWN5LXRydW5rCiszMzM4NiBiZjA2MzRjYzBmMTc1MDhmZThjYzdiZWM3OWRmYTk4OTNmMGJlM2M1IGxlZ2FjeS10cnVuaworMzMzODcgZTk1MzFlZTVmMTg4OWY5OGQxNTQyMjhhYjFiZTJlZmNhOGNlMDVhYSBsZWdhY3ktdHJ1bmsKKzMzMzg4IDlkMzNkZDJjY2ZlNmE2ZTk3NmZmMTFlNDM2NWVlNTE0NTdjNTk0YWIgbGVnYWN5LXRydW5rCiszMzM4OSAyYTVlNmNlM2YzYTE1NzUyMGE1YzQwYjA1MDYyODVlMzEyYjQ1ODhlIGxlZ2FjeS10cnVuaworMzMzOTAgNzI0ZjJlZDc5ZGE5YjNkMzZkYmU0NmU4OTM1MTQzZDg4NDZhMjEzNyBsZWdhY3ktdHJ1bmsKKzMzMzkxIGZhNGNmODc4YzUzODQ0OGM4ODA2NjliZDI5NWZjMThiOTk4ZDdjOGYgbGVnYWN5LXRydW5rCiszMzM5MiAwNTJmZTk2Njg0ZWFiNmQ4NmQ5NjJmNTQ3ZDg5ZTk5YjMxZGNiMjRlIGxlZ2FjeS10cnVuaworMzMzOTMgMDllNDJmNzlmODMwYmRmMjQ5ZDI4MzgzYzRkYzVhYmQ0Y2MxMmM5NSByZWxlYXNlMjItbWFpbnQKKzMzMzk0IGE0NGQyNjdmMDE2MjlmYTRjMzMwOTQzODYxZjA2ZGI0MjAzYjYwMWMgbGVnYWN5LXRydW5rCiszMzM5NSBjZGIyMTdhOGViMDQ0NWRjOTgzN2JkZGMyOWQyYWM2OGJjZjUzYjNlIGxlZ2FjeS10cnVuaworMzMzOTYgM2I3YjRmZDVmN2NhZDU2YmU3ZjBhYTFhZDFlNTI5YzE2NGFmYTMwMSBsZWdhY3ktdHJ1bmsKKzMzMzk3IDdkMGFmNDU2MWVlZDFkZTA2ZDUzNzQyN2UwZjhkNzEwODI1ZmNjNmIgbGVnYWN5LXRydW5rCiszMzM5OCA4NWU1MmVjODU2Mjk5NzY3MGMxOWM1YThkOGU2NTEzZTExNWY5YWM2IGxlZ2FjeS10cnVuaworMzMzOTkgOTYyZjQ0M2FlMWQ5MWIzODQ0ZjdhYzVjNGYyZDVmZTI5N2FkMDk4NyBsZWdhY3ktdHJ1bmsKKzMzNDAwIDRjOTBhNjMxZDYzMmVkZmU0ZTYxMDAxZDg5ZDJiMzc1Njg0ODc4MTAgbGVnYWN5LXRydW5rCiszMzQwMSAzNzIxNmUxYzY3NDcyNGUwZDA1ZjRhZDAzMWIzMGU4NDIxNTIxY2Y2IGxlZ2FjeS10cnVuaworMzM0MDIgMGUxMzFlMjk0NjYyNWU3NWNmNzgyZDBmY2Q2MzEyOWE1NDVhZWQ2MSByZWxlYXNlMjItbWFpbnQKKzMzNDAzIDQ1MmUzM2EwOGQ1NTcwYTA2ZjhmM2Y4ZThkZjk0ZDRlNjYxNThkNmIgcmVsZWFzZTIyLW1haW50CiszMzQwNCAxMjQ3Zjg0YWE2YTZjMDNjOTE1ODViNDBlNThhMTVmMTM2NzJlMTM4IGxlZ2FjeS10cnVuaworMzM0MDUgMzliZTViMjYyNzkyYzk4MDBkZGRmYzFmNTgyZGM0NjllMjdjYmVhZSByZWxlYXNlMjItbWFpbnQKKzMzNDA2IGY0MzI5NmNiYzk4NTAxMzRlNGFiZmMxMGU0MDA1ZTc2NmFmMWU3ZDkgbGVnYWN5LXRydW5rCiszMzQwNyBlODUwY2M1MWMyOGZkODhmN2Y1Zjk0NDZhMmUwODBhMzkwNzg4MDI2IGxlZ2FjeS10cnVuaworMzM0MDggNjVlNTJjMjQ3NWNlNTEzNTk0ZWQ5YmI2Y2M0NWY3MmQ3OGY0YWQ1YSBsZWdhY3ktdHJ1bmsKKzMzNDA5IGE1ZTczMzZjMDA4ZDM4YWRiODllMjE3ZGQ3YmExNDIzMGZhOTQ0NGYgbGVnYWN5LXRydW5rCiszMzQxMCBkNWYyN2U2N2UxYWFlOGNjY2NlNjE5MTkxOGJjNmZhYWVhZTIzYjVkIGxlZ2FjeS10cnVuaworMzM0MTEgM2FkODk4YjhmODEzYWM1NWYxNTMxYjg0ZjBlODQ3MWM4ZmE1NDlmZiBsZWdhY3ktdHJ1bmsKKzMzNDEyIDRjOWVmMmE2Mjg2NGQ1YWI4OTFmYTc2NGY4YjdlNjAzMjczZWU0NWUgbGVnYWN5LXRydW5rCiszMzQxMyA4Y2E5Y2UzNmEyMDZmZmQxYTg0M2I3NGY4ZDA4MGRiNDg0ZjFlMzA1IGxlZ2FjeS10cnVuaworMzM0MTQgNjg4MzViZjEwMWVjYjEzY2M5NTc0ZWZjZDg4ZDk5NmU2ZGZjMWIwMiBsZWdhY3ktdHJ1bmsKKzMzNDE1IGI5YzQwZmRhNjA5ZGJmNzY2YmNiY2VkMDhjYzZkMzk0Y2Q2OTkxMGEgbGVnYWN5LXRydW5rCiszMzQxNiA0ZjkyOTNjYTJkZTYxMmIwMzUxYTU5ZmE3MmJhODdjN2JiN2YyZDRmIGxlZ2FjeS10cnVuaworMzM0MTcgMzJmOTZiYWMyMTEzY2YxZDY4YmZhNDBjODUxMDNiM2NkYzhiYTI2MCBsZWdhY3ktdHJ1bmsKKzMzNDE4IDYxZmI5OTZlYmE2ZTBlYjAwYjU5M2JhMmIzMGYyZWUzODViMTJmOGQgbGVnYWN5LXRydW5rCiszMzQxOSBlYjgyOGM2NGZjYzdiYWVjYTAwN2VmZmU4ZGZmOTI0NGMxNjY4MzYzIGxlZ2FjeS10cnVuaworMzM0MjAgNWFmODkwMzdjZWJhMDgxNWY3MDllZDNhMzBhNTc3MTIzNWZiMWU2NCBsZWdhY3ktdHJ1bmsKKzMzNDIxIGFjOWExZjBhMzNkYzhlZTdhODBjOTVmNzM0MTYzYWY4NWM3MjUzOTIgbGVnYWN5LXRydW5rCiszMzQyMiBiODY0NDZmMDM1MGZmMDE4ZDg3ODIwYjExMDIyNzJkODQxMjg2YzIyIGxlZ2FjeS10cnVuaworMzM0MjMgYjU4MjFlMTc2NDUzODAxMmI1MTE4OTU2YmM5Y2Q3NGNlOWZjMTZkYiBsZWdhY3ktdHJ1bmsKKzMzNDI0IDlhNDQyZjRhNjQ0M2RkMWQ2MTQ1MmI4YjkyZWMzMjJmYzY1NjY1M2EgbGVnYWN5LXRydW5rCiszMzQyNSBiNDRkZWVlYzVjNWVjOGZjMmIwNzIzY2VlOTdjM2IwNjhhMzU2Yzk0IGxlZ2FjeS10cnVuaworMzM0MjYgMDc1YjI5YWQ5N2MzMjFkNTdkNjM1N2IwMmQ3MWY2NDE1NjkyNDI1MSBsZWdhY3ktdHJ1bmsKKzMzNDI3IDU5ZGE1YjU3YzYxYmFjZDIyOWVkN2M1MWM1NDliMjQ2Y2VlNzQwNmMgbGVnYWN5LXRydW5rCiszMzQyOCAzYzFmNzgzNDBiNjVlODYyZjAwNjNlYjgyY2I3MTUxYjAzZDYxNmU1IGxlZ2FjeS10cnVuaworMzM0MjkgYjQ5M2E3ZTc1ZDk3N2ZhMmEyYTQzY2IwMWVkZTM1NmU5MGU3NTEyMiBsZWdhY3ktdHJ1bmsKKzMzNDMwIDA1OTFmZDk1NmI5ZDI4NTdiYjIyMWRmNDBlYzRhZjJjYzMwYWUxODIgbGVnYWN5LXRydW5rCiszMzQzMSA0ZWM4ODBjNTNlMmEzMDdkZTBjMTZkY2I0Y2Y1NTk4ZDM2ODljZGM5IGxlZ2FjeS10cnVuaworMzM0MzIgOWViNmRjZWQxNmU2YmUwNzc2NTg4NTdjMDQwYjFlZGNjZGQ1Y2FjYSBsZWdhY3ktdHJ1bmsKKzMzNDMzIDc4YzUxMDlmZmFkYTA2MzE5Yjc5MDkzMzcyMmZhZTYwZTRmYTU0MGUgbGVnYWN5LXRydW5rCiszMzQzNCAwMDU3NjVhNTZlYzM5YjIyNjAyYTYzZjE4ODcyNjQ4MGQ3M2E5ZjAxIGxlZ2FjeS10cnVuaworMzM0MzUgYjg0Y2MzYzc4MDhmODIzOTdmOWE3YTk5YzRlOTkzNWU0NDA5OWJhMiByZWxlYXNlMjItbWFpbnQKKzMzNDM2IGZlNWViMTc4MDBmOWMzMWI0N2Q0NTViZTNkY2U2MjJjMTA5NzQ0NmUgbGVnYWN5LXRydW5rCiszMzQzNyBlOWU1ODMyZDcwNmZmMWEwOTMwODUwMWQyY2QxMTAzM2ZhNGVkZjJkIGxlZ2FjeS10cnVuaworMzM0MzggN2E0NzhkMTNmMjdkYTMzNjljNmU5YjZmNjZlNjQ5NzFjNGIyYTdhMyBsZWdhY3ktdHJ1bmsKKzMzNDM5IDc3NzBiNzg4MTM0NmQyZTVmZjI3NzU5Y2QwMTZiMTY1Zjk5ODNmYjMgbGVnYWN5LXRydW5rCiszMzQ0MCBlZGE1ZDAxNWUxMWMxODYzNzc4ZjM4YzlkODIyMzUyYzNjNTE2NjNjIGxlZ2FjeS10cnVuaworMzM0NDEgMjhjZmE1NDZmMWVjNzY0ZGUyMzEwNjY2N2ViYzhlNTJhZTNhZGUwYiBsZWdhY3ktdHJ1bmsKKzMzNDQyIDA3MDM0NWFkOGQ3MWNjYmFhZDI3ZWFiNGU4ODhiN2M1MzQ1MmVmMTUgbGVnYWN5LXRydW5rCiszMzQ0MyAzMmVmZTU0ZDBlOGZmZDE4ZjAzNzFkNGYwYjFiYTRkMzhhMjFmOTJlIGxlZ2FjeS10cnVuaworMzM0NDQgZGRjMjQ3NDA0ZGFiM2VmMGY5NTY2ZjFhY2VhM2MxZTYyMTdiZmRjYSBsZWdhY3ktdHJ1bmsKKzMzNDQ1IDhlMjdlNWNkZTU5YWVkMTkzZDc4MTNiMzc0NmFkNzdhYzVmNTU2MDQgcmVsZWFzZTIyLW1haW50CiszMzQ0NiA5Mzk2MTM0Njg0Y2Y1OWM5MzQwZmFlZTFmYWIyYjIyY2YzNzJhYjM2IGxlZ2FjeS10cnVuaworMzM0NDcgZTZmOWY2YjVkOGQ3ZTcxMDEzYmJlNjdlOTFhMzQ1MjVjYWI4NmZhYiBsZWdhY3ktdHJ1bmsKKzMzNDQ4IGY3MzNiYWM3OGY4N2U0ZWZlODU0MzAwMTIzNGIxNGZiYzYzZmQ3OTEgcmVsZWFzZTIyLW1haW50CiszMzQ0OSA3MDU2Y2M1YzgxNjdmYzJlNGEzMzNmZDhkYzQzNmZlNDIzYzBkZTZhIGxlZ2FjeS10cnVuaworMzM0NTAgY2U5ODgzOTRjNzU0NzhmZGUxYTdiN2U5Mzk1YjYzZTE4MTY2Mzc3OCBsZWdhY3ktdHJ1bmsKKzMzNDUxIDJmY2RlMzJhOGE1Nzk5ZTU4NDM4NzZiMGU5NzhkOWRjYWY0NzQ3YWQgbGVnYWN5LXRydW5rCiszMzQ1MiBkYzZhNDY3MzE4NjA2Zjk4NTg2ZGE5Nzc1OWZjMTk5ZTZmNjhjMGQ2IHJlbGVhc2UyMi1tYWludAorMzM0NTMgZDdhZmNkYzY5ZWQ0OTFjY2I1NzVlNmI2MWE3OGFhMjliODEzNGFiNiBsZWdhY3ktdHJ1bmsKKzMzNDU0IGM3M2ZhZjVkZTFiZDNkMTQzYmZhZGFjNTI2Y2ViY2U5MGI0ODVkN2IgbGVnYWN5LXRydW5rCiszMzQ1NSA0NjZhNTQwY2MyMjlmYWIyOTg0Y2E0Nzk5ZjdjNTdjOGU5NzY1MDRkIGxlZ2FjeS10cnVuaworMzM0NTYgNGZjNTZjYWU0ZWI4YzE2NWRjMjAyNzQ3MzFkY2JiMWQ4ZTc1ODM1NyBsZWdhY3ktdHJ1bmsKKzMzNDU3IDMxZDkyMzU0ZjcyZjA5ZGViOWM2N2YwOWQxODE2NjY2MzY4NmI5YWUgbGVnYWN5LXRydW5rCiszMzQ1OCBjOGZiNGFmOTZkZTBlNWJlZTIwZDA5YzUwMTg4MDI2M2FmYWZhZGNlIGxlZ2FjeS10cnVuaworMzM0NTkgNGJhZmZlMTRjODg3NGExMmQ5M2FmMjg5ZTAyOWFjZWFkNzczODg4YSBsZWdhY3ktdHJ1bmsKKzMzNDYwIDJlODRmZGI0ZmUzMGQ3YjlmZDg0YzMyYzhiNTU0MzBlYzZiNzI5YTIgYXN0LWJyYW5jaAorMzM0NjEgOTAzNWZlNzY4Njg5ZDg5ZTJhMDVhZDA3N2Y3MzhiNDdiMWMxZGVkNyBsZWdhY3ktdHJ1bmsKKzMzNDYyIGRlZmExZDgyNWIwOGNkNjI0YmYwYjFmZDk2YWZkZGNlNjA5ZjU0MjMgbGVnYWN5LXRydW5rCiszMzQ2MyAxMDM3ZmVhY2I1NGZjOTk4YWM4NzI2Y2MxODYxMTA4NGFjYzM5ZmRmIGxlZ2FjeS10cnVuaworMzM0NjQgYzcwMDYzYzNhZWViOGRmNzQ1ZmEyZWRmNzgzYWU0YjU0YmVmZDQ5YiBsZWdhY3ktdHJ1bmsKKzMzNDY1IGNmYWVkZGU1MGJkNjQzMjY4ZWM3Y2YwYmEwZmU1OGM3MWVkYmYyYWEgbGVnYWN5LXRydW5rCiszMzQ2NyBlNmE3OGRkNDI1YzhlMGFhZjkwMzczMDkxNjU1MjkzYmQyOWUwZWQ2IGxlZ2FjeS10cnVuaworMzM0NjggOTRlNWQxYjhmNjk2OTg5Nzc3ZGE1ZWUyY2Y3ZTA4MWZiYTU3YTgwMyBsZWdhY3ktdHJ1bmsKKzMzNDY5IGQ3ZTFhMWJkNDg4MGI3NjFhNzAxYmY1NmY4NzI1YTI5NGFhNDI5MTMgbGVnYWN5LXRydW5rCiszMzQ3MCBjNDQ5NjYzZmEyN2RlMzliYTc2ZmE4OTc4NWM4MTRlYzk4M2M2MmM4IGxlZ2FjeS10cnVuaworMzM0NzEgYmJjMzZlMGUxMGExNTc5MjkwODFkMTM5NDcyMWNkN2M5MzI3ZTcwYiBsZWdhY3ktdHJ1bmsKKzMzNDcyIDU3YjkzYzk0ODMwYTM0ZTIwYWJmMTcwYWFkMWJkZjZjZjY4MGI1YzEgbGVnYWN5LXRydW5rCiszMzQ3MyBlNWI5OWU2MDU5MjYxNWQyY2QwMTIwMDA3Yzk3ZDU2ZmI0ZTI5OTg0IGxlZ2FjeS10cnVuaworMzM0NzQgMTI3MmY3OTU0N2JhOTE2MTE5ZDg2YzY5MTY1MjU2MmFhNzM0ZTBhZiBsZWdhY3ktdHJ1bmsKKzMzNDc1IGJhYjg5ZTQwNmYzMGUyNDViOWQ3YTI5MTQyZDRmNzc1NTY0NDVkYjggbGVnYWN5LXRydW5rCiszMzQ3NiBkMjgzYjE3MzNjMGQ3YTU3N2NkNmYyYjliN2I0Y2ZiMGY0N2QwM2FlIGxlZ2FjeS10cnVuaworMzM0NzcgYWMwZmMwODkzYWFjZjMzNzUzOWRjNzk3NjRmOTdmZjE2ZmU2ZWE1NSBsZWdhY3ktdHJ1bmsKKzMzNDc4IDBkZjExYjJiZmNhNTE4YWE2YTVmZjlmY2JlZGMxMzkzODk1N2I3MGQgbGVnYWN5LXRydW5rCiszMzQ3OSAzMjgwMzU1MzI5ZGQzOWJiNDkyMDA0NTY5NzU1MjgwMWVlMWIyNWU3IGxlZ2FjeS10cnVuaworMzM0ODAgNWIyMWM3MDAzOTc0NWU2NDkyMjM2Y2I2ZDAwYjk5NTkwMjVjYjViNyBsZWdhY3ktdHJ1bmsKKzMzNDgxIGM5YzZlMmM5ZWM5NzVjODViNDhlNDFmMDYxMGZjZjVkODM1M2ZkM2UgbGVnYWN5LXRydW5rCiszMzQ4MiAyYjE3YWQ2Njg2NjZlNWU4Y2E2MGE4MzIxYzAwNmM0YjhhNTJjM2M4IGxlZ2FjeS10cnVuaworMzM0ODMgOTkxNmI1OTI2MWQ3NjMzNWFkZDhhZTgzMzZmYzNlMjExNTBkODE1NyBsZWdhY3ktdHJ1bmsKKzMzNDg0IGUwMmE1ZDE4NDlmOGQ4N2NiYjc4MTk1ZmZkZjc4ZDA3Mjg3MjljNDIgbGVnYWN5LXRydW5rCiszMzQ4NSA2NDQzYTBmZWU3ZTEwMTQzMDNjMmIwMGFkYjJiMjQwZTMyNDMyZTcwIGxlZ2FjeS10cnVuaworMzM0ODYgM2I0MWM2MzNkNzY5NmI5NmY1NDZhMjg5NGQxNWZmZjNlYjlkMGI0NSBsZWdhY3ktdHJ1bmsKKzMzNDg3IDdiZTI0Y2M2YzI4ZDdiYTU1YzhiM2NmMGNjNDAxMDU1YTI2MjM2ODQgbGVnYWN5LXRydW5rCiszMzQ4OCBjYjNjZTdjZWMyNjEyZjE5M2Y2ZWJmOGI4YzA0Mzc4NGRkNmQzNGM0IGxlZ2FjeS10cnVuaworMzM0ODkgNDgzN2JmMjE2YWU1ZjUwZDcwMGUzOTI5MTdhM2M0ZDRhNjc1Zjg1ZCBsZWdhY3ktdHJ1bmsKKzMzNDkwIGVkNDMxNTViMWQzYzkwNzk2NTVlOGFkZmUzNjY1ODk0MTNhMTEzNTcgbGVnYWN5LXRydW5rCiszMzQ5MSBkNGZmYjA0OTBhYzI3ZGQ0YjE5ZTJmNDNlMDRiOTdmZjkxYjNhOTFlIGxlZ2FjeS10cnVuaworMzM0OTIgMDcxNTAxODI0YmJkOGQ5MzA3NDU1ZTc4MWNmODEzMzQ3M2UwNDBlNCByZWxlYXNlMjItbWFpbnQKKzMzNDkzIDg1OWNiZDdjOWI0ODE0MGYyNTk3ZDgyZjcwMDc2ZGEwN2I0MmI2YmEgbGVnYWN5LXRydW5rCiszMzQ5NCAxZGMxNTg2NTJlNWIzNzNhNDJmZmU1YTY2NjE4ZWM4MDcwOTllZjRiIGxlZ2FjeS10cnVuaworMzM0OTUgZTFhNmJmNDU2NWNkZTRlNDdmYzZiMjE2MWZkNzA2NzUyZmEyMzZmMCBsZWdhY3ktdHJ1bmsKKzMzNDk2IDQ1NjkxMmFkYTY5ZmY5MWRmY2QxYmY5YzZhZmI1MjViOTg1MDVjNDAgbGVnYWN5LXRydW5rCiszMzQ5NyBiYTVmMGI4MDgxOTI3YjQ2MjI4OTBmNDQ5NmI2ZDcxYzg5YzU0MTU4IGxlZ2FjeS10cnVuaworMzM0OTggMzdiYzIzYzZjZjZjOTIyMTJlNGJmYTVmNGQ1YmJiNWU2MTNhZjVjZSByZWxlYXNlMjItbWFpbnQKKzMzNDk5IGEzNzEwNmFjN2M4Y2MwMTdlOTBmMDkxYjI4ODk1MzZjNTM1MzIyZWQgbGVnYWN5LXRydW5rCiszMzUwMCBlNmVkYjA0MGE3N2Q0YWNlOTgxMTYyZjI0ODg1YmE0NmVlNDBkMjY0IHJlbGVhc2UyMi1tYWludAorMzM1MDEgMmVjMmY2MjA4N2NiOGViYmMyMjRkYmQ3ZmI5YzczMzVmODZlMjA0YiBsZWdhY3ktdHJ1bmsKKzMzNTAyIDVlODFkOTJiZjY3ZGIwMDZmNGE2NjY3ZmQzNjY4MGRjZTdlMTU4YmQgbGVnYWN5LXRydW5rCiszMzUwMyAwOWRhOWU1NjU1NWQ4MGNjMmU1OGExMzI3NjA1NmE4NzVkMmQzZDE5IGxlZ2FjeS10cnVuaworMzM1MDQgNDAyOWE3MjZmYWE2NTUwMzY4MmZlOGZiZjJjMjVkZmU5MWUxZTkxNiBsZWdhY3ktdHJ1bmsKKzMzNTA1IDkyZjFlZWFlYjQxZDc1MTkzMjczMWQxZTU5ZmZjNDJlZTg3ODA1ZGQgbGVnYWN5LXRydW5rCiszMzUwNiBiOTgyN2MwNTQ2MGYzOGY4YzE5YTIyOGQ2NDAyYmNjZjJlYjQ5OGNlIGxlZ2FjeS10cnVuaworMzM1MDcgZDQ1ZDMxN2ZkYTM1MWFkYjU0NmU0YWU3MWJiYWFlZTBiYjVkYzdhMiBsZWdhY3ktdHJ1bmsKKzMzNTA4IDc3OGIyMTUyMGRiOGI5NGVhZjE5YzI3MTkxZmYxZmFkYTlmYjVkZWQgbGVnYWN5LXRydW5rCiszMzUwOSA4ZDQ1YTRjZWE5MzQzN2U3YzU0MTQ0ZGIxYmEwOGQ0ZDJlMWQ3YmYzIGxlZ2FjeS10cnVuaworMzM1MTAgZTU3YTliYmVlYzViMjc3Y2RmMWQwMjZjMTRjY2U4NDE5OGViMzNjMiBsZWdhY3ktdHJ1bmsKKzMzNTExIDY0MTk0ZTc3NWIwYmMyOGMyNzUwZTA2N2FhN2VmNDRlNjBlNjYyNWEgbGVnYWN5LXRydW5rCiszMzUxMiBmZTc5YTVhYjM5MmI4NTkwNWE4Mzg0YjNhZDhkMDJiYjlkMTZkZDFmIGxlZ2FjeS10cnVuaworMzM1MTMgMmQ1YmVjZDkwMGVlYjU2NjZhMjg3MGYzOWQxZjk3MTQ4NDZkZTRhMyByZWxlYXNlMjItbWFpbnQKKzMzNTE0IDA2Y2NhMzI3YmFjZGZhYjc1NTJiMTBiM2JkNzBmOWUwMmNhY2M3NzcgbGVnYWN5LXRydW5rCiszMzUxNSBkZDhjYTA4M2VhNjY3ODgwMjQxNzU1OWQxN2EzOWMyZmEzYTE3MDVmIGxlZ2FjeS10cnVuaworMzM1MTYgMDE0Y2MzNjJhYTkxMjM2MGFiYTZjOTY5NjdjNjM3ZDdkYmExMTRiNSBsZWdhY3ktdHJ1bmsKKzMzNTE3IGU2ODY3NjUyMzY3NzRjNTNjNTZmODg5MGUyNGQ4NWY5MTg1MjNjZGYgbGVnYWN5LXRydW5rCiszMzUxOCA3ZmJhMzNmZjIxMzU4YTMwNWJjOGZkMjAxMGE2YWEyZTliY2NlZjE1IHJlbGVhc2UyMi1tYWludAorMzM1MTkgYjg1ZjhiYjVjMzc1NGM2OGE3MTE2ZTFkM2MxZDE2MWFhZTc4NDdkYiByZWxlYXNlMjItbWFpbnQKKzMzNTIwIDU3YWRmODI3ZDRjN2FkNjQ3NDFjYjQxZjhiYzdhNWU0Mjg4Njc5YTMgbGVnYWN5LXRydW5rCiszMzUyMSAyYmI1MjNhZDliNzY1Yjg5NmJlZTM2ZmM3ZGY5ODAyMTM3Mjk4ZTJkIGxlZ2FjeS10cnVuaworMzM1MjIgNzA1MmMzZTVhZjAyNmZiZmFlYmZjNzI1M2RhODlkZGU1MzYxNzZiYiBsZWdhY3ktdHJ1bmsKKzMzNTIzIDQyZTgyNjNkMzlhYzY2MWY3NTViZjkzODMzZTg4YjhjY2NmZGM3ZWIgbGVnYWN5LXRydW5rCiszMzUyNCA0NWRjMzM0MzMzMjM1NmRkMzk4ZTE3ZTk0NmRiYWUxZDEyNDAyODM3IGxlZ2FjeS10cnVuaworMzM1MjUgY2RhYjI1ZDJmODQyOTJlOGI5ZmRmYzUwYTE1NzhjMWM4NGI5NGM0OSBsZWdhY3ktdHJ1bmsKKzMzNTI2IDg0ODM1ODQ2ZWVhYjExNGQxOWQzMDgzM2NmNDQyMWUxMjhiMTk5ZGUgbGVnYWN5LXRydW5rCiszMzUyNyA5YzU3ZWI1MzM3YjcyMTgwNGY0ODcwMTk5ODVjMDBlYzdlNDU2MjJhIGxlZ2FjeS10cnVuaworMzM1MjggOGViMWNhZTFhNzdiZDk1N2JhNjFmZjA5YjQzMDFkNzQzMWI4Y2NhOSBsZWdhY3ktdHJ1bmsKKzMzNTI5IDQyMWQ4MDVjMTFmMzNlMzMyNDliNDk1NTg5OGE5MDExNTg0YTZjMzcgbGVnYWN5LXRydW5rCiszMzUzMCBiZjAwYjU2YzE0YTk4MmViMTFkNDM1Yjc5ODNhYjFkZGQ3NzMxNzlmIGxlZ2FjeS10cnVuaworMzM1MzEgNTc3N2M4MzRmNTVjZTkyYzRiNTdlZmNiMWY4YjgyYWU3MzIzNGFjYyByZWxlYXNlMjItbWFpbnQKKzMzNTMyIDU2YzAxYzQ1MDkyYzA5MjgyZDQyZTVlYWEzZWJjNTAyNzJlNjhlNjYgbGVnYWN5LXRydW5rCiszMzUzMyBjZDBiY2FhMGJkODFmZTQwMTViNDE1YjlmMTgzOGZmMGM5NmRjNTc2IGxlZ2FjeS10cnVuaworMzM1MzQgMWJhZTc4YzgzYmU5NGJlYzI2MWI4ODMxYWU5MTIwYmYyMTU5YjA4ZSBsZWdhY3ktdHJ1bmsKKzMzNTM1IDFjM2I4MTU4NzYwYzNkMDIzZTEwMWQyYzcxZjFmYzEwOWM5NzUxNjcgbGVnYWN5LXRydW5rCiszMzUzNiBmMzM5ZjI5YjA2Y2JiNzkyNTI1ZGVmZGY5MzUyMTM3ZmFiM2RmZDJkIGxlZ2FjeS10cnVuaworMzM1MzcgOThjNTliYmRkOGVjNDc5NDJmMjlmZmU3Y2FhZDZkN2QzZjk2ODI0NCBsZWdhY3ktdHJ1bmsKKzMzNTM4IDg0YmNjYmVhYjVmYWM1ODEyZjE4NWYzY2U5ZjdmZjdlZWZjNzRhYTMgbGVnYWN5LXRydW5rCiszMzUzOSBiNzY2MTUyYzc5MDQ1YzVjOWI4NTM5ZTM0OGNhZDQ2OTI4MTljMTBjIGxlZ2FjeS10cnVuaworMzM1NDAgYjQ0ZWI1MTkzMWQwZjEzNDQ1OTc0YjA5YzFhMmI0Mzg4YWE5OTliYiByZWxlYXNlMjItbWFpbnQKKzMzNTQxIDE5OWNkNzhkNmQ3OGQzNmE2ZWYwZmJhMjMyYzdiZWE4M2Y0MTRhZGYgbGVnYWN5LXRydW5rCiszMzU0MiA2MDRkOTM4MjNlYzFkMDEyODk3MDEyNWVkZDg5NGQ4ODEzYmZhZjVlIGxlZ2FjeS10cnVuaworMzM1NDMgMzQ0MmU3Y2RhY2U4NmUzOWM2NTlkN2RlZDllNDQ3OWUzMjg5MmQwNCBsZWdhY3ktdHJ1bmsKKzMzNTQ0IDAzMDIyN2RlODA1MThhYWM3YWVhOWQ1ODU0MmMwM2Q1YTc3ZjEyODQgbGVnYWN5LXRydW5rCiszMzU0NSA5NTQ3MTdlNmZkYjUwYjQ1ZGI4N2QxY2ViMWU0MzFmN2M1MDQyOGY4IGxlZ2FjeS10cnVuaworMzM1NDYgMWE0MmIxMjhjNTgxNGE4YWYzODliZWNkNzA1ZGY1ZTIxN2Q4NmY3MCBsZWdhY3ktdHJ1bmsKKzMzNTQ3IGZlZTE3NzZlNjFjNzA1NjExNGE5NzAzMzMyZGJkZTdkNmE2YWI1NWYgbGVnYWN5LXRydW5rCiszMzU0OCA0NzUwMTE4NGI1NDM1ZjdlMDYwMTJiMGIwMTk3NjdiOTY4MDAyZjQwIGxlZ2FjeS10cnVuaworMzM1NDkgNjJmMzA2M2ExYTBmODc2YmI3NjJmNzkxOWQ1MTQxYjc2MDAzZWYzMyBsZWdhY3ktdHJ1bmsKKzMzNTUwIGEwYTcyMzFjNmZlMGUzNGY0YzMwMzBiNGFjZjFiZTY5ZmY4NzUwMzUgbGVnYWN5LXRydW5rCiszMzU1MSA3MmNiYzQxY2NjMmYzODBlMzY1MmFjNzUwZjc3ZWRkMTYxZmIxMTI0IGxlZ2FjeS10cnVuaworMzM1NTIgMmM1MTk0YmFhOTk0NGY5YWM1ZTRiMDRjNWQ3ZTdmOWI2NzJkY2VhMCBsZWdhY3ktdHJ1bmsKKzMzNTUzIGVkODcwOWIxYTNlZmIxM2E3Y2M0ZjY2NDc1Zjg2MjhlNjc2YzZmY2UgbGVnYWN5LXRydW5rCiszMzU1NCAzZjIxNGIzOWI0ZGY5NTQ5N2Y0MTEzNjE2MDEwMWNjZWJhMTNkZDRhIGxlZ2FjeS10cnVuaworMzM1NTUgMTk1MTFhNDkwZTdjMDUxMTM1MTUwOTdkM2JjMWRkMjUyNDBiYzdhYSBsZWdhY3ktdHJ1bmsKKzMzNTU2IDkyYTVmZTU3ODM4MDM4ZmRhMGU2Zjc5ZmY5ZGM1ZGUzMGZlZjdiY2IgbGVnYWN5LXRydW5rCiszMzU1NyBkMzdkMTU5MGUxYTdkMWExZjkxZDZmMzhjZmI5ZGEyODVmZTA1Y2I4IGxlZ2FjeS10cnVuaworMzM1NTggODhiOTNlMDdhMWY4MGFmN2MyNThiOWZhODk1MDJhMDcyNzI3ODViNiBsZWdhY3ktdHJ1bmsKKzMzNTU5IGY4OWQ1NDU1MDVjNzE1NDU0YmM4NTk1YjFmZGZjNjkwZjI5Mjk3NTYgbGVnYWN5LXRydW5rCiszMzU2MCBiNjhmYjRhNDNkMGZlY2RiOTRkZmVhNGYzNGZkNGE4NDBhNzQ2ODc5IGxlZ2FjeS10cnVuaworMzM1NjEgMjJiY2EyODIzNjg1Njg2MWIwZTllMmVhZTcwNmNmZmRmODI3OTZhYiBsZWdhY3ktdHJ1bmsKKzMzNTYyIDRlMDVjNTU1MTRlMWQ2MzE2MWYzNTdlMDQ3OTIxZWRlZTkzNzU5N2MgbGVnYWN5LXRydW5rCiszMzU2MyBlMmI0MDMxMjc1N2VlMTFmZjAyYjI5ZGE5MTFiMDJiZGMwNjg4Y2Y2IGxlZ2FjeS10cnVuaworMzM1NjQgZGE3ZWFlNDRmNDg3YjRiY2EyOTViYzRkNGQwYjM3YjU2YjU5OGExYyBsZWdhY3ktdHJ1bmsKKzMzNTY1IDljYTI5MTg2NWY5YzFmMmEwMjdlMmZkNTU5NTFlYzM0NmI1NDhjNzggbGVnYWN5LXRydW5rCiszMzU2NiA3OWVjN2UzMDJkNTM1Nzc2YjY5ZDBmNTA2ZWI4NjkyZGMxN2IxMDcyIGxlZ2FjeS10cnVuaworMzM1NjcgZTlkZGRmZDJhNjJmMGNlYTI1Y2M3OTJlNWVjZGMzMjViNmE2ZGRiNSBsZWdhY3ktdHJ1bmsKKzMzNTY4IGFjODRmMTc5YmI4NDEzMzljOWEyZjg2YjVjNTJiYWY2NmNkYWUwOGQgbGVnYWN5LXRydW5rCiszMzU2OSA5OTRiNmJlNDhlMjg3OWFmNjg2N2ZkMWYyY2I3MjBkMDM2N2ZmODFmIGxlZ2FjeS10cnVuaworMzM1NzAgYjQ3YTcyNzRjZTVjMTU4MzhhNWM2YjA0OWJiNjVhNzc2NWNjNmIxNiBsZWdhY3ktdHJ1bmsKKzMzNTcxIGRiYWUwNWMyOWU5Mzg1NDRiOTg2MmRjNzMyNjczMWUyODgzMWJlZmMgbGVnYWN5LXRydW5rCiszMzU3MiBkMWFhNTc1MWZiY2ZkYmEzYzFmZWFkOTBjYmIxY2UzOWMwYmYyODEzIGxlZ2FjeS10cnVuaworMzM1NzMgNDM0YjZjZGE0ZmE1YWY3MDE3Y2I2YzUwOWE1OWVmNzZjZWFiYmI5NSBsZWdhY3ktdHJ1bmsKKzMzNTc0IDlkZWFjMWFhNDIxZGI2OWZhNTVlNDM4N2VlNjRlY2FjM2YyZWRmZjYgbGVnYWN5LXRydW5rCiszMzU3NSBhMjMxMDZkZmM5NGQzZWJmNmZkYzM3ZjZjYzYzZTI4NTQ0NWI3MDBkIGxlZ2FjeS10cnVuaworMzM1NzYgOWY2MGMzZWU5ODVhMmFlMTBmZWQ5Y2I5N2RmNWMxNDhhMDdlZGY0ZiBsZWdhY3ktdHJ1bmsKKzMzNTc3IDgwZWQ0ZDk3ZjFiYWVhMGRlOTk1OGRmN2ExYjk2ZjFkZDg4Yzk0YjggbGVnYWN5LXRydW5rCiszMzU3OCA3MTYzOTVjMTk1ODZlMmExMDY2OTJjMjU5Mjc4ZGE3ZDExZWIxNDZjIGxlZ2FjeS10cnVuaworMzM1NzkgOGIxNTVlNGExMGEyNWQyYjg3MTYxMDcwYTc0YjE1ZTgzMjVjYmNhYiBsZWdhY3ktdHJ1bmsKKzMzNTgwIDFlMmUxYzc5MzE2ZTEyZmJkNWZhYzQwYmYxYTM3Y2YxNjYzNmI1N2IgbGVnYWN5LXRydW5rCiszMzU4MSA1YTk0NGFjODUyNWMxZjYxZDVkYWEzZmVlY2M5MDUwOTFiZGI3ZThmIGxlZ2FjeS10cnVuaworMzM1ODIgNDUxYjdlODM5M2ZjNDFlYjE0M2ZlYTIzNDlmMWQzODQyMjVjNjU5MyBsZWdhY3ktdHJ1bmsKKzMzNTgzIGQ1OWU1OGJhYzM5MjM3NTBiMTQzZDkyNDU3YTk5MGM5MWIwMTliNGEgbGVnYWN5LXRydW5rCiszMzU4NCAwZTIyMTViODIyNmQyYWUzYWJhNjNmMDdhODYyZDExZGJiOThkOWQ1IGxlZ2FjeS10cnVuaworMzM1ODUgNGU2MTNkZGYyYTFiZDE2NTZjNGVmNzRkZGJiMmExMGNkMjM1MzA2MSBsZWdhY3ktdHJ1bmsKKzMzNTg2IDQxNmQ5NDU4ZWU5N2NiM2YyZTNhMWMzMDQzNjM4NTRjMzk1ODliOGEgbGVnYWN5LXRydW5rCiszMzU4NyA1Mjc2MDc1MWM2MWVlNzJjZTkwYTFmZTM4Yzg5YjExYjYwMGJmMzFiIGxlZ2FjeS10cnVuaworMzM1ODggZjc3M2I1NjhiMmU3M2Q4MjllYTE5MmMyMTAzNTU5MjdiMjYyZjZiNiBsZWdhY3ktdHJ1bmsKKzMzNTg5IGZjZjY2ODBiNmE2ZmI3NzFjOGI1OThhY2FjNjg1NjcxOTlmM2NjOTkgbGVnYWN5LXRydW5rCiszMzU5MCBkZjllYTc0OTQwOWEzZWU0NTNjNGY3MTM0NTBkMzczNDUzM2QyNTExIGxlZ2FjeS10cnVuaworMzM1OTEgNTY0YTQ5ZWVhNDE0ZTEwMDkzMTY5NDZhZWZjMjkyNDE0ZGRhMGY2OCBsZWdhY3ktdHJ1bmsKKzMzNTkyIGVjOWYxODYxNTQ4NTZhOTBhZjU5MDQ0ZmJlY2EyOTA3MDhkYzEzOTcgbGVnYWN5LXRydW5rCiszMzU5MyA3YjE2Y2Y3MGViZDg5ZTQyNGQ1YTI0MmNiZTllOGMzNTJmMjgyYWFmIGxlZ2FjeS10cnVuaworMzM1OTQgMGIzNDIyYjYyMTE5MTE5NmMzM2U3NmE3NmJkYzI5Yjk4ZjQ5YTBjMiBsZWdhY3ktdHJ1bmsKKzMzNTk1IDJhNDBjYTA2YTIyYzg4ZDkyZjc3MTViZGMwODJmOWFmNzg0MjMwODAgbGVnYWN5LXRydW5rCiszMzU5NiA5NmJhYjdjODJlMmNmYzk2YzEwMDY5MDM5MDQ0MmI4YTA5ZTY2MjhhIGxlZ2FjeS10cnVuaworMzM1OTcgYzg2YjEzNTRhYzZmNmY3NGRhMzAwYWM4ZDhjNTNjZjA0ZTY4ZGNlNCBsZWdhY3ktdHJ1bmsKKzMzNTk4IDFiYzI1NTkyMjlkYjFkZmYzNzllNjg2NjAyMGMxZTY4NTNmZmJkZTAgbGVnYWN5LXRydW5rCiszMzU5OSA3ZmQyMGFlNDQxNDJmMGM5ZGYwNWFmMDMyZDdkZjA0OWNlNzViYjBjIGxlZ2FjeS10cnVuaworMzM2MDAgOGRlYzBmYjE0Mjg1NGYzNmI1ZDIyY2VjMjYwY2YxNzM0MzNiYTgzNiBsZWdhY3ktdHJ1bmsKKzMzNjAxIGE3M2MyOGRlZWY2ZGZmZTczNDkzNjA1ZmFmMGI1NzViMmUzNzFlMmYgbGVnYWN5LXRydW5rCiszMzYwMiA4NmM0NzZhNDI1YTdkYzUyNzM2YjI4OGI2M2U5ODZmYWM4NDExNzIyIGxlZ2FjeS10cnVuaworMzM2MDMgMDhkMjYzNmI4ZTU4NDQzZDE3NTBmNjc4YThkMWViNjg4ZDQ4YTU0NiBsZWdhY3ktdHJ1bmsKKzMzNjA0IDI1ODAwYTcyNDAxMWZiMjU0NDU2M2EzNTZhNmU4MWFjYzhlNmIyNDAgbGVnYWN5LXRydW5rCiszMzYwNSBjZmFkNTQyODNlMDAwNDc2NDEyNDQ1MmQwMTg0MTIwNzZkNjk1MTgzIGxlZ2FjeS10cnVuaworMzM2MDYgNzIyZDdjN2E3N2UyYjQ3ZjNhYTg5NTlkNmNhODI3ODZiMjlmNTZmMSBsZWdhY3ktdHJ1bmsKKzMzNjA3IDYwZTNkMjk5ZmM4Njc4ZjQ0MjYxNjgwMDY1ZWYyYjllYjkxNWQ1Y2EgbGVnYWN5LXRydW5rCiszMzYwOCBiYjhjYzcyOTE1ZjU2ODkyYzNiNTMxMzNkYWYwN2FmMTkxNWM2YjI5IGxlZ2FjeS10cnVuaworMzM2MDkgZWU3ZTIyM2RiY2FjZjA2OWNiNzdlNTBhNTZkODM5MWFkYmY3NjcxOSBsZWdhY3ktdHJ1bmsKKzMzNjEwIGI4NDY0NWMzMTk1ZTQ4NGQ2NzI2Y2E1Yjk3NTkxNDVhNjQ3ZDE3NTYgbGVnYWN5LXRydW5rCiszMzYxMSA0ZDQ0MTdkZjYzZjRlODA4YmYzMjA5NTNhOGQ0ZjM1Zjc2ODYwMWFkIGxlZ2FjeS10cnVuaworMzM2MTIgMDMxNTNmZDJkM2YyMTRjMWE3YTAyYzIwNzkxNDEyMGJjZTU2NGZlYSByZWxlYXNlMjItbWFpbnQKKzMzNjEzIDYyOGRjZjkwYmY5ZTJlMjAxZDIyYzM2ZGFiZjg1NmE0OTNhYjQ5NzMgbGVnYWN5LXRydW5rCiszMzYxNCA0MDdjMGRlYzJmNGFkYzkyYzYxZWE4MjQ0MDc1YThjYjFlNjA3MTYwIGxlZ2FjeS10cnVuaworMzM2MTUgMjlhNjNjNWNmYmFmYjk0NDE1YjJlOGFmODRkMDE0OTlhZTQ5N2Q2OCBsZWdhY3ktdHJ1bmsKKzMzNjE2IGRhMGM5MGM2YWZkMDFmY2I2ZmY4YjczYWZkYTU4ZGI4OTRlZjEyZTEgbGVnYWN5LXRydW5rCiszMzYxNyA5MDEzZDNjMWQ2NTUwNjRjODAwYTc5NjM1N2ZkZWM3MGIyZDM2NTAwIGxlZ2FjeS10cnVuaworMzM2MTcgZDA1NGMyOTY0N2Y5MGJjY2I4MzQ1YmQ3NzliY2ExZWVjZjJkZDdmMiBsZWdhY3ktdHJ1bmsKKzMzNjIwIDhhMjkzNDQ5ODI5ZDdiYWQwODJiZThiMDViYzZkNjdmZDQxZGFhNDcgbGVnYWN5LXRydW5rCiszMzYyMSBkYTM1OTI5NjJhN2FmMDc5OTc5YmI0MGIyOWFiNmI1ZDc4ZDllMzc0IGxlZ2FjeS10cnVuaworMzM2MjIgMTA4YWE5NjQ4NTczMjEwNThhNDJmZjY2MjI4MTM5YjlkYjgyZjY1ZiBsZWdhY3ktdHJ1bmsKKzMzNjIzIDlhNmY1YjM3ZTgxZDJkOWE4MjUxZDNiODNiMmQyMDc0MTNlYTA0NWEgbGVnYWN5LXRydW5rCiszMzYyNCBjZThiMTM4ZjQ0NzNhZGFkZDBiNmExNjRkNTJhNDAzMDZhMmU1MTM3IHIyM2MxLWJyYW5jaAorMzM2MjUgMzM3ZDQ0MDEwOTA3Mzc4ZTRmZGI3OGE0YjY1NjE5OWZkNjYxOTRmNiByMjNjMS1icmFuY2gKKzMzNjI2IGFkMDk2ODdhYWFhMGE3NTUyNjg1ZjI3NGZjNjAzZGEwZGJmZTdhMjQgbGVnYWN5LXRydW5rCiszMzYyNyAyYjhhNTY0ZTFmZDNkMDI2YTEyNDY4NjA5ODYzMjJiYmJlMTBlMWI4IGxlZ2FjeS10cnVuaworMzM2MjggYTljODk5NzM5ZjQ4MjJiYjZkOGI5YTliMjY4ZGMzNjRhZTUzOWE2NCBsZWdhY3ktdHJ1bmsKKzMzNjI5IDFjYmM2Yjc4MzZkY2I4YTZmMTllMjJiY2M1OTExYTQ1ODc3NDE0ZDUgbGVnYWN5LXRydW5rCiszMzYzMCAzMjI1ZjFkNDI4ODM1YTI3NTVhNjU0ZTg3MDZmNTFiZmRhMDE2ZDRkIHIyM2MxLWJyYW5jaAorMzM2MzEgMmM0ODNmN2JlYTRiY2Y4NjcxNTQ3MjM0MjgxZjYzOGZiYWRkNTEwMCBsZWdhY3ktdHJ1bmsKKzMzNjMyIGJhZjIyNDEwNzBiZmQ3MTdhMjM2YzMzMWY3ZTQyY2QwODNmNWM0ODcgbGVnYWN5LXRydW5rCiszMzYzMyAwOWM0NTk4NTEyNjQxNDZlYjMyN2M4NmJhNzRkYzVkY2Q0OTk5MmQyIGxlZ2FjeS10cnVuaworMzM2MzQgNWZhZWU3Y2RjNWFhYjI0NzY2Yjk3Y2JlYjNhMTcyZGFkMGExZDkwNyBsZWdhY3ktdHJ1bmsKKzMzNjM1IGNlYTdmOGFmOGUwYmI4MmU0ZDlhOTRiZTM0MmNhM2EwNDkzNmU1NDYgbGVnYWN5LXRydW5rCiszMzYzNiA0YmZjZmVkNjRlY2I5NjhjOTgyODVkYmFjYTg2MzBiMzliMjg3NzBlIGxlZ2FjeS10cnVuaworMzM2MzcgNGMxNDNjZWVmNDE5YzY3MmQwYzAyNjhjMDNkMzdiMjYzZjcxZGQyNiBsZWdhY3ktdHJ1bmsKKzMzNjM4IGE1NTBhZjcxMWFiYTRhMjJiNDZhZjMxNzhmYmI0M2JhZmNmZTkxMDYgbGVnYWN5LXRydW5rCiszMzYzOSA5NTBiMjUwMGExNDIyMjE0YWNkM2MwNTUwMDUwNmFmOTE2Yjc5NjQ3IGxlZ2FjeS10cnVuaworMzM2NDAgNjY4ZGQzMzZlMzA2ZjE1YmI4ZTBhOGFiY2NlMmYyMDBiNThmMGFhNiBsZWdhY3ktdHJ1bmsKKzMzNjQxIGM0MmE3MzE3Yzg4N2FiYjdiOWYzODYwMTIzMjExNzBlMzNkOGU5ZDQgbGVnYWN5LXRydW5rCiszMzY0MiAzMTdmMWVlMjRmMTg0OWI3OGU3MGM3NDQ1ZGI5YjlhZDdlYjQ5YWIwIGxlZ2FjeS10cnVuaworMzM2NDMgNGNmMmJmZmZhNTY0MTBmOGU4MjEwMTIwMmNiZTljMmY2MzU0ZGVhNCBsZWdhY3ktdHJ1bmsKKzMzNjQ0IGZlNDk5YmM3MzgxZmI5MDNiZmRmZWVlMzJhZDY0ZGQ1OTcwMTk5NTcgbGVnYWN5LXRydW5rCiszMzY0NSBhNGFiZTE3YTVmZWI5MWY0NjIyNGU4YTk2OGFkNTBhMzc0N2JkZGE4IGxlZ2FjeS10cnVuaworMzM2NDYgMTNjNzVmYTc4MGM4YzIyMjIyMjVhNTBkMjIyNzRiZmZhZWIwMzQ5YiBsZWdhY3ktdHJ1bmsKKzMzNjQ3IDMwM2Y1ZmRhMWEyODQwYmEwMmY4OTk3MmRhYmUyY2UyZDI3ZGFkZTggaW5kZXhpbmctY2xlYW51cC1icmFuY2gKKzMzNjQ4IGE3N2FhYWIwMTQ2ZGU2OTZlNmQ2NmU5OTNiNWM2NGVjNTlhNWRkZjQgaW5kZXhpbmctY2xlYW51cC1icmFuY2gKKzMzNjQ5IDVhZGRjY2EzZjQzMzM0ODJmYWUzNDRmZjQ4YWRkNWZhYmRkMjdiZjkgbGVnYWN5LXRydW5rCiszMzY1MCBlMzM5YWQyNTBhZjBmNDFmYzM0YjhhNjRjZDliODM1NmUxMDE4YTAwIGxlZ2FjeS10cnVuaworMzM2NTEgODJlZTFmYWUzODE5NGI4MTA5OTA3MjM3MDdiYmVmNTFhYzk5ZjM2ZSBsZWdhY3ktdHJ1bmsKKzMzNjUyIGE0MDhhYzU1MjdjMzQ1Nzg3MjhmNWYzMTMwODBjOTdlMzMyMWQyYzggbGVnYWN5LXRydW5rCiszMzY1MyBiOWQwYTBlZTIyMDZhNzJhOWE5NTc3MDNkNmRmZDY5NzAyOWM3Zjg4IGxlZ2FjeS10cnVuaworMzM2NTQgZDM3ZjEzMTk5ZDk1Mjk3YjQxMTE0NmQzNjc3MmEyOWFiOTE0NWFhYiBsZWdhY3ktdHJ1bmsKKzMzNjU1IDYxNDlmMGEwYjhmNTg0MjIyODk3YjYxZDM1YjlkMjk4YmMwN2QxOWYgYXN0LWJyYW5jaAorMzM2NTYgMjFlZGNlMDkxMDY5ZjlhY2QyZGNhMmE4OTE5M2I2NGIwN2FmYzQ4YyBsZWdhY3ktdHJ1bmsKKzMzNjU3IDJjMWU3M2IyZmNhMTEwN2I3MTc0MTE2MGY5ZWQxNTJhOWE0ZTMxMzYgbGVnYWN5LXRydW5rCiszMzY1OCAxMTg4MDliMWVmMjA2MTI5YjYyMGRlYTJhMzZjNzdjMWIyNmU2MzQ0IGxlZ2FjeS10cnVuaworMzM2NTkgMjczOTVjODQ0ZTIzYjdhZDQwYWFjNWZkODViNGE2NTZlYmZmYmRmYiBsZWdhY3ktdHJ1bmsKKzMzNjYwIDY1NDlkMmU0MDhmMGM2M2JmYzY2ZTg0MDk2YjAyMGE1ODIxNDkzMGQgbGVnYWN5LXRydW5rCiszMzY2MSA1YWQ0Mzk2MzJkZTU0YWMxOWUzYmJmMGJiZjczN2QzMWEwNmNmM2MyIGxlZ2FjeS10cnVuaworMzM2NjIgMTdjZTEyMzY5NDc3YTdjODZkYzg2N2ZiYzBmMjBiNzk2NDQ5MmIwMSBsZWdhY3ktdHJ1bmsKKzMzNjYzIDIxMTg3MDk3ODU0YzkwZTUyMmIwMTRlODQ5NjUyMGI5ZWY4MTM0ODAgbGVnYWN5LXRydW5rCiszMzY2NCAxYmQ2ZTYyZmIwNmY3NzkzN2NkYWY3NGQ2YjIxMWMxOWQ4YmViZmMwIGxlZ2FjeS10cnVuaworMzM2NjUgN2JhNDJjOTYyOTRjYzY5M2MwODRlOTk2MzNiNGJhYTFjN2ZlYmFiNCByZWxlYXNlMjItbWFpbnQKKzMzNjY2IGYyNzA4ZWY2MDE2OWIxOTJkOWUwNjZkM2NmNmEyNjRmZTRkMDAyZWYgbGVnYWN5LXRydW5rCiszMzY2NyAyZGEwNWI1YjVjNjUwNTVhMzY3MTZjM2M3MWE2MjU4ZjhjN2Q0NWUwIGxlZ2FjeS10cnVuaworMzM2NjggMjlmMDdhZGMzMDE5ZDA3NWM5YjMyYTg1M2RiMTQ2ZDE0YzZlYjRiMSBsZWdhY3ktdHJ1bmsKKzMzNjY5IDhmMzA2ZDNkNmQ1NmVkOGRlMzc0MjZkNGQxYWIxZDQzODgzMmM1NjYgcmVsZWFzZTIyLW1haW50CiszMzY3MCAwMDA5YTAzODMyMjI1YTY3NWM5MDUzOTA3YTAxMzM4Mjk0MjRmZWU1IHJlbGVhc2UyMi1tYWludAorMzM2NzEgYjU5NDk1OTFkOWQ1NzRlMDQ1ZTIxZDA1ODFjMjJjZGFhMDA4NDcwNyByZWxlYXNlMjItbWFpbnQKKzMzNjcyIDg2ZTQ3MjVhOWRiZDRiOTU0ZGY4ZDQyOWVmNzIwYTljMjcxYzVmMDkgaW5kZXhpbmctY2xlYW51cC1icmFuY2gKKzMzNjczIGIzM2M2MGZjY2U3NGY5ZGYwZDFmNjAxNWI0Y2RkNTkzNWUxMjgzM2MgbGVnYWN5LXRydW5rCiszMzY3NCAzNWNjZmMxNDBjYWMwYzJmM2NhZDllYjY4MTNhYTQ3NjlhYmM4YzFjIGxlZ2FjeS10cnVuaworMzM2NzUgNzMwYWJmY2YyNjEwZTljNzFjYjAwNTViMjliZTYzNDFjMmY1NTFiMiBsZWdhY3ktdHJ1bmsKKzMzNjc2IDY3M2JjZWQ5OTE4MGZkNWFjNzUyNTRlOWEyNjllMGIyNmNkZjg3NTUgbGVnYWN5LXRydW5rCiszMzY3NyBhYTQ0ZTA2ODg4OTZhMDQ1Mzg1Mjk4YTNmYTU4MGM3ZjlkMWU4ZGQxIGxlZ2FjeS10cnVuaworMzM2NzggMDJlNWI0YjY3YTY2MzAzYzQ5YTk3ZDk2YWYwYThjNjk2YmQzYmZhNSBsZWdhY3ktdHJ1bmsKKzMzNjc5IDA5NTQ2OWM3YWJlNzI3MDIwMDJjYmMzZWJiZmE0NzkyZTc1YzkyN2MgbGVnYWN5LXRydW5rCiszMzY3OSBmY2U1YzllOWFiYzcyMjM5NGNiMmU5MDliN2UyYTM5MDgwZDQ0NDhlIGxlZ2FjeS10cnVuaworMzM2ODEgZTFiYjEyNjJmMGJjMTQ2MjNkNjQ2YjAwY2I1NDc1YmQwMTk4ODEwMCBpbmRleGluZy1jbGVhbnVwLWJyYW5jaAorMzM2ODIgODNlMDZmZTEyNGExOTNhNTM0ZTQ0ODg5OWI1YjU5NzU1NTA0ZTRkZCBsZWdhY3ktdHJ1bmsKKzMzNjgzIDUzYjc2MGIwMjdiNzcxMmIwNjdkMjRlYmMwM2Q1MTdlZGY4MTBjYWUgYXN0LWJyYW5jaAorMzM2ODQgOTZmYThmMGI5ZWViYTdmY2QyYWYwNTFjOTRiZjdhMjRlODg1ZGNiMCBhc3QtYnJhbmNoCiszMzY4NSBjZmJiN2I4MjY5MmQ3MGYwOTcxZTM3ZGY1NzUwN2UzMDA1MjczYTg5IGFzdC1icmFuY2gKKzMzNjg2IGY4MmViMTYwNDQwYmRhNDllYzIyODk0ZmY3YzU5Mjk2ZTgxZWM4ZTAgbGVnYWN5LXRydW5rCiszMzY4NyA1MmRkNTQ4ZDNiZTlhOTdhZDc3OWJiMTY1MWNiYTRjNDE2NjY0MmQ2IGxlZ2FjeS10cnVuaworMzM2ODggM2FkZGE4MWEwZTBiZDA1MjRhN2NiYjFhNDkzOTk0OWI3OGRmOTQzZiBsZWdhY3ktdHJ1bmsKKzMzNjg5IDM1ZGVhMTBkY2RjNDVlODVjMWFlNDk3MjJmN2IyNTU0NWEwMTdjMDAgbGVnYWN5LXRydW5rCiszMzY5MCAxZmJhYTA1YjM1YzFiZjBlYzE1YjU5ZTExNjRhMWY0Y2JmY2Q0ZjYwIHJlbGVhc2UyMi1tYWludAorMzM2OTEgOGNkOTRkMTE3Zjg3Nzg5MjdjNDRiMjlhZWZhMGZlMWRiNDQ4MmM5YSBsZWdhY3ktdHJ1bmsKKzMzNjkyIDM3Y2NmMWJjNTRlMDQ0ZmJkYzZiMjQ0NWJlNTk5MDFiYjhkNGE4NjAgbGVnYWN5LXRydW5rCiszMzY5MyAxNWZjODNjNTA1ZTMxNDk3MDI2YjBhOWY1NzZmMDc4YWY0OWNkZTg3IGxlZ2FjeS10cnVuaworMzM2OTQgY2ZhOWYwNDljMjA0YzY4YWEyZjIyMjRkYzQ4OTkwOTllNzMxOTA0YiBsZWdhY3ktdHJ1bmsKKzMzNjk1IDRiNTcwMjMwNmM1ODFiM2VmNmJjZGJkY2VlYTVlODlmZjdiZGFmNDIgbGVnYWN5LXRydW5rCiszMzY5NiBlZmExYmI2NTZiMmI2ZTUxOWE3MjNiYzU2Mjg0NWQxMDE5YTRjOTM4IGxlZ2FjeS10cnVuaworMzM2OTcgYTEzMTUyYjI1ZmU4ZGY5M2QwYTE2MWZjNTNkZTYzNDNkOWNkNmVkYyBsZWdhY3ktdHJ1bmsKKzMzNjk4IGRlN2Q5YTJiNWZhYzMwODMyNDA2ZmVjZDgwY2YyNjlhMzdlMzg1OGMgbGVnYWN5LXRydW5rCiszMzY5OSBlZThiYWNjNmYwNjhkNjE3NGIzYmMzMDY4MzI0ZGEwOWViMzI1M2U5IGxlZ2FjeS10cnVuaworMzM3MDAgMjkwOTQwMTYzOTdkNjI2MGQ0ZWY5NGQ2MTFkOGY3OGFkYWZlMGMyOCBsZWdhY3ktdHJ1bmsKKzMzNzAxIDY3NGNmNWEyNDE0N2ViYjY4MzNjYTI3NWQzMzM5ZjYzZDBlZjFiMzcgbGVnYWN5LXRydW5rCiszMzcwMiAxMmE3ZjIxNTY0ODE1NDE3Y2Q4YzY0YjBlODBhNDFhYzZkYzQwZDNmIHJlbGVhc2UyMi1tYWludAorMzM3MDMgNzRhNWNlNDlhOTJmYzgzMmFkNDQwNTgwODM0MmM0MGY5N2Q2ZGYwZiByZWxlYXNlMjItbWFpbnQKKzMzNzA0IDBkNzlkYzg1NGFjNDY5MGVkNDE1YzgwYzU4MmExN2FhNGUzNTk4MDIgbGVnYWN5LXRydW5rCiszMzcwNSBhNjIxNTNkOWM4ZDY1MTcyNTFkZGE3YWEyZmI5YTA1NzY5NzZiNDMyIHJlbGVhc2UyMy1icmFuY2gKKzMzNzA3IDIxYjgxMzk5YjYyODQyMGE2OGM4NmI5ODAyNWJjYmU2N2M1NzUxMGYgcmVsZWFzZTIzLWJyYW5jaAorMzM3MDggYTUyMDM2MTRjYWE5NmQ2YjljYzJlNGUzMWYxZTk1MDIwZGQ3NTRkMiByZWxlYXNlMjMtYnJhbmNoCiszMzcwOCAxOGVkYzdkNTdkZmZiNTZiZTgzNzRmMzVlNDdmMzkzMjlmNWU5ZDMxIHJlbGVhc2UyMy1icmFuY2gKKzMzNzEwIGVjZDg1NzMyMDRjZDI0YjFmZjFmODRiNzdkYTgyMTBiODVmNDU4MTYgcmVsZWFzZTIzLWJyYW5jaAorMzM3MTEgNDNiMGE0MDRkNGEwMWNjMTc5OGU0MTM1NTg1NTlmZWU4MGFhMmZlMSByZWxlYXNlMjMtYnJhbmNoCiszMzcxMiBjM2U2OWYzNzZmMjliMTkxMTQzNDE0ZTJlZDAyOTkwNGIzNzlkZWM2IGxlZ2FjeS10cnVuaworMzM3MTMgM2ZlODJkNTdkMGQxN2YxZDhkMzk1ZWI1MmIwMDQzODFhMzM5NTZmZiBsZWdhY3ktdHJ1bmsKKzMzNzE0IDFkNjNlMTUzOTg5ZjAzNTQ2YWU4YjJhZDBkNzBiMmQzYjdiYjMyNDcgbGVnYWN5LXRydW5rCiszMzcxNSBiN2UyZDczODBjYjIwOTdjNzFhNGFlMmMwOGZlNmM3NjFlYTYzMmNkIGxlZ2FjeS10cnVuaworMzM3MTYgNzAyYWE2ZWIxMWY5YjNkMGQzN2U0ZWY0YjhlMTJhMzM3ODM3ZTg3MiBsZWdhY3ktdHJ1bmsKKzMzNzE5IGI4MmVhMGIwN2IwYWI4YjViNDM3MmQ0N2Q5MjM4ZWUxZmY4ZTU2YzIgcmVsZWFzZTIzLWJyYW5jaAorMzM3MjAgYzM0MGIyN2Q3MzliMTEyZmE1NjA3ODllYzU1MWQ0YWQ3ODIxM2ViYyByZWxlYXNlMjMtYnJhbmNoCiszMzcyMSAwMjUyOWZiMTg4MTVhMDg4Y2I5MTU5NmI5Y2FiMTE2MmJlY2Q4YmVkIHJlbGVhc2UyMy1icmFuY2gKKzMzNzIyIGU1OWEzNmExODA1ZWQ2Y2JlYTQwOGM5YTY5ZmRjNWZkYTY2ZDQzZjYgbGVnYWN5LXRydW5rCiszMzcyMyBlNGVlOTg2YWYxYTA3ZjdkNDhlMjVmMGI1M2JlMjMyOTU3MmM0ZTY3IGxlZ2FjeS10cnVuaworMzM3MjQgZTE0ODI5NmQ4YTkzODhlZmVkOTA3OTMyOTVmMTc1MjYxYmUxMDg0MSByZWxlYXNlMjMtYnJhbmNoCiszMzcyNSAxODczMWQyNGUzZDEwMzc3MWIyYjVkY2UwZjIwODIwZTFjZDVmODhhIGxlZ2FjeS10cnVuaworMzM3MjYgMmYwM2Y4Mzk4NGIwNzFjOTAwMTNjODU0OGViZjcyMDdmOWQ4OGUyNiBsZWdhY3ktdHJ1bmsKKzMzNzI3IDY3ODRhMjQxNjMzMTUwYTk4NTkwZDkxNzg1YTdjMTJjMWQ4NzFkODUgbGVnYWN5LXRydW5rCiszMzcyOCBlNjIxYTk3YmZhMTZiMWRkZjVmMGYzMGEyM2ZjNDlmZGY1ZmU3NWY5IGxlZ2FjeS10cnVuaworMzM3MjkgZTIxM2NmZTE3YTYyNGQzYTYwODFiOGMyN2YzMjNlMmQ4YjdjYzEyZCBsZWdhY3ktdHJ1bmsKKzMzNzMwIGQ3MjU0N2M5MTVkNWE2NGVmNWNiNGQwOGNjNjYwYmFiZWUwYzNjYzAgbGVnYWN5LXRydW5rCiszMzczMSA2NzcwMzg4NzNhMjJiOTRkZWQ0OGQzNjE2N2RlZTVlYTdhZTZkOGUzIGxlZ2FjeS10cnVuaworMzM3MzIgMDhmMzhkYWZjOThhNzA2NGM0YjZlNzBjNTNiN2ZmMmJhNzA5MmNjNyByZWxlYXNlMjMtYnJhbmNoCiszMzczMyA4ZDhjZGVlMzQ0YWQ1NjY3ODZkMzE0ZDc0MDBmMjM5YzZjMmY5ZjVlIHJlbGVhc2UyMy1icmFuY2gKKzMzNzM0IDllMGQzOWEyZDM3ZTQ5ZGVjM2ExYjYyNjIxZTQyNzI3ZGQ0MDgxN2UgcmVsZWFzZTIzLWJyYW5jaAorMzM3MzUgMDQwNjg3NWNhN2ZkM2I2MTNjZTYxNjEzZjUxYWUzZjMyY2Y2NzdiYSByZWxlYXNlMjMtYnJhbmNoCiszMzczNiA2ZjZkZTc2MWVmOWI3YWRiOGNiNTFjMzY1MDNmMjM2MzM2MmQ4MmVlIHJlbGVhc2UyMy1icmFuY2gKKzMzNzM3IDI0ZTczNzk4ZWQwNGU0ZWQ3YWYxZTA1NmUzMjY5YmQ5OWQyYWYyM2IgcmVsZWFzZTIzLWJyYW5jaAorMzM3MzggNzA1OGRjZjczM2Q0NjZjMDAyYWJhZDI0YTE0ZjBkMWFhODkwMTVkYSBsZWdhY3ktdHJ1bmsKKzMzNzM5IDQzYzk3NzFlMGJlMTBhYTUwZDg2NjJlNzIxY2FhNzhkMjFkZWM4MzIgbGVnYWN5LXRydW5rCiszMzc0MCBjZTE4NTAzNGIzODA3ZGQ4MzVmZmQ5ZDBhZGEwODA5NGU2ODY0NjgxIGxlZ2FjeS10cnVuaworMzM3NDEgNjljOGUzOWY2ZWU2YzU2YTI2ZWNjMmE1M2RlYjZlNjA5OWQ4ZmI1MiBsZWdhY3ktdHJ1bmsKKzMzNzQyIDA1MDRiYThlZmJiNmNkZDExZjFhNDdjYWYwYjQyNGZjYTQzMzI5NWMgbGVnYWN5LXRydW5rCiszMzc0MyAwYzYyMTgwMTQwOWFmMjg2MmJiYWQxYjE5YWE3YmM4MzlkOWUwMjMxIGxlZ2FjeS10cnVuaworMzM3NDQgZDhjOGZlMGM3M2VkZWVkODNkMzZkYzZjOGJhMjU0YjNjMTAyYmJkOSBsZWdhY3ktdHJ1bmsKKzMzNzQ1IDY0M2ZmYjdkYjE4ZmQwNWY5ZmUyNzhiNzEyMTk4MjIxNTA1YzhhYmYgbGVnYWN5LXRydW5rCiszMzc0NiBkMDk5NDRjZWUzYTRmZTRlZDE0MWRlYzQzMWNmNjE1MzBkNGMxNDIwIGxlZ2FjeS10cnVuaworMzM3NDcgNTI2YzEyYWIzNmFmMzk4MmY3MDRiZjI1MmU3ZDhhNjQ2MmI0ZTVhYiByZWxlYXNlMjMtYnJhbmNoCiszMzc0OSBkNzM4YTA3YTI5M2EzNWY0MDMzYmM3OWRjNDliOWUzODBjYmE3NjVkIHJlbGVhc2UyMy1tYWludAorMzM3NTAgYzlhMDA1OTBiOTAxZGRkYmU2NmFjOTE3NmI4NTIyYjM0ZjdmY2Q3MyByZWxlYXNlMjMtbWFpbnQKKzMzNzUxIDgwMTRmYjgwZDE0NDUzOWI3NGRmMzI4ZGNlYTFkMTZkMTgzNWJmMjMgcmVsZWFzZTIzLW1haW50CiszMzc1MiBkYjlkNjMwMjM3YTY1NzY1ODIzYzc1ZWU5ZjYzYThlYjU4ZTllZjFmIHJlbGVhc2UyMy1tYWludAorMzM3NTMgZDhlNTJiY2UyY2Y5MDNiNDdhY2FjNDQwNDAxYjcxMGU5NWM0NDZhYiBsZWdhY3ktdHJ1bmsKKzMzNzU0IDVhMmE5MWI5NzgxMGExY2IzNDNjOWU0Y2VkMjg3YTljNDBiMWQ4MjggbGVnYWN5LXRydW5rCiszMzc1NSAyY2ZhY2E2MmE5OTA3M2RhYzA0ZDBhZjFkY2U4ZDU2NDgzMjNiOTQ3IGxlZ2FjeS10cnVuaworMzM3NTYgYWU4NDg1ODY3ZDMwNzExYWI5OGE3ZDQ3MDBkNWY1YWIzMzdmZGQ4MiBsZWdhY3ktdHJ1bmsKKzMzNzU3IDQ5NGIwN2E1ZTJlNTdjYmMyMzg4M2Q1NWFmOGQ5ZDEzYzhhZGM2OTAgbGVnYWN5LXRydW5rCiszMzc1OCA3ODAxYjEzYzUyYzk0NjEyYzc0MjYyOTBkYTZjYmJlYTE3YjRiZDk2IGxlZ2FjeS10cnVuaworMzM3NTkgMGNmYzZjYWJjZTg4NGE1MzBjY2ViNThkYjg3YTFjMzMyZDFiZWJlOCBsZWdhY3ktdHJ1bmsKKzMzNzYwIGEwMzAwZWE2MzhkZGI0MTMwMTkwOTY3ZjIxODBmYTE2ZTc1YTJhZjYgcmVsZWFzZTIzLW1haW50CiszMzc2MSBiMjRlOWQ3MWZhM2NkYmM3YzkxMGVlNzgwNjdhMTQwNmQ2YWQyZjBjIGxlZ2FjeS10cnVuaworMzM3NjIgMWQ1YmU2OTgxZDU3ZWRkODcyYzRjNTMzZTQ5NmExOWY4MGQ1ZTRiNCByZWxlYXNlMjMtbWFpbnQKKzMzNzYzIGU0NzdiNTk5OTI0ZGE4M2Y1NTczODBhNjQ1MDAxOTg1MDk5Nzk4M2EgbGVnYWN5LXRydW5rCiszMzc2NCBhYWIxMDg5ZjBmODVkZWViYmQ1NDVmOWNjMjNmNGY0YTIwMjk4YzY2IHJlbGVhc2UyMy1tYWludAorMzM3NjUgNGFkZmQ3NjQ2NmJjNmMwNmU0ODRiNTJmZTRhMjM4NmJkYjgyNzZlZCByZWxlYXNlMjMtbWFpbnQKKzMzNzY2IDIwMDE2NWQxMWE5NDYyMmFjZWJiMDIxZjk2MzU4NGE4MTY5NDM0NDYgbGVnYWN5LXRydW5rCiszMzc2NyBmMjYxOWJkNjgzZGIzZGIxYmI3OGIwZjA1NTYxNmI3ZmY3ZWUxNGVlIHJlbGVhc2UyMy1tYWludAorMzM3NjggMzU0YzdlZTQzOGJmNGVhMDE3NGY5M2E3Mjk2YzdlZGEwZTAxNzY3MiBsZWdhY3ktdHJ1bmsKKzMzNzY5IDdhZWExYjVjZGViYmEyZjc2ZmZjOGIzOGY4N2QxMTYwZDc3NWIwYWQgcmVsZWFzZTIzLW1haW50CiszMzc3MCA1ODlkNTU0NWFmNDExNjMwMjY0NDA3MWE4N2QxNDAzYzE4YmI3ZDc4IGxlZ2FjeS10cnVuaworMzM3NzEgMGU2NDI0MDgwMGRkMTNjNzFkOWQ0N2FjNWE1MDM0ZDEzMzFiOGQ1NiByZWxlYXNlMjItbWFpbnQKKzMzNzcyIDk4ZTZhYzFkODM3OTcxOTYzZjQ1MThlMmEzODliZjcxOWE4YjNmOGIgbGVnYWN5LXRydW5rCiszMzc3MyBhZTAyNDJlMzQ1OWVlYWE5NTIzZjNlNzQ2NzM5MWJkMDhkNDE4Yzc1IGxlZ2FjeS10cnVuaworMzM3NzQgOWJkNWMwNTJiMzA4Yjc4YTcyZWEyOTc2YWVkMDdjZmJlNzNhNDM3YyBsZWdhY3ktdHJ1bmsKKzMzNzc1IDE3MTgxNGY1ZGNjNjMyMTBiNjIxYTQzYjRhN2Y5NWQzZDkxMTQzNWQgbGVnYWN5LXRydW5rCiszMzc3NiBhYjEwYzBjMjVjMDMwNGFkNGEzOTgxMDMzMGRhOTc2MzZkNDNiMzE5IGxlZ2FjeS10cnVuaworMzM3NzcgMDYxZDg2ZmMxMWJiMzgzNGRiNTk3ZTcyNzc1MzQ0YmFkY2E3YTI3OSBsZWdhY3ktdHJ1bmsKKzMzNzc4IDczNWVjMDg2OTQ5MjNmZWI2MDYxY2FmYTBlMTBlNzc4M2U1YTVkYWUgbGVnYWN5LXRydW5rCiszMzc3OSA3YmQ0MDIwNTA5NGNjNDgyM2JhZjNiOTU0NGFiODQwMzA2OTg0ODMwIHJlbGVhc2UyMy1tYWludAorMzM3ODAgMzZjMjc3MzgxZDc4YjNiYjYzNzcwNWRmNTEwMzFhYjM3ZmViZGRkMyByZWxlYXNlMjMtbWFpbnQKKzMzNzgxIDhjYzgwMDAyZmI5MDM3MDhjZTQxNTQwYzhhOGY4Mjg5MTQ5YzkxYmUgbGVnYWN5LXRydW5rCiszMzc4MiAyYjE0Yzk4MjdkOWNkNzNiYTY3N2UzNTdkYTE3ZWZkMGQzMzA5NTczIHJlbGVhc2UyMy1tYWludAorMzM3ODMgNWIxZGRjNGI0OWI5YmIxZjk2MmFjMzNlZmU3M2FjMTUwMjZhZGQ1NSByZWxlYXNlMjMtbWFpbnQKKzMzNzg0IDhiN2UzN2I1ZjFlZTQ1MWQyNDkxOGE5M2E1ZWYwZjZmZGNjNDAwNGIgcmVsZWFzZTIzLW1haW50CiszMzc4NSA3NjJlMWIyMDg4ZTUxODhkZmVlNjMwNjk5NDliYjc5ODNhZWIyMWM1IHJlbGVhc2UyMy1tYWludAorMzM3ODYgNTlmZjc3YjBhYzcyNGFiMTJhNTZlNjU2Yzg4NjcwMzdiZDM0ZGU5YyByZWxlYXNlMjMtbWFpbnQKKzMzNzg3IDhmOTNiMDliMmJiNWYzNGMyNDUxMGNjZmNlZDc5Y2Y2N2Q4NTgyNjQgcmVsZWFzZTIzLW1haW50CiszMzc4OCA3ZjU0ODkxODRkOTQzMzBhYmViNGYzNjA2Mzc3Y2VmNjUzYjU4YmUzIGxlZ2FjeS10cnVuaworMzM3ODkgNjIxNmU3NGI4OGVmYmUzNjg1OWQ5OWEzYTY0MmY5NGNkNDY2Y2E4NSByZWxlYXNlMjMtbWFpbnQKKzMzNzkwIDFjNDUxOTRkMTI0ZDg5NTI0ZjRiNmNkODkwMGE5Y2M0MGRjMDgxNjMgbGVnYWN5LXRydW5rCiszMzc5MSBiMDc2ZjY5YzVkYWMzMTJjODZjOGJhNWJiZWVjMDIxMTdiODU5NzU3IHJlbGVhc2UyMy1icmFuY2gKKzMzNzkyIGQwNWQwZWQ0NjVkODAxNjVkZWFkMThmZjlmOTE4ZWMyYzU5MDhjZTggbGVnYWN5LXRydW5rCiszMzc5MyBkYmRlM2RkMzEwNjg1MmVmZDIxZjM4YjcyODliNDMzOGUzMTRmYzc0IHJlbGVhc2UyMy1tYWludAorMzM3OTQgOGViYjliMzU3NmQxM2M5ZDAzNDc0ZDI1MWE4MmUxMWVhYTg5YjQ5NiByZWxlYXNlMjMtYnJhbmNoCiszMzc5NSA1M2MyZmYxZDgxZDE2OThhZDA5YjNiNWYzNGE0YzQ3YWM4NDZlODkyIHJlbGVhc2UyMy1tYWludAorMzM3OTYgYmZjYzk4ZGU3ZmNjMjUwNDhiODk5ZDU4YzM0OGEwNTBiNTFiZjg2MCByZWxlYXNlMjMtbWFpbnQKKzMzNzk3IDQwZjVmMGI0NGNjNDQ3Zjc4ZTYwMjMwMWVhN2NhMjM0MDM3NGU0NzggcmVsZWFzZTIzLW1haW50CiszMzc5OCBiYTQ4ZTU3MWE0ZDVjZTlmNjM0MWY1Yzc5ZmJkODQxMWQ3MDZhMzQ3IGxlZ2FjeS10cnVuaworMzM3OTkgNWM4YjJhNjY2NmMzNmZjNjMyZDJmZmUwZTQ1ZDBhY2VkOGNkNmZmYiBsZWdhY3ktdHJ1bmsKKzMzODAwIGFmZGU0MDJlM2E1NWE5OWIyNTdjOWQyYmZjNjhiZjljYTA5YzdjYjUgcmVsZWFzZTIzLW1haW50CiszMzgwMSBkNGNjZTU1MzQ3OGE4MTBkMDRhOTIzNTJjZWQ4ZGFmZTNjNjAyYzA2IGxlZ2FjeS10cnVuaworMzM4MDIgMGFjNDM5NmIxODk0YTBlMjlkOGMwYjFjZDU5MGE0ZDFlNmNlZmJjNCBsZWdhY3ktdHJ1bmsKKzMzODAzIDc0ZWY4YjhlMDA2MTc0YTUzYzBiNWE2NDVjODkxMzBkOTZjMWUyYjIgcmVsZWFzZTIzLW1haW50CiszMzgwNCBlM2M5YjQ4ZGU2MGFlMjc0MDY4YjY4NDhkMDIzYjZkZmQxNDA0MzhlIGxlZ2FjeS10cnVuaworMzM4MDUgMDYwMTZkNWQ4MWQ3ZDRlMWQ0ODBhMzgwMGE1Nzg3OGQ0OTNjMDA5MiBsZWdhY3ktdHJ1bmsKKzMzODA2IDFjNGQxOWI5YmFhYzY1M2ZmMGMzYWI5ZDc1Yjg1OTgwMjExNWQ2Y2MgcmVsZWFzZTIzLW1haW50CiszMzgwNyBkNjM3OTYyMGZiMDhkMTRhNzA2ZDM3NTZlNzIzNmFjYWNjYmZmYjIxIGxlZ2FjeS10cnVuaworMzM4MDggM2RjOGYyYjQyNDhjMmI4M2VkM2E0NGNmYjlkYmY1NmFmOWIyOTc3YSByZWxlYXNlMjMtbWFpbnQKKzMzODA5IDA5YTJjZGVhYjhjMGFlODNlMjlhMDY3NmY3Y2IzMTU5NTYwMDYzZWQgbGVnYWN5LXRydW5rCiszMzgxMCA1MzBlMjNiZjllMTkzZWVhY2Y4OGZkY2NjOGVlYzY1NDAxNzQwNzYzIGxlZ2FjeS10cnVuaworMzM4MTEgOTAwMzI3MDk1YjA1MTQwM2ZhNmE4ODQwMjRhYjcxZTc5ODE1YTdiNSByZWxlYXNlMjMtbWFpbnQKKzMzODEyIDUyODQzN2EzZjVmN2E3NWMxOTEwODhhNzk3YmNhMmJlZjQwZjMwMzMgbGVnYWN5LXRydW5rCiszMzgxMyA2NjVmOGE2ZjQzN2RiNDZiY2U4MzdmNzQxZGM2OTI4MDAwZGI4OTFiIHJlbGVhc2UyMy1tYWludAorMzM4MTQgNDM1M2YwNDQyMmUzMjFmZDEyNGIxZWMwMmMyYzZjZDg3N2NhNDQ1YiBsZWdhY3ktdHJ1bmsKKzMzODE1IDI2NTA3OTg4MzY2ODczOGY2ZGY0YzY3NWY2ZWRiNWI5NWY0OTQ3YjYgbGVnYWN5LXRydW5rCiszMzgxNiA2MTZhOGMwY2M5MTcwNmFiZTA0MTU3N2NhOTU2N2IyNzRkYjVmNTJiIHJlbGVhc2UyMy1tYWludAorMzM4MTcgYTg4ZTZkZmJmZDZkMzRmMTA3YmQzNjBmYjVmY2VlN2ViZTY0NWY1NCBsZWdhY3ktdHJ1bmsKKzMzODE4IGZiMmFiY2EyZDJkNTU5YzYxZDZkODgyYmNlMTdhZWI1ZDQzMzg0MDMgcmVsZWFzZTIzLW1haW50CiszMzgxOSA5MmQ2ODA4M2EwZmQ2N2JmYWJlZmNlNzQ0YTk5NDc1NWY2Yjk2NDFiIGxlZ2FjeS10cnVuaworMzM4MTkgOGU2M2M1YTMzZjQ3MGY3YzM2M2UzOGE3YzE2MmQyNDllZGNiMmJiNiByZWxlYXNlMjMtbWFpbnQKKzMzODIwIDQ2MTAzMGU2YmQ2NzZjNWI3ZDk5N2JjNzE2YjQ0YTgyOWZkOWIzOTEgcmVsZWFzZTIzLW1haW50CiszMzgyMSA2N2E5MWY3NTBjNjMxMmNjNGY3ODkzM2FhMjM1YjAzMDRlZmJiN2M1IHJlbGVhc2UyMy1tYWludAorMzM4MjIgOWY2ZTJkZWUxODkyZjczYjkyMDZlYWEyYzZjNTY1MWE2Y2MyOWQyMyBsZWdhY3ktdHJ1bmsKKzMzODIzIDdiOTA2NTcxZGM2OGI0ZjAzYTA2NDExYTQyNDk5MzI5NDkzODdjNmQgcmVsZWFzZTIzLW1haW50CiszMzgyNCBmZTA1N2JlYTg4NTY2OWNkNWQwZWM5YTA1MWNiZjBiN2E1NDE3YWQzIHJlbGVhc2UyMy1tYWludAorMzM4MjUgNDBhYTRhMTBmNDliNmE1YmZmMjAzY2I0MWVjMTQ5ODk1ZTYxZTcyMiBsZWdhY3ktdHJ1bmsKKzMzODI2IDM3NzllYjQ4M2U2YmQ1ZGE0M2YyMTNjOWE1MmUzNDMyMWI1ZTc3NDcgbGVnYWN5LXRydW5rCiszMzgyNyA3MjBmNDRjNmQxMWMyZDE0ZjA1ZGNlYTU0ZWVjNjdkNDUyMjE5ZWExIHJlbGVhc2UyMy1tYWludAorMzM4MjggMTljMGY4MTdjYjQ3NTc1YzA2NWU0NzQ1NTM2ZTI4MWJmOGM5MjYxYyBsZWdhY3ktdHJ1bmsKKzMzODI5IDk5OGIwNjczMGM5ZmIwZTU5Y2QxODUyYTRiOTJhZjM3ZDYxN2U5ZTQgcmVsZWFzZTIzLW1haW50CiszMzgzMCAyMTA2NzZlYzlkNWYxN2VlNjRmZjNhZDczODg4ZTY1ZmZhNjZjMDU1IGxlZ2FjeS10cnVuaworMzM4MzEgMTU5OGZiZTY5M2Y5OWM4NTI2NTMyMGUxMjI4M2E4ZGIzY2VkZmUyNCByZWxlYXNlMjMtbWFpbnQKKzMzODMyIDI5MDMyZjM3ZGM4ZjgyN2YzNTk1ZTE4MmVjNjY2OGE4OWE3M2Y0NDMgbGVnYWN5LXRydW5rCiszMzgzMyA0YjQ2ZDU0NDlkNDk5NTcyMmJjNDc3NDNhNDllZTQ4NmVlZTU2ZGMzIGxlZ2FjeS10cnVuaworMzM4MzQgNjg0MmNlYjM5YTE0NDE2ZDRlYzc3MGQ1OTA0OTI1M2FjYWM4MjhkZSBsZWdhY3ktdHJ1bmsKKzMzODM1IDJjNmY5MmNkZGJhZDlhOWEyZmE0NThmYjU2ZmZiNTIxYzg5ODM3N2YgbGVnYWN5LXRydW5rCiszMzgzNiA1M2Y5MDY5ZmM2NTBlZWFjZmJkOGZmNWVlNjVmZmY5YTNhYmRiMmUyIGxlZ2FjeS10cnVuaworMzM4MzcgYjg2MjNiMmM5YmNlNmFiOTZmMzJkOTBmNmM0N2VlMTkwNTliNzgyOCBsZWdhY3ktdHJ1bmsKKzMzODM4IDgyYTFkM2YyMTBhZGYwOGEwYjY2MTBmYjc2ZGU3M2VjOWI4ODhiMTQgbGVnYWN5LXRydW5rCiszMzgzOSBjMzNkMzY4OWVkNWI2Y2EwYjAzOTIwNTkwNmZkZjdjM2RmOTI2YTAyIGxlZ2FjeS10cnVuaworMzM4NDAgZGUyOGQ5OTI4ODU1NTZkYWU4MTRlZjkzZDZmYTYxMjM1NTRjN2RiMyBsZWdhY3ktdHJ1bmsKKzMzODQxIDVkMGM4N2I5NTcwZDNhY2I3YjE5YjNlMDViYTFiNjk4NmNhNDVlMjkgcmVsZWFzZTIzLW1haW50CiszMzg0MiA1MjNjM2Q2MWRiZGRlNzM0YTBmNTZkYmRiOTRhMDgwMzJiMjMwMDE3IGxlZ2FjeS10cnVuaworMzM4NDIgMzA0YjVhMzY1NTc2MTE0MjE4YjhiYzNkYWZmODZkMTNhMjQ5MDZlMyByZWxlYXNlMjMtbWFpbnQKKzMzODQzIDE4YjY3YWU5Y2Y0NTgyNDM2NzYzYTU4ZDhkYTU5MDRlNmVjMzVmZDIgbGVnYWN5LXRydW5rCiszMzg0NCBkZjY1NDg2MWNjZjZhMTA5ZjQxMzUyYzM2MDRlNmY0Zjg5NWM3ZTAyIGxlZ2FjeS10cnVuaworMzM4NDUgZjc0NmQ1NjkwYWQ2ZDgzOWRmNWI0YTc3MzYxZWQyYTFmYmE4MDFhOCBsZWdhY3ktdHJ1bmsKKzMzODQ2IGFhNWNiOGUzYjllYTViN2Q0ZDAxZTVmMThkMTNhOWZmYzBkYjBlYTEgcmVsZWFzZTIzLW1haW50CiszMzg0NyBmMzY1NGM1YWRhOTQ0OGNhMTUxNDU5MTNiNWFjYmRhMTFmMjU5YjJjIGxlZ2FjeS10cnVuaworMzM4NDggNDZiY2FiMmI3NGU5MjQ4NDliZTZjMWU2ZDI5ZTMwODhjYzY0NjQ0MyBsZWdhY3ktdHJ1bmsKKzMzODQ5IDQ1MDVhMGI5NzI0Y2YxN2QwNTQ4N2ZiZWM3MTYxYWIxNWNjZGY3YzQgcmVsZWFzZTIzLWJyYW5jaAorMzM4NTAgMDU2NzNiMTZiZGI4YzFlOWE5MjkyMzljM2JmMDVmN2JlNTAyZDc5ZiBsZWdhY3ktdHJ1bmsKKzMzODUxIGY0YjRiZjdlODdkN2UwYmU1ZTRmZTRhZWJmZGEwZmIzODZmNmYyNjggcmVsZWFzZTIzLW1haW50CiszMzg1MiBkOWYwMjdkYzY3NmRkOWNkNTUxYzZhMGFhNDE4ZmU2MzQ4MWY3MzQyIGxlZ2FjeS10cnVuaworMzM4NTMgN2NjMGEzMzk0NmEzMDQxNmY0OGU1ODI5MmNlZTY0Njk1MDRkMmYyZiBsZWdhY3ktdHJ1bmsKKzMzODU0IGYwZGZiYzE0MTQ4MzM2YjhmYzZjMDg3ZDc0YWZkZWRlYjI4ZjAyNTYgcmVsZWFzZTIzLW1haW50CiszMzg1NSA1OTBkOGNjYWJhYzdiZDBjMDUyNWQ1ODU4YTdjYWE2NzNkMTE0M2QyIGxlZ2FjeS10cnVuaworMzM4NTYgNmQ3NGYwMDZmODRhY2U4NGM2OWE5MDE4MzZkZmM1Zjg1NmI2ZTcyMiByZWxlYXNlMjMtbWFpbnQKKzMzODU3IDU5YmFkN2VmZmYwMjE2OTQ3MDJjODRiMzI0YjgzMTk5YzhjN2RjNzUgbGVnYWN5LXRydW5rCiszMzg1OCA1Njg2Y2EyOTdmNTVmNGY5Mjc5Y2M3ZDQ2MDNiZTNmOGFkNmY0YTRiIHJlbGVhc2UyMy1tYWludAorMzM4NTkgOWY1M2U1M2YzODgwMjNhMTA0MzhkMTI5ZWQyYTI2MWQzOWMxZjUzNCBsZWdhY3ktdHJ1bmsKKzMzODYwIDA4MTNiMzM2MTBjYzM1YzM5Yzg1MTNmZjdhYzgxOTEyMmI0YWIzOWEgbGVnYWN5LXRydW5rCiszMzg2MSBlMzczNjMwYmZlYWI3NjQwZWJmMTU4MzUxOTliNTZlZTE0OTNjMTYxIHJlbGVhc2UyMy1tYWludAorMzM4NjIgYTQ5YzFiNzYxMDZjZTRhYzhhZjU0Y2Q2MmUwZWEzZWJkYWQzMjIxYiBsZWdhY3ktdHJ1bmsKKzMzODYzIGUzMjgxYjBkZjZhNDFjNTk2NWE4YjQxNzVmMDQ1N2YxOGVkNGFlYTQgbGVnYWN5LXRydW5rCiszMzg2NCBiNjk4MjA5Yjk4Mjc4ODM1NGQzMGQ0YTAwZjI3YzcyYzllMmQ5MGU2IGxlZ2FjeS10cnVuaworMzM4NjUgOWI4OTE2NjMxZWI2OWVjMzJlNWM5YzQyMDU1MmI2ZWY5YTlkNmRlYSByZWxlYXNlMjMtbWFpbnQKKzMzODY2IDQ0NjA5NzlkZWViZjVlYzY1NTMyNjJkNzJiZWFmNzg2ODE1NzQ2MmIgbGVnYWN5LXRydW5rCiszMzg2NyA5NDFkNDlhNjVmMDZmMTIxZmM2YTMyNjJmNmI2ZWI2Zjc4YjI4YzM2IGxlZ2FjeS10cnVuaworMzM4NjggMzMyOWIwNThkYjIwMTJlYzZkYzk3YjBkNWQ1YTIyMmE4OGQ3OWJlNiBsZWdhY3ktdHJ1bmsKKzMzODY5IDU0NjE3ZWQyZDgzMDg3MDIyOTY2ZmY0MTNjMTdjNGYyZDg2YWNhNmIgcmVsZWFzZTIzLW1haW50CiszMzg3MCA0NDM1MzNkMDg3ODNkYzc4ZDZmNzQ4NzY0NWUxMjAxOTkyZGI5ZjE3IGxlZ2FjeS10cnVuaworMzM4NzEgMjliMWQwNzYzNzkwYWY3MGM2YTQ1NzhkMjFmMmEwZDQ5ZDI1ZTdhZSByZWxlYXNlMjMtbWFpbnQKKzMzODcyIDdjYjRhZDU5MzJlNjI2ZGZlNWQ3OGNhNDRiOGQzNjQ1ODlmNTU5NmEgbGVnYWN5LXRydW5rCiszMzg3MyA0NzA4ZmEwODYxMjFmMjNkMjc0Nzg4YmU4ZTk5YmRlNmU4ZWUyZjBlIHJlbGVhc2UyMy1tYWludAorMzM4NzQgZWYyMTY4MWE5YzdmYjYwOTkyODc4M2VlODk5NTg2Nzc4MWI0MDAzMSByZWxlYXNlMjMtbWFpbnQKKzMzODc1IGRjNDI0OWRkOWUzNTNhODIyNWRlZjEyYWRjNzExMjQwZGRmM2U0MDIgbGVnYWN5LXRydW5rCiszMzg3NiA4ZTJlZjI3ZjY4OGI1Mzk2MDYyZjY5MDIwMDExMzc2ODk2ZWJlNGRlIHJlbGVhc2UyMS1tYWludAorMzM4NzcgMmQyNzRkYTA5Mjc0NzY5ZjBiMTJkM2QxNDIxYWI3MjYxN2RhZDBmNiBsZWdhY3ktdHJ1bmsKKzMzODc4IDk0MmNlZWJlOTY3MWFmODY1NDNjOGI1N2NhOTQ2MDFjZTJhZTNkM2IgcmVsZWFzZTIzLW1haW50CiszMzg3OSAzZGRhNTNjMzEyYTVhYWIyM2NkMDk0ZTYzNWMzMmI1OTE1NGU5ZDkzIGxlZ2FjeS10cnVuaworMzM4ODAgYTMzMmRjYzc5MDJiOTYwYWEwMjZhOWJjMzgyN2MzYzA0YTI1NmI2OCBsZWdhY3ktdHJ1bmsKKzMzODgxIDk0MTQ4ODZmNWM3YWRjNjE5OTQ5OWU3YzhiNTdkN2E4MGNlOGRhMTEgbGVnYWN5LXRydW5rCiszMzg4MiAyYTk0MWZmMGExMzY2NWUwMmZlYTE2ODc0MTQwMGFiMTViZmZjNTRjIGxlZ2FjeS10cnVuaworMzM4ODMgYjU1ZDRhM2Y0MWU4NmUzOTg3NTA0NGI0YTk0YjViMWQ2NWJlNWQ0YiByZWxlYXNlMjMtbWFpbnQKKzMzODg0IDNkYjUwZDMxMzQwZDkzYzE4YjM1NTYyNDRkMzM3MjkyMDFkNTkxNzMgbGVnYWN5LXRydW5rCiszMzg4NSA0ZmYzODU3MmQwMzZlNGZhM2ZhMmY0YzdhYTU5YjU2ODA4YWVkNmMwIGxlZ2FjeS10cnVuaworMzM4ODYgNzFkZmQxZTFmMmVjY2QyMThjYjg1NjIxODFkODk2NmE0MjA0NzlmZiByZWxlYXNlMjMtbWFpbnQKKzMzODg3IDYwYWFlOGExZTIzNzI2YTQ1M2E0ZWY4MWFmODUyMjUzOTQzMzc0NGQgcmVsZWFzZTIzLW1haW50CiszMzg4OCA5NDY2NTI5MWFiMWJkMzMxZGQyNzNkZDBmNDVhMWIzZDhlNGIwODViIGxlZ2FjeS10cnVuaworMzM4ODkgY2NiNDBkYThjNDEyYzYwMTg3MzU4ODYwMjgwN2Y3NTU5N2VkNDk4MSByZWxlYXNlMjMtbWFpbnQKKzMzODkwIDdiYzc3MjUyN2U0NGRiOGM5MDNkYWJjZjgxODM5OGU3MzdiNTI5ZTQgbGVnYWN5LXRydW5rCiszMzg5MSBhZjU1MzViMGUwMDllNjY4MzBiMDBhOWY4ZDM0OGI2MjgzNTc2NWFlIHJlbGVhc2UyMy1tYWludAorMzM4OTIgM2VhNTJiYzc0ZDE3MWYzYmU4Y2U4ZDljMGEzMjk0MWQ1ZWQxYjFlZSBsZWdhY3ktdHJ1bmsKKzMzODkzIGQyNzljNDBiZDdiMzZiY2UzMTA4ZTJhNzdhNjdiMzBmODE2YTE1N2QgbGVnYWN5LXRydW5rCiszMzg5NCBhNTVmZWVhM2Y5MjFkYjVhMTBjMDRjOGFlMTNkN2ViODVmMjAwMzRlIGxlZ2FjeS10cnVuaworMzM4OTUgZmQ4MjRkNTc0YThmZGQxMDA1NDc4YTgxMjRjYzYwZDNmMmUzODM5NSBsZWdhY3ktdHJ1bmsKKzMzODk2IDEzMWM1NGYyMDJmZDg0NDYyNDNiNTdkMmYzNWZhZDM3OGY3YTdiNTcgbGVnYWN5LXRydW5rCiszMzg5NyAwZmE5OWQzMWZiNDgxMjBlNDYxY2FhNGNlNGUxYzU1NThmMDE3NDVmIGxlZ2FjeS10cnVuaworMzM4OTggYzEwYTFjZGNlNjJiNTFiNzlhNGY0ZjkzODRiNmVmMTAxNzkzZGJkMiBsZWdhY3ktdHJ1bmsKKzMzODk5IDlhNWQ2ZWI4MWNmYWFmMzc2YmQwNDUzOWRjNWQ5ZjI0Y2I1NWFmZGMgcmVsZWFzZTIzLW1haW50CiszMzkwMCAzYjkwNzRhZDcyM2U0YmYyYTU2OTdjZjdmMjUzMmExMWMyZjA5NDlhIHJlbGVhc2UyMy1tYWludAorMzM5MDEgMzllOTI4ZDAwYjY0Mzk4Yzc3YjQ4ODc5ODk2ZDBkODUyMGE1NTU2ZCByZWxlYXNlMjItbWFpbnQKKzMzOTAyIGQ3ODc3OTE4N2M3ZGYwNDkzNzM4ZGFiZDNlMDI2MDBjMWIzNTQyNTMgcmVsZWFzZTIzLW1haW50CiszMzkwMiBlZjFmMjk3M2ZhZDgwOTA4MjQzMzEzYmQ1NmZmZTlmNWYwN2FlOGEwIHJlbGVhc2UyMi1tYWludAorMzM5MDMgNWM1NGE3OGYxZDUxNTJiMTVkYzEwYTc0M2Y3ZGU3OWZjZTRhNGIyNyByZWxlYXNlMjItbWFpbnQKKzMzOTA0IGJjNjllMGRmZDJhMDM0NDk3YjU2ZWNkMDM5MDdmY2IwZmY4ZDViNzMgbGVnYWN5LXRydW5rCiszMzkwNSA2Njk1Njg4OTkzMDlmZGI4OGM4ODQ1ZTZkMzFjYjJlYzBkOTk3ZjE1IGxlZ2FjeS10cnVuaworMzM5MDYgMjUxZmEwN2ZjNWQxZjVmMmMwMDBmNzJhMzFlZjQ2M2Y3YWU5MzE3MSByZWxlYXNlMjMtbWFpbnQKKzMzOTA3IDRjMGFmMjJhOGYzZDEyNmRiN2E4ZWQ0N2UyNjU5Zjk4ODUyZWE5N2YgbGVnYWN5LXRydW5rCiszMzkwOCA0MWI2YTUzNjdlZTU2NDZiOGVkNmFiNTY1MDU2NTZjNjQ2N2YxOTY2IGxlZ2FjeS10cnVuaworMzM5MDkgZGMwMWNlMmY4NTU4MmRjMjQ1NDllMWM1OTA4ZmUzMTYyMmZkNmU5YyByZWxlYXNlMjMtbWFpbnQKKzMzOTEwIDc1NmI2NWM3OWY0MDAyNDVjMWRiM2Q5YTJhMTk4NzlkNTg0NmM0MmUgcmVsZWFzZTIzLW1haW50CiszMzkxMSAwYWFjMDc2NjM0NDhlMzAwZDViMDgzODJhZjk2ZTMyODU2YmNhYWIzIGxlZ2FjeS10cnVuaworMzM5MTIgZjhlYmFkZTJlNzI0ZGM2MWZjMmI2ZjczYjc4Nzg3MDgxZjczYzZmOSByZWxlYXNlMjMtbWFpbnQKKzMzOTEzIGQyZTRjOTRlZmJhYWIzMTBkMGM0ODc3ZWRhOTU5NTc1NjhmNzVjYTcgbGVnYWN5LXRydW5rCiszMzkxNCBhYzg2YjA3MTdhZDE5NDYzZGUzNzk0NzhkZjIwNTMzMTc4MTNmNGZlIGxlZ2FjeS10cnVuaworMzM5MTUgMGZlNjBmYTYxN2Q4ZGM3MDQxZDc1ZmE5OTgyZWUxYTdlZmQ0OGJjOCByZWxlYXNlMjMtbWFpbnQKKzMzOTE2IDJkYjhjNjNlNjljZDY0ZjJiOWEyZDBkNzk1MzljOTVhMTZjYWQ0OTcgbGVnYWN5LXRydW5rCiszMzkxNyA2YzFlNDdkNTRhN2EzMDFkODNlM2I3Y2U4OWU1MjkxM2IzYWU1MTQzIGxlZ2FjeS10cnVuaworMzM5MTggYTM4MDYxMGVlYjVhYzc5NWRhMzk5ZTI5YTk2MDRhNjdhYjQwZjY0MiByZWxlYXNlMjMtbWFpbnQKKzMzOTE5IGQxNWQ0NGQ5ZDZmNWNkZDVkOGExYmY4N2ExODE2MzljMDFiYjBjOGIgcmVsZWFzZTIzLW1haW50CiszMzkyMCA1ZTkzYTRmNmQ5YTk5ZmEyM2EyNTkzNDY2YjQ5MGNhMDJiMzMyNWU0IGxlZ2FjeS10cnVuaworMzM5MjEgYjUxOTAzNTAwNmM3MTk4MGMwNTM2NTMxM2ZmOTczOWJmYzU1NzgxNyBhc3QtYnJhbmNoCiszMzkyMiBlNGZmMGRiM2IwODg2ZDAzZGY0N2RiODFiNjViZTZmMzEwNDNjNTNhIGFzdC1icmFuY2gKKzMzOTIzIGFjMGRiMDM0ZGQxNGJkN2YwZDQ1MDQ3MzU2MTQ2M2NiOWMxMmVkYzIgbGVnYWN5LXRydW5rCiszMzkyNCA4NDgxYzliYWY3ODVkNWQyZDcwMjI5NWVmMWYzY2UwN2M5MjJiOGMxIHJlbGVhc2UyMy1tYWludAorMzM5MjUgN2FiMWE0MWYxNmRhYjE1MzAwMzZjMTI2N2E2NGU3ZjEwZmNjMDJlMCBsZWdhY3ktdHJ1bmsKKzMzOTI2IDIxZDNiMDZkZjc5M2NiMWFjNjg1OTFjNmI2NWZiNmRiMDU2YThkYzIgcmVsZWFzZTIzLW1haW50CiszMzkyNyA4Mjg3ZjUyMmJlYTE3ODRjZGQ1MzFhNmYzZjI1YjFmNWI3YjYxODY1IGxlZ2FjeS10cnVuaworMzM5MjggZGY4Y2JkZTVjNTg4Mjk4YjVmY2U5YjA1NzNmMDgwOWVkOTMyZTQ5ZCByZWxlYXNlMjMtbWFpbnQKKzMzOTI5IDA1NmYxNmE3YWJiMDM0OTY5OTU2NzIyMjNiNmFlMzRiYTY3Y2IwYzUgcmVsZWFzZTIyLW1haW50CiszMzkzMCA0MDAwY2M2ZGE5MjUyMjA3YWI4OWZkYjlmODU4NGYyZmM1ZDM1MzA3IHJlbGVhc2UyMy1tYWludAorMzM5MzEgYTVmNjA2ZjljYTA1NzFhMjRlZTNmMDgxZGRlYzkwMzY0YjI1YzlmMSBsZWdhY3ktdHJ1bmsKKzMzOTMyIGMwNmRmZmI2YTk4MjI5MTQxZjM0MjBkZTQxZDMyMGJmNDFkNDU4YWIgbGVnYWN5LXRydW5rCiszMzkzMyBlODE3MzU0MjM5M2ZjNDczNWUxNjFlZmYyN2EwOTU5NGJiN2E0MWFmIHJlbGVhc2UyMy1tYWludAorMzM5MzQgMjQzNDFjYjIxZmQ1Y2IxOGYzZjNlN2NkZTVhM2FmMDNmMDIyZTZlNiBsZWdhY3ktdHJ1bmsKKzMzOTM1IDgwNjE3OTQwMGYzNTRlZGJjMWVjMzMzZjljZWI2OGM4YzQxNDA5ZGUgbGVnYWN5LXRydW5rCiszMzkzNiBjMzBlZDEzZDM1ODIwOWEzYjg0YjIxMDgyMmY3YTcxZmJiNGZhYTM2IGxlZ2FjeS10cnVuaworMzM5MzcgYTBmNTNhMDY5NDcwMzUzYWE1ODI0MWNjZTQ5ZDExMGZiNGQyNjlmYyBsZWdhY3ktdHJ1bmsKKzMzOTM4IDEwOWQ2M2Y3MDM3YzkzYTNmZGQxMWFiYWJiMGQ3OTkyZDQxYzlhZWIgcmVsZWFzZTIzLW1haW50CiszMzkzOSA0OTY5NjhmMzY0OWU4YzEzODQ0OGJmMTMxMTdkYWE5NzUzOTdkYzcxIGxlZ2FjeS10cnVuaworMzM5NDAgZGQ0NTFhNjNmODllNTlhMTYxODczOTBiYjczY2E0ZWQ3ZTVhMjI5YyBsZWdhY3ktdHJ1bmsKKzMzOTQxIGI5NDBhYjlhMmFiZjQ0ZjNlOTk4NDU0Y2UzNzRmYTAyNzJjNTViMjMgcmVsZWFzZTIzLWJyYW5jaAorMzM5NDIgZGZiZDI4MTEyZTA5N2NkYTY1YmIyMjAwNzBjZTI0NmIzMGMxODgyZiBsZWdhY3ktdHJ1bmsKKzMzOTQzIGQ4Yjc2ODc4MDRiMjM3ZDg2NjMwYTE0N2E4YmNjM2FkM2QxN2NlOGYgcmVsZWFzZTIzLWJyYW5jaAorMzM5NDQgYzQ3ZjVhYzhiMDZkZDNkZGVhNmRlNTczMTEwODA3NWJkOTdlZmU2MiBsZWdhY3ktdHJ1bmsKKzMzOTQ1IDNkNGE1NTAzZTQ2ZDkxMmMzODczYTAyOTkxMzY3MTJiYzA1YTM2MWQgbGVnYWN5LXRydW5rCiszMzk0NiA3ZjM0NjUyZDcxNjEyYWVjZWFkODM2NWMyODcyNjhmMmZlYzI5Zjk1IGxlZ2FjeS10cnVuaworMzM5NDcgYzQ1MzU4OTM1ZWQzZmZmOGZhMDllMTdhZWE3MzQzNGIxODJlMWNlYiBsZWdhY3ktdHJ1bmsKKzMzOTQ4IDQyMTQ3MTRhYmFjYmYyMzk0ZjZiZGY3YzFhZjI4ZjdjYzU5MDA1ZTIgcmVsZWFzZTIzLW1haW50CiszMzk0OSBhNTcwYmI5ZjEzM2Y3MDkyODRmY2Y1YWM5ZTNjZDZlNDgxMDA0Zjk4IGxlZ2FjeS10cnVuaworMzM5NTAgZTgzNTc1YmIyOWRhOTA2ODVmMDg4YzFjNjcyY2I3ZmMyYzY2MGZlMSByZWxlYXNlMjMtbWFpbnQKKzMzOTUxIGYxZWEzMTExMjdjZjE1OTc5MGI5ODliZTA1OGU3MDZhNTE3YTg5ZTAgbGVnYWN5LXRydW5rCiszMzk1MiAzZmIzNzQ3Y2UzMDRjMTkxNzNlMDAxNTAyMzY5ZjQ5OTUyZmQ2Y2I1IHJlbGVhc2UyMy1tYWludAorMzM5NTMgN2Y2NjBmYTI4OGFhYmZlOTkzMTRhODA3MjJhZDZhNjdiNzlkNmRmOCByZWxlYXNlMjMtbWFpbnQKKzMzOTU0IDUzYTMyMmM2ZGU1MjJhOTA5MDQ5YzQ0YjAwYjAxMmFjMDUyM2MwNzEgbGVnYWN5LXRydW5rCiszMzk1NSA5ZTNkNTFiZWM1M2EyN2U5NmFkOWZhYmVkZGFjODE4NDc5ZGNmYTVmIGxlZ2FjeS10cnVuaworMzM5NTYgNDk3NjU5NDUwNTM0OGVhNDk2NGJjY2NjNDUzNjU5OTA5M2FiOTEzYyByZWxlYXNlMjMtbWFpbnQKKzMzOTU3IDk3ZjNkNjY1NThmYjhlYTcxNGE3YmMxN2EyMWQ4NzdmYzNiMDMyZGYgcmVsZWFzZTIzLW1haW50CiszMzk1OCA5NTY5NWNjNDVjZGQyZWFkNWRjYzYyMjU4MmIwMmU5ZGUyMGRhMWIzIGxlZ2FjeS10cnVuaworMzM5NTkgOTk1MWI2ZTlhM2VhNTdiZTRiODNmNTMzY2I5ODJlMTZhN2NmYjFmYiBsZWdhY3ktdHJ1bmsKKzMzOTYwIGJmMmFhN2RlNDM3ZDM0NmFlOTg2MDliNzAxNjA0OTM3YWMzZDIyZjAgcmVsZWFzZTIzLW1haW50CiszMzk2MSA4MzBjMGNkOGZkYjIyMDIyMWZkZWEwZDkyZjQyMGM3ZjcwYzcxOTkxIGxlZ2FjeS10cnVuaworMzM5NjIgMGRmYWZhYTEwNDAxYzE1Yzk0YjI2NTYzYTFiNzJkNzI0YjMwYTNiMSByZWxlYXNlMjMtbWFpbnQKKzMzOTYzIDY2NjU0YWM2OTYyMmYxYjE5OGRhYWY0MmZjN2Y2ODE0YjUyM2QwNDAgbGVnYWN5LXRydW5rCiszMzk2NCAzYTUwZjgzNjlhZDU2NGUzNjhjMmU3MTgyYzgzYjEyMjVmNDEyYzc1IHJlbGVhc2UyMy1tYWludAorMzM5NjUgNzE4ZTE0ODg4NzFkNDAzMTUxYzA1NDBkMmJjNzljZTZkMzExZmNhNSBsZWdhY3ktdHJ1bmsKKzMzOTY2IGY5NjI0Zjk0MDYxYTdlNTBlNmUyY2E3YWQ1MzQ4OGYwYmJhMDU4ODMgcmVsZWFzZTIzLW1haW50CiszMzk2NyBkYTFiMTkxYjBhNmEyZDk1MDkzYTRlMjJlMjYyYTM3MDI5MDA5MGYxIGxlZ2FjeS10cnVuaworMzM5NjggYTU1ZWI1NGE1NmQwYmM1N2NkZmUzZjY3OGI3NTU3YTk3ODliNzAyNCByZWxlYXNlMjMtbWFpbnQKKzMzOTY5IDM3YTQ1MDJmMTYxMDc0ZjZkNmY1ZWJlMWY4YjliZjQ1ZDZjNGU3ZDEgbGVnYWN5LXRydW5rCiszMzk3MCA5ZGM1ZTcxNTk2ZjdmYzEzMjAyNmUwYjkxYzlhYThkZjE2ZWYyMzA3IHJlbGVhc2UyMy1tYWludAorMzM5NzEgZWJiODNmMjY2ZmE0ZjJkNDhjNzYyMmRiM2IyN2Y2OWE4MTAzNjUwMiBsZWdhY3ktdHJ1bmsKKzMzOTcyIDI3MDA1MmY2ZjBlMWVlMGYwZTcxZmQ5ZjY0ZDRjMTMxZDEyOTQ0NzIgcmVsZWFzZTIzLW1haW50CiszMzk3MyA3YjU3NzM3N2Q1NDZmZTY3NzNlMjRmOTYyNGJiNzgxMGI2MjUxNTNiIGxlZ2FjeS10cnVuaworMzM5NzQgOTQ4ZmQzNGViMDUwOTZjMDM4MjAxZjNlNDE3YjI2OGRiYTk0MGJlNCByZWxlYXNlMjMtbWFpbnQKKzMzOTc1IDExNGQ2OTNhNWI4OTNlZjM1ODlkYjNhNDA2ZmM1OTEzMjQ5MDUzMDIgcmVsZWFzZTIzLW1haW50CiszMzk3NiA1MTc0NDI3OTQ1OGZiMDA0OWE0NTJlOWY2YjA1MWU1N2MxNGY0ZTJkIGxlZ2FjeS10cnVuaworMzM5NzcgNTc5NTFiYTVlOWIxMDc5OWRkMDQ5MTM4Y2FkOWJjMmIyZTIyMjYxZCBsZWdhY3ktdHJ1bmsKKzMzOTc3IDBjMTNiYTUzNTkxODJmMmE0NjlhYjFlMDEwZmI4Zjg2NmVkYmJiOGIgcmVsZWFzZTIzLW1haW50CiszMzk3OCA0MzZkNTc3MmI4N2ZmZjllODIzZDg4MDEzMThlZjQ4NDkwZWY4OThiIGxlZ2FjeS10cnVuaworMzM5NzkgMGYyNmFmN2MzYjUyYjFlYzk2MWY4YmNjZmZiNWVmZGIzNGRkMmZlYiBsZWdhY3ktdHJ1bmsKKzMzOTc5IDVjMGE3MDRlMWJlNGQ3ZWRkMjNlM2MwNDdjNGFhZDEzYzBjNTcwMWYgcmVsZWFzZTIzLW1haW50CiszMzk4MCBhNDA1MWFkNzY2NmU1ZDVmM2VmYzc5NjNlNzQyZTlmMWE4ZGYwOWY1IGxlZ2FjeS10cnVuaworMzM5ODEgODkzNzVhMTNhMThjOGFlOTdjZDE4NGQ0YTg0YTczOGVhYjNlMzQ4OCByZWxlYXNlMjMtbWFpbnQKKzMzOTgyIDI0NGI1NWM5MGUwZjMwNjZlMmQzMzg5MzJiMjAyYWNlYjlmZWFkMDQgbGVnYWN5LXRydW5rCiszMzk4MyA3ZDIzMjk4MWQzZTM4YzQ2ZjA5M2I3Njg1YmY5MjM1ZWQxZWJjNDQ5IHJlbGVhc2UyMy1tYWludAorMzM5ODQgZmY4MDVhMTQ3YjZhOTE4OTg4ZjM1NDA0ZTYzOTMwODUwOTE2NTcwOCBsZWdhY3ktdHJ1bmsKKzMzOTg1IGIxNzdjOTZlZTM1MDNiYTg5YTJjYmE4YzNhMmZmY2E3MDI2ZGUyM2UgcmVsZWFzZTIzLW1haW50CiszMzk4NiA2NmJhMGUwZWMyMDI2OThlMDMzZmNjZGMxNzE4ZWNjMTRjY2E2MzBhIGxlZ2FjeS10cnVuaworMzM5ODcgYTc0YjQ2M2JmNzZkYTdmMzFjOGZiZmY5NTQ3YzAwZTIxMTk1Yzk0OSBsZWdhY3ktdHJ1bmsKKzMzOTg4IDg0OTg4ZTdiYzdiN2JiYTk1NGMyZWQ3ZmZmNTgwODU4NzMyOGUyOGMgcmVsZWFzZTIzLW1haW50CiszMzk4OSA3MTdjYzJjOWZkNjBlYzc5MDA5ZjllNTdmMmQyMzY3NGQ1OWU3NTExIGxlZ2FjeS10cnVuaworMzM5ODkgNWVkNDBmMmY2NWZiNWFkZWQ4MjY3NDUwNTAxYjRmY2NkZGIwOTk5MSByZWxlYXNlMjMtbWFpbnQKKzMzOTkwIDlhMGFhMWRiZjM1MTQ3MGMxOTJkNDVjYTVkMGUzMDk5OWRkZDAyNjkgbGVnYWN5LXRydW5rCiszMzk5MSA2MzEwMGNjM2YxNWFmNDBhZmE3MTJhMWQ0NjQ3NDUzYjNjZjVlNWNkIHJlbGVhc2UyMy1tYWludAorMzM5OTIgY2MyZDllYTRlYmQ1MGZjNjQ4ZmQ1YWM0ZTVjYTZjZDlhMjdhNWQ0MiByZWxlYXNlMjMtbWFpbnQKKzMzOTkzIGRmMDA5M2E1OTg1YzNjYjE4ZTFiZmI4ZjI1NDRlYjdkNWUzNGZmMDggcmVsZWFzZTIzLW1haW50CiszMzk5NCAyMjUwMmY3OTViNDljODM3NmU2MTcxODg4NTI4NDBiYWZjZTE4N2UzIGxlZ2FjeS10cnVuaworMzM5OTUgNGE1OTEyMmE2NjQ2YTFjYjA2MGMyN2QyZGIyNjBjODIwZTVjMWE1ZCByZWxlYXNlMjMtbWFpbnQKKzMzOTk2IDFkNmQ2ZmI3ZjEwYjc3YmNlYjFjMjVhMmM2ODI3OTk0NzYxODhlOTMgbGVnYWN5LXRydW5rCiszMzk5NyA4MDkxYmQ5MmVlMDE1YmM2MGRjOWZlYjA3MGU0NzRkNTA3ZDYxN2Q0IHJlbGVhc2UyMy1tYWludAorMzM5OTggNGI0YjU4MWIzYjJjODMxNDRkZjcyYzg5MGM3Mzg3ZDE5MzI5MzkwOCBsZWdhY3ktdHJ1bmsKKzMzOTk5IDI2ZDNmNWI4N2FkM2RmYWU3ODdkYzg4ODIwZTUwZTZmM2U2NWViM2UgcmVsZWFzZTIzLWJyYW5jaAorMzQwMDAgMjkwNTY0NmEyYWYzNzU3YjA5MTYzZjZjODAwMTVlMGM4YTcxNjEyYyBsZWdhY3ktdHJ1bmsKKzM0MDAxIDc5YjFhOWVjNTIyMzEwMTJlMmE0ZjY3M2FmNzczZjg2Njk1MDAyZDcgbGVnYWN5LXRydW5rCiszNDAwMiA2NDZmMGYxMWM1MTliNTZhMzEzNzhlNjM2YTVkYWVlMTJkMzUyNmYxIGxlZ2FjeS10cnVuaworMzQwMDMgMTE1ZmFjOWQ5MDQ1NmI5YjU4NTk1ZjlkZGVhNGQyY2Q3OGY5NmFmNyBsZWdhY3ktdHJ1bmsKKzM0MDA0IDUyZjRmMmE4Y2NlNzlkYTM3Y2Q4YThjMDhkZjgxNDMzZDMxMmE5NTQgcmVsZWFzZTIzLW1haW50CiszNDAwNSA1NWE0YTQxNzI3M2VkMTIwNzdjMjQ2NzBhZjI3N2I0MTM0MjMyNmI3IHJlbGVhc2UyMy1tYWludAorMzQwMDYgZGRlNTk0ZjcwZDZjZTRjMWRhOGQ3NzJhNDQ2YmQ4NjUyMzA5OGZiMCBsZWdhY3ktdHJ1bmsKKzM0MDA3IGJmYzk3NGRlZjQ3NDAxYzEzMTk2MTY2ODhjM2VkMWYyYzdkODMzYTMgbGVnYWN5LXRydW5rCiszNDAwOCA3MDBjMGNhNDI5ZWZjZDQ5NGVhMzViYzY1NGYxZmI5MzhmOGFmNDA4IGxlZ2FjeS10cnVuaworMzQwMDkgNmRkOWM3YzVhYTEzZDQzZmI0ZTAzZDcwZGYyYzA1ODVkYmQyYzdmMCByZWxlYXNlMjItbWFpbnQKKzM0MDEwIGRhNDM0YjUzNzY2NDkyODRiZmIxMzExOTdmODM4YjE1Mjk4MjgzMGIgcmVsZWFzZTIyLW1haW50CiszNDAxMSA3N2RhOWY4NzNhNGZlNDE3MTdkYzY4NDc2N2U4MTAzNWQ0ZDAwYTgwIHJlbGVhc2UyMi1tYWludAorMzQwMTIgZjQyOTU1NTllYTgzNmFiNTcxYjNmNGVkOGVjNDM3ODA4NDZmZTBkZCByZWxlYXNlMjMtbWFpbnQKKzM0MDEzIGNiMjgxNTM4MzczY2FkMTYyMTZhMDUzNDA2MjJlMDE2YjVjMzQ5NDggcmVsZWFzZTIzLW1haW50CiszNDAxNCAyNGM2MmY1M2ExYzkyOTE0YWIwNDgwZWI3MGY4ZGY3YThmYWU0YzUxIHJlbGVhc2UyMy1tYWludAorMzQwMTUgNDFmZjJjMTNlYTRhOThhNzllNzg5MTVmYjQ2MjEwNWU4MjljOGE5MiBsZWdhY3ktdHJ1bmsKKzM0MDE2IDE3OTNiNjVhNjIzMGZlNDZhYmIzM2NiMDE3YjkzNjQxNTkyYzY1YzggcmVsZWFzZTIzLW1haW50CiszNDAxNyBjMTZjNTUzODYwYzJkZWZiNDg3MzkxZWFlNWQ1ODY2ZmEzM2FiZWQyIGxlZ2FjeS10cnVuaworMzQwMTggZmVkNjUwMTE4OGRhNDI3ZGE2ZWZmZjI2YzQ5ZWNhZDk4NWZhMjNhNCByZWxlYXNlMjMtbWFpbnQKKzM0MDE5IDc0YmMzNDkzY2UwMzUyYmZiNzhkNmIwMzFhMzE4MGNjZDM4ZDg5NjMgbGVnYWN5LXRydW5rCiszNDAyMCBmMDAzZTQ4ZjU2MmRkNDVhY2NiNGQ2OTRlMThiYmFiN2FlMzJmNGE1IGxlZ2FjeS10cnVuaworMzQwMjEgN2UzYTFkM2M5MGY1MzBhZTAzNDNlMWY5ZTVhNzQ4NDNiZmM2NDlkOCBsZWdhY3ktdHJ1bmsKKzM0MDIyIDY3OTBjZjc4NWY4YzVjM2VhYjEzNGMwZjU4MTQxMTlmMWUyOTc4ZTggcmVsZWFzZTIzLW1haW50CiszNDAyMyAzM2RkMTJiMmViZTZkNjY3MDYyMDAwOWNhYWY2ZGYxOGFkZWZiOWM4IGxlZ2FjeS10cnVuaworMzQwMjQgMTNhOTE0ZTBjNWMxNDRjNjc5NTNlNmI3YTliZmJjZTY4YWExZDZlMSByZWxlYXNlMjMtbWFpbnQKKzM0MDI1IDE5NjExZDEwMWQyMzEyOWExZmIxOTY4YmZlM2NhZDU2MWEzNDhlYWMgbGVnYWN5LXRydW5rCiszNDAyNiBjMjUwN2ZlMmU2OWUxMTg4MDI2ZDc5MDQ3NjA4NGJmMTdhMWEyNGY3IHJlbGVhc2UyMy1tYWludAorMzQwMjcgNzcwZmU4M2JmODlmNjU2ZDlmNmI5OWI5N2NlMWY2YjBmZWY1Nzc2OCBsZWdhY3ktdHJ1bmsKKzM0MDI4IDE2YzU5MmQzMTZjMmE5NGQwY2YxMDIyYmM4YjU1ZTA5MTdhYTI1OTQgcmVsZWFzZTIzLW1haW50CiszNDAyOSA1MjFkMDI2YTgwNDhjOTNlZmQzZjQ0ZDc4NzliYmU1YjljMDM4ZTYwIGxlZ2FjeS10cnVuaworMzQwMzAgMjE0ZGY2MmJjZjEzYThmOWYwMzQzOTczMjBhY2UxODNiMjFjMDk0NCByZWxlYXNlMjMtbWFpbnQKKzM0MDMxIDk2M2M2ODBlZDliMjBiNjJmZGNjYzU4Y2ZjODY2MjQ0OGU1ZGU1ODQgbGVnYWN5LXRydW5rCiszNDAzMiAwYmVhOWQzODkyOWRjMzk0NDgyZjNmMDM4MTljZjhhZmZjN2ZlOGFiIGxlZ2FjeS10cnVuaworMzQwMzMgMDYwNzVmMWJkOTQ1YjY1MzYwNTIwYzVhZDY5NmQxYWVmM2Y5Mzk3YyBsZWdhY3ktdHJ1bmsKKzM0MDM0IGQ1YTZiNjM2N2JiMWMxZjY0OTRmNWRjZGVkZTI1NTVlNzgzODVjMTAgbGVnYWN5LXRydW5rCiszNDAzNSBhNjQwYmZlZWI5YjU2MzUyOTdiZjQ2ODk2M2I2MWI0ZWUwNTIyMDdmIGxlZ2FjeS10cnVuaworMzQwMzYgNzhiYWI4ZmM4ZWQ1Y2ZmMjA2Y2ViYjNlNzEzN2JiMjQ4YjYzN2MyYyBsZWdhY3ktdHJ1bmsKKzM0MDM3IDJhODI5MTRiMDhjNWUwZTI2ZDA3NGUxMmUyNDUwNDE2NmJkODY5YjQgbGVnYWN5LXRydW5rCiszNDAzOCA3ZGNjNDU0YTcwYzNiMDc3ZTUzYjMyNWIxZDdlY2I0NTBiMTQ3MGE0IGxlZ2FjeS10cnVuaworMzQwMzkgMmVjOTJmZWJjZDFhOGY2ZDg0MzgxNDhkMjRlYTEyMjRlYTFlMmFhYSBsZWdhY3ktdHJ1bmsKKzM0MDQwIDE2Y2U3ZTk0N2EzNDQyYjE1MmQyZGIwY2Q2YTBiZjIxNjI0MDMwZGEgbGVnYWN5LXRydW5rCiszNDA0MSA2Yjg0ODAyYzk1MjQyNGNlYjA0ZmEzZTc5ZTBmM2QxNzVjODJmYzFmIGxlZ2FjeS10cnVuaworMzQwNDIgYjUzMzIyNGYxMzczZjczNTc3MDhjYjk1YTc4ZmUzYWJmYTZlN2RmMiByZWxlYXNlMjMtbWFpbnQKKzM0MDQzIDNhZmJjMzM5NzU2YTZiN2JlNjdmOWRkN2Y1NjcxYmE5ZDg5YWU0M2EgbGVnYWN5LXRydW5rCiszNDA0NCAzODdhOWUxODQwNzRhYWY4YjVmMTFkZWUwYzUzNWEzZjI4MTIwMDE4IGxlZ2FjeS10cnVuaworMzQwNDUgYzQyOTQ0ZWE5NzQzZTY3YmZmNGEyMzBiYmQ4Njk2YzBhMmE1ZjM3MSBsZWdhY3ktdHJ1bmsKKzM0MDQ2IDU2MjA4OWE4Njc4ZjI4MDI2MzA5YWYzNDNkYWYzMzAxMGI2YTQ5N2UgbGVnYWN5LXRydW5rCiszNDA0NyAwNWE4NTA5Y2ZiM2NiMTk1YTgwMzJmODcwZGQxZDU1Yjc5YWFmMDc4IHJlbGVhc2UyMy1tYWludAorMzQwNDggNjNkZjc0MzA1ZDdiZjRiOTMwNmIzZjFhNjdiNDIwNWZlNTNjYzc2OSByZWxlYXNlMjMtbWFpbnQKKzM0MDQ5IGExMWUxY2IzMDY0NDU2ODNjZDUyNmEzZjBhZmU2ZmU4MzgyY2EyYTAgbGVnYWN5LXRydW5rCiszNDA1MCA4ZWQwY2U2MmI4MmYxOTVkMTM5OTE4Y2ZhY2U0NTYwNWJlMWU2MDBkIGxlZ2FjeS10cnVuaworMzQwNTEgZDVkYWJkMTUxNzUzYTU0MDAwYjE2ZWFkNDM2ZDJiN2EyNjlkZDI3ZCByZWxlYXNlMjMtbWFpbnQKKzM0MDUyIDIwNWNjOTE4ZjFhY2E4ZWZiNTdlN2JhOWMyYmFlNGI4NjBiMTU3ZjYgcmVsZWFzZTIyLW1haW50CiszNDA1MyBkNTllY2EyZWZhNmEwZDQ0ZWQ3YTdjNDY1OWZkYzQ0NDIxYmNiZDhkIGxlZ2FjeS10cnVuaworMzQwNTQgMDA0NTNhMDUwOGRmZTc2N2I1ZjU1NjliNTZhYzA0OWQwYzQ4NmMxZiBsZWdhY3ktdHJ1bmsKKzM0MDU1IGFhZjZiNmE4NTEwYmVhMGJlNzg3ODRkZGZlMjc5YmI2ZTJjMTdlYWEgbGVnYWN5LXRydW5rCiszNDA1NiBmNmZjNmQwY2YxZTVhZTczYjg2NDU5MWIzOWE0YjQyNDA2ODJiNDQyIGxlZ2FjeS10cnVuaworMzQwNTcgODA0ZDFjZDFiMDZkZWI0NGM0YTQ5YjFhOTQ1OGM1OGRlNTMyYWVkOCByZWxlYXNlMjMtbWFpbnQKKzM0MDU4IGQ2MTUzNjAzNDcyZTNjMmQ1MmMxOGNkMDJhMDk4Y2I4NThkNDg3ZWQgbGVnYWN5LXRydW5rCiszNDA1OSBmODZkODYzNjg3YzYwNjM1MTQyNjY0MDI3YThhM2NlMTdjOGI1NmI0IHJlbGVhc2UyMy1tYWludAorMzQwNjAgMDg5MWQyMmFkZjRmNGI4YzUwOTdjY2RlMDVmNDA4ZmNiY2M0OTU3ZCBsZWdhY3ktdHJ1bmsKKzM0MDYxIDFkZTFkYTNlZTNlODdkZDJiYmUwNTYyMWNmMjRjMDYyOWJlZWE0NTIgcmVsZWFzZTIzLW1haW50CiszNDA2MiA4YjlhOGM0ZGUyOGU2YjViNzQ5ODEzYmJlMjY2MWI1M2YzNTMxOGRjIGxlZ2FjeS10cnVuaworMzQwNjMgMDZlYWVmN2QwMmYyMWUzNDQxZThmMjQwMTIzZDg2OWRkYTkxZWFlNCByZWxlYXNlMjMtbWFpbnQKKzM0MDY0IGU1YmQ1MGM3ZTE5MzM2YjQ0YTMwMzM2ZDQ1Y2M2MzI0OWUxMDNkMDEgbGVnYWN5LXRydW5rCiszNDA2NSA3NTA0ODEyZmRiN2ViMWM5ZTIyOTRiZmUxZGU4YjcxNTg2ZGIwMTM2IGxlZ2FjeS10cnVuaworMzQwNjYgZjE0ZTI1MTM2OWIyZDVjODhjZTdkMWU2M2Q4MjJjMTNmYTY4MzVlOSByZWxlYXNlMjMtbWFpbnQKKzM0MDY3IDg1ZTY0MjU0M2RkYWE2YzI5OTdiNDE0NjFiM2JhMGE1ZjAzODcwZmQgbGVnYWN5LXRydW5rCiszNDA2OCA0NDU0NzM2YzZhODJlYTYzYjRjMTliYjRhMjI1MThkOTUwMWViNjhjIHJlbGVhc2UyMy1tYWludAorMzQwNjkgYmU5NTgyNzM0YjU2YWUxZjFhNjEzNDNlNmJiZTFiNzgzMzBjYjJiOCBsZWdhY3ktdHJ1bmsKKzM0MDcwIDM4ZTg3NTM1MzRiNzk3NDAwMDM2OGE5MGZjNGExMWM1ZTJkNzM2ZjggbGVnYWN5LXRydW5rCiszNDA3MSAyMWIyYTIxNTkwNDZkYmNmZmU1ZTIyY2YwNDZkMjVhMTMxNDAzMmM1IHJlbGVhc2UyMy1tYWludAorMzQwNzIgOGRjOTRiZDliODNhZTA2NDVkY2FmNGQ3MmEzYjdhNTdhNGRjYTNjZSByZWxlYXNlMjMtbWFpbnQKKzM0MDczIDgwYTRiOGY2YWUwZTUyYzQ2MTIwOTlkNWNmMThhYjNlYWVmNTViNjAgbGVnYWN5LXRydW5rCiszNDA3NCA0NmJkYjY2YWRjZGI3NjIwMjlkYmM2NzUxMjliNTE2ZWNhYWUyNzQ2IGxlZ2FjeS10cnVuaworMzQwNzUgMDVlOGI1MDNjZDQxNGUyYjM2YTdmMTQwMTlmM2Q5MWM2ODc2NGZiYyBsZWdhY3ktdHJ1bmsKKzM0MDc2IDRhZThiNjVjYWJhODg4OWVkNjlhMWExZWNkYWQyMjI1MDc2YWEzOTYgcmVsZWFzZTIzLW1haW50CiszNDA3NyBjM2IyY2Q2ZWYyN2Y4OGQ5OWQxYmZlMGExY2E3MWU4NDYwNDk4MWE3IHJlbGVhc2UyMy1tYWludAorMzQwNzggZTRjYzIzMmVkNTgzMGRiMjVlMmJjOWZkMDFlODM1OWNlY2VlMjMwYSBsZWdhY3ktdHJ1bmsKKzM0MDc5IDNiNzkzY2Y3NDhjNTY5MDU3OGJlMjk4ZGM5MDUyN2MyZWVkMTM2NTcgcmVsZWFzZTIzLW1haW50CiszNDA4MCBkYzUxYWJjM2YxNzQ2ZDUxOGI5MDFlNTQ3NGViZWZiZmI4NzEwZjc3IHJlbGVhc2UyMy1tYWludAorMzQwODEgZGIzMWQyNWIxMzdhNDMzNjg1ZDYyZGRiZDVkZjljZDY3MWFhOGFlNCByZWxlYXNlMjMtbWFpbnQKKzM0MDgyIGNmN2ZhZDlkNmZjYzM0YTg4NzVkYmIzN2FhMTllYzM5NWZkZTg1ZDUgbGVnYWN5LXRydW5rCiszNDA4MiBkMDVhZjE1NjJjNjRmMTk4MTZiMjZkOTU4ZGI5ZjRjOGYwZDQyMjA3IHJlbGVhc2UyMy1tYWludAorMzQwODMgNGFhODRhOGIxZmU0OTdkNzI0NTZjYzY0OWZkNjgxMzQ2ZTY0NmFhNiBsZWdhY3ktdHJ1bmsKKzM0MDg0IDNlZGNjZTBlZmM1NGI4YzI1NDZhN2I0YzFjMjBmNTU3MGFlYzVjZTkgcmVsZWFzZTIzLW1haW50CiszNDA4NSA1MTU1YjM4NTAyZDQ4MzFhM2VkNTE2ZjEzMWZkYzgxNWM1NDA1M2RkIGxlZ2FjeS10cnVuaworMzQwODYgMzVmOTI0OTY1MGU2YjVjOWQ3OWI4ZjM5ZDgyYmFmMWU2YzFhNjVjZiByZWxlYXNlMjMtbWFpbnQKKzM0MDg3IDBjMzY4ZWMwY2NjYjQ0ZGU2NWNkN2NjOGNjMjI3MjlkMTZhYTkyNmQgcmVsZWFzZTIzLW1haW50CiszNDA4OCBhY2NjMjUxY2RjNGE5ZWMwYWM2ZjI4MDUyNjFhMTY1M2ZkMDNkNDE5IGxlZ2FjeS10cnVuaworMzQwODkgYTUyYTA3NGU4YWU1ZGIxNTRmOWVjMDBkYTUzOTFjZGIwYmJlN2Q3NCBsZWdhY3ktdHJ1bmsKKzM0MDkwIDE5ODdiODU1Y2QzYTBjM2UyMTU4MmZlNzRkMTZmMTM4ZmJkNDVkM2IgcmVsZWFzZTIzLW1haW50CiszNDA5MSBmZTFjZDM3OTVhN2E5M2FlNmVhZDdkMDI2MmM0ZDE1ZTRhMDFlNDY2IGxlZ2FjeS10cnVuaworMzQwOTIgOTkzZTNjYTM0NjU2MGMxZTFiZTI4MzJjMjk5YjVlYTkzMDFkODhiNCByZWxlYXNlMjMtbWFpbnQKKzM0MDkzIGYxNWExMWNmODUzMTYzY2VlYTFjYjU0ZjIwYWE3NDAyYWZjODk0ZDkgbGVnYWN5LXRydW5rCiszNDA5NCAyODBiMGExZTMxZTM2NDFjNDlmNGY5NzQyYTNmNDExMjgxYWVkNzg1IHJlbGVhc2UyMy1tYWludAorMzQwOTUgMWU4NmYyZjcxMmYyMTkzZjg2MTIwZDZmMDIwOGU2M2NhMDMzZmI5MyBsZWdhY3ktdHJ1bmsKKzM0MDk2IDU4ZmZiNmI5ZjZjNTcyZTUxN2I5NzQ0NGFkOGVjNWY5MjY3Mjg4ZjYgbGVnYWN5LXRydW5rCiszNDA5NyBjOTcyZDllNDMxNjg4ZTQ0NjMxNTZjZmNjNDQ4OGM4OGIwMjg2OTIxIHJlbGVhc2UyMy1tYWludAorMzQwOTggNmE5MTAxNDcxYWQzNzFiODExZTdjNzNhM2NkYTA2NThmYWQ1YjY4NSBsZWdhY3ktdHJ1bmsKKzM0MDk5IGFhNzg3ZTM2MTJiYmM2ZmE1ZjcyOTRiZjBhMjg4NWI2ZmQ0Njc1MjUgcmVsZWFzZTIzLW1haW50CiszNDEwMCAwMDM5OTI4YTBmODQzOWJiM2ViMGQxNDAzN2I2NDliNjE4NTc4MmEyIGxlZ2FjeS10cnVuaworMzQxMDEgZTM4ZWM0Y2I4N2U5YzE2NDI3YmY1M2UzMzg4MmE4MzdlN2VlNWM4ZSByZWxlYXNlMjMtbWFpbnQKKzM0MTAyIGQwMzliMWJiMWVhOTdmNTIxMWQ5NjBmZDI2N2E0YmQ3MDNmNDJhZDUgbGVnYWN5LXRydW5rCiszNDEwMyA2MjE1M2U4MjU2NGJhMzEzZDdjNjkzNDNiZTU3NWFkNDNhNDAxYjQ0IHJlbGVhc2UyMy1tYWludAorMzQxMDQgZTQ0YTM1OWM4OThlMGMxNTAzMDc5MTZhNGI4YjdiOTk0Y2U5MDc4MSBsZWdhY3ktdHJ1bmsKKzM0MTA1IDEwYmE2NTY3ODUyZmQwNjhmZjcwMGZjNWU0MzAwYWFlNzkxMmQyMWYgbGVnYWN5LXRydW5rCiszNDEwNiA5NGYyNTI4MzNlMTMxNGYwZTk2NTI1NGMxMjFkNjVlMTAxZmY1MzYzIHJlbGVhc2UyMy1tYWludAorMzQxMDcgZmQxNjAxODQwN2U3ZTUzNDQ0NzlkODcxOWRkNjYzYmU0ZmRmYjZkOSBsZWdhY3ktdHJ1bmsKKzM0MTA4IDk2NzU2OTQ4ZDFjOTI0OTRiOTAyNjg0NjVjNDEyNDYwN2FiODFhNjYgcmVsZWFzZTIzLW1haW50CiszNDEwOSAxMWMzMjA5NWMzMDU2MWMxMDQxZDMyNTExYWE1M2Y0OWZhOTdhNTUxIGxlZ2FjeS10cnVuaworMzQxMTAgYTQzMGJlNjgzYTdhZDMzYjViNWQyMDk5N2MyYThiY2NkN2MyYTRkMSBsZWdhY3ktdHJ1bmsKKzM0MTExIGE2ODc3ZmZkOTU4MmQ4YWUwMzM0NDc3NWYxNmJlNDMwMzMwZjI3Y2UgbGVnYWN5LXRydW5rCiszNDExMiA1NGFiMTk1NWQyNDJlMzQ5ZDc4MjEzNzYzZGI3YmNjNjY2YjcyYjdmIGxlZ2FjeS10cnVuaworMzQxMTMgZGQ5OGYyOWNmYzk4NjMzMGQyOWJhMjc3Y2YwZmZlNzg2Mzc5M2ZjYSBsZWdhY3ktdHJ1bmsKKzM0MTE0IDc3NzNlYTdiMWM2NzQ5MWQ4NTNlZGE0M2JkMzljMTI3ZGY5NGVhMDQgcmVsZWFzZTIzLW1haW50CiszNDExNSBiODczN2EzMTA1MGNhM2NjNWQwYmMzNzM0YjY0NWMwYWE1NDY2MDk2IGxlZ2FjeS10cnVuaworMzQxMTYgNjJhZTIxOTE0NGM0ZjYyY2U1YWZiZWMwMTFkNmY5ZTUzZWMxNDY1YiBsZWdhY3ktdHJ1bmsKKzM0MTE3IDA0NTE3NGY2YTc5ZGIzM2JiMTA3NDM0YTYxNWYzYTcyZDc2YTU3MWUgbGVnYWN5LXRydW5rCiszNDExOCA0MWJiYmI0ODk3NjRjOGM2ZjdkYjM5ZTIyODE3Y2UxY2YyZmI2NmUwIGxlZ2FjeS10cnVuaworMzQxMTkgMzRiZDVjMTk4Y2FmODcyNDkwNjhkZjI5MjkyZDQ4NDgwZTk3MTU0MCBsZWdhY3ktdHJ1bmsKKzM0MTIwIDY4ZTFmODYwNTZiYzM0OWI3ZWNjM2I4MjU0MmVkODdjYmFkMmZkNTEgbGVnYWN5LXRydW5rCiszNDEyMSA1M2YxYzMyZWU2OWQ3NWMyNmY1NGIzMWVhMWU1OGMzNmNmODM3NzFiIGxlZ2FjeS10cnVuaworMzQxMjIgZTE3YzQ0Yzc5YjAzZTcxOTg3NTEwYzFhNTIxNDdkYWU3ZDIzYmY4OCByZWxlYXNlMjMtbWFpbnQKKzM0MTIzIDM3ZjBlMGIxNDAwMzg1NWI5MGEwYWJiZTdmZmEyMjc3YzFjZjc2ODQgbGVnYWN5LXRydW5rCiszNDEyNCAyMGQ5Nzg4NWU1Yzg5MzRkNDlkMDRjZTNkM2YzOGEyM2FkYzIwYzAyIGxlZ2FjeS10cnVuaworMzQxMjUgMjM5MjFiYzgxMjRiYmM1YzA2NzkyNGUwNmMyMDJhZGMxZTYxYzhmMyByZWxlYXNlMjMtbWFpbnQKKzM0MTI2IGM2OGViNGQ0Yjc4NzllMjA0ODJkMzMxYWNjZDJiZDQ3NDA4MjgzM2UgbGVnYWN5LXRydW5rCiszNDEyNyBmNDRkOGFkZGQzZTg2YTFlZTA3MmRjZDlkYWUxODFkYjM2OTVjODMyIGxlZ2FjeS10cnVuaworMzQxMjggMTNlYzhjNDc5ZmYxMDNiNDliMzcwMjExMzQzMTMxYTg5YjhkMzEwMyBsZWdhY3ktdHJ1bmsKKzM0MTI5IDM5YmU5OWM2NzdkNWUyNzg1MjYxNTEzOWZhMjE0MTlkNzE3Mjk1NjkgcmVsZWFzZTIzLW1haW50CiszNDEzMCA0ZDIwNGZjM2FkMzJmMGEzODRkZDZjMmJjOWZkMTBlNjMxNDQ4MjNiIGxlZ2FjeS10cnVuaworMzQxMzEgNzQzM2U3YzllMmNhNDUzMzVjMWZiNjU2NDIxYjFmOWQ0OTZmOWE0NyBsZWdhY3ktdHJ1bmsKKzM0MTMyIDQ2MjdjMTY4NDlhZWRjOWI1NWJlMDVmZWRiZjcwMWNlMzRmMDNkMmIgYXN0LWJyYW5jaAorMzQxMzMgYTI3NGI5MDM1ZDFlYWUyMzkwYThkNzJmOWI1OWQ0MDg5MTM0N2U5ZiBhc3QtYnJhbmNoCiszNDEzNCAxZWRiNTQ3MzgwOWU2YjhmNGU2MjEwNWRjZmM1ZTY2ZWM1OTFmNDk3IGFzdC1icmFuY2gKKzM0MTM1IDk1YWI1NWQxNDI1NmY2ODAyOTIwNjBhNzU4ZDkyYjA5MzA1M2JlN2UgbGVnYWN5LXRydW5rCiszNDEzNiBkODY0ZjMxNjhjYWNmY2I1ZDBiYTY2YWJmNmM1Nzc1ZmE0ODllNzE1IGxlZ2FjeS10cnVuaworMzQxMzcgMmY1ODIyZDBmOGUxNWMwYmJhNWQ1YzkwM2YwZTcwYzc2MTM3ZDRmOSByZWxlYXNlMjMtYnJhbmNoCiszNDEzOCA3OTkxOWM1NTBkZmVkZGFlNzg1MDkxN2JkYjUxOTM4OGFiMzRjYzk4IHJlbGVhc2UyMy1tYWludAorMzQxMzkgMGExNTBlYThjYmVhMjhmNGNiODBjMzVlN2Y0YjI1M2M4YTAyYWZkMyBsZWdhY3ktdHJ1bmsKKzM0MTQwIGMyYzEwZjFlYjhlMmI3NGJiYzg0Y2E0NzZkMTAwZTE5MzRiN2ZmMjcgbGVnYWN5LXRydW5rCiszNDE0MSBjOWNjMzUyNDkzMjJkNzhmMTEzMzU2YjI3ZDQ0MWY1OGU4ZThkYzk1IGxlZ2FjeS10cnVuaworMzQxNDIgYThmMDRjYmY2NTljYjAyNmNjMmI4MWMzZTRjZDBiNGEyYWM0YWYxMSBsZWdhY3ktdHJ1bmsKKzM0MTQzIGNkMGMzZjkxNmIzNGNjZjI2OWU1NmQyZThjNDZlZDI0MTM3NDhjNjEgbGVnYWN5LXRydW5rCiszNDE0NCBlODE0N2Y4NDFhNGFiMmRhM2U3ZGIxYzZlMDk4YjE2NzFmNmVlMDYyIGxlZ2FjeS10cnVuaworMzQxNDUgYzlmOWViMTNlYWM5MzA1ZWJhMTM0ZDgxMWQ4NDU2MGVkYjY4ZjJmMSByZWxlYXNlMjMtbWFpbnQKKzM0MTQ2IDE3MjU0NzBkMGQ0M2NhYjJjOGQxNzAwZmEwY2Y5ODlmYTE3YTA5YTUgbGVnYWN5LXRydW5rCiszNDE0NyBlZDhiM2MwMjgxNzRiMDUyNmJhYTNiZmRiYTNmNTJjYjcxM2U4ZGEyIHJlbGVhc2UyMy1tYWludAorMzQxNDggNmJmYjgyYmZiYjU2Y2RkZmMzMWEyMjFkMzE4ZjExNGUxMGJjOTM2NCByZWxlYXNlMjMtbWFpbnQKKzM0MTQ5IDQxYzJlMTcyM2NkZGQ3YWMxN2M3ZGRhZDA2ZjBmNDM2ODg4NjJmNTQgbGVnYWN5LXRydW5rCiszNDE1MCBlZjRhNzFmNWFmMjIzOGViYjZhYjQ4Y2MwOWQ5YTVkMmZiMWM4MzA3IHJlbGVhc2UyMy1tYWludAorMzQxNTEgMzBlNDk1ZWZlOTBhMzY1ZDIwNTMyNGFmYjY5YjQ1YTUxNWQyZmI5NSBsZWdhY3ktdHJ1bmsKKzM0MTUyIDc4NGUzOGFiZWQ4MjAzMTZlYjA4NjMxNmY2M2YwZDJmNzAyNTE4ZjYgcmVsZWFzZTIzLW1haW50CiszNDE1MyA3NmU5OThhZWU2NDQ2NTg1ZjE4YTM0ZjRiNzBkODE3ODk1ZGFhMGZjIGxlZ2FjeS10cnVuaworMzQxNTQgNTliMGE0OGE1NjQ0NTA3YjNjNjkzYThiZjc0ZDk2MDI5OTZiNjk1OCByZWxlYXNlMjMtbWFpbnQKKzM0MTU1IGY4OWFiNzk4NTNhNzBjMzllMTlmNTNmM2U5ZjU4ODM5NGUyNzkzYzQgbGVnYWN5LXRydW5rCiszNDE1NiAwYjBhZDdkMWRkZDZhOTg1MzBmNGM4YTRjOGMxZGU0N2YzYzU4NzViIGxlZ2FjeS10cnVuaworMzQxNTcgNzJiZmM3ODZhNGY4OTJkNTEzZjMwNWYwN2YwMTYxOGE0MWM0Y2JjOSByZWxlYXNlMjMtbWFpbnQKKzM0MTU4IGE4YTFiZWY0MDdlYjI2Y2M4YmU0YjMxNGM5ZjVjNWE2Yjc1YjQzOWUgcmVsZWFzZTIzLW1haW50CiszNDE1OSA2NjIyMzNlNjZkMjgyZWNhMDdmNzZiZjE2MmViYTk3MWI2NDMxMDQ4IHJlbGVhc2UyMi1tYWludAorMzQxNjAgN2NiNjc0NWJlNTI1YzBhODRlYzBiMTliMTQ0NDZhMDAzNDI0M2JjMyBsZWdhY3ktdHJ1bmsKKzM0MTYxIDJhNDk3MDljMGQ1NjNlNGJkYzI0NjU1MDgxYTE0MTdlNzYyMjg2NTIgbGVnYWN5LXRydW5rCiszNDE2MiA4MzRiYjlhMTU0MTliMGY2MWQ5MWI3ZjczZTlkZjFiMzNmZTNlNGMwIHJlbGVhc2UyMy1tYWludAorMzQxNjMgYjM5Y2I5MjEyZjVjODhjYzIzZTg0OWEyZTc1YjkxMDAzNGIxNjkzYSBsZWdhY3ktdHJ1bmsKKzM0MTY0IGJhMWUwM2NkMmY0MGZhMTJjMzE5ZWZhYzc0NWQ0OGY4MjljM2RjZWIgcmVsZWFzZTIzLW1haW50CiszNDE2NSBhODVhNzAxMmRkZGE3M2NlZjVkMGZkNmZmMjU1ZmNhMzc3MTUzNTBhIHJlbGVhc2UyMy1tYWludAorMzQxNjYgMGNhZDkwOTRlMjNlOWNiNzEyNzkwZWFlOTI2MmZlNTg3YzUzZTMyMiByZWxlYXNlMjMtbWFpbnQKKzM0MTY3IGJiYTdlMWUwZjFjNzUzYTgyMjAwZGQwM2UwZDRmYjEyZGYyMWY3ZTEgbGVnYWN5LXRydW5rCiszNDE2OCA5MWZmNzI3MDNlZDM1YWFkZjY1ZDRkYWE5ZjQxNzcwYzdjYjAwYWFhIHJlbGVhc2UyMy1tYWludAorMzQxNjkgOTIzM2FkMGVhYTk4NDZhYWI3ZTU4ODY1NWVjMmIwZmU3MDdhYmU0YyBsZWdhY3ktdHJ1bmsKKzM0MTcwIDYxZGJhMGFhOWUzNzRkZjIyOTUwZmFkNDkzMTI3YmVhMTM4OGU4YmUgbGVnYWN5LXRydW5rCiszNDE3MSAxZDYzMTA2ZTdkZmE0ODgzYzFjMGE0ZjgwMWEzNTNiNmYzMTk2Mjc3IHJlbGVhc2UyMy1tYWludAorMzQxNzIgZDVjNDViOGRhYTUyYmMxOGZkMDk1ZDcyZGI3ZWI5NTczYWRhNWI0NyBsZWdhY3ktdHJ1bmsKKzM0MTczIDhkMjFmYjJlMjZiMDY5Mzk3MzQ5YjgzMDkxNDI4MTVmYTk2MmI2MjggcmVsZWFzZTIzLW1haW50CiszNDE3NCA2NWJhYzU5YTM5MjgwNjhlN2Y5Mzg1YjdkZDI5YzljM2QzNmMzOTcwIGxlZ2FjeS10cnVuaworMzQxNzUgY2I3MjM2OTkyMGFjYWMxNmIxNDMxYWQ0MjU5YzMwOTgxMDBmY2NlNCByZWxlYXNlMjMtbWFpbnQKKzM0MTc2IGQ3ZjEzYTQ5ZTVlZjY4YTJiNTQ4YWQzNjA5ZGU4NWQwYmM5MmE3Y2MgbGVnYWN5LXRydW5rCiszNDE3NyA1ZjkyZDY2MDdiOWYwYmEyNDU2OThkNTZkNjI1ZWFiNjE2NjQ4ZmUyIHJlbGVhc2UyMy1tYWludAorMzQxNzggMWE4MTc2OTRlY2JkN2U0OWZjOTE1YTVlYmE5ZGQ1NmMxOWY5YmI0ZCBsZWdhY3ktdHJ1bmsKKzM0MTc5IDUxOGNjYzA2NGNiOWYzMmI2YTYxZjQ5YzYyZDAwZWIyM2M2MmE3MDQgbGVnYWN5LXRydW5rCiszNDE4MCBhMzdiMjM3MTRkM2RkZGI1OTZlMWVmYzE1ZTE5MzU0NGRmYWUzMmU3IHJlbGVhc2UyMy1tYWludAorMzQxODEgNTU4NTdhZWJjMjRmMjNmMmYyZTBlODg1MmQ0NGVkMjA0OWY2ZDczMCBsZWdhY3ktdHJ1bmsKKzM0MTgyIDFlMWU2ODVkNjllZjc4YmRiOTkxNzY3MDk4MWVhN2ZmYTJmZGQ0YmMgbGVnYWN5LXRydW5rCiszNDE4MyA5NGQ4MjkzNjc0NzM3MDNiMThkOWRhYTU0YjAzZDAzZWEwNTMxZmY1IGxlZ2FjeS10cnVuaworMzQxODQgMDg0NDA4ZmVlOTYxNGU1NDgzZWZlZjBlNmY1OTJlNWMwYTAzNzY4MiBsZWdhY3ktdHJ1bmsKKzM0MTg1IDQyNWJmMDdlYTcwYjhjMmQxZTZhMWJhOTFmYzliYjNiMjUxMmUwZjkgbGVnYWN5LXRydW5rCiszNDE4NiA4ZGQwN2Y3ZDA5M2I3YTAwNTJmYTczZGQ2MjUxM2I3MGMxOTM4NTBjIGxlZ2FjeS10cnVuaworMzQxODggMTg1YzVmNmI2MTU3ODQwYjA1NDFhYzAxYjI3ODVlNzZiNWMzOTVlNSBsZWdhY3ktdHJ1bmsKKzM0MTkwIGRiYTZlZjMwNGFhNDQwODgwNmYyYWRhMzA4YjdmZDliMjI0ZDk4MjUgYXN0LWJyYW5jaAorMzQxOTEgNzZkOWQxOGVmM2U0OTVhYjBiMGY2ZTM4MmMyMWQ5OTc0ZDQ0OWM0MCByZWxlYXNlMjMtbWFpbnQKKzM0MTkyIDA3ZTY0MGM0MDE2ZGZlMzhkMjI1YWE0MmJkODY4ZWMwOTFkODYxNWQgcmVsZWFzZTIzLW1haW50CiszNDE5MyBiMjkxOWE0YzU1OGM2ZjQwOGEyM2NiNmEzYTlmNmU1NGIxMDZiYmExIGxlZ2FjeS10cnVuaworMzQxOTQgMmYzZjU2ZjEyODBmY2VjZGFjMDlmYzEzMTVmOGQ5MWQxMDY3Y2I3OCByZWxlYXNlMjMtbWFpbnQKKzM0MTk1IDlkZjliZDQzMGMzNmQyYzgzOGMxNmNhNWEwODE2ZjdiZjZiY2RkNjcgcmVsZWFzZTIzLW1haW50CiszNDE5NiA3N2FjNDU1ODBjNDA4ZDU4NjJmNDZmZmIwZTJhZTZjNzY1ZTQ1YjRkIHJlbGVhc2UyMy1tYWludAorMzQxOTcgNTFlODVlOGJmYTQ3MzJhYzk4MDY2OWIzMTRkYjI2MjdkNjNhODljNyBsZWdhY3ktdHJ1bmsKKzM0MTk4IGM0OGEyY2M5Mzc4MGY0MWE3N2FhZmNlYjdhMGE4MTE2MzQ3MDMwNzkgbGVnYWN5LXRydW5rCiszNDE5OSAxYTc5MmYzNmI2OWUzNmE0YzViZWZhNjFhMjM3ZmJmNWJlODBiN2E1IHJlbGVhc2UyMy1tYWludAorMzQyMDAgMDIyNTdmNmE2ODJhNzgzMTdlZjQ2Zjk1ZmYxM2JkNmNlMTQ1Yzg4OSBsZWdhY3ktdHJ1bmsKKzM0MjAxIDFiYzZlZjFmNmJkYjQ3OTFhOTg0NTFmM2U4YmEyN2E1ZTI5M2JiNzUgcmVsZWFzZTIzLW1haW50CiszNDIwMiBkN2JmMTIzMmE4NmQxNDRkNGJhMTcwYjUwN2I2ZDJiMGY4MTk0ZmVlIHJlbGVhc2UyMy1tYWludAorMzQyMDMgYjBjM2Q5ODZmNjNmNzU4MzUzMTBkNjdkYjkzMTk0YzNhODEzODRkNyBsZWdhY3ktdHJ1bmsKKzM0MjA0IGE3YzRhYTgxZWI4NWMwMTBhN2I4NTlkMzczMzMxMTBhMTZiNTA3YzggcmVsZWFzZTIzLW1haW50CiszNDIwNSA3Njk3OWFmYzc4NWJkNjNkMDA2NjFiZmQ1ZGMxMmViMDNkYjZlOTdkIHJlbGVhc2UyMi1tYWludAorMzQyMDYgYWQyNTNjMDZiYWYxZDRhZjJhMzIxMzk3Y2Q2NDc2Y2YyNDEzYmZkMiByZWxlYXNlMjMtbWFpbnQKKzM0MjA3IDA5NjdjYjkwNTM0Y2M2YTdlZTE4NjNiODgwZTBhMzBjNDNlMDQ3YTEgbGVnYWN5LXRydW5rCiszNDIwOCBlMmI5ZDQzNmY4ZjdhZjljYWJmMTBkYTY5ZWUwNjQzZGU4YmY0ZjA1IHJlbGVhc2UyMy1tYWludAorMzQyMDkgM2YyODk2NGY4ZWNjYzk0MDEzZTg2OGQyMzBjNzFlZTVjZDI4ZTJkYiBsZWdhY3ktdHJ1bmsKKzM0MjEwIDg3MTc3NmQzODIxM2E5MDY3YzZkOWJhZjg5MThlYWRiYzE3ZDM4OWYgbGVnYWN5LXRydW5rCiszNDIxMSAxNzc2NTg3ODVmZWI4ZDI2MzE1YTkxZGNlODk3YzZiOTU4ZTI1MjA3IGxlZ2FjeS10cnVuaworMzQyMTIgODM2MGM3NGQwNTNiYWQ1YmJlMDMzOWZjM2NiOWU0MWM4OGNhNjUzNiByZWxlYXNlMjMtbWFpbnQKKzM0MjEzIDVjNWFkYjU0NDNjY2U4OTgxNGJkZTBlZDczMDM4MGNlZDM1NjUxMzggcmVsZWFzZTIzLW1haW50CiszNDIxNCBkNmY0ZGQ1YTUwMDZiOWYxMzY2NzY1NGQzOTM4NTVmN2FkMTI5ZmJhIHJlbGVhc2UyMy1tYWludAorMzQyMTUgMzM5Yzg4MDRmODA0YThlZTQ1MWViODViYjJjMzMzNzdlODM1YjNkNSBsZWdhY3ktdHJ1bmsKKzM0MjE2IDU4ZjAxY2MwZjMwMGFiMThmMTQ4MWVjNDA2NmNmMzc5YzIzZDY0ZTkgbGVnYWN5LXRydW5rCiszNDIxNyA1OGY5NmEwMGQzOGRjMDAyYWRlODE4OGU0ZjRlZTY0MGFmYmUwZjBjIHJlbGVhc2UyMy1tYWludAorMzQyMTggMjU0YmQzZTg5MWY2ZDk1OTFjOTFlMGY4YmIxOTgzMTA0ZjY1MDJjMiBsZWdhY3ktdHJ1bmsKKzM0MjE5IDBlZDFlYWNlMmE2MGJhZWE3NGRjZDVlMTZiZDM5ZGNjY2U2Yzk5MTIgcmVsZWFzZTIzLW1haW50CiszNDIyMCBmNGEwMWM0MDVhNDRiNjE3MDVhMTNjZjc1OTZlNWU5YmRmMjI5NTcxIHJlbGVhc2UyMy1tYWludAorMzQyMjEgY2U4ZDFmOTUxZTE5MmZlYzhmNDY3ZTM1MDRhYmQ0NjU1NzQ5Y2QzNSBsZWdhY3ktdHJ1bmsKKzM0MjIyIGQ3NTU5MmY2ZTJmN2NmZTBlYmQ4NzkzMDE0MzI0MjE1MTk2NTcxODIgbGVnYWN5LXRydW5rCiszNDIyMyA5NTRiNjA5Yjg0Y2QwOTk2ZmI0ZmQzZmI0ZTgwN2RhNzViZjM3MjkwIHJlbGVhc2UyMy1tYWludAorMzQyMjQgNzc0YTlmMjFlZGI5N2Q0NDhlNmE1NTlhNjM1MjY3MTFhOWRhOTA0MSByZWxlYXNlMjMtbWFpbnQKKzM0MjI1IGU5NzIzMGU1YzFjYTkwZjc3Y2EyNzUyNjhjZWZmNDhhZjkyNzQ5MWEgcmVsZWFzZTIzLW1haW50CiszNDIyNiA5MzFlODg4OTkxYmFiNzQxMTA4YjBmODZmOThhMDE2YTgxOWQ3OGJlIGxlZ2FjeS10cnVuaworMzQyMjcgZjNjZTE5ZDk2MWRkYTZlNTNmZTQ3N2I2MDg4NTA1MDY1M2I4YWEyNyByZWxlYXNlMjMtbWFpbnQKKzM0MjI4IDUzODNkNTYyYTM4ZDgxYmUyZThmYmE0MGU3ZTUzZDk5MTQxNDE5ZDQgbGVnYWN5LXRydW5rCiszNDIyOSA2ZTFmN2RiZWNkODRkNTNiNDlmZDgwNDM3YjAzNTBkY2VkOTZhZDMxIHJlbGVhc2UyMy1tYWludAorMzQyMzAgYzk3MDA4ZWU3MTY2MDc0YjA0OTk4MmQ4OTNkNjJkZDdkYTA5MGE4ZSByZWxlYXNlMjMtbWFpbnQKKzM0MjMxIGIyNzI4Yzg3ZGY5ZmJmMjMzNDc4YTNmNzU2ODk2OTBlNjljYWRjMWYgcmVsZWFzZTIzLW1haW50CiszNDIzMiAyNmNjNTg2NWE4MzY2MzNiZjNmMGZmYzNmN2MzNTk0MTg5ZDY0NWVkIHJlbGVhc2UyMy1tYWludAorMzQyMzMgYTFiOTY1ZTFiYmU5ZDhmNGQ4NmI0ZTlkOGMxN2IzNTg1MzRlY2IxMyByZWxlYXNlMjMtbWFpbnQKKzM0MjM0IDgxNmQ0ODY3ZjIxMDY1ZTFiMzkyYThhOTg2OGQxN2Y0ZmQwMDQ0ODYgcmVsZWFzZTIzLW1haW50CiszNDIzNSA3ZTYwZDgyNzMwZmQ4YWQ0MTYzNzE5YzYyNWRjOWFkZmJmOTYwOGY5IGxlZ2FjeS10cnVuaworMzQyMzYgMDE4MmNlYzUwOGFhYjRmZjllODE5YTJkNzdlMTQwNTA2ZjE0ODI1OCBsZWdhY3ktdHJ1bmsKKzM0MjM3IGRiNjNjYjBmYzdkYTE3OWE0YTMyYTI0YmMyYTRlN2ZhMTAxMGZiNmQgbGVnYWN5LXRydW5rCiszNDIzOCA5YzJlYjQxNTEzMGYzNGQzZmU1ZWQ3NDdmNzUzMmYxZDIyODUyNDcwIHJlbGVhc2UyMy1tYWludAorMzQyMzkgNzM4OWZmNTc3ODczOTBiMzQ3MzIxMWQ3ZmQ1NjkwYTE4YmU0MjAzZCByZWxlYXNlMjMtbWFpbnQKKzM0MjQwIGI5MmIzN2IwMWZmYjE2MDgzMzRlZDlhZTI2YzMyMDA1Y2M1NzA4ZDIgcmVsZWFzZTIzLW1haW50CiszNDI0MSBlNWJhY2I5NTk3ZjdiNDRhYTdkYzBkMmQ0MjBhOTU4ZGI2NzRjYzI1IGxlZ2FjeS10cnVuaworMzQyNDIgZmJhZDNlZmE0MGJiZGNmNmQ0Yjk2YTM5ZTA1MmQ2MTZjYTRhYjA3MiBsZWdhY3ktdHJ1bmsKKzM0MjQzIDYyYzZhZmUzN2QxMjNhYTNhODRhMDE3YzkwYmY3Nzc5ZDIxNTNmY2UgbGVnYWN5LXRydW5rCiszNDI0NCA5MjllNTQ4MTc0YzVmYWU5M2JjOTBmNTBiNjIxYTBmYWJhZGUxOTdiIHJlbGVhc2UyMy1tYWludAorMzQyNDUgZGJlODM5MWVkMDZmMjM5YjQzOWQ1Y2UxMmIyYmJiOTcwNDdhODA3OCByZWxlYXNlMjMtbWFpbnQKKzM0MjQ1IGZhNjVmNjUyN2ZlMTM0YWE5N2UwM2UxYjJhZjM2NWQ0NDNiNjdkYzcgcmVsZWFzZTIzLW1haW50CiszNDI0NyBkYTliNzQwN2U1NmMyYWFlOWQyNDY2YzBjNGE2NWQwMGJhOWU0YWU4IGxlZ2FjeS10cnVuaworMzQyNDggYTE1YjFjM2MyMzZhNGIyNGM5NjkyODUwZTBhNDUzZDU1MzU4ZTYxMSBsZWdhY3ktdHJ1bmsKKzM0MjQ5IDcxNzAyNGRiYmJhYzdkODdjZGM0ODIzYzYwZDk5Y2E4YTYxNzc0MTQgbGVnYWN5LXRydW5rCiszNDI1MCAyYTE2NWRkZjIyMmRjNDI5Yjc1OGUyNzcxMjU2MDc0ODI2OGRlOTY3IGxlZ2FjeS10cnVuaworMzQyNTEgNTI5MGE0OTM2MTcwZGM4OGZjMzhmOGY3MzYyYTJhNGM1ODNlMDIwMSBsZWdhY3ktdHJ1bmsKKzM0MjUyIGJiODI1MTFkMTkwNmEyNzk4YjIwNThkNTkyZjZiNmU4OGEwMTUxZWQgbGVnYWN5LXRydW5rCiszNDI1MyA2OTNkMTdkZmI4ZmQ0OGQ1MjI2NGFiZDk4MDU2NzQ4N2RiODk2NWE5IGxlZ2FjeS10cnVuaworMzQyNTQgNTYzOTA4OTFkOTg4Yzg3NTllYTEwYzkwNGQzMTQ1NzFlMTgyMGJkOCBsZWdhY3ktdHJ1bmsKKzM0MjU1IDljZDRmNGFlN2E0YzJiOGNkY2UzYWE2NGE3YzE0NzcwZjlmNjZjNmUgbGVnYWN5LXRydW5rCiszNDI1NiA1ZWM0MjMzZWRjZWRjNDcyNTVhNGQxMWM3ZjBkODY2MjJlZmJiMjA1IGxlZ2FjeS10cnVuaworMzQyNTcgNzAzNzgyZDkwMTYxM2M2MDhhYTY5NTIzYzJiZjVlNTcwOWIyYzgzYiBsZWdhY3ktdHJ1bmsKKzM0MjU4IDVkMmJhNDM3ZTFiZDNiMzRhZDU3NWNhNzNlODlmZGJlM2MxZjkwNmEgcmVsZWFzZTIzLW1haW50CiszNDI1OSBlMmY1MGE3Y2M0OTRmOTA3NDkyODFmMzNiMzhjZWJiZGQ2ZWYzNTgzIGxlZ2FjeS10cnVuaworMzQyNjAgMmNlOWY4OWM0YmJjOWI1N2I0Zjk3ZDc2NzJhYWY5MTRjOTkxOGMwMSByZWxlYXNlMjItbWFpbnQKKzM0MjYxIGRkZTI3NmE4OGM4OGEwZDRiYTI1NjkzMTQ3OTdkY2VhYjRjODZjMGIgbGVnYWN5LXRydW5rCiszNDI2MiAzNjFiNTBhMGQyN2ZhZDdiNGNmZWNmZmI4NmYyMWVlNTY5YzY2OWY5IHJlbGVhc2UyMy1tYWludAorMzQyNjMgMzMyYmZmMjc1YjIxOGM0ZThkMWQ3ODNhZDIyZjM3M2E0MTNlOGQ4YSByZWxlYXNlMjMtbWFpbnQKKzM0MjY0IGFkMThmNWI4ZDZmNGM2MWIyYWE3Nzg2YzU0NzVmMjE0ODVhNDNlZmEgcmVsZWFzZTIzLW1haW50CiszNDI2NSA4YzlmNDhiYTUwZmExNjUxMjg2ZDg2ZDcxNzA1YTM2OTM5MmEzZGI0IHJlbGVhc2UyMy1tYWludAorMzQyNjYgMDQ1NzA0OWYyNWUwYTBhMTc3YzNlNTE2MDA0M2Y4YzU3N2JiNDE0OCBsZWdhY3ktdHJ1bmsKKzM0MjY3IGI3YTIxMzVmYzE1NmFhNjFhNzEwMmU2MDYxOWNhOTQ1Y2E3Y2RlMmIgbGVnYWN5LXRydW5rCiszNDI2OCAwMzJiOTI1ODg4NWI3MTgyOTNlNGM3ZWIzOWM0MDdiMzRkZWRiMGMyIHJlbGVhc2UyMy1tYWludAorMzQyNjkgYTU2NzFhZWNmMzkwMTNjNmM2OTA1MDRjNzQ4NTZhOTZhNjJhMDdlOCBsZWdhY3ktdHJ1bmsKKzM0MjcwIGE1NjZjNDliNzBmYWY5ZjY3NGI0N2YyNGYxM2Q0ZTQ5OGYwMTg3NmEgcmVsZWFzZTIzLW1haW50CiszNDI3MSA4NTI5ZWFjNTA2NWQyMTY5N2ZlN2Y3NWEyYjE5MTBiMzRhZmE3MTc4IGxlZ2FjeS10cnVuaworMzQyNzIgZDk2ZTdmODJkMzk5OTk5NGJhOGU1NmE0NDA4NTQ1NjEwMDQ0NjE5MCByZWxlYXNlMjMtbWFpbnQKKzM0MjczIGUxYmFhMjQ5YjNmMjNkOTIyNDllNWJjYjQwZGZlZGYwNDMzOGNkZTUgcmVsZWFzZTIzLW1haW50CiszNDI3NCA2ZjMzNDNkZTY1YjIyYzczMTZhNzZjNjY2ODc2YzBmYzhmZjAzOWIxIHJlbGVhc2UyMy1tYWludAorMzQyNzUgMTJkYTM0ZWY4ODU0ZmIxMzRkZjFmODg3NjdhZjM3YmJmODk2MTUyOCBsZWdhY3ktdHJ1bmsKKzM0Mjc2IDdmNDhlODk0MzllMGJlZGMzM2NhNmE5MTc1MmQ1MzY0Mjg2Y2NiNGUgbGVnYWN5LXRydW5rCiszNDI3NyBkZDQ0ODU5NDNmMjNmNDg1YWE4MDcwZjg5Y2E3ZmQ5NzA5YTM4ZmI2IHJlbGVhc2UyMy1tYWludAorMzQyNzggOTRiNGZjZTdhOTk4YjIzODJiZDkyNmExYzNiZWE3ZWU1MmZjZjFjZCByZWxlYXNlMjMtbWFpbnQKKzM0Mjc5IDZjMDQwMmRhZmIxOGNjNThhYjdlOTliZmIxODUyNDg3NzYzMWRjYWQgcmVsZWFzZTIzLW1haW50CiszNDI4MCA2M2FlMWI5MWE4Njg1NWFkZGM0YWVmNDU5MjI4NDBjMjQ5MDdjYTkxIGxlZ2FjeS10cnVuaworMzQyODEgMDM1Yzk3ODNhNGRkYmFmYTE3NGU2MDdkMjU0Yjc2OGY3NjBhYzk0YSByZWxlYXNlMjMtbWFpbnQKKzM0MjgyIDg1NDA3MTJkNmUyZDMxNzVjODFhOTExZDA3ZTY2MmI5YWFmOWYyMjEgbGVnYWN5LXRydW5rCiszNDI4MyBlMThjMTBjYTc0MDgyODY4ZGFlZjYyZWFiMzJhYzhiNWNjMzEzMWRkIHJlbGVhc2UyMy1tYWludAorMzQyODQgNTliODUxYjZhZDMzYTU3ZjUxMDU2YzczMTZiNzBmNzMyZTBkMjk2ZSBsZWdhY3ktdHJ1bmsKKzM0Mjg1IGE1M2VhYmUwMjcyOTg0N2NhZTQ4Yjg0NWNmZjhlODAzZTJlNzhhYTUgcmVsZWFzZTIzLW1haW50CiszNDI4NiA3YmM1MWJlNzVmZWJmZDcyMjdlODJhOTA3NjM0NDZiMmYxODhhYTZhIGxlZ2FjeS10cnVuaworMzQyODcgM2QxYWUxYzg2ZmQzOTM2NzE3NTRlMzI4ZTBjYTczMDkzYzNiNDc0OSByZWxlYXNlMjMtbWFpbnQKKzM0Mjg4IGU2Y2VhNzdhYmVlMzZmZjFlZjE5NzE0NDhjNGUxNjE5ZWUyZjhhMTQgbGVnYWN5LXRydW5rCiszNDI4OSAwNjE2NGM2ZGM1MDlmMTRjM2RhOWM0MDE1ZWFlZjQwNjc2Zjg2MzE3IGxlZ2FjeS10cnVuaworMzQyOTAgYmQ0YzRiNmUwOWExNzI0NDc2YjFiMTliZWQxZWNjZTU0YTI0MmE1MCBsZWdhY3ktdHJ1bmsKKzM0MjkxIDBjOWFhN2U1NTQxNTdjNThjZDgxZjZjZGQyNGQxZTA1OWQyMmU5MDQgcmVsZWFzZTIzLW1haW50CiszNDI5MiBmYzdlZjRmZGUyN2ExZWRmZGZjMDdkNTQ1NjZkZjUxNzVkNGU1OTg3IHJlbGVhc2UyMy1tYWludAorMzQyOTMgYjk1Nzk3NmNkOGU3ZGI0NjA1ZjVkYzAyZjRmNWQzMDI4MjdiZGM1OCByZWxlYXNlMjMtbWFpbnQKKzM0Mjk0IDU4Yjk4Zjk4OGEwODE5YTBkMzE1NWJiYTdkODhkZjg0Y2I0Mjk2YTUgcmVsZWFzZTIzLW1haW50CiszNDI5NSAzZWY4N2EwYmJiYWQwNTI2MjI0MDIyYWM1ZGZhNTI4NzQwOWNkMjU2IGxlZ2FjeS10cnVuaworMzQyOTYgYWIzZTc3MGMzYTk5YmZiNzcxNzIxMDI3NzIyYzNlODRjOGVmZmExMSBsZWdhY3ktdHJ1bmsKKzM0Mjk3IDk4YTZiNjAxNTIyOTk2MzJlODQ4MWUzYjkzY2Y3YWI2ZDJlOGI1MTggbGVnYWN5LXRydW5rCiszNDI5OCBkMzRiNmY5MmRkMzI1ZDZiZGM2ZWI4ZWU3NjEwZmJkYzIzOTZkYTI4IGxlZ2FjeS10cnVuaworMzQyOTkgZGFmOGM5MzI3ODZkMjk4NGY1ZTkyOTc1MjQ0OWJkNDFlYmEwODZmZCBsZWdhY3ktdHJ1bmsKKzM0MzAwIDM0MTc1ZTk0MDgxY2E5NmFlZjhjMjJkNWNlYThmNDQ2YjZlOWM1N2QgbGVnYWN5LXRydW5rCiszNDMwMSBjOTUxZjljMzA2ZjMyNGY3N2M4NDQxMWYxYzYzNTFiM2FlNzc2MjNkIHJlbGVhc2UyMy1tYWludAorMzQzMDIgY2RkYjdjOGRiMzY3OTE1MTNlOTk3YmIyN2UzZWE4OTZiNWMwY2U5NCBsZWdhY3ktdHJ1bmsKKzM0MzAzIDY3Y2QzZTdkMGVhY2Q4OWM4NTFkMjlhNjRiYjJiYWJlMmQ3NThlY2IgbGVnYWN5LXRydW5rCiszNDMwNCBiNmMwZjkwOGJlYjgwOWYxYzdkNWRhMGUyMjA0N2JhODc1ZmZmNmFjIGxlZ2FjeS10cnVuaworMzQzMDUgNzQxZjc5ZjEwMTJhMGViNDMzNDk1ZDJiNmE0Mjk0ZGMxZDkwZjFlMSByZWxlYXNlMjMtbWFpbnQKKzM0MzA2IDIwNzEyNGY2YThkN2IyZDRjMTUzNTI2ZTVhNTU3OTI4OTY4YTdhMzcgcmVsZWFzZTIzLW1haW50CiszNDMwNyBmZDU0MDIyMGZmYzRmMDgwMWVmNjliZDQ0MjhmODZlZjFkZDIyYmY3IHJlbGVhc2UyMy1tYWludAorMzQzMDggM2UxYmY3NTEwNjQxMTBkZTMxOGFhYWU1NWJmMTUyOGFjODYxOTY4ZSByZWxlYXNlMjMtbWFpbnQKKzM0MzA5IGM4NzZhYzRkMDMzNzE5NWY4Y2FjN2QzN2U0ZjRiODdhZWQyNjA1ZDYgbGVnYWN5LXRydW5rCiszNDMxMCA2M2M2NDA4OGZmNDk4MDA1NjU3MjE0ZTFjNDYyNmE1YjM0YTIzZTc2IGxlZ2FjeS10cnVuaworMzQzMTEgMDAyOGVmNDVhNTBlYTU1YWNhN2NiZDNlYTc3Yjg5MDhkYjhjZTdjMyByZWxlYXNlMjMtbWFpbnQKKzM0MzEyIDZkNzUzODMyNzQzNDJmMDAzNWYwZTNmODgzNDQ5NDUwMmE0NWJhODggcmVsZWFzZTIzLW1haW50CiszNDMxMiA3ZDczNjJhNzEyNTNiZmY0ZmMxYjBjODI1YzE0NTY5Nzc4ZGI4YzM2IHJlbGVhc2UyMy1tYWludAorMzQzMTQgMWI5YzNhOGM0OWRiNjhiZmVjOGFhNjU2NjFjMDU0NzFiMDM2YzM3YyByZWxlYXNlMjMtbWFpbnQKKzM0MzE1IDBjNmZlNThhZjdkMTI0Nzk3MjM4NjMxMTFjZWFiMWJiZWNlNTE2ZDAgbGVnYWN5LXRydW5rCiszNDMxNiA2Zjk3ODJjYzI3NTBkMjg2ZWU5YzY2ZjBhMDQ4YmE4YzA5NWM1YmJiIHJlbGVhc2UyMy1tYWludAorMzQzMTcgNmNmZDk3ZDdmZTk4ZDc4MjYyMzM1YWM2MjE2MjhjMTQxMWJmYmIwYyByZWxlYXNlMjMtbWFpbnQKKzM0MzE4IGZiZjZlZTU3NjlkNDJhMGRmODNlOGE5NDQ2MzhkYmYyOThiMmQ2MTMgbGVnYWN5LXRydW5rCiszNDMxOSBkM2ZiNzViYzYzNTZlOWNkNTUxMGEzZmMzZmJkZmRmMDcyZGJkZmM1IGxlZ2FjeS10cnVuaworMzQzMjAgZGU4NTUyZjBhY2M1NzY0M2RkNjFjMjg5MWRjNDMyY2QxNTA3NjAyMCBsZWdhY3ktdHJ1bmsKKzM0MzIxIGJiZTYzYTg3OTY5ZmRiZjY2MTdmNTcxZjVhM2IzYTY2ODZkZGUyNjcgcmVsZWFzZTIzLW1haW50CiszNDMyMiBjOTgzMDIyMjUyOTIwZDM0OTMwYzBmOWQ5ZTRkODdmZDQ5YjQ5NGQ0IHJlbGVhc2UyMy1tYWludAorMzQzMjMgODI3MDBhN2U5ZmE0YjQwZGUyMDg1Y2EyNzU2NGQyMTFmZGZmOTU1ZSByZWxlYXNlMjMtbWFpbnQKKzM0MzI0IGE2NzNkODVmNWFkMGE1NWE1ZDkwODUzYzliZDQ1ZmVlZTY0NWRiOWEgbGVnYWN5LXRydW5rCiszNDMyNSA2NmZkODI3ZmUxZDg0YmE2ODM5YmQ0NDE3NDk1ZmEwOWYwYWRiYWU3IHJlbGVhc2UyMy1tYWludAorMzQzMjYgOWU2MTY0MTk4YzQ1NzIzYjM1NzdhNmIwMzFkYjlhNmJmODFlMWM2MiBsZWdhY3ktdHJ1bmsKKzM0MzI3IGM3M2YxNjIyNWE3MWFkZjAxMGMyMjYxNjMxN2RiOGI5ODJkMzBkNDcgbGVnYWN5LXRydW5rCiszNDMyOCA3YmQ2YzZiNTNmODcxNzBhZWFjMDNiZDdiM2RmNmRlMDQwZjg2ZWE2IGxlZ2FjeS10cnVuaworMzQzMjkgYjFjNTY5NmFkNDc1ODU4NDRhMmE4NWY5YzM0NmQwYjA5NjVkYTVkYiByZWxlYXNlMjMtbWFpbnQKKzM0MzMwIDI3OTU5YTAyZDM5ZGU5YzFhMmU4Y2U4ZmU3ZWU1YTZlZDQ4ZWZhZmUgcmVsZWFzZTIzLW1haW50CiszNDMzMSAxMDc5YmU1ODdiYWEwNzk2MmMzNDEzZTM5ZDg4OTAwNDhkNjE2NmM4IHJlbGVhc2UyMy1tYWludAorMzQzMzIgZDQ3Y2M2ZjcxZjMyYTMyYzE2N2FjOTYyNmE0ZWI3OTU2MGU4NTNiOCBsZWdhY3ktdHJ1bmsKKzM0MzMzIGI3ZDAxZWZmZTg5OTUwYTgzNDJmNmZmYTdiMzk2YzkyZjcxZTZiZGMgbGVnYWN5LXRydW5rCiszNDMzNCA4NDczMWVlYTZkYjkwZmUyOWNmOGZkYjNmYzk5YzljYWI5MTQzOTNlIHJlbGVhc2UyMy1tYWludAorMzQzMzUgZjI5ZjEwOGFiNDllZWI1ZGEyZjM1MmRhNDZkMzk2YmJkMjc0ODI4MCByZWxlYXNlMjMtbWFpbnQKKzM0MzM2IDVmZjI0ZDVkOWU5MjJiMDJlYjg4MTExNWI5MjE5N2ExMmY5NjBjY2QgbGVnYWN5LXRydW5rCiszNDMzNyBlNzNmM2EwMzI3NjM2YWQ4ZDY2YzgyMzVlOWU0M2JlNjdlZjBiYzcxIHJlbGVhc2UyMy1tYWludAorMzQzMzggNTczYTQwYmVjMDcwNDJhNjYxNTYzZmMyZmFhM2UxOWM0YTA0OGEyNCBsZWdhY3ktdHJ1bmsKKzM0MzM5IGY0ZGVlMDE1YmY4NGMyYzZjMzIwNzU4YmU0M2YzZDRhMWYxZmU0YWUgcmVsZWFzZTIzLW1haW50CiszNDMzOSBiZTI1MzNmYjEwYTU4N2M4ZGE4OWIxOGM1ZjM4MWY0NzhkNzIwNTkzIHJlbGVhc2UyMy1tYWludAorMzQzNDEgZTVlNjA4OTJjM2UzNTdlNWU3NDNjYjY0ZWM3MGMzNDU5NjI1ZDdjNCBsZWdhY3ktdHJ1bmsKKzM0MzQyIDE4ZTIzOWYyMzAyOWQ4MGU4NzMxNDlhMTkxM2ViNDk3ZWIzMzdlZjYgbGVnYWN5LXRydW5rCiszNDM0MyBjNGUzYTZjYWNmY2FiZmFlYmFjZDhlZmE3M2VlYjhmOWU5N2ZmYWZkIHJlbGVhc2UyMy1tYWludAorMzQzNDQgMmVmOGQ2MmRjYzA5MTA2MTBkY2ZmYTk0MjczODMwMTc5ZjlkMTM1OCByZWxlYXNlMjMtbWFpbnQKKzM0MzQ1IDkyMDA3MTJkMzFlNzkwZWMxOWM5NjRjOTYxYTg2MWZlMzA1ZTY3MGEgbGVnYWN5LXRydW5rCiszNDM0NiA4MTdiNmUwZjQ4ZDFiYTg3NDMzMzkzYzM4NWU2NDMzYjk5MTRjNThlIGxlZ2FjeS10cnVuaworMzQzNDcgZjlkZmRjYjg5N2JiNjY0YTQxYThmMzc0N2E1ZmJkYTRkMzk0ZTdlNCBsZWdhY3ktdHJ1bmsKKzM0MzQ4IGMxYTY3MmVlMTUzMDM1MmVhMTYwMDU5YTMzNTgxMjllYWZjMThjNjAgbGVnYWN5LXRydW5rCiszNDM0OSA3ZmQ1NTNmYjQzMTUwMzdjNmExMWFmOTA5YmM0ZTc3ZjNiMjE4NWE3IGxlZ2FjeS10cnVuaworMzQzNTAgMDQ3MWM2N2Y2MWJkNzk3NjUxMTU4YmFmZTI1MjRmYThjYzgwM2VjMCByZWxlYXNlMjMtbWFpbnQKKzM0MzUxIDBkNDAxNzg0NjIxYjRmNDk4NTIzNTA4YmI1Nzg3NGQ3ZTkzZDdmNGIgbGVnYWN5LXRydW5rCiszNDM1MiBhMzAxNWJiYTM5OTliZGMwM2YzMTdmM2YxMjNmNTUwY2VhNmU2OTBhIHJlbGVhc2UyMy1tYWludAorMzQzNTMgMzllNjM1ZGEyMzI2YTU3ZWU4MGQ0YmZhOTFmYTM4MjhjYzlhODY1NiBsZWdhY3ktdHJ1bmsKKzM0MzU0IDVlYTBmZDI2YmQzNjQ2MmRkNjViYTU0N2Y4NzkxOGVmODRkMjViZjMgbGVnYWN5LXRydW5rCiszNDM1NSAxNTQzYTg0MGZjN2YzYTBhY2M4YTliZWZiNmE4NjFmNzU3NGNiNjQwIGxlZ2FjeS10cnVuaworMzQzNTYgNzE3NTdjZWEyNTdmMzY5ZjBkMTJhMDNmMzQ0Yjc4ZWQ1OWY4MWY5MSByZWxlYXNlMjMtbWFpbnQKKzM0MzU3IDA0NDc5OGQ4YmJmYzdiNDg0NWNhMDMwY2EwNThlNzNiMDM3ZTcwMTEgcmVsZWFzZTIzLW1haW50CiszNDM1OCA4NjMwZGQ4YjVjYjQ2NzMxZWRhN2M3ZDNlYWE1ZmRlMzQ4YjVmYzgxIHJlbGVhc2UyMy1tYWludAorMzQzNTkgMjA1YTI5M2YzZGUwODAyZTcwZGNkMmZkNGZmYWMyNjRkZDRjN2Q3YiBsZWdhY3ktdHJ1bmsKKzM0MzYwIGQwYjhjODNjMmE2YjY5ZDIwNGYzM2QyNTYyOTU1OTdjZmJkYTRhOWYgcmVsZWFzZTIzLW1haW50CiszNDM2MSBhNmZiNjgyMjgxNGFhYWY2MWM2ODA2YTgyMmU1ZjY0NmVhNjZhZjFkIGxlZ2FjeS10cnVuaworMzQzNjIgMWVhZGU3N2VhOWVhNzlmYWMxY2Y0NWUwZGMxMjRiY2I2Yzc2Mzk0ZSByZWxlYXNlMjMtbWFpbnQKKzM0MzYzIGQ3OWJiMjlmZjk2Y2MwOTQ3NjM5YWExYmQ2MDA2ZDk0Y2RlOTJkYjkgbGVnYWN5LXRydW5rCiszNDM2NCA4ODQxZDM0YTJjMzdlYjk4OTI5ZDMzZDU4NmVkNGFkYWNiODU5ZWM3IGxlZ2FjeS10cnVuaworMzQzNjUgY2EwMzAzMjA5NjNmNWZkNTAxMjc3NGFiOGZmZjExN2FlYjBkYzQxYyBsZWdhY3ktdHJ1bmsKKzM0MzY2IDZmZGVlM2Y5ZWNlM2FiN2NmOTZiYWI2NjRmNWRkMzZmY2MyN2NmYjQgcmVsZWFzZTIzLW1haW50CiszNDM2NyBhZDYzMDZkMzVjZTNhMTk1ZDY5ZjYxODE4NTBhNzI3N2IzYzcxNTI2IHJlbGVhc2UyMy1tYWludAorMzQzNjggM2I0N2Q2MDU3MTUxN2VjMjA3YWM2NWIxNzY3MzNkMjc5YTQ2MjI3ZiBsZWdhY3ktdHJ1bmsKKzM0MzY5IDA1NWE4MDg4MWU5NmQ5MzZmMTQ0NTMwNGIyMzljZWVjOGNkMTBiZjggbGVnYWN5LXRydW5rCiszNDM3MCAwZTBiYTkyOTU1MGMwM2M3YTFjZjE0ODlkMDMwMWViMjUwNTMzYTA5IHJlbGVhc2UyMy1tYWludAorMzQzNzEgODE0MWVlYWQxOTA3M2Y0YWE5MTQxOTcwYWI3YmNiYmEwMzViZWY2YiBsZWdhY3ktdHJ1bmsKKzM0MzcyIDE0NGJjOGZkOTExZWU5NGNkMDA5ZWZmOGYyYjcxMDRkOWE1MTJkMTEgbGVnYWN5LXRydW5rCiszNDM3MyBmMDBhMzJlYzQxMzkzMDA0YzUzZGU5NWM0ZGI0OGY5ZWJhOWY5ZDEzIHJlbGVhc2UyMy1tYWludAorMzQzNzQgYWNlZjRlMTZjZWFlNDgzMGE2YjdhZDA0YTI4YjZhNDgxZjVlOTk5ZSBsZWdhY3ktdHJ1bmsKKzM0Mzc1IDM2OTkyY2E5MThhMzQ5MzNjNzEzOGIwZWFhYWM4YjBmZTk3YjI5MTEgbGVnYWN5LXRydW5rCiszNDM3NiBiYjNjZTZhZWU2OTNlY2M0ZWJiNDE1MmFiYzFiODgzMDY3MmI0NjdhIGxlZ2FjeS10cnVuaworMzQzNzcgNmVmMjQ1MTM2MDM4OWFmOTc3NzBmOGU3ZTBkMzY3ZTJkZWUzOGZhZSByZWxlYXNlMjMtbWFpbnQKKzM0Mzc4IDVjMDE3NGUyZTE0ZjQ1MWY1Zjg2MDc4OWYxMzVkOTk5M2RiMWM3ZGUgbGVnYWN5LXRydW5rCiszNDM3OSAyOTg4ODhlMzk1Y2UwYzA1ZjM3NGZiY2M0YzEwMmE4ZTIwNTVlYjQyIGxlZ2FjeS10cnVuaworMzQzODAgNDc3NmEwNWU2MzBiNWZjMzhmMDFlOGQ5ODNjM2I3ZjNkNDg3NDQ0ZCByZWxlYXNlMjMtbWFpbnQKKzM0MzgxIDU4ZmU2NGY3ZmIxOTNhZWI4ZjIwMGEzMTk2NDFjM2Y5MTkxNTdkMzcgbGVnYWN5LXRydW5rCiszNDM4MiA0MDA2NzQ5NTgwMjVlOWU0ODE2NDgwYmZiYzQ2MmQ3MDllYWNkMDhiIGxlZ2FjeS10cnVuaworMzQzODMgMDYyYzI1NWI1N2E4ZTIyZTk3MzYyNWY5MWRkODczMDQzZTI5NWY5YSBsZWdhY3ktdHJ1bmsKKzM0Mzg0IGQ1YzMyMzFiYTViYWE0MTYzMjAzOWM4Y2ZhNzQ5ZDkyYjE0MjI4MTcgbGVnYWN5LXRydW5rCiszNDM4NSA3ZjYxMzRmOGJkMDZmZDNmYzY4MjhjZGVkZTJlZDk3YWM5NDI3ZTM1IGxlZ2FjeS10cnVuaworMzQzODYgYWRjNjAwMTU2NzBhZThjMjNkYjNlM2UxOGU5NDBlMzk1NzUzNTE1MSBsZWdhY3ktdHJ1bmsKKzM0Mzg3IDQxYjdkMWYwNTAwZjBlNGMxNTA0ZTJkNmY5OWUxMzI5N2IwMmM2ZjQgbGVnYWN5LXRydW5rCiszNDM4OCA2MDQ4MzBmMWNhYTY1NTI2Y2E4OWQxOGFiODBjZTJiZDlkYjY0MjU3IHJlbGVhc2UyMy1tYWludAorMzQzODkgYTc0MjgyMWQ5ZTc1ZGM3YWVhYWQ4ZjA2N2RlMzgzZjY3OWNhZmFkZCBsZWdhY3ktdHJ1bmsKKzM0MzkwIGZjZTgwYWQ4MzQ3NzA5ZjFjMWE2N2RkMWI0YTZjYzY1ZTNhOTMwYjcgbGVnYWN5LXRydW5rCiszNDM5MSBmZGYwYTk3YmFiNjAwZDU5NWRiMGMwOTI2MTA2NWE2MDk5NjQ3YWQ3IGxlZ2FjeS10cnVuaworMzQzOTIgY2YwMmMxN2Q3ZjQ0OWJjNWYyYThhNGJmODU0OTBkNTk3NjM5ZWE2NSBsZWdhY3ktdHJ1bmsKKzM0MzkzIDgzN2VhMTg2MzdiYzE5MGZlNTk3ODZmNzI2OTNlYmUwZTgxN2Q2ZWYgbGVnYWN5LXRydW5rCiszNDM5NCA0YTBjODllNWUwNTY3N2JlNzhkNDNmNzNhMWZkODg5YTliOGVjY2U1IGxlZ2FjeS10cnVuaworMzQzOTUgYzIyNmY4NGQ3YTY2ZTJhYTgxNjY1ZTMwZWM2ZGMwMmY5OTFiYzMyZiBsZWdhY3ktdHJ1bmsKKzM0Mzk2IDk2OTFjYzY0NDE2MDA3YmRkZGMxNzdiZDFiZWE2ODI0ZDdkNzBhNjUgbGVnYWN5LXRydW5rCiszNDM5NyA0NzNmNGUyOTU5YTgwNDNkOWJjYmQ3NDQzZWNiYzMxNGMxOTY1YmVhIGxlZ2FjeS10cnVuaworMzQzOTggM2I1OWZhNWQyNWIxM2I1YzY1ZTA5NjA3OTQ5YWMwNmFmOTA4NmRkNiBsZWdhY3ktdHJ1bmsKKzM0Mzk5IDBkZGVjYWY4Yjc1Y2JlY2EwMDY2MDA0ZGYxYzNkYzMxZTUxYWJkZjIgbGVnYWN5LXRydW5rCiszNDQwMCA2YzM4NDA2YzNmYWQ4NDEyOGU1ZmJiNzU3NTJhOGVjODdhNDVjYjFhIHJlbGVhc2UyMy1tYWludAorMzQ0MDEgMDA2MDE1Nzg0NGQ4N2JlMmFjZTdlOTUzMjZkNzUyMDA3YTBhMjliZSBsZWdhY3ktdHJ1bmsKKzM0NDAyIDhlYTgzMjYwM2U0ZmViMTdlMTllODM4MDVkNzdhY2FhNDQ0ODk0N2MgcmVsZWFzZTIzLW1haW50CiszNDQwMyBiNDkxYmJmMTdkZGU4YTE4NDU2ZTM0Y2MyYjdmYzRmZjAyOTI0ZjE2IGxlZ2FjeS10cnVuaworMzQ0MDQgNTAxYTc5MzQ2Nzg0YWU2MjZhOGI0ZjBjZDA0OThkZWEwN2NhMTU4YSByZWxlYXNlMjMtbWFpbnQKKzM0NDA1IGZkMDUyYzRmODg0ZjQ0MzBjMjgzODAyMmVhNWJjZDg5OTVhYjFlNTIgbGVnYWN5LXRydW5rCiszNDQwNiAwNGY0MThhZjY4MGQwN2Y0YjQwZTQ5NjFhZjQxYjBkOGZhMzA2Y2NjIHJlbGVhc2UyMy1tYWludAorMzQ0MDcgYTNlODY2NjVmMjQ1YWM1ZDdlNWViZmI3MjJiZGViZmJkYzE1YzhmNiBsZWdhY3ktdHJ1bmsKKzM0NDA4IDQzODhiYmFkMGJjMzdhZTk0OGMyM2EwYmE0ZTMxZTI0N2E2NjI3ZDMgbGVnYWN5LXRydW5rCiszNDQwOSA1YTFkM2JjNmNjMTgwMmUwMDgzNTU3NmFmMDdkNTcxMjUwZDVhYmQ1IGxlZ2FjeS10cnVuaworMzQ0MTAgMmNiNGYzMjE3OThjZDZmMDQxOGM0MTE5ZTEyNTlmN2E2NDYwZGQ3OSByZWxlYXNlMjMtbWFpbnQKKzM0NDExIDM0MjliMWQzOGI0MDBjNjBlMGI4NTBmMDE4ZDZkMTkzNGQyNDRhMzYgcmVsZWFzZTIzLW1haW50CiszNDQxMiBmMWMzMGJmYjBjYzEyNjE3ZTJlZTBhMzQxYjlmYjc0NWU5ZWFmOTY2IGFzdC1icmFuY2gKKzM0NDEzIDc5ODk3ZWQ1M2YwMzZmMTc5NTE1YjU1MzQwZDRhNTczNjhhOTMzN2QgYXN0LWJyYW5jaAorMzQ0MTQgMTM0NWMyM2EwNTkxNjA1MDNiYjUzYmI4ZmE5NDY1Yzc0ZGNlYzZhMiBsZWdhY3ktdHJ1bmsKKzM0NDE1IDNlM2ZkNTZjZTU5NThjZDQ3ZWU2MGU2N2E4MmUyMDY3OWVmZDMzMTYgbGVnYWN5LXRydW5rCiszNDQxNiBlZmVkNDg5ZGY1NDU5YTgwMWIwY2I5OTM1MzRlNDg4N2JkYTgwZGE2IGxlZ2FjeS10cnVuaworMzQ0MTcgNTIwMWY2NmM5MmVmM2NkZWViMmEzNzhjM2M1MmRiY2Y0MjhlM2E3YSByZWxlYXNlMjMtbWFpbnQKKzM0NDE4IGMzZGZkYjYwYjk4OGY4Mzg5Yzk2YmEzZTJmMGJiMDkxMzM1NjU4MWYgbGVnYWN5LXRydW5rCiszNDQxOSBjOGI4ODIxZTg3MmQxYzhlOTE3Njk4ZDdlOGUzMmRjODhiOGU2ZDk4IHJlbGVhc2UyMy1tYWludAorMzQ0MjAgODI4MmFhMWY5MzQzN2M2NjZjMzBkMWM0NmZiZThkZjM0NDZmZjI2MSBsZWdhY3ktdHJ1bmsKKzM0NDIxIDA0YmNmZGNmMjkwYTE1MDljYzc1YzgzNmI4OWJiYjA2YTE4ZTY5YmIgcmVsZWFzZTIzLW1haW50CiszNDQyMiAzZmYwMzQ0NmYzNjJhZWVmYzlmYTkwNzBlNmM4ODgwMWQyNWFiZDRiIGxlZ2FjeS10cnVuaworMzQ0MjMgYmUwY2EyNmFkNTc0MGVjNjQzN2E3MDYzYjc1MGQ2YWVkYzk3ZDcyMCByZWxlYXNlMjMtbWFpbnQKKzM0NDI0IDllMjFlNTZiZjVmM2NlMThmYzFmZDZjNzE4MWJiMzU2MzBkNzNjMTMgbGVnYWN5LXRydW5rCiszNDQyNSAzYTk5Mjk0YzhlNWI1ZTM4ZDFhMTc0MDE5ZmU2MGMxZjU2NDBlMWE2IGxlZ2FjeS10cnVuaworMzQ0MjYgMWQ1ZDcyNDM2ZjJhN2M0MmJhMzg4Y2E2ODI2MDc4NzVmZTllMDkxZSBsZWdhY3ktdHJ1bmsKKzM0NDI3IGEyMzRkYWYxOTgxMGFiM2E4NzljODZmMzZiZGNlODBiOGI0NDI0MmQgcmVsZWFzZTIzLW1haW50CiszNDQyOCA2ODc3Zjc5N2NmMzYxNTFhMWI0MzJlYmMwMTBjMzQ2NjRjYjZhNDRjIHJlbGVhc2UyMy1tYWludAorMzQ0MjkgYTY2MzQzMDlkNzBlZTZlYmFjOTkzNjQwZTk2OWI0ZjM1MDViODYzMCBsZWdhY3ktdHJ1bmsKKzM0NDMwIDljN2UwMjI3YzgzNTY4ZjNkODBjNTQzMmNkNjYzMGNkNmJkNGM0MTYgbGVnYWN5LXRydW5rCiszNDQzMSBiMTFkOTczYWJlY2FjYmJkYzBjZDg1Mzc0OTYyYjdlN2M4ZDhiMzQ2IHJlbGVhc2UyMy1tYWludAorMzQ0MzIgYzEyZDRmMTg1M2JjMDAyYjNkNjMwNzkyMmIzN2JmMDlkMTUxY2E5NSBsZWdhY3ktdHJ1bmsKKzM0NDMzIDA3YTBhMDcyNjY0OTk0NjcxMGU5YWM1ZGNkMWZmYmEzMWFmMWFhZmQgbGVnYWN5LXRydW5rCiszNDQzNCAxMmU1NDkyOTVmN2Y1ZGZmYzI0MTljNTgyYjg1ZTE3ZTdkOWVmNjViIHJlbGVhc2UyMy1tYWludAorMzQ0MzUgYTI4YTgzMDAzMWE5YWIzMjJlZjk1YTFjYmM0OTQwZjExMzY0ODRiNCBsZWdhY3ktdHJ1bmsKKzM0NDM2IDdkZmRmOWU4ZDk1ZDM3MDExMDg3N2E2ZjdjZmE4YjNkNzk3NDNkNWIgbGVnYWN5LXRydW5rCiszNDQzNyAyYmM3OWIzYTk1M2RmZDg3ZWE0OGE0MDg4YWQxN2YzNTJkZGE0MTc2IGxlZ2FjeS10cnVuaworMzQ0MzggZjgwZDgzNzc4NDBmMmVkNTEzMGUyMjk5ZDY2Y2IwZjYyZjU2ZmVjMiBsZWdhY3ktdHJ1bmsKKzM0NDM5IDY1MWZjOGQ5OGQ5OWI1MGY3ZDlhYWVkN2I1Y2E3YjZjY2VhM2I1Y2EgbGVnYWN5LXRydW5rCiszNDQ0MCA2ZjE1ZTczYjU5ZjJlM2EwM2YzMTc4NzQ1MzU1Y2Y3ZWQyNjhmNTk0IHJlbGVhc2UyMy1tYWludAorMzQ0NDEgOTVkZjYwMGFiOWJkZWI1MWMxMDE4OWIzYTFmYWE3YTE4MGE1OThkMCBsZWdhY3ktdHJ1bmsKKzM0NDQyIGU4N2Q2ZDc2ZTM2NTc1YzEyOTUwZDdiZDdhNjJkY2I3MDhkNmI4NzUgcmVsZWFzZTIzLW1haW50CiszNDQ0MyAxMDI0YzViZjdmZWU5MTI5NDE1OTE5MmNjZTNjMWE3ZWYyYTkyY2IyIHJlbGVhc2UyMy1tYWludAorMzQ0NDQgYWQ1ODIyOTc3MTUyZmU3MzYyMDQ1ZGI3Njk0MzlkMDgzZDg0M2RiYSBsZWdhY3ktdHJ1bmsKKzM0NDQ1IDk3N2VmYWE4NjM0ZTYxZjRiOWU4NjI1MWI5NzNjMTg0ODZkMmJjOGMgbGVnYWN5LXRydW5rCiszNDQ0NiBiMTA4YzQ0MmEzNzQ0MTU0YjE3ZGU4Yzc2MjdjYWU3OWMyNmY2MmJkIGxlZ2FjeS10cnVuaworMzQ0NDcgMGVhNDEwNDhiMmQ0NzUyNTg4ODAyZTc5OGE0NjcwYTFkYzgwZTJmOCBsZWdhY3ktdHJ1bmsKKzM0NDQ4IGYwZGEwY2FkNWNkNTFmNDdmZmEzY2ZhNTI2NmYzNzNhODM5NDk2ZmUgbGVnYWN5LXRydW5rCiszNDQ0OSA0NGY5ODAwMjE4MWZiMjkwNjkzMmY4N2JhY2VmMTM1ZjRmMTg3MzQyIGxlZ2FjeS10cnVuaworMzQ0NTAgOTQ1NWRlZmYxYzdjMGVmOWUwMmVlMzRjNzhlNWQzYjVlMWM3Y2FkNiBsZWdhY3ktdHJ1bmsKKzM0NDUxIDkxNmY3ODJlZDZkNTBjNmJmOTAyOGVmODVlMjM5Nzc5NjlkYzUxMDkgcmVsZWFzZTIzLW1haW50CiszNDQ1MiA0MjQ0NTE3MjkyOGYxZmFmNTFhY2ExNWM4YTQ0NWZlNmMzZmVjMjE1IGxlZ2FjeS10cnVuaworMzQ0NTMgMGU4MDc3Y2IzZGQ1YTE2N2JmNzI4NWFmMzI1MmYzYTI5MWMzMWYxZSByZWxlYXNlMjMtbWFpbnQKKzM0NDU0IDM4YjBiN2Q0MTkzNmIxN2ZmZjJmMDk0YTA0NWU1N2RkM2UwOWFhOGUgbGVnYWN5LXRydW5rCiszNDQ1NSA5MDNiMzFkNzcyMWExZDU2YzAwYzczOTBjMzE0N2ExNzI1MTY0MTU0IGxlZ2FjeS10cnVuaworMzQ0NTYgMzhiOTRjMDViODViOTJlNzZjMTljZDZmMTE2MTNlZTQwZTU5MmU2MCBsZWdhY3ktdHJ1bmsKKzM0NDU3IDQ5NGQ1Y2YwYmJlM2UyMTEzNjQyMzUyZTNiZDY1YmE5ZDI0NWUxNWUgbGVnYWN5LXRydW5rCiszNDQ1OCBiYzhmMjJjNTM0MmNhMzdjZTRmMmZkYmYxODkxM2MwNjM4NTkxMzMwIGxlZ2FjeS10cnVuaworMzQ0NTkgYTgxMGJhYjg1ZmJjNGQwYTRhZWRiZTI0Y2I2Mzg2MjA1MjE0ZTU1NSBsZWdhY3ktdHJ1bmsKKzM0NDYwIGY4NzQyNDNlZTM5YmEyNmU3MWM4MzFlMmY1ZWQ4YWQyOWMxNDA4NTIgcmVsZWFzZTIzLW1haW50CiszNDQ2MSAwMDEyMDliODE4YTY3YzkxOTFkMGM4NTY1MjA1MDEyNjdmNzJjMGQ3IGxlZ2FjeS10cnVuaworMzQ0NjIgZGJlNzg4MjIzY2U5NjhlZjVlYzk2ZmUzYTY4MDIyZGU5ZGQ2YjU4OSByZWxlYXNlMjMtbWFpbnQKKzM0NDYzIDBjNjJjMWFjOTY4NGRiMzE3ODU3OGE1M2VlOTQ3YWU0NTZjNjI0ODMgcmVsZWFzZTIzLW1haW50CiszNDQ2NCA3N2Q1MzA4YmVkYWUxMTQ0YjQ5YzdiOWViZWZlMGM3Y2EzZGU4YTQ0IHJlbGVhc2UyMy1tYWludAorMzQ0NjUgNjI0OGRkNWQxOTJhODA1ZGNiOTY0YjU5MmYzODA3NDA5ZDc3ZDFmNSByZWxlYXNlMjMtbWFpbnQKKzM0NDY2IGZhZTM0MzU3NjFhZjlmNTg5ZGViOTQ4MGU2MTY4OWNiZTk4NzcyYzkgcmVsZWFzZTIzLW1haW50CiszNDQ2NyAxZDkyZWNkZjJiYjE0Y2Q5MTRjYzYwY2Y2OGNhZmIzZGQzYzliNDYyIGxlZ2FjeS10cnVuaworMzQ0NjggNmZkZGU5NmE3MjIyN2EyYzZlNTgwOGRhNzZkMTQxYTY2ZGI5NTExZSByZWxlYXNlMjMtbWFpbnQKKzM0NDY5IGQ3NzBkYzI2NDIxMmRlN2NlNTZiOWExYmIwYjIyZTBhMTFiYmUzODIgbGVnYWN5LXRydW5rCiszNDQ3MCA2OTE0YjVlMjA3NmYyMjRiNzdkYTVjMmM1OWY1Mjc1NmRlYmRkYWY3IGxlZ2FjeS10cnVuaworMzQ0NzEgOGIyZWFkZmI4ZjBjZGRjMzJiZGRhOTk2ODdiZTQ2NmZmZjAwZjJjNyBsZWdhY3ktdHJ1bmsKKzM0NDcyIDRkNzllODQ5MGM3NmU2ZTY5NDhjYjlmNzk0OGIwNmUwMDI0OWZjMmUgbGVnYWN5LXRydW5rCiszNDQ3MyBiNjkwMmMwYTc1NzgyZWRiY2U5NzVlZGEyMmYxYTBlOTg4ZWI4MDNmIGxlZ2FjeS10cnVuaworMzQ0NzQgZTBlYzY0NGY1YjM2YzQ1ZTNhNWNmZTllZDBjOTNhNDFjN2Y0NGM0OSBsZWdhY3ktdHJ1bmsKKzM0NDc1IDI2YmMwMTk0NGFlOGVjOWU0NDFkZTMzYjI5NWEwZmY4N2I3NWYxMmQgcmVsZWFzZTIzLW1haW50CiszNDQ3NiBmNzcyZDM0MDNjYTdkMjQ4NDJmMzI5ZTBkNDNiZjRiYTcwNmZhZDQ5IGxlZ2FjeS10cnVuaworMzQ0NzcgYTA1NDVlMzJkYWU3ODg0MTNhYTdkYWZhMWFmZTg3MDcxYjg3NzhhOSByZWxlYXNlMjMtbWFpbnQKKzM0NDc4IDBmZTMwNzEwZGE4MDYwYjA4ZmY2MzlhMDVlNGY0OTUxNzgzZjU5ZTcgbGVnYWN5LXRydW5rCiszNDQ3OSA4ZmJiMDYyM2I4NTc4ZDk2OWJiMzg5ZjdhNjVmOGMwYWM4NDY2ZjYyIGxlZ2FjeS10cnVuaworMzQ0ODAgNDhiOWNjNTE3NDJiOWJmM2U5N2M0MmIzOWY2OTkwOTMwY2ZkODM2ZiBsZWdhY3ktdHJ1bmsKKzM0NDgxIGI5NDhlNzc1YTc5ZWUwYmM0MjViNmZlNjc1MTg0NmIxNzI1ZjYyMTggbGVnYWN5LXRydW5rCiszNDQ4MiBmZTNmNTU5MjMwNWRjZjRmNjFmNDMwY2EyZGE5MmYwYTc5ZWJiZjExIGxlZ2FjeS10cnVuaworMzQ0ODMgOTgyZTNlNDBiZjFlNTg2NDk0Njk0N2ZlZDYyZDg0NjljMjFhNDdmMCByZWxlYXNlMjMtbWFpbnQKKzM0NDg0IDc5MGVkNWM1OTljM2Y0MmZhZGJmNGEyMDExZjM4MWNlNTAwZGNkMjIgbGVnYWN5LXRydW5rCiszNDQ4NSAyNzk3MzY5OTBhMTRiZTM0ZTdlZjcxYTczNDkwZjNmNmIzODNkMGQ4IGxlZ2FjeS10cnVuaworMzQ0ODYgMmJjOTVkNDlmYzdhNjBmOTlmZmIyYzlkYWJhY2JjMDJjYjljYWQwYyByZWxlYXNlMjMtbWFpbnQKKzM0NDg3IGUwODQxYjVjZjJmZDFjMWJlOGQwMjBiNmI1YTQ2MWM0YzJiMWRiMGQgbGVnYWN5LXRydW5rCiszNDQ4OCBhNjg3OWQxNzMzZDdiYzJkMzQ3MmI4OTBhODRjMjI1NjRkYWFiZjM0IGxlZ2FjeS10cnVuaworMzQ0ODkgODk3YWZjYWNiYTAwNzJkN2FhMTc3OWM0MzUxMWU0NWUyYmIxYzJlMSBsZWdhY3ktdHJ1bmsKKzM0NDkwIDk1ZmQ1NTU0NWNhYzI2OTg0MTZlNmYxZmMxYzRkZjMwZmViYmI3N2IgbGVnYWN5LXRydW5rCiszNDQ5MSAyZDk4NzEwZjI3MmVjZTZiZDA2YzZmYjFjMTE4ZDk0NWRmOGJjNTU5IGxlZ2FjeS10cnVuaworMzQ0OTIgMDYyODU3ZjY5MjdmNzkzYjFmMjRjODY0N2E5ZjU4MzVjNzZjZDg1NiByZWxlYXNlMjMtbWFpbnQKKzM0NDkzIGRmOWQ4ZjdlNGM5YzM1MzAwODA3MjA0N2QxYTU3MjA4ZDFmZGI5NTkgbGVnYWN5LXRydW5rCiszNDQ5NCA2NWJiZmRhMjQ2YzkzMDhjNWZhNDEyNzVjMjM2ODE2MjhkYWRjM2M3IHJlbGVhc2UyMy1tYWludAorMzQ0OTUgM2UzZDUzOTYzYzg4ODFiMDdjOTI5NzZmOWJhNWU0NmU3YWJiMjMxOCBsZWdhY3ktdHJ1bmsKKzM0NDk2IGVlZTA3ZjMwZWYwNjhjMTBjOTNiYTMwYWMzMWNmMTFiNzhlNmFiNzkgbGVnYWN5LXRydW5rCiszNDQ5NyBmMmU2MWQ5OTA5NWU3MzE2ZjRmM2IyMTE5Y2UwZjhiMTFjNGJlMjNmIHJlbGVhc2UyMy1tYWludAorMzQ0OTggNzQ3NDdmNjJmMjg2YTg2MWJhMWVjNWQ1YjdmNzQ5N2U0Zjk4OGE3YyBsZWdhY3ktdHJ1bmsKKzM0NDk5IGY1MWRjOTAyNmU0ZGY5YmVlY2ViMDU4ZWU1Yjk4ODcxYzViZDU4MjUgbGVnYWN5LXRydW5rCiszNDUwMCA0ODMzYTljZDM3N2VmMWZhZDFiYTYwNzY2ODZlZThkNDZkNzA1MGMyIHJlbGVhc2UyMy1tYWludAorMzQ1MDEgMzcyODVhMDM0NmMxNGNlYWMyOWE2NTFjYzA1NzU5ZTM2YTc5NWU1YyBsZWdhY3ktdHJ1bmsKKzM0NTAyIGQ5OTZlMmRjYmQzYTdlNTdmZWE3YWI1MmQ1NTJhOTAzYmEyNDAzZmMgbGVnYWN5LXRydW5rCiszNDUwMyAyMjVkODQ4YTVmOTY4Yzg4ZDk2Y2Y3NzVhODEwZGNjZDlmMDNlZDRjIGxlZ2FjeS10cnVuaworMzQ1MDQgZWEwNTg1MDQxMDRjZDcyNmQwOGMwZTdhOGFiZmVjMWU4MzExZjllZSBsZWdhY3ktdHJ1bmsKKzM0NTA1IGMyYWU5MWE4N2E0OGFjNjU5OTNhYTQ1ZGM5NjJlYWFiMThjMDEwNWYgbGVnYWN5LXRydW5rCiszNDUwNiA4NGZmMTNiY2M3NTAyZjBiMDcxZjg2YTVhZGFlMjBhZThlNmVmNjMzIGxlZ2FjeS10cnVuaworMzQ1MDcgYTYwMDhiNzBjOTM5MzRiNzhlNTc1NGZjYzJiNmJhZDRjNDkyYzcyZiByZWxlYXNlMjMtbWFpbnQKKzM0NTA4IDRjOWE2N2NmMjgzM2E5ZmVmMTcxZDI3NGRlN2ExNTZhNmZlNDc4MzIgbGVnYWN5LXRydW5rCiszNDUwOSA3YmJlZTk5NDIyYTAyZWM3N2Y3NTliMWM1MTY1ZTFlMTBiOTEwNTQ4IHJlbGVhc2UyMy1tYWludAorMzQ1MTAgYWM5ODVkNzc2NjUwMTcxMDkwZWZjNjY2YThkZTcyZWM3ZjIwYzI1OSBsZWdhY3ktdHJ1bmsKKzM0NTExIDQxMzliNDVhY2ZlZDAxN2NlNzU2MWU3ZDY2MzVhYjk5Y2EzN2M1N2QgbGVnYWN5LXRydW5rCiszNDUxMiA5ZGE1MzcxNjdiNzQ5N2JmZjNmNWUyZGUwNjM5NzcyNDI4MWYxNzczIHJlbGVhc2UyMy1tYWludAorMzQ1MTMgOGViODk4ODE0ZmI5MTc0NDljZWRjYjQ3ODE1MjNkMWMxODQ2MjI1MCBsZWdhY3ktdHJ1bmsKKzM0NTE0IDdlOTMxNDkyNmRiZTJjYzViNTg2ZjU1MmNmYjE5YzJkYzRmNDAyMDQgbGVnYWN5LXRydW5rCiszNDUxNSA3ZWRlNzcyZjAzZDNiYzFiNzQ2OTRjYTNlOTc0NmRkMWIwYjAyNTc2IGxlZ2FjeS10cnVuaworMzQ1MTYgMDM0YWU0OWY5YjdhZWFmOTEzMGU1NzNlNzZjNjM3NTc5MjFjMGM0ZSByZWxlYXNlMjMtbWFpbnQKKzM0NTE3IGFmNDQzZDgyMGE1MDY3NzJjN2E5MGMyY2E5NDdjOWM1ZjU1NWY1YTYgbGVnYWN5LXRydW5rCiszNDUxOCBjNDJjNDAwMzQ1MzZjYzljMjZmMTIwNWNmZWQ0OGQ2Nzk5ODY1MzNhIGxlZ2FjeS10cnVuaworMzQ1MTkgYjRiOTQ1YzVkYTRkNzQ1YTNlNTEwYmEwYmRmYjBiOGI0Nzg1OWMxOCBsZWdhY3ktdHJ1bmsKKzM0NTIwIGFlY2JiYTAyOTRiYjUwNjM3OGViNGJlODBiODgwNGExZGFiMWZmZjggbGVnYWN5LXRydW5rCiszNDUyMSBhYzhjNzcxNmE4NWRhZmJmMmI2NzhjZWYzNjM4MGJlNjBmOGRiZDQ0IGxlZ2FjeS10cnVuaworMzQ1MjIgNmE4N2VkNjM5NjdjMjU5Zjg0MDdkZWMyMGNiZjgxMWY5ZmU4ZjFlZiBsZWdhY3ktdHJ1bmsKKzM0NTIzIDYzMTExOGI5YWVjNjJhZGM0Njk2ZmM0N2VhODg4Njc5NWRmNjJmMDEgbGVnYWN5LXRydW5rCiszNDUyNCA3YmE0M2VmZDBjZWIzMmE0OTg2N2VkNjY4ZThmNTg4ZGJhOTlkMTRkIHJlbGVhc2UyMy1tYWludAorMzQ1MjUgODMyZjNhOTg5MDU4YTZmYzRmODg4NDdlYjQ0OTQ5MDE2MDgxYjJhOSBsZWdhY3ktdHJ1bmsKKzM0NTI2IDhkYjY0YWJmODU2ZjhjNDRhNzVlYjU5OTFhN2ViZWRkMGNlNmQ2ZjkgcmVsZWFzZTIzLW1haW50CiszNDUyNyAyY2JhMGRlNzBkZjYyYmViODVjNjg3MDZhMzJlMzk4ZWE5OGY2ZjUyIGxlZ2FjeS10cnVuaworMzQ1MjggMWZiZmU5ZGMwYmE4YjkyYWMxY2VjOGY5MGE5MmVmYTFlYjJjYjhjNiBsZWdhY3ktdHJ1bmsKKzM0NTI5IDc4NjNlYmNmZjEyMWYxNTc2Mzg5Y2JhYTg4NDA2MjQ1YWNlMTc3NzUgbGVnYWN5LXRydW5rCiszNDUzMCBhMGQyOTc4NTYyZDVlMTJmOTUyM2UxYTNlNzNmODM0Njc1OGYyMjM4IGxlZ2FjeS10cnVuaworMzQ1MzEgNTY1Mjg0OWZiZTI5NjAyMTFlNDUzMDY5N2EyNTAwZGQ2NmEyYTJhMSByZWxlYXNlMjItbWFpbnQKKzM0NTMyIGM4MDQxYjBlZWIzY2IzMmI2NTg3ODljN2Y4MWI4NDBkNWI0NDliZDkgcmVsZWFzZTIzLW1haW50CiszNDUzMyAwN2U3YTAyMDYxZDg3YzU3NGU0MDE2OTQ4ZWMwZjBlMTQ2MGRiN2ViIGxlZ2FjeS10cnVuaworMzQ1MzQgMTUxMDI0NGJlYjVlMGU2ODNlZGQxZDM5NGY5OWY0NmVmZjkwN2UzNiBsZWdhY3ktdHJ1bmsKKzM0NTM1IDQ0ZTlhYmQwN2ViMzFlMjczNmNmMDk4MDVmMzE3MzVkNTZkYzU1NzcgcmVsZWFzZTIzLW1haW50CiszNDUzNiA5ZDhhY2RiNThmOWMzODg5MmYwMTc2ZmQ1MmM5ZWRjMjBmOGY0YzU4IGxlZ2FjeS10cnVuaworMzQ1MzcgNTI4Y2MwZmRkYTQxY2QxZjNjYjkwNDUyNDVlZmFiMGJiMTBmYTc1NSByZWxlYXNlMjMtbWFpbnQKKzM0NTM4IGVjMWE0YTI5ZDI1ZGE0NTg4YzEzMTBiZjQyMWE1N2Y2MjM0NjFiNzggbGVnYWN5LXRydW5rCiszNDUzOSA4Y2Q2OTFiNzM4NDUyNzJjZGEyMTBiZjhhZTZkMjJjZGY2ZTVlOWE3IGxlZ2FjeS10cnVuaworMzQ1NDAgOThjODU3NmI4ZGE3ZDI0MDAyZDgwNzYwMDA1ZWZjMzE2ZWIwM2RmOSBsZWdhY3ktdHJ1bmsKKzM0NTQxIDY0MjJhMzk1MDA0MDFiZjc3ZDk5ODBlMWQ5MmEwYzcwMmEyYjA4M2QgcmVsZWFzZTIyLW1haW50CiszNDU0MiBkMTUzM2NhNzhkOGNjYTg1YzFjZWY4ZmM4YTc4NTBjZTZhOGVjNzdmIHJlbGVhc2UyMy1tYWludAorMzQ1NDMgZmFjOGM2M2M3ODM4MWFiNmYwNGRhZjczZjZiMGYzN2ZhNWJkYjZhYyBsZWdhY3ktdHJ1bmsKKzM0NTQ0IGI1ZjY0YmU1YjIxZmRjZWU3ZDZlODg4OGE2YjhhNDYzNjQwZmM0YjYgcmVsZWFzZTIzLW1haW50CiszNDU0NSBlNTlhYjcwOGJiYjBjYThiY2ZiN2RhZDk0NmNlNjcxMjdmYWE4YjMwIGxlZ2FjeS10cnVuaworMzQ1NDYgOTgzM2FhNWJkZjM4N2M4M2NiYWUxNzQyMjliMDhkYWEwNzIyMjJmZiBsZWdhY3ktdHJ1bmsKKzM0NTQ3IGNiYmUzZjhiZGVmNmYyODNhZThiMDM4NDAwZjQ4MDFiZWM2NTc2NGEgcmVsZWFzZTIzLW1haW50CiszNDU0OCA4MjdkMDFkZjYxYTcxNmE4YzMzZDEwZTMxMTE3ZDI5N2I2NTMwMTAzIHJlbGVhc2UyMy1tYWludAorMzQ1NDkgODlkYzA2OWFhZDJjNzkzNzdhN2MxMDBlZTE0NGM0YzE0N2Y3NmYyNiByZWxlYXNlMjMtbWFpbnQKKzM0NTUwIDNjZDkyMDZkZmI3OTI5MDY0NDVmOWQ4NDQ1YTczZDhmZjA3ZTU2OGQgcmVsZWFzZTIzLW1haW50CiszNDU1MSBkNmMwOWE5ZDcyNDFkNmU2MDVkZGQwMjNhMzQ4ZDRlNmVmMzQ0ZDA3IHJlbGVhc2UyMy1tYWludAorMzQ1NTIgNTYyMTQzYzFjN2FlZGFkZjU4NDBiMDFhZGQyMzM0OGEyNTQwYmMzYiBsZWdhY3ktdHJ1bmsKKzM0NTUzIDUyMmEzZDdlMGE5NjIyOWRjYWFlYjI0YTA3YzIyMDFiYWMyYmE1NWIgbGVnYWN5LXRydW5rCiszNDU1NCBlNjc2Yzk1ZTQ4NDQ4NzBlNWU1YTVlNjhmNzk4NWQ5Y2JmNWNkMDk3IGxlZ2FjeS10cnVuaworMzQ1NTUgMTliYjFiMmZiMjMzOGRmMWQwNzY5YjlkYTg2NThhODA5NjgxODUxMyBsZWdhY3ktdHJ1bmsKKzM0NTU2IGZlZWM0NGYxOWVjYzc4ZGNiODkyMGExYzZmNTBiYTgwMDgzNThiNmMgbGVnYWN5LXRydW5rCiszNDU1NyBmZWY2ZmRlYzUyOTI1MjNmMGM4OGQ5MDI3YmI5ODg3OGQ5YTBmNTBhIHJlbGVhc2UyMy1tYWludAorMzQ1NTggYTk5NzYxNGIzNWRjOTc1YzM4NTZjZWIyYjRkNDYzMzcyNjU3NmU0ZCByZWxlYXNlMjMtbWFpbnQKKzM0NTU5IGZlOWE1YTJkZDJjMTUxNGRlNjIzY2VmZTIyNzA4NzNjNWRkYzQ0ZGEgcmVsZWFzZTIzLW1haW50CiszNDU2MCAwOGMwMmEyNjVkYmQwZGQ5YTE1MTBlMDA2MThlMDQzZTM2N2IzM2Q2IHJlbGVhc2UyMy1tYWludAorMzQ1NjEgNGU1NmZiYTk4ZjFlNDUwOGI2ZmUyNmI2MDI0MzlkYmYxOGI3Y2UyMCByZWxlYXNlMjMtbWFpbnQKKzM0NTYyIDU3Zjc0M2ZhMzIwN2UwOWE1NjMwOGZlN2M2NzYyYTBiYWI4OTM4NGYgcmVsZWFzZTIzLW1haW50CiszNDU2MyAzYmU0M2FmOTkyYTZkNzJiOWM2ZGNmY2FlMTFiOGY1NmRkZWJjZGQwIHJlbGVhc2UyMy1tYWludAorMzQ1NjQgZTVkMjIxZjhkNDEwYjM3MWRkYzYxODM5ZGQ5NWViNGI0MmMwYmVlMCByZWxlYXNlMjMtbWFpbnQKKzM0NTY1IDkzMWE1OGYyN2ViYjA4NWZlMzllOTM3N2NlODQ2YjVkZDFjYjYzYmMgbGVnYWN5LXRydW5rCiszNDU2NiAyNjI4MjNhMTJjYTc1MzMyODA1ZTNkOTQyMGM1OTk0NWFkMGNjY2E0IGxlZ2FjeS10cnVuaworMzQ1NjcgZWQwNThiZGFkMmFkZjZlMmQ3MzY2MmI5OGY1ODE4ODU4YTIzYThhZSBsZWdhY3ktdHJ1bmsKKzM0NTY4IGRjYWU2MmQzNTg4NDkzNDcyZjU1MWM2ZTJhOWE0OTkxY2JhNWQ0NzEgcmVsZWFzZTIzLWJyYW5jaAorMzQ1NjkgMDgwZGYwZWRiMGE0YmNhYzQxNzg3ODg2NTg1YzlkOTQ5NmU0MWJjMyByZWxlYXNlMjMtbWFpbnQKKzM0NTcwIGFmNzMxODQ2ZmY3MjgyN2MzMDVhNjhlMTE1ZTEwNDUwMDQ5ZWU1ZTQgcmVsZWFzZTIzLW1haW50CiszNDU3MSA4YTc1ZjliYTliYWJiMTAwYTljMDI2YzZjZGVkMjcxNzhiM2M3MDFiIGxlZ2FjeS10cnVuaworMzQ1NzIgNGUxOWEyZmYzNzZhMDVmOWQ0NDViZmI2YjRhNmIwNmNiOWM1YWEwNCByZWxlYXNlMjMtbWFpbnQKKzM0NTczIGFkZTk3YjYwNTM1MjQ1Zjc3NmVmMmVhMTU5YzQ1YmU4YjYzNTA3MjYgcmVsZWFzZTIzLW1haW50CiszNDU3NCA3MTM1YzdjYTk4NDJiMGRjZjBhZTEyMDFkOGUxZGEyZjU0ZDUyNzQwIHJlbGVhc2UyMy1tYWludAorMzQ1NzUgNzc2YTc3MTUwNjIwYzI5M2VlOGJlM2NhZDBjZTNiNzU1MzM1NTBkNCByZWxlYXNlMjMtbWFpbnQKKzM0NTc2IGMzMWVhZGI2OTc3OTE0ZWU0ODlmYTQwOGYwNzdhNjQzMzNhMWVjZWYgcmVsZWFzZTIzLW1haW50CiszNDU3NyA5ZjVkZDMwMmJkOTE1MzM4ZmU4NjY4OTU3N2I5NTllMWMyZTcyZjA4IHJlbGVhc2UyMy1tYWludAorMzQ1NzggODIwZDFkMDQzZDNhY2NmNGY2MmExMzhlOTAzN2ZlZDdjNTgxZmZiYiByZWxlYXNlMjMtbWFpbnQKKzM0NTc5IGM4OWZkN2VhZjg3NTQ3Njg4MjUxMDg4ZGNiZWFjMjcxZDFiY2Q4NjcgbGVnYWN5LXRydW5rCiszNDU4MCBkNDVmODk4MWZkZWE5MWZjOGUyMjllN2EyODA3NDkyMTI2ZjQ2ZGJhIGxlZ2FjeS10cnVuaworMzQ1ODEgMDcwYzg5ZWRhODBiZGI1NDM1Y2M3ZTIwZDA1ZjVmYzVhZTFiMGEzNCByZWxlYXNlMjMtbWFpbnQKKzM0NTgyIDY3NjA2ZjljMmQxMTNkZGUxNzczYjg0ZTYwYTVjNTQzOGUzZjgwNDIgcmVsZWFzZTIzLW1haW50CiszNDU4MyA0MWM0ZTE0M2U2ZTZlMThlNDEzMWExZWQ4OTU4YWM0NDgxYTUzZTcxIGxlZ2FjeS10cnVuaworMzQ1ODQgZmU1Y2VhNTFhM2ZmZmZmMDI5YzI2NTZjODJhNmZkNGQ3ZGE5MDc0YSByZWxlYXNlMjMtbWFpbnQKKzM0NTg1IDA0Y2E0ZDFmNzUxZjJhOGEwMjUyZWIxNmM5MjVlM2Q2YTVmYjA3NTQgbGVnYWN5LXRydW5rCiszNDU4NiBkYTUwNTZhM2IxNTI4NDFjZDE2NTk2MDgwZDRkNDcwYzQzZTg3ZWI0IHJlbGVhc2UyMy1tYWludAorMzQ1ODcgMGFjYjk1YWQxOWRjODY3ZmJjNTlmNWJlYzkyMjBiZWM1YzA4ZTNmZSBsZWdhY3ktdHJ1bmsKKzM0NTg4IGU0NjhiMjQ1MWQ1NGIwNTEzMzI3ZTNiNDlmNjE0YzZlYzdmZWViMjkgbGVnYWN5LXRydW5rCiszNDU4OSA5ZDdiN2VlMDQ0NzBlMTllMGFhNjBiMmY3MDM0NTdkNzlkMGEyMDRlIGxlZ2FjeS10cnVuaworMzQ1OTAgZTcwOTFkNTc1NGFlYzAxNTRlYjhlOTQ1YTQyNTQ2YjBkYjAyNjg3NyByZWxlYXNlMjMtbWFpbnQKKzM0NTkxIDFkYjBkZTRjODQ1NDMyM2JmYjA4NzU1NmUwY2MzODIxZmU4ZjdkMmEgcmVsZWFzZTIyLW1haW50CiszNDU5MiA2ODJkMWI2N2M3YjU1MjQ3ODcyNTEzYWYxOWM2N2IxZTJkY2Q3ZWQ3IGxlZ2FjeS10cnVuaworMzQ1OTMgMmFjZDI4YmQ0ZDBmMWZlNjE0ZTMxMGYyNmY3YWM0MzkxMjhmN2Y4OSBsZWdhY3ktdHJ1bmsKKzM0NTk0IGUyYTlhN2ZlZjE4YTMzZjgwZDRhZTcxYzk3MTBlMWEyZWMwODk2YjYgbGVnYWN5LXRydW5rCiszNDU5NSAzZmE5NTM4YWM0OTY3MjdkMDIwZjBlOTMzMGI4OTA5ZTE3YzlkOTEwIGxlZ2FjeS10cnVuaworMzQ1OTYgZjAxNjEzMjdhOTAyNjc4NDEwZDlmOTEwYjBlMjRhYjE2M2Q1ZmQ5MiByZWxlYXNlMjMtbWFpbnQKKzM0NTk3IDRlZDQwYjNmODgwMjM1ZTc1Y2FmOTdhMGUwYWY5ZDY1OGY5Y2U5N2QgbGVnYWN5LXRydW5rCiszNDU5OCBkMzM4OTgzZDA3MTk0N2Q2OTE3Y2U5YmU0N2FhZjljYTNiNDc1M2NiIGxlZ2FjeS10cnVuaworMzQ1OTkgMmU0OTc4NDBjNDU4ODBkNWQwMjIzZjFmNDY3MzRjYTdhYjQyZGZmMSBsZWdhY3ktdHJ1bmsKKzM0NjAwIDcyZDcwZGNjNGFmMmM3ZjczMjA1NTdiYTA2MWIyZTFmMGE4OWE5ZDkgbGVnYWN5LXRydW5rCiszNDYwMSAyZjBlNjBkNDIzM2E2NjViZTJmMDFmYTUxMDRjYjBkMTRiZTdlZjg1IGxlZ2FjeS10cnVuaworMzQ2MDIgY2JkOTNjZjMyZWZmZWFlOWQ3NjNkNGE2OTJlZTVlZWFhNTlmODhmMCBsZWdhY3ktdHJ1bmsKKzM0NjAzIGU2MTQwODNhYjIwYzhmMWQyY2MzOTlhMTEyMjk5ZTUyYzZkMTUzODQgbGVnYWN5LXRydW5rCiszNDYwNCBlNDhjNjFmYTJmOTgzZTFlMGQyNjZkMmE4YTJlMmNhN2JiNTBiNWYzIGxlZ2FjeS10cnVuaworMzQ2MDUgM2FlODI5MjhiMTEzMWNiYjEwNWFmM2FlODk5OTAyMzdhYzkwMzJhYiBsZWdhY3ktdHJ1bmsKKzM0NjA2IDdkYjc3OGNiN2UwOGE0NDhkM2VhZjdmODM0NDZlYzY4MGI4ZDExMWUgbGVnYWN5LXRydW5rCiszNDYwNyBjZWVjNjlkMjQwZjAxOWViYjc3YjBhZWUyMGY4MTYwODdlZjhmZDBiIGxlZ2FjeS10cnVuaworMzQ2MDggMTk5N2ExNGY2YjA4OGUxYTY1MWUxZmRiOGMzY2FjN2Y1ZjFiZmMzNiBsZWdhY3ktdHJ1bmsKKzM0NjA5IDg5ZWNmYTI1NDUyODNiMTdmZjE5NzBhYmFhZmQ1NWYyZWNiMjQyOWEgbGVnYWN5LXRydW5rCiszNDYxMCBmMDhhNWU5NWMzN2NmM2RiNzI2ZDliZGRhOWIwYmI2NzFlOTYxYzI0IGxlZ2FjeS10cnVuaworMzQ2MTEgMWU2ODYzZGRkODRiOWU4M2U3YjNhMTc1NzFjZWI0ZTZlZTk5YzkzZSBsZWdhY3ktdHJ1bmsKKzM0NjEyIDU0MzcxMzkxOTQ5OWU2NjEzMWQzNGQ5NzY4ZTJmYmRkZTQxNjAxZTIgbGVnYWN5LXRydW5rCiszNDYxMyAyZWQzNjgzMzg1M2FhY2JiNGVmOWRhY2M0MjJlOGEzOTdlNGQzMWE5IHJlbGVhc2UyMy1tYWludAorMzQ2MTQgYTBhOGYxNTQwMWRiMGZiMTM3NGM5YjJiYTIyZWI3NWJkZDg2NmNkNSBsZWdhY3ktdHJ1bmsKKzM0NjE1IGM1ZTUyMDhjZGJiNzIwZTAzODI1MTNmZjZjN2I2ZjVlNzQzYWViZDggbGVnYWN5LXRydW5rCiszNDYxNiAzN2M3NzYzZmE4M2RmYTY0M2YzZTdjYzNhMzcwNDM4YjIyMTRiNjI2IGxlZ2FjeS10cnVuaworMzQ2MTcgOTYxNzBmNzVlM2U5ZmVmZDgyYTM1ZWQ1MGY1NjZiNjM2YmJiNWQ3MyBsZWdhY3ktdHJ1bmsKKzM0NjE4IDMwOTZmYWIyYTE5YzA1NGI1OTRiYzJiNTY4OTMzMGQxMmUxOWE1NTggbGVnYWN5LXRydW5rCiszNDYxOSA4NWYzODM2NTE4ZmU1ZDE2Njk3ZmQxZjNmODdiOTQ1ZmU2YmU3Nzg0IGxlZ2FjeS10cnVuaworMzQ2MjAgNjAzNzA0MGEyY2NlNDcxMjRjNTUzZDEzYWZjOWNkZjcxYzM1YmY1MCByZWxlYXNlMjMtbWFpbnQKKzM0NjIxIGIxMzYzNTNhZGRlNmE2Y2ZhNWY4MjY2YWIwYzY0YTc5NWE3NDQ3YzkgbGVnYWN5LXRydW5rCiszNDYyMiA1MTBiZDdlZWE5MjVmZTEwZmM3OTJkNmZlZDliYjViMWU1ZWJkNTIxIGxlZ2FjeS10cnVuaworMzQ2MjMgZDI2MTgzOWVjZjg3Y2Y4M2UyMGU0Zjk3NjMxNzliMGI2MTYzNGE1YSBsZWdhY3ktdHJ1bmsKKzM0NjI0IDM5ZmE3YjhmY2MwNzdhY2E3MTRmMjgwMzhiMmJjN2Y1NmFhMDY0YjQgbGVnYWN5LXRydW5rCiszNDYyNSAzZDliMzZkNmFiODk4YjJhYTA5MTVkYTUxMWUyYWYzZjEwMDNmMWJjIGxlZ2FjeS10cnVuaworMzQ2MjYgY2Q3NjI0YjAyNWEwZmU4MmUyZTM2YmYyYzdjNTU1YzdmZmU3N2FlYiByZWxlYXNlMjMtbWFpbnQKKzM0NjI3IGUzZWJkNzQwZDFlZmI0ODY4YmZmZDE4M2M3NTNhNDBjOTcyMGQyMWYgcmVsZWFzZTIzLW1haW50CiszNDYyOCBhMjlhNTg1YjAzZDk2MGYzMTE0YTliN2U0ODAyYTBmM2Q5ZTJhMzQ4IGxlZ2FjeS10cnVuaworMzQ2MjkgNDMyMGNjYTRlZDg0MzgzNzcyMDk4NGE5Y2I2YTFjOTVjNGI5Yjk3ZCBsZWdhY3ktdHJ1bmsKKzM0NjMwIGQ0MzJmODJiOTg2ZmJmMWI0N2QxOGIxYmI4ZjUzNTkxMDhmNjQwNzYgbGVnYWN5LXRydW5rCiszNDYzMSA1NjdmYTA2NDllODM1ZTgxY2M0ZWI2OWY5ODM0NjY5NWVhMThiZWEzIHJlbGVhc2UyMy1tYWludAorMzQ2MzIgZjY0OGM3ZjFlOGI4NTk4YjMwMjJhODI4MDZlNTEwNmI1MGEwMmFkNSBsZWdhY3ktdHJ1bmsKKzM0NjMzIDgwODE2NDNjMzczZmZiYWUyMTU2OGUwOGJmNjdjNzg1ZWUyYjMzNzEgbGVnYWN5LXRydW5rCiszNDYzNCA4MTczM2M3YTk1YzhkZGU2MTFmMDcwZDEzYmM2YzI2ZmQyZDliZjQ1IHJlbGVhc2UyMy1tYWludAorMzQ2MzUgMTJjMjJkNmIxZWMwNjhiMDNiY2E2N2I3M2RiZWYyYzBkNWFkMjQyMyBsZWdhY3ktdHJ1bmsKKzM0NjM2IDhhYTkyMzdmNmRkNmFhMTA4ZTQ5YmM3OGViN2Q2ZjUxOTIyOTI3Y2IgbGVnYWN5LXRydW5rCiszNDYzNyBhMTgxOThmNDk0ZjQ0NzhkZGUyMWI4MzM4ZTdhOTFiNjEwZjUwYzU0IHJlbGVhc2UyMy1tYWludAorMzQ2MzggMzIxM2FhYTgyYzdiNzk2YjNjOWZiMWMzMzZhYzJlYjIxNDE4MWFiOSByZWxlYXNlMjMtbWFpbnQKKzM0NjM5IDA0NjhmOWRkYzA2OWQ2ZmYwZjNmYTc2OTYzNWQzMTVlNmUwNDhkODggbGVnYWN5LXRydW5rCiszNDY0MCBhMGVjYWUzMzMyYThiNmIxYmQzMTA4MWVhMjU5YTAwMzhhMDJkMzY2IGxlZ2FjeS10cnVuaworMzQ2NDEgN2E2YjFjOWZiODllNTQwZWRjZTZjODQyZGEwZDkzZjM2NTM3Yzk4MCByZWxlYXNlMjMtbWFpbnQKKzM0NjQyIDg3YzA0MjJjZGU3MDhjMzY4ZWEyNjY0OTA2NjMxODdjZWE0NGQzMDUgcmVsZWFzZTIzLW1haW50CiszNDY0MyA1MjY2ODI0NTZhOGQ1YTY5MTdmMTE2NGQwMjE3YWY5ODliODQ4YzBkIGxlZ2FjeS10cnVuaworMzQ2NDQgOTY1NGU1ZjI0NzNlNGY5NDk3MDIxMjBlOWNiN2QzMDA3NjMxYjg0MCBsZWdhY3ktdHJ1bmsKKzM0NjQ1IDVjNGNmZjhmYTZlY2Y5MWM0ZDQ5OTBlN2M2MjZhZGVjNzIwMzg1NTkgbGVnYWN5LXRydW5rCiszNDY0NiBjMDBiNWYxNzk2MzNjZWJlZGUwODhhMDk0M2IyZWM0MzI5ZjhlY2IzIHJlbGVhc2UyMy1tYWludAorMzQ2NDcgNTRmZjY4ZTk3M2VlYmFlMGQ5OTBlMWJlNTMwNmIzNzRiMGY0ODQyZiBsZWdhY3ktdHJ1bmsKKzM0NjQ4IDI4NzIwMGFmOTQ2ZmI3YmQ1MTczMzg4OWE4OTU4YzZhYjBjMTViZTggbGVnYWN5LXRydW5rCiszNDY0OSBmYTZlOGQ0Zjg4YzY3ODI4MmU3MTZkZTBkNTk0MzlmNjI1MjBmMjQ1IGxlZ2FjeS10cnVuaworMzQ2NTAgN2Y2OTVjNTk4Mjg3M2I5MWVjN2U1ZDRiNWE3YjhkMmQzODQzY2MzZSBsZWdhY3ktdHJ1bmsKKzM0NjUxIDE5ZmY5NzI0MzRiM2QyNjFiZmMzYzMzYzhkM2ZiMWI3OTMyZDAwOWIgbGVnYWN5LXRydW5rCiszNDY1MiA0ZWZmY2JmODBiNDVjNmU0MGY0NTE3ODBkZTQxY2E5NDRhMmMwMDYzIGxlZ2FjeS10cnVuaworMzQ2NTMgNWQyYjBlOTA2MmQ1MzM3ZDA2OTc5YjIyMTMyM2I2MzEyZDhjNTM3NiBsZWdhY3ktdHJ1bmsKKzM0NjU0IDg5NDFmMmVlOTA5NDlmMDNlMTE0NTkyYjRjMTI5YzYzZTE5OTUyNDAgcmVsZWFzZTIzLW1haW50CiszNDY1NSA1MWViZjU0NzRmM2RjOTg0ZjFjYzhjYTliMDk1OWZkOWQxN2JiNjFkIGxlZ2FjeS10cnVuaworMzQ2NTYgODEzYTZkOWM1ODg4MjkwN2E4OTkxZjcyMDVjYTMzZGQxYjM5YzQxNSByZWxlYXNlMjMtbWFpbnQKKzM0NjU3IGIyNDk5NWE5NjY0YmQ1NDg0MGFmZjM4OTRjYzFmNWY4ODM5MzI0OWUgbGVnYWN5LXRydW5rCiszNDY1OCBiZjEzMTk1ODFkYzQ3OWY5Y2JhMGEyMDE3ZDZiZmQ4ZjYyYjcyMmRhIHJlbGVhc2UyMy1tYWludAorMzQ2NTkgY2I3ZDVlMjNkYmM3N2YxMDQxNDFmNjBmMDU4NmQ5YzUwNGI0ZDFkMyBsZWdhY3ktdHJ1bmsKKzM0NjYwIDcwMTg4MGQyNjZlY2NiNDgxMzA0Y2JiZTQ2N2Q2ZDc4NDU1ZDJiNWEgbGVnYWN5LXRydW5rCiszNDY2MSA2Y2EwZGJkNmNjYzk4YTE5NmVlYmY3YTlkMjZjYjUzMzdlNzFlYTgyIGxlZ2FjeS10cnVuaworMzQ2NjIgNjI1MTdjYzRjNGU3OTIwMzAxZjI4NWYxOTcxYjA5ZDI1YzY5OWMzZiByZWxlYXNlMjMtbWFpbnQKKzM0NjYzIDdiZTQ1ZjdhNzE4ZjM1Njk0NDEzNGIzMGVlYzdiYzcwMGEzZGY3OGUgbGVnYWN5LXRydW5rCiszNDY2NCBmNzI5YzRkNTMwNDhhYzIyNDMyNzI1ZWU5ZDQzZjE4Mzk2MTY5OTcyIHJlbGVhc2UyMy1tYWludAorMzQ2NjUgNWY0OWZjMjMxYjRjODg1ZjEwNTA1MTFlNjM2MGVhODlkODVhNjY3ZSBsZWdhY3ktdHJ1bmsKKzM0NjY2IDIzMzgyYTEzNGQ1YWI2MWE4MGQ1OGQ4YmU5NGNkYTgwZGQxMWUxMmEgcmVsZWFzZTIzLW1haW50CiszNDY2NyAxZGEzOWE3NWVkMzg0YThhMTNkYTQ5Mzk5NzM3NWRhMzUxNDNlMmJhIHJlbGVhc2UyMy1tYWludAorMzQ2NjggMzhlNzJmNGYzZGY1ZTk4MTBlZWZmZTg1ZmYzZjJhMjY2ODU5ZmUzYSBsZWdhY3ktdHJ1bmsKKzM0NjY5IDExNjM2ZTc5ODdiNjM3ZmVjMWJiNmExNGRiOTZlMDk4NDhlNDhiNTYgbGVnYWN5LXRydW5rCiszNDY3MCA0NWY3MDcyOGRiYWM0ODA4MGU0YWUwNTk4MTRlNDhiMjA4YTFhNmZlIGxlZ2FjeS10cnVuaworMzQ2NzEgMzMxMzU3MWM2NTc0M2E5ZWM0M2NiOTZiMmM4NGUxMTM1MGM2ZTRmOCBsZWdhY3ktdHJ1bmsKKzM0NjcyIDhmYTNjNTg2OWY1MWE3YjVlZGI4ZWZjMTUzZTY5ZThlZmNlODI1MGQgbGVnYWN5LXRydW5rCiszNDY3MyAwN2QzYzg2NjhmOGI0NzFjOGFhZTFhMmU2MDliNGUzNDg2NmY4MzdjIGxlZ2FjeS10cnVuaworMzQ2NzQgNTNkMjgxMzM5NWY0ZWY4MDY5ZTQ0ZDgxODc0MzhjZTIwNzFmM2Q2NyByZWxlYXNlMjMtbWFpbnQKKzM0Njc1IDdhYWE0MGJjMmIxN2M5NGRmMmMwNTdlZGYzODEzYTEyN2RhMjMwNGYgbGVnYWN5LXRydW5rCiszNDY3NiA0NmI5ZmRkMjdlYzIxZmJmYTdkYWJhZDMwYTcyNmJmYmZjNzAwNDQxIGxlZ2FjeS10cnVuaworMzQ2NzcgMTkwNGQ4YjAzOGI2NjhkOWU5OGRiNmJkYmQ3NDBkZTE0NmEwZDgyOCBsZWdhY3ktdHJ1bmsKKzM0Njc4IDhhZmVjZDM2ZmI4ZTM1MTU3NzAzZDQ0OTBjMTNiOWQ0MTM4YjBjMjQgbGVnYWN5LXRydW5rCiszNDY3OSAzMTdmY2M1YTE4NGQ0OGI4OTQ5NTVhZWQ1ZThkYWVjMDEwMjQxYmQ1IGxlZ2FjeS10cnVuaworMzQ2ODAgMjIxMDdjNWExNzZlMzEzMzhkYjg3MjYzNjZiNWQ3NTk0MzZmN2I2MiBsZWdhY3ktdHJ1bmsKKzM0NjgxIGYxOTYyNWYzYzE5OGVlZjRhMDI0MzFlZGZlZmMxNjI0NmMzY2M1YWEgbGVnYWN5LXRydW5rCiszNDY4MiA1YmNlOTU4OWVmMGIwMzZhOTcyMThiNzhjMjVjYzgxNDcwZDZmMGJiIGxlZ2FjeS10cnVuaworMzQ2ODMgNGVkYWJjMjk3NmY3M2ZjNTEzMjhiMjU0N2NlZjEzMjcwMTc1MDA2YyBsZWdhY3ktdHJ1bmsKKzM0Njg0IGRkNmE1MTBhZTBkOWMwOTk0NDM0NzBiMTdjMTRiZDY5NGQ3ZmFkNjggbGVnYWN5LXRydW5rCiszNDY4NSAzYzFjODFkNjQyZTA4NzdlYzkwMDU0OWExOWQwZDcyZDVjZTQ4MDE2IGxlZ2FjeS10cnVuaworMzQ2ODYgYjZjMTM5NTQ0YzE2ZDZhYjdhMjQxMjU4ZGMxNTRhZGIwNDY3ZjA4YSBsZWdhY3ktdHJ1bmsKKzM0Njg3IGU0ZjllNzRiYTU2ZGM4NTdjY2FmNjg5NDNkOTIzNThiNGFlY2FkMDEgbGVnYWN5LXRydW5rCiszNDY4OCAxNmM2ODJlM2U1N2Y5ZWYyODAyMzNjMjEyNmQyMDRmZDU3OGZkYTAyIGxlZ2FjeS10cnVuaworMzQ2ODkgNGIyYzllMTRiNDQ2YjY0NmRlOTBiZThhNjMzZTBlMjhiOWI0ZTM0MCBsZWdhY3ktdHJ1bmsKKzM0NjkwIGNlOTZiZGM2ZmJiOGQ0MDk2Y2MyYmRkMjBlZTk3NDFiNjRmYjQwOTkgbGVnYWN5LXRydW5rCiszNDY5MSA1M2U0YjdmZTA5NjljMTQ2OTMyZmRjOTAzZTIyNjdiN2VmY2ViN2M2IGxlZ2FjeS10cnVuaworMzQ2OTIgZDEyZjA3YzFjM2EwNzA3MzA4MTE5MDM5ODI1ZDgyNzE5MmQ1NjkxOSBsZWdhY3ktdHJ1bmsKKzM0NjkzIDRjZTMwZDlhMWUwNDE5YmRmOTNkOWE5NmVkN2M3MmMyNDA1MzdiZTcgbGVnYWN5LXRydW5rCiszNDY5NCBlYWQ0YzYxMjE5ZDBmMGMxNzYxYTI3Yzc2MjA3NjU2ODM5ODI0YTgwIGxlZ2FjeS10cnVuaworMzQ2OTUgN2ZlMjAxODAxYzE0OTlmODg1MTU4ZDg2OTc1NDRjYTI2OTczZWU3MCBsZWdhY3ktdHJ1bmsKKzM0Njk2IDRjODE2MDA4OGIzNDc1NGFlNzJhYWJhMzkyZTNlM2Y0MWM1M2QyYzYgbGVnYWN5LXRydW5rCiszNDY5NyA4NmZkZjhmZTdmMTcyMGQxMDYxNWI1ZWJjNWM1MWRiZDIwYWU3MWMwIGxlZ2FjeS10cnVuaworMzQ2OTggODkwZjNjMmMxMTgzMDA1OTdiNmI3MjU2ODRiZDYzYjI3Y2EwMTZjOSBsZWdhY3ktdHJ1bmsKKzM0Njk5IGViMDQyNjVmYjY1Yjg2YjY2NmE0ZmRhMjU0MjJjNzZiMjc1MTZkMmQgbGVnYWN5LXRydW5rCiszNDcwMCBlNTQzYjNmMGQ5MDYwMmUyNjVlMmFjYzRiZjhiMWE2NTIzMmFhZjUwIGxlZ2FjeS10cnVuaworMzQ3MDEgMzM0ZWRjZDFlNWFjNjEyNTJmMzAwZThkODFhZTVkNjBmMDJjZjI3MyBsZWdhY3ktdHJ1bmsKKzM0NzAyIDgzMGU1ZmZjNmQyNWM3MDRmOGVkYTBiOTg0ZWNhNTlkMTg2M2JiZjQgbGVnYWN5LXRydW5rCiszNDcwMyBmZGM4YTg4YTlhNWE0MzQ0ZTRhYmY1ZDA4ZWQ5MTY4MDU3ZDNkOWM4IHJlbGVhc2UyMy1tYWludAorMzQ3MDQgOTYwMDFhNzBjNTA1N2YwYjZmOTE1MTU4ODU1ZWE0Mjc1MjNmYTcwYiBsZWdhY3ktdHJ1bmsKKzM0NzA1IGQ5OWUwMjI5NjZjOTQzOGM1ODhmYzY4Mjg2MGQ4Y2NhNGI2ZmE1YzggbGVnYWN5LXRydW5rCiszNDcwNiBjYWExYTQ4ZGE0Y2NkZmNmMGI2ZDEwZjNlNjMzZmFmOWI2ZTFmNDRiIGxlZ2FjeS10cnVuaworMzQ3MDcgNGY2MzgyZDI4MDlkZjRhZThjMjM2M2Y3MjM0YzA2YTcyYmI2MThmNyBsZWdhY3ktdHJ1bmsKKzM0NzA4IDgzMjZmNjQyNDRjMjVhYmZjN2VhNWMxMGZiYzA0ODMwYzhhODIxNzUgcmVsZWFzZTIzLW1haW50CiszNDcwOSAxNGQzMjE0NjZhMDY5MmYxNDljM2M1YWYzNmYzZWMwMDFjMDNlNmJkIHJlbGVhc2UyMy1tYWludAorMzQ3MTAgZDQwMTc5MDE3NjM5NWQ1OWVhNTQwNmIzOGRkOGEwYTYyNzQwOWU4OSBsZWdhY3ktdHJ1bmsKKzM0NzExIDUyZGU1ODA4N2IyZjNhNDVlY2JjZmQ1MzE1MTE1NDkyYjdmYWQyODkgbGVnYWN5LXRydW5rCiszNDcxMiA2MzJiMjIzY2I4ZTgzODc4OGM5MzQxMzdkZDU3OTM5MjdhZmIyNDcwIGxlZ2FjeS10cnVuaworMzQ3MTMgZDQ4MjZlMDk3YTNmZWJmMjg0YjhmMjlhNWJlYmQwOTFiYWQ3MzI1NiBsZWdhY3ktdHJ1bmsKKzM0NzE0IDlmYzUzNDFmYTY5NTZhODMzYmNiYTI3NDgyYzg4NjU1NjZkMTk5NGUgcmVsZWFzZTIzLW1haW50CiszNDcxNSBlMGE3NWE3NTcwYjQwMjg5ZjhjNTRmMzgyZjAxYjBhNzM4MDRmOGQwIGxlZ2FjeS10cnVuaworMzQ3MTYgMThkZjIwM2I4ZTk4NTQ4MmE0ZWI3ZjMwZTljNmVhMTllM2FhZmY3MiBsZWdhY3ktdHJ1bmsKKzM0NzE3IDRkYTk5ZjczYTFkZjg0ZDEyMzYyYThkMjdmZmZjMDhhMDYyYTM4ZTUgcmVsZWFzZTIzLW1haW50CiszNDcxOCAyMmJlZDJmZGZmZWE2Yjk2NTg0YTMyZDk2NzQ2ZGZiYzBlNjcxYjA1IHJlbGVhc2UyMy1tYWludAorMzQ3MTkgZDkwMTU4ZGYzOWM0NTMxMmZkZmUwYWI1MDhkNzZlNmQ4NzJlNDE3YyByZWxlYXNlMjMtbWFpbnQKKzM0NzIwIDYyMmE3NmJjMDIzNzY5MzliMGFhNzg3OTFlODcyYmI5NWQwMmJjZDQgbGVnYWN5LXRydW5rCiszNDcyMSAyNzg5NzZiMTlkY2NhNmY4NDczYzg0Y2ZiM2M1MjQ2MGQ2ODNhNTgxIGxlZ2FjeS10cnVuaworMzQ3MjIgNWI3N2JjNGQyNWIxYjlkZjU5ZjdmOTBjMGM3N2I5NTM3ODhjYWJiYiBsZWdhY3ktdHJ1bmsKKzM0NzIzIDQ2OTZjNGI3Zjc5MmIyYTdhZmYzYTI4NjRkNTE0YTM3YjY5ZTg5Y2YgcmVsZWFzZTIzLW1haW50CiszNDcyNCAxZmQ4MTg5NGNiOTczZjJmZTQyNWJmYmE0ZDA2ZWVjODRiMzcyODNjIGxlZ2FjeS10cnVuaworMzQ3MjUgNzUzZDcyYmQyMTRiMmM1ZDJmODg2YjE2NTI3MzE0NDQ3ODUzZmI3YyByZWxlYXNlMjMtbWFpbnQKKzM0NzI2IDQyMjRkODA3OTExYzRhMDlmMDJlY2ExYTI0ZGRkOTg3NmYxMzQ5YjEgbGVnYWN5LXRydW5rCiszNDcyNyA3MGYzMmYwZDhlY2YwNjU5YjVmMWRjYWQ5NGE3ODVmZThjNzFmODc4IGxlZ2FjeS10cnVuaworMzQ3MjggMmRkYjFjYmExOGQ2NDM5NmQyN2E0ODk1Njk5YTg4ZjNlZGYxYWUwYyBsZWdhY3ktdHJ1bmsKKzM0NzI5IDk2MjhiYjU0YTllMDc0Y2EyMmEyODU2ODIxMmUwN2NmZTdhOTMxNTMgcmVsZWFzZTIzLW1haW50CiszNDczMCA0NmRlM2RiOWE1ZGI1MzQ0YjBkMWFiMDUwODMzODEzZDdjNjRiZDQ5IGxlZ2FjeS10cnVuaworMzQ3MzEgMzJjMmM3OTljOTI0OGUzYTNkNjBhNWExYmQ4NzkzMDQwZTY3OGVkNSBhc3QtYnJhbmNoCiszNDczMiAyNzBkNTllMzQ2ZTZhZjg5NDk3YWFhODFhMTBlZTIyMzdkMWI0MmU2IGxlZ2FjeS10cnVuaworMzQ3MzMgYzQxMWE3NjJkNWRkNmEyZWE2ZjZhZWNkZmU4ZmNmNDdjMDllNGY5NyBsZWdhY3ktdHJ1bmsKKzM0NzM0IDhkNDEzNTc4ZWIxYWMwYThlNjM5NzFkZTkwMmQ2MWYwN2FiMjJhY2MgbGVnYWN5LXRydW5rCiszNDczNSBhNGI5MTNmOTM3Y2RjOTE3YWMxM2Q2MjY5ZGYxMDljOTYwYTEyNjY5IGxlZ2FjeS10cnVuaworMzQ3MzYgMTdhYTUzMDJlMDhiMjE3ZDA3NTFlNTQ0NjdhZGNiNWM2NTE5NTc4MSByZWxlYXNlMjMtbWFpbnQKKzM0NzM3IGJjYzc4NzNjNzA3ZTUyZWFmZTE1Zjg2ZTVkNjEwMTcyOTFlMjg3ZGUgbGVnYWN5LXRydW5rCiszNDczOCBiMmZkN2FmMTcxODY5MDZmMzNlNGRiODFmNGRkYjQ2MmZlYzA1NmJhIGxlZ2FjeS10cnVuaworMzQ3MzkgZDJlYWE1M2NlYWJlZTJhM2NjY2M3ZGVkMDFjNjkzN2FkZTA1OTNlNiBsZWdhY3ktdHJ1bmsKKzM0NzQwIDIxYTEwYzM2MDBiNWM0ZDQ3OTI0Yjk4Y2E4MGU1NmJkZjM3N2U5ZWEgbGVnYWN5LXRydW5rCiszNDc0MSA4NDVmMTliMTQ1YThmYTBmMmNkNGYwZjM1OTRhZjZlMWU3Y2M4YmE3IGxlZ2FjeS10cnVuaworMzQ3NDIgODVjYWJlN2IyMTZiN2JkMDU1MzFhNzQ3MjQyMjhlMjdkYTZkODIxYyBsZWdhY3ktdHJ1bmsKKzM0NzQzIDBhYzQwOWRmZjM5MDkxNTlhOTcyNjYyMzk1MjM2ZmZmOTZmZjQ5YjMgbGVnYWN5LXRydW5rCiszNDc0NCAyYjZhMTBlMDY3MjczOGJlYTJkNjM0ZmNhZmQ5ZjBhYjJkMjVhMWE3IGxlZ2FjeS10cnVuaworMzQ3NDUgMDI0YjQ3OTlhNDFkNTI1MTc0NTVjZTg1ZmVjODkyNGRkNDY5Y2IwMCBsZWdhY3ktdHJ1bmsKKzM0NzQ2IGJmMDM4OTg2Y2I4ZmRmMTI2ZmFkZjUzNTZlMDgxYzdmYmMyZjE0YTcgbGVnYWN5LXRydW5rCiszNDc0NyBmOTY3NTg5ZGY3NTEyNWE3ODk4NmVmOWNkZDUxNGFiZDdjNzQ3MDU1IHJlbGVhc2UyMy1tYWludAorMzQ3NDggY2UwNzExOGVlNWQyNzdkY2QzNWZkZTYzYjMwOTIwYzQ3OWNhNjE5NCBsZWdhY3ktdHJ1bmsKKzM0NzQ5IDdjNTVlYmVjNDhmNTc3YTVkYmJhODBjNWQ1NmJkNjBlYjNiNTQ2N2EgcmVsZWFzZTIzLW1haW50CiszNDc1MCBkYTE1NzhjZmFlMTgyZTU0YmIyNjZiOTBmMjA1ZjUxNDZjMzcyY2JiIHJlbGVhc2UyMy1tYWludAorMzQ3NTEgNmQzZTBlNmQ3YmU2MTU5OTg0MTI1ZDg1YjU2YjE2Y2UzMzUyZWMwMSBsZWdhY3ktdHJ1bmsKKzM0NzUyIDRiNmM3ZTVjYjg4OWIzM2Q4MTFlYzQwM2VlODQzOGQwMTNlZTljZDMgbGVnYWN5LXRydW5rCiszNDc1MyAyYzNhNzVjNTQ4MzM0OWI4NGNmMzQwODM4YWI4YzNlYjY0M2E5ODkyIGxlZ2FjeS10cnVuaworMzQ3NTQgZmFkY2ExNzE2NGMwNmM2MjI0M2IzMmU4ZTAzN2FlNmE4NmVkYjc5YiByZWxlYXNlMjMtbWFpbnQKKzM0NzU1IDQ0YWIyNDJjOWI4Y2Y1YWVmNWM4M2Q4MzQ4ZDY5NjAzOTc1NDNlZjEgbGVnYWN5LXRydW5rCiszNDc1NiAyZDY5MGE5NWU0ZmQxZTAxZWE0ODFhOTZmZDhmNmE5ZmI1NzFiNTg3IHJlbGVhc2UyMy1tYWludAorMzQ3NTcgZjcxYTIxNjc5NDM2YTUxMGNjYzQ2NTI5ODg1NWJiZmVkOGM5OTcxNiByZWxlYXNlMjMtbWFpbnQKKzM0NzU4IDZjZjA5YmUwNDkxZGU4NmJlODMzNjdmMDNlZjc1ODdmZjA5Yzc4M2MgbGVnYWN5LXRydW5rCiszNDc1OSA0MDA5YjM5OTI2MTZhMGQ2MGMzNThhMDI1ZDQ4NWM4MTAzMTFjNDBlIHJlbGVhc2UyMy1tYWludAorMzQ3NjAgNmYwMTcwMGMxODA4OThkZWMzZWQxMzdkNjA0ZjFhNzBjZmRlMmI5NSBsZWdhY3ktdHJ1bmsKKzM0NzYxIDljODQ2YzNkZjZmM2UwMjRlMGVhYWI0ZGRhNWI5YTM4OGJiZWRmNGEgbGVnYWN5LXRydW5rCiszNDc2MiA3M2Q1MjEzMzA1ZDM3NmQ1MDQ5Yzg0OGQ1OGIzN2MzMTBlZmUxZmI1IGxlZ2FjeS10cnVuaworMzQ3NjMgNmRjMTllNDgzNDdhMGI3OGYyNmI0NDc2YjI2ZjkyOGM2ZDdiY2YwOCByZWxlYXNlMjMtbWFpbnQKKzM0NzY0IGRkNTcwN2Y3MTUyNmFjZTk0YmE4NTU4YmExYTBiYWYwOWJlOGI1ZTIgbGVnYWN5LXRydW5rCiszNDc2NSAwZmY2OTI1OWIwMDVmNDczZjRmNzk1NmIyMGVkNDA3YzUxNWVlMmMxIHJlbGVhc2UyMy1tYWludAorMzQ3NjYgZmQ4N2NlMTgxOWZhMzc4YjIyNWRiMWExNzZiNDBhOThmZDRiZTBjMiBsZWdhY3ktdHJ1bmsKKzM0NzY3IGQ1MGUyNmYyMGYxMDg0ZjlmZGYxZjUyNmMxOWMxYjA5NzA5MTQxNTUgcmVsZWFzZTIzLW1haW50CiszNDc2OCBmNWVhYjYyODMyODY2NGZhODMwMzRiN2E2MDU3N2E5ZGZmMmZhMGYwIHJlbGVhc2UyMy1tYWludAorMzQ3NjkgMzU0OGYyMzQ4MzFlMDk5ZjE5MDUxMWI3ODI4NjlmNjFkZDM5MDYzNiBsZWdhY3ktdHJ1bmsKKzM0NzcwIGQzYWUzMjRmNmM4OTVmYTBiZmE5MGJiYzIwNDQ4MGU3MDkyNDgzZTMgbGVnYWN5LXRydW5rCiszNDc3MSA0NTZlMjc0Zjg2MDI2MjY2YzA2MWZkNjk0MmZmZjRiYzE4NzJlMTg5IGxlZ2FjeS10cnVuaworMzQ3NzIgNWRlYTczZGM5NjhiODQyN2RmOWUwZTdiMTkyYjZjMDU4M2I0YjYxNiBsZWdhY3ktdHJ1bmsKKzM0NzczIDNkMWYwZGY3NWE4MGM2Y2I1ZmQyYjBmMzhhZTMxNDU5N2E4M2MxOTUgbGVnYWN5LXRydW5rCiszNDc3NCAzODMzOGM5NzBmN2QwNzk5ZDM3OWVlNjExMWE0OTI4MDEzZjViMWIyIHJlbGVhc2UyMy1tYWludAorMzQ3NzUgMjUxNzE3NTY2ZTkxMmY4YmZhZmUyNWIyYTYzMDk5YmY5NDNkYWEyZiBsZWdhY3ktdHJ1bmsKKzM0Nzc2IGY2OTU4OTE3OWM1NTljMDU4ZjFlZTU5NmU1MGNmMTczYjFmOTQ1NzEgbGVnYWN5LXRydW5rCiszNDc3NyBiZjdkZjQ4MDEyY2IyYTY4MTNkZWQ0MTMyMTJkYWIxMDgxZTgyZWNhIHJlbGVhc2UyMy1tYWludAorMzQ3NzggNGUxMTI1MDU2NGNiZDNmMDYzNWE0Yzk0MDk0ZmUwMTRiNDc0MzFhNiBhc3QtYnJhbmNoCiszNDc3OSBkNmM3ZTU1OTYyNDdlYjA4OWI0MzMxZjhmZWYwNjc4NWUyYTMxOGUwIHJlbGVhc2UyMy1tYWludAorMzQ3ODAgNGEzNjFiYmI1Mjc4Y2E1N2UyYjNjOGI3N2ExYzg0MzZlMGEyNzc5NCBhc3QtYnJhbmNoCiszNDc4MSBmMGExOTdkZDIxMmQ1Mzk0NDJiYzdhNjAwNmMwNmNkY2U2ODcwOGNlIGFzdC1icmFuY2gKKzM0NzgyIGYxNDMzZDNjNjQ0N2Q3N2M2Njk2M2FlOWYyZWZhYmI4MTVhMzc1NTIgYXN0LWJyYW5jaAorMzQ3ODMgYjBiY2NiOWZiNzBhOGIzYTVjNjNmOGRkZmQxMWM1MzdlMTE3YzIzMyBhc3QtYnJhbmNoCiszNDc4NCA2NGRkZGEyNTU5NTI0YWQ4MTNhYzEzNmIzYTI5YzVlYmRlMDdiNDA3IGxlZ2FjeS10cnVuaworMzQ3ODUgNGUzMWMyNjFhNjY4OTVjNGQ0MDY2YjkxMTA2ZDM2YTI4YmQ3NWZmNiBsZWdhY3ktdHJ1bmsKKzM0Nzg2IDBhYzk4ODc4Y2MzMmI1Yzg3YzdhMjI5OTVhMDcyN2IzMzE0NWRiYmUgbGVnYWN5LXRydW5rCiszNDc4NyBlMDVmZTE3NzU1MjA2NGUzMTk4NjFkMDc4NjA2YTVjNmFjOTgxMzdkIGxlZ2FjeS10cnVuaworMzQ3ODggZWI1MDlmYzQ3ZjA3NTA4NjhhZjljZDYxMTA1NDJkZDE4Y2M1MTJkMyBsZWdhY3ktdHJ1bmsKKzM0Nzg5IDQxZjRjZTZjNGU1MDRlMzI0MWQyYzJkYTYyNzFlZWY5ZTlhZmU0ODkgbGVnYWN5LXRydW5rCiszNDc5MCBhMTAyZGE5MTY0MGUzNDZhOWY5ZGZjODJmNTliNzkwMDQzMmQzY2E0IGxlZ2FjeS10cnVuaworMzQ3OTEgMGVjNGQzZWJkNDMzN2YxZDhlNzk4ZjBlOWY3MzQzYWY5MjkzM2E4NSBsZWdhY3ktdHJ1bmsKKzM0NzkyIDkzMTRiZTBiYmI2NDAxOWI4ZDk3YmM1OTRlNjgxMDZiY2ZjMDZjZDggcmVsZWFzZTIzLW1haW50CiszNDc5MyA1YTA2NThjMDA4NzlhYTM1ZjMzYzhhNDE4OGIzZDRjNWEyOTM1YjNhIHJlbGVhc2UyMy1tYWludAorMzQ3OTQgNzgzNjk0ZDRkNGNmMGNmZGRiZDI0NWJlMzBiOGQ1N2FhODdiNWFjOSByZWxlYXNlMjMtbWFpbnQKKzM0Nzk1IGQ0NTE0Y2UxNGI5NjdmN2Q5Njc5OGEzMWY1OGUyNWNiNjYzYTZlMTkgcmVsZWFzZTIzLW1haW50CiszNDc5NiBkYTE0ZDgwNmU4OWM3NTJmNmE3Mjk0YTNlNGE2OWJiMDc0ZWM0NjcwIHJlbGVhc2UyMy1tYWludAorMzQ3OTcgZGUyODU1YjNmNDEzNmJmMWNhMGI3N2IwMjg4NWI3ZDU0YzhiYTFlOSBsZWdhY3ktdHJ1bmsKKzM0Nzk4IDQ4Njk1YzgzOWQ5OGIzYTI3MmM2MDkzMTA0OTVlYTExZTYyYTg0NmEgcmVsZWFzZTIzLW1haW50CiszNDc5OSA1YjUxNWNjOTBiNWE0M2VmZTQyZjQ2MzEyYjZiYWUxMGVmMDA5M2M0IGxlZ2FjeS10cnVuaworMzQ4MDAgYTUyZDc0OTQ4ZGQ0ZjRlM2ZiOGVmMTEyYmJmNTQyZWNkMWRmMjQ5YiByZWxlYXNlMjMtbWFpbnQKKzM0ODAxIDJhNmZjNGQyNjFmOGU2OGRhYjk0OGE3ZDY2NWZkYTUyZDRmYWM4ODEgbGVnYWN5LXRydW5rCiszNDgwMiAyYmE5YTg2OTY1NjAyZDhlMDU0ZTBmMmQxYzg0NDJmYTJkYzMwYmIyIGxlZ2FjeS10cnVuaworMzQ4MDMgNjIyOTkxY2MxZTNjNThiNTFjNTUyMWEzMmE4MTljZDllMWJlYWQ4OSBsZWdhY3ktdHJ1bmsKKzM0ODA0IDM2MDYyZDY0NWZiYjk1NjM1ZWJlYjUwMTU4MjdmMmFlNmQ3Y2ZkN2IgbGVnYWN5LXRydW5rCiszNDgwNSA2ZWI0NzNkNjgwNDI0YzU0NDg2ZjljMTNmZTM3ODM0ZjZmMzQ5ZDM5IHJlbGVhc2UyMy1tYWludAorMzQ4MDYgMWYwOTgxOWY1MDhiMjVkNDU0Y2I3ZmVmYWExODMwYjNkYTNjNzM1NyBsZWdhY3ktdHJ1bmsKKzM0ODA3IGQwMGYwMTIwNzgzN2I2NzIyNWY0ZTlhYmI4Mjk4OGVhODQyNGM4ODIgcmVsZWFzZTIzLW1haW50CiszNDgwOCBlMzAyNWZlNzBkOGJkMDRmNzIyZTczNzkyZjg4YzRkZDZkZWY3OGY3IGxlZ2FjeS10cnVuaworMzQ4MDkgYTJmNmM2YTY3ZjI0MTQwOTljYzcwMTkzYmI2MDM4Zjc1YjYwNzZmMiBsZWdhY3ktdHJ1bmsKKzM0ODEwIGIyNGQ2YTcxYjAxZjEyNjU5OGYwNmVmMDQ3ODIyMTBiOWU2NjMzYjUgbGVnYWN5LXRydW5rCiszNDgxMSA4ZGQxNTkyNzk1NzZhNTc0N2UzZjJjZTdkNTdkODFiOGVkOTllYWFhIGxlZ2FjeS10cnVuaworMzQ4MTIgODcwNjE1YmZhZWRmYjllNGIyZTljM2ZkNTk0NmJjOWJmOGM4Y2U0ZiBsZWdhY3ktdHJ1bmsKKzM0ODEzIDJmNzk2Yzc1OTZlY2EyM2YxOGMxOTRkOGE2YzEwN2Q5M2Y2Y2FkYmMgbGVnYWN5LXRydW5rCiszNDgxNCAwYTdmMWE1M2M3NzNiNGFjMWY1YzhkNTJiMjM3NWExZTU0NDg4OGQzIGxlZ2FjeS10cnVuaworMzQ4MTUgMzg2MWViNDY3YzI5ZTA3YmE2YjM2Njk3NjBkZGY3MmNiMzNiNDQ4YyBsZWdhY3ktdHJ1bmsKKzM0ODE2IGRlMzkxZTlkNzBlYTE2N2YxZTgxYmE1N2EwYWIzYzY4Njc3MzFhZDAgbGVnYWN5LXRydW5rCiszNDgxNyBmMmU3NjQ2Zjc3NjMxNjFiYmRkZGYyNzZkNzQ3ZjU2ZmY2ZjRmMzEwIGxlZ2FjeS10cnVuaworMzQ4MTggOWNhOWQzMThhZjc4YjdkNWY4M2Y5NTYzN2VhMTlkOWJiMmRkNjIyNyBsZWdhY3ktdHJ1bmsKKzM0ODE5IDMwMzgyYWIwNmNkMWMyYzBiOTA0MjYzZDBmNDA0NDBjN2ExZjg2NjggcmVsZWFzZTIzLW1haW50CiszNDgyMCBkMzVmODc5OWNmMTIyMjA1ZGY1Zjg0NjZhM2ViMzIwNjJiNzg2Y2I2IGxlZ2FjeS10cnVuaworMzQ4MjEgMDNmNDNkNjE5ZmY0YjhhNTUwYTZkMWVjMzM4NmFhNWY3YjhiODI5NyBsZWdhY3ktdHJ1bmsKKzM0ODIyIGJkZjYwYmVhNDE3N2E3ODA0MmMwZjA5MjMxODM4YzQ0YzJkYzdhOTMgcmVsZWFzZTIzLW1haW50CiszNDgyMyA3NTkyMTRmMWVjNjkxMDcxNDFmOWEwMDQyNDk2ZmM2MmRlYjVjNzU4IHJlbGVhc2UyMy1tYWludAorMzQ4MjQgMTEzZWFmZTg4NDhmZjU4NzE0MWMzN2EyYjVhZGYxMDdjNDJlMWVmZiByZWxlYXNlMjMtbWFpbnQKKzM0ODI1IDYxYjcwZWI4ZDE2MGIzMTk1MTgwNGYzYjVjNjQ2NWM2OTRlOTgwNTggcmVsZWFzZTIzLW1haW50CiszNDgyNiA4NmNmMmI4MTBmM2EyYmU3N2I0MDg4ZTFhOTY3M2ExZjA2ZDFmNmM2IGxlZ2FjeS10cnVuaworMzQ4MjcgYzIzYTg2MjE1ZDlmN2UxNzUwZjliNWFlNGRlZDRlODYwMDdiZWUyMiByZWxlYXNlMjMtbWFpbnQKKzM0ODI4IDIwMTRmOWM2MzZmYmU3NTZhOTQ0YWUzN2Q4MDRiNDFhMDZhNjQ3OGEgcmVsZWFzZTIzLW1haW50CiszNDgyOSAwYTYzZDRkMDE1Y2Y5NTBmMTg4ZmJjZGY5MWJhNTU0NTdkNDY4YWNjIHJlbGVhc2UyMy1tYWludAorMzQ4MzAgOTE1YWEwZTY5NDg1OTg5ZTc3ZTk0NjA4OTRiMGM3MzdjZGFkNmZlNyByZWxlYXNlMjMtbWFpbnQKKzM0ODMxIGEwOTZkN2I4ZWM4YTI5ZTEyMDM2YTU4ZTU3MmI2NmM3Nzk0ZDRhMWQgcmVsZWFzZTIzLW1haW50CiszNDgzMiA5NzJlN2ZhMWQ1OTg2YTViMTc3MTY2ZDNhMTVhODkxZGU2ZTlkYWE5IHJlbGVhc2UyMy1tYWludAorMzQ4MzMgNDVjYjI4NGI4NGQzYWIyNjVhYTZmMjQ0N2E5ZTdmYWM2ZDU0YmEyMCByZWxlYXNlMjMtbWFpbnQKKzM0ODM0IGQ3NjMwY2U3YWE5ZmQ1YjEyMzVhNjUyZjM5OWNhN2Y5M2YwYTVhZDAgbGVnYWN5LXRydW5rCiszNDgzNSA5ZDYyNjY4OGNhN2JjZWIwNjJiYWYxYzRjYWUxYjlhMTRmNjUxNjVlIHJlbGVhc2UyMy1tYWludAorMzQ4MzYgNzQwM2UzOGEyZjEwN2M5YTlhODI0ZWU2NzdjMGFhNzkzNDUzYzVjYSByZWxlYXNlMjMtbWFpbnQKKzM0ODM2IGQyMWQ0YmEyZjk3MzQ2N2QzMDc5NGEzZDJhYzQ5MzY1ODE4MGU1MDMgcmVsZWFzZTIzLW1haW50CiszNDgzOCA1NjYzNTE5Y2YwNmZmNDNmZDI0MmU0YzVmNWIzOTc1NGI2NGZhNzkyIHJlbGVhc2UyMy1tYWludAorMzQ4MzkgZTk2ZTM5Y2QyZDE0MmIxZmMzYjU4OTgxODg1NWMwOTRkZDhmMjU5YiBsZWdhY3ktdHJ1bmsKKzM0ODQwIGJhODg2YWUzMjJlYzE2OWZkZmQzZjFkYmQ0NGMwOWJiZTlkMjNhZjMgcmVsZWFzZTIzLW1haW50CiszNDg0MSA2MGU1ZDhiN2U5NjRlNmNhOTE0YmNmZTRiOGViZTA2MDI3ZDc2NDgxIGxlZ2FjeS10cnVuaworMzQ4NDIgODM1Yjc5ZWFjODEyY2U5MDhmM2I2MGZkZmEzNDhiNjE4Mzg5YmJkZCByZWxlYXNlMjMtbWFpbnQKKzM0ODQzIDhlODBmNTUxYjBlOTY4MWM0NWJjZjg1YzhiYjhkODgzMWE4ZTBiYTkgcmVsZWFzZTIzLW1haW50CiszNDg0NCAzOGJlY2NmNGEwYmJmNzc3MGYwZWQ1YjhiOWU0NTliYzgxN2EzZWVhIHJlbGVhc2UyMy1tYWludAorMzQ4NDUgYjc3ZmQ0NjllZTM1NDFmYThmN2JmOWQ4MGEwY2FiNWIxYTE1Y2RjNSByZWxlYXNlMjMtbWFpbnQKKzM0ODQ2IDY5ZGU1YWVlMWZiYjUxMGQxZDU2ZTRlYTFmYTBhZDE5NWY5ZDNjYjMgbGVnYWN5LXRydW5rCiszNDg0NyA3YzhkYzY0MDQyM2E1MTQ4ZTE3YjM0MTM3YTc2NWM0MTM2ZDY4ZDM1IHJlbGVhc2UyMy1tYWludAorMzQ4NDggNTM1MmE2ZWJhZDlhYzQwMDljMzBiYzlmZTg0NzFjYzIyMWFhYWIyNiBsZWdhY3ktdHJ1bmsKKzM0ODQ5IDE3ZTZlOTgyOWM3ZTUwYmYxNjI3Mjk5ZTc4MDM4NzIxNGQ1YTAwNDQgcmVsZWFzZTIzLW1haW50CiszNDg1MCBmMTA4ZGI1OWViNzZhMjZiN2ExNWE5NDI3NmMxMDdlNDA4ZTI5Yjg3IHJlbGVhc2UyMy1tYWludAorMzQ4NTEgYjAyOGZkNTQxOTQxOThhOWUzMTIzNDUzZGZiNWQyMTdjZGE4ZGIwNiByZWxlYXNlMjMtbWFpbnQKKzM0ODUyIDkzOTVjZDkyZDJjZDdlNWI2OTk2ZmMzYmFiNjk0NmQ0NWY3NmI0NWQgbGVnYWN5LXRydW5rCiszNDg1MyBiZTllZjliOTJkNjEzOGMwYjcwZmM3ZDAxOTQzMmU2YzM5YzlkOWU5IGxlZ2FjeS10cnVuaworMzQ4NTQgMjFhZWI5ODMyYzFkMzI4MDQyYzRmZjZjZDJkYTExN2M5M2U5ZTY4OCBsZWdhY3ktdHJ1bmsKKzM0ODU1IDQxNWVmNTUyMWE4YWZkODUyOThmMDM1YmJmNmIxNmMyZTAxNTc4NDIgbGVnYWN5LXRydW5rCiszNDg1NiBjOTUzZmRiNTFjZGQ3ZWY4ODEzYWIyMGI5NThkNWVkMGM3MGYwNjkwIGxlZ2FjeS10cnVuaworMzQ4NTcgYzZmMTY1MDRjOGMyZjVhZGU5NjM3OTA5N2UxYTljNjU3ZTg4OTQzMCBsZWdhY3ktdHJ1bmsKKzM0ODU4IDc1YjYzZTVmMDNmMjEyMTYyNTFiNDFkZDhjNDczZTQ5YzFkNThmOGQgbGVnYWN5LXRydW5rCiszNDg1OSA4OWQyNmUwM2M2NTMwMmIwMTVlYTM1MTg0YmZiMjM5ZDk0NjFhZTUwIGxlZ2FjeS10cnVuaworMzQ4NjAgZmRlNzRmYWRmNzgwYzlhODEzOWJjYzFmZWVmM2M2ODNjMmIxYmRkOCBsZWdhY3ktdHJ1bmsKKzM0ODYxIDdhYWQyNGNhZGRiNWQwYThmOTU5NmRkMmQ5MjM3NWNhZjIyMTc3NDAgbGVnYWN5LXRydW5rCiszNDg2MiA1MDg4YTgyMzQxMTdlY2RlMmM2NDQzMTJmM2JjNzcyOGVkMTc2MDJhIGxlZ2FjeS10cnVuaworMzQ4NjMgZWIxMjdlNDAxYzY0NDlkMzcwMTMwMWRkZmUxMWEyMTY1YWY3OWI0ZCBsZWdhY3ktdHJ1bmsKKzM0ODY0IDk3ZWJkMWIyZjQ2ODU1N2QwM2IzYWRhMjY4NDFlOTQ5N2VkNjU3NzIgbGVnYWN5LXRydW5rCiszNDg2NSBlOWYzYjgyMmNlMDJlYzk4NmNkZjUyOTQyMjA0NGNmYTVhNTQyOWMxIHJlbGVhc2UyMy1tYWludAorMzQ4NjYgOWU3NTA3NTMwMTBhZDgyY2JiYjZkMzJkMDFlYmQ3ZmE5MjAwMTkzNyByZWxlYXNlMjMtbWFpbnQKKzM0ODY3IDA1MmU0YzU3MjI2MTVlMWY0OTkzZjRiNTQzZTdkZDI1MDZmZDRjYTQgcmVsZWFzZTIzLW1haW50CiszNDg2OCAwMTcwNDg1NjU5MzZiODMyYWI1YzQ5MTZiZjdmMmNjMWM0MmM2OThhIHJlbGVhc2UyMy1tYWludAorMzQ4NjkgZDM2MjI3M2Q0NjhiZDEzZTgxMzViN2Y5N2QxZjc5MDZiYTk2ZGFmMCBsZWdhY3ktdHJ1bmsKKzM0ODcwIDllZDc1MjU1OTQ3NzdlZTRmZDU0MDNkZmM0N2I5Mjk2Nzc3ZjhiMjAgbGVnYWN5LXRydW5rCiszNDg3MSAzODFhZTMyNmVlNjU1NWU3NGRmNzQ0N2ZiMGI5NzI5ODkyNWRiMjJjIHJlbGVhc2UyMy1tYWludAorMzQ4NzIgZGNmNWJlMGYwYTFmOWFhMDU4MzQ5NTVmZDE4NWEwMjk2NjliYzZmNiByZWxlYXNlMjMtbWFpbnQKKzM0ODczIDg1MThjNDY4MTc3MWY3MDQwNDJmYjg4MzlkNjUwYTYyNjY2MjYyMTYgbGVnYWN5LXRydW5rCiszNDg3NCA5NGMxYmQ3YTU1YWVmNTQ0OGZjNjk1ZjI4YzUzZjFlNTY4MGQ3Mzg0IHJlbGVhc2UyMy1tYWludAorMzQ4NzUgNjBiYzExZTMwMDY4MmJhNGFkMDkxZTRkNGE0OTA0YzJiM2U4OTEyNCBsZWdhY3ktdHJ1bmsKKzM0ODc2IDYxNGFkNTM4OGM5ZGUwMDAzOGE1NDE3MzlhMWRkYTU5NjA0ZmFmMjAgbGVnYWN5LXRydW5rCiszNDg3NyBkMWQyOGNjYTQyYzE5N2YxZWI3N2M5MDU1YWQyYTdjMjM3YzFiNzEyIHJlbGVhc2UyMy1tYWludAorMzQ4NzggMWRkYzg2YjU4MDQwMDYyYmM1Y2Q5ZjdjYWRlMGJhYWUxYjRjYThiMiBsZWdhY3ktdHJ1bmsKKzM0ODc5IDI2ZWZhOGE1MzkyNTk0M2IzZmJiZmJiNDM0MGI5Yzc5MGJiOGE3MDggbGVnYWN5LXRydW5rCiszNDg4MCA5NGRmZjRhMDJjYTMwNjc3YjZjZDAzOGRmNTMzZWI1ZDhmMjFmOGRmIGxlZ2FjeS10cnVuaworMzQ4ODEgOWY4YzA1NTg3MjEzZTFkODg1MTVjMGY1YTNmNTMwMTVhYzA1NTgyMiByZWxlYXNlMjMtbWFpbnQKKzM0ODgyIDRlYjVmMGNhYjA5ZTRhZDFlNjVjOWQxNzFkNDNiNzUwMzBhZGY4NzkgbGVnYWN5LXRydW5rCiszNDg4MyBlMWYxZmI3NDQ1MWI5YzBkMDE2NjYxMWVlNjg2NWQ5MTRmZjM0MzQzIGxlZ2FjeS10cnVuaworMzQ4ODQgMmEwNzgyY2MxNTFmODQwNDE3Y2YxNTkyYjg3NjliN2Y2ZWZlNDg1YSBsZWdhY3ktdHJ1bmsKKzM0ODg1IDRhMTJkOTFhZjhjM2Y5NWYxNDg3ODk2YWEzMDdiMTE0NGYzYjEyMTMgbGVnYWN5LXRydW5rCiszNDg4NiBjNzI3YWQwMDNmZGJhY2QyYmU4ZjRkYzQwYTM5Njk2MWRkYjc4NzE4IGxlZ2FjeS10cnVuaworMzQ4ODcgMDM2NzM3NzMzMDg0NDdkYzkzNmRlNjk5ZTVlOGJiYTIzNThkOWVlZSBsZWdhY3ktdHJ1bmsKKzM0ODg4IGFhYjM2MTJmMmMzNTJiMGExYTQ5MDgxZTBiMjZiYTBjOTAzZTYwZTggbGVnYWN5LXRydW5rCiszNDg4OSA4ODVkYmYxNTc4YmNiMDZiYzVhZTEyM2FkMjZmZTAyNmU2MzFkOWQ4IGxlZ2FjeS10cnVuaworMzQ4OTAgMDYzYjdkMjI1ZThhYjg0NzZiNmQyN2YzNzgzYTRiYjUwZDVkM2U5OCBsZWdhY3ktdHJ1bmsKKzM0ODkxIDQ1Y2FiZTljZDljOTI2MWYyNzdmYjc4OGYxODYwZmM3NzVlZWZiMTcgbGVnYWN5LXRydW5rCiszNDg5MiA0ODcwMmYxOWNjZmIzZWIwYmY1NGI3ZDZkOWFlM2RiMzMyOTEzZGE1IGxlZ2FjeS10cnVuaworMzQ4OTMgNGNjMTY2MTViMDcyNDVmYTQ3MTVlODA2NzNjNDdlNzg5OWIyMTUzOSByZWxlYXNlMjMtbWFpbnQKKzM0ODk0IGMyMmVlYzgwNzIyNDc0MmQzYjEzODM3OGNjY2MzOGFlYmM4NDUwYjQgbGVnYWN5LXRydW5rCiszNDg5NSBjYThhNjk5NjlmMDM4ZjUwNjE2MjA1YjlhZTUzODMyMzU1NTljZDU0IGxlZ2FjeS10cnVuaworMzQ4OTYgZTRmYjYxNjQxNThjNzg0ZDkzZGM3OGUzMjQ1MjYyYTc2MmViZDUyZiBsZWdhY3ktdHJ1bmsKKzM0ODk3IGM5YmJjOTY3YWM5ZjYwOWY5MWQ2ODc1NzZmN2I2YWUzMWViNDVkZWMgbGVnYWN5LXRydW5rCiszNDg5OCA4OGU4MGEwNDMyOGEzODQ3Y2UwZmE5NWQ1Yjk4YzZlNjIzMzEyMjc2IGxlZ2FjeS10cnVuaworMzQ4OTkgNWNjMWE0MDBhMDJjMzExYTRmMWM1OTg5NzhjZGY1ZjNlYWYzN2MzNCBsZWdhY3ktdHJ1bmsKKzM0OTAwIDM4MTE0MGU3ZTlkNzcxNWNmZTcxZmY3YjQ5ZjUxN2NmYmQ3ZTQyMzUgbGVnYWN5LXRydW5rCiszNDkwMSBlZWFhMzY2MDY3MWNiNmFkNjk2YzAzYmJjMzhiMjhjMzk1MWU4YTVlIGxlZ2FjeS10cnVuaworMzQ5MDIgMWJiYzIwODVmMjEzYjBiYTY0MTI4NWI5ZjFhNmE1NWQxNmZhMzBkZiBsZWdhY3ktdHJ1bmsKKzM0OTAzIDIxYTI3YzIxYTJjNTdhZTNiNjcwZjFmNzkxNTRkOTY4NmM5ZDUwNDkgbGVnYWN5LXRydW5rCiszNDkwNCA0OTQyYTBiNjNjOGNjZjFmYzVkMTFlN2NiYzk3YjZjMTdjMGNlNjIwIGxlZ2FjeS10cnVuaworMzQ5MDUgZTVkOTdhYjcxMGEyMjVkM2U0Y2YxNmI4Y2ZmOWUzY2RlNzBjOTY1ZiBsZWdhY3ktdHJ1bmsKKzM0OTA2IGM5OTYyMGNkOWM2NTUyOTU5ZGZjZDg2NDk1OWYwYzQ4NDUzOTU3NWYgbGVnYWN5LXRydW5rCiszNDkwNyAxMGM0Y2MzNTJkMTNhNWJlNDgyNjA4ZjNlMTU5ZmJlN2NkMjJkMTI3IGxlZ2FjeS10cnVuaworMzQ5MDggNDdlYWEzOGIyOWNiZjY1NTc5ZTBiYzllNzk2NTEzOWI1MGVmOGE2OCBsZWdhY3ktdHJ1bmsKKzM0OTA5IDc0YzE1NDcwOGIwY2ExOWNhZGY3NjVjMDUxMTg4M2I2NWJjOWM2MDMgbGVnYWN5LXRydW5rCiszNDkxMCBmMjg5ODIwNjBiMjBjMDg2M2EwNTQ5ZmU0ZjE1YTJlODc5OTg1M2I4IGxlZ2FjeS10cnVuaworMzQ5MTEgZjJlMGQ2MzBjZjM5ZmU3NGJiNzVlMmZlMmU0ZWNkNmExMzZmNTM1MCBsZWdhY3ktdHJ1bmsKKzM0OTEyIGIyYTBjZDJlOWQ1NTExMjhkM2RiOGFmYjNkNTVjYTFjMDZlYjJkODggbGVnYWN5LXRydW5rCiszNDkxMyBjODVhOWVjNTc5NmNkMDljOTZhYjYxZjUzY2FhNTIxODYwZGI0ZGEzIGxlZ2FjeS10cnVuaworMzQ5MTQgMjkyYWQxMzVjZWYxNDYyMGFiNGI4ZjUwOGNjMGNhMjYyNmY3OWI3NyBsZWdhY3ktdHJ1bmsKKzM0OTE1IGU0NjgyYWY3YWVhOWVjNTJkMzIyOTg2ZTJmZjlmODM0YmYwYTM2OWQgbGVnYWN5LXRydW5rCiszNDkxNiAyMmYwOWFiMGJhZTk0NmJiYWViYmU5Mzg5MmMzNGY2MTZmM2E3M2E1IGxlZ2FjeS10cnVuaworMzQ5MTcgMWFkMGRmODdlZDZjMmU1MDA4ODI1NDA1MDM1OWNhZjIwN2NkMzQ3MCByZWxlYXNlMjMtbWFpbnQKKzM0OTE4IDdhNmQwODE0YjU2MWVkMWFkZmVmZTE5ODdjOWNkMDRjNjdiZjgyODYgcmVsZWFzZTIzLW1haW50CiszNDkxOSAyMjliYjlmMmU5NmYzZmUxNWExMWE1MWUzYmU0NTVhYTU0N2NhNzFhIHJlbGVhc2UyMy1tYWludAorMzQ5MjAgZDZjZWEyMjhmYjI1OWJhOTIzNTIwYmJmMzQyOTNiNjlkYmJlZmRlMSByZWxlYXNlMjMtbWFpbnQKKzM0OTIxIDY4NDU2OTczNTNhMzE1MjVhOGEwMjUxODBlZTgxNjRmMjUzYWE2MTAgcmVsZWFzZTIzLW1haW50CiszNDkyMiBkOTgxMTc1OWU3ZGViZGUwMWEyYTE4NGZjMThiOTZmZjVkNjFlMDcxIGxlZ2FjeS10cnVuaworMzQ5MjMgNTA0OTQzYzg5MTkzZGEwZGMxM2ZjMDdmNjYwZGJkZjk4MWY0NTI5ZiBsZWdhY3ktdHJ1bmsKKzM0OTI0IDYzY2M5ZmNkMjg1ZTRiM2ZhNTQxMDljZjNiNGE5NmMwYzcyOTU1YmEgbGVnYWN5LXRydW5rCiszNDkyNSBlNTA2NThiM2RmMGU3MTJiNGY5Njc5NzEzMzhiODdkN2RjNzdlODI3IGxlZ2FjeS10cnVuaworMzQ5MjYgMDJlYmUzNDU2NTk1MzE4MTNjYmQ2OTY4ZGQyZjhlZTA2ZTU5MGUyZSBsZWdhY3ktdHJ1bmsKKzM0OTI3IGJmYTAzNjlkNjc2MGIyMjhiNDM5YWEyODE1Y2E1YTMwYmMwNTI5ZDggbGVnYWN5LXRydW5rCiszNDkyOCBkZDc4OTA3MmQ5NDkwMzBlNTZkNTMyN2M1NTZlZWQwYzhiZWJiMGY1IHJlbGVhc2UyMy1tYWludAorMzQ5MjkgY2JiZmQ0MTI3ZTI0NzU0ZTZjNTdmYzJjZjc2NjVlZGExMGY2YWQxMiBsZWdhY3ktdHJ1bmsKKzM0OTMwIDM3NzFmZjk5ZDVmMjhhZDAxMmEyMjAyZTczODdlOTJkMzRmYWQ2ZGEgbGVnYWN5LXRydW5rCiszNDkzMSBmMzg4ZTgzZjhlNDMzOGUxNzVmMjc1M2VjOGVlNWM5MTAzZmQ3ZDkyIGxlZ2FjeS10cnVuaworMzQ5MzIgOTQ5M2RkMjIyZmJiOWIwODZiMDNlOTg5YmJiNWFhNjA1NDczYjEzZiBsZWdhY3ktdHJ1bmsKKzM0OTMzIDVlOTc3NTdkODdlNzMwMzdmMDc2MmMzZDFhODM4NmIwYTlmNmViYzAgbGVnYWN5LXRydW5rCiszNDkzNCBjMDZiNTcwYWRmMTIyYmJlOGMyMTA4NWUxNjE5OTdjYzM2MjRkMTczIGxlZ2FjeS10cnVuaworMzQ5MzUgNGQwNzU2YTEzZjZiOWU0YzhlZGI3MWI2MjdkZWE0YTM5N2E0MWRlNSBsZWdhY3ktdHJ1bmsKKzM0OTM2IDViMDM1ZTZlNDRkYzY4YWVhY2RkNmUxZDA2OTg1MjI4NzFhNzBiN2UgbGVnYWN5LXRydW5rCiszNDkzNyAzNjA3ZjIzMzUyYjk4NTk4YjY1ODBiZTBkNmQyOTQ3YmVlNDE4OWI4IGxlZ2FjeS10cnVuaworMzQ5MzggZGVmMjc1Mjc3MjgwNjFhNDE5ZDBlODk4YTdjNzlhODhjNzQzNDg1NCByZWxlYXNlMjMtbWFpbnQKKzM0OTM5IDg5NzY3YzE4YzYxNjA4YjZlYjlkZjRmYmMwMjNmOTFiOWIwN2U1ZTQgcmVsZWFzZTIzLW1haW50CiszNDk0MCA4OGUwMDAyMWFjZmY2ZWI4YmNmZWJhMDgxYWIzNjA2M2JjOTM1YTIwIGxlZ2FjeS10cnVuaworMzQ5NDEgOTcwNjJkMzY1OGZlN2M3MDc5MmJjMjRhZmZiZjg3YzY2NDU2MTI4OSBsZWdhY3ktdHJ1bmsKKzM0OTQyIDBmNzA5Y2VhNDNjNzE2ZjE4OThlNjViOTMyOTc2MWJiMWI0ODkzZjMgcmVsZWFzZTIzLW1haW50CiszNDk0MyBlYTNjNmY2ZTQ2NzkxYzZmYjJlNzk2ZDcyYzBmYjBiMTZlMDZmODY3IHJlbGVhc2UyMy1tYWludAorMzQ5NDQgZWRlNTE4YjBiOWRhNzlmODU0MmU4ZWVhYWFmYzNlODJkMTRmZDRlNSByZWxlYXNlMjMtbWFpbnQKKzM0OTQ1IGMyOTY3Y2U3YzAxZTQ1MjY4NDYyYTA1ZTc5ZWYzMDQwZjJlOGU0Y2QgcmVsZWFzZTIzLW1haW50CiszNDk0NiA5NTVjYjk2OTc3NjdmZTI5OTUxN2U1ZjE3ODRmNTVmNGUzMzU0NTU4IGxlZ2FjeS10cnVuaworMzQ5NDcgMWE5ODhhMDZiZDMzNmI3NjU2NmUwNmQ5NDFmNDgzMGQ0Y2Q1ZmZjZSByZWxlYXNlMjMtbWFpbnQKKzM0OTQ4IGI4MGEzYjgyZGNmOWUyZTQyN2Q1ZmQ4NDMwMzlkZGQxZmU4Njk2NTYgcmVsZWFzZTIzLW1haW50CiszNDk0OSAzOTUwODJkYzIxOTQyOTg5MWRkNzE2NDU4ZmFkMThjYzg1MWYyY2MxIGxlZ2FjeS10cnVuaworMzQ5NTAgNjQxNjZlYWY2MjEyNGIwMTBjY2ZlOTI0ZmJmYzllNTA2YmNjYTIzMiByZWxlYXNlMjMtbWFpbnQKKzM0OTUxIGE1OTIyYjlkMDM3OWEwNzY4NTA0M2MyMTM5M2YwOGVlMDRmNGJiYjMgbGVnYWN5LXRydW5rCiszNDk1MiAzODg1NWZkYTQyOGE2OGQ2MTI5NzQyMjJiYTQ1N2E2ZDcxYTI4ZDk0IGxlZ2FjeS10cnVuaworMzQ5NTMgMmIwYzc4NWFiMzBhNmUyMjdkOWQwNTYwYWY0OWFkNmIyMzU5ZDkyMSByZWxlYXNlMjMtbWFpbnQKKzM0OTU0IDY3YjlkZTYyZWNiODY5Mjc3MDFjMWZjMzMzMDcwOTk3OWRkOWE1MWYgcmVsZWFzZTIzLW1haW50CiszNDk1NSA5YTNhMTZiODJkY2JiZTRhMGJhODI2MmE1ZTZlYTBhZDNmYjVjMTMxIHJlbGVhc2UyMy1tYWludAorMzQ5NTYgZmI3NTllMjgxYTJmMjMwMDg1MjQxZDRhZWIzNjQ3YjMzOGY4OGRkYSByZWxlYXNlMjMtbWFpbnQKKzM0OTU3IGQwOTllZDkzMjk5M2Y5M2Q5MTg1YTE2NTJhNjA0YWU4ZTlkNjkxNWIgcmVsZWFzZTIzLW1haW50CiszNDk1OCA1ZGM1NzU3YjExOGFiZjNjY2Y2N2E1NzliYmVmN2JmMGVlYTViMWIyIHJlbGVhc2UyMy1tYWludAorMzQ5NTkgYjIyMGI1OTBlMmVhOGVhNzQwY2M3YmY5ZjMxY2JhN2Q1MmFiMDVlMSBsZWdhY3ktdHJ1bmsKKzM0OTYwIGFjYmM3NTYzYThlN2VkZjczNWM2ZjQ2ODMwOGY0NzFjNGQ2MDI2NzggbGVnYWN5LXRydW5rCiszNDk2MSBhNmYzNGZiYTkzNzA2OTg3YzdhYTkwYmU3N2FjMDRhMDQ0ZDU5MWUzIGxlZ2FjeS10cnVuaworMzQ5NjIgNGVkZjIwMGE4MTE4NWE0N2ZiNzQ2MWY0M2VjOWJjNDM2N2FlNzZiYiBsZWdhY3ktdHJ1bmsKKzM0OTYzIGYwYWUzMTNhMmFjODY0NzJkNDRiMDg2NGI4ZDFhNThhN2E1M2IwZmUgcmVsZWFzZTIzLW1haW50CiszNDk2NCAzYzRjMDg3NDk0ZTBjYjg4NDE5MDQyODIwNjlhOGIyZmU2NGUxNjM0IHJlbGVhc2UyMy1tYWludAorMzQ5NjQgYThmMTI4NmYyMTcxMjljZGI1M2UzMjBlZTEyNWQyYzJjODBlMTM3NyByZWxlYXNlMjMtbWFpbnQKKzM0OTY2IDI4ZWIwMDQ2Y2U4YTc2M2E4ZDNhZGRlZmIzZGFmM2I0YWZjMTc0ZmMgbGVnYWN5LXRydW5rCiszNDk2NyBkZjhlODc5YzhkNzZkNTBjZWRkZjEyY2JjMWRlNzc2OGIyOWNmNGJkIHJlbGVhc2UyMy1tYWludAorMzQ5NjggOWM2YTUxZDg3OTMwMjk0NDY2ZmVhODY2ZWMyMzljY2IzZjBiZDY4OSByZWxlYXNlMjMtbWFpbnQKKzM0OTY5IDFjYjg3ZGFkMjYzZDc3ZGQ0MGMyY2U0ZTk4NjRjZGQ5MTk1ZDljZGMgbGVnYWN5LXRydW5rCiszNDk3MCA4ZWEzYTgyZjkxM2Y2Y2EzYzA5Mjc1YjRiNWY5NDM1OGE1MTA1M2ZhIGxlZ2FjeS10cnVuaworMzQ5NzEgY2UxNjViZThjNmI4OTg2YmQxZjEyNWUxZjRkMjhkYjdlYzFlMmU2OSBsZWdhY3ktdHJ1bmsKKzM0OTcyIDM1M2ExNjAzM2Y2YTRlZDY5NTg5MGU1MTk2ZTk1YzI3MWI5MWQyNzcgbGVnYWN5LXRydW5rCiszNDk3MyAzNTM5M2E5MmFjZDFkMzcxMTM0MjMyMTU1MWFkNzg0MmVlZmIzNmQ1IGxlZ2FjeS10cnVuaworMzQ5NzQgZGZkMDExNGNmOWVjZTdjNjIwZDQxMmY3NjYzNWRhZDI3M2JmY2I1MyBsZWdhY3ktdHJ1bmsKKzM0OTc1IGUxMThlNGU4ZTIyNDhlNGQ2NWIzZDczYmU1OGE5MWU1NzQyYTY2ZTggbGVnYWN5LXRydW5rCiszNDk3NiA4OTIxMTZhODg2ZTAwNTFhOGQzMmFmYzNhMjMzMmQ2YTAzYTRiOTJjIGxlZ2FjeS10cnVuaworMzQ5NzcgYzE0MDIxNzZlMWE2NTViMjM1ZjA1YzlkMDMzMTVmYTA5NDE5Mzk1NiBsZWdhY3ktdHJ1bmsKKzM0OTc4IGY2MDY0ZjhjMTQ2MDRlM2NiZjc4MzNlOTExNTZjOTMwYTM4NTAxYWMgbGVnYWN5LXRydW5rCiszNDk3OSBhODA3NzI2ZGY0YjdmOTU0ZGRlZGIxZjNhZjY2NmZiNWE1ZjQxY2U0IGxlZ2FjeS10cnVuaworMzQ5ODAgNTUyYTUzNTVkOGE4ZjYzNWQxN2EyODY1N2ViNzM3M2VmMWU2ZjU0NyByZWxlYXNlMjMtbWFpbnQKKzM0OTgxIDcwNmM5NmUxNTFhMDg5ZjI0OGYwZjI3Y2ZlNmRlZWFjOTAzMjQ3NTkgbGVnYWN5LXRydW5rCiszNDk4MiAyYThmNWViOGQ4M2UxMzAyZDU0YzVhYmYzNjZhM2ZlMDJiMWQwZmY1IGxlZ2FjeS10cnVuaworMzQ5ODMgYmU4ODJhOWEzZDViNTIyMGRkY2UwMjNhYjAxMTMwNDcwZmVhNTc1YyBsZWdhY3ktdHJ1bmsKKzM0OTg0IDkxYjU5ZjJmZWU3YzFmMTE2ZWEzNjRlYzZkMTJkZTcyMjYzNWQyZTYgbGVnYWN5LXRydW5rCiszNDk4NSA0NzEyOTE1MmNiNzAxMGE3Y2I2Njc1NDcwZTQ5MTEwNTFlMTI3N2QzIGxlZ2FjeS10cnVuaworMzQ5ODYgZWU1MzI4MDU0NmNlN2QzMzQ5ZjkzMTY4NGJlMzFkY2E0NTk0ZDczNyBsZWdhY3ktdHJ1bmsKKzM0OTg3IDFlMTZjYjhiMDIyMTllNjM2OWFkOGFjY2ZiNTM0YzQ3NDIxZmMzNTUgcmVsZWFzZTIyLW1haW50CiszNDk4OCBjYzdmMjlhYzJlOTgxNjQxZmE2ODc5YTA4MTc0ZWY3ZjljMDk0NTI3IGxlZ2FjeS10cnVuaworMzQ5ODkgOTA1NjBhOWNmM2U4YjlhMWY3MGY1MjNlYzUzNmFkMjg5NDU5OWQ2YSBsZWdhY3ktdHJ1bmsKKzM0OTkwIDBiZTkyNWQxNmUyOTNmZGZmMWQzYmRiMjY3OWY2NDdkMTU2YTY5YjQgbGVnYWN5LXRydW5rCiszNDk5MSA1M2FlMWMzZDRhN2MxODU2NWE5ODQ0NDQyZGQyN2ZjZWE0OTkwMDAzIGxlZ2FjeS10cnVuaworMzQ5OTIgMGZmYjYyNmQ3ODg4MWZlNDI0MTk3NjkyNTBmZWVjYTlhOTk0N2JhNCBsZWdhY3ktdHJ1bmsKKzM0OTkzIGE4ZTNiYjIzZjVhOGI3YzYyMGM1YjdlYTJiMWZjMmMzMjYxOTE3ZGYgbGVnYWN5LXRydW5rCiszNDk5NCBlMjZmZGE5ZGU2N2YyODk0NDg0MWYyMDYwZmJkNjJjYmNkYmIyNmI1IGxlZ2FjeS10cnVuaworMzQ5OTUgN2FiMDgwYmJkNjBhNjg1YzMxN2ZmN2Y3OTQxYTU0YTZhMWFkZDFkZSBhc3QtYnJhbmNoCiszNDk5NiA1NWQ0MmFhZWIwZWVmODY2MzU5Njk1MDM1NzVjOWRjY2JlOWE5YTcwIGFzdC1icmFuY2gKKzM0OTk3IDdjYzExMTI3MjczZTdlOTRjNzRiYTc5OGM2MTQ4OTVlMjZkZDQ1Y2EgYXN0LWJyYW5jaAorMzQ5OTggZWE2YjE5YTEwYTAxNjQwMjc4N2RiMDFhMDRjODM1ZjU1MTdjNmU4MCBsZWdhY3ktdHJ1bmsKKzM0OTk5IDI5YzFiN2I2ZmQ3ZTU3OTI1NzhlYmY5MjI1YWIzODU4MTczOWU0N2EgcmVsZWFzZTIzLW1haW50CiszNTAwMCAyNTUxOWQ2Yzk3Yjg2ZTczNjhmNTgwMmY4NTk1NzQ1MDEyYWU2MzFmIGxlZ2FjeS10cnVuaworMzUwMDEgODAyZDkzN2Y1OTZhYmViMDRiMzJlOTFmYzdlZmExZTE1NjZiZGJjOCBhc3QtYnJhbmNoCiszNTAwMiAxYWUyNjc5OTRmYTAzNTBhYTU4NjVjNTJhZjAxNGY3MTM3NzJmNmYzIGFzdC1icmFuY2gKKzM1MDAzIDZhMTE2OTVmZTY5OGViMmM4NDRhMjY3MWE2Yjc3ZTgyMGU1OWM1NjggYXN0LWJyYW5jaAorMzUwMDQgMDkwODE2YmQ4YmFjMDAxZDY1MmJjOWQ3YTljNDM2NGM0MzNmYjhiZCBhc3QtYnJhbmNoCiszNTAwNSAyNGQzNGFiNGVmNzU0OWMyYTdjMTUyNmEyZjJlNTMxZDU4YmVlNzQ0IGxlZ2FjeS10cnVuaworMzUwMDYgOGMxM2FiNjliYTRmMTQ3YTVjZGVmMDRkNWZkZjdjNjFhZTNiZmZmMCBsZWdhY3ktdHJ1bmsKKzM1MDA3IDFkYzI2NTllZDlmYzM5Y2NlZTQ5ZThiNDU4ZDY3MDJmMzU5OTYyZDkgbGVnYWN5LXRydW5rCiszNTAwOCA2YzNjM2I3NzFhYmNmYzllN2JkZmNkOGUyNTExYWNjZDQxYWYyNDY2IGxlZ2FjeS10cnVuaworMzUwMDkgMzFhMjgwOTAyNGY1MjFiNGE2NDA3ZDUxYzAyYTM3MWU1YmNiNjY1NCBsZWdhY3ktdHJ1bmsKKzM1MDEwIDU3NTUzMTU3YzE5NjZjMjc5YmQyM2ExMWQyOTg2MWI3OTEwYzIyYzkgbGVnYWN5LXRydW5rCiszNTAxMSAzMTU4ZGMxNTMyZmExNzNjZTFhMmMwOWU0NDc2YzM1NmRmMjk4MDZlIGxlZ2FjeS10cnVuaworMzUwMTIgYjg3ZDE5OThlZjAwMDRkM2U1NGQ2YjY5NTkyMzRlMmViMDQ0NjVkMiBsZWdhY3ktdHJ1bmsKKzM1MDEzIDhiNjJmNDE5NGE3ZTc5MzY5ODkwYmM1NjVlNGNmNGVlZmQ5Njk2MjQgbGVnYWN5LXRydW5rCiszNTAxNCBkNmQxZWZkY2M1ZmRkNDRiMjcwYTJkODU2M2IwYzY2Mzk4ZjZlNjU5IGxlZ2FjeS10cnVuaworMzUwMTUgMTM5YTZiNmMxNTBhNTlmYjg3ZjRkM2ExMmZmMmJmNzc3ZTM5ZTQ4NyBsZWdhY3ktdHJ1bmsKKzM1MDE2IDczNjY4NzVhM2NkNzA3Y2ZhZGY0ZjIxZDNkMjA1ZTQ4ZDQ0Nzk5YmIgbGVnYWN5LXRydW5rCiszNTAxNyAzODk0NjU0YjQ4NDhlMTc1NmUyMjFhODBhN2U4ZDY0OWE3MGRiYTc0IGxlZ2FjeS10cnVuaworMzUwMTggMWMwZTRhNTI2NzNhYTU4MzhkMmE3MjE3N2I0ZGU5N2EwMzFkZjA0OCBsZWdhY3ktdHJ1bmsKKzM1MDE5IGZkNGNiYmVhY2U3OWVjYzQxZWRkMzFiMzMxNmIyYTU3OTM1Nzc3ODkgbGVnYWN5LXRydW5rCiszNTAyMCAyY2Q5NjYyOWZlOGQxNDgwZDIxMzg3MDI1ZmM3ZmY2MjhhODliOTRjIGxlZ2FjeS10cnVuaworMzUwMjEgZWM0YTk5ZDE0Y2E0NjA0ZDI0MmY3NTk2NTM0MzRlN2NlNmIzODc0NSBsZWdhY3ktdHJ1bmsKKzM1MDIyIDg2OGNhY2UyMjE5ZmY3MmY4ZWU1Y2E2NmI5ZmVkMDBiYTVkNTQ1ZGMgbGVnYWN5LXRydW5rCiszNTAyMyA4ZTcwODkyYTlmMjVjYjc0MGIyYzg1MjRjZTIzNTAzNjAzZGY5YTVhIGxlZ2FjeS10cnVuaworMzUwMjQgYzg1NGExZjJkMTliODE0MjI3NGUwZGE3OGEwODBiNjhiOGNjZWU1YyBsZWdhY3ktdHJ1bmsKKzM1MDI1IDJjMWJhMjQxYjNjMDdhMjhjMDQ1NjUzMzcwN2Y5YWZiODU3NjM1ZTMgbGVnYWN5LXRydW5rCiszNTAyNiAyOGQwMGIxYTg0NDc2MDY0MGU1OGJkZGI3MjA3YmEyNTk4NGRhMWFjIGxlZ2FjeS10cnVuaworMzUwMjcgMjg0ZGIyYTVmNjIwYjA4NWZmMWE0MzE4YzhlMzIxMjIxZDk4MmYzYSBsZWdhY3ktdHJ1bmsKKzM1MDI4IDI2ZWNhNzA4YjZkZDY3NTI0MGYyMTgxNTkyMTg1YTAxOGU5ZjM3MWYgbGVnYWN5LXRydW5rCiszNTAyOSBhZDNmYWY1MmUxOWU0MDNhZGViMTAwMDJhMTBlMjNlMGIyOGE3ZDRkIGxlZ2FjeS10cnVuaworMzUwMzAgN2VhMDY3ZDc0OWEwMDY2MDRiNDMwY2UxOTU4M2I0MmI2MjhlOGMzZiBsZWdhY3ktdHJ1bmsKKzM1MDMxIGJmODQwMmE1NmZhNDI3YjI1NTFmMzEzZGUwMjMzYzM2MWJkYTM3NjEgbGVnYWN5LXRydW5rCiszNTAzMiA3NGMwNzNiYTZjM2IyYTQyMDEwYWY5ZjIxMDY5MzJhMGE4MDU0YTExIGFzdC1icmFuY2gKKzM1MDMzIGU0MDFjMGYyOWY1MGQ4OGJlNDBkNDI4Nzg5NzVmYTRiYTIxMDhhZTIgbGVnYWN5LXRydW5rCiszNTAzNCAzOGIyM2U2ZDRjNGI5NjRmZWNmNjZmNjI4OTUyZDU0OWI4Mzk2Mjc4IGFzdC1icmFuY2gKKzM1MDM1IGUzNDc0ZWQ4MGE1ZWY3YTAwNTNlZWMwMDcxZGQzMzUzMGEzNjMxNDAgbGVnYWN5LXRydW5rCiszNTAzNiA2ZDQxODgwMWYxNDJkZmYxOTMxZWU0YTQ1MmFkMjY4NjYzZDIzMWM0IHJlbGVhc2UyMy1tYWludAorMzUwMzcgNzQ0MzIzYjc2OGYwZDRhZTk5MTM1ZjA4YjhiNTQ2NWI2NWI2ZGFmNyBsZWdhY3ktdHJ1bmsKKzM1MDM4IGM1M2RhZjM1YmJjY2MwYTk1YWMzN2EzZDQ3MGJmNDk4YTQzMDVjYjAgbGVnYWN5LXRydW5rCiszNTAzOSA4NzM3YmI0NGUyMmZhOGRiZjYzZGM3YjZjYzFhNzhkYTc5Zjc1N2UxIHJlbGVhc2UyMy1tYWludAorMzUwNDAgMDYxZWZmYWJhZmNiZDdmNDUxNDI1YzM5ZjI5YTQzMjZjNWZiMTkyMyBsZWdhY3ktdHJ1bmsKKzM1MDQxIGRjZDc0M2U3OWNlMzU2ZWQ3MDk0YjQxOTUyODAyZWNhYTlmYmY5OWMgbGVnYWN5LXRydW5rCiszNTA0MiAzMzY4YTRkMjVmMTc3ZGVlNjE4ZTc0YzU4MTUzNjgwMjk4YzVmN2QyIHJlbGVhc2UyMy1tYWludAorMzUwNDMgNTgzZDVhYTgxMDFjZTNhODc1MGI2OTQwYzY2OGMxZWE0ODU5YzliZiBsZWdhY3ktdHJ1bmsKKzM1MDQ0IDVlYjllMjVlNjNmZDVlZDg2NDBhZWMxNTk0YTViYTljMGMxN2YwMDAgbGVnYWN5LXRydW5rCiszNTA0NSAwZWE4ZWJlYjZhYTJiOGE1OGU2OGVkNDAxMzA4ODJjYzAzYzUyNWFiIGxlZ2FjeS10cnVuaworMzUwNDYgODA5OTc4YzMwNGJlNGI5NmM2ODczMWJiNmJjMmJkNjY1MjgwYzZiYyBsZWdhY3ktdHJ1bmsKKzM1MDQ3IGZmZjFlODVkMTk1YzE3NTUwYjNlNTQxNDRhMGUwYzRjNjAyN2Q2NTcgbGVnYWN5LXRydW5rCiszNTA0OCBjZDdiNzBhNGM0NDAyMTBhMDUwNmVmMDVlNjc3MDExNDU0N2JiYmU0IGxlZ2FjeS10cnVuaworMzUwNDkgYTUzMTkwYjM4NzI3Yjc3MDY0MDAzODI2MWFjMTE1ZjVlZTdiYTVmNyBsZWdhY3ktdHJ1bmsKKzM1MDUwIGI2NzRhYjU4MDhiYWZmYjI2MDdhYjljYWVlODk0ZTYxY2MzOWQ3MDIgbGVnYWN5LXRydW5rCiszNTA1MSAwOTlhNGEyZjFmNzdjYWY5YmU5ZWJmYmU1NDFmOTFkM2NjYTY1YTcwIGxlZ2FjeS10cnVuaworMzUwNTIgMzMyOTQyMDZkNTM5ZjU5ZjJiMTU2NDY0YjFkN2I3ZThkMWNhMzhkNCBsZWdhY3ktdHJ1bmsKKzM1MDUzIGNhNDM3NDY2MjYzMjQ3NWJlN2NjMmMzOTRlZDAyYmQxNDE0ODI4OWMgbGVnYWN5LXRydW5rCiszNTA1NCBlZDY4OWQwYzYzYzEzYjFiNGFiNDA4MWY4MWYyYTNiYTZlNmMyMWUyIGxlZ2FjeS10cnVuaworMzUwNTUgOTY3MjIzNzdkNDEyYzIxNDU1NmFiNGY3N2QwNjk5NGRmYTdhOGViMyBsZWdhY3ktdHJ1bmsKKzM1MDU2IGM2NzAxZDg0YTNmYTFiM2Y3ZTBmZjRhNDM0ZjYwMzcwM2E3ZmMxZGEgbGVnYWN5LXRydW5rCiszNTA1NyBhZjk0NmRiNjdhZmM0NGQ0YmE2YWUyNWQ2MGNmYjE0MzcyYzYxNjdjIGxlZ2FjeS10cnVuaworMzUwNTggYjQ1MzJjMjQ2YTNhMGVjNDEzY2NmZmY4ODg4ZjYzZDM5ZjgxYzYzMiBsZWdhY3ktdHJ1bmsKKzM1MDU5IDNjYzBkOGZkNGUyYjY4MWFjYzgxODNmNjM1Y2EyNjAyN2U0NDVmYzAgbGVnYWN5LXRydW5rCiszNTA2MCA4YzcwOTA5MDhjZWNmZjY5MDI0ZjVlZTUyOGYyODgzNTA2YWI1YjkxIGxlZ2FjeS10cnVuaworMzUwNjEgNDc3ZjBhMjUyMTUwZDc1YjNlNTE3YjFhOGJlZGZkYzNkODRmNTZiMyBsZWdhY3ktdHJ1bmsKKzM1MDYyIGE2YmMxMzFhYjYxODhjODdjNTYyZTk2MjQ2Mjg1ZTkyN2U1ZjE5ZWEgbGVnYWN5LXRydW5rCiszNTA2MyBiNjdjYTNmNjg4Zjc4YmEyMDIyMDFjMmU2MzgxOTA4NmZlNzE0NDdhIGxlZ2FjeS10cnVuaworMzUwNjQgMzg1MTQ4ODJhNWM0YzQ1ZDBkMDRmZWUxOGU4ZmY3ZDRhMjY2ODljYSBsZWdhY3ktdHJ1bmsKKzM1MDY1IGY2NjkzOWYzODUyMzVkNjY0YjY4NTk5ODc2YmM0ZDZkZjM5MTNiN2MgbGVnYWN5LXRydW5rCiszNTA2NiAwYmFhMjY2MGE1NjhiZjFmNzBiYjkzYjhhMWJlYmQ2OWVlNzQ0MjlmIGxlZ2FjeS10cnVuaworMzUwNjcgNDE2YTVkMjVjYmE2OGQyYTE3NjdjNjY2NDg5MGZlMGVjMDY2NzY0MiBsZWdhY3ktdHJ1bmsKKzM1MDY4IDc2ZWQ4YTc4ODM5MTg1NzM3YTE0MzQwMGU4YjU4NTk3MDk2OTA2ZjcgbGVnYWN5LXRydW5rCiszNTA2OSA0NzI3YzgxZGI5NDk5MDg3ZWZiOTY3ZjMwZTZhNTg1NmZiYmYyNzRlIGxlZ2FjeS10cnVuaworMzUwNzAgNmVhNWNjZjA2NWJlMDQyYWM2M2VkZjA2NTY1ZThkMGRhNGY2N2E0ZCBsZWdhY3ktdHJ1bmsKKzM1MDcxIDRhYzZhMDIyMWY3ZDRiODdkYzk3ODk5NDVmNzliZjNlZjYyZDEyMjMgbGVnYWN5LXRydW5rCiszNTA3MiAwNTQyM2MzMjYxZDQxNWY1ODY3MTQwY2ExNDY1ZTkxM2NhZWJhZjYxIHJlbGVhc2UyMy1tYWludAorMzUwNzMgZThkZmYxMWU5MzU4Nzk2NWRmNDk5NDRjODhkZTVhYjNiNmEwNDBlNyBsZWdhY3ktdHJ1bmsKKzM1MDc0IDQ5MTVmYmVjNjA4ZjRmMDM1NWRjMTg2NGFlYmU4YzA2MjhkMDI3YWYgbGVnYWN5LXRydW5rCiszNTA3NSBmZDY0OTdjZjcyMjhlODI2OThkYjQ4ZDQ3ZWE3MTgzZjA1MGEyNDI0IGxlZ2FjeS10cnVuaworMzUwNzYgMGMxZDIwNjJkZWUzNTM5MTQ0YWNiODdiMmMyY2ExOWE4ZWI2OTdmMSBsZWdhY3ktdHJ1bmsKKzM1MDc3IGEwYWUyZDlkZTY5MTExZDA2MDdmZGNjYWFjZGNhNGQxMTBjN2JjNzcgbGVnYWN5LXRydW5rCiszNTA3OCBiYjNjM2M5OGNjMWJhYmExMjkwNjMzNzM1YWE2Njk2ZTUyYTNiZDFiIGxlZ2FjeS10cnVuaworMzUwNzkgZjBlMmE4NTM2NzU5ZmRjMTIwZTQzNGU3NjFlNjljYmUyMjdkODE1YyBsZWdhY3ktdHJ1bmsKKzM1MDgwIGEwYjE3NzMyODM1YTIwYjI0OGFjODVlZmNhOTQ5MWFhNTc3OWY3MDUgbGVnYWN5LXRydW5rCiszNTA4MSBhMzQwYzUwZTkyNGEzNzRjYTE4MzFiYmQ5MGFjZTYxMTY1ZDIyMDQ0IGxlZ2FjeS10cnVuaworMzUwODIgNTU0MTJhNDNkMmQzZTFjNDIxMDZhMGU5NzRjMzgyNTc2ODMyMmNiNiBsZWdhY3ktdHJ1bmsKKzM1MDgzIGVhYTFhNGI3NDMyODdiYmNmYjZjNDhhNzUyZTIzNTg2ZGVlODFiMjIgbGVnYWN5LXRydW5rCiszNTA4NCBhMzJhYTc5MDYyNTE0OTVjNDFiMjg0MmVlOWE2MmNlMGFlZDk1NDUyIGxlZ2FjeS10cnVuaworMzUwODUgZWZlMDc1Mjg5NzkzNTBlZjVhMDdlMDUzMGYyMTBhMDU1ODQ3ZWE2MiBsZWdhY3ktdHJ1bmsKKzM1MDg2IGVkMjAyNTlhMWVhNTU3ZGRhNTE4ZDZjZDI5MGUxZmQyNTAzYzFjMTAgbGVnYWN5LXRydW5rCiszNTA4NyA3OTZjOTlmMGZhMmM2MmNjNzkxZWMzNGIwY2E4ZTFhZjFjZmJmODkxIGxlZ2FjeS10cnVuaworMzUwODggZDhjMmRiNzgyYmRmNWZmMzUyMTFhMDE1NTc4YzgzNTFmMzc4ZWIyNyBsZWdhY3ktdHJ1bmsKKzM1MDg5IDkxNDBlY2UzZGIwMzYzMzkyMzg2Mjg4ZWVjOTk2MGJhYTc1NGRhOGMgbGVnYWN5LXRydW5rCiszNTA5MCBjMDg4NTg0ZjU1MzM5ZTlhYTRhNTRmYWM2YjBmYWM0ZDM2Njg1ZDg2IGxlZ2FjeS10cnVuaworMzUwOTEgNTg2YTQ5YzJjNjQxZTUzOGU1NDdmMDIyOWEzYTQ4MGI0MDQ0MGEzMiByZWxlYXNlMjMtbWFpbnQKKzM1MDkyIDE3Y2EzNDczMDNkM2YxM2UyYzFjYTNkNTVmYTgyM2M4NDQwMjQ3NjYgbGVnYWN5LXRydW5rCiszNTA5MyAwZjM5NGY0MzlhZDZhMDRmNjMxMTdjNTc1ZDU2M2EzNjlmNmRiYzk2IGxlZ2FjeS10cnVuaworMzUwOTQgZWM3NWZmOGM3NzIxMjE5ZDNjNDJhYWVhZDhmZmE4YWJmZTc5OTkwZiByZWxlYXNlMjMtbWFpbnQKKzM1MDk1IGYxNjY5MTFmNzc4Yjg1NzFjZDEzMWUwYWFlNWRhZmIyYTgxYzQyNDIgcmVsZWFzZTIzLW1haW50CiszNTA5NiBmN2EwNWFiNTBkM2I0ZTIyNjcyMGFlNmRiNTJhMDI4ZjljZDBhNmZiIGxlZ2FjeS10cnVuaworMzUwOTcgYjJhODIwZTMyOWE5MGEzM2U1NmM4N2U2YjQ2ZTdlZGZmNTdlNGRkYyBsZWdhY3ktdHJ1bmsKKzM1MDk4IDU3YmFjYjExOWE5NzY4MjVhMmRhYWQxOGEzZDA4MjIzYThkMWM1ZGMgbGVnYWN5LXRydW5rCiszNTA5OSA5OTg5MWI4ODhjZmQyOWU5ZjBlYjUwMTg2YzM4ODc3Yjc4ZTljZTAxIGxlZ2FjeS10cnVuaworMzUxMDAgMWRmNWI2YTFkYmY2YTU0MDE0MmMxZTM2MTM0ZWIwYmI4NDc4NWJmYyBsZWdhY3ktdHJ1bmsKKzM1MTAxIGIzZDY1MzI2Y2E2NmI0NTZkYTljMDlmN2IwYzM1YTMyMmQ4N2RmNGMgbGVnYWN5LXRydW5rCiszNTEwMiBiZjM2YzExNjMzMzA3ZmQxOTZjYjI5ZjhkNjZlODAzMGUzNTcyY2Q1IGxlZ2FjeS10cnVuaworMzUxMDMgNmE4YjEyMmFlYjJmZjdhNDZiMjAxOTI0Mzk1ZGZhZTU3YzczZGFhMiByZWxlYXNlMjMtYnJhbmNoCiszNTEwNCBhNjI4NGU5ZjMwYTJlNmViMjk5ZTFiMTIxN2Q1MDMwOWRiYTIxNjIwIGxlZ2FjeS10cnVuaworMzUxMDUgZjg0ZDJiYzY4MzFkNDg2NmY5YWY0NWZhY2U4ZGY3ODAwY2MwMGEwMiBsZWdhY3ktdHJ1bmsKKzM1MTA3IDRlNDBlZmYxYWQxODZlYTI4OWM4YmQ4NmQ5MzEzOTViNDc1ZmM2NTYgbGVnYWN5LXRydW5rCiszNTEwOCBkMzI1OGY0M2Q0ODRiZjFlMjY0ZDJlNTRkODU5YzhjN2E5M2Y1Nzg0IGxlZ2FjeS10cnVuaworMzUxMDkgNjMxY2UyM2Y4OGQ2YWU1OTdlZWVkYmM3ZWY3NWFkMmExYTNhMzE1YiBsZWdhY3ktdHJ1bmsKKzM1MTEwIGYzOGJkMzkzZTk1NDc1YjMyOWUyYjU5NzBlNzFjMDRkMDJhZmY0YjIgbGVnYWN5LXRydW5rCiszNTExMSA5ZGE5NGU1NjlkNDhiYmY4MDk5OTk1ZTVkNjdlMWQzNmMxNTc1MDAzIGxlZ2FjeS10cnVuaworMzUxMTIgZmM1NzIwMGY3MGYyNGRlZTRhMWU5YTk2NmNhMmQwNmIyNjdlNzEwNyBsZWdhY3ktdHJ1bmsKKzM1MTEzIDY0YWU4MzIxMzFlMTQwNzRjYzFmNzU3YjdkMTQxNTVlN2E2ZThlNzQgbGVnYWN5LXRydW5rCiszNTExNCA0MDU1Mzc1ZGMwNWVhMjE5OGQyZWFiYzQwMjdkODM3MjIzOWE2N2VlIGxlZ2FjeS10cnVuaworMzUxMTUgNjdhMWVlYWQ3MmJhYjRiYjg3Y2Q1Y2QzYmNhOWU5MGRjZDY0YmNiNCBsZWdhY3ktdHJ1bmsKKzM1MTE2IGUyMGZjMWI4MDIwNTFhMDIwMTJkY2Q0YzBhMGY4MTExZGM3MzQ2OWYgbGVnYWN5LXRydW5rCiszNTExNyA0NmFkMjFiNWJkMzM0YzQ5NjM3NGUzNWM4NzlmN2RiOWRhMGJjMTM2IGxlZ2FjeS10cnVuaworMzUxMTggMGFhNjQ0MWM3ZmU2ZDhiZmU5ZmVjNGI2ZTY4ZDk4MDhmZjU4MTg3MSBsZWdhY3ktdHJ1bmsKKzM1MTE5IDViYmVjOGYxYmY2ZDY1MGNlZmZjZGZjNmU1NDEwMGU4MzVlYzdlYTEgbGVnYWN5LXRydW5rCiszNTEyMCBjYjkyMzFlZjNiYjkzZWFlMzFkZjNlYjQwMDUwMjA1Zjg2OTEwZTUzIGxlZ2FjeS10cnVuaworMzUxMjEgODg3Y2UzOWY5NWYyYWU5ODE4ZmRjNTlmOWRhZjdiOTYzYjkwZTNiYiBsZWdhY3ktdHJ1bmsKKzM1MTIyIDQwNjdiZjQ4MTU0ZDM3NGIxOTA0NzNlMGYwMGJjOWQ5ZTgyZWY3ZGIgbGVnYWN5LXRydW5rCiszNTEyMyBlYzBjOTA2MjEwYmZhMzIwNTM5NmNhMzNlMWFhNWU4ODAyNWRjNjIxIGxlZ2FjeS10cnVuaworMzUxMjQgYWNhMWNlMWI0YjYxNDQyMDJkNmNjZjU5ZDY5MTQ4YjZlMmU0YzE4MCBsZWdhY3ktdHJ1bmsKKzM1MTI1IDkxNjlkNzllZDMwNDhlMDgxMTcyOGVkMDJkYTMxOGU5NDk1NDllNzAgbGVnYWN5LXRydW5rCiszNTEyNiBjZWY2MTNkOTA0OTU3Y2ZiZWQ4ZjQ5OGIwZDRiZmU2YTVmMGQ5NzJjIGxlZ2FjeS10cnVuaworMzUxMjcgYzliZWQyMDA1MDBlNGY3NzA0ZWEwNGQ5NjgwZWQzM2RhODcyY2QwZCBsZWdhY3ktdHJ1bmsKKzM1MTI4IGM4N2E3ZTgxM2E5OWY2M2RlZmVlN2M3Yjg3NTRmNGFlMTljMzhhODAgbGVnYWN5LXRydW5rCiszNTEyOSAzOGRjZWMyZjdiMDM0NDRhNTAzMzhkZjk1YjE2M2Q5MmFmYjY4ZTY2IGxlZ2FjeS10cnVuaworMzUxMzAgM2FhMjBhODJkZTg2N2Y2MDU1MTM0ZWIwMDUyYzc5MjM1YzMwMzM1YiBsZWdhY3ktdHJ1bmsKKzM1MTMxIDQwZDcyNTA3N2RjYjBkNDhmOWRkMTRiNDkwMDQyYzg1MWE3NTQ1ZjEgbGVnYWN5LXRydW5rCiszNTEzMiBiOTA1N2E2NzYzZDdkMDEzYzhiNDY4ZTdlYWQ5ZjRjYzgzMjk5NjU0IGxlZ2FjeS10cnVuaworMzUxMzMgYjNkN2ViYzEzZDdkNWVlZTBlNThmNzhlMjIzOTZhNGI5NWJlNGY2NiBsZWdhY3ktdHJ1bmsKKzM1MTM0IDBmY2U1YjE3M2E3NDAyZWViMGU2NjAzYmJkMzc5Yzk0MTc0OTYwOGUgbGVnYWN5LXRydW5rCiszNTEzNSAyNWE4MDE2NGNjN2FmZWY0YWFlZTRhNGQyYmNmMjI3ODlkYmFmMjEzIGxlZ2FjeS10cnVuaworMzUxMzYgODk3ZGU5MjA4MTk5Yjk2ZGQ2YjExY2QzMDE1NWRiNDgxMWE2Y2ZmYiBsZWdhY3ktdHJ1bmsKKzM1MTM3IDEyY2MzMzY4MjhlOWIyNzE5NTZmNThiYWVkOWUxZTE1NmU2ZTY4YzQgbGVnYWN5LXRydW5rCiszNTEzOCA5MDA1ZjI2NjJhNzBlYWIyMmNhNTA5M2Q2ZWQ1MDI5N2U0ZmMyZjZlIGxlZ2FjeS10cnVuaworMzUxMzkgNzQwN2EyNDZkYmUwMmY4MGM5MTg2ZWYwODA5NDRiZTFhYTg5OTk3ZSByZWxlYXNlMjMtbWFpbnQKKzM1MTQwIGZmOWE1NDk1M2MwYmZlYTc3ZTUyZDA0MzkwNTFlNDk1MDUyM2M5OWMgcmVsZWFzZTIzLW1haW50CiszNTE0MSA2OWEzNjVlNDdhYzBhMjA5NjVjODA1NzQ3ZDJlMWY3ODIyNzVjOGZiIGxlZ2FjeS10cnVuaworMzUxNDIgMWRjNTQyMjVhNGMyMjg5OWE2OTY1OTQyNjQxNjRiNWUzM2Y2NzU0OCBsZWdhY3ktdHJ1bmsKKzM1MTQzIGU3MTI0ZTI2OTI1ZjY0YjVkYjMxYWM0OTJmZjkxZTNkYmMxYTY1N2MgbGVnYWN5LXRydW5rCiszNTE0NCA2OTAxMDVmZWE1OWQzOGZlYjM0MDMxYTliYTY5NGQ0Yjk4YTFlOTIyIHJlbGVhc2UyMy1tYWludAorMzUxNDUgNmUzNzU4ZWQxZWY0MTJhOTJlMTZkMTVmYmZlNjA2MGIyOWZiYTk5ZiBsZWdhY3ktdHJ1bmsKKzM1MTQ2IGJiYzk0NGUxZmVjY2I2MTFhOTQ3YmM4OWNkOGJlMWYxZWEwNjg0MjYgcmVsZWFzZTIzLW1haW50CiszNTE0NyAyNjZmMjI2ZjQ3MWQwNDY1MjU5ODcwYjkzOGRlYzA4M2JlMDIyNjJlIGxlZ2FjeS10cnVuaworMzUxNDggZWM4YTQ2ODViMzYwNjY2ODcxZWVlZDc4Zjc1ODVlYjU2MWQ4MWQ5MiBsZWdhY3ktdHJ1bmsKKzM1MTQ5IDE0ZGVhNmY4YjBjMzQ0ZmVhNWM5MWU3NjdmODY3N2MzMjAwMGE4NzMgbGVnYWN5LXRydW5rCiszNTE1MCBjMzgwZGMyOTMwNGFlMWIzMWI4ODM5NTM5Y2JjYWY3ZGJmYjE3Yjk5IGxlZ2FjeS10cnVuaworMzUxNTEgZjdmNDJmM2MzZmI0NzU3ZWI0NjE5MGViNWU0YjdiNTI5MTc0ZjhiOSBhc3QtYnJhbmNoCiszNTE1MiBhMTUxMTUyOTBlMTNiMjhmYzhhNjM0MTgwYWM1YmZiYTdkMjRlMDM2IHJlbGVhc2UyMy1tYWludAorMzUxNTMgN2ZjYjM1NTUyZDUzYTM0YTA4N2FjMmMzYjIxNWJlODM0YjYwYmUzZCBhc3QtYnJhbmNoCiszNTE1NCAwMzgwODc4ZjNkYjU0OTMxNDlhZTRjNzI5MWE1YTE1YzczMzgxMDgxIGFzdC1icmFuY2gKKzM1MTU1IDYwM2E5ZWFhNzRlMTU1ZDhkZmE2OWIzNTdlMTBlNTBjZTlkY2M4MzIgbGVnYWN5LXRydW5rCiszNTE1NiBhYzRhN2JhNTQ3OTI5MDRhZDgyN2YyZTk4NjczZjljZjgwOWZmNDEwIGxlZ2FjeS10cnVuaworMzUxNTcgYjFkYzVlMTE0OGVhMzRlZmE1Y2Y3YjdhOGZiMmU2ZTRlZmQ1ZWNmZiBsZWdhY3ktdHJ1bmsKKzM1MTU4IGJlNTZmYzQ4NWUyNzBkNmUyNDZmZWVkODE3OWZmMjMxOGM1ZmMzZTEgbGVnYWN5LXRydW5rCiszNTE1OSA3YmU1NTM4MDU5NDkzZTYzZmE4ZDE2ZDU1OWI3ZGJmOGVhNzY2MWYyIGFzdC1icmFuY2gKKzM1MTYwIDU2MWZlN2Y2NjUxNWUwOWY5MDEyMTAyNGNhNjBlOGI4NzkwZjk3YzcgYXN0LWJyYW5jaAorMzUxNjEgYzRkM2U3YTFmZjg2OWYwZmE2NWViZDBiMGNjYTljZWFhYTMzNjZlZiBhc3QtYnJhbmNoCiszNTE2MiA2MWEyMGRmNGIwZWY1ZmQ3OTNmYTk4YTBjOTUwMjE4MzA4MzQ2M2Q0IGFzdC1icmFuY2gKKzM1MTYzIGI4MTQ4MGY3Y2ZmZTYxOWE5NDE3ZTdkZjA4ZmIzM2Q5Y2QyODRmMTMgbGVnYWN5LXRydW5rCiszNTE2NCAxODYzMTljZmY0YjIyNGU0MDM3Mzg1ZDVmNWY2ZTA4ZGZmMDgxYzBkIGFzdC1icmFuY2gKKzM1MTY1IDdjODhhMDY5YTE0MzlhMDllM2Y1ZGVmMjc3ODY0ODk0ZTZiODY1NGMgYXN0LWJyYW5jaAorMzUxNjYgOGI2MDg0ODQ4ZGExODlhMGM2NzliZmY0NDA5YzQyNGYwZTQ0OTBjMyBsZWdhY3ktdHJ1bmsKKzM1MTY3IDY2YTQyMzBmOTQ1YjE0OGViM2M3MzVlMGQ0ZDc2MWFjOTliOTU0NjYgbGVnYWN5LXRydW5rCiszNTE2OCA4ZjQ3MjgxZmVhN2JlYTRjOTU1ZjgxMTQ4NWJiZjAzYmQwNmMyOTQwIHJlbGVhc2UyMy1tYWludAorMzUxNjkgNDYyMjQ2OTBhMzY1NWE0M2RkYjlhZjM0YWQ2YTRmNjIxMzAzY2YxNyBsZWdhY3ktdHJ1bmsKKzM1MTcwIGYyZmQ0ZTVkZGYxOTVhYzIzMzVkMDI1MzgzM2QzYTZlYTdiNDU5ZGIgbGVnYWN5LXRydW5rCiszNTE3MSBlNGQ3M2VlOGQ0ZTE2YmE0YzRhODE5NjZiNjAzYTdhZjcxOTMyOGEzIGxlZ2FjeS10cnVuaworMzUxNzIgOGQwNmMxOTJmMGU2ZDNlYzlkNzBiYWEwOWQwYjQ2NWYxMjM0Yzk0ZSBsZWdhY3ktdHJ1bmsKKzM1MTczIGFkYjZkZmZkOGRkNTMxNGI0NTMxNDYxNTgwNzQ1NTliYjYyYzUyN2UgbGVnYWN5LXRydW5rCiszNTE3NCAxZWJkMDYyNmQxNzYxMDgzMjliNzAxNTcyNGZiODdmZDIyZWY4NGRiIGxlZ2FjeS10cnVuaworMzUxNzUgMjg4MGNlYjgxMTlkYzFiNTI1ZTM1MDUzZDk3MzE4ZTMwZGVmNWI3ZSBsZWdhY3ktdHJ1bmsKKzM1MTc2IGU4Yjk2YjJiZmE3YjIwZmNkODE3NzQ3YTEzMjgzN2NjZGJjOGRhMWQgYXN0LWJyYW5jaAorMzUxNzcgOGY4YmJhMGE3NWI0Y2QwODI2YTVhNTc4M2UzOTMyNjFlNGRkNGNhYSBsZWdhY3ktdHJ1bmsKKzM1MTc4IDRlN2NjNTBiMzBhMTY0MzhmNzE0YjRiMzZkYWNiNmVmYWI0YTRhYjkgYXN0LWJyYW5jaAorMzUxNzkgNTAxZGFhY2NiZmUwY2I2NGNiYTBhOTRjM2ZjZGEwZjAwYzBjNDRmNyBhc3QtYnJhbmNoCiszNTE4MCBkNjY3ZTMzZTAyNTIzZmI3YjBkOWRiMzEyMDhkMDZmMWZiODVhM2ZlIGFzdC1icmFuY2gKKzM1MTgxIDY1Nzc4MzUyMDY2YmY5NGYwODg4MGVhZmNhNzRjOGYzMTgxOWU4YmIgbGVnYWN5LXRydW5rCiszNTE4MiAzNzQ2OTc0NzhiNWFjMDJlNjBhYmI1ODNhOGVkNmYwNTI0ZmQ4ODc1IGxlZ2FjeS10cnVuaworMzUxODMgZjc2ZmViNzNhMGU0NzE2OWEzNjE1YjkyOGQ2MGQwNmQ5MDhkZGM2NCBhc3QtYnJhbmNoCiszNTE4NCA2MzA4YWRmMTcyZjQ4MDM1MDcyNGVmYTA3NTZmYjFjMzlkYzRiYjAwIGFzdC1icmFuY2gKKzM1MTg1IDk1MjUxNzc5OGNiNWQzMDM2NmY0OTUzYjExMjZmMGViNzc5MDM2ZGYgbGVnYWN5LXRydW5rCiszNTE4NiA2M2ZhNjBmMmQ2MWNhODM2YjVlMmQwOTU5ZGVkMWMwMDI4MTk0YWVkIGxlZ2FjeS10cnVuaworMzUxODcgNGE5ZTU2MzY4YzY5MDRjMzkyNTFjODJiYTcwMWViODAwMDNmNmZjZSBsZWdhY3ktdHJ1bmsKKzM1MTg4IDNjNTdhMWMzYTg3YWVmMTM4ODU2NGY5MDU5Y2I0YTg3ZjE2MjNjNzggbGVnYWN5LXRydW5rCiszNTE4OSAzYzI2NzdjNGEyYmYzNjllODFmYjZmYWY4YjEzZGM2NGQyNDQ0ZmIyIGxlZ2FjeS10cnVuaworMzUxOTAgMTZiMzE1ZGYxM2NlNDhmN2IzYWNiZDVjY2Q2ZWViZTBlZjg0YzUzMiBsZWdhY3ktdHJ1bmsKKzM1MTkxIDQ5MzcwNzY5MjY3MTk0Yjc2OTE5OTg1NGE3ZjVkODE2ZjFkYWY4ZTIgbGVnYWN5LXRydW5rCiszNTE5MiBhMmZlMWEzNTgwMGEwNmQ0NzdkMjUwYzI0MzYzZDk4MDBmYWM3MWFkIGxlZ2FjeS10cnVuaworMzUxOTMgYWZiNGM5NzI2ZDFhNDVhMjMxZDRmY2VkOWQ1NzczZGIxNWRmZTI5MyBsZWdhY3ktdHJ1bmsKKzM1MTk0IGEyODI4MDFiMDZiNjQ4ZGYwYzhjYzQ2MDEyMjg1YTdhYmZmYmM2OWUgbGVnYWN5LXRydW5rCiszNTE5NSAxMjE5ZjExNjJkMWQxYTk1ODk3MTM0ZjVlNjQ5NjUxZGJmZTJlOGYwIGxlZ2FjeS10cnVuaworMzUxOTYgOTdiY2YyZTg4Y2ViODkxNmFjOGM1MDM4OTg4NzI5ZWNiMzkwNWNkZSBsZWdhY3ktdHJ1bmsKKzM1MTk3IDE2ZDI2OTg2NmE0ZGFmN2JiMmJlYTMxZjIxNWUxZjZmODk3MWI2MDQgbGVnYWN5LXRydW5rCiszNTE5OCBkZmMxODE5YjRlYjQ3MzJmOWExNDg3NjU1YTI4MzQ1OGQxYzMwYTAyIGxlZ2FjeS10cnVuaworMzUxOTkgYjRiYzgzZjJmZDA0ZDlkMjExYmY3MmI4MWIwMDgyZjdkNzg1OGIzYSByZWxlYXNlMjMtbWFpbnQKKzM1MjAwIDkyNTY1Y2NjZTkyYjgwY2FkN2EzNWZjNDc2ZTMwZmI5Nzg5MGQ3YTEgcmVsZWFzZTIzLW1haW50CiszNTIwMSA2NmE1NTBlOWIyZmI3NWMyZTIxMjM2MWVlMDk4NGU5OGZkYzUwYjhlIHJlbGVhc2UyMy1tYWludAorMzUyMDIgYmI3MTQ2ZDExN2ZiZDM5MGJhNDhhMjFhZmM3MDc1ZmFlMTc2NGVlOCBsZWdhY3ktdHJ1bmsKKzM1MjAzIDNjYzNjYjc5MDQzZjcyMTgwMGJmYmIxMzcyMmQ3YWJjMTE5N2MwMTggcmVsZWFzZTIzLW1haW50CiszNTIwNCBkNDE2NWQxMmY3M2MxOWY5NjUxZWI5YWVhOGZjNzhmNTRiOWQyZDk1IGxlZ2FjeS10cnVuaworMzUyMDUgMzdkNTAxYjllMmQ1YmIwZjgyNGI2YTc1YzhlOWYzYjY4NGJmMTBiYSBsZWdhY3ktdHJ1bmsKKzM1MjA2IDU2NjczN2JmYWVjOTUwNTRiZGY0NWYyMjA2OTI3NjQ3ZTY5ZTgxODAgcmVsZWFzZTIzLW1haW50CiszNTIwNyA4YWU4OGRiNzg0M2MxZjBjMGE2ZTE4YTAyYjgwODNlY2I5MmY1YjA5IGxlZ2FjeS10cnVuaworMzUyMDggYzU4MjRjOGM2YmE3MjI3NTc3Y2EyZTk1OTEzNDBlYmIyM2Q0OTZmNSByZWxlYXNlMjMtbWFpbnQKKzM1MjA5IDAzMmNiMTdhYzJkNmNiZmI3ZmZlNGQzNjUyMTliNzk1YzRiNDBlYTQgbGVnYWN5LXRydW5rCiszNTIxMCBjYzEwYjAxMGY0MGJhMWU0ZTI1OTRlZmM0NWY1YzViNzdlYTM3MGRiIGxlZ2FjeS10cnVuaworMzUyMTEgNDIwMDNjODYwMGY0ZDNlMzdkMTdmZjQ4NzA1YmY4YzBmYTZjYTViZSBsZWdhY3ktdHJ1bmsKKzM1MjEyIGQ1YzA0NzgwN2M2OTdiMzQxY2NjMzUxNTcwM2Q0ODEzZjdjMDk2MDIgbGVnYWN5LXRydW5rCiszNTIxMyBhNTc3NDEwZTVhNjBmZGU3MDQyYmZlNzI5NTBhZGY2MzQ5MGIzNDk3IHJlbGVhc2UyMy1tYWludAorMzUyMTQgYWFiZDliNTRlNDY5ZWY4ODEwMWM1NWU4NzJmYTI0ZmRiZDk4OTc4OCBsZWdhY3ktdHJ1bmsKKzM1MjE1IDg1ZjQ5MzJkOGZmZDk5NzAwNTU3NDNiZDE2MWU0YTg0ZTFlZWM2ODUgbGVnYWN5LXRydW5rCiszNTIxNiBmMDRjY2MyODg1NDJiNmRiNjIzODVmNTY2MWJhNjE2NDg1ODI2ODNhIGxlZ2FjeS10cnVuaworMzUyMTcgNDRkNDQzOGVkNTdhNWE2ZThjZTAzOTRiNDU4MWZkZGRmZDZjZTk1NCBsZWdhY3ktdHJ1bmsKKzM1MjE4IGRlMmVkODAwZmE1MGZhNTU2NzMzYzllMDI1ZDMzMWZhMWI1M2VhYjUgbGVnYWN5LXRydW5rCiszNTIxOSA4NDk1YjAyN2JjZTM2NjA5OTI1NGEyN2IxYmQ4ZDI0NTU1YmI4MGJjIGxlZ2FjeS10cnVuaworMzUyMjAgNjZlNDNmMjUwNDZkYTVlNzA1M2JjMGM2OWIwMGI0ZjhkMTk4NjQ5YiBsZWdhY3ktdHJ1bmsKKzM1MjIxIDFkYzk2ZDg3OTc0ZWI2ODhiMjBlMTJkYmI0MTc5NTcwMjU4MmJiMjYgbGVnYWN5LXRydW5rCiszNTIyMiAxNzRkY2YxNzFkZjUyYzNmNTMyNDFhMDUzYmY1YjBiMmI0ODFkYTc0IGxlZ2FjeS10cnVuaworMzUyMjMgN2IzNGQ4NDljMjI5MDA2NWQwOTNjYWU5ODNkN2JjNzAyNGVlOTY4MCBsZWdhY3ktdHJ1bmsKKzM1MjI0IDNjZTRmZmFjMjdhYjQ0YzJhMTllMGE1ZTMxYmMyZDg3ZTYwNGVlOTggbGVnYWN5LXRydW5rCiszNTIyNSAzMDhjMTkzZjUxZTMxNzg1NmNiMWJhZDQyYjZlZDBhNGY0NGUxOGYyIGxlZ2FjeS10cnVuaworMzUyMjYgMjViMzA0MzlmZTIyOWYwMDI2ZTRkN2Q2MzIzZTZlZmMxMDE4ODE1NiBsZWdhY3ktdHJ1bmsKKzM1MjI3IGJhOWFhZGRlYjk1Njg0N2FkMDY0ZWMzNmMyNDY4ZGJkMGFlYTNkNzEgbGVnYWN5LXRydW5rCiszNTIyOCBmMzBhYWFjMDAxOTVlODc2NTMyZjM1M2EyZWUxZDkzZDhmNTE0NTJhIGxlZ2FjeS10cnVuaworMzUyMjkgNTczYjA4OWZhYjcxZDNlNjI1YmU5MWM4MjYzMjMzZGZlMzhhNGM4NSBsZWdhY3ktdHJ1bmsKKzM1MjMwIDkxYWY2NWI5MzJkNjIyODg3YmRiMGQ2YTFkMDQ4Mjg5Y2VhMTM1NGIgbGVnYWN5LXRydW5rCiszNTIzMSBkNWI0YzQ0Yzc2Y2UwNmE4NGNkNTJkY2RjMmUyZTJlN2E0M2E3Y2I0IGxlZ2FjeS10cnVuaworMzUyMzIgZDk4NGIzYmQxY2ViMWEwZDJhY2FjYmQwYzczNDE4ODE1NmM0MzZhMiByZWxlYXNlMjMtbWFpbnQKKzM1MjMzIDY1ZDI4ZmZmMTE3MmUxNWY3N2Y4NDU3ZmFhNzRmZWNkNzFmNTZkYTQgbGVnYWN5LXRydW5rCiszNTIzNCA1M2RmZjYwZjU1MDg5YmFjM2ZkYmRkNzI3ZGQ2ZWI0NTg4NTQ2YTkyIHJlbGVhc2UyMy1tYWludAorMzUyMzUgZTE3OGViNDNlZmRkZWU5YjliMzFkMzJhZTIwMmRlMWY4ZTdhMjExNSBsZWdhY3ktdHJ1bmsKKzM1MjM2IDcyNzEyMGZiMDM2NTJkYzI4MTFhNjViZGE1YmU2ZGViZTljYTFhMDYgcmVsZWFzZTIzLW1haW50CiszNTIzNyBmNTdmNWNlMjJjOGRjOGQyMTM1Yjk3OThkNzliN2FmYzRhOTgyMjA0IGxlZ2FjeS10cnVuaworMzUyMzggMDhlYzRkYjUwNjRlYjZhMjVkNGU4MmIyNWJkNzY5YmM3ODMzNTg4NyBsZWdhY3ktdHJ1bmsKKzM1MjM5IDg5ZjkwNzBkYzFiYzBiYzEwOTI5MWIzMzVlNjNjMzYzNzU1YTVhZTcgcmVsZWFzZTIzLW1haW50CiszNTI0MCBmZDJkNjRhZjI2NDBhYjYxM2M4MTBhYjMzMTBkNzNiZDZiZDI3MTMyIGxlZ2FjeS10cnVuaworMzUyNDEgZGI0ZGE5M2YwYmEwZWU0YmUwZTE3YTFiMmVkNTQ4NDQwZTRhZWZkNCByZWxlYXNlMjMtbWFpbnQKKzM1MjQyIDhlMjE4Y2M4ZWRhYjJiZGRmZTE5M2QwM2I5ZWI4MTUyODkzNDNhMDkgbGVnYWN5LXRydW5rCiszNTI0MyBmZWFiZTJmZjBlMWUwOWQyYTNkMmViYzczMGYzOGIyNzBhN2U3ZTU1IHJlbGVhc2UyMy1tYWludAorMzUyNDQgNmE4ZThhMTNjNzQ1NWZjZjdhOTA1MDM1Y2I1NmMwZGMzYjkzYTE5YyByZWxlYXNlMjMtbWFpbnQKKzM1MjQ1IDRjMTJkM2IwMTY2ZmNiMDIxMzljYTc3MjQxMzEyYTVjOTBlZWYwMTUgcmVsZWFzZTIzLW1haW50CiszNTI0NiBmZWY5ZjJhNDFjMzRjMDM3NjBmNmYzZGQzNzlhM2ZjMGVjYTcwY2ViIGxlZ2FjeS10cnVuaworMzUyNDcgMmI3ZTA4ZGNhY2IxNGM5Njc4MzMxZWI4MWZhMTQ3YWI2Y2QzZDI3YyBsZWdhY3ktdHJ1bmsKKzM1MjQ4IDUxYzNkNDUyYWYyZjJjZmI4YTQwNGQ4NzMxODI0MWE0NzA4ZDI5NWIgbGVnYWN5LXRydW5rCiszNTI0OSA3NWRjZjI2NjZkNTQ0NjA5MzhiNTdkMWE3NDg1YTcyM2Q2MjQ2OTM1IGxlZ2FjeS10cnVuaworMzUyNTAgNWQ5YTNkNzZjOTRlNjAzNjJmZTRhNTIwMTRiOTE0YzM2NGI4ZjAwMiBhc3QtYnJhbmNoCiszNTI1MSA4ZjA2MzIwMDk4ZGQ2MDQxM2EzMGM2MTNhOGE5MmFmN2QyZWNjNGI5IHJlbGVhc2UyMy1tYWludAorMzUyNTIgMTRmODYwYjAzYmUyNzNhYTljYWMyNWYxYTEyNjNkYmNlNjRmMTAwMCBsZWdhY3ktdHJ1bmsKKzM1MjUzIDU5NTM4ZDNiN2NkMmQ1ZDNkMmUxM2I1MjY0NmY3Y2M4ZWY5YjFmMjQgbGVnYWN5LXRydW5rCiszNTI1NCBlYjQ4YjI1MDNmMjAxZDQ0YjRhZGU2NGZjNmQzYTIwODRlYjVhOTY5IGxlZ2FjeS10cnVuaworMzUyNTUgMmFiYzUyYzNkNGMyZmNlYWMzNjVhMWQ4OTU2ZThmZGZlODliZGEyMCBsZWdhY3ktdHJ1bmsKKzM1MjU2IDFmNWY2Y2NhMmYyMTBkMTA4YzdmZDE4ODE5YWQ4ZTRiNmVhNzMwM2UgbGVnYWN5LXRydW5rCiszNTI1NyBlYjY5ZWVjYWI0YzdiNmMwYTE0NDE1MWI5MDYyMzA3YWQxMzk1YmE3IHJlbGVhc2UyMy1tYWludAorMzUyNTggMzU0MTI5MTQzODA5NGNmY2ViMGNkNjc0OGQ5NzQ1OGJlMzliYTU3YSBsZWdhY3ktdHJ1bmsKKzM1MjU5IDcxODY0ODIwNDAyZDY1NjlkZTRlYzdkYzc3ZDYyMWEyODNlOGU1ZWUgbGVnYWN5LXRydW5rCiszNTI2MCBjZTU4ZDFjYzZmNDA1ZjMzMTkxNDhmYjcwNjM5NzQxZDJkYmJjMWFmIGFzdC1icmFuY2gKKzM1MjYwIGNkYzY2MjkyZTU1ZDM2OWU3NGI0YjMyMjZiY2RkODI3MWNlNzA4YTMgcmVsZWFzZTIzLW1haW50CiszNTI2MSAyMjE5OWVmNjRmZmEwNDUyYWZmMmI2OWFmNzk5ZWFjNzk0NmVmYjM0IGFzdC1icmFuY2gKKzM1MjYyIDEwNmZhOTRiNDJkZTBjOTA1YTBmZmM0YjAwNWJjNWIyODJiMWEyODIgbGVnYWN5LXRydW5rCiszNTI2MyA1YTQ1YjVjMjM3MWU4ODUxNTRjYjc4MTkxYzQ0MTM5MThhYjQ0OGYxIHJlbGVhc2UyMy1tYWludAorMzUyNjQgZWFlZWE1ODdmOTBhMjk1NTZmZDMyNDFlMDJiNjQxYmZiMDJjZWJkNiByZWxlYXNlMjMtbWFpbnQKKzM1MjY1IDViZWRiYTU1YmEwMzdmZTJjMmYzOGI1YWJkMDRjZDZhNzJiZDYwOGMgbGVnYWN5LXRydW5rCiszNTI2NiA1NDUyMjlkZmQ5MDk4NTg3ZDQzYjM0MWE3ZWNhYTgwYTFiMDI2ZmY1IGxlZ2FjeS10cnVuaworMzUyNjcgNzFhMjk0YmQ3OTUwOWNkNDIwOTc3OTdlMzlkNjAyNmVmOTAzMDU4MSBsZWdhY3ktdHJ1bmsKKzM1MjY4IDliM2RhZWNhYWYyNTQ0ZDljMWUwZjBjNTg1YzM1ODkwYzYzMWE2OTkgamltLW1vZHVsYXRvcgorMzUyNjkgMTU2MDBhMjM3NDkyYTNmZGQ1MTZhMDk5NzIxNWYzZDYwYzY1ODBjZSBsZWdhY3ktdHJ1bmsKKzM1MjcwIGVlNDRiZThlMTlmY2M5NGEyNjJmMTQzMTdhNzZkMjA2Yzk2MWIyNTAgbGVnYWN5LXRydW5rCiszNTI3MSAyZTYyZmM5NzhkOGFlOTdjM2VjNTYyNTBkZmUxZmZkZWFhMDAyMzVhIGxlZ2FjeS10cnVuaworMzUyNzIgYmQwYWNjNDI4MjllZmU0Mzk3YWM4MmRhNDdmYzI4NTJkOGNlYThlOSBsZWdhY3ktdHJ1bmsKKzM1MjczIDU4ZDVlZGU1ZjRjZTJkOTc4N2M0NTA1M2MyODRiNTcxYzdmMWYwYTYgbGVnYWN5LXRydW5rCiszNTI3NCA2YjdiMmM2MmFiMTI2MDg4NDFmMjU5MGVlOWViMzEzMjMyMDcyZWQ2IGxlZ2FjeS10cnVuaworMzUyNzUgMjM5NDQzOTMzMzI0YjAyM2Y3Y2UxOWQ2ZmM5ZGJlNGU5NjhlMGM1YiBsZWdhY3ktdHJ1bmsKKzM1Mjc2IDc2YzgxMzg5NGVlNmYzMDU1NWVlZTlmNWM1NjliOTA3OTFkYzA1NDEgbGVnYWN5LXRydW5rCiszNTI3NyAzZDkyN2UxYzc4Yzg4NGQxNjdjNmYyYzI0YTU1MjRiZjVlYmJkN2Y4IGxlZ2FjeS10cnVuaworMzUyNzggNGVmNTY4YzY1M2Q5YzZiY2Q4ZGFmNjA3NGVjOWI5ODZiZTE0MDY0MyBsZWdhY3ktdHJ1bmsKKzM1Mjc5IGNlMDEwNmRmNmE2YTYzMjVlMzRhOWZkMWU4YjNlZjJhMjk1Njk3ODYgbGVnYWN5LXRydW5rCiszNTI4MCAyN2JmMDViMmE0ZjllM2I2NGRhMmEyM2NjYTcxYzQwYWY2NDNiMTY3IGxlZ2FjeS10cnVuaworMzUyODEgMTIzM2JkOTVkYTFhOTNmOWUyZmNlZWRjMWZhZjRhNDViYWRhZDlmNCBsZWdhY3ktdHJ1bmsKKzM1MjgyIGJmYjQwYTAzY2MwYzAxZmRjODBhZTFhOWQ4Nzk4ZjQ1NWUxZTZiMWUgbGVnYWN5LXRydW5rCiszNTI4MyA5NWEzMmM3ODY3MmRiM2UyY2JmODA5NzIxNjE4ZmFhMGU4NGRmN2NlIGFzdC1icmFuY2gKKzM1Mjg0IDM1NDk1ZDM2ZWM5NTdhYzY0MDNmYTMwMzBiNzA4YTg1NThmYTcxOTUgYXN0LWJyYW5jaAorMzUyODUgOGQ0OWMyOWU5YWMxZTgxYTExN2U0NWI5YmQ5YzYwODFkZmY3MWI2YyBhc3QtYnJhbmNoCiszNTI4NiAzYmE0ZWE4ZmNlM2U1MDFmMzExZmFlZmMwMDYxZjM1MTRmZGFmNjI2IGFzdC1icmFuY2gKKzM1Mjg3IGZhOTgxMzUwOTc2Y2JlZWU1ZTZjODg5YWEwNjU3YjM4ODg3YTJmMjMgYXN0LWJyYW5jaAorMzUyODggMjVhMzVkOGY0MDgzN2MwM2JmZjUxMTg2ZGUxMzEzODQ1MDVlYWUyMCBsZWdhY3ktdHJ1bmsKKzM1Mjg5IDc4MzYyYWFhNDkxZGZmZTdhMmVjYTdhMWU5Nzg3ZTgyZDhjMDdhZGIgbGVnYWN5LXRydW5rCiszNTI5MCA0MjdlOGJhYTcwNTc0YmUyZTE5YTAyYWZhYTQ1YjM0ZWFiYWMxOWM5IHJlbGVhc2UyMy1tYWludAorMzUyOTEgMzVjMGFjOGUwODcxMzVmNWM1NTk2ZDY2MDkyM2QyNmJjMGMzYmY4ZCByZWxlYXNlMjMtbWFpbnQKKzM1MjkyIDVlZWVkNTFlODJjNGRiMWMyZmEyNWVmMWEwM2Q2OTkzMTM1ZTczMWYgbGVnYWN5LXRydW5rCiszNTI5MyBmNmQ4Y2ZlN2MwMDA5OTZkMjI5NWQ0NGVkZTZlYjhkMzMzNjk3MDJkIHJlbGVhc2UyMy1tYWludAorMzUyOTQgN2MwNTJiZTQwMTY5M2I2ZTM3MmNjMTVhODliMmMxOGFkNTAzMmNmMSBsZWdhY3ktdHJ1bmsKKzM1Mjk1IDY0YzA4ZGI4ZGNlNDQ2MGVhMGJkNzQ4YWUxMzRjOWEyNDM3ODY3NjUgcmVsZWFzZTIzLW1haW50CiszNTI5NiA3OWJjNTZiZjkyMjA3NDdmN2U5OWI2MGNjYzY0Y2QwNDhkMWFmMDJmIGxlZ2FjeS10cnVuaworMzUyOTcgYjBjNmY3YzVhZGU2NWE0ZjQ1ZTUwN2E4MzI1MDhjYzgwZGEyZTk5OSBsZWdhY3ktdHJ1bmsKKzM1Mjk4IDlmNDVhMmQzNjY2ZGU3ZGRhZDQxYjBkNzhjZDNhOTY5ODk2YzZhMDUgcmVsZWFzZTIzLW1haW50CiszNTI5OSAwYTMzNGIyMjZmM2EzMTFkN2IzMTg3MjRjMmI1Zjk5Zjk4YjczYTRlIGFzdC1icmFuY2gKKzM1MzAwIGVjNjIzMmVkOTExNTI1YmU0NDRhNzRlZGRkNWQ5YzAyM2E2OGIxYWYgbGVnYWN5LXRydW5rCiszNTMwMSBkOThkMDI1NWJiMGZmZDhlNGUwMzdjNzUxYmNjNzJmOTkwMmI5MzlmIGFzdC1icmFuY2gKKzM1MzAyIGFiMzM5ZDgwYzljOWFmN2RiOTE2YzZjOGY4OGM2ZWUwYjU2Y2M5ODMgbGVnYWN5LXRydW5rCiszNTMwMyBhNTQ1N2I2MjAyMjY1OGE5ZWY4ZDg5MTZiYWEyYTNhZjFjZTNjZmQ3IGxlZ2FjeS10cnVuaworMzUzMDQgNzJlOTcwYzBhY2NjMTIyNWQ4NDU2ZjMwYzgxYWUxZGJjMGYxOGQzOSBsZWdhY3ktdHJ1bmsKKzM1MzA1IDM5MTAxMTg0MGEwM2Y3NjczODZkMDc0MzVhNTZkOTUyYzViYTViYTUgbGVnYWN5LXRydW5rCiszNTMwNiAyYzhhNDMwNjNkODJjOGRjZGJmNTMxM2VjMTRjNjAzYTIzOGM3NDlhIGxlZ2FjeS10cnVuaworMzUzMDcgNDcwZjk1YWQ2NzUwN2RiNGY1Y2I0YzM5NDA3MjUyYTNlOTgyYzc0OCBsZWdhY3ktdHJ1bmsKKzM1MzA4IDk3ZWJlNDAxNGVkYzljZTA5YTdmOWFlMWE3MDljNDQ0NjU0Zjk5OTggbGVnYWN5LXRydW5rCiszNTMwOSAzZGE2YzJhZGFkMzQzY2M2MDkwZDUyN2ViMTk2MDI3ZTU4MTg1MWJmIGxlZ2FjeS10cnVuaworMzUzMTAgYmRmMDA2ZGVlNjk4NmI4MDVlZmNiOWM4MDFiNTdkZmY4ODQ4NmIyNiBsZWdhY3ktdHJ1bmsKKzM1MzExIGExNTdjYzIwZjFiN2RiNWU3ZmFhZTZmZGVkN2IyZjEwMGFiNDg0OTYgbGVnYWN5LXRydW5rCiszNTMxMiAyMjYzMjUwZDdiMmZkMzAyNTY3YTRkNTFjZjhiYjQ0MmVkMjQyNzJjIHJlbGVhc2UyMy1tYWludAorMzUzMTMgYTZkOGQ1YWNlNmE3OGQ1NWM3NzkwY2Y4NGJiY2IwZDg1OGMzOWVkZSBsZWdhY3ktdHJ1bmsKKzM1MzE0IDM4MjgzMzlhZGY4NjdjYWU2ZjFiZTI2ODNjNWZjYjRhZjQxYmRjYjQgbGVnYWN5LXRydW5rCiszNTMxNSAxMTlkMDE4MmJkNWU0MzM2NGMwOTQ0MmZjZDhiZDQ4YzMwNmI0OTBmIGxlZ2FjeS10cnVuaworMzUzMTYgYzMwM2VjMDE5Y2IyYzhkMTA0MzAxYTYwNzczODI1NzE3NGEwNmEyMiBsZWdhY3ktdHJ1bmsKKzM1MzE3IDljYWM5ZDBiMTllMzEzMWU4NTgwMDU4ZWUzZWFlNWVjNjA5MWMyYTEgbGVnYWN5LXRydW5rCiszNTMxOCBjYzc5NDMxODlhNWJjYWMxM2MwMjdkNmQwY2QwYTkyZDFlOWU2NzQ1IHJlbGVhc2UyMy1tYWludAorMzUzMTkgYzc1YTRlZGQxZTUyN2YwNmQ0Y2IwYjk2MmJmZjYwNWE2MGYwNzI2ZiByZWxlYXNlMjMtbWFpbnQKKzM1MzIwIGYxZTBhN2M0OGYzNjAzMzlkYjgzNzQzYWVlOWY5ZjFjZTM3MmFkMTAgcmVsZWFzZTIzLW1haW50CiszNTMyMSA2ZGQzOGU0NTg2ZmZmZDhhNjc1YzA0NGMxODEzNTg3M2IzZTYxN2Q4IGxlZ2FjeS10cnVuaworMzUzMjIgZjQ1N2YxOGY1OTIyMTM5ZmE3MjU3MWIwMDdmZWE0MzMxOGE0OWZjMyBsZWdhY3ktdHJ1bmsKKzM1MzIzIDQ3NWJmNGU3OTIwZWRmY2M2OTg0M2ViOTAwYTRiMzM0M2FhMzVmZmEgbGVnYWN5LXRydW5rCiszNTMyNCA3YTc2MWNhZDc1MTNkMzdkOWFhMzA2MmI5ZmRiYmZmYzhkZWVjNDAzIGxlZ2FjeS10cnVuaworMzUzMjUgOTExYjMyMTVkMGRjNDZkMGIwNDM4MDU4ZWQwZGIzZjFkOTdiN2ZmYiBsZWdhY3ktdHJ1bmsKKzM1MzI2IDFjMDY2MzcxNmRiMzU3ZGI0Mjc5YThmMDI2MjNiZWY5MGIzZTA3YjEgbGVnYWN5LXRydW5rCiszNTMyNyA4YTM5YTk4Yzg3ODAyNGMzZGYxYWViMzBjZDA3MDdlNjQxNGJiOTE5IGxlZ2FjeS10cnVuaworMzUzMjggNDYzMmZjYzU1NDRhMTQ2Y2NkNDNjODFjZmYwY2JmNmViZWQ2ZjhlYiBsZWdhY3ktdHJ1bmsKKzM1MzI5IDgzNTAyZTMxZTA2ZTE5ZDA1ZThhYWI2OWIwMTk3MWVhNGQ3N2IyOTcgbGVnYWN5LXRydW5rCiszNTMzMCA3ZTRlMzEzN2IyNTI3YTI5ZmYxZGM3MjlhMDZhNjk0ZWZlM2I1OTZkIGxlZ2FjeS10cnVuaworMzUzMzEgNzhmNzU4YWJjNzlmMjllMzNhNjVkYjEzYTNjNDAwYWZhMTcwYjIwNiBsZWdhY3ktdHJ1bmsKKzM1MzMyIDhlYzNhYTg3OWVlZWEwZmY5MDM0N2EwYTMxMzA0NDZmODdiMDg1OWIgcmVsZWFzZTIyLW1haW50CiszNTMzMyAzYzliNGZjM2VmMTQ3YzA5OWNjMjBkNzA2NGNjODAxM2NjMmJkOTM1IHJlbGVhc2UyMy1tYWludAorMzUzMzQgYzM3YzQwN2ZhZjUyZWQ5MmMxMmZkNzRkOWI3NjNjOGUxYmIyYjYxOCBsZWdhY3ktdHJ1bmsKKzM1MzM1IDE5YjZmZWMyZTUyZDI4YjI0MGNiNWU0MTBkZDYxODJmNWUyOGVkYTQgbGVnYWN5LXRydW5rCiszNTMzNiA2NTBlZjAwOWUwOGMxOTZmYTQ2YmQ3Mjc0ZDEzZWVjODUyNGU1ZjQ2IGxlZ2FjeS10cnVuaworMzUzMzcgNjg4MjI4YWIwNWFlYjU3NDI1MTBjMWJkZjc5ZjMyZWM2YzdhODUyNSBsZWdhY3ktdHJ1bmsKKzM1MzM4IDgxODNkZDFhNGZlNmJiY2YyZmU5NjRlOTA4ZDRlMmYyNGYzMTg4MzEgbGVnYWN5LXRydW5rCiszNTMzOSBhOWZkNDc2NDRjMGY3OThjZTVjMjNjODY0MjA3MzExMTQ5NTRkNjkxIHJlbGVhc2UyMy1tYWludAorMzUzNDAgZjJkOTRmZjE1YWM4ZjQyNzlmMTljZjNhOGNjNGYxYjliZDRiMmJhNyBsZWdhY3ktdHJ1bmsKKzM1MzQxIDVlNzQ1NWZiOGRiNmI1ZmU0YWI1ZjVmZGEyZmRiZjRhNTUwMGViM2YgbGVnYWN5LXRydW5rCiszNTM0MiAyMjIxZjk2MDE4MGRmNzJlYTQ4ZmZmYjQxMGIyMjhjNDBhOWVhMjc1IHJlbGVhc2UyMy1tYWludAorMzUzNDMgMGIxMzc2MTgyMGIwYzFkODg5OGVlNWNjYmRiMmU2MThkZmI5OTZjZCBsZWdhY3ktdHJ1bmsKKzM1MzQ0IDdhYmY0MjQ3OTg4MGU1ZjU5NWFmNmVhM2Q3YjcyNWJiODkyMTZiYWEgbGVnYWN5LXRydW5rCiszNTM0NSAyYzYxMjNkOTI1ZmVlOTZmZWQ1MDM3YzJmY2M1ZTE0MTM1MmZjNDk2IGxlZ2FjeS10cnVuaworMzUzNDYgNTQ2ODVkOWZmYjg3NmJhNGJmOTdhMmY4OGZhOTEzYjBjZDdhYTQ4ZCBsZWdhY3ktdHJ1bmsKKzM1MzQ3IDRiMmQ2ZDEzMDA2MTk5OWE5OWRhZDhmZmNkZjIwMzIyZGIwNDkzOTMgbGVnYWN5LXRydW5rCiszNTM0OCA2OWFjNjcyYjQ5YjNlYzdhZWQzM2RiNmRmNThlOTYxMjU4OGY1ZTU5IHJlbGVhc2UyMy1tYWludAorMzUzNDkgY2EzYzk5OGFmYTU1NWZkMzNkZGM1NTFiMGRkNjRhZmRhMGQ4M2Q1YyBsZWdhY3ktdHJ1bmsKKzM1MzUwIGM3MjNiMGMxYTdlMWRiNGFlY2EyOGU1M2MyMDBmNDRiZDUxNTc2ZTAgbGVnYWN5LXRydW5rCiszNTM1MSAyNmE4MGYwYWY5ZjNhZTc1YTIyZDA2MDcxMDY2NTZkZTFmMzM3YzliIGxlZ2FjeS10cnVuaworMzUzNTIgYzY3NTNkYjljNmFmOGUyZWQwNGZiMDY5MDk1NzQyNDNhN2JmMzRmNCBsZWdhY3ktdHJ1bmsKKzM1MzUzIDcwNmQ2ZDExZWUzNjM4MTkzZWE2Y2IzZTI5MzlhZjk1NjQ1N2IwMmQgbGVnYWN5LXRydW5rCiszNTM1NCAxMjM3MThkMGRjMDllNDg4NTM3ZGM3YjIyYjU1MmVlMTA0ZWZlZGM5IGxlZ2FjeS10cnVuaworMzUzNTUgNjVjNTAyYjYwYjRkMTljMTIyNzE4ZDAxYTRjNGNhZGQwM2I3NGIyZSBsZWdhY3ktdHJ1bmsKKzM1MzU2IGFmMjVjY2M3NWZlYWNiOWU2NGI3NjgyNmExOWM3OGRiODU5NjJmYWIgbGVnYWN5LXRydW5rCiszNTM1NyAwNWUxYzI3YzBhNzRkODFiNTBjNDI2ZTUwOTI2Y2QzMjlhNzkzMDZmIGxlZ2FjeS10cnVuaworMzUzNTggY2Q4N2ZmNmVhODE0MGVmM2UyMWQ3Zjk4NDc3YmNhNjdhYTRhMjMyMiBsZWdhY3ktdHJ1bmsKKzM1MzU5IGYxZDBmYTY5OGI3MzdiOGMzNjIyYWY1MDliOWRhNDYyNWI1MWFhMDYgbGVnYWN5LXRydW5rCiszNTM2MCBkN2ZmMDUxMzdjZWEzZGY1NjUyMzNiMjNhMTEyYWE5NWI0Y2M1NGI0IGxlZ2FjeS10cnVuaworMzUzNjEgZjNjYjRjYWQ1ODVlNjY5NDk4ZjcwY2QyMDFmYWQ2NzAxM2FhMDUzZCByZWxlYXNlMjMtbWFpbnQKKzM1MzYyIDA2ZDgyNGY1ZjJjOThmZjU1ZmJmOGQyMjAzZGFkZTU2YTNjMzY5MjkgcmVsZWFzZTIzLW1haW50CiszNTM2MyAxNTU1M2ExYjdhMTdhMTAyNzQxMDE0Y2Y3NzIzMGI0OTIyMWU2N2Q0IGxlZ2FjeS10cnVuaworMzUzNjQgMDcxZWUwZmY3NDY3ODk2OGMyY2M4ODY1MzAzZTk5NGYzMGQ4YmNkOCBsZWdhY3ktdHJ1bmsKKzM1MzY1IDJmZWQzMzFkZTAxNGE0YzJjZjllNjcwM2Q5MDFkMGI4NzU2NDUzNDUgbGVnYWN5LXRydW5rCiszNTM2NiBmZDIxMDNhZTZmMjlhMWUwNmIzZmY4Y2Y1NDhhZGI2NGZjYTJkNGEyIGxlZ2FjeS10cnVuaworMzUzNjcgOGVjZWU4ZjQ3MTA4YzhiNWE3NWNkZWRjZGMyZDc2NWYwNjFjZGViZCBsZWdhY3ktdHJ1bmsKKzM1MzY4IGFlOGRiZjUwMDE3MmExYWMxYjkzNTRiMThlMTk1MGNjZTE3MGM0MmMgbGVnYWN5LXRydW5rCiszNTM2OSA4MGJkMmI4NWVkOGExZTk5NzlhOGU2OWE0M2U3ZWU2OGJiZjVjZDc5IHJlbGVhc2UyMy1tYWludAorMzUzNzAgZGZkYmMwMDU4ZDg1OTBlMjE4NTljYTAzNjc2NWFhNGViZmQ3ZWY5NiBsZWdhY3ktdHJ1bmsKKzM1MzcxIDA5NzlmYTA2MmRlYmZlN2Q2YzVmMDU0YzI4N2NiYjJmYmFiNDNlZjggbGVnYWN5LXRydW5rCiszNTM3MiAyNDhiZWI5OWEzMDRjOTNlYmE0NjQwZGRhODI4ZTAzYjMwZTQ2MzBjIGxlZ2FjeS10cnVuaworMzUzNzMgNDZkZjA4ZWIwODM5ZTljZjU2YTgwZjA4NzBjOWE2MTkxMjdiNTIwYyBsZWdhY3ktdHJ1bmsKKzM1Mzc0IGMyZGY4YTVjMzU3ZTAwZTYwMWQzYmUwYWMxNDUwNjUzNmZkZjMxMGMgbGVnYWN5LXRydW5rCiszNTM3NSA3MzlhYjlkZTJhMWJhYWQ1ZmUxMWI4NzgwYjNhNmVhY2EyMTEyYzIwIGxlZ2FjeS10cnVuaworMzUzNzYgNWIzODk4ZDliYTU5NzdhYzY4MDRiY2JiOGNmMWNhYWFjMDFiYTU5ZSBsZWdhY3ktdHJ1bmsKKzM1Mzc3IGViYmE1NTgyZGMwZGI1MzYxZjRiNDJjMDMwZWY0ZTI1MjYzOGExZGIgbGVnYWN5LXRydW5rCiszNTM3OCBiYzAwNjY4MmFjYjIxYTFlMWVkY2UxYzAxMjhmNWM1MDVhOGQxM2Q3IGxlZ2FjeS10cnVuaworMzUzNzkgOGY2MDIxN2E3NTQ3NTk5ZGEyMGE1ZjI0MGVhN2MzZjViNTE1Y2Q4ZSBsZWdhY3ktdHJ1bmsKKzM1MzgwIDQ3ODkwYzM5NWViYWEyMGU0YmUxY2I3Zjc1NGM0ZmI0Y2JjYmY0NWMgbGVnYWN5LXRydW5rCiszNTM4MSA2MzVlZWJjNDczYjA2NWM3NTRjOGZjZTQzZDdhMzIzNmE0MzAxMWU1IGxlZ2FjeS10cnVuaworMzUzODIgNzA4MGEwMjEwY2YxODdmMjA5YzIzMzNiMzZjNTg5M2IzYTA1NDE2MSBsZWdhY3ktdHJ1bmsKKzM1MzgzIGQzNGU3ZWFmNGNkNmE3NDdlODM2ZmVkNjFjYTkwYWFlNjhjMDNjNWYgbGVnYWN5LXRydW5rCiszNTM4NCBiNzk1NDMzZTBiZDkxOTQxZDhkN2MwYTkxNmFkMTFiOTNhM2VkOWM5IGxlZ2FjeS10cnVuaworMzUzODUgMWIwMmM3N2NkY2ZlMTM1YzBjMzI3ODI0ZmY4OWZjZTIyOWM2MTI4YiBsZWdhY3ktdHJ1bmsKKzM1Mzg2IDE1NDNhZmFiMWI2NzJiMTI0N2IxYmU4NjA1YjE4NzQ3YTE5ZDkyYzcgbGVnYWN5LXRydW5rCiszNTM4NyA3ZTRkZDkzZjRiMjcxMzEyNjYwNjE5NDBhNGE4ODhkNGQxZWE0ZDM2IGxlZ2FjeS10cnVuaworMzUzODggNzJlMzhiZDk0ZTU2OThmNmUzMDlhZjMyMDIwOWYyMzlkMzc5MTMwYyBsZWdhY3ktdHJ1bmsKKzM1Mzg5IDMxNTc3YzI4MTVkZTUxZDk3YTI4NDZlZjc0OTMxZGY1NzhhZTViMzUgbGVnYWN5LXRydW5rCiszNTM5MCBiNGU0ZGJkMjRmZTc3ZmM0ZTJlYjZhOGE2Y2YyYzA5OGM5MGY1NzM0IGxlZ2FjeS10cnVuaworMzUzOTEgMjI4ZDI2NGM1ZmJiZDlkOGFiMTUzNjQ1N2ZhMjg5ZGJkMmNkNzc5YSBsZWdhY3ktdHJ1bmsKKzM1MzkyIGRkNjllM2Y1MjI1YmFmZTUwODk4MWFjMmRkNmRmMWI5ZWY1ZjJhYTEgbGVnYWN5LXRydW5rCiszNTM5MyA1YmQ0NTU2MzhjN2E4YTQ5ZDRkZjMyOWE4YTJjNGExNzM5MGYzMGJkIGxlZ2FjeS10cnVuaworMzUzOTQgZWM2YmEwM2JhOTYyN2RlYjhmMzQ2YTA2NGMwMWNjNGZjN2VmOGY4MiBsZWdhY3ktdHJ1bmsKKzM1Mzk1IDA0ZWIyZWJiNDZlMjdhMWYyNmZiODc3MDVlZjlhODQ3ZDlmOTAyNjIgbGVnYWN5LXRydW5rCiszNTM5NiA5NWJmYjY1M2ZmZmJhMDEyMDg5YTIzZWQ0YThmMzU5ZTk2ODkyYzY3IGxlZ2FjeS10cnVuaworMzUzOTcgMTI1M2Y2ZTIwY2RlZTA1YjRkNmQ3N2Y1MmM3Nzg5NDhiODFjZGM2YSBsZWdhY3ktdHJ1bmsKKzM1Mzk4IDBkNTNlY2YyMmQ5MTUyM2RhNTAzNjRmYzNiZTMxZTNhNmU4NjRmYTYgbGVnYWN5LXRydW5rCiszNTM5OSAwNDcxNDgwODljMzVkNTllN2FjYmFmYmM1MWFmNzMyOGM3NzE5Y2I4IGxlZ2FjeS10cnVuaworMzU0MDAgNDJmODgyMDY4NmM5ZWJhN2Q5OWE5MGRiODQzYjBkMWJhMGE4NDAwMCBsZWdhY3ktdHJ1bmsKKzM1NDAxIGVlYTY3NGJmN2I1OWE4NmFlMjE1OTZmODk5MzM1OTIzZDRmNGQ0ZjggbGVnYWN5LXRydW5rCiszNTQwMiAzMGUzMDViZmRkZGJkYzQ4OGQ3NzUxYmNlNTYxZjhhZDA2NTJmYTQ0IGxlZ2FjeS10cnVuaworMzU0MDMgYTBmYjI3YjQ0ZDc4MzgzYTM4YmZmN2IyMmYyMDM4YzViY2I1NzM5ZiBsZWdhY3ktdHJ1bmsKKzM1NDA0IGRmMDY0NzljNmU3Y2QxMWQyZDQ3MTdkNmZjNjBiM2JkYTFkMDMxZTUgbGVnYWN5LXRydW5rCiszNTQwNSA1NzYwYjRkZDNhMjI0ZTQ3N2UxZjFhZTU2YTVmZmM1NDY5M2JmMDNhIGxlZ2FjeS10cnVuaworMzU0MDYgODNiMDM4MmUwZDM2MjVhYTlkNzRiMDc0NjM5NzRiZWVhMTVjODExMiBsZWdhY3ktdHJ1bmsKKzM1NDA3IGQxMGM3NzhhZjE2N2EwZjNjZWY1ZmUwNTRkMzc4YTAyMDczMDY0YWMgbGVnYWN5LXRydW5rCiszNTQwOCA3Njk0NDA4NGU3NTZhMTZiOGQ1ODFjOTA0ZTE2NGZmOGY4NmU0NWY5IGxlZ2FjeS10cnVuaworMzU0MDkgMjQzNjQyYmJkMDNmMzVlNDVlMWM2YThlMzk3NGVkMzEzNDA3MTFjYiBsZWdhY3ktdHJ1bmsKKzM1NDEwIGJlNzgyZDA3YzUxOGQyOGIyNTgxNmZhODQwNmFiZGRlYjUxOTRlMmEgbGVnYWN5LXRydW5rCiszNTQxMSAzNWNiODExNGI0NWMyNWIwZTkzYTIyNDBjNzk0MmY2NDNhYmYwZjQyIGxlZ2FjeS10cnVuaworMzU0MTIgZWYwNmMyMTI0Y2IwNmUxZjUwOTNkNTNjZGNkMzc2MGZhNzI1ZTljNSBsZWdhY3ktdHJ1bmsKKzM1NDEzIGYyNjAwNDQ4ZTg1Yzk1MDY1NzdjNjA3NWIwMDkyMWE4ZjkyZGFmZDEgcmVsZWFzZTIzLW1haW50CiszNTQxNCA3ZmZmZGI5NGExNzJkYTQ1ZDIxYzFlNmQ2ZjhmNTgyNTkwNWIwNmRjIGxlZ2FjeS10cnVuaworMzU0MTUgZjI2ZDgyODZhNDNlOWU0NWM0ZmYwYTkyMGZmOTcwMzRhZWJhMmYxNSBsZWdhY3ktdHJ1bmsKKzM1NDE2IDAzNjkzYWY0NmFmYmNlYmU2NmU4OTkwOWY2OTBhNjA0N2UzZjU3ZDIgbGVnYWN5LXRydW5rCiszNTQxNyAyNmNmMjU4NmYyZmQyOTllMjA3NjlkMDg0ZTM0OGFjNTQ3YTBhMTY2IGxlZ2FjeS10cnVuaworMzU0MTggYjg5OTJlNzgxODQwYTA4NWEzNDJjNTA1MTMyOGZhNjg1ZGY1MDQ3YSBsZWdhY3ktdHJ1bmsKKzM1NDE5IDIwNmQ4NTc1ZjY0NDE5ZmE2NmQzOTZhMThiMzk2MTc1OWJmMWMyNDcgbGVnYWN5LXRydW5rCiszNTQyMCAzNWY1NmUwODcyN2Y5NTk1MzNjOTZiNTNjY2MwNTRmOTAwMzJkMjljIGxlZ2FjeS10cnVuaworMzU0MjEgMTUyYWRhZjc2NWViMmYwNWYwNTIxODkwM2FlNjgyMWQ0ZjMyYjhmNSBsZWdhY3ktdHJ1bmsKKzM1NDIyIDg4ZTljMDQ0NGQ0ZGRhN2VjNzg2M2IyNzJjNTg3MDhkYjc2YWI3YWMgbGVnYWN5LXRydW5rCiszNTQyMyAzZjY5M2E3NzI2OTRlMjMxMTk3MDhmODRkZTg0MjY4ODc4Y2FiZjlhIGxlZ2FjeS10cnVuaworMzU0MjQgYmE5ODk5NmI0ZDUwYTgxY2JiNjBlNTllY2ViMTU4NDhkOWU1YmM3YiBsZWdhY3ktdHJ1bmsKKzM1NDI1IDlhNGM0OWM1YWMwM2NhOGIwZWQxNzExZTQxNWIyZTNkYjUxODk5MmQgbGVnYWN5LXRydW5rCiszNTQyNiBhZTYwMzdhM2FkY2U5OTU1NmM1MjAzNWVkZGVjOGVmZDhjN2VjZGFiIGxlZ2FjeS10cnVuaworMzU0MjcgYTM4MzBhZTI5NGFlNjgzZGIyMWM0MWE0N2ZlNzQ4NGRjNTRkMjZjMCByZWxlYXNlMjMtbWFpbnQKKzM1NDI4IGFlNmZkYTk2MGQzOWJjMzA0OWRhMDU0MDI5YjI5ZDFlY2Q0NzAwMmUgbGVnYWN5LXRydW5rCiszNTQyOSA2MDZmMDQ3M2E5NjY4N2Y0ODlmNWZjM2MzODAyMTQ5NTM0NGU0MTYzIGxlZ2FjeS10cnVuaworMzU0MzAgNmJjY2E0NzkxODQ5OWI1ZGVmMTA4ODRiYzhjMWFhY2U0MTViYTQyYSBsZWdhY3ktdHJ1bmsKKzM1NDMxIDA4YzNiNDkwNTk2MWRmNjAzMmRiNjQ0ZDdhOTEzNTgyMzA3NzdiNDkgbGVnYWN5LXRydW5rCiszNTQzMiBhNmJjZjRkZjFhODU3NmRiYTlkZGVkNTdlNWU5MDFhMTU0N2U2OTg1IHJlbGVhc2UyMy1tYWludAorMzU0MzMgNTMwYTBkZTM1MTdhYWYwZTk4Mzc4M2U5YTc1YWI1OTE5MTVmNDUyOCBsZWdhY3ktdHJ1bmsKKzM1NDM0IDI4MzBkOGUxYWYxODVhNTlkYzkyMzU4ODFiZjY5YWZhMjQ1MDBiZGQgbGVnYWN5LXRydW5rCiszNTQzNSBmNzM3NGUzYjI3OWE4OGM3MzIyMWYwMGRjOTk0NWRiMTBiZGM3NzdlIGxlZ2FjeS10cnVuaworMzU0MzYgMmJmYzg4NjZlYTk5Mzg2OGVjMjI5ZjcxNGI1MTQzYjQ0MGVmZDE5MyBsZWdhY3ktdHJ1bmsKKzM1NDM3IDdiYjAzMDA2NmVhNGI2NTA5NzMxMTRlZWRlOGE0OGRjNjY2NTMwZDAgbGVnYWN5LXRydW5rCiszNTQzOCBjMGE1NDJhMWZjMWM4YjliN2JjYTBhZTY1ZDUwNzcxNzRhMmE5Y2U4IGxlZ2FjeS10cnVuaworMzU0MzkgZGE3OGI5NmI2YWFiZWIwM2U1OGY5YWMyMzVmOWFiNjBhMzg4N2U4NyBsZWdhY3ktdHJ1bmsKKzM1NDQwIGJiM2JjY2IzYjc3ZDVhYTAwMGY1MTE2MjhjMzZhNTI3YWE3MDgyM2IgbGVnYWN5LXRydW5rCiszNTQ0MSBjZTgzYWIwN2VhMDczMDg4NjRmNjFkOWRjMGY4ZjNkM2UzZjNkOTJiIGxlZ2FjeS10cnVuaworMzU0NDIgNmI3NTA2MDQ2NGY0NDYyN2Y3N2Q5ODU5ZWU5NTc5M2FjYTY2NmI4ZCBsZWdhY3ktdHJ1bmsKKzM1NDQzIGMzMjM4MWY0ZGM2ZjJlNTQ0N2Q1NmRiMmQwYjM1MzQ3YzNjOWQ5NGUgbGVnYWN5LXRydW5rCiszNTQ0NCAwMTZmMDA2ZDcxY2MzZmJjMGZlNGVmZTM5M2Q2NTk4OWE2MTllMGMxIGxlZ2FjeS10cnVuaworMzU0NDUgYWFmZTVmZWY1OGJhYjdjMTIzYjNkZDk3Njk0NzFiZjc5Nzc5ZDUzMiBsZWdhY3ktdHJ1bmsKKzM1NDQ2IDgyMzI3OWFlNDNlYjEwYWY5NmYwNDQ1ZDlmZGZkZWU1NjA3NzEwYzYgbGVnYWN5LXRydW5rCiszNTQ0NyBhODg1ZTRkNjRhZDBiODk5NDcyMDkyMTlmN2EwNDk5YTkyNjc5NzIzIGxlZ2FjeS10cnVuaworMzU0NDggY2U3MGYxNDQ2ZjM5OWUxMmU3MjJiOThhMDIyN2U5NzNlNzVhMDdhZCBsZWdhY3ktdHJ1bmsKKzM1NDQ5IDBmYjUwNjZmYzJhN2ZkNDY4ZjBlNWI1YTk3MDhlZjE3MTI4MGY0N2QgbGVnYWN5LXRydW5rCiszNTQ1MCAxMmJmMzdhNTgwMTVhZjkzNjliODlhNzdiZGNiMzRlMjI3NTY5MmE2IGxlZ2FjeS10cnVuaworMzU0NTEgNWU4YzZmMzhlMTViNWFjZTE1Y2E1Nzk3MDBkMWY4YWE0YTdmY2QxYSBsZWdhY3ktdHJ1bmsKKzM1NDUyIGY3YmZkOGY5MWMyYjkwYzc0MjMxY2ZjMmQzNTNmMGIxMmU0ZWU3MDAgcmVsZWFzZTIzLW1haW50CiszNTQ1MyA2ZDhhMTQxNDgxNTliMWJkNjJhMjIxNjNiNzYyMWIzMDE2NTQzNDkyIGxlZ2FjeS10cnVuaworMzU0NTQgYWQ1YzYwODUwMjNlMjQ5MzEzOWUxNmMxMDFkOWEzN2E0NzNkODJiYSBsZWdhY3ktdHJ1bmsKKzM1NDU1IDMzMmQzZmZhZGYyODdlYjI0YTRlY2ZjY2QxMDkyMThjNDdmMDVkNjAgbGVnYWN5LXRydW5rCiszNTQ1NiA1MDc0MjJlYWE3NjM1OTNlN2I5NTk5MGNjOGUzODBlMWQ3YzljM2IyIGxlZ2FjeS10cnVuaworMzU0NTcgOTJkNDAyMjA5ZTkwZjk3N2VmMzViOGYyN2NlMjk0N2YwMzUyZGUwMiByZWxlYXNlMjMtbWFpbnQKKzM1NDU4IGQwODc3MjY0MTdlYThhMTNlZDUzOWU1YzQxYTdmMWUyMjJmMWE2MzQgYXN0LWJyYW5jaAorMzU0NTkgMDNiMGZkMWNkNzIyNTg0YWFiN2I2ZDk2OWRmNzI2ZTRkMzYwYmNlOCBsZWdhY3ktdHJ1bmsKKzM1NDYwIDZiZjg3OTg1YWExZTk4ZTBhODRlMWI3NjVlZWRjZTRjYTY4YjI3NDkgbGVnYWN5LXRydW5rCiszNTQ2MSA1ZTYzYzJlOWI3OTI1MzEzNzAyMmFkYWRhMjY4M2U1NGE5NzBmNjE5IGFzdC1icmFuY2gKKzM1NDYyIGNlYjZhYWRkYWJjYzVkOWE2ZjQxZGJjNWIyZjFhYzc2OWIyYjhlZGMgbGVnYWN5LXRydW5rCiszNTQ2MyA1YjIyNDdiOTUzMjNjMzI3ZDUwYjNhYTg0ZmI3NjJmZDhhZTVjZjE4IHJlbGVhc2UyMy1tYWludAorMzU0NjQgMzZhMmQwZThhOTkzMzUwNDlkMjYyOTczYWMzMWNiMmEzMjA0N2Q1MSBsZWdhY3ktdHJ1bmsKKzM1NDY1IDkzZmI0MDgxZDEwN2ZiNGU5OWI1MjU4MjE4M2NmYjI2MTlkN2Q1MmUgYXN0LWJyYW5jaAorMzU0NjYgZmZhZTJmMWZkZDQ2YzhjNmQxODk5ZTEzYzVlOTNiNTc2MzUyMjZlYSBsZWdhY3ktdHJ1bmsKKzM1NDY3IDQ5MGViNjRiYzVjOTdiYjViMDhhNjJhZmQzYjU1N2IzMmRhOGZkNTcgbGVnYWN5LXRydW5rCiszNTQ2OCAxNzllMDQzMDdlY2QzZGE4YWYyMWU0MTIyM2Y4YjBkYjMxYjJlNzE1IGxlZ2FjeS10cnVuaworMzU0NjkgY2VhYWRiZDdmMTlhN2UyNmY0NWVhODUxYjE3YjJlNTY5MWNlZTM2YiBsZWdhY3ktdHJ1bmsKKzM1NDcwIGQ5NDhkZWU2ZjRhMWJlZDliZTE5NTg1ODk4ZTMxOWIxZDNkNjdlMDggbGVnYWN5LXRydW5rCiszNTQ3MSAwYjAwODZkNTNiOGU4Nzk1NzYxNmM0OWFiMDQ2ODE1ZWYzZmNjYjI3IGxlZ2FjeS10cnVuaworMzU0NzIgYzRlYmY3Y2ExYmRkMDFmZGQ2ZjUwYTUwZjM0MzVjYTJhYjllM2U0NyByZWxlYXNlMjMtbWFpbnQKKzM1NDczIDY1YjBjN2I1NjFkYWY0MmY2N2NmMTU0NTk3NjY4NDk1YjkyMGQ3ZjQgcmVsZWFzZTIzLW1haW50CiszNTQ3NCA1MmJhMWEyMmNjMmUxYjBmODIyMjllZTU0ZGY4YzhiZGNmNDU0ODM5IGFzdC1icmFuY2gKKzM1NDc1IGNkNDc2NmIwNjM3ZWExZDIyYjJmNmIwNTFmODYyMTZiOWFiYWM1NDAgbGVnYWN5LXRydW5rCiszNTQ3NiBkNjNjNTYyZWJiZTU3NDJkMzkxNmNjN2ZhMTBkYzE0ZGZlMjE3N2Q4IGxlZ2FjeS10cnVuaworMzU0NzcgOTEyNjBmYjNjODE0NzYzNzcxZWFmZjQ0YmM3ZjgwOTcyMzc3YTE2ZCBsZWdhY3ktdHJ1bmsKKzM1NDc4IGNjN2E5ZmU4MGIxYjc1NjBmNzc2OGY1YzM2ZTFkZTY2ODQyNWQ0ZDMgbGVnYWN5LXRydW5rCiszNTQ3OSA4MjBiYjgxOGQ2OTg0YzU5YjZiMjdjMmIzODUwNzZhY2JkYjc4NjJiIGxlZ2FjeS10cnVuaworMzU0ODAgNjYwZmMyNDJhNzY2OWIwNmJjZWVjODM4NzFhNmM5Y2IyMDQ0ZmUxNiByZWxlYXNlMjMtbWFpbnQKKzM1NDgxIGZkMjZmMjllN2VhYjhmMmZlMWE0MWQ1N2I5NmVlYTBlOWY2N2YwZjEgbGVnYWN5LXRydW5rCiszNTQ4MiAwNDIwZDNjZmU0YTRhYWZkYzEzZDhmYmFkM2Y1Mzg5YWUxNGE0NzJhIGxlZ2FjeS10cnVuaworMzU0ODMgOGVhNDVjZmUxN2ZjNjAzOGZiZDBhZmIyNDNlZmVlMTE3MjhlNWRiYiByZWxlYXNlMjMtbWFpbnQKKzM1NDg0IGM4Mzc5NTMyNDA0Mjc0MmM2M2NmY2QzODhjNDYyYmUyMDMyNmY2MTIgbGVnYWN5LXRydW5rCiszNTQ4NSBmYWZmZDk1NzJkOGQzMjM5YTAyNTE4ZjY1MzM1NTI2MGZlZTVjM2I0IHJlbGVhc2UyMy1tYWludAorMzU0ODYgYzc1ODc2NDMyZmM2YjVhYjZkZjExMzYwN2FlYjYzNWUyNTlhNmZlZSBhc3QtYnJhbmNoCiszNTQ4NyAyODQ2Njk0MDliZWI0NmFiZDFjNWFkYmQzNjk1NzMyOGM4MzM5NTk1IHJlbGVhc2UyMy1tYWludAorMzU0ODggZDY5ZmIzNWYxZWFlYTQzOGE3NWNkODJjYTk3OGViNmQ5NDBkMjBkNCBsZWdhY3ktdHJ1bmsKKzM1NDg5IDdhNDM0ZjQ5M2MzZWE4Yjg5ZWRjOTRlM2NlNjFiYWZiZWY4MDhmMTQgbGVnYWN5LXRydW5rCiszNTQ5MCA2Mzg2NTYxMWVkMmZlMzUyNDUwMmNmMDU3YjhkYWQzNmYyODM2YjU3IHJlbGVhc2UyMy1tYWludAorMzU0OTEgMjZkMGZkMDNkNWIzMGVkYWY2OTEzYWNhMTkyYjk2MWQ2ZDQ0MjA2MSBsZWdhY3ktdHJ1bmsKKzM1NDkyIGM0ZDlhOTZiZTJkZGNhNDUzNWI0MzdlOTcxM2ZlZWRkNDMxYWU1MDIgbGVnYWN5LXRydW5rCiszNTQ5MyA2NTA5MzU0ZTc4NzY5ZGI5YTJhNzZlMzM3ZTk2NjRjODdlNzgxZWEwIGxlZ2FjeS10cnVuaworMzU0OTQgMWVjM2Q2OTg0YjBmMTA4Nzc2MjhlMmRhNzYyYTYzOGE4MTg5M2EyZSBsZWdhY3ktdHJ1bmsKKzM1NDk1IGI5Njc2MjdhMmY0ZmU5YzlhZDU0ZmJkMDQwNmIwMzMyNzhlYTMwMzcgbGVnYWN5LXRydW5rCiszNTQ5NiBjZTY4ZDdjMDYyOWNjMzgxNjcwZWFiYTE3NmFmZGVlOWU1Yzg4ZmJlIGxlZ2FjeS10cnVuaworMzU0OTcgZTgzMTI0MDJjODEzZDhlOGQzMDgyMTZiZWZhOTk5ZDg2ZTQ3M2EzYyBsZWdhY3ktdHJ1bmsKKzM1NDk4IGMwMjM1MDFjMzhkNzgzZTlhMzQwZWZiM2E3YzkyMDYxNzEwYTRjZmUgbGVnYWN5LXRydW5rCiszNTQ5OSA5MjBhZDQ0NjVhYWVhNWEzNTQxNWZiYWY5ZmI3OWY5MzJjN2RmMjBmIGFzdC1icmFuY2gKKzM1NTAwIGQ4OTgyMzJkY2RkYmJhODA1ODIyZmJkM2NkMDE0MDgzNzdjODE2ZjQgbGVnYWN5LXRydW5rCiszNTUwMSBlZTBiYTAwYjI3N2NkZDIzODU5MzVjNjZhYWYyMGY0ZDhjNDNlZDc0IGxlZ2FjeS10cnVuaworMzU1MDIgNmZjYmY2YWM2OTlhODkwMjk2ODlhMTc4ZTBhY2UzM2M1MjI1YjBiOSBsZWdhY3ktdHJ1bmsKKzM1NTAzIDU3OTY1YjJkYjIwYzZkYWQ5Yzk3OTA2MjhmM2U2OWU3NzQ5ODAzOWUgbGVnYWN5LXRydW5rCiszNTUwNCAwN2EyYjRjNWQ1MDM0MTc3MmZiYzJhZWU1ZTNjMjg4NmY4Mjk0MTMyIGFzdC1icmFuY2gKKzM1NTA1IGRiYThkYjQxMmUzNTQ5OTZiMTgzODUwZGMzNWU2ODQyYWIyMTVlODAgbGVnYWN5LXRydW5rCiszNTUwNiA0OWVjMGQ4ZjA4ZWNkM2Y3MDU3NDFlMjEwYmZmZmIxMGVlZTdhMzhjIGxlZ2FjeS10cnVuaworMzU1MDcgYWUwMGQyZDEyN2QxZDBhN2Q3OTVlNmI0OWNlMmQ5Mjk2ZTdmMWM1ZCBsZWdhY3ktdHJ1bmsKKzM1NTA4IDFmODA2Y2JlMmNlMDQ4MWM3N2VhYTM1ODNiODhiMjdkM2Q0MzFmZDggcmVsZWFzZTIzLWJyYW5jaAorMzU1MDkgNGViNDU4YzM5NDFkNWU4NWU3MzM1MDZmZTEyZDE3ZTNiNzE0MTE5YiBsZWdhY3ktdHJ1bmsKKzM1NTEwIDMxMDFjMDBmNzU0N2YwMWVjZTQ5YWQ0ZTI4ODFhYWNiMDllN2E0MDkgYXN0LWJyYW5jaAorMzU1MTEgYzA2MWYyNWY3NGUwY2RlYmE3ZjI2ZWJmNzA1MzU5OWViOWFiN2FiMCBsZWdhY3ktdHJ1bmsKKzM1NTEyIDkwNzQ1MGU0YmM2NzU3ZGExYTRhN2JkODg0NDZjZmE2MmFmZWE2YzAgbGVnYWN5LXRydW5rCiszNTUxMyAzNDc1ZTQ1Njg0NzEwOTU4ODg3YWI4MzRhNmU3Y2YwMTRkYWE3YjIzIGxlZ2FjeS10cnVuaworMzU1MTQgOGJmMTYzZDA2ZDI5YWY4YWVlOWNmYWU3NTdmY2ViZmQyYmI0NGVkZCBsZWdhY3ktdHJ1bmsKKzM1NTE1IDdiNmM4MjI5Nzk5YmFlOWJmMWJiYmE2YmM1NTg1YmNjYjY5YWQ0YTEgYXN0LWJyYW5jaAorMzU1MTYgNjcxYWRlZTZhM2UzYjExZGQ3ZWNhMmI0Zjg2ZDNjOTc5MGNiZTEzZCBsZWdhY3ktdHJ1bmsKKzM1NTE3IGY1NGNkYjAxYTFhZDVkZjQ0ZjA5YWQxODkzMzEzZWZkNmZiOWQxZjMgYXN0LWJyYW5jaAorMzU1MTggMTRmOGM5MzNmODhjMDk5YzAwNjk2NjExOGY3YjkyMjRhMWUyYTRmNyBsZWdhY3ktdHJ1bmsKKzM1NTE5IGZlNTU0MWFhZTJkOGY4NzRmNzEzY2I3NjIzMzc4MWE5ZjRlNjQzNWMgbGVnYWN5LXRydW5rCiszNTUyMCAxZDNlNDhjY2FkNTczYTU0MWMzMWUzZDc5YmI0MjM2NWE3MDU3NzJkIGxlZ2FjeS10cnVuaworMzU1MjEgNDUxNDRjZGI3Nzk0YTRhNjVjOTdhMzYzODMxYjdkODQ0MDNmZTdkYyByZWxlYXNlMjMtbWFpbnQKKzM1NTIyIGVmMTgwODU2ZGY3NjE5MThmZDhiZGRmMGNjN2NmNjA1N2U4MTRhNGIgbGVnYWN5LXRydW5rCiszNTUyMyBjMmIwMWFhNDkwZTE0N2I1YjczY2JjYjhjZDM4MjE2NjNiOGU0MjhlIGxlZ2FjeS10cnVuaworMzU1MjQgMmViMzE3NWZjNTliNzJmMmNlOWFjY2NlNmZjODhlOGU4ZGI3YzI5NyBsZWdhY3ktdHJ1bmsKKzM1NTI1IDhhNzE0ZmVjZDA1OWJkZDgzN2Q4N2E2Mzg1ZjkwZDIzMGY0MWU3NTYgbGVnYWN5LXRydW5rCiszNTUyNiBhNWJkOGI0ZjNlNTVmMTMyOTUzNjYxOGE1MGY2NzEwZTc2OWFiZjA4IGFzdC1icmFuY2gKKzM1NTI3IDU1NWRjODQ2MjI2ZGQyODYxMzIyNTY5ZGI2OTRiOWJiNGVlMGNjOWYgYXN0LWJyYW5jaAorMzU1MjggYjM5ZmRjOWM4MDdlNjViMzI4OTM3NDM3MDdhNmQ5MzQ3NWZhZjcxZiBsZWdhY3ktdHJ1bmsKKzM1NTI5IDE0MDc0ODQ4MzYxMjBiNTMzNGZmODFkMDAxMmRjZWM3M2Q5YmFhZTcgYXN0LWJyYW5jaAorMzU1MzAgYTczN2Y3YTBmMmI4YmFkYTRkMzhmMGI3ODIxZDE2OGY3MGIyNzBkZSBsZWdhY3ktdHJ1bmsKKzM1NTMxIDE2YmY0ODRiMzg2NDk0NzQ4MzFlNjBkYjZjY2Q1YTMzMzE3ODVmMjQgbGVnYWN5LXRydW5rCiszNTUzMiAzZTQ5ZWIzMjQ3MGJiNzg3YWFjZDRjYjZhZDVlMTQ0MTRjNWMwNzcyIGxlZ2FjeS10cnVuaworMzU1MzMgYmU1ZDJhMDdiYzI2OWJhZGIxNGE3YzdmNDZjYjc1MDU2ZWUxYjVhNyBsZWdhY3ktdHJ1bmsKKzM1NTM0IDk1MzZiMjk3ZDgzYzJkNzhlOGQ2MzE0NjM4NzliMDRhZDQyNzEwMDQgbGVnYWN5LXRydW5rCiszNTUzNSBmNGE0YWM3MzMxZWM5MWU4NGQ4ZmQ0ZTliNjYzZjg1NDcxZTAyNWZkIGxlZ2FjeS10cnVuaworMzU1MzYgNjQyNmIzN2JiMmEwZmRhODIzMmU3YzZjMWE0ZTA2Y2FlZTAxYjFiZSBsZWdhY3ktdHJ1bmsKKzM1NTM3IDM0NzNkZWEzYWE0YzA1MDg3NzdhNjc5YjM4YWNjNDM0M2VmOWMyOGUgbGVnYWN5LXRydW5rCiszNTUzOCA1ZTkxNmQ0NmEzZmI2OTI2MjAzZDJkMWUxOTUwNzdmZGZhOGVkOGI0IGxlZ2FjeS10cnVuaworMzU1MzkgMjRlMDcwZTk1YmY4YTFkMTUzNzNlNDJkNDVlMzZlOGVmZTg1N2Q0NCBsZWdhY3ktdHJ1bmsKKzM1NTQwIDc1YTkxZmQ4YjUwY2ZiMDY4MWNkNGUzZjAyNDhmZmJlNTExZDMxOTIgbGVnYWN5LXRydW5rCiszNTU0MSAxMjAxOTI1MTYwMzM5MmMzMDNhODRhZDNkNDQzOTNmMmQ0OTFiOWE1IGxlZ2FjeS10cnVuaworMzU1NDIgOTgxN2RlZTVkOWRmMDg1YzQyYzFjNmFjNjgwMGM0MDk5YmZjZjhjNyBsZWdhY3ktdHJ1bmsKKzM1NTQzIDdmNDY0ZGQ2ODBhYWMwOGU0YWRiYjdlYTJjYmY3NWE3MzhkOGYyOWYgbGVnYWN5LXRydW5rCiszNTU0NCBlZjU5MWU3YzM0ZmQ4ZTA5ZjU1ZmRkZGFlZmVmNjFlOGI4YjFlYWNjIGxlZ2FjeS10cnVuaworMzU1NDUgNzYwNTNhMWRkNDUyNDRkYzFhYThkMzZkZTJjNzhiOTNmYWY3MWEwOSBsZWdhY3ktdHJ1bmsKKzM1NTQ2IGZiNTU3YWM1YmI5YTI1YjE0NTVhOTlhMDNmNTAwNjA5MDA2ZDI5OWUgcmVsZWFzZTIzLW1haW50CiszNTU0NyA5ZDg0Y2VkNjRkMTBjOWFlNjhlZTU2ZWQ0NDM5ZjNiODBiMGYyNGFiIHJlbGVhc2UyMy1tYWludAorMzU1NDggMTY0Y2UxYmNhYjZlMWUzMjBmYmFmMDFjYWQ4YTUwZDcyOWZlOWYzMCByZWxlYXNlMjMtbWFpbnQKKzM1NTQ5IDMzZDQ4ZGY5YTkzNzgzNDU0Nzc4YWNkOWRlNGUwNmU1YTI1ZmMzNWIgbGVnYWN5LXRydW5rCiszNTU1MCAyOWJlNzI5YjMyYzNmZTk0MTY3OWFkZGQ3MjUzZjIyZDEzZGU2Y2QwIGxlZ2FjeS10cnVuaworMzU1NTEgY2M0N2MxZWFmODBhYjcyMzkwOWVmNDZhZTMxNzdhMzUyMWVhNzk4YSBsZWdhY3ktdHJ1bmsKKzM1NTUyIGM0YmFlMDg5YmZjOGYxMTViYTkzYjU0ZTU4YTQ0YmNiMmYzNjYzZjMgbGVnYWN5LXRydW5rCiszNTU1MyBlYzM3Y2IxYzBlZDg4ODdjZTRjN2JlYTFmOTg3MTkyNmM3YzI4ZWY5IHJlbGVhc2UyMy1tYWludAorMzU1NTQgZDQ0OGNjMjYxZjY5ZjRiMDgyNzVlYzBkZTcwOWVkMGQyZWRmMDdiZSBsZWdhY3ktdHJ1bmsKKzM1NTU1IGNlMWUwYjQ5NGNhNzAyNGMyNzM4ODlhZjMyNjc1MGQwNWE5OTI2YTcgbGVnYWN5LXRydW5rCiszNTU1NiA2YTE1MDU2MTMzNTg0YmVlMzU4ZDZhMzUxNDcwMWE0YjcyY2Y3ZTVhIGxlZ2FjeS10cnVuaworMzU1NTcgMjNlNWNjMzRhOTgxMmU0MzRjZDAzMDNjYzdiOGQ4ODk0MWVlOWJmMSBsZWdhY3ktdHJ1bmsKKzM1NTU4IDgzNWI2OTBkN2VkM2E1MDcyZDllNGY1YjU0ZjAxNDRlMTE1ZGE5ODUgbGVnYWN5LXRydW5rCiszNTU1OSBkYzViZDg0MjJkNTI2YWNiYmQyN2VhMzgxNDI2MjIxNWQwZjUzZDI3IGxlZ2FjeS10cnVuaworMzU1NjAgYTRlYWVlZDQwOThiNGQ4MzA2NjIwYWI4NmZkYTQ2ZDk3NGY4YTFmNiBsZWdhY3ktdHJ1bmsKKzM1NTYxIGZlOTQzMzVmMzhlMjQ5NzRkMTc3OWI1MjAzNjBkZDJiMGVmMDM3YmYgbGVnYWN5LXRydW5rCiszNTU2MiAyMDI0YjRlNmUzOGRhODM1MjU5MWI5YmUxNmZhODNkZjcwNmMzMWI1IGxlZ2FjeS10cnVuaworMzU1NjMgYmVmYjFlYTZjODhlYjJiZDgxMDJiYjE5OTU2NTAzZGMxNjg4N2JjNSBsZWdhY3ktdHJ1bmsKKzM1NTY0IDI5ZGE4YmRmZWI0ZTMxOTJiM2I5YTU5NWE0NzQ2MWUxNDM5ZjRhMTEgbGVnYWN5LXRydW5rCiszNTU2NSA4NTg2OTdkYjFlNGJlZGM3ZmYwOGQ2MjQyYTUxNDJiMGUxMzJlYWZlIGxlZ2FjeS10cnVuaworMzU1NjYgNTJjMTcyMjg5YWRkMWEzYTM4NzEwZDI0MDEwYmY4MjEyNDI2MjZmNiBsZWdhY3ktdHJ1bmsKKzM1NTY3IDRjZTA5OGYwMDVmMDAyZjdjNDNiYWIwZmZjYTYyZDlmNmE3MzQ5MDMgcmVsZWFzZTIzLW1haW50CiszNTU2OCBmMWQ0NDI5NWViZjdkOWU5MTU1OGU3YmM5ZDU1MDhkMWE2NWU1MzRkIGxlZ2FjeS10cnVuaworMzU1NjkgYmYzNzQyOWY2ZDlmMDUxM2NiMjVmM2YxMGFjOTMwMTkxMDk5ZThjZSBsZWdhY3ktdHJ1bmsKKzM1NTcwIDFjMTE3ZGJiMmRlZjRmOTNhNjBiOTMyYjcxNTc5ODUzZTRlNzE4OWMgbGVnYWN5LXRydW5rCiszNTU3MSA4NDZiM2VlN2UxMDZmMTIyZjhkN2UzYzE3ODY3YWI5M2M4NTQwMGQ0IGxlZ2FjeS10cnVuaworMzU1NzIgYzc2NjA2ZjM3MmQxMzRiOTdjYmY3NWNkMjhjODQwNjU4MzJiZmQ3ZiBsZWdhY3ktdHJ1bmsKKzM1NTczIGU2Mzc5YmRhOTFkNzk2OGFlMmE5NjBmYjAxYWJhMjk5YTEzM2NlNWUgbGVnYWN5LXRydW5rCiszNTU3NCAzN2RjOGM4MGNhN2VkOTIxZmU5MjgzMTQ0MmJhYjg0YjI4NGU2MDE4IGxlZ2FjeS10cnVuaworMzU1NzUgMjc3YjVhMmYwOGY1YzlmNDA5MWRhMjBlMjA2N2E4ZmMxNTFhMjdjZSByZWxlYXNlMjMtbWFpbnQKKzM1NTc2IDU5ZmUwOTgyNDM2M2IwZTRmYWJmY2E2MGNhNGQwNWU1YWNlZmRiOWQgbGVnYWN5LXRydW5rCiszNTU3NyBjMDUxZGM2YWIzNzQzODdiYTI2MWJlNmRmMTViYWZiYzliMzQ4MmFhIHJlbGVhc2UyMy1tYWludAorMzU1NzggMDI2MWUzODAxMWY2ZGU0MmE0NzY5NWRjN2Q5NWQwMzQzZGM1Y2Y4MyBsZWdhY3ktdHJ1bmsKKzM1NTc5IGNlYmRhMjNhYWFkYmM2OTEzMzcwMmIwYTUxMzFjMDEwYzNhNTNjMmQgbGVnYWN5LXRydW5rCiszNTU4MCAwNzgwMzI0NDRlY2M4OWMzMGNhZWI0NmVhYWYyNmIyMDM2NGI0NTNmIGxlZ2FjeS10cnVuaworMzU1ODEgYmM2ZWM5NWY1NzkyM2Q3Zjk0ZjQ1ZDA1YTE2ZmE5NWYyZGU5MGQ2MSBsZWdhY3ktdHJ1bmsKKzM1NTgyIDZjNjkxMGZkMDEzYTYyNjU1MWU4NDU3OGZlODhiY2ZhZjYxMWVmOGQgbGVnYWN5LXRydW5rCiszNTU4MyBmOTgyMTVkYWEzNWZjMjU3MDU0ZDA1ZTE3OTQ4OTgxODc4Nzk2MDdiIGxlZ2FjeS10cnVuaworMzU1ODQgN2ExMjA0MDA4ODhhZWY2YTgyN2UyYmFjNWJlMjY4NWVlNzQzNDliMCBsZWdhY3ktdHJ1bmsKKzM1NTg1IDFiZTU0OTlmMzc4ZTk5NzAwYmIxOThiZjY5NWQzMWI5NmUyODYyOWQgbGVnYWN5LXRydW5rCiszNTU4NiA0ZGI5NTg3MjkxOGViOTI4OWYxM2M3OGIyMThjMDM5MTkyMDdkNzk5IGxlZ2FjeS10cnVuaworMzU1ODcgODE4NGM2Nzc3MTNmZDYxZTAxMDU1MDkyOTE3MjlmYzEwZWUwNTNkYyBsZWdhY3ktdHJ1bmsKKzM1NTg4IDlhMTFhMjM2MTU0NzQ1ZGYzMWE5YTU4MjExMDg0NGU1ODYzNmViOWEgbGVnYWN5LXRydW5rCiszNTU4OSA0YjA5MzBiNTY1NjVmZDIwZmUyOWQ3NzY1MTRlNTI3NjhlYzU1NGY5IGxlZ2FjeS10cnVuaworMzU1OTAgNzVlMmY3NThlYzVhMDZiNmRhM2EwZGY1MTMzNzFhZDI2ZjFmOTNjMCBsZWdhY3ktdHJ1bmsKKzM1NTkxIDk0ODk5NmY2OTlkMmUyOTJhZDNkMjBhYzMxNTkwNGFiNGNmYmMxNzYgcmVsZWFzZTIzLW1haW50CiszNTU5MiA2YjE4NThkMTJmOGNhOWViYjJlNWY3MTgxNGE3NWQ4MGMyODA4ZTU0IGxlZ2FjeS10cnVuaworMzU1OTMgMTY4ZGFjZmJlZTY1YWE3YzlmY2JhMTUxYzdjZmRmYzAxYjI2YTU2NCBsZWdhY3ktdHJ1bmsKKzM1NTk0IDgxNzBhYWRjOWVjYTc0ZWRmODNlNTI1ZGI1M2EwN2FlZTlkMmM4NGQgcmVsZWFzZTIzLW1haW50CiszNTU5NSBiMDgyYjRkNDgxYzI1NjJkZGQzMWMzYzgyNDA0Yjc4OTM4OTM1MmMzIGxlZ2FjeS10cnVuaworMzU1OTYgYTRhYTdkNjFlNGFmMTk2ZWY2MGI0MDlmODZhZWNhMWRkMTlhNGNlMCBsZWdhY3ktdHJ1bmsKKzM1NTk3IGEyZTgwZmE3MzU5YjU1MDAwODBkNzcxYzJiYjk3MmY4MmI5OWY3Y2EgbGVnYWN5LXRydW5rCiszNTU5OCAzMzFkZThiOWQxZWQ1NWM0NWZiYTM5ZWY1Nzk1OGEwNzQ4MjAyYzg5IGxlZ2FjeS10cnVuaworMzU1OTkgMzRkNWViMWU1MDdkYzI3YWYxYjZjNjk3ZTYzZDlkNDFlNjBmNTcwYyBsZWdhY3ktdHJ1bmsKKzM1NjAwIGQwNzg4MzkxYzEzYmNmMjMwNTcyYjc4OGY1ZmZmYjBlYTE0Yjk5YzYgYXN0LWJyYW5jaAorMzU2MDEgYWFkYTkxYzVkNmQ5YzcyNTZjYWNiNjM2YWI3ZGNmMzQyYTQzZmFjNyBhc3QtYnJhbmNoCiszNTYwMiAyMjkwODUzYWI0MGE2MmQ3OTUwNDU4MmZlMzMyNGZjNGEyMGJkYTIzIHJlbGVhc2UyMy1tYWludAorMzU2MDMgNTkzMjQ2OWRjYjM1OTMzMjc3Y2VhYzc1OWIxMDU5ZDMzNGZlODc4ZSBsZWdhY3ktdHJ1bmsKKzM1NjA0IDNlZjU4ODg0YmRkNTIxYTE2ZWRiNTRjOTJhY2JlMjJlYWUyMTU4MTcgYXN0LWJyYW5jaAorMzU2MDUgZjRlNWY5YzJlMmIzYjkwYzdjOTMwMDM1Y2U0YTNjZDM4OTFiMjVlZSBsZWdhY3ktdHJ1bmsKKzM1NjA2IGE3NmFkODNhNDEzZjBlMTIxNTBiZDQxMzc0ZjgyZWY3MWY4YjgwMWYgbGVnYWN5LXRydW5rCiszNTYwNyA5YjE3ZjNjYzIzZWRjZWY2YzI0YmE5NDQ0ODk0YTk4OGQ4YTc2MWZmIGxlZ2FjeS10cnVuaworMzU2MDggZTI2MWUwYzJjNzJkNzVmZDM3MTNmYTg0YTFiMzhkZTNkYzllNDZhNSBsZWdhY3ktdHJ1bmsKKzM1NjA5IDY0ZTJmN2VjNTU3NmIzYTU4NDJmYWY0NTc5YWU0NmFlZTE2OWNhNGIgbGVnYWN5LXRydW5rCiszNTYxMCBhOTEwYjgyMmIxMmNiM2ZjNGZjZTE5NjM3OTI5NTc4ZmU4NDRjYjg3IGxlZ2FjeS10cnVuaworMzU2MTEgNzM5MTI4YzY3YzMwZWY4ZDk4N2U3OWY2MWNlNDFlZmJjZGQ4MzdlYSBsZWdhY3ktdHJ1bmsKKzM1NjEyIDQzMzY0MmY5M2Q1OWRiYWQ0YzhhMmZiYTRjMTcwNGRmZTc2NDNiNGIgbGVnYWN5LXRydW5rCiszNTYxMyBlNDJjYmFmZjgwMjdkOTFmYWFiOWNkZmI1MWI0NGY4NjY3YjZhYzkzIGxlZ2FjeS10cnVuaworMzU2MTQgODExMTc5MjNhZThmMGM0NWMxZWE3ZTIzNmI5ODM4MDllNmYzYzU1OSBsZWdhY3ktdHJ1bmsKKzM1NjE1IDY3N2MwYmYwNTczNWU4YzE4NjNmZWQyNGQ5ZTEwNWYzYmYwZDI2YzggcmVsZWFzZTIzLW1haW50CiszNTYxNiA0YzA2ZjRmYWVkODc3YmFiMTliM2NkYjU3OTRjNmJkZGM5MjRjZDMwIHJlbGVhc2UyMy1tYWludAorMzU2MTcgZDIwY2I2MzU3ZjVlYTE2MWIzNWExMDQyNGM0MjUxMTdhMmUwYmYzZCBsZWdhY3ktdHJ1bmsKKzM1NjE4IGIxZWEyZjNmNDY3ZWY3ODU2MmRmZDc2ZDE4MWY4ZTZiMGI5ODFmNGYgbGVnYWN5LXRydW5rCiszNTYxOSBmYWE3MTRkZDg2ZDNmMTA1ZDNhOGMwYmFlMmFhMTZiZjAyNjFmNWI1IHJlbGVhc2UyMy1tYWludAorMzU2MjAgZjRjMWMzZTYyN2RmOGZlODY2MzFlMjQyOWNlYzExMzQ5ODAxNDMxZiByZWxlYXNlMjMtbWFpbnQKKzM1NjIxIDgxNGNjOWY4M2ZhYWI4ZGUyNTllNjU0Y2Y4YTNmOWRkMjQ0NDYxY2IgbGVnYWN5LXRydW5rCiszNTYyMiA2NGNjMTYzZWVhZjEyMTM1MTM2ZDcyMmEwY2E1YTc3MzdlODZlNzI3IGxlZ2FjeS10cnVuaworMzU2MjMgOTI1NTI0NjcxNDVlYTdkOGYyNmI0ODk3YTAyZGIyZmU2YzIwNTY1YSBsZWdhY3ktdHJ1bmsKKzM1NjI0IGM1N2NmYTgzMjhkNDNhYTk5Y2U2ODAzNDM0YzUzMTQ1Njg3Yjg1MzkgcmVsZWFzZTIzLW1haW50CiszNTYyNSBjNGM3ZjBmMzlmZTliODM3MWU4NjUyY2YxMjg2NjU0MjcwMWYwNzk1IHJlbGVhc2UyMy1tYWludAorMzU2MjYgOGQzODJhYjk5YmRiYTllOWQyZWI1YzY3NmQ0MTY4OWM0Y2QzNWFkNCBsZWdhY3ktdHJ1bmsKKzM1NjI3IDY5NmY0YmE5ZGRmN2IxNmQ0ZDllYThhNzllNGE3MDk1ZGM4YzM4Y2YgbGVnYWN5LXRydW5rCiszNTYyOCBhZGI0MmE3MTE2OTYwNGQzNjA5YWMyZmJkYjY0Y2Y4Y2QxYzcyNTBiIGxlZ2FjeS10cnVuaworMzU2MjkgMmNmZTE0Mjc1YTA0NDA4YjYzZjBkNjI5OGUwZGM3YzgzZDg5ODdlZiByZWxlYXNlMjMtbWFpbnQKKzM1NjMwIDNhZDQyYjdkNDY2MGFjM2MxOTUyMTUzMjc2ZDU3M2Y0ZGNhOTgzZjAgcmVsZWFzZTIzLW1haW50CiszNTYzMSBmOGIyOGU0YWM0MzVhOTc3ODk0ZTAyMzdhNGZmZGVkNjRhOGE1MjZkIHJlbGVhc2UyMy1tYWludAorMzU2MzIgNWY2MGIyMjYwMTllOWYzYjQxM2FmMGVmODBmZGJjMmFhOThhYTE0YyBsZWdhY3ktdHJ1bmsKKzM1NjMzIDhiY2IxMjFjNTQxMTFiZmJhMTczNjMyNWQ1MjU1NTExYjNlYWY5MDAgcmVsZWFzZTIzLW1haW50CiszNTYzNCAwNTk4OWI0ZDZjZTgxNTdkNmYyNTJlYmMyNGFiYjY1OWU3ODkzOTg0IHJlbGVhc2UyMy1tYWludAorMzU2MzUgMGQ4ZWUyOGJmNmYwM2ZmY2NhYTQwZmVjMjhmNTkzM2NjYmI5YzZhYiBsZWdhY3ktdHJ1bmsKKzM1NjM2IDU3NjVkNjU2ZTBlZmQ4N2QxY2MyNzg3NjQ2Nzg5MzNlZDlmMzI2OTMgcmVsZWFzZTIzLW1haW50CiszNTYzNyA1MDEyOGZmMTk5NjU4YjE0NzY5ZWNhYzBjNDhlZmJiZjhmOGMxZmJlIGxlZ2FjeS10cnVuaworMzU2MzggZDA0ZDc4NmFiNDU4MTM3OTUxMGRmYTVmNmNjOTYyYWM1OWUzNGZlMSBsZWdhY3ktdHJ1bmsKKzM1NjM5IGRiZDNmYzIxNGI2NjZhMzY4M2EwY2Q5ZmU0ODRjNTNjNzdlYThmNjYgbGVnYWN5LXRydW5rCiszNTY0MCAwMDcxZDZlYjgwYTFmYTIwOTM5ZTg2ODk1OTcxNWIwNDg3YWViNTljIHJlbGVhc2UyMy1tYWludAorMzU2NDEgYTQwZDc5ZmUyYTY5ZTJhZmVjNTM3MzM2OTYxYjhmYzc3NmU4ZDNiNyBsZWdhY3ktdHJ1bmsKKzM1NjQyIGI0ZWM5Mjk5NTYwZDgwODliMjQwNTU3ZDY3ZjQwNjE3YjU2ZTJmYjAgcmVsZWFzZTIzLW1haW50CiszNTY0MyA1NTIwNDRiNTA1OGQwMThkMjJkMjA3NDNlNmNiZjFiMWQ3MzlkZWIxIGxlZ2FjeS10cnVuaworMzU2NDQgNTFhYWNlZWFhYmUxMWVhZmU3NGQ2MmNiMzQyN2M3Yjg0NmY3MGI4MCBsZWdhY3ktdHJ1bmsKKzM1NjQ1IDE1NjAzN2JlMzU1ZDk4NDYwNzY2ZDBmMDNkYWQ4YmFhZmNiYmMzYTUgcmVsZWFzZTIzLW1haW50CiszNTY0NiA1YTM2ZTRkNWFhOGYwZDQwNTg1ZjQ1ZGViNDAzY2U5MDhhYmU0ZmQ2IHJlbGVhc2UyMy1tYWludAorMzU2NDcgYzdmOWZjYTk0NmQxNmI3MDRjMjNiNjAyODUzNmViOTM2ZmJkZmQwMyBsZWdhY3ktdHJ1bmsKKzM1NjQ4IDAyMGRjNWRmZDVjNWQ4OGRkMGY0NTcyNjk1ZGM0Y2ZjOGM0MDUyY2UgbGVnYWN5LXRydW5rCiszNTY0OSA5ZjVmZTZiMjNlNTkyMGU1NzlkM2E2YmFjYzNkZGQwMWViYTdkNDhmIGxlZ2FjeS10cnVuaworMzU2NTAgMjI3Y2I3NDAyYzZlOWJmNjdhMDBhMDIzNTc1NDY4NzIwMWZlNWFjNCBsZWdhY3ktdHJ1bmsKKzM1NjUxIGM4OGQ0NjEwZjI4M2NiNmQxNjJiOTU4M2NmNDdmZmQwZDJlMTRjZmMgbGVnYWN5LXRydW5rCiszNTY1MiAxZmIyMzEzYWMzY2VlNThmZTdkMzk1MmUyMWE3YjY3OWU3MzUyNDJkIGxlZ2FjeS10cnVuaworMzU2NTMgYzkwNmJiMmExODI0NTUxZmM4OWZjMTRmYzg2N2UxMWY0NmRmMmI1MyBsZWdhY3ktdHJ1bmsKKzM1NjU0IGEyZmIxNjc4NDFlODM4YzI2YmQ0Nzc5Y2ZlZDkxNjFjOWU0ZWNjNDggbGVnYWN5LXRydW5rCiszNTY1NSAyNmVlMWIzZWIzNDUxYTcwYjQ3NjQyY2RmMTJlZGY0ZmZlODQ5NTM0IGxlZ2FjeS10cnVuaworMzU2NTYgMWEzYTQ4Y2JiMTYyOGQ0MzQwYWJkNWIyZTgzYWY2MWUxZDdiZmNkMCBsZWdhY3ktdHJ1bmsKKzM1NjU3IDRjNmZkZWI4ZTJlMDIxN2YzNTZiZjFhZTBhZDk0YzVjZjc0MzYxMDcgbGVnYWN5LXRydW5rCiszNTY1OCBmMzViNGFjYzU5NGY5MGE5ZjYyOThiYTQ1ZDE4MTVlMmY1NzVmMzc5IGxlZ2FjeS10cnVuaworMzU2NTkgNjk5NzA2NTNlY2JmYWM5NGNlNzU4MTVlY2FiMjM1N2I4YzU1ZTU0ZSBsZWdhY3ktdHJ1bmsKKzM1NjYwIGY5Y2Q3OTkyNmZmNzc4ODFhMjEzYzkwOTVjMDkwYjRkMWI1OWMyM2YgbGVnYWN5LXRydW5rCiszNTY2MSA5ODY1OTRjM2U0ZDlkYzEwMzQ2MmNlYzUyM2NmZDYxMzRiMjY3ODIwIHJlbGVhc2UyMy1tYWludAorMzU2NjIgOGMyNjQyMGQxZjIzNTNhMDNjY2NiZTMzNmU3MmM4YmFhYjU5MDVkZSByZWxlYXNlMjMtbWFpbnQKKzM1NjYzIDdiODE3MTE5YmI2NjBiNTMxYTMzMzNiN2JkYzU2MjZlOWY4ZjAzMjkgYXN0LWJyYW5jaAorMzU2NjQgYzY4MWQ5NWNmNzllYzUwYzViODU5MzQ1ZmUwYzExZmY3YmM1YTZiYSBhc3QtYnJhbmNoCiszNTY2NSBjMzcwYWFlOTgyMzIxNjM2ZGI5Y2NlYWRhYjUyMjQ2ZDAxYjRjY2NlIGFzdC1icmFuY2gKKzM1NjY2IGI0Njg0MjM0YmYwNzAxZjA4YTc0OWIxYWQyYzM3YzAxNjM1Y2E3YzEgbGVnYWN5LXRydW5rCiszNTY2NyAyZTUyYzIwZGVhNGY2MWRhOGRhZjBhMjdlYmRhMjg3NjgwZWE1YWQ0IGxlZ2FjeS10cnVuaworMzU2NjggZGQ5M2EzMmFjMzNlZmYzY2I4NmQyNzY3OTk2ODUwNGRiMDRjMjYxMiBsZWdhY3ktdHJ1bmsKKzM1NjY5IGRmYzhjNWY2Njk1OTU4MjE0NGRhYjZlZDljYzE2YTUyZTljM2NhOTIgcmVsZWFzZTIzLW1haW50CiszNTY3MCA4NDhiY2UyMjE1ZDM1YjZkZmZhOWQ4NWZhMTJjYTY2NDc2MjgwN2E5IGxlZ2FjeS10cnVuaworMzU2NzEgYzcwYmIzMjIyN2NiM2JmZTZhMGU4MzNmZGJlOTdmZjQxM2U2M2YzNiBsZWdhY3ktdHJ1bmsKKzM1NjcyIDA4MTk3MmFlMmY4NDQyMWZkNjRhMzIwNmE0NDI2NjQ0ZTY5MGQ0NzkgbGVnYWN5LXRydW5rCiszNTY3MyAyNDEwODllNDM3ZTAyOWU5Y2EwZjIwZTM5OTA3Y2RhMDgwMjllZWNlIGxlZ2FjeS10cnVuaworMzU2NzQgMzEwZGQ5OGVhMDY0NjE5Y2I5ODgzZDgwZTljMWNmMGI2ZGNjNDExZCBsZWdhY3ktdHJ1bmsKKzM1Njc1IGM1NmVhNjBjYjNiZjc3NjNkOTViM2RmMGMwYTAyOWM3OTExYjMwNDIgbGVnYWN5LXRydW5rCiszNTY3NiBjYTJmYjVjZjJmZDU3NWM3MjliZTEyNTJhNjQ2ODM1YmJiM2E2MzBlIGxlZ2FjeS10cnVuaworMzU2NzcgMjc5NGY2MjdlYmFhMDAxNWY4ODc0Mzg5ODVkMjRhZWEwZGY5NzQxMyBsZWdhY3ktdHJ1bmsKKzM1Njc4IDY0ZmNmZjEyMWY3YjVkZWRjNjc3ZTA3OGYyYzQ1Y2RhNDVhNzY2MjEgcmVsZWFzZTIzLW1haW50CiszNTY3OSA2ZTU0YzU5Mjg1M2M2NGM3N2VhODVlNDYwNmNkNWQwNmNmMGQzNWNlIHJlbGVhc2UyMy1tYWludAorMzU2ODAgMDI2NWJmOTkxMmVhMjkxMGQ1ODMxZTcxZmJiMWRlMGI2NTMxMzMyNCBsZWdhY3ktdHJ1bmsKKzM1NjgxIDM1NTQ3MzUzNGM3MDY4MTBmNjc0NjY4MDlkMjNiMDhkYzQ2OTNjZmEgbGVnYWN5LXRydW5rCiszNTY4MiBjNDg4OGE4ZmNmNzA2MWI2NDZhMWY2NGU2MjEwMmRmMTRlZjg2MzA2IGxlZ2FjeS10cnVuaworMzU2ODMgZTk3NTE4YzY2YWNjMDgxNTZkNzJmMzdlNzU5ZDNjNjg4MWZiZjVkZCBsZWdhY3ktdHJ1bmsKKzM1Njg0IDg5NzVkZWZiZjNhOGIwYWI0YWVmMTEzZDhmMTJiNWQ4ODA1ZjVkNzEgbGVnYWN5LXRydW5rCiszNTY4NSBlNzYwOTJkNDkwMmNkNDRkY2Q2ZmM3NTEzNWJhMjIwZjIxNmI2MTE5IGxlZ2FjeS10cnVuaworMzU2ODYgZjM5YzU2ZjhjY2MyYmU0ODY0NWFmOWRlNDAzNjBiNmZhNTZjZDNiMCBsZWdhY3ktdHJ1bmsKKzM1Njg3IDg4ZDYyNWQ5MjhhY2RiYTA3ZTA1ZWJjZmYzNzM1OTc1ZjIxNjJkOGQgbGVnYWN5LXRydW5rCiszNTY4OCAwNTg4MjFkOGFlZmRjNTBjZDQ3ZjliZGM3ZDMzNzE1MmY0NWUzOTBjIGxlZ2FjeS10cnVuaworMzU2ODkgNmIyMzY5OTQ2ODRhZjkyOWM0NjAwMTNlNjIxZThmNDIzZjJjNzU1MiBsZWdhY3ktdHJ1bmsKKzM1NjkwIGNlYzc0MGY5MmZhNDIyNTAwMzU1MDc5NjdmNmUxNjYxZTVkZTA1ZWQgYXN0LWJyYW5jaAorMzU2OTEgYjMzZGRiNDhiN2UwNGUxNTZkODIxZTRjYTUxMWJiNjE5Nzk2OWYzNCBhc3QtYnJhbmNoCiszNTY5MiBlYjZmNThjM2Q5NzI1ZjA1MGQzZGFmYzA0YWJlYjFjNmM2MjBhNGE1IGFzdC1icmFuY2gKKzM1NjkzIDE2ZTc1M2ZmMzFiMjI2OGM4NTU2NjNiYmI2MGY4MDNhOGZhNzZiMGYgYXN0LWJyYW5jaAorMzU2OTQgNGE1NDMzMDZkZmZhMTY4ZjBjNWE4NDFmZWU2NDZkNWZkMDdkYjUwYiBhc3QtYnJhbmNoCiszNTY5NSBmN2Y0MTNjNjU0ZjRmYzNiNGU3NDc2NzdjNDg1MjgwYjkwMmY4N2MzIGFzdC1icmFuY2gKKzM1Njk2IDU1Y2E5N2U3YmQwZmEzNmQwN2IxMmE3YzgyNWRlMzg2ZjQxODVlN2EgYXN0LWJyYW5jaAorMzU2OTcgYjI0MmI0ZDdlMTc3NDI4YjAzNTBmNDJjMjJjNmYwYzAzMzgzMjcxZCBhc3QtYnJhbmNoCiszNTY5OCBlMTE0MGU2MDFlNzIyODRlN2Q3MWFmZmFjMDhjYzM3OGFiOGI4MzcyIGFzdC1icmFuY2gKKzM1Njk5IDczNDg2ZmY2YjU1MmYzODg3ZDg4ODg2NjdlYTc3OTRhYzEyMGYzNzIgbGVnYWN5LXRydW5rCiszNTcwMCA5ZGY1MTg1ZmM1Y2FiZTFhNzc0YzlmMDJlOTA4YmU1NGQxN2NlODZmIHJlbGVhc2UyMy1tYWludAorMzU3MDEgYTU4NmY3NTJiMmJkY2NlZjVmMmQxMDU0ZTA3OTFmMzEyY2YxZjAyNCByZWxlYXNlMjMtbWFpbnQKKzM1NzAyIDcwMzg5NzdjZWE4ZGU2MTMyMWFiNjliZmJjNDViYzRhZGVkYzZjYmIgbGVnYWN5LXRydW5rCiszNTcwMyAwOGEzOTFmZGU2OGRhZjM3NWM4NmU4ZjNkODc3MTU1NmViMjIyMGQwIHJlbGVhc2UyMy1tYWludAorMzU3MDQgNTZmZWQwOWQwMWYzN2VkNDM3MmVlZDgyYTgxZWM4MmQyZmM0ZjA3ZiByZWxlYXNlMjMtbWFpbnQKKzM1NzA1IDRiYzYyMGY0N2ZiNDJlZWUwZjU5ZGIwNWVjODljODJmMDU5YmU2NTYgbGVnYWN5LXRydW5rCiszNTcwNiA4MTYxOWRjYmZhZTdiNTU2NDY2YmM1MmVhYjhkNjY3NDgyNGQxNDFjIGxlZ2FjeS10cnVuaworMzU3MDcgM2M3OTY0MTNmMDVlNzI5ZGUzNDAzNjRhMDJlZmNjOWYzMzEwODhhYiBsZWdhY3ktdHJ1bmsKKzM1NzA4IDM5YzM2NTI2ZDFiMDgyMjNlNThjZWFjYmU0YjY5YWEyMWRlNzA5MjkgbGVnYWN5LXRydW5rCiszNTcwOSBkMDNiNTRlNjBhNjc2YjFmN2QyZWNkZGNlNDFkMmYyNmE2YWVlNmU4IHJlbGVhc2UyMy1tYWludAorMzU3MTAgNGRiMGM4NGY1YzZhMzU5YWNmOTAyNGI2NzUwODJiZTk3Mzg5M2RkMiBsZWdhY3ktdHJ1bmsKKzM1NzExIDNjNjE4YzY5MzllMzM0Mjc3MmUwYTUzZWE3MWQ0OGQ0MmY4NjMzZDggbGVnYWN5LXRydW5rCiszNTcxMiBmYmNiY2RhMTRiOTJlYzMyMzUxOWVkMzY5M2I1MGZkYjIzNzkzNDM1IGxlZ2FjeS10cnVuaworMzU3MTMgMjJhNTUwMjhhNzhkM2VhODA2NTM5NDM5ZGIyN2UyMzZiMDUxNzBkNSByZWxlYXNlMjMtbWFpbnQKKzM1NzE0IDUxODRkNjljMjRkY2I5YzYyMTA3ZDQ0YWQyY2U0ZGQzNGEyMThiOTYgcmVsZWFzZTIzLW1haW50CiszNTcxNSAwOTgwMGJhMmE2NTM0OGEzM2JjZjEwNzYxMDA3MmE2NDZlYWMzNWY3IHJlbGVhc2UyMy1tYWludAorMzU3MTYgOTM5MTdkZDhhODdjMjEwY2ZjNDlkOWVkODE4MTE5MDliN2Y2NGI1NSBsZWdhY3ktdHJ1bmsKKzM1NzE3IDYwODAyOGYzODhjNWM0OWM3Nzc3OGVjMmFiM2VmZDc3NGE1NDEwODggcmVsZWFzZTIzLW1haW50CiszNTcxOCA4ODZkNjZmNTExMDVjNDczNjlkN2NiODA3MzNjMzkwODA0YjZiZDU4IHJlbGVhc2UyMy1tYWludAorMzU3MTkgZjhjMGFjNWJlZjAyOGNjMTVjZWNhYTUzNWVjM2NkOWY5MTM1NWRlOCBsZWdhY3ktdHJ1bmsKKzM1NzIwIDYzYjY4Y2IyYjQ0MmY0ZTY2NGZmYTU4ZDU5ODY5Nzk0MWFlMjQ4OTMgbGVnYWN5LXRydW5rCiszNTcyMSAxZjI5MzRhMzE4Yjc4MWJhNTlmNDQxOTJjZGRkMjcwMjM1Yzk5MzI1IGxlZ2FjeS10cnVuaworMzU3MjIgMTBiYTI0MTYyMzkxMTBlOGFmN2IwNDU0ZDgwOTBkMzlhZjI5ODliMSBsZWdhY3ktdHJ1bmsKKzM1NzIzIGZkYWJiNjgwOGQ1MmZiZmEyNTRiMGUxODIxZGE2MmFmNzM3OTk5MmIgcmVsZWFzZTIzLW1haW50CiszNTcyNCAwMWVhMDNlN2IyNjVmOGI3OGY1OTc4ZWJjOTBhOGI0Mzk0MDNhMzIyIGxlZ2FjeS10cnVuaworMzU3MjUgMDFlMzE2NDg5ZDY3OTkyMjQzNjYwZDFkODBlN2JjYTNiZjY4YjFlYiByZWxlYXNlMjMtbWFpbnQKKzM1NzI2IDY2MzY4MTE4YTE5YmMwMzU4YjNhOTFmZGQ4ZDI5ODM3YzgzNzdjMDcgYXN0LWJyYW5jaAorMzU3MjcgZjFmZDFhZTQyMTM2YTAyM2U0ZjM0N2VhYmQ1OTM3MGVkYmU4OTI1MCBhc3QtYnJhbmNoCiszNTcyOCBjOTIxNDM4MjY2NWY0Y2Y5YjNiYjdlNmFjZWY1MzNkOGRlMDdiYzY5IGFzdC1icmFuY2gKKzM1NzI5IDA2MDE0ZjcxZjE2MzZhOWNmMDQ1NGU3M2VmYTY0OTA2OTc4MGM3NTYgYXN0LWJyYW5jaAorMzU3MzAgNzY3M2JmZjc0MTIyOGI4MzQ5NWRkNzUxMjUzZmYxNjEwOTdkYWNhYyBhc3QtYnJhbmNoCiszNTczMSA0YzM0YWM5ZGE5M2Q0MjQ2NTk3YmRkMWNlMWJhZjg2OThmNGY5N2RhIGFzdC1icmFuY2gKKzM1NzMyIDdjN2EyOTgxNDU1Y2E4YjNiY2I3NTg4NzIzMGIxNGM3YmIwOTExYTEgYXN0LWJyYW5jaAorMzU3MzMgZmY1YTMxYTcxZDlhNmIwZWNjNTU4MzIwZjczNzRmYmJjNzRkYTM0MyBsZWdhY3ktdHJ1bmsKKzM1NzM0IGZmMjU4YzY3MWQzY2NkNTEyZDFhOTIyOWQyOTkwMjkwNDY3NTFhM2QgYXN0LWJyYW5jaAorMzU3MzUgZGI4YzQ1YjllODE4NmVjMmU1MmUzN2RmZWZmNjdiNmZhNDc0MTk4MiBsZWdhY3ktdHJ1bmsKKzM1NzM2IDlkMTYzM2U2YzQyZWI5ZDM4YWFmNWI5MDExZGZlZWMxZWNiY2M4OWIgbGVnYWN5LXRydW5rCiszNTczNyAwNTk3NDBkNTJhZTVjNGU4ZjNkOWM0ZDJlZTY0NWZhZTA2ZDcyMGM5IGxlZ2FjeS10cnVuaworMzU3MzggMzIwMzU0Yjc2NmU3MmQzMDRkYzMwNjI5ZGEzYmIzMzRiNzA4ODNjZSBsZWdhY3ktdHJ1bmsKKzM1NzM5IDEyNmQ4MTU1NDZkMzM3OWZiMzYyYWNiZTczODI1OWM3NDk5ODdjMTggcmVsZWFzZTIzLW1haW50CiszNTc0MCAyMjhlYTc1NzcwZTNkZTgzMmE0MTdkOGY2MTQ3YzRjZDRkNzBmYjZiIGxlZ2FjeS10cnVuaworMzU3NDEgMzBlYTBiMzUyZmMwMmZkYjJkMzEwODhhYWUwN2VhM2FlMjNiNjc2NSBhc3QtYnJhbmNoCiszNTc0MiAzYjQ0MDMzNjA3NzVmMDQyMjMzMzJlMWNlZjMzMzlmMmU0ZjZmZDU0IGFzdC1icmFuY2gKKzM1NzQzIGFiNDllNmZkNzc0NjUwMGUwYTJhZDk3ZGE0OGI4OGZhMjAzNzQzYWUgYXN0LWJyYW5jaAorMzU3NDQgMjBiNWU5YTZlZjZiMGE1YTdhYmUyZTE3NDJlMTQ0Y2M2NDE4YzE0YSBhc3QtYnJhbmNoCiszNTc0NSAyODIyZWQ5NTYzMDlmZThkOTVkZjA4ZTMzM2I3MTc1N2FiNzM1ZGY4IGFzdC1icmFuY2gKKzM1NzQ2IGFhYjc3NmQ0MWI0ZjUxODRhYzQ1ZGM1YmRjZGViNmE3Njc4Y2VkZjMgYXN0LWJyYW5jaAorMzU3NDcgYjYxZTVmOTNlYmUwYTEzMzQwMDg4ZjFlZDY4MTY0YjliZjdiODYwOCBhc3QtYnJhbmNoCiszNTc0OCBjZTc2YTlkNmU2NTMwOGYwMDRhMmU3ZGMxYzE4ZjUzZGQwNTM0ZDg3IGFzdC1icmFuY2gKKzM1NzQ5IDA2MTEwOGE4OTUxNmYxMWY0NWE1ZDJmYmQ5MjVhMWQ4YmYxZGIzMTQgYXN0LWJyYW5jaAorMzU3NTAgMjQ0OGY2ODRjZTllOWM0ZTliZjZiYTdlMmQzMDQxZmMwNzdlOGIxYSBhc3QtYnJhbmNoCiszNTc1MSA0ZjBhMWU3YWQ2OWNhMTU5YzdjZmUyZmQ4YzM0YTQ1NjNlMGY5NWFhIGxlZ2FjeS10cnVuaworMzU3NTIgOGYxY2U3YjBlNDIzZTMyOTYwOWMwYTNjY2I4NGM4MGU0OGY2NmI2MSByZWxlYXNlMjMtbWFpbnQKKzM1NzUzIDY5YzFhYjZiMjYwMjE0MWIwYTdjYTQ1YTQxMzZlYjFmNDQ4YWY3NzQgYXN0LWJyYW5jaAorMzU3NTQgNTRhZTlkZTM4ZjBjMmRkYzAwMjdkNGE0YTYwNmQ2MzE2MGIzNGY1YiBhc3QtYnJhbmNoCiszNTc1NSAwMjA0NDNhMTBjMjAyNThkMzgwNjFiN2YyNTI3OThkNTczZDQ4NWM3IGFzdC1icmFuY2gKKzM1NzU2IGJiMjU1Zjg1NTk5OWU5ZjYwZTUzZmRhN2VjNDA0NTY4ZWIyYzk1ZWIgYXN0LWJyYW5jaAorMzU3NTcgMTgyMjk1MzgxZjE0N2VmZDgzNTk1MmU2MTU1YjZjNTg0MGY3NmQ1YyBhc3QtYnJhbmNoCiszNTc1OCA1NDY1YTJjYjBhZWE3ZTc3M2E2ZGQ1ODZhNjA4YTc2NzdlNzI2ZTMwIGxlZ2FjeS10cnVuaworMzU3NTkgMGM2Njc2MTI0MzA4OWE0M2I5ODQ1MTI0NjgzNjVkYzhmMTU1Yzk2ZiBhc3QtYnJhbmNoCiszNTc2MCA3NjVmZTE2ZjY2NWI4OGQzMWRkMzQ5ZDM5NGEyZjBhOWUyNzhhODAwIGxlZ2FjeS10cnVuaworMzU3NjEgNGJlOGUwMTBiZGI5ZTljMDJjZTJiNzY1NzcwMjMyYWY3YjU4OTlkOCBhc3QtYnJhbmNoCiszNTc2MiAyMDBiZjc5YzAxNTk2MDlkM2M3NWJhZDU2YTQ5MTVkNzk3ZGJiZmNiIGFzdC1icmFuY2gKKzM1NzYzIDU2ZjliMzFhYzY5ZmE0MGY5MmU1NjNkYzY0NDE5YWQxNmJmMzFhNjggYXN0LWJyYW5jaAorMzU3NjQgMzQwZTQ5ZTAxNTc2NjQ3Yjc5MzlmYjUwOGYzMDU1ODcxZmNhNjYwMiBhc3QtYnJhbmNoCiszNTc2NSAwYWVjYzA3ZTM1ZDlmYzYyNWVhNTg4MDA3MjgwZWY0N2JmYzc1YjdhIGFzdC1icmFuY2gKKzM1NzY3IGY5NTBlZjMwOWQ3NTEyZjVlY2FiNGU4MDk3MWYzOWI4NDM4YzVmOTUgbGVnYWN5LXRydW5rCiszNTc2OCAzODM4Y2RlZTFhMjAxYjNjMmU1OWJmMmFiNmMwODdhMTQxNDc4N2IzIGxlZ2FjeS10cnVuaworMzU3NjkgNjE2N2U3OGExN2E4MjZhODM4ZjU0NGI5ZmNkODk2MWUzMDJhY2I3ZSBsZWdhY3ktdHJ1bmsKKzM1NzcwIDBlOWUwYzUzNDlhMGRlZWIwZTE0YjljZTllYThiYTJhMzk0ZTcyZjMgbGVnYWN5LXRydW5rCiszNTc3MSA5MGUwODk0YWVjNWJlZDM4ZDMzMmMxOGU3NDkzMDIzZjI5ZDQwODVkIHJlbGVhc2UyMy1tYWludAorMzU3NzIgNTgzMTc4NTE4YmQwY2QzMDdlODFhNmRiNjFhZDQzODg2ZDczMTUyNSBsZWdhY3ktdHJ1bmsKKzM1NzczIGNmYWZhZWE5M2Q5MDk1ZGM0YTlmN2E3NWU5NmM0NDVhNzU0YmUxODQgcmVsZWFzZTIzLW1haW50CiszNTc3NCBlYTllZTliNzQ2NzI5Y2I1NDRlYzQ2NDExMzZkYzE0YWM0MzJmMGM0IGxlZ2FjeS10cnVuaworMzU3NzUgZjJjZWExNmExZjM4MmQ0Yjk3MzNkOTBmOTgyMDNkMDFmNDVmOGQxOCBsZWdhY3ktdHJ1bmsKKzM1Nzc2IDQ3ZWQ3YmNkZjA4NjQ2YjRjZmJkOTNkMzIwODdhMmViZjhlYjJjZjYgcmVsZWFzZTIzLW1haW50CiszNTc3NyAzMzg1NzdhZmRhYjZkOGJkMTIyMzg2MDhmNTU3ZDViOTg5OTIwNzNlIGxlZ2FjeS10cnVuaworMzU3NzggMWNhM2E2MmEwMDlhZDRjNWRkM2Q0Y2JlMjY4YmNhMTI1YjkzYjhhZiBsZWdhY3ktdHJ1bmsKKzM1Nzc5IGY5ZmFmNTU3MTcyMDJkMzNjNGVhODI0NTNlOWZhODBiNTZiYTAwM2YgbGVnYWN5LXRydW5rCiszNTc4MCBmYWE3ZWViMTE4Y2Y0N2FkYTVlOGJkOTQyNjA1NmEzMDBhNjgwNjE4IGxlZ2FjeS10cnVuaworMzU3ODEgYTQ4ZTYwOGJhNjA1ZmExYmU3NDQ5Mzg5ZDhiY2VmOWVkZDZjMGIwZSByZWxlYXNlMjMtbWFpbnQKKzM1NzgyIDVjYTEwM2MzN2Q1ZTBiZGQ4MGI2ZDY0YzVjNzQ1MjdhODhkM2MyN2UgcmVsZWFzZTIzLW1haW50CiszNTc4MyA1YWI4MTJjZDBkYjc1NjIyNjU0ODA1ZDcyNjMyNjU3M2ZmOGFkYjk1IGxlZ2FjeS10cnVuaworMzU3ODQgZWYzNGRlYzAwNGNkZGY3OWM3ODI1YWI1MTY3YjQxMDNhMzcwNDFkNiBsZWdhY3ktdHJ1bmsKKzM1Nzg1IDIwNGI3YmNlYWQ0Yzk4ZWZiY2VlOGUxNzY2NjI2ZTNkMTc4MTljODUgbGVnYWN5LXRydW5rCiszNTc4NiAzZDA0NmQwNjNhODRhOWJhMDEzNDE2Njg4OTIzNzMzODljODc3OGM1IGxlZ2FjeS10cnVuaworMzU3ODcgMjI3NmRlODkxZmUyZWY0ZGNmZGFkY2IxNmI2NDM0ZmRjNzk1NzdjYSByZWxlYXNlMjMtbWFpbnQKKzM1Nzg4IDBjNzZhOWU1YzgzODJjM2JkNjNhMmEwM2ZiOWMxNjMzMGQyOWM1MGQgbGVnYWN5LXRydW5rCiszNTc4OSA1YzM1YjNjYTViYTkzZDk2YTdiNmE0ZTM4NTJkZWJiMjI0YjljOTVmIGxlZ2FjeS10cnVuaworMzU3OTAgMGU5ZmRiNzZhYzg1NWY5YjNjYmRhOTA3ZmM1ZDVjZjRhZDEyOTM3ZSBsZWdhY3ktdHJ1bmsKKzM1NzkxIDUxZTFiNmRjZmY2MWU5MjJjNzNhN2I1OWYwOTY1ZDZjODhjYTljZTkgcmVsZWFzZTIzLW1haW50CiszNTc5MiA3YTc0OTlmYmM0NTI5OTY2MTQ0YTUyZWJjNGVhNmMxYjgyMWMzNmRiIHJlbGVhc2UyMy1tYWludAorMzU3OTMgNmMxMmEzYmFkN2Q1MzlhZjk1ZGVjZGFiMjcxN2M5NDhiM2UyMzZkMSBsZWdhY3ktdHJ1bmsKKzM1Nzk0IDYzMGU0ZmJjZGVhMjY1ZTdlODAyZDNkNGMzMzYwNTcwNmM1Njc5YjEgcmVsZWFzZTIzLW1haW50CiszNTc5NSBjNWE1NTI1NzgzNDRmNWNhN2Y0NDlkZWRhNzNjNjUyMzllZWFlMjU5IGxlZ2FjeS10cnVuaworMzU3OTYgOWIyYjdkM2I0MmYzYTYxZGM5MGI2NmRiMWEyZjdiNmQ5YmRlZTU4YyBsZWdhY3ktdHJ1bmsKKzM1Nzk3IDY4N2IwYzgyNTRmYWE0NWQyOWQ2OGYyMWFjMzM4OTVmMTA0MDI4YjcgcmVsZWFzZTIzLW1haW50CiszNTc5OCA2NjY3YTFkOGFmYjEwNDhkMGFlYTQ0Y2QzZDkwZGEwYzY5Yjc4Mjc1IGxlZ2FjeS10cnVuaworMzU3OTkgYTQ2MjY0YjkxYTUxOGY5NTRlZWRjYzFkY2RhMjUxYTE0Y2FhYWQzNyBsZWdhY3ktdHJ1bmsKKzM1ODAwIGI2MWZlODI4YjczODg2ZjI2ZmJmYzdlYzVmYTdlZWQ2OGQzZGJhZTQgcmVsZWFzZTIzLW1haW50CiszNTgwMSA1MWE1ZmI2MDkzNGQ3NTIzNzVjMjdmYmFlMmY5NzA0NzE5NzE1ODY4IGxlZ2FjeS10cnVuaworMzU4MDIgMjIyOTA4ZGZiZjU4YmU5ODAzNzQ1MzBhYWNmZDA1MWZhNjU1ZmFmYiBsZWdhY3ktdHJ1bmsKKzM1ODAzIDg2MTVmMjc4ZGE1ZjM1NjgxYmY2YjJlNmI1YTU5ZjM3MWVkMDkxOTMgbGVnYWN5LXRydW5rCiszNTgwNCA5ZjhiZmQ1NDI1MWY3NDQyODk5YTExMjlhOTA4YWIwNjEwMzg5NzhmIGxlZ2FjeS10cnVuaworMzU4MDUgOGIyYTQyOWFmNDJmZjE2NDE1Y2Y2YTU4YWYzMTc0YzFlNTBlNzcwNyByZWxlYXNlMjMtbWFpbnQKKzM1ODA2IGFiNjgwYzRhY2QzNWFmODEzZDAyY2VjNjU3NDkyNjNiYTZkMjFhYjggcmVsZWFzZTIzLW1haW50CiszNTgwNyA1ZWI3YThlMmYzNDUzOTgxNmFiYTQ2NjA3MTI4ZTM2ZDY2MmU0MGMzIGxlZ2FjeS10cnVuaworMzU4MDggYjlmMDkxOTY1MjZlYWI0MDA0ODA5MGZjODhlM2Y2MDc5ODYwM2I2MSByZWxlYXNlMjMtbWFpbnQKKzM1ODA5IGNiYmFjZGE4NDQ4MGFlMmJkODVkMWM2MTI2YmU3NjNjOWY3MTE4OTkgbGVnYWN5LXRydW5rCiszNTgxMCBhMTQyZTRlOTdmMTMxYTBkOThmNjZmN2I4MTIwMGI0OTY1ZWMwODUyIGxlZ2FjeS10cnVuaworMzU4MTEgZThhMzFhYjdhODc0OGU2MTQ2MGZiYWU3NDYyZWRmYTdkNTJmNzNhMiByZWxlYXNlMjMtbWFpbnQKKzM1ODEyIDRkZWU1ODMxNWNjNDFmYjA0ZDdiNTcxMWU5ZWRmN2JlODk4ZjhjYjkgbGVnYWN5LXRydW5rCiszNTgxMyA2NDZjYjAxNDY5NDJlMWY1N2QwM2FiYTczNmQ1NWMzYmZhNTdhMWY3IHJlbGVhc2UyMy1tYWludAorMzU4MTQgODJiYzY5OTYxMDIyZGM5Y2M5YzJjYmNlZDMzZjhkZjJjYWZmOTVjYiBsZWdhY3ktdHJ1bmsKKzM1ODE1IGY3OTNhMDQ2ZWQ5ODE0MjZlYTI2MzJkNjEwMDc3ODYxMDZiNmZmZWUgbGVnYWN5LXRydW5rCiszNTgxNiBlYmZhNWNkOGNiYTRkMjNlNWNjODQxYjE4Zjk3NzljODRhNjVmNTUzIGxlZ2FjeS10cnVuaworMzU4MTcgMjY4MzlmMzJlNzBkMDcxYmJmZDBiZjViOWMyYjA2YjFlYTMwYzY5ZiByZWxlYXNlMjMtbWFpbnQKKzM1ODE4IDY0MDg0ZjliYWJhMWVjMDQ2Y2Y4Yjk4NjliNDdiOTRkZmFlNzFmZmEgbGVnYWN5LXRydW5rCiszNTgxOSA0ZWI1NzRiMTIyNWZhYWI3ZjQ0ODlhMzdlMTQ0MWIyYjYyODYwYzU5IHJlbGVhc2UyMy1tYWludAorMzU4MjAgMmNjNzE0OTc3NDc5MzQxNmUwN2ZiOWQ4NWJlZWQ0YzYxODBhMjA3OCBsZWdhY3ktdHJ1bmsKKzM1ODIxIDk4NGIyODk5OTJjMDY5M2MzNWQ3YzFiNGYyOTBmNTQ4MWUyM2MwZGYgcmVsZWFzZTIzLW1haW50CiszNTgyMiBjMjQ5MzA1YmZjYWM4YTU0ZWMzNjdlNzM0YzA4Yzk1YjY5Y2NmMDUxIGxlZ2FjeS10cnVuaworMzU4MjMgZTRmNTJlMmUzODAwMGI0NjQ1YzUxNzAyN2U2NDBkN2I5MjAwODU4YiBsZWdhY3ktdHJ1bmsKKzM1ODI0IGVjMDlhNzE4NDljYzYzYWRiMjZhNmZiNjE1NmUwN2RkMzc0MGFkMzUgcmVsZWFzZTIzLW1haW50CiszNTgyNSBlMmEwZWY4N2Q0ZDQwZGM0NGRkZDQ4ZmM0NmM1NmVkMGIyMTJlMTRiIGxlZ2FjeS10cnVuaworMzU4MjYgMTRmN2Y5Yjg5ZGE5YzVkZDNmZWZjMDQwNjQ1NzhmN2I0YjYyMTZiNyByZWxlYXNlMjMtbWFpbnQKKzM1ODI3IDZlMDc4Zjc2MTNhZDdhYzExYzI0ZjY4NjU4ODk4ZWQ3ZTBjMDkxZjYgbGVnYWN5LXRydW5rCiszNTgyOCA0MmUyYjVhZmE3MTU3MzUzY2Q3MjZlZThiNGNmNWZmMzA2NTQ2ODFlIGxlZ2FjeS10cnVuaworMzU4MjkgNTQ0ZjIxNzIzNjNkMjFmN2U0ODYyOWI2ZjQ4ZGJlOTkxYTY3NDQ2NyBsZWdhY3ktdHJ1bmsKKzM1ODMwIDUwNzA4YjhmMGQyODc4MmY3MTY5ZDEwMTI5MjRiODQxNTg2MThlMTYgcmVsZWFzZTIzLW1haW50CiszNTgzMSBhMjliYWMwYWU5MDViOTRhYmZhYmEwMWQwMTQwNDdhODFjNTQ0Mjk2IHJlbGVhc2UyMy1tYWludAorMzU4MzIgMjZlMDkwY2NiYjY0YzM3ZDBiNzE5YmMyMjQ1NDlmOGMzZTc0YzhhMyByZWxlYXNlMjMtbWFpbnQKKzM1ODMzIDU4MmRjYTAyZTYwZjY1N2E5MDUxODYzOGI5ZWRlZjcwZjEyZWI1NmYgbGVnYWN5LXRydW5rCiszNTgzNCAyZDdiMGNhMGMyNmM5NjAzNjYzNzkxZjEyOGUzOTE2YjQxMjFmN2NlIGxlZ2FjeS10cnVuaworMzU4MzUgZTkwMjY5ZmMxOTM2NWIxMmFjNzVkZmNhN2NkMDRhZDAzNjM4NGYzZSBsZWdhY3ktdHJ1bmsKKzM1ODM2IDM3MTIxYzhiNjkxZGEwOGEwYmZlYTVlMzU2M2I5NGQ2MTU0YTFlNmEgbGVnYWN5LXRydW5rCiszNTgzNyA5OGE4MDc4ODgzNWMwNjYwZTZiYzRlODU1MDc3ZTZiOWIxNDgxYjRjIGxlZ2FjeS10cnVuaworMzU4MzggNGM4MjU1OGIxNWZiM2I2NDA5ZjMxNjI2N2Y4ZjIzNzI0MjIyMTQ1ZSBsZWdhY3ktdHJ1bmsKKzM1ODM5IGExYjM3NGZmMDE4NDE2NGE0OTg1NTUxMDk0YzUwNzk4NmI1YjVhMjUgbGVnYWN5LXRydW5rCiszNTg0MCBjMTNiYjdmNGJjZDE4OGE3MGUzYmZmZjZhZDk5ZmM4YWQ5MWU1YzY2IGxlZ2FjeS10cnVuaworMzU4NDEgNjM1ZWYxMTA2NThlZjhkM2M4OTc1MGQ1ODc2NGI2ZjA1NGFmNDBiMyBsZWdhY3ktdHJ1bmsKKzM1ODQyIGRiNmE2ZDM5MWE5OThmNTJlMzI1YWE4ZTVhNzY0ZDk2NjUwZjQxZWEgbGVnYWN5LXRydW5rCiszNTg0MyBiNTU5NGQ3Mjc5ZGY2OWUzNWJkMWE3ZTQ0NTZmYjViY2U5Y2MzN2U2IGxlZ2FjeS10cnVuaworMzU4NDQgZjQzNzZmNzY3NGEyMjJlODZmZTU5NzUyM2M5NWFiY2NiYmM0ZWVkMyBsZWdhY3ktdHJ1bmsKKzM1ODQ1IGI5YzY1OGFjMGUyMGNkNmI2YmY1NGQwN2ZiY2ZkMGQxOTcxZDgzY2YgbGVnYWN5LXRydW5rCiszNTg0NiA2OTZkOTJlZmYwMjJmZTRmODU5OGRmZjVhMGExYjJmOTdhODY2N2FiIGxlZ2FjeS10cnVuaworMzU4NDcgMzNmNmExNWRiZjZjZjAxZDhhMzc4ODY1MzNlZWEyMmRlMzMxYzU3ZiByZWxlYXNlMjMtbWFpbnQKKzM1ODQ4IDAwZWVhMjgxMzVmOGZiNzFiMWE4MDBmNjlhM2UwYmM4NTM2ZDExMWMgcmVsZWFzZTIzLW1haW50CiszNTg0OSAzODMxMDk0MzNhOTcyODRmNzA0MTA2NGMzN2MzMzZiYWI4ZjJhMmIwIHJlbGVhc2UyMy1tYWludAorMzU4NTAgYmEzMTIxNmUzN2M4ZjIxYTU3MmM2YmJjMGUyOWViYzhiYTNkNGFlNiBsZWdhY3ktdHJ1bmsKKzM1ODUxIDBiMzNlMzczN2I0Y2JkN2MzNzY3ZTlkN2M0ZDNlN2I1ODBkODQwN2YgbGVnYWN5LXRydW5rCiszNTg1MiBkY2JlMDQyYjg5MmRmNWJiYTlmNTUzYjJhNzc2NmM1NDg1YTY2NjMwIHJlbGVhc2UyMy1tYWludAorMzU4NTMgMjJiMDgwMmFiYTc0MzdmMjZlYWQ2MTA3ZGMwNTVkZGZlODA4NjNmMiBsZWdhY3ktdHJ1bmsKKzM1ODU0IDkxZjc2Y2Y0MDczYTJhZTk0ZTk1OGE1YmNjOGU5OWMyYWFhMDBiMzcgbGVnYWN5LXRydW5rCiszNTg1NSAzNTg2YTc4MDFiZGFmMzZjNDg1YjY0NWNkYjY2OGVmMDcyOGRmYjY4IGxlZ2FjeS10cnVuaworMzU4NTYgYzM2ZWEwNzk0OTIwMWU3NTE3MDhiYWM0MGE4N2YwOWUzMjE5MDc0MCBsZWdhY3ktdHJ1bmsKKzM1ODU3IGQ4MDNhZmNlOGFjNGU3ZjhmM2EyYWNlMWViOTNmNjljMjUzMjhjNDUgcmVsZWFzZTIzLW1haW50CiszNTg1OCAxMzZlZmJiMTExN2RlYmIzYTA0MzgzYjk5ODFlODc4NjY1OWIyOTNjIGxlZ2FjeS10cnVuaworMzU4NTkgOTU1ZTIwNmU1M2RjMzVlMDQ5YzVhZDUwNDUxM2E3NTQ3ZDk2N2I2OSBsZWdhY3ktdHJ1bmsKKzM1ODYwIDZkYjQ4YzViZGIyN2FiZWViNmMxZjI0ZDkzMWU2NjgzMjMyN2NhNzAgcmVsZWFzZTIzLW1haW50CiszNTg2MSA1MGQ4YTI3MjE0ZTZmODUzOGExZGIyZjMxNDlmMTVkNmUxNmE2Njg4IGxlZ2FjeS10cnVuaworMzU4NjIgNjZlZGUwMzg3ZjM2NzQyODRhMzZjNGEwYzRiZmFiYmQ2MDc5MTQzZiByZWxlYXNlMjMtbWFpbnQKKzM1ODYzIDlmNmQ0NWYzYzAyM2Q1NzE5ZmM2NDQzZjExMDcwYWQ5ZGRhYWM1ZjIgbGVnYWN5LXRydW5rCiszNTg2NCBjMzhhMzlkMzg0ODliMTI2NGIyMmE4NWFiN2YwNjdiYWE4MmZkNTkxIGxlZ2FjeS10cnVuaworMzU4NjUgNWEyMjQ2NWZkYTI0ZjlkNmY5YWJkYjAxODQyMDFjYzVlYjY5NDUxMSByZWxlYXNlMjMtbWFpbnQKKzM1ODY2IGU4NTM1NWNmMTc1YWFlMDg1MWQxYjBhZjM4M2ZiN2NlNjAwNTZmM2EgbGVnYWN5LXRydW5rCiszNTg2NyBkMDliYWZiOTc2OWY3ZTVjNzgzMGYxM2I4YzE0ZDAxYThiMjA2NjUxIHJlbGVhc2UyMy1tYWludAorMzU4NjggOGZlMWEyNjYyYWFhNTM4ODAwZmNjODk3MDQ1NjRhZjFiMzU4MWZlYiByZWxlYXNlMjMtbWFpbnQKKzM1ODY5IGM3OWNjMDQwM2FjZmVmMzlkNGIwNmRmODE5NjhjYWZkZjRiZDQ3YjcgbGVnYWN5LXRydW5rCiszNTg3MCBjNjgwMDgwZjkwMGMxNmM2MDIwODM2YjNhZWU5ZDBmNWJjMjllMjM2IGxlZ2FjeS10cnVuaworMzU4NzEgZTliY2U4MzdjMWMzOGM5ZGRiNWU2OTBiYjBkNTVkZGU2ZWYxMTA3OCByZWxlYXNlMjMtbWFpbnQKKzM1ODcyIDg2MDFjNzg1YzY4M2RlYTIyYzU4Y2M3ODQ4ZDM4N2M0MmM1M2I4MDIgcmVsZWFzZTIzLW1haW50CiszNTg3MyBjZjM5MmI5MzZhMmU0OTQyMjIwYWU3ZGJjZWQyMWNjZDAwMTgyOWRkIGxlZ2FjeS10cnVuaworMzU4NzQgMTdiZjk1ZWQ3NTYyYzk4MTA2YTYwMWNlMDkzYjNhYTIyODVlZDhiOSByZWxlYXNlMjMtbWFpbnQKKzM1ODc1IDE1MzhhOGNmYjBkZGE1NGE0MjRmMjMxZTRjMWQ1MTQ0Yzk0MTM2NWIgbGVnYWN5LXRydW5rCiszNTg3NiA1M2FiZDlhZDE5MDk4ZjkzZTU3NzUzMGM1OGQxODE2NzhjYzQxZTZiIHJlbGVhc2UyMy1tYWludAorMzU4NzcgZjYzZGQyOTlhNjBiMjczNTlhYTljNzMzNjFlMjBmYWZjOGFlOWQxOSByZWxlYXNlMjMtbWFpbnQKKzM1ODc4IDdhZmViODM2ZjY2YzU2ZmU3NmYwOTFhZTkyM2NiYzFmOTQ4ZGY5ZmYgbGVnYWN5LXRydW5rCiszNTg3OSBhMzhjZDYzZDE3YTc0ZTRlYjM1YTMzNzdkN2MxODA5ZDNmMjgxMzVlIHJlbGVhc2UyMy1tYWludAorMzU4ODAgNjc1OGI2MzBhY2I3ZWY4NjE0NDhlMGIxNTFjZTQ2ZmIzMDEzMzViNiBsZWdhY3ktdHJ1bmsKKzM1ODgxIDY5NDMzZmMxYzgxNmNiMjJhMTZmZTk2MzFjN2I1MWM5MWNmNDhkZWEgbGVnYWN5LXRydW5rCiszNTg4MiA0NjlkY2IwYWQ3MzhiZDRkMDIwODliYjc4YzU0NjA2ZjRkZTdmMThmIGxlZ2FjeS10cnVuaworMzU4ODMgNjFiMjZiOTVlYjMzZWNjNDc0OTI5MDYzY2NmMWUyODdkNjFjZjY2ZiBsZWdhY3ktdHJ1bmsKKzM1ODg0IDEyMWFhYTRiYTkyMzU4ZmVjMTkwNWUxZTRkZmIxZmRkMmRkMzdlZWUgbGVnYWN5LXRydW5rCiszNTg4NSAxYzIzODFkNzk3YzBmNzU4ZGFjODVmMWJjOThlN2EyNGY4NTRmZDYxIGxlZ2FjeS10cnVuaworMzU4ODYgMjdkYTg3YzkzMThmNTMzNGQyZjU4MzkzM2Q3Y2I0OTZlYmFmNGZkMSBsZWdhY3ktdHJ1bmsKKzM1ODg3IDAyZjc2OWQ3ZTRhOGUxNzRkNTc4NGVmN2UwOWFiNmYxOGUxYjJkZjMgbGVnYWN5LXRydW5rCiszNTg4OCAyNGM0NjAwMTQxNmUxYTA1MjQ3OGE5ZWQyYjA0OWExMDVkZTQwOGQ5IHJlbGVhc2UyMy1tYWludAorMzU4ODkgYjMxOWRiMzg2OWQ4MjJhNjIyYzJkOWQ0YjgxYWY3ZjY5NWU5ZjM5ZiBsZWdhY3ktdHJ1bmsKKzM1ODkwIDYzMGEwOTE1YTMxMDFiZWM3YTA4NTQ0MWMxYTJkNmJlM2UyY2ExY2EgcmVsZWFzZTIzLW1haW50CiszNTg5MSBjNzAxMDc2MGU4YWQxOWFiZmVkMGNlYzA2ZDU3MjA5NWIxYzQ1Y2ZiIGxlZ2FjeS10cnVuaworMzU4OTIgYWIwYzhkZGIyYzkyNTI4ZjQ0MWEwOWUyM2JhNjA3ZjBjN2ZkZThiYiBsZWdhY3ktdHJ1bmsKKzM1ODkzIGQ2NTg5Yzg4ZDIzYjdhNWNjNjg0M2VlNDc1MGUyNTMxM2ZmNzYyYjcgbGVnYWN5LXRydW5rCiszNTg5NCAzMThiZjY5OGU0MjViNWRkZDc5MDM1ZTQ5ODE3ZjIwYTc0ZWM2ZjY3IHJlbGVhc2UyMy1tYWludAorMzU4OTUgNjA2YWFlOTVmMTI4OTIyZjhlZjE4NWY1YTJhZTQwYzJhOWQ5MGJkZSByZWxlYXNlMjMtbWFpbnQKKzM1ODk2IDY1N2ZiMmE1MGU4ZWQzMzcwNGVmMmQ2ZTI3NGZhYjYyOTFkMGEyM2QgbGVnYWN5LXRydW5rCiszNTg5NyA1MmUxNDBjYTE0NmM1ZWNlNTI3YjUyMTk3MzliZjliMzg0YmNjODA0IHJlbGVhc2UyMy1tYWludAorMzU4OTggNDViYTJjNjljMzFmZGRiNzJjYWNiMDE5YjA2NmNmYmU5MjkwN2VhNyByZWxlYXNlMjMtbWFpbnQKKzM1ODk5IDVlMTdkMDUzM2FkMzY0MTk3ZTczNGIyNGJkMzhiOGE1ZDhiZGRhNjYgcmVsZWFzZTIzLW1haW50CiszNTkwMCAwMmY4OWQxMmYwMzZmNmE4MzIxZGQyYWZmN2JlMWY3OGE5M2RjZTYxIHJlbGVhc2UyMy1tYWludAorMzU5MDEgMjA2NTNjOTAzZDFjYWZkYTJkMDEyYTc1MmUyZjMyODVlMjY3NjA0YiByZWxlYXNlMjMtbWFpbnQKKzM1OTAyIGY3OGQ5MzhkN2JiMDgwNGE3NmI4YTA0YjZhOTZmNmQ5ZjkxNjdjNmQgbGVnYWN5LXRydW5rCiszNTkwMyAyNDU4MzVlZDhkZThkZjM3NzM4M2QxYjg2NWQ5YjNhOTNhNWI1N2Y2IGxlZ2FjeS10cnVuaworMzU5MDQgN2FmYjEzYzJkNTI2ZjQ4MzczZWRiYjkzNjcxOGIxYjM0MTMzOGNlNSBsZWdhY3ktdHJ1bmsKKzM1OTA1IDA1OTMxNThkMTRmMmQ1ZDEyNTNiYzhiZGYwNjFmMmVmNjU4Y2VkYTEgcmVsZWFzZTIzLW1haW50CiszNTkwNiBhY2UzZjEzYzE4MzZmNzkwYmE2ZjUyYTY3NzIxY2Y5MzJlMDk5NWI5IHJlbGVhc2UyMy1tYWludAorMzU5MDggNTJmZTkzYjY1NmNmNTkzZDQ5OTY2MzA2ZTJmNjY1NzUwYzg0N2I2MiBsZWdhY3ktdHJ1bmsKKzM1OTA5IGE0YjUyNmI1MGMxMjIwZTkxZjg4NDQxOGY0NTIwMWM5ZDU0OWVkYjQgcmVsZWFzZTIzLW1haW50CiszNTkwOSAzNjM5ODYxZDAyNjQ2YWYxZGEzMTIzYzI1NTYwYzRkYjNkN2VkYmNlIHJlbGVhc2UyMy1tYWludAorMzU5MTEgZWU3ZmNkZTU2MzZlYTE3MGY4MDgzNDI0NDlhYWI3YjUwNjNjZWFhMSByZWxlYXNlMjMtbWFpbnQKKzM1OTEyIDlmZTQ1Nzk3YzA5N2Y0Mzg4MDYwZmFjMWMzYjc5ZjA0ZmM5ZjlkMDYgbGVnYWN5LXRydW5rCiszNTkxMyAyODJkYmQ5YjFlZDZiN2E2OTI1MTYzOTVlYWY3ZGJlMmYwZjcwZjE4IHJlbGVhc2UyMy1tYWludAorMzU5MTQgNjc3MjM5MTA4M2M5Yjc1MWU0M2NkNDU0NGJkN2Q4Y2ViZDZlNDhiZiBsZWdhY3ktdHJ1bmsKKzM1OTE1IGQ2ZGVhZThiZjc5YmIwNTJhYmRiM2FhMTMwODMzMjIxM2JmMjM5NTYgbGVnYWN5LXRydW5rCiszNTkxNiAwMDk0OWJjNjdlNDliZGU4ZmJjMWVhOWY2NjdlNDM1MjgwZmQyNmQ1IGxlZ2FjeS10cnVuaworMzU5MTcgOGJkMzJjNTE1NDVlM2RmODE0YjE0MzVjZWJmZjlmZGE1M2RkYjU3MCBsZWdhY3ktdHJ1bmsKKzM1OTE4IDNlZGY4ZGI2ZjhiZmQ5NTk3ZmVkMTAyOTAwOTUwOWU4M2IxZGFiNjUgbGVnYWN5LXRydW5rCiszNTkxOSA5ZDU4NDdiOGYzMDExYjZmYjEyZTI1MTJjZDY3MjYzMzliMThlMDZjIGxlZ2FjeS10cnVuaworMzU5MjAgZDNjYTZiZGNiZjNjNDYzNzY3M2U5ODc0OGZhYzQ0MGI5ZGFmZmJlOCByZWxlYXNlMjMtbWFpbnQKKzM1OTIxIDE2Mzg2Y2JjYWI5OWMxYWMxN2JmYjU2OGJiOTdhODBhNmQ3OGFiNTMgcmVsZWFzZTIzLW1haW50CiszNTkyMiAyZDM0NTg1YzNiOTk0N2U2NDhkZWEzODExOGEzMTc4ODEyOTIwNjc5IHJlbGVhc2UyMy1tYWludAorMzU5MjMgMzc1MzhhMzZiNmUyYjJhYzgwY2UwZTQwMzNkOWU3NzZiNmMzZmNmMyByZWxlYXNlMjMtbWFpbnQKKzM1OTI1IGI1MjU1NTUyYWE2ZGE0OWZiNjNmODNjYWZlNDQ3NmFkM2UxNGEzNzMgbGVnYWN5LXRydW5rCiszNTkyNiA5NmI2MjY5OWIyMThmOWRmOWRkZTAwNjNlODgxMjgwOGExODg3ODYxIGxlZ2FjeS10cnVuaworMzU5MjcgNjY3MmY3MzA5M2RhMzMzYzg2YzFmNGEwZmE5ZWUyNmI5YmFlODU1MCByZWxlYXNlMjMtbWFpbnQKKzM1OTI4IDdlM2EyYzI3NGIzNjgzZmYyNjk5NjBkNmIzODczYTUwYzg0MDEzMjUgbGVnYWN5LXRydW5rCiszNTkyOSA0YTdmN2U4MDE2ZmMyNmI1ZDU4NDM1ZDM2YmY3YjIwMzkwYjU4NTNmIHJlbGVhc2UyMy1tYWludAorMzU5MzAgOTRiNDg0NWU0ZGE4YzQ5NjRlNmEyNDZjYTVkODc5NDUwY2U4MTJiZSBsZWdhY3ktdHJ1bmsKKzM1OTMxIDMwMGQ1ZDQ2MjM4NzIxNWUyMDI5ZTdmYTI3ZDY5Yzg0YjVkMTI4MzUgbGVnYWN5LXRydW5rCiszNTkzMiAzYWUwMWExMTA4MDEyMmZhNDdjNTVjZTE2MzJiOTBmNGEwMjM5YTAzIHJlbGVhc2UyMy1tYWludAorMzU5MzMgZmE3NTNjMTZjNjMzM2JmM2Y5OTJlNDNmYzJlZTVhNzUzMDM1YTFhNiBsZWdhY3ktdHJ1bmsKKzM1OTM0IDFkMTM1NzQ5MDZlZmNjNzE5YzAwMWFhYmEzNGI1OWRhY2ExODYzNzAgbGVnYWN5LXRydW5rCiszNTkzNSA3MDAyM2FmMjA4NWFiNTBlYzMyMzljODRmZjk2NTI5Y2Y1OGZkZGFmIGxlZ2FjeS10cnVuaworMzU5MzYgODRkZmE5YTY3ZGExNDYxODMyMzFhMDk3MDcwNzIwZGI0ZWFjOGJiYiBsZWdhY3ktdHJ1bmsKKzM1OTM3IGI2ZTRiZjMzNmRiOGEyNDc3MTU0YTcwZDk0Nzg5MWVlOGQyODcwYzkgbGVnYWN5LXRydW5rCiszNTkzOCAyOWE1OWY2NjJkZDEwNDkxMmVlZTNlMmE0M2VjMDVjMzJmMDM1OTU3IGxlZ2FjeS10cnVuaworMzU5MzkgMGRhNDRlYTA5OWY1NjhlMWVlNDE4Y2Q1MmJmOTIyMjdlY2IzNDBhYyBsZWdhY3ktdHJ1bmsKKzM1OTQwIGRkMWU1NWRlYWY1MmY4ZGIzYjliMzM0M2Y5MmRkMDBkM2YzZDQxMTEgbGVnYWN5LXRydW5rCiszNTk0MSBjMjVhOGMwNGRlM2U2MTUwOTQ2MGYwYzE4ZWQ1ZjkzZDQzMTZmNTRiIHJlbGVhc2UyMy1tYWludAorMzU5NDIgMzAyZDM5OWNmZDM3ZWViMWI5N2RiYmM4MTllNjYxZDMzMTc4MzJjMSBsZWdhY3ktdHJ1bmsKKzM1OTQzIDk1NTc3YjYzNWJiNDE5MjgyMmUzNDg5NTY5N2I5OTc1MmIxYTQ5YTYgcmVsZWFzZTIzLW1haW50CiszNTk0NCA1ZjRmMmY1MzZmOTYxYWIyMDBkZmU3MzJlNGQyOGU4YzQyMGQxYzgwIGxlZ2FjeS10cnVuaworMzU5NDUgZDFhOTg3NGMwOWI2OTRkYWMwYmM4N2ZiMGFiMDY1ZTFmNjkyNjZhZiByZWxlYXNlMjMtbWFpbnQKKzM1OTQ2IGI5ZWRkMzQxOGEzMWQ5MTY0OGQzZWFmYTRlN2NhZjQ2ZjJjMmUxNGYgbGVnYWN5LXRydW5rCiszNTk0NyBiMTY2NGE4MDM0OGFkYWY4YWQxYjBlZjAwYWNlN2VhMThhMDk2ZWI2IGxlZ2FjeS10cnVuaworMzU5NDggYmRhMDY2Yzk2ZTRmMWEyMzhkM2IxZmJkZmViY2EwNjE3M2QzNTI4YSBsZWdhY3ktdHJ1bmsKKzM1OTQ5IGI1ZTQwZjVkMDAwYjZhNzMwYjBkMTA1ZjBlZDQ3NDA1MjE0OTk1ZmEgbGVnYWN5LXRydW5rCiszNTk1MCBhZmY2OWY4MGY5OTgyNTQ5MzRmZTk1MGJkZDliNjVjZDcxYTgzMjJjIGxlZ2FjeS10cnVuaworMzU5NTEgYjVhMWUzNjczZTViZTE1OTE0NmM1MTUwZTkzZDRmY2EzNGRhNzVkMCBsZWdhY3ktdHJ1bmsKKzM1OTUyIDllNGQxNDViYjVjYzQ2NDE0NGY2OTQ1ZDUxMzVlMDExMTFlZDUyYmEgbGVnYWN5LXRydW5rCiszNTk1MyAyNzdkNDgzZjU5Njg5NjJkYjFkY2JhNmFkYTg0ZGVhYTkyYjk3YjQ5IGxlZ2FjeS10cnVuaworMzU5NTQgYjU4ZDMwZjExNmUyYTgyNGNlMzc2NzA0YWE3MzM2NDMzMjM3MTcyMiBsZWdhY3ktdHJ1bmsKKzM1OTU1IDMxYmRiZWM4ZjI4MmMwNmIxZjJiM2Q5YmJlOGQxNDg1N2ZkNmIzZTEgbGVnYWN5LXRydW5rCiszNTk1NiA0ZTViOTc4ZTZiNzgwMzZkMTFkNjE3MWZkNjVjYTYyM2FhM2U1ZDlhIGxlZ2FjeS10cnVuaworMzU5NTcgYzFjZmM1ZTQ4MzRkMTkzZTc1YTI1MGNiMmRhZTlmZmU2NDQ5Y2ZjZiBsZWdhY3ktdHJ1bmsKKzM1OTU4IGUwODAzNDA3ZTM3NzRlNzNjMTU2YmU5OTU5NGNiNzM2NTczNWQ0MWIgbGVnYWN5LXRydW5rCiszNTk1OSBjMzk1MjdlMjgwMTBmYzFlZjcxYjg3MTJmZmZmMTVlNzM1N2MwNGYyIGxlZ2FjeS10cnVuaworMzU5NjAgYjA1NmJiYjRlZGY5OTRkYjA3YjM2NjQ2YThmNmJlMzQ5ZWNlMjVkOCBsZWdhY3ktdHJ1bmsKKzM1OTYxIDg5OWExZjg4Y2M1ZjI0MmU4Y2M0YzgwOWU0NGYxYTM5NzM5MWY1MWMgbGVnYWN5LXRydW5rCiszNTk2MiAzMDRhMzdjMmNiNDI1N2I2ZWQzZTE3YmJkOTA5ZmQzMjcxMGU4MWJhIGxlZ2FjeS10cnVuaworMzU5NjMgYWEyMzMwNmEzZjI2OTk2YTFlYTdjMTkzOWU5YWU1ZjAzYTBlMjQ5OSByZWxlYXNlMjMtbWFpbnQKKzM1OTY0IGNlM2MyNzc3YjIyMmZmNTlhYjdjMTAwZDgwNjYxMTE2YTI1OTk4ZDAgcmVsZWFzZTIzLW1haW50CiszNTk2NSAzN2NhYzA2OGYwM2ZkNDZlMDFkZTlmODZhNzhmMDVmZDQzMDE5ZTg2IHJlbGVhc2UyMy1tYWludAorMzU5NjYgNTlhYTUzNDU4YTkzYjYyNGIwZGQ2YzU0YzYxZjk4MmIwY2Y5YjBjYiByZWxlYXNlMjMtbWFpbnQKKzM1OTY3IGExMDRhYTU0OWEwMjJhMDZlMjM5YjIxODdmZWRkNzBkODc4YTcxYzMgcmVsZWFzZTIzLW1haW50CiszNTk2OCA1Y2IyNGRiOGZjOTViMzU5YzYyMjVhY2U5MWIwYzI2MmNkMzc0MzRmIGxlZ2FjeS10cnVuaworMzU5NjkgYmFlZGY1ZmZiMjZiNGQyYjUwNjM1MWYyNzBlZjIyMDgxNWE5N2IyOSBsZWdhY3ktdHJ1bmsKKzM1OTcwIDA5MmFjMTNhNGM0MGEyZmEyZDExMjUwNzE1ODg1YzI2MDkxM2FiYjggbGVnYWN5LXRydW5rCiszNTk3MSA2NWY5YWQ5YmM4MjlkYzhiNThlZmViODU1ZWE1NDc5Njk1ZTlmMjhiIGxlZ2FjeS10cnVuaworMzU5NzIgMGFmYTgxZGI0Y2I3ZDI0ZmYyZDk5YWY5M2VkNTc5Mjc1YThmOTBiMSByZWxlYXNlMjMtbWFpbnQKKzM1OTczIDI2Njg4NGIwNDhiZDEyN2NkMzk0MGEwYTlmZjhkZWY4M2M1MTMxMmEgcmVsZWFzZTIzLW1haW50CiszNTk3MyBhNzRmOTA4MWM2OTcwODc4Y2FiZTE1MWY5Njk2MTc1ODc5MTU0MDBjIHJlbGVhc2UyMy1tYWludAorMzU5NzUgODUzNjU5OGNmMDRkNjM2OWQzNWQxZTZjZDRkMmMxZTAyODAxZWNlYiBsZWdhY3ktdHJ1bmsKKzM1OTc2IGVmYjg0ZWQ3Mzc3ZGRkNmMzOTVkNGYwYzAxNzVmNzM1MzVjNzRhYjMgbGVnYWN5LXRydW5rCiszNTk3NyA1NmE0ZWMwNjY2MjFkYTM5MDQwYzI3NzcwZWMwMTc5NWYxOGNmYTE3IGxlZ2FjeS10cnVuaworMzU5NzggMjg2MmJmOWVmOTEzZWYwNWIzOTIzOThiMjc3ZGI1NjFlYTQ2NDU1OCBsZWdhY3ktdHJ1bmsKKzM1OTc5IDY3OWU1YzhlZmZhZTIxMTJjYThhNDgzNzYwODdiZTNlYjFjNmVhOWMgbGVnYWN5LXRydW5rCiszNTk4MCAyYzE2OWNhNWZhNjliODQ5YWQzZGZlNDUxMWIxNmZkMTU3NGE4NWZhIGxlZ2FjeS10cnVuaworMzU5ODEgYWVjOWM5OGE0N2QyZTk1MzY2MjRmODdlMmQ4YmUxNzU0YmY0MDYwZSBsZWdhY3ktdHJ1bmsKKzM1OTgyIGM2NTg1NWM1ZDU2YjFkMTQ3MWI2ZmRjZGYyOWY5NTQ1OGYxZmQyMjIgbGVnYWN5LXRydW5rCiszNTk4MyBlNTMxNjIyNTJmYmU1Mzc4YTUwZTZlZWE1YTcyODc2NDQ3NDhjYTJlIGxlZ2FjeS10cnVuaworMzU5ODQgZmFkNTJmZmQ4ODkyNDNiYTFkMGM1YTFkYTM3NDY5Y2UxY2ZlMGQzMiBsZWdhY3ktdHJ1bmsKKzM1OTg1IDE4ZDZhOGY5OTgyMzg2MTRhZThmNTg2ZmYwYTI2MTJjYzUwZmM0N2UgbGVnYWN5LXRydW5rCiszNTk4NiA0NDgyOGNjMTM2ZTBjMGJkNWRmMmU1NGNmZTI1MTA3ZjAyMWU5MTkxIGxlZ2FjeS10cnVuaworMzU5ODcgZjlkNTRlOWIzMGJjODE5ZjY1MzFlZTFkMTE3YjgzODFkNWM1MzI4ZCBsZWdhY3ktdHJ1bmsKKzM1OTg4IGQwODdhOTVlODAzMjMxOTAyYjI4YzEwZTBlMjBiNGEyZTczZGRiZjUgcmVsZWFzZTIzLW1haW50CiszNTk4OSA2MGVmMWRiMTBjZWZiYjA4MjExNjY0YjgwYzI5NGQyNzUwNjk1NjY2IGxlZ2FjeS10cnVuaworMzU5OTAgZjhmZmEzZTZjNGYyZGQ4ZDAwNzQzNzRlYTMxYTU1OGY1ZDFjOWQ1ZSBsZWdhY3ktdHJ1bmsKKzM1OTkxIGFjYTQ0NWE2YmViNzkxYTdhNTMyZmE2YTZmMzMwNzRjOTFkNDZmOTMgbGVnYWN5LXRydW5rCiszNTk5MiA5N2I5MDhhOTk3MWE2NGYwZDFjYjEzZDFlZWVmNzBkMTg4OTVjMjM5IGxlZ2FjeS10cnVuaworMzU5OTMgNzQ3YjJkYzgyNDRmZWEzMWRiMzkxNzk3ZDY5YTY2YTE4ODZkYzk2OSBsZWdhY3ktdHJ1bmsKKzM1OTk0IGM3OWJlZmIzYzMxNGQ1ZjVhZTFjMjdkYTYzMjgxMzhhNjI1MmQ2ZTIgcmVsZWFzZTIzLW1haW50CiszNTk5NSBlMmI4MWYyYzhhNzBkYTI1ZTc5YTIzMDEzNDkzOGYwNDgwN2I0ODU2IHJlbGVhc2UyMy1tYWludAorMzU5OTYgOGVlNWE1NmI4MDMxMmJjY2EyZDViZjFiMzQ0YTcyNTQyZmQ2YmU1OSBsZWdhY3ktdHJ1bmsKKzM1OTk3IGViYTZiYWVlYTRlYWFmODliOThhODJlMTcwNGI3OTE5NDUyMWZkMzQgbGVnYWN5LXRydW5rCiszNTk5OCBkMzYxYzEzNWZhNzRlOGQ4ZmY1MzBkNWJhZjQ4MGI2NDk5ODBiZDI1IGxlZ2FjeS10cnVuaworMzU5OTkgMDQxZjg5Yzk4YzM1YmVlOTAxZTM4ZmM0ZTA2Y2IwNmI2Zjc3NTFkMiBsZWdhY3ktdHJ1bmsKKzM2MDAwIDI3NWE3N2Y5YTUwMDY2NDM0MTQ1Y2RkOGViN2Y5Y2RhZjU2MjZiYmYgbGVnYWN5LXRydW5rCiszNjAwMSA1OWJiM2IxZDYwNTlkMzI2MDM4NGQ1NGNhNTY2NGJkY2VlYTNlYjE3IGxlZ2FjeS10cnVuaworMzYwMDIgZjNkMDU2OGM5NDMyZjBiYWFlOGY0YzFlNTZhOGM5MjBhZDdiNWY2MCByZWxlYXNlMjMtbWFpbnQKKzM2MDAzIDIyNjYyNTg5YzRlMjA5ODljMmYwMGQ1ODNmYmJhZmQyZDNhYjQyMTcgbGVnYWN5LXRydW5rCiszNjAwNCBhNzk5YjBkMWM1Njg3ZTg2OTlkNjdmZmRlMzg0ZjQzYjNkYmE1ZWJmIGxlZ2FjeS10cnVuaworMzYwMDUgZjE1OWIxNWYxZjVjYmFmZWY4OTlmYzViNDNkMWM4ZGYxMzk5ZWM1ZiByZWxlYXNlMjMtbWFpbnQKKzM2MDA2IDdjNDYxYWVlNzQxYmVhMWI2NTZjOWYxNTkyMzVjNTg0MWQ4YjQwOTMgbGVnYWN5LXRydW5rCiszNjAwNyBhYTM5ZmFjMmE5ZmRmOWZhN2EwZTRmOGMxM2YwYWIzNmIwNDI4ZjM2IHJlbGVhc2UyMy1tYWludAorMzYwMDggZGY5YmQxMjc3MzBhZGM5ZTgyYjY3OGNiYTkyNjgwM2UwMmNlZTViMyBsZWdhY3ktdHJ1bmsKKzM2MDA5IDczMGEwM2Y1ZDhiNGRlMmQyMDRkZjcxNDFiY2E2NTRkY2YzMWU4OGYgcmVsZWFzZTIzLW1haW50CiszNjAxMCBjN2Q5YmU3M2M3ZGRiMzM1YTg1ZjQ5Mzk5OGFiMGJiZGEzZWNmMzEyIGxlZ2FjeS10cnVuaworMzYwMTEgMTg1ZjVkNmEzYTg4YTlhMTNhNTdmYjIyM2MyYWM1NWE4ZTQ0OGIwNyBsZWdhY3ktdHJ1bmsKKzM2MDEyIDAzYzg5NTgzOTk3OWMzZGNmYTMxMmZkMjk1ZmYwMjRkOTc3NWNlMTQgcmVsZWFzZTIzLW1haW50CiszNjAxMyBhYjVjMDgyNTdhZDdiNGU3NzljNWQyMmE1NDhjNmM5NDAxY2ZiYmQ1IGxlZ2FjeS10cnVuaworMzYwMTQgYjNjOTgxZWU5YWU5NTU4MWZhNjYwMmU0ZjYzZmQwM2RmMzYzZDc1MSByZWxlYXNlMjMtbWFpbnQKKzM2MDE1IGQzYWFkMzc3YTVhOTBkOWZmMGJhOGMxMzVhOTA0MzFhNGUyYTRiYmIgbGVnYWN5LXRydW5rCiszNjAxNiA4ODA3MWQyMDhiMzRhYTRlYzQzMmJkYTQzZTIwZGYwYzUzZjQzNzZkIGxlZ2FjeS10cnVuaworMzYwMTcgYWI1MTlkZTE3NmJiOTQ4ZjQ1NWM5MTAyZWQwMGYxN2RkN2Q3MDY3ZiBsZWdhY3ktdHJ1bmsKKzM2MDE4IDNhODRlMjNiMDQyZjQ1ZTA1Yzc4YzgzMmI2YWUyYmRkNTRkMGRkNWEgbGVnYWN5LXRydW5rCiszNjAxOSA2ZjI2NWYyY2NiMzNjYWI3ZTNmMzNlMjcxNjQ0YmFkZTYxMzY0YzkyIGxlZ2FjeS10cnVuaworMzYwMjAgNjgyMjAyNmQzYzNiNDE5YThiZGQxMzc2NzYxOTcwYTZkMDhhMTA5MSBsZWdhY3ktdHJ1bmsKKzM2MDIxIDIyZmRhZTdiYmExYWY3MDUxMTIyZjkzY2JhY2M0NzJlZWNhYTk5MzYgbGVnYWN5LXRydW5rCiszNjAyMiBlNjIxZTJhMWFiMzEwMmQzZDczMjAyMTBjYzQ0OTBiNTdiYzFjMWFkIGxlZ2FjeS10cnVuaworMzYwMjMgZTViMDQ3NzY1Mjg1YjM3Mjg1YjczNTY4ODExNDM4MGVjODM0NjdlNiBsZWdhY3ktdHJ1bmsKKzM2MDI0IGFiZDRiNzk1NTFkMmVhOTFmYTliYTkxOGYxNGI2YjdhYWYyZDFkMjAgbGVnYWN5LXRydW5rCiszNjAyNSA5YTM5MDFiZjYyMjJmOTkxOWMyMDZhNmM5OTdlNzgyZTVjMjAxNmM0IGxlZ2FjeS10cnVuaworMzYwMjYgNmZmZGRhNGNjMjIyMTViYzM2YmExZjhiOGFmYTE0YjA2MDE1ZGU3YSBsZWdhY3ktdHJ1bmsKKzM2MDI3IDVkOTQyYmVkZDI4ZjkzYjZiM2IyMjlmMGNmMWQxZDY3NWI1NDY1ZmYgbGVnYWN5LXRydW5rCiszNjAyOCBiOWQzYWEzY2RlOGE1YzFhNDAzN2JjMjYzYjJlZTY3Y2VlODczNjBjIHJlbGVhc2UyMy1tYWludAorMzYwMjkgMzc3MWVhOWE5M2FhZGE3MmVkMDA5ZTRmNmRhOTJmNjFiZTMzYjA5OSByZWxlYXNlMjMtbWFpbnQKKzM2MDMwIDg0ZThmZTkxMjQ0MGQ0YjFiOTc0YmY0NGJiZjc1NjY1Mzk3NDRmMGEgcmVsZWFzZTIzLW1haW50CiszNjAzMSBlYjQxYTQ4OWNjMmY3OGQxZDQxMjI3Y2ZkZmExOWUyY2VlMWE5Y2Q2IGxlZ2FjeS10cnVuaworMzYwMzIgMDEwNTdlNGYwYTYyZDBkMWZlZGU2YzJlYzI5Y2YwMTQ5ZjhlN2M5MSBsZWdhY3ktdHJ1bmsKKzM2MDMzIGViMGY4NzI2OGQ3MGFlMWIyODc2NjAzNjcyYWYyOTExOWM1NmNhNDggbGVnYWN5LXRydW5rCiszNjAzNCA3MGRlZTJiMTkzZjdkNTMxMTY1NjQ1YWQ2ZGNmNDljZTI2MGFhYjNlIGxlZ2FjeS10cnVuaworMzYwMzUgNjQ3OGViNmFlM2MwMWU4NDY5MWQ5NTRhOTQxMTljZDIxYjZmZTQ3NCBsZWdhY3ktdHJ1bmsKKzM2MDM2IGIwMGIyNmNiYzMwM2FmZTFhMWY3MmFiNjkzZjJjNDliMTBlYWNhZWYgcmVsZWFzZTIzLW1haW50CiszNjAzNyBjMDg2MzY2NDc5YjFlMDBiNmQxMGVlYzFmZTU4ODkxYzE4NTYyMmY4IGxlZ2FjeS10cnVuaworMzYwMzggOTFlYWUxZTkyNTc4MWI1NGMyMzVkMmQzNDFkNDUzOTc4YzIwOTBmMiBsZWdhY3ktdHJ1bmsKKzM2MDM5IGZkZjc1ZWVmNmE1YzMzYThmZjJhYzdiYWFmNGViMDRlMzY1MmIwOTAgbGVnYWN5LXRydW5rCiszNjA0MCAyY2M3ZmY0MmI5YTNkMTE2MjgzOTY5ZmQ2YzUwZTJmYTU4ZjEyNWI2IGxlZ2FjeS10cnVuaworMzYwNDEgM2MyMTU4ODc2MTk0YTFhY2NhMmMyZDYyNmQ5NWRkYTdkMTU5YTRkNCByZWxlYXNlMjMtbWFpbnQKKzM2MDQyIGVkMjI4ZThhMTM5ZmI5MDg5N2NiMWY5ZDc4ZDM3Yjc5OTZkYjM5ZjUgbGVnYWN5LXRydW5rCiszNjA0MyBlZmNhNTFlZjc4OWRhZjVhNGNhMGRmZWY0MTVjMzQ5NWIyOTcwZTM1IGxlZ2FjeS10cnVuaworMzYwNDQgYjEwODdlMWQ0NDc5NjNhY2ViOTk3MzE0NmU4N2FjYWMyMGRlN2Q5NyByZWxlYXNlMjMtbWFpbnQKKzM2MDQ1IGZmNjhkNmE1YTQ0MWY2YmQyZjU5NTMzNTdjNDMzNzk1ZjAyMzUzNTIgbGVnYWN5LXRydW5rCiszNjA0NiAxOTU0YjdlZGJmZTcwMDAzNmViNmY1NDNmMWQxMzdhMWJjYzgxOGI5IGxlZ2FjeS10cnVuaworMzYwNDcgOTk0MjQ2MDRkMzZhMzc3ZDI5MWRkMTE3OTg3Yjg2NmU0YTk1MjMwYSBsZWdhY3ktdHJ1bmsKKzM2MDQ4IGI3OTFmNjU1NGQyOGYyZWVhY2QyZDFmMDNkNTA2ZWM5ZWU5YzNjOGIgbGVnYWN5LXRydW5rCiszNjA0OSAzYmZlMmY0MmI4ZjkzODNkNjA1YWZhNTRlYTg1YmVlOThmN2YzNzI0IHJlbGVhc2UyMy1tYWludAorMzYwNTAgMjc5NjdmYmJhNDhmMzFkNGE4MjU0Yjg2MDAwMjFkZmFmNjc0ZTdkYSBsZWdhY3ktdHJ1bmsKKzM2MDUxIDZmYzg4MjdjNDAzYzE2MzQxOGIwZWI0ODgzYzMyMjFlOThjOWMxN2YgcmVsZWFzZTIzLW1haW50CiszNjA1MiA1MjVhYmM2NmJjYzI4YzBmYjk0MzJjOWJlOGIzNDc5N2Y0YTY0OGIyIGxlZ2FjeS10cnVuaworMzYwNTMgMDkwMTJjNmIyMDY4MDVjM2YzNWM0Nzk4ZDlhY2ZmNDA2YzVhYmYxZiBsZWdhY3ktdHJ1bmsKKzM2MDU0IGVkMzc0NmRhZDcwNWEyYjk2NmU1M2JhZWIxYTc1NmNmZjFkODdiNDEgbGVnYWN5LXRydW5rCiszNjA1NSA2YzI4YWQ4MDQ3ZjJkZmJhOTE4ZWUzZTRjNWVlNDcyZWFkYmJiYjNiIHJlbGVhc2UyMy1tYWludAorMzYwNTYgOGM0MDc5MDYxNzA4NThjNWU3NWFkYjk1NWQxYmNiNjE0MDVlOTRmNiBsZWdhY3ktdHJ1bmsKKzM2MDU3IGQyNDRiNTNlY2ZiZWJlMGM1ZTZlNzBlY2I5ZDNiOTc3ODBhYzA1MzcgcmVsZWFzZTIzLW1haW50CiszNjA1OCA5Njg5ZGEwMDExOTdmYTllZWU4YjRiYzVkOTdkMTFhMTk2YzFiZTQyIGxlZ2FjeS10cnVuaworMzYwNTkgZThiNGY1NGY3ZDE5ZWM2NzY4OGI4MDIwNDdmZjcwNDc3NGQ2NzIwNCBsZWdhY3ktdHJ1bmsKKzM2MDYwIDMwMGRiODFlMmU0YWNiZWMyMjFjYTNjMzgwMTA4ZDk3ZTFhYzMxZjggbGVnYWN5LXRydW5rCiszNjA2MSBhNmUwNDg0NzI4MGEyNmRlYTVlNjk4OTQzZTg0Zjk4YmI4OWY4NjkzIGxlZ2FjeS10cnVuaworMzYwNjIgYjkzNDVjMzU1ZjA0YjcxOTc3MzRlMzBlOTI2ZjExNmU0OWU3MjA2MyBsZWdhY3ktdHJ1bmsKKzM2MDYzIDBiZGI0OWE1YThmYTYzMzY1MmM0MDk0ZGI4YjQzNzMwMTIwY2RhNWUgbGVnYWN5LXRydW5rCiszNjA2NCA2OTQ1MjhlODVhMDRkMWZiYTYzZTVlZmY2YWExZTNmNWIzNTc2MzQzIGxlZ2FjeS10cnVuaworMzYwNjUgYzhhMjJiNWNmNThhNThiYWEyYTY4NTQ5NzI1NDJlNGRmYzY0NzIwOCBsZWdhY3ktdHJ1bmsKKzM2MDY2IDNkNjQyNGMwMzg4ODJlZDU5NjJlMjE2YTgxMmJjZGYwNDFhNWIyN2MgcmVsZWFzZTIzLW1haW50CiszNjA2NyA3MGNmZTA2NWVhYzU5MjY0NmEyYWViYmEzMjViM2RjMjI4NjA5M2M0IGxlZ2FjeS10cnVuaworMzYwNjggYTk4ZjUwZTUwYmVmYTFlNTJiMDUzMDFlZmQzNGE4M2M3ZDJmZjc5NyBsZWdhY3ktdHJ1bmsKKzM2MDY5IGRmNDk0M2QyNGNiNmRkZGU0NzcyMDY2Y2NmMzhiYmZjOTA4YWExZDUgbGVnYWN5LXRydW5rCiszNjA3MCA3NDA5YzBjMzcwZTIxMzI1OGRmODNjNjVkMGFkODllZmMyNjk4NjMyIGxlZ2FjeS10cnVuaworMzYwNzEgZWZjYTM1M2U3ZmQ2NzVmNzExNzhhZDhjMTE2YWQyZjk4MThjNzlhNiByZWxlYXNlMjMtbWFpbnQKKzM2MDcyIDI5Zjg3OTMyYzdjNzhiY2EzNjdiYjc1N2E5NTQ1YTU5NDNiYjc2Y2UgcmVsZWFzZTIzLW1haW50CiszNjA3MyBhNzJiYzQyNTczMzY1MWViNjE0OTVlZTM1ZWNmMjRiMmZmN2JjOGUwIGxlZ2FjeS10cnVuaworMzYwNzQgZWM2ZjlhMTkwODMxOTMxY2ZhZGQ1NTczOTY0ZDgzODEwMDlkNDVkYSBsZWdhY3ktdHJ1bmsKKzM2MDc1IDEwYTAxY2UzZWEwYWUwMWRjMzU1ZjI3ZWZlMTFjZmIyOTI3NjcxYTcgcmVsZWFzZTIzLW1haW50CiszNjA3NiAzNjM0NDE4YTg1OGU4MjczYjRhMDBhZjc1OWZkMzhhMzkyNDU3YzdkIGxlZ2FjeS10cnVuaworMzYwNzcgMmY1ZjM4ZjRiYzJiOTAwODliOTU2NzM5YWYxODZkMTA5YzUxNjhkMSBsZWdhY3ktdHJ1bmsKKzM2MDc4IDhjMDM5NGFlYzZkY2Q0MGZkYzNlODEzYWE4YWVmMDU1ZDY2NWM0YjcgbGVnYWN5LXRydW5rCiszNjA3OSAzZGZlODFhYzBlN2NkMGRmNGUyMzNmYmQxNGIxYTZiYjdjMzljYmI2IGxlZ2FjeS10cnVuaworMzYwODAgYTgwZWUyMDA0ZTZjYTQ5MmIwYjlhMmVlOGU0YzkzOTQ5N2QwOTY1MiBsZWdhY3ktdHJ1bmsKKzM2MDgxIGNkYWQwMDViYzAzMDc3NWZlZjdiYWM2NzNjMzkyZDY1Njk0MzZjZTggbGVnYWN5LXRydW5rCiszNjA4MiBjYjk1N2U2NWY0NDQ5Yjg2OThiNDk0MGRlZGI2YTYyMDdiMGU0YzIyIHJlbGVhc2UyMy1tYWludAorMzYwODMgMzY3OThmMWM4ZTlhMWE2NmZkZDc3ODA1ZWY5NzZjMWExNDg4MzBmOCBsZWdhY3ktdHJ1bmsKKzM2MDg0IGI5YzllN2U4YmU3ZDU0ZmI4MWEyMTk1YmE4ODA3NWY1MmNlMjU3MzIgbGVnYWN5LXRydW5rCiszNjA4NSBhYzRkNDIwY2M3OTllNWQyNjZhN2Y0NmE3ZGY1YTc1ZDczNzJmYTgyIHJlbGVhc2UyMy1tYWludAorMzYwODYgYmRmMjM4Nzk4OTQ5OWVkZjA2NzQ5NmQ5MGNlMGZkY2M4MDAwNmEwMSBsZWdhY3ktdHJ1bmsKKzM2MDg3IGE4OWNjNTM1YjRjNTc1NWFhYzg2YmIxZWE0NzUwYTRkNDRjZjBkZGUgbGVnYWN5LXRydW5rCiszNjA4OCBlZWFhN2ZiMmYxNmY3YTBlZDNmYTMyYmVkZjQxYTMzZGJhMGIyZDdmIHJlbGVhc2UyMy1tYWludAorMzYwODkgOGU1OTU4YzkzYzg4MjE1ZDQ1ODc5MmE2YWY1OGUyYTgzZWZkNDMwMSBsZWdhY3ktdHJ1bmsKKzM2MDkwIDhlYWI3NjU1NjAxZmVkMTIxMDAwZGMwZWM0NGFmYzYwYmFiYjEyMjQgbGVnYWN5LXRydW5rCiszNjA5MSA0MmJiMWRjZGYxNmU0MWJkMzMyZTAxZDA3MjZkZjM2MzU3ZDU5YzE1IHJlbGVhc2UyMy1tYWludAorMzYwOTIgNDdkNjRjYjAxODIwNWViZWQ0MWJjOWEyYzVmMjNlYTk2MDgyYWU3YyBsZWdhY3ktdHJ1bmsKKzM2MDkzIDAxNGIwZDg0NDIyZjdiNjMxZTAwM2YyNzlkMDQwMzg5ZTNjZjZiZWUgbGVnYWN5LXRydW5rCiszNjA5NCA5NTI4N2NkZGJjMWVjYTU2Yzk2Y2U3ODAwMWIyZDk5OGU3NzMyYTE0IGxlZ2FjeS10cnVuaworMzYwOTUgNjFhZjQ3MjEzZmU2Njc0YzgzNjI2NzE5OGRhNmZlNDM0YzJjMDM1MyBsZWdhY3ktdHJ1bmsKKzM2MDk2IDFlZWFhNTA5M2ZjMDQxMTE2MDQwMmE3ZDAwYjQxNTQwYjUxZTRkODggbGVnYWN5LXRydW5rCiszNjA5NyBhZGI1OWQ4OWIwOTkxNjA1NjNhNDg3M2RkOTVjYTk1OWIwNWYxNjI2IHJlbGVhc2UyMy1tYWludAorMzYwOTggN2U3MjczYzhkMjFlYjdiNjc3MzczNmRhMDNiZGJkNDk3MDViYWZlMyByZWxlYXNlMjMtbWFpbnQKKzM2MDk5IGMyYmMyNDhkM2U5YzcwYjU2NWJmNjMwZDI4Njg5NDg5NTFjZWIzNjMgbGVnYWN5LXRydW5rCiszNjEwMCBjMGQxMjYxZGE4NDhkNjFlZGM3MWRkODg2YWQ2Zjg2YjJjNTI2NTE0IGxlZ2FjeS10cnVuaworMzYxMDEgY2JmYTA0Mjg1NTI5MGEyMzgxYzEwMWNmYjJmYmIyZDEyMzYwZGYxZCBsZWdhY3ktdHJ1bmsKKzM2MTAyIGI2MGZjNWVmZjE1NTk0ZDc3NTA0ZDBmZTMwZDczOWVjYzVhYjZmMTkgbGVnYWN5LXRydW5rCiszNjEwMyBmZDUyYjY4MDc5MjQ4Y2IxOTkwNzgzOWU2MTI4NzdkYjNiMDUwOWVjIGxlZ2FjeS10cnVuaworMzYxMDQgNmRiZmVlMmRlZDg5NTZlNmY3OTU2M2ZlZDliYTY1NTM5NGYwZWY4NiBsZWdhY3ktdHJ1bmsKKzM2MTA1IDk0Yjg0MWFkZjQ4NWJjOThhYWU4ZGE0ZjQ0ZDZlZTNmOTg2YzdlYmEgbGVnYWN5LXRydW5rCiszNjEwNiA5MTM4OGM4NDViMTY5NWZlNDYzMGI2NTM4MjU2NGE1MzA3YTgxN2JjIGxlZ2FjeS10cnVuaworMzYxMDcgODgyY2YxMTM3MmEzZTRiZGU0NjY0NTNlNjU5NWQxNGExNmYzODU2MSByZWxlYXNlMjMtbWFpbnQKKzM2MTA4IDg1NGEyNDE3ZDM1ZWI1MThhZGFlYzY2ZTUxMDRlNDRmZGQ0Y2I3ZDggbGVnYWN5LXRydW5rCiszNjEwOSBhMDE4YWUzODZmOTllMWE0OWQxNzRjMTVmNjNiZDFjYzM4NjhjOGRhIGxlZ2FjeS10cnVuaworMzYxMTAgNWM3OWI0ZjEzYjI2ZjgyOTAwZGE5ZWYxODM2NzRmNjlmZmVjZTU3NyBsZWdhY3ktdHJ1bmsKKzM2MTExIDcxYjNkMmJiZTYzYmZhNzg1NDc2OTJiZmU3OGQ4OWRlYTgzOWUyNWIgbGVnYWN5LXRydW5rCiszNjExMiA0MGM1MjRjMWMwZmVmZWE2N2VkZGZlOGU0ZDU3ZDQzZGEwYWE2NjA4IGxlZ2FjeS10cnVuaworMzYxMTMgZTEzNDVjZTI3NWY3OWQ4MzQ3Mjg4NWViZmEyMzlhZDM1NWI0MjY0YiBsZWdhY3ktdHJ1bmsKKzM2MTE0IDZkN2QwMGJmMWFhZTU5NmVmNjY5NWFiMjA1MWZkMmM3NDhkN2NjYmUgcmVsZWFzZTIzLW1haW50CiszNjExNSA4MmZlNjgzMmU1MDVkZWIyNGE3N2I0ZWE0NWJhYjdkZWQyNGRlZDJiIGxlZ2FjeS10cnVuaworMzYxMTYgOGFjZjQyNDFlZTk0ZjVjYzExZjJiZjY2MGRlZjdkNmM2ZDU3MmM1MSBsZWdhY3ktdHJ1bmsKKzM2MTE3IGFhMGM4NGQxZjA2Nzc4NjhmYzdiZDVkZDE5NWYyNmMyOTU5MzYwNDcgcmVsZWFzZTIzLW1haW50CiszNjExOCBjZjg0ZGJjNmE4ODFjN2IzMWMyN2I2MjE3OTkwYjMwNzQwMDdhZjA0IGxlZ2FjeS10cnVuaworMzYxMTkgMjlkNzYxYzUxMDNlNzdiNTExMmJiODBmOGRlMWIzNzk4MWQyOWFlMSBsZWdhY3ktdHJ1bmsKKzM2MTIwIDkyZjU5N2EwNTU4MTVlZTNlYWVjM2EzOWUyNDQyOWYyNjY5ZDgwNzYgcmVsZWFzZTIzLW1haW50CiszNjEyMSBjODRmZDZiZTVhMTRmNDQzNjFhZGZhNGQwYzAzYjMyMjU4ZDFiMDRmIGxlZ2FjeS10cnVuaworMzYxMjIgNDFjNTlkODBiYmM1ZjZmYmNiYjJjMmIzOGJjNmNhNWJhN2MyNzI3YSBsZWdhY3ktdHJ1bmsKKzM2MTIzIGUxOTZiODIzZTZjNWJhZDFmYWFhZWEwODdjOTliZjhlZjNmYzEzOGEgbGVnYWN5LXRydW5rCiszNjEyNCBhMGQ4YjE0NTY4MTkzMTY2Yzg2YTRiMzZkNzg2Mzk2M2I2MDQ5NjhhIGxlZ2FjeS10cnVuaworMzYxMjUgMTZhY2M2MWQzM2MwMmQ2Y2M4NjFlNjM3MjEwYjMwOTJlNmJiNWZjNCBsZWdhY3ktdHJ1bmsKKzM2MTI2IDEzNjU2ZDU4ZDQ1MDE0MDU5NGNmN2RhNzg5NThkYjA4NjliMTJmZTAgbGVnYWN5LXRydW5rCiszNjEyNyBjZWRjOTU0NTk2MzZkNTMyZDc1ZTA1MWFlZTA0MWU1OTEwZWE0ZjFkIGxlZ2FjeS10cnVuaworMzYxMjggZWM4OGYyNzhhMWFkNDk5MDllODg2YjE2MWZmMGJjOGQ3NjU4OGEzNiBsZWdhY3ktdHJ1bmsKKzM2MTI5IDMyMTk3Mzc1MTI4ZTIyNjU4OGMyMzJkMjdmZjVmNDJjZTlkNjU2MTggbGVnYWN5LXRydW5rCiszNjEzMCBmYzZhNzM5MDVlNmYzOGM5ZDQ3YTI5ZWExNTg1ODMxOGM3ZTZmZWNlIGxlZ2FjeS10cnVuaworMzYxMzEgMTkxODg4N2QzODdiMDEwNGUzZjNjM2IzYTc5MzU2ZTk0OTc1YTk1YyByZWxlYXNlMjMtbWFpbnQKKzM2MTMyIGJjZDIxYWJhYTViNGYxNWI4NzhiMTI5N2MyMTcyMDJhN2U5NGFkMjQgcmVsZWFzZTIzLW1haW50CiszNjEzMyA0MzAxZWNiZWIzYWRmYTQxMzZjMDk4MzRjOGY0MTczNGJjZmQ3MTYzIHJlbGVhc2UyMy1tYWludAorMzYxMzQgZmM0NzYyZWJiZTJjZjY3MzQ3MmQ2YmE5YWZkNDA1YjQyYjUzNzdmMyByZWxlYXNlMjMtbWFpbnQKKzM2MTM1IDQzOWU3MWE0ZTU1NDY4NTRjNTRjZjg5Y2I1ZDNhYTJjNzVlYWI4NTAgbGVnYWN5LXRydW5rCiszNjEzNiA0OWU3NDEzY2Q5MWMwZTU4ODYzOWYyNmNlNDg1NTg3MDI1ZWMzZTBhIGxlZ2FjeS10cnVuaworMzYxMzcgOWU1YWY0NWNlZmNiNWY0MTJhYzE2OTdmYzAxNDhjNDIwN2Q4ODBjMyBsZWdhY3ktdHJ1bmsKKzM2MTM4IGQ2OWM4MDY4ZWFlNjFjZWQ4ZTcxNGM1MDNhNzc0MTRkMDA5NDRiMTEgbGVnYWN5LXRydW5rCiszNjEzOSA0MThhMGM2YmRjN2Q0YTBlZGZhNDJkM2IzY2ZkYTk1Yjk4OWQyNTY3IGxlZ2FjeS10cnVuaworMzYxNDAgYjlkZTZiNjY1MjczNmQ2MDE1Y2I3OGFjNzQwMDE4YWRkZTc3NThmZiBsZWdhY3ktdHJ1bmsKKzM2MTQxIDg3MzAyYWMwNzI1NTI0MzUxOTJhNDhiMGJmNWVlMzc0NWZiOTQ1NjIgbGVnYWN5LXRydW5rCiszNjE0MiBiMGY0NTRmNTU4ZTVlYjJmYTZkYzZmMDg0MWY0NTA5YjVjNTEyNmRiIGxlZ2FjeS10cnVuaworMzYxNDMgNTBmM2E1NTBiNGZlNmFlZjMzZmQyYTc3Y2MwMGU1NzNlZjk5OTRhYiBsZWdhY3ktdHJ1bmsKKzM2MTQ0IGMxZmJiYzNlZWQzOWU1ZmVjNjY5NzM1ZmI5ZjNlMjBmMmYzYzQ4ZGQgbGVnYWN5LXRydW5rCiszNjE0NSBiMDU0Y2ZmN2JiODZkNmYxMjdjMDZlMzQwOGQ1MjBjY2MyODg2YzhlIHJlbGVhc2UyMy1tYWludAorMzYxNDYgY2YyOGY0YTZlNjc2MThhNWE3N2ZjZjNmOGM1YzUyM2RmYTY1MTY5YiBsZWdhY3ktdHJ1bmsKKzM2MTQ3IDdhMTk4ZDljOTI2MTJkMjQ0MzU2M2Q1ZDMxYmY1NTIzYWJkZWI5NWYgbGVnYWN5LXRydW5rCiszNjE0OCAzMTUyYjc0N2EyZTQ2MTFiMzNmZmYyNWJkNTE2NWJiYWVkMTdlNzQxIGxlZ2FjeS10cnVuaworMzYxNDkgZjQ5NDcxOTUzNjg5YTNiZjhiNGY2NDZlODUxNDM0NGQ1ZmE2MzQwOSBsZWdhY3ktdHJ1bmsKKzM2MTUwIDZmZWFkNWVhNGJiYTIzNzI2MmYwYjA4NGUxZjZmYWExZTBjODY3MmMgbGVnYWN5LXRydW5rCiszNjE1MSA1NDEzMjdjYjhmOGJmNmI1NTcxNTRjMjhhMjM3NDI1ZDJjZDJjYThiIGxlZ2FjeS10cnVuaworMzYxNTIgMjI1M2E4YzJlYTYyZGM1ZDNmZmU1NzZlODE3NmVkZTYwZWJjYjg1YSBsZWdhY3ktdHJ1bmsKKzM2MTUzIGYwZWI3Nzc4YTE4MzA4M2YwZmVkYThmZjMyNmNjNjE1OTc4YzY1MDMgbGVnYWN5LXRydW5rCiszNjE1NCA2M2U5ZTVhMjE2MGI1ZGM5YmJhZmI5ODM3NGEwMTZkNDg0NDcwYzU0IGxlZ2FjeS10cnVuaworMzYxNTUgNDQ0ZmE1ZDUwYzE0ZDIwZTBhOGUyYmQ3YTZlNTQxMjBjNjExYzcwMyByZWxlYXNlMjMtbWFpbnQKKzM2MTU2IGM3ZGNiMDk3NDVkMzViNDliYmVhYjkxNTdhYmI2ZGQ1NDBjYmM2NDQgbGVnYWN5LXRydW5rCiszNjE1NyA2ZTRmZTU1NjBkODFkNDhhYzQxYzNiMGM4YmQyOTFhOGNhMDFlNDQwIGxlZ2FjeS10cnVuaworMzYxNTggYmM5YWU0NGIyY2U0MWZjM2RiNWY5MjJlZjI5M2JhMzYzZjNjMTdlNiBsZWdhY3ktdHJ1bmsKKzM2MTU5IGE2MjdkOTQ5MzE0OTUzMzk5OWQxZjQ1ZTNhYmFiY2ExNGI5NDFlMDUgbGVnYWN5LXRydW5rCiszNjE2MCA0MDhhNDBlNjUyNDdjZDBhNzcyZTRmOTkzYjU1NjdlMmZkOTg0MWVmIGxlZ2FjeS10cnVuaworMzYxNjEgYzdkYTY5OTBjNGVkOWI4ODdlMzQ3OWMzM2NiNmRmMjYzN2MyYTc4YSBsZWdhY3ktdHJ1bmsKKzM2MTYyIDVkMjcyNjljOWUzM2M2YTI4ZDgzM2ZkNmJiMWYwNjQ3ZjM3NWI2YjYgbGVnYWN5LXRydW5rCiszNjE2MyBjOWRiNzkzY2FhODBhMjU0OTQ4ZGE3OWFkNjE1YjA1YzhlODEzMWVjIGxlZ2FjeS10cnVuaworMzYxNjQgNTRiMjU3ZTU1Zjk5MTUwMTU1OTQ4ZGQzZGZmYmQ0MWY1ODEwY2M0NiBsZWdhY3ktdHJ1bmsKKzM2MTY1IDc0ODEyOWU2ZTEwODJmMzNkZjFlNzhhNWNiNjFmMThjMTM4M2NmN2YgbGVnYWN5LXRydW5rCiszNjE2NiA4YjJkZjlhMDdjZDcwNGRkNmZmNmM3OTU5ZGU3OWQxOTZlOTg4NjljIGxlZ2FjeS10cnVuaworMzYxNjcgMDQxMzAwNWZjMGIyY2NiYjFiY2U4OTg2NzE5ODgxNGY4NjJjMmQ1YyBsZWdhY3ktdHJ1bmsKKzM2MTY4IGU5NTBiZmUxODU2ZTIwZjQyNzEwMzAyOTFkYjU5MGFhOTY3NGQyN2IgbGVnYWN5LXRydW5rCiszNjE2OSA5ZDg2NTViNDc1ZGI0OGQwNDhjM2YxYTllNmFiMmIyMDhkOGFiZDBmIGxlZ2FjeS10cnVuaworMzYxNzAgNDRlOGU4NGYxMjgwODI1MmQ0ZTlhNTE0NjZmMjljM2E3NDBjNmVhYiBsZWdhY3ktdHJ1bmsKKzM2MTcxIDExYzMxYTk4ZGZkNjkwYTg1OTQ1Yjk3ZmRlNjgwMjNiMGM5NGY1MjkgbGVnYWN5LXRydW5rCiszNjE3MiAxM2NlNDQ3ODQ1YmNiZDQ3YmZlYmVkOGJkNmUwMGFiZTI3OTU3N2E0IGxlZ2FjeS10cnVuaworMzYxNzMgMzQ4ZGI3N2EwN2U5MThjOGM1NmI4ZjViMTcwN2VhOWE4NTkwODRkNSBsZWdhY3ktdHJ1bmsKKzM2MTc0IDQwYWNiNjhhZDIyNDc3M2I5Zjg1N2JhMjBhNmM3YWQyM2VmZGQ4N2QgbGVnYWN5LXRydW5rCiszNjE3NSA1ODFhOGExMjhlMTFjYTE1MzY5YTFkMTc2MjFiNTAwNWU5MjliMjM4IGxlZ2FjeS10cnVuaworMzYxNzYgMTJmMjRjYjI3MzgzYzk3MWI3YzAyNjdmMTViNDExMmU3MDA1ZDVjMiBsZWdhY3ktdHJ1bmsKKzM2MTc3IDYxMTgwYzMxZDRiZGIzZWFhNTA1NWRkNDE1ZTM4ZTZhYzMxMWIyM2UgbGVnYWN5LXRydW5rCiszNjE3OCBhNDZiZGU5ZTBjNzRiYjc2MWRjZTY4NDU0Nzk4ZTIyNjgzOWI1YTNlIGxlZ2FjeS10cnVuaworMzYxNzkgNmFiNWUwNTI2YTMyYWJkNDAxNzNlNDUzNzk0YTM4ZTM0YWFkMGE0NCBsZWdhY3ktdHJ1bmsKKzM2MTgwIGU1YmM5NDdjNDRjYWViYzAyOTE3NGJjOGUyYzhjZjA3MWIxZTM5ODkgbGVnYWN5LXRydW5rCiszNjE4MSA4NmY1OTYyZmQ5YjdlYzZjYjc4NDAyZmE3NjA3NDM5MGI2OWMwZDMwIGxlZ2FjeS10cnVuaworMzYxODIgNTViYTUxYmVmMGE4MWEwNDI5NGVlMmUyNjBhMDBmMTcwM2Q3NDNiNiBsZWdhY3ktdHJ1bmsKKzM2MTgzIGE3ZDZmYzE3ZjI1NzU1Mjc2Mjk0NWJjMjUwZWRmYjg3MjhiYzA5M2MgbGVnYWN5LXRydW5rCiszNjE4NCBiOGZjZTIyNThjMjAwNmEzMzliZDJhOTM3MmMyZjFiYWQzYjY2YzhiIGxlZ2FjeS10cnVuaworMzYxODUgZjRhNDgxMGY5ODJlZDVlODU0YWM2M2VkNTYyNTIwM2U1NGY1NGU0ZCBsZWdhY3ktdHJ1bmsKKzM2MTg2IDMzMWU1ZDhiMjk2Zjc2YTNkZGE4OTFmMmU1YWExZGI3NDI2NmMwZmUgbGVnYWN5LXRydW5rCiszNjE4NyA1MDkwNzJjM2ZhMjZiOTJhMjUxZTVmNTQ3YjNiMDI5MzBkMmJmMGZhIGxlZ2FjeS10cnVuaworMzYxODggMWZkM2FhNGJjMTIzYWQxMzE5ZTk3ODM0Yjc0NjQ4ZjNhMDYxY2E4MSBsZWdhY3ktdHJ1bmsKKzM2MTg5IGI5OWE1NTI3MzhiZmFlMzc5MzIzYTI4OGQ3OWM5NTYxNTI3YjVmYWMgcmVsZWFzZTIzLW1haW50CiszNjE5MCAzOTExNzNjNjhiYjNjOTA3N2RmY2FiMmFhNjQ2YmY2ZDljOGU4NTZiIGxlZ2FjeS10cnVuaworMzYxOTEgOTYzZDIzNTU3MDIwZjIyMjk5NTE0MzFjYTU4YjYwZTgyMDcxNDIzOCBsZWdhY3ktdHJ1bmsKKzM2MTkyIDExOTgyZGE5ODc5MmM0NzY3ZjE0ZWNjZjY2MTAzZjUxNzYwMWZiNTAgbGVnYWN5LXRydW5rCiszNjE5MyBlNDNkYTRmOTk5NDE1NjdjM2FiOTA1MGNkODc5ZGNmMzBmMDM5ZTI0IGxlZ2FjeS10cnVuaworMzYxOTQgMGFmNDE1NDNjOWI2NWY3MWYwZGFjODc4NTZlYTk1M2JlOGFjZmFhNCBsZWdhY3ktdHJ1bmsKKzM2MTk1IGY1MzlhOWI5NGY3OTQ1NzQ0NGNiOWJkMWRjYmRkMmRiYjJiNTk5NzAgbGVnYWN5LXRydW5rCiszNjE5NiA2Mzg0MDc4ZTdlZGY5NzZiZWYzYjE0YTlmYTczNTVhYmJjMWZjNDk2IGxlZ2FjeS10cnVuaworMzYxOTcgNDM0ZDNmMmNiODMyODI4ZTFlYWJmYzE4ZjEyYTY4MzAwMTE4OTZlNiBsZWdhY3ktdHJ1bmsKKzM2MTk4IGY3M2E2M2RkMzI4ODU2NzY2ZWExMjZjMTUzM2Q2NTgyZWZlMDkyNWQgbGVnYWN5LXRydW5rCiszNjE5OSBhOWE0YjBkZjUxMmFkNGY5NGRhN2ZkYjY2ZGI2MDRhZTY5ODc5ZGZjIGxlZ2FjeS10cnVuaworMzYyMDAgNWJmYzc1NDNkN2VmYTBmZDAwZTM1NmUwOWI4NzRjOGE1N2VjOWRmYyBsZWdhY3ktdHJ1bmsKKzM2MjAxIGM2YWIwZjg4ODk1YTVjNThlYTUwNjM2YjBlMTJlYjgzOGUyZDk2YTggbGVnYWN5LXRydW5rCiszNjIwMiA3NjMyNzczNzgxMTRjM2QwNWFmZWE0NTJmOWJhNzlmODBlNGZmM2Y2IHJlbGVhc2UyMy1tYWludAorMzYyMDMgY2RlMmZlYWI3ZmUwYWI3MGQyMWM4YjUxNTUzMGFlNmM1ZDc1OGYwNSBsZWdhY3ktdHJ1bmsKKzM2MjA0IDI3ZTcxMmM4ZTFhMzY0OWU1NWE3Yzc2NjlkZTRiODAwNzc3ZjdmOTAgbGVnYWN5LXRydW5rCiszNjIwNSBlYzY0YTZiZTMyZjcxN2RiZGU3ZjMyMmU4NzNlMTg5Y2NkM2UzMjk3IGxlZ2FjeS10cnVuaworMzYyMDYgZDBhNmNlYjg0NjQ2NDcwNmQ2M2FlMDFlNTI2Mjk1NGYwMzIwYTUwYyBsZWdhY3ktdHJ1bmsKKzM2MjA3IDY4NmU1ZDM4YmU0MjFhYmNkODI4NTc4YTU0MjczNWViZjI0NTc0ZmYgbGVnYWN5LXRydW5rCiszNjIwOCAwODE5NTA4YWFlM2FjM2UxNWM3NjU5NjdhMmQ4ODNmMmM4NDI5N2M3IHJlbGVhc2UyMy1tYWludAorMzYyMDkgNWNmNTA3YjY0ZjMxYTBkMDIzZGNjMTNjZGEyM2Y4YzIyZWM2NzM4NCBsZWdhY3ktdHJ1bmsKKzM2MjEwIGY5NTY5NTI2ZThkNDBkMWIxNjgwYzYwNjY4NzRjZGZlMWIxN2ZhMmUgbGVnYWN5LXRydW5rCiszNjIxMSA0YzcxYmNmYWNkZTJmMmEzZTM4MTJjMTZkZjA0ZWNiYzg1Mzg2MGI0IGxlZ2FjeS10cnVuaworMzYyMTIgNmZjMDI5MTVmNjM3YjAyNDRkMjBhNjQ1YzFjZjZiZDlmODYxZjc1NSBsZWdhY3ktdHJ1bmsKKzM2MjEzIDk4ZTQ2MzI3MjEyMDBiMDgwNzc3ZGRiNjg4NjYzODJjZWQ2MGYyZGMgcmVsZWFzZTIzLW1haW50CiszNjIxNCBlNWRmOGM4ZmFhMDk5YmQzMjRhYjlmMTM0M2UwYjE3NThjZmU0NjQ4IGxlZ2FjeS10cnVuaworMzYyMTUgMWQ1ODRjYTU2YjMwNDk1ZjEzOTE2NjY4Zjk2ZWEwMWMzNjc1ZjM3ZCBsZWdhY3ktdHJ1bmsKKzM2MjE2IDZiYzZhYmJhODY1OWVhYTQ5YTI4YzgyYmQyNWJhODUzOGI3MDE3YjkgbGVnYWN5LXRydW5rCiszNjIxNyAyZjc2ZTcyYWQxOTBjYjU5Mzk0YWIxYWU1Yjc2MGEyMDEzMjg1MGFjIGxlZ2FjeS10cnVuaworMzYyMTggNzU4NjFkOGM1ODcxNWEyZGJmMDRlNGIxOGFmYjE1YzI0MDFhNjFlMyBsZWdhY3ktdHJ1bmsKKzM2MjE5IDAxNGQ4N2M3MzIxMDJhN2YxMTY2ODE4OGQxZGMzN2Q2NmNmMGRkOGYgbGVnYWN5LXRydW5rCiszNjIyMCA0NzIwMjNkMGExMGQ2NDI4N2UyNmI5Y2Q2MTI1YTI2MjRkNzNlNTQwIGxlZ2FjeS10cnVuaworMzYyMjEgNmNlNjdmN2IwNDMwYThmZWRjOTA5MDZmYjE0NjE4YzZiMWQ1ZGIxYyBsZWdhY3ktdHJ1bmsKKzM2MjIyIGNkNDdmNjIyMWQ4ZDFmNTYxODI2MGU4YzhiNjU5MTAxYWVhMDFiZWEgbGVnYWN5LXRydW5rCiszNjIyMyAxYzJiYWFlMTQ4MjgyMzk3NzljNjkyNzNjYjBiNjBlNjE3NjgzMmFkIGxlZ2FjeS10cnVuaworMzYyMjQgOGNjZDhlYzYzY2MyMGMyYjRhMjBmOTg5MGNiMjNmOTY4NmE2OTMwNCBsZWdhY3ktdHJ1bmsKKzM2MjI1IDc1ZTVkMWU4YjYxNzFhMmE5ZjdkMmE2ZGU4Y2M3ZDdhMDhjZGNmYjcgbGVnYWN5LXRydW5rCiszNjIyNiA3YjZlZDM1YzU4NTBlNmY1NzAwNWU5OTczNDQ3YWMxZmZhY2ZjZWQ4IGxlZ2FjeS10cnVuaworMzYyMjYgZDk5YjViZWQwMDc4ODRiMjVmMTI3NmUyYmFmYjlhZDA2MWYyYTk1OSByZWxlYXNlMjMtbWFpbnQKKzM2MjI3IGFhZjkyOTVlZDQ1YjAwNmVjNzBjYTFkYzIzZjk1Njk0ZWFmN2Y2OTYgbGVnYWN5LXRydW5rCiszNjIyOCBlMGE3YzQ2MTMxMWIzZGNhZjZmYTM1NmNhOGRlYTEzNDExNDg1NGYxIGxlZ2FjeS10cnVuaworMzYyMjkgNzc5MTNiZTI5NGI5MjExNDY3YjQ1ODM3ZWRhZmMyYmVlYTI2MWE2ZSBsZWdhY3ktdHJ1bmsKKzM2MjMwIDg0NDQ4NDljOTQ0OGVkZWFiNjQ0ZGY1NDRkNmFjM2FiMzM1Mjc5MTAgbGVnYWN5LXRydW5rCiszNjIzMSA4MTAxZThkMjRmMDUyOGM0MTEzMDBhNjQ1NzM2ZDU3YjcwZTNiZWY0IHJlbGVhc2UyMy1tYWludAorMzYyMzIgMzkzYzE1YzBjNWE0OGY2NWViNGExY2U0NTYzNzQ5ZWZlMDkxN2QxOCBsZWdhY3ktdHJ1bmsKKzM2MjMzIGQ3MTEwYmI2YzEzZGM0MzlmNGFmM2VlMmU2YWJmOWIxOWUyNDkyZDIgbGVnYWN5LXRydW5rCiszNjIzNCBmY2ZiMmQ0MjIwYjBlNTczZTMyN2VkODU3MzBkMGI2ODkzNzFiZjA5IGxlZ2FjeS10cnVuaworMzYyMzUgYjFlNzFiMzkyNzk5YWE1NzE0ZDQ3ZTA2ODA2ZjU2NmJiOGMyNmUyNSBsZWdhY3ktdHJ1bmsKKzM2MjM2IDk1MGNmNjljNjliNjFkYzNlN2ZiM2Q2Y2I1ZWVhZjAwNjE3ZDZjYzcgbGVnYWN5LXRydW5rCiszNjIzNyAyN2UyMmY2YmQzYWU3NzJmZWE0ZmU3OTI0MWI3Y2RhYTI5MWMyYWE0IGxlZ2FjeS10cnVuaworMzYyMzggMjU1YTcxZjJkMjE1YThmNzBjMWQ1ZGI3YTc5ZmEyYjdjMGZkZDk5MCBsZWdhY3ktdHJ1bmsKKzM2MjM5IDg0ZTViNTg1ZDIwMWI4ODRhOTVmYzBhNGIyYTlkMjBlYmU1ZGIwM2MgbGVnYWN5LXRydW5rCiszNjI0MCBhNGJjMmZmZDhlNzE2YTkxNDc4NGU3ZDFkOGM1M2FhN2E2Y2EyNGIyIGxlZ2FjeS10cnVuaworMzYyNDEgNDg1ZDJlZjQzNDE5ZDE5MDAxNzBhZWJiZWE5ZDZiNjgyYzVjYjkxNyBsZWdhY3ktdHJ1bmsKKzM2MjQyIDNkZjM2ZTJlNWRkYzExNDlhZjhlYjUyZTIwYmMyMjVkODA2MjM2ZDQgbGVnYWN5LXRydW5rCiszNjI0MyA2NDUzNGZiM2FmY2Q5NDAwYmMzMGNmNzQyMWZlZjgzZTM5MjhkYzMxIGxlZ2FjeS10cnVuaworMzYyNDQgM2RkYzdhMjMxNzZiNjI4MzFkNDBhODM2NGY1ZmI3NzJmYjRmYWNlOCBsZWdhY3ktdHJ1bmsKKzM2MjQ1IGUzNzExODNkMGUxOTBjZTdlMGU3MjRiZjFhZDU4ODc0ZWYwNTkxNzggbGVnYWN5LXRydW5rCiszNjI0NiBmOGQ2MWVkMmYwZDNhMGUxODM2ZTc2NGE2MTU5YzVjMjUzODU4YWRjIGxlZ2FjeS10cnVuaworMzYyNDcgOTE1YjBlODMzYjViZmQyYmEyNWY1MzkyZWE1YTQyYTY2NmQ0ZGIzZCBsZWdhY3ktdHJ1bmsKKzM2MjQ4IDFjNjlmOTA5YzVhNjEzNzhkYTI3ZjAyNjFlNDJiYjAxMzc0NjliZjkgbGVnYWN5LXRydW5rCiszNjI0OSBkOGFiZjU4MmY4OTMwNmVhZTczZTQzZjFhYzQzMzliZjlkZGY1NzcyIGxlZ2FjeS10cnVuaworMzYyNTAgNDhjYTI3YWRhODFlNjVmZDc1NWQwOWFlMjc2YzRhNTAyZjNkNTlmMSBsZWdhY3ktdHJ1bmsKKzM2MjUxIGM3ZDJiMjRlZWZmOTlkNjA2NTE4ZGFiMjlhNjc2MzkwMTk0MTVhYTAgbGVnYWN5LXRydW5rCiszNjI1MiAyMGFkYjdjZTFiMDg1ZjQyMWIyZTNlY2I2OTM5NGEzYjI0OGFjMjY4IGxlZ2FjeS10cnVuaworMzYyNTMgZGE3YzNjNjFkNDBlMDA1MGZiMGFkYWIwZWVlNDIzZWNhZDhiMjMzOCBsZWdhY3ktdHJ1bmsKKzM2MjU0IDVlYzc4ZTJkYzRiZWM5NmVkZTc4MjM4YjU2OTU3ZGUxZWMwM2Q0NDggbGVnYWN5LXRydW5rCiszNjI1NSBmZjZiOTdjZGQ4NjRmNGY1MGJmY2QzMWRlY2IwZmUwM2NkNTIzYjEyIGxlZ2FjeS10cnVuaworMzYyNTYgM2E3ZTM0ZGM2YWUyNmRlOGIxZmQ4YTFmY2FhNmZmMzQ1M2VmYTk5YyByZWxlYXNlMjMtbWFpbnQKKzM2MjU3IGY0N2NlMjMwNGNiYjIzNTkwMzE1MjRhOGI3NWY3YThhNzcxYTQyYzcgbGVnYWN5LXRydW5rCiszNjI1OCAzOGY4ODM0MDNlOWY4Y2I3N2FmMjRlOTBkNDRhNTFlYjNmNjM0YzdkIGxlZ2FjeS10cnVuaworMzYyNTkgNzMzM2JlMDkyZWVjMGNlOTM1ZDg0MDcyMDViMTc2NTU5NTVjMjI3NiBsZWdhY3ktdHJ1bmsKKzM2MjYwIGVlMzg4OTZlMGQyNDE3M2UwNWRiYWJiMGM1NzVjYzhiNjcxYmM0YzQgbGVnYWN5LXRydW5rCiszNjI2MSA1M2YyNzRmMDJmNjk4MDU5ZGNmM2FhODBmZTI2MGQxZDk4MzczYTA2IGxlZ2FjeS10cnVuaworMzYyNjIgMWVkYzA2ODcyMTNmZTNmZGM0MTgzNWI2OWRmNGZmNWIwYWM4MTZmYSBsZWdhY3ktdHJ1bmsKKzM2MjYzIGIxOGY0ODBjMzdhMDc2ODEzY2RlMjZmMTk2ZmNmYzlkNDFlYTIwZTMgbGVnYWN5LXRydW5rCiszNjI2NCBjNTYxNjhmYWJmOGUzM2VkOWIyOWViYzc0MWUwNjM2MmNiYzJkMzNmIGxlZ2FjeS10cnVuaworMzYyNjUgNWFkY2E1ODE0OWZmNDlkZjA1ZTczY2QxYWRiZjQ1ZjNmYTM1ZjRkYSBsZWdhY3ktdHJ1bmsKKzM2MjY2IDQ2NGM4MDhkMGRjZGEzOGJiODJhMDZlMmY2YjkzZGIyYjU2NjZhZDggbGVnYWN5LXRydW5rCiszNjI2NyA3ZGI0YzU4NmUxZDZjZTI3ZjY3Nzg0ZTdiMTU2OTFjODlmNGUwY2E2IGxlZ2FjeS10cnVuaworMzYyNjggMjU2YjQ5NmFmNGM0YTA3NWQ2NmY4YzE0YzJmNDJkYjQxMDY3OGQ3MCBsZWdhY3ktdHJ1bmsKKzM2MjY5IGJiMDBlMTJlNzc0MTYwNTc3YTlmMmVlOGQwNTI5Y2JhMmJlZmIxNjMgbGVnYWN5LXRydW5rCiszNjI3MCAwZTI4ZmQ2ZmVhMDBjMmJmYzMyYzE5YjAzNGIwNTExMzgzNzc2MjkxIGxlZ2FjeS10cnVuaworMzYyNzEgZDJjMWM3YWU3Y2Y0MzIzNjViY2VjYTcxMjhiNDE4NTliY2E3MWUxOCBsZWdhY3ktdHJ1bmsKKzM2MjcyIDY3ZmJjMjNkY2ZkZDRiOTI2ZmYyMjQ5ZmZmYjQxODI2MGZlM2M2NzEgbGVnYWN5LXRydW5rCiszNjI3MyAwZjU2ZWFkOTY4MTc2NTUyYjk4MDc5YmMxZDVhNWQ0ZGE1MmMxODI2IGxlZ2FjeS10cnVuaworMzYyNzQgNzMxNTRhYjg1NjNhNWMxMTYwNTZmODFiYjFlN2ZmYTFhMTI1NDExYiBsZWdhY3ktdHJ1bmsKKzM2Mjc1IGQ1MDBmNzJmYjFhY2YxYjkzOGM3MmU0OTI2Y2FmY2ZiZWRkYmY1ZDMgbGVnYWN5LXRydW5rCiszNjI3NiA1MDA2OGIxN2Y0MWVhYTFhYjRmYzk5ODhkOWFiZDRmYzlkNDE2MzVmIGxlZ2FjeS10cnVuaworMzYyNzcgNmMxNjYxMmZiMTE4MzgxNTgwZGFmYTEwZjFlMGYwNjM1ODBlZjFkMSBsZWdhY3ktdHJ1bmsKKzM2Mjc4IGI3M2FiMzA5YWRhN2ZiMmI3YTRmMWUzN2I5YzY4ZmZmOWVmOWE4NmIgbGVnYWN5LXRydW5rCiszNjI3OSA2YjFlYTVjMDdmZjczZWVjNWRiZDM2MGM0NGJmODIwYWY0MGM0MGFlIGxlZ2FjeS10cnVuaworMzYyODAgYzQyM2UwMThhMjllMDNlZjI3NjZhNzkzNGU5ODA1ZTZiMzM3MmNiNCBsZWdhY3ktdHJ1bmsKKzM2MjgxIGUzZjgyZGY1NGM4OGUwODM1YmNiN2NjZGQ0OGU0NmU3ZjkxZDExNzYgbGVnYWN5LXRydW5rCiszNjI4MiAxYjlkYTVmZTkwNTM5NGJlYTJmNTE3YzVkZDVjNmQ1MTA2MmE4MGRhIGxlZ2FjeS10cnVuaworMzYyODMgZDRhNTkyMzBlOTNhOTZhNzFhYjU3ZDI5ZTczMTQyMmJmMDg4NDI5MyBsZWdhY3ktdHJ1bmsKKzM2Mjg0IDc1N2FiMjAwZDQ3YTZiYTdkZjBkZjA2NDRjMDlhOTgyYzRhMzM2OGQgcmVsZWFzZTIzLW1haW50CiszNjI4NSBiNTc0M2U0NDczMDkxMjBjY2MxZjBhZWYyNDQ0MDhiZjk5ZTY1ZGZiIGxlZ2FjeS10cnVuaworMzYyODYgM2M1MDM2YjNlOGU2NzViMzg4NzliMjIwYjJiYzEzNzU3Zjk2ZGQ5NyByZWxlYXNlMjMtbWFpbnQKKzM2Mjg3IGRmMTNmZmI4ZjQ5ODYzN2VkMDZhYTM0YWQyNGE0NzdjNDdmMmRiZmUgcmVsZWFzZTIzLW1haW50CiszNjI4OCAxODkxNmNlNDFjMjYwZjJiZTFhOGMyM2ZmYjA0OTA5MzRhYTQ4YTEzIHJlbGVhc2UyMy1tYWludAorMzYyODkgYjg3MTBlNmQ4ZDc4MGRmOTdjYjNkYjFmMzBhM2Q1NGIzZjIzYmZlOSBsZWdhY3ktdHJ1bmsKKzM2MjkwIDA1ZjEyYmMxZTViMzAyMjM1ZGViOGJlMDA2NmYzY2NkYjA3YTMxOTUgbGVnYWN5LXRydW5rCiszNjI5MSAyZmZjZDgzNjgxN2VhYmM1MDc5NDE2YjcyZGNmZDczNzJmNDQ3MWQ1IGxlZ2FjeS10cnVuaworMzYyOTIgNDM4M2RiNzdiMTlhOWI4MDI1ODg3NDdhYzYxYWNhNzdmMDYzYmEwZCBsZWdhY3ktdHJ1bmsKKzM2MjkzIDE0YjQxNTVkOGIwYTQ1MjEyNGZmN2NmZTc1ZWExNzJiMDM3YjNiZGMgbGVnYWN5LXRydW5rCiszNjI5NCA5ZThmN2RmNGE2ZmU3NjAxMTZkYjE4YTI0M2Y0YjY0OTkwN2JlYjA2IGxlZ2FjeS10cnVuaworMzYyOTUgNzk2Y2NiOTA4MmVmMzU2YzM0OTc4MzQ0YWY2NTY2NWM5YWJiOTdjZCBsZWdhY3ktdHJ1bmsKKzM2Mjk2IGZhNzhhYzU2ODMwOTk4NDQ4YmFlY2QyZTNkNzczYzNjYjYzNjI5MmIgbGVnYWN5LXRydW5rCiszNjI5NyBiYzU4NmRiOTk0NWEwZWMwNGY0OWE3Y2ZlZTJjM2U1YTc0NzQ1MGI5IGxlZ2FjeS10cnVuaworMzYyOTggNTBlODQ0YTRlZWQ5MGY2OGZmZTBlMWZhNDRjNjIyMzYwNmI0MjU1NSBsZWdhY3ktdHJ1bmsKKzM2Mjk5IGZlODBmNzcyYmZhMTI5MjBiYTFmNDZjZjkxMmEyMjE5MjdlZjg4MjQgbGVnYWN5LXRydW5rCiszNjMwMCA3N2RmMWNiNDE1MzMyZTI3NmE5NDczZDE3NzM3MjJjMmE2Nzg4NTAzIGxlZ2FjeS10cnVuaworMzYzMDEgYjgzNWQ1YzYxZDg2NDlmNDRiZmVhYjE0ZGFiNDgyNGE5YjVkNjE0NyBsZWdhY3ktdHJ1bmsKKzM2MzAyIGVjY2QwZmJlMGNkNWMyOGMxMzkyNDJjZTVlMmNkODhmMzQzMmMzNmIgbGVnYWN5LXRydW5rCiszNjMwMyBjNmFjZjI2MWQ2MTQ3OWQxODY4M2MwMWRhNDMwZmI2YzQzOTIxYzRmIHJlbGVhc2UyMy1tYWludAorMzYzMDQgZjNjYjk1Y2Q0MTNmNDlmNDQ0ODU3OTAwMjljNGI5YWRhOTQ3N2FiOSBsZWdhY3ktdHJ1bmsKKzM2MzA1IDAwMmFjNjI1OWMyY2I5ZDIyZmVhM2ZhMDk4MTI5MjY3ODFjMzQ0NGYgbGVnYWN5LXRydW5rCiszNjMwNiA5MWNjZTdiYmEzNzI2OTY0ODU5NWNkMDIwZTg1ZDA5MWYwZjgzNzVhIGxlZ2FjeS10cnVuaworMzYzMDcgZmEyM2E5YjE4OTY3NjE3NmI3MDgzYWYzNTFiY2E2MGZkZjU0YjkxZCBsZWdhY3ktdHJ1bmsKKzM2MzA4IDM5MjNkYzkwZWI4ZWJmNzBhMDUzODNhMWU0OGQ5OThkODY0ZDkwNjMgbGVnYWN5LXRydW5rCiszNjMwOSBhYjBhMmI3NGRkZmQ5NjllYTFmODY0NzgwMGEyZDRhMzEzZDQ3YmZjIGxlZ2FjeS10cnVuaworMzYzMTAgNzlkZjRmODdkNjdlN2FhZmEwZTM3Zjg4M2FhNTRiZDFhMjFmMWRkYSBsZWdhY3ktdHJ1bmsKKzM2MzExIGRiNTAzYTI2M2I0MzNjYmFiOGZjNGM3ZmUyMTBjMDI0YTNlMzA0ZTYgbGVnYWN5LXRydW5rCiszNjMxMiA5OWZkZjgwNzA2YWRhZTZlM2ExYmNhMDc1MDc4NmIyN2ZlN2ExOWNlIGxlZ2FjeS10cnVuaworMzYzMTMgMjAyYWUwNTc4ZWJlYjE1Y2U5OGZkMjQ4YjQ5ODRlZjE1NThlMDNhYyByZWxlYXNlMjMtbWFpbnQKKzM2MzE0IGY1NjUwM2E4ZGJhM2M0MWQwNDZmOWExY2YyMThkYmZkZjVjMjA3NzcgbGVnYWN5LXRydW5rCiszNjMxNSA2Y2ExMjJmMjczNmFiODllMTUxZmIzN2JiZmJkYWVjMDY5ZTRmMTllIGxlZ2FjeS10cnVuaworMzYzMTYgOWM4NzUxOGZhZjZiNmM0ZTc0YWM1ODA0NTU1YjRjNmQxOWU1ZDQyYiBsZWdhY3ktdHJ1bmsKKzM2MzE3IDA1NGVkZTAxZTNkMzA1N2UwNzk0YWEwMTlhNjlhZDFjN2FjZjg0N2MgbGVnYWN5LXRydW5rCiszNjMxOCA1MWViNjdhODU2OGVhMWI1ZTdmMjBjZGY0MWI2ZGFmNDUxMjVlNjIwIGxlZ2FjeS10cnVuaworMzYzMTkgNmZlMmQyNDEwMDhhODI5Yzg2OWFjMzU2YTZhYzNmMTQzMDdhNWU2ZSBsZWdhY3ktdHJ1bmsKKzM2MzIwIGZiYmQ2NzI3NDAxYjYxNjJjMzhiMWFjNWI1ZTdmMTU2ZjkxZGYyZGQgbGVnYWN5LXRydW5rCiszNjMyMSAwZGI2M2E3NjVhNzcwMWU5ZWM3OGY1ZmU4ZjEyMWJjMDUwMTFjMDhiIGxlZ2FjeS10cnVuaworMzYzMjIgZjA0ZjA4MWZmMjMxMTA5ZTExNTRlZjc4MjZlNWUyYjhhODViMTAwNiBsZWdhY3ktdHJ1bmsKKzM2MzIzIDg3NDAxNjU4ZWI0NTcyOTY5OGNkMDhjNDE5OWQ5NzM5Zjc0Yjk3MTQgbGVnYWN5LXRydW5rCiszNjMyNCBjNGVlZmZlYTE5NjAzOGIxN2VlNmU3NzRkMTkzMzM2ZTgwNDhiZjllIGxlZ2FjeS10cnVuaworMzYzMjUgMTkxNzk2YjdhMDU0NTZkNTQ0ZmIyZjA1YTI5NDI0ZjdkNGNiMmFiNyBsZWdhY3ktdHJ1bmsKKzM2MzI2IGY1ZjA0Y2UyNTE2MzU3NjE2ODQ2YWQyMDcyZDIzMGYxN2E5MGIyZWEgbGVnYWN5LXRydW5rCiszNjMyNyA2ODJmNzQwODg2MDI4ZmRlZDFmOTNmY2MzOWYwNDU1OTMyMDg1M2IyIGxlZ2FjeS10cnVuaworMzYzMjggOGU3NjhjM2FmMDE1ZDcxMjk1NzQ1N2IzNDkwMTRhYzI0ZGIzNGYwNiBsZWdhY3ktdHJ1bmsKKzM2MzI5IDNkNjg5ZTcxNWRiMjQ0YTkyNTQ2M2Y1MzZiNGU2Njc4ZDVhODljMmYgbGVnYWN5LXRydW5rCiszNjMzMCA2MWY5MDM0YTEwZjcxZjFkZTlhNjBhYjI4NDM5MjFhOTM3MjM5N2U1IHJlbGVhc2UyMy1tYWludAorMzYzMzEgOGU3YzkxZGU5NDkxOTYxNzIxMDM3OTg3NTlmMmU2Y2VmNzY3NGEyMSBsZWdhY3ktdHJ1bmsKKzM2MzMyIGM0ZWQxNGZhYjEyYTM2Yjc1ZDZkMjEyODM1ZTYyNmNhMTJlMTY1ZDIgbGVnYWN5LXRydW5rCiszNjMzMyBlYzkyOGVkMDFhY2M1NWUyNjkxMGIxNDZjMjdhZjVjYzg3ZWIxOGE0IGxlZ2FjeS10cnVuaworMzYzMzQgYjYxYzQxZDE5Nzc4NzA4OGQ1NDY1ZDhkYjAxNzc0NzA1YzQyNzUxYSBsZWdhY3ktdHJ1bmsKKzM2MzM1IDMyOWVlNDgzMGIwNDEyMTRjYWI5NWZiMGM0ZjhhMGVjZGZhYzM0YzggbGVnYWN5LXRydW5rCiszNjMzNiA0NTQ5ZTc1YTYyNDM0ZTQ4MmIyNTAzMWU2OGFmMjQyZTNiYTQzZGIxIGxlZ2FjeS10cnVuaworMzYzMzcgNWU0MWNiZWMwNDY1M2ZmNTFjMTUzNmQzZjFjNzZhNzc3OWU2M2VlOSBsZWdhY3ktdHJ1bmsKKzM2MzM4IGY1OGNjMzM0ZDE1YzQ2MmM1NjVkNmE4MzM1NzU5MDhmZWNmYzRmM2MgbGVnYWN5LXRydW5rCiszNjMzOSAxMGU3NWVhNTk2MDU0ODMzYWE3ZDk2NjM4NmRiMjg5MTQwNWRkNzM2IHJlbGVhc2UyMy1tYWludAorMzYzNDAgNGJmOGZiMTE4OTRmNGI4MWZhZjc0ZGIwMzYzNTVkYzMxYzgzNGY2ZCBsZWdhY3ktdHJ1bmsKKzM2MzQxIDczN2U4OTJhMmMyY2Y2ODYwNThiYTExYTg4ZWJkMzFhMWY0YWQ5MjIgbGVnYWN5LXRydW5rCiszNjM0MiBjYWZkMTM0ZmMxY2Q0NGI2OTljZTQyYzg4MDZjNDBkODNhYWM3YzU3IGxlZ2FjeS10cnVuaworMzYzNDMgZGE2M2UyZDZlYjhhM2QxZjBlYjM1MmViNGE1OWFlOTZmM2ZhY2IwNCBsZWdhY3ktdHJ1bmsKKzM2MzQ0IDk4N2UzNmFmYjg3OWQyNjY3NzUxZWJhYzI0NDhkZjdiYzRkZDIzZWIgcmVsZWFzZTIzLW1haW50CiszNjM0NSBlYzVkMGU4NzM5NjQxODUyYzgxYzAwN2NiMmRmYzhlOTcxMGU1ZTc4IGxlZ2FjeS10cnVuaworMzYzNDYgNzhiZDI1YjQyZDQ2MzE0MmM4NDBkMDFmMGNjYWMzZWEzYTE2YTllNSBsZWdhY3ktdHJ1bmsKKzM2MzQ3IDBkYTY2MGUwNWU2OTBkY2ExMDhiZjY4MWRiMmNjOTI2N2U4YjU4YWMgbGVnYWN5LXRydW5rCiszNjM0OCA2NzUzOWNmY2YwOWZlOGI1MzRhZTQwZWJkOWZhNmZkMzAxZTZhNGYwIGxlZ2FjeS10cnVuaworMzYzNDkgMjQ3NmE4MzM0Mjg2YjdhMGJmZTEwYWNjY2MzOWU3ZTMyMWYzMTExNSBsZWdhY3ktdHJ1bmsKKzM2MzUwIDI0NTFjOTU3MmVkZjVjMDA5NTIyY2U3MDc0NjJmZmZiOTNhODlkY2IgbGVnYWN5LXRydW5rCiszNjM1MSA4N2QxOTZlMWMyZDAxZDU4ZjA4N2JlYmRiNDQ1NGFkMDdjZjY1MTVkIGxlZ2FjeS10cnVuaworMzYzNTIgOTI4MjBlYTVhZThjYmUxM2RhMGIwMjNlN2FiNmJkMGFiNDdlNzJmZCBsZWdhY3ktdHJ1bmsKKzM2MzUzIDIwMTk4NmQ2ZDlkNjM1MGNmYjJhNjU4Y2RjNmMzOTcyYmRlYzdjNmIgbGVnYWN5LXRydW5rCiszNjM1NCAxNjM0ZjYwMTE4ODg1OTk1OWExNzhhZDc3N2U1OWUzNmNiNGNlOTU4IGxlZ2FjeS10cnVuaworMzYzNTUgMzI0NTVkYjk3MTM1NzZjMjk3ZWI4Y2VjZTViZDMwZTc1NTc4ZjU3MyBsZWdhY3ktdHJ1bmsKKzM2MzU2IDQzYjgwOTgxNWM3ZDc1OWMxY2VkOWM3NjdjYjRjZTczNzEzZTJkYjcgbGVnYWN5LXRydW5rCiszNjM1NyA3ZmQ2Zjg3ZTVkMWZjZWJhMTU4ZmUxZGNmNTQ3YjA5NjViMDMxNDk1IGxlZ2FjeS10cnVuaworMzYzNTggNGZhYjRhNWNjZTJmNWQ0NDBlNGVlNTA1YTk2M2ViYjkyNmMzMTZiZiBsZWdhY3ktdHJ1bmsKKzM2MzYwIDdlNDRmM2E4YjU2ODdjZmE2MTJlMmM0NWM4MTg1MGJjZDc0MTU1MDkgbGVnYWN5LXRydW5rCiszNjM2MSA3YWQ2ODU4N2M5YWNiNjI1MzQ1YWZlNzc4MjBiMzliMTczMzAwMDA4IGxlZ2FjeS10cnVuaworMzYzNjIgNzc1OTcwNGU3ODcyOTI1MWE5NTRkZjcwZDlhNTE1MGM1MTEwNGE0NSBsZWdhY3ktdHJ1bmsKKzM2MzYzIGVjOGU0ZWQyYjE1N2NjOWNiNzMyNTcwMDFkODE3MjJkMjFjNTRlZmYgbGVnYWN5LXRydW5rCiszNjM2NCBjNGQ1NGM0YmE1NTQzZWE4MmNmNTc0NGIxNDU5OWVhNWU1ODk2OWY1IGxlZ2FjeS10cnVuaworMzYzNjUgNDY5M2ZhMTllMjJiZGNhMmJhOTYzNTY0MDhjZjVkODQ3MmRlNWY0OSBsZWdhY3ktdHJ1bmsKKzM2MzY2IGQxZmI0YmQ0ODkzNjA3M2MyODQyYjA3ZTdlODZjNDQyMjk5MGY1ZTAgbGVnYWN5LXRydW5rCiszNjM2NyBkNDI3NDlkYjkzMzkyNTJjYTM3MDc4NjA4ZGY2ODhlYWE5MjczODA3IGxlZ2FjeS10cnVuaworMzYzNjggOTI4OGQ1MjRkNzU3OTk3MjI1YWJhOTY5M2VhNDkzZTVjODBhYjgwYyBsZWdhY3ktdHJ1bmsKKzM2MzY4IDkyY2E2NThmZDQyMDA5NWI2Mjg0YzljZTZlOTA4MmE4MDI4NWVjOWMgbGVnYWN5LXRydW5rCiszNjM3MCBiZTFhMTJkMGI4OTVkMjUxNjkyMDI1YWIzOTQ4ZDdhYTc5YjY0NTVlIGxlZ2FjeS10cnVuaworMzYzNzEgZjNmMTFkODYzYTAyZjYxM2FmN2Q1NzNmNTZkNGIxMjdlMmM4Yzc2NyBsZWdhY3ktdHJ1bmsKKzM2MzcyIGY0NmQ0OWUyZTBmMGIxOGZkOTMyNTlmNjc2YjU1Yzg1NTRkOTcyMTEgbGVnYWN5LXRydW5rCiszNjM3MyAzNzA2YTM3MDRhZWFjMDJhNTJkODY0YTEzNWU0MTNhZDRjMWJjOWY4IGxlZ2FjeS10cnVuaworMzYzNzQgYzA5OWFhNzY3OTUyZDk4YTZkN2EyNjgxZDUzMDE4N2IzNDMwZjExMyBsZWdhY3ktdHJ1bmsKKzM2Mzc1IDc0YzNiNzEzZTM1YTZhZmQ1NTg0N2E3YmVjYzU1NDc1MmU2ZTFkNDcgbGVnYWN5LXRydW5rCiszNjM3NiBkOTA5YTBkZGQxOTMyZGUwZmJiZTIxOTQ0Yjc5ZmYyN2EzYzc5MjIxIGxlZ2FjeS10cnVuaworMzYzNzcgZWMyODU2M2IwNTJlOGZkNmI5ZjRhNzQxNjczMjI0NjNkODQzMWY0ZSBsZWdhY3ktdHJ1bmsKKzM2Mzc4IDAyOWRmZmI2M2Y0YmYxY2FjYjc5NzExM2ViMzAzNDhlZTg4YTMyMDcgbGVnYWN5LXRydW5rCiszNjM3OSA3ZjRiNjZkYzQzNzYyZGE4Y2VmZjc4ZmI2OTE5YTQ1OTc3MzFiNWRmIGxlZ2FjeS10cnVuaworMzYzODAgZWMxYjU2YjQzYWYwNDY1ZDRiZTM3YTU4ZjI2ZWNlNzE0ZjRhMWI0ZSBsZWdhY3ktdHJ1bmsKKzM2MzgxIGU0Yjk2YzNhM2UxMjI5ZGFhNzgzY2ZjZjlkOTMwZWEyNjI2MDUxYjAgbGVnYWN5LXRydW5rCiszNjM4MiA2ZjM1MWIxYmNmNTM0YzhjYWFiMDI0YTFhODQxOWZlMmZkNTI4ZTE0IGxlZ2FjeS10cnVuaworMzYzODMgYTE2MGI5NjY5ZGIxZTMyMGNlMmNhM2ZmZGRhN2VhN2NjZTRjZWI5OSBsZWdhY3ktdHJ1bmsKKzM2Mzg0IDY5YmIyNDFiMDU2Yzk2ZjE1MjQyM2FhY2ViZTQ0ZTUxOTYzYzk1NDUgbGVnYWN5LXRydW5rCiszNjM4NSBjZjEzOGM1NWQ0MWJlNmJjNmVkY2YyYzk3NDNmMzU3ZmE3MzAxZjM1IGxlZ2FjeS10cnVuaworMzYzODYgMTExODY4M2NkNGQxY2Y1YzA1ZjZjN2UwZDBhMTE0NjNmOTZlZjlhNyBsZWdhY3ktdHJ1bmsKKzM2Mzg3IDNhYWRmYzNmYzRlNmZkYjgwN2ZjNmFhNWI3MGNkNTNjMzQ5ZmFkZDQgbGVnYWN5LXRydW5rCiszNjM4OCAwMDY0ZjU1YmFmYTdjOTY4NzMzODk4YjI0ZDkzZGNkNDAwZmRjMDA4IGxlZ2FjeS10cnVuaworMzYzODkgODQ0ZDk5Yzg4OGJiYTE0ZjY1MzA4YjMxNmNkZTY1YmFjNDExM2VhNyBsZWdhY3ktdHJ1bmsKKzM2MzkwIDVjMjVjYTZmZmFmOWU1OTU1NmVhNjc0YWU2YzMwODU1ZTMzNTUzNDMgbGVnYWN5LXRydW5rCiszNjM5MSA3MGIxNTA0ZTE3ZmZjZjZhMGQ5OTcwOWNmZGIzYzMzZDkwNjFmMGQzIGxlZ2FjeS10cnVuaworMzYzOTIgYmVjMGM3NjE4NjI1NDFlNTg5NjVjMDY4NmY1M2M1M2EzMzQ1N2M2YiBsZWdhY3ktdHJ1bmsKKzM2MzkzIDhlYTJjYjFlYzU5ODhkOWEzMTJjMTY0YmE2YjIyMzgyYjRhYjVhNDYgbGVnYWN5LXRydW5rCiszNjM5NCAxNTNjNTE3YmM2ZTk2ZTc0ZmMyMTMxMzBkZDg5OTc5ODc0NzQ5Y2Y0IGxlZ2FjeS10cnVuaworMzYzOTUgMjI4MzIzODk1MjcxZTA0NmU2NzVjMDQ0YzJjMzllZTJmZThjMDYwOCBsZWdhY3ktdHJ1bmsKKzM2Mzk2IDUxMWZmYzYyYjI5OGE3ZjExYjM2MWYxNTM0YWIwOTU2MTUyNmM0N2YgbGVnYWN5LXRydW5rCiszNjM5NyA4M2NiYzAyNWJmYzc0ZTRlMThhODg3MTExODFiODc2YzQ5MzQ2NjAxIGxlZ2FjeS10cnVuaworMzYzOTggZmVmNzkxMWE1NzA1Y2FlZjcwNTkzOGEzNzlmZTE4ZTFmMzFkZjIyZCBsZWdhY3ktdHJ1bmsKKzM2Mzk5IDIxZmQ2ZTYyY2QyNzZiMjcyNzkyNjA3NDc4OTFhOTljNDhmZWIxZTYgbGVnYWN5LXRydW5rCiszNjQwMCA0OTJkYzhiOGU1OGVjMTVlNzE2N2FhMjY3ZGY2Yzk0MzQ5MGY0ZTIwIGxlZ2FjeS10cnVuaworMzY0MDEgMjMwMzk3YmM3ZTMyMDQ2Y2FiNWIwN2Q4NWY0NTQxZDA0ZmMwYzU2ZCBsZWdhY3ktdHJ1bmsKKzM2NDAyIDBkZDQ3M2E4ZTUzYzA5MjI3YTFlOWQ5MTE2YmMxOTllZTNjODVkZGIgbGVnYWN5LXRydW5rCiszNjQwMyA0ZDJmNGEzOWVjNWVkMjc0OTA0YzE3Mjc5ZDMwZmE5ZDNjMjU2MTFiIHJlbGVhc2UyMy1icmFuY2gKKzM2NDA0IDczNjJlMzcyYzg5NzBkMTYzMGY4MmNkYTM1NDZmZDM1YmE2Mzg1Y2MgbGVnYWN5LXRydW5rCiszNjQwNSBmMmYwYzVmZDliNmM5ZDNmMzFmYzE3ZDNlN2JiZTRiMTczYjgxMWZlIGxlZ2FjeS10cnVuaworMzY0MDYgYTY0YmFlNWMzM2I3ZTc2YTA4NDYxYWZlOGQyMjgzYjVjODM4MWU0MiByZWxlYXNlMjMtYnJhbmNoCiszNjQwNyBkZTMyNmQ3ZTc0ZThiODM3OTk4NTExMzhkNzRhMWU2NWFiNzA1ODE2IGxlZ2FjeS10cnVuaworMzY0MDggYTAzYmNhMTY1NGQwYTJmZjgwMzdjZTI5OTM0MmVkZmMxZTIwZmU1ZiBsZWdhY3ktdHJ1bmsKKzM2NDA5IDY3YTg0YTMzZDBmOGMzNDNjMGYyZTAwNTkyZDQ2OWFmYWRiZDYyNjQgbGVnYWN5LXRydW5rCiszNjQxMCA0YmU0YzYzNjczZWIxNWM5MzFiZGFjM2FiNTA0YTcxOTFlZDQwYmY5IGxlZ2FjeS10cnVuaworMzY0MTEgM2U5MjU5NTlmYTAxYWNlZGM2ODc3MzgxNjdkZmVmMzdmMDEwYzQyNSBsZWdhY3ktdHJ1bmsKKzM2NDEyIGM3OGZjZGQwMjQ2NDQ2ZGYxMzM0NWM0ODFkMmYyZWY2Yzg0ODM2ODYgbGVnYWN5LXRydW5rCiszNjQxMyBmM2Y0NzY1ZWZlNjY4MzM4ZTIzZDNjMzUyYTUxY2VjZTk1ZTljMmMwIGxlZ2FjeS10cnVuaworMzY0MTQgNWIyNWM2NDQ2YWViMzNmNzM2NDRkYzlkNGMxZTJiNDg0NTgyMmQwZSBsZWdhY3ktdHJ1bmsKKzM2NDE1IDZkN2FiMGNhZDcyZGUxNmNmYzFkNzkyZjMyNDQ1MGYwNTg4NzJlODkgcmVsZWFzZTIzLW1haW50CiszNjQxNiBmZGI5Mzc3NTEzZTQyYjI5OTU1NGNmZDQyODg1NGE4NTNkYjYxY2Y1IGxlZ2FjeS10cnVuaworMzY0MTcgZjZiNDVkMWNiMGEyYmY2N2IxMWFiNmY2NjE1NmE2MDdmZjNkY2QxOCBsZWdhY3ktdHJ1bmsKKzM2NDE4IGI1MjdjYjFiMmI5ZWI0YWQ5NDY2Yzk4NjY1OTI3ZTUwZjk2YmYwYTIgbGVnYWN5LXRydW5rCiszNjQxOSAxYzVlZDgxZmZhMjM1ZGI4OTBmMjcxODhjMTk5ODI5NjNlNGM4Y2IzIHJlbGVhc2UyMy1tYWludAorMzY0MjAgYzE2YjAzYmExYzIyYmU0MDQzZjQwNTlhYmQ3MTNkZmQxNzYwY2RiYiByZWxlYXNlMjMtbWFpbnQKKzM2NDIxIDkwZDVjZWU3ZTY2ZTQ3YTk0OTgwNmQyZWFhNDk3OGI5NGFmYmY1MDggbGVnYWN5LXRydW5rCiszNjQyMiA1OThhNWNlNjMzMjJmYWUzYWNlNmI0OGUwMTk3ODI2MWE1YWI1MmU1IGxlZ2FjeS10cnVuaworMzY0MjMgNTA3NDVkOTlmYmYxNjA4OGQzZDEyZGZhNmYyNzg3NTI2OWI0MTEyMCBsZWdhY3ktdHJ1bmsKKzM2NDI0IDVlMWY1NWVjMTdkNmM3MTBhMjAzNzZmMzY4NTlhMmYzZjRiOTIwMWMgbGVnYWN5LXRydW5rCiszNjQyNSBhYjk3OWZmOGIwMmFlY2E1NDc5OGFjYzE2NmE1OWM0MTQ1OGE1MTFiIGxlZ2FjeS10cnVuaworMzY0MjYgNzk5YmNkZmYyY2RjMDU2MWI2Mjg2NTUxMmYzODIyOTNjNTg3MWQ5ZCBsZWdhY3ktdHJ1bmsKKzM2NDI3IDA4ZDkwNDYwYWI0ZDYyNDg3MGJhN2FmYWIwY2YyOTQzODdmYmU4YzAgbGVnYWN5LXRydW5rCiszNjQyOCA1N2QyMWM1ZTBlYjhhZjBiMmJhMzU2MjMyNDRjM2Y1NjRlMzc5YzAxIGxlZ2FjeS10cnVuaworMzY0MjkgY2MxZjc0ZDE5ZmNiYjdjYjE5MTZhOGU0NGU2MTVkNGE3ZWMwYjdiOCBsZWdhY3ktdHJ1bmsKKzM2NDMwIGM0MzE2ZGYyZmVkNDY4ODVjMjMzYzVkZDJjOGVhNDE4OTNjZmJkYjIgbGVnYWN5LXRydW5rCiszNjQzMSA2ZTljMTgyOTU4ZjkxNzBmYjI5ZWIzZTk3Mjc2YmUyMjg5YTQ5NjMyIHJlbGVhc2UyMy1tYWludAorMzY0MzIgMmIxMGUyYjVlODFlZjIzZTZhNTdmNzJmOWRlZmY1MWVmZGU1MDc1YiBsZWdhY3ktdHJ1bmsKKzM2NDMzIDRmMjQ4M2FiYjYyM2FmNjQwOGQ4NWRkZWJhNTYxYjk5NjNjNzZhNzIgbGVnYWN5LXRydW5rCiszNjQzNCA4YjMyODhmNjA3ZTFmODI0MDcwY2Q1NzA4OGIxYTNlZGU2M2VhYmM5IGxlZ2FjeS10cnVuaworMzY0MzUgNTU0NmM3YWUyNGY3MGQ3ZjVjZGQ4Nzc0Y2FiMDk1OWM5NDBmMzE5OSBsZWdhY3ktdHJ1bmsKKzM2NDM2IDMxYjY1ZDgzNzFhZjhkMjZhZWYwZTE4NDI5Nzg3MzcxZjhjYTczMTkgbGVnYWN5LXRydW5rCiszNjQzNyBmMDgxZjNhNTY4ZmE4ODdlMTViZmFkZmFmM2FkNTkyZTQzMTVhNGFlIGxlZ2FjeS10cnVuaworMzY0MzggMDllYWVlNzI5NzNjNTBlYmVlYzhmZmEwODNiZmJkZmIzNjk0YmIwZCBsZWdhY3ktdHJ1bmsKKzM2NDM5IGM1MzhhNzY0NGZmYTZjYjc4Y2VkM2NiNmUzODQ1MDliMDI1YThiZTAgbGVnYWN5LXRydW5rCiszNjQ0MCBlNmY3ZWY3MDczYzY3OTYyMGQ5OThkYmUwNGE2NjFmYWQzM2VjMzY4IGxlZ2FjeS10cnVuaworMzY0NDEgYWZiNDAzMzgzZjVkMDdhMmZkN2VhNmY4ZTc1NTM4MzA5NGNlNDU1MSBsZWdhY3ktdHJ1bmsKKzM2NDQyIGY2MDNlNWU5NmE0ZjdjODA5NGNkZWZhZTY3OTNhM2ZjMmRiMTZlOTYgbGVnYWN5LXRydW5rCiszNjQ0MyAyZmQ2OTI0MDcyOWFhZTUzZjlkMzRjNDhhNzdmZDA3MWE4NmNiY2UyIGxlZ2FjeS10cnVuaworMzY0NDQgNmFiYTZkMDc1ODk5YTYxODdkODNmNjc3NDEzMjNmNTQ1MzhkMjFiZCBsZWdhY3ktdHJ1bmsKKzM2NDQ1IDE0NDYwOTVhOTcxYWI4YTM1NmY1ZTZjYzhlYmE2MmZiMGI0MTliY2QgcmVsZWFzZTIzLW1haW50CiszNjQ0NiBmODZiZmMwM2U3NjM2NTQ2NjQyYWVjOWUyOWQwNjczNjNiZjA0Mjc4IGxlZ2FjeS10cnVuaworMzY0NDcgNzMwMTZiZDAxYTcxNGFmYWM0Y2E5MDQzZmUzZGFiNjhjMGIxM2VkMSBsZWdhY3ktdHJ1bmsKKzM2NDQ4IGQ0MmVmYzJiNDVlOTVjNjhmYjQ2MTMxYzMzMWUxZjFkOTc1ZTNhMjggbGVnYWN5LXRydW5rCiszNjQ0OSBmOWFkNWQyMDJlOGVmNDQyMzExNzVhZWEwNTc4ZmY3MTBiNjVlZmQ2IGxlZ2FjeS10cnVuaworMzY0NTAgNDU3ZmQ0MWM5NjFkMmZmOGEzMTY3ZTc3YWU0NDk5N2I5ZDhmMjFiYSBsZWdhY3ktdHJ1bmsKKzM2NDUxIDUxMzk4OTJhZGU2MjFjZDhjNjc3NjBhYzRmY2VlMDUwYzU5Y2NiZGEgbGVnYWN5LXRydW5rCiszNjQ1MiA2MTczZDk3YjgyOWU2ZTRjMTJkMjk1ZTA0MTdhNTRiNjhkZDNmZDdhIGxlZ2FjeS10cnVuaworMzY0NTMgMDU5ZGFlMDY1ODViZWZiZWFlZTI5OTNhM2M5OWQzMjYwMzUxNDYyNCBsZWdhY3ktdHJ1bmsKKzM2NDU0IGNlMzM5NjdhNGFiMGYzMzYzOGU1MTFhYTZiZWFjNmRjZjEyMDY5NDkgbGVnYWN5LXRydW5rCiszNjQ1NSBjZjBjOWUxNWY2ZjRkNjQ4NGZlZDRhOTEwOWQ3MzUxOTJkZGY3ODZlIHJlbGVhc2UyMy1tYWludAorMzY0NTYgYzk4NjlhMThlNjIxMzJkM2Y4YTUzZjM3ZmJiMThmNTk0MzNmMWUzNSBsZWdhY3ktdHJ1bmsKKzM2NDU3IGFiMThlZjgzZjVhNjJhYzRhNjFmZDE4NWM3OTE5YmJkYWNkNzZlOGIgbGVnYWN5LXRydW5rCiszNjQ1OCA5YjVjNjM4MDJiZjllMmFiNjg2NDVjMjVmYTM1YjM0NDIzZWUyN2I4IGxlZ2FjeS10cnVuaworMzY0NTkgNmYzNmUwMmIxZjY5N2QwY2MzNDY2Y2QzNGViZmUxOTZkNzI5MWViNyBsZWdhY3ktdHJ1bmsKKzM2NDYwIDk5YWM1MzBlOGIzZjU3YjQyZjgxNWM0OGM3ZmY4ZWUxMWEwMDY3ZjkgbGVnYWN5LXRydW5rCiszNjQ2MSBlZjIzOTQwMTRkMjQ1ZTUxYTQzMjM4M2VmZjAyNDdiOTFjNmVjNWE3IGxlZ2FjeS10cnVuaworMzY0NjIgMmRiZjU5NmUwNTI0ZTk1OTEwMGYzM2E4MmFhZjlhYzhmMzMyZWYxMSBsZWdhY3ktdHJ1bmsKKzM2NDYzIGZkZTQzMjdjZDQ3MjRkNGEwODY5OWRkNjA2ZWQ4ODdlN2Q1MTllOTcgamltLW1vZHVsYXRvcgorMzY0NjQgZGExODIxMGUzMTFjMmMyMGUyYzI0NTgwZWVmOGNlMzFkOTZjMDI4OCBsZWdhY3ktdHJ1bmsKKzM2NDY1IGQ4ZjMxN2NhODBiZDMwY2JmNmM3ZmQyYzY2MDNjNmZjMGQ3NmNkNzEgcmVsZWFzZTIzLW1haW50CiszNjQ2NiBkYjk5NDg0OWNkZjNmYzQxMzZmMTU2ZmE0NjE2MDk0OTUyNmM3ODFmIGxlZ2FjeS10cnVuaworMzY0NjcgY2YwYmFlZmU4ZDQwMTMwYTMyODc4ZTZjZWI5YWNmNjJkNTkzMTM0NyBsZWdhY3ktdHJ1bmsKKzM2NDY4IGZiYjkwMWQ2Mjk3YjU1ZGMzZTNlNzkzNzYzMmQ0M2VmZDI5ZGVlNzAgbGVnYWN5LXRydW5rCiszNjQ2OSBmZjU5YWQ1ODU2OGUxZjVjYTM1NWM3YTlkM2RjZjQxZGRmY2RjZDM1IGxlZ2FjeS10cnVuaworMzY0NzAgZTg5OTA2MGIxZjA1MWVmMTRiYWQ2MDk5OTYyMWNlMWIxYWViN2ZjOCBsZWdhY3ktdHJ1bmsKKzM2NDcxIGRjMzJlMGE4YTBlZGIxNWYyY2ZjMjgzNWI2NTAyOTg4MDI1YjczYmQgcmVsZWFzZTIzLW1haW50CiszNjQ3MiA5YmMyZWVjMTQ3OGI2YmE1NWYwYjA3ZTY4OTEyZTg1ZmVlNTMyODEwIGxlZ2FjeS10cnVuaworMzY0NzMgOWMzNDg1MjZhNjk5NDA3YmNmMzExMzQ1NThhODI5MWFhZThhM2EzNCBsZWdhY3ktdHJ1bmsKKzM2NDc0IDZjMWM1OTU3ZmVkNWY5ZTBmZGM5ODJiNjczNWZkMDJjOTFmMWU1ZmYgcmVsZWFzZTIzLW1haW50CiszNjQ3NSAzYzJkOWU3YWM1YTFmOTlmODhjY2EwYzViODI4NTVhMWE4ZmE2YWNkIGxlZ2FjeS10cnVuaworMzY0NzYgN2JkMDRhNGQyOGI5MzFmMTg5YTYzOTRlZGQ5MGM1ODViNGJiNDM0NSBsZWdhY3ktdHJ1bmsKKzM2NDc3IDkyOTQ0NGNhMjJkOGY2ZGZlYzllZGVhMzk5YzhlN2NlZmVlMmNiY2EgcmVsZWFzZTIzLW1haW50CiszNjQ3OCBmNzI1YTE5MTBkMGQwNzczM2I3ZDUxNmIzNTVjNzlmZGRhNzU4OWYzIGxlZ2FjeS10cnVuaworMzY0NzkgNDYzYmY1ZWJmOGEzM2FiNDMzM2Y0NGQ5NzY2NzdmNjkzYzRhNzEyZiByZWxlYXNlMjMtbWFpbnQKKzM2NDgwIDM5MTkzNzU3MTA2NWFlMTI2NGFhNWE0OGNiZjg3OTYzODVjNzJkOTggbGVnYWN5LXRydW5rCiszNjQ4MSBiZTE0MjdjYjA0MDZmNjI5ZjczYTE0NGUxMjQzMWI4ZTFjYTE4NzUzIGxlZ2FjeS10cnVuaworMzY0ODIgM2NjYTI4YWIzODU0NDIxNThiMGM5MmRmZjVhMmZhYWYzZTJjNTViOCByZWxlYXNlMjMtbWFpbnQKKzM2NDgzIGNhMmFhNDNiYTM4YjdhZWYyMzczMTRlYTZlZTJjZjExNWE1OTkxMTggcmVsZWFzZTIzLW1haW50CiszNjQ4NCA1ODg0M2YxODZlODBmZGVmZTQ5MWEzNDlhYzk1ZjQ3YzRiN2VkYjdjIHJlbGVhc2UyMy1tYWludAorMzY0ODUgYzEzMWM3ODhhMDZmYWM4MTg1MzNkZDdiYWMzNjgxZWJlZmNkMjc4YyByZWxlYXNlMjMtbWFpbnQKKzM2NDg2IGU0ZDlkODQwY2U2ZTU1OWNjM2VlNWMzZjVjZTFjZjVkZThmZWQ2MDggbGVnYWN5LXRydW5rCiszNjQ4NyA2YzVmMDFlYzJmNzViNmUxNDc5ZjQ1MTUxYTRiMTE0ZDhiYjNkZGI4IGxlZ2FjeS10cnVuaworMzY0ODggOGJkNjdiYWQxNDNjZGM1NjJkZTYwZDk2ODVlOTdjMTMxZjU3NzljYyByZWxlYXNlMjMtbWFpbnQKKzM2NDg5IDNlYjZkMjUzNjBhMzdhMDIyOWI5ZmQ1MDEwMWMxNDRlZjY0MDA3MTUgbGVnYWN5LXRydW5rCiszNjQ5MCBjMTNkOTExYWUwNWJjMGYzNjVhOTcwMDMxODk2MjgwZmU4Y2M0NmMwIGxlZ2FjeS10cnVuaworMzY0OTEgOTQxYzIzOWNiNmQyOTY4YzAzMjA4YjdmMDQ4MDc1OWQxYzg1MjRhNCBsZWdhY3ktdHJ1bmsKKzM2NDkyIDU5NDk5NmNhZmYxMGQxM2I2NmQxMjcyZGJlODQxNmJhOGQ1M2NjN2EgbGVnYWN5LXRydW5rCiszNjQ5MyAyNzJhYjVhNTRiOWViYzljNjFlZDFhNzJmYzg1MTU5NjA1NDFjODJkIGxlZ2FjeS10cnVuaworMzY0OTQgYTFhOTc3NmZhYjUzZWEyZjY0MDI0ZWM5NjEwYzA1YjRmOTBiZGZhZCBsZWdhY3ktdHJ1bmsKKzM2NDk1IDUyYmVhZmQ5MzZjODBlNThlNTMzZmU3NmIzNDQ2M2Y1OGFiYTA1M2IgbGVnYWN5LXRydW5rCiszNjQ5NiBkMmU2NmVhYTVmNzRlODFlNzg4OWM5MTFiYmRjZThiOWY0NDEyZWM0IGxlZ2FjeS10cnVuaworMzY0OTcgOTc3NjhkODczOTRhNDQxMDcyNTczZGMyYzM1NzZjZmI4ZDY3MDcwNCBsZWdhY3ktdHJ1bmsKKzM2NDk4IDM0Nzk2MTBmYjI4OGQ5OTkyYmM4NGI4NDhiY2RkOGI3ZjAyNTY0OGYgbGVnYWN5LXRydW5rCiszNjQ5OSA5NDk0NzNmYTQ4Mjg1ZTVjODZiZjJiYzQyYTc5YjczZDc4YjIxYTY1IGxlZ2FjeS10cnVuaworMzY1MDAgODhmNTQwNTc2MWFmNzYzNGM3MTQxMTRjMTVjYWJlZGRjNTM1ZmVkNiBsZWdhY3ktdHJ1bmsKKzM2NTAxIDY4N2QyZWNmYTY0ODVlOGI3NThiMmZhMTllZDUxNDkzMDNiYWI2OTkgbGVnYWN5LXRydW5rCiszNjUwMiBjYWRhMmU5YjY4NWM4OWU5Yjg3MGY2ODdlYjE5YTY1ZjcwMTNmMTg4IGxlZ2FjeS10cnVuaworMzY1MDMgNTU4MWQ2OGIzYWU5ZTcyMzg0ZGY1MWFmZjY5MjUwMjJmMWQ0MDI3ZCBsZWdhY3ktdHJ1bmsKKzM2NTA0IGQzZDQyNjQ4M2Q3MTA0M2IzYjU5N2ZjYTVmMDc4NTBmZmU2MWE5ZjUgbGVnYWN5LXRydW5rCiszNjUwNSAxMDRhN2ZjMDZiZGZhMmE0ZGVkNGQ1ZTc5OTBlMjhkODAwZjg4ZDEyIGxlZ2FjeS10cnVuaworMzY1MDYgYmM0ZGQzMWM3M2ZkZjRmODU2ODVlMTQ5ZGRjNjg2ZWZlODBlZTk1NCBsZWdhY3ktdHJ1bmsKKzM2NTA3IDhmY2YyMDUyZDE2ZTIwNjIyOTJhODdkMGM4YTk2YzU2NzYzYTc5ZWMgbGVnYWN5LXRydW5rCiszNjUwOCBkNjRkY2ZiNDk1YjJiNzE1ZmRkMTZjYzNmZGVhMjA2NThjNzZkMGI3IGxlZ2FjeS10cnVuaworMzY1MDkgMzVkNDBmZjY5ZWI2MjY0ZTliOTFlODYyMDYzNDdjM2ZiYjYyOTRjZiBsZWdhY3ktdHJ1bmsKKzM2NTEwIDlhM2I0MjE5YmNiZWRlYmE0OWM1MWJmZjc5OWNmOWJiYTA1MzY2YjAgbGVnYWN5LXRydW5rCiszNjUxMSBmYWU0NjA3OTRkM2QzOWY2MGE5NDBjZDk3OGU3NWNlZTVkZDdiMjhhIGxlZ2FjeS10cnVuaworMzY1MTIgMTM5OWRjNjE2NzIwZjRiMDNiM2NkYzIyYWNkNjE5M2ZiY2VhM2EwNSByZWxlYXNlMjMtbWFpbnQKKzM2NTEzIDU3N2E5ZTRjODJmYjcxZTI2YmVjOWU5MjJhNDg4ZjNjYmY3OTU5Y2EgbGVnYWN5LXRydW5rCiszNjUxNCAyYmY4NjlkMzFmMGNlNjE1ZTdjMzM4NWNjMDgzZDYxNWY0YWUwMjM2IGxlZ2FjeS10cnVuaworMzY1MTUgNWZiNzhhMmQ5NGYwYWRlMGQ5YTUyYWE1NzNhMmRjZjNjYWZmNjRiMiBsZWdhY3ktdHJ1bmsKKzM2NTE2IDIxMWRiNjdjY2QwOWVkOTQzNGU3ZjA5MmVmZjJhNmQ3NzdlOTRjNWQgcmVsZWFzZTIzLW1haW50CiszNjUxNyA3ODBhMzM3ODc0NThlY2UyMTNiMzY2N2NiODdkODEwOWVlYTE5NmE5IGxlZ2FjeS10cnVuaworMzY1MTggM2MzODJkOTBmMzAyZDNlNTYyOGZmNzYzMWRmN2ZiOWM0ZWI1MDNiYiBsZWdhY3ktdHJ1bmsKKzM2NTE5IGZmMjY3MTRiZjg2ZGM0YzIyYjRlMTU4YzE2NzM1YjY2MTRjOTg4MGYgbGVnYWN5LXRydW5rCiszNjUyMCBiZTZmMmUxYTc4Yjc2M2MyNmJiMTJkMzViOTczYzY5NjJhNTQ5MzY3IGxlZ2FjeS10cnVuaworMzY1MjEgNDliYWFkN2IwMzJlMGIwYzRkYWJmZGZhZTQ0MDY0YWI0NGE2MzFlOCBsZWdhY3ktdHJ1bmsKKzM2NTIyIDc3NDJmODVhMzcyMzhlMmM1ZWIwYmMwOGQyY2M0MzBlYzFiNjUxNjkgbGVnYWN5LXRydW5rCiszNjUyMyBkYzJmZTc3ZGQxNjdlZGM4NjUxZjUzMDI0YTA1MjY3YWY3OGM0MThmIGxlZ2FjeS10cnVuaworMzY1MjQgMDcyOWQxZGI1MTE4MzgwZGQwNzAzMjA4YzI2ZTY5OGRmNGZmYzRkYSBsZWdhY3ktdHJ1bmsKKzM2NTI1IGVkMzY2MjFiMTI2YTFlNzk4NTQ0ZDNkMmFhMTUxMTBiNGRmZDBlZTQgbGVnYWN5LXRydW5rCiszNjUyNiBkZjRlNmNjNjY2MWQwNDU4ODk5NDljNzBlZTU3YzcwYzQzZDNlYTU3IHJlbGVhc2UyMy1tYWludAorMzY1MjcgNGJlMjgwOTNlNDgwZWFjMTVhYzM0OTc0MjdiOTc3MmUzYTlhNTkwYiByZWxlYXNlMjMtbWFpbnQKKzM2NTI4IGFiMGIyYTU4ODhmOWU3MGQxMWY2YjdjOWYwYzc1N2I1OTU4N2M3MTcgbGVnYWN5LXRydW5rCiszNjUyOSA1MDY5ZjViZDY2ZjNmNmQ2YjcwZmQxMTM0NjE5ZDZmMGI2MTRkMWRhIHJlbGVhc2UyMy1tYWludAorMzY1MzAgZDFlZjg2Zjg3ODVmOTNkZjQ4Y2RhMDZmZDQ2MTFiYmE4ZjNmYWVjMCByZWxlYXNlMjMtbWFpbnQKKzM2NTMxIGYwODUyOTg3OWRiMWFkM2Q1Y2E0NTdlZmRjNmJjOTQxODA3YWQ5NGMgbGVnYWN5LXRydW5rCiszNjUzMiBhYmUwNGU3N2E0YjBmZDdhN2U4Nzg2ZmQyNDJmN2QzZjMzZGM2OGVlIGxlZ2FjeS10cnVuaworMzY1MzMgODQ2YWNlNTczODljOTJhOWRkN2U0Zjg4MDZkMTMxZWJhMDMxYTIzMSBsZWdhY3ktdHJ1bmsKKzM2NTM0IGRmODhmYWRiYTJmNTZjYmZlNDQxOTIyZTc4OTQ5MzNjMTljZTBkZmUgbGVnYWN5LXRydW5rCiszNjUzNSBjN2M5YjY4ZGRkYTI5YzU2MWRjODI4MzcwN2ZiOWFjYzIyNzIwNmJhIGxlZ2FjeS10cnVuaworMzY1MzYgMjU1YWUyM2M3OGZiNjE5M2JmYzVmNTM4YzZmNmMyMzc5NzliZTNlOCBsZWdhY3ktdHJ1bmsKKzM2NTM3IDM4YWQ5YzZlNzE3YzhiMGI4YmM5NzJmNjFmMzM4MmYyYTA4NzUzN2EgbGVnYWN5LXRydW5rCiszNjUzOCAxNzQwNjU0M2YxNWIyN2U4YWJjYjk4ZTNmMzcwOWFmYmUwZTZjODNhIGxlZ2FjeS10cnVuaworMzY1MzkgNWIwYzg3ZGU2ZDA1MDk2ZWQ0MTgxMDRjNmI3YzZkYzc3NTQ2MGUxMyBsZWdhY3ktdHJ1bmsKKzM2NTQwIGY3OWNmMTNhOWE3ZDEwYTgzMmFiZTAyMjY1ZDdlMTE1NTVkY2M0YzIgbGVnYWN5LXRydW5rCiszNjU0MSAwZTg5MGFjMWMwZjI2NWY0NDdmMjdmZjM3ZmNmMDMyZjgzOGJiZTk2IGxlZ2FjeS10cnVuaworMzY1NDIgMWJkMzM4M2JhZDk4NTAzNjQ4MDM2NWJlZDMzOTFmZjk2NjcyNDc0MCBsZWdhY3ktdHJ1bmsKKzM2NTQzIDEwOTU1MGY1YTgyOTYzMGE4ZWZmMjEwODJjMGUwZWJmMGYwODJlM2EgbGVnYWN5LXRydW5rCiszNjU0NCBjYmIyNWZkYTk1YTU4MGYyYzY3ZjRhYTliZDQ0MDc4ODgyZTZiNDZjIGxlZ2FjeS10cnVuaworMzY1NDUgZDA5ZGE3MTQxM2NhMDRmY2I2Y2YzM2ZhY2ZhMjNjNWE0MGFmZWJkZSBsZWdhY3ktdHJ1bmsKKzM2NTQ2IDRkNDNiMGFiYzIyYThiNjFmZTJhYzUwY2VhZTk5NmZjZTdhNjM0OTIgbGVnYWN5LXRydW5rCiszNjU0NyBlZmNhNTViYmJhMGFiMTJhMDRmOTc2ZDQ2OTYzOWI1MDUwMmMzNzJmIGxlZ2FjeS10cnVuaworMzY1NDggNmFjZDcwNzBlZDY2ZjdhZDY1MzEwZGIwMWEyZjhjYmFhOGY3YzNhNiBsZWdhY3ktdHJ1bmsKKzM2NTQ5IDc1NTljN2ViNDc4MDI3NDM0OTg2MjY5NjhjNjNiODQ0MWE1NjBjMTUgbGVnYWN5LXRydW5rCiszNjU1MCBlNGNjNzg4ODRmYzQyNmMyNmQyMTkyYjIxNjU1OWY0NWEyNjllMDU5IGxlZ2FjeS10cnVuaworMzY1NTEgNjlkYWRjMmNhMTRkZmNiZjYyYWUxYTE2YmUyOTAzZmIwMzgwNWMyYyBsZWdhY3ktdHJ1bmsKKzM2NTUyIDgxNzg0ZjY2Njc4OWI5MDI0Zjg3NmU1MWNiOTlmZGQ4NmM1YzU1N2QgbGVnYWN5LXRydW5rCiszNjU1MyBlMTM1ZTgyY2Y2ZTQ4OTE2ZjZiOWQ0NjVjYTljYTU3YmZmZmFmZTA4IGxlZ2FjeS10cnVuaworMzY1NTQgMDdiNDhlYWYyYjAxZWJjNDhjNGZhNDA3YjZiNjM3MWU4NTMzYzZjOCBsZWdhY3ktdHJ1bmsKKzM2NTU1IGJlYmNiNzlmMzdjYmM5NDk4Mzk3NjQxM2QwNDQ5MmZhY2E4NzM3MzEgbGVnYWN5LXRydW5rCiszNjU1NiBkYzNmMDRhZmVmNzU3MGI2ODMxZTBhYzQ1MjQ0NDQzZTUyYzk2MjQ4IGxlZ2FjeS10cnVuaworMzY1NTcgOTc3ZjI2N2IwMGY5M2VjNjI5MTlkNzZhNTEzYjNmMTMzYzQxOTA1NSBsZWdhY3ktdHJ1bmsKKzM2NTU4IGIxZDE0MmQ3MTQ4Mjg5OTg3MDQ2MDZkYWZmZGYxNjVjN2Q0N2U5MGQgbGVnYWN5LXRydW5rCiszNjU1OSAyYmM2NmYxZGY3Y2M3YzgyM2ZkYTNlZTY0YjJjY2UyMGVhNzdlODlhIGxlZ2FjeS10cnVuaworMzY1NjAgYzNhMDk2YmZiZDZiZTkzOTU5OTBlNzkwOGM1Zjg4N2MzNTM3YTg2NyBsZWdhY3ktdHJ1bmsKKzM2NTYxIDI4MjkyN2Y3YmRlMjQyZGE3Y2MzOTU5YTMzZmU4ZmI1NjRhODAzM2UgbGVnYWN5LXRydW5rCiszNjU2MiA4YmRkNzk0YTQxOTdlODk3MTEzNjExMWJhMWVjMWI5M2ZjYTUxNGY5IGxlZ2FjeS10cnVuaworMzY1NjMgYzFiZDFjOGU2NGI0NTc0ODU5YzkxZTNiMzdmOTczOGJkNzY3ZjdkOCBsZWdhY3ktdHJ1bmsKKzM2NTY0IGI2ZjEyNTJiNjgxYzUxY2MwODNjNGZmNzM2OWQwNDc1YTc1NjA4MjAgbGVnYWN5LXRydW5rCiszNjU2NSBmOTcwOTlmOWZmMWMzMWY4NDlmYTdhNWRmNTkxMjczNjA4Mjk0MjJjIGxlZ2FjeS10cnVuaworMzY1NjYgMzM3N2E3MjM3M2ZiZjg1ZDU2NThjOTY2ZmMwNjIwNzUxNjBmMTQwNiBsZWdhY3ktdHJ1bmsKKzM2NTY3IDRlMDdlYWNiMWJkZmQ4ZDc1NGEzODUxMDg5OGJjZDdmYzgwMzNkYTEgbGVnYWN5LXRydW5rCiszNjU2OCBkMTQzNmMyOGRjYTMyZWUyZTY3NzczNTIxOWVlYTQxNDY2ZmFhYmFiIGxlZ2FjeS10cnVuaworMzY1NjkgZGIxYTI3YjZkNzc1MGVjMjc2Yjk3M2JkMWQ5Y2Q5YjY4MDY0MzVjNyBsZWdhY3ktdHJ1bmsKKzM2NTcwIGMxODI0ZDY4ZDEwZWFjNDNjOTgzYzE5ZjgxN2ZiYzExOTE2ZjU0MzAgbGVnYWN5LXRydW5rCiszNjU3MSBlNDU3NTUxOWVjMjYyM2EwZmQ1NTkzOTc3YjlmZTFjMTJkYzM2MTZiIGxlZ2FjeS10cnVuaworMzY1NzIgMDVjYTIyMzJlZmNiZGJkMzk2ODk5YzZmODk3MzU5MThkZWI2YWQ1YSByZWxlYXNlMjMtbWFpbnQKKzM2NTczIGI3OTUxZTFmNWRkZjI5YjBiNDQwMzA0M2E0MzU5OGZmNjE2MTAxMzIgbGVnYWN5LXRydW5rCiszNjU3NCA1ZDlmNzJkMDg0M2VlYTlkOGVjZTNjYmRiY2U3YjZlMTAwZTQzZmMzIGxlZ2FjeS10cnVuaworMzY1NzUgOTVlYjZlMThhNTQyNzNkMzVjZjg5NjljYjNhZmFkNTQ2NDNlYjIzNyBsZWdhY3ktdHJ1bmsKKzM2NTc2IGRiZDNhMDRlYjBjNjQ4OTU4NzM2ZjQwODk2YTM3MjYxMDI1YTMzODAgbGVnYWN5LXRydW5rCiszNjU3NyBiNTQ1OWJmNDgyNjI0YmExZWYyZDU0YjhiY2ZjMmYyM2YyMzZjYjVjIGxlZ2FjeS10cnVuaworMzY1NzggOTM4ZGMzMmRkYmM0MWYxNDU4ZDJkNmI3NDVjMzY2MGY2MWNmMTY0NSBsZWdhY3ktdHJ1bmsKKzM2NTc5IDI1NzU2M2RjYjQ0MjM0NGZhYWY5ODdjYzgyM2M0YWI5ZTRlODA3MjIgbGVnYWN5LXRydW5rCiszNjU4MCBkYjI2YjNkYmU4MDI3Y2M5YjA1MGVjMzRjNmNjOGE1ZTE3OGI1M2UxIGxlZ2FjeS10cnVuaworMzY1ODEgMjZjYjA1ODkwN2YyMWI3ODE2NGE5YjIyOTQwYmVkMmI3NmE1OGQ5OCBsZWdhY3ktdHJ1bmsKKzM2NTgyIDg1OWVhODYxMmViMGRjNTI4YjRhMTRkMTdmMGIyM2YwYjNkYzI5MzcgbGVnYWN5LXRydW5rCiszNjU4MyBkMTc3N2Y1MTkyM2JiNjE4MTU0MGFjMWYxZTZiNzIyOWM1ZDc5ZjM1IGxlZ2FjeS10cnVuaworMzY1ODQgZGNjNWMyZDU4ZjMyNWZmYmM4MTFiZjIwN2EyMTdhMzVjNWY3YWE4ZiByZWxlYXNlMjMtbWFpbnQKKzM2NTg1IDYxYmU5MDRhMWQ0ZTM1NTNkN2EyZDcxZDI5MDViMjkzYmM1ZjczYjIgbGVnYWN5LXRydW5rCiszNjU4NiA3NmFkODE0YmM2N2M5NGVlZmZiOTc4MDZlOTUzZjhhYTE2MGQwMWE4IGxlZ2FjeS10cnVuaworMzY1ODcgOGFkNWExNjIwMDkyZTRkMGVlNjE1NDNlZjMwNThmN2U0N2MxMTVhMiBsZWdhY3ktdHJ1bmsKKzM2NTg4IGVjYjBjOTdmMWU0MjYwZGFhNzI3YTcxMWYzZmY0Y2QyOGU5MTYyZTAgbGVnYWN5LXRydW5rCiszNjU4OSA1MGVjZTNkNGZmMzcyMjg3OGIyMDZlNTIzYTEyZGE1Mzc4OWEyMTc1IGxlZ2FjeS10cnVuaworMzY1OTAgZDE1NTE3ZjJhYmU4YmNmMjhhNTkwNzRiYTUzOWNjYmYwNTVjMjdjYiBsZWdhY3ktdHJ1bmsKKzM2NTkxIGE5MWU3YTQ1ZjE0MjQxZjY5NmVmOTE1MDRhMGZmYWU1ZThlOWViYmUgbGVnYWN5LXRydW5rCiszNjU5MiBmZmE4YWIwMDgxZjIxM2M0OTU3NDc4ZjFiMDA0MGI4MjExMzk2MDI0IGxlZ2FjeS10cnVuaworMzY1OTMgOTgzYTkxYjUwZjZlNzg3NTAyNTIwNWI2MGFkNTQyOTQzOTIzMDEzMiBsZWdhY3ktdHJ1bmsKKzM2NTk0IGEzYjFkNmM5OWU0NjIxYmU0ZjdkNDk0NzQxM2IyZGZjY2I1NWU2ODIgbGVnYWN5LXRydW5rCiszNjU5NSA2MmY4NDNmY2I4MjM3OTdiY2M5YTU5YWExY2Y2M2Y0ZjhlZDc5NzNlIGxlZ2FjeS10cnVuaworMzY1OTYgMmVjNDUxMjMwYjhlYmNiMzI2NTY1YWE5MjRlOGZlMmU3ZWM3MGVhOSBsZWdhY3ktdHJ1bmsKKzM2NTk3IGIzMDFlNWRlZTkzOGMyMzhhMDEwZDgyNDJiMWJlZjZjZGRiNTI3OTMgbGVnYWN5LXRydW5rCiszNjU5OCA4YTkxY2Q3ZDdlODI1NGRkNWMxZDI3NTUyYTcwNDQ1MDI5NDAyNzFjIGxlZ2FjeS10cnVuaworMzY1OTkgODI2MDY5YjcyNWRiMjY5ZWExY2RjNDRmNGE2OWFhNzMzYjI1NGFmNSBsZWdhY3ktdHJ1bmsKKzM2NjAwIDY4NzVjZjA4ODJlMDEyM2NiNjQ2MmFiN2JlMGRjZDMxNDcwNGRkZjIgcmVsZWFzZTIzLW1haW50CiszNjYwMSAxM2QyMDMyMjc4N2Q1YTMyYWIwMTc3MThjM2VmM2YxYmIzOGE0YjU5IGxlZ2FjeS10cnVuaworMzY2MDIgN2FmNjk1YmM1NDgwOTI2NWFhMjhjODE0YzUzMzU1MGNiMmI4YzUyOSBsZWdhY3ktdHJ1bmsKKzM2NjAzIDMxOTM4YTQ2M2YyODdlOGY2NzQ2NDQ2ZGViYjNmMmQ3Y2FiODZhODUgcmVsZWFzZTIzLW1haW50CiszNjYwNCA1MTdlMDBhZjEzYTFhNzgzMTE1MmQxOTE1MjA2ZDVmNjgwNDIwY2MyIHJlbGVhc2UyMy1tYWludAorMzY2MDUgY2FhZWYzMDJmMWUzM2M1OTQzM2Y5OGY4NDJkNjI4MGZhYjkwZDFkNiBsZWdhY3ktdHJ1bmsKKzM2NjA2IDc5MTdmZDJjNDI5ODM4MWYyZTI0MTEzNTE1OTU0N2Y1OTJkMDJmYzggbGVnYWN5LXRydW5rCiszNjYwNyBkNmU3M2U1Mjg4MGU0Nzc5N2VjY2E3ZmVkMzNjOGJkMjI1YjQzMmEzIGxlZ2FjeS10cnVuaworMzY2MDggZTZiODQ3YjA3NTUzZjNjZWU2NjhhY2EzMzZjZjZhNDNlYTM2OTYwMSBsZWdhY3ktdHJ1bmsKKzM2NjA5IDAzNGIzYjkyYzVlMDMxMzkwNGMwNmExZTNmYjc3MjUyYmRiZjVkZGEgcmVsZWFzZTIzLW1haW50CiszNjYxMCA0ZjRiNzk1NjI4N2NhYjY4OTNhNjdjNDljNDE1MDUyMjA3NjlhYjZjIGxlZ2FjeS10cnVuaworMzY2MTEgODA3ZmJlOGQzNTg0MDEzZTY1MDczMDJiZWQ5ZDg3ODdjMzQ4OGM3MSByZWxlYXNlMjMtbWFpbnQKKzM2NjEyIDAwODkyNDIwZTBkZjVlMDg2NWNlZGE3NjBmM2E5YjM3Y2UzYjM3ZmYgbGVnYWN5LXRydW5rCiszNjYxMyA2ZGY5MzIyZDZhYjgyMzc4OWY4YjMxZWM3ZTYyNTRkY2QzNDdjZTM1IGxlZ2FjeS10cnVuaworMzY2MTQgYTk0MGI2YzA3ZTU3NzVlYmEzYmVkNzQxOWY5YTA2YTEwNmQxNWNiNyBsZWdhY3ktdHJ1bmsKKzM2NjE1IDU1ZjczYzgyZTMwNGJiODlkYzhlNjQ5MWZlMGY1ODQ3ZDBkNzY3NDYgcmVsZWFzZTIzLW1haW50CiszNjYxNiA3MzA0NTE0M2JlNjNlOGNmZmJjNmZlMGRkN2M5ZDE1MTU1OWQ5ZjE3IGxlZ2FjeS10cnVuaworMzY2MTcgMWUyMTg3ZjUwNjMxNzE1N2MzNjA5M2YzNzFkZWRmZjUyODJjOGU5NyBsZWdhY3ktdHJ1bmsKKzM2NjE4IDBmOWMzOWIzZTVmMDJmNDg1NTRmOTI3YWQ0YzVhZjEwOWRkZTcwNDcgbGVnYWN5LXRydW5rCiszNjYxOSA0NmUwNDMxYzk3MDFjYWMwYmEzMGZmOGRhMTlkYWQ0MTY4NTgyMTg1IGxlZ2FjeS10cnVuaworMzY2MjAgZmE0OWMxZTJkMmMxMDcwY2U5NjRjMzRiOThmNWY0Mjk1MjgyMGQ4MCBsZWdhY3ktdHJ1bmsKKzM2NjIxIGVhNTRmZGI4NjUzMGVjZTU0ZDRhZDk0MzExM2E2YjNiNGE5NTA1NDQgbGVnYWN5LXRydW5rCiszNjYyMiA5MjY3YWViNzI5ODVkMDUyNGJlYmFlZDlkY2QxMjUyNjJmYzI1M2RhIGxlZ2FjeS10cnVuaworMzY2MjMgZWFhOGEzN2UxZTg1MGNlNjY2ZmI0YjQ3NTViYzMyZjZiZTJhYjU5MSBsZWdhY3ktdHJ1bmsKKzM2NjI0IGZlNDE0NWJhMzliZmZiYTYxNzgyMzdhZjViNTg0NmYyNjg5MDY0ODkgcmVsZWFzZTIzLW1haW50CiszNjYyNSAxNmRlNGY5MGVmNDQ2OGNiNmY5ZTczOWYzYjc3NjFkNTJhNGM5NjMxIGxlZ2FjeS10cnVuaworMzY2MjYgZDMwZDUxYjJlZmUwMTJhOGZkNWMxMTg2ZDg3MTkyY2E5Y2ZmNDUxMiBsZWdhY3ktdHJ1bmsKKzM2NjI3IGRhYzI4MTM2ZDU5YjBhYzU3Yjk2MWE0NzVmMTM4YjM4MjAyNzM3YWEgbGVnYWN5LXRydW5rCiszNjYyOCBjZGFkNjI1MzMwOTRmMGNhMWI3NDU3YjQ3Nzg0ZGU0N2M1NWE4MjU2IGxlZ2FjeS10cnVuaworMzY2MjkgYjhiYzU5NTc4YTQ3NTYzMDg3OWM1ZDkwODEwMjE1ZDE1YzBlZDdlYyBsZWdhY3ktdHJ1bmsKKzM2NjMwIDNlMDQyMzM4NTJkNGZhZGZkYzAwODI0MDFiMjg5NWY5YjE2ZGZiMWYgbGVnYWN5LXRydW5rCiszNjYzMSA0YTUxY2RjZjg2MTUzMzY2OGIwZWZjYmI4OWY2MjM3Zjg5MzgwMDkzIGxlZ2FjeS10cnVuaworMzY2MzIgZWRiYWY2MTAyMjdiOWYzMTYyNDVlOWZkMmRjNGY1YzU5YjVjNDY3YiBsZWdhY3ktdHJ1bmsKKzM2NjMzIGIyODc5YTcyYjM0NjYxZTkwYjIyNzNmOTAzMTY5Njk2YmVhYWY5NTYgbGVnYWN5LXRydW5rCiszNjYzNCA2MjNhZTEyOTMwZWExNmFkNjk0OGMxZDM4NTdjZGRiMDQyZWMwMmI3IGxlZ2FjeS10cnVuaworMzY2MzUgNmU3OWRlYTg1MTg5YWZhOTQ0ZjcyMjU1OWVmNzEwYmRhNWEyODM4MSBsZWdhY3ktdHJ1bmsKKzM2NjM2IGQ1Yzk3ZDY5ZGZjN2MxNzFjNWYwMjk4YzcwODFjOTgzMjI4MmY4ODggbGVnYWN5LXRydW5rCiszNjYzNyA5NTgyZmEyZTVlMGRhMmEwNmZlMTgwZTgwMzVhNGY4OWFjMzY2YTMxIGxlZ2FjeS10cnVuaworMzY2MzggZjYxNmQ2NTM1OTkzMzA2M2M5NGNkODQ5N2QzNWVhMWRmNTMwODQ3YiByZWxlYXNlMjMtbWFpbnQKKzM2NjM5IGVlN2I4NDEwMTE2MDRmNDk5ZjE0ODA2MzJhMTQ4MDQ5ZTVmMzQyOTMgbGVnYWN5LXRydW5rCiszNjY0MCBkMmFkYmE0NzgxZDViMDc5OGFlNjg0MWViZDIyNGZkMjJkZjdjOGVkIHJlbGVhc2UyMy1tYWludAorMzY2NDEgYmY2ODZlZjkyY2IwYmQyNDJlNjI3YjhjMzRjZDQ3Y2E3ZjkzNmU3YyBsZWdhY3ktdHJ1bmsKKzM2NjQyIGJmNmEyMDY5MDgwYzZiMWY2Y2I3ZTI2M2NiNzk2MzExMTg4M2ZkYjIgbGVnYWN5LXRydW5rCiszNjY0MyBkMWNjZDJmNDVkYTM0MTc1Yzg5ZmVmZDFiNmI4NDZjODYwNzgxYWNhIHJlbGVhc2UyMy1tYWludAorMzY2NDQgODBhY2FiOWMzYzE3NjE3N2U4Y2Q1NWU4MTM3MTk3OTQ4MGMxMDBlMiByZWxlYXNlMjMtbWFpbnQKKzM2NjQ1IGIzNThkMmY0NGE3NDAyZGM0NzA5YjQ0OWUzMjllMmUwYjBlNjBlZDggcmVsZWFzZTIzLW1haW50CiszNjY0NiAzODM1ZGZmMmVmZGI1YWQwMmI4OWVhNGRiOGMzYmRjNDA4MzgyY2Q5IGxlZ2FjeS10cnVuaworMzY2NDcgZmJiMmQzNGY3NWEzYmY3MDEyNWYyMWQ3NTNlMTc5YjAyNmYwMWIwNCByZWxlYXNlMjMtbWFpbnQKKzM2NjQ4IDcxNjMzZDM3ZTk4ZTkyY2Y5NjU5YmFhOTAxOGJmZWJhNDY4NWI4ZDAgcmVsZWFzZTIzLW1haW50CiszNjY0OSBjNmM1OGI2MWY2YjVhOGYwMzRhNjAxMWRjNmU5MGE5NjUyMmQ5MjdmIGxlZ2FjeS10cnVuaworMzY2NTAgZDk1NjgyMDg5NTA1MGI0OTU5Y2EyOGRlMjIwMGY5MDI4ZjVlNTIwNCBsZWdhY3ktdHJ1bmsKKzM2NjUxIDM3YTc1YjJiNGMyOTQwNzE3NTk2Njg5YjEwOWRlNDMzNGIyMjU1NzUgbGVnYWN5LXRydW5rCiszNjY1MiAwN2E1N2Q4OWIxZTBkZmU4YzllNzNiZmMxMWM3NWFmMTlmNjY5ZDE2IGxlZ2FjeS10cnVuaworMzY2NTMgY2JkNGFlNzQ4OTBkM2MxMDRlZDZiMjM1Y2ZjMTcxYTA2Njg2MGVlZCBsZWdhY3ktdHJ1bmsKKzM2NjU0IDA2MGRlNTA0ZWJiZWFmYzA3NjgzYmJhODA0YTE2OTFjOWY4YzBkNzEgbGVnYWN5LXRydW5rCiszNjY1NSA0MzUzZmZjNDM3ZjE5ZmQ4ODE0NWRkZWQ4MzU4MDhjZjc5MjBjMzQxIGxlZ2FjeS10cnVuaworMzY2NTYgZmE0YzcwNjNhNzM2YTVjOWUzNDI4ZTk4ODc1MGY2ODFhNDlmZjU2OCBsZWdhY3ktdHJ1bmsKKzM2NjU3IGRhYzlkMDY2NGZjMzkzMzQ1MDg1NzUwMjk4Yzk0ODlhYWVkOWM2NGQgbGVnYWN5LXRydW5rCiszNjY1OCA3MTgzMDUxMTJmOWZkNjExYzA5MDQwOTE2NWRiZGExNjFjM2I2OGQ4IGxlZ2FjeS10cnVuaworMzY2NTkgYjU4Y2Y2YjVmYzkxNDM4MGQ1MGQyZWJjNjFlMzRhNjNjYjAyZmRjOSBsZWdhY3ktdHJ1bmsKKzM2NjYwIDFkZDNjYzkyN2QzNzdmNWU5MzlmM2Q1NWU4Zjc0MjE0YTNjM2ZjMzEgbGVnYWN5LXRydW5rCiszNjY2MSA3MGU4ZjYzNGE1ODkwMjliZjhkZTY1MWI4OWEwYWZmMjdkZGQ3MmZhIGxlZ2FjeS10cnVuaworMzY2NjIgMjRkZDFkMDdhZmRiYzA2ODlmMjQ0YjI5YzE1OGJhOTlmY2ZmYjUyZiBsZWdhY3ktdHJ1bmsKKzM2NjYzIDdiNDRjMjc4Mjc5M2U5YzYzNDk2M2U0NGJmMjEwN2VhN2MzNWQxNjggbGVnYWN5LXRydW5rCiszNjY2NCAyMTMxOGQ3Njk1ZjljZDNmNTYyYzc3Zjk4MzRlYzYwNmUxODNkYzhmIGxlZ2FjeS10cnVuaworMzY2NjUgMDg1NmQ5OGUyYTY4M2RhNmIzZjc1ZjMzNjg4NzFiZjIxODQyOGNhYiBsZWdhY3ktdHJ1bmsKKzM2NjY2IGQ1Yjc2YTE2NzMyM2FhMTUzMGI5Zjk2NGM3ZDI4OTI5OTk1ZjYzZGYgbGVnYWN5LXRydW5rCiszNjY2NyBkYWIzZjA4NjY4ZGYyM2FlMzU2ZWVjMDkzMDE4OTQyMWQyMWRkMjI1IGxlZ2FjeS10cnVuaworMzY2NjggYTRmMThjODk4NjVmYjhkMGQyYWIyYjgyZWU5ZjE4N2E2NmZhMTgxMiBsZWdhY3ktdHJ1bmsKKzM2NjY5IGRiMjEwODFmNWJjMWIxNjE4ODEyMWJkYTlhMGUwZjM4NDg3NGQ5YzYgbGVnYWN5LXRydW5rCiszNjY3MCA4NjU1MTMxMTJmN2EwZTc5MThmYzMzMDE1ZDEzZjE3NTkyNTllMjJlIHJlbGVhc2UyMy1tYWludAorMzY2NzEgNWU0ODBhNWM2NDdkYTczNDQ5YmYzZTk4MmZhMmY1ZTIwZjJhYmE3NiBsZWdhY3ktdHJ1bmsKKzM2NjcyIGUzYTM1ZmJjZThlYzIyMTc2ZDM4OTMyODU2M2UzMDQyZDExZWZkZGEgbGVnYWN5LXRydW5rCiszNjY3MyBlN2NjNzQxNTJjNTUyOTdjM2NhOWY4ZDZkY2ZmMTk4ZTIwNGU4NDlmIHJlbGVhc2UyMy1tYWludAorMzY2NzQgMDllNjMzYzUyNzMwNzlhZDljNDVhYzU1YzFkMjhjZThkNTZhMTRlMiBsZWdhY3ktdHJ1bmsKKzM2Njc1IDA1MmE0M2FhMzVlY2Y3MmVkMjI4ODUxY2FkMjBiYzVkN2FmMTMxNDMgbGVnYWN5LXRydW5rCiszNjY3NiAwZjk0ZjQ4ODZiZjU1YThhNTUwZjFiMDY5NThmMDFhMDViNThiNjYyIGxlZ2FjeS10cnVuaworMzY2NzcgMTY4MjIwMWYwNWIyYTg0NTBlNjViYjY5M2IzM2U2MzVkZGMwZmY1ZCBsZWdhY3ktdHJ1bmsKKzM2Njc4IGRjYjI0MWM4OWY0Mjk3MmM3MTIwYWRiMDU1NzcyYTE1ODY2YjMxZjQgbGVnYWN5LXRydW5rCiszNjY3OSA5NmQ5OTE0NzdhODI5Y2E3N2QxMmQ5YzgzNWNlMDI5MDJmYWQ3ZDVmIGxlZ2FjeS10cnVuaworMzY2ODAgMDZhNjNjMzVkZjllM2M2NWNkYjJhZTg4NjYwNWFiMzU4ZjBkZjQ1ZCBsZWdhY3ktdHJ1bmsKKzM2NjgxIDcyNGZiMjZlYTA1ZjI0YzlhMjNjODdhY2QzYWM0ZWE4NjI2MjdiNTggbGVnYWN5LXRydW5rCiszNjY4MiBmYTA1MjZjMzBkYTgwNWY4MTBmN2U4NzA4MzU1ZTdlZGJhOGIyZDQ3IGxlZ2FjeS10cnVuaworMzY2ODMgNDVmMzIyMmI4NGVlMGVlMzFmMjdiMmJjZDI2MTY4NWEzMWJjOTU4OCBsZWdhY3ktdHJ1bmsKKzM2Njg0IDQ4ZWFlMjBkNzBjNThiODZjNGUzZjA3M2MwZWVmOWQwMWRjYjE4MTEgbGVnYWN5LXRydW5rCiszNjY4NSBmYzM2ODdhNjI3YjQzNDNjMDllOTUwZDYxOTUzOTJhYmE1MzU3ZGRmIGxlZ2FjeS10cnVuaworMzY2ODYgOWEwMGI2NWFlY2RjYzg0MzdlMjMwNzA1YmJlZTQ1MDE5MDgwMGJiZiBsZWdhY3ktdHJ1bmsKKzM2Njg3IDZlYTMyYjBlOTUwN2ZhMjZmMWZkNWMyYjhiMjE1ODA0M2E5M2E5YmUgbGVnYWN5LXRydW5rCiszNjY4OCA2MGE3MDhiZjM1MWFlMTFlOTc5MmNiMTEyOTU2MDNkNDQ1OTM3NjdlIHJlbGVhc2UyMy1tYWludAorMzY2ODkgYzU3MDEwZGIxMjNlZWFjMTg3Y2I0YmU3YzBlMzBhYTQ5OWUzNzM1YSBsZWdhY3ktdHJ1bmsKKzM2NjkwIGE1M2I1Y2VmYTYwZDdkMDUyNGY4NDAzYTJmMWU2MjlhM2IwYjMzZGQgbGVnYWN5LXRydW5rCiszNjY5MSA4ZDI1ODM1Zjg4YWU0NDUwZTlkMzI5YmQ4ZDE4YjFmMDlmMzY1YWIyIGxlZ2FjeS10cnVuaworMzY2OTIgYmQ0NmU2ZjgwNjIzYmY5ZDIyOTY4NDU1ZGMyZDA5NTQ0MzkzNWUwYiBsZWdhY3ktdHJ1bmsKKzM2NjkzIGNhNmVmYzU0YjE5ZmY3MTljZjM2ODIwMTRjOGY3YmRlYTE5MmUzOTYgbGVnYWN5LXRydW5rCiszNjY5NCAxOTU2NTUyOTllZDM2NDg3NGFkNjE1NjNkMmY0MWNhZDg4MzBjMTZhIGxlZ2FjeS10cnVuaworMzY2OTUgNmJlODk0MDE0YThjM2JmZDZmNjE3ZDkxNmUzNTRjNjhkYjRlNzczZiBsZWdhY3ktdHJ1bmsKKzM2Njk2IGQwMTMzOTNjN2Q5ODJmNGE2YzI0YjYzMTMxNGJjMDQ3Nzk5MDljZjUgbGVnYWN5LXRydW5rCiszNjY5NyBlZjA4ZjQ4YjYzYTFjZTU0ZTFiM2Y0NzNkMWUyZTY2NjIwOGVkYjM2IGxlZ2FjeS10cnVuaworMzY2OTggNjJjNTNiOGU0YWViMzFiNmYwNDE3MTk2NWYzMTJlMWVmNmRlZmRkZiBsZWdhY3ktdHJ1bmsKKzM2Njk5IGIzOTBjZDkxYzc2YjExZjU4NjJmNTRlM2VjMGExMWRiYzQ0Zjg1OGIgbGVnYWN5LXRydW5rCiszNjcwMCAwMThjNDMwNDViNTNlNjM4ZWM4OWM3OTk5NTU1YzAyMjAyYmY3NDg5IGxlZ2FjeS10cnVuaworMzY3MDEgMjkyOWZjNTRiNDlhNWQ0N2I4NWJiNGZhYjVkODQ4Y2Q3MjcyYTJhZCBsZWdhY3ktdHJ1bmsKKzM2NzAyIGNhMWFlYjhhYjM4MDJjYjI3Y2E4Y2EyZDk4ZDJkNDdmMzMyYTQyOTQgbGVnYWN5LXRydW5rCiszNjcwMyBkM2Q2MDlkNjU3ZmQyNjlmZGM3Nzk1MmYxNjdhODJkY2Q0MGZhYTVmIGxlZ2FjeS10cnVuaworMzY3MDQgNTEwZTllMmIwODE3NDYxMTBlOTYyZDBhOTRjNjQ3YzQ3ODczNmM0MCBsZWdhY3ktdHJ1bmsKKzM2NzA1IDI2YjMwNjg5NGI5ZWI0NjEwYzlmNDg5NDFhODM5OWI3ODBmYTQ2NTUgbGVnYWN5LXRydW5rCiszNjcwNiAzMzFlNjBkOGNlNmRhMTliMTY4ODQ5NDE4Nzc2ZmVhMDk0MDc4N2VjIGxlZ2FjeS10cnVuaworMzY3MDcgZTI4Yjg3MzNhNjZkN2RlYWVhNThjNTBhNzY3MDMxODQ1Y2JhZWE4NiBsZWdhY3ktdHJ1bmsKKzM2NzA4IDg4YTFkODZkNDQyZTgxMTRiOTc3NDcxM2ViZjRkYjhkYmNhOTAzYTggbGVnYWN5LXRydW5rCiszNjcwOSAyYWE3YWVmNGU0MDMzYzM0MGM5Zjk4N2UwMTIyZWIzYzUzNjk4MzgxIGxlZ2FjeS10cnVuaworMzY3MTAgYjMyM2JkYmFjN2U0NzcyYjhhYzc2ZjYyNzM1ZmE1N2I1YmQ4NGUzMiBsZWdhY3ktdHJ1bmsKKzM2NzExIDFiZTQwMzNmODQ5ODA4OTFkNGViMWU3ZmMxYzY0MjMxNzJhODI2ODEgbGVnYWN5LXRydW5rCiszNjcxMiBjN2UwM2NmODMzM2U1YTNhOGNjZmU5YTBlZTg1OTQ2NzYzMzA3ZTAxIGxlZ2FjeS10cnVuaworMzY3MTMgMjA5NWNiNTk4MTg4MzRlYjllYjQ2MDMzNzNiYmNjMGM3MTBhZmNhYiBsZWdhY3ktdHJ1bmsKKzM2NzE0IGI4YzJhYTJiZTE5YTMxNDQxYjI1NTUyZjhlZDJlNTE5ZjA5MTY5YTQgbGVnYWN5LXRydW5rCiszNjcxNSBhOWIyNWMyMzA3MzI3MjlmMmNmYmI5MzJiZDk5MTVjM2ZhNTRkODg0IGxlZ2FjeS10cnVuaworMzY3MTYgNjg1YTk0OGIzYmM5Y2I1ZDU5NGQ2Y2ViMjg4Mjg4YzNlZDU0ZDhhNCBsZWdhY3ktdHJ1bmsKKzM2NzE3IDUxZDdhMTIyNDRhZjMxMzgxZmVkNzVkOTQxNDI4MWYwOTA1OWNjZTMgbGVnYWN5LXRydW5rCiszNjcxOCBkMDQ5YTFmZTI2NzYzZmFkNzA2YTQ0MzEyM2VmNzE0MTYxZmZiZTAwIGxlZ2FjeS10cnVuaworMzY3MTkgNjNhZDZmNjkyNWM1NjhkNGZhYWY5M2E5ZTlkOWI2YmNmMjk0MjVkMyBsZWdhY3ktdHJ1bmsKKzM2NzIwIGE3NTgxNWUzMTU0NTEyNjRhYmNkZDliMmMzNWMxZTVmYWI4NDFjZGYgbGVnYWN5LXRydW5rCiszNjcyMSAwZGM4ZmZhYWMwMzY0NTNlNjlmZTNiMDVjZWQ4YTg3NWExYTczZGY3IGxlZ2FjeS10cnVuaworMzY3MjIgZGFlYzJkMzExZGVmM2EwMzMzMDA3OGRhMmJlOWUxOGFhYjAwZTgxOCBsZWdhY3ktdHJ1bmsKKzM2NzIzIDg0ZWZhMDA1NDE5YWFlMjdjZTgxMjZjYjA1OTQwZGVkMzc0YjIyMDAgbGVnYWN5LXRydW5rCiszNjcyNCBiOGUxMGFjYjRlZmI2MjIyNjBlZGU3ODlkODhkNTFlYzA5MjMyMjU2IHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3MjUgYWM3M2Y2NjYyZTExN2MyYTQ0ZmRmZjdmNzY4OWYyZTZlZjc5N2JmNCBsZWdhY3ktdHJ1bmsKKzM2NzI2IDMwZDg2ZTM1NmJmMjRmNzE0YjEwZmRjZTNlNjk1MzkxN2IzMTg0MjkgbGVnYWN5LXRydW5rCiszNjcyNyA3OWM0ZTgyZWU5OTdjOGY0MTAwZDkzZmI4NWU0MDk3YjA0NWEwODJhIHJlbGVhc2UyMy1tYWludAorMzY3MjggMzNiOGNlNjYyMDJlYzkxOTdiY2JmZjBhY2YyZGFlMTc3NjQ0NzEwZCBsZWdhY3ktdHJ1bmsKKzM2NzI5IDkxNDZlMmVhM2JkNTBjZDU2MWQyMmNlMzUxZjhiYzQ4ZjBjNjZmYTMgbGVnYWN5LXRydW5rCiszNjczMCBmNDEyZmEyYjNmZGVmN2M5M2RkZDNhZjU3ODMyZWE0NTNmZGQ5ZjY1IGxlZ2FjeS10cnVuaworMzY3MzEgZDRkZDdiODJjYzc1YmI2YjViOWE1NThkM2NhODM0NjRjNjk4OGUwZSBsZWdhY3ktdHJ1bmsKKzM2NzMyIDY1ZjExYThkN2M4YjM5ZTc0MTJlMjJlODAyMDhkYzBiMTAwOGFjY2YgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjczMyBlMjI1NzRiZTg3NjQ5YTQ3ZjVhZWE2NGFkYmRhNmU2MTdjZmU1MDg3IHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3MzQgNGNjZTAwMDQ3Zjk3NDk4MDZmMzM1ZWRkMjA1M2VmZTRkY2NmMjRmYiBsZWdhY3ktdHJ1bmsKKzM2NzM1IGQ2NzRkNzhkOGRhNjY0MmZlMTgzZGNiNzc4NzIyMmY2Y2VkNTRhMjIgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjczNiA2ZDE2YjA3YWRkYzNhNmQzZjQyMDFmOGUyMTQ1ZTljNjlmNWUwNjU1IHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3MzcgNTQ2NzE3MzZhMjllNGU3NGQwY2Q0MDhhZDQ2OTFkYWFmOTcwYzhiYyB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzM4IGY1M2I5MDFjOGFmZThiZjIxNWRlNDc3NzYxZjJiZTk2NGVjYzJjYTYgbGVnYWN5LXRydW5rCiszNjczOSA2NTMxOTYwN2JlZDhhMTg2YWFkMjY5N2ExNmYyYWFiMWE0NGRkZjQ1IGxlZ2FjeS10cnVuaworMzY3NDAgNjZjNTU2ZjA5MTYzN2QxOWVhY2MxZjcyMmU1OTM1YTNiZmE5Njc0ZSBsZWdhY3ktdHJ1bmsKKzM2NzQxIDE1MzM3MTljNjEzODM5ZTQyYTdlOTVkNDg5NTM3Njk0OWRkMjRhOTAgbGVnYWN5LXRydW5rCiszNjc0MiAzMjlkNDkwNmMzM2ZjN2QzODgyMzkyZjcxOTBjNTY2Njc1MjZhZThjIGxlZ2FjeS10cnVuaworMzY3NDMgODkxNTlhMTI2OGNjZGU1YzFlYjZhNGUyOTllZmY2YjZiY2RmYzQyZiBsZWdhY3ktdHJ1bmsKKzM2NzQ0IGNhYzVjOGYzZTk5MGYyZTc5NmZmYzY3ZWJlZGE4OWQ1MjBmZmUxYjggcmVsZWFzZTIzLW1haW50CiszNjc0NSBhOTg1NmU3M2UzMmQ0MmQxN2Q0NWY2OTk5ZmVjZjYwYzg5YTlhODc0IGxlZ2FjeS10cnVuaworMzY3NDYgZmY3NzcyNzU1NWFlNTEwNDI5ZTA1YjZjYTRiOWFkMDg5YzI0YjY3YyBsZWdhY3ktdHJ1bmsKKzM2NzQ3IDQxZmFjYzNjY2RkMzM5Yzk0Y2UyYmU2YjhmMTg3NTRiYmEzYjc3ZWEgbGVnYWN5LXRydW5rCiszNjc0OCA3ZTc0NTdhNjliNGQ4MWRkZWViOGQwNDAzMjg5ODM0ZWFmYjVjYjQ1IGxlZ2FjeS10cnVuaworMzY3NDkgMjViNjY5ZjRiNTZjZjYyYzNiMGMzZjY0MGJjNjczZmRmZTBiNDZkNiBsZWdhY3ktdHJ1bmsKKzM2NzUwIGJkYTk4MzA0ZGViNWQ5NGY4NTI1MDliOWRkNjk0NWM2YzhlYmJkYmUgbGVnYWN5LXRydW5rCiszNjc1MSAzODI0ZmEyOWJlNDljYzFjMWI3OGRjMzM2NTM3MzI5MjFjNTY0OTA3IGxlZ2FjeS10cnVuaworMzY3NTIgNjkzNzAyNTMxMTViYTc3YmQ3ZTY0OTA0NjdiOGEyZWM0OWRmODJhNiBsZWdhY3ktdHJ1bmsKKzM2NzUzIGYxYmJmMTQ3ODEwYjI5NDYzNWE2ZjBhM2NlOWNiMDNmYTQyNDUzMmQgbGVnYWN5LXRydW5rCiszNjc1NCA5MzY3MTJiMzFiZWRjOGEzMjU1MjUzNzliNGQ4ZWIzYTkzOGU0NzFjIGxlZ2FjeS10cnVuaworMzY3NTUgNjYzYWQzNDk1MzRiMDA4NGQ3YmRkYzA4ZTlhYmJlZjMzOTkzODYxMiBsZWdhY3ktdHJ1bmsKKzM2NzU2IDVmNThmY2Q3YWNjZjYyMjE0ZjMxNGRiY2Q4NWU5MjE5MTQxMmJiOTYgbGVnYWN5LXRydW5rCiszNjc1NyBjMzFkOGYzOGZkN2Y2ZjFmZDRhZDRiZjAwZDQ0YzY3Yjg0MTIyOGU2IHJlbGVhc2UyMy1tYWludAorMzY3NTggY2U0ODhhYTA0ZjI0ZWEzNjhkZGY5YzExYTQwMDZmOWUzMzhmNDA4ZiBsZWdhY3ktdHJ1bmsKKzM2NzU5IDhhYzRmYWEyODJlMGI5Y2YyOTE0NGY2NzdiMjVhYzdhZDE3NTQyMTggbGVnYWN5LXRydW5rCiszNjc2MCA1YzIxNDlmMzZjM2VhYjZjYTA1NTFjM2U1MTA5MTBjMDBiNmQxMmFmIGxlZ2FjeS10cnVuaworMzY3NjEgZWM3MWFlM2JjMmRkYWY1ZWU4ODNjYzE5N2UwMjgwMzEyZDAxMGNlNSByZWxlYXNlMjMtbWFpbnQKKzM2NzYyIGJkM2RkNmIzZmY5NzI2ODgyODZmZjUxNWRkMDM3YjBiODZkNThjMTUgbGVnYWN5LXRydW5rCiszNjc2MyA0NWExNzBjNGNhNTZjZWQyNmZmY2ZhNDc5N2Q1YzRhNTFkMmQ0NGM1IGxlZ2FjeS10cnVuaworMzY3NjQgOTFmYTgwYTY3ODExYmNkZTUwZWI5MDA2YzFkMDU5OThiMDRiOTAzZSBsZWdhY3ktdHJ1bmsKKzM2NzY1IDJjMmY1Y2ZlZmE2MDU2ODNlZjdkMTQ2YWFiYTgyMmQ0ODJhYmE2ZTIgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc2NiBkZmRlMDg1MjI4ZWVhNTBiNDZmYWQ2NTdkNWViNjhjZGU3ZmU0ODE5IGxlZ2FjeS10cnVuaworMzY3NjcgZjA3MWE1NTNhYWU1OGE0NTNmNjYzOTQ2OTZkNjM3ZjUwZjhjOTNiYyB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzY4IDQ3M2NiMGVmODJkMjQzNDZmYzUxMWM4NDkwMWUyMjZhYWRjZDFmZDAgbGVnYWN5LXRydW5rCiszNjc2OSAyNjYzYjRmNTM1YjdjYzU4YTVhM2NkYjQxOGFhNzFjNTViZTUwNjFiIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3NzAgNjUxMTg4YTY2MzhkYzNmYzQ3ZTFiMTI2ZjcwZGI0OWUxMDZiZTVkZSBsZWdhY3ktdHJ1bmsKKzM2NzcxIDhjZTM0NGY2Yzk1NGVlYzhjZjExMDhlOWQ1Y2RjYTIxNTk2OTExYjMgbGVnYWN5LXRydW5rCiszNjc3MiA1YWE4NTA5N2NiMmNkY2M5NmE4NGY0ZDRhZTQxZDQ4N2UxMDYxZDQ1IHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3NzMgNTgyZWI1MWI4NDkyMTQ1MDZiMDFmY2QzMGM4MTk1NGFkY2Q2MmMxNyBsZWdhY3ktdHJ1bmsKKzM2Nzc0IDIyZGVkMzA5NjQ4YmNiYTMzOTMyNTQ3Yzk5MjBiMjc3ZTlmY2QzYmQgbGVnYWN5LXRydW5rCiszNjc3NSA2NmRjMjExYmY1MDcyMWFkMDFmNzEzZWZlZGMwNTg5YjhhZThhNzYyIGxlZ2FjeS10cnVuaworMzY3NzYgODRiNDc1Nzk5OTE4MmUwZmNjOWE1MTFlMjQ2YmZmYzMzN2EyYmNkNyB0aW0tZG9jdGVzdC1icmFuY2gKKzM2Nzc3IDYzZGY0Y2I0OTJhMTZjNmFmYTlmZDU3M2Q5MzNmYmIwZDIwODE5NmIgbGVnYWN5LXRydW5rCiszNjc3OCA5ZmI1MTM4ZjU4ZGQ4MWI5MThkMjZlMzM0Y2YzZjJhYTQ1MzNhZjcyIGxlZ2FjeS10cnVuaworMzY3NzkgZjYzZDQ1ZmQzZmNlNzQ0ODk0OTJmZjIxODBmNjg1MjBjMDZmZjU1ZiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzgwIGUwMjc5MjExMjI4ODlhZThkYmZiOGY4Yzg2NmEzMGRkNmVlZmE5OGIgcmVsZWFzZTIzLW1haW50CiszNjc4MSA5ZjhhN2JhMjEwNTVlYmUwZGEwZDYwMzM2OThiMzUwNzUwZjUwM2U0IHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3ODIgOGIzOTBkZjdhZjg3MzczMmQ5Y2Q2NWY4ZmJhMDZmNWJkMDk5M2RjZSB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzgzIGU0ZmVlZGIyMDVmMmQ2YjhmZDAwNjRmNjMwODEwN2UyOWJmZmYyNTYgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc4NCAzMTQ0MjJhMjhlM2ZiODU4YjVmNWU5NjM4Y2NlMzAxZDUxNzJiZTc5IHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3ODUgZDc0MWNiMzc3ZjgyOTVmZjEwNjMwZWRmODEyNGQwOWYwNDVkOGE4MCB0aW0tZG9jdGVzdC1icmFuY2gKKzM2Nzg2IGZjZDY5MGM4YjJjYTZkODQ1NWUzMjkxMzc4YzZjNzdjNTRjZTZiZmYgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc4NyBjYWZkN2U0ZTc3YWQwNzgyYjNlMDBhODY0NjgwOGVmNWIwMzE5ZDk3IHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3ODggZmJiNTQyOGViZjQxMDllNmFhNzhjMjUwNTdlYjJkYzFmMGE0YWFmNCBsZWdhY3ktdHJ1bmsKKzM2Nzg5IGRiMzhjMWU4Mzk2NTJkMWVmNTlhNTYxZGYwOTQ1ZWUxMDM3N2U4NDQgbGVnYWN5LXRydW5rCiszNjc5MCBiNjM5Y2I0NWIxNzMxM2RlZjIwYzcxNzE4NWM4OTI4OTk5YWE2MTUzIGxlZ2FjeS10cnVuaworMzY3OTEgOTUzY2U1YWYxMGEzMWIyOTM1ZDMzOWE5OTQ0NDdmODIwMDMxZTkwNCBsZWdhY3ktdHJ1bmsKKzM2NzkyIDllYmQ0MDU2ODNjZDg1NzI0MTVmOTJiOTlhYjc1ZWVjZjExY2MyMzkgbGVnYWN5LXRydW5rCiszNjc5MyBhZGZlN2QzOWEwNDlkNmEzYzkzYjQyZmY5ZmI5MjY5NTc4MmRhZWU3IGxlZ2FjeS10cnVuaworMzY3OTQgMDI0ZmYwYWI0NTg4MDMzNTVhM2QzNjc2YzA3NTQxOWFmM2VhMTA0MyBsZWdhY3ktdHJ1bmsKKzM2Nzk1IGI1NjQ4MWE5MDUxOWU1YTIwYTE4ZDUzM2FhM2ZhMjUzMTRlZDYyNGIgbGVnYWN5LXRydW5rCiszNjc5NiA5NzFlNTE0MTM0NDdjMmU4YmQzYzZhYzViMTY3MGUyZjY0YWRkZGUxIGxlZ2FjeS10cnVuaworMzY3OTcgMmJjYmYzZmI3MDIxZWZiNjQzMDVkYTc0Y2FhYmNmZjcwYjY5NDYzNiBsZWdhY3ktdHJ1bmsKKzM2Nzk4IGUyZmVhMjJlMGM1MTNkNjFiYzk4YTU2OTEzMTljNDAyM2RhM2QzYTMgbGVnYWN5LXRydW5rCiszNjc5OSAwNzFkMzM4MTc1M2I2MGQyMjc2NmQxN2ZiODcyOGE1NDk5NjAyZmQ2IGxlZ2FjeS10cnVuaworMzY4MDAgYTlkNTkxOTdiMTYzMWRkNGEzYmVhMGVlMDY4YWFlMGFiOTc4Y2JjOCBsZWdhY3ktdHJ1bmsKKzM2ODAxIDE1NmFjNmRlOTYyNWM0N2RmMTViYjExMjRkMjBkNDRlNWVlMzY2NjcgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgwMiAwYmYwZjRiZWExNDQxNjg5YjgxYTM0MTNjNGM2OGEwOTAxMjNlMGUyIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MDQgZTljNjQxNGRiZGI2MTUzNzM1Mzk5OGU4Njc2NzA1N2ZlMTU0ZDdmZCBsZWdhY3ktdHJ1bmsKKzM2ODA1IDJiYzMzMjYxNmNkNmY5ZmUxYWM3NDJmMjUyMWE5ODEwNWE2ODdkYzcgbGVnYWN5LXRydW5rCiszNjgwNiA3YWFhODUyZmE4NTZmYTMzODQ1MjZjNTM0M2Q1ZTBmZmQ2NmI5MDkwIGxlZ2FjeS10cnVuaworMzY4MDcgNWU4ZTMwOWMwYmIwNjk3M2Q5N2JiYTYxOGU2MDcwODFjYzY1NGIwZSBsZWdhY3ktdHJ1bmsKKzM2ODA4IDM0MWI3YWRiYTk0NDdhMThiY2UzODUxZGY0M2UyZmQwNmYwY2E1ZGEgbGVnYWN5LXRydW5rCiszNjgwOSA5ZjY2MjU5YWVjZTMxNjVjYzJjNzBlMGEzMzU0NDIzYmM0MGRiZTBlIGxlZ2FjeS10cnVuaworMzY4MTAgOWFjNjQzNTQ0NjI5YjA0OTc3YjdhOWMwOGE4N2JhZTkzN2ViZTdkZiBsZWdhY3ktdHJ1bmsKKzM2ODExIGVhMzM4YmFhYjg1OTlkNzE1N2YwMmY0MGRiZmIwY2Q4YWZmYmM1NDEgbGVnYWN5LXRydW5rCiszNjgxMiA5ODIxZTM4OGI1OWQ5M2YzOTZiNzM3N2ZkN2VlZjU4ZTlmOTQ0OGVlIGxlZ2FjeS10cnVuaworMzY4MTMgZmZhYTE3NWQwYWEzMzdmODg0Mjg0NzQ3MWFjYmRhNTllY2ViMjRhOCBsZWdhY3ktdHJ1bmsKKzM2ODEzIDA1NWZjNjk1NWYzYzY1MjJiZmViN2VkNGM2NzFjOTdkNWJhYWFhYzIgbGVnYWN5LXRydW5rCiszNjgxNSBlNmQwMDkyNzZjNTQ3OTYxYTQzMGI5OGJiYTEzNGJiZDQ4OGExOTY4IGxlZ2FjeS10cnVuaworMzY4MTYgM2U5MDljNTRlMzBjOTFkZDI3N2JlNzVkZTE5ZTk3YzRmM2U3OTY3NiBsZWdhY3ktdHJ1bmsKKzM2ODE3IGNlYjFjM2YxYWM4YWJiNDYxYzUwZWRkOTk4MTcxNTRjZmVlNWYwMDggbGVnYWN5LXRydW5rCiszNjgxOCA1ZjRiZmJlMjZhNGRjNDY0ZWZkNmYxMzAxZmJhZmEwZmQ2NTQ2ZDMxIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MTkgODQ0MTBhMGQ2ZWE5NDEzNDAxZWE1OTZiNGMzZWZmZmVlZWU1YzEzYiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODIwIGVhODc1NTNlMjU2MDlmOGFmYjA2ODMxYWY2MDM0NjAwNjRhZmYxMjMgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgyMSBiZDQxMzY2N2FjMTZiNjdkZDJkMzM5NTU0NzdlOThmZmNjMzI2MDk0IHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MjIgMmU2N2MyNzA4NjcwOGIxMWJhODhmNjIxMzc1ZGNjODQwNDc0OGM4MiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODIzIGI2ODkwZWE1ZmRlMGY2ZTA1MjljZmE3MmQ3NjI4YjBhOWI1OGNjNTEgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgyNCA3OTYwMDY1OGJlNjg5MmE5MDU3M2NlYjcxN2I5NmQ3ZjFmYTk2Y2E2IHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MjUgYmU1ODRjZGE1NDdkNjQyYzg5YmQ5Y2Y1YTU3NTFjNGU4YzIzNmMyZiBsZWdhY3ktdHJ1bmsKKzM2ODI2IGY3ZDUwZTkxYmVmMzllZGQ0YTJlNmUyYzVlNDc5NjU4YTkzM2U5ZjEgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgyNyAxOTc1MTdkODA5OWU0N2UwMDA1NDNiNTQ5YWVkZGRlYjU3MDU1Y2ZjIGxlZ2FjeS10cnVuaworMzY4MjggNGM5ZWZiM2E2YmIzZjYwYzQyMGE4NTUzN2M5M2E5NjUzYzkyZDhkNCB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODI5IGMyNmE0ZmQ2OTc0NGFkYzRjY2VmZWM3MWRkMTk3YWVlMzBiNWQ4MTAgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgzMCBmYjZmZmQyOTBjZmIzOWQyMWFmZjFkNzIwODJkZjZjYzNmZmNlMWU5IGxlZ2FjeS10cnVuaworMzY4MzEgYWFjZGQwZWNhMWViNTYyZTM2NWRhNTI1ZmFiZjA0Y2UyYWY4YjEwMiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODMyIDliMTg4MTU4MTgxZjdmMTM2NzU0NWRkMjg1NmFmOTVjNTJhMTMzYjcgbGVnYWN5LXRydW5rCiszNjgzMyA0ZjAxODk0YWI0NThkYzc3YWJlMTY5MzU0OTc4ZjQxYmIyNDIwZTYyIGxlZ2FjeS10cnVuaworMzY4MzQgNDBjM2E1MWNiNzFjZDM1NDc2MTIxOGZhNTFkMWMyMGViY2QxYWNkMiBsZWdhY3ktdHJ1bmsKKzM2ODM1IDM2MDA0MGQzZDRmYWQ4MjE3YzExNjc4ZjdmZjg1NmVhMWQ5Y2VhNmQgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgzNiA1Y2FiMzM2MTgyOTMwMDRiNWM1NTJkOWVkMDY4NzljZThiMTc5MmY0IHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MzggNjc4ZDQwZmNlMGIxNGE5OWU3NjMwZjUxMWI4Y2UwN2NhMzA5MTdhZSByZWxlYXNlMjMtbWFpbnQKKzM2ODM5IDVjYzU1ZDM2YmIxZGNmOWIwODVkM2M1YTllYjFiMDViNzA2YjJiN2YgbGVnYWN5LXRydW5rCiszNjg0MCBlODllZjBiZmExZmY4Y2Q0YjEwYTQyZTgxNDJhMWEyNzcwZWJjOWU3IGxlZ2FjeS10cnVuaworMzY4NDEgNTBjMTIyYmM3YWFjYTM4ODJjNzQ3ZjhlNTVkNzI5OGVhNjA2ODY2NCBsZWdhY3ktdHJ1bmsKKzM2ODQyIGFlODc3MmQxNWE1ZmE3MTYwYTM2NjAyOWU3YzBhMTk0ZTVmNWQyN2YgbGVnYWN5LXRydW5rCiszNjg0MyA3MjZkYjU4NTQ3NDYxNGYxMTQwMDE0ZTQ4YjYyZjZjZDM4Zjg3Y2RmIGxlZ2FjeS10cnVuaworMzY4NDQgNGIzZjhkZDkyNjlhZTA3MTkyYTliNzQ2YjU0YTJmYjQyMjI0MTY1NyBsZWdhY3ktdHJ1bmsKKzM2ODQ1IGY1MTk4OTZjZjVkY2JkZTM5ZDU0Mzc2MTc4ODkzOGE3YTEzZDJmYmIgbGVnYWN5LXRydW5rCiszNjg0NiA2MWMwMTcxNTc3NTY4MzQ0NWZhZGRiZmExZTNkYmVhZmFkMjM2OGU2IGxlZ2FjeS10cnVuaworMzY4NDcgOGY4NzQ0MGM2ZTgwY2QxMmVmOWE3OGIzNjE2NWIyZmMxM2M3M2YxYSBsZWdhY3ktdHJ1bmsKKzM2ODQ4IGE4YTQ4NjMzOWQ4MDY0NmY1YzRkM2QyZjdmNWQwNTljMTM3MjA1YjkgbGVnYWN5LXRydW5rCiszNjg0OSAyZWEwOTY2MmEyZDQwYjVjYzEzMTI3Yjk3ZGE4Mjk2Njg5YTYxYWI0IGxlZ2FjeS10cnVuaworMzY4NTAgNDQ0NTAxMjljZTM1NmU1ZjBlOWRlOTk2MzVhMDZiZmQ0OWQ3MmFlNyBsZWdhY3ktdHJ1bmsKKzM2ODUxIGM5YWU5NWQ3N2E0MjdmOThmNDgxZmNhNWE5ZThjZmU4NWY0YzE0OTQgbGVnYWN5LXRydW5rCiszNjg1MiBiMzRhOGRjM2NjYWVjZjJjNTg3MWY0NGE4OWY2NzM0OWExZTM2OTJlIGxlZ2FjeS10cnVuaworMzY4NTMgNGUyYzY2MDIxYmYzODBkMjQzMjYyNjM3YWJkMDI1MDM0YjI3MTRkMCBsZWdhY3ktdHJ1bmsKKzM2ODU0IDQzZmJmMjlkZDgzYTk3OGM4MTRiYzRkZTBhYTZmZmIxMjYyZTgwYmMgcmVsZWFzZTIzLWJyYW5jaAorMzY4NTUgMjUyYzY1NDY5MTE0Njk1YzZhZmY3ZjQ5YWZjYTA1Y2Q1YmRkNWU1MCBsZWdhY3ktdHJ1bmsKKzM2ODU2IDFhYTQwYTA4OTgyZmE1NWVmZjIwOGFkNjJhNzkwMDU5MmMzYTgyMjMgbGVnYWN5LXRydW5rCiszNjg1NyAzMDAyNTk2NTMyNGE1ODFlMDcxYzE3ZTRlYzVkMGNhZDcxODkzZDBiIGxlZ2FjeS10cnVuaworMzY4NTggMzA5YmViZWRmYzk3YTFjYzIzMWNiMjdjODZmZDZlM2Q5YzRmYzU2OSBsZWdhY3ktdHJ1bmsKKzM2ODU5IDJjMTE2ZTdmZjE2MzZiZTBjYWYzYzBkN2Y4N2ViYWE0MmM5YzFiYzYgbGVnYWN5LXRydW5rCiszNjg2MCA0NDFhYjNhZDZkMDFhMGNiNjJjNjM4ODgwNTg3ZGNjOTMyOWQwODNlIGxlZ2FjeS10cnVuaworMzY4NjEgNGJmNjg1NGRiNjU2ZWQ5ODBjMzM1ZmRmZThkMzc4ZmFhNTY3ZDM4MSBsZWdhY3ktdHJ1bmsKKzM2ODYyIDRmZDU5NjUxZmUzZjlhNjI2YzllYWJlMjE4NTZlMmVjODc5NWU2NjcgbGVnYWN5LXRydW5rCiszNjg2MyAzOTZkMDExZjgzNDhiYTY3YTEyYjU5ZTU0MmZlMTBhYTBjZGI3OThkIGxlZ2FjeS10cnVuaworMzY4NjQgYjVkY2ZlN2E0MTU5NjBhYjBmYjNjMzJlMDVlZjc5ODkyN2JkZWY5OCBsZWdhY3ktdHJ1bmsKKzM2ODY1IDg2N2ZlZjJiNTA2MGFjODIwMWM5MTZkOGJiOWYwZTYzM2RhYmE3NjQgbGVnYWN5LXRydW5rCiszNjg2NiBmYTNkMDFmMGZjNDQyMTUyZDUyYjQwNmY3OWVjN2YxNDBiNDQ1MmNlIGxlZ2FjeS10cnVuaworMzY4NjcgOGQ3MDdkNDljYjliYzdmOGJkNmQ5NzYwYTQzZGNhN2VjZTk1NDBiMCBsZWdhY3ktdHJ1bmsKKzM2ODY4IDlmYjJlMzBmMjZiZWU1ZWUxZTg1NjE2NmZhZGIyODYzNGNiOGU0ODMgbGVnYWN5LXRydW5rCiszNjg2OSAzNjdjZTUxNmFkMDU0YmQ4ZWU3MjgwNGFiMGY0YTgwYTQwNjY0ZDkxIGxlZ2FjeS10cnVuaworMzY4NzAgNDhjYjRlZDQ5NGE2NTgxMDIxMmEzOTU1NzE5ZGMyNmQzOTM3YjAyMiBsZWdhY3ktdHJ1bmsKKzM2ODcxIDhmNmQyMDVkNTMxYmM5N2VjY2MwZGYyZTFjODMxOWUxZmEwOWQ1Y2EgbGVnYWN5LXRydW5rCiszNjg3MiBmZjE3NjI0YjI2NDI5MjYxOWYyNDBkMmY4MjEzYjg5YTVjZDc3MTFlIGxlZ2FjeS10cnVuaworMzY4NzMgYjBlMGE1Mzg3MGI2ZjlmODA5NzAyN2Y0MTRmNzIyNjU1YWZkZDJlYiBsZWdhY3ktdHJ1bmsKKzM2ODc0IDhjYThmZWJjMGEwZDc1MDA5MGM0M2I5ZTMzNmVkM2MxMTdjNGVlNTYgbGVnYWN5LXRydW5rCiszNjg3NSAwYmViNzU2OTY1ZGY5Y2Q0NjU3Y2QyZTkzZTBjZTMwYTA5MWQzMTUxIGxlZ2FjeS10cnVuaworMzY4NzYgZTViOWU4NzJhN2QzYmEyODU0MjY5ODFlZDExYWQzMGM1NjZhNWQ2NCByZWxlYXNlMjMtYnJhbmNoCiszNjg3NyA2YWEzMWQ3NWM0Zjk5MGQ5NWI4ZTZkNWNjZTZjYTJmN2Q0OGM1N2E3IGxlZ2FjeS10cnVuaworMzY4NzggNWM5NDBmOThlNDY1NTljOTIyZWI4YTE1ZWJiY2RmMjBkMTFkZGNjZCBsZWdhY3ktdHJ1bmsKKzM2ODc5IGFiOTNhZmY0YzkwYTg0YmYwYzAxNTMwOTk0NDVlMmZiNDMwMDQ1ZjggbGVnYWN5LXRydW5rCiszNjg4MCAxZjM1OGE2YjRiYzMzNmU1NzA0NTE0YjI4MjdlYTE4NTliYjVkMmYzIHJlbGVhc2UyMy1icmFuY2gKKzM2ODgxIDIwNGQyOWFjYmEyODAxMDEwYWZmYTdmMzhiZDYxYTNhZGE4ZjIxNjMgbGVnYWN5LXRydW5rCiszNjg4MiA1MjE4YmZmNTY0NDk0ZjZmMTBhNWIyYWQyMzE2Mjk0YzVhZDI0NTA5IGxlZ2FjeS10cnVuaworMzY4ODMgYWQ4MTgzMzhmOGMzMzA2NTY5Y2JjNjM2NjkyNGZkNjcxNzNmMWMxNyBsZWdhY3ktdHJ1bmsKKzM2ODg0IDUzMGMwMmI4M2VlYTVhZDE2NWI2YzhjODQwNjYwMmYxYWM2MTNjYjMgbGVnYWN5LXRydW5rCiszNjg4NSAyYzkzZmNlZWU0MmQxM2RhZjA1NGU2NmY3NDBmYjA2NjA4NWM4ZmEzIGxlZ2FjeS10cnVuaworMzY4ODYgNGY1ODhmNTdhOTNiMDM1YWQwM2I4ZDA0NjA4MzlmZWRjYjdmYTU4NyBsZWdhY3ktdHJ1bmsKKzM2ODg3IDg4OTdlNzdjZDc5YTg0MWJmZTc3NWM1NzFjMTZkMjBjNTUwOGFmZmYgbGVnYWN5LXRydW5rCiszNjg4OCA5NDY0NDE1YTFmODk0OTkxOTkyNTdkOTA3OTQwNTMzMjY5YmIzNzhlIGxlZ2FjeS10cnVuaworMzY4ODkgNDliODA4MzIwM2U2YmJjMWY5Nzk2MTFjODE3MzRjM2RmZTE1YjhiYSBsZWdhY3ktdHJ1bmsKKzM2ODkwIDlkZGZhNzRjYjI1MGY0OTZmODE0MzJhYTc1ZDlmNDk1NDAzNzBlNDkgbGVnYWN5LXRydW5rCiszNjg5MSA4NTAwMmNmNGUyM2JmNTBkOGE4MWVkNTdhOTU2YTNmZTE1NjM2Y2FjIGxlZ2FjeS10cnVuaworMzY4OTIgMmU3Yjc4MDMyNzAyYzdiNmJhNmQ1NjdlZDE4N2VlZjc4MTE5MjhjOCBsZWdhY3ktdHJ1bmsKKzM2ODkzIDg2MDdhYzJmODFjODM5MjBkZDQyYTQ5ZDA3Y2MyMjRlNGYzYjM3OTcgbGVnYWN5LXRydW5rCiszNjg5NCAyNjc1MmRmOTM5MTM5MDMzZmFiNmMzODczYjBjNDllNWY2ZGI3NTJjIGxlZ2FjeS10cnVuaworMzY4OTUgMTY2MGE2OGZhNmE0MDdhNzNkYzdjYWM3OTE2YzliYzFlZWIzZDJkMCBsZWdhY3ktdHJ1bmsKKzM2ODk2IDdjM2Q1Njk1MjJjNDkyYWVmN2UzOTkzYjU1NDk4NTkxOGUxMmI2N2IgbGVnYWN5LXRydW5rCiszNjg5NyBiNjY5YTYwOTdiYTg5YzgyNmQ0MGIwM2FjNjFlODExYmNhNDM0ODQ3IGxlZ2FjeS10cnVuaworMzY4OTggZWUzYWFhNzkxODQyOTJkODAyZjViZGU5NzUxMTc2ZmM1NjA4NjEzZiBsZWdhY3ktdHJ1bmsKKzM2ODk5IGY2YjJmMTkyZTAzYjUzZmIzMzhiMTU0NjI5NGNhMjkzYTE1Y2FmMjAgcmVsZWFzZTIzLWJyYW5jaAorMzY5MDAgY2UyYTE5NjIwM2M1ZWNlOTI3YmVjZjA0ZTI5MThlOGU1NzU0NzlmMiBsZWdhY3ktdHJ1bmsKKzM2OTAxIDIzM2MyMjM4NThmNzdiYmFjNTJkZGI1ODU5MWNiNTc0NGQ1ZjI1NWEgbGVnYWN5LXRydW5rCiszNjkwMiBmZWUyMDM4YjhmYTlkYzgyYjA2NmQyM2UzYjAzMzQ0N2YzMzNiMjZmIGxlZ2FjeS10cnVuaworMzY5MDMgNDIwNDg4NDA4ZTBlM2Q2NDMzYzdkMDk1MzQzNDI4MWU0NTIyODQzNSBsZWdhY3ktdHJ1bmsKKzM2OTA0IDVhNGQ3N2I2ZWZhNjVlYThhZTE4Njc3YWIyNjM1Mjc3Mjk3ZWYwM2IgbGVnYWN5LXRydW5rCiszNjkwNSAzMDQ1ZjRmMzRlZjI0N2JkNTQzOGYyMGEwYTFhNWIxNDA3YTkxNTVlIGxlZ2FjeS10cnVuaworMzY5MDYgMTdmYzg4YTFiODczNTc4NGM0MmNjM2RkZDMwYjQ0NWJmOWU0OWY5MSBsZWdhY3ktdHJ1bmsKKzM2OTA3IDFkYmQwZjM0NWE3ODg2MGM0OWE2Mjc4MzY2N2YzNDg2NjJlMWM2NjQgbGVnYWN5LXRydW5rCiszNjkwOCAyNzQ5MzM0ZDcxYTQ3MTQzZTAxNTU3NzU3OTIwZTdmOWFlZDhiNjgzIGxlZ2FjeS10cnVuaworMzY5MDkgMTYzNjIxNTE3Yjk4MjU0Y2E4NTU4ZWM5OWVjNjM0NmVkNzNlMGRhOCBsZWdhY3ktdHJ1bmsKKzM2OTEwIDY3ZDI1MjE3YmM3ZjBjNDc0MjFjM2NhZmE1ODI5YjMwMjkxYmJhYjkgbGVnYWN5LXRydW5rCiszNjkxMSBjODFlZDA3OTU3NmYyYTVlN2U3MWM0NTdiMWFlODI5ZWNlZWQ5N2IzIGxlZ2FjeS10cnVuaworMzY5MTIgYzM0ODdlZjNhNjljNGQyOGEwMWRhNWUxZDcwNmYzYzFjZTJhZTc2MCBsZWdhY3ktdHJ1bmsKKzM2OTEzIGQwZWIwOThiZTI2NDhmMjU3NzZiYWM5Y2U3MWM4YzUwMTIyNzA4NTggbGVnYWN5LXRydW5rCiszNjkxNCBjNDc4YTcxYzIzODQwNDJiODJjN2I3N2JmY2M0NDRhYjc5NTgyZmMwIGxlZ2FjeS10cnVuaworMzY5MTUgNDU1NjY3MTQ2ZDRiOTllY2I1YzQ1YzQ4ZTNlYTFhMjJiMWIzYjNjYyBsZWdhY3ktdHJ1bmsKKzM2OTE2IDk4NTM3NWFjYTk3MDczMTBmMDc1NDYyNWZlZTFjZDRlOGI5M2E3M2YgbGVnYWN5LXRydW5rCiszNjkxNyAxYWYzYWQ0OWQwNmZlMGUyMjExYjM2ZjNjMTAwZmU3NWE0N2JiNzFjIGxlZ2FjeS10cnVuaworMzY5MTggMjdhZGEyNTUwOWZmMjYyNjhjZjE4NWI5MTViYzc3MjZkM2Q5ODBmZiBsZWdhY3ktdHJ1bmsKKzM2OTE5IGZiZWEyYmUzNTU2MjhiZTIzZjQ0YTZjNzJkN2MwNWQwMWQ2MzIzYmQgbGVnYWN5LXRydW5rCiszNjkyMCAyOWZhOWQ2YWZlYTAxZmQ4ZmFhNzBiNWFlNTBlNDJlOWNmYjNjNGM1IGxlZ2FjeS10cnVuaworMzY5MjEgZjBhNmVmM2E4NzRlZjhkYzVhOGRjOTNmMzMwNThmYjUzZjk2NTk1NSBsZWdhY3ktdHJ1bmsKKzM2OTIyIDVlNjlmN2M4MGVmNDI3MzM0Mzg1ZjY1MTJlZDRjNzY5YzlhYTllMWEgbGVnYWN5LXRydW5rCiszNjkyMyA2ZjM4ZTNiNjRlZjQ3MjZlZmU5ZDRlYzVjNjBmYzE1OTA5YzBmZGViIGxlZ2FjeS10cnVuaworMzY5MjQgMzFjY2VhOWU5OGE3NDZmYTBiYTkxYTk3OTFmMjQ3ZGYxODQyZjk4MCBsZWdhY3ktdHJ1bmsKKzM2OTI1IGVlNDNjYTRhMmMyMzhlNDFlNzMyMzMwY2RkOTQ2Yjk0YzFkMWZjNDEgbGVnYWN5LXRydW5rCiszNjkyNiA3NjRkMjhmYzNkMzY5OGVhOGZiZmMwMTM5YTU3ZmFhNmY0YjJmN2YyIGxlZ2FjeS10cnVuaworMzY5MjcgOTBkYTcwOTg2NDA3MjM5NzRjOGFiODhjMGVjOWViOTExMWExZTc2NCBsZWdhY3ktdHJ1bmsKKzM2OTI4IDAzMDQzYjI4OGIyODc1ODYwMDJlMDdkODFiNTlkMDY3ZmMzYmNjODUgbGVnYWN5LXRydW5rCiszNjkyOSA0NTMyOWQ5ZmRiOGQ1NDU0NzFlNDBhNzExODM3Zjg2Yzk5MjdhNDc0IGxlZ2FjeS10cnVuaworMzY5MzAgY2RhMDQ1NWJkMGEwMzE4OTAwNjk5NDJmZGI4NzQwYmQxMjkzNDgxOSBsZWdhY3ktdHJ1bmsKKzM2OTMxIDJhOGMzNzU4YzRhMTkwNmJlMzFkYTNhZWQ5MjUzZjdmYzE5MTkyYmQgbGVnYWN5LXRydW5rCiszNjkzMiA0NTFkZDQ5ZGY1MzEwOWNkNjJhYmJkOTFhYmIwY2QxNjZiMzRmMGI0IGxlZ2FjeS10cnVuaworMzY5MzMgODIxYzU1N2NhNjEyNGI1ZmIyMDU3ZGMzNmYzYjg5ZjhmOWZmYWNlZiBsZWdhY3ktdHJ1bmsKKzM2OTM0IDRlNmY0ZTllYzliM2QzYTU2NmRhZTg5NGNmNDA3MDNlNDEzYjBiZjMgbGVnYWN5LXRydW5rCiszNjkzNSAwNGQ5ZmRlMTEzMzA5NDhlMmEzZDBjYjdiZTBlNTY3MTYyZTE0ZTdjIGxlZ2FjeS10cnVuaworMzY5MzYgNGRkMTgxNWI0NGVmYWFmOTg1NjdlNTNkYzU3Zjc2ZDRiZTIxNDVjMCBsZWdhY3ktdHJ1bmsKKzM2OTM3IGJmY2M0ZTM5ZmM0NTJiMzUzMjY2NzYzNDZhYzgxMWQxZTdkMzc0NWQgbGVnYWN5LXRydW5rCiszNjkzOCA5ODFmZmY3MzYzYjkyZThlNzRkZjE3OTU0YWYyMjE2OWRjYjAxZDgwIGxlZ2FjeS10cnVuaworMzY5MzkgMDFjYzVlM2Y2Mzc1MjIxYTFiN2M5NzQyMjBhYjNkYmU4ZDM2MWY4YSBsZWdhY3ktdHJ1bmsKKzM2OTQwIDgzNmU3NzI2NmY5Nzc5MTMxNDExMGYzYjQ3MGE3N2ZlZTRhM2UwMjIgbGVnYWN5LXRydW5rCiszNjk0MSA3NDNhYmFjOWY5ZmUzM2VjYmNlZDk3MzljMTVjMGZmOWQ3ZDdmZjMxIGxlZ2FjeS10cnVuaworMzY5NDIgZDA3NWNiYTg1MWZkODZmZDk2MDk2Mzc5YTI3ODY4YzYzMzdkMTZlMSBsZWdhY3ktdHJ1bmsKKzM2OTQzIDA1OGU4NTFlNzkzZWFmYmIxMTQ4MmI5NThhYzMxOGQ2MWRkNzAyMGYgbGVnYWN5LXRydW5rCiszNjk0NCBhNzkyODcyNmRkOGY1YmQ0NGU4NGU5YjQ1ZWMzZDA2Zjc2ZjJkOTJjIGxlZ2FjeS10cnVuaworMzY5NDUgNWVhZTRjZTEwNWZjZjRjNTY0OWY5N2RiOWRmMGFiOGVmMzQ0MmY4ZSBsZWdhY3ktdHJ1bmsKKzM2OTQ2IDI0MGVhZmFlM2VhNzRkYTczNTRhOWY1ZTJkZmRjMThkOGNjYjM5MWUgbGVnYWN5LXRydW5rCiszNjk0NyA1ZjMzNTA3Y2I1NTk4MjM3MWVmYTM5MjJlMjhhZjg2MzNhNjdkZThjIHJlbGVhc2UyMy1tYWludAorMzY5NDggYWJlY2JkNjZhNjI4MGM3ZDk5Y2RlM2NhNTE5MzdiOGM1MTY4ZGYyMSBsZWdhY3ktdHJ1bmsKKzM2OTQ5IDQ0NDU3Y2I4Zjk3MDE0OTcyZDkzM2M0OTQwODI4NTRlNzU1ODkwOGEgbGVnYWN5LXRydW5rCiszNjk1MCBhZmQ1NDEyNmU5YTE5MGZhMDQwYWY0ZjRjZWQ2NmFiNTQxNDM1NjY2IGxlZ2FjeS10cnVuaworMzY5NTEgNTM0N2RhMzFmMDc2YzZjZjI3ZDQ0MDFjMGFhY2U5ZWU5MjAwNjYyMSBsZWdhY3ktdHJ1bmsKKzM2OTUyIDk5MzdkMGU2M2NhMzI1ZjQ3ZDBiM2NlMGE2M2UxYjljZTMxY2Q3YzYgbGVnYWN5LXRydW5rCiszNjk1MyA0ZmQxODUwNWZjMzVmZGQ3YjMyZmM2M2U3ZDE3ZjlkZDcyYzFiNzAyIGxlZ2FjeS10cnVuaworMzY5NTQgNGIwYTBmYzFiYWVhMzFkZjkzZWUyNTZkNTBkMTc1YjNlMGY5ZmUwOSBsZWdhY3ktdHJ1bmsKKzM2OTU1IDQ4MTAwYTAxYWM3YzA1M2E0MTc1YTg2MWVkNjdiYTY5M2UyNDI0YTEgcmVsZWFzZTIzLW1haW50CiszNjk1NiBkZmMyNWUxYjk2MDU4MzQ4YzlkMjQ0MzViZTQ3MTZiMTVjNmQ3ZThlIGxlZ2FjeS10cnVuaworMzY5NTcgMjBlOTBlNTA3OTdkZThmNWQwNjRhYzdhMmU5MjNkN2Q4YTAxODNlZSByZWxlYXNlMjMtbWFpbnQKKzM2OTU4IGIxNjZhZTJmNzczMjE0MzdlOGZkNTM2Zjk1YjczMjNiMmRmNjc5MmEgcmVsZWFzZTIzLW1haW50CiszNjk1OSBkZGQyNGQ3MmFkNmFhYzU2OWY4MTA2Nzc4ZTc0NWFiMWRiOTgyMDhlIGxlZ2FjeS10cnVuaworMzY5NjAgMDFhMzg1NWE0YjAzZTgyOTdjZGU5MzQwOWIxMGU5MTQ4MmFjODQ2NyByZWxlYXNlMjMtbWFpbnQKKzM2OTYxIGM3MGMzM2Y2OWE0NGM5NDYzMDc1YWQ2YzQ1OGViY2Q1ZDQyMjNhMzIgbGVnYWN5LXRydW5rCiszNjk2MiAzYjVkMzdmN2NiNWFkMWU3N2ZmMjAwOGM2ZGJkMjhlMzE0ODBkNDAxIGxlZ2FjeS10cnVuaworMzY5NjMgY2UwMTZkMGVjNzAxNTUzNGEyNTBkYzQ4NTIxMGRmMTdlMjc5YzMyYyBsZWdhY3ktdHJ1bmsKKzM2OTY0IDM1Njg4NzQxMGJkZTc0Yjk5ODc1MWYxMzMzNzYyMDE5MTQzMDdiOTEgbGVnYWN5LXRydW5rCiszNjk2NSA4MWVmZWMwZTlkMjkzNmJlODZjYzJjZjBjMzI5NTVhY2JjZjhmMDk3IGxlZ2FjeS10cnVuaworMzY5NjYgZjI3OTM1YjQ2OTg1YWM2MWUwYmQ1NjkzMDAzMzcxNGU3MjYyZmViYyBsZWdhY3ktdHJ1bmsKKzM2OTY3IDZiOGU0OTk2ODdkNjI1ODZlYTc1YjdhYzI2OGRlNDg5NGM0NDVjNjggbGVnYWN5LXRydW5rCiszNjk2OCBmNDU1YmJlN2VhN2UyYjE2ZDQ3OTYxNTExZTZiNjQwNTUwNzBjNjA2IGxlZ2FjeS10cnVuaworMzY5NjkgZTVmNmMzZjUwODQ2NjUzY2EyOTNiNGJjYTcyMWZkOTEyNmYzMWUzZCBsZWdhY3ktdHJ1bmsKKzM2OTcwIGJhYmQxMWVlY2Q4ODNhY2ViY2FlMjc0MTc0YzUzNGFjYzllNTU4NTQgbGVnYWN5LXRydW5rCiszNjk3MSBjOWFjOWJlOTVhZjllMmU4YTliOGIwZjU2Nzk1NWYyNmI1ODA5MTJlIGxlZ2FjeS10cnVuaworMzY5NzIgZGRjMDMwNGMxNTFmZTRmNmVlMTFkZTIxZjNhZmQ2NTBiNTJhMTE1YiBsZWdhY3ktdHJ1bmsKKzM2OTczIDQ1MGY1ZTIxZWFjOGRjMjRhMGRjYTI2OWI5ZjU2Nzc3MDRmYzU5ZDEgbGVnYWN5LXRydW5rCiszNjk3NCAwYTBjMjQ3ZjA1ODQ0NTZlMTUxNzQzOTJjZmUzYzg4MmRlZTFiNjhlIGxlZ2FjeS10cnVuaworMzY5NzUgN2RlN2MxOTEwYWM5Y2E0MGU5ZWQ0YTMwMGIxNGU0MWIxNWNhNDhhYSBsZWdhY3ktdHJ1bmsKKzM2OTc2IGE3N2MwMzcyYTFkN2I1MmNkMWMzYjU1NDgyMzIzZWIwZTdjODcxMWMgbGVnYWN5LXRydW5rCiszNjk3NyAyOGU4NzdmZjc0Y2Y3MDY3MzM2Mzg5ZTlhNzhiZjIzZmM2N2UyNmMxIGxlZ2FjeS10cnVuaworMzY5NzggZTRhNzNlZmE0ZDIzNGJlZmUzYzIyMmJhNTU1MjhhYjZmYzg4MWFjYyBsZWdhY3ktdHJ1bmsKKzM2OTc5IGRmZDM4MDNlZTBjMTgxM2Q4YTcwZmJiYjY0MDk0YWJhNTE1N2Y1ZmMgbGVnYWN5LXRydW5rCiszNjk4MCAzYTRlNzNhNWU0MzQ3ZjFkMTVhYTE3NTRmYzhkYzk4Y2MyNmUzMGU1IGxlZ2FjeS10cnVuaworMzY5ODEgYmY2OWZjM2JkMDY3ZTRlNWVjYzFjMjhmMDdhZTdhYzdhNjE0NGUyMSBsZWdhY3ktdHJ1bmsKKzM2OTgyIGY2YWM0MTdiNWViMDhiNzNmMWMwMzgyMDU0MmM5ZTAxYTNlM2RlMzcgbGVnYWN5LXRydW5rCiszNjk4MyAxY2Y5ZGUzYTg1MDNhNDM5Nzg1NzhiMGFkOGU5NjEwMjdmZjViMzE0IGxlZ2FjeS10cnVuaworMzY5ODQgZDdmY2RmOTc3NmM0ZGZhNGI3ZDIzYmZiNjI2ZWI5ZWU3MmZmZGM1ZSBsZWdhY3ktdHJ1bmsKKzM2OTg1IDkyMGY1ZjY0ZjJmMGZjODAzOGEyN2Q0ZTJkYThjMTk2YmJhMzk0NDEgbGVnYWN5LXRydW5rCiszNjk4NiAwMTQwNzg1YmVmZGIzNmQwYzFiMDQyZTYzNGVlZTRhNTU4MjkxNTRlIGxlZ2FjeS10cnVuaworMzY5ODcgNmMxNmFiNDIxNGFmOGU4ZTUwYTgwMzM3MGQ5YmQ0ZmM4ZjJiMTdkNyBsZWdhY3ktdHJ1bmsKKzM2OTg4IGRjNjQ3ZGY1MzkyMTdhNTk1Y2VjYjE5MDUzOWNmZDYyY2I4OTcyYTMgbGVnYWN5LXRydW5rCiszNjk4OSAzYTdmODJlNjBjYjIyOTI0Mjg1MDI3MTRhYjA3N2Y4MjFmOWNkYzcyIGxlZ2FjeS10cnVuaworMzY5OTAgY2NkMDJiZDM0NGIzOGIwZTllMjYyNDIzNzc2OGVhMTJiMjhiMTdlZSBsZWdhY3ktdHJ1bmsKKzM2OTkxIGVkZGIzN2Q3MDJiNWUwNTIyMzYwNmVlMWZjNDI4NTU4M2VjZmY3ZDkgbGVnYWN5LXRydW5rCiszNjk5MiBjMjM4NDYwMWEyNDExMTdkMWU3N2ZkNTQ4MmYzZjQwNDBiYTg0MTQ5IGxlZ2FjeS10cnVuaworMzY5OTMgYWU5YjQ3YThkNjQ4NDg1NmYwYzhkZTEzMGM0NDdiMWY0MjM1ZWE2ZiBsZWdhY3ktdHJ1bmsKKzM2OTk0IDhhMjgyNzk3ODk1ZjNmMTI1ZDM1OTVlZDU0ODM0ZjE5YmE2MDBjODcgbGVnYWN5LXRydW5rCiszNjk5NSA4NDZiYTI5NzJkN2MxYmRkNGM0ZGE2Mzg1MjEyNDUwMzRmYTZjODA4IGxlZ2FjeS10cnVuaworMzY5OTYgZTQ5OTJlOTMwY2IyZTU5NjE4MDFhNDQxOTA0NjFiZGVjZGQ4MjI3YiBsZWdhY3ktdHJ1bmsKKzM2OTk3IDNkYjlhOTMyNzc1ZTYwYTZhZjdkYzI3M2Q0NmM1Y2VmZjIyMGI4OGUgbGVnYWN5LXRydW5rCiszNjk5OCBmYzE2MzdmYzQ1ODg5ZmJjOTJkNzUyMzYzMDYzYjFiMzU2NmJmYjY5IGxlZ2FjeS10cnVuaworMzY5OTkgNzM3NWFlNWY5ZGM0ZDVmNTllZGYwOTc0N2U1YzUxYjRhMjZlYWVmMyBsZWdhY3ktdHJ1bmsKKzM3MDAwIDFkOTgzNTA4MmJlNWFlY2E2YTVmN2VjMjY2MDA3NTljMjRhNGM1ZjIgbGVnYWN5LXRydW5rCiszNzAwMSBhZDI2OGE4NDA4ZjRmNmJlYjU3MmJlZDMwZjU5MmFiZjVkZWJmNWMwIGxlZ2FjeS10cnVuaworMzcwMDIgYTM1ZTRkMzVkMTQyNTEyY2QyOGQ2Mjg1MTQ0ZjQ2MTRmMGE5YmE5YSByZWxlYXNlMjMtbWFpbnQKKzM3MDAzIDNiZWI1NGY5ZDJiYmU4ODI3ZmVhNzZjZDRkYWI2NjY5ZTRkYTRiYzcgbGVnYWN5LXRydW5rCiszNzAwNCAyODkzZGM5YjRlZjRkYWQwNDUyOTVmMTU2ODg1YTZlYjM3MzJkMjBjIGxlZ2FjeS10cnVuaworMzcwMDUgMjJmYTk2YzQxM2FlYzNhMTU4NzhhNjZlMGM0ZDQwMDUxOTM0YzlkNiBsZWdhY3ktdHJ1bmsKKzM3MDA2IDk1MWNjZDhmMzQyODg2ZWJiNjBhYzgyYjE4MDg5YTI0MmJkNTRiNDMgbGVnYWN5LXRydW5rCiszNzAwNyA4Nzc5YzhjNGQxODFhZjQ3NTJjYjkxZDgxNWI3MjAwNDk0MTkwNGYwIGxlZ2FjeS10cnVuaworMzcwMDggOWM4NDFjYWEwZTgxNGFlNmY0OTY1ZGI1Yzk0ZDk4MmQ1ZmJjZDRjNCBsZWdhY3ktdHJ1bmsKKzM3MDA5IDI4YTIwNWVjYjRkZDgwNTY0NzYyMzM0NjE3ZjFmZmJmYmQwZGJkMWIgbGVnYWN5LXRydW5rCiszNzAxMCA4ZTg3YTY4MzQ5NDJlNGVmYTc2MTJiMTljNTlhMmQ5MWVhOWQzMTk0IGxlZ2FjeS10cnVuaworMzcwMTEgOGMwYjA4YjI0NzdiZmQzYTg1MWM2NWJiMzc5NDhlZGQ5OTk4ODUyYyByZWxlYXNlMjMtbWFpbnQKKzM3MDEyIDYxMmRlMjY4ZWQ0YmUwYmUzM2I1NDkzZTM5NjllYTlhMDJmNTU2MmUgcmVsZWFzZTIzLW1haW50CiszNzAxMyBmZDkyZWE4YjViNTFiZDFhNjQ2ZWU0OTczODkxZTRiOGM2MWY3Y2FmIHJlbGVhc2UyMy1tYWludAorMzcwMTQgN2FhZTA2YjFmMWRkY2IzNjc5YjQxNzViMWQ4M2EzMjIxM2JhNThlYSBsZWdhY3ktdHJ1bmsKKzM3MDE1IGZmOWQ1YTcyZDU0YjcyMDgwMGY4OGM1NDg4ZTcwMGQyYWRlZTQ0NTEgbGVnYWN5LXRydW5rCiszNzAxNiBiNTVkYmNjZWNjNzE1MDY2NjAxZGVjM2FlZDEzMTExMzkzNGE1ZTFjIGxlZ2FjeS10cnVuaworMzcwMTcgNGI1YjZlODYxZmNmNmViM2I5ODEyNmFmYjdjOGY5NmNiM2JhY2IxZSBsZWdhY3ktdHJ1bmsKKzM3MDE4IDkzMzU0OGZlN2I5N2IwYTJiNjM3MWFlZTdjZjI3M2Q5MjNhMjA1ZTcgbGVnYWN5LXRydW5rCiszNzAxOSBhMzYyMDE2ZTk1MGQ1MGM1MmM4ZjllNDQ3ODJmMWRmOTI5ZTExZjYwIGxlZ2FjeS10cnVuaworMzcwMjAgMmI4YmRiMDY5ZTBhZWJkZDZmYzA5MzUyZTg3MWZlMGE3OGE1MTU0OSBsZWdhY3ktdHJ1bmsKKzM3MDIxIGIyZjQyN2RiMjI4YjE0NmY1MjFlOGVkYWY1ODQ5YTI5M2UyODg3NTIgbGVnYWN5LXRydW5rCiszNzAyMiAzZjlkMjFlYzUwNGI0ZmJmZGE3MGZkMTQ5MDA2YzY3M2I1YWQ4NmZjIGxlZ2FjeS10cnVuaworMzcwMjMgYTA1OTMwMWE0Y2RlM2Q0MTFlYmYyZDY3ODNhMjIyNGYwOWFiZGI3NiBsZWdhY3ktdHJ1bmsKKzM3MDI0IGFlNGNiMjk0NzQwMGViMmFmMzljM2JlOTRjZDRkYjJmYzVhZTc5MjAgbGVnYWN5LXRydW5rCiszNzAyNSBiZmIyOTFmODU4NzE1YTc3ZWUwYTI3ZTVhMmQ4MWI0OTgwYzQ3MzEwIGxlZ2FjeS10cnVuaworMzcwMjYgMjA4ZmU3MTljNzQ5YjUxZWIyN2Y4OGIzYjljMGZmNWZiYTAwMzA4NyBsZWdhY3ktdHJ1bmsKKzM3MDI3IDZmMDliNTIwYzAxYzU5MGZjOGExMDMwZDc3ODcyNzRmYjJiN2IxYjUgbGVnYWN5LXRydW5rCiszNzAyOCAxZDZlZWZiY2JiMzc0N2UwZDJiOTA5YmQ3MGVjMDc5M2NhNmUyMTllIGxlZ2FjeS10cnVuaworMzcwMjkgMzU3YjI0YzM0NmJiMGQ2NjhlYWY2ZTU2ZGUxMDRmOTRlZjc0OWUyMCBsZWdhY3ktdHJ1bmsKKzM3MDMwIDJlOGQyYmRkMzNkZWNkYjY4ZTg0Yjk1OGUzZjU3MDdiMDk5NjhmM2IgbGVnYWN5LXRydW5rCiszNzAzMSA5NmJmNDAyNDg4YzcwYTYxNTMwZDRmM2E4M2M1YmY4NTFjMjNiYjJhIGxlZ2FjeS10cnVuaworMzcwMzIgYmVkNDVhNmI5OTNiYTk0YWIzZjE3OTlkY2Q4ODYwNzYzZWZmOWVlYyBsZWdhY3ktdHJ1bmsKKzM3MDMzIDU3NzhmNjMzMTMzNGNlMzZjM2Q4ZmVlMmRjMzJlZWIzNWQ3YjkzNjIgbGVnYWN5LXRydW5rCiszNzAzNCBhNTc2OWU4ZjFjNmZkZTc1MmJlMDg0NWIwZTgwNmI3NDdkYzkzMDY1IGxlZ2FjeS10cnVuaworMzcwMzUgNGNkNzdkZTU1MWU3NDViMWFlMTBjZTAwNjZmYmMyODVhNjNlZDY1NyBsZWdhY3ktdHJ1bmsKKzM3MDM2IDFmOTUyMjIzOGM4NjMyMTdiMTVhNDljZjZmMDkyYWNkYzVhZWI1OGQgbGVnYWN5LXRydW5rCiszNzAzNyBlMDVlOWQwNTgzMGQwOTFjM2Y4Zjk0MzFmM2NhNDdmNmM5M2UyZjkyIGxlZ2FjeS10cnVuaworMzcwMzggZjZmYTY0OWZjNGFmNzRkM2ZkM2EzNjc1ZDJmMjBmMWNhODJlY2Q0OSBsZWdhY3ktdHJ1bmsKKzM3MDM5IGE2YzgwMTcwZmM1MzgyZjkzOTI4MTIyOGI2OGM0MDk5YjY5ZDVmY2YgcmVsZWFzZTIzLW1haW50CiszNzA0MCA0NTM2YjAzMTUxNTc3Yjk1NGVmY2ExMTBjMjdhY2E4MWMzMjAxMTM0IGxlZ2FjeS10cnVuaworMzcwNDEgMTc5NzNmMmUzZTBlODk3Yzc0OWRiYjI5MWM5ZTU2NDNmMTljODdkNyBsZWdhY3ktdHJ1bmsKKzM3MDQyIDY2NjU1N2MyOTI0ZGZjZmIxNmQyYjVhYzRhM2Y0YTEzMTJhYzNhYTEgcmVsZWFzZTIzLW1haW50CiszNzA0MyBhMjUxNGUyZDFjNzRlMDZkOTdiNmY3NTcxNWEwMjcyMzIzMDFmZDk0IGxlZ2FjeS10cnVuaworMzcwNDQgYWFkMTE4NjQzNTk4OGIyYWI5Y2I2ZGU4ZTk5MGY4YzYwMzFiNzRmMiBsZWdhY3ktdHJ1bmsKKzM3MDQ1IDBkMTYyN2M0NDc2OTBjYWZkM2JiZTA2ZTMxZDg3MWEzZWUyNTFlODcgbGVnYWN5LXRydW5rCiszNzA0NiAyOTY1YWU5NGEyM2ZlMzQxY2I3YzBkOTVlODJlN2NmNWE3NTVlNDE2IGxlZ2FjeS10cnVuaworMzcwNDcgNDQwMWRlYTcyNGYwYWZjMTY1MjZhZmUwMTFjNjQ1NzZhZWI1MDc3ZCBsZWdhY3ktdHJ1bmsKKzM3MDQ4IDhlOTE3YjllNzBlN2Q3YzgxZTNkOTI1Y2Y4ZDUzMTAxYTlkYTNlNDAgbGVnYWN5LXRydW5rCiszNzA0OSBmZWI1MjQ3YmEwYzgwYjIyNjgyZTU4YTcyYTg3ZTI3YTM3YTYyZjI5IGxlZ2FjeS10cnVuaworMzcwNTAgNGM3OGZjYjYwZGYzMDkxYzE4ODA0NjVjZDc0NjE2MGM2MjE5Nzc3ZiBsZWdhY3ktdHJ1bmsKKzM3MDUxIDM1YmI2MmFjNTVmZWRhNGMyYzU3ZTNmZWUyNjI0MzM1MDVjNTYyYWQgbGVnYWN5LXRydW5rCiszNzA1MiAwZmVjY2YxOWIxNmQ1YzRjMGRhNDE4MzZjNzNmMzQyYWQ5ZTRkZmQ5IGxlZ2FjeS10cnVuaworMzcwNTMgZGU4MDRlZGY4YmNkNTdlZTlkMDNlMjRjMTUyMmE5MzI4NDEwM2EwMSBsZWdhY3ktdHJ1bmsKKzM3MDU0IGIwZjI2ODFiY2Y3ZmE3NDBkZDE1Y2RjYjc1YWViOTIxYjRmZGQwYjkgbGVnYWN5LXRydW5rCiszNzA1NSBlZGI4NTNlZDZjNzhiMzUwNTI2NjkzOGMxYmRkYTJmNDcyMWIxMTJlIGxlZ2FjeS10cnVuaworMzcwNTYgYmJlNjg0NzRlNTIyMGQ3NmY5ZDNjZDUzNzk3MjA1NmZlNWNhODUzMiBsZWdhY3ktdHJ1bmsKKzM3MDU3IGQyODgzYzQyYzIwNGMwNGYyNDY3ZmVmODdkODkwMTJlY2U3ZDBkMTggbGVnYWN5LXRydW5rCiszNzA1OCAwOTZkZTQ1ODI3YzdiNjc0YmZlZmU2ZTM1MjdjYjAyN2QwMzk3NTZlIGxlZ2FjeS10cnVuaworMzcwNTkgN2Y1N2IzYzdlYmJmZmNiNWU4ZThkZTQxM2JhM2VlZmFlYTAwOGU4ZiBsZWdhY3ktdHJ1bmsKKzM3MDYwIDkzNGE1ZGI5Yjk1YjYxMjI5ZmQ4ZmE3YWI4YjJiNGRhMGI2YjliYTEgbGVnYWN5LXRydW5rCiszNzA2MSA3ZGE5MjAxYmM4YjUzMmM2ZGMzNjk5N2EyNjY3MjE1ZGE1ZTM4OGNjIGxlZ2FjeS10cnVuaworMzcwNjIgMDE3MjI3ZTQ3YzNkZWYzMWI4YzAxODE2NmQ4ZjJhY2Y3ZjMyY2FlOSBsZWdhY3ktdHJ1bmsKKzM3MDYzIGVhNDg3NGUwMjFlODBlYWNlNjRmODEyZmRlYTg3NTM5ZmIxYzQ0NTIgbGVnYWN5LXRydW5rCiszNzA2NCAyNjU2MzIwNDY2MGNiY2I4ZTI0NDQ5M2Q3OWJmMDJjZGVmMGQzMGM3IGxlZ2FjeS10cnVuaworMzcwNjUgMzQ3ZDcxYzBlMDE4ZGQxNzkxNTA1MzRhMzdiMDgzZjdjMDM5MzNjMyBsZWdhY3ktdHJ1bmsKKzM3MDY2IDFkMGY0YzAzNTdkMDA0ZjI5ZWZiMTViNjVhODZmZWU4YjQxMThhNmUgbGVnYWN5LXRydW5rCiszNzA2NyBlYWIyMWZiZjlhNzBmOTcwZGQ5ZDBiMWQwNjQ4MzhmZDgwMTQ5YTEwIGxlZ2FjeS10cnVuaworMzcwNjggYzE4YWNhN2U4MWNiNWY3Nzc2OGVhOWM0YjRlOGYxZjY1NTIxMWMwNSBsZWdhY3ktdHJ1bmsKKzM3MDY5IDkwNTY5YWUzZTNmM2YxY2RlMTBkN2FmZDU3ZDg3YWZjMzlmNDI1YTEgbGVnYWN5LXRydW5rCiszNzA3MCA2OTcwMDY4N2UzMGY1MTVhNjQ0YTQyYzA5YTE3MGI2YjE0MTFkZDY3IGxlZ2FjeS10cnVuaworMzcwNzEgYmVkNjJmMzk5ZGFjMGJmNTQ3MWUyNjg5ZWNjMzI4ZWEzZmU5OTg3NyByZWxlYXNlMjMtbWFpbnQKKzM3MDcyIDA0ODY0YzM5YjAwNjMzM2YzMmFjMjQ5ZWExOGUyNzYzODViOTkzNTQgbGVnYWN5LXRydW5rCiszNzA3MyAzNGE4ZDc1ZWRkMmIwM2E1MWE3YjE0MTgxMTg3NDE0ZjZjYjFiNDRhIGxlZ2FjeS10cnVuaworMzcwNzQgMTZkZmYzMGU2NmVjMGU1ZDhjOGI3NzhkYWNkZDBlZTdhZTMwYjA3NyBsZWdhY3ktdHJ1bmsKKzM3MDc1IGM5Yjk5MzA4YjBlOGNiZjkwZjU4NmYwMmM4Y2ExOTE0NTQ2MjI0NDEgbGVnYWN5LXRydW5rCiszNzA3NiA5NDIzMGY2YjVlYmU1MmY2MzJkMTI3MzJkZjU0ZWFkNzA4YjA4YThlIGxlZ2FjeS10cnVuaworMzcwNzcgZGIxYmFmYTliNjU2MTM2Yjg3Y2U3YmMxMzA0MDUxOTM3NDI2ODkzMiBsZWdhY3ktdHJ1bmsKKzM3MDc4IGQ5NzY1ZWI1OWVkZDc4NTVjYjY2NGNkM2MyNDM3MjVhMGYyYTA3YTQgbGVnYWN5LXRydW5rCiszNzA3OSA4ZDc3MTM0YWFiODJmNDA4ZTI2YjhlYTc4MDk2NGVlMzI2Zjk3NDg3IGxlZ2FjeS10cnVuaworMzcwODAgNmI3NDNjYmM0MTcxMGU2MjY0ZThjZmNiNDI0Y2JmOTE1YmYzMzBmZSBsZWdhY3ktdHJ1bmsKKzM3MDgxIDgyNTJlOTg5Y2JiMTViZjQ3NmI3YWE1MmYyZjA1NDRjZmFjYjE4ZTcgbGVnYWN5LXRydW5rCiszNzA4MiAwNjZjNzg5MGNkNjE1NTMwYWFhZDNhYTE5ODU5NWMyM2IxMDYxZGY4IGxlZ2FjeS10cnVuaworMzcwODMgZDg2MWFhODc0NTI1NTg4N2UxYTYzYTgxYzk1ZmNjY2JiNzBmZmU4MiBsZWdhY3ktdHJ1bmsKKzM3MDg0IDMyMzVlNzM5YmRhMTJlZjE4OTc3YzA4Y2JiMTg1MTAzODJmODQyZjMgbGVnYWN5LXRydW5rCiszNzA4NSBhY2Q5YmYyZTNiY2Y1MTU5YmZmZWQ3OTkyNzk0NWZiYmUxZjk1OGYxIGxlZ2FjeS10cnVuaworMzcwODYgZTYzMDRkNjZkOTQ1YjU2OTc5ZDM4N2I4OWE2MTQzNmNiOTk4ZGFiMyByZWxlYXNlMjMtbWFpbnQKKzM3MDg3IDhhYmQzMjJhMDEzYWI2OGNkY2FhNmRlMzEwNGI5M2VhZGIzZjc1MDMgbGVnYWN5LXRydW5rCiszNzA4OCA4NDkzMTA4MGUwNWNjM2Y5OTk4Yjc1NGJjODkyMWVlOTkxNzc4NjEzIGxlZ2FjeS10cnVuaworMzcwODkgNTdhNjZkNzAwYzdjZmJhYTY2YTNiNDdjZGM2ZWRhMmEzYjYwOTg4OSBsZWdhY3ktdHJ1bmsKKzM3MDkwIDBhOGQzOWFjYTk4YzVmZWNjZGY3YzkxNzYxZTc0MDQ3ZjA4MGU0YTEgcmVsZWFzZTIzLW1haW50CiszNzA5MSBhMWNmNGEyOWFjMzAwNzA4N2VhODk4ZmU5OTYyNTZmMTEzODIzMDNkIGxlZ2FjeS10cnVuaworMzcwOTIgNDBiNWFlZTIwYjgzMTcyZWQzNGI0MWE4MTZmYmE3Y2E2MjliMjI5MSBsZWdhY3ktdHJ1bmsKKzM3MDkzIDdmZWMwNjYyY2Y0YWEyZGRmZTRkYjdmYTBhNTQ5OGRhZTdjMDE3NDcgbGVnYWN5LXRydW5rCiszNzA5NCA5YzU3MGFmNTM1NmU3ZTFiNzZkOTFhYWU0MDNiYzAzY2U2MzhhN2NmIGxlZ2FjeS10cnVuaworMzcwOTUgZGVhOThlZWQ4Y2YwYzhhZmYzNjI4NDExN2M1ODMyNDdmODkzZGJhOCBsZWdhY3ktdHJ1bmsKKzM3MDk2IDY5OTc2Y2Y1OTE0OTVmZTg0YWVjYTllNWJmNTY1MjE0ZWZkODQwNDUgbGVnYWN5LXRydW5rCiszNzA5NyA3N2QzNjQyZWI4N2JlN2E4NzM5NmYxNDEzMWJiMjc1OGI3MzA2MzdiIGxlZ2FjeS10cnVuaworMzcwOTggYWIzNDk4MGZmYTE2OTBhOTUzYmYzMjEwZTNiYTczYWY1NWFkZGFjOCBsZWdhY3ktdHJ1bmsKKzM3MDk5IGY5ZjRiMTlkZDc1NWQ5MDFhYjE5NTc2Nzk1NTk3MWNmM2IxNWM0MWIgcmVsZWFzZTIzLW1haW50CiszNzEwMCAyMmI2M2VkMmQ1YjIyNzNmYmU5ZWEwY2IwOTgwNGU3NTg3MWZkMWU4IGxlZ2FjeS10cnVuaworMzcxMDEgMmUwOTY2ZGJkNjc4YjI4ZWE4NWQ5ZjM4ODE4OWQ5MTE5YTM4YTBlYiBsZWdhY3ktdHJ1bmsKKzM3MTAyIGY5OGU1OWYyZjg5ZDA5MWU0MGFlZjU2ZGM0YjYzNTA5ODM2MDczZmQgbGVnYWN5LXRydW5rCiszNzEwMyBmYjk4NjkwNDRiYmE5ZjcyMTc4OWFjZWNmZWRmZThjN2NmMDY0NjQwIGxlZ2FjeS10cnVuaworMzcxMDQgNzE0Mjc5MTU3OTZlZGMxYzMzNTI4ODllMGNiZTVlOGFhNTg5MDlkYiBsZWdhY3ktdHJ1bmsKKzM3MTA1IDJjYWE2ZjE5YTJlNjZjZWNlOGRiMWJiMGE4YWEyOTFiNDQ3NDUzZjggbGVnYWN5LXRydW5rCiszNzEwNiA1NjE3MDIzNTBlMDk4MDdiM2M1MjhjZjliYTAyOTkwYWJiZjU1ODA5IGxlZ2FjeS10cnVuaworMzcxMDcgY2QyYTk1Y2ZjN2ViNDhhYWY1ZmZhNDNmYjM0MDdlZDE3MDU2MDg3ZSBsZWdhY3ktdHJ1bmsKKzM3MTA4IDM5NWJiMzc0NmQxZDRlMDY2NDc4MjU4Zjc1MGI0MGMyNTAyODJiN2EgbGVnYWN5LXRydW5rCiszNzEwOSA4NGFjYzc3YzA2Yjg4OGE4NmZhNDkxYTAwMmVlMTVjYTU0MTA5MDdhIGxlZ2FjeS10cnVuaworMzcxMTAgMDM0NDAyNzIwMjhjNzk3MzRiOTgxZjJlNTFiMmFmNTcwMWY4MTY0MyBsZWdhY3ktdHJ1bmsKKzM3MTExIDk4ZGIwOWZkNDQzY2Y2N2I1YWViM2U2YTA4YzJjM2EyYTdkZmI1MmUgbGVnYWN5LXRydW5rCiszNzExMiAxZjliOWMyMjZiNDNlZDIwY2I2MWU2ZDIxYWVhNmNiOTY2ZThiY2QzIGxlZ2FjeS10cnVuaworMzcxMTMgYzY1NDMzNGRjOTYxOGVlMDVjZmYyNTgzNzMxYjFkMDVlNjVmNmEwOSBsZWdhY3ktdHJ1bmsKKzM3MTE0IDEyZWY1NmY4OGE5MGJlNTM2OGMyNWM1MzczMzczOGFlNzRmMDdiY2YgbGVnYWN5LXRydW5rCiszNzExNSA5NTc0NGE0MjA4YTI3MGMwNWI5Yzk1NDhjMTExNjU5YmIwZDgzMjNhIGxlZ2FjeS10cnVuaworMzcxMTYgMzc3YzUxOGQ4NDgzNDM5NzZiOTI5NDc5MDEzMmY2M2EzOGYxYzZmMiByZWxlYXNlMjMtbWFpbnQKKzM3MTE3IDhkZDM1ZjVjNzkyODJhNzIyYjY5NTg0ZTE4ZjA2ZjM5NzIwMjQxNzAgcmVsZWFzZTIzLW1haW50CiszNzExOCBiNGNiNDk4MjlkM2VlZWRiMGY0YjFjMjc3MDY4NGVkNWQ4ZjVkODBjIGxlZ2FjeS10cnVuaworMzcxMTkgM2ZiZDJkMWNhNWJiNjBkM2E2NzA5YjE3ZWI5YzFhZjA2NmE4MWQzMyBsZWdhY3ktdHJ1bmsKKzM3MTIwIDY2NDFkMDU0MjU5MjdmMmFmYTZjMTAwZTBmNDI4ZTM1NTIxYzliMWQgbGVnYWN5LXRydW5rCiszNzEyMSAxMWE0ZmJjODhhODAwYzVlMWEzNDhiN2Y1ZmQ0OTYxYjYyM2IzNTRhIGxlZ2FjeS10cnVuaworMzcxMjIgOTkzZmQ4YWNjOTBmMjg0NzMzYTA4OGE1ZGEwZDhkYTM0YWM1ZTZlYiBsZWdhY3ktdHJ1bmsKKzM3MTIzIGI2M2IzMDgyMWVmNDc4ZDkwZWI4YWFlNzA3NDIzZTNiMzI4N2MwN2UgbGVnYWN5LXRydW5rCiszNzEyNCA5NjVlOTZlMTUyOTkwNTYzN2U3YmQ1ZjJmMTdiOWI4MzRjMjczOWMyIGxlZ2FjeS10cnVuaworMzcxMjUgMWNmN2Q3MjI1YTk5NjM4N2M3MDY1NjgxODE0NWZjMTUyMmNjOWU5NyBsZWdhY3ktdHJ1bmsKKzM3MTI2IDdhMWZiMzE2ZTY1NTIyZDE2Yzc2NzRhN2ZiZjJmODA1Y2UyYmJhM2EgcmVsZWFzZTIzLW1haW50CiszNzEyNyA4Y2Q1Nzc5NmE5Y2Y4MTBiYmVkOGUxNzU0MWZlMTQzYjA2OGQwNTA2IGxlZ2FjeS10cnVuaworMzcxMjggZjEwNzJhMzBiYjU4MTA4ZThkNzc2ZTdmYTEwY2QzZDNkYjc3ZmZhNiByZWxlYXNlMjMtbWFpbnQKKzM3MTI5IGIwNDUwNzAxNzJjYjJmNzU5ZTM1Y2E0M2QzY2EzZjVmMWY1OTFhOTkgbGVnYWN5LXRydW5rCiszNzEzMCA0ZTllY2JmNDdiNmJhOTdjOGI3NWMyYWUxZTM1NGQwN2NkODE4M2M5IGxlZ2FjeS10cnVuaworMzcxMzEgZDY3NWUzZTBmZTc5NjhlYzE3MDY0NDg4MzMyZmNiZWFkNzMxMzEzZSBsZWdhY3ktdHJ1bmsKKzM3MTMyIGE0N2YzZDJmZmQyMjE1NGZmNzhkZjk1ZmI2MjhmOGJkMDYzZDJjODAgbGVnYWN5LXRydW5rCiszNzEzMyAwZWQ0ZmQ3YTBlMmUwZjUwM2YyZGVjYjczZGNjYzQyNGI3NzVkZTZmIGxlZ2FjeS10cnVuaworMzcxMzQgMzAxNjQ3MWFlNTQ4OWJiZjk4NzljMWQ3M2NlYzJmYjBjMDNjMjZlNCBsZWdhY3ktdHJ1bmsKKzM3MTM1IDNkYmRiZDU3MmQ5NDEyOTI3ZTg4MzY1MjAzMTBlMDY2MTM1ZWQ5MTMgbGVnYWN5LXRydW5rCiszNzEzNiBiYWM5OTdiNzliMTkyNWQ2Yjg5MmQzZjhiNGNmOTgwYjgzMjdlNWYxIGxlZ2FjeS10cnVuaworMzcxMzcgNGNhOWZhMjM1M2JmYTQzYjM4NmVkYmVkMmJkOTQ4MDRmNWJlMzAyNSBsZWdhY3ktdHJ1bmsKKzM3MTM4IDI3Mjc3MThlOWU4ZjQyNjRmYjZkMTdhMTdkZjE5OGUyYmExY2YzZDAgbGVnYWN5LXRydW5rCiszNzEzOSBhMTJkOTg0YmQ5NjJkOTUyZGNhMDdmYTY0YjQ5YjNkYjlkNDk0YjBlIGxlZ2FjeS10cnVuaworMzcxNDAgOGQxYjRjZDhhMTI0NTRlZjZjYWEwYTljNTAxY2Q1ZTVlMmVjZGI1ZCBsZWdhY3ktdHJ1bmsKKzM3MTQxIDBjNzM0OTMyYzZmNDFlZDJkNTBmZTNjMDY3YzIwYjdkYjdkMjdhNDUgbGVnYWN5LXRydW5rCiszNzE0MiAyYjEzNjQ0MTAzNWM4MzNlZTRiYjI1Y2FhNzhjMmMwMWVjNzhkYjljIGxlZ2FjeS10cnVuaworMzcxNDMgYjI1Y2IyMDQ1ZGFjYjA5N2RkMTEzZWU4YWRkN2MxMTBhZTY3OTZhNyBsZWdhY3ktdHJ1bmsKKzM3MTQ0IDgyNmFkODk2YTdhNWMzNWJhMDRiNTM3MjdjNTJiYTdkMTFmMjZkNTMgbGVnYWN5LXRydW5rCiszNzE0NSA0YWZmMWZiY2U3NTI0ZjFjNDhmOGQxMmIxNzFiMGY5NzRmZjcxMzJmIGxlZ2FjeS10cnVuaworMzcxNDYgZWZmNzY2ZTI5YzU1MjVhMDcwNWYyYmRlNmM1ZGJlN2U5OTJlNjI0MCBsZWdhY3ktdHJ1bmsKKzM3MTQ3IDI3NDdkYmQ1OTM4YjU2ZjhkOTc1MDBlZWRmNDZhMDFiYTc2OTVmZjUgbGVnYWN5LXRydW5rCiszNzE0OCAzNDVmYWM2NmRhYTliMTczZGZlZDJkOGEzOTFhYmMxNWM1NTc0ODk0IGxlZ2FjeS10cnVuaworMzcxNDkgZWU3MDNhMDk0ZGZiZGYxMDBhOWRiZDljMzUwMzdkY2U2OTMyZjNlNCBsZWdhY3ktdHJ1bmsKKzM3MTUwIGU1ODZjYmVjZGViYTYyOTAzM2Q3ODVkMDE1MzM1MTU0Njc5NDZiMWQgbGVnYWN5LXRydW5rCiszNzE1MSA0NDkxNDFhYTAxMWM5YTQzNjEzN2RjOTk5ODMxN2JiOTUxMjk1OTA3IGxlZ2FjeS10cnVuaworMzcxNTIgOGFhZDUyOTZmZWM5NjAzNDcwOTVlMWM0NzVmODA0Y2YyMGY0Njc4OSBsZWdhY3ktdHJ1bmsKKzM3MTUzIGZmODhkYTQwMDc3ODU4OWMzMjkzODJiOWVmZmRlZjJlMTc2YzlmMmUgbGVnYWN5LXRydW5rCiszNzE1NCA4ZDI3NjU1MWNlYTk3MmEwYjdlMWMxNzQyNmE2NDIzMzhlNjUxZjg0IGxlZ2FjeS10cnVuaworMzcxNTUgNGIwMGFlMWVmZGQ4NmRjMzkzNDUzNDkwNGY1Y2YyNjQ5OGU4MDA4OSBsZWdhY3ktdHJ1bmsKKzM3MTU2IDhhNGMzMDU0YTM2Yzk0NmY0ODEzOGRjNmFlOGI1ZjNkZWI3YmFjMzUgbGVnYWN5LXRydW5rCiszNzE1NyA1ZmFiNGY0M2I5NGY3MzcxYjVjMDBkYTk2YmM3ZTg4NjQ0YWJhMjA4IGxlZ2FjeS10cnVuaworMzcxNTggNjdmYmJlYjFlMjE4MWUwMDJlNDEwYTg0YmI5OGY4OTFmMjU1ZTk5MSBsZWdhY3ktdHJ1bmsKKzM3MTU5IGUwN2E2MjM0YjczYjFmNDc3NTgwZmJjYjI3ZGEyNTE1OGM2MDJmMDMgbGVnYWN5LXRydW5rCiszNzE2MCAzZTI1ZDZlM2RhMTk0ODViOWZmOGIwNDkxZTgyNzE5ZTNhNjc3N2FkIGxlZ2FjeS10cnVuaworMzcxNjEgOTZkNTM4NDg4YWVlYWMzYmZlNjYzOWE3OTQxNGI2NzA3NDFmOWRlOCBsZWdhY3ktdHJ1bmsKKzM3MTYyIGEzN2FlN2RiYTgxNGI3M2ZhNTMwMTg2N2E1YzQ2ZWJiZjcyNDMyOTcgbGVnYWN5LXRydW5rCiszNzE2MyBiMjkxMGU0NzlmMDdiMTEwMzE0MzRiMTE1NDQ2NzJjYmJmZTAzZDJmIGxlZ2FjeS10cnVuaworMzcxNjQgNzdkZTM4NTM0ZDI2MzI4NzY0NjNkNWJlYWE5Nzk2Mzg5MDMzMDk3YSBsZWdhY3ktdHJ1bmsKKzM3MTY1IGIxYzI2ZTg5YzQ2NGQ2YTg5YzY3YmFjZWVlMTU5OGU1OTRjYTAwZTMgbGVnYWN5LXRydW5rCiszNzE2NiBlMTliMDA5NzVkNWU4NjJmMGFlYzk4MTVmMjUzNmMzNTk5N2VjMzk3IGxlZ2FjeS10cnVuaworMzcxNjcgNTIxYjg3OTVkZjliZTQ4ODEwMDJhMTc3OWJhM2U1NTA2MWJjYjg3MyBsZWdhY3ktdHJ1bmsKKzM3MTY4IDRiMzI0ODljMzRhN2ExMWQ1YmNhODk1YTY2ZjE3NDQ3NTA4MmZlZDMgbGVnYWN5LXRydW5rCiszNzE2OSA3OGI1NzhjNDY3NzBlNTBlNjAyOGZjYmJlN2Y1NDI2NzJjOTgwNjVkIGxlZ2FjeS10cnVuaworMzcxNzAgN2Y2MTcwMjU1NjVlODBmMDc1NTVlZTkzNzc3MmNjNmFkNzRiMzZhMiBsZWdhY3ktdHJ1bmsKKzM3MTcxIGNkMTU2NDIzMDk0NzhlZDVlMGRhNmQzNTI0Njk1ZDM4MTNmNTI4YTUgbGVnYWN5LXRydW5rCiszNzE3MiBmMjgwNzJlNjRmODE3Njc0M2RjMDM4YmMzYWQ0YmU1MTJiOTFkMGZlIGxlZ2FjeS10cnVuaworMzcxNzMgNTk4MDUwMDE3YjVlNDAxZDAyMDIxMGExYWE0MGUzYjUzODc5OGQ1MSBsZWdhY3ktdHJ1bmsKKzM3MTc0IDg1Nzk4NTlmMTk4Yzc4YWMxNDNlZTY3Y2NjZjkyYTc2OWQ5ZWI1MjUgbGVnYWN5LXRydW5rCiszNzE3NSA1OWJkMTIxZWVlYjcxYzc1Y2VmOGEzYzg4NTNmNzg4ZjI1MDg3MmE5IGxlZ2FjeS10cnVuaworMzcxNzYgYmYwZWY1ZmM0OWYxZTg3NzJhN2ZjZDNkNWY5OTE5NWEwZmQyMzM4ZiBsZWdhY3ktdHJ1bmsKKzM3MTc3IDU0MmE1ZWZhNDg4M2JhMjY2OGQ1YTA0NDQ3ZjQwN2IzNDYyMzQyMTYgbGVnYWN5LXRydW5rCiszNzE3OCAyZjUyZGYxNzM5NTI5NWI2NDI2MzAzOGEwYmM3OGU5MWYwZjdhZmUxIGxlZ2FjeS10cnVuaworMzcxNzkgOTZiYjQ2NjkxZTg2MDYzMmQyMzM5NGIzYmJjYjM4MDA1YTA2NDNkNSBsZWdhY3ktdHJ1bmsKKzM3MTgwIDBiMTgxYmYyMzBjOTNmNjYxN2JiNTAzZmI0YjA1YjE3ODc1NWVkNzQgbGVnYWN5LXRydW5rCiszNzE4MSBjZjBlYTE5ODY5YWY1ZWE2NDk3ZDM1ODhhOGQzYWFiNGJjMTQ2YjU3IGxlZ2FjeS10cnVuaworMzcxODIgYjU3NjEyZjYxYmEzZjNlZGUxYTkyZTI3NWJmMDcyNWQxNWVmMzA0YSBsZWdhY3ktdHJ1bmsKKzM3MTgzIDZkM2JkZDE5YmVlYjM5OTQ2YmM2OTA4MjgyNzhhYzM3NTZjMmI5Y2IgbGVnYWN5LXRydW5rCiszNzE4NCBkNWIwOTc2MDhjOWRlY2FjNWQyMDgzYzhkNjdmODEyYmQwMDM5ZjZiIGxlZ2FjeS10cnVuaworMzcxODUgM2VlNWRlYzBjYTA3Y2NjMzVmZTEyZDE5NTQwYWM2YTNhOGJiODU4NCByZWxlYXNlMjMtbWFpbnQKKzM3MTg2IDFiYTc0NjlhM2I0OWI0ZDBkNGYyZmYxZDcyMWU3YTJhOWI3OGIxM2UgbGVnYWN5LXRydW5rCiszNzE4NyAwMGI4OWFiNDRjZmQ3Y2Y0MGVmMGU0MWE0ZDEwNGQ5ZWQzMTQxNmQ2IGxlZ2FjeS10cnVuaworMzcxODggYTI1YWY2OGQ3MWZjNmQ0ZDc0N2IxMDJhZjExNGM0ZjI5NGViNzVmOCBsZWdhY3ktdHJ1bmsKKzM3MTg5IDE3NjhhZmY5Mjg2NGQ2OGM4YmRlOTc4NWRlYzZjMzIyMTMwOWU5YzMgbGVnYWN5LXRydW5rCiszNzE5MCA3ODdmZmY1MWJmMmFhZDI4MzNhNjNlZTlmNzc4MzYwNjJhMjcwNDM2IGxlZ2FjeS10cnVuaworMzcxOTEgNTQ1MmQ0ZWNkZGQwYzQ3ZmZkYjMyNTA0ZWRjMzg3NDEwMWFhMWZjMCBsZWdhY3ktdHJ1bmsKKzM3MTkyIGZlZTU5MmZiNTY0MzZkOTI5MTk5ODgxY2Q4MDkzNzVhODY2MTgwODQgbGVnYWN5LXRydW5rCiszNzE5MyA5N2ZjYTczNWM4ZGE2ZjlkYjFhOGU3OGZmMmE5NTZlOTMxY2ZhM2QyIGxlZ2FjeS10cnVuaworMzcxOTQgMjA4ODE1MDVjMTQyNzM5MGQ3ZGZhYTc1OTc3NzdhMDI1YjJhODNkZiBsZWdhY3ktdHJ1bmsKKzM3MTk1IGQ1MzhlY2YwYmM2OTg0YWRjZWZiODE3MTQ2NjQ2MDcwMWIyZTcyMjEgbGVnYWN5LXRydW5rCiszNzE5NiAwNjIxNzdkZTg2ODU4YTdlMGZhZTk1YzIxMDlkZjVhZmE1ODBhNTlkIGxlZ2FjeS10cnVuaworMzcxOTcgZmMwYjQ1NzU1NzQzMjc2NTExODU3YWVkM2U1MDlhN2UzMjQ1ZTUwZCBsZWdhY3ktdHJ1bmsKKzM3MTk4IDA0MjQ1ZWY1Mzk0OWMxYmQzMTExNjZkNDlkOWUyZWMxYmMzOWQ3MjEgbGVnYWN5LXRydW5rCiszNzE5OSA1MDVjOTA2Mzg1MGU0YzQzYjBhZjQxNjc3NzE5ZTNiNjQ3M2ZkYmVkIGxlZ2FjeS10cnVuaworMzcyMDAgODRmYmFhYTIwMzU4YTcwZWYxMmUzMjY3MDI0YzRhNGRjYTY3NWJlMSBsZWdhY3ktdHJ1bmsKKzM3MjAxIDA1YzEyNWM5ODc2NzIwNzViNTY5YTNmZDI2NDJkZTE1NjhiNTljNTQgbGVnYWN5LXRydW5rCiszNzIwMiAwMGU2MTk4NTFhNTY5NzQ4YWQ0N2JhMjYwMzZjNDUyNzcyNDNkM2Q2IGxlZ2FjeS10cnVuaworMzcyMDMgYjdhY2I5NzBmNTM2NTEzZDNlNGYxMjMxOGRiZDBhNmVjZTBlMjJjMSBsZWdhY3ktdHJ1bmsKKzM3MjA0IGYzMDk5M2QwNTg5MDhlYjBiN2FlM2UxOWE3OWY1Yjk1OGJkMGRjY2UgbGVnYWN5LXRydW5rCiszNzIwNSA2OGU2OGVkNDZmMGU5YWY3NDJiYTAzMWRmNGVkYWNlNDIyOGUwNTAyIGxlZ2FjeS10cnVuaworMzcyMDYgZDllMDM5MzhhMzMzYmRiOTU0MmRmNTMyNWQ3ODE5YzkzN2Q2M2UwMSBsZWdhY3ktdHJ1bmsKKzM3MjA3IGQ1YzM0ZGJjMzYxODJmOWZlNTRmYTlkMGJiMjNjYmRlODZkZGJjMGIgbGVnYWN5LXRydW5rCiszNzIwOCAwYTc5ZDdhOTA0MGM3NjlhZmM1ZWI5MzQ0ZDBjMGVlYjk5MTg2OWFmIGxlZ2FjeS10cnVuaworMzcyMDkgZTViNGZlOTdmNzRkMTU4NmIxOTA1ZjY1ZWFjOGU3NTcwNjBiZWEwZSBsZWdhY3ktdHJ1bmsKKzM3MjEwIDFhNTRmY2Y0OGZlNGU2NDRmZTE4YWIxYTU2N2I0MmQ0ODc4MDQ1MmUgbGVnYWN5LXRydW5rCiszNzIxMSBkYWQ4Mjc3OTQ3NDVjYmNjZDQxMWNlODQ4MGY1NTIzNDg5NGZjZjcxIGxlZ2FjeS10cnVuaworMzcyMTIgYWRjNjZkMzE0Yzc4ZWQxNmRlYTExZTQ0NWU4YWJhMzM2NmI1MjUwNiBsZWdhY3ktdHJ1bmsKKzM3MjEzIGRkYmExNTRjMGUwMDBhYzQ1NmIwZTczZTU1OTg4YzQ3NWZiYTk4OWIgbGVnYWN5LXRydW5rCiszNzIxNCBjNDRmMDgzNDY1ZjljNWFlZTFhYTNjNjIwNjhlZmZhYzc1MGQ2ZTVhIGxlZ2FjeS10cnVuaworMzcyMTUgY2ZhNzJhOGRlMTQzOTkwY2FhZWJhZWFjZDQyNmQ5YWUzZThlMzUzMCBsZWdhY3ktdHJ1bmsKKzM3MjE2IDEyOGQ1Mjg0NTdkYTU2NWY5NmQ5ZGNmMWY2NDRhNGIzMzY1ZWIxY2MgbGVnYWN5LXRydW5rCiszNzIxNyBmNzQ3NGQzMWJhM2ZhOWJmMGM1MDc5OTQ0NmY5YmYyNzE5YmY0ZDZjIGxlZ2FjeS10cnVuaworMzcyMTggMjNkZjZjZjI5NjUwZDQ1YWFlMWM2YjYyYTdmOWVlNTViYjJiODJkNCBsZWdhY3ktdHJ1bmsKKzM3MjE5IDk5OWQzMWNhOGExOWY3ZGUwNzE2YjNmN2I4M2JiMzBlMDUxNzc2MGIgbGVnYWN5LXRydW5rCiszNzIyMCBlNTYxOTJlOWZkN2U3ZTQ5M2ZiMDAyNWE2YmUxZTJlN2UxNmY5ZjhjIGxlZ2FjeS10cnVuaworMzcyMjEgMWRmYzk3ZTJhY2RmZTRlZDA3MGY5YTI4Y2RmZDM3NzUxYzFhMjRlMiBsZWdhY3ktdHJ1bmsKKzM3MjIyIDk2MDQwMjUwNjk0MDcyYmI5N2Q4MGVjNDg5YjJhYTkyOTViMGQwMjcgbGVnYWN5LXRydW5rCiszNzIyMyBjOWE4MmU5YjdiNGQxODUxNmVhMmNjMGQyNGU4YzVjOWNjYjRiZjM0IGxlZ2FjeS10cnVuaworMzcyMjQgYTZlYWMzZmU1NDJmOTMwYzhlNjEzMTU5M2I0ZjNlY2FiMGNlN2JmYyBsZWdhY3ktdHJ1bmsKKzM3MjI1IDAzYmUwNmJjYTE2MGZiYzljOWI1OGE4MzEzYmUxNTM0NjI5NGNkOTMgbGVnYWN5LXRydW5rCiszNzIyNiAyNjhjNWY4M2ZiODc3YWE0MTcwM2ViM2JlZDU4ODhiOGU0ODRhMjM5IGxlZ2FjeS10cnVuaworMzcyMjcgMjZlNDIxMTg2NWVkN2IzOTBmNGU5NDExMjg5YTZmZmQ1NjZlNzNjYiByZWxlYXNlMjMtbWFpbnQKKzM3MjI4IDBmNTNiYTE1OWU1NGUyMWVmNTU3YzA0Njg0YzhlNjZmZWY3NDZmMDQgbGVnYWN5LXRydW5rCiszNzIyOSBiMTBiN2I3YWZjMDBkOWIwOGNlODMzOTNiZDQyMDRhMDU2OTQ1MzRhIGxlZ2FjeS10cnVuaworMzcyMzAgMzU0MGUxMDUyNWExYWVjNjdiYjE2MDNiZjg4YTFjNTg4N2JiMTcyMiBsZWdhY3ktdHJ1bmsKKzM3MjMxIGQwYzAxZTBmZTI0OTY3NTdkY2I2ZmYwYjg1YWVlMWMzYzk4N2JkM2UgbGVnYWN5LXRydW5rCiszNzIzMiBkNDEyNTZhNmYyY2VjY2VjZDIwMzE0YmIzNDRkZDUzMTJmNjc3NDkzIGxlZ2FjeS10cnVuaworMzcyMzMgNWYwYzdmNWNhNmY5ZjExOTQxMTFiODc5NzU4MzczMzJiMmFjYjI4MCBsZWdhY3ktdHJ1bmsKKzM3MjM0IGFmNjUwMDRmNjIyZmEwZDg4ZWNhMDMzN2ZhZDcwNjI1YTA2MTNjMTkgbGVnYWN5LXRydW5rCiszNzIzNSBhZDQzZGYxOTc4NGM1ZTQ0ZDE3NGUxMzc5YWY2Yzc2ZGEwM2U5ZTE3IGxlZ2FjeS10cnVuaworMzcyMzYgYjIwZDQ1NTU4NjUzNmQzNDJjZjdhMmU3MTU2ODQwZjc5ZjViNGY3NSBsZWdhY3ktdHJ1bmsKKzM3MjM3IDc2YTliZGEzMDI4ZTg2ZGE0OGFhZmM1NTgwMzg1OWMyYTkwZjI1ZDYgbGVnYWN5LXRydW5rCiszNzIzOCBhZGEyYTY2Yjg2YTRhMTdiODUxYzFlZDA0YTU5NjEzYjM0YTllMTAzIGxlZ2FjeS10cnVuaworMzcyMzkgMTI0NjQyMjIwM2U4Nzg2NTJjNTAwZGE5MGI0MWU2NDlkYTQzNzZlYyBsZWdhY3ktdHJ1bmsKKzM3MjQwIDk0NjVmZTY3ODIyMjY2NDNkNmM1N2VkNTE1YjJjNWQ5N2VmZTc2NzEgbGVnYWN5LXRydW5rCiszNzI0MSBhZWUyZWU3NDVmMmM1ZDk4ZDg2YzA2MjczZTY5YmJmOTczMTMxYWRlIGxlZ2FjeS10cnVuaworMzcyNDIgNzU1MWM3MjVmZTk2YTAxYTI0MDY5Mjg2ZDJjOWNlODZmOWRmZmE0MyBsZWdhY3ktdHJ1bmsKKzM3MjQzIGZiNjE0MDMxODBhODVjNDc2OTBhNWRiNTQ5NzQ3OWYwNjAzMzA0ZTIgbGVnYWN5LXRydW5rCiszNzI0NCBiZmZkNDk0MzU0ZWU3MDJhMWI2OTk0MzMzNmY5NDIyZTQ0NjQ2MWNhIGxlZ2FjeS10cnVuaworMzcyNDUgZjAwNTNhNmEyYmVkZGRiOTk2M2Q5N2Q5YzY0NGEwZWJiZDk1ZjQ0MSBsZWdhY3ktdHJ1bmsKKzM3MjQ2IDNlMDYyODk3ZDJlN2E5MTA3MzQ2MmQzY2MwOTc2YWVjYjY4ZjE2ZTIgbGVnYWN5LXRydW5rCiszNzI0NyBkZjQ3NzBiN2NhZWZiNDdiOTk5ODE0YzFiYmY3YzlhYWZiYWZhZGM1IGxlZ2FjeS10cnVuaworMzcyNDggNDM4NTJjOTYzMTYwNDE0OTI3MWQ0NDc0NDk2NDE5ZmJiMzljYjNjMCBsZWdhY3ktdHJ1bmsKKzM3MjQ5IDlmMmRkZGU5M2E2Mzk1ZDYyZGM3MjNkNWNmYzYyMDg1YWM2M2E2YzYgbGVnYWN5LXRydW5rCiszNzI1MCBjMmM0OWVlNzI3ZDBkZDM0NzdiODhkOWFkMDViNGQ5OTg3MTQwZTRlIGxlZ2FjeS10cnVuaworMzcyNTEgOTQzYzIyYTdjNzAxYjI3MzBiYjVlYTllMjZjYThhYzY1ZGUzYzE4YSBsZWdhY3ktdHJ1bmsKKzM3MjUyIDExMDA2MDU4NzBmZWI4YzdhOGMxMjRjMDE4NzgxNGEwMzg1OWVmMDggbGVnYWN5LXRydW5rCiszNzI1MyBjOTE2OGU3OWVmNGNjMmRiMmVkMWY4MGZkN2FmMDE5OGFiMzYyNzcwIGxlZ2FjeS10cnVuaworMzcyNTQgZDExM2M2MTM1NjdhOWU1MmMwN2M0ODlkYjY4ZjNjNjA1MDUwMzYyMyBsZWdhY3ktdHJ1bmsKKzM3MjU1IDIyODExNDBkMjBjNzVjM2UyZDA4NzdmYWMzZTdlYTQ2ODY5MTRlOWQgcmVsZWFzZTIzLW1haW50CiszNzI1NiBmODNjNWE4NTc5Zjg0OGI3YTA1OWMzNWIxNjZiMTZlNDQxYzFiYzUyIGxlZ2FjeS10cnVuaworMzcyNTcgZWI5YjM4MDI1M2M5OWQyMDM1YmZhZjAyNTlmMTU5MTA3ZDdmZWM1ZSBsZWdhY3ktdHJ1bmsKKzM3MjU3IDE4NmI3MjU1MGU1MzUzM2VmNjE3NWY2NDExZjkzMmMxMjk4MTkzZDcgbGVnYWN5LXRydW5rCiszNzI1OSBiMTRmN2VlMjVkNTBhOTM0ZmQ1MmNmMTViOThhZGU2Nzg2ZDliODBkIGxlZ2FjeS10cnVuaworMzcyNjAgNTM0NjkzYmIwMTBiYzJmOWJlNjdjMGQxMDJiMzFlNzVjZmY2MTgyYSBsZWdhY3ktdHJ1bmsKKzM3MjYxIDk4YzgwMTdlODUzNWI5MjdlZTFjNmFiMzk2YWQ4MmFkZDAyMGZkNDIgbGVnYWN5LXRydW5rCiszNzI2MiBkMWY4YzYzMmI2MDVhNWZiNjBhMGM0YzdlNzgzMTk1NDkwMzA5ODY1IGxlZ2FjeS10cnVuaworMzcyNjMgM2ZhNzljYzlkYTVkYTI5MGUxMDQyNzQ0YWE5N2U1NDY0OTY1YWU0ZiBsZWdhY3ktdHJ1bmsKKzM3MjY0IGI5OTQ1MzM1ZGEyNzJjMjg2MzFkZTViOWYwYjNiNTU5MjNjMGRjOWQgbGVnYWN5LXRydW5rCiszNzI2NSA0NzQ1Zjg0N2NmYTE0NTE0NTUxZDgyOGUzNGI2MzNhN2E2Y2ZjMTNiIGxlZ2FjeS10cnVuaworMzcyNjYgZGYxY2Q0MDcyMTc3ZGQyZTU2ZmVhMTE0ZjEzOTA3ODI4NmRhMjk0YyByZWxlYXNlMjMtbWFpbnQKKzM3MjY3IDVlZDU2NDkzZjBiMDE2MDM1M2IyYzU3YTQ3ZWZlOTc2YmQ0NzA1ZjMgbGVnYWN5LXRydW5rCiszNzI2OCA5N2MyMDdkYjkwYTFkMDdkYjY5ZWJiODRmNTkyYjQwNGUwMDFmYTBiIGxlZ2FjeS10cnVuaworMzcyNjkgMjFjNzkzNDBkZWQ1ZGUwMDM4ZWJiNzhkYjMwY2IwZjE5ZDk4NzdiZiBsZWdhY3ktdHJ1bmsKKzM3MjcwIDQ4M2MwYjRiNjMzMjhmMjllNzllNzk1YmM4ZTk4MTgzMWJkYjcxNDUgbGVnYWN5LXRydW5rCiszNzI3MSA2ZmYxYTViY2RmMjJkNDMwNGU1OWVlMTNmNTBjMTkxYmJjYTY1MzhiIGxlZ2FjeS10cnVuaworMzcyNzIgMDc4NDU1NjgyODc1NzJlMDhmZmE2NzA4YTdhNWE0Y2MwNDJkN2Y2NiBsZWdhY3ktdHJ1bmsKKzM3MjczIDhlMjNiZDNkNWIxYTcwZmFhZWMwODNhN2VkZmVkZmYwOTIxZjk0ODggbGVnYWN5LXRydW5rCiszNzI3NCBmYzJjZTU4MDIxNmM4ZGNlZWRhZTgwYWQ3YTJjZTI3ZDJmNDVmMDM1IGxlZ2FjeS10cnVuaworMzcyNzUgMTM2YjM4ODU2OWEwYzQ2MGM2Mzg4OTJhYWVjOTIwNzkyZDZmOWFiZCBsZWdhY3ktdHJ1bmsKKzM3Mjc2IGMwOTMxOGIwMDkwZDZiOTdiNTViMjA0YzI2OThkNGExNDQwZjNjOTggbGVnYWN5LXRydW5rCiszNzI3NyBlMWFiMmMxMmNkNWVmMjVmMGQxODlkMGMwYjYwMThiNzY1MGQ0NWYzIGxlZ2FjeS10cnVuaworMzcyNzggODM4MWQwNzNhZDM4NmIzMTNjNDgxNDRlMmFlOGFlODMyMGYwZmFjNiBsZWdhY3ktdHJ1bmsKKzM3Mjc5IGRjOTdmNTgxZjIzMzQxMTY0MzQ4ZTRhYjNkZjA2NTI5YjczMDA4MTMgbGVnYWN5LXRydW5rCiszNzI4MCA1YjZmYmE2NDU0YTA5YWE4NzBjZWI4OGUzNmVhZjMwNTM4MTBkZTZlIHJlbGVhc2UyMy1tYWludAorMzcyODEgYWQwMGY3YzBhZDA3NDI2ZWQzMjJiMDdiYWUyMzFkNTY4MDQzOWFmYSByZWxlYXNlMjMtbWFpbnQKKzM3MjgyIDc2N2EzOGRjYjMwMDk0NDZmZWVmM2JmY2M1NGU4ZDY4OWEyZjYyMzAgbGVnYWN5LXRydW5rCiszNzI4MyBkOWEzM2VjYmM3ZjI4YWFhYjA3MTY3YTliMjFhNTkxYThkZTUyYTBhIGxlZ2FjeS10cnVuaworMzcyODQgMzBlMjczODQxYmFlMGIzOGQwNjhlMmJiMGZlNWNkZThjNTU2NjQyNiBsZWdhY3ktdHJ1bmsKKzM3Mjg1IGI2ZTg3NWFhNTA4YmY4MjAxZDc1M2YzNTg1YjkzMzE3NGVlNzJjYjQgbGVnYWN5LXRydW5rCiszNzI4NiA3MTA4M2ExNzI1Y2JlNzg3Y2JlNWIyMGM4NDQ1NTg4Mzc5MGMzZjY5IGxlZ2FjeS10cnVuaworMzcyODcgYjVmNjExODMxN2QwZDAxNWRhNTkxZGE3NDQ3OGU5NzEzMjc1OWM5ZCBsZWdhY3ktdHJ1bmsKKzM3Mjg4IDY5MzI5NDNkZTZiMWY1OWJmNzY1Zjk2NWQ3Zjc4YWNjZDk1NTAwMjEgbGVnYWN5LXRydW5rCiszNzI4OSAzYWZiNjdkOTc0MmI3ZGNmNjI0NWYxNzFhMTk0YmY3ZTRlM2M5NzhiIGxlZ2FjeS10cnVuaworMzcyOTAgYWI2MmY3NmNhOGUyY2MzODY1ZmNlZmJlZmViZjk2OTViNmQ1ZTk5NiBsZWdhY3ktdHJ1bmsKKzM3MjkxIDg0ODBiNzJhYTYyNGRhMzM4ODIzNTc0YTMzMTNiOGViYTYzODBlOTkgbGVnYWN5LXRydW5rCiszNzI5MiA1NzQ3OGExM2ZiZjY0NGQ1MDNkYTY2YjI5MTExZGIyZjk2MGMyOWIzIGxlZ2FjeS10cnVuaworMzcyOTMgMjEzODNmYjFhOGYyOTFjY2I5N2QxMzI5NzFmNzQ3YWM3YmFlMmQwNyBsZWdhY3ktdHJ1bmsKKzM3Mjk0IDk2ZDNlZmI5NDBjZjM0M2MyMWIzOTU4MjA0Y2YyODZiODc3MDgxZDcgbGVnYWN5LXRydW5rCiszNzI5NSBjZDA3MGZmYzg5MmQxNDAwMjlkZDYyYjUxYzAzNThkMjUxYTg4MDBmIGxlZ2FjeS10cnVuaworMzcyOTYgNGI3MDhmYTBhNjBhYjVkMTcyYjg3YjUxM2Y2M2EyNTBlZTUxMTkyMiBsZWdhY3ktdHJ1bmsKKzM3Mjk3IDA2YWJkY2Q1N2ZhOGQzOWMwOGNkMzc5OWNjYjdmM2M0MWQyMzY0NDcgbGVnYWN5LXRydW5rCiszNzI5OCA2ODUzOGUxMjRlZTBhOWIzZmU2MzE4ZjZiMGQ2YzUxNDE4NzI0Zjk0IGxlZ2FjeS10cnVuaworMzcyOTkgMzA2OTdmNDQ2Mjg2ZDA5MWU5OWVmZjg4Y2ViMjQwNWU5YTg2YzNjNCBsZWdhY3ktdHJ1bmsKKzM3MzAwIDg5N2EzNjNmMGU4NmZhYTdjMDVmYmVjOTAwMTUwODBlOTlkZWVjZWEgbGVnYWN5LXRydW5rCiszNzMwMSBmYWMyYTUzOTA2ZjE3MDUwNjVhOWZkMDg2MzE3YWRjMWI4YzlhNTg3IGxlZ2FjeS10cnVuaworMzczMDIgYTI0MzI5Njc4NmNlNzg0MDEyMGU1Mzc3M2QxNDRlYjVhNjQxOGM2YyBsZWdhY3ktdHJ1bmsKKzM3MzAzIDYyOTIwMGQ4ODBlYTI4YmFjZGMxNzVkZjIxNmFhZmI1OTFlYjQ3ZWQgbGVnYWN5LXRydW5rCiszNzMwNCA1YjMxYjRjM2I3YmFjNWQ0MWMwYTEzMGE5NTUzNzAxNjVjMzllNTlmIGxlZ2FjeS10cnVuaworMzczMDUgZTQ0ODlkNTZmMTA5MDIwNzQ3MjhjNWJmNGYwOGYxOWEyOTQ1OThjNSBsZWdhY3ktdHJ1bmsKKzM3MzA2IDRkYWE3YzcyNWE3OThlZWNhODc4ODMyYzZmYTI2YzQ1NTJmZTlkMDAgbGVnYWN5LXRydW5rCiszNzMwNyBmMjRhN2ZhMzhmNGY5MWJlZmI3OGVlNGY0ODk0ZGVmYjBjMjMwZWJiIGxlZ2FjeS10cnVuaworMzczMDggN2JmNDNiZTgyOWY3ZTdhNGRlNDQ5YmVhZWQ4MTdmZDllNmJmYTcyYyBsZWdhY3ktdHJ1bmsKKzM3MzA5IGNhZGNiZjk2MmExZmQ2N2E0MmMxNmFkNzNjNDc1OWM3ZjJjNzRmYTYgbGVnYWN5LXRydW5rCiszNzMxMCA2ODhkOTgxYzYyMzRiMTM0NTVhNjY5YThmZmU1NDVkMzQ2Njc4ZjBmIGxlZ2FjeS10cnVuaworMzczMTEgNjRkNGU3OTZiM2RmMTI2ZTY0MzNmMjhhMDU2NWZmNWU2OGIxMTdiZCBsZWdhY3ktdHJ1bmsKKzM3MzEyIDU1NzBmYWUxZjAxY2QwNTNhMmQ3MWNiZWRjZDc3YzdlMTllNmU5NzEgbGVnYWN5LXRydW5rCiszNzMxMyAzMjQ2OTNlZjMyMGE1ODc2NDViMTI1ODhhYjNjYTJhMWExMTU4YjdlIGxlZ2FjeS10cnVuaworMzczMTQgODE2MThhN2Q0OTBlNzFkODE5ZDRmYjhlMGZlOTY3N2U5YjQ1OTQ2ZSBsZWdhY3ktdHJ1bmsKKzM3MzE1IDI1ZmI5ZTVmNWY0NTMzMzMwN2FiOWVhNDU0NWMzODczYWY0YzEwZWMgbGVnYWN5LXRydW5rCiszNzMxNiBlODMwOTNhYmM5NThkMDRmYzVlMzkzOTU1MzQxZjJkNWU0ZjJkZWJlIHJlbGVhc2UyMy1tYWludAorMzczMTcgN2E3NTE2ZTZmZWIyZjVmMTNhYjZlZjg5NzA1MTVmOGIyMjI0NzI4NyByZWxlYXNlMjItbWFpbnQKKzM3MzE4IDNkYWE2NjMzZjAxN2VmNDdmNjhmYjAwOGNkMDVkMTVmM2QwNmU3MzMgbGVnYWN5LXRydW5rCiszNzMxOSA5ZTNjNTJjYTNhMDRkM2YxMjFmMmIzZmRjYjc0M2VhNTM1NGI2NGYzIGxlZ2FjeS10cnVuaworMzczMjAgNDg3MjgwY2Y3MWI5NWQwMjE5YTgzNTU1OWE0MDNkYzhjODNjYjE4YiBsZWdhY3ktdHJ1bmsKKzM3MzIxIDAxNmQ3MDE2YzZjNjNkNTA1ZjkxOTA4NDU1MTJlODgzMjM0YWEzZDkgbGVnYWN5LXRydW5rCiszNzMyMiA5MWM4N2NlYTc3NjcxMTYwZGE5MDMzZDc2M2M5YTFkYTZmNmUxNzA2IGxlZ2FjeS10cnVuaworMzczMjMgOTQ5N2M1ODEyNmJlNDAwYWZhYTdkMjdmZGE5YTZkZDYxYmE3NWJmMSBsZWdhY3ktdHJ1bmsKKzM3MzI0IGRjZTYyNDkzM2MzODdlYzMzYjljZmYzN2VmNDY1OWZlMjY4NmE0YzYgbGVnYWN5LXRydW5rCiszNzMyNSBjODgyNWE3NGU0MjFmMWZiM2VjOWFjYWQwZDM4M2Q1NWU2OWJjMDgwIGxlZ2FjeS10cnVuaworMzczMjYgNTg3NjYzNmNhOGM2Y2NmYjE0MDI0NTM1YTgyMjVmYjgwYjdlZDZhOSBsZWdhY3ktdHJ1bmsKKzM3MzI3IDI4ZWY1ZmUwYjhiNWRlMzE4OTg0NDRhODcyZGRlMTFiNTYwZWJkOTYgbGVnYWN5LXRydW5rCiszNzMyOCBkOGEyNjFhNzcwMjgzYjAzMTRhZDc4ZWNkODBkNGI5M2IzODYxMjdiIGxlZ2FjeS10cnVuaworMzczMjkgZWI1MTcyOGVkMTFmMGUzMDhmZjA1NWNjN2I5MjFlNWI5NWVjZmM5NSBsZWdhY3ktdHJ1bmsKKzM3MzMwIDQ3N2NkMGY2MjJiOWVkYWViMWQxNGU3Mjg5ZTIxOGMzODJmNGU0ODEgbGVnYWN5LXRydW5rCiszNzMzMSBlMjNjYTk0ZWQ4ZWRiMWYxZDczMTM4YmIwMGRjYjExODRhMGJhM2Q5IGxlZ2FjeS10cnVuaworMzczMzIgYTA0NTE1YTk4ODMxNTkyZTIwOGU1NjdlZDZiZjExMmMxMTRiYmIyMCBsZWdhY3ktdHJ1bmsKKzM3MzMzIDkyNWNmOWIzMjg1YmZiOGEzOTE3Yzk3NmZmZWI3MGUyOGVjNzYyMTAgbGVnYWN5LXRydW5rCiszNzMzNCA3NDczYTE5NWQyMjMxMjIzODIwZDQ5MzBiMmI3ZDQ0NGMyYzk4MDYzIGxlZ2FjeS10cnVuaworMzczMzUgNDFkYmVlNWVkMjk1ODZjYjk4NDNmMGMxMGQ4ZWM0NzA5NmQ5MzQ1ZCBsZWdhY3ktdHJ1bmsKKzM3MzM2IDM2NzY3ZmUyNDI1MmIxNGRhMTRjMDUzMTlhNTMzMDQxNzJjNWJmNzkgbGVnYWN5LXRydW5rCiszNzMzNyAzZjg2ZjJiYjliNTZlODQ3M2M0ODIwNDIzZDIyNWZlNWJlNjY5OTVjIGxlZ2FjeS10cnVuaworMzczMzggN2ZkMjJlY2RjOWRiMDkwMzUwZDI0ZDg3NjlhMGYyNjA2NTg3ZTYwOSBsZWdhY3ktdHJ1bmsKKzM3MzM5IDRkMTY3ODViYTVkYzFjNGJmZDdiMWE1MjEzNTVjZDIzNmU3MGNhNzggbGVnYWN5LXRydW5rCiszNzM0MCBlODA4Y2QzMWZiZGM2YTA5ZWExZjMxZmYxMWI3ZTY1MzRiMWM0Zjk2IGxlZ2FjeS10cnVuaworMzczNDEgYTIyMDA3MzUzNmQ2OWE3NTJlN2FkYTgyNWMzM2VkNDk2MDFhMWViYiBsZWdhY3ktdHJ1bmsKKzM3MzQyIDFiM2FjNjc0YTU3Y2JmZmIzM2RjNjY4OTc4MjFhOWYxMjA5YTdhYWMgbGVnYWN5LXRydW5rCiszNzM0MyBiODdlYWE0NmM5Y2JmMWRlNTU3NmEwMWQ3N2VlNjRkMTcwZTJmZmJmIGxlZ2FjeS10cnVuaworMzczNDQgNTM3M2E1YWViODAwMjJiM2VkMzBlYjMwODI4MzY0ODE1YmNhN2JiNSBsZWdhY3ktdHJ1bmsKKzM3MzQ1IGVhY2RjMjk2MDZkODE0NDkyZTc4M2JiZDY5ZTE3YjhmOGU1NGRlY2QgbGVnYWN5LXRydW5rCiszNzM0NiAyNjIzNjY4YzVmZjViNGQ2MDg2ZmFmOGJmNzIzOThjOTBmMmU4NjkyIGxlZ2FjeS10cnVuaworMzczNDcgYzkzZDJiZWM2OGJlYzQ4YzVkYTYyMjdkZWIwOWFiZjQ3NzA2MDZmYyBsZWdhY3ktdHJ1bmsKKzM3MzQ4IDE4YzdjMTdjY2Y4NjMxNTc1NGZmZjY5ZGQ4NzZkMDY4ZWUxMGI3MjAgbGVnYWN5LXRydW5rCiszNzM0OSA4MjNkNjQ1YjMyYmZlM2YzNmY0Yzk2NzBlNzgxZTRjYTFiYzIyMGFhIGxlZ2FjeS10cnVuaworMzczNTAgNTNjMTM1N2M5YzYzZDU0ZTgyYmJiNTBmYzQ5ZjkwMzRmMjJmYjExOSBsZWdhY3ktdHJ1bmsKKzM3MzUxIGNmYjJmNWUwOTc0MDkzNjY3NzI0ZmY2NTM4MWRiMDhjNDYwMTg0ZWIgbGVnYWN5LXRydW5rCiszNzM1MiA3MWVkNGIzNWZkYzQ4ODc2ZDFhYmU5MTM5YzhlODZlNzFlOTlmNDAwIGxlZ2FjeS10cnVuaworMzczNTMgNGNiMTAxNjUyNWI3ZGVmNWJkNjY5ZjcyMGJhY2FiNWVkYjgwZmU3MCBsZWdhY3ktdHJ1bmsKKzM3MzU0IDczODViYTI2ODBlYjcxYmY3OWZjNTg1YzI5MTFjNTU2ZWM5M2UyMzIgbGVnYWN5LXRydW5rCiszNzM1NSAwYzI5OWNhYmY0ZjA2Yzg0N2RhNTI0M2I2NGViMmI1MDI3MGMxN2RiIGxlZ2FjeS10cnVuaworMzczNTYgMjk0ZDM3MGU0M2QxNGRkOTE1NGJjN2VlMjkxYjlkYjQ0ZDU4Nzg0YSBsZWdhY3ktdHJ1bmsKKzM3MzU3IDQzMzYwNmU5NTQ2YzM1YjhlNmI4M2U4NmM2ODk4ZjFjMjRkODVlNzggbGVnYWN5LXRydW5rCiszNzM1OCBkOTg0Y2I3ZTIzNTIzNmZhN2ZmNmU2MDYyODUzMGEwMWQ1NGE0ZjI0IGxlZ2FjeS10cnVuaworMzczNTkgMmQ2ZTE4NTQwODJlOTQ4NTQwMDk0MDNjZDU2MTliZTA3Zjk4Y2JmMiBsZWdhY3ktdHJ1bmsKKzM3MzYwIDllMmI5NGEzYjVkY2MwZjE4ZmI5M2Q1ZGQwZmI0NDVkOTgxNmJkMzUgbGVnYWN5LXRydW5rCiszNzM2MSBjM2FiNmY0MGI2ZThiYjJhYTMzMTg2NDQ4MTk1ZWExOWRmYjIyN2U3IGxlZ2FjeS10cnVuaworMzczNjIgYWJiZGJiYTU2YThiNzNkMDM1Zjg0MGI1Yzc3MzY5M2Y1NjEwM2Q3YiBsZWdhY3ktdHJ1bmsKKzM3MzYzIGE0ZDM2NzNiY2Q2NjQ3MzA2OGIyZWVhNDYzNDcxOTJmYjBmMGRmMTYgbGVnYWN5LXRydW5rCiszNzM2NCBkYTFkYTMzMWY2NGVmOGVkYmY5NWJlNzFhMzU5NGQ2NmY2YzM5ZDZhIHJlbGVhc2UyMy1tYWludAorMzczNjUgYWY5YmVkZDVhOGU3MjEwNjdlMjY0ZmNiYTI3NGUwZDlhODhmYmM0ZCBsZWdhY3ktdHJ1bmsKKzM3MzY2IGE3MGIzZWUyZTMwYjg5ZjU5YjA4ODMwOGI1YjRhYWE0YzAxMmE1MDAgbGVnYWN5LXRydW5rCiszNzM2NyA0NWM1NzQyYzFlMTNjYTRiM2ViNGZjYTk4MWMzZDYwZDlmNDBjMWZlIGxlZ2FjeS10cnVuaworMzczNjggNzhjMWMwMzc3OTYzN2ZjNjQwNjJkYmZkMjAzZmI5NjdkN2ZlMGI0NiBsZWdhY3ktdHJ1bmsKKzM3MzY5IGNjMGFlMDM3NDNiOGUyZGEzOTI0NTA4ZjA1MmY5OWEzOGRiMWM4MTggbGVnYWN5LXRydW5rCiszNzM3MCA0YjgxOThhNzQ4NzMxMmI4OTUzNGJmZWJmOWQ4NTQwYTVhMWUxNTgxIGxlZ2FjeS10cnVuaworMzczNzEgNzI1YzQ0NDIxYTQyZjU5Yjc5ZTM4MjZiMmEwM2Y0ZGZjODhkZDUxZiBsZWdhY3ktdHJ1bmsKKzM3MzcyIDk0ZjUwMGViZjYwYTQ1ZjZlNThjZDExNWU0ZDlkODAxN2ZjYjZkZmUgbGVnYWN5LXRydW5rCiszNzM3MyAxZjU0MGJmOWE5YjQwMjdiZDgyY2NkNjIwMDVlNWQ0ZGUwZDRhMzUwIHJlbGVhc2UyMy1tYWludAorMzczNzQgMzIyMTg0ZWY3NjIyZDY3ZjNhMjEwOGQyN2QwMmM0OWY3NGI3MzEyYSByZWxlYXNlMjMtbWFpbnQKKzM3Mzc1IDAzZWRiNjNhZTA3MThmNGY1YWFiMDlkM2Y1OGY5YzE1MzRlNzliMmQgbGVnYWN5LXRydW5rCiszNzM3NiAxMWQ0NTAwYmU2ZmE0MThlNTlmMDJiNWE1Y2NjNGMwYTMyMGMwMjZmIGxlZ2FjeS10cnVuaworMzczNzcgZjQ2NDA4MTVlNWJiNTAwYWQzMzc4MTU3YzUxNzQ0ODc5N2ZmMDhlMiByZWxlYXNlMjMtbWFpbnQKKzM3Mzc4IDZiM2RhNDdiZGRkNjhhNDQ1YTE3MjdkZDQ3NTNiMjk4MmQwYzY3MDQgbGVnYWN5LXRydW5rCiszNzM3OSBhNzcyNTdlNTQ5OTZhYWY1ZWMyZTAxMmE4YWRlYmU5YzY4NzBjMzk5IGxlZ2FjeS10cnVuaworMzczODAgZTllNjVlZjk0NmVjYWQyNmQ3ODc3MGJlY2EyNmVkZTgwNmNlNWI4NSBsZWdhY3ktdHJ1bmsKKzM3MzgxIDMwMTI2NWI4MGM0MTQ0MmNiZTI4YjBmMDZjMTNlNTQ2NDFhMDQwMWEgbGVnYWN5LXRydW5rCiszNzM4MiBkNTI5NjE1OWYxMWNmNGRhNTBmNDVmM2U2MWEzNmIxNzkzYzg4OGM2IGxlZ2FjeS10cnVuaworMzczODMgMTM5YTQwMTJiZWFkYWZjOTM4M2UwNTkyMjY1MTlhNmI3NDY4YjRiZCBsZWdhY3ktdHJ1bmsKKzM3Mzg0IDNlMTdhZWQyMzI0YzMxN2MwMWRmZTgwMmFmNGUxNWJjNDdmYWZhZTkgbGVnYWN5LXRydW5rCiszNzM4NSA1NWVjYTdjZDM1MzFkYzZhMjhkNjQ3OGY0OTczYmJlODczZWMwMTcyIGxlZ2FjeS10cnVuaworMzczODYgMDZmMjgyMzhkZjMxMTU5YzI2YThjYTRlNTU4MGFhMDAxN2U4M2IxMiBsZWdhY3ktdHJ1bmsKKzM3Mzg3IGQ4MzY3MGYyNGQ1Y2MyYzNiNGE0MjgxOWZiOTQ2NTJmODllNzNlYTAgbGVnYWN5LXRydW5rCiszNzM4OCAzMGQ0MjhmOTkyZjlhOTcwYTFhNWJhMWMyNjBjNmNlODk0NjE5YzQ5IGxlZ2FjeS10cnVuaworMzczODkgZDNkNmQ0MjAwOWE4YzQ3YTU4OTkyYjU4YzFjNjE3OGNhMGZiNWZkNSBsZWdhY3ktdHJ1bmsKKzM3MzkwIDE3NWVlZTA5Y2I5ODE4MGFiODk5YWE4MGNkYTRmNjExNDhlMTNjMGIgbGVnYWN5LXRydW5rCiszNzM5MSAxODA5YWJkMzkzNDI2Mzc4MDA0ZDkxMzQ3MjA1YzJmYzk1ZDFjNmI4IGxlZ2FjeS10cnVuaworMzczOTIgYTNmYjVlYmNhMzBkNzFkNjNmYTZjNzk0NWEwZTU1NGYzNTI3Y2NmZiBsZWdhY3ktdHJ1bmsKKzM3MzkzIDI1ZTA3YzQ0ZTVkMDViMThlZDgwZGRlMDhjYTQ1ODMzMWI5NDQ5ZjQgbGVnYWN5LXRydW5rCiszNzM5NCA4ZjY0YTg0ZmE4ZTZiZWY3MmNhOGZlYmZlYmVkNGY1NWFjZTNmZTIwIGxlZ2FjeS10cnVuaworMzczOTUgNWFjOGFmZDhkOTA0MDY1Njk4ZjFkODVmMDhiMWI0MWRlZWViZDliZSBsZWdhY3ktdHJ1bmsKKzM3Mzk2IDY5NWU1YmIwODM4MjM5M2Q5MzU1MDcxNzIyM2JhMGZjM2FlN2QyMWIgbGVnYWN5LXRydW5rCiszNzM5NyBlN2ZhN2I1Yzk0NDFjMzlkMjhjY2U1ZGNmZTU0YTNmOGVmMTIxYjhhIGxlZ2FjeS10cnVuaworMzczOTggZmUyNDJmNjlhOWQzMjgyMmFmM2UwMzVlMmVmNDIyZTliY2YwNWQzNiByZWxlYXNlMjMtbWFpbnQKKzM3Mzk5IGVjZDY1NGRhYWVjOWYwMGIyYTQ5MGMyN2I4ODEyZDRmMjU1ZDFkNTAgbGVnYWN5LXRydW5rCiszNzQwMCA5MmRjYTk4Y2Q0MzQzMTRmNWY0OTJjMmE5ZWMyMGUzMjU1NDVhMDJlIGxlZ2FjeS10cnVuaworMzc0MDEgNTI2NDI3ZTg4M2U4MjQxY2NlMTlmN2M0N2EyNzhiZmE4ZTJjMGNhYSBsZWdhY3ktdHJ1bmsKKzM3NDAyIGJkMTNhNDc4ZThkNjFkZmRkMzk3YmYwYjlhMTcxYzUyN2ZjOWJmMzggbGVnYWN5LXRydW5rCiszNzQwMyAyYjQ5YjRhODVkOWViNGE0Y2ZhOWYyOWMyMWQ2NDljMzgzOTQ1NjcxIGxlZ2FjeS10cnVuaworMzc0MDQgZjY3ODliN2VhYjRlMzBiY2NiODUxYzQyZWIzYzg5YjU1ODA0OTllNyBsZWdhY3ktdHJ1bmsKKzM3NDA1IDc4MWFlZjk3NDQ2Mzg4YjM4ZmY0M2Q0NzQxMDI3OGU5NmJkOGRjZjggbGVnYWN5LXRydW5rCiszNzQwNiBkNzRkZGNmZjA3MjQ0Nzc2NjU0ZTIzYTBjOTFmY2M0ZGJmOWNjOGI2IGxlZ2FjeS10cnVuaworMzc0MDcgYTNkNzhkNmJjYTUxOTI0MjM3YzJkNDljYzc3NDE2YzU5ZjNlYTc4ZCByZWxlYXNlMjMtbWFpbnQKKzM3NDA4IGQ2MDcxYTA1YmE4NGFmOWJmNzgwM2NiNjNhYWRiYjQwMjJlMmZjZTIgbGVnYWN5LXRydW5rCiszNzQwOSA2ZDA1NWEyNzViNGJkMzk1YTMwNmY2NDIzNzAyZWY3ZDk2MThhN2FlIGxlZ2FjeS10cnVuaworMzc0MTAgYmY2ODczMTY1MDc5ODZiZDIzYjM0NzY2MzdhMGE2MTdkMDRjN2FhNiBsZWdhY3ktdHJ1bmsKKzM3NDExIDcwMjM2N2RhMmM3MmJmNDJlNWZhMzkzODA4MzU2Nzk4ZjVjN2NmMDQgbGVnYWN5LXRydW5rCiszNzQxMiBkMzc2ZmU4NjJiMTg4NTRkNzJkYjg0MDVlMTQyNTBhZDBiMWIzZDFjIGxlZ2FjeS10cnVuaworMzc0MTMgZWNhZjBlOGZhNzM3OWU5MWRjMzg3MGYzNzUzYjc4YjljZjkyY2RmOCBsZWdhY3ktdHJ1bmsKKzM3NDE0IDY2YjU2ZDU2ZTY4MGQ0YjA1NWQ4NWY2YjYzZTNmOThjMDc3Mzc0NGMgbGVnYWN5LXRydW5rCiszNzQxNSA3ZDdhYzQwNGM4MDQ5ZjkzMjAyYzk4ZmQ3OWMwYTdkYzFiMDAwMjNiIGxlZ2FjeS10cnVuaworMzc0MTYgYmY5ZjkxN2VlNGY5ZjE0MDBkMWY1NWQyZDA0YjAzOTFiNzVkZTVmYyBsZWdhY3ktdHJ1bmsKKzM3NDE3IGE2ZGMxNzZjNWQxMjkyMDIyYjE3MThjODkwMTMwMzgzYWQ2MzY1ZWQgbGVnYWN5LXRydW5rCiszNzQxOCBhNTc3MTNmZGVkMjNiMzViYmQ0ZGY0ZjY2MTMzMmQ1MzAxNjQ0ZDI5IGxlZ2FjeS10cnVuaworMzc0MTkgMTVhN2NjMDBjNWExNDFkN2I5ODA3N2Q2MjIwZDEwZGY2ODc1NTU3MyBsZWdhY3ktdHJ1bmsKKzM3NDIwIGZkOTM0Nzc4ZjRiNDUxZWQwZWYyOWIyMDYwNTQwNjM5ZDNmZjdlYWYgbGVnYWN5LXRydW5rCiszNzQyMSBlMTJjYTVjZGY3NDEwNWRkNTE0ZjBhMzk5YmFhYmU0YjEyY2IwYzg3IGxlZ2FjeS10cnVuaworMzc0MjIgZjJhMmNlZDFmZDVkY2IwM2QxNmIyNDZiZGQ2MjNiNDc5NTA0NzBjOSBsZWdhY3ktdHJ1bmsKKzM3NDIzIGJlOGNmZjRhMWVjYWRjNzI1NDQzM2M4NDYzZThiNGM0Mzc4ZjI2ZTMgbGVnYWN5LXRydW5rCiszNzQyNCA5N2NiOWVlYTIxMmUyMzdiYWRkNjllNTYzNjI2NmE0MDFlODNhZjFjIGxlZ2FjeS10cnVuaworMzc0MjUgYTc2MTI2MDAzOTkyNTE5ZTM2MDdiM2FiNDNmNjBjZTRkNzJhN2MxMSBsZWdhY3ktdHJ1bmsKKzM3NDI2IGMzOWY4M2ZkZDRkMDMyM2QwNzRlYzhjOGU5NTJjODg3ZGNlZjhhOTUgbGVnYWN5LXRydW5rCiszNzQyNyA4YzZmYzg3NzEyNjA0MjExMWY0MmQ0ODBiYmEwYjg4ZDhkN2JjYWY1IGxlZ2FjeS10cnVuaworMzc0MjggNTk4NDFjODE5ZjRjOTc1ZDAzMWZjZTRlYzA5MTAwMzkxNmY2MWU5YiBsZWdhY3ktdHJ1bmsKKzM3NDI5IGYyNDZkNzQ2NGI1YzhhNDMxNmE5NTE0Y2U5ODQ2MTVlN2VhM2E1ZjAgbGVnYWN5LXRydW5rCiszNzQzMCA5NjkyYWYwMWMxYTgzNWFjMDQ1YTRkMjQ0MWIzZDU1MTQ1ZTA5YTI1IGxlZ2FjeS10cnVuaworMzc0MzEgYzRlYWM2ZTkwMTYxNGI2NzI3YWVhYzZmNDA4ODA1NWU0ZGYzYzc1NSBsZWdhY3ktdHJ1bmsKKzM3NDMyIDg1ZGEwODhlN2E4YmZkOGY3ZTFjZjYwZmZkOWUyMmE3NzQ0YzJlNDIgbGVnYWN5LXRydW5rCiszNzQzMyAzYmQ5M2I4MTQwMzE5NzdiYTMzODU2NzhiZjQ3YzQ1NzU4ZjBlMDU2IGxlZ2FjeS10cnVuaworMzc0MzQgYzM3ZTIwNzRhOGM1NDg1OWU2NzUyNzdmMDdjYWFhZDQxZTc3ZjVhZCBsZWdhY3ktdHJ1bmsKKzM3NDM1IGE1NjgyYmM3M2UwNGY2MDc2YzU3Njk4NGRiMjY0OTdjNjU4MjBhNjIgbGVnYWN5LXRydW5rCiszNzQzNiA5ODZhNWI1NjlhZGVkZmRmODdhNDExZTQ2NzQzNmViNzMzNDk2M2Q4IGxlZ2FjeS10cnVuaworMzc0MzcgNTBiNmY5NGEzOGE3NzY3MzZmZmIzMWRkZmQ2Mjk5ODBhNGNmMTcxMyBsZWdhY3ktdHJ1bmsKKzM3NDM4IGU0NzhlYmUxY2IzMTZjODRkODM0YTQwYjE0MWYwN2FkMWU1MjM5OGYgbGVnYWN5LXRydW5rCiszNzQzOSBmMjc1ODRkMTEzYWYzZTM4MDQyM2VlYmFkNDFmNGYyZTZlYTQ3MzRmIGxlZ2FjeS10cnVuaworMzc0NDAgYzI4ZmZiZmIwYWU5MDkyOTI1YzUwZmI0YTU2NDBmYzVlY2M5YjAxYSBsZWdhY3ktdHJ1bmsKKzM3NDQxIDMxYmM1ZjBmNGNmY2M5ZmJjZTRmMDQ5YmFhMWM0NWVkOGVkODk2YmIgbGVnYWN5LXRydW5rCiszNzQ0MiAzMjVhODhjNmVlN2Q1Y2Q3NjdmYzkwZmUxMGRiOWRlNDk0Mzg1MmYzIGxlZ2FjeS10cnVuaworMzc0NDMgOGE1Yzg3ZjY4NWNkZTljYTE0NzNjOTBkZGIxMmYyNjMyMjJlNTNiNSBsZWdhY3ktdHJ1bmsKKzM3NDQ0IDc3NjYwZWFlZjI0ZGM0YTFjYWY1Mzk3NmU1YzU2NjE1MTE3OWUzZTggbGVnYWN5LXRydW5rCiszNzQ0NSA2MTNhNTUzMzg1NGEwZDQxYjM2YjRhYmQ1OGU0M2I3NTUzMjkxMGJhIGxlZ2FjeS10cnVuaworMzc0NDYgODA4NDI4YzU2MDk2ODc2NDMyMTA3NTg0YmUwNGMzYzZmZGFhNDRmZiBsZWdhY3ktdHJ1bmsKKzM3NDQ3IDFiNmIxMDQyY2Y0NTY5NTY1NThkMGU2YzgyODY4ZTFkNzY0ZDU3NTcgbGVnYWN5LXRydW5rCiszNzQ0OCAyYmMyMzUzMjYzMTYwYTQ4YTA1MmE4YTc2YTVkNGJjYjc3OWQxYTZmIGxlZ2FjeS10cnVuaworMzc0NDkgZGJkYzQ1NTY0ZDI0MDM4YTkwNTc3MGZhMjU1OWM0NTgzOTk0ZGJjMyByZWxlYXNlMjMtbWFpbnQKKzM3NDUwIDc5MTljYWRlYjkxZGQ3ZjRhZmE5M2ExMjRmYTU3Yjk3OWJiZjMwZDggcmVsZWFzZTIzLW1haW50CiszNzQ1MSAxNDA4MWVhNjU2YjJjMGExN2MwMDFhNjdlZWEzNjM0NTExMGJhMThiIGxlZ2FjeS10cnVuaworMzc0NTIgNjhkMTFlNDM5YTBiNWE0MzFiZWY4YTg1YTc1YjM5MDJjMGIwYWUwNCBsZWdhY3ktdHJ1bmsKKzM3NDUzIDIzMDM2YzdhZjY4NzZlZTIxOTgzYTg5ZmEyNTdhMDg2NjRlZDNhNWEgbGVnYWN5LXRydW5rCiszNzQ1NCA4ZjRiZWQ5NzBmZjk1MTQ1NmJiNGZjYWQzMjM4MTFjNWRiNzI0OTUxIGxlZ2FjeS10cnVuaworMzc0NTUgMDc3OTU0ZDQxYzUzMjViM2RkM2M5OTY1NzJiMDU4NzFjNGJjODgzZSBsZWdhY3ktdHJ1bmsKKzM3NDU2IDJmNjQxOWQwMDdhOWNiODY0MDM3ODIyNTk2ZTdlZTE4YTQwMGI1M2YgbGVnYWN5LXRydW5rCiszNzQ1NyBiNDg0NzRiYWQ3NmZjZTljOTEzYTZiZTEyYTBhYjdiNTg4NDM0ZTMwIGxlZ2FjeS10cnVuaworMzc0NTggZTkzNzBiY2YwMmFkYmYzYjI2MzU2YTYzNTIxYWI0MzI0YjEyNzQ1NyBsZWdhY3ktdHJ1bmsKKzM3NDU5IGE3ODk1YWVmMWVlODAxZDg4N2FjYTI0NzM3ZGNiNWZjZjdlM2E0NzUgbGVnYWN5LXRydW5rCiszNzQ2MCAwYzMyZjAxY2NkOTk3ZThmNDU1ZmJmZmU0YTFlNGUyMzU2MGFlYTU0IGxlZ2FjeS10cnVuaworMzc0NjEgMzU1YjE1ZTRhNGRhMjMyOWJiOGZmNjhkOTQ1Y2Q5ZjY4YjZiZmJhZCBsZWdhY3ktdHJ1bmsKKzM3NDYyIGNmMWFhYTdlNDAwNTVkOWM4NWQxZDdhZGY1YmFlMGYyNWJkMjU0NmMgbGVnYWN5LXRydW5rCiszNzQ2MyAzMmRmMWQwNWNiMmQ5NjM4NTU4NjBhM2RkY2VlMzk2YTFlMTNmNzNkIGxlZ2FjeS10cnVuaworMzc0NjQgNGI1NDE2YjE4NDY2NGZlYThkZTkyZjY3OWUzMzIwNDYyMWEzZTM1YiBsZWdhY3ktdHJ1bmsKKzM3NDY1IDc1MTE1ODVmMmU2YTQ2YTZjODliZTVhMmUzZDdmYjkxMTQzMDhhMjAgbGVnYWN5LXRydW5rCiszNzQ2NiA3ZDY2NzllZTM5ZjkwYmI2NmI4MTY2NmE3OTFkMDQ0OTU0M2Y3YmIzIGxlZ2FjeS10cnVuaworMzc0NjcgZmMzZTg5NjQzODg4OTAyZWNjYWQyYjJhMjIzNTM2YjdhNjFmZWFkNCBsZWdhY3ktdHJ1bmsKKzM3NDY4IDY0MTE1MmZiN2Q4ODI5NmQyYmEzZGUzYTgxY2UxNmUyNTAyODM4NWIgbGVnYWN5LXRydW5rCiszNzQ2OSBiMzQwOGE4NWM4OWM5ZDM5MjljMDBiMWE5M2ZiMGQxMDUxYzMzOWJhIGxlZ2FjeS10cnVuaworMzc0NzAgNGQ3YjBkMjA2YmM3M2FkZWI2NWVhMDMzOTUxOTAzNzY1ZWQyNzhmYiBsZWdhY3ktdHJ1bmsKKzM3NDcxIDU0YzMzZDA5NWU3ZTQ5YmNkZmUyNDgwNGU0Nzc1YjM0ZGQxMGM0NDMgbGVnYWN5LXRydW5rCiszNzQ3MiBkYjZmMjFlZTYxMzU5NzI1NDE2Zjk2M2ViMWRhMzI4N2MxNTliODI5IGxlZ2FjeS10cnVuaworMzc0NzMgMDg0OTg4YzIwYjc1Y2U1ZDE5MmE0NGNjZjgyMzc1ZjY4NTU5ZjJhOCBsZWdhY3ktdHJ1bmsKKzM3NDc0IGI4OTIyYTM2ZjA4MzgzZjk4YzAzN2QwMjQzZGFiNWQyMTZmZjYxOGUgbGVnYWN5LXRydW5rCiszNzQ3NSBjN2MzOWI3OWU1YjdlOGE1YWYzN2I2ZjVhZDQ1MDlkODM4ZGViNGY3IGxlZ2FjeS10cnVuaworMzc0NzYgNGVlNDhlMmVmYjY4Nzk3NDVhMTM4OWYxMzVmYzI2NThjZmE0NTg5NiBsZWdhY3ktdHJ1bmsKKzM3NDc3IDc2NjRlOGJhZTE5ZTIxYjU0OTdhMjYzZjAyNGRiOTMyYjFhNDA4NDAgbGVnYWN5LXRydW5rCiszNzQ3OCA4MzEzMTlmMTAwZDBhOWYwZGMyMzIxYWNmMzYyMjc0MmRlMWM5YTM3IGxlZ2FjeS10cnVuaworMzc0NzkgYjExZjkxNjJlZDBkZDU0NzkzNGVmZmEzMzM5M2QzOTg5NDU2OGZiYiBsZWdhY3ktdHJ1bmsKKzM3NDgwIDMxYjA4NjcwZWJkZGI1MDFhZjA0ODc4NWNjZTdmY2FkZjk0ZGI0OGYgbGVnYWN5LXRydW5rCiszNzQ4MSAyYjljMTk4NzJiMDE3NjBmYTVkZWEzOTRhNDU5NmExOTljNmMyNjEwIHJlbGVhc2UyMy1tYWludAorMzc0ODIgOGUyMGVlMmVjYzBjOWU2ZTAwNmFjZTNhMmI1MGY5MDE5NmVlNWRhOSBsZWdhY3ktdHJ1bmsKKzM3NDgzIGU2MzE4MDVjNzFiMDcyZjYwZDU5NDk5MWJlMTJmMDRiNjJlNWQyMGIgbGVnYWN5LXRydW5rCiszNzQ4NCAyN2FhMGUxMTkzMzBhMzdlYjVhZDc2NDdmZjdkMjBkNDcwZWExMjk3IGxlZ2FjeS10cnVuaworMzc0ODUgMzRiMDcwMDhhYTc4YmU3OTk0MjFjMmY5MTIxYTdiN2E0MTQ2MjhjNCBsZWdhY3ktdHJ1bmsKKzM3NDg2IDYzZmMwNTIyYTk1YjUzNTVmOTFlYzk5OTQ0MTIwZmE4MzhkMWZkODQgbGVnYWN5LXRydW5rCiszNzQ4NyA4ZTlkY2ZlMTRkODE2MmU0ZGE1MDljYzg3ODY5ODYwNGE3NTkxYjBkIGxlZ2FjeS10cnVuaworMzc0ODggNTczMGY3N2UzN2U0MWI2MzQxYjlmNmU5YTM3ZTU3YTJjMTc3ZjE5MCBsZWdhY3ktdHJ1bmsKKzM3NDg5IGYwNzRkYjBjMTRhODUzZjkwMzJlNmFjMDkxN2Y0NzJkMjg0MWE3ZmMgbGVnYWN5LXRydW5rCiszNzQ5MCBjZDU4YTliNGJhNjYzODY0Mzc2NGQ3NDQyYTAwMjk4MWFkNTUyNDRlIGxlZ2FjeS10cnVuaworMzc0OTEgMGFlMGJlZjEwMDE0ZTVmYjg1MjcxYjdiMjYyNGI5MWU5OGRkMWQ5MyBsZWdhY3ktdHJ1bmsKKzM3NDkyIDgzYTNlMmQxOTE0YTkwYTRkMzAzN2VjMWI0NzI2MDYzZWU3OWY5MmMgbGVnYWN5LXRydW5rCiszNzQ5MyBjODRkYmU3MTdkNDljZDg2NGViZmY0N2E4YWRkYzFhNTVmYmY2MTQ0IGxlZ2FjeS10cnVuaworMzc0OTQgMGYwZGRiNGNiMDQzNzM0NDgwMWUzZTJhNTk1YjI2NmQ2YjdlY2YwOSBsZWdhY3ktdHJ1bmsKKzM3NDk1IDY1NWY3NGVhMGYzMWY1NjFhMGU4NWMyZWY0Y2EyNmNmY2M3ZWM5MWIgbGVnYWN5LXRydW5rCiszNzQ5NiAyMzQ0NGNiZGVhNTU1MGE0YTUwZTE0ZjkzZjM2NGYyODllZGYzMjEyIGxlZ2FjeS10cnVuaworMzc0OTcgMjc5ZjAxZTcxMDcxYmY1NjM1MzU3MzgwODM2NjMxZmFmYjI4YWE3YiBsZWdhY3ktdHJ1bmsKKzM3NDk4IDZiZDRhMTA1NjcxNmI3NzJhNDczOTQ4MWMyNDVkOWFjYjZiYjhhNGUgbGVnYWN5LXRydW5rCiszNzQ5OSA4MzZlOTJjYzVjNGZiZGI2YTlhYjBiYjc2MDdlOGYyNDNmMzdkODExIGxlZ2FjeS10cnVuaworMzc1MDAgZTVkZTY5OGVjZDRiNGUwNTlkNWViZWJlOTdhMTFkNGViMmYwMGYyMCBsZWdhY3ktdHJ1bmsKKzM3NTAxIDZmNGJjYjNiZDIwMmU0MzBmYzc0ODgxMzkyMjgyZjJmMjBmMGE3OGQgbGVnYWN5LXRydW5rCiszNzUwMiA1ZTE5ZmQzNjQyZjA3M2UyZDM0OThmYjJlMTM2ZjlhZDJkYjAxZDRmIGxlZ2FjeS10cnVuaworMzc1MDMgNDAzNTBmYmU2NjVkZmYxYjJkYThjNmFmMGRkNTM4ZGQ5MzFjY2RhMSBsZWdhY3ktdHJ1bmsKKzM3NTA0IDMwY2IyMDBkNDE4Y2RmZWVhODU2OWM1MTE3NjY5MzQ0N2E0NGVhYWUgbGVnYWN5LXRydW5rCiszNzUwNSBjZDcwZjFhYzNjMjVkNjg2MGE5NmUzYjdmYjQ5OTExMTExMTYwZDQzIGxlZ2FjeS10cnVuaworMzc1MDYgNGZiOGM4OWY2NmEwYjk3NjI1YTZiMDBlNDg0ZGZhYmYxZjgzYzlmMCBsZWdhY3ktdHJ1bmsKKzM3NTA3IDkxNjM0ZjNiYTIxM2E1MmI5MDMwYTRlZDUyZmQwZThhZDI5OGUzNzMgbGVnYWN5LXRydW5rCiszNzUwOCAwMGMzNmUxYmM1MGJjNmIyYzg3NmZhODAyZWRjOGU2MGRlMGRkMTg1IGxlZ2FjeS10cnVuaworMzc1MDkgMGM0ZjA5NTg2M2I5ZWQyYWI3YzIzOTlmYmViMmFiMDdjMjc4YjlhNSBsZWdhY3ktdHJ1bmsKKzM3NTEwIDNkOGQ3ODIxNzU5OTlkOWQ1ODIyYjI1YWQxNmQ3NTNlNjNhMTExOTggbGVnYWN5LXRydW5rCiszNzUxMSA1YTI5MmEwM2VhNDE2NzczNzAzMTA4NDc0NzhmZGNhZWJjNGMwYjQ5IGxlZ2FjeS10cnVuaworMzc1MTIgN2M1MGNkZTFlNGZkMDVlNDg4NGQzNzMxYWQ3YmEzOTVkYzI5YzM0ZSBsZWdhY3ktdHJ1bmsKKzM3NTEzIDc0NTBiYjkzYzM5NWNiMDY0YTE5YzM3OWI0NmQ4MzczNmRjM2ZkMDggbGVnYWN5LXRydW5rCiszNzUxNCA0ODZlOWM0MGNmYjkzZmU0ZjA2MDIyZTA5ODAwOTdiMTAyZDdkN2U4IGxlZ2FjeS10cnVuaworMzc1MTUgOTQ2NjEyZjY0YTgzMmU0NjdhNTFlMTk0ZDM4NWMwYTdkZjZlOWQ5MyBsZWdhY3ktdHJ1bmsKKzM3NTE2IGM1OTFmYTFkNDM1ZGYwNzU4NzRiMWJmZjdiNDZlN2RlMjkxODlmYTAgbGVnYWN5LXRydW5rCiszNzUxNyA3ZTQyYThlYmIzZWZmMTE3Y2JiYTc3OTZjOGIxZTJkZGQ3YzQ4Njg0IGxlZ2FjeS10cnVuaworMzc1MTggYzgxOTI1YjYxM2RhYjA2MzYxNjI1NjQ5MWI4MWQzYzU1OTVkMjFiZiBsZWdhY3ktdHJ1bmsKKzM3NTE5IGMwOTdhYmRiNTU2NjNlM2U0Y2JmYTdlODkwMWIwZDVmYzgyMjAwMzMgbGVnYWN5LXRydW5rCiszNzUyMCAwYjdlMzE4ZWYwOTI2NTU4YWNiYzhhYjU4ZTE1MjU4M2FkZTZmNTA4IGxlZ2FjeS10cnVuaworMzc1MjEgNDViMTk4OGUyNjkyNGZiYWNiMzE4YzVhNWZhNWJmMjkwZjcwNmJhOSBsZWdhY3ktdHJ1bmsKKzM3NTIyIGNlODEzYTU3ZDQ0ZDNhYWU4OGM0OTBkYTZjY2I5NWViMGVkMmJmZWIgbGVnYWN5LXRydW5rCiszNzUyMyA5MTg5OTQ2ODM4ZWVjY2Q5ZDViYzZhNDRmNTA0NGFjOWY1MjU1ZTdiIGxlZ2FjeS10cnVuaworMzc1MjQgMGJmZDM1YTc2YTQ0ZjgxMmNjYTZkZTZkZmNlYTk2ZWUyNjc0Y2FkMSBsZWdhY3ktdHJ1bmsKKzM3NTI1IDYzYTAzODliZDVmY2E5OTYwNTY4ZDNmNWMxMTc0NzNjM2YzNTQ3NDAgbGVnYWN5LXRydW5rCiszNzUyNiBjYzQ2ODQwNTFjNDYzMzUzMDUwM2FmMjU2MjBmMGJlYzIxOWQwMTNkIGxlZ2FjeS10cnVuaworMzc1MjcgNTQxMjA5NmQwZjk1ZGUwOGM5MjZjYzNjNmIyNWI0ZGJmNGE5OWQ5ZCBsZWdhY3ktdHJ1bmsKKzM3NTI4IGUxMjk3NmU5OGY2MTNmNDMwZjBiYjgwYjEwYzQwMTJiYzlmZDEzYjAgbGVnYWN5LXRydW5rCiszNzUyOSA1ZGVmNjZmMmM5YWJlZTVmMDhlYWEyODQ0Njc0ZWZmMDQ5NGY3YjRkIGxlZ2FjeS10cnVuaworMzc1MzAgYWI1ODhjZTllNzFmYmZlMGMyMzc4NTY1MGRhYmFjZWQ2NWUwNmE1NiBsZWdhY3ktdHJ1bmsKKzM3NTMxIDExOGI2ZjY5ZTNmMTUzYjc4NzllMzRhYzZkY2RiMGI1MGEyNzAzZDYgbGVnYWN5LXRydW5rCiszNzUzMiBlY2YxZTg1MzQwNmI3Y2QyZWRhNjkzMzI2MmQxMmM4ODllZGI1ZmI5IGxlZ2FjeS10cnVuaworMzc1MzMgNjBiZjJhZmQ3MzEyMjU0NmVmYWYxYTdhNjllZDAwNGZlMGI5NWIxOCBsZWdhY3ktdHJ1bmsKKzM3NTM0IDg5ZmFhY2Q5ZWM3Njk1NTIzMWE2ODM1ZWM1MTQwY2Q1NTA5ZjVkMjEgbGVnYWN5LXRydW5rCiszNzUzNSAyMmVlOTE2NDNiM2YzNGI5NDdkMDE0OTBmMmFkZmU2ZDQ1OWE5MTJlIHJlbGVhc2UyMy1tYWludAorMzc1MzYgYjBmM2E2OTNiODU0YjdmZjgyNjYxZTY2MWM2MTk4YzgyODc5NWUwMyBsZWdhY3ktdHJ1bmsKKzM3NTM3IGQ4ZTc0YTBiNDY3NzVkYjY4NGE4OTNlYTg3YTY1ZmJlM2VkM2NjMGMgbGVnYWN5LXRydW5rCiszNzUzOCBkOTlkZTY1ZjU0MjU4MjdiYjVjYjc2OTE5MmY2M2Q4NTI3YjYwNmQxIGxlZ2FjeS10cnVuaworMzc1MzkgYmE4ZTE4NTRhODRiYWFjZjk0ZWExNjg2MmZiYTEzZWQ0ZTA5ZGJjZSByZWxlYXNlMjMtbWFpbnQKKzM3NTQwIDVhZTNhMWM4MGUzZmU3NTg5Y2NhMTBmYTkyOGIzOWVlMTY3ODIzODQgbGVnYWN5LXRydW5rCiszNzU0MSAyNjJlMWNmNDFkMzRiYzc1ZjljZTg3YmY0YzRjODZjNjA0ODI0NjBlIGxlZ2FjeS10cnVuaworMzc1NDIgYjMxYTUxMjA2Nzc0ODU4MjNjNmU0MTRkN2EwOTFkNjRjYWI4MjIyZiBsZWdhY3ktdHJ1bmsKKzM3NTQzIDU1ZmJhODg5MzBiYzdiODE2NjlkMDE1Mjk0MmExMzEwZTQwNGNkYjggbGVnYWN5LXRydW5rCiszNzU0NCBiY2FmYjY4YWQ5ODU4ODAwYTUyNjI3ZmM5MTBlNjM2NTJjNzZlMTQ4IGxlZ2FjeS10cnVuaworMzc1NDUgNDc4NGJmYzk5YTQxYmUwMzUwN2RmZmY5OGJmYjJiNGI1YWNkODkxZCBsZWdhY3ktdHJ1bmsKKzM3NTQ2IDM3YzY1YTZiMmVmN2Y0ODEyZGUxMTFmN2I0Y2U3ODkxYjhhOWM5NjAgbGVnYWN5LXRydW5rCiszNzU0NyBmZGEzNmFmMjI2ZmIyYmQ5NDdmODE2MDE3Y2U1ODFhNjUyNzNjYTYxIGxlZ2FjeS10cnVuaworMzc1NDggM2U2ZjU2ZTgxMDRhMmJkYzNkYTJjNjEzZjdkMmRmZTUzZDEwM2Q5OSBsZWdhY3ktdHJ1bmsKKzM3NTQ5IDlhMzg2MjVmYTJiMDhkNDZlNTRhYzdmNjM5NjQ5Y2YxMmEwMzU4NzggbGVnYWN5LXRydW5rCiszNzU1MCAxNzAxZGFlNjQ3NGUxNDgyZjA2NTIxMzkxZTRiMWNiYmNhNWI1NDE3IGxlZ2FjeS10cnVuaworMzc1NTEgNjgzYTJmOGY3NzFkYzcxOGRjNzU3YmIyNDVhOTI5YTRkMzMyNjBmZCBsZWdhY3ktdHJ1bmsKKzM3NTUyIGFmMzAwNDAzZWRiODIwZjRkMTFhYmUyZjYzZDQwMjY4ODA0ZWM1YjUgbGVnYWN5LXRydW5rCiszNzU1MyBhNWM4OGYyZTg2YTNmNDY3ZjczZGNmOWMzZTZlMjM4YmNkNDk5NTU0IGxlZ2FjeS10cnVuaworMzc1NTQgMzYxN2QxZWUyNzk3ZmJlNjJlNGZiODZjMjMzYzNmZTU3OGYxZWMzYiBsZWdhY3ktdHJ1bmsKKzM3NTU1IGQ4ZmZmNzA2YTljMjVjZWY4MTQ0M2YyMmNlZmQ3M2NmZTVkMjViMDUgbGVnYWN5LXRydW5rCiszNzU1NiBiYTliY2YyMTQxYTIzMjliNTc3ODMzMDI3ZDM0OTk3YzRkMWU0MDhkIHJlbGVhc2UyMy1tYWludAorMzc1NTcgOTYyZmEzZTIzMjE1YmU4ZjFiMjg0OTgxMWExMGRjMjg5NzRlMmM0MCBsZWdhY3ktdHJ1bmsKKzM3NTU4IGJhOWZkYzQ0Yzc3ODI1NjZjMzU3NjI0Yzc2ODY5NzI5NzdhZDM4MTcgcmVsZWFzZTIzLW1haW50CiszNzU1OSA5MjRiYjJhYWQ0ZjQ4MWI4YjE0YTAyODllODU1ODY3ZWY1ODUyNDdiIGxlZ2FjeS10cnVuaworMzc1NjAgZGMzYTY3NjdlOTYwODQyN2ZhNzcxMzEyMDZkOTlkZTJlY2I3NjY4ZSBsZWdhY3ktdHJ1bmsKKzM3NTYxIGFhYzRjYzY2MThiNTRiYjhlYmNiNjcwNmU2NTI0Y2RmNmJjMTE5ZTEgbGVnYWN5LXRydW5rCiszNzU2MiAwOTBmZmNiODNmMGFhZTQ2ZGRiMWJkY2JlM2QwYWQ3N2ZhMWQ2YWU4IGxlZ2FjeS10cnVuaworMzc1NjMgMGMyNmRiMzgxNjczZTI0MDU3MzJmYWViMzBhMDU0MGFiMDg1YzJkYiBsZWdhY3ktdHJ1bmsKKzM3NTY0IDY2MzI3NDE5ZWIwMDQ0YmZkYzUzNDg2ZDNiNDI1OGQyNmZhYTM3ODIgcmVsZWFzZTIzLW1haW50CiszNzU2NSAwOGI3Njc0NzA2NjNlMzU2OTA4MjMzNDU4MTFhNjdmYjUzMDg2NmQ1IGxlZ2FjeS10cnVuaworMzc1NjYgMzI3MWVhNjBiODJkYzMyMWNkYjA3YWQ2ZTVkMTBhYTVkYjYxNzQyMCByZWxlYXNlMjMtbWFpbnQKKzM3NTY3IDU0ZTY1MjdmMzE1MDg5ODEwYzY2OWE0MTFhMWVhM2I0NDczYjQ5ZWEgcmVsZWFzZTIzLW1haW50CiszNzU2OCAyOTViZDhjNTVhNzg4YzMwM2YxN2ZiYmVlYmI5ZGY1OWEwOTI5NzQxIGxlZ2FjeS10cnVuaworMzc1NjkgODkxMDQyYzk0YWVkMDFmNDRmZWIxMjI3MjUwYzEzNzk2YjY3MjFjNSBsZWdhY3ktdHJ1bmsKKzM3NTcwIDQ5ODFiYTU0ZjQzZDgxODEyMTYyODMzOTQwZTg5ZmM1NzdhYjE3NmYgbGVnYWN5LXRydW5rCiszNzU3MSA3NDJmZGFjM2Q1YWUyZmY0MzVlYjBkMWUyNWRiZWMzNzAxMTdlN2Y4IGxlZ2FjeS10cnVuaworMzc1NzIgNDAxM2YwYTUzODM1MTBmODEyNDdjMmI0ZWJmZDE5YWI3OWY2MjBmYyBsZWdhY3ktdHJ1bmsKKzM3NTczIGU3YzdiM2FmNjE2NDY4YTMwMmM3ZjZjYmMxYjU1OWQ3NThjN2QzY2UgbGVnYWN5LXRydW5rCiszNzU3NCA0NjE0NDRkZTdiMWZkMGExMzJjMDU0N2MwNTcwZmZiZTQ5NmVlNTg4IGxlZ2FjeS10cnVuaworMzc1NzUgNjY0YjE4YWE2ZmMxMjRiMjU1ZjBiMDk1NjA5YzlhODY5MWRlMWMxZCBsZWdhY3ktdHJ1bmsKKzM3NTc2IGJhYTI2NTNmN2E3NmQ5NGI4Mzg5MDE0MmM4NGFhMjUxOTFmNTUzMzkgbGVnYWN5LXRydW5rCiszNzU3NyA1MTdlNGVjMGRmODljYzUyOTljYzU2NGViODdkZTZhMDgyNDQ0MjVmIGxlZ2FjeS10cnVuaworMzc1NzggNjM1ZGQ4YTllYmQ5M2MxMjExOGJhMTBhM2ZhNzhjMzcyNmM0YWFkZSBsZWdhY3ktdHJ1bmsKKzM3NTc5IGE0NmI3NmViOTA1M2M4M2QzZjg3YTI4MmZjZDhjMmU3MzUxOGYwYjIgbGVnYWN5LXRydW5rCiszNzU4MCBjNTUyNDQ2YjdiYjJmNGI5ZWYzN2I5ODJiZDE3NjhjMGVjM2RiMjAxIGxlZ2FjeS10cnVuaworMzc1ODEgZjhjYjhmMGFjOGYxM2EzNTM3OTM2NGNlNzIxMmNiYmQwYjY3ZDZhYyBsZWdhY3ktdHJ1bmsKKzM3NTgyIGU2ZjFhZTEzYmU4NGRmMmY2ZDczYmUyNmUyZGIwMDUwNjIwM2EwY2EgbGVnYWN5LXRydW5rCiszNzU4MyBmMjM0YmUxNzI4MDAwZTljZTIzNjRiYjE3MTBkMzFjMDRiMmY3M2E3IGxlZ2FjeS10cnVuaworMzc1ODQgYzJhZTQ4MmZmNDJkNjNkZWJiNGYyOTMwNWU0NGU3ZWM3ZmY4ZGRkYyBsZWdhY3ktdHJ1bmsKKzM3NTg1IDJjNzliNTBhZmJhYjVlM2Q4MzUwZjFiMTJkZTc2ZGY1YmMxNjIxYmYgbGVnYWN5LXRydW5rCiszNzU4NiA3NGE1N2U2Njg0ZjM5MWNkMzM2OGY5MGU0NWRjM2UzMzNkZDNjZjI4IGxlZ2FjeS10cnVuaworMzc1ODcgNzY2NDE4MjRjZjA1MzU3YmZiNzRjYzIxMDY3ZDE0ZGQ3OGUxY2EyNSBsZWdhY3ktdHJ1bmsKKzM3NTg4IGM3ZmUyMjc3ZDE3MWQ0ZmE4YTViNzBkYWMyM2U2ZGIzZWQyY2JiNjkgbGVnYWN5LXRydW5rCiszNzU4OSBjOWIxZjI2OTRlOThhYWZkZjkzYTRjMjlhMDc0OTFkMzQxNmFlZDQ2IGxlZ2FjeS10cnVuaworMzc1OTAgYWNjMTkxYjcxNGI5OTczNTdlOWMzODRkMTlkNTJmY2VlMzk0MjRhZiBsZWdhY3ktdHJ1bmsKKzM3NTkxIDAyMzZiNjUzMGM0NjMxYzNlMGQzMzUzMWE0MDkwOGE2YjVhYjE1ZDcgbGVnYWN5LXRydW5rCiszNzU5MiBhMDFiZTM1MGVkNjE1ODFiNDI3M2I2MzIwYTYyZjJkZDRlMGZhZjE3IGxlZ2FjeS10cnVuaworMzc1OTMgMGQ2ZDU2YjIxNjRiN2NlOGM5MDBiMjgyNzU0NzY0ZWZhMGU3OThlMCBsZWdhY3ktdHJ1bmsKKzM3NTk0IDQ0Y2RhYzliZjc4NTllYjc3Y2U2YWQ2ODM0ZDIwM2QzZDVmNGY1MWIgbGVnYWN5LXRydW5rCiszNzU5NSA1M2M0NjhkMDk1NWJhYTA4ZDFlOWRiZWViZjZjM2EzZTRlMzM3MzFlIGxlZ2FjeS10cnVuaworMzc1OTYgZDk0MDRkYjI5YmM2NTc3YmQ0MDlhOTk1YjNlNzcwZDllNjdkZDExMCBsZWdhY3ktdHJ1bmsKKzM3NTk3IDM5YTEzZTM5ZDI0ZWI5ZGUwZjBiZjIwNzljMTQxZTkzOTgzM2IyYTQgbGVnYWN5LXRydW5rCiszNzU5OCBlYjNkNjAzMGQ5NTAxMDcwZGM5MjcyMGI4MmU1Y2IzZTRkODFmNGIyIGxlZ2FjeS10cnVuaworMzc1OTkgMTM4M2M0NjkyYWY3NGRjYTc4Nzg1NmVkMWY1OWE1OTdmYzIzZTI0MSBsZWdhY3ktdHJ1bmsKKzM3NjAwIGE4MDQyODBlMzRmOTBmZTIxNGUwN2FkNmM0MDMyNzVmNDUwZDc5NDggbGVnYWN5LXRydW5rCiszNzYwMSBlNGY3ZDNiMGM1ZDRmZTQ3ZmRiMjdiY2YzN2E4N2UwYWNmNTM0NjIyIGxlZ2FjeS10cnVuaworMzc2MDIgYTRmNzQ3ZTcyMTM4MWNmN2RmZTc2MzRmMWE5MTRkMTU3ZTE2MDBhOCBsZWdhY3ktdHJ1bmsKKzM3NjAzIDc2MzU1MzYzMTAxYjBhMTE1NTAxODc1YTA0Nzk4NDQwNDU1MDVjOTMgbGVnYWN5LXRydW5rCiszNzYwNCA0NGUxNzZjY2EzMzcyMWFkOGQ4M2Y1MDczYmYxNzQ0YmZhODVhNjYwIGxlZ2FjeS10cnVuaworMzc2MDUgZDFmMGM3MDc5YjgyODc5YTU1OTM5NzY2ZThiYTVhOWMwNzY1YmM4NyBsZWdhY3ktdHJ1bmsKKzM3NjA2IDE3OWU0MmVhMmU5Yzk3MTk4ODE3MTI4NjE2ODA5MzMzY2M0MDAyNGYgbGVnYWN5LXRydW5rCiszNzYwNyA0NjgzOTgzZTg0YjM1NWQxYWUwNDM5MjM5NWRkMmQxMDZjZDUzNzY2IGxlZ2FjeS10cnVuaworMzc2MDggOTljYWJhODE0NTY1NGNhMzk1YzM0ZjU3ZDUzZmIyMmEwY2EyMTg4MiBsZWdhY3ktdHJ1bmsKKzM3NjA5IDc0Y2ViNmZjYjQzMjdkZDhjODVlMTAwZDg4OGIzNmQ1ZjlkZWZiMzUgbGVnYWN5LXRydW5rCiszNzYxMCBhMjdiMDI3MTcxMWJkMDViYjAzNWVlZjJiYjk0MThlNTcwN2ViZGY4IGxlZ2FjeS10cnVuaworMzc2MTEgYjBlYzRjOWQ1OTViMDBiMjY2YmQxYTkzOWU3Y2JmNzIwMGQ5Yjg5MyBsZWdhY3ktdHJ1bmsKKzM3NjEyIGI4NmM3YzQ3NzRlZGZkODMyZWI2OGZjOTQ5ODdlMThjZGIxODFkOGEgbGVnYWN5LXRydW5rCiszNzYxMyAyY2MxMDdjOTY0NmUyYmRiMDNmMmQwYTI1YmQ5NzlmNmU0ZWUzNDVhIGxlZ2FjeS10cnVuaworMzc2MTQgZWM5OTNiNzI2NjA1NzI4OGRlOTUzYjc5NDkyNjM4MDE0NzE2NjFjNiBsZWdhY3ktdHJ1bmsKKzM3NjE1IGFhMmQ2MDYwNDk1YTA3YmI0ZjM3YWRhOGVhYzk3NDhjMTM0MTBmNTkgbGVnYWN5LXRydW5rCiszNzYxNiBkZGMyZDZlNTQ3YzE1Mzk0ZjgzZGVlNjA0YmJmYTE1ZGE0NmM5NjgwIGxlZ2FjeS10cnVuaworMzc2MTcgOTJlMDViNjM0OTk3ODY5MDZiNDFkNWE1M2EyN2Y1ZjdiZTNhNTkyZSBsZWdhY3ktdHJ1bmsKKzM3NjE4IDEwYjI1NDE0NjI4Y2RiODJjODBkMjYwZjE5M2U2M2ExNzMxNDM4OTAgbGVnYWN5LXRydW5rCiszNzYxOSA0ZjhkYjU1Y2UxMjRhMmVhN2Y4YmMxMDM0MjU3ODc4MzFjMWY5NDExIGxlZ2FjeS10cnVuaworMzc2MjAgMTk3Nzc1MmNmODA3YmM3ODlkOTAwYjkzZmMxNjgyZTViYjEzZWExYiBsZWdhY3ktdHJ1bmsKKzM3NjIxIDhhNTA2MWJjZDQxNzlmODI0ODAwODVjMDE2ZDQ2ZjRlYTRiNWY4ZGIgbGVnYWN5LXRydW5rCiszNzYyMiBmYjI3M2E4M2M3NWZkOTI1NzE5Nzg5MDVhZjU4YzgwMjRlZDQ5YTE1IGxlZ2FjeS10cnVuaworMzc2MjMgMTFkMDFmYzY1MGRjMDUyYWZkNDljNzQ0Yzk1MGU5MzU1ZTk3ZWE5NiBsZWdhY3ktdHJ1bmsKKzM3NjI0IDQ2MjE3ZDA1YTQ3NjZhNDYxYmY0MmM4ODBhYThhZDEwNzBhYzIzMjEgbGVnYWN5LXRydW5rCiszNzYyNSBkMTIyODEyN2QyOTQyNWY2NDRlYzc5MTQzYjIyNjA2YmJlZmFjMmE4IGxlZ2FjeS10cnVuaworMzc2MjYgMjZmZDAwYjM2OGYxZDQ1MmU3NGI2NDFlNjZjYTE2MmQ1ODQ0OTA4ZSBsZWdhY3ktdHJ1bmsKKzM3NjI3IDE2NmJkMzM5ZDNiZmQ2MTljNGQ3MDU1YWQ4NjEyNDAxZWY4MzgwYTYgbGVnYWN5LXRydW5rCiszNzYyOCAyNmJlZGY2M2U0YTg5YzUzZjhmOGZiMzVlZTE5NmQ0YmM5NDA5ZmRjIGxlZ2FjeS10cnVuaworMzc2MjkgYjMwOGUxNWJkN2ZiYTkyNWYxNzc3MzExNmY5ODVkYjJjMGNiMTI5NyBsZWdhY3ktdHJ1bmsKKzM3NjMwIDE5MDdhZDU0ZDM1MWNlNzdmYTgyMmE1ZTNhYTMyMDcxYmY3Y2IxZGYgbGVnYWN5LXRydW5rCiszNzYzMSA1NTQ4MmU5ZGViNjYzODM2NGMyMDMyYjBiMWVlYzg4MTY0ZDFhYWFjIGxlZ2FjeS10cnVuaworMzc2MzEgNTNjZmYwNDI4Mzg1NWFkZjg4ZWQwYzBmZDM2OTg4MjdjYTg0MzYzNyBsZWdhY3ktdHJ1bmsKKzM3NjMzIDcyYzUxMzFkNGM0YWYwZGIzN2FiNDE1Mjg3OGI1OGRlMDAwZWI2MWQgbGVnYWN5LXRydW5rCiszNzYzNCBjNmFhYzAzNDc0YzVlMjM4Mjg2YWNkYjQyZjE0ZGVkYzdkZWQxZjk0IGxlZ2FjeS10cnVuaworMzc2MzUgODhiZjQ4YzA2OWY5YzM2MjQ5NWJkNGY2YTY1ZDI2M2ZlYzZiMjA4NSBsZWdhY3ktdHJ1bmsKKzM3NjM2IGJhNzVmZGE5MjIwYzJhMTU0ZDY2NTJlMzAwYmY1ZmRlY2E3MmQ3ZWMgbGVnYWN5LXRydW5rCiszNzYzNyBhYjA5ZGFhYzU2OTFiNzhjNDliYjQ0NzI1MmUyMjBkZTY2NTczMmRiIGxlZ2FjeS10cnVuaworMzc2MzggZmJhY2JiMjYyNzg5NDk4MTllMGI2OGM1MDUwYzBiM2UwYTlhMzNkOCBsZWdhY3ktdHJ1bmsKKzM3NjM5IGUxNWMxNWE0ZmJlODgxNTExMTlhZTMzYmQxNWM0MzM0YjNkNDY5Y2MgbGVnYWN5LXRydW5rCiszNzY0MCBjNWQ5NTFhMGUwYzNlOTBhNjI1ZTU3MmU2OGI0ZDEzYTk2OTliMDg0IGxlZ2FjeS10cnVuaworMzc2NDEgZTRiN2M5MjNlZDVmMjczN2Y2NjE1NmE4OGY2NjAxZTE0YzY1NTdiNSBsZWdhY3ktdHJ1bmsKKzM3NjQyIGYxYzA0OGU3NDNlMmQ4MDYwYWE4OTQwZjMyYTY4YTExYWRiOGMxODQgcmVsZWFzZTIzLW1haW50CiszNzY0MyBjNjZlNmM5ZmZjMmRiZDNkMDE5YTc0ZDNiMWJmNjhhMDgxMTU0ZmFiIGxlZ2FjeS10cnVuaworMzc2NDQgNDY4OGQyYTI3M2Q5MGI4NmZiY2MzMDIzZTc3OGVhOWYzNjFhMGVhNSBsZWdhY3ktdHJ1bmsKKzM3NjQ1IGQ5ZDNiNDc1Y2ViMjU4NjYzYjEzMTIxZDc0NzllN2VlYWQ1NjI2MzAgcmVsZWFzZTIzLW1haW50CiszNzY0NiBhNTJkZTkxMWIyODQ4MTQ3MTgyMTY5Y2JmYzMyMmM2ZjUyZjkwMTAwIGxlZ2FjeS10cnVuaworMzc2NDcgM2ZkZDk2ZjBjZTg2NmM1YWY2OTIxZjM2ODQ4MTU4ZmFmYzBiZjNhNiBsZWdhY3ktdHJ1bmsKKzM3NjQ4IGYxNzVjOTgzODM3MzZkNTg3ZjQzNjE3NzYwYjYxMjU0YTljM2E1NGMgbGVnYWN5LXRydW5rCiszNzY0OSA4MTdjMjQxYmZmZmY4ZGY0ZjExODhmYmE2MzJkNGNmOGIyOWQxNTY2IGxlZ2FjeS10cnVuaworMzc2NTAgYmQxODg4ZTkyOTlmNzM1Y2U3MTE5NjQ5Yzk4YzdhZDRmOWZjZjFiNyBsZWdhY3ktdHJ1bmsKKzM3NjUxIGI4Nzc4Y2Y3ZDBlMzczODcxZmVmMDM5OTcyNjQ5MjczYTc3ODc4NDAgcmVsZWFzZTIzLW1haW50CiszNzY1MiAzMzQyYmMyMzAwYzNhYzJlNmNjYTVlN2Y3MmI3YTY1MDc5MmMwYjU2IGxlZ2FjeS10cnVuaworMzc2NTMgOGQ4YjM5MjM0ZGU5ZTZmMGJlOTc4MjcyY2ZmNTIzYWE0MTdmNmM3YiBsZWdhY3ktdHJ1bmsKKzM3NjU0IDgzYTAxOTEyODk5ZjYwNDYwMGFkYWU3YWZmMTEzNjI4Y2I4OGI2MjggbGVnYWN5LXRydW5rCiszNzY1NSA2ZGZmZGMzM2ZjNmM1YzAxZjAxY2M5NmVmN2E1YWJhODM0NjBiNzI0IGxlZ2FjeS10cnVuaworMzc2NTYgZDA2M2U0ZGU1Njc2MDBlYTZjN2I3ZWFkODhiMzdiZjEzZDQ4ODg2MSByZWxlYXNlMjMtbWFpbnQKKzM3NjU3IDIyM2Q4MjI2MDQ1MmFhYzI1Yzg1ODgwNzEyMWE0MWVlMGQ0NTA0MzAgbGVnYWN5LXRydW5rCiszNzY1OCBhMjI0M2Q2NmQ0MGJkYTFlMzE5ODVjNjkzY2Q4YzlmNDAwMDY1ZjIyIGxlZ2FjeS10cnVuaworMzc2NTkgNjljOTY4ODFhYWFkYjQ4NDgyZDAyOTQ5NTljM2ZhNDU4MmM1MGQ5ZCByZWxlYXNlMjMtbWFpbnQKKzM3NjYwIDY4MTliYTAyMzY2NzZmZTAzYzYyYjAxMDVlOGUxZWFmZWNiNmY0ZWIgbGVnYWN5LXRydW5rCiszNzY2MSBhZWI2ZmYzMDg4NDhjODc1ZDVlNGEzYjUyMzMwZDcwMjZiMzNlMmU1IGxlZ2FjeS10cnVuaworMzc2NjIgNGZlZGM1MjlhZDMyZGI5NTcwNDRjMWZlODFjNjVhMjMzNTQ3NDQ1NiByZWxlYXNlMjMtbWFpbnQKKzM3NjYzIGIxYTllYTZlOGFlMjBhMzNhYzBlNmNjZWMzYzA0N2YyOGY3Njc4YjkgbGVnYWN5LXRydW5rCiszNzY2NCAxOTlkYWNlMDI0YmEwNDRkNDUwZGRmMzhiZWY2ZDc5YWZmNTE3MmIzIGxlZ2FjeS10cnVuaworMzc2NjUgZDQ4NWU3OGE0M2Q2NTg0YmJiOTI4ZTM2MTY0ZDQyZDRlZWZlOWJjZSByZWxlYXNlMjMtbWFpbnQKKzM3NjY2IDVjODYyNDk2YTlmNmFhODMxZGE5Zjg3ZTgyYTk2MTBhZmRiNTkxNDggbGVnYWN5LXRydW5rCiszNzY2NyBkMmU5NTk0MDQ4MjY5MmI4ZThiYTYxNzIzYzI3YWY3ODU4ZTI0MzRlIGxlZ2FjeS10cnVuaworMzc2NjggZTljYmUwYWRiMjhhZTdmYTdhYzIzMTg5YWZlYjhjMmVmMzIzNDEyNyBsZWdhY3ktdHJ1bmsKKzM3NjY5IGE5ZTYwNTE0MDA3NDc3ZjIwY2Y0ODgyNzZkZDE1ODZkMTQyOTNmOGIgbGVnYWN5LXRydW5rCiszNzY3MCBhM2RmZDgwMTUzM2I2MTg0MWVkNzFjOGJhOWE5MTRmYWJjNDdhOTNhIGxlZ2FjeS10cnVuaworMzc2NzEgNDdiMzg0NTE5Nzc1NzU2MDZkZTJkYmRkYTU3NTY1YzEzNWM2OGI3YiBsZWdhY3ktdHJ1bmsKKzM3NjcyIDU5ZTBmZjBjZDNkNGM5MWUyYmZjZDM5ZWE2MGY2ODY1ZWM5MGNhYjQgbGVnYWN5LXRydW5rCiszNzY3MyBkNDQzNTA1ZTdlZWMxOGI5NDY3YjQ5MmRmNmQ1MmJhMjUwZWU1ODRjIGxlZ2FjeS10cnVuaworMzc2NzQgM2ZmMjUyNzE1ZDkzYjA0ZWZlZDZmNTJlYTFhMjg4MzEwYTEyN2NmMiBsZWdhY3ktdHJ1bmsKKzM3Njc1IDFjNjc2ZTg5MWIzZjlhODM3MmExM2Y2ZjMyNjljYTFkMzA2MTVlMmEgcmVsZWFzZTIzLW1haW50CiszNzY3NiBhZDkwODg4YjE3YmMwMjM0NTg5MWUxZWY2ZDJhNmE5ZmE2N2Q4ZGU1IHJlbGVhc2UyMy1tYWludAorMzc2NzcgZjU0ODY4ODU1YjFjY2RhYTJhNzgxNTBiZmZjNmI5N2Q4MGRjYzIwNCBsZWdhY3ktdHJ1bmsKKzM3Njc4IDgyMTQyYTI0ZTg0NWMzM2JkOWNmMDEwNDE5YWVlZmRlMzg2NmFiMGEgbGVnYWN5LXRydW5rCiszNzY3OSAwYWZiMjUzMGU5ODZhYTA2ZGQ2MGZiMzcwMmY0NTc0MjMxNTQyOTI5IGxlZ2FjeS10cnVuaworMzc2ODAgYjBmMGM1N2IxZTA1NTcwMjBiMjJhMTkwMGM1ZDJkMmMwMmUzYmVhMCBsZWdhY3ktdHJ1bmsKKzM3NjgxIGVkMDQxZTBlNDUxZWYxMWNiZTkxODgyZTkwNDc4ZmI3NmYyNWZhMzEgbGVnYWN5LXRydW5rCiszNzY4MiBiM2EzMGUyODQyYjk2NzViZDNlY2EzOWYxYTQ3MDZkNDgyM2RlYThjIHJlbGVhc2UyMy1tYWludAorMzc2ODMgOGQzOGYyZjIxNTFjY2E1YWEyMTk4MDBlYTVjMGUyNmE5NjllODBhOSBsZWdhY3ktdHJ1bmsKKzM3Njg0IDJhMTUzMThjNDAzOGMzMDQ3ZGM5YzFjOGEyYWE0OTNjZTIxZDM2YTIgbGVnYWN5LXRydW5rCiszNzY4NSBmMTQzMjlhNzg5ODE5MTIxNTA1NmUzZjU5ZGU4YzIzYjg4ZGU5YzQyIGxlZ2FjeS10cnVuaworMzc2ODYgYmYxOGNhY2EwNzMwNDM3MTcwNGRkYTI2YTU1M2RmNmYzMWNhYjM4MyBsZWdhY3ktdHJ1bmsKKzM3Njg3IGRiODcxMGYxMzY1MDg4ZWJkMDBmOWJjMmNlMWM2ZWQyNTNhZGQ1YTggbGVnYWN5LXRydW5rCiszNzY4OCAyOWI5NDViYzBhMTdmMWM5YTliMWE2ZGQ4Y2I2MjFhZjZlYmJkMTlhIGxlZ2FjeS10cnVuaworMzc2ODkgYWVkMjUyNmRhMWZjN2VkOTM0M2Q2NGM5YzgzYTZlMzRiOTg2ODcyMyBsZWdhY3ktdHJ1bmsKKzM3NjkwIDI4ZWYwYTNmNTdmNmNkNzg0OGE3NmZiMmZhOTYzMWI2ZDM0MDYyY2MgbGVnYWN5LXRydW5rCiszNzY5MSBkOTM4YjllZDMyZmZlY2FlOGM0MDQ5NDVjM2NlNjJiODliYjRhZDliIGxlZ2FjeS10cnVuaworMzc2OTIgMTdkODY2MWU3ZDEzYWFlNDZjYzQwYzVjOTE4NDI2NDE1MzgyOGI2NSBsZWdhY3ktdHJ1bmsKKzM3NjkzIDZjNDE2OTUyODRmNmZmN2M5NDk3NzRmNTYxNTRkMTRkYmYwYzI0N2UgbGVnYWN5LXRydW5rCiszNzY5NCAzMTcxMDFjZmZiNzI5MzQ1NTI3YmRmYjM4MTNiMGRkM2UyNmJkMGU5IGxlZ2FjeS10cnVuaworMzc2OTUgOWZmYzM0NDg5MWE2MjZlZGFhMjYwMWZjYWU0MDU5YjY0MWIzMWYxOSBsZWdhY3ktdHJ1bmsKKzM3Njk2IDYyN2Y3N2UzY2ViNjUxYmExZDBhYWQ2MGM0ZjU2Yjk4Y2I2OTA1NTggcmVsZWFzZTIzLW1haW50CiszNzY5NyAxMDUxMmNlYmEzMGM1NWNlNjRkNWEyNmE3ZDkwZjllMGRiNjQ4MTAyIGxlZ2FjeS10cnVuaworMzc2OTggZWYxNDllYTU5NGE0YzBmNGE4MTM4ZmQ0Yjk5ZjhhN2ZmMTE4MzZjYSBsZWdhY3ktdHJ1bmsKKzM3Njk5IDk5MWQzNDkwZjY5OGViMmFmOGQzODA1NjI1MzJkNzI3YTUxZTI5NmUgbGVnYWN5LXRydW5rCiszNzcwMCBkYzhlY2Y3MjQ0ODhjMjZmNzVkOTAyM2JmNGFlMjY1NTEzNmY0NWNhIGxlZ2FjeS10cnVuaworMzc3MDEgYmQ1NTgyMTFiYTU1MmM3MTQ5YTgzNmM4ZDZmMmJiOTg4Y2NhZWIwMCBsZWdhY3ktdHJ1bmsKKzM3NzAyIGZkY2UzZDM5YmVjMTRkNGQ0NzA0MDE1NTJlN2FjNjY3NjYwY2JmMmMgbGVnYWN5LXRydW5rCiszNzcwMyA0ZGQ5N2MzN2MyY2MyYzMzNzhmMmM5MTZhMzdjZDFmZWE3YWQ4OTljIGxlZ2FjeS10cnVuaworMzc3MDQgNmZjMTAzMDZiZjMxMmJhYzk5M2M3NTIxZjY1MzcxYzkyYzVjMTA3MiBsZWdhY3ktdHJ1bmsKKzM3NzA1IDEwNWJmZTE3NjliNzk2YzQyN2Y1ZTJmZGM2YTMwMDM3Y2RmNzBlNGYgbGVnYWN5LXRydW5rCiszNzcwNiA5OTNiMTI4ZDRlMjk0YTUxNzA5MzU0ZmJiMDBmYjRkMmQxMzhmMTJiIGxlZ2FjeS10cnVuaworMzc3MDcgYWM0ZmE5NDJmOTJlNzhhNmNiZGRkNmE4ZDdkYmZkODRkNzNlMDEyOCBsZWdhY3ktdHJ1bmsKKzM3NzA4IGVkMTM5MzcwNzlkZjE3Y2FjMjZjOTcwNjcyYmE0MmVjYTIzYWYzZDAgbGVnYWN5LXRydW5rCiszNzcwOSAwMzJmMzQyZWZjZDI0ZjI0YzY2Y2U2YmZiMGVjMTM4MDc3YTQ1ZWRhIGxlZ2FjeS10cnVuaworMzc3MTAgNzliY2FkMTRlOTZhYWE3NzU4OTZkNGZlNDQ4NDc1MzNiZDhlOTI3NiBsZWdhY3ktdHJ1bmsKKzM3NzExIDU1MTA5OTVlYTI2ZmI1ZDk0OGEwNGRmOTYxOWY3MDVjN2RkZWNiNGQgbGVnYWN5LXRydW5rCiszNzcxMiAzMzk4YzVjZThiN2EwOTYwNzRlNGYxYjkxODAwNGY4YTA4ZTY1MzI4IGxlZ2FjeS10cnVuaworMzc3MTMgZDgzOTk4YTcyMWEwYTJlZjFlNDM3ZjNkNmQ4YTA0OTFiMWFhNzIzMyBsZWdhY3ktdHJ1bmsKKzM3NzE0IDI2MjU1MzdhNmRmYWRkNTM2MDhjYzc4MzI5OGZmOWM1MzhjNDljZTkgbGVnYWN5LXRydW5rCiszNzcxNSAyZWUwMzAxYjQ4M2NlMmE4NGY3ZTM5Yjk4ZGJhZGM3ZmIyYmEzZWY5IGxlZ2FjeS10cnVuaworMzc3MTYgOTQzODYyYjJiNGRmZTU2ZTU4ZGM1MmU2ZWIwZDA4NTQxZDlkN2EwYyBsZWdhY3ktdHJ1bmsKKzM3NzE3IGQ0MWFjMTFlOWM2MDRhNjU5NmMzY2YxNGUzZGI4MzM0M2U4ZDExOTIgbGVnYWN5LXRydW5rCiszNzcxOCBlZWMzMTdlZTVjMzViOGY4NzIxMjVhMzFmNTBiNTRjMTU4ZjJiOWQ5IHJlbGVhc2UyMy1tYWludAorMzc3MTkgMWNkMTlkYWFhOWQ0MmZhYjcyMjMyMGE4ZDlhZmNjMzJlOTI5YjBiNCBsZWdhY3ktdHJ1bmsKKzM3NzIwIDYwYzYwZGM3NWM3NzI2NGI5ZTJjMmY1ZjRiZDZjNjFmZTNjZmIxYTggbGVnYWN5LXRydW5rCiszNzcyMSA2ZGEwNzg3M2EwZWUzNzU0OTVkYjliODVmZDI5N2JhZGIzYTE4MGNhIGxlZ2FjeS10cnVuaworMzc3MjIgMGRkYWU4YjBmYjE5YTM4MzIzYjQyYmM1Yjg0NjNjZGYxOWFkOGRiMyBsZWdhY3ktdHJ1bmsKKzM3NzIzIDMwNzMyNDM0MTA3YjZjZmU2ZDkyOGI0NDAwZDMyMmU3MjA3Y2FiODAgbGVnYWN5LXRydW5rCiszNzcyNCAzNDY3Mjg4MDg5YTFlMjU4NjNlNWQzZDc0NDFhNTZmNDNjNGU1M2IyIGxlZ2FjeS10cnVuaworMzc3MjUgNGEzZWFhMWFhM2FmZDJmNWI5NGNlMmVkMGIyZTlkYjdkYWMyMGVjNyBsZWdhY3ktdHJ1bmsKKzM3NzI2IGZhY2I1YTJmNGI1M2U5N2QzMTJkYjMxOTA5OWViNzlkNDkxNTEzYWMgbGVnYWN5LXRydW5rCiszNzcyNyBiNTg1YmNjZmIyNTA1NDNhNjZiYjhlZjRlNDVkMTBhMzM0MTA3ZWRkIHJlbGVhc2UyMy1tYWludAorMzc3MjggNmI2MWFmMDgzNDkzMzEzYjUzOGU1MTU0ZDI3NmYxZjU4NzY3NTU3YiBsZWdhY3ktdHJ1bmsKKzM3NzI5IGYxOTY3MTZlYTBkYjQ1ZDYzNzY3ZjJkM2I3N2VjYTQxZmMxMzgyNGUgbGVnYWN5LXRydW5rCiszNzczMCAyNjMyZjQzNDA5ZjQ5NjVhY2ViNzEyNTMwOTk1ZTRkNDQyMGNlZWNiIGxlZ2FjeS10cnVuaworMzc3MzEgMDdkOTRhMTYyY2Y4OTUxZWZhZGY2ODM1MTQ4YjM2NzM4ZTc3MjBmZiBsZWdhY3ktdHJ1bmsKKzM3NzMyIDMwOGU4ZWYyZDNlZGY1ZjU1MWJmYjEyMTk4YTI1YjUwNWI5ZTNmN2UgcmVsZWFzZTIzLW1haW50CiszNzczMyAyMjNkMjBhZmM4YjVlMWViOGM5M2ZhNmExZGExOTk4YzM0MThmY2U5IGxlZ2FjeS10cnVuaworMzc3MzQgODBjYTFhOGIyMzIxNjJlMDlkN2Q1MjY2M2E1MjE2YWVkYjUyMTdhYiBsZWdhY3ktdHJ1bmsKKzM3NzM1IDVhZmE1Mjc3ZmNkOTc5M2FlMGJmMWM4YzE2OWY3YWQzMDYwZmNmNWIgbGVnYWN5LXRydW5rCiszNzczNiAxODBkYzgyOWVmZmY4MTc1MWVmYjgxMmNmMGRhMDRiYWZiZjVmMDhiIGxlZ2FjeS10cnVuaworMzc3MzcgYmYyZDAzZGZjMzhlMjhmMWM0YzQ5MWY5NzkzMGIyMmI5MjlkNTMzNyByZWxlYXNlMjMtbWFpbnQKKzM3NzM4IDBkYzNmOTcwNTU3NzA3M2FjMDUwZDllMGUxMDEzOWZjMzQ3NDQ3NTYgbGVnYWN5LXRydW5rCiszNzczOSAyNGZjM2VhYTE5ZTBiNWRkOWFjZjc5ZGQ5ZDQ4N2NkMmJmMGYxN2E4IGxlZ2FjeS10cnVuaworMzc3NDAgNjMzY2FkZWJmNjhkNGRkOGNmMGM5MTlmZjUyMTQzNzZiZWJjOGM0OSBsZWdhY3ktdHJ1bmsKKzM3NzQxIGE4Yzk3OWNjNGZhNjU4ZDgyNmQyMTA0OGZkNzgxYTUyMGIwM2IyNmIgbGVnYWN5LXRydW5rCiszNzc0MiBlZjUwMzBiYzVmNjcxYzRiMDQ4MWM4OGNiYTkxMzE1ODQ5Y2FkYjZlIGxlZ2FjeS10cnVuaworMzc3NDMgNjg3MzYyZmE0NzFjM2MwOTMxNzA1NjZmNTllNDliM2Y2YjNmZGMxMiBsZWdhY3ktdHJ1bmsKKzM3NzQ0IDhhMDljODJlNDI2MTBiMGQ0OTZmZDMxODU3OTRmZDdmYjM0ODU4ZTggbGVnYWN5LXRydW5rCiszNzc0NSBiYzA0MjFiOTY1N2EwMDU4YWE5NTBjYWNlOGMzYjA1ZTc1ODViYWQ1IGxlZ2FjeS10cnVuaworMzc3NDYgYTZmOTdlMGU2MzE4OTY0YzI2YzhmYmFlMGQ0MDU2YzEzYTUzNWVjMCBsZWdhY3ktdHJ1bmsKKzM3NzQ3IDVlY2EyNDhmNjM5ZTQyZjQwNzJjOWM3ZGY5YWJmOWNkM2Y0ZDNmNzEgcmVsZWFzZTIzLW1haW50CiszNzc0OCBjMTllODExMTIwNTkzMTZhNjgyNDNkNzBkMzhmMDJiMDI3NzVlMzk0IGxlZ2FjeS10cnVuaworMzc3NDkgYTU3NmNmMWFjNmEwNGU3ODJmN2E3MTI3MzMyYjVhYzg4NmYxOGQ2NyByZWxlYXNlMjMtbWFpbnQKKzM3NzUwIDk3Njg2MjRmMDM1ZmEyMzhmZTk1NTNmN2M2MzVjNDAzZTQ1MjUzNTggbGVnYWN5LXRydW5rCiszNzc1MCAwY2IxYmE5MjI0MWJhMjk1NzU1MDU4MjhlZWUyNDFjZDEyNmQ0NjkzIHJlbGVhc2UyMy1tYWludAorMzc3NTEgMGQ2ZGJlYmQ4YjRhMmQwNDMzOThhMjRjMTllMDE2ODVmNzJlOTY0NyBsZWdhY3ktdHJ1bmsKKzM3NzUyIDUzYWEwMTkzNzBkYjUwYTNlMDI5YzU3NDUyMTJiYjUxMDY5ZTE0ZTggbGVnYWN5LXRydW5rCiszNzc1MyBjMzA4YzZiYTAwMmY1YjViMjQ4OTcxNDgwOGI0MzQzZmZhNTg4ZmEwIGxlZ2FjeS10cnVuaworMzc3NTQgZmViNDAxN2NiYWQ0MmE3NDVjMjViMWM3NzNkYzRhNjYxMWU4Nzc2ZSBsZWdhY3ktdHJ1bmsKKzM3NzU1IDc4NmQzYjhiOWJlZWRiYWM0NGNmYjhiNDRmMzVlYTE0ZTFlYTIyMGQgbGVnYWN5LXRydW5rCiszNzc1NSA3ZTM4N2E5ZGNjNzk5NTRhNzc2OTVhZGVmOGI1OTNkYTM1YmUxMjE0IGxlZ2FjeS10cnVuaworMzc3NTcgODVkYjAxNmU4ZGFjNjNlZTk1OWFlZDQ1NWU5MTg2YjNmMDgyZTE1NSBsZWdhY3ktdHJ1bmsKKzM3NzU4IGQ3ODNkNTE3MTgxMTllNDEwNjhjMzg5NmM1YmM5NWU4NmU5YWNjOTAgcmVsZWFzZTIzLW1haW50CiszNzc1OSA3MTBiN2U4ZDJmZjJhNjBiODY1NzNlOTNlYjMwZWIwNjk3YTZlOGUwIGxlZ2FjeS10cnVuaworMzc3NjAgZGZiN2IwN2RjZGVkZDAwOTJhNWJjYWNmNjIwZWQ2YjMxZDJkMmZjZCBsZWdhY3ktdHJ1bmsKKzM3NzYxIGE1MTI5ZDZhYjFjYzZhNTM4NWU5NjIxZjhkN2I3ZjRjMjRiOTBjYzYgbGVnYWN5LXRydW5rCiszNzc2MiBlYjk3OWMzZjE0YmE5NjNkOTU0MmUzMzkwZmFmZTI3OGY5YjA5NjQ5IGxlZ2FjeS10cnVuaworMzc3NjMgNWNjMzgzNDAxMjk0ZmI0YzU0YTNkNzI3NGNmNTUwY2ZlOGUyYzIzOSBsZWdhY3ktdHJ1bmsKKzM3NzY0IGFiNmIxMDhhOGNlYzg5YTIwZGIwNTc3YzQ0NjM5YjBiOGE3MTgwNmQgbGVnYWN5LXRydW5rCiszNzc2NSAyMDg3MzI5NWU5MTYwNzU3NGViNGYxMDY3YzU5OWNiMDhhNWZlNjI5IGxlZ2FjeS10cnVuaworMzc3NjYgMTljMmRjY2ZhZjY1M2Q5Njc3YWRlNzhlMWNiNmFiNWQ5NmQ4NjkyNCByZWxlYXNlMjMtbWFpbnQKKzM3NzY3IDEzMjg5YTc0NDJjMzdmNWI0OWNkNTYyOGM5ODY1MWU5NjY1MTllMmQgcmVsZWFzZTIzLW1haW50CiszNzc2OCAzNjAyNGZhM2JmNGY0ZWE0MTkzZWM2ZDI5YWZmYjc2Y2NkYTlmNmNiIGxlZ2FjeS10cnVuaworMzc3NjkgOGY4Yzg5YmJlNDM5ZDBlMTg0ZTRlZTFkZDhkYWUwN2E1OTFlNDhiMSBsZWdhY3ktdHJ1bmsKKzM3NzcwIDVlZDFkOTdiNDlhMTI0NTlhMGI2YmNhNzBkYmU5MGZjOGY5YmQxMTQgbGVnYWN5LXRydW5rCiszNzc3MSA3ZWQ4OTliNjExODI4MDZjOWIxNmQxNmQwNjcwOWE2MmUyOWY4ZmI5IGxlZ2FjeS10cnVuaworMzc3NzIgMmZhODcyNzg0ZWI2MjAxYjIxZWE3M2JmNmM5MWRhZjBhYjVhNmIyNSBsZWdhY3ktdHJ1bmsKKzM3NzczIGIzZmZhNjRmZjRjNjQ3MDIzYTI1Mzc5MmExNWY1MDJkZDRjMTc3ZGIgbGVnYWN5LXRydW5rCiszNzc3NCA5OWI5MjAxODYzNjcxYjhkNjkwZWUyNjUwZmQxNzUwMDY3OTQwMTA0IGxlZ2FjeS10cnVuaworMzc3NzUgOWE4NjI0MjVhOThhMTQ2Y2FkNjlhMTI5MzU1M2UyOTJmMjg0YjlhOCByZWxlYXNlMjMtbWFpbnQKKzM3Nzc2IDljZTU3NjQwMTlhZWYwNDQ2MTcwZDEzNGExMjEwNTllY2QzYTVjYzEgcmVsZWFzZTIzLW1haW50CiszNzc3NyBlYTZlZjQwZGM5MjIwZjQ3NTdjNGJmMGNlMTUwZDFlZDllNzgwMDJiIGxlZ2FjeS10cnVuaworMzc3NzggN2U4OGMwNDM3ZWNjNjIwZWE3YWUzYjg4MTFmN2I2N2Q0NjdlNzU1MyBsZWdhY3ktdHJ1bmsKKzM3Nzc5IDAyMDE2ZDVhNGRjNmE4MzU2OWRiYmIxODI2YzJlNmJlZjhiZWM1NGMgbGVnYWN5LXRydW5rCiszNzc4MCAyNTcxNGUwZmM4OWRiMTNjZGQ3YmM4ODBiN2MzMWQzNzY4NjMxYTQ2IGxlZ2FjeS10cnVuaworMzc3ODEgOGU5MWE3ZWFhN2I3OTk1YjY1NmUxYTM2YzA3Y2Y1ODBkYzBhNjBlNSBsZWdhY3ktdHJ1bmsKKzM3NzgyIDg2OTg2NTNlMDVmYzEwOTFiNTkxMDIyOGI3MjZkMjM2NGM1ZTcyMGQgbGVnYWN5LXRydW5rCiszNzc4MyBkODJmYTkzMmI0MWJjMDM5MTY1ODExNmJjM2U5N2I4YzUzYTkzY2YzIGxlZ2FjeS10cnVuaworMzc3ODQgN2ZkNGQzNTBmZjgyNjJiOGQ1ODUwOTdkZDc5NTZhMWIwYmFiYmQxNSBsZWdhY3ktdHJ1bmsKKzM3Nzg1IDkxNzNiOWUwYWI3NzM0OTcwNDBlYmJiNzQyMzA3MjkxYzFhMzVjNWEgbGVnYWN5LXRydW5rCiszNzc4NiAwMThkY2M3ZWY4ODdkZWJjN2E3OGZkOWRjYzZmZTkyOWZmOGFmZWVmIGxlZ2FjeS10cnVuaworMzc3ODcgNjYyYzE1NTEwNmU0MjVjMTA1ZjllZjJmOWY4YjBmNjg0OTJjNGZhMSBsZWdhY3ktdHJ1bmsKKzM3Nzg4IGU0NDA0MDQ2ZTU1MmY4NmQ3NWExZGJmMWRlNmY2YWNlZjlhMzlmYWYgbGVnYWN5LXRydW5rCiszNzc4OSA4MzkwZjkzOWRjYzFmM2NiODMwODI4YWY5ZmU0MTM3NTM1ZWRhZTFjIGxlZ2FjeS10cnVuaworMzc3OTAgODI5ZWUzMjVhMThlNTM4N2ZmNzg5MzdiMmMzNGMzODlmOGM3NGZmNCBsZWdhY3ktdHJ1bmsKKzM3NzkxIDBkNGVjYzMxY2ZkODNkYjVkNGFkNmM0NzhmYzE5YWY0NmMyOWU0NzkgbGVnYWN5LXRydW5rCiszNzc5MiA2NjIyM2E5ZWJlNDg2MzU5YzFmNTc3YjhlODZlZGFiZjJlNDM4MTNjIGxlZ2FjeS10cnVuaworMzc3OTMgNGZhMWRmM2IwNjJmNDk3YTIzYzQ4YjQxMTZiNThmNDY5ZDU3YTgyOCBsZWdhY3ktdHJ1bmsKKzM3Nzk0IDU0OGYzOGE1NjY2OWUyMmY3Y2RiMzgzYjExZWFkOGIxY2IxZTIzM2UgbGVnYWN5LXRydW5rCiszNzc5NSA1OWM0M2ZkOGJhNzNmMDc4OGQxYWRmNjcxMzc1MjdlZTlmZTBmZGYyIGxlZ2FjeS10cnVuaworMzc3OTYgZWIyMzE1NDRjMWFkNWU2MDUwYjk3YTAyZGY5NmQ4YjQ2Zjg3MTE3OCBsZWdhY3ktdHJ1bmsKKzM3Nzk3IDBhZTI4YzNhOGQyNDA2ODM4ZjI4NjMzZmMyNDZiOTFiZGIxYzQyNjYgbGVnYWN5LXRydW5rCiszNzc5OCBhYjczMjE3NzMwZGIyMzJlM2UwOWQyNmE3OWY4ODVkOWU0MjliOWY3IGxlZ2FjeS10cnVuaworMzc3OTkgZTRlMjNlM2E3ODQ0YmNlZWYwZWNhM2UxM2Y1Njk4NzlkNDU1YTNhMyBsZWdhY3ktdHJ1bmsKKzM3ODAwIDRkZTM1NGM3OGE3ZWZiYzA0ODViZGQ4YTI1ZGMxODIyZjM4NmRiOGQgbGVnYWN5LXRydW5rCiszNzgwMSA4MWNiZjAzMTU0OWExZjllMGIxMDlkMjMyMjM1ZDY5YzZlMTkzZjlmIGxlZ2FjeS10cnVuaworMzc4MDIgNWZiYmU4MjMzYjc2MzMzNmJhMWVhMWM4ODBlOGNhNjY3MjFiZjRiYyBsZWdhY3ktdHJ1bmsKKzM3ODAzIGRmZDA3YjdiZTQwNzJmNzkzM2YxMWFmMTUxMzlmMjg2ZDUyZWU4NWEgbGVnYWN5LXRydW5rCiszNzgwNCA0NjNhMDNhNWNhMjI4M2U2YWI5MDNlMDMzMDIwYjMzMTkyZTQ0ZTVmIGxlZ2FjeS10cnVuaworMzc4MDUgODJkMDI1NjQxMjNkZmMyYzUxNjgyNjNmMjEzMDM2OTBhN2I1Mjg0MSBsZWdhY3ktdHJ1bmsKKzM3ODA2IDM1OWViYzU2MDkzZTdlYjJmNDQ5NWNmNDJmNzQ0NWIxZDhhYzQ4NTMgbGVnYWN5LXRydW5rCiszNzgwNyA5NjE3OWMwOTZkNjVhZGNhM2E5NjQwMDdjMTkxNTU3MzI3ZmRjMmZlIGxlZ2FjeS10cnVuaworMzc4MDggOTA0NzcxYmVmM2Y0N2ZkYmQxZjkyNzEzYjBkODVlZDhjNWNlMTc4ZSBsZWdhY3ktdHJ1bmsKKzM3ODA5IGFmZWUzYzMzYWU2ZDhjNzU1OTBhODE0ZTIwNzFlODRmNzRiY2Q3ZWIgbGVnYWN5LXRydW5rCiszNzgxMCA4YjJhMmY3YzEzYjgwZGM3NDRhYjg2MTViZTM5NzEyZGM5ZmVkMmZhIGxlZ2FjeS10cnVuaworMzc4MTEgZjJjZTE1YjAyYmEzZmViYmRmZWMyMTgwOTNiYTA2ODYwZDRiNjBjOSBsZWdhY3ktdHJ1bmsKKzM3ODEyIGI5ODE5YjlhMGRhZDU0MjExN2VlZTRlZDY3MDYwMzU0MmRhMzA4ZmYgbGVnYWN5LXRydW5rCiszNzgxMyA2MzNiZTQzYmVkMTdkMDM3YmZjOWEzNmI1ZGUzMDU2M2I1YWNhYTM1IHJlbGVhc2UyMy1tYWludAorMzc4MTQgZWIzNDRlMDNjYzcxMjU2MmVlMTI4MmVmNjBjNDMwNDM5MzRmYTExNyBsZWdhY3ktdHJ1bmsKKzM3ODE1IGI0ZjBhZDgxNTljNzM0ZGY5MWI5MDU5Mjg2MjQ1N2IzNjhmMDYxODkgbGVnYWN5LXRydW5rCiszNzgxNiBlMWYxNDAyNjA5NDc4YWY3ODY0NGI1MzA3MGUyZTUyNDhlZjY3MWVmIGxlZ2FjeS10cnVuaworMzc4MTcgMGZlOGExNmEzMzZhZWE4YTQ2ODFiMGRjMmJhZGQ5N2I2OTA5OTFhOSBsZWdhY3ktdHJ1bmsKKzM3ODE4IDc3YjFjMTUxNzRiNDRkYmYxMjExNzY1ZDc1ZTI2ZmRhNDczMDNlM2IgbGVnYWN5LXRydW5rCiszNzgxOSA5NDJmODc0M2FkZjAyNzhiNzg4MmUwZTdlNzBhNzNkZmM1ZDdiYjBjIGxlZ2FjeS10cnVuaworMzc4MjAgNGY3NDU2ZDAzY2I5ZGU2MjM5ODUwYTY5ZTY5ZDY0ZDVmN2Y4ZTZiZSBsZWdhY3ktdHJ1bmsKKzM3ODIxIGM4NzFlZjk2NjU1YzhkMzhiZGM5NDQzMjlkMDQ5MjUzYmFkMjRmODggbGVnYWN5LXRydW5rCiszNzgyMiBkYzgwNDc2Yjc4MmI3OTBlY2RhNDI3NjA4M2JhZmFiZTBmZWQzOTE1IGxlZ2FjeS10cnVuaworMzc4MjMgY2FkZDNlOGQzNDlmMDlkM2ViYjkyMWU0YjJhMGE3NTRiNjA5MjJjNCBsZWdhY3ktdHJ1bmsKKzM3ODI0IDk1OGRjOGI3YTgyNmExODA1Zjk1YWY1ZmYwZWYzY2MyODAyYjU3NDEgbGVnYWN5LXRydW5rCiszNzgyNSA0Mzc1MDA2ZTVmMDc5ZjcyYjZjOWM5NWIzOGY0NGMzMjIwZDQ3MzRjIGxlZ2FjeS10cnVuaworMzc4MjYgZmJmMzA2NDZjZDEzNjQxZmI3OTliNThmMzNlNDdkYmI1NDY2ZGJjZSBsZWdhY3ktdHJ1bmsKKzM3ODI3IGE5MWU5MmI5ODJhY2FmZjAzOGI3ZDU4MDEwOWNjZTY3MmRmN2ExNDYgbGVnYWN5LXRydW5rCiszNzgyOCA4OTNkNDY1NzY3MzdhYmJhOGNjYzNjZDU2NGIwYzM0ZDA2YWU2ZTdmIGxlZ2FjeS10cnVuaworMzc4MjkgMDZlZTUzYTc2ZjAxNzNhYzA0MGNiOTQyNWEyM2ExMGM1NTBlN2IzOSBsZWdhY3ktdHJ1bmsKKzM3ODMwIDliZDk4M2NmYmU4MWJjODY1YjRmOWRhOTk0Mzc0MmM2YjI1MDMxM2UgbGVnYWN5LXRydW5rCiszNzgzMSAwNzM5ZjM2YWQ1NDQxOWE0MTMxNGVkMGRiZjU0ZTdjODk3NTg5ZTJjIGxlZ2FjeS10cnVuaworMzc4MzIgZmVmZjRlNGYzNDVjYTVlMzM2ZjdiMDBlYzgwOTE3ZDQ1OTQ3ZTI3ZCBsZWdhY3ktdHJ1bmsKKzM3ODMzIDAyMzgwMTMzMjM5NTVlYjRiYTJhNDEyNTA3OWY3ZjQzOWU2ZGEzYjcgbGVnYWN5LXRydW5rCiszNzgzNCAyM2IxMDNhYmI4ZjdmYTdhNzk2ZmUzODk1MDE4NjE3YzFmMDg4ZmI5IHJlbGVhc2UyMy1tYWludAorMzc4MzUgNTNiM2Y1M2Q3YTBkMzJhOWY1NTBiOTkzYjJiNzJmYTA0MDZlNWRkYyBsZWdhY3ktdHJ1bmsKKzM3ODM2IDRjYjdiOTIzNjgxZTQ3YWViNmUzZTUxYmY0NDlkZmU5ZWRiNTcwNDQgbGVnYWN5LXRydW5rCiszNzgzNyBkMjU2MTVlZjVkOGY2MDU5NTE2MDNhNmQ1Y2ZmYjIwOTg5M2IxYjYwIGxlZ2FjeS10cnVuaworMzc4MzggMjIxM2NkYjNjYWU3OTNjYjBkZDZlYWQyOGYyNGQ5OGJhYzgwZjE3YyBsZWdhY3ktdHJ1bmsKKzM3ODM5IDQzOTQ0NjM1MTBmYjJkYjllMDlkOGQ0YjdkNjg0ZDQ1MGUwZWY1NjQgbGVnYWN5LXRydW5rCiszNzg0MCBkY2RhMDZjYjA3OGEzZWY5Njk4N2JlMjRhNTg4NGI4MDQ1MGNkY2VmIGxlZ2FjeS10cnVuaworMzc4NDEgMzNhODQ2Yjc3N2E4OTFhOTNiYzNlYjNjZWFmN2YyZDA5NjM3NWE2MiBsZWdhY3ktdHJ1bmsKKzM3ODQyIGY5MjYxNmY4YzMzYzc0NTExMTk4Mjg4YzA1ZTFhMjkyMmQ2ZDhiZTYgbGVnYWN5LXRydW5rCiszNzg0MyA0MDA1Zjc5ZDI4MWFkMGRmMjlmZDgzMjk4YmQ0MTQ5NzJlZWQxZDIzIGxlZ2FjeS10cnVuaworMzc4NDQgZWMyOTk1NWI4NTQzNWJmODE2MDI4MzFkOTdkOGFiMGFiNDhhZWRmOCBsZWdhY3ktdHJ1bmsKKzM3ODQ1IDQ2OGExMGViYmNkNTAxYTA4NGZmZmY0YzNkMjhiMGJmMmNhMjc5NzEgbGVnYWN5LXRydW5rCiszNzg0NiA2NTI1ZTAyOGFmYjNjOWM3MjZlODQ5ODQ5ZTBmYTYxMmY0OTAwOWMzIGxlZ2FjeS10cnVuaworMzc4NDcgNzAxMGE5OWI1ZTYxMjQxNzZlY2U0MjE2ODhhZWQ5MDg1OTViYmY3MyBsZWdhY3ktdHJ1bmsKKzM3ODQ4IDMyZWQyODYxYzk3ZjE4ZGRjNzdjNThmYTVjYTZiYjE3YTg2NjY2YjEgbGVnYWN5LXRydW5rCiszNzg0OSA0OWI2ZTk2NmU1N2YwODg0NmUyN2Y2MmYyMjIzYTZkN2UyMjVkMDk2IGxlZ2FjeS10cnVuaworMzc4NTAgNDg5NjU2ZGJkZjVhN2YzMTEzZjhjZmYwMmQ1MmRiODJlMjZlN2U2NiBsZWdhY3ktdHJ1bmsKKzM3ODUxIGEwNTA4NWE2M2RlYzgzNjRiMTc0ZTliMjgzYzFlMmY5ZDhhOTQ5MzQgbGVnYWN5LXRydW5rCiszNzg1MiA0ZjJiYmQ0NzFhMjFjNTgxMzhkMGNhNjFhMTI0YmUyNGM3YzBiNTU4IGxlZ2FjeS10cnVuaworMzc4NTMgNzEzNzI0NDk1ODJkMzI2ODU2NDczYWQ2MDc2ZWM1NmYxYjJjNjRhOCBsZWdhY3ktdHJ1bmsKKzM3ODU0IGYxM2NlMGJiNjA2YzAyZDk0NDg1MjQzMzI5MzJhM2FlMGFmMmIxNzQgbGVnYWN5LXRydW5rCiszNzg1NSBhOGRlMjE5NWVmZDY2YmRkODQwZmQ2YzAyNGM1Njg4MGU4ZTAzYjFlIGxlZ2FjeS10cnVuaworMzc4NTYgNjc3MWUxODQwYmJjYmYwM2MxODdiMDI5MzgwMzI4YzExNTlmOWZiYSBsZWdhY3ktdHJ1bmsKKzM3ODU3IGI0YWRiMTAyMTEwMzBhYjI1MDhjNWNhMjkwYmUxNjM2ZDFmZTU4MjIgbGVnYWN5LXRydW5rCiszNzg1OCBiODcxYjk0ZjA3YjZkNmYzZmFhYzk2YzE0ZWY0YmY0NWY4MjU1ZDZkIGxlZ2FjeS10cnVuaworMzc4NTkgMzY1NjM4ZGNlNWYzNDM2MDI5ZjI5MTEwZDA0MGM3YmVkZTFjZWY1ZCBsZWdhY3ktdHJ1bmsKKzM3ODYwIGUwMWExN2JjZGYyOGVlODdjY2JmOTZhZDZjM2IyYzFjY2IyY2EzYTEgbGVnYWN5LXRydW5rCiszNzg2MSBmNTMxMTMwM2EzNTcwMDJkNjFmNjFmZDBjMmYwYzlhNjliMGE0ZDRkIGxlZ2FjeS10cnVuaworMzc4NjIgYjQ4Y2E5NmViNDQwOGRjY2RmYzUwNjlhZDhiNjhmOWJiYTc5Y2VhZiBsZWdhY3ktdHJ1bmsKKzM3ODYzIDlhMTMwOWE5MGI1ZGY2ZDBlNGZmMDUyNGI1M2NkYTk2ODM1YTc5ZWMgbGVnYWN5LXRydW5rCiszNzg2NCBiYWUxOTE5Zjg1NDgxZGJmNjBmMDliYWRmNDU0NGNkZjU4MTg5MGNkIGxlZ2FjeS10cnVuaworMzc4NjUgYTAwY2Q2NzAzNDFiYTdmZWNmODk4MzVkNjkxNDc1YWEyODIwNzdkYyBsZWdhY3ktdHJ1bmsKKzM3ODY2IGVhOTU3ZDliMzY5Y2Q4ZGRjMzcwZmNlMzI2OGUxYjg5Y2M1Y2VkNjUgbGVnYWN5LXRydW5rCiszNzg2NyAzMWU0ZGExNjY0YjdlZjYwNTY3YTE1ODA0NTgxYjA0MGU1NjI2Y2M4IGxlZ2FjeS10cnVuaworMzc4NjggZDViYTRmMzA1MGI1ODcwZTI5ZWE1N2MxYjZhMmUwOWE0M2VmM2Y0OCBsZWdhY3ktdHJ1bmsKKzM3ODY5IDc4NzM4YTg5YjIyMzExZGI3MTI1ZjIyN2IwZmFjZGUxMGQyZjE5NjMgbGVnYWN5LXRydW5rCiszNzg2OSBmZjgwZDhiYmVmNmUxMzQyNmM4YTg1ZDdmOWQ4MzdiOGY4Zjg5ODM0IGxlZ2FjeS10cnVuaworMzc4NzEgMjA5NTUwMjU2YTc0NDE2MDFmYWJiMTdiY2E5MzI2ZGE0MmQ4MTUzYyBsZWdhY3ktdHJ1bmsKKzM3ODcyIGVmN2EwMmIxOGVjY2EzOTk4NzA2YWE0NmE3MTIwMjdhODlhYzk1NWMgbGVnYWN5LXRydW5rCiszNzg3MyA4MjA0YTRkMjAxMmNiNzJkZjQyY2FmYjRlMDRjODA5ZTZmODhhNGQ0IGxlZ2FjeS10cnVuaworMzc4NzQgNzE5MzBkN2IzYjhhMjRmMjQ3Nzg4Y2YxYjM3NmY3MjgxYjBhZGEwYiBsZWdhY3ktdHJ1bmsKKzM3ODc1IDk2ZjYyYzY3OThlODFiMTExM2YzZTMzYmYwYzliOTI1ODMwN2MzYmQgbGVnYWN5LXRydW5rCiszNzg3NiA5YjBjNWJmNDcwMGMwODQzMGU1NDc1YzFlYzlkZmZjZDhiM2Y2ZmU1IGxlZ2FjeS10cnVuaworMzc4NzcgOGRhYTVhNDQ4NDAzYTlmZDU4ZTYwYzg4NjU4YzU4MDYxOGUwNWNkZCBsZWdhY3ktdHJ1bmsKKzM3ODc4IDJiOWMyZWQ1YTc2YmZmN2UzYWIwMzBiNDM1OWZlZmI5MWFlZDVjYzEgbGVnYWN5LXRydW5rCiszNzg3OSAyNjRlNDViYWFjZDUzMzFjMTg0NWE1YTIyNjMzOTlhMjA4ZjA5MTQzIGxlZ2FjeS10cnVuaworMzc4ODAgZTk1OTlkOWQ5MWM2ZTcwN2MyMmIxYmNiODA0NWYyY2JiNTRjMzYxZSBsZWdhY3ktdHJ1bmsKKzM3ODgxIDZiZDgwMjFmNzQxY2I4OTgxZTZjYzAwNDk4NDU1ZGIxY2YyMzc0MTcgbGVnYWN5LXRydW5rCiszNzg4MiBiZGQxNGFiNmM1Y2YxNWJmZTdjMTkwZGIxYjU3NGUzMmI3OGQwYzZkIGxlZ2FjeS10cnVuaworMzc4ODMgYmUzNzBhYmIwMjBmOWM5NzViZGE1NmZhYjk0Mjk4MTU3ZjNiYzQ4OCBsZWdhY3ktdHJ1bmsKKzM3ODg0IGMxMGFkYmFkNDRmYWI5OGMyN2YyMjNiYjFhY2EzY2IzM2YwOGMxNmQgbGVnYWN5LXRydW5rCiszNzg4NSAxNTc2ZTg0NWM1N2JkYWRlYzc3ZDQ1MzhmM2EzNjQ1OWQwNzg1MjAwIGxlZ2FjeS10cnVuaworMzc4ODYgYThmZjZlZDg1NmU4OTNiNDdmMzQ3NGQ0NzI1ODkyZTk2MzhiMTU3NyBsZWdhY3ktdHJ1bmsKKzM3ODg3IGMxNDgzZjBlODAwZDAyZThlYzAxMDkwNjAwNDlhYmI2OTA5OTZmNjEgbGVnYWN5LXRydW5rCiszNzg4OCA3Zjk1ZmU5OGQ4MjE2ZDIxNjhlODRjM2RiOGM3YjZjOThmZDE5MTgzIGxlZ2FjeS10cnVuaworMzc4ODkgNzEzNThmNjU3NWI2YWZlMGVmZDE1MzRjNzU3ZTUzMGVhMjg4ZTBmZSBsZWdhY3ktdHJ1bmsKKzM3ODkwIDdlOTliMDY4MGFkZjExMzIxMmRiOGNjODdlMjhlY2JlODFlMDU4NGQgbGVnYWN5LXRydW5rCiszNzg5MSA4ZGE1N2MyOGI5MTBmNTEzODI5MWI4ODc0Mzk3ZWNiMDZhZWQ3NjRjIGxlZ2FjeS10cnVuaworMzc4OTIgODFhMWY3NTRkMzJjZDIwOGY3MzUwMWViYWU0MzBlOGRkZmEwNDYzNCBsZWdhY3ktdHJ1bmsKKzM3ODkzIGM4OGQxODQxODA1M2I1NGIzNDUwMzBkY2FkMmFkNmJkMGUzZjQyODkgbGVnYWN5LXRydW5rCiszNzg5NCA1YmUzMWEyMDdkODZkN2Y0ZWMxNWIxZDQ3Yzc0ODgwNGU5YzgxYjg1IGxlZ2FjeS10cnVuaworMzc4OTUgN2E1YTU2YTE3Mzc3NTkyNmU5ZDNiZTM1ZTg3NWI1NjY0YmI1MjFjZCBsZWdhY3ktdHJ1bmsKKzM3ODk2IDE2MzQwOWE2MDFiZWY0MWNiZDc4OTIzYjA2M2RiM2UxNGM5N2I2OWMgbGVnYWN5LXRydW5rCiszNzg5NyAyYzgzYjYyMmEzZWU2OGM1YTk5ZDI2Zjk0Zjk3ZDI2YmY5MGJjMzViIGxlZ2FjeS10cnVuaworMzc4OTggYzljNzc5NDA2MGIwZTZlZGI5MzE3ZDAyOGRiYTQwMDc0ZDBhMWE5OCBsZWdhY3ktdHJ1bmsKKzM3ODk5IDdlOTU1ZTk4N2Q2OWNhN2Q3MjMwYjUyOTUwZjJiYjJiOWZjZWFkMDUgbGVnYWN5LXRydW5rCiszNzkwMCBkMzNiM2EyYjA5NGNiODNjOGM5ZDA4ZGE2NmM0ZDcyYTExYmE1YzVhIGxlZ2FjeS10cnVuaworMzc5MDEgZDA3MTZhYjAzZDlkZGM0NTA3Yjg3MTE0NzMzNDIyOWY2YzZiMDNmMyBsZWdhY3ktdHJ1bmsKKzM3OTAyIDZhODA2ZmRhNjY4ZDZjNWY0YWUyMzkwODg4OTNjOGY0ODMyZGFiYTQgbGVnYWN5LXRydW5rCiszNzkwMyAyODMwZTZjYjQxNTc2NWIxNTNlNjNiZWE3ZjEzZDZhYTMzZWM4ZTViIGxlZ2FjeS10cnVuaworMzc5MDQgZmJlYTcxNDgwMmIzZGE5NjIwYTUxMTA2ZDBlZmIzNTY5NDBhZjNmNyBsZWdhY3ktdHJ1bmsKKzM3OTA1IDdhMTI5MDQ0MzhkNmNhNzk3MTA3MWU1MmVhNWQzNGJmZDZkODVlOGEgbGVnYWN5LXRydW5rCiszNzkwNSBmMzFlMThkMzEzYzdhNGZjNjY5MTRiMmQyN2UxMzBhMGY3MmMwYjY5IGxlZ2FjeS10cnVuaworMzc5MDcgNzE2MzA3ZjdlNjE3YzQxODUxM2FmMGI5Y2ExMWJkYWRhNzgwOTViMSBsZWdhY3ktdHJ1bmsKKzM3OTA5IDYzYWZjMmQxYjBkYTM3MjJlMzA1OGZmZjYyMjk2ZTBhODA0NjAxODIgbGVnYWN5LXRydW5rCiszNzkxMCBjZjNmOGJlZTdmN2FiMTJhOTNiZTQ3MjQzYTY1MmEzZTgwNWMxMWQ2IHJlbGVhc2UyNC1tYWludAorMzc5MTEgMmVjZGM4M2ZhODZjZDJiOTNiMTFlNTBlMDNkMTg3MmJkZjg5NTc4ZSByZWxlYXNlMjQtbWFpbnQKKzM3OTEyIDM4NDMyYWQxMWMyYTQyMjZhZTZmMzI4ZjUzOTVmMGFiM2M2ZTZmZmMgbGVnYWN5LXRydW5rCiszNzkxMyBhZWQxZmVkMzdhZDU4NjU2NzNmY2EwNjljNWMzYzhmYWUyZjc3OWU1IGxlZ2FjeS10cnVuaworMzc5MTQgZmQxYmU0OTRjMzFiNjNlNjExMDE1ZDVhZTRiNTFkN2M0MzQxYTk5MiBsZWdhY3ktdHJ1bmsKKzM3OTE1IDhjZWNiOGRjNDNhMzgwN2JjZjNhZTk1NjU1OWI0ODM0ODRmZjZkODcgcmVsZWFzZTI0LW1haW50CiszNzkxNiA3OWQyYWUwYTYyZWZlYjc0MGQ2NGZkZjIwNGViNmUyNTA0ZWM3ZDVlIGxlZ2FjeS10cnVuaworMzc5MTcgYTZlMjUxZGU1ZTQxYmRkODJkODU2N2Y3NTE1NjNlYjY5ZDZkNGQ1YiByZWxlYXNlMjQtbWFpbnQKKzM3OTE4IDcwMjZkMDM4NTA4MTE3MjBiYWNkNWI2YWYwMjVjZDkzZjYzMmNiMDggbGVnYWN5LXRydW5rCiszNzkxOSAxYzRkYmU0YTA2YmQwNTQ5YzBiNDM1OWM0OTE1MjI1N2RjYmFkMDFjIHJlbGVhc2UyNC1tYWludAorMzc5MjAgMjE3ZDc0MTA0OWMwZDYyNmY0N2FhNTMyNzFhZDdmYjdkNTY2Njc5ZiBsZWdhY3ktdHJ1bmsKKzM3OTIxIGM4NzI2MWNlN2FjOTMyNzU0YzZlOWU3ZTdmM2E0YmQ1MTU2NmI0ZTQgbGVnYWN5LXRydW5rCiszNzkyMiA4ZWFmODA4ZmQ5ODBjMTA3ZWQ0NDc4ZGZiYjljZjk1OTBhN2VlZGM2IGxlZ2FjeS10cnVuaworMzc5MjMgZTQzNTMyYjg0OGQ3NWQ4MDNhZWVkNmViNDdkMzQ2ZmE3ODc4MWM3NyBsZWdhY3ktdHJ1bmsKKzM3OTI0IDdlNjQ4MmFiOTQ1NWRhMTc3NzUzNGUyMGM0MTk3YjViZjYwMTVlOGEgbGVnYWN5LXRydW5rCiszNzkyNSA2YmZiMGFiODgzZjIwZjc2YmNmNDNlMjAzZDdmNjYwZDU0OWI5OTFlIGxlZ2FjeS10cnVuaworMzc5MjYgZGE5NjdmYjdhN2ZiNGY0M2ExNThhOWQ5NDgzYTliYTc2OTc5YTYyYiBsZWdhY3ktdHJ1bmsKKzM3OTI3IDE3MmI0N2ZmMmU0YmIzODBiZWY3YWFlZWJlMjRmMjZkYjE0YjhhOTAgcmVsZWFzZTI0LW1haW50CiszNzkyOCBjZWMzMWVkZWE0MTRmZWY0ZTkyMDdlYmFmY2U1NmE2NTcxZjQ4YWRiIGxlZ2FjeS10cnVuaworMzc5MjkgNGUyNTRmMDI4Yjc2ZmMxYmFjNGNkOGM4MGFjYmFkZDc0NmQ4OTc0NyByZWxlYXNlMjMtbWFpbnQKKzM3OTMwIDMzZjc0OGU1ZDE0MjFjODAzNTcyMTgxODhjYWU1ZWYyYThkYWEzMmQgbGVnYWN5LXRydW5rCiszNzkzMSA4YzgwMjJiODFmMDIwYTZlY2JjZjFlMzkwMGQwOTMwNTQ1OTBmNTdlIGxlZ2FjeS10cnVuaworMzc5MzIgYWJlM2VlNWZjNmMzN2RhMGM4NmUzYzM4MjZiZDJiMjljMzE4ZmY5OSBsZWdhY3ktdHJ1bmsKKzM3OTMzIGYxOGE0ZDkzNzE0MmEwNTJlODBjZDc2NWU1NTI0ZWEwMTE0NzI1YmQgbGVnYWN5LXRydW5rCiszNzkzNCA4YmY3NjViNDgwYjgwZjlhMGJkMGFlMDkxYjc5YjQ0NDk1MzlmYzI2IGxlZ2FjeS10cnVuaworMzc5MzUgNTBlMGMzNDVkNDliM2JiN2JmMDk3MjQzMDhmY2M0ODYxYjRhZThlOSBsZWdhY3ktdHJ1bmsKKzM3OTM2IDRjODEwNmMzNThjZTBiOGQ4YTYzZTAyMzI0OGU0YWE1MDZiNjNmMDUgbGVnYWN5LXRydW5rCiszNzkzNyAxNTdmYWU3Njk1MzZlNjMzYTY0YmY2OTFjNDFlYjE5MjhhYTViODA3IHJlbGVhc2UyNC1tYWludAorMzc5MzggNjExNTYxY2NlNzQwZmZjOGY4N2ZjYzlkMmViMGI5MTkzZTk1YmRmMSBsZWdhY3ktdHJ1bmsKKzM3OTM5IGZiZjZlMDRkZWY2OTAyNGMyNDQ0OTE5NWFlNTMxMDliMjc5ZDViOTMgbGVnYWN5LXRydW5rCiszNzk0MCA0M2MwMGYwZTYzMDU1NTc3ZTcwODUzNDA0ZDA0NDJmNGNiOTBlMWE3IGxlZ2FjeS10cnVuaworMzc5NDEgZjczMjgwOTY4MzIyNzkwODFiODhhNzBlZTM2NjAyMjRjMzY0NWU2ZSBsZWdhY3ktdHJ1bmsKKzM3OTQyIDRiNjAxYmQzNDZhNGY0M2IxMzhjM2U4YmQ5ZmRiODQwYjc1OTZlMTMgcmVsZWFzZTI0LW1haW50CiszNzk0MyBjNGIxM2ZhMThhMTAzZGExN2Y4NThiMzY1NDZmYzgyNWM4YTAwOGJjIGxlZ2FjeS10cnVuaworMzc5NDQgNjA5YmNkYWUxMDhhNjU3ODMxYjI1Mjk3ZWVmOTA5MmY0YTQyN2VlYSBsZWdhY3ktdHJ1bmsKKzM3OTQ1IDIzOTk2MzJmZDllMGUyN2Y3MGE4OGY5NGM5OTllZTI3M2I2MDUyNGEgcmVsZWFzZTI0LW1haW50CiszNzk0NiBkMmYyNmVhYWNlMmMxZjMyMDExNWEyM2ExNjI2ZjI1ZGVjZjIwMWViIGxlZ2FjeS10cnVuaworMzc5NDcgZDYyMDNmYmRhMjUxN2QzODk0MjY4ZmI3ZGI5YmMxZjcyNjJkM2U3OCBsZWdhY3ktdHJ1bmsKKzM3OTQ4IDZlMGRiMDdmYmY5MTg1ZDkxYzBlODQ3MjEzMWNjMjMwOTI1MzUyZTQgcmVsZWFzZTI0LW1haW50CiszNzk0OSBjYzljZTY4MzdlYTliNzNlYzQ4MDM2YmMxZWVkNzFjYzUzNDk1MzViIGxlZ2FjeS10cnVuaworMzc5NTAgOTVkMjc2ZDRmOWU0NjU3OTZhZWRhYjRkYzFkMTUwNTIxYWQ4N2Y0MyBsZWdhY3ktdHJ1bmsKKzM3OTUxIDYyNGU5NjM1YzNhZDExZDcyOWM1Mjg2MGFkZDMxZTIzMGM2NzliMmMgbGVnYWN5LXRydW5rCiszNzk1MiBmMDJjZDBkNGEyYTA1YTdjOTQ2OWM4NmMyNjQ4NzgyOTBiZDFkOWY0IGxlZ2FjeS10cnVuaworMzc5NTMgZWRjMjBkNTM5YTE4MTVkNTgzOTRkODNmZTg1YWNhMThjNzY1MGRhNyBsZWdhY3ktdHJ1bmsKKzM3OTU0IDE3NWY2MTI1NTQ5Y2FkNzFiOGFiNTJhMTRkMDY1ZGMxM2ZjNGFlZmIgbGVnYWN5LXRydW5rCiszNzk1NSAwZWMzNDQ2NjNmNmE5ZWNmODhiMzJiOTdjZGQxMDY2ZjU0ZTY4NDY4IGxlZ2FjeS10cnVuaworMzc5NTYgOGNkMzE3NmZkNmYwMzBiNjA0MjFhZDA0OGVmYWQ1YzEzMjIyNDFlNyBsZWdhY3ktdHJ1bmsKKzM3OTU3IDhmOTI5NTEzOTkzYzkxZGZjNjQ2YWVlMDc3MmUwZTczYzhlZmNhOGQgbGVnYWN5LXRydW5rCiszNzk1OCAyNGYwZGE5MjAwMTA0NGU4MjQ5YjM0OTdiMGMwN2Q4NjRkYzFkYzEyIGxlZ2FjeS10cnVuaworMzc5NTkgNTE3MmMyOGMwYjNjOGM5ODI1MDdkNjEyMTJlMmE1MjE5OTAyOTk3MiByZWxlYXNlMjQtbWFpbnQKKzM3OTYwIGNmNTU1ZWM2OThlYmNlNGZkNmRjY2M2M2JiYWE1MTU4MjM3MGU3YzQgbGVnYWN5LXRydW5rCiszNzk2MSA1M2M2YTk1OWY5Y2ZkNWVkOGYwM2FkYmM1NjIyZDI4MjM1ZjVhMWYyIGxlZ2FjeS10cnVuaworMzc5NjIgMGRmZTYwOGVlY2ZhYzIwY2Y2OTliYjg0YWQ2OTdiNzlkNDNiMjZlOSByZWxlYXNlMjQtbWFpbnQKKzM3OTYzIGI5NjZhYWRlNTQ4Y2Y4YjEzYTcwZTQ2MDVlMTkwMzc4ZTg1YTdiN2UgbGVnYWN5LXRydW5rCiszNzk2NCA4ZmQ3NjZiYjc2YzllNDhlMTAyZDU0NGQxZDI4OWVhMGUyOWE5ZGEwIGxlZ2FjeS10cnVuaworMzc5NjUgZjQwOWQ0YzZkYzYwNDFlYjU0ZjRhY2IzM2M5ZjE2MDVmM2Q2NmM4YyBsZWdhY3ktdHJ1bmsKKzM3OTY2IGNkZGQwMTZhZTA2YWNmZTljYzM5NGMzMDM4ODg0NTQ3NjgyNGFjZDcgbGVnYWN5LXRydW5rCiszNzk2NyAwZjU2YTY2NTVlYmZhMjgzMDFhNmYyMDEzZjVjMDRmZjYyNjZlMzAyIGxlZ2FjeS10cnVuaworMzc5NjggZWY2ZDFlNWViNGQzMjllM2Y5MmNkNmYxZmRiNTI4ZjFlMDYwNTJiMyBsZWdhY3ktdHJ1bmsKKzM3OTY5IDI1NTcxZWE1ZWNhNjJmMDg1YjhhMDE3NzI1ZjA0ZDAxYWMwODQ4OWYgcmVsZWFzZTI0LW1haW50CiszNzk3MCA2OTg5MDkyY2Q5NmQ1Y2Q5MzMxNDkwNjViM2Q1YTRlMTE3ZmRkNTVlIHJlbGVhc2UyNC1tYWludAorMzc5NzEgNDIxYTVkZjUwOGI4NzcwM2YyN2VhOGVjNmI4OGYzZjQ5ZWM4NGUxNyByZWxlYXNlMjMtbWFpbnQKKzM3OTcyIDFkMWQ2Mzc3YWNiMTIzZDE4YzgyYzE2OWE3MzM3NzA4NWFjZTMzMzggbGVnYWN5LXRydW5rCiszNzk3MyA5NTc0MjljNDZiYmY4ZDc1MGU3NmE4YzkwZjc4YWUwNTZiMWEyYjgzIGxlZ2FjeS10cnVuaworMzc5NzQgMDVmOGE0ZmVjMzU2Mjk0NmZhZmZlNTUzZGE1OTYzNWE2NWU4NzU0OCByZWxlYXNlMjQtbWFpbnQKKzM3OTc1IDczYjA5YzJiNzg4YjhhMjIxMmQ0ZTI2NWZlZThhYjk5ZmY5NTVmYmIgbGVnYWN5LXRydW5rCiszNzk3NiAxZDA0OTM2YTY0NTZhMDRhOWZmMTBjMjU5NTVhOWM4MGFlZTRhM2EyIGxlZ2FjeS10cnVuaworMzc5NzcgOWMxZWIzM2ZlMTEwYmNjZDNkOWU0OTQxMTE2ODZmMmIyNjk5ZWFlOSBsZWdhY3ktdHJ1bmsKKzM3OTc4IDk2NzIxYTAzYWUzMDAyNGQ2ZWYxYmI4MTVlMTJkZTI3NzFmYWNhZmMgcmVsZWFzZTI0LW1haW50CiszNzk3OSBhYjhiMGI3MzE3MTdhNTgwMzBjYjgxYTkzOWE1ODNlY2RmNzhiZjZmIHJlbGVhc2UyMy1tYWludAorMzc5ODAgZjBmYzZiZWZiMDYwN2EzMWE3OGEyNmE5NTQzNmRlMzU4M2UzMjM1MiBsZWdhY3ktdHJ1bmsKKzM3OTgxIGNjYzUwZTBiNDY2ZDRlY2Q4ZDIwMGM0YWUwYzEwNjQxMmQ5OGQ4MWEgcmVsZWFzZTI0LW1haW50CiszNzk4MiA0OTc5YTQ0MzQ1NDM0MDk2ZjA5MGVmNGUyYWVhYzgwMzk5ODY4ODM1IGxlZ2FjeS10cnVuaworMzc5ODMgNjBkNDgyZThmODQ1MDE3YzBhZDU1YTk3Y2Q4MTc1MzYxZDQwMGEzZSBsZWdhY3ktdHJ1bmsKKzM3OTg0IDE1MzFiMjVlYmRjZDNiZjM2MDc2ZDRmNjY1MTU3YjdhMmY3ODc4YmYgcmVsZWFzZTI0LW1haW50CiszNzk4NSBlNDZmOThlNzNlNTI3MmFjMDgxNmZmYjc0NzViOTNjYTgwMGU1ZTFhIGxlZ2FjeS10cnVuaworMzc5ODYgZmVkNWE3MzQ0NjVkMzY0Zjc3NTA1ZTdhOGUwNmY5NTc5OGVmN2Y5YyByZWxlYXNlMjMtbWFpbnQKKzM3OTg3IDRlOGZiMTJmODM3ODcyMmFiYTA2ODlhYWQ2Y2Y4ZmQ2NmMxZjE5MzEgbGVnYWN5LXRydW5rCiszNzk4OCA0ZTM4ZWNkMTkxMmU0YTY1NjBhMzJhNDNiZWExOTNmYjk5ODQ3ODNmIGxlZ2FjeS10cnVuaworMzc5ODkgMWE5MzhmNDU2MDUzODUxMTAyYzc4M2E5Y2Q5NWRiNWZiMmJkYzhmYSBsZWdhY3ktdHJ1bmsKKzM3OTkwIDc5MDY2ZWEzOGM1MDMxM2QyMWRiNDYwNjU4ZjM1MDZlZDlhNjI4OTQgbGVnYWN5LXRydW5rCiszNzk5MSA0ZGNkNzhmM2I1ZDFiYTE2YjllMzFkZDA5MDkxNzQyOGE2OWY5NjUxIGxlZ2FjeS10cnVuaworMzc5OTIgNzEwYjBiMGUwN2VlZDcyYTI0MDc3NDMxNDYyNTM1ODA0ZGMxZGVhMSBsZWdhY3ktdHJ1bmsKKzM3OTkzIDAxNWI4OTJjOThlZTI0NjZhOGI0M2RjMmFkNzgyMjAyODAyMmEzNTQgbGVnYWN5LXRydW5rCiszNzk5NCBjZTRiZmJkOWExNmNkNTg4YTBiN2ZlOGRlYjM0MTcwNGFhYTUzMDc1IGxlZ2FjeS10cnVuaworMzc5OTUgNTkxMmI0MTgxNTg0NjE5ZTdjNWM3YTlkYWY1YTA4NmU3ODA0ZDA2MiBsZWdhY3ktdHJ1bmsKKzM3OTk2IGE4NTdjMjVhMzdiOTY4ZjVmYTFiNTY2NjVmNWU4N2NkNmJjYzk1YjkgbGVnYWN5LXRydW5rCiszNzk5NyAwYTZkZDNmMmFiYzdkMzhjOWZhNzMwMzU3NGUzODZiYTAwMGM2YjI5IHJlbGVhc2UyNC1tYWludAorMzc5OTggYWZlOTBlOWU0YjQ4NGQ4NzlhYmYyMzc0MzdiMWE4NDhhNGZhZWQ3OCByZWxlYXNlMjQtbWFpbnQKKzM3OTk5IDQ5MjY1Mzg1Nzc4MmZlNjNhY2FiZmY3YjFmMzZjNzc3YWE3N2VjMjIgbGVnYWN5LXRydW5rCiszODAwMCAyMWFiZWNlYWFiYWQ2ZDYxYjljYTVhMDg5Mzg0YjBiOTc4OTBkYjBkIGxlZ2FjeS10cnVuaworMzgwMDEgZjA1ZGQxODE2YzFmN2NkZjVhNDY4ZWQxODEzMDhkMzkxMDUwNGJiZSBsZWdhY3ktdHJ1bmsKKzM4MDAyIGQwYTA5Yzc5NzQwOTY0ZTIwZjE5NzIyZWY2ODM2NjdjYzY3YTc3YzMgcmVsZWFzZTI0LW1haW50CiszODAwMyBkYjhmNjk5ZmY3ODI1ZjdmMTdmNWRkNmZkYTcxY2IwMDYyMmFkMzdlIGxlZ2FjeS10cnVuaworMzgwMDQgYjEzMmJhOTI1OWFiMTRmNWE0ZWU3ZTkzNTU0Njk3NWMwMDdkNzE1NSByZWxlYXNlMjQtbWFpbnQKKzM4MDA1IDcxZDcxMGUzMzZkZmNhYjk5NTY1MjYyYjUyMmZjNzA0M2IzMTE2YTggcmVsZWFzZTIzLW1haW50CiszODAwNiBiZWRiMzQwZjEyZjk3MGEwMjgwMzRkMjFmODY5NjRkMmQ4MWY1MzMwIGxlZ2FjeS10cnVuaworMzgwMDcgNzUyZmE4NmYwNmQyNWMzMDM1OGZkNDQyZjkwZjI5MmUyZmFiNWMxMSBsZWdhY3ktdHJ1bmsKKzM4MDA4IGMyZWJhMDRlMzA0MTUxMDgzYmZhZTlkMzg0ODQ5ZGQ0ZjRlNmM1N2MgcmVsZWFzZTI0LW1haW50CiszODAwOSA3NWYzYTUxYTRlMzNkYjY1ZmQ5M2NmNTQyZWVmNmQ3YTg3MmEzZGNmIHJlbGVhc2UyNC1tYWludAorMzgwMTAgMTY4MDNiMDM5NjRlNGQ1MmE1NjYwZGNiNmVhOTUwZjc5OTg2Mjc3NyByZWxlYXNlMjMtbWFpbnQKKzM4MDExIDY1NzRjNTE1ZTAzNTY2YmE4YjYzNzkzYTM5NTYxZWVjYmQxMjZjZDQgcmVsZWFzZTIzLW1haW50CiszODAxMiBiZTQ1MGEzMzVlOTY5NmUzZGIxZGZmYTY5MGQzNzM2OTJjZTMzZWYxIGxlZ2FjeS10cnVuaworMzgwMTMgYTY1OWIwY2VjYjkyZjdkZTM2ODE4NGE3NjBhMDc4YTlkYjgyYTk4MiBsZWdhY3ktdHJ1bmsKKzM4MDE0IGU2OTJlNzdjYWQ1ZDVhNDNkNWNlNzliOTFiZmQ1ODUxZjhlMjhiYTEgcmVsZWFzZTI0LW1haW50CiszODAxNSBkZTQ3MDFmYzE3NmY5ZTQwMDhmNTAzNmY0MmYxNGRiMTJkZTYyYzY1IGxlZ2FjeS10cnVuaworMzgwMTYgYmJkYWFjYzQ0ZjZmNGEwYjNmOWNlODNhMzVmZGZlMTZiYWJhODg1OSBsZWdhY3ktdHJ1bmsKKzM4MDE3IGE4Njg2NmJhYzM2NmI4ZDhhY2Q0NTljYTg1ZTBjNDA5ZmRmM2MzYWEgcmVsZWFzZTI0LW1haW50CiszODAxOCA1MWIwZDE4ZGE0NDdiNzM1MzEzMTc3YWRmY2MzMjBkZDIxYzU1M2RmIGxlZ2FjeS10cnVuaworMzgwMTkgYzI5NGIxMTMyM2QxN2E0N2QyMzFmNjhmNTFjOGNhOGUyMzk1NGQ4MCBsZWdhY3ktdHJ1bmsKKzM4MDIwIDI1ODU2MGFkYzQzYjMxYjVlZjgwZTUyOWUxZTFhYTQzN2ZmMTBlNDggbGVnYWN5LXRydW5rCiszODAyMSBmMWVkYjQ3Y2U0ZmFiNDZiOWQ4ZWMwNDE4NmM3MzFhZGRiZmYzNDYwIGxlZ2FjeS10cnVuaworMzgwMjIgMzYyNmRiNDMzMTA0ZTA3MWQzMzkxZWY0ZmE0NDIxZDAwM2ZkZGU1MCBsZWdhY3ktdHJ1bmsKKzM4MDIzIDBmMDA3MjdhMjdiMzBiZTk5MjA3MWU1YmRiYWEyMWRmMDYwMzAwZjMgbGVnYWN5LXRydW5rCiszODAyNCA2OTYxMWM3Y2QyM2JkZjQ3YzQwNjY1MDBlYWYxYzRmYjhhZDcxNWZjIHJlbGVhc2UyNC1tYWludAorMzgwMjUgY2EyY2ExYWViMDgwNTNiNjk3ZjJjZGRmN2Y4NDg5NjkyYWE0OTVhZiByZWxlYXNlMjQtbWFpbnQKKzM4MDI2IDhiMTE0NGJhNzM0ZWZhZTFmZmJjNTQwZmNhY2RlYjdlNjUwZjgyZWYgcmVsZWFzZTI0LW1haW50CiszODAyNyBjYjU0ZjExNTNiOTM1NGU5ODJlZTliZjQyYTBiMDY5M2U5NjQyYWExIGxlZ2FjeS10cnVuaworMzgwMjggNWVhMDI1YzQyMWQ3YmI4Nzc3ZDUzMjYxMDFkOTY3ZDIxMzAwM2I2ZCBsZWdhY3ktdHJ1bmsKKzM4MDI5IGMyMGY1YjM4ZmEyMDk2NGFkNzJkZjVjYmUxOGNlYWM2MDgzNGY2YjcgcmVsZWFzZTI0LW1haW50CiszODAzMCBlNTM2OTNhMDJjZjA1NWQwZGY5MjYyNmZhNmVjODkyNzY0YTI0NzZjIGxlZ2FjeS10cnVuaworMzgwMzEgZmRlY2JhMjZmYzg3ZGJmZWQ5ZWY0NTIyNDMyNzFmNDZiZDUzMzEyNSByZWxlYXNlMjQtbWFpbnQKKzM4MDMyIGIzYWZjMDFjMDVhMDVhNTZhM2I0NjBkYWJlY2EwOTRiODJkYTZmYzUgbGVnYWN5LXRydW5rCiszODAzMyBkYjliNjQ5MzlkNDVjNzI4ZWRjNDRkOWFjYmM3MGJmMzAzNDA3NWRlIHJlbGVhc2UyNC1tYWludAorMzgwMzQgODBmMDFmZGJlZGViYzQ5OGIyOTdiMjE5ZGYzMGU3OGM0MmJlMThjNSBsZWdhY3ktdHJ1bmsKKzM4MDM2IDZjMDJmZjkwMmY4MjBkNjJkODUzNGI1MzBiMGMxYWYwNzI3Y2E4YTMgcmVsZWFzZTI0LW1haW50CiszODAzNyAxMzAyMWQzNTEzNTg2M2Q1Y2YxNjdkY2M3OGRjZDVlOTIzNmI3MTBjIGxlZ2FjeS10cnVuaworMzgwMzggMjE0NGEzNTJhYTM3ZmMwYjFjYTc3MTMwMWI1NmZmMWEyYzI5OWI1OSBsZWdhY3ktdHJ1bmsKKzM4MDM5IDMwYjk3YzFiYjEyZGRmMzJmOWVhYjQzZDZmN2E5YjlmMDYwNGYzOWMgbGVnYWN5LXRydW5rCiszODA0MCA5YzNhNjRjMjgxZTFiMzVhMDFmYTNmMGFjODI1YzMzNzk0MThkOTUyIGxlZ2FjeS10cnVuaworMzgwNDEgMDViYzhhY2FmMGJiNGM2YmMyMWU5ODJjMzFkMmIwNjJhYjZlZDk3NSBsZWdhY3ktdHJ1bmsKKzM4MDQyIGU4OWIxYTI0MGZmN2VkMTUyYjU3YTU4MjkwZjRmNzc1ZGQzMmI2ODUgcmVsZWFzZTI0LW1haW50CiszODA0MyBjMTM5YTQ5OTdkOWYxNGM0Mzg4ZjFiMzBjMzZmMWE5MDdhZDU3NDhjIHJlbGVhc2UyNC1tYWludAorMzgwNDQgOGZkYWE5N2E4YWMzNDM1ZWVlYTZjNGRlYWEwN2IyNDA4NjQwYmZhNSByZWxlYXNlMjMtbWFpbnQKKzM4MDQ1IDExZGIyOGU5MjA5ZmVkM2UzMTUwMWUxOTRhNGZhM2E2MGFjMGJmNWQgcmVsZWFzZTI0LW1haW50CiszODA0NiAwZWZjYzE2ZjVhMGQxNjU4YWU4YzU4NmZmYWYyMzNmZTJlOGE2NGZlIGxlZ2FjeS10cnVuaworMzgwNDcgNDcxNGFmZjRiZjc1Mjg3ZmYzMWFhZjQzOTg5MDY1NDBiNjE0NDg0ZCBsZWdhY3ktdHJ1bmsKKzM4MDQ4IDllODE5NWUyMWRhNjllYjJjMjNlODBjMGNmNjQ5NmE1OGJhM2FkMjMgbGVnYWN5LXRydW5rCiszODA0OSAzNmNmOTRmNTc0MTUxZjRiZGIzNWJiMTM2Zjk2NTBkYTRmYjJiOTIzIHJlbGVhc2UyNC1tYWludAorMzgwNTAgNmY0YTZlOWFkNmYzM2FiYmZhMmEzNTk4YTE2ZmJhNWMxMzA3NjhjZSByZWxlYXNlMjQtbWFpbnQKKzM4MDUxIDUyMWJlYzYwZWIzMDJmY2JjMzUyMDA1MDkwNjRmMDVlZjAyZjU3YTggbGVnYWN5LXRydW5rCiszODA1MiAwNDcwZDc1NDE3ZmYxNTVhNzQzMDQ4ZTdmMjE5M2M0N2NhMDdiMzU0IGxlZ2FjeS10cnVuaworMzgwNTMgZDA0NzAxZTU5ODcyODQ3OTc3ZWQxYzZhNzhlMzlhNzQ1NGI4OTlhMCByZWxlYXNlMjQtbWFpbnQKKzM4MDU0IDQ0ZWJmOThhNTg2ODIwM2QzNmI0ZWY1NzQyNzgzNDA1ZDgyZjhhZTYgcmVsZWFzZTIzLW1haW50CiszODA1NSBhNGJkNWQyMWM4YjI2Y2IyYWYxYjEzMjVmMDU5YzRlMmMzZTgzM2E0IGxlZ2FjeS10cnVuaworMzgwNTYgY2Q0ZGQ2ZGQ5NzIxYmRhNzBlMmIwMTc4MDE5NDI4N2ViZGYxMzk2ZSByZWxlYXNlMjQtbWFpbnQKKzM4MDU3IDk4ZDc5YjQ2OWU3NGQzMWZkNzJmODA2ZTkyZTU3ODE5ODMyOTM4YTggbGVnYWN5LXRydW5rCiszODA1OCAxMjg1Y2ExMzQ1ZDVjMzEzMWRiNzQ3MzExMmQ3Njg1NTA2NDE0MzcwIHJlbGVhc2UyNC1tYWludAorMzgwNTkgYTIzNDI4NGY5ZTA2MDJmMWM1ZDRkYjBlY2U1ZmY5M2U5ZWQ4N2RlNiBsZWdhY3ktdHJ1bmsKKzM4MDYwIDQ2ZmEwZTIwY2JjZmU0MDg2Zjg3NmVmNzNiMjVhZGZkNGE5MjAwMTQgcmVsZWFzZTI0LW1haW50CiszODA2MSAxOTkwZjdlYzBkOWFkMGIwYTc5MjEzMDIxNWQyZTU5NmMzYmM0NTk0IHJlbGVhc2UyNC1tYWludAorMzgwNjIgZGFiZDQzYmYwZGRkZmVlZDVmZTg5ZGZjM2VmNzA1MmVlZDhhMjc3YSByZWxlYXNlMjMtbWFpbnQKKzM4MDYzIGJlOTc2ZGRmMGZmNzA3MjFjZTQwYTM0MTc0ZWI2MDAxYWRiZDllNWUgcmVsZWFzZTIzLW1haW50CiszODA2NCBkNDcwMmU2N2UxMTk3ZmIyOTNjOTAxODkwN2Q0NGI1NzNlOTg5MzIzIHJlbGVhc2UyMy1tYWludAorMzgwNjUgN2ZiNjdhZTkzMTI4ZTE5NTE2NTc5NWY0MjBmZDkxYjIwYmM1MmYyZSBsZWdhY3ktdHJ1bmsKKzM4MDY2IGEwYzdkZjUyYmE0MTU3MzFhOTJkNjY0NTZkODgzM2E5MjZiM2QwMGUgcmVsZWFzZTI0LW1haW50CiszODA2NyA5Y2I4YzY4N2YzZDY3ZmZhN2JiNmM1OGU4ZDIyMzhiMWQzZDEyOGYyIGxlZ2FjeS10cnVuaworMzgwNjggMzA4ZWZkNzI2OGMyNmNlYWExZWU3ZmE5NmVhOTk1OGJkNzdhZGViNyByZWxlYXNlMjQtbWFpbnQKKzM4MDY5IDdkNWQ2YmRjNGY5NzlkNWE4NWE4MDY4MzEzZDgxMGFmNjAyMTdhY2YgbGVnYWN5LXRydW5rCiszODA3MCBlYTM0MDAwNmMxZjMwYjg2ZTExODI3ZjYwYTk4M2RjMjU5Y2IzYjVmIHJlbGVhc2UyNC1tYWludAorMzgwNzEgODZhNjBkNGZhODdhMzU2YWNiNjc0MGRlMGZlN2I1MGMzYTZjYWYxMiBsZWdhY3ktdHJ1bmsKKzM4MDcyIDE5Mjg2OTk0Zjc0ZjMyYTMxNjA4MWFmZWRlNTY2NWE3M2Q5ZTEwN2IgcmVsZWFzZTI0LW1haW50CiszODA3MyA3YzQxM2QzYTQwYTUyYmEwY2UyYWNhM2FiNTdkOTc3MDhlZjYwNWVmIGxlZ2FjeS10cnVuaworMzgwNzQgMDJmY2I1ZWI4NGNiNmExZmJjNmZmNjg2MThlMWU1MGQzNWY2N2M1NCByZWxlYXNlMjQtbWFpbnQKKzM4MDc1IDAzNGM2MTFiMmU4NDRlMGNlNWFlY2M2ZTBlNDY1YWU3MTczYmU3NGIgbGVnYWN5LXRydW5rCiszODA3NiA5ODY1NGJmYTgwZWE1ZGRiMjQzMzg5MzUwNzUxM2E0OTg0MjkwN2E5IHJlbGVhc2UyNC1tYWludAorMzgwNzcgMWU4YjAzM2Y5MWRjM2JhYTk5Zjk4YmY2NGIyY2JjNWZlZWI3MzcyOSBsZWdhY3ktdHJ1bmsKKzM4MDc4IGE2YmEyOGQxZDgwNmFhODMxNDg1MzJiMGQxYWI1YWM5ZTJhNmMzZmMgbGVnYWN5LXRydW5rCiszODA3OSBhYmUzMTQ1ZGRlNGU3Y2Y2ODdmOWMyMTdmMDI3YmZkY2FkNDRhN2ExIHJlbGVhc2UyNC1tYWludAorMzgwODAgYjY2MTk0MjNjMTk2MTAxOTUyMDE4ZjgzMmI1ZjNkNjY3N2FmODlmYiBsZWdhY3ktdHJ1bmsKKzM4MDgxIGMxYjQ0MGVhY2JiMTgwYmZkOWRkOTQ0YTFhODM2ZTY1Y2Q3MmQzYjEgbGVnYWN5LXRydW5rCiszODA4MiA5OWUzZGRiM2E3NGFhZDc5ZmMxZmMzODI3YzBiZWVhNjkyOTU2MWNjIHJlbGVhc2UyNC1tYWludAorMzgwODMgOGQ2MDA3N2U5OTUxNDkwYThlMjg0ZTU4MDliZjA2ZmZkNDkwZjM0ZiByZWxlYXNlMjQtbWFpbnQKKzM4MDg0IDY3MTkzNjkwODNjMWViOTIxOWU0NjgyZmRlZjNkZGI5MDE4OTEwNWEgbGVnYWN5LXRydW5rCiszODA4NSA5ZGM5NmFjOTQzNDIzODJkZGNmYjI0NTRiMTA2MDFmZDBkMjEyODliIHJlbGVhc2UyNC1tYWludAorMzgwODYgMmFhOTZlZTNmY2I1YzkwYjcyZDI1MDAyNDEyOTQzMzhlZjJmNmViYiBsZWdhY3ktdHJ1bmsKKzM4MDg3IDRhMGMxZTUxN2U2YmIwZjU4ZmQ3MzM5YjhkYzU2NjBmZTBlMDM5ZDQgcmVsZWFzZTI0LW1haW50CiszODA4OCAzOTExNzI2YWVjYjkwMDFlNzE5NWQ3YzY1Zjg1NTExOWRiMGYwY2VkIHJlbGVhc2UyNC1tYWludAorMzgwODkgNjQyZGIxZmIzNDgxYjMzZGFkMDY5NzY1NzU1MGU4NDc5ZDU0NTljNSByZWxlYXNlMjQtbWFpbnQKKzM4MDkwIGJiZGMxZDczMTBmNDk3YTc4YjUzMTZiMmU0ODhiYTQ2YjViNWNhMzQgbGVnYWN5LXRydW5rCiszODA5MSBlYzE5MjVmMDdlYzk3ZTAyYzNkMTc2YjgzYjMxZjdiNzQ1MTY1ZmViIGxlZ2FjeS10cnVuaworMzgwOTIgZTIwODhhZTBkNjdmZDY2N2ZmYjNiNDJhNjMzYTBiYWZhMGU1NTY4OSBsZWdhY3ktdHJ1bmsKKzM4MDkzIDU3YjIzZTU3NWZmYzYzMGMyOWM0NGZmMDJhMmM0MjhkY2VkNWQ4NmMgcmVsZWFzZTIzLW1haW50CiszODA5NCA5NWJiZTk5MWZjYzMzMTlmOGY5OTY2NGQxNjA1OTA1NGIxY2YyZGE1IHJlbGVhc2UyMy1tYWludAorMzgwOTUgY2ZkYmZhNTRkYzZhNzAxY2I1OTAwZTMzZjdjOGM5NjhlMTZiOGJlYyByZWxlYXNlMjMtbWFpbnQKKzM4MDk2IGE3ZmZkYzA5ZjAwMjY3ZDc2NDhmNGJjY2RhNjBhNzdkZTlkMzg1NDQgcmVsZWFzZTIzLW1haW50CiszODA5NyA2OTQ2NzBmNjUyNTFkNWNmODBmZDEzM2RkNzUzMTVhYTRhOTcyZWUwIHJlbGVhc2UyMy1tYWludAorMzgwOTggOTNiMWIwYmViYTU5ZjkwMzYyNDdhNjU3NjBjMWMyMTVlODZkMGI2YSByZWxlYXNlMjQtbWFpbnQKKzM4MDk5IGFiMWExN2M2MzNhZWJlOTcwNGE0OTllY2Q4ZjU4N2ZhMmEwNWE1ZTEgcmVsZWFzZTI0LW1haW50CiszODEwMCBhNGQ4NjllY2VmMzM4YmViMzJlZjIyMWNkYzQ3ZTFhYWU3YmExN2I5IHJlbGVhc2UyNC1tYWludAorMzgxMDEgYzBjYzY2MDFkZGFkYTJlYTUyMGU1MWFlNWQyMjFmNmMyMjQ2NDBjYiByZWxlYXNlMjQtbWFpbnQKKzM4MTAyIDkwY2QyNGExZWUxMjQ5NjEwMjRjYmVmM2U2MWUxMGNhNGVlZjg1NTYgcmVsZWFzZTI0LW1haW50CiszODEwMyBhZWEyMjM3YjM4OGZmNzJmZTk2OGZjMTEzZWQ3Mzg4NGI1MzFiYWYzIGxlZ2FjeS10cnVuaworMzgxMDQgMjkyMDY5MWY2M2YwNjg3Y2JjNTAwYWMzMjAyNTM4NTJmZjJiYTBmOCBsZWdhY3ktdHJ1bmsKKzM4MTA1IDkxNDUzNGY2ZWY2MTI2YTQ2MmYzZjZjZTVhODFhODcxYjc1ZmE1MDMgbGVnYWN5LXRydW5rCiszODEwNiBhMTVmYTA1OWY5ZjAzMDA3ZDE3MzU2ZTU1ZjQwMGU4MzJhNWI2YzA5IHJlbGVhc2UyMy1tYWludAorMzgxMDcgYzllNWQxZDFlODg3Y2MwM2FjNWZlODgwOWMxNDg5ODMwMzE1ZjJmNSByZWxlYXNlMjQtbWFpbnQKKzM4MTA4IGRmMGMyZjNhY2M3Yzk2MWIwOTcwNDllYjRhODA4OTMxZTBiMjM3ZGQgcmVsZWFzZTIzLW1haW50CiszODEwOSBiMDQ0NzM1YzkyN2IxMDQyNjEyNzg2N2ExNTE4MDI4NDA3ZWI0ZWEwIGxlZ2FjeS10cnVuaworMzgxMTAgNDYzNTM1NjhlNDBkOTlkM2NlYjUzMWY3MTJiNmYyODhlNWM3NWQyZSBsZWdhY3ktdHJ1bmsKKzM4MTExIDk5ZWJlYzJiZTAzMTI5MjFmODM2YmJjNWE4NzMyNTkxNzI5Mjg2OTQgbGVnYWN5LXRydW5rCiszODExMiBhYWJhMWNlNGIzY2EwNWZkOTIwZDZjZDcyZjYyNGQ5NWRjZGFmOTk0IHJlbGVhc2UyNC1tYWludAorMzgxMTMgODZjM2E3YzZiMDBhMWFiMjgwMmIyNTU1OWFkMTJkOTJkYjE1MmY4YSBsZWdhY3ktdHJ1bmsKKzM4MTE0IGY1NGUxNDAwMGQ2YmQwZTJhZjFhM2NjOWI1ZjJjMTkzODU5ZTQzM2QgbGVnYWN5LXRydW5rCiszODExNSBlODJkMTgzMjU4ZjljMTA2NGE4ZmU1ZDM2NzMxMWVmNzM0N2Q1ZmZhIHJlbGVhc2UyNC1tYWludAorMzgxMTYgNTc5OGFhNjU0ZWM2NDBkOGRhOTk1MzEzMTYzYmMwODRmYjRhNzYxNyByZWxlYXNlMjMtbWFpbnQKKzM4MTE3IDI4ODkxZGMyNTU4MGNhYWM4N2IwYzBjMmFiMGZmMjkzOTI2OWI4MWIgbGVnYWN5LXRydW5rCiszODExOCA1ODQwMjNkYWM0MDY5MTViNTY4NzJkMWM4OGEzNWE3YWUyOGIxMjQ5IHJlbGVhc2UyNC1tYWludAorMzgxMTkgNGVjMDA2Y2EyYjkxYmVhN2U1MmQxODI0NWEzZDAxNWIxNTNhZDdlNCByZWxlYXNlMjQtbWFpbnQKKzM4MTIwIGU4MTE1MjE1MjQzM2ZiMThhZGQ0ZTlhZDAyOTdkNzBhZDg4MDc3MzcgbGVnYWN5LXRydW5rCiszODEyMSBjNzAyMzkwYThlMTIyMmU5NzkwMDdlMWNhNTNhOWQ2NDg0YzRlODk5IGxlZ2FjeS10cnVuaworMzgxMjIgMGQ5MTYzZGE2MWEzYmIwMDM1NDk3YmQwMDBhYzNjNmQ5MDU1ZDhiNCBsZWdhY3ktdHJ1bmsKKzM4MTIzIDY0NjE5NWI1OTIwNTc3ZDRmNWI2MmVjNThmZWFiMmRlZGU4YTI1NDQgbGVnYWN5LXRydW5rCiszODEyNCA3NGE5MWU0NTU5Y2E1YjI1MzIwMzUzNTViOGQ4MGNjNjg0Mzk2ZjlkIGxlZ2FjeS10cnVuaworMzgxMjUgMzIxYmMyZDQ5YTVhMmUxMGZlYzRlNDNkYzBkYmU4NTBjMTg4MjkyNSBsZWdhY3ktdHJ1bmsKKzM4MTI2IDU4NmE3NmY5NmIwOWRkNGYyNGJjMzllNzg3NDAzOGRmZjY0ZWRjYWYgbGVnYWN5LXRydW5rCiszODEyNyA1ODk4MWZlOTBiZWZhNGU3MDA4NDc4YzlmMmQ4ZDYyMjRiMDIwOWM4IHJlbGVhc2UyMy1tYWludAorMzgxMjggMTkxNGM0ZGI0YjI4NjBjOTY1NjNlNTBiOGE4YjhkZDczNDBlMzIxNyBsZWdhY3ktdHJ1bmsKKzM4MTI5IGIyZWNkYTRkZDcwZmRmNjhjMDUwYmVkOGFjZmQ4YjIyZDllODZlYjMgcmVsZWFzZTI0LW1haW50CiszODEzMCBhZjAxMzM2ZmYxOWRiMzA2ODI5NmE4YTY4MzJiNjI5YmFmNmZjMDQ2IHJlbGVhc2UyMy1tYWludAorMzgxMzEgMDQ0MjcxNzRjZjZhYjEzZjdlZjliZjhhMTc1MTIyMTRiNzkzYWYzYyByZWxlYXNlMjMtbWFpbnQKKzM4MTMyIDA1NWRkN2Y5MGIxZWE4YjZlZTZjZjg1NWJlYjhjNWZmZDVkMGNjZWQgbGVnYWN5LXRydW5rCiszODEzMyBhOWEwMzM2ODI5YmEwNDAzZWM3YzEzZmJhOGMwNWQzMmM1ZjU1ZDZmIGxlZ2FjeS10cnVuaworMzgxMzQgMDAwNmIyZGQzN2MyMzY5MWQ2MjFlYjRiMzA1MzM0ZDlmMzY3ODhiYSByZWxlYXNlMjMtbWFpbnQKKzM4MTM1IDAwNTYyZGFiZmQ0ZjM3YjgzMDg3YzY1YjQ1Mzc5MzNjNGU2YmUyOGEgcmVsZWFzZTI0LW1haW50CiszODEzNiA0YWNmN2FiZTU4MjU3N2VlNmVlYWQ3MThkYzc5Njg2MmZmZDRiMjg0IGxlZ2FjeS10cnVuaworMzgxMzcgYTEzZDk0NGNhNzZjOTc2NGVjMWViMWRiNGVlYjEwN2NkNTIzMzQ5YSBsZWdhY3ktdHJ1bmsKKzM4MTM4IDIxZGQ1MjRiZTAzNmFjYTRmZmJhZGJiNmM4NWU5NTU1ZThkYjkyNGUgcmVsZWFzZTI0LW1haW50CiszODEzOSA3MmNkOTNmNDYzYjVhZDE5YTBiNDcwOTYwODFhOWRhNTc4NTU2ZmQzIGxlZ2FjeS10cnVuaworMzgxNDAgOTM3NzJiNzE2ZTNmOTE3OGNjNmRjN2MwNDM2YTYxM2JlNzEwOThlZiByZWxlYXNlMjQtbWFpbnQKKzM4MTQxIGQ4ZWM0YWZhMWZmYjBhZjJmYzA5MTQ4YjU5Nzk0ZDdiOTdkZTAyMGEgcmVsZWFzZTI0LW1haW50CiszODE0MiBlOWNlZGU5MWQzYzMyZjZjZDFiZWU0NzI5OWJmZWU4OTRkNmE5MjA5IGxlZ2FjeS10cnVuaworMzgxNDMgYWZkOWI4MmU2OGYxZjhkYTU0NjE1YzNiYmZiZWMxNzE2OGYwYjgyNyByZWxlYXNlMjQtbWFpbnQKKzM4MTQ0IGIzYWY3YzZkYjFjNjBkZGQ3MTczNWJiMDM4NjQ1MjAyMWRhNWRjZWEgbGVnYWN5LXRydW5rCiszODE0NSBiYThjM2VhYTQzYTU5NzI2YmI0MTcyZDlhYjU0YzVjOTVmMjQxMGM1IGxlZ2FjeS10cnVuaworMzgxNDYgYjJjOTk4MTk4MzA0OWM3ODIxZWFkYWNmNDUzMTEyYmI2ZmZlN2NkYiByZWxlYXNlMjQtbWFpbnQKKzM4MTQ3IGVhYjE3NGQwZWQwMzFhZDVjZjU0NGRmNzVlZWQ2M2I1ZWU5NTJhOWMgcmVsZWFzZTIzLW1haW50CiszODE0OCBhOGE0YWZlMThiNjEzNGEzMDM0MzU3ZWY3MzMyMmY5OGUzM2M0NTQwIGxlZ2FjeS10cnVuaworMzgxNDkgZTIyMWQ5OTU0NjI2ODk1YWU1MDA4YjNiOWRmMGNlZmEwNTc5NDk4ZCByZWxlYXNlMjQtbWFpbnQKKzM4MTUwIGY3NWFjODZiY2VmNDRlZjRmODBmNDU3Njk5ZWFlYzRjOWU3YTQ4NWYgcmVsZWFzZTIzLW1haW50CiszODE1MSA1N2JmZWI1M2YyZmEzNGIyMjNmZDdlNTUwMDM4MTcxNDA2Y2Y1NmY5IGxlZ2FjeS10cnVuaworMzgxNTIgM2VjNTRjNWY3MDgxNDhjYjI2MmRkMjFjOGEzNTFkYTUzZDc0MjViMiByZWxlYXNlMjQtbWFpbnQKKzM4MTUzIDVkYzI3NGUxNTgyMjc2NmJiY2IxMzZlZTliZDY5MjI0MzU0Y2IwZjQgbGVnYWN5LXRydW5rCiszODE1NCAxODEwZGZkNjE1YWU3ZGZkOGFmMTdmOThkOTU3OWQ4YWUxNjk3ZmU0IHJlbGVhc2UyNC1tYWludAorMzgxNTUgNzYyMjkwOTY1MWM1M2Q3OGJjOWY3YWVjMmFmYzY4NzYxMWU3N2Q2ZiByZWxlYXNlMjMtbWFpbnQKKzM4MTU2IDUzNjhkMmI3ZDY2YTBhNTdlOWZhYWFiMTlhN2I1NjgzZjQzYjRlMGYgcmVsZWFzZTI0LW1haW50CiszODE1NyA0ZDM4M2I5OThiYjQ4ZjQ3Njk0MjBhMWU3NzU2MWMxZGIzYTc3NDc5IGxlZ2FjeS10cnVuaworMzgxNTggY2Q1MTc3MDFmZDkzYzk0NDhjNTgyMzcxNDI3YWE4NGYwNTcxNThhNiBsZWdhY3ktdHJ1bmsKKzM4MTU5IDNlOWE0ZDUzMWU1NjNkZDk0ZDgzNmFiOTQ4MTM4M2QwNDA1NjljNGIgbGVnYWN5LXRydW5rCiszODE2MCA0MDcyNWYzMDRlMThkNzNkOTQ4YWUxYTBlZTkwNTA0ZDZhM2EzNDRjIGxlZ2FjeS10cnVuaworMzgxNjEgNjdmMjE5MGUxZjZkOWI2NTA1NTE5MDEyYWE5OTA0MzIwNWFhM2RiNiByZWxlYXNlMjQtbWFpbnQKKzM4MTYzIDU2ZTYxMDMyN2I4MTZjNWJlN2I5ZGY5NGRkNzE2YTBhYzU5YmVmNTAgbGVnYWN5LXRydW5rCiszODE2NCBkYzlkMGE5ZWRlODg2NGQzYmI2NzkzNmRiNGU3MTRhZDk3YWIwYzEwIHJlbGVhc2UyNC1tYWludAorMzgxNjUgZGYzODBlMTk2YzRiNWFhMzQ0NWEwNjcxZDIzMjgzZWY5NTE5NmY0NiBsZWdhY3ktdHJ1bmsKKzM4MTY2IDFkNjI1ZGFlZDU5NDQyODIzNjliODVlYjgwZTUxMjlhNjMyZGFmOWEgcmVsZWFzZTI0LW1haW50CiszODE2NyAxZjdjZjg1MjFiYjU4ODZiNWEwZjgyNDIzYjRkYzQwZjJjM2E0OTdhIHJlbGVhc2UyNC1tYWludAorMzgxNjggOTk4ZmIxZTFjOGU5YTZkMjNjYTJlNjYzMmIzM2VlNWNkN2NiNjk0MyBsZWdhY3ktdHJ1bmsKKzM4MTY5IGNiMzBjZmNiMzllNzQ0NTcyYTQyODdjZmJiM2UzZjBhODQyYzZlOTUgbGVnYWN5LXRydW5rCiszODE3MCA5OTEwNDFmNzY0NDc4YzkwNWFlZmIzOTMwZTczOTZiODQzMzIwNmIwIGxlZ2FjeS10cnVuaworMzgxNzEgMGMzMjYzMjdlNzIyMzkxYjZjNjRjYzM1YzViZjcxZTQ3Y2ZiMGRkZiBsZWdhY3ktdHJ1bmsKKzM4MTcyIGYxYzM1ZGE2NGQ1NTRkM2Q2YTVjMDU0YTgxNDQ0MzEyYWY4MTk4ODggbGVnYWN5LXRydW5rCiszODE3MyBmMDBiYzI3M2FlNzBkMWU5ZGJhZTFjYzRkNDlkMWE0MGQzNjA2ODVmIHJlbGVhc2UyMy1tYWludAorMzgxNzQgZThiZjYyMDgzYWM0NDQ2ZjMyNmYxOTM0OWNmMWMwZmM1Y2I2NGEwMiByZWxlYXNlMjMtbWFpbnQKKzM4MTc1IDYwYTRiMDY0YTI0ODBhNzA5N2M2ZDJkMjZhYWY1NzUxNTQzNmQxNGQgcmVsZWFzZTIzLW1haW50CiszODE3NiBiYmNkODEyN2IzMjY4Mjk0NjViYjQ0YWIwZTNkYmNlOTgyMDc1MWU5IHJlbGVhc2UyMy1tYWludAorMzgxNzcgNjEyN2MwODlhMDZjOWUyMmI1ZTRjZGU3OTAxYTNjZDdhMzQwNmRkNyBsZWdhY3ktdHJ1bmsKKzM4MTc4IDc5YWRlMmRkZDMwNjg4MWQxNDRhMjUxNWQ3NWM2NDk0NjdjNTY1NGUgbGVnYWN5LXRydW5rCiszODE3OSA3MjQxN2ZhMjFjN2ZjZDc1ZTk1YjdhOWI1ZjUwNTQ2ZTM1ZTllZjA4IGxlZ2FjeS10cnVuaworMzgxODAgMzIxNjNhOGMzYjY5ZDM4NzBiNWZkZjQ0M2NmYzJiNjdjOTg0NjFmYiByZWxlYXNlMjMtbWFpbnQKKzM4MTgxIGU1OGNlMDQwNjZjZDgyMmEwY2RlYTRiMzJlZTYxNWY3NDJjN2M4MGQgcmVsZWFzZTI0LW1haW50CiszODE4MiBhNmM4MWFkMWY0NGNiNzQzMGJjZmEwNjQ5ZDkzMDJhZTg2Mjk0ZmMwIHJlbGVhc2UyMy1tYWludAorMzgxODMgYWQ4ZjllNzVmNjFkMjQyMDhmNTRlZWYzZTgyNzk4NWE0NjhjNDI3NiBsZWdhY3ktdHJ1bmsKKzM4MTg0IDJiYmM4YjRiNWI5Mzc1YzIzNGI4NWJhMzUxMGI4MGU1ZTU4YjExMGEgcmVsZWFzZTI0LW1haW50CiszODE4NSAwOTc0Mzc2MzQ5Njg5YmIyNjE2NThmMjJjYmVjNTdjZGQ2MzhhNDJhIHJlbGVhc2UyMy1tYWludAorMzgxODYgZjFhZTQxZThhYmYzODkxZTk2YTY3NmJlYzk1ODg4NGRjMjdiZGIyOCByZWxlYXNlMjMtbWFpbnQKKzM4MTg3IGI2NDdlZGQzYjk2YjgxZjVjNWNkNzc0YWExZmQ3YjgyNjcyYmY4YWIgcmVsZWFzZTIzLW1haW50CiszODE4OCA0MWNhN2I3NjhiNGZmNGVmZTU4NGY3ZTQ0ODc2OWI3NWExZDg5OGNiIGxlZ2FjeS10cnVuaworMzgxODkgM2E5NTBmMWFmYzU1ZmYzNzZiNzhiY2M1ZGU2ZjcxZjFlZTMxMGE0MSByZWxlYXNlMjQtbWFpbnQKKzM4MTkwIDlkZDg3YmE2MTc5NTUwMWEwNzk0Njc1NTViMzk0YzEzMjRjNjIxNGYgcmVsZWFzZTIzLW1haW50CiszODE5MSBlZTgwOGUwOGRkNmZiODk5NTVjMDU0ZGE2NjU2MTVlNmFlZmMyODQ0IGxlZ2FjeS10cnVuaworMzgxOTIgMDY2NDNmMDcxMzM1MDkzMDQ5YmZhYTI5ZWYyNDI3NDgxNGQyZmE5NiBsZWdhY3ktdHJ1bmsKKzM4MTkzIDRlNWYwNmM0Zjk1NzljYmM3YmJkNTZmNGM0MTVmYzg5MjcyYzg4YjcgbGVnYWN5LXRydW5rCiszODE5NCBmZmU3NTQyZjhmMWY3YTc4NDU0N2JjMTYzNzI0MGY2YjllZGY1ZWE2IGxlZ2FjeS10cnVuaworMzgxOTUgOWNhZjljZDU0NTNkOWU5NjI1NjFlNWQyN2JkMjU1MWEzZTFhYWQ2NSBsZWdhY3ktdHJ1bmsKKzM4MTk3IDQ0NjExZTU0OTllN2MyN2U3NmVkNjIyMThjMzQxMDY1NGNkN2JkMTggcmVsZWFzZTI0LW1haW50CiszODE5OCAzZmM4ZWNlOWQyYjgwYTQwMGFhZjA4OGIwMTMyZjJlOWJiZGEyMzZhIGxlZ2FjeS10cnVuaworMzgxOTkgYTYyYjNiNGZmNTJjYjkxODk3OTA1NDI0YWMxMGQ5N2M2YjU3YmVlMiByZWxlYXNlMjQtbWFpbnQKKzM4MjAwIGFlYzU5NjY1MDI5MjM0NDI2Y2YwMjM0ZjY4ZmI3MTA0ZmY2MDkxYjcgcmVsZWFzZTI0LW1haW50CiszODIwMSBkOTI2YjhhNWVmNmUzNGEyNDNmYzBlZjQyNTZiYTQwYzNlYzcwZDYwIHJlbGVhc2UyNC1tYWludAorMzgyMDIgODRmNDNkM2ExNTM1NGEyNDQ4NTRjYzRmYmRiYTlkNWUzMDVjYzE5YSBsZWdhY3ktdHJ1bmsKKzM4MjAzIGU2YmYyZTcyOTQxZWUwZWVmMzUxYjA3NTBmMWRhY2NjM2I4OTRlYjkgcmVsZWFzZTI0LW1haW50CiszODIwNCBlMTVjYjYyYjNmZmJkZTBiMjdhMGQxMjRmMzlhM2ZmMTc0ZjM4ODdlIGxlZ2FjeS10cnVuaworMzgyMDUgYmEyNGEwMzI0YTAzM2FlY2QzN2Q2MDY3NzVlZWI2MjZkYmExZDkxMiBsZWdhY3ktdHJ1bmsKKzM4MjA2IGRmOTVhNDE1MTVjNDE0NGNhYWM1YWM5ODAyOTUxMGEwODU1N2IzZGUgcmVsZWFzZTI0LW1haW50CiszODIwNyBiZTQ5MjllNTE3OWJjMGIzMjliMTE0OWQ0MDJjZTFiYzJlMTk0OWNhIGxlZ2FjeS10cnVuaworMzgyMDggZjgwYmI4YWZmNDE5MmZjZDIyNDQzZDZjNWE0MTU4OTE0Y2Q0Yzk4MSBsZWdhY3ktdHJ1bmsKKzM4MjA5IDhmOGY1NjBjZWM5N2VjNWJiYjhkMTg0MTA5ZjI1MDVjMmM3MDFkZTUgYXN0LWJyYW5jaAorMzgyMTAgMjA4MGM4YzQ3NzI5NzdkODk4NWJmMzZiNTk2MGEwMDkxNWQ2NDU1MiBhc3QtYnJhbmNoCiszODIxMiBmNDJhN2MzMzVhNWI5YWIwMGMwMzQyMTNhZWMyMTYwODQzYTM5YTkwIGxlZ2FjeS10cnVuaworMzgyMTMgODI0M2U1MWEyMmRlZWZlNjUyNGMzYjAzZjVkOWFlOGFhNDAwYjk3NyBsZWdhY3ktdHJ1bmsKKzM4MjE0IGEwYzBjZDNlODFmZDQ3N2I4Y2Y1ZTBlMDc2YTUxNjU4MjdhNjMwNGIgbGVnYWN5LXRydW5rCiszODIxNSBiYWViMDlmNjBjODI4MjY1YWVkMGQ1YzNhODM4ZmVlMWE2ZWU5ZDE3IGxlZ2FjeS10cnVuaworMzgyMTYgM2ZlZTdjOTExNmM5MWZkOTUwYmM2ZjY2MzA1YTUwNzdmNjVlYzk3YiByZWxlYXNlMjMtbWFpbnQKKzM4MjE3IDI2Y2NjZjNlODQ4Mjk2MjZmNWIwMjFiNzVkYWVjZDM1YTk5MTU1OWQgcmVsZWFzZTI0LW1haW50CiszODIxOCBhOGVjZDRhOTY4MjU2OTUxZjk5MGM0N2NjMDRiZWM2MDBlOTEzN2I5IGxlZ2FjeS10cnVuaworMzgyMTkgNjNmMzQ0NWYyZjU5NzM1MDc3OGM4ZDc0NGQwNzdhZWYwMWI5YmJjOSByZWxlYXNlMjQtbWFpbnQKKzM4MjIwIDU2ZTBjYzQzN2I4YjUwNWYyMmE0Y2Y0NjIwOGFhYTEzOWRjMGRmZTEgcmVsZWFzZTI0LW1haW50CiszODIyMSA2ODAwNjAwMjc5ZWQ2M2UxYzVmZWFhNWRkYTZjZWNkY2NlNzVmNmE3IGxlZ2FjeS10cnVuaworMzgyMjIgZjI2M2Y5NDNlZjdiMjBhYTBmNzVlNGNhNGYxYjVjMTk2YWMwMTg1MCByZWxlYXNlMjQtbWFpbnQKKzM4MjIzIGExMjNmYjRkNDViZjRhNjdkNDUwMjUzMmU3NjRkODUxMDM5M2ZhY2UgcmVsZWFzZTIzLW1haW50CiszODIyNCBjYTdmNDMxNWIyMTI2ZjdjNjRmMjM1MzIzMTRkZmU0MmEyZTIzMjY4IHJlbGVhc2UyNC1tYWludAorMzgyMjUgZTUxYTgyMTYyODQ2NGYyNWNiYWI2N2I0YTA5NjU4YjczMDUwMTVlMCBsZWdhY3ktdHJ1bmsKKzM4MjI2IGIyZDM4NzkwMDRjZDA2ZGMzMTViNWRlZjIwN2E2NTgxNmFmYmE2NmMgcmVsZWFzZTIzLW1haW50CiszODIyNyBiN2JjYmUzOThiYWE2ODlhZGYyODQ1YjdkMjQwOGMwODAxNWQyODQwIHJlbGVhc2UyNC1tYWludAorMzgyMjggYjFhODQyMzNkODU1N2QzZTIxOWZkZDA2YTUyZTdlYzNiY2UzNTExMSBsZWdhY3ktdHJ1bmsKKzM4MjI5IGYwZGI5YjE4NmYzZGRjMGUxYzcxZGIwY2E5NzE3YmIwZGYwMmQ0NDcgYXN0LWJyYW5jaAorMzgyMzAgZDgxYjYxNzNmMDUwYmY5OGNkMjgxNjQyYTE1ZWQyNmY1Y2NmMTA0ZCBsZWdhY3ktdHJ1bmsKKzM4MjMxIDIzMzY2ODg5YzZiOTRjMmFiYjdiNWQ3OGEwNTA3ZjM0ZjllM2ZlMGIgbGVnYWN5LXRydW5rCiszODIzMiA4NjE4MTY4ZGNhMjcwNTQ1YmI1ZWFmYjAwZGFkZTNjN2UxOGQ0MTNiIGxlZ2FjeS10cnVuaworMzgyMzMgY2MyN2IyNDk3NTVkZTZlZWRhNTA1NmRhZTMwOWM1NTA3OTgyYzU0YyBsZWdhY3ktdHJ1bmsKKzM4MjM0IDM1ZjMxNzkwYzZmOTZiYWZhOTE2ODU1MDE3MDUxNmVkNjFiYjY0OWUgbGVnYWN5LXRydW5rCiszODIzNSAxOWU2MWEyYTU2MzIwYzY1MDYxZjQ0NjU4OWIxYzg3MjI5NTgxMDQ4IGxlZ2FjeS10cnVuaworMzgyMzYgYWEyNDZiOWY2MTg0ZmI5YThmZWZkZDFiOWIwMjMxOTBjYjZjMjZiMyBsZWdhY3ktdHJ1bmsKKzM4MjM3IGIyMmViZmM0ODhmMzAyNGYwZDM4MWRjYmMzNTJkYThjMzFiMjQ1NTcgbGVnYWN5LXRydW5rCiszODIzOCA1Y2Q0ZmZmYWY5MTA1YWY4MzQ2NmE4ZDkxMzI5Mzk0N2I5MjUzNjcwIGxlZ2FjeS10cnVuaworMzgyMzkgZGJiZTgzYzMyOTRhM2UzMWIwYTA5N2Q3NjdkZjFiNWM2YWRjMWM0OCBsZWdhY3ktdHJ1bmsKKzM4MjQwIGZmNzNlMTVhM2ZiOTIzYTE5OTJhNjc0NjA5YzVhODQ0MGE0ZTJmYWMgbGVnYWN5LXRydW5rCiszODI0MSBjZTIzMjA3MmVhZTY0OTNiZDE3NGZjNDU2YWNkMjQwNDA3NzY1NDdkIGxlZ2FjeS10cnVuaworMzgyNDIgOGE4ZDg0NDc2N2I2NjYyZjA1NTcyMmFlOTk5M2VkYjE2NGVkMmYzYSBsZWdhY3ktdHJ1bmsKKzM4MjQzIGNkYWExNjg2OTYwODU1ZGRkODg3NWE2M2U1OTIyYzIwODQwZjBlZGUgbGVnYWN5LXRydW5rCiszODI0NCBiODk4ODEzNDgzNzUzNWQ5MTJlYzFhNzVhYzMzMjMwNWViNDNjNWM4IGxlZ2FjeS10cnVuaworMzgyNDUgOWUzMGQ5ZTJiNDMzNjM5MjU1NzY2YTdiNTkxYzY2NmY3ODA5OWM5OSByZWxlYXNlMjQtbWFpbnQKKzM4MjQ2IGM1OTc1NDMzYWE2ODc3ZjlkODI0YmZjYTUzN2VlZDlhMWJhMmQwYjUgbGVnYWN5LXRydW5rCiszODI0NyAyYjQ4NTk3NGI0NzE1YmM2MjZhYmU4M2EzZjM3OWVmZjJkZmY3MjJmIGxlZ2FjeS10cnVuaworMzgyNDggYTk0ZGEyYzZhNjI2ZTRkMzRkOWI2OTE1ZjhlY2FlZGY0MmJhYTZjYiByZWxlYXNlMjQtbWFpbnQKKzM4MjQ5IGEwYmM0NDE5NjYzYzMxMDVlYTE0MzhmMjFhNjUzMzE3MTc0NDc3M2UgbGVnYWN5LXRydW5rCiszODI1MCAyODdlNzFmNDRkNzk2OThkMjY1MzU5MDFkMGRkNmYwMTMwZjgxNTZiIHJlbGVhc2UyNC1tYWludAorMzgyNTEgMWFlYTgxNTUxYTIyMmY2YmZiMjI5ZmQ1ZGRmZDdiNjRjNTBlOTA0NiBhc3QtYnJhbmNoCiszODI1MiBiYTZlMTcyNzFjNjI4OTE2OTExMjE1ZGUwNzU3NjNlMWJjYzBmNzZjIGxlZ2FjeS10cnVuaworMzgyNTMgNGJkMTgwZDE3MWNjMDM0NDg1NzEwZWYzZTQ5Y2RkZDQxNTkzZTNmYiBsZWdhY3ktdHJ1bmsKKzM4MjU0IGEzMTY4MWE2Y2Y4ODcyODc4M2ZmMDA0OWI2MTk5MjAyZjNlZGViYzcgbGVnYWN5LXRydW5rCiszODI1NSAxOGNmZjNlZDc0ZDNkOTZkZjljZjA5NmFhYmE2YzlhMGUzYzdlOWYzIHJlbGVhc2UyNC1tYWludAorMzgyNTYgYTIxNjAwM2NlZjA0NDAyZDgwZTE1NWRhZjVhMzAwNzBkYjdmNGEyNiBsZWdhY3ktdHJ1bmsKKzM4MjU3IDM1MzNlM2NiN2I5N2E1N2U5MzIzOTVmZDRhNGM1NzE2MTAwMTg1ODQgbGVnYWN5LXRydW5rCiszODI1OCA5MWQ1NWEzMDM4MmNiYjA4MTQ3OWYyMzg2NDVlYmU0MDQ4Nzc4YmZhIGxlZ2FjeS10cnVuaworMzgyNTkgZjI1ZGNkN2YzZTQ4ODBjMDQ4N2IxODAwMjE1MmRkMjdmY2E1ZjhmOSByZWxlYXNlMjQtbWFpbnQKKzM4MjYwIDU5OGQxNmZhMDJjMTk5MTIxNDhjNGQzMmU3Zjk5NTcxMGRhNmE1OGEgbGVnYWN5LXRydW5rCiszODI2MSA3MzkxZTE4YjBhN2NkZGVmNjQ0NzQ5NmFiYzdlMzM1MWU1MGIwMTRjIGxlZ2FjeS10cnVuaworMzgyNjIgMjhmODQ5Mzg0NjhkZWExZTUzYzFhM2Y0MGIzM2JjODc5MjNmZjMzYyBsZWdhY3ktdHJ1bmsKKzM4MjYzIDBhMTYwOGE1ZWIwNWFlZTQ5YTQ4Mzk1NzA0M2E2MmY4YTIxNDA1MWMgbGVnYWN5LXRydW5rCiszODI2NCBlMmMxMDk3ZDdlOGZiMGJlNTE3ODMzZDM5ZWJjN2JjYWEwYjlmZGFhIGxlZ2FjeS10cnVuaworMzgyNjUgYjZlYzFiM2I5ZmNlNzljNzdkZjE3MjY3NTg1NmZlZTY2N2YwNGEyOCBsZWdhY3ktdHJ1bmsKKzM4MjY2IGI0ODBhYmFmMWY2ZjZlNmFiN2QyYTUzYTIxNzZjZmRhOTU2ZDVjODUgbGVnYWN5LXRydW5rCiszODI2NyA2YzAyYmIzZmNjYTY3OTA5ODA5ODJlMGYxZDA5ZDEzZTY1NWE5MGQ1IGxlZ2FjeS10cnVuaworMzgyNjggNzA1OWZiOGI5ZWIzOTM0ZTVlZjUxNzA2ZDdjY2FjMzVkMDA1YzM4OCBsZWdhY3ktdHJ1bmsKKzM4MjY5IGM0ZGI5OTJmODQwZjMwNGVkY2E2MGEyNzMyYzkyNDI5NGYzYTZmNGYgcmVsZWFzZTIzLW1haW50CiszODI3MCA0NWEzMjBmMzhjNDg5MDFmMzViYzRjZmUyMTM1NWZlNWU3ZGJjNDgyIGxlZ2FjeS10cnVuaworMzgyNzEgZDc5Njg2MjFkMjhkMmU3Y2QxOTVhZThjMTMyMmNlMTAzYTAzMzIyNCByZWxlYXNlMjQtbWFpbnQKKzM4MjcyIDhiYjQ2ZmRjZThmZDM4NDQxZWE3YzI0NTUyOGQ2NjJhOTU2NjM0ODkgbGVnYWN5LXRydW5rCiszODI3MyBhOTlmNWFkMjllYWM2NGEyYmYwNDdiYWJmOWRhNDVkMjg5ZmI2NDMwIHJlbGVhc2UyNC1tYWludAorMzgyNzQgOGVjYThkOTgwMjYwZGVkMjVhMmNjZTE4ODdiMWNlMzVjYmNlMThlNyBsZWdhY3ktdHJ1bmsKKzM4Mjc1IDEzYTg1ODA2YmE0OGM5NzkzMzEwYTcyODQ3ZmQzNGI4MTZjMzk0NzMgbGVnYWN5LXRydW5rCiszODI3NiBhODU5OWM3ODgyMThkODg4NTIyN2FlMzlmZjVjODljOWM5YzkzYjlkIGxlZ2FjeS10cnVuaworMzgyNzcgNDI4MmY4ODJiMjg1OTU2ZTNiZWFkN2IxMGIzYzRiZGJkNjg4NTE2YiBsZWdhY3ktdHJ1bmsKKzM4Mjc4IGI5Mzg0NWNlNDQ1NDk1ZTNiNDg1Y2I2YjM5YWVkNWYxODNiNzAxMTAgbGVnYWN5LXRydW5rCiszODI3OSBjODhhYjI5MmJmMDUyOGFhOTVhNjcxMmQwZjEyNTlhMDIxMjg1ZDQxIGxlZ2FjeS10cnVuaworMzgyODAgNzJmZDM3M2NkMGY5NWExYzJmNmVkNDVjNmExOTcwYTY5ZjIyMGZjZSBsZWdhY3ktdHJ1bmsKKzM4MjgxIDFkODY2YzAyYThjYWIyMDViYjFhNDAyYmE5NzcwYWU0NWVhNGE5NDMgbGVnYWN5LXRydW5rCiszODI4MiBhNzBkZDg3NjdiMDcxYjM0MjY2ZGRiYjA2MmU1YzYzMjJmNGY4ODhlIGxlZ2FjeS10cnVuaworMzgyODMgMDJmMzk4ZmJiMGYwNmQxN2M0NWIzYWIwNmU0MjhiYzhjMTU4ZTA3MyBsZWdhY3ktdHJ1bmsKKzM4Mjg0IGIzMmFlMGVlY2RlZTcxYWQwZmM0Yjc4NDllY2JlNzJmNDlkZmU3NDYgbGVnYWN5LXRydW5rCiszODI4NSA4ZjU3MzBhM2JjNGFiZjcyN2U5NDM3MzQ2Njk0NWQ2OTgyMDY2M2Q4IGxlZ2FjeS10cnVuaworMzgyODYgMzQ3MzkyYzhlYjhiMzZjNTNjYjVlZWEyMGIyMTEzNjZkYzMzNjMzMyBsZWdhY3ktdHJ1bmsKKzM4Mjg3IDhmYzAzMGM1YzcwYWJlMjkxOTEyNDU0NjRmYzg4ZTNhOWI5M2VlZDAgcmVsZWFzZTI0LW1haW50CiszODI4OCA1NjNjYmY0ZDZiZTQ2NTY1ZjQ1ZjA0MDViZWQ4M2UyMWQ3NWUwOTQ5IGxlZ2FjeS10cnVuaworMzgyODkgZmU3YTE1NDdmMmZhZWE0NDhmZWFiZTZlNTE2YzNiZTQ2NzNhZDExZSBsZWdhY3ktdHJ1bmsKKzM4MjkwIGZhNjVlMzQyNWE0YzVhZDZkMWEwZWQ2MDcxZDRlMWMwNTg5MDVhMjUgbGVnYWN5LXRydW5rCiszODI5MSA2NTJiODVkMzVhNzVkZGExMGUyZDMzMWE1NzZlOTNhMGY3MzcwN2VkIGxlZ2FjeS10cnVuaworMzgyOTIgMjY5YTJjMTRiYzU3MDg0ZDM2ZDgzY2JkMWNlYzk4MzJhYmZmZWQxMiBsZWdhY3ktdHJ1bmsKKzM4MjkzIDMzMTZhYTU0MGU2OGM4MDcyODQxOTFlZTk2MmZmMWI2MmQ0NDk3N2MgbGVnYWN5LXRydW5rCiszODI5NCAxMzkzNDM0M2E1M2I4MzI2MzI0MjcxNThiZTVhYzhhNDYwZGVjNWU4IGxlZ2FjeS10cnVuaworMzgyOTUgNTQ0OWI3ZjgwNmZiN2RmMmMyMmVmMzgwMWVlYzE1N2RhNDFmZTNhMSBsZWdhY3ktdHJ1bmsKKzM4Mjk2IDViZDJiM2U0ZmRjYzRmNTcxMzA5MjBjYmU1MDU1MzBjYmY2MjBlZTIgbGVnYWN5LXRydW5rCiszODI5NyA4NDM2YTI5NTU5MWI2OGNhODBhOTA0MWY2ZjY0ZDQ5ZmVhNWQ5YTZhIGxlZ2FjeS10cnVuaworMzgyOTggNGI4ZmE4YjBhZjkxNmVlNWQwNDJmMmFlMmFiN2ZiY2YzZmYwMWQ3MiBsZWdhY3ktdHJ1bmsKKzM4Mjk5IGRjMDljYzliMmVlNmM3OGQyODRkNTNlYTUzM2UwZTAxZjc5MjNhMGEgYXN0LWJyYW5jaAorMzgzMDAgNjg5YzIzMzg1ZTRmOWRkMTIzZDc5MmM3MTEzNzdiYTliNzBhZGEwOSBhc3QtYnJhbmNoCiszODMwMSA0YWYzYmZmZTU2MjAzYWVkMjJjY2UxNDU4Y2I0OGQxMjU4NzhiOThmIGxlZ2FjeS10cnVuaworMzgzMDIgNzI4ZWRlZmIxZTE3MzU2ZThmN2Q2MmJjMDdhNjViYzI2Y2RlNmI4YiBsZWdhY3ktdHJ1bmsKKzM4MzAzIGUxMzA1ODk0YmYwOTZhOGM5Yzk2ZWNhYjc5ODNlMDg0MjQzOTI1NTcgYXN0LWJyYW5jaAorMzgzMDQgNDkwMTdkOWVmNmM5ODZiNjg3MzhmNGYxZTgxYzZhYTg4YWYyMDIzZiBhc3QtYnJhbmNoCiszODMwNSA0Yjc0ZmYwNzk2NTJiZjVkYjAyOTFhOTdmN2YzMzE2MjIzOTg1ZjcwIGxlZ2FjeS10cnVuaworMzgzMDYgNjliNjhmOTFjYzc3NjY5MGNiNjMyM2I0OWU0MzAwYjgxMGNhMTQ1NiBsZWdhY3ktdHJ1bmsKKzM4MzA3IGY1NjQ2MzQ5NGJmZDk0ZWU1YTdkMDk3MDNlZDljMThlNjY5ZTUxNTMgcmVsZWFzZTI0LW1haW50CiszODMwOCAwMzk4MDdlMWU0ZDEyODJiOTcxZjkxOGZhNzExNGUyYWMxYTBiY2E1IHJlbGVhc2UyNC1tYWludAorMzgzMDkgZTFhN2ViODMyY2I1MWFiZjhiN2RmNTJiNWZmZjAyNzBmMGQ1MjIxYiByZWxlYXNlMjMtbWFpbnQKKzM4MzEwIDRhYTU1NGIwMGNiMGI1NTZkMDI4M2MxMzk4MDRiNTg3ODE4OGVjZDMgcmVsZWFzZTIzLW1haW50CiszODMxMSAyMjQ2YWI5MjJlYjQ4ZTQwMDAzN2FmMTg0N2IyOWIwM2ZkOWQyMzUxIHJlbGVhc2UyMy1tYWludAorMzgzMTIgOTU1ZGEwODBiMGNmMzY4MGNiOWQ5N2I2NzI2MTdkOTE1MjViM2VhMyByZWxlYXNlMjMtbWFpbnQKKzM4MzEzIDdkOTk5ODFiMmVjZTMyZWQ3YTg3MjBjY2M2OWQ5MGNkYTg3MWY0NzMgcmVsZWFzZTIzLW1haW50CiszODMxNCA2ZmRiYzRlODMzZTIwZmY5NDY3MjY5NmZjZjgzZjBlYTM0YmY2YTVjIHJlbGVhc2UyMy1tYWludAorMzgzMTUgNzc1YTcyYjlkNTJjZGM3NjhhMjllODUxMWFmZTliYjk5YTJmNmM3MCBsZWdhY3ktdHJ1bmsKKzM4MzE2IGVkNGRjMDVlYTRiOGMxMjZhYTcwN2FiMGUzNjkxOTg4OGI3Y2I2NTkgbGVnYWN5LXRydW5rCiszODMxNyAxOGY2Y2ViZTQ3YWFhZTczNTk5ZDJlM2VjYTljNDYxZWIzYWFiMDFhIGxlZ2FjeS10cnVuaworMzgzMTggNjgzNzE5ZTA0MjE4MTgyYjAyZWQ2YTNjZDg0MGE3N2M3MGI1YzUzZiBsZWdhY3ktdHJ1bmsKKzM4MzE5IGNkNmI1NGJhMjcyZmI0Nzc0YmY3ZDlkYzRiOTRmNzBmYmIxOTM3ZDYgbGVnYWN5LXRydW5rCiszODMyMCBkOTNiNjhhOTlmOTZlMzgxNTY0MmZlMzY0MTNiZWZlZTQyZDhmOTY3IHJlbGVhc2UyMy1tYWludAorMzgzMjEgNmNmMzk5YWFmYzY2OGU0NDI2M2MwYzExYzI3Yjg0MTZmMzk4N2RiMSBsZWdhY3ktdHJ1bmsKKzM4MzIyIDIxZGQ3MzNlYjExOGMzYmFmZTc5Zjg3OGNmNjBjYzdjNzdkZjRjMzEgcmVsZWFzZTI0LW1haW50CiszODMyMyA4YzBlM2MwYTIzM2NhYzNhYzQ3ZjBhNTczYWI0ZjFjZThkMTY4OWIwIHJlbGVhc2UyMy1tYWludAorMzgzMjQgYTA2M2YwZDZkYjI4MGU0ZTQ1ZmRiOWE0OGM2NjYzNDIxNDUyMDk5NiBsZWdhY3ktdHJ1bmsKKzM4MzI1IGFmNjMwZWIyNmQ1OWI3ZjFjZDk0OGNmYjYxZGU4MThkMmQ1YzJkMWUgcmVsZWFzZTI0LW1haW50CiszODMyNiAyOTMxZjY1MDRhZjVjM2Q2MGFlMmJlYTZiY2MwYzVjNmUyMTJkZWRiIHJlbGVhc2UyMy1tYWludAorMzgzMjcgMmVlZTkwZWYzMmFiYzcyNzVhN2Q2Njg1OGE2N2ZmMjQ3ZTJjOGM1OSByZWxlYXNlMjMtbWFpbnQKKzM4MzI4IGFkMTI2MDU0YWRlNTc1MDBjOWU0Nzk5ODNmNjZmMDFkZTAzN2QzYmUgcmVsZWFzZTI0LW1haW50CiszODMyOSA2NzBkZTMwMWI4ODdmMTAxYmFmOTQ1ZTIzODQyZDIyOWZhNjBkZDFmIGxlZ2FjeS10cnVuaworMzgzMzAgNTk1MjNlYjM1YzFkNzEyNmMwMTdmMWQyNDQ4ZmM0ZDkyM2NjY2UzNyBsZWdhY3ktdHJ1bmsKKzM4MzMxIGEwOTNhZWJmMWI0MGU3ZDExNmM3ZGYzNDg2ZWI3YzczMWUzZjZiYzQgcmVsZWFzZTI0LW1haW50CiszODMzMiA2NjA1ZTEyYmMxNmQ3MTNlMzc5MjYwMjMxMGRkOTQxNDFlMTQyOTI0IHJlbGVhc2UyMy1tYWludAorMzgzMzMgNTFhMGYwYWQ0NmFjMGQ5YzMxN2M1ZjgyOWFlYTVlZWU3ODQ3ZWRhNCBsZWdhY3ktdHJ1bmsKKzM4MzM0IDcwYTA0NDk3NTVlMjYxZGI4M2JmY2JiODk1YmQ3ZDhhZjRjNDY5YWYgcmVsZWFzZTIzLW1haW50CiszODMzNSAxZjVjMjM1MTYwNWExNTdkY2UxYzliODcyMDJiNjRmOTYyMjQyZTZkIGFzdC1icmFuY2gKKzM4MzM2IDMyOThhZTZmMzY2NTg3YzA1NzhlMzE4NTE5YzQxNGY5NTEyMTRlNzggYXN0LWJyYW5jaAorMzgzMzcgOGI2NTQ4ZjVmMjc5ZGQ5NGEwZDhlYWE2MzU1YTEyNTk0ZTk3ODZhMiByZWxlYXNlMjMtbWFpbnQKKzM4MzM4IGNjM2JkNGU0ZDlmMGE1NjMxNTNlMWI0Y2JhNDc3OWU3MDE0NTMwZTcgcmVsZWFzZTI0LW1haW50CiszODMzOSAwMTMzYjAyMjYyNmViMmNiNDVmZTY3YjZiYWVlNTdiMDIxMTJjMDljIHJlbGVhc2UyNC1tYWludAorMzgzNDAgZDVkZGQwNmQ1NWZjOWRhM2YxZjRhMDQ4N2ZjMDJmM2FkZTVmOWY0MiByZWxlYXNlMjMtbWFpbnQKKzM4MzQxIDlkNzYzOTM3YTI1YjRiNDhhZjQ4MDBjMjZjYWRiNGEyOWIwZDhhYWMgcmVsZWFzZTI0LW1haW50CiszODM0MiBmZjUzZDE0NzE3YzUyODEzNWE0NTQ0NDY3ZWQ1NDNmZGY5YTlkZjM5IHJlbGVhc2UyMy1tYWludAorMzgzNDMgN2RmMDc3ZjQ3MDU2OTBkMjVjZDdhNTdkZDE4ZjkwODY4Yzg4ZGQwNSBsZWdhY3ktdHJ1bmsKKzM4MzQ0IGQ1Y2U4OGViZGJiZDBkNzUwMTk4YzQ0N2RkMDBjYzVjYmFmZWJlZTkgcmVsZWFzZTIzLW1haW50CiszODM0NSA4M2M5NzViNGEyYzM3MjJhMDZkMmI1OTMzOTgyMmU2YzgzNTMwZTUwIHJlbGVhc2UyNC1tYWludAorMzgzNDYgYzQ0MTMzMDdhMmYzMTBiY2I3Njc1ZTI2YTU3MjE5MmIxYWIzYTFlYyBsZWdhY3ktdHJ1bmsKKzM4MzQ3IGY3MzhkNjRjODI3ZDMwODcxODA2ZmI3MDQ2MjMzNDBmYWQ5YjM2NTYgcmVsZWFzZTI0LW1haW50CiszODM0OCA2M2ZjZDY3ZTMzMjlhYjNjMTIwNmUzZDFjMDJkMzg1MmVhMjY0NTIyIHJlbGVhc2UyNC1tYWludAorMzgzNDkgMmIyNThmMGNiYzMxY2I5NWQxZjEyY2FiMDkxODc0NDFiZGU4YzRjZCBsZWdhY3ktdHJ1bmsKKzM4MzUwIDBmNDFmZTNmYWRmNDVlMWY4OWNiNGIwMmEwZDc3NjE0OGMwOGYxODkgcmVsZWFzZTI0LW1haW50CiszODM1MSBmMjQ2ZTQ0ODU2MzdhOTRlNDQxMDgwZTY1YjU5NWRkNzk3MGMyODZiIHJlbGVhc2UyMy1tYWludAorMzgzNTIgN2Y1MjQxN2U1MzBiMzRkYjI5MDY5YmMyOGEyNTRlOWNiMWQzMzIyOCBsZWdhY3ktdHJ1bmsKKzM4MzUzIDIzNjlkZmUyZGFkNDY5ZWE1YzlkMGYyODk3MjkxOWEzZGEzYzBkMzEgcmVsZWFzZTI0LW1haW50CiszODM1NCA5NzI0MTc0MjYyMjQ3YTNhYWU3MDcwZGQ1ZGQ0MTY5ZjIxYjZhY2JjIHJlbGVhc2UyMy1tYWludAorMzgzNTUgYjc0NTU5NWQ0MWQxZjE2MzQxODAwZGJkMGVjNDNmYmQ2NDQ5OGIxNSByZWxlYXNlMjQtbWFpbnQKKzM4MzU2IGUzZDc0ODMwZWQyZmE3ZDVmM2JjNjJjOTc5MDgyODEzNzhkMDI1NGEgcmVsZWFzZTIzLW1haW50CiszODM1NyBiOWJjNDliNTNmNGQ2MjVkNWM5NDNlNjZjMWY5NTcyYWRlZDM2ZDQ0IGxlZ2FjeS10cnVuaworMzgzNTggMzZhYmRkNDc4ZTA3NDFmMjQwYjQ5OWQ2NzkyMjk4YjMyYzc2OTk2NyBsZWdhY3ktdHJ1bmsKKzM4MzU5IDljNjJlN2Q2OTBhNTJhYTk4NWQwYmJiNmY3ODg3NjFkNGY5NWVhODIgbGVnYWN5LXRydW5rCiszODM2MCBlODUyY2Y2YWI1YjU1MjE3YTk4NTI5NWYwNmM4YWIzOTAzMGU2NjIyIGxlZ2FjeS10cnVuaworMzgzNjEgNGExZmVmZGZjNzkzMDQ2MzMzMWY4M2VmNzg2NTg0ZDMyZmFjMTdiOCByZWxlYXNlMjQtbWFpbnQKKzM4MzYyIDhjOWUzZWQ1OTRmZWQyYzg2NjE5YzI5YWVmNTQ5ZTBhYzM5ODE1YTcgcmVsZWFzZTIzLW1haW50CiszODM2MyBiYjA2NTRjZjVlNTIwNWUzNzM4ZGYzZGNlY2Q2NjFjOTEzYmRjZDQ3IGxlZ2FjeS10cnVuaworMzgzNjQgNGQyOWViM2EzZGRiZjJjMzNhMGUzY2M0MTY2YWQ4NzVmMmVlNmVjNiBsZWdhY3ktdHJ1bmsKKzM4MzY1IDQxZjI5ZTI2ZjY4ZjQ0ODA4ZDM3ZTYyYjJjMTU1NDNhY2JjYTQ4NGEgbGVnYWN5LXRydW5rCiszODM2NiA0MjA5ZWMxNzA2YWJhMTc1N2M0MWFmYzIzYjcxYTg2OTZjZDE2N2RiIGxlZ2FjeS10cnVuaworMzgzNjcgYTcyZWU2M2M2Yzg0OTAyMTZjOTcyY2NlYWNlYTI4OTUzNGM5OTViNSBhc3QtYnJhbmNoCiszODM2OCBmYzU4MGZmMDBmNmY1NzBjOWRjMWU3MGZiN2I3YmFjYmZiNTlmNzM5IGFzdC1icmFuY2gKKzM4MzY5IDZiMWM3YjE4ZjU5ZDg3YjU4MWNiMjM3NDdlZmNiNDVjYThjZjFkMzAgcmVsZWFzZTIzLW1haW50CiszODM3MCA2ZTcwMzNjNzRjNzBiN2MwOGU5ZGM0NmUzMWU1ZjhmZDk1YzA2NDg0IGxlZ2FjeS10cnVuaworMzgzNzEgNjgwMjBiZDFiOWUyZTJlYzkzMTRmM2I3ZDc5NTJkNzQ5ZTM4ZTRjMSByZWxlYXNlMjQtbWFpbnQKKzM4MzcyIDZiNmU2Yjk4MmFjODU3YmY3NWJhN2FjYzA0Njg0MzVjMGZlYWY5NWIgcmVsZWFzZTIzLW1haW50CiszODM3MyAwOGUzY2E4ZmIwNzFmNTlhN2MwMmM3MTBlOTdmMTk2OGVlNThlOTFlIGxlZ2FjeS10cnVuaworMzgzNzQgNGRhNDYyNThiZmY4Y2VjOTYxZjE2NmMyNjdlNjJkYjc2YzI2ZDBjNyByZWxlYXNlMjQtbWFpbnQKKzM4Mzc1IGM5MzM3YzlkMmYyYTk0NjYxZDFlMGFjMDgyZDdhN2VlMmMzYjBkNTkgcmVsZWFzZTIzLW1haW50CiszODM3NiA4ZjYwOWVhYWMzZjAwMmEzMGMwNWZkZDE0MGE0NDRlNDJkN2E5OGIxIHJlbGVhc2UyMy1tYWludAorMzgzNzcgNTE2Y2EwYjkyOTcxYjcwMzllZGI1ZjYwNDIzMzNlMmI4MDVmZGJjYiByZWxlYXNlMjMtbWFpbnQKKzM4Mzc4IGFiYjNjMWFkMDBhN2JiNTFjM2NlZjU1NTc0M2UwN2Y3ZmI4YjA2MTggcmVsZWFzZTIzLW1haW50CiszODM3OSBhZTczMjg2ODk3YTM0YTM5ZTAxYTlmMTYzMzI4ZTIyNzJmYThmOTI5IHJlbGVhc2UyMy1tYWludAorMzgzODAgYzE2NDFlZWRhN2M5Mjg1NTA3MjY5YWNiZmViMWNhNDY4ZWQ3ZjFmNyByZWxlYXNlMjMtbWFpbnQKKzM4MzgxIDQ0MGMyNWJkOTlkZjg1YzQ5NGE5NjFjZTRiYWRmMmE2MDgzZjQ2MWIgcmVsZWFzZTIzLW1haW50CiszODM4MiA4NzIyNGYyYzVlMTAwMDJkYTRkMGRiZDQzYmQ2NDkyMWZlN2NhODI4IHJlbGVhc2UyMy1tYWludAorMzgzODMgYzRmNzZlZDJlYWZhM2Y3YTViN2RmZDhiMjkyYTNiZjk3MTc4ZTk2MCByZWxlYXNlMjMtbWFpbnQKKzM4Mzg0IGU5NDlkNDYzNTcyY2U2NjExYzMxNzM0NDYzNjNlOGY2NmRjYjRlOGEgcmVsZWFzZTIzLW1haW50CiszODM4NCAyNjM5YjEwZGFhOTg1YjIwYjNjYWJlYzQ1MTY5ZDUyM2NhYzI5ZDY4IHJlbGVhc2UyMy1tYWludAorMzgzODYgYmRhOTMzODczNzU4ZTU0ZTNjZDY4OTM3NDI1MWFkM2YzMWQ4NWJhMSBsZWdhY3ktdHJ1bmsKKzM4Mzg3IDE4YmEwODVjYzhiYmJmNWZlYWQzYjhjNTZkNWE2YmExMzI4YTQxMDQgbGVnYWN5LXRydW5rCiszODM4OCAxMzE3NmVkNTJlNjVjNDg0ZGJjZjRmODFmYjhlNzg0NWYzYTMxZmZlIHJlbGVhc2UyNC1tYWludAorMzgzODkgNmYyZGQwODFmZTA1MTI2NjgyMDYxMDJiZmRiZDgyMDFiM2I0ZjIxZCByZWxlYXNlMjMtbWFpbnQKKzM4MzkwIDFjMzQ5MDYwYWMwOGYzNzBiYTZjMjE0YzIzNTA3MTk0ZWRiZjA0ZmIgbGVnYWN5LXRydW5rCiszODM5MSA5MTAzODgwMWViNDVmYzMyYmFiYzg0MzRiMGE0ZjM3NTNhN2JjYWIzIHJlbGVhc2UyNC1tYWludAorMzgzOTIgY2I3ODk2ZDc3ZGU1MjJmMjRiOTFjNzA1YmVkZmU4MjBiY2UzMGM0YSBsZWdhY3ktdHJ1bmsKKzM4MzkzIDkyNWQ1NGRmOTJiZTk1MGJkNWVkYjdlNjdiNWI1Njk0NDUxZjAyY2MgcmVsZWFzZTI0LW1haW50CiszODM5NCA1NDgxMzRiYTI3OWZlYzI5NDAzZWM3ODRmZjZhMjcyN2VlMmY5NTViIHJlbGVhc2UyMy1tYWludAorMzgzOTUgZTMwNzRlOTRmYjc1NWUwZDEwYWZmZWMzMjUyYTMzYTVmYWIzNjYwZSBsZWdhY3ktdHJ1bmsKKzM4Mzk2IDY1ODUxMjc3NDQ2ODE1MTUxMjFiYjIxZmIzYTNhYmJlNWMxMzE5ZDggbGVnYWN5LXRydW5rCiszODM5NyA5YjRlMzE4ZDZjNzI2NzRlZGJhOWUxNzZkOTU5ZjIzZjFjMWY1Y2QyIHJlbGVhc2UyNC1tYWludAorMzgzOTggNmM5MGNiNzY2ZTZiYTQwZTIzZWQyNGEzY2E5M2E5ZmJkODVjNjE5MCBsZWdhY3ktdHJ1bmsKKzM4Mzk5IDg4YzI5ZTUxYjAyOWExOGMyOTJkMjg0ODhlY2I2YmI3ZmFhNmQ2YmIgcmVsZWFzZTI0LW1haW50CiszODQwMCA1ZmQ1MDY1MTYzNjE0ZGRmYjJiMjBkNWIzNmM4MTNhYWU1ZjVhZTA2IGxlZ2FjeS10cnVuaworMzg0MDEgODA0YzU2NzM2NDNlNmVmNTAzOGVlZjJjMjk3N2Y2OGYwNTQyNGQ5ZiBsZWdhY3ktdHJ1bmsKKzM4NDAyIGE0MjI1Y2RjMjA0N2ZkMGQ2MmE3OGJjNzIyZmViZDgyYTE5ZWU0ZmMgbGVnYWN5LXRydW5rCiszODQwMyBmNDMwNzE4ZjhiNDMwZTU1NTE5NTA1MmUzNjFjZWNjZmI1NTZhMDA1IGxlZ2FjeS10cnVuaworMzg0MDQgZjAxMzQyMzJiZDg0ZGIzMzI4N2IxY2RhZGI3ZGUyYzJiZTBiNmVkNCBsZWdhY3ktdHJ1bmsKKzM4NDA1IDBiZTE3MjU5YWFjODg2YzVjNWQ0YjgzNzI4ZDNmMGUxZDE0ZDQ4MmUgcmVsZWFzZTIyLW1haW50CiszODQwNiA3Mzc2NDlhNmM5MzVjOWYwYjA4ZjU2Y2M5MWIxYjA1M2RhMjAzOTlkIHJlbGVhc2UyMy1tYWludAorMzg0MDcgYjg0NmRkMWI5NzUxMGFlOTIzYmFmZjhjMDg2NzFjNDAzYzVkNmFjYyByZWxlYXNlMjQtbWFpbnQKKzM4NDA4IDFjMDcyNjE1ZTViODZlMzZkZmM5NDRiYTc0MzEwY2MwOThlZTA4NjMgbGVnYWN5LXRydW5rCiszODQwOSBjZDc0MzIxZWNkYzQ3YTcxMzE1OGI2NWVmYmQwYzI4MGQzOWJjYjQ4IHJlbGVhc2UyMy1tYWludAorMzg0MTAgNjllZDdlOTEyYjNkMjk3MDE2MWU4NzM4NTdiMGU5YjQ1ZGU2YjRlYyByZWxlYXNlMjQtbWFpbnQKKzM4NDExIGNjZjYyNzJlZWRmNDg0YzU3NDk2OGExNjIyMDY4ZDFkYjVkZGQ5MjggbGVnYWN5LXRydW5rCiszODQxMiAxYjc4ZmMyOTZmYzg5NTg4OWE5ZGYyYjE3ZTE4ZDdmZDZmNzk5OTU1IHJlbGVhc2UyNC1tYWludAorMzg0MTMgYzY4YmU4NjU5MDc1YmJjOTliYTg4NWU3NTdmNjFmNzFlOTY3Zjc5NSBsZWdhY3ktdHJ1bmsKKzM4NDE0IDNkMDBiNjQyNTUwNTdlY2M5OTU3MDhhMDAzNDRmNzE4Y2JkMzZlZjQgbGVnYWN5LXRydW5rCiszODQxNSAzZDk5YWRlZmJmM2MwNTBkNTY1MThjYTkxNGJiZTZmNzBlMmU0N2M0IHJlbGVhc2UyNC1tYWludAorMzg0MTYgMzIwYzc2NDNmOGU5ZWY5OTM0YzQwNjhiZTNiMTNlNDVlMTg1MzFmZSByZWxlYXNlMjQtbWFpbnQKKzM4NDE3IDQxNzRmOTc4ZTU2NDczMmQ0ZWE3ZTlhNmI4MDk1MGRjOWJlYzBmNDQgbGVnYWN5LXRydW5rCiszODQxOCAzN2IyZjExYzFhMDA1ZjcxZGNlOTI1N2M3NTZlYTYzZjJmMTY2Mzg5IGxlZ2FjeS10cnVuaworMzg0MTkgODI1OWZmM2VlNDkzNjEyN2ExMDdjN2E0NTQ2MWEyMmQzNDQxMzEzZSBsZWdhY3ktdHJ1bmsKKzM4NDIwIGNhOTE3OTljZWNiYTAxMzRiYzM5ZjhkMjUzNDI4OTNhMmNiZTk1NmUgbGVnYWN5LXRydW5rCiszODQyMSA5ZWU5OWEzNTU2OGQwMWZhOGJhZjYyYTNmMGUyZDY4ZjA1MDI0NjZlIGxlZ2FjeS10cnVuaworMzg0MjIgNDY1NzI0NDI1MzcwMDllMzc4MzRmMTUxYTg0NzUzZTBlNjFlM2E4OSByZWxlYXNlMjQtbWFpbnQKKzM4NDIzIDdlNTEwM2I0YjI4OWQ3YWJhODliMmVmZTk1NTUxYmYwMjMyMzQ1YmYgbGVnYWN5LXRydW5rCiszODQyNCBmMjQxMTdhMzYyOGFhZGU2MDNiMDE4YzZiNjE1MzBlNDc2NmEwZmIyIGxlZ2FjeS10cnVuaworMzg0MjUgOWQ2NmZiYTc4NDQ0ZjFiMjE3ZjY2NDEyNWRkMTA3NDAzM2IxMTQwNyBsZWdhY3ktdHJ1bmsKKzM4NDI2IDdjOGYzMzc4ZjZmNjFhZWU5YTc0YTc0NTFlMTZhNWUzYTczNWFlMWQgcmVsZWFzZTIzLW1haW50CiszODQyNyA4MzViNjQ1YTE2OGY3NGMwMWE2NTg3ODc2MTJjYjI0MDhmNmZkMmY1IGxlZ2FjeS10cnVuaworMzg0MjggMWMyOTQzZjk1NDY4NjM5NjAzYmEwYWZmMzJjM2UyYjY3MWQ0YjM4MCByZWxlYXNlMjMtbWFpbnQKKzM4NDI5IDYzMTRlOTRkMGQzNWQ5N2JhMmRiODNhNTczMzMyYTM2Njc2YjUyZDEgcmVsZWFzZTIzLW1haW50CiszODQzMCA2ODU4YzI0ODQwMTA4MjEzMTAyYjBhZWI2MGI5MDk5OTQ4NzQzMWM0IHJlbGVhc2UyNC1tYWludAorMzg0MzEgMDI4ZjkyZTQ0YjQ4MTQ3ZmJmMzQ1NzY0OTcxNjBmYzdmY2E5ZmZjMSBsZWdhY3ktdHJ1bmsKKzM4NDMyIGEyNGU3MGY0Njg0YjFkMGJmNjliOTAxMjVlODljMjU1ZmY3YTVjMmIgbGVnYWN5LXRydW5rCiszODQzMyBjZDA0ZjJkMThhNmZjY2Y5MTgyNDBmODgwYmEzMDU4Yzg4Y2Y2OTBhIGxlZ2FjeS10cnVuaworMzg0MzQgYzg3OGJkMDFiODFhMTYzNDdmNjZhNjBjNjQ5ZDcwOWQ0M2IxNTBlZCBsZWdhY3ktdHJ1bmsKKzM4NDM1IDkzZjI2NjVlYWQ1ZTJkY2RlYzFhMDY5ZGI3YjE1ODVjZWUzZTViNmIgcmVsZWFzZTIzLW1haW50CiszODQzNiA2YTI0NDBkMDVmNTBjMzI3MmU2NzNmODIwNzY0ZjVjZDJiMWU2N2FjIHJlbGVhc2UyMy1tYWludAorMzg0MzcgM2MxNDRhM2M5MTFhN2JlMWJiNDlhMzQyOGRmYWMxZjAzYzA2NmI3MyByZWxlYXNlMjMtbWFpbnQKKzM4NDM4IGU2MWFhODYyMTViY2E3OTc4M2ZjMTIxZTk4MjExYjllY2QxMzhiNGMgcmVsZWFzZTIzLW1haW50CiszODQzOSBiYjdmMzZhYzlmM2E4Nzg4OTcxZTZlMmU2MGY4M2VkYmU5NzNiMjRhIHJlbGVhc2UyNC1tYWludAorMzg0NDAgMjllNmJkNzA4ZmU3NWQzNjQwZjJhMzY0ZTNkMTdkNDI4OTliNGJkZSBsZWdhY3ktdHJ1bmsKKzM4NDQxIDQwNDBhYTIxNmI4YWIxNmZjMDljYzQ4ZDBmNmMzM2FkYzdhN2Q3OTQgbGVnYWN5LXRydW5rCiszODQ0MiA3YTEyNzdmYWQwNGU5MjY1N2ZjOTc4Mzg0OWUyMGIzYjU2MDAwODhhIGxlZ2FjeS10cnVuaworMzg0NDMgZjc3OTY2ZGE2ZGU1ZGJjMmM4MDE3ZmM3ODdiYjg1MzYwN2U5ZjVlMyByZWxlYXNlMjMtbWFpbnQKKzM4NDQ0IDg5MWMzMWRhZGE0ZWI5MjUxMWJiZmYxZmVjNzc4MGUzZjMxZTI3YjcgcmVsZWFzZTIzLW1haW50CiszODQ0NSA3MDViN2ZiOTAwNTZjYWVmYzZiNGRlNmEwMjI2MTE4ZGJjZjMwNTlmIHJlbGVhc2UyMy1tYWludAorMzg0NDYgMzdiNmRkMzg4NTZkZGUzODg0MjE4OWVhM2M1ZjkwMmU5N2Y0NjNhNSByZWxlYXNlMjMtbWFpbnQKKzM4NDQ2IGQyMjg1MDk0MjQxNzJmOTc3ZWRhZDRmNzg2MGE5Yzc0N2NkNjU1YzggcmVsZWFzZTIzLW1haW50CiszODQ0OCBmZjNjYTY1NmMyODFkZWJmZDM2MGYzN2QwMjAyZjUzZDEzMWM0Yzg4IHJlbGVhc2UyNC1tYWludAorMzg0NDkgODliOGNjZjE0YzBjMDE1ZWU5YzY3OTczNDQ2ZDU4NjFiOWFkODBjMyBsZWdhY3ktdHJ1bmsKKzM4NDUwIDljNjZhYjU0YzFlY2ZmOWViZGVlNjAxNTczYjUzMWU3M2YzZjlmOWYgbGVnYWN5LXRydW5rCiszODQ1MSBlNjdiNTg3ZmVkNzc5YzIxMTMzOGYxODU5ZjJlMDM5ODIxZjJjOWFmIGxlZ2FjeS10cnVuaworMzg0NTIgM2MxNzJjODI2ZWVkMzY0ZDNjOWYyYzk4MjQ4N2FhNGQwYzkxNmY3ZSBsZWdhY3ktdHJ1bmsKKzM4NDUzIDE5MzI3ZGI3NWQxYzkyZTM2YzM2MWJkMTE5MmIxZWY1NDU3NTk5YWYgcmVsZWFzZTI0LW1haW50CiszODQ1NCAzNjllOGU3MWVhMzM5MTY3OGFhZGMwODRlMjY4OGExNDRmZGJjZGY2IGxlZ2FjeS10cnVuaworMzg0NTUgNDU0NWExNTRmYWMxNTgzYmU0MWJjNzk4ODgyYmMwZTJiYjYxMTJmNCBsZWdhY3ktdHJ1bmsKKzM4NDU2IDNmZGZiY2I0MDEzMGNlM2E1NDNkNWU5N2NjMDllNDYwNzAxYTQ5YTAgbGVnYWN5LXRydW5rCiszODQ1NyA3N2ZhMzBlN2YxMmIwNmQzNmM2OGUwZWMzNTA4ODU3YzY2MzM5OTdjIHJlbGVhc2UyNC1tYWludAorMzg0NTggNjA3YzQ4YjVlZmQ3MjYxNTUwYWJkMjE5ZjkxZWE5YjZiNzIwZjRmNCBsZWdhY3ktdHJ1bmsKKzM4NDU5IDVjMjYwODUwNDk2N2EyYTE3ODRjM2M2ZDE0MzNlYmNjOGRkMzU0MDMgbGVnYWN5LXRydW5rCiszODQ2MCBjYTdjMThlZjhiZGMxMDJjYjY0ODQ1MjU4YzE2MzBmMGZiZjcyNmI1IGxlZ2FjeS10cnVuaworMzg0NjEgY2I0N2Q2MjJhYTFlMmZjMTE5ZmNhZGNiNDlkYjMxOTJlYTIzYWM4ZCByZWxlYXNlMjQtbWFpbnQKKzM4NDYyIDBhNmU3NzlkMzQ3ZDZmMTc1ZTI5ZGNjYzA3Y2M2MTA3MWZkMGM5ODUgbGVnYWN5LXRydW5rCiszODQ2MyA4NmFiM2E3NWZmMDg2Yjk2ZTRkN2ZhYjFjY2EyNmM2MTUwYTRiYzc0IHJlbGVhc2UyNC1tYWludAorMzg0NjQgYjk0ZjIyNDczODhlOTJiZDBlOWExNzM3ZWUwMDBjYWZjNDdlMTMzNSBsZWdhY3ktdHJ1bmsKKzM4NDY1IDlmMTgzYTI1OGJlZDBlZTlmNjJiM2E0MDUzZjI2MDgyYjc3NDQ2ZDggbGVnYWN5LXRydW5rCiszODQ2NiA3ZTdlODZmNDUyNTVhOTU5NDgyMGZhZGU2YmY3OWRkNGZlZDRmNzk3IHJlbGVhc2UyNC1tYWludAorMzg0NjcgZTllYzJjZTM0MGZkYzQ0MjBkMzYxZjUzODJlYmJmYzE1MTA5M2JkNyBsZWdhY3ktdHJ1bmsKKzM4NDY4IDcwY2IwYzNmZTRhNzQ3NWUyZjllOTcyNGU0Y2IzNDlhZmVjZGRhMGQgbGVnYWN5LXRydW5rCiszODQ2OSBhODk5ZDY5MGYyNjQwNzRmZWI1YTBiZTNlNGVmMjBlN2QyYmRhNTAwIGxlZ2FjeS10cnVuaworMzg0NzAgZmYzZGVmNzdiMTI5NWYzMzI2OThjNmEyMzgxYTBiYjE5YWZjYzYxMSBsZWdhY3ktdHJ1bmsKKzM4NDcxIDFhZTJjM2I2NmU1N2EzNDYzN2Y5ZTQ4M2FlYjc0MTI2YjZmNzJhMDMgbGVnYWN5LXRydW5rCiszODQ3MiBmYTUyZjFmZmMxNjExNTU3NTA2OTMxMDg5NWMwZDI1ZGY5Yzg2YzZmIGxlZ2FjeS10cnVuaworMzg0NzMgMzc2YTcxZjg5NzliYTFkNTYzYzhkOWFjODU2MWJmYTAzMjE2YjdlNCBsZWdhY3ktdHJ1bmsKKzM4NDc0IDMyYjg5NjA2ZjBjZGExN2FlNjRlY2NhNjQ1ZTFlM2IxNDdmNzY0ZmUgcmVsZWFzZTI0LW1haW50CiszODQ3NSA3ZjdjM2RmYmE5ODU2MjBjNmM0OTAwMTc3ZTEyOWQ0NzJhZTM5MDA4IHJlbGVhc2UyNC1tYWludAorMzg0NzYgMWE5ODk4M2U1OTYzMGRjYzBhZWU4MDM5MGNjYzMxNjk0ZTFhYzlmMiBsZWdhY3ktdHJ1bmsKKzM4NDc3IDdmYmE1Y2NjOTYxZTE0YWQ4ZjEzYjMwZWFlNzU2OTI1MmJjZjQ2YjAgbGVnYWN5LXRydW5rCiszODQ3OCA2NzkzN2EzODUyZmU0NDgyZWQzNmM5Y2VjMDg5YzJmODczZDljZGMwIHJlbGVhc2UyNC1tYWludAorMzg0NzkgNWU3YWRlZDMyNTFlZDJiZWQ5YWY1ZGYzZWZlMzU2NDNiMzEyNjYzOSBsZWdhY3ktdHJ1bmsKKzM4NDgwIGQ4MDRhNTBhMjBhYjUyNzllNzA4ZWNjMjhmMjJlNjIwYjA4NjA5NTcgbGVnYWN5LXRydW5rCiszODQ4MSA4MDk4YzdjMjcwOTcxZTJkMmEzMjBiNWJiNjk5MGU5ZjA1ZmY5ODBjIHJlbGVhc2UyNC1tYWludAorMzg0ODIgMjRhMzMzNzQxY2VjOTlhMDljOWU4ZTY3NDU3MmM2ODBlNTFiOGM1NiByZWxlYXNlMjQtbWFpbnQKKzM4NDgzIDdkYWUxYTgxY2VkODM4MDVmMjg2OGRmYjY0N2ZmZmQxZGUzMThmMGYgbGVnYWN5LXRydW5rCiszODQ4NCA3NzcwM2VkNTQzYTEwZjJkMWFhYTJjYjg4Mzg5NWJjYjAzMWVjYWRlIGxlZ2FjeS10cnVuaworMzg0ODUgZDQzOWM3NDhiNDU0NTFjZGI0NzYyNzM4YWQ5MGFkZjc5YTI3YmQzYyByZWxlYXNlMjQtbWFpbnQKKzM4NDg2IDhiNGRkMmMxYzJhMDYzZjAzYjcwMGE3NDg4ZTRmOTdmZDA3OWZlOTAgbGVnYWN5LXRydW5rCiszODQ4NyA0YjEyMDdjYjAxZWE2NmZjYzcyNGZiNjU3Y2U2Y2Y1YjAzMzZiNmQ0IGxlZ2FjeS10cnVuaworMzg0ODggODEzMDMwZTRkN2IwYTFkYWNkZTQyMWE0NjM5ZTZiMmRkOGNkZjZiNSByZWxlYXNlMjQtbWFpbnQKKzM4NDg5IGM2MGZkZThiMDEwNmIwOTg5MmM1NDQyNGRiNmVhZmZjMzdhMWI3ZDkgbGVnYWN5LXRydW5rCiszODQ5MCA3YzU3MzI2NTJhMjNjYmQ3MWU5YmY2ZGNhOGI1Y2U1NzMwMDlkM2VhIGxlZ2FjeS10cnVuaworMzg0OTEgNjE4Y2YyNGMzMjlmOTlmZDViMDE3YmIzYjA3Y2EzMWFiYjNjOWE4NyBsZWdhY3ktdHJ1bmsKKzM4NDkyIDA3Y2YxYTE2NDBkYTQxMjM0OWRmNDcwNzdjOGIxMjUzYmMyMzEzZTkgbGVnYWN5LXRydW5rCiszODQ5MyBhNGQxMzk3NGY2ZWI3YzRkZjkwMTA0MTAyMDI1YjRlM2I0MGRiZWE3IGxlZ2FjeS10cnVuaworMzg0OTQgYWM2ZGZjNjdjNzdmZjZkMWQ4YWNhNjFjMTM5ZjZhYmM2ZjE4ZDk0MCBsZWdhY3ktdHJ1bmsKKzM4NDk1IGEzNmM1ZmQzMGUyMTI3YWUxMmRkNTM5ZjY2OTQ3ODdlOTNhMWYwZTEgcmVsZWFzZTI0LW1haW50CiszODQ5NiA5ZjAyMjc2ZDU0Y2I0ZWMzMmVjMzlhNTI4MjE0Yjk5OTVmMjM2MGM2IGxlZ2FjeS10cnVuaworMzg0OTcgMDM4NmNjMWVlOTY0ZTRkNDg3ODQyN2VlM2FhZmM3ODdjZjJlMWUwNSBhc3QtYnJhbmNoCiszODQ5OCBlMGY0ZWI2NGQwMDM5MWUzYzQ2YjVmMjg5MDU4YjI5ZmYyZmNhY2VjIGFzdC1icmFuY2gKKzM4NDk5IDI2NzZlMDVjMDFmMjFhYTg1Y2UxY2JlNWM3ZDVlYjdlZGQwODg1ZDYgcmVsZWFzZTI0LW1haW50CiszODUwMCBjOTlhZTg2MzVmM2I1NGRiODgzOTA0ZDNhYmNkNzMwZjEyOGI4YmY2IGxlZ2FjeS10cnVuaworMzg1MDEgMGRkMTQ2ZmVkOWRkYTNjZTNmYjlhY2Y5NTFlZDgzMTIxNjUxMzU5OCBsZWdhY3ktdHJ1bmsKKzM4NTAyIDU1NmY2ZjEwNTZhOGY2ZDVkMDNhMjhlYmZmNGJjMzNmOTc0NTNlN2IgbGVnYWN5LXRydW5rCiszODUwMyAxZWRlYTRjMmIwMTFiNTNhZmJiYjUzYzkzYzQwMjAyOWIzMjljYzQ3IGxlZ2FjeS10cnVuaworMzg1MDQgNTE2YmI4ZmQ3NWI0YmQ1Nzk4MWFjZjFhNzdmY2NlMzMxNzhiYjBmZCBsZWdhY3ktdHJ1bmsKKzM4NTA1IDc2YzlhYjg1ZjVhODg3NDUyNDY3ZmIyMTUzMmU0Y2QxMWZmMmZhMzMgbGVnYWN5LXRydW5rCiszODUwNiA1ZmRlMTdiMzU0NzI1NGJhYmE2NDk5OWQyMTAxOWU2NDI5OWNlNWUxIGxlZ2FjeS10cnVuaworMzg1MDcgYzVhNDk4YzEwNzIzNTk4YjliNGYxOTc0YzZhZWZjZTlhMTZlNTlkOSBsZWdhY3ktdHJ1bmsKKzM4NTA4IGZjYWNmOWQ0YjhmMGZhZWI3NTYyZjk2Y2U4NjhiMTgxNTg0ZjU3M2MgbGVnYWN5LXRydW5rCiszODUwOSBkMjU5OTg0OTYyMDY1ZmU1OGI4NzZmNDU1ODIwZWRkZDBjMDQ2MzVjIGxlZ2FjeS10cnVuaworMzg1MTAgM2U3YTIwYzI5N2E2MGU2ZTdkZGU1MDFiYWZjOWY5ZTQyZTNkYjcyYSByZWxlYXNlMjQtbWFpbnQKKzM4NTExIDA4MGQ4Y2ZlZDlkNGE3YTU0ZDVjY2JlZWM3ZTBhYzU2MDJiMmJlMWMgbGVnYWN5LXRydW5rCiszODUxMiA2NjA0MTliZGI0YWVmOWJiNWRlMjg1Yzc2NWFlNmRlZTE0MmYwYzk3IGxlZ2FjeS10cnVuaworMzg1MTMgNDE2YjUzNGU5Y2M5NjhlZmZlYmNhZjE3NTViZTllM2NmZTM4MmY1ZCBsZWdhY3ktdHJ1bmsKKzM4NTE0IDc3YjU3MDg3ZmU0NWRiMjQ3MTc4ZjBlMjM1ZTQyNmY3ZTRkMjhmOTEgbGVnYWN5LXRydW5rCiszODUxNSA0MzI5YTFhMDA0NjlkMTYzY2E1ODRiN2UwODAzMTE3YjNlMjBkZjU5IGFzdC1icmFuY2gKKzM4NTE2IDg5Y2YyNWUzNjc5YWU5OWE0OTAyYmFjMDUwMTViZWI4NjI3NzdiNzAgYXN0LWJyYW5jaAorMzg1MTcgZDFiMzVhZjI5MjYzMGI2MDk3Y2Y2YjNiYTIwMzA1ZGMxZWRkZWJjMCBsZWdhY3ktdHJ1bmsKKzM4NTE4IGEyYjdjYjczZDliMWQ3MGViYjQ4MzUzZDY0Y2NlY2M4MjM1N2Q5NTQgcmVsZWFzZTI0LW1haW50CiszODUxOSA1ZjI2Mjk4ODExYjcxNDJhNmY3MzA4Njc4ZDZkNzJiZmY4NmMxNDU1IGxlZ2FjeS10cnVuaworMzg1MjAgM2QwYmIzYjA1ZDM5ZjBiZDE0ZDlmOGM2OWUxNzc1MTg0MWQ0NzRiZiBsZWdhY3ktdHJ1bmsKKzM4NTIxIDExNzZmMWJiNGUxYWVhMmZmNTE4MjcyMGM0NmFiYmY2MGMxZjFhYzEgbGVnYWN5LXRydW5rCiszODUyMiA0YTBjMjAyZWU3ODlhMzczZjY0N2RkMDA5MzQ4NjRlZTI5NzliMjc3IGxlZ2FjeS10cnVuaworMzg1MjMgZDNjZTdhOTQ2MTZlOTE3Y2ZlZGJlMDAzNmI0ZjEwZmIxY2I4MDZmOSBsZWdhY3ktdHJ1bmsKKzM4NTI0IDYzNmQ2ZDQzM2I2MjYzN2FlZDRlZmIxOGIzMDcxYmQ0MzEyZDc2MjQgbGVnYWN5LXRydW5rCiszODUyNSBmZDZkMzU5Y2EyNjYyMjFiN2FlZjlhNjMyNjZkZjVhZWVmMjIzNzJlIGxlZ2FjeS10cnVuaworMzg1MjYgYjVhMjVjNTZhODUyM2Q3Zjk0OGFiMDY2OTNmOTZjOTEwYzg1YTE2OSByZWxlYXNlMjQtbWFpbnQKKzM4NTI3IDYwNTBhZTg0MmM4ZjFjODhiOWFhYTIzNTYyNWVjNGQ4M2Q5ZDViYzUgbGVnYWN5LXRydW5rCiszODUyOCBjNTA1Y2JiMjZjZWRjZDA1MGY0NmQwYjdlNTFiNWI0MGZiYzQ1OTUxIHJlbGVhc2UyNC1tYWludAorMzg1MjkgZmEzY2RkNGY5Y2QwMTdhN2VlZDk3ZTE1N2YyNGM4ZDdlNjc5YTk4ZSBsZWdhY3ktdHJ1bmsKKzM4NTMwIGI0MzE1ZTY3ZWRmNTEwYjkyZjZiYjIzZTk5NTRhMjM2YTRjM2M2NDggbGVnYWN5LXRydW5rCiszODUzMSBhOWYxNjFlMzZiZjkwNDFlZTBkYTg2OWUxOWY1YThlNTQ1YjFlNTQ5IGxlZ2FjeS10cnVuaworMzg1MzIgZDQ4ZmEwYWZkY2JhZmQ1MGUxNDMzOTIxYjU3ZGM4MjllYzZlZDQ0MyBsZWdhY3ktdHJ1bmsKKzM4NTMzIDEzYTk1MGEzNjI0YmNhYTJiNGQyMGIwZDRkNGQ5ZjU5NjZmMmQzZmYgbGVnYWN5LXRydW5rCiszODUzNCAxMWZjZGJiMjc5ZGU5MmFlZmFkODkzZjZkNjIxNzEyZjk4N2JiN2JjIGxlZ2FjeS10cnVuaworMzg1MzUgZDk5MjdhNjVmNWY5MmUyNzZkOTIyODZlNmM0M2Q5MzFjMTExNmRkOCByZWxlYXNlMjQtbWFpbnQKKzM4NTM2IGNhYzMxYjRiNWU3OGQ0ZDI1Nzg5ZGEzNTA1MzgxZTBkYWRmODNmNDggbGVnYWN5LXRydW5rCiszODUzNyA4NjFiZTljZDA0ZDdlY2Q0OGZjM2VjNDBjZjdlNGNlYWU4NDY1MDkwIHJlbGVhc2UyNC1tYWludAorMzg1MzggNGFhZmIxYzlhNzBkOTAwZTg3MWVlZTMxMzQwNzc1NzFiMTVjZjg3YSBsZWdhY3ktdHJ1bmsKKzM4NTM5IGU0OGI1YTYxZDgwYmQ2ZWJkNTVmYThkMWZmYmZiOTdiNjJiYzJlMWYgcmVsZWFzZTI0LW1haW50CiszODU0MCBhNmQyMzE1MTA5YTRmMmFjOWFiZjZkYjg0NTE3YmNhOTMyMjU3OTBlIGxlZ2FjeS10cnVuaworMzg1NDEgMmZkOWI4NWJhNjVmZGVmY2Q1ZjJmZjBkOGQwY2ZkNTFjZjRlYWMxOCByZWxlYXNlMjQtbWFpbnQKKzM4NTQyIGU2NDIyNTI1YzI0MDMxODk1Y2Q0OTExYTc5OTBlYTk4ZWQwYjQwYmIgbGVnYWN5LXRydW5rCiszODU0MyA3NTU2NDUzMGY1MGMxZWZiNDA1ZGZiOTI3NjY4Y2ZhZTY3OTJmZTAyIHJlbGVhc2UyNC1tYWludAorMzg1NDQgOTE4YmM2ZDU2ZDI2ZjY2MTI1ZmY1NGY2OTI0YTUxY2M3MTc5YzNmNiBsZWdhY3ktdHJ1bmsKKzM4NTQ1IDlmYTc2OGE5OGM1Y2EzNjFiODA4YzI2MmNiYTZmMGU4NzIxZmM5MTggbGVnYWN5LXRydW5rCiszODU0NiBiNDA1ODYxMjliYjA4NzJiNWUwYzA0YmMxMTc0NWUyNzkwMDZlZTY5IGxlZ2FjeS10cnVuaworMzg1NDcgOWQ2MDg0MTljZGY4ZDUzNmNlZTk0NTVkMjFhZjNhM2VlOTQ5ZTU0YSBsZWdhY3ktdHJ1bmsKKzM4NTQ4IDM3ODU2MTBmZjc2MzAxZjRkZjk5YjYxZGNlZWY4NjE2YThmMGJlZWIgbGVnYWN5LXRydW5rCiszODU0OSA0NjMwMGIxYWEyZjY4MjVmZGZjNDEyZDM3MDk4N2E2NjNlYzhhMWY4IHJlbGVhc2UyNC1tYWludAorMzg1NTAgNDgxMmY2YTdmNzM1NTY4M2IyMmI2MmFjNzNhYjBjYTVjODE3MThlYyBsZWdhY3ktdHJ1bmsKKzM4NTUxIDhjMzU2M2QwOGM2MjNkZWE4Y2JmYzc5YzI5NThhNzgyZmI5ODY3OWMgbGVnYWN5LXRydW5rCiszODU1MiA5YjNhMmM0MzAyYWFjMDZlMDllOWFlODU2ZmE0MmUzMjFmZTcxYWUwIHJlbGVhc2UyNC1tYWludAorMzg1NTMgMGQ0MTA4ZDNhM2E4Yjc3ZGZmNThlMTM1MWIwYjE2YzM0ZmQ1NzBlMCByZWxlYXNlMjQtbWFpbnQKKzM4NTU0IDRjNjZjMTdjNGIyODA5YjM0NGU1YzdmNGVkMjk0NzA0MTZkNTg0NTggbGVnYWN5LXRydW5rCiszODU1NSBkYjdhODMxMGIxOWE5NGQ2MTdhOTVhZjBmZTQ3NTE5MTQ2ZmZhZGIzIGxlZ2FjeS10cnVuaworMzg1NTYgMDg1YmMyN2Y5MmI3NTE5YWYzMzZhODNkNjM0MzMxZjY4MDg2ZmQzMyBsZWdhY3ktdHJ1bmsKKzM4NTU3IDAwZTQ3ZWIxMzZiMmMwOTUxNTFiY2IyNTc0ZDM3MTExZjMwZWZmZmUgbGVnYWN5LXRydW5rCiszODU1OCA3YTFhOGVjNmRjNTM0NGMwZDAyM2IwMzg3YTY3YTJkOWU2ZmI4ZjM0IHJlbGVhc2UyNC1tYWludAorMzg1NTkgOGYwNDU2NDI1NzE1ODE1MTAxZDkwMTQ2NTAyMDhjNmI0MjIyMTU1YSBsZWdhY3ktdHJ1bmsKKzM4NTYwIDRhYmYyMWJlMTdkMzU0MTk1YzA5YTM3MzMwOTEzZWE3YTM3MDcxZGYgcmVsZWFzZTI0LW1haW50CiszODU2MSBlOWZmYWQ2ZDg4MjI4ZWM4M2RkNzllZTRkMGQ5ZTEzOTMyMWRiMmMyIGxlZ2FjeS10cnVuaworMzg1NjIgNTFhZmI2ZTc3NDc0MDhlNmZlOTcwZTA3N2YxYWIxZWQ3N2I4YjIyMSBsZWdhY3ktdHJ1bmsKKzM4NTYzIDgxOTgyNTg0YzYxYmM1NjI0NmY1OWU2YjYyNWY3NmFhOTE1NWE4YzkgcmVsZWFzZTI0LW1haW50CiszODU2NCA0ODEzOTc2ODNlYWNlZjBlOWIzYTgxYTg1MGRmZjQ5NjMwOGYyZGRiIGxlZ2FjeS10cnVuaworMzg1NjUgZWQ2ZWMwMDBhMTM4ODk3ZTVjMTdlNjViN2M1ODU0M2NkNDc4ODVlMiByZWxlYXNlMjQtbWFpbnQKKzM4NTY2IDkwMzA0NWE3MGMzZWI2MDQ1YmQ4ZjBhZWJjYzZmYzBjNWUyODZhM2YgcmVsZWFzZTI0LW1haW50CiszODU2NyAwYzQwODAzZTVlNGQ0MDhlMmM3ZjE3MmZiYTFjNjJmY2U5ZThmYzA4IGxlZ2FjeS10cnVuaworMzg1NjggZjg3YThkMGRmMTI1MmJiOTE1NDhlMWQ0YmIxZWMwYmQ2OWJjMzY5NiByZWxlYXNlMjQtbWFpbnQKKzM4NTY5IDQ5ZDdiYjJlOTZkMmY1Y2JjY2VhMWU3NDMyNzMwZTk0M2UzMGVlN2YgbGVnYWN5LXRydW5rCiszODU3MCBhZTA2MWZjNjMxOGRjZTA3MjlmM2Q5NWY0MjczNTM3OWVjMTg0MmUxIGxlZ2FjeS10cnVuaworMzg1NzEgZWFjMDFjYmNhYWRhOWJiZDdiZmQ1NTAzYzJjMDU0MTY5ZDM0MGVhZSByZWxlYXNlMjQtbWFpbnQKKzM4NTcyIDFhYzI0ZTkxODNlNTE3N2Q2MDgyYTc2Y2U1ZjNmYTgyN2YwYjliYWEgbGVnYWN5LXRydW5rCiszODU3MyA0ZWE5ZGUwMWQzMTE1NmRhNzI3N2YyYWE3OGY2ZjkxMDkxY2M1NmUxIHJlbGVhc2UyNC1tYWludAorMzg1NzQgYzJiNTkxZDdmMjllZmRmOWYzYmNlNTYwZjFjZjE0ZTZmOGI0MmQyZiByZWxlYXNlMjQtbWFpbnQKKzM4NTc1IDA3MjVmMGQ1YTVjNzU4OGFmMDk1NTBkNGQ3MDVlMzQ4ODI5ODgxNmQgbGVnYWN5LXRydW5rCiszODU3NiA4MTdlMjI1MDZmYThmOWM5NmNlNWNlOWI4YzkzZWU1MDNiZWQwN2VlIGxlZ2FjeS10cnVuaworMzg1NzcgNjA0ZmY5ODkxNWVjODE4NTQ2YjJkYWNlYmYwMWYyNjMwNmQyMzQyMSBsZWdhY3ktdHJ1bmsKKzM4NTc4IDlmMDc4ZDc2NjgwNDQ0Nzc0MjQ3MjU2NDRhOWMxY2NhYmYyZmMyYTUgbGVnYWN5LXRydW5rCiszODU3OSBjMDUxNzhmNDFkYjM5MDc4NWIzMjcxM2Q5MzY2NmFjNzVjMGI5NDc5IGxlZ2FjeS10cnVuaworMzg1ODAgYTBkM2Y3NzM1NDNkYjI4MWE3NjQ2NDg3ZTkxY2QzMjdmODVlNDcxOSBsZWdhY3ktdHJ1bmsKKzM4NTgxIDc5MzAyZTUwOTEwZWVjZTIwZjIxNDA2NTBiNDIyZjNlNjljOGFhMGIgbGVnYWN5LXRydW5rCiszODU4MiBhOTFhNDhjOWRlMDBjOWFiYTlmMmE2NmFlYmJkODMyNTg2MGMyYTExIHJlbGVhc2UyNC1tYWludAorMzg1ODMgNDFhOWNhODY2MDM4MjAzNjQ0YmFmYWE2NDIwOGExMTkxNTE2MzZmOSByZWxlYXNlMjQtbWFpbnQKKzM4NTg0IDg0ODU5YjRhNjJjNmVjZGU1NjY1MTgwMWNmNTQyNjU5ODlkZDM2MTQgbGVnYWN5LXRydW5rCiszODU4NSA1ZDBkNzZkN2IzMWZkODgyZTFiMWUyN2UwMmJkYTg0ZGFhMGU4MDYwIHJlbGVhc2UyNC1tYWludAorMzg1ODYgMTMwOWY2OWI0ZGJiZGU4YjdjNTcwNjUxMzE5ZDQ3YTU0Njg5ZWI5ZSBsZWdhY3ktdHJ1bmsKKzM4NTg3IDdkZTc2ZjM0YjNkYTJmMDk2ODVhMWY0ZjkxZGQ4ZTU3ZTJiNzNhYjUgbGVnYWN5LXRydW5rCiszODU4OCBmNGRhNDZiOTQ1NzA4OTIyMzViMTA2M2VmODllM2I4NGM5MjEzMmY0IGFzdC1icmFuY2gKKzM4NTg5IDk1YjY2ZDlkYjJlZTY1OWEwYzJhMjk5ZDNjNDE0YTU2MmU5NjAwY2EgYXN0LWJyYW5jaAorMzg1OTAgMzA5OGVmZTQyYTBmMjA4NmM0NDA1ODQ3OTQzOWU1NDA2ODZiNWYwOCBsZWdhY3ktdHJ1bmsKKzM4NTkxIDdkMmM4ZGFhNDAzYjYxOWNmZjcwYzhmNTcwYzY4YzM5MDUwMWUwZjUgbGVnYWN5LXRydW5rCiszODU5MiBkNjg3YThhMDlhNzJkNzRkNjQ4ZDRiODkwY2U2N2JhYTdhMTYxNTg3IGxlZ2FjeS10cnVuaworMzg1OTMgMGQ0NGQ5MDcxZTk3ZmJjMTA2MzljYTY0NWY0ZjMzN2IxZTFlY2E5OSByZWxlYXNlMjQtbWFpbnQKKzM4NTk0IGYxZmE3YmIyYmY5OTkwZjQwY2EwOWJhYmRlNzM0OGEzYjA5NDE2ODEgcmVsZWFzZTI0LW1haW50CiszODU5NSA2OTdiOWVlYzU1ZGE4MmM0ZDdhMGIzZDZkOTY1NTY2YWJlMmQ5YTQzIGxlZ2FjeS10cnVuaworMzg1OTYgZDU0NDlmMWY4NDBlY2Q0ZTI2NTJkZDI2MjRlODliMzRmOGQ1MGJlMSByZWxlYXNlMjQtbWFpbnQKKzM4NTk3IGYyOTAxMjE4MWNmMDE3YjhmYmE1ZmI4ZTc5YWEyYTI1ZjI0NzMwMmYgbGVnYWN5LXRydW5rCiszODU5OCBlNWQxOTAzMWEyOTVkNzdiZDg2MDBhNDUyOWVmYTg1NmM0M2Y5NTM2IHJlbGVhc2UyNC1tYWludAorMzg1OTkgNmI2ODc1ZWRmNjA3ZTMyYjU4OGNmZWRlZGUwODFjZmJlMmNlMDQ4OCByZWxlYXNlMjQtbWFpbnQKKzM4NjAwIDg0NzEzZDRiMTlhZjEzNmU0YTRhM2Y1NmMwNWY4MDc1MmU2OGI1ZTAgbGVnYWN5LXRydW5rCiszODYwMSA0NGYxNDhiZmM2Yjg4MTc1YWI2NzA0M2U2NmVmY2U5ZmNmNWYyYjkwIHJlbGVhc2UyNC1tYWludAorMzg2MDIgZGRjMjI3NmMyNDdlNjg2ZjhmMWEwODQ4MWJlY2ZhNmZhYmYzY2MwYSBsZWdhY3ktdHJ1bmsKKzM4NjAzIDUxNmYxNTUyMTU5ODRkYjNiNmE0OTRjNDg3ZWMxM2I1MWQxNWQ2MjUgbGVnYWN5LXRydW5rCiszODYwNCBiNTQzM2QzYzZkYzg4NDc2ZjIyODA5ZmJhYzQ4ZDQzMTU1YzkzNWUxIHJlbGVhc2UyNC1tYWludAorMzg2MDUgMjFlNjU3N2ZmMDc0ZTExNmRmNmE3MzIzMmU4ZGE5YjYzYmRlNjE4MSBsZWdhY3ktdHJ1bmsKKzM4NjA2IGIxMjJmZDkzYTViNTE2ZTAxOTBkZmIzNjJlN2QwMDU5MzMwZDBlOTcgcmVsZWFzZTI0LW1haW50CiszODYwNyAxNmNlZjA5YTgzNDJkYWNjYWZjYjg1ODE5YTJkYmZlMTcxNDE0OTNiIHJlbGVhc2UyNC1tYWludAorMzg2MDggOTkwNmU0ZGEwODZmZGNjZjQ0YzdlZmU1Mzk1NjQ1M2EzZDJjM2M2NyBsZWdhY3ktdHJ1bmsKKzM4NjA5IDUyYjY1MWE5NzUwZDVkYjM0Y2EwMjFlYTRjM2FlN2M2NDYxNTY5MDkgcmVsZWFzZTI0LW1haW50CiszODYxMCA0MzAzNTY4MzlkMjg1OTFlNjIyZmE4MjZmZTM2ZDg2MGFiODM3OGVjIGxlZ2FjeS10cnVuaworMzg2MTEgMmM3MzM2N2Y1NGVlZWM4OTYyNjM1YTBkMTY2NDAwNGYzMTgwMWJlMSBsZWdhY3ktdHJ1bmsKKzM4NjEyIDAzNDkyNTdlMWVkNTJlMWY3OTJmODYwNTcyYTkxOGJmNzYzNjg3MDUgcmVsZWFzZTI0LW1haW50CiszODYxMyBiMTQyN2NmZjJmODMyMTFiNzBhY2EzMmMxNDk4YTUzYzg5NDVmM2M4IHJlbGVhc2UyNC1tYWludAorMzg2MTQgY2ZhZTRiMTIwNmY4YWM5ZDUwYjBiNGY3NjJlNjc1NDEyMzBkYTU0MyByZWxlYXNlMjQtbWFpbnQKKzM4NjE0IDExOTVmOWJhMzQzOTA5N2NjNWI1YTM2N2UzYWUxYjQzZjE1N2IyNjQgcmVsZWFzZTI0LW1haW50CiszODYxNiAwYmUwNWViYTExNmQ4MTg0ZDg2ZWExYzMyOTg4MzMxZTY0YmViYTI0IGxlZ2FjeS10cnVuaworMzg2MTcgZWEwMjRhNGIyOWI2ZDExMTJmNmI5MTdmZGZkZjI1ZGZjNTgwMzY5ZCByZWxlYXNlMjQtbWFpbnQKKzM4NjE4IDFhZmVmY2YxNGYwNjM4YzNhNTU5MzY5MTNkZDFlNjk2ZGY0NjRkYjUgbGVnYWN5LXRydW5rCiszODYxOSBlODMzMDlkNDNhODJlOTlhNzUwMWI0OTg3YjI2MDMyMDdjNDkwMzMxIGxlZ2FjeS10cnVuaworMzg2MjAgZDM1NWRhMWQ3YzhmZDE5YmIyMDdkYjJjYWEzYzc4MDYyZjc0ODI5MCBsZWdhY3ktdHJ1bmsKKzM4NjIxIDY1ZThhYWNiMGU5NGIxNjIzOWNlZDgyYjQyMTEzMDM2YzM5OGJmZWYgbGVnYWN5LXRydW5rCiszODYyMiA4MWI1YTEzZmEzOGEyNDkwMjczZGE2NjExYzBjMGRlZGJlZThiNWIxIGxlZ2FjeS10cnVuaworMzg2MjMgOGQ4YmE2Njc4MGVkNzc4NTAyY2UzOGI2Njc0YWVlM2ZiMTA0N2FhMSByZWxlYXNlMjQtbWFpbnQKKzM4NjI0IDQ1M2Q4OWVhYjczOTM2ZmI5MTVmOTg5NTc5YzRhYjJiMmMzZjJhZjcgbGVnYWN5LXRydW5rCiszODYyNSAwYzgyYTdlZjk1NTRkYWQ5ZmFjODc5Mjg4ZTBhNzdlNzI1OWU2M2YyIHJlbGVhc2UyNC1tYWludAorMzg2MjYgM2JiNzU5NDk4NzY3ZDY5MGZlNmYyYzI5Y2JiZGNjMjM4MjVlMTUzOCBsZWdhY3ktdHJ1bmsKKzM4NjI3IGZkZjJmOGZhZDhkNDU3MzYzODZjYTM4NTY5YzAwN2M4MmJhOTYzMDYgcmVsZWFzZTI0LW1haW50CiszODYyOCA2ZjliMzZmYzExMWM5YWZkYWQ0MmY5ODVjMzEzOGZjMmY4MmZhOTgyIHJlbGVhc2UyNC1tYWludAorMzg2MjkgYjhkOTA1Y2E5ZTk5OTk2NmQ2NzdhZTY0NTQ3NjRhZmJhM2E2MDYyNSBsZWdhY3ktdHJ1bmsKKzM4NjMwIDNkOTdlYjNiN2NlY2FmZjQ2ZmRlZTI2OTAwNWY2N2VkYTQ4YzhlNjMgbGVnYWN5LXRydW5rCiszODYzMSA3MmI5ZWI3NDIyNjMwN2JmMmFiYjZjMDM5ZDJiNjlhMmRhNmQwMDI0IGxlZ2FjeS10cnVuaworMzg2MzIgM2ZhMzQ3NTk1NDg3MjBiNmY5NjI2ZmMzYTk3OWUwYTU0Nzk3ZWExYiBsZWdhY3ktdHJ1bmsKKzM4NjMzIDUxODBjZmNjODdiZmU3MjY0MGU1Mjg2ZDAzYjEzZGNkNjcwMTIzMDEgcmVsZWFzZTI0LW1haW50CiszODYzNCBkZmEwOTdjY2JjNDlkYTQ1MzcwNjExNWViN2E5M2Q0MzI2MjJkYjgxIHJlbGVhc2UyNC1tYWludAorMzg2MzUgMjE4YTc2Mjc1OTMyZWQ2OGQyYTY3OTc4ZjI4ODQyZjliZjk2NzYxNCBsZWdhY3ktdHJ1bmsKKzM4NjM2IDY3OWMxNjExNTYxMzFjOWQ0NTcyYTA3NjcxMDE4NGQ3NDU3NGU4MmQgbGVnYWN5LXRydW5rCiszODYzNyA5NjI4MDBlZTMwZWY1ZjQyYTMyNWVhNjJiZTYwM2NjNGY1MGQ1MzFmIHJlbGVhc2UyNC1tYWludAorMzg2MzggMDRiYWE2NDRmZjAwMzM5MWRlYmZkYzJhNjdhMDI3ZGJhNDI5NWFlMSBsZWdhY3ktdHJ1bmsKKzM4NjM5IDExYjQzNTBiNTg3OTJkYTlmNzgxNzY1NjBjNTNjMzZjOTAwNjk2YjAgcmVsZWFzZTI0LW1haW50CiszODY0MCBlNTI3ODMzMWQ5YTkwNThmYWRhN2E0YjRhMTA2YzJjM2VjYzVkODcyIGxlZ2FjeS10cnVuaworMzg2NDEgNmYzN2QxMTYwMjYxMDk5MjgzNDdhNzBiNmRmNzkyMDA3MTUzMGJjOCByZWxlYXNlMjQtbWFpbnQKKzM4NjQyIDdmN2NiZGIyYzYxMTM3ZGFjYzRiYjZlZmY2YzQ4MTgxMWU0MjljNzkgcmVsZWFzZTI0LW1haW50CiszODY0MyA1Zjg5M2E0Y2RlNmZkOGQ2ZGRlOGIzMzgyODc3MTM3NzMyYWIxMzU3IGxlZ2FjeS10cnVuaworMzg2NDQgNTA1MDllZTk2MzY0YzdlODYyYjZjMDM3ZWJmZTQyOGUyMzVlYWNmOCBsZWdhY3ktdHJ1bmsKKzM4NjQ1IDMxM2VkMjgxN2Q2ODA5ZTMzZDQ0N2I5YzA4ODdhMTU4ZTczZjZmMmMgbGVnYWN5LXRydW5rCiszODY0NiA0ZGI1ZWE5NTc3YmFiZGM3Y2I4NGJkOTRjYzg3NWY1ZTA4ZDlmNTZmIHJlbGVhc2UyNC1tYWludAorMzg2NDcgMDc3NDUxNjZmNTcxM2JhNTZjMWI4YWU4MTJiOWFmNGZiYzYzODg4ZSBsZWdhY3ktdHJ1bmsKKzM4NjQ4IGZjYjUwNzQxNGM0MTQ4ZjQxYmVhMWU5YmQ5MDY4YTZlMDJkNzdmMDMgcmVsZWFzZTI0LW1haW50CiszODY0OSAyM2NhMjYzMDY1N2M0ODUwOWMzNWI2YjM4NDVhNmIwNGI0MGI2NzI3IGxlZ2FjeS10cnVuaworMzg2NTAgNmE2NDk4MTYxMjRhN2NlNDVhNWExM2M2OTg5N2FjNDE5NWMxNGE3NSByZWxlYXNlMjQtbWFpbnQKKzM4NjUxIGJjMTU5Mjk2ZDI1MzU2OTZkMDQwODUxYWQzOGI4ZTRjMDI5ZjZlZGYgYXN0LWJyYW5jaAorMzg2NTIgNTExZTdhOTNhMWU5ZjEwNWU2NDIyY2FhOTM1NTI4NWI2ODVmM2E4OSByZWxlYXNlMjQtbWFpbnQKKzM4NjUzIDg0ZWI1ZTE4NTU0NzYxNjZiZjI5ZWM3ZDBmYjlmYzk4MDFmYWY3YjAgcmVsZWFzZTI0LW1haW50CiszODY1MyAzMzNjZjMwMzU0M2I2ODBlYzVlM2ZkZjdlOGM5NjYxZjk0ODhhNTBlIHJlbGVhc2UyNC1tYWludAorMzg2NTUgYmViMWNiNzg1ZTFkNTQwNmNiMDM1ZjUyZDUyYjRhMzRlY2M2N2Q4MSBsZWdhY3ktdHJ1bmsKKzM4NjU2IDdkNzQwNGE2YTVlYTNkMjQzNzcxNmNlZjE5Y2I5YTE2YmM2MjQzZjIgcmVsZWFzZTI0LW1haW50CiszODY1NyA3MTllYjEwMmVhNDQ4ODRmZmI5OTYyY2VlNDVhMGI1YjUwMTk5N2YxIGxlZ2FjeS10cnVuaworMzg2NTggZmIzOWY0ZWVhZWE0NzYyNzVjMDE4NGE3MDcwNWQ4YzBhZGMzZDc3OCBsZWdhY3ktdHJ1bmsKKzM4NjU5IDJlZTU3NWI5YjYwZTVkMmE5NTBhYWQzZDQ0Yjc4YWI2ZmQ1Yjk5MTIgbGVnYWN5LXRydW5rCiszODY2MCBmZGU1YTFjNmE0OTdlNTQ1NmQ2Y2Y3NTVmMTM5MzRhODAxYzlhYjYzIGxlZ2FjeS10cnVuaworMzg2NjEgOWQ4MGU2MzAwNGNkYzZjNTE5NzhiMjJhYmNmMDI5ZWMzNWQ5MTZiMiByZWxlYXNlMjQtbWFpbnQKKzM4NjYyIGEzMDVmZWRjYTFiZmZmNTM0YjZiNjc2NThkZDgyMjQ3MjkyNmNlMTEgcmVsZWFzZTI0LW1haW50CiszODY2MyAwNGZhMTMyYzkwMjNkZWMwNGFlODFjYzM2OTA2MDdkNjRkY2VkYTUxIHJlbGVhc2UyNC1tYWludAorMzg2NjQgMzM2ZmVhNDA2ZmNmMDZiODhmM2ZmZWFiNzE1M2ZjNzUxYzJlMTRiZCByZWxlYXNlMjQtbWFpbnQKKzM4NjY1IDRiY2UyZTUwOTYxZTFjYjgwZGRmYjkyZjhhNzJkMWJlNDE0ZWY2MmIgbGVnYWN5LXRydW5rCiszODY2NiA5OTdiMjU1ZTFjY2M4OGJlZjkxODBjYWI5MDQ4NzMyNzc2OTcxNTQ3IHJlbGVhc2UyNC1tYWludAorMzg2NjcgNzYzMDBjNWZiY2VjOGY1ODc4ZjVmMmIzYjcxMjZlYmJhZmNhMzYwOSBsZWdhY3ktdHJ1bmsKKzM4NjY4IGZkZWU4N2I3MDM3YTNiNjAwM2VjODJlMjBkMGJiYTJlMWNlZThlZGUgbGVnYWN5LXRydW5rCiszODY2OSAwYTZhNGNjZjVjY2Y5ZmRkMGE5YjYzN2U5ODk0ZDQzZjAzYWVkNmI2IGxlZ2FjeS10cnVuaworMzg2NzAgMjNlM2RmYzBjNjQ3YThmNTBlYjZhYzE5NDVlMmU1NWU5MmY3YzMwZCBsZWdhY3ktdHJ1bmsKKzM4NjcxIDJiMzhlZDY2YzY3ZmY3NjllMGY0NGQ2ZDJkOTQ0YjNkZTk2NWY1NGIgbGVnYWN5LXRydW5rCiszODY3MiBkYzZmMzE1ZjFmN2YxNWY5NmI5NWQzNGU5OTlmNTBhYzNhYjU1MDA1IGxlZ2FjeS10cnVuaworMzg2NzMgMTNjMWMzMzE2YzZmZGVlNDJhNGRlYWRlNmU0NGQ5MTU1NTk3YmEzNiBhc3QtYnJhbmNoCiszODY3NCBjZjQzMDJjMjFlMDAzZGI4YTczY2Y3MWUzMjI2ZTNlZjdjMjM2M2U3IGFzdC1icmFuY2gKKzM4Njc1IDZkMWVlOWRiMTU0M2VmMjQwMDZjN2QyZjcyZGM2ZDQ4NWU0YjA3ZTggYXN0LWJyYW5jaAorMzg2NzYgOWY0NTRhZjE3ZjdhMzhmYjcyNjUwMDY5MTMwZDlkMTM0YTliOTAzOCBsZWdhY3ktdHJ1bmsKKzM4Njc3IDNlMmVlMjE5NzI3ZDEwMGQ2MmNmYjEzNzQxMGI1MDQ3ZjlhZjFkNzEgbGVnYWN5LXRydW5rCiszODY3OCBiMTRjOGU2MzEwZTcxMmU3NTZkYzIzNjQ5NzUyYTI1MmZjN2M0YmUwIGxlZ2FjeS10cnVuaworMzg2NzkgOWFlYTlmOGJkYjJjNDc4MWQ5YjQ1ZDU2YzY0NDdmYzJmNzMzYjQ5MiBhc3QtYnJhbmNoCiszODY4MCAxMDdlMWU4YzhmYzdlNWEwZDE0M2JiNDIzNGZmMzE1ZmUwYmI4N2Y3IGxlZ2FjeS10cnVuaworMzg2ODEgMjNiM2U3OTA2ZTBmNjM4ZmE4ZjkyY2JjMjQxMmM1NjZkZTFkYTI4ZiByZWxlYXNlMjQtbWFpbnQKKzM4NjgyIGMwNmM5MGJlYTdkYjA3MDM5ZmUyZDZjOWNhYjJlNDAxOTA5YmRkZjUgcmVsZWFzZTIzLW1haW50CiszODY4MyBiYmI2MGUyNjljZThkYzUwODdjYmI4ZTQzZGZjZTY3MTBjNDc5MGU5IGxlZ2FjeS10cnVuaworMzg2ODQgM2RhMjFmZGMyZWU3MjIzNTVmMDYyN2RmZWU4YWUyMGVmZGIyMzA4NyBsZWdhY3ktdHJ1bmsKKzM4Njg1IGYzZjk5YWNhZTU5ZmY4NzBmYTFkMDQzYTRjYzJiMDM3MTNkYjRmMTYgbGVnYWN5LXRydW5rCiszODY4NiA0YzEzYjAxNDZiM2Y2YmI0MjQ2OTM1YTc1M2I2Mjg1MDkzODM1NzI3IGxlZ2FjeS10cnVuaworMzg2ODcgNmQyMDAwYmFmM2RlOWFhZWI0NjhkMWFmZTFiNjc0ZTA5MGM5YWZkNiBsZWdhY3ktdHJ1bmsKKzM4Njg4IGYxM2YyY2JkZjRkZTI5YTVhNjk5OWNhMDBiMzdjNmM2ZjJiY2U0ZDAgbGVnYWN5LXRydW5rCiszODY4OSAwODUyZDE5NmI1OTA0M2VmZDkxYTNjNGU0MjhmMjE0MTRhYmJiMzQ5IGxlZ2FjeS10cnVuaworMzg2OTAgNzkzMzUzMWQwMmI0NjIxNDIzMjBiNTNhZGRlYjMyOTJhYWFlZWQ3NCBsZWdhY3ktdHJ1bmsKKzM4NjkxIDY5ZTEwZTYzNTdiZDc2ZjZjZjU5YWE2ZTc1MjhkOTNkMTVlMjZlMGQgbGVnYWN5LXRydW5rCiszODY5MiBjZWJmYmFiMDE3YTZlNjMzNTAyOTM2M2RlZTRjMjQ1MWI5MmFlNjY5IGxlZ2FjeS10cnVuaworMzg2OTMgNzE4YjBiNWE2NDE5ZjhlNWE4MDFkMzliNjVhYjFjZTQyMDMxNWNkNSBsZWdhY3ktdHJ1bmsKKzM4Njk0IDk5YzE2ZTQ0ZTVkNDZmNzQ2YzU4NjY3OGRkMDU4OGQwNzY0YzFjYTUgbGVnYWN5LXRydW5rCiszODY5NSBkNTVkZWFlNDMxMGRjMjNkMWE3OTgxMmZkMDVjMjJiMDFhMmRiNmFiIGxlZ2FjeS10cnVuaworMzg2OTYgOGYyMWVjMzI3NGYxYzQ2OWJiMTZmODNlMDFiNmY5NWUxNzdiMzQ4NyBhc3QtYnJhbmNoCiszODY5NyBiOGZmOWJjMDIzZTY3NTljN2ZhZjc0ZGQ1YmU1M2FkMTI0MTQ5NmYyIGxlZ2FjeS10cnVuaworMzg2OTggNGI5ZGY0ODU2ZjM3YTYzMDY1NzdiZTU2NjBlOTA0NTY0NTAzNDViOSBsZWdhY3ktdHJ1bmsKKzM4Njk5IDIzODBmOWQxZWJhYjk1ZWQ0YjBhNDljZTgyOWRhZmIwODY5ZDRlZjQgbGVnYWN5LXRydW5rCiszODcwMCA1NTQ3ZjkwMzAxMDk4MzQ1ZDJmOTk1NWUxYmFkMTI3MTEyOWZmYzhjIGFzdC1icmFuY2gKKzM4NzAxIDkxNTIzY2FlZTE4MzkwNWU2NDZkMDZmOWZiNDlkMGQ0MWUyZjgzYTEgYXN0LWJyYW5jaAorMzg3MDIgZTBmNTE5ODUzYTlmMjgwODYxMGY5M2MwZTA4YWE3NjdkYmRlMmY0NiBhc3QtYnJhbmNoCiszODcwMyA1N2M2YTZhODAyYTA4MzE2N2NlYmIyMWQyZjYyZWU1YmM5ZTkyYmJjIGxlZ2FjeS10cnVuaworMzg3MDQgM2M3YjE5Njg5NDc5ZDhhYzVkNDIxYWZmMjExODFmOTRkYTFmZjIwNiBsZWdhY3ktdHJ1bmsKKzM4NzA1IDhmYzhlN2E2MDcxYzUwNDE2OTAzYzg1MjYzYTU1YWFmZWExMzA3MTcgbGVnYWN5LXRydW5rCiszODcwNiA0OWUzMGM2YzkxYzhjZTVhZmJmYWViMmZjNDM3YTM0ZWJiNzAwMzYzIGxlZ2FjeS10cnVuaworMzg3MDcgYjAxNjIzNmRmYmQ5ZGQwMmNiZTRjYzNlNDU0NDU0MTI4NDZmMThjMCBsZWdhY3ktdHJ1bmsKKzM4NzA4IDI2ZjMyNzJkOWUxMTJlYTFlYWFjMzBkNjNiNDI4Yzc2NDUwNDhjMTQgcmVsZWFzZTI0LW1haW50CiszODcwOSBhNDEyNjM4OTUwYTEzYWQzNDBkYTk3YTY0YmJhNzAxMDM5OTk4NmI3IGxlZ2FjeS10cnVuaworMzg3MTAgNzIxZTYwZjQ1NGYzYzg5MDY1NGM5OWM3ZDMwMzUyN2Y3OGM5NzcyYSByZWxlYXNlMjQtbWFpbnQKKzM4NzExIDI5NTZkZjhlMGE0MDQ1YzBmZjEzYzZkZWE0MmQyYWZiZGNhYzE3NzAgbGVnYWN5LXRydW5rCiszODcxMiAwN2E0ZThkOGViNjkyMjEyZDkwZGQ0MDMyNGU5MTFiMDk4MDE3OTllIGxlZ2FjeS10cnVuaworMzg3MTMgNGVhYWIzODU2NmM5NGZmODQ5ZjQwMGI5Y2Q2OGExNzQ5YWJkN2ViZCBsZWdhY3ktdHJ1bmsKKzM4NzE0IDAxYmEzYjQwNDMxZjI5ZmVkNjI5ZTdhMjEwMTg1MDYyZmE0MDE4YzQgYXN0LWJyYW5jaAorMzg3MTUgZjFjNjMwMzMyMWQ3MGJjMzVlZjVkZjdkYWRjNjVjMjdlYzA1Yjg1OCBhc3QtYnJhbmNoCiszODcxNiBkNjlmZGU0MGM3MTljOTVjNmQ1MDU4NGIwNjA3YTk3MmM4MWJjZWY5IGFzdC1icmFuY2gKKzM4NzE3IDc2MTFkZjIxYTU5MDA5ZDUzNDBjMTcxNmJhNDEyNTc5OWFiYTlmYzkgYXN0LWJyYW5jaAorMzg3MTggOTNjYWE3ZGVjZWUzNjA2NTA5MzQxY2JjMzFhYzVhZTQwYzZlZDIwZiBhc3QtYnJhbmNoCiszODcxOSBhYjgxYzgzYTlhYzZjY2FhYWM0ZTI3ZWQxNmQ4MzZhOGYzZmEyNjZiIHJlbGVhc2UyNC1tYWludAorMzg3MjAgNjUzY2MwOWZkOTMxMDE2MjMxOGRhYWQ5NjUwMWJlMGI3OGFlYjk5NiBsZWdhY3ktdHJ1bmsKKzM4NzIxIDQ3YzU4MDNhYWI0NTgxYjk4NzdhMTBmYmRiODllYWIzOGUzNGQ0ZTMgbGVnYWN5LXRydW5rCiszODcyMiBlYzg3YTExNjQwZDAwMmJjMjZmMGUwYTRjNDRjMTc0OGYyNzdkODYxIHJlbGVhc2UyNC1tYWludAorMzg3MjMgZjkyZDg0NWY4NzAzMzM0ZDg4ZmExNThiZTBkN2JkYmYyOWIwMWIzYiBsZWdhY3ktdHJ1bmsKKzM4NzI0IGE1MGZmZTY1OTExYjBkNDk4ODBhNmExMDU4ZWYwNTgzNWU5ZGQyOGMgcmVsZWFzZTI0LW1haW50CiszODcyNSAwMGZmZGJmY2Q1YTkyNzg2OTJlZTZlNzExNTJkNTU2YmZhMGUyYTk2IGxlZ2FjeS10cnVuaworMzg3MjYgNWNhZjgwZjU1Yzg2MzhkOGY5NTUwNzQ3ZGFhNjY0NWFhYTgxOTdhMSByZWxlYXNlMjQtbWFpbnQKKzM4NzI3IDk4NWRkN2YwNjQyMDgxZWE5NGEzNGY5OTRlOWFkZDlmMmYxZDMwMDIgcmVsZWFzZTI0LW1haW50CiszODcyOCA0ZjA4MzhiNjhiYmJmMWRlMjlkNzY2YjNkZTM2MjVjMjk2OTFhYzVlIGxlZ2FjeS10cnVuaworMzg3MjkgYjcyZGY4YWVlNTZkYThmOWNkMjc2ZTg2Y2RiMDNlZTlhZGQwZjA5YSBsZWdhY3ktdHJ1bmsKKzM4NzMwIDI4ODkyZTY1MTJiYTZiOWI3MzE5NzYwNmYzZjJkOGY0ZDk4MjM4ZjcgcmVsZWFzZTI0LW1haW50CiszODczMSAzM2E5ZTQwYTU4ZDUyYTAyMGMyYjUyODY4MDc5NDg5NTMyNTgzYTg1IHJlbGVhc2UyNC1tYWludAorMzg3MzIgYWQyZGQ4ODQxMzdmZjU3MDM4ZDRlMDUzNjljMTI4MDE2YWI2YzE3NiByZWxlYXNlMjQtbWFpbnQKKzM4NzMzIGJiYTAzOWYyZTA1MjliMTZhM2VkNTYyOGIxMmJjYjE1Y2NjZjgyYWQgcmVsZWFzZTI0LW1haW50CiszODczNCA3Y2ZkYTk4OTg4NjM5NjgzMWY1MmUzYTU4MjUwYjRlYWZkOGNhYjg2IGxlZ2FjeS10cnVuaworMzg3MzUgM2JjZGQ0NDZhMTNiOWNiNzlkMjhjNmU3ZThkNGQzYjJjOGJhOTg2OCBsZWdhY3ktdHJ1bmsKKzM4NzM2IDMwNmY3ZDRkYjVlZmNjYWYxNzg0ZTdmYzMyZDQzZDhjZGJjNzVmYjcgcmVsZWFzZTI0LW1haW50CiszODczNyBhNmM1ODYyNjZkZWE1OGZiYzE1YTIxMjVkOGRlYjdkZWJiZDQxYjk0IGxlZ2FjeS10cnVuaworMzg3MzggN2UyZDhlMTdjZjE0YTQxMWIxZTU2MDU0OGQ3ODBkY2VmMmRmMzhjNiBsZWdhY3ktdHJ1bmsKKzM4NzM5IDMwYjAyYzdlZjhiYTY3MDJlYmZhNmU2YjIxNjliNWQzY2Q1Mzg1ZTkgcmVsZWFzZTI0LW1haW50CiszODczOSBmOTA1NGQyMzU4NzAwMjlhZmEzM2VmOTQ1YmNhN2VjZTk5NjE2YzEwIHJlbGVhc2UyNC1tYWludAorMzg3NDEgZjMxNDIzYzQ5NWQ2N2YwMjQzZTEzNGE1Yzc1OTkyZTU4YWYzZjNkOSBsZWdhY3ktdHJ1bmsKKzM4NzQyIGRlMTIxODk5ZDAyMTYxNjM0MGJmODY3NDA5N2I1N2NkMWEzZGU3MzAgbGVnYWN5LXRydW5rCiszODc0MyA1ZGRhMWY5ZTYyYTczNmNmYjVkMGJiMDEwYTQwNWMxMGJkZDNiZmMzIGxlZ2FjeS10cnVuaworMzg3NDQgMDY1OGU2ZWZmYWM3MDQ4ZjFlOTUxZTc2ZGJiOTFjMjA3ODJmYWZkMSBsZWdhY3ktdHJ1bmsKKzM4NzQ1IGNkMmMwNDRmNjk5ZDdjOGNjZWY1MTE2YzgxNGFhYjFiYmIxN2U2YTQgbGVnYWN5LXRydW5rCiszODc0NiAxM2Q1Y2FhMWU5ZDAyYWE5OTk3MDNlMjhkMzM3NWJlOGM2MDA5NjU4IGxlZ2FjeS10cnVuaworMzg3NDcgNTFiYThjZThkOTJhZmRmMDNiNjhhODExMDJkY2ZmYzJhYjI3NWI0MiByZWxlYXNlMjQtbWFpbnQKKzM4NzQ4IDU4ZjNmMGQwNDVmNTQ1YWRiOWFjM2Y2MDhlZmI3NjQxYWE0MzRlNDUgbGVnYWN5LXRydW5rCiszODc0OSA4NDQ1MzA1MDg0NzU2N2Y4MDE3Mjk4MzVmMWJmNWIzMDAxODdjZjM0IHJlbGVhc2UyNC1tYWludAorMzg3NTAgYWVmNzEzZGU3YTIzYzY0NTExODhjZWRhOTA0NmJjOWU3NDlhYmJmMyByZWxlYXNlMjQtbWFpbnQKKzM4NzUxIGVhZDVlNzNhYmI1M2M5OGYzYzY4YTlkM2I2M2Q1N2M5NmIzN2ZkNGEgcmVsZWFzZTI0LW1haW50CiszODc1MiA2M2M1ZDZjZTA3NjM0ZDY2MmUxNGU4NzdkMmJiZDVkZmI2Mjc0ZDk4IGxlZ2FjeS10cnVuaworMzg3NTMgN2UxYTMxMzNmZmYyZWE1OTJmMzI4MTk5N2E2ODI1MThmMzkwZTg4YiByZWxlYXNlMjQtbWFpbnQKKzM4NzU0IDZhZmYyMjYwMGUxNWFhMzY2YWY4ZTZhOTEwMDExYzBlYjYzZmIxZDUgcmVsZWFzZTI0LW1haW50CiszODc1NSAxMWZkMjYzN2U1YmI3NDRlM2ZkZGZkNDBhNGRhZGJhMmRhMjM3ZGNjIHJlbGVhc2UyNC1tYWludAorMzg3NTYgZWI2YzI5MTViYWRkMzVjMzQ4ZWI3MWE3ZGRjM2NlZDU5MGNmNTczOSByZWxlYXNlMjQtbWFpbnQKKzM4NzU3IGE5NTExYzE1MTI0YmU1YTU4MDMyZWJlZmMxN2RiNTBhYWFhYjBhMDkgcmVsZWFzZTI0LW1haW50CiszODc1OCAyZWEzZDY5MTUyMDQxMDNkOTljYTBkZDA1NzVhMDNlODEzNGYyZTk0IGxlZ2FjeS10cnVuaworMzg3NTkgMzkzNmNkN2YxNmYyNTVmMTFjOWMyNDM4OWFmZDc0MzlkYzNhYzEzYiBsZWdhY3ktdHJ1bmsKKzM4NzYwIGI4NWU4MTA0NjBlZmM1YjQyNzcxYTc1ODVlNzVjYjg3NDQzMTJiYTIgcmVsZWFzZTI0LW1haW50CiszODc2MSBmZTUzMWI1ZGNmZDYwOTJiMTQ0NDAwNDM4ZjNhNGVkYTdiNTlmYzIxIGFzdC1icmFuY2gKKzM4NzYyIDgwY2M0NGVhYmRlZTI1OWEwMDc1MDE4YzI2YTYzZGQ1ZmJhZWI3Y2EgYXN0LWJyYW5jaAorMzg3NjMgNmIyMWRjOTQzOGFkNWMxZWY5OTk2MjdmOGY4ZTU0MmU5YzZhZmZkNyBhc3QtYnJhbmNoCiszODc2NCBjYTRkOGI0ZmJiMDVkYjMxMDY5YTZlODA3NWExMjcxMTk5YzhjMTU5IGFzdC1icmFuY2gKKzM4NzY1IDVjMWViYjVhZTUyMTQzOTY4MTQzODM5YWY3ZGY5MTNjOTQ2YjAzYTQgYXN0LWJyYW5jaAorMzg3NjYgNWU4YzhjYjExZTViZGMyZjNmYjcxY2M3NmFiYTBmMTQ2NzJhNjhkYyBsZWdhY3ktdHJ1bmsKKzM4NzY3IGFiNTgyMmY3NTE1YTVmZWM1NzJmMDMyY2U5OTFiMzIzNmNiMjJhZGIgcmVsZWFzZTI0LW1haW50CiszODc2OCA3MWZkN2VlNGI3ZjUwYmM5MzNmNzExNDA4MWFmOTMyZGU4OGFiZDJlIGxlZ2FjeS10cnVuaworMzg3NjkgMzRjZGZjNWRkN2VhMzRlNTc2NmQ4ODk4ZTI0ZTAxYjFhODE3M2MyNSBsZWdhY3ktdHJ1bmsKKzM4NzcwIGI0OWQzOTExMWM0ODZjZWQ4MzkxYzc5Y2EzNWYyODVhZWM4ZTE2ZTcgbGVnYWN5LXRydW5rCiszODc3MSA1NTM1Y2UwZmY3ZjlmNmY1ZGU5ODAxNDI2OGUwMGI1NzVmODgwZjAyIGxlZ2FjeS10cnVuaworMzg3NzIgZGE0NjA4NDFiNjNjYjgzZDYxN2JhZGY4OGZiZGIxMmQ4ZGFkYWM5ZiByZWxlYXNlMjQtbWFpbnQKKzM4NzczIGJjOWZiYzIzY2Q0YTU5OTE4ZGIxMjcxYjA4NjRkNDBiNGRkOTU2YTMgbGVnYWN5LXRydW5rCiszODc3NCBiNjQ5OTczZDA5NjJlYjA3YjU4OWJlZjM0MjVmYWU2M2ZkZDk5NDM1IGxlZ2FjeS10cnVuaworMzg3NzUgNmRkMmQxMzZlODQ2NjFjMDc4MzhkNDIzMzkzNDE0MDVlOWIyYzQ1NSBsZWdhY3ktdHJ1bmsKKzM4Nzc2IGU3NjJmZWE3OGNiMjM2M2JlMTYzNWVlNzQ2ZmVhMmY4YzkxNGU1NGIgbGVnYWN5LXRydW5rCiszODc3NyAwMTQzZDk5MGQ2MGNjNjAxMjBlNDZiNGExMTMwN2E5NzNjYmM2YzBjIGxlZ2FjeS10cnVuaworMzg3NzggMThkYzkxNTgxNjBkNWI3ODc5NDdhMzBjNzYwNThmNjYwMzNlMTdhMyBsZWdhY3ktdHJ1bmsKKzM4Nzc5IDVhNTIyMjI1YzRkYjM1OWZiN2Q1ODM4NWUzNGRjMmMzMzYwOWRjMTcgcmVsZWFzZTI0LW1haW50CiszODc4MCAyMGIzYzcyMzUwMmFkNGIzOWYzODM4MWI4ZTQ0YzBiZWNiMWQ4Y2RkIGxlZ2FjeS10cnVuaworMzg3ODEgYzJhOWMzYTE4NDc3NmZjNjE0MjY1NmU1MDBiMjNjZTcyM2NmYTJkNyByZWxlYXNlMjQtbWFpbnQKKzM4NzgyIDlhN2Y0NmM0Mjc3MzE0Zjc0ZDU5ZjZiYzEyNGRmYTQ3YjY5NWQ5MWMgbGVnYWN5LXRydW5rCiszODc4MyBiOTk2NzQ3YzA4YjY4OTE1MDIwNjU0MWRiNTJjODM5YTFlMWJiNDliIHJlbGVhc2UyNC1tYWludAorMzg3ODQgYWY1ZDQ4MDE0YjNlNjM2NTg2YTg2NmM1ZDUxODA3YjE3YTEyZjcyZSBsZWdhY3ktdHJ1bmsKKzM4Nzg1IDViYzkxYmIyNDRiMTkwMmZmNDMxZjcxNWNiZmI2YjdmNDBiNjQzNjQgbGVnYWN5LXRydW5rCiszODc4NiA2NGJjNWE5MjJmNTc5MWI0Yjg3NWNlYzBkYWU3YjE4NTdhNzU3NzQ2IGxlZ2FjeS10cnVuaworMzg3ODcgMTQzY2RhNWE5MzQ4MWZkZjA3MzJlZjRjYzYwMTg0ZjY5NGYwMjU1ZSBsZWdhY3ktdHJ1bmsKKzM4Nzg4IDAzNjEzMDk3YjljYjM0NTQxMGY1NDdmNDYwYjA1NTZiNjM3MDAwYmUgbGVnYWN5LXRydW5rCiszODc4OSA3OTIwMWY4MjBlZDA0YTkwZGFhY2RjYWQ0NjE2ZjVhZjA5ZDhlMmIyIGxlZ2FjeS10cnVuaworMzg3OTAgYWQ2YWEyZWVjYjU2OWIxNDUyNjNlZTlkMTBiYjNhOTRjZjI4M2ZiYyBsZWdhY3ktdHJ1bmsKKzM4NzkxIDA3NmE3YzdmZTI4YjgxMGI1MDAwMDU5ZWQ4MGMzZDNiOTMzZjk1ZTggbGVnYWN5LXRydW5rCiszODc5MiA3YzI3ODBjOWU1MWJkZjMzYTVlYjFhOWJmODM1NDZlNTA3YjIzMTNkIGxlZ2FjeS10cnVuaworMzg3OTMgODYyZWJiNjIxMzU1MTA5MjU4YWI5NDk0ZWU3MTc5MTQyNzJkZDZhNiBsZWdhY3ktdHJ1bmsKKzM4Nzk0IDllNjU5Y2I3MjdlYTY4YzlhNTQzOWU4Yzc5NjY3NTE1ZDkyYjIwMDggbGVnYWN5LXRydW5rCiszODc5NSA0NDQ2OGVmYjUyNWVkNTc4NmRiOTg4MjdkMjFkOWFlNjc0YzkxYTkxIGxlZ2FjeS10cnVuaworMzg3OTYgNDhjNzFmZjM4NTc4MmNjMjI3MjUzZTJkMGNlODVjMGI0M2U2ZGEzYiBsZWdhY3ktdHJ1bmsKKzM4Nzk3IDE5MjRhMDdmN2YyM2FmN2U5YmM5Y2IxNTEwNDU3Zjc5MDZhMzhjMWYgbGVnYWN5LXRydW5rCiszODc5OCA0MzNkNzM3OGRmYzJmYzIzMTAwZjBhNmU5MWIxYTNiN2E5MGMxNDk5IGxlZ2FjeS10cnVuaworMzg3OTkgNjFlYzhiNzk1NjQxYzRkMmVhNTQzMmYzY2JjYTI3ZWRjMTgxN2Q3NiBsZWdhY3ktdHJ1bmsKKzM4ODAwIDNiYzI4ZjYzNTE3YTRkMDNjMzQ2MDVjMDMwMzVkZmViMWU2MWY1ZWQgcmVsZWFzZTI0LW1haW50CiszODgwMSBkNTIwNzRkODk0ZGYyOTI5NDg3NjkwZGFjMjYyNjFlMzQ0NmE2MDgyIGxlZ2FjeS10cnVuaworMzg4MDIgZmFkMWU4ZTA5NDU2ZDBkNTFlZWNjNDk1NmU0MDQxNTVlN2Q1YTNmNSBsZWdhY3ktdHJ1bmsKKzM4ODAzIGZiY2IxZGE0ODBkZDRiMWFmMmIxN2Q3NzFlZDdhNTE5NzVjNWUxNzUgcmVsZWFzZTI0LW1haW50CiszODgwNCAxYWM5MTRkM2JkYzM5NDhkMzQ1ZTU2YmI3OGM5OTRjZDI1ZGNlYWJkIGxlZ2FjeS10cnVuaworMzg4MDUgZGFkMmI2MjA0OTc0NTU1OWVmOGQ2ODAxYmM1ZjhhMzMxNGFlODI3NCByZWxlYXNlMjQtbWFpbnQKKzM4ODA2IDM0ZjliMmFkYWUyYzZiZmI5NTlhZGFlMzg0YTY4N2EwMmMyODdjZTMgbGVnYWN5LXRydW5rCiszODgwNyAzOGI2NTQ4MzY5ZmFlODVjMmU5OGYwNzVjZjIwOWI3ZDdiNGNjZjdiIGxlZ2FjeS10cnVuaworMzg4MDggY2QzYjk1MjcwOGFmMGY5YWJlODgwOWI2OTQ5NDA4Y2QwY2FhMGYwYyBhc3QtYnJhbmNoCiszODgwOSA0ZTYyOWViZDBlM2U1N2IwZjc5NzQ3ZDA5NmZkMjNiZmU0NDk4MDcwIGxlZ2FjeS10cnVuaworMzg4MTAgMDIwZWQ2NzFhYTYyMTVlYTkxMTYyZmU1NjcxZjRkYTdmMmQ5MWUyNiByZWxlYXNlMjQtbWFpbnQKKzM4ODExIGQ3YTIxMTdmY2E0MjUzNTBlMjg4ZTE1MTY3MTM2NTQwMmJmYjRkYWIgYXN0LWJyYW5jaAorMzg4MTIgYzYwNzI5YTU3OTMyNWY0MzFmZDQzNWRiMmZhMDQyZmI2MjI3NTJiYyBhc3QtYnJhbmNoCiszODgxMyA4ZTZjZDUwMGM4ZmI1YTU0MDgwN2JmNzMzNDMyZTA0NzM4NThiY2YyIGxlZ2FjeS10cnVuaworMzg4MTQgZmM0NDJjMmViMGNmNmRiZDhhZGExZGIxNWUxN2JmZGQ4NjdlMzVhOCBsZWdhY3ktdHJ1bmsKKzM4ODE1IDk4NmQ0NmM0ZmFlYjIyOTA5OGM3NjI4ZTkwYzBlNzhhNjMzZjcwOWEgYXN0LWJyYW5jaAorMzg4MTYgYzhhZmRkOTI3MTVjMzI3NzUxNDM3N2UzMmYxMGQ3ZDQ1MTk0MjAxNSBhc3QtYnJhbmNoCiszODgxNyA2MDgzMGFkNjI3NWUyYzgwMGU2Njc3YTQ0N2ViYjk2OWE4MWJmMjJmIHJlbGVhc2UyNC1tYWludAorMzg4MTggYTk5ZWUyNTBlMTBjMWM1NjMzYjhjOWQwNzM3YjczMjQxMzI0MjI4ZSBhc3QtYnJhbmNoCiszODgxOSAzMGYzN2MwZTE1OTI1NmM5YzgzNjYxY2ZjNTM5ZDExNzAyYmI2NGZkIGFzdC1icmFuY2gKKzM4ODIwIGE5NmI1MDE0OThhODA4ZjAyMmNlYjgzZjBhNmE2MDJlOTNkNTIwYzcgYXN0LWJyYW5jaAorMzg4MjEgNWM2MGNiYjY1MzMwY2ZhYTU3OGIwNTQ0ZTljMWQzMThkZDFkNGI0ZiBsZWdhY3ktdHJ1bmsKKzM4ODIyIDcyNjdmYzQwYWRhYzE1M2I3ODNlMzczNzIwYjFiODM4ODg3YzRmOGMgbGVnYWN5LXRydW5rCiszODgyMyBkNDM1ZDIxNGE1OTI0MTQ1MjA3Y2Q1YjQxMjI1MjFjZWEyZWQ0NmE4IHJlbGVhc2UyNC1tYWludAorMzg4MjQgODc3MTlhZTkyODhjZWRiYjk5ODNlZGU1MWJjYzY1MWJkMTRkM2Q4NCBsZWdhY3ktdHJ1bmsKKzM4ODI1IDBmMzA2MWY0OWE5ZTg5YWI2OGY4MGNhOGE5ODE5NDljZjk0NTkwMDUgbGVnYWN5LXRydW5rCiszODgyNiBhZjU5MGY2MjJjMGJjM2JlNmZlMjkyMTMyZWIyNjQ5NDk0MWM3ODZmIGFzdC1icmFuY2gKKzM4ODI3IGQ0ZmZjNzcxZTlmZjk2ODhkYzQxNjI0ZDUwNjU5NmU0NDRkYmRlOTIgYXN0LWJyYW5jaAorMzg4MjggYjQ3N2M0ZDdhMjBjMWE2ODIwYzE3Y2I5MjgzNGIwZTYwMWJiOTg1ZiByZWxlYXNlMjQtbWFpbnQKKzM4ODI5IGM0ZWExN2NmNTIxMTE1NjQzZjFlM2Q5MjY0Y2ZhZGFiMTY5OWE1ZTYgcmVsZWFzZTI0LW1haW50CiszODgzMCA4YjAzYjA5MTQxZDI4NzE3MWYxZTk2M2YwNmQ2N2NkODcxNjJjMjg4IGxlZ2FjeS10cnVuaworMzg4MzEgYTEzMDk2Yjg1OThiOWE2N2RiNTM2MDIyNjcwNThiN2VlOGE2ODdkYyBsZWdhY3ktdHJ1bmsKKzM4ODMyIDZiZGMzNDI2ZDQxMTNmMTI1ZTBiY2E0OWUwMTExODc0ZTU1YTJmODEgcmVsZWFzZTI0LW1haW50CiszODgzMyBmOWUzMWRiNmM3MDM2MDM2ZWE1YmMzNmY0NDE3OTQwYjk0M2Y1MmM4IGFzdC1icmFuY2gKKzM4ODM0IGZiYjJmM2JiOGNjY2QxNWY0MWU4OTYwYzY5ZDFiY2FlOWQ1NjljMTkgYXN0LWJyYW5jaAorMzg4MzUgMjgwNGFhMDQzOGNjOGQzNmZjM2RlMWM4OWQyMGY5ZTFhNTNmMzA5MCBsZWdhY3ktdHJ1bmsKKzM4ODM2IGFlMjVkNDVmODk4NzYzNTRiZjg0MzI1NmZlMzdmYjZlZDczMWU5NWMgbGVnYWN5LXRydW5rCiszODgzNyA2N2E4OWI0M2RjYzcyM2E1NWI4ZjMzNmI2M2NjNGMxMWJlMDcyYzM5IGxlZ2FjeS10cnVuaworMzg4MzggNGM4ZTUyNDNjYTQyNTMxZTQzOGY5YjFlMDkwMjQ1ZWU5NzBhODMzMyBsZWdhY3ktdHJ1bmsKKzM4ODM5IGQzNGJkZWQzMTlhYWU1Y2ZmZjQwYjlhY2IzY2Y5ZWFkNWI3ZDMxOGUgbGVnYWN5LXRydW5rCiszODg0MCBiYzEyM2I5Y2VmN2ZhOTY5YzdiMDIyOWExZjFlMjNhYjY0YmEzZTYyIGxlZ2FjeS10cnVuaworMzg4NDEgYzY2YTdmYmUxNmNmOWU1MWM5YjExMDQ5MDMyYzU2NDkwMGRhYTVjMiBsZWdhY3ktdHJ1bmsKKzM4ODQyIDEzMzFjNzc5OTY0MDkzNjJkZGM3YTY5NDYxNDgwMGU5YjAxZWI0N2EgbGVnYWN5LXRydW5rCiszODg0MyA3ZjcyMTA5ZGZiNGZhZmM3OGUyMTEzYTJkMjY0YWQ5MjVlODgzMThmIHJlbGVhc2UyNC1tYWludAorMzg4NDQgZDA1NWY5NGQwOTM2YTY5MGYyMWYxZDZlYTc1MTM2ZDc2MjEyYTU5OCByZWxlYXNlMjMtbWFpbnQKKzM4ODQ1IDk4NTdkYWEyMjgwN2I3MzliYjA1YTllZGM1NmNjMmU2MmQ5M2Y3MjUgcmVsZWFzZTI0LW1haW50CiszODg0NiAzNTgxODQwYzgyZTcwMWI0YjQxZGEzOTBjNTllZmY0NDI3MGVjYzgzIGFzdC1icmFuY2gKKzM4ODQ3IDA4ZTIwZTljNzZmYmYzZWUzN2Q4YWExODMxYzFiNWJiNmVkYjY5MTkgbGVnYWN5LXRydW5rCiszODg0OCAyOTRkYWJjYjM3OWI1MWJlN2NjNDFhYzIzMWUwYjEyNzI1ZWJlMjJmIGxlZ2FjeS10cnVuaworMzg4NDkgOWExYjFlMWFlNjUzZmM5NTYzMTM0NzMyMmFiNGY3YjU5YzM0NTU3ZCBsZWdhY3ktdHJ1bmsKKzM4ODUwIDQ5YzZkY2VkMDhjMjFmNDQzYjZhNTQxNDFlZGYxYWYxNjZiMzcwOTYgYXN0LWJyYW5jaAorMzg4NTEgYzFhOGMyZDdlNTI4YmRiNzk3MGY1MmQ1ODA0OGFjOTI1ZTVjN2VjNCBsZWdhY3ktdHJ1bmsKKzM4ODUyIGFhZWFiMjQ5Yzg2YWQzMjdlZjEyNzJjMzBmZjdiMDU0ODY5OGQxNTcgcmVsZWFzZTI0LW1haW50CiszODg1MyBlYzk3ZTRjMzcwNTYzYWY5N2QyNjQ4ODQ0NjY5NWYzOTZlNjA4NDY4IGxlZ2FjeS10cnVuaworMzg4NTQgNWNjYzg3NzdjZWEyNzE1Nzk2ZTMzZDI2YzYxMWFiOGY2NDE0MTFiZSByZWxlYXNlMjQtbWFpbnQKKzM4ODU1IGE1MTg1YWMxZTRlYzZjYWZjN2QyZTU0ODI4ZTc1MjYzMDNjM2FmMTkgYXN0LWJyYW5jaAorMzg4NTYgMTBhZjE2NTgzYjc1NTU4OWNjMGY0NjI0Zjc0YjI5YjQwMzBiMGQ2ZiBsZWdhY3ktdHJ1bmsKKzM4ODU3IGRhYmE4NWVmNjU0YTQ5YWJjYWIwYTE0NzZkYjIyMzRmMzQ3NGU2YzkgcmVsZWFzZTI0LW1haW50CiszODg1OCBjMGI0ZGU3NDFiMzgzZGZjMzg1ZGE4NTYzZGMxYjZiNzlhNjEwMWIzIHJlbGVhc2UyMy1tYWludAorMzg4NjAgYTEyOTNlZTZlMWRiOWE5NGM4ZmFlOTJlMjFlNmFiNWJjNjM4NGFhZSBsZWdhY3ktdHJ1bmsKKzM4ODYxIDNjNjc5ZDAwODc5ZWJiMWI1MTNiMThlZjZhZWIxNDEyY2Q0MjBmNzcgbGVnYWN5LXRydW5rCiszODg2MiA0NzVmOGFkY2IwMzI5NDBlNmY2NmU0MDdkMTVjZWVjNDI3ODE0NzdiIHJlbGVhc2UyNC1tYWludAorMzg4NjMgNzI4N2I0MTE0NWFlMzc2YTBmY2VhNzAxMjIxNzYwNWFlYjcwNjc2NyBsZWdhY3ktdHJ1bmsKKzM4ODY0IDJjNzQ5OGMyYWU3MDdmZGEzNzJjZDc0NGRkNWYyZmRhOWU4ZDg2MmUgbGVnYWN5LXRydW5rCiszODg2NSA3NGMxMmMxZjM2OTI5NDYxOTM1ODQzODRlYjczYjIzOGY3YmJmOWY1IGxlZ2FjeS10cnVuaworMzg4NjYgOWZlNzgwMWZjOWE0YTIxODkzYTljYTQ2ZTMyMjdlNDRlZTE1YTNlOSBsZWdhY3ktdHJ1bmsKKzM4ODY3IGExNzAwMWY4ZTFiNGViNDExZDQxY2EyZWE1YzQxOTJiZGMxMjlmYzkgbGVnYWN5LXRydW5rCiszODg2OCA5YzkxNzJiZTFmNjk3NWViYjViNDI0MjQ2YTE3YjRlOTQxZjA0MTYwIHJlbGVhc2UyNC1tYWludAorMzg4NjkgZTRlMGNmZjE2YmM3ZTk3Yjk3NDJlN2NjM2ZmNTg4OGNkYzFmOTk0NiBsZWdhY3ktdHJ1bmsKKzM4ODcwIDc1ZjUxOTYxMDk3YjlkOTc1OGQwNDE4Mzk1Njc4NTI2MDhiNDRmYjggbGVnYWN5LXRydW5rCiszODg3MSAxZTdhNmE1YzM2MTQzZTRjZjY5ZTk2N2I2M2JkZTNjM2NjM2RjNDhiIHJlbGVhc2UyNC1tYWludAorMzg4NzIgYjExNjMzOWRkZjI3ODVmMzQxMTcwZjhiZDk1ZTM3OWZiMGJhOGFiNyBsZWdhY3ktdHJ1bmsKKzM4ODczIDM2NThhN2UxMWMxNDhkODNjMDhhYjgzZjA5YTNiNWVjMGVkNzA3OTUgcmVsZWFzZTI0LW1haW50CiszODg3NCBhZTVmMjc0NDZmODE5MjQ3NTNkZGRlMWJiMmE0MTAzYmZmNmY4NjA0IGxlZ2FjeS10cnVuaworMzg4NzUgZjMzMDA3ODY0MjQzZjA5NjA2Njg5MTYwNzhlODAwYzRjYTUwNTZjNiByZWxlYXNlMjQtbWFpbnQKKzM4ODc2IDkzMzljOTlhMjk4MjgxMDdhN2FjOTNlZmE4MmY0Y2RjYWMwYjU0ZTAgbGVnYWN5LXRydW5rCiszODg3NyA0MDQwODg1MDNhNzgwMjk2YTExZDJkMTIxMDczMzQ5MDI5MWNmZmE3IGxlZ2FjeS10cnVuaworMzg4NzggMzc2N2NkYWE2NzI4MjQ4Y2FlZWExNmU5NGQyMzY4NTRkYTcxZmU0YyBsZWdhY3ktdHJ1bmsKKzM4ODc5IGM5MWU1ZTMxYzVmZjFjMmFmYmIwYzdmNzU4MzZkMDcwOTY1YWVhMjYgbGVnYWN5LXRydW5rCiszODg4MCA2YmEyOTNiNzExNWI3OWVkMjFlOWM3NjAzODE1OWJkNmUwNzIxNzJhIGxlZ2FjeS10cnVuaworMzg4ODEgODBmYjI4OTFiMzNiZmNiMTEzYjBjNDMzODI1OTcyOTVkNzU1NjdkNiBsZWdhY3ktdHJ1bmsKKzM4ODgyIDRhMzNjNThjMzE5YzA4Yjg2MTgzYTVlYTkyMThjODA0Zjc5M2IzOTggbGVnYWN5LXRydW5rCiszODg4MyAwNDc0MzRhY2I1YTkxOWQzNjQwNjFhNjY4OTM3N2UyNjY3MzlkZTNiIGxlZ2FjeS10cnVuaworMzg4ODQgNTBiZWQ2NzhlZGRhMmQ3ZjIwODJiNmM4MzY1NTdhYTIwYTVhMTJhMSBsZWdhY3ktdHJ1bmsKKzM4ODg1IDFlYTgwNzc2OTMyOTJkMDE3MGUzNjVhYzllYmI3MDNkNzgwZjFmZTcgcmVsZWFzZTI0LW1haW50CiszODg4NiBmNmFmOTQzMDFlYmMyNzUxOTNkYmUwNDljY2JhYjJhMzRhOTBkZGU2IGxlZ2FjeS10cnVuaworMzg4ODcgMTQ1YzAzYTg1ZWE4Mzg3MjUxZTBjMDk1MzM4N2EzOGRiNmVmNDJkOSByZWxlYXNlMjQtbWFpbnQKKzM4ODg4IDkzNjI5NzcwYTkzZjQ2NzlkNGQ2YTdiOTQ4MjMyYjZkMjY3NjNjOTYgbGVnYWN5LXRydW5rCiszODg4OSA4NmY0YjE4MTdjYWE2OWM2YWEwYzU0MTQzOWNiNmU0NmIwNjYxYTM2IGxlZ2FjeS10cnVuaworMzg4OTAgNjcyZTVmNjUxNzJjMmYxNjlhMWJkNDg2NDFlM2M0NzliYzZlYjgzOSByZWxlYXNlMjQtbWFpbnQKKzM4ODkxIGQ0NTE1NTQ3OTk3NjY2YzBhZjhlY2YyYmUwODNjNGUwYzZjZjRmYjcgcmVsZWFzZTI0LW1haW50CiszODg5MiAwOTA1ODEyZGY0YTVmMTQ5MjVkNTExN2Q0MmIyOTdjMmViMTZlMjQ2IGxlZ2FjeS10cnVuaworMzg4OTMgMWRkOGEwZDY0NDMyMWNiZDAzZTU4YWY0OTY3N2Y1MjA4MWJkY2FlYyBsZWdhY3ktdHJ1bmsKKzM4ODk0IDkxNjUxNjk4MTI2MTA2MWZlMDY1MmVjNDZkNjYxZTVmZTNiYzIxNjQgbGVnYWN5LXRydW5rCiszODg5NSAzOGQwNGVkMDI4ZDFlZjVhZmY1MzExM2EzMjNhYzhlMDc4ZWRmYzkxIGxlZ2FjeS10cnVuaworMzg4OTYgNWU1MTFkZGVmNDhiMmRiNWQ2YjkwZDNiYzA5OTg1ODdlMWNkNWM4NSByZWxlYXNlMjQtbWFpbnQKKzM4ODk3IDE4NzNlOGFmNWE4YWMyMTU0ZDUyYWYwNTgzNzVmNmZjNzY0YTE1YjggbGVnYWN5LXRydW5rCiszODg5OCAzY2FiYTgwNzIwNGJiYzg4MGJmYjVmMTY1ZTRkNjllYjNkOWYxOGM4IGxlZ2FjeS10cnVuaworMzg4OTkgMGIwMWVlODZjY2ZkODhmYmY5ZmY1NTIxMGVhYTIwZmJmZmQ2MjIzZCBsZWdhY3ktdHJ1bmsKKzM4OTAwIGEyOTFhZDlhYTZhMTBjMDE4MWE4YTgxNWIzOTY3NzAyMGQ3MWNmN2MgcmVsZWFzZTI0LW1haW50CiszODkwMSA5YTA3ZjZkNDgxNmFiMWNkYjE4ZjNjMTUyYzQyODk2MzdhOTVkNDNiIHJlbGVhc2UyMy1tYWludAorMzg5MDIgMTg0ZjEwZTExNmZmZjk0MzU1MWU1ZWY1YWZiMjc5MjQ5YjNjMDQ1NiBsZWdhY3ktdHJ1bmsKKzM4OTAzIGVmOTMwY2FlNjNhOGUyMWJlNTJkOTliMjc0YWFhMjAwNTZmZGRkZDIgbGVnYWN5LXRydW5rCiszODkwNCA2NmUwNDE0Y2RmYTZhYjA4OGMyOWU1NzA2NmZlY2FhZmIxNDRhOGNiIHJlbGVhc2UyNC1tYWludAorMzg5MDUgMTY5OWRjNTFhNWI1NzY5YzY1OTg1ZWRkN2E4ZTAwNDFlYjJiYTc5MyBsZWdhY3ktdHJ1bmsKKzM4OTA2IGIxNDFkNTdjNGZjYTk2YzAxODU0YTRkOTdiNmE3ZWU3NjdjYzM0NzIgcmVsZWFzZTI0LW1haW50CiszODkwNyA5ODU0NDcyYjkyMWJhNDdiMTdhOTY2Mzk1ODg0YzFhMTQwMzdjODU4IGxlZ2FjeS10cnVuaworMzg5MDggZWYxODQ1NjJlOGUwM2RlOTYxYjE4NzZhYmE4ZTliZjYyMDJhMmU0NiBsZWdhY3ktdHJ1bmsKKzM4OTA5IGMwOTU4ODhmYzU0M2M4MGM5NTBjMDMwZGNmOTEwZmIzZDI0OWY5ZDcgcmVsZWFzZTI0LW1haW50CiszODkxMCBiMzE3MzZmNjI1YmE3ZjljNzUyODBkNTE1MzFiODY3MTMwZDU0NWU2IGFzdC1icmFuY2gKKzM4OTExIDAyZjEzZTAwZTJlZDEzMDM1ODhlYThkNzllN2ZiZjlkM2MxMzNmYmEgYXN0LWJyYW5jaAorMzg5MTIgOGIwNWE0NzMyY2YzNjFhMzg3NTNlMDlhMDRkZGY5YmE3MjA0MTk2ZiBsZWdhY3ktdHJ1bmsKKzM4OTEzIDAwY2QzNTBjZjdiZjBjNjJkM2ZlMmVkMWMwZWNjNmJiZDZjYmUyZjkgbGVnYWN5LXRydW5rCiszODkxNCBjMGVhZDI5MThjZjc0NTQwMjQxY2ZjYzFjOWRlMzQ2NWE5NGNlOGMxIGxlZ2FjeS10cnVuaworMzg5MTUgZjcxM2U4YWJmMTRlM2NhNjIzZjkyYzk4ODZkNGZlOGRjNTdjZmY0MCBsZWdhY3ktdHJ1bmsKKzM4OTE2IGEyYjIyMjc3NzNlN2ZlOTRiNzM4NDMyNmMyM2Q5OWEzYzJkMWI1MjEgcmVsZWFzZTI0LW1haW50CiszODkxNyBiNDIzYjQyN2UxN2U4ZDYxYjFlYWY2MGQxMzhmNDE1NDRiNWEyMGU5IGxlZ2FjeS10cnVuaworMzg5MTggN2JjYWJiYjZiNGI3ZWY0M2RhZGI4YTMzMTYzZDc2ZDdmZDA5MmZmNCByZWxlYXNlMjQtbWFpbnQKKzM4OTE5IGUzYWM1ZjBhZDNlM2FjYjllZDJjYzhlZDE2MTM5MDkzZjgyZjZhNWYgbGVnYWN5LXRydW5rCiszODkyMCAyMTI1MWUyMjFlNTYyZjBkY2VjMmMxOTg1OWUzYjljMGQ0MWRhYjkxIHJlbGVhc2UyNC1tYWludAorMzg5MjEgMjVhMGUxZmFhOGE1ZWQ4ZjA5MWZjZjFhMGU2YTExYmU0YzI2Mzk3NCBsZWdhY3ktdHJ1bmsKKzM4OTIyIGZjZDJjMzg0Nzg2OTlmMjMxY2M4ZWZiNjQxMzIwZjViYjdkYTYwOGYgbGVnYWN5LXRydW5rCiszODkyMyAxY2RjMDMzNGQ4NzdjNzFhYmZmMTJmZDRkNjdmZTk5OWYxNDBmMmFiIGxlZ2FjeS10cnVuaworMzg5MjQgMTdhYTI4OTYyYjg1ZGFhMzkzYjFmY2JhYjcwN2UzNjE5MDZjNDk5MSBsZWdhY3ktdHJ1bmsKKzM4OTI1IDFjYTdhZTQ4YTkzMTUxYjQ1ZWZjNWVmNjNlY2RiNGE3YTc2MzY2ODUgcmVsZWFzZTI0LW1haW50CiszODkyNiA1MmZlZDJkMDY0MWE1YmQ4ZWZhNGQ3OGE1MDZkNzYyOGYxMDJiNzhmIHJlbGVhc2UyNC1tYWludAorMzg5MjcgODg4MGQ5MWNkYjA5MzgzYTRmZmYzMjAxNzk3NzQzYWNjYTIxYjA0ZSBsZWdhY3ktdHJ1bmsKKzM4OTI4IDc4ZDBhNTU4YjA5MzgzNGU4NjdkMzA2MmYxNWMyZTRkMDk1ZWVmN2MgcmVsZWFzZTI0LW1haW50CiszODkyOSA2NWM5NWFkNjcyYWU4ZmQ1N2RlMzQ0MDI3YTY2YmY1ZjVmNzYzYTBkIGxlZ2FjeS10cnVuaworMzg5MzAgZGU3NmIzNDNkOWM4MmIyYjZhNzJlOGUwYmJkOGNlNjJiNWM3ZWIxZSByZWxlYXNlMjQtbWFpbnQKKzM4OTMxIDQ0ZTNmMjFmMDUyNTkwZGRmYWJjMTI5MDlhZjUxODhhNGNkODlkOGMgbGVnYWN5LXRydW5rCiszODkzMiAxZmI3NjhlYmQ5MGUyYjJjNmY1ZDY1YjE1YTkwZDRjYWJlNDBhZmRiIGxlZ2FjeS10cnVuaworMzg5MzMgOGU5NjgyZmQ1N2Y4ZWE2OTBjYTQ3MDBlOGEzNWRmYzE0ZWFiMjI5NiBsZWdhY3ktdHJ1bmsKKzM4OTM0IGI3NGExYTUxMjkxNzhhNjFmMzI0NDg1N2JmMWMzNzQwNGJlMDFhMzIgcmVsZWFzZTI0LW1haW50CiszODkzNSBlMzk0ZjdlOGEwYzE1Zjg3MDRiMjdjZDcxMDg0NzY3ODQ1NTY0NzUwIHJlbGVhc2UyNC1tYWludAorMzg5MzYgNGEwMmE0MzE3NjU1NWJhY2EzMDQ1ZDU1NTJhNmZjNzBhZWMyMjhkNCBsZWdhY3ktdHJ1bmsKKzM4OTM3IDI3NTg0MzYzMDUyMjg2ZTE4Yzg3NjAzMmJmZDBmMmVlYjEzOTMyMjkgbGVnYWN5LXRydW5rCiszODkzOCA5MGZjYTA4MTQ1ZDExNDk3ZTY1YTBmNjYxODRiZDQyNjJmNjJiZGYzIGFzdC1icmFuY2gKKzM4OTM5IDYyZWFjOGQ5NTNjZjFhMGYwNjE5NTU5Mzg3MDdmMThkNTQ4YzU1YzcgYXN0LWJyYW5jaAorMzg5NDAgYmFjODk4ZDM5YjUzOGYxMjgyZjU1YmNhMTc0OWQ4OGIwYmY5NDM4MSBsZWdhY3ktdHJ1bmsKKzM4OTQxIGIzOGMyYWE2NmVlN2IzZTRhNzQ5ZmRlMjA0NTFjZjk0OGUwYjQ0MDkgbGVnYWN5LXRydW5rCiszODk0MiA3NWZkOWE1MTU0YzQ2MWUxZDg3ZGViZWI2ZDc2MTY5NGU1MDNkOWU5IGxlZ2FjeS10cnVuaworMzg5NDMgNDBmN2UxZGExYmRmZTU1MmU1NmY4NzQzNTAyNTYzNmQ5ZDJkMTEzMSByZWxlYXNlMjQtbWFpbnQKKzM4OTQ0IGJhNDcyN2RhMDdlNTRlYmE0ZmE4ZTJmMjQ4Y2RhNjAwNDUwN2VlNzIgcmVsZWFzZTI0LW1haW50CiszODk0NSBjYjJiZTQ0MjlhNGNmZDNhYzhjMTk1MjRlNjE5ZGQ2ZDRhMzdiYzZiIGxlZ2FjeS10cnVuaworMzg5NDYgZWE1YzIyODBmOTE1NzQyMzdmM2Q0MWFhMTg4ZmUwMmI1Yjk3MDI2MyBsZWdhY3ktdHJ1bmsKKzM4OTQ3IDBkZjA1ZWFhMWUwOTZlZWNiZDAyMTI3ZjFlNjViNTkzNDczODQxM2QgbGVnYWN5LXRydW5rCiszODk0OCBhYzU2ZDE3YmMzZDE3MGNiMWJmNmVlOWE1YjBmMWU4NzE5OTg0YzRlIHJlbGVhc2UyNC1tYWludAorMzg5NDkgZmNmMDEwYzM3MGNiY2ViNzdjMzVmYWE0OGI3NjFmNDI1MTI4YjIwOCBsZWdhY3ktdHJ1bmsKKzM4OTUwIDVhMWEzMWQ5ZTM3ZTNjMTM5ZGU5N2I5YmFlNGFlODE4ZTQ3MTU2ZDMgbGVnYWN5LXRydW5rCiszODk1MSAyMTViNzg4NWUxMDg1NGM1MTk5Nzc2NmMxZTNhY2FmYjdhNzkyNGRkIGxlZ2FjeS10cnVuaworMzg5NTIgMzI5YjI4YTg1OTQ3NGEzNTA3ZmEzZjI1MWJjYTI1NmQ5OTgwZDg4OSBsZWdhY3ktdHJ1bmsKKzM4OTUzIGUwMzcxNDgwNDg0NWI5MjllOGNjZTVmMDAwYTYxZDRlNTI4MjEwYmUgbGVnYWN5LXRydW5rCiszODk1NCA4YmZlYmNmMDYzNjM3MDE0NTExZTFlNGMwZjc5Yzc4MGY3MDcxMGEwIGxlZ2FjeS10cnVuaworMzg5NTUgYTQ5Yjg4ZTUwMzA1OThmOTQzMjM0OTVmNGNlZGYxYTZhOWZkNzMwOSBsZWdhY3ktdHJ1bmsKKzM4OTU2IGI3M2YxMzBjN2I4NDA1OGU2N2EzNTI0NGU2YjQ0ZjgwZGJhZjVkMWIgbGVnYWN5LXRydW5rCiszODk1NyBkNGRhYWJhYmFhNDVhNWZkZjc0NWRmMGZkZmZjODJiODcxNzM1OTk5IGxlZ2FjeS10cnVuaworMzg5NTggMjlkM2RlZjNhNTZhYjVhMmRjNDBhODgzNWZlNzAzYjU1MzJlYTc4ZiBsZWdhY3ktdHJ1bmsKKzM4OTU5IGYzYjAyMjIyYTgwYTIwNDMyMmVkNzc4MWRhOGYyMWYxMmY5MjAxNTUgbGVnYWN5LXRydW5rCiszODk2MCBjNTU4OTk4NjNiOWM3OWU5YzA2MjI3OTkwNDFiOTc0MWYzMjE4MjMxIGxlZ2FjeS10cnVuaworMzg5NjEgMTlhNTA5MWYyNjU4MDY0MDY1MDc4ZTA1OGNmYjJkZTU0ZWYxY2UzOSByZWxlYXNlMjQtbWFpbnQKKzM4OTYyIDU1NTQ1MTFiMzcyNTQ5MTFhNjg2NDE2MjFhMTUzZjE0Mzg1OGQxZmYgbGVnYWN5LXRydW5rCiszODk2MyAwODc3MzVmODY3MDFjMTlkNDMwMWFjMDkwN2M5MjAzMDYzNzY4NTMzIHJlbGVhc2UyNC1tYWludAorMzg5NjQgZDYwNDdlNTVmN2FkM2Q2Y2UxZmNkY2NjOTJhYTkyMTEyZjc2NWQ4NCBsZWdhY3ktdHJ1bmsKKzM4OTY1IDNiNDFiZDg3ODkxOGQwMzA5OGYzNDFhYWUyZDcxZjk1ODk1ZWZjYWYgcmVsZWFzZTI0LW1haW50CiszODk2NiAxNDkwZjgxMWY5M2E5NGE1NjExMDllNjZiMGUwODI2YWUzZDZmY2I1IGxlZ2FjeS10cnVuaworMzg5NjcgNzNmMjRmNWM0ZTNmOTMyNThmMGEzZGZmMmYwMDBhYThkMWQwOTVjZCBsZWdhY3ktdHJ1bmsKKzM4OTY4IGMwNWU0NWU4NzI0ZTJmZTRhMmFkNDA1Njc2ZTU1MzgzM2NjNTU1NjIgcmVsZWFzZTI0LW1haW50CiszODk2OSA1NTU0NWUwMjMxOTlmYzA2YTUwMTZjZjNlMjk0YjkwNzY0NDQ1MGZiIGxlZ2FjeS10cnVuaworMzg5NzAgNTYwODg3NDk3MjFhOGFkN2I3YTg3ZTdjOWNlMjk3MzVhYWZkNjNjOSByZWxlYXNlMjQtbWFpbnQKKzM4OTcxIGQ0MzBiMjk2NDFiYTQwYmU0ZjNmN2QxNzZjNzEzMTVjMmY4OGVhMjMgbGVnYWN5LXRydW5rCiszODk3MiA2NjI0ODhkNDE4N2RiNjg4YTI1MjUwZmVhOGI3M2U2ODA3ZjFlMjczIHJlbGVhc2UyNC1tYWludAorMzg5NzMgODIzNzNkMjUyNWVlMGJkYmE0OTk0ZDNjNTUwZmI4MDdlODllMzQyMyBsZWdhY3ktdHJ1bmsKKzM4OTc0IDVmNzYzZjllNTBmOTM3MGRlODNiOGI3YjJkNmQ5MjEyMGI5MmM2OGUgYXN0LWJyYW5jaAorMzg5NzUgZjIzMDA3ZjkyMTdiMTM1ZTEwZWJjOGU0MDc0ZGI5MWQxZDExYmYyNiBhc3QtYnJhbmNoCiszODk3NiA4YWU4ZTY0Y2E5YmQ0ZDg3NTRjOWVmYjk5MTc0M2Y3NThiNTE4MDkzIGxlZ2FjeS10cnVuaworMzg5NzcgZTc5NzkzYThlZWVhYjVjOTg1MmY1Y2M2Y2M1OGFlMGI0ZDJlNDE2YiBsZWdhY3ktdHJ1bmsKKzM4OTc4IDRmZGE0MDYzY2M4Y2MyYzdjZTVmZTlkMjczY2EwMzFlNzIxZjcyNmYgcmVsZWFzZTI0LW1haW50CiszODk3OSBlYzRjMTZmZTczODRjZWQ1NjVhOWJjYmNlZjhiY2ZhYjY2MmY3MjdiIGxlZ2FjeS10cnVuaworMzg5ODAgNWU0NWRjYmY3Y2ZmZDA0YzNlMmZmNDMxYWE0Mjc1MWNiOGI3NDcyYiBsZWdhY3ktdHJ1bmsKKzM4OTgxIDc0OGM4ZTJkNDBlZWMwNWNkNWZlMTlhYzI4OTg3NzFmNjcyNmViYzggbGVnYWN5LXRydW5rCiszODk4MiBjYTVlZjdlZTNmNDE3YWMzMTFjY2YxMDk0OWJmNDcxZmE4NGZhYTMzIGxlZ2FjeS10cnVuaworMzg5ODMgZWU5OWRiMDZjMGViY2ZkODZhYzVkYjkzYzY2MmI0ZTNiMTAxNjNkMSByZWxlYXNlMjQtbWFpbnQKKzM4OTg0IGM1NTUxMGRhZWJkMjUyZDQxN2I0YWE2YjYwMGE3ZjAyZmQwMmMwOTQgbGVnYWN5LXRydW5rCiszODk4NSA4MDc2NDI0ZDQ1NWQwZWIzN2I3MWUyNDNiNGE3YWZkYzlkYzFmODBjIGxlZ2FjeS10cnVuaworMzg5ODYgMDc4ZGE0NzRiMzAyMTMzYTMxYzlmODJkN2NlOWYzYTkwNmZhZDJkOCBsZWdhY3ktdHJ1bmsKKzM4OTg3IDJlYjU2OWI2Y2UyMzRhODZkNjliZmRkYTQwZTFkOTEyNDZiYjhmMzEgbGVnYWN5LXRydW5rCiszODk4OCA5MjRlMDI4MmI1N2U5ODM1ZWM2YTExZjg3ZmU0ODBmMWNiYjFlYjE3IGxlZ2FjeS10cnVuaworMzg5ODkgOTJjZDk1MWNjNGIxOGQ4YjJhM2M4OTM5NGRhNGI4ZjNlYjJlMDdlMyByZWxlYXNlMjQtbWFpbnQKKzM4OTkwIDg1MTQ1OGZmZmQzNDIxMGY2MjBlYjM4MGUxMWM2YWEzMzM0OTZhM2MgbGVnYWN5LXRydW5rCiszODk5MSAxNzNlOTBlMGQyZTMxZDdkOGI0MDY2NjAwNDZjNDY2MzU3N2VhZmQ1IGxlZ2FjeS10cnVuaworMzg5OTIgYWExYzUzNjY2MDdkNmY1YTk0ZTlkMzI3YWZkYWJkNGExY2JmMjVjMCBsZWdhY3ktdHJ1bmsKKzM4OTkzIGEyYjUwNDVkZjRmODU2ODBiZjBmZDZkMDAzODM4MGJjZThmOGU1OTUgcmVsZWFzZTI0LW1haW50CiszODk5NCA3NGE4NDU4YjIyNzYwMmY5YjRkNTVmOGQ1MGFhY2E5YWZlZDllOTUxIHJlbGVhc2UyNC1tYWludAorMzg5OTUgYWJlNWE1ZTM5Y2NjN2RhZDIzZmRlYTg5Yzc2N2JmOWJlNDc5OTVlOSBsZWdhY3ktdHJ1bmsKKzM4OTk2IDkxYjhjZGJmZDdiNDY1OTQwMWY5YWYxNzQ4YWY0MTc2YmY2ZjViYTggcmVsZWFzZTI0LW1haW50CiszODk5NyAxMzMyZjJlNzA1YjIxNmVkMWY0NWViOWIyMzdjNmEyYjA5YTc4Y2UzIGxlZ2FjeS10cnVuaworMzg5OTggODM1YWIwNjk4NGE5YzhkOGY2NWExYzEyNzQ1M2FkZTFmM2M4NDE0NyBsZWdhY3ktdHJ1bmsKKzM4OTk5IDVmYjIxNjMyMzFkMzM1ZDU5YzE1YWY2NDViNzFjMGFkNGUzYjZkMDEgbGVnYWN5LXRydW5rCiszOTAwMCBkYjE2NzZmZGI1YjkxYzA2NDAwYzM3MjRhODJhNmMyNDM3MGJkNDUzIGxlZ2FjeS10cnVuaworMzkwMDEgZjg5Y2JlNjlkYjYzZmEyNWJhYzhhZWE2ODZkYjJhZjY3MzMwN2M2OSByZWxlYXNlMjQtbWFpbnQKKzM5MDAyIDUxZmUyNDEzODQ4NmU5NTRjYzI2YmI5NDU2M2UwYjM1ZTljOGM4MzcgbGVnYWN5LXRydW5rCiszOTAwMyBjNDI1Y2RjOGFlOGE3Y2E4ODZjMWE4NGQyNGE1NTU4OGVhOGEyNGNkIHJlbGVhc2UyNC1tYWludAorMzkwMDQgNGY1ZDI2ZjVlM2U2NDUyZmQyMTUzMzNmNDQ5YWU5NTczYTkwM2RhZCBsZWdhY3ktdHJ1bmsKKzM5MDA1IDQ2NjZiNDU3NGM5Y2I1ODNmZmE2NTAzYzIzOTNhNDhhODM1ZmRkYjUgbGVnYWN5LXRydW5rCiszOTAwNiA2OTY0NTgyNDBhNjVlYzRjMzdkODA1NmVjODI4MTkzYjg5YTNiOTY0IHJlbGVhc2UyNC1tYWludAorMzkwMDcgMGE5YTQxMGJmNzRjYmIwMzhiNTQ2ZDc5ZWRmODJiOGM4YzMwOWE1NyBsZWdhY3ktdHJ1bmsKKzM5MDA4IDJiNTE4NmI1OTViMWFkZGRkYTdmMDUyMmU5MmIwNDVhZTg0MTU3MDIgbGVnYWN5LXRydW5rCiszOTAwOSAyN2FhNWVlYzU0MDA0ZDdjMzIzZTY1NzYyZDkzMzg1NGI5ZjhmNzA1IGxlZ2FjeS10cnVuaworMzkwMTAgZDFiYWMyMGMwYjlmNGUxMmJmYzE4ODBmNDI4ZWI1NTAxZWY3MzBhYiBsZWdhY3ktdHJ1bmsKKzM5MDExIGFiZTk2ODYzMjVjMzhiYTA4MzZiMzM3NWUyMmNlMGM1YWU3MWNjYjUgcmVsZWFzZTI0LW1haW50CiszOTAxMiAyMDE1ZDE2ZDI2NDcwNDZiNTJmYmZmMDVlNzZjNGY2MjhiYTkxZjk4IGxlZ2FjeS10cnVuaworMzkwMTMgYzZiN2ZhZGYwYWRhZTI3ZmVjNTU2YTBhNDMxZjIxMWE2YmE0NTJiYSBsZWdhY3ktdHJ1bmsKKzM5MDE0IDE3Y2NhYzY5NTQxMzQwMDBhYzk5MzlmNDhmZGI5NGQ3ZjFlZTUzYzAgbGVnYWN5LXRydW5rCiszOTAxNSA0YTVmMTgxYWMzMjQwOGFkMWZlYWY2YmI5NmIzNTg2NTRjNmU1ODk1IHJlbGVhc2UyNC1tYWludAorMzkwMTYgYTUzNTg3Mjk1ZjIwNTk2NTk2MjAzZWQxZjliZWY4MTBlYmVlMDEwNiBsZWdhY3ktdHJ1bmsKKzM5MDE3IDMyMzhhZTZkMmIzMDQyMzMzOWYzNzEzOTQ4MGM2ZDMxYTNmYjZlZGMgcmVsZWFzZTI0LW1haW50CiszOTAxOCA0Mzg0ZTU4NzkxMjYxNDE5OWMxMzkzZDJhNzQ0ZDc1OTc1NWNjNTkyIGxlZ2FjeS10cnVuaworMzkwMTkgNjhiY2U2OGM4ZjkzMjc4ZmY1YmRlZGMyYzVhMGZiOTA1MThjNjQ1NiByZWxlYXNlMjQtbWFpbnQKKzM5MDIwIGIyYmQwNWMwMWEzNTFjZjgzYjJiMTFiMTc3ZjQ0MDE1NTUxYWM2MzggbGVnYWN5LXRydW5rCiszOTAyMSA5ODE3OWM4MjgxY2RiNjEzMjYwYWM0ZDJiMzdkMWI4MmM0OTg2OWQzIHJlbGVhc2UyNC1tYWludAorMzkwMjIgODM0MWNlZmRlY2FjZThjMzJhYWZlOTkyYjIxOGQwZjNhNDE2ZWQyZiBsZWdhY3ktdHJ1bmsKKzM5MDIzIGYwYWUxMTk0ZGI2OWVhNWU1ZTE3YTNkODFjZDYwYTVmYzhlMjc1ZjEgcmVsZWFzZTI0LW1haW50CiszOTAyNCA4NjBkN2Y5M2U2YjRjOWFlYTQ1YjNkMjBkMDFlOTAyMTRlNjAyMGVhIGxlZ2FjeS10cnVuaworMzkwMjUgNTZhYzQzZDlkNjI1OGIxYTYwNmE1OTEwZjlmN2M2N2UzMzdkZTg0MSBsZWdhY3ktdHJ1bmsKKzM5MDI2IDE3MTRjMjQ5OTI4ZWY4YTBkNWE2Njk4NTBlMzc5YjlmZDIwNGIwYTQgbGVnYWN5LXRydW5rCiszOTAyNyAyZDA2OTNiOWYwYmQ4Yzc5NGQ0OWZhMzA1ZDBiNDk3MmVkYzg3OTkyIGxlZ2FjeS10cnVuaworMzkwMjggZjU1ODlmYzNkOTc3MTQ4M2IzZGFmODI2OWY3ZjAyOGQwNTNkMDQ2ZSBsZWdhY3ktdHJ1bmsKKzM5MDI5IGFjZjY4ZjY3Yjk3NWM3NTFhY2JiYzYwYWJkNWQ5Y2FiYjUyNDMzYWQgcmVsZWFzZTI0LW1haW50CiszOTAzMCAyMzRiMjJhMmFjZjNiNzk2MmVhYTA0NzRiN2MyZTdlNTcwMDU3Y2IxIGxlZ2FjeS10cnVuaworMzkwMzEgMmU5ZTY0MmE1OGNlZDFmODliNGU0ZDg3ODRhOGE5MjgwMTdiODk4YiBsZWdhY3ktdHJ1bmsKKzM5MDMyIDRjMjM3NjIwMTExNWQ1YWFiOTI0MjMwYzk4ZDhmZDNiNzQzMzg5OGEgbGVnYWN5LXRydW5rCiszOTAzMyA1MjJjOWE0OTA0NDEzYzk4OTM1ZTFkMjc3MzIzZTE1YmIzZmI1ZjAwIHJlbGVhc2UyNC1tYWludAorMzkwMzQgMDlhOTEwY2I2YzhmZjAzYjgxNTdiMjg5NzlkZDA3YzZkZDkyMjJkMCByZWxlYXNlMjQtbWFpbnQKKzM5MDM1IDk3M2FhNGVlMTYxNTJhZGEzNzY2MmFjNmQwZjZiZTUyNWVjMzk5MDcgbGVnYWN5LXRydW5rCiszOTAzNiBiNmQyYTlkMWE5MzNhN2MwZjhiMzUzZjM0MjEyNzQwYzMyYzMzOTQ1IGxlZ2FjeS10cnVuaworMzkwMzcgZjNkMzE1MWY4NDE3OWYxZmZiNmVkZjFmNTIxZTA1MWY1MGY5MDQ4NSByZWxlYXNlMjQtbWFpbnQKKzM5MDM4IGFiODNhYjI3YzgzN2I2NDFjMGEzOWM0YjBlMjFiOGU1YzMzZWRmOGEgbGVnYWN5LXRydW5rCiszOTAzOSA1ODYzMjA5MmUwMjMyNzBjOWFmMzQxYmU0M2JiNzRjMTFiZGM2NmUzIGxlZ2FjeS10cnVuaworMzkwNDAgYWRmMTg5ZWI0ZjU4YThlNTk3MzdmZmYwNmU4MmM5NDExZmMwNjU1MCBsZWdhY3ktdHJ1bmsKKzM5MDQxIDU4NTA1OWRlMmI0MDRhZGZjOWE5YjlkMjY0N2Y2NmJiYThiMjc4NGQgbGVnYWN5LXRydW5rCiszOTA0MiBiZmM5MWQ0YWY2NDUzMmEwZTFkYTg1NzI2NmYwZjUwZTY1MTNhNTBhIGxlZ2FjeS10cnVuaworMzkwNDMgMmZiMGM3NmQwMjUxYTFhNzAyNjU4ODJmZDgxMTE1NzZmNTgzZDk5NiBsZWdhY3ktdHJ1bmsKKzM5MDQ0IDdlYTJiZTJjMGUxZGUwZjdhYzhiY2U4NjAwY2JkMmIxNDQ3MWVjYjYgbGVnYWN5LXRydW5rCiszOTA0NSAyZDgzMzEyM2IxMTkwNjM4Yjg4Y2NkZjkyMDJiZDg5Nzc4NWVkMjhmIGxlZ2FjeS10cnVuaworMzkwNDYgMDQ4Njg5NTlmMWZlNjgzMmNjOTk0OWEzY2JiNWUzYTMzNTdhN2JmYyBsZWdhY3ktdHJ1bmsKKzM5MDQ3IGRhNzcyMDA3ZDM0ZDgwNTlkOTYyM2IyNjI0ZThiYTYwM2E3ZDhmNjIgcmVsZWFzZTI0LW1haW50CiszOTA0OCAwZWM3MTE1MmM3ZTJiZTEwMWUxNTkyZGE3YzZmOTMxZjhhNDFiMDBlIGxlZ2FjeS10cnVuaworMzkwNDkgMmVlNjNmZjQ1OTcwZmRlMzM3MDIyODA5Y2I5MDQ4ZmU1MDE5ZmE1NyBsZWdhY3ktdHJ1bmsKKzM5MDUwIDUzNGY4ZWE1NzM3N2VhODkzMWQ1YjI5N2I2YzdjYjVlNzQ5ZDMwNTggbGVnYWN5LXRydW5rCiszOTA1MSBkYjJjZjc1OTk0OGFmMjUxMmI1YzIwM2IwYzZmZTY0YTVkOTRkYjlmIGxlZ2FjeS10cnVuaworMzkwNTIgY2RlYzk3OGI5MTZjZTI1YjcxNTMwYWZmMjA1YzhkODNmOGM2NThiMyBsZWdhY3ktdHJ1bmsKKzM5MDUzIDcwNjgxMjY3YTc0YTlhNjM3NjE1MzE1NWQ3ODdiNTljY2U1YzA4NzggbGVnYWN5LXRydW5rCiszOTA1NCAzZTBkZDYyZWUzMWJmN2NkODY0NDVmY2YzOTk4ZjM2YzY2OGZlMGM2IGxlZ2FjeS10cnVuaworMzkwNTUgMDA4N2FmMDk1M2Y0ZGM1ZGE5ZTI3NWRlYjIxNWUzOWJkZDEyYzQyNiByZWxlYXNlMjQtbWFpbnQKKzM5MDU2IDVkMzNkODNlOGRlYzhhOTRhMGQ5Y2EzOWU2ZjNkNzJlNjhhMWIyNDUgbGVnYWN5LXRydW5rCiszOTA1NyA2ZTkzNDQyZTI2ZGQwM2Y0OWI2NTViY2NkYzY5NjUyNzFmNDhiYWI2IGxlZ2FjeS10cnVuaworMzkwNTggMDEyYTBhZGEwZDA1ZmU4MmY0YTMxYTgyNzE1Njg1ZWE2OThjYTlkZiByZWxlYXNlMjQtbWFpbnQKKzM5MDU5IDJjYjYyODYwMDA1ZjYwMGE0MDlhZGJhZjAwMGM3MTU3NGMzZjYxY2MgbGVnYWN5LXRydW5rCiszOTA2MCA4NmU5ZjYxNjk3ZDhhZmRmNDE1NzUyMTRkZTRlNzJhYzVhYTkyMmE0IHJlbGVhc2UyNC1tYWludAorMzkwNjEgNzdkZTIxY2NkMjEwZTRhMmQyNjliM2YyZjRhNjllMjZkZGI4NGQ2NiBsZWdhY3ktdHJ1bmsKKzM5MDYyIGRjNjhkZTcwMzc2YjQwN2U5YWU3MTA0NzE3YjZhZWRhYmI3Y2FlZjIgcmVsZWFzZTI0LW1haW50CiszOTA2MyAzOWJiOGE0MGEyYzg1ZTVkOGFlMGIyNGRhMGMwODcyMjU2OTg0MGIzIGxlZ2FjeS10cnVuaworMzkwNjQgODI5ZjY2ZDU2MTQwYzI5ZjNmMDRkZDJlYzlhODg2NDM0ZDM3NGYwNCByZWxlYXNlMjQtbWFpbnQKKzM5MDY1IDNkZDhkNDFlYzM1MDMwMjA4MDQwMmE2ZGNhNjk4N2Y0ZWFiMzkzZGQgbGVnYWN5LXRydW5rCiszOTA2NiAzM2E0ZDdlNWM4MmYyYmNiZTRkNWQ0NWJlY2M2MjBmNTNmMzY5MjczIHJlbGVhc2UyNC1tYWludAorMzkwNjcgYmJiODRiNTg1NmZjZTRkZWNiNWYyZmVjYWU2OTA1NTEzOWVmY2I1OCBsZWdhY3ktdHJ1bmsKKzM5MDY4IGZiMmY1YWE0ZDVhYjAxZjVmNTZkY2RiNDhmNzgzOTU0MjY4NjM0ZjcgcmVsZWFzZTI0LW1haW50CiszOTA2OSA4ZGJiNzMxYmFhNjBmMDY1NGFiYzRkODhhNjMxYjZlMGM0YjgwYWFhIGxlZ2FjeS10cnVuaworMzkwNzAgZDYwYTUwYTkwZmQxNTBlZTgyMzUzYzZmYmFiZDdmMWRhYTdlMDEwYyByZWxlYXNlMjQtbWFpbnQKKzM5MDcxIDMyNTNkYmQ3MmI2MGFjZGFmODYyYzU3YTc2MDIzYjZhY2Q4MTk3OGUgbGVnYWN5LXRydW5rCiszOTA3MiBlNWY2MmUwNDljNmZkOTIxMGI0ODBjNDQ4OGI4YTU5NDA2NzA0YmE0IGxlZ2FjeS10cnVuaworMzkwNzMgOTEwYjVkYjQ2MjNlMzFlYTA1MDFlYmZlMWMzODIxMjZkMjI3NDFmNSBsZWdhY3ktdHJ1bmsKKzM5MDc0IDk5MzA5ODAyZDQ5MDQ4ZWZjZmU2ODhkZjRkODdiZmRkYjhmZTJlNDEgcmVsZWFzZTI0LW1haW50CiszOTA3NSAyOTg1ZmM2MzA5YTg0YTllNmNiMmQ5YTEzYjQ5MDNmMmJmMDk5MTc3IGxlZ2FjeS10cnVuaworMzkwNzYgZjg0MGY0NDcwMzI1MTlkMTE1NDVjY2FmZDc4YmQ0ZGJmOTRjNTJjMSBsZWdhY3ktdHJ1bmsKKzM5MDc3IGI4NDEzOGQ5OGNmYTAzZmQ5MDE1MDM2MWU4ZTNhZjJjNGNmYjc4NjggbGVnYWN5LXRydW5rCiszOTA3OCA3MjhhMGRlODgzOTVjMjMwZjY2YTQyYTk5ZjUwNDRiM2I2OTI5NjBlIHJlbGVhc2UyNC1tYWludAorMzkwNzkgMDZjNzYyNzIyODkyYjhjY2QyYmY1MDU1MmQ4YmUwZDA2YmVjMmJhMSBsZWdhY3ktdHJ1bmsKKzM5MDgwIDRkMWRhNjM2MTJlYjVjOWRlODc0NGY1YjdmOGM0MjZkYjgwNGM5NDkgcmVsZWFzZTI0LW1haW50CiszOTA4MSBhMzFhNzcwYmI3Nzg1ODc0ZTQ0NzExODM3YTBlM2EwYjVjMGMyYTUzIGxlZ2FjeS10cnVuaworMzkwODIgZjU0NzNhNzYyYjUwMTZiNjJhYTUzYzg2ZmIyNGNiODExNjk3MzAyNCByZWxlYXNlMjQtbWFpbnQKKzM5MDgzIDNjNmFlZDNmM2EzMTAyYmJiMWMzMmJkZmUyNzMyY2FiY2QzOTM1MjEgbGVnYWN5LXRydW5rCiszOTA4NCA4MWNhMzVhZDkxOTllODgxNDgyZDFhZjk5OWVmYmYxZjgzNTg0MWUzIGxlZ2FjeS10cnVuaworMzkwODUgZGFlYmZkZTBlMWNmMWM0M2U4YWNiNjFkMWIyNmZkYjQ3ZDJjM2FjNyByZWxlYXNlMjQtbWFpbnQKKzM5MDg2IGM4MmI3NDZjNDI4ZjhiM2JiNDdhODVmYzRmMDI1MjNjN2IzNTU4NzggbGVnYWN5LXRydW5rCiszOTA4NyBmN2MwODhhOGI1ZDNjODE5ZDM5Mjk3OTI3Mzc5ZmQ5ODQyYmY0ODAxIHJlbGVhc2UyNC1tYWludAorMzkwODggYjMzYTcyNjQ0NTRmMDYwMTllYjcxOTdkOWFiZmYzMDNmN2Y1MTJjMiBsZWdhY3ktdHJ1bmsKKzM5MDg5IGM1NzQyODJkNTBiZmVlNDBjM2I0ZWUxNzE3NTQ0NDljOTA4ZGJmZmMgcmVsZWFzZTI0LW1haW50CiszOTA5MCA5OGY5NmYwN2Q1NDk4ODUzODEzYTAzOWE2NGFjMGQxYTZhMThhYWU4IGxlZ2FjeS10cnVuaworMzkwOTEgOWE4MTJlYjhhMGFiMjg2ZTZjNmIzMzBmZGEyNGMwYmI5ZjkyZDliMCByZWxlYXNlMjQtbWFpbnQKKzM5MDkyIDczOTAzMmJlOTZkNWQ5MDVmZDM4YjAxNWY1NDc1ZmJlYmIyZjg1NDggbGVnYWN5LXRydW5rCiszOTA5MyA2YWQzZjg2MDM0NmU5OTNhMmUyNzNhM2RjMjg5NzcxMmNhNjhlMGI5IHJlbGVhc2UyNC1tYWludAorMzkwOTQgMDIxYTRhYmY3ZjI3NGIzMjQ1MzY0YzliNzQxODQ0ODMwM2QzNTM4NyBsZWdhY3ktdHJ1bmsKKzM5MDk1IDFhNzBjYmY3NTljYWU1MjA3YTJkMmE3OWM0MTk1ZTRkYmFiZjdjNTQgbGVnYWN5LXRydW5rCiszOTA5NiBkNTc0MjhlODU4ZmMwZDA0ZmNmMDNhMTVjNzkxOGJiMTE5ZDIyMjdhIHJlbGVhc2UyNC1tYWludAorMzkwOTcgZWFmYTEzYmVlZjI2NDZkYzNhNWE0NjFhMmQ5MWRjYThhNjEwM2MwYyBsZWdhY3ktdHJ1bmsKKzM5MDk4IGQ2YTE4YTMzYmQ2MjU2ZjcyMjNmYTM5ZDM0NzI4ZDI3YjU0NzI4NjIgbGVnYWN5LXRydW5rCiszOTA5OSA3OTkwNDU1ZTZhZTBhMGQ2ZDNhYTE2MDkzYjM5Yjk1YWFiM2I3MGYzIHJlbGVhc2UyNC1tYWludAorMzkxMDAgOWU0OTI3M2ExMzM0Mzk2YTA3ZjIzYjlmNzg3MWY1MmViMGUwOGY4MCBsZWdhY3ktdHJ1bmsKKzM5MTAxIDEyMjg3ZWZhODc3N2Y3MjJhN2E1MjIxYWVhZDQ3OGMyYWI4ZDBlZDIgcmVsZWFzZTI0LW1haW50CiszOTEwMiAwZmMyOTAwMjY5MzlhNmMwZDgzMDdkOTE1ZDRmYzNlNTkzMWI1MzQzIGxlZ2FjeS10cnVuaworMzkxMDMgOGZjNWQ2YmMzNWZmZGUyMjNkZDk4NWExNTM4OTg3MDY2OTQwODllOCBsZWdhY3ktdHJ1bmsKKzM5MTA0IDI3YTcxODIyMWU3MmU3ODRmNDFhMTYxODc2ZmVjZjI5NjIxOWVlYjIgbGVnYWN5LXRydW5rCiszOTEwNSBjZjdhODQ5Y2U2MWZhNjA1Zjk0MWRhZGM0MTEwMTcxYzRhOWJkNDZlIGxlZ2FjeS10cnVuaworMzkxMDYgNjk1MjgzY2JlNDNmYzkwYzM3ODU1NDdlMmNlOTljOWVjNDM5MzY2YyBsZWdhY3ktdHJ1bmsKKzM5MTA3IDE2ZGZlMTUyYjllNmRhNWY0MjNkYzIwZmM1NDM3MDdlNWRmNzAxZGYgbGVnYWN5LXRydW5rCiszOTEwOCAzMGIxMzQwMWM5MTI1NjQwODgzNDU4OTcxZThkNDM0MjQ1NTY3ZjMxIHJlbGVhc2UyNC1tYWludAorMzkxMDkgOWU0YmYyOWU2YzJmY2QzYThhZTQ3ZjYyYjQ5YWQ0MGI3NGU3ZDU3NyBsZWdhY3ktdHJ1bmsKKzM5MTEwIGQ3YzViZDU5Njk4ZDA2ODhmMDkwMTg3YTNjYzNkM2NjMzQ4Njg4MTMgbGVnYWN5LXRydW5rCiszOTExMSBlNmIwNzViZDc4NTVhZjU0YTU2NWRjMzFhNTljNDA3YjgwMzEwZmJhIGxlZ2FjeS10cnVuaworMzkxMTIgYjA1Y2MxMmEyMTc5ZjI5NDE3MzY1NDQxYjBkNGRjMWExZjZkOTNmMiByZWxlYXNlMjQtbWFpbnQKKzM5MTEzIGEyMDQzYWZmZDU0MzMwMjExNDViOTc5YmNjZjQ4NTM5OTU2M2I4NDkgbGVnYWN5LXRydW5rCiszOTExNCA1ZDk3N2Q3Y2MzMzU2OTcxNGRmMDczNTJhYzA1ZDViYjAwMjcwM2VmIHJlbGVhc2UyNC1tYWludAorMzkxMTUgMTgxODRkODJkYWVhYTE5YWI0ODg3NTg4MTA0YzhmZjk0OTMwZWVlNyBsZWdhY3ktdHJ1bmsKKzM5MTE2IDlkMWU0NjExMWQ5YTcwODI1ZGI0YzBiOTZjZGJiNTdlODdmYWYxOTYgcmVsZWFzZTI0LW1haW50CiszOTExNyBmOGYxNWU2YWVmM2E0YWE5MzgzMDFkZGY1MzNlNWQ4MTdmM2JmNDE5IGxlZ2FjeS10cnVuaworMzkxMTggOGY3ZTQ3YTBhYWNhYjZjODA1MjlhMGQ4NDdjOWE0ZDA4ODBlYTBjNCByZWxlYXNlMjQtbWFpbnQKKzM5MTE5IDY4MjY2ODAzYzAxMzRkNDM5OGIzOTU0MDRjZjAzMjhhYWEyNjQwMzkgbGVnYWN5LXRydW5rCiszOTEyMCBkMDdlOWMzN2JlYTA5ZTFiODBiMGM0NzYzZjRhYjQ0MDAzMjExODU3IHJlbGVhc2UyNC1tYWludAorMzkxMjEgMjEwY2EzODNhYmU3NjIwZDc4ZjQyMjM1ZDdmYTU5MDdjYWI1ZmUxZSBsZWdhY3ktdHJ1bmsKKzM5MTIyIDc4MDRiYmIyNjQ5MjhlZGMwNGYwZDI1Y2NiYWI3MTNjNjg3YjYyYTEgcmVsZWFzZTI0LW1haW50CiszOTEyMyA0NzQxODUwMjk0MmE4NWFiNmEzMTk1ZWJhODBlNjExNDY5YWVlYjIyIGxlZ2FjeS10cnVuaworMzkxMjQgMmY5Y2ZlY2EyNzk5NmNkZmZhMmM3MWUyNDUxMjM5ZDYzZmIxODI4MiByZWxlYXNlMjQtbWFpbnQKKzM5MTI1IGNkODc5Y2E4NDYyNDQ4NmRjMWRhNDg1NzAzZWY0NmYzNWJjNmZlN2IgbGVnYWN5LXRydW5rCiszOTEyNiA3MjZjOWJjNDljMDQ4YWFmMjFmZjkwMDliNmFiOTliZDNlZTBkM2JiIGxlZ2FjeS10cnVuaworMzkxMjcgNWRmMWM2OTJiYjQxNjY2NDRlYmMwZWQ5MTc3NmZiN2JmZWJjOTIyMSBsZWdhY3ktdHJ1bmsKKzM5MTI4IGUwMjA4N2FjNDc5MjY4MDE5NmYxOTI1MWY2YWQ2OGY3MmQ3OWEwZjIgbGVnYWN5LXRydW5rCiszOTEyOSAzMzQwNTM2NDM2ZjVhMGUyODI1NTA0MWE4ZDYzZmQ3Y2Y5ZjI0MzEzIHJlbGVhc2UyNC1tYWludAorMzkxMzAgYzU4ODg0MTM0MTJiOTRlYmNmYzA2ZTFjZTIzOGRiODk3NjZkZDU1NiBsZWdhY3ktdHJ1bmsKKzM5MTMxIGY5NGQ1YmZhZDA3OGY4MWJjMjU0ODY1MTQzOTQzNTVhM2E1ZWEyNDAgcmVsZWFzZTI0LW1haW50CiszOTEzMiBlMjYzNmQxMDhkN2QwOWE2NWQ4ZTk5NmZhYWQwMzEzMWVjYmY5YmE3IGxlZ2FjeS10cnVuaworMzkxMzMgODk3MTA4MDViYzNkZWZlODYyNGZlZjEyYWM1ZWQyNGUyYzQ3YWI4MiBsZWdhY3ktdHJ1bmsKKzM5MTM0IGQ2Yzg3NjFkN2YzMTQ3NWUwMWQ1ZDcxNWQ2MjllZmRjN2JkZGE5ZTYgbGVnYWN5LXRydW5rCiszOTEzNSA2NjZjMGVkNGZiOWQ0ODBlZWNjYjJjYmYxZTgzNTMzYTRlM2RmYTEwIGxlZ2FjeS10cnVuaworMzkxMzYgODU3ODcxYzcxYzNiYjkwNzZiMGIzOWUzN2RlZTYxMGVjM2RhZDNjMCBsZWdhY3ktdHJ1bmsKKzM5MTM3IGM4NTcwNzBlOTdlOGQxZTNhNzU0NDk0OGI4ZGZiNjdkODFjOTQzZTQgbGVnYWN5LXRydW5rCiszOTEzOCBiM2NiNjQyODlkMmJlMjQ3NjgwZmMyYjFhZDNmZTYwYTE4ZGQ4NGU4IGFzdC1icmFuY2gKKzM5MTM5IDI3NjBhMmQ5OTIzOGYxMjFjMTk0MmYwNzcxYjE4ZmIyNzkyMzU5YTkgYXN0LWJyYW5jaAorMzkxNDAgNWIyM2E1ZGNjNmEzZmYyYjZmODhlNmVhMDliMjRlZDY0MmJlMzcwMiBsZWdhY3ktdHJ1bmsKKzM5MTQxIGZkY2RlNTlkZmExYmQ4OWYyNmZmMTNjYjVhM2QwZDE2YTZiYjM1NmMgbGVnYWN5LXRydW5rCiszOTE0MiA3M2U2Y2I1ZjQwMzllNmMwZGE1OTVlODNlZDI5OWE3ZjU2NzVhNjQwIGxlZ2FjeS10cnVuaworMzkxNDMgM2I1ZjU0NjZmMTA1ZWFhYzJjN2MzOTViZDUxMjQ2YjJiOWFlZjFiNyBsZWdhY3ktdHJ1bmsKKzM5MTQ0IDczNDkyNWI0NmJhN2U0N2RmN2I4ZWE4N2E1ZTc2ZWEyYzU5MTg0N2EgcmVsZWFzZTI0LW1haW50CiszOTE0NSA5MjQxMjE4OTkyYzFlMDY3MTZiM2ZmODExYWI0MGUzZTIxNWMxYzdkIHJlbGVhc2UyNC1tYWludAorMzkxNDYgYjg2MzkyZjU1YjU5N2VmNDMzNzYwMTdjOTgwYTIxZDY0NDBkYWE1ZSBsZWdhY3ktdHJ1bmsKKzM5MTQ3IGI4YzkwNzZkMTc0ZTkyYzUzZGEwMWU4MjYxNDg5MTEyYjg0ZTI2MzEgbGVnYWN5LXRydW5rCiszOTE0OCA1OGQ1YTZjN2I2MjkwZmMwMDg4Y2UxOTY4NGNjNzkzYzNlMTA5YjM3IHJlbGVhc2UyNC1tYWludAorMzkxNDkgNGJmOTllZjA2ZDM4ZGIzNjYxNzBhYTRkMDdmOWMxNzk1ZDM5NzY2ZiBsZWdhY3ktdHJ1bmsKKzM5MTUwIDMxZDk1NWFiMjIzMmVjOWVmNjFjYTYyN2IwZjc0NDkxZWRlZmJmZTkgbGVnYWN5LXRydW5rCiszOTE1MSA5YzE4OGZmNjMxMzE5NzZjMjhkNGZkODc3NWNiNDAzODkyMzQ0NWMzIGFzdC1icmFuY2gKKzM5MTUyIDgxMjdhNTVhNTdjYjdiZDc4MGE1NGQxNDExNGQxODc3YmMzYjY0N2UgYXN0LWJyYW5jaAorMzkxNTMgOWVjZjAzZGZkNWQ2MTc3YjIzZDYwZmUyYzdkMDVhN2RhZDY1ZmMwYyBhc3QtYnJhbmNoCiszOTE1NCBkMjU2NTZhYjNlMWQwM2FlODBiYzM1OWE2MzEzYjBkNTcwMzRhZGY4IGFzdC1icmFuY2gKKzM5MTU1IGFhMmYyZmFlZjdkMjkxZGE3ZGMwNDc2ZjZiY2U3ZThkYWIyY2MzM2UgYXN0LWJyYW5jaAorMzkxNTYgOGQwZDM5NWMyMTFlZDc5NmE5MmFhMWUwM2Q5NDU4N2MzYzNiZDBkNyByZWxlYXNlMjQtbWFpbnQKKzM5MTU3IGUwNTk4OTgzZjBhNWY2MjM5Nzg3MDlhODZiYTIxNjI1MjVlMDc4NDggbGVnYWN5LXRydW5rCiszOTE1OCBlMWY3ZmNhNzg0ZjNhNmZhMzQ1MjI3Y2MyMTk2NTZjMWI2NDgyNjQzIHJlbGVhc2UyNC1tYWludAorMzkxNTkgZGRkNzhlYTM1MTljNTFhY2JhYWI4NDczYWI1OGU0MTczOTdkMjQzYSBsZWdhY3ktdHJ1bmsKKzM5MTYwIDk1NWQ0YmFkZGJmYzg2NTlhMjg3ZDZlMTg3MThjODY3ZmJjYjQ5MmQgbGVnYWN5LXRydW5rCiszOTE2MSAyMTRjOTZlNTQ5MDUwYmFjM2FhOWEwYmY2OGE2ZWRmMzI0ODdhYzQ3IHJlbGVhc2UyNC1tYWludAorMzkxNjIgYjY3MDBiM2RlNjk1NWQ1MWQyYjYwOWQ0ZWYzNDFmZmE2MTNlMDIwMSBsZWdhY3ktdHJ1bmsKKzM5MTYzIGRiNzY4MzEyOTlkMDAwODVmOWRhZDcyNGQzMjJjMTFiYTc0MGIzMTUgcmVsZWFzZTI0LW1haW50CiszOTE2NCAzNTU5MmJhZDM0NWJkZWQ3YTQ5Yzk5YWE5NTMwMDhjMDU3YmFjYmI5IGxlZ2FjeS10cnVuaworMzkxNjUgNzYzZTg1YjEwN2I0MGRiYmE5NTY1MWNjNWRhNDIwZTY0ZTgzODUxOCBsZWdhY3ktdHJ1bmsKKzM5MTY2IDU3YTRkMjc0NjYzMjM4NDZkOTczYTVmYTBhODA3NmNjZWZkMDgxZjIgcmVsZWFzZTI0LW1haW50CiszOTE2NyA4NDdlNThkZGI3ZDllZTZmOGQ4YzcyYmViMmVkNTExYzBhN2ZiZTFiIGxlZ2FjeS10cnVuaworMzkxNjggYWNlN2Q4MzYwODNmZTc0MTAxNzNlNjNjZTA4YmY0NjAxYWI1ZjAwNiBsZWdhY3ktdHJ1bmsKKzM5MTY5IGY5YzVhZTY5YzE2ZWUyYjVhMWQyOGRkMDNiNjcyMDFiZGZlYTFlYjIgbGVnYWN5LXRydW5rCiszOTE3MCBkMGM2OTY1YjUyNWVjYmFlZTg3YjBlYjNlMTZiN2Y3NTdkNDk3ZjkyIGxlZ2FjeS10cnVuaworMzkxNzEgYzA4OGVjYTkwYTYzNTA5MjE0YWNjNDk4MmM4NmE5ZTJmYjEyMTMyOSBsZWdhY3ktdHJ1bmsKKzM5MTcyIDUyNmZhYWFiMDBlYjk1MTlkZmU3ZjBkOWY5OGVjZWNiYzRlYmJjYzIgbGVnYWN5LXRydW5rCiszOTE3MyAxZmRiY2EzNTE0OTg5ZDgxN2QyZmQ0OTJkMGQ0YTIzY2YyYmM1ZDQ4IGFzdC1icmFuY2gKKzM5MTc0IGEwYzMxYjcwYmQxODBmNzhmNjgzODVhMmVlNzE2MTVjYWQyZmY2M2QgYXN0LWJyYW5jaAorMzkxNzUgMDllODhmZDdkNTVhNjhhMWYxMGRhNGFlNzU1YzQwN2I5Y2U5Mzc4YSBsZWdhY3ktdHJ1bmsKKzM5MTc2IGI3MzVlYjQyNjdlOGY5NGNhZDkwMTBkMTMzZjcyNmM0NDEyOGJjNGEgcmVsZWFzZTI0LW1haW50CiszOTE3NyA3YjY0MzZkMjM0NGQxZjQ1ZmI2Y2YzZmNlNzA4OGJmMTliMTczNWNhIGxlZ2FjeS10cnVuaworMzkxNzggNzRjMzcxNzY2MTIxYzgxNjNlMDU5NjRhY2YxOTZiYzBhYWVlNjQxYiByZWxlYXNlMjQtbWFpbnQKKzM5MTc5IGNkNTk1YTY5ZGNhNWNhMmQ5NDg2NmEyMTgwNWI5NmMxMGJiNTdhZmYgbGVnYWN5LXRydW5rCiszOTE4MCA5MTlmMmQxMzE5ODJiOGIxNWRlOWYwNDUyMjg1YTQxZWMxNDc2M2EwIHJlbGVhc2UyNC1tYWludAorMzkxODEgNTU4MTYzY2I3MGE5NjgyZjM3Mzk3ZWZiZDBlYzIwOGE2MWFhMjRmYyByZWxlYXNlMjQtbWFpbnQKKzM5MTgyIDYyZjgxOTQ4MzI5MzliZTE0ZjJiZWRhN2FiNGQ3ZjIyYmUzNGJhNmYgbGVnYWN5LXRydW5rCiszOTE4MyAxOTQ5NzIyZjM3ODc0ZDIzNjc5MWU1NDQyMGU5YWUwNjc2ZjJjNWJiIGxlZ2FjeS10cnVuaworMzkxODQgODc1Njk3M2E2Yjk5MTI0YzljZDA5NWViYjE3MmMyNmQxMmZmNjAzMSByZWxlYXNlMjQtbWFpbnQKKzM5MTg1IGM2YjY5YzZkMDFhMzc3ZDRjOTM1NWM2MTJjZTYyMjRjZmJlODM0ZTggcmVsZWFzZTI0LW1haW50CiszOTE4NiA5NWE5ZmY0N2IxMWQwMzk5Mjk3OTkzOTE1ODZmMmZlNjNlZjJlMWJiIGxlZ2FjeS10cnVuaworMzkxODcgYTQ5OGRjYWFlOWQ3ODI2OWI0NDUwYWU4OGE1ZTlkZTJhOTY5YmNlZCBsZWdhY3ktdHJ1bmsKKzM5MTg4IDAyN2UwMDBkMWY2ZGYwZTA0MTEzZmFhMmNjYzQ0YzFjOTE1Mjc5OGEgcmVsZWFzZTI0LW1haW50CiszOTE4OSAzMmRlN2E4ZDg4NmNjZGY0YzU5ZWFmYzVlMmQxN2U2NTczZTMzNTRmIGxlZ2FjeS10cnVuaworMzkxOTAgMDdiMDFiMzM0MGY5YzI1NDI2YjljMjBiNDI3MGI4M2Y5YmY2ZTc1NyBhc3QtYnJhbmNoCiszOTE5MSAzYTZlZWYzMWU5NWFlMjU1MDdmYzMwMzEyMzEyZjQzYTEzNWE4NTQ2IGFzdC1icmFuY2gKKzM5MTkyIGQ2MWVmY2Q4N2M4ZTM4MzZjYzY1MWYyOGEzM2QxNzY1ZTY0ZDY3ZGYgbGVnYWN5LXRydW5rCiszOTE5MyBkNDc2ZTU4Y2M3ZTc0NWM5YzBiYTQ2MzkwMzY0ZjM5MzUzNTk2N2RlIHJlbGVhc2UyNC1tYWludAorMzkxOTQgOTJiMzdjNzFmOTM1ZWFiYzQ2MWMwNzBmMmI4MDJmOTQ4YzQzOTlkMSBsZWdhY3ktdHJ1bmsKKzM5MTk1IDc0ZjgyMDJkODMxNTAxMzdjOGMzOWVlMTEwYWQ5MWFlOTU0NGQzZjIgcmVsZWFzZTI0LW1haW50CiszOTE5NiBjNTJjZDFmZDk0ZmM1NGJiODRlZDI1NmRkMmRiZTMyZmMyYjhhZjViIGxlZ2FjeS10cnVuaworMzkxOTcgM2Y4NmY4Y2JhMDVlZDU2ODkwMjg3MWExNzc2ZDNkZTE2YWU3NGE5NCByZWxlYXNlMjQtbWFpbnQKKzM5MTk4IDdlMWMxZDZkZWExYzMxNjlhM2IwZTFhODRhZDM1OTY0ODBkY2ExYzEgbGVnYWN5LXRydW5rCiszOTE5OSA5NjhkOTQyMmFmNzg3ZmU2ZmYxYTdmMzMwMTQ2ODk1ZjgzYjY2YzE0IHJlbGVhc2UyNC1tYWludAorMzkyMDAgNzI4ZjgyYmViYzNlYmQ2NjNmMjM3MjE4ZDVmZDcyZDM5YTU1NDdmMyBsZWdhY3ktdHJ1bmsKKzM5MjAxIDg3OWM4NzZiYzU3YTM4OTgzNjNmNWE3MWJmOGQwNzE2MzE2YzVmZWIgcmVsZWFzZTI0LW1haW50CiszOTIwMiBiNDMxZWQ3YmNkYzIyNTBhZjE2ZDkwMzQ1MDY4ZmQ4NjRiMWIxM2M0IGxlZ2FjeS10cnVuaworMzkyMDMgODYwZTBmZDJmZWU4ZWY2OWI5NGFjYTFmMDcyNmRmNzA1MmFmOThlYyByZWxlYXNlMjQtbWFpbnQKKzM5MjA0IGFlZWMzOWZlZDhjNWMxNmY3NjVhYzM5NDI1ZDFmMjFmNjg3MjExZmEgbGVnYWN5LXRydW5rCiszOTIwNSBmYWFkMDk2ZGVjZjZhYjRkMWU0ZmFlYjEwZTM4Nzg0NjliMTc4M2ExIGxlZ2FjeS10cnVuaworMzkyMDYgOWY0MzY1NTEyMzI2MDI0MWUwMjY1YTM1NjZlN2Q2ZWJmNGFiNDAzNyByZWxlYXNlMjQtbWFpbnQKKzM5MjA3IDJiMTE3ZWIxODk0NGQyMjQ0OWNjYmMwOWI2MjdmOTM0ZDc0ZDYyOTggbGVnYWN5LXRydW5rCiszOTIwOCBlNzg5NzAzZmU0YmVlNGFhMjI1Njg3MmY4YWQ3YmI3ZWZmODU5MmNiIHJlbGVhc2UyNC1tYWludAorMzkyMDkgYTkxN2UyYzQ3NmY2NjE4ODEyZGM1OTMzZDE3YWQ0Mjk2NzI0NTQ1NSByZWxlYXNlMjQtbWFpbnQKKzM5MjEwIDFhYzJjM2ExYzNhYzNkMzlkNGQ3ZGRjZjBlYzAxNTY2MGI4OGE3NzUgbGVnYWN5LXRydW5rCiszOTIxMSA5ZDgzOGRkOTY3YjJiMjJhZmYxZjMzMTc5ZjRkNTVkZGJlN2U4NGQ0IHJlbGVhc2UyNC1tYWludAorMzkyMTIgYmU2YWIzZDg2YzI5MjVhZDhlZDA3ZTZiZDEwODYyYWQxNmI4MzljMCByZWxlYXNlMjQtbWFpbnQKKzM5MjEzIDUzYWI1MTYzYzFhYWExOTUzZWJiMWFkMWQxZTdkMTFiZjdhZDA2NjggcmVsZWFzZTI0LW1haW50CiszOTIxNCA0YWRiZDMzMWQzMzUyZWI1ZmFmZDcyZmNiNTg5ZTUxMmY0YjM1ZGIyIGxlZ2FjeS10cnVuaworMzkyMTUgNmViYzQyM2YyZDgxY2U5MGE0NDg5MGU2ZmJmNWEyOGRkY2E1MTVmNiBsZWdhY3ktdHJ1bmsKKzM5MjE2IDk3MDdiYTI3ODg5NDFhMDNlM2Q2OTJiZjRiM2I1ODYwMjZhODQ2MmEgcmVsZWFzZTI0LW1haW50CiszOTIxNyA1MmFjYmI4NTg0ZWFlYjQ2MWE3OTY5YTBlODBjN2Y4YTgyMzg5OTRjIGxlZ2FjeS10cnVuaworMzkyMTggY2E2NmExNmMzNzlkYzIxMDczOWMxMDJkNWMwNTc3MWIxMGVkZDZmMSByZWxlYXNlMjQtbWFpbnQKKzM5MjE5IDQyY2ZlNDYwM2MzMGMwMDE3MjkzNWM2Zjk5YzhjOWM1OWExMzdjYTAgbGVnYWN5LXRydW5rCiszOTIyMCBlZGYyNWMxYTRmNjA4YzRkYjM4OTU1ZTk3ZTYyZWUyNDJkZjg5OTc2IHJlbGVhc2UyNC1tYWludAorMzkyMjEgZjhlNjBhM2YzNDQwOWU5ZjgxZmJhY2M1Mjc2ZjU2NzkwZjU1ZmNhNyBsZWdhY3ktdHJ1bmsKKzM5MjIyIGM4YmQzYjUyMzBjNDI1Y2E0ODViZDg0NjVmYzk3YjllNGVhMzBhNGUgbGVnYWN5LXRydW5rCiszOTIyMyBiNGU1NzAzMzdiZjQ3N2UyMzZkN2QzZjZjYTI1YzkwMzk1MjU5YzUyIGFzdC1icmFuY2gKKzM5MjI0IDMxNDQ3YWRiMWIzNWVjMGJhMDkzNDgyOWFjZGE5YmNjMDQzNTMzZjYgYXN0LWJyYW5jaAorMzkyMjUgMTc3NGZlN2VjMGM3YzcwZDg1MDlhYzM2NWI4YjU0OTA3ODlhZjEyYSBsZWdhY3ktdHJ1bmsKKzM5MjI2IDg1YTM1Zjg3MDFiM2JiNjlhMTU3Y2QwZTI1MWY0NmYzMWRkMWVmYTAgYXN0LWJyYW5jaAorMzkyMjcgMjk4ZDNmYTRlYzM5ZGQxODAyZWY3OWMzYTM3Yjk0MmMzMDkxZGUzNCBsZWdhY3ktdHJ1bmsKKzM5MjI4IDJmZWVkZjg1MDc4OWQwNzUzZTJmMWRkNDBhYjkyYjViNjQxZWJiYWEgbGVnYWN5LXRydW5rCiszOTIyOSA2MzZlNWYxZGE3MzNkN2I3NDdiZGE5Yzc3M2Q0Njc1NGUxNzM3NWUyIGxlZ2FjeS10cnVuaworMzkyMzAgN2E1MGJkODJkZjI1ZjJiZTllM2ZhYWE4MjIyZTdkNzc1YjVmZmNmNSBsZWdhY3ktdHJ1bmsKKzM5MjMxIDM0OWEwZmQ1OThlMDc5ZDIxN2NlZGU5ZDJiODI2MzhiZGE2NjVkMGIgcmVsZWFzZTI0LW1haW50CiszOTIzMiBjNmMyNGZmMWUzZGE1OTI4YWMxZjgwYzIyODg1MTI3MmE0ODQwMTQ4IGxlZ2FjeS10cnVuaworMzkyMzMgMzVhNjk4MzAyYzYzYzViMWYwNjg1OWE3OGFkODcxYzk4MzhjNGIxNiBsZWdhY3ktdHJ1bmsKKzM5MjM0IDhmZmZiNGM5NTQ4N2VlMjM3MzA4N2I3MjM2OGY5OTBkMWI5YzM0M2UgbGVnYWN5LXRydW5rCiszOTIzNSAzZjFiNDhmOWZmMGRhOWYzNDdjZDAxMTU0NjE4YWM0ZThjOTUyMjQyIGxlZ2FjeS10cnVuaworMzkyMzYgZjMwZWJkYzNiZGRmNzliMWZjYmI2MzdmN2YyMWM4OGNlY2EwMWIxZCBsZWdhY3ktdHJ1bmsKKzM5MjM3IGQ5MTk2NGY1ZmUwZDZiY2IwZDJhZTQwMDI0ZTI3NGQwZTNhMmE3MWMgbGVnYWN5LXRydW5rCiszOTIzOCAyNmJmNmMyN2U5Y2VhNWVmNTM3ZTg2ZWVkYWZiMWM1OTYxZGUwNTAxIGxlZ2FjeS10cnVuaworMzkyMzkgYjJmZTVmOGZjZmRkYzg0YjFhMDM0YzQyNDViNzg0MmMzMjNhN2Y3MyBsZWdhY3ktdHJ1bmsKKzM5MjQwIDVhOTEzNGZlNTcwOTA2MGEyM2FhMjdiZTZhMjk1OGU1ZWU3OWJhOTMgbGVnYWN5LXRydW5rCiszOTI0MSAwOTkxMjhmZmFiZTYzMTlhMDA3ZmZkNDIyMjM3YjIxNDA2YzZkYjgzIGxlZ2FjeS10cnVuaworMzkyNDIgMzA4NjYyMGRiNDZiOTdmYzJkMDgyMDE3ZTdiZmNjZjc4NzI0NDljNiBsZWdhY3ktdHJ1bmsKKzM5MjQzIGI0OGYwYjJlMGRmNjA5NWRmNTljZjhkODkwM2JhNWJmYjZlOWRlYTkgbGVnYWN5LXRydW5rCiszOTI0NCBiMzYzYTI4ZWQyNGY5YjEwM2M1NGY5NGEwOTA3NDA4ZWVhNmQ1NTdlIHJlbGVhc2UyNC1tYWludAorMzkyNDUgYWJkZTIxN2M1ZDkwZDFhNjUxZTY1NGJhY2M4OWRlY2U5NmJiNmI0YiBsZWdhY3ktdHJ1bmsKKzM5MjQ2IDM3NjAwMjMzZGI3Njg4MWM4Zjg5OTc0ZWRmYmE4Y2Y4NGNmNTAzODUgbGVnYWN5LXRydW5rCiszOTI0NyA0NTVjM2I3NjVkYzNhOGYxYjkxYzhiMTk4ZTFjYjU3ZWYzMTdjMjcwIGxlZ2FjeS10cnVuaworMzkyNDggMjU5MGZhMGVjN2U4ODFiMjMwOGNhMGUxOTM0YzVhYzQ0YzJkZTk0YyByZWxlYXNlMjQtbWFpbnQKKzM5MjQ5IGQ1MzNmMDhhOWRmYWFjNzNmN2YzZGFmZTYxMzAwM2RmYzJlYTM1ZjYgbGVnYWN5LXRydW5rCiszOTI1MCA1ZmU5Y2VlY2ExMTE4ODE0YzQ0ZjRhNjZkZTFlYmIxMTg2Zjk1ZDYwIGxlZ2FjeS10cnVuaworMzkyNTEgZjM5OTZhYTc4Y2RlYTViNTk2ZjI5ZGExNjE2OTM2MGI2NTUwNzFkNyBsZWdhY3ktdHJ1bmsKKzM5MjUyIDU0MWJmYmIxMDAzMGJmZmFhY2NjZjI2MDRjOTUxNzY2MjlhOWUxZjMgbGVnYWN5LXRydW5rCiszOTI1MyA4YWE5YmQ4MDI4NmIyMjAxZTc1ZjFhMzczMjQxM2RjMTdmNGIzNDczIGxlZ2FjeS10cnVuaworMzkyNTQgYTY4OWEyMGY1OGY3NjNhZGEwMzJkYzdjOWRhY2ZkMzI1ZWY5ZjZjZSBsZWdhY3ktdHJ1bmsKKzM5MjU1IDFkODYxMWQ4NTU1YzVjYWZlMDBjOGRlZmEwNmZjMzE4YTkxYzYxZWYgcmVsZWFzZTI0LW1haW50CiszOTI1NiBhNmNiZmNkMGU2OTFiYTBiMWM1YTU3YzllNGUwY2I5OWY5OGQ2ZTY5IGxlZ2FjeS10cnVuaworMzkyNTcgY2UwOTk1ZTAxZDNjNzQ1NzQzY2VhNzZlYmE0OWJhYTQ2ZTljNDUwZSBsZWdhY3ktdHJ1bmsKKzM5MjU4IGZkMDA0NjE4NjFjOTA3MDY0NWUyNmI2OWZmOWY5MDJhMTg3NmNmMDIgbGVnYWN5LXRydW5rCiszOTI1OSAyNjEyZTk2YjE3YmJjNWJjYWFjNzJhZWExMGYxZGYyMWU2MDUzMmI0IGxlZ2FjeS10cnVuaworMzkyNjAgYmQ5YWYyNjBlOTI3OTQyYWY1ZTBkOTgwMjMyNzNhMzFlOGIzNjcxZiBsZWdhY3ktdHJ1bmsKKzM5MjYxIGZhOTVmZTkxY2RmNzYwYmUzZGIxMjA0MmM3YTc5ZGM1ZjEyNzE4MjUgbGVnYWN5LXRydW5rCiszOTI2MiBiZGNiMDFhOWI2MGM1NzlmNzE2YWIwNGI4ODQ0NjNiNzQ4YWQwN2YzIGxlZ2FjeS10cnVuaworMzkyNjMgYjkyYTg1YzNiZGM4MTZhYWY5Mjc3Y2U0ZGQ5ZjJkZTNiMjg1YjU4YSByZWxlYXNlMjQtbWFpbnQKKzM5MjY0IDNmYTU4ZTViZGRmYjI5YTVjMDQwZjIyZDA1ODY0MjNkMWUxMjA1NWUgbGVnYWN5LXRydW5rCiszOTI2NSAxN2UwNDQ0ZGQxMmRhZWZlMWNkZWNkODE4ZWRhNjlmNDIwYjNhOTkyIHJlbGVhc2UyNC1tYWludAorMzkyNjYgYWM5YzBlZTE5OWZjOTZlZWExZTRiYzNiMzIyMDhlMDgzNGYxZTAwYiBsZWdhY3ktdHJ1bmsKKzM5MjY3IDMwOTQ4NDNlN2I5MmNiMTAzYWUwZmJlMWIzYjQ2NDhkYmVmMmZjNDYgbGVnYWN5LXRydW5rCiszOTI2OCA2YWE3M2ExZjBjYmE4NDU0MDNjN2Y4MTY2OWY0NDRkMzI5NmQ1YzQzIGxlZ2FjeS10cnVuaworMzkyNjkgMGVmNjRhOTNmM2YyNWUwZDYzODFlODMzODMwMDhiN2NiNjlmY2M0YSBsZWdhY3ktdHJ1bmsKKzM5MjcwIDMwMGYzYWFmODUzZmI4ODhhNGRmYzQzZWZkYzYyOWQxYjY4MTJmMDcgbGVnYWN5LXRydW5rCiszOTI3MSAwNDRhNWNhMmNkYjgyY2RmNjdmZTdhNTZjMzQ2ZmRkOGIxODM1YjgwIHJlbGVhc2UyNC1tYWludAorMzkyNzIgZWYxMWNiYzA4ZGFiYTBmZGE0OTBjMTk2NzM4OWU4ZGQ1NWNkM2I5MyBsZWdhY3ktdHJ1bmsKKzM5MjczIGZkMDJiODRmYjJkYjIyOWJlOGQ3OGJjZTJkOWNkZDg2YzY0MWEwZjIgbGVnYWN5LXRydW5rCiszOTI3NCBkYzhhZTQ5OWVmY2YzOTM4Njk3MTQ4YTZmNDgzMzI1ZjExMTdkZTFkIHJlbGVhc2UyNC1tYWludAorMzkyNzUgNzI1NjcxZGI3NzlhNjgxODJiZDI2YzA3YzBmODg2ZWQ3NWI3NjhiMiBsZWdhY3ktdHJ1bmsKKzM5Mjc2IDliMjIyN2E2MGRhZWNkZjU5MmQ4ZDFlZmI0ZDA3MjFjNjgzNTE2YjMgbGVnYWN5LXRydW5rCiszOTI3NyA1MDNjMzY5NzU3OGY4YzllNDBkMmRlMjg0YTg5YzAzYmJmZWM2MjA5IHJlbGVhc2UyNC1tYWludAorMzkyNzggZGVmNDM0ZTJhODFhZmJkYzRiMDA0MmQ0Y2Q3OTlkODQzOTUwNzliZSBsZWdhY3ktdHJ1bmsKKzM5Mjc5IGQ2NTc1Y2QxYWI2N2ZjNjYzMmIwZTI1NWQ2NDQ5ZjkyNTBlMDk0ZTQgbGVnYWN5LXRydW5rCiszOTI4MCAwMjhlOTRhNmVmYzU2YTk4NzdiYjdmODAwMTc5NTM4NjcwYzMzNGNkIGxlZ2FjeS10cnVuaworMzkyODEgYjhjNWQyMjIyZWQ3NTgzYmRlMTA3NTMyOGExMjNiMWVkNDdmMWZhNSByZWxlYXNlMjQtbWFpbnQKKzM5MjgyIGY2YjQ2MmQyYTNhMzZjNTM2MzY3NDNlYmNiMWNiZDA1ODgwNGU3ZjIgbGVnYWN5LXRydW5rCiszOTI4MyAzYzNhNDVhOTY1NzcyMWYwY2ExMDY2MzU0Y2YxOTY1OTg2ZWM1MjM1IGxlZ2FjeS10cnVuaworMzkyODQgZGQ0MzU3YTVkYTdjYjdkNzA0Nzk3YmI5ZmIzM2E1ZjY3YTIzZjVjZCByZWxlYXNlMjQtbWFpbnQKKzM5Mjg1IGM1NDk5ZjI1Njc4NmIyODIxZjgyZjE3MzFlM2FiZDQ1Y2I0OTdmOWEgcmVsZWFzZTI0LW1haW50CiszOTI4NiA3MDBmMDgzNjkwOTI3ODU4MjBjOGUzNmQ4ZDIzZTVhNGMzNzI1YjEwIGxlZ2FjeS10cnVuaworMzkyODcgZGQyMzU3OTUzZmUzODcxNDg0ZDg4YjBjZjQ3NGM4NmU4NDAwZTk4ZCBsZWdhY3ktdHJ1bmsKKzM5Mjg4IDM5ODI1Y2EzNDY0NzNlZDU2ODA1NDY5NDVkMThiNzFjYmYxOWJkYTkgbGVnYWN5LXRydW5rCiszOTI4OSAyZjFiZjY0YjgzN2VmNWY0OWUxY2Y0NmUzNWU3ZDJmMjQzMWRjNWIxIGxlZ2FjeS10cnVuaworMzkyOTAgNmYxY2QyOGQ2Yjg3NTAxMmQwMzQwZTUwNjMyYWRmYTMzYmFkYWQwMCBsZWdhY3ktdHJ1bmsKKzM5MjkxIDcyOWJlOGNjMDA5OGJmNWUxN2VhNjNmMWMzYjVmMzJjMDJjOWU3MzQgbGVnYWN5LXRydW5rCiszOTI5MiBjMWQyMmQ0YzA4NjU1MjgwY2UzN2UzYjUxYTcwNDI2N2RjYWQzZGFlIGxlZ2FjeS10cnVuaworMzkyOTMgY2Q4ZDhlNjM0YWI4MDZlMDEwZTZiNzY5NmFkMGE4MTQ0NmIwMTJhZiBsZWdhY3ktdHJ1bmsKKzM5Mjk0IGU4ODA2MDk0ZDY0NDhkZmYwZGUxZjhiZDZkZjE5ZTAwNmU2ZmNhMDAgbGVnYWN5LXRydW5rCiszOTI5NSBkZTJkODRlMDQ0N2VlZWQ4NjFiNTRhOWY1ZTM1NjkxNGVkYTQ4NzIxIGxlZ2FjeS10cnVuaworMzkyOTYgNGZkMDM4NzM3ZTIxZDJhY2I4ZWYxMDA4ZjcxNzVmN2M1ZTg1YWZlZCByZWxlYXNlMjQtbWFpbnQKKzM5Mjk3IDNhMmZmZjY5MDU1OGRjMDQzYmUyYmUzNDMxMjNlMmVhN2RiY2I3ODEgbGVnYWN5LXRydW5rCiszOTI5OCA4Nzc5MTZkNjMyZTA3MDY5Yjg1Nzc1N2JlOGU1MDVlMWRiY2VmMTI2IGxlZ2FjeS10cnVuaworMzkyOTkgMjBiMThiN2Y4MzA5NTc4ZTBjNTAyOWMwNmE4MjlhOTQyMTI0MmQ5YSByZWxlYXNlMjQtbWFpbnQKKzM5MzAwIGM1YmY1Njg1MjY3YjhlOGRhNjkyOTYxMGI5YjQxOWNmMTc4Mzc4ODYgbGVnYWN5LXRydW5rCiszOTMwMSBkN2YzOWU2MjA4YmE5YWM4ODVhNDhhNmNjMGZiYzVlNTIwZDBlMjdjIGxlZ2FjeS10cnVuaworMzkzMDIgNjYwNTdkNTUwNjI4YWU3NjViYzcyMjlhZWE4OWY1NjNkYTNlMGQ5MiBsZWdhY3ktdHJ1bmsKKzM5MzAzIDUwMjgzYTQ0MTdkOTg4NzBmOGM5YmNmOWI5Njg1MWE5YTY5MTJlYmIgbGVnYWN5LXRydW5rCiszOTMwNCBmMjA2OTE5NTc1NzgxMTMzOGQxZTIwMzU3OGRkNDE1ZjUxNWZhMjU4IHJlbGVhc2UyNC1tYWludAorMzkzMDUgYWViODU4MGExYWY3NDg5ODg3MmNmMWVhZmUyY2FhYTFkMGVkNDk3ZSBsZWdhY3ktdHJ1bmsKKzM5MzA2IDhiMDdkNzMxYmU2MDNkZWQ0ODIzNDgxYjY1ZTE4OGIyMmQxZWMyZjMgcmVsZWFzZTI0LW1haW50CiszOTMwNyAzZWE4ZjU4YThjOGVjNjQzNGYwNGZhZWU4NjY3NWE4ZmVkOTE5YWZkIGxlZ2FjeS10cnVuaworMzkzMDggNGU1ODg3MjVjM2Q3NThlN2QxMWYzMjExZTkzZGUxMmI3MzM4MWFiYiByZWxlYXNlMjQtbWFpbnQKKzM5MzA5IGNkZTI3NzgyYTE2OTJhZDQxY2JkMTcxZjJhYTkyZjQ2YWIwMzhkNzcgbGVnYWN5LXRydW5rCiszOTMxMCBmNTcxM2UzMDM4MGM0MzZiYThkZTEyYThhNmY0ODUxZDY5NjM1MDg1IHJlbGVhc2UyNC1tYWludAorMzkzMTEgN2Y5YTQzMGI4Y2U3MWVjOTdhNzhkY2M3Mzc2NjQwZmNiMzU2OWM3OSBsZWdhY3ktdHJ1bmsKKzM5MzEyIGNlMTI0NTEyMjBiNDBhOTI3YjYyZmUzN2I0ZTI0YjMzYmNlYTEwZTQgcmVsZWFzZTI0LW1haW50CiszOTMxMyA3NmIyNzIyODA2YWJjNWQ3OTUzY2FkODllNTI3Y2I4Yjg0YWE5Njc2IGxlZ2FjeS10cnVuaworMzkzMTQgMDg0ZDQyZGY3YmFkNGU5NDAzOTdjNmNiYjNhNjk4MDliYmRkOWM5ZCByZWxlYXNlMjQtbWFpbnQKKzM5MzE1IDc5N2Q4MmVlYzYyNTIxYjZhNjhkZjlkMzZkOGIyOTI0YzZjMmE0YmUgbGVnYWN5LXRydW5rCiszOTMxNiA2MjQ5MThlMWMxYjJlZmVlOWU0YjdiZWUzMWRkYjgyMjEyZDExYjMzIGxlZ2FjeS10cnVuaworMzkzMTcgYTQ2NzMyNTcxZjJlOGYwNWVkY2Q1YmJhNzk2ZGY5MjVjOGVhNjQ1MSBhc3QtYnJhbmNoCiszOTMxOCBmODRjZjg1MzQ2NGFhYWE2N2IzMWIzZDE0YjNmNTlmYzRmMGZlN2QwIGFzdC1icmFuY2gKKzM5MzE5IDdjMTRjN2Q4YjM5NmZmNjExZGU5Nzk0MjNlZWYwNzU2MDJhNjc1NWQgYXN0LWJyYW5jaAorMzkzMjAgNDY4MDBmMmFkMzA4YTQ4ODg3YWVhNGUyYmVmYTY3ZDhkY2ZjZmZlZiBhc3QtYnJhbmNoCiszOTMyMSAwMDE0NTk2Yjg0MGM2Y2ZkYmU4ZDU2NmIzODA0NWYyODhiNWRjYWYzIGFzdC1icmFuY2gKKzM5MzIyIGI0NjNiYjQ4MjU5NDliZDQyNjEwYTVmZjM4ZjczYjZkOTBkZGNmOWYgYXN0LWJyYW5jaAorMzkzMjMgZTdlZDBlNmFlZDJmMjczOTQ0YzMxN2VlYjM2ZDE3Yjc2MGIyYjhlNiBsZWdhY3ktdHJ1bmsKKzM5MzI0IDQ0OGM2ZmJmZjY0MTMxMjJhNTdlNWNlMjA2YzBmM2IwMDNhMzYzODYgcmVsZWFzZTI0LW1haW50CiszOTMyNSA5MzMwMDgwYTNkNDE3NThlMjZhMzZmYzdjM2JiODVmNjUyM2FiYzUwIGxlZ2FjeS10cnVuaworMzkzMjYgOTI2MTY5ZmRlNWU2MzNmMWUyYmE4ODI3ZTY1Y2MzY2YwYjAzZTRjYyBhc3QtYnJhbmNoCiszOTMyNyBmZGViNGE4YmNiNGUyNTA5OWEwMzhhNzcwY2ZhODVhMDJlZTlmZDU5IGFzdC1icmFuY2gKKzM5MzI4IDQzMjExYmUwZGU0MTVmZGExYmQ3YzZhM2Y5YWQ5MDBlOWJlYTYxZjAgbGVnYWN5LXRydW5rCiszOTMyOSBkNjgyNzkwZDVkYjBlMjRhYjMzN2RiYzJmNzUzYmIxZjdmMmJiMjBkIHJlbGVhc2UyNC1tYWludAorMzkzMzAgMGYxYTIzMWMyYzdjYWI1ZDIxZGZmOTNiZjA3Y2U5OTJlNDk0YTY2ZiBsZWdhY3ktdHJ1bmsKKzM5MzMxIDc4NzQ3ODkyM2U4MmYyN2UzYmIwNTZiYzUzNDc5OGFjYTMyZGZhYzcgbGVnYWN5LXRydW5rCiszOTMzMiAwNGRkNWIwNmQzYzhlZDUzZGJlOThlOTYyNDRiZTc4NTMwNjMwZmJjIGxlZ2FjeS10cnVuaworMzkzMzMgMzRmZjdjYTRjZWY4NTI3ZTNiMWZiY2JjOTUwZjc0MjE2NTBkOWNiNCBsZWdhY3ktdHJ1bmsKKzM5MzM0IGE2ZTcwMDA0ZTk4NzBjZDg3ZWYzMWIyZGMwZTM0YzIwZGJhYjUyN2YgbGVnYWN5LXRydW5rCiszOTMzNSAzODgyNGI2ZTM2MDA3YzM2OTUxZmNkNTFmMzllZjRmNDM0ZWJmOTljIHJlbGVhc2UyNC1tYWludAorMzkzMzYgMGViMzg2ZWU5NDBlMzAzMjZjNDdiY2FhYmExNWI5MjFmMDhlNTAzYyBsZWdhY3ktdHJ1bmsKKzM5MzM3IDA3MTM3Mjg2NzczY2FmZjZlZjA3NTkwMzYzODkyYTg1N2FhNjI4OWQgcmVsZWFzZTI0LW1haW50CiszOTMzOCA0YWNkMzA3NjFiYzIxNzYzMDNiZjQyYzc0YmJiMjhlMDk2ZmNjNGY0IGxlZ2FjeS10cnVuaworMzkzMzkgNmIzN2VhYmUyYWM0MzdiZmQ0NDg0OWRmMGFkNWU5MDNlMDY0ZmFmNyBsZWdhY3ktdHJ1bmsKKzM5MzQwIDVmNDAwZmIyZGQ4YTY5YjdjZDY5YTMxODkxY2JiZTY0NDQ2MDg2MGMgcmVsZWFzZTI0LW1haW50CiszOTM0MSAzOTczZDYzZDI2Njc3YzA2NzQ2MTM2ZjFiMTUyNjU3MTM3ODExYTViIHJlbGVhc2UyNC1tYWludAorMzkzNDIgOTFkOTY4Yjc3NTc5YTVhMzY2MWJjNDZlMDFmZWE5YTZkNGI0OTVkOSBsZWdhY3ktdHJ1bmsKKzM5MzQzIDQzY2Y1OWU3YTYxNDVhYzcxOGZlOTUzODQzZjQyMGFjYzgzYTFkN2IgcmVsZWFzZTI0LW1haW50CiszOTM0NCA0ZGE2ZDRlMGMzZDU2MjhjMGNmMWRlZjVhZTM1MGNlZjZlYWRlMWU2IGxlZ2FjeS10cnVuaworMzkzNDUgMTJhOWJiMjRiNmQ5NjQ2NjA3NDk0ZDYyOGVjYTg5ZWMwZmFlZDhhYSBsZWdhY3ktdHJ1bmsKKzM5MzQ2IGJlZDkzZDA0MTZkZGU4MmEzNDk4ZTJkZTc3YzM5OTNlN2ZiODQzYTQgbGVnYWN5LXRydW5rCiszOTM0NyA3ZjE2Mjc3NjY2MjE2YzFlNzg3YjIwMTc3YmJjZGQwOTQ0YTc3NGIwIGFzdC1icmFuY2gKKzM5MzQ4IDAxZWZmNjA3OWY5MGI2ZmFhZmJhNzQ2NWRmNzg5MDZhYjFiMTE3YTAgYXN0LWJyYW5jaAorMzkzNDkgMTcwODQ3OWFkZTRkNWJhY2Q0MDJkZDYzMTJlMzRlODQ3NTE2YjcwOCBsZWdhY3ktdHJ1bmsKKzM5MzUwIGM5ZWIyNWZlMzljYmJlMDVkNWFkMmZkM2M4ZjUyYmQ0OWMyMDVjZDggbGVnYWN5LXRydW5rCiszOTM1MSA5ZTA1ZWEzYjFiZjNiODVmM2EyOTllNGQzNDJkNGZiMTk0NzE5NWQ5IHJlbGVhc2UyNC1tYWludAorMzkzNTIgNWM3Y2NhMjU0NzJkZWZmZWU0NmQ3NWNhOThjNzE1MmZmYTE1ZjgzYSBsZWdhY3ktdHJ1bmsKKzM5MzUzIDZjMDg2NWJlYWFiNzMxMjkyMDgwZmEyMmRlNGFhYmJhMDE3ZjU0MzMgcmVsZWFzZTI0LW1haW50CiszOTM1NCA4ODM3ZGRmYWFkNDVlYWY4MzgxN2FkODFhZDMxNzVhOWQ3YTYyZDI1IGxlZ2FjeS10cnVuaworMzkzNTUgZjk2Mjg3ZDFiNWY2Zjk4YmU3ODVjNGI4NzJjOTg1YjY0YmU3MjcwZCByZWxlYXNlMjQtbWFpbnQKKzM5MzU2IDYzNGNhNGQ4YTMwNmEyMjIyMTlkNmFlZWIyYTYyMjBmYjBjNjEyMWMgbGVnYWN5LXRydW5rCiszOTM1NyBiNzA5N2Q5MWYwNGQxZWJkNTZlNDdiMGU3ZDIwMWRhNTdlZmQ3YjQyIHJlbGVhc2UyNC1tYWludAorMzkzNTggNWIxYTJmYjg2NGE3NjI2YzE2NDdhMGI1MzE5NzYxZDlhY2NhODU2NiByZWxlYXNlMjQtbWFpbnQKKzM5MzU5IDNiYjkzMjgwMWI2NDUyZjg4Yjc5YmQyZWVjMjBmYzU5OTczZWVjNmQgbGVnYWN5LXRydW5rCiszOTM2MCAzNzQ1ZTNjNmEzZTEzNjAxNjg5Njg0MjVlNDlmMDU3ZTVlZWY1ZmUzIGxlZ2FjeS10cnVuaworMzkzNjEgZGRlMDU2YTY2NmRkZWY1MmFkMzIwMzJkYTM4ZTU5MWQzMjlhZjk5NSByZWxlYXNlMjQtbWFpbnQKKzM5MzYyIDNlZWM5MTAzOGZiY2E5ZjQzOWFhMmRhOTc0NjViOWY1NWY0MzEyN2EgcmVsZWFzZTI0LW1haW50CiszOTM2MyAwYTZkYmNiNGUwNTY2MjMwNWNhZDM4OGEzYWIzNTMyNGEwNmY2ZWI1IGxlZ2FjeS10cnVuaworMzkzNjQgNGQwNWY5ZTdlNmUyOTRhOWU0MTdkYTU3NjA2ZmJmMzMxMGY1MmJkZiBsZWdhY3ktdHJ1bmsKKzM5MzY1IDE1NmFiZGE0ZTQ1NzNhOGUyZjRmMWZhMDdhOTA2ZWQxMjUwODY3MWUgcmVsZWFzZTI0LW1haW50CiszOTM2NiBmZjJlNjZmYzBhMjkyOTA0ZGMwNGQzNzIwMmM4OGJkY2UwNWMxZDNhIGxlZ2FjeS10cnVuaworMzkzNjcgNDg5NmY4MzM0YmZmMjQ0NTMyNjhhNWNiNTg4MGJkYmE5ZjUxOWI0NSByZWxlYXNlMjQtbWFpbnQKKzM5MzY4IGU0OGZjZDRjMzU4ZDQ5N2MwN2Y2MDczYjZiNTU0YjljNDY3ZDAxNzggbGVnYWN5LXRydW5rCiszOTM2OSAzN2ZhN2I2ZGNhOWJiODliYWIyZDkxZWQxZDY1Y2YwMGY0MmFhNGQzIHJlbGVhc2UyNC1tYWludAorMzkzNzAgMmE2YjY5NDJhN2Y3Y2I2MDQwNjA1NmJmOTBjOWI0MjE0N2UzZWNlOCBsZWdhY3ktdHJ1bmsKKzM5MzcxIGM0ZTVlZDdhMmJhMzdkNjUxMDA0NDFiZjIwZWIzYTVhMWE1NGIwMTQgbGVnYWN5LXRydW5rCiszOTM3MiA4NWYwYTZlODM4MGI1ZGQ3OTJjZDU4NzEyNGI2NzBkMTk4MjNlMjI4IGxlZ2FjeS10cnVuaworMzkzNzMgNDgxNDYzYTViMjBjODk2ZmQ4ZjE3NzY2ZTQ4MjZiMDY5MWIyYmNkNCBsZWdhY3ktdHJ1bmsKKzM5Mzc0IGZlMzIzNWZjZGQ3NzI1MmVkYWU3YmExNDFjNTBjNzRlM2VlNThlMTAgcmVsZWFzZTI0LW1haW50CiszOTM3NSA3Y2FhYmM3NDk5NzU2N2VlYTI4MTRmNjk0MjJmMDQxNDZmYzc2Njk5IGxlZ2FjeS10cnVuaworMzkzNzYgZDVkZjUyMjJmZDZkNTQyYzlhZmI1Y2M2OGI1YTkxZDQyODdjYzAyMCBsZWdhY3ktdHJ1bmsKKzM5Mzc3IDE2NTIwZmNjMDYwOTUwY2IwZjZhM2VhNTgwNDE3OWUwMmJhZjA5ZTggbGVnYWN5LXRydW5rCiszOTM3OCA1NWUyNzU5ZDAyMTEzNzI0OWYxYWY0Y2M1NzQ2ODdjZjVhOWRjOTcxIHJlbGVhc2UyNC1tYWludAorMzkzNzkgMjQ1ZThmNGNiYTFkYjI0ODZhNGE0YmRlMzE0NGJjZTQ5Nzc3N2M4NiBsZWdhY3ktdHJ1bmsKKzM5MzgwIGUwYmQ2ZjMyNGZkNmExZDI5NWM3NTYwNjNkNjA4Yzg1ZDk3OGEwM2QgbGVnYWN5LXRydW5rCiszOTM4MSAxYjdjNGZiZWUwYjhiZTEwZjMwODgyMDdmOWFhZTJkZDU3NGI4MzA0IHJlbGVhc2UyNC1tYWludAorMzkzODIgYzFmMGYxNzA5MzZkNTU3MmI0YTZlNzVkZjQ2Nzc1OGJlMTBiZWQzZCBsZWdhY3ktdHJ1bmsKKzM5MzgzIDEzMGI2Y2U5YmJmM2RjMTI3NjA4NWRmMmZkMTQ2OGVmNTBhYTcxMjUgbGVnYWN5LXRydW5rCiszOTM4NCBlZGRjZTQwZWQxYjE2ZTE3ZDYyNzBhZmJmYjQ3ZDE5ZDE3ZmNlYmU1IHJlbGVhc2UyNC1tYWludAorMzkzODUgN2QzZThjMmFlMzM5MTMyZTg2Y2JhZGM5YTc0NGZmZGE5Yzc0M2JmZCBsZWdhY3ktdHJ1bmsKKzM5Mzg2IDlkMzQzYmM4MTg2MzgxNmI1YjYxZGE1N2IyZjE2NTNmNWM5Y2IxZjQgbGVnYWN5LXRydW5rCiszOTM4NyA0YTUwNzc4NzNjYmEwYmJhOTlmZjhiZWZjZjZiYWQ3NjM1OGFjYmI5IHJlbGVhc2UyNC1tYWludAorMzkzODggM2QwM2QyY2JlMWFkMTZkZTU5NGYxOTZkYTljZGI1ZjY3ZjIwZDhlYyBsZWdhY3ktdHJ1bmsKKzM5Mzg5IDY1MjM4YzlhN2E2NjAxMDgwZDA1YTY4NjA3NzA2MDJlZjYyMzc4NTkgbGVnYWN5LXRydW5rCiszOTM5MCAxNzA3Yzk0NWQ2YzI0ZGQwODc3OWQ2ZjNjZTgxOWFjNzJkNmE5MWQyIHJlbGVhc2UyNC1tYWludAorMzkzOTEgNTk1NDUxYzJjOGVjZGM5OWM0MDY4MTEzNzdmMTE1NWVlZGVkZGM3YiBsZWdhY3ktdHJ1bmsKKzM5MzkyIGExNzAxMjM0NWFmNmFhMjlmMGMwNWNjMDIwNWFlNDhjMDgwZWJlNmYgbGVnYWN5LXRydW5rCiszOTM5MyBkMGU4NjU3NmYwYjVkZjU3OTg5YzhhNjI5Y2NiYThmMmFlZTYzZjY1IHJlbGVhc2UyNC1tYWludAorMzkzOTQgNDQ2MTI1OTM0NzFjOTYwYjczNGYzOWUyZTY4NjZkYjlkY2UwNGM3ZSBsZWdhY3ktdHJ1bmsKKzM5Mzk1IGNiNDk5YWVlMzZlNzhhY2JmYTdlMmE4NWUyNjIzYjhlZGQxZTk5YzkgcmVsZWFzZTI0LW1haW50CiszOTM5NiA3YTBkMGI0Yzg3ZDA2NDUxMTU2MDk5MmFmODg0NWQ0YThjZWEyZWJmIGxlZ2FjeS10cnVuaworMzkzOTcgNTgyYzkwZGVkYTlkZmUzMDQyNWNhNmRhMDVhNjVkNWIyYzUzM2QxZCByZWxlYXNlMjQtbWFpbnQKKzM5Mzk4IDA5OTkyOTBjNjc1ODhhMTAyNWFjZmNhNzViNDExNjlhMTZlZDMyN2EgbGVnYWN5LXRydW5rCiszOTM5OSA1MzE2ODY4NTRmMDg2ZWEzNjBlZGViZDJlNWJiMjRiZDgyMjRjNDI1IHJlbGVhc2UyNC1tYWludAorMzk0MDAgMWZkZmQwMTMwZTI4MTkyMTM4ZWZlMGQzMjdjOTY3YjE2NmJkOTEzYiBsZWdhY3ktdHJ1bmsKKzM5NDAxIDk3Yzk3MTk0ZTY0YmI4NzIzZTYyODMwOWJkZjAxZTdjMTcxZjY2MTkgcmVsZWFzZTI0LW1haW50CiszOTQwMiAzNjUxNGI5NTAwMmFiMWQ1OTJmMDU2YmY5Njg4ZGFkZjgxYWNjMjA5IGxlZ2FjeS10cnVuaworMzk0MDMgNTlhNjNiMDlhNGMyNjllNTI2NzVhZTMzNTdhYjhlMzliMGI2YWU3OSByZWxlYXNlMjQtbWFpbnQKKzM5NDA0IDM4NTVhOTYwYTZhYTk2Y2E5ZWM4NTlmZTlhMTIxMDc5MWI2Mjg1OGEgbGVnYWN5LXRydW5rCiszOTQwNSA5YTgzNzM4MGMzYzVmMTI3YTE3OGRiNmQwNjIyZThiYzczMDAwYzA2IGxlZ2FjeS10cnVuaworMzk0MDYgOGEzZDdmOWYwMmNjMmZlMWQxNWYzNmUzZWQwNDNmZjQzYjMwMzM0NyByZWxlYXNlMjQtbWFpbnQKKzM5NDA3IGNmY2MyNjQxYTkxMDk4MGQzMmI4NzJlZDhiMzg5M2IyZmFlYmY4YzYgbGVnYWN5LXRydW5rCiszOTQwOCA5ZDQxYWZhNjNiNzk1MzEzM2U0NjRlZjAwNjJiNGYxMDk4NzViZmEwIHJlbGVhc2UyNC1tYWludAorMzk0MDkgMzhlNTg4ZDFkODg1M2I4YTQ5YmQzOWViNTYwZjZjNmU5Mzg2MmFhMSByZWxlYXNlMjQtbWFpbnQKKzM5NDEwIDA4NTI4ZmJkNDgwNDlmYmNlZGQ0Y2ViNmYzMWE2NTQ4ODc2ZTY4ZmQgcmVsZWFzZTI0LW1haW50CiszOTQxMSA5YmU5MmZlOGE3YTgxMDEyMGU1NTA0Y2QxOTBkNTY0ZWZiZTU4OTc2IGxlZ2FjeS10cnVuaworMzk0MTIgMDM1NDA5ZWYwOTAxMWY1NWI1NmRlZWIyZTk2NzBjNDM5N2FjZTVjZSBsZWdhY3ktdHJ1bmsKKzM5NDEzIDI1NmU3Mzg0ZjI0ZGJkMzMzY2IzNWQyYmI5YmJiOTAxNzE2ODEyNTYgbGVnYWN5LXRydW5rCiszOTQxNCAxMzEyOTQ2ZjMyYWI1Y2UxMTczYTVlMmFmMWI0Mjg2NGVjNmQxYmQwIHJlbGVhc2UyNC1tYWludAorMzk0MTUgYWRlZGE5ZmIzNDg1ZDY3NGM3MGNkMjAyNjdlZTA4YTA2NmRlYzZjMyBsZWdhY3ktdHJ1bmsKKzM5NDE2IDNlNWMwN2ZhYWIxMTEzOTliMjQwMmNlOWNlNWJjYjc3MWVhNmM1NjggbGVnYWN5LXRydW5rCiszOTQxNyA1MjMzZDE5ZmY4N2YyNzdmMWQyNjQ4NTQyZjVjNTE5OGVhM2VlNmRjIGFzdC1icmFuY2gKKzM5NDE4IDcyZDNhZDA4YjJjNjIwYmFhNjYwY2RiMWY0YTljNGNjYWNmYjM4M2QgYXN0LWJyYW5jaAorMzk0MTkgNjllYWI4NTE3NGZiYTNkODYyY2Y2MDZiOTI4YTU3NmI3ODk5NGRmYSBhc3QtYnJhbmNoCiszOTQyMCAzM2Y2NjJmNjc5NWYzM2ExZTE5Yzc5NDcwNmZiMDJkNmMzOGUyNjdkIGFzdC1icmFuY2gKKzM5NDIxIDcxM2NjZmY3MWZkZmU0YjcwMzIzM2VmMmZjZjYwNThlMzk2ODQyMjkgYXN0LWJyYW5jaAorMzk0MjIgODU5NjBjYTRmYzA4OWU5YTE2ZjRiYTkzYjY2MDUwOWNmOTEzYzM1ZCBsZWdhY3ktdHJ1bmsKKzM5NDIzIGRiYTFlMmRmZDhkZWE3ODQ1ZWJiOWNkNzJjZDM2NTgzNmFmZGQyNjcgcmVsZWFzZTI0LW1haW50CiszOTQyNCAyMDBlMmVmNGRiZGM2NDNjNDdmNDU0ZjY5MTEzNzVjZDNiNDI3MTI4IHJlbGVhc2UyNC1tYWludAorMzk0MjQgMGY0MDVhMWM1MzQwNTQ5NDI2NGY5N2I0ZGRlODJlZTFhNjg5MDRjMSBsZWdhY3ktdHJ1bmsKKzM5NDI1IGFhYTM2NDZmNDU2NzEyNmIwMGI0NDIxMmZkYjhjZDkyZDYyMTcyNWUgbGVnYWN5LXRydW5rCiszOTQyNiAwMjM0Yzg0YTdkOGRhODI2YTI1MTc0ZDgyMTY1OTZkMTliYzZmZmY5IGFzdC1icmFuY2gKKzM5NDI3IGU1MmVkODc4YzVlZTBhZGUyMDdjZDI5ZTk0ZjQ0NjMwYjQ2OGIxZjMgYXN0LWJyYW5jaAorMzk0MjggNDk2ZDI5YjBiYTViYmFmNjM5NmNiMjI5YzlhMTBkYTBiOTg2OTAwZiBsZWdhY3ktdHJ1bmsKKzM5NDI5IDExZTE1ZjdhYjk0MDZlZWM1YzYyYWQxYzQ2ZjJhNWEzMTU5MWQzZjUgcmVsZWFzZTI0LW1haW50CiszOTQzMCBkOTJmMGVkNmE3ZjJmOWQ3ZWViNWI3YzM1YjAzNTZlOGRjMmQyMDRjIGxlZ2FjeS10cnVuaworMzk0MzEgYTg0Y2RhYmI4YWYwNmRhYmQ5N2U5Mzk0OGExNGFmYjYzYzcyOWY1YyBsZWdhY3ktdHJ1bmsKKzM5NDMyIDg5ZThhNWVjM2RhMDU3N2I3MmIxNGRhNGMzZDI3Zjk4MGUxYTc4YzEgcmVsZWFzZTI0LW1haW50CiszOTQzMyA2NzYzYzkxZmNmZWY0MDk5ZTljNDZiZjVmZmMyZTQyZTk1NGZkNGIwIGxlZ2FjeS10cnVuaworMzk0MzQgYmFlZDhiN2RlYjU2ZDFjOTVhZDk0MGM1NWI5MDFjYzNlOTA3YWM5YyBsZWdhY3ktdHJ1bmsKKzM5NDM1IDliMjEwNDAxMWY3MDI2YTVjYzk2MWUwZjVlZTEyOGIxMmQ2MTEyYjQgcmVsZWFzZTI0LW1haW50CiszOTQzNiBiYjY3NzA3OWY4MjdjZTIwMTY1YWEwY2NmMzEwZGRjNmIzMGZhMGRlIGxlZ2FjeS10cnVuaworMzk0MzcgMGU4OTY0ZjUzNzMyYmRjOTIwYzZjZjEwZWUyOWE5YzFiYjljNWYzMyBhc3QtYnJhbmNoCiszOTQzOCA1MTZlZDYwYThmOWNhZjY3MGYzZDA5NzE4M2ZlZTQxNTA0NThlYmEzIGFzdC1icmFuY2gKKzM5NDM5IDYwNjFhYWE0NGViYzUzNWU0OWI2YjgzNzJiMzkxNDgxNDU0Y2NjNzYgYXN0LWJyYW5jaAorMzk0NDAgZDMzMmIyMTY4Y2IyNDcyNjlhNDZmYzZhNWZhYmFjZmQ3MzZhNDM1OCBhc3QtYnJhbmNoCiszOTQ0MSBjZDdkNmM2ZjJkYjIxNzU0ZTJiMjAzOTc3YjI0NTdlMjQ5ZWEzZWYzIGFzdC1icmFuY2gKKzM5NDQyIGUxNThmMWUxN2FiNGI3MTU5YWMxZmVmNjFhNTY4MjZmZjk1YjdjZmQgYXN0LWJyYW5jaAorMzk0NDMgMDZlZmVlYzc0ZDU5YTUyMTI0OTg4N2E4ZWI3ZDczZjUwMDJlZjExYSBhc3QtYnJhbmNoCiszOTQ0NCAzNDM4ZWViYTU4YzM4YThmZDM2NjM0Y2VkNjAzYjM1ZTRiZTY5ZTNlIGxlZ2FjeS10cnVuaworMzk0NDUgODFhMDZhOWExYWM0N2M0OTdiOWM4Yzg2MzE1MDQ3YTgzMDM2NGY1ZiBsZWdhY3ktdHJ1bmsKKzM5NDQ2IGFiM2RkYmJkMDg2MmM4ZjQzZWY3MTNjODRmMDcyNjhjYTlkNmZmNjUgbGVnYWN5LXRydW5rCiszOTQ0NyBiYmY4MTU3ZDAzOTg0ZTk2YTlhODY3ODg5ODgwNWZlYTI3MTk5MzU5IHJlbGVhc2UyNC1tYWludAorMzk0NDggNGZjN2E3ZWRjYjRiNmFmYmM5NDI0MTk2YTEzMDJkMGY1MTVkMDFhOCBsZWdhY3ktdHJ1bmsKKzM5NDQ5IDZiOGM1NTg3Nzc1NWM3ZmRlZTA1NDM0YTZlOTg5MWMxODZiYjVmMDQgcmVsZWFzZTI0LW1haW50CiszOTQ1MCAxYTNjZjk2YzhkNDY0YmQ1NDU0ODkyZDY0NzUwZTFmMWU2MjNhNmQxIHJlbGVhc2UyNC1tYWludAorMzk0NTEgYmNkOTgxMTIzNWQ0OTYyYmUwNGZiNmQ4NzU5OTU5OWM4ODc5N2JhMSBhc3QtYnJhbmNoCiszOTQ1MiBhMTU5NTg0ZGI2NWMxMzQxNTdkNTYxMjhiMGYwMzM3ODFiNTVhZThhIGFzdC1icmFuY2gKKzM5NDUzIGJhODQ0YmQ3YTMyYjZiYjY1MTA1MzFhNjNhYjBkYzAwMjkwOGQ2NjggYXN0LWJyYW5jaAorMzk0NTQgNDY4MWE4ZmE0NmQwNmVjZmM3YTRjNjc3NDRmZDM1ODBjY2RjNDU4ZiBsZWdhY3ktdHJ1bmsKKzM5NDU1IGNlNWI3NTMyNTIwYTg3ZDk0Njc0MDM5NjFmNmI5ODhiM2E0NDk3NDkgbGVnYWN5LXRydW5rCiszOTQ1NiAwZWFlNTIxOWYzYjgyNGQwZmU2MjdhMWQ3ZGE0NzM3YWJlNDg4ODQ1IGxlZ2FjeS10cnVuaworMzk0NTcgM2U2MjEyMTEzZTgyYTBkY2JiMDllOWUwOTU5NTcyMmY2NTUxNTA0MiByZWxlYXNlMjQtbWFpbnQKKzM5NDU4IGExODVkNjk2MzBiMzhhMjc4Y2M3NDY1MDMxMmNkMWJkYThiOGRlZWUgcmVsZWFzZTIzLW1haW50CiszOTQ1OSBjMzUzYzI3ODJhZTE1OTVkNWU0NzU0Nzk4MmQwNDQ5MjI3MzVhZmRkIHJlbGVhc2UyMy1tYWludAorMzk0NjAgOTdkYzhmMDZjNGZhYjdkOTU0YWI1M2Q2MjAwMDA0ZDkzNzBhNjMwNSByZWxlYXNlMjMtbWFpbnQKKzM5NDYxIDBiY2IzMDNiMzQxYjY2NGI5ZTE2NTRjNGQ1YThhYzVlMGMzZTE0ZmUgbGVnYWN5LXRydW5rCiszOTQ2MiAwZmU4MTE3Yjc2MWQ3NGFkMWEyZWY3MjA0OGZmNTFhYjM0Y2FjZDNlIGxlZ2FjeS10cnVuaworMzk0NjMgZmUwY2E2MDQ4MjY3MDI3NzIyY2IxNmQ4MTdhMzhmZDhhYjNjZjhjYiBhc3QtYnJhbmNoCiszOTQ2NCAwNzk1NmQ0YThlNGFiYmRkNzVjMWY2YWMzZjM4Y2VkN2Q1MWY1Zjg0IGFzdC1icmFuY2gKKzM5NDY1IDEyOWFiMjJjNGIxOWE5Y2E0ZDE5ZTdjZTI5NWU3OWJkNTNmMWM3OTcgYXN0LWJyYW5jaAorMzk0NjYgZjU0ZTUwYzUzYTcyZDM5YzZhZGQ3ZjYzYjliMzE1NzQ4ODY1MjUyMyBsZWdhY3ktdHJ1bmsKKzM5NDY3IGM4OTNjYWViMTEzNzA1NzljYTYzNjQ4MzhlMzFlMjE1ODg0M2EyNjEgbGVnYWN5LXRydW5rCiszOTQ2OCAyMmE0MDkzYjUxNTFjNjliODczOTVjZWMyNjlhYzA2ZjZmYWNjY2NjIGFzdC1icmFuY2gKKzM5NDY5IGRhZjMzOGVjZGNjYzZiZjYxMGEzZjY0NjgyYzczMGQ0NDYyNmUxMTQgYXN0LWJyYW5jaAorMzk0NzAgYjcyMDEwNGI3ZGI5MTY1YTAzOGE1NTM3OGIxZTdmNDUzZmZhZDI1YSBsZWdhY3ktdHJ1bmsKKzM5NDcxIGJhNDRlOWUyYjU1NDcyOWY3MjBjZGQ3Y2NjZWY5ZWEwMGNiMjM5YTMgcmVsZWFzZTI0LW1haW50CiszOTQ3MiA4ZmE4M2E5ZWJjNmVjY2VjZWJiOWQwOTVhMTU5MWFmNzBiZGU2NGM1IGxlZ2FjeS10cnVuaworMzk0NzMgZWQ2NWUwYWQyMjE1OTViNzgyOTY0NGY0Mjk1OWQ5M2ExZDRkYjU4ZiBsZWdhY3ktdHJ1bmsKKzM5NDc0IDc3MTg0N2NiZTNiNmNiNjg2MDI0NDdhZDA3YWZjMGJiOGExYzVlYTUgcmVsZWFzZTI0LW1haW50CiszOTQ3NSBmNjNlNjk2MGM1Y2ZiZTI2YjFiNTlhZjFhYTIyMTliZmE4ZWFlZGMyIGxlZ2FjeS10cnVuaworMzk0NzYgMGI3ZmE2ZjA1NTJhYmU5MDUxZWU0ZjRjMzNjZGNmNjQ3OWU2MTE3MiBsZWdhY3ktdHJ1bmsKKzM5NDc3IDI2YmEzZDRmNGZjNDE1NTdmZDI2ZTNkZmVjMmQzZjZhZmE4YzE5N2UgbGVnYWN5LXRydW5rCiszOTQ3OCBhNTc4MDAyYzhmNjU5OTIyMGQwYmFhMGI2MDM4OGJmYzdlYjhhY2U5IGxlZ2FjeS10cnVuaworMzk0NzkgMTVhODk3NWY3ZmE5M2Q1YTA2OGY3ZTJiZmI0YjI2NGE0N2IwOTU0NiByZWxlYXNlMjQtbWFpbnQKKzM5NDgwIDFmMmFmMjU5OTY4YjQ1NWQ0MGIzNWFkN2M0NTE0ZWNlNDM4Y2U3OTYgbGVnYWN5LXRydW5rCiszOTQ4MSAwYTI4ZDQ4NjM2Yzg2NDNmZGZjZmM4YjcyMDUxNzUxOTBjY2EzMzYwIHJlbGVhc2UyNC1tYWludAorMzk0ODIgNWQ1ODQ0M2Y0ODliNGZkMjkxMGE0MGYwMWRhMzU2YTViMTBiZjE3MCBsZWdhY3ktdHJ1bmsKKzM5NDgzIGU3ZmQ4NTU1MGJjMGI1OWI4Zjk2NmVhMmVmNWU5YWU0MzNlMjA5NDEgbGVnYWN5LXRydW5rCiszOTQ4NCA5NTE2YmE1NGI5ZGY0NDc1N2RlNDgyOGJiZmEyN2I0MDZiMDAwODYwIGxlZ2FjeS10cnVuaworMzk0ODUgNWRiMjczMTVlZGNmZmE1YTY4ZWI3YTE5Y2UxNWQ4M2Y0ZTgxNDc5NCBsZWdhY3ktdHJ1bmsKKzM5NDg2IDRhYmFmNjkyMzQzNzE5NGRiYzYzMjBhZjZhNTEyZWVmNDM0ZmVlYzIgcmVsZWFzZTI0LW1haW50CiszOTQ4NyBjZWFjMDI3Nzg1MjM0OWJlNjU4OWMxM2RhY2JiMGVlY2EwOTk1YzVhIHJlbGVhc2UyNC1tYWludAorMzk0ODggZGUxYzVkMTdmZGU2YzYzMGU5ZjUwYWFhNWY0NjFlZGVmMzA2MzllYyBsZWdhY3ktdHJ1bmsKKzM5NDg5IDQzNmJlMmM4OTE0MDJmNGRjZWQzZmQ5NjYyNzA1MWU5ZjQ5NTlkYjEgcmVsZWFzZTI0LW1haW50CiszOTQ5MCA3ZGQ0MzE3NTBiZDM2NWZkNWQzNzExZDQzNzA2M2U3NzUzYTFiMDgzIGxlZ2FjeS10cnVuaworMzk0OTEgZWNkNjFjOTJhZGYzMTYyZTYzMTAyNzNmZjhlZTM2NzcxOTM4MzA5NyByZWxlYXNlMjQtbWFpbnQKKzM5NDkyIDk1MjFlMzgwMzgwZjBlYTNlYzQzM2UyZmJiNWVmZDlhY2E1NjUyNmMgbGVnYWN5LXRydW5rCiszOTQ5MyA2YmRlNmNkMjM5NTRjNzEyNTczNTRhYjMyMzJhNzk4MWUwOGE5ZDBiIGxlZ2FjeS10cnVuaworMzk0OTQgMTdiMWRmZDNjYmJiZDMzZmVjMTY2YjllOTg0NzIxY2U2NDBlZjZmZiByZWxlYXNlMjQtbWFpbnQKKzM5NDk1IGNjOTQxNmVlNThlMTlmMjgyYWJkNGMxMWMyNTgxYTcyYzhjMTM0ODQgbGVnYWN5LXRydW5rCiszOTQ5NiBmNzM3OGU5N2I2NmEyNDc4N2NkNjdiN2RhNWZiZDVhMmQ5YjgwNGIwIHJlbGVhc2UyNC1tYWludAorMzk0OTcgZTczYWNjZjNlZGRiNGEzMmY5Y2M2NTE1MGE4YWZkMjQ2MDRkMzdiNyBsZWdhY3ktdHJ1bmsKKzM5NDk4IDMzNmI2NjRhMjIxMGU5MmQ5NGJlMWQ5NmIzMzM4YTFiNzBmNWE3YjkgbGVnYWN5LXRydW5rCiszOTQ5OSA1ODI0MTMwYjdhYzM1MGZmMjdkZGFkYTU5MGFhMTc0M2YzODE3NDExIGxlZ2FjeS10cnVuaworMzk1MDAgYTdjY2NjMzkxMjI4MDIyYTgyYjcyMTAzZjllYzQ2OGQ2MGVhNGU2OCBsZWdhY3ktdHJ1bmsKKzM5NTAxIGRjODUzODg0NWIwYzg5MGVhNzkyNzU0YjRmNTJkYjRjOTk0OTA3MmEgbGVnYWN5LXRydW5rCiszOTUwMiAzNjNlNmRkMDc5ZmNhYzM5N2YzZTlkMTM2YmIzNTNjYjI3ZTM0MDZjIGxlZ2FjeS10cnVuaworMzk1MDMgMzlkYmUzYmUzMjdhYWFmYzdiYTRjOTg0OGE4ZmE1MjUyODNkOGQzZCBsZWdhY3ktdHJ1bmsKKzM5NTA0IGQ1MDRhMzAyYmY1M2UzYTNkYWNiNGNlZDk0YzcxMDhlMGVjZjkxZTcgbGVnYWN5LXRydW5rCiszOTUwNSBmMTdlZDNiNjJhZGFiMTU2Njk0NzgzNzhiMGQwODFjY2FkNGQyOWYzIGxlZ2FjeS10cnVuaworMzk1MDYgZWE1M2U3ZDk4YjAwNmFhMjM5ZjkzMzQzMTczNTgyNWFmZGUzNTY5NyByZWxlYXNlMjQtbWFpbnQKKzM5NTA3IGZhNzM3NjVlOGVmNTFkODU3MzY5YWYxYzM3NTlmYzEwZDI4NGZhN2YgbGVnYWN5LXRydW5rCiszOTUwOCA0NmYwYTQ0ZjQ5ZTY0M2ZlN2NhMmMyYWQzNWU3NTBkZmU2OTA4Y2M2IGxlZ2FjeS10cnVuaworMzk1MDkgOTY2ZGVhYzE1YTg5MGRmNzNhMGU2ZTUwYmI1ODYyNzhiZjhjYjg0ZSBsZWdhY3ktdHJ1bmsKKzM5NTEwIDg3NTczOWQ3MmZjMWM3Yjk4NmVlNjA1ZGU1Yzc5NWI0MGUyYTFhYTggbGVnYWN5LXRydW5rCiszOTUxMSBjMGQ2YmFlMzViNGU3OGZhMjBmNzdmMzE2MzdkZjJhYjc1NGNkMGFkIHJlbGVhc2UyNC1tYWludAorMzk1MTIgZTQxZmRhOWYwZmQxMDMzY2YxOTFhOGFkZWZiNGIxMjdhMjAxNzE0OCBsZWdhY3ktdHJ1bmsKKzM5NTEzIDdkMGE1YWMyNDY2OWFiNmJlNDcwYWQ5OWFjNzFkYjhhMGExNGZmYTAgbGVnYWN5LXRydW5rCiszOTUxNCA4MTI1OTAwOWJhMmM4ZjAyNDExMWM3MzA4YmM3NzQ3NmU1NDcwODQ1IGxlZ2FjeS10cnVuaworMzk1MTUgMjUzNzhiZGIxYjNhMGRhOGNkZGNlZjQyMDgwN2NmOTRlMDZmOWUzOCByZWxlYXNlMjQtbWFpbnQKKzM5NTE2IGFjZmMwZTIyY2Q4ZmM1OGU2YjIyMjZhNjZkZTBkZWExMjc5YTJlYzIgbGVnYWN5LXRydW5rCiszOTUxNyA3NmUyOTVlYTUxNTJjOTg0NmYxZTA5NjczYWU0NzI3NzliNjY4YTY0IHJlbGVhc2UyNC1tYWludAorMzk1MTggMTFhMjY1MGU4NTY4ZGMwYTc1MWJkYTZiODRkN2QwNTZmMDEzMDI4YyByZWxlYXNlMjQtbWFpbnQKKzM5NTE5IGJiYmI3ZGRhMzJmM2VlMDg1OWI4NjIzM2JmNmYzN2Y1N2NiMjVhZDEgbGVnYWN5LXRydW5rCiszOTUyMCBkNzlhZjA2NTExNTUwNmZiZDMwODNlYjA4MzIzNDFmM2ViNTk1ZTA1IGxlZ2FjeS10cnVuaworMzk1MjEgYjE5Y2Y3M2M1NGE3ODAwMWQ2ZDZkNWExM2RmYjA1ZDk3YTcxYjJhMSByZWxlYXNlMjQtbWFpbnQKKzM5NTIyIDcyNGJiZDQ4OWFkNDcyN2U5MDUyYzY5YjU2MzQxYjJiNWIyY2QyYTkgbGVnYWN5LXRydW5rCiszOTUyMyA1N2Y2MzBhOWRlMjYxOTYxNmYyYjIwYWUxYzM1N2ZiNDNlMDEyODUyIHJlbGVhc2UyNC1tYWludAorMzk1MjQgOWI3ZDExN2ViNGJjOTZkY2NhNzRjNmM4Y2VlOGFiYzkxODQ5MTkyZSBsZWdhY3ktdHJ1bmsKKzM5NTI1IDExNzQ0ZjdiYjQ3YTgyZDc4YjM2OWY5YmUzN2U2ZjczMDBjMjllYWUgcmVsZWFzZTI0LW1haW50CiszOTUyNiA2OGFkNTJiMDQ0NWJkYjdmMjI4YWVjNzcxY2Y3ODM4YjUxMzMzOTQ3IGxlZ2FjeS10cnVuaworMzk1MjcgNDE0MTNmMjMzNDViNGY3NWUwNDU2NzE0ODBiODA5Y2QyYTNkOTZjYSByZWxlYXNlMjQtbWFpbnQKKzM5NTI4IDhhNmM5OWY4NjVlYmQzOWNmZTc5YzUwZWFkZjg0MTU5OTRmMWRiNWQgbGVnYWN5LXRydW5rCiszOTUyOSA4YWQ5YTJmYThlYjJhNjA3OGY5NmFmMzBjODNlMmM1NTlkYWIxZWVkIHJlbGVhc2UyNC1tYWludAorMzk1MzAgYmZiZTJjOWIxMjE1OThiNmU1YTNmYzE1ODI3ZjIwNDE0NDBlNzQxYyBsZWdhY3ktdHJ1bmsKKzM5NTMxIGYyMzVlOGVmMGQ1NjkwNGZlMjA0YWRhYmE3Mzc1ZGQ3MjcyYTYyZmMgcmVsZWFzZTI0LW1haW50CiszOTUzMiAwN2VhZjYwZjc1NjUwYjE3MGYzNWQzOWI5M2FlNWYxZGEyOWFkYmUwIGxlZ2FjeS10cnVuaworMzk1MzMgYjhkMWI0NTI5MjA3MTE2MzM2OGI1N2NjZTcxYjQwYzNlMzc5MzBlMSByZWxlYXNlMjQtbWFpbnQKKzM5NTM0IGFjODgwNDRjZGU0ODZiMDBhM2U0NzhkNzc4NWI3ZmQ3YWQzMmJkZjggbGVnYWN5LXRydW5rCiszOTUzNSBkZmFiZjBjN2YxYWRmZDE3YzQ1MjZjZjJiZDljYTNkY2I4MDJmYjg3IHJlbGVhc2UyNC1tYWludAorMzk1MzYgYzg2NTU4ODVlNDA2NWQzNTUzMzgzNDkwOTA5MTNmODVjYWZmZGYzNSByZWxlYXNlMjQtbWFpbnQKKzM5NTM3IDZkYmZiZWU1ODVjYzgzZmUzMzIzMjY0NmM2ZDc4YThjYTg0YmI1YmUgcmVsZWFzZTI0LW1haW50CiszOTUzOCAxNTJhZTcxOTNjOWE3N2VhMmJhMGM4N2M0Yzc0NzYwZDgwYmU2MDU5IHJlbGVhc2UyNC1tYWludAorMzk1MzkgZmEwODgxZmQ0OWI3YTk1MDVlMTc2OTY1Y2ZhN2E3Yzg2NDcwNDkyNiBsZWdhY3ktdHJ1bmsKKzM5NTQwIDhiYWQxYmZjMzMxOTkyYzhlMWYzNDllZDUyYmE5ZTE2NDVmOTliMTEgcmVsZWFzZTI0LW1haW50CiszOTU0MSAyNjkxY2JkYWU1OWJmMzU2MTdmMWEzMzY4MDUwNjNlZGZhZjRjMjdmIHJlbGVhc2UyNC1tYWludAorMzk1NDIgOTA5MzBkMmQwYzE5MTA3NmEyYTAyN2Q1OWRkN2YyN2VmMzM0OTViZiBsZWdhY3ktdHJ1bmsKKzM5NTQzIDM1YzQzNjc0MDgzYTlhMzQxMzNlN2EwZmEyNGYzMTIyNzQ0MWIxZDMgcmVsZWFzZTI0LW1haW50CiszOTU0NCAxYjI1ZmU4ODM0YWVmZDdlY2JlY2RiOTAwM2M0MjY4NDk3YjU5YWJjIGxlZ2FjeS10cnVuaworMzk1NDUgZmQ1MWNlOGQzNWFiNGZkNDJhZjVlZmY2MWQwMmRjYzI3MGI0NDNjMSByZWxlYXNlMjQtbWFpbnQKKzM5NTQ2IGNkMzEwMjdhNzE2N2EzNzU0OGYyODU2NzljNWM5NjdhMGJiZWFjNmUgbGVnYWN5LXRydW5rCiszOTU0NyBkM2FlNzkzMGNiOTM5NTMzZmNmZmQ0NGQxNjk1ZDkzNjJlZDBhNGM3IHJlbGVhc2UyNC1tYWludAorMzk1NDggNzNmZTIxNjNmMGIzMGQzM2EwMjZjOGJhNmQyNTI5MGVhNTI1OTA2MiByZWxlYXNlMjQtbWFpbnQKKzM5NTQ5IDVhNmM0ODNlZDY4OWY0MTA1ODc4NDI4ODIwN2ViOTkwZGEzMTA0NmMgcmVsZWFzZTI0LW1haW50CiszOTU1MCBjMjhkMGVkODZmZjA1OGI5ODEwMGU2Yjc3MTMwNGQ0MmQxMTUxNjk4IGxlZ2FjeS10cnVuaworMzk1NTEgOGVmNTAwYzQ1MDZjNzJiNzRiZjlmYTA1MDBhOTU5ZmRkM2Q1MGZmNSBsZWdhY3ktdHJ1bmsKKzM5NTUyIGY0YzJjNjFjYjU2MDk1OTUyOTk0MTI3MmUxODBkZTQ2MzI2MWUyNWMgcmVsZWFzZTI0LW1haW50CiszOTU1MyAzNzg1OWM2YWQ1YmI1ZjdlYmFkMTlhMTY5ZDk4ZGVhNDI2YzEyMTUyIGxlZ2FjeS10cnVuaworMzk1NTQgNTJjNjVkNzNmYjc0MDE5ZjZmOWFiNTQ3YzBmYjE4NTEwOWIyYjBiZiBsZWdhY3ktdHJ1bmsKKzM5NTU1IDA5OGVhMWUxOGU4ZDk3NjA0ZDhmNmYxOGQwYWY5ZGExYThhMzViOTAgcmVsZWFzZTI0LW1haW50CiszOTU1NiAwYWUzMDcyMTI3NTUwYWUyNGI3NDJmMWIzMmJjZDFjNDE1MmIxMmZiIHJlbGVhc2UyNC1tYWludAorMzk1NTcgMGRhMzk3NWZiMGJiZmNmNzgyZDhjMGY2N2U2NWU1MDJiMTA2YTc0NyByZWxlYXNlMjQtbWFpbnQKKzM5NTU4IGU2MTE5ZDU3N2NkMzVmZDhkNTM4NWU1MGNjMWZkYWJlNGNiZTQ3OTUgbGVnYWN5LXRydW5rCiszOTU1OSAwMmE4YzA2NDNmNWJjZTI2NmJlYWI3NTBhYjkxYzcwMzZlZjc4MTdjIGxlZ2FjeS10cnVuaworMzk1NjAgMWNmMTcwMzdhMmNhOGM3NTgxNzdjYjdkYWExNDFhMDM4YTQ2MTgyMyByZWxlYXNlMjQtbWFpbnQKKzM5NTYxIDVmMjc4NTcyMmNiYWQwMzk0MWEyMTY3NzE2N2M3OTZmNzNmM2ZlYTIgbGVnYWN5LXRydW5rCiszOTU2MiA0ODA2Y2IwMDlhOWNlNjIzY2VmOGMxYTExYWE5ODAxM2QzNDFhNjAyIHJlbGVhc2UyNC1tYWludAorMzk1NjMgOWEyZTIwMzE4YzlmNWZiZGI3OGE5MTk0NGFmMDg4ZDllZmNjZDNhZCByZWxlYXNlMjQtbWFpbnQKKzM5NTY0IDYyMDk5MmFhMGE5ZWY1ODNkMzZiZjkzYzRjMTE5Y2RjMjgyZWEwOTcgbGVnYWN5LXRydW5rCiszOTU2NSBiNjhiMTM1YjQ1NTI2MWQyODI5OTcwN2M2NmU1MzBjZjkwODc0OWQ2IHJlbGVhc2UyNC1tYWludAorMzk1NjYgYmNkMDVjZjJkNjFiYTgwY2U5YjU3NGI5Mzg3YTJkYjMyNTUzZjZlNyBsZWdhY3ktdHJ1bmsKKzM5NTY3IDhjY2FkNzMyMzE1Zjg5MmRiNTNiM2RiNTE5ZDc3ZThkMDA0ZTRhY2YgbGVnYWN5LXRydW5rCiszOTU2OCBhZmRhZGQ1NjkxOTcwNWMxZTE5MTk1MWYyYmQ0Y2I1NGEzYjcwNzE3IHJlbGVhc2UyNC1tYWludAorMzk1NjkgNWMwYzA2ZTIyNmVjMDZlYTY0ZjRhOTA2ZDM2OTFlNjA3MDgwOGE3YiBsZWdhY3ktdHJ1bmsKKzM5NTcwIDQwZGRmMzY2ZjVhMTUyZjZiZDIwZTk4MjA5MjE5MjliZDkyY2YzNDEgbGVnYWN5LXRydW5rCiszOTU3MSA5Yjk5NGM2N2U5MDljMDg2ZjAyNjE3MTFiOTliNjRhNzc0YjkxMDFmIGxlZ2FjeS10cnVuaworMzk1NzIgODczYTFiMmVmZGM3MzY1NzZkYTA0ODQ4MTRjZjY1NjA4OWMwMWNlZCBsZWdhY3ktdHJ1bmsKKzM5NTczIDJjMjgwZTQ2NjFkMGEwNjk0NDRjYTIxMDE0YjVhNGFkNTY2ZmY3YmEgcmVsZWFzZTI0LW1haW50CiszOTU3NCAzOWViNmEyMjFjZjMxMjQyMjFhMTRiMzhlNjNkNDk5MWNmMGNkOGZiIHJlbGVhc2UyNC1tYWludAorMzk1NzUgMjFiYzYyNjJlYjk5MjBhYzhjMmU1N2VhMWUzZjBiZmM3ZGU2YTBhOCByZWxlYXNlMjQtbWFpbnQKKzM5NTc2IDg5Y2YyZTNmZTcyOGE2OGY0YmM2NmZjYTljMGFmNzllMGUwODVhOWEgbGVnYWN5LXRydW5rCiszOTU3NyBmODZjZDI3Nzg2YWIzMTliNzM2NTUxMGI1NjA1MDNmNjY1YTBmYWE2IHJlbGVhc2UyNC1tYWludAorMzk1NzggNzc1NzFmNzFiM2U2N2IwYmYzZjVkODlhNDYzY2JlMzA1MDJiOTMwYSByZWxlYXNlMjQtbWFpbnQKKzM5NTc5IDVhOGJmOGU3ZDAxMDJjMGUwYjFlZmRkODFhZDAwYjcyMDcxZjIxYmUgbGVnYWN5LXRydW5rCiszOTU4MCBhNjcwYTVkZDFmYzZhYTkxN2JiNjJhZDQ1NjA0YzNmY2I2ODNmNDlhIGxlZ2FjeS10cnVuaworMzk1ODEgMjNkZGE5MmRlOTkzOGEyOGZmNTU1ZWM4MTM4Zjk0NDYwYjMxMjA1MSBsZWdhY3ktdHJ1bmsKKzM5NTgyIDFmMjM2ZTU5OGFlOTc2MzFkNGRiNDQ3MjMwMjUwMGZmMzM4NDFjM2IgbGVnYWN5LXRydW5rCiszOTU4MyBhZjNhMDY2MjVhNmU1OWMyZGJmOTJiNDBlYWJiNzRiYzJkNDU2ODFiIGxlZ2FjeS10cnVuaworMzk1ODQgMzVhOTllY2NhY2E2NzkzMjZmNWU1Yzk5MGIzYjlmNmE2OTRjZjliZCBsZWdhY3ktdHJ1bmsKKzM5NTg1IGVjYjc4ODYzYTRlZTdmMzE0MzJiNzlmY2MxNDM2MTQ5YzA1NTBkYzEgcmVsZWFzZTI0LW1haW50CiszOTU4NiA3YjJiOGRiOTgxMzYzMzUwN2NlNTk2NWRmMzg3ZDI0NTViN2UwNGIyIHJlbGVhc2UyNC1tYWludAorMzk1ODcgYzZkN2YxZmU5ZDFlYmU5MWE2YWJiOGYzMjVlMGI4Y2U1OTIwZDhmZiBsZWdhY3ktdHJ1bmsKKzM5NTg4IDkwYmI3MTEyMjI1N2MxMTIzY2VjODliNTUwOWI3YjkyODFlZmNmNDYgcmVsZWFzZTI0LW1haW50CiszOTU4OSA0ZDFiZDlkMGMwMDZkYjY2M2VjZTU3OWM4YTI0MGVlNmJhMzdiMDczIHJlbGVhc2UyNC1tYWludAorMzk1ODkgZDAyZDM4NzU1NGUyMDBiZWZjZWVjOTk5Yjc4OGY0NTkzYjQzNGI0OSByZWxlYXNlMjQtbWFpbnQKKzM5NTkxIDcwOTI3Yzc5OWEyMWUyNmIzYjVjZDBmNmZjMTA1Y2JhZjk3MWNkZjQgbGVnYWN5LXRydW5rCiszOTU5MiA4ZmZlZWRiNjA2ZDMzMGNkZDNhNGQxNmJhNjc2YTFhNmVhMzBiNGNjIHJlbGVhc2UyNC1tYWludAorMzk1OTMgNmYzZDIwOTU1NWViNTVmZjQ4ZjU1YTFkOTQ1ZDRlZmYwYWEyMWU0OCBsZWdhY3ktdHJ1bmsKKzM5NTk0IDcyNjYwYzA4NjZhMTlmMDAzNmU3MjA4MTc5OGJlYmI4ZjZlMWVmMWEgbGVnYWN5LXRydW5rCiszOTU5NSA3NzRiZjlhMzhiMmFiOTQ2NjZjNWZiNjU0ZGE0ZTI0ZTI0YTVjYTM2IGxlZ2FjeS10cnVuaworMzk1OTYgMTdhODJiYTQ1NDUyYWMxYjVhMTJkZTlkZGQ0MzNjZmE2MzlhMzc1ZCByZWxlYXNlMjQtbWFpbnQKKzM5NTk3IDM5OWM0MTE3NmJiNzlhMmYyNDg1YzlkNGEzODA3YThjMjA5NWQ0YTUgcmVsZWFzZTI0LW1haW50CiszOTU5OCBhOTU3NjVmNjkyODI1MWQ4NmYwZDEzNTdlYjQ2NjQxYWM0ODMzOTEyIGxlZ2FjeS10cnVuaworMzk1OTkgNGUwZDJhN2Y1ZjE1NDQxYmRjMTUyZmIxZTBjYTRlMDBhZmZjMDVmNyByZWxlYXNlMjQtbWFpbnQKKzM5NjAwIDc3N2IyOWQ5MTNhNjIyYTJlOTlmODNhN2VlYTIzZWFmYjBmNjcwOWEgcmVsZWFzZTI0LW1haW50CiszOTYwMSA0OTVlN2ZmYWQ3ZThjYzA2NDdiZmUyZGMzMDRlOTBjY2RlZmEzZmMwIGxlZ2FjeS10cnVuaworMzk2MDIgNjg3ZmFhOWNmNmViMDhjMTYyZWUzOTJmNTUwNGY0ODhiYzMyNjYzMCByZWxlYXNlMjQtbWFpbnQKKzM5NjAzIGMyNjBkM2I3ZDU4Mjk4MzA0MDNkMTVmYmQ1NGE3NDQ4OTYwNDhjODkgcmVsZWFzZTI0LW1haW50CiszOTYwNCAwM2NmZGNiYzRkMWYzYTM1M2RjMzg1MDdmYTQwYzJmZjczZDJhMGExIGxlZ2FjeS10cnVuaworMzk2MDUgNDVhYWE0MzZiOTQ1MTI2MDYzMTI0MjIwYmJkNTE4ZWM4ODgzN2NiZCBsZWdhY3ktdHJ1bmsKKzM5NjA2IDMwMjhlMzBhYTgzNTU5MDM1Y2VmMjcyYjQ3ZGJiMGI3ZGJiMDcxMDAgcmVsZWFzZTI0LW1haW50CiszOTYwNyAyN2UxNDI2YjdmMzFkNjQyZTQxMTRhMmZiZjYxM2Q4ZGY2NDg0ZjI0IGxlZ2FjeS10cnVuaworMzk2MDggZTIyMzM0YjFkYTY3ZmIyOTE2ZTY4NmQzYzRkZjljZTYzYjVjOTdmNyBsZWdhY3ktdHJ1bmsKKzM5NjA5IDdkZDRlNmNiOWQyNzUyODNlYzU4MGFiNzFjZmEzYzYxOWUxMGFmZWQgbGVnYWN5LXRydW5rCiszOTYxMCA2OGRiY2JmMDUxNmM1NzY1ODYyMDc5M2UyODQ2M2E3ODIyMDg5OTY1IHJlbGVhc2UyNC1tYWludAorMzk2MTEgZTMxNTY0YzdiZGJmN2EyNmIzZDgzMWFlODA4YWNmYWM1NjE3MTg2MCBsZWdhY3ktdHJ1bmsKKzM5NjEyIDFlN2I3NTUxOTRhNGRkYjc0OTVlNDA4MWNlYTY3N2E5ZjUxMzE0MzYgbGVnYWN5LXRydW5rCiszOTYxMyA0MDdhYzQ5OWE1YTM5MWY2NjBlNGNkNjVhM2RlM2U5ZjE5MmEyNTkyIGxlZ2FjeS10cnVuaworMzk2MTQgZTBhOWY2NmI3MDE0NjcxNmI2YzE3NGVmZmUxNjQzOGRmZGE5ZTQ3MiByZWxlYXNlMjQtbWFpbnQKKzM5NjE1IGFlNTM2ZTY2ZTg2ZjVmMDFjMThjZDQyNWUwMmRmZjY3ZGY3NzFjMzEgcmVsZWFzZTI0LW1haW50CiszOTYxNiBiNjQ2MzljZWEzZWQ4N2ZmZjRlYzBlNGE5MmI2ZTQzMTViYmI3Y2NkIGxlZ2FjeS10cnVuaworMzk2MTcgZjViZDdlYWQxNmM0NzIzNzFkNTVhYTE5YWUyNDAzNjhkOWVkMWY2ZCByZWxlYXNlMjQtbWFpbnQKKzM5NjE4IDRhZTdkYWFmMGE2NjExODg0NDlhYjgzZGZhOWEzNzZjZGFkOThhODEgcmVsZWFzZTI0LW1haW50CiszOTYxOCA4ZDM3Mjc2ZmRmMDc3ZDZkMjNkOTYzZDNmN2Y5NTM4MWQwMGYxOTI2IHJlbGVhc2UyNC1tYWludAorMzk2MjAgNmI0MmVlYjUyMTRkYThhMDMyMmQzMTYyZTUzZmVlMzE5MmI5N2NjNCBsZWdhY3ktdHJ1bmsKKzM5NjIxIDhmMmJmMTg2NzRjYmU5MzI4MjBmM2U5ZDQwZDJhMjgzYTFkYzliYmIgcmVsZWFzZTI0LW1haW50CiszOTYyMiBkMzNmNGZjODRkNGFmMmIxOWU2M2Y2MDMyMzVhOTE0OTc4YmVjYzkyIGxlZ2FjeS10cnVuaworMzk2MjMgYzM3ODNhMTJhMWJjMTlkM2QwZWIyODEyNDg3N2UyMWJlYzI4YTMyYSByZWxlYXNlMjQtbWFpbnQKKzM5NjI0IGNhODQ0NTE3Yzg0OTUyYzQ1NjQzMGJkNTViNjA0YjAzNzBmZWY1NzQgYXN0LWJyYW5jaAorMzk2MjUgNmEyMDgzMWQzNTdkNTdjZDYyNGJhYjkwZGUzNzMzZTUxZWI1MTMxMyBsZWdhY3ktdHJ1bmsKKzM5NjI2IDllZjI1Yzg5ZDBkNmMzMDY5Y2Q4MGFiOTU5N2MwYTI3MDBlMTYxNTcgcmVsZWFzZTI0LW1haW50CiszOTYyNyBiNWEwMTI4MmRhZGFmYzk5Y2NhNGVhNjExMjM0NDA1M2RiODY3ODFhIGxlZ2FjeS10cnVuaworMzk2MjggOGViNzVjMjhlZDk0MWM0MzJmNWQxM2RjMTUwZmMzN2NkYjU2MTA4MiByZWxlYXNlMjQtbWFpbnQKKzM5NjI5IGEyY2YyNTY0MmM4ZWNkZjk2YTg4NmY0MjNmZDg2MmFiNzM1MWI4ZWUgbGVnYWN5LXRydW5rCiszOTYzMCBjYmExMGM2ZDM0ZTM4NTkzZTY2ZDZhOTY4ZDUxZTBiODdiZTAxMGI4IHJlbGVhc2UyNC1tYWludAorMzk2MzEgYTgzZThkZjEzNDk4NjJhZjMxODRhNjIxOWRlNTQ3ZWZhN2ZlZjdmMCBsZWdhY3ktdHJ1bmsKKzM5NjMyIDFkNGQ4NWM3MzVlN2M0ZjhhMTllNjBlZGE2MmJjYjUxMTRmZDJjNjcgcmVsZWFzZTI0LW1haW50CiszOTYzMyA2ZDA0Y2IyY2RkNGFmY2NhZjU4OGM0ZWFlNGFhZDEyNGU1YmZlOTlmIHJlbGVhc2UyNC1tYWludAorMzk2MzQgODU2NTFlYjNkOWE5MGQxMjFhMGY0MmE1YjA0Yjc0MTJmMTUzNmUwZCBsZWdhY3ktdHJ1bmsKKzM5NjM1IDY3ODQ4Yzg3MTc2OGI1NTljM2YyMzRhOTRmOTZiYjRmZmMyZDg3ZDYgcmVsZWFzZTI0LW1haW50CiszOTYzNiA1NjExZGI0NTFhMzliYTJlZjdiOGE1MGJjMmFhMjQ1ODYwY2JiNWVmIGxlZ2FjeS10cnVuaworMzk2MzcgMGJlMDA3NzVhODBjNDUxYzA1MTYwMWE5YzQwNWQ3NjRhZmYzYzQzMSByZWxlYXNlMjQtbWFpbnQKKzM5NjM4IGRjNWQ3MDYyODNkNjJmZWJjNDU4N2FiZDliOWMyOTJiZTIyMDJmM2MgbGVnYWN5LXRydW5rCiszOTYzOSBiOGU1NzFlNmRlMmUzZTU3NjdlYjBlYWJkNjUwYTJiOTY1NGU3ZTYyIGxlZ2FjeS10cnVuaworMzk2NDAgZTQ1NGQ2YzFiM2MxZjNmYzNjMzE3MDBiODcwYmFjMzQzYzRlN2IxZCBhc3QtYnJhbmNoCiszOTY0MSA2MzBmZjU0NDBkZmM2ZTk0M2NkNDMxMzVjNmU4NWI3ZDk2OTI0Nzc3IGFzdC1icmFuY2gKKzM5NjQyIDc1MzQ1Nzg3OTQyNTU5MGE0MTM1OTYwODgwMzJhMWQ4YmY1ZjBjMTEgYXN0LWJyYW5jaAorMzk2NDMgNmMzZDBhMGMxOTU2MDA4N2I1NDM1M2QyNTQ2ZGFlNDFlYzhjYmQ4YyByZWxlYXNlMjQtbWFpbnQKKzM5NjQ0IDg0NTQxNzMxYjE2NmE2YzQ1NTNhYThjZmJjOWRmNzk3ZjAxZjk3MjggbGVnYWN5LXRydW5rCiszOTY0NSBmNmEyMDliNjk1MGNhYjczYWEwMjJiOTliNTdiMjUyY2NiZmE5NWY4IGxlZ2FjeS10cnVuaworMzk2NDYgY2VlZDMzZWFjNDM2MTY4MTJhMjY3MWVlYTY1ZDgzZWFmOGY5N2Y0NiBsZWdhY3ktdHJ1bmsKKzM5NjQ3IDVkNTIzNmVhZThiZDNkNjBkZjgwMzhjZjU5N2UwNjA2MzQ0MTVkNGIgbGVnYWN5LXRydW5rCiszOTY0OCA0MTJkMjFlMzBjMTMwZTIyNzZiOTg0NzA4OWE2MTc1NDhmZTg3Y2UzIHJlbGVhc2UyNC1tYWludAorMzk2NDkgNjEyYTEyMTc4ZTQ3YjcwODRjNmUxMDNkNTA5NWUwZjFlZjQ2OTEyZCBsZWdhY3ktdHJ1bmsKKzM5NjUwIGQxNDgxM2U3OGE1MDBmYjJiOTFhYzU0Y2U1Y2ExZDRkMzE5MDNkNjcgcmVsZWFzZTI0LW1haW50CiszOTY1MSA5ZDQzMzgxYzE4NGNiYmJjN2RhY2MyYTI2ZWQ1ZTAwODVhNDA5YTlhIHJlbGVhc2UyNC1tYWludAorMzk2NTIgZTFkZjQ4ZjI4NDdhZDhlOGRkZjYwMmI3ZjI5NDA5YTY4ZWM5YWY5YiByZWxlYXNlMjQtbWFpbnQKKzM5NjUzIGU5YmFlMmZlYmFjODAwZTAzYmNiY2ViN2I0ZTQ4YWFhM2QwOTcyNTAgbGVnYWN5LXRydW5rCiszOTY1NCBmMDk1MWZkYWVkMzdjMGFmMzM4NThkYTBhN2ZkNDA2ZWIxNDZhZDQ0IGxlZ2FjeS10cnVuaworMzk2NTUgMTcyZmNkOWMxOTUyNjE1YzgxZmQwY2E4MWQ4ZTEwZTU1NTA2ZmNkNSByZWxlYXNlMjQtbWFpbnQKKzM5NjU2IDhiZGQ4YzJjNmM0OTVmOGE2ZjU4YTQxZmQ1NGE2ZDYzMjE2ZDQ5YTcgbGVnYWN5LXRydW5rCiszOTY1NyAzZTBiYjdmNzVhYjc2NWE5YzhhNTdiOTAxMWI4MjE5YTdmNjE1YzA5IHJlbGVhc2UyNC1tYWludAorMzk2NTggZTQ2NmMwYTU1MGI4OGNiODdiYTQyYTUxYmIzN2JlY2RlMjg3YjE5NiBsZWdhY3ktdHJ1bmsKKzM5NjU5IDAyZmU1ZDQ5NmZjZTk5MjQ2YzYzYjUyMzBhMjcyZjJkZGRiZmI0ZWUgcmVsZWFzZTI0LW1haW50CiszOTY2MCA2OTA3ZTQ3MWJkYWNlNDAwZDIzMGEwOTRjNmY2MzA2NzZlNGEyNGU3IGxlZ2FjeS10cnVuaworMzk2NjEgM2JlODM1MzUwMDgyODYyYjVhZTY4ODNkZWI0MDBmMmRjYzNlMGViYSBsZWdhY3ktdHJ1bmsKKzM5NjYyIGY5ODc5MjM3ODk1NDE3YjdkZDg1MjgxMTliY2Y0ODY3ZDhhODVlNTggbGVnYWN5LXRydW5rCiszOTY2MyAyOTg1ZTQyZWIyZDJiMDkxY2FkMThhNjJmM2RmZWJiNGI5OTVmNDc0IHJlbGVhc2UyNC1tYWludAorMzk2NjQgMzMwYzIzMDc1MDU0MTkxMDZmNzE2NzM2ZTAxMjMxNTAwZmYxYmMyYyBsZWdhY3ktdHJ1bmsKKzM5NjY1IDJmZGE3YjE3NDc5NGQ5YzAwNzhlOWI2NTc1ZmUwOGZkNDFmYzk5ZDQgcmVsZWFzZTI0LW1haW50CiszOTY2NiA1NDhiYWQyMTU0MjlmMzlhZjkzNzM3ZWExOTViOTVkZGEwMmE4MmIzIGxlZ2FjeS10cnVuaworMzk2NjcgZTI5OTU1NjM2MTBmNzE3OTRlZWRjNWY5YWJjYWQwMjFjZTA4YjhiNSBsZWdhY3ktdHJ1bmsKKzM5NjY4IDdhN2U4NzliMmFhMWIyZTA1OTFlYjU0NGY5OGE0YzZiOGVmZmZiZmIgSURMRS1zeW50YXgtYnJhbmNoCiszOTY3MCBiNjFjZGQ0Zjg4OGJmOWY2MTI4ZjM2NjIyNTEzNThmMTExMzBkYjE0IGxlZ2FjeS10cnVuaworMzk2NzEgMDhhNTUxZTc1NjFjYzJiNDYzZGM3NzI1YWZhMjhiZDJmZWIzODRkMyBsZWdhY3ktdHJ1bmsKKzM5NjcyIDk1YzBkZDExYWZhNzhkMmE1ZmUxOGM2NDI1NjRiY2FiNzQ0ZjE1NDYgbGVnYWN5LXRydW5rCiszOTY3MyA1ODZiNDhlM2NiOThhMDMzYTNkNzMxMTIwYWJiMDE2ZWY4MGE0NjFjIHJlbGVhc2UyNC1tYWludAorMzk2NzQgOTIxYWZkMDhhNWRjYmQ0MjAxMjk4N2U4YjJiN2NkZTM5ZjBkODE5MiByZWxlYXNlMjQtbWFpbnQKKzM5Njc1IGQwYWY3YjA5OGE5OWQ2MmVlYjJlNjdmNjE3M2JjMjg3MDZiMDljNGIgbGVnYWN5LXRydW5rCiszOTY3NiA5MjM3MjNhOWM0M2NiOTZlODE4NTMyZTAzMmExOTU3MGY1MTVjYmNlIGxlZ2FjeS10cnVuaworMzk2NzcgMzU3MjI0OWMxZTc3MTAyOTQyODhkMWNkNTk5NjMyMzMzNmU0YTE3MyBsZWdhY3ktdHJ1bmsKKzM5Njc4IGQ0M2RmZTY5NWQwOGE0YTc0M2I2ZGUyNTE3NzlhMjM0OGE5NDc5N2QgcmVsZWFzZTI0LW1haW50CiszOTY3OSBlMTZiNmJkZjNmODk5YTdmNzZiODE3M2RiNWRiNzkzZDllNGE0ZTNkIGxlZ2FjeS10cnVuaworMzk2ODAgMjJhNzIwYjM1MzE0ZDAxMjk5YWRhZWE2YjJmYTA1MTFhM2IzMzJjMiBsZWdhY3ktdHJ1bmsKKzM5NjgxIGU3OGU4NGYxYTgyNDg3ZmNjNDUzZWMzZTQ0ZDFlYmNmYzViODI5YTkgYXN0LWJyYW5jaAorMzk2ODIgNzY2MzVhYjdiNzA3NGQ4NTYzNTFiYmI4N2QzNGRmOTdmYzE5ZWIwOCBsZWdhY3ktdHJ1bmsKKzM5NjgzIGE2NGJlMTM4ZjBmNmM0ODA2MGQ2NDNkZTg5NGY5MjgxNGJkZTUzMDUgcmVsZWFzZTI0LW1haW50CiszOTY4NCA2ZTA0YTU1N2FlMjBjZDZlZmMyZGNiNjgxOGM3YjE0NzA4OGUwY2RiIGFzdC1icmFuY2gKKzM5Njg1IDRlMzk4ODM3MzczYzlhZDZlMzc1MWY1OWQ4YTM0NzQwOTA1NzE3MGMgbGVnYWN5LXRydW5rCiszOTY4NiBhYWUzNzQzMGY1MjU5NjM0NzdhMGM1YWFjM2ExM2JmYTYwZDYzNGI0IGFzdC1icmFuY2gKKzM5Njg3IDg1NjdlYjIzZTY1ZGViNGYzYjEzNmJjMTk1N2VkMGRiM2M5M2M2MzIgYXN0LWJyYW5jaAorMzk2ODggMGU2OTA3OGNhZDkwMGZkMzdhMjU1M2I3ZTg3YjA5YjMzYWRhNDA4MSByZWxlYXNlMjQtbWFpbnQKKzM5Njg5IDU2ODVlYzU5ZjM1Yjg0MTMwMjFmMTQzZDhlODQ2Mzk2ZDFjZmU1NjAgbGVnYWN5LXRydW5rCiszOTY5MCBhYWIxZDVmZGY2NGRmNjU2ZWRmM2EyNWYzNjNlMmQxMjc4NzUyMDFmIGxlZ2FjeS10cnVuaworMzk2OTEgOGU4NmRiYWQ4YzcxNGU5ODhjOGEwOTIxYjhiMWY3ZmUxM2FhYTFiOCBsZWdhY3ktdHJ1bmsKKzM5NjkyIDU5YzRhNjU2NDJjNTY3YWQ4MGEzOGM1NTQ3ZDVhYzAyODQ3ODY5YTkgbGVnYWN5LXRydW5rCiszOTY5MyA2ZTcwZWQ2ZGZhZDY3NTc5NzA5YjIyMTk3YjdlMDk5MTBlNmY2YTRkIElETEUtc3ludGF4LWJyYW5jaAorMzk2OTQgZTllMzBkOTI4NzFlOWEyN2FhM2E2NzQ0NTAyYWFmNzJmNmFjMDg4OSBhc3QtYnJhbmNoCiszOTY5NSA3YjM1YzI5MDQwYzk5MmZhYmU5NDI0ZTM0N2VkZmRmY2VjMzFlMTY3IGxlZ2FjeS10cnVuaworMzk2OTYgN2I3ZWIzZTc2MjBkZjkxMDAxODhiM2I5Y2EzMThhNjYyMzA1MTM0NiByZWxlYXNlMjQtbWFpbnQKKzM5Njk3IDcyZmViZWU1OGU3YjllMzY4MDgwNWFiNmIxOWE0M2RlMmNlMjMyYTMgbGVnYWN5LXRydW5rCiszOTY5OCBjMzhlNGVjN2I3ZjExZDU2ZTNjY2EzNDM2YzYyYzA1NGE5MGFmMGFmIHJlbGVhc2UyNC1tYWludAorMzk2OTkgN2U3OTg5YjZhYzM2YzRiOTE1NTk3YThiY2VhZjQzZjBkM2MwYTAzYSBsZWdhY3ktdHJ1bmsKKzM5NzAwIDVhNjI2ODZmN2RmZGY2NGViNmMxM2VmMzNlYTJkYmUzNWVmZmY3YTQgcmVsZWFzZTI0LW1haW50CiszOTcwMSAzMDdiN2VlZTNlM2Q5MjIwNzNhNjZjN2JlNDhjOWU4ZWMzZWExNWFmIGFzdC1icmFuY2gKKzM5NzAyIGQ5NDdmYmVjMzVkM2YwNGYxNDhkZTRmMGFmNGZmODI2ZjkwNWJiM2EgcmVsZWFzZTI0LW1haW50CiszOTcwMyA3MjU5NWE2MTU1NzFiNDA2NzFlOTMzZDIzMzFlNzJjNmMxNzJmYjQxIGxlZ2FjeS10cnVuaworMzk3MDQgYzNkNjRiYzdmNjk2MjI4NmQ0YTQwYjA4Yzc1MzQzYmYzNTc3NDRmMiBhc3QtYnJhbmNoCiszOTcwNSA1N2Y2MmU1YTM5MjE2NjYwMGU0YzA3NmI2MDVmNzg5OWU2YWMxYjJmIGFzdC1icmFuY2gKKzM5NzA2IGM3YTdlM2QxYmZhNzBhNDIwOGRkMDk3ODFiYzU5MWE3MDkwNzMyNjUgYXN0LWJyYW5jaAorMzk3MDcgYWM3ZjU0MDcyNDZmNDBmZDNmYWQ0OGQ1MDY5ZWY1OTE2YWJhNWU2MyBhc3QtYnJhbmNoCiszOTcwOCBlZjdjZGRlYjMyN2NjOGM0Y2Q3MDU1NWQ0NTAxNGVjZDNiN2UzMzc5IGFzdC1icmFuY2gKKzM5NzA5IGIxMDgxYzQ5NWQ0NjczM2JiZmE3ZDJiY2EzYjEzMjA4MGRkYTQ3ZGQgYXN0LWJyYW5jaAorMzk3MTAgMTc0NWMyZWRjNTE0ZDkyMzJjZTU0Zjk1MWU5NzQyOGQwZWVhZmFmYSBsZWdhY3ktdHJ1bmsKKzM5NzExIGE0NDI5Yjc3ODdkNDRlNWI5YjJmODYxMjUxZTIwZDFjNmVlY2ZlZGQgcmVsZWFzZTI0LW1haW50CiszOTcxMiAyMzQyY2RiOTI2OTU2YjJkOGQ4ZGYzMDUzYzU3NWYwZTZjNDFmZWI4IGFzdC1icmFuY2gKKzM5NzEzIGVjZTVlYjZmMmI1YTMzZGQyOGE5MTY1ZGYyYjExNTY0ZGJjNjRmZTIgYXN0LWJyYW5jaAorMzk3MTQgM2JkNzQ4MjRhM2FjZDBhMWU0MDZiNTM5ZGNiZmJkYTM3YjA2ZWQ0OSBhc3QtYnJhbmNoCiszOTcxNSBkMjA0NGU1YTA2YzdlNjM4YTJjYTNhYjcwZjdkMDI1MWU5YjM0YmMyIGFzdC1icmFuY2gKKzM5NzE2IGE0YmVjN2I2YjY0MDViM2VhYWMyOGU0NWYyMTVlODRkYzkyYTUxYzMgYXN0LWJyYW5jaAorMzk3MTcgMzBlODhhMTc1ZmRjOTBjNzk3NTE4ZDY5ZGM5YzNlYmY2N2Q0Njk5NCBhc3QtYnJhbmNoCiszOTcxOCA1MjVkYWMwZDI4NWJmMmUyNDg4MDBjNTIzZGVjYmQyZDBkNjA2YTdlIElETEUtc3ludGF4LWJyYW5jaAorMzk3MTkgNzZiOTFhY2FkNWU4OGNjZjcyNGM0YWYxNDRlMzZlNDhiMWFjZTAzNyBhc3QtYnJhbmNoCiszOTcyMCBiYzdmNmRlYWIzNDBhZTc1NzM4NDYyZWU3Y2JhZGRhZjk0ZTliZWZkIGFzdC1icmFuY2gKKzM5NzIxIGRkMjkyNjFjYjQzODIwZWJkOWJlODYwYzVhNGU3NTMyOGJjY2NlNzggYXN0LWJyYW5jaAorMzk3MjIgOWViNDQxYTcwNzI0NmJkYTFlN2FmMWRiMzgxMDFlYTYxOTMwZjE1ZiBhc3QtYnJhbmNoCiszOTcyMyBjZGE4NzM1NzE4NWZiOTNjZjBhNzkzMGNjYzhjMTcxZjNiMmQ3ZDk1IGxlZ2FjeS10cnVuaworMzk3MjUgNTY2OTMwN2MxMzFjNTM4NDY2NTZhY2U5YTZmMjljMWExNjk5Njk0YiByZWxlYXNlMjQtbWFpbnQKKzM5NzI2IDQyZDNhNDQwMGQzODY2Y2E4NjQ1YzBmZGQ2NDYzZTIzZDhlZjdkMWEgYXN0LWJyYW5jaAorMzk3MjcgMjE2MTFmZjU1OGE1MDIzODNiNTY5ZWJhYjkyNGRiNWM5YTUwZjQ3MyBhc3QtYnJhbmNoCiszOTcyOCBhZTUzOWFmNGFmYzUwMWQ0Mzk2ZDEyZWY2MGNiNDQzOWI0NGRkMDA0IGxlZ2FjeS10cnVuaworMzk3MjkgNjBkZmUyZjU1YzBmNTNmYzY0OTE2OGE3NTFlZGYzZmY0OTliMTgxYSByZWxlYXNlMjQtbWFpbnQKKzM5NzMwIDY2NzkyYTJlZjNkYmQwNDNjYTRlOTZkMzc0MWI0N2FjNjRmNDM5NDUgYXN0LWJyYW5jaAorMzk3MzEgMDZhZDYzNDU2NDlmZGRiNmE0OGFhYjYyN2M4ZGRiMDVjYTk5ZTcyYyBhc3QtYnJhbmNoCiszOTczMiBkN2Y0MDcwOWUxNTg1NDBkYWZhNzU2MTgwOTEzYjRlZTVmNDkyZWYxIGFzdC1icmFuY2gKKzM5NzMzIGJiNWJhNTQzNTllNWJjZDM4MmY5OTg5NzIwMDc0YTUwYmE0ZDE0MjMgYXN0LWJyYW5jaAorMzk3MzQgNDk2ZWI1ZGVkNWU0NWIzZWM4MjRkMzMyZjI0ZGY5NGVjYzA5ZDlmOSBhc3QtYnJhbmNoCiszOTczNSBjOWZhODViNDA1M2I3NWI3OTI0OTQ2ODhjYjUzNjM5YzYyNjU4M2ZhIGxlZ2FjeS10cnVuaworMzk3MzYgZWIyYzA5ZDg3ODcwMTgzZjc5Zjc0NDllYjY0YzMzZWQ2YzhiMGQ4NiBsZWdhY3ktdHJ1bmsKKzM5NzM3IGZlMTAzNzNjZjhhMjcxZGRhYmQ3ZDU5ZmIxYjhlNGZmYTMzOTA5ZmQgYXN0LWJyYW5jaAorMzk3MzggODNmMjQ1ZjcyODMyZTM5MWY4ZmVhNGEyZDRkNzAyM2RhYTYzOThiMiBhc3QtYnJhbmNoCiszOTczOSA1MzY1OTBjMzIzMTE4NTJhMzNhMTg4ZmNkNzFlZDZkY2M4ZDZjOWMyIGxlZ2FjeS10cnVuaworMzk3NDAgNTc0N2NlZDM1NDI0YTZmMTA2NWEyMDk3MmQyMjFlYjdiYjEwYzgwNiBhc3QtYnJhbmNoCiszOTc0MSBjYjVjYzQ4YjVjMjk1YWYwODJhOTc3NTA0N2ZlNWZlNGVjOTdlMmM3IGFzdC1icmFuY2gKKzM5NzQyIGJjN2NhMTYzMzRiYWI1NGFkODgxMWJiMDA1OTg3MWRlNTlkY2NkZDggYXN0LWJyYW5jaAorMzk3NDMgOWVkNDNlNjM3YWU3YjVhZWQ1YjFhZGM4ZGNmOWI4ZmNmN2IxMTNiNyBsZWdhY3ktdHJ1bmsKKzM5NzQ0IDY5MTNhYmI3MDQ3YWVmZjE4YTgyMGIzMzMzOGUxMDVkYjlhYmM2YjIgbGVnYWN5LXRydW5rCiszOTc0NSA4YmVjMTIwZGJiMTZhNjc5NDRlYjNkZWZiNGE2NjIzOTQzZmQ5MTE0IGxlZ2FjeS10cnVuaworMzk3NDYgMGI4MjY4ZTBkNzBlNzc4Mjk5YWEyZjJmOWM4ODRjNDc4YWJhMWY2ZSByZWxlYXNlMjQtbWFpbnQKKzM5NzQ3IDRmMjg0M2RmYTIzYzc5YWMyN2E4ZWE2MDIzNWE4MTRlMGQyZTg4ZDggbGVnYWN5LXRydW5rCiszOTc0OCBkMTIwMWZhZTA2YTg1MDA3M2UxNTNhM2U3Y2ViNTY5MThhMDM1NTJiIGxlZ2FjeS10cnVuaworMzk3NDkgZGZiOGZjMzc3YjU4ZTY4ZGU2MGQ3OGRhMjk3YjBlNzc0NGQxMmU5OSByZWxlYXNlMjQtbWFpbnQKKzM5NzUwIGVhNjgwOGJhMTYzN2JjMjc4N2FmYmUzZDAyZjVlNmQ1OTIzM2FmZmQgbGVnYWN5LXRydW5rCiszOTc1MSA3ZWQ4NzA1MGUxNjk3NDY2YzIyMTRkNThlZGNmMzBlMzVlMmFhMjI5IHJlbGVhc2UyNC1tYWludAorMzk3NTIgNTM5MGRkYzc3ZWI4NjZkZmYzNzJkMWFlYTJkMmI1MWJlNzRiMzI5YSBsZWdhY3ktdHJ1bmsKKzM5NzUzIGUwMThmY2UxNGYxMDA2NTQxZTEwYjg0MTMxNDljYjA5MjBkMzhkYmQgbGVnYWN5LXRydW5rCiszOTc1NSBkMDM5OTM3OWQwY2IyNjRjMzgyMzEzMDMwYzM0MzI3NWU0M2FkNmNhIGxlZ2FjeS10cnVuaworMzk3NTYgYjMyYTM5MDkxYWVkY2I2YjA2OWNmMGNkZGU2ZTkzMDRjZGMwMWNmNyByZWxlYXNlMjQtbWFpbnQKKzM5NzU3IDM3MTYwNTE4MzBjMmNjNWFiMGQ1YzFjODIyOWUwNTA1MWQ0ZGM5ZjcgbGVnYWN5LXRydW5rCiszOTc1OCAxYzRkMTkyZjE1NjhkZjhjYWUyZDM1MTQxYTcyOTI0NzU2NGEzY2ZlIGxlZ2FjeS10cnVuaworMzk3NTkgMDViNzE1ODIyYmE1OTZlMjc1NTU1NWM1MTVjOGQzNzJjMDgwNDNmMCBsZWdhY3ktdHJ1bmsKKzM5NzYwIGU3ODE1NDk1YmIyNzliMTkyZWMxNGRlNTNhY2Q5YWE5OWQzZTU4NWMgbGVnYWN5LXRydW5rCiszOTc2MSA0MDdjM2RhY2JkN2MzMDVmYzY3NDIzMDI4NmEyN2JhYjIzOWUxZGNhIGxlZ2FjeS10cnVuaworMzk3NjIgNzE4ZTlkZTIyZWE3MjVlMjViNDBmYjU3ODViYWVkZTMwZGJlYzFiNSBsZWdhY3ktdHJ1bmsKKzM5NzYzIGZkY2I1OGNiZmY0ZGYwZDZkMDIxNzZmZWU5ZDVmZDIwODQxNjA2MTIgbGVnYWN5LXRydW5rCiszOTc2NCAyNWJhMmYzMzEzYzkxY2M0ZTc5ZjY3NzNiZWIyYjU3ODk0YzI2YTc0IGxlZ2FjeS10cnVuaworMzk3NjUgMTc4MjhhMDBhNDU0NGZhM2ZiNDIwNjViYjUxZDYwYmU4ZjU2NTEzZiBsZWdhY3ktdHJ1bmsKKzM5NzY2IGE3YTQ5M2RiNjIzMTNkMDMzYmRiYzRjNjVhODg3N2YzNGI5NTZlZGQgcmVsZWFzZTI0LW1haW50CiszOTc2NyBlNTYxNDQ3MDQ4MDhkN2NlNmMzMDVjMGI0ZjA1MTRlMWViYmRiYTUxIGxlZ2FjeS10cnVuaworMzk3NjggNDc0OTZlN2RiZjJmY2QzMDYwYzc5MDFhMTIzZmM2MWIxYzI3NjJmZSBsZWdhY3ktdHJ1bmsKKzM5NzY5IDgxZWJkNmUxNzdhM2Y4YTkwNDM1N2Q4YzA3MGE3MDdhM2I4MzAwNGUgbGVnYWN5LXRydW5rCiszOTc3MCAxNDQwOWI4MjA5MzNmYzc3YmQ1Y2FiOWIxMWEzYWVmMjVhMTY1NjdlIGxlZ2FjeS10cnVuaworMzk3NzEgYzI4YzFhMzdiODZhZTE4MDA4MTk2MzA5OTI2NDY4NWFkZDU0Yzg2NSBsZWdhY3ktdHJ1bmsKKzM5NzcyIGI3MmIzZTUxN2E0ZGU3YTI0ZGU5YjIzM2U3ZjVjNjU5YjU0NzQwZTYgbGVnYWN5LXRydW5rCiszOTc3MyBlYjE1Y2RkNGEyZjEwMDE3OTIwNzRjYTA3ODkwMjY5ODk0NTJmZjgyIGxlZ2FjeS10cnVuaworMzk3NzQgZTBlMzIwZjM2YzkzNjNmNmQ1ZjhiZmM0MDczZGQ2YzUyNzk0NGY5OSBsZWdhY3ktdHJ1bmsKKzM5Nzc1IGQ5MWVkNzEwN2ZkMmRhMDNkMzU2YWNiYzUyNDNhNjhkMGI1MDU4NTEgbGVnYWN5LXRydW5rCiszOTc3NiA3OWM1YjgxN2ZlZGMxMTU3OTMwYjkwZTAxZjIzZmI5NjA2Y2EzNWNlIGxlZ2FjeS10cnVuaworMzk3NzcgN2E1YWMyMDMxNTRhYWEyZDc1NzVhMWJkOTI1ZDg4NDNkN2U2ZTIwMiBsZWdhY3ktdHJ1bmsKKzM5Nzc4IDNmNjMzNDFkOTMxMmY2OTIyMWQ2NjcwZDVjZmU1OTNkOTcxNDdhYTkgbGVnYWN5LXRydW5rCiszOTc3OSA1MjhlMDM4ODM5YTJhYWU3ZDNkZWEyZTU3YjhmNDU0ZTc2YTk4ZTAyIGxlZ2FjeS10cnVuaworMzk3ODAgNGFhZjUwNmE3ZDA5OTJiOGMxNTRhNTBhYjU2NDM4ZDNmZGYyZjFlNyBsZWdhY3ktdHJ1bmsKKzM5NzgxIGYzNzYyMjFiYmI3NmMxZDI3MmU0MjM4NDBjMzQ4YTFjNWMyM2RiYjkgbGVnYWN5LXRydW5rCiszOTc4MiAzNGVmOWYxMzhjMzAzYjc2MmFkODY4MmEwYmE0ODUwYjA1YjkzMzZlIGxlZ2FjeS10cnVuaworMzk3ODMgN2VlNjg4MGNiMTZmMjg1MmUwN2YwZGY1MTNkNzJkNGUyZTE3NWVkYSBsZWdhY3ktdHJ1bmsKKzM5Nzg0IDU3NmI5YTljZTU3OTdjZjdjNjcyYTk3NDU2ZDY5MjFkYTEwMmRhOTQgbGVnYWN5LXRydW5rCiszOTc4NSA3ZDA2NTQzNWU4NmMxYjg4MmNmZmFiMGNmNGRjOTBjZjg3Mjc3ZjM4IGxlZ2FjeS10cnVuaworMzk3ODYgOWE3YzJkMWU1NmRlMzFkYWVhMjBmYTM0OWIyMWVkMDA0OWRlY2QyOSByZWxlYXNlMjQtbWFpbnQKKzM5Nzg3IDA0NGQ4ZTBmNjVmMmZiOWUzNjExNTdhZDFiMzgyNTMxNzFjMjVmZDMgbGVnYWN5LXRydW5rCiszOTc4OCBmNjRmYjI4NGVkMTU0ZDQ4NzI5NWE4OTBjYTVmMjgyNDgyMjI0M2ZjIGxlZ2FjeS10cnVuaworMzk3ODkgMGFlZjM1MTIyM2RhZWQ5ODRjMzg1ZDI1OGQ2YTZlZjk1Y2Q3NjRiZiBsZWdhY3ktdHJ1bmsKKzM5NzkwIDY2YjkwNzVkMTQyYjhlYzUzYjQ2YTM0ZmVkOThkNzZhNDdjMTZhM2EgbGVnYWN5LXRydW5rCiszOTc5MSAxNDRiNTI1MzU0MzRmZDM1ZTE4ZDc5ODFjNzFkOGU2M2IyZTM5MTQ5IGxlZ2FjeS10cnVuaworMzk3OTIgODkzYmU5NGM4ODkxODJhOTA5MWI3OTIwYWRiNGUzZDFkMzc3MjQ3ZSBsZWdhY3ktdHJ1bmsKKzM5NzkzIGVmZTYwNzMwYTFlZWFiNmQyNjIyYTBmMmE4NWQ2NmZiZGNmN2Y5YjYgbGVnYWN5LXRydW5rCiszOTc5NCA5NWQwYTg1N2FlNTFmYTE1YTU5ZWMwMTljZWY5ODAzM2YzMmJhNzU0IGxlZ2FjeS10cnVuaworMzk3OTUgMTlkNzk2YmQ3NDBmNGEwOTc0OTY2MjFjMmE4MzkxMGE1NzJhMDA4MCBsZWdhY3ktdHJ1bmsKKzM5Nzk2IDcyY2IwNDFjY2RlM2FjN2JlYjI5NmQ0OWJmYzIwM2E1ZTQzYWY3ZDEgbGVnYWN5LXRydW5rCiszOTc5NyAzMWQzNmRkNTk1OWNlOWQ5ZTYyNGJmYTIyYWUyZDUwZDZkMmViYTUzIGxlZ2FjeS10cnVuaworMzk3OTggYWFlNDExMzUyZmJkNmE0YzMwYjk3NDVhNzIzYmY3ODY4YmMwZmFkNSBsZWdhY3ktdHJ1bmsKKzM5Nzk5IGIxYTBlMWEyYjI4ZmFjYmJlZWE3YmI3OTg2ZDA4ZDA5NTQ5NTMxNzEgbGVnYWN5LXRydW5rCiszOTgwMCBjNmRiZjg4ZTRiMTRiODZkMDIxNmY0Yzc3NWM1MjQ4ZTNmNDNkNTE0IGxlZ2FjeS10cnVuaworMzk4MDEgZGNhNzBmNGVjNzdiNjc0Mjk0ODAzMDY5ZmFiNTBiNzFmNzgwMDc5NCBsZWdhY3ktdHJ1bmsKKzM5ODAyIGEwYmIwZmQ1ZTE0M2E5Yzg0ODY5MDA4YTIxNzQwNTg0MTM4NDNiMTIgbGVnYWN5LXRydW5rCiszOTgwMyAxNjYxZTczYzA3YWJhMzk5OTk4ZDgzMGI1Nzg3OTc1NGJjYmYxMDIwIGxlZ2FjeS10cnVuaworMzk4MDQgZGI5ZTJkZWE0YzExM2Q2YmU5ZmJjNzE4MGEwZjk4MmI4OTI5NTA4MiByZWxlYXNlMjQtbWFpbnQKKzM5ODA1IDE5YTM3YTlmNGVmOTRiMjZjMTY3MDI5NGVkYjc3NTFlYmJhOWJlYWIgbGVnYWN5LXRydW5rCiszOTgwNiBmN2IwY2JlYTkwNWI1YjM0OGQxMGI3Mjc5NTJkMmFmM2NjOTBlZTNjIGxlZ2FjeS10cnVuaworMzk4MDcgMWFjOWVkMWI1YTAzYzE5MzUzZDc2YmI3ZDg3ZDRiYjRiMWZmOWI2NyBsZWdhY3ktdHJ1bmsKKzM5ODA4IGI4YjEzYjFmZmU3NTcxYjRhZjVmNWJjOGI3OWFmMTNkMDI4MjNlMmUgbGVnYWN5LXRydW5rCiszOTgwOSA5MTRlYzBhZmE1MWMyMTViMTA4Nzk4OGIyM2M5Mjc3YjQ1OWIzNDRkIGxlZ2FjeS10cnVuaworMzk4MTAgMzlmMzYzMGE3MTI0ZDkwZjdiNTc5ZjQ5NjI0NjYyYjM4ZjU0Yzc5YSBsZWdhY3ktdHJ1bmsKKzM5ODExIGRiYzk4OGJlYTU1ZDZmNmM1MTQ1NjUxZGI2YzU5N2JhZGRkNmE4MjEgbGVnYWN5LXRydW5rCiszOTgxMiBmZDYzMDA0MmFhZDQzZGVjZjUwYWY2NDIyNGI2YTA3ZDEzNGMwYmUxIGxlZ2FjeS10cnVuaworMzk4MTMgMzc3ODA4M2ZlMmM4NjJjNDBkOTNlZDIzYzY3MTFiMzQyMzE2YzBlZSBsZWdhY3ktdHJ1bmsKKzM5ODE0IDg1N2Y2OGZiYTI3NTQ0ZGFjYTMyOGIwOWQzY2NkYjY3YzNhNzFlMmYgbGVnYWN5LXRydW5rCiszOTgxNSA4NDJjYWEyNDU5MTdkODg1Y2Q5YzM2MGYxMGM4ZGQxMzgwMjc4OWFkIGxlZ2FjeS10cnVuaworMzk4MTYgNGJmNjQ1OWM4ZTNiYjk2NDMzMjZkNWFiOWQ2MTcyNDM4N2ZiOTM0YiBsZWdhY3ktdHJ1bmsKKzM5ODE3IGUxN2EzMDdiMTIxNjk0MDkwNWRiM2YxY2MzMzI5MGE3ZDA5NmJiMDIgbGVnYWN5LXRydW5rCiszOTgxOCA4ZGFlZmU4NDk5NDkzNGRlM2U2NTg0ZmNmZjMwNTM4ZDA1ZjMxYzhmIGxlZ2FjeS10cnVuaworNDEzMzggMTkzMzA1YzlkYmRiMzU0OWFkNTk2M2Y1ZjgyZGE3NDdhNjJjNTU0YSBsZWdhY3ktdHJ1bmsKKzQxMzQwIDc2YTZlOTA4NjI0ZDdjNWNkYjdlNzdmNzdhYmM3ZmU2NGNkNjdkOTUgbGVnYWN5LXRydW5rCis0MTM0MSA1MmY2NTg5ODg3NGE2ODg4NWIzMjdiN2Y3ZDg2NGM2OWMzZGY1MmM2IHJlbGVhc2UyNC1tYWludAorNDEzNDIgNDRmZTE1NzI1NWJjNGNkOGEwNWY3ZjA2MDBjOGZlMjc4ZjJlMDNhYyBsZWdhY3ktdHJ1bmsKKzQxMzQ2IGRmYjExMzllZGM1NWExYjBmN2YyNzJlZDc3MzVjZjU0YTQwMDQ2ZGYgbGVnYWN5LXRydW5rCis0MTM0NyBjMmE5OGJhMzcxYzhhOTBjMGJkYzFhNDJjNzI3Mzk5MjI4ODI3OWFlIGxlZ2FjeS10cnVuaworNDEzNTIgODg1MjMwMTc0MTRjMTg3M2RjZjNjMmMxNTgxNTlmOWRjNjZmYmYxOSBsZWdhY3ktdHJ1bmsKKzQxMzUzIDM5YjFlNzRiYTE3YzU1NDcxODk2ZTFhNDQwNDUxMjY5ODYyMGNlODIgbGVnYWN5LXRydW5rCis0MTM1NCA5YjBkZDFmNTNhZTIxODZkOWYyOGVmMjA4NWRhMmQ2YmMwMmNhNzMyIHJlbGVhc2UyNC1tYWludAorNDEzNTQgYWJiZmU5MTc4NzMxOWI3Zjk0NTQzZjQwZWE3YmExNWQ5OWFkNmUwYiBsZWdhY3ktdHJ1bmsKKzQxMzU1IDJlMjVlOTgzMjNhN2Y2NTFmYTkyNWM1NDA3NGNkYTkyMDg4YmU1ZDYgbGVnYWN5LXRydW5rCis0MTM1NiAxM2RlZWM1MjgxZWZjYjIwYTVkNDI0MzAwYWE0OGEwZTQxNjRjNjNiIHJlbGVhc2UyNC1tYWludAorNDEzNTcgZWI5YTM5YzFhNzhiYjczZWRmM2YxZTNkOTRmNGEwNTFjY2VlODFlNSBsZWdhY3ktdHJ1bmsKKzQxMzU4IGEwMDBmMzIyZGQwNWRiZmFiYzVkNjYxZjM1NWVlNzY5MzI1YjE1ZmIgbGVnYWN5LXRydW5rCis0MTM1OSBlZDI0N2Y2ZTZmMDc1NGRmODBjY2U1OTNjOWUxODdkNTY4ZjI2ZTEwIHJlbGVhc2UyNC1tYWludAorNDEzNjAgMjBiYjdmZjE2OTUyNzdiY2NkYTZlNTAzYWYxNjQyMzA3NTI3ODU3YyBsZWdhY3ktdHJ1bmsKKzQxMzYxIGE0OTdlMTBiMjNlNDcwY2M3NmIzNmYyN2VlNzA0YWU1MDg4MmNjMmMgcmVsZWFzZTI0LW1haW50Cis0MTM2NiA2OTAzNGEwOGU1YTNhMzRmOWY5ZTcyYTg0YTc3NDA3NzY0ZGM2MGE5IGxlZ2FjeS10cnVuaworNDEzNjcgYjY1MmY1MzUyMDFkNmZjZGY3NGIwODg5MzRlMzA0NDI0ODIwMjczNyBsZWdhY3ktdHJ1bmsKKzQxMzY4IDZjZDExMDc0M2JkMjA4OWYwZDY1M2FhOTZmMjlkNGQ1N2FkM2FjYWIgcmVsZWFzZTI0LW1haW50Cis0MTM2OSA4YjAyZDhhNWU3MDdmMjZmMDI0MmY5NjdjM2ZmMTUwNWQxYWVjZjVmIGxlZ2FjeS10cnVuaworNDEzNzAgZjllNTBmZjk2ZmY4NWViZjc2YjRjZDZhYzhiMzY3MTIxZDVlMDZlMyByZWxlYXNlMjQtbWFpbnQKKzQxMzcxIGNjMTdhNTgyNTE4YWVmZDQyYTMzNzYwZTk1OGZkMDM0MTc2MGRiMjcgbGVnYWN5LXRydW5rCis0MTM3MiAwZWNiZmZiYWRjMDA1NjgyM2U1OTNmMjE3YWZmMzUyNGZkODQyNWNjIGxlZ2FjeS10cnVuaworNDEzNzMgYWIzZDFlNmEwMjM3MjcwZTJiMDE1Mjc2YjIzN2Q5ZjMyMjRlOGJhZiBsZWdhY3ktdHJ1bmsKKzQxMzc0IGJmZmFlMmY4MTJmNzRhZWQ3NWIwMjBhMjNjZmIyYTQ4ZDViZGEzOTIgbGVnYWN5LXRydW5rCis0MTM3NSBmM2NhZjgwYmQ2NmQyMWJhODI5NGEwNjQ5MzI0MzRjOWIxMjUwYzhkIHJlbGVhc2UyNC1tYWludAorNDEzNzYgMDI5YjZjNWYyNThlNWFiNDZiZTJkMjA3OTk5NjczNjhjMzAyNjllYSBsZWdhY3ktdHJ1bmsKKzQxMzg1IDY0NmJhNzYxMTVhY2I0MzUwY2MzMGY1ZWM1YTBkNzhhZDY3YWRhNTQgcmVsZWFzZTI0LW1haW50Cis0MTM4NiA3YmY0ODQwMGYyNGE4ZTdkOTE0NGNmMmU2ZGRmY2MxMTcwODEyMDUxIGxlZ2FjeS10cnVuaworNDEzODcgOWIxZWZiMGVkNjM1OTJkZTEyZDViZWZjNjc0NWI2MjlhYzE1ZGI3ZSByZWxlYXNlMjQtbWFpbnQKKzQxMzg4IDQxOGE2MWVhZDExYjg1ZGViY2UzZmE1MWEyZGNmMjRmMmFhMDllMjEgbGVnYWN5LXRydW5rCis0MTM4OSAyMGFhMWQ1YjNiMDgzMjdlYTY0M2EyZTc5MzE4M2IxM2I2MjBlZTE4IGxlZ2FjeS10cnVuaworNDEzOTAgZmQwODkxODM5NGY5YzNiMTExOTJmNjU4ZmE0NmJlZjE2NjA2NGM5NiByZWxlYXNlMjQtbWFpbnQKKzQxMzk5IGE4NjQ5ODY5Y2I2MGJiZWEwOTVkZmY1NjQxYWNkZGRkNTk1ZTc1MjIgbGVnYWN5LXRydW5rCis0MTQwMCA0OWJhZjhiMDQ2ODEyNTVhZjQ1YzAxOTZlMTQwOTllNTdjNjQ1ZThkIGxlZ2FjeS10cnVuaworNDE0MDMgZGUwOTBiZjY3YTU5ODlkYmZmMjVkYWE1NWRlY2ExZWI4NWM1OGVhNCBsZWdhY3ktdHJ1bmsKKzQxNDA0IGVjZjlmNGVkMTA5ZTVjZDAwZGVhNjIyYjM0NDc3ODdlYzc2NzQ4NjMgbGVnYWN5LXRydW5rCis0MTQwNSA2ZTJiMjgyNDM0ZDQ5NTEwOTQ0ZmNkMTQyOTJjOTg0YmIxNzc5YmUyIGxlZ2FjeS10cnVuaworNDE0MDYgZjg1ZGMzMWYxZjNlNGZlMGY4NjQ4NWQzZGJjYmJhYWZmNWYzNGEyMiBsZWdhY3ktdHJ1bmsKKzQxNDA3IGQ4MTJlMzlhZTkwN2E3ZDU5OTFmODY1ZmVhNzAyYzkzNjYwYWRlNzMgbGVnYWN5LXRydW5rCis0MTQxMiBjYWVhMGNjMDlhNDJmOTFjOTE2NmM0Nzk3NmQ3YzFjMjE5ZmNhMjk5IGxlZ2FjeS10cnVuaworNDE0MTMgMWQxOTU3ZjU1NjI2NzkwZGVjOGVkMGMxY2I4MzFiN2IyMWQ0Zjc3YSByZWxlYXNlMjQtbWFpbnQKKzQxNDE0IGZhMWQ1Njk0NzMwMTMwN2ZhYTY3MDg2ZTQyOTNjYzMzZTBmYTNhNGIgbGVnYWN5LXRydW5rCis0MTQxNSBmMGUzMzU1MjM1YTVlNTI1YzgyZmVlNjcyZDYxYTUxOWUxZThlOTNiIHJlbGVhc2UyNC1tYWludAorNDE0MTYgNWY3MWE1MDI4OWEyNTU2YmFkN2NkYWQwNzk4YmJkZWY0OWZlOWY2OSBsZWdhY3ktdHJ1bmsKKzQxNDE3IGFlZjg1MjZmYzliYmE2ZjlkM2VjMGU5MjViY2IwNDhkNzM4NGI2MDkgcmVsZWFzZTI0LW1haW50Cis0MTQxOCBmNmQ4YjBkZTEzNGEyMDEzOGU0OTVmYjJkZTBmYjJkZDc3NTdkNDI2IGxlZ2FjeS10cnVuaworNDE0MTkgNDEzYzY4YjMxNDg3MWVhNDFhOTU1MzU4YmQ1ZDAxZTMwZmJjY2I2MiBsZWdhY3ktdHJ1bmsKKzQxNDIyIGVlM2UwZWUxZWRjYTdkMzQ4MmM5MTliMDcyOWI1MDBhZjc5NzgxZmEgbGVnYWN5LXRydW5rCis0MTQyMyAyYTkyZDVjZTBjMGQ4YzQ4ZjdjYTFkYzA1MTUyNjFkZjFlYmU3NTkxIGxlZ2FjeS10cnVuaworNDE0MjQgN2YzN2NjZjY5OGNmNWIwMTQ2MzJkNjhjMTZkYTlmMjYyYTMyMDA1YyByZWxlYXNlMjQtbWFpbnQKKzQxNDI1IDY4ODhkZGYxZWE5ZDUzZDQ0ZmFhNTkxNzRlZWUwMjE1OGQyM2JmM2UgSURMRS1zeW50YXgtYnJhbmNoCis0MTQyNiA0MjlmNTM3Y2Y2ZDZiN2U1OTI3OTZmMTQyNTE0MTJiYTNiZjFlN2UwIGxlZ2FjeS10cnVuaworNDE0MjcgNDQ2Mjg3MWE2ZGNlYzAxM2RiMjg3YmZlMDg1MDEwOGRjNjNkZmI5NyBsZWdhY3ktdHJ1bmsKKzQxNDI4IDg3ZTIyMTBlMDdmNDlhZDVkNTBlNWJlOWNmZDY0ZDIwZmRkMGUwODUgbGVnYWN5LXRydW5rCis0MTQyOSA2YTAxOGQ4YzU5YzkxZTA0NmNiNjcxZDQ2NTk4Mjk2Njg1OWU2MDNjIGxlZ2FjeS10cnVuaworNDE0MzAgNjAxNWRmMTM2YjAwZDFiY2NjNDEyY2RiZTIwODhiMWMwNDU1NmU0MyBsZWdhY3ktdHJ1bmsKKzQxNDMyIDliODg1YzkzNDE0NGI3MDU1ZTM2YmQ2MTdhMGUwYWM4ZTEyMDdkMTQgbGVnYWN5LXRydW5rCis0MTQzMyAzZTYzNGU0MWI2ZWMzYzc5NzAxYTJhY2YyYmIxNmJmYzM2ZDBiNjYwIGxlZ2FjeS10cnVuaworNDE0MzQgNjg2Nzk5NWExOGE3ZGE5MDBlNzlkMjIwNzY1ZmQxOGFhNWNmMjViYSBsZWdhY3ktdHJ1bmsKKzQxNDM1IDc5ZjJjZTMyMDE5MjVjOWQ2M2VjYjE2NDQ4ODc2ZjVkZmFiZWZhOWQgbGVnYWN5LXRydW5rCis0MTQzNiBkYmM5M2VlNTNlMmZlZmZjYmZiOWVlZTQxNTc3ODRiM2U5MzUwNmRiIGxlZ2FjeS10cnVuaworNDE0MzcgNjAwYmJiYTU2ZjliYWIzODJiZDgwNWM1NDA1Nzg1N2FhZWYwOTMzZiBsZWdhY3ktdHJ1bmsKKzQxNDM4IDlmNzNkYzA5NTNkMjAyMDRhNTQ5YzhjNzgxYTRjNDg4NGIyMjJjZWEgbGVnYWN5LXRydW5rCis0MTQ0MCBmNDg0MmY0MjcwMGJkYjdmNzNkYjg4YzdhZjYzM2IxMTdmNGE4OTNiIGxlZ2FjeS10cnVuaworNDE0NDEgMzdkYTk2OWFkMTE2YzViYTliNzM1NWMyM2YzYmRmZmEwNzBmZWYwOCBsZWdhY3ktdHJ1bmsKKzQxNDQyIDkwMDM4MzZhMDM2ZjEzMzUyYjViYWIxYjJlYzczNzJhMjBkOGUyNGQgbGVnYWN5LXRydW5rCis0MTQ0MyBmNTMxYzA1Y2QyNDA4NjZlNDYwZWVlY2RkMTAwMWI4NmVlZmRiZTU2IGxlZ2FjeS10cnVuaworNDE0NDQgOTQ3NjU2NjMwYjEyOGRmZThlZTIwN2M3NmQ2ZmY0NGEyMTU2YTFlMiBqaW0tZG9jdGVzdAorNDE0NDUgM2FjYjZiMzQxMDc1YzlhNmU4MzQ2MjZkZDc4OTFiMGJiOTRlN2FiMiBqaW0tZG9jdGVzdAorNDE0NDYgNGFjM2ZhMTU4OTI3OTAyMzA3ZWVjMmY5MDkzNDc2NjQxM2U0YmY3ZCBsZWdhY3ktdHJ1bmsKKzQxNDQ3IDU4M2NlOWMwYzY2NGViYmE5OGQyYjcxYTMwNTMzMjhiNTQ4ZDY2OTMgbGVnYWN5LXRydW5rCis0MTQ0OCA3NmVkN2ZkYzlkODViZGY1ODI5MTIyNGMwNTkyZGYyYzEwMjhiNmZhIGxlZ2FjeS10cnVuaworNDE0NDkgNDRkNjNlZWRmYWNhZjA0NzBmMzI1NDI2OWUxYTliMzVkYjhjMDRhYyBsZWdhY3ktdHJ1bmsKKzQxNDUwIDA4NmNhY2NmZmYwZTc2NmFjM2M3NTk4YzBlZTllMzQ1MWVjMjhhZGUgbGVnYWN5LXRydW5rCis0MTQ1MSBmMzM0ZWZlNzZmNmE1NDYyMDI1YmY5MjI5ZjJlMjE3MTJmZDg0NWI0IGxlZ2FjeS10cnVuaworNDE0NTIgNmQ4Y2U1NTcwY2I3MDIwY2RjYmMwMzA5NzFiNmQxODQ1MjU4YjRlZSBqaW0tZG9jdGVzdAorNDE0NTMgNDBmM2Q3OWIyMTI1MGE0MTVmNzk5ZDI0MTEyZmVmZGQyMWJjNDYzMSBsZWdhY3ktdHJ1bmsKKzQxNDU0IDk0YTQwOWRhNGJkNDBiNzMyNmY3MWFhNmQ4NjU0NTNmNTU2YTk1NWIgbGVnYWN5LXRydW5rCis0MTQ1NSAxZjlkNGFjMzUwMTAyODIzMTJiOWFmMzg4OTM5ZmU1MGVmYzM4ZWIxIGxlZ2FjeS10cnVuaworNDE0NTYgMGQxZTJlNzNjM2VjMDMzNzdhOTFlNmYxYzljNGZjNTYwNjc0NmYxOCBsZWdhY3ktdHJ1bmsKKzQxNDU3IDI5NDIwYmQzYjVjYmIxOGE0ZTg5MjA2NGM4MTAzZjBlZmJiMWEwMGIgbGVnYWN5LXRydW5rCis0MTQ2MSAzMjM2YjVmYjFmYjcwZjMwOTcyMzI5ZjlhYjZmNzE1Mzg4NTE0Njk0IGxlZ2FjeS10cnVuaworNDE0NjIgZTcxNjQ4M2NiM2Y5MTRjYjE5NmZhZDYyNmI0YzE2OGE1ZDRlN2NkNSBsZWdhY3ktdHJ1bmsKKzQxNDYzIDAzODY3ZmM2ZmQ4MDc4Y2MzYjRiNTY5YWMzNzJjMzBmOTVlNmZjYzMgcmVsZWFzZTI0LW1haW50Cis0MTQ2NCA1YjgyMTIwY2I0OWQ2MTIyZGQwYWE2ZTNiZmY0OGEyZjE2MTc5NmE3IGxlZ2FjeS10cnVuaworNDE0NjUgZjk5ZDZjYjg4ZjZmMjA4YmU5NjFmNjU4YWVjOTExMDI5NDc1ODJkOCByZWxlYXNlMjQtbWFpbnQKKzQxNDY2IDM5NTZkNjIwYWYwOWJhMDBkMDY3ZWQxMDFjMzM4OTBlOWI4ODFkYWMgbGVnYWN5LXRydW5rCis0MTQ2NyA0Nzg5ZTc1YTZmZTdkMDYyMDYyZDIyYTU5M2JkMjg4MjE1N2MwNjFiIHJlbGVhc2UyNC1tYWludAorNDE0NjggZTI0NzNjNGYyZWUwZDdmZDdlZGMyYmNlMTJkMTY3NjcxOWU2NTg2YyBsZWdhY3ktdHJ1bmsKKzQxNDc4IGY0MTRmZjI4NzgyM2I2MGZmMzI3MjIxZmU1NDUxZWExY2M5YTYyYTAgbGVnYWN5LXRydW5rCis0MTQ4MCA4ZmQ0NmI2NjBlNjY5NTBiNjliNmE0OWQ2ZTM1N2IxZjYxMDUxOGFlIGxlZ2FjeS10cnVuaworNDE0ODEgNzFlYTZiN2Y1OGNlMzhkMjI1MDUwOWE3YzU0YWRjN2ZjN2FlMWQwNyBsZWdhY3ktdHJ1bmsKKzQxNDg0IDgyNTY1NWJmZGYyMDY0NTAwZWFmMDYyZjdlZjI1YWRmZDE5NjRiOTAgbGVnYWN5LXRydW5rCis0MTQ4NSAwNDQ1NDJkNzA1YzJjYWVlZGE5ZmI1Nzc0ZmI0MTVlNGQzMWI3MzIwIGxlZ2FjeS10cnVuaworNDE0ODYgZmU0YzYyN2IyMDk2NWU5MDU5NjQzZWNmOWI5NzE3OGYyNjkwMzVhZSBsZWdhY3ktdHJ1bmsKKzQxNDg3IGU0YTVhODRlNWViYjEzOTczZGQzNTBmYjAxZWYyODM4MDFiZjQ1YTggcmVsZWFzZTI0LW1haW50Cis0MTQ4OCBjZTliYTAxZWI3ZWQ1ZmZkMTNiZTIxYTM1NzY3NGVjOGRhZjZkNzAyIGxlZ2FjeS10cnVuaworNDE0ODkgZDcyZGI4MmE3MGNkN2FkZWNjNmI1MDM0NTFjZDYwNDliZTM2Njg0OSBsZWdhY3ktdHJ1bmsKKzQxNDkwIGRmNTkyODU1OGE1N2I0MGZlY2Q2OTFiODZmYWY4ZmEyODMzNmFkMjEgcmVsZWFzZTI0LW1haW50Cis0MTQ5MSBlOWJlOWU2MTg4ZjRkNGUzMjZkN2MxNGVhYjRlNzJlMGU3Mzc1NzVkIGxlZ2FjeS10cnVuaworNDE0OTIgMmIwY2Y1MGU3N2VjOThhMTU0ZTc1ZjhmOTdjYzA4NDc1M2JiN2QxMSBsZWdhY3ktdHJ1bmsKKzQxNDkzIDlmZDBjZDM2MmFmZmM3MDkyZmQ2ZDE0ZTJjMWQ4ZTc3ZGQxM2ExMmYgbGVnYWN5LXRydW5rCis0MTQ5NCA4MDBmNDhhMTRhOGEzODExMmZhMTEwMzg2NzNjZDkxYzE1NGZjZWQ5IGxlZ2FjeS10cnVuaworNDE0OTUgYTZiZjdjYWVkMTM1NzA1NjRlMmM2ZTVlZWZjN2NjNmYwOGEwNDI4MyBsZWdhY3ktdHJ1bmsKKzQxNDk2IDFkZmQ1ZDYyZDc2NGVkZWM1YzcyYjI2ZjdmMWU1M2JiMGI4NWVlOWMgbGVnYWN5LXRydW5rCis0MTQ5NyBmOTM3Mzg3ZjRkZjEyMWY4ZjNkMWY5MGU4YmMwNzA4ZTY2ODk1YjhhIGxlZ2FjeS10cnVuaworNDE0OTggNGQxZDI3NzE3OGE1N2FkM2M1MzcyYjVkZmZjYzBjNmIyODA5MmE4MCBsZWdhY3ktdHJ1bmsKKzQxNDk5IDRlNWUxNmEzYmUwZDNjMzg4NWQ5Mjc5NWRlZDljMmM2NWUzNWNhNzIgbGVnYWN5LXRydW5rCis0MTUwMCAxMWExYmMzNTI5MTdhM2VkZjFhYWUyY2E1MmQwMTY3M2M1MjFjODIzIGxlZ2FjeS10cnVuaworNDE1MDEgOGZlYWVkMDdmY2NkNzE0NTI2YmJhODkzMDM1Y2ViYzY3NzdjMmQ1ZSByZWxlYXNlMjQtbWFpbnQKKzQxNTAyIGNmMTU3MTRjOWM4YWEzNTNmNmQ5MjM3NDM3YmRmZGNkOWY3NGM4NWYgbGVnYWN5LXRydW5rCis0MTUwMyA2OGIzOThhODVhMzg3NGJkNDJlNmU4YzgwZGMzMTY1YzZlNDBiYzBkIGxlZ2FjeS10cnVuaworNDE1MDQgMTJmMjIyYjYxN2I4OWY2Y2UxMDMzMmVjZjBhNTlhNTNlMzYxMTY3MCBsZWdhY3ktdHJ1bmsKKzQxNTA1IDNmZDk3ZGUwYTc5MDgzZTQ4ODExZWI1N2QyYTE2M2JmODcwMWE1MWYgbGVnYWN5LXRydW5rCis0MTUwNiBmMTNmYzBjOWE2YjNhNTY4NDZiYjVhMmUwZDE5MmUyMzRiYTU2YWY3IHJlbGVhc2UyNC1tYWludAorNDE1MDcgNTFmNGVlNGY5N2VhMWFiZjk3MmY4M2U5ZjQwMzg2ZGIyYmIyOGYyNCBsZWdhY3ktdHJ1bmsKKzQxNTA4IDFmYWEzMDY5OTNjMDVhZjUxODhkNTgyMWYxOGVmZjY2ZmY0Y2UzMmQgcmVsZWFzZTI0LW1haW50Cis0MTUwOSA5ZmM2YmY2NTVmOWNiMDI5NGI3ZDZjYWMwNWY4OGI1ZmU3NGM1YjgxIGxlZ2FjeS10cnVuaworNDE1MTAgZDRhNmQyNTkxY2Y1OGExMThmMDVhMDBmMTFjMmM0ZTdlMTcyOGFjYSByZWxlYXNlMjQtbWFpbnQKKzQxNTExIGUxMTMyMzE4OWM4NDkxMmUwZWUyNmU5MTMzMWM5Y2Q1MzI5MzZiYmYgbGVnYWN5LXRydW5rCis0MTUxMiA3NGU1NjFhN2U4MmNhZDdhZTM4ZDg1YzMyN2U3NmRjZmQ2OWQ2N2UwIGxlZ2FjeS10cnVuaworNDE1MTMgYzk0MjY4Mjc3ZGU5MzgzNjg1YmU4NjNjY2UwMThhMmE3NmRkNzExNyByZWxlYXNlMjQtbWFpbnQKKzQxNTE0IDFmNzc0NTI5MmU1MGVkODRkMzhlMjdiNmQ1MDc5OGMyMmUwY2I1NmQgbGVnYWN5LXRydW5rCis0MTUxNSBmMjYwNWY1YTZkNDZmODNhNzlkZWUwOWZiYjJhOGRkMDZjOWIwMGEwIHJlbGVhc2UyNC1tYWludAorNDE1MTcgYzJiYmE1ZjQ2YWI2ZWFlMTc3YTZlNDk4NTZjZjIxMjVlOGE2MmY4NiBsZWdhY3ktdHJ1bmsKKzQxNTE4IGZhYjM3MTM2ZGQ2ZGE1M2E4YTA5YTI5OTBhOTE1MWUzMDUxNjEyZDUgcmVsZWFzZTI0LW1haW50Cis0MTUxOSA5ZjY4NTJmZjNkMTkxZTQ4YTRjMTAxMWRjNGUyYjc0MWVmMjczMzZjIGxlZ2FjeS10cnVuaworNDE1MjAgMWUxYzNmNTUzMjhhMDg2MTQwNDdlMmI3MDEyMThiYzE1YWIwZGIyOSByZWxlYXNlMjQtbWFpbnQKKzQxNTIxIDcyZDVjNjBmYTQ1ZDllZGMzOTViZDliN2Q4MWE4MDI4MmM0MDkyYzYgbGVnYWN5LXRydW5rCis0MTUyMiA5ZTYzMGNjMWQzMDkwYjllYzIwZTVmZDc3YjBlYmEwYTI5NDAzZDdhIHJlbGVhc2UyNC1tYWludAorNDE1MjMgY2YyYjRjOGFkMWFkNGU0NmY2ZjJlNmZhNWM2NzhhZjZhOGFlMjE3ZCBsZWdhY3ktdHJ1bmsKKzQxNTI0IGI3YzZjNDYxYTgwODE4MGIwYmJmYjcxNDEyMzUwOTIwNjBjMTc5NzUgbGVnYWN5LXRydW5rCis0MTUyNSBlMGRkZWE4ODFmNGFiZjcxYzRlY2E0ZTgxMzM3MGIyMDliZjliMGJiIHJlbGVhc2UyNC1tYWludAorNDE1MjYgMWZkZWJiZDYwZDdkZGRhMGVlMGNhM2M3Y2YzYWIzZDQ5ZWU4NWMwYiBsZWdhY3ktdHJ1bmsKKzQxNTI3IDdjODgwMGI4MWM1MGM5ZjY1OWFjZDc0MWE4OGZlYWFkNDhiNDc5MWMgbGVnYWN5LXRydW5rCis0MTUyOCAyMTUwYWY4NGExODVlOTA4ZDVlYzU4ZmE0YTViYjU3Y2RjNGNlZDU2IHJlbGVhc2UyNC1tYWludAorNDE1MjkgZTZkMzFjYmYyZWQzOGM1YzFjMjljNmY1NTAyYjQyOWIzZTAwYTkxMCBsZWdhY3ktdHJ1bmsKKzQxNTMwIGJiODBiOGYzOTNlZmYxZDJlMTlkZGMxOWU0MGY1ZjUyMDAxMDdkYmMgbGVnYWN5LXRydW5rCis0MTUzMSA3OTM3NGViNmRiNTE2Y2NhOWE4NGJkZjk2YjQ3YTE3ODU4ODhmZDE3IGxlZ2FjeS10cnVuaworNDE1MzIgY2IxZmYyYTg1ZTNkZGQyMjgxNTg2NDk5MmIxZTcxNzlmMTdmNGM5OSBsZWdhY3ktdHJ1bmsKKzQxNTMzIDAzM2JiNGRiNWFlOGMxYTYyNGI4YjFlMzgxZDFiNmJhZWRiMzZkMTEgbGVnYWN5LXRydW5rCis0MTUzNCA2ZDZjN2NkNDUyOTg5ZTU4MThhMGJhMGViYzdhN2EzMDYxZGZmNzU0IGxlZ2FjeS10cnVuaworNDE1MzUgNWM4ZGM1ZDIxOGQ4ZDcwZjJmMDNjODk4MDM3NjA5ZDExM2ZjNzk0YyBsZWdhY3ktdHJ1bmsKKzQxNTM2IGI0NmRjNmQxMDk4Njc1NDMxZGEwYWZkMTJjY2U5ODA3NWUyMmY4ZDYgbGVnYWN5LXRydW5rCis0MTUzNyBlODBhMWFmNjc2MjNmMGY1NzI5YzFjZGFjM2E3MWZhN2EwNmVlZmM5IGxlZ2FjeS10cnVuaworNDE1MzggYjJlYjE1ODljMjJiNTEzN2VlMTMxZGZhMjgwN2Y3ZmQ1MjJhOTZjYSBsZWdhY3ktdHJ1bmsKKzQxNTM5IDQ1NzJmYjRkZmJiM2YwZmI2YWQ0NTczMjk2ZDc4Y2I2NTg3OTllZTcgbGVnYWN5LXRydW5rCis0MTU0MCBlZjYwOGI1OGJmZDhhZDVjMTNkOTVlY2FlYWE1MmQ1OTcwZmUzNzk3IGxlZ2FjeS10cnVuaworNDE1NDEgZjgwNTYzMjhmMDFhMTYzZGNkMGU1Mzc2NmQyYWNhZDYwYmY5ODEzZSBsZWdhY3ktdHJ1bmsKKzQxNTQyIGI5YzY4MmVkOTEwY2RjNjJiMzc2OTRjZTA3NDBlNzcyNDc0MjFlOWMgcmVsZWFzZTI0LW1haW50Cis0MTU0MyA5MDc5NzIzMzIwOGVmZTBmYTE2NThmNTcwODU3YzY1NzA2OTM5Y2E1IGxlZ2FjeS10cnVuaworNDE1NDQgNDgzNTNjZjUxMzQwM2ExZGM2MTI2YjM0NWYzY2FlN2YwZjU3ODJiZCByZWxlYXNlMjQtbWFpbnQKKzQxNTQ1IGQ3ZjYzZWRlNDk1ZTg1ZTI1NTFlYjcxYWQ1OTQzYzIyNGJlMDU2YjEgbGVnYWN5LXRydW5rCis0MTU0NiBkN2Y1MmZjNDIyNDU4YTE2NTk3YWJkZDJhZGUxOWM3ODhjMGIzZjcyIHJlbGVhc2UyNC1tYWludAorNDE1NDcgZDlkOGIyZTJlNjBhZGYwNmVlMDhjMzhlMjBjNzE1ZTY2Yjg4NDM5MCByZWxlYXNlMjQtbWFpbnQKKzQxNTQ4IDc1YTc5Y2M0Y2Y3YjY5MDZjNTIwM2JiYmVlOGU4MTQ0OWVhMjFjOGYgbGVnYWN5LXRydW5rCis0MTU0OSA5ZmM3ZGZlODZmOTY2MzYwNWJlOGY2NTBmZmZmMzE0M2Q5MGM5OTNmIHJlbGVhc2UyNC1tYWludAorNDE1NTEgMWQ4ZWZmZGU4MmYxYjQzZWY1YzhlNTk2MTU3ZGY2MjQ5NjliNmIyNSBsZWdhY3ktdHJ1bmsKKzQxNTUyIGZjYTczMzc3MTBmZDdiMzQxN2U0NzQzNjdlY2Y4NTBiZWQ1NWRiYTkgbGVnYWN5LXRydW5rCis0MTU1MyA2NTg0NDRiYWViYTM3ZWZjOGU0OTVhZjdiMWEyMzE0ZGQ1YzE1YmIzIGxlZ2FjeS10cnVuaworNDE1NTQgNzI1NTVhOTY3ZDZhODVjYjM3Y2MxZjEzZjFiMmIxNjljMzU1NWJhOCBsZWdhY3ktdHJ1bmsKKzQxNTU1IDczZWJkYzYyYmY4ZjBkMWM5MTNiMTY0ZjMxMGExMzBlNmZiZTA3ZjAgbGVnYWN5LXRydW5rCis0MTU1NiA0ZDA2MTYyYWQyMDljODJhNWRiY2U0NmJiNGUxNWFmOTFmZDRlN2ZlIHJlbGVhc2UyNC1tYWludAorNDE1NTkgZDE3MmNiYTk2NGI3ODFiYTNlN2ViNDYwZThmNzllZTg1NTUzOTkxMCBsZWdhY3ktdHJ1bmsKKzQxNTYwIDlkOWU0ZWU0ZGE4OWZlZmM0YTY3MGI5MzQwMGFkMDc0MzZiZmE3ZDEgbGVnYWN5LXRydW5rCis0MTU2MSA5YzQ3NjVlOWRjOTI3MjM2NTI1NTM1ZDVkYTZkYjBlMjRlYTZmYjk3IGxlZ2FjeS10cnVuaworNDE1NjIgZjk5NzIxMzgzNmJiMjkwZDYxZDRkMWY5YTM4ZjdiZmRkYzM3Yzc3YiBsZWdhY3ktdHJ1bmsKKzQxNTYzIGExYjZlNjc4NGNhNTgwZTVhMzA0YTU2MzE2ZDVjZTI4Y2RhNTJlNDQgbGVnYWN5LXRydW5rCis0MTU2NCAxNWNjNjAxNjc5NWUwMzQ2NmNlODE1YjQwMWQzNjg1YmEzNzZmNDAwIGxlZ2FjeS10cnVuaworNDE1NjUgNzRlOWZlMDY4YzRkZDIxODQzZjRjZjE1ZTFjM2RjNmE0OTUwNzkwYyByZWxlYXNlMjQtbWFpbnQKKzQxNTY2IDRlYWE3MmJhMTlhMmU3MjdiZDMwYjUyZDQ5ZDcwYzM4MjllMTBhZjUgcmVsZWFzZTI0LW1haW50Cis0MTU2NyBhMTdjY2ZjMzcyZTk5YTk4NDA0ZmViMzQzMzUwMWUwYTg3MWU1NDJjIGFzdC1vYmplY3RzCis0MTU2OCBlNjc1ZmQyOTViNGI5ZTI2NTEzMWM0NGFiMzkzZmM3MjgwOGY1MTNmIGFzdC1vYmplY3RzCis0MTU2OSBjY2Q4YTBkMjg5NTA5NjZkODUzZjU4NjJhNjRlNjc1YmZlZDY5NDIzIGFzdC1vYmplY3RzCis0MTU3MCA1YjBmNWQ5NzYzMjU4ZjlhZjg3ZmQxNjc5NTJmMWRiOWJiNmMyOTg5IGxlZ2FjeS10cnVuaworNDE1NzEgYTVkOGYwNWJhZjk4Y2YyYzUwZDhmZjU3MzZmM2E3NGU5NzRlNTBjYiBhc3Qtb2JqZWN0cworNDE1NzQgOTZhNGU4MDY0MjVlNDE4NTVlNzVjZjUzMzJjY2M0YWJlMWE1MDc1MyBsZWdhY3ktdHJ1bmsKKzQxNTc1IDQ2NTAxNDkwMjUyZGI3YWFhMzFkYzhjYTc5OGM5ODE5MTg3NDAwMzIgYXN0LW9iamVjdHMKKzQxNTc2IGViNjZlYWU5YzJjOGMzNDIwNDIwMWYzY2IzYTUzYmRiZmIyYzNjMWQgYXN0LW9iamVjdHMKKzQxNTc3IDg1MDdkNTgyNTM1NGFmNzk1YmI1YjVmZTZhMDQ2OTFiNjgzOGQzNTQgYXN0LW9iamVjdHMKKzQxNTc4IDljMDQ5MDk5N2U2NjIwMGNlMzhjZmU5MDA3NDA5ZDg2NGFkMjhjODggYXN0LW9iamVjdHMKKzQxNTc5IGFiZmVhYjczYzhmMTljY2VmNzJlODQ0MGE1MWRlNzcyNzcwNGJlMDIgbGVnYWN5LXRydW5rCis0MTU4MCA4MDU2M2RjMTM0ODc1ZjBmYWFmYzg5NjU1NGU5ZGUxY2U1YTQ5NDI4IHJlbGVhc2UyNC1tYWludAorNDE1ODEgNmY0NjEwZjY5MmUwZWFiODU1YmJlODNlMmRhNDNhNzNmYzQwMDNhMSBhc3Qtb2JqZWN0cworNDE1ODMgN2FhYTA5ZjFhMDQ3MjQzMzFjM2Y1ZjU1YTQ0MjRiM2IxZTM3ODIxMSBhc3Qtb2JqZWN0cworNDE1ODQgYzU5M2YzMzY0M2RkZjUwYmVkNTBjYjFlZTZlMDc4NTNiYjQ1OWZjMiBhc3Qtb2JqZWN0cworNDE1ODUgODFjOTQ0YzNkMTNhMDU4ZjVmZjVjN2VjZWM3MWU2NDAyMDJmOThlOSBsZWdhY3ktdHJ1bmsKKzQxNTg2IDE5MWI1OTkwOWRlZDhkNDAzOGMzN2E2MzFhZThlZThkMDY4YWY0MzggbGVnYWN5LXRydW5rCis0MTU4NyBlNzJiYzVkYWZlMTZlYmVlZTlhZmI1NWUxM2Q1ZTdlYmMwMDg5MDBkIGxlZ2FjeS10cnVuaworNDE1ODggNWQ5NmE1MzZiYmYzZTY1ZDIzZGE4MDJmMzk5Njc1NGFiNjU1NWQ4NyBsZWdhY3ktdHJ1bmsKKzQxNTg5IGFkMGYwMzg1YzZmMzk4ZmM0ZGFlYjlhMjBhZjA0ZmUzNDExODUzNmEgbGVnYWN5LXRydW5rCis0MTU5MCBjZjMxYjJjOGU4NTQ2MGYwZDQ4NDlkZWQwZDA3NDQ4ZWM4ZjhhZDQ5IGxlZ2FjeS10cnVuaworNDE1OTEgMDNhZTBiOGViNmNiZmI0YjFjYmFlZjU0ODQyMDg0ZjdhMmFkODg3OCBsZWdhY3ktdHJ1bmsKKzQxNTkyIGUyNmRjMzM0ODkwOWJmNzAwNTI3NTQ4NmU2OWQ3Y2I3ODY3YzM3YTUgbGVnYWN5LXRydW5rCis0MTU5MyAxNmUwM2NmYjlhMDIyYWUxZDM5M2I2ZWI3Y2EzOTNmZWEwZWNmOGE5IGFzdC1vYmplY3RzCis0MTU5NCA3NWQ1MzZiMjQ3ZWFhOWMxOGJiYTUwMmYyMzVlMzUyMGFkOTEzMzY0IGxlZ2FjeS10cnVuaworNDE1OTUgYTA4N2U3YmY1MGYxZGUzNzg0NDAxYWVkMDQ2MDFhNDI1ZGE5YmRhZCBhc3Qtb2JqZWN0cworNDE1OTYgNTA5OTU2YTU0ZjM3NjE3NjE4NmQ2Mzc2M2I3ODY3ZmEwZmIxMGYwNiBhc3Qtb2JqZWN0cworNDE1OTcgM2E0MjE0YmZiNmU0NGIwMDVlZTEyYmQ4MTVmZjU3NTE2ZmYxY2E0ZSBsZWdhY3ktdHJ1bmsKKzQxNTk4IDUyMjUxMjI0Y2I5OTVlMWJkNzg5NmVkOTgwODU4NjQwMDlmMTMyZTYgYXN0LWFyZW5hCis0MTU5OSA1YmE5MjBlZWYwMTYwNDM4MTM5MDU3YWM3OTY2ZDA0NDNiNDAyNGNkIGxlZ2FjeS10cnVuaworNDE2MDEgOGVkYTFhNThhNDkwMzcwYTI2ZjIyNDlmZWRlNGE1NzIyNTE5ZmQyZCBsZWdhY3ktdHJ1bmsKKzQxNjAyIGYwMjBhN2FkZTZiNWQ1ZWVjN2RiNDgzY2ZlNDUwY2RkNDJiNjFlMGEgbGVnYWN5LXRydW5rCis0MTYwMyAxZTEyODdiNmY2NTI2ZjU5Y2IzZjFkMDk0MGE3OTIxNjMzMTY3MzQ2IGxlZ2FjeS10cnVuaworNDE2MDQgY2IzYWU3Y2VhMTA2NjYyNDljM2YyYTAzMWVmNGZiYjJhM2VkYzBkNyBhc3QtYXJlbmEKKzQxNjA1IDVkMDMxYmQyMjMwN2JjYjQ1ODZjYWNhOTVlMDdmMmZhMTc1YzM1ZjAgYXN0LWFyZW5hCis0MTYwNiAzYzIxZDViZDE1YmU2M2ZmNWZkZDNkNDhkZjYzZTg2NTkwMjQxYzZhIGFzdC1hcmVuYQorNDE2MDcgYzg5NzA3ZGFhMDExNDQ5YzQxNTlhM2I1ZmNlYTJjNTBmMjI2YzA4MSBsZWdhY3ktdHJ1bmsKKzQxNjA4IDAxYmQxNDZkYzUyMDdmN2Q3YzE3YmUyMmMzNGM3YWNiZWJiYzYzNDQgYXN0LW9iamVjdHMKKzQxNjA5IGM4MDA5YmQ2MTE0ZmE2NWIwODZiZWM4ZDE4Yzg2MGY5NzFjNjFjNGEgYXN0LWFyZW5hCis0MTYxMCBlZTU1NDMwZTVjZmU3NzhkY2NhNjY3MzZjMDdjNTI3ZjE0MWM1MDA4IGFzdC1hcmVuYQorNDE2MTEgNTUxZDU4YjNkMGNkM2M3NmM1MzBmYWZkZDU4NjM4NjMwMzU2NmU5YSBhc3QtYXJlbmEKKzQxNjEyIGFhNWQ4ZTRhMDBhOGE0ODYzODY0NWQ4NTQ0MGE4YzhlNjU3MjdhMWQgYXN0LWFyZW5hCis0MTYxMyBjMWU2NzhlN2JiMTI4MzliYmEzOGYxZTg3NGVlMjFjZTQzZjViNGI4IGFzdC1hcmVuYQorNDE2MTQgYTI5ZGM1OGE5OWYzODk0ZWE0OWUzZGUzOTViYzQyYjRlZWI1ZmU2YiBhc3QtYXJlbmEKKzQxNjE4IDExZWU5ODJmOGM4ZDBlNDYwZjRmMWE0ZDBkYWZmYWNjYWY5ZmRhMzMgbGVnYWN5LXRydW5rCis0MTYxOSBkNDdhYmY5NzU4YzlmZWFlNzU5N2M2ZmM0YjgyZWU5YTllYjYyZWYwIGFzdC1hcmVuYQorNDE2MjAgYzYyOTgxMjUwMzllNGRmYjEzODdiYjA5MTFlYWIwOTdmMmVhOWQxYiBhc3Qtb2JqZWN0cworNDE2MjEgYzBjMTJhYTc1N2U3MDlmMDljNzZiZDMxNzYyMzA3NzdmMmE1ZTJmZCBsZWdhY3ktdHJ1bmsKKzQxNjIyIGFiZTFiMzMyZWFhMDBmNzA3NDA5MzJjMWY2OTg2MGM2YTYzN2E5YzQgYXN0LW9iamVjdHMKKzQxNjIzIGMyMzZlYjZkOTkzNDUyNzVmOWQ0ZmRhZWFmMzc2ZTBhYTlkZGNiNjMgYXN0LWFyZW5hCis0MTYyNCAxZTY5ZTYzYWUzYTA4YjQ5Zjk4ZWI3NWYwMTNhOTM4YWQ5YWJkNWZjIGFzdC1hcmVuYQorNDE2MjUgYWI4YWI5YmU2ZjRiNDdjYTBiYjFhZTY5YTk4MTBjNDNiNGFlOThlMiBhc3Qtb2JqZWN0cworNDE2MjYgYTI5Yzg5YjRlOGM2MzA5NWM3MmMxNGUyNWVlODE5Mzk5OTBhZWQzNyBsZWdhY3ktdHJ1bmsKKzQxNjI3IDhhZDMxOWYzYTkzNWVjNWQ0YWZhMGYxYzVlMjhmOWNlODY4MDJkNjAgYXN0LWFyZW5hCis0MTYyOCA1MWUzYTgzOGFlYmU3NDAxZGM4NjI4YzgyMTY2YzAwMmQ5Y2YyMDJlIGFzdC1hcmVuYQorNDE2MjkgYWI0MzFiMzI0YTRiZDQzOTk3MzIyZmFmOWFkM2I1NjM4MTc1MjJmOCBsZWdhY3ktdHJ1bmsKKzQxNjMxIGI3N2VkY2VlODg4Y2EzNDUxYTcwNWJiZjM0MWQwOThkMmQzZjA1ZmIgbGVnYWN5LXRydW5rCis0MTYzMiBkYmNjODkxMmEyNGRlYzQ0ZDZlY2EzZDA5MDI5ZDdjMzhjYWE2ZDcxIGxlZ2FjeS10cnVuaworNDE2MzYgNjQ5YzM0MTgwYTBmNTBlMDA1NTA0YmRmOTRlMDQyZmM4YWM3MDE2YSBsZWdhY3ktdHJ1bmsKKzQxNjM3IDk2ZDFmYTM2OTY0ZDRlMTFhMDI3M2I0OWU0ZjA2ZGMxMmZiOTU3YzQgbGVnYWN5LXRydW5rCis0MTYzOCA5NTQxMzY5YjBkY2FmMDQ4ZjFiZDk4NmEyOGM5NmZmZWVlMzdmODA4IGxlZ2FjeS10cnVuaworNDE2NDEgY2MzMjYxNTk3MTM2YzYyNTZmOTFjYTc2MzBkZGM2YzkzMjkwN2YzZCBsZWdhY3ktdHJ1bmsKKzQxNjQyIDYzMjE2NjlmMmY0ZDEwYzZiY2U1YmUzNWU5MWMxN2Q5OTIzNTUxNjAgbGVnYWN5LXRydW5rCis0MTY0MyAwZWI2ZWY5MmM1NmUyNTc5NmIzYjI5Y2RjYzE5MDQ4ZDEzY2ViM2I5IGxlZ2FjeS10cnVuaworNDE2NDQgNTJmMWQ1N2YyMzdkYmJkYzVkODM3NDRkZjZkMTNmNDY0YmRhNjEzMSBsZWdhY3ktdHJ1bmsKKzQxNjQ2IGU0YjYyMWUxZWRhNjYyMjA1NjUwZGRjMTE0NmY1YWE1MTU0NTUyY2QgbGVnYWN5LXRydW5rCis0MTY0NyAzMmU3ZmU5YzIzYjkxY2IyZjUxMTg4ZmI4Mjg1MWI4N2FhNmI3MjY2IHJlbGVhc2UyNC1tYWludAorNDE2NDcgZjZlNzM0YjFmMjYxYzU0NmQ4MGU5ODQ5MDM4MDU0YmYwOTdmZjg0ZSBsZWdhY3ktdHJ1bmsKKzQxNjUxIDZmNTAyZDM1ZmM3NzViZTY3YjgzMWQ0ZGIzZTVhNTk5NDFhMTA4NjEgbGVnYWN5LXRydW5rCis0MTY1MiAxMDIxNDBjM2EzNjE0ZGIzZTkzMjVhYjAyMTI0NTcxNGUxZGRkMTZmIGxlZ2FjeS10cnVuaworNDE2NTUgYTVhZDc2YTc4ZjRiMjlhOGFhN2Y3NDdkZGI2ZjE2YTgyZGNlMzhmZCBsZWdhY3ktdHJ1bmsKKzQxNjU3IDUyMmUwMDczZDljOWU4YmI3NTE3YmZjNjljMmViM2JjM2JkOWYyNDUgbGVnYWN5LXRydW5rCis0MTY1OCBmOTQ0MTg3MTVlNTUzMTI5OWYzYWI3Y2NkYzIxNWMwYTJjMzBjYjM3IGxlZ2FjeS10cnVuaworNDE2NTkgMDdmZGI0ZDJiOGY2MjMzN2QzOTM2NGE1NjkzNTk2ZjRmMWFkMTA0ZiBsZWdhY3ktdHJ1bmsKKzQxNjYwIDA3Y2U5Mzg4NTdlMWJhMmYxODVjNThkM2EyZGVhOTc2MWUxMjc3YzAgbGVnYWN5LXRydW5rCis0MTY2MSAxNjQ3MGI3MjJmMjA5YzAxMjU0M2U4YTkwMGVkOWJkNzE0NjY0ZDkwIGxlZ2FjeS10cnVuaworNDE2NjIgNDAzNjc4NzRmODYxNmFjNzA0NTdhODMzZjFkZWJkYmQyYzNiOTRmMiBsZWdhY3ktdHJ1bmsKKzQxNjYzIDM3N2RmMzliY2RhMWYyNmZkMzNmN2JmNzc3YjNiYzI0MzMxNjA0MGIgbGVnYWN5LXRydW5rCis0MTY2NCBlZDM0N2M0MzZkNTg5NjZjYmZkODRmZWJjMTQwYzUzMDkzYWNlZmJjIGxlZ2FjeS10cnVuaworNDE2NjUgYzI1M2U5OTNkZjhhY2U4MjE2MWViMmRkNzMyOWVjZGEwN2M3NmQ2YSBsZWdhY3ktdHJ1bmsKKzQxNjY2IDY4ODE3MzE1Yjc0Y2E5NjlhNGM3NmU1MzBkNjc3YjE4MmM1ZTYwMzAgbGVnYWN5LXRydW5rCis0MTY2NyBiZmQ2YTZmYzcwZWFmNTNkNmMxMGJlMGNiNDEyZWQ0YmE0YWJmYmY2IGxlZ2FjeS10cnVuaworNDE2NjggY2Y4ODYzNmNkZjRiZTk5ZDZiZWU5Y2ViMjU0ZTlmMjhkMzNjMzRkYSBsZWdhY3ktdHJ1bmsKKzQxNjY5IGExNGE3ZjYxNGE5NmRhNGJiOWJmNDYwNDU5MjhlOWEwNzhhZmI4YTggbGVnYWN5LXRydW5rCis0MTY3MSBiZWM5ZmFjOWY3N2M3MzAzNDFkYWI2Nzg4ZGRiZGQ3ZWY4NmE4Zjk2IGxlZ2FjeS10cnVuaworNDE2NzIgMjdkZjJmYmUyNzA2NjRjYTIyODVmZGQ3MmFlMzAwMWQ2ZDI5OTU1ZSBsZWdhY3ktdHJ1bmsKKzQxNjc0IGRiMWMwYWFiYzQwNWEwMmVhNTVhZGNiZWFjNjZhYzE3YWM5NDlhZjQgbGVnYWN5LXRydW5rCis0MTY3NyBlMDFkODUyNGI2ZjY0MmNiYjM5MDk0MWFkNDczZmQ1ODBiYzNiYWViIGxlZ2FjeS10cnVuaworNDE2ODIgY2Q4YjViMzFlMDJhYTRiYjhhYzk3ZmNmOTY3N2FjNmQxNDc1NzJhMCBsZWdhY3ktdHJ1bmsKKzQxNjgzIDkzMDFhN2MwMzEyYWMwM2I3Njk1MzliMDI5MzNlNzkzMzJjMzM5OTEgbGVnYWN5LXRydW5rCis0MTY4NCAzNWZlOTAzMjVmNWI3YTIyY2ZhNGIxMjQyMzZhYzAwNTljNjkwZjU2IGxlZ2FjeS10cnVuaworNDE2ODcgZjBhNTMzMGYyYjNlMTFiMWY1NzBjZmU0YWJjNGQ0MzUzZjg1MDk2NCBsZWdhY3ktdHJ1bmsKKzQxNjg4IDYzNWUwZDkwOTY0NWVmNjVhMzEzMmEzODBjYWYzMzlmN2E5NTlmNDggbGVnYWN5LXRydW5rCis0MTY5MSA2ZDdkMWE5OTZhMDIzYThkYTM1ZWZkOTlhYTYxNmM0YWJhZTE0NjNjIGxlZ2FjeS10cnVuaworNDE2OTUgMjQ5ZmZlMTNjYWY4YTU0YzZmZDZiYzAwZGJjOTNjODQ5NDQyNmYzZCBsZWdhY3ktdHJ1bmsKKzQxNjk2IGZkZjBhYzM2ZWI3NDYxMmZhNDY4YjMxZTU4NDk3ZmM2ZDQzOGZiNTggbGVnYWN5LXRydW5rCis0MTcwMCA0YmZjZDVkY2QwYmZhMjUwYTU5OTAzNTIyYjM2ZDJiNTFmYzA4Yzc0IGxlZ2FjeS10cnVuaworNDE3MDIgNzU0OGQ3NjU2ZDg5ODY0YjNhZTBiM2YxZGZjZTlhZGZiZjBhMzZmMiBsZWdhY3ktdHJ1bmsKKzQxNzAzIGRlNjlhNTI0ZjRlZGJjNmMzYjEyNWU5ODg3ODQ0NTFjNTFhODQ2N2QgbGVnYWN5LXRydW5rCis0MTcwNCA2NGM2YWI1NjcxZTdkNzcyOTY5OGIwOTE4YjE3ZTY0YzQ4MTUyM2MyIHJlbGVhc2UyNC1tYWludAorNDE3MDUgZGUwYzJmZWE2NWMyMWJjOWFjYmVkMzhkOGEwMDFhN2U0MDUwYTI2OCBsZWdhY3ktdHJ1bmsKKzQxNzA2IGM2OTFmZDYzZWIzYzA5NWM2ZWQwYmI4OTY4OTQ2YWYzNThkOWQzZjkgcmVsZWFzZTI0LW1haW50Cis0MTcwNyAxOGQyN2M0NDQ3ZDExMzZjZGMzYjEzZTAwNmVhMzAzZGY2NmI2NWZiIGxlZ2FjeS10cnVuaworNDE3MDggYzExNTEzNjkzY2I5NzAzY2U2OWE2MTQyMTFmMTMyOWU5OWZkMWFmMiBsZWdhY3ktdHJ1bmsKKzQxNzEwIDk4NjUzZDlmOWNjMzljM2U1OTNiNDE0YmJlY2JiOGRhMTQzYzRjODMgbGVnYWN5LXRydW5rCis0MTcxMSA2NTJiZDVlNWI3NzgyZjg2YzA3YzNhMTUyMTM2NmVhMTA5ZmUwNzQ0IHJlbGVhc2UyNC1tYWludAorNDE3MTIgMThmMDlhYzYxOWU4OTJmMmU5ZDViMGM4MzUwNThlMjI5N2VkYjQxZSBsZWdhY3ktdHJ1bmsKKzQxNzEzIGE1NTgzMWQzMjkxNWEwNWY2MWExY2Y5ZWRhYzNhOGE5MTY4OTA3NTcgcmVsZWFzZTI0LW1haW50Cis0MTcxNCA0ZGIxN2EwMGJkY2QzNTMwN2YzNjg3MjAxMWQ1YmQzNWM2M2M0ZWQzIGxlZ2FjeS10cnVuaworNDE3MTUgZGVlMjUzYTMxMTZjNDU2ZjliODZjZDc3ODFlMjVkZDM1MTRiNTU1NiByZWxlYXNlMjQtbWFpbnQKKzQxNzIyIDRlYzYwMTExMDkwNjEzNzYxZTk5MGZlYjZlM2RjZDNjOGI3MTY1ZjggbGVnYWN5LXRydW5rCis0MTcyMyA2NTg2Y2Q5OTIwZTdlM2ZmNmIxY2UwNDlhNDU5NDNkMDFkNGY4ODdjIGxlZ2FjeS10cnVuaworNDE3MjQgOWI4OTdmYjdhYzZhMjIxNmQ2ODk4Y2VjMDhkZDNiNTEwNjc5MDM0MiBsZWdhY3ktdHJ1bmsKKzQxNzI1IGY4OTNkNDAzYTk4YzFmODE5YzAyMTZhNjNmNTI5MzkzYTFjNWZmYjAgbGVnYWN5LXRydW5rCis0MTcyNiBmYTA4YzY5N2EyNzU4ZGIzZmVjZmQwZDhmODkyMjBiYjVkMWE3NTEzIGxlZ2FjeS10cnVuaworNDE3MjcgYWRlNjc4Njg3ZDNiMzI4MDVjNDI2OTlmYThjZmEzYjIyMDY5ODcxNyBsZWdhY3ktdHJ1bmsKKzQxNzI4IDMyMWVmZDAzNzg1OWNjY2U4M2RlNjYzZDljMzY3YzJmZmJkZDJmMmUgcmVsZWFzZTI0LW1haW50Cis0MTcyOCBmMWFlMTE0NTdkMzRiYzNiMGM2N2Y3Y2MwMzQzZTg5ZWNkNTI5NmMxIGxlZ2FjeS10cnVuaworNDE3MjkgODc3YjVkNGNhMzY4MTcyMTM0ZmE3MGIyMTQ0ZjRiMGE3ZTlhYjM3OSBsZWdhY3ktdHJ1bmsKKzQxNzMwIDczMTAzMmQxMDE1OWZiYzBkNTI0MjQ1M2Q2ODI3NzllMTQ2N2Y1Nzkgc3NpemVfdAorNDE3MzEgMjc5MTljZjg0ZGMzZGRmMGNkYjMwZWMxMTM0Y2Q2YzdjOGE5MjJjMiBzc2l6ZV90Cis0MTczMiBjZWM5YzJjMTRlMjhkNDRmNDA2MDY1MjdjZTgxMTJhNGM2NzhjYWEwIGxlZ2FjeS10cnVuaworNDE3MzMgOWVjNWIxNjVmZWEwODE0YTI3YmFhOGI5NjVmMTUyOTEwOWQxMWEzZiByZWxlYXNlMjQtbWFpbnQKKzQxNzM0IDc5NjMxMGNiZmZlYjIzMjRlOTQ2ZmY1OWUyZWUyZTUxMjYyNjA2MjMgbGVnYWN5LXRydW5rCis0MTczNSA0YzE1YThlOTFhZTc0ZmVjNWJkMGFjNTMwZGM2NmZmMzFmMWZhOTM1IHJlbGVhc2UyNC1tYWludAorNDE3MzYgODFkNTk5NTk1MWZkNDEwY2E4NmRjM2Y3NGQ1MGRmMTYzNjVkMGRmNSBsZWdhY3ktdHJ1bmsKKzQxNzM3IDk4MDU2MTk1OGYxZDM5MzNmZDYyMTM1MWY5YWRkM2VkMjk5YzBjNDYgcmVsZWFzZTI0LW1haW50Cis0MTczOCBmYjZlNjRlYjg2YzAzOGYzMDJjZTI4ZjNkOWY2ZjcyYzk3ODkxMTZhIGxlZ2FjeS10cnVuaworNDE3MzkgZWEwODNlZmRjOTZjNzNhOTkyMDQzZWZlYzdkY2UyNzc3MWUzZDFkYyBsZWdhY3ktdHJ1bmsKKzQxNzQwIDcxOWJhMDJkMmUyY2E2M2QxNTEyMmI0NDZkYzNmMjkzZmZlZDRjNjMgbGVnYWN5LXRydW5rCis0MTc0MSA3YmZiMDk3Zjk1OTc2ZjRlYmM3NmEzNzk1Y2UzMDA3NTI1ZGYxODk4IGxlZ2FjeS10cnVuaworNDE3NDIgM2QxYmFmNzE3YzVhZjVkOWVmODkxODZmNTAzNzU5NGU3MjZiOWEwZiBsZWdhY3ktdHJ1bmsKKzQxNzQzIGQwMjE0YmIxZmQ1MTJiNjdmMWNlNGViYjBjZTIzZmMxZTExOTZmMjkgbGVnYWN5LXRydW5rCis0MTc0NCA5Njk3ZWVlYWYyNDY2MzJlYzQwOTNhNzc2YTg2YTcwMDYxMjc5YThlIGxlZ2FjeS10cnVuaworNDE3NDUgNDVmN2I3MzgzYTRlMjBhOTcxMGY1MmQ5Y2Q5NmU1ODM3MjZmNjU3NiBsZWdhY3ktdHJ1bmsKKzQxNzQ2IGRlMTZhODVjM2I0Y2YzOGUyZTU2YTc4ODM2ZmM3NTcxYmRkMjFmMjkgbGVnYWN5LXRydW5rCis0MTc0OCAxNWI1OGU0NWYxYTEzMTZhY2MxNWI3NGQxN2UzODAwZTlkZjdmMGU1IGxlZ2FjeS10cnVuaworNDE3NDkgZGEwYmFiNWRkNzQwODlmNzI3Yjg2ZmZjNzI5MjNkMWVlNzJmNzNkYyBsZWdhY3ktdHJ1bmsKKzQxNzUwIGY2N2M0YWIzMDRlY2VhODFhYThhNDM5NDNhZjVhMzI2NzMwODA5NTcgbGVnYWN5LXRydW5rCis0MTc1MSBhYTdkN2RmODUzZDU3MDU5MDY2ZDNkNWU1YTlmYTcxM2QzYTIyMzNjIGxlZ2FjeS10cnVuaworNDE3NTIgM2I5MDI1OGZlYzlmNmIyZTZiM2M5ODM5NDBiY2EwMTQ4NGQ2ZDc1NyBsZWdhY3ktdHJ1bmsKKzQxNzUzIDFmZjQ3OTBiNzYwNTAxOGM2NDFmY2NjNDU5NjkyMTQ3YTUzZDAxNTIgbGVnYWN5LXRydW5rCis0MTc1NCA4ZWJlMzRlYjNlYjc0ODAyYTQ5ZjJkNzcxMGY3ZTRkNjQ0YTY0ZDQxIGxlZ2FjeS10cnVuaworNDE3NTUgMTA0NDBiY2ZhMDYxNzE5YzdiN2U5ZWZmNzVkMjFlNzQ3MDE5ZWUyZSBsZWdhY3ktdHJ1bmsKKzQxNzU2IDE5ZDk2YzJkN2RmNTRlMjlmMGVmNTg0MzEzYWViMWJkZTlhMTFmNTAgbGVnYWN5LXRydW5rCis0MTc1NyAzZjM1OGFmYmIzZDNmMzdhZjIwMzIzYzZhNzA3ODRjMTNiN2UwMmM4IGxlZ2FjeS10cnVuaworNDE3NTggNGNiZjJhMDEwZDk0NWI2YmNkOTU1ZmEwNTE4N2MyNTc5OTcwZWIwMCBhc3Qtb2JqZWN0cworNDE3NTkgZTNlY2E2NWFlMTQ0ZjVkYzg0MGI4NDY1NDZkZDRkZTY1OTkxMDY5YSBsZWdhY3ktdHJ1bmsKKzQxNzYwIDMwMWZiMGE5OTM3MTQ0ZWM5N2IzMjNhNWI4ZjQ1M2ViOGI1YmU3NTUgbGVnYWN5LXRydW5rCis0MTc2MiBmYTY5ZjBmYTM2ZmVmOWIyZTljNmE2MjE3Y2U0ZDEzMzRjNGIzZDExIGxlZ2FjeS10cnVuaworNDE3NjMgZTE0ZjQ3OTY0NzQ4MWU0ZmQ5YzUxODM2MTYyZjI5OGM3MzI3NmE5ZCBsZWdhY3ktdHJ1bmsKKzQxNzY0IDQ5YTA0OTNmMjQ1ZTNmYjg0ZTU1ZGYxOWUxOWEyZTkwNzMzZmJkYTAgbGVnYWN5LXRydW5rCis0MTc2NSBhOWQ0ZmI4NjA3ZDI5ZmU5ZjAwMDhkNDdlZWRjZGNjNzRlOTc0YTM4IGxlZ2FjeS10cnVuaworNDE3NjYgZWMzNDUyODQwYjk2NmU2ZDhkZTJkM2NmYmZhNGJjNzBmNzBhYzIwYSBzc2l6ZV90Cis0MTc2NyA0YWEwMTg3OWE4ZjVhOWJjZTgzMzkxNTEzOTJmNTcyMWQ1YjdjNDdmIGxlZ2FjeS10cnVuaworNDE3NjggOGNiNjg2ZGQ2ZTY0NThmZjQ5ZTZmODNlZTU0ODdiOWM1OTlmMTNkYiBsZWdhY3ktdHJ1bmsKKzQxNzY5IDdjNGQ1YjM4YzU1ZTY2MmE2NDEwODg2NGEzNGI5ZTRlNmIwOTk3NzUgbGVnYWN5LXRydW5rCis0MTc3MCBiNzBiM2U1YjNjZDFjOTZiNzI5OWJiYjRhZjA2YTJjMmQzNGNiZTk5IGxlZ2FjeS10cnVuaworNDE3NzEgYjhiMzc4MmIyZGMwNzViZTI3OTQ2YmE1YmQwNjc0ZGZjNzM4Nzk2YSBsZWdhY3ktdHJ1bmsKKzQxNzcyIGU5MGU3ZDllOTg5MTA5YTEwMTk3OTAyY2IyMzg1ZDdmMDcxNGVhMjIgbGVnYWN5LXRydW5rCis0MTc3MyAzNTU5NjMwN2U3ODYwMjFiMTBiNGMyZmZhMTdiNDk1YTQwYWNkZTAyIHNzaXplX3QKKzQxNzc0IDk2M2Q3NDljOTc3NjQwYzE5ZWM0ZTcyZmE4OWExMjc2ZDQ1YmIwMjEgc3NpemVfdAorNDE3NzUgNWE4NzY0NGEzOTAwMGY1NWMxNjk4NjZiMmU3ZTY0MzRlMjUwYjFmNCBzc2l6ZV90Cis0MTc3OCA4ZGQzNWRkNmIwZTg5Y2NlNTkyYzcxMWU3YjI5MTIxMmNiZWFkODgzIHNzaXplX3QKKzQxNzc5IDNiYTIzMGM3N2Q0MDAwMzEwM2M5ZTEzZGMwNTg2YzM1NGEyNTFhNTIgc3NpemVfdAorNDE3ODEgMTZlM2VlYjg1MjA2ZmRhMmYwYmQxYmFiYjc3N2E3ZmE2YjM4MmVmMCBzc2l6ZV90Cis0MTc4MiA0ZDFmM2VjNGVhZDU5NjhhNzJlNWNkOTRlNmM1MTU5ZWQ3N2VhOWY0IHNzaXplX3QKKzQxNzgzIGQ2ZWExNTMwZGEzMDA0MzU1YjYzN2UzYTg4MzhmMzE3NmFkZDI5ZmIgc3NpemVfdAorNDE3ODQgNDJhY2YzM2FhM2M4YTI4ZjBlNDgwM2MwZDMxNmVhNThkN2UyMjIxOSBzc2l6ZV90Cis0MTc4NSAwOGU4MGEyYmY0MGNmODU1ZDNmM2Y3ZTlmYTUwZGJiMDExMTFjOWFlIGxlZ2FjeS10cnVuaworNDE3ODYgOTg4ZmRmMDI1MmI3OTRkNzA2Y2Q1YTAyMjA3M2ViYzI5MDk3MWRjZSBzc2l6ZV90Cis0MTc4NyA2MTcwNmU1ODFlZjljYTQ0OTkxNGM3M2I5ZjI5NDY1OTY5ZjljMzY5IGxlZ2FjeS10cnVuaworNDE3ODggZjJmYTQwZTg4MzYzMGI2M2VjZTNlNDk1YTU0YWI2NjFlNjUyY2RlNCByZWxlYXNlMjQtbWFpbnQKKzQxNzg5IDkxM2E4MGY0NThlNjg3NDc5YTZiODhkNTI5Yzc3NjhkYzJkM2YzOWIgbGVnYWN5LXRydW5rCis0MTc5MCBjODA4OTdiYjUwNTNjZWVkODc4ZjMxYWI2M2UzNDBlN2MwMjNjN2I5IHJlbGVhc2UyNC1tYWludAorNDE3OTEgMmE1ZTYwMDlhNDQ1MjcwMzIxNWM4NDVkZjEwNGM3MjkxNTAyNTZhZSBsZWdhY3ktdHJ1bmsKKzQxNzkyIDUwZmE1OGEyNGU2MGY0MTcwZTc3OTU5NmJiNTVlOTZkODBjMWZlZDQgcmVsZWFzZTI0LW1haW50Cis0MTc5MyAwY2YzMjQ4ZTI3ZTY1OGE2ZWE0ODEyOWMwYTI0NjU0YjQ2ZGUyNTgxIGxlZ2FjeS10cnVuaworNDE3OTQgM2VkNWE0YWNiZTdjYjNiOWNiZmZhN2YyYWRlYmZiYzkxNGVjMTIxZCBsZWdhY3ktdHJ1bmsKKzQxNzk1IGE5M2JlNTE5ZjllYzQwNzI0YzdhMGJiMTgxNGMwOTc4MTZkMjNhZTAgbGVnYWN5LXRydW5rCis0MTc5NiA3ZWNjNDBkMjA1ODY0MWZjN2NiMzMxZmJlNmM4ZTM1ODYxOTM3MTkxIGxlZ2FjeS10cnVuaworNDE3OTcgNzRiZWRmZDBiZDZiMmZmY2ExZWFhMzI5M2ExNGFkYWZjZGY5YzZiZiBsZWdhY3ktdHJ1bmsKKzQxNzk4IDVjZTQ3MTAzZjg0Nzk0OWUzNTlkMjFhNTAxNjY2NmZjNDk3MDFkZTEgbGVnYWN5LXRydW5rCis0MTc5OSAzYTM5NDMxYTU0YTUzYWI3NjMzY2I4YTkyMjkxYWQ3MjA5OWIyMDU4IGxlZ2FjeS10cnVuaworNDE4MDAgMzRhNTE1NGU2MTFjYzEwNjk3MDdiOGE3ODgwOTU1OTUzNzhkNmY1MSByZWxlYXNlMjQtbWFpbnQKKzQxODAxIGYwMTEyNTNkM2M0NzBkMzM5MWUwZWM3MDMwNzgyNDllZmIwOTk3ZDQgbGVnYWN5LXRydW5rCis0MTgwMiA2MzBkMDFmZWNmZWM2NDFlNGZjYWMwNGEyYzc4ODNhOGQyYjZiZmRkIGxlZ2FjeS10cnVuaworNDE4MDMgNTZkZGYzYWExMmIxMWNjYmFhM2NlZTlkOTE1ZGMzMTJiYWNjMzBlNCBsZWdhY3ktdHJ1bmsKKzQxODA0IDk4ZTI1OTVkNzM3ZjAxYzMzOTliMmEyNmRlNzAyODc4YzJjMjAzZTUgbGVnYWN5LXRydW5rCis0MTgwNSBlOWExMGY3NGNmODhhYzdlMzdjMjhlMDk3OGE0ZjFkMTRkNGFjZGU3IGxlZ2FjeS10cnVuaworNDE4MDYgMDNkYmVjMGQ5NTA0NmUxYTFmOTEzNmNhMmM1ODdkZmEzZjQ5ZDg2YiBsZWdhY3ktdHJ1bmsKKzQxODA3IDc2NzQxZTczYmI2NDk3OGM5NjdhODBmYzI4YWMwMDJhM2MyNDNkYWIgbGVnYWN5LXRydW5rCis0MTgwOCA3ZDZhYjlmMzk5OTZjY2ZhMjk3MGFiMGZhZjg0MWE1ZTM5MzAzZjUzIGxlZ2FjeS10cnVuaworNDE4MDkgMDQ0ZDM1Y2EzNDI0N2I2ZTc5MjFkOGUyYWRiN2Q4YTM3NWUzZGZmZiBsZWdhY3ktdHJ1bmsKKzQxODEwIDZjYjU3MzliNzFjZTBiODRjY2UxNzE5MTNmZmM3MzdiYzc1NzQxMTUgbGVnYWN5LXRydW5rCis0MTgxMSA0M2JjN2NhMmQ5ZGZiODc5YmJlMDM0YWM4NjY3Zjk2N2FkNzQ4NTNmIGxlZ2FjeS10cnVuaworNDE4MTIgNjg2MzA2YTY3ZTliMjQ2MjVmYWY1MGZjYzk4MjE2ZTBjYzFjY2IzMyBsZWdhY3ktdHJ1bmsKKzQxODEzIGNhZGM3NzhhZWM3OTZmMjM1NDQ3YzQ1NTU3ZDFmY2YyZjVkODkxNjggbGVnYWN5LXRydW5rCis0MTgxNCA2ZjA2MzhlN2JkMjM2ODhhNDg2YzA1ZTkzMDBlMGY4MDlkMTU5OWZjIGxlZ2FjeS10cnVuaworNDE4MTYgNTM2ZjI0ZTE2YWYyNDY4MDIxOTdiYWVlZjNiMTM0Njg1ODcxYzlhZSBsZWdhY3ktdHJ1bmsKKzQxODE3IDE2Mjc3NzE4Y2ViOWFlNjYzMWYyOTc1NTdmNWM4MTk5YmJkYzVhYWQgcmVsZWFzZTI0LW1haW50Cis0MTgxOCAyM2ViODY3N2JkYWQxMzhmZjZkZWQ3YjM4OTYxOGMzNzMzZTg5OThmIGxlZ2FjeS10cnVuaworNDE4MTkgNzZkNTExOTcyNjE2Mjc3ODhhZDQ0YzYzZmViMWI2NDI0OTJjMTg1MiByZWxlYXNlMjQtbWFpbnQKKzQxODIwIGU0MzE2ZGExOWNmYzFkOTRhZThiNmZkNTUyYzY1NWI3OTE4OWFhZWUgbGVnYWN5LXRydW5rCis0MTgyMSAyMTQzMzcxYmI5MWZjMjM3ZTNmOWQ1Yzk3YzRhNTM5MDJkNjIwYjUwIHJlbGVhc2UyNC1tYWludAorNDE4MjIgMTU2ZGY3N2Y5OTJlYmVmZGY2ZTg4ZTFlZGU0YWQxMmVjMDM2ZTNkYSBsZWdhY3ktdHJ1bmsKKzQxODIzIDU5YTg5YjU4OGMzMDk2YTM2YmU2OTBmNGYxOGJkYmM3M2Q1YjQ2YTkgcmVsZWFzZTI0LW1haW50Cis0MTgyNCBlMDZkZjVlMTNkYjlkYjcxNzM3ZWNkNzkzMzQwYTYxZDZiOWNkZjNjIGxlZ2FjeS10cnVuaworNDE4MjUgNzMwZjg0YzJmZGRiNWIxMTY0OWQ4NzlhYWE0MGI2YTZlYzJhZGRmNCByZWxlYXNlMjQtbWFpbnQKKzQxODI2IDQ5ZDYzZjM3N2ZlNzJkNzE5NWYxOTIyYmJjZWQzYWVhOWQ5YzhiOTMgbGVnYWN5LXRydW5rCis0MTgyNyAxNGYwMDJjZDAzNzFiNGE4N2UyZmFmOTg3MzAzNDg5ZjE0ODYyZDcyIGxlZ2FjeS10cnVuaworNDE4MjggYzg4NmNiMTZhMTU2NDY1NjhkMjJiNmJhZDY5NGRmMTJiZjhkOTQ4OCByZWxlYXNlMjQtbWFpbnQKKzQxODI5IGYzOWJkYmY0YjBjMWI3ZmI0YTk5OGZhN2RiOWVlYmJjNWFiZjM1YWQgbGVnYWN5LXRydW5rCis0MTgzMCBhNmFlMTAyYTZlMTE5ZWYzMTdjNjRkNzdjZjAyZjYyYWFlNmE3NDc4IHJlbGVhc2UyNC1tYWludAorNDE4MzEgYjU0MGI2MDc2ZmQ5OTE1ZWQ4ZDhhZTNlNjI1MDg0YjUzNTViNGVkYiByZWxlYXNlMjQtbWFpbnQKKzQxODMyIDdjYzIxNWYwYzA5YjNiZjFlYzI3ZDQxNmJhMDJkM2FiNjRlMGJkYzEgbGVnYWN5LXRydW5rCis0MTgzMyAyMzM5NzVkYTI0N2UyMmFlNjhjMGY3ZDkzZjY0NDNlMTgzZTljYTE4IHJlbGVhc2UyNC1tYWludAorNDE4MzQgOGU0MzhiZjc2Y2JiZjI1MDYyYTU1NGFjODU3OWRjNjk2Njg2ZDYxNCBsZWdhY3ktdHJ1bmsKKzQxODM1IDEwMWI2MWE5ZWVkMmU1MThjOGMzYTVmMDliM2FjODYwZDMzYWVmNjggcmVsZWFzZTI0LW1haW50Cis0MTgzNiA4MmE1MmE0NjRhYTI1NmNiYWI3N2U2NWRmN2I0OTM5NTE4ZDRiMjQ3IGxlZ2FjeS10cnVuaworNDE4MzcgNzRkMTZlYjJjYWJkZDJlYTQzZDNiMTcxMTExMWU2NDBlNGI2NWRlOSByZWxlYXNlMjQtbWFpbnQKKzQxODM4IDIyZGJmNTgxOGIwYjI5NGU0MWY0NzQ1OWU5MDA3Y2QxMGMxNmZlYmMgbGVnYWN5LXRydW5rCis0MTgzOSA4NTBmN2QxZTRjYTI3NjQ1ZjMwOTViNjhhM2U2NWJjMTU4NDc1MzM5IHJlbGVhc2UyNC1tYWludAorNDE4NDAgYWE3MDcwNDE1MDVkODk5YzMzNDI4NzcxMWFjYzliYmY1ZDQxMGM3ZiBsZWdhY3ktdHJ1bmsKKzQxODQxIGU0NGE4MzNlY2E0MzM1ZDg1MTIyYTI2NjdmM2NhZDdjMmM2NmIwOTcgbGVnYWN5LXRydW5rCis0MTg0MiAyZWI3OGY1ZDE0NTAwZTQ2NTJmM2JjZDU3MzhjNmNmM2U0NGQ0Y2JhIGxlZ2FjeS10cnVuaworNDE4NDMgNzNkYTU5MWY5YmRiZGQ1Y2U5NzgwNzI2MTVhYWE3YTFkZjdiMDE0MiBsZWdhY3ktdHJ1bmsKKzQxODQ0IGY5MjgxMjgzYjEwOWE0OWJkNDI3YmY2NzcyMWJkYmQwOWFhNWM4NzMgbGVnYWN5LXRydW5rCis0MTg0NSAwNDJlYjNkMWNlM2YzMzhhZTYxZTM1ZjNjNWViZjc0ZGE1MGE1MmVmIGxlZ2FjeS10cnVuaworNDE4NDYgOTYzYTk4ZDhmZTJlNGQyY2ZmMjdkNjg3MjU0MzRlNzI0MTNkN2VkMSBsZWdhY3ktdHJ1bmsKKzQxODQ3IGZlOWJkMjFmMjdmMjI4OWQ1MGVlMjYxNDM3MTc0NTVkNDhjYTUzODcgbGVnYWN5LXRydW5rCis0MTg0OCBjNzFjYTFjZDM2M2I3NWYzNDhlYTc2NGJmZjRiNzNhNDFiOWQ1YTZlIGxlZ2FjeS10cnVuaworNDE4NDkgOTZlYjJhNWNmYmVmNjIzZWVmZDBiNjExYWRmMzg3MTVjODM5Nzk2YiBsZWdhY3ktdHJ1bmsKKzQxODUwIDM0NTFiMTA5YTI0YzU2M2U5MWFjOTgwODRhZWM4MmY1MjM3MDg2NTAgc3NpemVfdAorNDE4NTEgMjk4ZmMzMjY5MzEwYmU5ZDdhMTc5N2U5NWQ2ZmE1NWIyNWYyYzc1YiBzc2l6ZV90Cis0MTg1MiAyNjEwN2M1ZDA1N2MxZmY4Yzg5MWU3NDU0ODZhMDM3OGY3MDhiNThiIGxlZ2FjeS10cnVuaworNDE4NTMgZjQ1MDc3NzRkNGU0MWZmZTRlZTk1NDBhMTAyNGU0MDIwYjgxMzMxNSByZWxlYXNlMjQtbWFpbnQKKzQxODU0IGQ5OTNhM2VlODkxZWQ4MmE0MWM1MzdkNmZmNDgwOGJiZmFkNjY5OGYgbGVnYWN5LXRydW5rCis0MTg1NSBjZmQxZTFmNGZkZGRiMTI3Njk3NWZiOGZkMjlmZDYyMmViMjc1ZTlhIHJlbGVhc2UyNC1tYWludAorNDE4NTggMWU1OTViNmM5MjRlMTcwOGY1YmIyY2YwYmZjOWYyNmIxOTFiZmU3ZiBsZWdhY3ktdHJ1bmsKKzQxODU5IGJiNTFkNmM2YTNlMDNhMzkzZWM4MzY2ZTA0NmRjMDMzYTBkNTViMDkgbGVnYWN5LXRydW5rCis0MTg2MCA1MDg4NmQ0MmI0NDRlNDBkN2U5MzYzYzFhYjYyYTI0MDI5MTI5MDcyIGxlZ2FjeS10cnVuaworNDE4NjEgMTQ3YzM1ZjQzNWEwYjVhZDA4MTcyMDhjNmZhZWQ2NjU1N2Q5M2YxYSByZWxlYXNlMjQtbWFpbnQKKzQxODYyIDZmMjUwMjlkZTlkYjQzNjg0NzE5NTI5OTZmOThiNzFkYjRmNmMyMmIgbGVnYWN5LXRydW5rCis0MTg2MyA4MzRkZDY2NGFlZmNhOWZlMzUzMmYwOTE1MDJkY2I1NDNmNDY1ZmI1IHJlbGVhc2UyNC1tYWludAorNDE4NjQgOGEyYWI1ZjUxOTMyZmVhM2ExMjJhNmUzODkyZGFhOTY2N2E1MzQwMiBsZWdhY3ktdHJ1bmsKKzQxODY1IDY1MjQyOWM0ZjJhNDkyZjczY2U1YTg5YTQwNDgxZmE4ZmM3ODJlNjAgbGVnYWN5LXRydW5rCis0MTg2NiAyNjZiYmRmOTFiYjUzZTcyYjIyZmM1ZGU5N2VmZDM2ZjkwOGM2ZGEwIGxlZ2FjeS10cnVuaworNDE4NjcgMDBkZjA1ZmE4MTYxNGFlNjA5MjFkZjQzMTM5MGIyYmIyYTdhOGNkYSByZWxlYXNlMjQtbWFpbnQKKzQxODY4IDA5ZWQ2YzliZGJkOWEyOTVjNWMyYzhlMDA5M2FjMDc2YWI4ZTFkYjggc3NpemVfdAorNDE4NjkgYzE4NTA0Y2VmMmJhNjVhYzMyNTEzNTIxMzlmNDM5MWY0YjczMWYwZSBzc2l6ZV90Cis0MTg3MCBjM2FkYzc3ZWIyODkxZTIwNGYyYmNlZDdlZjMxNDBmZGUyZmYyNDdmIHNzaXplX3QKKzQxODcxIGY1NDQzYmRmOWIwZGY4YzE5M2ZhYTc2YWNmZjhiNjU0NmExMGZhZjIgc3NpemVfdAorNDE4NzIgMTI0ODRiNjU5ZmE4NjdhODQ0ODMzYTI2Y2VjMjY4ZjQyOTI5M2I5MSBzc2l6ZV90Cis0MTg3MyA0NmZmNWM1ODZkODYzOTcxMGViMzNkMWEzMmI2MjlhNjk4MzYwN2Y1IHNzaXplX3QKKzQxODc0IGEyMjdlZjI2YTE4ZGJkNDJkODkyYjcwNDY1ZDQ4Y2VhOGQwMmM5ZWYgc3NpemVfdAorNDE4NzUgNTBhNDc1MjFiNDBmNDMwZTVlYmVhNDdiOGM5ODNjMjIwYTUxNzZmMiBzc2l6ZV90Cis0MTg3NiBjODhhODMwZDgzMWMxYmYzNzI2MGY0NTEwNTBhOTdlYzZkOGFlM2FiIHNzaXplX3QKKzQxODc3IDI5MjQzNWE3MzJlOGMyNDlmOTFlOWNiZmIzYTMwYjRhZDIzMGM4NTkgbGVnYWN5LXRydW5rCis0MTg3OCBhZGU0NjM3MWYwNGIwNWM5YTBmNjYyMDM5NjMxYTc5YTA0NThkZGQ2IGxlZ2FjeS10cnVuaworNDE4NzkgNmRkNjI1NDJiNmU1ZGJmOGUxZjBkZTM0YzFhM2Y4MzlmNTBlYzViZSBzc2l6ZV90Cis0MTg4MCA4NWIyZDgwNGFjMGFiYzc4OTk0Nzk5NmNmYzU0M2Y5OTM1ZGRjMWQ5IGxlZ2FjeS10cnVuaworNDE4ODEgYjkwODY1NDQzODJlMjIwODIzNWY3NDljZTE3MWU4ZTI4NDQyZjcyOSBsZWdhY3ktdHJ1bmsKKzQxODgyIGYzMjFiZTM0Yjg1ZDVmNTU4NDdlZjNiNTA5OTc3MjhhOWNkODNiYmUgcmVsZWFzZTI0LW1haW50Cis0MTg4MyAwM2EwYjE4YTc1YmY1ZGRjODA0ZGYyOWVmODA0MzViOTQzNTFhNTU0IGxlZ2FjeS10cnVuaworNDE4ODQgYTgxMWViYTMwZmE0ZGYzYWZiNzcwMjgxZWQ4OTFkZTg4ZjE3NmFmZCBsZWdhY3ktdHJ1bmsKKzQxODg1IDliOWNlZDRkNzkyMWY2Y2ExMzVlNDI0MGRkMzhkMTk4M2ZkMTgyYjggbGVnYWN5LXRydW5rCis0MTg4NiAzZjYyZDMxZDU5ODVhYjI4ZDE2ZjAxNjBmYTBiYTg4MTM3NjdjM2M1IGxlZ2FjeS10cnVuaworNDE4ODcgNDMxZDZlODdiOWZlMGJmNGJhNGNlZDlhYjM2NmNlMWVjMDY2OTc0NiBsZWdhY3ktdHJ1bmsKKzQxODg4IGIyNjQ4Y2EyMzFlODAyNTMyZDQwMjYwYWU1MzViOTNkNGJiYzQyY2UgbGVnYWN5LXRydW5rCis0MTg4OSA3OTcwZTAyZmM4NDdiODUxNjBiN2U2ZmVmOWY5NmZkMzkzNmJlMTVkIGxlZ2FjeS10cnVuaworNDE4OTAgYzgyOTc1ZTkxZTk5ODVjOWZkZjUxM2FmNjgyYjQ0MzJlYTk1YzQ2NiBsZWdhY3ktdHJ1bmsKKzQxODkxIGJmN2VlZjUwNzJiNjkxNjkzYjM2MWMyZGZiNzY5MzIyNDBmMjViMzkgcmVsZWFzZTI0LW1haW50Cis0MTg5NCA4MWZhNDdkMmQ0NzdiZDliZjhlNjk0ODE1OWE1OTg1MTg3N2E0ZmU2IGxlZ2FjeS10cnVuaworNDE4OTUgZWU5ODRmZTk4MWI0ZWZiYTllM2IyOTFiMDVkMmE2ZTYyMTNkNzk3OCBsZWdhY3ktdHJ1bmsKKzQxODk2IGY4MGVlMTQyNzI3YTg2MmQyZGVhOWI1NzVjZGRjYzVjZmQzOWU1ZGMgbGVnYWN5LXRydW5rCis0MTg5NyBkZWU5MmVjYjhhMTEzY2YyOGI1MjU5NjQwYmNmMzQxNTJkOGQ0NzYzIGxlZ2FjeS10cnVuaworNDE4OTggYWE0NTY0NDkyNjYwM2IwNGM1MTUyZTc3ZTZmMjQ2Njc4ZDcxNzc5YyBsZWdhY3ktdHJ1bmsKKzQxODk5IDc5ZTcwZmE4YzIxMmZlYzcwMjBlYTJlY2EzMTI1ZTEwNzZiMTczZjggc3NpemVfdAorNDE5MDAgY2VlZmNhY2U2ZjI0OTlkYjUwMTQzNjYyZmRlODZmYjBiYzUyM2FjYSBzc2l6ZV90Cis0MTkwMiA2YzgxNDVmZTQ5NWVkYzkwNThjOGMxNDdlZWExMTk2YzAzYWFkNWVhIHNzaXplX3QKKzQxOTAzIGVmMmQ3YjlmZGU3Y2Y5ZTRkOTVhYzFhMjBmZWMwYWEyOGZhOWNlNGIgc3NpemVfdAorNDE5MDQgNjkxZWU1MjRmMDI3NTRhOWJkZDI3OGIxNTllZWYxNTMyYzg4YTQ5YyBzc2l6ZV90Cis0MTkwNSA3NjU0ZGEzNmZlOWNjYTg2OWUwM2QxYTE2MDUzMDYzZmUzMzY3YThmIHNzaXplX3QKKzQxOTA2IGYwNjEzM2JjYzA1ZTY2N2IwNTM1YzkwOTE3N2QxNmE4NzUyNDQ3MmIgc3NpemVfdAorNDE5MDcgNTJhNzRhMzIzNjgyMDY3N2NlMTEyNzU5ZjMxODQ2NWE3MThmMDk5YyBsZWdhY3ktdHJ1bmsKKzQxOTEwIDYxNDk0ODNmN2EzZDU1NDNjOGM1ZDc3MzAxZGU3ZTU2NjQ4ZjkyMzcgbGVnYWN5LXRydW5rCis0MTkxMiBlY2ZlZDFmNzQ3OGNjZGI4NzkyMTI0MmU5NzkyOGFhZDkxNTUyNDcyIHJlbGVhc2UyNC1tYWludAorNDE5MTMgOTIwOGE3OWY1NjgzY2RiYjQ5NThjOTI3NTk5YzZhNTczMWQ0MmFmOSBsZWdhY3ktdHJ1bmsKKzQxOTE1IDAzNjA4ZDY2ZTU5ZjBjNTQ0MDAxYmZkOGU3ZWI4ZjVjZWJjM2RhZTIgbGVnYWN5LXRydW5rCis0MTkxNiAwYjEwZTg1NWRhZGY2NDgyMGUzNmExZWI2ZWRlMWFhMjBjNmUzZmQ3IHJlbGVhc2UyNC1tYWludAorNDE5MTcgZWE2Y2QxYmU5ODM3YjUyODk1MzRiYzUxN2M2MWQwMTBkNWM4ODg2YSBsZWdhY3ktdHJ1bmsKKzQxOTE4IDI2YmU4YjFkMTg1MzAxN2RjNDg1ZDliZjM1MzkzZjYyYWNmZTQ0ZTcgcmVsZWFzZTI0LW1haW50Cis0MTkxOSA5MmVmNTZjOTdjZGY0MjEwZWQ2M2U2YzRhZTAxMDJhYjdmZWQzZDZhIGxlZ2FjeS10cnVuaworNDE5MjAgYjM0ODIxNjRhMTAwMzgxNDViMThlN2ZmMGYxYmM1ODkzZWU4ZTFhZSBsZWdhY3ktdHJ1bmsKKzQxOTIxIDQ0ZjA3NjBlMjRhMTY5ZWRhYjgzZjQ0NWUyYjc5ZmJjZjcwYWRmNDcgcmVsZWFzZTI0LW1haW50Cis0MTkyMiAzOGIwZmU1MWIwYjRmOTk1ZTVjOWQ1ZmQ0ZTgwYmJjYzcwZGUyOTQ4IHJlbGVhc2UyNC1tYWludAorNDE5MjMgNDRjZmNhNjEzNmM2MzgyYTZlOWFiYmE5MzBiMWNjMTIwOTliMTA3MyBsZWdhY3ktdHJ1bmsKKzQxOTI0IDAzMjkyNGU3NWMyNGJhMDBkYmYxNjFiZjhiYzZiNjY5OWQxYWIzZWIgbGVnYWN5LXRydW5rCis0MTkyNSAwMWNiZWQ1ZTg3MzEwNzBiMTdmMzQ4OGY1ZDUwYzVhYTdjMDI5YThkIGxlZ2FjeS10cnVuaworNDE5MjYgODc5MWU4YzQ0OGIzMWUzMDA3NGMzMTc3ODI3ODkzMDBjMWI1MGI0NyByZWxlYXNlMjQtbWFpbnQKKzQxOTI5IDgyNWEwNDE4MTNmYmVlMDc4YTNiZmYzZjExM2RlZjNhNGVhZTkyNzQgbGVnYWN5LXRydW5rCis0MTkzMCAyMTUzMWUzOTIxMTZhMDYxZmVhMzE4NTU4OWQ0NTZmY2UzYmUxMTcwIGxlZ2FjeS10cnVuaworNDE5MzEgMDNhNTc0MWNmZWE5ZjYwYWJlZjNjY2U3ZmJhYjNmYmFlNzJiOTgyNiBsZWdhY3ktdHJ1bmsKKzQxOTMyIDgzMzY0NzYzYzdiMmM2YTgzOTIxMTI1NTM5YzU5OWI3NTM4MGMzNDEgbGVnYWN5LXRydW5rCis0MTkzMyA2ZDc0M2U1YmFmMTQ3YWU0YjUxYzQyYjkyYmYyNDYwOWJmZjI0MWNmIGxlZ2FjeS10cnVuaworNDE5MzQgY2VlMDU5ODBmMWZkMWM1MjNmMzQyMzcxNjVmZjk4ODQyYTIzYzE5NyBsZWdhY3ktdHJ1bmsKKzQxOTM1IDliODg4NWM5ZTU1MWMzOWNhNDM4OTgwYTcyNDNmMGY2ZDE4NDM2MDMgbGVnYWN5LXRydW5rCis0MTkzNiBjOWRhMDhkNDgyYzM2YWZmYTk5MTY1YjJjZTU0NTdmNDdiZTg2NjBiIGxlZ2FjeS10cnVuaworNDE5MzcgMjQxMDc4ZWU2ZTg3YWU4NjNlM2ViMTE0ZmRlMTVmMzM3ODQ4YzQ1OSByZWxlYXNlMjQtbWFpbnQKKzQxOTM4IDY1ZGYyNTY3NGQxYWVmNzJkMjE3MTY3MjMyNmQ4NDQwMmI5MjA2YTQgcmVsZWFzZTI0LW1haW50Cis0MTkzOSA3N2I0YWFhZDY5MDNlYmI4ZmRlMWNlOTRiNDMxZmYzNDJmNTMzMWIyIGxlZ2FjeS10cnVuaworNDE5NDAgZjcyM2UxOWZhM2I3MWEyMGIyMWZkZTc0MDJmOWViNTg4YmJkYWZmMCBsZWdhY3ktdHJ1bmsKKzQxOTQzIGIxMzljOTk5NjY1ZDk5NzkyNjg5ZmMzYjJjY2VjZTA0YTQyNDUyZDUgc3NpemVfdAorNDE5NDQgMTIyMDU4ZGZiYTc2OGE5M2Q5MmZkYmExOWE4NTljNTk4NzU0MWQzZiByZWxlYXNlMjQtbWFpbnQKKzQxOTQ1IDZlMTc5NjhkNGRlOTJiMTYzMmE4M2ZmODYyNWYzODJmMjQ0MmQyZDcgbGVnYWN5LXRydW5rCis0MTk0NiBhMWIxZTQ1MWQ4MmU4NWU3OTRmYWNmOTJlNzJhZDFiZjMzZjc2OWY3IGxlZ2FjeS10cnVuaworNDE5NDcgNGM4YTc0YTIwMjI3ODM0ODNjOGMyYjczOGE0YzliY2IyMGUzMDRjYiBsZWdhY3ktdHJ1bmsKKzQxOTQ4IGNmNjllMzE5MTIxODI4YjRhNzUyYWJkODFmZmI5YmMzMjVjNmFiMDEgbGVnYWN5LXRydW5rCis0MTk0OSAxNjg1ZGNkMmY5Mjk5M2NmNTFlNWUzM2M5ZWZjMDI0M2ZmNzNhZTZkIGxlZ2FjeS10cnVuaworNDE5NTAgNTZhZDlmMjc1YmVjMTkzZDI5NjNjMGJhMjI1NmEwYTU4MzI2NzY4MCBsZWdhY3ktdHJ1bmsKKzQxOTUxIGJiNmZhNGEzMWYxNTI5NzYwMzllM2I2N2UxYTM4N2FjMDg2ZGI2MWUgbGVnYWN5LXRydW5rCis0MTk1MiAwMjZhZTFiOGE3ZTNiYTA1ZTE0Y2FiMTBlMGYxZmY2YmNhMTNiZGI5IGxlZ2FjeS10cnVuaworNDE5NTMgZTdjOTZjMWQxNDRiYTc0Mjg1NDM4ZTEzNzYxY2U1ZWU4MGQyYTZmNCBsZWdhY3ktdHJ1bmsKKzQxOTU0IGU4ZGVjNzhjZmEyZTNlNmY0ZjMyOGNmMTJjNGY3NzRkZGM0ZWYxN2EgbGVnYWN5LXRydW5rCis0MTk1NSBkZWQ0YTQ5N2ViNzZmYjg3YmRlYzgyZWM5MmI5OWE1MWQ4ZmM1NGIwIGxlZ2FjeS10cnVuaworNDE5NTYgZDNmNGM0NjdlNDM5YTI1Nzg1M2VlNWUyODk4MjlkYTA5MjNlMzE4MiBsZWdhY3ktdHJ1bmsKKzQxOTU3IGE3N2U1YjA0NmE1MDg3NjMzOGU4YzE3N2VlN2ZkMGFhMzJmZDU5ZTMgbGVnYWN5LXRydW5rCis0MTk1OCBiOWRkNDgxYjM5NzJkZDY0MDEzYjVjYjZjYzllZWFjMWNlODQ5Njk1IGxlZ2FjeS10cnVuaworNDE5NTkgZTk0ZWU1OWEyZDQ2MWQ5NTA0YWM3ZmU5MTFjM2VlYjkyNzM3Y2U5YSBsZWdhY3ktdHJ1bmsKKzQxOTYwIDlmNjZiZGQ1YTA2MTIzOTI0MWM4N2YwNWY2MzljYTgyZWUxYzY1NWIgbGVnYWN5LXRydW5rCis0MTk2MSBlY2Q0MjM3MThhMzI3ZGY1NmQ5OTYzYjhmM2U4YzE2NWM3NWYyOGVlIGxlZ2FjeS10cnVuaworNDE5NjIgOGFiNzhmYjRkMTdlZDRhYzE5ZTZkN2U5NTg1OWMxZjMwMDg0YmU1OSBsZWdhY3ktdHJ1bmsKKzQxOTYzIDBmOGM1NTQ2ZDNiZjQ0Yjc1NGYzZTBmZDhhZDAyNzRkZDllMGZkYzIgbGVnYWN5LXRydW5rCis0MTk2NCA5MmUyNDY4YmRiNGE2YTQwMzE3Y2RlYmUzOGU1NzM3ODY4OWQ0ZGZhIGxlZ2FjeS10cnVuaworNDE5NjUgMDBiZGMwOGE1MDdkZWM5ZGEwYzZkZTYzYTExNGNjNGYzNWZlNjNjNyBzc2l6ZV90Cis0MTk2NiBhZjdkNDg0MjA4ZTkyNzFhNGNiYWJlNDU4MjVlNjYzYjc5NjYxZTU3IGxlZ2FjeS10cnVuaworNDE5NjcgZDIyMjRjOGQ0NTQ5MjYyNTQ5M2M5NjI3YTkyY2Y4YzA1MTc2ZDllMiBzc2l6ZV90Cis0MTk2OCA1NTdlOWI2ZWU3ZTExZTZmN2VhNWVhMDQyN2JmYjA0N2IwZTU0NzRlIGxlZ2FjeS10cnVuaworNDE5NjkgMGY1MTg5NjA3MjY0MGFlMTE2NzkyYjE0NjBmZmNiYjNkOTFjN2VmZiBsZWdhY3ktdHJ1bmsKKzQxOTcwIDYwYTVhMWFhMTY4MmI2NzBlMjNlN2ZkZDA5YmJkOTNjMzFlZDY2NTkgc3NpemVfdAorNDE5NzEgYTlhYmRiMTRjZjNiNzhhNDdhOWViYzM0Y2ViNmJhMWMxZmJjN2U1MiBzc2l6ZV90Cis0MTk3MiBhMjY0MzI1M2FjNzk2Mjk0YjNjNjhkOTE5ZDk0ZThmZjZmMTQxZmMzIHNzaXplX3QKKzQxOTczIDA5NjhmMDYyZjM1MDY5ODhiODg2YTRmOWMxYjUyZTRjMjY3ZjFlMzAgbGVnYWN5LXRydW5rCis0MTk3NCBlNzg4MGY0ZjUzYTQwZDMxM2M3YTA0N2Q1MDQyNTIzMzYyMjRhOGI5IGxlZ2FjeS10cnVuaworNDE5NzUgZDNlNjhjYjczOWZiMjU3NWZhNTlhNGNkNDhiMzhlMTVhMWFmNTIxNyBsZWdhY3ktdHJ1bmsKKzQxOTc2IDU5MWRmNTRkMmQzMGYxNGUwNjEyNDVjNjc5ODU0YTQ1Mjg4MGVkYTkgcmVsZWFzZTI0LW1haW50Cis0MTk3NyAzYmE5ZmY3OWJiMjliOTQ3ZWI5N2U4Zjk5MzUwOTFkODUzZDE2ZmU1IGxlZ2FjeS10cnVuaworNDE5NzggODExZDY0NGQxOTE3Njc3MTA1NDc2MWEyN2RmYWU4MTUwZDcxNmJkMCBsZWdhY3ktdHJ1bmsKKzQxOTc5IDRhYzliOGZjZDYzZWE4ZDg1MzEyNjk5NDQ5MzU0ZTJkZWQ3YWQ1OWEgbGVnYWN5LXRydW5rCis0MTk4MSBmMDllNjA5MWE3NjI5ZWVmZmI3NjE2NWIwNzk4YjMwZTNkMjMyMzE0IGxlZ2FjeS10cnVuaworNDE5ODIgOGRmMTk0Mjk0YzkwZGM0YTExZGY5MGJiNWQyZWUzMjI1OTU4NWI0ZiBsZWdhY3ktdHJ1bmsKKzQxOTgzIGQ0MzRiM2M3MzkwMTYwZjM1MjIwOTQzZDVjNDNlZDg2ZGVhY2U4YmEgcmVsZWFzZTI0LW1haW50Cis0MTk4NCAyN2JkYzFlMjdlZWRiN2VjNDU5YmNiOWUzYjA0MzRjOGVmZDZlYjlmIGxlZ2FjeS10cnVuaworNDE5ODUgYzNiNDJiN2JkNmQ5ZGFhZGM0YTk3Njg2ZmViZDg0N2VjYmQ4MDY0ZiByZWxlYXNlMjQtbWFpbnQKKzQxOTg2IDNjMTU5NzZmZjYxODcyYjViOTAyYmMyYmQzZWJlZGFhMDZhMjM4NjQgbGVnYWN5LXRydW5rCis0MTk4NyA2Y2Y3ZDA0ZGNjMWY1N2U2NzMzN2QxNjA5ZWY3ZTZlNTQxMGNlZmJmIGxlZ2FjeS10cnVuaworNDE5ODggMDljMjFhNmJlNjA0MTg0NzhjN2JjOTlkZmMxNWM2MzAzNDE1YjI5OCBsZWdhY3ktdHJ1bmsKKzQxOTg5IDlmNmVkYzg3NDU0MWNkMjljMjQ0MmU0OTExNDBiOWI2MGVhOTZiYzMgbGVnYWN5LXRydW5rCis0MTk5MCAyNmU3OGIxOTZjMTcyNzhhODYwOWYzZWVhMDZmMDgyMzI4NjRkYmVjIGxlZ2FjeS10cnVuaworNDE5OTEgY2FkNTkxZDkyMWVjYjAyZDQwMWRkOTMzOTM0NzYyYjQ3OWYwMzgxYyBsZWdhY3ktdHJ1bmsKKzQxOTk2IDMwM2RlYTg0NzYzOTA0ZmI4NTRjY2M4YjhlNmY3NzE0ZTFmNWFiZDUgbGVnYWN5LXRydW5rCis0MTk5NyA3NmExYzIwZTgzMGU1NWMwMjFhMjVkMzdiOGZhOGFhMDMyMDRiY2Y0IHJlbGVhc2UyNC1tYWludAorNDE5OTggM2MwMzBlZGZmOTg1YTZiYzk5OWJmM2Y3MmM3NzZhYTMyNmI3M2FkYSBsZWdhY3ktdHJ1bmsKKzQxOTk5IDlkZjM5Yzk2MGJmMWM2ODBiYjM0ZjE3ZmNmYmVlNjAzYmU5OGY2YmUgcmVsZWFzZTI0LW1haW50Cis0MjAwMCA3OTBmOGQ5ZTQ5ODg5ODExNjgwMmE3MmZlNzUwNGZiZjJiMDFmOTJkIGxlZ2FjeS10cnVuaworNDIwMDMgNDFlZjI5MTBkZDQ5OGIwZjg0ZThmNGNiYTNhODFlM2RkM2E1NTg5OCBsZWdhY3ktdHJ1bmsKKzQyMDA0IDM1ZGY2ZGQ4MDkxMTBjN2I0ZWRhMzIxZmI3N2M4N2JhYmFlMWIzMmEgbGVnYWN5LXRydW5rCis0MjAwNyAwZDUzMzUzODdiYTczMmM4NGRmOGU1OWExNjMyYzUxZmNmOWY4ODc0IGxlZ2FjeS10cnVuaworNDIwMDggNDc1YjY0NWUxMmY1ZWMwNThjMzI4MGJmNDAyNTg2YWQ1NGM2ZTEzYSByZWxlYXNlMjQtbWFpbnQKKzQyMDA5IDg3NDdiZjRiOTU0MjJjYjIzY2YwNTUxMjE1MWM4MjI0ZGYzMzhiODQgbGVnYWN5LXRydW5rCis0MjAxMCAyMWUxNzhiOTMwMzBkMWJmYTJiYWM2M2M5ZGMwYjA3NGFjMjM1YTQ1IGxlZ2FjeS10cnVuaworNDIwMTEgODRiYTI5OWUyYjVmZWY0MTFiMGE3MWZiODE2ZWQ1NDcyNjA2Y2MzZiBsZWdhY3ktdHJ1bmsKKzQyMDEyIGQwMTA0MzY0ZjZkMWM4NDA4Mjc3MTg0ZWJiZGIwYTMyYjIzZTk1MGQgbGVnYWN5LXRydW5rCis0MjAxOSA1ZDgxNjkyOGEyMjQ1ZTE3NDUzMWVkNzNkYWM3MDY1NjA1ZWNlODRiIGxlZ2FjeS10cnVuaworNDIwMjAgZTFmZDdiZDI4OTViMDdkNDhmZmUzYWY5MDRhMGQ2NTkxMTZlMzBlNiByZWxlYXNlMjQtbWFpbnQKKzQyMDIxIDE5MmU4Mzg5NGU4OThjYWM0MDM2NDg1ZGMwNmQ3ODEzZGFlNzQxMmMgc3NpemVfdAorNDIwMjIgOGI4ZjFhNTE0NjhhZDI0ODExMmE2NWQ0Y2ZmN2Q5NjUwNGMwZDNiNyBzc2l6ZV90Cis0MjAyMyAwZmU3NWEwNDZjMDA1NDgwZjI0YjA5YjViNGFkNGU2MTdlYjkwZGI1IHNzaXplX3QKKzQyMDI0IDRmOTUwN2JlNTg1NzliNDJjZDI5NjcwYTU2YjFjNTA3OTNiNDgwNjQgc3NpemVfdAorNDIwMjUgNjYyYzYzOTU0ZGYyOTRiNzQ4NDQwMDE2NjhlZDZkNDdmNGQ1OTRkYSBzc2l6ZV90Cis0MjAyNiBmZDFiMTJkM2FiYjY5YzM5YWZjODkxYzdiMzE4MTE0ODhlZTZkOTg1IGxlZ2FjeS10cnVuaworNDIwMjggNTI3Nzc3MGJjOWQxYmE2YWJiN2I0ODBhMDViNDQ0OWIwYTE1N2I5MCBsZWdhY3ktdHJ1bmsKKzQyMDI5IGFiMTMwZDU2NjkzMTllOGVhODNlNmQwYzc1ZTAwZjBkMGZmOTVlNzYgcmVsZWFzZTI0LW1haW50Cis0MjAzMCA1ZTJhNThjODY3ZjcyYzM3MWJmYmJjYjVmNjZiNDkwNjAyOWJkNWRhIGxlZ2FjeS10cnVuaworNDIwMzEgZGEwOTk1Y2ExZjMwN2U3ODdjMjRmODFjYzA5ZDY2NTExZmI2MmVhZSByZWxlYXNlMjQtbWFpbnQKKzQyMDQxIDc4YTY5NzU5NTQ3ZWJlODAxM2ZlZDAwZTkzZmY2ZTkxNzc0NmQ1NjYgcmVsZWFzZTI0LW1haW50Cis0MjA0MiAyMWQzMGY4ZTQxZmZkZTY3OGNjNDQwZTIyYTlhMWI5ZGJhOTA0ZTM1IHJlbGVhc2UyNC1tYWludAorNDIwNDMgZTYwOWZlYTkyZDFlMThhNWZlZTFmYWVlYjA0Y2FhOTQxNDM3YjNmZSBsZWdhY3ktdHJ1bmsKKzQyMDQ0IDBiMjMxYzA1YTdlZGFjMTY2ZDQ3YjQyN2M5YjBkYTEwM2M2ZTMyYTkgbGVnYWN5LXRydW5rCis0MjA0NSA4Njk3Nzc2YmI0MjAzN2MyMzI1MzE1ODQ3ZGI1ZDdlY2QyNWUxYjI3IGxlZ2FjeS10cnVuaworNDIwNDYgYWU0NDgwOTM1MDE2MGU1ODMzMjkxNjY1MzJhOGVlMWVhN2NkYTljMiBsZWdhY3ktdHJ1bmsKKzQyMDQ4IGMxMjgwMDAyMTM5Njk5MzFkNWRhMTRkZjVlNzI0ODA1M2ZkMjkzYWMgbGVnYWN5LXRydW5rCis0MjA0OSBjOWVhNTU3MGRhYzdlNmMxZjRjMGY5NDE5ZmExZWI4ZWViMmQwZWZmIGxlZ2FjeS10cnVuaworNDIwNTIgN2NhNTFjYjcwYzJlMjRkYTYyOWY5OWYyMzhiZTAyYjNhZDYyYzM4MCBsZWdhY3ktdHJ1bmsKKzQyMDUzIGI5NGVlOTJhNmQ2YjVlYjU5ZTg0YzhlNDk5NDhlYjNmYzZlZTA0OTMgbGVnYWN5LXRydW5rCis0MjA1NCAwN2ZiZDM0ZjFmNmVkMTMxYWZjYjQ2ZTQ2ZjJjZjMxNzM4ZmY5M2E3IHJlbGVhc2UyNC1tYWludAorNDIwNTUgZWYxZDhkNmFjNmJlZmI2ZTQ4N2FlNDE5MGYxN2UzMjYzNTM3MTIyOCBsZWdhY3ktdHJ1bmsKKzQyMDU2IGVmM2I0MzU3OGE1ZmZhNzcxNDM3M2I1ZjBlOWEyZTljZjcxOGVkNGIgbGVnYWN5LXRydW5rCis0MjA1NyBhMjEyNTNmYjA4Yzk3MmQwMDYxYTI0NWI3MWFiMWJjNWE3NzFhZTY0IGxlZ2FjeS10cnVuaworNDIwNTggZTcwMzNkZmZkNjBjYWU4MzQ5NTYxNzY3YzMwZGZlMzIzZTA3ZTBlMSBsZWdhY3ktdHJ1bmsKKzQyMDU5IGM3Y2ZlYTFlYmIzMjM0MTllMjlhZmRjYjFkZWQ3NWRiNWIyYzRlY2MgbGVnYWN5LXRydW5rCis0MjA2MCA2ZDJiZTNiNzZmMmUyODM2NTczNDU3NGRjYzYzYWZjY2JjMWVkNGUwIGxlZ2FjeS10cnVuaworNDIwNjIgOWVlYWEzM2Y5NjQwNjMzYzYxNjI4YmQ3YWRmNTk5NmU1MGM2Y2NjNCBsZWdhY3ktdHJ1bmsKKzQyMDYzIGIwZDdkMjhjZDc0NjFmMmYxYzM0ZDM1NjkwYzEyOGRmYWUwM2Q4YzkgbGVnYWN5LXRydW5rCis0MjA2NCAzODhlYmM2ZTNkZTExNzk3MzMxNTA3ZDIyOTJiOGFiMTExNjRlMTNiIGxlZ2FjeS10cnVuaworNDIwNjUgZThmYzYwYzRmYWFkN2UzYTc3ZTJmODY5ZmFmMzgwMmYzZTZlNDFlYiByZWxlYXNlMjQtbWFpbnQKKzQyMDY2IDQwNWFiMGRjOWNiYzM5MTNmODg0OWU5MDMxNTI1MWViYzBmYmRlYTIgbGVnYWN5LXRydW5rCis0MjA2NyA0M2IxNmVlZmYyMjZiMmVlZGNjZDQzNTAyOTJjNmRmZTFhYzgyMWE2IHJlbGVhc2UyNC1tYWludAorNDIwNjggMmFmYmFhZTZiODhlMGJhY2QyZjAyN2RmOTA3NGFmM2MzZTBjZjRkNCBsZWdhY3ktdHJ1bmsKKzQyMDY5IDJjODYzMGI2YmMzNTk5NThiMmEwN2U2NTdmM2M4YzU0NjQ1MDBkMWUgbGVnYWN5LXRydW5rCis0MjA3MCAwMjk0ZTY2NjI3NDlhZDRjNTNlZWFhOWZmN2ZhMDRkNGRkYTI2OTJjIHJlbGVhc2UyNC1tYWludAorNDIwNzIgYmVjZWI4ZTY2YjBiYTA0YWQwZDMwOWMxNGJkNjg5NzYzZTM0ZWVlNiBsZWdhY3ktdHJ1bmsKKzQyMDczIDJmN2I1NDAyMmIzYjFlZTNjNmNkNDNkN2E4YTUzYTA1NDkyNjAwYWUgbGVnYWN5LXRydW5rCis0MjA3NCA0ZGJhNjFlNDkwMzdmZWJjOTA4Njc1NWViNjRmMmQ1NzlkNjAyZTNkIGxlZ2FjeS10cnVuaworNDIwNzUgMjBmMjFkYzczOTZmMjNkZTljN2YwYjEwOTI3Y2I3NzYzYTc2NzYzOSByZWxlYXNlMjMtbWFpbnQKKzQyMDc2IDM3MDljZTM3ZmUxYzRmMWVkNmExZGFjNTNmNjUxNzI4ZjNmNGM5OGUgbGVnYWN5LXRydW5rCis0MjA3NyA2NWZlOWFjZWQwMDJiYzhhNTBjNjkxZGQ4Zjk5YmE2NDU4NmFkMGM3IHJlbGVhc2UyNC1tYWludAorNDIwNzggYmMxODNiNWY4YmMxOWRlZmU3MWZlM2E4NGFhOTVkNDhjNWI1Y2NiNyByZWxlYXNlMjMtbWFpbnQKKzQyMDc5IGUzNjQ4YmE5MThlZTQwMDgwNWVjZDNmNDZkNjM5MjllMzQxOTRmNjUgbGVnYWN5LXRydW5rCis0MjA4MCAyYWU0MTZhYWNiODg3NzU3ZGQ5NGU5NTc3MzZhZjYyMDhlNjRmNzg0IGxlZ2FjeS10cnVuaworNDIwODEgN2JiNjRhY2VhZGQ3YzhjNjkzY2YzYjE5NDkyOWFiMjVjNWZlYjQyYSByZWxlYXNlMjQtbWFpbnQKKzQyMDgyIGM0YzkzYmRlMTg1YzdmZjQ0NTFiMDI4MTA4MmU4ZDBiMTBiYzQ1MmUgcmVsZWFzZTI0LW1haW50Cis0MjA4MyAxZWY1MDYzYTBjNmQ5NTRlZjNmZWMyOGVmMWQ1N2FmZWNiZGQ3NmUyIGxlZ2FjeS10cnVuaworNDIwODQgZjYyZDdkMmM1MGRlZWQzNGY4YjZlNDMwNTVkNGYxNTExYWUwNDUwOCByZWxlYXNlMjQtbWFpbnQKKzQyMDg1IDQ5NjZhMzYxZjkzNjQyNDY1ZmJkN2RhMmNlNThiMWZiZWJiMmJmMWYgc3NpemVfdAorNDIwODkgODViNWEyY2RiYWMxMDdiZmYxNzQwNWY0NzI4ZjgyMmEzNmM4OGY0NSBsZWdhY3ktdHJ1bmsKKzQyMDkwIGFlMDdiMGU3ZDcwYTg5YTA3N2MwNDUwMDM5NTZhYWQ3NDI4YTZhY2MgbGVnYWN5LXRydW5rCis0MjA5MSBjNTgzMjE0ZDRjNTEwOTRjOGE0NmQ5N2Q5YzFjODQxNWMyNWVkMzRjIGxlZ2FjeS10cnVuaworNDIwOTIgZDc5ZjA0MzI4NGJkNTA2ZmNhOGYwYzNjN2ZlNjQ5YWZiYjM3ZTEwMSBsZWdhY3ktdHJ1bmsKKzQyMDkzIDFhZjdmNzE5ZWQyOGYyNzc3NWIxYWFjOTlhODU4ZDAxOGFhYjIyNzkgbGVnYWN5LXRydW5rCis0MjA5NCAzZWYxMzgwZmQ4M2MyZWI1Nzc5MmZhMGRkYzFmMTFjY2EyYjlmYTIyIGxlZ2FjeS10cnVuaworNDIwOTUgMmUxNTFiYzgyMGY3MTg0MDk4ZTFhN2ZmOTczOTRhY2NkZDcyZmY0YiBsZWdhY3ktdHJ1bmsKKzQyMDk2IDIxMmJjMjM2MzJhYjVkNDc0OTNjZDE1ZmRhMzEyYTliOWYzMWViYTYgbGVnYWN5LXRydW5rCis0MjA5NyAyZDNhMWMzYzkzMDU2OTEzYjJiYzYwZmYzNWIyMjJjZTg4ZGFiMGY4IGxlZ2FjeS10cnVuaworNDIwOTggNjg3NGYyNjkzZWI4YTBlZWY5ZDY4Y2VjZWJlMTM4YTk5MTZjZDk1NiBsZWdhY3ktdHJ1bmsKKzQyMDk5IGE1MzAxNzYxODU4NjVlZjllYmIwNDIyOWYxZjEyYzYxMDBmNjdkZDIgcmVsZWFzZTI0LW1haW50Cis0MjEwMCBiNTg3NjEwZTIwNjlhNGQ5YzRiNjc5YWU5NGViNGNlNzU0MWMxNzMxIGxlZ2FjeS10cnVuaworNDIxMDEgMWQ3NjQ2MzhhYmRkODAzMTc2YTA1YzEzMjM3YjU0YWNhZTVhYTMyOSByZWxlYXNlMjQtbWFpbnQKKzQyMTAyIGVhNmE0NmQ4YzUxZWMwYWJjOTRmMmJmZTRmYTJjNTQyY2JkN2ZhMDIgbGVnYWN5LXRydW5rCis0MjEwMyA5OGZhYWMxZGY1YmJlZGY1ZWIwZmY1ZjI3MDQxNTQxOTQ2OTg1NGQ0IHJlbGVhc2UyNC1tYWludAorNDIxMDQgMDcwYmI0MjFhMzAzYmNlMjAwMjczNDE5YjBmMTJhODI0ZGFiOWI1YSBsZWdhY3ktdHJ1bmsKKzQyMTA1IDkyOGRlNGEzYmU2ZjU0OWExMGI4MDRjNjgzOWM2ODk1YjAyMWM1OGEgcmVsZWFzZTI0LW1haW50Cis0MjEwNiA1ZThhZjI0MjM1NzUwNjM0MWI3MjIzZDg5NmVkM2Y5NGU0NmE2YTc0IGxlZ2FjeS10cnVuaworNDIxMDcgZmRhOTEyZmU4YjlhZGM0MDc4YjE2ZDJhN2ZiNmJhZTczODU2ODQyOSByZWxlYXNlMjQtbWFpbnQKKzQyMTA4IDc2YWJhM2ZhNGUyZjgxN2I1ZTUzMWYzMzk3ZGQ4ZGQxNTAxMTM5YWUgbGVnYWN5LXRydW5rCis0MjEwOSAxN2YwOTk0NzllNmI3M2RjZWU1ZDY3MjU2MGM3ZTcyYjk4NzgyODUxIHJlbGVhc2UyNC1tYWludAorNDIxMTAgNGJjZjVmZTU0ZDgzNDBhYWQ3NGNlM2IyNWNjNjAzZGIyYzQyYjlkOSBsZWdhY3ktdHJ1bmsKKzQyMTExIDllYWUzMmJkZjgwMWI2NzAxYmM3YjlmOGU5ZDhkMjMwMzUwOTlmY2MgcmVsZWFzZTI0LW1haW50Cis0MjExMiBhYTdhYzkwODdhMWMzMDYzMmFiZmQ3OTUwMjA4NjQ3NTAxYWI2NzFlIGxlZ2FjeS10cnVuaworNDIxMTMgYzJiMTQ5NzMxMGQxMDE1OWJjM2M1MzQ4NWVhNzBhOTRjYTFlMTM1MyByZWxlYXNlMjQtbWFpbnQKKzQyMTE0IGFlZDMyY2UzNWI4MmRmZmFkN2U1YjI5Y2E2YmIyZTEzM2E4MDZkY2MgbGVnYWN5LXRydW5rCis0MjExNSBkNDhmNGE0YTMwNmY1OTNlZjBhMTE0ZGMxNWMzNjBlMTcwMDVlNTEzIGxlZ2FjeS10cnVuaworNDIxMTYgNTgyNTFjOTkwNGUxODkyNzA0NDZlNjMzNWVhMzBiMjU1ZGE3YTc5NCByZWxlYXNlMjQtbWFpbnQKKzQyMTE3IGViNGE0N2I4MTk0MjRjY2YzNjk4MTFjZDZiMzIyYWE4MGE2YjdkNTAgbGVnYWN5LXRydW5rCis0MjExOCBiMGE5YThkMTRhYjIyMjQ0YzBhYjA0YTNjNTMwOGVhMmJiMGZmODEzIGxlZ2FjeS10cnVuaworNDIxMTkgMzE1ZjQ0MDdhYjEyZDU3N2UwMDdlOGE3YzczYzZhNzBiYjgyNGE1NiBsZWdhY3ktdHJ1bmsKKzQyMTIwIGY4ZmNjYWU2YTBmNWRjODI4N2YwNmVhNzc2NTJhYzRlMGIyZGJiYjUgbGVnYWN5LXRydW5rCis0MjEyMSA2ZTEyNzA3MzcxYTEzMGVlZDQyZGIxMjAyMDBlOGU2ZjZlNjEyODVkIGxlZ2FjeS10cnVuaworNDIxMjIgMThhMmQ3NWEzYzY5NjQ0ZjcxM2MyNTU5YmMzZTk5NTg3ZjViMTFiZSByZWxlYXNlMjQtbWFpbnQKKzQyMTIzIDNhOTJlNTY1NDc0ODVhZDg4ZGZkNmI4ZGNiMWU0YWM3NWE5MDRhYTMgcmVsZWFzZTI0LW1haW50Cis0MjEyNCBiYTE2MDQ2NGE4YzZjMTljYTEzMzk4ZGNmZTZjZTljNzhiMDVjMGZjIHJlbGVhc2UyNC1tYWludAorNDIxMjUgMDRhOTZjYzg4NTgzZWMzYzIxZjkwZjNhZjRjN2QxZDMwZmIzMWUxNyBsZWdhY3ktdHJ1bmsKKzQyMTI2IDI0NDU2MzM4MDI2YzA0ZjJkNWRmODIwM2FjZWQ1MjQ1ODllOWYyZDcgcmVsZWFzZTI0LW1haW50Cis0MjEyNyAxZThmNDY3M2U0NDc0NzNiYWM0YzRlMTQxZDlmNjY4MjZjZDY3YWI0IGxlZ2FjeS10cnVuaworNDIxMjggYjA1YzRjYTg1OTQzNGRiNzYxZmYzY2Y1MDEwYzlkN2VlODk3MmQwZSByZWxlYXNlMjQtbWFpbnQKKzQyMTI5IDQ3NDZmYWIzNDAxMjQ0ZmZiZjRiZjhjYzZjYmIzNzRmZDQ2MDk1YWIgbGVnYWN5LXRydW5rCis0MjEzMCBhYzAyZjY1NWIzMWUzODA4ZTJmYWE3N2I5ZmVkYzUyYmRhYTc3MjE4IHJlbGVhc2UyNC1tYWludAorNDIxMzEgY2E2YzgwMGFkNWEwMmMxMTliYjBjM2EzOWRkNzBhZWY2Y2ExM2I2NSBsZWdhY3ktdHJ1bmsKKzQyMTMyIDZmY2I1NDA1MDc0ZTdhNWU1ODQ5ZGJmNGEwZjM3ZjdlNzYzNzIzMmIgbGVnYWN5LXRydW5rCis0MjEzMyA5Nzg4NWFkZjczYjU0NzFhYzdkYTNhNDMyZjNkZjgxZDAyY2NmN2FhIGxlZ2FjeS10cnVuaworNDIxMzQgNzg3MDJhNTAyOGE0MWY4NWFiODBmNGVjNzBjMWQ1ZjgxYTUwMmQ0MCBsZWdhY3ktdHJ1bmsKKzQyMTM2IDlmN2NlMjg0NmMzMDk1OWM1NDVkOTExNDZmODE3NDk1NTNhOTMzZDggbGVnYWN5LXRydW5rCis0MjEzNyA2MWI4ZTNlM2Q2NDE4M2FjYzI4MDY0NGViNjQ5OTFjNjRiZDRiOWM0IGxlZ2FjeS10cnVuaworNDIxMzggMjgwNjUwNzkyZWY3MmI3Y2VlOGI5Mzg5ODNiMWFmMDc0YWUwM2I4NCByZWxlYXNlMjQtbWFpbnQKKzQyMTM5IGY5NDk5MWQ1ZGQyMDY5Y2JkYWJmZjlkNDg1OWFmMDVkYjQzNDQ2ZmMgcmVsZWFzZTI0LW1haW50Cis0MjE0MCBmZGYxYmU5Y2ZlZGYyYjMwMTk2MDMyZDkzMzNmOWE1NzRmMzM2OTczIGxlZ2FjeS10cnVuaworNDIxNDEgMDBlZTIxNzE1MzdmNzVkZTdhNzA5NThmYjc5ODU0N2U0ZDk0NTM2NiByZWxlYXNlMjQtbWFpbnQKKzQyMTQyIGYwMTU0M2UxNWY4NWE0OTkxZTMyMDExZDFhMmI1YTEzZTQxYzE2NWUgbGVnYWN5LXRydW5rCis0MjE0MyA0MzE1YzUzZjUxYmNhNjA0MjlkYTU2ZGIzZTViMzE2MzdkMDY0YTQ5IHJlbGVhc2UyNC1tYWludAorNDIxNDQgNGQyYTA5YTY0ODVkM2U5Yzk4Y2I5YTFhNmY2NTk3NWYxMzEyODJkMyBsZWdhY3ktdHJ1bmsKKzQyMTQ1IDNiNjNiYzkwNGQ5MmU3YjViNTI1MDQzZTA2NjE5MmQ3MGRkOTAwNTAgcmVsZWFzZTI0LW1haW50Cis0MjE0NiA0ZjExYjIzZTM2MWY0NTRkOWU5YTllYjc3YTk0ZTRhNjY0OTg0OGZiIGxlZ2FjeS10cnVuaworNDIxNDcgNDQ2Y2I1ZmMzZDI4MGJmN2ZjNDZmMmQ2ZGFkMmM4MTI2MDI5ODVjOCByZWxlYXNlMjQtbWFpbnQKKzQyMTQ5IGExN2I3MzgyNmY5NzgzYTgwMTY4ZTU0NzhlN2IzNGM0NDUwZDg3ZjIgbGVnYWN5LXRydW5rCis0MjE1MCBjODNjMDIyYTM0OTFlYjE2ZmUxYWZmNWE3OGU0MWVjZTY5NzMzZGMwIHJlbGVhc2UyNC1tYWludAorNDIxNTEgODE0MGYwMDBlOWQ0NTllZjM0ZjMyOWQzNWI1OWYwY2MyYzBjZWMxYSBsZWdhY3ktdHJ1bmsKKzQyMTUyIDYwNGZlODdhZDQ3YzdjMGMxOTI0ZWIzOWY5ZGFhN2NhODU4MmUwZTcgbGVnYWN5LXRydW5rCis0MjE1MyA5OWQ0OTFmYWE2NWMyYjlkZjdlMTQ4ODA5NzFhNmQxMTA2NTJiY2YxIGxlZ2FjeS10cnVuaworNDIxNTQgN2IzZDkxNWI2ZTlkMDAxMjNlOGZjN2U1Y2Y4YWQ0NzJhMjY0ZmI2YSBsZWdhY3ktdHJ1bmsKKzQyMTU1IDRmOTBjN2MwNTM2NGY0MjRiNjNkNjJkNGQxMmIxM2ZjZDI3MTY4MmMgbGVnYWN5LXRydW5rCis0MjE1OCA4MzhiNWY1OTI0ZWUxNzE0MTQ2N2U5MTg4MTVhM2Q1M2UwZGUzODEzIGxlZ2FjeS10cnVuaworNDIxNTkgM2I0YjQ0NTRmZTg2NjRiYzRiZWFmMTVjYzhlMWMxOTczZTgzMDYzYiBsZWdhY3ktdHJ1bmsKKzQyMTYwIDVlZTQ2YmJlZDFmOWZlMDQ2OWUxNmUyZGQ0NDNmNGNkNjVlNjE5MDggbGVnYWN5LXRydW5rCis0MjE2MSA1YzQ4N2NiNjMyOTUwNzhkYjNmMzM5ZWFlM2M2NzBlNmI2ZDgyN2E2IGxlZ2FjeS10cnVuaworNDIxNjIgN2YwNTk3NGM4YjgwMzE3ZjI4NzA2OTIxOGUyMDAwZTEwYTdjNTBjOSBsZWdhY3ktdHJ1bmsKKzQyMTYzIDAwMDZhZTEwYjdmMGM5MmM5MWEzZTA5MDI3NGMyYThmYTQwMjUwMzkgcmVsZWFzZTI0LW1haW50Cis0MjE2NCA3OGJkNzhhMWNlNzRiNDYxZjI1OGI1NmI1NTRiNWZiZmUwN2NiNzE2IGxlZ2FjeS10cnVuaworNDIxNjUgMjAxMmM1NDhjZTY5OGNiZjQwYmI5ZTQ1YzZhODM4MTBhZDBhNzE5YyByZWxlYXNlMjQtbWFpbnQKKzQyMTY2IDMxMTRlYjA2MGQwYWVkMmVhNzg2NWUyZjNiNDJkMThlYTk5OGZlNjMgbGVnYWN5LXRydW5rCis0MjE2NyA3NGE1OTg5NjRjOTYyOGQwYTQ3ZjljZGRlNGE4ZTQ0MmI2NTJhODE2IGxlZ2FjeS10cnVuaworNDIxNjggYTI5Y2MyM2JiODljNGM1Zjc3YmVlMjBjMzA5NGI5ODc1NmVjZTM4ZiByZWxlYXNlMjQtbWFpbnQKKzQyMTY5IDAzNzJlMjVlNDMwZWNjNTcyZjJmOGE5MmY2OWU4MWI4NWE0MjI4NWMgbGVnYWN5LXRydW5rCis0MjE3MCBhNTBmNTYzNWE0OTQ5Yzk1NmZlN2NmYjBhYjEyZjc4NmI0MmMwMjNhIHJlbGVhc2UyNC1tYWludAorNDIxNzEgZDY4ZjczZjk2ZjMxZjcyZTM0NDM5YzVmYmY0ZjhiOTU5NzZmZmQ0NiBsZWdhY3ktdHJ1bmsKKzQyMTcyIDZhYjgyYzQ3MDYzMzhmMWU0NjViMmI1YTFiYjk4MGYyZmI1NDU0NjQgbGVnYWN5LXRydW5rCis0MjE3MyAwNTVmY2RjNjUyZGQ0MzU2Y2ZhOGM0ODUwZmM3NmIwYzRkMDI5MmUzIGxlZ2FjeS10cnVuaworNDIxNzQgMWI5ZWI5NjMyYzg5YjhhMDk0YjMxYmEwNzE5ZGFiNGNjNDIwN2YxMiBsZWdhY3ktdHJ1bmsKKzQyMTc1IGJmYjI0N2Q3YmMzZjcyNTJmMzM5OTE4OTFmNDNkNGM4NjVjOTk3OWEgbGVnYWN5LXRydW5rCis0MjE3NiBkNTczNGRjMDdkNGFiZDk5NWUxZTk1ZGZiYzQ1MWE3MGFkNmY0MDU3IGxlZ2FjeS10cnVuaworNDIxNzcgNTEyMzQ1MzY5MGU1MWExODg4NmZlYTFlZDUxNDQ4MzNlZDNhZDdiNCBsZWdhY3ktdHJ1bmsKKzQyMTc4IGQ2MmRhMzZhYWUxNTUxMjVhY2ZhYzNhYzk1YTlkNzc3ZmY2MmVhZjkgcmVsZWFzZTI0LW1haW50Cis0MjE3OSBlN2YxOWVkMWVhMmRjMGNhMWJjMjAwMDlkNDNmYzdkN2NiMmJjMTM4IGxlZ2FjeS10cnVuaworNDIxODAgYzAxZDIyNzJlNmMzYTZmYjQ5NzRmOGU1ZTJlNDhiNGJmODNiMGI3MCByZWxlYXNlMjQtbWFpbnQKKzQyMTgxIDNkZjYzNDYxYjExNmQzNzlkN2VlODYzN2MwYzM3MjczZTEyMjEzOTYgbGVnYWN5LXRydW5rCis0MjE4MiBlMDI4OWZiYTZmZjFlYTkzOTFiNmNhMzc0ZmI2MDBjZmQ0NjM5YjRkIHJlbGVhc2UyNC1tYWludAorNDIxODMgMDQwZDdmYjRlYjU2ODQ3YWRkZTEwZDhiZjNiNmEzYmE2NmQ5ZDM2YiByZWxlYXNlMjQtbWFpbnQKKzQyMTg0IGU5NzgxOGJjMjkxOTQ0YWY2ZDA5ZTFkNjdiMmIwNGQ3YjdiOGIzYzUgcmVsZWFzZTI0LW1haW50Cis0MjE4NSAxMzU5NjA1ZjM3MTNmYjU5MjM5ZWZmYzBmYTI1MzdiMWQxOTI3NTczIGxlZ2FjeS10cnVuaworNDIxODcgYWY2ODRkNzNmM2E2NzNkZjk3MzFhNzMxMGViMDZmZWNhOGM4OWFjYSByZWxlYXNlMjQtbWFpbnQKKzQyMTg4IGMzYjY3MjhkODg2Yjg3N2NiZDQxZmE0MGRjMmZlNjhmMmY2YTM0MjggcmVsZWFzZTI0LW1haW50Cis0MjE4OSBjZGU2ZWEwOTFhYWFmY2U0NWUzMTUyYjk0YzliYTUzYWVhNTI4ZDk2IGxlZ2FjeS10cnVuaworNDIxOTIgMDYwMjg4N2RhZGY1ZjU3NDFmMzU1NDc2ZDZiMDE4MTkwMWQ1NjZkZSBsZWdhY3ktdHJ1bmsKKzQyMTkzIGYwYWRhNmYwZjY3ODk5MjkzYTljNDIxOTc0MTEyNGU0MDkyYTExYzcgbGVnYWN5LXRydW5rCis0MjE5NCBhNjI1ZTg4NzY0MDcwMzgxOGUyM2YzMDM2MGZlNTQ2N2UzYjgzMDczIGxlZ2FjeS10cnVuaworNDIxOTcgOTUwZTNlMzg0M2JiZjAwNDc3YzMxZTJlNDQ5NmIwZjYwMmJkZjUzYiBsZWdhY3ktdHJ1bmsKKzQyMTk4IDAwMDRhOWQwNGQwMzY2NTcxNDZhMmUyMWY0ZjVhYjM4ZDY5NDQxZTEgcmVsZWFzZTI0LW1haW50Cis0MjE5OSAyMjg5OTUwMjExN2ZlNjg5MWY2OTIxYzdhYzEwOTA5ODg2MWFhNDIyIGxlZ2FjeS10cnVuaworNDIyMDAgZmMxMmNjYTczYzM1ZDBiY2QxNmZiZDgwYzk0YzcxYjQxZDdiNjhhZCBsZWdhY3ktdHJ1bmsKKzQyMjAxIDI5YmZiYjU4OGQ5M2Y4ODc3MTdhYjYxZTExM2UxMGZlZTcyM2QwNGIgbGVnYWN5LXRydW5rCis0MjIwMiAyM2ZlNDdlOTMzN2Q4ZjljNjg0MTJhMWE2NWY0ZjUyZDNiMjcwOWYyIGxlZ2FjeS10cnVuaworNDIyMDMgYmZhMjI3MjY3ZjQ4MTRlODJlOWZiYWNlYTlhMzIxZTZhMTFhZmM5NCBsZWdhY3ktdHJ1bmsKKzQyMjA0IDBmMmQ4MjAwM2EwZmI3NGQ0ZDJhZTQ5YjcxYjM1N2JlZjI5OTU3ZTggbGVnYWN5LXRydW5rCis0MjIwNSAyODBkNjAxOWNmNDI2YzBhMDM2NjEyOGNkYTc2YjM0YTg3MTI5YmY1IGxlZ2FjeS10cnVuaworNDIyMDYgMzhhOTRlNThhNjk1NmM2YWE5NzA4YzhlZjdlMjgzYzA1MzExNTA3NiBsZWdhY3ktdHJ1bmsKKzQyMjEyIDE2YmZlOTM4NjA2OGNmYmUxOGEzNWVlOWMyOTkyZTYxY2ViOWI2ZjggbGVnYWN5LXRydW5rCis0MjIyMSA4MTk0MmZjOWEyMGQxNjY5ZTg3MjY5ZmE2YTZiZjI2ODE5NGRmOTU0IGxlZ2FjeS10cnVuaworNDIyMjYgZDY4MGZhNTI1NTEyMjZjNDBmMjU0YzliNGY2YjEyODhmNzUxYzYwMCBsZWdhY3ktdHJ1bmsKKzQyMjI3IDZhOGQ1ZTA1NGU5NzFkM2RiNGRmMGE5Y2NjMmY5ZGJhOWM5ZDc0NzMgcmVsZWFzZTIzLW1haW50Cis0MjIyOCBmMjM2NjEwOGJjYjI4MWM2ZDZjZjZiOWViMzQzZjkzZjczM2MzZmMwIGxlZ2FjeS10cnVuaworNDIyMjkgYmQ0NGM3YzA5NzdmNTc2NzI5MTY1ZjdhNTQwZjEwNGUyMWRiZDcxMiByZWxlYXNlMjQtbWFpbnQKKzQyMjMwIDI2ZTBmNjhkZTg2ZTZiYWIxMDAwOGEzMzM0ZTVmZjZkYjE3Yzg4ZTggbGVnYWN5LXRydW5rCis0MjIzMiA2NTVmYTIyNjA2Nzk4NDYzZjNmZjE1M2EwYWQ5YzdjNzk3MTNkODgwIGxlZ2FjeS10cnVuaworNDIyMzMgZTY2MjI4NTgwZWEyNjQ4NDhhOGNmYTM0NDdkMzY4ZTAyYjQyMjc5YiByZWxlYXNlMjQtbWFpbnQKKzQyMjM1IDk0ZDI3ZTAxODMzZGE0NzliZGY4ZWY1OGI2ZTIxN2QxN2UzYmM5ZDQgbGVnYWN5LXRydW5rCis0MjIzNiBjYjBkYmFlNzJhOGU3NjFiMTk4OTRjOTI5YjE3MTgwYzhmNjhiMWQyIHJlbGVhc2UyNC1tYWludAorNDIyMzcgNWUyYWNmNzQ0MWJkNjliY2ZjZGU1YmIxZTRiMzcyMDU3YjAxYjY2YSBsZWdhY3ktdHJ1bmsKKzQyMjM4IGRjMzI0NjMwMTVmMWJjZDg0MjZlYTBhMzJiNDU4YWRlNWJkMDdjMDYgbGVnYWN5LXRydW5rCis0MjIzOSA4ZTIzYTdjY2Y2MTVkMTk0YmM0Y2IzM2I2MGEzZDMyNmRkOTdiMGJkIHJlbGVhc2UyNC1tYWludAorNDIyNDAgOWE0ZmY2ZDZlNzI0NjQxM2M4N2ExZTVlYmIxNzliZWFjYTYyNjYzMCByZWxlYXNlMjMtbWFpbnQKKzQyMjQxIGEwN2ZiMmVmNTJhZTc1OTljNmFmNDNjODYyNTliZjYxNzEyNmViYWQgYXN0LW9iamVjdHMKKzQyMjQyIGQxZWYyM2ExNjc2MGMyMzEzNGI4OWQ1NmExM2Q0YTQyNmQ4NTRjYWQgbGVnYWN5LXRydW5rCis0MjI0MyBhMzA0NmQ0M2ViNTJmMmYxY2FmYzhiOTllNTZiNDhjNmU0NTVjZTNiIGxlZ2FjeS10cnVuaworNDIyNDQgMDJmMDc0NGE5Y2QwMmRkODAxMzY4MDQ1Mjg2YzVhZjMyYmI3ZjkwMyBsZWdhY3ktdHJ1bmsKKzQyMjQ1IDNlZGIxYmNkNDM0ZDRkYTFiOWNiMzljYjJmMWZhN2YyMjViZjIwNTkgcmVsZWFzZTI0LW1haW50Cis0MjI0NiAzODhhNTgzZTdhNjM0NGQ1ZTBkZTVhMDllMjNjM2M2Y2VhNDJiOTE5IGxlZ2FjeS10cnVuaworNDIyNTAgNGVkMzBlYWEwMjU2MTI1YTQyMTBjMGIyNTNhMGI1MmMxYTNjMmQ4OSBsZWdhY3ktdHJ1bmsKKzQyMjUxIGMxOTMyODNlNjNiY2I3NjEyNTNhZDlhODgzNWFlMjFmZTc0NzU2ZWQgbGVnYWN5LXRydW5rCis0MjI1MiA4NDA0YzllZmRjMzVlYmZmNzAxNWQ1NTJlNjhjN2VlZWY3N2M1ZDQxIGxlZ2FjeS10cnVuaworNDIyNTMgNzc4OWNjNTU3ZTFlZmE1NGMwOGVhOWQzNmEzMGJkMTY4YjQ4NTE2MyBsZWdhY3ktdHJ1bmsKKzQyMjU0IGFmNjdiNjI2NWFmNmFlMGJkZmQ1YWVmYzM2OWQ2ZWFlODI1MTk0NTkgcmVsZWFzZTI0LW1haW50Cis0MjI1NSAwMDJmOWI4ZmVjMjFlNzBiNmVmZDUwMTBhNWM5ZDJmNDg4OTY5MjViIGxlZ2FjeS10cnVuaworNDIyNTcgMGEyYTRmMTQxMTBiOTRhODQxZGNlZGMxYTBhYTlkZjRmZjBhZTNiNyBsZWdhY3ktdHJ1bmsKKzQyMjU4IDUxZjc2MDI4ODEwNDUyOWFhN2QwNDVmODVmNjk1ZGVjZDM1YjFmZDEgbGVnYWN5LXRydW5rCis0MjI2MSBmMzhiNjM1MjYzZDNhMWZmZjZhZWQ0ZDcwNDFkNzk3YjFhODE2NGI1IGxlZ2FjeS10cnVuaworNDIyNjggY2Q0NDU5ZDA4ZWUyMzY4ZTZjZThkMGUyYjc2YmIyMDI2MDI5NGQzZiBsZWdhY3ktdHJ1bmsKKzQyMjY5IDNhYmYzMzI2NDE0NjMzNjFkOGY5YjhlZjBhMmNjNWE5YWM3MWYyZDcgbGVnYWN5LXRydW5rCis0MjI3MCBlYTU0ZWFmOTIwMTYwMzE4ODVkYmNmYjU3YTFlYTFjMTJlMzNlYzllIHJlbGVhc2UyMy1tYWludAorNDIyNzEgZDU5NjE5YTM3MWMyMTc5YzMyMGZlN2Q2ZDYwNTU3YmFiZGFjMmI0NiBsZWdhY3ktdHJ1bmsKKzQyMjcyIGZkYWNmNzJkNDk3NjMwMmM5MmI0NTUxOWRhNDU5NDU2YmEwMjNjOTcgcmVsZWFzZTI0LW1haW50Cis0MjI3MyA1NTI0NjRkODFlMWIyMTY5NjFlYTJhNzZhZWU1ODE1YjkyYTViZDRjIGxlZ2FjeS10cnVuaworNDIyNzkgODQxNmZiMzIwNDAzOTE5YTZkZDA2NmYwMjg2ZDk1YmU4YzJhYjVkZiByZWxlYXNlMjMtbWFpbnQKKzQyMjgwIDM5N2Y2MzlmN2U2YjhhZmQwYjgzMjA2YTBjOGZkOWQxODAzNjMxYmIgcmVsZWFzZTI0LW1haW50Cis0MjI4NCA0YzJkNmViOGQ1ZTljM2M2MjdlYWE4ZjliZTVhZjM5NDc0YzY2Y2Q1IGxlZ2FjeS10cnVuaworNDIyOTAgODlmMWRhMTM0MmNhNDdkZjhhYmJkYTMwMDk0NzM1NWRhMTlmN2VlZCBsZWdhY3ktdHJ1bmsKKzQyMjkxIDNjZjhhOWVkNDQ2YjNlNGIxMDU5MTE1OTRkMTMxMjViMjVmZjNmYzIgbGVnYWN5LXRydW5rCis0MjI5MiA5M2VmYTU5YjMyOTdjZmZhYzdmOTA2ZWU5YTkzOTEzNzdlYzUwZDE1IGxlZ2FjeS10cnVuaworNDIyOTMgMDVlMzE0ZWUyNmY3NzA4ODVkZDc3OTY2NzM4NjllNjY5MDNmOTA2OCBsZWdhY3ktdHJ1bmsKKzQyMzAzIDE2NTM4OWIxNGQ2YmE3MTliY2MxNTE5ZmU0MTc0ZjUwZjUwM2M0ZDYgbGVnYWN5LXRydW5rCis0MjMwNCA4MWY0NGQxMmJlZjdhMThlMzhmNjZlNTkxNGQwMzM1ZjhjYjkzN2FhIGxlZ2FjeS10cnVuaworNDIzMDcgN2IxOWE1MzNjZTliYWQ5NWRmODU3YjNjYTRhZGQ4YWNlNzljMGRiZiBsZWdhY3ktdHJ1bmsKKzQyMzExIDBjNWFlODkyNDEwNGVlNjQxN2RiMGQ0NWMwNWI3NTE4ZmRhZThiZjggbGVnYWN5LXRydW5rCis0MjMxMyAxYzNiMTVkZjY3YTI5MzlmZjMwMWRiOGRmMGM3ZTZhYTE3NjczZDQyIGxlZ2FjeS10cnVuaworNDIzMTQgYzA3M2RmZmJlNzBlYzk1YzIzYmI0MGU0MGUwOGIwYTk5OWM0M2EzYyBsZWdhY3ktdHJ1bmsKKzQyMzE4IGQyMTg3NWQzNTkyYjY0OTc0YjI2YjBhMDAxZWMxNDNmNGM3ZTMxYzggbGVnYWN5LXRydW5rCis0MjMxOSBlMmQ0NjA4ZjVjMWQ2ZDBmOGY0NTVlZjg0N2E4ZWUwYTc3OTI1OTk5IHJlbGVhc2UyNC1tYWludAorNDIzMjAgZDQ5NmMwNzY0YWQ2MTRhN2U1OGRhOTgzYjc3YzRmZGMxZWM4NmVmZCBsZWdhY3ktdHJ1bmsKKzQyMzIxIGFlMWRhNTEyNDM4MjRhOGQ3Y2EzN2VjNzAyNzczZmZhNzhmZGIzYTUgcmVsZWFzZTI0LW1haW50Cis0MjMyMiA2YzZiNDI5YTcwMzBjNjUwMDlkOGZkZjE4ZjdjZTYxZTlkZTAxNGNhIHJlbGVhc2UyNC1tYWludAorNDIzMjMgNTEyOTc4MzFiNWY4OTA5ZWUzNjRmNGI4MmE5N2NhMWZiNjI1YjQ2YSBsZWdhY3ktdHJ1bmsKKzQyMzI1IGI0OGEwNDcyOWNjNDk4YjBiZDNlOGRhMzNmODZhZDUzOGVlMzE4YWIgbGVnYWN5LXRydW5rCis0MjMyNiAyMGY3NWQ1ZTc5ZTk1M2JlNDZmYTE1ZjJiYmNhNDIwOWE2MTI0NmU4IGxlZ2FjeS10cnVuaworNDIzMjggYzAwNzBkNzZjMGRiM2UwNTUzMWUyYTk3OTYyZjZjMDdkMzJhNGFjMiBzc2l6ZV90Cis0MjMzMCAzNmVhZTNmYzM3M2Q1MDEwNTJhZDRmMmYxY2FjMDkzYTJkOTkzODczIHNzaXplX3QKKzQyMzMyIDcxNTMwOTIxY2U5M2IzZTM3ZTViZDRiYTk5ZGQ4NmE3MjU3YTllOTcgc3NpemVfdAorNDIzMzQgMmEzMjMxZmU3MmUyOThhZDlmOTkxM2ZkOTdjZGNmYmE3ZWY1ODMyYiBzc2l6ZV90Cis0MjMzNSA5OWRmZGNjNmQ2MTNkZGU0NGI4OWE4MTQ2YzM5ZTYyY2QwNzkxNjIwIGxlZ2FjeS10cnVuaworNDIzMzggYzQ2ZGUxZTViOWEwMzIwMTgwODVjYWQ2ZjQ2ZDVjMDFmZTc0YmQwMSBzc2l6ZV90Cis0MjMzOSA2NWFlNzMwYjYyMzE0M2E5YjVjZTJhMWJmMTUzOTJjNzdiZTljOGNiIHJlbGVhc2UyNC1tYWludAorNDIzNDIgMDdiYThhYWUzZGM2NzFhODYxOTAxOTIwYmEyZDRlZWVlYzQ2ZTc4YiBsZWdhY3ktdHJ1bmsKKzQyMzQzIGEyYjZkZGFiNjZkNzhhMGI4OTlmYjg3OTQ4N2RjYjdmODYxMjU5OGQgcmVsZWFzZTI0LW1haW50Cis0MjM0NCBlNDcxZjFkZjJkMDMxZjEwNjY4ODI5OTg4YWYxOGE1MmQ0MmMxMDc0IGxlZ2FjeS10cnVuaworNDIzNTQgNzRiMjUzM2I1OWI4YmViNDdkYWIyNzU1NGNhN2MxMmM0ZDZmZTNlNCBsZWdhY3ktdHJ1bmsKKzQyMzU1IGM3YWI0MTdjNTliYzhiMDNkODY2OTViNGMyYjg4N2U3NTFhMDMxMWUgcmVsZWFzZTI0LW1haW50Cis0MjM1NiBhY2Q3MDJlMzA2ZmI0MTRiOWRhZThiNjAxMmJhNmUyNzZmNjk1ZDU0IGxlZ2FjeS10cnVuaworNDIzNTcgNTc0YzI1ZmU2MDI4NDUyMGVkMjUzZTMzNGMyNzU5Zjg5Y2UyM2M5OSBsZWdhY3ktdHJ1bmsKKzQyMzYyIDM0NDc1NDQ5N2NiM2Y1ODhlNjU4NzU4MTI0NTZkYjBhMTkwNWRmN2IgbGVnYWN5LXRydW5rCis0MjM2NSAyMjA0OTdlMDg5Y2U4ZGViNWIwYzk2MzdmMTEzMWU0MDdjMzczNGVlIGxlZ2FjeS10cnVuaworNDIzNjggZGIyZmNhOWVhMjY0MDYyODE4NmUzNjFkMGE1NTMyOGVhMzc2MzMwYSBsZWdhY3ktdHJ1bmsKKzQyMzcxIGMwYzM2YmJkNWUwYzE5NDM3NjhiMGIzOTkzYjZjNTE5NGFjZGUyMTkgcmVsZWFzZTI0LW1haW50Cis0MjM3MiAxN2VjMTdkZDJhYjNkN2ZjNDY2NDEyNGZiNDcxOGQzM2ViMGVmY2JmIGFzdC1vYmplY3RzCis0MjM3NiA5NjY4NWYxMTI3MDk0NDQ0NTJkNDEwNDQzN2Y2ZmQ2OGQ3NGNlMWJjIGxlZ2FjeS10cnVuaworNDIzNzcgMzVkZThiY2NmZDBlZDcyOGI5OWJjNDFhY2ZiNWUyMjI5ZTUwODM0NiBsZWdhY3ktdHJ1bmsKKzQyMzc4IDk4ZjdiNzQzZDkxYjAzNWJlZjI1YTQ5NjZkOTEzMDQ1ZGU1ZDJmNDEgcmVsZWFzZTI0LW1haW50Cis0MjM3OSBjMDM0Y2RkNzk2MGNlYzYxNDRlYTJiZjY1YTQ0ZGVmMGY4MTk4OWJlIGFzdC1vYmplY3RzCis0MjM4MCAzNjI1YzhiMTQzZDljY2NkNTkyOGNmOTBjZmUxYmNhYTcwYWY4ZmI5IHNzaXplX3QKKzQyMzgyIDdmZGM2MzliYzViNGQzYzA5MmNiM2ZkN2Q4N2Y3M2RiM2Q0N2JhMjcgbGVnYWN5LXRydW5rCis0MjM4NCBiOGU3M2MyZDFmMTdiMjc1MGM2NTM3MWYyNzcyNTk5ZDgzNTE3Y2E2IGxlZ2FjeS10cnVuaworNDIzODUgNzk5OGQ4NTY0OWM5ZTAwMGIzN2JjMGQxZjAxNmRmNDY2M2M3NjhmZSBsZWdhY3ktdHJ1bmsKKzQyMzg4IGRhOTNmOWYyZDZlOGE4MWZkZGJkNTNhMGE5NTE2NmZlOWQzYTc5YjYgbGVnYWN5LXRydW5rCis0MjM4OSA1ODI1YzZhY2UyOGI2MGViNTdhNWQ1NDI1NTkzY2VmM2JlMWMwNjJhIGxlZ2FjeS10cnVuaworNDIzOTAgNzc1ZGVmYmE0ZWU3NGI1NjFiZjQzOGRmZDcxZTQyYmMzNDE4Y2RmNyBsZWdhY3ktdHJ1bmsKKzQyMzk0IDc2N2FkYzA5ODQxNjFiZjYzMzA1MjQzNjBhYjMwN2M2YjUyNTE3OWUgbGVnYWN5LXRydW5rCis0MjM5NSA3MzIyZGNjYmEyMjQyOGE0MmFjODk5ZDUwZWQ5NGU4ZDk1ZjI0MTYyIGxlZ2FjeS10cnVuaworNDI0MDAgMTNlOThlMzY5YWJkOWY4NmFlYzc0YmIzNGMzM2MxNWM4NzhhNzM2YiBsZWdhY3ktdHJ1bmsKKzQyNDAxIDBmMzg5NGJiMmFkYWFjOGE5YTVhNTZkYzEwNGNhMDFkZTY5ZmMzZGQgbGVnYWN5LXRydW5rCis0MjQwMyAxNTk2ZmY1Yzc5YjUwMmUxYjNjNGM4ZjJjMzg1MjhiNWVhMmJiYWMzIGxlZ2FjeS10cnVuaworNDI0MDQgMzM1MGY4NWM4ODlmZDgwYmQzZmJlYmE3OGY5NTEyZDAyZDFjNjJlNyByZWxlYXNlMjQtbWFpbnQKKzQyNDA1IDQ0NWMwYWE4MTFjYTcwZGQ5ZDdiODA3ODI2YzQ2YTFjNjI1NGMzZDYgbGVnYWN5LXRydW5rCis0MjQwNiA5MTRmNWIwZGE1NGVlMWY0MDIzMTNlNTkxMTM0MTU4NDkxNDA0OGIyIGxlZ2FjeS10cnVuaworNDI0MDcgN2M5Y2ZkM2I1ZDBmYTZmMWQ0NGU1Y2YzNGMxYzg1OWZmYjllZWE0YyBsZWdhY3ktdHJ1bmsKKzQyNDA5IDdkYzFmZTc3NzEzZjJkMjBjYzk0MTU1ZmI5MTlmOGYwMmFjMTBhNzAgbGVnYWN5LXRydW5rCis0MjQxMCA5MTMzMWE4ODcxOGUwMmJlMjExYjQ5NzM0MTJmY2U4ZmI2OGU3NmI3IGxlZ2FjeS10cnVuaworNDI0MTEgOWYzZjg3ZTkyMGE2ZDFlMTk1NTc3MTkxYTFiNTE5YzliMWQ2OTVlNiBsZWdhY3ktdHJ1bmsKKzQyNDEyIGQ2ZDQxNWRmMGRmMGFhYzJhMWNhN2YzMWI0OTU4Zjk2NDNlMDE4NzEgbGVnYWN5LXRydW5rCis0MjQxMyAyNjQ3MGNkZWVhM2Q2ZmJlY2EwYzMzN2RkNWU3Y2YxNDhjNTczMjk5IGxlZ2FjeS10cnVuaworNDI0MTQgMzBhZWYzY2UyYjI2YzA5MTljYWY3Y2Y2YmJhZmFmYWRiYTU5NDRkNCBsZWdhY3ktdHJ1bmsKKzQyNDE1IDI3OTE2NzZiMzgyNTkwMDc2MzBkOTc3YjE0NDZhOTQ2MmJmMzYwNTcgbGVnYWN5LXRydW5rCis0MjQxNiA2NzJjMzBiZjk1ZTY5YTdkZTE4YzFkNzdiYzViZjNkNTc5MjY2ZDFkIGxlZ2FjeS10cnVuaworNDI0MTcgNGM4NjA2MTkxYzBjZjMyMmU5ZTc4NTE3ODQwMDlkN2YyZTJkNzIyMCBsZWdhY3ktdHJ1bmsKKzQyNDE4IDIyOTdiMjcwZmNmNjhkOTYwZmYyMWNhMDU0OTZlNDMwMDE3MjI0ZDggbGVnYWN5LXRydW5rCis0MjQxOSAwMGY5YzZlMTUwYmEyNTg3YzY4ZjMyZjFjZTg1Njc3MWQ3ZWZiOGZjIGxlZ2FjeS10cnVuaworNDI0MjAgOWRmNjFiOTZhYTQyNjRiZDk0MjU5OTNhYzJiOGU3OGEzNjBlMTlhNyBsZWdhY3ktdHJ1bmsKKzQyNDIxIDc2Y2U4ODBkY2U0OWUxMTEzZGU2ZTMwZjUyNjY3NzFiOTdjZGY4NGIgbGVnYWN5LXRydW5rCis0MjQyMiA0NDJjMGZiM2M0ZWQxMTE4ZDhiMWQyYjVmMGRkY2NlYmFmNTdlMGRhIGxlZ2FjeS10cnVuaworNDI0MjMgOTJhZmY5NzQxN2M0NmExYWFhMDZkNjMwOTJkMWYzYjM2YzZjYzcwMiBsZWdhY3ktdHJ1bmsKKzQyNDI0IDcxZTZmNmI0MTVhNGMyNjMyOTRkMmMyNDA3ZGY4NmZjNDlhOGRmMzggbGVnYWN5LXRydW5rCis0MjQyNSAwYzA5NmJlMjcwMDAzZGFjYWEzZTVjNjg2MTdhMDQyNTFlOTNiNjc1IGxlZ2FjeS10cnVuaworNDI0MjYgZWQwN2MxYTVlMjRjNjI3NjM5YTJlMTAxZWM3Nzg0Yjg5OTVmNGQ2OCBsZWdhY3ktdHJ1bmsKKzQyNDI3IDg2MjQ5M2NlYWU0YjMyMzc4ZDNhMzBjNTI2MGFlM2Y1NmZkY2MwMDUgbGVnYWN5LXRydW5rCis0MjQyOCAyNmNhYzM3MWQ3YjZlZjlhZmI5MWQ2YWE1ODFjYjJlNjc1YmI2ZGY1IGxlZ2FjeS10cnVuaworNDI0MjkgYzA2ZWUwYzkxMjA5NTdhNzcyNjFiYWY5NzdjNzhiMzJhNDU4ZjM1NCBsZWdhY3ktdHJ1bmsKKzQyNDMwIGZkYWJkZjE0ODMzNjIwNWVlNTYyZWQ0MGE1YWI5ZDkzNmEwMTQ5ZGMgbGVnYWN5LXRydW5rCis0MjQzMSAzMTY5MzhiNGY4ZDAwMjgzYzliYTFiYzM2MjY1MzZmMmU0ZjYwYmQ2IGxlZ2FjeS10cnVuaworNDI0MzIgMGQ0ODkxMjg0NDFhZjZiOTc2YzgzOWNlNDE4YTI4OWU1ZWJmNzE5ZSBsZWdhY3ktdHJ1bmsKKzQyNDMzIDdkYjNjYjllODM5ZmFlMzVhZDI4NzJjYzA2Nzg1ZTNlN2Q3YWJiNDUgbGVnYWN5LXRydW5rCis0MjQzNCBmN2YwZDJhNWIyMGI4MjVmMjcwZjZhZGJkMGU4ZWJiMzY4NzRmYzBiIGxlZ2FjeS10cnVuaworNDI0MzUgOTdjODFkYzAzZGRkYmU3NjNmOGNiMDFlMmFiMjg3MWY3MDBjNzY3YyBhc3Qtb2JqZWN0cworNDI0MzYgMDU2ZTViNDYwNmRhNDMzMWE3ZDdmOTZlOWJhMmU5YmIzNjJiMWM4YiByZWxlYXNlMjQtbWFpbnQKKzQyNDM3IDM2MzI1Y2FlZmY5YzY1YjE0YjFjNTQ2OGU2MGQwYjlkNmU4MDRkZTEgbGVnYWN5LXRydW5rCis0MjQzOCAyM2UyM2UxNWU3ZTdjMTQwMWJkYTE3MjI2ODUwYTJjOWY0NjQ0NzllIGxlZ2FjeS10cnVuaworNDI0MzkgMTIzMmU4N2NiODE2MDc5OTRjMzg4ZGRhZGVkNmZlNjEyMDI0ZTRkMSBsZWdhY3ktdHJ1bmsKKzQyNDQwIDViZDAyZGEwMzdiZmMzY2Y2M2IxNjJkZjI5OWNhNmRhOTJkYzNmODkgcmVsZWFzZTI0LW1haW50Cis0MjQ0MSBjOTE4NzkxMmI1OWU5OTE3ZjM0MGQyMWQ3YjMwZDAwMjQzNjUxMzc3IGxlZ2FjeS10cnVuaworNDI0NDIgNjkzZGE4Njc4OTQ2YjY1NjMxOTMxOTdjMjdhMjViMGMyZWMzMTEwMyBsZWdhY3ktdHJ1bmsKKzQyNDQzIGFkM2M0YjJjMTczMDA5NDJjYjVmZGI5MDM4ZmFmZGNlYmNjNDI4MGIgcmVsZWFzZTI0LW1haW50Cis0MjQ0NCBiY2UzZjM1NmNkN2I5ZDFiMjM4YjNmNmU1ZjMzM2E1NjA2YWFmYWVmIGxlZ2FjeS10cnVuaworNDI0NDUgYTlmOWRiOWZhOTc0YWM4MjQ2OGU3MzMwZWU4NDg5Nzk0MmFkMDI1NSBsZWdhY3ktdHJ1bmsKKzQyNDQ2IGM1NjUwZGJmOTM2ZWMwYzExNjFjMjIzMmY0MTkxYWU2MDQ4NTY0NzEgbGVnYWN5LXRydW5rCis0MjQ0NyA1YjM5NjE0ODE3YTNlOWMzNTMyNjM1NGM0MDE4YTk5NjUyZDVmMTIxIHJlbGVhc2UyNC1tYWludAorNDI0NDggYmM0N2YxYTZhY2I5OWU1YmE1NjU3MGE0YWZiNmMzNDU1YzAzNjUyZCBsZWdhY3ktdHJ1bmsKKzQyNDUwIDQ2NjhkZjQ1MDY3MmMyZWZiOTkzMDVjMmM5ZTQwNDhmZDRlNmQwMTIgbGVnYWN5LXRydW5rCis0MjQ1MSAxNTc2ZjliZWI1MDNiYzQ4ZWNkYTlhMjBlY2VjMTNlYTliMGU3MzUwIGxlZ2FjeS10cnVuaworNDI0NTMgNzg3ZmViYWUzMGRiZjNjNmEzZTQ4NGMyOWVmZGIyYjdhN2ZkMDE0NyBsZWdhY3ktdHJ1bmsKKzQyNDU0IGQzNjg1ZjliN2I3MWI5NzU3YWU5MDdlY2I5ZGFkNzk2N2FiNmFhOTAgbGVnYWN5LXRydW5rCis0MjQ1NSAwOTIzMDM1N2Y5Mjc5MTE4Nzc4ZTE0NDA2ZDJiMWQ5OTdhYWY4NjI0IGxlZ2FjeS10cnVuaworNDI0NTYgOWE4Mzk2ZjQ2MGFmZmNiZGI5MjA5NWM2MjU4N2ZmOTdjMzA2OTYxMCBsZWdhY3ktdHJ1bmsKKzQyNDU3IDZiZjc4ZDJiNTNiNDM1ZmNlZmZkYjYxMWU0NTUyNzZmOTM4M2JjY2QgbGVnYWN5LXRydW5rCis0MjQ1OCBhMTIzMjYwMjI2MmNiZmFkMTU1ZDkyYzdlYjYzMjJkZDc0MWE5MWJkIGxlZ2FjeS10cnVuaworNDI0NTkgYjkzODFhNTYyM2UyYmU3NmNhMWI2YTBkNjEyNmQxOWFkNmU2Nzg0ZCBsZWdhY3ktdHJ1bmsKKzQyNDYwIDhkZTU4MjQ2ZmVmOGUwYzRmMTliMGU0OGRkODZlMGYyOGZhMDk3YzggbGVnYWN5LXRydW5rCis0MjQ2MSA5NDE3ODZlNjNhYzhlNmE1Yzc1YWYzYjU2ZDg2MDYyMGRmYjBlM2Q3IGxlZ2FjeS10cnVuaworNDI0NjIgMGVmN2NmNTIyMmIwOGFkN2MxOGMxYjY0OTZmYjhlYjZjNmNmZjZlYiBsZWdhY3ktdHJ1bmsKKzQyNDY0IDlkMjlkYWVjYjlmYWFlOGFmNGI0YWZlMjI0OGI4MmVjNmRiNmIzOWQgbGVnYWN5LXRydW5rCis0MjQ2NSA1Y2UzMmE1YmQyNDBhNzQ5MmMwNjdiOGVjNTU4YzkyOTVlMTg2ZGI0IHJlbGVhc2UyNC1tYWludAorNDI0NjYgMjM4NmMxMDVhODk0MzY0MTMyYzZhNmI4M2E0ZTRiMDY2MjJhMmY1ZiBsZWdhY3ktdHJ1bmsKKzQyNDY3IDNlMWQ4ZDNiNGI2ZWQ4OTMyMjIwZTU1MzU5NmFjOTliM2UyMWQwMDkgcmVsZWFzZTI0LW1haW50Cis0MjQ2OCAxODQ1ODcxMWViZWQ4NmM1YmMyNDhlNDBlNjhlMzMzNTdkMjkyY2RlIGxlZ2FjeS10cnVuaworNDI0NjkgOGI0Y2IyMjViNDk3NTc4ODg5YzIwNjZiMTNkYWEwY2FkZTQxY2I3MCByZWxlYXNlMjQtbWFpbnQKKzQyNDcwIDU5YjUzMmFiMzM3NjkyMzIwYWVkZjUyMTMyMGJmNWYxOTJjMTdmOWUgbGVnYWN5LXRydW5rCis0MjQ3MSA1NzI5YjRiYzliOGQzOTY5YTllNDM2ZTY0YjQ1Y2MwOTk5YmJjNWFlIGxlZ2FjeS10cnVuaworNDI0NzIgYjYwYzUwYjE2MTI2YjVkY2U3MDc2ZWE4MzdiM2EyNGJmODY0ZTBhZiByZWxlYXNlMjQtbWFpbnQKKzQyNDczIDMzYWRjNWRkMmJmMjE5OGI3NmU3YmY0NzI0MDhjYzNmZjNiY2I5ZDMgbGVnYWN5LXRydW5rCis0MjQ3NCA5MjAwNDkxM2I0MTIyMDYzYWI4YmZmNWM2YTI3MGExYjA0ZDZjOTUwIGxlZ2FjeS10cnVuaworNDI0NzUgODFmZmRlZWExZDA2NjAxZmNmNGI5YmY3NDVjODRiMTZhM2U5OWEyZCBsZWdhY3ktdHJ1bmsKKzQyNDc2IDAyYTBlYjFhMmIyMWJiOTQ5YzExYzc4ZjcyZDY0YTBjY2I4YTRkMjQgbGVnYWN5LXRydW5rCis0MjQ3NyA4ZTEzMjM2MjQzZGQzNGNmZWQzOWE2MDQ4MmIyZGJhYjAwYzA2M2FhIGxlZ2FjeS10cnVuaworNDI0NzggZGM2ZGVjMTU2ODY5ODJkNTkzMjViYzQwNDhhZjU2NDg3M2IwNDMyMSByZWxlYXNlMjQtbWFpbnQKKzQyNDc5IGE2NDUwZjk4OGFhNDQ1NzJlOGZjMzhhYzg5ODUwMTUwMDBlMTBhMTEgbGVnYWN5LXRydW5rCis0MjQ4MCAwZjFmYzhlZmI3MGI1ODJhYzEyNGUxNmYwYzRlNmYyOTY0Njc0YmM3IGxlZ2FjeS10cnVuaworNDI0ODEgOTg5YWEyODVlZGI5YmRkZjU3NDE3ZWIwMDVlMjk0MzY3MzZiZWFkMyBsZWdhY3ktdHJ1bmsKKzQyNDgzIDE4ZjI3MmY1MzY5OTEyOGE1YjIwOWY1MDczN2NlYmIyZWFkZmMxNGUgbGVnYWN5LXRydW5rCis0MjQ4NCAyNDc1ZmU5NTc4MmQwMDU2NWVmOTQ4OTJjZGFkYTQ1YTI4OTdmNjVhIGxlZ2FjeS10cnVuaworNDI0ODUgODJiYmQ1ZGUwMmYxYzg4Njk4YjdiNDNkZDU1NDY3NjExYjI3OGVjZCBsZWdhY3ktdHJ1bmsKKzQyNDg3IGM2YmQwMWM3YTU2OGM1MDZjZTA5MzUyMDIzYjQyMzk5MmE5NTI1MzkgbGVnYWN5LXRydW5rCis0MjQ4OCAyMTBjZmU5ZDMwNzc0MTI4NmYxYmZkZjkxMzFiOTMwMTlkMThkOWI2IHJlbGVhc2UyNC1tYWludAorNDI0ODkgMGQ1ZjgwNzdiZDI0MTk1YTA4YmMxNTUzODdhNGU0NDM0MGMzMTZlMSBsZWdhY3ktdHJ1bmsKKzQyNDkwIGExYjMwZmNkOWUyOGViODQ1ZjFjYTM0YjZlZDFhZmZlNjg1OWM0YTUgcmVsZWFzZTI0LW1haW50Cis0MjQ5MSAwNWVlMDZiN2I1NDczNzAwZGRhYzU3OWY4ZmI5ODFlNzRiMDJmZWFlIHJlbGVhc2UyNC1tYWludAorNDI0OTIgYmQ3ZjJkOGU4ZGVhYmJlMDQyNWQzZDQxNGEwZmNhYjgzNDViZGU4YSBsZWdhY3ktdHJ1bmsKKzQyNDkzIDc4MTY1NGJlNTVlZjBjOGRlM2E1OTgzYjE5Y2ZkZTEwODEyNGY0NGYgbGVnYWN5LXRydW5rCis0MjQ5NCBjNmZiYTQ1NjIyN2I5NzNmZDI1YzZhYTBkYWNmMzljM2IxMDA4YzVhIGxlZ2FjeS10cnVuaworNDI0OTUgZTU3Mzc3ZjBhMTY3ZjE0NmQzYzJlYzIzNTM4YWZkYWFhODJhOGM3YyBsZWdhY3ktdHJ1bmsKKzQyNDk2IDM4ZjRiMDk4ZWE2OTBjOTVjN2Y2MzA1NjY0ZGIwMTI5YWYzYWI1NDQgbGVnYWN5LXRydW5rCis0MjQ5NyA5ZDk3YzgzMzhkNGMyNGMzMDIxYTViNjIzNTczZjQ2MTQzZDllZGI4IGxlZ2FjeS10cnVuaworNDI0OTggYzU4ZTc5YjJjYTA1ZWI5NDQ2YTM3Y2NkMTMxOGU2MjFmNjMwNTZkNyBsZWdhY3ktdHJ1bmsKKzQyNDk5IGU4YTQ5ZWI4NTE5YzM1NjU5YjgxMjhkMDhjZjE4ZWJiZTVjYjRkMGIgbGVnYWN5LXRydW5rCis0MjUwMCAyYzE4NzBhYmI2Y2U1NmRkNWNjZjIzYWY5N2E4NTY3ZmRmMDQ0ZDRmIGxlZ2FjeS10cnVuaworNDI1MDEgOWMwZmQ1ODY0NzVjMTcwNjQ0MjcwOGZhOGVmYjc2MWZiZWZmOTA5MiBsZWdhY3ktdHJ1bmsKKzQyNTAyIDk0NmNmNmQ1OGZkMTE1OTU3NzM3YzdiMGRlYzNhYWYzMzQ4OTI5ODAgbGVnYWN5LXRydW5rCis0MjUwMyBmZTRhZTBjNDE3YzdiMjk2NjZkYTZhNjUyNGRjMTNiY2Q3NzE1ZmI0IGxlZ2FjeS10cnVuaworNDI1MDQgY2FiMzZhYWVlMmUzZDU3YTUyOTE1Zjg4YjllZTQ1ZjczNWUwYThiYiBsZWdhY3ktdHJ1bmsKKzQyNTA1IGY2ZDZlNTIyMDgyM2UxNmE0ZjYwYTU5MzBlMTZhMGMxNWFmYzJjZDggbGVnYWN5LXRydW5rCis0MjUwNiAxYTk4Nzk4YTRiMWRhNzIxOWM1MzQ4OTExNDA0OWQwNGU0NDJmMjkxIGxlZ2FjeS10cnVuaworNDI1MDcgM2E1ZjcxZDZiYmVlOTQxMTFlNzg1NzA0YzAyMGJlZTkwMzA1ZTBiMiBsZWdhY3ktdHJ1bmsKKzQyNTA4IDQ2ZWM5NDhjYmRlOGY3OTY5ZjI3NzhjNzQ2ODY2ZTdmZjZkMjUxMGUgbGVnYWN5LXRydW5rCis0MjUwOSAwNjcxZjNjNDYyZDUwMDY4ZTRkZjI4OWI0Mjc0ODRlNjk0N2U5MzQ5IGxlZ2FjeS10cnVuaworNDI1MTAgNGQ3NjUzZTVjYjNiY2FhYWEyOTZlMWEwMzY0MGNkMzJmMzViMWU1NCByZWxlYXNlMjQtbWFpbnQKKzQyNTExIDk1MjNhOTQxNWUxODEwZTEyZDY5ZjMyZDA4NWE0YzhiNDgyOTA0M2QgcmVsZWFzZTI0LW1haW50Cis0MjUxMiBkY2Y2MjExM2MyZTMyYzFjNTEzZTliNzZlZTQwMzRhZDRkYWQ2MzA5IGxlZ2FjeS10cnVuaworNDI1MTMgN2QyOTJjYmM3MTNhYjBmZTk5ZTkwNjJkYjllMjEyOWZlMTg2NTEwMSBsZWdhY3ktdHJ1bmsKKzQyNTE0IDM2MWM2NThhNTVlNmUzMWEzMGFlYWZkYTI2ZGY4ZWJjYTQ5MTJjOTEgcmVsZWFzZTI0LW1haW50Cis0MjUxNSBjMzZlMzdhMThmMWEzOTY5NGIyNTFlOTNiNWVmMDg5YjQ0OGM0MmMwIGxlZ2FjeS10cnVuaworNDI1MTYgYTlkNmIxYWVjMDk2M2I0Y2NkOGUzY2E5YzI0YjZmOTRkYmE0NTZiZSBsZWdhY3ktdHJ1bmsKKzQyNTE3IDZkM2JhMDA0ZDVlNTk3MWIwZTQ2OGQ1OWM2ZmJjOGVlMTE0YTcwOTIgcmVsZWFzZTI0LW1haW50Cis0MjUxOCBiNzY2ZWQwM2Q0MjU2YTZlZjRmN2Q0OWQyYzFjNDAyNGFhNzliY2NiIGxlZ2FjeS10cnVuaworNDI1MTkgYzZmZGU4YTNiOWRmOGEwNWViYTY2YjEyYWRkYzM0NzQ3YzE4ZDA0MSBsZWdhY3ktdHJ1bmsKKzQyNTIwIDRiNGVhMzhkYTk4ZWQzMTk4NDY2MzBiOWZmMWFmMWY3MTliOGUzMDUgbGVnYWN5LXRydW5rCis0MjUyMSBkMDA4MDc1MDU3M2I2M2NkYzc3NmY5M2UwY2QyYzYzMjk2MWIyYmIwIHJlbGVhc2UyNC1tYWludAorNDI1MjIgZDExMmRhNzk2NGQ2MjlhMmEyODU5MmE2MjJjNmIyMzk4NWRhYzFiMSBsZWdhY3ktdHJ1bmsKKzQyNTIzIGZmOWFmZWIwNWIzNDI2NzRkYTc4YmQyNDk1YzI2ZmFhZjM5YTUzOTkgcmVsZWFzZTI0LW1haW50Cis0MjUyNCBiZGRjMTNkNTdiODgyZDJmZWUyYjMwYjUzMzNkOGEwYzQ1OGZiNTY3IGxlZ2FjeS10cnVuaworNDI1MjUgMWUzOTY4ZmNhYzY4MTllZTQ2NTAxYzExNzYxOWNmYWFiNDNiYjkzNCBsZWdhY3ktdHJ1bmsKKzQyNTI2IDhhNmZhZWQwYWYwNGI1Yzk3MzE1MjkwMWQyYjRkOTk5ZTc0MzY3NzEgcmVsZWFzZTI0LW1haW50Cis0MjUyNyBkNGUxNzYyYjhlMTUzNDBmZmNhMWU5N2Y1ZGY3MTJkNDllMmY1OTYwIGxlZ2FjeS10cnVuaworNDI1MjggMjg0MTNjMDgyYzA4NzYyZTBiNThhNTE4NTViNjAzOGExZThkMDFjOCByZWxlYXNlMjQtbWFpbnQKKzQyNTI5IGViMDk3NzkzMmUyZGU4NjVlZjUyYjc0ZTdkZTU3YzBhOGIyYzUzNGIgbGVnYWN5LXRydW5rCis0MjUzMSA0OWQ5YzEyMDM1N2FkMTAxNWY5YjFmYjVlMWVmY2MzZWU3NDNmMjc5IGxlZ2FjeS10cnVuaworNDI1MzIgNGQ5ODhkZGE2NDc4NjQ0YjkxZDYxZjNkYTNjOWFiYjIyNTk5NmVhYiBsZWdhY3ktdHJ1bmsKKzQyNTM2IDIwYzhmYTFlMDY2ODM4ZjA1OWFkZGRkNThiOWE5ZmU0NjExYmNmYWYgbGVnYWN5LXRydW5rCis0MjUzNyA5OGY2YjU5YTZlMGEwOWRhNmI2Zjc4NjFjNDRlZjhmYjEwMmIyNjRiIHJlbGVhc2UyNC1tYWludAorNDI1MzggMTQ1ZDVmYzlhNmE1MWEyNjQzZjVkZTEyMWI1YTA4MGU3MGIyMGUxZCBsZWdhY3ktdHJ1bmsKKzQyNTM5IDRlNTBhYTdiYjFiNTJkMWMxM2UwMzU1NDVlYWYyYjZhZGFjZmU1MWMgbGVnYWN5LXRydW5rCis0MjU0MCBkMGViY2I0ZjYwMzEzOWIzNDAzOWE1ZTJlZGQzZTEwNTJjMDhhZTY1IGxlZ2FjeS10cnVuaworNDI1NDEgNjljMGJlYzExMDBhYzgzYzc5ODM4NWExYjUxODJiMjI3YTAzNzg2ZSBsZWdhY3ktdHJ1bmsKKzQyNTQzIDVmMmNiNDQ1ZTFjNTQ5ZWRkOWQ1YzJlNmI3ZjJiNmQzZDA5YzEwNDcgbGVnYWN5LXRydW5rCis0MjU0NCBlMGMyYWJkNTgxYzViMGI1NWU0MjZjZmY5YjQwOGU0MWViZjM4NDliIGxlZ2FjeS10cnVuaworNDI1NDUgMzZhZTNkOTI5ODMyZDRmZjhjYWU3M2M2OTQ2YmY1NGFkZDljYzU4YiBsZWdhY3ktdHJ1bmsKKzQyNTQ2IDJjOGRjMzU4MWI3MGYyZDExYTQ0ZWM0OWE0ZjIxMzQyOWMwZmM3ZGQgbGVnYWN5LXRydW5rCis0MjU1MCAwOWQxOTM3ZjJkYTg5NWZlOGRjNDBjNTdkZmNhYjYyMzIxNTUzMWQ3IGxlZ2FjeS10cnVuaworNDI1NTEgODFmMWIwZGRjOGExNmYxYWEzZTYyZTBhZmNhY2MwY2JkNjA1YTQ1MSBsZWdhY3ktdHJ1bmsKKzQyNTUyIDVhODM2OTg2MjA2ZGQzOTBkYWE2YTE1NGUwZTg4MzdiMDdhM2I4YmEgbGVnYWN5LXRydW5rCis0MjU1MyAyMTYyMjE2MTM5Yjk1Njk1NDMyZTE3NDg3OWFmYjg5OTg1NDZiYTY0IGxlZ2FjeS10cnVuaworNDI1NTkgOTExYzdmYTQ5NWIyNDA0NzA2ZjhhYTQ1Y2NjZTBhOWExNGY4YWFhMCB0aW0tb2JtYWxsb2MKKzQyNTYwIDE0M2MzNDhmZjcxNzY5ZDYwYjBkYWY0YmVmMjA3NDE5ZmUzMzI1ZTUgdGltLW9ibWFsbG9jCis0MjU2MSA0MTI3NjE0Zjc1MmExZjQzNmM5OWVjNzlhYTg0YWM2OTU2MjdjYjBhIGxlZ2FjeS10cnVuaworNDI1NjIgOTU4MDA4NzViZDEyNTk0YjMwNDgyYzlmOGIzMjA3OWFkYzY5ZjE2YSBsZWdhY3ktdHJ1bmsKKzQyNTYzIGUxYzNmZmU5MjZjMTE1NjJkYWNjNDc2ODA4YzAzNDljZTQwZGE4Y2QgbGVnYWN5LXRydW5rCis0MjU2NCA1ZDgyODcwM2M2YTE3MzJhZGQ0NDIwMWQzZjNlNDJkODcwNTJiNDgyIGxlZ2FjeS10cnVuaworNDI1NjggNjI1NjRkYzdiZDcyNjJkMTAxMDg0MWMxNTBlYjA2NmJhNzA3M2JjZiBsZWdhY3ktdHJ1bmsKKzQyNTY5IDhkYjk4NWI0MDg2ZTE4Y2VlNzNkNmM5MTc0MGUwMzUwYjM5ZjJhMTcgbGVnYWN5LXRydW5rCis0MjU3MCAyZmRhNGQxNTBjM2RiNDZmNjQ3MDI5YmI3MTc1MDFlZDVhMThhNWEzIGxlZ2FjeS10cnVuaworNDI1NzEgNmI0MjkyMGFjY2M5MjY0ZjdjYWJmZjVjMzg2MTcyYzIyNGYzNDVlNyBsZWdhY3ktdHJ1bmsKKzQyNTcyIGM2NTA2NDQyZGZlMDE1MjJlZDhiZGMxODZiM2E5MTMxYWVlMDE4ZjMgcmVsZWFzZTI0LW1haW50Cis0MjU3MyA5MmNlOGJiOGIxMmE3ZWI1ZjRhOTMyZDZhNDNiZGY5ZTJlZDhlNDg2IGxlZ2FjeS10cnVuaworNDI1NzQgYzk5NmExMjIzNGMyNTljMGZjYTBmMzUyODhhYzlhNGE0MDVkYzk0NCBsZWdhY3ktdHJ1bmsKKzQyNTc1IDM5MjRhZmNmOTVlN2ZkOWI1MTNjMWM1NzBjYjcyMTVlNTcyYWM5MTMgYXN0LW9iamVjdHMKKzQyNTc2IGM5ZmJiMDY3YzJhNmM5MGUzMGFiOTE3YzFjODYwZmUyMjU0ODllYTUgbGVnYWN5LXRydW5rCis0MjU3OCBiYjQ4MTE1ZTZkYWIzMzUzMDk2YzJhMzc2NDIxMGJlNGU5ZTM0ZDYzIGxlZ2FjeS10cnVuaworNDI1NzkgM2MwYjI2MTEzZGY2ZWQ1YjM2YTYwNjQ5ZDJmZDMxMjYyZTg2ODFhNyBsZWdhY3ktdHJ1bmsKKzQyNTgxIDcxMGNiZGQ0NzhhODUxYjM0MGFjZjRlZjM4MTBlOTcwZWNkNWM2MzMgbGVnYWN5LXRydW5rCis0MjU4MiAyYWI5MjcwZWYxOWFlYWY3ZjBlYThmNDhjNDUxMDY2YjI2ZDU0NDQ0IGxlZ2FjeS10cnVuaworNDI1ODMgNTc4OGUwYTY4OWUyNTc3ZThhNWUzMDZmNDg4ZDZkMDhiNjNiYzc0NiBsZWdhY3ktdHJ1bmsKKzQyNTg0IDdiZmJmYjJlZjRlMjE0NWE1OTM0MzgzYmRkZTg2MDIxMDFkNTAwYTkgbGVnYWN5LXRydW5rCis0MjU4NSA1OGE4NDUxZmY3OTU4N2UzZTc4YjI1NDYwYjVkMGJlZmUwZDQ3MTk0IGxlZ2FjeS10cnVuaworNDI1ODYgNjE2NTkyNzQzMWQ2YTY4NTUwOGZkZTQwODZlNjcxZTVjYWNkODJkMiBsZWdhY3ktdHJ1bmsKKzQyNTg3IGRiNTcxZjljYWQ2Zjg3YmYwZDkwZDMxNmJkYTMzMmIyMDc0MGY4YjIgbGVnYWN5LXRydW5rCis0MjU4OCA4NDEwZjA2YWQzNmUxODg1OTU4OTQ5ZDE5NzU4ZGY0NzYwODY3YmJmIGxlZ2FjeS10cnVuaworNDI1ODkgOTUwNGY3YWMzNjY5YzI4MWNlMjE0ZTE4NzlkYTZmYzBlNTk1OWRiMyBsZWdhY3ktdHJ1bmsKKzQyNTkwIDI5NmNkYTliM2UyZjgwOWY0NTg4ODhhM2RlOTc5NDNhZDMxYjkzYTAgbGVnYWN5LXRydW5rCis0MjU5MSA1ODQ2MzdkODMxZTNmY2JlY2RhZWQyNDgzZTJlMGVlZmYwYjI2Nzk3IGxlZ2FjeS10cnVuaworNDI1OTIgNmMwYjZjMWNkMWY0NjlkNTk0OTQzYTI1NWM0MDJlZWRhOGU3MGI1OSBsZWdhY3ktdHJ1bmsKKzQyNTkzIDJkZGVhNTUzNWYwODY0OWU1NjVjYjc0MjIwOGQ0ZTc3YjEyZDUyOWEgbGVnYWN5LXRydW5rCis0MjU5NSA3ODBiN2FmZTYxNzg1YWY3YzE0N2E5YjcxODViMDI0ZmM1NjFhYjM4IGxlZ2FjeS10cnVuaworNDI1OTYgZGJhNjQ5NDczNWQwMmE1NTM5MmU1Y2VhMTY5MDI4NDQxNzBkMjdkYiBsZWdhY3ktdHJ1bmsKKzQyNTk3IDY3Yzc0ZWZhZDhjMjNmN2ZjYTQ3ZjQ4NzQ4MmUwMDRjZmRiMGMwMWYgbGVnYWN5LXRydW5rCis0MjU5OCA1MjMwYzRjMjllYmIyNzg2NDNlN2VjMjA2NzYyNGVkODJlYTgxZmZjIGxlZ2FjeS10cnVuaworNDI1OTkgYWM0OTg5NTNjZTU3OGZhYTkwMjcyMjNjN2UyMzI1ZWZiNGYyYzM0YyBsZWdhY3ktdHJ1bmsKKzQyNjAwIGUxMzkxOTEwYjAyNjUyZDgzNGUxMTg0NjAzOTRjNjBlOGU5Yjc1YWMgbGVnYWN5LXRydW5rCis0MjYwMiA1NGViNWIxZmIzNjMyZWM4YmFjM2NjNGUxNDQ0NmY0OWU0OWZhNzc1IGxlZ2FjeS10cnVuaworNDI2MDMgZTlmMGRiNDI5ZjJiYmFlM2JlMTY1MGY3YWNmMjJlOGZiZGMxYjE0ZiBsZWdhY3ktdHJ1bmsKKzQyNjA2IDUyY2JjNDQ3ZTFjOWZiZWU3YWY1MDJmZDJjZTc2MGQ0NWQ2NGExMDQgbGVnYWN5LXRydW5rCis0MjYwNyBkYTJhMTA0OTIxNWQ2MzE4YmYzZjdmMjFkMjE0OGQ0ODI1M2JjNzc5IGxlZ2FjeS10cnVuaworNDI2MDkgMGJlYmViMzkzMDQ1NDMzZDBhZmM0MTUyOTA4MDgxZTcyYjZmOGEwMSBsZWdhY3ktdHJ1bmsKKzQyNjEwIGI4NzNlYzY3ODU2MDUxMzZjM2M2NGU0Mzk1ZGE5ZTQ4MDM1MTI3NmIgcmVsZWFzZTI0LW1haW50Cis0MjYxMSA4NjExZjM5Y2Q4MmJmYzJhZjNkNDhjMTlkMTQzZTY0YmYxMmU0NDQ2IGxlZ2FjeS10cnVuaworNDI2MTMgN2QwZjEyMzQwYzllNGY1OGI2MWMwNjhlOTFjOWE0MGUwNDY5ZWM4OCByZWxlYXNlMjQtbWFpbnQKKzQyNjE0IGUwZmVhZGM3YWZmYjcyYmY4MWNkNWExYWQxODU0NTgxNjI2Zjk3YzMgcmVsZWFzZTI0LW1haW50Cis0MjYxNiAxMTQ4NGE3MmQ5NjZmZDg4ZWJmZjlhNzdlYjRjZTZhZWVkMTAzMmVmIGxlZ2FjeS10cnVuaworNDI2MTcgYWNhYTc5ZTczMTMzM2U1MmQwYTBlNTQyZDA0YmM1YjZkMWZiM2Y1YSBsZWdhY3ktdHJ1bmsKKzQyNjE4IGRkM2U1YTk0NTk2MmMxZWM5ZDgxMTU2MmRjZTY0ZWNmNzZmMDNhOGMgbGVnYWN5LXRydW5rCis0MjYxOSAzMDE3MTA1MzVkMTUwMjc0ODFjMGNiY2RkMDdkOGIxYWE0NzMzYzMxIGxlZ2FjeS10cnVuaworNDI2MjAgMTgwZGJmY2YzYmVkMDY1MDU5ODU2MzI3OTQ0MzA3MmM2NzEzZTdiOCBsZWdhY3ktdHJ1bmsKKzQyNjIyIDAxNTFhMDIzNzRhODJlMjUzYTM1ZjU0MjJlOGNhYjgyMTA1MjVkYzIgdGltLW9ibWFsbG9jCis0MjYyMyBkZmFiMjJhZTQ4ZTM2N2Y0MDkzOWUzNTEwMzI0ZTFiNmQwYzBkZWI4IGxlZ2FjeS10cnVuaworNDI2MjQgYjZkMmY2ZmQzZTExNmI5YjlmZTk1YmM5ODJhYzc2M2MzNTlmZjEwMyBsZWdhY3ktdHJ1bmsKKzQyNjI1IDdiNThmYmRlNWU1ZGZjMWJkZDM5ODEwYzY3NWVkNDBhYzQwMWQzZjUgdGltLW9ibWFsbG9jCis0MjYyNiBlMGE3NzAxMGQwMzNiYzkzMjJhNzdjZGQwZWUyNWJhN2QyNzE1ODI1IGxlZ2FjeS10cnVuaworNDI2MjcgNzhkZTVmNmIyZjY3YjNlODUzOTM4OGI3N2NhZTBlMzI0ZWE3ODQxYSBsZWdhY3ktdHJ1bmsKKzQyNjI4IDMwNTY3YmU5MGM4NTEzMTFlOTJhZDEwMGJjMTkwY2RmYzQ4ZWE5YmEgbGVnYWN5LXRydW5rCis0MjYyOSBhYTA0MDQxMGZiOWEyZGY5OWQwYTM4M2IzOGRiNmY3ZWI1NDU2ODJkIHJlbGVhc2UyNC1tYWludAorNDI2MzAgMmEyZDQ2ZDE5MjlhNDA2YWZlNjViMTNlM2Q3YWMzOGMyMzYwZWQ0MCBsZWdhY3ktdHJ1bmsKKzQyNjMxIGUzMjQ4ZjFmYzU0ZGI3MThhOTQyMzg0Mjc5YmY0OGQ1NmJlNTI1ZjkgbGVnYWN5LXRydW5rCis0MjYzMiAzNWRiYmMxYWI0NDg3ZGZmODc2NDk4NzgxZjM4ODljNDJhOTM0MzkyIGxlZ2FjeS10cnVuaworNDI2MzMgYzNlMjg0MDk2ODZjYmUyYzNhNjc5MDBlYmIwZGI3ODFkZjVjZWVjMyB0aW0tb2JtYWxsb2MKKzQyNjM0IDY2NDVkYjA5NDk0M2RkMmI0NDRmYzFlMDFkNDgxODc2NzgzYjgzZjIgdGltLW9ibWFsbG9jCis0MjYzNSA5ZjNlNThkYmVhNjMxYmM2NjUzNTk0MDc1M2E1Mjg4OTY4ZDYyNTIxIGxlZ2FjeS10cnVuaworNDI2MzYgM2Q2OGYzNTJjMmZmMDFmMjA3ZDZhOTFjY2Y0YzcwYzBiNzM2Y2M5ZiBsZWdhY3ktdHJ1bmsKKzQyNjM3IDhmZjI4ZmNmODcyZTBhOWI5NWM2YzlhYWIwNWEwNzc0M2NmNjhhMTEgbGVnYWN5LXRydW5rCis0MjYzOCBiNmIxYzQ0ZDkxMTA1Mjg1M2M3Y2RmMWY3NDNlODNlN2JkZGZmNTQ0IGxlZ2FjeS10cnVuaworNDI2MzkgY2Q4NDdlNzI2ODM3MmU0ZTdlYmJkYjA0MWYwMTlkNjBjZGEyNzliOSBsZWdhY3ktdHJ1bmsKKzQyNjQwIDgxYmUxNWI4NDI0NDUzOTgyNmFlZjFlNmJiYmMzNjcwMDQ4MTY3YjggbGVnYWN5LXRydW5rCis0MjY0MSBiZWE5NDc1NDQ0MWIxYTcwYjcxM2ZlZWVlYzgxZTZjNmVlOTllNDI3IGxlZ2FjeS10cnVuaworNDI2NDIgMjU4OTkwMjQyODk4ZTZjNjAzZTczNjRmYTU4MTRjNzI4YTg0YmY0NyB0aW0tb2JtYWxsb2MKKzQyNjQzIDNjMDdiNmM1Y2Y3ODhiN2JkMGM4ZmVhOGE5OTRhNGM2YzkxNTA4MDMgbGVnYWN5LXRydW5rCis0MjY0NCBmMTUzMDJkOGIyZGU1OWYxYTE0MTI0MWRlYTgwM2NiMmRlZGExZGI3IGxlZ2FjeS10cnVuaworNDI2NDkgNWMzNmMyMjJlN2NhNTMxMGU1Y2M4YjhkYjI4M2JkNjY5ZDFlMjRkNCBsZWdhY3ktdHJ1bmsKKzQyNjUwIDk3ZWU3YjUzMzY2NDgxNzgwYjZmMzMxNTUwZDY2NGFjODYzZjY2ODIgbGVnYWN5LXRydW5rCis0MjY1MyBjMzQ0NWIxY2YxYmYxZWQwNGRiZDFjMmRmNWE4MTUxYjQxMDJkMTc5IGxlZ2FjeS10cnVuaworNDI2NTQgNDI5MmI0MjY4M2M1ZmNjNzU1NDMzOGJiZmQ4NDdiYjUzZTkxYWM1MiBsZWdhY3ktdHJ1bmsKKzQyNjU1IDcxZDg3MzA1NGQyOWVkYmQyMjAzMmM4YzkxNWNmMGVlY2JiOGI1YzMgbGVnYWN5LXRydW5rCis0MjY1NiBhZTM5ZmNlMGY5YTE2ZWMwYTU4OGQ3MTg5OWRkNDZiNzdkNTE0NjEwIGxlZ2FjeS10cnVuaworNDI2NTcgNDVlNmY5MDE5MDJjYTU4NTdlZWU5MWFiYTA0OGRmN2RkNTYwMTg2NCBsZWdhY3ktdHJ1bmsKKzQyNjU4IDY2ZmM1YjI2Mjg2OGJlZTdkMjMxYzc1OTg0NmMxZmVkM2NkNWVkZWMgdGltLW9ibWFsbG9jCis0MjY1OSA5NDJhZTI1Y2IzOTE1MDQwOTEwMmQ0ZDY2NmUzNzMxNDg5NWE0MmQxIGxlZ2FjeS10cnVuaworNDI2NjAgNDAyZGUwZmVmMTE2ZDhlN2MxNGMwMmM1NmRkZTBjZmViNWY3NGI1ZCB0aW0tb2JtYWxsb2MKKzQyNjYxIDExNTk2MDY0MGYyNWRlNWIwMWQyMjliMzIyYjc5ZTc1ZjhiMjBhYTYgbGVnYWN5LXRydW5rCis0MjY2MiBmN2I0NzI2YWRhNmM1MDljMDM5ZjY3NjJmZTBhYTFhYjMxNmIzYmYyIGxlZ2FjeS10cnVuaworNDI2NjMgYzQwYTMzY2E2NWI5MTYzYjlkODJkYzkzZWI5YjE3MmYzNmMzYmJlZSBsZWdhY3ktdHJ1bmsKKzQyNjY0IGU1ODBjOGIwZGNlYWI0MGViZjI5Zjg1ODY5YTQ2NWM0OGUwYzZhZmYgbGVnYWN5LXRydW5rCis0MjY2NSA1ZjM4MjJjMmU3MzEwNGJiZTRmOWQ3Y2EwODFiYjBiMzAzODUyNDNhIGxlZ2FjeS10cnVuaworNDI2NjYgOTkwNjZiZWExN2Y4ZjAzMmU4MDc4ZDVhZDc4YzZhY2ViNzRmYzBkNCBsZWdhY3ktdHJ1bmsKKzQyNjY3IGJiZjE2ZmQwMjRkZjdiY2ViYzBmNmZlODgyYjdjYzhjZjk3NjBiNTYgbGVnYWN5LXRydW5rCis0MjY2OCBjMDY2MTNlNTNmYWRmMzc0OWI4OTFlOGZjZmQ0YWNmY2U4ZTI5YzQ2IGxlZ2FjeS10cnVuaworNDI2NjkgZjJhODk1ZDMzYTVjYWU5MTNmNmVkYzgzYTA1MTVhMGI5NzU4MTI1NyBsZWdhY3ktdHJ1bmsKKzQyNjcxIGQ2Y2JjNzFiODAxMDkwOTlkMmQzNjc4YmJhNmU4ZTkyYTYzMmIyOGIgbGVnYWN5LXRydW5rCis0MjY3MiA4NzcwNjQzOGRjM2M0MWJhMjdjN2RjOTRkZDEzNTYyMjExNzdmMTBkIGxlZ2FjeS10cnVuaworNDI2NzMgZmQ1NDk3YjY0MjA5YzI0MTE3YTQ3Yzg2ZTNlODc5NThmZGQ5OGM5YyBsZWdhY3ktdHJ1bmsKKzQyNjc1IDhhMmE1ZjcxYjhiM2Q3ZTI3MDA2YTEyMDQ3NDAyNGM5OWYzOTliOGQgbGVnYWN5LXRydW5rCis0MjY3NiA2NTgzYzg2ODgxN2FhYTRjOWI5Y2UzN2MzNWRjMTNlZmI3ZTEyZWQ1IGxlZ2FjeS10cnVuaworNDI2NzcgNGE0ZTBjNThkNDM3ZTg3ZjBjMzE1OTk5NWNkN2ViNThlMGE4MDNkNSBsZWdhY3ktdHJ1bmsKKzQyNjc4IDQxNzgxNTA2MjMzNzhhMWU5MTUyNWNhY2M0ZDlhYTc3NjI1NGNjYjAgbGVnYWN5LXRydW5rCis0MjY4NSBiYmNlOGVjMmZmODFkMGRjZjk4MzcxNjFmMTY4ZmJlMjA0NzVkZWFkIGxlZ2FjeS10cnVuaworNDI2ODcgOGI2ODUxMzgyZTI3NTM1OGZhOGIyOGM1MmVmN2ZlYzc5MjJiYzQ0NiB0aW0tb2JtYWxsb2MKKzQyNjg4IGZhOTJmZTE1MjUxYTA1MTA4NTdiMjAyOWU2ZmQyYjc1YzE5NTk2NjIgbGVnYWN5LXRydW5rCis0MjY4OSA0M2I5ZDVmMDkwMWJlNjYyODQ0NWY1YWE1MzA4YzczY2Q5YTA4MGNlIHRpbS1vYm1hbGxvYworNDI2OTAgNDNjNzA0NjBjY2Q1OTBkMGI1OTQ4ZjQ1OGRiYjRjODFhZGZjMzFmOSBsZWdhY3ktdHJ1bmsKKzQyNjkxIDc5NmQxNTBlNDVhOTRiZmYxMjA1ODc0MjAyMzM0OTdiN2M3MGI3ZGUgbGVnYWN5LXRydW5rCis0MjY5MiBhM2U0YmQ0NzVhZDdmNzQ4NTg0MGUxM2E0ODMyZmI0ZGQyMjlhMTIwIGxlZ2FjeS10cnVuaworNDI2OTMgYzA5ODJiODE1NWM2MmQzZmY0NWE4MjFmZDZhZDMxNWI1NzIzYmUwZiBsZWdhY3ktdHJ1bmsKKzQyNjk0IDY1OGY4ZmYyYTQ0MmQwMTgxNTZlNTU4MWFjYjE5Nzc4YzZmMGU0NjMgbGVnYWN5LXRydW5rCis0MjY5NSAzMTA1MWE3MGIyOTcyZDhmMmNlNDBlNDg5Y2VkZWE5NDk0NjQwMGRiIHRpbS1vYm1hbGxvYworNDI2OTYgZGJmOWNjNmMzNmViZDcxY2JiZDkyMzM3ZmMyM2JlYjY5Yjg4MzE3MCBsZWdhY3ktdHJ1bmsKKzQyNjk4IGEyMTM4ZGZiNTk2NTI2NDk0NTUyNmUwMTJjN2Y1ZTI4MWVjMjk3ZjcgbGVnYWN5LXRydW5rCis0MjY5OSAzZmZjMWUxZDJmNTc2ZjY0ZjZkNzE4MWE2MzM2NTMyNmUwYWNlZmYwIGxlZ2FjeS10cnVuaworNDI3MDIgOTIyNTM5ZGJkYzRlNWQ5Yzg2YzUwZjUzOGJmMDMzZmI3ZDc2MzFkMSB0aW0tb2JtYWxsb2MKKzQyNzAzIGU4MjFiOTM2ZjNmYTc1NmExNzY4Y2U2M2ZhNDVhY2JlMGI4OWM4NjAgdGltLW9ibWFsbG9jCis0MjcwNCA4ZGY1NTAxNGM4ZmIwY2QyNzE0YTMzZGEzYjQxYjA4MzNhZWViYmE5IHRpbS1vYm1hbGxvYworNDI3MDUgZWY1MjQ2Y2U4ZmU2NTYwMGYwZGZhNWFhOWFmNGFlYWZmNDYxOGJlMiBsZWdhY3ktdHJ1bmsKKzQyNzA2IGRiYTc3MDkyZDQ2ZWJhZjJiYjhmMjQyYmMyYWQwM2Q4NzdiNGY1NzkgbGVnYWN5LXRydW5rCis0MjcwNyAwZjcyODRjNDkxYTMxN2JkN2ZmNjQ5ZTc2Y2VhYmY4MTE1MGE3NjJiIHRpbS1vYm1hbGxvYworNDI3MDggYzI5NDJjZGQ4OGIzMjUwN2Y1NWEzOTQ0NGJiOGQ4MDE5OGYyNjA2NiBsZWdhY3ktdHJ1bmsKKzQyNzA5IDBiNWU5YWNlMmU4N2IzODY4MjUwZjNkZDM1MTQzODVjOWEyZTNkMjIgbGVnYWN5LXRydW5rCis0MjcxMCA5MmJhNzI0ODRmZjM4NDUyNDhlZTk5N2IxNjlmZDNhNmUwNjUwNTdlIGxlZ2FjeS10cnVuaworNDI3MTEgOGUwNGRlMjQ4MGU0OWVhODQ2NzZjMThhYjNmZDY1ZjdhYzY0ZDlhMiBsZWdhY3ktdHJ1bmsKKzQyNzEyIDdiNjZiMmRjYzVlOTZhNjRhMThkZjIxZDEzYmE5ZjJhZjExYjQ4ZDUgbGVnYWN5LXRydW5rCis0MjcxMyAxZTgzZjE4MmI1ZjlhZjgxMWQ0NzQ4ZWQ5MWFlYWZkMzZiNDUxMzE0IGxlZ2FjeS10cnVuaworNDI3MTUgMmYxOWI5ODFhYzI0N2MzMjNkMDQwNDE5ZWI2MTdjZjMyZWE3YTVlMCBsZWdhY3ktdHJ1bmsKKzQyNzE2IDMyZTJiOGJkYTUzNWI4YTY4NzE1ZDE3MjU0MzdmMzlhMzYyZmViZTAgbGVnYWN5LXRydW5rCis0MjcxNyBkMGNhNjMwMmRkM2M5OGNjZjA3MWQ4M2M2MWJiYjdjN2Q4MzRkY2UzIGxlZ2FjeS10cnVuaworNDI3MTkgYzQxMzhhZDFlMDlhMGUzOWM3ODIzMDRlZDJkYzllODBiZDZlMWZhMiBsZWdhY3ktdHJ1bmsKKzQyNzIwIDNlMTkyNzFlZmM0NmU2OTI2MzhjYmQzNjFkN2UxMGVhNTJhMTQ2NTEgbGVnYWN5LXRydW5rCis0MjcyMSA4M2I4NjBhY2ZlOTVlNmYwMTdjY2Q2MjAyOTNmNzU0MzgwM2U0NjlhIGxlZ2FjeS10cnVuaworNDI3MjIgYTM2NmRmYzcwMzVmZDE5MjBjMWFhMDNiMjdmMzU0N2FmMTllNDhkYSBsZWdhY3ktdHJ1bmsKKzQyNzIzIDNkZDkyZDk3YTY3ZmY4MjFkZjJlMzc4MTliM2NkODZlOTI4YmFhNzQgbGVnYWN5LXRydW5rCis0MjcyNCAyMmM1MTYzMmI0NTlkNzcwMmU0YWM4NTYxNWFmYTJmYjA2NjJiNzIwIGxlZ2FjeS10cnVuaworNDI3MjUgNWU0NjNhZTcwNzA3NmRkMjg3MDhkNzY3ZDNlZjJiMmMzNGI0NDg2ZCBsZWdhY3ktdHJ1bmsKKzQyNzI3IDk1YTkyYjJiNTNlZTQ5YWM2Mzc4NmVlYTczMWJkMmM4YTU5Mjk4M2EgbGVnYWN5LXRydW5rCis0MjcyOCAwNjc0Nzk2YjY5NmNjNWEyMDYwY2JhMjMzOTZiZjNkMzk3MjNhNjExIGxlZ2FjeS10cnVuaworNDI3MjkgMWRhYTE5OWI3ODRiZTRhNjNmNTBjODA1ZjZhYjQzYTljNjc5NmVkZiBsZWdhY3ktdHJ1bmsKKzQyNzMwIGUzNjRiYzc2YmRjOGQ0NjNmNjRmYjcyM2I2YzAzNTAwMTRkYzc4NzUgbGVnYWN5LXRydW5rCis0MjczMSBkNmMzMGNlMzg2OGIxM2Q3YzlkZGQzMzdlOTY1OWZmYWU3YjJkMDMxIGxlZ2FjeS10cnVuaworNDI3MzIgYWIxYjUzZDU0OTAxYThkYTcxNjdmZWEyNGNmOTA5NzhjYzZlNDY1YiBsZWdhY3ktdHJ1bmsKKzQyNzM0IDYyMzc2MzQ1N2E0ZThmNzU3MDE2MzQ4YjFiNDY1NTUzOGU5NjUyNDIgbGVnYWN5LXRydW5rCis0MjczNSA0Y2M5NWZjZTY1ZGE3NjM5Njc5ZmU1YWJhOWE3MjM5MjI0MmFlZTY1IHRpbS1vYm1hbGxvYworNDI3MzcgZjhmZmE3Y2JmOTYwNWRlNThjYzRjZjc4N2U3N2E1ZGY1MmE0OThlOSBsZWdhY3ktdHJ1bmsKKzQyNzM4IGFmOWY5YjU5M2E1MzZkNzI4ZDJjNDc4ZGU2NmYwNTg2Y2Q1MDE0NDggbGVnYWN5LXRydW5rCis0MjczOSA2NGZmM2IyMjVkNDg1MTYxNTRkNDUxY2ZlZThjNGYwNGQ3M2QyMGVhIGxlZ2FjeS10cnVuaworNDI3NDAgMzU2MTJhMTMxYWM2MjQ4MTQ5OTgyNWRkYWMyMTAxYjlkMmFmODNhNCBsZWdhY3ktdHJ1bmsKKzQyNzQxIGE1NDk0ODE4MGEzZGUyMjllNWUxY2Y4MzVhYzAzYzViY2JkNmJlMGYgcmVsZWFzZTI0LW1haW50Cis0Mjc0MiAxYWVhM2FlY2E1MzVhNjMwY2FkNjM0ZDg0NWIyNDZiZWNjNWJkZjVlIGxlZ2FjeS10cnVuaworNDI3NDMgMTIxMWE2OGIyOGRkMzcxNzc5ZGM0MmE1ODMyNmM0N2FmMmU0ZDNkMCBsZWdhY3ktdHJ1bmsKKzQyNzQ0IGNkN2QyOTE5MTc4Yzc1NzYzNzc3ZTA5NTNiZTExOWRlNTNjNzRlYTcgbGVnYWN5LXRydW5rCis0Mjc0NSBhN2IzNjMyZDBlMDUxNTI1YmY1ODcxZmY2ZjY4NDFiZDIyMTg2ZjBkIGxlZ2FjeS10cnVuaworNDI3NDYgYTAwYTllZWY2MDYzYWNlOTk3ZmQzZTM3OGNmNWM1OWY5ZWEwNmRlNSB0aW0tb2JtYWxsb2MKKzQyNzQ3IDM3Njc5MmJmYjU3ZWY5YjgzNDBmNGJhNDdmOWYzMjVlMmY1YTJkMTIgbGVnYWN5LXRydW5rCis0Mjc0OCAyNWY4ZTZkZGU0YTNiMDk2YjA1YWIzMDczNmExZGM2MzQ2MTU2YWJiIGxlZ2FjeS10cnVuaworNDI3NDkgMmI2NTkyNjhhNzNhYTNlNjg0NTE2ODllZjQyMGQ3ZTk2YWVkMmUxZCBsZWdhY3ktdHJ1bmsKKzQyNzUwIDk2NWJiNGE1NDA5NjYzMmJmMTQ0MWRhZGM4MTM2OTYwMDg3NTRiNjcgbGVnYWN5LXRydW5rCis0Mjc1MSBkODUzYmMwNjg0N2U2NmRhNGE1ZGE3ZDJmNjA0ZmZhNWQ2MTFlZDljIGxlZ2FjeS10cnVuaworNDI3NTIgNmUyODVjNjllZmMwNWI3ZjhiZGJiMDk5MGFlYTdiMGM5M2JmOGQ1NiBsZWdhY3ktdHJ1bmsKKzQyNzUzIDU3MzIyY2IyY2ExMTE3YjdmMGQyYjRjMGRkNTQ2MDFlMGJiZDJmYWEgbGVnYWN5LXRydW5rCis0Mjc1NCAwY2M1OGRiZDg3ZmViZTE4MjBhYjM2NDlkNTM2MjFiZGJmMzk2NTU0IGxlZ2FjeS10cnVuaworNDI3NTUgYzNjNWQwNmZhYTAxZWNkMWY2N2JlYTUxNWEzZjJiNjhhYjQ1ZDY1ZiB0aW0tb2JtYWxsb2MKKzQyNzU2IGY2NjZiYzlmNjE3ZDg3MDJjNDU4MjI4ZmM2NDJhZmY4MjEzYjFlNjIgbGVnYWN5LXRydW5rCis0Mjc1NyAwOWQxNzQzMGY0YzI1YWM0OTQyYWRmNmIxNjM3MWFhNzI1ZjBhMGIxIHRpbS1vYm1hbGxvYworNDI3NTggMGUyY2Q5NGM1M2E5OGEwODQzZmVmN2JmYjIxYmQxMTk1ZmQ0NzI2YyBsZWdhY3ktdHJ1bmsKKzQyNzU5IDQ4YTI4YjM1ZGQ2NDU1NjVlYTJjMjRhMzRhNGNkMzUwZWMyM2E0YjQgbGVnYWN5LXRydW5rCis0Mjc2MCAwMmQ5YjQ3NjlhODhlODZlZGVjMmE4MzEwN2JkN2Y3OGEzOWEyNTE0IHRpbS1vYm1hbGxvYworNDI3NjEgNjA0YTEyNmY4M2MyMTRmNDA5NWQxOTU4ZDYwZmEyYTE2NjI5ZDc5MiBsZWdhY3ktdHJ1bmsKKzQyNzYzIDY4ODc5NTg3M2ZmMWNlYTE0MDhmNGYyYmY4YWQyNDMyOTg2NjVhNGEgbGVnYWN5LXRydW5rCis0Mjc2NSAxZThjYjQ3YmVhYWE0OGRmODU2ZjdkZmJjNjczZjM0ODQ2YjVjODMyIGxlZ2FjeS10cnVuaworNDI3NjYgZGY4NDNiMDdmNWZlMGE4YzMyNGU0MTA1MjZiZDYyM2NjOGUxODQwMyBsZWdhY3ktdHJ1bmsKKzQyNzY5IDg5ZDY5ZDkyMTJhMmRjYjkwZmM4NGYyYTAwZTVjZDdhMGM2ZjgyODkgbGVnYWN5LXRydW5rCis0Mjc3MCAwNDc0NzFjYjllNGQ5N2I1NzM4NzNjNzBhNDgwYWMwZDg3OWU4M2JiIGxlZ2FjeS10cnVuaworNDI3NzEgNzI4NWMzN2Q3NjMzZTRkZTNkYjU3YjRkOWY4ZDUyMTM0YzJiMzU0MyBsZWdhY3ktdHJ1bmsKKzQyNzcyIDhkZGNhYWEwOGZkZGVkM2YxZjgxZTJlNWNiNTZkNGNlY2ZkNzdjZTMgbGVnYWN5LXRydW5rCis0Mjc3MyA0MjQ4N2Q4Y2YzMzgwMDhmODE0NzMxZWMzZGQzYmNhYjM3MmIxMWI5IGxlZ2FjeS10cnVuaworNDI3NzQgMDRkMThiY2Y3NTE5ZjgyZGFhZTU5ZDhlZDJiZjkyZDgzNjdlODY1MCBsZWdhY3ktdHJ1bmsKKzQyNzc1IDUxNWVmN2RkMTZiZDk3ZDY3MjVlNjdjMjQ2NGZlYzUwNGFjNTM1MjMgbGVnYWN5LXRydW5rCis0Mjc3NiA4OGRmZDMyODFmNzFkN2NhZDUxNjgwNzk2Y2RiYzgwODRlNTYzZmZmIHRpbS1vYm1hbGxvYworNDI3NzcgYmQwNjQxZDYyNDYyNTM3ZWQ0OWVmM2U4Nzg4Mzg4NzU0MTFkZjA5NiBsZWdhY3ktdHJ1bmsKKzQyNzc4IDhlYWY5NTMxYTJkZWQyOTZkMDFiNjQ1ODdkYjU5ZWNhNzkwN2NhZjkgbGVnYWN5LXRydW5rCis0Mjc3OSA2NTgyYTQ0OTBkMWFhYjE1YzVhYzRlNzY3MzBiZDBiMzcwMGQzZWVhIHRpbS1vYm1hbGxvYworNDI3ODAgYzU1MmYyMjc1NzgyY2Y2MmI4YWI0Y2M4MTg3ZjE3YmI1NGM2Mzg2NCBsZWdhY3ktdHJ1bmsKKzQyNzgyIGUwMWYxN2MyN2VmMzBjOWY0YzgzNzMzNjI2MzE1NzA1YjE0NGMwMzggdGltLW9ibWFsbG9jCis0Mjc4NCBhMDBiZDNjZGI3Mjg3YWFmYjM2YzRiYjQ4NWVjMGM4YWZmZTZkMjQwIGxlZ2FjeS10cnVuaworNDI3ODUgZDVlNWE1ZDlmZTdjMDI1NDdmMTk4ZDlmMzkzZDIzODFmZmU4Y2M2ZSB0aW0tb2JtYWxsb2MKKzQyNzg3IDcwOTlmNmU2ODE4M2VjYTY0OWY4MTAwYzM5YWYxYzJmMDNjM2Q1MzIgbGVnYWN5LXRydW5rCis0Mjc5NCBkZTQ4MTZkMzQ0ZWVhNDg1OGU2ZjRjNzIyZDNhM2ViNGFhMDE0YzgwIGxlZ2FjeS10cnVuaworNDI3OTcgYjFhM2MyMjM4Zjk3ZTFhNjU1MmY5NWQwNDhlNTM0NjcyZmY5OWJhZCBsZWdhY3ktdHJ1bmsKKzQyNzk4IDJjMmRmZmUwNzBkZjI4MzYxMjg0MDhjZmIyMmI1NzRjODVjOTY5MDkgbGVnYWN5LXRydW5rCis0Mjc5OSBlZjg3NzlkNDU1ZWM1Y2M5NjRlOWFiN2E1ZGM1Yzc2NjdjYjljM2U5IGxlZ2FjeS10cnVuaworNDI4MDAgYWJhNzNiNDY4MDNjNzc5MGIxYmM5NWIyNDk2MTQ5MjA5YjUyMmYxOCBsZWdhY3ktdHJ1bmsKKzQyODAxIDFkMDU1ZWJkODMyMjlmYTc3MGJiZDZkNjFhMTNkOTg1MGE2MTRiNDIgbGVnYWN5LXRydW5rCis0MjgwMiA1NDc1NGYwZDI1YzcyZjdhNWYxYTllZjk1YTViNDZjZGQxMzJkN2ZmIGxlZ2FjeS10cnVuaworNDI4MDUgN2EzMGRjMmFmMzI5Mzg1ODEwNWQ0NTE2OTY4NTc2MDkyMzA0YjJlYSBsZWdhY3ktdHJ1bmsKKzQyODA2IDZiN2NhM2IyMDFmM2VmZGZhY2Q4N2VjN2VlZTc0Y2MyYTM3M2ViNDAgbGVnYWN5LXRydW5rCis0MjgwNyA0ZjJhZjU2ZDhlYmU0ZDAyN2UxMzMzZGE5OWUwM2ExZTY1MzJjZjBkIGxlZ2FjeS10cnVuaworNDI4MDggYmMwNzk3YjA2YTk5ZWJjNmVhNjc1YjUxNzA4MzJiZGViN2M1ODZlMCBsZWdhY3ktdHJ1bmsKKzQyODEwIGQzOGFiNWNhZDk0NWIzNTRjMzFmMTAxMTQwMzRiNjVmMGEwODAyMDggbGVnYWN5LXRydW5rCis0MjgxMSBiYjVlMzA0NjdmZTRkMTc2MmU1MDgxODM5NTVlZDhhNzM0MTUyYTgyIGxlZ2FjeS10cnVuaworNDI4MTIgYzFjNDYyMTBiNGI3ZTQwZWNjNWY1MzczNzY1MTQyNjljMjgxZGJmOCBsZWdhY3ktdHJ1bmsKKzQyODEzIDEyYmNkMTZjMzFhZGU2ZmQ0NTNjYTk0NDA2Y2IzZmJhNmY0YzEwYmQgbGVnYWN5LXRydW5rCis0MjgxNCBkMDJiNGNmZWZhMGEwYmU2MGNkZWZiMDcyMDM2NGE4YTA4NTNhYjgwIGxlZ2FjeS10cnVuaworNDI4MTUgN2E2YjE3NGRkZWYyZjE4ZTMwZDdlZmM3OTQ1NDVjMzFkOGZhOWIwOCBsZWdhY3ktdHJ1bmsKKzQyODE2IDA3ZjMzMGFkMWI0NzVlMmFiNzU2YmM3MzIwMGYyYWIyNDBkZjk0OTUgbGVnYWN5LXRydW5rCis0MjgxOCA5YjlkODM5MWI2NzFjYzVmMGU1NjUwYjI5M2FlNGI4MDAyOTQ4OGQ4IGxlZ2FjeS10cnVuaworNDI4MjAgZGI2MTMxYzVhZTVhYmYyMDhmZGUxYjM4NGY5ZWE3MGM1YzAxZTBhZSBsZWdhY3ktdHJ1bmsKKzQyODIxIGIyNDE2ZmFiMTNmZTZkM2ZkM2Q1N2UzYTM0YTFiYWUyYTIwMzM5YzUgcmVsZWFzZTI0LW1haW50Cis0MjgyNSAxZjU4NDE2NGUwMTMxNzYxYTVhYzJjMWFlZjE1MWQ3ZjMyMWY1ZGM4IGxlZ2FjeS10cnVuaworNDI4MjYgNjUzZDg1ODVmMDgwYTAxNzk2MTc5YmY1NGY4NjA4MjEyNWNhODcxZSBsZWdhY3ktdHJ1bmsKKzQyODMwIDc0NzAxZTRmY2RhZDBmOTQ4NTkyMDVhMTExMTQzYjcyZWYxZmY2NTkgbGVnYWN5LXRydW5rCis0MjgzMSBiYWM2YmQzNDNhMTI0N2I4MDc1YjIxYzI3ZGY3NTVjNmY2YzMxZmYxIGxlZ2FjeS10cnVuaworNDI4MzMgM2M1MTlhNjEyYmRiN2VjYTI0MzIxMzcxOTY4NDJkNzdlNzJmM2U5ZiBsZWdhY3ktdHJ1bmsKKzQyODM0IDllODE3ODhiMGQ0YjU5MTJkMzJmOWEwNTk2NzczNzI0NGZmNTIwOTYgbGVnYWN5LXRydW5rCis0MjgzNSAwYjc4MDk2NjA0NTZmNzkyMmQwNjMwNjcxNWI2NzVkNTkxNWRlOTY5IGxlZ2FjeS10cnVuaworNDI4MzYgOTEwOWIxYTBkMjY1ZTFhZWZjNmZiMjgzZDY3ZWY4MjhkY2E5OGUwMyBsZWdhY3ktdHJ1bmsKKzQyODM3IDAxYmM4ZWUzZDJmZjg0NmM0ZjdhMzNhNjE5ZTBiMjg2YjViMjVkMWEgbGVnYWN5LXRydW5rCis0MjgzOCAzYTNhZWQ0OWIyNDU2ZTkxN2Q4YjY2MjA2MzhkNjI1MTc5ZjhiZTNlIGxlZ2FjeS10cnVuaworNDI4MzkgZGVkYzJjOTRkMTEyNjI0NDE4NTYyY2VkMDNjMDRjOWJjNTFiNmY3ZCBsZWdhY3ktdHJ1bmsKKzQyODQwIDdjMWFjYThlM2Q3ZDdhNWFiOTI1NWJmMzFlNDk1NGI1ZTVkNTJkN2EgbGVnYWN5LXRydW5rCis0Mjg0MiBiMTkyOWU4ZDE1Zjk5OTk0NGE1MmE3Y2FmNjc5NDFlN2I0NWVjMTdjIGxlZ2FjeS10cnVuaworNDI4NDMgZDNkMGRkOTJjNzMxYWI3ZTBhYzQ3YmYyYWQ0MWE3ZTUyNGVkYzk2MiBsZWdhY3ktdHJ1bmsKKzQyODQ0IGE5NjliZDE1Nzg4ZjUxNDA1MTc3Zjk0MzJiYWY2MTM1YmNkNzJjMzUgbGVnYWN5LXRydW5rCis0Mjg0NSAxODQ4ZDc1YmJkYjM4YmQ1YzQ0YmQyNzYwMDBlOWVjMWU0OTExMmViIGxlZ2FjeS10cnVuaworNDI4NDYgNDI4NGIzMzI0Y2UyZTRiNjQxZDBhMjc4YzQ3MzQ2ZDliMGNmOWM5OSBsZWdhY3ktdHJ1bmsKKzQyODQ3IDM5MWY3NGM5YzI2MzY4MDk3MDM2ZmM0ZGQ0MDkwNDVjMzMyY2FhYTcgbGVnYWN5LXRydW5rCis0Mjg0OCBhZGJhYTllYmE5NzU0M2Q3YTExZDNlOTU2NTdlM2MxZGViMDg5MzRhIGxlZ2FjeS10cnVuaworNDI4NDkgNGNjZWY0Nzg4MWY3OWQ5MzhmOTEyNTk4ODE4OTI4YTA0OTNlZDEwZiBsZWdhY3ktdHJ1bmsKKzQyODUwIDJkMWRmMjRlMzNkZjcxMGU0ZDM2N2M4ODJmMWM2N2IwN2E2ZTFkMDkgbGVnYWN5LXRydW5rCis0Mjg1MSAzYjY3NWFjOWE5MjU0ZTEyMDVkMDI1MDQ2NzczNzIwNTk4YmM0ODk4IGxlZ2FjeS10cnVuaworNDI4NTIgOGNkMTUyNzQ2Mzk4Nzk3ZDg2ZDBlNzZhYTA2NjA3MjgzNzI5ZGFhNiBsZWdhY3ktdHJ1bmsKKzQyODU5IDZhYWFkYmFiMzUzMDE1NWVjMTlkODFjZGEzYmRhYmIzMDYxZmM2ZjEgcmVsZWFzZTI0LW1haW50Cis0Mjg2OCBmODBjYTcxM2JiNGJlYTM1MzkzOTBjMjExMzc1NjdhZWJlZDAxOWM1IGxlZ2FjeS10cnVuaworNDI4NzAgOWIxM2RhNjQ3YTVlYmI1NTJiYjg3ZjA4YTU5ZTAzYzZjZDkzNjE4YSBsZWdhY3ktdHJ1bmsKKzQyODcxIDhlMGYwZmIxNGQzNThiN2JmYzI1YWNiYWZmZmYzYzNlNGE1NjUxMWYgbGVnYWN5LXRydW5rCis0Mjg3MiAyMDRjMzA3YjAxY2U1N2VjMzdmZWIxYmZmM2RkYzYzMmVlNmFmZDNmIGxlZ2FjeS10cnVuaworNDI4NzMgZmUwNzM2Y2NiYTc1NTE4MDcyMzQ2MzczYjlmMzJjNTg3MTk4OWU0ZSByZWxlYXNlMjQtbWFpbnQKKzQyODc0IGNkNzJlYjU1ZDVmOGQ4Y2NhNzFiOTBiNDUyNGM0YTY1MDU5NjgzZWIgbGVnYWN5LXRydW5rCis0Mjg3NSA3ZmFjNWQ3OWQwNDNiZmFlOTcxMTFmMDU3NGJjOWE3MGIwZGI0YzJiIGxlZ2FjeS10cnVuaworNDI4NzYgNGY2MjhlY2MzMGNiMmViNGUyM2U5NDVlYzAyNWMyN2M5NzAwMWQ2YiBsZWdhY3ktdHJ1bmsKKzQyODc3IDhlYmY3OTk3YzZjZDU2ZTgzYzgzZDZmMzBlNDg1YTcwZTUzY2M1NDYgbGVnYWN5LXRydW5rCis0Mjg3OCA4OTUwNzRlNWVkM2FiODBhNDYzYjEwZTZiYTk4Y2QwNjU4ZmFmMWEyIGxlZ2FjeS10cnVuaworNDI4NzkgMWUwNDNhMTI1YmU2ODNmNWI0MTA0Nzg4MzU0NzFjN2JlODdlNjNjMyBsZWdhY3ktdHJ1bmsKKzQyODgwIDJkMjRmM2EzN2ExYjM1ZjUzNDNlMGEwMTExNjg1ZDEzYmVjYTYzNmYgbGVnYWN5LXRydW5rCis0Mjg4MSAxZTE5MTM5MmVjNWM2MTgyZWM2NmNjZTE2MzkzNjI4Yzg1MDBhNTczIGxlZ2FjeS10cnVuaworNDI4ODIgMTVkMzMyOTU2MTVmNmYwYTQ0YTlmZjg3ODA3MzEzZjBhNzkxOTBjMCByZWxlYXNlMjQtbWFpbnQKKzQyODgzIDllYjI0ZjkyYTc4NGJmMGNlYTY2Y2MyYmNjNjZjMWVkZWYyYTRmMGUgbGVnYWN5LXRydW5rCis0Mjg4NCBhNzM1ZGY1NTJmMDJkOWZhMTk5NjMyYjI0NDA0ODZlMDllYjU2Yjk0IGxlZ2FjeS10cnVuaworNDI4ODUgZTYyNzY3ZTY0ZGU4MTk2YzUyMTJmODRiZmMxOWY5ZjEyOGEyYzI1NCBsZWdhY3ktdHJ1bmsKKzQyODg2IGM5MTIxNTY0MmRjZDQ1ZGUwMGUyN2NkNzNmMWU1M2I5NDgzZjgyYWMgcmVsZWFzZTI0LW1haW50Cis0Mjg4NyA0NTU2NzJhOGY4Nzc2MWM3MGViNjRiMDNmODhkMDhmOGMwOGQ4MTE0IGxlZ2FjeS10cnVuaworNDI4ODggMjU3YWQ4OWQ5MmRmODQ1MjIzNmI4ZmVkNjdlYjgwYWU0MjU2YjBmYSBsZWdhY3ktdHJ1bmsKKzQyODg5IGIxNmU1MDQ0MTNjM2I4MzQ2YzU4YTE1ZmI4ZjE1YTMxOGM4NDBhNGYgcmVsZWFzZTI0LW1haW50Cis0Mjg5MCA3OGM5YWNiYjQ2M2MzM2FmM2FkNTZiOTY4NDEwMDY0MTUxNTliMTdhIGxlZ2FjeS10cnVuaworNDI4OTEgOWJiNTkwYTBiN2ZiMDRhNjU2MGM3M2UzN2VlMmM4YjMxYjZjYWRkOSBsZWdhY3ktdHJ1bmsKKzQyODkyIDY4YTA5NDNkYmJlNTMzZGIyOGNiMjZiN2NmZDE3MTVhZGZiNzhjNDEgcmVsZWFzZTI0LW1haW50Cis0Mjg5MyBjYTRiYmNiYmQwZDU5NTBmMTAxMWJjOTFkNjYwZGQ2MTZkMDIxOGViIGxlZ2FjeS10cnVuaworNDI4OTQgZTlhN2EyNzg0ZTE3ZWZiYmEyMzA4ZTFhY2FkNjY3ZmNiYmVmZDI4MyBsZWdhY3ktdHJ1bmsKKzQyODk1IGFjY2ZiMTU2ZjljYzY0MWVhZjRjMjNhMzllZTc0YTEyY2Q5MjVlMjMgcmVsZWFzZTI0LW1haW50Cis0Mjg5NiA4ZDQxZGRjMzFlNjFlNjNiMjJlMTI3ZjJhNWJlZGRkODgxNjQ2ZmIxIGxlZ2FjeS10cnVuaworNDI4OTcgYjIyYzQ4ZmU2MmE0YjI4NjQzOGRhNzQ0YTJhMzU1MjgyMmZlYmUyNiByZWxlYXNlMjQtbWFpbnQKKzQyODk4IDQ3MDZiN2ExMjU2YzI5Yzc0OTdlOTRiODZiN2I3NDk1MzcxOTNjMmUgbGVnYWN5LXRydW5rCis0Mjg5OSA2YTljNzE2NWIxN2JkYjdiODUxMzZlMWVlMTMxNThkYWMyODA2NDdmIGxlZ2FjeS10cnVuaworNDI5MDAgYjE3ZGE1ZTBhNjk3YTBmZmQxOTFkNWY4MGU4MTZlNjQ5MTg2YTQ5MyBsZWdhY3ktdHJ1bmsKKzQyOTAyIGNkZTc1NzMzNTQ5MjlmYmI5NjVlNTBiZjM2MjE3NGUxMTAwNDY4YjMgbGVnYWN5LXRydW5rCis0MjkwMyBkYjU2ZjU3MGIwY2ExMjA1ZjNlNDRiZWYwY2RjMWNhYzMzMDZlOGEyIGxlZ2FjeS10cnVuaworNDI5MDQgZDM0MmIwZGM0OTM0MTRmYjIzNGM1OTkyMjM4MjkxMjRlOWJmMzczMSBsZWdhY3ktdHJ1bmsKKzQyOTA1IDEzYjk4ZDBhN2JhYThiNmVmYmUyZDNmMWJkZTMwMTQxYWZhODQyOTQgbGVnYWN5LXRydW5rCis0MjkwNiA3Y2Y1ZDliYTVmOTdlYWEzYTQ4NjdhMDNiOWNiZjI5NDBiN2U5ZGZhIGxlZ2FjeS10cnVuaworNDI5MDcgYjQ4YmE3Y2Y0NTc2ZWI1Y2EyODk5MmU4Mjg4MDgwNDE3MjMxNDdlYSBsZWdhY3ktdHJ1bmsKKzQyOTA4IGY2YjdlMGMzODRkYTlmZGRjMzBmNTAyMDk5ODhjZDg3NDY2MTViNzUgbGVnYWN5LXRydW5rCis0MjkxMCBhOTY5N2RlNWUxOGJmZjQyMDEzYmUwNDg4OGJhODlmMzMwNDVjNzNlIGxlZ2FjeS10cnVuaworNDI5MTEgNjMyYTRkYWE4ZDRhZmUxNTM3M2QzM2MzMmNkOTM5ZmU5NDJkZjE5OSByZWxlYXNlMjQtbWFpbnQKKzQyOTEyIDRiMzQ3YzY1NDYzNWY2YTVlNTJmYzJlYmQxMzA3OWY3ZDNmNDMzNmQgbGVnYWN5LXRydW5rCis0MjkxMyA1NTJkZDVmZGI5ZDg0ZmM3ODExNWY0YmJlZDJjNTM0MGQwZjdhYjIyIHJlbGVhc2UyNC1tYWludAorNDI5MTQgZmQ3MzU1OTZmNjljMWNiYzM4MDZjZTA4Mzk5N2IxMzk1NGY3ZWI4MyBsZWdhY3ktdHJ1bmsKKzQyOTE2IDQzNWY3ZjNjOGI2ZGE0NzVlYWU1ZDQ2OWUyY2Q5NjIzMjMzMjFlOGEgbGVnYWN5LXRydW5rCis0MjkxOCA2ZjJlZGE0OTVkOWRlNmI2OGYxODUyZTBlYjQ0NjAzNGIzNzgxNTMwIGxlZ2FjeS10cnVuaworNDI5MTkgMjc5MDVlYmFkZGFiNWRkYWM1ZmUwMjk1NTFhNGU2N2M3NTQ1YmRmZSBsZWdhY3ktdHJ1bmsKKzQyOTIwIDAwMjNjMGNmOGZlYmMwYjlhZjNjMTI1MTY1MDE0MjAxN2ViOWU5NzkgbGVnYWN5LXRydW5rCis0MjkyMSA5MjI3YWUzZGI3ZWQxZTJhNGFmNDNiMmM3YzI4NzE3MjFiZjMxNjFmIGxlZ2FjeS10cnVuaworNDI5MjMgMTJiMDgxMjNlY2JjY2Q4MmUxODY0OGM5ODBlNTBiYjA1ZGQ4YzIyMSBsZWdhY3ktdHJ1bmsKKzQyOTI0IDRkZWRjMDVhZDZiNDc2NGFhNTJiZDUwNDQ5ODdlZTQ0ZGVkMWI3ZTIgcmVsZWFzZTI0LW1haW50Cis0MjkyNSAyMTAzM2JiN2VjYmUxOWExMTRlNzVlMzZhNzUxYjJmY2ZlYzMwNDkxIGxlZ2FjeS10cnVuaworNDI5MjYgNTZhNGNmMmIwMmZkZGNmZGQ3NjZmMzVjNzYyYWQzZTYwMWYwOTZmMyBsZWdhY3ktdHJ1bmsKKzQyOTI3IGNhMjlkZGE1NjNiN2E0NmE0ZmNlMzI3YzU4ZWIzMTQyYTFjMmExZmUgbGVnYWN5LXRydW5rCis0MjkyOCA5MDJlZjFkYzI5NzliNmNiZjgyODE3ZTM1YTM4MGQ0YTcxOGQ3NDBhIGxlZ2FjeS10cnVuaworNDI5MjkgNjllYjZkMWI5OWY1NmQ2YTY0NDk1MmNkMDgyNzZhYWI1YzVkZjQ3NSBsZWdhY3ktdHJ1bmsKKzQyOTMwIDNlMmI1NzQ3MDM4ZmZmZDQ2NTdmMzRjOTk3MGIzYmQxZDQ3N2M3NDMgbGVnYWN5LXRydW5rCis0MjkzMSAwYmY1MzYzOTAxNGE5NGJiM2UwODNmZDQxOTliOTAzMzQ0MDI2OGMwIGxlZ2FjeS10cnVuaworNDI5MzIgOTFhOWUyZTMxZTkzMGQ0NjE2ZWJmMDdiMmU5MzNhYTViNTdjMjc3YiBsZWdhY3ktdHJ1bmsKKzQyOTM0IGI0ZTg5ZDI5YmVhOGM0NWNmMmJhYWFjYzlkMWYxMGI4ZGMyZTEzNzQgbGVnYWN5LXRydW5rCis0MjkzNiBiMjE4NGQ5MTBhMDBmODE2OTYzNjQyOGRlNjkyNDIxMDAyMGM4MTkwIGxlZ2FjeS10cnVuaworNDI5MzcgMGUzNmU3YzY2YjhlOGE1YTNmZTI5ZmIxMDlhMDNkYzc5NGZhOGRkYyBsZWdhY3ktdHJ1bmsKKzQyOTM4IGYxZWFhZTdmOTYyZDNmN2ExYWFkMzEyOTRhYzU1MmEwMTI1MzExNTcgbGVnYWN5LXRydW5rCis0MjkzOSAxOGY5MTFkZGUzZTI0MDBkZGViMGJkZDAyZWNjZWVhZmNjNGJkODY1IGxlZ2FjeS10cnVuaworNDI5NDAgNTAyYTY4ODg3NzgzOTk5YmFmNTg0ODQxMDM1MGE4YzIwZDNlODNjZCBsZWdhY3ktdHJ1bmsKKzQyOTQxIGQ0MGI0OGRmODNlNzk0ZDlhMmMwNDAwYTk1ODUwMWZmMGIzMGNiMGEgbGVnYWN5LXRydW5rCis0Mjk0NCA2ZTliMzY4Nzg5ZGYwY2U1NjYzZTMxYTUyMzkzZmQyZGZlYzI2OTE4IGxlZ2FjeS10cnVuaworNDI5NDUgMzY1MmI1MTI4YjcwN2RlODMzMTE0MGI2ZWQ3MjNhMzE2ZDhiYmM4YiBsZWdhY3ktdHJ1bmsKKzQyOTQ2IDc5ZDViN2Y3N2FjNDU5NGYzMzdlNjQ0YzBmYzhmYTkzMTBjNWY3ODggbGVnYWN5LXRydW5rCis0Mjk0NyA5N2QzODc5N2I4YmMwOTdhYjNmMGEzYjczMWJlMWUwOWFkOTI1YzgwIGxlZ2FjeS10cnVuaworNDI5NDggZDNkMmY5ZmZkYzA2NTQwYzZiOWVhYTgzODZhNzFhOTE5YTVjODQwOCBsZWdhY3ktdHJ1bmsKKzQyOTQ5IDgwNTgwMDE4MWUwZTE5ZmU2Y2EyY2MwMWNiYTg5ZTdiZWY2YzFkZmYgbGVnYWN5LXRydW5rCis0Mjk1MCA0OGUwYTVlMzk0MDNiYTFmZjBlNDdjM2RjNzExZjk1NzY4YjUxZmI1IGxlZ2FjeS10cnVuaworNDI5NTEgN2MxN2U5MjIxZjk0MWY2YTFjZGQ0MDcxZGNlY2ZhMmJkZDYyMzAxZSBsZWdhY3ktdHJ1bmsKKzQyOTUyIGZjMTBmZjMyMmRmMWI3OTNlZDg1ZmM4MjQyNWE1YjM0OTJkMzhmZjYgbGVnYWN5LXRydW5rCis0Mjk1NCAzMjY2YTAyMGEwZGFiN2YwYTcyOTRiYWU5ODFmNmU0NGI4YWZhMjFmIGxlZ2FjeS10cnVuaworNDI5NTUgMTFmOGI1YjhjZTIwMTg3ODY5YTllOTdhMmJhMDc3NmVmNzVmZDRjNyBsZWdhY3ktdHJ1bmsKKzQyOTU2IGZhYjQ0YzVjOGRmNDJiOTUzMTFlNzU3ZTMwNWY3OTExYjhlNWQ3MDUgbGVnYWN5LXRydW5rCis0Mjk1NyAyYTkwNTZmNGMxNjQ3NjYzNDY2MDkxNjI3YzJkNmZkZDE0ZWRjMGUzIGxlZ2FjeS10cnVuaworNDI5NTggZGI0NjUwNDkzYzJiOGUzOTJjOTkyYWM1MjMyNDRmZGY2ZTFiZGY0NyBsZWdhY3ktdHJ1bmsKKzQyOTU5IGFlNTlmY2VkMmUxNDJkNGFiZmQyMmM3YjE5NzQ3MjM1ZWIzYjc3OTAgbGVnYWN5LXRydW5rCis0Mjk2MCBlYmViYTczNTM4OTQ3ZGYzMjcwMGY4MzdjODVkNDVjMjAxODMxOWVlIGxlZ2FjeS10cnVuaworNDI5NjEgZjEyMGY3NDBhYmU0MWU2NzdhNjFhZjM4MDk3ZmM1Y2ZlZTgzYmNiZCByZWxlYXNlMjQtbWFpbnQKKzQyOTYyIDA2ZTNmNjI3YWQ5OTU4OTg5YjU2ZWQ4OWEwZGNlZDY1M2FhNDYxYmEgcmVsZWFzZTI0LW1haW50Cis0Mjk2MyBlMjU2YjUzMDJiNTVjMzg0NzFlM2MyNTczM2M5NzFmYmUwMDkyYjhjIGxlZ2FjeS10cnVuaworNDI5NjQgZGY0M2MwNGQyNTU0NWVkNGJiZGU1YzAzZGU5NGQyOWNiNDFiMDdkNSBsZWdhY3ktdHJ1bmsKKzQyOTY2IDFkZDY1MjA0YzA5ZmU3ZDc5MWY2MTlmZWI1YjU0Y2FkMTE2NzA5NjkgcmVsZWFzZTI0LW1haW50Cis0Mjk2NyAwM2VmOTg3MDQzY2UwMGU5MDQ0OTBmY2Y5ZjY0MjkyODc0NDE4ZDhmIGxlZ2FjeS10cnVuaworNDI5NjggZTQ0NjVkMjczN2M0ZTc1ZGQ2ZTQxYzA2MTM1YTZlNGVhYWVkYzdmZCBsZWdhY3ktdHJ1bmsKKzQyOTY5IDY3MTg3N2QyMmExY2M4ODI4ZjI3M2RmMjJiMWM0YzEwZTYyMzYxYzQgbGVnYWN5LXRydW5rCis0Mjk3MCA0Yjg2N2U2NTRhOGE0Y2MwNzMxZWJjMzVmYWYxZjUzNTg1NTE5NmFhIGxlZ2FjeS10cnVuaworNDI5NzEgZjA2MTI1YTlkNDA2MzU3MTVkOTY4NTJlM2JmMzljZDg1MzMzNmVlMCBsZWdhY3ktdHJ1bmsKKzQyOTcyIDczNTFhYWI4N2U2ZGUwZmIzYmVjN2U0ZDllYjg1ZGY3MGZhNWMwOTcgbGVnYWN5LXRydW5rCis0Mjk3MyAwZjE5YTZmYzk3NTYwN2E2MGE0MDI2ZGY4YjNiOTNjMDExZjMzZTAzIGxlZ2FjeS10cnVuaworNDI5NzQgZmRiMDVjOGFkNTMzM2EzOTE3ODA3ZTU4NmVmNDRhNWE4M2FkMmJkYyBsZWdhY3ktdHJ1bmsKKzQyOTc1IDQwMjU2YjU0Yzc5MDYwYjYwNGQ2MDNkYzEyM2IwYTg3NzY4YjY5NzEgcmVsZWFzZTI0LW1haW50Cis0Mjk3NiA2OTEzZWJhNzhkNDA3OTEwYzJmZTZlOWQ5MWYyODc5MTdhYmVmNjFjIHJlbGVhc2UyNC1tYWludAorNDI5NzcgYzc3ZWNlNjY3MDlkMTdlNTc0OTU1MmUyMTgyMDkzMjM0M2E1M2M2MyBsZWdhY3ktdHJ1bmsKKzQyOTc4IGFiMDAzMTljMzc0NDg2MTA1NGNiMTBiOWVmYmEyYWZjNzkxZjBlNmQgcmVsZWFzZTI0LW1haW50Cis0Mjk3OSA5N2ZlZDYxOGI1ZTcyM2E0ZmEzYWNlNDM2OWIxOWUwY2VkODU5M2Y0IHJlbGVhc2UyNC1tYWludAorNDI5ODAgMWE4NDY1YmFmMDdkZDRmNzI5YWJlMjRmZWQ3NTg2NTc0YWJmZDU4MiBsZWdhY3ktdHJ1bmsKKzQyOTgxIGM5ZTQ5MTM4ZjY1OWIxZTE0OTkwN2MyYWU1MjY0ODM2YmIwYjM1MjMgcmVsZWFzZTI0LW1haW50Cis0Mjk4MiBkYjVlNzIwYjBjZWY5ZTI4ZmJjYzIzZTdmYzI0NzVhMGQyZmNhZTQ2IGxlZ2FjeS10cnVuaworNDI5ODQgOTU4NDI1MDA3ZWE2YThhNjkzNWQ2YTQ1ODgzZmQxMzIzNGY2N2U3NyBsZWdhY3ktdHJ1bmsKKzQyOTg1IDNiZTI0MjVkNzc0MDBkODg3MjdlNDk4NjcxY2YzMWI5OGEzMDUwYWYgcmVsZWFzZTI0LW1haW50Cis0Mjk4NiBjYjk4NGE4YjExMzQyZjBiZTE2MWViNDhkZDkzN2EyOTZmZmM5NDFjIHJlbGVhc2UyNC1tYWludAorNDI5ODcgNDMwOWIzZmI1YjQzNWVlYTkwMjFhMTE1OWM0MjhlMDA5YTQ3NTRjNyByZWxlYXNlMjQtbWFpbnQKKzQyOTg4IDMyYjg2OGE0OTY1OTMwOWM5NTkzMTljMjBiZjg5OTU1YTkzNmY4OGYgbGVnYWN5LXRydW5rCis0Mjk4OSAzYWQ0MmY5OWE2ZGJiN2ZkYzA0N2UwYzkwNjViNTEzNmJiOTY5N2VjIGxlZ2FjeS10cnVuaworNDI5OTEgZGRhNDI0MWY5YWJjN2VhMWVkZDI5Zjg3NWI1YTEyZWIyMTRlOWI2MiByZWxlYXNlMjQtbWFpbnQKKzQyOTkyIDNkN2FkZjg4NzRhYzU4YjgzODZmY2Y5M2FiZGY3NTNmOTA3ODFkMDggbGVnYWN5LXRydW5rCis0Mjk5MyA4MjkyZTNlNmVjZmVhOTdhZDI5ZTE3ZmNjMDAwMzZiMWNhMDBhMzYwIGxlZ2FjeS10cnVuaworNDI5OTQgN2ViMmMwZjBkMGZkNjY1MTI2ZDFhNWUyOGRmNWE3Y2I0YTViYzE3MyBsZWdhY3ktdHJ1bmsKKzQyOTk4IDlhMDg3MjQxMTBkMGJlYjk2ZGI4MWMzMjk2YjY4NjYyMGEwY2YzZWUgbGVnYWN5LXRydW5rCis0MzAwMCAzMjEwM2M1ZGJlZmFjM2UyYmNkYmZkNDY5MjgwOTJiMDczMGZhMTRmIHJlbGVhc2UyNC1tYWludAorNDMwMDEgYThmZDkxY2QzMTdhY2JiODkxMDhjZTQ2NTcyNzUxMDMxNThlNjVlNCByZWxlYXNlMjQtbWFpbnQKKzQzMDAyIDE1YTQ1ODE3MWViMDA4OTA2MzVhOTExZGE2NGM2MmRkOWVjMDYyMjUgbGVnYWN5LXRydW5rCis0MzAwMyAwYzA0MDgzNTJlZTY5Y2FmZWRjYWE0NjVjZmExYzAyN2UzZTNmNmJlIGxlZ2FjeS10cnVuaworNDMwMDkgMDM1Y2M4NDE0N2ZiMDRlNDg5ZmEwN2FkOTJiMWFlY2M0NjQxOWJmMiBsZWdhY3ktdHJ1bmsKKzQzMDEwIDg1MTg4ZTViNDkxMmY1NGI3MTAwNDhiYmM2MDIwOTkyN2Y1OTliMTIgbGVnYWN5LXRydW5rCis0MzAxMSBiNWExMzU3MDU5MmRkYzk0NzA3YzZjOGYyYWJiYTVkODEyYzkxOGMwIGxlZ2FjeS10cnVuaworNDMwMTIgNmIxYjMyYTg1ZjQ3NjAxZDhmYzk2YTk3ODAzYTA5ZWQ2NGQxM2U2MyBsZWdhY3ktdHJ1bmsKKzQzMDEzIDI5ZTZlN2ExMDdkZTM5MjA1YzU0MGEyODY3YzRjMjZjODY4Nzk4ZDQgbGVnYWN5LXRydW5rCis0MzAxNCBiZGFmY2EyMTkyZDM3ZWIxZjFhZjMwMDk1Zjg1NTViZTM5YjRkYWQ5IGxlZ2FjeS10cnVuaworNDMwMTUgOGMxYmY3OTk5NTJjZjFkMDM0NWIwNzJiYzBkYjQyYjNhZGI3NzMyMyByZWxlYXNlMjQtbWFpbnQKKzQzMDIyIDk1NDY5ZTk3ZmQ5MDAwYWIyOGM3MGY5OTY0YjcyNzlmZTFiMjAxOGEgbGVnYWN5LXRydW5rCis0MzAyMyA0ODA4ZWU2MmIxNTZhNjE5YTU5YzJhODI1NDg2NTEyYTE5YmRlYWJiIHJlbGVhc2UyNC1tYWludAorNDMwMjQgYjNjMzY0MGQ5MmY4NGExMmUwNWUyOTg0NTgxNTVjMDcwZjM0NjEzMyByZWxlYXNlMjQtbWFpbnQKKzQzMDI1IGM4ZmZjOTEzZDAxNDMwNTdjNzUwMzNjZmNlMTIzYzAyNGI1YzY3NTMgbGVnYWN5LXRydW5rCis0MzAyNiBmZjMwMjQyNTlkOTFkNzJiYWU3YTdjM2M3Y2VkZTIyMzIyMGU4OTNiIGxlZ2FjeS10cnVuaworNDMwMjcgZTJhYjc1NWFlNjg1ODBlMGMwMjMzOGI1ODkxOGViOTEwM2JlN2YxZiBsZWdhY3ktdHJ1bmsKKzQzMDI4IDIyZmZmMWYzYzc4YWU1NDUxODgxZDA3MTk2NWEzMjNhOTM5NmNlY2MgbGVnYWN5LXRydW5rCis0MzAyOSBjZGU1OGNkMDdlN2Q4NTA0M2JlZTVmMzJiNjhjOGU0NzgyNzJiZDZkIGxlZ2FjeS10cnVuaworNDMwMzAgNGE4OTZmYzEyMzg0MjcyNDE5MzliZjgwZGQ0MGJjMGZhMDQyZDRiZCBwM3lrCis0MzAzMSA1NzBjNjE2YWNmMGMxNGVjN2E4ZWYyNzQzN2UxNDM2ZjNiMjliYzIwIGxlZ2FjeS10cnVuaworNDMwMzMgMzc1Y2UxYzA0ZTY2YjU5YjFmNzEzZDVhNTQzNmQ0ZDRjZTViMDg3MyBsZWdhY3ktdHJ1bmsKKzQzMDM1IDQ5YzZlYjY4ODkwNmIxZGRkYWJmNTc4ZjA4MTI5ZTY3MjlkNjE1MWYgcDN5aworNDMwMzcgYWJhODE0YWE0YzZhN2JkODJkMWEzM2YwYzRjMDhlMWM4MTE5ZGZmNSBsZWdhY3ktdHJ1bmsKKzQzMDM4IDY5Y2JlMGZiN2E2ZDIwNGIwMTlmMmJjMzI2NzMzNGU5MTIzNGIxODEgcmVsZWFzZTI0LW1haW50Cis0MzAzOSA4ZThkMGUwM2YwNzZhMjQyYzJiNDA3Y2Y3OTVkMWU1MzBlODNmYTg1IGxlZ2FjeS10cnVuaworNDMwNDAgMjUxZjkyMWNjODFkY2MxZDlhNTVmMjVmYjFjNjQxZmY2MDZiYjIxYyBsZWdhY3ktdHJ1bmsKKzQzMDQxIDVmYjU0ZWQ4NTQzYmIwNzNiYmY4OTM0ZDMwNWZkODg2MWI0NWUxM2EgbGVnYWN5LXRydW5rCis0MzA0MiBkOTY5ZTMzOWFjMWU1MzdmZmM2NDVjMGJiZDI4MTVhOTBiNmIxMWQwIGxlZ2FjeS10cnVuaworNDMwNDMgZjkxNDYzMGY0MTljMWM0ZTY4MTIyZmI2ZGM3Y2E1NzRlZDI0YTI1NyBsZWdhY3ktdHJ1bmsKKzQzMDQ1IDdmYTRjMjlkNzAzMDE1YTc5ODE3OWUyZDgxYmY5NjBjOWExMDk5ODIgbGVnYWN5LXRydW5rCis0MzA0NiA5ZDNhMmNkZTBkYmQzMGY5YzcwNWUxMDgzMzZmNjNkN2I0YjAyMjE1IGxlZ2FjeS10cnVuaworNDMwNDcgNDUxZGEzYTUyOTEzMTZkYTFlODg3NTlmNjJhYTQ5OTVlZGViYjUwMCBsZWdhY3ktdHJ1bmsKKzQzMDQ4IDE3OTA4NDg5OWQ5NjliMzc5NTU2ZGZlNjBjZWNkMzI3MDczM2Q2MDMgbGVnYWN5LXRydW5rCis0MzA0OSA4NmYxMzMwMWMzZGI0MTRjZmFkY2E0NTliZTFjYzAzZTdjODk3NjVmIGxlZ2FjeS10cnVuaworNDMwNTAgNTVlNGY0NzY1NzYzZWNmNjYyMGFjM2NiOWQ3MjliMmY1ZWM5NWQzNSBsZWdhY3ktdHJ1bmsKKzQzMDUxIDViMzhkYzU1MWY4NmY4YzViZWIyMzNhMDcwYzRlZThjYmZlMDkxY2MgbGVnYWN5LXRydW5rCis0MzA1MiA0ZjQ0NDEyZTlmNmMxMjdjYjVhMjAwZGUxN2U4YmI4OWQ3MjVmNGExIGxlZ2FjeS10cnVuaworNDMwNTMgM2JmMjMwNjFkODZjZDk0MzVmNTZjNDk0MmMzMzhiMDNmYTdlMmE2NSBsZWdhY3ktdHJ1bmsKKzQzMDU0IDY3MzhmN2IyODJmNjVjNWM5MWMwNWM0MjViZmYwOTRhMWYyNDgwOWMgbGVnYWN5LXRydW5rCis0MzA1NSAzNTRlMjJmM2RhYzZmMzIyZGFjODQ2Zjg2OWQyZTZiMzU3M2Q3ZjE5IGxlZ2FjeS10cnVuaworNDMwNTcgMWRkZjBkODFkNmM1OTBjY2RjYjMzNTIwN2ZlM2E0ODc3MzBjNGNhNyBsZWdhY3ktdHJ1bmsKKzQzMDU4IDYxNGQ4MGRmZmMxZjg4ZTIwMGZjOTcwNmE4ZTc3YjE5ZmZmYTRlZTggdGltLW9ibWFsbG9jCis0MzA1OSA2ODU4NDliZDkwNWM0YWIzZDNiYzYyNTIwMzUwMzQwYWJhOTMyNTEzIGxlZ2FjeS10cnVuaworNDMwNjEgOTc4N2Y4MzBkMDI1YjU4NWM0YWM3NDRlOGNjNzM4NzI3NzBlZjk4NCBsZWdhY3ktdHJ1bmsKKzQzMDYyIDYyNDA5YTFiYzRkYjMyZTRmZTBjOTRmZTkwZmZmNjJiMGRiMGY0ZTcgcmVsZWFzZTI0LW1haW50Cis0MzA2MyBhYjE3ZGE2ODQyNmJhODU0MjQwYTBlOWY5MTUyODVkMzNmN2VhOGM0IGxlZ2FjeS10cnVuaworNDMwNjQgNWQyYWI0ODIzZjNjYzdmZTJmN2E3MmZkZTE3YmYwOTg2Zjc0ZDQ1ZCByZWxlYXNlMjQtbWFpbnQKKzQzMDY1IGYwYjBhYTM1N2Q0OWU0MzQ5YWY1YjQ1ZDlhZDdmMGQ1ZTk1ZWVhM2YgcDN5aworNDMwNjYgMjUwMDdjMTU1NjY4ZGQ3NGUzZDEyY2Q2MmZmZTk0NDgwMWJhZGM3MSBwM3lrCis0MzA2NyA1NjBhYzFiYTk5Mjc0ZmJlZDk4N2RhMmZjNjAzZWIxNjJlZDRiODMxIGxlZ2FjeS10cnVuaworNDMwNjggNGFlMGJiZmM2ODY2ZTE5NTQ3Nzc5OGFmNzNhNzE2NGJhZDI0ZjMxMSBsZWdhY3ktdHJ1bmsKKzQzMDY5IGQ2ODM0NGQ5MzJjNDU4Zjg3Njc5MTFhNTI4ZTBhNDUwMDZjNTY3OGMgbGVnYWN5LXRydW5rCis0MzA3MCA4NWVhZjBjYTY0ZjJlNGZmNmMzZDY0YjMxMDc2YWRhY2VlNjgxOWZiIGxlZ2FjeS10cnVuaworNDMwNzEgN2RhZDgzY2E3MDJkYjJiMDlkZmUyN2MyOTE3ZDZjMTE2N2UyMjQyOSBsZWdhY3ktdHJ1bmsKKzQzMDcyIDQ5MjBiZDQ5MmQ5ODZiNWFhZDAyYTFlZDZkNjg1Mjk5ZGI4N2E2YzIgbGVnYWN5LXRydW5rCis0MzA3MyA0NzI3ZjI2MGY2ZjhkOTY5MzVlMGRjOWM3NWNmNDU5NmIwMGMzNjAzIGxlZ2FjeS10cnVuaworNDMwNzUgMGY2YjRjZWVhNTgwNTM4YzgzODY0YTA2MzI3ZjZjMjJkZjRmN2NhZiBsZWdhY3ktdHJ1bmsKKzQzMDc2IDQ5NTM0NGZlZDI1NWI1YWI4ZDFiMzNhYmE5ZWExOGY3MzAyZTVkY2EgbGVnYWN5LXRydW5rCis0MzA3NyBmNzBjMDM2NDg5ZWM0MzE3ODA4YTg0MTI0ZDA4NDU0OGViNWQ5OTExIGxlZ2FjeS10cnVuaworNDMwNzggMDM4OTRhN2EzMmVjZDNmZmY0Mzk3ZmEzZGEwYzIyMWQ0ZDFmZTM5YSBsZWdhY3ktdHJ1bmsKKzQzMDc5IGEyYTYwNDkzMWZmNjgwNDdmYzYwNmNhMjg4MDgwMWRhMmFjMTkxOTIgbGVnYWN5LXRydW5rCis0MzA4MCAzMDIwM2UyYjk3ZDczMmQ1ZGZmNjA5NWI5YmU4YTYxYjc0MWQ1Y2JmIHJlbGVhc2UyNC1tYWludAorNDMwODEgOTJiZTJlMTE3MDMzMTk1OGM1NWRiYjAyZmYwOGEyOTk4NmY5OTQxOSBsZWdhY3ktdHJ1bmsKKzQzMDgyIDgyZjcwMGZjNGRlMjBkZTU4YjdlZGJiY2VjNmU0M2RhMmE2ZGM3NzIgcmVsZWFzZTI0LW1haW50Cis0MzA4MyBhMjUzOTU4YmZhNGM0MmIzMDJkZGRlNGM4OWE2NWY3ZDM0ZTJiMDEyIGxlZ2FjeS10cnVuaworNDMwODQgZTcyMWQ2OGRiZjZmMTI4MzdkOGM2ZWRiN2I1ZmYzNmQyZTg0MzhhNCBsZWdhY3ktdHJ1bmsKKzQzMDg1IDNiMzA3MjBmYTU3YTExNGIyZjBhMDgyY2Q0YTE0Mjk2N2M3NWIyYTIgbGVnYWN5LXRydW5rCis0MzA4NiBjMGFlYjEwNjU0YjJmNjY5Y2UzZTNhMWUyZDBmMWI1MzAyMmRhNTJiIGxlZ2FjeS10cnVuaworNDMwODcgZmZmNGVlY2RlZjQ1ZjY0MThkZTQ5ZDgxZWMwZGUxYzcxMWRmN2RkNSBsZWdhY3ktdHJ1bmsKKzQzMDg4IGJjZTVjN2FlNjU5YTUyNTIzZWMwNmJhMDc3NTA2ODZkMjVlODk2MWIgbGVnYWN5LXRydW5rCis0MzA4OSBjNDQ5OTQ0MDY4ZDIyOGY2ZTM0NDc5NjNjNGUxYjNkOTM0ZThmN2VlIGxlZ2FjeS10cnVuaworNDMwOTAgYmZiNzRhNDIwYWM4ZWIzNTE1MmQwNzYyZDk1MzdkNDBiNDBmN2FjYyBsZWdhY3ktdHJ1bmsKKzQzMDkxIGU0MTVmMWE4NzRiMTA5ZWZiNDcyMDNmNTcwY2E1OWYyNGU3YjEyMGMgbGVnYWN5LXRydW5rCis0MzA5MiBhOWMzYzkzODI0NjUzZTA2ODkyMWY3MGJjMzgxNWZmYjc1NjNiNjQwIGxlZ2FjeS10cnVuaworNDMwOTMgNTNjODA2ZjdhMjUwODZjMjQzZjdlOTdjOWVkMmZhNGIzYWVlNWNkOSBsZWdhY3ktdHJ1bmsKKzQzMDk0IGJkMzcxNTM1M2EwOWI1NjI2Njc5NDUyYjQ0MDMwMTk2ZTcxZDk3ZjYgcDN5aworNDMwOTUgN2FkYTE2YTE0OTY4Njc0NjIzMTQzZDJkMDgxMTY1OTA1MjZjZWQ3YyBwM3lrCis0MzA5NiBjZDE4MThlZTdlYTlhOGNlODM5YmYxYjc2MTAxZmRiZmNhYjdhNWM0IHAzeWsKKzQzMDk3IGZmMzgxYjM4OGNmZjQyYzk3NTQ0ODdmNmZlYTZmYTY2YmI2YzIxN2QgcDN5aworNDMwOTggMDgxYjRmMGU4MWI3YmFhNjgwMjU0YTMwYjcyYzQ1NDUxZDcxYjc4ZCBwM3lrCis0MzA5OSAzMzQyYjNiNTg2MzA0MDUzYTc2YTBmNjNkZDk1MGU1MTJiNmNlYWVjIHAzeWsKKzQzMTAwIDNlMWVlNmUxNmM4MWY5MTJmNjkxYzI0NGFmMTQ2NmEwZGI1MTdiOWEgbGVnYWN5LXRydW5rCis0MzEwMSBjMDQ4YTA5ZDA2ZmY4Njc0ZTA1MDk0OTRhNWU1ODZhYWNlMjczYzA0IHAzeWsKKzQzMTAyIDExODM5Nzc2YzY2YzMyNDM2NmE3N2MyMDg5MWNkMWZjMDA2MDc4NmEgcDN5aworNDMxMDMgNDA1MTFiZjU5Mjk3OTgzZTQ5Njc0YmVmOWEyNzExZWRmYjg2OTkwZSBwM3lrCis0MzEwNCBhMDE2NzJhOTZkNDcyNzA0NjM2NjBiZjU1NzA5Zjg1ZjlkOTY1ODUzIHAzeWsKKzQzMTA1IGNlMjY3ZjY4MDY1ZTIyMDkyZjE3OGVjMTc2MzY0YTdmYzMyYWM0NGMgcDN5aworNDMxMDYgOWVmM2ZhYzVkMmMwYTJhOTQ5NjIyZTU0Zjk5MzEwZTA5MGIwMTA0ZSBwM3lrCis0MzEwNyBlYTViNjZhZjYyNDVhNDA5ZTJjMjNkNzY2MjE1Zjg3ZDRlODM1MDlmIHAzeWsKKzQzMTA4IGZkYzA1YjE2NzIzNmU3NTcyMTdkYzU4ZDE1OTNlNzBkMWZjOGE1ZGQgbGVnYWN5LXRydW5rCis0MzEwOSA1YWVjZWRjOThhZjY1NTllMDQ1MzlhYzU5MzU0MWU3ZTBlNDU0ZTJlIHAzeWsKKzQzMTEwIGY3ZmQxMWE3NWE2YTRkY2I4YTIzYjBmNjBiM2NiNDc2YmQzMmIxMTQgcDN5aworNDMxMTEgYzJjMTI4MTRmODU0YWJmMGUwODBhMTE1ZmJhYTQ1ODA4ZmI3YzY2MyBwM3lrCis0MzExMiAyYjA0YjljN2I1OGViMmQwMDZlNWI3NjExOWUzNWY1MWQzMTgzNjJhIGxlZ2FjeS10cnVuaworNDMxMTMgZjAyYTAzMjU0YjkxZTc3Y2E3NDAyYzU4ZjU3NzMxODBmMDRiNzUwNiBsZWdhY3ktdHJ1bmsKKzQzMTE1IDIwM2MwNmZiYjA3NTQ0NzQzYzJkNmRkNGFkZGNiNTM1MjQxYTkzMmYgbGVnYWN5LXRydW5rCis0MzExNiBkN2QxMmQ3ZmNjMzkyZjk3OTZhYzdmOGRlOTc5MzgwYjg1NTQxMGQwIGxlZ2FjeS10cnVuaworNDMxMTcgMjMwNDVmMWUzOWYyZjkxYzhmZDFmYTQ1M2UzNDAxODJlZDM4NjRiMyBsZWdhY3ktdHJ1bmsKKzQzMTE4IDY0YzgzZTBmNjgzZTU2NmFjNmRlMDA5NmUyYjYyNGNkZjZlMjNiYmUgbGVnYWN5LXRydW5rCis0MzEyMSBiMDFjODBkODgyNjdmZTUwYWZiYjM0Njc0YmNmM2NiMzcwYzVmOTgxIGxlZ2FjeS10cnVuaworNDMxMjMgNGM4MDRhYjg3ZWFkYWMwYWFjNjAyNGY2YmNiM2M2NDNiNTJhZmVkMyBsZWdhY3ktdHJ1bmsKKzQzMTI0IDFmNDU0OTg2NWFhZGJlNTU0YWVkNDI1OTVhZWQ4YWVkMWIyNTZhNDIgbGVnYWN5LXRydW5rCis0MzEyNSBlNDNkNWQyY2E1MGFiY2ViZjRjNjdlZjZhZjgwNjQ3M2E3MzEyMDVjIHJlbGVhc2UyNC1tYWludAorNDMxMjYgZGQ0OTg0N2E2MGQzMDBkMTc2MGYxNjA3YzUwNDRkYTI2NTFkZTcyZCBsZWdhY3ktdHJ1bmsKKzQzMTI4IGIzM2Q5MTY2ODY5NjE1Y2YyOTc0ZGM4N2U4OTJiNjk5MTg1NmNjNjMgbGVnYWN5LXRydW5rCis0MzEyOSA5OTQ5MzFiNmI4NzU0ODkyOWJjMzYxMmNkOGM2NTVkMjY1MTJkNjBkIGxlZ2FjeS10cnVuaworNDMxMzAgNDNjMzkzYjJmZTlmYTQ3OWQwN2RiNGI3OWNlZDAxZWE1NThjMzU0ZCByZWxlYXNlMjQtbWFpbnQKKzQzMTMxIDgxZDBlOTMyMDhkOWU4MTA1ZDI3MGRjNjY0MmRlZDRhNjJmMTVjY2UgbGVnYWN5LXRydW5rCis0MzEzMiBkMTM0MzBhOGJkMmNlMjU5ZWU5NTI4NWUzZDhhODVhYmE2NTBiODhjIGxlZ2FjeS10cnVuaworNDMxMzMgYjU1ZjUzMDQxOTY1MzU5NjQ0Y2FiZGM5ZmJiYzUyMzg0MDg1ZDRlYSBsZWdhY3ktdHJ1bmsKKzQzMTM0IDY4NWUyMTIzODY0ZDNmNmFmMDRiODY3Y2M5MDY5YTkyMzE4NTU4NjUgbGVnYWN5LXRydW5rCis0MzEzNSAzODQwMGI2NjI0MDQ3NWEyOTU5ZDIxMGIyZTBmMDUyMDI2YjE0M2M3IGxlZ2FjeS10cnVuaworNDMxMzYgM2Y5MGE5M2ZmNWQwZWE5MTg4MjRjNTFmMDgwYWM2N2NlZDNhMWVlNCBsZWdhY3ktdHJ1bmsKKzQzMTM3IDkyY2I0YTdmYzU1NGVmZmE2OTE2YjcxYWJkMjI1YTZkYjlmNGZlYTUgbGVnYWN5LXRydW5rCis0MzEzOCA2NzcxZjBlMDhiNjBhMjM2ZjIxNmU2NjdmZWI0MTMwYjEwOGY5ZDgwIGxlZ2FjeS10cnVuaworNDMxMzkgOTI5NTJhYzhlODkxMWYwNjdmNTZiZWJjNDlhY2VkOGQ5NTc0Y2FmZSBsZWdhY3ktdHJ1bmsKKzQzMTQwIGJiNDkxZTU1ZmI0YzI0MzNhNTFjY2I0ZTFlZWZmNTYwNzg5NDRmMWQgbGVnYWN5LXRydW5rCis0MzE0MiA4NDM5MjhjNmIyNGNkZGY2ZGI4YzI1ODdjZDI3OWNmZDgzOGFjZjAzIGxlZ2FjeS10cnVuaworNDMxNDMgNmMzZWMzNzM2YzUxNGRmN2FjMWRkMDgwMWY1NzRhMDhiOWE5YjkwNiBsZWdhY3ktdHJ1bmsKKzQzMTQ0IDk5MTBmZjY5YWY5NzNiZTMzOWMyYTc1Nzk4YjBiMGUzNDViMWFlYWIgcmVsZWFzZTI0LW1haW50Cis0MzE0NSAzYjdiMjk1Y2NhOTAyYmY3MTBmZmI3MzNkZWRkZTUwNzFhNmM5YjY3IGxlZ2FjeS10cnVuaworNDMxNDYgYzAxMWFmNGEyYjAxZmQyNTE3ZWVlOGUzZDJhMjNlNjVhOTJkZTk1NSBsZWdhY3ktdHJ1bmsKKzQzMTQ3IDA3YWI1NTc2MjViOWNlZWZlZmM3YWU2NDM4ZDVhMzk2ZWE1OTdmN2EgbGVnYWN5LXRydW5rCis0MzE0OCAyMzM1N2I4OGMwM2VhZmE2YmUyOTg1ZGRmNTU2Y2UxNTA1ZTM1YWQ3IGxlZ2FjeS10cnVuaworNDMxNDkgMWQzMDgxY2IzZWE2NzM1YmIyY2U2Y2E4YTk1N2JlZmJhMTY0NzM3YSByZWxlYXNlMjQtbWFpbnQKKzQzMTUwIDdjMjJiNWFhMzQzODcxZGI5NGQ1ZWU2MzFmNGUwYWYzYTc3NjRkYmMgcmVsZWFzZTI0LW1haW50Cis0MzE1MSA4ZDQyZjY2MWZlYzgwMjllMWEyMGMzNDNkYmJkN2IxOGE3YzY5OTBmIGxlZ2FjeS10cnVuaworNDMxNTIgNzc1Y2Q2OWY4YTIzN2RhZmVkYjk0NzI5ZTZhMTJmNjU4OTA3OTNhNSBwM3lrCis0MzE1MyA2YjUxNmYzMjFkODUyNGNiYmVlMTRkMWU2NjE3OTg0MmM4ZjliMWI5IGxlZ2FjeS10cnVuaworNDMxNTQgYjMxYjdlYzVhNmI0Mzk0MGNiOGU5MDEwYmJlOWMzMmE1ODg4ZTgxZiBsZWdhY3ktdHJ1bmsKKzQzMTU1IDNkYWJkOWJiNDk2ZTlhNjhjZDZjZDk0Yjc2MjI5NzNmYzc2NjQwNWEgbGVnYWN5LXRydW5rCis0MzE1NiBiNGQwZjhkOTUxNzlhNDZiY2NiNDlkODBkZDU2MTNkMDVhZTBjMjRkIHJlbGVhc2UyNC1tYWludAorNDMxNTcgZGU4ZjVkMWNkZjRkOTU4MjRhZWQzYjBlMzNkNzhkNzJmM2I5YjUwNiBsZWdhY3ktdHJ1bmsKKzQzMTU4IGQ2MmIxMzQ4ODk0M2Q3OGM5YzhkODE3MzIyOTMyMzJhODRiNzkwNDcgbGVnYWN5LXRydW5rCis0MzE1OSA4NTJkZTMzZWQ0MjdkNmE0MzBmNjFjZDg5ZDM2MjJkOWEzOTA1YThhIGxlZ2FjeS10cnVuaworNDMxNjAgMmRjNjNjZGIwOWNmMGRhODNiZjE0OWZmMzUwNzBhMmQ0MzMzNzI5OCBsZWdhY3ktdHJ1bmsKKzQzMTYxIGRiOTg2YmUyYzAwYzVkMDNhNWRlNTQ1YWU2MzFlZDgyYzA1Y2JkNzggbGVnYWN5LXRydW5rCis0MzE2MiBlODBmZGIzYTBmNDBhOTYzOWI0ODFmYWY4ZjY4ZmQyMWFiYWY0MmMyIGxlZ2FjeS10cnVuaworNDMxNjMgNzllNGRiZTRiZGM2YTYzODgwNGM2ZjU1Y2Q5NGJiMzJiZTdkNzZmZiBsZWdhY3ktdHJ1bmsKKzQzMTY0IGEwNmM5ZmQyNTEyMDhjYWQyZGVhZGJiNTllOTQ1YzBkODNiZGU4YjkgbGVnYWN5LXRydW5rCis0MzE2NSBkODYwMzExZjhhOTcxZTcyYTllYjMzMjUyOGZmZTM5NGNkZGM2MDU4IGxlZ2FjeS10cnVuaworNDMxNjYgMzYwNTIxOGQwM2ZhMDQzN2FlNGYzYjMzZWRhMTFhNWQxNTJiYWZiMSBsZWdhY3ktdHJ1bmsKKzQzMTY3IGRlMmI5NDJmMzdmOTQ4ZTBjYzZhZjZkYjRiZTliOTFiM2RkZjUxOWYgbGVnYWN5LXRydW5rCis0MzE2OCA1YTc3NTBkYjA5Nzc4ZTAyMjdmZWExZWYyMWI4YWE5ZjA2ZDRmZWEzIGxlZ2FjeS10cnVuaworNDMxNjkgYTBhYzc3MjU5Yjk5Y2U3ZmM2OWEwMjdmZGNmNjM4MjJlMjcxYzUyNCBsZWdhY3ktdHJ1bmsKKzQzMTcxIGQ4NTkyMjc2YjEzNzQ1YTkxYjhiMzRkMzQ4MWQ2ZDI3NDI1YjY2NGMgcmVsZWFzZTI0LW1haW50Cis0MzE3MiA0OTA3ZmI4NzljZDljN2E2Mzg4YWEzNzliZjc2NzgyMDU2YTA3ZGVkIHJlbGVhc2UyNC1tYWludAorNDMxNzMgNjQxMmVkNjk3NWRlZWU4ZmE4ZDk5ZWVhYjU1OGYzOWYxYzM2YWQ1NCBsZWdhY3ktdHJ1bmsKKzQzMTc0IDg3ZWQxZjNkMjcyZTRlYzMyMDBmMGY5NThlZjI3NTE1OWU5ZjJjMzIgbGVnYWN5LXRydW5rCis0MzE3NSA4MmFlYjU0YjBiYWFiM2YxZDY4MWE3MDdjMzM0MmJmMDA1YjUyY2NkIGxlZ2FjeS10cnVuaworNDMxNzYgMTM2YjQ1N2I1NDNhYjY1Nzk2YmI2ZmE2NDFlMWIzZGQxYzA5NGZiOSBsZWdhY3ktdHJ1bmsKKzQzMTgxIGY3OTkzZGM2YmYyNjRmOGJiMzA5NDg4MWQ3ZjAzZTViMmVlMTBkN2MgbGVnYWN5LXRydW5rCis0MzE4MiBkYjMxN2U0MzU3YWQ1NGU2Yzc3MGNlMmY2NzVjZjc3Njc2NzlhYTIwIGxlZ2FjeS10cnVuaworNDMxODQgZGIyOTdiOTQ0MmU0MGNhNTY2NTdhZjEyNWNjMDI0ODM1YTNjNzYxMSBsZWdhY3ktdHJ1bmsKKzQzMTkxIGU3M2IzNWQ4MTYxN2JlYjFkZDI4MDEyNDljODY2YWRhODA2MmRlNmIgbGVnYWN5LXRydW5rCis0MzE5NCA4ZGM0NGU5ZDVjOTM5YjgyZDYyNDExZjRjMjFjZTRkMzVkZGE2NmY0IHAzeWsKKzQzMTk1IGE5YzFlNTJhZGRmMjhiYmFkODAxYzk0Zjc0NzE3MDY3ZjIyYmY1NGQgcDN5aworNDMxOTYgMjUxZWNlYzA0ZjFiZmZkNjM1YjU3MGYxZDZlOGQ4M2ZmZDY4YjgzOCBsZWdhY3ktdHJ1bmsKKzQzMTk3IGUzNDUwNmU0NGU2NzY4MmI3ZDMzMjMzNTBkZTU0ZmM4YTc0ZjYzYzAgcDN5aworNDMxOTggNTJkZDQ1ZGIxZTg1MDQ3YWJiY2MwZTU2Zjc4OGUyYWJlODEyMTMxMyBwM3lrCis0MzE5OSBiYWY2NWRjNjM5YzE0ZmUwZTM5NTJmN2I1MDRjZTdhZjAwOTM2YjVlIHAzeWsKKzQzMjAwIDA4Y2Y4YjllYzIwODcyMzdiNGIyMzE4Nzg2NGEwOTE3YmY5MDI5ODAgbGVnYWN5LXRydW5rCis0MzIwMyAyZjRhNGY5NmFjZDFlNmY0ODI5YzE4ODMyODQ2Nzk4NGQ2YzhjZGU1IHAzeWsKKzQzMjA0IGFhMDM5ZGU4OTFjOTg3ZmU2ZmUwNDVlNTk4OTM1ZmE0OTMxYjk1YTcgbGVnYWN5LXRydW5rCis0MzIwNSAwYmI3NzAwNTkzZjc1YTIxZTdhN2M1NmE1NzgxYjk2YmZmNzAwMjAxIHAzeWsKKzQzMjA2IDZlOTI5MjM4ZTNhYzQ3YjE4MjlmMzE1OTBlZmVlYjEwMjdlNTJiNzUgbGVnYWN5LXRydW5rCis0MzIwNyBjOWVlMzJiNzkzZTc4ODQ2ZWQyYzY0NjhkMmIyNzM5ZDJkY2ZkNTk3IGxlZ2FjeS10cnVuaworNDMyMDggZTcyZDFjN2M4NTU0ODkwOWMyZmNmZTlmZGQxZmM4MmI1OTliNmM3YyBwM3lrCis0MzIwOSAzZjgyNDE0MWVlYjk5ZWJkODM0YWRkMzExNzJlYTFhNGU3YzljZWU1IGxlZ2FjeS10cnVuaworNDMyMTAgN2RhZGQzZmM1ZWZhYzZiYjBjOWRhOTkxMDNmMTk4NDhjNTc3YjZmZiBsZWdhY3ktdHJ1bmsKKzQzMjExIDcxYzU2OTRlMzQyM2IyNDVmMjRjODI1NTgwZTc4NWJjMjJjZWZmYjYgbGVnYWN5LXRydW5rCis0MzIxMyA2MTc3NDMxMTQ2MDBiYjRmM2JiYzliOTE2OTRmNWYyODdlMDkxZjRkIHJlbGVhc2UyNC1tYWludAorNDMyMTUgNzY3ZTZiZTU4OWEwNDBkYmU1NDZkNzZhZTYwOTQwZmQ1YjU0MWY3MCBsZWdhY3ktdHJ1bmsKKzQzMjE2IGRiYWYwYmNlOGQ0NjAyZDIwYTU1MWFkNDE2YTRmYjE1NDE1ZmE1OWUgcDN5aworNDMyMTcgN2VhYzIzYzhlNGU5ODkzZTA3NGZlNTk2MjZhMTQwMGFjNzliYjMzOCBsZWdhY3ktdHJ1bmsKKzQzMjE4IDRlZjk5Njk1ZjdiYmJlZWQ5OTViM2Q4MzFjMWUxYWQ5NTEzYzRhYzEgcDN5aworNDMyMTkgNzA0OWRjMGM2MjFhM2QyYjAyYjMyMWM4NTU2Nzc0YWQ4NDY1YjIzNCBsZWdhY3ktdHJ1bmsKKzQzMjIwIDUyMTdjNzAzYTk0ZjhhYmVhNTE4ZGNhMzU2MWFjMDg3MGE1ZmJiODMgcDN5aworNDMyMjEgOTFkZDRkNDRkM2JjNzBkYTZmNTc0ZjhhZDRjMjkxZmZlY2JjZGNkZiBwM3lrCis0MzIyMiBkNzUxM2YzOGIyMmY5OWViZDQ4NDU5Zjk0MjU1ZWQzNGIyMDc4OTNlIHAzeWsKKzQzMjI0IDY5MWRkMDU5MTY5MTcxN2M3ZjZjNWYyNzljODM4YzNmYTBiMDNiZGMgbGVnYWN5LXRydW5rCis0MzIyNSAwMDU3ODYyYTNiZGJkYWY2MWVhODhkYTIxOGIzOTYxZjI0YmY5YWE3IGxlZ2FjeS10cnVuaworNDMyMjYgMmQ5MmFiN2Y1ZTg5ZTBkOGJiZjRhMjk5NmY5OWZkNzgzMWExNDBmNSBsZWdhY3ktdHJ1bmsKKzQzMjI3IDRkODA2MDcwMzNmYjMxNWRlNTZmMDIyNzJiNDFjZDBhNDJhNmQ4ZDIgcmVsZWFzZTI0LW1haW50Cis0MzIyOCAxMGNjZTNmNjUxNzAyOWFhYTk3MWNmNGI1MjVjMDcwYTBhOGFlYWZkIGxlZ2FjeS10cnVuaworNDMyMjkgMzU0NTgxMTIzOWI0MGJhMzlkZTQ3YjMxMTVmNmMxMzA5Nzc5NTdiMSByZWxlYXNlMjQtbWFpbnQKKzQzMjMwIDE2Yjg4NTliMDc2MDVhYjZkMWY5YmQxZDUwMDg2YzVmZWU3MWQxOTUgcmVsZWFzZTI0LW1haW50Cis0MzIzMSA5YWQwZTUxNzUyN2ZmNDFiNzczNzE3YWE0MDMzMzkxNjE1YzkwYzE5IHJlbGVhc2UyNC1tYWludAorNDMyMzIgODE0OWQwYTQyNGE1NWUwMDU1MGUxOTI2M2ZjYzAyOTQ2OTYxMjkzNSByZWxlYXNlMjQtbWFpbnQKKzQzMjMzIDFhZjI0NWZhYzkwYTZiNmZhZWY4OGFmZjAwNGQ5NTM0MzBkMjRhZTMgcmVsZWFzZTI0LW1haW50Cis0MzIzNCBjMWU3MDJkMjhjZjI4N2ZjNjRhZjZhM2ZmNDFjZTg3OTE5YmI0MmUwIHJlbGVhc2UyNC1tYWludAorNDMyMzUgYTk1MDQ1MGVmNGViOTI4NzI2NGFmZjE4YzljN2E5MDNkMDQ2ZDliYiByZWxlYXNlMjQtbWFpbnQKKzQzMjM2IGQxMTcwZTlhYTc4OWIzYTRhZDAxNTNkZGEyZDA3M2MyY2U0ZGIzNWUgcmVsZWFzZTI0LW1haW50Cis0MzIzNyA3YzViZTdjMGZkZmRiYmMwYWMxZDkxYzA3MDM4YmM4MTQxMmRhNDEyIHJlbGVhc2UyNC1tYWludAorNDMyMzggM2UwOWM4NTY2ZGYxYWZkNzBhNTU0ZGIwNjA1MmJmMzU3MTQ3NGQ4MyByZWxlYXNlMjQtbWFpbnQKKzQzMjQyIGIyZTZkNmFhODZkMWMxYjMyMmFjMzUwNGY5MjBjY2NiMzQ1OWRiZTUgbGVnYWN5LXRydW5rCis0MzI0MyBiNGQ5MmVmMmYzMzgwZGVkYjI5ZTMwZmZmNDI4MDMyMDFhZmJkNmQ0IGxlZ2FjeS10cnVuaworNDMyNDQgMGM2MDI5MzhlZDhlODc5NzgzYTFkNjQyNWI5NGMzZWQ2NGVkMDlhNyBsZWdhY3ktdHJ1bmsKKzQzMjQ1IDJiN2VjZTc4ZTI5MzE0Nzc3NzY0Mzg2NWY3M2MxN2E3ZTZhYzBiZjMgbGVnYWN5LXRydW5rCis0MzI0NiA0NWRkOTM4YjdmZWIyMGZkOTA4Y2NkZjAwMmI2MTZkOTBkZTgwZGM2IGxlZ2FjeS10cnVuaworNDMyNDcgMDI3YzZmY2VlZTBkYWY5ODBlM2U0ZTgzNjI1NDI3MzljZjRhNWUyNiBsZWdhY3ktdHJ1bmsKKzQzMjQ4IDQxZDcwNTc4NTc4YTM4MTE2MGY0OGY5YjJmMjIzZjA4Y2UwNDgwMTQgbGVnYWN5LXRydW5rCis0MzI0OSA0Zjk3YjZhMjI5Y2UwMzE1ZjQzOTIzYWE1MmVhZGE3MGJlYzE0NzRkIGxlZ2FjeS10cnVuaworNDMyNTUgMDY2YzljZTQ4YzMwMDJiZWVkNGUzYjZmZmU2ZTU5MDM3YWVjNjM2OSBsZWdhY3ktdHJ1bmsKKzQzMjU2IDI5ZGY0ZmUxMjhhMGFiZWFiZjAxNzA2Zjk0ZGUwZTQyZDUwN2IxYzcgbGVnYWN5LXRydW5rCis0MzI2MCA3MmE3MjBkZDY0ZmI0YjcwOWZmNjQxNWVjMjMwNDRmNDE3MDliNzJhIHJlbGVhc2UyNC1tYWludAorNDMyNjEgMWVkN2I4ZGM3NzdhY2ZkNWY2ZWY1M2JmYWRmNDk5M2ZiYjQ5YmQxZiBsZWdhY3ktdHJ1bmsKKzQzMjYyIDk3MzU3ZmUzNDIyMjdiZDliZWEwZTA3OGE5ZmZkY2ViZTc5ZGYyMzEgcmVsZWFzZTI0LW1haW50Cis0MzI2MyA3ZTNiZjg0OTJjMDNhNjk2NWZlZjU1MmU2ZmU1MjdhY2RkMDUwNzU3IGxlZ2FjeS10cnVuaworNDMyNjkgYTE4YWEzZmJkZDRhYjBkODFlNzI1MjY5MTNmZjgyNzIyZDkwOGNjZiBsZWdhY3ktdHJ1bmsKKzQzMjcwIGZiNDgxZTBmNTc4NmU1MWVlM2UxZTI2NTVhMTYzMzU0OThhOWM5OTAgcmVsZWFzZTI0LW1haW50Cis0MzI3MSBhOGRlMGI5NjAwMjc1YmM0NjgzMDQ5MTEzNGE1NTc5YTU5NGExYzU2IHAzeWsKKzQzMjcyIDIzMWQ2MDRkZWQ4NDZlMGE0MWI0YzNjMTFiZGZlMzE2OTFjNjRjOTYgcDN5aworNDMyNzMgNTIwZTU1YmQ3NmQ2YzIzYzliZTYxOTMzOGMwY2M4OTQ4MmJiZTkyOSBwM3lrCis0MzI3NCA2NGFlMzJiMDc4Mjk5YTI0MGI2MWYzMjY0YjcwNjZmMmU1NThmMGJjIGxlZ2FjeS10cnVuaworNDMyNzUgY2FhOWFmZjA4NWE2NjYzZDIzZDkwNGE5OTMyMDBjZjFmNGVkODhjMSBwM3lrCis0MzI3NiBmOWYwNDExNWZiYjVmNTAwM2RiMWMwNDkyNzBhZDNlNmNjNGFmMDcxIHAzeWsKKzQzMjc3IGIyYTA1ZWE3ZWFjMWFkMmRjNTY0ODRkZTc4N2RmMmU5OWNmMDRmMWQgbGVnYWN5LXRydW5rCis0MzI3OCA4NjhhYjJhNjVjNzMwZWViNDk2MGZjMzQzNjIyYzRkMDJiOTFlMmNkIHAzeWsKKzQzMjc5IDY2OGE1YmE3N2RjNmYzZGNlNzU4YzI3N2M4NDY4NWExOGVhMjg1Y2UgcDN5aworNDMyODAgMzVjYzVlMTgwYWEzZTY2NGU3YzdjYjM0ZjljZTk2YmE0NjFhOGYyZCBwM3lrCis0MzI4MSA2M2M2MWRiNTUzYTg2OTZkYzNkMzE4Yjg0YjYxNTMxZGY3OTJmZThhIHAzeWsKKzQzMjgyIDc2MGZmYjBmYmEzNzM3ZDRlZWIwZTRmMWQzMmYyMzYxOGI5ZGExZDIgbGVnYWN5LXRydW5rCis0MzI4MyBiODU2N2I4NGM1MzEzN2Y0NzZhYTQxMDFhZTYyODU1OGY3MmNkYTgxIHAzeWsKKzQzMjg0IDBhZDM4N2ZiNjMxNDMyM2NiNWRmNTkzZWYzNWE0NmZiYzU5NTY3N2UgcDN5aworNDMyODUgNGJmZThhZmU4ZjY1ZWQxMzNlMTIxMzMzMzk1MTEzYmQ4MDVlOWM5MyBwM3lrCis0MzI4NiA1OTNlOGZiOWEzY2FmZTVjNDc3Y2Q1NjM3YTFkYzI3YTc1NzI0NTczIGxlZ2FjeS10cnVuaworNDMyODcgN2YzMjJlZjY4NDM4N2RhMWE3OWY0ZGI4OTUwZTkwYjNlYTVmZmY4MSBsZWdhY3ktdHJ1bmsKKzQzMjg4IGUzOGZmMjExOTFkZTUxZTk1MjZlZmE4NWE5NDIzODYxNWZmYjYzN2MgcDN5aworNDMyODkgMjQzNjMzMDFhMjk5YzUxMDdlZmU1ZWFiMDM2OTQzYzNhN2M1ZDVkNyBsZWdhY3ktdHJ1bmsKKzQzMjkyIGMxYTZiYTdlY2IyMzRhOTVlMDhjYTQ3ZjQyMDIwMzRiYWFjNDZlZmIgbGVnYWN5LXRydW5rCis0MzI5NCA2NDMxN2M3MWVkNmQzOTM2MWUwNzM2NTEzM2VjZWMzNjRlZWMzNGE3IGxlZ2FjeS10cnVuaworNDMyOTggYmVkM2Y1MmYwZGM2M2Y3ZjJhMGNhMGEyNDc5NThjNDFiOWE0YTkzYiBsZWdhY3ktdHJ1bmsKKzQzMjk5IDFiNzJkMGU0ZjRhYTBhZGE5ZjM5ZmQ4ZDY5YmNkNWQ2OTQ2MDI5NDUgbGVnYWN5LXRydW5rCis0MzMwMCA4YWIwMWE5YzE0MGI3MDJhMjk3ZmEyZjRlZDk0NTY5ODMyMjA5ZmE4IGxlZ2FjeS10cnVuaworNDMzMDEgMzk1YWQwZDU0MjNkNjBhNDFjZDYyYzBjZGI4YTRiMDY2NzJlY2M2YiBsZWdhY3ktdHJ1bmsKKzQzMzAyIGY1Y2QzMDkxZDk5ZjlhY2YxMWU3Y2JhZGUzOTYzZDIzZTlhYTlkNzkgbGVnYWN5LXRydW5rCis0MzMwNCBiMzljM2Q3YTVhZDQ1MGNkYjE2YWJlYjEzOTkzNjYxZWI0ZjMxZGI3IGxlZ2FjeS10cnVuaworNDMzMDUgNjQyNWE0M2JmM2M2ZTllZjU4ZmIzNjZhYWVmNzEzYTc1Mzk3YTc2OSBsZWdhY3ktdHJ1bmsKKzQzMzA2IDQ5NjIyZDY1YzI5ZDJhZjE3ODBmNjViOTY0YzA0MGNhMjM0ZTg0YWMgbGVnYWN5LXRydW5rCis0MzMwOCA1MWRmOTk0ODg1ZTk3OGYzNjRhNDZlNWY2OTVhMDA3MmY0M2NlMTYzIGxlZ2FjeS10cnVuaworNDMzMDkgOTZlNGQ1MzEyOGM5ZTczZTg1ODMxYTFmMDNkOTY1MmNjOWQ5YTkyOCBsZWdhY3ktdHJ1bmsKKzQzMzEwIGE4MmVlMzI5OGUxYWQyYjY0MjhlMGY3NzQ2MjI4ZjJkN2I3OTFlMjkgbGVnYWN5LXRydW5rCis0MzMxMSBjODQ0MzA1YWE4ZWQxZjIyZTA4MGM1ZTllYjE5MWYyOTJlNjcwYzFiIGxlZ2FjeS10cnVuaworNDMzMTIgNjljMzU4YmY2YTM0NTZkNTM4Y2RhMzEwMzIwYWIyNDE2YjY1N2YxZiBsZWdhY3ktdHJ1bmsKKzQzMzEzIDJjMWZlNzYxZjAxOTQxOTk4MGIyZTUwNGViNGZhOTA2YTEzYzVmMDEgcmVsZWFzZTI0LW1haW50Cis0MzMxNCAwNmQ3NjEzYTM1MjMxOWMyOTU2ZjQ4NTcyMDM2MGYxMDRhOGE4YjAzIGxlZ2FjeS10cnVuaworNDMzMTUgNTE1MTE4YzBlMzM4YjgzY2E1OTkyZWU4Njk2MGJlMTVjMGY5YzgxNiBsZWdhY3ktdHJ1bmsKKzQzMzE2IGIzNDQ0MDQxOWI2NzllN2UxMTM3ZTBlYWExMDU5OGRiMDliNmJlMjkgbGVnYWN5LXRydW5rCis0MzMxNyAzMGZhYmI4N2ZiY2MzMGZmZGYxN2RkNjQ4ODEzY2M2NzU5MzkzNWIxIHJlbGVhc2UyNC1tYWludAorNDMzMTggNTRhYTVhYThmMmNiMjZhN2RhOTNhYjJhNGNjNWQ3OTI0ZDE4NGQzNSBsZWdhY3ktdHJ1bmsKKzQzMzE5IDQ2MTc2ZmZjOGJmNWRkY2RmYzFjZmZkMWU1NGU5YmI1YTQ0NzQwYjEgcmVsZWFzZTI0LW1haW50Cis0MzMyMCBlMjM0ZmY4YmVhYTIwMjFiMmUxMmY0OWU3NzU0Mzk0MmY0ODVhMzg2IGxlZ2FjeS10cnVuaworNDMzMjEgZDdhNmVjOWRlODg3NTU4MTNkOWUyNWZjNTQyMjhiYjAyMzZjODgyZCBsZWdhY3ktdHJ1bmsKKzQzMzIyIDViYmY3MjI3YWQ2ZTliOTNjMzEyNTk3M2ViZWY3OGZhNTc3Nzk0MzUgbGVnYWN5LXRydW5rCis0MzMyMyBmMTk4OTBhODZjNDMzMmM1ZWQzNmQ0NTI3ZTA4OWRhNzA3ZmI3NWJiIHJlbGVhc2UyNC1tYWludAorNDMzMjQgNDE2MzQ4NzQ4NDYwNDQ4OWFhMGY0MWZkMmExNjM2N2U4OGFkMmJmMiBsZWdhY3ktdHJ1bmsKKzQzMzI1IGMwODE4ZjIxZjY1YTJkYWJhZmNkOTUwZGJhOWEwZWVhZWM5NmM3MTQgbGVnYWN5LXRydW5rCis0MzMyNiA5MjM4ZjA0ZWVhYTZjZTg1NDQ5NTliYWI3MGJlMmM1Yzc1ZDY4MmNkIGxlZ2FjeS10cnVuaworNDMzMjcgOGFkZGMzMTNhYjBmYzcyMDMyYTc0MTdmOTY5ZWM5OGJkYTVhNzFjOSBsZWdhY3ktdHJ1bmsKKzQzMzI4IDc5OWI0MGM0YTJjNjFiYTlhMTU5MDFlNzg5NGU0NmU4NTA1MDJmNzcgbGVnYWN5LXRydW5rCis0MzMyOSA4ZDU3ZDI1ZTY1NDg3OWM4NjlkZDlmZWNlOTA5ZDI3NGFhMDU3MjcyIGxlZ2FjeS10cnVuaworNDMzMzAgOGY3YzAzYWNhZGRkYmM3NjI5MjE5YzdhNjkwN2U2MmE4YzYzMTVhMiBsZWdhY3ktdHJ1bmsKKzQzMzMxIDZlMWE4OTljYWM4ZWU2ZGQyM2ZhYjY2YTVlNWUzNTJlZDllZDIxMmYgbGVnYWN5LXRydW5rCis0MzMzMiBhNGQyZjdiODQ3YjFlODI4OTU4MmZjMjQ0ODRiNzNkZTU4OWZlZDVlIGxlZ2FjeS10cnVuaworNDMzMzMgOTRmNTRlYzYyZDE0MzhiMDQzMDc2Mzk3ZWI5YmRmMGU3YjM1MzU5MSBsZWdhY3ktdHJ1bmsKKzQzMzM3IGU1Y2ZkNGEzZTY1YzYxNzJhYmU5MTI2NjcyMjEwMWQ5NzcxZmIwZDcgbGVnYWN5LXRydW5rCis0MzMzOCAwMDk4ZTcyNjRlYWFjNTRhM2VmYWY4ZTJiZTM4MjEzNmJkZWMyMjhmIGxlZ2FjeS10cnVuaworNDMzMzkgMzRmMjBhYjQ0Y2VmZDQ5MDlhYTBmZTI1YjUzY2YyOGZjZWFiMzgyOSBsZWdhY3ktdHJ1bmsKKzQzMzQxIDlkOGIzM2FmZjYwYzEwMGU1NTI5ZmEwNWI1YjYyY2RmZjkyYjE1NDIgbGVnYWN5LXRydW5rCis0MzM0MiBiMDUyMjQ3YjE4MDlmZmVjNTczYjkyOTY4MDdkMjA0NjhkZjY5NWE0IGxlZ2FjeS10cnVuaworNDMzNDMgZWUzNmMxNmQ4ZDJiYjE1ZTlkNDNjZDBhOGE5MTRlMmIyODFiYzM1MyBsZWdhY3ktdHJ1bmsKKzQzMzQ0IGMwNDFiMzYyYmIwNGQ4Y2YxNzUzYzQ3YmJiMjZhZGU0MTZkYTg2NTggbGVnYWN5LXRydW5rCis0MzM0NSBkYzE4MzVmYjllN2MzYjI4YTVhY2M2MTk3ZTZlNzY2MmE1NGIwOGQ0IGxlZ2FjeS10cnVuaworNDMzNDYgNDM0NTJmMWZlYTY5MzRiOTQzODI5OWVmNjQ3ZDI4ZGE4MDZlOWIzYyBsZWdhY3ktdHJ1bmsKKzQzMzQ3IDM3M2Y3ZmUwZTczM2Y0YmFiZDEwNDQ2ODMwYmI3MWJjYjcxMThhMjggcmVsZWFzZTI0LW1haW50Cis0MzM0OCAyMjM0NWQxZTY4NTI3MDNkN2Y0NWVlODI1YWI5OWNmOGQ4YzgwNTRiIGxlZ2FjeS10cnVuaworNDMzNDkgMjYxMTE2ZjY4ODljMmM0YzdhOTRkYWFlZWFjNjNhZjM4Zjk3MzA1NiBsZWdhY3ktdHJ1bmsKKzQzMzU0IDNiNjFlNGFhN2VkZTFhN2FjMGIyOWYwZmEzMjI1ZWQyOGVlNGVkYTkgbGVnYWN5LXRydW5rCis0MzM1NSA2ZWI5YjE2ZDZlMjE1ODYzZDIzYWE5YmIxZDkwNzY5YjEzMDU5ZTgxIGxlZ2FjeS10cnVuaworNDMzNTYgNDFhMmQ3OGQ0M2M2OTdjY2MwMjg1MzFmZWI3NDVmNjc4NDBiZmQ3OSBsZWdhY3ktdHJ1bmsKKzQzMzU3IDA0OTAwNGQ3OWZlZmIxODAyYjZlNWM4MjhjNTgxYmYxNGQwMGFjYzYgbGVnYWN5LXRydW5rCis0MzM1OCAwMGU5ZDU5YzIzYjRlMzlhMjU1MjI5NWMzMDVjYTI2ODBiZGFhMTY3IGxlZ2FjeS10cnVuaworNDMzNTkgMzUyMGY5NzE0ZThjMTA0MmQxOGE1YmM2MGMxOWY3OTdlMzBjMmRiNyBsZWdhY3ktdHJ1bmsKKzQzMzYwIGM4Zjg3ZjA4ZmUwYmRkZjA4ZDFkMjU0MTFhZGVkZjBlNTFhMTcxNWMgcmVsZWFzZTI0LW1haW50Cis0MzM2MSBjMTFmZTJlMjk4NGQ5YjM3NTg5ODhjNGEyN2MxOWRkZDBhNjVjYjRkIGxlZ2FjeS10cnVuaworNDMzNjIgNTJkZWJiYzNjYzA4YTJlYTM3MGViMmQ0OWVmOTc4NzA0YzAyODhhYSByZWxlYXNlMjQtbWFpbnQKKzQzMzYzIDkzMzQ0ZGE3NmFjZDBlNWY0MTBhMjNmZjdmYmYxOGM3NDM1N2IzYzUgbGVnYWN5LXRydW5rCis0MzM2NCBhNzgxOGMyODc0OWY0YWE3MjZlZjJhODJkNzViMTdhOTUxMjY3Y2VlIGxlZ2FjeS10cnVuaworNDMzNjUgZjRjYTAzYjg3MTYwYmU2ZGRkNGQ4MTI4ZGZlMTc2NDI2MTM3OWUyNCBsZWdhY3ktdHJ1bmsKKzQzMzY2IDk0ZjE2MTNiODdkNWIyYmFmMDlhOTkyMjdhZTJiODM5ZDZmYTZlYjkgbGVnYWN5LXRydW5rCis0MzM2NyAwMzRjMGNmNTAwN2IyODQyNGZlYjYxMjk1YmY5YzRkYTY3MzM0MTdmIGxlZ2FjeS10cnVuaworNDMzNjggN2I1MjQ4MGMxMmM2MmJlZmM2NWY2ZDllMzk2ZTI5Yzg1YjRhZDk5ZCBsZWdhY3ktdHJ1bmsKKzQzMzY5IGFmMjRlYjNiYmZjZWI3ZGVlNzFjYTA0NzhjMDAyNjVlZmY3MmM5MzYgbGVnYWN5LXRydW5rCis0MzM3MyBlMTJlNDkzYjUyNDQ0NTRhZjgyZTdhNjA5YzI0YzRhOWQxM2RjYzlmIGxlZ2FjeS10cnVuaworNDMzNzQgYmM1MTYxZjI5MmI3NzEzMDE5MzhhOTU2ZTVmOWY0NWM3ZWE2NTA4OSByZWxlYXNlMjQtbWFpbnQKKzQzMzc1IDVhM2YyMjgwODdhZmRlM2FiMzY5ZjA1MzEyNGM3MzJlN2E3ZmNkYWUgbGVnYWN5LXRydW5rCis0MzM3NiBiNzU0NDBjYmZkMzRmMTVlOWY1YzU4ZTE0Y2VjMmJkNzEyOGY1ZTJkIHJlbGVhc2UyNC1tYWludAorNDMzNzcgNjE0NjFlZWJkNThmN2UzYmM0MGNiODFhN2UwYjZmMDczZjE4NGM1NyByZWxlYXNlMjQtbWFpbnQKKzQzMzc4IGEyODQ3YmIzMjhjMGU2ZTJlNTNhYmE5MWQyNDA1YWEyMzlkOTRiYjIgcmVsZWFzZTI0LW1haW50Cis0MzM3OSA1ZDYyNWY1ODlmMmE3Y2M3Zjg5NDFlZWFkZTljYTc1YjI2YTZmOTBiIGxlZ2FjeS10cnVuaworNDMzODAgZDhkZTc1MDAyOTFkZDQ1NzYxYzFmYTMxNmY0ODEzZjMzOGM2NzUyNCByZWxlYXNlMjQtbWFpbnQKKzQzMzgyIGE3ODM0ODQ0ZGNmNjEwMTY4Y2FkZWUzM2RhMzJlZmUzNDRiMjkxZmEgbGVnYWN5LXRydW5rCis0MzM4MyBiYWRhYTdlOTFkOWE3ZTcwZGFlNjMzMTQzMWE4Zjg3NDM4YTRmMWExIGxlZ2FjeS10cnVuaworNDMzODQgYTAzYzk1NWZmZWQxMGZmZWIzNjE0ZDhjOWU0YjVmMmI2ZTg1NWYzMyByZWxlYXNlMjQtbWFpbnQKKzQzMzg1IDgwYzRmYzAzZmY5YjdkNjhiZmVmNjNkMWI4MzQyNTQ5YTQxZTlmODYgbGVnYWN5LXRydW5rCis0MzM4NiBkY2Q0NTliMDM2NzA2Yzc0NzI0YmYyZDQzYjlhNzQyYTM0ZGU3NGNiIGxlZ2FjeS10cnVuaworNDMzODcgYjk0MjYwOTNkN2VhNjdhZDE5OWNlOWMxOTQzMzFmZjFmNmEyZTY3YiByZWxlYXNlMjQtbWFpbnQKKzQzMzg5IDYzYzQ0MjI2NjcwNTZiNmMxYzExYWU2ZDZlOTdhNDk3NzFmNDBhMDUgcmVsZWFzZTI0LW1haW50Cis0MzM5MCA4Y2NhMjQ5MjYyNmNlNDA4Y2Q1NjcxMTA4MTFjMDY5MmZkMWQzN2RkIHJlbGVhc2UyNC1tYWludAorNDMzOTEgNzYyZTViOGQxODlkYWVhMDdkZjE0ZTk3NzBhYjVlODlkYWRlYjllMCBsZWdhY3ktdHJ1bmsKKzQzMzkzIGVmZDE0MWNiZjZjYjM3Njk0MDEwODYwNDIwYTRiNDI0MTRjMjQ1YTMgbGVnYWN5LXRydW5rCis0MzM5NCBiYjFiNDg1MTYxMzE3ZmVjMGEyYjI3MDkwZDBmZDEwNzUyMGEzNDA0IGxlZ2FjeS10cnVuaworNDMzOTUgNGUxYWZmMGUyMGQxOGZiNzQ4MjgwY2EzZGE3ZmZhNzdkMTJkNDgyZSBsZWdhY3ktdHJ1bmsKKzQzMzk2IGNjYmRjZmM0MGM4MWM0NjhiODJkNzUwNDY3M2EyMjBmYTZhMDExNGYgbGVnYWN5LXRydW5rCis0MzM5NyBlZTRhNjBjNzEzNTcxMjdmN2U1ODE0NjI3YWJiZTlmN2QxOTBlODMxIGxlZ2FjeS10cnVuaworNDMzOTkgOWM2OTM3ODUxNmFiMGZiYjU4ODJiNzhlOTkzMWUxOTA3YzljNzViMyBsZWdhY3ktdHJ1bmsKKzQzNDAwIDUyMDMzNzZmMTU4OTJjYmRlOTRmYTAxZTg5Zjc3Zjg2YTI1Y2QzNjIgbGVnYWN5LXRydW5rCis0MzQwNCBlZjgwNTlmODdmZDJmOTJlYmQ0MTEzNzgxMTY3NzY1ODg4MzJlMmM3IGxlZ2FjeS10cnVuaworNDM0MDUgYTE1N2Y1YTY5ZDM1YzYwOTA4ZWEwNjNmOWE3YjA5ZGVhNjkyNzQxNyBsZWdhY3ktdHJ1bmsKKzQzNDA3IGFiM2VmYmNhNWM5MjA5ODQxODY4NzQwZTk3NjcxODliOTQ4OGIxMDYgbGVnYWN5LXRydW5rCis0MzQwOCBlNDk0NTVlOTRiZWUyODhmMDk0Zjc5MzQ5MjgyNGUzNWRhMGQ3ZmJkIGxlZ2FjeS10cnVuaworNDM0MDkgMWY2MWFhNDZmZWU1YjNkMzAyMjgwMTQ1NGU5OWIxMTQ3N2EwOTZhMCBsZWdhY3ktdHJ1bmsKKzQzNDEwIDQzN2QyNzZjNzMyYzdiZGE3OTM1ZGE4MDYyOGNlZDNmN2Y1NjU2ZjMgbGVnYWN5LXRydW5rCis0MzQxMSA4OTE0MmNhZGNmYjllNzQ3NjkxMzhjZTU3OWVjN2U0Nzk0NTllZjgxIGxlZ2FjeS10cnVuaworNDM0MTQgOTNiYTE1NjE5ZjVhYWM5Mjc4ZWY0ZjQ4MjkyMDBjZWYzMWFhNjFiZiByZWxlYXNlMjQtbWFpbnQKKzQzNDIwIDYwYmUzZjM5YTcyYmRmODU4YTE4MDg0YzE5NzVkZTQ3NjMzYjU1ZDIgcmVsZWFzZTI0LW1haW50Cis0MzQyMSAxY2EwMTJjZTQyN2UzMzY0YWM1MGViNjFmNTc0N2UyZmVkNWNhZGFiIGxlZ2FjeS10cnVuaworNDM0MzUgYjg1YWQyMTY2YzAxYmU3YWQwZWUyMGU0YzM0NDJhNjNlNTFkMGE5NyBsZWdhY3ktdHJ1bmsKKzQzNDM2IGI4ZDFhNDVhMzA1NzMyOTYzOGVmYjQyYmI4MzJiMTFiNjE0OTZjNTEgbGVnYWN5LXRydW5rCis0MzQzNyA4MWQ2MTE5ZGJjNjZiNTdkYWE5MzNjMDQwYTAyOThkZmQwMTMzODYwIHJlbGVhc2UyNC1tYWludAorNDM0MzggZWZiMDlkYmFhNDBlNjdkYjk5NjJkNGFkZDVjMGQ3OTA2MTVkMDUzOSBsZWdhY3ktdHJ1bmsKKzQzNDM5IGFjY2UwNDBlMGExYWFiYjBjYmY0MDAyMGM3ZWFhYTUyN2Q3MGRlOWEgbGVnYWN5LXRydW5rCis0MzQ0MSA0NGU2ZmM4ZDAyZTFjMWZjOGY3OTIwZjBjODExNzA5YzRjODgyZTIwIGxlZ2FjeS10cnVuaworNDM0NDMgMjQzNDdlNDY1NmE0ZmQyNWQzYjFlZjIwNDgzYzgyZjdhM2E4Y2JiNiBzcWxpdGUtaW50ZWdyYXRpb24KKzQzNDQ0IGU5ZTgwOThmNjU3MjQ4ZTYxYjNhODI0YTE4MDFjZjkwNjY4MjUxMDggbGVnYWN5LXRydW5rCis0MzQ0NSBmMjg0ZTg1NGZlNzJlYzQ3YzMwYTU2OGQ0MGY4ZDVkZDljNDU4MWUzIGxlZ2FjeS10cnVuaworNDM0NDYgZTE1NmM1ODE0ZmNjYmM1MDY1YWU0M2UxM2M4Y2Q0ZjJiMGViNjAyMCBzcWxpdGUtaW50ZWdyYXRpb24KKzQzNDQ3IDA4YmYxMTIyYzE0NDBmMjc1YjNhY2QwZjliZWY0NDMxNTVjZGJhYTcgc3FsaXRlLWludGVncmF0aW9uCis0MzQ0OCBmYjdiNTJjNDExNmMzNjNmZjkxMjIyN2EzM2Y2NmVkMTBhMjliODM5IGxlZ2FjeS10cnVuaworNDM0NDkgMTMzZDRiYjYxYmFiMmYzYTExMzkwZjA0NDRkZDNjMzAzZmYzNWUwMSBzcWxpdGUtaW50ZWdyYXRpb24KKzQzNDUwIDk1NWE4NmY4YTE0MGMwMjY4MGQxOTBkZjRhMmQ1YTFlOWY1NGMzY2Igc3FsaXRlLWludGVncmF0aW9uCis0MzQ1MSA3OGNhYzIwZjk2NDJkNzJkNjEwYzJjNGFkZDZmYjAzMTY2YmFkZDliIHNxbGl0ZS1pbnRlZ3JhdGlvbgorNDM0NTIgNjkxODc3OTlhOWY2YmU3ZGY4MGY2MmM1YjVlOWNjOTIxN2ZiYjY4MyBsZWdhY3ktdHJ1bmsKKzQzNDUzIDc5YTBmMDgwZjg5OGMyNTRiY2E5OTliOWQzYzMzNzNkMWM4OWY0YmEgbGVnYWN5LXRydW5rCis0MzQ1NCA1ZTFiNmY1NTM3NjMxM2M1YWM1YmE4YTI1ZTQxMmJjNjA4NzdjNjZiIGxlZ2FjeS10cnVuaworNDM0NTUgODQ5NjdhMTk2MmNiYjJhNWM3NDI3YTNlYTQ0YTdmNTMyNTNjZDI1NyBzcWxpdGUtaW50ZWdyYXRpb24KKzQzNDU2IGNlNTZjNWUzY2IyMDUwZWFlZDBhYWY0NTFlODJiMWNmODhlYzg2NTUgbGVnYWN5LXRydW5rCis0MzQ1NyBlNThhNzFhODU1MGU3YzkzN2I2MjBhZGMzODhjZGE1YzcxYzJmZTRlIGxlZ2FjeS10cnVuaworNDM0NTggYWFhMDRiZmFmYzU4NTVhMWZkNWY0NDczMzQ1YWRkY2E2MTYyYzA0MiBsZWdhY3ktdHJ1bmsKKzQzNDU5IDIzNWY2MzVhYzQ1YTA0ODcwYmRhODg4MDkyZGQ0NjgxMTdkMmRiN2EgcDN5aworNDM0NjAgMzYxOTBkN2ZkOGFiMmVhYWM5OGE2NDVjMzEwMTJmM2Y2NDA3ZmE1MCBsZWdhY3ktdHJ1bmsKKzQzNDYxIDA4OTlhODA0YTU5NGNjZjkyOGJiZTY5MmU1OTgzMWU3ZmU5Y2VlNWQgbGVnYWN5LXRydW5rCis0MzQ2MiA2MTQ1MmJkMTI1ZTVlMTA2YWQ5NDZhMTgyNTkyZTMzZjQwZGZmODM5IGxlZ2FjeS10cnVuaworNDM0NjMgMjI4ZTI1YzkzYTk3OTNiNjg5NWNjNDM2YzM0ZWQyMTk2MmM3YTZkMCBsZWdhY3ktdHJ1bmsKKzQzNDY0IGM3MmJjODQ3MGY2YzllYjgyNGY3YzkwNTk4NjRhMTI5Yzc2MDI2NTUgbGVnYWN5LXRydW5rCis0MzQ2NSAxOTA1OWRmNDVjZmU5MDJmMGUwOTA5ODYxZDFkMzk2MTk1MGNlNTRiIGxlZ2FjeS10cnVuaworNDM0NjYgMDQ5NjA2OTMzMzI4ZTg5MDgyMWUxMzMyOTBiYzk5NzRkNTM1NzA0NiBsZWdhY3ktdHJ1bmsKKzQzNDY3IGY1ZTc5MmE5M2M0MzFhNGRiMGZmZjU1NTY4YjhiODAyZWUxMDk5MmUgbGVnYWN5LXRydW5rCis0MzQ2OCA5OGY1YzkxOGEyNGFjYjkzMWUxZjc3YmViZjMwODQzOTA2ZjQ0NTY5IGxlZ2FjeS10cnVuaworNDM0NjkgMjAyZmU0YWFmY2JiMmMwODIzMGNhOTk2YmJjMzFhNGVlN2VlMGMxMiBsZWdhY3ktdHJ1bmsKKzQzNDcwIGQxOTkzZWU4YWM0MTFkMWZjMTIxNzZkYjQyOGNkMDJhMGZhZThkNWEgbGVnYWN5LXRydW5rCis0MzQ3MSBjYjI2NDVhNTU0ZDg4MmFmN2EyYjdhZmQyY2JlMTI3M2U1ODg4YzFlIHNxbGl0ZS1pbnRlZ3JhdGlvbgorNDM0NzIgMGQzZTVhYzA3MmIyYTE3YjQ5ZTM3MzAyNTA1OTBhY2E4Mzc2M2RhOSBsZWdhY3ktdHJ1bmsKKzQzNDczIDMyZTc2NzY5OTAwMTRiZDFhOTU0MTM5NzU1N2MxY2E0YWZiNjIwYzYgbGVnYWN5LXRydW5rCis0MzQ3NCAxNjRmOTVlOGUwY2NiNTA2OGRlY2QyMGQ1YWNlYTAwYWFmZjdlZGMzIGxlZ2FjeS10cnVuaworNDM0NzYgYzQ5ODhhYzU4OTk5NzkwZTUxZmY0M2FlYTY0Njg2N2IxMDljMjc4OCBsZWdhY3ktdHJ1bmsKKzQzNDc3IGQ2NWE5YzljOGE3YTJlYTM3MTczNDZhNGM0ZjFhY2YwM2I2ZWNjZjEgbGVnYWN5LXRydW5rCis0MzQ3OCA1OTkxMmI0ODEyZTZhZDg1ZWU0YzY3NTFjYmVlNzMyZTBhNjY4NTg2IHJlbGVhc2UyNC1tYWludAorNDM0NzkgZmI3ZDg5NWE4ODk3ZjUzZTM2ZTg4NGIzYzRjOTQ4NzU2M2JkZDlmOSBsZWdhY3ktdHJ1bmsKKzQzNDgwIDg2NmRhN2YzMGU1Njg2MGE2MTE4NmM4MGE2ZTE1Y2ExYjk4ZTRlMTAgbGVnYWN5LXRydW5rCis0MzQ4MSA2NzE5MmRhM2U2OWM5ODViYjEyNzJkYTkzMmQ3ZGU2MDczMDMzZmFkIGxlZ2FjeS10cnVuaworNDM0ODIgYzc3MTE1ZGRkYmUxNmRmNTJmYmY2ODIyNDlkZmEyYTNiYzViNTU4OCBsZWdhY3ktdHJ1bmsKKzQzNDgzIGFhYzAwNWU4YmI4MDA3OTAzZWQyZTUwZTcxZjU5ZmI5ODlkNTYwMDYgbGVnYWN5LXRydW5rCis0MzQ4NCBiODBiNWY4NGFlNTRmMmQ0NTIzMTVjZjY4OGJlNDE3NzRjMDdjYjNlIGxlZ2FjeS10cnVuaworNDM0ODUgYTdlYzc4ZjhkMDg2NmU2ODgyZjg4ZDU4ZjAzYmY4MDBmMWE2Y2M5NCBsZWdhY3ktdHJ1bmsKKzQzNDg2IGE0OTUwZWE1NTZiNTM0MzliOTU4MTcyYWJmOWI5MTZiMDcwYzQ2ZTQgbGVnYWN5LXRydW5rCis0MzQ4NyA3NWY5ZWIwMTEyMjZlMWYzZWY3YWUxYzU2YWE2MGE2MTFmZjA5MGFlIGxlZ2FjeS10cnVuaworNDM0ODggNmM2YjIwMDQ0M2UzNmM3YjQ0ZTA5MTYxY2RjN2IyODU1ZTU2MTUxMCBsZWdhY3ktdHJ1bmsKKzQzNDg5IGM5YTYyNzM3NzViNTAzYzQxZjZkYmM2ZDVmN2M0YzQwMjc4MzhlYzYgbGVnYWN5LXRydW5rCis0MzQ5MCBkYTc3MDY1OWY3N2I4NDJmMTJhZTRmNmUwZjhlYjJjNDZlNjcwYjZkIGxlZ2FjeS10cnVuaworNDM0OTEgNmZlZjk1NzcxMmI5MDZjZjNjZDI0NjBmOTE0MDZiZmVhMDJkNmNjZCBsZWdhY3ktdHJ1bmsKKzQzNDkyIGE2MWQzYWZkZmM0YjQ5M2M5ODMwNGQ3N2Y0NmYxYjkyNWZhMmFjZWYgcmVsZWFzZTI0LW1haW50Cis0MzQ5MyBmMzMwMDQ4ZDhiZGY4MjAyNDE0YTMzNjRjYWQyNGYxOTUxMjBlNmVlIGxlZ2FjeS10cnVuaworNDM0OTQgZDYxMGZjZGI4OWY3ZWJiMWJmODA5ZjUyMjIwYTViY2I2YWY5OTk5YSByZWxlYXNlMjQtbWFpbnQKKzQzNDk1IGZlM2I5M2MyMjQ4MTRmMzYwZWI2MGIzNWIxMGQxYzk4YjZkMmM4ZjEgbGVnYWN5LXRydW5rCis0MzQ5NiBjNmNmMTFhY2I0MWZiMzBiZTg0NGYzN2U0YTUzYWY5Y2NhZDBhMjQ2IGxlZ2FjeS10cnVuaworNDM0OTcgZTYwYzhiOWIyYjRmM2VkZWQ1YzkwYzAzMWVhZjMwZTFlZTFiYjdlMCBsZWdhY3ktdHJ1bmsKKzQzNDk4IGNjMzVkM2E4NzlhZDQ5NGNlMzE1OGZjMmJiNjU0ZGFmMTIyYWJiNDUgbGVnYWN5LXRydW5rCis0MzQ5OSAzODUwYTQ0MzQ4M2ExZmEyY2ZjZGMwNWNjOGUzZjQ1MTY2OTgyYzJjIGxlZ2FjeS10cnVuaworNDM1MDAgMzcwNDA0NTliZjJlNDFhODQ1MDgxYWY3OWJmYTFiYzg2MzdlMzFkOCByZWxlYXNlMjQtbWFpbnQKKzQzNTAxIGEyNGNiZjk0YmI4ZTBjZDQ1ODM1Mjg2YzJlNDczOWVhYWY1Mzg1NzcgbGVnYWN5LXRydW5rCis0MzUwMiBiZjY2NGExNjBmYzBhZGM3NDNjZGViOGNkOGE5NGU5OTQ0ZmZiZDVlIHJlbGVhc2UyNC1tYWludAorNDM1MDMgMjkxNGU3YjRkMjVhNDAwNzBmYjVhODBlM2Y4YWY5Y2Y4NjM3ZTJhOSBsZWdhY3ktdHJ1bmsKKzQzNTA0IDQzNmIwM2ZmYThhMjQ4ZmQ2MjYxMWNjZGQ5NmVjMTQ0YzE5ZTQ0NTIgbGVnYWN5LXRydW5rCis0MzUwNSA0YThlZjcwZGUyMTJlNDJjMmNlYTE5ZmI2NjY4NmMyYzMwMmU3ZWJlIHJlbGVhc2UyNC1tYWludAorNDM1MDYgMDE2ZDNkMjNmZjUyZGM0ZGJmMGM0MTM0NDVhZjBiMTcyMmRjN2U5MCBsZWdhY3ktdHJ1bmsKKzQzNTA3IGE3ZjhiMGJlNTk3ZTU3Mzg0ZjFlZjFmMWE5MzIxNTIxY2M0ZmJiMmYgcmVsZWFzZTI0LW1haW50Cis0MzUwOCA0N2ZiYmE4NDlhNmM4MTk3MzA4OGE0Zjk0YmIxOWRhNTc1MWJlMjBhIGxlZ2FjeS10cnVuaworNDM1MDkgODY3MGEyNzAxYTBmOTZmMmI4NmQ1OTVhYTI2MTVhNGJiOTgwY2Y1MyByZWxlYXNlMjQtbWFpbnQKKzQzNTEwIGZhYjY3MmMzZGRlNjU4NzQzMjU5N2NjZTA5Zjg1ZmVkZjNhMGU0ODQgbGVnYWN5LXRydW5rCis0MzUxMSA0NjJjOWQyYTA3YmIzN2NhMjg2Y2IyYzQ2ZjQ1MjkxZjA0ZWVmMDU3IHJlbGVhc2UyNC1tYWludAorNDM1MTIgOTgyNTE3ODAyMzZkN2Y0NGFiNGIwMjlhMDBjMzI4Yjc3M2VkMTFkOSBsZWdhY3ktdHJ1bmsKKzQzNTEzIGYwNWJkOThkOTM1ZDU2ZjVlYzE4YjU1NWEwNTY4M2FjMTQ5YjVmYzIgcmVsZWFzZTI0LW1haW50Cis0MzUxNCBlNTQ2Mjc0ZDY1MDNlYTIyMTM0NTgwYjU3NjgwN2IxYjNmYjI0OTU0IGxlZ2FjeS10cnVuaworNDM1MTUgNTkxODVmZmE4NjFkYTBmMTYwZTNhOWMyNjBkZjI1ZjQ1YzE3NTJmNCBsZWdhY3ktdHJ1bmsKKzQzNTE2IGI0N2Q4MjE5ZWNkNjFmZGFmOTA2Nzg3NjBlODMzMjIwZmRkMzQ1MzUgbGVnYWN5LXRydW5rCis0MzUxNyAzNWNmOTEyOTc2OTNlZjA0ZmZmNmE0NGQ1MjA0OTY2OGZiMjdkMzIyIHJlbGVhc2UyNC1tYWludAorNDM1MTggYjgyM2Y1ZmU5ODBjYzM5ZjBiODQ1MTIxMTE0ZmNlZjgyNDkxMDBmYiBsZWdhY3ktdHJ1bmsKKzQzNTE5IGE1MzNkNWI1ZGI4NDAxNGU3Mzg1YTJiMzIxOTQ3MzJiNWNmODM3ODEgcmVsZWFzZTI0LW1haW50Cis0MzUyMCAwNTkxNGU4ZGVkNzNlZGI5OWVhYTM0ZmFjZDIzMzRmNTAzYjg5NzJlIGxlZ2FjeS10cnVuaworNDM1MjEgODU4YWU5NTRmMDU1ODc2NDczMzc5Zjk4NzZhODYyOGQ2ZmIyYmMxYSBsZWdhY3ktdHJ1bmsKKzQzNTIyIDg3MGQ1NmEzYTIwYmU0ODVhNmNmMmMwN2FkMWY3NGQwMDU3NzFhNjYgcmVsZWFzZTI0LW1haW50Cis0MzUyMyA0OTIwNDQwMzRhODdiYmI0ZWE0NWQ5NWM3YmFiYzI2ZjUzOGZmZWEwIGxlZ2FjeS10cnVuaworNDM1MjQgNDIzMTJlNWYxMWZkMTE1YjMwODIyNTFiZTFjNTIyMzU5ZGM3MTJmMiByZWxlYXNlMjQtbWFpbnQKKzQzNTI1IGY2NDgxMmIyYjVjMWNiNGQxOTY5MmNhODI2YTMyNTQ4MDc1MGJiZjcgbGVnYWN5LXRydW5rCis0MzUyNiBiMDY4YWVlMWRmYjViMzU2MjRlMDE4Y2UxMmVkODQ0YTNhZWNhZmYwIHJlbGVhc2UyNC1tYWludAorNDM1MjcgNmYwODYzYmVkY2VhMzJkMWNmMzNkZDRhODJjN2E4ZmNlNmMxZmEwYiBsZWdhY3ktdHJ1bmsKKzQzNTI4IGIwOTgxZjBjMThmZWI2ZWMzZTdmNjFlNjI3NDU0YzAxZWY2MTg4ZmIgcmVsZWFzZTI0LW1haW50Cis0MzUyOSA4ZDA1NzlkMmI2NjI3OTJhM2U5MDVkMDNhNjMxYjM3NTBlYWYxYjliIGxlZ2FjeS10cnVuaworNDM1MzAgODIzYzQ4ZDY4NzFlYzc5M2FmM2FiNTg0YjIwMmFiNWY5OTFkNGJiNiByZWxlYXNlMjQtbWFpbnQKKzQzNTMxIDJjY2U5YmNkYzlmNjQ1OTViYTUxY2E4ZWZhODcyZTNlNjkzMzExZDIgbGVnYWN5LXRydW5rCis0MzUzMiA1ZjM1N2U2MGNkZGVhNTljZjE1MWRiMDkyNzI3MWU2YzM1ZDg0NjFmIGxlZ2FjeS10cnVuaworNDM1MzMgOTFlOWZiNWNmZTE0MjU1YjM5NjM4ZGU3N2RmMWIwZjQyZTNhOGMzNyBsZWdhY3ktdHJ1bmsKKzQzNTM0IDgzOTg4MzU0YjY0ZDlhODhiZmFlYzMwNDYxYzU5ZDc0Y2RkOWQ2MWYgbGVnYWN5LXRydW5rCis0MzUzNSBiNzMxNzRhZjI2YTliNWQ3ZWE5M2YwZmJmODgyZjAyZmY4MTNkZTk3IHJlbGVhc2UyNC1tYWludAorNDM1MzYgZmFiNDY5MzYxYmJjMGU0Yjk5OGI1ZGUxMmIxZDBkNjUwZGExMGNkYyBsZWdhY3ktdHJ1bmsKKzQzNTM3IGFjZTY3ZTNiY2E2ODMyZTE0YmE0ZWFjNWE1ZGRiYjBiYWE3NzRlZmQgcmVsZWFzZTI0LW1haW50Cis0MzUzOCAzYTgxZGNlYWE5YThiZTQxM2E3ZWY3ZThjMzMxYjMyNzc1MmI1ZTU1IGxlZ2FjeS10cnVuaworNDM1MzkgNGFiOGVjOWU1OWRmYWYzNDkxYzM0MDUxNTRmZmU1YzFhYjg4MDRjNCBsZWdhY3ktdHJ1bmsKKzQzNTQwIDBlNGIzY2FkODlmZTZjMjI2ZjBhYjM1Njc2YzIxMThiOTQ4MTU1NTIgbGVnYWN5LXRydW5rCis0MzU0MiAzZDRhM2Y0ZmM5OGU4YjFmYWVhNDNlMWYwNjdjZTZmYzEwODE0Y2MyIGxlZ2FjeS10cnVuaworNDM1NDMgNWUxY2YyMWQ0YWIyMzE5MGVhNTNkYTU5ZmE2MTcyYTZiNDQwMTUyNiBsZWdhY3ktdHJ1bmsKKzQzNTQ0IDRiNjVhYjQxYzc3MTdmZDVlYWQzNDYwZDgxZjYyMmUzNTdiNGNiNDYgbGVnYWN5LXRydW5rCis0MzU0NSBmZTk3YzAwMTZkNGIxM2ZmYjc1N2Y4ZDkyY2U0MWI1NDE1ZDg3ZDZmIGxlZ2FjeS10cnVuaworNDM1NDYgYTZiY2U3YWViZTA1YmNmZDNhMTEzYTY1MDM3OWE2MmJkOWRiNGI4YSBsZWdhY3ktdHJ1bmsKKzQzNTQ3IDRhMjA2ZmNlNWZlN2E4NDI4ZDlhYjNkNDM3MGI1YzJlM2M4YTcwMDYgbGVnYWN5LXRydW5rCis0MzU0OCA1YTZjN2Q2ZGVmMGM5Y2U1NWMwZTY4NWRkZTc5MmZhNTEzODNkMDA5IGxlZ2FjeS10cnVuaworNDM1NDkgM2FhMGE0ODI3ODg4YjI0NDRlOTBmMTFiY2Y3YmE2OWQwZDUwMjBmZSBsZWdhY3ktdHJ1bmsKKzQzNTUwIDgwNjhjMjJjMzcyNGU2Y2ZlMzQwODQ5ZjRlNzI2OTZkN2Q1NDhiNmMgbGVnYWN5LXRydW5rCis0MzU1MSA1M2VmNmMzNzcyNzFkZjhkYzhkYjNhNTQ4ZTAzNGNiN2UxMDJmMTM5IHJlbGVhc2UyNC1tYWludAorNDM1NTIgZjRkODhjZmFlYzYwYWM1MjBlNzZkMjJhNTI0MDgyMTU5ZDY1ZTFjMiBsZWdhY3ktdHJ1bmsKKzQzNTUzIDQ4Mzc3MjJhNjBmMDNkOTY1NmZhOGUwNDc0ZTcwNjdlYWU2ZmY5OTIgbGVnYWN5LXRydW5rCis0MzU1NCBjZjEwZjI0NDM1NDJmNmQyYmU0ZTZkOTc0NWM0Y2U3ZTc4NWZjNjllIGxlZ2FjeS10cnVuaworNDM1NTUgMmNmM2I1YzQ1MWQ3NDViMzU1YzNiMmNhNmJhMTgyMWVkYWI3Mjg1NyBsZWdhY3ktdHJ1bmsKKzQzNTU2IDI2MGVlMzkxZjkwOGYyM2UyZWU2OTcwNjI3NGM5YzMxNWFjZWM4NDkgbGVnYWN5LXRydW5rCis0MzU1NyBhMDY2ODVmMDg4ODY3ZmE3YmFjN2I4N2JjYzgzMDM1NjQzYmVjZTU4IGxlZ2FjeS10cnVuaworNDM1NTggZTk1NTI4NGNkNjk0MDJkYWIyNTg3NzYzZWMxZjBmZTIxZjM3MWUwZiBsZWdhY3ktdHJ1bmsKKzQzNTU5IDg1YjI2ZjRmYTJhNTA0ZmRiNTM0YzlhNTEyNjg2OWViMDJiNzYzOWMgbGVnYWN5LXRydW5rCis0MzU2MCAyODM0Y2NmNTUyZjM3ZjY3Y2U3YWFkYmU4NjI5ZjdjZTQ0OGZhNDI3IGxlZ2FjeS10cnVuaworNDM1NjEgYTYwYTk0NDNlOGRhZDllMmZkMDg4NjRjZjhiYWVhZGJiMmEyNDk4OCBsZWdhY3ktdHJ1bmsKKzQzNTYyIDljMmE0NjJkNjZiYjczYWFjOGE4NDJkNjFhZTk1MzA4MmRkNGM4NjYgbGVnYWN5LXRydW5rCis0MzU2MyA0MDIwY2Y2YzM4M2UwNjA2ZTY4NWE0OTVjYmIwZjAyYjk1ODIxOTJlIGxlZ2FjeS10cnVuaworNDM1NjQgZWE5YTAzYjhiOWY2YjFlZTYwY2YzNWY1MjE0ZTA2M2E2YjA0MjJiMSBsZWdhY3ktdHJ1bmsKKzQzNTY1IGRmYzMzZWM3ZjczYTg1ZmVhYjA4MjkwOGNhMWE4MDc5YWZmODhjMjMgbGVnYWN5LXRydW5rCis0MzU2NiA3ODI2MDQ5YWNiNGIxZDNhYzExMmM4YjVmN2IwYzIyMzhmNWNhZWRkIGxlZ2FjeS10cnVuaworNDM1NjcgNTAxZmRhNTExYjBhYmQ0ZDdkYWQ3ZjZmMjM0ZjkyZjY0OTRhNGJiNyBsZWdhY3ktdHJ1bmsKKzQzNTY4IDA5YjhlNWExMjE0NmNjOThmOTk3MzM4ZmM4YjQ1YTMwMzA4OTE5M2QgbGVnYWN5LXRydW5rCis0MzU2OSA1NDZiNjMxOTI0MDA2MmU5ZTY0YTdiYWMyYzkxOGQ3MmQ2MmYwMjI5IGxlZ2FjeS10cnVuaworNDM1NzAgMTAwNDBkMTg3YzIxMDRmNThmYmJkNGI0NmZkMzUyMGE4YTFlZGEzMiByZWxlYXNlMjQtbWFpbnQKKzQzNTcyIGNlYTU0YzlkOTIxZDU3YTk4ZTQ5NGUzYjNmMWY0YmVkYjQ3Njc0YmYgbGVnYWN5LXRydW5rCis0MzU3NCBlODJhYTgwNDE4MjFhMzU5MzMwNTFhNzE1YzJkZjA4MWE1ZWZlMmMxIGxlZ2FjeS10cnVuaworNDM1NzUgYTM0ODE4NzExMzJjZTY1NWMxNDQ3NDIyNTVjN2ZkODRkMjdiZDdlMCBsZWdhY3ktdHJ1bmsKKzQzNTc4IDc5ODZhNWIxMzFlZDJjMDdkNDk4MjE3MWEyMDA3M2MxZmVmZmY5ZWIgbGVnYWN5LXRydW5rCis0MzU3OSBlOTU2ZTE2ZTc0NDRmYjI0YmM4ZmQxNDI2N2RkYTZhZWE1M2U1YjRkIGxlZ2FjeS10cnVuaworNDM1ODEgNTdiMWZmMTM4OTk1ZTg3MDE5YTU1ZDVkYzUzZDRlN2JmZjIwNjQ0NSBsZWdhY3ktdHJ1bmsKKzQzNTgyIDNlZWE2NWJiODk2ZWRjMDYzZjI3YWJmMDU0ODY3OTllZmI3NDVhOGYgbGVnYWN5LXRydW5rCis0MzU4MyA1MTMzYjViMGI0YTg0NThkZDVlODU5NzUwYmE0NTE3NmRmZjlmMTU5IGxlZ2FjeS10cnVuaworNDM1ODQgZTE0MjU1ZGY3ZmQxNjFlODgwYjQ1N2FhZmQ2ZjliOTAwOWE5Y2NjNSBsZWdhY3ktdHJ1bmsKKzQzNTg1IDkyYTE3YTI4MjFlMDRlMTY5YmFjMTQ1OTgyMjEwOGRjMDBkODEwZDYgcmVsZWFzZTI0LW1haW50Cis0MzU4NiBlYjY5ZDJlMzEzNGNlYjBhNTNkNDZmMmI5NzJlN2E2MmExOGE1MDY0IGxlZ2FjeS10cnVuaworNDM1ODcgZTgxNGFkOTcwZmM2YTkxNjVkMDVmNDEzOGEzMjRmZmYxOTJiZDQzNCBsZWdhY3ktdHJ1bmsKKzQzNTg4IGZiYzYyZGI5N2U0MzljNWJmZjE1MjE1ZGI2ODI4NGI0NGVjN2E2NWQgbGVnYWN5LXRydW5rCis0MzU4OSBhOGNkOTA1ZmQ5NmNkM2VhZDJlZTNiNGI1MzdkNTUyY2M4OWM4ODJiIGxlZ2FjeS10cnVuaworNDM1OTAgNzk2YWNkZTcwMTk1NDExZjEzMDZjMWYxMWVhMThlMTJkYTM1MTRiYSBsZWdhY3ktdHJ1bmsKKzQzNTkxIGJkYmUwN2Q5NmI4ZWY0ZGIzNWNhMWE0N2IxMWMzY2YzOTVmNjQyYWEgbGVnYWN5LXRydW5rCis0MzU5MiAwMWZkMDkzYjg3OGNjNzcwMjNmNDVhNmQyMzM5MmMxMDk3MmEwZjJmIGxlZ2FjeS10cnVuaworNDM1OTMgYmJlMWNkYzkyNjA1MWFkODI4YzgwNDVlMzBjMDNkYmViYWVhMmU2YSBsZWdhY3ktdHJ1bmsKKzQzNTk0IDExNTQyOGJiMWQzZjY0NWJlOGY4ODc4MGRlYzU5NTZlYTZmZjUyMjcgbGVnYWN5LXRydW5rCis0MzU5NSA1Y2M2ZDcxNTM3YTMxYTk1ZjNkMzkwYjFhNjczN2RkMDQ0ZmQyYmE2IGxlZ2FjeS10cnVuaworNDM1OTYgNmQ1MGZkMzY0Y2Y1Y2I1OTZkM2YwZDQyZTdjNTY5MTc4NTE4NWJkOSBsZWdhY3ktdHJ1bmsKKzQzNTk3IGU0NTdiMjRmOThjNTFmNzNmODA2OWVmMWI0ZjI5Mjg3M2FiYzdmOGIgcmVsZWFzZTI0LW1haW50Cis0MzU5OCAzNWM0YjA5MzNhOGI3ZTU5ZDE2NGJiYjQzYTVkM2U3YTY1MTk2N2IwIHJlbGVhc2UyNC1tYWludAorNDM1OTkgZjVhZDNjN2VjMmNiZjQ1M2JmZTViOGEyMjliOTVmMzhjNjNhZDMxZCByZWxlYXNlMjQtbWFpbnQKKzQzNjAwIGJjOWQ1M2MwMGRhZDZjMzYzMDEwNDc4ZGQzMDQxNjAyZDVhMWIzMTUgbGVnYWN5LXRydW5rCis0MzYwMSBlMmIzYTdkOWFjYTkxOGFkNWM1MjYyNzIyNWY5ZjZmNzVhYjk1YjczIHJlbGVhc2UyNC1tYWludAorNDM2MDQgMTA0OWU5YWViMzg1MDlmZWVlMWRhNTNiYTBkMWJlZGM0ODJiMWU2OSBsZWdhY3ktdHJ1bmsKKzQzNjA2IGEzODMwMzc3ZTFhNzk2MjE5YzEyNGJmZGNmMjkwYmUzMzAxMjUxY2IgbGVnYWN5LXRydW5rCis0MzYwNyAyY2QxZTViMTVlMDUwZGUzYmQ2ZTRhM2NhN2MzNjViMmE2ZTYzM2FkIGxlZ2FjeS10cnVuaworNDM2MDggMjlhMDZhMmYzZjJkOGYyNTgzN2M2NzgwNWQxMGUwZjI5ZGQ5NDA2NCBsZWdhY3ktdHJ1bmsKKzQzNjA5IDYwYmVkNjQxYjZkMDMzMDA0NDUzZjhiNzY5NDJjZWQ0MTBmMzljMjUgbGVnYWN5LXRydW5rCis0MzYxMCA1YWEzY2VmNGE4YTdiNDkyMmFjODNiOWE0NTNkNWFhZjA3YjgxMmRkIGxlZ2FjeS10cnVuaworNDM2MTEgNmRiZWE5MTFlODgxMGE0YTI1MzI1YTY2YTgwNGZhZDljNjFkZWZiNyBsZWdhY3ktdHJ1bmsKKzQzNjEyIDBmM2I3YWZhMTg3YWU2NmJkYzE3NjBkMGZlZWRiYmRhYzgyMzZkOGYgcmVsZWFzZTI0LW1haW50Cis0MzYxMyA0OWRiZWRmYjFkNzQ4MzBlNmExNTU5OTE3MzZkOWYzM2MxYTRlOTRiIGxlZ2FjeS10cnVuaworNDM2MTQgMTZhNjRlMzk0NjAyMmZiOGIzMWY2YWM1MjQyYWJhYWVlOWNlOWUyYSBsZWdhY3ktdHJ1bmsKKzQzNjE1IGVmZjZjNTM0ODNmZjM5YTMyNjQ2M2Q0NzA5OWQ2MzNmNjIzZWMyMjYgbGVnYWN5LXRydW5rCis0MzYxNiAwN2U0NGZkMDZjZjc2MzllNzg1MTk1MmNjN2U5NzJkZmZhNjc4Y2RlIGxlZ2FjeS10cnVuaworNDM2MTcgMmY1N2RhOTIxYWVmN2MxZWE2Nzk5Yzc5OWE3MmU1NGFjNTc4YjVjYyBsZWdhY3ktdHJ1bmsKKzQzNjE4IGRjY2U4MWI3ZTY0ZDAzYzg1NTQxOWMyMjA3ZjQxZjdjOWY3YzE0ZmUgcmVsZWFzZTI0LW1haW50Cis0MzYyMCBkMjcwNThjNDA5ZGYzYzY5NWNkYzUwNzM5OTczMGQ2ZGNlZDA1ODk0IGxlZ2FjeS10cnVuaworNDM2MjIgYzFjZWYxZDJkY2NmNGI5ODQxZjZkMGU0NDg3MDdjN2EzNWYyNWFmNSBsZWdhY3ktdHJ1bmsKKzQzNjIzIGQyNjk3YzUyY2NhZTU5YjkyYjAwYjczYWVlYWEwNjJiYmI5MDE1M2UgbGVnYWN5LXRydW5rCis0MzYyNCA2YWIxNWZjODVjMmQwYzY4Yzc3Y2M2OTVmODdjZDI2YmNkZTliN2ZjIGxlZ2FjeS10cnVuaworNDM2MjYgYjYwMzMwNzI5MmZjNzRhZTg2YWY2YTU1OGVlMTA0MzdhZGM4YTNjNSBsZWdhY3ktdHJ1bmsKKzQzNjI3IGFkZDAwNzg3MGJiZGFkMzkwOTIxZDkyMGE2NGQzZDJhMjU4MjY3OTAgbGVnYWN5LXRydW5rCis0MzYyOCBkMzQ1MTY1ODgyNzJhZWUxYzgzYjk4ZTRkYjU0M2JmYTg5ZmNkYTc5IGxlZ2FjeS10cnVuaworNDM2MjkgMmMzOGVlNGJkZDhhYjI5NWU0OTlhYjUzMzc0NGIyZWNjY2MxY2RjMyBsZWdhY3ktdHJ1bmsKKzQzNjMwIGMxMTViM2FlMWMxODc5YTNiMDBiZWQwZTU3YmI3YWVjOTcxMDRhNmYgbGVnYWN5LXRydW5rCis0MzYzMSAxZjEwOWE0OTUzYzY5YTIzOTE2OTExNDRmNjY4YjExZWI3ZjkwZWZlIGxlZ2FjeS10cnVuaworNDM2MzIgMDRhZmIzNjUwODQ3NjBlYWNlYTZkZDhhZGNmYTI4MjdmYTA0ZmI2NCBsZWdhY3ktdHJ1bmsKKzQzNjMzIGExN2I1Mjk0ZTk5M2NhOTZmYzEwMWNlNWI5OGRmOTljOTIyMTMwNDcgbGVnYWN5LXRydW5rCis0MzYzNCA5ZWNiY2U1NWE0NTQ2NWQ4YTA0YmJlNGRlOTQwN2Y5MjcyNmViNzdiIGxlZ2FjeS10cnVuaworNDM2MzUgOGVmZGVmMmVjZjNiMTk1ODVkMTI1YmJkMDMyMjZkNjQwOTFmNzliMSBsZWdhY3ktdHJ1bmsKKzQzNjM2IGY4ZmMzMGMwZmM3YzM0NTIxOTNhMWY4YzNmM2IxZTliOGE4NmI3NzkgbGVnYWN5LXRydW5rCis0MzYzOCAyMGZmYzJjYTAzZTBjYTUxYmFmODk2NjBkOGZiOWMzZTY5NjYyMDExIGxlZ2FjeS10cnVuaworNDM2MzkgNjI1NjdiYmU3ZDg4ZGE1OGIwMTRlOTAzOWMwY2JlYzQ3M2U3ZjgwNSBsZWdhY3ktdHJ1bmsKKzQzNjQwIDU4YjhkMjk4MjE0NGY4OGQzNjVjYjQ5OTJkYjlhYWZhOTQ0NjM2NjAgbGVnYWN5LXRydW5rCis0MzY0MSBlNjU4MjkwNWVlYmE2YjU2YmM3ZjI1YTNhZGI4NjQxNDg4OGFiNzI4IGxlZ2FjeS10cnVuaworNDM2NDIgOTAzZTMxNjIwOTllMjkwZjg4YjFiZTUxNzE4OGUxY2M5ZTgwM2ZkZCBsZWdhY3ktdHJ1bmsKKzQzNjQ0IDg1MmYxYzFhODliNGQzNGU2MTc5ODcxNDgxNjJkYjdhOTJkMDBkMzEgbGVnYWN5LXRydW5rCis0MzY0NSBlNzA5ZTYyODg2ZTYwMzk0NTIzOTUyMDUwMzU5MTNkZmFhMjU3YmQxIGxlZ2FjeS10cnVuaworNDM2NDYgZDZlY2JhNTk2ZTFlNjg5MWQwNGE2YTFiZDhlNjc5ZjM5YWU3YjBkZiBsZWdhY3ktdHJ1bmsKKzQzNjQ3IDI5NjM5MmM3MTA2OTBlNjBkZDE0ZDNkNGViYjExM2MzN2Q1ZjkzNjEgbGVnYWN5LXRydW5rCis0MzY0OCA0YTk5OWM2ZTAwYzAyZmRhNWFlMDEzNTVlNThjNWQyNmQ4OTY3ZjM2IGxlZ2FjeS10cnVuaworNDM2NDkgYTk4MmIwMmJlYzBiZjE4NDUwNjJiZjU4NWE0ZmQxYTZhMWE1MTVhNiBsZWdhY3ktdHJ1bmsKKzQzNjUwIDEwNWE4ZGQwMTg1MTY2NTNiZDAxNWY2NjZiNzgzYWFlM2M3OTA2ODQgbGVnYWN5LXRydW5rCis0MzY1MSA4OTZmOWZlYWQxN2U3MjBlYzRhMjFkZTNhYzIxNDUxOGRhODQ4NDVmIGxlZ2FjeS10cnVuaworNDM2NTMgYTBmMmMzOGQ4NWY0NTNhYzk2ZTU5NmVmZjI3ZTBjMDQxMzMwYzliNSBsZWdhY3ktdHJ1bmsKKzQzNjU5IDM5NWIxZjVjOTc1MTQ5M2NhZTcxYjRlODQxNDBjYWRmMTkyOTQ2NjggbGVnYWN5LXRydW5rCis0MzY2MCA0Yjc2MWE2MzM5OWM0MjdiYjc4YjUzZDJmODc2MmYyYzg0N2ZhNDA4IGxlZ2FjeS10cnVuaworNDM2NjEgNjlmNzk1MTc3NjFkMTJhNjNlZWYwNmRkZGVkNzkxMDBhMWY1MWExZiBsZWdhY3ktdHJ1bmsKKzQzNjYyIGRiZjViMmYyYTQyOTE2ODcwMTc0Mjc2ZDFhOGM2NWYwMzY0MzE0NWEgbGVnYWN5LXRydW5rCis0MzY2MyA2NTMzMzhhYTY5ZjJkN2RjMGQxNmJmNzFmZWU2OThjMjIyYjFlOTIyIHJlbGVhc2UyNC1tYWludAorNDM2NjUgMDk5OTA2NjEyMjZkYmFhNWMzMGRlMTRjOTQ3ZGI0ZDYwMTA1YWRlMyBsZWdhY3ktdHJ1bmsKKzQzNjY2IGVkNmZlNzI5MTA4Mzk5OGU1NmMzNTlmZjY3MjE5NGMwNzEwZTQzMmIgbGVnYWN5LXRydW5rCis0MzY2NyA5NzZjMDEwOTFiMzg1ZGVkOTA0NTJlMWJmNWY1ODQ4MjUzNWFlOGEzIGxlZ2FjeS10cnVuaworNDM2NjggZDM5NjlhZWJhNzc3ZDEwMDZjZGY5OWRiNDYwYThkYzhhNDBlMzg3MiBsZWdhY3ktdHJ1bmsKKzQzNjY5IDQ4OThmMTk2YTI0ZGViY2VkNWI0ODU4NzU2MDg3NDVhMzgzYWE0ZDQgbGVnYWN5LXRydW5rCis0MzY3MCAzZDRmMzUzYzNkNGZiMjY5NDk2MmIyNTY0ZDc5ZWQ5NzdiMjBiMmFlIGxlZ2FjeS10cnVuaworNDM2NzEgNDhkMTJkZWYzMmIzYzhjZWI5OTQ0N2YwMGY3ZmFiYjZkZTdhM2U3ZiBsZWdhY3ktdHJ1bmsKKzQzNjc1IDk3YmMzNDhkYmM1ZGYyZDlkODYxOTBjYWEzNDE5NjYxMDllNGViYzIgbGVnYWN5LXRydW5rCis0MzY3OCA1ZWM4ODgzYTJlZjlhMTY0MmI2YzA3ZmNiZDc2OGY0MDdkNzE1NGY3IGxlZ2FjeS10cnVuaworNDM2NzkgZjY2MzVmMzA0Njk1ZTY2YmY1OTU5MzhkZjc3M2MyMDllZDljNGRiMCBsZWdhY3ktdHJ1bmsKKzQzNjgwIDQ4Y2RlMmY4ZDUwZTFmMTM5MzIxZDQ0Y2YzZmY3NzhiZmNhNDdmZjggcmVsZWFzZTI0LW1haW50Cis0MzY4MSAzNjliYjVmNjdlZjY4NTdkMzE1MGI0MGIzYjU3YWVhODNhMjIwOGI5IGxlZ2FjeS10cnVuaworNDM2ODIgOTYwYmY2YWE4NTRkZDY2NWNjZmFiOWRiMzg4YThiMTEwZTYwODZmMSBsZWdhY3ktdHJ1bmsKKzQzNjg0IGZjOGM5MGE0NGU2OGI3OTMyNzliM2Y1MGRmYzMzYjdkMWNjNmJkYzIgbGVnYWN5LXRydW5rCis0MzY4NSAxZGFmNGY3YjMwMjE2YTExZGJiMjFjMTY5Y2UyYTYxM2RkZmZkM2FlIHJlbGVhc2UyNC1tYWludAorNDM2ODYgNWIxMTlmMjU2Y2RlNWViMTFhNmRmMmEyMWJmNmEwZjViNGViZjU2NyBsZWdhY3ktdHJ1bmsKKzQzNjg3IGQ1Y2I3NzIzMjJiZjY3YzMzMzRjMzEwNThlMzhlMDUxM2Y5MTE1MTEgcmVsZWFzZTI0LW1haW50Cis0MzY4OCAzZjA5NWM1NWMyZDliMWQ0ZDdjMTdlMTdhZTQ5MTgzOGIwMTQwYTRiIGxlZ2FjeS10cnVuaworNDM2ODkgNDI4NDg3OWExOGVhZDg2M2VmZjRjZDcxMjg3MzAyNzM0ODVlM2E2NSByZWxlYXNlMjQtbWFpbnQKKzQzNjkwIGFkNGY3NTUwZDhhNDA2MjU4YWU4YzZiOWNkZDBiMTk1ODI4ZTY0MTIgbGVnYWN5LXRydW5rCis0MzY5MSBkMWRkYTExNDhmMTA5NjliOGUxMjVmMTQ3YTQwMDBmYTcyMjhmMzdlIGxlZ2FjeS10cnVuaworNDM2OTIgZDAzMjAxZjJmOWMyNGE1OTNiODk4ODY0ZjM4NjRjYzk5MmVkNzJkOSBsZWdhY3ktdHJ1bmsKKzQzNjkzIDJiMGE1ZWVjMDI4YjA3ZGZjZGFhMGI2YzA3ZTg3ZGMyMTQyNDgyY2QgbGVnYWN5LXRydW5rCis0MzY5NCBjMTZiNzUyZWU5M2JjMmFkYTYxZjUxZTMzNzIyOGViN2Y0ZWU2MTQzIGxlZ2FjeS10cnVuaworNDM2OTUgN2NkM2JmMjM5OWU2MjBhNjM0MmJmYmViYTkyMGVkNDBmZjkzZjBlOCBsZWdhY3ktdHJ1bmsKKzQzNjk2IGNlNGFmNTQxNmQ3NjVlYjVmYTg5N2RmZTE4YTVlNGMzY2Y4NWMwODggbGVnYWN5LXRydW5rCis0MzY5NyA3OWQzYzRhZDkzMTA5Yjc5OWE5YjlmZTEwZjAxZTFmZThhMmZkZmU3IGxlZ2FjeS10cnVuaworNDM2OTggZmY3MTg3ZGNhMmYxYWY0MTFhM2UzZTAzMzY5NDk1NzYyNTE1YzRmNyBsZWdhY3ktdHJ1bmsKKzQzNjk5IDIxMTQxMDM3YTEyMzNiZDk0ZWUyOGJkMDQwZDNmZmVjMzJjODcwYWQgbGVnYWN5LXRydW5rCis0MzcwMCA3YzQwNDhlYzBjNjg4YzVlNTZhNDQ5ZGEwNmU3NTQ3NDk3YzFhODUzIHJlbGVhc2UyNC1tYWludAorNDM3MDEgNTU1NmNlOTlmMjBjNDg0NmY3OGQ1NmFhNzM1NGFhNDc3MTk3ZWQ0NiBsZWdhY3ktdHJ1bmsKKzQzNzAyIDBhMDE0ODg0MDE3Y2RjYzYzZTFlNTMzYTA1MDQwYzM4MWFjNGY1NjggcmVsZWFzZTI0LW1haW50Cis0MzcwNCAwMTg0NWEyNDdjOGIxNTVlNmE2NjAzMDRmZWNkZWI5YzgyZmVhMjllIGxlZ2FjeS10cnVuaworNDM3MDUgOGM3ODI4OGQwZGJiYjE0YjgxZjEwODg0NGYzNmVmYjY4YzhlOTZjNiByZWxlYXNlMjQtbWFpbnQKKzQzNzA3IGI0M2RiODdhOTc1MjM5N2ViMTVmNWI4NTUwNTQ3MWE3MWFmZjhhMzkgbGVnYWN5LXRydW5rCis0MzcwOCAwYWUxZmFmNDExZmZmMjI0MTVhYzhlZTRkOTYxYjMzMmUxMmM1NjMxIGxlZ2FjeS10cnVuaworNDM3MDkgMGE0NWNiMzBiNjRlMGJlYzA5M2E2ZDc4OTFmOWY1OGFmZmMyM2Y5YiBsZWdhY3ktdHJ1bmsKKzQzNzE0IGE5ZGY5YjBiYTQxNjVlNGM4YTVlMGVmMTk1YjNjOWQxYjg1ZjBlYjYgbGVnYWN5LXRydW5rCis0MzcxNSAzYzdlYTUwNTE4YmUyMjE1Y2MzYjEyMTk2ZmJmOWQ4OGYxZDA3YjhkIGxlZ2FjeS10cnVuaworNDM3MTYgZDIyY2IxNGRhNjcxNDNlNzgwOGE4MjI2MTIzYjYwMDU4NWE1MWM4NyBsZWdhY3ktdHJ1bmsKKzQzNzE3IDE1ODNkM2ZkZGRjZDc2YTgwMjliOGVjM2M4ZGJiZDY2ZjlmODJiZDEgbGVnYWN5LXRydW5rCis0MzcxOCBhOTQ3MGViNjM3ZjE5NDg4MDc3MWM4MDE1NGMxM2VhY2M5ZDljY2E0IGxlZ2FjeS10cnVuaworNDM3MTkgODY5ZjNjOWQ3NDAxNDAwZWUxMGM0YTk1YmY1Y2JmM2Q0OGJhMGM5NSBsZWdhY3ktdHJ1bmsKKzQzNzIwIGY4YzRhYTU0MTNkYmEwZjZkOGMyMzdhYmI1MDE5ZDVhYWIwZDdhMDIgbGVnYWN5LXRydW5rCis0MzcyMSA5YmVkMzBkZjdhNGFlYTk0ODM2ZTk2ZWM1NWNkOTkzMDAyNDk5Y2YyIGxlZ2FjeS10cnVuaworNDM3MjIgNWJjMmI0ZTNmZmMxNjQ1ZjJiZTNjYTFkY2ZhZGNhYzY0YTkxYWRhYSBsZWdhY3ktdHJ1bmsKKzQzNzI5IDkwMDZmOTIyM2Q4MGI1YzQ2ZDZlNTRhY2U0NmYxNzEyY2M0YzI1MmYgbGVnYWN5LXRydW5rCis0MzczMCAxNDlmZTY4NGU0MDE2MDk2YmQ2YTUyZDFmNzdiZTgzYjVmZGMxZWVjIHJlbGVhc2UyNC1tYWludAorNDM3MzEgYjM2NjZjNWRkZDhhMGE4YmM4Y2IyZWU1OGIzZTQ0M2I2OGExNDZhMiBsZWdhY3ktdHJ1bmsKKzQzNzMyIDcwNzMxMjUyZGEzNDY5MzA2NTQ2M2NjNGMwZGY4N2FlMDYwOTdmODUgcmVsZWFzZTI0LW1haW50Cis0MzczNCBjMTdjNTIxOTMxNjllZTQ0Yzc1MjIxZjM5MmY3MDMwZTA0MzExMGE5IGxlZ2FjeS10cnVuaworNDM3MzUgYTdkNjg4ZWJlM2UxYTIwMzI4Zjk0NGVhODVlNmNlYWNjYTUyM2U2MCByZWxlYXNlMjQtbWFpbnQKKzQzNzM2IDQzMTYxM2JjOTM1ZTk1YTM2OGZlMTJlZTBlN2NiYTIzMjcyMWMwNTYgcmVsZWFzZTI0LW1haW50Cis0MzczNyA3MDkyNjYyNmM2YTBhMzQwMDBlNDRmMmFlNmNkYzMyOGZmNzllOWMxIHN0ZGxpYi1jbGVhbnVwCis0MzczOCBiYThmMjc2NGFhNGFjMDkwMDFmZTg5OTMxOGJmNDA0MTc2ZmI4NTY0IHN0ZGxpYi1jbGVhbnVwCis0MzczOSBhOGQ0OTI4MjkyZDhiMmIyMjhhYjBlNWEyYTk1OGIyYThkMjAwOGZiIGxlZ2FjeS10cnVuaworNDM3NDAgZWRjNmEwY2M4NDY2YmU2MWVmNGUxODgxMTE1ZTFkYTI4ZTA0MjkxOSBsZWdhY3ktdHJ1bmsKKzQzNzQxIDQ4MzExNDAxYTIwZWEzNjZhNWUxNWZiYTc1M2IwZDkwYWRhNzdlNzcgbGVnYWN5LXRydW5rCis0Mzc0MiBmMWM0NDA2YmY0ODFlYWQyMzQ1OWEyYTdlYjNhMjU4ZmFiMTZkMGIwIGxlZ2FjeS10cnVuaworNDM3NDMgYjA1MjhlOGM2Yjc4NDRkOTUzNjdlMjdiZDcxNjNlZjQyM2U5Yjk4OSBsZWdhY3ktdHJ1bmsKKzQzNzQ0IDAzNDJjNWYwZjRmZjY1YzM2ZjJmODVkYjBkZjY3MjU3MDkxYjM5NjUgbGVnYWN5LXRydW5rCis0Mzc0NiAwNDZlNmUzNDgzODE3Njk1NDI3YjI0ZDgzOTBkN2Y4MGI4NmY2ZDNjIGxlZ2FjeS10cnVuaworNDM3NDcgMmNkZjUyN2I1OGY2YTI5YWJiZjYxNjMyMTkzZGZmYzE0YmJjNDYxMCByZWxlYXNlMjQtbWFpbnQKKzQzNzQ4IDM5NTk4MTBiYzU0OTEzMjY5MmMzZjQzYTJkNGEzY2Q0N2MxM2YxYjYgbGVnYWN5LXRydW5rCis0NTIyMSAzNmJjYjgzZWNiYWQ1M2ViNjNlMjNkYTQzNDA0OTk0YzhmMDk2MDE0IGxlZ2FjeS10cnVuaworNDUyMjMgMjMxZTQyZDAzNjJlZDI2N2QzYjM1MzI1ODRhNmY3NDk1OTg5YWI0YSBsZWdhY3ktdHJ1bmsKKzQ1MjI0IDliZGE1YmE0MTY3N2NmNmIzMTQwM2Q1ZWI0Zjk1ODlkYjU4MGY4ZTggbGVnYWN5LXRydW5rCis0NTIyNSA2YWU0YWRlZmM1NzNiOGViMDZjOWRhYTU1OGU0OWVkODliNzZkODM0IGxlZ2FjeS10cnVuaworNDUyMjYgMjg2YzgxNjg5ODI2Y2FiYjE1NzcyZjJhMTkyMWE4NjUwODQ0MWE0NiBsZWdhY3ktdHJ1bmsKKzQ1MjI3IGE3OGJjMGJiMzQ1OTYyZTY5MDI5Y2UzYzA5OTA4ODhiMTRhZGNhNzkgbGVnYWN5LXRydW5rCis0NTIyOSBlYjBiOTkyN2ZmZmQwMjUyNzZhOTZkZGMyNDBhYWUyODQ4YThjNDhlIGxlZ2FjeS10cnVuaworNDUyMzIgYmQzNzU3Nzc5MzJkOTFhM2ZiMDA5NDkyYjIwOGZkZGFmOTdlYTcwOSBsZWdhY3ktdHJ1bmsKKzQ1MjMzIDBmMmU4NmQwOGQ4YWZmMjJmMDkyOWM3ZDk5MTdiNmQ5MGQyMTVlOWEgbGVnYWN5LXRydW5rCis0NTIzNCA0MjAyM2Y1YjdkNmQxZGQ3M2IxZTQ5MWU3Zjk3MzIxZDhhMjhkZmI3IGxlZ2FjeS10cnVuaworNDUyMzUgYzc4MmNmNmI1MTZlNDJlODc3MTRhOWQ3YzVmZjY1NDdiZjNhMDdkOCBsZWdhY3ktdHJ1bmsKKzQ1MjM2IDgwOTRjYzBjOThkN2E2NDJjYTM5YWE3MDlkMGNiODg0NTk3YTRkMzQgbGVnYWN5LXRydW5rCis0NTIzNyAzMzQyM2I4NDU1NTQwOTZiMjAyMWEzZTFmZjhhODRjMDhjNDAwZDdjIGxlZ2FjeS10cnVuaworNDUyMzggM2Q2MDE1MTM5MmMyMjU3ZDZiNmE1NzlkYTI5OWY3MDE2ZjNjZmZkYSBsZWdhY3ktdHJ1bmsKKzQ1MjM5IDIxM2M0MTk4ZmUyM2Q5YmQ1ODU4NWU2MWYzOGM0NzI3NzFhNjRjY2MgbGVnYWN5LXRydW5rCis0NTI0MCBiNzQ0MGFiNWNkNzA2ZjQ5MGZhYzg3MDQ3YjNmMjdiYjk5OWFhYTg2IGxlZ2FjeS10cnVuaworNDUyNDEgNWIzNTFkZDdkMDgxNWRlMGUyMThiNjdmOGU1ZDBjOWJlZmVmMzhlMCBsZWdhY3ktdHJ1bmsKKzQ1MjQyIDBiYzNmNzRhNGE0NzE4NDE5ZWIyY2U5NjBmYWQyZWU3Y2RiYjFhMjAgbGVnYWN5LXRydW5rCis0NTI0MyAyZTIzNGY0ZmQ3NjM5OTA3MzZkZTZkNDlkNDM2MjA5ODA3ZjRhNzZjIGxlZ2FjeS10cnVuaworNDUyNDUgZjZhMWY1NWQzZTVjZTZiYjkzZGM4OGU1ODhiMTdlODQzNjI2ZWNhNyBsZWdhY3ktdHJ1bmsKKzQ1MjQ2IGRkMDg1YzEzYzQ5YTc1ZTg0YmY3NTZhYmU0ZGIwZTZkYTJjNjYxNGUgbGVnYWN5LXRydW5rCis0NTI0NyBkYzlhMzZjOGI0NzMwYWJjOGY5MzVmZWRhNmE2MzEzNGI0ZDQxZDNjIGxlZ2FjeS10cnVuaworNDUyNDggZDExMzY2ZjdlMWU3YTU4NjkyMTI2MGEwYTVmY2FiOWQzOTFjNThjMCBsZWdhY3ktdHJ1bmsKKzQ1MjQ5IDdjYjZhMzA0NDYwZmMwMGFiMGI5NDhkNjk4NmUyYjdjNzVhN2I0NDggbGVnYWN5LXRydW5rCis0NTI1MCBlMjljZGY4Njc4ZmU5OGUyZGYwZGUxNzBlMzdiOWM1YmNjMjI5ODZmIGxlZ2FjeS10cnVuaworNDUyNTEgMDBiZjhmMDBlYzYzMjc1NzE4NmM1OTIwYWE1OTNkY2JlOGUxNTM2MiBsZWdhY3ktdHJ1bmsKKzQ1MjUyIDA3MjA1MDYxNWZjMGMxNjZjYjdkNTBkNzY0Y2U3OTNmZTdjNTZiYmMgbGVnYWN5LXRydW5rCis0NTI1MyBiMTEyZDhjNzk4OGMzMTdjMGRmYTliNjk2MjUwMGViMWJkYTM4MTg2IGxlZ2FjeS10cnVuaworNDUyNTQgMGFmN2YxODA4N2ExZmZmYWY0Mjc4YWMzNmI1MGNlMTE3NzM0MDI1NiBsZWdhY3ktdHJ1bmsKKzQ1MjU1IDFhM2U3OTlkMDYzNDFiNDEzOTUxMmEwMTA2OTVjNmFiMTMzNDcwYWEgbGVnYWN5LXRydW5rCis0NTI1NiAzYjRmZGM3NWJlMTJjZTcxYWE0ZTExOTViYzY4MDdjOWQ2NTI2ZmYxIGxlZ2FjeS10cnVuaworNDUyNTcgMjkyODU0YzQzYjk5YjlmMzU5MWFjZjNjZWYyZDdmYThhN2E2MGEyYSBsZWdhY3ktdHJ1bmsKKzQ1MjU4IDFjZWQ3OWYwODA1MDljNDQ0ZGQ1MTQxMTU0N2I3MTMxMzE4MDlhMjcgbGVnYWN5LXRydW5rCis0NTI1OSBhODQxNmFkMWE1YzU5YzM0MDc3M2U1YTc4NTM3ZjFiYjA2YzdkMGE4IGxlZ2FjeS10cnVuaworNDUyNjAgMTNkZDMwOTc0YWQ2OTEyZTlkMTg2OTAxOWJiZWQ3YzNkNjBiZjIyZCByZWxlYXNlMjQtbWFpbnQKKzQ1MjYxIGFlZWU4NWI2YTVkZDg4YWQxZWM4MTUyM2RmZWEyZGFhZGI5NGUxNjAgbGVnYWN5LXRydW5rCis0NTI2MiBmNzdkYmMwZjk4ZTM0MzUyMWZiZDg0NjMzZWQwZmRjN2Q3OGQ5NjYwIGxlZ2FjeS10cnVuaworNDUyNjMgYWRkZTlkZTEwMjg3YWQ0NWQ5NzJiNTg2Y2Q3YzY0M2M3ZTk2ZDVlYyByZWxlYXNlMjQtbWFpbnQKKzQ1MjY0IDkyNDUwNGIwMDE5NjQ5MDQxZmQ1M2VmMjc0MjljODBkN2Q5ZGUwZmUgbGVnYWN5LXRydW5rCis0NTI2NSBhZWQxYzNjMzViODM2M2U4MzU4N2U5MTAxMzJhMWMxZGYzMWE1Y2M2IGxlZ2FjeS10cnVuaworNDUyNjYgNmRkMGQ4YjRiYWM1NzRjZTRkMDY4NTI5ZGE5ZGIxNGE5MjJlMDc3OCBsZWdhY3ktdHJ1bmsKKzQ1MjY3IDA1OTFkMDMyMmYwNGMyNGRhNWZiOGI3MzE4YzI3ZWRjZGZiODE1YTAgbGVnYWN5LXRydW5rCis0NTI2OSAxYjA3ODQ5M2Q1MzgyYjgzZjUzMzM2N2ZjMmFjNWJlZDlhN2U0Y2Y3IGxlZ2FjeS10cnVuaworNDUyNzAgMmIyZTljMzg4ZmJiZTIyNTU2Yzk4ZWY5NzA3ZDAzMTZmYmU2OWE0MSBsZWdhY3ktdHJ1bmsKKzQ1MjcxIDU2ZTAwYzliNTAxMTczNDY0OTIwYjRjZjVlN2JmZjRjMWI2MjZmNjAgbGVnYWN5LXRydW5rCis0NTI3MiA0NGZiMDNhNmE1MjQ5NzA4N2UwZWQyYjY2Y2I4NzMwOTZjMDI2ZmI5IGxlZ2FjeS10cnVuaworNDUyNzMgYzRjNWVlYjA3NzM5YWI0MTA1NTM3NmVhZTU3ZTM3NDY3MWYzNDA1YSBsZWdhY3ktdHJ1bmsKKzQ1Mjc0IGY3NmI1ZDk4NzMxNGQ3NDQ3NTgwZjU1ZTdhZTllYWVhZTBlODU5NWIgbGVnYWN5LXRydW5rCis0NTI3NSBjYTk1YWQ1YjBmYmM2MWY5ZWQxMTVlZTYwMDg2ZGEyNzI3ZTdhMzg3IGxlZ2FjeS10cnVuaworNDUyNzYgMzhhY2I5MTgyNGZjYzU3MzU0ZjNjN2JmYjVkYzhmODVkMzY2M2YxNiBsZWdhY3ktdHJ1bmsKKzQ1Mjc3IGM3MzJmNjZjOTEzZmQzNjJiYWJhMWM1YjFhNGMwNWQ4MjY0MjgxMjYgbGVnYWN5LXRydW5rCis0NTI3OCBlMDcwYzMxNmViNDU1OWE4ZmU4OTkzNGUwM2M2Yjc1NjA2Yjc1ZDI0IGxlZ2FjeS10cnVuaworNDUyNzkgZjQ0OGQwMDc1NjkxZjk1MmQ3Y2Q0YmY4YjA5MGFjZmU0Y2MwOWRkMCBsZWdhY3ktdHJ1bmsKKzQ1MjgwIDQ4MGE1NjI1ZTI4NjkyMDE3NDQ3MDIxNDVkMjY1ZTQ5OTk4YjBhZjYgbGVnYWN5LXRydW5rCis0NTI4MSBiNzRkM2FkYmY4ODg1ZWZiZGEyNGZlOTI4ZDMxYzE2Y2Q5OTdlYmI5IGxlZ2FjeS10cnVuaworNDUyODIgZTYwYjMxNjQ3YTZiMzFkMDdhMTc1MTU5NjU3OWUzYWRmNmQ4NTY0MiBsZWdhY3ktdHJ1bmsKKzQ1MjgzIDdlZDBmMDAzYmE2MzEzNmExNTg4MjAzMTg3YmQ2MWUzMWU4Y2NiMDQgbGVnYWN5LXRydW5rCis0NTI4NCA3YWZhYTc1MmM3NzIwOGUzM2Y3ZDBkNWY3NjU5NjBhNmE4ODM4YzhkIGxlZ2FjeS10cnVuaworNDUyODUgY2QxOTVlMDczZGQ0NjVkMGY1YTAwZmJlMmI4ODYxMDY0NmVlNDVlYyBsZWdhY3ktdHJ1bmsKKzQ1Mjg2IDBjYTUxMTJlM2UxMjlhM2QwODQ1MDhkMGU1N2E3N2U0ZGM0MmNkMGYgbGVnYWN5LXRydW5rCis0NTI4NyA3MmNlYjFiMzBkNGJiYzIyYWVlZGM1NTcwMjM3NDM3M2YxNzRiODg5IGxlZ2FjeS10cnVuaworNDUyODggMTlkOTliMzE1NTVjZWJjZjBlOGNmNDYwZWEzZjY3ZDg4YTQ1NTVjMCBsZWdhY3ktdHJ1bmsKKzQ1Mjg5IDFlOWQ3ZTY2YzFiY2ZhNmJhY2NmZGYyNTg1MTA0ODFhZDBjYjBlZDcgbGVnYWN5LXRydW5rCis0NTI5MCA4OTY4YjEyNDJmMTg5OTRiMzlkMzExNGE1YmY1MWI2NWFiMTljOWNiIGxlZ2FjeS10cnVuaworNDUyOTEgNmZiYzExYTAzYmNjMmEzYjY4NDk3ZmM1MDIyOThkN2ZlZWExMWI1ZSBsZWdhY3ktdHJ1bmsKKzQ1MjkyIGYxOWFkZGQ2OWFkOTM5ZjIwYTQ1MzQyYjdkY2I3ZWZiYzI4OTUwNDEgbGVnYWN5LXRydW5rCis0NTI5MyBiNDNhOTcwMjY0NzkwM2Y1MjQ1OTJkODNkZjlhZTRmNTFkMjg4MDhkIGxlZ2FjeS10cnVuaworNDUyOTQgMTU3MTc5ZDJhNGMzNTIyZTJmNDc3NzYxYTU5YWEzODA0NzAxNmJmMSBsZWdhY3ktdHJ1bmsKKzQ1Mjk2IDhhMTg4MDM2YjcxM2I0YWNmODAxYTllODZkN2MxNDIzZTY4ZDRmN2MgbGVnYWN5LXRydW5rCis0NTI5NyAyZmQ2YWQ1ODIyMDMyZmJhOGFlNmQ1MmQwMDhhYTU3OTM5OTlhMzFiIGxlZ2FjeS10cnVuaworNDUyOTggZTgwOGUyYWY5MWY2MzQ5YmQzZGZjZjFiYjcwNmFjNDc1M2UxZWEyMyBsZWdhY3ktdHJ1bmsKKzQ1Mjk5IGM4YTA5ZmQ0ZjEwZGE3ZWUxMDNiZDE5YjNiYmZmYjE5Njk2N2Q5ZjkgbGVnYWN5LXRydW5rCis0NTMwMCBjMjZmNWUyMDZkZTc5ZDU0ODljNDUxOGQ0ZGRkZmIwOTZhZmI5NjBiIGxlZ2FjeS10cnVuaworNDUzMDEgYTUzOTJiYjA3NDQwMjljZjE1YjE3MTc0NmUzMTczMjFkZTdiMzExYSByZWxlYXNlMjQtbWFpbnQKKzQ1MzAyIDBkZDMyYTZiMjk2NGUyMzQyMTA4MWMzNzk2ZTIzZTVmZGI0NmUyZWMgbGVnYWN5LXRydW5rCis0NTMwMyAyODkxMTZhNTJiYjFlOGU2N2ExZDcyMjUzNDE4MWVjNGUxMmI1ZjFlIGxlZ2FjeS10cnVuaworNDUzMDQgMWUxMmVjNDlkZjliNGRiOTg0MzA0NDg0ODdjMGQyYjUxZDcwNjY1OSByZWxlYXNlMjQtbWFpbnQKKzQ1MzA1IDM5OWE5YTcyMDk1ZjkzMGEyMzIzYTY2ODNlNzdhZjhlMzlmZWRiMWYgbGVnYWN5LXRydW5rCis0NTMwNiAxN2Y4YWRjYzczZWQ4NmI4ZjU4YzJkN2RiYTYzMDMwODVjYTJkNTlhIGxlZ2FjeS10cnVuaworNDUzMDcgYWYwNTZiNjNjZTUzNjA0MzBjMTAxZjgxZjU4N2U1YzA2NjE3ZmIwNSBsZWdhY3ktdHJ1bmsKKzQ1MzA4IDg4MzFmZDgyMmI2MDVkZGFiZWI4Yzg0NDNiMDQyMWZiM2JlODI3MTAgbGVnYWN5LXRydW5rCis0NTMwOSA3NjljNjI2MTM1NWU5MzlhMmJlMDZjMzBhMjk2N2I2NGE1NDYwNDUxIGxlZ2FjeS10cnVuaworNDUzMTAgMmU4YWI3OTdjZWFmOWQ3NDhkODVjZWQyYWE1ZGNiN2Q0NjRhNDRiYyBsZWdhY3ktdHJ1bmsKKzQ1MzExIDlhNmEwMzc1ZWYyMjk1ZWFmOTFkMjAzNDZhYWMyMjhhZDI3NTdlZGMgcmVsZWFzZTI0LW1haW50Cis0NTMxMiA2NWVjYjgzZWE3ZGRmZDIzMmVlODBlMWI0OTQ0OWMzZWM0YTc1NWNhIGxlZ2FjeS10cnVuaworNDUzMTMgYmM0ZmJiYjJkYjMwMDlmMGFiN2MwZmEwODlmNjcwOWQ1MjUwZGFiYiByZWxlYXNlMjQtbWFpbnQKKzQ1MzE0IGZlZDI5N2MyMDYyZDkyOGEwMDQ2NTA5OWI3MWRlNTYzM2I5MTIzNmMgbGVnYWN5LXRydW5rCis0NTMxNSAzNmUxNzYyZWFkODZiODBiMGFjZjk2ZDdiMjg1NjQyMjI2OTg4ZGI4IGxlZ2FjeS10cnVuaworNDUzMTYgMjJmMmM5MmExZGE3Zjk2NWZhZmNjZWY2NjJjYjY2NmIwZTljZGNhOCBsZWdhY3ktdHJ1bmsKKzQ1MzE3IGFkNDg2ZTQ4NzVjNmUxODNiNTBmMzFkNzc0YmQxODZmMTRmM2U2ZjYgbGVnYWN5LXRydW5rCis0NTMxOCBjNmUxMWY4MDRkMDBmNzYzZjQwMTVmODgyYTM1ZTM1OWFjYzc1OTNiIGxlZ2FjeS10cnVuaworNDUzMTkgMmMwNjU4OGFlNjllNjI4MmVmZmRlNWM2NjMwZWE2OTllNGY2Y2M2ZiBsZWdhY3ktdHJ1bmsKKzQ1MzIwIDQyMmNkZDI0YWY0NmM0NzRlNDM5NzRlMjY3NzY0MTQzZDEyOTYyOGMgcmVsZWFzZTI0LW1haW50Cis0NTMyMSAxMGU0N2YyN2VhMzlmYTA3Njg2YjBkNjBiNjVhMDljZDE4NDI3N2VjIGxlZ2FjeS10cnVuaworNDUzMjIgNDU1MWRhODQ3NjUxYWNjMjYxYTMzYmYyY2ZlZTdlYTU4MTAwNGEwMCByZWxlYXNlMjQtbWFpbnQKKzQ1MzI0IDIxZmNjODZlNDgyMDgyYmVjNmJkOGQzZDE5ZDUzMTVjMDI1NDA2MjggbGVnYWN5LXRydW5rCis0NTMyNSA4Yzk5OGM3NjAxOTEwZWQ0ZWNhNTNlOGEwMzIwZWJiOGEwYThkMWM2IGxlZ2FjeS10cnVuaworNDUzMjYgNzRkMDQ4MzhjZDExMjc0ZmE2MTUzODAyMDhiYzM2YmE3Yzg4N2QwYSByZWxlYXNlMjQtbWFpbnQKKzQ1MzI3IGI1Zjg5OWMxODdkNGM1Y2U3YTE3ZGExNjlkOWE1YjMwNTU5OTQ3ZjYgbGVnYWN5LXRydW5rCis0NTMyOCAxMjU2NzE4OWVmMjU3MWZkZmE5NjJkZjM4NWIyYTI3MTQ2YTE2ZjkyIGxlZ2FjeS10cnVuaworNDUzMjkgZGVjMjU5ZTRkODkxNmM2NWQwMDA1YWUyNDBmMDM3OGNhYzViN2UyOCBsZWdhY3ktdHJ1bmsKKzQ1MzMwIDJmM2YyZTMyZGZkOWQ3NmU3MTk4NjNlZTE1YmViMDExOTkxYWJjZDYgbGVnYWN5LXRydW5rCis0NTMzMSA3ZGYwYzQ0ZjM5ODYyMzY5OGRjZjMwZmI4ZTczNzA0MWM3OWU4NjFkIGxlZ2FjeS10cnVuaworNDUzMzIgYjYzMTlhNjk5ZGFiYTFkNTllZTk2MDJiOTQ5MDBhMzI0MDhkNTA1NyBsZWdhY3ktdHJ1bmsKKzQ1MzMzIDJjMDg0ZDgxYzk1MTQwMWRkMDllMDNlYWQ4MjFmMmY1YmYyZGZjMzkgbGVnYWN5LXRydW5rCis0NTMzNCAwNTRhY2VkZjNjMGQ5MGMxNDQxOWI5ZGUwMTQ4MGExOGQ0NGJiOTJiIGxlZ2FjeS10cnVuaworNDUzMzUgZjQ1YmMyNDFlMjAwMGIyZWEyYzdlMzYxNjFjYTIxNTRlZTcxNWVkOSBsZWdhY3ktdHJ1bmsKKzQ1MzM2IGIxYzZhMzg2NGIxZThjMTY5MDhlYTczMGM5ZGZhY2QwMzIyZTc0OGQgbGVnYWN5LXRydW5rCis0NTMzNyAwNjc4Y2U5ZmI2YjJiMTExMGZiNmI2NjkzZTIzOTZhYjE1YzY1ZjBlIGxlZ2FjeS10cnVuaworNDUzMzggYTg0MGU5YmFmZjk2Y2M5NzI1NmRhYzJlNWY0ZDAxZDI2NjFmZjY4MSBsZWdhY3ktdHJ1bmsKKzQ1MzM5IGQxM2RlZDkxNjVlYzQ0MTQxZjA4MGExNjkxOTU0MDA2YjJlM2I0ZmEgbGVnYWN5LXRydW5rCis0NTM0MCA2NjY3NmE4ZWNiNTJjZTRjMDMyMGQwNWNlNDg2ODZiZjMyYWRkZmMyIHJlbGVhc2UyNC1tYWludAorNDUzNDEgNWE5ZmNkNjc2YjNmZTllZDEwODcxZGNlYmUxZjIzM2ZlOTE3YjFkMCBsZWdhY3ktdHJ1bmsKKzQ1MzQyIGIxNzI0ZTkyNmUwN2M0Njk1ZjRkMGU1NWI0ZDk4OGY0Y2MwMDQ2YmEgbGVnYWN5LXRydW5rCis0NTM0MyA0MzQyZTQ0MWIxMWNjYjU1MDI4YTViM2NmMjAwMDczYzJmM2ViNjM3IGxlZ2FjeS10cnVuaworNDUzNDQgYjkzYzA1OTYwYTE1ZmFiNmM3Zjg2YWNmZmZlZjI0NTgyYzM1YjM0OCBsZWdhY3ktdHJ1bmsKKzQ1MzQ1IDM2YmZlNDZjNWM2YTYzY2JhOTFmNjMzZDkwYzFkMzNkYjBjNzg4YzMgbGVnYWN5LXRydW5rCis0NTM0NiAzZjk3MzlkZTY2MDMzMzUzYzM4NDVjMjc4MWIxM2I4NGFmNDE4MTI2IGxlZ2FjeS10cnVuaworNDUzNDcgMGEyOGYxNTc4NzVlMmMxMTQ0Zjg5MjE2YjYxM2MzNGNlOTUyOTBmMiBsZWdhY3ktdHJ1bmsKKzQ1MzQ4IDYwNjgxOGMzM2U1MGZlNjcyMzA4MzBkZDc1NWI0ODRkZWZmZmY4MDIgbGVnYWN5LXRydW5rCis0NTM0OSBhNDIzMWFhMzIwMWFlMWEzOTRlZTY0M2M1YTQ3YzdjMTk0ZjY4NGNhIGxlZ2FjeS10cnVuaworNDUzNTAgODZkYjZkZjI0MTc0NDhkYWFjMGE0MmZiNWQ4Yjg2ZWEwMDA5OWIzZiBsZWdhY3ktdHJ1bmsKKzQ1MzUxIDNhMzllZDU5N2I2OGFhZjc2MDMwMDhiM2Q0ODYyYmU4OTNhYWZiMWMgbGVnYWN5LXRydW5rCis0NTM1MiBlNzk1ZDZjODZhNWVkZTk4NDFhMGFhYTRjZjk3M2FjYzFlODc5ZTRiIGxlZ2FjeS10cnVuaworNDUzNTMgMzBkNmI5ZWFmMDJkYjhlMjlmM2ZhZjYzZWE5YjI5Y2RjMjM1ZWFjMSBsZWdhY3ktdHJ1bmsKKzQ1MzU0IDU4NjQwOTgzZmQ2NmM2OWU3OWJlOTMxMzcyNWU1N2U5NzU2NzVlZDUgbGVnYWN5LXRydW5rCis0NTM1NSBmZTg4ZTAxZmY2ZGU4YjQ5MjdiZDg3MmU5OTFlZWRkZjJhOWMxZGQwIGxlZ2FjeS10cnVuaworNDUzNTYgMjNlZGYyOTBiNjc2ZjIwYjhkNTUwMDc4OGViOWFkMmE5NzcwN2RkNiBsZWdhY3ktdHJ1bmsKKzQ1MzU3IDVhNGI5NjQxMjMyZjg1ZmZjNTA4OTliMTcwOTRhM2U3MzY2NmI2N2UgcmVsZWFzZTI0LW1haW50Cis0NTM1OCA0MTMzZTg0MWYwY2I5MWRkMTg1MjRmNGVmN2ExYTVlMzlhZjg5MGViIGxlZ2FjeS10cnVuaworNDUzNTkgMzk5YjExOWMwNThhMWI5NmNlNDI2YmViNDllYWIwNDE2MjM0Y2JiOSBsZWdhY3ktdHJ1bmsKKzQ1MzYwIDVlNzJiMGM3NDEwMGQ3NTBkM2E5ZGU5ZjA1ODk1MTcwZDUzYWIyNDQgbGVnYWN5LXRydW5rCis0NTM2MSA5NTNlYjNkYzE4ZTU0MzFmMTA0NjU3MjM5ZWI5OTczYTc1MzZmNTY5IGxlZ2FjeS10cnVuaworNDUzNjIgOTk3NTEyODllYTAzYmFkMzVmNTk5ZTgxNWVhYmEwNjg3ODU4NzFhNyBsZWdhY3ktdHJ1bmsKKzQ1MzYzIGIzNTBlOWQ3OTFlNmUyZWY3MzBlZjI3N2VlNDcyOTkzNjRiNzVkZTkgbGVnYWN5LXRydW5rCis0NTM2NCAxYjViMTZjZGJlMGUxYTBiY2JiMzc0MjZkNjJmY2M1MzQ5Y2Q2MzYzIGxlZ2FjeS10cnVuaworNDUzNjcgNzUxZjdjNzliNWZkMTQ1OTQyNThjNWMwMTNkNjYzYmU1NTU5NjE2ZSBsZWdhY3ktdHJ1bmsKKzQ1MzY4IGVhYzgzZmVlYjExZjZjOGNiNDIyODBhZTk4MDViZWMyODE3YjBiMWIgbGVnYWN5LXRydW5rCis0NTM2OSA0ZDdiMjIzN2ZhMDdmMzcxZjg5ZmU5NTkwNzVmNjBmNjNlYjFmOTk0IHJlbGVhc2UyNC1tYWludAorNDUzNzAgMzA4ZTJlOGVkNjc2NjFhMjJjODliOWExNDU5ZTJjMjk5YzM2ZWNhYiBsZWdhY3ktdHJ1bmsKKzQ1MzcxIDkxYWVjNDc0NjIxODVkZTQzNzQyOGEzMmUzNGNiYzkxODA0ZTkwZTcgbGVnYWN5LXRydW5rCis0NTM3MiBhYzc5ZTkwMzdlMDZjZjM2ZDJmOTNkYmI2OTQzNzBkZTFhZTUxNGFjIGxlZ2FjeS10cnVuaworNDUzNzMgNzIwNDc0OGMyOTIxNWQ4Y2Y0ZDY1YmJkNjc4NTM4MWU3NTViMmRhNSBsZWdhY3ktdHJ1bmsKKzQ1Mzc0IDdlZTQwNjhlMmM2MmEyNTBlMmE5ZWVjMmJmOThiYjA5MjNkZDZkMGEgbGVnYWN5LXRydW5rCis0NTM3NSAyNTRjY2NiN2VmMTc2OTlkOWM4MzE2MDBiY2E4N2U5YzdjZGJhNDkxIGxlZ2FjeS10cnVuaworNDUzNzYgZTA1N2FmMmRmZmNlYzMxOGUwN2UxYzAxMTM3MDk2MWJmNjMwZjcyOCBsZWdhY3ktdHJ1bmsKKzQ1Mzc3IGZiY2RmN2MwY2M3NGQzMTM1Y2JlM2U0ODVkMjhjZGU3NzE1NGE2YzQgbGVnYWN5LXRydW5rCis0NTM3OCAwYTBkODlkNzEwYTRkZjE1YmU2MmM1ZmRlZDExODllMDUwMWFhMTMzIGxlZ2FjeS10cnVuaworNDUzNzkgOWIyMmQ4YjdiY2FhYzQzMzU2MTgwZTYwZjZkOTc1MmEyNmY0OTk4YyBsZWdhY3ktdHJ1bmsKKzQ1MzgwIGVlNTczNDk3NDRmMzcxMWFiM2RlMGUwYzZmYWVjMmQ4OTYzOWM5MmMgbGVnYWN5LXRydW5rCis0NTM4MSBiYjNmOTA3NmQwNzljNWY0NDNlZWMxZDU3MmMwODYyOWU2Y2NmMTE1IHAzeWsKKzQ1MzgyIDkxNTBlMjYwYzQxNzRhNzU5OTQwODNhZDVlNWFmYTQ2ZWQ1ODY3NGYgbGVnYWN5LXRydW5rCis0NTM4NCBkNzFmMjZlNjQ0ODllYjFmN2VkMzk0ZmE4N2FmYzVhZGUwMjM1NjBlIGxlZ2FjeS10cnVuaworNDUzODUgNzg2ZDAzNTZkZTUxM2EyZmIzNGYxZTAyNDg5NzBhZWRmYTcxMDU3YSBsZWdhY3ktdHJ1bmsKKzQ1Mzg2IDIzMGZmZjZlMDYxOGQyNDFiMWVjMjc2YjY4ZWU3ZjcyMzBiOGVhMGYgbGVnYWN5LXRydW5rCis0NTM4NyAzN2E4ZWI3NGM1MDQ2NTEzNmM1NTQ2YTk5YWRmYzZmOTNkOGU3YTgxIGxlZ2FjeS10cnVuaworNDUzODggY2NiM2FmNDliY2IzMDFjNzI1ZmE4NTkxYTM1MWIyNjE5ZWRkMmViYyBsZWdhY3ktdHJ1bmsKKzQ1Mzg5IDIzM2IxMGVjZmNlZjY2MmVlYjlmMWNhOTRhNTJiYzIyNjdlNTcxZDQgbGVnYWN5LXRydW5rCis0NTM5MCA5YmVmMWRlYmNiYWE3Zjc3Njk1MzI0YTI5MTVlMjIyYmIzYTk5YzY5IGxlZ2FjeS10cnVuaworNDUzOTEgOTFkMTZhODdjYmU4ZWE3NmU3MjgyNWI5N2YwM2RiOGYzZGNhYzEzZiBsZWdhY3ktdHJ1bmsKKzQ1MzkyIGVjOTg2YWFiZTFmZGVmMjcxMDNhZmE1MTc4M2E5ZDllZmI3NmExMTAgbGVnYWN5LXRydW5rCis0NTM5MyBhZmU1NmI5YjY2NGIyNDE3NzZjNTQ1MzhlYmFlMmY4ZDFjMDUwOTA3IGxlZ2FjeS10cnVuaworNDUzOTQgMWQ1YTRjODIwNjFlNjhkYTNjZDFkOGQ4MjkxMzkyYTg4NzI5NTdiMCBsZWdhY3ktdHJ1bmsKKzQ1Mzk1IGQ3ZGMwMDg1ZGQ4NWM4YzQ2NDUwMDczM2FiM2M5ODBmOTIyYTBlNDggbGVnYWN5LXRydW5rCis0NTM5NiBhZjQ3ZGE1ZTljZTE0ZGI0YWNlMjIwYWI5ZmRhMDhlMDQ4YWUzMDk4IGxlZ2FjeS10cnVuaworNDU0MDEgY2Y3MWMzODE0YjBiMzE3N2M5YzAyOTA5NDFhYzJiOWJiZWEwMDY0YSBsZWdhY3ktdHJ1bmsKKzQ1NDAyIDEzNjZiZmEwODRlZTcxNzFhNGYwMjc4MWJiZTk3OWJhODlkZGU1YzUgbGVnYWN5LXRydW5rCis0NTQwNiA4NTZiZWUxNTAwYmJjZGVhYzAxNjZhNjMwOWUzN2YzODE3YWYwN2Y2IGxlZ2FjeS10cnVuaworNDU0MDcgNjQ0MWY2ZmE2NTcxYTdkMmJhMjY1MGYzZjM0ZTZlOTEzODBlYzM2MyBsZWdhY3ktdHJ1bmsKKzQ1NDA4IGI5NDBhYzRmOTU1ODZhYmMwYTc4NGFhMzVhNDJjOWVlYWUyZDZlOWYgbGVnYWN5LXRydW5rCis0NTQwOSAzMTkyOWRhMGIwNWFmYTEyOTU0NjE3ZTQxMGUzODVlNjZiZjQ4ZTUzIGxlZ2FjeS10cnVuaworNDU0MTAgNmU5YWI4N2M2MDhjZDkwNTUzN2E5ZmNiMDdkZDUyMTk2OTY2MDI2NiBsZWdhY3ktdHJ1bmsKKzQ1NDExIDI3YTYzOWM0NDcxYTRlMDA3M2I2MDlkMGY2ZmU5MWVlNjVjMzMxMzYgbGVnYWN5LXRydW5rCis0NTQxMiA2MmM5MDM4YTU3OGE4YTkyMjdlNzJjMGJlMTEyYzc5YTQyMWM0MmYzIGxlZ2FjeS10cnVuaworNDU0MTMgNTg4Zjk3YjI0YmY5ZTFmZjY1NjcwNGFkNDM5ZDI1MjNmZjY1ZDM5MCBsZWdhY3ktdHJ1bmsKKzQ1NDE0IGM2ZGY1ZTc5NTQyMzAzOWMzODQ4ZWFiYzU3OTExMjY2MTViMGNiYTAgbGVnYWN5LXRydW5rCis0NTQxNyA1MzA0MDU5ZTdkZTNiMWIzM2IyNDAyZmQ5MDkxMjJkZDljZGE4ZGYzIGxlZ2FjeS10cnVuaworNDU0MTggOWIxNmU4MTYxZGY3NzdkMTAxODZlYjk4NjM1ODg1Y2JhMmMyMDA1MiByZWxlYXNlMjQtbWFpbnQKKzQ1NDE5IGJmYzQ4YWQ4MWU4MDRjYjI1ZDY1OTMyOTQ2NzIwZjU4ODVjNzJkODYgbGVnYWN5LXRydW5rCis0NTQyMCA5ZjgyMTAzMjU0ZmE0ZWJlYzUxNzhjNDBhYmVhMDM2MGExMzM1MzI2IHJlbGVhc2UyNC1tYWludAorNDU0MjEgNGM2ZDQ2OThhMTE1ZGM3Nzc0NTAyZWYxYTUyNzI1OTRkODAyYmJmYSBsZWdhY3ktdHJ1bmsKKzQ1NDIyIDA1YWYzOWE5MDc1NDM1ZGZiMWZiYTQ2NmE5MDljMGYzYzkzMGQ1MGYgcDN5aworNDU0MjMgYjAyNzBjNjgwNDJlZDQ3ODRhY2VjN2FlMDFmMTA4NjY3Yjg0OTE2YSBwM3lrCis0NTQyNCAwYTEzYTk2NTg1YzNkMzY3NjI5MDYyZGViZWRhMjBjNzIyNGY3ODc3IHAzeWsKKzQ1NDI1IDRjYzM0YWYwMTlkMmMyNjNiNzYwZmExZTg3OTU2MmI2ZjQ3NTE1MTMgcDN5aworNDU0MjYgZmIyYWZmMTg2MmU0NmYxOGQyY2NiYjAyYWRlNTU1NTZiYzg1ZTZjZiBwM3lrCis0NTQyNyA4ZGFhZTdiYTA3OGE1NTQ1M2FiYzQ4MDg1MTFiODU4MzUzMzUxM2IxIHAzeWsKKzQ1NDI4IGE2N2YyMTU4ZDYxYjFhZWFmZjliYzM3OGE1N2E3NTllZTM2NjIyYjcgcDN5aworNDU0MjkgYzQ3Y2NjY2EwYmY0Mzg2Zjg1ZTA2ZDg1NDUwMDRjMzliZmU0YWVlZiBwM3lrCis0NTQzMCA3Y2FlNjIyZWRjYzk3OGQ0MWQzMThjM2I5NzMyYmE2MGNkMDgyOWQ0IHAzeWsKKzQ1NDMxIGE1Yzk3N2U2ZjVkYTE0OGJlNzgzNmM5ZDhmNWQ1YzAwYmRiZDg0MWMgcDN5aworNDU0MzIgMzUzZmUwNmRhYjViMzcyNWM3YTUwNGZjNWVjYTNjYmRkNzZjNDI0YyBsZWdhY3ktdHJ1bmsKKzQ1NDMzIDYzNmNhODBhOGNiZWRjNzA1YmU2YzQ3ZmQwMTU4ZDE4OTNmZTI5ZWQgbGVnYWN5LXRydW5rCis0NTQzNCBhNTkwMmUwZWMwN2M4YmE4NjllOWI3NzVjNzk0YzUxMGQ1ODE4MTI5IGxlZ2FjeS10cnVuaworNDU0MzUgZDE1NDc0MjZhYjYxMDZlY2FkMmQzYmIwZWYzNjBmNDdmNmM3NDRhOSBsZWdhY3ktdHJ1bmsKKzQ1NDM2IDI0MDA5ODkzNWNkNWViZDE4ZGRhMzBkMWZmNDlkOGUyYjhkMWVlYzcgbGVnYWN5LXRydW5rCis0NTQzNyA2MzE0NWMwNmRlZWViNDgzZjM0YmY5MjgxYzA5YzRhMWQ2YTZkMGVhIGxlZ2FjeS10cnVuaworNDU0MzggMWQwMjM3NGY0YzdlMWE1YTQ2MjIxYzA2ZDFlODY3NTFkOTlmNzQ4MCBsZWdhY3ktdHJ1bmsKKzQ1NDM5IDdmNzI3OTFmMGFlYzMyZjY5MDQ3ODdhNzJiOTczYTc3OWI3ZDY2MjcgbGVnYWN5LXRydW5rCis0NTQ0MCBhYmY4MjQ2MWU2YjRkZjUxZjUxMTdmMTI1MzYzMTg1MmYxNmM4NWEzIGxlZ2FjeS10cnVuaworNDU0NDEgOWUzODJmMmY0MzlkOTc3NTIzMDY2ZTZmNWFkN2E4MTBiN2ZjZDExYyBsZWdhY3ktdHJ1bmsKKzQ1NDQyIGI3MzczYmMzYjA5ZjMzOTJiYmEzMjYyZDEyY2VmNzBhNWU3MTQ0NDYgbGVnYWN5LXRydW5rCis0NTQ0MyA3YjJlNDM2YTRhMjExYzJlNTdiZjRhODRiZTIxZjFhNWNhY2FjOWI5IGxlZ2FjeS10cnVuaworNDU0NDQgZTEzODhhYmE5ODk2MjNjYTAxNmM2NzlmNGI0YzZhNmM3NWYzNGY2ZCBsZWdhY3ktdHJ1bmsKKzQ1NDQ1IDliNzhkYzA3YjE3MGNjNjY1MDU5NDk2MDE0ZGYxMDM2MDIzMTRkZjcgbGVnYWN5LXRydW5rCis0NTQ0NiAzNTNiNTk2NTFlNDUwZTE0MjYyNDA5NDE0MGU0YTQ0MzMyZjQyNDJmIGxlZ2FjeS10cnVuaworNDU0NDcgOWViNGRjMWNjODNlN2E2MzEyNGFiOGNjODJjOGZjYjAzOTM3MjNlNiBsZWdhY3ktdHJ1bmsKKzQ1NDQ4IDgzM2YzODRlYmQ0MWI2MzAyZjJiNzFkZDM3NmQ2MjgwZjg2NGM1OTEgbGVnYWN5LXRydW5rCis0NTQ0OSBhMzljYzg0ZmYxODU2YzdhY2M1YmM3ODFjNjc4NjJiNzBjNzAzZmZkIGxlZ2FjeS10cnVuaworNDU0NTAgYjdhMzk3MmU5OTE1NzI3ZTk3M2E4NDY4NGYyMGNjYWQ1ZTRkYTM5NSBsZWdhY3ktdHJ1bmsKKzQ1NDUxIDk2YWRkYWEyNTg2OTcwYjA4MDk4ZjhkZWE1ZDIyNzNlMDc2NWYwN2QgbGVnYWN5LXRydW5rCis0NTQ1MiAwYTU0YzE1YWExNDNjNGQ2MDAyMDgxMzZkMDFlNzc2Yjk4NjdhNjU4IGxlZ2FjeS10cnVuaworNDU0NTMgZjFjOTg1M2RmMGY3ZDRhZTZhNGRiNDk3YzJlYmFhZjdiYmQwMGY2YSBsZWdhY3ktdHJ1bmsKKzQ1NDU0IDdjYzMxNTE2ZjgyNThmZjE2Mjg4MDEwN2RkYmQzYWM2ZWE3NDcxZjkgbGVnYWN5LXRydW5rCis0NTQ1NSAzOGQxN2Q1MWVhOTVkNDQ4NzUwNDFiODljMDUwMTY3ZjJjNzUxNjBiIGxlZ2FjeS10cnVuaworNDU0NTYgMDFlNTFmNWRiODgxYjg1YmExZTdhYzlkZDEzNjU5MTM4NDU5ZWFjNCBsZWdhY3ktdHJ1bmsKKzQ1NDU3IDMxZGNjMzExMTEzM2JlNzAxOGRjMDRmMmQyMWY3YThhYjYxYmNjZDcgbGVnYWN5LXRydW5rCis0NTQ1OCAwODRkMTg4ZTdkYmVmN2FlZDY5OWFiMjdiMGM3MDhmYjY5Nzk2NWJlIGxlZ2FjeS10cnVuaworNDU0NTkgYjkwYTdjNjAyMWJjYzQyMzgyZGE2ODhmNGY1YWQwYjQ0MjY4MzE0NyBsZWdhY3ktdHJ1bmsKKzQ1NDYwIDYwNGM5YmNiMzA2YzZkMjZiZDMxYjIyYjk2Njc5ZjIwOGFjZDBiMmIgbGVnYWN5LXRydW5rCis0NTQ2MSA1YmI2ZTU0Zjk0MDhmNjE3NmM5MDU5ZDdmM2I5ZDZlZGI2OWQyNTFjIGxlZ2FjeS10cnVuaworNDU0NjIgZDhiMjNiYTRhMjc0ZWNmNGVkNzZkZGM1OGVmMDAzOTE0MmYyYmE3OCBsZWdhY3ktdHJ1bmsKKzQ1NDY1IGIwMDQ0YmI0ZGYyYWVkY2ZiZjMxMWRmNTk5MWQ5Y2RiNWQ1MmJhYjcgbGVnYWN5LXRydW5rCis0NTQ2NiBkNGFlNWEyNjE1Nzg4MmUxZDEwZjc5YTQyNjZkOWY1ZjkxOWIwNWQ4IHJlbGVhc2UyNC1tYWludAorNDU0NjcgYmUyMzhjYjI2ZDMyNWUzNTgzMmQ3ZTllMWFlNTBkY2MxODUzYTQ3MiBsZWdhY3ktdHJ1bmsKKzQ1NDY4IDdiYmI5YjVmN2FkY2ZkOGUxOTk0NDY1NTQxYjc4NDc4ZjhlNjJjMzkgbGVnYWN5LXRydW5rCis0NTQ2OSBiOTViNWMzM2NiM2E1MzMxYmVhN2M1YWM1ZjdlMzE5MzAwYTVkYWMzIGxlZ2FjeS10cnVuaworNDU0NzAgMzAwYmYxYzRkZWVkZTdjMWQzZWFmN2M3NWZlOTJmMzU4OGRhZjYxOSBsZWdhY3ktdHJ1bmsKKzQ1NDcxIGRkZjhjOTE0NWYxMzYzZTgyZjhjNDNjN2IwYTA5ZmJkZDNhOTBhZTggbGVnYWN5LXRydW5rCis0NTQ3MiBiNWZjZWYxNTgxMzNhOTc2ZjYxZmFiZTY1MmYzODMxYjU0NmQzZjkyIGxlZ2FjeS10cnVuaworNDU0NzMgZTIzOWQ3NDVjNjQ3NDAzNzYwMGNhMTQ4M2RhMmM2NWYxYzhhN2Q1MyBsZWdhY3ktdHJ1bmsKKzQ1NDc0IDJjNzZmNzFiMjIzZGU3NWE4OGNhZjlmY2U2NzEyZTJmMmQ5MjUzMzYgbGVnYWN5LXRydW5rCis0NTQ3NSA1YzQ1MzMwMmQ1ZjZhMGVjNDIxNDlhYTY2ZTdjNWQ0ZTQyMThjYzBhIGxlZ2FjeS10cnVuaworNDU0NzYgZWMwMGI3OThhYjU2OWVhZTg0N2ViNmY2YWM4N2YxNzhiMGQ1OGViYSBsZWdhY3ktdHJ1bmsKKzQ1NDc3IDMzNTIyMzQyMjE5OWNlNDMzMjg2ODgwNmYyYTgyZmRkMDExNWI4MzMgbGVnYWN5LXRydW5rCis0NTQ3OCBkZGE3Y2M4OGMwNWFhYmMwNjFiOWI5NWZjODE5YWJmNDE1ODMxMWRkIGxlZ2FjeS10cnVuaworNDU0NzkgYzA0MTM2YTgwNjJhMWRiZDUyNWY4M2I2YWVhNjFiZGM3MGM4YjI4YiBsZWdhY3ktdHJ1bmsKKzQ1NDgwIDM4NGU5MTIwMjU3OGY5MTcwNWRkMTBhOTgzMmVjMzQyZjQ3MjlmNmMgbGVnYWN5LXRydW5rCis0NTQ4MSBlODE5Yjg2YTE1MDZhMDM3MzUxM2UzMjZiMmMyOTJhZmY5MTk4OWIzIGxlZ2FjeS10cnVuaworNDU0ODIgYzk0ZDc3MDUwODVhNTQ1YzNmODFkNzZhNTVlOGZiMmFjYThkODU0MSBsZWdhY3ktdHJ1bmsKKzQ1NDgzIDE5YzFiYWMxNWJkZWExNDg3MzBkNDljYmEzMDU0YmM5NzNkNWEwNDAgbGVnYWN5LXRydW5rCis0NTQ4NCBiMzc0MTQwZTQ2N2QyZTlhM2ZhMWIyNTllNzg1YWNmYWY0MTk0ZDc1IGxlZ2FjeS10cnVuaworNDU0ODUgZjc5OTFjZTQzMWU1MmVmNjcwN2E1ZTljYjVhYjAyOWY1MGRjZjYyNyBwM3lrCis0NTQ4NiA2ZjM1ZjdiZTM2YzNkNDVmNzkzODEzNmVlNzc0MjE5NDUxOWQ2OGEwIGxlZ2FjeS10cnVuaworNDU0ODcgODFiZjRkMzc4YjllNjc5ZDcwNDNiNmIzN2ZiOGEyYWQyYWMwZDc3ZCBsZWdhY3ktdHJ1bmsKKzQ1NDg4IDcwMmQ1OTdmMmY2ODljMmNmZDRhOWJlZjgwNzE3YzExZjc3OTMwYmIgbGVnYWN5LXRydW5rCis0NTQ4OSBmMTE3YTVmZGU0ZTU5YmRhZWNhMjBlNDgyMGQ0YmRlNDdkYTAxNWQxIGxlZ2FjeS10cnVuaworNDU0OTAgNGQ4MjA5M2UyZTE5NzgzNjcxNjZkMmUzODg3MzA3MmE4OTI2NDg1YSBsZWdhY3ktdHJ1bmsKKzQ1NDkxIGZiYmMwYmVmZmZmNzc4ZmE5YTM4YThiOTA2YWE5OGVmOTRiYjQwOGYgbGVnYWN5LXRydW5rCis0NTQ5MiAxOWQyNDc3YzEyODMxNjhiODEzNTFjOWU5NTk2MGRiMzhmNTI1ODA2IGxlZ2FjeS10cnVuaworNDU0OTMgNmNmZTQ4ZTY3MmM0ZTA4Yjg0YWY0NzlmOWQwNTNjNzRiNjIzYWIyMiBsZWdhY3ktdHJ1bmsKKzQ1NDk0IGVmZTc0OTIyNWJhZTJjNjUyZjgxOThjNTU4ODBiZjA3YWMzNWRmNDggbGVnYWN5LXRydW5rCis0NTQ5NSBkZjllY2FjYjBiZjY3YzBhNTM4NDJjYTQ2ZmQ2ZWJmOGJiN2FjMmZkIGxlZ2FjeS10cnVuaworNDU0OTYgNWY0NTdmNDI2ZDkxNmMxOTlkYWJmMWNiNTIyZGIzNjc5ZWExZTk0MiBsZWdhY3ktdHJ1bmsKKzQ1NDk3IGNjYzBiNTQxMjc5OWVhOTExYTkzNmQ3YTkzNjQ4MzdjMDYyYjY4NWMgbGVnYWN5LXRydW5rCis0NTQ5OCAwODZkODQzNGM3ZjdkYzI0ODgyOTZkMGM4NzA0MWQzNDFkYWExNTBhIGxlZ2FjeS10cnVuaworNDU0OTkgNTk5N2Q3Y2VkMTdkN2RmZjM3OGZiMzIxMmY4MTY3YzhmMDJkZmZlMSByZWxlYXNlMjQtbWFpbnQKKzQ1NTAwIDZkOGUzZTY1OTQ3ZjJhMjU5YmMxZTBkOTZjYzZjYmQ2ZjUzZGU3ZjYgcDN5aworNDU1MDEgOTI3NDg3OWYwNDg0MjhiOGNlNjg1NjkyYjFlMTMxZGFjYzY5NzAzOCBwM3lrCis0NTUwMiA4NTY5NWRlNjA0OWUwMTNkMDRhZjlkZTNiMTFlNTk4ZjdjMWEzNGEwIGxlZ2FjeS10cnVuaworNDU1MDMgODYyNWU0YTVjZTRkMGJkYTQ1MjE3ODkxNDdiYWM2MDRjMTc0ZjIyNCBsZWdhY3ktdHJ1bmsKKzQ1NTA0IDIwY2IxM2JkZjFmMDA5ZDVlOWNmN2Q2MmE3ZDcwODEyMTMwNjY0NDIgbGVnYWN5LXRydW5rCis0NTUwNSBhY2I2MTgzNmY3ZmFhZDlkMTM2YzhkMDQxZjE2MDIwZjMxOTVlODcxIGxlZ2FjeS10cnVuaworNDU1MDYgY2M5MTkyNTA1YjQwNWJjOWM3MjI2ZmRiZDI1NmFmNWVjMjc1M2ZiMiBsZWdhY3ktdHJ1bmsKKzQ1NTA3IDJlMzI3NmRjMjMxZjc2MDVlM2RiMzNkMTQzZTJlZDUwYzhlNDU5YmYgbGVnYWN5LXRydW5rCis0NTUwOCA2MWFjMWUzMjJkYTc2ZDk3ZWUzMDdkMTQ5ZTdmYjIyMDY2NTAwZGVmIGxlZ2FjeS10cnVuaworNDU1MDkgNmViODZhNzFmNWM4MTY3M2NhZDI3ZmYyOTViZjk4NTQ1M2RlNGQ2NSBsZWdhY3ktdHJ1bmsKKzQ1NTEwIDMxMzU2NDgwMjZjNGFlZDUyMWYyZGRkNGZiYTNjN2JhMmY3YzdjYzIgbGVnYWN5LXRydW5rCis0NTUxMSAzZWRlMTc1ZWFkMzdhODk5NmQ1NGQyOTAyZDRjYmUwZWU5Y2ZiMzBhIGxlZ2FjeS10cnVuaworNDU1MTIgYTVlODc5ODdjYWU2M2VhOGMwYjQxM2I3Y2YxOTAzZDZkZTA1M2Y0MiBsZWdhY3ktdHJ1bmsKKzQ1NTEzIGUyNTRiOTIyYzRmMzRlZjBkMWI5ZDQwMzYwZjNiZmU0MWNjODA2MWMgbGVnYWN5LXRydW5rCis0NTUxNiBmYzU4OTc0MThmMzFiZDRkNjZkYmRhNmZlN2RlODJkODYwZGM5ZDNjIGxlZ2FjeS10cnVuaworNDU1MTggZjU4MzFmZjdjZmJkMmJhZjQ4ZjY0NzQ4YTA3MTIwYTAyZjg3OGViOCByZWxlYXNlMjQtbWFpbnQKKzQ1NTIwIDQ1NzdiMjQzYjk4MTM3OGRmY2EzMjQxMDhlNDgwZDdmZDJlNzhmZWMgbGVnYWN5LXRydW5rCis0NTUyMyBiZTJhN2VjNDYyZmU0MTc5ZjJkNDMxMzNlZGJkOTNjMmY1NzRjMGY4IGxlZ2FjeS10cnVuaworNDU1MjUgZjA0ODExNmFhZGUwNTc4Y2QyY2Q4N2U4OGFjYzI1OGUyZGUzODA2ZCBsZWdhY3ktdHJ1bmsKKzQ1NTI2IGU4OTJiNTQ0MjgzNTA4YWVkNTQ2ZDFhZTI5YzVmMWI2NjJlNTRmNGEgbGVnYWN5LXRydW5rCis0NTUyNyBkODJkY2VkNmYxZmE3NDA3YTNlYTEzMWI2MzQ4MWU4NDk5Nzc3NTYxIGxlZ2FjeS10cnVuaworNDU1MjggMTc0MDYyZjdjMWJlMDA2OGE5YmY1NzhiOGE1YjMyODEyYjJmNjBmYyBsZWdhY3ktdHJ1bmsKKzQ1NTI5IGVlOTBhYjI2MDg2YWE0MzUzOTg2ZGJiYjc3YWYyNDdmZDE5YjMyNzYgbGVnYWN5LXRydW5rCis0NTUzMCAzMWIwY2RhMTFhNmQ2ZWM5MjE3YTI2NWUwZmNjODU1MzBjOTU5MWY5IGxlZ2FjeS10cnVuaworNDU1MzEgZDQ4ODI0NGRmMjg4NGIxNDVkZjM4MDJhOGEyNDhiYmZlNWFmZWVmYSBsZWdhY3ktdHJ1bmsKKzQ1NTMyIDYzODY0NDQ1OGZjNzUyOWM2YjM4OWY3ZWJjN2RlYmVmNTU2ZTI0MDggbGVnYWN5LXRydW5rCis0NTUzMyAxN2NjY2E1OTBhZTkzNzc1ZTgwYjAwYjYxY2NlYzc5YzhiNGZlMGE2IGxlZ2FjeS10cnVuaworNDU1MzQgY2M0ODk4NWMzMjY2YzQ4ZDEzNzNmNTVhMTY4Y2UzNTdlODkwMDAzMyBsZWdhY3ktdHJ1bmsKKzQ1NTM1IDkxM2QzNzkwZmQ5OWU5MWZhOTUxYjMyMDA0Y2Y4OGU4MjQ2MzNiYjcgbGVnYWN5LXRydW5rCis0NTUzNyBlMGE2MDMxZGY3YzBlZGRmMzUxZTZkN2IyNjkxN2IwOTk3NjQ3ZjE2IGxlZ2FjeS10cnVuaworNDU1MzkgMGMwMTIyYmQwZWEzMWQ2YzRlNjlmMzhmOTEzYzExZWQxM2JlMDJhMiBsZWdhY3ktdHJ1bmsKKzQ1NTQwIDI0MGZlNDk1ZDE4NjcwYTIyMmJjMjYzYmZlNWE3OTdjYWU5ZjFhZDYgcmVsZWFzZTI0LW1haW50Cis0NTU0MSA0ODhmYmI0Y2E4ZTUxNGQ2ZmYwY2Q4YTQ5M2FlODgzYzA0NzBhM2I3IGxlZ2FjeS10cnVuaworNDU1NDIgODcyNWI5MDdhY2JiZmVkZmRmZjJkNDliM2FhZjE0MjcwYmVhYmEzZCBsZWdhY3ktdHJ1bmsKKzQ1NTQzIDM1ZjI3YmJkOWFkOGEyZGY1Zjc3MzcyYmM1OTIzNDJmMTE1NzJkOTcgbGVnYWN5LXRydW5rCis0NTU0NSBkNjRiYWRhYzZjZjMxMjY1YzlhZTY1NzRmYjE4NmQ1Yzk3OWY5YWFhIGxlZ2FjeS10cnVuaworNDU1NDYgMTJhYjIwY2Q3YzI3M2ExYzFjMzM2ZWNkOTFlMmEzM2VhZDRiMzI3NCBsZWdhY3ktdHJ1bmsKKzQ1NTQ3IGRkNDE1NmMzNjcwM2ZhY2Q3MjZkZmI3NDFmMTRlM2RlMWM3MDBiZTAgbGVnYWN5LXRydW5rCis0NTU0OCA0MWYxM2I1NmRjMzJiY2U4NDk2ZjcxNTAxNzA1ODQyZjkzZjllOTlmIGxlZ2FjeS10cnVuaworNDU1NTAgZWJlNTljZDE4MjczMDJkZWNlODBjMDk3MDhlZTY0N2YyOTgzODEyNiBwM3lrCis0NTU1MSAxOTA0NWM1ZjBiYTJkYWM2Mzg1ODQ1YWFhODI3OTExYzZjZGJlOGMwIGxlZ2FjeS10cnVuaworNDU1NTMgODBlMDAzNDk2NDdkMGQzNjE2YjEwNjBlNzM0YWUxYmY0ZGZjZTc1NyBsZWdhY3ktdHJ1bmsKKzQ1NTYwIDI5MjU3ZWY2YWJlYjdlMDFkMTM4YmUxYjA5ZjIzNWY5MjEzNjc2NjEgbGVnYWN5LXRydW5rCis0NTU2MiBiN2Q0NzFlMTIwNDI3NmFmMjhlNGNlMjg4MTYwZTA4YjU5OWRmN2I3IGxlZ2FjeS10cnVuaworNDU1NjMgZGM4ZWZkNzBhYjU2ODY4MTBmMWE2Njk1NzUxN2Y0MzFiYTRmZGZmNSBsZWdhY3ktdHJ1bmsKKzQ1NTY0IGFjZDhmYmE2MTk0MzBmODFiZWQwYWY4NGE2MmI0ZDFlMzE2Y2M2OTUgbGVnYWN5LXRydW5rCis0NTU2NiBhNGQ1Y2VmYzJkZTQwODUxYzgwNzIyYjhlYjMwNTY5MTQ0MDk0ZWVkIGxlZ2FjeS10cnVuaworNDU1NjcgNzRmNDU5YTI4OWJlOWRkMGIyZjg4NDBjNTI3NzkwZDY3ZmZmMDlkNiBsZWdhY3ktdHJ1bmsKKzQ1NTY4IDU2NGVjOTczNjVmOWQ5ZmFjZGMzNGYyMjVmN2QzN2VhYTdkZDVhYjAgbGVnYWN5LXRydW5rCis0NTU3MyBkNGFlOWMwMzI1YjFhNzlmZDkzOWUyNmY0NDNjMmQ3MTBmYzAxZThkIGxlZ2FjeS10cnVuaworNDU1NzQgZTk2ZDFjYWQ0NjgyMDVhMzdjN2MwYmJiM2JiMjMzMzE4NTkzNmI1ZiBsZWdhY3ktdHJ1bmsKKzQ1NTc1IDQ3YWM1MjRkYjhhN2M4M2U4ZGU0YTg5YTE0MWYyMDlmMzVhN2Y0OTUgbGVnYWN5LXRydW5rCis0NTU3NiA0NzdiZjkzMGYzZTdmNGVkMTFlNWFiYmI0ZDAwYTlkZjlkZGIyMTRiIGxlZ2FjeS10cnVuaworNDU1NzkgNzVlNzA2YzM2Yzg2NGExNDdmNmUzNGNhYjYyMzI2YWQ0ZDBmMzJkZiBsZWdhY3ktdHJ1bmsKKzQ1NTgwIGQzZTVjOTU2NTgxY2UyZWNlODA2NzRkZDZiMTE3NmQwZDA5MmViNDEgbGVnYWN5LXRydW5rCis0NTU4MSBiMGYzN2Y5ZmM2M2ZmOWI2NzA0ZjNlOGQ4YzBkODkwZGEzYjAzMGYxIGxlZ2FjeS10cnVuaworNDU1ODIgNGM4OTQ1NTJiOTY4MGY1NWI5YzVhMzdlZDJiN2I2NWVhMDkyMGM3MiBsZWdhY3ktdHJ1bmsKKzQ1NTgzIDJmYjE2YTYyOTQxNTc4ZGIwNzg3ZjFmZGE2NTg4NTA5ZDMwNjA2NTIgcDN5aworNDU1ODcgYWMxMjdjZDg2NmEzMTJmMmEzYmM3MWEzMTg5NGMyZTJlMzMzNjRmOSBsZWdhY3ktdHJ1bmsKKzQ1NTg4IGM0MzQxZTZjNmEwM2RlNGI4ZWRjZmQzOWE1OGJkYmU5OGY5MzJlODggcDN5aworNDU1ODkgYTQ3MTE3ZmEzY2E4OGM0NjBiNWVmMjkyMzBiNzBjYTZlZTVmNzc1ZSBwM3lrCis0NTU5MCBiMGY4ODE0M2RjNWM5NTAzMzViMzhlZjIwNTM2YTNmODgxNjA5NzU0IGxlZ2FjeS10cnVuaworNDU1OTEgZDM1ZGI4NGNhMDcyY2Y0OWFlMjNmOTc1MzE0OTRjYmQ2NGU4MTllOSBsZWdhY3ktdHJ1bmsKKzQ1NTkyIGI5YWFkNmE3NDQ1MmRjNWI3MTBlYjVhZWJlMzhjNTM5MzUzOGM4NmEgcDN5aworNDU1OTMgYTRjNzBmMzk2OGJlN2Q5ZjgwYTYzYTJiMjY4ZTM3NTU4MzEyMzU0NSBwM3lrCis0NTU5NCA4ZGY2MDc5NjMzNTU4ZTQyZTE5NzQxMDcxM2FmMDIwYjM3NWYyNzczIHAzeWsKKzQ1NTk1IDZhNDVmMjZlYTYxOWU1NzA2OTAzNzBmZjg1NThlYWRlYzg1ZjAyZmQgcDN5aworNDU1OTYgYjY4ZDIxMzY0OTE2NzEzYjUzY2JmNjc1ZjIxNTM3NjM4ODgwYjIxNCBsZWdhY3ktdHJ1bmsKKzQ1NTk3IGY3MzE4NTllOWIzYjkxMjY0YjMxMmE4MmMzMTI4ZDY2YTQyZDhmZmMgcDN5aworNDU1OTggOTZhYTVjZTg2NDQ1ODA3YmU0NzNmZTkzMzUwNTliMWVmNWJjZDBjNyBsZWdhY3ktdHJ1bmsKKzQ1NTk5IDcwMmQ4NWQ5NDE4YTc0NTYwM2FmYTg1MDBjMDQzNjkwYmY2MzYxY2UgcDN5aworNDU2MDAgYjI3MjRhMTJkZGNlNGZmYzZmMzkyNjU5NjI3MmMyMmZiNGY3ZmRiMiBwM3lrCis0NTYwMSA3MjI0NTE1OTI5OWUwMTUzYWZlMmJjMTk3ZDc3ZjExYjUyYzg4ZjNlIHAzeWsKKzQ1NjAyIGI0OTg0M2EzYTFkZjRhNGJmNTJkMjI1N2VhMDA5NDQ5OTNlZThlOTUgbGVnYWN5LXRydW5rCis0NTYwMyA5YmI2ZTM1YzFjYzQxOGI4MjViNDU3OTgxNmI4ZDIwYzNkMTYxMDY1IHJlbGVhc2UyNC1tYWludAorNDU2MDQgYzI4Zjc0YmVkODNiZjg0YmRhMGY2YzRjODA5MGM2OGI1YTM5M2E3OCBsZWdhY3ktdHJ1bmsKKzQ1NjA1IDMwMWM0ZWRlNDlkZDZlNjMzZjI5ZGQ3YWZlNTEwMjE5MGUyOGVkNWEgbGVnYWN5LXRydW5rCis0NTYwNiA1YmM5MTVmZWVkMTQwYTFmYjgxY2FhMDdjZWZjM2E4NjVmMjg0YWY1IGxlZ2FjeS10cnVuaworNDU2MDcgODEwMjU1N2FmZGYxNzY2ZTE0ZmIxOTljN2JjYTljMzM1NGE2MjUyYyByZWxlYXNlMjQtbWFpbnQKKzQ1NjA4IDc0OWFkMmEzNjkzZjIyYmU3ZDAwMzViMmJjYjhmZjExMmRlNDE4M2EgbGVnYWN5LXRydW5rCis0NTYwOSBkNjJjOWY2NDY2MzgxZTY3ZDlhMGM1MDg1MTYyNDE2OTJlMDZhNWRjIGxlZ2FjeS10cnVuaworNDU2MTAgYmQ3ODUzMzk0YzdhYTVmYTI5NmEwYTEyMmNlOWFiNDY5MGRhNjI0YyBsZWdhY3ktdHJ1bmsKKzQ1NjExIGQxOGEyYzg2NjYwOTVhMzdlZWY4ZGQ2Zjg4ZTMxYzU0MjhiYWJmOGIgcDN5aworNDU2MTIgNzNkOGU4OTc3N2UzMzAyNzdlYTQ4M2FmNDA3NDlkNzNkMTQ3ZDAxNyBsZWdhY3ktdHJ1bmsKKzQ1NjEzIDkxYTA5ODFlYzRjMmMxMDUzZTk2ODNjMzhkMjk0MWRlNDJhYTU0NWUgcDN5aworNDU2MTQgZjllY2ExMzNjZjg4NjljYzU4MjNkN2U3NWZmZjhmNmJhMDUwMDBlMiBsZWdhY3ktdHJ1bmsKKzQ1NjE1IGEzMTIwMmM5NDg1ZGFjZWI2ZDNkZjQxNDJlNGZiYTcyOTIwM2JlZWQgcDN5aworNDU2MTcgNzgxNDBiZTUzMTViYzdmZmE0MGZiOWVjNmY0YWU0NTlhMzkxNTg3MSBwM3lrCis0NTYxOCAzN2MyOGE2YWQ1MDExYzg3ZTdmZTRiOGI3N2NiMmM4ZDA4Mzg5ZDZlIGxlZ2FjeS10cnVuaworNDU2MTkgNTBlMGJkMmU0NTg4MTZhMjBlZmRlNjU5YmE4YjhlMWU1YWZmMmRhMSBwM3lrCis0NTYyMCBmZDZmMTkwZTI2YThjMTE5ZTgwNjQ4YzY0YmFkMTIxNTE5MmY1NzFmIGxlZ2FjeS10cnVuaworNDU2MjEgNTI1NTEyMjFhMTMyZDU1MTc5MmI5YmRhNjMwYmU5ZjM3YzI1ZjkyMiBsZWdhY3ktdHJ1bmsKKzQ1NjIyIDU2MDg5ZmFiYTA1NmEwYzA3YmVlMTUxNTVhY2Q5NDAyYjA0N2ZjZDEgbGVnYWN5LXRydW5rCis0NTYyMyAwNmRjZGVkZmM5OGZhN2ZlZDQ2NThmYTczN2E0YWM5MzZhOTc0YTQ1IHAzeWsKKzQ1NjI0IGMyYWU2ZGIzMDU3MmIzODRlNjc1MDM3YTAyNjE5YTYyMzg0ZjFhYjUgbGVnYWN5LXRydW5rCis0NTYyNSBmZDI5YWQwYmVmNzA4Mzk1YzRmNzk5NjQ2N2JjYzcxYzIzNzI0OTU4IGxlZ2FjeS10cnVuaworNDU2MzAgMGUwZTMxNWI0MjAyMzU3Y2UzYzU0ZjBkYmIzMDg4NWU5MjczMmRjZSBsZWdhY3ktdHJ1bmsKKzQ1NjMxIGM3ZWY5MmI5MDQ1YzY4OGEzN2E0NGM2NjY0NDQ3YTVkNzY2N2EzYzAgbGVnYWN5LXRydW5rCis0NTYzMiA3MjA0ZmJhYzU3OWNjOGFjNDVhMmQzMGJjNGQ3NWQzMzllODRkZjg3IHJlbGVhc2UyNC1tYWludAorNDU2MzMgNmM2MzRjNmQ3N2RkOGQzYTAwMThkYThhMGIzYWZiY2E0ZjU4NTAxMSByZWxlYXNlMjQtbWFpbnQKKzQ1NjM0IDNmMTQzMWE5ZWRjYjcxZTk2OTZlYmViMzlmOTE0NGE1NTE3ZTJjZmIgbGVnYWN5LXRydW5rCis0NTYzNiA2MjhmNDFhOGIxY2UwMzgzODBkZDRiMGY5ZjFmYmEwMWU3MThiMmE0IGxlZ2FjeS10cnVuaworNDU2MzcgNTRmMTU1MzY5YTljMTI5YzMxY2Y5NzNiMDZhMDZlMGM2ZTM1ZjM3MCByZWxlYXNlMjQtbWFpbnQKKzQ1NjM4IGZhNmI0OWJhOWFlOWI1MThmYmYxNzU4MjkzMTNmNTI1MDE3MjRlMmQgbGVnYWN5LXRydW5rCis0NTYzOSBjZTJlYzhjODM1ZTkzNWU5MDk3MjkwNTU1MWFhN2U1ZGQ0ODFhMDM3IGxlZ2FjeS10cnVuaworNDU2NDAgZGU0YTVmNTVlMjFkZTEzYTZlZTQ4MWIwMGU4YmI4N2QwZGNjNWUyNCBsZWdhY3ktdHJ1bmsKKzQ1NjQxIGZiMTgzN2U4OGU3MmI2M2I1YmYzNGU0ZjJmZGI3YjBlMjUzMjllMWEgbGVnYWN5LXRydW5rCis0NTY0MiAxMGYyNDFmYzk1OTM5ZjljOWQ3YzhiMmQxYzJhZGMxZTgxNmQ0NzcxIGxlZ2FjeS10cnVuaworNDU2NDMgYWI0ZTY1YzgwOWU2ZmYzMDBlNmI0OWE5OGNiMzZhM2FlODE1ZGI5YyBsZWdhY3ktdHJ1bmsKKzQ1NjQ0IGNlNTU4NWFmYzIwZjkyMTRkNDc4YzIwOTU5ZTRiZDA2YTVjNmRjNTYgbGVnYWN5LXRydW5rCis0NTY0NSA1ZjllYTc2ZTIwNzI0NDQ0ZTRkMDY1NmJhNGY0Zjk1ODRlZThlYjcyIGxlZ2FjeS10cnVuaworNDU2NDYgZjQ5YTJkZGE4ZTc0NTY4NmQ0NTc0MzVjNWY0ODg5ODdiZWI5NzYyZiByZWxlYXNlMjQtbWFpbnQKKzQ1NjQ3IDgzNGZkOWIzY2VlZWMyMDIwOGM3MTA4NGEwYTcwNjFhY2JjZDYzYzYgbGVnYWN5LXRydW5rCis0NTY0OCA5MDQ4ZDc2YmYwMWU2ZGY0OWQ5OTRjYjFiMDFiNGIwMzg3OTI5M2Q0IGxlZ2FjeS10cnVuaworNDU2NDkgN2RlMjg0OTU4ODgzNjA1MTZmMDI5NzliOGI5MWRiZWM1NDA0YjY1ZCBsZWdhY3ktdHJ1bmsKKzQ1NjUwIGZkODA4ZWU2OGViOTg1NWVlMTliMTM0YTYwYjU0ZTYxNzAyNjgxNGIgcDN5aworNDU2NTIgYTdmMzc2NWVhNDY0MjliNGY5MmRjYmM1ZTg4MDQ0OTlkNmJmMzJjNSBwM3lrCis0NTY1MyBhZTZmNTA2MDBjNDZiM2JmNTc3NGU3ZTYzOGY5ZDdmNTI2ZmRlMjFiIHAzeWsKKzQ1NjU0IDg4ZGE4NDc3NjExOTI5MWRiOGY0MzIzZDRkMjU5YjAzMzRmNzRmY2MgbGVnYWN5LXRydW5rCis0NTY1NiBlMTI1MmNlYTQzOWM2NWViODVkMGVmZWJlMTY0NGRlMjQxNDg0MjA2IHAzeWsKKzQ1NjU3IGQwZTRjZWQ0ODdiMzY3ZTQyNGU1MmU2ZWVlZjcyMWVkOTZjN2RmNmYgcmVsZWFzZTI0LW1haW50Cis0NTY1OCBhMGFhOTExYmU5NmEzMWVhYzE1YzQ5N2JjOTA1OWZhZmFhOWNiNjIxIGxlZ2FjeS10cnVuaworNDU2NTkgYmNmNzE1YTk4Nzc0YjA0ZDg3YTIxOTNjODcxYzk1MDRkYjZkZmZlYyByZWxlYXNlMjQtbWFpbnQKKzQ1NjYwIGVhNjc2MjhkZGFlNTY1NTFmMzAwZGZiMzkyNTIyYTY5ZjBjY2M5NGYgbGVnYWN5LXRydW5rCis0NTY2MSBlM2E4YThkZTM1NWUzZmI5NmE5YTA5YzQ0ZTcwZTgzYTU0Njk4ZDc3IGxlZ2FjeS10cnVuaworNDU2NjIgNzk5NTlhZjBmOWUwZjMxZTY4MjlkNmViMmM5OGRkZjU4OGI1MzkzMSBsZWdhY3ktdHJ1bmsKKzQ1NjYzIDk3N2U3YTdlMTU1YWQ0Mzk0NmMxNjYxYzQ5YjdmZTg0NDRjNmNhOTYgbGVnYWN5LXRydW5rCis0NTY2NCA3ZGE0YWY5NWViYWRhMTJkN2NmZDdmYmUyZWI3N2NiOWZkMGE4MjQ5IGxlZ2FjeS10cnVuaworNDU2NjYgN2JiYjA3MTEzYjI5ZmQxYmFjOGE3YjU3NjdmZWUzZTkxM2JhNjlhYyBsZWdhY3ktdHJ1bmsKKzQ1NjY3IDIyMmI0N2Q2N2Q0MzJiNDE4ODM3ZjA2Nzg4ODFmMWRhM2E2NjkyOGEgbGVnYWN5LXRydW5rCis0NTY2OCBkNmIxZTJiMzA4N2YzODQwM2QyNDA1NTU0NTc0MjdmM2VmMzRlZWNlIGxlZ2FjeS10cnVuaworNDU2NjkgYzI1ZGQ3NWUwNjY3OWVlZjFhOWFmMjhkYTNkMTlmNGZlMDEyM2Y0NCBsZWdhY3ktdHJ1bmsKKzQ1NjcwIDk5MTA2NjU3NjQzNDdhNDU2MTM0MGI1ZGZkYTRmMzE0MTFlNWExYzAgbGVnYWN5LXRydW5rCis0NTY3MSA1MDliNTMxNzE5NTRhODJkZTY0NGU5OGE4Nzk4NjNkZWUxN2RkMWY2IGxlZ2FjeS10cnVuaworNDU2NzIgMmZkNDc3YjYxNGUzZjYyZWI4ZjAzZjc5YjFmNjVhNWEwMzY0ZGVkNSBsZWdhY3ktdHJ1bmsKKzQ1NjczIDg0NzcxMGU1ZDdlMTY2MWNmYmNmOWNkODZhZjMzZjBjYzEwYTg2NjYgbGVnYWN5LXRydW5rCis0NTY3NCAxYjE5MjAzN2I2MmYxZmI5NTY5ZTliMWRkNGViNmUwZWU5NGI2ZGM5IGxlZ2FjeS10cnVuaworNDU2NzUgNThkMTBkN2QwYWExMWNlYzgzYjc5MjllN2Q3ZGJiNjYyNDg3OTZiNCBsZWdhY3ktdHJ1bmsKKzQ1Njc2IGI2ZDEwZGQzZjk5Nzk1ZDYxMDk3Y2EwZGEwZTIzMTUwNjJmOWI3MDcgbGVnYWN5LXRydW5rCis0NTY3NyA2ZjRlZGQ5MTRjNTg2YTE2MWYzZjk0MTY1MzUxMTI0MjZlMDY2ZjQwIGxlZ2FjeS10cnVuaworNDU2NzggNzE2N2MxYzBlMDEzMTcwNWZjZDg1NTY1ZDc4NjI0YjRhZjU3MjYzYSByZWxlYXNlMjQtbWFpbnQKKzQ1Njc5IDljMDQxYzg4ZWI2NzgzNzg1ZDQzMzc2ZmYzNGU2NzRmOTMwMjY0MzggbGVnYWN5LXRydW5rCis0NTY4MSBkNjBmYmM1NGMwZDRkZmViMmE4MjY1N2QwMTc1NTJkNjE0NzMzN2RjIGxlZ2FjeS10cnVuaworNDU2ODIgOWFjYjU1NTI4NjgwMzk5ZTY4MjBlY2YxYjFhODI4OGIyYjI2OTlmZCBsZWdhY3ktdHJ1bmsKKzQ1NjgzIGFkYjEwYWZkYTU1YjRlZGEzNDBiNjRmZmJkZWNkZWU0Yjg5Y2RjYTkgbGVnYWN5LXRydW5rCis0NTY4NSA5N2U1OWQyZTYzZGY2Mzc3NTMxYzI4MTg1NjViODUxNGE1NWVmMmYwIGxlZ2FjeS10cnVuaworNDU2ODYgZGFkOWIzM2U3OGU1M2Q5MWJhZGE2MjgzNGNlNGU5ZTkyN2E0ZTUyYyBsZWdhY3ktdHJ1bmsKKzQ1Njg3IGM3OGQzMDZhYWNjZjkxMjUxNTNiZGNmN2RiZDE3NTY3NjNhZTAxNjQgbGVnYWN5LXRydW5rCis0NTY4OCAyZjRkMTdiY2M5NzUxYTljNGZjZWJhMjljNGQxZWY0ZmU0ZWYyN2I4IGxlZ2FjeS10cnVuaworNDU2ODkgZTBiN2UzNGI1OTcxMzMxYmE2NTUxZmVjNDIyMTI5MmZmNDNkMGE0ZSBwM3lrCis0NTY5MCA4YjBmMDczNWIyNDZlZTE1NjNlODIzMDE2NGNjYTEzNDJiNzQ0NzlkIGxlZ2FjeS10cnVuaworNDU2OTEgN2UyZDVkMzc0ZTNhMmY0NWFjZTkyNjA0Y2FkNmM2MWMzZWM4ZWJhZCBJRExFLXN5bnRheC1icmFuY2gKKzQ1NjkzIDkyZjIxOGE2YjIwYjg0NGQzNWEzMGNlNmQ3YTgxN2U0NWU3YmEwZmUgcDN5aworNDU2OTcgNjEyMjhlNTU3OTFmM2VmNzAwNzA2YzE0MWE2ZDNkODkxODIxODRjZSBsZWdhY3ktdHJ1bmsKKzQ1Njk4IGFjZDVlNTU1OWUzYzI3OGNkN2ViYjc4NzE4MjgwMTMzMmQyMTVmOTEgbGVnYWN5LXRydW5rCis0NTY5OSAzMDE1NTIwZDY3ZmYxYmJhYmZlZWIxZWRkYmE1ZGUyMGUwNmIzNDZlIHJlbGVhc2UyNC1tYWludAorNDU3MDAgODk1YjdkYWJhMmQ2MDg0YWMwNDU0OGY4ZmI0MjAxYjJkOGJhNWRhOCBsZWdhY3ktdHJ1bmsKKzQ1NzAxIDAwZGQxZGFlNzg4YjdkMTE4MmMyYjljNGM5MDA1MzEyZTUxYjU5ZWIgbGVnYWN5LXRydW5rCis0NTcwMiBmMzNlNGVkNTUwYjhhNGY3MTI4NTc4Y2U2NDQyZGZmMWNkNzBjMTkxIGxlZ2FjeS10cnVuaworNDU3MDMgNDQ5ZDRiYTNjZDQ0MjQ3YWIwZDdjMTk3YjI2OWUxMGY1Y2NjNzQyNCBsZWdhY3ktdHJ1bmsKKzQ1NzA0IDE0Y2IyZWVjYzZmODk0NGQyZWFhMjcyYWJkZjBhN2U5NzczZDY3OTAgbGVnYWN5LXRydW5rCis0NTcwNiBhZjQ0ZGIyYTk1MjNhMDUzYWUzZTJkYWFlNDUxMDBjYzczMjVmYTZhIGxlZ2FjeS10cnVuaworNDU3MDcgNmMxMjQyNzZhMWYwY2FmY2RmNGRhNWE1ZDViZTZiN2NlZWY4MjAyYiBsZWdhY3ktdHJ1bmsKKzQ1NzA4IDQ1Zjg0OTI5YjJhZWI4NjUyNDk1OGI5OTFjNjhmZmQzYjFlY2MzZWUgbGVnYWN5LXRydW5rCis0NTcwOSA4ZTE0MTQ4Mzg2ZWMwNGU5NjBkMjAyNzY5NDljNTdjNjQzNGE0ZjBlIHJlbGVhc2UyNC1tYWludAorNDU3MTAgYTg2OGMyMThhMjEzMWI2YjY2ZmUzNTVmYjcxY2Y5YTc1MWI4N2FkNSBsZWdhY3ktdHJ1bmsKKzQ1NzExIDg4NjNmZWQ2YzhkNzE5ZDlhMGY4MTQ3MWU2NjVlNGQwMDM5M2Q2OWUgbGVnYWN5LXRydW5rCis0NTcxMiAxODQzNzEwZjMyZTgzMjEzNjdhODQ1NTYxZDg1MTVjYWRjNjNiNDlmIGxlZ2FjeS10cnVuaworNDU3MTMgZTVmZWIwNTFjMzJmZGMzZWE2NGEwMzU3ZGI0YmRjMWUwMDExZjJiNiBsZWdhY3ktdHJ1bmsKKzQ1NzE0IDcwNGI4MDUyOTY2NGJhNGU5ODk3Yzk0MWQxODhkZTU2ZTQ3ZDA1NTggbGVnYWN5LXRydW5rCis0NTcxNSBiNTM1YzE5MWE0NGIwODIwODIxYTNjN2VkYTg1ZGFjMmZhY2U2ODY3IGxlZ2FjeS10cnVuaworNDU3MTYgNzgzY2FiNjkzMzQ3N2M0MWM3NDQxYjA3YWE0NjAwNzcxOWJiZjIzMyByZWxlYXNlMjQtbWFpbnQKKzQ1NzE3IDY4YTdjMDE1YTU0NzQ3ODQwMWI5OGQxZDA2YWNkNDVjZjJiZWQzMzcgbGVnYWN5LXRydW5rCis0NTcxOCAyNjljNjJjN2Y2NmE1MzMzNWZiMWJjNzdkYzM1YjUwOTYxOWVmMGQ4IGxlZ2FjeS10cnVuaworNDU3MjEgZDhkOTAwZDBlYjhhNDY4NGNmZTczODY1ZWUzNTY1NWQ3NGZjNzU3OSBsZWdhY3ktdHJ1bmsKKzQ1NzIyIDA5YzQyNWE1YWEzYWYzY2VjMTlkZDJhODg1OWFmMGU1ZTI0YjY0ZjkgbGVnYWN5LXRydW5rCis0NTcyMyBkNWU2ZTQ5YTM4NzkwYWVhYTE3ZDQwZGMzZjJjMTVmNWFiYmU3NzA3IGxlZ2FjeS10cnVuaworNDU3MjQgMDZjMDU5YjkyZDBiYWM3N2MzZDEwYWQwZTNkMmEzNTgyMzdlNWE4MyBsZWdhY3ktdHJ1bmsKKzQ1NzI1IDg4MzllYTkzYjZkNzA0Mjk0NzkyN2I1NTY5ZGNlYzAyYTU2YWY2YzQgbGVnYWN5LXRydW5rCis0NTcyNyBmODFjZDdlOWQwMDFmMDgwOWNiNWE3YTY1Y2JhZDk4Y2RmMGYxYTU5IGxlZ2FjeS10cnVuaworNDU3MjggNTU2NDRmMGE0MDFiYjkzNWY1ZjlkMWIzYmJiNzk5MTg1YjliMjliNyBsZWdhY3ktdHJ1bmsKKzQ1NzI5IDE2NDk3MDRhMjIxYTFhNjExNzU2YTE3NDVkY2UyMGY0OGY5NGI4ZTMgbGVnYWN5LXRydW5rCis0NTczMCA4ZGMyYTRkOGEyMmUwMDY2Zjc2NDkwY2M0MmIxZDExYzIyYzFhYTE0IGxlZ2FjeS10cnVuaworNDU3MzEgMzU4NjYyZTJmMjczYTJkYmE5MDYwYjRiMGJmMTIzNzRlNjJlY2VlNSBsZWdhY3ktdHJ1bmsKKzQ1NzMyIGZlZDZlMzdhZDAzZDEwNTJlN2I4ODYxYmEyMTRlYTU4ZTQwODQ1NmEgbGVnYWN5LXRydW5rCis0NTczMyA5Y2MxMmJiMGI3MGE4NjYzNGI4N2ZiNTgxNGVjM2U0MmFlODhkYTcxIGxlZ2FjeS10cnVuaworNDU3MzQgMjJiYjVjNjM4NjJlYzYyMmE5NmYxNjkyNzQ4ZjNkYWFmMjIwYWE3NCBsZWdhY3ktdHJ1bmsKKzQ1NzM1IDdjMjIyY2U1MWJkN2ZlMGNmMjU1YThkMjk0ZmNiOTg0NDJlYTY3NGIgbGVnYWN5LXRydW5rCis0NTczNyA4NWM5Y2E1ZTAzNWFkZmY4MmY3ZjczYTRjZTNjYjA2NDM4Nzc1NjBmIGxlZ2FjeS10cnVuaworNDU3MzggYWMwNjg0NTNhNzhhODEyNjFkY2M4Y2Y3ZmYxNjg5ZDNmNmJjZGQ4NSBsZWdhY3ktdHJ1bmsKKzQ1NzM5IDk0ZDllMGRlNGU0OWUzMjBlMDk4NDIyYjYwMWEyN2I1MWIyMDMyMDMgbGVnYWN5LXRydW5rCis0NTc0MCAwZTgwOWI3YTg0ZjE3OGY4NDlmN2U3ZmJjNWM1MGM4NGI2NDhmYzVhIGxlZ2FjeS10cnVuaworNDU3NDEgMjZkMDc3MGYyYjdlZTI4OWEzOWEzYjU1ZGNlYzFjMWVlNjU4NDljNSBsZWdhY3ktdHJ1bmsKKzQ1NzQyIDUwODU2Nzg1NzMyMDVlNWU0MGJlN2ZkODA4MGQ2OTE4NjRlMDExZWEgbGVnYWN5LXRydW5rCis0NTc0OSAwOTkyN2YyZjc0NzhlNjNjZGI0YWI1ODA4YTUwZTUzMTBiNGZiYTRmIGxlZ2FjeS10cnVuaworNDU3NTAgOTIzMzUzMmVjOGIzNTEzNTgyZGViMjIxY2Y4MmQ5Zjk0Y2IwNTdlYSBsZWdhY3ktdHJ1bmsKKzQ1NzUxIGNkOWVkMjczYTY4Nzk2MzNhMmVlOGZhNjAyMDQ1ZDZmM2NkZWJjNGUgbGVnYWN5LXRydW5rCis0NTc1MiAxZTFiNTM2YzY4YjY1NjA1ZTMxMWM3NDk0YTg0MDJkNjU2NDc3OWE5IHJlbGVhc2UyNC1tYWludAorNDU3NTMgZGZiZDU3ZjRhNzExMmY5MmY3NDQ2NWM5OWQ1ZjM3Y2ZmMzJjNzk2MyBsZWdhY3ktdHJ1bmsKKzQ1NzU0IGE4NGE2MjFlYzVjMjRiOWM3Mjc1YWRkYTQzNDlkZDlhYzk4ZjZlYzggbGVnYWN5LXRydW5rCis0NTc1NSAwOTEzNDc3YmQyNGVhNDBiNDQ5OGYwNzhiZjM4ZjJlYzNmODBmM2I5IHJlbGVhc2UyNC1tYWludAorNDU3NTYgNzdmZWEwNmViYzEwYTBiNzI5NGExOGEyN2E5MjM1ZThlMGU5NWVkYSBsZWdhY3ktdHJ1bmsKKzQ1NzU3IDc4OGQ4NjY1ZmY1OGM1NDRjYzk2M2Y3ZjEyMzg1ZDJhYWQzYjViYzcgbGVnYWN5LXRydW5rCis0NTc1OCA0ZGEwZjc2MjEzMjVjMjY3YTA3ODEwZDVjZWM0MjAyNWYwYWZhM2ExIGxlZ2FjeS10cnVuaworNDU3NjYgYWY5NTJiYzdmZWIyNjE1OWE2ZWVlZGE4MGJiZGJhNTFhNGE5NDM3NSBsZWdhY3ktdHJ1bmsKKzQ1NzY3IDk0MGNlNWE3NmM1ZmY4NWFiZmY3ODQzYzgwNTM5NmFlYjUwOGQwMWUgbGVnYWN5LXRydW5rCis0NTc2OCBkNTUxNGE3ZWFhNGNjZWNlZjgyYmM3OGM5NjE5ZjlmMTVjOTRhODU5IGxlZ2FjeS10cnVuaworNDU3NjkgMGI4ZTc4MmI4NDg0Yjg4ZGQzY2VlMjE4ZjRjYmY3NGMyZTY3N2M1NiBwM3lrCis0NTc3MCBiNWU3ZDViM2M0NDJlNzlkYjEyODRhYmIzNTk5YWVjMmNiMTZkYjVhIGxlZ2FjeS10cnVuaworNDU3NzEgMzg0NWY3MGUwYmFmZGEwNGFmYThjYTBiODNiNjhiZDkwMmIyMzRiNCBsZWdhY3ktdHJ1bmsKKzQ1NzczIGJiNmM1YzIwMGEzZjAzYmZjOTJkY2RiNmJjY2EwMGYwOGRjM2Y3YTYgbGVnYWN5LXRydW5rCis0NTc3NCBiNWU3MTgzYWQxMTIyNWY5MzI2MTQxZTlkNTc2YjllNTNlNjRmNWZmIGxlZ2FjeS10cnVuaworNDU3NzUgMzUxOGU5NGFhNjYzNzIxOTRlNTdjZTBlZGFmZjI0OTdlNDVmM2U3OSBsZWdhY3ktdHJ1bmsKKzQ1Nzc2IDE5YWQzZDM1ZmFjNGE4NGE1ZjIyOTVjZmRmNGIwZWM0MmVjODBjMWUgbGVnYWN5LXRydW5rCis0NTc3NyA4YmM0YTdlNWZlZjg0ZjcxOGJhM2E1YmJkNzBjZjc0MmJhMTExMmVkIGxlZ2FjeS10cnVuaworNDU3NzggNjFjN2VjOTk1YWRmNTdlMTgzOGEzYWVkM2QyN2FkZjZkZjE5NzM5ZSBsZWdhY3ktdHJ1bmsKKzQ1Nzc5IGU5YTcwYjE0Njg1NzhkOGU0NjA1MTVlMGY0OGQwMTgzYTc2NDU3YjUgcmVsZWFzZTI0LW1haW50Cis0NTc4MCAzNGQ2OTZjMWVlYmM2OGMxNGFlZWJhMTRkZjZlNjRlZmMyNDhmMDc4IGxlZ2FjeS10cnVuaworNDU3ODEgOGU1YjY0YTdiMzNmMmExZTM4YTZkYjBlMTljNTA4YzdhZDhhZmU1NyBsZWdhY3ktdHJ1bmsKKzQ1NzgyIDM5ZWI1YjUyMjUyMzljZGVjNTAwZGYxOWMwYTgzMDA0OThlOGFiZTggcmVsZWFzZTI0LW1haW50Cis0NTc4MyBjMTI0NzE2OWYzYTE2NmQ4YjA1Y2ZjMzc4YWMxYWY1Y2MxYzRjZGZmIGxlZ2FjeS10cnVuaworNDU3ODQgZGUyZWU4ZGVkY2U4OTlhYzIyZDg2OGE4ZmM2NzkxNDhlYWVhZWRiYSByZWxlYXNlMjQtbWFpbnQKKzQ1Nzg1IDU2NWJmZmRlOGJmMTgzMDY0OGZmMzIyNmY1NDg3MjcwNTc4YzExOWYgbGVnYWN5LXRydW5rCis0NTc4NiA0NzNmMzdkZTEzYTEzN2Y0MWY3NDQ0YThjMmEwMTVmYTQzZDg5YjlhIGxlZ2FjeS10cnVuaworNDU3ODcgMjU0NmM0NzczNGEwMTVmOGY5NWM2NzVlN2VhNTA5NjY3Yjc1ODRkMiByZWxlYXNlMjQtbWFpbnQKKzQ1Nzg4IDhiZGJlZDY3YWRmNzg2ZTg1OTdmYTJmZDAyYzRjMGZiNjQ0Nzg3MTIgbGVnYWN5LXRydW5rCis0NTc5MiAzODllOTIyYTY0N2MxMTAyZjVmMWZmMjZhNmQzMWIxMzFhODI4NjRhIGxlZ2FjeS10cnVuaworNDU3OTMgODc0ZDc3ZWVmY2U0MzFjMGQ4MDllZmUzOWQxMDUxMTRmODk2MWI0MSByZWxlYXNlMjQtbWFpbnQKKzQ1Nzk2IGYyNzQyYWNhMmFkMDdmNDQyNGI0Y2JlOWM3ZWIzMzYzMDFiMzkzOWMgbGVnYWN5LXRydW5rCis0NTc5OSBmMDgwOTQ4M2I0ZDA1ZjFiN2YyZjBjYTJlZTRiZmY1NzA0N2EzYmMyIHJlbGVhc2UyNC1tYWludAorNDU4MDAgMzZjN2E0NDIyZTMwNzU5NDVlODE2MGU1ZDI5M2MxYzc0Mzc5NjE0NyBsZWdhY3ktdHJ1bmsKKzQ1ODAxIDU3Mzk4ZWI5NzhjMjU0ZTY3MGE3MDJjOThkYWNkZGQ5ZmQ5M2U4MTIgbGVnYWN5LXRydW5rCis0NTgwMiA4NDY5ZDNkOGQ0ZWRiNzQ2Zjk5NWY0ZjU2ZTFhMGRjMjZlMTQwNmQ1IGxlZ2FjeS10cnVuaworNDU4MDMgODg3M2QzMGExNDBmODQ0MGI3OTZiNzgyNGM4MTFlNzc5MzVmM2RkZSBsZWdhY3ktdHJ1bmsKKzQ1ODA4IDVjMjI3N2EyOTRlYTQ1ZTNiNGMwZjIxYjBlMWU4YzYwMTMyOGQwMTMgbGVnYWN5LXRydW5rCis0NTgwOSA1MWI2ZjhlMDQyZGZiZjliZjU5ZjM5ZGMxZWQ2ZmJmOWEzMTY1M2RhIGxlZ2FjeS10cnVuaworNDU4MTAgM2Y1MWZmZDVkOGJmNzdhYTkyZmJlYjA0OGQ4MzViODk2NjI0ZTMwOCBsZWdhY3ktdHJ1bmsKKzQ1ODExIGY2MjZkNTJmYWJmMDQ0YzNhZDg5MDNiMDc2MTllMjYxMGFkMDFkOWQgbGVnYWN5LXRydW5rCis0NTgxMiA0NjVmNWIzYTAyMzQ4NGEzMzU4Y2VkNGEzZDg1ZWQ0MWVmOWNjMjY5IHAzeWsKKzQ1ODEzIGFjYWYyNzYzOWE0MTFiZmJjZjBhNGY1Mjk5NzM2Zjk2NTNkZmM3MGYgcDN5aworNDU4MTQgNjE0YzkyMTcwN2Y5NTRhNmYyNGE4NWQ5NDFmZmRhYTcwMDQ2YWZkZSBsZWdhY3ktdHJ1bmsKKzQ1ODE1IDJhMjg5MTU2MTZkNTAxYmFhNWM1OTFmMzhiZWIwZTM3MDc2NDAwOTkgbGVnYWN5LXRydW5rCis0NTgxNyAzMmExODdmM2Q1YmE5MzZhY2MzZjAxYzM4OTUyYTI1MmQ3YjQ5MGQ1IGxlZ2FjeS10cnVuaworNDU4MTkgZTRlODQ4MjE0ZDIzODUxYmQzZWI0ZWNmYmMzNTg3NGNmYzE5MmZiZSBsZWdhY3ktdHJ1bmsKKzQ1ODIwIGFiNTNhMzc4ZWRhOGY5YjM3MzNhZGYyMWRkNTYwN2NkNzU2NmRlYzYgcmVsZWFzZTI0LW1haW50Cis0NTgyMSBmY2M2MTgzNWM2YWM4ZTZmMzk4NThjNDMzODg3YzU1NDhjZTc4Y2JiIGxlZ2FjeS10cnVuaworNDU4MjIgNjlmMDQ1N2MxN2JiMTgwODU3ODU2YmJjZTRjZDAxYTkzZjg2YjMxZSBsZWdhY3ktdHJ1bmsKKzQ1ODI0IDhmN2FiYzJiYTdkMGEyMmQ1ZjMwMmEzMzc2NmEzZTgzNmNlMTJlZjYgbGVnYWN5LXRydW5rCis0NTgyNSA5YWJlYWI5NmFmNTcyMzZkM2FmZGRiMTdhMzdlMGE2NDE5NmJhM2JhIGxlZ2FjeS10cnVuaworNDU4MjYgN2NjN2M3YTEzNjk3YmNmMDJiZmUyNTJjMGViMDVjNDc1N2RiY2NlYyBsZWdhY3ktdHJ1bmsKKzQ1ODI3IDgxZDkxZmY4MDAzYjk5NDNiMWMzNTdhMjYzOTBjMDdlYzAwN2ZhNTAgbGVnYWN5LXRydW5rCis0NTgyOCBmODk0MTA0NDgwMWNiZmIzZGY0MzI1MTdkOWZkYjkwOGE4MzQ1YjI0IGxlZ2FjeS10cnVuaworNDU4MjkgZmM3YjYxODFkMDllYWUzMTdkOTJkYzQzYTAwNDIyZmQzODVhNTM3ZSByZWxlYXNlMjQtbWFpbnQKKzQ1ODMwIGY2MmJkNTExOGM3OGNmMzQ1YjY4MzhiYzA1OTQyODQ3M2Q0MWIzMWYgbGVnYWN5LXRydW5rCis0NTgzMSAwNzM2YjI1YzU3YzU3NjgxM2NmMDNlMTcxMzMyZDU5ODRiMGQ3Y2ViIHJlbGVhc2UyMy1tYWludAorNDU4MzIgMTM1YjE3Nzg4M2MzNDI1YmVhNmViNGE1MWYxNTViZGIxZWYzOTBjYiBsZWdhY3ktdHJ1bmsKKzQ1ODMzIGI4NTA3ZGVkNGQxNWNjMzhhODg3MzVjY2Y2ODhmNTg2M2ZkMThiODcgbGVnYWN5LXRydW5rCis0NTgzNCBlZmVlYmM4NzcwZTVlNjIxYjFmNDI1ZDgxMGNjNTY1NmIyOGZhN2JlIHJlbGVhc2UyNC1tYWludAorNDU4MzYgY2E2YzkxNTMxYTk2Nzg3MDQwNTcxZDRjNDVmZmUzODAyOTdkZGQ3MyBsZWdhY3ktdHJ1bmsKKzQ1ODM3IGNmMTlhMTIzYTVkOWFjY2M2MjRmMTcwY2U1Mjc0YmVmOWY1ZmFiODIgbGVnYWN5LXRydW5rCis0NTgzOCA5Yjc1YWQyMzZmMDAwMDgwZDZhYzNiZDA4ZWEzZDQ0OTkyOGJjNzBkIGxlZ2FjeS10cnVuaworNDU4MzkgZDc2YjlhYTcyMjlmYzY5NjE4NjIzZGRkNGViMTAwYjhmMDNjY2UxZiBsZWdhY3ktdHJ1bmsKKzQ1ODQwIGVlOThlY2YwNTc3M2E3MDcxNzdkMzM1NTFmZmVjYjhmOGU0OTUyZmMgbGVnYWN5LXRydW5rCis0NTg0MSA2MzUxY2QwZjdjMjg1ZjkyNzlhZGQxYjU1ZGE2ZmQwNzI5NjcxMWYzIGxlZ2FjeS10cnVuaworNDU4NDIgZWQzMzVlNTJkMTcwNTQ5NGZjYTcwNzY0MzI2ODYxYWFiMDlmYWIxZCBsZWdhY3ktdHJ1bmsKKzQ1ODQzIDdiODNiNjhiZThhNjdhNDVhYWRmNjAyMGQ5MjE4MjFkNDcwZDQ0OTUgbGVnYWN5LXRydW5rCis0NTg0NCAxMjhjMDA2MWI1YmIyNmIyOWViZDUzNjA2M2Y2OWYzMjFhZTExODBmIGxlZ2FjeS10cnVuaworNDU4NTAgYzkyMDJmMWM1NmMyNzRlMzAxNzc3MmUyYjg1MTEyZDBjNGQwYThlOSBsZWdhY3ktdHJ1bmsKKzQ1ODUyIGIxY2JjNjA1YmVjOWNkZjlhNDZmMDNkZGU4N2MyMjM0OTVjYWY5MWIgbGVnYWN5LXRydW5rCis0NTg1MyA3MjhjMTZmMTYyNjcxZjM0MWI3OWMyYWU3NTE5NGY2MjVkZTI1NzIxIGxlZ2FjeS10cnVuaworNDU4NTQgYjhlYzY4OWNiMmZiY2M0ZjZhY2JkMWMwZDllMWM3NWM5MTZkY2Y3OSBsZWdhY3ktdHJ1bmsKKzQ1ODU1IGI3YjVmMGIzNGQyNWNjZGQ3YzFlMWExZmM4NjM3MzBhZDRhNGM3MWUgbGVnYWN5LXRydW5rCis0NTg1NiA5YTE3YjgyZWFmYzk0MTI3YTM3ZmFjOWZmMmNiMmRjYjJlZGJhOWM4IGxlZ2FjeS10cnVuaworNDU4NTggYmIzZTBjODg5NjMyNWE1MTMwMTFhMzcwNjAyMzEyMzQ4YzRlMWExNCBsZWdhY3ktdHJ1bmsKKzQ1ODYyIGE4MTJkMGZhZTc0YTQyOGExNzJlZTBmYWE1OWU5OGJiOWFjODA2NTMgbGVnYWN5LXRydW5rCis0NTg2MyBmZTI5Mzk4ZjQ4Yzk4ZGZlMGI4Yjc2ZmIzOWNmMTg5MzljM2U4MDVlIGxlZ2FjeS10cnVuaworNDU4NjQgYWM3MjkwMGUxOTE5YTFmZWJlY2E2NmZhY2E4ODM3M2QwYmE0NDgzZSBsZWdhY3ktdHJ1bmsKKzQ1ODY1IGI3MDZiMTAwYzhmYzBhMDM4NTEzZjEwNWY2ODYxODJiYTAxMTI2NzcgbGVnYWN5LXRydW5rCis0NTg2NiA4YWFmNTdiY2NiZjhiNTY4M2E4YWRmNzg2YjM1MzdhOTBlN2RhNjZlIGxlZ2FjeS10cnVuaworNDU4NjcgNjY4NzViOWM4OWY0NTQ1ZjU0OGRhMzBmMzc1NWUyMzQ5NDIzZWM0ZCBsZWdhY3ktdHJ1bmsKKzQ1ODY4IDY2ZjFiM2ViYWVlM2EyMTlmMjkxMzMyM2ZlNmU2ZjVmODdjYzkzODQgbGVnYWN5LXRydW5rCis0NTg2OSA2ZTBiMDUzYzZjZjdiMTc2YWI1ZTFiNmUyYjY1MTdjYzFiMTJjM2JlIGxlZ2FjeS10cnVuaworNDU4NzAgMGZhM2JhZDQ4OWRkNDc3ZmM4ZjM4OGEwMzNhOTRmZmZhYzQ2Yzg4MCBsZWdhY3ktdHJ1bmsKKzQ1ODcxIGJjNDhlNmIxZTY1NDU1YzdlZTkwMGM4MDc0NWMwMjAyOTkwYTYzMTIgbGVnYWN5LXRydW5rCis0NTg3MiA2YTE0NjliMzlkNzM3ODUzYmNkMDQxNDQ4ZThkZTVmNDc5YjNjN2ExIGxlZ2FjeS10cnVuaworNDU4NzMgZWIwMzU2MmRmNGE3OTY4NDdjYTNjY2YwNDZmOWQxNWI4ODBiNWRiZiBsZWdhY3ktdHJ1bmsKKzQ1ODc2IDU0NTdhYjlmODU5OTE3YjA0YjFiMzljZjU2ZmRjMWQzZDhkYzc0ZTIgbGVnYWN5LXRydW5rCis0NTg3NyBlNWQxMWRmYjJkMDhlYzZjMWY5NTNhODA3YmQxN2Y3NmU4YzE0ZWRlIGxlZ2FjeS10cnVuaworNDU4NzkgMjNkNGFjMzNhYzE2ZTc0YzIxZGVkOWQyYjk5NWNhNTBiMmRkNmM3NiBsZWdhY3ktdHJ1bmsKKzQ1ODgwIGMwNmE2MmYwNTg5ZmJhNGE4Mzg2NDdhYzI1NTE2ZTkwNWY1NDIxNjIgcmVsZWFzZTI0LW1haW50Cis0NTg4MSA0ZjcyYTQ5ZDcwYzgwNWMwZjk3MTc2ZTdiMjliZDNiZTk3ZGMxMDgyIGxlZ2FjeS10cnVuaworNDU4ODcgNmJjMWU4M2E5N2E2OWZiODk5YWE0ZGVhNDcwOWY0ODRlYzU0NDI1NiBsZWdhY3ktdHJ1bmsKKzQ1ODg4IGU5MmE4YjhlZWM3M2I4M2NiNTY1YmU5ZmE5NDIzNjI3YTc4YzgwMmIgbGVnYWN5LXRydW5rCis0NTg4OSBhMDZiNjlmOGMyNzZhODk0MWRiY2UyZWUyMWUzMGU2NDljZTJjNWI5IGxlZ2FjeS10cnVuaworNDU4OTAgODhiODlmOTZiOTdmZjA3OTc3ZjRjZmZjODZiYjU3MTg4MTMxY2M1NyBsZWdhY3ktdHJ1bmsKKzQ1ODkxIDhjMzgzZWY3ODE5ODQ5YThjOGIwYmNmYTFmYWY5YzFmYmY4NDUyZjAgbGVnYWN5LXRydW5rCis0NTg5MiAwMjUxOGNmMTdhNjZlYTc2MTdhN2MxM2RmZDM0OTZjYjhlZTEzNjJkIHJlbGVhc2UyNC1tYWludAorNDU4OTMgMjk0MjUwODZlOWFiNjI4YjMxOTI0Y2Y2Y2IzMjJmNWJkZjJmNjNlOSBsZWdhY3ktdHJ1bmsKKzQ1ODk0IDIyMGFkMjAzOTRkZjBiMzFhNGRlNTlmMTAyOTJiODI5YmFiMGZjNGIgbGVnYWN5LXRydW5rCis0NTg5NSA5MWE2NDM2ZjBhNTg0ZTEyZDRhNmJlMzg0ZWQ3YmRlODUwMDA1ZTdmIGxlZ2FjeS10cnVuaworNDU4OTYgY2UyYTdmYWRjMmIwNGUyMzg4ZTA4OTQ2NmZlMzAxOGM5ZTU2ZjdlMiByZWxlYXNlMjQtbWFpbnQKKzQ1ODk3IDBlN2QzNGFhZWE2MTMxZWQ5N2EwYzFiODY2YjJlNjE5N2VhOGM5NzEgbGVnYWN5LXRydW5rCis0NTg5OCBiZTQ5NjQ1ZTM5ODQxMGE2NmI5MmVmOWIxMjkwNTBhODQzZTViYzAzIGxlZ2FjeS10cnVuaworNDU4OTkgYjU4Zjc1MGQ1MjEwMWZlMzc3Nzk1MTc4MTljM2Q4ZGIyZjA0Y2I4MiBsZWdhY3ktdHJ1bmsKKzQ1OTAwIDc5YzhhMmE5ODhjYjM5NDQ3OWFhMmEwNjE1MmZiMDBjMjI3OWM3MDkgbGVnYWN5LXRydW5rCis0NTkwNSBhNmExMzU5YWFiODRkZjUzMWQ3ZDAzN2E3ODQyYTgxY2M4YWNlZDhiIHAzeWsKKzQ1OTA5IGJlMGNjYTcwY2NhYWRiMzExNTJlNTUyNWM3MWJiY2EwZThhNzg0NjAgcmVsZWFzZTI0LW1haW50Cis0NTkxMCA1N2JkN2M3ZDkxZTNhYmUwMjFhZTViMzA3YjZhMzYxMWZlOGQxZmJhIHAzeWsKKzQ1OTEzIDM2MTgxMjZjNjMwNGM3MWE4MzM4MTNlMWVmNDU4YjQ0ZDRmMzAwNDYgbGVnYWN5LXRydW5rCis0NTkxNCBjMDFjMzM3YWQ2MTg4ZWZlMDI1YTkxNjJkMTE4NDhlM2FkOWZlZjAyIGxlZ2FjeS10cnVuaworNDU5MTUgYTU5NmVkOTNjZjQyNjRiMjdkY2RmNDY2MjAzM2JlMTc1ZGQ3NWNmMSBsZWdhY3ktdHJ1bmsKKzQ1OTE2IDc0MWZiODNiNGVhYjQ3NjEyZDkwOGE3MDIxOTljYzFhYjlmYjg5YmIgbGVnYWN5LXRydW5rCis0NTkyMCBjMzM0MmQ4OGFlZmQ0Y2I2Nzk3YjkwZDc1ODNmNWIzYjljYWMzZGQwIGxlZ2FjeS10cnVuaworNDU5MjEgMmM1ZTc0YzY0NWUyOGM5OGRjNjU4YjNiZWNjZjhlMjljYzYwNTA4ZiByZWxlYXNlMjQtbWFpbnQKKzQ1OTI0IGMzYTM2ZDQ1NmRlYTBiZjMzYjQ5NTZiZTRhYTU1ODkwMTNmOTNiNGYgbGVnYWN5LXRydW5rCis0NTkyNSAwZDg3OWJmZjI1ZjY2YzcyMGQ3ZDhhNzk1OTFmYWVmNzdlZDk1OTY2IGxlZ2FjeS10cnVuaworNDU5MjYgOTBkZDU3ZmNkMjRlMTJiYWQzMWQ2MzA2YWEzZDk0NTY5OTBjYWRhNyBsZWdhY3ktdHJ1bmsKKzQ1OTMxIDRjMzkxOGYyMzAzYjVhOTViZjdkYTgwNjVlZDg4MmM3OGZkNGY4NDUgbGVnYWN5LXRydW5rCis0NTkzMiBlNzAzNTI3NTI0NWJhZTM2NmYwNTVlY2RhOTNkMjc1YzlmNDc3ODIxIGxlZ2FjeS10cnVuaworNDU5MzQgZDAxNzAyNzZjNWRlZDMwNGJkNDQzOGYwOTYwMmNjOGY0NGRiNDM4OSBsZWdhY3ktdHJ1bmsKKzQ1OTM2IGRkZjAwNjlmNjFmOTJkN2VkNWQ4YzZiNjFkNjRmNjhiN2VlYzY3NTMgbGVnYWN5LXRydW5rCis0NTkzOCA4MjI1YWVlOTE5MDQ5NTA5M2FkODU4NjI3M2VjYmU5N2VkZjYzMDZhIGxlZ2FjeS10cnVuaworNDU5MzkgNmQxZTI0MGM5MThjMTJmMDc0Y2M4YTQzMzA4MWVjNDRlZGZmOTQ2OSBsZWdhY3ktdHJ1bmsKKzQ1OTQwIGI0NDg1OWYwYjMwOGJjODQ5NjEzMmIwNDRmNzc5NDYyZTNjY2U2MDAgbGVnYWN5LXRydW5rCis0NTk0MSBlYjQ4NzljMDg1YWFhODdmMmI5Njc5MGYxNDgxNGFhNzJhZTJjYzA3IGxlZ2FjeS10cnVuaworNDU5NDMgY2UwYjQ3ZDNlNWQxMGM3MDI5NmFlZDk4NTE5YzMyNDgwOTgyN2U2ZiBsZWdhY3ktdHJ1bmsKKzQ1OTQ0IDA2MDZiOWMwOGFjMjRmMWRkYjc4NTdlNTJmYzNmNmU4Zjk3ZTM0NDkgbGVnYWN5LXRydW5rCis0NTk0NSBmM2E1ZTE1M2MzMjk0OWI4MTE3MTY4MmJmZWU0ODVhZDIyMGJjYjA0IHJlbGVhc2UyNC1tYWludAorNDU5NDYgNGM5OTIyZDhkY2RkMTA3ZmMxODk4N2E4NmE2ZWEzYzA5YTk4NTQ1ZiByZWxlYXNlMjQtbWFpbnQKKzQ1OTQ3IGYxZTI0NDUyZGJiYTdiMWFlZDQ2OWJmYTA1ZTU4YmE4ZDA1ZmQzNWUgbGVnYWN5LXRydW5rCis0NTk0OCA4ZGEwOGQ4NWZjYjFlNjkyZTEwMjc3MjAwMDdlYmYyNjc2NGZhM2Y4IGxlZ2FjeS10cnVuaworNDU5NDkgOTdkYjNkOWIxNDU4MDA5MWM0M2U1ODFiNGI3OGM1N2M2NzQzNTUxZiBsZWdhY3ktdHJ1bmsKKzQ1OTUwIDhjODZjYThmMjY4Mjg4MDFkNzQ0OTYzNzBjMzJhNTgxNDY3Yjg0NjAgbGVnYWN5LXRydW5rCis0NTk1MSBlZWExNzZlNjdmMjI4ODRjNTU2OTY5N2Q4MTBhMmViNWI2NjYyMGFjIHJlbGVhc2UyNC1tYWludAorNDU5NTIgMTQ1NzMzNmQ0MzJmZTQ1OWJlYThjMDU0YjlkMTY3OTAzMzZjZGIxYyBsZWdhY3ktdHJ1bmsKKzQ1OTUzIDQyNzI4Y2IxOGVhMjU2MGMxZGE2NWQ3NmZlNTIxNDMzYTY3NDJiNzIgcmVsZWFzZTI0LW1haW50Cis0NTk1NCBmNjFjODkyY2FkYWM5Nzc0MTU0YTRkNDlmZDYxYzk0OGI3MGY4MTllIGxlZ2FjeS10cnVuaworNDU5NTUgN2ZlNDlkYmNiYmRhYjFjOTU5OWU0ZTVkNjU2Mzk3YjgyMmJiMjc2ZSBsZWdhY3ktdHJ1bmsKKzQ1OTU2IGYyNmZjM2FlZWY5NmNiNDc4ZWI4ZmViZWRlNWE3MzAwNGVkOTljYmQgbGVnYWN5LXRydW5rCis0NTk1NyA2NzAxMzA5ZWZhNzY4NmU2MDI3MjJjZDM1MTc0MzdhZGUxMWY2YjQwIGxlZ2FjeS10cnVuaworNDU5NTggODZhMDUxZDIyNjRkMmEyOTA1ODJiNGVmMDhhMjVmNTg1ZWVjMTE5NCByZWxlYXNlMjQtbWFpbnQKKzQ1OTYwIDlkNGZjYzM5MDIzNmU0YWI1ZDgxMDA1ZDUyZGJlY2E3NGEyZDMyYWQgbGVnYWN5LXRydW5rCis0NTk2MyA5YTYzN2JmNGRmNDI3YWJhM2FmY2EwNzYyYzMyMzFlMGQwZTY5OGQ2IGxlZ2FjeS10cnVuaworNDU5NjQgZTJlZjYwZmVjM2RhZDkxYTZkZjFlNDUxNGIwMjBlNTdmNTBhNzFhMiBsZWdhY3ktdHJ1bmsKKzQ1OTY1IDQwODJkMWExMTkxN2MxMGYyMDkzZDgyYTQ3ODhkZGJiY2UzNGVhMTkgbGVnYWN5LXRydW5rCis0NTk2NiA4ZjQwOGFhMmE3ZWZhNDdmNGE1YjA3MDQ2ZDVhZjRlMTA4NWU5NTUzIHJlbGVhc2UyNC1tYWludAorNDU5NjcgMmE5YjQ1ZGMzMTE0MWQ5ZWJiNDE1OWY3OWVkMDYzMDllYmFlNGJmYiBsZWdhY3ktdHJ1bmsKKzQ1OTY4IGIyMWJlOWQyMzQxYTkwNzI5NzQ4NTNmZGVkOTU4MDRhM2FlYWExM2QgbGVnYWN5LXRydW5rCis0NTk2OSA3ZmM5M2Q5NTMwYmY2MGRmODUyODI2MDJkMzU0NDAwNDI2ZTBhMWQzIGxlZ2FjeS10cnVuaworNDU5NzAgYzRhYTU2ZDdhNWMxMDYzOTQzNjc1YjkzOGRlNGFhNjcyZDY2M2EwYyBsZWdhY3ktdHJ1bmsKKzQ1OTc0IDVlMzU0M2I3ODMzN2JhMzc2YjIxYTljYWI4YTYyY2IyN2M5NTcyYjcgbGVnYWN5LXRydW5rCis0NTk3NSBiZjM3MzUyMDY4NzFiZDI3ZTlkYTFjMzhhY2UwODZkYzU3MDBiOWQ1IGxlZ2FjeS10cnVuaworNDU5NzYgMDc5NTM3MmE4NGFiZmUwZGM2MjViYzBhN2RlYmQzOTc3M2MxZjJlMyBsZWdhY3ktdHJ1bmsKKzQ1OTc3IDc4OTBmNmI5MmMxNDljZjliMTk2NGFhOTFlMGEyNWFkMzdjMzM3YzkgbGVnYWN5LXRydW5rCis0NTk3OCA0ZGUzMTU1ZTE5MmJjOTkwOGY2ZmRkYzhjODNmNmJkMTcyYjllYjU2IGxlZ2FjeS10cnVuaworNDU5NzkgY2Y3OGY5YzQ3OTBlZTEyOTlhOTRjZDNkNTEzNzgzZjg4ZWVkYWJkYSByZWxlYXNlMjQtbWFpbnQKKzQ1OTgwIDU3NGZmYzRkN2JmNmJjNzc3NDA1YmYwNDRhZjVjZGY2YmQxZDI2NTYgbGVnYWN5LXRydW5rCis0NTk4MSBiYjYwOTI5OTU0MDk5MzUxMzZhMDJjOWQwZTlmYjgzZTgxN2UxZGFlIGxlZ2FjeS10cnVuaworNDU5ODIgYTc5N2VmYjRlN2Y4M2ZlZjIzNTMzYmI0YzA0Nzc1ZTY3NTMxYjMzOCBsZWdhY3ktdHJ1bmsKKzQ1OTg3IDg1YzgyODg3ODE4OGIzNWRiZGUwNGRhNTc0YTgyOTYwY2NjYzE3ZWMgbGVnYWN5LXRydW5rCis0NTk4OCA4YjYwMTdjOTM3YWMyN2YwMDg5M2FhMWU5OTRhOGU3ZjE2NmI4ZGFkIGxlZ2FjeS10cnVuaworNDU5ODkgNTI1NjI0ZTk0ZTc4YWU3NmRhOGU4NTMyYWEzOTcxYzJiNGRiYzhmNyByZWxlYXNlMjQtbWFpbnQKKzQ1OTkwIDMyNDcyZWE1ZjNjZGI2MDhmMzY3MDJkZmJiMmRlZGIwMGUxNTliMmMgbGVnYWN5LXRydW5rCis0NTk5MiAzODBkYWQzOTU1OTkxNGY5ZDU0NzZhZmRmZDJmODA4NDQ5MDlhZWZlIGxlZ2FjeS10cnVuaworNDU5OTMgZWJkNTczMjEwZTI1MDM4Y2U0NGMwNTA2OGUxNjk4NWZmNWQ2YmI3YSBsZWdhY3ktdHJ1bmsKKzQ1OTk0IDRiZGYyN2JkNzNkMjJhZDVlNzc0YjI2MjBhN2EzZWU4M2Y0YTA5ODEgbGVnYWN5LXRydW5rCis0NTk5NSBjZGY4ZjUzMzQ0MjY5ZTkyMDRkNjU5YWQ3NjdjMTRiODFhNDhlZDIwIGxlZ2FjeS10cnVuaworNDU5OTYgNjc2NDkyYTkzYzhhN2JmN2RlYzU3YjFmNmE5OWQyMzVmMDdiMTczMCBsZWdhY3ktdHJ1bmsKKzQ1OTk3IGVmODJjNWQwMTQ2MDdmYmI1OGZjMGMxMGE3OTVmOTU1Yjg2NDU3YmUgbGVnYWN5LXRydW5rCis0NTk5OCBmMjUyYzZhZTBjNDI2NDM2MjZjOTQ2MjVhNWU3MDYwNzU0NTEyY2VkIGxlZ2FjeS10cnVuaworNDU5OTkgMjliNzM2ZjA3M2EzNWMzZmI4ZTQwNDAyMTY3ZmFiNTNmZmEwZjRiNCBsZWdhY3ktdHJ1bmsKKzQ2MDAwIGFiNzA0Yjk5ZTE1MGNmMDM3NTllN2VhNmVmZWJjZGNkNjgwMzNiZmYgbGVnYWN5LXRydW5rCis0NjAwMSBkODM1NWNjY2ZmNGFjZmMyOTdjMjYwODJmMmNjZDNmNjIxODcyY2E3IGxlZ2FjeS10cnVuaworNDYwMDIgZmVhNWQyZmQ5YjhhNDgzYzcxMTk2OGM4YjcxMGYwNWEzOTg0OTE5ZiByZWxlYXNlMjQtbWFpbnQKKzQ2MDAzIGU3ZDMwZDc1ZGFlN2MyYmZiNDA4NTg4NDA4MjYzNmU3NGY4NDEwM2MgbGVnYWN5LXRydW5rCis0NjAwNSBhZDhiNzZlOTkyNjEwNTJiMTkxNmQzMDI3M2M2NzNlODk1MTUyZDI3IGxlZ2FjeS10cnVuaworNDYwMDcgY2ExMDUwN2E2YWZiZjNjYzdiNmZiYzMyNzFhM2JhZWU2MThjNTQzNiBsZWdhY3ktdHJ1bmsKKzQ2MDA5IDBhZTRiYjc0ZTc4MWE4MzRjM2E0ZDkyM2IyNjFlZDBlNjdiYzhhY2UgbGVnYWN5LXRydW5rCis0NjAxMCAzMzc5YWQ2NmIwZTA3M2E0NWZjNzUxZWFiNTU5YzNkMDc1YjFjMTM2IGxlZ2FjeS10cnVuaworNDYwMTEgM2I1Y2Q3YzY2ZGEwOTA5Nzg3NWJkZDk3MDk5YzhkMzA3ZjI1MTQyYSByZWxlYXNlMjQtbWFpbnQKKzQ2MDEyIGQ2ZDg3OWFmMzZkMzRhNWM3MGEyMWFhYTc2NTZlY2E1NTgyZTYxYmIgbGVnYWN5LXRydW5rCis0NjAxNSBmODM4NWQ2YzhmNWVlMTYwNDUxZTc5ZWY5OTNlYmU5MWJlNzA1ZGVjIGxlZ2FjeS10cnVuaworNDYwMTYgNmNmNDY2Mjc2M2ExYTI5M2M0NjQ0NmFkYmM3MDEwODhhMjAwYWI5OSBsZWdhY3ktdHJ1bmsKKzQ2MDE3IDM2NTYzYjEzY2U3OTJhNzJiYjBmODBhZTBkNTNhNzBjZmYzM2ZhNjkgbGVnYWN5LXRydW5rCis0NjAxOCBmOTEzNTA1MDA4MzQ2ZjQzZDE2ZGNhZTI5MDlmMmE5Y2MwZTVkMGI2IGxlZ2FjeS10cnVuaworNDYwMTkgZDZlYTdkNDNlYmZjMGFiYzc2MDI2NDVlNGUyOGJhMjljZmViMTIyYSBsZWdhY3ktdHJ1bmsKKzQ2MDIwIGFjNTA2ZTJkZjA0ZDUzOTZhNDk2N2U0ZTc4MzBhOWY1NWY0YmM4ODggbGVnYWN5LXRydW5rCis0NjAyMSAyMDRlYzM4M2I0NDVhYmYzOWJmNzUyZGFlZDQwYmIyNzgwNmRlYTI0IGxlZ2FjeS10cnVuaworNDYwMjIgMzAxODhjNTIzYmM1NThkYWQwNzdiMzVkY2QyOGJjN2E5NTEyNmEyNSBsZWdhY3ktdHJ1bmsKKzQ2MDIzIGFhZTJmZjMzZTI3YzM4NTQwZGFhNzRlNzFiMzkyY2RjNzBhZTExNTggbGVnYWN5LXRydW5rCis0NjAyNCBhYjFkYzdlMjNiZmU1MTM5ZTU2NDU3MWU5NjYwYjc2OWVhYWRmZDU2IGxlZ2FjeS10cnVuaworNDYwMjUgN2NhYTZkMzNhNGM2Nzk4ZDQ4MDYzNDFhMmE3NzBlYzFjYWZhYzQzMyBsZWdhY3ktdHJ1bmsKKzQ2MDI2IGJmYjc2YWU4MmM5MTIxYmUwODNhMzBhOGJiZTI1NTBiMDJhYzA1ZGIgbGVnYWN5LXRydW5rCis0NjAyNyBjMmUzYjVjMzZkZTQ1MmJkMGU0ZTc0NzJhZGEzMDQxN2E2MDdmMmYxIGxlZ2FjeS10cnVuaworNDYwMjggZmEzYzRlYTk5ZDk1Y2E2ZWRlZDFhN2Y4ZTUzOWM3OTUzODY3ODNiOCBsZWdhY3ktdHJ1bmsKKzQ2MDI5IDBiNDczMTA0OWI3MWNlODkwYmJiZWQzMzlhNzk3NmJiOTJkM2YxNDcgbGVnYWN5LXRydW5rCis0NjAzMCAwN2FiYzYyODQ4OTlkZmExZjBhMzU0MGY0MDIwZjY0ZDM0ZjE5NDEyIGxlZ2FjeS10cnVuaworNDYwMzIgYjczZjI0ZTIxYjBhYjY0YzViYjlkOGQ4ZjE3OGFiYWZiMDhhMGJiMyBsZWdhY3ktdHJ1bmsKKzQ2MDMzIGIyODZlZDQ1NDM5ZDY2MGJlMGM5MDA3NzAyYjIzNGM3ZWRkMjk1YzAgbGVnYWN5LXRydW5rCis0NjAzNCBiMzVjZGE1NWQ2MGM2YTE5NzA5NTdhOGFhYjc4Zjk2ODliNDZkYjBmIGxlZ2FjeS10cnVuaworNDYwMzUgNzNjN2FkNWU4N2RlYmE3OWY4NmRjODA0ZDEzNjE5OTY2ZTEzZDRiZSBsZWdhY3ktdHJ1bmsKKzQ2MDM2IDZmZWFhNDJlZmY2OWY0ZDUxZjEyZWIyZTdiMjg5Njk2YjBhYTA4ODAgbGVnYWN5LXRydW5rCis0NjAzNyA0MmQ2YmFiODgwNzlmZjYwZGUyMWIxNzc2MGJmZDQzOGRmZjhmYTU3IGxlZ2FjeS10cnVuaworNDYwMzggODFlMzg1YTY0MWVmOGIwNzAzYWVlYjg1ZjdmOWQ2ZjYwMmQ2ZjQ0NSBsZWdhY3ktdHJ1bmsKKzQ2MDM5IDRjYjlkYzBkYzNmOWViZDFiNTg2YmY2MGVkOTk1ZDIyNGE3OTdjYmUgbGVnYWN5LXRydW5rCis0NjA0MCBjNjRjZDI3MWFjZWE5YWZjNDU2ZDU3N2E1ZDE0YjBkNmE3ZjcxYTgxIGxlZ2FjeS10cnVuaworNDYwNDEgYzA3YTVjMjMwNGYzZmNmOTY5NzBjNzFkZGFmZjUwYWRiZDM3OTBkNyBsZWdhY3ktdHJ1bmsKKzQ2MDQ0IDIxOTU5NzJmNzM5MWQ0ZWM0MTZiYzhjZDVhNjQxZTdhMTdkYWE1ZGYgbGVnYWN5LXRydW5rCis0NjA0NSAyNmZiNTYzODgxYzkzZDk4YmI1YjQwZDVkNTZiMjhmMTdjODY1YWNhIGxlZ2FjeS10cnVuaworNDYwNDYgY2JmMmQ1NjJlMzIyOTI5MTA0MGNhYTIwYWM4MmM5MDlkYTdlMjFmYiBsZWdhY3ktdHJ1bmsKKzQ2MDQ3IGM0OTA3ZDk5MGRiNWQ3MGE4ZTNkYjc1ODUyMjNmZWFkYTljM2IwNDMgbGVnYWN5LXRydW5rCis0NjA1MCAyODUxMTU1NGRmZjFmZjRlYmQ1MjlhNjQwMjk4NDUzYWRiY2RjZWFkIGxlZ2FjeS10cnVuaworNDYwNTIgYjBiYTRlODIyOWY3NzUxOTY0NzE0ZDc2NWFiNDA0MGFlYTNiMmQyZiBsZWdhY3ktdHJ1bmsKKzQ2MDU0IGFjY2RmMTEyNGJhMmVkZjNiZTI2MzJkZjc4MDE5ZmIxYTg0NGE3ODggbGVnYWN5LXRydW5rCis0NjA1NSAxMDk0MzdjNGNhYzQ3NjA5NzM4ODg4MTI1NjVmZWFiMTE1OTdmZTg0IGxlZ2FjeS10cnVuaworNDYwNTYgZjk2MTIxNzdkMDhkMWJiMzMxOTRjYWE2OWVjZjZlMTVkZmU4MjRiZSByZWxlYXNlMjQtbWFpbnQKKzQ2MDU3IGNjMDU1NmFkYzJiMGNiZjExN2M0YzVkM2QwYjQ1NTYyM2E1NzJiZjMgbGVnYWN5LXRydW5rCis0NjA1OCAyZDE4MmZjZmFiNmI5ODA0MGRmYWYwZjBhOGJlZGQ2YjQzMzZmZGNlIGxlZ2FjeS10cnVuaworNDYwNTkgYjRiZGJkN2IxZjVlZTc2MjcyOGNhOGExMGUwMzgxY2RlZjZhZGMwMyBsZWdhY3ktdHJ1bmsKKzQ2MDYxIGNhMWYxYzIxODllNzRmYWQwZGJhYjQ1ZDE2ZDE5ODEwMTk1YmI0YzQgbGVnYWN5LXRydW5rCis0NjA2MiBhNjllZTViYWQ5YjIzYzZlYjg2OWViNWI2NDNjMWVlNjMxOGQyNjc3IGxlZ2FjeS10cnVuaworNDYwNjMgZGFlMGU0YzM5MGU3NzIxNDViZmVkNWI4ODg2MmI0ZThiNDE4MmI2YSBsZWdhY3ktdHJ1bmsKKzQ2MDY0IGFhNjIwODU2ZThhM2Y3NWNhNjdmZmU5ZDkzYmRkZDA1NjFiNTE2ZTMgbGVnYWN5LXRydW5rCis0NjA2NSA5NTkxMGJjNjVmNmI5OTFmNDdjN2VjYzg2NzI5ZDlkOWE3MzRkNjliIGxlZ2FjeS10cnVuaworNDYwNjggMTA1NWQ2MjZlZDU5NGQ2MzhmMDQzMzEyNTcxZGE5YWMxYWQ5NzU1NiByam9uZXMtZnVuY2NhbGwKKzQ2MDY5IDg4MmI2MTJhNWZlOWNiN2EzNWM3OGZlZjM0MTA2ZGQzMTRjNTA1YjkgcmpvbmVzLWZ1bmNjYWxsCis0NjA3MCAyN2M4MDA1ODE3M2U4YTdhZjFhMmM2Zjg0MDBkODNiMmE0MjFiZTcxIGxlZ2FjeS10cnVuaworNDYwNzEgZmI0ZjBmZDdlYmE0ZWJlMzU3NThmZGRlYjI1ZTQzMDdiYzFlOGY4MiBsZWdhY3ktdHJ1bmsKKzQ2MDcyIDUxMjQxY2M5NTg4M2VkZWQ1YzhkNzVkM2Q4OTljYTRjNDI3MjEyMDcgc3JlaWZzY2huZWlkZXItNjRpbnRzCis0NjA3MyA3ZTE2ZmNjZTM0YTEzNTM5NTFhOTVjNmViMjQ3YjZjYzYxNGNlMDYxIGxlZ2FjeS10cnVuaworNDYwNzUgZDcxMGMyZGJhM2U4ODBjOTIwY2ZlODlkMDFmOTAxMzU4OGM5YzMwOSBsZWdhY3ktdHJ1bmsKKzQ2MDc2IGZlYjAwZGY5MTkyMjA2YzQ0NGM0MmNiMjk0NWM2NWE4Zjg3N2UyNzggbGVnYWN5LXRydW5rCis0NjA3NyBjY2VkODNhOTE1Nzc4YWY3ZDIwYTMyYTE1ODdmMjAzMWU4ODQ2MGJiIHJqb25lcy1mdW5jY2FsbAorNDYwNzkgNjA0YWY4NjdjNjVmYjgxMjUyNDgzZWY1ZGFlNGFkMjRhYTQ4YWNlYSBsZWdhY3ktdHJ1bmsKKzQ2MDgwIGNkMzRhMDg4MzA1MzZlM2IxNDQ3YTE1MzlmOWVkMzBhNTk5M2QxYTIgcmpvbmVzLWZ1bmNjYWxsCis0NjA4MSBlYzU0YzZkZjkwNDAyYmZlZjFiYTYxMDE5NTUzNjk4MGUyZjMyZWEzIHJqb25lcy1mdW5jY2FsbAorNDYwODIgMDJhMGM2OTI4YzUwYTdjMWM2OTIxYjlkMGVkMjlhNGY0YmEyOGE1YiBzdGV2ZS1ub3RyYWNpbmcKKzQ2MDg0IDAzNzNhMDc0MDA0YzJlYTlhNTQ5ZjJlZWYxYWE2MmQ4NTBkNTE3YzYgbGVnYWN5LXRydW5rCis0NjA4NSA1ZWFmOGI5NTg3ZDg2OTk0MWM0OGFiZDExNGQ3MDMyZmE2YmI2MDU1IGxlZ2FjeS10cnVuaworNDYwODYgODcyMDQyYTNiMTM0M2M5YTUyMmNkZTJmOGU4NWJmOGUxNmVkNTMzNyByam9uZXMtZnVuY2NhbGwKKzQ2MDg4IGZiODE2ZGZjZDAzMTU0MzBlMmJmZmU3NDUwM2IwYmI4MDAyYzFmMmUgcmpvbmVzLWZ1bmNjYWxsCis0NjA4OSA0Y2VhYmI1NDE0ZDVmMmEyNDMzZjJhMzg3NjQ5YWM2OTNmNTRmZDJlIHJqb25lcy1mdW5jY2FsbAorNDYwOTAgOWEyOGJmYTZmNzg3YzQ2MzczYThjYmJiMDBlZTc0Mjk1MWI2ODQ0MSBibGFpcy1ieXRlYnVmCis0NjA5MyAwMDQ1NmZjYTM3YzQyNDRjZGVkZGIyMWI4NDU1M2JmM2U3ZTcyZWUzIHJqb25lcy1mdW5jY2FsbAorNDYwOTQgMGRlOWE3ODlkZTM5MDRlNWM2OThhMDlhZGNhZDZiMWUyZWFlN2NmOSBsZWdhY3ktdHJ1bmsKKzQ2MDk1IDBiYTcxMWE0OTZlNmIwMDE5ZDAzNDQ0N2QyZmQ5YWU0ZDlkMjZmYTAgbGVnYWN5LXRydW5rCis0NjA5NiBhNjM3Yzc4YmYxMTk1ZWZjN2I1ZjRhOTQ3YmYxZTBmYjE4OTQ0MGEyIGxlZ2FjeS10cnVuaworNDYwOTggNmE2YzU0OTJiOWFkMmVhZDlhZWE4ZTMwMjM3Nzc3YWNmNDU4NzA0NSBsZWdhY3ktdHJ1bmsKKzQ2MTAxIGVlMjEzOTkzNWExZDNhZjUyZDUwMDliNzQ3MTkyODY0MDIyMTZmYzIgbGVnYWN5LXRydW5rCis0NjEwMyA1YjU4NzE5MGY0YzY4NTc3YTMyNTI5NjNjODU3NmM0ZjQzZjhjMTY0IGxlZ2FjeS10cnVuaworNDYxMDQgMzA3OGZkYjdjZjNkZjU1YzczZjQzYWZiNTMyNzk1MjdhOTkxMTZmZCBsZWdhY3ktdHJ1bmsKKzQ2MTA4IGI3YWFmMjFjNDc1NjQwM2YwMTgyOGE3OWJmY2IyNmI3MmZhM2FiOTQgbGVnYWN5LXRydW5rCis0NjEwOSA3NmJlZGY5ZWQyMmZmMjRlM2Q1NDM3YzY0YmY1MGIwZTk3NjAwZGY4IGxlZ2FjeS10cnVuaworNDYxMTAgY2EzNDUyMWJiMTNjMzgzN2Q2NTFmY2E5MGMxZGYwYzRiY2UyOTIyMiBsZWdhY3ktdHJ1bmsKKzQ2MTEzIDc1YmRkNDRmODVkY2Q0YWRhODZjZWIwOWUyZjcyYzQ0NzdjZjBlZGIgbGVnYWN5LXRydW5rCis0NjExNSA5YTkwNzUzZjZiZmJiMjFhOWQ3YmYyMTNlYzk3YjVmMTc0NDQ3MTI1IC4uL2JpcHBvbGl0by1uZXdzdHJ1Y3QKKzQ2MTE3IDY2N2EyY2FlNzllNjI2OTY1MTZiOTEyMDMxNmYwZjNmYjk2ZDRjNzYgLi4vYmlwcG9saXRvLW5ld3N0cnVjdAorNDYxMTggNTgzMTdkZjRkMzBiYmNiNDJkYWIwMzcyODk1NTg2NWI0NGQ0OGVhMyBibGFpcy1ieXRlYnVmCis0NjEyMyA0YjBmZjc4OGU5ZmRhZTBhN2RiYjZlZGNkNTI1NTI4N2ZkNGYzMjVjIHJ1bmFyLWxvbmdzbGljZS1icmFuY2gKKzQ2MTI1IDBmMGYwNDZhMjlmYmE0OGRjN2Y3ZTgzYWEzOGI0Y2NlOWRhODg5YWEgcmpvbmVzLWZ1bmNjYWxsCis0NjEyNiBmZjUwYWUxM2RiOWU2OGRmZjYwYjUzZDg1MmExNzE5MzQwNWRhN2ZkIHJqb25lcy1mdW5jY2FsbAorNDYxMjcgZWFhZTY5OTBlMmQxOGQyYThkYjQ3ZDY2YWIwOWI2MTk3ZTQ5NzhhNSByam9uZXMtZnVuY2NhbGwKKzQ2MTI4IDRiZDI5OWQwMGU0YzZmMTczY2JmZjM1ZGVmOTM4MGY0OTM5NGU5ZTggbGVnYWN5LXRydW5rCis0NjEyOSBiZjVmYjZlNzUyN2MyZmZlODUxYTk5ZDUyMGRjZWJmMzU3MWFiYzg4IGxlZ2FjeS10cnVuaworNDYxMzAgNDk1YTM0ZTU0ZDYwYTUyNzg1MmQ4NzA0YTQ0YWZhZDM5MjBmYmFmMyBsZWdhY3ktdHJ1bmsKKzQ2MTMxIDllZmNjZjU2ZDRlNzFmNGQ0NzNlZjAyYjQ4M2JkZjFkM2Y0NWQ5YmUgbGVnYWN5LXRydW5rCis0NjEzMiBhZjQ2YzdlZDA1ZWI3OTFiMWU0MzY1Yjc4MDgyNDJlYmZiZTI2ODQ0IGxlZ2FjeS10cnVuaworNDYxMzMgOWZkZDQzNDIxNmVmODJlZGIyZWY3YTVmYTdjMjY3ZjhjZjFlYmRjMiBsZWdhY3ktdHJ1bmsKKzQ2MTM0IDg5NWRhNDI0ODBmMWMzNTczNzA4YWMxMjg4ZGRmNDZmOGMxZTQ1OWMgbGVnYWN5LXRydW5rCis0NjEzNiBjMWNlMGI4MzE2MzY3MDNkMTNkODEwN2VlNmQ0MDUzMWMwZTRmYWNjIGxlZ2FjeS10cnVuaworNDYxNDEgMjc4ODJhOGU0M2E5ZTg5YjEwMzNiMjJhMzczMTdhMDRhZWU5ZTk4ZCBsZWdhY3ktdHJ1bmsKKzQ2MTQyIDZiNzlmZmZiYmUxZjA0MzNkMWJkNWFjMTUwZTg0ZTY0NTkzNTViYTIgbGVnYWN5LXRydW5rCis0NjE0NCBlZmI3ZTg3MjRlZWZhNmNlNzYwNDdhYTk1YWY0NGRjY2YxZmQxNWY1IGxlZ2FjeS10cnVuaworNDYxNDggMzM2MzFiNmIwODAxNDc1OTZlNjIwNWY1M2ViOWE5OWE2ODQxYTg2YiBsZWdhY3ktdHJ1bmsKKzQ2MTQ5IDdkODJjZGVkOGFiMTUyZWIxOTU0OGZmOTk5ODkzNzY2MTg1MDY0M2UgbGVnYWN5LXRydW5rCis0NjE1MCA3NGM4MmViYzRlNDQ5OTFjYjVhNWFkNzBlYTk0NzVmMzUzZjQ1ZjRkIGxlZ2FjeS10cnVuaworNDYxNTEgY2Y1YTkwNTdlZDNhOTIwNGViODc1NmRiOWM0NGQyMzViYTcwYWYzOSBsZWdhY3ktdHJ1bmsKKzQ2MTUyIGUwN2RjMTM0OGRhZDlkNGM0NDdmMmYyMjAxZWQ0Yzk3ZjUyN2QyZmEgbGVnYWN5LXRydW5rCis0NjE1MyBiOGJlZjVhMDdkZjZjY2ZiNTIxMmRlN2ZiN2MxMTI3ZmVjMDkwOWU4IGxlZ2FjeS10cnVuaworNDYxNTUgMWRjNTY1N2YxNzQ1M2M3MGE3OGJlNmNhNzZlMjYzZjM0ZGNkODU1YyBsZWdhY3ktdHJ1bmsKKzQ2MTU2IDMxNGQ2NjZjN2FkYmQxZDdlYzI0OThiMzE2MGZkMDc4NjE4YzkzODkgbGVnYWN5LXRydW5rCis0NjE1NyBkZTlmMWExNDA2MTE5MzcyZGY5ZWYyM2E0MjNkOGI2MmEwODY5NWU3IGxlZ2FjeS10cnVuaworNDYxNTggOWFlNjliY2FiOWY3MjIxN2JiYzE0ZWE5ZjllNTM4MzgxZjM3NjEwOSBsZWdhY3ktdHJ1bmsKKzQ2MTU5IDA2OTFmM2ZiMzljYWExZDBkOWE0OGQ0ZWVlNGVhODdjMTVjNjgxNzggYmxhaXMtYnl0ZWJ1ZgorNDYxNjEgMmQ1NWU5NzkwMDM1OGJiN2I0NTMzZGQwOTY3NzVkNzZjOTdmNmVkNCBsZWdhY3ktdHJ1bmsKKzQ2MTYyIDM1N2I1NDAzZTgxYWQzYzlmNjM3MjMzNzY5ZTljYTdhNGY2MWFkZmEgYmxhaXMtYnl0ZWJ1ZgorNDYxNjQgMDQyZWQ2ZjgwODQ3Y2MwNGJiM2E0MDEwMzNhMzdmZmMzOWQzZGE5ZCBibGFpcy1ieXRlYnVmCis0NjE2NSBhNTg5Yjc0NDE1YzAyMmY2ZTE2ZTcwMTRkYzZmNjNhNWE1NDIwODEzIGJsYWlzLWJ5dGVidWYKKzQ2MTcwIDg5YjJjYTUxMjMwNzIzZTJhOGVhMzBkMTY0NDJhZTBhMDJjMTM2OTAgcmpvbmVzLXByZWFsbG9jCis0NjE3MSAwYTk1NGY0ZTNlMzZhMmFjYzk3NjdiZDBmZDIxMTA5NDNlYzEwNTQ0IHJqb25lcy1wcmVhbGxvYworNDYxNzMgNDNiMTQ3NGI1MTJiYmI0Y2YwMDhmYWRiOGZjM2ZhMTk5Y2QzY2U0YSBsZWdhY3ktdHJ1bmsKKzQ2MTc1IDZkYTMxYzQ5ZWIwYTY4NjM2MWUxYTU2NWNiODg4ZjM3NDViYTZjMGQgcmpvbmVzLXByZWFsbG9jCis0NjE3NiAyMjk5NWMxMDllZmQ2N2U1YzA2NmVjYTY5Y2YzY2EwZDQ4NGYzYWQxIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYxNzcgOGFkOWUxNDQ4OWZmZjFmMWI1NThlMWI4YzQ0NmFjODlmNDVjY2QyZiBibGFpcy1ieXRlYnVmCis0NjE4MiBiNWIyNTY5NjZmZTkyYjQxNWI3NGI3MDMzZDg4ODU0YjBmYmY0NjMyIGxlZ2FjeS10cnVuaworNDYxODQgYjgyNWU2MjI3MzY2NmU2ZDJiMTEzOGQ1OTgyZTA5Zjc4MzllMDMzNyBsZWdhY3ktdHJ1bmsKKzQ2MTg2IGMyNmI5ZmRiNjVmYjNiNTc2YjYzNWQ1MzE3YjJmOWE0MTU3Mzg2YTMgYmxhaXMtYnl0ZWJ1ZgorNDYxODkgMjYwZDVhNmNlMzBmNGUyNTY5YWI4MDE3YzM2ODc3NTcxMmQxZmFiZSBsZWdhY3ktdHJ1bmsKKzQ2MTkwIGZlZjQ5NmFkN2Y2Y2QyYmRjMWYyNWQ3YWMwNWI0Nzk5OWJmZDNlN2UgYmxhaXMtYnl0ZWJ1ZgorNDYxOTIgNTFkNmUyNzE4MjQzNjhlZWVhZjJiYmM2ODQ3NzM5M2NjZmYwZTQwOCBibGFpcy1ieXRlYnVmCis0NjE5MyBhYWNlMzE0OGY3ZWJhZjAyMjkyNmQzZDI3ODc4ZWFjMWM2YTA5MjQ1IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYxOTQgM2NmYWUzYTBlNjk1OTEwNzFkMTc0YjE0YzJiYWEyNzMxODlmMzUwYyBibGFpcy1ieXRlYnVmCis0NjE5NSBmN2E3NzQyYWVmODNiODU0MjMwNzRlYmUxOWVlMGNiZDExMWExYmE1IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYxOTcgNThkMjBmZWI2ZTAzOWJiYTZmMTYxODkzN2Y4ZTM4MGUwZWE3OTY0OCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MTk4IDY4NjBjMzZmN2RiNzUxNGY1Y2FkOWJlMzU1YjgyOGVkODY3Mjg4MzYgbGVnYWN5LXRydW5rCis0NjE5OSA5MWZlMWIwYWRiZjI2MTRmOWViMGJhOTc0ZjY4MWI0MjIxNTNkN2JmIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyMDAgMzJiYTNhMGM2MDQwOTM4M2Q4ZGQzMzQ4NmIxOWVmNzE2MWMwZTA2NCBsZWdhY3ktdHJ1bmsKKzQ2MjAxIGIyNDkxZmQwYTRkYzZjNjdkYjRiMjlhYTVhZDlhZjIzMTQyYjg5YjkgbGVnYWN5LXRydW5rCis0NjIwMiAxYzVlZTk2MzFjNmI4Yjg5NjZiZTg1NzlkZTE1OWU2NWIwOWIyMzY1IGxlZ2FjeS10cnVuaworNDYyMDMgODhjYzdlNGYwMWZmNGQwZjU3ZjNjMmEwYWQxOThhOTZkN2NlNjNkYiBsZWdhY3ktdHJ1bmsKKzQ2MjA0IGJjZWE3NGIzNWQxZmVkZTBmNzkxN2MxNDNhM2NiZGE1NTFkY2FjMWUgbGVnYWN5LXRydW5rCis0NjIwNSA2NjMyMmZjYTkxYjQxYmJiYzMyNDNlYzBlYjNiMzdjMTA5ZjJhZGEzIGxlZ2FjeS10cnVuaworNDYyMDYgMDQzZTI5YTFlMzk4NWVjY2IwMTAxZmE2NTNkZTZkN2JhY2IxNGFkZiByZWxlYXNlMjQtbWFpbnQKKzQ2MjA3IDQ1Nzg4MTI4YTFiMTU0NDllYTZiMmZjYWJkODRiMDg3N2MxMmNlMTAgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjIwOCA2OTgxOThjYWJiYzVhYjc3NzUxYjU5MDljMTM5ZmQyOGRmOTQ2YmZmIGxlZ2FjeS10cnVuaworNDYyMDkgOGM1MTQ2YzUxZTJkZjAwZThkMjc4ZDEwZjBiNGNmZDk4OGM0YzBiYyBsZWdhY3ktdHJ1bmsKKzQ2MjEwIDc1ZTFjZDIyYjU2YmRkYzRhZjBlODAwM2Y4NDJhMGFjNDJjZmMwMjAgbGVnYWN5LXRydW5rCis0NjIxMSAzZGU3MDY0ZGZhNTY0MTRhYzQ1Yzk4MDhjNTM1MDQ1ZmFmYmMyNmNlIGxlZ2FjeS10cnVuaworNDYyMTIgOWJiNGMxOWU1NjEzNGM2ODkxYjkwZThhZDQ4YWI3ZTA5NDU2OWI5NCBibGFpcy1ieXRlYnVmCis0NjIxNCBhZDFlMjQzOGNmYWE1YmY0NWU0OGM5OTQ5NmU4ZWIwNDQ2NTk0NTc3IGxlZ2FjeS10cnVuaworNDYyMTUgN2IzZDRhODFlOTRkZTVhYWFhYzU2ZGQ4M2M3NGVhMjc1ZmJiNTAzMyBibGFpcy1ieXRlYnVmCis0NjIxNiBlMTViMTRjN2ZhMTRkNWM0NDAwNTJhZjExMDVjYjE5MTgxYWVlOWNmIGxlZ2FjeS10cnVuaworNDYyMTcgNjg4ZjI1NzU3MTA0MzMxM2ZhMTBhZjgwOGNiMWViZTA4ZGZjZDE5ZSBsZWdhY3ktdHJ1bmsKKzQ2MjE5IDQxNzY4ZGUxN2VhZDkwOTJjNDU0YWRmOTkxMGY5ZDhkYmI4NTJhYzcgbGVnYWN5LXRydW5rCis0NjIyMCA0YzBjM2VjZmZjYWMyYjMyMTg0M2IxOTc4OTRmMzAxMzMyM2ZmMjJmIGxlZ2FjeS10cnVuaworNDYyMjEgYmE3MTNkMzFkMDBjNjY5OTIxYjM3MzNjZjRjOWVkMDUxMTIwOGFhYSBsZWdhY3ktdHJ1bmsKKzQ2MjIyIDI5Y2NkNzcxMDQxM2ZlZmQ5ZWE2OTA4MjBhYmI0ZWIwNDAzYjMyZWEgbGVnYWN5LXRydW5rCis0NjIyMyA5ODZiZWUxNmJiNDQ1MWNiMWQ4MjM1YWI3ZWI1ZWM3OGUzNTBiNzA3IGxlZ2FjeS10cnVuaworNDYyMjQgYWU2YmJmMmYyYTQxMmI2YzQxZDE1NDRjMjBlNDI0MzczZWQ3ZDQ5NSBsZWdhY3ktdHJ1bmsKKzQ2MjI2IDQxODA5NDA2YTM1ZWJhMDRmOTNhZmI0ZjQ1NGFjYzA1ZWM5ODQxMGEgbGVnYWN5LXRydW5rCis0NjIyNyBkY2NiY2JiZDY3MjA4YTA3ODIzMGVjYzhhODAzYThkOTQ5MDYxMWVhIGxlZ2FjeS10cnVuaworNDYyMjkgOWMwOGE3YmRiYzMxMGE3NzQ2MDg0NTk5ZjZkY2M1OGVjZTNhYzBmZCBsZWdhY3ktdHJ1bmsKKzQ2MjMwIDE3ZWFhOGI1N2UwNTJmNTE0NjVjYjMzMWZhYmZjM2M1YTMzN2U3MWMgbGVnYWN5LXRydW5rCis0NjIzMSAwNTQ5NmRlZWJhNjRiZTcwNDAxMGJjNjFmM2M4ZTVkZTJmZDBiNWFlIGxlZ2FjeS10cnVuaworNDYyMzIgNmZjMWRjMDg2NDU5NDAyNTk3Zjc4MzAxYjk5NGQwZDlmNWFiNzE0MSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MjMzIDNlNmQ3NzU1MmJlMzAyYmVhYzI1NjJkNGQ1Mjc5NzEyZTA0ZDY4ZjUgbGVnYWN5LXRydW5rCis0NjIzNCBjNWQ2MTk2NWNhZDQyMTlhOGY3YTAyY2UzYWIyZTNjYWNmN2Q4N2VhIGxlZ2FjeS10cnVuaworNDYyMzUgNWE2MzM2OTA1NmE3ZmU1ZmMzYzBiNWZmMGRlMTA4N2IxOTY1MDcxOCBsZWdhY3ktdHJ1bmsKKzQ2MjM2IGYyNzlkMDMxZjBjZWEzY2Y4YmM0ZjEwMThhZDlmYTlkMjVlOGQ4NjYgYmxhaXMtYnl0ZWJ1ZgorNDYyMzggNzRiZWIxODlmZDdlZTQ4NGNmYzJkMjMzOGFlYTI0OGFiZGJmNWViNiBsZWdhY3ktdHJ1bmsKKzQ2MjM5IDJhYTk0MDkzNTFkNjFmOTMxN2NlMTFkYTc3NTJlMDk2NWQ3MmRiM2IgbGVnYWN5LXRydW5rCis0NjI0MCA4NTBkNGY3NzE3YjhkZWEwZjliZGY1OTAwZTUwMjNjMTUwYWQ2Y2EyIGxlZ2FjeS10cnVuaworNDYyNDEgYzlkYzMwMGVlZTY4MmFjZTA1Zjc3YjQ4OGQ5MDM1MzY0NmVkZmZmMCBsZWdhY3ktdHJ1bmsKKzQ2MjQyIDA1MzI0YWE0NDRiZGUxYzBiNmYwZDI5OTRiYTNmZjUxODU1MThmODIgbGVnYWN5LXRydW5rCis0NjI0MyA0YThjOWY5YjY2ZTY4ZWM5NzA1YzIzZGJhNWFlYzBhNDlmYmQ3MGRhIGxlZ2FjeS10cnVuaworNDYyNDQgMWZkZjI5YTg4ZjBlZTBiMTNiMjg5MjFhNWZiZmIxNzUxYjVmMGNmMyBsZWdhY3ktdHJ1bmsKKzQ2MjQ1IDkxYzZjOTQ0OTBiMWM1NjQ0ZGFiNjhmODllNGM0MWNlNDMzOGU1NjcgbGVnYWN5LXRydW5rCis0NjI0NiAyZjE2ZTI3MTUyMjM1YjdmZjNjYjg3YjE1MTEzNTVmNzg1N2M1YTI3IGxlZ2FjeS10cnVuaworNDYyNDcgZWNmMmJmNDE4MmFkZjQ5MzNmMTJkMDY0Yzg1MWI4NmY1YTk3MDEwZCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MjQ4IDY4YTM0OGM5ODY4ZGI4YjM1ODYxNWJiNDA0NzFiYWNhMjVhNTAyMWMgbGVnYWN5LXRydW5rCis0NjI0OSBjMDA2YzI3MjExNmZmYWE2YTgzMjdhMzljNGEwM2ZkYjRhODI4YzA1IGxlZ2FjeS10cnVuaworNDYyNTEgYzM1MDhhOTQxNTY4MzY1OTZhMDNlOGE5MDkzMjY0Y2MxZGNkODhiYyBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MjUyIGUxNmI0MTU3Njg2Y2I5YTQ4ODg1MmQ0NDgwZjIyNzUyNjE0ZjA5M2IgbGVnYWN5LXRydW5rCis0NjI1MyAzZDQ3N2QxNTg0MDFjNzFiMTM4NDNkNzA3ZmZhNmRiZGMxZmY3Nzc5IGxlZ2FjeS10cnVuaworNDYyNTQgZWEwYWQ0ZDRmZjhlZGYwYWNiOTg1MTllMmZlNWQzMGUxNWRlMmU4YSBsZWdhY3ktdHJ1bmsKKzQ2MjU1IGM3N2RhMjczNmZiMjY1ZDZhNDQ1N2FiMGMyY2U4ODUzNjg3NDE3NjQgbGVnYWN5LXRydW5rCis0NjI1NiAzNTg3ZWUzMTNiMDA2MTAyYWU2MTBhNTk3ZTg0ZTRlNzgyOTZhMGM1IGxlZ2FjeS10cnVuaworNDYyNTcgMDRmMzllY2JjNzNjNzZhNTVhZThjYzFlZjViNTNkZjViN2VmZDBjMyBsZWdhY3ktdHJ1bmsKKzQ2MjU4IGQzM2Q4YThiNTQ1ZWVlYjE1MGQxYjRjNTc4YzgwZTkzMmY0NGZiNDcgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjI1OSA4YTU4YWE0MGRjYzA1ZDU4MDQxYTZiNGJlNmYzOGQxNjQxYjMwZTJmIGxlZ2FjeS10cnVuaworNDYyNjAgNTU2NjIwY2Q3YjFkZTNjMTE4NjUxNTJkNzU5ZGIwMGNlYTU0NTNkMCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MjYxIDlmODg0ZDM0YTBlY2Q0Yjk5ZTcyMjhkNTk4ZjViMjk1N2RhODQ2OTkgbGVnYWN5LXRydW5rCis0NjI2MiBlOWViNTI2YjcxMTE1ODBkMTgzZDhkZmQ3ZmNlZDhiMmJlNTZmYWRiIGxlZ2FjeS10cnVuaworNDYyNjMgY2VlYmU2Y2M0NTcwNGM4YzE4YmZhYTRkN2ExZDk4YTM4NWRlNDk3NSBsZWdhY3ktdHJ1bmsKKzQ2MjY0IGFiMDIyMTgxMTc3MTdiYjYxYjBhNzZjNGM1Yjg2NjFiYTA1MzMyYjUgbGVnYWN5LXRydW5rCis0NjI2NSAwODcyODcwMDk2NThlZWM3MDk5NTcyYWY1YjdlMjNkZjdkOWRiZGE4IGxlZ2FjeS10cnVuaworNDYyNjYgN2E2YWY0YTE0M2M2MmJjNWY2ZTRmZjg5MGM5OTcyMmU1ZTAwMzQ2NCBsZWdhY3ktdHJ1bmsKKzQ2MjY3IDhhOWNkOTk5NTM1ZDE3OTc0NjBjZTZjMDU2MGY4YjhjYzdhMjQzYTIgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjI2OCBlYjIzN2EzN2VhMDJkZWIzMzBlMmZlNWUxZjQzNzI5NzJiMDg5MDc2IGxlZ2FjeS10cnVuaworNDYyNjkgZGRjMjAwYWZkZTFhODMxYjFjMmJkYTczZjZhMTM2YTUyNDczZTkxYSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MjcwIGQ2ZDU1M2I5ZDQ2OTc3ZmJkY2NlZDAxYWUyMTA0M2U1MWRmMDdjNzUgYmxhaXMtYnl0ZWJ1ZgorNDYyNzEgNDZkNzdiYjMyZmIwZGE4YjQxYTY1YzFiMjUwMWI0ZmExMWNlMTliYyBsZWdhY3ktdHJ1bmsKKzQ2MjcyIDVhMTQ3MzY1NTI3ZTUzODQ1YTBmN2FjMWEzY2Y2ZWU2OTgwOTBiYWIgbGVnYWN5LXRydW5rCis0NjI3MyBmOTMzMmFkNDI4N2E3ZjZkODYyNGQ5MDg3Y2IwMjE5MDFkNDczNWFjIGxlZ2FjeS10cnVuaworNDYyNzQgODJiNjgwODQ2ZGY4ODk3ZmY3MjhiY2U3ZDZlNjVkODAzZDQ5YjM4MyBsZWdhY3ktdHJ1bmsKKzQ2Mjc1IDgxYjY0MWRhNWM3OTUyYTdlMDQwNWY4M2I5NmU5YWYwMWExZTQwNzQgcmVsZWFzZTI0LW1haW50Cis0NjI3NiAxMDM1YTJiMzFlNmRmMjYxNmM5YTQyMDhlZWIxYWE5NGUwZmFkZjZkIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyNzggOTU4ZjkxNjg0MjA5ZDAwYzMzZDdmZWZhNjhjZTQ2ZTlkMDNhOWNlZiBsZWdhY3ktdHJ1bmsKKzQ2MjgwIDE2NzBmZjcyNmU4ZmQ3ZDc0NzgyODYxNWYxMDA5YTI3NDUyNWM0NzUgbGVnYWN5LXRydW5rCis0NjI4MSAzMDkxYTc1ZWI1NjBjNTZkZTc3Zjg2OWZmZjdmZjE4MTkxNjk3MDJiIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyODMgZGQ0MTczMWRlZTZkNGJkMmM4ZDA1YWI1NGU0NDQ1MTQ4ZDI1MmFjNSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2Mjg0IDJmNGZiNjQxNGU4NzIwOGFiYzE4MzFkMzVhNjU2YjAyYjU3MTc4ZTUgYmxhaXMtYnl0ZWJ1ZgorNDYyODUgOGE5OWNkZWYwYzk0YWNiNTgxZjUzZWIyNWNjMjFmMTRiOTZmNTliOCBsZWdhY3ktdHJ1bmsKKzQ2Mjg2IGE2NTRkNjFkMzZkNTMxOTY3MWIxMGIwYjFlNTIxODkxYjE3OWNlNzQgbGVnYWN5LXRydW5rCis0NjI4NyA1MzgyYWFmM2EwZGFjNWZjZjJlNTg5ZDFmNDFmZmYwYjI5OTM2ZTZlIGxlZ2FjeS10cnVuaworNDYyODggYzhlNGIzYjM5Nzc0MzA1ZmFjOGE3YTUxMzk3NzZkOTdkOWEzZDVmZiBsZWdhY3ktdHJ1bmsKKzQ2Mjg5IDgzNWVhNTk4YTQwNjBiYTgxYjk4OGRjMTYzM2RlOTlkYzI5MjYyMGYgYmxhaXMtYnl0ZWJ1ZgorNDYyOTAgNjYxMGQ0YmU4ZmJkOTAyNTA1NDAzZDkyYzBiZmMzNjAwNzkzNjAzZSBsZWdhY3ktdHJ1bmsKKzQ2MjkxIGZlNjUzZTIyNDg4YzlhMGIwODMzMWQwNTRiOGYwZTk2MTBhNGIwNjEgbGVnYWN5LXRydW5rCis0NjI5MiA5MmIwZmM1NGQyMzAwZDA1OGQwMmJlNzA0ZTJiNzAyZmU5ZTcxNDgyIGxlZ2FjeS10cnVuaworNDYyOTMgNmQ4NjE1ZjlmMWNjYTk3ODM4NWI3OTYzOGJjODEyMzQ1YmZjMjI3NiBsZWdhY3ktdHJ1bmsKKzQ2Mjk0IDhkMjhlNjNlOGYyMTY2NDgzZjAwMmU1ZGY2NDk2YTg1YjFjZTk2ZmIgbGVnYWN5LXRydW5rCis0NjI5NSBhZDJlNGRlNDdkMDk2MzY1ZGFlZDdlMTRjZmJlZTRlMTdjMDg5YzgzIGxlZ2FjeS10cnVuaworNDYyOTYgMmY0NWFkNjZjZDM2NTA1OGIwMGRmZDIxZjY2ZDY0MDBiNzQ4ZTk0MiBibGFpcy1ieXRlYnVmCis0NjI5NyAzYmVmMjQwODZhY2U1MWRhMzJhMjFlNjU1ZmFlNTUyNWVmZGRmNzdmIGxlZ2FjeS10cnVuaworNDYyOTggYjdiNzYxNWVhNWY1ZjIwNzNmNGZjMTJmODIxMGY2ZTBlNzNkNGNlZSBsZWdhY3ktdHJ1bmsKKzQ2Mjk5IDlmN2IxYjdhZGYwMTBlMmZiZmRjNTc4ZjgxMjA4NzExNDFkMDRmMzcgbGVnYWN5LXRydW5rCis0NjMwMCAzNmNkNGE0YWI4ZjdlOGY3MmJhODAyMGNiNTdkMGE4MjVhOGExODU3IGxlZ2FjeS10cnVuaworNDYzMDEgYzA3YTk2ZjY5ODM5NjJiNGIyYTUxODVmMWIyNGE4ZmRmZTA5OTQ2ZSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzAyIDk1NzcyN2YyZmYwOWYzOTM3MzcyNzE3NWQ5MmUzMThkMzg4Y2U0YzQgbGVnYWN5LXRydW5rCis0NjMwMyA5ODgzNzkwMTQ0NzczMDgyYjBjNWYxNWYxOTg3NWEwZDMzZjUyYjU3IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMDQgMzc4YmE2NzdiNTc5NzA3NmZkMzQ4NTBkZDI3MmRjYTU1YjkyOTI0MCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzA1IDc4YzYwZTU5OWFmZGI3YmFkZjYxYTQ4NDNhOGM4MWU1NjVlMGI3MjAgbGVnYWN5LXRydW5rCis0NjMwNiAzMWI5Yzc4YTA3ZjM2OWZkMWRjMTBlZTc2ODgyYWJhMDJhZTFjYTMyIGJpcHBvbGl0by1uZXdzdHJ1Y3QKKzQ2MzA3IDA1YmJiZGRmY2UzZjdhMjdiMjUxNTM5ZGVkZDdhOTdkYzY0N2MzOWYgbGVnYWN5LXRydW5rCis0NjMwOCBiZTc0MTViMGEzMTg1MWEzYzkzYmJiY2YwNGJiYWI2MTIwMTVhMmM3IGxlZ2FjeS10cnVuaworNDYzMDkgZTNlZTNlYjE4Njc4ZGM2ZTgzN2YzYmVlNmI1OGRmYmUwYmM4NjU1YyBsZWdhY3ktdHJ1bmsKKzQ2MzEwIGQyZGY0YTM1OWUzNTJhZjc3YzBlMzgzMTc1ZmY1YmQ5ZDY3YWNjNDIgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjMxMSBhNGVlNDU5ZmYyODhhNDJlODkyZWRkODBhOTM1NDNmNjA5ODUxOWRlIGJsYWlzLWJ5dGVidWYKKzQ2MzEzIDg4ZTlkODY3NzAwNjZlY2QwZmJiMWNhOTNmMGIwMTkyOTZhMWI2MmYgbGVnYWN5LXRydW5rCis0NjMxNCA0NTRiZGU3ZTQxNmU0OWJhN2JiMGU5N2JiN2RjYzBiMzJiNzNhYTJkIGxlZ2FjeS10cnVuaworNDYzMTUgODkwZjYxNjFjOThhNWE5MTU3ZjA4NDMxNWJhMjAwYmEyOTkyNDg0NSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzE2IDY1MzNkOGFlMWZkOTUxMmVmMTdiOTRlYTg5MDFiNjAzZGMzOGE5MmEgbGVnYWN5LXRydW5rCis0NjMxNyBhMDQzYzVkNzFlYWExOGIzNmFmZWE1MGM3NzdhZjhhZTY1M2YyZDRiIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMTggNzZiMzAxYWM0YTVlNjM0MTg2Zjg0ZGVmZmQ0ZWUxZjRiODEyNTQwMyBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzE5IDhhMzhkYThlMTI4ZjdkYmM2NDA4OTNlNTQ0MmM5M2QzMDFlZDQ2NzAgcmVsZWFzZTI0LW1haW50Cis0NjMyMCA1MjEzYjYwNjUxOTc5NmU5MDBlNTViNzI4MWY2Y2M4NDM5MzQ3YmFjIGxlZ2FjeS10cnVuaworNDYzMjUgMWExMTMwNTA2OTBiNzQxZjMyNzZjNzFkZTkwNGUxZWM2YTJiOTk2YSBsZWdhY3ktdHJ1bmsKKzQ2MzI3IGMwMDgyNzA1ZjJmMjM0M2EyNDkyOTliNGU0MTAwYWRmNWFmZTI3NjggbGVnYWN5LXRydW5rCis0NjMyOCBmNzQzZTNjNmI5YmYxNmE4Njc3MGFlZWRiNTBhMTBkMTQ3NDg2NTA2IGxlZ2FjeS10cnVuaworNDYzMjkgMmVkNGI3NTdjMGNmMjYzZDg5ZWZlMjM3NTc4MDc0Mzg5NDE2NDcwNiBsZWdhY3ktdHJ1bmsKKzQ2MzMwIDc5YzhkY2MyNzdhNWYyNjNlM2JhY2Q4OWFlOTE5ZTFiOWE5NmFlM2YgbGVnYWN5LXRydW5rCis0NjMzMSAxM2UwZjcxYTcwZDU0NGU0YWE5YTQ3MTI2NDMwODBmMTQ0OWJhNjM4IGxlZ2FjeS10cnVuaworNDYzMzIgMDlkMmU5NjhkMDc0NzI5MzI5NWE2NzNhMDFkZThmZDVlYzY2ODViMiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzMzIGZhOThiOGRmMGZlMjE3Njg0MTU0OGVmZDI3MzUxYWJkZGIyOGY0NGMgbGVnYWN5LXRydW5rCis0NjMzNSBhNGU0MzNjMTM2ZGE0M2IwMThkNzVhYjIxMmYzYTUyZmMyOGU0NWE0IGxlZ2FjeS10cnVuaworNDYzMzYgMzFkNDIxNTQ4MGM2OTk5NTkwN2JmN2M0Y2NjZTNiMDMyYzk5NzUyMSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzM3IGQyYjM4YTYxZGU3MTM1MzRlOWEwMjgzMTllMjkzZmVmZjY3MzllNDggc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM0MCBiZWY2YWFiNWY5YjNhM2QwMThhNTJhNTBjMjhhMzdlM2ZmNjNmZjUwIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNDEgYzBkYmZlYThjMGZiNWI5MDg0Njc3ZWIzMDQzN2I1YmUxYTQzNDQ2ZCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzQyIGQxMDliMDgxZDQ0YmU1NDA2ODllMDE5YWZjN2I3OTIyYTIzZDRkN2Ygc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM0MyBjMTRlMGM4OWE4YjBkMDdlNTgwYmU2YTRmMjAwYWEwOTU1Yjk4MWMyIGxlZ2FjeS10cnVuaworNDYzNDYgMmU3YTAwZWJjMzE5MjYwNTg1ZTkxZWE0MzhmNDk3ZmFjNThlMzQ5MCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzQ3IDVlNGRjZTc4ZjIzZGE5YjMzMGNkYzcxMzJlNTI5MjhiNzRhYjBjNmIgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM0OCA2MjRiNGJiOTNkOTAyNmEyZjU4ZDIxODBkOGE3ZDAzNWYyZmNkNDZhIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNTAgNDNjODZmMzQ5ZDQ3ODRjN2Q2NDc3YjU4ZmVlYzE1YWVlZDhlOGQ5MSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzUyIDRiZmVhYjIzMGUzODVkNjdkNDE0YjFkMTI5MTk0MmE3MjhjOGEzODQgbGVnYWN5LXRydW5rCis0NjM1NCAxYmEzZTQwZTg2NDk2YTI3MzZiZmFhOTM4YWE1ZWQ5M2M1NTAzZGE4IGxlZ2FjeS10cnVuaworNDYzNTUgNTJkMTM5OWUxYzZkOTFjN2FlMWM2ZjUzMGQwZjdhYTQ3NWRmZDNjMiBsZWdhY3ktdHJ1bmsKKzQ2MzU2IGExNjk0OGU5OTE1ZWNhNTZkODMwNDg5ZmQ1ZDk3MWQ2ZjQ5NzlhNGYgbGVnYWN5LXRydW5rCis0NjM1NyAwYjhiMjhmMGYzMDE0M2IxMDc1N2JkYTYzNTI4NDExYTcyNzk2NWJmIGxlZ2FjeS10cnVuaworNDYzNTggNzI5ZmY4MDA4YzllNTk4MzA3NGNlMTk1YmRhNGFiNDNiNjBjZGU5NCBsZWdhY3ktdHJ1bmsKKzQ2MzU5IGQzN2Q1YzU1MjFlMzg2NDZlYTU5YTdlZTQ2NmI3MzFkODkyM2U5ZWMgbGVnYWN5LXRydW5rCis0NjM2MCAyZTRhMjc0ZTMxMDhhZWIzNjIzMjZiOWNlZDI5ZDUwYTdlNjJmZTAyIGxlZ2FjeS10cnVuaworNDYzNjEgYTVmNTNmZWNmY2U2NmNiMTlkMTFiNjdhNGViNzAzOTQ2OTc4OWVmMCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzYyIGIzMmY5YmIyZTA3NzI3ZmE2ZDA0OGU3ZDQzY2UxYmUzM2UzMzIzOTcgbGVnYWN5LXRydW5rCis0NjM2MyBmNzEwZWRjYWE2NzU4OTllYTRiN2JmOGE1ZDUwNGQ4YWE0Y2NmZTYwIGxlZ2FjeS10cnVuaworNDYzNjQgMDU3NDQ5MTdiN2MzOWIyMzg2ZDM0MzdiMzg4OGM0ZDE5MTFiNWUwMiBsZWdhY3ktdHJ1bmsKKzQ2MzY2IDk2NDE1MTA1YzI5ZTAxZWVhZTEwMDExZTU1MTA3MjRhN2RkMjMyMjYgbGVnYWN5LXRydW5rCis0NjM2NyAzODkwYTNjNzkyYjkwMzczZWUxNzhjZjI5MDYyZWQ3ZDU2NjgwYjNjIGxlZ2FjeS10cnVuaworNDYzNjggMzVmNDE3MzFiZWU5NGU0YmFhNDVhNDg5ZjgzMDk3MzE4ZDc0NmYxYSBsZWdhY3ktdHJ1bmsKKzQ2MzcwIDRkMGFiYjk5YzllNTQ4ZDNiOWMwZDc0MTUzY2M3YWFhZTcxYzM1YmQgbGVnYWN5LXRydW5rCis0NjM3MSAyZjcxZDFhNjkyYmY0YTBiYjE2MWEwMjFlYmY3OWRhNjNhYzFjMDU2IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNzIgZDIxODk2YjJkZDBhZDcxZWY3YjE1MjM4MzFhMzllMjNhMmIyNDA0ZiBsZWdhY3ktdHJ1bmsKKzQ2MzczIGQ4NWIzNjBhYTVmNmY4MWQ4YTQwYWU4ZDJkNzY1OWQ0YmQxMDNkOGUgbGVnYWN5LXRydW5rCis0NjM3NiAxYWIzMjYxN2RhZGRmNjY3YjkwNjRiMTE2ZGJjYTBlOGNhZTg0YzM4IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNzcgNzY4MDc5MDJhMmY1MDVlNTdkMGU1MjliMjZlMTM1OGE0OTRiMDFhNiBsZWdhY3ktdHJ1bmsKKzQ2Mzc4IDIzZjc4ZTViZDNlM2FlNWM3NDBmMDdiZjA4OThkZWE3MWUyMTBkZGUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM3OSBmNzA2NTNjMWU2MzNiNjhhOWQ5NDI0OTIyMWRlODI4MjE3NmZjNThkIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzODAgNzg3NzFkNjczYjRiNzMxMjYyNWQ1MjY5MGJlNDk0N2U2OGYwMzNiYSBsZWdhY3ktdHJ1bmsKKzQ2MzgxIDgxNmY4ZTYwMDk3YTlkYTdkN2QyNGQ4NDE4MmUyZGVmNDk0OTI4MTUgbGVnYWN5LXRydW5rCis0NjM4MiA0MWY4MzllODk1MzI1ZDM2MjgwZjMwM2ZhMWYwOTU4MTFhYjQ2ODJmIHRpbS1leGNfc2FuaXR5Cis0NjM4MyAwZjYxYzNjNjJiOGJmODE5MThkM2Q0NTNlZjYyMzM4Y2JiOGRjMGMwIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzODQgY2ZjOWEwMDdlOGNlYjMwYTg1YmJmNWYyZTU3ODc1YTU5ODM3ZDNjNSB0aW0tZXhjX3Nhbml0eQorNDYzODcgYjIwZTdjYmRhNDA5MTJjODM0ZDc5Yjc1NWFhYjc4ODRkZjMwZWIxMiBsZWdhY3ktdHJ1bmsKKzQ2Mzg4IGQxNTNkMmY2Njg4NGZjMzAxODViYzIxYjNiNTg5NTAzNWM0M2NiMWIgbGVnYWN5LXRydW5rCis0NjM5MSA3MGMwZmZkMjFiZjBhNzMwMGUxOGJhOWViNTMyOGQzYWIxYzk3OTMzIGxlZ2FjeS10cnVuaworNDYzOTIgZGYwNGYxOTJhMmEyN2M0ZjAwOWJiY2RmNDAyNGYxYjkwZjU5MDQ5NyBsZWdhY3ktdHJ1bmsKKzQ2MzkzIGFjNDVlY2E4YzM1YzI0NmRiODY4NjEyNzE2NjBhNWI3YjI5MDk5ZDIgcDN5aworNDYzOTUgYjE4OTY2NTZmMjJlNDY5MDYzZjI5NDEzNzEwNmQ3MzBiNjdlNWE0YSBwM3lrCis0NjM5NyBkYmIxOTVjOWRkODhlMjU0NjYyOWFkZjYyZTAzYmNkY2U5OGU0OTk4IGxlZ2FjeS10cnVuaworNDYzOTggMzNjMzI4ODk2ZjUyN2ViNWYwYzc2NWNiZWU0ODcwMmI5ZjEwYjYxMiBsZWdhY3ktdHJ1bmsKKzQ2NDAwIGFkYzIxNGZjMWUxYzEzYzM5ODA2ZDM4MThmNTdmMzFiNjgxOTBkYjQgbGVnYWN5LXRydW5rCis0NjQwMSA1ZGRiZDIwNTAwZmM1MDQ5MWY3OGI4MTFlYTJiZjA3YTkwNTM5OTczIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0MDMgNmIwM2E0N2ViNTRkZjdlZGFjY2ExZTExMzU2NDEwYmE5MDAyOTYzMyBsZWdhY3ktdHJ1bmsKKzQ2NDA0IDZkOTlkZjU1NjA2ZTI0ZDBmY2U2N2I3NmNlNmY0YzAxYmUzZDdlNmUgbGVnYWN5LXRydW5rCis0NjQwNSBlODNlMWFhYWIxYTNhZTA0NjEzZWRlYjY1NjA4OTIzYTQ2MWZiMzMyIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0MDYgNTJmMmM5Zjc0ZjVhZDVhNzZiMmIxZjhhZDk2MmU0NWVmMmEwNzhjMSBsZWdhY3ktdHJ1bmsKKzQ2NDA3IDMxMjhjZmFkYTZiNGE3Y2Q4YWZlYjIzZjQ1OWM3NDFhNDMxODE1NjQgbGVnYWN5LXRydW5rCis0NjQwOCA0MDJmM2FjNDA1MmZmYWZkZDgxNGI4ZDRhNTZkZTRkZDlhZGZkMDY1IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0MDkgOGY3YzdhZWFjM2E1ODNhM2I5MmZhOGVhZTQ3YmM4ODk4Yzg4NjY2ZSBsZWdhY3ktdHJ1bmsKKzQ2NDEwIDFkYjBkNzM3NDllZDllZGE1ZWRlMDBiNzY2ZWU5MTQxZmM2ZDM4NWEgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQxMSA1NjA3YWI2YzY3ZGZkYjBkYTZhZTlkNWEzNjUyM2JiNGYxYjU5OTZlIGxlZ2FjeS10cnVuaworNDY0MTIgZmE2NzViM2Q3NWNhODIyNWVkOTQ3MTY0ODU0YjQ1NzA0MWQ5NDhmOCByZWxlYXNlMjQtbWFpbnQKKzQ2NDE1IGU3YWY5N2UyNzhjNDRhNzEwZGI0MTllMDk3MDdiOGM5MzFhYWQ4ZDggbGVnYWN5LXRydW5rCis0NjQxNiA0Njk3ZDE5NThjY2IwNWJhNmQ5ZmQzMTQ2MTBkYTE1MzQ4ZWE3OGNiIGxlZ2FjeS10cnVuaworNDY0MTcgNjMxYjY2NDhmZGY0MWJlMmM0NTc1OTUzMjU3ZGQ4OTExNjg0NmZjZCBsZWdhY3ktdHJ1bmsKKzQ2NDE4IDJiZWUxNTBhMGY3NTIyOWExMGNiOTA3ZjliMjRlNWUzMDEyOGIzMjkgbGVnYWN5LXRydW5rCis0NjQxOSBmZWE2ZmI0NTU3MTEzYmM2MTE3MjYyYzkxZjNjZjM5YjhhZDY5ZjU1IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0MjAgNGRjNjFkN2RiM2EyOWZmODZhY2RlNWYyZWNiMDk1NjU4YTQwMWQ2NCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDIxIDhlMmRjM2U0MTgwMTFhNmUyNWQ3NjAyZGRhZWVjYzEwZDYwZTc3Y2YgbGVnYWN5LXRydW5rCis0NjQyMiAwZWViZDllZWI3MTdjYTMxMzNjN2UxY2Q0ZWRkZjRjNzA4YmNiNDNkIGxlZ2FjeS10cnVuaworNDY0MjMgY2U2MzhkNGI0ZmM4Y2RhZjBjNGI2M2ExNjQ4NTNhMjc2M2VmNmU1NiBsZWdhY3ktdHJ1bmsKKzQ2NDI0IDkwZWRhZjBkOTA2MjE4MjE4YmI5NGJmY2NkZGUzZTAwMWVkMWU5ZmUgbGVnYWN5LXRydW5rCis0NjQyNSBlMGU0M2U1NjE1MTJiYzk2MDQxMGI3YzdkMTI2ZDIxZWFhYjZmMDFhIGxlZ2FjeS10cnVuaworNDY0MjYgNzA4ZWFmMDg5NmJmNDU0NGQ0ZDU0MzUzODMyZjMzMDA3MWNhYTY1OCBsZWdhY3ktdHJ1bmsKKzQ2NDI5IDM4ZTlhZjM4ZjM4MWMyN2VjNjA3MGI1YzYyYTUzOWMzOGY0NmQzMjkgbGVnYWN5LXRydW5rCis0NjQzMCA0OTljZjdjMmY3NzczZWY5NmZlYTRiNDI0YjNjOTM0YmVjYzVkNTZkIGxlZ2FjeS10cnVuaworNDY0MzEgNDIwOWEzZDI5NWUzNDdlZWQ2ZmU1NDEwMjhhODlhMTNjM2M0MzExMSBsZWdhY3ktdHJ1bmsKKzQ2NDMyIGRmYmQ0NTdjYTY3YWM2YThmMDlkZjNjZGY1OTViZGQwZmM1NzRlOGQgbGVnYWN5LXRydW5rCis0NjQzMyA2OGUxYTAyYTViMjkxZDg5MzgxYmZmOGQ5NTA0ZTAzMTM1MGY2NGViIGxlZ2FjeS10cnVuaworNDY0MzQgMTBhNTk3M2UwYzlhNzM3NGYxYzFjOTEyN2E0NzAyMWQ3YmFiZmNkOSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDM2IDNkODFmYWY0N2FmNzdkZDA5YWZkYmVkMGY0OWIyYzgyMzE1ZTAzYTkgbGVnYWN5LXRydW5rCis0NjQzOCBjYTY1N2UwYmQwOWMwMzc3OGYwMTZjMGQwY2NlNDdkNWNhNGQyZmM4IGxlZ2FjeS10cnVuaworNDY0MzkgOWYzMzc1ZTMzZGI5NWQwOGVjNGMyZDk3M2E2M2UxMjU0NDc0Zjc1MiBsZWdhY3ktdHJ1bmsKKzQ2NDQwIDk5ZDA2MWJjMzE0MzFkMWZmYTFjNjIxNDcwZmE1OWQwMTVkZGU0N2IgbGVnYWN5LXRydW5rCis0NjQ0MSA4YjRkMmE5MDc1YWY1YjBjM2YzYTA5YWFiZjM1MGQxZGMzNzQ1MjQzIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0NDQgNTQ5Y2FkYTRlMzZjYzU3YTNlNWYyYWU0MTk5NjhjZjFlZjQ4ZDJiMSBsZWdhY3ktdHJ1bmsKKzQ2NDQ1IDNmZjNkMmYyMjAxMjI0NmZjMTgwNjc1MjJjZGUxNmE4ODlmNDJkYTIgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQ0NiAzMjg3OWQyNjEwOWQ5Njk2MDZkNzg3YTU1MTU1MzA4M2FhZmFjMTU3IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0NDggMTZhMWNhZDBmOTQ5OTkyNTQ0YmY4YmNhNWM4YjY5MmVlOWE0OWFlNSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDQ5IGNlM2UzYzYzZmU1YWRkZTMwZWQwZjc5NjNhY2QyZTNjNGVjNDNhZmMgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQ1MCAwMDM0MzM1MTFlNGRkODRhZmE0YzA0MWIyYWE3NjdlNzJlMGJmNzZjIGxlZ2FjeS10cnVuaworNDY0NTIgNzM0MjZlNzFmNjdhYjU3NjJhZjMwZDkwYmE1YTMxZGNlODEyY2M4NCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDUzIGE1ZDVlNzNiMmVkYmI1ZmIzZWI5OTc5NzI1ZTEwMGJkZDE0NjAyYzAgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQ1NCA3OTVkMWNiMWRmMDEzY2RmMzQ1YTkyNmJhZjUwNjViZDAxNWEwYjE1IGxlZ2FjeS10cnVuaworNDY0NTYgNGMwODIzZjBhMGExNTc0ZWE4MmMxOWRlOWQ0YzFlMmExYTU2MDlmNSBsZWdhY3ktdHJ1bmsKKzQ2NDU3IGE1NmFhOGFiNDg5YjcwYzQ1YzUyNzMwNmU5NGRmMTQ1ZDY5MzM0N2UgbGVnYWN5LXRydW5rCis0NjQ1OCBjZWJhOGYyZWEyNGVlYmE1MDg3NWQ0NDNmNDZkZmI5NzFkNmQyOWY2IGxlZ2FjeS10cnVuaworNDY0NjAgY2NkYzBiYzExZGNmMmUyOGY2YzRiYzk2NDQwZGZmMTRmYTY0OTlmNiBsZWdhY3ktdHJ1bmsKKzQ2NDYxIDYwNjNlNGU2ZWUyMGUxN2Q5NDljMjE3ZTM3OTYyMzJmNjcyNjkyMzMgbGVnYWN5LXRydW5rCis0NjQ2MiAzMGU0ZWE0MjMzNjkwOWFiY2UwNjVkZDVjNDg2OTJjNWQ0Mzk3YWQ0IGxlZ2FjeS10cnVuaworNDY0NjMgNzgxYmQ5NGNlYmFkNTVlMjhmNzg4ZGM5MjI1NDNmMzZmZDk0NGY3OCBsZWdhY3ktdHJ1bmsKKzQ2NDY0IDA1MzA1ZDNhYTA0ZDFkYjY0MzgyZTgwYjg5NjU0NTVkZWE2NGY3ZDMgbGVnYWN5LXRydW5rCis0NjQ2NSA1MDZlZjkxMzAyMzhiNWViOWRhMmE3OTNhZGNkNmVkMTVlNjExNzY4IGxlZ2FjeS10cnVuaworNDY0NjggNWIwNzUzYjlkMTZhYzM4NzY4YzA2NWVlMGQ0MjQ4NWM1YjdiOTVmYyBsZWdhY3ktdHJ1bmsKKzQ2NDY5IDcyMzI3ZjhmNGE3OTZmZTU2YTQ3YjkwODQ4YjFiZWVhYzY3NGNmOWEgbGVnYWN5LXRydW5rCis0NjQ3MCA4MDM4ZTQxZjQ2Y2MwZDI0MzQxYjBiZmU4ODM2MjEyZDU5ZjVkYTU0IGxlZ2FjeS10cnVuaworNDY0NzIgZWFlNmRlMWI0MzgzODBhNTU3MDJmYjMwZjFmYmIwMWQxMGVkMDc3NCBsZWdhY3ktdHJ1bmsKKzQ2NDczIDA4YmYwODIyYzUwYTBkNzNmOWZmOTM1NmRjMmU0NDA0MjU0MmUxMDYgbGVnYWN5LXRydW5rCis0NjQ3NCA4ZGFlYjlhZjg0MjJjYmQ0N2MyOTI0MTIwNTgzOGI5YmQzNTQyNzk4IGxlZ2FjeS10cnVuaworNDY0NzUgOWE2NWZkNDI1NWEzN2NlYTcyZWQwMTM4MDUxMWUwOWUwNmM3ZDE0YSBsZWdhY3ktdHJ1bmsKKzQ2NDc3IDgwNzU0MGNmNzcxNGM5ODk0ZDI5YWIwNmRlZjgzMWIyODFlZmNiMTYgbGVnYWN5LXRydW5rCis0NjQ3OCBlOTU3MTU1YWU5YmRkYzIxY2E2NjYxZWEyNWMwMTFjYzQwYWY2NDRhIGxlZ2FjeS10cnVuaworNDY0ODIgMDM4YmI4ZDAwNThiMjUzOTU3MmYxOTU4MGQwZThjOWFhYzQzYzQyMiByZWxlYXNlMjQtbWFpbnQKKzQ2NDg4IDQ1NTZjMmM5MzBmNGIwMjVlNzlhYjFhMWVhYmQwNGFhZDFlMjIxMGUgbGVnYWN5LXRydW5rCis0NjQ4OSAzZGVkMDkwOGU5NTJmNjQ2ZDQwMGU5ZTU1YzZmOGM2OGNiNDFmNDViIGxlZ2FjeS10cnVuaworNDY0OTAgMGYyZjdhMGQ5YjdkZDIwMTViNGQ3MDRlMTNlZTE5MTVhMGRlYzEzNCBwM3lrCis0NjQ5MSAyOWFlNWUwZmMzNDgyOGI1ZTYzZjE4NGYzMDM4NDYxMTY2OGRiZWZkIHAzeWsKKzQ2NDk1IDYzMWMyMDdjMzY5MjNkMDIzZjg0Y2QwYTkyYjI4OWI2YjcwYmU2ZDAgbGVnYWN5LXRydW5rCis0NjQ5NyAxYTIzNzA2MTM5Y2EwZmMyNzg2ODk0ODMyNWUyZjQyMTUxYWJjYTQ4IGxlZ2FjeS10cnVuaworNDY0OTggM2ZlYzNjZTIwNDEzODRhZGViZDlkYzczZWVlNjMyOTY5OTI0NWMyNSBwM3lrCis0NjQ5OSA1NTE4MTRlNGI0NzExN2IzMmY2Mjc0YzFlMzkwOGM0NjRjZjgyMTQ0IGxlZ2FjeS10cnVuaworNDY1MDEgMjM2NzI1ZjY0YTM0MWZmZTkwMTI5YjA5NzkwM2ZlMTBhNTkzOTRiMSBsZWdhY3ktdHJ1bmsKKzQ2NTAyIDdmYTdjYjZkOGJlODFlMjkwYWEyYTZlOGQwMjRlMzhkNzQ4MjZkM2EgbGVnYWN5LXRydW5rCis0NjUwMyAwMjAzYThhZjc0YTc1YTlhYmY2MGRmZDY5ZGY4YWViMzI3YWYzOTE4IGxlZ2FjeS10cnVuaworNDY1MDQgNmJhNTY3OGJlN2YyNjM1NDQ2Yjk4NThmM2QzMmZjNmI4MWI3YWEwNSBsZWdhY3ktdHJ1bmsKKzQ2NTA1IGY3NmQzZTY4ZDFhYzM3YjAwYjFkOTViZGZiZDhiYWQzMzg0MDdkZmUgbGVnYWN5LXRydW5rCis0NjUwNiA1MTI1NWNjOGEwZGMwNGFiZTczMDVlNTRkYTNhMzBmNWZjNGMxMjRlIHJlbGVhc2UyNC1tYWludAorNDY1MDcgZTk4OWVlNWQ0MDRhYmU3NzYyMTRhYjA4MGUyNzYyMGJlZGMyN2YwZSBsZWdhY3ktdHJ1bmsKKzQ2NTA4IDMyMDRhYTllMmIyMjU5NmE5NjI0ODk5MDVhNzM1ZTg2ZmMyY2JjMzMgbGVnYWN5LXRydW5rCis0NjUwOSA3MTg2MWMzNzgwOTM3MTM2MWVkZDllYTE5ZDkxY2FlNmVlNmY3ZjkwIGxlZ2FjeS10cnVuaworNDY1MTAgNTkzYWNjZGRlMDBlZjMzM2QzZWJkNTliODg4MmFjYmU4NjUyZTU2ZCBsZWdhY3ktdHJ1bmsKKzQ2NTExIGYxN2QzNzkyMGY2YTFiZGZjZTA4NjA5MjdlMTdiODU3ZTYzOGJlYmIgbGVnYWN5LXRydW5rCis0NjUxMiA5NWZiMmNkMWQzYmFjZTQ3NWNkMjQxNTg0ZDFkMDA4YzgyNmUxNzlhIGxlZ2FjeS10cnVuaworNDY1MTMgZTBjZWE2MDU0MTdlNDVjNTUxZjI3NmFjNGQ5ZWU1M2Q2NzdkNzdlMiBsZWdhY3ktdHJ1bmsKKzQ2NTE0IDkyNjhjMzA3ODJjMGFmZjcxZjRmMzMwOWJhZjM1MDAwNWI1NTE2MTcgbGVnYWN5LXRydW5rCis0NjUxNSA5MzhjMGZjZDViY2NiNmM3M2NhYmM5YWQzZDZhMzM5MzMwNzRmZDRmIGxlZ2FjeS10cnVuaworNDY1MTYgZDYwYzdmNmMyYWEwMDRiZTNiYjk0MmIwZGEwYTMxODdhODM1NTVmOSBsZWdhY3ktdHJ1bmsKKzQ2NTE3IGJmMzI2NTgxYzc0MjIyNjJhOGE5ZjdiMDg3NDVlNjYxOGE0NGM2MDcgbGVnYWN5LXRydW5rCis0NjUxOCA5ZjMyODRjOTJlYjMwZjEwNzEwYzliNmI5MmM2ZDAwNzZjN2FlYWVhIGxlZ2FjeS10cnVuaworNDY1MTkgZDMzODMwNjM0OTFmNTk4M2NmYzFjNTlmMTYzOGVhMGRlNjIxZTAzMCBsZWdhY3ktdHJ1bmsKKzQ2NTIwIGFhMDY1ZjgyMDI1MjQ2YmExN2ViMjMyNTdjMGQwMTg2OTA3YjNmOGMgbGVnYWN5LXRydW5rCis0NjUyMiA1OGU5OWYyYTY0ZWNhMWRlMmE2YWFlNTg3NTdiMzE1YzcxNzI2NGIyIGxlZ2FjeS10cnVuaworNDY1MjMgNTUzMTk1NTk5M2VkNDE2NDA2ZDUyNDY2NDdkYTEyNjU1ZTdjYzk3NiBsZWdhY3ktdHJ1bmsKKzQ2NTI0IDliMDAxZWJlYWE1ZTQ4Njc3NzVkMTBkZmY0OTAzMWYzYjNjNDdiMTYgbGVnYWN5LXRydW5rCis0NjUyNSAzZDFhOTliMzlmY2EyNWFlYjYxNDFlNTc4NWY1MmI4YzczYzQ4MjcwIGxlZ2FjeS10cnVuaworNDY1MjYgNjc0M2E2YTA2ZjE1NmQxZGJmZTg5ZTc5NTNhZDgyNTNkMzM5OGU0MiBsZWdhY3ktdHJ1bmsKKzQ2NTI3IGZiNTZhMzk5MjYwNGJhODU5NzZjZGQxMTcxNjc4NGUwNzY2YjIyMTEgbGVnYWN5LXRydW5rCis0NjUyOCBmNjRiMTNhMDBmMzNiMjhjOGVmYWE1NThhMDMwY2E4MDc3MzM5MzM5IGxlZ2FjeS10cnVuaworNDY1MjkgZGNmOTJkZDc0MDhhM2YwYmQyYWY1NDQ5NDk4ODFhMzk1ZjY5NDUyOCBsZWdhY3ktdHJ1bmsKKzQ2NTMwIDhhYzYwM2U1NzBhMDU1OGY5YTI3NTcxNDU2ODI2MTg5NGE5MTcxYWIgbGVnYWN5LXRydW5rCis0NjUzMSA1YTEyYzBjNTE4M2U4OGEwNWZiOTAzNWNkODI4NmEzYzliMDJiODE1IGxlZ2FjeS10cnVuaworNDY1MzIgNDhhNmFmODdmM2U4NjJhOGIzMzc3MDgyMzVkMTQ2MjAyMmQ1ODkxNSBsZWdhY3ktdHJ1bmsKKzQ2NTMzIDNmZTNjY2RmMDE1NTUyMTYzYzRjOTFhMWU5NDZjYjExMTZiNmFiMGIgbGVnYWN5LXRydW5rCis0NjUzNCBhNTI5OGYzNzFiZTdjZDJhZDkxOTQyMjIzMDM1NTA1MDU4MGY4OWIxIGxlZ2FjeS10cnVuaworNDY1MzUgYzNmMmM2Njc2YjA2MWNhNzEyODliZGRjN2NlMDUyMzJhY2Q0Y2ZiOSBsZWdhY3ktdHJ1bmsKKzQ2NTM2IGQ1YmRmZDEyMDIzMjcwODI2N2FkZGM2NDZiZWUzNmEwZTdmYzgwZDMgbGVnYWN5LXRydW5rCis0NjUzNyA3ZDUxMGU0ZjNjOTg4NTA1ZDA2YmM1OTFjNTkwOThlMDU0YmIxMzYyIGxlZ2FjeS10cnVuaworNDY1MzkgNGU0ZTY1M2E4MGJmNGFmNjRhZjA5OWIxNmViMjk4Zjg1OGIxYTI3NyBsZWdhY3ktdHJ1bmsKKzQ2NTQwIDE3MzFmYmRmMDI5ZDIwOWU3NmZhOGI4NTI4ODY0M2ZlYWMyNmY1OGIgbGVnYWN5LXRydW5rCis0NjU0MSA2ZDc5YWNkYzgxMmQyMDEwZDBkMmNlZGYwZmZmZmFiYTczNDMxZjgzIGxlZ2FjeS10cnVuaworNDY1NDIgYTgyZmQ3YjA0NGRjN2E3ZDZkNWQ2OTFhODYxYTI2YmM4ZTJkMDIwNCBsZWdhY3ktdHJ1bmsKKzQ2NTQzIDhkZmJhMDg3ZGMwNzdhNjFmNTBmM2FmNmEyODM0Y2NhMjRkYzM0ZTIgbGVnYWN5LXRydW5rCis0NjU0NCA0OTRjYWI1NjNjMTE3YTEzOWJkYTEzODk0OTk2ZjI4Y2JlNTZkMjViIGxlZ2FjeS10cnVuaworNDY1NDUgOWY4NjJkOWY3Nzg1ZGRhNzUxMGUyMmFiY2QzYmM4OWY3ZDUxNGNkYiBsZWdhY3ktdHJ1bmsKKzQ2NTQ2IGVjNWRjOGE0OWVkZmI2NTc0MDFkYjVjMjExNjkzZDdjYTk0YjZlY2EgbGVnYWN5LXRydW5rCis0NjU0NyBjNDUwMWZlZmQzMjRmYjQzNjNjOTQ1NmY3ZmJmNzJkMmM5MDY4NDEzIGxlZ2FjeS10cnVuaworNDY1NDggNTEwNjgyYWM1ZTg5ZGQ1YjY1YmQ0N2I4YWM4ZTBlZmMyYzY0MzViMyBsZWdhY3ktdHJ1bmsKKzQ2NTQ5IDQ0MTcxMWNiZmUzNDE3MWRhNjc0MzZlZmYxODVjYTQ2MzExMDljYTIgbGVnYWN5LXRydW5rCis0NjU1MCA0Zjg1ODY5NDZjOGY1NjMyYTQ2NTc4M2U0YThmNjllYWMzOGZmMjA3IGxlZ2FjeS10cnVuaworNDY1NTEgMGFiYTYzZmY3ZjczZTM4NjgzZGE1NTVmYzhiNGJjZWZlY2U4MWM3OCBsZWdhY3ktdHJ1bmsKKzQ2NTUyIGQyMDA4YjMxZmQ2MmEyNGQ2YTRmZWUxNTY1YjM1NWVkMDRlMDIxNzYgbGVnYWN5LXRydW5rCis0NjU1MyA5OTU2NGU2MmFlYTkyZGUxNDA4OTJlMTc4MzJmZTIxN2E2M2VjYWIxIGxlZ2FjeS10cnVuaworNDY1NTQgZTExNThlMTk1MWRhNTBmNmVhZGY4ODI0YzRlZTcwNzdiMjQyYzk2ZCBsZWdhY3ktdHJ1bmsKKzQ2NTU1IDEzZmVkZDBkMGYyNmM2NjRlZDU5NjRlNGVhYTc1OGUzZDA0NTllODYgbGVnYWN5LXRydW5rCis0NjU1NiBjNzQ3YWQ1M2UwOWUwZjkyOTQ0YzU0NjM1OGM3ODU0MDRlZDc1N2U5IGxlZ2FjeS10cnVuaworNDY1NTcgMTY4ZWI2ZTE1YjhjN2M5NTFkZDEyMWQ5M2Y4ZDcxZGE5NmFlNjQ3NCBsZWdhY3ktdHJ1bmsKKzQ2NTU5IDdmMWYzNmIzYzlmOWFhYzM5MThlZDZlODZmM2UzYmYxZTg5MTRlOGYgbGVnYWN5LXRydW5rCis0NjU2MCBlY2Y3MTczZTc5ZmY1NjZmNGY5NThiYWRjMTg5ZTU3YjcwZjI4NjBlIGxlZ2FjeS10cnVuaworNDY1NjEgYmIwZDJiOTU1NDM5ZjMyZTQ4MTIzNzA3MDNmODhlNjFlMjI0NjcwMiBsZWdhY3ktdHJ1bmsKKzQ2NTYyIDJmZTMyMzNiZDQyNjEyZjRiMTczNGMxYWU5M2RlMjYxMGYxNTY1ODggbGVnYWN5LXRydW5rCis0NjU2OCBkMmFlNTgwODgwYjRiYmRkNjg1ZWM3ZDkwZjRkMzlmYmY5MjQ4Y2E2IGxlZ2FjeS10cnVuaworNDY1NjkgZjlkMTg0MGZhZDM0ODUyNTQwOTI1ZWY3YWY5YmU5ZjlmYWQ5NzE1YyBsZWdhY3ktdHJ1bmsKKzQ2NTcwIDYyOWViZjdkM2I1Y2FjYTU5ZGJmMGMxM2RjOWE5ZjlhZjY4Y2Y1NWYgcmVsZWFzZTI0LW1haW50Cis0NjU3MiAxYTU2ZGE4NmMxMWE4NzlmYTcxOTUwY2I0MmUyZWZmYTE4YzYzOTNlIGxlZ2FjeS10cnVuaworNDY1NzMgYmFkYzE3MzdkYzgwMTljZjJiMzAyZDUyMDAwNWYwMzU3MTJhMGVjNyBsZWdhY3ktdHJ1bmsKKzQ2NTc0IGYwZjI5MWZhOWI0NjkxODQxZWRlZWU1ZWU1MzgwMDBlZDhlMmNlZGMgbGVnYWN5LXRydW5rCis0NjU3NSAzZmQ4MDI3ODQ1ZjgwMmM5YTBkODgwOGFjNjZmNzRiZDY3MDg2ZDliIGxlZ2FjeS10cnVuaworNDY1NzYgZjUwZDNhNTFkNjQ2ZjMzYmVmZjViNDJiYmU2MDU4NmQ0YzQ0MDJlNSBsZWdhY3ktdHJ1bmsKKzQ2NTc3IGQyNWUyNzljN2VhOWIyNTdjZGM1YTFiMTJhM2Y3MzVkNDlhYjYzMGMgbGVnYWN5LXRydW5rCis0NjU3OCBmODMxZThiYzZiZDM3ODk5MzQ0NzU4YTg1ZjZlMDI3NzUwOTVjNTAwIGxlZ2FjeS10cnVuaworNDY1NzkgNWY0NDJmN2JmNDE5ZTRmYzNjMTIwOTgwMzA3ZDkxYjY2NWMzZTg5ZiBsZWdhY3ktdHJ1bmsKKzQ2NTgwIGUwOTk3ZmZhMzU3MjQ2OGI5ZWEwZWEwY2Y2MmIxNjgxN2NhMTExZjYgbGVnYWN5LXRydW5rCis0NjU4MSBhN2YyMjk1YTc4YWMxMzk1MGJmZmU4Nzg0YmY4NDkyZjBiMmNiYjE3IGxlZ2FjeS10cnVuaworNDY1ODIgNDQ3YTk0YjAzOWRlYjgwY2ExZGE5MzMzYmEzYWM4MTNiODcwYzkzOSBsZWdhY3ktdHJ1bmsKKzQ2NTg0IDQyOGU5Y2JiNDM0NjFlMGVlZmZmMmY3NDMwMDc1YTg0NzUyNjdmZWIgbGVnYWN5LXRydW5rCis0NjU4NSBkYjJkOGFhOWZlM2Q0MjA4Yjk5Mjg3ZjA1M2JmNDhkMTNmYWViM2Y0IGxlZ2FjeS10cnVuaworNDY1ODYgMzAzMWE3MTEwZGE5YTg3NTk3MzJmZjI2MDJmYzM5OTIyMzFhZjk0MSBsZWdhY3ktdHJ1bmsKKzQ2NTg3IGIxZWI0YTY3NDk5ODA1NGE2ZTc1MWExNmUzYTdlYWYzYmU3MmFjMGQgbGVnYWN5LXRydW5rCis0NjU4OCBjZjY3N2U5Nzg4NTJmYTZjZWJlYjA5M2E1MDRlNWQ0Yjg0OGI5MzBmIGxlZ2FjeS10cnVuaworNDY1ODkgMTc1Y2JkZjlhNWZiZDA2NTdmODUxNTg2MGVjNTEwODNiZTQwY2I4MyBsZWdhY3ktdHJ1bmsKKzQ2NTkwIDk5NWVjZDIzMWY3YzU5OGQ1YjQxNTEzMDNmZDMyNjRjOGQwNzI5MzYgbGVnYWN5LXRydW5rCis0NjU5MSBjNWQ1MDg3MmVmZjQ4MmE3MzdlNDkxNGIyYzYyODQxNjdiYTQ0MThkIGxlZ2FjeS10cnVuaworNDY1OTIgYjliMDM2ZjAyMjA3ZTI5YjIyMTUzNDg2NmQ3MGQyZWYyOWQ0ZmQ2YiBsZWdhY3ktdHJ1bmsKKzQ2NTk0IGQ3ZGQ1Mjg0MjdjMGQxNGFhNDNiMGY4ZmFkNTJlYjU1NTM4NmU5ZGUgbGVnYWN5LXRydW5rCis0NjU5OSBmMzdlNjdiZDQzOTMxODRhMWViYWFlZWM4ZDExYjIxOWQ1NTE3OTk5IGxlZ2FjeS10cnVuaworNDY2MDAgMjYzMmJkNTVjMjlmMjU0NGJkOTg3NDE2Y2YyY2Q3OWU2MzU4ZGIyNSBsZWdhY3ktdHJ1bmsKKzQ2NjAxIDc1ZDY4MTE1OTMyOWQ5OGYxNjU1ZGJlMGYyN2U1NjEwZDNmZThmOTQgbGVnYWN5LXRydW5rCis0NjYwMiA2OTdkZDg0OGUxZjEzNjM2ZTU1NDNmZGE1ZmM2MWQ1MDdhNDMzMjlkIGxlZ2FjeS10cnVuaworNDY2MDMgMjFlOGRkM2UzOTQ1NzdjNTgxNjZiNTE1MDEwMmUxMGFiZGZiYTM4OCBsZWdhY3ktdHJ1bmsKKzQ2NjA1IDJlYjhiZTBmODczMTI5NzE2MDc2ZDM2OTQ3ZWUwYWE1Mzk1ODUyMmEgbGVnYWN5LXRydW5rCis0NjYwNyBmOWMzMDFkYzVmYjc0YzhjMmUxOGE1ZGFmMjBkZDA4ZjgyNzQxZDA0IGxlZ2FjeS10cnVuaworNDY2MDggMzgzY2Q5NGMyYTY3ZDM3ZjJiYTFiMWMxNzI2NTBhOWNiNjg0MTc3NSBsZWdhY3ktdHJ1bmsKKzQ2NjA5IDZmOWI1MzZlOTZmNjYzNTNjMWZlOWU3NTUyMzhhOTAyM2UzZTljNTkgcmVsZWFzZTI0LW1haW50Cis0NjYxMCA5NjZlNzQ3MGZlMjM3MzMzYjRlMGVmMWQ1NGM3OTUyODA0MDlmN2Y4IGxlZ2FjeS10cnVuaworNDY2MTIgMmI1YTlkYzQ5MDVjOTM5YmQ0ZDNkNjQyZTBhNzcxMjNmMWJjNzVmNCBsZWdhY3ktdHJ1bmsKKzQ2NjEzIDY0YjkzNzlmYTgwZGIwODg0MTM1OWQxZWE0Mzg4YzYyZTIzNmE0ZGIgcmVsZWFzZTI0LW1haW50Cis0NjYxNCA0NjQyNjVjMWQwOGIxY2E2N2Q0NTZmODhlYzU3NGMwM2M3Mjg3ODFlIGxlZ2FjeS10cnVuaworNDY2MTUgMzQ3M2ZjZjBiY2VlODQ2MWY2ZjY2ZmQ2NjYwNWZkYmVkODdkNjc3NiByZWxlYXNlMjQtbWFpbnQKKzQ2NjE2IGFhYmMxMzYwMjQ0MGFmM2U2ZjhiNTBjY2VkMmM0YjVlOWRlMDMwNzMgbGVnYWN5LXRydW5rCis0NjYxNyA4NTU5OTNiMDlmZDkyMDgyYjQyYTdkNjU1NTY5MGYyYmU5NDBhYTNlIGxlZ2FjeS10cnVuaworNDY2MTggMzJmNzA2ZmQ0NTAzZTk4OTBlN2YxMWJjODQ0ODFjZjNiZDM3YjUzYyByZWxlYXNlMjQtbWFpbnQKKzQ2NjE5IDk3MDUyNmMxYTdlMmZmMzY0NGVmMmMyNDU2MzMyY2JmYTQ3MmEzYTggbGVnYWN5LXRydW5rCis0NjYyMCAxMjlhYjg0NmE3MWZhZmY2MTIzYzM1NWVkMDU2MmM3ZTMyZWYyOGNjIHJlbGVhc2UyNC1tYWludAorNDY2MjEgZDQxNDBmNzlmMWM3MDc5OGEzMDEyNDNmNjRhYTA2YWEyZDY1MWU0ZCBsZWdhY3ktdHJ1bmsKKzQ2NjIyIGY3ZDQyM2MwYmNkODZhM2IwM2JjOWI1OTY0NjAwMDJkMzMzYTQ2MDkgbGVnYWN5LXRydW5rCis0NjYyMyBmMGY1ZGNhMjk5OTA3YTQ4MjNjYjliOWZiYzA1NDkyZjMxNjYzMzdhIGxlZ2FjeS10cnVuaworNDY2MjQgMzQ3MTRlNDBkNDY1NmRmMDI3Njg2NjYxNGJkZWIwNmIyMzA4NGMwMSBsZWdhY3ktdHJ1bmsKKzQ2NjI1IGQxZmFjYTRmMGI4MDI2MTI1YjFmMWQyMjkxZjc1OTkyOTA5NGJlYWMgbGVnYWN5LXRydW5rCis0NjYyNiBhNDY1NDc3MWU1YjMwMTQ0Y2I4MThlODYwZDAzODQ4YjA1MGI2Zjk1IGxlZ2FjeS10cnVuaworNDY2MjcgYmVmMDIzNmQ3YmZhNmYxMzZlM2Y1NzhlZjU1MmQ1ZGMwODM3ZDhkNiBsZWdhY3ktdHJ1bmsKKzQ2NjI4IDRlYzk0MmNmOGM5MmVkNzZlNDE0YWE4M2MyNTY0YTM2NzE1NDkxNjggbGVnYWN5LXRydW5rCis0NjYyOSA4MDZmM2UxNDExOWQ3N2RjODNmZDc2MTYwYTQyMjQ4NTk0ZmVjNWU4IGxlZ2FjeS10cnVuaworNDY2MzAgNzIxYTdlYjIzZWJmOWMwOWRjYThiN2MzODMwMmFhNzExOGFmZTNkZSBsZWdhY3ktdHJ1bmsKKzQ2NjMxIDE2MzE4MjQ5YWEzMzI0NjM3MzIwYmUzNDVlNjE0MmYyN2QyZGQ1MTggbGVnYWN5LXRydW5rCis0NjYzMiAyNDhkMTA2Zjg5NTJlZmQ0ZmQ3MWJjN2I5NDY2NjdmNDhmZmEwOGVkIGxlZ2FjeS10cnVuaworNDY2MzMgMDdhY2Y2ZmE1YWEwZWRmZmVlYjFlMDFiNmU4YjFkZGZhZjU2MTc0OCBsZWdhY3ktdHJ1bmsKKzQ2NjM0IDNhYWRjNmRjNGIxYTY0MjA1NWFhZThjMDRkYTA3MWQ1MWZmMGFjOTkgbGVnYWN5LXRydW5rCis0NjYzNSA2Zjc0MDRmM2ZjNTc2NWIzN2QyYTUxMzczMjQzYzY4YzcwNDMzNTdiIGxlZ2FjeS10cnVuaworNDY2MzcgNTcyMmYxMTJkNWRhNTRiZDA1YjEwYjVkZWQ0YWUwZjdlMDgyZDZlNyBsZWdhY3ktdHJ1bmsKKzQ2NjM4IDgyMDcyYThmNTI2NzRmMDM1NGY2Mzg1NGY1YzBlZjY4OGU3MTQ3MTggbGVnYWN5LXRydW5rCis0NjYzOSAwN2U1MDNlODU4ZWZlMjdkNGIwODMxMjJmODNkY2M2YzBlMjE1ZjA5IGxlZ2FjeS10cnVuaworNDY2NDAgMGIyYjA3NmU1OTA4ZWEzYzEyMzRiYjc2NTM1Mzg1MjFiYTQ4NzJjYSBsZWdhY3ktdHJ1bmsKKzQ2NjQxIDE5NDMwY2RmZjJiZDZhYTkxZjI5OTkyY2VjMDhmMTQ2ZGJjMDA4NTkgbGVnYWN5LXRydW5rCis0NjY0MiBhMTE0MDAzYWEzZDNlYjA3MTMzNDQzYjFiYmFiYmY5NzFiMGYxMmU2IGxlZ2FjeS10cnVuaworNDY2NDMgNzIzOWExYTgwNDg3OTAwYTNiZjExZDZhZDgwMjY4N2Y3YTRiZDViYSBsZWdhY3ktdHJ1bmsKKzQ2NjQ0IDQ3MjJkMzdmYWExNDM3OGI5NGFkZTMwNjJiZDI4NTU5MWE2MjczYmMgbGVnYWN5LXRydW5rCis0NjY0NSBlMDBlNjhkZDFkZGZhODYxYTc5Zjc3NTI1ZGM0ZGYwYmI0MTE4Zjk4IGxlZ2FjeS10cnVuaworNDY2NDYgNWVjODk3M2RkMjIxMzkxYjlhYzU4Y2NiN2U4MDk3Yzk5NTA4NWI3MSBsZWdhY3ktdHJ1bmsKKzQ2NjQ3IGRiNzkyOTc3MjYzYWNlZTZmMDRkNThkMWE0NDMwNTg3MTQwZGFmYzQgbGVnYWN5LXRydW5rCis0NjY0OCA5ZTBiMDUwY2U0NmYwNWMwZTc3ZTM2NTk4ZDc1MGE4NDkwNTIyYjg1IGxlZ2FjeS10cnVuaworNDY2NDkgMjE5NjliNzFjMzZkMDcyMWNhZThhMzYyODQ3YTk3YzU3MTgxOGY3MyBsZWdhY3ktdHJ1bmsKKzQ2NjUwIDVkZmIyMWEzN2YxOWZhZjkwYjVlNTE1MGNkNjc3YWVhNTU0ZWFjYzkgbGVnYWN5LXRydW5rCis0NjY1MSA3ZDMxZDAzMWY4ZTEzMzUwOWFhMTE3ZmU0ZWU1YjIzMDljMWQzY2U4IGxlZ2FjeS10cnVuaworNDY2NTIgOTEzZTVlODRmYWRlNzZkNjRiM2I5OTgxMDhmZjUxM2U0MTRkYzQyNiByZWxlYXNlMjQtbWFpbnQKKzQ2NjU0IGYxNmQ0NGQzMDNjZjg0MDA5ZTQyOTA0ZjVmODUwYTBmOWNlMjA0YjMgbGVnYWN5LXRydW5rCis0NjY1NSBjNDU4N2E1ZjVlOTRlZTZjNmFjYzE4NTNiZWI0NGUxMWE5ZDliNjZlIGxlZ2FjeS10cnVuaworNDY2NTYgZDAwNzNjNmY2ZjU2ZTJkODE1MzUzMjA3ZjQwMWNkNGFjMTk1OTg2ZSBsZWdhY3ktdHJ1bmsKKzQ2NjU3IDFjMjNlOTVhODBhMmVmODk0YzQzOWQ3ZmJmZTY3ODZlZGVhYWY4YzMgbGVnYWN5LXRydW5rCis0NjY1OCBiMDBjYmIwOGUwY2MxMWJlZTBkZWFiNDU3YTlmYTRlM2E0ODM3YWFlIGxlZ2FjeS10cnVuaworNDY2NTkgNThkZTYxYmVkZGZjZWYzZmYyYTNlM2YxOWUwY2E2ZWRmODA5YWNmNSByZWxlYXNlMjQtbWFpbnQKKzQ2NjYwIGMwNWVmMDhlMWJhOTRkOWNhMTc5ODY5MzBiYmU0MDc5MmIwYzBkNTggbGVnYWN5LXRydW5rCis0NjY2MSAyMzc0NTYwNjJiODBmNzM2Y2I4NzIyMTMzMWM5MzUyYzRhMDk5NmZlIGxlZ2FjeS10cnVuaworNDY2NjIgY2IzZjUxMzhlY2I1NzgwYTRmZGI1YzBhY2ViNDhlODZmMTdkYTU0YiByZWxlYXNlMjQtbWFpbnQKKzQ2NjYzIGM5MDhhYWE5MWVhZTE3ODdjMzE1MzQ3YTU1ZTRmZDNhNTgxZjU3ZGIgbGVnYWN5LXRydW5rCis0NjY2NCAxYzlkODA3N2VjZmIyMWY5Y2ZkNzY3NDg3OTYyYTE1OWJkMGEyNjY3IGxlZ2FjeS10cnVuaworNDY2NjUgNWFkYmE3MDk2MDZiM2E2NGQyMmNhOWIyYjhkM2Y1MWVlNzg3Zjk0ZiBsZWdhY3ktdHJ1bmsKKzQ2NjY2IDk5MDY0N2UyYWJjNGIyNDUyYjI1ZTg3NzhkOTNkY2YzMDRmM2IzM2EgbGVnYWN5LXRydW5rCis0NjY2NyBhNGI1OGFiNjUyMDIzYzU4MTI5MDUzNDhjN2NjYTE2NDhhZDJiZmE5IGxlZ2FjeS10cnVuaworNDY2NjggZjNhNjc5OTg1ZTBkNTQ4ZGYzMDdhOTlhNzRhNDVmMWIwMjE3NzViNyBsZWdhY3ktdHJ1bmsKKzQ2NjY5IDMwNjA1YmY5NWVmOGI4YmU3YWIwN2MwNGJkMTQwMTVjODhlNjU2NDcgcmVsZWFzZTI0LW1haW50Cis0NjY3MSAwMmQ0NzU0MDVlM2I1ZjI5MGI2MDRhZjAzMzMxMTEwYTVkM2VmODFiIGxlZ2FjeS10cnVuaworNDY2NzIgNjY0OWI1MWUyNDVmOTI1ZGM3NzQxMTAxYzA5NzU1ODYyN2E5NmNjMyBsZWdhY3ktdHJ1bmsKKzQ2NjczIDIxNzdhZWNkOTFmY2JhYjNkYThkNzczMGE1YTYzYTNhMTk3NmNhNjEgbGVnYWN5LXRydW5rCis0NjY3NCAwODU1ZGExNGE4MjBjMGYxNmE1ZTdiY2I5MGE2ODUxNDQyOWFlYzEwIGxlZ2FjeS10cnVuaworNDY2NzUgOTYzOWNiMTNiOTQwNTMwZDEzOTBhN2VkNDYxZjcxMDQxN2UwMDg2NSBsZWdhY3ktdHJ1bmsKKzQ2Njc2IDY4N2FhY2Q2NGJlOTY2OTYxYWQ3NDcxMTgwMzYwYWUyZTJiZDc3OWMgbGVnYWN5LXRydW5rCis0NjY3NyAwZGNiOTIyOGNiM2ZkODU1MDI0MGQ5YWQ5NDQ3YjFkMTQwZWIwMjA3IGxlZ2FjeS10cnVuaworNDY2NzggNjU0ZjAzODNkYmNiMmUzY2NhZTk4MWMxMzgyYzU1NTE3MjFiNGNkYiByZWxlYXNlMjQtbWFpbnQKKzQ2Njc5IGM0YjQ0MjIyYTU5OTRiMDdhY2Q0ZTllNzY4ZWEzNjkxZGZkNmVjNTQgbGVnYWN5LXRydW5rCis0NjY4MCAxOGRlNTBiNThmYjFkNzhmZmNlNzYxMjE1MWE4N2U3NjFkOWUzMDBkIGxlZ2FjeS10cnVuaworNDY2ODEgZjAwNTE4YmI1YjQzMzU3NzVjMDZlMjY5YmQ1NGY2YzIyMzJlOGQyZiBsZWdhY3ktdHJ1bmsKKzQ2NjgyIDgwYTYyNzM0MGM5ZjIzZDc5ODA0N2ZlMzhjNWU4MWYzY2YwZjU3YmQgbGVnYWN5LXRydW5rCis0NjY4MyAxMWY2NjczMTU1NGRiYTc4MGU1MDUwNTQ3YWMxYzVhMGNjYTdkMjk5IHJlbGVhc2UyNC1tYWludAorNDY2ODQgYTYwYWRmMGNiMmZkNzRmYmM3ZDkyNGQzMzY4YzIzMGVmOWU1NTdmMSBsZWdhY3ktdHJ1bmsKKzQ2Njg1IDcwODFlOGQ1MzI5OGVmM2M0NDlmY2Q3YTkyNDMxZDZlYTQyMGI5NjcgcmVsZWFzZTI0LW1haW50Cis0NjY4NiA2YWU0MThlNGIzNmE5YTY3Y2NkZTcyM2JmZGEyMDk1ZmRiNDZlNjk1IGxlZ2FjeS10cnVuaworNDY2ODcgMWUzOGZmODFjOGE5NTJlZWJmN2NiYmYzNjcyNTc4NTJhOGMwM2VmMiBsZWdhY3ktdHJ1bmsKKzQ2Njg4IDgyOGMxMDZkNWVjYzlmZDc0Y2QxNmY4YmZkMWE5Mjg2YjE2ZGMyMGEgbGVnYWN5LXRydW5rCis0NjY4OSA1ZmJlZmI1YzhhMjNlNjljZDAyYTZlMzk5MzVjNTFjOWMyMzk4MWUxIGxlZ2FjeS10cnVuaworNDY2OTAgMGRjYjYyZDZkOTlhMjhhNDgwNzY2NGFhYjJjMzU4OWE1Njk1MDdhNyBsZWdhY3ktdHJ1bmsKKzQ2NjkxIDk4ZTgxYWY0MDAwN2VmZDE4ZWE2NjZlYzRkYTVkNTJhZDE2ZjRmNjcgbGVnYWN5LXRydW5rCis0NjY5MiAxYzAxNmY5Y2E1YTc0YWQxMzczNmNiNzAxM2RkY2ZkMmYxMzgyZWQ1IGFpbWFjaW50eXJlLXNmMTQ1NDQ4MQorNDY2OTMgMjgwYjhlYWVlMWMwMzRkZGEwNWFjMmQ4NzJiMDZhMjhjN2IwMmFkYyBsZWdhY3ktdHJ1bmsKKzQ2Njk0IGM5ODlmYWZmZjNkYzZjNTJkYmEyZjE0OGIyMzIxMTIxMTc0ZDk5YzEgbGVnYWN5LXRydW5rCis0NjY5NSAzMTFmNzUxYWNhN2EzMzJkODgxNWIwNWQxNDBmYjk0NmM3ODhjM2RjIGxlZ2FjeS10cnVuaworNDY2OTYgY2IzYjQzOWMyOWNjZmRhOWZlMDgxZjk1MTk3NmRiMWQ2MjQ4MWZkZSBsZWdhY3ktdHJ1bmsKKzQ2Njk3IDkzMWFkMDZiZWM1NjE5NjlkMTQ0ZTVhOTAzZWRkODhlYWYzNDhhYjMgbGVnYWN5LXRydW5rCis0NjY5OCA2MjVjMmQ5OGExZjgwNWQxNzkzN2MzNmE4MzlhNTU5ZWQzMDczMGU5IGxlZ2FjeS10cnVuaworNDY2OTkgN2JmYWZkZWZmZWUyNjA5NTZlYzI4YWZkZDNiZjE1MzZiYTdkMjgwMyBsZWdhY3ktdHJ1bmsKKzQ2NzAwIDFlOGI1OTM4OWUyZTEwYjY4MjY4ZTk5MzE4ZjE0YTdiOThhN2JkMzYgbGVnYWN5LXRydW5rCis0NjcwMSAxZTg1NjU3ZjA0NzQwZDYwYjY5N2RmMjJiNDJjZWZlY2ZjOTZlMjI5IGxlZ2FjeS10cnVuaworNDY3MDIgM2EzNmQ1ZjViMTBmZDMwNGU1MTZmOGM5ODg4NjU0YjIwZmIyYjc5MCBsZWdhY3ktdHJ1bmsKKzQ2NzA1IGVhOTk2NmM4ODY1NzQyZDI4MDQ2YTgzZjQxODc5ZGViMmYyYmNmNTEgbGVnYWN5LXRydW5rCis0NjcwNiAwY2QyMjczYmMzYjE3NTZjODhjM2Y2YjY5MjNjMThjZTk2YzU1NDQ3IGxlZ2FjeS10cnVuaworNDY3MDggZGVmYjJiOTkzNDM0ZmYxZjY2MTk3NWQ2Mjk4M2Y3ZGYwZjFjYTgxMSBsZWdhY3ktdHJ1bmsKKzQ2NzA5IGEyY2Y4NzFiNzgwMGU4ZGRjMzczYTk0MGViNmMzNTcwMWI2NTRlZGYgbGVnYWN5LXRydW5rCis0NjcxMCAzZmIzODM1MWRkMzljYjczZTVkMmJiM2I0Njc1ODhmMTM2Mzc1ZWFiIGxlZ2FjeS10cnVuaworNDY3MTYgMmFmNTc1N2RlN2IxZTlhZDY0N2E5OTJmMmU2YzczMzI0YzgyODZlZSBsZWdhY3ktdHJ1bmsKKzQ2NzE3IDFjYjJlY2U0YjllMWRlMGVhYmQzOWQ2YWU0MWEyMGZlNDkzNjEzZjggbGVnYWN5LXRydW5rCis0NjcxOCBhMzY2OGU5NGZjNmQ0ZDQ3NzJiNGMzNDAzNGJlNTE1M2EyMDA5ZjQ0IGxlZ2FjeS10cnVuaworNDY3MTkgMWI0N2QwMzBjM2ZhZTVjN2Y1YWIzYjA2YmRmNzZmYjMzYTJlNjlhMSBsZWdhY3ktdHJ1bmsKKzQ2NzIwIDc3MDRmMzc1NDFmNDIzMWZlYmQ2MDJjZTMxMzI5M2Y1NjIzNDBkMDkgbGVnYWN5LXRydW5rCis0NjcyMyA4NzJlOTkxZjliNzAxNTQwOWVmNTdhNzlmMjM1YjA3NzYyYzhhZjYyIGxlZ2FjeS10cnVuaworNDY3MjcgMTEwMGI1MmM1NWZkZmUzNjQ1YmYxMzllNTYwNGZjYWNlN2U3YTQ3MCBsZWdhY3ktdHJ1bmsKKzQ2NzI4IGEwNzYxY2ViODYzM2E4MWEzNGQ4NGY5MGZkM2M2YzZkOTJkZGM2YTUgbGVnYWN5LXRydW5rCis0NjcyOSAwYjRlYWM0MDUwYjgwMDI4YmYyZjU1YTBlYzE3OTA0MWJmM2ExMDE4IGxlZ2FjeS10cnVuaworNDY3MzAgZmMzYmNkNGU0NGI5NjRhZTcyODAyNjlkMmU5MTI4NDBmOTU2ZTNjMSBsZWdhY3ktdHJ1bmsKKzQ2NzMxIDBlN2JhZmIxYjgyZjljMWExOWQyN2I4ZWE3Zjc4YzhkMjZkNDgxY2QgbGVnYWN5LXRydW5rCis0NjczMiA3ZDMxYjY2OTJhYjc0ODAxZGViMzVjNjU2MTA0MjA3YWZhMDIxYmIyIHJlbGVhc2UyNC1tYWludAorNDY3MzUgZTNjMDhmMDY2ZWI4MGQ3ZTgxZWQxZDg5OTBkMDM4ZDEwNTU1OWYwMCBsZWdhY3ktdHJ1bmsKKzQ2NzM2IGZjYmY2M2M5YjRmNmZjZWRhNjI1MjU4N2JjMWVkZmVmMTIzYmZkNTkgbGVnYWN5LXRydW5rCis0NjczNyA0YjBhM2QwZDg1ODQxYjc1MGY3ZjMxNGI3ZTdkMzNkMGU5YzY5Yjc0IGxlZ2FjeS10cnVuaworNDY3MzggMWUwNzA0Y2Q5ZWU4MWFhYTU4ODBmNWE4ZGIwMjNmYTRjOGIwZTcxNyBsZWdhY3ktdHJ1bmsKKzQ2NzM5IDVjNThmZGE5NWFhNWEyYmZkNDIxYzdhMWVkNGNiY2U5OGM1NDM0ZDQgbGVnYWN5LXRydW5rCis0Njc0MCBmMjhmOWMxNWUyZDBmOGUwMjMxN2U4NzBlNjZjNjVkNjY5MDEzNWM3IGxlZ2FjeS10cnVuaworNDY3NDEgMzU4MWQxZGM0MjUzMzcyMjMwNTk2ZWM4NDlhNmJmMGU2MTI1ZDE3MyBsZWdhY3ktdHJ1bmsKKzQ2NzQyIDFkMjM5YzdlOGQ2MDc1YTMxODYwMThhYjZiNGZhNDBkZmRhZDFiMzIgcmVsZWFzZTI0LW1haW50Cis0Njc0MyA3MmM4ZjE4ZTAzMTE4M2RiZTlhN2ZjZTlmZTY2MDMxMTFkOTYwOTliIGxlZ2FjeS10cnVuaworNDY3NDQgNzYxOTIxNmJiYzE5NGMzNDMxZjgzNzA5YWFiOTZmOWE5YWZiYWJlYyByZWxlYXNlMjQtbWFpbnQKKzQ2NzQ1IGQzZDk2MWYzODhiZTJiMDNhZjY0YjE0OGM3M2YwMmY0NjczY2VhN2YgbGVnYWN5LXRydW5rCis0Njc0NiBlMmJhNWFlNGI4MTNkOWZkMmMyZDI2OGQ4YmFmNmMyNjg0MjU1ODUxIGxlZ2FjeS10cnVuaworNDY3NDcgZTBkMjk1ODYyMTJhMzc3ZWRkOTIyNzM2OGY0YzNjNmQ3MGNmMzIxNSByZWxlYXNlMjQtbWFpbnQKKzQ2NzQ4IGRlZTczZmE4MTEwZjNlYWQ0MzAwZjkxNjQ1ZjY1ZGI4YzhlM2U0NWUgbGVnYWN5LXRydW5rCis0Njc1MCAxOWZkNjE0MTk0MGQ1YjBhN2I0ZmIyYzQxMzg5MTJhYmIwMjgzZDk4IHAzeWsKKzQ2NzUxIDI0OTMwZTNiNjA2MTlhZWMzMTljZGYzM2IyY2Y0MGJjOTMxMTgyNmIgbGVnYWN5LXRydW5rCis0Njc1MiAzNjVjYTA0ZDA4NTY0YTA5ZDFjZWJhYWRhZTc0NWIwOGE0Nzc2YzY4IGxlZ2FjeS10cnVuaworNDY3NTMgMDk5OTdiMmY2M2EyYzNkYWIyZTZjZDdlYTljYmZiZmYxYmZhMWIyZiBwM3lrCis0Njc1NCBhMTljMjBjNWU1Yzc1NjYyMTU3YjExMDJlMzZjMDdkMWUyYzAxYWI5IHAzeWsKKzQ2NzU1IDZiYTdkNDY2Nzk4NjdiZjlkNGFiNmVlOThlMTU1ZmNkMDExN2NhZDUgbGVnYWN5LXRydW5rCis0Njc1NiAwZTMxOTY2NzQ1NWMzNWM2MjIyNDM1NWIzNzI5M2VkZTRlNTAyM2I4IHJlbGVhc2UyNC1tYWludAorNDY3NTcgNWJjNzI3MmI4MWU1NDdkZmNjZWEwYjBmZmI4MDM1MjA5N2NmNzU1NiBsZWdhY3ktdHJ1bmsKKzQ2NzU4IDkzNWFjMjJmMGIzZjAyNmU1M2Y4ZGJjN2NiMWJjOWQ2NTEzNzE2MmUgcmVsZWFzZTI0LW1haW50Cis0Njc2MCA1ZjE5NTQ0M2UwMGFhOTA5YzkwNWZkMTUxYzM5ZmNlNzhlZGQ4NDkyIGxlZ2FjeS10cnVuaworNDY3NjIgNGU3OThjYWEwODJlNWNkZDEyYTJkN2UxZjcyZmNlZTFiN2JjYzA1OSBsZWdhY3ktdHJ1bmsKKzQ2NzYzIGMyMDM4NDA1N2EwNmMyN2I3MzYyNTVhMGI4MmI4NGQxOWRhNTY1OTQgbGVnYWN5LXRydW5rCis0Njc2NCBjM2M1MmYxNTk5OTlhZTk0NjBhZmRkYjRkNjM3Y2MxMjIxZjkwZmE5IGxlZ2FjeS10cnVuaworNDY3NjUgZWNhNGZlMTMyOTQwYmQzYzUyYWE2ZGIxMTBlODllYjQyMzU2MTJjMyBsZWdhY3ktdHJ1bmsKKzQ2NzY2IDJlYTI2M2I2Mjg5NzJlNDUyNzNmZDlmZGViOGJlMWVlOTY2NWI2MjQgbGVnYWN5LXRydW5rCis0Njc2NyBkZWJjOGQ3ODNmODY5ZTVhOGM4YTcyOThmNzI0MGNhYzFjZjlhMjc3IGxlZ2FjeS10cnVuaworNDY3NjkgMGExYmFkMzJhYmZlMzlkOWEwZGMwYmIyNmNjNGM1MGY1NmViODBlMSBsZWdhY3ktdHJ1bmsKKzQ2NzczIDY3ZjQzMGQ5MmIzOGU1Y2E0NGMyMmM3NjNhNmY0MzE3ZjlhZmY4MzQgbGVnYWN5LXRydW5rCis0Njc3NiA0NjU5OWZjNDg2ZThmZGFhZjIxZjhiYjgzYjlhODhiNGRmMjA0ZjA1IHJlbGVhc2UyNC1tYWludAorNDY3NzcgYzU3MzIxYzg0MjI2YzkxNjc5NmE4ZWQ1YzA3ZWMzYjVlZDE2YjI2ZSByZWxlYXNlMjQtbWFpbnQKKzQ2Nzc4IDc3YjY1ODlmYWRiOTdkODVlMGM2NDVjODE1Yzk4OWYzNGU1NTY0YmYgbGVnYWN5LXRydW5rCis0Njc3OSA0ZWYxYzY4NWJjYmRjZTQ0NDNiMzI4YWUwN2M5Nzc3MDM5ZmYzMGY1IGxlZ2FjeS10cnVuaworNDY3ODMgMDVhNDljODk4NWZiMDlmNDc1YzdhMmE5ZjQzYjlkMTgzYTk2OTk3NiBsZWdhY3ktdHJ1bmsKKzQ2Nzg0IGFjMjVlZWU5MDI1NDE3NTEyMWJjZWExNTc2MzVlOWVkZjFmOTJkNzYgbGVnYWN5LXRydW5rCis0Njc4NSA3MmUzN2FkYTQxNzA3MmZiMWExMzAzMDhjZThlMzBlM2YwYjdhY2FjIGxlZ2FjeS10cnVuaworNDY3ODcgNzBhYWMyYjkzZTA5YTNhNDg5MDBiMjViZDNiYzhkNWJiZWNlYzIwZCBsZWdhY3ktdHJ1bmsKKzQ2NzkyIDZlOGQ5OTcxODE3MDBkNDFjMjIzMjZmY2QzNDk4MjhlNmMxY2I5ODcgbGVnYWN5LXRydW5rCis0Njc5NCAxMzVkMTU4NmIzNWQ1NGJhYzgxZDcxZmE0NmUyZDZhNzk4NDgyMzljIGxlZ2FjeS10cnVuaworNDY3OTUgMWNhZmJjZDdmNTVjY2NhOTFjNDA4NWIxZjVhNmVhNWFmOWFmMmFlNSBsZWdhY3ktdHJ1bmsKKzQ2Nzk4IDc2YWQxMThmZmUzYjVmODU2Mjg2NzU5ZjBlZGM3NTNkNDhlZjdiNDggbGVnYWN5LXRydW5rCis0Njc5OSA1YTc0MTkzNDI5ZjA2NGUxMjVkZTkzNjJjYzE4NjM2NDRkOGJhNDJhIGxlZ2FjeS10cnVuaworNDY4MDAgMDdmMjQxOTdiODdjZDcwZDIxMTY4YWYxYTExNGM1ZjM2Y2FjZmM0MCBsZWdhY3ktdHJ1bmsKKzQ2ODAxIDI2YTk3ZTViZGYyMTIxNTExMDNhN2I4MzBhNDUzN2VhMTc0NjkxYTEgbGVnYWN5LXRydW5rCis0NjgwMyBiMTI5YTUwMjcxYWRmZWM3OTIwNjIzNmNjMmVjNTM5NDRiZWZjZTU0IGxlZ2FjeS10cnVuaworNDY4MDQgMTgyOGFmNWRjYzk5NDRhMmY3ODU1YjdmY2IxNjg2NGI3OGIzYmE5ZCBsZWdhY3ktdHJ1bmsKKzQ2ODA1IGJhNmVlYmY3YzcxOWRmYjU4YTVlMzk1NGE4Y2U1YjI0YmZhMzg5MDkgbGVnYWN5LXRydW5rCis0NjgwNiAxNmM3OThlOGVhZTMyN2I4NWE0NjBjYmJhMWNlYmZiNDQxOTc2MzkwIGxlZ2FjeS10cnVuaworNDY4MDcgNDkzZmI1Nzc5MzJmMmQ4ODMxYTQzYjUzMTljNGVjOTdmMjhhMTdlOSByZWxlYXNlMjQtbWFpbnQKKzQ2ODA4IDQyZmU2ZGUyNDYwMmZkNDBmNDJlMzkzZWQxMzQ0MWNmNTQ5YTNlZTcgbGVnYWN5LXRydW5rCis0NjgwOSBhZDVkNDczNWJlZGM4NDZjNmFlZjIxYzEwMmVjZGJjY2NlYTVjMzIxIHJlbGVhc2UyNC1tYWludAorNDY4MTIgNjc0NTBkYjI2ZjgxNjdlNzhiYmMzZTA1MDk3MDgxNDdkNTU3Y2JlNSBsZWdhY3ktdHJ1bmsKKzQ2ODEzIGUxNWZhZmE0MTA3ZDIwZDZiMGQ0MTlkZmI3YmYzZGQ5YjJkZTg1YzMgcmVsZWFzZTI0LW1haW50Cis0NjgxNCAwOGIyNGM4OGQ1MTkwMTBmNTEzM2I4Mzk0Mzg3YzEyNzZlNDg0ZjVlIHJlbGVhc2UyNC1tYWludAorNDY4MTUgZTdkMDg0Y2Y2NWJiOWI0MDg0MGNlZTkzM2RhZjFiYmM1NTBiYTQzOCByZWxlYXNlMjQtbWFpbnQKKzQ2ODE2IDQ1NGFhMGVjMGViN2IzYTZjYjM0MWNjMjEwMzA0NmEzMjQzYWI2ZTEgcmVsZWFzZTI0LW1haW50Cis0NjgxNyA4MjMzMWYxMWExNTYwYmZlM2NlZjQxOTgxYmJhOTRhNGQ1ZmRlMGVjIGxlZ2FjeS10cnVuaworNDY4MTggZTJkMmRjNTA2NTI4Nzc5YmJkMjVkNjk1MDI0MWFkZDEzM2E3NjBhMCBsZWdhY3ktdHJ1bmsKKzQ2ODE5IDQyODA4NTI2NTExYzliYjQ5MjBiMWUxMDcyMjFmOGVhZDE3M2VmZjYgbGVnYWN5LXRydW5rCis0NjgyMCBiMjNlZWI4MDI3ODA1MjNiNjU0OTZlNGJiZjVlYTZjODI2MmIzZWE2IGxlZ2FjeS10cnVuaworNDY4MjEgMzEyNTA5OWIzNDk3MWMzMGM3Njk3ODNlZDM5MDBhNmU1MWNlYTIxNiBsZWdhY3ktdHJ1bmsKKzQ2ODIyIDJkZDE5NzAxNDYxMjJhZGVjZWM4NzY5MjZkMjQ4YjU1MjY1YWFlODEgcmVsZWFzZTI0LW1haW50Cis0NjgyNCBhYTVhMWJjYTI4ZGQ4OGNjYzJkZWMxNGI1OWU0M2E0ZDgxZTY3MGY4IGxlZ2FjeS10cnVuaworNDY4MjUgY2Q1ZjJjNWJhYjY1M2I1NTczNmU3NzNlYWUzODVhYjQzMmMyZjhkMSBsZWdhY3ktdHJ1bmsKKzQ2ODI2IDUzOGNmMTg4ZjhhNmNiYzIyMDhhNTIyNjJlYjlhYmRiOWYyNjA2NDEgbGVnYWN5LXRydW5rCis0NjgyNyBiYzA5MTE4MWI4NDEzOTU1MDdhNzc4MDIxZjQ1OTVmMWIxZTRiMjRjIGxlZ2FjeS10cnVuaworNDY4MjggMDE0MjUzNmI1MmI2NGIzYTgzNmE2Mjc4MDc3ZjZmMDViY2U0YmMxOSByZWxlYXNlMjQtbWFpbnQKKzQ2ODI5IGM1YWZkNDQwYTRkMDlkMGRlMGM3NzM3ZTUzNzFjZDJkMzVlNzJlN2IgcmVsZWFzZTI0LW1haW50Cis0NjgzMSA5MjQ0MGRlODY4ZTkzZmVmMTNiMzM4M2JlOWNjNTEwZTk3ZmI0ZGZjIGxlZ2FjeS10cnVuaworNDY4MzQgYTFkZDI1ZWMyZjViYzY2NTU4YzMzODlkYWI1NWIwYmYzMTJlNzk4NyBsZWdhY3ktdHJ1bmsKKzQ2ODM1IDczNjY1ZjZmZWMzMTVhZWNmMzBkY2Y3ZTMxYWY0NjhmZmE3ZDliNDUgbGVnYWN5LXRydW5rCis0NjgzNyA3YjMxOGU5NmY4MGFhOTQ4ZGFhNDBmMWNhMDcxZTk5ZTFiM2EyY2U4IGxlZ2FjeS10cnVuaworNDY4MzggYjhmMjI4NTFjMWZmMWU1OTkyNGM1ZTdiMjY1ODBiOTNhOTAyNjU1NiBsZWdhY3ktdHJ1bmsKKzQ2ODM5IDBiM2ZlMmI3MzRhMWRmZjE0MDY1NWYxM2MzMGM4M2RiNTUzNmU2NDcgbGVnYWN5LXRydW5rCis0Njg0MCBiZjRlNDg1YmVjZjM3NzYyMmIwZmMyYmFlOWUyZWJlZTdjMmNkMzBlIGxlZ2FjeS10cnVuaworNDY4NDEgMTk1YTBkM2VlY2Q0NWViNzQzYWIyMDRiZjhhMmU2MzA3YTFlNjM4NCByZWxlYXNlMjQtbWFpbnQKKzQ2ODQ0IDlkODQ3OGY3MzJkNWFkYzkxZjFjN2RjOGNiMjk5NDBlZmYxYjQ3N2MgbGVnYWN5LXRydW5rCis0Njg1MCA5YTk0NDY3NjczMmE3ZGIwZTQwYmI2NWM4ZGVmNjY1YzMzMjgyODljIGxlZ2FjeS10cnVuaworNDY4NTEgZTgwMDk3YmY3M2I2MGZhZDhlN2YxNDBmMzAzNjVkMTM1NjNhZWNjZiBsZWdhY3ktdHJ1bmsKKzQ2ODUyIGU2MTU3NTVjYTg3MjVmYjBiOWY4ZmNkNzE1Y2NkZDM5Y2I1NmViY2IgbGVnYWN5LXRydW5rCis0Njg1MyAwYThhMzkyZTFmYWVjZjMwZjgxMzUzZTgzMTcyNTBkMzkzOGI1NmQ3IGxlZ2FjeS10cnVuaworNDY4NTQgYWYxNzQyYTgwNDllYzc4ODZlODRkNTEwNWVlZjg5M2ZjMjBmNGIwZCBsZWdhY3ktdHJ1bmsKKzQ2ODU1IDUwMWVlMmEwNWZlYzRiOGZkMGRmNWI2YzI4OGVhYjcyYjM1ZDhlZTkgbGVnYWN5LXRydW5rCis0Njg1NiBhZGYyMDg5MmQ4Y2ZiYzBjZWZmZGM5N2JkYjE3N2YxYWFjOTkzYWJlIGxlZ2FjeS10cnVuaworNDY4NTcgNDkwMjZhZjlkMWQ3OWM0MWEwYTdhYTY0YjJmZWJkYmQxMzQ1M2ZhNCBsZWdhY3ktdHJ1bmsKKzQ2ODU4IGU4NDY0YWZlZjRhNDFhYTlhN2IyZjYxNWMwY2MzMWI4ODBkNzBjYmUgbGVnYWN5LXRydW5rCis0Njg1OSAxYjNiNmIxOTgyYWFjZDAzMTQ4ODhlZmZiODFiYmVkNWM2NTE2NzM2IGxlZ2FjeS10cnVuaworNDY4NjAgYWIyNTNjZDQ5N2QyMTM3NjczMDJiYmViNmEyNWY4OGEyYzAwMDRhOCBsZWdhY3ktdHJ1bmsKKzQ2ODYxIGZjNGFmZWU0MGMyYjNiODU4YTk1OTc0YmMzNDE3ODUxOTM3Mzc1YWEgbGVnYWN5LXRydW5rCis0Njg2MiBhNzg5MzkwZDhlYTdlZGRlN2QwNjM0ZTdjYWE4NDU1YWI3YTg5NGMwIGxlZ2FjeS10cnVuaworNDY4NjMgYjUwYWIyODhhZTI3ZmY0ODk1NzBiZTMxYjg2YTMzNjhjMzg5MWRmNyBsZWdhY3ktdHJ1bmsKKzQ2ODY0IGQ2N2RlZDdhMjkxNGU0Y2YzZjljMTVhMTgyNDcwYWI0MzFhZGUwZjYgbGVnYWN5LXRydW5rCis0Njg2NSBmY2ExZTQyNGQwMjM4Zjg5NTJiMDg4M2Y3ZWI5Yzc3NDQ1NGQ5OTBmIGxlZ2FjeS10cnVuaworNDY4NjYgY2JmMjcyZjQ3OWQxMDdiMzIzZWNhNDA2Mzk2MzJhMDk5ZDg4OTYyZCBsZWdhY3ktdHJ1bmsKKzQ2ODY3IDVhOTk0ZDI2YTNjZjg5NGJhOWExNmVhODg1ZmEwYjdmYzA1YTk5NjUgbGVnYWN5LXRydW5rCis0Njg2OCAwYWNjNTJkM2ZiZjFmNDM1YTNmYzNiZTdiMmJlZTE4N2I3OWY4YzhiIGxlZ2FjeS10cnVuaworNDY4NjkgZTZjODAwYTQ2M2IxMzEyOWQzYzcxODAyY2FhNWQ0MzdkMzE2MWZmOCBsZWdhY3ktdHJ1bmsKKzQ2ODcwIDhiYTk3Y2NiZjkzYTgzZjZlNmJmYTgwNjJlNWRiYmViYmU4NTYwNzIgbGVnYWN5LXRydW5rCis0Njg3MSA2NmNiY2NlNDIyNzhmMjJkMjE0YjY4YTZlYjJlZmVjNzU5ODkzYTVlIGxlZ2FjeS10cnVuaworNDY4NzIgMWZhNzhmZDFlOTMzOTE0NzRmYzg5NTMxNzA5NmU4NWUyZTQ0NzJkMSBsZWdhY3ktdHJ1bmsKKzQ2ODczIDYwZDc5YTJiYzk5N2U4Y2MwYzMzMDQwOGUzMTczMTJiM2I3Yzk5MTIgbGVnYWN5LXRydW5rCis0Njg3NCAxYTExYTRhNDlmYjg1YTNmOTZmNGUzNGYyNzBiZmIwZmRiMDc5NDVmIGxlZ2FjeS10cnVuaworNDY4NzUgM2VlZTdiZDlhMGQwNzJiNDNiZGM2ZWQ3MGM3Zjc1MGUyNDlhNmQzNCBsZWdhY3ktdHJ1bmsKKzQ2ODc2IDQxNTcwZjA5OWE0YzNlNjUxZjZiMmQ1N2Q3OWMwOWI2NzA3NjZjMWMgbGVnYWN5LXRydW5rCis0Njg3NyA5MmQ4Y2RjNGI5MGMwMmM0ZDE3NWZhNmE0NzBhNzM3OTg1MTI2NDA0IGxlZ2FjeS10cnVuaworNDY4NzggZjE0YWI3MGMzMjBlNDhmZDJiNTJlMzFmYzdhODdiYzI1MDcwNWU2ZiBsZWdhY3ktdHJ1bmsKKzQ2ODc5IDY5ZTg5YzI5MDQ0ZTJiZGQwZmI5Yjc1NTNiMGY5YjVmOTMyZmE3NzggbGVnYWN5LXRydW5rCis0Njg4MCA0N2Q4ZDE5Y2NhZGM3MDUyYmE4YzJiNTI0NjlhMDFlYzUzMDdiNGM5IGxlZ2FjeS10cnVuaworNDY4ODEgNzk5ODNjZjYzNGMwMjVhYjRhNWU3MWVlODdkN2M5OGYzNDgwZThiMCBsZWdhY3ktdHJ1bmsKKzQ2ODgyIDQ2ZjNlYjQ3NGM4NDJkMGIwMGFlOTI5MWNiMzU3Zjc2MTFlMjlhNGEgbGVnYWN5LXRydW5rCis0Njg4MyBhOTFlNzM5Y2UzMzMyNWZhNGFhZjEwMDI0ZmNkOGEzODg3M2QwOTZlIGxlZ2FjeS10cnVuaworNDY4ODQgMTg5MzA0YzlkMDdlYWRhNGNkNGMyMTkxNzJhYjVlZTU5MGMyZjQ5MCBsZWdhY3ktdHJ1bmsKKzQ2ODg1IDJhYjAzOTRlNmU0OWI0ZjM1M2I4NmIwM2NlZjk2M2Q1YTUzZTZlZDYgbGVnYWN5LXRydW5rCis0Njg4NiA2MThkMDg4ZDk2Njg5Y2Y3ZGRhZTc4M2UyYzRjOGY5Mzg0Y2JiY2NkIGxlZ2FjeS10cnVuaworNDY4ODcgMWRhODQ1NmViZDQ4NzE5YTRlYmQ3ODdlNGZiYjM1NjVjMzAzMDkxNSBsZWdhY3ktdHJ1bmsKKzQ2ODg4IGQ1NzcxYTM4OWI4ZWI3YTk4NTc4Y2Q4MDVlZGQzZTEyNjBmZDUzZDkgbGVnYWN5LXRydW5rCis0Njg4OSAxNzAzZWZkYTU3NzQyZDE4MWJlMDQ1ZjIwNzA4ZDY1ZDkyZGI5OWQxIGxlZ2FjeS10cnVuaworNDY4OTAgNTE3MzJlODFjNzk2MTQ2N2Y2ODMyZWI2ZmI4YzAzYTg3ZTNjZjM4ZiBsZWdhY3ktdHJ1bmsKKzQ2ODkxIDhmZTM3M2ZiMjFkNDMwYzRhNjRlYjQ1NGQwMWVjYmQyZGZiNWI5NDYgbGVnYWN5LXRydW5rCis0Njg5MiA5NzFhYmYzYWVjZjQxMTU4Y2M3MGMxZGI3OTNkMTQ1NGYxNWFkZTE4IGxlZ2FjeS10cnVuaworNDY4OTMgOTdiNjFkNmY2Yjc2ODE2MjA0N2E5YzY0ODYxYTE3YzUwYzUzMzgzNiBsZWdhY3ktdHJ1bmsKKzQ2ODk0IDRjNzRlYzgzMWE2YzNiZmVlM2Y4NDQ5M2ZjODBiYjliYjc2ZWI0MmQgbGVnYWN5LXRydW5rCis0Njg5OSAzODFhNzJhYjVmYjgzOTRhMmQzZWEyOGJkNzBjMTAwZDYzNmM3ZDFhIGxlZ2FjeS10cnVuaworNDY5MDEgYzg2MTg0NzNjZGM2ZTgxNmI2OWNiMGNhZTBjOGE1NDkyZDBkMzJkYiBsZWdhY3ktdHJ1bmsKKzQ2OTAyIDUxZjMzNDJiNzBkM2NmYTczOWVkMjBmZGY3ZDQ0NWUwYzIyYzY0MzIgbGVnYWN5LXRydW5rCis0NjkwMyA3NjVmYjFjY2MzZDg5NGRiZGIxYWRhOTFkM2ZlOTQzNjhiNjI2ZGM3IGxlZ2FjeS10cnVuaworNDY5MDUgOWI4NTA3Y2ZiZTk1MDEwNTlmMjc3MGZjZWQyOTVkMWM5YjdhN2JkYiBsZWdhY3ktdHJ1bmsKKzQ2OTA2IGE0NTUyZjA4ZDUzYjM0MjczZWY0Y2M0NDY1Nzk1OGU3NDU5M2YxODcgbGVnYWN5LXRydW5rCis0NjkwOCA5YzUyZWZjYWZmNjUxZGVlODU5MjEzN2Y5OWM3ZjNjNzM3NDU0Mjk1IGxlZ2FjeS10cnVuaworNDY5MDkgNzBiMTY2Y2ExYzQ5ZTIzNzg4NTUyMmU4MjRkODBmYTlkZThkNGY0ZCBsZWdhY3ktdHJ1bmsKKzQ2OTEwIDkxNGRhMTAzNmVlZDVkYjZiMDY4YTZjODA4ZWE4Y2ZjZDMyZTc1NmMgbGVnYWN5LXRydW5rCis0NjkxMSA5MzY0MjllMTBiODc5NmViNmJlYzMxYWZkMzA5NTBlMjQ5Mjk0YmIyIGxlZ2FjeS10cnVuaworNDY5MTIgZWEzNzIzYjJkNDZiZDE3ODA0Njg0YmJhZDI4ODExZTEwYmU2NzYwYiBsZWdhY3ktdHJ1bmsKKzQ2OTEzIDY0NTYwOTJjMTIzNWExNzAxYTc2NGE3Y2VkZjk2N2JkNDQyMWJiZmUgbGVnYWN5LXRydW5rCis0NjkxNCBlMWIxODQ3OWNlOTMwN2QzZjVmYTgxMjQ5MTBhNTNkNGQ4OGMzY2M5IGFpbWFjaW50eXJlLXNmMTQ1NDQ4MQorNDY5MTUgOTgxMjJkMjE3NmYxNDBhMWY1MDI3N2Y5MzI3ZjIyNjI1OTk1ZDdhMiBsZWdhY3ktdHJ1bmsKKzQ2OTE2IDVkYjFmYTZlOTY4MTgzNWY1MmQwY2M5NzRmODQxODVlOGRkMjk2MGYgYWltYWNpbnR5cmUtc2YxNDU0NDgxCis0NjkxNyA5OTIxMjZhMjllMGZkMzhkNGRmYzA0ZGQ3MTQxMGExMWZlMGExZDUxIGxlZ2FjeS10cnVuaworNDY5MTggNGU3NGRmOTU5NTE4YTRiNzM4M2M2ZWQ0ZWNjZDY2NmEyNGRmMTIzZiBhaW1hY2ludHlyZS1zZjE0NTQ0ODEKKzQ2OTE5IGY3ZDIzYmNhNTk5ZmViY2JkMWU0ZTE5YzEwMWZlODFmMWQzYjRlYzYgbGVnYWN5LXRydW5rCis0NjkyMCBhNzE0ZjJmMTNlMjVmMjI3MDRmMTdhYTE4MjQ0MGJlNTU0OWEyNzRlIGxlZ2FjeS10cnVuaworNDY5MjEgM2U5NmU1MDI1ZDlmN2FhZTRiMDRmMzY1Nzg2Y2M1NzZkYTUyMTlhZSBsZWdhY3ktdHJ1bmsKKzQ2OTIzIDZmMmYxOGY4NjM4NzQzZDQ5YWQ0N2QxMjkxZTQ2YTVlYTJhNWJjNTYgbGVnYWN5LXRydW5rCis0NjkyNCA2ZjMwNjExZjI4M2RjYmU3MmVmNzYwOTA2ZjcwNWYxODNiZWY0Nzk3IGxlZ2FjeS10cnVuaworNDY5MjUgNWQ2MjJlNDgzZmNjZmE2MmRmNTdiNDRjMzQ0OTNlMWMzMjU2ODk2OCBsZWdhY3ktdHJ1bmsKKzQ2OTI2IDUxMjUwNzY2ZDZmNWQyNTEzMjAyMDg2YjZmY2I5NGI4NTJjMWFlNzQgYWltYWNpbnR5cmUtc2YxNDU0NDgxCis0NjkyNyBiYjFmMDJlOTcxMWRhNWY1M2VhZDI3YjcyMjNmNWM0YWEwNGJhYTA0IGxlZ2FjeS10cnVuaworNDY5MjggMjE2NzEwNTEyM2U0NDc4YmFhYzc1M2MxNDk2NDdhYmQ5OWJiNDlhZiBsZWdhY3ktdHJ1bmsKKzQ2OTI5IDZlMGMwYzdjZjA2ODlhZDQ4MGNjNWVmZTE3MmE1ZmQyMGVhOWM0YjMgbGVnYWN5LXRydW5rCis0NjkzMCA3MGMyZWZhMDAwMDc4ZjI5YzRkY2VkMjVmMjY5OTUxYzUyYzhmMjNkIGxlZ2FjeS10cnVuaworNDY5MzEgYTI0OTBmNzkzMWQzMTEzOWViNWQ3ZGZlYjIwZjRjYTk5MWI0ODI3ZCBsZWdhY3ktdHJ1bmsKKzQ2OTMyIGJiNjg0YTBjMjJkOTYzNGEwY2YwYzM3NjFiMGY2ODlmOTZmMjk0NzYgbGVnYWN5LXRydW5rCis0NjkzMyA3NGJmNTczYmZmNGMzNWU3YTg1ZTI5ZTg1MTE4YWFjMjIyZGExYzI5IGxlZ2FjeS10cnVuaworNDY5MzQgMGE1Y2YyNTk0NWUyYjY3NWNkNTJkZGExOWMwOTRkM2YyYTVhYjgxYiByZWxlYXNlMjQtbWFpbnQKKzQ2OTM2IDNlNWZkMmI3MGU1YTcwZDVlNTcxMzk0ZmYxNTIxYzMxNGY3NjRkOWMgbGVnYWN5LXRydW5rCis0NjkzNyBlY2U4YTY3NTFkYjc0ODhiN2I4MDdmNmUzMTgxODcwNzk2N2UyZWUzIGxlZ2FjeS10cnVuaworNDY5MzggNmY3ZTY0YjcyYTU4NzllYTZjZGM4MDE1MjZmY2U3ZmUxMjhlN2Q1MyBsZWdhY3ktdHJ1bmsKKzQ2OTM5IDQ1NTg5MTZiODQxZjFjZmE3ODI5OTE5ZDczYzViMmQ1OGJkMGI3NGIgbGVnYWN5LXRydW5rCis0Njk0MCA2MmNmNmQ1OGJiNTNmYjZiZGVhYTA3MGE1NWJlNTRjNmU1MTdlNWI5IGxlZ2FjeS10cnVuaworNDY5NDEgNTc5NmFjZmJiNmRhMTY3ODRiZDgyMTE2NTBiZmMwNGE1YzkwZmUyNCBsZWdhY3ktdHJ1bmsKKzQ2OTQyIGI3YTM2MjBkM2RiYjc2NzA1ZDI5NzJmNjNhNDQ2Y2Y0MzFjOWI0ODMgbGVnYWN5LXRydW5rCis0Njk0MyA2ZDgwNzZkMzgwNTk3YTY2OWRmNGMxMmEyMWFjN2ZhZWE1ZmUzMGVkIGxlZ2FjeS10cnVuaworNDY5NDQgZDg1N2EzMjA3NWQ0YmVjMDcxMjk4M2MzYTNjMzljZGVkYmIxYzE4MyBsZWdhY3ktdHJ1bmsKKzQ2OTQ1IDU0OWM1NDc3MDBhZjg3MjVlNTA0ZWJkYzA5NWQxNTg1ZjdkZDE5NWUgbGVnYWN5LXRydW5rCis0Njk0NiAwNjlmZjNhNzA2OTQxMDRhNDNmMWM2MWY0OTFmYjZkYWNjMjRiM2VhIGxlZ2FjeS10cnVuaworNDY5NDcgYzk1OWRlNjRhOGRhMTg3ZTFlZTg3ZTE3NjM4MDBjOTc0NjUyOTA0ZSByZWxlYXNlMjQtbWFpbnQKKzQ2OTQ4IDQzNzdiMTdkZGIyY2ZlNTAzZGFiODJjNWU3NDhlM2NjMjY5YjZlNGQgbGVnYWN5LXRydW5rCis0Njk0OSAwNjkwNjI4NTkyOThjNTI0MmYxYzljNmI1OTY4NzM1MTQwNTU5NjYzIGxlZ2FjeS10cnVuaworNDY5NTAgYzUyMGVlY2UwMWIwMzk2ODRiNWM4MmI3YTdhNTljN2FlYzhkNGNiMyByZWxlYXNlMjQtbWFpbnQKKzQ2OTUxIGQ2ODc3ODM1NzkxZDdjNjQyYTNkZjA5MmE1Yzg2ZDk0Njc1ZTY3OTYgbGVnYWN5LXRydW5rCis0Njk1MiBiN2Y0YmE2MDFkZjk3YWY3Y2U1YzNhY2MzNWYyMjAwYWNmZDFiMDQ4IGxlZ2FjeS10cnVuaworNDY5NTMgOTE3YmVlYTU1NTk1ZDliYjA2NTBlMGNhOTc1ODRkYzY5ZDZhYmZmYyByZWxlYXNlMjQtbWFpbnQKKzQ2OTU0IDE2ZTA1YzYwNjI3NWViODhmZjVlODM3ZDhiOWI3YzhiNzcyNWFlOTkgbGVnYWN5LXRydW5rCis0Njk1NSBkMWFlYzdiNGRiYjg2OTNmNDM4OTJmZjdhNmFiMTgxMmUyNjFjNWY1IGxlZ2FjeS10cnVuaworNDY5NTYgMDNjMDVjYWI1ZjIxMjc3YTllMWIxOWJmN2NkYjQ4YTVlOGRjNmE0NSByZWxlYXNlMjQtbWFpbnQKKzQ2OTU3IDBmNzZhNTZkNTA2Y2MyMDBjOTQyZGI0OWFhZTEwMWFhYWMwMWRlMzcgbGVnYWN5LXRydW5rCis0Njk1OCAwY2YyZWIzY2M1MGE3M2I2ZTc0NjI0ODM2N2QxNjhkNmQwZTlkNDc1IGxlZ2FjeS10cnVuaworNDY5NTkgODY4MDg1M2U5ZWU0MDk3NjNmZTE4ZDBjMzFmMDhiNDI1ZThkYWVlYyBsZWdhY3ktdHJ1bmsKKzQ2OTYxIGQxNWRmMDJkYjFjYzEzZjdhYzQ0MThhNDhhMTNmOTRjN2E1MmIwZTEgbGVnYWN5LXRydW5rCis0Njk2MiBkN2JjNjQ3MGU4MzgzNWNiZGUwZjIyNzZmZGYzZDQyNDI4MTJjZGZhIGxlZ2FjeS10cnVuaworNDY5NjMgMzJhZGFhZDU5ZmIzN2Q3OWFiMzU5OTU0MjExODI1ZjE2YzA5N2NhMiBsZWdhY3ktdHJ1bmsKKzQ2OTY0IDBhOGI4NTFiMDM3NTIyOWViZWUwNjNkNjEzYzFjZTZjODE5ZmMwNzQgbGVnYWN5LXRydW5rCis0Njk2NSA3N2IwMWM5MzMzMDg4YWZhNmU0YzFkNDdjNDIxODMzMzgyNWMwODA3IGxlZ2FjeS10cnVuaworNDY5NjYgYTlmOWI1MDc1YmMwY2YwM2NlY2JlYzk1ZDM5MWQ1ZmJiY2Y1MWQ1YyBsZWdhY3ktdHJ1bmsKKzQ2OTY3IGZkNDEyYTAwYTA3ZGY0NTljMmFjMzQ5MDI0MjE5NTMwNDllYzIzODMgbGVnYWN5LXRydW5rCis0Njk2OCBkNGIxZjlhMzFjMjk2OTg1MDMzM2QyNWQ1ZTRmYjQ2MjViMDc2MTE1IGxlZ2FjeS10cnVuaworNDY5NjkgOTkzN2YwOWQ3NmUzYTBkZThhZGZiOTQ2NWMzYWNjYmUyNTg2NWJkZSBsZWdhY3ktdHJ1bmsKKzQ2OTcwIDc5M2YwMjY5OTNiYjI5ZDZjYzkxNTkyNjUzMjlmMjA2ZWQ2NzBiZWMgbGVnYWN5LXRydW5rCis0Njk3MSAzYjY1ZWVmYmFmNzZlM2RiZDBmYzdkYThhMmIxYzI3MDI5ODg3ZTRkIGxlZ2FjeS10cnVuaworNDY5NzIgMzRiNjk3MDQxMTkxYWU3MWUyNjg3YjQ2NWU3NTM0ZmFhZWI1NzRkNCBsZWdhY3ktdHJ1bmsKKzQ2OTc0IGM3N2JlNWM0MDYzYjMxZTRiODdiZDdmM2I2NjlhOGUyNWYzYjU1YTUgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0Njk3NiA5OTM4Nzc3NGViMWRkYTExOGUyODdmNmIwMTE4ZWU1YTViNmE1Mzg2IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDY5NzcgNTRkZjM1ZTljNjk4YTdmOGQ4NWJiMWVjYmZhMGEzYzcyYzU0Yjk1YSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ2OTc4IDllNDgyODAwMGNmYTkyOGJhMTE5ZDBmNWRmMWZkYTNjMTY3ZDNlNDUgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0Njk3OSA3ZGJiZTc4NmZkY2QyM2RmYTc5YjhhNWMwMzgwNWZlYzQ1NGNjNjliIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDY5ODAgMzczMDQzYTFiZGZiYjg1MDFlOTQ1Y2Y5NDY2MTA1NjNiMDQ0Y2VhNCBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ2OTgxIDkyZWI2ZWQwM2MyZTFjYzg1MDEyMjg0ODU4ODRmMDg2N2E3YjBlN2UgbGVnYWN5LXRydW5rCis0Njk4MiBjYWNkNDdhNjFlNzk2ZGZiMzY3NDQxN2Q0MDI1Y2IzNzM5ZjEwMTRhIGxlZ2FjeS10cnVuaworNDY5ODMgMWY5NDdmMTM0MWQxOTQ3YjMyYWJkZjA5MmQxOGVjZWNhNDg2YmYwOSBsZWdhY3ktdHJ1bmsKKzQ2OTg0IDlhOWQ1NzgyZTQzNjdiOWEwMThkYzZmNDI5Mzc5ZTUwOWRlNTQwNmYgbGVnYWN5LXRydW5rCis0Njk4OSA5ZTgyN2ZkODMxZDc3Yzg0OGY3NjRhYWVjYmFmYjAwZWUwYjgzYWYxIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDY5OTAgYjVlZmEyM2NjOTQ4OGQ3YWQzNjZhZmRiMDBmNjQ3MmRlZjYyOTZjZiBsZWdhY3ktdHJ1bmsKKzQ2OTkxIGU3NmI2ZjNhNDQxOTM5MzUwMjQzOTNkMDUxYmIzODEwYzdlOTJlZDEgbGVnYWN5LXRydW5rCis0Njk5MiA2YjRkYTRlZTcxNDZlYjkwNjZiYjllOGNjZGY4YjZmZGJhNzRjMjdmIGxlZ2FjeS10cnVuaworNDY5OTMgZTBjM2Y1YTQ0NDBmZDQzNDFiYzdkNDZlNDI1YTBlNTVkNzQyYjNhYSBsZWdhY3ktdHJ1bmsKKzQ2OTk1IDU1N2U2MjEyNmNiMWRjMjJlYjg1YjBlNTk2OTQxYTZlZGQwNjBlZTQgbGVnYWN5LXRydW5rCis0Njk5NiBiMmE0YmU0NzM3MjgyMzAwYzRmMGY1NTU3ZGY1NmU1ZjViOTNkYThiIGxlZ2FjeS10cnVuaworNDY5OTggOGE1MGQ4ZTkwMThjODQ3OTU3MDBhZWQ4ZDlhN2Q4YzI4MzkyZjJhMyBsZWdhY3ktdHJ1bmsKKzQ2OTk5IGY2ZGM1NWQzMmY3MDJjZTA5Y2U2NDhlNGJhMjhhMWIyZTI0YmNmZTggbGVnYWN5LXRydW5rCis0NzAwMCBhZmY2NjI5ZDFkMWM0MTFmZmY0NjQyY2ExZDE5Mjk5YjlmNGM4MzI4IGxlZ2FjeS10cnVuaworNDcwMDMgMDNjZjVkZDdjOTA2MTViZjg3ZmZkOGVkOTZlNzMyYThkZDI0NzA2OCBsZWdhY3ktdHJ1bmsKKzQ3MDA0IGEwYjA2MmZmMjkzOWM5MmViZTM3Y2ZiNWRhNzY4ZDc4YmNlNGJjMjkgcmVsZWFzZTI0LW1haW50Cis0NzAwNSBjNTAyNjcwMzkwODhlMDIwOTRkN2QyY2MzOTMzYWZjODAxZWNmMmZjIGxlZ2FjeS10cnVuaworNDcwMDYgMDI2NTBhNDdlZThiZTM5Mzg0MjY4ZmYzODNiMGVmOTk1MTM1NGMxMCByZWxlYXNlMjQtbWFpbnQKKzQ3MDA3IDk2ZTFiMGM4ZmY5YThkYTFhYTMzMzgyYzMxNzkzNTM0NTAxYzQ4YmYgbGVnYWN5LXRydW5rCis0NzAwOCAxMjU4ZTkzYmIxZDAwNTk0ZDRkMTAyYjdmNGMwMGQ3NzkyOTE4ZjhlIGxlZ2FjeS10cnVuaworNDcwMDkgNDg0ZDNkNWJhN2Y5YTVhYjAzMzAxZTRlMmJkNjVmZTA0NzY0ZWUzOSBsZWdhY3ktdHJ1bmsKKzQ3MDEwIGI5ZDE0NDBjMmRkMTYzMWQ0ZDA4NzYwN2NhOTQ3OWNlN2Q2OGQxY2UgbGVnYWN5LXRydW5rCis0NzAxMSA2YTdmMWYxMmVhYWY3ZDQ0ZThkM2M5MzM2ZTIzMWQxZjg0NDQ2YTAzIGxlZ2FjeS10cnVuaworNDcwMTIgNDExZDBhMzUzYTE1Yzg0ZmQ3ZTJiMGU1Y2ZhNjdjNjY2MjNjNmM5MSByZWxlYXNlMjQtbWFpbnQKKzQ3MDEzIDMwZDIzMzM4NTJkNTBmMDFkM2QzOGM5ZWUwNzg2MjZiMWI2OGY2NjggbGVnYWN5LXRydW5rCis0NzAxNCBhZDVhZGQ5ZTAzNjk2ZDNhYmRhZjE2YzAzMzFiZGY2NDUxMTU3Yzc3IGxlZ2FjeS10cnVuaworNDcwMTUgZjRiNDQxMjU2NDY3ODlmNTQ1OTEwOTE1ZDVkNWFmMDA4ODVlY2NmMSBsZWdhY3ktdHJ1bmsKKzQ3MDE2IDkzY2MzZmMyNTA5OTk5OWVhYTVlOGYyNjUyMjliZDI2MDM4OTkzZWMgbGVnYWN5LXRydW5rCis0NzAxNyBhM2M2MWM2NDhmYzgxOTRkYzc5NWJjNmMxNzliOGQ4Y2IyMDFiMzljIGxlZ2FjeS10cnVuaworNDcwMTggODA1ZjQxODgxZTI3MGUzODEyZjkxZDQ3MTllYjk2MDBjZDBiMzRjMSBsZWdhY3ktdHJ1bmsKKzQ3MDE5IDI4NDNiZjcwYTljZmQ0Zjk5ZTI2MzkzZmYzY2FhY2E2Njc3NmJlYmUgbGVnYWN5LXRydW5rCis0NzAyMCA2NzI5YzI3ZDAxZmU4ZGI5ZjE0NTJjYzhkNGYxNzBiZjRiN2ZiOThiIGxlZ2FjeS10cnVuaworNDcwMjEgMTE4YzY1MGUyYzliM2I0NGVkZDJjOGM2ZTg1MTA2MzM1Mjg4YzBhMiBsZWdhY3ktdHJ1bmsKKzQ3MDIyIDRhNzY2MDI0MDQzYWVlZTU5MmE2YzA5MzdkZTJkYjRiMTVhMGE2NzIgbGVnYWN5LXRydW5rCis0NzAyMyAwYjk1YTBhYWFhZWY5ODZhYjRlY2UzMTdjMTY3YTEyMmY4YTJjNjE1IGxlZ2FjeS10cnVuaworNDcwMjQgMGJmOWUzMDk5YzU3YmM3MzBmZGI2NWIxNmY1Yjk1YTU3ZTU2ZDViOCBsZWdhY3ktdHJ1bmsKKzQ3MDI1IGM2M2QyYjYyNjNiNThiNzIwNzEzN2I2NjQwMzViN2JmZTQ5YjkzYjQgbGVnYWN5LXRydW5rCis0NzAyNiA0ODMwZDYxNDdhYWYwOTk1MjRkN2M0YWJkMGJkYTY1OWY0MTEyZjZlIGxlZ2FjeS10cnVuaworNDcwMjcgYTc0NjIwNWY1OTc1OWM3MzI4ZDg5OGU3OGI4Y2RiZTk4MzQxYmMzMCBsZWdhY3ktdHJ1bmsKKzQ3MDI5IGYwODg1ZmUxNGQ0MmFlZWExZTc5Yjc0ODA2MTc3M2E1ZTI5YTU3MDcgbGVnYWN5LXRydW5rCis0NzAzMCA0MDhkMmE1OTZmOTkyMzQ1NmE3MmM2OTg4MDM2MGQ4NTljNzg0ODhhIGxlZ2FjeS10cnVuaworNDcwMzIgNWI5ODdkMjEyMzFiZmI2NTQ2NjIzNjAwYzM2NTQyMWE2ZDRmZWYwNSBsZWdhY3ktdHJ1bmsKKzQ3MDMzIGYxOWU4NzcyODFlNDkwMzcxMWYxNTc3ZmZlNjM2MDg2YzdjNzlkNzYgbGVnYWN5LXRydW5rCis0NzAzNCBkNDliMTk4ZjU0NWNkODJmYmY3MzVhMjI5NzljMzMyYjhhOTdlZWNiIGxlZ2FjeS10cnVuaworNDcwMzggNTIzNzVmMjAzMjQ0OGZlNDdiMDZlNTlhNjJjMjkwNTdiZThhYTBhOCBsZWdhY3ktdHJ1bmsKKzQ3MDM5IGY4NzE2Yjc2YTcxZWY3YTA3YTA3ZmQyODQ1ODVmYjFkMTg4Yzc0NzUgbGVnYWN5LXRydW5rCis0NzA0MCAzYWYzMzJmZmY1Mjc5YTdhZTU2NGM5ZmM0YWM5MzM4YmU2YjZlY2NiIGxlZ2FjeS10cnVuaworNDcwNDEgZmRjY2M2YjE0ZmFkNmVkYTU1OWJhYTI1Mzk2YzRhY2FmODc0YWI4MSBsZWdhY3ktdHJ1bmsKKzQ3MDQyIDI2ZTRiZjE5NWFlMjkyZmQ5ODk0MzFmMGYzMmFjNmQxNTljNDE0ZDIgbGVnYWN5LXRydW5rCis0NzA0MyBhM2JhMWEzN2I1Mzc0OGJmYTg0NDQ0YTBkYTljZDI1MWY2ZWU0YTA2IGxlZ2FjeS10cnVuaworNDcwNDQgODY4MTI2ZTNiY2Y2ZDAyYTU0ZmI4ODUxNDcyMWVhOGNhZTcxMjNhMCBsZWdhY3ktdHJ1bmsKKzQ3MDQ3IDRmZmZlNjc3ZjU1Mjk2Y2I3OWFiYmM0ZWMyYmEzODY3ZTg3ZGU2ODYgbGVnYWN5LXRydW5rCis0NzA0OSA3MDIzY2VkY2M1ZWQwNGE0NWI5OWNmN2Y4ZTVhM2ViMTdiMzI4MjNiIGxlZ2FjeS10cnVuaworNDcwNTMgMDUxY2MzOWE4MDA4NDMyN2RjMGFkY2JmZWE2OTkxZTJlZTQ1N2FiYiBsZWdhY3ktdHJ1bmsKKzQ3MDU0IDUzYjA0YzE5ZmU0MTZjY2E5MGQ4NjYyMjU3MDgwZjA5MDM3OGI4ZjcgbGVnYWN5LXRydW5rCis0NzA1NSA5YjBmOTQzMGNiY2JkYmI0OTY1YWM2MDI3MjNiYzQxZWYyYzA0MjgyIGxlZ2FjeS10cnVuaworNDcwNTYgMTQ5MWU1MmM4NTk3MGQyNTM4Yzg0MTdmMjllYzVlMGNhZmI1NjAxMCBsZWdhY3ktdHJ1bmsKKzQ3MDU3IGUzYWM3MzlkNDg4OTU1NWNmZDQ1ZThjOTZmYjY4ZDU5MjM0ZjI5NGIgbGVnYWN5LXRydW5rCis0NzA1OCBhNGRkNmIyMDliNjVhMmE2ZTg2YWZmMmFhMTliZjBiMDA0MTUzZTc4IGxlZ2FjeS10cnVuaworNDcwNTkgNjllZjIzZmNmNWY4M2YyYTFlNDAxMzhiOGZiNzZlNDRmY2MzMWRkMiBsZWdhY3ktdHJ1bmsKKzQ3MDYwIDE1MmVjMjJjNGU2OTVkYTExNmY4YjhlMWFiNTU2OTRkMTk0OTQzZWIgbGVnYWN5LXRydW5rCis0NzA2MSA1MDZjNzY4NDdlYzcxNjI1ZDZlMzQ5Y2VjMjU5ODE3ZjM5ZDIwNjE4IGxlZ2FjeS10cnVuaworNDcwNjIgM2NkZGU0NWE0NjhkNTliM2I3Yzk0ZjJjNGIzNjk5MzdlMGNhY2Q0NiByZWxlYXNlMjQtbWFpbnQKKzQ3MDY0IGNiNzIyNWU4NDgwNTZjYzA3ZjM1MTVkYTAyMjA5NzNlNTI5MDhiMjQgbGVnYWN5LXRydW5rCis0NzA2NSBhY2EzNmY3ZjNhZTg3Y2EwYTM3ODM4Y2UwNGI0ZTE5MGFlNTcwMDkxIGxlZ2FjeS10cnVuaworNDcwNjcgMDQxYWQwMDY4NTcwMTE2ZmNlYjQxZDNiMDQxMjE2MDBkNTczNDY1ZCBsZWdhY3ktdHJ1bmsKKzQ3MDY5IGViZWU1NTM5MzA4YWVlNzc5MjRhZDY1NThkOWIxMDNkMGExNmU5OTAgbGVnYWN5LXRydW5rCis0NzA3MCBhZWQ4MDk0NDMyMDUzZDE3NGYxZGE5MWE1Yzk5YjkzMDdiNWEzNTExIGxlZ2FjeS10cnVuaworNDcwNzEgMjExNGViNzNhZWI1MTcyN2FiYTQxYmVmOTlkZmJhZjk1MGVhYzE3ZSBsZWdhY3ktdHJ1bmsKKzQ3MDcyIDU4MDM0MDg0ZWY0NGFlNDVmMmI4MTdlZjQ5ZTUzYWE0ZWE3YTQ0NDYgbGVnYWN5LXRydW5rCis0NzA3MyA2NTM1M2M0ZGI4YzIxYjkzYzk1YWFjNTViM2YwOTdkNzU4NjZhYzhiIGxlZ2FjeS10cnVuaworNDcwNzQgYWZjNDc1ZDA1Njc4Njk1NDBmNjFjYTdkNmEzODUwMWQ2NGQ4MzJkNyBsZWdhY3ktdHJ1bmsKKzQ3MDc1IGFmY2I1ODJkOTJkODMwNDg0NzM1ZGM5NDk3ZDA2YjdjMDUzYTcyOTAgbGVnYWN5LXRydW5rCis0NzA3NiA3ODgxNmM1Y2ZmMDUwOGM0YTI4YjU4NWE2N2ZkZGZjZGNjMDBhMzk3IGxlZ2FjeS10cnVuaworNDcwNzcgYmNlYWE3NzIwY2M3MTFjZDUzZWVkZWI4M2E1YTU0ZjllYmFmYzIzNCBsZWdhY3ktdHJ1bmsKKzQ3MDc4IGQ4NDIyNDMyMGY4MjhhMGI2ZDI4MzkxZDQwNWMzNDdmNzlmMDA5NWEgcmVsZWFzZTI0LW1haW50Cis0NzA3OSA5YjQ2YTRmNTJkMGMwMzE1ZmY4NjI2ODQ3NDdhZGRjNGJjNzgwNzA4IGxlZ2FjeS10cnVuaworNDcwODAgMzIzZGE0NzZmMTdlZTE3ZjI4NTM5ZmUwNzIzMWYzODhiYjkzMDM4NiBsZWdhY3ktdHJ1bmsKKzQ3MDgxIGJhYjBiMWU2YzZkNDFjYmZlMmU0NmEzOGFkMDg2NzliODQ2YTQ2ZDQgcmVsZWFzZTI0LW1haW50Cis0NzA4NSA2NGQxZjY2YTIzOWE2MDljNDUyOWZhZjhmZjI5Yzk1ODA1NTFmMzgxIGxlZ2FjeS10cnVuaworNDcwODYgNmYwNDJmNWJmOTRkZTc4NDY5MmIzMzlhZGU5ODliYWQ1NjA1MDk0YyBsZWdhY3ktdHJ1bmsKKzQ3MDkxIGM3NTMyODU2ZmQxNzU5MjUyNWVhZjlkODhhMGU0YmYxMWYwNjgwNzYgbGVnYWN5LXRydW5rCis0NzA5MiAxMzQyZGZkNTI3MzM5MDA4ZWVlZDQwODNlODBhYmY2YjM5YWUxNDk1IGxlZ2FjeS10cnVuaworNDcwOTMgMDlkMTYwNmU3NTI0OWNjMDEyMGRmMTI1ODU5ODVhMDNmNGE2NWQ4YiBsZWdhY3ktdHJ1bmsKKzQ3MDk0IGFkNTk0OTE1MjcxMTZkM2EwMjI3YTZmZjU3ZDcxN2JkMWI1YjBlN2YgbGVnYWN5LXRydW5rCis0NzA5NyBiOWE2NGI3YTMyNjEyZGI2MjllOThlYjhkYWI4YWExNTUyYmNhNTQ2IGxlZ2FjeS10cnVuaworNDcwOTggYjgyYzQwZGMwOGQ4MmNkMDE0MDY2NWEzYmViMjUyYzNkNjczNWM2NSBsZWdhY3ktdHJ1bmsKKzQ3MDk5IDgxNjhkMDVmOWI0OWU2MGM0OWU2MzQ0Y2IzYzI5MGVhMDVhZWIxZDYgbGVnYWN5LXRydW5rCis0NzEwMCBmMmNjMTU2ZWI5MjhlM2ZkZmZmMzk5NzQwY2Y1NmNkODNhYWZlOWQ5IGxlZ2FjeS10cnVuaworNDcxMDEgNThmNDE5ZDhjNjQ2MWZiOTE3YjA2Y2NjOWMyMjcyOTdiNGU2ODc2OCBsZWdhY3ktdHJ1bmsKKzQ3MTAzIDM1Y2YwZjg3OTgzZWRlY2E4MDU5NmQ4MTFkYjVmM2IxZjM0MzI2NzAgbGVnYWN5LXRydW5rCis0NzEwNiBmMjY2MTNiZDQ4NGQ3ZGU3ZDUxNjQ2OGRmM2ZmM2IyNjllZTU3YzcxIGxlZ2FjeS10cnVuaworNDcxMTMgYjhiMjI1NTBhY2FjMDE0NTcyMGM1MzU1NmViMjY3YzRjYzc3OTk3ZCBsZWdhY3ktdHJ1bmsKKzQ3MTE0IDc0MTMxMzAyOWQ2M2Q5Njk0NDczYjI0ZTBmYTVkMDFlNGVmYTc4ZjIgbGVnYWN5LXRydW5rCis0NzExNSAyMjU0NzlhY2U5YTcwZDI3OWFkNzRmMjMyZTU3ZGUxN2FlZWQ5ODkyIGxlZ2FjeS10cnVuaworNDcxMTYgY2VlYThhOTg2NTg0NDc3YTMwYzk0NTk3Yzc2ZGViYTY4MWQ0M2UwZCBsZWdhY3ktdHJ1bmsKKzQ3MTE3IGNiODM5OTk2YTM4NmVkYTAxNzdiYzBiYThlYmI2OTg2MjE4ZjhjM2YgbGVnYWN5LXRydW5rCis0NzExOCA3MjFjZWM3ZjAxODU3NDc3ZjU2ZjM2MjAzZTBlYWVmODk5NDZlYjVlIGxlZ2FjeS10cnVuaworNDcxMTkgNGRlYTVmNDZlZTk4NTU0MjQ5ODBjNWE5NzJkNDNiYWM4YTUyZTJiZSByZWxlYXNlMjQtbWFpbnQKKzQ3MTIxIGRlNDEwMjUyYjlmZGEzYjhkNTgzMzhiYjUxMWVlM2Q3NjU0MzE4NTggbGVnYWN5LXRydW5rCis0NzEyMiA1MjI1MGVlYWY3OTFkNjY0M2RmMGIxMzczMjUwMmMwNGFlOGI0NTJkIHJlbGVhc2UyNC1tYWludAorNDcxMjMgMDYwMjc3MWI4YjQ5YjdjMzM0MGRkNGQwYmE0MzZkN2JkYzI5ZGQwOCBsZWdhY3ktdHJ1bmsKKzQ3MTI1IDA5NTU0NmRkYjJmMTZjNjQ3MzQ3Y2NmYzBmNmIzNjhhM2EzZTc2M2YgbGVnYWN5LXRydW5rCis0NzEyOCA3Yzg5OTBjY2NmOWIyYWQ5YmNmZDIwODI4ZTZmMDFiMzM2MTc0OGM2IGxlZ2FjeS10cnVuaworNDcxMzEgYWMzZDRiNzFiY2UyYjI2YzlmYTc5YmRkMzVhM2ZjNDMxYzdkMGY5MiBsZWdhY3ktdHJ1bmsKKzQ3MTMzIDNjZjIxOGU4YjQ0OTI1NzNiMjI4YjNlYTMxOTIyOTZhMzEwOGJiMjUgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0NzEzNCAwMzg4YzdkY2U0ZDQyNjY2ZDFlZjUzMmNmYWRjZmIwMjkwNTczZWU2IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDcxMzUgNGI0ZWQyMzAyZDFjZjU2ZWYxNjE5MzA1NDE1YmIwZGUyZDc4NzEyNCBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ3MTM2IDg1MWYzNzhhYjljZGM1Yjc1NjRjNDdkMmZkNzQzMDc1NjY5YTYxOWUgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0NzEzNyBkNzQ5MDhlNzRkMzA3MjBmNWMxMGMzMzMyYjQzYjA3YmJkMDY1ZDZiIGxlZ2FjeS10cnVuaworNDcxMzkgNTZiZjU2ZjVjODIxNDc2ZDVkNjdjYjQyNzc5MGNmMWE2OTA5NWVlMiBsZWdhY3ktdHJ1bmsKKzQ3MTQwIGE0MjYzYzQyNDhjYjY3ZTdhZDNiZGM2M2JmNGM3MTdlYWFjZGM3OWUgcmVsZWFzZTI0LW1haW50Cis0NzE0MiA1YjgwNzk2NjBlYzQ1ZTRjOGIyNjBmY2VmYTY2ZmQ4YjUxMzEwM2NkIGxlZ2FjeS10cnVuaworNDcxNDMgNTgyNzBhNjkwZjQzYzVkMTkwMDlkZTIwNjA3MzdlZjY5NDNiZThhOSBsZWdhY3ktdHJ1bmsKKzQ3MTQ3IGY5OWZiZmJhODk4MzQ2MDFkNDQ3MDRjMWI5NGM2NjA5OTgxYmI2ODggbGVnYWN5LXRydW5rCis0NzE0OCAyZWU1YmRhOTIwYTI0NWFlMDgwMmFiNmUxODQxYzZmODgyMzZjZjQxIGxlZ2FjeS10cnVuaworNDcxNTEgMWVhYjVhZTNiMWZmYmFlZTcyZTU5ZmZkYjdlNWNmOGVlNDQ5MWE5ZiBsZWdhY3ktdHJ1bmsKKzQ3MTUzIGIzZWY3NDFlMjYxNzFhZmYxMWZjZTExYWZiOWMwZTg0YjM0NTQxMzggbGVnYWN5LXRydW5rCis0NzE1NCAzYzlkM2EzMTNkODFkZTUzOTE2ODQ3YjM0MjVjYzJmMGJhMWIzZTEwIGxlZ2FjeS10cnVuaworNDcxNTUgMTdmODJiZDY4ODc4NTMyZmIyOTkzNDE4MWI2ZjU0Y2RjZWZiZjc3YyByZWxlYXNlMjQtbWFpbnQKKzQ3MTU2IDI5ZTQzYzVlMTE4ZjdiMDkwMTQyM2ZmNjRlMjk3MmJkYTUzYTMzMzYgbGVnYWN5LXRydW5rCis0NzE1NyAxYjJkZjJlY2JjNjM2YTJjOGI3MjIzM2U4MjVhYzYwZWI3OWQ3Mzg5IHJlbGVhc2UyNC1tYWludAorNDcxNTggMGE4M2RjMzUyOWQxNWFmNDQ5MzRmNWIzNDgxYzBjYjhhMDMzZmM4YyBsZWdhY3ktdHJ1bmsKKzQ3MTU5IGY0OWNjMjkwNmNkMDBmNjA0Nzg2ZDJkNzBlZTJiYWFhODMzODUwNDggbGVnYWN5LXRydW5rCis0NzE2MSBjNmQwNGM5YzNjNGFlNzc0YzVhMjkwMDE2NDY5MzExY2VjZDY5MmE0IGxlZ2FjeS10cnVuaworNDcxNjIgOTliMTVjMjViODQwMTY5MzhhYTY5NWUyOWZmNWQ1ZTYzMWY5MmRiMSBsZWdhY3ktdHJ1bmsKKzQ3MTYzIDE1ZmU5ZGJjNWQzOWVmMTI4ZjlkODkzNWUwYWE4ZDQwMDJjODIyMDcgbGVnYWN5LXRydW5rCis0NzE2NCBkYTIyYjkwNWRmYmViZDllOWFjZDg4OGMzNTQxNmI4ZmZjODI5NDdiIGxlZ2FjeS10cnVuaworNDcxNjYgYTIxZTQyMGE1OTdjYzk1MDUxNzE4ODRmYTI0M2FjZjQ3ZjRiN2NkZCBsZWdhY3ktdHJ1bmsKKzQ3MTcwIGQ4NTcwODc2OWFiMWQ5NGJjZDJiNDA0NjhmODFhNjY2ZTllYjljNjkgbGVnYWN5LXRydW5rCis0NzE3MSAxMzkyNTYxZDVkZDdhZTNkZTJiNGJkNTUyMmQ0MDc4ODZiMjJmNmZiIGxlZ2FjeS10cnVuaworNDcxNzUgMjcyZjE5NWEyODRlN2UwMTRjYTk0MmZmYjE4NTg5NjJhZmZiNzEzYyBsZWdhY3ktdHJ1bmsKKzQ3MTc2IDQ4NTA1NmU1M2NkYjk5Y2YxNTY4ODczYjM4M2U2Y2RmNjY5M2Y1OGYgbGVnYWN5LXRydW5rCis0NzE3NyA2YjBjNjNhOTc1MTQ3YTk0ZjY5YjNhMDM4ODM4Yzk0ZTc1NTA0Yjc2IGxlZ2FjeS10cnVuaworNDcxODEgNWQyYzk4MmFiYmIzOWU3ODQyNjFmYzYxMDBlMWMyMmMyYTE1MGIyMSBsZWdhY3ktdHJ1bmsKKzQ3MTg4IGQ0ZGJmYmYzZjJiOTBjNWMyMzk5MGZhYjdhZmFmZWM1ZTNiZDY5MWQgbGVnYWN5LXRydW5rCis0NzE4OSBiNjY0YTkwOGJmZjM1MGVkMWI1NmI1NjBmNGYwNzJkMmExNWI3NDYwIGxlZ2FjeS10cnVuaworNDcxOTAgYzU0N2Y2ZTkxYzU4NGI5NDI2MjA1ZmI4NmEzMDFmZmU3N2Q2NDNlZSBsZWdhY3ktdHJ1bmsKKzQ3MTkxIGUwNzZlM2Q3NmY3NzEwYTAwMDFlMWUzOGNmNTYyZGM0MjU3YTY4OGMgbGVnYWN5LXRydW5rCis0NzE5NyA1ZGQ3MzYyNjhmZjQ0MDIzZGI2NjVjNmJhNzFjNDRjZDZkMThiMjA5IGxlZ2FjeS10cnVuaworNDcxOTggNjk3NWJkNDg4NGViYzJjODAwNGJkOTY4YmFkN2JmNDMwMDA3OTU3YSBsZWdhY3ktdHJ1bmsKKzQ3MjAzIDBmM2JhM2RlZjFhZDgwYWVkMWZjNGI1MWZmNDdkNTgzYTYzNmVhZTIgbGVnYWN5LXRydW5rCis0NzIwNCBjMDEyMzAwNzY4NTljMWZlNjZjZWFmZjMxNzAwODRmZTk4ODllOTk4IGxlZ2FjeS10cnVuaworNDcyMDUgODg5NGVlZmJiMGE0OWZjNWVhZjU0OWU1NTdkOWMxYWI1ZTIzZjNkZiBsZWdhY3ktdHJ1bmsKKzQ3MjA2IDYzODI0MWZmODdiZGRiYmJlMGUyMjA2NTI3NzA5YWU2Yjk1NzI3OTAgbGVnYWN5LXRydW5rCis0NzIwNyAyNzk3Mzk2MmZjOWZiNjJjZjhmNmNhYWYwNjliMjM4NzU2YTUwZGRlIGxlZ2FjeS10cnVuaworNDcyMDggYjE2MTRmNjc0YjMyNzA0MzViOThmZDgwYzNlZjMzZWMxMWU2MTQ5MyBsZWdhY3ktdHJ1bmsKKzQ3MjA5IGU2MWE5MzhmZTk5OGQ1Zjc5OTc0YjM3NjMxMmYwYmFhYzAyYWI4M2QgbGVnYWN5LXRydW5rCis0NzIxMCAyNTM3ZGVkYTM1MWZhODkxMmNlZmNmZGI5MmJmMjIwYTg0YjExNjRhIGxlZ2FjeS10cnVuaworNDcyMTEgYjk0NzBkNjdkOTZjMmUyNzAyZTgwOWQ0MWY4OGQ3NGE4NzA2YWYxMCBsZWdhY3ktdHJ1bmsKKzQ3MjEyIDBlOGE5NGJhMjEwNjZkYTY1ZGY5ZDY2MDhlN2U0OGJiYTYzOTM3MWEgbGVnYWN5LXRydW5rCis0NzIxMyBlOWQzOWM1ZmNjMjc0NjE0YmMyYjZlM2ViOTM0ZTk0ZWE3MzFkMDJkIGxlZ2FjeS10cnVuaworNDcyMTQgZjExNjU4MmY2NjIyNDI1ZTk4Y2NhOTllYmNiNzA5MjU3YzNlMmRhYyByZWxlYXNlMjQtbWFpbnQKKzQ3MjE1IDA5MzE1Njg5OWY3NWFiMmNiMDZkMDkwZGQ3OTg5NGI3NjQxZjNlMDUgbGVnYWN5LXRydW5rCis0NzIxNiAxNmJmMzY2NDgzMjMzYjA4ZGZiY2UzYjlmOTkyNjUyNTU1OTdkZjg2IHJlbGVhc2UyNC1tYWludAorNDcyMTcgODY3NWE2MDg0MjQwZjg1NTcxZDQwZTkwMzA1YzQzNTRhMDQzMTM0NCByZWxlYXNlMjQtbWFpbnQKKzQ3MjE4IGM1YmViY2JlNDUzOTFhM2NiYjJmOGI5MTFhM2VlNjQ4MDYyMTk1MjkgbGVnYWN5LXRydW5rCis0NzIxOSA4MTMwNGMwMTQ2M2EyZTliZDhhM2U3ZWY4NmExNTM0ODJhNDZkMDM0IGxlZ2FjeS10cnVuaworNDcyMjAgNjNhMzE5ZjA3MzNjYTA2NjZiNmYyMWEzM2I0MDBkNGZkY2Q5MDQ3NiBsZWdhY3ktdHJ1bmsKKzQ3MjIyIDAxZDRiMDY4NTA2NzYwNjgxMDllMmNkOWFlOTE5NmU1Mzc2MWUxMzAgcmVsZWFzZTI0LW1haW50Cis0NzIyMyA3NWJkYjFlYjA3NjY1OTVkYTMxNjkyM2JmMWNiNWI2OGRkOGUzOWQ4IGxlZ2FjeS10cnVuaworNDcyMjQgOWM5MjJlMzFiNmE1Yzg5MTA0YzQ2YjIwZjA3MGQ2OTNmMzJmM2JjYiBsZWdhY3ktdHJ1bmsKKzQ3MjM0IGM4MjM3NWQ1NjBiM2ZlOGEyOGEyNzdmOTE5ZTYwMTYyOTRkYTRkY2UgbGVnYWN5LXRydW5rCis0NzIzNiA0MWZjMjAzYTNlOTFmMTYxNWMxNGE2ZmIzODA4M2QwMThmNDc0OGFkIGxlZ2FjeS10cnVuaworNDcyMzcgMTg5ODlkMDlkNTg0ZTZjM2U4NGQ0MDVjNjY0MTFhYWU4ZGZiZWYxMyBsZWdhY3ktdHJ1bmsKKzQ3MjQxIDZkOWUyMmMzMzBlNGI3NjQwMzAwNDY5ZmYzOWM1OWY2M2FkNDUwZTUgbGVnYWN5LXRydW5rCis0NzI0MiAwYzRlNWEwYzE5MTRmN2IyMmRmYjBiMGUzY2ZkZjg1Njg1NzNhMzM2IHJlbGVhc2UyNC1tYWludAorNDcyNDQgZDllNzgzMTlhMTkyOTM4MTI2NzE0ZTZkN2IzN2QwMzJjYjQ0ZDA0ZiBsZWdhY3ktdHJ1bmsKKzQ3MjQ1IDc1NTA0NDcxM2U5N2NhMjQzYmE2ZGFiZWQ2ZTdhOGY5ZGY1ZTE3MjMgcmVsZWFzZTI0LW1haW50Cis0NzI0OCBiOTE1NWJiMjZiMjgxZThlMzMxMWQzNmM3YWRmNDBlNGFjYmExZmExIGJjYW5ub24tc2FuZGJveGluZworNDcyNDkgYjBiZDBiY2U5NDA2ZWRhNGIxMDMyNzQ5OGQ5NTRmYmI2YjEzZDMyZiBiY2Fubm9uLXNhbmRib3hpbmcKKzQ3MjUxIDllODIxNDM1YTYxMmQxZTk3MmIzNTk2ZTI0OGRlYmVhOTM2OTliNWEgbGVnYWN5LXRydW5rCis0NzI1MyA1MDBhZTk1MjE1MGI3NjY4ZTMwMDc2NTQ5ZWVkMDQwNDljMGMzMzhlIGxlZ2FjeS10cnVuaworNDcyNTQgODdlNWIwMTBiM2IwOWQ1YjViOWM1NGY3NGUzOTA4OGRiM2YwNDFjZSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ3MjU1IDcxZWFkYzM1ZjE2MzcyNjExNjY5YThmNjRmOTk2M2Q1NDIwYWRkNGEgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0NzI1NyA0MTU2MWIwMDE0YzhiNjgxNTY0OGU1MDQyMDgxZmE2OGQ2YWVlODNiIGxlZ2FjeS10cnVuaworNDcyNTggNDBmMDU4NjczMTcwYjhhNmE4YWRmMDNiNmFlNWMwN2NmMWFhNzBhYiBsZWdhY3ktdHJ1bmsKKzQ3MjU5IGI4NTFhZmNjMTY0OTY1NjcwM2E3MmQwZWZkNWMyZjlmYTY2OWJmY2EgbGVnYWN5LXRydW5rCis0NzI2MCBlM2NmZjYxYjc3Nzk2MWFmNDZmNDJlM2MxN2VmZjg0OGNjZTA4NGUxIGxlZ2FjeS10cnVuaworNDcyNjEgNGRkMWE5MzgzZTQ3N2ZjNjcyYzk1NDQzMzAxMjVhYzc0ODA1N2RlMSBsZWdhY3ktdHJ1bmsKKzQ3MjYyIGQ4Y2U5YmM0MDVlNDFiNjk1NDZhMTQ0ZDcxN2NkNWFhMDkwZWU1ZDAgbGVnYWN5LXRydW5rCis0NzI2MyA2OGM5ZThhNTUzNjgzYjJjMjM0OGNjZjI3OTk4NDhmOGZkYjMwZDY2IGxlZ2FjeS10cnVuaworNDcyNjQgMjA3M2YzMmNmNzFmYzdlYTQ0ODU2ZWI1Mjc4ZDcwOWNlZTA0YTkzYiBsZWdhY3ktdHJ1bmsKKzQ3MjY1IDY5N2QwNTQ4MDA1M2Q2ZmRlZmU2NDVlMDg5ZmNjMTQ2ZGIxY2E4MTAgbGVnYWN5LXRydW5rCis0NzI2NyBmNGUzM2IxMmJiNTdiMTAwYjM0YzJmOTI2OTA1MmY0MzIwOTUxMDRhIGxlZ2FjeS10cnVuaworNDcyNjggMzRhNjZlMmY4OTU5ODAyNWFkMWM3M2E0OWE0YWI4M2QxYmE1ZDU3MyBsZWdhY3ktdHJ1bmsKKzQ3MjY5IGY2OGU1MWE2NzNkZjczZjJiMWY0NzQ5ZTc0NmNmMzliYzA5OWYyNjIgbGVnYWN5LXRydW5rCis0NzI3MSAzNGNiOWE2Y2UxMmQ4N2Y2YWUwMzE2NjYxMDc1Yzg4YjA5MjY2MTEwIGxlZ2FjeS10cnVuaworNDcyNzIgMzc0YzIyOWQ5MGU4ZjM2NmU1OTU1OTg0YzQ1NjE1OTExZTk2NzY1ZiBsZWdhY3ktdHJ1bmsKKzQ3MjczIDVhNGFiMzgyMDU4YTVmMTBmMzRmZjI1MjBhNjA1NDNhMDQ3NTE0NjAgbGVnYWN5LXRydW5rCis0NzI3NCBlZWJjOTVmOTU4ZTQ4ZjM3N2RmZDk5NWNlNjNjYmFhNGEwNjc1NTVlIGxlZ2FjeS10cnVuaworNDcyNzUgMjM4ZTBiMjAzN2ZjMjQ4YWE3ZTYzZGU2ZWRhZTQxNWRjNDY2MzJhMiBsZWdhY3ktdHJ1bmsKKzQ3Mjc2IDM0NDI1MWNkOGQ3NjQ0MDljYzAzYzU5NjdmYjE1Zjc4YzI3ZDU0MjYgbGVnYWN5LXRydW5rCis0NzI3NyAzZmE3OTBiMGFhNjgxNWMxZTFkYWU4ZjIzMGFjODVkYWJlODE5OWQ4IGxlZ2FjeS10cnVuaworNDcyNzggZjkzZGJmY2M2NjNiMzMwNzNjODJiZWRiZmMzZTU4NWMxZDQwZTdlMSBsZWdhY3ktdHJ1bmsKKzQ3Mjc5IDU4Yzg4YTdjOTMyNjNjNDhiYmViMWVlZDNhMjIwM2MyMDUwMGJjNmIgbGVnYWN5LXRydW5rCis0NzI4MCA4ZmVmYTk5ZTg3YzBkMzg1NjQ0OGZjNzY3M2QyN2RlOGY4ZDEwNmZkIGxlZ2FjeS10cnVuaworNDcyODQgZWQ0MzI0M2M4ODYwNWVmYzhlMDlhZDQ0YWZjMWEyN2Y2NTY2NGJmNCBiY2Fubm9uLXNhbmRib3hpbmcKKzQ3Mjg1IDQ1MjQ3YjkzYTVkOWExMDE5MjA3YTFkZTIyMjkwZWQ2NWUwNjBjMTYgYmNhbm5vbi1zYW5kYm94aW5nCis0NzI4NyBiM2MwZTA3NTlhYzA5ODA0NDYwOTJlNDVlNzc4NGQzZjNiM2FkY2FkIGxlZ2FjeS10cnVuaworNDcyODkgZGE1OTgzNjE0ZmFjMjI4MTljYWVjMDk1YmZlMjM4ZjAxZjYzN2U1OCBsZWdhY3ktdHJ1bmsKKzUwNDc3IDEwOGRjMmYxZTdkYTMyY2YxYTFjN2U3ZWJmNWRkZmM0ZWE1ZTFjNjUgYmNhbm5vbi1zYW5kYm94aW5nCis1MDQ3OCBiYjMwNTAyNjMyNDQyMmFlN2FjNDVkYjNmZDA5ZTQyMmJlOWUxOTU1IGJjYW5ub24tc2FuZGJveGluZworNTA0NzkgYjhhOGVmYzAwYjFlMjVlMmY0YWQ5ZDdjZGM0NjVhMTNlZTY4MWEwNCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNDgwIDkwM2Y5ODY3NjU0YTE3YTM5NDc0Y2VhZTMyOTMxNjY3NWQ0MTQ0MzggYmNhbm5vbi1zYW5kYm94aW5nCis1MDQ4NiAzNWFmZTdjNDY3NzIwNmNkMzViYTM3YTIwODc1NzQ4M2UxNGUyMzg4IGJjYW5ub24tc2FuZGJveGluZworNTA0ODcgYjQyODEyYzc3NGQwYzk0OWIwYmE3N2NmNWMzZjYxODA3MDEzODJlYSBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNDg5IDA2NmFhNDJjZTVmMjQwOTc4YzE2NTZmNWVjYjYwNjY5NWViODJhMDUgbGVnYWN5LXRydW5rCis1MDQ5MCBhYmIyYzc2YTVlMDUwY2Y4ZDA2YzI2MDczY2YyMjY1YjJmMDQyYmMyIGxlZ2FjeS10cnVuaworNTA0OTEgMWM1YmRiYzc1ODBjYTE4Y2U2OTkyYjE4YjcyYjQ2MjYwMmI3NzUzOSBsZWdhY3ktdHJ1bmsKKzUwNDkzIDlmNzBmNmJhN2I2OWNiZTZiYWRkMTFmZDI5MDczMjQ5Mzc1NmFhZjIgbGVnYWN5LXRydW5rCis1MDQ5NCBiYmM3OGYwMjEwMDdjMGYwNDIxOGQ5Y2EyNmMwYmE3OWJmMDY4MGI1IHRpbS1jdXJyZW50X2ZyYW1lcworNTA0OTUgNjRjY2Q3NDVlYTkyMGJlMWI5OTM4OTFlNDk2MzdkMWYzNTFjNDQ5NCBsZWdhY3ktdHJ1bmsKKzUwNDk3IDk1ZjllMDE4NDU1NTZmOTYxMjgxNjFkYTRlYWVmNjFiM2JmNTZhMmIgbGVnYWN5LXRydW5rCis1MDQ5OCAzZjU1NjFjNWQ5NTk1NWIxMzljYzY0ZWUyNzJmZTNmMDllMzk1MzM1IHRpbS1jdXJyZW50X2ZyYW1lcworNTA1MDAgY2EzZDlhNjcxMjZiZjhkOTE0YTc2NjFiN2RhMjAwMTExNmQwZDkyMCBsZWdhY3ktdHJ1bmsKKzUwNTAxIDhjYzk3ODQxMzBhMGU4M2QwNjI3N2U1OTdhZjBhNjQ4NjBlNzk2ZWYgbGVnYWN5LXRydW5rCis1MDUwMyBjMDJmYTE4N2UwZjQ5Y2IyZGNhN2E5YzQ0OGRiNTM2MThhNjZlNjkxIGxlZ2FjeS10cnVuaworNTA1MDQgYzY3YjIzMzk3ZjMwNjQ5YWZlNzU0ZTU3MzA3YzhkYWY3ODc2YzU2MiBsZWdhY3ktdHJ1bmsKKzUwNTA2IDBmZTA4YWVkYmQ4YzRmY2JkZmI2MGEzYzIzNTI0NjgwYzEyNDU5YzEgbGVnYWN5LXRydW5rCis1MDUwOSBjNTQ3NjQ1YWI3MzY0YzI5NDc1NjZhZGFlYjk3YjIzMDNkYjYxZjc3IGxlZ2FjeS10cnVuaworNTA1MTAgNTE0MjhjMzc4Y2MzZTI2ZjFmYjJkYzczZmNhYzg0YzMyNWE0Y2M2YyBsZWdhY3ktdHJ1bmsKKzUwNTExIDdlNDNkMDJlZTIxYTYxZWRmNmNlMzc0ZTQ1Y2I5NGZmNzE0NDQ4ZDIgbGVnYWN5LXRydW5rCis1MDUxMiBjMWY0YmY4ZmY3NDhjMDFmNmMyMzg1NzMwNThlOTI0Mzk3NjQ3M2E4IGxlZ2FjeS10cnVuaworNTA1MTMgMzVjNGZkYTQ3ZGZiZDhmNzMwODVmMTIxYjM5NDAwYjU5MTQxZWZiZSBsZWdhY3ktdHJ1bmsKKzUwNTE0IDAyNTk4YzU3Y2EwOWNjMGU4ZWE5MjQwYTIzNWIzZGYwODVmODc5OWEgbGVnYWN5LXRydW5rCis1MDUxNiBmMzczNjQ2Nzk1MDE4MjU1ODk5ZmJhZGI3N2U4MDY2NWIwOWM3MDFmIGxlZ2FjeS10cnVuaworNTA1MTcgYWU1NjQ1Yzc2ZDVlYTMzZWNiOGFlNTgxM2E2MTdlMzE1ZWZiMWZmZCBsZWdhY3ktdHJ1bmsKKzUwNTI2IGI5NzhhZmU3Y2FiNjZhZWNmZmRhN2M5ODczNzRlY2VjMGY2NzI0YjQgbGVnYWN5LXRydW5rCis1MDUyNyA4YWRkYzkxMzE3MWU4ODM0OGMzZjQ5Nzc5MTI0YmViZjQ2ZTEwYTdjIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTA1MjggZjJhYzMxZmMzNjllNjJmZTc3ZmI1YjVjODkyNDcxMGVmYjQyYzBiNiBsZWdhY3ktdHJ1bmsKKzUwNTM3IDNiMzhhYjljNGIwMzY5NWEzMzE1ODUxYzlmYmM4ZmM3MjUwYzYwNGUgbGVnYWN5LXRydW5rCis1MDU0MCBjODQ5OTdlMWVjYzc2OTI1NDg5YmQzMDFkY2U2MzBkMDdjZWMzYmVjIGJjYW5ub24tc2FuZGJveGluZworNTA1NDEgYjZmZDQ5OWU0MzQzZmI3Nzc5MGNmZTRiNzM1MjdmMTMzOGIyZjIwNCBsZWdhY3ktdHJ1bmsKKzUwNTQyIGMzNjE5MTVkZjI5MTNjNjFhZjc5MGEwNjE3ZjJhMGU0NDE3Y2VkNDcgbGVnYWN5LXRydW5rCis1MDU0OCBmY2JmNDYyMTE5MDNhNGYyYTBkNzY0MDg2ODdlYmUxYThlNGY4MDY4IGJjYW5ub24tc2FuZGJveGluZworNTA1NDkgZTQwMjQ0ZjVmZWI5NGQwMTU0ZDNlMDNiMDNiODc5YzNiY2MxMTBlNiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTUxIGZhNmNhM2Y1ZjIyNmU1ODBlYmJkZDY5ZTExYWZmOTliODVhMGViYzYgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU1MyAxY2EwMTViZTcwYWUyMmY4NWFlZDcwZjhjOWVkNjhmMWUyN2I5ZWQ0IGxlZ2FjeS10cnVuaworNTA1NTggMmQ1N2U0YjA4Y2U2OGNmN2IxOGIzNmQ4ZjUxNmI3YTViOGRmZDdhNSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUwNTU5IGIyODY1MzYyMjA5MzgzMDJjY2UxNmViNTJjMGZjNjBjZDA3YjRiNTQgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU2MCBlMzFlZGVlNWJjM2Y1NGUzNDI2NjIwMjk3ODliYzRlNWFjNjQxNzRkIGJjYW5ub24tc2FuZGJveGluZworNTA1NjQgMjE2YTk3YTJlZDM2ZjI1OWRhZWFmMmY5MTE1OTIwMzI0ZjEyYTc0NyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTY1IGRhZWU4ZjhjMDM1Zjk2YWUxOWQwODMwZTcyYjEyYTEwMjNhNDIwOWMgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU2NiBlM2Y2MDY2Y2U3NWY1ODJkOTRkMjI4MDc5YTBiNzUzMzc3MWFjMzdjIGJjYW5ub24tc2FuZGJveGluZworNTA1NjcgNTJhODczOGY1YWI0ZDFlNjgwMGQzM2RlMDEyN2NkNmY2MjZlNDg5NSBsZWdhY3ktdHJ1bmsKKzUwNTY4IDAzYjZmZTU3Y2Q2ZGY1YmIzNGNhMTlmNGI3NjBiOTQzMTg2Y2M4MDYgbGVnYWN5LXRydW5rCis1MDU2OSAwMGY5NzVlYWQzNDRhZmIyY2FkMTRhMmNlNTk1MTlkOThiMWM2YzVjIGxlZ2FjeS10cnVuaworNTA1NzUgZDY0NjNlOGVmOWM0N2QzMjczZDNlOTA1NWRhYWQxMTY5MzliMGQwZSBsZWdhY3ktdHJ1bmsKKzUwNTc2IGY1MGI5ZGE1ZTM2MTk1M2FkNDBiM2MyNDNhMGE2ZjRkNzQ4MGY5OGMgbGVnYWN5LXRydW5rCis1MDU3OSBhZTBjMzI4YWM1YmY5MWJmOGU2OGM1ZDk0MTIxZWRkODZiYzdmMzM1IGxlZ2FjeS10cnVuaworNTA1ODIgMjE0YjI4ZDdhOTk5MzM0ZDA0MWFjNzA3ZjBmZGU5OTYzYTU4MDZlNSBsZWdhY3ktdHJ1bmsKKzUwNTgzIDY1NTIyOTkyM2Q0MmY5ZjMzYjNjMzgyMTA0OTcwZWM3ZmJjY2Q4M2IgbGVnYWN5LXRydW5rCis1MDU4NSBjN2RkNjY5NmVjOGNiMTcwYTE3YzdhZTJjNzAyZDFiYWU4NWFmNWRjIGJjYW5ub24tc2FuZGJveGluZworNTA1ODYgNmY2OWFmYjc4NWQwYmY5YzVhMDAwN2Q1NzRjZGQ4OTE0YWUwNTI4ZiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTk0IGU2ZjE2YjdhNTg0ZjIzNjZkMTFhNzhjN2YwZjdhNTMwNjRiZWNhMjkgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU5NSA5MzNiZTNlMGFjNmNiMDU2ZWE2NGE1MDEyMjM1YmNiOWYwNWY2MmYyIGJjYW5ub24tc2FuZGJveGluZworNTA1OTYgNzE3YTc4ODdmZDdhNzZkNzE0YjhjMTJkNmFiOTA4ZGMxYjc3ZGJjYiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTk3IDcxODJjMjc3NWMxZTQ1NDJjZDdkNDI2MjA1YzQ5ZDY1YjNkODBiYzUgbGVnYWN5LXRydW5rCis1MDU5OCBiMWJiMTc5YThhYjA1N2RiYzJkNzQ1ZGM5MDY2ODA2MjEzYjA2OWEyIGxlZ2FjeS10cnVuaworNTA1OTkgNDc2Y2Q4Mzc3N2YyYmE3MmVkYzdlZmVjYTI1NTZkNmI4ZGQ4NTNhMCBsZWdhY3ktdHJ1bmsKKzUwNjAwIDJjM2VjNzIwYWE3YmViMGRhNDAwMmI4NDdjYzVlZDdkYzc4MjU2NmMgbGVnYWN5LXRydW5rCis1MDYwMSBiMDk1ZTgzODhiMmU2NDUyNWRlMjgzNWM3MjJlYmJiZDJjNjE1OTVmIGxlZ2FjeS10cnVuaworNTA2MDQgMzZjNWQwODViODY5MjA3NDAzY2Y0MWU2MWI3YTIyZDRiNzFlYzdkOSBsZWdhY3ktdHJ1bmsKKzUwNjA3IGM0OGIzYTY4ZjY5NjJhNjk1YjI5YmQxNjJiMjQyODk5ZjYzYThkN2EgbGVnYWN5LXRydW5rCis1MDYxMCBiNTYyZmQ3OTUwMGQxZDM3MGY2OTdjZGU1MmRlNDA5N2E2YjY0ZThlIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTA2MTEgMmYzMDUxNWNmNjZiOTZlOTFiYWExYzdiNDY5OWZjNDE0MzRlZjEzOCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNjE3IDg5MmI3YWMyNmQzYmI1OTAwODQyNWNmMzZlYTgyMzg3NjUyMjIxOWMgbGVnYWN5LXRydW5rCis1MDYxOSBlNGI2YTRmMmNlMTQzN2RhNjE0YjlkMjFlZGZmMDU4OWRiNWFhYWUxIGxlZ2FjeS10cnVuaworNTA2MjAgY2Q0NTljOTIwZjk5MGM5NDNmNjEwNjFlMmIyZjMwMTM0OGE0MWQwYSBsZWdhY3ktdHJ1bmsKKzUwNjIxIGE3NzY4ZmVmNTliMmNkMWViZDJiYzc5OGIxMzk3ZDdjNjRhYjE0OGUgYmNhbm5vbi1zYW5kYm94aW5nCis1MDYyMiBmYzY5ZmE2ZTU0Yzg2ZGMyZTE0ZDg0MDUxOGYzMTIzNTc1M2I5NzhiIGxlZ2FjeS10cnVuaworNTA2MjcgMThiOTc5NmI3YmE1OGM3NGVhYTMyMmU1OWY4OTNlMzAzMjFmN2FhNiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNjI5IGM4NzBlZTA2NmMxMjU0OGM4ZTk3YTM4MTE4ZGQ3NjEzZGVjOGFlZjUgbGVnYWN5LXRydW5rCis1MDYzMCBmNzFmMjg0MzYzMWZlY2ZiM2JhMDk1NDMxMjMyNmUzYmEwODU4NzlmIGxlZ2FjeS10cnVuaworNTA2MzEgMmE4NGI0NmFkNjRjYTY5ZmE0ZWRjZjVmZTBlNWFlMzAxMmI2ZjU1NCBsZWdhY3ktdHJ1bmsKKzUwNjMyIDE2ZjNjMDJlZGUwMjUzMWIxZGI3ODBkNGVlZmNhODQ1YmYyOGNiZDUgbGVnYWN5LXRydW5rCis1MDYzMyAwZGU1OGJjZTQ3ZWYzMmEzMGYxZWU3YzE5NGFlYzJhYWYwM2E1YTkwIGxlZ2FjeS10cnVuaworNTA2MzYgN2RmYzc3NmRkODFiY2VmNjgzMDAzNzYzODUyOTlmNDgxZjI0ZmNiOSBsZWdhY3ktdHJ1bmsKKzUwNjM4IDlmMmMzZGU3NDg1NmRkZDEzYmZhZTY4ODBiMDU3MWMwNDQxNWM2ODQgbGVnYWN5LXRydW5rCis1MDY0MCA4NWZmYzBiZmNjOTgyOWVhZjA2ZmZjNDBiZjdkNjlhYjEzZGRlYWZjIGxlZ2FjeS10cnVuaworNTA2NDMgYjYzMjU2MzQ5ZTc3OTAwNTFhYzcxNzc0NGEyYmY5N2EwZWJmOTM1ZSBsZWdhY3ktdHJ1bmsKKzUwNjQ3IDdmNDBlZjg3MTczMTExNDZmNzA0OTM3YjVlYjUzOWQ2NjJlNzI1ZmIgbGVnYWN5LXRydW5rCis1MDY1NSA2YjFlZDdiNzA0OGU1ZThiOTE4MGI5MTk5NzhlZDU4NDcyNzQ1ZWM3IGxlZ2FjeS10cnVuaworNTA2NTYgYmY0NzRmOWQ1MjI1ZTdlN2VhNjBjNDE5ZTQ0OWE4MTdhZTE4MTJlMCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNjU3IDVlY2YyMmE0ZTVkZmMyMDQ0NWQzNDdkYTA1NDBkNjc4YzRjZDVjM2MgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDY2MCAwNTI5YTU4NTA2NGM0ZDc0ZDQ2NWJiMWRhY2RiNjg3MGE5MzA4YWRjIGJjYW5ub24tc2FuZGJveGluZworNTA2NjEgMTQ2NzFhODBhYmVmMDkwNzQyNmM5OGRlNmNjNzYyZGI2ZDBlNTVmMyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNjY0IDJhNzZlYzJmMGI3OWQwZDU0YTE5YzlhYjAzNjY1MjNhNDk3NWRhMmMgbGVnYWN5LXRydW5rCis1MDY2NSAwNjMxNjQxZmRlZmY0ZWU0NTBjMmZmNjRmNTExM2MzY2FiYzY4MDUzIHJlbGVhc2UyNC1tYWludAorNTA2NjcgMDA3MTUzNTNmODJjNTY3N2Y3ZjEzMDIwNTdjMDE3OTZkYjY4NjkwYyBsZWdhY3ktdHJ1bmsKKzUwNjcxIGMxMzZmZjRkNDI2ZGZiY2I3MzI3ZDRlMzU2MDk2MjkzZDA3OGRjNTIgbGVnYWN5LXRydW5rCis1MDY3MiA5MTBhOTQ4ZTAyOTBmMTgxNzE3OGE0OGY4ODdjMzRhZWQ0YmY1YWFlIHJlbGVhc2UyNC1tYWludAorNTA2NzMgNzU2ZDU3YWNkYTg1YmNiYTI4ZjIzMGU0NWQ3MTQ4ZjhjZmNjZWI5OSBsZWdhY3ktdHJ1bmsKKzUwNjc0IGJkYTkzYjQ1Y2E0MTNlYjNhNTExZDUzYmNlZWExZGVlNWNlMzdiNzcgbGVnYWN5LXRydW5rCis1MDY3NSAzZGRiNTk0ODNmMTAzMzVmMTY1MTY5YzY4YTI4MmFmOWMwYWM2MTQwIGxlZ2FjeS10cnVuaworNTA2NzYgYWVkYjg1ZWU0ZmVjMmVlYTcwYTk5MmM1NjVkNzIyNTU4OTJhYWJhMSBsZWdhY3ktdHJ1bmsKKzUwNjc3IDUwYjBiNTRmYjE3ZDdlM2ZiZTVhYmMwMmQxNTdkYWE0NWIyMzBiZjAgbGVnYWN5LXRydW5rCis1MDY3OCA3NzVmODViOThlNjU5ODM5NjM5MzRhMjhkNDVkOWZiMDJiNDE4NTEwIGxlZ2FjeS10cnVuaworNTA2NzkgOTBkNWQxZmVhNGYyYzExNTY3ODM5YWFlN2Y1ZjliNzJmZjIzZDk5MSBsZWdhY3ktdHJ1bmsKKzUwNjgwIDM1ZDUwZmJlMGI4ODk5ODBmZmIzNjVkZThlYTAzY2Y5NDUwM2FjZDggbGVnYWN5LXRydW5rCis1MDY4MSA5MzRiYTViZThmM2YwYzI3MTIyYWQxNzM1MjNjNzAyMmE5NWMwNjY3IGxlZ2FjeS10cnVuaworNTA2ODMgYTU1MTk3YmQ3MjAwZGUxMTMyM2RhZGI4Yzk1ZjE2ODQ4Zjc3YjU0YSBsZWdhY3ktdHJ1bmsKKzUwNjg0IDYwNjRjYjMwMTIwOWM4ZWM3MzdlN2ZiNTFiN2U4YmQ1NmQ2ZmQ3YmMgbGVnYWN5LXRydW5rCis1MDY4NSBhYTg1NzkxZjU5OTEzZjFhMTA2ZDdhOTgyYTEyYWMzYzI3MTc2YjNhIGxlZ2FjeS10cnVuaworNTA2ODYgZDJiZmNjMWFhYzNkNGZhZTllMjkzN2I4NzA4ZjI3ZTM2OTZkMDBjZCBsZWdhY3ktdHJ1bmsKKzUwNjg3IGJiMTcwNzI2NWRlN2UyNjgyNGJiNWMwMDg5ZTI3MGI4NDUxMTc0ODEgbGVnYWN5LXRydW5rCis1MDY4OCAwMDg5NDE1MjE4MDUwMmRjYTY0Yzc0NGQ1ZTA1MzFmZmEyMTU5NWYxIGxlZ2FjeS10cnVuaworNTA2ODkgNjU0YTViMjYyNzE3ZTI3ZjI5YzI0OTRmMWQwMWNlYzYwNjRhYTczNiBsZWdhY3ktdHJ1bmsKKzUwNjkwIDYyOGI4NTEwZmVmYmI5Nzg5ZGQ3MmYwOGIxNzQ2MDBkZDcxZjU2ZmYgbGVnYWN5LXRydW5rCis1MDY5MiBmZGEzY2JkNzRjNzE4ZWZjZTZmN2ZhZDQ2NWFiMTE3YTUxZTVhZTIzIGxlZ2FjeS10cnVuaworNTA2OTMgZmY1Mzk3MDdhMWVkMzQ3YmJkOTdiMDk1NDI3YWY3MzdjZTI2YzkzNSBsZWdhY3ktdHJ1bmsKKzUwNjk0IGU3ZDBhNzVlMzE0NTUzZjYwNTFmNWYxMmExNzRmZWQ4MDU4Njk2YjUgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDY5NSAyNDRmYjUyNGRkZDQxYjU0NGJmNTc2YmJmODNjOTVlMWQyMzhmNWNkIGxlZ2FjeS10cnVuaworNTA2OTYgOTc5ZTM5MGUyYmI0YzU2NWQwNjhkM2ZjZTgxNjliZjI0MjEwN2VlOSBsZWdhY3ktdHJ1bmsKKzUwNjk3IDk3MDE2MzM4MThiNGJiMjAyNmJmNGQ3MmFmOGIzOTAwYjQxODNkMTEgbGVnYWN5LXRydW5rCis1MDcwNCA5NWZhOGZjOGEwNjVjMzcwNGU4MzhmNjk0ODM3Mjg1NDgzNmQ0YjJhIGxlZ2FjeS10cnVuaworNTA3MDYgYWNmZjFjMzRjY2EzYzM1ZjcxMDY3NWQzYWY5YjcxZDZjZjIzYmI2MSBsZWdhY3ktdHJ1bmsKKzUwNzA4IDg1YjIzOTY1ZWM0YzA2OTFiM2EyNTE1MzhjZjk5NTIzODc1NjBiZDUgbGVnYWN5LXRydW5rCis1MDcxMCAwOGYzNWFiZWNmOTgwZmRhNTRlNWNkOWM2YmFjMjJiZDU0NWQwZDA3IGJjYW5ub24tc2FuZGJveGluZworNTA3MTMgYzU3NTliNWE1N2YwYzY5MDkyOWE5OTcwYWI0NWZiZjA0ZjRmNmZlYiBsZWdhY3ktdHJ1bmsKKzUwNzE1IDFkN2RhODYwODAzMWJmZDJmMGM3NGEyZDA5YjZlYzhiOWViNTgwOTkgbGVnYWN5LXRydW5rCis1MDcxNiA1ZmY1YTU4M2IxMmU5YzY0ZDUwZmJjNTEzZTJmZmFmZTk0Njc3MDg2IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTA3MTcgODRlOTE2NmI3MTA4ZjEwZDYyMjQ1MjM2MGJhZmU5YTFlMDYwMDNiMiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNzE4IDNjNWRiMmIzZjg5M2FkYTI3ZGZhYzVkMGM1ZmYwNGIwOWE2YTJiY2IgYmNhbm5vbi1zYW5kYm94aW5nCis1MDcxOSA1YzkwM2Y2NTA3MTk5ZTNkNjJlYjI4MGY3MDU2MDUwYTBhODgwZmI1IGxlZ2FjeS10cnVuaworNTA3MjAgOGZlNjc4NmY1MTQ0NWJhNGI0NjA3MWRiNjFjNjBiNGExM2RjODE2MCBsZWdhY3ktdHJ1bmsKKzUwNzIxIDVhYjc2ZmJmMjNmM2NmMjE3YmZmZGU3YTVhMTVjMTFlZDdhZTIzMTkgbGVnYWN5LXRydW5rCis1MDcyMyAyYTFmZWZiMTg3NjRjYTMyZDFmNjhiMTVjNTFkMGU4MGRlODllOTQ0IGJjYW5ub24tc2FuZGJveGluZworNTA3MjUgMTQwNTMxYjEyNGY4NWRmNTcyOTI3NDFlMjUwNDZiYzk1ODg1ZDdhYyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNzMwIGJlMTczNGNjNmRjMDJjNTc0ODk2YTE2MDI2YjU5MGNiNDhhYzIxNzcgYmNhbm5vbi1zYW5kYm94aW5nCis1MDczMSBhMzJmMjBlY2MwMjRiN2JjYjk3NTZjNzQwYzVhMWFkNTViYzZiYTRmIGxlZ2FjeS10cnVuaworNTA3MzcgNTk3NjliNTM0Nzg5ZTc1M2E1NDIwNmYwNWU5MThmMjFmNzEyZDE0MyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNzM4IGViNDQwZWM3NGExM2ViZjU1MzEzMmM3NjA0ZmRhYTdjMjVjNDI1YWYgYmNhbm5vbi1zYW5kYm94aW5nCis1MDczOSAwNjA3MGExMmE2YjAyYjU3MGRkZjc5NzhmN2Y1YWZlNDIxNzgxOWE3IGxlZ2FjeS10cnVuaworNTA3NDAgMzU3MmZhYTlhMjllMDc4YzMyMTdmNjlmMWNiODQwYjkyOGE0N2MxYyBsZWdhY3ktdHJ1bmsKKzUwNzQxIDdmMzgxNzMyNTFiYmM2YjAwNWVhMGFlNTM1N2MwNzE4ZmI3MWJhMTYgbGVnYWN5LXRydW5rCis1MDc0MiBhZjRhM2EwZDQ3Y2NmZTZmNmI3NDczNDVjNDc4YzA4OWI2ZjFlNzA1IGxlZ2FjeS10cnVuaworNTA3NDMgZjIwMzFmMTVkOTlkODEyOGFkZjFjYjNhNzBiYWI3MWI5N2MwZGVhMyBsZWdhY3ktdHJ1bmsKKzUwNzQ1IGJhYTU0MzM3YzNkOWU5NWZiYWQzNTk2MTU3MTJkNGE0MWJmYTUyNzggbGVnYWN5LXRydW5rCis1MDc0NiA3YzA5YjY2ZjA0YmQxNDkxYjAzNjdjOTc3MWE5NDIxOTk3ZmQ3ZDRkIGxlZ2FjeS10cnVuaworNTA3NTQgNDE3Y2RlZGUwNjg4MGYxZDU0OTgzM2Q2YmM0NzgxMjJkMTE5YjhlOSBsZWdhY3ktdHJ1bmsKKzUwNzU5IGQwYTk1NjU0ZjgwMzIxY2UyMzUzOWM5YWQyYmE4YzI3ZjM2NWNiYjYgbGVnYWN5LXRydW5rCis1MDc3MSAwNzllNDJlMGI4MjZhODkwY2YwZjAzNTRmNGJiMDFiYmUyNzZjN2RhIGxlZ2FjeS10cnVuaworNTA3NzIgZjFhMjc3N2U1YzhiM2Q2ODU0YzQxYzQxYjg2ZjhhNjM1NDQxZTgxMiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNzczIDEyZTk3M2JkZmVlZTI5OGY5MTI0YjA1MDFkYmViZmI4NzdmNmYxZGEgbGVnYWN5LXRydW5rCis1MDc3NCBlZTZhYjMzMTc1ODFiZjc4NDVkODRiNWE2ZTk3N2RiZjg5OTEwNTA4IGxlZ2FjeS10cnVuaworNTA3NzUgODMyZmNlNTBkYTkzNjJlYTQ0NDQzZmVjOWU2ZTI0OTVlNmEyMjdlMyBsZWdhY3ktdHJ1bmsKKzUwNzc2IDcxMzJmOThlZjA3YjMyZDk5NDQ5MzNmMmRiZTdmOGU3NDgwY2NjMTkgbGVnYWN5LXRydW5rCis1MDc3NyA3NWE3MTA2NjYyYTNmZDYyNzI5ZTNkMjIyMzg4ZGY1MzI2MjIwMWM5IGxlZ2FjeS10cnVuaworNTA3NzggMTgwNWU2ODRkYzkyNTcyOTc1NDI1N2Y2MGJlYjExZWZkN2U4ZTkwMyBsZWdhY3ktdHJ1bmsKKzUwNzc5IGJjNWQ4MzFmMWRkYTUwOWNiZjU2YmZmZWM1ZTczNjcwYWFhOWE4MjcgbGVnYWN5LXRydW5rCis1MDc4MCBjZGJiNDRjM2RlODcxNWExMGMwZGNkYThmMDhhOWJiZWM2OWYzZTg1IGxlZ2FjeS10cnVuaworNTA3ODEgMGUwYTk3Y2VkOGU5MWY5MmUyM2E4ZWFlZGRkMmU2ZTQ3OTgzYTNlZCBsZWdhY3ktdHJ1bmsKKzUwNzgyIGU5NzczZmMyN2U5YjM2YTU5NWRlNTEzZjc1YmUzZmRhZGYyMzc4NzAgbGVnYWN5LXRydW5rCis1MDc4MyA5NTdiZjMxMTkyNDc4NDA2MjI4NWYyZmJmOWJmNDZkODZlYzhmY2UxIGxlZ2FjeS10cnVuaworNTA3ODQgOWQxOGQ5NjhhNThiMzMxZmU3ZjIzNWU5NjE2YzAxMjg0Mzk2M2E3ZCBsZWdhY3ktdHJ1bmsKKzUwNzg1IGUzZGE1Zjg3ZmU2NDFkOGIzOTJlYWU3NTFmY2EwYWMzZmY2OWY1ZGYgbGVnYWN5LXRydW5rCis1MDc4NiA1NGJiNzIwNjMyYzQyZmQxODVhZGU4OTk5ZThjMGUyODgyM2U2YWJiIGxlZ2FjeS10cnVuaworNTA3ODcgMGE0YWQ4M2ZkNjU0OTIyNTNjMjg3MzQ5ODE1ZDYwYmU4YmRiNjBiMCBsZWdhY3ktdHJ1bmsKKzUwNzg4IDNhYzg1MDk0MzdkZmRiYzI0NTAwOTY4Y2E4ZDNkODE0OWNkZDc2ODUgcmVsZWFzZTI0LW1haW50Cis1MDc4OSBiNThmNzk1MmUzOGFlODkxZDJhMTAzNTRmOTYxMDMzOWY0YTMxN2EzIGxlZ2FjeS10cnVuaworNTA3OTAgNzg2NDNiZTNjZjQwYmIzYTlmNGQ0MzkzNTcyZWUwMjIzMmM2M2U5ZSByZWxlYXNlMjQtbWFpbnQKKzUwNzkxIGEzZmRhODQzMjM0ZTQ4ZDFjYTZjODJiMjVlNjNjYTRhNDRhOTkzY2EgbGVnYWN5LXRydW5rCis1MDc5MiBmODgxOWJkNGU0Mzc5NzcwNWRhY2UwMTE3ZTIyYzU2MmFiNDQ5OTliIHJlbGVhc2UyNC1tYWludAorNTA3OTMgNTM0MThjYmFkN2ZkNGMzNjJiOWU3NDhmYzlkNTY1YjEzNDhjMWMzZCByZWxlYXNlMjQtbWFpbnQKKzUwNzk0IGE0YzRiN2VhNzljMGE3NGYzNjkxMzE5OWI3NDY3ODNiMWUxMTc4ZGIgbGVnYWN5LXRydW5rCis1MDc5NSA4MzJkNWEzNDEzMGZhNTM2NDU3MDc0MGRlNzUxMDY5MGExYmMzYTViIGxlZ2FjeS10cnVuaworNTA3OTYgYTRmYzRlNzUyNjM0NjgyNTI3YjdmMGQxZmVlMjViYzMyOGJkNWIwNCBsZWdhY3ktdHJ1bmsKKzUwNzk3IDYzYWVhNjg4YjViYjI2ZGZjY2RjNDBlNTY1NzI4ZGIyYWVlYzczOGQgbGVnYWN5LXRydW5rCis1MDc5OCAxYjFmZDE4YjFhZGE1MzgzYzI1ZTU2MjRmODYxYmYwNTNkNTg2MTI4IHJlbGVhc2UyNC1tYWludAorNTA4MDAgMDJmYTEwMTVjYmNjNGM5MzRjODQwYTNmOWZkMmZlNjIwMDFlOTcyYyBsZWdhY3ktdHJ1bmsKKzUwODAyIGNhYWYzN2U0NWQ0N2Q0N2VjNDc4MzU4NmI5NjA2ZTk0MGU4ZDAxODggbGVnYWN5LXRydW5rCis1MDgwMyA4OWUwOTBmZWY5ODUzMDIxY2FiNjk5NmI3ZDg0NjRiZTE4ZGI0MTMxIGxlZ2FjeS10cnVuaworNTA4MDQgZWZkZTVlZTg4YzlmNzc3OWYwMWNlNWIzZmM2MzI4ZjE3MzQyZjkzNyBsZWdhY3ktdHJ1bmsKKzUwODA1IDBjMDBlMmY1MDllMDA3OTM0N2EzZGE1ZDNkOGM1MTRmYmU3MTg3MzQgbGVnYWN5LXRydW5rCis1MDgwNiA3Y2U3ZWQyZWNkOWNhZDM0ZjI2NzdjODQzMTc3NDVjY2MyZTJiNDhlIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTA4MDcgZDcxZDQ2Njk3NGU1ODdiYjM2Mzk1N2EwOTljZmFjZWZmODc4NzFmNyBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUwODA4IGVhZWRjY2MwMjgzZDc5MTBlNDlmZjJlNzk5YWZlOTMzODI1MWZiMjAgbGVnYWN5LXRydW5rCis1MDgwOSAwN2NlZTAxYTRmY2NjMzg3ZjBmYzFkOTI4ZmE1MGZhODFlZTdjZTExIGxlZ2FjeS10cnVuaworNTA4MTAgYTVmOGQxZDI1NWE5NzliYzcwZjRmNjhjMDc0MzliNmMzZWQyZDM4OSBsZWdhY3ktdHJ1bmsKKzUwODExIDk5YWE4NDIyNGYxODE5ZDU1MjcyNmFhOTExZWE4NTcwOTQ1NGY0N2QgbGVnYWN5LXRydW5rCis1MDgxNSA2M2E0NGM5MWE0ZDVlYmNlMzI1ZmMwZjgyMmMyZThmODJkZjEyZTI3IGxlZ2FjeS10cnVuaworNTA4MTYgNjIyODJmZGFhYzVhMGExMzU2NTk1MDJiZjNjMzRiODVmNzQ0MTZmOCBsZWdhY3ktdHJ1bmsKKzUwODE3IDc5MGE3ODJkOTgzY2M3NDQ2NDE4NTQwMjIzMGJjOGViMjE3OWRiOTcgbGVnYWN5LXRydW5rCis1MDgxOSA2NjIxZWRmZDI5NmFiOGRlMTcwZjE2MDk4ODE3MGM2NzA3ZjAyMjdhIGxlZ2FjeS10cnVuaworNTA4MjIgMmQ0YzlhY2NiOGZjYzEzYzQyODZmMTgwOWZmMjA3ZWUxYzNlOTIyNiByZWxlYXNlMjMtbWFpbnQKKzUwODI1IDgzN2Y1Njk1MGNlYThiNzQyYTQ2M2Q3NDY5ODYwMTYzNDkyZmViMmYgbGVnYWN5LXRydW5rCis1MDgyNiBmZjhlN2M0NmU0Mjk4MDFmMDU2ZDExZjBlMzE0YWM3ZTY2YzZmOTY4IGxlZ2FjeS10cnVuaworNTA4MjcgOTUzNzY3NTJlNjdjZjkzYmIxM2Y1NGNmZmIzODJhOTQ5OWRjMTdkZiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwODI4IDkwM2ZkYzM4ZDU2NDVlNGMyZTAxODkyMDBmNWYwNTRjZDk2MTdhNzIgbGVnYWN5LXRydW5rCis1MDgyOSBmOTBmMzI4NjI3NTYxYzVkNjcxYTg0YWUzOGQxMjI2MTlkNmFmMzI0IGxlZ2FjeS10cnVuaworNTA4MzAgYjkxNTFjOGM3OWU4ZjUzZTlkMzM5ZDA1MDQxMDY3NTM2Y2YwMmQyZCBsZWdhY3ktdHJ1bmsKKzUwODMxIDVkMTE2MmU2YmMzN2Y0OGQ1ZjI4ZjliYWFlNGFlZjY2ZTkzYzMyM2EgbGVnYWN5LXRydW5rCis1MDgzMiA0MGU4Y2FlZjg0MGVmMjQ5YjU2NzBjZTA4MWJiMTg5YTRiZGE2YTZmIGxlZ2FjeS10cnVuaworNTA4MzMgMTQ5MDUyOWU3NGNlM2JhYjkyODNiODU1MzNiZDMzYzk2Y2MzYTA2ZCBsZWdhY3ktdHJ1bmsKKzUwODM0IGI1NWJmMmFkZmFlNWU5MTQzYWJiOGM5OWRjNDNkZjgzM2M4NjhlYzQgbGVnYWN5LXRydW5rCis1MDgzNiA1ZjMzMTIwNTRjZWRlNjFlODM1ZTQ4NDEzM2UzZTc5NTU0NGIwN2E4IHJlbGVhc2UyMy1tYWludAorNTA4MzkgY2ZiZjU3NTcyNDU3ZGMwMzVkMDhiMTRhNDc1YmMwMTk0YTIzMWUwOCBsZWdhY3ktdHJ1bmsKKzUwODQwIDZiMjAwYjhjNjNkMzMyNjZjM2NiM2ZiYzc0ZWI5OWU4ZDA5ZjhkYTEgbGVnYWN5LXRydW5rCis1MDg0MSA2ZDE4NGZiOGM1MzUwOThkOTlhMTUzYWZlYTY2ZmYyOTdmOTQ3YjU5IGxlZ2FjeS10cnVuaworNTA4NDIgN2RhNmY4MWFkNGQ1M2U1MjFhOTZjZjU3NTk0ODk2NGM0YjIyYTczNiBsZWdhY3ktdHJ1bmsKKzUwODQzIDE3ZDU2NzFmZmZjY2MzY2E5OGQ4YzZhYzcxYTFjMGUzMmYwNGM0MDYgbGVnYWN5LXRydW5rCis1MDg0NCA5YzZkYzZkMDliMDczNjIzZTMxZjg4MWEzNWYxYWUxYzgxMGNmYTQ2IGxlZ2FjeS10cnVuaworNTA4NDUgOWYzZjFlZGQ5YzM1MDYzOGQxOWQwM2Q5YmY1NTQ1MzEyNzU2M2U2YiBsZWdhY3ktdHJ1bmsKKzUwODQ2IDI2NzA2NTA3NmYwNTlkZWYwNDIwMTVlODVhZmQ0OWU1ZjUwNTg3ZWYgbGVnYWN5LXRydW5rCis1MDg0NyAyNzFiMmJiMmZjOTIzY2YwZGYwMzNhYjVhNTEwYTE1ZGE2YjA5NWM4IGxlZ2FjeS10cnVuaworNTA4NDggZjI5MmEyYjE0YmFmNDgxMmMzNDNhNzlkODk2MWNiYWI5NjUyNDQxNCBsZWdhY3ktdHJ1bmsKKzUwODQ5IGFjZjYwMDQ3MTM2OWY0M2Y0YjNmNzJiMzRlNDhiNDg3N2ZlNjlmYzEgcmVsZWFzZTI0LW1haW50Cis1MDg1MCBmMDhjNWJiYjgwNDIxY2QzNGJlN2IxYjgwZmIyMGVmNmJmY2I5YzM4IGxlZ2FjeS10cnVuaworNTA4NTEgYjgxNjQyZTUyMjg3ZjM2YmY2YTFlMGY5Y2FiMWIxZjUyYzlkNDljNyBsZWdhY3ktdHJ1bmsKKzUwODUyIDFlMDBlZjA3YmViMjcxOTg0ODIzYjhkMmYzNjE4MDRhY2U1ZDM5YzAgbGVnYWN5LXRydW5rCis1MDg1MyAxODVmNDI4M2EzYjljZDRiNjcwZDliMGFiZGYxZjJiYmNjNDE2MmUxIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTA4NTQgMjljMmZlZTZjOTg0OGU4YTI3Nzg5ZDcxYTcwYmJkNTM0OGQxZTllMiBsZWdhY3ktdHJ1bmsKKzUwODU1IDQwYjQ0NmVkM2YxMjYyZDk2MmUyM2UxYWZjM2MxOWJiYjAwZWUzNDAgbGVnYWN5LXRydW5rCis1MDg1NiA1ZWU2ZDNkYTBlNjQ1NjQ4N2QxMDY4M2JmNzU2OTcxMTI1ODAwNGM3IGxlZ2FjeS10cnVuaworNTA4NTcgYmNlZmJjNWU2NzFhZmQ3YTE2ODQyNWNhZWFkMzJkMDhjZmE3ZWRlNiBsZWdhY3ktdHJ1bmsKKzUwODU4IDBiMGNjN2E0OTY4MmNjMGFmODFlZDRlNDAzZmUyM2Q2YmQxZGI1NzEgbGVnYWN5LXRydW5rCis1MDg1OSBkNzY1Nzc1ZWQ3OWY4NTYzYTE5OTU1Y2Y4ZTViMDVhYTg5NTdlZjg1IGxlZ2FjeS10cnVuaworNTA4NjAgOGNhMzA2OGVhMzQzYTI0YWU3M2FhYjBmNDE0MTBhNTEwOGNmNDMwZSBsZWdhY3ktdHJ1bmsKKzUwODYxIDAyNWMyN2I4MTJmNjhjNDI0YTY2ZWJiNjhiMTgxZGRiNDI5ODcwZWQgbGVnYWN5LXRydW5rCis1MDg2MiBiMDExYmVjZjhjODIyYzJiYjU2NTRjOTkxZDdhNzZkMjAwMWVkMjE4IGxlZ2FjeS10cnVuaworNTA4NjMgYzE4YTY2OTRhMDY2YzdlOTVkMTVjNjdhYWM1YjRmNjY2OWQwN2VjOCBsZWdhY3ktdHJ1bmsKKzUwODY0IDAwYWNlNmU0MDhiMDM3MWEwZjIyNTg4MTU3MDRjNjBmZjkyNGMyNTIgbGVnYWN5LXRydW5rCis1MDg2NSBhMTEwYTQ0NjIxODlhMjAwMDJiOGQ4ZDRmMDc0MmU2NTRhZjRjNzBhIGxlZ2FjeS10cnVuaworNTA4NjYgNjFjMGZlNDgzNzZhMTJkOGEzM2M1YjY0MzVlMWZjNWMxOTU0YmIyOCBsZWdhY3ktdHJ1bmsKKzUwODY3IDYwNTIyZGZlNjI1OTkwYjA0NWE0MGE0MTEwMDdkOTg5Y2UwMzA1OGYgbGVnYWN5LXRydW5rCis1MDg2OCA3MmE1MmU2ZmM2ZjEwZTUzZjUwYjZmMTIxZjIwNjQyNTMwNDQ4MTM3IGxlZ2FjeS10cnVuaworNTA4NjkgODc5YmQ3NTEwZmVhMDBkMjEyNjk3YmFlMjJjMzk3NWM4NmE4YmYwMSBsZWdhY3ktdHJ1bmsKKzUwODcwIDZiM2Q0YTBmMmFjNTkxNTc4MDc0ZDVmZDM3ODRlYjQyZTY4Nzc5NDQgbGVnYWN5LXRydW5rCis1MDg3MSBjNGE3NTQ2YTUwOWYxNzRjMzg4ZGU0MzQ1NmMzZWJjMDZkMGU4NmUyIHJlbGVhc2UyNC1tYWludAorNTA4NzIgY2U0ZGZmMmE5NTIzODAwY2I2NTA3MTQyZWIwOTljZmE2NDg2MmNkMSBsZWdhY3ktdHJ1bmsKKzUwODczIGVlYTY3NDIxMWQzMmJjMWQ1NjNlMDJkMmVmZGQ5OTNlMzk2Mjc0YjEgbGVnYWN5LXRydW5rCis1MDg3NCAwZDBkODJlNDBiOTI3ZTUzZGFiODYzZWY2MDRkYjJhNWM1NTE1ZDg5IGxlZ2FjeS10cnVuaworNTA4NzUgYzZkNGMwYWYyYTEyMjI2OWExOTEwZDRhYjFhNTMzYWIwZmZiZDZkMSBsZWdhY3ktdHJ1bmsKKzUwODc2IGFjMDFiNjM1OWI2MjE1ODhjZDhmYjNjNGY3MzFkM2FkNjk2YTgyMDggbGVnYWN5LXRydW5rCis1MDg3NyBiMGNkY2JjYzVmNDU3OGRiNjRlNGM3MTAzODA0YTZlNGRiODUxMWZlIHAzeWsKKzUwODc4IGE3NTMwMDM2ZjA1NWNiZDg0MjE4MDM5MTk2NmZhMTZhNjJmNjliMDkgbGVnYWN5LXRydW5rCis1MDg3OSBlMTlkYTliMDAyZGEzMWM2MmYxODgzYWRhMTJkNmE0NTNlZDk2ZWUzIGxlZ2FjeS10cnVuaworNTA4ODAgNmViMzc1N2MyYzk5MWQzNjg5ZWI1ODc0N2IzM2E2ODIxZGVmOTNmMiBsZWdhY3ktdHJ1bmsKKzUwODgxIDI4Y2RkNDNlMDU2OTAyY2ZmYjdjMGMwMmVjNmNlNjJjYzQ2MjdlZTUgbGVnYWN5LXRydW5rCis1MDg4MiAwNzgxNzJlZWFhZTUzZDYxNDEyMzA3NDA4NDg0YmE5ODFhMmJkMmUzIGxlZ2FjeS10cnVuaworNTA4ODMgMGIzZmQwNGNkZmI0ODg1YzczNjk1ZDQ2NzFlYWFhYTI2NjMwZGM3YSBsZWdhY3ktdHJ1bmsKKzUwODg0IDExMmYyMTg4MjEzYjI0Y2IyMzc3YTBkZTJlMGNhZmRmZTUyY2NiZmUgbGVnYWN5LXRydW5rCis1MDg4NSA0MGNlYmFmYWU1NmZmNjAzZjgxY2RkOWUwZTJlMjUyYTFmNzRjNmI3IGxlZ2FjeS10cnVuaworNTA4ODYgMzUwNDNmYmE3YWVkODAxY2RkYTUzYThkMjcwYjcyOGYzODAzMmZmNSByZWxlYXNlMjQtbWFpbnQKKzUwODg3IGNkOGYyMGQ0MDBjMWM2NWEzMzBkNzNlNGNmNDk3YmE0ZDYwYmQyYmEgbGVnYWN5LXRydW5rCis1MDg4OCBlZjFlN2YzZDlmOWQ4MmVjOWNkZGI3NTlkZDAzOGZhYWQzN2IyYWVlIGxlZ2FjeS10cnVuaworNTA4ODkgNjFjOGI0MTA0YWVmYWVhNTIxMWY2ZjljZjBjODU0MWU4N2VjNGVhOSBsZWdhY3ktdHJ1bmsKKzUwODkwIDc1NDMxYjBiZmIwZTcyMTNiMGIzNGIwOTYwZmVlMDkzYTYzNDE3N2YgcmVsZWFzZTI0LW1haW50Cis1MDg5MSBiOWYzNTNjMmMwMjNlNWI5ODYzMzJkNzg2OGVkNmFjYzMyMDUwOWFmIGJjYW5ub24tc2FuZGJveGluZworNTA4OTIgNjk3YWUzNjJlZDAyNDE1MmExMDg3ODNjNjM5NjdlYTAwMTE3ZDcxNCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwODkzIDQyNzZkMGI0NjlhZmZmMjRmMmI3ZTI3MTAxZTA2ZThiNWY3MmJkYmMgcmVsZWFzZTI0LW1haW50Cis1MDg5NCAyNzdkN2FmNTVjNDk0NWE3ODBhYjM4NGQ3NmVmMjNhYmU3NDUzZjc5IHJlbGVhc2UyNC1tYWludAorNTA4OTUgNGE2YWRlOWNlNzgwZGI5MDU1N2EzNmExY2Q5YzA1Mjk2ZTU0ZTQzNSBsZWdhY3ktdHJ1bmsKKzUwODk2IDU1ODY1ZDdiYzZlYTQ5MTQ0NWFjYWE1MzExYmUxOTlhNThmMWVmYzcgbGVnYWN5LXRydW5rCis1MDg5NyBiZjE5ODRjMTNlMmY3OTg2NDQ2NDlkZmNjMDgwZTgxODAxYTBkNjEzIGxlZ2FjeS10cnVuaworNTA4OTggNmRhY2RjMWEwMDU0ZmE5MzY5YzczYTk1OGY1OTEyYTJlYmM4NjY5YiBsZWdhY3ktdHJ1bmsKKzUwODk5IDBlOWEyNjlhMjE4OTBiMTAwNWU4YjgwOTBkYzY3NmYxNzYwYTEyOGQgbGVnYWN5LXRydW5rCis1MDkwMCBkMTY2NGE1MDFkYTVjYmRlMGUwMDEwN2U4ZmZjOTk2MWU4YWJkYTM2IGxlZ2FjeS10cnVuaworNTA5MDEgMGRlOWQ3MTQ0NGY2Mjk2ZWI1ODQwMDcxNjE2MGExNDYzYTNlNWQ3NiBsZWdhY3ktdHJ1bmsKKzUwOTAyIGE5YjJmZDJkNGM5NjE3Y2E1NDM0MDk3M2U5MjI0NjFhNjYzZTQ4NzggbGVnYWN5LXRydW5rCis1MDkwMyBjODM0Y2I5NTYzN2FjZGIxN2QyM2RkMTZkNmFhYzMyZGE2YTBkNTRlIGxlZ2FjeS10cnVuaworNTA5MDQgYzNiYjRiMjNlYjliM2ZiYWNhMjYyYzlmODFlYzA5ZmNhZjY5MjA4ZSBsZWdhY3ktdHJ1bmsKKzUwOTA1IDQwNmMxZWZlN2JlZWQzNDY5ZjY5MWU2OWIxM2NjOWJjMzNkYjcwNTUgbGVnYWN5LXRydW5rCis1MDkwNyAwNGRmMGE5NzIxYjJjNzRjYmYzMDE0MjVjNjIxZWI5NTNmNDIzMmY3IGJjYW5ub24tc2FuZGJveGluZworNTA5MDggMWI1OTdjODAxNTcyMjJjNDMyOTEwOGQ0YzczNDhmZjQ3NDA0NGI5ZiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwOTA5IDlmZGM2ODQxYzNlYjY5YzcyZWExN2ZiMzRhMDFjNTQzZjIzZmEwMWEgYmNhbm5vbi1zYW5kYm94aW5nCis1MDkxMCAzMDhiYTY0MzE3M2EwMDRmM2ZiY2I5ZGE0YTU2YmIyMzI4Mzc4NDNhIGJjYW5ub24tc2FuZGJveGluZworNTA5MTEgZWM1MTZiYWY4YTMwYzVkNTljMjVhMjFlMmQ4MmI2NDRhMzk2NTQ2MyByZWxlYXNlMjQtbWFpbnQKKzUwOTEyIGYzZDU0MDc1MWFkZTA3ZGQ5OGNhYjEwODYzZWNkMmZkYWI3MTE3MTUgbGVnYWN5LXRydW5rCis1MDkxMyBjNGFjNmVhNDk3YTEwNWVkMzU0NDNlNGU2YTI0Mjc2YzY5ZDkzYjk2IGxlZ2FjeS10cnVuaworNTA5MTQgODdjOWUzMzFkNWM4ZDYxMTJjODEzZGU4MWEzZGY2NGFiZDg1ZjI2NyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwOTE1IDZiOTZkOGM5MjNiZWM1YjE1ZWE0ODUwYjEzMzcyOWI4MTVkNGJmODQgbGVnYWN5LXRydW5rCis1MDkxNiAzZjQ0ODViMjBlNzk5ZThjYWUyN2EwZjdhYTgyY2MyNzUwOTQ4OGE0IGxlZ2FjeS10cnVuaworNTA5MTcgNWU4NWVlZTMzNTgyOGQ4MzVkOGE4MDQ5NTQ3OTUzYmVkZDhlMGM4MSBsZWdhY3ktdHJ1bmsKKzUwOTE4IDEyY2ZhMWJjZjg0M2Q3NGJjYmUxM2U4NDI1MjcxZTNmNGIzZmQxMWYgbGVnYWN5LXRydW5rCis1MDkxOSA4YjljY2Q1ZDkzMWUwZjI0MzdiNWFmMzQzNDdlZTA0MGM2YjQ2MTk4IGJjYW5ub24tc2FuZGJveGluZworNTA5MjAgOTI1YWI0NzgyOTk0MjQ5NzA5NzNlMjk2ZmQyNjk1NDM5ZDllMmIyNCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwOTIyIGE1NGFlMjU4M2I3MDEwMGNhMjA4ZmUxMTM1ZTZiNzgzN2U1MDBiZWEgbGVnYWN5LXRydW5rCis1MDkyMyBlNzk1ZTA1ZDZkNTY1YzYyYjkzMmEzN2MwMmI2NzI4NWYyODljMDA5IHJlbGVhc2UyNC1tYWludAorNTA5MjQgNmM4YmM3Y2Q3MmE2YzlmYzdmNDgxZTAzYzAzZmVlMGE2MWU5YTIzZCBsZWdhY3ktdHJ1bmsKKzUwOTI1IGZiNmJjY2ZmYmUzMTBhNGIwODgyNjBmZGMzMmRjNDcwY2M3YmFiZDkgbGVnYWN5LXRydW5rCis1MDkyNiBjZGI0Nzg3MjI2YWYzYjU1MzEwYWU4MDVhOTQ5Y2YzMThhMzA1MTE1IGxlZ2FjeS10cnVuaworNTA5MjcgZDQ1MzQ0MGIzM2M2ZTUxNzMzZjFkM2ZiMmJiYWEwMGZhNTU2YTk0MyBsZWdhY3ktdHJ1bmsKKzUwOTI4IDFmYWQ0ZjNlMzZiYTRmYjA0NDM5ZDQ2OWNmMWI1NDE4YTcxZTdjZWMgbGVnYWN5LXRydW5rCis1MDkyOSBhYjM0OTVkZjRjY2VjYmE2ZTFkNjI4ZmQ3YThjNzNmYTQwNzBlMDZlIHJlbGVhc2UyNC1tYWludAorNTA5MzAgYmQyNmExOTUzYzA1YmUyZWFmZDNhNmRlNTZkNjgzODA3OTRiYWY4NSBsZWdhY3ktdHJ1bmsKKzUwOTMxIGE5OTVjZmY4NDNiMzQwZTFmNWFiOGM5NzdkMjI0ZmFmYzBjYzhiMTMgbGVnYWN5LXRydW5rCis1MDkzMiAzZmVkN2ZiNmJjOTY0NDkzOWNkN2VmM2MwMTcyNjE2YTRhNTBlMjQ1IGxlZ2FjeS10cnVuaworNTA5MzMgNWYyMTU0M2MzM2RjNGVjYTdhZTNlYTI1MzFlNzQ2ZmJiMDkxZmQ5NiBsZWdhY3ktdHJ1bmsKKzUwOTM0IDJmM2Q4NzFiZjZlZjIyZjM5YTI1N2M2NjY5MzRiODczZTQ1Y2RjYzggbGVnYWN5LXRydW5rCis1MDkzNSA2ZmY3MmFkOTNhZDJiYTYxN2M1MTUxZjE0ZTFlMTg0Y2E1YjRjYjljIGxlZ2FjeS10cnVuaworNTA5MzYgMWM5NGY2NjIzNzc3OWI1NmJhYTk3MWUxNzFmZmQ1YTBlYmJkMTI4OCBsZWdhY3ktdHJ1bmsKKzUwOTM3IDZhODk5NWMyZThiYzk5MWQxOGNhY2MzNDA2MDIyMWYyNDM4NjBiMWYgbGVnYWN5LXRydW5rCis1MDkzOCAwNjkxZDkwMWQ4OWNiZjNiYWMwZDUzYmE1ODcxZmFmN2QyNDg2ZDIyIGxlZ2FjeS10cnVuaworNTA5MzkgMGFiYTZiMWY1YTAxYzNiZGY1ZGYxZGExMmI0M2JiNWRlMTc3YjNjMCBsZWdhY3ktdHJ1bmsKKzUwOTQwIDFhMjIyZjExMGFhYWY5OWRkMTIxODI1ODg1NjRlMTFlMTE1MjU5MTMgbGVnYWN5LXRydW5rCis1MDk0MSBjYjFlNDMyYjQ5MTlmMTA2NDQwNmE2OGM4ZWYxNjA4MzU4YmQ2NTI0IGxlZ2FjeS10cnVuaworNTA5NDIgNGRkNTJiYTUyZGU4M2VlMTNjMzNlZTc3NGVhMTJmZDQ3NjU1OWE2NSBsZWdhY3ktdHJ1bmsKKzUwOTQzIDNhMmQzZWRhM2UxNmU1ZDRkOTZkOGZhNWQ1NTdmNDEwN2JjYmNmMDEgbGVnYWN5LXRydW5rCis1MDk0NCAzNDk4M2MwYjI2YmMyOTI2NjI5ZTIxMjY3NGM4OGYyNjFmODQxMDdkIGxlZ2FjeS10cnVuaworNTA5NDUgODA2OWQ3M2FjYmRmOGI1ZTlkM2I4N2M2YWU5MjFhYjVmOGIwYjlkNyBsZWdhY3ktdHJ1bmsKKzUwOTQ3IDM1NTgzZjU1YzVhOGE1NWEwNjdhMWJlMWNmYjQwZWYxYWU0ZDI2NGYgbGVnYWN5LXRydW5rCis1MDk0OCA3MjgxNDI5YTAxZDY3ZDRiYjcwOTg2ZjJlNTc3MTk1ZDZiYzQzMmY0IGxlZ2FjeS10cnVuaworNTA5NDkgMzRjMjBkM2YyNTEwNjQwNzNkZmQ2ZWIzZDI5MDMyOWI3ODE0YTAxMiBsZWdhY3ktdHJ1bmsKKzUwOTUwIDg4ZGI2MDJmMjNhNmQxZTVkNDVhODQxMjQwM2MwYWU5YzU1Nzk1OTQgbGVnYWN5LXRydW5rCis1MDk1MSA0NWEzNTRmNzRkODBkNjU0MDlhMGRmMmE1YTJhNTkyYjZiZGI0NDZkIHJlbGVhc2UyNC1tYWludAorNTA5NTIgNGRiOWQ5NTMzYjE2M2QxNzljMDk5OWMwYjRiZTY3YjU3OTFmNmI1MyBsZWdhY3ktdHJ1bmsKKzUwOTUzIGQ4ODg4YzhiODcyYjEzYTczNzRkNDYzYTM2Njg4NzBkZGNjZmFmMTUgbGVnYWN5LXRydW5rCis1MDk1NCA2YTVmNzlhNGU2ODczM2UxMzZmMTI1NmMwYzFiOTExNzI1ZjhmZjU2IGxlZ2FjeS10cnVuaworNTA5NTUgNWFkNmUyYTcyYjJhYzJhMTQyMzk3ZjQyMzU5YzFlNWZjOWE4MTE5MCBsZWdhY3ktdHJ1bmsKKzUwOTU3IDZkMWY2NzNmMDU5MDdjNjgzYjcxOTQ2ZjcwYzFhYTBlNTI0NzQ0NTggbGVnYWN5LXRydW5rCis1MDk1OCA4MDU1MTJjZjE0ZWZjYTY1ZWQ4Y2JiZTBhYTBjOTJmYjEzZjFmOWU0IGxlZ2FjeS10cnVuaworNTA5NTkgNDQwN2U1MTkzYTRiMGM5MTcyODVmMjJmY2MwODQ3ZWM4ZTA2YzRjNCBsZWdhY3ktdHJ1bmsKKzUwOTYwIDRlM2FkNjVmNTVlOGVlMjdjZWEwMTIxYmJkYTk2NGVjYWQyYjNjNDUgbGVnYWN5LXRydW5rCis1MDk2MSBlZmJhZWM5Njc0ZGZkMWY5OThkMDY1NjM0MzIyYzdmMWFhZTg5ZTFhIGxlZ2FjeS10cnVuaworNTA5NjIgZGQ1MWU1NmI2Y2IwYTVkMjllODk3YmJjMjVhMDBlMzE2NDlkNDlkZSBsZWdhY3ktdHJ1bmsKKzUwOTYzIDE1MjNjMzhjZDUwNWZmMjE5MjJiNmY4YjQ3ZGUxZDNkNzAwZmYyNjkgbGVnYWN5LXRydW5rCis1MDk2NCAzODhiN2Q5MGJiODk2M2U5N2U0YmRjZWIxZTZkMTg3NGZiMmQ4ODNkIGxlZ2FjeS10cnVuaworNTA5NjUgZjY5ZDkxYTdjZjcxNDg5NGVkZDA0NmVlNTdlMzE0MjA2Y2EzYTc4NSBsZWdhY3ktdHJ1bmsKKzUwOTY2IDc3ZjM2NTNiZmMxNDgzZjc0MGIxMjBjNzc5YThlM2ZlM2FkYjYxYjggbGVnYWN5LXRydW5rCis1MDk2NyBhZWU5ZjBkNWZkMmIxNjcyNDUzYWRlZTlkZTUyMGI2M2M3M2I2Y2M4IGxlZ2FjeS10cnVuaworNTA5NjggYjc0NWIzZmQ2NmE2NDlhNWZhNTQwYmRmNDc5NzFjMjZhZjBhOTU5ZSBsZWdhY3ktdHJ1bmsKKzUwOTY5IDdkYzVmM2VkZTRjZGM2MmJmZWZiMWQ3MGJkMGJhZWJjZDk3NTgzNjQgbGVnYWN5LXRydW5rCis1MDk3MCAwNDFlYjYyMzFjZGMyNDE2ZDliOTVkMDY1YTgyZWNiMWExNDc1NTUyIGxlZ2FjeS10cnVuaworNTA5NzEgMWI0ZTVlYjIxMDQ5ZmI1ZTU5YTNiMjQ0NjhiYzhkYzg5NzAyMGE5OSBsZWdhY3ktdHJ1bmsKKzUwOTczIGNlYmVlMWY4NTIyMjE5MTFhZGIwYmIwOTU2YjE5NzU4ZDRmYWM2MmMgbGVnYWN5LXRydW5rCis1MDk3NCAxZWI5MjE1NjQxYTg4NDRlYTY0MmMxNDc3OGNkMzAzMDVkM2UzMmI5IGxlZ2FjeS10cnVuaworNTA5NzUgMjE2ODc3Yjg2YmMyODY1Zjc1YWYxYTM5NTNlYzk4OGNjNTIyOTU4NSByZWxlYXNlMjQtbWFpbnQKKzUwOTc3IDkzNzdjNjYwNDU0MmNlNmVhYmY1ZDBlNjJjZDQ0MzVkZTZkMWVjOWUgbGVnYWN5LXRydW5rCis1MDk3OCAzNjFlZjdjZWVmMjhkOWY2M2ViM2U1YzdlNTU3NTgzZjBhMTM1NDNkIGxlZ2FjeS10cnVuaworNTA5NzkgYmRlNThhNzhmYzcxMmUyYTk3MjVkNDc0NTgxYzE0YzliMzBhMWUzNyBsZWdhY3ktdHJ1bmsKKzUwOTgwIGQ5M2EwNDM0MGU2YmJhNTc0N2VmMGIyZmYwOTk4MDUxZTZmYzkxZTMgcmVsZWFzZTI0LW1haW50Cis1MDk4MSA2NWU3YjQyMjM0NDRmMzZjODY3ZDk3MDEyYzQwZTk0ZDRlMzJmMTMxIHJlbGVhc2UyNC1tYWludAorNTA5ODIgOWI5NTgwOTgyMDM1NWI2ZjFlNDg3NDcxYmNlMWViOTA0ZDc0MDcwYSBsZWdhY3ktdHJ1bmsKKzUwOTgzIGM5OGEyMzUyOTgzYTQ5NmQxNGE5OGQwOTkzMGU2NGUxZmY3MTUzZmIgcmVsZWFzZTI0LW1haW50Cis1MDk4NCAyOWM3NjM1ZDAxOTlhYzViZTJjOTc5OTQyZWUxMDJiMDljYjI0NmUxIGxlZ2FjeS10cnVuaworNTA5ODUgN2Y0NGQ2MzRmMzc3YmQ2ODliMzlkZDRmYjJhZmJmZThkZmUwOTJjOSBsZWdhY3ktdHJ1bmsKKzUwOTg2IDRhZWQ0MzY3YWRkMjdjZWViZmJkZDdkODUzZjJiMDI1MGMwNmE5OTIgbGVnYWN5LXRydW5rCis1MDk4NyBkMGU2MTcwNzA0ZGVlODUwOTYwMTRiMzM3ZWQwNDFkMzJjYjMxYWFmIGxlZ2FjeS10cnVuaworNTA5ODggYzg3YTM5NTFkZmM1MGFhMDcxOGJmZDhlMjBiMDljNjY5MWYxZDUwOSBsZWdhY3ktdHJ1bmsKKzUwOTg5IDRlZDVkNGM4ZTY1NDI0ZjRhODExYTA1N2FhNTc3MDFmMmQ5ZWUwYTMgbGVnYWN5LXRydW5rCis1MDk5MCAzOTVkMTVlODM3NGE3MGEwNmE0NmRjNDc4MzI4MGQzM2MwODUzZTJlIGxlZ2FjeS10cnVuaworNTA5OTEgYWVjNjY2OGM1OGQxZTFmODkwMmZlODVkNTIwNjcyMjFkOWM5ZWI1MiByZWxlYXNlMjQtbWFpbnQKKzUwOTkyIGNmMDQ2ZTIyZDdkZDU5YzRjYTMyZDI0NzM0M2Q2OGJkMTAxYTJmYmQgbGVnYWN5LXRydW5rCis1MDk5MyA5MzBiYjFlYjhkZDVkMWNhYzUyOTc0MTUzNDg4MTRiZjc0N2Q4NTIwIGxlZ2FjeS10cnVuaworNTA5OTQgM2RkNDEwMWNiN2U5Nzc5ZmZmNDQ1MjNjN2JhOWFkYTZjYzc1OWI4YyBsZWdhY3ktdHJ1bmsKKzUwOTk2IGY3ZjEwYThiOTZlZTdkNjAxNGY3NjQ4N2RkN2UwMzk1Y2U1MDM3ZjUgbGVnYWN5LXRydW5rCis1MDk5NyA3ZjA0NzkzZmUxMzVlNWU4ODQ5NTdhNTc0ZjQ1ZTI1YTMzODQyOTkxIGxlZ2FjeS10cnVuaworNTA5OTggOTEwMTUxNTI0ZjVlZWIwZDMxNTExM2NhZjVjYTAxMGU2OGFhYjM1YSBsZWdhY3ktdHJ1bmsKKzUwOTk5IDY2MjgxNDg4ZTkwMjNhODIyZDY5N2FmOTVhNzllZWMyZWQ3MDIzODEgbGVnYWN5LXRydW5rCis1MTAwMCBiNzliNjhiODJhNDQ1YzMzMTFlMjU5MjBjODc1NTc3ZDhmNDlkNTQxIGxlZ2FjeS10cnVuaworNTEwMDEgODZlODFkZWZjMjg1NmU2MDIwODEwZjU4ZWU3NzQyN2EwZGU4YmQ5ZiBsZWdhY3ktdHJ1bmsKKzUxMDAyIDNiNzg5NTdjNzc5MTk5ODRiMDEzYmI5NmRiODA1MzU4NTEzOGFjMWIgbGVnYWN5LXRydW5rCis1MTAwMyBmM2UwODkxNWI4N2I0NDM1NjFiM2MzM2IxNDFhNjU0Y2QxOGNhMWYzIGxlZ2FjeS10cnVuaworNTEwMDQgODZjMzYxOGE0OWMzZjNhNTkyNDU4ZjVlZTliODQ3M2NkMWU5OTg1ZSBsZWdhY3ktdHJ1bmsKKzUxMDA1IDQ5NjZiMTc5NjNiNDFlN2U3ZTYwNjFlNGRlZTZlNDVkMGNhYTA0OWEgbGVnYWN5LXRydW5rCis1MTAwNiAzZGU4YTU4YWUwYjllOGUxMmRlZTI0MTNhYjRiNmZkYjk1ZWYzZDI4IGxlZ2FjeS10cnVuaworNTEwMDcgMzkzOGU2ZWZhNzkzZDZiMzE3NmU2NWMwMzg3MzAyM2U0MzQ3YzgyMyBsZWdhY3ktdHJ1bmsKKzUxMDA4IDMxNWE2NmQyMjQ3YTc5MWQzYjBjZjQwYTczMjU0NDI1NDUwODE4MzMgbGVnYWN5LXRydW5rCis1MTAwOSBmZjIyM2I5NWYyMDdlMDlkMzNiYzUwOGQ2ZTI0ZTRkYTJmYzg4MDNlIGJjYW5ub24tc2FuZGJveGluZworNTEwMTAgOWQ3YzQ1ZDBkMWJmN2VjMzY5ZmU3ODNjMTQ3Yjk5YTJjMmFkMDI5NyBiY2Fubm9uLXNhbmRib3hpbmcKKzUxMDExIGVlMmQ0NmFjMmY2ZTdiNWI5ZjE2ZTQ3Nzc3NTlkOWY4OTNhMzYwNDYgYmNhbm5vbi1zYW5kYm94aW5nCis1MTAxMiAxYzBjMTI4MzhlNjI1M2VkZjE1MTE4ODA4MWQzMTIyOTZlYjNmZWY4IGJjYW5ub24tc2FuZGJveGluZworNTEwMTMgODJiNjc1N2ZmZmY0NzZiNTYxNDU3NWU2MmYyZTliNGI3NDI1OTFiNiBsZWdhY3ktdHJ1bmsKKzUxMDE4IDkxY2E2ZWVhZWI0YWNjNTY0ZTBmYWFjMzllYTEwYjI3MzNiNGU1YjEgbGVnYWN5LXRydW5rCis1MTAyMCBkMzlhZWU2Y2RkMzJjZmFiZDFjYmRlYTJiNjE3N2UyZjFkNmRiYjc4IGxlZ2FjeS10cnVuaworNTEwMjEgNTNkMDU1MmE3YThjNTA3MTUxM2JiMTA2NzVlOTIwOTZhYzQ2YTUwZiBsZWdhY3ktdHJ1bmsKKzUxMDIyIDI5MTVjMDcyOWYwYThjZTZkMzE4YjMxMzk1NmMxZjUyYzRiY2IwMGYgYmNhbm5vbi1zYW5kYm94aW5nCis1MTAyMyA3ZTAzMTgzZWI3YTUyYTFjOTRiMGRjNTc1NDc4ZmUwNTBkOGFkODA2IGxlZ2FjeS10cnVuaworNTEwMjUgMTU2N2MwMWNjYTczZjlmNjg0ZTNiZjY2MGZiOWE5YjM2NmU0YTUxOCBsZWdhY3ktdHJ1bmsKKzUxMDI2IDQ2Mzc3YjA1ZTE4MTU4OTE1YjY0Nzg1ZTFhMGU3OTZjZDZhODFkN2UgYmNhbm5vbi1zYW5kYm94aW5nCis1MTAyNyAyZjIyMWJkZDlmNDRiOGY4YzkxMzdjNzAyZTYxMzRiNTliZjQ5ODFjIGxlZ2FjeS10cnVuaworNTEwMjggMjMyZDE1NmJlYjgyZmM2YWQ0MmUyODkzMDhlMGU3NmFmZjU5NWMzNyBsZWdhY3ktdHJ1bmsKKzUxMDI5IGQyMGI5YTJkOGVlNzMwMjA0YmEyYWRhN2YxNGQ5ZGZmZGVhZWEzOTEgYmNhbm5vbi1zYW5kYm94aW5nCis1MTAzMCBjZDgyZWJmYzY2YWZkNDY0Zjc0ZWZlMjJiODNiYjJhZWE4NWRhN2EzIGJjYW5ub24tc2FuZGJveGluZworNTEwMzEgYmQ1MGE0MmI3ZGYwZDBhNmVkZjEyNTFiMjczODJhYmVlMjdlMzZlNyBsZWdhY3ktdHJ1bmsKKzUxMDMyIDRmMTVhYmIxMjBkYzUxNjMyMzg1YjBlZDAyMTAxYzIxMTJlM2NmYmUgbGVnYWN5LXRydW5rCis1MTAzMyA3ZDZiOTcxNTgxODA1YTc1MGJlZjRmNWI0NTkyNTk5MDZkYjQ1ZDAwIGxlZ2FjeS10cnVuaworNTEwMzQgZmEyZGFjMzkyNmZmYzE1OWRhMTM5NmQwYTgwODA1MGU0YjBlMDgzYiBsZWdhY3ktdHJ1bmsKKzUxMDM1IDU5NzYyZTc5NjI4MTJmYTc4NjRlZDk0MjFmZWQ1MmE3YmEyNWVjOWMgbGVnYWN5LXRydW5rCis1MTAzNiAxMmZmZWQ5MjdhM2Q0NWQxOTUwYWRjNTBiNjlmZmI2NjA0NWMxNWQ2IGxlZ2FjeS10cnVuaworNTEwMzcgMzQ0MzY0YjQ5MjA4NTY4ODY5MzZlMWVhNWY4ZjRmOTAzZmYxZDU0ZSBsZWdhY3ktdHJ1bmsKKzUxMDM4IDAwMzUwY2JlMGE5ZTk0ODdjYjZmNjU4MDVhZjVkODllYjU2ODIxYzEgbGVnYWN5LXRydW5rCis1MTAzOSA4NWZkY2RmY2E4NWMxY2JhMWI5N2JlYzZmZTJjZmY4ZjI1YTMyOGM2IGxlZ2FjeS10cnVuaworNTEwNDAgNWY5ZmEwYjg2M2FlZTgwZjk5MjNmZWY1ZTA4ZTE0M2U0NjdiYTI4YyBsZWdhY3ktdHJ1bmsKKzUxMDQxIDhiOTMxNzRkNTAxYTRjYjliNGUwZGQ4MDFjMzdhNDAwNjg3ODUwYzEgbGVnYWN5LXRydW5rCis1MTA0MyAxZWFkNDEyMjFiZDg4MGVjMTlhZDEyNTliMjlmM2EwNTZhNGQ3ZDJiIGxlZ2FjeS10cnVuaworNTEwNDUgY2UxMGUzY2M3YWViZTg5ZjI0Yjc0NzhhNTA4YjcwOGMzNjAxMTc5ZiBsZWdhY3ktdHJ1bmsKKzUxMDQ2IDgyZjU2MjA3NjUyZjY5Y2FiMmE5YzIzMDY1NTY3ZWM0MDcxZWM0ZDggbGVnYWN5LXRydW5rCis1MTA0OSBjMGFiYjE4Mjk5YjQ0MmUxMTYwZDJmOTU4YmNlMThmNjY4NTBjYWE5IGxlZ2FjeS10cnVuaworNTEwNjUgY2RjZjJiY2FkNjI0ZWE4YmFjNjM2NTYzZGZiODE5MzAwNDc0MGE3YSBiY2Fubm9uLXNhbmRib3hpbmcKKzUxMDY2IGMzODk4YTczYjM4NjA3ODc1MTM3ZjNmMzdkYTlkNzFiYmQ3Mjg4OGYgbGVnYWN5LXRydW5rCis1MTA3OSBlYzRmMzVkMmE2OTNjZTE5NTAyZjA2ZDZhYjRmNGM1YjVkMThmZWYzIGxlZ2FjeS10cnVuaworNTEwODAgYjkwYThiMDM5NWJkNDNmZDE5Mzg0MjQ1MWQwYzQ5NTczYjRkNzE2NiBsZWdhY3ktdHJ1bmsKKzUxMDgxIDhlZjNmOGNmOTBlMTIxYTBiNDBhMGUzZmI3YzMwODZiYzBhOTE0NDAgbGVnYWN5LXRydW5rCis1MTA4MiA3NWJmNzczNjdkYTMyMGIxMjU5Mzk4OWZlOTFlYmVjZjdlYmIyNGQ5IGxlZ2FjeS10cnVuaworNTEwODMgODI5NmZiOTZjYzE4NGY2NGEwMDdmYTQ1ZjU2ZjgwZWI3Nzk3MTgwZCByZWxlYXNlMjQtbWFpbnQKKzUxMDg0IDU1ZjgzMDE4MzUzMjZlNmNiYWJmZjJhOGY4Nzc3MzM5YzBhMjAxNTcgbGVnYWN5LXRydW5rCis1MTA4NSA4NDk3NGM2NzY5MDMxZDBmNTdhZmNlNTgxODdmNzI1YjdiODQ0MGFhIGxlZ2FjeS10cnVuaworNTEwODcgNzdjZjE4YjhiMWNlMTMzMDBkYzlkMWY4NzRjNThmMDQ3NzNlYjM0YyBsZWdhY3ktdHJ1bmsKKzUxMTA0IDEwMDRhMTZiMGYwOTFiYjc4M2YyODQxOTUxOTEyYjBmYmVmYTdjYTQgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTEwOSBlYjIzZDA5NmQ2OTQ2ODk1MTk0NzZmNmFjY2NhOGFiNmQxMjAyM2ZlIGxlZ2FjeS10cnVuaworNTExMTAgYTljNzQyZDZjODg4ZWUzMzUzMWJhZGJmZWU5ZmQ0ZDczMTcxZjEyYyBsZWdhY3ktdHJ1bmsKKzUxMTExIDAyMzgxNjZmMDdiNzAzNWRjNjZhMjQwZjEyM2I2NzVkNmQ1M2FkMzMgbGVnYWN5LXRydW5rCis1MTExMiA0MDU4NWZiMzg3YmJhYTgyMzk5MDRhNjI3YTNhZjU0OWRlNWU4NmE1IGxlZ2FjeS10cnVuaworNTExMTMgNDY1YTA3OGQyY2E2YjdhMzZkODkxM2YzNDQ4MDMyNjI4NGY3ZmYzMiBsZWdhY3ktdHJ1bmsKKzUxMTE0IGFhMGNjNzU1MDc0ZWI4OTEwMWMzNmQ1YTUwMDRhN2MwNDY0MzZhN2IgbGVnYWN5LXRydW5rCis1MTExNSBlZmE4MDYzMzMwOWRhODc0NWMyM2RiY2M2Yzc2MzEzYmE0YzQ5NzEzIGxlZ2FjeS10cnVuaworNTExMTYgNjU2N2MzMmFiODgxNTUwZTBlMGMxNTIzYjJkMGJkZTU5ZDM0MjZlZCBsZWdhY3ktdHJ1bmsKKzUxMTE3IDk5OWE0OTE0ZDUzY2I0MWY3ZGRmZjM0MGJlOTBlZjYxNWM2YzMzZWYgcmVsZWFzZTI0LW1haW50Cis1MTExOCBmZjRiMTU3ODAzOTY4MzNmNWE5NGRlOWE0NDQwYzc0OTAwZWZlNzdiIGxlZ2FjeS10cnVuaworNTExMTkgOWNiNDU2NWU2MGNhYjQzMjExYWM0NWJiMGRlNTRiYTAyZDVhZjhiMCBsZWdhY3ktdHJ1bmsKKzUxMTIzIGZlNDRkY2JlMTNmMmMyNzdiYWJiMmE0OTYwZWRhMjBlODA2MjY1ZTEgbGVnYWN5LXRydW5rCis1MTEyNiAzYmZlZjNkYjMyYjM5MmE0ZjYwYjBmMWYzOWNmNWIyZDVhOGIxMzM1IGxlZ2FjeS10cnVuaworNTExMjcgNDA0MTVkZjViYTlkZTVlYjY3NGM3NGRmN2FhM2IyNmE0ZTQ4ZDg0YSByZWxlYXNlMjQtbWFpbnQKKzUxMTI4IGI5MGZlNGFlMzAwODM0NjJkNzlmZTI4NmVhZjRhYTlmM2JkYWI4YTAgbGVnYWN5LXRydW5rCis1MTEyOSA1MDA5ZGU1MDRmOTI0MDIxYTQwMzJlZDk2N2U4ZjRmZTY1ZTk4NWJhIGxlZ2FjeS10cnVuaworNTExMzAgMjE0ZTRhNDM4NGYxMmIxMmY0MmFhYmE0NTE4ZDA3Yzk1MjNhZTk4OSByZWxlYXNlMjQtbWFpbnQKKzUxMTMxIDJlNjMwYjJkNWI0NDYwZWQ5YTY2MmM4YTA4ZDMxMDkxODkwNGZlMTUgbGVnYWN5LXRydW5rCis1MTEzMiA3MmEzZjcyM2VmZDE2OTcyMDQ5NmI3YTIzNTM0YzVjZTNmNzBiMzk3IHJlbGVhc2UyNC1tYWludAorNTExMzMgZmMxMDFjYzM1NGE3OWZiNjUwZGE1YjE1OWIyODdhOTNiODBiMWY5YyBsZWdhY3ktdHJ1bmsKKzUxMTM0IGI3ZWFiMWMxOGU5ZDM3YmM3ZTM4M2ZlMTgyYjdkMTMxODhlNjkwMjUgbGVnYWN5LXRydW5rCis1MTEzNSA1OTQzMjk2YTUxODIxNWQ3MDAzNjdiNTIyY2FmZjFlMGIwM2U3NzMwIHJlbGVhc2UyNC1tYWludAorNTExMzYgYjUwMjY4ZjQ2ZmZmOWE3NjBmMzA1ZTkxNzRlZDg0ZGNiN2Q4ZDIwMiByZWxlYXNlMjQtbWFpbnQKKzUxMTM3IDMzNTA0NzRmMzQzM2M5OWQyZGUwYmY0MDEyZTBmN2UwZjY4MDQ3NzMgbGVnYWN5LXRydW5rCis1MTEzOCBmNWE3ZjRkZDkzZTBkODc1ZDhhNjM1YjQyYWU3NjVhOWQwNzg1MWRlIGxlZ2FjeS10cnVuaworNTExMzkgOTk3Nzg4ZGU4NjY3MzMwY2U5ZjIyYTE2ZTkwNzlmMWM0ZjAzZWE4MyBsZWdhY3ktdHJ1bmsKKzUxMTQwIDI0ODVlZjRjNWQ0OWQyYmUwOWI2MzMyZjZiZmY1Mjc3N2QzNjEwNjAgbGVnYWN5LXRydW5rCis1MTE0MSAwYmM2Y2ZiNmI1ZmIyMWFkMTU2OGNlYjgzNGRmYzRjMDJkZTQ5NDFhIHJlbGVhc2UyNC1tYWludAorNTExNDcgOWVkNTYwYjM1MTM5ODBkNGM2NDNjYmU1MzdkZDVlMDlkODkyODg1OSBsZWdhY3ktdHJ1bmsKKzUxMTQ4IDI5MGM1ODJhMjJkMDQzOTgyMzYxNjg1OGY3Yzk1ZWI5ZDc4NWM3MjUgbGVnYWN5LXRydW5rCis1MTE0OSBiNjdmNTIyZDc2ZDc4ZDgwMDI5ZTU1OGM3MzM2ZTkxZmY0OGU5Njg0IGxlZ2FjeS10cnVuaworNTExNTAgMTRjNzY5NDg5NTNkNWM1ZjdjNjRkMjBlMzFhNGEzNjJjOTcxYjYxMyBsZWdhY3ktdHJ1bmsKKzUxMTUxIDJmMDMxNjQ4ZTU4Nzg0NDk3ZWUyNWFhMjE5MTFiMDNlNmRjMmQxNzYgbGVnYWN5LXRydW5rCis1MTE1MiBkMTU0MjYwZjQ2ZThmN2Q3NzdkOWVkYTRkZjMzNTI0NWJlYzBhNjQyIHJlbGVhc2UyNC1tYWludAorNTExNTMgNTZjMGUyZjU5NmU3NmYxZDMwZjMzZjAxYmRjMzYyOTE4YzBjMGEyOCBsZWdhY3ktdHJ1bmsKKzUxMTU0IDhkYzZiZTNlMTFlMDBhN2M3NmUxZWI4NTUzODIyYWU5NjBiOGI0MGUgcmVsZWFzZTI0LW1haW50Cis1MTE1NSBkZTQ5N2M0MWU5YWRlZmM4YjZkNDRjZDExY2VlZjA1YTk2MzYxZmM3IGxlZ2FjeS10cnVuaworNTExNTYgNTY5MTYyNDI2OWE1YTYwNjc2ZmJhNWM1ZjY4NDAwYzE3ZjJkZmFkYiBsZWdhY3ktdHJ1bmsKKzUxMTU4IDlkMDg5YWE1OGUyZjRiNWNlNGNhZDljNGY1MWQzOTFjM2MyYWI2NWMgbGVnYWN5LXRydW5rCis1MTE1OSA4MDIyOTI3YzE3YTg0NjQ2ODVkZTUyZmI2NGFmMGIzMjM1NDViOTg0IHJlbGVhc2UyNC1tYWludAorNTExNjAgNWI5NjkyZjY2MjlmNDA3YWRlOTRjOWI3ODgzZWFmMGM4ZjA2MDFlZiBsZWdhY3ktdHJ1bmsKKzUxMTY4IDZmNzc1MThiNjM3ZGIzYjhmZjlmZTA5MWIzZWYzOWI1Nzk5NjA4NjMgbGVnYWN5LXRydW5rCis1MTE2OSBiOTViOWY0MTU3YTgyMjEzMzAxMjE4ZjU1ZDRmZGI3NjM1MDI5OGRlIGxlZ2FjeS10cnVuaworNTExNzAgNWMzZDQ5Mzg1ODE2ZDcwNmY3YTIyZDk3YTUwODg4YWZiOWFjZWJlNyBsZWdhY3ktdHJ1bmsKKzUxMTcxIDE5OTM4OGI0NmM4M2EwMGJlZDJmMThmZjZiMTBmZmMwYjk2NDJiZWYgbGVnYWN5LXRydW5rCis1MTE3MiA5YTgwODFjZjRhNzBkYWI0NmJhMGYxMDYzMTBjYzIxOTBjYmI5ZDM3IGxlZ2FjeS10cnVuaworNTExNzMgMGYzYWQ1YjkzNmE4NTcyYmZlN2MwN2Q4ZTM3NTM4NjczZjIyODc4NCBsZWdhY3ktdHJ1bmsKKzUxMTc4IDc0ZDIzY2QwNDQyMTA0ZmY5NzViODVlMWI3NGY1ZTRlYTIzZDZlMmIgbGVnYWN5LXRydW5rCis1MTE4MCA3ZDZiMmUwNGU0Mzk1NDA2MDBlOTg1OTBhMjgzMWFkODU5ZjI4ODEwIGxlZ2FjeS10cnVuaworNTExODEgZmVlZTY1ODIwMTFmMTc3NmE2ZTFkZTg5NWZiMzJiM2VlOTBkN2NhNSBsZWdhY3ktdHJ1bmsKKzUxMTgyIDkyMjJkMGRhYWIzYzZhZWRlYjAxYTk0NzUxNDcyNTI3Zjg2MTA1NGIgbGVnYWN5LXRydW5rCis1MTE4MyAxNTZiMjhmMGYyZDM1YWMwMGU4MmM2M2QyYTE0MDE4MmM5YzdlYzc2IGxlZ2FjeS10cnVuaworNTExODQgZGRlYTRkMzdjODNjYTQ1MWMzMDc5Y2FkODU1ZDA0ZTU4OWI4MzFlOSBsZWdhY3ktdHJ1bmsKKzUxMTg1IGI4ZTM3ZTAyNjhmMmNhYzA0MmQ5MmQxNjIwMTZhNDNjMTM4ZjQ4NjEgbGVnYWN5LXRydW5rCis1MTE4NiAyNmE2YmVkZDE3ZTIxZGIxMDY5NzM2ZGUzMjUyNTY2YzU2ZGUzY2NkIGxlZ2FjeS10cnVuaworNTExODcgM2MyYmY3OTUyNmJlODk4MTRjZDAyMTcxMDQwMzQxODc4YmJkM2Y1OCBsZWdhY3ktdHJ1bmsKKzUxMTg5IGQ4ZmE4MTBjZmQ1NGRmZDhmMjdlZWEzYmMyMmExNTE4ZDAzYjAxYzAgbGVnYWN5LXRydW5rCis1MTE5MCA5ZjA4NTE2YTRkMGM5ZTk5ZDdmNGJkNGU0NzkyMjEzZTIyYTg4M2ExIGxlZ2FjeS10cnVuaworNTExOTEgZWFkNDhhODIyMjk1YzgzZTFmMWU4MTQxYzc5YmJlYWFhYzI3MGM1YyBsZWdhY3ktdHJ1bmsKKzUxMTkyIGU1NWY2ZDcyMjQwNGZhOTJiMmE0M2M3MmZmMjEzMjdkN2E0NzE0YjIgbGVnYWN5LXRydW5rCis1MTE5NCA5YjMyNjBkODM1NTg3OTVkMWExZDMxZGI5NTg4MWI2MjY3ZWVjZWFkIGxlZ2FjeS10cnVuaworNTExOTUgZGU5ZTFhNWRjYTkzNjYxYTcwMTBlNzc2MDExODdiNzY5ZDk3M2I5OCBsZWdhY3ktdHJ1bmsKKzUxMTk2IDhlZDYyZGIxOTA1YzRkM2UzOGI3NWFmNzFiNWQ5MTM5NTNmMTc3ZmUgbGVnYWN5LXRydW5rCis1MTE5NyAyYWNhNGYwNDAwMTJjZWIwOGFjZjA1Y2U5YTdkYzJiMzg2NTIzNzM5IGxlZ2FjeS10cnVuaworNTExOTggYmUxMDdiMDRjMjUyNWI2YjgxMTJhMjFiYTY1NDEyZGYzMDAwMDUwOSBsZWdhY3ktdHJ1bmsKKzUxMTk5IDZhYWY1NWY0ZDdhM2I2ZDM1ZmQ5MTM3MDUzZDM5NWJhYTg0MjQ5NTEgbGVnYWN5LXRydW5rCis1MTIwMiA2YWI0YzM5ZmQ3YTM4M2ZkOWQ5NDJmY2Q4ZjliN2JlODg0NTg2MDdkIGxlZ2FjeS10cnVuaworNTEyMDQgODY0MTcyNTE1ZWU3NmEzYjQ1ZGYxNDhmNjY4MmU5YzM5MzAzYjhmNCByZWxlYXNlMjQtbWFpbnQKKzUxMjA1IDQ4ZmQzODg3MzQ2MzZkYTFhZDAyM2JlODg0YzM0NGFhYTYxM2MzNDIgbGVnYWN5LXRydW5rCis1MTIwNiAxMDg3ZGYwMGE2ZTg3YjkxZDY2Nzg3MjUyY2Q1YTZiZGUwMGVhYzAxIGxlZ2FjeS10cnVuaworNTEyMDcgZTc3ODc1N2QzMzMwNzIwMTQ1ZTc0ZmRjNWRiMDNlMmE5NWZhYTAwNSByZWxlYXNlMjQtbWFpbnQKKzUxMjA4IDc3OTBjZDBjYWJkMDRjOWQxMWQ3ZTg1NmZiMzY1ZTdjYzgwNGViOTQgcmVsZWFzZTI0LW1haW50Cis1MTIxMSA2NTRjMzgwY2Y4YjlmMDc5MTU2ZTMyMTExZDE2MmFkODAzYzg5MzE5IHAzeWsKKzUxMjEyIGY2OWJlM2M2YTJkNDYzNjQ5YmM1Njg0NjkyODgyOTQ4YTA2Yzk0NTYgbGVnYWN5LXRydW5rCis1MTIxNSBiOTk1ZTI3NjBkYTQ3MmMzYjU5MGQzNjkzYjhmZDY1NjkxNDczNGUyIGxlZ2FjeS10cnVuaworNTEyMTggZTExY2FhZDdlMDI5ZGM5MGI4YTdkM2I4Njk0YzgyZDk0NzUxZDgzNCBsZWdhY3ktdHJ1bmsKKzUxMjE5IDlmMzkwODgyYTJjM2E1MWUwODdkMWM5MTU4ZDkyMDg3ODk0YzZhZTAgbGVnYWN5LXRydW5rCis1MTIyMCA3MWIwYWM4MGExMzVlM2UyYmFjYTM2MTJiMjMxYjc2ZTY5Y2VjNzk2IGxlZ2FjeS10cnVuaworNTEyMjEgMjE3OWQ5ZjE0Mjc4MTczYmU5NWRhYjNkZTBiYWVjNzA1ZTdiN2I2MyBsZWdhY3ktdHJ1bmsKKzUxMjIyIDg0MmJkNjEzNGU5ZDIxYTAxM2RhN2Y1OTEzYzViNmU1NTg4MTJiZmMgbGVnYWN5LXRydW5rCis1MTIyMyBhODBkZjUzMzA2ZjBkY2ZmNzlkYzE4ZDE5NmFiZGI4ODYzOTdkZWM3IGxlZ2FjeS10cnVuaworNTEyMjQgNmQ1MzZkNDNjMWEwNjU0YzQ2NjQxOTkzNDBlYWUzYjUzZjAxYTcwZCBsZWdhY3ktdHJ1bmsKKzUxMjI1IDgxYzZiMGVkMzE4OGRkY2MyOWQyMWUwN2NmNjM2ZGY3NGYyMTZkMDggbGVnYWN5LXRydW5rCis1MTIyNiAyN2Y5YjRmZWUxNGY3YjY4MDhjN2FmMjZhMDRmYjJiZWQ5Y2Y2NzFhIGxlZ2FjeS10cnVuaworNTEyMjcgOWExMjg4ZDgyMDBmOGNiM2NlMjIwYTZmMmQ3OWQ4OGFhMmQyNzY0MiBsZWdhY3ktdHJ1bmsKKzUxMjI4IGVkNjU3NjVlYjY3OWI1MDMzMTY0ZjBiNGNiMTQyYWI5YTUyMDYzMDYgbGVnYWN5LXRydW5rCis1MTIyOSA2YThmMDE2NjBhM2IyZGU0ZjA4YmIyMmM1M2M2MzJiNzJiZTM0ODY5IGxlZ2FjeS10cnVuaworNTEyMzAgOGI5MWZmNjk4ZjRmZjJmM2RmNTU2YmU1MjFkMTIwMWJkNjRkOGM4YyBsZWdhY3ktdHJ1bmsKKzUxMjMxIGRlYjc0OGYzM2MxZGI1MmViMDg0ZjJiYWUzZWMzZDFjZGM0YjhkN2YgbGVnYWN5LXRydW5rCis1MTIzMiBjZTExYzZjMTkzOWRiNjg0ZjMwNjdlYTY0NGI2ZDQ3YmM5MWU0NWRhIGxlZ2FjeS10cnVuaworNTEyMzMgMTUxMDg2NmM5MjBlYjgyZTYyNzczYjViMDhiNzUxYzE4ODFjM2U1MyBsZWdhY3ktdHJ1bmsKKzUxMjM0IDJkYmFkNTNkZTJiMTI3MTdjMDc5MGJjNjQxYjAzNDdiYmZlZjFhNTEgbGVnYWN5LXRydW5rCis1MTIzNSA2OGJlZDUzNDg0NTQwMjNjY2ViYjQwMmY1YjM3MDVjZTgyOTM3YTFlIGxlZ2FjeS10cnVuaworNTEyMzYgNmNhZmRjODFjZmRlODY5OGU2YjgzZTY4MmZhMjRhMjY5OGY2MjFmOCBsZWdhY3ktdHJ1bmsKKzUxMjM4IDQ4ZjFkYmM1Nzg0NTA2MWZhYTUwYTVjMjMyZWM1M2FiMTY1MmUzNjQgbGVnYWN5LXRydW5rCis1MTI0MCBlY2U5N2NmZTYwODM3YjE3ODZlZGY5MzcyZjllMmQ5YzdmMmNhMTBjIGxlZ2FjeS10cnVuaworNTEyNDUgYzdmZjAyYzE1NTlmZDg2NmNjMDg3YWFjMDY1ODQ5YjFjY2EwM2ZiZiBsZWdhY3ktdHJ1bmsKKzUxMjQ2IDNiZTY2MjczMjNiOWQzYTA1ZWE3MGUxM2Q4ZjZjMWEyYTIyZTFkZWIgbGVnYWN5LXRydW5rCis1MTI0NyA1NzQ4MjE3NmUxMDExNjYzZTNmYzUwOTIzYzQ0YjM4OGRkOGJmOWI4IGxlZ2FjeS10cnVuaworNTEyNDggNzFiYWEwNjc2N2RkYzI5ZjdkNjkxMWZhOWM2ZTU0NWZlYTc2NzBiOSBsZWdhY3ktdHJ1bmsKKzUxMjUwIGRhZWRhYWNmN2UxMTBhM2NkMWEyMzY2ODkwMTQ5YjczMmIxYzFjY2MgbGVnYWN5LXRydW5rCis1MTI1MSA1MzFiMzY0YmJjMGUwZDgxNWNmZWVjMjJmMDllMjgxNjNjNDdkMThlIGxlZ2FjeS10cnVuaworNTEyNTIgODE1OGI0ZTBjN2I5YjVjM2I3ZDFiOTkwYTczNDlmZjg3ZDBkMWRmZSBsZWdhY3ktdHJ1bmsKKzUxMjUzIGJjNzRhZmI4ZTRlZjYxZDQ4YmQ4ZjE5ZGI1NjZmZDYyOWI4ZTcyNDEgbGVnYWN5LXRydW5rCis1MTI1NCAyNGQyY2MzMzAwMGNiMTg1ZjUxZWYzNWUzYWQ0ZDEzYzdmMDg5NjIwIGxlZ2FjeS10cnVuaworNTEyNTUgMjQ5YTU5YWNiNmVmY2YwMjA0ZjA5NjllNzZmNTY1NmQ0YjNkYjRjMSBsZWdhY3ktdHJ1bmsKKzUxMjU2IDcxMjMxYmM0ODYyMmUzNmRlZTM2MDExN2ZjMjEyNzk1ZDQwOTQzYmEgbGVnYWN5LXRydW5rCis1MTI1OCAwMzU2ZGQ5Y2MyNzQzOTYxODZjNTg1M2FkYmI3NmUxNzZhNDdmMGM0IGxlZ2FjeS10cnVuaworNTEyNTkgMzE3NjA1ZjJjZjZmOTllMWQxNmQ1YjA5ZDdmZWU2NGNhMjI1NDIxOSBsZWdhY3ktdHJ1bmsKKzUxMjYwIGQ1MjMxZWM2ZGFjMzk5ZDMzMGQzOWIyM2EyYmQ1Nzg4YjFkNjFmZDUgcmVsZWFzZTI0LW1haW50Cis1MTI2MSBlNzcwMWIwNWZkOWUyM2ZkMjQwNDc0ZGY5OTI1ZjcwNjcyMDY0YmZjIGxlZ2FjeS10cnVuaworNTEyNjIgZGY5NDc4YmUwNjI3OWEwNDdhMWRhM2E2NTU5NzZlNWFhZDI4MjQzZiBsZWdhY3ktdHJ1bmsKKzUxMjYzIDhjMTZjYmVmNzkzMjYzNTcwMjBlYWVlNmNkZjFmNjExMWIwMjExMTcgbGVnYWN5LXRydW5rCis1MTI2NCBhYjg1MzljMDdiMWIzYzZlOTI4M2I1ZThlNjc5MWVhMWZlNmUzYmM5IGxlZ2FjeS10cnVuaworNTEyNjUgYzBhNThhODU1YWMwZTM4MTM2YTU4OGU3NTE4NmQ5YzMwMDEzNDAxMSBsZWdhY3ktdHJ1bmsKKzUxMjY2IDQyMTgyNmM5NDEwNGYxM2FmZjc0YzkwN2QxNWU4Y2Q1NWYxZjMwOTMgbGVnYWN5LXRydW5rCis1MTI3NCBhNmE2ZGZmMTc5MzU2ZTI5ODFmYjU1MmYzOTJlNDQ0ZWM1Mzc0MTQxIGxlZ2FjeS10cnVuaworNTEyNzYgNjM1YjA5YjFmNTQyZTI5MTc1Mjk3NmUzZDk3ZjEyZWMwYmZlNjZmMiBsZWdhY3ktdHJ1bmsKKzUxMjc3IGE1NTM2OWUyM2YwNjk0YTVlNzkzM2UyMDAwZWFhM2ZiNmNlMTdkNjMgbGVnYWN5LXRydW5rCis1MTI3OCA0ZTViODNiYTdjMmE2YWY5Y2EwMWJjZjgzNTMyNTBjYjE1ZTY0NWY4IGxlZ2FjeS10cnVuaworNTEyNzkgNjRmYjY4ZGNhODk2NDhiNTlkMDE2MzcxODMxZWE4MjAzMjBiOTYzNiBsZWdhY3ktdHJ1bmsKKzUxMjgwIDIzMTJlMTc4YjM0ZDk3OTg4Y2ZkNmU1YmRkNjU4NGQ4OWM4M2UxYjAgbGVnYWN5LXRydW5rCis1MTI4MSAyNTRhMTg2OTM3YTliNDk5ZTk3MTgyZTM3YzdiZWNiNDdkNzkzY2NlIGxlZ2FjeS10cnVuaworNTEyODIgMTYwYjgzYzcxZDdhMGFjOTYwN2I4YzlhMDk2MzY2NDUzNTg3YWUyMSBsZWdhY3ktdHJ1bmsKKzUxMjgzIGE5NTA5MDI4MTAzMjEyMWEwMDJlNzZmNDFhNmJhNTdhZGI3MjJiYWYgbGVnYWN5LXRydW5rCis1MTI4NCAxNGVjOWNmZDk3NjAwZTI2MTQ2NjY0MTFmYzNhZDZiN2Y2NTYwNjc5IGxlZ2FjeS10cnVuaworNTEyODUgMzUyZmZlNzdiNzFkZDBlN2NhOGY2NjdhOWU2YTIwODZkYWEzYjA2MCBsZWdhY3ktdHJ1bmsKKzUxMjg2IGVhMWY4YTExYTcyYjlhMmEwMDBhMjU0NGY4N2MxMWY3YzZlMzQwMTUgcmVsZWFzZTI0LW1haW50Cis1MTI4NyA5ZDY0YmQ3NDgzMjBhZGI0MGM3ZTAzYmFiOTA0ZmMwODU0YWFmMDliIGxlZ2FjeS10cnVuaworNTEyODggY2Q2N2UxMTFlMWI4NWI3ZTE1ZWIxYmU0ZjU5ZDE5NDczMzk2YTFjNSByZWxlYXNlMjQtbWFpbnQKKzUxMjg5IDIwN2U0ODdmNDI1ZGZlNDFjNjE5OTA5ZTZhZDhkZjA5ZTE1NWU5MzcgbGVnYWN5LXRydW5rCis1MTI5MCBlOGM0NmNjOTlkZjVlZGQyYjUzMjMzYTg4MzE0MmY5OGY1ZDJlZTM3IGxlZ2FjeS10cnVuaworNTEyOTEgNzk5YmNmMGNjYmZkMzEzZmY1OTcyN2I2YWE5N2NlMGU2YWRjYmY3MCBsZWdhY3ktdHJ1bmsKKzUxMjkyIDE0OWRlNzI1Njg2NGNmOTIwMGQ5NzIzMmI2ZjIzZGM5ZDVkNzhkOTEgbGVnYWN5LXRydW5rCis1MTI5MyA4NDY3OGYwNzUwYjg0NDgwNDcwOGU0ZjBkNzRmZDIxZDVkZDRhOWM5IGxlZ2FjeS10cnVuaworNTEyOTUgZTkwZTdlNzY4Y2IzNTI3YWJmMjBiNGIxMTg3ZDQ4NjFmNzc0MWY0OCBsZWdhY3ktdHJ1bmsKKzUxMjk2IGU2ZmM0Zjk5YTYxYmUxOWFhYjdhM2ViYzFkOTJjMWJmMzE4ZWFlOWQgbGVnYWN5LXRydW5rCis1MTI5OCA0ZjkwYzFkNTMwZDk1YzljOTA2ODI5OGQwOWIyMWM4YTY4Y2U1ZWI3IGxlZ2FjeS10cnVuaworNTEzMDAgNjRiMzMwNjBlZjA5ZDVhNDcwZjQyNjcwYTUzNjcxMzAwNmM5ZDRjZCBsZWdhY3ktdHJ1bmsKKzUxMzAxIGJmNWJhZTFmMDBhZDQ4NWU0MzIwZTI5NTU4NDNhYTEwODY4MWJiMGIgYmNhbm5vbi1vYmpjYXAKKzUxMzAyIGJlOTBmYTdhYWNkYTc5Y2M3M2RkZGRmYzNhYmEyMDk4OWUyOTM3NWYgYmNhbm5vbi1vYmpjYXAKKzUxMzAzIDk1ZjY1NjY5MGEwMDA4ODljYjc0NDRiOGFjN2MzNDgwMTBmNzFhZTcgbGVnYWN5LXRydW5rCis1MTMwNCAyMDdlNzdjMTQzMzA2NGI2Y2NlMjcxZWEwNmE2NjQzODM5OTY2ZjFkIGxlZ2FjeS10cnVuaworNTEzMDUgOTA5N2VjZmViMzQ1MGMwM2I1YTBhNDg1ZjNiOWU3YzZhMDY3MjBmMSBsZWdhY3ktdHJ1bmsKKzUxMzA2IDZlN2IzZGQ1OGY5ODcxMDNiYzc1Y2YxNjQwMDk3ZTcyZTYzNDZhNGMgbGVnYWN5LXRydW5rCis1MTMwNyA5MTMzMDc2YzBiZjk3MWU5NmJlZGMyZTRlODk1OGRmOTNjYjkyNjZlIGxlZ2FjeS10cnVuaworNTEzMDggMmRmZTFjNjI0Mzk3YTRkYTE2MjY2OTQ1MjgwMWExYTY4OTkxZTkwOCBsZWdhY3ktdHJ1bmsKKzUxMzA5IDM3MWI5Y2QzYWYxNTYwMjk1ZDAzZGM1N2VlNDRlMjJjODVmYTZmYTEgbGVnYWN5LXRydW5rCis1MTMxMCA3OThiZWNhYjM5MDNjNGFjOWVlNDI5MDliYTc3OTg2NDc5MTlmODdkIGxlZ2FjeS10cnVuaworNTEzMTEgMjRjYWIyMjhiMDM5NmI3MDAyNWNiOTczOTQyNGQ3NjQzMDM0M2Q5ZCBsZWdhY3ktdHJ1bmsKKzUxMzEyIGI1MDczYjQ4YzkyNWYxYTk3NjMwMzYyM2I0N2UyNDJlZjczODEzNWEgbGVnYWN5LXRydW5rCis1MTMxMyBkYTRiZTA0MDhiNjI1NzI5NmE2ODc0ZGZlNWUxMmI1ZmYzNGExNzNkIGxlZ2FjeS10cnVuaworNTEzMTQgYTI3YmQ1MGViMGZkODdiMGNlMzkwNmJmYjRlNTkwNjI3ZDhmZGNiMSBsZWdhY3ktdHJ1bmsKKzUxMzE1IGM4Y2UzOTk0NWRmNWY4NzU3OWIwYjY5YzIzM2UwZGFkMGQ0M2RhNmEgbGVnYWN5LXRydW5rCis1MTMxNiBhNWQwZjlmYmNiZjRiODI0MjVkMDI1MGNkMDU5M2VmMWY3OWFmNTQ0IGxlZ2FjeS10cnVuaworNTEzMTcgZDIzYjY2N2YwNGRhMmJlMWU2YzE3NzZkZWFlYTIxNTRhYTU2NGNjMiBsZWdhY3ktdHJ1bmsKKzUxMzE4IDRiYjM0ZWI0ODczNjc0NzBkNGNmMjZkMmU5MjM3YWE1ZTliOWM1ZWUgbGVnYWN5LXRydW5rCis1MTMxOSAxMzU4NDA0ZDZkZDllZTk0NTJmY2MyOTQ4ZmMxYTliN2MzYWNhZGYzIGxlZ2FjeS10cnVuaworNTEzMjAgZmZlN2QzYWIzNWE4MzcwZDE2MzAwMzIyMjJjNDkwNDI3N2IyOTY4YSBsZWdhY3ktdHJ1bmsKKzUxMzIxIGZlODBiYjEwMmFiNmQ1MWUwZjk0ZWZlMDVlZTQ1MjEyODQxYTZmOGMgbGVnYWN5LXRydW5rCis1MTMyMiBkODIyMTg1NTQ4OTcxYWI3ZjgwODMzMzI2MTUzODc5MDNiNzdhZjUxIGxlZ2FjeS10cnVuaworNTEzMjQgZWRkODNmMTYyNDUzYWEzMDg4OGE2NTdlNDMyYmE2ZjI0MGZhNzk1OSBsZWdhY3ktdHJ1bmsKKzUxMzI4IGFhZmUxYWQ3M2VkNzQ5YmZmYTYzZmVhOGJiMmM3ZjVhMjI4ZjNmNDcgbGVnYWN5LXRydW5rCis1MTMyOSBkOTY2MGY1MWIwNTZiNzRmNzU0YmVkYTJkMTc1NDQ1OGZhNzMzNzhjIGxlZ2FjeS10cnVuaworNTEzMzAgYTZhZmUwZWRhNzExZDk5NmI3MjZhNTQ4YzA1NzkzZWM1NWI2ZThlYiBsZWdhY3ktdHJ1bmsKKzUxMzMzIDJkYzY0ZDU3MGU4ZDdhNDQ5OGFiODUwMTA4Yzg1NzA5YzI3NmRmOTMgcmVsZWFzZTI1LW1haW50Cis1MTMzNCBhMzU4YWYyMWE1NGE5YmQzOWY1MDZkNzI5MWRmMzQzODc5ZDE3YTgwIHJlbGVhc2UyNS1tYWludAorNTEzMzUgOGU4OGVjYmQ0MDhiZmM5Y2QwYmZkMzU2MWQ3NmRkZWZhNGY3ZmY0OCBwM3lrCis1MTMzNiA4ZjViOTk4MmJlYmEwNDhiNGJlNTZiMDZiODdkYmYxM2RmM2M2ODk4IHAzeWsKKzUxMzM3IGU0YTY0MjljMTIxNGVkZTkxMWNhYTU1ZjBkODA2MDA1ODQ2OWMwM2YgcDN5aworNTEzMzggODQxZTBjODZlMDBlNDIzZjgxNzA5MmUyZmY1Y2RhZmE0YjgxMDE0MSBwM3lrCis1MTMzOSBjYjY3M2VkNTA3YTc5NDAyNWJlYjRhMzdhZjg3ZGVmMTZkZDM4MGFjIHAzeWsKKzUxMzQwIGIyZmUzNmJhYzNhMTY0NGUyNWJkNWQ4NmE4ZDE0MTU3ZDU3MzJiYWUgcmVsZWFzZTI1LW1haW50Cis1MTM0MSAxYTY4OWJlMjczMjk3MzI0YzNmYTNkZDVkMGI4MDk5ZmE1MGNlOWU2IHJlbGVhc2UyNS1tYWludAorNTEzNDIgZWRiMTYyMTAwOTc5Yjg3OTI3YmRmZWQxNThjZWJiOTY0NGUwNTdiZSBsZWdhY3ktdHJ1bmsKKzUxMzQzIDliYzBiYzBhZDFiZmU2YzkwOTZlN2IxY2MyZjQ3OGNhOWEyMmM1ODMgcDN5aworNTEzNDQgMDEwMzQwMThlOGIyZjgwZDhmZDVjODI5ODhkMjM4MmFhM2RmYjMwYiBwM3lrCis1MTM0NSA0YWJiNDZkZDJiNjA3ZjllYWE5ZGFkNTY3NmVhYzg5Mzc2Njk0NDdkIHAzeWsKKzUxMzQ2IDFlZGRlMjM0OWY3ODQ2NmZiYzAwOWM0MTcyMzg2NzNjMjgyODdkZWIgcDN5aworNTEzNDcgZjY4MjY5ZWQ0NjFlNWQ2MjA5OGEzMjk1MTdmNTg5OGU5NTU2MGQ1NCBwM3lrCis1MTM0OCA2N2U0NTcwNGMwN2VhNWEwNGFmMGU3YjFiZGEwMmRkODE3ZGUxMzEzIHAzeWsKKzUxMzQ5IDMwMjJjZDVlMDEwMDQ0YzNiYWQxZDZiODAwMGEwMTUzYzYzZWI0ZWYgcDN5aworNTEzNTAgNWI2ZjgyMTAxYzQwNWIxNzU2ZGM4MDJmZjIyMTUzOTRiZWE4MGYxNiBwM3lrCis1MTM1MSBhOGJiMWFkN2ZjNmZhZGM5MTQ0ZjYxNzIyYzA4NjA2MTAxOGIzMmQ3IHAzeWsKKzUxMzUyIDBhMWY4N2E4NTViM2U2MTViN2M5ODIyYWVlMGMyNDcxMGRjNjYwZDEgcDN5aworNTEzNTMgZmEyNzU4NDU4NjZjOGE3ZDVlNWU5YjBmZTcyMzQ3NGE1MDU1ZDllOSByZWxlYXNlMjUtbWFpbnQKKzUxMzU0IGE4NzMyMGViZDBlNjY4OTY0YmU4YTc0NTM5NTMwZjg2YjQwMTdmYTYgbGVnYWN5LXRydW5rCis1MTM1NSAxZmY5M2JhNDA0NTA4ODM3MGRkZjA0ZDRmMjNlM2Y2M2M5OWFiMzY0IGxlZ2FjeS10cnVuaworNTEzNTYgMzFiOWE0YjQyNTI4ZWNmYTUxZmEyY2Q2YjUwZWI2MGFhYjhmNWM3MCBsZWdhY3ktdHJ1bmsKKzUxMzU3IGRmODdiNjA1NjdjZWI1MjRhYjlhMjMzNGU2OTBiM2RjZmUzZmViOGQgbGVnYWN5LXRydW5rCis1MTM1OCAwNDVlMjBmZjg5ZWJiNzA5MzIxNDEyN2M2NWQ3MzIzMDg0MGIwOTA5IGxlZ2FjeS10cnVuaworNTEzNTkgODliNzMwYjcxNDM0ZjljZWE0ODQ4YWJjODY2Y2M4ZTgzYzhjZDRmYiBsZWdhY3ktdHJ1bmsKKzUxMzYwIDIxMGM1YjU1NzVjYjVjYTAxZDFhMDJjOWI2OTRkY2JlYjZhYWFjNzQgbGVnYWN5LXRydW5rCis1MTM2MiBiNWQ0ZjNhNzNkZTA0ZjcwZTc1YTUzZGYxNzg0Yjg3ZTlkYTJlNTZiIGxlZ2FjeS10cnVuaworNTEzNjMgZjNkZWU2MjVmYzQ4M2E2M2RmZTVmNDdkNTM4ODM4MjIwMmNjYWJmMSByZWxlYXNlMjQtbWFpbnQKKzUxMzY0IDRjNmY3N2I1NjQ1MmQ2YTQ4Y2YyYWVjYjU5MDNjZmQ4NDdkZjZkNDAgbGVnYWN5LXRydW5rCis1MTM2NSBjYTc3ZGUzNWRiNjIwYTE3NTA3ZGQ3MzkwYzM5MThhYTg3NjI3YzQzIHJlbGVhc2UyNS1tYWludAorNTEzNjYgN2ZiNTZhYWY1MmJiY2VhNTVjMjNhNWY3MTkzMDE4ODUyZDM3OTM2ZSBsZWdhY3ktdHJ1bmsKKzUxMzY3IGI4N2ZlMTFmYjdlMjhhZTI5M2VmOGJkYTZlZjhkNzE1Mjg4N2U1MWIgbGVnYWN5LXRydW5rCis1MTM2OCAwYWQ3ZTg1YzhjMDRlOGE2N2Q3MTU2N2U2N2M5ZTdhMzQ5MzhmYjdlIGxlZ2FjeS10cnVuaworNTEzNjkgNzliYmZhMWRiZDFiYjBjNmExZmJhZmYwNzEyMGI1OTQ4NzIxMTI5NyByZWxlYXNlMjQtbWFpbnQKKzUxMzcwIDFhYzE0ZDQzZWM2NDQxZTZjYjIyMGIzMThmMjk4NjczOTgwODc4OWQgcmVsZWFzZTI1LW1haW50Cis1MTM3NiBjNGU3YjQwNzBmMDc1NDdmZGIxMzRkNWU2Y2I5NTNiMzI2OWNlOGFjIHJlbGVhc2UyNS1tYWludAorNTEzNzcgZTdhNWIyODdmMjdjMWE5ZWU5MDFkNTIxMTE4ODQ1NmEyNjg1ZTQwMiByZWxlYXNlMjQtbWFpbnQKKzUxMzc4IGNiYjQzNWM1YzIxYzY3MDNmMTk3MDM4ZTc0N2Y1MTQ4OTdkOWMzOGEgbGVnYWN5LXRydW5rCis1MTM3OSBkZTRlZjE3NzI3OGJmZjg1N2Y3MTE2M2Q0NzBlMWQ3ZjA1ODFiZTlkIGxlZ2FjeS10cnVuaworNTEzODggMjU1MWViNTY3MWE0MWQ4YTQ2YjY4MTNmZjE0ODkzYTk0MTkxOTg5OCBwM3lrCis1MTM5MCA2MzIzN2ZjZWZkOTllZTRmNjc1NzIyZDVjMjcxMDY1OWFhNWRkOGNiIHAzeWsKKzUxMzkxIGNmYjM4NDczY2ExMTk5ZDk4MzJiM2FlYmMyMzU0YWQ2MTE0YWFhMDggYmNhbm5vbi1vYmpjYXAKKzUxMzkyIDg0NTJkNWVlN2IwM2JjMmVjMDY0OTAwNjYwOGJkMTQ2YzA5NDU3NzQgYmNhbm5vbi1vYmpjYXAKKzUxMzkzIDRjNjc0YTA3YjIzYzM2MGZmOWIxODhjODFhZmFmZmVmYWI1YzllYjIgYmNhbm5vbi1vYmpjYXAKKzUxMzk0IGQyM2I3Y2IxNzAwYjUwZWRhYmQ0NWQwYWRlZjgzYWFmNDM2MjE1MDMgcDN5aworNTEzOTUgMGI1ZDhlYWUzZWNhMDYxYjdlYmRlNjJiYTNhODAzZDZiZjM4N2NlNyBwM3lrCis1MTM5NiBjNTU3ZDQ0NzRmMGY0ZjA3ZjliMGVjMmFlNzlkNTgyYzJkODY5NWU2IHAzeWsKKzUxMzk3IDNlYmY1NjA0ZjYzMjBlNWIxZWUyYTM2NDQyOTUzOTFkMWRjZGNiNmQgcmVsZWFzZTI1LW1haW50Cis1MTM5OCBiODhiNjlmOTdhY2MwMDYxYWFjZDNhNjhiMjA5NmRiMzZkNWQxMmVmIHJlbGVhc2UyNS1tYWludAorNTEzOTkgN2NiY2IyMmM4YjhiMmM4YTRiNjM2MGEwNWEyYjc0OTM0MDcwYTVlMCByZWxlYXNlMjUtbWFpbnQKKzUxNDAwIGE3NDVhMmJkNDhhZjBiOTRiMWZjY2VkMDQ1ZjQ4ZjAwNTY4YWJlOGMgbGVnYWN5LXRydW5rCis1MTQwMSAwYWY0ZmZhYmEwM2MzMmI0Y2E0YzA0ZmE5YzJlMzI0YzdkNDZhZTZkIGxlZ2FjeS10cnVuaworNTE0MDIgODdkMTUzZmZiYjk4YjVhODNiNWU2OGNmMjIwZTdiZDc2ZjIwYTUyMyBsZWdhY3ktdHJ1bmsKKzUxNDAzIGIwZTBhNWViOTA5ZjE5NzliYTExNDUwMThkYzk1M2I4ZDMxZDg2YjkgbGVnYWN5LXRydW5rCis1MTQwNCAyYzQwMjY3Njk5NDU0OTkwN2NmODFjNWYyMmQ4MmE0OWEzYjkzOGI2IGxlZ2FjeS10cnVuaworNTE0MDUgYmJlZjJlY2RlZTMzZWJiODE5MDMzMjA5NWY4ZGE5NDdkM2MwNjM0NyByZWxlYXNlMjQtbWFpbnQKKzUxNDA2IGJkZWU0NTg4OGI2NDBjOTU2MWVkM2I4ZTRlY2RjNmIwM2Y4ZDRmMjIgcDN5aworNTE0MDcgZDI0MGNlNTY5NmY5ZmU4Zjg1NjFhNTVmZjhkMTNkZDI4MTYyNjM5YSBwM3lrCis1MTQwOCAxMmM0MmZmOTk0MzdiZjcyYWRlNjc5MjY3MGJkMGI4ZWJkZTE4NzJiIHAzeWsKKzUxNDA5IDgyNzE3Yjg0ODg4ZTA0NmFhYjljZTMxMDkzZjQ1ZjA1ZjM0MzU0YTUgcDN5aworNTE0MTAgMGYxMzVhZmZhYmYyYzdhZjQxNjczNmMxYjEyNDg3YmFiZWQ0NDc5ZSBwM3lrCis1MTQxMiA1OTlhYmMzMWY3NzBhZDc1YTc2Y2Y3NmI5NzdlNTUyY2JlYWY5ZjFjIHAzeWsKKzUxNDEzIDk2MzQ5NmNiZjNkM2MwZjFjY2UzZjBmZmRlNjJmNDUwMDYxMDNhNmMgcDN5aworNTE0MTYgNDQ2MjJlYjU4YTI1YjZhZjA2MTg4MGZjYzA1N2ExZDQ1ODUxOWI3NSBsZWdhY3ktdHJ1bmsKKzUxNDE3IDViMmMxYjY1ZDM1ZWVhOThlMDRhNDE4ODNmZTAyMWIxMThkZmM0YWUgcmVsZWFzZTI1LW1haW50Cis1MTQxOCBjMzMxOTJlMmMyNWIxOTRmZGNiODcyYWE0MGQxZGYyYjhhYmE2NTRkIHAzeWsKKzUxNDE5IDE1NGYyNTZmZmY0Mjk5NWQ5ZGExM2Q3Njc0YjMzMWM0YWIyOGYxMjEgcDN5aworNTE0MjAgMjJjMmUyNWVkMGU0MGJlY2NjZDZkYTFmMDI5MThhMmExYWVjZTNjMCBwM3lrCis1MTQyOCA1ZTE0Mzk0NDc3MGI0MWNiMjRlZDJjMTlkOWU1NWUxOTY0MGEzODkzIGxlZ2FjeS10cnVuaworNTE0MjkgZWVkYTI3MDQxMzBlZjUwYjA3M2Q5ZThiNjA4NDQxZWJlZDg1MjFmNSBsZWdhY3ktdHJ1bmsKKzUxNDMwIDczYTMyOTFjNThkYzFlZWI0ZWM2NTM1ZjYyZmE0MGVjNmIwMjMyZTcgcDN5aworNTE0MzEgNDBiYmU2NjliMDg5ZWZhNzBkNmEzMWQ1YzE1NGQ0NTkzOWQ3Y2EyNCBwM3lrCis1MTQzMiA4ZGQ1N2M1M2NjZjZiMjkzYzM0ZGRmODFjZDMzODBjMDVlY2M4OWE4IGxlZ2FjeS10cnVuaworNTE0MzMgZGI0MmU4N2M5Nzc2ZjcwMjQ3M2FhNDNiNmU4ZDQ0ODRiYjkwN2Y1ZiBsZWdhY3ktdHJ1bmsKKzUxNDM0IDJmZmRlZTFjMzg4NDRhYjAxMmI2ZjkyM2Q0NTUyNGNlY2M3YmQ3N2EgbGVnYWN5LXRydW5rCis1MTQzNSA2ZjEwMjA3NDMwNzc0ZjEzODZjMDZkNjY3YjU1NGRlOTk1ZTgwODYxIHAzeWsKKzUxNDM2IDhkZDcxNTdkMmEyMmExOTEwMmU1NDNiYmJkNTI1OTYxYjFmYTVhYjcgcmVsZWFzZTI1LW1haW50Cis1MTQzNyBjZjQyYTQ0YzU0OWVkYTAxMzliYWQ0NWU5ZTIyZDUxODE4NGExMDIzIHJlbGVhc2UyNS1tYWludAorNTE0MzggMzY3NGYyMGFjNzgxZjY1N2M3ZmJlNmNlNDM0NDViN2ZiYzQ1MTRlNiBwM3lrCis1MTQzOSAxN2YxZGYxNTUzYzlhZTQyNWQyYWJjMzE1OTRjMjUxMzJmYTgwODAwIGxlZ2FjeS10cnVuaworNTE0NDAgNTExZGI3MWI1YzE0ODlhMzg1YWI2MWIyZDQ2N2NkMmMyOWMxNmRlNiBwM3lrCis1MTQ0MSA1MzkxNGQ1NDBhNjc4MDE4NmZjOTdhYzcxYmIyNmQyYzVhOGVjYzJmIHAzeWsKKzUxNDQzIDlkZWU4MWRjYjliNDE5YjljYTc3MWFhNDRlZGUyYjViNjBhOWMwN2MgbGVnYWN5LXRydW5rCis1MTQ0NCA3ODNjNWUyODAzZjk1ODBmYzgyNzZhMGFjYTczZTg4NDc1ODUyNjRmIHJlbGVhc2UyNS1tYWludAorNTE0NDUgYzQwZmU4NjU2M2ZjODgxY2VhOWUyMjFjMGVhYWUxYzE1ZWM5MDcxMyBwM3lrCis1MTQ0NiBlZDBkYjBkNmNhOTkzODFhMjg4N2M4ODM1MzQzNDhjMzkxNWIyOTc0IHAzeWsKKzUxNDQ3IGU2MWIyMmJmN2FiNDc3MjU3MGM5NzFhOGVmYTNlMzUzMzUzMzVhMmYgcDN5aworNTE0NDggMDJiYmVlYzI3MTRmMDQ5MWIwNTE1NTZkMTI2YzU4MDVlNjQwZTU3NyByZWxlYXNlMjUtbWFpbnQKKzUxNDQ5IDM5ODI0NzVjNTE0NGJiYzk5ZTE5ODJiNmNjY2E0ZGUyZjNjMDIwMDUgcDN5aworNTE0NTAgZThhNjViYmQ2YTI5MmM4NzQ4ZWIyMDQ1NjY1NjUzMzY3MjA0ZGU3MiBsZWdhY3ktdHJ1bmsKKzUxNDUxIDNjYmVkMTNjNDY0ZDljMWRlNGM1ZTQ0N2NkM2U5Njc5Y2FmOGUxMDAgcDN5aworNTE0NTIgZTdiMWEzZGIxZmUzY2RiYzc2MGU5ZGY1N2JkMWNjZmYwM2E1OTc5OCBpbnRfdW5pZmljYXRpb24KKzUxNDU0IGM2ZDlmYTgxZjIwZmRjZDAyYzM0M2FhNjIwMjRlMDE1ZDUxM2M2MjAgcDN5aworNTE0NTUgZjE4ZDc3OWM3Y2ViNjcyZWUzN2U3ODNmZDFmZWE0YWNlZGFkZWNlOCBwM3lrCis1MTQ1NiA1ZmRkZGRkNTE2Y2I3Y2MzY2E4YmRlNjM4NjNjZTQzOGZkZGYyZjZhIGxlZ2FjeS10cnVuaworNTE0NTcgYzhmZjQzODAyZjMxNGM3ZDZlOGQyOGJkMzkzN2Y0MGEzN2JiYTA4MiBwM3lrCis1MTQ1OSBlODZjMGIyOWI0YTI2YTQyZTRjZTY0NjlmMmNhM2U5YmZjYzMwOTVhIHAzeWsKKzUxNDYwIDcxOWM1ZGI3YmZhZDQ1YTdmYTkxN2QxNWJhNTYzMzFmYTA1NTM0OTQgcmVsZWFzZTI1LW1haW50Cis1MTQ2MSA5Y2M2YTU0OGRlYzQ5NDNlYzJkYzYyNjZiMDczMzNiYWI4NDI1NTBhIGxlZ2FjeS10cnVuaworNTE0NjYgMmY2YjQyYWVhZDk0ZjgxY2UyZTYwZTNmMmFjZWZlOGYzNGE5OGRiZSByZWxlYXNlMjQtbWFpbnQKKzUxNDcyIDhkNzFmOWE2YzFjM2EyZWFmMzI3ODEzYmFkZjIwZTk0YjA2YmE1ZDggcDN5aworNTE0NzMgZDY1ZTZkY2ZkY2I1N2ViZDAxMDkzOWZiZTE5OGE5YTRjYWQzMDFjYyBsZWdhY3ktdHJ1bmsKKzUxNDc0IDlmMjc4MDA5MDI2ZGIzODM0YjVlMmYwNjJkNDcwZmU3YTQ4NWYyYjYgcmVsZWFzZTI1LW1haW50Cis1MTQ3NiA1ZmY2OTZmMmE3YTVhYTI1Nzc3NjExNWQ0NjEzNzcyOTdlNzAzMjhkIGludF91bmlmaWNhdGlvbgorNTE0NzcgNDRkYTNkMjk3MTA3OWJiZjdiMTY5MTRjNDdhZGE4NTBkYjllNWM3YSBpbnRfdW5pZmljYXRpb24KKzUxNDc4IGQ5MTU4NWIyY2RjMTAwNzk3OGRiZmJiYjA1NDVhMWRjZTMzYmZmNjMgcDN5aworNTE0ODIgM2VhNTI3NTg3NDEzMWUwODJlMTIzNDdlZGIwNTkzOGY1ODJjZTM4YSBwM3lrLW5vc2xpY2UKKzUxNDg2IGYwZjQ5N2EwNTA0Y2NmNTI1ZjIyYmVmZDQ2ODAwOTYxOWVkYTY3Y2YgcDN5ay1ub3NsaWNlCis1MTQ4OSBmOGE5MGQxODI1Y2UwMDJiODExZDE1NGI0NGM3ZThmOTQxODg1ZTFhIGxlZ2FjeS10cnVuaworNTE0OTAgNTNkZjNlZmY5NGUzZTYxODJlZThhN2RiYThhZTg5M2RjNDY0Y2Q1YiBwM3lrLW5vc2xpY2UKKzUxNDkyIDE4NGY3YjE2ZDIwMzZmNmM0ZTQ1NmQ0OTE3OTI1MTkzOTIwZTE3YzEgaW50X3VuaWZpY2F0aW9uCis1MTQ5NCBhNWYzNDNmNzI0NzEzNWZhMTgzZTg1MmNhM2UyOTJkNzNjNTdlM2YwIHAzeWstbm9zbGljZQorNTE0OTUgY2U1ZTQ1ZTRjNWQwNjljZGEwZjQzM2QzOGVkMDk3ODg4ZTNkZTkyOCBpbnRfdW5pZmljYXRpb24KKzUxNDk3IGE1OWJiZmQ4MDhkOTcyNzA4NmExYTBhZGEzOGI4YWUyNmU1YTIxZjEgbGVnYWN5LXRydW5rCis1MTQ5OSBlNmUxYjQwMzgyN2U1ZTU3OTQ0ZWVkOGJkZjkzODBhNWYyM2UzMmE2IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTE1MDAgODc4MmNjMGZiNWUwZmVjMGU4YWM3ZGZkOGZiZmNhZjE3YTNmZTY5MCBpbnRfdW5pZmljYXRpb24KKzUxNTA1IGFjN2YzOTNmZDI5YjM0MmYwMzYxOTAxMzlmY2JiYjU0ZDM3MjNmMDQgaW50X3VuaWZpY2F0aW9uCis1MTUwNiBkMTc0M2IwODI3MzQ3MTQ0YWZlMzg0NWRkMWNkYjJiZmEyZjQxOTQ3IGludF91bmlmaWNhdGlvbgorNTE1MDcgYmNjNDE0Mzc4ZjMyMDdjY2Q1MmQyNDhiNDMyOWY4YzUxYzNhNDk1YyBpbnRfdW5pZmljYXRpb24KKzUxNTA4IDZkNDM1ZGE4Yjc5YjMxODZhYzA0ZDYxN2U5ZGM1ZWQ5NGQ5ZDYwNDkgaW50X3VuaWZpY2F0aW9uCis1MTUwOSBmMjhiZTVkYjUwMDViYTkyYmQ4M2U0NmJhMzFmNWZlZmY0ZTY1MzI1IGludF91bmlmaWNhdGlvbgorNTE1MTEgMDUwZmI5YTA5N2NkN2NmMGNlMDgxMDhmYzQ2NDAxOGNmYTc4MTZlNCBpbnRfdW5pZmljYXRpb24KKzUxNTEzIDQ3MmNhNzAwNmY3MGYyYTNjYWU0YTA5NjJiZjM0NTliZDFhNTNkZWQgcDN5aworNTE1MTUgNDQ5YmEwZWZiNmJkMjc5MTFkOWE1YmJkZTk3NTNiMjI4MjVlMDg4YiBsZWdhY3ktdHJ1bmsKKzUxNTIyIGUyODAzMWFmZWZmNWYyZmE4YmJjNTYwYWU0ODJkMWEyOTUyZmNmMmMgaW50X3VuaWZpY2F0aW9uCis1MTUyNSBkNWZhNGFmZDY2MjBlNmU2N2UwMWM1NWI0MzA4Yjk4ZWZlZjY1NDdiIGxlZ2FjeS10cnVuaworNTE1MjYgNWNjZTAyODg3NGJjNzhlMTIzMGE5NGI0Mjc3N2Q1NGIzNDkxYjUzMSBsZWdhY3ktdHJ1bmsKKzUxNTI3IGY0NTQ1MTgxOTQ5MWI0NjVlY2E3NjE0ODk1ZjA4NTlmMzViMDhhNGEgbGVnYWN5LXRydW5rCis1MTUyOCBhYWE3NDVmYzdiNzY3ZTk3MTAxZTdlMDI4MTliZDcwYTY5MmM3OTdiIGludF91bmlmaWNhdGlvbgorNTE1MzAgOTgxMTgxZDJhNGZlMDc1NTdkM2U4NzI2MjMyOGUxOTBlNTEzZGQ4YiBsZWdhY3ktdHJ1bmsKKzUxNTMxIDNkZDYxZmZkMDQ5ZTE1N2UyNjI5NjQ0NmYzMmU1NTJlMWQyMDVlMmIgcDN5aworNTE1MzMgMTNkNWU1ZjBlOTkzYWM3YTY0YzM3YzkyM2Q0N2E0NGY5OGYyZDc4OSBwM3lrCis1MTUzNSA4YjllYzM0NGJlZDJlNTcwZmQ2ZTJhNDgyMmFjNWNmMTA2YTkxOTFkIHAzeWsKKzUxNTM2IGNlMjNkODY3MzJiMGI4OWFmMjA0OWZkYmFlYjA4OTg2NGMxNmE1ZTggcDN5aworNTE1MzcgZGNlZWE0MWY0YTZkYWVhMjEyODVkZTg4NzNkYjE4OTlkMjM1YWEyYSBwM3lrCis1MTUzOCBlZmUzZjJjMGRhNWU4ZWQ1MmI2MjU4ZGI4YmIzYjAxNWRkYTZjNmZlIHAzeWsKKzUxNTM5IDc0OTZmOTQ3NTRmZjBlYjE4MmQ2NmFmYjg0ZTYzYTI4ZDYwYjU0NDAgcDN5aworNTE1NDAgNjlmNjFmOTBjNGZjMDhhNTU2NDg4MDc2MGY5ZjBhNTg2ZmUyYzJmNyBwM3lrCis1MTU1NiAxYTBmNDQ3ZTYwYThhZmIzNjcyZWMwMDM2ZDMwZDg1Zjc0NDQ1NzNiIGludF91bmlmaWNhdGlvbgorNTE1NjEgMWNmNTI4NWM4YWI5NDdmNTg1YTVkM2RlZDI1NzRmMzNjZWZmMWQ4MiBwM3lrCis1MTU2MiA1MWNkYzM5OGUwYjA2M2U4NjVjODMwNTM4MzhhMmQ3NzYwMzgxYzJlIGludF91bmlmaWNhdGlvbgorNTE1NjMgMzE3ZGNjNTkwZmZkOGEyNmI2Nzg5YWE5MjhmYTQ3ZWVjY2E2Y2I3ZSBpbnRfdW5pZmljYXRpb24KKzUxNTY0IGU0ZGVlYTkzOGRlZjA4MmFmZGVkNzA4NmZhMzZiMmJkNWJjY2IzMWEgcDN5aworNTE1NjUgYTg4YmMzYmFkNjUxYjNhZmFiNjhlY2NkNDE3NWJkZTM0Y2Y1MDU3YyBsZWdhY3ktdHJ1bmsKKzUxNTY2IGFkYmZkOGQ1ODUxY2M2MmI1OGIwMTMyZWMyMzQ0Yzk1MWNhM2JlOGQgcmVsZWFzZTI0LW1haW50Cis1MTU2NyAyODBjNmRiMzFjNWEzZDIwMzJmMGE5M2U2Y2M1ZDlkNTYyMjZmYzIyIHAzeWsKKzUxNTY4IDkzNDhlYTYzYjAyZGZkZWMwMzcyZjljNmY2Y2RhNGFkYjY1MWVkN2EgcDN5ay1ub3NsaWNlCis1MTU2OSAwODAwNWJhNmNlYjkzMGRjNzM3ZjRmYjEyYTJlZjdkYmExZGEyMDBmIHAzeWsKKzUxNTcwIDUyM2U2Y2NlNDE4NzE1MGRkOWEyN2I0MWE1ZWY3ZjliNTcyNmFmZGIgcDN5ay1ub3NsaWNlCis1MTU3MSA3ZWQ1Y2U4OWYyNmFlN2M0OTVhZmFlNTdlNzg4MzYxOGEzZGE1MzQ3IHAzeWstbm9zbGljZQorNTE1NzIgZWJhZDU5YzcyMzNlM2E4MDVhNjlhYzM5M2Q0YzgxNzc1YmZiYmI5OSBwM3lrCis1MTU3MyA3YmM0MTkyYTUyNzhjNThiY2E5NWNmZWQ1NDBmM2EzNzc3NzA1YTYwIGludF91bmlmaWNhdGlvbgorNTE1NzQgODQzMzU3ODhkOWNiMjEyNjJiNzU3ZjQyMWYxMDEwNWRjYTRmYTEzMiBpbnRfdW5pZmljYXRpb24KKzUxNTc1IGU1ZWMxYWRiMDYxZjVhYjU4M2QyNjFhYTc2YzhlNzczYjFmOTNiNTggcDN5ay1ub3NsaWNlCis1MTU3NiBiZjQyYzgxZGI4MDZlZjIxMmYyNWEwYTkwZWRlYjUwYzhmNzRiMjUwIHAzeWstbm9zbGljZQorNTE1NzcgYTUwNDhjOGQ4ZjMzMzJhYjdkNDQ2YWNkYTgwMDhiOGM1MWEyNjE5NCBwM3lrCis1MTU3OCBhMjQzYTUwZGEyM2FlMmVmNTEwYjZjYmQwZTM5NWVlN2M1YWU0ZjM4IHAzeWsKKzUxNTc5IGY5ZTc1NjBmZTAwZDIxODk4OTYzNWYwNzVhNTYyMjlhYjM3YmM0ZTAgcDN5ay1ub3NsaWNlCis1MTU4MCA3NmE5YTUxMzFhYWVjOTYzNTRhOTI3YTY4YWQ5MzA4YWRhZjFlOTNlIGxlZ2FjeS10cnVuaworNTE1ODEgNDRhZjRiMzdkNWZmNDBhMmU3Y2NlZWRmMWE5NTRhMjM1N2RjNDQ4MyByZWxlYXNlMjUtbWFpbnQKKzUxNTgyIDI2ZDI5NWU3OWFlODcxNjMzNzE4ODRkMWFlNDdmZGFlNjIxZTMwYzcgcDN5aworNTE1ODMgZTY4NGY5N2FlM2ZhZmIxNDgwYTA4NTEyZGFjZmY1YzM5MGFmOTBmZiBwM3lrCis1MTU4NCBmMTZhNTgzYzViMDkwNDVkOGEyZDNiNDM0NzdkMzg5NjliMmYwMTMwIHAzeWsKKzUxNTg1IDRhMzhjZDFhMTYwNjFiMWYzZTIwNWNiZTZjYmE5NzFhYTk4YjhmNTcgcDN5aworNTE1ODcgZjUxZWRiY2Q1Y2MwMDA4YjAzM2ExMzUyNWVlOGM0YTUwY2Y3NTZhMiBwM3lrCis1MTU4OSA5MmNmMzk3NGQzMmZiY2VlNzYxOWEzYTAzYTViYjYxZDY2Yjc5M2NkIGxlZ2FjeS10cnVuaworNTE1OTAgZWRlYzc5NjJhZjI4N2U4YzBmYWU1NmVhYzE2NDllZDEyYzgzN2U5ZCBwM3lrCis1MTU5MSBlMDc2Y2NhNGQ5ZDdhMGM5Y2MzY2Y5YjRlZjUzNDUxNjhhM2Y0YWI4IHAzeWsKKzUxNTkyIGRiYjU5NTRmZGRjY2NiMDM5Nzc1MzdkZjRiNjA2NDk5YjE5ODEzYzYgcDN5aworNTE1OTMgZjA3OGU3ZTRiOWExNTA2MjIxMzlhY2Y2NzkyMWRjMTEyMDQzZjE4NyBwM3lrCis1MTU5NCBmZjY5M2E4NjFiNzA0ZmRlMTc1MGVjOWRkZjIxNzgzYWQ3OTE0NWZjIHAzeWsKKzUxNTk1IGY4MTE1ZjY4NmU0MDExYzY4YzE0MmEzZjc3MzA4MWFiYWNhMzZlMDMgcDN5aworNTE1OTYgNjkyN2FjYmZhMDFiNDdmYWJhODQ0MmMyMDBmMjc2ODUwODM1OGM0ZiBwM3lrCis1MTU5NyA0ZTVjOTRkMDM2NDkzZGY3MGNkMmY0NjkwMGJjNWVmYzg3NjllOTkwIHAzeWsKKzUxNTk4IGViMmY3MGZkYmYzMjQwYjk5ZDI2MDUwNmFlZTJhYWZhMzlkZjQwOGUgcDN5aworNTE1OTkgNzg1NjRlMjY5ZDIzMGIyZjUzNzc3ZTMzYmI3MjgxOTQ3ZTIzMzVkNyBwM3lrCis1MTYwMCBmODdhM2U2MTg1M2Q3MmIxZDEzMzk5MmY5OTFlMzk3YjMxYWFjOGU4IHAzeWsKKzUxNjA0IDNiZmM4YmI0ZTcyNmYwYTczNmM5YzUwMmNiOGE4YTM1YTkzZWM5NjkgbGVnYWN5LXRydW5rCis1MTYwNSBjYTJiMmNjMjMwN2U0NDEzZmEyYmZmNWI2YWFiMDkyNzM5MDdmYzc5IGxlZ2FjeS10cnVuaworNTE2MDYgZjQ5NzY1MGExNDkwNmYyNzYzOGRmYzMzMGRiMWFiMzA1ZTZkM2ZlYSBsZWdhY3ktdHJ1bmsKKzUxNjA4IDkxNmFlNjM2YTgzZTRiODAwMmMwNzI0YmM2OGFjNzRkODQzODYyZWMgbGVnYWN5LXRydW5rCis1MTYxNiBiYjA3MzgwNWZiYWJhMDExNTM3NzQ4NjkyN2MyNWQwMWNhMjlhNmVhIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTE2MTcgOTA0OTU4MjE2ODEzMWQ5ODlmYTVjMmVjNjFlMzZhN2MwYjBiNzU3YiBsZWdhY3ktdHJ1bmsKKzUxNjE4IDU1NDI3NTkyNTRjMGIyODBjZGJmZTYwNTViNWExMzgyOTQ5MzAyMGUgbGVnYWN5LXRydW5rCis1MTYxOSAxYjczNWE5ZDIxMDcxMGRlNGI4YzRhYWIzNDAyMDk3NmNhZTlkNDc3IGxlZ2FjeS10cnVuaworNTE2MjAgYWNhNzA5ZjMzYTZhMTY4YjE5OTg2NDVkYzE3YjRmODhjMWZkNzg4NCBwM3lrCis1MTYyMSAzZDc3OThmZWFmYzU5OGY5ZWJiZDc2MTRiOTU5YzIxNThjNzRkOTdhIHAzeWsKKzUxNjIyIDZjMTg0ZmE1NTE3MGEyNjg2ZTE5MzIzMGU3YWVhNzRlNGQ5YWIwNjUgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTYyMyBlYmViMzRhZGQ0YTYyY2RjZTY1ODhkMDQ5MWZjNjhhN2I3NDM4NDY0IHAzeWsKKzUxNjI0IGQwZWQ3ZGJhYWQ1NmUwYTBhZWE1MmZhYjY4OWZkOGJkNmRlYWNmMGIgbGVnYWN5LXRydW5rCis1MTYyNSAwY2I5ZTU3ZWM0MDY0NzhjN2RmM2I2ZTA1YWQ3NTcxYjIzNjQ0NjA0IHAzeWsKKzUxNjI2IGM0ZDhjMDU0NjE2YzAwOWQwYWMwMjc5NTNmODFlNTMyOWVkZTZhMTcgcDN5aworNTE2MjcgYzA5MzYzM2JlYmVjY2ZlMDRlOTQ4MzI1YjYxNjBjNGNmY2IxYzFkYyBwM3lrCis1MTYyOSA1NDBjOTU5MjcyOWU3NGQ4MmFkMzMxZjY3NDNlZDQ5NTE4YWMyYTcxIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTE2MzEgZDBiODNjNDYzMGMwOTI0ZGY2NjEwNjM1NDNmM2M1NDc4YzhjMzVhYyBwM3lrCis1MTYzMiBkYTNhOWY0MDI4ODYwNjU4YWI3OWM2ZGUzNmIzMzY2Yjk5YTE0NzJiIHAzeWsKKzUxNjMzIDRmNzZmNjNhMzJmMzZiYWFmMTcxNzlhYTZjYmU5NGYyZmIxMmYzM2YgcDN5aworNTE2MzQgZDE0ZjEwYTRkOWQ0NjYwZGNlMTNjODc0YjU5YTYyMTM1MWQxNWVkZSBwM3lrCis1MTYzNSAwNWFjOWM0OTI4YTQ4ZjEyOTRjYjllZGZjOTgxMTZkNzE2NTBlYWU4IGJjYW5ub24tb2JqY2FwCis1MTYzNiA2ZTE5OGM2NTVlZWFhY2YzNTU5MDc1MTcyZGI0ODNmZjYyM2I5ZGRiIGJjYW5ub24tb2JqY2FwCis1MTYzNiA5MGE4ZWU2YzNhODY3NmNjNWI5NDNiMmIxZGViYzNjYTBmMTdiYWYxIGJjYW5ub24tc2FuZGJveGluZworNTE2MzcgYjU2M2IxMmU0YzAwMzYzOTJjNGRiODE1MjhlODkwYWM2ZDhiYmEzNSBiY2Fubm9uLW9iamNhcAorNTE2MzggZmVmMDJkYmE5YjVmMzI2ODcxZTYyNzU0NWJjODZmMWQyZTZjYjAzMCBiY2Fubm9uLW9iamNhcAorNTE2MzkgZWM0ODA1N2EzNGI2MDE4ZjU3YmJmNGY0OTc0NjUyMDM1NWYyOTczNCBwM3lrCis1MTY0MCAwN2ViODAyNjRmNjE1MTFkZWY1NzI4ZGY1YzZhNzU3ZWQ2OGQ5YmQ2IHAzeWsKKzUxNjQxIGY5NzQ4OTBjNmNkMmE3YzUyZDMwMDdkMWQ2Y2IzMTY4ZDRjZjExYWYgcDN5aworNTE2NDIgMjE4YjZlOTAwYThkNDQyNWJkOWQ5MmE1ODIwNWFlMzg4MzNjNzc2ZiBsZWdhY3ktdHJ1bmsKKzUxNjQzIDc1OTEyMjgxNTFkNzAyZWM1MzNiZmJhYmI4YTM4MzVlNmI5YjA5YTEgcDN5aworNTE2NDUgODkzYWRkNTU0NTQxOTY3MDgwMGViMTE3NmI4ZGI0YmNmZmQzNTAwNyBwM3lrCis1MTY0NiBhYTU5NDY2ZWJkOWMxNjE2MWM1MWMxMTQwMDQ3NDExZGY0MTMyMWY5IHAzeWsKKzUxNjQ3IDc1NGE3MjllOTdhZjVhYzY0ODVhNWZhNThlZTRhODliZGQ5ZDQyZjAgbGVnYWN5LXRydW5rCis1MTY0OCBmMGI4ZjcxMTg1ZjU1ZDZmZDhjYzU1ZTJhZTk5OTE3MDc5NDcxYTU2IHAzeWsKKzUxNjUwIDQxNjEwN2EzNTE4NTNkOGViMzNkNWZhNGZjOTYxNTMzOTViNzhiMGUgYmNhbm5vbi1vYmpjYXAKKzUxNjUxIDE2ZDQ4NmM3ZGE4MjQ1YzM1NjBmYzQzZTk5OWQ2YWViOWI1Y2YyNWEgYmNhbm5vbi1vYmpjYXAKKzUxNjUyIDhmNzMyMWFiOGY0MGY3Mzc3NjJhYzAzMjA1OGVlMzFjNThlMzcyMTMgYmNhbm5vbi1vYmpjYXAKKzUxNjUzIDRkMjNlOWExMjcxMDM4NTVkODMzNzliNDAxY2MxN2Y2MWRkZjNkZmYgYmNhbm5vbi1vYmpjYXAKKzUxNjU1IGYxMGZlZGJlNmMxMzk2MWI4ZmI2M2IwOTU2MTc1NDgwMDc1ZjA3Y2IgYmNhbm5vbi1vYmpjYXAKKzUxNjU2IDViMDJlYjVmNjVmMWJmZjZhNDVmMDg4NmRkNDQ4MThhN2ZjNTFjOGQgYmNhbm5vbi1vYmpjYXAKKzUxNjU3IDM1NTQ5NjJkOGIyMWQ3ZTU2NTY5NWFiODhkMzJjMGQzMTljMjYzM2EgYmNhbm5vbi1vYmpjYXAKKzUxNjYzIGU4NWQ1YjIwZWE2MGVkNDE4MTI2YmI3N2EwZDU3MGY4OTBkNWU1YjQgbGVnYWN5LXRydW5rCis1MTY2NCBhODM5NTdjOTFmZGI5YmI3NzE3MDcwZjliMDcyYjUxN2E3NjM1ZmE1IGxlZ2FjeS10cnVuaworNTE2NjUgMWYxNzA1NzA1ODllYTVmYjUwMzYwMzYzOTFiYjEzM2U5NDgwYzAyMiBsZWdhY3ktdHJ1bmsKKzUxNjY3IDYwYzExOTM0NzA5ZWM3NDI3ODRhM2YyYWQyMDBhY2UxYWZhODVhNjIgYmNhbm5vbi1vYmpjYXAKKzUxNjY4IGJjY2M5MTU4MDhkODAxZmZhYThhNTI4YmVmM2VjNWNlNDcwNWZlZGYgYmNhbm5vbi1vYmpjYXAKKzUxNjY5IGRkNTE0YTE3Nzg0OGFlNmU1MTVkZDY3NDE5MDE1NmNmMTI0YWNlMDAgbGVnYWN5LXRydW5rCis1MTY3MCA4OTE3NmU2NWFkZDJjOTg1YjAwMzVkOTJkNmIwZGE5YTVhYjdlN2RhIHAzeWsKKzUxNjcxIDcyMWMzOTRlYjBiYTMzZTk5ZDgwMjk1NzkwODZjY2EzNjllMDRlM2EgbGVnYWN5LXRydW5rCis1MTY3MiA1NjI2YjJlZThjZTRjYmM1YzQxMzhhNTk3Y2YwNmQxNDhjZWNmNjA5IGJjYW5ub24tb2JqY2FwCis1MTY3MyBhYTY0MWZiMTc2OThlZDMyNzc5MDM5MGZjZDM1ZjkxZjc5M2IxM2UzIGJjYW5ub24tb2JqY2FwCis1MTY3NCA4MjA4MWJhOWE1YzUwN2MwNDlhYjc2NDE4OGI1YTA5OTJjYzg3YzA1IGxlZ2FjeS10cnVuaworNTE2NzUgMTFmNzA1MzA1MWZmOWVhZGZjY2Y1ZDY2OTljNDA2N2EyMDZmMzgzMiByZWxlYXNlMjUtbWFpbnQKKzUxNjc2IDRhNzkwNmQ4ZGU4NjEwN2NhMTAwYzA2ZDczMjIyODFjZGU0ZjkzMjggbGVnYWN5LXRydW5rCis1MTY3NyA3MWVhMmJlN2Q5MTI2YThiY2FhZTNiZjY5NTk1MzE3YmYzYWM5MTViIGxlZ2FjeS10cnVuaworNTE2NzggMTg0YzFkYmY3MTk0ZTQwNDhhMWIyYjgxMTU4ZDVjZmIxYzEwYTgzZSByZWxlYXNlMjUtbWFpbnQKKzUxNjc5IGJhODM3NTQ1Y2MyZmFmMDc4YzNjOTg0N2ZiN2ZkYjk5YjUzODllYmUgYmNhbm5vbi1vYmpjYXAKKzUxNjgwIGE2NjZkNzVmM2RmZmMzOTM0ZTZjZTVkMjUzNGRiMmFjZWMyODQ0NjQgYmNhbm5vbi1vYmpjYXAKKzUxNjgxIGQxOTg2ZDM2OWZlZmI4ODliNzU4OGNjZWU5M2U2NzViYzk2M2M2YTggbGVnYWN5LXRydW5rCis1MTY4MiA4NDE4ZjFiOTA5MGU4N2VlYWE5ZDNlZmEzMTU1NzM5NDkzYWU0ZWZjIHJlbGVhc2UyNS1tYWludAorNTE2ODMgZTkwNWY3OGVhZmNhNTcyMWE2NjIxZWJmODNjOGFkMDNmMDU3NWM0NCBsZWdhY3ktdHJ1bmsKKzUxNjg0IDEzNTJhZDlhZmNjMGI4ZGYzZDIwYWEzYjI2ZGI5ZTMxNTc4MDIxNjMgbGVnYWN5LXRydW5rCis1MTY4NSAyZjA4NmQ1OGNhMTBmN2UxMTEzMWM3ZDhjOWNkMDYyNzFkMDMwOGYzIGxlZ2FjeS10cnVuaworNTE2ODYgOGZlMTY4NzAzMzQ4Yjc0YzlhYmJlMDlmNTY4YzU1ZjZmZjU2MWYyZCBsZWdhY3ktdHJ1bmsKKzUxNjg4IDc2OTNiNjk5M2RkYWYzZjgwMzAxN2Y4ODNjYmE2ZTg4NjQ3NGZmOWYgbGVnYWN5LXRydW5rCis1MTY5MCAzMTRjNGU3YTM2ZDNlZjNjNjNmOTk2ZGVhZTI4MTk5OWFlYmM1YTAyIGxlZ2FjeS10cnVuaworNTE2OTEgMWVjN2VmMGYzYjhkMDRmNGNiZDFkNDE0OWNhYWMzOWNmOTU0MTg4ZCBsZWdhY3ktdHJ1bmsKKzUxNjkyIDIxMTk3Y2JlZDUxZGFjODhmMzFkNDU3ZjU1YWM0NTRkYTg0NjVmZjAgcmVsZWFzZTI1LW1haW50Cis1MTY5MyBhYThmZWRmNmJiMjQ4ZWRkYjNmZDFmNzRjYzMzNTcyYWQ2YjQyMzljIGxlZ2FjeS10cnVuaworNTE2OTQgODgzMmI4YzJmYzQ5OWY0NzY0OTcxNDc3OWU5NDkxM2RmMTdjMDIwZiBsZWdhY3ktdHJ1bmsKKzUxNjk1IDRjZWM0NWJkNjY2Mzk4M2VlMmY3NmM0OTY2ZGVmOTE3YzZlN2Q0MDcgcmVsZWFzZTI1LW1haW50Cis1MTY5NiAwNjMzMGQwYjQ2NGFmMjUzMzVkNzExNmQ2ZDkzYmFmYWRmMzZlNGY0IHJlbGVhc2UyNS1tYWludAorNTE2OTcgY2I2NjQyZGVkNGU3NTgxMzJmNmQ1OTUwNTA3NjhmNmUzNDExNDA1ZiBsZWdhY3ktdHJ1bmsKKzUxNjk4IDEwMWUwNGE0ZjQwM2FhZTVjNWU3NDM3YzcxZTQyMTRkYWNhNzI2NmQgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTcwMiBjNmZlZjk0NGFkOTVkZWFmZDJhZjA2ODA3ZTdjYzIxMmE3ZmVhOTI3IHJlbGVhc2UyNS1tYWludAorNTE3MDMgNTg5OTgwYzc4MDI1NDYwOGFkMzNhYjQ1NGY5YWU0YjcxMTc4ZDlhOCByZWxlYXNlMjUtbWFpbnQKKzUxNzA0IGNmYjc3ZmZmMDI0MDIxMDgyYWQ4MTFhZDIyNGFmNzE4ZGMxMjYxOGYgbGVnYWN5LXRydW5rCis1MTcxMCBhYmNhNGU2MjZjYjVmNmE4YjI2Mjk5NjA2Y2FhMzY3MjE2NTg3N2YxIHJlbGVhc2UyNS1tYWludAorNTE3MTEgZjVlNzhhZThlYzBjYjhlY2NmMWU4YzgzYTY0MDczZDFhZjJlMzkxZCByZWxlYXNlMjUtbWFpbnQKKzUxNzEyIDAwZDJjOTNiODhiZmVkNTdhZWFlMWEyNjE3Y2ExM2E3YmJhNjcwZDIgcmVsZWFzZTI1LW1haW50Cis1MTcxMyBjNmQ0NGE5NzQ5ZGI0ODZiNjY4Mjc4YmIzNzA1MDhkMzM5Zjc4ZTkyIHJlbGVhc2UyNS1tYWludAorNTE3MTQgOWNhMTlkYjE3ZmFmNzk1MDAzMTlmNWFiMDI1Y2I3NzI4OWFiNDc2MiByZWxlYXNlMjUtbWFpbnQKKzUxNzE1IDI0NGM3MzRmMWQ4ZDFkYjgwY2U3YWU2OTI4MGFhNDk0MTgzN2I5OGYgcmVsZWFzZTI0LW1haW50Cis1MTcxNiBlMWFhOWEyOWVkMTUxZmZiZGYxNmU0NDcwNmIzNjZiYWU2ZGIyZjk3IGxlZ2FjeS10cnVuaworNTE3MTcgOTk1NzQ2N2ZhZjQ3YzNjZTE2YzdhMWIzZjAxNzg5YzBjNzE3Y2Q4MyBsZWdhY3ktdHJ1bmsKKzUxNzE4IGQxYjQ5N2VjMTkwYTFhYjZjZTkzNGUzZjQxYmE4MzJlOTk4ODQzOGEgcmVsZWFzZTI1LW1haW50Cis1MTcxOSBiMzUxNDM4MmMzMjc0N2NjODE0MWU4MTcwZGQ0YTEzNjdkNDdiM2E1IGxlZ2FjeS10cnVuaworNTE3MjAgMDhjYTQ3NmY4YTM0MjRkYzI2M2E3ZTIyMmVhOGQ4ZDM0ZTcyMDE2OCBsZWdhY3ktdHJ1bmsKKzUxNzIxIDk3ZDNlYWI4Y2RhMmY5MjBiNTA0NzlhMGU1ODM0NjU3YjQ4NjJjNDUgbGVnYWN5LXRydW5rCis1MTcyMiA5ZDQ0NzkyMDYzYmJmZGU5YzYzZmI2OTlhOGY4NjFjODIyOGIyZTI2IHJlbGVhc2UyNS1tYWludAorNTE3MjMgNjI3YTIxY2NmMjRmYzQwM2M4Y2I3OWE2NDUzNTQ2Mjk3OThjMzZmNyByZWxlYXNlMjUtbWFpbnQKKzUxNzI0IDMwMGZlNTA2YTBhYTQyMGIwM2NiNmQyMmYwZDQwNDg4ZDcwY2VkNzkgbGVnYWN5LXRydW5rCis1MTcyNSA4MjYzOWMwNTVhNmZhODQ3NTNmNDJiZTQ1ZTUzMWUwNjI5NzQ2ZDI1IGxlZ2FjeS10cnVuaworNTE3MjcgMTU1Y2IxNTU3Yjk3NTBkNDkxMTFiMTBlMzE4OWU3OTAyMjg4NWRiZCByZWxlYXNlMjUtbWFpbnQKKzUxNzI4IDRjODVjZTcwNDI2ZTM5ZjRhYTE5MGQxNDUxOWM0YjFlYTgzZmNjMmEgbGVnYWN5LXRydW5rCis1MTcyOSA4ZGNiODgyZWMzZTFhYWM3ZDMzNmE0MGFhNjRlYzY2NTYxZmMzZGVjIGxlZ2FjeS10cnVuaworNTE3MzAgMzMwMGQ3NDkyZjFhMTNjYTYwNGJmYWEzZmUyOTdhNGYzMzM4ZDBmMyByZWxlYXNlMjUtbWFpbnQKKzUxNzMxIGM1OTFkOTk1NGZiMzkzMzBjMjEzNmIyMjY2MDkwODg0ZmE2NjBhMGIgbGVnYWN5LXRydW5rCis1MTczMiAzZDk2OGI1ZmNhZjliZWU3OGM2YzhmMGQ3MDYzZDkxYmQxNmUwMWM5IGxlZ2FjeS10cnVuaworNTE3MzQgNmE1MWNiODA2OGY1Y2VlZTVhMzAwMDU2ZDY4YmY3ODAwZGQzNzVjOCByZWxlYXNlMjUtbWFpbnQKKzUxNzM1IDVkNmU5NmEyZmU2ZTg2ZGQ1ZjhmNmExMjMyMzk5YTI2ZGQxNzk2YzcgcmVsZWFzZTI1LW1haW50Cis1MTczNiA5ZjBiM2Y5YzcwZGExYzcyMmZiOWJkNTQ5NmQ0OTg1OWY1ZjRmM2Q5IHJlbGVhc2UyNS1tYWludAorNTE3MzcgMTUxMDk3ODFmMDE2OGViZDg1MTNlNGVjOTE2YWUyN2RkZjIwY2YzYSBsZWdhY3ktdHJ1bmsKKzUxNzM4IGVlMGM3NTdjNDk5MGFiYWFiMjA0OWE5MzdjNjJkMGJkMWQxMjZjYjIgbGVnYWN5LXRydW5rCis1MTc0MCBkZWQ3YjY5MGMzMDYzYjBjN2IzOWM0MDQ3MzlmMGNkYWMzNjQ3ZWUyIGxlZ2FjeS10cnVuaworNTE3NDEgY2E5NWJkNTU5ZTcxNjdlZjE1MGNlNWI5NWMyYjc4YWNiZGU5NDc5ZiByZWxlYXNlMjUtbWFpbnQKKzUxNzQyIDZkN2E4YjVlYjU1MWZjNTE5NzEzNmFlODIyZDkyNGUzNzE2ZGUyMzcgbGVnYWN5LXRydW5rCis1MTc0MyA4ZmI1OTc3ODRmMTg1NTExMjVkNDNkOWMwZGJhMjEzZDc4YjMyM2ZlIHJlbGVhc2UyNS1tYWludAorNTE3NDQgNzFhYzc5NmEwMThjNjMxOTllYjY5MzZjMzRlMDUxMGM4MGY5MzdhOCBsZWdhY3ktdHJ1bmsKKzUxNzQ1IDdjNWUyOTM2MjgwM2IxZmYzYWI5ZGZjZTFmYTE0MmRkODU4ZTVmNGEgbGVnYWN5LXRydW5rCis1MTc0NiBlOGI2OGRmOTBiODRlZDVjYTVlNjJhMzBhZTJhMjkyMzM2ZGMxNDc4IHJlbGVhc2UyNS1tYWludAorNTE3NDggYTUyNDg5OTgwYjViNDkzYTVkODljOTlkNzNjMTI1YTI1NjYyYmVjZSBiY2Fubm9uLW9iamNhcAorNTE3NTEgZTQ2NmZmZmRjOWE5MWM1M2M2ZDg4NGVmYTBiZWVlN2M0Mzg4ZTU5OSBsZWdhY3ktdHJ1bmsKKzUxNzU1IDFjNDI1YTg5MGY2Y2NhMzE1NzlkYTBhZmY1NTU0ZTgyYjFmMDU4ZmQgYmNhbm5vbi1vYmpjYXAKKzUxNzU2IGM5Y2MyOWJlNzU1ODc4Y2I2YWI2MDAyODhmNmI3NDY2ODdjZWE0MjQgYmNhbm5vbi1vYmpjYXAKKzUxNzU3IDc2YjhhNzVkYmU2YTNkNzRlMzRiYmY0MDI5OGI0OTU3MGMzYjFkNjIgYmNhbm5vbi1vYmpjYXAKKzUxNzU4IDQ2N2M3MTZlMmY4MThiYjQwNzJhYmZmYjY1YzEzMTcyMWI0ZjliNzUgbGVnYWN5LXRydW5rCis1MTc1OSA4YTIwYzk0ZDlkOTllMjJiOTQxMzE1NTg5NzQxYmIxMTBhZjVlOTkzIHJlbGVhc2UyNS1tYWludAorNTE3NjAgMmE3MzBmYjZmMzRiNDMxYTc1YmM0Yjg3ZDM1MDFiMWE4YTU5MjNhMiBsZWdhY3ktdHJ1bmsKKzUxNzYxIDlkZWIwOGVmNGJhMWRmMzUwZTUwNjZiNGIxZjhlNzkwYmY4NGQ2OTEgcmVsZWFzZTI1LW1haW50Cis1MTc2MiA5OGNkN2IxNjY2ZmI0OGNmNTFmMWUyZDFmMGU2MmQwNWQ0NzgzNTA4IGxlZ2FjeS10cnVuaworNTE3NjMgNmRjYzY0ODc5MzQxMzgxYmIxM2U2NzUyZWMwZjMxODA1NWYzYTExOSByZWxlYXNlMjQtbWFpbnQKKzUxNzY0IGFlNWI4YThiOTExZTI5ZDljMGIzMzUxYjUyYzcwZjM2NjRkM2Q5MDMgcmVsZWFzZTI1LW1haW50Cis1MTc2NSAzMDdhMTFjMDg1YjQ2MTBkODZlZjkyMmQyM2UzN2YxYjg5NjExMDQxIGxlZ2FjeS10cnVuaworNTE3NjYgODM5NGQyZTliZmQ2N2FmNGViMDQzZjgyYWE5NmUyOGMxNmY5OWE0OCByZWxlYXNlMjUtbWFpbnQKKzUxNzY3IGI4ZmJkMzIyNzYwYTliYjE1YTBhMzNmMzBlMWFiNDFhMGUwZGFhNTEgbGVnYWN5LXRydW5rCis1MTc2OSBkNzE5ZmFiNzk2Njc4NzZjZDE0NTY1YTQyN2Q3Njk2MGZkMjhmNTljIHJlbGVhc2UyNS1tYWludAorNTE3NzAgY2I4ODNlN2UwYjdlMTcyY2Y3ZjE0NTFkZjA0ODljZjU3Y2M5YjI1YyBsZWdhY3ktdHJ1bmsKKzUxNzcxIGM5NGYzNzA1NGYxOTcwZjZmYzE2MmIxMjUxZWVmMjU0MDg1OGUyM2MgcDN5aworNTE3NzMgN2EwYWQxMTBlOTFlNzkxNjMxZGY4ODljMTJmNTVmMDc2Yjk4ZjNiZSBwM3lrCis1MTc3NCAzYjc1ZWRjYzRhNmY0ODdkZmM3Y2FlZTExZjdiZmM1Njc0ZTRmMjUxIHJlbGVhc2UyNS1tYWludAorNTE3ODUgZGNlMTdiNWJkMzg3Y2EzYmE3NzhlNWQxYjk3NjY0ZmQ0MThiZDQ0ZCBsZWdhY3ktdHJ1bmsKKzUxNzg2IDgxYjQ2N2ZlOTJlZTUwOTY0YzUyOGZkZWUwZjA5ZDM3NTk3MWU4YjYgcmVsZWFzZTI0LW1haW50Cis1MTc4NyA0YWE5ODQxNDFmZWZjZmI2N2I5ODU3NWU4MmQ2YjBkZTE5N2Q3NWJlIHJlbGVhc2UyNS1tYWludAorNTE3ODggMjUyN2E0ODM1MDk5MjkzYjlkOTAyYjY1NTg1Nzk3MWI5MWEyNTkzOCByZWxlYXNlMjUtbWFpbnQKKzUxNzg5IGNkM2I3ZjI1NjQ5ZDRmMzc5NGYwMDBiN2MwYzRmY2YxNDIwYTIxMTkgbGVnYWN5LXRydW5rCis1MTc5MiA1NmU3ZDY5NTI5ODUxNTVjYmZmNWYwZGVkNDU5NGJkY2EyODVlZTg1IHAzeWsKKzUxNzkzIDVlNTAyZGUwY2VkYWNmZDVlYWFmOTNlNjVjNzEwY2ZmMDg0ZmVjOTkgcmVsZWFzZTI1LW1haW50Cis1MTc5NCA2ZDQ3YzhiYzA1MTI3MWI0OTk0OTBlOWM3Zjc4MWQxZWRjNzBlYWMwIHJlbGVhc2UyNS1tYWludAorNTE3OTUgNmU2YmFmMWFmYjEyYzA1NjAyNmE4ZGQ3NmZkNzAzNjQyY2Q2NTQ2ZiBiY2Fubm9uLW9iamNhcAorNTE3OTYgOTQyMDQ1NDliNTE2MDkzZDczZDk1NTJkMzVkMDExNWU0YjQ3MDU0ZiBiY2Fubm9uLW9iamNhcAorNTE3OTcgMzYzZWY4MDRhMDk2ZjUxODliYmYyYzljYWE3OTZjNDRkMWIyZWVlOCBsZWdhY3ktdHJ1bmsKKzUxNzk4IGVmMGY0MmJmMmEwODUzNTBjOTM5M2IwMzA1ZjM2NGEyMzRhOTU4MjkgbGVnYWN5LXRydW5rCis1MTc5OSBjNjQzYjAzMWQ1MjZjODM1NzVkMWU3MzIzNDc4ZmMwMGYxYzVmZmViIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTE4MDAgZTgzNzIyYWE3OGRkNDc1MzE0NzlkYzIzNWQ5YTM1YzlmNjIxNWY4NyByZWxlYXNlMjQtbWFpbnQKKzUxODAzIDM4YmE5NTI0NzgzYTFlYWJlOGY2NzdjMDA3ZjZjZTU3OTdjNGIwOTEgbGVnYWN5LXRydW5rCis1MTgwNCBjZjlkM2IzODI1MWY5MmFkNmJiMDZjMzQ3YWY3MjNkMWNlNjY0NDFmIHJlbGVhc2UyNS1tYWludAorNTE4MDUgMWVlYmI2NDczMTBmYjVlY2ZhY2M1ZGViNzVjNmQ1MWViZTE3MzkzNCBsZWdhY3ktdHJ1bmsKKzUxODExIDQwNTgwNDE5MmE2ODI4MjVkZjgzNzJlYWYzY2ZmN2M4YTMyZTdkZGQgcmVsZWFzZTI1LW1haW50Cis1MTgxMyBjM2EzNTNhMDcxNDY4YjU4YTcyMWY5ODM3YzkwMTUxYjA2OGNiZWE3IHJlbGVhc2UyNC1tYWludAorNTE4MTQgNDFjMWU1NDNiOWU5Njk3NjE0NWQ1MjI1ZGM4NTE1ZTdjMjJlZmU5YiBsZWdhY3ktdHJ1bmsKKzUxODE1IDRlODE5NzRmN2UxNDAzYzc0YTc0ZWY2NjljNTE5ZDRiZjllNTU3MGYgbGVnYWN5LXRydW5rCis1MTgxNiBkOTY3M2I2MmNlMzVkOWQwZDNiZjMwYTYyYmQwNGVmNzdjYzY1MThlIGxlZ2FjeS10cnVuaworNTE4MTggNDM0YWZjNzI4ZjZmNzRhZjkwNTAzMTRkYjEyMTg2ZTZlYTAzODM1NiBiY2Fubm9uLW9iamNhcAorNTE4MTkgYTA2NWI1NWUxZmIxZDA2ZjA2ZGQ1NWU3ZmZlOTMzODJkYzJkMjY5MSBsZWdhY3ktdHJ1bmsKKzUxODIwIGQ1YzZmZWEyNTJmMDQ4ODI2NWU3N2U4MmNmYTRmZTQxYTM4OGQ5NGYgbGVnYWN5LXRydW5rCis1MTgyMSBlYzZmZDljZWJkYTE4NTg3YjYwNmQ2NWExNmJmNDZkMWEwYjhmMTAwIGJjYW5ub24tb2JqY2FwCis1MTgyMiA3MDEwOGM2M2M2ZTUwZTgzN2Q2OWNkYTZmNjA3NDcwYTFjOTBkZGMzIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTE4MjMgMzIzOWY5M2NmNGQyM2VkNjlmYzg4MTcyOTRjMjgyZTAxNzRlZmNhNCBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxODI0IDI2NTNmODMzNTg3NzkzODdkMWRkNDExZmY2NzYwNTllMWRhZjkyYzYgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTgyNSA4OTFlMzMyY2QyZDZhMjY5YzBjYTJiMWQ0OTAzMDNjMmZjMWIxMTNmIHJlbGVhc2UyNS1tYWludAorNTE4MjYgMDI5OGNjNmMyOWNkNmVjZGFjZDU0ZWMyNGUxMTcwMDYxZThjM2ZhMCByZWxlYXNlMjUtbWFpbnQKKzUxODI3IGMwMzE0Yzg5MzZlNTExNmQzYmJiYjJmN2RhNWUwMGM2NjZiOWMxYmYgbGVnYWN5LXRydW5rCis1MTgyOCBkNGU1M2U3MGNkNzgyNzRkMDUzODYzYzhmNTZiYWE1NjBhMmI1ZTJkIGxlZ2FjeS10cnVuaworNTE4MjkgN2JlMzBjYmZjOWIyODNhYTM4OGUwNzRhMDhkZmZjYjQ3M2IyZmRkMSBsZWdhY3ktdHJ1bmsKKzUxODMwIDUyN2EzZDAwNTJjOTAxMTIxYjU4YmFhYjk2MDhlY2VjMzgxYmVkYjQgbGVnYWN5LXRydW5rCis1MTgzMSA2YTgzYjI3NDBmYzdjY2RhMDNkOTYxMGUzY2QwYjg5NDI5MzM5MWM5IHJlbGVhc2UyNS1tYWludAorNTE4MzIgNDA3MzVkNWY4YWNkYmU3Nzg4MWRmOWNlYmQyMTZmYTdhODU5ZWVhYyBsZWdhY3ktdHJ1bmsKKzUxODMzIGI1Mjc1ODgyYTNlMGQ0YjBjYzQzMTQ3YjMzM2ViMzg3NDI2YTkwNzggbGVnYWN5LXRydW5rCis1MTgzNCBhNGEyMTRiZGY4ZWFjMGVhMGU5YzM4ZDFhMmM4OTQ3NGFkNWM4YjQ3IHJlbGVhc2UyNS1tYWludAorNTE4MzUgNmY2ZTU1ZmQ5Yjc5MWMyYTdkY2FkODg1NjE3NTFlNzEyYWYzNTEwYiBsZWdhY3ktdHJ1bmsKKzUxODM2IDBlYjNmMGY1NGEyNjc0ZmVmNjgwYWI1MjkxYWRlMWI1ZmI5NmVhYjkgcmVsZWFzZTI1LW1haW50Cis1MTgzNyBjMmZkOTc4ZGYzOTIyNDI1ZjVmZTg3OTFkZDQ5ZGE1NWQwOTMzMDdmIGxlZ2FjeS10cnVuaworNTE4MzggOWU3ZGM2NDMyYTQ0NjViNjM1ZDc3MWU2ZTgyYTZlMThjYzcxMTRkNyByZWxlYXNlMjUtbWFpbnQKKzUxODQxIDgwNGQxNzFjMmNiNzE1NWM2OTMyMmU3YTk2ODc1MjI4YzExN2MwNmQgaW50X3VuaWZpY2F0aW9uCis1MTg0NyAwZmZlN2Y5MmFiMmZkZWZhMmY4ODVhMmQxOTliOGVlNjQ1OGI2ZmFkIHJlbGVhc2UyNS1tYWludAorNTE4NDggMzk4NmIzNmI4NDk1MjMzNDBkMzA5YzljMDg1Y2YwNjVhZDZjMmJkZSByZWxlYXNlMjUtbWFpbnQKKzUxODQ5IDVlZjA0MDZlNmQ1MjRjNmNjZjY3MWIyODQwOTI4ZDU3NTUzOWQ2OTQgcmVsZWFzZTI1LW1haW50Cis1MTg1MCBlNGU4ZjBhNGVkYTRmZTI4YmM3NTFhY2RkYWU5NmMxNTNhN2Q3YjE1IHJlbGVhc2UyNS1tYWludAorNTE4NTEgNTRkNGZkMDg4Mzg1YzdmZGMxZTQxZjY0MDZjZDU1NzRjZjIxZjJiMSByZWxlYXNlMjUtbWFpbnQKKzUxODUzIGQwNmIyYjQyZDEzODgxNmZlYjg5Mjc3NTA4NTkyOWE2ZWQzNTUxZjUgcmVsZWFzZTI0LW1haW50Cis1MTg1NCAxNWFkNmJhMmUxYTU0Mjc4MWJlYWJhMTI0MDNkZjdjYjc0MDFlMmE3IGxlZ2FjeS10cnVuaworNTE4NTUgNjZkMDM1NzAyOWI1NWFjNjE2OGY5YTMwMTgzOTk3ZTdmMjU3OGRhOSBsZWdhY3ktdHJ1bmsKKzUxODU2IGMwYTA3MWRmNDYyMWE1Nzk0ZDQ1YTkyZTRhNTk1MzZkN2NiM2U1NmQgbGVnYWN5LXRydW5rCis1MTg1NyAwZjdlZTk5MjViN2M0Mjk2MmI2MTU2NGJkMGQ0NDlhMzNjYTIzZmJiIHJlbGVhc2UyNS1tYWludAorNTE4NTggMGJhYzQwZTRkMGM2NDNhNzhjMThiNDZmY2IwZjQ4Yzc4NzFhZDFmZCBsZWdhY3ktdHJ1bmsKKzUxODU5IGM1YzlkYmVlYWZhNzZhMWRkNGJmMjZmMjI2MDFjYWQ2ZmRkMzcyNGMgcmVsZWFzZTI1LW1haW50Cis1MTg2MCBjYzNjYjNhODIzN2VhNTQ1ZGI5MTdkODRjNDlkOGEwYTVlMTc1Y2MxIHJlbGVhc2UyNS1tYWludAorNTE4NjEgN2Q0MGQzN2U0Y2MzNWQ2MTkxOTQwODJkOWY4MjM5MTRmYzIyZjdiNCByZWxlYXNlMjUtbWFpbnQKKzUxODYyIDI0OWZkYjU5ZGM1MmY5YjUzYTUyOTJhZGViMzM4MmQ1NjdiOTA5YWEgcmVsZWFzZTI1LW1haW50Cis1MTg2MyBkYzUwZDRhYzk1ZDkxZmMxODAwMTg3MDQwNDE3NTdlOWYyOWQzNTY4IGJjYW5ub24tb2JqY2FwCis1MTg2NCA5NWNmMzFlNjkzMzUwMWYyZDNmMjk2ZGJiMDdkMjY1MTEzMGIzZjhhIGJjYW5ub24tb2JqY2FwCis1MTg2NSA0MTc1MDFlZTNlODZmZmFjZWJkZjBlNmE4YjJkMWU5NzQ1OTRmNWNkIGxlZ2FjeS10cnVuaworNTE4NjYgZTU3ZDhhZTQ1NjY5ZjRkN2UyZDRjZTNkN2Y4YTYxZWVhZjJlMTZkOSBsZWdhY3ktdHJ1bmsKKzUxODY3IDU0YjgyYmQyNTY5M2U5ZDdmMmRmNjhhMzhmMTllZDUyOWQ5ZjhjODYgbGVnYWN5LXRydW5rCis1MTg2OCA1MDQ0ZDA2OWI1MzI5MmVlMDMwZDE2M2YxNjNmMGU4MmRmNjhmYWIwIGxlZ2FjeS10cnVuaworNTE4NzQgMTBlYjFmNmIzMDgwOTM0MjYyN2NhMTQ0ZTAwM2FiZmRmMjRjMzlhMyBiY2Fubm9uLW9iamNhcAorNTE4NzUgMGJjMzljMTMxOWRkYzAzN2FiMmFiNDA0NDlmZjNjZjgyOTJmY2FhZCBiY2Fubm9uLW9iamNhcAorNTE4NzYgMDdhNDRiZmY5NjdmNTgyNmMzNTEwODFkNmNlZGI3MTI5ZDEzMjM2YiByZWxlYXNlMjUtbWFpbnQKKzUxODc3IDc0ZTQyNGMxNzhmNDVjMjM5ZjE5NTlhZTQ1NmQ1MmFlNTc5NzU2MjcgbGVnYWN5LXRydW5rCis1MTg3OCAyYjA1ZWM1ZGY3Nzc3OTdkNDhlZDMxYmIwZDA1NjgzOGU1ZmU0ZTNkIGxlZ2FjeS10cnVuaworNTE4NzkgYTAyMzVkNDM1ZWQ0ZTcyZDQ5YzVhNTNmMmMxNTdmZjgyNzViMjVkMiBiY2Fubm9uLW9iamNhcAorNTE4ODAgNzUxNzljMmVjYWMxYzViMGYzNWM0Njc3MjE0MjliMDI5YTVmZGFiYiBiY2Fubm9uLW9iamNhcAorNTE4ODEgZGFkYTM0YjRkNmI2YTRlMmQ3YTg5ZjBhYzAzYzAwYzNjNzQ1YTIyNCBiY2Fubm9uLW9iamNhcAorNTE4ODIgMzRhYjA1Mjc0NWVjMmE3MGU0YTIxY2I3NjBmNWFhMDQ1M2FlOGYyNiBiY2Fubm9uLW9iamNhcAorNTE4ODMgMGVjZTI4Y2I1YjllNzNlOGNmMGY2NWUyM2VhM2EyNjk1NWJhZjgxNSBsZWdhY3ktdHJ1bmsKKzUxODg0IDg5OWQ0ZGMxMmMzNzhkYmUyNWI2ODljNDUxZWI1NDVmZDY4YzE0N2UgcmVsZWFzZTI1LW1haW50Cis1MTg4NSBiNjczM2EzNmVlY2RmNjU1NmE4MzhjMTdhNDNlN2VmNjI0ZDNmMTIyIGxlZ2FjeS10cnVuaworNTE4ODYgODczNzU5YjBiMTI2MTZhODA0ZTAxZTlmYWFmNDczZmJlZTJmNmZkZiByZWxlYXNlMjUtbWFpbnQKKzUxODg4IDRmMzZjNDE1OTZiMThkMGRmZjc5Y2NjMWQ0ZjFjNTkxYmI0ZjRhYzIgcmVsZWFzZTI1LW1haW50Cis1MTg4OSAyZTk5NWYyNDRkNmI2MmM5NDA5MDllYzAyMWM3N2JkYmRkOTI5N2FmIGxlZ2FjeS10cnVuaworNTE4OTAgMmEzNDk4ZDg3NDFiNDJjNTFhYTRiMzc5ZDQ2YTM0YTRhNjZlYTQzOCByZWxlYXNlMjUtbWFpbnQKKzUxODkxIGY5YzlmOGEwNWE4OTRiZDE0MDYyY2IwNDFkZDUwMmNkOTkwMTMzZTEgbGVnYWN5LXRydW5rCis1MTg5MiA4ZDNiNzY0MzU5OTIxYWNkNzMwMTJmODdjNzE0Y2I4NzJjNTEzNzU4IGJjYW5ub24tb2JqY2FwCis1MTg5NiAzMzBiZGEyNDA1ZWU2YzY4MjE4M2RjNWVhYTUzMTBiODg5MjMwNDAzIGJjYW5ub24tb2JqY2FwCis1MTg5NyAxNjYwZWFhMGNjMjY2MzMzMGMzMTM4YjJmY2IyYjFlZGJlMjI4ZTQ4IGxlZ2FjeS10cnVuaworNTE5MDEgZjVmNGQyZmRiNjJjMjlhZjk0NDAzYTIxYjczZjRiNGMxYTdlNDBiZSBiY2Fubm9uLW9iamNhcAorNTE5MDIgZDQzZDk0MjJiN2FjNzlmM2I2ZTFjZmZkZGJmY2I0MzEwNzUzYjk3MCByZWxlYXNlMjUtbWFpbnQKKzUxOTAzIGNlZGVhOWUyM2E5NTVjNzU1OWMyN2FkZTMyZWM0MGZkMDAwN2RlM2MgbGVnYWN5LXRydW5rCis1MTkwNCBiYjllOTE0ZWRlMDUxZmFiMDBiMjJjZjAyODhmZjRjZjcxNjY3NWYyIGxlZ2FjeS10cnVuaworNTE5MDUgNTkwYTk4YTcwYmY5ZDk0NWRhNmMxZjZjNGFkNTNkNDMwOGRhNWMwOCByZWxlYXNlMjUtbWFpbnQKKzUxOTA2IDZiMDFhOWM0NTVkYmQyNjVkZGVmYjdhNzU4YmJlMzUyYzNmNmM0NzMgcmVsZWFzZTI1LW1haW50Cis1MTkwNyA3Njc5NjJmODg4MzQ2MDlmOGU4OTQ4MjdlODhkZmI0NDIxMWExOTRhIHJlbGVhc2UyNS1tYWludAorNTE5MDggYzEwYTcxY2YxNmU0NzE0MjVlNmQ3NTY0ZTNmN2E2NDhmMTRiNzAyZSByZWxlYXNlMjUtbWFpbnQKKzUxOTA5IDdmNWY0NmI1NjYxMWMxNTNhZWM3YjA1M2MwMGYxZDg5MDNmYTFlZWQgYmNhbm5vbi1vYmpjYXAKKzUxOTEwIDIwMTQ3NDE1ZTk3ZjliMGNkOTUxYzFlZTVkNjhhZjI5YTIzODg4ZDMgYmNhbm5vbi1vYmpjYXAKKzUxOTExIGNlMjQ3NzhhNjQ5ZjFhZTUzZjVkMDA3NTgyMTQ0NWJhMjQ5MTViZjUgYmNhbm5vbi1vYmpjYXAKKzUxOTEyIDc3NTIzNzgwNzdhNTM3Y2IzY2QyYTRjMGZhOTc1MjdiYzcxMDYwMDggYmNhbm5vbi1vYmpjYXAKKzUxOTEzIGI0NDcwYTU0OTkzYTM4N2M1NzliZjY3OWIyM2ExYzU0NjdlZDlkMzQgbGVnYWN5LXRydW5rCis1MTkxNCA3ODM5NDFhMDBlOWUyOTUyMjkxYzA4Yzg0MjdlNjlhZWNiZjE3ZDZiIGJjYW5ub24tb2JqY2FwCis1MTkxNSBlNzBhN2I3MTk3YjY4NDFkNzgzNjcwODBiNmVmNjMwMWYwYWY1YWQzIGJjYW5ub24tb2JqY2FwCis1MTkxNiBiNmVlNGQzNTQxYzBhNTI4ODEyMWQyODhhZGZkMjNhOTgxMjM2NjgwIGJjYW5ub24tb2JqY2FwCis1MTkxNyAwOTRkYWU0OWFiZWJiMzRkYTM4YzNiMDY0M2JhODA3NmM3OWNiZjI4IGJjYW5ub24tb2JqY2FwCis1MTkxOCBlMDM2ZmM5YzY4MjcxNDc3Yzk2NWZhNjkyM2JiMmVlZTgxMmIzZjhhIHJlbGVhc2UyNS1tYWludAorNTE5MTkgYmM3NzJmYjUxMzkyOTVkMTU4YjcyNzQ1NDZmOGFkNmRjZmNiMDdkNiByZWxlYXNlMjQtbWFpbnQKKzUxOTIwIDcxYjgwMjQwYWMzZGRhZTQxOTJhMmM1MGExY2JjNTRkYjZjZGRmYmIgbGVnYWN5LXRydW5rCis1MTkyNiAwMTcxMTA4YWI1MTU1OGViMDZiN2FiNGU3M2QwNmY1MWM4MzM4M2Y1IGxlZ2FjeS10cnVuaworNTE5MjcgNDg4OGQyZDRkMjkyZWMzOGQ1ZTNlOTQzMTkxMzkzZTA3Y2YzMmNjNyBsZWdhY3ktdHJ1bmsKKzUxOTI4IDcxZTBmM2ZjNTdkYTc3OGY0ZmUwODQ5YjY0YTY1ZWFhNjExZGQ1ODUgbGVnYWN5LXRydW5rCis1MTkyOSBiMzAzZDJjMmM2YzU2NDM0M2EwMzY3ZTBmZjhhNmFjZTdhYzU5NzM4IGJjYW5ub24tb2JqY2FwCis1MTkzOSBlYTI0YTljOGVkYTI1OGI5M2FlZjU5MTNjMjg4M2RjNDM1NmRkMTJmIGJjYW5ub24tb2JqY2FwCis1MTk0MCAwMDMxZmMyZTA1ZTI4NmUyYmFmODkzN2U3YjMzYzcyYmVlOTdlMmVkIGJjYW5ub24tb2JqY2FwCis1MTk0MSAwMTUxYzA3YzUzZTUxMDYyNzMyYzAzN2UyNTY0NWJlMjNmMGRmN2E2IGJjYW5ub24tb2JqY2FwCis1MTk0MiBkZTQ5MjRkMDM5MDNmNzRjODU5ZmMyMzA3ZWJiMmRiM2JmZTRjOTA3IGJjYW5ub24tb2JqY2FwCis1MTk0MyAxZjQ4OTdmNWZiMmJlYmE2MTg4ZjRlMjM0ZTAyZjRiMGYyOGU3ZGExIGJjYW5ub24tb2JqY2FwCis1MTk0NCA0M2JhZjZiYjBmOGIwYjRlNzNkMGUwMmU4ZWJlMGZiM2VlZDQwNWIyIGJjYW5ub24tb2JqY2FwCis1MTk0NSA1NmYwZWM1MGQ3MzcxNzQ4Yzk4OWU2MWNkOWIyNmI1NzBlNTIzOWUzIGJjYW5ub24tb2JqY2FwCis1MTk0OSA5MzYyOTcwNDdjMTc5ZWQ4Nzc5ZmMyM2IxZTZiNDM2ZjMyNDZhMjVjIGxlZ2FjeS10cnVuaworNTE5NTAgNjk1MzBhYTIxYjhhNjQ5ZmY3NDcwYWUxNGY5ODFjM2NhZDNjMmE2NiBsZWdhY3ktdHJ1bmsKKzUxOTUxIDM1YmYxNmU3ZjExY2RlMTZjNDVkNmMwN2YzOGM1MzI5Y2FhODUyYWUgcmVsZWFzZTI1LW1haW50Cis1MTk1MiBlZmY4OGM2YWFhYzM3NDc2ZGNiZDljOTc3OGNhNjExZDg1MmE0NjkwIHJlbGVhc2UyNS1tYWludAorNTE5NTMgZGU0ODY2ZDQ0ZjEzNzc1YzVmZGEzMmQzZmI3MTljYjNiYjU3MzE1NCBsZWdhY3ktdHJ1bmsKKzUxOTU0IDdmNmI0ZmM2N2JiNmIzZjM5MTc5ZWI4MWI4NDBhMGExNTk5YjMxZDQgcmVsZWFzZTI1LW1haW50Cis1MTk1OCBkZjk4ZDk3MzEzOTBmMTQ3NjgxN2Y5NDQ5NDQ4NWY3YWRjMGEwZWJjIGJjYW5ub24tb2JqY2FwCis1MTk1OSAwODlkZGYxODc3Y2MwNzhkNjE0NjZkMTQyZGRhMTJkOTU0YTk3YWUwIGJjYW5ub24tb2JqY2FwCis1MTk3MSAyNGY5YTEzMDg0YjAxNzQ3NDQzOTJmZDhjMDdiYjYzYjc4OGE2ODVkIGxlZ2FjeS10cnVuaworNTE5NzIgYjhjYjcyMDEzNzljNjc5NTBkZTExYWVmZDNjMDMxMTExNDQzNDFjYiBsZWdhY3ktdHJ1bmsKKzUxOTczIGFlYTE5YzJhNDViZmM5NGFlMTYxNTc5M2JhNjBhYzk0OTBmMzRkMjQgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTc0IDI2NjE4NTI4ZmEzYjc2NGIwOGQ2NzgxYjNiODMzNTFiYTY2OWQ1MzEgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTc1IDk0YThjZDU4ODhlNzBiMDcwM2I1NmQ2NGIxYTExNDQxMzQzZDQzOGQgbGVnYWN5LXRydW5rCis1MTk3NiAwYjYzYzI4NTkzNGZhMDUwZmJmYjRhYjY3YjdmMmZiMTIyYmU5OWU3IHRoZWxsZXJfbW9kdWxlZmluZGVyCis1MTk3NyA2OWJlMDE1YTRiNTFjMDNkMjQ5MGE0OTU3NDNmM2Q4OGM5YWY1ZGY0IHRoZWxsZXJfbW9kdWxlZmluZGVyCis1MTk3OCBjNzgxYzk4MGM5YTBkZDg4MGI5MzFkZjFhNWM4ZmVjMDQyYjIzNjlkIHRoZWxsZXJfbW9kdWxlZmluZGVyCis1MTk3OSAwNzlmOWJlYjFkN2ZhMzU5MjJiMjg2ODBjY2RjYTY3NTFlYTAwYjYyIHRoZWxsZXJfbW9kdWxlZmluZGVyCis1MTk4MCA1ODcyYmFiZmY2Mzg0ZjQ2ZTUzZTUzOTk0ZDgxZGZlYmMyZDYyNzhmIHRoZWxsZXJfbW9kdWxlZmluZGVyCis1MTk4MSBlM2M1ZjNiNTkyNzFmMDJlYWYwYzM2YzkwODg3N2ZkZjYzZThkMjRjIHRoZWxsZXJfbW9kdWxlZmluZGVyCis1MTk4MiBlMjc0MzIyMjU4MWQyOGRiZTlmYThmYjFiZjdmMDQyMDAwZWI2ODFlIHRoZWxsZXJfbW9kdWxlZmluZGVyCis1MTk4MyA3NDM5N2IwMDk5MTQxZmNhZmQ5ZWMyMmNhZjdlZGU3OWY1ZWMzNjE1IHRoZWxsZXJfbW9kdWxlZmluZGVyCis1MTk4NCBiOTQyNzhlMWJjYjMxNDFhNTAyZDczNjM1ZDQzNzE4YTI5NjYzNDU3IHRoZWxsZXJfbW9kdWxlZmluZGVyCis1MTk4NiAwNGM5OThmZjI4YjdkNDFjZDMyOTc2NDcyMWU4NTYwZDRiNGJmODVmIGxlZ2FjeS10cnVuaworNTE5ODcgY2FiMDU2OTAzYjNkZDI2NDkyZjA2ZWE5MzI4ZmU1YTMzZjk0MGYzNyBsZWdhY3ktdHJ1bmsKKzUxOTg4IGMyMGJkNzRhYzlhNjdkZGViMjI3NWYwNDQxODA1YWJhNmVhYTI3NjUgcmVsZWFzZTI1LW1haW50Cis1MTk4OSA0NzllMzg5Y2I0NjJmOGRjYmE4ODVjZWJjOWEwMjY1ZWFhNzE4NjQ3IGxlZ2FjeS10cnVuaworNTE5OTAgN2Y2ZGRmNTU1YzEyMGJjOTM1YTgyOWU3NTBjZGYxMWRkMGZlMzMxOSBsZWdhY3ktdHJ1bmsKKzUxOTkxIGQ5OTc1MzMxNDQ1MzM1M2RkZWViOTk2ZmI3ZDA3NTcyMjk5ZGQ4MDAgbGVnYWN5LXRydW5rCis1MTk5MiBiNTI5MmY5Njc4NzdjYzM0OWExNDM1OTJhNTViY2YxNTNhMmY5MzZlIHJlbGVhc2UyNS1tYWludAorNTE5OTMgMjViY2RmM2NkMTk0MjFkNDM0NDdlNGVmNmIxODQ4OWNiMDY4ZGY5OSBsZWdhY3ktdHJ1bmsKKzUxOTk0IDM0NzhjMTYwMjA3Yjc5ZDZmOGMxODVlNDIzMGM2MmU4MjUwMjgyN2MgcmVsZWFzZTI1LW1haW50Cis1MTk5NSBlY2FhZmMzMmM1MDAwNjMxNDQ5YTYwMWI4NDg2MTQxYWJhZjYxODVhIGxlZ2FjeS10cnVuaworNTE5OTYgY2NkZGIyMjYxMWRjNmYwZDU2MDBjZWIxMTVjZWY5ZjAyNDBhODcyMiByZWxlYXNlMjUtbWFpbnQKKzUxOTk3IDYwM2NkZTVlZDFlYmM1N2Y2OTU5MTljMjc5YWEzODM0YjMyNjRlY2IgcmVsZWFzZTI1LW1haW50Cis1MTk5OCAzYzdmMTg4MWU4MmE5NmFlNDY1YmMwMmFmMmNlZTllYjJmNDRhMWE5IHJlbGVhc2UyNS1tYWludAorNTE5OTkgZGVjN2Q5OTNiNjhmMjQxNDlhZDg4ZjE5MjgyZWVjMmUxZWFiNTZiNCByZWxlYXNlMjUtbWFpbnQKKzUyMDAwIGY4YTdkZmJmODFkMDg5MjJiMTA1Zjc2ZGUzMDM1OGY2MDYzODAwNDcgbGVnYWN5LXRydW5rCis1MjAwNSA3OGM1YTAzOWZhM2E2NDIzY2UwODBkMDQ5YWI0OGEzNDA1MjI4ODQ1IGJjYW5ub24tb2JqY2FwCis1MjAxMCA3OGQ0ZTVlNDcwY2Y4MjQzYTljNjdhMDdjODVmYWVhYWI2YmVkYmQ3IGJjYW5ub24tb2JqY2FwCis1MjAxMSBiMDcyMjI4Yzk1YTIwNDA1MDEwN2VhMjI1OTg0ZDFjZDg1YWIxMGM2IGxlZ2FjeS10cnVuaworNTIwMTQgNzRkY2ZkMzZmN2M0YTM5YjI1NjVhOGEzZjJkMjY5ZDE5YjU2YzI1ZCBsZWdhY3ktdHJ1bmsKKzUyMDE1IGU2YTRlMDY3ODk5M2NlODZkMGRhN2E4YWZmMzA5ZDdhYTYwZTJmYjQgcmVsZWFzZTI0LW1haW50Cis1MjAxNiA5MzQ3YzJiNDUxYmFkOWIxZGEzZmJhMjdiYTY0NWIyYThmZjUxMzBiIHJlbGVhc2UyNC1tYWludAorNTIwMTcgNmZiNDZlODdkNWY5NGM2MGU1NDhmYzE0M2M1ODRhMDRkYTU0MWExYyByZWxlYXNlMjQtbWFpbnQKKzUyMDE4IDNiNzBkYTllZTM2ODc1OTMwMmU3ZGJjNTQ3YTc2OWU3MTU1MDIwMGYgbGVnYWN5LXRydW5rCis1MjAxOSBhNTIxNDJiYzE1OGY2NWQ1ZTM2N2NiNmI3MjQ3ZTdkMDA3NWU4MjgwIHJlbGVhc2UyNC1tYWludAorNTIwMjAgNjhhNTZhMTVkNzU1OTMzNmM2YTViZmU1ZjMxMGE3ZmExNDY0ZGRkZCByZWxlYXNlMjUtbWFpbnQKKzUyMDIxIDk0ZGZiYjlkYWM1NzhiMDM3ZGZiZDI4NGQ4MTI0NmQ2NzQ1M2NmYzIgcmVsZWFzZTI0LW1haW50Cis1MjAyMiBjNDlmMDJhNTBjYWRkNmY4MDFjYjVlMjdkOGVhYTNiZGNlYjY1ZjZhIGJjYW5ub24tb2JqY2FwCis1MjAyOCAxNjk2ZDg1YmEwNDM1NjQ1YTJhY2Y0NzU0MjRlZDg5Mjk1OGM4ZTE2IHJlbGVhc2UyNC1tYWludAorNTIwMjkgYWYzMTg2YzY0MDkyMDdjNThjZTdkMjUxNjE5MWNkOGQ1MWZhNjU4NCByZWxlYXNlMjQtbWFpbnQKKzUyMDMwIDg4NGQxY2I3MDIyMTViYjdkMDJkNjQ2NjcxYjg1MzE1MzE5NmY4YzUgcmVsZWFzZTI0LW1haW50Cis1MjAzMSAxMjg2OWFhZTlmNmQ5ZWRmYmU4YjY4YjQyMmYwMWIwNjY1ZmM4ZjQ1IGJjYW5ub24tb2JqY2FwCis1MjAzMiBmOTBiYTMwNmMyODdhNDhkYjAxMDM1OWQyY2FjOWQ5MWRiYjhkMzkzIGxlZ2FjeS10cnVuaworNTIwMzMgMzUwNzc3NWY0ZWQ0MWQ1NmEyYTdhODc4YWZlZDI4NjhmNzYzMWZlZCBiY2Fubm9uLW9iamNhcAorNTIwMzUgZmIyODllZTFjZDYwN2IzNzlhMDFlYWMyNjA4ZTk2OTNhNDllNGFlMCByZWxlYXNlMjQtbWFpbnQKKzUyMDM2IGFiNzllZDBmOTI4MTc1ZTE5MDc1MjIxYTY4YmQxOTYwM2JjY2VlZTUgcmVsZWFzZTI0LW1haW50Cis1MjAzNyBjYzE4ZmRhZDEwOGI3ZDcyMDA3OTdlYjA1ZTFjNTBjMzc5MDgxMTA2IHJlbGVhc2UyNC1tYWludAorNTIwNDAgNGYxMTc0NWM3ZTVmY2U4ODgxNDg2Y2M4ZmY2NDdmYzM1ZmM5YjgzNyByZWxlYXNlMjQtbWFpbnQKKzUyMDQxIGMxMWNhZTJiOWE3NWYyYTgxNDFkODdhMDE2NTAzODgwMTdkNDlhN2IgcmVsZWFzZTI0LW1haW50Cis1MjA0MiAyNjMyYzlhZjY0YWJiMjUyNzYxNGI0Y2ExNmFjYjg5MjhmNmZjNWM3IHJlbGVhc2UyNC1tYWludAorNTIwNDMgMTVkZGFiZTYzZDk1MmM2N2IzNTNhY2UzZDIyODM3ODMwZmJlNTZiNSByZWxlYXNlMjQtbWFpbnQKKzUyMDQ0IDFlNWYwYjA0NjZkOGRmMGRiYTljNGYwMDE2MTRlNWE2NTAzYjg4YjEgcmVsZWFzZTI0LW1haW50Cis1MjA0NSA5ZTBmYjk1NDc5MWVjOTM0OTJlY2E3YWUyMmZmOTM4Y2NiMTUzMjVjIHJlbGVhc2UyNC1tYWludAorNTIwNDggMDU4NjE3NDllYWNkMjExYWZiMmNmMTNhZDlkMGFkM2ZmODA3ZGZmMSBsZWdhY3ktdHJ1bmsKKzUyMDQ5IDAxYzAzYTcxMWIxNWNiMWVkMDFmZDNmMGQzMTRkMzAwNTNlNjZmOGUgcmVsZWFzZTI1LW1haW50Cis1MjA1MCA1MmNkYmU0Yjc2NDRkNzJhYTkyY2EwZmM2NTQ4Nzg2MTRjYzEzZDZlIHJlbGVhc2UyNS1tYWludAorNTIwNTEgMGVkZjM5OTk2MThhZTI4Y2Y5NjhhOWIwMGVkYjAyNzJjZjFiMTNhYiBsZWdhY3ktdHJ1bmsKKzUyMDUyIDFkYzIyY2MyMDEzMmYyYWMwNTk5NzdhNWM0YzdmYTJhOGMzMDg0ODIgcmVsZWFzZTI0LW1haW50Cis1MjA1MyBkZTc5ZjE4NzBhZThmMWQ4NmQxZjU4NTE4NjgxZDM0NmVmZTM1ZmVhIGxlZ2FjeS10cnVuaworNTIwNTQgNWRmZmEzNWNjNjQzMDJjMmMzZGRhM2FlMWZjZGJhYzhkNmZjODI5YiByZWxlYXNlMjQtbWFpbnQKKzUyMDU1IGQ4MzM4MDZjNzM1MWE1OTE3MjYyYzg4OTAwYzUyZmM4MWRjNjVhNjQgcmVsZWFzZTI1LW1haW50Cis1MjA1NiBjNDc3YTBlMmIwNjc5OWRhYWQ4OTQ1MmQ5ODFjNzVkY2M0OWMzOWQxIGxlZ2FjeS10cnVuaworNTIwNTcgMmM4MjRhOGExZmI4Y2Q1NmFhOGViNmZlZmY5Y2E1NmQzNTMxZmRhNiByZWxlYXNlMjUtbWFpbnQKKzUyMDU4IDQ5ZmJkZGZiMTIxNzAxZGRlZTE2NGFjNzUyYjEzMjEyODBmYmNmNjggbGVnYWN5LXRydW5rCis1MjA1OSAxM2NmMzQ0ZGU4Yzk4OTg0ZjM1ZjhkMzgxOWMxODE2ODQ0MTUxNGM1IHJlbGVhc2UyNC1tYWludAorNTIwNjAgNTI0NjBiMDkyYjVhNjZkNWEzNTkzYTE2ZjJlNGM3NjMxYjg5ZDhmNiByZWxlYXNlMjUtbWFpbnQKKzUyMDYxIGUxYWI0NjUzZWJjMDkzMjU5NmI2YjA2NDJjMmYwZTg5YjE5MmMxM2IgbGVnYWN5LXRydW5rCis1MjA2MiAzOTg2YmZlNTMxMDFkYjMxMjkyMjk0M2E2YzkzMTNmN2U5OTc0OWNmIHJlbGVhc2UyNS1tYWludAorNTIwNjMgZTdhNTgzNDFiMmU4Zjc1MzVkNzdjZDE0YzIyN2IyYTcxOGQzMzVlMSBsZWdhY3ktdHJ1bmsKKzUyMDY0IDFiZjUxZDJmNDY5ZDJkMmZhZjc4M2JjNjhmNTNjZWY5YmYyODQ2YjkgcmVsZWFzZTI1LW1haW50Cis1MjA2NSBiOWEyZWYxMzAyZDQ3Y2NkNTE1MGQ1OTNhMTljNjFlNWEwM2I2MjVkIGxlZ2FjeS10cnVuaworNTIwNjYgOTlkMWM5MzY3Njc5NGQyZDRiNTgzYjY0ODYyN2JhZTZiNGZjZTZiNiByZWxlYXNlMjQtbWFpbnQKKzUyMDY3IDMzMGRiY2FkYjkzMTcxZjYyMzdlYjE4ZDdhYTgxYjk5NzRkZWY0NmEgcmVsZWFzZTI1LW1haW50Cis1MjA2OCBmZmI5MDEzNzRhMzgyNTM5YTkwNjU3YTU0Yzg5Y2NkZTA4ZmYyY2Y1IGxlZ2FjeS10cnVuaworNTIwNjkgZDkxODI2YmFjNjU1NWNiMGE2MTQ2Yjc1NWM2NmNiNDVlM2M0Y2Y2OSBsZWdhY3ktdHJ1bmsKKzUyMDcwIDk1ZDI0NzNmNzc3MGNiMTBjNmY4OTM1YzAyMTE2Y2RiNzdkMTQzNmMgcmVsZWFzZTI0LW1haW50Cis1MjA3MSA5Y2FmNWE5ZGE1NTRkMGJhYjNiYTFhYzg0OTYyYzQ2YjA3NTRiZmMwIHJlbGVhc2UyNS1tYWludAorNTIwNzIgYjdhZTg5NzdkMDZlNDk3ZDZmZGFkZWFhMGM4NmQzMzZhZWRjZWFjZCBsZWdhY3ktdHJ1bmsKKzUyMDczIDliZTAzMjI2YTdiZjhkYTk5ZWRmMTc5MGFlNTU5ODYyMzJmZWJhMzIgcmVsZWFzZTI0LW1haW50Cis1MjA3NCBjZjU4ZmI4NDUwYmEzMDVkNGZjMDU5ZDkwOTVhNWVhYTAwMjk3Y2NlIHJlbGVhc2UyNS1tYWludAorNTIwNzUgNDBlMmZlZTAzYTk0OTIyNTA5OGJiODdkNGJmYjQyOGY3ZmNkY2ZiYSBsZWdhY3ktdHJ1bmsKKzUyMDc2IDUxMzBiNjhiNTRlOTRhOGIwOTIyM2FkOTUyY2FhMTcwNjUzZjBmMTAgcmVsZWFzZTI0LW1haW50Cis1MjA3NyBkZmQ4MDlkY2Y2ODAwMGZlNmE0YTY4MGEyNTBjMWY5ZWI5OGQyZWMyIHJlbGVhc2UyNS1tYWludAorNTIwNzggYzg5YTc1NmMwOTY1YTkwZDM1Y2E2MjFiMzBiN2Q0NTIxYTI2ZWU1NCBsZWdhY3ktdHJ1bmsKKzUyMDc5IDkwNzI4ZGZjMzNlODU4ODRkY2NlY2I4MzZlNWIwMTQ1ZWFlZjg0NzMgcmVsZWFzZTI1LW1haW50Cis1MjA4MCBkNzQzMzgxMTMxZDZjOWYxYjg5M2UxMzZhMTY4NGVlZTc3NjE4OWJiIGxlZ2FjeS10cnVuaworNTIwODEgYmY0N2RlNmQ5YzkxOGUyMDZjM2FiN2ZjZGVjZjQ1MWQ4NmZkMWIxOCByZWxlYXNlMjQtbWFpbnQKKzUyMDgzIDI1N2RhZjM5YjA4YzY4ZTYyZjRlNzBkNTUxMzhkMjI2OWE4MDhjMjEgbGVnYWN5LXRydW5rCis1MjA4NCA4OWU0YWViYmYzMWM0NjA5M2IzY2NhN2M4MTgyM2M4NzFkY2I2ZWM5IGxlZ2FjeS10cnVuaworNTIwODYgMDBhZjY5ODcwMjZhNmQ1YzFlMmQzZTE2NDVkZDFmNmE5N2IzOTBhNiBsZWdhY3ktdHJ1bmsKKzUyMDg3IDFkYTA0YzhlZThmZjAwMzA4ODcwNzhhOGJkYTY4ZTI0NWY2YWQ3ZWYgcmVsZWFzZTI1LW1haW50Cis1MjA4OCA5ZmNhYThlZThjMjJmZGIzZWQ2M2MzM2EzNjM3OTA4NTc2YmE1ZTEzIHJlbGVhc2UyNC1tYWludAorNTIwODkgMTY5N2QwZDRlZjMzN2E4ODIyYjU5MzUwYTdiYWEwMTVhZTA5NDdhNyBsZWdhY3ktdHJ1bmsKKzUyMDkwIDVjMzZlYzVmZDNjMjM2ZWI2YzA0NDBjZmJlNWZkNzhlOTlmODk4NDYgcmVsZWFzZTI1LW1haW50Cis1MjA5MSBjMGU3MWE0YjcxYzc0NmYwYjhiZGFiNTA1OGMxYjVhMjNlYmZmNDFmIHJlbGVhc2UyNC1tYWludAorNTIwOTIgY2RjMzY3YWIzYmJmY2IxMWZkZDRmNWNjY2MyZGVlODcxNGIxNjI1NyBwZXAzMDJfcGhhc2UyCis1MjA5MyBiMTQ0OWE3ZTE1ZWRlZWFkODU3ZjUzY2I4MGZmNWRlOTM2ZmZjZmRiIHBlcDMwMl9waGFzZTIKKzUyMDk0IGI0NTUzYjEyZTI1YmU5YWNmNjNiZGIxMWEzNmM3ZjkxZjMwZjdlMzAgcGVwMzAyX3BoYXNlMgorNTIwOTUgYjIyYmFhMTU0MTQ3NGY1MWZhMmNjZjUyYmMzMjI5ZDkyOWM5NmUyYiBwZXAzMDJfcGhhc2UyCis1MjA5NiA4NGFmYTM2NmVlZTdhMmIwNjU0MWU5ZGI4M2EwYTM0MThjNzEyMzExIHJlbGVhc2UyNC1tYWludAorNTIwOTcgNDVkYmNiMGU5ZmE5ZmQ0ZjkxODYzOTcwMjE0YTkwYjA2ZTA4ZjRlOCByZWxlYXNlMjQtbWFpbnQKKzUyMDk4IDgxODExOGMzYTM0MGRmYTEyN2EyZmVhM2NmZGFmZTMzNTI3MmMxNDYgcmVsZWFzZTI0LW1haW50Cis1MjA5OSA1ODBmNmE2OTUxNzIzOTc1YzVlYzgzMWY1NDZlOTFmMDBmNWU1NTRiIHJlbGVhc2UyNC1tYWludAorNTIxMDAgMmM4OWQ2MTZhOWVkMzdjMDFmMmJiNTY3ZTgwMDcwNTQ0YmVhNmEwYSBsZWdhY3ktdHJ1bmsKKzUyMTAxIDJlMWM0OTM5NWI5NjFmNjU1NTRmOWExYTZkNjc5Mjk1NGY3ZmY5MzYgbGVnYWN5LXRydW5rCis1MjEwMiA0ZGE0ZGU5NTQwMTJiNDlmMzU5YjQxYjllNTQ1N2JmNzdhYjg5NmVhIGxlZ2FjeS10cnVuaworNTIxMDMgZjAxOWU0Zjg2Mjg3N2FhN2IwYjk0MDk2MmJjYTlkYjMyZWQ2NzY3NSByZWxlYXNlMjQtbWFpbnQKKzUyMTA0IDI4YTk0YmY3ZjY3ZjNjNGIxYjJjOGZmMGRkZTNiMGZmNzIxMDViNGQgcmVsZWFzZTI0LW1haW50Cis1MjEwNSBkZTdjMGNiNWE4NzI5NWM2YTE0MDM2N2FmMGJiMmVhNGM0ZmQ5MTJkIHJlbGVhc2UyNC1tYWludAorNTIxMDYgYjMzMmUxYWM2NmNjZDdjNmVmN2YwZmU2NjNhMDdiY2RiZWRiMmNmZCByZWxlYXNlMjQtbWFpbnQKKzUyMTA3IDA2MjkxZWFkZGUyZGI1YTJlY2QzM2E0YjI3MTg0MWYzNWMzNmY0ZmIgcmVsZWFzZTI0LW1haW50Cis1MjEwOCA0NDNiODczZjllYjkwODU1ZWU0YzJmYjUyNzZlOWQ0M2VmOGJmYzBmIHJlbGVhc2UyNC1tYWludAorNTIxMDkgNWRkNmM5MGQ0MjIyY2I5ZTZkNzZhM2I2ZjhlNDJjNzg3N2E0MDRlZSByZWxlYXNlMjQtbWFpbnQKKzUyMTEwIDZiMWM0ZDdkM2EyNmMzMDU0NWZmZjAzZDQ5ZTVhZTVkYTM5NTU1OWEgcmVsZWFzZTI0LW1haW50Cis1MjExMSBiN2UzNGZiYzgwYWQ2OWJjZmZjZjhlMDEwOGZmODQ4YTJhNjJmMThhIHJlbGVhc2UyNC1tYWludAorNTIxMTIgNTJlOTk2NGVmOTIyZDc3MzA0OGZiYTgzZjI3Yzc1NjA4OTc0ZmY4NCByZWxlYXNlMjQtbWFpbnQKKzUyMTEzIDU0ZDE3N2VkZTg4Mzg4MDJkNjliMGU5ODFlYzYyOGZiNjQ5OTZiYzYgcmVsZWFzZTI0LW1haW50Cis1MjExNCA4YzgzZmQ3OWNlZTViZTMwNjQ2NzYyMTM0MTU1NDE5YjA1MDRiMTQxIHJlbGVhc2UyNC1tYWludAorNTIxMTUgZWYwOWUyNmVmMDk5YTQzOTE1YjA4YzllYTlhMDgzMWE5NDY4MDhmNSByZWxlYXNlMjQtbWFpbnQKKzUyMTE2IDJmMjM4YTJjZDE4OWRmYzM3ZDU3YjUzYTcwMGU0MDhiZDM1OGY3MWQgcmVsZWFzZTI0LW1haW50Cis1MjExNyAwYjZiMzYwZTkyMTc5NTEzMTE2ZGQ4ZTRlNGViNzRhYWQ4MTk0YmNmIHJlbGVhc2UyNC1tYWludAorNTIxMTggOWU3NjNiY2QxM2NiOWZlYmJjMzY3ODY1NGJhN2RjY2RlMjg2NGI0YiByZWxlYXNlMjQtbWFpbnQKKzUyMTE5IDBkMzViOWY5NGIxNTE2Y2YyZjVlZTI2ZTFjMWIxYTUwNjVlNjZjYTcgcmVsZWFzZTI0LW1haW50Cis1MjEyMCA5MTY3OTI4N2NiOTZjZjk4NmMwMjcyNDNiZDgwMTBlYWRlNTViY2M5IHJlbGVhc2UyNC1tYWludAorNTIxMjEgNDdhYjBjMjdkZDFmOTIyZjRmNjBkYjM3ZjA0YjVlNTdlOWQyMzc4YyBsZWdhY3ktdHJ1bmsKKzUyMTIyIDM2MGQwOTcxYTZlZWYxZDg3OGYwYTBkNTM0YTVkYTM1NWQxMzg2NGMgcGVwMzAyX3BoYXNlMgorNTIxMjMgOWUzNWI2MmVkNGQyZGY5NzU3MjU5MWM0ZDFjNWZhODU5Mjg2MjU5ZCBsZWdhY3ktdHJ1bmsKKzUyMTI0IGZkMTRiYjU4MzFjZGFjNGNjZGE1ZDdhOTQyYzAxMjRhN2ViOWRjNWYgcGVwMzAyX3BoYXNlMgorNTIxMjUgYWRhNTZiNTRkYjlhNzkzNGNhYWMwOTQzMjFhMzc3ZGZiMGJhNDUwMiBwZXAzMDJfcGhhc2UyCis1MjEyNiA2NjBjZDA3MjA4MGRmM2U4YjA0NTZkMDIxMGVkZjRhOTdlMGU0MzE3IHJlbGVhc2UyNS1tYWludAorNTIxMjcgNzliNjQ0YmYwMTE2NDdhNTMxZDNlZmQyYTYzZDU3ZTU4MzkwZDU1ZCByZWxlYXNlMjQtbWFpbnQKKzUyMTI4IGRiNmNhM2VhNTNlNWI2N2FlNDE4NDFlNTBlNzVjZjIwODM4NTUzYmEgbGVnYWN5LXRydW5rCis1MjEyOSBmNWQ3ZGU1MDMxYWE0ZTIyN2RkZWQyMjcxOTU4MzhmNjJmZTFmN2I2IGxlZ2FjeS10cnVuaworNTIxMzAgY2E4ODdkNTVjNTkyMTNkMzRkZTg3ODM0MzI4YWFmOTEzZDkyMDJiOSBsZWdhY3ktdHJ1bmsKKzUyMTMxIDhhMjg1M2JmOWVjYWQzYjE2NWZkZjk3Y2U4YWNkNzc0NTY3NDU1OTUgcmVsZWFzZTI1LW1haW50Cis1MjEzMiBlMDM5Y2Y2YjdkNDI5Y2U1OTA1YTdhMWE4MmM3NWEyMTAwZmQ0ZDU0IHJlbGVhc2UyNC1tYWludAorNTIxMzMgMWI2MWU4MjY2MGJhOWM5YzAxMjMyMmY0OWQ0NzI4MWUwNDU4OGZlZSByZWxlYXNlMjQtbWFpbnQKKzUyMTM0IDEwYmI3YWNiYmRjODM3ZTI5YTliMTFmMTM4N2E2YjFiMmNhMDQ1ZmIgcmVsZWFzZTI0LW1haW50Cis1MjEzNSAyYWRkNDRjMGRlNmM3ZGFhNjQ3ZTdkOGQyOTM2MWViNDllOGE2NTQ3IGxlZ2FjeS10cnVuaworNTIxMzYgYTliMWY0MDRlODhiNTljZTQ4MWYzYmY4Mjc2MzJmZjEwMzI2OGMxYSByZWxlYXNlMjQtbWFpbnQKKzUyMTM3IDBjOGU5ZjkyNzJkNWYzZTE0NDcxZjU1MGIwNDIwYjA4N2QyNjc0ZjQgcmVsZWFzZTI0LW1haW50Cis1MjEzNyAwYzM2NDEwYzM5ZThkZGJiODk1MTg1N2RjNGFkZjMzZjI5ZmRjMzVhIGxlZ2FjeS10cnVuaworNTIxMzcgNGViMjg2ZTkzMWE5NWRkZGIxOGQzZWNjNjlhYzk3MzI0NzVmNGYzZSByZWxlYXNlMjUtbWFpbnQKKzUyMTM4IDc5ODkzNWUxMjk1ZTdmYTMyNDEwOTgzMDhlNTc1MDJmNTE1YWVlZGYgcmVsZWFzZTI1LW1haW50Cis1MjEzOSA2YmE0MDJiNjAwNDE4YTU2ODQ1M2ZhYjllZWU3ZjNjYjhhYTE0MGE2IGxlZ2FjeS10cnVuaworNTIxNDIgYmZhYzIzMzg4YTIyNGU3OThiYzIxMWY1YTZmYjU2YTc5ZGQwMTY5OSByZWxlYXNlMjQtbWFpbnQKKzUyMTQzIGRmN2E1NDM1ZWNiYjVjZmZiNTYwYmYyMDkzMzA0YWU5ODU4NTM1MjAgcmVsZWFzZTI0LW1haW50Cis1MjE0NCA0MmFiZmIzOTEzMDBhMjUwNzY1N2E5ZjU1MjA5ZWNiNzUyMjFlMmU0IHJlbGVhc2UyNC1tYWludAorNTIxNDUgMDRlYzM5MTQxMGNiZTQ2ZWI5MmZkMDkwMzM1MzI0MGY3N2E3ODZiNyByZWxlYXNlMjQtbWFpbnQKKzUyMTQ2IDUyNzBiMWUzNjY0OGVmMDQyNzhhYWNkMzg2YWYxMzY2ODYxMWM1ODYgcmVsZWFzZTI0LW1haW50Cis1MjE0NyA0NDA0YTM5ODE0NzA2NDFkMzE3Yjg5OWE1NTk5MDkxOTM1ZjYyNjE1IGxlZ2FjeS10cnVuaworNTIxNDggOGFhYTNkOTFlZWZhN2YyOTZjZjJjN2MzZDc5MWJmYjdlMzYyNjY0MiBsZWdhY3ktdHJ1bmsKKzUyMTUyIGIxZTczNzdlY2YwNDQ2MDEwNDM3YzI0Y2JjZmQ2ZGQxNzBjMWY0ODggcmVsZWFzZTI0LW1haW50Cis1MjE1MyBlODhjNDI2N2FjZDFjNzkxNzRiZDBhNmExMzgyMzgzZjI2YzdlZjYyIHJlbGVhc2UyNC1tYWludAorNTIxNTkgYTRiYmZjYTQwYzdjZjc2ZjAxYjVkODI0YWQ2YjcwMDNhMmNlNjVlZiByZWxlYXNlMjQtbWFpbnQKKzUyMTYwIGY2YmJlOGQ2ZmEzMzAzNTVlMmZhNjFhN2RlODMyMjA1M2E1NGUyY2EgcmVsZWFzZTI0LW1haW50Cis1MjE2MSAxZjU4OGE5ODJjYzU2Yzc1ZWJiODBhZTA0ZDU4OTE0ZGQwOTA5YTZhIHJlbGVhc2UyNC1tYWludAorNTIxNjIgODAxN2IzZjIxZjYyZTZhMDRiNzk4ZDNhNjIyYmViYTQyNzQxZDMzYyByZWxlYXNlMjQtbWFpbnQKKzUyMTYzIGMyN2Q4Zjg5YWE4OTE1NTE5YzEwZmRhN2ZkNWI3MWE2MjFmMmJkMWIgcmVsZWFzZTI0LW1haW50Cis1MjE2NCA5ODE5Y2RkMmZjYjE1NjlhZGJhOTNmYzMyOGVkMDUwMjI3YjcyN2NhIHJlbGVhc2UyNS1tYWludAorNTIxNjUgYTlmZWUxZjYyZjE3NjA2NzY2NmMwOGY3YTZmYWE4OGVmNDA1NDUyNiByZWxlYXNlMjQtbWFpbnQKKzUyMTY2IGFiMTM1NzYzNzRiMWE5NWZmNzBkOWU5YTM4NWQwZWEyMmFmMGU1NjEgcmVsZWFzZTI0LW1haW50Cis1MjE2NyA1ZTI0NDk5NGU0MmU1MzQyNzVkZTI0YmJmMWE1Yjg0OTNkNWNhYjQ0IHJlbGVhc2UyNC1tYWludAorNTIxNjggNWQ5M2U1Y2NiMzFlNzRjNzgzNDM4ZGRjNzc5NDg4MTU1NzgzNTBiZiByZWxlYXNlMjQtbWFpbnQKKzUyMTcwIGNkNmNlNjY2ZWZmOTFiZmEyMTI2NTEyOTA0YjQ1MTk3YzRkODVhMDcgcmVsZWFzZTI0LW1haW50Cis1MjE3MSBlNjU4MzY4MTU3OTFjN2JmNmZmMDAxMjMxZjA0MDgxYzI0OGJjOWU3IHJlbGVhc2UyNC1tYWludAorNTIxNzMgM2I1N2VlY2RjNTA0YTEwMGI1ZmQzNGQxNmI0MjE4YTkwOTU1MGE2OCByZWxlYXNlMjQtbWFpbnQKKzUyMTc4IDJhNDZiNzZiZWI5ZWJkOWEyNTYyNDJlZGYwNmY3MzE3YTM1MjI0MjEgcmVsZWFzZTI0LW1haW50Cis1MjE4NiA0NjYzYWNlMjM0OTljZTY3YWYwYjRjYjU4MjlkZmNhZWI5OTZmZTNkIHJlbGVhc2UyNC1tYWludAorNTIxOTAgN2JiZmYyZTlhOWMyMTljNWY5MGVkNTFiNGNiYWIxMzEyYzA1ZmJhMiByZWxlYXNlMjQtbWFpbnQKKzUyMTkyIDViZWM0YTY3ZmYwZGE4OGRjZDQ3MzgyNzU0ZjgwODdiODY3OWViYjggcmVsZWFzZTI0LW1haW50Cis1MjE5MyA0NWFjOWNlMGJiMTU3MTZkYzFjZGU0NDE0OTk0YmUxOTAxOTkyOGEyIHJlbGVhc2UyNC1tYWludAorNTIxOTQgNmJiMzc1ZjU1OWNlNDY3NGMxY2U3YzM0MzAzYWFlOTY2NjM5MjQ5ZSByZWxlYXNlMjQtbWFpbnQKKzUyMTk2IGU4MWZmOWFmNjQxZGIyNWNiYzNjYTM5NWNiOWEwOTM0YWIzMTFmZTIgbGVnYWN5LXRydW5rCis1MjE5NyA2YjFkZGYzODdiZDE5NWU1OGJhMzI0M2NlYWIzZDY2NjYzNWIzMGRlIHBlcDMwMl9waGFzZTIKKzUyMTk4IDU0MzRlZDRmZTg2MjI2NzFlM2FiZGQ5NTRjMTU5NDk2OGIwMDlkZjQgcmVsZWFzZTI0LW1haW50Cis1MjE5OSA0NzEzZDk5MDBlOWU5Y2I3MTYwYWQxYTg3YWRhMTNkOGI4MzU5NWU3IHJlbGVhc2UyNS1tYWludAorNTIyMDAgNzc2NzRjMGY5MjE0MTA2OTc1NmZkODY4M2NkM2Y5NzI3M2Y0ZmZjOSBsZWdhY3ktdHJ1bmsKKzUyMjAxIDc4ZDdiZWEzYzEyMjBiYTI1YTdhMzk5M2U2MTA5M2I5OWZmMjA3NzMgcmVsZWFzZTI0LW1haW50Cis1MjIwMiBkZDU0YmQ2YTZiMWVjYTRjNWYzMDc2NjkyNmRhY2YzY2JjZGE2MzJjIHJlbGVhc2UyNC1tYWludAorNTIyMDMgMDc2YzIwY2E1ZDdiNmYzNTljM2Y5NTYxOWE1YzJjNGJlN2ZiOGVhMiByZWxlYXNlMjUtbWFpbnQKKzUyMjA0IDI2YzJmZjcyODAyN2ZmODkyZTNhZWYxMzZlNTZhZDJiMTk4NjFiY2YgbGVnYWN5LXRydW5rCis1MjIwOCA1YWVhOGIxZmQyNjI1NDBkODRmOGViMTdkOTQ4ZjFjMWJmOGY2YjI0IGxlZ2FjeS10cnVuaworNTIyMDkgMzU3MTQ3MDBjZjg3YzU0YjA0MzFhYjg1NDllY2JiMjVmYjVmNTRlNCByZWxlYXNlMjUtbWFpbnQKKzUyMjExIDBlOWZkYjE2NGQyMDYxMmQ2NWI4NjI4ZDViNTU1ZmQ3M2ViM2I1MjMgbGVnYWN5LXRydW5rCis1MjIxMiA5OTRhZDc1MGIwZTNiYzA1OGM1ODkzYjFiZDVmZjkxZDE3MmFjMzU3IGxlZ2FjeS10cnVuaworNTIyMTMgNWQ4Mzk5NGNkOGNkZjQwYTRiMzM1YTgzYWZhZGM2NWUxNDA1OGEzNSBsZWdhY3ktdHJ1bmsKKzUyMjE0IGQyNGVhYWVkYTc0OGM0MTZmNjcyNmRjYjgyYzg0ZDg0ODEzODM1OTYgcmVsZWFzZTI0LW1haW50Cis1MjIxNSA5MTE4ZWE3ODFmZDUyYWY0ZGE2NDk0NDE1MjA2NTAyNjFkNTZkZGRiIHJlbGVhc2UyNC1tYWludAorNTIyMTYgMmEwNWVlNGEyM2UwNzFkMWVkMjVmOGM4MDkxOTkwM2FkNjAyNjkyNSByZWxlYXNlMjQtbWFpbnQKKzUyMjE4IDdjMzQ5NDRkNGM4MGJlOTc1OGMwMGM2ZTJjNjYyMTVkZWRmZjBhNzggbGVnYWN5LXRydW5rCis1MjIxOSBhMmYyNmY5NDRiNjU3MTc5YWZlMzZkM2U2ZDZmZmU4YTI4MmI5MzQ0IHJlbGVhc2UyNS1tYWludAorNTIyMjAgZWQ4OGQ2YjdjMWY5NjY5MDNiZDkxZDlhOWVlN2UwMzkxYWIyMzI3YSByZWxlYXNlMjUtbWFpbnQKKzUyMjIxIDE2ZTI4OTJlMWUzYzJhMjY5MTVjMjYxOGU3MDVjODlhYmQ2NDJjOTkgbGVnYWN5LXRydW5rCis1MjIyMiA5ZTA0MzFmZDY3NGEyNGY5OGRiMWJjYWI3YWNiM2M2MWU5MDJmOGJhIHJlbGVhc2UyNS1tYWludAorNTIyMjMgMzQ3Nzk0MzkxY2U0MzQwYmI1YzIxYjFlODFjNjQ2MjJhZDVlZWZhOCBsZWdhY3ktdHJ1bmsKKzUyMjI0IGQzYzE5NDdkMTY2NjUzMWUxYmExYjk4MWY4MTI2YjNkNWIwMGFlYzYgcmVsZWFzZTI0LW1haW50Cis1MjIyNSA5M2UyYjMxMTJkNzllMTA5ZWM1YjY0MGEwZDQzMzUzNWIwZjEyNjVmIHJlbGVhc2UyNS1tYWludAorNTIyMjYgNjk5Y2M2YTVjODZlYjhhNTlhYjA1NjkxZDgwOTVhZWY1MWNlNWU2MCByZWxlYXNlMjQtbWFpbnQKKzUyMjI3IGI5ZDMzMDFlNWYxOTVlNjBkOTkzN2JhN2E5OWU0NWJjYzI0MWI0M2EgbGVnYWN5LXRydW5rCis1MjIyOCBkZWVlYTRkYTFmMzU0OWVmMzNhZGVjNjE5NjA0OWM3NGQ0NzRhODJiIHJlbGVhc2UyNS1tYWludAorNTIyMjkgMjA0NzRkOWU3NWUxNGJkYzIwNDQ2OWRhZDQwNmI4ZmUzOTc3OGQ2OSBsZWdhY3ktdHJ1bmsKKzUyMjMwIGY4MDVjY2NlMmY1NjRlMDUyZTY4NjhjMGJiNmUyNzQ2OTgyM2M3YTQgcmVsZWFzZTI1LW1haW50Cis1MjIzMSA2OTNmZjVkNzM0MTI1MWY5NjMxNmVkMTY1ZWI0ZWVmYzQ2ZDM1ZDg0IHJlbGVhc2UyNC1tYWludAorNTIyMzIgMGRjMjYxZDhjNTdmYTg0NTMxZjFkMjgzZTE5M2EwNGI0MTFmM2IyYSByZWxlYXNlMjQtbWFpbnQKKzUyMjMzIDgzOTY1OTc3ZjM0YTFhZTM5NDc1MDAyMGMzOTlkODgzNmQwN2RlZjQgbGVnYWN5LXRydW5rCis1MjIzNCA3Njg4OTRmMzNmMWMzNDdmNDQwNGRlOTVkYmYzYmVlMzYzMWFlY2UyIHJlbGVhc2UyNS1tYWludAorNTIyMzUgNzExN2Y2ZTVhYzgzOThkZTcxYmFmY2QyNTYzYzBiODMxZDYwZWU2OCByZWxlYXNlMjUtbWFpbnQKKzUyMjM2IDkxYmU5NjY0NjQwNzMyOGFhNzdmZDNjNDgwMmNiYzg4Yzk4MDBlNjEgbGVnYWN5LXRydW5rCis1MjIzNyAyMGRkMTNhZWUyMzM0OTEyMjkyMWFjYjIyZTdlMzQ0MmNiODQxYzY1IHJlbGVhc2UyNS1tYWludAorNTIyMzggYzMzOWExYTE2ZWM1YjY0MTU2ZDI2MGZjNjE5MGQzZDZkZjEzYmYzNiBsZWdhY3ktdHJ1bmsKKzUyMjM5IDQ3NTIyOGVkMjA1NGM3ODJjZTUyM2NkYTY2NDQ2OGM5NDUwNDMwM2MgcmVsZWFzZTI1LW1haW50Cis1MjI0MCAwYWNlM2M4MDYxMTQxMmRiODgwMWU3YTM0MDc4Y2IzNzkwYzY5MmE3IHJlbGVhc2UyNC1tYWludAorNTIyNDIgYWVlZTlmNWEwYjNlYzBlNWM1YjYyYmFkMzY0ZjgyODczYjBiMzNhNyBsZWdhY3ktdHJ1bmsKKzUyMjQzIGRlMmI2YTFjOWIzMTExMTU1MWM4NmUwZGI4YTgxYTcxNDBmZWQ2NGUgcmVsZWFzZTI1LW1haW50Cis1MjI0NCBhNjA0OTViMzZmMzhjYjJlYzRiNWIxMGI0ZThkNThiZjBlYjYxMmI1IHJlbGVhc2UyNC1tYWludAorNTIyNDUgYzM4NzdiNjQzMGI1ZDg5ZTJlMDliYzFhNGU4NzQ2MjExYjdmNjcxOSBsZWdhY3ktdHJ1bmsKKzUyMjQ2IGVkYTkzMWYzOThjMGQ1ZWZjYTBmNDhlZDI4YjdjMjRjNTdlMGMwYTcgcmVsZWFzZTI0LW1haW50Cis1MjI0NyBlZGUwNWQzNGM1MTgzZmUzMTZhNGViYzAwYzc0ODgwZjNkYTljM2MwIHJlbGVhc2UyNC1tYWludAorNTIyNDkgNGVlZmNlOGJjMmY3NDhhMzM3ZGE3ZmJjMDA3YmIyMjRhMTllMDhkNyByZWxlYXNlMjQtbWFpbnQKKzUyMjUxIDY2NWQ3Nzk4YTFiYzhhNjBiNjhiZGYzMmVlYTAzOTQyZWE0YzYzZWQgbGVnYWN5LXRydW5rCis1MjI1MiBiZjZhMDJhZGE0NDllNGEyYzk4MmU1MzYzNDYzODQ1ZTg4NjBhMGI3IHJlbGVhc2UyNS1tYWludAorNTIyNTMgMzgzNTY5NTFjMTlmOThhYTY0ZWU0NGU2N2MxNDVlYzc3MGIzMGNhNSByZWxlYXNlMjQtbWFpbnQKKzUyMjU0IDFlNGUwMTVjMDdjMDc0ZGU3ZGI0OTgwMzQ2ZDhkMTEyNTM5YjRhNjkgcmVsZWFzZTI1LW1haW50Cis1MjI1NSBmNDZiYWRjOGRjMjEzMzk4MmUzMjhlNDYwYzljMDgzYTIyNmEyYTIwIGxlZ2FjeS10cnVuaworNTIyNTYgZDMzZTQwMTFlMjAyOTQ3OWFhYTU3ZWNiMGJjMDlmZGU3N2M5Nzk4NCByZWxlYXNlMjQtbWFpbnQKKzUyMjU3IDI4ZGI2MTEwMTQ2MzZlZWExYzg4ZDBjZDNmYzJjZGIxNGM4ODQzMmQgbGVnYWN5LXRydW5rCis1MjI1OCA4Y2E5YTdiMTFhN2Q0MjYxYmEwYzJiOGU2YTNhYjA3ZDM2ZWEyM2U3IHJlbGVhc2UyNS1tYWludAorNTIyNTkgNTJiNjVmMjhiZTE3MTcyMDMxYzMzMDIzODU1MTM3ZThhNDhlYjVjNCByZWxlYXNlMjQtbWFpbnQKKzUyMjYwIGNlNTE1MDMyZmNlMzdhYTFiMGQ4NzY4ZDA3NzYyZDcxYjJlZTE1ZjAgcmVsZWFzZTI0LW1haW50Cis1MjI2NiAzMDkwOWUxY2FmNzljOGQ1NDQ2MmQ1ZDU5MzJhYTZhZmViYWY5MzE3IHJlbGVhc2UyNC1tYWludAorNTIyNjcgMGRhYzZkZTBmZTc4YWRmYmY5OGZkZWVhNDMxODBmZmU4ODM4YzZmNSByZWxlYXNlMjUtbWFpbnQKKzUyMjY4IDY2YjgzZDFiYTJmYzVmOTlmOTkyNTdhYTMzZjdkODA2M2M3ZjFlNDMgbGVnYWN5LXRydW5rCis1MjI2OSBiMmVkZDUxMjQxYWUyMjFhOTRjYjFkMTQ2NjZkMWY2ZjI5MzU3ZDE1IHJlbGVhc2UyNC1tYWludAorNTIyNzEgNTZiOTExZGNjMTg1YWM2MGZhZTliZTgzNGVkNTYzZWZiYmY4OWQwYiByZWxlYXNlMjQtbWFpbnQKKzUyMjcyIGY3ZmJkYzU2MmQ3YWRmNjg5N2EzZDY4YTdkMWI4YjQyM2IxODFmNDEgcmVsZWFzZTI0LW1haW50Cis1MjI3MyA1YmNhYjRjYTY2MDgwNDk3ZWJkN2NjY2M3N2Q5MmI4MGYyMzg3NTc1IHJlbGVhc2UyNC1tYWludAorNTIyNzQgOTg1MTI2ODczNzQwZGVmNTU3NzNiZGU1NDBjNmQyNjIzMWNjNDZhYyByZWxlYXNlMjQtbWFpbnQKKzUyMjc1IGExYzM4MWMwNWRkZWM0Njc3MDhlZjQ5ZDllZDJjMGRhOGRlZjU5N2QgcmVsZWFzZTI0LW1haW50Cis1MjI3NiBiYWFlZWE3MjJiMWM5N2NhMDMxNzllNWEwMmE0NzE3ZTcwMTdiYTJhIHJlbGVhc2UyNC1tYWludAorNTIyODIgYTA0NTRmMWY5N2M2Y2FiYjM2YzRmYWNjYzU4OTM4YzlkYmYwOTQ1YSByZWxlYXNlMjQtbWFpbnQKKzUyMjkzIGFjNjUwYWQ2YzgxN2JlMmE1NjY4N2FhMGM3OTNkMTFkOTM0MzgyNjkgbGVnYWN5LXRydW5rCis1MjI5NCA2OGI0ZDBkYWI0OWFkMWVlZDZiNjM4NmM4ZTYyMGRmNjk3MjhmMzQwIHJlbGVhc2UyNS1tYWludAorNTIyOTUgNzAxNDBjY2NkM2RhNzNiZGQ0MjYzOThjZmI1YTEwMDM4MTE4YjAzOCBsZWdhY3ktdHJ1bmsKKzUyMjk2IDY2NzBkZGE0YjI3ZDlmMmQxMjIwZWI0OTRlMmJkOGYxNmU4NGQwYzUgcmVsZWFzZTI1LW1haW50Cis1MjI5NyBkZWIxYTBiNWRiY2I4ZWFiN2Q4NDliZjIxNGQ1MTc2MTZiYWI0Y2UxIGxlZ2FjeS10cnVuaworNTIyOTggYzY4ZmFjMWViNmNiZTQ3OGI0YzY1ODM5MTZlNzFjNDE5MDkzZGJkNSByZWxlYXNlMjUtbWFpbnQKKzUyMjk5IGMwMjA4MTk1YTU1ODUwNzU2M2E4YmRmYzUzNzAyZDMzNDQwZDM3NDkgbGVnYWN5LXRydW5rCis1MjMwMCA3NjQwYTU3ODIyYTY3YWM2YWQ5NDE5MmNkZjRlN2IzNGU5ZjY3YzdmIHJlbGVhc2UyNS1tYWludAorNTIzMDEgNjQ3NTk4YzFhOWQ5MjQzYmM2ZmRiYTA2N2JlNDhhYTExNzMzMjQ2MiBsZWdhY3ktdHJ1bmsKKzUyMzAyIDZlNmMyMjBjMmZhNjIyYWMyNjhkZDRmODU3MTUyMzhiY2I1YzFmN2IgcmVsZWFzZTI1LW1haW50Cis1MjMwMyBkMjdlNzYzMjY4MTk4N2FlNTY5OWI1MWQ4N2MyNjA0YjI3MTQzODhkIGxlZ2FjeS10cnVuaworNTIzMDQgMTdmNDE3ODA5ZTIzOTgzYzAzZDY2NjJmYmNlNGM0OTZjY2IzZjc2MiByZWxlYXNlMjUtbWFpbnQKKzUyMzA1IDQxNTkzODZmOGRiZGZjMDU1NmQ2MzA3NmFlZjVlNmRhNDMxYTM3OWQgbGVnYWN5LXRydW5rCis1MjMwNiBhMGJmNzI4MWJkMjBiNjVhNTg0ZjRhNjI5OWNiZWNlMjU5NTZkODM0IHJlbGVhc2UyNS1tYWludAorNTIzMDcgMTBhYmZjYjY2ZTY3YmRlZmE3ZDdjNTcwOWQ5NTcwNjdmZTI0ZmUyNyBsZWdhY3ktdHJ1bmsKKzUyMzA4IGNkNWY3Y2QyMDk4ZWIzZjc0YWJlOGZiODRmZmE5MTBiMmYxMDZlYjYgcmVsZWFzZTI1LW1haW50Cis1MjMwOSBmNDQzMGJlYzMwMTNlMjhmOTExMTQ1ZGE1YWU2YzBkNjkxNzA4MWNkIGxlZ2FjeS10cnVuaworNTIzMTAgMWExYTU5ZjUwYjRhZTIyOGY5NjFjOWMyZGRmMzU2NWM5ZTc1MjEwMiByZWxlYXNlMjUtbWFpbnQKKzUyMzExIGEyNDgwMWRhOTJlZTBkNTJiNjEwMzBmYWQ3YTcwZTVlNmFmMWI4YjYgbGVnYWN5LXRydW5rCis1MjMxMiAxZThlOTAwZDlmNDlkMjdiNDBiMjViNjQzYTQzY2FiOTViOTY3YzliIHJlbGVhc2UyNS1tYWludAorNTIzMTMgN2ZhYmJjNGEwYzRlODZiNjY4MDNlODQ2MmQ3N2M0OTgxNzllNjFmOSBsZWdhY3ktdHJ1bmsKKzUyMzE0IDNjZmE4OGZiMGY0NTM5NzhjMGE2ZjIwYjAzYzI2NmY4Mjg0MzQxMmUgcmVsZWFzZTI1LW1haW50Cis1MjMxNSA2MzU0MzhiMjk2NzNmZDYxMWYyMjk5YmQ3Yzg2OWVmMjE0YmVkYjFmIGxlZ2FjeS10cnVuaworNTIzMTYgYzRjNGVlYzY0YzEzNjRiYzY4ODRhYzBiNTRhNmJmNzA4NjgzMTRlNiBsZWdhY3ktdHJ1bmsKKzUyMzE5IGM3N2Q5YTlmZTcwNDM2OTJmM2NjZTJjYWUxMjEyMTc5NGMxYWQ2OTkgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUyMzIwIDhlNjg1YjIzODlkY2VlYWYzOTE0YTUxNDYwOTYxMzQ4NWI0YzZjZGIgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUyMzI3IDM5Yjk5MWJhODc4Zjc5MDVjNjg0Mjg1NDUzMTY1ZGRmNmZlODFiZGQgbGVnYWN5LXRydW5rCis1MjMzMSAxMDlmOTBjMjY2ZmJjMjg3MzZjNDM1YTVkOTkwMzVlZjMwN2JhYmNhIGJjYW5ub24tb2JqY2FwCis1MjMzMiAzOTg1ZDdlMjA2N2RiNzVmMTcwZTA4OTE5OTRiMGZkNzA5NjNlNDBiIGxlZ2FjeS10cnVuaworNTIzMzMgYjYxYTkwZTc0N2U3YzkyOTAyNTI5ODNjNjU2YTQyNzJjNzlmN2YwNiBsZWdhY3ktdHJ1bmsKKzUyMzM0IDg0ZDNiNzJkYzMzOTJhNmQxMGRlY2Y5YmFjZTBiNWJiN2FjMTIxZjkgcmVsZWFzZTI1LW1haW50Cis1MjMzNSBiOTRiY2I3YWVkM2RkM2FhN2EwYzllN2EwMmRkODg4OWVmOGQyMDBlIGxlZ2FjeS10cnVuaworNTIzMzYgM2JjNGE5NDAxYTExNjE3YjU2NTc2MmZiZDAxMGZmNTMwMjhkNTVhYiBsZWdhY3ktdHJ1bmsKKzUyMzM3IGRhZTc0YTgwOTRkOTBhM2IwYzUyNjlmZTY2MWVhYTAwNWIyY2ZiYjggcmVsZWFzZTI1LW1haW50Cis1MjMzOCBiYjM1YzU1YmM0NjcwYmQwZGViMjk1NzZlMTljNmY4NWRkZjAyZjhkIGxlZ2FjeS10cnVuaworNTIzMzkgMGY1MDVlYzhiOTdhYTIxZTBmYWExNmQ0NDBmNDY5MGY3M2Q1MWUyNSBsZWdhY3ktdHJ1bmsKKzUyMzQwIDQ1ZWZlNDM1NmI2MWVkYTAzMDk2N2YxMTk5Nzg0YThmZjRjMDliOWMgcmVsZWFzZTI1LW1haW50Cis1MjM0MSBjMDA2ZDIyNzk0OGRlZWQ0OWRjODFlMTNiMDYzNTZhMmUwNjk4YzE4IGxlZ2FjeS10cnVuaworNTIzNDIgMDVjMGNkMjdhYmNhMDg2NjEzNDBjYTdjZTgwMzQzY2Y3YjliODYwMiBsZWdhY3ktdHJ1bmsKKzUyMzQzIGRlODhjMzYzZDYyMjM2Mjg2MzMyOGUyNmUyYmEzMmFkOGMyZDJhMjMgbGVnYWN5LXRydW5rCis1MjM0NCBhMjlkMTAwYzc4MTUzYzEwYTJhMjRhZTcwYmE4YTk1YWU4OTI2N2MxIGxlZ2FjeS10cnVuaworNTIzNDUgNTYxNWVhYzhhYTc5NzZmY2U2NjYyZDg4NDY2YzQzYWJmYzNjNDVlMiByZWxlYXNlMjUtbWFpbnQKKzUyMzQ2IDJhMWE1ZGMyNTVhZGM5MmI3MTE0ODY4MTU3NWExYWJjMWY0OTE2NjYgbGVnYWN5LXRydW5rCis1MjM0NyAxZTU1NWYwNDhlM2Q0YmJlMGI2MzBjOTQzMmM0MzY1ZWI2YjFlOTYyIHJlbGVhc2UyNS1tYWludAorNTIzNTQgZmE5NmJmZjkzYmNhZDAwYWQ3M2Q2OTI3NDhmODY4MzkwMzJlMWU1MCBsZWdhY3ktdHJ1bmsKKzUyMzU2IGJmOGRhZjRhNmU3MWExZWEyZTVkZTUxZmM2NDhkZjc1ZTVhYTg4NDEgbGVnYWN5LXRydW5rCis1MjM1NyA0NjljMmQ2YzgxNjViMjU2NzUzMzVhYTVlYTM5ZTg5MGMzOTcwYWFlIHJlbGVhc2UyNS1tYWludAorNTIzNTggODUwNTA4MzkxZDQ2YmRlNGUwMDE3MmE0OTQ5MWMxYWIyOTYwMGE4MyByZWxlYXNlMjQtbWFpbnQKKzUyMzU5IGUxY2IzMjY0NWY3N2UxZjk3ZWY5MTc3Y2MxMDExMWQ3MTgwZWE2MGUgcmVsZWFzZTI0LW1haW50Cis1MjM2MCA3YzdlYjE5MGIyNjYzMGZjNjJlNjRlODk1NTA5NTI2ZGI2YzNmMjU1IGxlZ2FjeS10cnVuaworNTIzNjEgYTY1MTFlODI5N2YwNDhjNTMyYTg3NDk1NmNlZGE1NWZmOTU4NmVjYSByZWxlYXNlMjUtbWFpbnQKKzUyMzYyIGZiNWRiMTJmMDI2NzYwMjE5YzhhYzYzNDQxNTJjNDYxNjlhNDUyMTMgcmVsZWFzZTI1LW1haW50Cis1MjM2MyAxNDUxM2RiMGQ2MmQ1MGZmMjJhMjM3NjFlMzNiOTM1ODc3ZmYyZWZhIGxlZ2FjeS10cnVuaworNTIzNjUgNTJmZTBlY2Y1NWMxYTE4MTA1ZmY1YzJkNzc5YTg3MWY3ZmNhZjU0OCBsZWdhY3ktdHJ1bmsKKzUyMzY3IDQwNTBmMjUzYTZmOGE1ZjAyNzkzODhjYjZlYTEwNzk5YjY3OWQzZDcgcmVsZWFzZTI1LW1haW50Cis1MjM3MiAzNDU1NTQyMmRjNDVmODhmNTI5M2ZiOWZiYTMxOWI1NTllODc2YWE5IGJjYW5ub24tb2JqY2FwCis1MjM3NyA0OThjZjRiMDlkOGFjMDNlNDVmM2EwZTI2YTczY2I5MTNmZTc2NzgwIGxlZ2FjeS10cnVuaworNTIzNzggNjYwOWYwMjA2NDlmMGQwY2Y2NTNlNjllOGExOTA2YTg2YTNjYTRkMyBsZWdhY3ktdHJ1bmsKKzUyMzc5IGExYTY3OTEwNTI4ODZjODkwYTBmMTE5YzUyNWMzZDI3MThmMjdjNGMgbGVnYWN5LXRydW5rCis1MjM4MCBiMWQ3MDhjMzNlYWI0MjkwMjYyZTk2ODUzY2ZiNDM0NWY5ZTA3MzBhIHJlbGVhc2UyNC1tYWludAorNTIzODEgZmIwYzZhNjdhOTM5ZThhMmVhMjc3OWY3OWUzMmMzYjc2ODljMzdlNCByZWxlYXNlMjUtbWFpbnQKKzUyMzgyIGVlNjZhMTVhOTAzMDIxY2EyNTA0YTMyMzI0ZDNkY2JjNDZlYThhOWIgcmVsZWFzZTI0LW1haW50Cis1MjM4MyA1OTJhYzkzNTMyZWZkZmE5YTQwZjQ3Yjk2YjFjMTIzMWQyZWFlMGU1IHJlbGVhc2UyNC1tYWludAorNTIzODQgMTA0MzRkMWI0MjY2MWI3MDAxODhjODJlZmMzNTA3MWY4MjRjYzFlNCByZWxlYXNlMjQtbWFpbnQKKzUyMzg3IDQxMGMxYzc4ZWQ1MWUxMmRjM2RlOTU3OTU5ZjZiNzk3MGMzNzk5NGEgbGVnYWN5LXRydW5rCis1MjM4OCBlMmRmMTM1NjM0OWYxNjhiYWViYjMzNWUyMWMxNTgzMzMwNDNkNGRmIGxlZ2FjeS10cnVuaworNTIzODkgMDUwOWFiMTRiMmQ5N2NlZWVmZTI1ZTk2NDMyZjRlMzczZWFhYjgyZSBsZWdhY3ktdHJ1bmsKKzUyMzkwIDE4YzEyZDM0MjE0MzgyZmFmOGM1ZmE1Y2IzYzYzNjQ5MDUzODQyYzYgbGVnYWN5LXRydW5rCis1MjM5MSAxOWRlMzE2NDkyZTczOGNlZWRlY2I4ZWM1ODA4NDc1MTM2ZGM2NmMwIHJlbGVhc2UyNS1tYWludAorNTIzOTQgM2I4NTMzMzQyOGY5ODZkZDZkOTFkNTdmMDdjZTUwNzIxYjAxODViNSByZWxlYXNlMjUtbWFpbnQKKzUyNDA1IDg2ZWE4OGM1MjA1YmY1MDQ1MWEzMjMwZjY3MzVkY2MyZjIzYzk2M2EgcmVsZWFzZTI1LW1haW50Cis1MjQxNCA4MjZlODY3NGExMWQ1ODk1N2ZiYWVhZGRlOGMwOTY0ZWVjMDdmMjMxIGxlZ2FjeS10cnVuaworNTI0MTUgYTBkOWZjZjZmMjE1M2Y1Mjk3YTE0YmUyZTE5N2RiOTVhMTcxOTg5ZCBsZWdhY3ktdHJ1bmsKKzUyNDE2IDM4NGVmODdmY2MyNTc5ZWE2ZDVlOWI3Nzg1MDJhMGM0ZmY4YzUxMjAgbGVnYWN5LXRydW5rCis1MjQxNyBjNTQ0MmI0MjRhODY5Mzg1ZTAzM2NlN2MyOGZlN2FhNjAyN2RmYTZjIHJlbGVhc2UyNS1tYWludAorNTI0MTggNTAzMGZiNGE0MDBmZWJiOWFjOGNkNDc5MmI4Njc2YjhlNTk4ZDk1NSBsZWdhY3ktdHJ1bmsKKzUyNDE5IGU5Yzg0NGM0ZDFhMWM5NTg3ZWZkNzZkOWUxMWI3YWQ3OTdhYWVmY2IgcmVsZWFzZTI1LW1haW50Cis1MjQyMCA3NDlkODU1ZWUzNTcxYWI3ZTU3YzJmNDkxOGQ1NTEwMjFjZmE2M2MxIGxlZ2FjeS10cnVuaworNTI0MjEgMTIzYzE0ZWQzMDhhMTUzODFkNDBiMDgzOWY1MzdkMDhlZWZlOGNiNiByZWxlYXNlMjUtbWFpbnQKKzUyNDIzIDRlY2YxNjYyNDQ5ODQ0ZTZlMGNkYzk5YjQ0ODE3Y2QzZDlkOTFjYjAgcmVsZWFzZTIzLW1haW50Cis1MjQyNCA4Y2QwYjcxMTNhNzFhMDU1MWUzODMwY2ZmZmZhNThhMDE4MTZhMDRmIHJlbGVhc2UyMy1tYWludAorNTI0MjUgYjIxNDI3ZmYyNjQ3NWY5YzdmNGE3MDFkYTMyNGU5NTFjMmIxNjJmZSByZWxlYXNlMjMtbWFpbnQKKzUyNDI2IGNkZDM0NzZkMWIwNmIzYjRlY2M4OWVkMzVkNWI0OGI2ZGZiNjAzYTYgcmVsZWFzZTIzLW1haW50Cis1MjQzMSBlODJlNjk2YzAzZGM4YWQ2MzZhNzMzMTc1MzMyZjI3YzVjN2M2N2I3IGxlZ2FjeS10cnVuaworNTI0MzIgMDUwMDQwY2JhMjZhNDVhODE5OThiZDc5NWEyYTZlMmQwMzM0ZjU2YSByZWxlYXNlMjUtbWFpbnQKKzUyNDQ2IDkxODY1OTgyOTZjYjA5ZTE1OTU1YTU3ZDE4OWEyNzFmOWQ3ZTg5ZWQgbGVnYWN5LXRydW5rCis1MjQ0NyA5NDczNjZlMTMxZmRhZTIwMTJkOGY5NmIyZDI5ZmY5NjFiNjI4Y2E1IHJlbGVhc2UyNS1tYWludAorNTI0NDggZDc4YTdhNjA1NjE5Mzk2OGU4ODU2Y2M4MjdkODNkMTEzOWY4ODRlNCByZWxlYXNlMjQtbWFpbnQKKzUyNDQ5IDE1ODZmYWIzYzg0OGI5NDQ3MjdlMWM0ZmRkOTdhZmIzOTYzYjY3ZTIgbGVnYWN5LXRydW5rCis1MjQ1MiAwYzFjYjkyZGFjOTdlZjM5ZTExNWY5YzU5Y2EzMzQ5MzllOGJjOGU4IGxlZ2FjeS10cnVuaworNTI0NTMgMGU4M2Y4YzVkNzBhZWMzNDczMWIwYjhlMWZjNWE3MGFjZmM2MjgyMiByZWxlYXNlMjUtbWFpbnQKKzUyNDU0IGMwZjU2ZjI0NjFmNTI5OGZiYzEzOTE0Zjc5ZWEzYzcxNDZmZjg3NjkgbGVnYWN5LXRydW5rCis1MjQ1NSA1ZGM0NzMxNjUwOGZiNGU4YmYyNmJkMDJmZGE1NWUwZWRhYTAxZTQ2IHJlbGVhc2UyNS1tYWludAorNTI0NTYgMDE1Zjg5YTczOTI5ZTRiYjNjZDJiNDdkZDAwMjFhMjJmMzU4NDRlYyBsZWdhY3ktdHJ1bmsKKzUyNDU3IDM0ZGNiYzc0NjI0M2U2N2MyMTZjYzljOWFhNDhhZWNiYjAwNjliMTggcmVsZWFzZTI1LW1haW50Cis1MjQ1OCBlNWNiNGNiNTY1NDFiOTdjYjAyN2VkYWEyZWJiNGRiYTM2YTczZTY0IGxlZ2FjeS10cnVuaworNTI0NTkgZDNkYmIzMjZmZmJhYzc5YTU3YzM5ZjZiNzVjYTk1NGU0ZjY0YjViMyBsZWdhY3ktdHJ1bmsKKzUyNDYwIGFkNGM5YmExZGI1N2ZkMWUwMmMwNGQ2Njk3OTFmYjk3ZTZiNWYzNTEgbGVnYWN5LXRydW5rCis1MjQ2MSA1YTEwNmI0YmNkZDI4ZjIzYWMzYmY5NDlmY2UxOTBlMDBhOTdlMTk2IGxlZ2FjeS10cnVuaworNTI0NjIgZTU3ODJlMmE0MTJiYTE4ZTMyYmI2OTZjNGNlOGIxMTUzNGNmMTc5YyBsZWdhY3ktdHJ1bmsKKzUyNDYzIDdhZjk0YTI3MjNlY2IxMzRmZmUwYjBkYmIwM2FlYTFhZTkyMzVmN2EgcmVsZWFzZTI1LW1haW50Cis1MjQ2NCAwZDUxNzZlMmJmZTRiNDRhOTFlNzRiMjM2MWQyZjM5MzM4NWMzMmEzIGxlZ2FjeS10cnVuaworNTI0NjUgZGRiMWRiNTY1NjA4OTNjNGI3YTU2MGU1OTAzNTVhOWU1Y2U2ZTEwYiByZWxlYXNlMjUtbWFpbnQKKzUyNDY2IGU4NjdiNTk1MDc5ZTkyN2U0ZjJjZWRmOWEwYmE0MmI1MTE3OTA1OWMgbGVnYWN5LXRydW5rCis1MjQ2NyBiNTZiNTYyZTNhN2I3YzgxZjEwZTE2OTZhZmFjZTE5ZDIwNTJmMmM2IHJlbGVhc2UyNS1tYWludAorNTI0NjggNzYyZGNhZDcyMGI1M2VhY2YxNGE3YzM3MDZmNzJlZTU5YzE1ZDBiZiByZWxlYXNlMjQtbWFpbnQKKzUyNDY5IGUyZTgwYTAxNjk0NTIyMDlhNmU0ZDIyYmM5Y2NhZDIwMDFlZDQ3YmIgbGVnYWN5LXRydW5rCis1MjQ3MCBjNWE2YWNlM2ZjN2ZkMjU0YjIzOGQ3YmMwYjRhMjI5OWM0MTJkMTk2IHJlbGVhc2UyNS1tYWludAorNTI0NzEgNThkYjk2OGQxNDQ4MmU3Yzk0NTViYjJiNzc2ZmYyZDZlMGQ3OTI1YSByZWxlYXNlMjQtbWFpbnQKKzUyNDcyIDZiOTFjMGRjZWE1OGE2NjZiNzkxMWNmOGRmMGM4N2MwZjc4NmQ0MGMgcmVsZWFzZTI0LW1haW50Cis1MjQ3MyA4ZjlhZDM1ODEzNmYwMzkxNDI5ZDQxYjVmYmFkMzY2YjYzMDBjMmI0IGxlZ2FjeS10cnVuaworNTI0NzQgMjljMDFlNjJjZTZiY2FlNjgxNjkwYzI2Y2QyYTUyZTNjYzE4MWNmZCByZWxlYXNlMjUtbWFpbnQKKzUyNDc1IDE5NTU1OWM1YmFjZGYwNmMyNjJmNjBkZmVmZjQxNzEzODdkOGFlNWEgcmVsZWFzZTI0LW1haW50Cis1MjQ3NiBlM2I5YzYzOTc3MjM0ODJjZDFhZWI5NjNkZDQzYmVmYmMyMDVlZmUyIGxlZ2FjeS10cnVuaworNTI0NzcgZjQ1YjJmMGM1NDJmYzNjMmI4YWVhNzVlOTY2ZTIyMGY1Zjk2MGNhNiByZWxlYXNlMjUtbWFpbnQKKzUyNDc4IDc3MGM3MThiYzk3ZTAyYTJiM2NiMjdlNGRiOWNkMzUwYWUxZGQ2M2EgbGVnYWN5LXRydW5rCis1MjQ3OSBiYjBkYjQ1ZjIwZWEyYmMzNzdmYjQ2ZWFiNTQ3NmRlMjVlMmYxZjIzIHJlbGVhc2UyNS1tYWludAorNTI0ODAgZmI5YTdiMjg4ZGNlMjk0MzU1NmUyNTU3M2QxMDdhMmE2YjA5MWNjNCBsZWdhY3ktdHJ1bmsKKzUyNDgxIDlkNjkxZDM3NTVkMGRlNGUxZWIxMjc0OWI5YzMxZjdkOWFmNjk3YWQgbGVnYWN5LXRydW5rCis1MjQ4MiBiOTExNjZlOGQzOGRiMGM3MWMzZWQzOWU2Y2Y5YzlhNDMzZTdmMzdhIHJlbGVhc2UyNS1tYWludAorNTI0ODMgOThlOTAwNDk5MDQzNDE1NDBjYjI5MDA0ZDlkM2U0OTk1NGRjYjZmYiBsZWdhY3ktdHJ1bmsKKzUyNDg0IDg2MjQ5MDlmNTAzMWY0MGQ5MjU1ZjdlNjc3ZjhkNzA5MTEyOWRmMTMgbGVnYWN5LXRydW5rCis1MjQ4NSA5ODhkOTVmZjFmZGI3MmFkMDU3YzgwN2Y4NzA2YTczOTBiNmYwYTFmIGxlZ2FjeS10cnVuaworNTI0ODYgMTg4NzFhMTBmZmMxZmE1NGZjYjIwOWY4MmE1OWYxNjVmMjIxODIxOCByZWxlYXNlMjUtbWFpbnQKKzUyNDg3IDQzYTgyNjQ2N2FkM2NlYWJmYjQxNDRhNzRhMDUyMDEzZTFiYzk1MGUgbGVnYWN5LXRydW5rCis1MjQ4OCA1ZDVmMTg0NDM2NjRkMTU3MjJkMmE3NmZkNDQ5MDEyZDRhOTE1ZTU5IGxlZ2FjeS10cnVuaworNTI0ODkgZGMxZTQzNjE3OTcyODIyZjI3ZDE3YmJjMjc3NzFhNWY0ZmFmNzdiZSByZWxlYXNlMjUtbWFpbnQKKzUyNDkwIGQwYmQ4YThhZmIwMTAzYzZjMTNjNTNjNWY1ZmI4MTk3YzRhMTA5MTQgcDN5aworNTI0OTEgMWNjZTA1MjZkOWIwYTUzZjRmZjk1NzEzZGRlMTUzZGM3MGRhZTJkYyBwM3lrCis1MjQ5MiAyMTkwOGM3MGQyNjRiY2Y5MzI3Mzg4MzljNDNmNGExM2Q2MGIzNzU2IGxlZ2FjeS10cnVuaworNTI0OTMgMTNiOGFkNjc5ZGVmYzc0MzRiMWJhMWM1ZTMzYTFmYjIzNDk4MDhmYyBsZWdhY3ktdHJ1bmsKKzUyNDk0IDUxMzM5ZDM5YTU5NmFmZjAyYWQxNWMzODg0NjdhYmQ3MWIzNjEwNTYgbGVnYWN5LXRydW5rCis1MjQ5NSA2OTcyOGE3ZDIzMTIzOWNlYzUxNTBlYjdiMTVkYmY2ZThjNzViNTEyIGxlZ2FjeS10cnVuaworNTI0OTYgN2QwYmRkNmUxYzQ2OGIyYjU2MWE2MzU1NDNiOGZlMmZhN2IzMTAxYyBsZWdhY3ktdHJ1bmsKKzUyNDk3IGMzODFmY2Y5ZDEwODFjNjU1ZDhjNjZlOTUyZjlmZmUyOTdmODkwZGMgbGVnYWN5LXRydW5rCis1MjQ5OCAyZDVhNWRlZGQ5NzU5NjgxZTllYjIzYjFiOTc1ZDQyODc5ZmY4MDFlIHJlbGVhc2UyNS1tYWludAorNTI1MDAgNGM1M2IyNDNjMzkyMmE0NTQzMTVjM2VlNTc2YzRmMjA3ZGVkZDEyOCBsZWdhY3ktdHJ1bmsKKzUyNTAxIGM1OGQxYjk2OTg0MzhlNmFjMGY4ZjRiZDAxNGJlMDVhNmE5NGUyNzYgbGVnYWN5LXRydW5rCis1MjUwMiA3OTYzMDRlZmEyNjhjMDVkMmUzZTk3Zjg4YzYyMDhkZDU3NmZjMzMxIGxlZ2FjeS10cnVuaworNTI1MDMgNjFlNGI1OWFkYTBjMjllZjkyNGQxMWE4NjJmMGVmNTYyMzMzYjExNCBsZWdhY3ktdHJ1bmsKKzUyNTA0IDM2MDg2MDVhNzRkNThlNTZlYThhMmE5ZTNiMTU4MmI1Nzg3N2NhYTcgbGVnYWN5LXRydW5rCis1MjUwNSBjNGU1ZTUzYmE3M2YzNThiOTg5NDAxY2YzNDczYmQ0MTZlZWYwNDc1IGxlZ2FjeS10cnVuaworNTI1MDYgMzIxYzA3NWY5NWNmZGFjN2QxZTE4YmIwNTFhZTM4MGZkYmJmMjI1YiBsZWdhY3ktdHJ1bmsKKzUyNTA3IGExODYzODMzYzRlNmY3MGFjODkyODY5OTY1OTgyMDdlNzljZDFmN2IgcmVsZWFzZTI1LW1haW50Cis1MjUwOCA0YzYxZjQwMGNlMzBkMGNiOWY4NTZjMGI4ZjE0MzRlOGVmZmFkNTE0IHJlbGVhc2UyNS1tYWludAorNTI1MDkgMzgwYTM1ZDc4YzYwODk2Yjg2OWYyNzBlOTBjZDE5MWQxYTBjNTRhOCByZWxlYXNlMjUtbWFpbnQKKzUyNTEwIDlhY2MxNzc1ZDU3MTRiYmZlMjE5MDNiMTRlZjU2ZmUyZTMzYzFhMzUgcmVsZWFzZTI1LW1haW50Cis1MjUxMSA2YTY0NjllMjk0ZTcyZmNhYmM5YTQwYTM1OGVhY2EwODdmMTVhZGE0IHJlbGVhc2UyNS1tYWludAorNTI1MTIgZDAyMGUyZjcwOGJlODI5ZjM1OTdjNDFlODg2MmMyOTRjMTkwM2Y4YyByZWxlYXNlMjUtbWFpbnQKKzUyNTEzIGRlMjYxZjc2M2I0Y2MwNDk1OTA0N2ZjYWU0YjlmNjAyZjU2MzFmYmIgbGVnYWN5LXRydW5rCis1MjUxNCA0ODFiYmE0MWY5ZjQ1MGUyNjVmMWE5MTcyYTBiNDZiNmQ0NDljMjM2IGxlZ2FjeS10cnVuaworNTI1MTUgZDIxZGQ4Y2JjNzE2MTY3YTA0MTZjODczNjk0YjM2NTJjY2M5ZGZlMiByZWxlYXNlMjUtbWFpbnQKKzUyNTE3IDdjNDA1ODY4MTIyNDk1NWRlNmFlYTJmYWJhNGExYWFmMjMzYzE5ZTQgbGVnYWN5LXRydW5rCis1MjUxOCBkMjQ1ZWZjN2VjODkwMDQ4YWVjNzFiZWM5Y2NmMTQyMTRkODNlYTVlIHJlbGVhc2UyNS1tYWludAorNTI1MTkgNmE4NjBjODFhYjdkMDgzOTgyNzhjN2NhNmQ2OTYzYmU0MzZkMWVjOSBsZWdhY3ktdHJ1bmsKKzUyNTIwIDRkODMzZmNhMzY3MDJjYmVhYzQ3MzYxNjAyMzQ4OGQ5MDdkMWU4NjQgbGVnYWN5LXRydW5rCis1MjUyMSAyYTFlYWU2YzBlYjg2MmE1YTg0ZGJlNTAwYjIwYmRjNTJhODRjMTdkIGxlZ2FjeS10cnVuaworNTI1MjIgYTcyZDk3MGMzODRiZDEzNTk0YzU2MzE1YjhhNWUyYWIzZWFlYTQ3OSBsZWdhY3ktdHJ1bmsKKzUyNTIzIDNkM2YxMjdkM2UwYzc5YmU4M2ZiNTBiMmNmZjM1MGY3MzBmZTBmN2MgcmVsZWFzZTI1LW1haW50Cis1MjUyNCBmZDhhNWY5MjVkNGQ1MTM5Y2UyNjIzNzIxMTNiZmRmMTMyMjVhNjkzIGxlZ2FjeS10cnVuaworNTI1MjUgZWQyMmNhOGY3OGZmMDNhNTMwYjBiZmQ1MDYzM2ZkYTRkYTkwZWRjZCByZWxlYXNlMjUtbWFpbnQKKzUyNTI2IGM3ZDc3OGRhMTYyYzkyMGZhYWVjMmIzZTEzZmI4OWVhMzU1MTMxMWIgbGVnYWN5LXRydW5rCis1MjUyNyA5NjYzMTAwYzk1Y2EyZDI2MTIxNzE1NGY3NDM2NGEwZTdjNzAxYWVhIGxlZ2FjeS10cnVuaworNTI1MjggN2M0NDE0NDcxNGY2OGY5MmE3YWI3NDIzM2Q0NDUxZjY5OWM0YjhkNSByZWxlYXNlMjUtbWFpbnQKKzUyNTI5IGUxNjgwMGFjMWVlYTE0MWYwZDIzZTQzYzMyMDNkNTMwNDBhZDgwOWMgbGVnYWN5LXRydW5rCis1MjUzMCA4MjY5NWU3MzY4MjNmMDI4NDZlY2VjMDUwN2NhMTg0MTE4OTJjN2I2IHJlbGVhc2UyNS1tYWludAorNTI1MzEgZjQ5Y2I2MDkwNDI4NzNiNjVkZjhlYjM1NzIxYzdjMzI0YWY4YTlmNiByZWxlYXNlMjUtbWFpbnQKKzUyNTMyIGRhNzljNGU5YTViYmZiNTc0YTJjZjAyZGM3MTAxZGJhMzg5MDMzMTEgbGVnYWN5LXRydW5rCis1MjUzMyA5MzY2N2E3ODViODM0NjYwZjNlNWVlMmQ1MGJlM2IxMjViNWJmODc2IHJlbGVhc2UyNS1tYWludAorNTI1MzQgYzY3NzRlYjNhMDY3MzY1ZmM5ODk2NDI0N2NjOThiOGMyZjk5MjY5NiBsZWdhY3ktdHJ1bmsKKzUyNTM1IDlhYjdhNzczNmNhMDVkMzUyYmE5OThkMjVlYjM0OWJjMGZhZTViN2YgbGVnYWN5LXRydW5rCis1MjUzNiBiZjc4YmU2M2YyMGQ1NmJlNGU4MDNiNzJjODQxMDA0ZmMzMmFkN2U1IHJlbGVhc2UyNS1tYWludAorNTI1MzcgZDlhOGQ0ZjFkNjUxNGM3ZmU5NDczNzY1MzFiMDc2YWM0MjJiYWRlZSBsZWdhY3ktdHJ1bmsKKzUyNTM4IGY1NmIyNTE2ODE0MmM5NDU0ZGQwODllOTc3NTljOGQwODE3N2E0MzQgbGVnYWN5LXRydW5rCis1MjUzOSA3Y2U4NzJiZjAwYTNmOWRhMTRjMDVkNTQ2YTE1NTc4MmZjODEyNGNiIGxlZ2FjeS10cnVuaworNTI1NDAgNDE0ZWMyNjJkNjA4ZTRkYWExY2QzOGQ1NDBjZGYxMDExNzFhOWYxYyBsZWdhY3ktdHJ1bmsKKzUyNTQxIDhkNmQzMTViMmFmM2I5NWZhYTY1ZDAyNjU3M2UzZDZjM2NhYmE1YmIgbGVnYWN5LXRydW5rCis1MjU0MiBjYTNkMWQzYzRkOGMyY2YzMmY0YTc3NzgxMTMzNzQyYjg2ZjNjZGVkIGxlZ2FjeS10cnVuaworNTI1NDMgYzM3MDdkYTgwYWVmMzllOTQ3YjhmZGIxZmQ5YjJmMDMzMDVhNjMxYSBsZWdhY3ktdHJ1bmsKKzUyNTQ0IDEwMDczMjhmOWRiNTE0ZWVjZDFiOTFlZjZiOGFhZmFlM2M0MWNkZGYgbGVnYWN5LXRydW5rCis1MjU0NSA3NTUwNjgxMGNiYmY0Y2MwNWFjZWM3OGZiZmU2MWIxYjliNTg1ZWQ4IGxlZ2FjeS10cnVuaworNTI1NDYgZmZjYzY5NmUxZGEzYzI0MjhjNmRlMTYwMDE0M2ZlZGM4NDM0MDYxOSBsZWdhY3ktdHJ1bmsKKzUyNTQ3IDBkMGFlODRkZDFiN2FlYWViODEwZjYwZGNmOTMxNGYxMTkwZjBjMDIgbGVnYWN5LXRydW5rCis1MjU0OCAxNzE1ZTZhMGFlZTlhZDBmZDc5ZmYwMTM0M2JmODE2ODkxODRkOTM2IGxlZ2FjeS10cnVuaworNTI1NDkgYzVhMmY0MzFjNjk4ZWYzMGY0OGZjMWZlNjQ5Y2U3YjRiZjZiOTU5OCBsZWdhY3ktdHJ1bmsKKzUyNTUwIGE4YTZlMmI4NGJiYWY2OGQ0N2I5MDU2YmI5NGI5YWQ3NTFlZWViMjIgbGVnYWN5LXRydW5rCis1MjU1MSBiODg1MGFlYzA0NjZmZmVkMzgyYzVmZWJmZjYxYmFkNDIzM2NjMTcyIHJlbGVhc2UyNS1tYWludAorNTI1NTIgYmM4ZmZjM2UzY2RiNGU5Y2Y1OWJiZDZkZmNhNTMwMTMxMjIzOWU4NiBsZWdhY3ktdHJ1bmsKKzUyNTU1IGI4MjA0MDY4NTJhMGE5Y2QwYmU0ZDkyYjNkYmY2M2U0ZTQzNGM4NjIgbGVnYWN5LXRydW5rCis1MjU1NiAzMzg0MGM0MDcyYjc0NzQyMWZkNzQ5MDc4ZjNlZjc5MDk1ZWI3MzNjIGxlZ2FjeS10cnVuaworNTI1NzIgMWFiY2ZlZmVhM2VlYTY5NzMxODJmMzFkMzZhOGI5NWZjN2JlNDhmNSByZWxlYXNlMjMtbWFpbnQKKzUyNTczIDNiNmZiNTQzOWMxMDYxYTk0MTQwMTI0NTA3NmMzMTViZWFmY2M3ODcgcmVsZWFzZTIzLW1haW50Cis1MjU3NCBiNjc1NTNjMTRmYmNhZTFlMjA0Yjc1NmRjNGNjOTJlMWQ0YWRjN2M0IHJlbGVhc2UyMy1tYWludAorNTI1ODggYTNiZTQwYzA3MjUwMzAzN2I2ZWZmZjVhMzFlZThmMTBiMzZkZTQyNCBsZWdhY3ktdHJ1bmsKKzUyNTg5IDg3MWIwNWQyNTJiZTBhYTExZGFmZTE4NzU0YWQxOGJjYjI2YjBkNjcgcmVsZWFzZTI1LW1haW50Cis1MjU5MiBhZTQxMWZlMWVlYzAxYjJhMjUyNzEyYjI0MTA5MWQzMThiNzQ5YmE5IGxlZ2FjeS10cnVuaworNTI1OTMgM2U0ZTBiZTQwZjUyMDkzODU3NmU3Njc2ZmYwNDU3ODMwYjY2YjM1MiByZWxlYXNlMjUtbWFpbnQKKzUyNTk4IGZmNjc4NjY5YWE2ZTEzMWVjZDJhZTg3ZjAyMzExNDhlZDBlNWE0NzUgbGVnYWN5LXRydW5rCis1MjYxOSA1MzBkN2ViMGM2YzQ4ZjFkNTBhZDU0NDBlNWRhMGUzNWU4MDg0MGFjIGxlZ2FjeS10cnVuaworNTI2MjAgNmRmNGE5MTQzZGRmODgwNGVlOTU4ZTM2N2Q1MzU3ZDQxN2I5N2QyNyByZWxlYXNlMjUtbWFpbnQKKzUyNjIxIGViYWYzNDdkNDJmYjE0ZDczYjg5YmI5ZDJhYTA3MTkxZmM3MmRjMjYgbGVnYWN5LXRydW5rCis1MjYyMiAwMDNkODNkYTk5MzI2MjUwMmIxODg3YzBiNzNlYjM2OGY4NGVkYTVkIHJlbGVhc2UyNS1tYWludAorNTI2MzAgMWYwNTVmY2I2Y2E2NjBiZDdhM2QwZDk4N2JjMTA1ODExNWM3ZGE1ZSBsZWdhY3ktdHJ1bmsKKzUyNjMxIGQ3ODVjMjlmNTM0MDM1YmUzMDJiMGJkMjU2MjM1ZjQ5MDk2ZTMwNmIgbGVnYWN5LXRydW5rCis1MjYzMiAxYTBmNDY4ODNlYTVmMGYxMjEyMTNmMzIzYzU1OGY2YjM3YjU5YjY1IHJlbGVhc2UyNS1tYWludAorNTI2NDQgY2JlMTMzZDcyZTM5NzJkNzFkMjNmZjBhNWU3YjQ4NTdhMGM1NWYzYyBsZWdhY3ktdHJ1bmsKKzUyNjQ1IDU1MzFmNDYyMzJiN2FmNGJhNDU1ZDhhN2FmNjQwMmY1ZTllNjQwNjAgcmVsZWFzZTI1LW1haW50Cis1MjY0NiAyNDQ5OGQ0MzEyNmNiODlkNzJlZjdkMzI2NzI1NWM5NWRkNzc2ZGJlIHJlbGVhc2UyNC1tYWludAorNTI2NDcgZWQyYWM4MDg0ZTA0ODUwZDVjMDE3YmUyNmU3MjE4ZjZhNmNlZjY5OSBsZWdhY3ktdHJ1bmsKKzUyNjUxIDFkZTVlNzM5ZjlmZjU5M2RlOTBhMjNlNjUxMzkzZTg4MWRkOTQxZTUgbGVnYWN5LXRydW5rCis1MjY1MyAzY2MyZWFmMGU1ODE0OTlkYmZmYjAzOTQ3YjliYmUwNmVlNzdiYmRlIGxlZ2FjeS10cnVuaworNTI2NTQgZjg4NjI5OTgyNzBmYmZiYTA4MDZlODgxOTZlODQzM2Q3Y2U5M2RmZiByZWxlYXNlMjUtbWFpbnQKKzUyNjU3IDk2MzNmNTM4Yzk4ZGE2ZWY1ZGMzNDhmMzNmMGNjMDZlMTgzNjY2ZmEgbGVnYWN5LXRydW5rCis1MjY1OCA4ZDY4YjIyNGE4ZjA1OGUzMTM2NGViZDEyZWY5ZmQ1N2E5ZTI5MTY5IHJlbGVhc2UyNS1tYWludAorNTI2NjIgNjFjZDhjODdjZmUyYzM3ZTRkMzU3N2NhZWY1N2MxYjBmMjkyNGVjOCBsZWdhY3ktdHJ1bmsKKzUyNjYzIDc4Yzc1YjNkM2QwYmIxNDIwMTZmNGE0NjQ5Njg1Y2NhNzhhOWNhN2YgcmVsZWFzZTI1LW1haW50Cis1MjY2NCBmYTkwMjlhNDFjZThhYjA5YzgzOTg4Y2RkZjkwZmE4ZGQyMWY2YWIyIGxlZ2FjeS10cnVuaworNTI2NjUgYmQxNjIzZDA0YmZjNDRlMTc5MTgyMGYxZWQ1NTI0ZjBkNGIxODZkNCBsZWdhY3ktdHJ1bmsKKzUyNjY2IDRmOGViYWNlYzVmMDUzNjI4YzhmMjRkMTgyNzIyNzc3M2MwOGY5ZTEgbGVnYWN5LXRydW5rCis1MjY2NyAwMmMzNjZiMmFhYzJjYWM2NWYzMDdmZGVmOGNlYTY4YWYzNTMxZjEzIHJlbGVhc2UyNS1tYWludAorNTI2NjggMGRlYTM3YmNiZWZmNGMwMGQyMWM3Y2MwMDMzZDU3MzIzMDA3OTkzMyBsZWdhY3ktdHJ1bmsKKzUyNjY5IDdiODUxMjA2ZDI0Y2UzNGMzNDk5ZWRlM2MyZjM1ZWUyODMxZTEzOGMgcmVsZWFzZTI1LW1haW50Cis1MjY3MSA3MGM3NTZhYTkyNzNjMjA4NjM3MWM5NTZmNzg0YTcwOTczMGVhMWM2IGxlZ2FjeS10cnVuaworNTI2NzIgMzU3Yzk5NTM3ZTg1MmRkMzM5YTJkYjA2MTlmMTlkMTU1ODRmOWRlZSBsZWdhY3ktdHJ1bmsKKzUyNjczIDU3Njc0MjEyYzM3Y2YyYzk1NjBlNmYyNGVkNWI1ODE4YmE2ODMwMzIgbGVnYWN5LXRydW5rCis1MjY3NCAyNGE1ZGM3Nzc5MzE2NjQ2ZTBkMjBiZjMxMjY1NmE3YjkyYjE5NWE0IGxlZ2FjeS10cnVuaworNTI2ODYgNTI2Yzk1ODRmMjUyNzg2NzI2NzZkMDc4NzU3NTc2NmY2MmU1ZTJjZiBsZWdhY3ktdHJ1bmsKKzUyNjg3IDAyNWIyNGEyNjEzMTRkMTBlYTFkZWViZTY1NmJhMGI3YWIzYzMzYTAgcmVsZWFzZTI1LW1haW50Cis1MjY4OCAwN2IyOWJjZmMwMTM1MjM2OTExZDMxNTcwNGJiNWJlMjE4NzMwNTI4IGxlZ2FjeS10cnVuaworNTI2OTAgNmQ5OTc2MmNkODE4ODFkN2RjYjQzZWU4N2VlYmUyMjlmMDc2ZTczNiBsZWdhY3ktdHJ1bmsKKzUyNjkxIDZjMDY3NzI3M2M1YWJiM2I1OGJlYzZkNTAxOTkyMzhjOGU1OGE5YTQgcmVsZWFzZTI1LW1haW50Cis1MjY5MiBhZDc5NmZlNDcyY2FlZmU0NzE4ZmRlZTVhMWZjY2NlODIwNjE4NzE1IGxlZ2FjeS10cnVuaworNTI2OTUgNzA1OWRmN2MxNWRmODIzMTZjMTg5ZDlhMzU2Nzk2OTQwZTYwYjdlZiBsZWdhY3ktdHJ1bmsKKzUyNjk2IGMzMGM1ODRjYzZhYTQ5NmIxYTk5NWUxMTg2ZGMyZThiYzVkZTQ0ZTcgcmVsZWFzZTI1LW1haW50Cis1MjcxMiA1NjFmZmE3NTdkZmI1YTRjMjI2MWFiNjUzZWEwMDA2ZGRjYjNhNDM5IGxlZ2FjeS10cnVuaworNTI3MTYgNTRmNjIyZGQzYjI2NjY0YTUyYTllMTI2MTIyYmJkYWI0NWM5MTc2YyBsZWdhY3ktdHJ1bmsKKzUyNzE4IDczMjQyNWUzYjkyNzRiNzNmNWY3N2UxZmU2NWUwNDNkY2MzMDM3NmQgcmVsZWFzZTI1LW1haW50Cis1MjcxOSBkNzVjYmUyYjk2MDE5YzkyMDkxYmJjMzc4NTFiZjdjZTgzN2UxNmZjIGxlZ2FjeS10cnVuaworNTI3MjAgMGU1ZjJkMDU0OGViNmM5NjZhNzIxNjhlZjA4OWUxMmUzOGU0NDg5NyByZWxlYXNlMjUtbWFpbnQKKzUyNzI1IDZmMjk3MDkyMmM0NGNkODRmY2M2MGM4NzRlM2I4OGQ2NjYyNDRlNjcgbGVnYWN5LXRydW5rCis1MjcyNiA2MTZhMjA4ZjRiODA1MTQwMWM4YWM0Y2I3MDZjYjE3MjMyZmIxYjczIHJlbGVhc2UyNS1tYWludAorNTI3MjcgMTBhOTc3NGJiM2UzNDdlMGVlN2QwZGRhNjkzZGVjY2M5N2I2OGI3OSByZWxlYXNlMjUtbWFpbnQKKzUyNzMxIDQ0NjBlYzI0ZGFjOTBmOWM5YWI2OWQwZDJkMGNmMmUwZTcwNWMwOWMgbGVnYWN5LXRydW5rCis1MjczMiAzNWNmMTMzYWM3ZjhmMDEzYWE4MWE3OWFhNzIzZWE4N2VkNDQ5NmY4IHJlbGVhc2UyNS1tYWludAorNTI3MzMgMmNmMThmMTI3NjYzYzc4MTYwMmU0OTQ4ZmI1M2IwNjQ0NWQ1NDI0ZCBsZWdhY3ktdHJ1bmsKKzUyNzM0IDYzMzgxMmU4Y2ExYjZhOWE1YWQyZjVlYzA0NmI0MTkxMDkzNDNmOGYgcmVsZWFzZTI1LW1haW50Cis1MjczNiA5MGQzNTU4MjliYmI3ODY4ODU4OTNlMWMwZWEwNjVjYzM5OGJmNzBlIGxlZ2FjeS10cnVuaworNTI3MzcgOWY3ZmM2OGEyMGFlZGRjZWU2YjljZTk1ZWUwNjc2ZTZkNDRjY2I3OCBsZWdhY3ktdHJ1bmsKKzUyNzM4IGJmNGQyMDQ3NmE4NjE0ZTlhMWJkYjM4ZTM1YTFlY2MyYTU5OWQ0NjggbGVnYWN5LXRydW5rCis1MjczOSBlY2JlOTFiNWU0NmE1MzVhODUzNTE5ODFkZDFjZDdlNDBiZGJhOTRlIGxlZ2FjeS10cnVuaworNTI3NDAgNTkxZGFhNTM2MmIyZDQ4YTI3MjEzNWRkZWVhMTUxZjU1OTNmYTk0OSByZWxlYXNlMjUtbWFpbnQKKzUyNzQxIGQ0OWUwZGU0MDE5ZDFmNTVlMDFjYzIwN2M4ZTE4ZWY2OWI5MDg1OTAgbGVnYWN5LXRydW5rCis1Mjc0MiBlZmYxMWU0MzVmNDEwM2E2ZTc1MTcxM2ZjZTY0YmYzYjY2NTYzN2E2IHJlbGVhc2UyNS1tYWludAorNTI3NTMgN2UwY2Y2ZTM2NTBjOGU5M2M0MTVjZTNhZmE4ODZiZTM0YmVkNDJjYyBsZWdhY3ktdHJ1bmsKKzUyNzU0IGY5MWI2ZDg1Y2FiNTYyMmNhNGViMTAyZGUwZWFiNmU2Zjg2ZWY0MTEgbGVnYWN5LXRydW5rCis1Mjc1NSBhMWMwYjUxNGNiNTM5YTA3ODM2OTUzODk2NjlmYzhkMjVhMzU2OGU2IHJlbGVhc2UyNS1tYWludAorNTI3NjIgYjgwYTM2ODg1M2M3NWE3NjBhNjYxOWY4ZjRlMDdiYzVmNjQxMWNmNSBsZWdhY3ktdHJ1bmsKKzUyNzYzIDhhMzY1ZmRjZGM0OGRjZWU1OTY4OWRiMjBkZTVjYjE1OTk3MTYxMjkgcmVsZWFzZTI1LW1haW50Cis1Mjc2NCBiYTU2M2FiN2E1N2FlMmQ4N2Y2ZWRhZDk3ZjA3ZGFkMWVhNTNiYjViIGxlZ2FjeS10cnVuaworNTI3NjUgMjUxNWVjNGI1YjMzNjU2NTFjNThiZjYxODg5MTYxNWE3OGNlOTU0YSBsZWdhY3ktdHJ1bmsKKzUyNzY2IGUyNmM1MTc4MDczNzUxY2JjNGMxYjI2ZDBlN2NkNDFlMzU4ZmZiMTcgcmVsZWFzZTI1LW1haW50Cis1Mjc3NiA3Y2VlOTQzNDk4MWEyYWE4ZmJlN2Q1MjRiMGU0NGZlNjNhNTdiNTZkIGxlZ2FjeS10cnVuaworNTI3NzggNGM2MmM4MjkwZDRmNTgyZjRhNGQzMjFjMDNkNTVkZjViNTRlNWI4ZiByZWxlYXNlMjUtbWFpbnQKKzUyNzgwIDg5ZjJlOGRhMGYwZjllZGQ2MWM4ZjUzNzliMzRjNzIzYThmYzc2ZTYgbGVnYWN5LXRydW5rCis1Mjc4MSBjMWFjOGJkZTVlMTc2ZDM0YThlMmJkZjlhM2JlOTlmYWJhYWMwN2Q2IHJlbGVhc2UyNS1tYWludAorNTI3ODIgNWMwOGRjYjdkMjgwOWY0NGNkNDNiNGJjZTMwYjExMzViMjJlNmM3YSBsZWdhY3ktdHJ1bmsKKzUyNzgzIDc4YzBlNzJmMTZkM2QwNzdmOTIyZTgwMTMzYTQ4OGMwZTI0MzFkY2IgcmVsZWFzZTI1LW1haW50Cis1Mjc4NCAzMjBkZmRlZTg5Njg5N2M1YzcyYzQ3YzM4ZDBiMTYwNDRlMWYyYWRhIGxlZ2FjeS10cnVuaworNTI3ODUgYTA0MDZlOTMzYTgxNzM3ZGI1YWQ2ZjhmODYyZmM0NGUwODIyODE2NyByZWxlYXNlMjUtbWFpbnQKKzUyNzg2IDVmYTVlZjU1OWEyZjEzYjhmM2EzNjZmZjQ4ODIyZmNiMTEzMTJhNTMgbGVnYWN5LXRydW5rCis1Mjc4NyBiODcxZTdiZDgzNTViMjkyMmRjOWI3MjM4MDBlODYzMWVjMWE1NDFjIGxlZ2FjeS10cnVuaworNTI3ODggMGZkYzJiODIxMWY5MmU1NjYxOWU2ZWJlMTdlMzg5ZWY1YTgxOTM0NSBsZWdhY3ktdHJ1bmsKKzUyNzg5IGJlMmY1YjJkNTNiM2JkMjYxYzY5MTczMmQyOGQwN2U5YWJhMGM4MGQgbGVnYWN5LXRydW5rCis1Mjc5MCA0MDE2NmU1MDExZjgxOTBhOGI5MDA3MThhZWZkYjUxOGM5NDZlZWEwIGxlZ2FjeS10cnVuaworNTI3OTEgOWZkMTM1NGRhNmRiNmIyYmU4NmI0N2ExOTU5YTUyODg2YzViYzViOSByZWxlYXNlMjItbWFpbnQKKzUyNzkyIDI3MTEzMzk4MWU2M2UxYmM3OGY4OWU3NzAxM2QxMDBhN2M3OTkxMmMgbGVnYWN5LXRydW5rCis1Mjc5NCA2NGUwYWM4Mzk2YTNkNmVlMjNlMGYzNTRlMDQ1Mjg4NTkwMmVjMjdkIGxlZ2FjeS10cnVuaworNTI3OTUgNjA2ZTFmMGU4N2JkYWQ2Y2QyNDM1OTVlMWJjYjE0MDg0MzZmYTM4MCBsZWdhY3ktdHJ1bmsKKzUyNzk2IDQyZWFlZDhkMmI0NTQyYWZmY2VmMDEwMzViN2EwMzk1Mjk5ODE2NzIgcmVsZWFzZTI1LW1haW50Cis1Mjc5NyBmM2E2MzE4NTc1NDQ3NWNkNTViMDg1NjliMThhZDU2ZTNmZmZlMjFkIHJlbGVhc2UyNC1tYWludAorNTI3OTggZDdhYzNiOGYyMTM5MjE5ZWY4ZDI2Njc3N2RhYjVmMThiZDQ2NWMzMyByZWxlYXNlMjMtbWFpbnQKKzUyNzk5IDhmZGE1Yzg2Y2MxNmNlYTg5MzExNGM1Y2YwNTdhZjg1NmFiMTg5N2QgcmVsZWFzZTIyLW1haW50Cis1MjgwMCBjZjBlNjg1NjI2MDRkOWEyYTM2NjNiZDMwZjJkM2NhMjczMzdlOTc4IGxlZ2FjeS10cnVuaworNTI4MDEgY2U0Y2NmODdmNTZlNDYzOTRlYmYwZjMzMjljZTY1ZTE0NzIzNzE1NCByZWxlYXNlMjUtbWFpbnQKKzUyODAyIGM3YThjYjA5NWM0ODUxZjgxOTBkZGMxNzQ3YjA1ZGMxZjk3Y2VkOTIgcmVsZWFzZTI0LW1haW50Cis1MjgwMyA5NWFlNzQxZTI4N2JhZjdiNzA5MWJhNWU2MWMyYmYwMGIyYTY1OWU3IHJlbGVhc2UyMy1tYWludAorNTI4MTEgOTljYjM4MzUxZmZjNDBiYmMzMDFmN2MzY2YxM2M1NWRiZWJkMzI2YiBsZWdhY3ktdHJ1bmsKKzUyODEyIGFiMTg4NWYzNDQzYTdkYWIzYThlNDk0ZGZiNGY4MTdhYmJlOWQ2YTcgcmVsZWFzZTI1LW1haW50Cis1MjgxMyBhMjdlZGUyY2E2MDY4YTUxNjhiNTYyZGM0ZjliNjVjMDdmMWNiMmUyIHJlbGVhc2UyNS1tYWludAorNTI4MTQgNjFiMDY5Yjg0ZDBhZmNjNTEwZDI1NzYyY2U2MzJkYzQzMTg4MzE3YyBsZWdhY3ktdHJ1bmsKKzUyODE1IGIwYzA4ZWYxYzMwMzA5MDdhNjZkODdiN2NkYmUyZTNjMDIzMGNiY2YgbGVnYWN5LXRydW5rCis1MjgxNiA2ZTFiOTAwN2JiZGM2MDQ4YjgyNGU2ZGM5YjIxNzdlZmViNTg0YTFlIHJlbGVhc2UyNS1tYWludAorNTI4MTcgZDE4M2Q4MTI0ODAzZDAyNzJlNWNkZGU0M2VhOGFmYTlkMGYwYTg5MCBsZWdhY3ktdHJ1bmsKKzUyODE4IGEwMzdmYThmODQ1OGUzMWYzMWYyYTcxNzkwZTM3Yjg3N2M4ZWRhZDEgcmVsZWFzZTI1LW1haW50Cis1MjgxOSAyNTlkMjY5MDA4NjE3Y2JjMTdkOTEwZjAwNGYwNDkxYWI3M2YwMGE5IHAzeWsKKzUyODIwIGQ3NWIwY2FhNjdkYjlkZTYxMjEwOTc4YmRiYWYxZTZhYTRlYmU0YzEgcDN5aworNTI4MjEgOTNkYmZjNjU0YjZhMjIyZmJkNTJhYjhmZjQzYmViNzkxMWZiZjYwMyBsZWdhY3ktdHJ1bmsKKzUyODIzIDdmMzNmMjRhN2M0MTY3YzgyNzlkNjhlZGNhNDJlYTliNmUzZDM5NDAgcDN5aworNTI4MjQgMjVjYzYxNjE0NzIwNjNiYWNjNmEzZmVkZDU5ZWFlMDJlNmIzNmQwMSByZWxlYXNlMjMtbWFpbnQKKzUyODI2IGEzZTBmMWUxMTA4Mjg4OGU5M2QwYzgyODVlYWZmMjU5NjhkODVkZWUgbGVnYWN5LXRydW5rCis1MjgyNyBiNmIwMjU5MzE0NTEzMzM3N2RlMjgzMWVhZDlhMGIwZThjZjk4YjgwIHJlbGVhc2UyNS1tYWludAorNTI4MzMgMjkxZTYzMzY4NjdiNjc0ZjBmODRmZDRjYzBmNDYzNjIxZGNjNjcxNSBsZWdhY3ktdHJ1bmsKKzUyODM0IGNkM2Q2Yjk4Y2FlYWQyNjZiOTAwMmM4Y2Q3NzE5NWM2ZDhlYmZkZTAgcmVsZWFzZTI1LW1haW50Cis1MjgzNSAwMDQ2MmNhNDg4NDU0ODBlOWNhODQyM2E0YmY3NWI3MDQ3YjIyZmM0IGxlZ2FjeS10cnVuaworNTI4MzkgZTcwNzBkNjdkYjhjN2M5ZmUzM2YwYzc4YjlmZDU2NDIwNGYzNWYwNSBsZWdhY3ktdHJ1bmsKKzUyODQwIDE5MzE0NmU0ZDI3NmMwNDRlZjdhYTIxYjNmNWVjNGQzYjc4ZWVjNDggbGVnYWN5LXRydW5rCis1Mjg0MSA5NmJlOWQ3NGFkMzY3NTA0MGQ2MDIxYzNlNzk2OTFkNWU1ZTI2NDQ2IGxlZ2FjeS10cnVuaworNTI4NDIgNTg2ZGQ4ZWVkYjc1ZmVmODc5YTZjZmI0ZmI1MDAyNmQ5MTQ0N2MzZSByZWxlYXNlMjUtbWFpbnQKKzUyODQzIDI1MDgzNWRjNTQ0YWE2MDAzZDIwMzY2MDc2YTI1MmUzZDY1MzJlYzMgbGVnYWN5LXRydW5rCis1Mjg0NCAyMGJlNDMxZTc1NDAxYWZkOWI3NmZmNDBhMWY4Y2FjZDViZmE3Mzg0IHJlbGVhc2UyNS1tYWludAorNTI4NDUgNDU0ZWZmMjcwNmQzYjhiYjI3MWRjY2UxNDdmNWU3OWE4MTQ5ZjAyYSBsZWdhY3ktdHJ1bmsKKzUyODQ2IGE1NWQ0NjVkNDBjZmQyNGRlNWQ1MmMxMDljYzI2N2YxYTZmZTg2NWQgcmVsZWFzZTI1LW1haW50Cis1Mjg1MCBlZjE1NDcwMTY3MDMzYzc0YWU1MDVkN2Q0MmEwZGZiNmQzZGQ5ZWFiIGxlZ2FjeS10cnVuaworNTI4NTEgYTEwMTUzMDJkN2U0ZDQyYTBhZjE2OTVjMDg2ZDJlZmE4MjdkMDhlZiByZWxlYXNlMjUtbWFpbnQKKzUyODUzIDg4MTMzNDE3ZGZkMDViNGUxNTZhNmJjZTcxNGQyYWYwMTljNWNhYjggcDN5aworNTI4NTUgNzhmYjc5OTBjNWFhNTk1YmZiYzRmMTdjYTgxZDhmZGMyOGE2MzRiOSBsZWdhY3ktdHJ1bmsKKzUyODU2IGExZmQ5M2I1ODkxMjEwODc4YWMzYjRhYzdlNGY5MDY2NDMzZTQ5M2YgcmVsZWFzZTI1LW1haW50Cis1Mjg1NyAwMmQ1MTNlODcxZmU5NTcyZDIyZjE2MjAyNjQ5ODk2ZTY4ZTMxODkxIHAzeWsKKzUyODYyIDRlMzY4ZTgyYzcwZDZhMWUzMTIwODQyZmJlMjQxYWIzMjk2NWMyZmMgbGVnYWN5LXRydW5rCis1Mjg2MyAzOWFkOTlkZDY3ZTRkZTVjZmE5YjMxNTgyOTQzMmQxMTI1MTQ1NDZiIHJlbGVhc2UyNC1tYWludAorNTI4NjMgOThhMWVjYTNhOTMwODNjY2YwMWY0NWQwOWEyNjA5NmJkZTQxMDZmOSByZWxlYXNlMjUtbWFpbnQKKzUyODcyIGZlZjViNzc0ODE4YmRjNGU2MjYyYTIzMDA0ZWEyZmRkM2I5MDQ1NWIgbGVnYWN5LXRydW5rCis1Mjg3NSAxZTNmNTAyMGJiNTU1OGYwMjc3NzlhM2UyMWE4NmJkMzUyNzFmMTRkIHAzeWsKKzUyODc3IDJlNTAxMWFjYjQxNGQ0YjI2Nzg4YzAzNTdhMDViMWFhNTRiNzBmNzIgcDN5aworNTI4NzggYjNlZDA1M2NjNmExZjJiMWYyYWNjMDFjYWU5NTM0ZWY3OTE5YmQ0MiBwM3lrCis1Mjg5MCBkODAwZDY3Mzc1NTY0MTQ0NGEyZmE2Y2M3OGJkODYyNTMzOTI5YTFmIGxlZ2FjeS10cnVuaworNTI4OTkgMGUyYTA3M2NiYmJmYTdjZjdkZmFhZjVkNGZkMTY3M2NhZWE0YjQ3NiByZWxlYXNlMjUtbWFpbnQKKzUyOTAwIGM3ZTdlNzE5NmE0Y2NmMzU1ZmFlOTEyZjFkOWU5MjQyNjY2NDJkMmUgbGVnYWN5LXRydW5rCis1MjkwNSAzYWIxMmQxYTE3ZDJlZTM0OGZkOGFiZjBlZGY1NTA2YTc3ZmNiMDFmIGxlZ2FjeS10cnVuaworNTI5MDYgYzQzNzg3ZTZkNzA2MWQ1N2ZkNzA4MTY0ZDBlZjAyZmMwMGQ5YTU2MiBsZWdhY3ktdHJ1bmsKKzUyOTA3IDI2YjcxM2ExOTUzNGYyOGU3ZGUyYWFiOWFlZGM2OWZlMTdjNWNmYjMgcmVsZWFzZTI1LW1haW50Cis1MjkwOCAzZWU5ZDFhMzZkNDY0MzA5Y2Y0Y2JjMTUyOGQ2NTE3MGY5YTc1OGUwIGxlZ2FjeS10cnVuaworNTI5MDkgYTAxNDY5MmNmYTY2OGRlZDFjMGJjYmE0MmJlOTMzYzdhZDExOWE1OSByZWxlYXNlMjUtbWFpbnQKKzUyOTEwIDczZjBmYzJmOGYyN2RjMDk3YWYxYTIyNGExODA0ZjVlMjI2MzBhNDAgbGVnYWN5LXRydW5rCis1MjkxNSBjMWE2ZDk0YjgwMjc3NjhmMjM2M2EwMWQ4NmExZGE0M2QzZjNjNjk2IGxlZ2FjeS10cnVuaworNTI5MTcgMGNhYzNlNTMxYzVhMTViMWEyOTM5NDBlMmRmOTE5NDUwZDcyODk3NyBsZWdhY3ktdHJ1bmsKKzUyOTE4IGYxYTZhYjM1NzRlZmRiZGQ2OTFlNmYxM2NjZDQ5ZTUwYzAwOWEwNjMgcmVsZWFzZTI1LW1haW50Cis1MjkzOCBlYjMwZDMwZjIyYTE4NTc5ZWZkMWYwNWFhNzUxMzIyZjdlMzdjNjc3IGxlZ2FjeS10cnVuaworNTI5MzkgOWZmMmI3NDU4YzcwZDBhYmM3OTcyNDIzYzM1NTVkZjM3M2UwNzQ1NCByZWxlYXNlMjUtbWFpbnQKKzUyOTQ1IDlmZTU4NTViMDVkZGE4ZjdkZWZkMjA2OTM5N2M0ZGM1YmZiZTRlYWIgbGVnYWN5LXRydW5rCis1Mjk1MSBkNTU3Njk3MTJmNzNkZjU4ODVjODJhMTc4YTZjNTY1ODg1ZDJiMTEyIGxlZ2FjeS10cnVuaworNTI5NTIgZWVmNzI1YTQwYTY2NzgxMTViMmU1OWFiMDUwYzNhMmFlYmU3YmIzYyByZWxlYXNlMjUtbWFpbnQKKzUyOTYyIGU1Y2U1YTA1MzQxMTY5NmJkMDY2YTgwNjFhMjI4NzNjM2QyODQzNWQgbGVnYWN5LXRydW5rCis1Mjk2MyA2ZTkxZmM4OGJmOTljZjg1MGUxZmU4ZmExYzIwNGFmYjRmMjA4OGUxIGxlZ2FjeS10cnVuaworNTI5NjQgNmIwMmZlMWIzODJmZGZjOTZlNGE0ZWE3OTUwMmE0ZGNiNGExN2IwYSBsZWdhY3ktdHJ1bmsKKzUyOTY2IGExNWJkODFlZmRiNjM2OTk2ZDMxNzRhZDY1MjJjNGE3MjgzZjI2N2EgbGVnYWN5LXRydW5rCis1Mjk2NyBmYTI4MGQ3YzdkNWVkMmI3MTE4YTIyMWE1YTc5NGYxNDlmYWNiYTMwIHJlbGVhc2UyNS1tYWludAorNTI5NjkgYWU5MmM4ZDBmMDhkNTk0YjUwOTRlNjllNTg2N2ZjZjU1NjI1ZWIzNCByZWxlYXNlMjUtbWFpbnQKKzUyOTcwIGNmODdjOGYzM2Y5ZjcyZjdmNGYyNGUyN2Q0Y2IzYzBiZTFhYzQ3MDMgbGVnYWN5LXRydW5rCis1Mjk3MSBiODdjNTYzOWJjM2I4MGE0OTBjMmJkMTE5MDRhMWM5MzdlNTdiN2Y0IHJlbGVhc2UyNS1tYWludAorNTI5NzIgOWQ0NzI1NTViOTBkN2ZhNDU1NDRhN2Q5ZTc2ZTM1NWFiYjkyOWEzOCBsZWdhY3ktdHJ1bmsKKzUyOTczIDY4ZWYwN2Q5YzgxZTFjMTU1MWEwMzkyZGY4Njc3MGU1NThhN2NkMGUgcmVsZWFzZTI1LW1haW50Cis1Mjk3NCBkOWI0ZWZjNGViZWZmZmM4Zjg1NzYyNzM5NmY5OTBiNTQ0YWQxYjYzIHJlbGVhc2UyNS1tYWludAorNTI5NzUgZDRlYjY3ZDFkOTMxOGU3ODZlZWQ0ZjI0MGVjNmUyZjViMGYwOTc3OSBsZWdhY3ktdHJ1bmsKKzUyOTc5IDQ0N2VmMGU3NDYyOTk3MTEzODkzMWNjZDVlZDVlNDA2NzQ0MzYxYWEgcmVsZWFzZTIyLW1haW50Cis1Mjk5NCAwYzUxYjAwNWMyMTQ0YTQ0OTY3OTcwMjRhM2MxMThlZjljMzRjNTExIGxlZ2FjeS10cnVuaworNTI5OTYgM2Q1YjMwNzcyODkyYWNhNmFmYTg0YTVlM2VlMjM1NjJlZTIwY2QwNCBsZWdhY3ktdHJ1bmsKKzUyOTk3IDA0ZmRmOWZmYjE4ODJlOWJjZmEwOGViY2ZjNTAwZjQ4NDFjYTZjOGMgcmVsZWFzZTI1LW1haW50Cis1Mjk5OCA2MTMwNzJiOGY4ZDA5YzNkNmFlYzcyOWM5YmRmODAwY2ViYzU4NjFlIGxlZ2FjeS10cnVuaworNTI5OTkgYTMxMWExMGJhMGJmZDZmMDZmNjdlMmRlMzRkNWJmYTJjYzVkMTYzZiByZWxlYXNlMjQtbWFpbnQKKzUzMDAwIDMxNWM1YTYzM2IwNWJmMjU0ZjNmYzY2YTQ2MmZiOGVjYzkzNzY4ZDggbGVnYWN5LXRydW5rCis1MzAwMSBiMzMzMmVjMjkzZjI2ZDliMGNiYjJhOTEyMTQ0ZDQ4MmQ4Nzk5ZTAxIHJlbGVhc2UyNC1tYWludAorNTMwMTIgODEwMDgxODEyOTk2ZDhmZTdlMjVkYmQzNWRhYjk4MDMzYzJlM2NhMiBsZWdhY3ktdHJ1bmsKKzUzMDE3IGNjOTkyZDc1ZDViM2M5OTJhOWVkMDkxZTExODkyYTExM2MxMzQ1ZTkgcDN5aworNTMwMTggNjQ4MjI2MWIxMDkyMTYwYTFmZjQ5OGVjNmRlYTAyZjQ3ODE1MGQzNyBwM3lrCis1MzAxOSA1MGNlNTZiMjRjYmUzMTM3MzFiOTdkZjhkZWVmNDZhYzAxMWNmNmRiIHAzeWsKKzUzMDIzIDFjYjdiM2FlNDE0ZDA1YzIwMThhMmE0NmZmYThmZDA3YmExYjVmYzEgbGVnYWN5LXRydW5rCis1MzAyNSA1NmU4OGJiYWQ5YTBlOGRiMTE1ZjdjNGYxN2UxY2Q1ZDg5Mzk5ZTdlIGxlZ2FjeS10cnVuaworNTMwMjYgNDgwNzg5YjMyOTRkYzViYmNmYjQwNWVjYWVlMmM4NGExZWI1YWFkNiBsZWdhY3ktdHJ1bmsKKzUzMDI5IGU0ZjJiOTJjNzU3Yzk1ZDY0ZGE0YWM4MzA3NWE2ODQ2NjAxMjg3MzcgbGVnYWN5LXRydW5rCis1MzAzMCBjZWVlZDAyODcyMTY4MjMyZmIwMGE0YTZlZDFhZDYxYmFkYmIyZDExIHJlbGVhc2UyNS1tYWludAorNTMwMzEgYTkxMGFiZTc4MTU5MGE1NTRiN2YxOTgzMDM5ZTA3M2ExNjVjYmE3MSBsZWdhY3ktdHJ1bmsKKzUzMDMyIDllMzk2OThhZmJhNTZjYTY5ZjQxNDY5NmJlYmEzYzYyODRkYTM1NzIgbGVnYWN5LXRydW5rCis1MzAzMyBlZTVlNDFkZWE5NDkyZWI1OTk2ZDBmNDlmZTI4MjYyY2RhYTQ4MzhmIHJlbGVhc2UyNS1tYWludAorNTMwMzggMGRkZDA1OTNkNDBiZWU5MjQwZmI4ZDM1NzkwMGMwMDA5ZjMyNTc3YyBwM3lrLW5vc2xpY2UKKzUzMDM5IGZhOTkzNDYyNjQxMDQ0MmMxYjI4MTAxYTU3NWIwNWNmMjAyMTI1OWUgcDN5ay1ub3NsaWNlCis1MzA0MCA0NjdiMzgxMThiMjlhMmI2YWU4ZTM5MTlmMGI0MDFlMjg4ZTk1MWYyIHAzeWstbm9zbGljZQorNTMwNDEgODMzODRhNjkyNWE0YzkyY2IxODNlNTU5YTgxNTFlZDE4MzlkMzgxYyBwM3lrLW5vc2xpY2UKKzUzMDQyIDU5N2ZlODk1YTk1ODM2MmY2ZWZjYWEwNjEyYmJkZGViODU3YjcwYmIgbGVnYWN5LXRydW5rCis1MzA0NCA0ZjdmNzJiYzM0MGE3ZTVkMzAxODkzODk1ZDRmNDdhOTAwYmI2NTFjIHAzeWstbm9zbGljZQorNTMwNDUgNzQ1NzNmZGU0ZjBjZTc3MWEwZmUxMDY2MzhlMDc0ODA1ZjM2ZmZkNCBwM3lrLW5vc2xpY2UKKzUzMDQ4IDBkNjRmMjllZjI3M2QyYzIzMzRiNzhmODE2ZjliMjA2NzhmNjE4YzkgbGVnYWN5LXRydW5rCis1MzA0OSA3ZDc5ZmQxODE2YTg0NWQ5NzA4ZmNkYTExYzkzN2Y3OTcwYWFiMGY3IHJlbGVhc2UyNS1tYWludAorNTMwNTAgODFjY2ZlZGMxYzk5ZTdkOGQwZjEwNWJmZmY5YjRjNTZhZmVmYmUyYiBsZWdhY3ktdHJ1bmsKKzUzMDUxIDhlM2YyYjAyMmY3Mjc3MWM3MGM1YjA2ZDY0NjBkNDcwOWQzNDNkYTQgbGVnYWN5LXRydW5rCis1MzA1MiAzOGFhMWEwMTAyMTllZWFjNDg2ZTM0NTJkOWFhY2RlZTIzNjhmN2JhIGxlZ2FjeS10cnVuaworNTMwNTMgNTZkYzcyYzFhMWY0M2RlZWFjNDI2MWU0ZjRlMzg2MWEyNTRmN2ExZCBsZWdhY3ktdHJ1bmsKKzUzMDU0IGNkZjYzNTEzYThjZGZmYzM0MzgyYjJkNWE4NTFiNzY0NGQ0MGEyZTcgcmVsZWFzZTI1LW1haW50Cis1MzA1NiBhZGQwM2E5ZDc3OGI4MjgxOWExYjI5OWEyZmZmODI4Y2I1MzliNjk5IHJlbGVhc2UyNS1tYWludAorNTMwNTcgZmUyYTNjOTY2YzhlYWYxYTc2ODQxNThhOTE1Zjc2MzZmNDZiNjY0NiBsZWdhY3ktdHJ1bmsKKzUzMDYzIGViM2IyMzlhNGQwNzgwNjE2NmYyODkyZDEzN2Y1NTZlMmIyMmYwNWMgbGVnYWN5LXRydW5rCis1MzA2NCA5NTQ4Y2EwZTY1NjBlY2Q0NDRlYmRhODQ5OGVkMzdhOTU4MzliZTE2IHAzeWsKKzUzMDY1IDIxNDgwZDg5YjQ3ZjEyZDBjZjUxOWFjZWZjMWYwNzFjNTM5NGY1NjQgbGVnYWN5LXRydW5rCis1MzA2NiBiMjdkNWQ5OGE1NTY3NmM2NTk2NDE1ZmZiNDBmNjRkNjY3MzM0YTRhIGxlZ2FjeS10cnVuaworNTMwNjcgMTdlNzRjZTJiYzM1ZTc5YjY1NGMyMTUyMWQ1YmQ5ZGM4NWNkOGQ2ZiBsZWdhY3ktdHJ1bmsKKzUzMDY4IGRjYzQwYjkzYmZiZWNiYTNiMDQ1ZDQ0YjcxMzhjZTdmZDEwYWNiMTMgbGVnYWN5LXRydW5rCis1MzA2OSAwYjA0Y2I3NTFjMWEyMjExM2RhMzY2OTkwZTNlNjc4MWVjY2Y3ZWIwIHJlbGVhc2UyNS1tYWludAorNTMwNzAgMTY0NGJhN2RjZTFmMDVkZTA2ZGE0OWQzMDlmOTY1MmExOTFhNmMyMSByZWxlYXNlMjUtbWFpbnQKKzUzMDcxIGY5ODM0MGUzNmMzMTE1ZWQ3NjNlMTU4N2M2ZDQ4ZmQwYzc0NTgxNjAgbGVnYWN5LXRydW5rCis1MzA3MiAzMGYwOTc3NmVkNTU2MDBhMGM0ODYzZDQ3MzRjMjA4MTI1ODEyYzhiIHJlbGVhc2UyNS1tYWludAorNTMwNzMgZmU2OThkMDc4Y2Y5N2U3NzY3YWExYjJjYTA0OTMzNmIxMTIwOWI5NiBsZWdhY3ktdHJ1bmsKKzUzMDc0IGE4ZmEyNmEzYTJjYTFjOWRhZjNkZDg5MmEwNGY2NjZlNjk2NGZjNGQgbGVnYWN5LXRydW5rCis1MzA3NSA2Zjg2NGE5MWM2MTJjOWVkNzI5ZjExMDZmOTQ1ZDc1ZjMxZTUyMGRiIHJlbGVhc2UyNS1tYWludAorNTMwODAgODU2NWUzZmVhOWI2MmEyYmMzODdmNzBkNmFjOTUyYTk3MDEwNjY5YiBwM3lrCis1MzA4NyBkNGZjYjU2NTYzMTYyYzI3NWNmNDg4ZjQ5MTlkZGJjYjllYjllYTdhIHAzeWsKKzUzMDg5IGYxYTRjZTFmZTViMTBiNWQyMDg2N2Y0ODYxODhmMzgyNDFlNDUzMTQgcDN5aworNTMwOTAgNTEzOTVjMGI1NDgyZjhjNDBmZmYwNzAxNWNiNmFhNzczMDhlMWE4MSBsZWdhY3ktdHJ1bmsKKzUzMDk5IDk2ZDUzM2VmYmU3ZGQ0YzdmMDdiNTRiNWI5N2M1ZTY5OGQ2ZDQ2Y2MgbGVnYWN5LXRydW5rCis1MzEwMCBmZTliNTY5OTA4OTQ0OGVjZjk3NWJjYzliMDBjNGFkMTBkNDQ5YjI4IHJlbGVhc2UyNS1tYWludAorNTMxMDEgMDM3ZjNjZWEyNjU1MDJjOTZmNjVlOTAzZWYzYTE3ZGNiOTc3OTRhYyByZWxlYXNlMjQtbWFpbnQKKzUzMTA2IDEyNTBmZTQyY2U1Yzc5MTI0MDc3OThiMzdhZGRmMWY4ZTNjNTNhM2YgbGVnYWN5LXRydW5rCis1MzExMCA4ZmIzMzUwMGUwNjcwYjg1OGQ1YTJmODU5NGIwM2U5ZGM3NTU4YWM4IGxlZ2FjeS10cnVuaworNTMxMTIgNzkwOWE0ZWU1NjZiMDU4MzQyYjE1MDRmYTUzYjcyMDNiZTU5NGZlMSBsZWdhY3ktdHJ1bmsKKzUzMTEzIDJkNWVkMjY3YTQwZmExYWNmZDI5OTlkYzFhMDQ4MzlhYjk5ZjgyZjAgbGVnYWN5LXRydW5rCis1MzExNCA4M2Y1ZTgwY2UxZjI5YzMxMWEwNzYwYjI0Y2Y3NjBlZWM0NWI5YzliIHJlbGVhc2UyNS1tYWludAorNTMxMTUgYTg1OTVkZWFkNTRhZDVkN2ZhOWJlYzczYzdiMzQ3MjhmNWM0NmJiNSBsZWdhY3ktdHJ1bmsKKzUzMTE2IDIyYTU3ZjRmZmJjZDNkNGVlOTUxYTgxNjE0NWQ1OGJkNmNmZWZmMjggcmVsZWFzZTI1LW1haW50Cis1MzExNyAzNWM0OGY2OWJhY2VjNzk1ODI3ZmY0ODE1YTZjMGUzZGMwMDMyOTRjIGxlZ2FjeS10cnVuaworNTMxMTggZDJmYTdkYWFhNTliZjMwODcwODlkMjA2NjNkZjA4ODQzZmE5MGY1NSByZWxlYXNlMjUtbWFpbnQKKzUzMTIwIDNkNjY2OWFkZWNlNGE2NDM3OGFiZTZmZWMzM2Q0NDBhMWYxZWVmN2YgbGVnYWN5LXRydW5rCis1MzEyNSBlOGUyM2VkNmI2N2YxMzRjYWQxYmZhNDNiM2RkN2E1MzhiNDIwZjcxIGxlZ2FjeS10cnVuaworNTMxMjYgZmI1ZTNmYzQyMjdiZTgyMmIzZTdmYWFmODk4YmZmOTBiZTFkNmEyMiByZWxlYXNlMjUtbWFpbnQKKzUzMTI5IDk0ZWJmNGEyZjczOGYwMTFlNTljYzFmNjYyNGI5YzMyY2RhNTNiMTIgbGVnYWN5LXRydW5rCis1MzEzMSBmOTRlMmIxOTUxODllZGM5NTY3M2Y4NTQxZWEwZDg0MjU3ZmM2NGRiIGxlZ2FjeS10cnVuaworNTMxMzIgMzdlNzFmZWFlYTNkMmZjMjA0YjkyYjdhMTZiYTVhYTZhNTQ4ODQ2OCByZWxlYXNlMjUtbWFpbnQKKzUzMTM3IDg4MTYyNWMxM2MyMDZjYjcyNTFkYWU5MmNiMzRlOTRkMzI5YjRhNTAgbGVnYWN5LXRydW5rCis1MzEzOSA2NjNjOWYxY2UzYWFiZjhkODRjMzU3NWI2NTNlMzBhNTM1NWFhMGYwIGxlZ2FjeS10cnVuaworNTMxNDAgMmM1MDRjNjJkNGQ4ZGQ1NDE4MDc1OTExNWI1Yjc1NTQ3NGVkZTVmZCByZWxlYXNlMjUtbWFpbnQKKzUzMTQxIDJmODRiNmU4MTkwMmE4NDE3NDA0ODYyOTE2ZTE3ZjAzNTA4OThlZTEgbGVnYWN5LXRydW5rCis1MzE0MiBmOTI2YmJjMmZkNjI5Mjc3ZTZhM2EzZDdmYzIwOTA2MmVhM2U5ZWJjIGxlZ2FjeS10cnVuaworNTMxNDUgNWM2NzQ4NGM0Y2Y1ZWUxNzJjNTcwNWY5MzczYzYzOTBmN2YzN2JhMiBsZWdhY3ktdHJ1bmsKKzUzMTQ2IDkyZjNlZjhmYTRhZmEwODA2NzY3ZGQxOWVjMjFlNjBlYTk0ODYyM2UgbGVnYWN5LXRydW5rCis1MzE0NyAwOWY0YjQ2MGJhZWI3ZTVmYjRjNzg0NDdiMWY5OGJiYTRmNzkxZjRjIGxlZ2FjeS10cnVuaworNTMxNDggZGVkOTlkYjcwY2E2NzhkZDA5YjNkZWNhY2Y4NjcyMzRlZjBhODBkOSByZWxlYXNlMjUtbWFpbnQKKzUzMTQ5IGU0YjBmZjQ0OTIxNWYyNWYyYWQ1NWRkNGNkM2QyNTMxNmFiYjFkZDIgbGVnYWN5LXRydW5rCis1MzE1MCAyODk4MTlmZGUzYWYwZWNmNDk2NDA4N2IwYjcyN2EwZGRkOGM1Njk4IGxlZ2FjeS10cnVuaworNTMxNTMgNWM3ZWE5MzQ2ZjEyNzQ1MTg4ZTkyNGY2MTk2NDJhOWVhOGJmMjlhZCBsZWdhY3ktdHJ1bmsKKzUzMTU0IGFjOGE5YTQxMjFkMTdhYTcxZGJhZjVhZWRhNzNiZDZiMTZmMzY2MmUgcmVsZWFzZTI1LW1haW50Cis1MzE1NSA2NzYzZTQ1YzdmN2QzNDgzNTQyZTQyYjQzYjc1YmU5YzZhYjg5MjY1IGxlZ2FjeS10cnVuaworNTMxNTYgZWY0YjhmY2QxNGQ3MmZlMzhiYzAwMjc5ODA5M2JhZjYwMWExNzdkYSByZWxlYXNlMjUtbWFpbnQKKzUzMTU5IDFlMWI5YzJlMmFmMGUzMjJkMzExOTAyMTEwOWM2MWNkZDk1NTA1NzUgbGVnYWN5LXRydW5rCis1MzE2MCAxMmFmNjc4OGQ5MTE1NTljOWNlZjRlODBjOWVlNDc4Y2MzYTU0ZjQ4IGxlZ2FjeS10cnVuaworNTMxNjEgZTg1Y2EzZmQ0YmQ2M2YzODBhMGFiMzFiOGViNDEyODQ2ZGFmODVlMCBsZWdhY3ktdHJ1bmsKKzUzMTYyIDI2NzZkODI4N2ExMWIwZTlhMmZkOTIxY2ZmNWY3OTk4NjU5OTZkY2UgcmVsZWFzZTI1LW1haW50Cis1MzE2NSA2ZjhjNmY4MzBiNTFjZTY1ZTI1ZDhmNTU0Y2ViYmQwOTQwNWY1ZWVlIGxlZ2FjeS10cnVuaworNTMxNjYgNGQ3N2EyYzZhYTU1MzM3M2E2NDA1YWQ4NjIzOTc3NTkxZTNiYWMzZSByZWxlYXNlMjUtbWFpbnQKKzUzMTY3IDE5NWY2ODlhZjVhZmY0YmNjMDY1ZmY1Zjc0ODhmNjVlYjNiMzQ2OTggcDN5aworNTMxNjggYmNlN2U0YTkyNmE5MWJhNWI0M2I2ZWFhMTA5YmI0NTVjOTA5OWY5MiBwM3lrCis1MzE3MCA1NGNkNDc3ODg4MTFjMDNjNWVkNTE0YWEwZDAxMDNkNDZhNGZlMTgxIHAzeWsKKzUzMTcxIDdhMzVkM2QxYWM1YTMwMWVmM2RjNTJmOTE0MDg0NGYwNDIyMDExYTUgcDN5aworNTMxODcgZDYzZmE5MGRmOWVhZDg0NDdjZWFkM2I3ZmU0MjNjMTFhYzE4MDFiNiByZWxlYXNlMjUtbWFpbnQKKzUzMTg4IGEzMjIyMDc1ZjVjNjZhMTNjYmNiZDU3NmMyNmI5ZTA1YTJiMzY1MDQgbGVnYWN5LXRydW5rCis1MzE4OSBiMTllZDU0M2Q2OTVhMDMwNWZhMDI4MTQ5NjQzOGU0MTljODY0NTQ4IHAzeWsKKzUzMTkwIGI5ZmNhOGZiMGZiMzUxOGYxOTE0NTNiZWE5NjY5Y2M1MDQ5ZjZjODYgcmVsZWFzZTI1LW1haW50Cis1MzE5NyA5NDM3NWQ4MTQ4N2RhODE4MGIwYmQ5ODNlMWQ3NmY0MjU3MmQxNjk1IHJlbGVhc2UyNS1tYWludAorNTMyMDAgYzFhNGRjNzFjZGQzNzYwMTIwNWZiNjY0ZDQ5YzQyMmUyNzYxY2IxOSBsZWdhY3ktdHJ1bmsKKzUzMjMyIGJlODI0MGNlNTJmZjdmMzliYTE2NjFmZGI3YWI5NjVlMzVlMDQ4ZGEgbGVnYWN5LXRydW5rCis1MzIzNSAyYjE5YjJhZGM1YzFiOGE4NzE0MDBlOTAxMGM0YjAyZThhODExMWMyIGxlZ2FjeS10cnVuaworNTMyMzYgN2ExMzgzOWM2MzVkYzU1Y2RlNDdlMjFmZTk5M2VkNjFkODdkNjNmOCByZWxlYXNlMjUtbWFpbnQKKzUzMjQzIDljYzc2MWI5ZTJhYzU2MGY0OGE0Y2M1ODkyNGU2OTFkM2VhYjZmM2YgcmVsZWFzZTI1LW1haW50Cis1MzI0NCBkYzdkNGU1ZDhiNDk3ZTJiMDFiYmQ4NmQyNzA5ZTMzOTgxOGE1NmUxIGxlZ2FjeS10cnVuaworNTMyNDkgNDIwM2Y4ZTZlODZhYjQwYmZmZDJjM2I4MzdhMmY0MGViNzhkM2MwYiBsZWdhY3ktdHJ1bmsKKzUzMjUwIGQ5NzQ5YzNlNjMyNmFlMTYyM2Y5ZDFkNGFlNGJmNDhjOTcxYTY0NWIgcmVsZWFzZTI1LW1haW50Cis1MzI1MiBmOWIyNzgyMDc5OGI3NDc0ZjM2Y2YzNDFhYjE3MjJhMTg2ZjU3MzIxIGxlZ2FjeS10cnVuaworNTMyNTMgNjlmZTY4M2VjZTU2NmM4NDIzMDc3YmYxNDJkNjM1Mjc1NzZjZjJhZSBsZWdhY3ktdHJ1bmsKKzUzMjU0IGFmYWJmZmQ1NjJlOTRjYmRlMjRlMTM5MWQ4ZjY4YWY0NzJlNDRkMzIgcmVsZWFzZTI1LW1haW50Cis1MzI1NSA0NWM3MzE1MmI0YWM1ODMxNDU1M2QxMDVjNjM0ZTY3YTg0NDAyY2ZiIGxlZ2FjeS10cnVuaworNTMyNTYgY2EyOTVjMjcwYjFjM2YyYzE1NWE5NTJhOWRjZGUyZTM3MWUzNGE1MiByZWxlYXNlMjUtbWFpbnQKKzUzMjU4IDQyNzRlZGZkY2U5ODE4ZTU0Njg0Y2RlMjBlN2I4MTdkYTRhNGZhODIgbGVnYWN5LXRydW5rCis1MzI1OSAzMGRhMDZiMjI1YWZhYzNiYjE4YzA4ZDE3NWQ5N2YzYTEzY2ExOWRhIHJlbGVhc2UyNS1tYWludAorNTMyNjAgOTZkNzZkMDlhNGU5YzIyNTJkZmE4OTdmZDZjYThmOWVhYzc0NGI3OSBsZWdhY3ktdHJ1bmsKKzUzMjYyIDdmNzY5OTZjN2JmNGI4ZWM3NGJmNDZhMDRkNDRkMGY1OTY1MTY5MGIgbGVnYWN5LXRydW5rCis1MzI2MyA5MDkzN2QzMTc0Y2JlNTY4NmNhOTFkZGU5MGM3MWY4MTVjOTlkNWFjIHJlbGVhc2UyNS1tYWludAorNTMyNjQgOTMzNGIwZGMzYTE3ZDkwZTI3ZWY0NTc5Nzg4OTcwMDQzNjRhNWNjZCBsZWdhY3ktdHJ1bmsKKzUzMjY5IDNhOGZkMzYzOGYyNjBhMWM1NWUxYTU3OGJhZWQ1YTJmM2E3NzNmNGMgcmVsZWFzZTI1LW1haW50Cis1MzI3MCA4NGFjZWE4ZTA3MmU2NmUzMWI0MGI3NWNlZTUwY2Y2ZjExZDc5OGJjIHJlbGVhc2UyNS1tYWludAorNTMyNzMgZjcwMjc5ZjAwZGZjODBjMGRmYjk4ODlmNmU4Mzc5NjE4MjFmZTY3NSByZWxlYXNlMjUtbWFpbnQKKzUzMjc1IDY4NDVlMGU2MjkwMGZjMjE5NTU5YjFhNzhhMjZjZmJiNGQyNzQ0MGMgcmVsZWFzZTI1LW1haW50Cis1MzI3OSAxNjdlN2JhNzQ3NTYxM2MyMjY4MGNhYjk2YmZhZmVkYmFjMDU3YjE0IGxlZ2FjeS10cnVuaworNTMyODUgMDdjNDcwMjAyMGRjOTJhZGU2NWIxZjFhMWZjOGVkZGYyYTkxYjNkOSBsZWdhY3ktdHJ1bmsKKzUzMjg2IDQxMDU1NzBkYTMwYWQyYjIxMDg5Y2QwMTVmMWM1ZGFiN2MyNDkzMWMgbGVnYWN5LXRydW5rCis1MzI4NyAxNTIwYmFhZjI3YmY3NGU5Nzk3OWQ3YWYwNzUyMTJmZTg0YWJmZjg1IHJlbGVhc2UyNS1tYWludAorNTMyODggNmJkNjVjYjViOTUyMDYyZTMwZWEyZTIzNmRjNTIxNTljMGI5YjBhMCBwM3lrCis1MzI4OSA5OTViN2ZjYzI5NmRmNTY4NGFjNzM5YTIxY2U2NGE0NTJiODcwNGIzIHAzeWsKKzUzMjkxIGNjOTQ5YzYwNTU3NGRhNzVkYzg1OTFiNzJmOWZlZjVmNGIxOGY5MWYgbGVnYWN5LXRydW5rCis1MzI5MyA3YTExYTNhYmU2NGMxZjZmN2M1YzIzNzdiYjhjZWVlNWIyNWVlMWViIGxlZ2FjeS10cnVuaworNTMyOTQgNDRjNjIyMGIxZGMzZmZhNjZkYWRmZGYyOTkwYzU4M2ZmZGQ4NDlmYiByZWxlYXNlMjUtbWFpbnQKKzUzMjk1IDk5MDkzYjUyN2MwMWNhM2ZmNTkwZWEyYzM5ODBkZmIxNWYyZmVjODEgbGVnYWN5LXRydW5rCis1MzI5NiAwMzU0N2E0Y2QzMGFmYTEwYTM4YmE4YzIyYTY4NTU2MmM4NWY4YTUwIHJlbGVhc2UyNS1tYWludAorNTMyOTcgOTQwZmY1Yzc3ZjNhOTEwN2VlY2IxNjgwYWQ3MmEzZmNiOTk0NmRlMSByZWxlYXNlMjUtbWFpbnQKKzUzMjk4IDhkYTZkZGE2NzlmOGIyYThlNWRkZjZiNWViMzliMjVjMDRmZTdkZjIgcmVsZWFzZTI1LW1haW50Cis1MzI5OSA0ZGM3OWUyODMyMDk0ZDUyYTgyNzNjODJmOGRiNTMzZDg5ZTU1YjMxIHJlbGVhc2UyNS1tYWludAorNTMzMDAgYmQ3ZTQxZGU5ODJmNjBlOWYyOTgwODgyNGNjM2Y1ZTVlNTc3NDY2NSBsZWdhY3ktdHJ1bmsKKzUzMzAxIDlhZmQyYzdmYWVkZTYzYTcxNzk1ZDMxYTY1N2U4ZTg0YmRjNjU3MWYgbGVnYWN5LXRydW5rCis1MzMwMiAxZWQzZWQ5YWYzNDhjZmJhNGNlNzkzMTc2ODZjODliYTQwZDYxM2JmIGxlZ2FjeS10cnVuaworNTMzMDMgZGU1MDQwMjRhNmU3N2I0NTliMDllYTQwNjg3YTA2OWQ1NjEzNjgzOCBsZWdhY3ktdHJ1bmsKKzUzMzA0IDkyZGQyYmI5NGNhOWM4NzkxNDA3ZWIyN2IwMjAzNGJmMTE3ZjY3NWYgbGVnYWN5LXRydW5rCis1MzMwNSA1ZDQzMTAyNWM5OTlhOTZlMGQyNzU3NjhhYzgxODE1N2EwYzA5ZTBlIGxlZ2FjeS10cnVuaworNTMzMDYgNjFkNjM0YTBiZDZhMjNkOTAzNzQxMzhjYTY3NGNiNzcxZTJlZmRiMSBsZWdhY3ktdHJ1bmsKKzUzMzE2IDBkOTJjYWEyZDBmNDJiMmMzOTJjZGRmYzkxNjFhODIzYTQ4ODRhZDIgbGVnYWN5LXRydW5rCis1MzMyMSA2ZGRiNjM2Zjk1YzAwOTQ0YzY4NjMwYWRhMmEyYjc4Y2VhNmNmMjVhIHJlbGVhc2UyNS1tYWludAorNTMzMjkgYjgxZjRlZTk0YjA0Y2I5NmFmNGQxOWNhZmEzMjI5MzI2NjZkNTFmNSBiY2Fubm9uLW9iamNhcAorNTMzMzEgNDlkYzdmYzY2YmVlMzgyYTA1NWMyODBmNzZlZjg0OWI1MGRiYTI1NyBiY2Fubm9uLW9iamNhcAorNTMzMzIgNjcyODdjYTRlMWU4NTNmY2RhNzIyZjNiOTkzOTZmMmQ0ZTg4OWY2ZCBwM3lrCis1MzMzMyBiYjFlZWE5Y2VkNzBkYWI3ODQ0ZjMzYjQ1ODFlMDViYjkxOGZjYTE5IGJjYW5ub24tb2JqY2FwCis1MzMzNCBmMzFmZWUyNjJiNTE0NWYwNDNjNWIzODMyMTg2MDk0MTI2OGJlYjA0IGJjYW5ub24tb2JqY2FwCis1MzMzNSA2OWJjODA2ZDk2NjE2NTNhMzZjMjk1NGUzYzc3Mzg5NzRjNWVlOTkyIHAzeWsKKzUzMzM2IDBiNzk3YTdiNTMxMzA0ZjI1MDkwZDk5NTM4YzYzZmE0NTJjNDViYTggcDN5aworNTMzNDAgNjY3YmQwMjdkODAwOThkNDcwYjljZTg4NTU3ZDVkNmQ0NDMxNzllMiBsZWdhY3ktdHJ1bmsKKzUzMzQxIGI0YmE3MjQ5YWJhNTY4MzExMDU2ZDlmMGRhM2I5MDE1MmVkN2FmMzYgbGVnYWN5LXRydW5rCis1MzM0MiA2YjE4YTA5NWMyZTdhYjdjM2UzM2EwNjZjOGE3NDU5MjViZWY0NGFkIHAzeWsKKzUzMzQ5IDRiYWI2NWZjY2E4ZTYzNjk5YjAyMjYyNDJkZmUwODIwMjQ1OWQ5ODggcDN5aworNTMzNTcgZmY3MWI4MmY2Yzk1NjA4M2IwY2QyOGNiMjJjNDg2OGZlZDM2OWQxNSByZWxlYXNlMjUtbWFpbnQKKzUzMzU4IDEzZmMxOTQyMDRjNGU3NGM2ZTQzYzY2YjVlNDE3ZTNjZDgwZjllMWYgbGVnYWN5LXRydW5rCis1MzM2MCA0NjhhZTNlMzkyYTJhMmI2NDgwZjRhZGY2YjQ3ODhkYWRiMWIxYzBjIHJlbGVhc2UyNS1tYWludAorNTMzNjEgOTA5NDZkNTQzNGFhMzJhNzc2N2JlN2M5OTU5NDUxMzQ5ZDNlMGEyZSBsZWdhY3ktdHJ1bmsKKzUzMzYyIDVmMTMwMjcxZjM4Njk1ZWY0OTk2NzJkNmNjNjM4ZWExYzRmNGIzM2QgbGVnYWN5LXRydW5rCis1MzM2MyA3ZTI1MDAyMjZjNDM2YzY1YTFkZDc5MzM2OGY4Yzg1YmVmMTMxYTk5IHAzeWstbm9zbGljZQorNTMzNjQgOGMzNjkzNDZhNGNjNTA4YzlkY2QzNzdjNjEyN2JmMDU0ZTJjYjVjOCBwM3lrLW5vc2xpY2UKKzUzMzY5IGUxZTQ0OTNmNmU4ZjI0N2FmMjU5YWUyNDE2NGNjOTFhY2ExYzgzZTQgcmVsZWFzZTI1LW1haW50Cis1MzM3MCA0NmZjNzU2MTVkYTUyMmJjODA4YzUzNGI1NmEwNGVjMjVhNDMzYmYyIGxlZ2FjeS10cnVuaworNTMzNzEgYjYwYjQyMDk3Yjc4YjZhY2E0ZGJlY2JkMWYzN2FhNTZlNThkNDk2MyByZWxlYXNlMjQtbWFpbnQKKzUzMzczIDgxM2RjYzgzZTQyYzI3ZGMwNmEzZTBkNDNiODQxMDc0YjU5NThjMmQgcmVsZWFzZTI0LW1haW50Cis1MzM3NCA0M2M3NWU1NDBlOTIyZmI2ZThmNzg2MDcyNGM4Y2YzZmQxN2JiYjcxIHJlbGVhc2UyNS1tYWludAorNTMzNzUgMjExMTlkYjVlMDk2NjUwZDQzYWM1NWM0ZTdlMTVmOTIxYzhiOTgyMCBsZWdhY3ktdHJ1bmsKKzUzMzgwIDI2ODU5OTAwZmE1ZGU3ZTVkYTZiMzVlOTFlYjEyMTgwZWNkODkwOTQgcmVsZWFzZTI1LW1haW50Cis1MzM4MSA3ZGEzZGJjODE0NWI4NGRiYWEyZTIzN2Q0MTljY2I4OGI1MTA2ZWU1IGxlZ2FjeS10cnVuaworNTMzODMgYmUxOTNhZjIyZjA0N2ViMGFmNzYzY2NkM2IzY2Q5ZTRiZmU2NWFkMSByZWxlYXNlMjQtbWFpbnQKKzUzMzg0IGUxOGFmMjhiNDlkYTlhNTkxMzZhZjNjMmE0NjUxYjEwMTU4YjIwYTUgcmVsZWFzZTI0LW1haW50Cis1MzM4NSA1M2MwYjA5YzQ4YzExZjRjYzA0YTFmM2ZhYjA3N2M0MGExOTdhNmUwIGJjYW5ub24tb2JqY2FwCis1MzM4NyAxYzRiYmU2M2ZkZmM0ODc3MjQzYWFhN2FhZmVlNzUzMjcxZGU1ZDMzIGJjYW5ub24tb2JqY2FwCis1MzM4OCA3ZDg4NjhjZmJhN2M1ZTlkZjQwZjZjYjQzMzljMzU2ZmJiYzUxNzFhIGxlZ2FjeS10cnVuaworNTMzODkgYTJlMTdiNzUxNWQzYTM2M2UyNTI3MDIwZGQzZDZiYjZkMjdlZmQ1MSBiY2Fubm9uLW9iamNhcAorNTMzOTAgNjg5OWI3NDBlOGVhZTZkZGQ3ZGNkZDg5OThiZWQyNTRjYjI4YTA0OCBsZWdhY3ktdHJ1bmsKKzUzMzkxIDc4Y2QzODRkM2ZjZjkwOWFjODUyZGUzODc2YTQ1MmU5NDRkMGZiZGMgYmNhbm5vbi1vYmpjYXAKKzUzMzkzIGM3YmQ4OTJjMDU2N2Q3MmQyMDdjM2UyNjVjNzMxMDlhZWQwN2RhYTggbGVnYWN5LXRydW5rCis1MzM5NCA2ZDE2ZWJjNzE1Njk1YzA5MDkxOWYwOTg1M2MzZTk5NTU2ZGM1MDVlIHJlbGVhc2UyNS1tYWludAorNTMzOTUgMTgwMmNmOTMyNTRiZjY2NDU0NWYwZmQxNGI1ZDA0ZDA1NmZlOGM5ZCByZWxlYXNlMjUtbWFpbnQKKzUzMzk2IDhiZjY4ZWNjNzY3NmFmMWZiZDM0YjhlZDNiMGJjNmFmN2NiNTYzOTAgcmVsZWFzZTI1LW1haW50Cis1MzM5NyAyYzU3MWY2Y2UyM2FiMjc2NjhjMmFlMTJkNGRiNjQyODc3YjRlZDZlIGxlZ2FjeS10cnVuaworNTM0MDEgZThhZGU4YTZlNWNiOWNhNGEyMTM1YTFmZWI2N2FmOWJkZDU5YzM4NSBsZWdhY3ktdHJ1bmsKKzUzNDAyIGNmOGFmNmI3NTk4YmM1MzU1ODlkNzVkNjk1YjFkY2I3MzMwMDIxZmIgbGVnYWN5LXRydW5rCis1MzQwMyBjYTUzN2U5YmE3YTdmMWE2MTA2OGY1MDVjNWYzM2U4NTYxYWU5MDgxIGxlZ2FjeS10cnVuaworNTM0MDYgYjMwM2ZiMzgzZmE0Njk0ODM3NTJlM2YzYWE2N2Y3YmVlYWQ4MGM5MSBsZWdhY3ktdHJ1bmsKKzUzNDA3IGYyN2I4ODk5YjYxMzUyMzJhN2EyYWU5ZDYzZTMxNDQxMWNhNmQ4MjkgbGVnYWN5LXRydW5rCis1MzQwOSBlZDdhY2YxODgxYTk0MGZjNjVjN2QyNTk1YzYxZjM1Y2ZkMjVkNDQ1IGxlZ2FjeS10cnVuaworNTM0MTAgMmE0NzZjOTRiZTIwMDQwNWE5MWU4MjUzOWUyZWRhZmFjM2QyMzcwMCBsZWdhY3ktdHJ1bmsKKzUzNDExIDY4YjQxYzJkNjY2MzFhYWM0YjQxNGIyY2E2YzYxZmVmZWUzNDdjYzYgbGVnYWN5LXRydW5rCis1MzQxMiAyZGY4MGU3MTZlNWM5ZDkyNjZmZmVkMGE5ZjIzYjhkZDZmNDdhNTE4IGxlZ2FjeS10cnVuaworNTM0MTMgMTQwOWUxZjI3M2I1MDg1MTM1NjJjODYzOTBlZDMzZTZiMDIxNWJhMSByZWxlYXNlMjUtbWFpbnQKKzUzNDE0IDczYjkzZGM1ZTQ0MGFjMDg4OTI2MzVkZTBlYTE5YzBjMzY3ZjE5Y2UgbGVnYWN5LXRydW5rCis1MzQxNSBmMzI4MzI5NDcxZGY1NzEzOTZhM2JhY2M5ZGFhZjNmMGMxMmZiNzVmIGxlZ2FjeS10cnVuaworNTM0MTYgY2ExYjQwY2M2Yjc0YzM1OTlhMjQ2Y2FlOTU0NDU3NWFhZmE4MzQzZSBsZWdhY3ktdHJ1bmsKKzUzNDE3IDQyNmYxZDM3M2NkZDY1NzgwZjg3Nzk4MTMyY2I0OWI5YzEzY2IwYTkgcDN5aworNTM0MTggNGViZjBiODA1Y2U4NGY3YTc5ZjAwY2I5ZDAxNjNlMmQ0ZTg2YTU3ZSBpbnRfdW5pZmljYXRpb24KKzUzNDIwIGI5ZDRjZWQyMzUwNjIxZjY2OGNmZjk0MmZjNDM1MDIzMGViZDlhODIgbGVnYWN5LXRydW5rCis1MzQyMSA0YWVlM2Y2NzJmNzdlMGZlYWYwMmNjZGFiZDAxZWVkOGI2MzIzNmRlIHAzeWsKKzUzNDIyIGRiZmQ4NmMzYzc5MTNhYTFjZDI0MjdmYWYxOTQ2YWViZjUxMTZhOGUgcDN5aworNTM0MjMgOTBjMzgyNzE2ODZiMTIxMzE0NDM1YjM4OWZjMmIxN2VjODk4YjM1ZiBsZWdhY3ktdHJ1bmsKKzUzNDI0IGEwMDRjM2IwMTljYTE1MzIyNTBjNTJjNWFmYWNlYjkwMGFlNDQ5OGYgcDN5aworNTM0MjUgM2Q3OWJjNmVkNmVjZTcyMjg5YTE2YmM4ZmEzODFhYzA5OTRlMDJjNiBsZWdhY3ktdHJ1bmsKKzUzNDMzIDk4ZDVmOTBjYjkwNWFmZWJjZmNmZDFjZDM3YmMxZTI3MzgxZmUxM2UgcDN5aworNTM0MzQgNmVmZTNhNGIxMGFjOThhZDJlMjU3ODkyODIyZmE5NTQxMjI5ZmNmMCBsZWdhY3ktdHJ1bmsKKzUzNDM4IGRiOGMxNzVkMTI4M2Q3ZmI3NjYyMDMwMDJhZDYwZjE3MDk2NDQwN2EgcDN5aworNTM0MzkgOGUyY2E1NDQ0OTAwMWVjYjIzYWU1YWE1MTg3NzRlMTBlZmZlNzFmZCBwM3lrCis1MzQ0MCBjZjk4MzQ1YjlkNmIwMjBhZjAwZTY3NzcwYjBmM2E3MTIzYmRlNjlkIGxlZ2FjeS10cnVuaworNTM0NDEgZjM3Njk2ZTY0NmZhYzVkNTM1NjNkMzk4Nzk4ZjRkODAyMGUzMzNhMyBsZWdhY3ktdHJ1bmsKKzUzNDQyIGNjNWMwNzFjODQyMzExZTgzZjZjZWEwODgzZjQ0OWI4ODc3ZjVlZjUgbGVnYWN5LXRydW5rCis1MzQ0MyA4NmNlMWRmNmE4OGU3MGMxYTM5MGEzM2EwOGRiN2RlNDI4OGMwNjI2IHAzeWsKKzUzNDQ0IDgyYjliNWIxMjI1NmU0NWUwY2E0OTFkMjRiZDZlYzVkYTljOTNlMWQgcDN5aworNTM0NDUgNmY1YjMzOTQ3Mjc0ZThiNGQzZmM1MWVjOTQ1M2EyZTIxZjI2NDdlNCBwM3lrCis1MzQ0NiAzNDI1MzJmNDUzNmU2MTg0ODlhYzUyODAwOTNmMzk3M2I1NTYyZDJiIHAzeWsKKzUzNDQ4IGQwMmQyOWM1MjMyYTFjYWJjYjI3MDAzNDdkODRkYTk4NjUxZDFlOGEgcDN5aworNTM0NTEgNDdmOWVmZGMwODU1YThkMTc2MWEwYTQyNDc5MzU3NjJmNDJjMzVjMyBwM3lrCis1MzQ1MiAxYzI2NTA1YzFkZTZlYjUwZWE4NjRhOTc3MDI4YmRmNjk1NzhhOTdjIHAzeWsKKzUzNDUzIDNmNzgyNzRmMmEzNDk0MzViNzQ1MmUyZDI0MmZiNjBhNTQ3MzY2ODIgcDN5aworNTM0NTQgNGE0YmM1Yzc2ZTQ1OTBiZGM4ZTVlN2FkYTJiYzM0ZjRlY2MwNjRjYiBsZWdhY3ktdHJ1bmsKKzUzNDU4IDliZTYyYzQ1ZjNhODc5NDBmMWIwY2RlM2IzYjc2ZGNkZGQ4YTkzNjUgbGVnYWN5LXRydW5rCis1MzQ1OSBlNWI2NDFlNzAwZjIzNTQ1YTM5NGMwYTgzODBmYzAxNzUyMDBjZmE4IGxlZ2FjeS10cnVuaworNTM0NjAgYTRjZGI5YzhhZjI1YmQ2N2EzOWIxNDkyYzM4YzFjM2MxYjI1YWVmNiBsZWdhY3ktdHJ1bmsKKzUzNDYyIDM3OWFmNDE4ZmMzNjc1MmRlOTVmNGFhMmJiN2JkZDU5NThiZTgxMTEgYmNhbm5vbi1vYmpjYXAKKzUzNDY0IDQ4ZDM4ZDc3NzAyNDk2MjllYjUxNTNiMzkwNjBmMTUxNWQyOTVmMjUgbGVnYWN5LXRydW5rCis1MzQ2NSAwM2E1ZjJiMDY4MjUzZmFlMDUzNDRhNGJkMmJjNGEzNmRiZGU1Y2ExIGxlZ2FjeS10cnVuaworNTM0NjYgNjY3ODJlNWI5OTJmNTdmNGI3MjFiMWM5NTY0YTk5YzU0NDhlZmExNyBsZWdhY3ktdHJ1bmsKKzUzNDY3IDRhOTdmM2JmYjU1Y2UxZTViZGNjZDkzY2Y1OWY3MDdmNWE5MDY4MTkgcmVsZWFzZTI1LW1haW50Cis1MzQ3MSBiNzMzOGYzYjFiMDIyNDVlYTRjZmM4NjkwZGMzNDYxZTA1ODhiM2Y1IHJlbGVhc2UyNS1tYWludAorNTM0NzIgMDkxZGY0MzYwMzhkNzQ1ZWE5ZDYyN2Y4ODIwMmIzMDg0MGY0ZDVjYiBsZWdhY3ktdHJ1bmsKKzUzNDczIDE5MWVhYWU1YTI5ZDJlYzNmNGE1ZjYzMjllZmI2NmM3ZDExZmU1NTIgcmVsZWFzZTI1LW1haW50Cis1MzQ3NCA0ZDg1N2RhN2U2YzRmNDEzMjg3NTQzZjk2NmU5NWYzYTNkYjkxMTA0IHJlbGVhc2UyNS1tYWludAorNTM0NzUgNzczMjliMTI3ZDQzNzRlNDE2ODYxOGYyZDRmMGIyNmZlZmUwZjczMiBsZWdhY3ktdHJ1bmsKKzUzNDc2IDk0Y2EwNmQ5NTkzMDZmODJjNWViMTMzODFjNGUzMGU2YzJiY2I0N2IgcmVsZWFzZTI1LW1haW50Cis1MzQ3NyA5MDE2MDQ5MGM2ZDQwNTJkM2I0NzUxOWQ3MzM1MzdlYzU5YjIxMTg0IGxlZ2FjeS10cnVuaworNTM0NzggMjIzZmYzNWRjZmZjMWIwNmFkNDBiZjA3NDU0NTY0MWRlOTI2MjM2YSByZWxlYXNlMjUtbWFpbnQKKzUzNDc5IGVlODdlZWY5NTdmMzU5MTM2MzI3NzAzNDA3ZTNhMTM5ZDE0MzAwZTUgYmNhbm5vbi1vYmpjYXAKKzUzNDgxIGNhNjA3ZDc0OGY2NGU2NjA0YzhhNWFlMDYwMmJmYmE0NWVjZGM5ZjYgbGVnYWN5LXRydW5rCis1MzQ4MiA5YmRmMzRiM2Y3MmViMGZlZTNjMmIxOWIzOWYyZDg4OWQ1ZDM2N2ZiIGxlZ2FjeS10cnVuaworNTM0ODMgM2YxZGZhZjI5M2ZhMWRhMGVmOWI5NDkwNzlmNjg4ZmY5ZjA1NTA0YSBsZWdhY3ktdHJ1bmsKKzUzNDg0IDBiYzQyYzE1NmU5ZjVlZmVlNzg5Yzk1MmE0ZDBlODg2ZjZlNDRlYTAgcmVsZWFzZTI1LW1haW50Cis1MzQ4NyA5ZmU5MmYxOGJiNmE0MmE3NDY5M2Q2YWU5ODA4M2M2MWE3YmQ0OGUwIHJlbGVhc2UyNS1tYWludAorNTM0ODggYjhhY2VjNGE0Yzg5Y2E2YmQzYWY4NTliN2Y2N2I0MjQxN2M5ZWI0YiBsZWdhY3ktdHJ1bmsKKzUzNDg5IGIwNTFkMTk3ZjdhNDkzN2ZjY2VmYzY3YWFlYjgwYzIxNmE0NTUyNzUgbGVnYWN5LXRydW5rCis1MzQ5MCAwNWE4OTg2ZDk1MjY3MzdjOTI0MjMyYzU3ZGM1MzJjYjgwNzRhY2Y3IHJlbGVhc2UyNS1tYWludAorNTM0OTYgNjgwZDE3YTZiMTVmMGEwNDI0YTAzZDYwNGQwZDQ1MjMxZWUxNmQyMiByZWxlYXNlMjUtbWFpbnQKKzUzNDk3IDM5YjNhNWEzYzY0NWI4OWI4MGY1ZjNiNWMwZDRhMzRkMWFlNGQ0ZGIgbGVnYWN5LXRydW5rCis1MzQ5OCA2MGQzMWExMmIxNTBkNTA5Y2ZkNzBiZjE5OGQwNmJjYWY2NWZlYmE4IHJlbGVhc2UyNS1tYWludAorNTM0OTkgMmY4MGFmNjc0MDc0YWZjMjUyNmFlMDAxYWFkOGM0YjVlNjM4NGJiYiBsZWdhY3ktdHJ1bmsKKzUzNTAxIDViZjRmMDU5MDNiMjBjNjBmNzhlYmM0NTA2NjBkMjc0NmNhN2FlYTAgcmVsZWFzZTI1LW1haW50Cis1MzUwMiA1OWNmODllNWYyMzdlZGFhNTE2MDg0MzEzMTMyMWY4Zjg0YWM4YzQyIHJlbGVhc2UyNS1tYWludAorNTM1MDMgN2IzOGY5OTU1YzY0NjU5NDAxNDc3NTcxYjcxYWY5Yjk5M2M1OGZhZiBsZWdhY3ktdHJ1bmsKKzUzNTA0IDEwYmZmZDE5YjUzNWE0NDhlNDgyZTI5ZWZmZWFmYzg1OWQyYjNmMTIgbGVnYWN5LXRydW5rCis1MzUwNSAzYWU0ZjkzMGJmMjdiNGNkYzBjNzdmZTE2YmRmNTA0MTZhODc5NjUyIGxlZ2FjeS10cnVuaworNTM1MDYgYWM0YzJmNWMzZmMwZTk5MzQzMzY0NjhiM2M5MDk5Mjc5Zjk4OWM5MiBsZWdhY3ktdHJ1bmsKKzUzNTA3IDVmOGE1NGM4MDRmZjZmMGRkMzJiMmMyNTgxOTJkYTkzYTlhNmVkNjQgbGVnYWN5LXRydW5rCis1MzUwOCAwYmZmY2E2NGNjYzRiYTA0ZTQxMzA4OGQwNzQwZWM4MmY0ODQ4MTE5IGxlZ2FjeS10cnVuaworNTM1MDkgNzdlMGY0NzE4YTdjYTYxNzc4N2U3MGZiM2E4ZjZmYmRlN2JhMDVjNiBsZWdhY3ktdHJ1bmsKKzUzNTEwIGM4NmRmMzExZTYyY2VjZTIxMDA2YmU2YmMzNjIwOWZhZWYyYjRiOGMgcmVsZWFzZTI1LW1haW50Cis1MzUxMSAyZmE2ZTgyYjFmMTdiN2FlZjg3NjEzNzk3MmE3M2I3YzJmZmRlNzc3IGxlZ2FjeS10cnVuaworNTM1MTIgNTczYTQ2MTc2MTc1Mzk1MmEwYjA1MmMyMTUwNDIzMDU0ZDA3NTQwYyByZWxlYXNlMjUtbWFpbnQKKzUzNTEzIDY2NmZhZjg5MTJlMDVmMzdmZTNhYjRkODEzZGEyNDkyMTQ1YmNkYWUgcmVsZWFzZTI1LW1haW50Cis1MzUxNSAxNjc5YTRhZGExNzEyYjBkODg5OWE1OGZkYWM5YWQwZmNmOTA0N2RmIHJlbGVhc2UyNS1tYWludAorNTM1MTYgM2I2YWM0ZjRiNDM3MjQwYmRmYTBmODUzNDBhZWNkYzU2YmJiMTgzOSByZWxlYXNlMjUtbWFpbnQKKzUzNTE3IGIyMzcxMWJlMmIzZTAzNDIxMzhmNDc0ZmYzMTY2NDg0ODg3MGZkNGYgbGVnYWN5LXRydW5rCis1MzUxOCBiYjRjMGJiYmEyNzJmOGQ3OGY3NTI2ZmQyNGM2MjA4MjgxNDAwOGI4IGxlZ2FjeS10cnVuaworNTM1MTkgYjE2YjRmOTc2ZTcwYWQ4N2Y2NjM5NzJjMmNhZmE0MDc5M2Y0NzhjMSBsZWdhY3ktdHJ1bmsKKzUzNTIwIGVjZTJhZjc2NDYyMWQwNTdlNDI1NjRhNGI0NGQzNDFiOTZlY2E1NDUgcmVsZWFzZTI1LW1haW50Cis1MzUyMSBkZTJiYmRlY2U4M2VkYWZkMmFlMWRhNDg5MThhNDMyNzM1ODZmMjA1IHJlbGVhc2UyNS1tYWludAorNTM1MjIgZDdiZTAzZWJmNDY2NzMxY2I3YmU2MWM0NzRjNjUxZTk1MWZmNDQ0ZiBsZWdhY3ktdHJ1bmsKKzUzNTIzIDlmMjM5M2U5ZWFjYWJmNDM4MDYzZmRhZjI4ZjJmNGYxNzg3OWU4MzIgcmVsZWFzZTI1LW1haW50Cis1MzUyNCAwODFjYTYwODBmZjE0NTMwNGU0ZDM0ZjExODkxOTk2NDM1MmNmNTE1IGxlZ2FjeS10cnVuaworNTM1MjUgMjliOGI2NWJhZTNmYWI1ZTBmNGI5NzBiZDk2YmZhM2JlMDMwZTIxMCByZWxlYXNlMjUtbWFpbnQKKzUzNTI2IDdmNDA2NWVmYTQ0ZWUyMzk2NTExMTUxNWY0YzMwNzJlMjVlMmEzM2EgbGVnYWN5LXRydW5rCis1MzUyNyA4NmFiMmYyMGEzMzMzOGRjMGEyZjAxMGFmMGM5MjkzMTRlYjY4ODNiIGxlZ2FjeS10cnVuaworNTM1MjggZDJlMmVkZDA3MDgyYzRmYmVkZTQ4YjI3YjJmZWIzYmU3NjVlMzhhNCBsZWdhY3ktdHJ1bmsKKzUzNTI5IGRhMzBhMjZkZmViMzljYjUwMWI1YjBjMjg1YWRlZGM1ZGRlN2JmYTUgcmVsZWFzZTI1LW1haW50Cis1MzUzMCA2ODYwYmE4OGQ2N2VhOWQzMGY3OWVlODFhMjkzODYzZjEyNzMyY2Q4IHJlbGVhc2UyNC1tYWludAorNTM1MzEgZGYyOTRiYzVjZTZlODI2OTg3NjUyMTY3YzEyZjM4OTU0MmJjZjU3ZiBsZWdhY3ktdHJ1bmsKKzUzNTMyIDBlOTVjNzc1MTJmNTRhMTBjMjljMDczODBiMDJhNzFmMDU0NjQ5MTYgcmVsZWFzZTI1LW1haW50Cis1MzUzMyAyOTMzMTFlNjNhNzMyZTIxZGE3ZWY2NjMwZmZmMjVkOTgwMDgwNDdmIHJlbGVhc2UyNS1tYWludAorNTM1MzQgMDMxNDRjNDg2NzgyYzFiMTNlMWJhNjA4NzhiNTlmNDhlMGZmMTYwMSByZWxlYXNlMjUtbWFpbnQKKzUzNTM1IGRiYmRmYzAzOGRjOTQ3Y2Q5MjQwYmMyOTc1ZjgyODI1ZTdmMjdjYWUgbGVnYWN5LXRydW5rCis1MzUzNiAzOGQ5NDRlZmU2MDBjNmM0ZWY2OTdlZmUzOTU4ZjQ1M2Y5MGI2MjZjIGxlZ2FjeS10cnVuaworNTM1NDMgNDgwN2E2YWJmOTA2MjRjOThiNzljNTUzYjEzYmMwNTAyZTM5YjZjYSBiY2Fubm9uLW9iamNhcAorNTM1NDUgMGQwOTZiMTQ2YjQ4NjhiMzI4YjU4MDAzYTc1NmVjMDNkYjJjMTE1ZiBsZWdhY3ktdHJ1bmsKKzUzNTQ2IDQxNThiYTdmNDZhMDM1YWE0MWNmMjI5MWRiZmI3NmY0Zjc3MTIwZTAgcmVsZWFzZTI1LW1haW50Cis1MzU1NiBhNWIyNjljZTA3OWRlZGM2YjBmZjRjOGI0MzE5NGUwNWUwOTAwOTlkIGxlZ2FjeS10cnVuaworNTM1NTggNjU2ZGQwMDk1ZjUyZWRjMThkZWU5NWQyM2Q2OWJhY2IxOWFhYmRjMiByZWxlYXNlMjUtbWFpbnQKKzUzNTYzIGU0MzgxNmRkYzRmMDVkMzE4ZDU0MDllNzJhY2E5ZGM3M2RjN2E5YTggbGVnYWN5LXRydW5rCis1MzU2NCAxNWRlY2EzOWUwZTZiYmM3OWNjNDgxNjA2M2RiY2UyMjAwYjIzZjJkIGxlZ2FjeS10cnVuaworNTM1NjkgNGZhOWM4MGZiMTdhYjg2YzE5ZDQ4ODRhMzU0ZmM1MjU5MjM5YjNlYiByZWxlYXNlMjUtbWFpbnQKKzUzNTcwIDExNjNmNTVkYWQ5NWY4MGNmN2YwNWVmMThiYjg2ZGU1N2YyZTdjNWQgbGVnYWN5LXRydW5rCis1MzU3MiAyYmJmMTdjMWM2OWNiOWQxYmRjY2ExNGRjMzg0NDcxMDFkNTA4MTY5IHJlbGVhc2UyNS1tYWludAorNTM1NzMgMTI4NTUwMDBlMTNiZGVhYjQ4ODdjNzQ0YzNlMTY1OTk1NTY3NTlhYyBsZWdhY3ktdHJ1bmsKKzUzNTc1IDIzNDNjNjhjYTFjODdhM2FmZjUwMjNhYjI3ZDgxYjBlOGNhYjU1MDcgbGVnYWN5LXRydW5rCis1MzU3NiAxNzUxY2EzZmVmZmU5NmI0NDhmNmUzNjJiNGQxNjJjYzlmYjdmMjk1IHJlbGVhc2UyNS1tYWludAorNTM1NzggYzlkN2I4NmY5Mzc3Y2IxOGJiZjEzNmZjYWJmOWNhY2VhZWUxMGFlMyBsZWdhY3ktdHJ1bmsKKzUzNTc5IDI0MzFmODJhNmExNzU2ZmE3NGFkMjJjZTNiNzIwMTdkYTRmYTFmZmIgbGVnYWN5LXRydW5rCis1MzU4MCBhZDkzNmUwYjZmY2ZkMWJiMmRiZjlhN2EzOTkwZjFjYTM3OTgzNzIyIHJlbGVhc2UyNS1tYWludAorNTM1OTAgMTc4MmI2MjJhYWM3MWI5YjBlM2FhZDkxM2E4ZjY1YzkxZGUwNmQ5OSBsZWdhY3ktdHJ1bmsKKzUzNTkxIDJkODIzOWFiZmE2MGZhZTNjMWJlNzVlYmMwZGJjNDRjOGUyZDViOGMgbGVnYWN5LXRydW5rCis1MzU5NCA1ZmM4MTljNmMxM2UyZWY5ZTdiZDVkNmU3MDYwZGY2Y2JmMGZhNWI4IGxlZ2FjeS10cnVuaworNTM1OTYgZDYwYWQ5MTRkODMzZWU5NmNkYmViMzRjZDVhY2M2YjRhY2QxMGM2MiBsZWdhY3ktdHJ1bmsKKzUzNTk3IGFiOWM4NjUxOTYyODFhZmEyYTc1NzdjZjY2NDllNzU3NzhlN2MyMDYgbGVnYWN5LXRydW5rCis1MzU5OCBmZmI5NTgwZjk2N2JhYTZjOTYyMjg1ZDVkODM2NmVmODE1ZTBhNzk0IHAzeWsKKzUzNTk5IGQ1YmFiYjMyNmE1MGQxMDNiMDE1NGJlYzRkNmMwYjI1MTA4MzA4ZmYgcDN5aworNTM2MDAgYTI2NDQyMjI4MDU4NTVjODE3ZGYxZDUzNmMyNDgyN2ZmMmM0MTY5YyBwM3lrCis1MzYwMSA1ZGFlMGQ3ZjY4M2FiMzc5NjkyZmQ0Y2I0NWE5MTkxZGQ5MmNlMjBkIGxlZ2FjeS10cnVuaworNTM2MDMgNGIxMDAxZGEzOTkyODZhODYzYWM2NTk5OTIyMTVlYWFiYTVkOTgxNCBsZWdhY3ktdHJ1bmsKKzUzNjA0IDBhY2EwMDM5Y2MxYjVlZDE1ZjEwYTlkZjQxZTI2NTg0N2QwMzc1NzggcmVsZWFzZTI1LW1haW50Cis1MzYwNSBiZDM3MzlhODcyNTk1YTA3MTZkOGY2MTc3N2MzMGZiNjlmZTg0YmE5IGxlZ2FjeS10cnVuaworNTM2MDYgMDM3YWJjYTgxN2I2MzgzYmRiNDhhNzc2MTM4NDQ2YTkyNTVlNDA4NiByZWxlYXNlMjUtbWFpbnQKKzUzNjA3IGMxNDdjNmJjNTc5ZjI4MThhZDEzMTMyZGEwODQxZWNkMzBhYWYzMWYgYmNhbm5vbi1vYmpjYXAKKzUzNjA4IDY3ZWM0YWZmYmQxNGMwZTRkODcxNWQ1YWFmMGRiMDYyMGM0NTNmZmMgYmNhbm5vbi1vYmpjYXAKKzUzNjA5IDBmMjBjM2JjNjI3MDZhMjJmYzFlYTExOTJkNmVhYmIwN2EwMmNhMTkgYmNhbm5vbi1vYmpjYXAKKzUzNjEwIDZlYmFkMmE2Yjk5MDc4NmFiNjEyM2JjOTZiNjE2NzMxNTE3YTJiYTIgcDN5aworNTM2MTMgNTgzODlkZWE2NTFjZDY5MzFlOGE0MWNhMzcxZWZlMWFhZWE3OGNlNCBiY2Fubm9uLW9iamNhcAorNTM2MTYgNzJjMGM2YWVjMWVkMTg1YzYzNmNlMTNmMDRhNWE3MDYzNWMyMjAxMiBiY2Fubm9uLW9iamNhcAorNTM2MTcgNTNhMzZkYjJjMzg3NjQwOThiZThmNjEwYWY2MDNiOTRhMDlkNGQ4YiByZWxlYXNlMjUtbWFpbnQKKzUzNjE4IDJhOGU5ZWZiNWQyMGMzYmM1ZGNjNzE5ZWUyNzE0ZTY4OWIwM2VhYzkgbGVnYWN5LXRydW5rCis1MzYyNCBhZDhjZGZiNjk4NzIxM2VkMGNkNmQ1ZDNkZTQ4ZjU3NWMyMDgwMjU4IGxlZ2FjeS10cnVuaworNTM2MjcgODQ4MDk2OGY0ZjRhMTRlOTI5MWFiNTAxNTU5OWQxOTE3ZjZhYTkxOSBwM3lrCis1MzYzNCBmMTcwMWJhMjQ1MmI0MGVhOGRiODljMjNiMmMzYTJjN2MzMzNhMzgxIHAzeWsKKzUzNjM1IGNjYWM2MzZiMTUyY2U2ODJmYjRmMjUyNTI1YmU0NWRhYmRmOGQ2ODMgbGVnYWN5LXRydW5rCis1MzY0MSA2ZDljYTkwZDhiZjc0OWQ5NWJkOTgwYWZkMTE3ZGQwMmNhNmJlZTU4IGxlZ2FjeS10cnVuaworNTM2NDQgMWFmOGZlZTMzMDEzYzBlNzYyYjI0MGE1ODQzNGVlOWUxNzJiYTMyYyBsZWdhY3ktdHJ1bmsKKzUzNjQ2IGQzZTg4NjMxZjkyYmI2YTA3YmE3MGU5NWQ5ZWMyM2ExZDA1Y2JiMWYgbGVnYWN5LXRydW5rCis1MzY0NyAyNjVjNTFiYTM5MTAyMzE0OWM2OWFkMDVjNTBhNThjNTYxNmQ2ZWUxIHJlbGVhc2UyNS1tYWludAorNTM2NDggMDlkY2FjYzhhMGJjMmExZTMwZmQ4NDdhMDM2N2Q3Y2FkNTg1NDY2OSBsZWdhY3ktdHJ1bmsKKzUzNjQ5IDA1MjhkNmY5NGViNmVlNjNmOGU0OGMwZDFhZjI3MDdiMzk4NzJmMTAgbGVnYWN5LXRydW5rCis1MzY1MCA2YzQxYjAxMjI3NDdhZjU5ZDUxZmU3OTRhYjBhNThkN2UxYjlkMjRkIGxlZ2FjeS10cnVuaworNTM2NTEgZDU5NGVjODU4ZmU5NzRkYzVkOTJjMTcwMTM2YjBmMjM2OTRkNmY0OSBwM3lrCis1MzY1MiBmODNkNmFhMzkwZjEwNmI5MmZiOGZmMmRmZTJkYTRlYjg4NThkOGRmIHAzeWsKKzUzNjUzIGM3NzkzMzQ1YTBjNTQ0YzI0ODI3Y2E1Y2JhMzY3ZDkyZGViNmFmZWUgbGVnYWN5LXRydW5rCis1MzY1NCA0OTliZjMwNDBhZjdiZjQ1M2JmZDMxZGUyM2U1OWIzYmQ1YWExYjQyIGxlZ2FjeS10cnVuaworNTM2NTUgNTZkYmRiN2I0MDRhMzliZTdhNWMyODMzYTY4MjlkM2RkMzk0ZWQwZCByZWxlYXNlMjUtbWFpbnQKKzUzNjU2IDA3ODc1NTQ5OGNmZTM1NTBiYjYwMTJkZWMwYjU2YTM1YTI3Nzk2ZjMgbGVnYWN5LXRydW5rCis1MzY1NyBkNTA5OTQ2OTNjOTI1NmZkMWUxYmNiZDcwZWVjZWFjODk1MWZlNDgzIHJlbGVhc2UyNS1tYWludAorNTM2NTggNDg3ZWYwZjkwM2UwMTU4NDE3Yzc4NWI5NGQxYzAzOThkY2E2OGM4YyBsZWdhY3ktdHJ1bmsKKzUzNjU5IDhlYjAzYjExODE2NDBmMTllNTQ5OWIyMmMyZDNlMjRmYmUyM2U0ZGYgcmVsZWFzZTI1LW1haW50Cis1MzY2MCAyOTAwYzc1NjQwNTVkNjJjMmRmODBhNjdiMjdmNzQ4NWY2MjY2ZWY3IGxlZ2FjeS10cnVuaworNTM2NjEgMzAyMjc3OGVlMGNjNmQzNmZiNTQ4NjcxNzM4N2RiM2QwYjEzZjQyNSByZWxlYXNlMjUtbWFpbnQKKzUzNjYyIGZmYWFhZTAyYzY2MjljYzU1Njg4ZWQ4ZTM2ZWUwMTUxNTk0MDdmZGQgbGVnYWN5LXRydW5rCis1MzY2MyBhMmQ3ZjRjMjllNWIwODkxM2RmZTdmYzk5NDM5OGJmZWQ1OGVlNDk0IHJlbGVhc2UyNS1tYWludAorNTM2NjQgYzk5NGMyNDVkOWFiNWNmOTY1NzA1NDg0NGNjMTAzODcwN2Q3ZTE1ZCBsZWdhY3ktdHJ1bmsKKzUzNjY1IGQ4ZmIwZjZhYWFkNDNjYjJmODIwMzg4YjIwM2NiOWIxZGFjZWMxN2IgcmVsZWFzZTI1LW1haW50Cis1MzY2NiAxYWQwNTY4NzM3ZjYxMDEzMjRhNTQ3NTJmZGExNzJiOWVkNzU2ZGJjIGxlZ2FjeS10cnVuaworNTM2NjcgNDdiYjI4MDNlYjFiZTM2OWRmMzhiOWNmNjgxYzQyN2FlZTExYTkwYyByZWxlYXNlMjUtbWFpbnQKKzUzNjY4IDFmNzFhMzJmOThkMjNiYzAzMDQxYWQ2ZWE3NjYwZmE4NzkwMTkxOGUgbGVnYWN5LXRydW5rCis1MzY2OSBhMDRjNzgxNTQ2ZWQyYTk3YjNmNWI2YmJjODUzZDBjM2IxMDBkODRkIHJlbGVhc2UyNS1tYWludAorNTM2NzAgOWY1ZWFlYTNjNzk1NDA5YmMzMzU4ZmFmYjRmOWVkYzZhOTExMDkxYyBsZWdhY3ktdHJ1bmsKKzUzNjcxIGU3NzZjODNhMGMxOWUyNzNlNzIwOGYxY2ZkMmE5NjFiMGE0NGZiOTAgbGVnYWN5LXRydW5rCis1MzY3MiA3MTU2Y2ZkYzM2NjdlM2JmZDA1MmQ0MThiZGEzNmY5MmI1OTkxYzdiIHJlbGVhc2UyNS1tYWludAorNTM2NzkgZjdlOTA3MWMzYTFmMDBlZDcxMjRmMWRlMGRlMGEyOGUxZGU2YzhmNyBsZWdhY3ktdHJ1bmsKKzUzNjg1IDc5M2UwMzIzZDRkNjViZmM4OWI0MGQ3ODE2MmNkNzcxYzU3NWExOGUgcDN5aworNTM2ODYgNGNkZjIxYTBkYmJjZTg5MWU3NWE5MjBkNGZhZjRjMGVjYmRkODMzMiBwM3lrCis1MzY4OCAxZDU0M2EzMjAzNDYxMDczMDVjNDkxM2Q4MjdkMTQ5ZjIwYTQzNDg3IHAzeWsKKzUzNjg5IGY2ZjM5MWQxZDA1MGZlMzZkMDAyOGZlYzJkY2UxMjJiZjMwYzQ0ZTkgbGVnYWN5LXRydW5rCis1MzY5MCA4M2VmZmY0ZDVhZTk0MjU4ZWM2OTJjZWJmYjE4MmJmY2VlZjcwYzViIHJlbGVhc2UyNS1tYWludAorNTM2OTEgNGQ5MTU2NDY0NjczNmRmNzEwNzgxOGEyOTlhZGNhYjU2YzQzOTgzZCBsZWdhY3ktdHJ1bmsKKzUzNjkyIGI3MDQyYmRmOTBhOWJhZTQxNGY0MTQxNThhNjEzNzgxZGU2OGRmZjUgcmVsZWFzZTI1LW1haW50Cis1MzY5MyA5ODQwNDFlNzQ0NmQzMWM2YTNiYTA0YjVjNTlhMDA4YzZlYWFkNTczIGxlZ2FjeS10cnVuaworNTM2OTQgZDJmZTg5M2E0ODQzNzI1NzA1OTcwM2QwNjE4ZTY4YjZmYTMzN2ZlZSByZWxlYXNlMjUtbWFpbnQKKzUzNjk3IDI2NmMxYjBmOWUxNmM2ODg2NjQ2YWIyOTM3ZTA0NDBiNjZlNmM0MTYgbGVnYWN5LXRydW5rCis1MzY5OCBiZTI5NTg3ODI1NmFhYmNmM2VlMDYzZGMwZWRiNmJlNTNkYTI5NTc3IHJlbGVhc2UyNS1tYWludAorNTM3MDEgMjI3NjBkNTNkNGRhNWQyODc3ZjgxNGZhMTlkZDYxYmY3MDA2YWJhNiBwM3lrCis1MzcwMiAwY2UxNGM0Y2ExMzM3ZDEwNjgzYTQ2OWE3N2FjNDNhYzg4YmU0YmRhIHAzeWsKKzUzNzAzIDY5MTdjNjc2YzkyZmJiNDljZDFiMTI1MjJkOTNhNzNhMzhmZDRlOWEgcDN5aworNTM3MDQgZTlhNjIzNGIyNmFmZDFlMDI1Mzk2MzI1NTIzYWNiYTNkMWEzZmFmMSBwM3lrCis1MzcwNSBlOGIyOTEzZjkyOTdmNDdmOTQyYzE1ZDNhOTNmMWRiMDA2NDEyMjlhIHAzeWsKKzUzNzA2IDhkOWEwZWM0ZDk3NjAwNzc2Mzk4ZTk5NmRkZDJkMjhkMGUwOTE2YmQgcDN5aworNTM3MDcgOWZkOTY0MDg4ZTA3MDVmNTJlODUwNTdlYTAyZWViMTc1Mzk2N2Q4NiBwM3lrCis1MzcwOCA4MWU0MDM0YWQ4ODM3NjEyMDI2ZmYxZWRkZjgxZWUzNTVmMTllNDYyIHAzeWsKKzUzNzA5IGMxNWNmZjJkZDE4ZjVjZWQ5NTliNDVmMTE3ZDNiMTQwOTIzMTMwOGEgcDN5aworNTM3MTAgYjdmODlkYjlhMWQwNWFhODY0NWE1NzhiYjY4YTdhNDNjYWNlZTg2YyBwM3lrCis1MzcxMSA0M2UzNjljYzAyYzU1ZjQ3M2Y2ZDRhNzU2ZjVmZmM4ZDQxODkzNzJlIHAzeWsKKzUzNzEyIGM0YmU0OTNkY2I2Zjk0YjU2YmI2YzVjZGJmZDcxMzI2ZTE3NjU3ODUgcDN5aworNTM3MTMgZmZkYzhkMzk4ZTQ5MTFiN2M0MWM4ZWNjYzc3MmE3ZjlkNWU2YmNjZSBwM3lrCis1MzcxNCA3MjI3N2UxOTY3YjJiNmRmY2UyMjQzY2Q3ZWU5MTJmNGJlMTFiN2QzIHAzeWsKKzUzNzE1IDA0ZjVjYmM3NDQyNDFkYmQ0NjRlNDkzZWViMGE4NWVkYWEwZTkzY2EgcDN5aworNTM3MTYgNjc1MjVlZmM5OWM1N2Y3YTk3NGI4ZTM0MGY4MjUxYTU4ZGZiZjMzMyBwM3lrCis1MzcxNyBhZThlZTllNWU4MTUwMzhmY2Y2MDhjMDQ5ZDk0MDUxOWY5MzBmZWY0IHAzeWsKKzUzNzE4IDU2MjJhMTNhZDhhYjExZDcwMTNlMTE2YmFhM2U2ZmYyMTViMmExZjUgcDN5aworNTM3MTkgZTI4MDBlOGRkOWM0ODRjNGE5ODk1ZmNiYTY5NThhZDJmN2JiOGQ0YiBwM3lrCis1MzcyMSA0MzVlZDY0MWEzMzNmODMzOTYzM2FlNzExMTEyOWZiZTFmM2Y4MmNiIHAzeWsKKzUzNzIzIGVhZWRmODRlYWJjZGY2ODM4ZGRkODQ5YWE0MTZjN2I4N2JmNzI5OWYgcDN5aworNTM3MjQgN2RhMmFlMWE0ZjcwOWQwZjE0ZDNhOWU1OGFkNmZkOGIyZTcxYTllYSBwM3lrCis1MzcyNyBmMjI5NjQ1ZDYwN2RkZTNlOTBmMTMzZDM0OGUwMjA5ZDZjZDk5ODE4IHAzeWsKKzUzNzMxIDM1M2MwMDlmNmM1Mzg1MjU0MGZhY2JhMGQzMWM2NTNlY2E3NmRjOTggbGVnYWN5LXRydW5rCis1MzczMiBmMzQwY2IwNDViZjkyZDBlNzc3MjM4NWE3MTk3ZTliMGFmMzdmMGE4IHAzeWsKKzUzNzM0IDRhMDFmNmUwMjAxNjg4NjQxZGY1YWY5Njk0ZDI5ODEwNDZlZGM1YzEgcDN5aworNTM3MzUgNWRiY2UyZWExMzNjM2MwMWU3NmIwYzZkM2E0OTQxNjk1YWJiYTkxYiBsZWdhY3ktdHJ1bmsKKzUzNzM2IDkwNTM2YmUwOTNmN2RhNWY5ZGU2NjM4YjFkNjUxMWRiMDNiNzdjY2IgcmVsZWFzZTI0LW1haW50Cis1MzczNyBmY2Y2OTAyZjIxMGVkM2IwNmI5NWJjNTIwNDUxZTc0OWJlYmNmZmQ4IHJlbGVhc2UyNS1tYWludAorNTM3MzggY2I4MTIzYWIyYTA2NWQ4YTA5MGQxNDIzY2ZhYTEyMTNjY2NlM2U0MiBwM3lrCis1MzczOSA1ZGU3NTQ3YTVhMjM3MTExMTM4NjYxMmE5YTlhMmZhNjIzYzA2NGVkIHAzeWsKKzUzNzQwIDNkMThkOGYzNjZiMTE4NGQ2MTliYTc0OTUwYTNkNzE1OGQ2NGQyNTkgcDN5aworNTM3NDEgMjlkNjU3NDFmNmM4OTZmMmUxYzE5M2UwMjBjZjdkZGI0MTI3MjliMSBsZWdhY3ktdHJ1bmsKKzUzNzQyIGE4NDQ2MGU1MzE2MDkzZDAwMzBmZWI4Yzc2MGFjMWMzYTk4ODU3MjQgcDN5aworNTM3NDMgNWVmNzBjNDlkODVhMjQzMzViNDNhZjQzYzNmMDliNmRmNjMxOTJhMyBwM3lrCis1Mzc0NiBlNjY4NWM4NDBlZTNjMTFhOTFlMGEzMzcyMWE1N2IxN2NmNTFmODM3IHAzeWsKKzUzNzQ3IDQyOWE0YmMzMWM4ZTM2NzBlNzAwMGZhNTQwOWM3ZTJiODBmNTQ3NTAgcDN5aworNTM3NDggZGNhOWJjODgzMDQwOTY1OGZiNzcyYTZkMGIzMDUzYzZkZDQzNDVkNSBwM3lrCis1Mzc0OSA1MDMzMGQxOGQxY2Q3MTQxYmFmYzJjOGE5OTgwYThiOGNhODgzZDc2IHAzeWsKKzUzNzUxIDE4MGQ0ZTg5OTY4MzkwNjlmY2E4ODE5Y2Y5ZjNjY2M1ZWEyZWEzZTEgbGVnYWN5LXRydW5rCis1Mzc1MiBlYzFlYmRmNTRlYWZkOWFiYjE0MjQxOGRjNjVjYmE0YTYyZGQzMDBhIGxlZ2FjeS10cnVuaworNTM3NTMgYmJlNmRlM2E5NzQ1MDA2ZjQxMjVhYWMzMjcyY2ViYzQzM2YzZTNlYyByZWxlYXNlMjUtbWFpbnQKKzUzNzU0IDcyNGUwYjYzYTc5YjVkNGIwY2IxNjdhYjhmOTYwZWM1MWU2YjM5MjggbGVnYWN5LXRydW5rCis1Mzc1NSA3YWQyOWU5OWVlYzg1NzI2MjBmY2YwOTg3MDNhYTU1ZDYwNGI5NzY1IHJlbGVhc2UyNS1tYWludAorNTM3NTcgMzJkNDZhYmFhOGFiYTRjNWU3YTljYTgyOTUyNTIzY2RjZDgxZDk2OCBsZWdhY3ktdHJ1bmsKKzUzNzU5IDlkMjUzY2QzOGI1YjY1YTNkNmM2NGM0OGY4Y2FmMzQ1ZTU1ZTQyNmIgcDN5aworNTM3NjAgMjhjNGQ5Yjc3NDBlZDAxMDM4NTczZWZhYzcwMWZlNzAxNzhjYjA0NSBiY2Fubm9uLXNhbmRib3hpbmcKKzUzNzYxIDM1YzBkMzhhY2RjZTA4MDJmM2JiZDA0N2Q2YzAwM2VjYzAwYzE0ODkgYmNhbm5vbi1vYmpjYXAKKzUzNzYyIGQ0YTZhNjdhMDBhMGJhMzViYzIxYjlhYzMyMDNlOWIwODU4MGIwYjQgcGVwMzAyX3BoYXNlMgorNTM3NjMgODFkNjhkZDg0YWEwNWNmOGQ1OGRmNTVhZjE3NDZkODFhOTk5ZmIxNCBsZWdhY3ktdHJ1bmsKKzUzNzY0IDFkYmE2MWMwNzcwMzRlMTY4N2ExZmY2MTVhYzJkYjdiYWYwODcyZWEgcmVsZWFzZTI1LW1haW50Cis1Mzc2NSBkYWYwNjM1MjdiOTcyMTRjOTVlMjczMjdkZGQ5OTJlYzA3ZTRkMDJlIGxlZ2FjeS10cnVuaworNTM3NjYgZDk0OTkzM2NkNmI0NmM3MmNmN2M0MDI5MTQxMmQyYzZlYjdhZjYxOSBsZWdhY3ktdHJ1bmsKKzUzNzY3IGJkMjRkMzgyNmNjODNkZjBjOWI1OGNkZGYxYzdlMmM0YzczMjYyZjQgbGVnYWN5LXRydW5rCis1Mzc2OCAxNzdhN2JlZTY0ZTllYjJkMzc3MmNlZmY4MWQxOWMyYzlhOWFlZGE0IHJlbGVhc2UyNS1tYWludAorNTM3NjkgM2JiZWM5MWM1YjhmZTY2ZWMzNGYwZjhmMWFiMDg4NGExNGE4OTMwZSBsZWdhY3ktdHJ1bmsKKzUzNzcwIDg4NWE3N2ZkNWMwMWM3ZGJmODNhMjlkNWRjYmU5OWY1OTZhMDkwNzEgcmVsZWFzZTI1LW1haW50Cis1Mzc3MSAzOTgzZWUwZjZmOTY0ZGJiMjI4ZjVlMWIxNTJkYmFkZTk4YWM1NTlkIGxlZ2FjeS10cnVuaworNTM3NzIgZDQ3NjhiZmY2NDNlYTgxM2Y2NmViNmQ3OTcyMTVkMmI1MmE1YTJlOCBsZWdhY3ktdHJ1bmsKKzUzNzczIGFiZmQ5NTE4NWFiOTkxOTM2OTQxZGFkYzQwZGFkZjVhZDIxZjZiYjQgcDN5aworNTM3NzQgOTBlMjJmZWE4MzYzNDQ1NjdkYzU1ZGU4YTlhOGEwZGFiN2NlODNjOSBsZWdhY3ktdHJ1bmsKKzUzNzc1IGRjNTY3ODliMjllOWE2M2I0ZjU3MDRmMGQ4MTQ1MTAzOTcxZjE4OWMgbGVnYWN5LXRydW5rCis1Mzc3NiBhNjU0NmMyNzM2OWE2YzRmMTMwZTZkZjEwZWM2N2ExNWJiZmRmMjMzIGxlZ2FjeS10cnVuaworNTM3NzcgMDk3MmMyMTc2YWY5YjlhOTBmOGZjYjBmYzRlYTVkYjQxYjJhZGFjNSByZWxlYXNlMjUtbWFpbnQKKzUzNzc4IGE2MjE4NGIwM2YwZjE1MDJkMGFiOGU3ZGVmOTJjOWI2NjZiZmE2ODIgbGVnYWN5LXRydW5rCis1Mzc3OSA3MzQ4MWUwNzc3NThhOTQxOTNmYjAxMWZlOTY2YWM1OTc4ZWVkYzkxIHAzeWsKKzUzNzgwIDUwMmRlMDc5YWIzYTIwNTIwMzM1MWEwZmY1MDJiOGQ4NDA5Njk2MDIgcDN5aworNTM3ODEgMWQ1M2VhMGZjMjNmMTVmNWQyYzYwNTc2ZTk2YzMwNWJjMGZhNzI2NyBwM3lrCis1Mzc4MiA0OGI2ZDAxNTM0MGFlNjk3ODhiNTk2OTM0ZjA0M2YzZjFmNTcyMjI3IGxlZ2FjeS10cnVuaworNTM3ODMgN2U0YjYzNWYxZDMxZGJhMGQ3ZWFlMWUxM2FiM2U4MGNjNGZhM2EyOSBsZWdhY3ktdHJ1bmsKKzUzNzg0IDk5YjBlMDRiMmViMWNhMDExZjhmYTgzYjMyZWM0NzgxM2Q1YzM2YjUgcmVsZWFzZTI1LW1haW50Cis1Mzc4NSAyYTI1MzI4ODNkODBmYjM3MmRiMmUzZWVhOGUyN2NlZTk2ZDc3N2Q2IGxlZ2FjeS10cnVuaworNTM3ODYgOTE0ZGQ1MDU5ZjM4ZjMyMjU1N2E4MjQ0M2NlMjhmNjFmNWNmMDJhMyByZWxlYXNlMjUtbWFpbnQKKzUzNzg3IDQ3NDk3N2NkNGQ5Yzg0NDE0MjhhOTE0M2QzN2VhYWEzNzE2MzA3NWIgbGVnYWN5LXRydW5rCis1Mzc4OCAyOWZiOGRiZDEwYjg1ZjRiMjlmNzk4OWQwNDVkOTYzMjdkM2I3OWFmIHJlbGVhc2UyNS1tYWludAorNTM4MDAgYmMyYmQwZjAxZDk1YjU0MzQ5NmZmYTE2YzViYmY2YTQyNTRhNThlMyBsZWdhY3ktdHJ1bmsKKzUzODAxIGI0YjMyNzg0MGZiMTUxMGU5N2M1NDA5NDA2MTQ2NjE0ZjU3NTNiZjAgbGVnYWN5LXRydW5rCis1MzgwOSBmNGY2OTVhNzU2NjRhZjNiYmYyZjc4NWQwNTMzZTNkNmNkY2U1ZDRiIGxlZ2FjeS10cnVuaworNTM4MTEgZDc5NWE1NWU5YmU0MWQ2ZDlkNTIwZDI3M2JmNjU2ZGZjMGRiMjY2OSByZWxlYXNlMjUtbWFpbnQKKzUzODEyIDczNmYzZDkwZTRlMjg0ODZmNzA3NWNjMDM4Mzc0MDY5OGQyYWQyNTMgcmVsZWFzZTI0LW1haW50Cis1MzgxNiA5ZTM1NjQ1YWY0MGY2ODJlY2MyZjkxZjY5ZTQwY2Q3MWRkNTg0NDA3IHJlbGVhc2UyNS1tYWludAorNTM4MTcgMzVhZTI4MjU3YTI4MDViNGE3MWU5ZWIxM2IxNzgwZjNlZDFmMDhlMCByZWxlYXNlMjUtbWFpbnQKKzUzODE4IGIwZjhlOWIwY2MxOTkyOGNjZjk3M2E1NTI4ZmZhNDNiNzc3N2ZmYWMgbGVnYWN5LXRydW5rCis1MzgxOSA4MWI1ZGY1Nzk4YzI3YTVhNGIwYzk4ZTFjZWYxOGVjZmZlNWViODk5IHJlbGVhc2UyNS1tYWludAorNTM4MjAgMzZkN2IzYjZlZTU5NmZlODE4ODE4MGU4OTJlNmZlZGZmMDZmZDQwNSBsZWdhY3ktdHJ1bmsKKzUzODIxIGQzODZiNDYwOTkzYjczYjg2ZmZkYWNjMDgyYzUyNTNlZWM0NTA1MmIgbGVnYWN5LXRydW5rCis1MzgyMiBkZjAyMDRjYTk3MzlmMTU3NWVmMDNhOWNiZDNkMjMwYTllNTZjOTZhIGxlZ2FjeS10cnVuaworNTM4MjMgMGNjNDUwYjg5ODM4OTE2ZDE1MjNiYjQ3Y2UwZTRiZjg1NTYxZWYyMCBsZWdhY3ktdHJ1bmsKKzUzODI0IGM5ZTQxM2IxZDU0MDZhMGE4YmY3Yjk0NDZjNGY3YmRiY2I0ZTM1NmEgbGVnYWN5LXRydW5rCis1MzgyNSA1NzdiZjIxYjJjODZkY2UwNWIwMDMxNDQ2OTlhYTE4YzI3MDFiMmNjIGxlZ2FjeS10cnVuaworNTM4MjYgNTNmZDE0NGEzZjFhYjNjYjlmMjU4MzAyYWI1Zjk4YTZiZTg1NDY3ZiBsZWdhY3ktdHJ1bmsKKzUzODI3IDY3MmI5MDc1NzY0NzEzZGE4ZDU2MGU3OThlYmEwYWIwMzc1NTlkOGIgbGVnYWN5LXRydW5rCis1MzgyOCBjMzRiZDY1ODllMWVlYmNkMzk3NTMxNzM2OWNjNzJkNmQ5Yzg3NGNiIHJlbGVhc2UyNS1tYWludAorNTM4MjkgZDVhMTVmODUzZGI3NGRlNzZjZTkyNmI1YjUzNTVmMTFiNWVlNjhhMiBsZWdhY3ktdHJ1bmsKKzUzODMwIDAxZDU0Yjg4YmY1ODZlM2I4ZDBiNGE2MzQ5ZTIyZDY3NDYxNTBiOWIgcmVsZWFzZTI1LW1haW50Cis1MzgzNyA2ZmEwZDY4MmUxZTU1MGFhMDFiM2QzM2MxYmQ3MjE2ZDI1MTk2OTFmIGxlZ2FjeS10cnVuaworNTM4MzggODEyODYxOWU5ODRkZTk4Y2Q2NzE0MDU0YThkMmE2NDc2ZDk5NTdlNiBsZWdhY3ktdHJ1bmsKKzUzODQxIDQzNzk3Mzg0MTE1ZTU5ODg4MWU2MTE2YTAzZGIwNzc0MzRkNzljMWYgcDN5aworNTM4NDMgNTVkZWIxZGE0Y2I4ZGUxNjM1MzEyZTRmZGQxZmM5NTExZWQ3NzgzOCBwM3lrCis1Mzg0NCBlNjhiNDhjMzlkOGFjYjUzZjNmMzE1Zjg3OWYxOGJhM2UzOTgzMWMyIHAzeWsKKzUzODQ1IDYwODgzZTYxNDI5OGYzMWE2Y2U2OWRmNDQ0Zjg4ZWM2NzYyNGE0NTEgcDN5aworNTM4NTIgM2ZiY2Q2ZTJiY2I3N2RkZDljZDA4MjQ4MjRhYzNhZGQ5OTNiMzFhOCBwM3lrCis1Mzg1MyAzNDI3YTk3MzQ1ZmNmZTc0OGNkNGM4OTFhNjM5NGJiYmU4ZGYxMmIyIHAzeWsKKzUzODU0IGMxNjRiMGI3NTk3MTYwZWY1MjI0ODgyMjEzY2JmNDQ2OTdlNzU3NWQgcDN5aworNTM4NTUgMTI0ODlhNWRmYjRhYjAyZWY2MzczZmIzZGFlOGExMGRiNTE1ZWNlYyBwM3lrCis1Mzg1NiA5MDk3NjVlYjM4MWJkZjViNzg0YmNhODljYzU3NjlhNDA2Nzk1ZjkwIHAzeWsKKzUzODU3IDI5OTg3MjQ0OTA1ZGZmZDQ0YmEzZTVhMDdmMzEyZmM4OTVhY2Y4ZDcgcDN5aworNTM4NTggYzUwZTI2MzMwMWRhYmI1MWYwYTc2Y2ZlMTRkNjk0N2Q4YjI1ZDUxNyBwM3lrCis1Mzg1OSAyMGUwOGE4NzkxNWE1NWFhODUyYmY2MjYzNTYxNjUwZTAzN2Q4ZjQ4IHAzeWsKKzUzODYxIGYzYTU5YWNjYTUxZmZlODcyNDA4N2M2OGQ0ZDE1MDA4MzAzODZhZjIgbGVnYWN5LXRydW5rCis1Mzg2NCBjOTNmOTJhN2Q5MjAyZTJhNTIwYjgxNDRmMDEyOWUzNTMyNTI4ZjJiIGxlZ2FjeS10cnVuaworNTM4NjYgMzJjNDg5N2I1ZDQ2YzAwZWVlY2VmMWJhZWM3ZGMyMWQwZDFiYjVjMSBwM3lrCis1Mzg2NyAzYmFjNDkyNThhNGE1ODBmOGQ5OTUwNTk0ZjU4Y2Y3ZjE5NWVlZTg5IHAzeWstbm9zbGljZQorNTM4NzIgMGVhMjRmNGYyNDY3YWZjNDkzZDEzNGY1NThhYTQ3MGNiZTgwNDdlOCBwM3lrCis1Mzg3MyBiZDE0MTllOTQ3NzNmMDhhMGJlZDYxMTQyNDBmYTNlMjM5YjE5YzQ3IHAzeWsKKzUzODc0IGIwNTc5MGQwNjZiNDc0NGU1MmQzYzcyZDkyOWJkZjE4N2NjMTYwZjQgcDN5aworNTM4NzUgNTgzZmU3NTNlNzIxMjk3OTEwMWI0ZWUzMmU4NWUwZDNkMTUzMTEwMSBwM3lrCis1Mzg5MiBiNThhNDM3NGFjMjFlNDViMWEwNjJmMGU3ZmZjMDBkMDMzZDg1Yjk5IHAzeWsKKzUzODk3IDQyZTc5YzU5MjEyZDIyZDI1MmEwNGY4NTViN2Y3OWIzMmIxNDAzNjkgcDN5aworNTM4OTggOTMwNDdlZTQ4NmRhNGEwOWY0ZGRhMmQzYzZhM2QzZDUyMTUyYTQ1YSBwM3lrCis1Mzg5OSAyZTRkYWMwNTljYzU0YjNhNDBlMjM3Y2RjYTU5OGUzODdhNTczNDMzIGxlZ2FjeS10cnVuaworNTM5MDAgNjVjZDFmMjgwZTYzYzBiNjZlMGU2ODdhMDA1NzY4ZjlhYWY4ZWJiZCBsZWdhY3ktdHJ1bmsKKzUzOTAxIDg4MmI5YzE0ODk1YzBjY2U1ZThlMzgwMWM5ZjNjOWZlYWE1MDM0YzEgbGVnYWN5LXRydW5rCis1MzkwMiAxOTFjNDhjYThiZjljMTI2ODE5NTQyOGI4Njc4ZWI4NjJmMzUzYzkxIGxlZ2FjeS10cnVuaworNTM5MDYgZTg1NDI3MTQ5NWRlMTA0NGNhZjZkYWFhMDk1OWYyNTczMTNkN2FiNyBwM3lrCis1MzkwNyA4MzA4OGFkODNhNmIwZjJkYTgzMmFjYmFkNWQ2MWZhMmE4NzQ0MzA5IHJlbGVhc2UyNS1tYWludAorNTM5MTAgMGM0MTBjNzg1MzFjZjMwMjMzYWE4MTc1OTc0Y2ZlMTZlZmQ1OTMzNyBsZWdhY3ktdHJ1bmsKKzUzOTExIGQwMWJkMzdiZjVjZTUyNjE4MGQwYWEzMWNhMzkyZjczNjk3OGI0N2QgbGVnYWN5LXRydW5rCis1MzkxMiBmMmYwYjQxZjI3MGRhZTRjNjk4ZjJjYWZhOGU0NTMwZjFmMzk4OTllIHAzeWsKKzUzOTEzIGVhYWVlNzg1ZWI4NmQ3OGYyNDJjZjQzY2UxODA0ZmE2ZDU2ODdiMDcgcDN5aworNTM5MTQgOTdjNzdiMWUzNGJmMjQzMTIyNTQzZTJlNDFhZjg1YzBjZTcyMDdhNiBwM3lrCis1MzkxNSBhOGMzYWFhYjAwZWEyMzI0YTZmMDE4MDY3ODZkNzFlNzhlMDI2MTZiIHAzeWsKKzUzOTE2IDE5YWZiMDMwMmEwNmViMWU2YWJjNzU1ZjI0ZjUzZGUyMmE3Yzc0ZGUgdHdvdXRlcnMtZGljdHZpZXdzLWJhY2twb3J0Cis1MzkxOSBkODQyZTM1ZjVhMzEwZTU0NmVlNTZhMDViZDEwNTYxZTVkYmNiNzBkIGxlZ2FjeS10cnVuaworNTM5MjAgMDcwYjlhMGI0YzA0MDQwN2YzN2JlMjllNGMzOTkzZmE1YjM2YWFhOSByZWxlYXNlMjUtbWFpbnQKKzUzOTIxIDEzZjM5MzFiOWZjNDY5Mjk0MmUzZWNlNjJkZDBmYjliNjkwNjcwOTcgcmVsZWFzZTI0LW1haW50Cis1MzkyMiBmNTc5MGY5NmFjZjNjMzlkZGNjN2QxZmMxN2FlZWEyY2U3ODk2MWY4IHAzeWsKKzUzOTI2IDViZDNhMjJiYTQ5NmIxYzQwOTJjMmQ0MmE0MDUwZGRmNGIxNGI1NDcgcDN5aworNTM5MjggMWI5NzJiN2UzNTJhZGYzMTA1MjkxNTEyNzBlZDE5YTk4OTFjOTVkNSBwM3lrCis1MzkyOSA0MGIxN2FmYzRhYTdiZjcxYjUwNGM5NDg3NjZmZmU0MGI4Mjg5NzY4IHAzeWsKKzUzOTMwIDBkMmRjMzYxMWUzYjM4MjZmZmQ5MzE1NjU0MDllMWMxOGJkZWIwMGIgcDN5aworNTM5MzEgNjEwYzdhY2M5OTgyOGU2MmUxZmQzN2ZiMGY2N2I4NmU0NTEyYTkzZiBwM3lrCis1MzkzMiBiZTQxZGE2NmNlMzdmNjQxZjViNjU2ZGZhOWU5ZjUyYjY5YjVmNWMxIHAzeWsKKzUzOTMzIDI1YTg0OTAwZTIwNTVjMTRjNzY2MGU0Y2U2MzViNTY0ODc0NWZmMTEgcDN5aworNTM5MzQgMDM4ODNhY2I2NTBiODA4YzY5ZGY0NjE5MjdmZGFjZDM1MGQxN2RjZSBwM3lrCis1MzkzNSA2MjE0NDNmYzAxYmJhMTU1OWQwOGJjYmJiNGZjNTYyYzI2M2JiNzU5IGxlZ2FjeS10cnVuaworNTM5MzYgOWQxYjBjMjk1ZWJiYzBmYzE3OGM2MmM0MWU5ZjYxYjEzMGQzNWM0OCByZWxlYXNlMjUtbWFpbnQKKzUzOTM3IDkzZjU4MjgwMzczMzA0ZGUyMTljOGEwNWM2NmZlMzkxMGI0Yjk4ODYgcDN5aworNTM5MzggN2JjN2Y3NDBmNjlmZGM5ZjkyZmQ1NDg4MjA3YTBmM2IzMDNmYTE0OSBwM3lrCis1MzkzOSBjMzQ1MWE3N2JmZDE2NGRmNWRmY2Q4MzcwZDUwOTg3ZDg5OTNmZDAyIHAzeWsKKzUzOTQyIDkwYzgwN2VlODc2N2IxYmI2NTA4MWI2YmFjYmJkMjY0OTE3ZDU2YWIgcDN5aworNTM5NDMgZWNlOGEzOWZhMjgyZWRjNjJlMTRmYjc2OWNiMTM4M2I2ZmQ3NDhmZCBsZWdhY3ktdHJ1bmsKKzUzOTQ1IDU1ZDdlOGZhNWVhOGQ0ZmE4ZTcxNzA3MzBkZjU1NmFiZDdkMWQ3YTIgcDN5aworNTM5NDYgYTI2MjliZTFiMWQwMTU5OTI3MTkyYTNjYWRlNTE1ZGRlNTIxODY5YSBwM3lrCis1Mzk0NyA4OWJhOTNjNzAxYzg4NDczOTZkODJmOTY1YzY3NWNhZDVhYjVlZDk5IGxlZ2FjeS10cnVuaworNTM5NDkgNDVhZmZhZTQ2NWU0MTE5MjkxODE0MmZlZmY3NDZmMjA0ZjUxZmZlMyBsZWdhY3ktdHJ1bmsKKzUzOTUxIDAzNzZmMTNhMWFmOTEzMDcwNDJkYzRhNWIyZjU4N2EzZWQ5YmIyZDMgbGVnYWN5LXRydW5rCis1Mzk1MiA2YWExYmU1ZGQwMDk4YjM1NzFmMzViYTcyMzk5NzI4MjRlMjdkMWRmIHAzeWsKKzUzOTUzIDJjMDNkNzA2ODM1ZTQ2MGJiZGM4ODgxMWM1NDBmOTEwNzgzNGIwMDIgdHdvdXRlcnMtZGljdHZpZXdzLWJhY2twb3J0Cis1Mzk1NCAwNDdlZTIzYzBmODc4ZTkzM2VjMjg0ODIxYWJmZmQ5NzNhNGQ5NDEzIGxlZ2FjeS10cnVuaworNTM5NTUgYzhjMDY3MzAyNjU5OWJjZDY0MGVmYWE5NTM2ZDRkMjkzNmQ2OTllMCBsZWdhY3ktdHJ1bmsKKzUzOTU2IDE4NTNjZjA2ZTM2YmEzMTJhYmQxMjNlOGMyZDE2OTg5OGI0NzdkMjggcDN5aworNTM5NTcgMmNhMTRkNmEzNjliNzI1YjEzZDQ5YjBhZTM3N2IzM2IyNTM0MjZkYiBwM3lrCis1Mzk1OCA4NjQ3MTkwZGI5NmNkMWFhOGI0M2IyNjRmMzFiNThiZDhiYzA0MmUzIHR3b3V0ZXJzLWRpY3R2aWV3cy1iYWNrcG9ydAorNTM5NTkgZmMyM2ZjODYzOWJhZjAwZGU1MWI0NDY1MTdmZWU5NmEyNDFkNzEwMiB0d291dGVycy1kaWN0dmlld3MtYmFja3BvcnQKKzUzOTYwIDRiOWQwZGFjNzljY2MwOWJjMWY3YjQ2MjEyYzcwMmYxNDAwNDM1YzMgcDN5aworNTM5NjEgYzc5ZTYyMzRmYjE5ZWY2YTM0Y2VhNWEyNTljZDBkZDZiZjZiMzRhMCBwM3lrCis1Mzk2MiBiYjczZDNhMDQ1N2U5NzdkODQ4OTYwYmRlZWMyZTc5NThjZWU2NjI3IHAzeWsKKzUzOTYzIDdmNzA3NGQ0ZjgyY2Y3MGNhMWQ3MDk4ZDNjZDIzODY3OTRmOTZmNTQgcDN5aworNTM5NjQgZDk3NmM5YTYzMTExNGE4ZmFiMWIwZjUxMTMzYmI0Y2ExMjA4MmQ0OSBwM3lrCis1Mzk2NSBiMDgyNmU4ZTQ1Yzc4ZWY1NDg4YmY4YTQ4YjljZWM4NzczNjE5YmU4IHAzeWsKKzUzOTY2IDMwOTNlYTliNDAyNDk3MjgxOWRjMDc3NDJlYzAwM2RiYzA2OGFiZTUgcDN5aworNTM5NjcgZTc1OWZkOGQ5NWFlN2JjY2M0NjI1OWUxZTA0ZDFhNWFmZDg0MzY0YiBwM3lrCis1Mzk2OCAxZTRlMjkyNDg2YjY4ODg5ODYyYTgwNDdjODAxMDk2NDAxMGJkYjM4IHR3b3V0ZXJzLWRpY3R2aWV3cy1iYWNrcG9ydAorNTM5NjkgZjNmMGM2OTdhYTViMTYzMmVkMmUwYzRhZjNkZDkwZGUyM2UzMzhjOSBsZWdhY3ktdHJ1bmsKKzUzOTcwIGVlMzYwMmM3YWUwNDE0NzRhOGM3NWRhZDA0ZGNiZDNkZmRhMDUwOWUgbGVnYWN5LXRydW5rCis1Mzk3MSA0MzA4MTFiZGJmZWY2NmJjOWE4NWVjOTRjY2I3YWI2OTk4OWFhY2RlIHJlbGVhc2UyNS1tYWludAorNTM5NzIgOTRjNGUzNmMzMTI0MmI4OWUwMjYwMTUwYjEyYWViMmMxZmQxMjEyNSBwM3lrCis1Mzk3MyBkYTczYjVhMGZkOTBhYmEzMmM0Y2IxZDA5MzRkZDA0YTNkNzI4ZDg5IHAzeWsKKzUzOTc0IDJjZTIyOWE3YmEzZjY5ZWM1NDdlNzlkYzQwYTViMmQ1N2Y1OGY0MDYgcmVsZWFzZTI1LW1haW50Cis1Mzk3NSBjODNhY2ZiMWE2MzJmNzk0NmYzNDZlNzIyZjcwZGU3OTFmM2MyMzQ2IGxlZ2FjeS10cnVuaworNTM5NzYgZmVkYjAzZWFjNmFkNmQxMTA0NTA0OGQyODk2YjFlN2ViMGFmNzQyZSBsZWdhY3ktdHJ1bmsKKzUzOTc3IGFhMTk1YTFhYTk1NTI4Yjg4NTMyMmRmZmFiYjRiZTMwNDE4YTM3MTEgdHdvdXRlcnMtZGljdHZpZXdzLWJhY2twb3J0Cis1Mzk3OCBlNWU5ODM3ZGE3MGI3ODYwMGE4MGE1MmU3NzI2ZmMyMzkyNGU3MWZmIHAzeWsKKzUzOTc5IDBlYTUyNTU4YmRmZWMyOWFmOWNkOWM5OGUwYzA1ZGIyYmQyNWEwMjIgcDN5aworNTM5ODEgNTQxYThiMWI1ZGE3NWQ5YWY1NDk0MzQ3MDRiMWFiNTYzYjcyMDc3MiBsZWdhY3ktdHJ1bmsKKzUzOTgyIGU2NmRkYjZlMzRlODQ0Njc3NjVhNzZkZTdjY2UzY2ViMzM0OWQ2NGMgcDN5aworNTM5ODMgNDE2MjkyYzgyNDljZThjOTA4MGM1NDExMWZhNzg4NDcwNWZhZWM4NSBwM3lrCis1Mzk4NCBjMjRlOTVkMTE3NTIwMWI1NzQ3MDQxNWFiYzNiMGUyYTBjYjQ3YWFkIHAzeWsKKzUzOTg1IGQ1NTQ2ZjA5ZjIwZTc2MzhiNzU4MjQ4ZTVkNTRmMWI4NzZlMmFhZDIgcDN5aworNTM5ODYgMzBlNWNiM2E1NWFjMzE0N2Q5ZTkyZWEzODhmNGY3OTQ1NjE2ZTc2NyBwM3lrCis1Mzk4NyAxNDBmMzUyNDAyN2YwZTBiNWE3MGNlMmZmMTU5NGYzMWJhMjQ2YzhkIHAzeWsKKzUzOTg5IGE5ZTZjNzNlMGZhNWIyMTMyYzE1MzFjMzFhYWVmNGNmZmU0ZDUyNmIgcDN5aworNTM5OTAgMmQ5ZDEwNzAyZWM0NGUyZmU0Y2Y4MTQ5YzZjNmYyNWE0MzRlZGMyMiBwM3lrCis1Mzk5MSA2YzBkMGJlODJiNDdiYWYyOWE1ODExODQxYzU4Yzg4MjcyOWFiZGVmIHAzeWsKKzUzOTkyIDExNzc3Yzg4N2Y3Y2UwMGU0YmQ3Y2VhZWM2MTM2OWZmOGI5N2U0NTUgcDN5aworNTM5OTMgYTJjOWViOWFiNjA5Njc0YjQ1MmYzZGJiNDk5OTFiMjY3NWMzNjE2ZCBsZWdhY3ktdHJ1bmsKKzUzOTk0IDBiNDc0NDZjYzQwODRhMDM4MGRiOTY3NzE4ZTQ3ZjcxZGU0MzU4ZTMgbGVnYWN5LXRydW5rCis1Mzk5NSA0NmY3NzFlMjY3YmM4MTU4MjhiNmVkMDZlMDIzY2Q1YzNkNGRjYWEyIHAzeWsKKzUzOTk2IDNjYWJiZmE0Mzk4NDA5M2IxM2Q3Y2M0YjNkZjk0ODk4YzUxMWU3NWEgbGVnYWN5LXRydW5rCis1Mzk5NyBkNjI4MDVhOTkzYzUwODgxOTgyZmY1MWVkMDE2ZTQxYjY5YWM1NmRjIGxlZ2FjeS10cnVuaworNTM5OTggNWVhZDMyMTMwZjY0NmU4YjJlNmFmY2UwZDk3YjMyMzVkNzYxMDFhZSBsZWdhY3ktdHJ1bmsKKzUzOTk5IDRhNGY2ZjAyNmYxYzU4ZjQ5OWFhY2E4MjY2ZWNmMTE3MmIyY2UxNzUgcDN5aworNTQwMDAgNjFmZWUxODUzY2E4OGYzODIwYmY3YTNjNjNmYmY0NWE3MjU2MWQyYiBwM3lrCis1NDAwMSA4MGU4NjFlN2ZhYmU4ODg1ODZlY2RhMjdmNjhjNDk5Y2M0ZjZjZTM4IHAzeWsKKzU0MDAyIGMzYjI4YmE5MThmODNlYmZmMmU0Y2U4MTE2NTRkYTdkNGIzZjIzMTcgcDN5aworNTQwMDMgMWY3OTBkYTc5ODQwOWQ5MWNlODljYmQwYjBkN2VmZWY0NzY5YThiNCBwM3lrCis1NDAwNCA0MzFiMzIzODU5M2VhY2JhYzY1YTU5ZjE0Y2NiNGQ5OWViODE1NzZmIHAzeWsKKzU0MDA4IDc2Mjk2NGY5OTg3MTA0N2JmMDIzOTE5NGNhNzI1NGQxZDMyZDQ2YTUgcDN5aworNTQwMDkgYzAzNDQ3MGUzYzBhZWI5MTY0NzQxMzcyYTU3MGQ5ZWIxNGMwNzc0MiBwM3lrCis1NDAxMCA4YmViNzU0MDJlNzRiZjU1NDdkNGZmNDk3YjdiOGRhMDBjZjhkODM5IHAzeWsKKzU0MDExIDkzMDMxZTcxNjVhYjAxMjlmYmJkOGExMDlmNmJlYWIwMzRlOGY0ZDUgcDN5a19ub19hcmdzX29uX2V4YworNTQwMTIgYmE5MmU5YWRlMzZmMTE3OGFkNDU2NDc1NjgzMzg3NTViNmIzMTNjMyBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAxMyA2ZDkxZTc0ZmNmNTVlNTIwODZkOGFlM2ZmNGIyYzE4MjUxMDkyYmIxIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDE1IDM0YTdjMjllNjVkMTYyYWYxYTcwODUwMTA4ZWI3NGNjMDY1ZGI5OTggcDN5a19ub19hcmdzX29uX2V4YworNTQwMTYgZTEwM2I5MzdkNzQ3NTEwZTRlZTMxMjBlYWZhM2NkNGRlODk2MjMxMyBsZWdhY3ktdHJ1bmsKKzU0MDE3IGExYWVlODEwYjczOTY4NjA2MGRmZjBkZWUyNzFiMmY5MzRhMGM0ZjAgcDN5a19ub19hcmdzX29uX2V4YworNTQwMTggOTUzM2ViMGU4N2NmZmNiZjUyZjJjYzZmMTBjMmJmZWJkMzRhODc0ZCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAxOSBmMjUyNDY4MDU4NTA3ZWM3ZDk0NGQ5ODQzNjgxODMwNWJiZWQwODk2IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDIwIGJkMzU5MGI4Yzc4ZWU1OTFlMDQxZWM1ZWIzNjNjZGNlMjcyMzA5NzAgcDN5a19ub19hcmdzX29uX2V4YworNTQwMjIgOWRkODZlYWQ1MWMzNzc2Y2Q2YTRhYTFiYzY0YjE3YmFmMDFiZDY3OSBsZWdhY3ktdHJ1bmsKKzU0MDIzIDE2NTQ2MWFkMzhkYjhlMDVlMTgxNTJiYWZiOTA1ZTkwZTA3YzE1YjAgcDN5a19ub19hcmdzX29uX2V4YworNTQwMjQgODNiOGM3MGVmZDFlNWYxYmVhNTgzNDI3MjZhYzVjOGRiNzI0ZjRiZCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAyNSA5ZWI2MGEwNzI4NWE0N2VkMzQ3MjZiODdhM2JiNmUxZTdmMzc0MTAyIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDI2IGE4Yzc5YjFlNjk2YWU3ZWQzMmIxODU0NWIzZTMyNTAwN2IxYmUzNGYgbGVnYWN5LXRydW5rCis1NDAyNyAxNjViYmVkMzM3OWQ2ZDNmNDViZTFlZGYyYWUxMmY1ODQ3Mjg2MTBmIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDI4IDJjNmNkOThkYjBiOGYzZTNlNzdjMzZjMDlkN2YyMjY5YjYzN2Q3OGEgcDN5a19ub19hcmdzX29uX2V4YworNTQwMjkgYjM1Y2ZkOGI0OTEwNjE0ZDJiZGQ3MDAxM2VlMDgyYmM5ZTUxNTJmYiBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAzMCBhYzBlYmFlNDU4NzIyMmRjYTIxZGQxNDc3ZWFmNGM5NDZhNjU3OTNiIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDMxIDRjNTZmY2VmYjI4M2I3ZjZiYTQ1YjRlNWFmZTM5M2NiM2IwMzlhYmIgcDN5a19ub19hcmdzX29uX2V4YworNTQwMzMgNDA4N2MwZWM3MzNiYmE1NGU4MDEzNzI3ZWQ2NGYxNzNiOWE2MTc1ZiBsZWdhY3ktdHJ1bmsKKzU0MDM0IDAxZGRlY2I3NzgxNTQyNjM4MzRlOWIwMGIxY2RhMmFkNjQwOTBlNWUgcDN5a19ub19hcmdzX29uX2V4YworNTQwMzUgZTQ3NmE1YTc4YjI5MzdlNzY3MjEyMmYwMWFiNjY0NTVkYjBhOTNjZiBwM3lrCis1NDAzNiA1NmQ1MWY1OTQ4NjUzZGEyYTFlOTk3OWVmYzRiMTFlMmY2ZGFkMWY4IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDM3IDdkN2YzMjJmMmNiNjc4NzI5MGJmNjczNTgzZjc4OTMxNWM3MmY0NTkgcDN5a19ub19hcmdzX29uX2V4YworNTQwMzggZTIyMDhkNGY1YTdmYzliODZiMzU1NmQ1M2JjYzg3MDIyNjk0ZjFiMCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAzOSA3NDcyZjdiN2Q5MDM0NDYxNjJiMWE2YjFlZDNkMjExNmVjODQ1ZmNlIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDQwIDFkY2UyNTAyNTY3OTIxYjI1MmM5MzAwNGYzY2QyODVlZTVjZTFlOGIgcDN5a19ub19hcmdzX29uX2V4YworNTQwNDEgYmRiNTI3MjhiMDJlZjRhYjcyZDg5NzBmNDgzNDVjNWZjNzNiOWRmYyBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA0MiA0NTU1OTYxYzVhMmY5NmFhOTNlODJiOTdhNDQ5YjM2MmRjZjU5NDhkIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDQzIGUxNjI2OGMyNzNiYjI2NjRjNjA5OWVlYzUwMmJmYjVhNGE1NjA5ZWIgcDN5aworNTQwNDQgNGFlMDQ5MGUxYTBjMGYzNDlmNjc4MWMwNjQ1ZTIyOWQ0NmIxMWM3NSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA0NSBkZTJjOWY5YWVhMWVlNzZkNTlkM2UwZTUyYjdlZjNiY2YzYWFhNzkxIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDQ2IDY5Y2E2NTdhNjRlN2VkYmYwNWViMmMzNDkwY2RmYTU1ZDI0YTE4NzcgcDN5a19ub19hcmdzX29uX2V4YworNTQwNDcgNGMxZTJjMzNmYWNkMDhjZWViNjcwZWM4YzQzNWM3OGI3NzdjZDFlMyBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA0OCAwYzE0YjY2YWNhNzAyYjRkMWY5ZmVhZGZjM2E2MjI2NzA1Y2I2NGY1IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDQ5IGVlNDYyMTdjODdhZjdhODczODE5YWEzZGNjNzMzMTI0Zjk2NTk4NTMgcDN5a19ub19hcmdzX29uX2V4YworNTQwNTAgMjdhMjE4NmY0NWNiNGIyMzcxNjNlNmU3NWIyOGQ5NGFlNjAxZDMxZSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA1MSA5MTg1YzcwYTE1ODVlOWE2ZmMwYzJkZmRlZjc2NTgxOTY2ZWFkOTAzIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDUyIGQ5YjE1MzRlYzc5ZmU3NTA0M2MwMDgxOTY1MWE0OTUyNzE5MmM4YzggcDN5a19ub19hcmdzX29uX2V4YworNTQwNTMgYjQ2YzZkMjc2MjVlM2U2YzAzOTY5YzM2YjY0OTI1NWQwMjQ3ZjI4NiBsZWdhY3ktdHJ1bmsKKzU0MDU0IDUyZTQ1MzA3NzNjOTcwMWEwNmMxMWUxMTU3N2VkZTliYjFkZjI2MGQgbGVnYWN5LXRydW5rCis1NDA2MCBiZTQ0YmYyZGIzNTBlNGFhMmM0MjU2OTExZjMwMjE2MzU1ZWVlMTBlIHJlbGVhc2UyNS1tYWludAorNTQwNjEgODg4ODRlN2JhYzZkYzJhMjhmYTg4YjA4NjE0YWM3ZTYwNjIzMjQyMyBsZWdhY3ktdHJ1bmsKKzU0MDYyIDUyZTk1ZmIwODkwMTdkYWI4OWY3NjBjNWM1MWExYWRjOWNlNTQ1ODYgcDN5a19ub19hcmdzX29uX2V4YworNTQwNjUgMzJhNGU1ZWUyZDk4YzE0NTc5YmQ1MWY1MmU4NmFhYTAzNWM5ODIzNiBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA4MCAxYzU4NjExYzUxZDBjYTZmYTU5ODJiNWExMjg4Y2FjZmFkMDczMDY3IGxlZ2FjeS10cnVuaworNTQwODUgYmU2OGRhNTYxZGNkNjc4NzBmOTY1YjE2NGM5YjI3YjY3YzI1ZmUxYSByZWxlYXNlMjUtbWFpbnQKKzU0MDg2IDRlMzQ4MTk2MWZiYmMyZWNlMTY1MDI1Y2JjYzA4OWIyMTYxMTBlZGMgbGVnYWN5LXRydW5rCis1NDA4OCA2OGE0ODdkMjFjMDY5YTc1YzMzZWM4NmM1ZmM2ZjM5MDJkNTc3N2FiIGxlZ2FjeS10cnVuaworNTQwODkgMzI0YTcxYTEwM2VjMmRmZWNjZDNhNTA5OWU4MDllYzIyZGRlNmQ5NCByZWxlYXNlMjUtbWFpbnQKKzU0MTE0IDJmMmI4OTM1YTgxZTI2MjAyNmJhMWY1MmJmMWRlODRkOGVhNjA2ZGQgbGVnYWN5LXRydW5rCis1NDExNSA2ZGVmODJiOGNmMjBhYTIyM2JhN2E1ZWFhOTljNGM4OTlkNGVjMWQzIHJlbGVhc2UyNS1tYWludAorNTQxMjQgZmU5YTlkMzlhMzUxN2ZlZjU4OTI0M2U3OWZhZTU3ZTk3MDE2ODI1NCBsZWdhY3ktdHJ1bmsKKzU0MTI1IDNiMWVmY2UzNThhMzYwMTI3MzBlZGMxNmI4ZGZiZmQ0ODcwMWQxMGQgbGVnYWN5LXRydW5rCis1NDEzNiAzNzIwNzBiYTZmZDMxZjRlMzg5YTkwY2NiM2NiMDYyZmQ4MTdjN2Y4IGxlZ2FjeS10cnVuaworNTQxMzggZTFiMDAwYmVkNDYyZjM4YmRkMGYwN2NlYTE3NWY1MzcyNmNkZGFkMSBsZWdhY3ktdHJ1bmsKKzU0MTM5IDZkMzQ1NGMzNzFkZDQzYWM5ZjMxYjRhMzM2ZjE0NDJkNDZkYmY5NDggbGVnYWN5LXRydW5rCis1NDE0MCA4OTFjMjhkNTM1Njk2OWIwNDkyNWFhYTZmNDViZTYxYTg1NjJlYzZiIHJlbGVhc2UyNS1tYWludAorNTQxNDkgMDgxYjRlOGI2ZjViODIxNjVjMzA1ZTI3ZDdkYjIzOGNjMTY4MWMyOCBsZWdhY3ktdHJ1bmsKKzU0MTUwIDYwNTg1NTMwZjMwYjhiY2RhMDU1YTcwYTE2ZTAzZDYwMWM2NTE2N2YgbGVnYWN5LXRydW5rCis1NDE1MSBlNDIyODAyMjAyYmUwYTIwNWUwNTBiMzQyOTg0MTA5MzJiYjMwMmVjIHJlbGVhc2UyNS1tYWludAorNTQxNTIgZjFlODhjMzUwMmQ5ZjFhYWY4MGM0NWNmZTk2ODhmYTZiOGFiYTY3YSBsZWdhY3ktdHJ1bmsKKzU0MTU0IDQ4MjU0NzM5MTU5ZmZhZWJiNjgyZGZiY2FiMThkMzA0YzE1ZWUxN2QgbGVnYWN5LXRydW5rCis1NDE1NSAzM2I0M2RlYmI5N2VlNzY3N2I2NjM2ZWQ1ZjEwZDZhZDA0ZTc1MDU2IHJlbGVhc2UyNS1tYWludAorNTQxNTYgNWMxOTZhYTZlY2Y0OGRiOWNkOWUzNWRjOGZlZjJiMDM4YjRlODEzNCBsZWdhY3ktdHJ1bmsKKzU0MTU3IGI2ZGNiNzc4MzM4NTdkOTlhOTQ2ZjVjYzNmZDc2NTBkZDQzNjk3MTkgcmVsZWFzZTI1LW1haW50Cis1NDE1OCAxMDgwZGU0OWM4MWU4ZGY1NjRjOGEwNDc4YmY2MDQ5MWQ3NTQxMjMwIHJlbGVhc2UyNS1tYWludAorNTQxNTkgNWMwOGU2NDYwZGM1NTRmODgyMTllYjE0ZDVjYzU4ZDlkYTI5YjIzZiBsZWdhY3ktdHJ1bmsKKzU0MTYwIGIwZjI2YTc4MTNjOTA5NmY0OWQ2NGRlYjUzM2QyZDg5ZDM3NTk2MWYgbGVnYWN5LXRydW5rCis1NDE2MSBmODNlNTgyMmU2NzI2YmU5ODkwNjc5NDFlMDdiODBmOWQ3YjJkMzhkIHJlbGVhc2UyNS1tYWludAorNTQxNjIgMDlkMDhmY2I4ZjdiOWQyMjI4NDlmYzc3MGM5ZWQ3NjY2ZDRmNjIyZiBsZWdhY3ktdHJ1bmsKKzU0MTYzIDJlZTM2NmEyZDJiODkxZjdiZmI3OWY2ZjM2NzNjYTBhYWI2Y2U1YTkgcmVsZWFzZTI1LW1haW50Cis1NDE2NCA0ZTgzNWRmMmI0YmE4OGNiOWFkMTg1Yzg5YzVhZjlhOTViNDUxMTljIGxlZ2FjeS10cnVuaworNTQxNjUgOTYzYzBlNDQyODMyMTE0YmFmZWI3YjIxYjYyMjIwMjY0ZDYyZTAyYyBsZWdhY3ktdHJ1bmsKKzU0MTY2IDA2OTkyZTZiMjA1YTQ0OTYxNGU2ZDhmNGIyNWNlODM0YTg0MDRjYzAgbGVnYWN5LXRydW5rCis1NDE2NyAzY2ZkYjgwYmM2OGU4NzRjZTZhYzM4MmE0NThhNmJiNTc0ZTIxMmIxIGxlZ2FjeS10cnVuaworNTQxNjggMWVhMTlmNzQ1MDRjYmM2MGExMjQ5ZWVjNGM2MzYzNjI2ZGNkMzRjOCByZWxlYXNlMjUtbWFpbnQKKzU0MTY5IGQ0NTc3MjE1NTM5ZGRkMzc0MTkwZTliNTYxMTUwZmE3NTQ2NjEwMDMgbGVnYWN5LXRydW5rCis1NDE3MCBhNmEwOTViZjY0NTg1ZDAxNDJmNDg1MjYyYjczNjNhMzA3MTY3ZjU0IGxlZ2FjeS10cnVuaworNTQxNzEgNjdjYzBlOTVlOGE1NzhmYjBhNDZlYzJiNjNhNjVmZjk1YzlmYWY1OSBsZWdhY3ktdHJ1bmsKKzU0MTcyIDQxZWQ5NGJlNmQ1Y2FhMGZiMTliNGZjYmU1ZTBjMmQ1MzFhMTQ4ZDEgcmVsZWFzZTI1LW1haW50Cis1NDE3MyA2YTU5OWFlZTdjYTQwYTEyNjEwMjgwYzJlYjI1M2YwNDNkMTFhMzJkIGxlZ2FjeS10cnVuaworNTQxNzQgNjE0YmNkMzdjNmYzYTRlZmQyZTU0NTE0NDkwYjM4YzFlZjA5MjRjMiByZWxlYXNlMjUtbWFpbnQKKzU0MTc1IDZjZDM2NmU2YmVlY2M1OGZiZTM4MmZkMzgxNzI5YzQzNjdmNjdmNTQgbGVnYWN5LXRydW5rCis1NDE3NiBlNjZjZmM3MjVlOGRiMGUxMGUxYjkyZDE2OWVmMmFmYjAyNDQxOGIzIHJlbGVhc2UyNS1tYWludAorNTQxNzcgNmQ4ZGNhZDEyZmQ5YmZiODRjMGUyZTVlZDk1NmZiZWEyMzU0NGMzYyBsZWdhY3ktdHJ1bmsKKzU0MTc4IDgyODBiN2M0MDU1NzYwMjI4ZDkzYjI3MmEyNzc4N2NkYjAwYTkzOGUgcmVsZWFzZTI1LW1haW50Cis1NDE3OSBlZmEwYTc2MTkxOGMyOGM3MmY1NjAyMDdhOGE5YTJmNjYzMmRjN2NhIHAzeWsKKzU0MTgwIDNhYzI0YzAxMTBlOTZmOGE1MWQyNDI1MjEyN2JlMjljYTUwNGQ1NTQgbGVnYWN5LXRydW5rCis1NDE4MSAxYzE0YjIzYjljMWJjZjY5NzFlYmQwNGE4YTcwZTg2ZWUwYmNhZGQxIHJlbGVhc2UyNS1tYWludAorNTQxODIgNzU3ZTkzYTQwOTZjNTI0YmE5ZTM4ODg1MWI1ZTZlMDFhOWZlMDY5NyBsZWdhY3ktdHJ1bmsKKzU0MTgzIDE2YzIxNWU0M2JhZDBhM2Y0MWUyZGEwMTY5YjZkN2JmMjdkYjNiYTQgcmVsZWFzZTI1LW1haW50Cis1NDE4OCA3MjhjNjBlODVlZmE1OTRmY2QzYjAxNTQ0YTE5MjRiZDY4NDcyNzJkIGxlZ2FjeS10cnVuaworNTQxODkgYzhlZDRhZWE2YzU4MzMwZDk2YTc2NDk1YTBlZTQwYWUwYTcyMTgwMCBsZWdhY3ktdHJ1bmsKKzU0MTkwIDIxMjMzYzJlNWQwOTM5OTQwNzRkYzhhYjc4ZmY3NGEyZmUzNTI4MGYgcDN5aworNTQxOTIgZjQ3OWI5Yzc0Yjc4MTk5NzkxZDY1NzcwNjU3NjUwYjUzNzM3MDI0YSBsZWdhY3ktdHJ1bmsKKzU0MTk0IDEyOWZmZmYyY2U2ZGM0NWYzNTIwNmVmMTNmZTVhMmU0ZDQwZjBkZDAgcDN5aworNTQxOTUgMjQyZGUxNmE2ZDQ0MmMwZDU2NzU5MDI1ZjZjMzcwNjEyNTg4ZGFlZSBsZWdhY3ktdHJ1bmsKKzU0MTk2IDFhMGM5MDc5MjhiNDAxMzQzYjY3MTY1NjJhZmM0M2Y3N2M2MmFjMjggcmVsZWFzZTI1LW1haW50Cis1NDE5NyA4NTBjMzJkYjI3ZTY0NDA2NTZmMjhmYTIzNDFkYzllMGQwN2NmMzMwIGxlZ2FjeS10cnVuaworNTQxOTggZTE5NjJhYjEyZmNlOWFiYTg5NDVmYTczZTZmOTczYWM0YzNkOWQ5ZCByZWxlYXNlMjUtbWFpbnQKKzU0MTk5IDdkYTIzYmY4OTQ5ZmM0YThlYjg4OTE1YmZiZTJhMTBkNjY0ZGMwYzIgbGVnYWN5LXRydW5rCis1NDIwMCA4MWU0ODZiMzAwNzg4NWMwNTcxOTQ1MWUzMjZhYTFkZTEzZmVkMGM5IHJlbGVhc2UyNS1tYWludAorNTQyMDEgYjA5MmIyYzgzYWI3ZTg1OTY3YjMzZjc2YTM1ZjUwNDEzNDVkZGM1NCBsZWdhY3ktdHJ1bmsKKzU0MjAyIDUxMDIzMzZjYTM0MzU0NGNkNjVjZjI1ZTM1Nzk3ZjRmZGFhMmMwNWMgbGVnYWN5LXRydW5rCis1NDIwMyA0MjNiMzY0ODQzY2RjMWNhZTAwMjVjZjg4OWYwYzgyOTE0YWFlOWE3IHJlbGVhc2UyNS1tYWludAorNTQyMDQgOThiYmM5M2JkNTViYTBhNjQ5ZjRiN2MwNmI4MWE3Nzc4YmQzMTk2NSBsZWdhY3ktdHJ1bmsKKzU0MjA2IDNiNTM4YWNmNzY5NGUxMzE4YmNhZjY0MTlhZjRhMTEwMmM2MTM5YmMgbGVnYWN5LXRydW5rCis1NDIwNyA0NmNmYWJiN2Q1NDQ2M2U2OWUyZGEzZmFiNmM3NTU1YWIxMTg1MWM1IGxlZ2FjeS10cnVuaworNTQyMDggZTQyYzYzZDdjMjMwYTg4MGQ3YTY3OTI3ZGNkNDg5ZjM1NDE3NDU5YSByZWxlYXNlMjUtbWFpbnQKKzU0MjA5IGJhYWJlZjZjMDBkNjhlMjc2NzU2YWQ4YzI4ZDUwNGQ2ZGU0ZDk3NjIgbGVnYWN5LXRydW5rCis1NDIxMSBiZmRiZDNlYzI3ZDg1YTVlZjQzNGI0NDY2ZmU0YWQxMzg1NDA2YWMzIHJlbGVhc2UyNS1tYWludAorNTQyMTMgNGEwZTIyOGMzNmU1N2Y3MjIxMzQ3ZWJlMzM0NWNhNDMyNWMwNjc1ZSBwM3lrCis1NDIxNCA2ZTFjZjRkMjhhZjM0ZWI1MmQ1YzhiNGI0YzA3NWM5MGRkNzhhOGUwIHAzeWsKKzU0MjE1IDE1NzI2MGVmNjc3Y2FkNGNkNGVlNjEwYzk0Njc4ZWJiOGZhNGExZjYgcDN5aworNTQyMTYgNjNhZjM3YzJkMGMwZWQyODliYTg1ZWJmMjBlYjY4ZmUzYjkwMGEwNiBwM3lrCis1NDIxOSA5MThlZGFiYWFhODRlNjI1YjgzOTkwNTg2MzllMGNkZDU5NDAxZDViIGxlZ2FjeS10cnVuaworNTQyMjAgYzFhOTdiMDgyMTNhOWRiNTM0Y2Y0OTEyZWIwMmI4ZDM2ZjhkZGM1NSBsZWdhY3ktdHJ1bmsKKzU0MjIxIDMyYWY5NTg4YTE4MmVmNDQ4YzA5ODk1NDhkZjcxNTJhNjU5MzBlNDggcmVsZWFzZTI1LW1haW50Cis1NDIyMiA4YWE3Y2I1MWQzNTg0ZjhmOTNiMmY5Y2IxNDhiMzZhZGFhNWI5ZDVhIGxlZ2FjeS10cnVuaworNTQyMjMgMmY1ZDg0ZGNiNjU1N2RhZDM1ZmQ3YTlhMjlkNTA3Y2QxMzdmODFlYyByZWxlYXNlMjUtbWFpbnQKKzU0MjI0IGQ5NDhhMmMwZmNmZGRkOTUxMjA4ZjBjMDU2NDM4MTA5NGFjYjhjNjYgcmVsZWFzZTI1LW1haW50Cis1NDIyNSA1NTY1OWU2NDI3N2JlNmNkNDA2NDQ5MDZkMGE4YWU0YWE5MDJkOWJkIGxlZ2FjeS10cnVuaworNTQyMjYgOWI1NmVhZDM1MzJjZDc4ZTljNjYyZTE5YWUxNDk3OGUwZGVhNDA1OCBwM3lrCis1NDIyNyAwYmI5NjlmMTUxMThhMzg4MGVjMWJlNzliYzMyODBiMDA3NDY2MGRhIGxlZ2FjeS10cnVuaworNTQyMjggODM0MDBkZjk3Mzc5YWUyZjU1NTczOGVjZTBiOWVjNDE3NjYzZmYxZiByZWxlYXNlMjUtbWFpbnQKKzU0MjI5IGE3YzhhNGQxYjk0MDdkMjliMDU4MGM4NDkwMDY4NTQ1ZWZkOWQyM2MgcmVsZWFzZTI1LW1haW50Cis1NDIzMCBmMmJhODEyZjcyMDA3NjBiNjViZmY3NWIzMWRiMDAzZDc0YjVjOGQxIGxlZ2FjeS10cnVuaworNTQyMzEgM2JlMjE3NWJiYjAwMDc0ZDI0M2M4NGJmOWM5ZGNmNTZmNjlhOWIxNyBwM3lrCis1NDIzMiBmZjBjNDZmYjE5NWEzNTZhOTJmMmQyZGM2NDQ5YzMyMWViNzBlMGM4IGxlZ2FjeS10cnVuaworNTQyMzMgYmUxZTJmNzQ1NjY5ZGMwOTVjNzU1NGM1MzZlYmI3ZmMxMTRlM2E0NiBsZWdhY3ktdHJ1bmsKKzU0MjM0IDljZmM5Y2JhNjc2OGIxNmZkNmQ1MmY5MzlhOTMwNDQ0YzIzNWRjNzMgbGVnYWN5LXRydW5rCis1NDIzNSAxYTBmNmExMjg3NGMyYWFjMzNmNzA2NDVjM2Q5MDZmZGMyM2JkOTk1IGxlZ2FjeS10cnVuaworNTQyMzYgZTgzMTA4NTVmY2M3YTY3NDRkODE1MDAwNTdjOTcyNWRiN2ZiZDE2MSByZWxlYXNlMjUtbWFpbnQKKzU0MjM3IGY3NTQ1N2Q3NTMyY2UwY2U3YjdkNTdkNDcwM2Q5YWMzNDU3MWY5N2MgbGVnYWN5LXRydW5rCis1NDIzOCA3ZjZkNTM5MGExMWFiMmRkNzVhMmY4MzZiN2FkNTY5YTNjYTVmMGFiIHJlbGVhc2UyNS1tYWludAorNTQyMzkgNzQ0NmFkNmNiNThiZGNiZmNlODE4OTMxZGEwYmFmYzZkY2QzYjU1YiBsZWdhY3ktdHJ1bmsKKzU0MjQwIDA5YmZjMGNkZmY5ZmVlM2JlNDg4ZGJlMWIyMDRjOTBkYjQ3N2MxZGQgbGVnYWN5LXRydW5rCis1NDI0MyAyODc3Nzk4NDNjNWQzOTk0YTIxZTVkMzJiMGUzZjhmYWRhNWU2NjU4IGxlZ2FjeS10cnVuaworNTQyNDQgMzcxN2IxNDgxZDFiOTU3Mzc5YWIyMWIwZmZiZDY5MjA5Yzk2MTU0MSBsZWdhY3ktdHJ1bmsKKzU0MjQ1IDFmZWU5ZjQyYjFmYWRkOTc1MTRhNzU5MTRkNDFhMDI0ZTI3NmM0MmQgbGVnYWN5LXRydW5rCis1NDI0NiBiMTMyNmFhMDRiMmMzZGEyNDU2OGE3Zjg2ZjhhNWRhNTI5MzZmMTQ1IHJlbGVhc2UyNS1tYWludAorNTQyNDcgNDdhYzFiZmVhMzA0N2M2Y2U4MGJmMTU3OTI0MzA0ZjE1YTcwYjVmOCBsZWdhY3ktdHJ1bmsKKzU0MjQ4IGZlZGQ2Y2NjNWU1YjRmODY0N2NiOGE0MmJhMDUwNTQ2YjUzZWM1ODIgbGVnYWN5LXRydW5rCis1NDI0OSA0YWE5MTg3YjUxNTljY2RlMzU4NjQxMDRlNWY2YjM1MDZjY2IzMTg1IHJlbGVhc2UyNS1tYWludAorNTQyNTAgMWFmMzhhZjMxNGYyNzI3M2Y4NDkyNjZkMjIzMjM1MDhlNTNhYjI2NyBsZWdhY3ktdHJ1bmsKKzU0MjUyIGJlMGQ0OTEzNGU0ZmEyZTg1ZjZmMDZjM2ZkMTU3MmM5NWViYzE2MzkgbGVnYWN5LXRydW5rCis1NDI1MyAxYmJkNjg4YTZkZTE2ZjU3Yzk5ZDY0ODM4YTJlNWE5ZjM0MzI2ZTgyIGxlZ2FjeS10cnVuaworNTQyNTQgMDAyMzdmNTE0ZjA2MjkyYTA0YjIxNzk3NzVhYmExZWEyZGZjZjZiZCBsZWdhY3ktdHJ1bmsKKzU0MjU1IDAxYzhmM2UzMzMyY2FhMThiOTJmOTUwZjViODc1ZDhmZmY1MTYwOTAgcmVsZWFzZTI1LW1haW50Cis1NDI1NiA3MTgwOWMwODlhMjYzOTVlOWU3MDEwZGUxN2I3NThjZDY3M2EzYjBjIGxlZ2FjeS10cnVuaworNTQyNTcgZDNhMzVmZTEzODM4YTIxOTY3YTc2MzU3ZGZhZmU3Nzc1MDI4NmMxZCBsZWdhY3ktdHJ1bmsKKzU0MjU4IDU5NzhlMDcyOTFmZTc2ODBkNWUwMDhlYjhjYWQ5YmU4MzNiZjNiNWUgcmVsZWFzZTI1LW1haW50Cis1NDI2MCBhM2YzMTEzMDRlYTYzMmViYjEyMTljNTRiOGY1NmFkNjI4MDE0YmIwIGxlZ2FjeS10cnVuaworNTQyNjEgMmI1MWIwNGIyNTQ1NGNhMTIyODMwMjk4ZTAyZDA2ZjJmNGVhMThjNCByZWxlYXNlMjUtbWFpbnQKKzU0MjYyIDEwMWExYWI1NzNkYjRlYjI0NzUxNTE5N2NjZWIxNGNmZmEyMGQ4MjAgbGVnYWN5LXRydW5rCis1NDI2NSBjZjQ1MjAyNzA3M2UyOGNjZTM2NWJjNjU5NjE2MmNlZDhlNzRlODBlIHAzeWsKKzU0MjY4IGYxMThhYWRjMTEyMDVjNzU0Y2Q2YWYyMjJmOTk2OTYxYmQwMTRhZDcgbGVnYWN5LXRydW5rCis1NDI2OSBjOWI0MGIwYWEzMDMyMDFkNzVmYThhZTAwZmE0NDk1ZGU5NWE3MzQ2IHJlbGVhc2UyNS1tYWludAorNTQyNzAgYThhZTJjMjljNjZhZTJkNjBkZGE2MDAwMGQ3NDk1NTZmOTAwNTgwYSBsZWdhY3ktdHJ1bmsKKzU0MjcxIDVhYjdkYzhlNzMxYTk3YWFlMjgxYzg0OTFiMTgxMmI1ZWYxYmY3YmMgbGVnYWN5LXRydW5rCis1NDI3MiBkNGVhMDY4YzM4MjA0ZDgwZDE1ZDJjOWJjNzE3ODlhZWRiZDdlZmNkIHJlbGVhc2UyNS1tYWludAorNTQyNzMgZDcwNDQ0NjViNzQzYmY1MTVhMDdjNDZkM2MzM2U2MGUzNDE2ODI3NyByZWxlYXNlMjUtbWFpbnQKKzU0Mjc0IDYwYTM1YzA3ZDMyZGYzNDFhNGViODlmNzc5OTI5NWUxZmI2YWZmNTMgbGVnYWN5LXRydW5rCis1NDI3NSA1YjZlMWMwMDhjYTMyM2RjNzE0NmFmMjNmNDc4M2U3MzM0NzI1ZDYxIHJlbGVhc2UyNS1tYWludAorNTQyNzggOWEwY2NkYmJjNTY4ZGNlODJiMDkzNWFlMTA2ZmUwYzFjNWU0YjJmYiBsZWdhY3ktdHJ1bmsKKzU0Mjc5IDcyYzViNTVjYWExZGIyZTM3M2Q0MDQyOWE0YzljODU3NmU1NWUyYzEgcmVsZWFzZTI1LW1haW50Cis1NDI4MCBkODUwYmY1NmZkZjZjYTJmZGQ4NGYwZjMzZWRjYWE0NDgzODVhMzVlIGxlZ2FjeS10cnVuaworNTQyODEgZGNlOTQwZDlhOGU5Y2RmMGQ2NTU4ZDMzODJkZTVlNmFjNTE2YjkyMiByZWxlYXNlMjUtbWFpbnQKKzU0MjgyIDQ3ZWRlNjVlMmVmZDhmZmViMTA5OGNlMzhhYmFmOTRjM2JkNzEwYWEgbGVnYWN5LXRydW5rCis1NDI4MyBhZGY2MTJmNzA2ZTRlOTA2NGJiZGU4ZTAyZWMxMmM3OTIxOTFiODJkIGxlZ2FjeS10cnVuaworNTQyODQgYTdkYWEwMjE4Y2YwYzA2M2E1ZWUzZDBjMDk2N2Q1MGIwNDRlZTQ1YiByZWxlYXNlMjUtbWFpbnQKKzU0Mjg1IDNlZTk1ZmRlN2NmYWU0MDQ5NDIzYWQxMjM0NmE3NmRiODVjMWE5MmYgbGVnYWN5LXRydW5rCis1NDI4NiAyMTEyMDFlNmIwNDVlZDJjNTExNWUwMDIxMzU5Y2JmZGMyMTU4ZjkwIHAzeWsKKzU0Mjg3IDcxN2JjMmE0ZWVlNzdiNmYyZGYwMGQyZmVkYzk4ZmJhY2QwYWU1ZDIgbGVnYWN5LXRydW5rCis1NDI4OCBhODdiY2MzN2JmMGZlYTc3YWQyOTljYTYxN2E5ZTVhMGI5NTc0M2M5IGxlZ2FjeS10cnVuaworNTQyOTAgNzEwMGM1OTE4MmZmMzE2ZGY4NzdhNDRiZTUxZDU2M2ZlZTk0YWRlNyBsZWdhY3ktdHJ1bmsKKzU0MjkxIDQ1Y2UzODhlYzU5YTVkMjNiZTBiMzhhMDAyYjRjMTEyMzJmODE3Y2MgbGVnYWN5LXRydW5rCis1NDI5MiAyY2I1ZmI3Y2QzNTdlNGI4MTJlMjkxYzY1MmY1NzZhNzJhNDJkMGJhIGxlZ2FjeS10cnVuaworNTQyOTMgNWJlM2QyMTc3MzQwNWRmNjdiN2I4NzE2MTFkNjg0ZDI1YmE0ZjcyOCByZWxlYXNlMjUtbWFpbnQKKzU0Mjk0IDY2ZjI2NWFjNGVjNGY5MGI1ZWIyNjgwYmI0ZmZhNzAwZDM0MmI1NTQgcmVsZWFzZTI1LW1haW50Cis1NDI5NSAxZTEyYmVkN2EyZmU1YTQ2YjI3MzZjZjU4OGM4Yzc1Y2U4YjdhNWQ3IGxlZ2FjeS10cnVuaworNTQyOTYgMDEzNTUxMjRjZTQwNTE1YmMxODFjMmRlMTNiMmEyN2JiZWM1YmQzNyBsZWdhY3ktdHJ1bmsKKzU0Mjk3IDkxYTgwZTUyZDg2M2VkNWIyYWNlNTJlNTU1YTZlMjdlNmU3MGQ3YzcgbGVnYWN5LXRydW5rCis1NDMxNSA5MWJkNzM4YTQyMDY3YTEzYWMzY2E1M2UyMjczOTZjYjU4MWI2YzYxIGxlZ2FjeS10cnVuaworNTQzMTYgODQ0NzhkZWI0YWQ5NmE5YWNkZTk4ZTdkMDhhNWIxZDU5Y2YwZjBiMyBsZWdhY3ktdHJ1bmsKKzU0MzE4IDQ3OWRjYmQ3OWI1N2YxNWVmOGEyZTYxYTRmY2VjM2IwMDE3ZjU4OWMgbGVnYWN5LXRydW5rCis1NDMxOSBmOWEyNmFhM2QwOWM0NGMyNmQ5NTJiYTc2MTQwYjZiNzZjNjcyOGJhIGxlZ2FjeS10cnVuaworNTQzMjEgOWRiM2UzMjVkZDg4ZDRiMTc3NGFiZjYzNDRjMzFjMzVhNmJmN2ExZCBsZWdhY3ktdHJ1bmsKKzU0MzIyIDcyODZkODMyYWQyNzI3MTQ1YWY0NDM5MDViOTIwNDY4NzVjMGNhMmIgbGVnYWN5LXRydW5rCis1NDMyMyBlMmNlZWRlMjBkOGMyOTQyNGM4ODZkNjUyMDUwNmNkN2IwMDFlYTk0IGxlZ2FjeS10cnVuaworNTQzMjQgMTZkN2RjZDdhNjljNDJmNzVkN2YzMTg4ZjQwYzdjMjY2ODBhYzljMCByZWxlYXNlMjUtbWFpbnQKKzU0MzI1IGJlZDU3ZGZmM2RiODZlNjhmMGZjOTQ0N2U4NjQ5MWVhNTk1YjIxMTggbGVnYWN5LXRydW5rCis1NDMyNiA3YTMzMWM3Zjk0MDRmY2QwMDFhYzM4MWY2OWI4NTI4YzUxOGI0NmU5IGxlZ2FjeS10cnVuaworNTQzMjcgYmJhZjZjOTM1NjYzNmZhNTM3YWRlMDUyNDg2YjZmZmM5ZGRjNWE5OSBsZWdhY3ktdHJ1bmsKKzU0MzI4IDhmYTRlOTgwYjU4OTlmYjliZDIxNTNhOGVmYTMzOWE1MjAxOGNhMTkgbGVnYWN5LXRydW5rCis1NDMyOSBiODk0MzdlM2JjOGViZDdkNmI3ZThhMmEzN2M1YzAyYjgzM2IzMTc0IGxlZ2FjeS10cnVuaworNTQzMzAgYWRlOGQxYzgxMDA5M2U1ODQ0ZjY4NTI2YjUyNDg5YWFlNTUxMWIxOSByZWxlYXNlMjUtbWFpbnQKKzU0MzMxIGIxM2U2MTI4ZWZhNzJhNGUyNjY3ZTBjZTI4OTdjYmEyNmMyMDk5YWMgbGVnYWN5LXRydW5rCis1NDMzMiBiNmMxMDM4NDUwNTRmMTg4ZDJhYjUxOTFiMWZmZTkzMWJmZjk4YThhIHJlbGVhc2UyNS1tYWludAorNTQzMzMgYzZmNDE1MjkwZjgwNmNiMDU1ZmY2YTliNmJiNTkyODUzMzhhNTcxMiBsZWdhY3ktdHJ1bmsKKzU0MzM0IDdkMzBkNjJhOTAxYWE4MWYxMjQwOWNmZDZjYWM5OTczYWViYTZkZDQgcmVsZWFzZTI1LW1haW50Cis1NDMzNSA1YTNhMWIwMjQxOGFmZDBjYjlmM2ExNGNjNjUzMzI5ZTIxZjU0MjM3IGxlZ2FjeS10cnVuaworNTQzMzYgYTRlMGM3OTAxNWQ4MmZlMjk4NWE5ZGY3ODJjNWFhNThlN2ZmYjk1YyBsZWdhY3ktdHJ1bmsKKzU0MzM3IDgxZTVjNWQxOTk4ODdjOTViMDI1NzBjNGUwNjUxMWY5ZGM2ZDZmMmMgcmVsZWFzZTI1LW1haW50Cis1NDMzOCBhMzQxOWM2YzBjZmVkZjZhZmIxNzQ4NmRkMGQ2MDM2YmQwMjRiMjM1IGxlZ2FjeS10cnVuaworNTQzMzkgNTNlZTI3OTUyODdiNDRjNmM5NmFkZGQ5NWE1MzE5MjgwODBiOWU4NyBsZWdhY3ktdHJ1bmsKKzU0MzQxIDFkODBkODRjNzc5MjQ5NzViY2IzOTNlZDJkZGQwYzYzY2M4Mjk1MGUgbGVnYWN5LXRydW5rCis1NDM0MiBiOTBkOGIyZTVlZDA3MTc0YzQ4ZWY2YWM4NGE5OGIzMTdkZWYzOWJlIHJlbGVhc2UyMy1tYWludAorNTQzNDMgMGMxMjJmZTgyN2Q3OGE0NmUyMjJmNDcwZWI4NGE1ZWY0ZGQwMGU4YiBsZWdhY3ktdHJ1bmsKKzU0MzQ0IDdiMzZhNjRkY2IwOGQwMjY2MjIyN2IyMzNkOWVlNDdjZDRlYzgwZDAgbGVnYWN5LXRydW5rCis1NDM0NSBhYzcxZGI5ZmFkYzg2YjlhZTE2OWZlNjlkMjBhMDU3ZWVjNjE1MTFkIGxlZ2FjeS10cnVuaworNTQzNDYgMjhiMDQwM2Y4YzkyYjcxZGMzYzQzNDcwYzMxOGU1OGQwMGI4OGFiMSBsZWdhY3ktdHJ1bmsKKzU0MzQ3IDkzZTY3ZDM2MmE4MWEyOWE5NzlmNjY2ODk0NDQ1MDY4ZGFkZDFjMjIgbGVnYWN5LXRydW5rCis1NDM0OCBkOTZlYmIyMGQzZTFmNjEwNWM5MzVjODFkOTI0ZWNkMjk0NjU3NDkxIGxlZ2FjeS10cnVuaworNTQzNTIgNGE3OWRkMTViYTU5ZjY1ZTM5MTg0NGFmMmQ5ODhlYTYxNjI1NDczMCBsZWdhY3ktdHJ1bmsKKzU0MzU3IDQ5M2NhZTcwNWY5MTg4YzNiYjcwOWM3Nzc1ZmQ5NjNmZTFlYjRjOTggbGVnYWN5LXRydW5rCis1NDM1OCA3ODY4NmM3YTIzYTdkNTAzZTgyMjZjNDliYTY3NWZmYzUwMzk4MTVjIGxlZ2FjeS10cnVuaworNTQzNTkgOTIyYjc3MDhhODBhZmUyMDk2ZDgwODlkNGNhYjUxOWMyMGJiMDA2NSBsZWdhY3ktdHJ1bmsKKzU0MzYwIDIyNmQ5ZmNmOWQ1OWNkYTQ3N2UyOTBkMDFiZDFiMWVkYjNkYjUwNmMgbGVnYWN5LXRydW5rCis1NDM2MSBkYmE1YTMzYTBlNzk5NTI4MTQwMjI5YjUzY2NkNjRjMGU2MWZjY2U0IGxlZ2FjeS10cnVuaworNTQzNjIgMjA5ZDY4OGYzY2E1ZWVjMmUxODYxMWExZTc1MjFjYWE5Y2I3OGQ5YiBsZWdhY3ktdHJ1bmsKKzU0MzYzIGVhZmJmYThhMmIzMDBjM2FiYTkxZDVlNmE0NTJlM2MxNzdlMDc3NDMgbGVnYWN5LXRydW5rCis1NDM2NCBmMWYxODY0NjAyNTBhMmY1MzA4ZWU0NjQwMGQwNjExMzU4YWM4MzFmIGxlZ2FjeS10cnVuaworNTQzNjUgY2EzMzhkNTYzYTdhZDE2ZmY4Y2QxYzliZTgzMGEwMGZlZWIyNTQzMSBsZWdhY3ktdHJ1bmsKKzU0MzY2IGQzMTEwMTNhMTYzOGE5NGNiMzZjYTExNjA1NmMxMzAzNmU4YTdiZDcgcmVsZWFzZTI1LW1haW50Cis1NDM2NyA1YTFhMGFhOWE0YmJhZTE5NzZhNDdjYjAxNThmMzBlMTYxYTE1ZTZhIGxlZ2FjeS10cnVuaworNTQzNjggODk0NjkxY2E0ODM1M2YwYzQxYjhhNWJlYTExNDEzMmQ0ZWY4ZDAxNiBsZWdhY3ktdHJ1bmsKKzU0MzY5IDFkY2RiYzI1ZGVhN2M2NTk4ZWNmYjQzZDQ3YTkxNDdhMzg3ZTg1NjQgcmVsZWFzZTI1LW1haW50Cis1NDM3MCA1MmE2OWEwNjQ2MzdhNTk5NTM3ZTRkMzUyYWMwOWEwODc3MjRmZDRjIHJlbGVhc2UyNS1tYWludAorNTQzNzEgZGUxZDA1YzU1YjZmZGYzY2VhMjI1ZWU3ODUxOTRiZDg4M2QwMzc3YiBsZWdhY3ktdHJ1bmsKKzU0MzcyIGZmOWQ4MWU3NmE3NmY3ZDU3ZTYyZTlkMmRiYTUzNGEwOWQ3ZDMxYmEgbGVnYWN5LXRydW5rCis1NDM3MyBiYzJhNWE1NGI1Y2FmM2Y0ZTFmMGY2ZGFhNjNlMDYxODQzMjk1ZTIzIGxlZ2FjeS10cnVuaworNTQzNzQgYjUwMDc2MWI0YjYyNmRjMWZiOTBjMzA4ZTA4Zjk3YWFhNTg2NDIyYSByZWxlYXNlMjUtbWFpbnQKKzU0Mzc1IDU2YjJiOTMzYmFhZTJjNDVkZmU1MjZmZTExYzYwYzUzN2ZiODdjMjIgcmVsZWFzZTI1LW1haW50Cis1NDM3NiBjMzAxYjViY2RmZGM1MTBkZmI5YThiMzU0NTJjODgwMjBhNWZlNjA5IGxlZ2FjeS10cnVuaworNTQzNzcgOTBlNTdlMmM3YTAzMzNlYjc4ZGRjMmM1MzY0NGI1YTc4MTQ4ZDY1ZCByZWxlYXNlMjUtbWFpbnQKKzU0Mzc4IDI5MDBlYzA0MDMxZDk0YzNhZjhkNmE4ODk5M2RmYmU2MmMxOTBhMzggbGVnYWN5LXRydW5rCis1NDM3OSBmYzVlMDQ1Y2VhZTQzOGQyMzg5MGQzZjY1NjlkZTI2MGI1NjBhYjg0IHJlbGVhc2UyNS1tYWludAorNTQzODMgNTE0YWVmZjYzYzlmZmI1NTExMDA5OTdkYjRiYmE2ZWYzZDBhZjc4YiByZWxlYXNlMjUtbWFpbnQKKzU0Mzg2IDYyODA1NTJjMTI5NzIzZTM3ZDdiMzg4YjRiNTgyNjYxYTE4YmVmM2MgbGVnYWN5LXRydW5rCis1NDM4NyA5OTQzYWVhNGYyZDFkZjIyYzdhNjBjZTMzYzlhYjlkY2RhNTM2NGZmIHJlbGVhc2UyNS1tYWludAorNTQzODkgYmJjZTJkOGZmNzNkNTRlMGY5Nzc5MGEyNmNlMzhhYWU0ZGE0NDI0OCBsZWdhY3ktdHJ1bmsKKzU0MzkwIDRlYjRjZmI2MjU0ZWJiN2I4ZjNmMGFjMjQ5YmQxM2Y3YTVkZDY0ZTggbGVnYWN5LXRydW5rCis1NDM5MSBkMTU1YWU2MzY3Mjg0OGVhYTE2YmUwNmRjNTcwMTNhNTI2YzZiN2RjIGxlZ2FjeS10cnVuaworNTQzOTIgMGE2YzUxMzVkMmRlZjQ5OGU4Mjk1ODcxMTM0OGMwOGNlYmU0MTc5ZiBsZWdhY3ktdHJ1bmsKKzU0MzkzIGZjNTI3ZWI5OGRjZTY4NTVjYTkzOTdmNjgxNGQzMTA1M2MyZjY0Y2QgcmVsZWFzZTI1LW1haW50Cis1NDM5NCAzNzZiNDIzNWRkNDQ0NDgxYjc4NjRmMzVkODY2YTJmYjYzNjNkYTVkIGxlZ2FjeS10cnVuaworNTQzOTUgNGFjYjQ1YzI5N2VkMWZiNmI4ZTI5ZDUzNmEwYTM1MDlhNzFjZjM2YyByZWxlYXNlMjUtbWFpbnQKKzU0Mzk2IDhkOTdkZWU2ZGY2NDQ0NDE2ZTNjYzU2ZjQ0NmZhMGUyYmY1YTFjZmMgcmVsZWFzZTI1LW1haW50Cis1NDM5NyA0MjE3ZjM4NTBmMGI4YTViNmU3MzYwMDU5YzYwZjdlMzZlNDYyNTZiIGxlZ2FjeS10cnVuaworNTQzOTggNTJjMzM5YzBjYjM4YmM2OWQ2NzgzZTVkYWVlNmE0OTY4ZjcwMWIwOCByZWxlYXNlMjUtbWFpbnQKKzU0NDAwIGEzNzdmOTQyZWUwYWRjMTg5ODVmOTRiOWU0ZWM3YjNlMzZmODIwYTggcDN5aworNTQ0MDEgYTMxMmMyNzZhNWU3OWJjZmIzNzBiNzQ5OTk5ODMyMjNiZGIzNzAyMSBwM3lrCis1NDQwNCBiNDNhNTJmNzE2OTZhMDY1M2IyOTUyNjc5OWJjN2FhN2MwYzZkZWYwIGxlZ2FjeS10cnVuaworNTQ0MDUgZDgzNTgwOWY0NWVjNDQ5MTRmNGJjZDEwODE5ZmY2ZWRiYzcxNjg1NiByZWxlYXNlMjUtbWFpbnQKKzU0NDA2IDAxOTUxZjZiODE5ZDEzZWFiMjNiNjdlNWFhMTQ2MzRkNmNmODBlMzQgbGVnYWN5LXRydW5rCis1NDQwNyA5NDIwNTk4NmFkNTMwOGE5NDNkZjE3ODNhNjIxMDNhN2NhNzM1M2Y0IGxlZ2FjeS10cnVuaworNTQ0MDggMjY5MGRlNGJlYWExM2RhNGFjZDk2ZjEwY2YxMjI3NzE2YWE5NGIyNCBsZWdhY3ktdHJ1bmsKKzU0NDA5IDY0NTA3MGI4Mzk0MjZiZjFmOTNiYzc1ODgyMGI1MjRmZDdmZDg5ZmIgbGVnYWN5LXRydW5rCis1NDQxMCBhNjk3OWFjOTUzM2ZhZTY2OTg3NmFjMmFkOWQxNDVlMTA3MzhhMTRlIHJlbGVhc2UyNS1tYWludAorNTQ0MTIgYzU3Y2Q1NDY2MTJkZDgzZTg3ZGVjMzE3YWM0NjgwOTk2YjY1OWE3YyBsZWdhY3ktdHJ1bmsKKzU0NDEzIDA2Y2Q2MGIwYmQxNjRjNzNlMjJhNWQ0OTM1MjllNzVmNDdkZWU2OTggbGVnYWN5LXRydW5rCis1NDQxNCBkMWJhODEzNDUyOGUyOGMwYmFiM2M0ZTQ5MzYzNWYzZmIwMjQyMjMxIGxlZ2FjeS10cnVuaworNTQ0MTUgNzJkYTQ4ZDk2MjU3ZmMzMGIwMzJhMmI0ZjVmOTE0NWJjMjExZDU4MCBsZWdhY3ktdHJ1bmsKKzU0NDE3IDhiYjU3MGFlNGM0NWM3MmU4ZWMyMmY5OWM2ODhlNzg3NmVlZTY0NjMgbGVnYWN5LXRydW5rCis1NDQxOCA3NTQ5YzRiM2FhMzZhMDFkMzhlZDA1NWZmZmVlYzUxM2JmMGM3ZTlhIGxlZ2FjeS10cnVuaworNTQ0MTkgZjNkNDI3NGQwNjNkMzBiY2M4MDk2MDIwNDUxMzM3ZDUyYzgxOGVmMCBsZWdhY3ktdHJ1bmsKKzU0NDIxIGViZTUyZGJjMzU1M2Y3ZWU2MDg5ZGMzY2NlYTgxYTU5ZWI3ZGYyNTkgbGVnYWN5LXRydW5rCis1NDQyMiA5MTI2ODY3OGQ1N2Y5NmQ1MTAwYzI2NDE1MTVkYmU5ZTdiZDZiZTQ0IHJlbGVhc2UyNS1tYWludAorNTQ0MjMgMTM3M2E4MzA4M2JiMjEzYTlmY2MzNmJhMTgxOGMwMTY2ZWZjOGUwNiBsZWdhY3ktdHJ1bmsKKzU0NDI0IGEyYWUyNGZmYTYwYTkwMzU1ODUxOGNiMGVkMjQ0MWViZDI5ZGNjOTEgcDN5aworNTQ0MjUgM2M3M2E4YTIwODM5NWZjOGY4OWE1MWEwOWY5NzI4Y2NhNmQ4Mzc4ZCBwM3lrCis1NDQyNiBlM2JhNjBkZTNkODQyZTFkNzRjMjEwNGIyNzYzZTY2ODM2OTk2ZjA2IGxlZ2FjeS10cnVuaworNTQ0MjcgMzQzYmUzOTZiYmQ3YzYxMjljNDYxMmY1OTdlNmMyNjhlZGVmMTVkNyByZWxlYXNlMjUtbWFpbnQKKzU0NDI4IDE5ZjdmZjQ0MzcxOGY3YTlkYTFhZWE5ZWRiZjAwYTEzNWY4NjA4ODMgcDN5aworNTQ0MzAgNWUyNGY2MzZhYzc1NzZlOGIzNWZkZDhkODc5M2JiMTU0YTFlZDA4MyBwM3lrCis1NDQzMiAwNzEwMTZjNzI5MzkyZTU1M2NhM2M5Zjg5ZDI0OGI5MzgwMDIxZWIwIGxlZ2FjeS10cnVuaworNTQ0MzMgMWY4NDM4OTBhNGU2MWI0NzE1ZDJjM2ExNGE1ZWMyYjE1ZGRjMDFlNCBwM3lrCis1NDQzNCBiMWExOGM3ZWQ1Y2E2NzlhZWE4OGYwNzQ1MTMxOGVjN2Q2NmFiYzU4IHAzeWsKKzU0NDM1IDE2ZmU5MzZmODliMTlhNTUxMTIzNDBlYzVkNGE4OGQwNzdiNzhlODAgcDN5aworNTQ0MzcgOGQ3OTlhOTljZjY4ZjRkNjhlNzNhNjNmZDE1YjlhMTYxYzE4YTE4NCBwM3lrCis1NDQzOCAwMzdmZTZhNDQ0ZDJmZTk4Mjc0ZWJhYWNlZTRjNzFkOTA1OWFmZDdkIHAzeWsKKzU0NDM5IDhkMDZjMTEyMWIzMzFhNTNmMjkyNjAzMGY0MDA2MGY5ZTc5Mjg1MzEgbGVnYWN5LXRydW5rCis1NDQ0MCA2YzhjMzNhNDNhMTU1NWI4MWVjZWM5MTEwZjVlZGYwZDI0OTU5MGJiIHAzeWsKKzU0NDQxIDlmMDdkNDEwYzU1NTQ2OTY3NDI1OWUyNmE3OGU0NTIxZGI1NTA3YWMgbGVnYWN5LXRydW5rCis1NDQ1MSBjN2MyNzU0ZmYyZDZkZGI5YTkwZjE4Mjc3MGU3YTNiOWIyMmVmYWVhIHAzeWsKKzU0NDUyIGY5OTczYTZlMWFmZTAxZTBmYjNiYzk3ZDdhNDBmYTAxZjdkMTc5ZWYgcDN5aworNTQ0NTYgOGQyOTc4MTQyNTkzMzg5ZmVhNDY3NjlhOThjY2I1Nzk2MGRiZjc5YSBsZWdhY3ktdHJ1bmsKKzU0NDU3IDIzNmFmMjE2MWViNjc4YWQ0NGRlNDFiZDFjNTlmMzljYzBiYzlhNTkgbGVnYWN5LXRydW5rCis1NDQ1OCA2MDE4MTk0YWZiYmRlMTNlMWZhM2QyNDg4OGQ3YzA0NzgxODFhZjY5IGxlZ2FjeS10cnVuaworNTQ0NTkgYzk5N2U5MDdjNGM2NzA2MGQ4MzgxYTc2YTkxMTUzNWRjZWU1N2RiYSBsZWdhY3ktdHJ1bmsKKzU0NDYwIDMwN2U1ZDQxNjRmM2EzYmIxMjE1MGI3MDdiYWYxOThjNmZkNjIyYzAgbGVnYWN5LXRydW5rCis1NDQ2MSA1YTc3MWI0YThiNzhjYzQzZDc1NjIwZjU5N2QyMmI3YTY3OTJjNDkyIGxlZ2FjeS10cnVuaworNTQ0NjIgNDU2NjljNDE0ZGI0NTU2NzU1MjQ2ZTk3MTBiYmVjNTU1NGY3MzMzZCBsZWdhY3ktdHJ1bmsKKzU0NDYzIGI4YjE3YTJmYWNlNWFhZjNjZDdmNzM5MGNiN2MzOGJlYmZkZmFmOWMgbGVnYWN5LXRydW5rCis1NDQ2NCBiNDNhMmRhODMyYTcwZDdhODljMmZiOWNhYTYzMTZjZjQ2ZjVkMDcyIHJlbGVhc2UyNS1tYWludAorNTQ0NjUgZWM2ZmIwOTEwMzliNDUzYzBjMGU5MjFmZWE0NmVjN2YxZjEwYmRjZCBsZWdhY3ktdHJ1bmsKKzU0NDY2IDUwYTZiMzNjOWQyYzVjMDcxMzFhMDljMWY4NzU3Y2E2NjZlOWIxMjMgcmVsZWFzZTI1LW1haW50Cis1NDQ2OCA5ZDBjMDU0MTE3MzQ4MzE0MDA5ZTU4OTgxNTQwMjFlODQ5NGU4M2JhIGxlZ2FjeS10cnVuaworNTQ0NjkgN2YyOWJlMWNlZmJhMTI1NjM0MDgxYzMxMGJkZTJhMDgzOTc0ZTU2YSBwM3lrCis1NDQ3MCBlMTJjNTA0ZTQ2NmI1YjZlOWYyYzg2MGJjNzA3MjBiYmUzYmI3NmVmIHAzeWsKKzU0NDcyIGYyOWYxYThiNzg2OTJkMWNmZjE5MzZlMGEwNDIwMjBhNjg1NTM4YmMgcDN5aworNTQ0NzggODgxMjcxODY2OWUxOTc5MjIxM2NlYTY4NjhmMzM0YzQ0ZTAzN2JhOSBwM3lrCis1NDQ3OSBiNzUyYTFlMDk0NGI0MzYwOGViMzgwMTk0ZWQ2ZmM2NDg2YzA2ZTViIGxlZ2FjeS10cnVuaworNTQ0ODAgOWNmMjJjNWVlZTNkN2ZhMDAwMTAyMjM4MGFmN2YzOWNjYTAxODYzYiBsZWdhY3ktdHJ1bmsKKzU0NDgxIDA4ZDE2MTgzYTljMTUwNTIyYWU2YWU3YzBmMTZhNWJjZjY1NDdmYjggcmVsZWFzZTI1LW1haW50Cis1NDQ4MiAxZGM0YzRjZTJkYjlmZjAyMGYyYjkyMDM5OWY0Njg3OGM4YWIxMjA0IGxlZ2FjeS10cnVuaworNTQ0ODMgZDE2YWJlNWM5MmRlYmY1NTUxNmU5MGFlNGY1OTNjYWY1OGEwYzk3ZiBsZWdhY3ktdHJ1bmsKKzU0NDg0IDg1MmM5ODk2ZmU5MjM2NTFhYWU4ZmQ1NjAwNDdmN2ZiYzEwYTM2MDMgcmVsZWFzZTI1LW1haW50Cis1NDQ4NSA0NTllMzZiMmVhNDUxZmNkZTIyMGZjMGZhMjYzYjZkNWZjODVlZDYxIGxlZ2FjeS10cnVuaworNTQ0ODYgNWI3MTE2MzJjYWUxMzJhYjhmZGMzZDVlNWI1MmJlNGJkZmE5Nzc3NyByZWxlYXNlMjUtbWFpbnQKKzU0NDg3IGNiNmViMTMyYWNjZjI2Njg5NGYwYjFkZjJhYmQ4ZTdjZWJhNjJjZDEgbGVnYWN5LXRydW5rCis1NDQ4OCA3MzkzYzcxMGQ0YmJiZWRkOWEyMDdlMmU2OTJlMTk0Mjc0MTBlNGNkIHJlbGVhc2UyNS1tYWludAorNTQ0ODkgZTU1YmZiMWFjMWU3Y2NhZGVhMDYzNmFkODkyOTc2YzFkNDYxNGNkYiBsZWdhY3ktdHJ1bmsKKzU0NDkwIDViZDk2NjM2MjBiYzk3OGExMjc5NzJhN2NlN2FiYzZmMTY0N2JiZGIgbGVnYWN5LXRydW5rCis1NDQ5MSBiMWU4YmZkZmU0Yjc5NWEwMmRlZTZjNzg1ZDE0ZDk0MDE0ZmM5ZWMwIGxlZ2FjeS10cnVuaworNTQ0OTIgY2NjNDQ3YTZkOTE2NDhmNzExNjIxMTVmNDVkMGFkNzc5OWFkZWNiMSBsZWdhY3ktdHJ1bmsKKzU0NDkzIGQyNWY3NzU3NDg2NjMxZTg0NGIxYTRmNTBlOTcyZTAxNGE5YjM5YTAgcDN5aworNTQ0OTUgMTVhN2UwYjdlNDI1NmI1YzkwZjhjMjI1OGFkZWQ2OWZjZGE1NzAxMyBsZWdhY3ktdHJ1bmsKKzU0NDk2IGY4ODlmNjVhNDg2MWJlYjVmYzAxOTE3Y2MyZDVhYTk1NjUzZDU0YTAgcmVsZWFzZTI1LW1haW50Cis1NDQ5NyA0MDhkZmM3ZTMwMTg0YzIxNWEwNjM4NGExZDU5ZjgxYzYzYzRiNDM1IHJlbGVhc2UyNS1tYWludAorNTQ1MDIgZDQyOGUyMWQ2ZWFmNTgwNjRlZjRjYWFmNzIzZDZmNzVjNjc5NmYxZiBwM3lrCis1NDUxMCBiZmM0ZTgwNDYxMDIzOGI4YjAwYzM5MmUzZGFjYjI3MzYzMTNmMmIzIHAzeWsKKzU0NTI0IGFjZjlhNTVjODg1ZDc5MTI3NjllNjljYzY4MmQ5MjMxMmJhOGVkMmIgbGVnYWN5LXRydW5rCis1NDUyNSA1MmUyZmNkNTNhZDMzOTY2M2VlYmRhZmZjYjEzOWJiNTgwM2YxODRjIHJlbGVhc2UyNS1tYWludAorNTQ1MzIgMTc1N2Y4MGI1ZmRiYWU0NzlkZGY2MDQzYjcwOTkzOTc1YjZiZjUyMyByZWxlYXNlMjUtbWFpbnQKKzU0NTMzIGFmYjFjNmNiMmM4ODQyMjkxNGU2OGFmYTAxYmQwZTg1Y2NkOWY5NGYgbGVnYWN5LXRydW5rCis1NDUzNyBmZTE4NDJiNDhiNjZmZmVjOGE2OTg2NDhmYWFlNzJmYTEwMjBmNDBhIHJlbGVhc2UyNS1tYWludAorNTQ1MzggNDJlYjViYjc3NjYxNTdhZjM1MGJhNTgwMjNhOGM0ZGZlOGYyNmQ4NyBsZWdhY3ktdHJ1bmsKKzU0NTM5IDhkZWJjZTJjNGZiMWI0ZTg3Mjk0YjVjNmEzNjU5MjRlNjY4ZWUzNjkgbGVnYWN5LXRydW5rCis1NDU0MCA1MWZiZjJhNzU1NDhiMWE2NDAwODc4MDc2YTA3NWZjMDE1NGU0MWU4IGxlZ2FjeS10cnVuaworNTQ1NDEgOGYxYzllOGVmYmJiZmQxOWY4ZjI5YmQxZDU1M2RkYzZiMzlmNDM4OCBsZWdhY3ktdHJ1bmsKKzU0NTQyIGQ4NzQ4NjczZmQ5ZjlhNWVhYTZiN2U3OTFlYmM2MTBlNWI1Yjc5YTEgcmVsZWFzZTI1LW1haW50Cis1NDU0MyAwMjU3NGY0ODViMTVjM2ViZDlmYzFkNjJiMGU5OTliYzZmNTlmYmZmIGxlZ2FjeS10cnVuaworNTQ1NDQgMGVhNTU5NWQ3NWRhZDhhM2EzMzUxYTEyMGNjOTVmMTI4ZTA5NzUxMyByZWxlYXNlMjUtbWFpbnQKKzU0NTQ1IDEyYzcwNTU4MDc0ZTdjZDBlYjMyOTczNWU0MWIxNWU3MmY1ZDA4NWYgbGVnYWN5LXRydW5rCis1NDU0NiBhNzNhYTBiODIxY2E1ODg0Y2IzZjA2MjVlMjQ4ZWZkMmNiOGNhYTM5IGxlZ2FjeS10cnVuaworNTQ1NDcgM2I1NmU3ZTg5NDcwMmUwZWMwZGMwMjVlMjVhNTQxNzljZTkzZWUyYyBsZWdhY3ktdHJ1bmsKKzU0NTUzIDc0ZDI5YjYzNTQxNmI4OWFiYzUwY2FjYmQwYTUwMmFiNzNhMDM3MmEgbGVnYWN5LXRydW5rCis1NDU1NCAzZmY2ZDNmYTgxMjI5YjkwZTYyYjM5ZmRjNjE4YzIxMjg5YTBlY2YxIHJlbGVhc2UyNS1tYWludAorNTQ1NTUgMTg5OTViZDhiYzhiM2FhNmI5NThjOGViM2RhODE5Y2UyNjYxZjNiZiBsZWdhY3ktdHJ1bmsKKzU0NTU2IDFjM2UwZDJjMzZkYzk3NjIzZjlhOGNjMWY1M2ZjZTdjY2NlMDY4OTQgbGVnYWN5LXRydW5rCis1NDU1NyBlZjcwY2Q0ZGJhNTBiNjU3NGFkMWE1YjcxMWRlMTU1ZWM0YTU1OTcyIHAzeWsKKzU0NTU5IDM4YTNkYTAyNmQ1ZTU3NDNkZTY3YTVlZDhiMzU5MjM0M2RjMDUwNTUgbGVnYWN5LXRydW5rCis1NDU2MCBlOTM4ZTllZjQzNGI4MmU2MWY4Yjg1Y2UwMzIyM2QyNzBhYjkwNDg0IHJlbGVhc2UyNS1tYWludAorNTQ1NjUgMzJmNzJlNTc2MThjYzE1YjJlZjYxMmNkNDhiODZjMWY2MzNmMjg4YiBsZWdhY3ktdHJ1bmsKKzU0NTY2IDhmYzYzOTZmMDc2YTVlY2JiMjFhNTNjNThmOWM4OTU3NmRhM2ZiZDMgbGVnYWN5LXRydW5rCis1NDU2NyA2NTBlZTE3OWYzY2VjMjBhN2JhZTZkZmYyMjQ0YTM4YTNhNWEyMzFiIGxlZ2FjeS10cnVuaworNTQ1NjggODI1OGYyNWQ0M2Q3OTY0OTAzNGU1ZjM2ZjVkNzFiYWJkYzEzOTBmZCBsZWdhY3ktdHJ1bmsKKzU0NTcwIDNjMDkxM2I2NWU4ZDZkNTVlN2Q2MTRmOWQ4ZDM5OWNkOTZhZGQ2YWMgbGVnYWN5LXRydW5rCis1NDU3MiBlYjI1YzhlMmI0YTFlYmUyNDZhMmU2NGFiZjYyM2IyOTRmMmYxMTJjIGxlZ2FjeS10cnVuaworNTQ1NzMgYTA3Zjk4Y2ZmYmRmZWY5NTEzNjI2NWUxZDY0ZWRlYWRiOGRhOWRkOSBsZWdhY3ktdHJ1bmsKKzU0NTgwIDJiZTEzMzAxM2I3MWNhYjI4M2VmNDA5M2Q3N2NhZDU0ZTg4MWYzNzIgbGVnYWN5LXRydW5rCis1NDU4MSA4YmU3NDRkNWM1NjczODkyMzU1YmNjZDBmNGQ4NDZlNGZhMjBmZDQwIGxlZ2FjeS10cnVuaworNTQ1ODIgMDNkNWRiODMyNWY0MTFhNmI3ODNhMGE2ZDk5YjNkZTc2ZTIzMjRjYiBsZWdhY3ktdHJ1bmsKKzU0NTgzIGEzMWIwYjE4Y2FjNjJkOGZlMzczNWY0NWMyMTdjMDc0YmNhZWFmYWIgcDN5aworNTQ1ODUgNjUzMjZhMzgxNWY3NjBhZTg4NzQxOTk5ZTQ3MGE4MmZkMmZmYmQzNCBsZWdhY3ktdHJ1bmsKKzU0NTg2IGU0ODkzZWU5YTg4NTc5NjQwMDU2ZjQwMjE0YzAxYWJhMWVjNmYwN2QgbGVnYWN5LXRydW5rCis1NDU4NyA1MDk1YWZlZTA4MGYxMDA5YTU4MjljOGFkNzQwN2U3M2FkYzI2Njg4IHAzeWsKKzU0NTg4IDgzNGRhNTJlYjJhNGViZTZmODBlMDU5ZDExM2FjZjFiMDQ4ZDMyOGEgcDN5aworNTQ1OTIgNDVhMjc2MWM5YjE2Y2UzYjNlNDdiM2U4ZDliZjhlOTJkMGEyZjI5ZSBwM3lrCis1NDU5NCBkMTQ0ZjgxNTc0YzA4NWRlMTViODI5MWMwYjAwYmY1YmNjZGFiNzIyIGxlZ2FjeS10cnVuaworNTQ1OTUgZDQxNmQ5NzE3MTgxNWJhNjI4ZTQ1NzExNWFhMjQzZDFmZDZiYjg1NSBhbWstbWFpbGJveAorNTQ1OTYgM2U2ZDAzMjE3YTAyYjA1OTlmNjdlM2EzOTY4YzRkNGNmNDM4MWNiOSBhbWstbWFpbGJveAorNTQ1OTcgNDZhZDIxOTM5NjhlZmE3YTI4ZmNjNThkMDZmYzczNjAwNDMzZGQ4NyBhbWstbWFpbGJveAorNTQ1OTggNzMwNTQ1ZjI0MDg2ZGQ5ODE5Mzc2NThmMWNkMTcwMGY3MmVhMDgxZCBhbWstbWFpbGJveAorNTQ1OTkgMmQyOTY2NTY3OWU2NzQ2NjAzNDY1MjQ1MzZhM2I0ZWQyMDUxY2IzZCBsZWdhY3ktdHJ1bmsKKzU0NjAwIGVmZGNlOGQ4ZGI5OTAwMjhhNDEyZGM3NzE4ZTg0NTMwYWJmMTE4YWIgcDN5aworNTQ2MDEgZjlkZmJiNWQzNWMyZjMyZTYyMGY0ZDQyOGE3YTFjZjVjYTY4MGM4MiBwM3lrCis1NDYwMiBiODk3Yjc3YTAwNGY3YTU4ZDg2NzIwZTkyNTIzMjE5YWVmMDNmNDUzIHAzeWsKKzU0NjAzIDM5ZTQzODZkNzFmNjUyNWFiNjU0MDc4MzczYTQ1NjdmYTI5ODBlZGYgbGVnYWN5LXRydW5rCis1NDYwNCBmNTdlOGUzMjU0NzVlYzUwNjYzOGIwNDY1MzBlOTM1NDk1ZGRjY2RmIGxlZ2FjeS10cnVuaworNTQ2MDUgNWE4Y2E5ZGQ4OWRiMzQ3Y2ZlMjg3ZmU1ZDkzZTA2ZjZmNzIxYTM2ZSBsZWdhY3ktdHJ1bmsKKzU0NjA2IGUzMzQ5ZDQxMjY4MWVlNmYwZjQxODJiMWVmZWNkMDViY2Q5NzJlZWQgbGVnYWN5LXRydW5rCis1NDYwNyBmYTIxODFiZDI3MDQ5YmQ4ZmEzYzkxMjQyNDRmOWRiYzhjNmJlYzU1IHJlbGVhc2UyNS1tYWludAorNTQ2MDggM2ZkOGYwNjU3N2ZmZjlhNTEwNzIwYTk4Y2UyYzI3NjA2NWEwMjMzMSBsZWdhY3ktdHJ1bmsKKzU0NjA5IDUxOWU3MmQ2MzBkMjA4NzM4OTZlNmU0ZDY3YTFhODcxNzBmNTA5NWYgcDN5aworNTQ2MTAgODhjMmFjNTkwNDQxYzJlNTNjYzYwNjc5NGNmNDgxMjcwNDJmMzkwZCBwM3lrCis1NDYxMyBjY2RjNWIzYjliMTE3YWM5ZGFiNGVkYTA4OWRmNGRhM2E3NmNjMTJjIGxlZ2FjeS10cnVuaworNTQ2MTQgMzc4YjJmNDdlODA4ZjcxMzExYTA2YWUxNGRmY2RiNGQ2OGY2OTFjYSBsZWdhY3ktdHJ1bmsKKzU0NjE1IDZmOWU2OTNkNzZhMTg0ODQ4YTRmYzJkOTY4NDQyZWJlNDg1YWZhYWYgbGVnYWN5LXRydW5rCis1NDYxNyA4ZTNjN2E1YWNiY2RmMDAxNDdmMjNiYTIwYjMyNGVhNjFiNzk1NzMwIGxlZ2FjeS10cnVuaworNTQ2MTggODNlMWIwNjExNzE0NmM2ZGY4N2IxYTBhMTFmM2E4NDMxYTlhNTUzYyBsZWdhY3ktdHJ1bmsKKzU0NjE5IDRlNjBlM2E2MGY1MDRjYjNjMWJkMzhiNjFkMDhiZjUwMTU3ZGE3MWIgbGVnYWN5LXRydW5rCis1NDYyMCBhNTA3NWE1MjczZGY3OGQ0YjE5Nzg0NDcyODFmMmVhY2U0MGM1ZDYyIGxlZ2FjeS10cnVuaworNTQ2MjEgY2RiMjU3OThjZjBiYTA1YTRkZDViYThlZjIwOWM3ZmIyNGJhOTJjNCBhbWstbWFpbGJveAorNTQ2MjIgNTg0MjdlMWU1MWJkYzYwNjg5ZmQ0OGQ3YTgxYjkzYzhiNWRlYmFjMSByZWxlYXNlMjUtbWFpbnQKKzU0NjIzIGRjNmU5Zjc5Y2M0YWZiZmM2ODA0YTZjYzA4ZDhlZDc5NjIwMDYxYmUgbGVnYWN5LXRydW5rCis1NDYyNCA1MDI2MzIzZDk5Mjg4MzM0NjM1ODk5MTU0N2RlZmJhNjY2NDI5ZGEzIGxlZ2FjeS10cnVuaworNTQ2MjUgNTVlY2MzYTQ1Njg2NjM4NzJhNzk1MzdhNmZiNWQ5ZDc3YzNhZDIxNSBsZWdhY3ktdHJ1bmsKKzU0NjI5IGMxZjY3ZTFlZWU1OGI2MTkzMTI3OTA2MTUzZThmYzk5ZjEyNDNlZTggbGVnYWN5LXRydW5rCis1NDYzMCAzOGE4NjExODFmZGQ1OGMzNWQ5ZTM4NDMxZjk0MGE5ZGMwN2QyM2JmIGxlZ2FjeS10cnVuaworNTQ2MzEgNDFkYjNmMzBhM2Y5ZjBkMWMxMWM2MTBkMmYxYWE1OGM3YjQxNjVlYyBsZWdhY3ktdHJ1bmsKKzU0NjMyIGRiOWVhZGMwNzgyNjQyMzYxYmY0NjM3ODNhOTY2OTdjNWNkMDVmMGYgbGVnYWN5LXRydW5rCis1NDYzMyBmODY1NTdlNTAzZjNhN2QxM2VhZmNhZGYwMDY2M2MxZjE1NThjNGViIGxlZ2FjeS10cnVuaworNTQ2MzQgOTM0Nzg3NDQxMDM4NzlhODViNDMxYjIzOTMyNDVhNjYyOTBhNjczMiBsZWdhY3ktdHJ1bmsKKzU0NjM1IGMyYmYzZDY0NmVmZmEyYjMyOTAwZjUzM2E5ZDc5YzQzOGFkYjY4YTEgcmVsZWFzZTI1LW1haW50Cis1NDYzNiAyY2U4ZTgwNTM5Y2Y3OTE2M2JkYWEwNjU1YTRkNWUwZGJjYjQ5NDU4IHJlbGVhc2UyNS1tYWludAorNTQ2MzcgZmM3ZmJjZjJhZTUxNzdhZmRmMjU3Y2RhNjNhZDQyODIyYThlZjhkMSBsZWdhY3ktdHJ1bmsKKzU0NjQxIGYyMTliYjdlNzRjOTIxNzJhOGE5YjM0MGJlNWU1NjdkMWZmZTI4OTUgcmVsZWFzZTI1LW1haW50Cis1NDY0NCA3ZGVlN2Y3ZDI5ZjA4YzllODAzN2JhMzBlMjcwZjRiZTRlZGI0OGEyIGxlZ2FjeS10cnVuaworNTQ2NDUgMjIxMTk0MjQ5ZmE4NmUzYzVkMTMxNmIxYjY5ODNlZTRkMzRmNGEyNCByZWxlYXNlMjUtbWFpbnQKKzU0NjQ2IGI1Yjc1MGNmODVjMjA5NTZlNmJlNmZjNzI1M2I4YTIwNzJmZjZmMjkgbGVnYWN5LXRydW5rCis1NDY0NyA2OTZhNjY2ZGZlNjE0MTY5ZTY1N2JmNDgwMjVlYTI5ZTk4Yzg4MDIxIGxlZ2FjeS10cnVuaworNTQ2NDkgZWE2ZjJjNWQyNzQ5MmYyYzU1YjU5NzczMDgyNTFhMTk2NmJjNGFmMyBsZWdhY3ktdHJ1bmsKKzU0NjUwIGU5NWQyYmNmZWI0NjMxZTYzMmEwM2Y0NDA1MDlkZWNlZmFmZTNhY2MgbGVnYWN5LXRydW5rCis1NDY1MSBhY2RiNGYzYzNkNjMyMmEzYTk3YjkwMTBhMmQzYzU3NTk5ODQ4MGM4IGxlZ2FjeS10cnVuaworNTQ2NTIgMWE1ZGEwNzhjNDM1ZjJmNzU1ODAwNWJkMDNmZTJjMzc5ODIyY2I4NiBsZWdhY3ktdHJ1bmsKKzU0NjUzIDkwYzRjM2YwNDIwNTZhZmJlZGJlNDQ2MGE5ZGM5MGU0MmM5Y2ZkNzYgbGVnYWN5LXRydW5rCis1NDY1NCAzNWJkYzYxYWM4ZWFkZTlmMmJmMDRlYjk0OTI1MzYyZTdhNzEyYzAxIGxlZ2FjeS10cnVuaworNTQ2NTUgNDdkMDVmMWFlYmRkZmJkYzJlMDBkYzg1ZTUyY2NkNTJhNzAxZjNiMSBsZWdhY3ktdHJ1bmsKKzU0NjU3IDgxZTU4ZjAxMDFkYjdhMTIxNGU5MTA1NTA3MmY4YWMyZmQxMDRiZjEgcmVsZWFzZTI1LW1haW50Cis1NDY1OCBmNzY0YTc1NTIxNjJlZmMzMDkzOGI3ZWQ4OGU1MWFjZGMzMWJjYTdhIGxlZ2FjeS10cnVuaworNTQ2NjAgMTJmZjIwOTQ4YTAyMjU3MzdjNTI0ZGRhNzIyNWZhYzM3MWIzNTc4MSBhbWstbWFpbGJveAorNTQ2NjEgNjc2MGYzOGU5ZWQ2NzYxYmRmNjhhYTkxMDA0ODhkYzBlY2E5NjEzMiBhbWstbWFpbGJveAorNTQ2NjIgNmEzZGQxYzRhN2RmMDE0MTU1NDFhZDkzYmNhOTZmNzNhYzI2YzMwZSByZWxlYXNlMjUtbWFpbnQKKzU0NjYzIDRhMDM4NjBhZTA4YjU3MDdkZWY4YzE2OGY3MWVmOWFlYTY5NjFkNDIgbGVnYWN5LXRydW5rCis1NDY2NCBlZjVkM2U1MzkzODQ3MjIwNWNlZWZlNDBhYmJjMWM0MDRhYzM1YmI3IGxlZ2FjeS10cnVuaworNTQ2NjUgOTliZjE0NTU1OGQzNWIyNTU5YzhlNzcyZTcxYjMyNzUxOTExNGMwMSByZWxlYXNlMjUtbWFpbnQKKzU0NjY2IDQ4ZDhkNWQzMTdhZWUzYWEyY2M2NjQ4ZWNkZTYxZDQwNjk1YTcxNDMgbGVnYWN5LXRydW5rCis1NDY2NyAzNDNlZWYzNDI3NzczYmUwOTAyMzIwZjNkYjkxMzU2ZWI1MWYyNWU4IHJlbGVhc2UyNS1tYWludAorNTQ2NjggZTY4NWJmYTZiNGVhYjg3NTAyNGQ0MjE3NWJkNTQwODNmOTBhNjZkMSBsZWdhY3ktdHJ1bmsKKzU0NjY5IGY3MWZlZWM3ZDU0Nzg5Zjk0YTNlZTk5ZGY5ZTM3OWZkNTQ2ZjU1NTggbGVnYWN5LXRydW5rCis1NDY3MCA4OTBiYjkwMDBjZTU1NTMzZmE2ZjU1NzMzZmI2MGFhZTJhODEwYjBiIHJlbGVhc2UyNS1tYWludAorNTQ2NzEgMjJhMTY3YzQ2NzhjMmE4NWVmN2JhNmRkOTg0OGM0NzhhN2VjM2QwMyBsZWdhY3ktdHJ1bmsKKzU0NjcyIDg1MTEyZGQ1MDA1OTVlZTIzM2RmNTMzNmNhNjIxOWJiYTQ2OTFkNjIgbGVnYWN5LXRydW5rCis1NDY3MyBjZmFjNjRhMDJhM2Q4M2UxNjM0NDRhMWRjY2UyNzM2M2EwOWU0NmVhIGxlZ2FjeS10cnVuaworNTQ2NzQgYzczODE4MDQ0NDdiYzNkNDE0YjBmOTMzYzQwYTRlNDYzNzk4NzRjNCBsZWdhY3ktdHJ1bmsKKzU0Njc1IGFjMjU1YTQyZWMwZTFhOTE0MzJmYWRjMWE5Y2RkN2ZkMzU5MzE2Y2MgbGVnYWN5LXRydW5rCis1NDY3NiBkNDFkMWJhMjA5Yzk0MmFlMDcxYTY3NTJiM2I0MTFjMjBiODMwYTQ0IGxlZ2FjeS10cnVuaworNTQ2NzcgY2I2Y2NlNGQ0MjMyYmY0MjhkMjQwZGNjNWVkZTdlZDE4MDE0NzVmZiBsZWdhY3ktdHJ1bmsKKzU0Njc4IGUxYWIyNWZkNWJhZDgxNDU1ZjRjOTRjODRiZTEzNDQzZDQ2YmI3YWQgbGVnYWN5LXRydW5rCis1NDY4MSBkZDdjNjliZDBjNTJhMTM1YjMxMzY3NDM1YTczOTJmMTg5YzQyMzEyIGxlZ2FjeS10cnVuaworNTQ2ODIgZTdmNzhhMzdhZTUwYjBiOWYyOTEzMzhiMWU4YzkxNTZhYzc4ZTAxMiBsZWdhY3ktdHJ1bmsKKzU0NjgzIGI3ZTM3OGU5ZDAyZDU1YzNlOGRiMmNkZjlkYmM4MzZhYTJiYjUxMmIgbGVnYWN5LXRydW5rCis1NDY4NCA1ODZhN2U4Nzc1MDBlMjBlZGRjMjZlNWE3ZmQ1Y2Y5NTAzZGFjNDA0IGxlZ2FjeS10cnVuaworNTQ2ODUgZDhjZDg4ZjkzMDk4MGRlMGY4NmVjYjA1MzRhNGMwMmFiOTI0MGJkOCBsZWdhY3ktdHJ1bmsKKzU0Njg2IGIwMDFiNjU0NzhmYWJlOTgzNjEwODA0YWQ4OTkzOTI1MTdmZmZmMjkgcmVsZWFzZTI1LW1haW50Cis1NDY4NyA0MzI1MDAxODI4NWMyYmIyMTk5MTgyY2MxNGExMGM2YWM4YzI4Y2M1IGxlZ2FjeS10cnVuaworNTQ2ODggNzEyYTE1ZWZjZjE5YjczNjkxMmQzZWFmMDBlYTNiZTY0YWZlZGMwOCBsZWdhY3ktdHJ1bmsKKzU0Njg5IDUxMmY1NmFmYTRhMDUxM2U3MGQ0MDYwNTBjYTg3MjNiYjVjODAxYjYgbGVnYWN5LXRydW5rCis1NDY5MCA0YzdlYmMzOTdkOTQ3YzcxMjZkNzZiZGJhMjBkN2VhM2M0NGYyMzNkIHJlbGVhc2UyNS1tYWludAorNTQ2OTEgODEyMDI3ZjFlZWE1MzVhM2EzMTkxZDdlMGVjZDlhZmFmMjdmMzhjMyByZWxlYXNlMjUtbWFpbnQKKzU0NjkyIDI4YWVjMTM1OGY1OTRlMTRiZjdiZTZkODZiMGRhYjUyNTE1ZmMyZDYgcmVsZWFzZTI1LW1haW50Cis1NDY5MyA0Nzc3YzQwMDdiNWIxOTQ0MjM5NTNkNDFiMWU1ZTZhZGFhYmE2YzVkIHJlbGVhc2UyNS1tYWludAorNTQ2OTQgODE3MGQ0NGRkOTA0ODhkZTAyNzhlNTExYzAzN2RiMzFiMjlkYzVhNiByZWxlYXNlMjUtbWFpbnQKKzU0Njk1IDgwZmY3NWZhMjc1NGViMGY4YjQ1YzA0NzJlNGJmMTE3ZDYxYzFjNDUgbGVnYWN5LXRydW5rCis1NDY5NyA5YTUwZTJiNmI2ODU3NDdmOGY5MDU3NTRjOTI3YzFiODViNmY5YTQyIGxlZ2FjeS10cnVuaworNTQ2OTggZWE2ZmJmNDA0YzM0ZDk2MzFiODMwNzRjYTQxNmNlZWFkN2JhOGVmYSBsZWdhY3ktdHJ1bmsKKzU0Njk5IDU4MWQxMjdlODIyYjcxOTQ2ZTE2NGVjODdiMWExNTY2OTFiZDM1ZWEgbGVnYWN5LXRydW5rCis1NDcwMSA5MTIwMjgxMjQxYjgyY2VjMTAxZWFkY2E1YTY5YjRjNDcxNTFjNTc2IHAzeWsKKzU0NzAyIGJhZDVmODMyODA5ZmMyOTQxOTEzZTQwZmMxOGQ5YjAyZWEwMGMwZWEgcDN5aworNTQ3MDMgNThkNDljYWU4ODdmMmY5YTNkZmJkNzYxMjQxOTE4ZGZhNTFjN2Q2NSBwM3lrCis1NDcwNCAzYjEzOTZiMDEyMzkzODIwMjkwZmMzMDUwOGUxM2UxNDhmNDlhZTE2IGxlZ2FjeS10cnVuaworNTQ3MDUgMjM0ODY5ZGQyNzg0ZWQwZjZmZmJiYWNiMmE1MDk5YWUzMjhmOTViZiBsZWdhY3ktdHJ1bmsKKzU0NzA2IDk0MDhkY2QzY2U4OGZkZjAyZjFiZjg3NDQxN2E3MWIyM2M5NzZmNjUgbGVnYWN5LXRydW5rCis1NDcwNyBjN2I4MzBjODZmNDJiYmQzODFjZmY2MmYxOTJjODU0NDI3MDBmOGI1IGxlZ2FjeS10cnVuaworNTQ3MDggMDIwZmQ2ZGU2NTI1ZGEzNGMwNmIwMWUyZWNmMTcxOTBmMmY4NTZmZCBwM3lrCis1NDcwOSBjNTY2MDA1NWI0MjVkZGJhYWQ2ZmE0Yjc5NDhlZDE3MGVjMDYyY2Y2IHAzeWsKKzU0NzEwIGQ4YjE0OTk0ZDg3MGI2OGU0ZDBiNzU5ZGYxMjM2YzhmODNiNWNhZjYgcDN5aworNTQ3MTEgODBmNWVlMjFlNTQ1NTg3ZGQ1MGJlZjNjZWYwYjMyODU4NGRjMzY3NyBsZWdhY3ktdHJ1bmsKKzU0NzEyIGNjMDBiY2U2YzU5ZDM3YTM3ODQ5MzA3NjVlMTg2MTgzNjBmNzMxMmYgbGVnYWN5LXRydW5rCis1NDcxNCBiOTEyNGMwZWYxN2EzMjE4ZGU0NzNjNDZiNzhlNjZjZGRkOThlYmFjIHAzeWsKKzU0NzE1IGFmNTExZDI0NDYzNjkzY2Y0NDBkMTFjODg2MzliYmFkZmNkOWY5MTEgcDN5aworNTQ3MTcgZTI5ZmE0YTFjYmQ5MzFiM2ZlYTcyNTM0MGVjNjc3ODIxMTdkOWE1ZCBwM3lrCis1NDcxOCBhNTcwN2JmNGY2ZDE0MzM5MmVmYjYxYzhjNDk4MDllYWMyNmE0OTlkIHAzeWsKKzU0NzE5IDMzOTAxNWQ5OGI3ODY0MjI1NzdhZmY0YjU1NTUzZDAwZTk1N2RkOTcgcDN5aworNTQ3MjAgNTIyYjNmMzVkMGViN2RiYjYzNzUzMmRhNzdmODVlMTZiZjVjMDU0OCBwM3lrCis1NDcyNiA0ZDUwZmFkOTU3NjgyMDYyZjQ0OTc1MTQwZGY5NGI2NmJlMGVmOWNjIGxlZ2FjeS10cnVuaworNTQ3MjcgNjU3M2VjMWU1ZGMwY2RmZjRhYjIwNmY3Yjk5NTg2MmFjM2ZlMWE3NiBsZWdhY3ktdHJ1bmsKKzU0NzI4IGY0MzkxYWJlNWIwMjM0NWYyMTU2YmM0MzU3ZTU5MzMxMmMwYTJmOTYgcDN5aworNTQ3MjkgODU0Mzk5Mjk3Zjk1N2U4NTI1MTJmYTU4ZTViNGI3YTg1ODlhYTllYSBsZWdhY3ktdHJ1bmsKKzU0NzMwIDY3ZjkwMGQyZjJlNjIxNGVjODExYzI1NzdmMDZlZmNmZTg5M2VjNTkgbGVnYWN5LXRydW5rCis1NDczMiBhZTRjZWQyOGE4MzkwMmJiMjFlOWYzMmU1MjY1NTc5OTUwNzk1MmM4IGxlZ2FjeS10cnVuaworNTQ3MzMgNGY3NzAxNjI1NGJjODRiZjUxZmUyNTA3YmFmZjJmNjUzNDVmNzkwMCBwM3lrCis1NDczNyBjOTBkNzVhNWUxOTExNGJjN2FhZWMyYTZjYWVmYjQ0YjU4NDM3MzNkIHAzeWsKKzU0NzM4IGQ0MTA4YWNhODc2NDI3YTlhYmE1ZWI5OWQzMmNjMzJjNDU3MDZmYjggcDN5aworNTQ3NDAgYmEzMWU3MTIxMGQ0NjlkMzM2MTc4NmY4NDczNmQ4MTczMzAwYzZkZiBwM3lrCis1NDc0MSBlN2Q5NzkxMDE0MzA4YTg3NTE5YTkzOWIzYjk1MGNiODgxYzViNjY2IGxlZ2FjeS10cnVuaworNTQ3NDIgN2M2OTcyZjM3ZmUzNTMyMGNjMWZiY2JjMmY1ODNiN2ZkNDUyMGI1OCBwM3lrCis1NDc0NCAwNDg2ZGVhYWFkZTNlNDBlODZhYTVlMzE4ZTYzMTYyYTA0ZjhhYThiIHAzeWsKKzU0NzQ1IDQ1NjFmNmRhM2I3ZDM5NDc4NjhmNTUxZmJjN2VkZWU5OGU2YzY4MTkgcDN5aworNTQ3NDYgNDAxMTBkMDZlODJhZTIzYjY3OTNlNmNkMjI5YzlhOTkxNzhiNDQ1OCBsZWdhY3ktdHJ1bmsKKzU0NzQ3IDE1ZjM0YWQ0NjgxYjg4NTQ1YTM3NmE1ZWVlNmYzNzZjMGU3ZGY4N2MgbGVnYWN5LXRydW5rCis1NDc0OCA3M2MwMTY2OTZhODJmODRiZWM3YzVkMDJmMmRjZTY4MDRjMDFiMzk3IGxlZ2FjeS10cnVuaworNTQ3NDkgMjZjYmNkNzlhMTUzMTAxNTY1MDNlNDk5YjI4MTgwN2IzYTNjMmU3OCByZWxlYXNlMjUtbWFpbnQKKzU0NzUwIDI4YmM3ZWQyNjU3NDczMDVhNTI2MTI0N2U1YTIwMDJmOWZmMTA1MTMgcDN5aworNTQ3NTQgOTgxYTMxZmYxOTY2ZGYzMjU5MzQ5ZDFlZDc2YjA1ZDFmY2UwYjdhYSBwM3lrCis1NDc1NSAwMGQ5ZjUwYmRjMzFhYTk0Y2IxNWEyNjcwMmM2ODFjNDIwNmRhNGM2IHAzeWsKKzU0NzU2IGYzOTA3OTNlNzVkZWMzZDk3YTgxZjAxYjYwMzIwMWYzN2Q2OWFmZmEgcDN5aworNTQ3NTcgNDZkMGY0MDU3NzA1YjA5N2U5YTE3MDg3MWZkMDFhNWI2MjExZGQwNiBsZWdhY3ktdHJ1bmsKKzU0NzYwIDBkZmEyYTU2NDA3NjBlNjg4ZjU0N2M0YTRjMGNhYzVjNGZmM2IwMWMgbGVnYWN5LXRydW5rCis1NDc2MSAzNjY3ZDFhOGM5MTZmMWEzZGM4MWE5MDNlMGNkYmY4MzI2YTY3YWJhIHAzeWsKKzU0NzYyIGEwMWNiM2RmMzhkZGYzNDc0MWIyNDgyZGE3M2Q5OTdlZGQyMTA4NGMgbGVnYWN5LXRydW5rCis1NDc2MyBjNGY0MDNmNDUwZWRhNjVlOWEyMTZjNzA5YTM5MmYwOTQwZTA0MGEyIGxlZ2FjeS10cnVuaworNTQ3NzIgY2VkYzhkN2QxYzdmZWI1MmIyNmZlYmVkOWVjYzc5YzI3NTU1NjE0MCBsZWdhY3ktdHJ1bmsKKzU0Nzc0IDg2YzQ2ZGM2YTc3NGFlOTc0NWE1MDQ4ZTQ0MjhmODBhZTE3N2YxMzEgcDN5aworNTQ3NzcgNjVjYjZiMWZhMzk1MWYzNDUwODBkMWM4MmFiNzM3Yjc5YTc0YjdmYyBwM3lrCis1NDc4NCBjMzRkNzA1Yjg4NGU0ZTlmMDczMzc5YjUxZmUwYWNhMmU1ZmVhNWM5IGxlZ2FjeS10cnVuaworNTQ3ODUgYzBjNDQwN2QzNTMxYzZiYWY1NGNjMDg1OTQ0ZGZlZWNjZjdiOTA2MyBsZWdhY3ktdHJ1bmsKKzU0Nzg2IDg0NDczMTRmNTAwYTk3Y2M1NWM0ZmQ4NDY5YWJmYWM5ZmQxMDMxYjUgbGVnYWN5LXRydW5rCis1NDc4NyA5NTNiZGVmZDgxZmY1NTZhZTYyMWQ3ZmY4NmQxMTgzMjkyNGQ1MjVkIHAzeWsKKzU0Nzg4IDM1Njk1ODdiZWYwNjVlYjkwM2NjYzhiMzYyMjdmZTI4ZDM3YTM2NjUgcDN5aworNTQ3OTcgNDU4YzhkYjJlOTQ2MTZhMmFmMzNjNDc3MDM3MTJjOWE4NjI5Zjg2MCBwM3lrCis1NDc5OCAwYTM4OWI0N2YxMjllOGY2ZDA2ZWJiOGQxMmRjZWYzODE4NjgxNGJlIHAzeWsKKzU0Nzk5IGQxYzNkZDE4NGUzODgyYjk5NDQyNzQzNmViZWFhNDgwOWVkMzZmZGUgcDN5aworNTQ4MDAgZTJkN2E0YzM5MzYwYThmMWMxMzdiMDhhNTFhNDZkZDk2NmJiZTAyOSBwM3lrCis1NDgwMSAzYzMzOWRlODAwMTA1NmI2ZDJhMDc0YTI0MDk4MzFhOGE2NzhlMTIyIHAzeWsKKzU0ODAyIDM1ZjlmZmM2YjUxMGY4ZjljNjZjNjYyY2ZiMjI4ZDZlZTAzNTIwNzUgcDN5aworNTQ4MDUgYjgyMmZiZDg1YWZlYjNiN2FiMjQ3NzQ3NjU5MGRjNDJiOTcyNzEyNCByZWxlYXNlMjUtbWFpbnQKKzU0ODA2IDVkZmQyZjRiYzgzNGI2ODMzM2M1ZjE5NmUwMTA4MjMzNTU1MTk0NTAgcDN5aworNTQ4MDcgNTM0ZTRjNzA3ZTkxZTZiZGE4Y2QzMjU4NTNmOTYxMDI1YjY5MGZlYiBsZWdhY3ktdHJ1bmsKKzU0ODA4IGJhYjljMzgxNzA5MjZiMzc2YjE1MDBiY2NlMDMzNWFiZTY5M2UyZDIgcDN5aworNTQ4MTIgMGQxZTQxNWVjMzZjY2QzNjllNDA2ZDFkYmJlOTcxNDQwNDIxZmI4YiBsZWdhY3ktdHJ1bmsKKzU0ODEzIDgyZjI3OTFiN2MwMjIxNjRhZjJkODIzYjg1YmMzZjQwNmMyMzQ0YTcgcmVsZWFzZTI1LW1haW50Cis1NDgxNCBlYTNjYTQ5NWYzMjExZDNiMWU4NWY2MDQwZGIyMmJmZGY4MzBiNGY2IGxlZ2FjeS10cnVuaworNTQ4MTUgZWQ4MjAyMzlmODc4NzYwNmNmYjg0MDhiOTRiNDI2NzA0MTMxNjNmYSByZWxlYXNlMjUtbWFpbnQKKzU0ODE2IDg0MjM3NzIwOTdjNzRhNmNjMGFkZWQ4N2ZmZTUzMmI0NmYzNGYzODMgbGVnYWN5LXRydW5rCis1NDgyNSA1ZjhhODdmYjRkZjMzMmQ5ZjliM2U3NGJlNGJiOWNlMTRlOWFlNTFhIGxlZ2FjeS10cnVuaworNTQ4MzUgMDYwYzc5ZjZkOTE5NjdmZWQzYzI3OTVjOGRhMDkxZTQ0ZTJmMjI4OCBwM3lrCis1NDgzNiBkNjdiNWQ5NTNiNDUyM2IyOGJiNjFjYzA2YTIzOTU2YjM4MTg5Y2NjIHJlbGVhc2UyNS1tYWludAorNTQ4MzcgYmM3NWM1MjNiOWQ4MTcxNjRlN2YxZDQ0ZWMzYWUzZTYxYWUwNzhlMyByZWxlYXNlMjUtbWFpbnQKKzU0ODM4IDU2MjNlMjMzZTljY2ZkNDdiZTM5Njc4ZTExNzc5M2EyNzIwYzFmMDYgcmVsZWFzZTI1LW1haW50Cis1NDgzOSA0NTc5YTI3NGZkNmUyYTU5ZWY2ZmI0M2MxYzk3OTlhNmRjMGU4YTBhIHJlbGVhc2UyNS1tYWludAorNTQ4NDAgMmZlOTFkMjAxYjA1MjJjMWMzMTc1NWFkMjZkZWI2ZDg3ZDVjMWQ3MyByZWxlYXNlMjUtbWFpbnQKKzU0ODQxIDMxYzkyODI4YWVmYjFiMjRlOTAwNTViMTQ5N2UwNmQ5ZWRmYmEyOWYgbGVnYWN5LXRydW5rCis1NDg0MiAzZTVmZGI5M2M5NWE3Y2MyZTlkNzYwMGM2ZDQxNTJiMzQ2N2U3NTZiIHAzeWsKKzU0ODQ0IGNjNzA3ZjFhZTBiNmVlZDNkMzI1NDI3NGNiNWZmYzUxM2U3MjE5ZmUgbGVnYWN5LXRydW5rCis1NDg0NSBhNDk4NTlmNDRjNDMwYzY1NDIwNmM3ZTVjYjQ4ZDAwNTU4NjUxMWM5IHAzeWsKKzU0ODQ2IGI1YTJlNzUzYjY4MjMxYjBkMWMzZDU2NGQ4NDJiOTVkODQwZDUzMDIgcDN5aworNTQ4NDkgZTAxMTY5NjYzNjVlMmI3ZjZkOThmYTQzNmI1MzVhZGZjMDU2ZGZmMyBsZWdhY3ktdHJ1bmsKKzU0ODUwIGMxY2ZkMGFmNWY1NzMyNzE0N2MzMzVkMjdlOWU5YmE4NDdhYmE3MWMgcDN5aworNTQ4NTEgMDkwOTcyYzIwYTQ3MmU5YjJkNWI5YzExMjZiNzE4ZTQ1MjdlMmVmZSBwM3lrCis1NDg1MiBhMzBhZjgzM2QzODliODI4ZGUzMzQ1YmY0MTczNjY5OGVkYjVmZTQwIHAzeWsKKzU0ODUzIDk2NTczOTVjMjVlNThiY2RlZTYxYmZkOTE5NTcwZjM0NzE2YzViNjcgcDN5aworNTQ4NTQgOTkwMjdjMmIzZmQyZGU0OWE5NjdlYmUwMDhkYTU0MjJjYTQ0OGRhNSBwM3lrCis1NDg1NSBiZWEwYTU1OTJkYjNmZGU5N2Y2OWRiMmZjYzE0NTIwZDU1ZGRiOTI5IHAzeWsKKzU0ODU2IGE1ZTQxMDYzOWUyNDg2MzU1ODA3MWNiZDhiYWM0YjQyYWQyMzExYzcgcDN5aworNTQ4NTcgNjFjMjhkNzc4ZTM3OTMyYjM4YWFhMGJkN2QzNDYwYjQxOGYzMzA5ZCByZWxlYXNlMjUtbWFpbnQKKzU0ODYzIDQ5MGQ4YzA5YWJjYjgxNDk1MGJlN2JiN2EyNWMzZmYyMDQ3YzdlYjUgcmVsZWFzZTI1LW1haW50Cis1NDg2NCA0ZTBlODRmOWQxNGUyYjVkMjg2NGIxYjNiMWUxNTJkMjBjMTJjMDVlIHJlbGVhc2UyNS1tYWludAorNTQ4NzMgYzMyYzRiM2RhOTNmZDRiZmY2NDE3ZDY2NDA5OGM0YWEwMGU4YWFlOSBsZWdhY3ktdHJ1bmsKKzU0ODc0IDU4NTI3YjliMjQyYzdkNGJkNTE5ODBkZDVhMTBhMTFhYjZlYmU5NzQgbGVnYWN5LXRydW5rCis1NDg3NSA1YTZkOTAzYWI3YjViYTRlZjBkMWQ5MWQyYzFiMGVkNmIxYWE0ODljIGxlZ2FjeS10cnVuaworNTQ4NzYgZGE0MDNkMmI4ODZhYjU4YmYwZGYxYzExZGM3MWRkYzNkYTU4OTdlNSBsZWdhY3ktdHJ1bmsKKzU0ODg0IDc2ZmQzYjk4ZDAwN2Y2YzQ4Y2FlOTE5YjM5YmRjMTNlODdjYzNlMGIgbGVnYWN5LXRydW5rCis1NDg4NSAxN2U0MzYzZWYyYjUzMGYxYWE5YTBiYzEyODQxOGVlNjNmN2M0NGUwIHJlbGVhc2UyNS1tYWludAorNTQ4ODYgMGY2NzVhNjI5NzcwYWExYzJmYmFkMDAyN2MyNTU5MDdmYjFhYzk4MSBkZWNpbWFsLWJyYW5jaAorNTQ4ODkgMDFlNmQ4NGUzODkyNDUyNDczMjM2ZjIzZWVhZWY3NGVlOTk5MzZhZSByZWxlYXNlMjUtbWFpbnQKKzU0ODkxIDE4Nzk1ZDQ5YjhkMmFjNDBiZGQzODg5MDM0N2I3NDAwYzRmNDU0ODkgZGVjaW1hbC1icmFuY2gKKzU0ODkyIGY0MzY2NGU4YTFmYTRjOWZkYzQ1MGQwNTcyNGU3MmQ5NGVjNDE4MWUgZGVjaW1hbC1icmFuY2gKKzU0ODkzIGJmYjZmMTMzMmZiNGUzM2Q1YzcyNGE2YmJlYWY1NDZhNTA5NjY0ZTQgZGVjaW1hbC1icmFuY2gKKzU0ODk3IGY3NzdkMWRkNGRjZGRhMjU3N2QyZmFmNDJkMTQ2ZmJjNGE5YzljYTIgYmNhbm5vbi1vYmpjYXAKKzU0ODk4IDZiNDY1Y2MwMjViM2Y3NWNiZmJjNmViN2Q0OTE2NTNkYzg4ZTYyMWEgYmNhbm5vbi1vYmpjYXAKKzU0ODk5IDg0YjVhY2VkNTM1NjEzODhmMzExNzM0OTNkOGI5MGQ1YjAzOTY1NzcgYmNhbm5vbi1vYmpjYXAKKzU0OTAwIGFmNzI2ZmI2ODFmYWFhZWI4ODE2NjI0YWM2MTVjZTdkNDk5YTI1ZWQgYmNhbm5vbi1vYmpjYXAKKzU0OTAxIDBiNzA4MzBlZDc0M2ZjY2FkOGVhZGEzNDA0NzllNjFjZTNiZjE1ZDQgYmNhbm5vbi1vYmpjYXAKKzU0OTAyIGJiNjBiOTUzOTgzOTQxZTkyMjY0YjI3ZTFiM2ZhMjU2NzRiZWFkNDIgcmVsZWFzZTI1LW1haW50Cis1NDkwMyA4Y2QwOTMyNzRkNTc4MTBkNmQxNjhhMzNkNzg2YTVkM2M4MmQ2ZDY2IHJlbGVhc2UyNS1tYWludAorNTQ5MDQgMWNjNmJmMjM0OWU0ZTFlMDNjZDA3NWQ2YjliODhjOTUyZjJmNTBiZiByZWxlYXNlMjUtbWFpbnQKKzU0OTA1IDlhOGMzZDlmNDA1YThhNWZjNjdkMTdmZmQzNzFmYjFhMzMyM2MzODIgcmVsZWFzZTI1LW1haW50Cis1NDkwNiA2YzZjOGE4YWZiMzgxZThhYTQ0NWQ4YmY3NzAwNDcxYWNjYzhjNTY5IHJlbGVhc2UyNS1tYWludAorNTQ5MDcgNWE0NjE5MjE0MDQzZDAxNjYzMmVlODQyZTA4ZDU4ODNjNjc5YTAyOCByZWxlYXNlMjUtbWFpbnQKKzU0OTA4IGFhM2M3YmE1M2Y5ZDJmNDY5NmUwZWYyMjBkZDMyMzAwNmE3N2Y4ZTMgcmVsZWFzZTI1LW1haW50Cis1NDkwOSAwYTZlNTM3YjhkOTZiMzY3YTk0NGY2NDFlZmYyOTZhOWM3NmNjNTAyIHJlbGVhc2UyNS1tYWludAorNTQ5MTAgMGM1MDE5YWZjNTViNWUyYWVjZDhkMWQ2N2I2OTI3OTBlMGIzYWZkOSBwM3lrCis1NDkxNyAxZTI4YzY4YjRlNDNmYjJmOTU2ZDg4MmIwMDM1ZGE0M2YzNGJjZDU2IHAzeWsKKzU0OTE4IDI4MDRlNDg4NjFiYTYyN2Y0ODhkZTU2NmRmMTNiOGY5YjhmNWZkNTkgbGVnYWN5LXRydW5rCis1NDkxOSA0NTYzOGIzN2I4MmM4MTM4ZTVkNjZmNWQ5YzUwMWQzNjEwMzJiMDVlIHJlbGVhc2UyNS1tYWludAorNTQ5MjAgM2NjYjRjMTQzZDNiOGIyNTNlZjAxNGVhY2UxZmJlMTEyYjc2OTMyZSBsZWdhY3ktdHJ1bmsKKzU0OTIyIDNjMjY3MDkyZjEzMWU1YWI3NmU1N2U1ZjViOTFhMjlkZDFhYmZlMGQgcmVsZWFzZTI1LW1haW50Cis1NDkyNCBmNTUyNmQyZWI2NTQ3YjFkOGNhYmNjYTM5YWRlMjlmZTE1OTJlYzhjIHJlbGVhc2UyNS1tYWludAorNTQ5MjUgNTVkNzYxYWNkY2JjZDQxMmQ5ZWYxNGFjZjE5NzliOTc1MzBmOGEyMSBwM3lrCis1NDkyNiAyNmRmNTY2ZjgwZjBkZDc4ZmM0NTBmY2NlZWJmMzEwNGQ1OWQwNTYxIHAzeWsKKzU0OTI3IDgxMGQzMzNhNzNhMTBkZGUwZjYwM2Y1ZmFmYjUyYWM1YWRhMGQwMGIgbGVnYWN5LXRydW5rCis1NDkyOSAzYzEyMDVjYTQ0MmI2YmM4NzYwY2Q4ZGQ2MjJkN2E4NTllNmE0YjRmIGxlZ2FjeS10cnVuaworNTQ5MzAgZmQwZmJmZmQ2ZDUwZjc4NWNmZDYwOTlmZGQ0MDA1N2E1ZmQ3MTQ2NiByZWxlYXNlMjUtbWFpbnQKKzU0OTMxIDA5ZGRiYWRlNjVmZWRhMzkwMmNkY2U3YWM2YjY2ZmJmMjkyNGUxNmYgbGVnYWN5LXRydW5rCis1NDkzMiA5MWYzMTIxNzZlYWYzNzhmMDc4NWE3ZjNhOTkzYWJmMDY3ZjM2NWIyIGxlZ2FjeS10cnVuaworNTQ5MzMgZjQ0NjE5MzhmNTBlMzViZTM4NjY0ZjhiMWU1NDQ1MmY2NTE3ZGI5MiByZWxlYXNlMjUtbWFpbnQKKzU0OTM0IDJmODc2YTVmZmEwZDNkNGYyYzVmYmViMGU2ZTM5ZDM4NTUwOWUwNmYgbGVnYWN5LXRydW5rCis1NDkzNSBkMzZhMzYxYzA1ZmQwMjdkM2I3ODEwNmI4YTUzYzQxMGU2MzFkOGQ5IHJlbGVhc2UyNS1tYWludAorNTQ5MzggZjU4YzBkMTFhNzVjMzE1Mzk2ZDgxMDhlOGM4MGM5ZDAyMWZiOTVjZSBsZWdhY3ktdHJ1bmsKKzU0OTM5IDhkNTAxOGQ3NTA4YTJhN2IzYTZiMTg3YTQ4OTNlZmJjNjVlODA4MTggbGVnYWN5LXRydW5rCis1NDk0MCBkMDVkOTg2NGI2M2M3OWVjNjFmYTM5NjZmZmYzYjdiNWVjNGY5ZjA1IHJlbGVhc2UyNS1tYWludAorNTQ5NDEgN2VhNTk0OTcxNGFkMTViODZlMDdlYjU3YmZlZmU5OTllMTM2ZDNkMiBsZWdhY3ktdHJ1bmsKKzU0OTQyIGFiZmE3MDU1YjhmMzA5YjI1MDVhNzI1MzdlZDcwODdiNWMxNWMyNWQgcmVsZWFzZTI1LW1haW50Cis1NDk0MyA3ZTk5YWY4NjljOTE3NmRiNDY4MWFiYjM1NGE4ZTFmMGJhOGI5ZGY3IHJlbGVhc2UyNS1tYWludAorNTQ5NDQgNTE5ZjIzMTM0NTNiNzFiZDgyNTFkZGVhZWJjOGNjZGY4MDRmNmVmMSBsZWdhY3ktdHJ1bmsKKzU0OTQ1IGI2ODI3MjQ0OWRmNGIwMzExYmQ3MGM5NGEyN2E0NzM1MzZhMzU1YjUgbGVnYWN5LXRydW5rCis1NDk0NyA3MDhjOGM1ZmMxNzMyMzZhY2QyOGMwOGQ5ZjQ1NzVlN2ExNGY3NmUyIGxlZ2FjeS10cnVuaworNTQ5NDggMWJiMWZhN2ZkMTc0MWIzN2IxZTc4OWEzNzM1ODQxNzc5ZGI1YjhkNiBsZWdhY3ktdHJ1bmsKKzU0OTQ5IDQ3YWViMjQ4ODJiZDc5ZDVhZmI4OWQ3ZTA3NjQ5ODQ1YWQ3NGIxZjQgbGVnYWN5LXRydW5rCis1NDk1MCAzZWU4NDk3NDZjMWJmNWI1MzAwYWExOWM5MjJlODIxNTY5M2U1Mjk2IHJlbGVhc2UyNS1tYWludAorNTQ5NTEgMzc5N2I5ODA5MmNlYTJkYThmZGE2OTJiZDAzZTgzNWY0YjJjYzYyYiBsZWdhY3ktdHJ1bmsKKzU0OTUyIGNhNDg5ODA0YWUyMDEwNjNkNDJlMjJjYjRmMDU1YjQ4NzkwNTVlMDEgcmVsZWFzZTI1LW1haW50Cis1NDk1MyA0YjlmYTgwOTJlODI3MTAzYmNkMWIxYjJmNWY5Njc2Y2VkNDBhODE5IGxlZ2FjeS10cnVuaworNTQ5NTQgN2RlZDc4N2U2MzExNmNjOWMyNmI2OTVjYWNjOTZlOTJjYTA0ZTJmOCByZWxlYXNlMjUtbWFpbnQKKzU0OTU2IDZjNGQ3Njc4YWY1ZTJkMTkzN2ZjOGZiMTY3ZjQxYTIxMDYxYzZlOTMgbGVnYWN5LXRydW5rCis1NDk1NyAxMDAyZjQyZTEwY2RmMmQyYmI1ZTgxZmI3Y2NkYzc5M2IxZjgzODJkIGxlZ2FjeS10cnVuaworNTQ5NTggNzFiNWMxZTJjMDljMjIxZjExMzMzN2VjODFjOGM4ODVlZWYyYWVkYyBsZWdhY3ktdHJ1bmsKKzU0OTU5IDAxOTkwNGM2NDcxN2M4Njg3MzhhOGRiYWQ3YmJlNzM5Mzg4NzJhYjIgbGVnYWN5LXRydW5rCis1NDk2MCAxZjFmYjgxODg4YWUyOGU1ZGI1ZDkzN2I5NzIzZTQ2YjIzYjExOTY3IGxlZ2FjeS10cnVuaworNTQ5NjEgNzYxY2UzOTQ2Yjg2ZWI4MzYzMTE1MGVlNGMwNzU4MDI5MTA3YWQ1ZCBsZWdhY3ktdHJ1bmsKKzU0OTYyIDNmNDNlYmZhOTJkY2YyM2Q1NjRiMDdhZmFjNTJkMDRmM2VhNjZmNWQgcmVsZWFzZTI1LW1haW50Cis1NDk2OSAwZjI5YTFhMDk3MmNkZmE0M2VjZDI0NWZjZTQ5NGU3NWYwMzk0NjIyIGxlZ2FjeS10cnVuaworNTQ5NzMgZTYxNmZhMTMwYzJmY2MzZDA1M2NiZTA3ZTk0NmQxOWI5ODQ1ZmVhMyBkZWNpbWFsLWJyYW5jaAorNTQ5NzQgMDczZDY4YzI5MDQ5MzgzYjBmYzNmNTY5NjEzNGI1MjkzZjk0OWQyZiBsZWdhY3ktdHJ1bmsKKzU0OTc5IGI2ZThhZGVjMDU0YzdkN2NjZDNiZWE2ZDI5OTQ2NDcxOGQwMTc3YjkgbGVnYWN5LXRydW5rCis1NDk4MCAwMGJmMTQ3NjAxZTQ4ZDE1ZmU5NDIxMDE5MmI1Y2Y5YzI5NjFlNmQxIHAzeWsKKzU0OTgxIGY3NjYzYzY3MzRiYmU0ZTQzMmFlYmY0YmRhOGZhZWY2ZTAwNTdlZmEgcmVsZWFzZTI1LW1haW50Cis1NDk4MiBkOWE0ODdjMmZhOTYxNjAxMDZkYThjNTk0ZjQzNzMxOTUzZDczNmQxIGxlZ2FjeS10cnVuaworNTQ5ODMgNjg3N2I3OGU4MTBkMDI0NTYyOWVlZmZiZGUwOTRmNTZmZGQxOWM4YSBsZWdhY3ktdHJ1bmsKKzU0OTg0IDg5MDVkZjYxNzYxM2UxYzBlOGJmMThkZmVjZDgzZjRmMTc1NTIwYTQgbGVnYWN5LXRydW5rCis1NDk4NSA3Y2MzMTAzMmUyMDYzZmUwNjEzODRmOGVjNWFmM2Y0NzBmMGM5NGM5IGxlZ2FjeS10cnVuaworNTQ5OTUgOTM4YzVhZThkYzMxNGJlMjk4OTNkYmUwYmUzY2U0MjIzMjM4NzZlNSBsZWdhY3ktdHJ1bmsKKzU1MDAxIDEyNjQ5YTczNGJlNjI4M2UwYWJhZGYwYzdkOTdlNDRhNDQwODk5OWYgcmVsZWFzZTI1LW1haW50Cis1NTAwMiBjYzlhZmVkZWQyM2ZjYTE2NzA0MDk2MTgwODQ5YWE1YzU0NjUzOGZiIGxlZ2FjeS10cnVuaworNTUwMDQgYWRmYWJjNTczNjFkMzdjOTk5OWZjMTVlNGJjZDVmYmUzY2I1YTdjYyBwM3lrCis1NTAwNSAwNjE0NWZiYzdhYjkzMTgzNDA0ZmVkNmY4YzYzYWU0MzI1ZjM3ODI0IHAzeWsKKzU1MDA3IDI3MDA4Njk5NGY0ODRlOTYxOTUzMGNiOTk0YTg3MmIxOTZjYmI5YTggcHkzay1zdHJ1bmkKKzU1MDA4IGE2YTQzNmFhZWZkYmVlZWUyODU4ZGU1MGI3ODE0M2FkNmNmMTFlYzEgcmVsZWFzZTI1LW1haW50Cis1NTAxMSA3NmUzNzVhYjc1MjU3NDA2MjY4MTU2YmZjMDYzMGEzYTJmYmQzZjUwIHJlbGVhc2UyNS1tYWludAorNTUwMTMgMjlhZTY2N2YzMjM5NDExNjQ3ODA2YzI3NjVhMTdkMmM1YTMyODk5OCBweTNrLXN0cnVuaQorNTUwMjEgYWQxZDU2YzA3NDIzMzk2ZjFiYjZlZDgzZjQ0Mjk4OWEwYmJmNGEyNyBsZWdhY3ktdHJ1bmsKKzU1MDIyIDUyMTE2MGM5YjM2OWQwNGE5Y2Y5OTk0NTY1ODNjNjE1MDI5MTQ5OWQgcmVsZWFzZTI1LW1haW50Cis1NTAyNCA0ZjgwMWE3NTg5MzZkNDQ2NjQ0MmIxNTEyYzRmMzM1OTA0Y2M4NjQ2IGxlZ2FjeS10cnVuaworNTUwMjUgNmE1NmFlZGJlMjgwOGEzYTZiOTgxMGExNjIxOTc4NzNkNWI5ZWYyMyBsZWdhY3ktdHJ1bmsKKzU1MDI2IDg3M2RmYjUyYzMzNDYwNmEwOWJjMjdlYWVjOTU0MmYwNWQ0ODMwNmIgcmVsZWFzZTI1LW1haW50Cis1NTAyNyA4MmU3OTk4M2NiMGMyOTk4NDg5ZDM4ZTY3MDg1ZjQ0OTQwMWRiZWNkIGxlZ2FjeS10cnVuaworNTUwMzYgYjg2YmQ3N2QzZDQwNDBlM2QxNWQ0NjNkMWE3MDBmZjg0MWIxMWFlYiBsZWdhY3ktdHJ1bmsKKzU1MDM3IGJjN2EwMzc5ZDNiMThlYjNiNDE3M2M0MWM2YTQxMmJmN2ZiYzEwYjMgcmVsZWFzZTI1LW1haW50Cis1NTAzOCA4NmEyMzJlYThiYTQ1ZGNlYmY0ZTNlMWE3YjM0Y2I2NDQzNjdlMjY2IGxlZ2FjeS10cnVuaworNTUwMzkgMDBmZTRiYjAyOTM2NGQ3YTFhZTFlZWNiNjFhMWJmYjllNDk2ZjEyNCByZWxlYXNlMjUtbWFpbnQKKzU1MDQxIDJiMmQ1N2Q2Y2M3ZWI4MDVlNTg1OTdhMzZiNzRiNzIxNjE5MjMyYTYgbGVnYWN5LXRydW5rCis1NTA0MiBkM2RmMzFkNDU0NTcxYmE4NWJiOGE2ZjU4NjZiNTYxN2Y2ZjYwOGUxIGxlZ2FjeS10cnVuaworNTUwNzAgMzc2OWE1MTk2MDM1YTMwNzUwODRjMzg5Yzc3M2MxNTA1ZjA4YTY0NiBsZWdhY3ktdHJ1bmsKKzU1MDcyIGU1MGQ4MmM0MThhNzJmZTQ1MWQ3ZmU4ODIxNzMxZWFjNDQ4MjJiYTcgcmVsZWFzZTI1LW1haW50Cis1NTA3MyBhM2JmNTVhMDNmNjZmN2JiMmM0MzNlMjM4NjJhY2MyNjRjMTk2Y2M1IHJlbGVhc2UyNS1tYWludAorNTUwNzQgMzllOTUzODA1MTg0OTM3ZDRhNmZmYjk2NjAxYTg2NjNiOTg5ZTNkMiByZWxlYXNlMjUtbWFpbnQKKzU1MDc3IGVhYjI5NWQ5M2M4ZTY1MDY5MzBjMjQxNjIwMTZjZTdkOTgyYmNhNzEgcDN5aworNTUwNzkgYmVhY2Y0MGI1OTYwN2E2MmJlOWI2N2M5OGUyYmEwOTUyY2E2ODZmOCBweTNrLXN0cnVuaQorNTUwODAgOTgwZmYwYjFiOTU3ODU1NGRmYjNhNDFhNDU0ZjU0ZjZjYTQzZTcwYSBsZWdhY3ktdHJ1bmsKKzU1MDgxIDNkNzJjMTA5MWU1YTM5YmFlZWI4YTgwODgzMGZhODNlMjUwYzFhOTEgcmVsZWFzZTI1LW1haW50Cis1NTA4MyBiYzZhMGZlMzIzNTE3ZWQ0ODI1ZTdlMmUyYWRhZjlmZTVlY2QzYjAwIGxlZ2FjeS10cnVuaworNTUwODYgZDcwNTY1NDU3ZWFiYjA0ZTgyODQxYTVlMTg3MGFmMGNiNDYyMzA2YSBiY2Fubm9uLW9iamNhcAorNTUwODcgN2E0ZjE3NGRmODQ0MTA5NGQzODYyOGNiYWVmMzk1ZGE5ZTE5NzBlYyBsZWdhY3ktdHJ1bmsKKzU1MDkwIGE2ODQ2N2NjMDZkM2I0YTA1MmZkMmViZTEzZTNkODNmOThhNTlmMGUgbGVnYWN5LXRydW5rCis1NTA5MiBlOWJlZjViNDIwMDE1NTRkYTA4OTBkNzkxM2M4NWU0MjA0NDYzNjhlIGxlZ2FjeS10cnVuaworNTUwOTMgMjVjYzFjZWU1ZTY5MDQxYWQwMGEyN2MyYjlhMzUxN2YyMWQyODllNSBsZWdhY3ktdHJ1bmsKKzU1MDk0IDdiNzRhMTk3NjA5Yjg2MjE4NjA3YThmNTlkNGI1NjZjNTAwYzRlZDIgbGVnYWN5LXRydW5rCis1NTA5NSBjMWY2Zjk4NDhiMTdjYzE4ZTc4YTE2NDg0YzU2NGNlM2EzOGNhNzYyIHJlbGVhc2UyNS1tYWludAorNTUwOTcgODI1ZDk2NjMzOGVhNzAwMDYxYjNmNWY4YmQwYjZlZjQ0OTMzNzkyZCBweTNrLXN0cnVuaQorNTUwOTkgMzY4ZmVkOWFmNzYxNzk5MTE1Nzc0NGEyYzczMDhlNjNiNmE3NGVmYiBweTNrLXN0cnVuaQorNTUxMDAgMTViODEwZTIxZmU5YTkwYjQxNGFhMzc5OWE2NDBjYTVkMTEzYjI2MyBweTNrLXN0cnVuaQorNTUxMDEgOWIwMWRmZDAzYzI5NDljMGM5NjRkMzY2MzA1MTVjNWNjYWJiZDJhYyBsZWdhY3ktdHJ1bmsKKzU1MTAyIDM3ZDgyYmVlN2ExNjE1Y2M1YWZkY2IzMjU0YmRlNDFhYTNjMDQ1OWIgbGVnYWN5LXRydW5rCis1NTEwMyAxYzE3MDViZjM2Yjg4YjdkNDFiNTgzMTMxMzY4MWJjYjRhMTUwMjViIGxlZ2FjeS10cnVuaworNTUxMDQgYTg1ZDcxNTAwOWVjYzFhODBlNTNjNWVhMzVkYmVmMmRkZTQxNTIzMyBweTNrLXN0cnVuaQorNTUxMDUgMWU1YTJhMmIxOGVlZGI4OWNjYTdlODMxZWE3MjY3NmJmYWE4NjQyYiBweTNrLXN0cnVuaQorNTUxMDYgZGM1YTE1NjdhZjk4NGQ1ZTZmY2M4OWNiYWJmYmYyMGE4ZDIyNTgwOCBweTNrLXN0cnVuaQorNTUxMDcgZjZmYTQ3MDhhNGRiNDcxMWY5YzQzNmU0MjBiMDUwNDcxYjYzYzBkNyBsZWdhY3ktdHJ1bmsKKzU1MTA4IDJjNTQ3NjNjNDUwNDIxZDBiZjNjYWI4YTJlZWNmNzhkYThiZjg0NjkgcHkzay1zdHJ1bmkKKzU1MTA5IGNmYjNlMDAyMWIzYmY4ZDMyYmZhZjc2MTdjMmQ4MGJiZTBmNjFjZGUgcHkzay1zdHJ1bmkKKzU1MTEwIGNiM2M5MjA2MmVjNDA1ZTlkODE4NzBlYmFkZjlmMjc5ZGZkOTBjNjggcHkzay1zdHJ1bmkKKzU1MTExIGNhNDQ4YzYwN2IxNDAxY2U4MGI3OGRjNWJkYmZiMjY4YTZlNWNhZWQgcHkzay1zdHJ1bmkKKzU1MTEyIGExNGZmMzcwYjYzZDkzMmI2YTU4MGM4NGRlNTdmZmUxNTg4OGM4OTMgcHkzay1zdHJ1bmkKKzU1MTEzIGFjMTZiZWNlMWU1ZmI3ZjVlNGYyMTFmNzAwZGQwMGI2NzVmYjQ2ZDkgcHkzay1zdHJ1bmkKKzU1MTE0IGIzOWFiY2JiYmJiYTRiNTQyYWI1ZTUyOTI1NjFjNWVlZDRkNTg3YjUgcHkzay1zdHJ1bmkKKzU1MTE1IDFkZTU0OTQ3MTcyMWMzOGEyMjg3YWQzYTk0YWEzNzJhNzY3NTM0MzEgbGVnYWN5LXRydW5rCis1NTExNiA0OTY4NmVkNTZlYzdmZTg3MTdmYmM4ZTI0ZTNjZmMzNWExNjhmNzRmIHB5M2stc3RydW5pCis1NTExNyA1YjhlZjk0YmI4MTBmZDAyN2Q3YzUwZGUxOThmZmIyMjEzYWEwYzcwIGxlZ2FjeS10cnVuaworNTUxMTggMTE2MjUwMmEwOWRhNzZiMWVkODQ5YTFiMDBhNjM5NGY0ZmJhMTAyYSBweTNrLXN0cnVuaQorNTUxMTkgYTNlMzAwMWIzNWJmMGExNWUyZWI1MWRkYWVkNzYxNDc1MGIyZjBjNiBweTNrLXN0cnVuaQorNTUxMjAgN2YzNmY5NmI2Yzc2NTg2ZjgzODIwNDRhOWQwNWUyOGUxOWQwYTdjNyBsZWdhY3ktdHJ1bmsKKzU1MTIxIDA1MmJmMGRlZTZiODU0NzA2NDgwMTgwZjMwM2YzN2FjZDhhMGU0MjAgbGVnYWN5LXRydW5rCis1NTEyMiA5MmVhZDg3YmY5ODQzYzQxZTcxYzc3NjkzYzllMjZiMDMyODEwZTNhIHB5M2stc3RydW5pCis1NTEyMyBlNzhlMWI2MTZjNzJmYzgyY2VmZjYxOTUyZTk3ZjhkYmY0OWVlMjA0IHB5M2stc3RydW5pCis1NTEyNCBhNzMyM2M3MmI1YzcxZjkwM2FjZDJlODk0OTRhMzU1MTc4Mjc1MTIyIGRlY2ltYWwtYnJhbmNoCis1NTEyNSBiZTkwMzliNTc0ZDk3Y2VjOWVmZjMyNmJhZTk4OTVkNDhkYTM4ZTk5IGRlY2ltYWwtYnJhbmNoCis1NTEyNyBjNDhmZTRkYzM0YTkxNDIzMDZmYTg1NjFkMGJhM2UxOGY3NDlhYzlmIHB5M2stc3RydW5pCis1NTEyOSAyMTMxZTAzNzIxZWZkYzlhNzcwOGIzZjMyNGVjYmM3YmRlMmJlOWRjIGxlZ2FjeS10cnVuaworNTUxMzAgNTJiOTlhOTE1ZmFhNWU3OTdkODI4ODMyYWY5MWQ2YzU1MjEzZDMzOCBweTNrLXN0cnVuaQorNTUxMzEgOGI3NDNmNTU1OTYxMDhkYzU3OTE2YWM4OGQ4YTU4ODk3MzQyNDdmNiBsZWdhY3ktdHJ1bmsKKzU1MTMzIDA3OGI0ZjJmZGZjOTQ3NmE3OWEzOTU2OGEzOTY4NTYxOTEzZDVhNDkgZGVjaW1hbC1icmFuY2gKKzU1MTM0IDNiNTdmMGI3ZWRkZmY5MTVlYzg0ZjlhMDUyYmYwNDhmMGM0ZDdmNTQgcHkzay1zdHJ1bmkKKzU1MTM1IDllMWRmYzg1NTg5MDViZGI4NzgwYmVjMTkyYjEyNzZkYTg5NjFjZjQgZGVjaW1hbC1icmFuY2gKKzU1MTM2IGUyYjFkMDIyMmFmZWNmMjUxZDkxZTIzOWQ0ZDExMzU5MDRiY2U3NzUgZGVjaW1hbC1icmFuY2gKKzU1MTM4IGRmNDYwMTFjNTkzNjI1NmZjNDAzNTIwNmY3ODdhYzJiOTczNzg2Y2MgZGVjaW1hbC1icmFuY2gKKzU1MTM5IDg2ODA5NzJlZDhmMDM2ZWJmMjdiMmVlYzlmOGEzZWY2YmM2NjM1MTIgcmVsZWFzZTI1LW1haW50Cis1NTE0MCA2MTU3OTVkNTJiOWZkOThhNGZhMjFjNjQ3ZmFiNDQ3MjZiZDg5NGQ2IGxlZ2FjeS10cnVuaworNTUxNDIgYmU3ZWIzZmQzNzc2NjEzMDcxYjZkM2NhYzM4MDlmYWZmNzRjYTM1ZiBwM3lrCis1NTE0MyAyNjZlMTIzOTRiOTdkMmZiMzM0ZDFlZTdmNTBjM2RlYzBkYzhjOWQyIHAzeWsKKzU1MTQ0IDk0NmZkNTRiNDU3ZjVlNDI2YWQwZTc2MDExY2JkMTkzYzBmOWUwMDcgcmVsZWFzZTI1LW1haW50Cis1NTE0NiA2MWFjZmI4MzE2MzNjOGU3MmQzMzQzOGE5M2IxMTcyZjEzMDA0YTFkIHB5M2stc3RydW5pCis1NTE0NyA2YjdkMTc4MmE1NzQ5OTcwYWJmMDdlODJiMDI3ZjQ1MmQzNGVmZjdlIHB5M2stc3RydW5pCis1NTE0OCA4MzhjYWIzNzkzNzZlN2JmYTAxZmE2YjRiOTEwYzM0ZDMwNTM5NjM5IHB5M2stc3RydW5pCis1NTE0OSAxMDdhYWNiOWM1OTU4ODMxY2IyMDdkMWQ3M2ViNGEwZTk0Y2VlMTQwIHB5M2stc3RydW5pCis1NTE1MCA2YmMxNTZkM2MwMGVjMjUzY2IxYzM4MTJhNTVlMTRmYmU5MzYwNGFhIHB5M2stc3RydW5pCis1NTE1MSBlMjVkY2Q4NzRiODI3OTljZWMzYzc0YmU5NWI1MjgxYjAyY2NiZDhlIHB5M2stc3RydW5pCis1NTE1MiA0NmIwMGM3M2UzMmZmYjUyZmZiMWQzZDZkNTQxYzI1MTM2Y2YzZTdhIHB5M2stc3RydW5pCis1NTE1MyAxNDQwYmJiNjcxNTBhNzAxZmNhMjZhMjhkYzA5YmE5NWUwODQ0YTliIHB5M2stc3RydW5pCis1NTE1NCBlYTVjY2VlNmIyODU0YmUyYTU4YzgzNDE2NjkyYmI4MDI5ZTU4YmI3IGxlZ2FjeS10cnVuaworNTUxNTUgMmQzNzc0MDhhOTg3YmNjN2VkMzhkNjRlZDU1ODZmMjZhYTViNzU3NCByZWxlYXNlMjUtbWFpbnQKKzU1MTU2IDU1NGZmMjcxNDVlMTRhZmVjNjY1MWQzNGFjYzFhNTI0Yjc1ZTk1ZWQgcHkzay1zdHJ1bmkKKzU1MTU4IGYzMjAyZmU3ODU5ODE5YTRhZTZiMjM2Njc2YmI0NGY1NmQyZTcwM2IgbGVnYWN5LXRydW5rCis1NTE2MiA4NzI4Y2QwMTJiZDg3ZTc2NDJiZjYxY2FiNzFkMjliZDM4NDQzMjkyIHAzeWsKKzU1MTYzIGM3OTFhNWUyZTA5ZThmZTFkN2U5ODQwMzQxNGNmZjAyMDZiNDRlNmUgcHkzay1zdHJ1bmkKKzU1MTY0IDJkY2MwNWE4MDkwNWZlZTQ2YWU1NmE5OWNkZjhlMmNlOWEzMGNjMTMgcDN5aworNTUxNjUgMGMzYTMxNDgyMDhlMGI5NjRmNTY1NjI0YjkzOWQ5ZDU5YzA5ZmI3MSBsZWdhY3ktdHJ1bmsKKzU1MTY2IGQ0YmE2NjMyNzdmOGZiYzI3MzQ3ZWRkZDgyZjJmMjM3YTgwMjJiM2MgcDN5aworNTUxNjcgYzEwNzVmMDY2NTBhNzYxZWI1MjlmMGM4ODNjMjAyMzI5NzZhMzg1NCBwM3lrCis1NTE2OCA1ZDA5NjkxNjdmNmRiNzZkNzFmMDMxZGI3YjkwMWI2MzgzZGFkNTNiIHJlbGVhc2UyNS1tYWludAorNTUxNjkgNTQxNzk1MzhhMzg3NzI1NWRjNjVhOGFmNWFmOGFiNjVlMmU5NTRlZiBsZWdhY3ktdHJ1bmsKKzU1MTcwIDQ0MzEwMmJmNTg5NTA1NDdhYjg3YmFiZGVhNzU1ZTA5YzhjODZiOWMgcHkzay1zdHJ1bmkKKzU1MTcxIDQxMTAyNzNhMjYxMTA5ZjI0NjY3MDk4YzA3Nzg0YTM5YzUzMjU4MzAgcDN5aworNTUxNzMgYmUxZTcwOGQ1ZDNkZjE1YjhmM2JmZjAxOTgxY2ZjNWY0OGUxMTBlNSByZWxlYXNlMjUtbWFpbnQKKzU1MTc0IGE1MjM0ZjNjNzU1MTFlZDJiYzBkZTQyZThjZmVjMmIzNjM5ZWFhNGIgcmVsZWFzZTI1LW1haW50Cis1NTE3NSA4NDNkMGNjYjAwOTRkZjc4Y2U3MjQzYjE5MzdhNjY4ZWFhMzQ2ZjM4IHJlbGVhc2UyNS1tYWludAorNTUxNzcgZmRmZGVlMTkxYTYxMmI5NGIzMzEyNGE2NDE5ZWMzMTMwNzQ2NDYzZiByZWxlYXNlMjUtbWFpbnQKKzU1MTc4IDIwNTg3MWM5NzE1ZGI2M2MxMTdlYmNkMGNkOTRhZmQ4ZGQzNDlhYzYgcmVsZWFzZTI1LW1haW50Cis1NTE3OSBhMTUzZjIxNGZhMWI4NDA4ZDU0NTM2OWVlNTQwZjVkZWQ5NzFjNjg3IHB5M2stc3RydW5pCis1NTE4MCBhNmViNmFjZmUwNGFjMmJmMzA0NDI4NWFlZjU1MmMwYjdkZmU0YmVhIHB5M2stc3RydW5pCis1NTE4MSBjNjU2ODU1MGIxYzYxMGRjNGI1Zjg3N2U1N2Q0OGEyYmViMDZiMGMxIHB5M2stc3RydW5pCis1NTE4MiA4ZTdjNjBiMTM1NmI3MzgzZmIzY2M5ODQ5ODQzMDFhZDQzNmM0ZTg5IHAzeWsKKzU1MTg0IDljYzRjM2YwYjU4MDc1YTQzODNlMjA0MmVjM2Y4MDZiYmVlYjdkZTUgcHkzay1zdHJ1bmkKKzU1MTg1IDcwNDcyYzE1N2JiOWMwMDUzODRlNzhkYjk1ZGI2NmI1YjJjZTdjMjIgcHkzay1zdHJ1bmkKKzU1MTg2IDhmNzdmOTYwNzExMzg4MDVjMmZjY2QwZmIzMWY2MjA5YjVmYTQ5NTQgcDN5aworNTUxODcgNmEwMTZmM2UwMDUxNjY3YzNlMzI0NWYxZWY3ODFkOWZhOGFjNTc4NSBweTNrLXN0cnVuaQorNTUxODggYzg0MDAwOTZkMmQ3MWM4ZjUzN2JkMWM4ZmRkMGVmZjg1YzdmZjc5OCBweTNrLXN0cnVuaQorNTUxODkgYmM2YWQ2M2NkNWYxZjZlMDg3OWIzZDJlODBlZTdhMGNkNDM4NzRhYSBweTNrLXN0cnVuaQorNTUxOTEgMmQ5ZTU4YzVhZDM0M2Q0NDE0NDhiNDcxMzkwNDFkNGU2NmM0ZjBiZiBweTNrLXN0cnVuaQorNTUxOTMgMjNhOGIzZGZiZTk1MzcxMGZkY2M2N2YwN2UwOGQxMWQ3NTlhMWZlYyBweTNrLXN0cnVuaQorNTUxOTQgNDRlYmFlNGY2MWM0YTJiMDAwZWM1M2U5MjQ5ODU3M2Y0ODNhZGZhYSBweTNrLXN0cnVuaQorNTUxOTUgMDUwYzk4Y2Q0MWM0Zjc0YWNkMmNlOTNjMWIzYTA3OGMzZjhlOWQ2YSBweTNrLXN0cnVuaQorNTUxOTYgNTI1MzMzNzBmMWFkNDAzYzIzMzY2MWYyZmFiMDA1MjM2NDU5YTNjMSBweTNrLXN0cnVuaQorNTUxOTcgMzcwYjkxNTMzYzUzZDhjMDA4NTk0NThlMzg1OWU5Y2Y0ZDk2ZWQ5NSBsZWdhY3ktdHJ1bmsKKzU1MTk4IGYwZGExYjdiOGU1YTJhZTQ5ZGRiMzI5YWVjN2I4MWVhZjY5ZjAzZDggbGVnYWN5LXRydW5rCis1NTE5OSA3NmU2M2UwMzMzNTYwNWRjNjNhZDkyNGI4ZTU5ZWNlNjk1MTZmYWMyIHJlbGVhc2UyNS1tYWludAorNTUyMDAgNWM3Mjg1MzQ5NzBjMWUyNjJhNzhkYzBlYzQ4MDQ4NDA5YzU0YmI3MCByZWxlYXNlMjUtbWFpbnQKKzU1MjAxIDdmZTZhZmNiZDNmMmE2YTY3NmQ5MDIyODg2NmNjY2IxOGYzODMxODAgcHkzay1zdHJ1bmkKKzU1MjAyIDY1MGZmOGQ3Y2MzODBhYTE0NWVkZjY4ZmFkZmZlMTZlYmU2MWQ2NWYgcHkzay1zdHJ1bmkKKzU1MjAzIDNhNGYwNmJjMjU0YmI1ZWRkYjM4ODZiZTZkZDE1MTVhZDM5N2Q2MzQgcHkzay1zdHJ1bmkKKzU1MjA0IDAyZTY5ODk4ODUyMWE5OTU3ODU3YWUzOTJmMTJkNThiYTg2Nzc1OGYgcDN5aworNTUyMDUgOWIxNGMxZTU4OTM2MWJjYTNmN2MyY2U3OTQ2OWE5NGFlMWUyMGRlYyBsZWdhY3ktdHJ1bmsKKzU1MjA2IGRkMmQ0MDdkY2ZkMGM0N2QxZTFhMDIyMGFlNTllODVjNDMxOGZhNGIgcmVsZWFzZTI1LW1haW50Cis1NTIwNyA0NzVjN2M1NDM3ZmM2MmI4M2QwZDcwZTk4MzY4NTBiZjVmNjgxYjNhIHB5M2stc3RydW5pCis1NTIwOCBhMzYzY2VhMzJiOWJhYWEwMmIwZmMzOGIxNDNhMjU1M2Y5MjVhY2FjIHB5M2stc3RydW5pCis1NTIwOSBhMzI0OGZlZmMwZGM4YjZhZWUwNTZjODU1MjQ2MjM0ZTA5MzRkNTc4IHB5M2stc3RydW5pCis1NTIxMCA4NWQ1MWNiOGFlNWVkODUyN2Q2MzU4NmUxNzk4Mzk0MzAyOWFmMTgwIHB5M2stc3RydW5pCis1NTIxMSA0YTk1MzNlOTM2NWUwZDk3ODE2NzQxMjkxODM1MGNlNzc0MDQ4Y2RiIHB5M2stc3RydW5pCis1NTIxMiBiMWJiZTgwMTExNTI4OTNjY2M1MThkNjc2ODQ0ZWRjMjUxMTViYjZlIHB5M2stc3RydW5pCis1NTIxMyBkMTI4MTFkZWNmOTRkMzdkOTlkZWRlZTYyMTg0OTA2YTc3OTM1MTQ2IHB5M2stc3RydW5pCis1NTIxNCA2ODhlMmJjMjA4MDI2MzhhZWQ1ODgzNWViZWNiODE3YTE0OTAxNjhkIHB5M2stc3RydW5pCis1NTIxNSA3YTk2Yzg2NDA1NzUxYmQ5ZWM5OThkN2VmZWYwMmNjYjVkN2UwYzk0IHB5M2stc3RydW5pCis1NTIxNiBkZDNhYzFjZDFjOTE5NmYzMmQxMjZhYjAzMzhlYTJjMWFhMTBlMWI1IHB5M2stc3RydW5pCis1NTIxNyA1ZjIwMjg2YjBkYTk5MzYyOThiMTYxNmI4ZWQ0YjU1NDkzMWMyOTAzIHB5M2stc3RydW5pCis1NTIxOCAyNDhkZmMxYmQ0NGMwMjViYWM5MDJiZmQ3M2UxMGUxMjk5MjUxOGU1IHB5M2stc3RydW5pCis1NTIxOSAyOTc3MzRmOGE2MjdhY2RmNmViYWQ4NTZmMGI1NWEzZGQyNGVjYWNkIHB5M2stc3RydW5pCis1NTIyMCA5MTVkNTI0NTVmZmM0YmZlZmMyMmI2ZDMxZTdlOTM2MDQ0OTg3OTExIHB5M2stc3RydW5pCis1NTIyMSBjNGE5OTkzZjJjZTZjZWFhMjA5N2YyODY1ZGFhN2Q1YjkyMWI2MDQ0IHAzeWsKKzU1MjIyIDk5MTQ0NmZmNmIxNWMwOGIwZGYyZmNjYzRmNGEyNGQ3M2ExZWU3NjIgcmVsZWFzZTI1LW1haW50Cis1NTIyMyA3NzVkNDRhNTQzOTk1NTBiZDU5MWU2YTExYzJhNTQxMzUxM2MxMjA1IHJlbGVhc2UyNS1tYWludAorNTUyMjQgOTg3MDkxODlkOWUxYzAwYWM5NGU2MTlhZTBiZjk4ZjU5NTFjMDZlNiBweTNrLXN0cnVuaQorNTUyMjUgMTA0MDU2OGY5MDJjYTJiMWI4NWFhYTM2ZGVmZDc5ODU5N2E1MWY0ZiBweTNrLXN0cnVuaQorNTUyMjYgMWQzMzQ5MTJhMTA0MGQ5ZmU4NTRmZTQ4MTA4YzA1NWVlMTQzNjkwMSBweTNrLXN0cnVuaQorNTUyMjcgNzU5NDcwOWU2MzFiMzMzN2VlNGJjNmZlZmY2NDc3ZTI0ODUzYWM3YiBsZWdhY3ktdHJ1bmsKKzU1MjI4IDhhOGJmMmMwNzRlMDRmMGJiMzI0NDRlZTQ4OGJiMjUwYjM1ZTg1NWMgcDN5aworNTUyMjkgYzVlYmY5YzIxOWJlNDY1MjA2MGM0ZmExMTAyNjJmN2I3YmIwMmExYSBweTNrLXN0cnVuaQorNTUyMzAgZmI3MDVmMThiZjNkNzY2NWY2NjhjNjBiM2I4NjdmNWU4MTA3MzVlYiBweTNrLXN0cnVuaQorNTUyMzEgYmFiOGE5YzdmNDllYjYyMDE3MmZiY2U0Mjc1OGMyNzg1ZjcyMDYzYSBweTNrLXN0cnVuaQorNTUyMzggYTZlNGYyY2JlZmE5YmQwYjM1MWFlZjRjNjMzOWIxM2U1ODMyN2MwYyBwM3lrCis1NTI0MSA0MzY3YjdhZjc1MzE5YmQ2NWY3ZTc4MWI5ZTk5ZmViNDA3MGUyNjdiIGxlZ2FjeS10cnVuaworNTUyNDIgOGVkZDc0NjI5MWZlZmRlZTZmZGVjMmQ4Mjc3NTZmZTBkMTNkYTRiOSBsZWdhY3ktdHJ1bmsKKzU1MjQzIDAyZDI0ODhmZWM2MGNhMTVjYjlhNjViZjJjNDVlN2M2NzZlNTI0ODAgcmVsZWFzZTI1LW1haW50Cis1NTI0NCBjZjlkZDdmMGY0YTIwZjAyNmEyOTQ3ZTBiZDI1Mzk0MDc4ZWRjMTFjIGxlZ2FjeS10cnVuaworNTUyNDUgNmM0YWE0NjExYzg4MWRjNjJjZTVhOWM0ZDY3OGU1ODIxMTAxNTAxMSBsZWdhY3ktdHJ1bmsKKzU1MjQ2IGNiYThjNmE1ZWNmMDI2MTY3NDY5N2M3ZjVkZjVlNDRmMzE4MDAwMzYgcDN5aworNTUyNDcgY2Y3OWZlZThiNzFhMTBhOGQ2OTlhNWUzMjMwNzJkNjVkYzg1MmQ5YiBsZWdhY3ktdHJ1bmsKKzU1MjQ4IDAxMTI3ODIxYWY3NTYxNGVhNTczYTc3OWZmMDYwZmU3MWI3NTVkMzggcDN5aworNTUyNDkgZDIzMTY4NWU5ZWE3ZDU0YTJkYzRmOGJmZDZjM2Y4NGI4NGU3YTkzMiBwM3lrCis1NTI1MCBmMjIzYTQ0ZGIxM2E2ODgzN2ZlOGZmMGUxMGEwZDUwYjc2NmU4NDYwIHAzeWsKKzU1MjUxIDliOWM1M2MxYWE1YzA5NWYwOWZiOWJiYTM4NmQ1YTE1ZTUzYjMxOGQgcDN5aworNTUyNTIgZGMzOWJmYzVjNzRlNjIyYmM1NDhiMmJkNWVmNDQ1ZTFiZjg1MDFjMCBwM3lrCis1NTI1MyA4MWQ5ZjUyNzBlODc1MmQ0N2MxZGFlMDNjNDU2NTA0MjYyNmYxNzYwIGxlZ2FjeS10cnVuaworNTUyNTQgM2VlZTA2Y2IxNWEzZWUxYmVlMzQ0MzFmMTlhMDQ1ZmI0OTcyMmMyMSBwM3lrCis1NTI1NSA3ZDk4YzEyYTM0NGRiYjAzMGM0ODE0OTY3MjZjODU3YThmYjAyYzhmIHAzeWsKKzU1MjU2IGQ5MWNjOGQ0OTI5NGU4YWY0MmUxMzQ4YmMxYmUwZTNhYjFmMTM3NjYgcHkzay1zdHJ1bmkKKzU1MjU3IDQ1NDhjZWIzMWM5NDkzOTkxNWVmN2NiNGYxNGRjY2IwN2VhMDhlM2IgcmVsZWFzZTI1LW1haW50Cis1NTI1OCBjZDI0MDNkMzcwZTBmNjdjNDFiNjlmZTI3YTAxZjM3OTUzYmI4OTZjIGxlZ2FjeS10cnVuaworNTUyNTkgYjhmYTRhYzZjNWYwN2M2MDlkZWY3M2Y2Yzg0YjNmNDg0N2QyNzY1NSBsZWdhY3ktdHJ1bmsKKzU1MjYwIDNmYTQwYjU5YjliNjhlMmZlYmJkMDViZTQ3MmYyYTQ0N2RjZTE4ZmQgcmVsZWFzZTI1LW1haW50Cis1NTI2MSA1MWM3NDEyMjg5NTgzZmZlYTE0NTExYTMyOWE2MTljNDM5ODVlNTU3IHAzeWsKKzU1MjYyIGJjZjU3YTE1M2IxMWE1NzBmZTBlNTQ1NTNkYmUyMDcyYmExNmE4MDIgcDN5aworNTUyNjQgZDdjN2ZlOWI2ZTk3MmU5MjU4NjYyYTNkZDY0MmQ3ZGFjZDJkYmY2ZCBwM3lrCis1NTI2NSA5MTUzOTJkNWYwYjg2NDZiMTZkNTE0NGJiOWRlN2QzNzZlOThjZDUzIHAzeWsKKzU1MjY2IDMyNjczYjg4OGMyNDRjZTE4Y2NmNDFlY2UwYTU5ODAxMTU5ZDE3ODYgcDN5aworNTUyNjcgNWEyZjU5MjBjZjc1MGZjZDU4Y2RkYmYyNTk0OGU4MDI1OWEzMjkzNiBwM3lrCis1NTI2OCA3ZDQ5MDM4ZTk5Yzk5MTQ4MTJkOWNlNDQ1NjhlZmJmMmI2MDM5YWI5IHB5M2stc3RydW5pCis1NTI2OSBlZTQ3ZmQ1YzBlNWQ3NDY3ZmViMjhlZWQxNjEwZjgyNTAwZWMyM2NjIHAzeWsKKzU1MjcwIGUxNmM4ZTVjNWNhNGMxMTFiNjVmOTFhZTlhMzg0YTlkOTc3ZjBjMmMgcHkzay1zdHJ1bmkKKzU1MjcxIDI3MTllMTdjOTI4ZDM2NjgwOGI5NDRiMGNjY2RlOWQxZTIzMDllZjAgcDN5aworNTUyNzIgZGRjNGJlMjc4NmZkMjU4MzVkZjhlNjZlMzI0MjNiYTgzOGJkOTBiYiBweTNrLXN0cnVuaQorNTUyNzMgMjBiOGIyOTU5M2MwZDk4ZDRjODE5ZmY0ZDhmZDJjMWZkNTBlYjFkMSBsZWdhY3ktdHJ1bmsKKzU1Mjc1IGUwNmUxOTZhMDVjZmYzODFiYzQ2ZWMzNjYwNTI4NzQyYjdiNGRlNzcgcHkzay1zdHJ1bmkKKzU1MjgwIDk3MDZmM2I0OTA2NzBmMzE4OTcwYzc2YWUxNTFkNWE4N2Q3NTFjMWYgcDN5aworNTUyODIgNzk5M2YyM2FkNDZjYTU0ZjEwZmI5YWM1OTUwMWMzY2RkNzY1ODA4ZSBweTNrLXN0cnVuaQorNTUyODMgZDIzN2Y0N2YyOTNmMjliOWFhNjA1MGZiMTgwYTYxYTI3NmRmNmJjNSBweTNrLXN0cnVuaQorNTUyODQgOTE3MDQwZGZlYzU4MzhjN2ZkMTEzZTcxZDExYzlmMWI2ZDgwNmJlNyBweTNrLXN0cnVuaQorNTUyODUgMjYxNzEzM2M3YWZhMjczODM0ODgyNjdlMThmZjMxNzIyMDE0NzY0NCBweTNrLXN0cnVuaQorNTUyODYgNjAyNmI4YTI2YzA1ZmY0ZDQ4NmM0ZTIzMjVlODUxODA4ZWEwZmNhYiBweTNrLXN0cnVuaQorNTUyODcgNDgyYjU5OTBkMmZiM2RmNjg2NzQ1NDNiZGZmZmE1YjBiMjExNWZhMyBsZWdhY3ktdHJ1bmsKKzU1Mjg4IGMxN2Q3NjBjYjZkMDZmMDk2MGMxM2JkZGZhMGJmOGJhYTJjOGYyYWYgcmVsZWFzZTI1LW1haW50Cis1NTI5MCA3YmJiOTdlMTRhZDZlZDEyZTdmMWM0ZmI2NjMwMTAyMTc4NjhlNzg4IGxlZ2FjeS10cnVuaworNTUyOTcgYTQ4OTNjNDgwMjY0OGI3N2FjMjY5ZTU1Y2YwM2M1YTcxMmI5M2M0MyBsZWdhY3ktdHJ1bmsKKzU1Mjk4IDkyZWI1YWU0YzE4ZjE1MWE1ODk1NmFlY2UyNzNkZTRkYTgwMDNlZWUgbGVnYWN5LXRydW5rCis1NTI5OSBhMTYwYjQzN2ZmMzVmZTE2ODI0ZmFiYmI2N2UyZmNkNGY1NTc2NjJlIGxlZ2FjeS10cnVuaworNTUzMDEgYjQ2MDA4NDQ3OTkzMzM5MWY4MTk4NDU5ZmFkM2ZlMzRiMGRhMTU2MSBwM3lrCis1NTMwMyBiN2U5MTM2ZDRjODM4ZjhlY2ZiYTdhZWI0NjMyZWQ5NzhmMzkwZWM4IHAzeWsKKzU1MzA1IDdkMjRhNjhkMGExYzYxNjM2MjJjZjQ3NDYwZjA0NDYxN2I4NDM3NWQgcDN5aworNTUzMDYgNjU2NjZlYzgzYzJjMDBjNzEzYjIwOTEyN2VlZThjZGQ4YmQ5NTEyZiBwM3lrCis1NTMwNyBhYWU1NDllYmE3MDc1ZjU0NmU3YzhlMjExZTc2ZGZjMGZhNjIzM2M4IHAzeWsKKzU1MzIwIGM0ZDU3ZGM2MGIwMTliNWUzZThmYjIzNWMzMTY1Y2EzY2ZlNzY2Y2IgbGVnYWN5LXRydW5rCis1NTMyMiAxNTIzYWE4MjcxNDY1ZTlmMjY1OWNlYjVkNmE4Yzk2ZDY2NTAwNDI0IHAzeWsKKzU1MzI1IGY2MGM4NzdkNTJjOGEwOTdhNWQ4MTEzZjlkYjNjZmVhM2UyY2I0NjQgcHkzay1zdHJ1bmkKKzU1MzI2IGM3ZjU0NjYwZWExN2VmYWZmYmNkY2MwOTI0MGZmYTZkNmM4NzUwMWIgcDN5aworNTUzMjcgZDZlNmY5ODJjNjM3YjY5ODA3ZDM4NzQ0MWVlNTYxNzM5OWZjODY3NyBwM3lrCis1NTMyOCAwMGMwMmM0NDg4Y2VmOTExZTBlMjEzNDA1YjhiYWU5NGU3NDYzZmJhIHB5M2stc3RydW5pCis1NTMyOSBmMzI1NmM4YzcyY2E4MTMwZGUzMWE2Yzg5N2NmNTI1NDQwZmNkZWUzIHAzeWsKKzU1MzMxIGJjNDNjYjIzMTY0MDQwODkyMzJhY2Q2ZGIwYmFlNjMyMDFiMjg1MTkgcDN5aworNTUzMzIgNTU4NTE4ZmY5ZDkxYWI2MjQyNmQwY2U3NjRhYmQyZTJjNDcyNmRiNyBwM3lrCis1NTMzMyA2ZGViNGJiMTAwNTlmOTFjY2NiOGJlZjFjNTI2ZjJhMDFjNjZjMjVkIHAzeWsKKzU1MzM0IDFkYjMxOTQxZTAxMzkxZTc5NmQ4NzIzOGVkYmY3NzE0ZmRiOGQxNzYgcDN5aworNTUzMzUgYjljNzI0ZGQ3MmM4MThmMWExZDM3MmNlNWY5MDRhMDFmMzVjYTRiYSBwM3lrCis1NTMzNiBkODEzZmMzNmI5NzAxZjUyNGI0ZTdiZWUwMjRhNzNiMTIzZTFlMmJiIHAzeWsKKzU1MzM3IDFjOWEyOTk2NTZiZTM3MWExYTI5N2NmNWViMDYxZDhlN2FlZTcxNjUgcDN5aworNTUzNDMgOWFkODQwNzBiMjJkODRmMTc1YTNiODkwMzY3Y2Y5MDY5MmI2NDE4YyBweTNrLXN0cnVuaQorNTUzNDcgNmNhM2Q1ZjNkMWJlMTMxZmY2Njk3YTc5ZGYwZTg0YmNhNmM0OTNhZSBweTNrLXN0cnVuaQorNTUzNDggM2UxZWI3YWY0ZWEwZDIxZTdmMWU5MzA1ZGYxNzUwZjE3N2Q5NTZjZiBsZWdhY3ktdHJ1bmsKKzU1MzQ5IDJiNzExMmE2MzU3MWIyZWUwYzQ5NDc4NDEyYTNiODg4ODdmYzMxOGUgcmVsZWFzZTI1LW1haW50Cis1NTM1MCAyNjM0OWE2NGVmNzAxNWJjMjBiOTkzMjI5ZjM1MGM0ZmJlMWY3ZDgwIHJlbGVhc2UyNC1tYWludAorNTUzNTEgZDNjZDI5MjBiZWI2ODdiZjIxNzFlZjc5NjEzODBkMzE2YmNkMjBkOCBweTNrLXN0cnVuaQorNTUzNTIgYzljNTJiODdjMzBiNWZiMzNhYzNhZjk0OWZjMDNkOTY4NDExZDAwNyBweTNrLXN0cnVuaQorNTUzNTMgYThiN2E4MTU5OWQwNDhhYWExNDI0ZDY1NDUxNGIzYzJlMDAzNDMxOCBweTNrLXN0cnVuaQorNTUzNTQgZDExNDZkNGRiNTQ5NDY4NDRmNDk5OGFmOGEwODkyYjk2NjZiODg1MCBweTNrLXN0cnVuaQorNTUzNTUgMjAyODZlY2E0NzQzMTVhOTYzYjFmNjEyMjQxOTQ1NjM3YWU1NTUxZCBweTNrLXN0cnVuaQorNTUzNTYgNDMwYjZlZDgwMTQ4ZTliMDA5M2U5ZDBjYzk3YmI5MjMxOWY5MmJlOCBweTNrLXN0cnVuaQorNTUzNTcgNmVhOTM3MDBkNzc5MjA3MDZmY2E1NGYwYjJkNzNlYzYwOWMxZjZiMyBweTNrLXN0cnVuaQorNTUzNTggMjk2ODU5NzExOGMxMzljOGJiN2IzN2VkNzNiMDNlMjNjODg0ZDMyYSBweTNrLXN0cnVuaQorNTUzNTkgMjkzN2Y1MzcxMzJlYTNmZmU0MzVmZTk1MzRkNjYwM2Q4MDRmY2QzZSBweTNrLXN0cnVuaQorNTUzNjAgYzdiMTU1YWQzNzkxMTkwNGU1MWM4NWZlZjRjODJhMTA2NzgxY2JkMCBwM3lrCis1NTM2MSAzNzg3YTNmYmM0NThkOGRiYjljOTdhY2IyYmYyNzlmYTkxZDdkNTlhIHAzeWsKKzU1MzYzIDc4ZDc2NDM1ZGE5YWM5Y2UzZjJhMDBlYzVlZTc5NDg5YTY0NjZiYzggcHkzay1zdHJ1bmkKKzU1MzY0IGJiYjA5OWQ0ZWM4MDI0YmY4MDBlMDJjMDYzNWYyOGM3OWQxN2IxODUgcHkzay1zdHJ1bmkKKzU1MzY3IDA1MmQ1NWU4YWY3NzMwYTc0ZjI1MDgyYTcxNDNkMTc0Mzg2MjI4ZmEgcDN5aworNTUzNjkgOTJmNzE5ZmE5YjE2ZTkwY2FiYjk1NWE0MGMxNTY1ZDQ0MmE2NzA1OSBwM3lrCis1NTM3MCA0ZTQxYjcyZGEwZmM2NjM3MjQxZjdjM2VhMzQ0YjdkMTFmMzBjYmYwIHAzeWsKKzU1MzcyIDBhZDY5NTFjMThmN2M1NzgyYmNjNjI3ZGU0YjY0ZjljNjk3ZjhlMzMgbGVnYWN5LXRydW5rCis1NTM3MyA2OWUxZjdlYzBjZTkxNmYxZjZlMjUxMzk0YzZiNjFmNWJjMWZmMTlkIHJlbGVhc2UyNS1tYWludAorNTUzNzQgZDBjMDc2NjY5NzMyZmQyZjg0ZjBhYzgzODMxM2QwMjcyODViN2M0MiBwM3lrCis1NTM3NyAwNDI0YTlmYTRiMGI0ZDRjZmMzNjhlOGIwNjcyN2ZlMWQxMWViZGYzIGxlZ2FjeS10cnVuaworNTUzNzkgYjAxNTQ2ZjM2YTIyNjMwNGM5MTk1ODNmM2NiNzc3YzI2ZjhiZjEzYyBwM3lrCis1NTM4MCAwN2YwODMyMjk3YjFlNzJlNWZmZTZhZTY0Njk4NGVmOTRlMTkxMTljIGxlZ2FjeS10cnVuaworNTUzODEgY2NhOWUzMmVlNTUwMWJkOGY4ZGQzZGMxYWMzNTZmNmFmMDIxZjA2MCBweTNrLXN0cnVuaQorNTUzODIgZGM2YjVmMzU1ZDVhOGNiYjE1ZjVjMjNiN2E1NDBmYTIwYTY4YjJhMCBweTNrLXN0cnVuaQorNTUzODMgOWI4MjkzYmY4ZmVjOGJmZjlkMzk4OTY4MzE3NzI3YmRkNjM3M2JjNiBsZWdhY3ktdHJ1bmsKKzU1Mzg0IDc1ODFlYzE2MjMwZWYxODMxODNhZWJhYWVjM2RhNjZhNzc5MmY5ODYgcmVsZWFzZTI1LW1haW50Cis1NTM4NSA2MWM0YzIyMmEzMjcwZDgzMTI1ZGNhMjU5NDUwMDZlYjMzZGI3YmE4IGJjYW5ub24tb2JqY2FwCis1NTM4NiA2ZjEyOTNhYjNhYzQ4ZTgzNjZlYTRmZWYyMDQ1ZGFmMWU2MzU0YWFkIGxlZ2FjeS10cnVuaworNTUzODcgNjkzYjhkOTE0NzcxNzA4MDlhZTkyYjM1NGQ4Y2Y0NTlhNDA0ZjhkMSByZWxlYXNlMjUtbWFpbnQKKzU1Mzg4IDM4OGU0ZjIxZTc0OWUyN2RjMDNmOGEwNDQ3NWVjZTY0MmY4ODc5NzQgcDN5aworNTUzODkgMmVjYzI5NjQ0M2MzMmMzYzExMmYzNmM3MTEyMGEwNDRjMmEyNmI3NiBsZWdhY3ktdHJ1bmsKKzU1Mzk0IDc1NmUxZDQwNGNiODYxYjllMWRhYTBmNDMwMGQyNjg5NGQyOGZjYWUgbGVnYWN5LXRydW5rCis1NTM5NSBlM2VhODgxYjE0ZmVkMmI1M2I2ODQwOWE0NjIzMGNkZGVhYzk3YmJlIGxlZ2FjeS10cnVuaworNTUzOTYgNzlkZDkwNzg3MDkxZGZlM2QxZTBjNjQ2NTM3MWFkZDgzMmJkZmUwNCBsZWdhY3ktdHJ1bmsKKzU1Mzk3IGNjNmY0N2YxZTEzYTQ0NmRkNTMyNzI4Zjc2NTEyMWIzZWJiOTkyMWMgbGVnYWN5LXRydW5rCis1NTM5OCA2ZjBkYmE4MDc3MzRhZmM2YWY5MGY0NzIzYTFlMDAwNGY4ZTg4N2RhIGxlZ2FjeS10cnVuaworNTU0MDYgYzEyYTMwOTc4N2QzY2M4ZjM5NDMwNWIyYmQ1Y2Y1ZTNkNmNmNmIyMyBwM3lrCis1NTQwNyBiMDg1ZWI2NmI3ZjZkYTZlMjQzNzIzYWJkMTFiYWEzMTkyMDM2YzYwIHB5M2stc3RydW5pCis1NTQwOSA0MWExODMwZWVlMTY1MThkYzMyNjYzOTgwMmNmNTcxZjY5ZjcxMjFkIHB5M2stc3RydW5pCis1NTQxMCBlZGE5ZTYwYzk3NDU0NzhiYzY5ZjE1Y2QxODVhZmM2NGJlNDVlMjMxIHB5M2stc3RydW5pCis1NTQxMSA0ZDE1YWQ0MTY1MWU0YzBmNjhlY2VkM2ZkYzU4ZWY5YTEzNDYyYjc2IHJlbGVhc2UyNS1tYWludAorNTU0MTIgMTUxMTg5YzcyYTM3MmI5YTIzNDhmYTg3ZWQ0ZjNiZTlhMGNhZTIxMiBsZWdhY3ktdHJ1bmsKKzU1NDEzIGE2Nzk2YTI0NDgxY2U1MDEzM2I3YTMwZGI0N2U5NzQzOTJlMTA4YWQgcDN5aworNTU0MTQgNjg5YmFlMDc2N2UyMGMxZWRiZjZiZjdmNTA2YjI4ZjY4NjMxM2JhYyBkZWNpbWFsLWJyYW5jaAorNTU0MTUgYzI0MTFiZGI2Mjg2Y2ZlMTYzNjEwMGMxMWIwN2Q4MTc5YjUyMjhhMSBweTNrLXN0cnVuaQorNTU0MTYgNjA5NDViZGIxYjc1NDg1NmExOTQ3M2MxMjQ0ZjljZGI5ZTE3YjJhZiBweTNrLXN0cnVuaQorNTU0MTcgYjBiNTE0YmFkZjBiMGJhOWZjOWVjYTVjYTc2ZDdjMWVlNTc2MTQyYSBweTNrLXN0cnVuaQorNTU0MjAgMTNhNmM2YmVmNjA5NzAxYTc3NWIyYTY2MzU2NjNlNTkxN2ZmZWRiZSBweTNrLXN0cnVuaQorNTU0MjEgMGVhZDEwNjRlYWQwMDJkN2ZkZWY5OGFiYzQzMzg2MWI0ZGM0OGIzMiBweTNrLXN0cnVuaQorNTU0MjIgZWRiNGM5MDI4YmUwMDJhM2VhZTA0NDQ1YWQwMjIzNWY5N2NlYTA1YSBweTNrLXN0cnVuaQorNTU0MjMgMWE5Y2Q3NjM2NGUzZDZhMjNjZGZmMjI2OWFmM2E1NGYzNzMwZTcyZCBweTNrLXN0cnVuaQorNTU0MjUgNWQ5ZGQxYjhkOTA4Yjc4Y2M5YmI0MjA4NzIyOThmNWQzY2RjZjExNCByZWxlYXNlMjUtbWFpbnQKKzU1NDI2IDQ3YjE1OWQ2NDBhNDU0ZGVjZjZhM2I2NDNjZmRjZmNjNjM5YWJkMjAgcmVsZWFzZTI1LW1haW50Cis1NTQyNyBmNDNlOWQxZmFiYWE4YjZmYmU0MDY1NjYyNTU4MDZjNzM3ODAwNDdmIGxlZ2FjeS10cnVuaworNTU0MjggOGZlOThmNjBlYjZlMzc5N2MzNTRjNGI5Y2VkNzMzZGMwYjYwNDcwMiBweTNrLXN0cnVuaQorNTU0MjkgMTQxZTJhZWZmYmFhNDNlYjM4YWIxNzBkYmUzOGRlOGQ0ZmQwOTViOSBweTNrLXN0cnVuaQorNTU0MzAgY2U2MGY0N2IxN2EyNTQxYzliNGJkODJjODAwOWE2ZDJhYmI2Y2FlYiBwM3lrCis1NTQzMiA2NWMzYjQzMmY1MDFiN2ZmM2RlNjkxM2Y0MjM0ZDFlOTQ4MjIzNTdjIHAzeWsKKzU1NDMzIGQ2YWE3ZWRmMjE3YTY1MjBlNjI3MTgwODE2N2M4MDg2NmVhZWVmYTAgcHkzay1zdHJ1bmkKKzU1NDM0IDQ3ZGM3MTYwNTM0MWQzYTk3ZGRkZDE2NmY5MzZiOWViODI0ZTdiYWEgcDN5aworNTU0MzUgOGFkMWM4OGNlMWFjNjc4NGQ3NDdhZGI4ZmMxYjY5MjFkMjkzMjBjMyBweTNrLXN0cnVuaQorNTU0MzYgYjU5Mjk4NWE5NTNmZjkwZGQ3N2YyNzk5YzEyMWQ1NDliZGQ2OTljMyBweTNrLXN0cnVuaQorNTU0MzggYjI5ZDcxZDQzYzgwOTFmMzI1MzAxZjQxZWUzOWYyOGU5YTA5MGEyMSBweTNrLXN0cnVuaQorNTU0NDEgNjUxZmEyYzljMmFiZTVmMzQzYzFhYmY3ZGFiZWZlZDRkNmFhOTRmOCBweTNrLXN0cnVuaQorNTU0NDMgNmQ4ZDY2MDUwMDAzZjFmODgzZWVkOWMwNjJjMzdmNjA2MWIwYjc5NyBweTNrLXN0cnVuaQorNTU0NDUgMTM2NDFhZGJhNmVjYzYwNGRmODA3ZmExOGQ0ZjU5YTFlYzJmYzdkMSBweTNrLXN0cnVuaQorNTU0NDYgZjE5ZTYzMWJlMTAxYjdhZjgyMjhlNDcyYmUzYTg4ZmQ4NDQyNmZkYSBsZWdhY3ktdHJ1bmsKKzU1NDQ4IDRhM2E2Mzc2OWQzNGE5MzQwZGRiOTUwNzQzODg3YWYxNWY5MDNlODggbGVnYWN5LXRydW5rCis1NTQ0OSBkNGRiNjI2YzIyOTA3NjZiODg2MmJkNTBiZDFiNjk1N2VhN2QwNmVlIGxlZ2FjeS10cnVuaworNTU0NTAgMzEyYzExMTlkYzE0NmE3YTNiNjFhZmZjYjdkZWQ3ZDU1MTZkOWQ3ZiBsZWdhY3ktdHJ1bmsKKzU1NDUxIDI5OTg3OGQ2MmUyZjc5ZTYxODRmZGE4NDdlNTVlYTdlZWM1NjdlYjAgcmVsZWFzZTI1LW1haW50Cis1NTQ1MiAwZjkzYjcwMGM0YzlmMDFmMTA1ZWU1Mzk3MGIyYjY4YzBjNjY3MWIyIGxlZ2FjeS10cnVuaworNTU0NTMgNTE1ZTI1NjRlY2E3ZmE4MWE5ZjdkZjNhZDQ3YjZlY2MxMmMwMjU1ZCBsZWdhY3ktdHJ1bmsKKzU1NDU0IDRhNjdmMTAzODMzZWI4YzUyZmY1ZDYyMjI5OWQ3NWM1ZGE4YzYxZWIgcmVsZWFzZTI1LW1haW50Cis1NTQ1NSBmMTRhNWIwMDVhMWUyYzRlMzhjZDVmNjUzYmRlYzliMmNiM2E1YzRmIGxlZ2FjeS10cnVuaworNTU0NTYgYmVlOGQwMWVmNDJjN2IxMmFmYTk1OTg2MjgyNzY1MGNjN2RiOGE1OSBweTNrLXN0cnVuaQorNTU0NTcgMTMyNmIwYjJhZmEwOTE1M2NiYzg5ZWYxYmU2NGE4ODAwODYzNDM5ZCByZWxlYXNlMjUtbWFpbnQKKzU1NDU4IGI3ZmI5NDJiNDAzZTllOTFiMmFkYjU2YWJlODkwZjk0YzUyMmIwMzkgbGVnYWN5LXRydW5rCis1NTQ2MCBjMmQzMmI1YWU5MGIzYTMxM2ZkOGVjNzY3MzhlZGFmNmMwNDcyODk4IHAzeWsKKzU1NDYzIGQxYzM4YWYwNjViZjM5YzE5NDg0ODA3NDRlYzQzMTEwODUxZjU2ZDIgcHkzay1zdHJ1bmkKKzU1NDY0IGVjYzY4NTkyNWI1MmQzYzA0MzU5OTZmYWFhYWRiMDJkZjUyM2YyN2EgcHkzay1zdHJ1bmkKKzU1NDY1IDZkMjQ2YWM2MzE5ODJkYTU5YWMyZjM1MjQ4ZmM5ZWViN2ExNzI3YmIgbGVnYWN5LXRydW5rCis1NTQ2NiAwMDQxM2Y3MGNlNWMzZWJjNjk2MjQ0NDY2MzkzNmEwNGUyNzkyZDI2IHB5M2stc3RydW5pCis1NTQ2NyA3NzlhMjEwNTM3Nzc4ZDU0ZDA3MjAyNTFlNTc2NDJlZTQ1NTZmN2QwIHJlbGVhc2UyNS1tYWludAorNTU0NjggYzAyOGIyNzc1YTlhNGVmZmE1ZGEwNjYzZjkyYzAyYmZhZWU5YjhiNyBsZWdhY3ktdHJ1bmsKKzU1NDY5IDViZWYyYzIyYmY4NTcwNmUyYjRhYjRjMjA4MTBjZDUyYWY0Mzk0OGQgcDN5aworNTU0NzAgMzEwMjlmNmViY2EyYTg3ZWUzMmVjNzc4YWQ4YzM5MjI0OTVhNjVjMCBsZWdhY3ktdHJ1bmsKKzU1NDcxIDY3Y2I4MTgzNjBmMGRjNDcwYjQ0MzFhNGNhOTcyNjkxZDkxNmEzYWEgbGVnYWN5LXRydW5rCis1NTQ3MiA2MmNmMmNiNzRlMzUxYTZjMTdmYWYxYzdmOTEzZWVlZTIzZjU3M2Q3IHAzeWsKKzU1NDc0IGMwZTg5ZDBlZTBlNWJhODJiYmU5ODY3NDQ4ZWJmYjhiYjRiMGM4MmUgbGVnYWN5LXRydW5rCis1NTQ3NiAyYzAwYTE5MTAyNzFjYjU3ZDQyZTFlNWM3ZDc3ZTA0ZDFkN2ViZTYzIGxlZ2FjeS10cnVuaworNTU0NzcgYTU4YmE2N2ZhZjFhYmYzODk0YWEzNTYzMzYyNTk2OWUzODNlNjUzMSBsZWdhY3ktdHJ1bmsKKzU1NDc5IGUzNWYxZWUyMmFiODg5MzE4YzA3MjhjNzRkNTI4YTZiZmU1YThlYWEgbGVnYWN5LXRydW5rCis1NTQ4MSBhYzhhNmRlZWY5NzQwZDhkNTJlNDI2M2EwNmZmZmFiNzI2YWRlNmU1IGxlZ2FjeS10cnVuaworNTU0ODIgMzVlMThhMGQxMGYyNmJjZjQwMzQ4MDEzM2FmOGVhZTA3Y2FkYjY3MiBsZWdhY3ktdHJ1bmsKKzU1NDg2IGQyNGM5ZTQzMmQ1MjRmYjAyYzkxYWM4ZWY4NDQ1YzNiZjU0NjJmN2EgcDN5aworNTU0ODcgMjY3MWUwNmJhYTRjMDdiMzE1OTkwNGQ1YzRmYTNlN2JlOTU2YTc0MSBsZWdhY3ktdHJ1bmsKKzU1NDg4IDk5M2Y4YTliOGFiMzk5NzQxODVmMzVmMjMxMDU3MTdkNTIyMzEzZWUgcHkzay1zdHJ1bmkKKzU1NDg5IDk0NTdiOWY1YmRkMTA5MzJmYjJjMTJiYzI4NjhiNmFkNjM3ZjNlZmIgbGVnYWN5LXRydW5rCis1NTQ5MCA4MWIxNzhmMGIxZWYzNzc4ZWRiNWE1ZWZjMWI3YjYzNTczY2Q5ZTYyIGxlZ2FjeS10cnVuaworNTU0OTEgM2QzYmYyNzQwOWU2MjAyYmY4YjQ3NWEwMGFhZmJlMjFkOTQ5ZDJmOCBweTNrLXN0cnVuaQorNTU0OTIgMTQ0NmI5ZmNhMDFkYmQzNjRlYjlmYzA4M2YyMGNjNWI0ZTlmZjdkNiBweTNrLXN0cnVuaQorNTU0OTMgZWJiMGI2ZDZkYWRhMjgwMjFiOGFhZWRiZjdiOTUxODYyNWRiNjFiMiBweTNrLXN0cnVuaQorNTU0OTQgZWUyOTUxNDQ0YTg5NjQ2NDE2ZmMwMzA4Y2U0YzNlOTA2ODJlOGY2MyBweTNrLXN0cnVuaQorNTU0OTUgYTQwNTczMmEyNjJkYzc0ZjJmYjUwZjZkN2MzMTU1NWM2YzE2NWY4YSBsZWdhY3ktdHJ1bmsKKzU1NDk2IGQ3ZjZkNmY0NTYyZWU2MWUxNmYwN2RiNmNmNWMxNTRhZGEzNzNkZTYgcHkzay1zdHJ1bmkKKzU1NDk3IDhlMDYyZTU3MmVhNGQ2YWU2MTU3NzlmY2NjZjIyOWU4NjA5ZTc2ODIgcHkzay1zdHJ1bmkKKzU1NDk4IGY5OTQ5YjYzZWFiM2ExMjYyMTk4ZmE3NTU3ZDgyYmJjM2E0NjQxNGMgcHkzay1zdHJ1bmkKKzU1NDk5IGQwN2QzNGI1M2RiNTgwOGM0ODQ4OTg2MTEyYzhmMzBhM2MwNTBjYWEgcHkzay1zdHJ1bmkKKzU1NTAwIDUwZGFmYTIyYjhhNGU3YjZiNDAyYThmMzc3NGJjMmI1ZWVjZGU1OGMgcHkzay1zdHJ1bmkKKzU1NTAyIDdjOWRkZDRhMDgxNDZmNmRjM2M1Y2M3ZDAzNzU3Yzg1NzI4ZDQ3YTEgbGVnYWN5LXRydW5rCis1NTUwMyAzZDA1ODU4NzY5MWRkNDliOGFiODU0ZThiOTUyMDgzOWFjN2EzODUzIHJlbGVhc2UyNS1tYWludAorNTU1MDQgYTkyMjdkN2EzNGZhOGU3MTQwNzZhN2I3MmFmMWE5ZDdmYzAzNjFmYiBsZWdhY3ktdHJ1bmsKKzU1NTA1IGVjODNkMjEwNjVhYTM2ZmIxZWJiNDEzZGU5YTU3ZjA2OGRjMGRlMTUgbGVnYWN5LXRydW5rCis1NTUwNiBlYTdhZTg5MWY5Mzg5NGNhZTBlM2JlMTFkZjg2ODMzMWUwYWJjZGY0IHAzeWsKKzU1NTA3IGM4OTc1NTlhODlmYzk0NjVkNDI5OGUyMTI5YzJhYzk5ZjMxNzczMGQgbGVnYWN5LXRydW5rCis1NTUwOCBiZmM3M2Q4NDllMjhhOWRlYjIwMDZlNWU3OGViNDY4MjFhNDliODcwIHB5M2stc3RydW5pCis1NTUwOSBkYjQ5YTEyNDczOWRlZmU2MzM0YTQyN2U2YjQxODlmZjE5MzFlYmRhIHB5M2stc3RydW5pCis1NTUxMCBiNWFjYTAyOTViNzkyZmFhNzkwOTYzMGZjOTQzNzhjMTdjZWQ5YmY0IHB5M2stc3RydW5pCis1NTUxMSBhZTY5MTIyN2ZkMzQzN2Y5ZTdiNDUzOGZiYmY3ODllZjAwYmZlYjRlIHB5M2stc3RydW5pCis1NTUxMiA5OGVmNWZmY2ZmMjg0M2I0NWE1ODQ4MzY5NDc3ZGFmMzNlZmQ5OWRjIHB5M2stc3RydW5pCis1NTUxMyBkZDgwYTRjNWY0N2QwNGQwNWE2MjQ0NzM0NjQwN2I4YTVjNzY2YzMzIHB5M2stc3RydW5pCis1NTUxNCAyNGI2MDYyMmI5NDRkMDRkZmUxMmZjNjgyOTE3Y2JlN2I5MDY5ZTM3IHB5M2stc3RydW5pCis1NTUxNSA4NDNmN2VmYzA1OGYyM2M5ZmYxMjFjM2ZjM2Y5ZGQ4N2QxNGZhN2IxIHB5M2stc3RydW5pCis1NTUxNiA4YzNlNDBiMTc5YmY0MTRmYWIwYjdiZGEyOGY3OTJhNWIzMWI2MGY3IHB5M2stc3RydW5pCis1NTUxNyBlYjQ1Zjg1YzRjNzkyNjNiZTRhNjI5NTUxZWI4N2Y0NzY5YjAwNjNlIHB5M2stc3RydW5pCis1NTUxOCBhN2JlMTQ4ZjdjNTYwODA2NDA5MWVhMTJiNmM4MjgyZmRhMWUyNjc4IHB5M2stc3RydW5pCis1NTUxOSBmN2YyYTQ5YzFmMmU1NGUzYzU4ODRkNDE1N2E1N2Q2MjFkMmFhYmRkIHB5M2stc3RydW5pCis1NTUyMCA3MmQ3YzBmM2JmZmVlOGYwN2Y0MjljZjM2MjQ1ZWQyN2E1NTllMGU5IHB5M2stc3RydW5pCis1NTUyMiBmZjdiZWZlOTE5YjViMTY2YjgwNzk4N2VjNDc1YmZiYThkZjM3MTU2IGxlZ2FjeS10cnVuaworNTU1MjUgYTBlZTNiMmJhMzYxYzNlZTMzOTQ4MTQ4NTcyNzk2OGEzNGZiZWExMCBsZWdhY3ktdHJ1bmsKKzU1NTI2IDRjYmY5NDk0MzZlYjU3YWQ2ZWZhZGY4MWJmOTRlYWEwMjkyNmIzNjIgcDN5aworNTU1MjcgOGMzNTc4OTM0ZGY2ZGE4N2MyNjE2ZDEwM2FmZDZkNmE5MTRmZDQ0MiBsZWdhY3ktdHJ1bmsKKzU1NTI4IDlhNDQ3NTE0ODU1ZjExNzFmNDYxYTk0M2E4ZTlhNTg5Mzk2NmZiZDUgbGVnYWN5LXRydW5rCis1NTUyOSBhNmM5MmRlZWFlMjdmMmZmZmVhMDAzZTE1NjcwMmFiY2M2ZWRkNWE1IGNweV9tZXJnZQorNTU1MzEgODE0MDc3ZTdhZGVlM2FjZjcyMDE4MmYyOWU4NmNiNzA5Mzg2YzZiNCBweTNrLXN0cnVuaQorNTU1MzIgNzA5ZjgyZTJhNTVjYjQ1NGMyZDZkYjU1YTIzOTRhNDRhYjYxZjJlYiBweTNrLXN0cnVuaQorNTU1MzMgYWIzOTY2MmU0NTRiY2U0YjBlNDkwYjA0YTY1Y2E5ZjUzYzZlOGQ3OSBjcHlfbWVyZ2UKKzU1NTM0IGUyNDBkMjBkYTNlYzhmZWE4NTUzOTQwN2MzMTYwYjNlMjQ4M2NmOWMgY3B5X21lcmdlCis1NTUzNSBlOGY2MjRkNDhkYTJkZGYxZTg0ZTRlYjJmZmU4MTVmMDYxMjk3NTYzIHB5M2stc3RydW5pCis1NTUzNiA1NmU5MDA3Mjg5Mjk1MzA0NjFjYjE1N2I3Y2FhOTcwY2M4MTRhYTgwIHB5M2stc3RydW5pCis1NTUzNyAyMzMyMzc3MDdlYmM5OTc5Y2EwOTBkNDI1MDM3Y2RiNjgxZjYzYWUwIHB5M2stc3RydW5pCis1NTUzOCBiZmU5NTMwNDZkMDViMjI2ZmQ4OTZjOTA3MDA3YmEzOWFkYTQ0YmFjIHB5M2stc3RydW5pCis1NTUzOSA1MjNkZjFkZTBhNWMyYjhlYzIwNjYwMDkzYjdmNDhmMzdjMzA5YjJlIHB5M2stc3RydW5pCis1NTU0MCBlYjE4OGQ3ZmVhNWQ5OGU0NjY3MmJlYzNiMjEzM2ZjZTU1YzM0NDc1IHB5M2stc3RydW5pCis1NTU0MSAyMTFkYzlkNjM2NzNiNWRjN2Y4ZmM0ZmNiZTQ2ZTVjMjk1MDM4Y2MyIGNweV9tZXJnZQorNTU1NDIgMTI5Zjk2NTNiMGEyMzlmMmQ3ZjYyMWEzOTkyNGI3MTkyNTNiN2I2MCBjcHlfbWVyZ2UKKzU1NTQzIDFmNzg5MWQ4NGQ5M2ZlMzY0YmE4YjIyMmYxZTQzYjgzMmM2N2U1N2QgcHkzay1zdHJ1bmkKKzU1NTQ0IDQ3NzRhOTRkMmU2ZDY2NWU5NDlmNDZmOGM1MGNjZWNjZDA2ODE3Y2IgcDN5aworNTU1NDUgODJlNWRiNDk2MGVkZmIzNGIxMDkxOTVkMzNhNDI5ODIzOWE0YTdhNiBweTNrLXN0cnVuaQorNTU1NDYgOWNlOGZhMGEwODk5NzI3YmEwM2EzNzMwYmFkMjM0MWU2MjRhYjA2NiBweTNrLXN0cnVuaQorNTU1NDcgMzA4ZTYzMjcwMmJmYTRhZThkNWM2ZGE0NThhZTk3YmRmNTFlNjAxZSBweTNrLXN0cnVuaQorNTU1NDggMjFkYzQ2MjliNzEyMTQ1ODI4MWFkOGEwNzUwMzM3OTQyN2ZlZjRlZCBweTNrLXN0cnVuaQorNTU1NDkgY2YxNTE5NjdlZWEzY2YwMTU0MGQwZDQzNmE5YjQzZDkwYTNkYzMyMyBsZWdhY3ktdHJ1bmsKKzU1NTUwIDZmOGY4MjI4MDU0NWRkOTNkMDYxMjE2MWJkMzRkYzE2NTRlNjYxY2MgbGVnYWN5LXRydW5rCis1NTU1MSAzOTc5ZjllMmQwMjYyODdmNzkwMTBjZGNhOThmZjUxOTI3ZDNhY2I3IHB5M2stc3RydW5pCis1NTU1MiBjZjA4OTFmMWQ2MGFhOWRiMDU1OGNlMzVjN2U3MTk1OGRlOWQzODU4IHB5M2stc3RydW5pCis1NTU1MyBlNjMxMDFmYWFkYTY4YzIxZWM3ODkwZDcyYTM0NjY1ODNjMTJjY2EyIHB5M2stc3RydW5pCis1NTU1NCA4NmE5ZDVmNDMzMDc3NDQyMzU4ODc0NGYzZjRjMmI4ZGIwYmEyY2NjIHB5M2stc3RydW5pCis1NTU1NSAxMDQyNmFkNWE2ZTBiMTM3ZTUxNjBhNjFlOTU3MzZiNzE5NGY3ZTMyIGxlZ2FjeS10cnVuaworNTU1NTYgMDU3YTljM2QwNjdkMTEzNDZjN2RmNDE1ODhiY2ViMWRjMTcwMDBiYiBweTNrLXN0cnVuaQorNTU1NTcgNDFjZmNmZGUwOGE5OWE3NDVmN2FiM2VhZmJmNDNjNTAxODZlY2YzMSBweTNrLXN0cnVuaQorNTU1NTggMmY0OGM1NmM1ZTgxNjkxNTJkNThiYmU1NDBhODU3M2NkYzk4MGU2NCBweTNrLXN0cnVuaQorNTU1NTkgOThjNjZlZmM5NTUzMzNhNWIzMjE4MGU0YTk0OWI5ZTQ2NzBkNzdkYSBweTNrLXN0cnVuaQorNTU1NjAgZTRlOGIxMjc3MGU0MDZiYjNlMWE4ZGU4MGRjNTljNGNhYTE1NDk2YSBweTNrLXN0cnVuaQorNTU1NjEgZTZmYzY3YWQ5YzU0YmMxZGRkYjIxYTZjM2IyNWMzYWIyNGQzOTRiZCBweTNrLXN0cnVuaQorNTU1NjIgOTY5ODY4ZGYxOTM4YmM0ODJmY2M5OGVmNGI2NzRmN2FiNmJmODE3YSBweTNrLXN0cnVuaQorNTU1NjMgNDZhOTRlYWQzZDY4ZGUzYjMxY2Q3YTNmNjA1Mzg1NTExYTUwYjk5NyBsZWdhY3ktdHJ1bmsKKzU1NTY0IDI0OTAwNzY3OTUyNDRkMDUyZGMxZWY4YzA0NjllMmI3YWZkNjY5YmUgbGVnYWN5LXRydW5rCis1NTU2NSA5OWUzMzA2OGMzMzQ3ZGMyOWVlYTI4ODhlOGZkNzcxMjhiMWUwNzc5IHB5M2stc3RydW5pCis1NTU2NyBjZWMyYTljMjAwYmEyY2EyY2I2YWU1ODdhMjUxOTJkMDEzMTc3NjI2IGxlZ2FjeS10cnVuaworNTU1NjggNTIyYzQ5MzhiZGY2ODE4ZTk4ZmI1MGY5ZjNkOTY4YzhhY2YwOGQ0ZCBsZWdhY3ktdHJ1bmsKKzU1NTY5IDJjOGJhM2ZhYWY0MGMwNTk1MjkzNjhkMTE0OTU2MzkyZjVhZTVkN2EgbGVnYWN5LXRydW5rCis1NTU3MCA2MzE5MjcxYzIzMjYxN2Q4YWViZDU1OTdiNzA3NmNiYmQ2M2QwYTg3IGxlZ2FjeS10cnVuaworNTU1NzUgZjU3Nzc1YzVkMGI0MjM2NjI4YzI5MDAxMWVjYTQ2OTY3NWQxNTM4NiBsZWdhY3ktdHJ1bmsKKzU1NTc2IDFhMzg1ZDBhZTgyYmEwZWE1MGI3NDAyYmU3N2M1MDQwMjkxN2RmMTEgbGVnYWN5LXRydW5rCis1NTU3OCAwZTgwZmJkNzMwMDVjNmVjZjZhOTE0ZTVmMDE0OWI2NzMyZmJlNGZhIHJlbGVhc2UyNC1tYWludAorNTU1NzkgY2MwYWVlZTU4YTRkODcyOWRhYTMwY2E5MmI5OTM3NDllYzcyYzlhNSByZWxlYXNlMjUtbWFpbnQKKzU1NTgwIGNlYzZkOTZjMDg0YTE2OTZkZjA4NTBhODU3OWQyZDNjM2RjYzFmNmIgcmVsZWFzZTI0LW1haW50Cis1NTU4MSAzNGU4ZTAzZTkyMWY3ZTQ3N2FmNmEwYzUwZGEwNmMzODAxMGQxNDVhIHJlbGVhc2UyNC1tYWludAorNTU1ODIgMmY0ZDkyMGE1NmZjMGY0MWUyMGNkYjU0ZWYzM2FmOTZlMzE3NDNlMiByZWxlYXNlMjUtbWFpbnQKKzU1NTgzIGRjYjQzZjQwMzkwYmE3OTJkNmU2OWI2NjZkNjE2ODNkN2JmYjcwOGYgcHkzay1zdHJ1bmkKKzU1NTg0IDFlYzFhZmEyYmRiNThjMzhjNDA5NDYwZGY1NTBiODA5NjdhOThiMTcgcHkzay1zdHJ1bmkKKzU1NTg1IDA4OWY0NDlhMjBjZGEwMTkzNGZkM2U3MjBmOTliZDg3ZjU2NmEzNzEgcHkzay1zdHJ1bmkKKzU1NTg3IDg1YzkzNWRiYmVmMjZiZjQwNDc4MTcyYTU1MWRiMmNlMThmZmI0YTUgcDN5aworNTU1ODggMDQ3ODZhZTUyZGFkNDIxMjdkNWIwZDcyNWU3MWI3MzM0NzQyZDk2ZCBweTNrLXN0cnVuaQorNTU1OTAgYmVkZmJkY2FmMzU1N2NkMDBmYTQxODU1OTZkNGI1OWM4ZDNkNWViYiBweTNrLXN0cnVuaQorNTU1OTEgOTY1N2MzMzNjNGVhOGZjMGQ3NmM4YWRmYTFhZDExZTU1NTU4MDU0MiBiY2Fubm9uLW9iamNhcAorNTU1OTIgMzg3N2YzN2M5ODYxMGJjYzZlNjdjMzI0ZDQ4ODM1ZmRiYWJmYmExNCBsZWdhY3ktdHJ1bmsKKzU1NTkzIGU3NDZhMDZiM2VhZmU5YmEwOTE5YzAwY2E1ZDdmNmYzNTYzZDhiOGEgYmNhbm5vbi1vYmpjYXAKKzU1NTk2IDAwZjk0ZDM1YzYxY2U3ZWJiMWQzMTcxMTVlOTY0MWY5YjIyYzUyNTYgYmNhbm5vbi1vYmpjYXAKKzU1NTk3IDFlYTRiM2NmOWQ5ODE0ZTc1NDlmMTllNWFmNmI4OGRmN2RmNDRiZGIgYmNhbm5vbi1vYmpjYXAKKzU1NTk4IDViYzdmNTZmNWMzM2RlZjg4YWY3ZWE1ZDcwMjIzMTNkOTA0NzhiNTggcDN5aworNTU1OTkgYWRiZjY4MWYxYmIyZWI3NTE2ODkwNTIzNTY3MTAxNDM0MGM1ZDc1OSBwM3lrCis1NTYwMCAxMDU2NTMwNjE2YWMzYjJkODMzZmExMzQ4MWUwODk5NmIxZjgyODIzIHB5M2stc3RydW5pCis1NTYwMSBlNzE2MmI2Y2E3YTA0MGQ4YWNhZjhlNDdlODRlNTQwZDc4Zjc3ZGQ0IGxlZ2FjeS10cnVuaworNTU2MDIgMzg5MDc3YTU0ZmNlM2VjODllN2U3ZmE2NDc4MWYxYzQ2ZjRkZDI2ZiBsZWdhY3ktdHJ1bmsKKzU1NjAzIGZiZjM0MmJjYjc4NDY1MjUxYWU5MTNiYWQ2ZmY5MzVmMjgyZmMzMjIgbGVnYWN5LXRydW5rCis1NTYwNCBlYzNiOGU5NGEzNTU3MWU1OTU1YjU3OWZhMWYxMjMyYjMwNjU5YTY2IGxlZ2FjeS10cnVuaworNTU2MDUgZjI4YmVkMjY0YjAyY2IzMjAyYWEyMDdkNzRjYjVlMDBlZWUwNWM4MiBiY2Fubm9uLW9iamNhcAorNTU2MDYgNWU0M2M3MzY3ZDU0NWE4NmIyNjAzYjZlYmFjZGUwYmRmNmU0YjQ0NiBsZWdhY3ktdHJ1bmsKKzU1NjA3IGMzNmM4ODc5YThkYWQ5ODQ1NzE5ZWFkYjZlZjY4MDRlNjUxNjYyMGEgYmNhbm5vbi1vYmpjYXAKKzU1NjA4IGFhNzMyMDZjOWNlNjc1NmViYjYzNDdhMjU1OTZkOTgyOWNhZGY1YWEgcHkzay1zdHJ1bmkKKzU1NjA5IGY2YTllMDM0Y2M2MjgyNDI2M2VkYTQ3ODc1OGQ4NjBlYmMyODNmYjUgcHkzay1zdHJ1bmkKKzU1NjEwIDI0OWI1MjVlMWFjMGU5ODBiNDJhOThjZmM2YWI0YTk3YjBjYWUwY2IgcHkzay1zdHJ1bmkKKzU1NjExIGI3Y2ZiM2ZkOGRiMDU5OTRkZjNhM2Q4NDc5NThlOTQyNzg5YjAyNmYgcHkzay1zdHJ1bmkKKzU1NjEyIGMzMjg3ZTE5NWExZDU4M2VjYTJlZmYzNzA4NTkzM2FmMjQ0M2RhNzQgcHkzay1zdHJ1bmkKKzU1NjEzIDliYWVjMmY1NDUwOWY2ODM1NGRkYjlhMDJlNTc3Y2U1ZjE5YmI0OWQgcHkzay1zdHJ1bmkKKzU1NjE0IDRjYWVlYjQxMzE4NjJmZWExYzlhZTdlNjNhYTZlZmNjY2U2Yjc4NjMgcHkzay1zdHJ1bmkKKzU1NjE1IDNmZGE5ZTZhMGI2ZDFlZDNiNzk4OWNlZjdlNTdiZTUxNDI0ZDA5YzEgcHkzay1zdHJ1bmkKKzU1NjE2IDgxZDViMDA3MTE2OWFjM2IxNDMxODRjNThiNzI0MDg5YjBiYjEyNzEgcHkzay1zdHJ1bmkKKzU1NjE3IDlkZTg3NTY5MTgxY2I4ZjMxZmQxZmEwNzRmOTBjYjgwZDIwOTU2YTIgbGVnYWN5LXRydW5rCis1NTYxOCBhZGU3YjA2OTNlMDc2YzIxMzkzZDEyY2I0NjY1ZTliZjg5NzA2NGYwIGxlZ2FjeS10cnVuaworNTU2MTkgYTllYmM1MDRmNjlkOGNjYjkyOGIyMmEzYTc2MjhiMDE1NDYwOWYyYiBjcHlfbWVyZ2UKKzU1NjIwIDc1ODY2NmUyN2ZiZWZiNDE2NDU4MTNjZjVhMDdmOGQ5NDM0MTZhNTkgY3B5X21lcmdlCis1NTYyMSA4YjRmYjcxZmZmMWQzNjYzNzE2MzMwMDhhMTgwYzlkMjc1NGQ0MWRmIGNweV9tZXJnZQorNTU2MjIgYWVjZDc4YWZhNWEyNmU5NDM4N2I3MDRhNGQyOTA2OTk3Yzk4ZmE1OSBjcHlfbWVyZ2UKKzU1NjIzIDBlN2M3MGQ0MWExOWIwNmU5M2QzN2RhNmMxYzQwNDFiZWEwNDNkYzEgY3B5X21lcmdlCis1NTYyNCA0ODkwNjBlOTdkMTdmYTg3NGNlOGE3MWI4OGNiODc4NTQxMDg0M2ViIGNweV9tZXJnZQorNTU2MjUgOGQ2MzdkODE2Zjc1NDE3YjA5OTFkN2MyYTc4NzBmYmMzOWJmZjViOCBjcHlfbWVyZ2UKKzU1NjI2IDM3MDA1MmRjODk5MmYzNDUxNTQyNmNhYmYzMjk4NWM4MjZkOWMzODEgY3B5X21lcmdlCis1NTYyNyA2ZGQ5NzY3NjM3YmI0M2Q3ZmIwNzllYWRlNzg2ZmU4NTEwYzQyMTdkIGJjYW5ub24tb2JqY2FwCis1NTYyOCBkNWFkOTE0OTM2MGJiOTRkNjE5NjFlYjkyNWU5ZjkyOWE4ZTEwZTQ1IGJjYW5ub24tb2JqY2FwCis1NTYyOSAzN2NhNGRkOGFiZWY0NjkzZGMyZTZmNDI4NmZhMmVkMmUzNTczZmI2IHAzeWsKKzU1NjMwIGRlNTFhYWM0NmIxYmM4OTQ1M2U4NjRhMGM3OTZjNGQ2MjE3NTFmNDkgY3B5X21lcmdlCis1NTYzMSBiYTdlYWVlMzM4MjI3OTE4YjYwNWEyYzVhMDI0NjIwYmRmNmE1MWZhIHB5M2stc3RydW5pCis1NTYzMiA1YWQyZDc3MDBkM2M1MDUwNTkzYTVkZmI5MjFjNTgxZDY3N2VmNzJlIGJjYW5ub24tb2JqY2FwCis1NTYzMyA1MzgxYjRlNzFhMDQwNmM5MjI0OTRmN2QyOTRiMDg3N2VhZjRmYTk4IGJjYW5ub24tb2JqY2FwCis1NTYzNCA1MDNmNWE1NjQ2ZDE3YTA5OTI4YjM1YTEyZWQxNzRmMmY4MTA1YzQ0IGxlZ2FjeS10cnVuaworNTU2MzUgZTE0ZWNlNzc3YjhiNDViOGY5OTJlZjcyNzMwMWU3M2EyYjZiMjNiZSBsZWdhY3ktdHJ1bmsKKzU1NjM2IGM3ODM0OTcxMzE3Y2Q0OWJhMmI2NTJlODEzM2U4MTI5ZDgxYWY2MTggcDN5aworNTU2MzcgODg1ZDBlZjkwZTBmNDQxY2U1N2IyYTFmYmIyYjEyNTUxNzI3OTlhZSBsZWdhY3ktdHJ1bmsKKzU1NjM4IDA2ZTZkNjIxNWM1Yjc4YmQxM2E5MWI1OWVlMDJhZTMwNTM0OGMxYWIgbGVnYWN5LXRydW5rCis1NTYzOSA3Njg4N2UzZThlNTdhNmFkNGQ4YWEyY2E0YTAyZTYyMTg2ZjIzNjgxIHAzeWsKKzU1NjQxIGFlODA1Nzk4ZmE2NzgyYzZiZDk1Y2YwNmFmNzlmMDA4NjQzZmEyMjcgcDN5aworNTU2NDIgNjdlZTQ2OTZkMTQ5YWI2N2I1ZGM5MGY3ZTlhZTEwZmE3ZDY4MDA0MiBwM3lrCis1NTY0MyAzNzdiNWRkNjI5M2RhOTk2NjI1ZTlhYmJkNjk0NTk1YjgzNTg5OWJlIHAzeWsKKzU1NjQ1IGExZWUyNTZmYmM4Zjg0NTk4YWEyNTA1MGM5NDQ5ZjdhN2YxOTRkYjUgYmNhbm5vbi1vYmpjYXAKKzU1NjQ2IDJhZTk5NzVhY2EyMDVlNmEwMWIwNDZmZTcyODExM2JkMGUyYmQ4NTkgYmNhbm5vbi1vYmpjYXAKKzU1NjQ3IDhiMWNkZjkzMjFmZDEzNjBhMTAwNTUxYTI5YjYzMTUwZTM3ZTBmYWYgYmNhbm5vbi1vYmpjYXAKKzU1NjQ4IDkzODYyYWE3NmY3YzJhMDc5NjI1NjU3ZDc1ZWQ5OTFmOTljZjBkMjEgcHkzay1zdHJ1bmkKKzU1NjQ5IDliMWZmY2UyNTZiOWFhZTY4NjU5NmI5NjVkNWM2MGMyMTljYTQyNGEgcHkzay1zdHJ1bmkKKzU1NjUwIDZjMmZhNzFkYzQ1OWYzODUxMGU1YTg4M2M2ZmRiNjk5OGViNjMzMWYgcHkzay1zdHJ1bmkKKzU1NjUxIDQ5MjY4NzY5NWM2NmM4MzU2MmZiNjQzYjA4NmM3ZDUwNmY1Y2MwODAgYmNhbm5vbi1vYmpjYXAKKzU1NjUyIDA5ODJmYjA4ZTc5YjFkODE0MzUwZjZjZDYyN2Y1NjM0MmJmMDQwYWMgYmNhbm5vbi1vYmpjYXAKKzU1NjUzIDAwM2NlMzZkZDIwMjIzNDkwOGM1YTc3YTIwZTljZWNlYmMwNWZiMmUgYmNhbm5vbi1vYmpjYXAKKzU1NjU0IDE4ODIxNmI0M2VmNmE3NGIzNzFlYjQ2ZjhiYWQ5MmQxNTYzNmIyZmQgcHkzay1zdHJ1bmkKKzU1NjU1IDM3YTI4NTZkOGYwZTFkOTFjZWI3MzE2Yjg4ZWYxMDg2OGE0ODdkZmYgYmNhbm5vbi1vYmpjYXAKKzU1NjU2IDc1YjljZTFhNzc0NWYzY2Y0MTg3OGM4N2Y3YTg3MzFkZGQ2ODM3ZTIgYmNhbm5vbi1vYmpjYXAKKzU1NjU3IDYyZTM5NGQ1MGFhMDYxMTMzOTYxOTczMzg5MjRmNDk4YTU0Mjk2MzYgcHkzay1zdHJ1bmkKKzU1NjU4IDY3OTZmMGNiMGJlYTQ4MTAwOGRlMTE0NWYxYWIxOTA4MjlkNWU1YWQgYmNhbm5vbi1vYmpjYXAKKzU1NjU5IGRlZmUyNTEzYjc4ZTE3MTA1NDdiZmY2ZDNlNGY0ZDlmM2ZmMDFkNDIgYmNhbm5vbi1vYmpjYXAKKzU1NjYwIGNlYmFmN2MzYWI4Yzc1MGE4MTYxZTlkZWUzZGUyMWQ3YzRmZjc3ODIgYmNhbm5vbi1vYmpjYXAKKzU1NjYxIGI2ZjA0OTc0ZDhhNzdmZmQ4YTM2MmY3YTNkNDQwYjZiMGFmZmMwODQgYmNhbm5vbi1vYmpjYXAKKzU1NjYyIDU2MjYwMmM5MTAxZDlmMWVlYWZjYWFhNmZhODlhNDFjNTQxN2IzN2UgYmNhbm5vbi1vYmpjYXAKKzU1NjYzIDM2YTA1Njk2YmU4MjE4MDkyNjVjZGRiYzNjYjUzODkxZTkwYzczYzQgcHkzay1zdHJ1bmkKKzU1NjY0IGY0MGZmMmQ3MzhlYTQyNjRiMzBlYjg3OTRjMzllYzY4MjlhOTU5ODggcHkzay1zdHJ1bmkKKzU1NjY1IGM0MGJmYjM3ZmExNTQyNGU5MDRkM2FkNzMxOGZkY2U4YTI2ZWNmOTEgcDN5aworNTU2NjYgNDE4MDU5OTk0ZTQ3MjIyY2JhOWQ0ODliMjZmMjcxNzZhMWViMWUyZCBwM3lrCis1NTY2OCBhYTRiNzI1NDlhNjk2ODI3ZTBjNDM0YTE3YjA4ZGVjZmQyMGE5NjdlIHAzeWsKKzU1NjY5IGQ1YmJmOTc1NzBlMzYyNmRjMThjMTEyMGNlYjMxMTVlMzRjNjFhMDkgYmNhbm5vbi1vYmpjYXAKKzU1NjcwIGU3MWRlNTc1MTNlMWJkM2IyY2I1ZTVmOWE3OWJjNjMxMWI4MzhkNjIgY3B5X21lcmdlCis1NTY3MSAwNjM1YTZjYTE5ODAwMjIwZTdkZDQ2NDllMjI4ZmI0NDVkM2VjMzc1IGxlZ2FjeS10cnVuaworNTU2NzMgN2QzNzljNDc2MDA3NDIxNDUzOTYzNzc5ZDU2NjUyNGYyOGUyMDU0NSBwM3lrCis1NTY3NCAzYWZmY2UyZWY3ODJjYmVhYzQ1ZGQzZTYzZmEwZjQ4ZDY2YTNhZTQ1IHAzeWsKKzU1Njc1IGRkMzk2MzU0MGNmNzcwOTQwOTBhMjk0NDE1MmJiYjIxNGEwZTA3MGQgcDN5aworNTU2NzYgZGRmMDQ3MWE2ZGUzNzNiOTRjNGZjNmJhZmZkZmYyZTY5MGYxZGM1ZSBsZWdhY3ktdHJ1bmsKKzU1Njc3IGFhZjNiNmQ4MmI2M2YzNmRkODc1OGNmNzcyYmNiNWVlNDY2MzU2ZjAgbGVnYWN5LXRydW5rCis1NTY3OCAyNzVkODdhNDdmNjQxNGZlNjlmMzQ5Mzg0MDFkNWFjMDA3MWEzZjQ2IHJlbGVhc2UyNS1tYWludAorNTU2NzkgY2RlYTA5NGNmMDQ1MWY2NzBmNjQyMzY4ZmU1M2IyYTJhMDc3MjhmYSBwM3lrCis1NTY4MCAzOTRhYjVmZjE4NTRlNDE2YWQzZDI2NzM5OTNmZjA1ZmE2M2JjMjUzIGNweV9tZXJnZQorNTU2ODEgYmE4YjVhZDhlNzZlYmQ3ZWNhNWQwYWMyOGE1ZGQzZDAwNjMyMDhhYSBjcHlfbWVyZ2UKKzU1NjgyIDUxNjc4NTc4NTFjMTA5ZDRiMjY0YWFkN2EwOTMwMjU1MWMxYjIwMmMgY3B5X21lcmdlCis1NTY4MyA0MWM3Y2QxNmIxOThjMDA2ZGEzNDAxMjA2YzU3YmZkNzE0MTMyZmI3IGJjYW5ub24tb2JqY2FwCis1NTY4NCBhY2QxZTI2MjQ5OWRkMjhjZmEzYjRkZjQ0MjlhNjhiNzIzNGNjNjE3IGJjYW5ub24tb2JqY2FwCis1NTY4NSBhNjA0MmM3ZDdjNTVmYTJjMWIxMmVhYzA3OGZiMGYxNWU1Y2Q3NjM5IGJjYW5ub24tb2JqY2FwCis1NTY4NiA1YzI5NDExYTA1YTVmNTljNWVmODEwYzhkNjdlMWUwYzVhODQ3NmY4IGxlZ2FjeS10cnVuaworNTU2ODggYWQ2YzViODhiNWM0YjAxOTcwZTBjMTM0MGFlYTg2NjI1NTcwZDkzNCBwM3lrCis1NTY5MCBjMmRjNGQxN2U5OGJjNDA0ZDQ2OTQ3NjEyOGJmNTczODE1ODc2MTdhIGxlZ2FjeS10cnVuaworNTU2OTIgMTc2OTk5MzExNzllOGYzMDU2Yjk1NDczOWRhOTIwZjhjYjE4MjYyMCBwM3lrCis1NTY5NSAxMjAwYzBlMDk1NTM3NjU5MTJkYjE5ZGIyMjM5M2M1YTY4MDBmYmZmIGNweV9tZXJnZQorNTU2OTYgMGUyOWJiODBlMjI3OGVmNjJlNWQyMzQyNjkyM2FhOTYyYmUzMWIwNSBsZWdhY3ktdHJ1bmsKKzU1Njk4IDhlN2VjYmQ4YWFhYjE4NzY4NjAxNzMxMDEwMTY4ZWI1ODM2Yzg2NWQgYmNhbm5vbi1vYmpjYXAKKzU1Njk5IDBmNDI0ZGU0NTZkYjQ2MDk5MGVlNzU2NGQzYjEzZmNiNjc4ZTJhMDcgY3B5X21lcmdlCis1NTcwMCBiYjk0MmI2MGIwZmVmMmI2MmY1OTc1MjYzMjJhOGJiNDI2NGQ5MGUyIGNweV9tZXJnZQorNTU3MDEgZGZjZTlhMjYzNWU5NmNmMTJhNTM1MmJhODNlMzBiMjJiNTA1OWIwMSBjcHlfbWVyZ2UKKzU1NzAyIGRmM2Y3NmFjZTJkNzRkNzNkZTkwM2YwNThkY2FlODViM2E4NmUzYjIgY3B5X21lcmdlCis1NTcwMyBhZjBhYzgzNjAyYjQ3ODZhMjExNWU1YmQxMzZhNTQwN2RkZWI5MTU3IGNweV9tZXJnZQorNTU3MDQgZDhhNmFmYTZlOGM2MGVlNzVkNWEwNDk4ZjU1NjQ3Mjg2ODk5NzkzNSBiY2Fubm9uLW9iamNhcAorNTU3MDUgZDBiNGJiYWFmYWFlNGM0MTViNTVmOWI3YjBmOTdmODg1MjcwNGEyNiBsZWdhY3ktdHJ1bmsKKzU1NzA2IGRkNDY4OWQwZWM4NWI2YzEwM2E1NjMzZDQwMGM5NjY5Y2UxZjI1MWYgcHkzay1zdHJ1bmkKKzU1NzA3IGYyODdiODhjM2MyMWNmYmM1NDQyNTMyMWVhYWUyNDVhMDhmZjA3ODYgcDN5aworNTU3MDggYzQ1MTExNTBlZjYwNzEyMGU2YzM5ZmUzZDlmN2M0ZGI0NGUzZGFjNCBwM3lrCis1NTcwOSA3MWQ4NjFlZTlmZjBkYmRhZTA3YWUzYzQwYjMyZWVjMThhMzA2NmJhIHB5M2stc3RydW5pCis1NTcxMCBiOGJlZjlhMWNkZjAxY2Q4MWI0ZDZlNzUxYTY4MDZmNGI0YmQzNDg2IHB5M2stc3RydW5pCis1NTcxNCBkYmQyY2Y0MDUyNzgyNWZiZjExNGU0YTkzNmEwNmU3MmZiNjU5NWQ4IHB5M2stc3RydW5pCis1NTcxNSAxMjdmMTUxZjMxN2I3N2VhNjEzMzhkNjc2N2JkODQwNmQ5MGVhMjc3IHB5M2stc3RydW5pCis1NTcxNiBiMzgwYzljNDk3MzhhY2EwNWExNTNlZDY1Y2E2YzdhMzhlNjgyNmVlIGxlZ2FjeS10cnVuaworNTU3MTggY2VmMDdkYjFjYWVkMWEwODI3ZTQ5YmQ5MTcxZTQzYjUyYWVkOThkOSBweTNrLXN0cnVuaQorNTU3MTkgOTFiYjE5ODEzY2E2MTFmY2EyMTA4MWRmMmMwM2UwZDA1NWQ0NDU3OCBsZWdhY3ktdHJ1bmsKKzU1NzIxIGM2MWNhYWY1NjE2MzBhMWVhNzBkNGE1MDRlOGU3ODY3NmEyMThlMmUgbGVnYWN5LXRydW5rCis1NTcyMyA2NjdjMWE3Mjc5YzlmN2NiNDg3ODM2YTU3NjlmN2IxZWRiZTIzMDE1IGJjYW5ub24tb2JqY2FwCis1NTcyNCA1Y2E3ZDE3MGU0MzEyZjU0MGI0ZDYwMmI4ZWUyMmU4ZjIzNDczYWEwIHAzeWsKKzU1NzI2IGNjZjIwOTkyNTM4MzY5ZTdmOTgyMDY3YzU1NDEwZDNhOGEwMzYwMmYgbGVnYWN5LXRydW5rCis1NTcyNyA5Njg2MWEwNDFmNTQ2Y2Y0NzhmNzY5Njk4NjM0ZmQzNzk3NDIwYTI5IHAzeWsKKzU1NzI5IDI5MzRhZjA1ZjhiZmIwOTJiY2QxYzA1ZGFmYTc0ZWExMmJlYzg3NTIgcDN5aworNTU3MzAgOWFjYjM5NDc4MGRmOTM2MTliZGIwNGU2ZDIzZTFjNTUyNmFhZWY5YyBwM3lrCis1NTczMSAyNGVmYTJlNDQ4YmNlMmZhZTEwYWI0Yzc3ZmExYjgzNGJiZjY3YWRlIGxlZ2FjeS10cnVuaworNTU3MzIgOTA0ODdhODg3YmUxMzZmYmU5MjQxYmU3N2UxZWFjZmU3OWExNTZlMSBsZWdhY3ktdHJ1bmsKKzU1NzMzIGZlYzEyOTY1NDRhYjk2YzBlZjUyODJiZGU0YjI0Y2QzY2ZjMzljMTQgcmVsZWFzZTI1LW1haW50Cis1NTczNCBmMDEyMWIyMTVkMzg5NjAzMTMzNzRkN2NmYjZhYjE1OTM4MmJlNDQzIGNweV9tZXJnZQorNTU3MzUgZmJiZjg1MWUyMzBhNTllNWZkNjM5YzQ0NDg0OThmOGI3OGZlYTc1NyBsZWdhY3ktdHJ1bmsKKzU1NzM2IGRhNTFmN2Y5MDhjYWQ4ZmU3ZmQ5MWI5MjFkYzM4Zjg1Mzc0NWUxOTcgcmVsZWFzZTI1LW1haW50Cis1NTczOCBkZmY2MjRiMmEyNDkxMDQyZTcyOGIyMTVlNGE5MjI1YjJhZmM3ZmVjIHAzeWsKKzU1NzM5IGY5ZjYwMDAzMjdlMjdiZDJlYjhkNGFjNWIxMTkzNGJmZDQ5OTM3NGEgbGVnYWN5LXRydW5rCis1NTc0MSAzMjhlNDU5ZWI2NzAyOTYxMWZkZjhhMzg3NTYwMzMzODJmZjE1MWIxIHAzeWsKKzU1NzQyIDdiM2Y2NGIzZTczOTM4OGVkNDNmZDBiNGRhZWVhODRjMDc5OTk2OTggcDN5aworNTU3NDQgMDRmNGI1NTdkM2M0NTExYjNjZTEwZTMxYTI2NGRmYTlhMDUxZjgwNSBwM3lrCis1NTc0NSAwNDE4NmY1MjE5MmRkYjEzZTNlMmVmMzEwMzE1NWI4ODQxZDM4Mzk0IHAzeWsKKzU1NzQ2IDdlMGMyMjBiNTVhNjQwMzNjODNkODdiNjFhZGM5OTNjYzllOWU5MjMgbGVnYWN5LXRydW5rCis1NTc0NyBiNGYxM2M3ZmRmZDg4ZDE2OGExNWQ1MjIyZGIwYTBkOTM4MzczYzZjIHJlbGVhc2UyNS1tYWludAorNTU3NTEgZTMxZDJmOTVmMjI1NGQyNDZkM2U1OWYyNDNiYmM5ZTBlMzVmZGQ5NyBsZWdhY3ktdHJ1bmsKKzU1NzUyIGUxOTk3MjgzNDE3MDg4ZGFjYjY3OWM1YWYyMTBjMWRmOGM3OWJlMzIgbGVnYWN5LXRydW5rCis1NTc1MyA4MmI5M2ZhOTFkY2YzNDEzZDAyYjk3ZmYyZWNkMTkwOWMzNmUxNDYyIHJlbGVhc2UyNS1tYWludAorNTU3NTQgYWJkZTA4Mzg0M2NkMmNhMzIxOWFmZWU4NTQ3MmZlZGZkZjlkODYzNSBwM3lrCis1NTc1NSBiOGFiZGZhMWM5YWZjMTAwMmQxMjI5NTBmM2IyOWE1NWM0MGRmMDNjIHAzeWsKKzU1NzU2IGY2ZmFiMWM3MDdlOTA5ZmZkMDU3OTRjZmUxZjZkZjU4MmEwMWNlN2YgY3B5X21lcmdlCis1NTc1OSA1MDE0ZjhkYWE1N2ZhZDU3ODZiYWE3ZGY0M2EwZDQ2NTRjZTNlYmZhIHB5M2stc3RydW5pCis1NTc2MCBlNGFiMDgwMzljNzVmODBmZDhmOGVlOTU1ZjYwMTc3ZDU1NjdkYzA2IHB5M2stc3RydW5pCis1NTc2MSA3M2RkMmRhMzFkMzdlYmQ4M2VmY2NiYjUwY2E4NTIyMzVlMjdjNTBkIHB5M2stc3RydW5pCis1NTc2MiA4YmNmYzQ2ZTQ0NGI1ODI2NmJkY2NiMWYxYWE2MGJmYmZlMTM5YzU5IHB5M2stc3RydW5pCis1NTc2MyA1Mzk2M2EyZjU2NTI5YmU4YzE2NTQ4NGU1ZGU2Y2RmZDg5YThmNDE3IHB5M2stc3RydW5pCis1NTc2NCA1Nzk4YTJmYmFiMDMwNGYxMzY3YmYxNTg2OTJiODljNGRiZjE0NzFmIHB5M2stc3RydW5pCis1NTc2NSA3MTYwNGQ0OWEzODYzOWVjYTE0NzJmMTdkNzZiODU4MzkxMWE3N2U1IGNweV9tZXJnZQorNTU3NjYgYzM2YWM2N2VlZjViNzc2YTEyYzA0NzUzZjcwOGE1ZGM5YWNmYmVlMCBsZWdhY3ktdHJ1bmsKKzU1NzY3IDRiMzRmYWFhOTc3ZGU4OTY5YjJlMmI5NDU4ZTkxMTU2OTI2OTAxMmEgY3B5X21lcmdlCis1NTc3MCBiNmMxYTFhMTVhNmNkYjQ1MDFhMDU4ZmUwZDM5NjA4YmM4OTkxYmFhIGxlZ2FjeS10cnVuaworNTU3NzEgZTNmYmRkN2NiOTY5Y2ViOGIyYzg0Mzk2YmRlYzg4MzkxZjZhYzAyNyBjcHlfbWVyZ2UKKzU1NzcyIDc2MTk0ZTY4MmUyMWNjNmFkNTNmZDRjNDMwZTM0NTJjM2RjOGVkOTYgcmVsZWFzZTI0LW1haW50Cis1NTc3NCBjNWNmOWE0ZjRmYTk3OWNkMTc1NTU5MTliNmQyODc1MTQzOTQ4YjhkIHJlbGVhc2UyNS1tYWludAorNTU3NzUgMzVhY2NlZGI1ZDAzYjQ4ZTAxZDc5ZjgyNDAwM2YxZjZiZWY5MDkxMiByZWxlYXNlMjQtbWFpbnQKKzU1Nzc1IGNmYmNmZjY2ZTcyNWFiNDI4ZTNlOWEyYjE1YTJjNzc5NjM4OTZjYWUgbGVnYWN5LXRydW5rCis1NTc3NSAwMTgxMzg0MWQ2NGJmYjQzNjZjZTBkZDExYTZlMGY2ODI4ZDJmNjBiIHJlbGVhc2UyNS1tYWludAorNTU3NzYgMzlhMWEyMmY5NmNmNjNmMTM0MjlkNzVhYTQyMGU3ODJjMGY4ODQyZCBweTNrLXN0cnVuaQorNTU3NzcgYjNmNjFiYWUxMGMzOGNkODU5NGEwZWYzMTA1YjFiNmZjNzI4MWFlMiBjcHlfbWVyZ2UKKzU1Nzc4IGVmMzc0MzFlYmYyYzk0NWUxZTNhYzgxM2JmZWE0MmJmOTYxZGQ3YmEgcHkzay1zdHJ1bmkKKzU1Nzc5IDRjNWZiZTY1YjdkZTc5MzU5ZDRmMTU3NTY0ZjI4ZDE2ODYwNjQ4NzUgcHkzay1zdHJ1bmkKKzU1NzgwIGIzMGM3NWQyMmYzNGIyMzk3MGE0ZThlMzhkMjg4NmM0ZmI0NTk5MmQgcHkzay1zdHJ1bmkKKzU1NzgxIDcwMTVjY2NmMjllM2JiZDc1ZGMyNzQ3NjJjMjA5ZDNiNGYyM2EwZWIgcHkzay1zdHJ1bmkKKzU1NzgyIDMwZTYxYWMxZDY2YzYyY2NmNTQwOWE1NTQ2YjU2NDUwODBmYWQ1MGMgY3B5X21lcmdlCis1NTc4MyA5YWY1MjRlMzUxZjMyNTBmMzFmMGQ2NDkwNzg3N2I4ZWI3MWEyYzJiIGxlZ2FjeS10cnVuaworNTU3ODQgZjIyNzc0MzlkY2RjOWY4YWQ0YTg4MzlhNDk3ODk4YzAyYzgzYmM4MSByZWxlYXNlMjUtbWFpbnQKKzU1Nzg1IDU4ODY4NmQ0YzJjZjg3ZWI5Njg0Yjc2ZGM1ZGQyOTE5YzA3NzI2YzAgbGVnYWN5LXRydW5rCis1NTc4NiA2ZmQ4ZDUyNGQ1NmIyZTY4ZWViNjU0MjM4ODBlNTY1MTQyMzYwODgwIGxlZ2FjeS10cnVuaworNTU3ODcgMTE5MzBkY2Y5ZDRmYjRkYWU2Yzk0ZWY0YjdjNTBlNDA2MTYxYzQ3ZiBweTNrLXN0cnVuaQorNTU3ODggN2U1MmI1YmVjNWE0MjY5OTc2MzU2NTM1OWZlYWNhODliYTY4MDJhMSBweTNrLXN0cnVuaQorNTU3ODkgY2U1YWY5YTc0NmNiMjA4YzNlMmMzNmMwYjIwOTFjOTExZDYyOTBmYiBweTNrLXN0cnVuaQorNTU3OTAgNDU5NjcyN2Y2YzM5YmM1OGY4MWYxN2ViOGIzZDViMzNhOWNhOTMxOCBweTNrLXN0cnVuaQorNTU3OTEgYjA1YzZkNDJkNGY3MjFmYjY2YmQ5MzgwOTMyYjY0ZTE3YWI2MGJlZSBweTNrLXN0cnVuaQorNTU3OTIgZjE0MWM1Zjc3ODYwZTMwZGMzOTY4NmU0NTk1ZTk0NTRiNTkwYzE1ZCBsZWdhY3ktdHJ1bmsKKzU1NzkzIDA1ODc5YWI4N2U1YjQ4NGM5OTViNWU2NWU0NDMxYjQ5NWY2NjhlZWYgbGVnYWN5LXRydW5rCis1NTc5NCA3YjM3YTQzNzIzNjE2M2Y4YjQzYTk2NmY4M2FiYmJjZTZhZjY0Y2U0IHAzeWsKKzU1Nzk1IDlkMDJhNGFkZjU3NDgxYjYwZDJmOTc1YjZjNTc5ZjFkNmQxYWQ1OTkgcHkzay1zdHJ1bmkKKzU1Nzk2IGIzOTAwYTUxMzQ2YjUyYzRkMTFkZTk5NmFmMDA4N2JkOGQ3OTQ3NzQgcHkzay1zdHJ1bmkKKzU1Nzk3IDU5YjdlOTM0Njg4NWNjNjBjYmFlZDhmMDZjNzBhZGY4NGRiZWVmOWEgcDN5aworNTU3OTggYzYzOTIyOGNmZTIzZDQ0YTljYTE1OTExNmI5Mzc3ODY2Y2IyNWY2OCBwM3lrCis1NTc5OSBhMzI2MWNkZTNhMzdlNjgzYjIyNzEwNGM1ZGVjNzNmNjY2MGUzNjcyIHB5M2stc3RydW5pCis1NTgwMCBmZWU3MWM3YWY1MmY0ZjBlMDk2ZWRiYTU1OTNjMTEyYjc5YTQ2YmI5IHB5M2stc3RydW5pCis1NTgwMSA5NDJkODMwMmY0ZDZmMTU0Mzk0MDI0MDYzMzJhNGM3MzRmNmM1Zjg2IHB5M2stc3RydW5pCis1NTgwMiBjOGIwZTNiOGI0NTZiYzhmMmFiNTlkNDU1ZTY3OWEzMWU0ZTQ3NGYzIGxlZ2FjeS10cnVuaworNTU4MDMgYzJhYzIyYzZmOThkMDNmY2QyODQ2OTUxNGIxNzA3YmE4YTg2YTExYiByZWxlYXNlMjUtbWFpbnQKKzU1ODA0IDFiYzkwMWRkYjdkYzIxYjNhZGRhN2U5N2YxMDIwYjZhOGU2ZDA0ZDAgbGVnYWN5LXRydW5rCis1NTgwNSA4MjNjMmY3NTkxZjUwMmVhODRlMDAwYzQzNTNlODkzYjFmOWFjNDhkIGxlZ2FjeS10cnVuaworNTU4MDYgODE1MGQxZjAxMGFhYzU2NmYyM2QwMmZhNjllOTU1Yzc2N2UxZTdlNyByZWxlYXNlMjUtbWFpbnQKKzU1ODA3IDE0NzQ1YjRmYTcxOGE1OWY1ZDUxZGE0NGNmNmU5ODhjOTU0OTcyYjQgcHkzay1zdHJ1bmkKKzU1ODA4IDgyN2VjNzY4MDE5OTUzNGZjOWNjNGU5YmRjZmM0Y2RkMjE2NWNkYTUgcHkzay1zdHJ1bmkKKzU1ODA5IGNkOGYxNjViZDdlMjk3YTRhMWZiYmM2YWEwYWIyOTJjZDUwMTE4MDUgcDN5aworNTU4MTAgYzZhMGI3NWRiZWMyMjhmZjkwNzUyY2YyYjVlM2Q5MzNkZDI5ODk0MyBweTNrLXN0cnVuaQorNTU4MTEgZWYwOWNiMDExOTU5NjRhM2ZkZDYyMWQ3ZTE1ZjgxZDJiMGM5YjJmZiBweTNrLXN0cnVuaQorNTU4MTMgNTRlZjY0NWQwOGU0ZmJiNmMzOTM5NGIwYTVkYmM3MDkxOGRhZWNjMiBweTNrLXN0cnVuaQorNTU4MTQgYzQxZmQ1NzIzODYwOTYwMDk3MTRiYzc4Zjk0ODhmZWYwYTE2ZThjMSBjcHlfbWVyZ2UKKzU1ODE1IGU0MjAwMzkzNjhiNzliZTJiMTkyZDQwMjU1M2FkMDI4MjVjMWJhZmMgcHkzay1zdHJ1bmkKKzU1ODE3IGFlNmJhNjE4OGQzOGQ0MDRlMzBhYWM3ZDUxMmM2YjA3NTIzMzBlYzAgcHkzay1zdHJ1bmkKKzU1ODE4IDY0NjRjYzYzOGZhYTBkMTQ4ZjY3ZTE3MGE2YTMyYjgxY2VmM2ZhMTQgcHkzay1zdHJ1bmkKKzU1ODE5IGU2NmRhZmE5ODQwM2Q2MjU2NDQ2MjI1ODA1YThlZDEzMzNiOTUwMTUgY3B5X21lcmdlCis1NTgyMCAxNGVjOTY3M2Y4OTQ3YzczZjMyZGVlZGI3NDUyYmI4ZGU3ZDJjZDdhIHB5M2stc3RydW5pCis1NTgyMSAyNDUzYjkzNzkyNWU4OTNmZTg2NzMyZDc5NTBjNzk5Yjc4OTA0M2I4IGxlZ2FjeS10cnVuaworNTU4MjIgMjlkMWFmMjIwYzNjN2E1YjVjNGE4ZmQwZTFjYzAzMzJmOGQ3ODRkYiByZWxlYXNlMjUtbWFpbnQKKzU1ODIzIGUxNTNiYTM1MmI1MTNjNWY4Yzc4YThkYjcxNzM5ZWY4ODAyZjBhYTMgcHkzay1zdHJ1bmkKKzU1ODI0IGY0OGMxOTdmOWMzOGZkZTZmNjQ1NjNiY2EzM2JiMzc5OGMxNDhhNDEgcHkzay1zdHJ1bmkKKzU1ODI1IDU4YTEzMzMwZGZkZTk5NjdmOTM4MjI5ZWZjNWVjZDE5NjQ0ZWFjNDggcHkzay1zdHJ1bmkKKzU1ODI2IDBkODFhNjU2NDEyYTE3ZDQxYWE4YTc1N2E2NzIwMDI3NTJjMTQ0NzYgcHkzay1zdHJ1bmkKKzU1ODI3IDE0YjY1ZGU5Yjc5ODU0OTBhMTc4YjU2YjIyNGE2Y2Q4MTY1Zjk0NzUgcHkzay1zdHJ1bmkKKzU1ODI4IDUyMmE0OTQ1ZGVmODBlNjBjNzIzZTdiNWYzMzkzNWUwNWU0ZTUxYzAgbGVnYWN5LXRydW5rCis1NTgyOSAxYmJjZDM5MjQxN2RjYTU3M2JkYzBkMjkyMzI0MjI0OGY4NjhhYTQ0IGxlZ2FjeS10cnVuaworNTU4MzAgMTBmOGE4YTkxOWUyYTBkMDk3YjdhMmM0OWMyYjQ0ZDUzMTJjMDE2NyByZWxlYXNlMjUtbWFpbnQKKzU1ODMxIDdiODRlODkxOWIwMDBjNTEzMjRhNGJhNTZlYjc0ZTQ4ODNjYWE3NWUgbGVnYWN5LXRydW5rCis1NTgzMiBiNGY0ZWU4NGMzMGQ3YWFlODEyZGNjZjg2ZTAzMTBkOTU5ZjI2NmVlIGxlZ2FjeS10cnVuaworNTU4MzMgODY5MWNjNzZkNDQxOTI1MGNlNTJmMmM4ODY1MWFiYzAzMGEwODA0YyBsZWdhY3ktdHJ1bmsKKzU1ODM0IDA2NzJkYmVkNWY3YTk3OGUxNTY2M2QyZmE2NGY5N2ExZTNiNmVkODIgbGVnYWN5LXRydW5rCis1NTgzNSBkNjBkMGQwZWU0ZjhjOWM4MzcyOWMzYmQ2N2FiY2I0ZGNiYjEwYTcyIHJlbGVhc2UyNS1tYWludAorNTU4MzYgMmJmNGRjOWQwNjQ3YmNhZTU2MTI0MzhkNjYzYWI5ZDkyZmEzNDcyZiByZWxlYXNlMjUtbWFpbnQKKzU1ODM3IDA1MjdhYjk0M2E0ZjIyMmNmODYxODEyY2I3NzkyMzBiODg5NjVkOGEgcDN5aworNTU4MzggNzlmMTNiZjhkZDI3YTI4NTc4ZGE5ZDZhMDk3ZGY4Y2M0Y2YzMGVmMiBwM3lrCis1NTgzOSBlNjJiNjA2ZWZmMGI4MzY2ZWYwMGY5YWY2NmM1MjY4N2Q5NTRkODAxIGxlZ2FjeS10cnVuaworNTU4NDAgMmJkOTQxN2RhY2Q1YzUzYWJlNzg1NGVlZDY0NDg5YzA0OWIwZGYwOSByZWxlYXNlMjUtbWFpbnQKKzU1ODQxIDE2Y2VlNjc0YTQxMGU1OTI2MjViZTQ2MGNjOGNmYTA1ZjU3MTY0ODAgbGVnYWN5LXRydW5rCis1NTg0MiBlODQxMzk3MTIxMmRmOTQ1MDkwYTQ4ZWJlZGI2NTRkMDU1MWU1NTg2IGxlZ2FjeS10cnVuaworNTU4NDMgMjg4MDVhNzIwNDU0MDAyYzhiMzZkN2I1OGE2YjBmOTU5NTczMTJhYiBsZWdhY3ktdHJ1bmsKKzU1ODQ0IDdjOTIyNWRhNWY2MTE1OWI0MzY4ZjM0ODIzODViYTc4ODA3Nzg5NDYgcmVsZWFzZTI1LW1haW50Cis1NTg0NSBlMmMzOWEzMGUwOGRkNmRjNDk5ZjViNWM3MDFkNzY5ZTZhZDIwYWJiIGxlZ2FjeS10cnVuaworNTU4NDYgNzMxYjY5OTQyMzE3ODAxOWYwNjJmNjBhY2Q2MTBjZWJiNTNjZmQ0YyByZWxlYXNlMjUtbWFpbnQKKzU1ODQ3IDNkYzUwN2NhMmUyYmViYjUxMDM0ZGRkZjQyOWY5MzQ5YjA3YzNmMmEgcDN5aworNTU4NDggNTljNmY0Y2JiMzI2OGVjMmE0MDc4MzkzN2I3ZjdlZDU0ODlmZTIxNiBweTNrLXN0cnVuaQorNTU4NDkgMDIyMjRkYTYwZmQxODNiZmUxNWFhZTlkZmFmMWY1NmQwZDhmODNmMCBwM3lrCis1NTg1MCBjZDEyNWZlODMwNTFiNGU1MDg3ODlkYjg2NDQ3MWM2YzJmMjExN2Y4IHB5M2stc3RydW5pCis1NTg1MiA2NDQzODUzYmEzMTQ4OTFlN2NkZTdjMWViMTQ4OTE1ZDE3MWFkNTZiIHAzeWsKKzU1ODUzIDZiZWI3NWVlZTljNTJmMmIxMmM5YjQ3Y2MxZDE4ODYzZTM2YjYyM2QgcDN5aworNTU4NTQgYjFiOGVlODA3YmRhZGUyMTlmMzA2YzJlMjMxODE1MGJmN2M4NTc2MSBsZWdhY3ktdHJ1bmsKKzU1ODU1IDNkZGFhZjYxNDgwNDRhYjc5ZTA2NzdiMjJkNTI3NGI0MGI5MWZiNWMgbGVnYWN5LXRydW5rCis1NTg1NiBiMjM5YTJiY2IyNGYzNTNjMTgyMTM3NzRkNDA1NDU4NjQzNDU4ODRmIGxlZ2FjeS10cnVuaworNTU4NjAgN2VhY2NmNTNhZGJkMTRjM2E4YjcwYTE4ZDFkOGU5YjFmZWY1OWY1ZSBsZWdhY3ktdHJ1bmsKKzU1ODYxIDc5OTBiYjI3NTljYjM3OTRjNzFlOTcxYzUwYzYzOGU2MWIwM2QyNmUgcHkzay1zdHJ1bmkKKzU1ODYyIGY1YjY1NzMxYmQ2YzlmYjYxYWRiNmI1NmM3NGMzZmQzNzBhNDc1ZWUgcHkzay1zdHJ1bmkKKzU1ODY0IDZhNDM4MmNlYjcxZTJjOTNjZmVlZDJlNDU4ODBkN2VkZDI4ODc1NzkgcDN5aworNTU4NjUgMGU5YjBiOGZjM2U3Y2YxZDZmYmFkNWMxNDhhZTIyNWNkZWZmNzhlOCBwM3lrCis1NTg2NiBiMzdhNTY4ZmQ0NDFlYjU1YTJhZTk1NTg2MzliYjc2YWQwZWI3YzIwIHAzeWsKKzU1ODY3IDJkNWUyMzY1YzdkYjA1YjgzMGU1MjIyZDRmMmJjNDRjZWQ3OGYwM2QgcDN5aworNTU4NjggOWU4NTdiNmMxZTU2M2U3NzRmNDQ0MzIzY2QwMmNhNTg0Nzg2ZDQ4MCBwM3lrCis1NTg2OSAxOWZhOWM3ZDNjNGYwOWQ0YzIzOGM0NGY3ZjY3MDNkZDllYWNlZjUyIGxlZ2FjeS10cnVuaworNTU4NzAgZTFhZmU1NmNhNmJhMzA4MDkyMTMyMjg2N2YyMzZkOTM4YzY4ZDIwMiBsZWdhY3ktdHJ1bmsKKzU1ODcxIGI3ZjhkZGQwNzJiODU4ZmEzNGRhOWFjMzI5MjBiNDcwMGM2OWUyZGMgcDN5aworNTU4NzIgNTliYzhkYTAxYzY1OWNmODE0NTdmMGZmMGFmMDE5MTQ0YWI4NTNhYiBsZWdhY3ktdHJ1bmsKKzU1ODczIGRkZTdjMzdmNDUzNjRkNzY2MWYzODBiYWJkOGJhZTBiZGQwYmNlNDAgbGVnYWN5LXRydW5rCis1NTg3NCBiOTRmMjg0ODA1YmU3MDgyNmUxYTU5OGM2MjcxN2NkZmMxMjBjZjIxIGxlZ2FjeS10cnVuaworNTU4NzYgMzZiOGQ3NGRlYjllOTIxMDJjOWJhNWY4YzQ2ZmNmMWQ3Mjc4OTMzZSBweTNrLXN0cnVuaQorNTU4NzcgNzVlZmU2YmY4YTNlY2VkODQxZmJlZmQ2YTQ3YjlhNjBmMTVkZjMxYyByZWxlYXNlMjUtbWFpbnQKKzU1ODc4IDcxZjMxOTI5MTVlMTMxZTJmOTFhOWQyODdmZTEzNjhlOGJkMGE0NzcgcmVsZWFzZTI1LW1haW50Cis1NTg3OSA0MzMyMmZmNWUzMTJjNGE1NDkwNDVjZTY1NmQxMjY0NGYxOWMxMDcxIGxlZ2FjeS10cnVuaworNTU4ODAgYzllM2M4MjgzOGMzMzgzM2NkNDBmNzVkODYzNDMzYzUyYmEwMmMyZSBwM3lrCis1NTg4MSA3M2I2Y2ViYzZmNzI3YTFjOWM0YWMwNGVmZDc3NzNlMTA0YjAyYmY0IGxlZ2FjeS10cnVuaworNTU4ODIgYjM1NmY4NzIwOTQxYjI1OTJhMmI3ZDJjN2U0NTI2YWQyMTUzZGEwMyBsZWdhY3ktdHJ1bmsKKzU1ODgzIDgyMTc4YTYwODJlYWZiZDE1MjE0ZmY0Njg1NGY3NTkzN2ZhN2Y5MDQgcmVsZWFzZTI1LW1haW50Cis1NTg4NCA2ZjNjMzM1ZWY3MTZmZmUwNGQ4ZDFjYWIyNjIwNDk2ZmRjY2MzZDZhIHAzeWsKKzU1ODg1IDliNmM0Njk0NmUwMmRkNWNmZjJhZDA5YzgyMDE3NTZlMDUwMWQ2YTEgbGVnYWN5LXRydW5rCis1NTg4NiA2NDQ5ODUwYzU3NTlhNTBhYzI2ZTEzNjJjODIzZTEyZTljOWI1NDExIHAzeWsKKzU1ODg3IGQxZDc5YzcxZmY2MmNhYWQ4OGE0ZTNhY2M3MGEwMWNjMTA5ZTBhYzYgbGVnYWN5LXRydW5rCis1NTg4OCA5ZDQwNWUxMzNkMGIyNDc3NmNjZjAzN2Q2MWU2YzljMGY4Nzg0NWViIHJlbGVhc2UyNS1tYWludAorNTU4ODkgOWJiZmQ4NDU2N2Q1MGE0MDlkYmNmMzIwY2ZhOWMwMmNhNWQ5OTgyNSBsZWdhY3ktdHJ1bmsKKzU1ODkwIGQwZTRhMzJmNmI3ODk1MTJlYjk0NDZiNWE5NGI1YTgxYTgxMmRmMzYgZGVjaW1hbC1icmFuY2gKKzU1ODkxIDE2MGI3MzE4YTNjYWI2ZTJlMjExNGIzZGI2NTBmMmYwOTAyMTMyNDMgcHkzay1zdHJ1bmkKKzU1ODkyIDE4MDg0NmI4NzU1Zjk4NGZiMTllZmFhNDgzMWMyYTI5YWU0NjkxNWEgcHkzay1zdHJ1bmkKKzU1ODkzIDA1NjYyN2NiMGU0MGEwZmNmZTUxYTRjYzU1NDYwZWUyNTFlN2MyNTUgcHkzay1zdHJ1bmkKKzU1ODk0IGY4M2NjOWIzMWE5NzdiZGU5NzM1YWMyZDM2NzM0YjMyM2JiMWY3NjQgcHkzay1zdHJ1bmkKKzU1ODk1IDk2ZWVmYzdhNjdhMGZjNTdlMWJkYTQ1ZWQ4YWQwYjlmMWVlZjJhMTMgcHkzay1zdHJ1bmkKKzU1ODk2IDNlNjRkMGVhYzc3NDhlYzhmNWVlNTI1OTI3MDc0MTlmNjIxY2U0Y2UgbGVnYWN5LXRydW5rCis1NTg5NyBlMGY5Mjc0MTRkZmEzOWExNjI2ODEzZWFiYjUxMjM0OTY1NTQ2ZGU3IHB5M2stc3RydW5pCis1NTg5OCA2MWZkNTQ0NGQ5NWY4MGJlMTQ0ODFmODhkNWM2MDZhMzcwZmUxY2UyIHB5M2stc3RydW5pCis1NTg5OSBmYWE2MjZkNmU2NzUxNzJkYWI1NmQxYmI0N2JmNmU2NGE2M2M1ZTZiIHB5M2stc3RydW5pCis1NTkwMCAxNzFmMGUwNzM2NzEyNmFjY2ZiYzI3ZmQ4ZDdhNWRiNjJlYzdkNjYwIHB5M2stc3RydW5pCis1NTkwMSA5NWJlNmMzYWRlNmU5Yzk1ZTNlNTAxOGRmNTQ0MmZkZjkyM2NlOGJmIGxlZ2FjeS10cnVuaworNTU5MDIgZDY3OGJhMDE3N2RhZmExZDIxMWNhNWMyNmYxNzFhZjYzZTBmZWFmNCBweTNrLXN0cnVuaQorNTU5MDMgMzkxMDUzM2I2NmM3YWQ0ODM4N2YzODZlYzVjZTFlNTE0ZDZmOGQ3ZCBweTNrLXN0cnVuaQorNTU5MDQgM2MzZjYxNWVkY2ZmZjdhMDViOTVlZTA4ODYyZThiNjU3ZDJkODljZCBweTNrLXN0cnVuaQorNTU5MDUgYzYzMGUzYTY4ODgzZGMzNDkwNDU0ZWE3YzJlMzhjY2ZiNTQwZjZhNSBwM3lrCis1NTkwNiA1N2MzNDQxNDk3MjdmMmU0ZjkxY2VlYmU5MmU2MjkyMTIxYTRlNzA3IHAzeWsKKzU1OTA3IDAyZDNlZDJjYzM0NzU5MDAyMmMwOGE3MjgzZjc1NTdmMjc2YWY1OTAgcDN5aworNTU5MDggMTkwZTJmMDY5YjE4MTgwMmE2MzEwYzFiY2VkZDAwNzIwZGU2N2MxNCBwM3lrCis1NTkxMCA1ZTE0Njk2ODY4Zjk3MTM5ZjYyOTRiMTA0MTllODNiMTZmZWFjYzY5IHAzeWsKKzU1OTExIDZmNzIyMDhjNjQzYjVlNDkwMWFiMTI0ZTU3ZTgwYzVjYmM2Y2E4ZTQgcDN5aworNTU5MTIgNWMyNmZlMDdkZWRmNWQ4Njg1YmMxMzgxMzUwZTA2NDk5MmEyZGUwYiBwM3lrCis1NTkxMyA3YmY4MzYwOTgwZjFmM2MxODEyNDM4ZTU3MWQxOGQwYTk4ZTE1YzkwIHAzeWsKKzU1OTE0IDhkYjA2OTY3NjJiNGYxN2Q3M2NjNmFlYjRhOTYzY2JkOWM5M2M5YzUgcDN5aworNTU5MTUgY2E2OTNmNGZkMDVkMGUyOWIwODA4MzNkMGM2M2E0NTNlODhlODUxMiBweTNrLXN0cnVuaQorNTU5MTYgODgxMjE2MmYwZjgyYTY5OGMxMTY1MTc2NGU3MDA2MTI2YTU3MThlZSBweTNrLXN0cnVuaQorNTU5MTcgODgxYWIxZDQxN2ViZTNmZWRiNDdiOGYzYjhjZTRjMjBhNWY5OTE5NSBweTNrLXN0cnVuaQorNTU5MTggODAyYzg0Zjk5YWFkMTViNjYwYjRlZjUwOTMzMmE5NDJkMmU4MDNjYSBweTNrLXN0cnVuaQorNTU5MTkgMDYzNTMwZmNjMzJlOWUxNDVjZWYyY2EzM2MzNDY2ZjkzZmM1MGVhMCBweTNrLXN0cnVuaQorNTU5MjAgNmQ2NDcyMWVjZDI2OGNlMTVlMWU3ZmM2ODc0N2M5NjcwMWI4Y2FiNiBweTNrLXN0cnVuaQorNTU5MjEgM2ZhYThjODA5NzAyNmJlNWYxYzBkNjA0MGU5NWEwMjc3N2ZhYjgxMyBweTNrLXN0cnVuaQorNTU5MjMgYTk5YTk2YjViM2Y1Y2MxNjI3N2NkYzRmNTBkOTE2NGMwOTcxYzBiNyBwM3lrCis1NTkyNCAxNzJkY2U1ZmFiYTFkYmFhNTQ3MmY4MDFkNWVlNDNlZDc2NTBiZWI5IHAzeWsKKzU1OTI1IDM0NzNhNjg1ZTVlN2Y4ZTQ0ZTliNTM2YWZmMjg5OWMzOGZiMTcwNDIgcHkzay1zdHJ1bmkKKzU1OTI2IGFmMjYwODAwNDAyMWQ2ZWRiMjA3ZTRmNWQxOTUyZDE4ZjljZmZjY2YgbGVnYWN5LXRydW5rCis1NTkyNyAwNDU5Yjg4ZTE0YjQxNDgzNzI0NDMwNjJkYzAzZGJhMDAzOTg5NjJkIGxlZ2FjeS10cnVuaworNTU5MjggYmE1ZDFhMzk3N2U5M2QxMGRlMjk3OWU4YmJkMDVhZmMzODlhZTQ0OSBweTNrLXN0cnVuaQorNTU5MjkgMGJkNzU5MTZlYzU4MTkxMmNhMGQzZTNkYjc2YWM5MDliNTJiYTU4ZiBsZWdhY3ktdHJ1bmsKKzU1OTMwIGQwY2ZmZjg5MzBlNTVhZWU3MGVhMTM4ZTViZjhhMDdiZjU5ZDEwOTAgbGVnYWN5LXRydW5rCis1NTkzMSBkYzdhODJjN2NlOWVjYjU4NWMyOGMwZDU4YjhkZjJmMWRlYzUxNDg2IGxlZ2FjeS10cnVuaworNTU5MzIgYmM5MGZjOWI3MGI3NjIzOTdhMWY4NGE0NTQ2NGJjYWFmYjgwOGM4YiBweTNrLXN0cnVuaQorNTU5MzMgNDg3NzAwODA3NGE5MWI4MDQ0OTA0Y2U1NDM1NmU0NWI1ZDFmY2JhOSBweTNrLXN0cnVuaQorNTU5MzQgNjU3ZmU3OWE2ZGZlYmIzYTUwNzZmZWI5ZDczM2ZkZjEwYjgyMzdlNiBsZWdhY3ktdHJ1bmsKKzU1OTM1IGU4YjIwNjBjY2I1OWM3YWI1MDlhMDhmNWJmYjlhYWIzMzc4ODFiZDggcHkzay1zdHJ1bmkKKzU1OTM2IDQ1YmI5N2E0ZThiNjcxMTc4YjY1M2QwMTE1MGJiYmZhNmE4ZmVlMWMgcHkzay1zdHJ1bmkKKzU1OTM3IDRmYjg1ZTZmODJlNWUyZjAzMjJjNjViMjI3NWY2YjM0NjA1ZDFhY2YgbGVnYWN5LXRydW5rCis1NTkzOCBlOWZiMDZiNDQ0NmUwZTllOTRlOTY0YzVjYmM2ZjI0YTFhOGU2OTA3IGxlZ2FjeS10cnVuaworNTU5MzkgNTYwNTcxOWJlZWUzY2FmNTM4M2NjNWY1OGIwOGIxNzVjZDA0N2M2YyBwM3lrCis1NTk0MyA4MjUwNDFmYzhlMmMxZWQ0YTNiZmYxNzY0MDU4Yjg1M2VmZGY4NDE5IHB5M2stc3RydW5pCis1NTk0NCBjZTYzYTVkY2IwYWYxMzQxNWY5YmZhNDc1NTFjYTQ4Nzg5Y2IwMjVmIHB5M2stc3RydW5pCis1NTk0NSBmODMzYjQzYzI3NTY4OWViMjQ0ZTZiZDFkNDA4NTI1NjFmMGU4Y2U4IHB5M2stc3RydW5pCis1NTk0NiBmYmFiZGIwZDdkZDIyYzRhNjE2NzUxZTg3ZTkxNzBkMzcwY2ZhYTAxIHB5M2stc3RydW5pCis1NTk0NyA4Y2ExZDNhN2Y0ZjBmOWRmN2U4NDI5MTJhZTc3ODg1NWY5MzYzYTkwIHB5M2stc3RydW5pCis1NTk0OCBkZTg4MDM4MTY1NGFmNmY3MjBlZmQ0MzMzMTBiYTE1MzllNzg1ZjYzIGxlZ2FjeS10cnVuaworNTU5NDkgMDMxOGEwZjU0NTIwZTQyNzFhOThjMWI3OTAxNmQxNzI3YTliZDAyZSByZWxlYXNlMjUtbWFpbnQKKzU1OTU0IDYwYmUyNzYxMDU3YmZkZDNlNDMxOGNhNTAzYWU5NGRjODk2ZDk2MGQgcDN5aworNTU5NTYgYjUzOTEyMTRkZjM1ZGVlN2U2NWY2OWY5YTRjNDhhNjBlMTUxMzgxMiBsZWdhY3ktdHJ1bmsKKzU1OTU3IDNkOWUwZWZjYTVkMzUyOTY0M2RiYWM5ZGQ3NzBmMzJhNTQ0ODNmOGEgbGVnYWN5LXRydW5rCis1NTk1OCA1MGJlYmVkYzYxNGVkNTRkNTQ0MzljNWJmNjJlMDgzY2Q1YTFlMjE2IGxlZ2FjeS10cnVuaworNTU5NTkgOWUxMTRiMWZkOTRlODM4MDhmZjUwODIwY2Y0YTg5ZGFkMzcxMjZjMiBwM3lrCis1NTk2MCAwNWYxZmQzMTM0NGRkOGJlNjgwOGE0ZDBlZTI5ZWZmZTEyZTkyMzg0IHB5M2stc3RydW5pCis1NTk2MSBmZmIxYWU3MjMzYTIyOTk4ZjE5OTFhNTBhMzhjZTRiODVmN2RhOTQxIHB5M2stc3RydW5pCis1NTk2MiAzNzE4OWUzNzVlYzc5NmFiMTYwN2M1ZDNmOTgxOTMzY2E3NmUwMDlkIGxlZ2FjeS10cnVuaworNTU5NjMgMjI5YzI4Y2I5YWZiMjMyOWMwZjU1N2JhZGJkNWFmMDhiMzQ2MmQ3MyBweTNrLXN0cnVuaQorNTU5NjQgNTM2OThmOWE0ZWI3NmU1NDhiMmEwYjY3NmNhYTc3ODUzZDZkMGIwZSBweTNrLXN0cnVuaQorNTU5NjUgNTY3NWY2YzNmZjgzZDFmMzA3ZjEyOWYwMmZkMGNhZDBmOGE4YWY3ZCBweTNrLXN0cnVuaQorNTU5NjYgOTczOTkyYTc0NDBhMWNjNTgyMTA4NTI1OGNjNjYzNmVkMjkyYWMzNyBweTNrLXN0cnVuaQorNTU5NjcgYjdlNTQ5ODU3MzIxNTk3YmE5ZDQ3ZDM1MmUzN2NjNGJkYTk0NjU1OSBweTNrLXN0cnVuaQorNTU5NjggMGUwMTBkYjEyMmM3MWEyZTIzYzYyZTA1MGFlMmRlZmNkYTVjOTliMCBweTNrLXN0cnVuaQorNTU5NjkgODY5MzdiMGNkNTZhNmMwYWFiOTkwMzQzNmYxNzU3OTU0ODVkNmEyZCBweTNrLXN0cnVuaQorNTU5NzAgNzJmYzdkMDI5ZDNkMmIzYzFkNmYxMDgzZjY5NDJiZmE2Zjc0MDY0MCBweTNrLXN0cnVuaQorNTU5NzEgZDE3YTI3MjQ3OTg2MzAyNjVhZDAzNTRkOTY0NjQ3NjBiZDk3NjJhNiBweTNrLXN0cnVuaQorNTU5NzIgMzY1NjdmZTAyZWE1ZDExMTRkMTNhYWU1MzdmOTVkNDcwYTExNzMyZiBjcHlfbWVyZ2UKKzU1OTczIDQ5N2ZhZGUxZjg3MzQ4MjQ2YWE0MDZkN2M0ZTgzNGM5YzcyNmZiNzcgY3B5X21lcmdlCis1NTk3NCAyY2Y3Y2U0MWVjNjAzNTliMjljMGE5N2FlN2QwZWZlMzEwNTUwODg0IGNweV9tZXJnZQorNTU5NzUgZmQ4ZGQ3NDQ3MGY5NTkwNDdlZjkzNGE5OWQ1ZjAzNDU0MjU5OTU3OCBsZWdhY3ktdHJ1bmsKKzU1OTc2IDQ0YjQ0YjBhOWZlMjU3Yzc0OGY5Mzc1MWQ1NzQwMGNjYjRlYWVjMGIgcmVsZWFzZTI1LW1haW50Cis1NTk3NyAyNzFmNjg2ZjYyMTgxMWRjYzYzMjgyMzQ5MzViNDEwNjhjZTk4OWE0IGNweV9tZXJnZQorNTU5NzggZjY1NjcyYjhlN2QxZmVlOTQ3ZTZmYjkxYTg1YzkyMzMyM2MyNDlmZCBweTNrLXN0cnVuaQorNTU5ODQgODVjNDQ2ZjRiMTk2MjJjYzg4YzhhN2FmYjQ4ZTg5MTQzMjU1NTg1YSBsZWdhY3ktdHJ1bmsKKzU1OTg1IDRmNmNlOThiMDYwZDFmYzZjOTQ1NmNiZDZmNTRmMWE2NWViNGExZDggcDN5aworNTU5ODYgMjQ2MzI0YjM5ODk2YjEzMGJkNzJlZDE4OGM1OWE0OWE5ZjdmNGYwYyBweTNrLXN0cnVuaQorNTU5ODcgNTgzOGJlYzdjMTE1OGFlMzAwNTc2NWU2MDdlOTg3ZDNiMDRlNDljNCBweTNrLXN0cnVuaQorNTU5OTEgNjcyN2NjOWVkMDlmZjFmNWIwNWRiMzE2YjcwNDk0OWQ5ZmM4YmMzNiBweTNrLXN0cnVuaQorNTU5OTUgNDg3NzQ3ZDkxMGM3NjJjMDJlYTNkZTdhZmQ2ZDM4ZmUxOTQyOTI2YiByZWxlYXNlMjUtbWFpbnQKKzU1OTk2IGQ2ZDFlODZhZDQ2YzFlOTBkN2U4ZTMxNDcwZmE0ZTgyNWEwNTRjOWUgY3B5X21lcmdlCis1NjAwMSBlZDZjODJkYTFhNmNlZWIxZDk1ZDE4NzljZDA0MTNkMWZiNjI1OGIzIGxlZ2FjeS10cnVuaworNTYwMDIgOWJhOTkyZjY0ZTk1N2YwNzg2YzA1ODQ0NjA1ZDJhM2FiNWYzYmNhNiBjcHlfbWVyZ2UKKzU2MDAzIGU0ZTZhNGQ3YzE2ZTk1OGNlNDkxNDAyNTM5MWM5MWI4Y2UyMmI5NTUgcDN5aworNTYwMDQgN2Q3YzQ4MDU2M2UyMWNjZmRjMDViOGE3ZWYxODM1NDBlYTNjNThiZiBwM3lrCis1NjAwNSA4ZTg2MDk0MzJlNTZjODkxZmEzYTgxYjU3NTM0YjQ4YjU3YTg1MDhmIGxlZ2FjeS10cnVuaworNTYwMDYgY2VkOGRiNjE4ZTViNmJlYTk1OTk2ODE0ODY0NzRmMTI0YzkwYWRlZCBsZWdhY3ktdHJ1bmsKKzU2MDA3IDQxZDQ1YzIyZjE0Nzg2MWQyODk5NWVjNzVmY2M4MGQwZTI4YTlhOTUgcmVsZWFzZTI1LW1haW50Cis1NjAwOSA4NTNiODQwOTMxNTE0NmY0MTMyNDNmMGVjZTk2NGEwMzQ2NDUyMTU3IGxlZ2FjeS10cnVuaworNTYwMTAgNTZlYzM0N2RhOGU0MmY0ZDY0OGY3NTlhMmU1YTBiMjI2ODA2NTNhZCByZWxlYXNlMjUtbWFpbnQKKzU2MDExIGE5YWVjYmY1YjEzZjAyM2M3ZGM5ODcyMjMzMzg4YjQ2NTkyMDIwNDAgbGVnYWN5LXRydW5rCis1NjAxMiAwMmRhNjMwNThkNmIxNGU5YTEwNjQ0Mjk4OTZlYmJhNDZmZGI1ZDk4IGxlZ2FjeS10cnVuaworNTYwMTMgNTk0OTdlYzI4Y2FhYmUxMzQyYTY0NTEzMmEzNzAxNWJlNDFkMjNjYSBwM3lrCis1NjAxNCAwODA1MTU3NzM0ZjhkOWRjMjBmOGM3M2Q5NDk1NGZiMzUxMzA0MjUzIHAzeWsKKzU2MDE1IDI1OWRlMzg3NDQyMDYwMjIyNDY3OTA0MmU0ODY5MjhjM2E3YzljMDAgcDN5aworNTYwMTYgODI4MjNlMTNiNjZjZDllNjBiMGE2YWIyY2E0OThhYTZkODMwOGUxNCBwM3lrCis1NjAxNyAwZTIwNDM2MjMyOWVkZTcyOTU0ZTAzZTk3MzA2NDY4NTJlZjkyZWFlIHAzeWsKKzU2MDE4IGI0NTY1ZTA5NjEzMWYxZDFkZjA0MTc5ODU3ZjcwMzhjMjU2YjQ5OWIgcDN5aworNTYwMTkgYjJlNzMzNmZlYjgyNmE3NmRiYWQ5NmE4MTZmYWU0YmRiZDYzNmEzNiBsZWdhY3ktdHJ1bmsKKzU2MDIwIGU0ZjY0OWM0ZjQ1NzI1ZWRmNmQ5YmJkYzZlNjYxOGZiYzcwMzk2NjYgcHkzay1zdHJ1bmkKKzU2MDIxIDMyZmUyYjllOWYxMTE0MzNjNzc4ODIxMTE4OWUwMDljNmMxMTkzODMgcHkzay1zdHJ1bmkKKzU2MDIyIGViYzg3Yjk0ZTZlYWI1ZDEwMzgwMzA5OTU4M2JiYmMzMjIzODNmZTYgcHkzay1zdHJ1bmkKKzU2MDIzIGE0YWU2MjY1M2E1Y2IxNjljZGUwZjVhZWZkNTBiYTE0YmUwYWM3MTEgbGVnYWN5LXRydW5rCis1NjAzNyA3Yzg5MmU3M2U4ZTQ5ZjUwNTU4YTI2MDkxZjIxNjlhYWY5YjRjNmU1IHAzeWsKKzU2MDM4IGFhYjkwODBhYzRjN2VhMzY5ZTJkNzhhMGQxNjRhYTBlZjk1NTM2ZDAgbGVnYWN5LXRydW5rCis1NjAzOSA2NmM4MzQ3YTY0ZGRhZWQwNWMxZGQ4NTg2ODA2YjdlODY2ODk1ODFjIHJlbGVhc2UyNS1tYWludAorNTYwNDAgMDRhNDE4NWJkNGQzY2MxNjUzNWQwNmM5MWQ5NjVmNWE2ZTM0YjU3ZCBsZWdhY3ktdHJ1bmsKKzU2MDQxIDY3ZjcwOTdjMzRmMzQ5OTgyODA1MWZhYzZlZDMyNDQ5M2QwNTE3ZTYgcmVsZWFzZTI1LW1haW50Cis1NjA0MyA3MGEwODMxZmVkYTY5MGU0NGE1Mjk4MTBmMjhiZjI5OGNiY2ViMzA4IHB5M2stc3RydW5pCis1NjA0NCA0ZGIwYTBjYzU3YWJlZTk1NDExY2UwZDE5OTM3NGNlZjJmMjhkNDJkIHB5M2stc3RydW5pCis1NjA0NSAwNDEzOWUzMGU2NGRhOTUxZWY3ZmQ1ODhmM2ZhMjdiNzcwYzA2NjlkIGRlY2ltYWwtYnJhbmNoCis1NjA0NiA4NDI1MzM0NzdjZWE1NDQ0OWViMTc3N2M2MjU2MjExZjU1MTQyNTI2IHB5M2stc3RydW5pCis1NjA0NyAxZjA2ZDVlZTQwYmQ3ZjJjMWFjODdhMzAxZjZiODk1MjNhMDVlMjk5IHB5M2stc3RydW5pCis1NjA0OCA2NzEwZjQ1M2NmNGE4YTJlOTU3NTliN2JmM2ZlODYyNzdkMjBmZjg1IHB5M2stc3RydW5pCis1NjA0OSAzODNjODkwN2JlYTA0NDgwMzFkZmI4NGY3Y2U1MTQzZWY4ZTQyN2M2IHB5M2stc3RydW5pCis1NjA1OCA2YjMyNWIwNjVhZWRhZWYzMWRhY2U1YmE5NmU3N2NkM2MxYTE5MGZlIGJjYW5ub24tb2JqY2FwCis1NjA2MCAzOWVhYTljMDI0NmU0YTJiMjA4MzhkNDRjNmVmMmZiODkwYzliNmJiIHAzeWsKKzU2MDY5IGUxM2Q1YjEwNTNlZjgzMTlmZTZmMWUyMDg3NjNkODQyZTIzNjZkMDkgcDN5aworNTYwNzAgYmU5ZGUwNWJiODg5Y2MyYjlkMTFlZDA1Nzg5NTgzNDZlYWY4OGI4MCBwM3lrCis1NjA3MSA5NTkyNzY4NDQ3NmJlMTZiZGIzZmEwN2VmNTJlNGE3MWRiODM5YjUwIHAzeWsKKzU2MDcyIGY5N2I2NmU5YWE4ZjBkN2I2NmY2YWQyYzBmYjRhNmYyZWQ5Mzk2YjcgZGVjaW1hbC1icmFuY2gKKzU2MDczIDQ1OTAxMjllNGMyYjVkZjhkNGQyNjdkYTg5ZTJkYzZkMDMxNzU0ZjYgcHkzay1zdHJ1bmkKKzU2MDc0IDc5YzI2NTYwNTZmNjc1ZWFhODUwYTI1YjRlMDE3Y2U1MmRmN2Q0OTMgcHkzay1zdHJ1bmkKKzU2MDc1IDhmYzkzMjE1YzBjY2ZiYjA0MDg4MTRjYTczZmZlZjMwM2ZiODZkYjcgcHkzay1zdHJ1bmkKKzU2MDc4IGMyOTFkMmY2ZDAxN2YyNTE1ZmNkNzE5NGNkYzc1ZTkwY2JmNDI0YTcgY3B5X21lcmdlCis1NjA3OSBiOWJmN2M3NjBhMTAyNWJiYWVjN2MyOTE0NDMyOGFkMGRkZmU3MjlkIGNweV9tZXJnZQorNTYwODAgOWI1NmM5MTYyNTM0NzRhYTc2YjE0YjdmNjhhM2I5OTRlMGU3ZTBlZiBjcHlfbWVyZ2UKKzU2MDgzIGU4NzZmNjQzOWRjN2JjNWMyYjY2NWVkZjg2OGRlNDRiNTdjZWE2NDggY3B5X21lcmdlCis1NjA4NCA0MWU4YWQyYzliYTk5MWM5NWEwMjEzOTRjOWRjNWJmMjg0MzY5ZDMyIGxlZ2FjeS10cnVuaworNTYwODUgZDgzN2I1ODQ2ZDQxNGZjZDgwZjY5ZjUxMzhmYzBmNjM4YjAxMTYzZSByZWxlYXNlMjUtbWFpbnQKKzU2MDg5IDlhNmFjOWE3ZTNhNGZmOWZjNjkxM2EyOTI0MzEzMjJkYTY4YjY4MWQgcDN5aworNTYwOTAgZGIzMjA4NzA0YWMwYWY5ZDQ5Mzc0NGEwZGQyNjA0NWNiMTVjYzE1NyBiY2Fubm9uLW9iamNhcAorNTYwOTEgNzA1YmM3M2VlNDMzMWM4YzMwYzhjYzIzZjIwODFmMGMzOTY5YmQ2NSBsZWdhY3ktdHJ1bmsKKzU2MDkyIGIwMDc0ZmQ5MjYyMWM2NzNjMTcyYmU2MzkyYTAwMjdiZDNkYThjNDcgcmVsZWFzZTI1LW1haW50Cis1NjA5NSBiZjZlYjg4NDdhNDI0NDAyOWRiMGZkYTUzYjY4YTU4NTA5NTVhODgxIGJjYW5ub24tb2JqY2FwCis1NjA5NiAxNTkwMzFkYjhlOWYyODU3MzA3NWU1ZWE1YTZiMmM3NWYzMTlmODlhIGJjYW5ub24tb2JqY2FwCis1NjA5NyA2MzNiMDQ5NDdhYzQ2MDVjMDY0YjliZjg5YzJjMGQ3NmY5NTgxY2YxIGNweV9tZXJnZQorNTYwOTggYmIwOWVhZDA0ODQwNTNhZGE5NTU4NzA3MmQ4MTNmMmNiZjBhZmY1OSBjcHlfbWVyZ2UKKzU2MTAwIGEyMDAyNDBkZWE4YWI3NjM5ZTViY2FlNDU2MjhkODlmZTAwMWU4NWIgYmNhbm5vbi1vYmpjYXAKKzU2MTAxIDNmNTg5YzU2NDQyNmQ4N2MxZDA1NzJkMzAyZGU2MDk1MjM1MWJlYjUgYmNhbm5vbi1vYmpjYXAKKzU2MTExIDdhMTE4YWMxNDlhMDY2NzAwM2E1ZWZmM2RjMjZmMzlhZTg2ZWYzZDYgYmNhbm5vbi1vYmpjYXAKKzU2MTEyIDUwZDMyNjQ3YjAzNTY1MmFiMjc1MmI3MzIwMDg2ZDI3ZWMyYzVlZmYgYmNhbm5vbi1vYmpjYXAKKzU2MTIzIDVmMTQ4ZjZlMGE0Njc5OGVhZWIyNTVkYmQyOGQxMDA3YTFhMTQxMjkgY3B5X21lcmdlCis1NjEyNCAzMTRhZGMzYjdiYjQ3OTk4YjlkZTY5M2QxMjZhNDM2YWZjZjQxNmVjIHAzeWsKKzU2MTI1IDdmZjM1YWQ0NjZlYzU1ZThkYjNiZjMzYzcwYzljN2Y2MWE4NjAzN2MgcHkzay1zdHJ1bmkKKzU2MTI2IDg2M2VkN2NkNDVkYzhlZDU2NjFkMzk3MWNmMGRhNzYyZDA3MGEwZGIgcHkzay1zdHJ1bmkKKzU2MTI3IDQxNjc2ODBiM2FlMjRmM2Y2MmMxMDliYzRkZjZmMmViMzJiNjE0YzQgcDN5aworNTYxMjggYTg1ODJlMjU3NDhiNzI5NTdmY2Q0N2QyOWRhMTQzYmY0MmU2YjYzMSBweTNrLXN0cnVuaQorNTYxMjkgZGE0Y2M2NzY3M2E4NTFiNjg5NjExN2MyOWEwNDAwMjkyZWFhMzM0ZCBsZWdhY3ktdHJ1bmsKKzU2MTMwIGM3NmE5NDMyMmNjYzg4Y2ZjNDQxOTdhZmJkZjUyNjc4ZWI4ZTE4YTAgcmVsZWFzZTI1LW1haW50Cis1NjEzNCA3OGJjMDc4YzczNTBlMmY5ZmY2MjFhZjQzMzYwZTE2MGYzMWFkODg2IHB5M2stc3RydW5pCis1NjEzNSA4Mzc1MzU5OTQyMGRjOTM4YjJjYjVlMDUxNDc0MGQxNTEwYWQ5ZGNmIHAzeWsKKzU2MTM2IDI4OTljZjhjYTU3MjVmMGEwNDE5OWQyOGFlNmIzZDliZTMyYzUwMGEgcDN5aworNTYxMzcgZGNjZjE0ZmUwMGVjZDNjYzFlNjQ3YWUxMjMxMGQ3MjkzMjBmNmFjMCBsZWdhY3ktdHJ1bmsKKzU2MTM4IDkwODU4MGI5YzhlMTBiZjJiNDMzY2JlOWZjNGNjMTBlYzdmNzBjODEgcmVsZWFzZTI1LW1haW50Cis1NjEzOSBmNTM1NzEyNGNlZmU1NDIxMmQyMDQyZGQ1NzNhZGJjN2NiMmQ1ODU3IHAzeWsKKzU2MTQwIDFmN2I2NmE5ZmZiMGQyNzJiMTdiMGQ5ZDYwOTBhYjdkODZhODEzODAgcHkzay1zdHJ1bmkKKzU2MTQxIGUzYmNiOTg0YjI0YzhlOWQ5MTlhNGVhNjY5YjdmMjE1NTkxYmUzOGYgYmNhbm5vbi1vYmpjYXAKKzU2MTQyIGQ0YzRmODljNzc3ZDQ1MzlhZGVlZWIzY2JjMDA4MDEyODk3MWMyZDYgcDN5aworNTYxNDMgNDA3ZDE3NGRiNmRlYzdmZjc3YTRhN2IwNjkzNDYzYjc0N2EyZDAxYiBsZWdhY3ktdHJ1bmsKKzU2MTQ0IGMzZWEyNzc5YzYzNThhNTI1MzVhMmNlNjQ2Mjc2N2JmOGMwNmEzZmMgcmVsZWFzZTI1LW1haW50Cis1NjE0NyA2MDRiZmE2M2MxMTM4OWZkYTkzYmFiN2RmMTQ0ZmU5OThlMDFiZTU3IHAzeWsKKzU2MTQ4IDIxMzc0MzY5Mzc1YzE2NTk4ZjcxMTViZmMzYzIwYmU4YmQ0NGM4N2QgY3B5X21lcmdlCis1NjE0OSBhYjc0YmRiZjZkYWFmZGI3ZTFjZjhmNzUxMDY3ZjdkMzhhZWM3M2FiIGNweV9tZXJnZQorNTYxNTAgZWIyZDUyNTg2MDE3NTg3OWZhZDU5NTY1ZjQyZmNjODAxMzY5ZjdlNyBjcHlfbWVyZ2UKKzU2MTUxIGZlYjI3NmMwODkxNzFjOGRmMjgzYTFkMWQ4YmVhNmJiNWJlN2M3ZTUgY3B5X21lcmdlCis1NjE1MiBjMmNjMTIwM2JkNjljOTZlZDk4MjNiM2FiYmUzOTJjNmE5ZjA0ZDg4IGNweV9tZXJnZQorNTYxNTMgODE3Y2JmZjlmYmViNGRiNDQ1ZWE0MjQ1MjQ4OTRiZjYyNTQwMzBmNCBjcHlfbWVyZ2UKKzU2MTU0IDhhMTdlNGM0MmEzNWZiOTY5YjlhN2U0NjRmNWIwNDg5ZWMwZmY1NzQgY3B5X21lcmdlCis1NjE1NSA1YjFlNzRmYzQyYjgxZmI1MDZjMTU0NTM3OTA5YTFjZDQwZjljMGEyIHAzeWsKKzU2MTU3IGE1M2U0OGJlNmRmOTU1MmM2MmZkNjEzMDQ3YzFjNjdjOTcxZDQ1OTAgcHkzay1zdHJ1bmkKKzU2MTU4IDBkYzYyNjQ3YWZmMGNjZGM3OTU0MWJiNDlhNjk3MWQ4MjkwYjZlOTQgcHkzay1zdHJ1bmkKKzU2MTU5IGFlODcwMjI4ZDVmMzM0ZTM5MTcyNzU2M2RhYzk4ZWNkYzA2OGFiMTMgcHkzay1zdHJ1bmkKKzU2MTYwIDMxZjQ3N2IwODhjOWY2MjNiYmZhMWUzMWMyZTAzYzMzMDNmNTFjMzAgY3B5X21lcmdlCis1NjE2MSA4ZWVhYTk5MjM5MDFmMzg4NDUyMjA5NzdmZGViNzExNzM1ZTlmMzU5IHB5M2stc3RydW5pCis1NjE2MiAwMTAyZjVlNTM3MDM5ZjYyNjg2NDY3N2Y4ZWUyMGU5N2NlNDNmNzcyIHB5M2stc3RydW5pCis1NjE2NCA1MTg3ZWQ2OGFiZTBiOGQzZTNlNzFhMWFkZDQ0ZTM2ODI3NWFiZDY3IHB5M2stc3RydW5pCis1NjE2NSA4YTk0Y2U1MDIyMDliMDk1NWE0MWViNjI3NTE4NWQyNDExZmFjY2MyIHB5M2stc3RydW5pCis1NjE2NiBlNDc2OTk3MDQ4YTBhYjUxM2Q1N2YyMjFlZWEwMTJhYzBlODBhYzMyIHB5M2stc3RydW5pCis1NjE2NyBlNmM1ZmZhNmRjNjczODE0ZWZjOTQ4ZDgyOThkOWVhNDAxOWNlNmE0IHB5M2stc3RydW5pCis1NjE2OCA0MGE2YjkzZjllMGJlOGExMTZkYzZmNmE4YzliMWMxNGY2ZTEyNzBjIHB5M2stc3RydW5pCis1NjE2OSAzZjc4Mjc4MTAyMGJlMjJmOTUxYjMyY2Y0MmQ2YTA4MjE0NzZmY2U2IGNweV9tZXJnZQorNTYxNzAgYjBlYWJhOGI5ZjAyOTM1NjIzM2FlMWI3NzJiZDhmYTlhN2I0MjA3MCBsZWdhY3ktdHJ1bmsKKzU2MTczIDc5NmM3OTYyMzkzODM2NzUxYzk2MjBjZDEyNGMyYTU4Y2M0NjAxYzAgY3B5X21lcmdlCis1NjE3NCA4YjJmZWJmZGE1Zjk5YTM5ZWU3NjNhZGYzMWUwZmU4OTZiNDE4YTllIGNweV9tZXJnZQorNTYxNzUgYzQwNDRlNDdmYzFhZmVkMGU3NGY1OWZiZDRhOGQyNWI3MzBkMmQ0NSBjcHlfbWVyZ2UKKzU2MTc2IDllNWEzOTYwOWEyMDhkZDFlZDBhNDllZGY0ZGU3MDJkMjAyYjlhZGEgbGVnYWN5LXRydW5rCis1NjE3NyBkNjM2MmVkNTQ4YjBiMTcwZGM1MjNiOWZiMDMwZTk1YjAwZWJjMjNkIGxlZ2FjeS10cnVuaworNTYxODEgNzIyNGU0MjA4MWJkMzgxYmI5ODhhYzYwYjU5NDY5OTAxNWI3MTQwYSBjcHlfbWVyZ2UKKzU2MTgyIGRkODk2MDUxMjZlNTg1Y2RmZDFkN2QwNjg4ZDRiOGZjNDk0OTgxNTAgY3B5X21lcmdlCis1NjE4MyBkYmM3NTNjMDIwMDczNjJkZTcwNThjODJhYTJjZDQxZGQzZDcxMjc1IGNweV9tZXJnZQorNTYxODQgOWMwOGQ5MTY5YzFjZDQ0OTIxNDExMzEzMTEzMWMxNzgzZTc1ZjFiOSBjcHlfbWVyZ2UKKzU2MTg1IDM3NDEzZjYyMTEyMGEyOGIwNDc1Yjk2MDg5N2Q0ZDZkNDM4ZmY0MmQgY3B5X21lcmdlCis1NjE4NiAwNGUyNGI3OTIxOGFmMjg5MWQ4MjhkN2Q5NGQ0NmZlZTk5NjQ2MTBlIGNweV9tZXJnZQorNTYxOTMgZTYyZTJiODExMzZhMjJkOTY3ZmE0NzJjZDQyOGIyZGY1ZmMyOTMyNiBjcHlfbWVyZ2UKKzU2MTk0IGIyZmZjMDI4NTg1ZmIyZDBmYTg0OTQxZWY5YzQ5YTAyZTEyYjMyZjEgY3B5X21lcmdlCis1NjE5NSA0ZmE2ODM4N2I2YjM1OWU5YzA1MGU2MmQ3ZTE1ODc1MjA5MzYzYmQyIGNweV9tZXJnZQorNTYxOTYgYWEzMGIyYjA1OThlNDgwN2NiYjQ5NWRjZDViN2I4MjljNTcxMDI5OSBjcHlfbWVyZ2UKKzU2MjAyIDUzN2ZlOGRiODMzNDk4OWQwMzExNzk3NGZiNjJmMmNjMDI5NzliMWEgcDN5aworNTYyMDMgNzRkMTFkNDQyODk4NWNhODY0ZDA5Y2U4YTQzMTg2MGFmZTBiYjAzNCByZWxlYXNlMjUtbWFpbnQKKzU2MjA0IDc4MmY0YjNlNGRiMDhlMzYwZDJhMGMyZjllNWEzNjE3NzEwMTRlNTEgbGVnYWN5LXRydW5rCis1NjIwNSAyNjM4Yjk3NDkzNzE0N2I4ODE5YzZhNGNmOWZmNGIyYmJmMDA5MDMxIHJlbGVhc2UyNS1tYWludAorNTYyMDYgZWM0YjczY2IyNDQzOTQ3NjcxYjE3M2Q0OGI4NzcxYzIyOTYwMTI1MCByZWxlYXNlMjUtbWFpbnQKKzU2MjA3IGQ4OWQ5MDBjNWQ3ODJkNmYwNDFhMjIwMDgyYjFmMmZiZjIyNTE4ZWEgbGVnYWN5LXRydW5rCis1NjIwOCBiZjIyMmViZmYwZTU0NzQzYzVjNGI3YzY2YWNmYThmZGRiODU3NWYwIHB5M2stc3RydW5pCis1NjIwOSAwZWI4NDBmMmRhZmE5ZDlhMjE5ZThjNWEwZGJhMjA1NDg1OWQwZWRhIHB5M2stc3RydW5pCis1NjIxMCBhNjJlY2NiNTNmMzAxYmIzMWI0ZmJmOTZkOTNmODU4ODJiYWYyYWIwIHB5M2stc3RydW5pCis1NjIxMSBiZmY5ZWJhYmZjMTU1OTM5YzQ1MjdlYWQ4NjIxYTM1YmU2N2U4OTJjIHB5M2stc3RydW5pCis1NjIxMyAxNmU4M2JmODFkZTk4ODllYjhjZDAyYjE5MWVjOWRhMTIzOThiMmRmIHB5M2stc3RydW5pCis1NjIxNSBkZmI4ODU4YzA2NjQwZGRlNDZmZjJhZWY3ZjJmZTIzNDYxOWIwZmM0IHB5M2stc3RydW5pCis1NjIxNiA3ODIwMzI5OGI0MmI3OTQ0YjViYWNmOWVlYmFjYTZiYTFmMzE4ZmUxIHB5M2stc3RydW5pCis1NjIxNyAyOWJhNmMzOTkwOTAxZGU2OTA0ZGM1NzBjNjcyNjIxMGY1OGQwY2Y0IHB5M2stc3RydW5pCis1NjIxOCA2YjMwYmQxMzBkYzE3ZDhjMGU3ZDM0NDQwZDU5ZmRkYmYxZjlhMzg1IGNweV9tZXJnZQorNTYyMTkgZjRiOTkxOTU2NjJmZGViNWY4OTkxN2EyM2ZiNzI0YmI1MGVmYTE2YiBjcHlfbWVyZ2UKKzU2MjIwIDMzNTA2ZDEzZGQ3OTBkZGI4Yzk4NzQ1YjAzYjk0Y2FhMTc2Yjc5MTkgY3B5X21lcmdlCis1NjIyMSBkOWQ0ODJkMDM4ZDVkYjIxZDk4NTdmYzQ1ZDFlNjFiNmI1YjYxZGJiIGNweV9tZXJnZQorNTYyMjIgNDAyYTA2ZWNjNjEzMTA2ZjI5MTc0ODNkNGI1YTg5NzAxOGI5MDVmZiBjcHlfbWVyZ2UKKzU2MjI1IGYwOTc5YTg2NjcwZjQ3Yzc4ZDNkZTQxMWI0MzA5OTI4ODYyM2Q1MmMgcHkzay1zdHJ1bmkKKzU2MjI2IGUzODA0NzU1MDM4MzRiNjhjMmI0MWIzMDVkMWEyYzIwNzExMTQ1ZDkgcHkzay1zdHJ1bmkKKzU2MjMwIGFjZDFmNjQyNzA2ZjJjNzc3ODlhNDQ5MDFmOWE5MzY0ODYxZjU1NGUgcHkzay1zdHJ1bmkKKzU2MjMxIDlkMGQ4Y2FlMWNjNzNhZmIyMjU5ODhmN2JmZDk4M2YyZWFiYjYzY2MgcHkzay1zdHJ1bmkKKzU2MjMyIDNkYjAwODNmNjY4MzdkMDEyZDg2MGQ2MTI3Yzg0NThiMDYxZThiOGIgcHkzay1zdHJ1bmkKKzU2MjMzIDkxYWRlNjdhYjIzMGRjNTBjZmY4YTllZTk2ZDVkZmZmNzRmNzMxNDAgcHkzay1zdHJ1bmkKKzU2MjM0IGYwYTk2MTNmY2Q5MzNiYWNjNDU5NzUwYWE4YTEyY2U5MDgwNzdjM2UgcHkzay1zdHJ1bmkKKzU2MjM1IDhjZmRhZDIwNDY3NjM3OTcxZjhjZDU3N2JkNjY1ODAyNzI3N2NhMDIgcHkzay1zdHJ1bmkKKzU2MjM2IGRkYjkxOWRjYjQ4MjBmZjA1MjJiZmQyMDVlMTU1OWI5NTMwODc4NDQgcHkzay1zdHJ1bmkKKzU2MjM3IDhkNGI2OWUzMTU4MWJkNGQ4MTIyNmQ3MTdmMTRhODYyZTY4NGU0YWUgcHkzay1zdHJ1bmkKKzU2MjM4IGIyZGMzMTcxOGIwM2YyNjQwN2RmZDU3ZGY3MDI2ZjkyMjU2MTE0ZjEgcHkzay1zdHJ1bmkKKzU2MjM5IGY0YTFiNzZhNWE2M2QzYWE0ZDZhNDMzYTdjMzc4NTIxOTFiMWMxM2UgcHkzay1zdHJ1bmkKKzU2MjQwIDU2MjE1MDcxYzc0MmU3YjUwOWNjN2I0NmQxNjYyYmM5NjljNDE0ZTkgY3B5X21lcmdlCis1NjI0MyA5Zjk5ZWE0ZjgxZTkyZmM5MDU5NmI0MTk3YTcxY2NiODNjNTAyNWJhIHB5M2stc3RydW5pCis1NjI0NCAzNjQxYTIwNjMwZjNjOGM5MzhmMzY1MTM5Y2EyYTAwZGQ4MTgwOWNjIHB5M2stc3RydW5pCis1NjI0NSAwZTQ0NjA4MDNiNGE4MDkzNTQ3ZjI5ZDczNTFmMDA2NzlmNDk3OTRiIHB5M2stc3RydW5pCis1NjI1MCA4YjMxNjA3Y2FhMGNiMTg4OGY3N2ZkZWNiODczZGVlN2EzYmYwNDZlIHB5M2stc3RydW5pCis1NjI1MSA5YjM4NjYwNDIxZWU5YjlmZDQ1MTMwNzY1MGY1MzUzYjA5N2YxOWNhIHAzeWsKKzU2MjUyIGJmNWQwNGUwZGE0Yzc1MjI0ZDJjMzJhNmMyZTQwYjlmYjc3NDU1N2EgcHkzay1zdHJ1bmkKKzU2MjUzIDYyMjgwNjI5MDlmMzQ3ZGIwNzcyYTJlNDAwMTliNDBlNWY3NmVmY2IgcHkzay1zdHJ1bmkKKzU2MjU0IDc0N2IxNTE5YTM2Y2RmZTA2ZmVmN2NkMzk3MTM5ZmQxM2Y2ODljZDAgcHkzay1zdHJ1bmkKKzU2MjU1IDFkY2YxZjEwODYyYzAyMjA1YmQ1Y2Y0NTE2OWMwNTEyMmYzNzY0ZWQgcDN5aworNTYyNTYgZTliZmIyNGY5NmUwNjNkNTA0YTU3OGFlZDNhNGQyNTQwM2YwYzQ5ZSBwM3lrCis1NjI1NyA5MGZjZDA4MmRhMGRjYWNlODdjNWZjZDNkNDI3NmM1N2EzOWQ5MjQ3IHB5M2stc3RydW5pCis1NjI1OCA4MTkzMGVhYWU3MTU4ZmEzMDhiM2IzYTkxNzRhMTgyOGEyMWU0MmVlIHB5M2stc3RydW5pCis1NjI1OSBlODQwYTRjZmI0MWY2ZTg3NjEzMDE3MWNiMzdiOTk1ZmFjMjhhNzQyIHB5M2stc3RydW5pCis1NjI2MCA5NjNmNTBlZDJiNGY4YmM3MWI3OGI0NjcwNmI2ZWVjZDgzNDE2MDRiIHB5M2stc3RydW5pCis1NjI2MSBjNmE4YTdkZjM3ZWY2NWNkMzkwMDk5MDhjNDBkN2JmMDc2NGU1MTZkIHB5M2stc3RydW5pCis1NjI2MyA3OTA4MmNjMTRiZjE0NGIyNGEwOTk3YTZlN2JmZDFmZDU0MGUzZjQ4IHAzeWsKKzU2MjY0IDFhYzJjMWI4MDMyNDA1NGEwOGY0MjYzMWE3M2NiZWM3MmEyZjJiODUgcHkzay1zdHJ1bmkKKzU2MjY2IDA5MDU4OGExNzQ5MDMzYmQyZjUzMWQ1YzgyY2I3ODdkNTUwNGFhNWYgcHkzay1zdHJ1bmkKKzU2MjY3IDc1ZDNjYWE0NmE5MzZiMTBmNTMwOWYxMDhiMDZlYTA5ODA3Yzc4OGUgcDN5ay1ub3NsaWNlCis1NjI2OCBkZjQ3OTUwYzgzNzA4ZTliYzhjMTdjODZiNWMxZDk4NTAyOWNjYWQwIHB5M2stc3RydW5pCis1NjI2OSBiZDRlMzcyZjQ3OTg1NDA0Njc0ZDVlODg5ZTQ1ZTZlMTRiZmRiOGY5IHB5M2stc3RydW5pCis1NjI3MCBhMzU1MzU5ZTQ3YjQ1ODcxYTY2Y2ExNTZkMmExYzZkYzljODNmNWRhIHB5M2stc3RydW5pCis1NjI3MSA1YjM5MzFhZTI2MmZjN2RlMDc0ZGQyMGY3MTQ5ZjQ1ZjQxMTUyYjg2IHAzeWstbm9zbGljZQorNTYyNzIgYTgzOGI4YzY0MTAzNjNjOGZiNTQ0MDcyMWY2MjNjMzkzNjJhODE1MiBweTNrLXN0cnVuaQorNTYyNzMgNTE2ZGM3MjNjODllYmI2OTZjN2Q3ODUxNzBiNDk1MGQzYTNhYjAwYSBweTNrLXN0cnVuaQorNTYyNzQgM2JlZmI1YWRiMzRlYmU2Y2FlYmI2OTY2ZDc0Mjg4MWE4OTJlOTM2MSBwM3lrCis1NjI3OSBjMWE2MGI0YjgzZDM5YjI4ZDM1ZTQ3MjI3MzAwMmU2NzU1N2E1Y2FkIHB5M2stc3RydW5pCis1NjI4MCAwOWJmMzU3OTNiY2RkNTkzNjkzNjljZmI3ZjM5YWM1MmRlY2JhOWQ0IGxlZ2FjeS10cnVuaworNTYyODEgN2EyNGZlNzBjMTZkYmI0ZGY2MzAxYTY3MDQ2Y2IwYzQ5MDAyYmY5ZiByZWxlYXNlMjUtbWFpbnQKKzU2MjgyIDg1NGNjNGQ1YTMzZDhhZmRjN2NkYjNhZmRlMjZlNmM3NjEyZWJkNTMgcHkzay1zdHJ1bmkKKzU2MjgzIGJiYzA5NGMzMjhlZmQ5MWQ4ZTY4NDE0Zjg4MGVlZDZiOGM4YzBiMzUgcHkzay1zdHJ1bmkKKzU2Mjg0IGU1Y2NmZWIxMWNkNjcxMTk5MTQwYjQwMzE4OWMzYzNkM2M1NTFlMjggcHkzay1zdHJ1bmkKKzU2Mjg1IDliNzJmMDYzNjk4NjRhMDNiYTliZjJjZDBhZjBkOWVjMDA1ZjdiNmMgcHkzay1zdHJ1bmkKKzU2Mjg2IGQxYzdjMjU0MzkwM2I4ZDcyNWY4YWY0ODc1OTNiN2E0YTE4NzFhYjggcHkzay1zdHJ1bmkKKzU2Mjg3IDdjNmE3OTViNTI1YWNmNDhmMGMzYmU4YzE4ZmM0MDA5Y2M2OTM5MDEgcHkzay1zdHJ1bmkKKzU2Mjg4IGNhM2NmYjM0ZTNjMjYzNTk3NWQ1MWNlMTg4NmE4ZTM3MjcxMmU1YWYgcHkzay1zdHJ1bmkKKzU2Mjg5IDIzZjFkMmMzNmQxMmNmMzg1MmUzOGI1NDg5NzBiOWY5N2FmZmQyYzQgcDN5ay1ub3NsaWNlCis1NjI5MCBhNWMyMzQyMmFmNmM2OGJhNWZmNGU2Y2E0NDM1MGU4MzdhYjA1YTkwIHB5M2stc3RydW5pCis1NjI5MSBjYTA2NWI1MWE2MTY2ZDU3M2ZhMDE4N2NlYjc2MGYxMDQ3MWM2NjhhIHAzeWstbm9zbGljZQorNTYyOTIgZDVjZjE5MTY5OTA0NjI3M2I3MDI3YjExN2VjM2Y1ODg5NmMxNTU5YSBweTNrLXN0cnVuaQorNTYyOTMgMjU1YmQ0M2NhNzhmNzkzNzlmNjJhNDgwNGU1ZTM2YTM0NGRlNzdlNyBsZWdhY3ktdHJ1bmsKKzU2Mjk0IDIzYWM4ZDE0MGE4YTJlOTVjNDg3OWRkZGRkMzI2ZDdlNmZhOGYxNDYgcmVsZWFzZTI1LW1haW50Cis1NjI5NSAxOTZlNWM2MzIzYTM2YjhmZWIyOTk2MDUyM2UzYTlmNzlkYTU5Mjc3IHB5M2stc3RydW5pCis1NjI5NiA2MzE5YWRiMDA0MWQ2ZWVmZWMyMGJjYzYyZjNkMGU0NmZiYTBmYWM3IGxlZ2FjeS10cnVuaworNTYyOTcgOGI4MTU4MGFkMGMxMDYwNzRlYTY3ZDViM2Q3ODM4NjUyODIxOTNlMSByZWxlYXNlMjUtbWFpbnQKKzU2Mjk4IDg2ZDFkYmZjNTgzMzFiNjIwNTMzYmQ0MmRmMjA1NmZiOTRmNTMyNTAgbGVnYWN5LXRydW5rCis1NjI5OSBiNDNlNWYzMzQ4YWVhOTUyYWM0YzkyNGJmNWZiN2JiNWY3YWU1YjU3IHJlbGVhc2UyNS1tYWludAorNTYzMDAgMjkzYjgzZjlkYTlmZGRlNjc2ZGU5NGFhNjVkZDQzNjRmOTQ5M2U3NCBwM3lrLW5vc2xpY2UKKzU2MzAxIDdjMzc4NGJiZmMwOWFlOGJiMDcxM2I4YzIyM2I5ZDM0ODQyYjE5MTQgcHkzay1zdHJ1bmkKKzU2MzAyIDI0OGEyMDY5OTBhZTA5YjliZWQxZDlkOGYzNzQ4MzIzYjJmNTEwZmUgbGVnYWN5LXRydW5rCis1NjMwMyAxMGU5YzkwZWFmMDNlNmRmYzkzNzhjN2IyY2I3OGVmMTg2YTQ2OTBmIHJlbGVhc2UyNS1tYWludAorNTYzMDQgMmMzM2RmMDljMWM3MWY1OGQyMTM2YjcyMTg2MjQwNGEyNWQ3NjRiYSBsZWdhY3ktdHJ1bmsKKzU2MzA1IGMyNTVjMTBkYWM2YTY5MWViNjU0YzI0ZGYyNWZlMjExNjYwMmYxYjYgcHkzay1zdHJ1bmkKKzU2MzA2IDRjNDljZDY1YjVmMTcwNTJjY2E5MzI0ZWM1MDk3MjUwNDg2NzQzMmQgbGVnYWN5LXRydW5rCis1NjMwNyAyYWYzZjA2N2E0MzEwMmRjYjNhNTUwNzA2YjY3ZDYxZjE2ZTAzZTI5IHJlbGVhc2UyNS1tYWludAorNTYzMDggMzQzYjYwYjYwNGJkOTNkMGU2NjE4MGFlZmU3ZTA5NzU4Y2JmMzEzYiBsZWdhY3ktdHJ1bmsKKzU2MzA5IDcyYzU4MzM4YjIyYjYzOWI4OTk2ZmY0YzU5MGQ5Njc5NTU5YWIxOWEgcHkzay1zdHJ1bmkKKzU2MzEwIGVjNzQwODRhOGNiYTBhMDdhMTAxYTc2ZTY3ODRmN2ZmODUwN2Q0MDMgcHkzay1zdHJ1bmkKKzU2MzExIDZjYjllZmI1Y2JlNWJlODc2ODcyMzU1ZjJhOWU4MDkzNGYzMTk5NWQgcHkzay1zdHJ1bmkKKzU2MzEyIDNlMDZmMmI5MDEwMjY0MTJkZmZmODcwOGE2ZjRmZjc4ZTA5MTlhYzEgcHkzay1zdHJ1bmkKKzU2MzEzIDNmZDM1NTNlMjU4ODU0ZWEzODM3OWE3YmMxZDA2NGFjZmRlODdmNDIgcHkzay1zdHJ1bmkKKzU2MzE0IDU4NjYxYTgyMzM4ZTgyY2YxMDJlMzE2ZTAxNzhlYjdjYjIyYjMwOTMgcHkzay1zdHJ1bmkKKzU2MzE1IGU3MTVlMjA4MTYzNzFhMTQ3ZWU1ZmRiMGJjYTE3MTJjOGIwMGJhODcgcHkzay1zdHJ1bmkKKzU2MzE2IDBiODk3NzQxMWIwN2I0ZTY4ODI1ODc2MDE4MjY5NjBiOTUyODcyOWMgcHkzay1zdHJ1bmkKKzU2MzE3IDg0YTIxNzU3OWFlNTlkNTM4NDhjZGJlMTlkMWUwZmI1YTdhNDg5ZWUgcHkzay1zdHJ1bmkKKzU2MzE4IDg0MjI5YTkwNjZlMmY4NjYwMGI1MmE0Y2NiYTJkY2QwNDY2ZDkyODcgcHkzay1zdHJ1bmkKKzU2MzE5IDA2ODEyMzMzNDRkOTNmZDBkZTllNWUzNDYxYzgxNjA1NGUxMTdiNjcgcHkzay1zdHJ1bmkKKzU2MzIyIGI0NWMwZjQ0NDgxMzFkY2NiMjNkNTgxN2ZlMWY0ZTlkMTk1ZTYyZTIgcDN5aworNTYzMjMgMmFjYzYzNTlkMDVkNDA1NWQ2MmU2ZDA4M2VmOWQzNWIyNmRjMTg0MSBwM3lrCis1NjMyNCA0OGM1YTg0OWEwYzJmY2VmYTVhN2RlMzEwYTY2ODI3MTY5NzdiOTg3IHB5M2stc3RydW5pCis1NjMyNSA3Mzg0NmY5NjI5YzU2N2ViYWZhMGViMDBhYjFjYmQwYzk3Yjk4MDIwIHB5M2stc3RydW5pCis1NjMyNiA0ODRhMDA5NmJhZTkwZjY2MTlhZmM2OTE2YjNmZjlmZjA2MmZiNWUyIHB5M2stc3RydW5pCis1NjMyNyAwNDk0YWU3MzUwNTgyYjU4MThkMDk2MWE1ZmMwNTRlOGE4Nzg4MmJhIHAzeWsKKzU2MzI4IGZiYWUwMTJmZjI5NWRjYWY3YmI0MDA0YzVkNzUzNWMzNGFiODM5ZGEgcHkzay1zdHJ1bmkKKzU2MzI5IDc2OWU3MDc4YTJhYTdmMjRkOWU5OGY0NDQwM2RkM2Y5YTAwZWJkY2UgcHkzay1zdHJ1bmkKKzU2MzMwIDdjYzg0OTZmMjM0ODBjMDZiZGYzYThjYjI0MDAxODcxZDZhODA2NmYgcHkzay1zdHJ1bmkKKzU2MzMxIDJmZDE0Njk3MjNhMDcwMmViMDllZDY1NjFmNjcwMDNiYjliOWE4M2YgcHkzay1zdHJ1bmkKKzU2MzMyIGFmZTg3MTU0N2IxYTM5MGYyMmIyYTdmYzExMzI0ODIyYThlZTIxOWMgcHkzay1zdHJ1bmkKKzU2MzMzIDEwZGU2YTkxZGE0ZGExOTBjYWJmNTc0ODNjNWMwMzYxMmQ2NTU4NmUgcHkzay1zdHJ1bmkKKzU2MzM0IDZhMDk3NzcyZWE4NmI1YTQwMTc1ODc4MTgxNWZlMmFiZjNjYjcyYmMgcHkzay1zdHJ1bmkKKzU2MzM1IDZlNjVmMDhmMTI3NjI4NjIxY2UxNmI2ODlkYWViODliZWFmZDRiZTUgcHkzay1zdHJ1bmkKKzU2MzM2IDFjMzc5MGM4MzFmYzE2NTU2YWYxMGU3YmFjYTc4ZGMzNjRiNzU3MGIgcHkzay1zdHJ1bmkKKzU2MzM3IDhlYWYwM2ZjM2YxMjk1ZDYxNDJjOGEwMjRmMTBiODE1ZTU5NDEyODkgcHkzay1zdHJ1bmkKKzU2MzM4IDIyZDY1ODRiODcxMjZjOGZiODk5MzgzODM1MGI5MGIwYzk5ZWJiZDIgcHkzay1zdHJ1bmkKKzU2MzM5IDVkMTZmNDc4NDY1YTUzNTU4ZjI2ZGQwMjZmZjlkNDY3MGNiYWJkZDAgcDN5aworNTYzNDAgMGMwZDc1MGVlNzVlNGMyNTIxZjZhOGQzNTY2NjNlODc0ZWExNGFlNSBsZWdhY3ktdHJ1bmsKKzU2MzQxIDdiYzQ3MjNmNTYyZmFjZTExZGM5NzA3YmU5ODQ3ZjcyMjQ5ZGIyMzIgcHkzay1zdHJ1bmkKKzU2MzQyIDA5ODAwMzRhZGFhNzIyYjQ2NDg1MzNkNjgzZWQ4M2NmMTNmNGY3Y2UgcHkzay1zdHJ1bmkKKzU2MzQzIDY5M2JlMjdmNjI2ZmJiYTk2Y2ExODJmNTUzNmQ2ZTMzYjQ2MTM2ZjUgcHkzay1zdHJ1bmkKKzU2MzQ0IDE3YmIzOTgwNDgzZWNmYmQyMDYxY2FmZDE2M2QxNDBhZmEzNzU0ZDUgcHkzay1zdHJ1bmkKKzU2MzQ1IDEwODlhNGY1N2QyMDk1YjlmYmQ1Y2EzZGExMTUyY2E3MDg4NzE0MjQgbGVnYWN5LXRydW5rCis1NjM0NiBjMjgwNjQ3YzMzMGNmMmFhZDkyNDc2Mzc0NjVkNGY0YzZhZmE2NWQ4IHB5M2stc3RydW5pCis1NjM0NyA3YzFjOTAyZDcwMDAzMTJkMWQ4OTA0MjQ5YzNkZTU1Zjc2ZTQ4Mjc4IHB5M2stc3RydW5pCis1NjM0OCA3NjAyMWJiYjg5YzczODM3NmNiMzlhYTdkNzljNDdhMzFjODk4NmU4IGxlZ2FjeS10cnVuaworNTYzNDkgY2I4NjVlMzk5ZTg0YzY1YTk4MTJlMzQ4YjY3ZmFiZGIzODEwY2IzOCBsZWdhY3ktdHJ1bmsKKzU2MzUwIGFlYWQxMzZjYTQ5ZTI5OTU3ODk3MWI5ZjIyNzBiNDcxMzZmZDk0MWEgbGVnYWN5LXRydW5rCis1NjM1MSAwZDYyY2RkMzU1N2Q1YWRmODZmNzQxNTk4NjEwNWZmMGQ4YWVjYWVkIHJlbGVhc2UyNS1tYWludAorNTYzNTIgYjZlYWE2OTE2ODg0Y2RjZjFmODJmNDNmOGUzYzRiN2I0OWQzNzU1YSBsZWdhY3ktdHJ1bmsKKzU2MzUzIGYzMzY1OGRhMDYzNzU0NjJiNzBiNjdmMGU5NWQ3ZjVlZDllODYwNjMgcmVsZWFzZTI1LW1haW50Cis1NjM1NCAzZjg3OWQ3MjZkMTg5ODE0YzAxNDgyNGMyYWE0YzhjZjY0MzNhNzg0IHJlbGVhc2UyNS1tYWludAorNTYzNTUgZjhjNzVlODQ5OTU2MDk0NjUwNjY3ZDE4MDM4ODg5MWM4ZTE4OWQ3NiBsZWdhY3ktdHJ1bmsKKzU2MzU2IGYwMWFhM2QxOGM5ZDNhYzAwNmQxM2ViNmExMmZkZmIxYmQwMWU3MTEgcHkzay1zdHJ1bmkKKzU2MzU3IDRjZjA0NTk0MTA4NTQ1MGQyMTg4NjYwMjlmZTM3NGRhY2YxMGNkN2IgbGVnYWN5LXRydW5rCis1NjM1OCA1OTllYTllNWM2YzVkOGU5YTM2NTg2ZGNhOWZkYTE5OThkMjExYTFiIHJlbGVhc2UyNS1tYWludAorNTYzNTkgZDhiZjQyNjcyMzMwNTZkNWEzN2Y1ODI4YzNhOWQxMjY5YWNhYzg1ZiByZWxlYXNlMjUtbWFpbnQKKzU2MzYwIGMyOWIwZGJkYTNmNmFkZjhhMjI0YzI4YjU3ZTRiMmRhMDk0ZjJkZjEgbGVnYWN5LXRydW5rCis1NjM2MSAwYmZmNGI2YjkyYmUyYjczZmZhMzljZGQ2NzczOTUxNDE0NzQ2NjRjIHAzeWsKKzU2MzYyIDYxNDEyZTI1ZTYxZTMwZDFjYWRhNDczYzQyZjYzZjJkMDIwZTNlODQgcDN5aworNTYzNjMgMjAyYzM3ODM1NjI4YjkxNWFkNGVhZGJlMTQzNjExMWIwZTgwZTczZCByZWxlYXNlMjUtbWFpbnQKKzU2MzY0IDhjYzY1MDdiMDYyNmJiNGUxMGQzODliODkyYjc5NTU3MTBmMmUzYzkgbGVnYWN5LXRydW5rCis1NjM2NSBkYTJmODk0OGNjMThkMjA4YWE4MTRkOWRjZjc1NzY2MmIxNzJiODAxIHJlbGVhc2UyNS1tYWludAorNTYzNjYgNjk3YzBhNzhkOGM5MDA1ZDlkZjAxZDVlYmQxY2U4YTgwYWJlMzExZiBsZWdhY3ktdHJ1bmsKKzU2MzY3IDg1ZDRhMDJkMGFiYjBjNjc0MTdhNDNlZmEzMTU1M2MyOTc5YjJjNjkgcmVsZWFzZTI1LW1haW50Cis1NjM3NSBjZjg5MGU0MWFjMTM1MWY1NDNhNGI0OTBhZjQwNmFhZmRjZWEyNDEyIHB5M2stc3RydW5pCis1NjM3NiA1MDY2YjAwMjViZjA4NjUwMWM5YWMxNGZhOWNkYjE0YWI3ODRkMzVlIHAzeWsKKzU2Mzc3IGE1YTNkZjQ5YWNmMzAyOWU0MmJmM2ZlNWQ0MGI2MDYzNTRkMzFlZTcgcDN5aworNTYzNzggMmQyMjUwNDI4MzA1NzM4OTU2MThlZjc4MTQ4ZjJhODI1NDAwZTk0MSBjcHlfbWVyZ2UKKzU2Mzc5IDA5Y2QzZTUwMzIzNWU2NWM2ZWExZjkzZTg4N2I4NmNjNzJkZTg0ODYgY3B5X21lcmdlCis1NjM4MCBhNWU4ZGQ1OTk2MGRkZDk5ZDE1ZTFkMDhiNDE1NjMyNTZmYzVjMTZmIGxlZ2FjeS10cnVuaworNTYzODEgNDVjN2Q0NzM1ZGEzNmMyM2ZmMTQ5YmRhOTk2ZjE5ODQ1ZDc2ZDRlOSByZWxlYXNlMjUtbWFpbnQKKzU2MzgyIDhhZjA3ZTExZjE5N2UyNjEzNGRhMWFkZDNkYjVlYjZhNmFjMjg1ZTMgbGVnYWN5LXRydW5rCis1NjM4MyBkYWFlMjdmYmI4MTY2ZWRlMWQ4ZjU3ZDFlZGI4OGQ4OGJjNDc4MThkIHJlbGVhc2UyNS1tYWludAorNTYzOTIgYzIzZDhjMjdkYzkyMjIzODUwNzBiNzEwNTM1M2NmNTNmNjM1ODZhZSBsZWdhY3ktdHJ1bmsKKzU2Mzk1IDE4ZTVhZTkxYmQyOTc5ZTAyZDI2MTlkMjMyOGJhYmUxYzJiYjg3NzEgcHkzay1zdHJ1bmkKKzU2Mzk2IGViZTk2MGQxZDYyN2VlZDZjZmNiOTMyODdiZTEzMGFiYTljMWJjODIgcHkzay1zdHJ1bmkKKzU2Mzk3IGY3MTViYWNkZmQwMGYzM2JhY2Q1ZDFmNjRlYzMzMmUyNmFmNzcyNjEgcHkzay1zdHJ1bmkKKzU2Mzk4IDE5MTk5OWJlNmNmNThlZmE2ODIyZGQwOWNiZjAzYjM2NTJjZmU1MzkgcHkzay1zdHJ1bmkKKzU2Mzk5IDVhZTc3NGNjMjZlYmRkNzA3Njk3MDBjOWY5NjczNzlmNzViNmIwNTQgbGVnYWN5LXRydW5rCis1NjQwMCBkMDYyZjY3YzMyNjA0ZDQyMGU0ZDNiZjM1NjNlYzYzZTE5ZTY0ZDgyIHB5M2stc3RydW5pCis1NjQwMSBmNWI1ZGFjYjlhZTI5YmIxMmI0NzE5NjIyYzY5ZDkwYjQyNTk4NWJiIHB5M2stc3RydW5pCis1NjQwMiAzZjI0MjA5ZjI1MWUzYWQxMTNjNDY0MTY4MDdhYTY3MGZkNDkxNWEzIHB5M2stc3RydW5pCis1NjQwMyAzNzcyMTAzMjAwZWM4OWJjODhiYjNiMmYxYjY2N2ZjZTUwZWI2OTkzIHB5M2stc3RydW5pCis1NjQwNCA4NDc3ZmMzODhlZWFlZTNlOGYyNWE1MTFkYWJhODgzZTRiZjE1YmUzIHB5M2stc3RydW5pCis1NjQwNSBhOGQ0MzA4NWE4NTcwYjBjZTMzMWE2MDk1NzhmMjVkYjAyYzA4OTJjIHB5M2stc3RydW5pCis1NjQwNiA0NGJjNDlhMDdlNTI0OTU4ZTgyYThiOTk0NzhjNDE5YmY2MzY5OGVlIHB5M2stc3RydW5pCis1NjQwNyA1MzM3YzNhNGEyNzNkOTA3N2Q4YmU1MzcwNjVmZWE5YmM0NzAyM2Q4IHB5M2stc3RydW5pCis1NjQwOCBmNTFkM2JlNDM1ZGY2OGUzZDFkNTI1YjE0NjcyYzA1ODVmNWE2NmViIHB5M2stc3RydW5pCis1NjQwOSAwNThhYmY4NzhhZDRkZjk4ZmJjMzMwNmY3ZWVjYjkyMjdkNmJiNDA0IHB5M2stc3RydW5pCis1NjQxMCAzYmVhOGZhYzNhN2NmNmQ0M2Q2ZjQ0ZGJhYjlkMDkwZTM4ZDc3YWY4IHB5M2stc3RydW5pCis1NjQxMSBjNGFiM2VmNjE5NGY3MzcyMTQ3NzZlOWIxYjRhZDM1MTEzMjk2NjRkIHB5M2stc3RydW5pCis1NjQxMiBmNjU5MjE0NmM3ZmE2OGY3YTE1OTQxNzdmNDNiYjJhNDkzNWI0YmVkIGxlZ2FjeS10cnVuaworNTY0MTMgNTUwMTQxZmQ2N2MyM2RlODk1MzViNWQyOTIyNDBkNDFhNTUyOTk5ZiBwM3lrCis1NjQxNCBjOGU2MjQ1NzlhNGQ2M2U2YmQ2ZWVkMzVlOWUyNGY4ODgwZmY4ZmFkIGNweV9tZXJnZQorNTY0MTUgZjk0MGU0NzBlNTUwMjZlMTJkMzRkNzE0MzQwMGZmMjA3N2I0MzVmNCBweTNrLXN0cnVuaQorNTY0MTYgNjdiMDFiMDVhODFiNjIzNDg3ZmEyZjQ5ZmEwNWQ2MmU5YmJjNzdmOCBweTNrLXN0cnVuaQorNTY0MTcgYTMwOWNkYjdjYjMzMGQxMGFmMWY4YjkzZGY4YjkwNDNiMTk4ZDAyZCBweTNrLXN0cnVuaQorNTY0MTggN2QxNmI0MmZjZGJkZTJjYzUxM2ZjZGI0Mjc3NTZiYzlmMGNhZDM1MSBweTNrLXN0cnVuaQorNTY0MzggZDA3MTk0MDZiMmM2NTllN2RiNDM4OTYyYjZiNWJjNTRjNjBiYWU2YiBweTNrLXN0cnVuaQorNTY0MzkgN2NlZDNlODUxOWYxNDE4ODkxZDMwMzc3N2Y1ZDg1ZjE0OGY3MTZhZSBsZWdhY3ktdHJ1bmsKKzU2NDQwIDM1ZWI3MjIxNTYzMGFmMWFmZTRmYzFhMGFjMzk4Mzc1NTA0ZmE0ZGUgcHkzay1zdHJ1bmkKKzU2NDQxIDY3NzVlZTZkODlkM2Y5ZmRiMjk5N2ZhY2UxYzlmMmY0MjU1MmQ0ZjEgbGVnYWN5LXRydW5rCis1NjQ0MiAxNDk4MTViYTI4NGNjZGZkM2Q4YmIxY2NmNWM0MTZkYWU5YjgyYmIxIHAzeWsKKzU2NDQzIGJkNmFjZmRiNDdkMjVhNmNmZWMxZmFiMGEzZDkwYzE4ODI4NTMzNTAgcHkzay1zdHJ1bmkKKzU2NDQ0IDRjNjU4Mzc3YjkwODQ3NTQ5MTZlMGFmMTg5M2M0MTgzOTgyZDQzNzMgbGVnYWN5LXRydW5rCis1NjQ0NSBjMWU5ZWVlZGEzNGY5YmYyODNhOGZiNWEwYTYwMGEwNjM0NzQwMmI3IGNweV9tZXJnZQorNTY0NDYgMWFlNWYxMDJmZDNkNmUyNTE1ZmVmODU4ZGVmZWEwZDI4ODdlZDY3NiBweTNrLXN0cnVuaQorNTY0NDcgMDA3ZWQ2Y2RkMWY3YmM3NGJlOGQ5MzExZDIxOTUwMmRkZjI2NjllYSBweTNrLXN0cnVuaQorNTY0NDggMDg2NDJiZDFiZTE4NGFlMTJjMmUzN2ZkNjc4NmZjY2FhODNhNTU5NyBweTNrLXN0cnVuaQorNTY0NDkgZGZhY2I1MWQxMzg2MTYxMjE3OTVjMTMxMjgzODIwOWY1NmM3N2FmOSBweTNrLXN0cnVuaQorNTY0NTAgYmRjNjdkYzFhOTVlMmU0MDM0N2U5Yzg1ZGMwNTliMTlhYzk0NjhiMSBjcHlfbWVyZ2UKKzU2NDUxIGQwMWFlNjk4Y2I1ODM4Zjc1Y2I1MDc4YjZjYmQ2NGFlMzU2YzgzMzkgbGVnYWN5LXRydW5rCis1NjQ1MiAyOGFmOTYxMDM4ZGU4MjZhNTA3ZDY4NWFmOGE2Y2QyMTM3MWI4NDczIHJlbGVhc2UyNS1tYWludAorNTY0NTQgMzc5MDJlYTQxYTE3YjQzMmFkYjYwM2IwYTI0ZWJhZDU3ZjUxZjA5ZiBwM3lrCis1NjQ1NSA3Zjc2MGRiNGU3NDZiYWVmMThiMzU0ZGYwOTg1M2U2NTBmOWM1Nzg3IHAzeWsKKzU2NDU2IGMwMmEzMzc4OGE4ZjVlYmQzMjJmOTZlNWFjNWIzMzk2MzRmOTg4NWYgbGVnYWN5LXRydW5rCis1NjQ1NyAzZmI1OTY2NmIyODEwYTQxZDAyZTE2NjQ2Njk4NDgxM2NkNjRkYzNjIHAzeWsKKzU2NDYwIDQ5OTlhMDk0NzM0MzRhY2Q0M2U0NDBkOTZiMmM4ODZiMWFkOTE1ZjcgcHkzay1zdHJ1bmkKKzU2NDYxIGFjMzZmMDZhNjEyYjgwZTBiMTE0NWEzNzkyZTliNGVmZTU3NmE4MmYgcHkzay1zdHJ1bmkKKzU2NDYyIDYzOTU1ZTNjZjk5M2I2MTk1MzIxMGM4NDBhMWUxMTM3YzI2OWM5NDkgcHkzay1zdHJ1bmkKKzU2NDYzIDhjNGEzMzA3OWNhNjAwZDg3MmI2NDYyNzljZjc5MDRjODk2ZWFhM2IgbGVnYWN5LXRydW5rCis1NjQ2NCAzZTMzMjE1YzY2ZWRlOGZmMmM1Njc0YjdhN2IxYWNkMTA2MWYzNjNkIHB5M2stc3RydW5pCis1NjQ2NSAxMTYyNTFhZGE5MDU4ZmU2MDdlOGM4MjI1MzU3YWYzMzgwMTNiNzg0IHB5M2stc3RydW5pCis1NjQ2NiA2MGI3MThiNmZjOWIxNjMzY2MyNGE5ZGRmN2YyNTYzNjNiN2U3OGM4IHAzeWsKKzU2NDY3IDRiYmJlMGM1NWZhMjE1OGZlMjE2NTM3YzhmY2RmYjNlYmFkNzQyYjkgcHkzay1zdHJ1bmkKKzU2NDY4IGM0NmYwYWZiNDAzYzQwN2ViOTllZTg0MmRlMjIwNTdlYTM1YmM1MmYgcHkzay1zdHJ1bmkKKzU2NDY5IDk2NGM0YmY4NmQ5YTY5Njc1N2VlMGQyMzQ0YmI2Mzk0YzgyMDhhMTMgcHkzay1zdHJ1bmkKKzU2NDcwIGEyYzVjZWJkMGRjNTFmMTViN2I5OTVhYmU5MGY1ZmRlYmJmZDE1OTggcHkzay1zdHJ1bmkKKzU2NDcxIDU3YzYyYmQzNmIxOWJiODFiZGM5NDE3MjdhMWU5YTM1MThiNjA5NTggcHkzay1zdHJ1bmkKKzU2NDcyIDVhOWUzZDM3ZjY2MWYxM2VmZGUxNzFjYmFlYTcxODQwMjdlMjgzMWMgcHkzay1zdHJ1bmkKKzU2NDczIDMzM2ZmMDU4NDkzOGM1NjMzOWRlNzU2NWIzMzVjYjY3OTY4MmJiNDkgcHkzay1zdHJ1bmkKKzU2NDc0IDdhMGQxYmFhNGE1M2RlZDQyNDUxYjE4MDkyZDZhYjU0OTU5MTA2MmQgcHkzay1zdHJ1bmkKKzU2NDc1IDJiZTI1MWRkMmNiZGYxNjEzM2M0YjU0OTEwMjIxMWEyYjc5YjhkYWYgcHkzay1zdHJ1bmkKKzU2NDc2IDY2MjBhNTEwZTlhOTUxMTBkYjEzOTEyZDY2NTUxOGFkZTdkZDdkOWQgbGVnYWN5LXRydW5rCis1NjQ3NyBlMzcxNzFhNGIxNDc5NTlmNmYyM2VjMmEwOGYyMmQ0ZGI2NzMyN2Q5IHAzeWsKKzU2NDc4IGZkMzQ1OGE5MmE4OTQwZGJkN2E2NzUxMWEyM2ZmYWQ5OGU3N2E5NzQgcDN5aworNTY0NzkgNGU4OTg3MmYwODJlMDZiOGZlODkyNjA1YTdlNjIwYzM2MTI4OWM4ZiBwM3lrCis1NjQ4MCA1MzFlMTgxZjViNTMwZjllNDUyODYwNTQwNDliMjY0NGRlNzM3ZTIyIHAzeWsKKzU2NDgyIDEyZGY5MDYwMDNlYTkyMjZmMjJjZTMxOGRmYjFkOTBmM2I5OTA0YzMgcDN5aworNTY0ODMgZTcwY2RjZTBlOGIyOTU1YzQ0MDA4YTQ0OGYwOTM1YjlkZTdkMTg1ZSBweTNrLXN0cnVuaQorNTY0ODQgYzhiODUwYjVhMDY2NjkxZmE4OGNmZTUyZWQzNWU4YjgyYTM5OWVlOCBweTNrLXN0cnVuaQorNTY0ODUgMDNhYjhjOGJiMGFlMTg0Y2U4YzgyZjA2ZTU4MWRlYzQxZmRkYzliMyBsZWdhY3ktdHJ1bmsKKzU2NDg2IDIzYmZkYjc1NzFhN2RhZDFjZTg1YWE2NWVlYjE2NDVhYzhiZTgyMzYgcDN5aworNTY0ODcgODhlZTBhNTU2MmVlMjIxOTBkZjcxZjAwMThjZmU1ODlkMzdlMTkyMiBwM3lrCis1NjQ4OCAzOGQxYmViNjUwYmFjZmUyYmRlYzMyNjk4YTBhYjhkMjU5YjI0YmZhIGxlZ2FjeS10cnVuaworNTY0ODkgODExYzlhYTZlZDg4MmU0MDU3NTFkYzZmNGU5NWI3MTk0ZjViMTAzZiBwM3lrCis1NjQ5MCAyNzg2MzhjZGM2NDdhYTI4NGVhMGZhZjNjZmJkYmJiMGNmNWNjNmUyIHAzeWsKKzU2NDkxIDYxODU5YTM5YTg3ZTcyNjQ1MWI3MTg1NGE3ZTAxYzY3ZjM4NDVmZmEgcDN5aworNTY0OTIgN2JmZTlhMTA3YjI5Nzc3MjAzZDY0MjIwNjY3NzA2ZTc2N2RiYWE2NCBweTNrLXN0cnVuaQorNTY0OTMgYzE1MmM3ZmExN2M0ZDAyODczYzdmMDY2NGZjNjU0NDJjMTViN2Q0YyBweTNrLXN0cnVuaQorNTY0OTQgZjRhZjZmNGI1MWNjMzYxOGZmYjMzOGQxMmU5NTcwNmVmMTk4ZmI3MSBweTNrLXN0cnVuaQorNTY0OTUgMTQ1NzQxMDE2ODQ4ODJjN2JkZGY1MDE1OGYyMWQzMWQ4YWNiNzYwZCBweTNrLXN0cnVuaQorNTY0OTYgNjBjNzY3MThlMDRhMDA1ZmM3NzZmMDc3YzFjZWM0YzhkZmJhN2M0OSBweTNrLXN0cnVuaQorNTY0OTcgZjMyZmJmOWZhNjBiMWM4OTQwOGRjNWRiMDgxMGY2NjQzNjY5ODA0YSBwM3lrCis1NjQ5OCA0MDk5OGYxOGM1ZGNjYmMzMDE3ZTBiYTI1NTNhYzVjZjg5ZDgxYzM5IHB5M2stc3RydW5pCis1NjQ5OSA4MzY3MGMyZjFlYTg0YzcxMWIxZDc5MDA4M2UyYzRhZTQ4NzNiNjczIHB5M2stc3RydW5pCis1NjUwMCA5Y2U1NGNmMGRiZTJhNjlkZGFmZmRmZjBiOGVkNzQ0YjM4MjNkMzQwIHB5M2stc3RydW5pCis1NjUwMSAzNmI2NzAzMGNhNDcyZGEzNGJhMzY0ZmNlOTNhZTQxNWE0MjZiNGQ3IHAzeWsKKzU2NTAyIGI1OTBmNGEwNmJmODY0N2NhNjI3ZDg0MTc3NTA2Njg1ZGJmZDM4MTcgcHkzay1zdHJ1bmkKKzU2NTAzIDVlNjZiYjY5YzFlM2U0ODZlN2JmNzQ1ZGM3NDZkZDBhYTc1MmNiZDYgcHkzay1zdHJ1bmkKKzU2NTA0IGJmZTA0MWFmYWZlNjkwYzBlYjY4NTA1NDZhMjhkY2U0M2IzZThiN2QgcHkzay1zdHJ1bmkKKzU2NTA5IDNmZTY0M2Q2MmVjYzQ1ZWIwNGMwNDY4M2VhMDNhODI2NTM5YzRiNTcgbGVnYWN5LXRydW5rCis1NjUxMCBmZDY3MDUzOWMwODVkNTYwMjI2YjllM2NmY2RlOTVlYThlY2ZiNzNjIHB5M2stc3RydW5pCis1NjUxMiBlNTBlMzNiN2UwZTBjY2I3MTE0MDUyODY4YjBjZWEzZDU0NDRiYzVjIHB5M2stc3RydW5pCis1NjUxMyA2NDA5NTJkZjQ0MzE0YjRiYTBkYWI1OWVkNzUyZTY4ZGM3YzJkYTE5IHB5M2stc3RydW5pCis1NjUxNCA5NTllNTJhZTI2MjdhMDg5YWQ1OGIwZWU4YzViNTNkMWQyNDUwZGI3IHB5M2stc3RydW5pCis1NjUxNSAzNmZiY2RhODBiMWM0NTdmYjRlZDlhMjA2M2RhOTg5Y2JlZGMxM2I4IHB5M2stc3RydW5pCis1NjUxNiA1YjljOGRjZTRlZGQ3ZThjZDZiZTFjMzVhYWY5ZTJlNzc4N2Y3ZTkzIHB5M2stc3RydW5pCis1NjUxOSBkOTRkNWI0MTZhOTQ3YWY0Zjg1ZTgyM2YxZDJmYzZkOTI5MTMzNDAxIGxlZ2FjeS10cnVuaworNTY1MjAgYmM4ZTVlMTU3MWFjY2YwZWVlNzhkZTRkZWNhY2FmMzZkMzcyZDQ2YyBsZWdhY3ktdHJ1bmsKKzU2NTIzIDMwZTExMjM1MGUyMDNhMzY5ZjRjZDU4NDFlNDgwZThlMDdmOTk2MDUgbGVnYWN5LXRydW5rCis1NjUyOSA3NDZhNTAyMWUxYWE4NzExZTViNDg5ODI0YTU3Njc4NDBiZDIxZjU3IHB5M2stc3RydW5pCis1NjUzMyAwZTJmYTRjNmE0MjgzNTUzNzIyMGI3ZjlkNTMxOGFjMTViZGE4YTgyIGxlZ2FjeS10cnVuaworNTY1MzYgMTEzNzcyNDkzMGE3MmIzODhkNGU5NDc0YmY1ZDA0ODczMTE0YTQ2NSBwM3lrCis1NjUzNyBkYTYyODM2ZGQ5OWY3NzNkNjRhMWY4MWFhOTAwNDQ4NWVlNzM1YzViIHAzeWsKKzU2NTM4IDJmZGE1NTNhYzZlMTYzZGIxNGYyODhkMzM4YmE1N2VjNzQzYzZiZTYgbGVnYWN5LXRydW5rCis1NjUzOSBlOTg5MWQ3ODdlZGQ4MjY5MmQxOGI4NDNmMjNiMWEwY2NiMjdmYWZmIGxlZ2FjeS10cnVuaworNTY1NDIgMTIwNWQzMDM0NjFjMzIzYjk4MTQ1NGVhZjYzZjhlMjliMzk4Y2FmMyByZWxlYXNlMjUtbWFpbnQKKzU2NTQzIDI3ODY0YTE4MWYwMWIyMzkyY2M5Zjg4OWFmMTE0ZjNhNDk4Mjg3YzMgbGVnYWN5LXRydW5rCis1NjU0NiA3OTVhNWRjZGM5ODIwMzAzMmU1MjIyNzdiMTE5YTFkODA1Y2EyZmNmIHB5M2stc3RydW5pCis1NjU0NyBkNDhhY2IyODQ2NjRjNzQ0YjE4ZjBmNzU5NzJlZGU2OTA1OTRiMWIyIHB5M2stYnVmZmVyCis1NjU0OCA1ZjNmNTRjMGM2YzhlYjIwZDZiODEzYmZhZjU2MmFiYzcxNDkxMmM1IHB5M2stc3RydW5pCis1NjU0OSA4ZmY4OTk2NDE1NjM1MmY3N2FhZmU0ZDkyMGJkNjA0MWQ3YTczM2UxIHB5M2stc3RydW5pCis1NjU1MSA2ZmE3ZDhmYjA3NzMxOGY4Y2ZhZWJmYzg5ZGIyODQ1ZjRlYmY1ZjRmIGxlZ2FjeS10cnVuaworNTY1NTIgNDM0YWU2NmI3ZGUwNGU5YmNjYWY5Nzc4MTdjOGNmMzI2ZjBlOWY0OSByZWxlYXNlMjUtbWFpbnQKKzU2NTUzIDY0OTAzZmY3NmVkZTFhMDk2OWU4YjE2NmQ4MWE1NGExNmU0NTRlMDcgbGVnYWN5LXRydW5rCis1NjU1NCA1N2ZhY2YzNGE3MTg2MTBjNTY5M2I0ZTlmZTM4NWE0MzkwZmIxNWRmIHB5M2stc3RydW5pCis1NjU1NSBhNTQzNGZhZGE5ZmY0OWM0MDdlMDFlMjcyNzdmNjBiNzhiNGVmNDExIHB5M2stc3RydW5pCis1NjU1NiAyYWNjODkwMjc2OGM0NDdmMDMzNjYzODg5Yzg2NWE5NWJiYTY4MGEzIGNweV9tZXJnZQorNTY1NTcgMDdhNTc3YjYyMGVjNjkxODJjNDg1MzcxMDA5NmRiYjY5ZmE2MzgzOCByZWxlYXNlMjQtbWFpbnQKKzU2NTU4IGRlZWM0MTI2ZmZhY2ViMDZlMjZmYWRlNmEwYThmYjhlMjdlYjhlYmIgcmVsZWFzZTI1LW1haW50Cis1NjU1OSBiMDBiZDA4YTA5NDk0OTEyMjc5Yjg0OTc5ZDUyYmRiMzRhMWQ4MGNhIHB5M2stc3RydW5pCis1NjU2MCAyNzhjNTIxMzQxNDBmNjE3ZGNmZjFjYWEwN2RjZGU4NDA4YWM4NDg5IHB5M2stc3RydW5pCis1NjU2MSAxMDcxZjcwNzZlOGUzOGM3MzRmYjU4Y2ZjMzRiZmI5YzEwZWU5ZmNiIGxlZ2FjeS10cnVuaworNTY1NjIgMjBiZDViZTI0YWI1NmI5Yjk4NWJjOGFiZjFiZDU2OTAwNjgwNWJiYSBsZWdhY3ktdHJ1bmsKKzU2NTYzIDg2Mjg1YjM5N2I0ZDEwNGQ0OTdlYTBkYzRkNGEyMDE3NDM1OWVjYTcgcHkzay1zdHJ1bmkKKzU2NTY2IDA1NDZjMTE1YTljZjNjNzJiMzYwNTFiOGJlYmQwM2VkZmYyNDA5NTMgbGVnYWN5LXRydW5rCis1NjU4NCA5ZTg0YjQ4Njg5ODQ2ODFlOGUxZmNjMWU3YjgzYmNhYzMwYjBhZjc3IHB5M2stc3RydW5pCis1NjU4NSA5MGU0MmEwYjIyMDJjZjg1NmRjNWExMzgwOTNmNWYyMmZiYWM3YjRlIHB5M2stc3RydW5pCis1NjU4NiBmNjcyMDcxZDgyZmI4MzhkYzhiNjVkNjY1MTM4NzA0YjgxNzVjMDUwIHB5M2stc3RydW5pCis1NjU4NyAzNTdjYjg5NjdlODVlZTBmNzhjY2Q5MjAxYzU2MzdjZTYxNzlmMDU4IHB5M2stc3RydW5pCis1NjU4OCBlOTkxNmE0ZTA2YTRkZDNhNTFjMWI1ZTVhN2U0MjBjNGFkYTIwNDhjIGxlZ2FjeS10cnVuaworNTY2MDAgN2U3ZGNlMzA4OWUzN2E5YzEwZmJlMjFhYjYzMjZjZjYwOGMyNWRkMyByZWxlYXNlMjUtbWFpbnQKKzU2NjAxIDg1YjdmNDBlMWMxY2YwYTViNTVmNjYzNzkyYTE2NzFlNjFiNmY0MzIgbGVnYWN5LXRydW5rCis1NjYwMyBkMzQ3MWVmNmZlMzhhOWM4OGNhNTE2ZjIxNDdkZjM3NGE5ZjdhNzZlIHB5M2stc3RydW5pCis1NjYwNCBlMzFjNDgyMThiMGNiOTFhMGM4Y2QyNmE0OTdiMWE1MDdmNmMwMDk0IGxlZ2FjeS10cnVuaworNTY2MDUgNzg1ZGUyMjQ5OTVkNTExNWFmNzVkMzFmOTc4ZWM5ZWNiMzg1ZWVlYSBweTNrLXN0cnVuaQorNTY2MDYgZTFkYWU4NjI2YzExYTZkZTA5ZjdjNmY1ZjQ2YWQ2YjAxNjE0Zjk0ZiBweTNrLXN0cnVuaQorNTY2MDcgODZjMTNjZTYwYWFkZTVkOTc4NzNkMzk3MWJiZWU2OTY5ZDY4ZDVmZiBweTNrLXN0cnVuaQorNTY2MDggZDUyYmVmNTUyYWE0MDdmMWE2MjJkMmY5MmEzMmU5YmE5YTA3NzUzMSBweTNrLXN0cnVuaQorNTY2MDkgMzEwNWI3Y2YzNWJlYTcwNzdmYmE5NzZlODRhZGNhY2Y2ZWNjZjMzNiBweTNrLXN0cnVuaQorNTY2MTAgYjlhZGFkNTY5NWEzOWFkMTA4OWE5NDgwZGYxZmQzMDBiZjQ3Nzk2ZCBweTNrLXN0cnVuaQorNTY2MTEgZTk0ZDUwNjBiMGMxYzRhMjRmNjA3MjViMTAwMjVlNGMzYWNkMjZiNiBsZWdhY3ktdHJ1bmsKKzU2NjEyIGYxZjFmNWUxMzk1YzhiNDllY2VkMDczYzI1NDE3NzIzMDE4Zjk1MDYgcmVsZWFzZTI1LW1haW50Cis1NjYxNCA1Y2Q1ZjMyYjRhMjg4NjQ4ODA2MmUwMTYzZDU0MTFhYjc5YjE4YjQ2IGxlZ2FjeS10cnVuaworNTY2MTUgMzY1ZTk5MWE2MzFiNGM1NjVkNjU1MGQ3ZmFhMjI1YTg5MjkxNTBiOSByZWxlYXNlMjUtbWFpbnQKKzU2NjE3IDhhZDhhMzM0YmUwZjM1NWZkMDQ3OTAwZjE2MzczM2M1NTA1MTkwNTEgbGVnYWN5LXRydW5rCis1NjYxOSBlNTk4MTczZjk1ZTg4MDQxZjk1MGYxNTI0OGIyZjYxYjNhN2ZjMjM2IHJlbGVhc2UyNS1tYWludAorNTY2MjAgMjUxMDMzYTFjMmUzMjg1ZGEyNzRkODZjZjZmNDVkMzJiNWI3YWNhOSBsZWdhY3ktdHJ1bmsKKzU2NjIxIDdlODQ2OTYxN2IxYzNkMjU2ZTdlOTM4NWY2MTMyZGM4NTIzYjkwNmIgcHkzay1zdHJ1bmkKKzU2NjIzIDBjMzAwYjI5MjAwYzIyODliNWY5NTUxOWY2N2EyMzUzN2FhMjNlZDMgcHkzay1zdHJ1bmkKKzU2NjI0IGNlN2ZjMDhkNWY0Nzg1MzE0MTY0MDA2NjM2MmQ4MzFhZTE3YWYyYTkgbGVnYWN5LXRydW5rCis1NjYyNSA0OGNmYWFhODI4NzMwZGUxYTFhMTU5Y2E1NDVkMjFjY2MyMTY5M2ZhIHB5M2stc3RydW5pCis1NjYyNiA0Njg2MjE1NjliZThlOTVlY2Q5MzNmYzljODZlYzZiYTIxNjMzNTRmIHB5M2stc3RydW5pCis1NjYyNyBiZDg0NTZjOTU2OWFjMjUzMTQ0YWVkNzgxZDAyNTZmZjhjYzUzODdhIHAzeWsKKzU2NjI4IDhlNjlhYzFiZDA0MmNjYWRmZGI4NGM2MGZkYjQ4MmVjZWJkNGE1Y2IgcDN5aworNTY2MjkgNTA0MDg0YzA0YWMwMDBjZGQzY2JjZGQ3ZmJhOTJiYjBiNzZmYTRlYSBweTNrLXN0cnVuaQorNTY2MzIgM2EwMTUzNTViMDdhYTAzNTA0MTIyODM0MDk0ZTBhYzIwOTNhZGUyNCBsZWdhY3ktdHJ1bmsKKzU2NjMzIGI2MDY4ZGQ2YWUwMGMzZTE1Nzg5MDg4ZDg5OTIxNmE3NTExMGFlOTMgbGVnYWN5LXRydW5rCis1NjYzNSBlZjJkYzYyZDI3ZWI3ZDhmMzE5OTI1YjMxZTMwZjI4YmUzM2FmNzY2IHJlbGVhc2UyNS1tYWludAorNTY2MzYgZTFjMGFhOTRjMDkyZjljMjBlM2QzZDJhZGI0MTMwZjY3ZmRhYThmNCBsZWdhY3ktdHJ1bmsKKzU2NjM4IDNmNzhhY2MwMTAzOTgxNWI2ZmJkOTUyMDI1MTAyMWUxODg2MTJhY2IgcDN5aworNTY2MzkgOGI1NmEwNjk2MTRlZjRhMjE1MGQyZjA4MTAyMzY5YjI3OWZhMzQwMCBweTNrLWJ1ZmZlcgorNTY2NDggMzkyZjk4MjIxZDEzZWVhYzQ4ZWVlMDM5MjQ1NDc2OTNkMjcxZGJhOCBweTNrLXN0cnVuaQorNTY2NDkgOGMxNjVkMjA3MDlmNjNmYzYzYjVmMmRkMGRiOGM4ZDM4M2Q0OWY1NyBweTNrLXN0cnVuaQorNTY2NTAgYTZkMjZhNGQ2NzJkZWEzYmQ4M2YyNDRhODNlZTQ2Nzg1ZDE2N2RhNiBweTNrLXN0cnVuaQorNTY2NTEgOTg5OGE2Njk2NWJjZDk4Nzg1OTRjYTYyYWZiYTUxZGYwMDE1ZTM5NiBweTNrLXN0cnVuaQorNTY2NTIgZDNhNWM3OTZjOGJhMDBmZjVmMDEzMWEyYmJiMTJmZGRiODc5MGNlMSBweTNrLXN0cnVuaQorNTY2NTMgNjcwNTliNzhiY2U0NzVkM2FmYTU0ZjVkNWFhZTAyNmQ1YmQwZDNjNiBsZWdhY3ktdHJ1bmsKKzU2NjU0IDgwMWFkMmYwZDBiNTgwNTk3ZGMyYzgxZjkwNDViZTA2ZDA5NGI3ODcgZGVjaW1hbC1icmFuY2gKKzU2NjU1IDA3YzJmODFjMjY3ZDYxOWJjNzYzZGFlYzljYzQ1MTUxYTJkNDhlOGQgZGVjaW1hbC1icmFuY2gKKzU2NjU2IGNmNDU5NjUyYzM1MjM0Yjc4M2RmNDM5ZWJlNjdhNTk4ODY2YzcxYmIgZGVjaW1hbC1icmFuY2gKKzU2NjU5IDZmMjMzMGUwOTA5YmVjNGI3YjA0YjZkNGJhY2JkM2QwNDMzN2UxMmQgcHkzay1zdHJ1bmkKKzU2NjcyIDAyYzI3MTc3ZGY3OTM0YmNjYTFkNmNlYWQzYTdkYjZkNTQxOGFmYjggcHkzay1zdHJ1bmkKKzU2Njc5IDBjYmJhNDQyNmNkM2M0ZDJhYTllYjgwYWMxZjM0NmRjMGEwMGY3YzQgcmVsZWFzZTI1LW1haW50Cis1NjY4MSBlMjFkNjQ3NDZiZDNjYzRmNTA2YWU5NWMyMTZjYjNhMTRhNGNjMzA1IGxlZ2FjeS10cnVuaworNTY2ODIgNzU1ZTMxZGVhNDdlNTk2ZjMwYTY0NzBhNzQyMGVhMjkxYTI3YjI0NiBkZWNpbWFsLWJyYW5jaAorNTY2ODMgYzMzYzM3YmE5Y2IzYjU5ZTA3YjFlOTk5MDQxY2UxYzg0Yzc3NDU1YSBkZWNpbWFsLWJyYW5jaAorNTY2ODQgYjFmZjU0ZjhmOWQ4MzEzYTUxYjk0NDc5Yzg4NDRlZDE1NTYxZDk0OSByZWxlYXNlMjQtbWFpbnQKKzU2Njg1IDNhZGIwMzM1ZGU1MDZjZGVkMjE5ZTA3NmQ5ZmQxOWFkZjllNDc1YWMgcDN5aworNTY2ODYgMTY4ZDA1NTE2MGRjMTlmOTExMTc0YzkzYzAyYmRmMGViNzAzMmQ4NyBwM3lrCis1NjY4OSA3MjNjYjllM2ZhNTAwZTc1MGUwY2YwZGViMmQ0NThlNjI1OTBkMjA1IGxlZ2FjeS10cnVuaworNTY3MDMgNzc5NGRhMTMzNGEwMWY3ODQ5ZTcwN2E0M2M3MzdlZmVkOTE4NDBhNyBweTNrLXN0cnVuaQorNTY3MDQgYWU3MmJmNWFlNDY1MThjYTYxZDViNTA5YjRmM2M1ZDRhMTIzZWVhNCBweTNrLXN0cnVuaQorNTY3MDYgNDY2MjVlNjEyMmU5OWJmZTBjYTQxZjY5ZjI5ZmM2MjkxNmRiMDI1YyBweTNrLXN0cnVuaQorNTY3MDcgODFhZGUwMTQ0MjQ3ZDc4NzVkMzNkODUyZDMyNDE0MTBjM2I1MDIxZCBweTNrLXN0cnVuaQorNTY3MDggYjFiZjFiYWI5Nzc5NjYwMzE1MTBkZjU0MTEwMTNhYzViYmEwMTUwZiBweTNrLXN0cnVuaQorNTY3MDkgNmMzZmE0M2YxZDFkMjUxMTk2Y2IxZjk0MmNmMDM5NjVmNDY5NGYwOCBweTNrLXN0cnVuaQorNTY3MTEgNzQwMWZmNzhlYjI5YzAzYmNhOGQzMTEzN2I4MWUwYzc5YjIzNDg5YiBweTNrLXN0cnVuaQorNTY3MTIgNTM1ZGFlMDRkNmNkNjc0NjQ1ODNjMmUwMWNiNTgzZmZmYWU3OGQyMyBweTNrLXN0cnVuaQorNTY3MTMgZTMxOWQyZDI4NWJhM2Q2NzVhZjZmMDE3NzEyZjM1NjBiZjZhMzk1NiBweTNrLXN0cnVuaQorNTY3MTQgYzM1MTQwNTU5Zjg3ZThkYThjZTYxOGQ2OTdiYmFhZTUzZTliYTQ0MSBweTNrLXN0cnVuaQorNTY3MTUgZjZjYzc2ZTRjYTI1MWJkYWM3ZjkwN2YxNzFkZTQwZGM0ZjliOWYwZiBweTNrLXN0cnVuaQorNTY3MTYgM2VkMDIwZTk1YjQ0NGUzMGUzOTFlOTVmNjcwMzUyMDhhYTEzOWI2MCBweTNrLXN0cnVuaQorNTY3MTcgM2JlMjk3MmEyOWNhYzVjNzBlOTA3ODE4NzIxNmY5ZDdmYWFiMDE1NyBweTNrLXN0cnVuaQorNTY3MTggYWRlNWQxYWMxYTJjOGE1MDM5YWRlMDZiNTBmNGFkYzIzNzZjMjAwZCBweTNrLXN0cnVuaQorNTY3MTkgNzEzMDRlZmJjMzE2YTZkMmY0MmQzNWI2NGE1Y2ExMTcwZDRiZDgyOCBweTNrLXN0cnVuaQorNTY3MjAgMDU3MjhlNTJiMjgzMjBkMTgwMTgyZjY4NWRkMjg3OTU2ZDYxN2U0NSBweTNrLXN0cnVuaQorNTY3MjEgYjZiZGJiNjMyNmQyZjBiOWUxOTdmNDA2MWI1ZmUzNTAyOWI3MDZiYSBweTNrLXN0cnVuaQorNTY3MjIgMGZhODRmZmJhNzY5OGFkZWIyODVjZWVlYTIyOWVlZDE0NzVlNjI3YSBweTNrLXN0cnVuaQorNTY3MjMgYzYxOTQ0ODBiMWQ1OTYxZDRlZGYzNGE4ZTEyOTMxZjA0OWVjOTc4MiBweTNrLXN0cnVuaQorNTY3MjQgMTJkYmFlY2ZiNDRiOTE0N2U4MzM5ODY0NzNmOTk1NTcyNDhhMTkxZSBweTNrLXN0cnVuaQorNTY3MjUgMTMzMzUwMzk4NzIyMTBhOTFkZmQ5NDhlYmQwOWUxYTYxYjkxZjcyZiBweTNrLXN0cnVuaQorNTY3MjYgOGQ2OWEwODRlMzY1NWNhNTUzMGI1OWVhZTY1NGQ0NjAwNWJhNDkzNyBweTNrLXN0cnVuaQorNTY3MjcgM2ZlNTdkYWFhNjA4MTM0OTY3OGFhYzU4MGUyMmI2YmZkNWRiN2RhMiBsZWdhY3ktdHJ1bmsKKzU2NzI4IGJhNjRmY2FiNTIxNDJhNWZiODdjOWVhMGQwNGZmM2M1NWVmNjAzMDEgcmVsZWFzZTI1LW1haW50Cis1NjczNSBhYTVlZTY1MzI4ZmI2OTQ4YTYzODE5NjVhNGMzNjhhYmFlODE4MDcwIGRlY2ltYWwtYnJhbmNoCis1NjczNyBlZDM3NTQyZjQ3M2VhZTI4NjVkNzJlMGY0MTZjMWU3ODZhYmEwOTlkIHB5M2stc3RydW5pCis1NjczOSA1MjhhOGQ5ZWYyMDJlNTRkNjM3ZTZlYjkzN2FhNzQ0NzQyMTA4NzBjIHB5M2stc3RydW5pCis1Njc0MCBhNDBhZWRkYzBjODFiZDhlNDdhOWMyOGU1ODI2MDg2MjI1NGM1NmZjIHB5M2stc3RydW5pCis1Njc0MiBmNDQwOWM1ZDc5OTRkM2EwZmVjZmRjYjZhMThiNzI2Yjk1ZjU0MjkxIHB5M2stc3RydW5pCis1Njc0MyBkMjIzNWFlZTJkMjU1MDJjYWMxOTYyZGI2OWNkMGRlNDMwYTNjOGNmIHB5M2stc3RydW5pCis1Njc0OCBhODRlYWRmNjM3MmUzOGIyMzZjYmZlYjA4N2QzZmM0MjkxYjRhOTNjIHAzeWsKKzU2NzUwIGZkYmVkNzNlNWRhN2Y1Y2IxMTA5MzhhNGE4ODBmYjg3ZjhhYjAzZTUgcDN5aworNTY3NTEgNjQ4NTc3Y2M2ODhhZjZjZWIwNzk3MjlhNTdiZmFmMWU4NjY0MWU0YiBsZWdhY3ktdHJ1bmsKKzU2NzUzIGRkNzRlMDIwYTEzMjM4NmQ0MTY5OGZhODcyZWNlZDBhZGEyMTQwN2YgcHkzay1zdHJ1bmkKKzU2NzU0IDYyOTE4NTk5MmFhMjE1MGIwMjhkOTg5Y2FhNDVjMjRiYWJmNjQ0NDEgcHkzay1zdHJ1bmkKKzU2NzU1IDA4MGYyYWExODAxNThlNzJlOTI4OGI4OTJmY2VhMDdiOGZkNDFhOWQgcHkzay1zdHJ1bmkKKzU2NzU3IDQ5ZDUxYzFmYzE3NzhjMTJlZjY1MTU4NmE5YTY5YWFmZmE3MzhkMGEgcHkzay1zdHJ1bmkKKzU2NzU4IDE3ODAwMzVkNTgxMjNjNzdmY2U4YjA1NGE3NDY2N2RjNjVlZmU1YTggZGVjaW1hbC1icmFuY2gKKzU2NzU5IDg4ZDdhM2RmNWY3OWU1Mjk4YWU2MjQwYWFkNGJiNWY5YzNlNjBjYWEgZGVjaW1hbC1icmFuY2gKKzU2NzYwIGI0NTAwNTY0MWJjYTYyODlkOTE0NWJmNGVmNjcwY2VlMmFmZjY0OTYgcDN5aworNTY3NjIgZGJmYzNjZjE1MjJkMDdhNGU2OTZjN2FjMjMzNmVkMTlmNzViNjNmMyBsZWdhY3ktdHJ1bmsKKzU2NzYzIDliMjZlZTZlNmQwYTQ1ZGZjOWFiMjkyZDgzODBlMTk0OWFiZWVlMDcgbGVnYWN5LXRydW5rCis1Njc2NCAyNThlMmI3YTc4ZTRmZTE3NDc4NDAzZWJhOWZjZjIxNGVhMjlhNmZhIGxlZ2FjeS10cnVuaworNTY3NzUgMGFkYjcyMDdlNGJlYjdiNGQzZjA5NzZlMzViY2ZmMzFiY2YyNjE4ZCBkZWNpbWFsLWJyYW5jaAorNTY3NzcgOGI0NWYyMjk3ZGJkMTQ5YjI5MjFjMmQ2ZWM4ZWY0NzMxNDBmMzhhOSBweTNrLXN0cnVuaQorNTY3NzkgYjEwYmEzOGU2YjgwODEyMzZhNTkwM2EyYTE5ZDZkYjkxZmU0ODRhMiBweTNrLXN0cnVuaQorNTY3ODAgMjI5MzYxMTk4ZThkNWVkODNjNjU5YTRkMDgwNjZkYjZkNmQ3ODQ1ZCBweTNrLXN0cnVuaQorNTY3ODEgNDQwMTc2ZjA2MTQ3OTQyNDA2MWE4N2MyNmIyY2I1MmQxNjEwYzZmOCBweTNrLXN0cnVuaQorNTY3ODIgM2ZjM2NlZGM0OWNhM2M2YTg1YjE4NTgwNzE0ZWQ5MTRhODZmMjViOCBweTNrLXN0cnVuaQorNTY3ODMgODFhMzgwM2Y0M2NmOTg5ZWJkODRmYzM3ZmVjYzdmM2M1MWY5ZTQzMyBweTNrLXN0cnVuaQorNTY3ODQgZjRjOTljYWQ4ZDJmNjRiMjdmOTM2ZDUzZTM5OGQ1OWVjZjAxNzM5MCBweTNrLXN0cnVuaQorNTY3ODUgZjgyODFkYzJlNjhkZWQ3ZjNiNmZmNzdlMWM2NGI3Yjg4N2JhNzVlYSBweTNrLWJ1ZmZlcgorNTY3OTAgMmFiMThmZmI0MDFjZjFiN2FkMDk0M2Y3NGRhOTE4NDlmZTI2YmE4ZSBweTNrLXN0cnVuaQorNTY3OTEgMmExMTNhODI2NGIxNjIxMDY5OTRjNjk3NGVkNWE0ZDMzMzI2NjJlNCBweTNrLXN0cnVuaQorNTY3OTIgZjMyNDhjMzIwZGQwM2ExZGMyYzZlNzhmYTY3YzIyODg1YWQ1NWM0YiBweTNrLWJ1ZmZlcgorNTY3OTcgZmU1YTA2MjFmOTE4ODA2ZGJmYTEyZTJiYTg4NzNmNmI5OGYxYWZmNSBsZWdhY3ktdHJ1bmsKKzU2Nzk4IDdkMDc4ZmEzNGJiZjYzYmYyYTJiYWU5ZDU1MDRjNmQwODRiNzcyYjkgcmVsZWFzZTI1LW1haW50Cis1Njc5OSBiMjJkOWZkNGE3ODVhZGZhYTMyYTU3ZjQ5ZTgwZTZmMmUxYzdkYTE4IHB5M2stc3RydW5pCis1NjgwMCA2YmEyZTY3NTgwZmM5OGI4MDJkNTAzNGI5YTk5ZmRmOTVkMThjNTJkIHB5M2stc3RydW5pCis1NjgwMSAzNDVjODEyZjMzNjY1ZWRmMzJlZWMwZmFhYmNhZmMyZmUyOGU3MjQ0IGRlY2ltYWwtYnJhbmNoCis1NjgwMiAyOTczNTg5OWNhMTVhMDY5NmE4NTkzYTEyYmZjZTI1MzBkMDQyNmM4IHB5M2stc3RydW5pCis1NjgwMyA2ZmRkMWFmNjNmYTZhNWZmYjdhNzQ1NDRiZGU5NTJiMTAyZTFjYjBjIHB5M2stc3RydW5pCis1NjgwNCBlN2ZkMzI3ZTBjMTlhMjg4ZjA5NTVkNzU3OGNhNzA4OTU4ZjMxYjdjIHB5M2stc3RydW5pCis1NjgwNSA0OWQ0YzRjZGYwYzg2MjgzYzFiY2ViYzViNzk2ZDcwMTQxOWYxZDFjIHB5M2stc3RydW5pCis1NjgwNiA5ZjE4NDhmNTk2ZTBjYzY0ZDVjNjQ4ZDY4ZDFhMzQ1YWRmZGFjZDkzIHB5M2stc3RydW5pCis1NjgwOCBlMTE1MGFhZTBmNjRkNmRiOTY0ZGEzOWJhMmU1N2U4NDI4NDE0MjZmIHAzeWsKKzU2ODA5IDEzZGM4MzZkNGE5OWE4NWUwNzkyNDgxM2Q3YmUwYTBhZGZkN2VkMTEgcHkzay1zdHJ1bmkKKzU2ODEwIGIyMGNjMWMwY2YxMGU0NDYxZTc2NDFmMTNmNjZmZDFmYWZhOGYzYjYgcHkzay1zdHJ1bmkKKzU2ODExIDRkZWEzYjY4YjAxM2IwZThkZDJjODA3MWQ5MzhiM2U5OWYxZTA5MzAgcHkzay1zdHJ1bmkKKzU2ODEyIDA0YTE0ZGY0MDczYTRlZjhlMDFmYWNkY2ZjODhmMWRhMWM5MWIwYTAgcHkzay1zdHJ1bmkKKzU2ODEzIGMxZWQ0OTBiZDI2Njc0ZGNkOTQ3NzQ3Yjc4MzE2M2MxMDYwYzFhYWEgcHkzay1zdHJ1bmkKKzU2ODE0IGI2NWY2YWM1Mjk2OGM2NjM0NzRlNWJhZjllOGQzNTBmZTU3NjdhNjEgcHkzay1zdHJ1bmkKKzU2ODE1IDNmMWZjZDA4MGVjNGI1MDEwYjAzNzk3YWFmNzMxMzk4MDBkNGE3MzkgcHkzay1zdHJ1bmkKKzU2ODE2IGM4YTA5MWI4NDJkNmVkY2YzMDFiN2ZmN2MzZDVkMWI4YjM4OTJhOTcgcHkzay1zdHJ1bmkKKzU2ODE4IGM5NmI0YzM4NjUyYzM5ZTI0ODMzM2JkNmZjZTAzYjkzMDhjZDhmMzYgcHkzay1zdHJ1bmkKKzU2ODE5IDY2OGE1YWRjYzg3Y2YyY2Y5N2U1ODkwZWYzNzc3YWI4ZjJlOTRlMmUgcHkzay1zdHJ1bmkKKzU2ODIwIGI1NmE4ZDgyMmYyMWI2NWExZTY1NzNlN2ZjNDQzMjBiODU3ZGIyYmQgcHkzay1zdHJ1bmkKKzU2ODI0IGE4ZjEzYTQzZWFhMWU1M2RjMmYxZDY2ZWQ1NTJmOTc4OWYwNjRjMTggcHkzay1zdHJ1bmkKKzU2ODMwIDg2ZmQzOWMyYzY3NjhkY2YyYWE5M2FiZTE0MjQwMzM2ZWM1YzVmODUgbGVnYWN5LXRydW5rCis1NjgzMSA4OWM4MWZkNzAzOGU2MzE3M2Y0MTc0MWNhZDZiNDhkMTVlNGNkMGQ3IHJlbGVhc2UyNS1tYWludAorNTY4MzMgM2Y2YmUxMmI5NTM0MjNmZGJjMTVlNjdmMGVmZDAyMzNlN2ZhODQ0NiBsZWdhY3ktdHJ1bmsKKzU2ODM0IDU3Y2QwNzBhZDMwNDJmMTJlZDQyMDMzYTgwNzNlMGZhZTYyZTc5ZjYgcmVsZWFzZTI1LW1haW50Cis1NjgzNSA1ZjYwYzllNDE0NDAzYWU1YTRmNGExMDFmODk1MzQ4YzA4NWU2N2I5IHAzeWsKKzU2ODM2IGY0ZTM2NmMzOTJiZTcwNmVjM2M5MWY3OTIyZTQ2OGZlMmZjYWZlOTcgcHkzay1zdHJ1bmkKKzU2ODM3IDE3Y2RiZWRiYjE1ZDQ1NGEzZGE3NWQ3ZGEzNDExNGI2ZjEwN2JjNTMgcHkzay1zdHJ1bmkKKzU2ODM4IDk1ZDNhNjVjYjc0YzcwZjhiZmExNmM0MWRiYTgzMjdjNjFhMWI4ZWQgcHkzay1zdHJ1bmkKKzU2ODM5IDk2MDk4YWJjOGY4ZjY3NjZjNWNlY2Y2NmZhNjcwYjAwNGNhZTA0MjkgcHkzay1zdHJ1bmkKKzU2ODQwIGMzMjFjMmI1OThmMTc0ODA5MDE3YWE5ZTU2NzJlMWVmOTAzNjZmZTggcHkzay1zdHJ1bmkKKzU2ODQxIGY2MDY5ZjlkZDUyZGZhOWM5YjZmMTIzYmZmNmJhYjYxZTA0Nzk3NzMgcHkzay1zdHJ1bmkKKzU2ODQ3IDllZGYzMGJmYzJlYmUwYWQ4MTMwOGE2NzgxM2FhZWY1OWE3Y2MzZjcgcDN5aworNTY4NDggOTkxODk4OWI3MzNiNWVjN2Y1NTE3MzdiNzhmM2IzOWI1OTBjYmYzOCBweTNrLXN0cnVuaQorNTY4NDkgMjNkOTYzYTc1Njk2MmVhMTBiNDAzMTRiNGE3ZGNkNmE0MmU4YWJiMiBweTNrCis1Njg1MCA1ZmJkMTVjNjFiMTI1MDUxN2NlMWM2Nzc2ZmQ5OTBiOWQzYjQ0NmEwIHAzeWsKKzU2ODUxIDNlMWExNTE4NWY4Y2Y5ZWVjMDljNjY0YjM5OWI2ZmM4ODIwYTY1MGYgcHkzaworNTY4NTIgMjZjYTNkNmY0NzNhZDZkZTU2N2YwYTFjN2UwOTc2ODQyMTljOWQ2ZSBweTNrCis1Njg1MyBkYjI1OWQxNDFlN2FlYzAyZjZhYjdlOGI4YmM3NWRmYzQ4MzJkZTNmIHB5M2stc3RydW5pCis1Njg1NCA0YWFlYTM1ZGNjY2Y4ZDIxNGVhOGNkNTA4M2IzYjUxYTkxZTYyYTE0IHAzeWsKKzU2ODYwIDBjODk0MDliZGE3YWJjNjBmMzlkYmRjY2ZhMjg0MzA2N2QxMDYzMTMgcHkzaworNTY4NjIgZGY0Y2Q5Mjk3MDk4MTk0N2EyOWY1ZDBmYjFiMGRlNjUxZWNhZjAyMCBweTNrCis1Njg3MSA0ODY1YjUxMGNmNTRlOGRhMWRmM2I2M2U2ZmU3OTFkODEwMmZjOGZkIHB5M2stc3RydW5pCis1Njg3MiAzZGEwYTRkYjIxMDI0ZGU1YjY3NTBjMzMyMjVhMDRkZTAzYjBkYTcxIHB5M2stc3RydW5pCis1Njg3MyA1MjJhM2UzYTAzYTk2Y2UxOWJiODZhOGMxOWU0ZjYyNzJmNmViMTc0IHB5M2sKKzU2ODc0IDA0M2ExMDJhMTcwZWUyZWYzYmEzMmVhZTQ1ZDBiZTZlZTA2MWE4NjMgcHkzaworNTY4NzUgZGNmMjczODVmMTI1MTkwMjA2NzhhODg3ZDVlMThiY2M0YzEwMzA4ZiBweTNrCis1Njg3NiAxNjZjNzQwNTM2YjVmNzNhYjQ3NmU0OThjYzgzNWU2NjgwNmIwODU1IGxlZ2FjeS10cnVuaworNTY4NzcgODJhNWMzMGMxNzg2MjA2YWRjNWQxZDI0NGE0YTFkNzYyNGFjNDZhYiBwM3lrX25vX2FyZ3Nfb25fZXhjCis1Njg3OCBiZTNmZWNkMmQzMzk0MjljMzg1MDQyZjlmOGE1YWE4ODFiOTE3ZDczIHB5M2sKKzU2ODc5IGEyNGUyN2YwNWU0ODI5Y2I4NzIzOGZkOTY4YmRhOWQ2ZWQyOWQ0YjUgcHkzaworNTY4ODAgYzBkYmY0NWNjMjA3Mjk4ZjRjMDcwMTgzZGQwNWQ1OTk5MWJlOTllMiBweTNrCis1Njg4MiAwODcwZThlOWU5OWY1OGY2YWRlZjY0NmY3YWIzOGRjMWZlZTRmM2E5IHB5M2sKKzU2ODgzIGYwY2ZlZDM4YjlkOWUxZjU0ODVkNjA2MzAxODI4ZjE2ZTJiNzZiNGMgcHkzaworNTY4ODUgMGU1YWViYTNjNjdkYjJhNWM0ODZiMzhiZjcyNzA0YWUwZmIxODliOSBweTNrCis1Njg4NiA1MDdmNTY3MWUzODg2MjhmNWRlODE2MzQwMzc1Zjc5ZWQyNzdkMjkyIGxlZ2FjeS10cnVuaworNTY4OTAgMGFiMzQyMWEwOTA2NzdjOTA5YjlkN2Y0OGYyMzViYzFkNTNjN2M3YiBweTNrCis1Njg5MiA5ZDRlMjIwMjI0ZmI1ZGQ3ZmM1MjczMGM1MmEzNTRlZTg2MDFlMDAxIHB5M2sKKzU2ODkzIGNjMjVkMTYwZjBmN2VlMTBiMGEzNzJjMGNiZDkwNjg5NTc3MjRlMjEgcHkzay1idWZmZXIKKzU2ODk0IGVlYjM3Yzk3OTNlYTUzNDM2OGQwNDk5ODIxOTdhNDdjZWUyNDJjZjAgcHkzaworNTY4OTYgZjM3MDE2ZDQyNzI5ZmJlZjk4NTdlZGM5Mjk3NzFkZjgyMDJkZTdiMyBweTNrCis1Njg5OSA3NzAzMTg3YzdjNmYxMTdjYzliMDE1ZWU4OTc0ZmZmZWNjMjE4YzczIGRlY2ltYWwtYnJhbmNoCis1NjkwMCA5MzA3MzZlZTkzZDk0OTBhOTNkMjhmYTFjYjM2MmRjNzI2YWI2MTgxIHJlbGVhc2UyNS1tYWludAorNTY5MDEgMzQ2ZDBiODQwMzBiOWRmOTU4ZmFmODU0MWFmY2Q1MzkyZWNiZGY3NCBweTNrCis1NjkwMiBlNjQyODYwNTNiMjUyMjg1MTVmZjg4M2NiMDU0Yzk5ZjkxNzZlMDlmIHB5M2sKKzU2OTAzIGQ5NWIxNWE1NWYyYzA2MzBlMGNlNTYwNjAyOTRmNTUyNzc1YzllZTQgcHkzaworNTY5MDQgM2VjMjBjNGMxYTRmYmM1MTMzNjkyZWYwNmY2MjE0NWZhZGE3YzFiZCBweTNrCis1NjkwNSBhZmZiMWU4Nzg4MWE1ZjFhZjYzZjJmYzMzOTE3NzVkYmM4MGZmNGY1IHB5M2sKKzU2OTA2IDgxYmQzZTk0Y2YwYzMxZDgzNDJiNjZhMGMyYjJmYjAzYzYxYzJhYWIgcHkzaworNTY5MDcgMzg1OGQwYjhiMGVmNzZmYmQwZGFiZTE1MzZkNDEwYWQ5ZmJkYWUzYiBweTNrCis1NjkwOCAzYTE1NzJkMWZmMWFkNTRmZWNkYWVhMDZjYjE1ZThjODg0ZDMwMDg3IHB5M2sKKzU2OTEwIGY4MjhmMzUwMTRhZTM5YmFlNTA4NGQ5MTgxZmU5ZjYwN2FmODc4NDkgcHkzaworNTY5MTEgNmEwOTQyMzE2NGZlNjI0ZjU2N2NhMTRiMTAyYTc1NTQxNTIyNzcwZCBweTNrCis1NjkxMiA1ZjllNzlkMWUxNTg0YjU5ZmU4MWVlOWM5MWY3NjI3NDA5NjUwMGRlIHB5M2sKKzU2OTEzIDhkNjg2N2NiOGE4ZGI3MTg5NTE4ZWQwNWM1YjgyNWZkNzMwZjcwNDQgcHkzaworNTY5MTQgNmNkZGNlNDA5NmEyMjdlMjBjYTk1MTQwNDgzZDQ4ZGJjNzAzZTNiYyBweTNrCis1NjkxNSA3NGEzYzY4MjY2ODNlNGY3NDlhMjE4ZTM3NjI3NzlkYzMzMzQ2MmU2IHB5M2sKKzU2OTE2IDljM2U2NDQwZjU0YzMyM2M2ODE1MjE2ZTRjYjE1OTIyMDM4ZGQ3ODIgcHkzaworNTY5MjIgNDNlMzJiMmI0MDA0ODFjYTM3Yjg2MzhjM2FjNmNjNmNiN2FlOTFjMSBweTNrCis1NjkyMyA2OGZmOTA5OGIyZGM4MzZkNWIwZDBiNGJkNjIzMTE5MTc1NDdkNjk2IGRlY2ltYWwtYnJhbmNoCis1NjkyNCBhYWI2ODc5MzZlY2Q4Mjc0YmU0ODgwMjg5M2ZjMGQ5YWJmMGE3ZmI0IHB5M2sKKzU2OTI1IDBjOWFkMGIyZmFjNTRhYjkwYTI3ZmIzNDNiMmNlYmMwMmQ5OTgyNjUgZGVjaW1hbC1icmFuY2gKKzU2OTI2IGQxODU1ZDBlNGUwM2MzOTM3NjEwNzY3Mjg5NDFmY2IwYmMwOGJjNGIgcHkzaworNTY5MjcgY2ZhZGQ3Y2M5YzQ1NzdhNTZjOTFiN2Q1MjRhZWUwODcyNTdjOTM2OSBweTNrCis1NjkyOCBhNDRjNTY0MDI2YjgzMTQ4NjA1NWZiMTRlYmM4YzdkNDU1ZjMxMjY0IHB5M2sKKzU2OTI5IDA3N2M2ODE4NmUyMzc3ZDQ1YWEyN2IyYTZiNWE2Yjg2MGE5OGQ1MzEgcHkzaworNTY5MzAgY2Y5MTM3N2UyNDQ0ZTQxNGE1YWU0MjI3YmU2ZTdiMjUzZjNhYmYxNSBkZWNpbWFsLWJyYW5jaAorNTY5MzEgNDIxZjlmMzU4ZTRmYmI0Yjk1NzgzNmE2NDFhNWViOTQ3MTA4MmQ4NiBkZWNpbWFsLWJyYW5jaAorNTY5MzIgMGMwZTM1NWNmNzQwN2NkM2VjNDY1MmY3YTAzOWRjOTFhMWJiYjhiOSBweTNrCis1NjkzMyA4NDQ3ZWNkMWJmNDU4MWI4OWE1M2ZmN2Y5ZjQ3NTUxNmFiNmQ3ZmY5IHB5M2sKKzU2OTM0IGE4Yzc0MjQyNTM1NjJjZDRmNGMzMThkNDExZjZlMWYxOTg3MDRkMjkgcHkzaworNTY5MzUgZTBmNjIyODZhOWE0NTRiZDNmOTNlZmJhZTcyMGU4Njk2MWE2MzE4MiBweTNrCis1NjkzNiA2NWYxZDQxOWY2MzEwOWZlNzcxZWI4YWRiN2M4NGY4Njg2MmYwYzU5IHB5M2sKKzU2OTM3IDI3NjMzMGY0MmU3OTM2YjQ2ZjBhYWM0ZGZmN2FjMWZjNDljODA1ODYgcHkzaworNTY5MzggYjY2MjVkMmIzNzhhZjEyZGYzMjU4YmYxOTg5NjFlOGU3ZmVmOTkyMiBweTNrCis1Njk0MCBhYzE5MmY4OWMxMDkzY2EyMDFiMjFmMTMyZDVhNmNmMzdkNDA1NzA0IHB5M2sKKzU2OTQzIGM2OWQxMjI2NDNkNTBkM2QzYjU0YjFmNDlhOWQ0Y2NiMTAxZjEwNzggcHkzaworNTY5NDQgN2FiYWNjOWUzOTk1OGYwODU0M2JmNjNlMGZjNGZmMWE1ZmFiOGM5OSBweTNrCis1Njk0NSAzZTY4MmFlOWQyOThlZjExOGE1OTJmZWM1NzcwYTYxY2M5N2M0ZWJiIHB5M2sKKzU2OTQ2IGI3YjNmNGUzMjUzM2ViM2ZmMDI2NmE5NDU1YTNjZWFlZjBiYTI4MzIgcHkzaworNTY5NDcgZmVlNWM2YmJlMTQ0ZGFiODM0ZWFlZjQ5YjQ2N2IxZDczZGQ0ZjNkZCBweTNrLWJ1ZmZlcgorNTY5NDggNGI0OTk1YzhlM2ZkNjc2ZTFhYWM1OTg3MzJjMGE2ZWQxMWI5Y2I3ZCBweTNrLWJ1ZmZlcgorNTY5NTAgYzNiMzRiMGY4MjE2YWUzOWUzMTYwZjIyN2ZjMWQxZmE5NjQ1Y2UyYiBweTNrCis1Njk1MSAzNDZhZmE2NThlNDQ2MDM4NTA2NTM5ZmFiMDgzYzVhMmU2OGI3MWQzIHB5M2sKKzU2OTUyIGU3ODEwODVhYzk4OWU0YzBjMWEzZjI1NGZlZTJjYzlkMTE0NDNmZDkgcHkzaworNTY5NTQgN2Y5NDljMTdjYzM2N2JiY2IzNGM1NTI1Zjc0MDkwOWJlZDRmZWM4ZCBweTNrLWJ1ZmZlcgorNTY5NTUgMGZjYzE4YWJhMzg1ZGU0Yzk2MDFkYjgzZDhmMGYwN2JiYWYwYWYwOCBweTNrCis1Njk1NyBkMDIwYjliMWQ5OGI2YWQ1N2E5NjA5NmE2MGVmNjc3NmUxYzdjNmQ3IHB5M2sKKzU2OTU4IGFlOWNmNDhlZDZmNzI4ZmQ3YjAzMjU3YTFmMTg0ODI4MGNhZjhlNGYgcHkzaworNTY5NTkgMGQ5OTUzZDdiODI3NTdjZmM0OTMyYzllYzE3NmFiYTVjMTJmZTU0NyBweTNrCis1Njk2MCAxNTAxOWVhZTM5ZTgyN2Y0MTQwYTNhMmVlYTNlMDNkNWM5ZWY5MmM5IGxlZ2FjeS10cnVuaworNTY5NjEgMTM4MTA0NmZlODk0NWJkN2MzNTgwM2Y0NDMzNTVjMmFlOTdhZjcxMCBweTNrCis1Njk2MiBiOTBjMjIwNDE2MzUxYTVlNmM1ODMyZWE3MGMwNDFjNmJjOThiOTYxIHB5M2sKKzU2OTcxIGViMmMwNjc2YzczZjFiMTZkZjJhNzg3NWM1OGMxODIzZTAxYTUwZGEgcHkzaworNTY5NzMgZDRlZTU0YTg4NDg1MGJjZTZjODYyY2ZlMjM1MjZlOTY2OTM5MWZkNiBweTNrCis1Njk3NCA1M2I3M2MyNzExYjZjNjgyYTRlMTJhOTU2NDI2OGE5YWUzNTYyOTgwIHB5M2sKKzU2OTc1IDU0MjYxNjM0YWQ0NmQ1ZTk2ZjAyOGQyMzk4NDNlZjk0Y2JlNzc0ODkgcHkzaworNTY5NzYgN2E0NWU4Yjc4ZDYzZmY0NGVlOWQwMWFjY2Q5YjkwMDE1YjUxZjlmMiBweTNrCis1Njk3OCBhNzI0Mjc5ZmM5MzFhNWYxYTBmZWU2MDE1Y2E1NmQwMDYxZjU0OTdiIHB5M2sKKzU2OTgyIGZiMDY5ZWFmYWY4OWY1MzFiMmNhMWY2OWVlMWUxN2JmMTk3NGFiZTAgcHkzaworNTY5ODMgNGJjZTk0ZDllYzMxZTQ1MzhjMzA2ZmZlNGMxNzg5Y2UyZDliZjVlYiBweTNrCis1Njk4NCA2YWY2YmI0ODI0ZDViZTYxYzBjZjA3Y2ZmNzcwMTJkMjdiY2JhY2NlIHB5M2sKKzU2OTg1IDQ3YWFmM2Y0YTAzOGNlOTRhYjg0ZmI3MjlkYjQ3ZTgyNDdmNmUyNTUgcHkzaworNTY5ODYgMGVkM2QxODI5MjBiOGY4ZDY0YmRmMzQ4YTJiNzI3MzBhMzMzZjRiMiBweTNrCis1Njk4NyBjZjliM2I0ODdmZGExZjY1YmQ0MGE0NjMxYmM5MTVjZTVlNmIyZGIwIHB5M2sKKzU2OTg4IDM3N2I0ODM4MWE0OWMwMzM0Y2EyYTU3MDQxYWM0MjlkMjZjYjk0MmUgcHkzaworNTY5ODkgNWFlYjI2MWRlMGJkYWNjOGY3YjllYTZkNDVmNWVhMzc1YTU2ZmZlYiBweTNrCis1Njk5MCAxZTQ5MzY5NjQ3NzZmNTdmZjYwOTIxZGViY2RhZmY3MDdiYzVkNzQ3IGFsZXgtcHkzaworNTY5OTEgYmJjZWY2ZGU0Njc0MDU2ZGI2YWVjYzI1NWJjNmQ2ZDVjYmMyMGY1NiBhbGV4LXB5M2sKKzU2OTk1IGQ2OGE3MWM5NjVlYzE1MDViNzFmNWUxMzVjYjllODBhMjY1MmRlZDIgcHkzay1idWZmZXIKKzU2OTk5IGJmZTIwMmJmZmRmNDJmYjQ0NGZlMDQzZmQzYzBkZjE2NzdlOTZhZDcgbGVnYWN5LXRydW5rCis1NzAwMCBiZGM0MDI5M2Q3NWVmYjhlYjBmMWZlMzQ5NzBiOGU2YzM0NDUyMDdlIGxlZ2FjeS10cnVuaworNTcwMDQgOWNjZjlkNjdiYjM0OGM5NWMwMWQwZTU3NzkyYmMxNzkxY2QyM2VhOCBweTNrLWJ1ZmZlcgorNTcwMDUgZDMzNzFmZDQ5MTAyNDVlYzJhOGE0NzhjYTA5ZWZiZDFjMjgyOWZjOCBsZWdhY3ktdHJ1bmsKKzU3MDA2IDIyOWQ2MzQ1YTczYTExMjQ1MzA3NzdkZmUyNmY4OTdjZjNhZTBkMTEgcHkzay1idWZmZXIKKzU3MDA3IDY3OTM3ZmVlNzVhZjZhMjcwODgxYTZkM2UxMzRhZTdiMTg5MWNhZTYgbGVnYWN5LXRydW5rCis1NzAwOSBiNjIzNzc3ZjIyYjBkYTQwM2MxN2I5OWVhOWFiZmZjOTBlYjJlMWUzIHB5M2sKKzU3MDEwIDNjMWEyMDM2NWEwNWJjMWEwNGIxYmRkY2FjYjM1N2IwYjc1MGE5ZDcgcHkzaworNTcwMTcgMjE5ZmUzOWVkZTk5ZjdlNDIzMThkNGZiNjk4M2U4NjVmZmJlYmJlNiBsZWdhY3ktdHJ1bmsKKzU3MDE5IDI3NGYzYWU0ZGNjNzgwMzQwNzU4NWMzNjYyOGNhNWYyY2RkYTBhYjcgYWxleC1weTNrCis1NzAyMCBiN2JkNGEyNjg5YzE2Y2U1ZDExM2M2MmI2MmRiMGEyOWQ4YmE2Nzg2IHB5M2sKKzU3MDIxIDg2ZmFmMjExM2QzNmY1OGRhN2IyMDVjYmEwNjE5OTE5ZWE3ZGUyNGEgZGVjaW1hbC1icmFuY2gKKzU3MDI0IGE1MjhmN2Y4Zjk3YTI5YzA0ZjJkZDNjZTlkMTZlNGY4OTQ4YzJhN2EgcHkzaworNTcwMjUgMWI5MWZhYTBkZTJkMWUzNmU4ZTFkYWJkZTgyOTdhYTkzYTc0Y2MzZiBweTNrCis1NzAyNiA5YjAyMTI4NTIxZTI3MDRhZWVkMGIzYjY3NGIxY2ZmZWMzZTJkYWFmIHB5M2sKKzU3MDI3IDMwYzBkNTlkYjBjNjQ4NTI3ZmNkZmM4OThkNzM3YTM2NmNjNmRmMTYgbGVnYWN5LXRydW5rCis1NzAyOCA1MzkxYjVmOGNkN2EwZTM2YWY1YTg2YWZiODk0NWZmYmUzMTk0OGRjIHB5M2sKKzU3MDMyIDEzYjIzYWRkZWY0MWQ4MjA2MTk2MzcxNzU4NTJhMzIzNmM0YWMxMTcgZGVjaW1hbC1icmFuY2gKKzU3MDM4IDNiZWVmMTZkODE2NzEzYzFkNzkzM2YyOWFjZGU5YjRjYzZiNDgzMTkgZGVjaW1hbC1icmFuY2gKKzU3MDM5IDdjNjZmMTExOWU1NTRlMDIwOTM3NjRkN2Y0YjYzMWMyNjk5ZTdhZTQgZGVjaW1hbC1icmFuY2gKKzU3MDQwIDRlYmVhNmFmZGM4NzExMDI4YzYxY2M5MTE5MTkwMzk3N2YzMWViZGMgYWxleC1weTNrCis1NzA0MSBlZDk4OWRkOTk1ZDI0NDIxMmJjNjQ2NWQ4MjZkYjg5ZTQ5MDkyODRmIGFsZXgtcHkzaworNTcwNDIgYWM1Y2U3YzQzZWU3NTlkZTQ5NTY3MDgxNmYxYmJhN2VhMGM0NTI3ZSBweTNrCis1NzA0MyBmNmFmMGIyNTk4Y2ExMmMxZGM1MzRmNjM4YWZlZTYwZDQzMGE2ZWE5IHB5M2sKKzU3MDQ1IDk4MDMwOGZiZGEyOWY5Yzg5MDY0NmIxMzliMjM0NGE4YWEwOTI2OTUgcHkzaworNTcwNDkgMjA0NzdjYmZkOTk2NzgwODU0YTk2ZDA3MGVjM2I1NjIzODZiY2EwYiBweTNrCis1NzA1NCBmNjhiNmJmNDYzNjYxZTJiZGUyMmRhYzBhZTA1NWU5NjE2Y2IzY2E3IHB5M2sKKzU3MDU2IGY4MjhhOTVhOWRhNmJhOTA4YzliYTBjMjY2M2RkMjJhM2JhOGQ0YzkgZGVjaW1hbC1icmFuY2gKKzU3MDYwIDQ2MjA2NjFlMDZhZmFmNDUxOTM4NTg2MDNjNGMxYWVmODA2Y2I2MWEgbGVnYWN5LXRydW5rCis1NzA2MSAxN2JlOGZiZWMxNThjNDViMzcyMGU1MTExNGU3M2YyNTBlOWVkZDMwIHB5M2sKKzU3MDYzIDI0NDk3MDE5YzQwNzM1NjRkNjQ5YWUxYjJiZGZjZmQ1NzNhMWIzMTQgbGVnYWN5LXRydW5rCis1NzA2NCA3MTdmZmIxNmI1ZDEyNTRmMjc5M2UzNWM2NGFjZGYwOTk5NDI0MDM0IHB5M2sKKzU3MDY1IGM2MmY2NjY5YWUyMmI4Nzc5NWJhMzY0OTQ3NTE2MzE0MDFhYTVhZmMgbGVnYWN5LXRydW5rCis1NzA2NiA5ZTE1MjliZjA0NDIyOGI3ZjdiOGExNmM1MzdkYjkxNzg1NjQ4MGVkIHB5M2sKKzU3MDY3IDcyNjFhOTFiZTAwMzY4MzA4MzVmN2U0YWNjMmE5NzZhOGU5MjM3ZWYgZGVjaW1hbC1icmFuY2gKKzU3MDY4IGIxYWJmODQ2Y2U4MTUyYzM4MDMwMzEyNjlhNmRhNWE1Y2E3ZjRlMjUgbGVnYWN5LXRydW5rCis1NzA2OSBhM2U3NjQzMTcwNWIyNjNjODY2NGIxNTFiZWMwNTM3MDE4NDIyN2RjIGxlZ2FjeS10cnVuaworNTcwNzAgZWFiNzVhZTMyMTJiZGIyZDRjYmY4OGVmYmViZjk4ZTQzYzk1NDg1OSBsZWdhY3ktdHJ1bmsKKzU3MDcxIDNjYzJjYzc5NTc2NWZhOTg0Y2FkZDgzZjc0M2Q3ZWFiNGQwYjZmOWMgbGVnYWN5LXRydW5rCis1NzA3MyBkMzM2MmM0OTUyOTYwYjRjMjNmMGVlYzY1MmIzMmFiZjg5ZWJlNzEwIGxlZ2FjeS10cnVuaworNTcwNzQgNzkyNmE4Y2E5MjkwNDJlYTc5MTc4YTc3ODYyNzhhNmNlODExOWQzNSBsZWdhY3ktdHJ1bmsKKzU3MDc2IDEyMTIxM2JiZjM1OGY4NmE5MWRkZDE3YTljOWI3YmVlYTFlYTcxZGQgbGVnYWN5LXRydW5rCis1NzA4MiA0YTQ4NzE5MWZjNTRjMGExNzA5ZWUwZGM3MjI4OTRkN2I0NzZlZjg3IHB5M2stYnVmZmVyCis1NzA4MyA2NmE1OGMxYzI4M2IzZTU5ZTc2NWU5OGFlOWM3YTk4MDczNTI0MjUxIGxlZ2FjeS10cnVuaworNTcwODQgYmJiNGY0NjYzY2QzMjEyYzhkMTAwYzFhZGFiYWI0ODFiNjliMzFmMiBweTNrCis1NzA4NSA3YTU2MmEwMDk3M2VkNGQzNTI4ZDgyNzRlMWFlOWI1N2E2MTY0YTY5IGxlZ2FjeS10cnVuaworNTcwODYgY2VkMjdiOGYwODliYTViMDc2M2Q5MzZiMDUxMzkzYThhZTFmNTc2YSBweTNrCis1NzA4NyBjYjhjMWRkN2VlMzJiMDI3YTZlYzM3Yzk4ODUyMWVkODFiNzhjYTVhIHB5M2sKKzU3MDkyIDYwM2RjNTNjNDcxNjIwZTk1OWE4OTZiYWQ3Y2M3MzNmMGUwNjhhODYgbGVnYWN5LXRydW5rCis1NzA5MyAxMzViM2NkNWU3MjMyZWVmZjIxOTFmZTBlNDVlYTUwNzc5ODczYTllIHJlbGVhc2UyNC1tYWludAorNTcwOTQgZDI2NDEwN2M3ZGE2ZjZhMWJkNjM0NWM5NGYwNTVmZDE1YmU0YjQ4NCByZWxlYXNlMjQtbWFpbnQKKzU3MDk1IGExNzY4YmJkNzY4MTllZGI0OTg3ZTE5OGQ2Njk1MGM0YWMxNjc5NTAgcmVsZWFzZTI1LW1haW50Cis1NzA5NiBkOTdmZDQ0Nzc3YjJjMTJjODhmZTYwYzU5ODEzMmVkZWFkZTk2YzU4IGxlZ2FjeS10cnVuaworNTcwOTcgNGQyYWE0YmZiMmQ2MDE0YmU2MWEyNDNlNjg2ZTI2Y2Q0NWU4NmRlMyBweTNrCis1NzA5OCBhZjE4MGQ1NDZlYzIyMDI4ZTNlMTRmMzFhNjIyM2YyMWIyMDI4NGVhIHB5M2sKKzU3MDk5IDhkYmM5ODFmMDQwYjhjNGQ2ZjU3NTgwODhjNmM1NmI4MzcxZDNkODIgcHkzaworNTcxMDAgMTI0YmQyODI0OTNkNTU2ZDMzYWFhNWM5MWY4ZDU0MDYwOTU3MTQzMCBhbGV4LXB5M2sKKzU3MTAxIGQzYTg5ZDlkMmY1ZTA2YWYxN2M1ZDkwOTRhOTk3OWRkZjdjOWI2MmMgYWxleC1weTNrCis1NzEwMiA0NTE4M2QwYjIwYTc5N2Q4MWZhM2Q0YTJmMmM5YjkxNDU1ODQxYmNiIHB5M2sKKzU3MTA0IDg5YTNjYmExY2Q1MjQyMzA3ZjQ2M2QwZmRlNzI0YjIxZWQ2MzlhZjMgYWxleC1weTNrCis1NzEwNSBmMWEyZDUxZjFjYWIyODRmMTY3OGZmYzc1MmMwZjRmNzUxZTEzYTM3IHB5M2sKKzU3MTA2IDE4MTA0ZGJhODVlMzM3M2U4MTQwYmNkNzIwMjRmYjk1YWRiNTE3ZWIgYWxleC1weTNrCis1NzEwOSBlY2I3YjJkZDNhZjU4MDNlOGMwYzMzODEwMGU4MTMyYTk5NDAyOTRmIGFsZXgtcHkzaworNTcxMTAgMzQxMjQ2MTNiYzRkZGFiZmE3MTEyMDlhZGJiM2YyZjM1MDZiNjNiOCBhbGV4LXB5M2sKKzU3MTExIDQ2ZjQ4MGUxMTY2Yzg0YTdiZmVlM2IxM2Y5M2NkYTI2OWQ5ZmIzN2EgcHkzaworNTcxMTIgMGRlYmY5NDU1Y2RjMTc3NTg0OGQ3ODkwNDcyOWEyZWQzMzkyMWQ0OSBweTNrCis1NzExMyBhNmM0ODkyNWRlNTNiMDg2MGRhZjg3OGI1M2I0MDEyMTdhZTA2NDhhIHB5M2sKKzU3MTE0IDIwYWVjOWYzNDU5OGQzNTM5MTFkNWQ2NWM3Zjc2YjQ3YTkxOTU1ZTEgcHkzaworNTcxMTUgYTI4NTlhZTg5ZGE5MWExYmViOGFjNzdhNjA2YjNlYTUwY2UyM2M3ZiBweTNrCis1NzExNiA0OGEzMWIwYmY1MDE4YjM2MGYxYzhmOTEyNTc1ZGM4Y2E4OTAwNTI3IHB5M2sKKzU3MTIwIGI3YTViYzY5ZDJlZTViYjk0MzcxZjlmZjZmNDg1ZThkMzg2Y2FmZGYgcHkzaworNTcxMjMgN2IzOTFhNGVmODljZTJkMTNjMjlkMTIxMjk2ZTUzMTk5YTg1ZjI4ZiBsZWdhY3ktdHJ1bmsKKzU3MTI0IDEyZGQ2Mzc3ZmY4NWJlZDc5YWYxYWEzNzQ3NTQ3MWYzNmZkM2FkNzAgbGVnYWN5LXRydW5rCis1NzEyNSAyODFiNTE4ZTRiY2MyOGNhNDNlN2VkNjRmMDhiODU1MWU0Mjk2YzllIHB5M2sKKzU3MTI2IGZmNWFkYjMzNzRhZGNkZWNjNTU3NTE5MTY2OGMyODg4MTZjN2ZjZGMgcHkzaworNTcxMjcgMjA1NmQ4MzUzYTY4OWI1MTRmYWMwMjFhNDU5ODY0NWU4MzVmYTUxMCBsZWdhY3ktdHJ1bmsKKzU3MTI4IDI2MDZhZWFhODZkNDA2NWQ0YjVlY2Q4NjdjM2RkMGYyYmE4ZDIwMjYgcHkzaworNTcxMjkgZmNmNmRjNTFhZjU0MzFmNDI0MDVlYjFjMDAzMzcyZDVlOTQwOWFmMyBweTNrCis1NzEzMSA0YzVlY2MyY2NhYmRkNTJjNWVmMzlmNDdmMzQwODJiZjkwZTgzZWJiIGxlZ2FjeS10cnVuaworNTcxMzIgOWZjMjFjOGJhYmI5NmM3NjNkZDkxNGNlMGJkOWIyYmNkZGFlN2MzOCBweTNrCis1NzEzMyA2ZjQ5MjI4MDM0MTE2NmEyYTQ3YWNiMzAzMjQwZmE3YzAzMjMzZWFkIGxlZ2FjeS10cnVuaworNTcxMzYgODYxMGExY2E2NTBiMzQyYWVmODAxYTQzMTk4ZTYwZDVjMGNiYWIwNiBsZWdhY3ktdHJ1bmsKKzU3MTQyIGE1ZTk4NGVkYTQ1YTIwY2U3MDAzODhhNTMyNzUzMmY2NzJmODY4MzYgcHkzaworNTcxNDMgZTM5NDQ5MDk1Y2M1YWI2YWY2MTZhZTA5MWRhYWQyNzQ4ZWJiZGJkMyBweTNrCis1NzE0NCBjYzdiNWJjMjk3YzRlZDUyYTc1MjBjZTc5NDRiYzQ5ZDI0NDBiNzZlIHB5M2sKKzU3MTQ1IGE4Y2ExNGNlYzExY2Q2OGM2MDEwZDI0YmI2ZjA0ZmJjMzEyNDVmNGUgcHkzaworNTcxNDYgYzkxNjczMTMyMWMwYjAxZTgzOTliZDk2MzJiMzVjNjYwZjBmNDJmNyBsZWdhY3ktdHJ1bmsKKzU3MTQ3IGYyZjBlOTVhNzk3YmM3N2ZlMmIwMzk2Y2Y2YTc0Mjk5NjY2NWM3NWYgbGVnYWN5LXRydW5rCis1NzE0OCA1NmQ4Yzg3MWRjODZiMzlkYmRlZWVjOTUyZjk2ODVlMDYxM2UzNDJlIGxlZ2FjeS10cnVuaworNTcxNTAgOWM0ZjViMWQ2YjlkYjVmYWRkMjhmMWU3MTZlOTRlNTZhMDUzYjBmMyBsZWdhY3ktdHJ1bmsKKzU3MTUxIDk4Njc3NjQ1Njc5MTM2NWUwN2IzMjVmY2IyOGVhYzViODA2YWRhNGUgcHkzaworNTcxNTIgNzQ0NDY1MDlmMGYyNzZmMDJhNjVjMDAxODZkZWYwYTg0M2UyZDFlNiBweTNrCis1NzE1MyA5MjUxNWI2NDliOTIyN2UxNDQ3NjI3NjVkNjcwNTk0OTlmZjE4ZTQ1IHB5M2sKKzU3MTU0IDFiNGM5NTk3NGE3ZGE3MmRmODc5YzdkYTMyNTg2NTFkZWQ5ZDRmYzkgcHkzay1idWZmZXIKKzU3MTU1IDE3MjFmZjVlMjg2NGQ1YzA3YjIxMTNhMWJjNTg3ODgyYmU1YzVkN2QgbGVnYWN5LXRydW5rCis1NzE1NiA2ODc2YWU5MTdmYjFiYWM3MWJjMjk2MDFiNmViODBiNDY4NTAyZTk4IGxlZ2FjeS10cnVuaworNTcxNTcgYWQwNjMyN2UxZjM5YTczY2NkYzkzOWJlMDA4OWFmYWJhZGU3MmEwMyBweTNrLWJ1ZmZlcgorNTcxNTggYmMzMWRmY2Y3ZGZhMGQ0MTRjNGQ1YTRmZGQ3NTBmYmJmMjIwNDNkZSBsZWdhY3ktdHJ1bmsKKzU3MTU5IDM3ZDcwODU0ZDI1NTJjZTdmYTk1NTExMjhiMGFjZTM2YTlhNThlMWMgcHkzay1idWZmZXIKKzU3MTYwIDM4ZGZlZGYxZDJhYThhNTZiZjI3ZTg5YWUzNjFkZDdiMDg0ZDI2NTYgbGVnYWN5LXRydW5rCis1NzE2MSBiODA1NDEyNTFlMGVkMWVmZTM5MmJiOGJmMmNkZDk2MjMzZWEyM2IzIGFsZXgtcHkzaworNTcxNjIgZDg4NTkyZGQzYTYxMDkyYWM1MWU1ODQzZDBjMmMxNDFjMDgwNGU2NCBhbGV4LXB5M2sKKzU3MTYzIGM1OWY5OTQyNjgyYmIxZGNlY2U3MjljMTM2ZTM0YzljZjNhMmU0MmIgYWxleC1weTNrCis1NzE2NSBkZmZiZmU2MDc3NzRmMDczZmZjODljN2U4NmNjYzc2MzM2YTE1MGU4IHB5M2sKKzU3MTY5IGUwY2M4MzNmZGQzZWJkZTk3MjQwYmU0MjAyNmYwNDYxMDhmODhjYzYgcHkzaworNTcxNzAgYTU0ZDg2NmRjN2I0ZWZkMmViN2E3NzkwOGQ0Y2M4ZjZhZTMxMDgxMyBweTNrCis1NzE3MSBhZjEyYTQ2ZGY3MzdhZDE2YTZiYzkzNGFjZTE5MWI2ZTNhYWNiOWQ1IHB5M2sKKzU3MTc1IGE5MzFjNjAxNWI5MTdhN2ZjNjdiMDNlMjQzMmIwODc0MmE1NTBiZjkgbGVnYWN5LXRydW5rCis1NzE3OCA2OTc1MGIwOThlYTI0N2VkOTM3NjQ2YjczYTdlMmJmZTcxZWQ3MTljIHB5M2stYnVmZmVyCis1NzE3OSAwNjk1MGJkMDRlNjk2OTJjMjhkNGYzMTkzNjIzMzYxN2Y0ZDQzNDkyIHB5M2stYnVmZmVyCis1NzE4MCBhZDQ3ODhkZjUwNGUwOTY0MWUzOTU2MzFiODJhNWVhODk4ZWQ1MmEwIHB5M2stYnVmZmVyCis1NzE4MSA4NWMyMmI0ZDQ0NTU5YjNjNWY0MjY5ODc0ZWNhNmQ3M2M3NWI4YzU2IHB5M2sKKzU3MTgyIGIzY2E3ZjViNTM3YzVkNzJiZmEwZjlmY2Y2MzFjZDkzMTM1ZDY5NzQgbGVnYWN5LXRydW5rCis1NzE4NiA4MWI0NWMwZGEyYzhiOGE2NWIzMTNmMjEyNzFlM2YyNTQ2MGQyNzI5IHB5M2sKKzU3MTg3IDc2ZTA0OTczYjE1ZGZkMGNmODIwNmFmZGZhOGMxMDAzYjMxMmFhNDggcHkzaworNTcxODkgZWQ5N2E5ZDFjMzQ3MzQ0MTJhMjQ0ZDI3NGM5YzA1YTc1N2RhNzhkNSBhbGV4LXB5M2sKKzU3MTkwIDBiYzljZjFjZjk1OTE4OTgyOTVkYmQ2YTBkNTJkN2QzYzVmY2Q2MWYgYWxleC1weTNrCis1NzE5MSA4ZGNlNmUyODcwZTgwOTNlNTYzZmJmNTEwYzg3YmE1YjhjMTA4OWE1IGFsZXgtcHkzaworNTcxOTIgZjc4YmY1ODQyNzllNmRkNzM3NzJjNTQ0N2RkZmVjNjM1NjM2Mzk2OSBhbGV4LXB5M2sKKzU3MTkzIDJjNTFiZTk5MDRkZTFjY2U0NjgyYjcwMmU5ZTViMzgwZjQ1NDEzZjUgcHkzaworNTcxOTQgN2U1ZWZmODdkNjY0YTAwOWY5ODNlMGFmZmY1ODk1N2Q0MTk5M2M2NyBweTNrCis1NzE5OCBmY2EzNTQxNjA0NTg1MThkYzk3ODIyYjY1N2JlYjhmMGYzMWFlYjE3IHB5M2sKKzU3MTk5IDZiNTMwZTAyOWIzYzNkODNmYjc1ZmFhZGQ3ZjcwYzEwNGRkMjE1NmEgbGVnYWN5LXRydW5rCis1NzIwMCA5NWIzN2NhZTQ3YzRmN2VjMTY2MzM5OGI0YzUyN2QyMjNhOWE2OTU0IGFsZXgtcHkzaworNTcyMDEgNzM5ZDMxMDUwOTdmZTAyMmViMzRhNjE0OTMxOTZkMGQyOTU3M2U0YSBhbGV4LXB5M2sKKzU3MjAyIDY5MmY1N2E1ZGM3NmExOWEzZjk2YmIxODdlMzk0Y2RiOGI2ZmUxZDggcHkzaworNTcyMDMgZDAzZWI3NzQ1NzZhM2U2ZTQ5MTkyZjM4YTM5ZjY5MGJhYWY5N2M5NyBhbGV4LXB5M2sKKzU3MjExIDcwNTQ2MTVmMzdmZTYwM2E2NmM0ZjZmMDA4MmQzNDdkZmZlZDZiNGUgbGVnYWN5LXRydW5rCis1NzIxMiBjZDQ1OTFiNzU0ZTAxMWQzNmE4YTI1OWI3YWFlZWNkOGYzZmNjOTNlIHB5M2sKKzU3MjE0IDU4NWQ4YmVjZTgyNjdkMDU5OTg2ZmNmN2IwYWJiMjVkMjNlZmVkM2YgcHkzaworNTcyMTUgOWEyZjM3OTQxYjJiMDVjYjU0MTAxYTVmYzA3OTJkNzFhNWQ4MjU1YyBhbGV4LXB5M2sKKzU3MjE2IDBmNTBlMDkxYTM2ZmVjNmI3ZjU2NGRlMjAzMTRjNDA5ZDZkMjBiNTMgbGVnYWN5LXRydW5rCis1NzIxNyAxNTA0N2IyYWNkM2Q1NTQwOTI5ODNiOWJkZTJmYmUyMTg3ZDc3Mzk0IGFsZXgtcHkzaworNTcyMTggMDQ5OTNkOTZlNzM4MTYzMGNiOTBmZWNkZGM0YmYwODE4NDJjNjNjYSBhbGV4LXB5M2sKKzU3MjE5IGMyM2RjZDk0ZGNjZTAxYjYwNGUyYWQ5YzNlZjMyNjEwMWE5MjhiNWYgYWxleC1weTNrCis1NzIyMCAzNjQ1ZjBiOTQ5MDhiYmFkYmE3MzY1M2I3NjM5MGMxMjU5ZmVmM2FlIGFsZXgtcHkzaworNTcyMjEgYWY2YTcxOTBjYWJjYjNhY2Y5YzMxYjcyZmY3ZThlMDFhYjZiNjMwMiBweTNrCis1NzIyMiBlNzFjMzIyMzgxMGYyNDViZTBkZDUzZWU2ZGQ3YTMyMmM5ZGRhODFkIHB5M2sKKzU3MjIzIDJmNDY3OTMwMTEzMmU4NWU0OGI2ZWU1ZDg1NzI5NGQ0OGZmZTdkZTQgcHkzaworNTcyMjQgNWFiYTk2NDY0Yjg3OTdlYTEyMDNlZjU4ODdhZTVjMDQzZjM1NzgzZCBweTNrCis1NzIyNSA1YzA4NDcyY2ZjMzQ1YzhmNmI1MGY4M2QyMmEyODlmMGM2OTJmMjU0IGFsZXgtcHkzaworNTcyMjYgOTU0MmUyZTZlZjAyYjJmOGE3YzczY2Y3ZDc4NTcxYzRiM2ZhMGQ0NCBhbGV4LXB5M2sKKzU3MjI3IDQzYjM1NGE4Zjc3M2NmNTI3YjI0NzJjNDEzOTQ3ZTk3ZTlhNDhmYmQgbGVnYWN5LXRydW5rCis1NzIyOCBkMGYzZDI5YjcwOGQzMDhiYTBlNjQzMmFjMGU2MGFiZTgzYjM4NGYxIGFsZXgtcHkzaworNTcyMjkgZGRmZjUyMWFjN2YxYTkxMTYwNTU4M2I1NzY2YzBmNzQ3YjgyYWRlMiBsZWdhY3ktdHJ1bmsKKzU3MjMwIDhkN2ZhOGE1YTdlMzhmZTViNjJjMjBjZDUzN2U1Zjk5MTAzMGQ2ODMgbGVnYWN5LXRydW5rCis1NzIzMiAyYjRmZWUxZDQ4NjFhYzNjYjgxZjhmMzA3ODgxNGZhZGQ2NGI4OTdkIGFsZXgtcHkzaworNTcyMzcgNDQ3NGZmMTBiYjBhMjJiOTVhYmVlYzhlZDU0Y2JlZWY0ZTUwZDQ4YiBweTNrCis1NzI0NCBhYjdhNmU3NGJiZjIzODE0Njk5ZWNmNDMzNDhjZDRhMDM2YTU3ODk2IHJlbGVhc2UyNS1tYWludAorNTcyNDUgNGYxMTI1NTk1OGJlOWYyNDc2OWM1ZDY1YjM4MWIzYmNiYTI3NjJlMSBhbGV4LXB5M2sKKzU3MjUxIGMwNDBkYmI2OWRmNzFjOTEwYjI3MTQyMzcyYTc2NDFiNTg2N2VhNTAgYWxleC1weTNrCis1NzI1MyBlZTllYmJmNWYzZGM4YjAyZDI1YjliNDdmNDc0ZjA5ZTZkYjZiYzhiIGxlZ2FjeS10cnVuaworNTcyNTQgNjJlZWU3OWRlOTIzYWM3ZDRjMTE2ZTRlOWMzNTM3NmMwZjFlNjEzZCBsZWdhY3ktdHJ1bmsKKzU3MjU1IDFlZmU5YjEwYzRhNmYzMmFiYTZjNTRlZGNlNjA4YzJiOTY2ZGQ1NTggbGVnYWN5LXRydW5rCis1NzI1NiBmYWNkZDc0YTBiZGQxYjc0ZDMzMjBjODIyMGZiOTVlZjY4YTdjMjQxIGxlZ2FjeS10cnVuaworNTcyNTggNWJmNjhmYzczOTIzYTk2OTg3YjcyMGZiNDI1MWQ1MDNmNDZlZTcxOCBweTNrCis1NzI1OSBmMzE4MWU5ZmRlNGQ3YTBlNWI0NjYzZTMzMmI1ODNlNWVlNTBkMzkxIGxlZ2FjeS10cnVuaworNTcyNjAgZGU2ZjMwYzYyNzMwNTQzNzA3MmQyYTkyNWRlNGRhZmMwM2I2OTY0MSBhbGV4LXB5M2sKKzU3MjYxIGQ5ZTM3ZDI2Zjc4ZTk1OTIzNWM4M2UyNjg4YmVmMTdlM2FjM2ExMzMgYWxleC1weTNrCis1NzI2MiA2ZDI1MjgzOGQyMzA2Mzk3ZDFiMDdhZGMwZTg5MTIzNTVhNjBjM2E5IGFsZXgtcHkzaworNTcyNjMgYjkzNzkyY2VkOWU4MGYxNjZiYWQxZDhlZjAyYjY3ZTAyZDI0YWRjZSBhbGV4LXB5M2sKKzU3MjY0IGFlY2ZmOWUwZWVhZTRkOWY4NDcwMzY3MTU5Zjk1YWMwYWI0YjIyNDMgYWxleC1weTNrCis1NzI2NSA2MDU0ZDdkMjM0OWYwNDYyNDZhMWY1NDE0MTM5NGZlMjE0ZTZjMTk5IGFsZXgtcHkzaworNTcyNjYgMjA4MTExNjEyNWNlYTlmNTY4MmRjMGZlYzRiNmY1NTVmMjJiOWE3ZiBweTNrCis1NzI2OSBlNzY5NmZjZTMzNzYxMGJhM2RlMWE5NDlhM2ZjMzI3ZTI2NGU2ZTA5IHB5M2sKKzU3MjczIGEwM2YzNzhjM2JmN2JmMmM4MWNlNWQ2YTg5MzBhNTU2ZTQxOGI3NDcgYWxleC1weTNrCis1NzI3NSBjOTQ3YTA0NzY4ZTQ1YTIzMTFkYzBkYWExZDI2MTQ2NTI1ZWM5ZDZhIHB5M2sKKzU3Mjc2IGUzMWIzODdlNmQ3NzVjMTA1YWIwZGRlOTAxYjNjOWU0ODY4NGU2MTAgcHkzaworNTcyNzcgMDA4MWRiYWNiN2FhNjEyMmNjM2UzNTY4ZGU2MGRiYjFiNmQ1MzNmNiBweTNrCis1NzI3OCBkODAwYTljZGFiNzY0NjQxMzg4MGQ2MjZmMWQ0ZjQzMDk3MGJjMDVlIHB5M2sKKzU3Mjc5IDNiNGUzOWU4MzE5MzIxMmMzZTU2NjNhMTdkMzkwODg2OWMxMGFjYzAgbGVnYWN5LXRydW5rCis1NzI4MCA4NGM1YzA1MjRkM2NlZjdkY2Q4MjYxZmI5Y2JkYWIzMjUzOGM0NGYyIGxlZ2FjeS10cnVuaworNTcyODEgMjY3M2NkZWQ4ODU1NDUxMGMwMGZiZDE1M2U5N2Q3Y2YyYjZhNGVkOCBweTNrCis1NzI4MiA3ODIzNzBjOTM1NzU4ZTY0MzM0YzRiM2UyMDllMWQwODA1MzRiNDExIHB5M2sKKzU3MjgzIDhiYWQ4NzIyZjBlNjQyOGQyYWI3YTA5Y2UxYzRhNzc5NjRjMTIxNTQgcHkzaworNTcyODQgMDkyZjAyY2YwMThmOWQ5Mzc5MDAzMDIyOGM0MjhlNmQyZGVjN2E4NCBsZWdhY3ktdHJ1bmsKKzU3Mjg1IDFiZjE3ODU1ZThlODVmMWYzNzYyZTFiMTI1YmFjNTU2ZmFkZjhjOGMgcHkzaworNTcyODYgOGI2NDAwZjk3MTZmZWUzZGJmOTRiODIyZWIwMTU2YzA0MGUxYTdlYSBsZWdhY3ktdHJ1bmsKKzU3Mjg3IDVhMjBlZTgwNTgxOTU4YjAxNWMyOTNmYzkzMTNkNzU3N2MzNjY5MDQgcHkzaworNTcyODkgMGIwNjA2OTY2MGMyMmJlYzJlN2Q3NDg1OTViODllNDk2MDdiM2UyNSBweTNrCis1NzI5MCA5ZTgxYjIyNjg5ZDJkMTdkYzNkMjE1YTQ4MTRiYjY4YzY3ZTI2ZGIwIHB5M2sKKzU3MjkyIDY4OGNkNDM5OGY0NDY4NTYwNmEzNDI2MjgyZmI4MWFiNGIzZmU2MTYgcHkzaworNTcyOTMgNTA5OGM2ODc5MDkxNmY0ZGMyN2NjYjIwOTYxMzI2NGRkYjhhNzFlYiBweTNrCis1NzI5NCA1ODkxNzUxNGU0MjNlY2YyMWYxYWQ2ZGI3YzYyMmM3YjM0MTYwZTc3IHB5M2sKKzU3Mjk2IGFhZDE3YjFhYjBjOTJkYjNiYTgxZmJlNzA0NWZkZWIzNTNiZmIxOGEgcHkzaworNTcyOTggMmVjMTZiNmI0ZDA0NDIzNmI1ODk4YTQ3ZjgzNzkwNDUwZGZhMmViMyBweTNrCis1NzI5OSBlNGFkZTE2YTY5NGZmNTQ2ZTBhNTNlYTU4ODcyZTZhYjNmNzRiZTFiIHB5M2sKKzU3MzAwIDI2YjI5ZjdiOGZmZDhlZjlmYWFjM2E4MDhmODUxM2ZiYjI3ZTcwYTkgcHkzaworNTczMDEgMTk5NTA0ZmI5MWM1ODBlNmM2YWZhZGYzZGRjMzlmZmY1ZGE0ZTZhYiBsZWdhY3ktdHJ1bmsKKzU3MzAyIDdmZTI4NDhmZDQxZDc0NmNiODk0ODRmMDBiMTZiOTY5ZDA3MWU5NjggcHkzaworNTczMDMgYWU4M2VmYjczNTA2ZDI1N2VjMzEzYWE3MDBmZTA0NDgzNTc1NDQ0MiBweTNrCis1NzMwNCBlYWUxMGQ5YzljNGVlZGI1MTk4MTIxODZiNzQzZGRiOWVmNTFmMmRkIHB5M2sKKzU3MzA1IDUwNmI5MTdkMjM2M2E4NzBmYzYwMTY1MWVjNzg5YTA5YzBiNTY4MTUgcHkzaworNTczMDggMzI4NDMwN2E3MzUxOWE5ZDViZjQ1NzIzYjIyODM1ZWQyZjc0NjJlOCBweTNrCis1NzMxMCBmMzQ3NmU5YmJlNmFiMzYxMDYwM2YzOTA5MDI2Mjg1NGRjNjQ4MGQwIHB5M2sKKzU3MzExIDdmNGQ5M2UwMjk1Y2FjNWI1ZmQwZWJjZTc5Y2IwNTU2ZjMyYjYzMzYgcmVsZWFzZTI1LW1haW50Cis1NzMxMiBmYTlhNDBlZjA3ODBkZDc3ZmNjYWM3ZDdiOGY4MThiNWY1ZGI5MjA0IHB5M2sKKzU3MzEzIDA2ZGU2MmYzM2MzNzdkNjMzYTFiZmM0MDZjYzgyNWRhYWRiYTUwNjUgcHkzaworNTczMTQgYTlhNGNmOTFjYjdlN2I1Y2ZlYWIxNWRhYmIzMGFmZWQzMTNlMmZlOSBweTNrCis1NzMxNSA4MGJjNjg4NTBhMDg2MGRiMWM3ZWZkYzE3YTExNWUwZGY2NzlkODM4IHB5M2sKKzU3MzIwIDI0ODBiODY0YmUwMzk3YTYwNWE5NjgxMjk1MjYzYTc0YzQ2YTMzMDQgbGVnYWN5LXRydW5rCis1NzMyMiBkZTFiYWNlODFlNmVkMmE0ZTUzYjg4YTNiNmNlODk2MThiZjQ4OTlkIGRlY2ltYWwtYnJhbmNoCis1NzMyNCA4ZTg3ZDlkNmU4MTI3NWMxMjRmNWE3YjE2MDhkMmI1MTJhZTBiODIxIGxlZ2FjeS10cnVuaworNTczMjUgN2E3NWNkMjhiMTI1ZDNiNmViOTkzYWM2MmYwOTY5MTg2ZjI4ODA0NiBweTNrCis1NzMyNiBiMzQ4NTUwYTJiZmM2ODhkNmFiZTdhNDdkMzZhMjA5YThlYzk2YWU4IGxlZ2FjeS10cnVuaworNTczMjcgYmNiZGM5NWRmYmE5YWE1NDNmMDQxM2VlMzk3MzVhOTZmNmIwYTI5NiByZWxlYXNlMjUtbWFpbnQKKzU3MzI4IDkwODczMzdmM2EzZjg5OTFkZmUxMmY3MTRkOGUzYWFiZmNlMDM3OGEgbGVnYWN5LXRydW5rCis1NzMyOSBhOTExY2Q5ZDE5ODkzYmU4ZjRkZjg5NDhkMzljYmMwN2RhNzBjOTM3IHB5M2sKKzU3MzMwIGRkZWZiZGJkYmNiNTFjZTBhYjE4N2E1MjU1ZjMzOTE0ZGNkY2UxNDggcmVsZWFzZTI1LW1haW50Cis1NzMzMSBhZGI4M2Y0YWM0Y2JlNWUyNWMwYTJhY2VmYWM1YzYyMWMxMmQ1NTdiIGxlZ2FjeS10cnVuaworNTczMzIgNzI5ZmU5OWI0MGE1NzJkZWM5ZWZhY2FmMTZjM2M0NWE2YTlmM2VmYyBkZWNpbWFsLWJyYW5jaAorNTczMzQgNGVkZmM1OWI3MmIyYjRmMWRjOWMzYzhlOGQwNGZjZTcyNGNmZDAwMyBkZWNpbWFsLWJyYW5jaAorNTczMzUgYWY4ZmM0NmQ0YjU2MTc4ZWZmMzYyMDMzMDA0NTQ2MjI2MWM3OGEyZSBkZWNpbWFsLWJyYW5jaAorNTczMzcgNzFjNjhkZTNiMWM1NzRkOGFhYWE2YzdiMDFjZjQ2MDU4NzdlNjgyMiBweTNrCis1NzMzOSBmNTNmMWExYWMwMTY0MGY4YjNjM2JiODA3YzFkN2UxZDZmMDQwY2JkIGRlY2ltYWwtYnJhbmNoCis1NzM0MSBhMmNjMDE4ZjM3MDBkZDQxOWZlM2FiNGY2M2M0N2MwOWViMDM4MzdhIHB5M2sKKzU3MzQzIDkwODBjYzc2ZGE5OGYwZTEwOGYxZWU5YWM4ZmY0ZTFhNDRmMTQ1NjMgbGVnYWN5LXRydW5rCis1NzM0NSBlMWNkZDZlZTkxMGU3ZGIyM2Y2YjdhMzhmODcwMTY5ZTZmNTM3YmMwIGxlZ2FjeS10cnVuaworNTczNDYgMDBmOGIyNDgyNzY0Y2Y2Y2ZjYjhlMjJjYjQyNzY3NzgxNWE4ZGJmZSBkZWNpbWFsLWJyYW5jaAorNTczNDcgMDMxOGFiY2ZhZjM2YTZmZDY4NGZiODEwYWYxNzYxNGVjZWJlNDBjYyBsZWdhY3ktdHJ1bmsKKzU3MzQ4IDk1MjA1NzljYzMwYmZkY2E5YTc3Mzk3ZWM4MzcyMWRlZTk2YTAxM2YgbGVnYWN5LXRydW5rCis1NzM0OSA4MTg4NmUwNWZkNDAxNmFiYzRlYmMwZWE4MWRhZTQyMDc1NzgzOTRlIGxlZ2FjeS10cnVuaworNTczNTAgYTE1NjU0MDQ1OTllNWVkODZmNjgwOWRlZTg4ZWMwNjY0YjcwOTQ2OSBkZWNpbWFsLWJyYW5jaAorNTczNTEgMjY1MDBiYTA5ZjcwYzYyMDU3ODRiYzhhMWMyMGM0MWMwZGJmYTRhYyBsZWdhY3ktdHJ1bmsKKzU3MzUyIGUyMDQyZWMzMzBhNDU1NTIyOWEwZjFhMjRlZWJjMjhlZjEyNWE5ZjIgbGVnYWN5LXRydW5rCis1NzM1MyA5YTM0N2JhMTdjYWIwZThmOGFkYjJlMDA5YTFkMmU4NThhNTFiZDNiIGxlZ2FjeS10cnVuaworNTczNTQgM2VkNzgxNGNjYTM2NmQwOWY3ZTFlNmI1NGVjNDZkY2I4MzFhZjA3NyBsZWdhY3ktdHJ1bmsKKzU3MzU1IDc3Y2YyODA4ZWVhNjM3NTExZTYxNmYwNTAyNmE5NTY4NTYwYjQxZWEgbGVnYWN5LXRydW5rCis1NzM1NiBjZTUyY2Q3MWE4ZDlhMjdjMTBjNWE5MDllMTMxZDg3NmJlMzBlNGEwIHB5M2sKKzU3MzU3IDIwNzNlYTMwMDVhNzg3OWViNTk3MDQ5ZDQ3ZTdkZGY2YmI2M2NlNTIgbGVnYWN5LXRydW5rCis1NzM1OCA3OTIzYmZmMTkyMTJiMDM5YzM1YTc4MTYzZWQxNTZiNDQ1ZjE3ZjhhIHB5M2sKKzU3MzU5IDA3N2ZlNzg2MGNjOWIxODY4NTVmNTQzZjFhMjZlNDQ1ZGQ3YTdjMzAgcHkzaworNTczNjEgMWM5OGI0NDVkODQ3MDk5YzI2NTJhNzU3ZDQzNTE0ZjcwZDgyNTFmMCBweTNrCis1NzM2MyA0MmIzOWNiNTM2ZDllNGI1OWY0OTU5ZjY5ZmVkMDI5ZWViODBkN2VmIHB5M2sKKzU3MzY0IDBiNjI1MzlhY2ZiOGRlZDY3MjUxYzc1NDhjNjZhYzhjNmRiMzRiYjggcHkzaworNTczNjUgZTc0NGEyMGVkOGE2YWRiZjA0NjMyYjdiMjYyY2FlNTA5ZTI2NTM1ZiBweTNrCis1NzM2NiBmOTRjNjhmY2Y3OWRjNTI2MmNlNWM0YTNhMDA4ZWU3NmU0MThkMmM2IHB5M2sKKzU3MzY3IDI3M2FjZTM1OWU1NWU2Y2JiNTY3MDhhNGJiMzZkODU0OTkyMDBjY2YgcHkzaworNTczNjggZTNlMDZiMzg5NDA2YTkwYTM0ZTU5ZDc0NzRmYTU2ZWExYmRkNjc3OSBweTNrCis1NzM2OSA1NjdjOTIzY2IxYzYxZDkyZTViNzQ4Yjk0Mjk4NTRjNzZiNTVhOTZhIHB5M2sKKzU3MzcyIDgzYzg0NDhjNmRlNDExNWFkOTIxZWQwZGM4MjhlNTU2MDM5ZWQ0YTcgcHkzaworNTczNzMgNjZmNzNjZTk3YjMyZDcxNGEwOTg5Nzk4OTliNmFkNmVjZTc2NmY2MSBweTNrCis1NzM3NCBiNjI2Yjg0YjUwNzA0NTEwMWUyYzIxYmYyMDBjZWNjMmFmNGRiZTliIHB5M2sKKzU3Mzc1IDE5ZGE0MWZjMTE3YTAzYWQ3ODY5ZWNlOTdiMWY3ZTM0ODJhMjMxMDMgcHkzaworNTczNzcgYjE5N2MxYzA0YmExNTg2OTIxMjQ0NTJkOWY4YjBlNmQxOGM0MDMyZCBweTNrCis1NzM3OCAwNWZlMDI3ZTJkODA5ODI4NGRkODk3OGIzMjlhOTk5NTExMzEzNzQwIGxlZ2FjeS10cnVuaworNTczNzkgMzE0MTUxNWY2YzQ1YTI4ZWNkMWM2MmU3YTc2YzM5NjE5YzE5NzY1ZSByZWxlYXNlMjUtbWFpbnQKKzU3MzgwIDJiOWIyMTQwMjY1MDQwZDAxYjY1NDQ1MTAxZTlkNDgxMTQwOWM5NjggcHkzaworNTczODEgZDNiYWFiMjA5NjI2NDllMmVmNDIzOWFkNDc3ZWJmNDk4OWJkMzMwZiByZWxlYXNlMjUtbWFpbnQKKzU3MzgyIDczMjMzMzE4NzZkZDQzOThkYzJlMWNkYTFjNTU1M2QwNWEzZjdkZmEgbGVnYWN5LXRydW5rCis1NzM4OSA4OTAxYTdjZTZjMDc0NWIyZWNjODI1M2FmNmM3Mjc1ZDFlOWVkZGQ1IGxlZ2FjeS10cnVuaworNTczOTAgM2ZiYTE0ZWM5YWFlYjQ4M2NhOWExMGI0ZGNiNTZhYWMyNDYyYmI4ZSByZWxlYXNlMjUtbWFpbnQKKzU3MzkxIDJjNDIyYTQ5NzJmMWM5NTYwNmRkZmU2ZmNlZjAwZDEzZmJjMzY4OGMgbGVnYWN5LXRydW5rCis1NzM5MiBkNzUxN2MzMDY3OTE0NWFhMGNjZjg2ZjE2ZTZkODEyZDA5YTc0NDNhIHB5M2sKKzU3MzkzIGMzYjUzZTA3NGVkMTFiM2I4YWRkMmU2ZGE4ZTdlYmZjMDFjM2I4MTUgcHkzaworNTczOTQgOTQyODYwZjhjZDk3ZTljNTgzYThlYjkxZmJhOGY0M2Q1MWU2YmJkMyByZWxlYXNlMjUtbWFpbnQKKzU3Mzk1IDU4ZjM1ZGYwZjZmNDg4NmQ0ODlhNzEwNGM4ODY3NGJmNTgxZTc3NTQgbGVnYWN5LXRydW5rCis1NzM5NiA0YjcwMzZkYzc2ZDU1OTIxOTc4ZDZkMDYyYzMxMWY3YmY4YjE3OTRiIHB5M2sKKzU3Mzk3IGUyNTc4ZjMwNDJiMmQ1Mjc1NjRjYjc1NWU4NWRjNmEzYzBkMjg2ZGMgbGVnYWN5LXRydW5rCis1NzM5OCA4YjFiMzI3MjU0YzBkMzUxOTlkZmQyMWIwYjM4ZmZiMTg3ZjkxYmU5IGxlZ2FjeS10cnVuaworNTczOTkgMjU2YTRkM2M1ODFmNzJkNjRlZDMzNGU0ZDRlMjNhMWViOTU2ZDQyMiBsZWdhY3ktdHJ1bmsKKzU3NDAwIGY3OThjMzY2MjcwYzBmYmNlMzZkMDNiMTQ4Yzc0ODMxYmIzMTgzZTkgbGVnYWN5LXRydW5rCis1NzQwMSA4YzU2OTU2OTcxYWRlM2VkNjU2ODk3MmU3YzEyODM3ODRmNzY2ODFjIGxlZ2FjeS10cnVuaworNTc0MDIgMzAyNWU2NzZlNjY5MTgzODEzOTNlMzU0ZTMxYTZhNjQwMzEzYmY0YiBsZWdhY3ktdHJ1bmsKKzU3NDAzIDA2NmQzOWZhZDQwOGUxZDFkNTc5ZTJiZjM4ZTUzNGEwODI0MjNjMGIgbGVnYWN5LXRydW5rCis1NzQwNCA0OGQ5MWYxNTU4YTAwOWQ5NWU1YTYzNmYzOWY2OTY1YzAxYTEwNTZjIGxlZ2FjeS10cnVuaworNTc0MDUgYzZkNjMyMWRjN2Y5NDJjMThmZjY0ODg2ZjExNDU0MzliZGE0NzFiNyBweTNrCis1NzQwNiA3MjFjM2VhMTNkODRhM2MwNTlhMTM5M2E5ZTJhM2E0NDQzMTEyZWVkIGxlZ2FjeS10cnVuaworNTc0MDcgNjEyNGIyZWY2NTEyMDE2MTllNDBkNjdhYjM5NTY1NTE0YzYwZjZjMCBweTNrCis1NzQwOCBhNmU1YjM4NjhmM2Q4MjQyNDIzMGM0YTcyY2EzZjVkZjA3ZjA3Y2FmIGxlZ2FjeS10cnVuaworNTc0MDkgZTQyZTdkMDMxNzNiMzE0M2I3NWU1ZDAzMzg3ZTI1NzA3YWI0MDhjZCBsZWdhY3ktdHJ1bmsKKzU3NDExIDYxZmI1OTc5MTdkMWNmOTc2YmVhYjAwZTA3YjllYWNlYTcyOTNjYTAgcHkzaworNTc0MTIgODQ2MThiMjA2NGMxNmFjMzYzZTU4OTI1YTQyYjdjMTAxMTNjODIwZCBweTNrCis1NzQxNCA2Y2Y2YjgzMWFiMzZjZTA2ZTBjNTRmZmIxOGIxNzM1YzJhZDM2Nzg5IGRlY2ltYWwtYnJhbmNoCis1NzQxNSBjZjJiMzdiOTBjNjZmNTQ5NDdjNmJmMTExNGJlN2QwMDk5ODIwMjAxIGxlZ2FjeS10cnVuaworNTc0MTYgZTFhMzY1NTlkOGI2ODk3OGFkNjZjMjgwM2I1NDZlYmQ5N2NjYzczMCBweTNrCis1NzQxNyA4ZTk3NzExZmFkYzE0NzAwNzIwNTQxNjBjM2MwYmI3OTlhYzU4MWFlIGRlY2ltYWwtYnJhbmNoCis1NzQxOSAzODM2MjBlNjJlZTY0YzRlNGEwN2NjMmJhNTIwMDc3OWJjMTdjNzgyIHB5M2sKKzU3NDIxIGIwYTcxYmZmYTBhMWY3MTM2ZjNlYzg3MGQwOTgzNjgxYmNmYTljNzYgcHkzaworNTc0MjIgZDAyNjEwYjBhOWYzYWNkYzVlNjI5NzIyNzg5NDhlOWQzODMzMmU2NSBweTNrCis1NzQyNCA4ZTYxNzI3ZGI1MjliNWIxNjhkNzNlYTExNjA4MTI0YTRiMzgwOWIwIHB5M2sKKzU3NDI1IDQxZGE0OWM5N2E1OWVjNmY4MjcxNjFkYTZmY2I3ZTU1ZWFmNTRjNmEgcHkzaworNTc0MjYgMDFlZTYzMTFiYTQ2OTRjMmM1N2NkMzhlZTEyYjhmNDM0NWFlMDc1NSBweTNrCis1NzQyNyAwOTk0OTU4ZmZkNGZkNGQ3MjhjMTFmNWZiNTJiZmJiYzlmOTkyY2QzIHB5M2sKKzU3NDI4IDY5YjhlMjk3NjU1NjVhNzQzMWRkYjliNzg2NWMyZTk0ZDhiZjJhZjkgcHkzaworNTc0MzIgM2NkNjBmNzQ0ZjhlOTNiNjAwZDQ3OTgzMzM4ZDAwNTU0MzYwNTQyOCBweTNrCis1NzQzMyAzY2I1ZGVmMTg2NWRhNjU4MGVlMmJiODc3N2NkMmE1ODhlMTYwMTQ0IHB5M2sKKzU3NDM0IDc4ZjdlZDdkODA2NDljMTE0YWUwNzYwN2IwNzlkMzRmZWM1YTBlZDMgcHkzaworNTc0MzUgNTk5NTE0Mjg5MjI2ZTFhNDk5MGFhOGM2ZTVlYWNiMGEwMmI2ZDM1ZCBweTNrCis1NzQzNiAwMGUxMjhiNTI3MmY1NWVhZjY3MjM4ZDI0YzA3OTg0NzcxNmE1MzY3IHB5M2sKKzU3NDM3IDc3NmI4YmQ2OGIzMDFhMDY2YjUwM2JmZTlkMjQ4NDA1NjMzMDgyNzUgcHkzaworNTc0MzggMmMyZTkwNTg5NGEzODBjNjU2ODg5YTY2MmQ1MjIxYTAyYzQ2YzNjMiBweTNrCis1NzQzOSBhOTllYzRiZWZkYThhZGZmNTI2ZWFjMDQwYzdkZDlmYmRlNmE2MjllIHB5M2sKKzU3NDQwIDc0Yjk5M2E4YWQ2ZmVmNzMxOTQzNjU5YTE5YzEwYjgxNTEwNDc5OTcgcHkzaworNTc0NDEgM2Q1ZDA5YjQ1MWI2NmEyZjg1ZTRjNzJkYzcxYTFmZGJiYWRmYjg2MCBweTNrCis1NzQ0MiBmODFkOTRjMDVhMGVjZGE0MWRlMGQ5OGFjNGU3OWEyNmI5Zjk4MzdjIHB5M2sKKzU3NDQzIDg3MmM3YzNmMGFmMzU0MDBlZmM1MDZmYjQyZjAyY2EwM2FhZDA4MGYgcHkzaworNTc0NDQgNTM1NTMzNzcwOWUxMDk1MGJjNmUyNTZmODVjNDNjODgyMTRhYjg3ZSBweTNrCis1NzQ0NiBmYjU4ZmIzYmRkYzE5YjlkZDY5MjcxZTg1OTczNjU1ODBkYjNiYmJiIHB5M2sKKzU3NDU1IDFiNDIwZTZlMDBlYjE2NGE1ZmQwMDQ3YWQzMDMyMDk1MGUzMjMyZmUgbGVnYWN5LXRydW5rCis1NzQ1NiAyMmJiYWZhNjkzM2JkOWZjZDAwMjc5ZTc4NTBmMzExNjRmYzlhNmNkIGxlZ2FjeS10cnVuaworNTc0NTcgYmIyODhlMDRiOGU1ODg0NmM5YzNiMTNhZjc4YzU2OTljNzQ2OWI1MyBweTNrCis1NzQ1OCAzMDJhZWVlMzJkYTgzYTQ5ZmM3NDhlZDEyMDZhNjdkNzI0NTIxNWJlIHB5M2sKKzU3NDU5IGJkOTNhYzMwYzc3OTUyYmY5ZDIzNzY3MTYwOGViOGNhNzhjZjdhODEgcHkzaworNTc0NjAgMTg0ZjgwMGZkYmY2Nzg1ZmNkZDQ2NWZkN2ZmNWEwZjJhZDc4NTBjMyBweTNrCis1NzQ2MSA1NDNmMmJhOTdmYWI5ZDdkMWU2NGZlMTYzZTY2MDJiMjVlZjkwOTVhIGxlZ2FjeS10cnVuaworNTc0NjIgNzgzNDBjY2VhMTRiZTQyZTcwZjM3MzIwYTEyZmMwN2Y5OWI1NmM1ZiBweTNrCis1NzQ2MyA2ZDEzZTE4ZjcwNmFlMzk2OWRmZTk2OTVjMGEwOTg1YzYxYmE1Y2JlIHB5M2sKKzU3NDY0IDA4YjYyNzhhYTFmNDA5ZmNhYjBjYmNjY2RmM2YxODM5NTkxMjdmYWMgbGVnYWN5LXRydW5rCis1NzQ2NSAyNDEwNTM3Mzk3MzMzMjQ2M2FkMTM0ZGFlZmJkZTNjNGI4NDYyMTcxIGxlZ2FjeS10cnVuaworNTc0NjYgYmIzMzZhNjhhNDdmMjUzNDQ2YmQ3Mzc4OWI2ZDBkMTI4YjI4MTk2NSBsZWdhY3ktdHJ1bmsKKzU3NDY3IDRjZDExZTgyNTY0NDgwOWUxYjY2MThmZWUwYjU3NGEzMDk0ZTMzNTYgbGVnYWN5LXRydW5rCis1NzQ2OCBjYWZlMWY2NTNkYjM2YjYzMWQ0NjY3M2YzMjc3M2Y2MDAwZTg0Yjk3IHB5M2sKKzU3NDY5IDZhMTgxYWJmYzhhNDA3MGNmM2YzMTQwOTk1MjU2ZjAyZDNlYjRhZDggcHkzaworNTc0NzAgMjBlMWNjNzRlOGNhNTFmMjU4ODZjOWY0NjUzZTY5OTJmZjVlYTA0NCBweTNrCis1NzQ3MSA1YTliN2MyZjM1ODlkOTUxMDUzODc2NWYwNWY5MDE3NTczMDcwM2NmIHB5M2sKKzU3NDcyIDc4Y2YyYmRhODg1NzE4ODJmYzVlYzBhNWMxYjg3NjEyZjJlMGUxNmMgcHkzaworNTc0NzMgZWZmZWVhN2NmODk4NDg1MWI1MjgyNTg4NDYyYjRiNmQ1ZDJiYzdhNiBsZWdhY3ktdHJ1bmsKKzU3NDc0IGQ4YTYzYjYzMjc0MTJmOGRjZmY0MDlhYmFmZjFmYmEyZjkzNTRiMGQgcHkzaworNTc0NzUgYzMxYzIwN2I4Yzg2ZDU1NzdjNjc5MDM1ZDc2MTcwYTlkYWExNzVlYiBweTNrCis1NzQ3NyAwNTQ4ZGY3ODEwYTBjYjgzM2MxMmFlNWU4NDI4NDZiNjI3ZmU1NzA3IHB5M2sKKzU3NDgwIDNhNjg5Zjg4YzgzODVlMTFkMzBlODk0YTFhYWQ4NTU1Y2Q4MDI3MWIgY3B5X21lcmdlCis1NzQ4MSBhOWIzY2UwNjY1YzNhMzVkMzJmOTFjNTMwMjM4YmRiOGM0ZjgwZGNjIGNweV9tZXJnZQorNTc0ODIgNjczY2JjODVkOGM0MGJjMjBmZTAxNDdiMTkxZTgwMDllYjRiMjAyYSBsZWdhY3ktdHJ1bmsKKzU3NDgzIGViMTlmMmZhZWVhMTJiMjJkNzUzNDYzYzllYmVkYzNiNjVjODMzYzAgbGVnYWN5LXRydW5rCis1NzQ4NCAzNGU2ZmE3OGI2NDMyODg1MmExOTI5NWEzYzA1NThiYjQzNGJlMmQxIGxlZ2FjeS10cnVuaworNTc0ODUgNmU3MzU5MTA2NzE4MWEzMzI1MzkxNjM3MjgyOWZjMGFkOTExZmI3YSBweTNrCis1NzQ4NiAzMTUyZGY3MDUxN2E2ZjEyMTQ3YTYxYzQ3OTdjZWRjY2ViZjhmMWFiIHB5M2sKKzU3NDg3IGI1NWU3YzUzMjUzYzBkMTE0OTNjOTFlNjk1N2EyZDZiMDdkN2U5ODIgcHkzaworNTc0ODggN2ZmYWRkZDFkZTMwNTBjNGRmYzU0NzQzNGVlNDMzZGU5ZWE0NzJlNyBweTNrCis1NzQ4OSBlZDFkMzUxMThlZDhmMGY0MThlNjQxODNjYjY5YjA5NTZmYzYzZGQzIHB5M2sKKzU3NDkwIGJiYzQ0MzI2YjUzZDY5OWUwY2M4YjQ3OGNjMmI3YWVjMWJjNzdjMzIgcHkzaworNTc0OTIgMDI3YzdkMDQ0Y2ZkN2NkOGQ0MzQ2N2YyODgyNDg3YmQxMmU0MjQwOCBweTNrCis1NzQ5MyA2MzgwZjg4ZTNkZWVkYjMyZDNhY2E5Njc0NWQ1ZjdiYjMxZjMxYmI2IHB5M2sKKzU3NDk0IGZlZDRmNzJiMDRjYjlkOTgyNjk3ODUxMzJhZmQ1NjMwZjNhNzE5NGIgcHkzaworNTc0OTUgMTM5MGMxMWU2NDBiMWE2Y2NkZDQ4NmU3NzBjMGM4OGJjYTM3OTNmOSBweTNrCis1NzQ5NiA4MjRiOWQ1MmUwMDZiY2FjOWJlNWVhZDI3MmMwYzdkOWM4M2M0N2RmIHB5M2sKKzU3NDk3IGQ1YjUyZDU2YmViYWZiZGVkNDZmNmZkMDYzZTcxOWZiZDFiMWMzNzMgcHkzaworNTc0OTggZjNiM2ZmZDEzOTU0OWVhYTE5MzZjYTViZjk5NDljZjA5Zjk4NWQyMiBweTNrCis1NzQ5OSBlZjU2MjgxZjAzYjQ1ZDQ1OGIxZWZmZDE5NTkzMGQ3ZTVkZmQyNmQ1IHB5M2sKKzU3NTAwIDE1NDdkZTE2ZmVjOTUxYTZiYzIzY2Y5Y2ZmM2VkOGU0NDQ5MjczODIgcHkzaworNTc1MDEgMDM2NTk4ZGU0NjYwZDYyNGY5ZGM5ODc1OWNjYjljNDQ5NjgwNDQzMyBweTNrCis1NzUwMiBiZjFhNTNjYzZlNjUxZjdkNTBlNjNhYTFiN2JhOWZkYTRkNDQ1MmNkIHB5M2sKKzU3NTAzIDc4ZTAwYTBmNjAxNWU1YTFiMDc0MzE4NmE2MzRlZWYyMGZlMGUxMTQgbGVnYWN5LXRydW5rCis1NzUwNCBlZDE1OTRhMTZiZGI3Y2MzMDc4ODQ0YTIzYTk0N2Y4ZTkwYTJmZWI5IHB5M2sKKzU3NTA1IDg0ZmE5NDdmZjY5NjYwMmFkOTg5MWZjOTg5MGRiZjFmZDJhNzVhNDUgcHkzaworNTc1MDYgMWIxZjdjYTNmZDQ5MzA1ZGUyOTUyZDdhZGYyYTcwZjQ3OGZiN2RmMyBweTNrCis1NzUwOCBhMDk3MjhiODk1MzAyMzJkMDI4NzAyOTlhMzViNjA5MWFhYTg1MTAyIGFsZXgtcHkzaworNTc1MDkgM2ViNWRkYWRmYmY3OGJlYjkxMDczMTc1ZDk4MDk4NmNhNDgzYWNjMyBweTNrCis1NzUxMCBkNmQ0OTNiNjE3ZTNlNTFiY2FhNzNiZGQwZTMzNWZiM2QzNTEwNDQxIGxlZ2FjeS10cnVuaworNTc1MTEgNDAzZWJkMTQ1OGFmZmI1ZGZhZmM4ZTY3MTRlZjdkZmZlZTE0N2UwNCBhbGV4LXB5M2sKKzU3NTEyIDZkZWRiMzNkMmRhMzg0OWJhYWY5ZDA5OGU5OWY4OWY5ZTUzMDFkZWQgcHkzaworNTc1MTMgYmFiNzVlNGM2NDdmNmY0MWZkODRlZTY5N2ZjYjBmZWZlNTM4M2JkMiBsZWdhY3ktdHJ1bmsKKzU3NTE1IDM4OTVjMTI5ZTQ4NjIyMzcxMTRkYTgxMDY2ODI4MTFmMTRlMDJkODAgcHkzaworNTc1MTggYzJjNzZhMDQ0NmZhYjI2ODUzNmJhZjUxYzEzNTcyODkzZDU1ZWJlNCBsZWdhY3ktdHJ1bmsKKzU3NTE5IGExMzQ4NWEzYjQwNzgzZjRjODZiM2Q4ODI0ODJiMTcyNzJlMTYxMzQgcHkzaworNTc1MjIgZmYzYzBiZTcxZGMyYjM3YzE0MjE5N2EyMDZlNDY1NWQxNWY4NDcxMyBsZWdhY3ktdHJ1bmsKKzU3NTIzIGQ4YWQyOWM2ODc2M2VhYjQyYTM2NDI2NzU0MTljNWExMWFmZWM4MTkgcHkzaworNTc1MjQgODVlYWVjZjlkNjc4MzQxYzYzY2MyZjRjZTU0MmE4MDM4MWJjMjgyYyBsZWdhY3ktdHJ1bmsKKzU3NTI2IDVmZDY1ZTI1MDg0MzU1ZWI1Y2EzZTJjMzYwM2Y0YzhhMGQzYmYwZDYgcHkzaworNTc1MjcgNTZiYmQxNzY3MDU3NWYzMGEzMzJhYTU1Mzg2NDdiN2M3NGZkZmExMyBweTNrCis1NzUyOCBhNDBkZmI1MWRmOTE1NGIwOTg3NDQwNWMyY2Y1ZGMwZjJjMzY0ZjRhIHB5M2sKKzU3NTI5IDQyNmFkYmZmNDkxZGQ1NmIyODFlOWY0MzU4MzZhYWUxNzRhYmFmNzEgcHkzaworNTc1MzAgZDkxMTVhNDUwZjFjNjljNWI1NGFiODIyMzQwMWI5YzA0MWVjODVkOSBweTNrCis1NzUzMSA4MDM2NWRkNDU1ZmE2ODg5OTRmZGRiOTgwZTFlOWVlMTE1YzZkMmU1IHB5M2sKKzU3NTMyIDRjNzhjMDQ4YzNiYTA0ZGJhNDVkMDc0M2M3NGRlZTM5ODg0YjAzMTEgcHkzaworNTc1MzQgMjUxOTc1MTUzMmFmNzZiNjdhNDAzNmZjNDM1N2RhZTJjYTU0Y2FlMyBweTNrCis1NzUzNiAxOWRjMmVlYWNiYzExYTM3ZTY5ZDYzNzA1ZWRhNGMwMWJiYTFmNGIzIGxlZ2FjeS10cnVuaworNTc1MzcgOGUxMmQ1NmRkNjAzZWFjYWZkNDNiOTg5NDQwN2E0MDdmZmFlY2RjMiBsZWdhY3ktdHJ1bmsKKzU3NTM4IGJiNjI0OTJiNTg0ZWI2ZjU1NmYyYTNlMjk3OGMwYWI0ZmIzZThjNGUgbGVnYWN5LXRydW5rCis1NzUzOSBlNjQ4NDg1Y2YzYWZlMjY3NTczMjZlMzk3NDA1Y2YwNmFkOThlMDI0IGxlZ2FjeS10cnVuaworNTc1NDAgZDVmYmI4NDNiMGE5ZGQwMjlhNmQ5NzRlYmI4OGY2ZmFjY2Q2NmU1MiBweTNrCis1NzU0MSBlOTQ2MTAwYmI5ZmQ5Y2YzYjNlYmI2NDMwZWZkZThiNWQyN2YyYjUzIHB5M2sKKzU3NTQ2IGRkMDY3MGM2MDFkOWFiYWI0NjViNWEzZGFmMDllOTliZThiMWI3NmEgcHkzaworNTc1NDcgOTA0Njk3YmU2OGNjYjU4NTczNzBjMTM3NWFjNTk0NzhlNTVlNWZiNiByZWxlYXNlMjUtbWFpbnQKKzU3NTQ4IDI1MmE4NDI4MGI3MzJhZWE4ZWY0OGExODBhY2QxZjc2OTViNTdhNjcgcHkzaworNTc1NDkgOWIyOTQ4NDZkMjBkMGJhZjk3YWNmMDFlYjVjZWM3YTM4NTA0NGViZCBweTNrCis1NzU1MiAyYzAyYmE3MjcxNGI5NDRlNmRlMDU0MzY2ZDNjYTNiZjM3NDQxNjBjIHB5M2sKKzU3NTU0IDZiNDc4MWRjODFmZmZjY2NjOWE0Mjc1M2RlZGEzZTRiNWZhYmNmOTAgcHkzaworNTc1NTUgNTk0Zjg5ZWMwNjA3NzllMjc5MDEyNmVlNDllN2VkYzUwZWM4YzQ5ZiBweTNrCis1NzU1NiA3YmY4ZjIzMzllYzY5YmZjMmRmNjg5NjFiNzkxYzc5Mzc1OTRmODk5IHB5M2sKKzU3NTU3IGUyZmZhMGNkOTdiOTdiZmM3NTVjYWUyYjU0NWU4MmJiNmY5ODhkNTcgcHkzaworNTc1NTggMDAyMGJjNzg0Yzc2OWY4YjBlYmRhMDMzYjQ2NzQ1NTM1YjU2MGI3YiBweTNrCis1NzU1OSBhNDk2NjVmOGQyZjRkMDcyMzJjYzU5Y2FhMjY2N2UyMjFhNWNhMGMxIHB5M2sKKzU3NTYwIDE5MTk2Y2NlMTQzMTMwYjIxM2ZlODkwYmEzMWYwODQxOWM3ZjljZmMgcHkzaworNTc1NjEgYzA5YzMyNjRhOTAwOTUwYzdlY2Y1OGJhZDQxMTZkOWI3ZWEyMmUxYyBsZWdhY3ktdHJ1bmsKKzU3NTYyIDYyODc0YjM0ZDk1ZDk5YzcyZDNiYTE0ODRmMDI3MDlkYTQ1OWIzNTcgcHkzaworNTc1NjMgZmIzMjZmZDlkMTg0MmQzY2Q4NzFhZmU4MTYwOWM1ZDAxZTI5Y2E2NiBweTNrCis1NzU2NCBjZDIzNTAyN2U2NGMzN2JmMmU0ZTYwZmYwMTVjNGY2NTc3ZGMzYjM5IHB5M2sKKzU3NTY1IDdlYThhNmNjZGM0MmRkMTRlNjFlNDRiMDc2ZmFlZTQyMWYzNzI0NTggcHkzaworNTc1NjYgYjk3ZmE0MDU1MzQzOGRkNjQzNDdkYWEyNDBjZjIwMmJiZDg5MTNiYiBweTNrCis1NzU2NyAwMTcwNDE4ZGFkZWFiYjNlZWM3ZmUyNDE4NTAzM2E4NTRhOTg3MGVkIHB5M2sKKzU3NTY4IDU4MDVmZTE3Y2IyZGM2MDQxZWRhYmQzM2ZmZDRhY2M3ZGQ3YThhMzkgbGVnYWN5LXRydW5rCis1NzU2OSA3YTYyYzI0NjlkZWEyZTRlOWMzZjY5NDY1ZjM5MmZlNjY3ZWUwMmNjIHB5M2sKKzU3NTcwIDI0YTA1MzI1Njc4YjEzYWUzZDFhYzFmNWI0YjlkMDg2ODE5YzNkMGIgbGVnYWN5LXRydW5rCis1NzU3MiBjYjI4ZTE0ZWU4MDgwZDUyOGUwMWE5NDNhNjJiMTljZDM0NzlkYzlkIHB5M2sKKzU3NTczIDA0NGI2Mjg1ODE1ZjE4YjIzMWQxMzUzYTc5OGU2Y2I4YThiMTU2OGIgcHkzaworNTc1NzQgNzk3MzEwNDAyMTdiNWY2NWVmNWJlNDU0M2FlMTUwMjVmOWMxMjgzNiBsZWdhY3ktdHJ1bmsKKzU3NTc1IGUyMGQ1YjY0MTg5Yzk0M2ZmMGQxOTQxZGEzOTYwOTc4ZDlkNzQ3NmMgbGVnYWN5LXRydW5rCis1NzU3NiAzZjBmMWM3NzVkOWQ0MmZhMTgwYzNkNWJhMWQyOTI5MTdlMDBlMmVlIHB5M2sKKzU3NTc3IDlmYjgzMzFjZWMyY2ZlNzNkZTc1MzRmNTdkNzVmOTY5MGE2OTExY2QgcHkzaworNTc1NzggOGUwMWYyNjI2MmNmOWU0ZDAwYThiYjdkNDMxZWRjNjczYzc5MWMwYiBweTNrCis1NzU4MCA5MjIwOTMxZTQ3NDFiZjA0Zjk2NzVhYWY0OGJlMGI0MjIzNjM3MTJkIHB5M2sKKzU3NTgxIGM3MmEzY2MyMWVmNzNlMTMyMzUyYzI5ZjMyM2M5ZTIxYTQyYjU3MDQgcHkzaworNTc1ODIgYWVjYmY1Njc4NzA0NWMwOTY4MzE4MWQ0ODU5NTM0NzJmYTQwNjJmNyBweTNrCis1NzU4MyA4NzE3YjRmOGUxZTVlZDgzMzA0NDFiYmRiMjU1OWMwMTdiZTZiMDFlIHB5M2sKKzU3NTg0IGIxMTBiYWM5ZGY0MDkwMjNiNzRiMjBiNmY2NGM1YmI4YjJjNTMzNWIgcHkzaworNTc1ODUgMzg0ZjlkOWM3NWEwMmZmZTg2N2EwMTQyYjEyNDI2YTZiY2JlOTE5ZiBweTNrCis1NzU4NiBiNGIxNGM0YmViODJjYWI4N2UzYTM2NWI1M2FjOWQwYmMzOTdlNTMxIHB5M2sKKzU3NTg3IDAwY2JiMzNjYjg2NDBmOGZkZDc5NjgzM2ZlY2UwY2Q4MzcwZGJkY2EgcHkzaworNTc1ODggZmQxZmNiYTVlMTZiMDU2MzJlMDA1MmM2MmMxYzY1MGJlYzBhNmE3NSBweTNrCis1NzU4OSBmM2IwYWM0ZTY4NGY5ZGRjYTk0NThkZjBiNWIzNGI3NGYzMDZjM2M0IHB5M2sKKzU3NTkwIDdiZTBlMDBiMDM2NmQ5ZGRjYWM3ZWQ4MzhmYTU5NzYwYjQ1NWZkM2IgcHkzaworNTc1OTIgMTFlYzQwOTdmYWZlNzE1NGExZDNiYmYyNDJiYjQ1YWY1YWZhMmNkMiBweTNrCis1NzU5MyBjYmQ1MGVjZTNiNjEyYzA4YTY2OWQyMGNmZTNkODM1YTI1NWIzOTczIHB5M2sKKzU3NTk0IGFlZTIxZTBjOWE3MGYzOTA2MDNkZGVjYjVmY2YxZmZlYTg3YTY3NGIgcHkzaworNTc1OTUgYWEzOTUwZjExMWQ5ZjEyYTRhZDBjMGIzNzRjMTU0ZWI5NjkzNWVlOSBweTNrCis1NzU5NiBiODQ2NWYwMmZjYjFlZTZmYzI0NjU1MmVkMDAyMDU1NDkxZmM3ZTZkIHB5M2sKKzU3NjAxIGZkZWYzMmJiYmNiODQwNzlhZmM5M2JmNzZlMzAzODUwNjI3OTllOGMgcHkzaworNTc2MDIgNDlkY2UzZGEwZTgwM2NmM2EyZWMzOTY2YmI4ZjJjOTU5ZTI3NWU5MSBweTNrCis1NzYwMyBlMGI2YjYyODdjNmIyM2Y3YjM5NjRmMTQ4NjJhNTE1OGM5ZjVjNDNlIHB5M2sKKzU3NjA0IGJjOThhZjk3MjY3OGQ4OGViNzM4YmIzZGFmOWM0NWM2NzdjNDNhOTUgcHkzaworNTc2MDUgZTgzNmMxMmM1NGMyZjQ0NjBmOTNmMmI5MjU3YWU4MWI1MmZhOTdjMiBweTNrCis1NzYwNiA4M2MxMzFkZmRkODRjMTg4OTRjY2M4MzFkZGIyNjhhYzhmODg1MTQwIHB5M2sKKzU3NjA3IDFkZmU2ODViODU3NmJmZWExODRhNWRlNWViZjU4NDcyYjRlMWUxNjUgcHkzaworNTc2MDggMTcxYjlmMTVjMjIzYTRiZDllODhlZDFhMTdiMDk1ZDVhZWRjODQyOCBweTNrCis1NzYwOSAzMjQzMjBkOTQ2MTAyZjEwYjliMWY5Y2FjNzk0NTU3YTNiNzA4NGNhIHB5M2sKKzU3NjEwIDcyYWZhZjlhYjMwYmE3OWJlNTQxNzI1YTgwMDllYjdjZWViMTg5N2UgcHkzaworNTc2MTEgOGIwNmY1MTQ3NDQ1ODYxOWYzYWFiZDQzYTExZTg0MWI0Y2M2MjBkZCBsZWdhY3ktdHJ1bmsKKzU3NjEyIDY4ZmUzNTA5MDc1OTI4MTg4MTI0ZjY0Nzg3MWFmNGJhMjBkYTEyZTIgbGVnYWN5LXRydW5rCis1NzYxMyA5YTEzZThmYjFhM2I2Y2M5Yzc4ZDY0OTZkYjhmY2UxMDA0ZTJmODdlIHB5M2sKKzU3NjE0IDk2ZGExYjlkZWU4ZGIyYzE5NjY5NzM5Y2IyZDBjNzA0MmVmMTNjZGUgbGVnYWN5LXRydW5rCis1NzYxNSA0ZWNiYWUwNzQ4MWYyMTRhMTFkZDUzOTk0NzEyMDg3ZWRmNDNiYmQyIHB5M2sKKzU3NjE2IDNiZjJjYWQ4ZjIyYTljZTEwMTc3MmVkYTdmNTllMGIwMjFhMTkyMmQgbGVnYWN5LXRydW5rCis1NzYxNyA2NmUzNmNlNWE1NmM2ZjI2MmFhMjEwZDEwNGUzMTBmMmQ0MzJkMWE0IHJlbGVhc2UyNS1tYWludAorNTc2MTkgOTYyMDEzNDAxMGE1YWQyZTU3ZjlhZTFiZDc2ZmMzY2UyYjdhMmY0NyBsZWdhY3ktdHJ1bmsKKzU3NjIwIGQxNzg5ZDRmZjAwYzZlYzY2ZTBjZjM5ZWYzYTRmYmU3OGJkNWU3YWMgbGVnYWN5LXRydW5rCis1NzYyMSBjYWFkMzVlODIxM2I4YTdlZmQ3NGYxOWI1NWI2MjUxMTMxY2M1M2Q1IGFsZXgtcHkzaworNTc2MjIgMWVkYzZlMTdhZTE4NWQ0MjBkNzJjNjcyZDE4MWE1NzFmODM2YzRjOSBsZWdhY3ktdHJ1bmsKKzU3NjIzIDI1YTg5M2Q2N2M2NDE4NDMwNTk2OWNkMTYwN2M1ZmVjNTU5YWFkZDYgZGVjaW1hbC1icmFuY2gKKzU3NjI0IDI3ZjAyODliNjgzNTFjZThjNDJmYmIyMTcwZTFhYTFiMDc4YzI0NmIgcHkzaworNTc2MjUgMzA1MTEwNjhkM2Q0ODJlOTE0ZTZkNjU1NDM5MjZiNzI4MzRhOGI1ZSBweTNrCis1NzYyNiBlNmE5ZmNkMWI0NGU4MTU0ZmIyNWFkOWVhN2E4NDA5NmI4ZmRkOTljIGxlZ2FjeS10cnVuaworNTc2MjcgNTMzZmI1MzIxZDZiYzFkNGMwOGVjMGMwYzM2MzYxNDc2N2YyMWY2MSByZWxlYXNlMjUtbWFpbnQKKzU3NjI4IDhiYjFmZTFhNzJhNGEzMmI1ZTgwYmZlNGU0YTY3NGNhYzFiNjc5MjAgbGVnYWN5LXRydW5rCis1NzYyOSA4OWM0ZmY5N2ZkODkzZWNhMDc1YWNhY2ExMjQ1NTlmMTExZTY4N2ViIGFsZXgtcHkzaworNTc2MzAgZDY5ZDgwNjAwY2YxNzIxNzY2NWRkNDI0MzA0NjBjNmFhNDk4MmNmMyBhbGV4LXB5M2sKKzU3NjMxIGZiMmNmNmU4Y2Q4NjExNTM5NzM5Yzg2NzkyMzUxNmZkY2FiOTRmYWMgbGVnYWN5LXRydW5rCis1NzYzMiBkZWMyZWM4MjY4NzQxMTdhYjA5MzQxOTlmNjRhYzhiMDk3ZDBjZTQ4IHB5M2sKKzU3NjMzIDFhMjMwY2I3N2YwNWNiZWM2ZDU1MGRhNzY3ZmZlODAzMGQyYWZiNzkgbGVnYWN5LXRydW5rCis1NzYzNCBiOTJmYjI0YzVkNGI1MDYxYjYyOWQ4YzE1ZDAzZTliNTgwMDliZmRhIHJlbGVhc2UyNS1tYWludAorNTc2MzUgYjJkZjQ0YjljMjUxMzQ4ZDdmMThlODRhOGJmZDVlYWIzZThhMTI3YSBweTNrCis1NzYzNiBhNzk1MWFiYjg1MzRiMzEwMmI5NjA1N2I4YWFjNjM2ZmYxMGEwYjcyIHB5M2sKKzU3NjM3IGQxYTE3Y2QyNmE0YjAyY2ZlZjA1Y2RkMDc1MzRiMzFmNGZhZWQ4MTEgcHkzaworNTc2MzggMzdiZWFlMDlmY2IwZmQ1ZmVhOWIzZGM3OGExMzc0ZmM5MzVlZjdmZiBweTNrCis1NzYzOSA1MGI3ODdjYmE4ZjFjZDZkNzVhNmY2OTdhY2E4NTVlM2FmNjVkZWJlIHB5M2sKKzU3NjQwIDcxM2ZiYTM0ZDY2Yjg4YjQxMWRmZTY3OWRlMTkwNzExNjg5Y2ZhYzYgcHkzaworNTc2NDEgMGU1MTBhZmY1ZTlhZTE1NDJiODNkMGZmM2NiNTJkYTA4MzM5YTM5NSBweTNrCis1NzY0MiBjYjVhZTAyMGEwNjBlYmE3NmI4OTBlZTI5NzA1YjQ0ODdhYTQ2MGQwIHB5M2sKKzU3NjQzIDlmNzRiNjk5MDU2YTQ2NTZkNzdkYzIzZTc1YzBkMjhiNzc4ODM3NTcgcHkzaworNTc2NDQgMDVjNDczOGY4YTQzYzczMzBkNzI5ODM2MTIxYmU5OThhZWNjODRmYiBweTNrCis1NzY0NSAxY2U4OWYyNTc4Y2Y4MWRmYmM2MDEzNzYxZDAxMTVhNzJhNTQ1NWQ1IHB5M2sKKzU3NjQ2IDBlOTA2NTEwMjYyZDFhOThlNDk4YjE4NWQ2OTEwYjg5OGY4YThkMTggcHkzaworNTc2NDcgNzFjZDU1OThiNzRkNmQwYjgwMGE4MTJiNDllMGJlMDg4ZTdiYzZiOSBweTNrCis1NzY0OCA2YjNlOGFhNTRkZDlkOTE4Nzk5ZDQxZjdhYjE3Y2I1Y2ViZTM5MzMzIHB5M2sKKzU3NjQ5IDU0MmI5YjExMTkxNWNlZDY0MGI1OTZmMDJjZWNlZjYwYjA4OWRjMDcgcHkzaworNTc2NTAgZGY4ZWY5YzgzNzFhNDU1MDI5MDg0OWUyYTU0NzAzOWQxYmM4ZGI3YyBsZWdhY3ktdHJ1bmsKKzU3NjUxIDgyNjAyMzE1ZWFlYjllNzEwZWVlMTE1MGEyZjllOWY0N2JhY2RmY2UgbGVnYWN5LXRydW5rCis1NzY1MiA5ZGY5MTFkNjU0YWZjYmM0YjI5NWM4YTNlZjc0OGQwYmUxZTAwYzZlIHB5M2sKKzU3NjUzIDBmODJmYzQyZmQ2ODFhZjkyNDk0YjFjMWQxZmY4ZWVmNTU3ZjI5ZTMgcHkzaworNTc2NTQgN2ZkZTZlZGYyYjkyMDEyODI2NWE4ZDViZGYxY2JjYzM4YzA1NTE5YiBweTNrCis1NzY1NSA3OTE5MWJkZmEyM2I1MmMyOWFhZDY4MTk5ODk1NDE0YTAyMTIwNjYxIHB5M2sKKzU3NjU2IDNhNTZlNzNhZTkxOTU3NDU5YTEzMzliNDU5NTgzMGM1OGRjNGNlNzcgcHkzaworNTc2NTcgZjQ4NTFkYzBkZjA0MTc0NTc2ZjEyMDFkNjFiMGVlYTVhYzE0YzBmNiBweTNrCis1NzY1OCA3MDczZjQ4MTQ3YmRhZmMwYjBiNDhmOGU0MWU3YjMyOTk2YTY4NmUwIHB5M2sKKzU3NjU5IDRiZWJiMjI4MTdjZmVlZGIzZjI1MDY2OWNmNWQ0YWEyYmJmOTNkMjggcHkzaworNTc2NjAgMGQyOGE1MjBjOWIxOGVhMTk2YzE3MGIzYTdkMjliMjIwMWE0OTQ1OSBweTNrCis1NzY2MSAxNzIyNDU5MjVhZTYwM2QxNjEyZGFlZWRiYTA5NDE2YzFkNTZmY2RkIHB5M2sKKzU3NjYyIGEwMzUzMjYwN2QxY2E3YTgzZDE1YTBjZTc4ZjE5Yzk3YTUzYjZiYmIgcHkzaworNTc2NjMgMzNlODdmOTcwYTIyYzAzMjM5NTJkOGY4OWQxZmE0NTJmMmEzZTZlOSBweTNrCis1NzY2NCBlY2RhMzMwNTE3MzlkOTZlOWFlZmRhNmEyMzNiM2VhZDY2MDM0NjFiIHB5M2sKKzU3NjY1IDk4ODU0Yzc2MjljOGUwMzNmM2Y4YzM0NTkyZjU4ZGEwNjM5MjRhZmMgcHkzaworNTc2NjYgYWJlYTU2NTMwNDA0OTk2NWM4YTg4MjJkZjA5NDNjODA3ZTk4NjZlMSBweTNrCis1NzY2NyAyNTBhOWQwN2MyY2MyYjZmMzgzMzM1ZjJlMjdhOTBkOGQ2ODVmZTI3IHB5M2sKKzU3NjY4IDRkNmMxMzQ0MzQwYzJjNzJhMGJmMzQyMGFmODYxYTU4ODg2MmI2MzUgcHkzaworNTc2NjkgYjkyMjZjYWQ5ZGZkYjA4YmRiYzdiNDFkOWUzMGM4YjUzMDk1NTk3YyBweTNrCis1NzY3MCBkY2QyODVjMDc4MTM1YzU5OTM4NTgwZDM4MjBkMzEyNzQ1ZjNiYjIzIHB5M2sKKzU3NjcxIGRjMGYwZmZkNDI1NzI4ZTcyMDc4NjQxOTNiNmNmNDUzNjVjZmY2MTUgcHkzaworNTc2NzIgOTZiZGUwODgyZTVmNGE0Nzg0ODA2YjVjNzI1OTNmMzAxMDQzMGVmNSBweTNrCis1NzY3MyBlYWZjOGIyMzU4OWQxM2EwMDg1MGI4MTNlZTVlMmJiNjQ0MTA0OTI1IHB5M2sKKzU3Njc0IGUxNDJjZDRiNTcxMDFjNWMyMzRmZDI5NjM2NTZlZWU5YTU0OTdiOWQgcHkzaworNTc2NzUgY2Q4MGViOTg5NzI4M2YzNTgzYTZkMmI3NjZlYzhlMGFiMTAwMzdlNSBweTNrCis1NzY3NiBhYTU3Y2VlMTE2MzEzZjZhZmUxMTk1NTI2ZjcyOTNiMDMyMjdjMDYyIHB5M2sKKzU3Njc3IGI3NTRjMDkwODg5N2ViYjI2MzkyZDQxZTgzM2I4YmRhNTAxOTAwNTggcHkzaworNTc2NzggYWM4YjM4OWYwMDI1ZDczN2I0NGNkNDI4NzkwNzY3OWQ5ZjI0OGIxYiBweTNrCis1NzY3OSA1ZmRlNWQ2OTY0ZDdjZDcxOTQ1ZWYzNjdlNTY4Yjc1MzBiNzFhOTU5IHB5M2sKKzU3NjgwIDQ3NzE2MzlmYzA0OTk2MzlmY2Y5NzExOThmMDg0ZTdkZTUxNjBhYjkgbGVnYWN5LXRydW5rCis1NzY4MSAwN2Q2N2E5NzI1YTc4ZTFiMTY3NjAzOWVlODA0MTI3NWYxYzE5ZGZjIHB5M2sKKzU3NjgyIGFiODllMTMwZDY0YTg0ZmFkZjMxZDYxOTk5Mjc3OTc5Y2Y3ZDgwNTUgcHkzaworNTc2ODMgNmUzNWM3YzE3NjA0ZTZhZjI4ZjBlMjdkOTZiNWM1MzE1NGI4YjJiZCBweTNrCis1NzY4NCAwZGNkN2YwODczOWFjODA3Mjc0NTI0ZmZkOGIzMWQwNmE3YzU3YjYyIHB5M2sKKzU3Njg1IDg4YmI0NTlmZGJmNTdjNzI4NjFmOTAwMDEzMGJkNjBkYTAxNjdiMTggcHkzaworNTc2ODYgOTgzNDMwMWEyZmQzZTAxNzg3MmZmMTNmYTlmYzEyYjU4N2U0Mzg4NCBweTNrCis1NzY4NyAwY2Q0MDFiZjJhYTdkZGFhNzRiZjAxZTMyNTEzZWUwMmJjYWFlNGU5IHB5M2sKKzU3Njg4IDk1MDg0ODExNzM5N2Q3MjRkNDQwY2ExYTlhYTc2ZGJiNTAwZTdjZDQgcHkzaworNTc2ODkgMDEwNGQ3OTlkZDQ0NTQyYjI1ODEyMmNiMDE0ZmRkNWMyYmZhYWUyOCBweTNrCis1NzY5MCAxNjU5MzRiYzQ0Mjk2MTA0NjA3NDI0OTNmOWEzYjYwZmVhOWQ4YTQ3IHB5M2sKKzU3NjkxIGQ1ZjNjMmY0MTZmMmE4OGIzZTRjNjY4Y2MxMTcwMmU4OWFhODAxMmYgcHkzaworNTc2OTIgOTA3YTQ1ZGYxMjk1M2E1OGFjYThiNDRkZTYwN2IwNzVmM2JkYWE2MSBweTNrCis1NzY5MyBhMzQ2NDRhNjU3ZjVhMjZmZjZkNTJjNjU0ZmVkNDI5ZTlmMjU0YzMwIHB5M2sKKzU3Njk1IDM5MThhOGE1MWJkMTk3ZThjZmM1MzFkYjRhZDA2MDVlZjJjNDQ3NzQgcHkzaworNTc2OTYgOTUyYmY2YTQ0YzI3N2Y3MDM5ZWY4ZTBmNGE2MzA2NTE0NjJlM2E5MSBweTNrCis1NzY5NyAxMzIxYmEwYjY3MGYxMDEwMjA3NGU3ZTA1NzY0ZGM3OGJiZTA3ZGFiIHB5M2sKKzU3Njk4IGI5NmNhMzUwODkxZDFkYTJmMmVmM2I5ZDkzMGE1N2JmZmM2NDNmNzUgcHkzaworNTc2OTkgYTZkMzkzMGI1NjEzODBhYTZkYjNjMThjYmQyNjUwNDRlYTk1YzViYyBweTNrCis1NzcwMCA5MDc1NzEyZGVlOGZkNDg2ZTA3NTdiMTU3YzAwZjg4MmM3ZGExODZjIHB5M2sKKzU3NzAxIDgwNzdlZTQ5ZmFkZmRjZDM2YjFlMDNmZDMzOTU4OGI5MmU0OTI2NmMgcHkzaworNTc3MDIgNzA4MDMzZWQ5NTE1OTQ4ZDAxM2ViOTZjZWM1ZDE4M2M0NDM4MjQ5NSBweTNrCis1NzcwMyBjYzBmZTA1NmJhYmRmNWE5NmY0MWEzOGUyOTFhMjlmZDY4OTExYTI0IHB5M2sKKzU3NzA0IGFjMmQ1ZDM0NjI1MmEyNDQ3NDk3MGVmZjU0MmJmYmQxNzI5ZGU3ZTQgcHkzaworNTc3MDUgYjVkOWMxOTVhMGM1M2E5N2IyNWRkNTMzMzhiZTI3ZDZlZDMzYzI2NyBweTNrCis1NzcwNiBlMDkzY2E1NTljMjNjZWJmZWU3NjUzYWRmYjg3ZWRjMzdkNzhkMTIyIHB5M2sKKzU3NzA3IDhjY2Y2ZjRjN2YxMjU2ODU3MDRlN2Y1NGFiNWQwNTA4NDQ5ZmYzMzggcHkzaworNTc3MDggNDI3NTQyMDhhNjU0NGNhMTkzNjRmNDQ3Y2NkYThjOTRmM2Y5YTQ1NCBweTNrCis1NzcwOSBlODJjODBhMDQ0OGQ1YjU2NWM2ZmMzNWEwNjUxNWMwMjg3N2E5NDlhIHB5M2sKKzU3NzEwIGNjN2U5MTRhMjJkOWNjNzQwZjZjMjk5ZjgzOGRkZDQ2MzlhZTA1ODQgcHkzaworNTc3MTEgNmUxMDEzYjkyM2UzYzFjODJhYzA1ZWIxYzFiOTY2ZDFjNTg5ZmVkZiBweTNrCis1NzcxMyBmZmE0MjMzZGU4NjYyMjdhZGEwZDI3NGRhNGQ0NTRhOTk4MWFiZTk2IHB5M2sKKzU3NzE0IDk2MjQ4MzJmMzE1NmYzNmY3NzdjMWNkZjdjODEwZGM0ZGFkOTViMWIgbGVnYWN5LXRydW5rCis1NzcxNSBhMTEzNjczMTdjYTBmY2NmYWU5NGQyMTlkMjY0NjNiOTRlYjk4MWEzIHB5M2sKKzU3NzE2IDhiMGIxMTQ2ZDkwODA1ZGU1NGI4OWQxZmQ2ZjFiZDY5YTFhY2Y5ZjggbGVnYWN5LXRydW5rCis1NzcxNyAxMTMyMjBkYWNlNjQ2YmIzMTBiNzUzY2JhMzdkZTQwN2RlODJhODBlIGxlZ2FjeS10cnVuaworNTc3MTggMzlkOWU1MDAwZTdjZjRjMmNhNDViMGQwM2RhMDVlYzU4MTA1OGRkMiBweTNrCis1NzcxOSBkZjUzYzU3NmM1MzFlY2UxZDQ3YmMwNTFkOTQ3NjY3NjM4OTNjMDA3IHB5M2sKKzU3NzIwIGI2ZTMzYjVlYWM0MGZhZTA1MmUxYWMwNzBkZjljNzNhYTg5NmQwYWMgcHkzaworNTc3MjEgMDhmN2E2YjI1YzhmMmJkNDY2MDU3MmVkNWE3OGZmNWU3MjkwZDc4NSBweTNrCis1NzcyMiA2NTAwYzhiZDdmZWFiNzA1MDE4N2Y1OTc1Mjg3OTJmNTFjN2JmZDE3IHB5M2sKKzU3NzIzIDNhN2JkYjBhNTk0ODJiYTAxMzFhYTU4ZTYzMzQzODEyMzc0YThlMjcgbGVnYWN5LXRydW5rCis1NzcyNCA1NmFmZGQ2ZDZjZjc4ZTkxYTI2NmMwMmFjZmIwOGY2MjU0YmVkY2Q0IHB5M2sKKzU3NzI1IDIyN2NjZGQwZjhkYjdhZjI4YmZmM2Y3Y2E3NjU5MGM3MWM5ZTI1NjIgcHkzaworNTc3MjYgOTczZGEyZWJjMmQwZjM3ZDBhZDA1Nzg5ZWIyMjZkZjM4MDljZjI0OSBsZWdhY3ktdHJ1bmsKKzU3NzI3IDZmY2I4NzNmMzk2YzY4ODlkZWM1OWE3YWE0YTc5MDgxZDc0NzE3MjAgbGVnYWN5LXRydW5rCis1NzcyOCBkODNjMmIyMWFjMjZlYzJlY2Y0MmU4Y2M0NWM3YTI2M2JjZDljZmRiIHB5M2sKKzU3NzI5IDdlYTY4ODg1NjJkMWQzODQ3MDMzYzExNjZjMzE1ZTBjODRmNjk3YmUgcHkzaworNTc3MzAgM2JmMWI4YjM0MDgwMzJkOTA3Y2FmOWY1NGM2NTIyYjlmYTIwNGRlNiBsZWdhY3ktdHJ1bmsKKzU3NzMxIDdkZmVkMWNmZTc2MmM1NGU2NDQ1YTBkMTY0MWZlZmZkNjZiMjEwNTkgcHkzaworNTc3MzIgNWI3YWFmYWRmMjIzMDE5NGRlNGU1N2VlYjI0NDg1OGJjZDUwYzM5MSBweTNrCis1NzczMyAwYTM4YzEyOTcxN2EzMTU1ZTc2YTliYzQyNmNkZWQwYzM4YzAyMTZmIHB5M2sKKzU3NzM0IGQ2MDM2N2ExMzE2ZjQzOTBkNzc4MjUyODJlM2E0ZDZlMDQzOGM5NmIgcHkzaworNTc3MzUgNzgzZWE2ODIxZTA0NzFhMzU3N2M4YTk0YTlhN2Y5ZDg1ZjYwNWI3NCBweTNrCis1NzczNiAxYTkwMWIxYzdjZDMxODYxNTI3MjVhNjFjYjE3ZDNhNTRjNWVlM2Q1IHB5M2sKKzU3NzM4IGU3YTM5MGEzNmVjOGY3M2JjMDQ4MTFjOGQ0ZTI3OTUwNjc2NTQxNjkgcHkzaworNTc3MzkgMDJkMWI1ZTdiZWY1NjhmY2EyYmFmNTMwMDY2ZmY5YmY4YmI3MTk1OSBweTNrCis1Nzc0MiAwOTNmZDg0ZmE3N2M0NTQ5M2RhMTdjMjkzODVhN2UxM2I2NDU4ZjNkIHB5M2sKKzU3NzQzIDZjMjAzYjdiMWUwYTExOTdjZmQxYTc2NzNlZjFlZWM2M2RlNjFiZjQgbGVnYWN5LXRydW5rCis1Nzc0NCA2YmJlY2MwMjhiY2UyNjZhMDcyM2M3OTc3NzA1ZTY2YmE3ZWExMmUzIHB5M2sKKzU3NzQ1IGE1NTMyNGM5NjAyZDYyMWZhZTNkMTExYjU1YzdmZTYxMmI2MWRmMTggcHkzaworNTc3NDcgYmVhZjY2MzA4MTQ4ODRmY2U3Mzg3YTdhNjE4ZDYzOTFkNzE2ZWZhZCBsZWdhY3ktdHJ1bmsKKzU3NzQ4IDY2YTVjNGJhOTM4ZWFjYWRmNDQ1NWZlMWIyZTY3MWUzNDBjNzc1YjggbGVnYWN5LXRydW5rCis1Nzc0OSBjNGE5NmRlNWU0NGU1OWY4Yjc4OTYxOTY4NWZkZDc4YmY1MmM5YWZiIHB5M2sKKzU3NzUwIGZmOTE4ZmNjNTdkMmFhMzkzMTAzM2RhODZkNWUxNTA1NmU1ZmY2NDEgbGVnYWN5LXRydW5rCis1Nzc1MSAyMzM2NDQ5NmRmMzEzNzRjMjUxMTEzNjJkZDY1NzBlMTcyY2Q2ZDAyIHB5M2sKKzU3NzUyIGRiOWExNzYxOTBkMzYwZDc4OTUxZDJkZWNmYjBmYTJiMGIyZGUzNmQgcHkzaworNTc3NTMgNTA0YzE1ZjA1ZGYzNTQ0YTM5ZjZlODMzMWMyYzczYTM1MjQ3YWFiYyBweTNrCis1Nzc1NCAwZmQxYjRlMmY0ZWU1OGFlZGRkZGM3Y2EwNjMxOWEyNGEzNGQ4NWI0IHJlbGVhc2UyNS1tYWludAorNTc3NTUgZGNlZGQzMmYwNmRlMzcxMWQwZDUxZDRlNDI5MTc4ZGQzMWJlYzQzMyBweTNrCis1Nzc1NiAzZTNiYzg0MTIyZDdiZjdjZjRkMWVlYmRjYmU4M2E2Mjk1MTIzOWFkIHB5M2sKKzU3NzU3IGJmMTFlZDQwYjEwNThkYjRhMDI1ZDc0NDQ3M2UwZjdkZGU4ZGVkMDcgcHkzaworNTc3NTggODdhMGZkY2FhODRhNjQ0OWRmMmRmMTgwMjgyZjk1MWJlOGI1NzdmZSBweTNrCis1Nzc1OSBhZTkwNDIwZDI2MzU1ZTI3MTgxZTkxNGQ3MmI3MDZkM2VlNDhjNTZiIHJlbGVhc2UyNS1tYWludAorNTc3NjAgNjhmOGIyMzkzMjQzNzdlMmZiZDUxMDExMzAyM2MxNGQxZTlhYmM3MSBsZWdhY3ktdHJ1bmsKKzU3NzYxIGFmYmY2ZmQ3Nzk4MDc5ZGUyNmRjMjE2ZjFmYmFhZmJlMTY0OWU5OTEgcHkzaworNTc3NjIgMjBkOGQxMWM5YjIxMzgxZjVjODY5YTU1YThmYjJlYmUxOWE0Y2Q3MCBsZWdhY3ktdHJ1bmsKKzU3NzYzIGNiMjUwYjA0NzNmY2I2Zjc2OTkyY2M2YjA2ZjBiMzJmYmFkYjZmZjkgcHkzaworNTc3NjQgNWQzMTRjM2U5OGVkZTU2ODVmMDQ2ZDAwYTg5OTY0NjZlNDY1MmNjZCBsZWdhY3ktdHJ1bmsKKzU3NzY1IDhkZmQxODA4MzU0MGQ5MGJlYThmOThlNDNjNWM5N2JmMTY4NmViZTIgcmVsZWFzZTI1LW1haW50Cis1Nzc2NiAxYmNkZWExZGM4Yzc1MGY3ZGM3M2QwYWVlYWZkNDBiODhkZjVkZjc3IHB5M2sKKzU3NzY3IDJlM2MwMmM2MjVkZWFjMzcwNWEzYjcxMjZmMGMyYjA4MDg0NzU5NWEgcHkzaworNTc3NjggOGM4OWI4YzQ4YjZjYjkwZmUxZDU4ZGYxMDg1YTIxYThlOTY2OTFhOSBweTNrCis1Nzc2OSBhNmJkM2RhYjNlYjhjNGVjNGEwYjZjOTY1ZjkyYWYwMzg2YzIyYmFjIGxlZ2FjeS10cnVuaworNTc3NzAgOTJlNDdkMzM4ODRlNDdlODlmM2E2YjEzNjc4MDVmMzg0MTEwMDA5YiBweTNrCis1Nzc3MSAxZDU3ZmI3ZWZiMTViMGRiYTRiNjc0MGMxNzM1NjBmODk1MTc2MTU5IGxlZ2FjeS10cnVuaworNTc3NzIgZGQwNjg4NzQwZDI0M2RiODYzOWZjOGI3ZGM4MDg0MDdhODE5N2QyYyBweTNrCis1Nzc3MyA0YTA3YTI4OGY1YzQ5YWY0ZTNhZThhMTgyNGJiN2IyZjA0MWRhMWUxIHB5M2sKKzU3Nzc0IDY5ODkwNmMyZjQ2OTEzMGFiYjA5ZmFlZGU3ZGZhODE4Y2Y0NTEyY2YgcHkzaworNTc3NzUgYTlhY2MwNmRhNTdhYjQ0NDA5NmM3NWUzYTA3Y2FkZGJkMDkwNmY1YyBweTNrCis1Nzc3NiA1NGRlZjE4ZWIzMWZkZmQxNmE1NzExZDc1MzYzNWY2OGU2YjI1MjQ1IGxlZ2FjeS10cnVuaworNTc3NzggNDQ0MWMzODc2NTBkOWM4NjMyMDM1ODNmOGQ5OTU4YTVkMTUyZDljYSBweTNrCis1Nzc3OSA0ZTZiNGJhNjBjM2IyODQyMGJhNGUyYzViZjE2ZmUyMzhlMTI0MzUwIHB5M2sKKzU3NzgwIDNjNDMyOTQzMWJiYzQ4ODJiZjllZTNjMzgxZjE0MzA5ZDdiZjBjOGMgcHkzaworNTc3ODEgMzJmNmRkOTVkMWJhN2NhN2YyYjI2MjAxZDAwYTI3NTA0ZTgwZGFkZiBkZWNpbWFsLWJyYW5jaAorNTc3ODIgZTkxZDJiZjcxZmRlZDg3YWMzZDEzMWNiYzRiNWEwYTliMjRmMGY1ZCBkZWNpbWFsLWJyYW5jaAorNTc3ODMgOTgxZWNjNTI2NzAzMDNkN2QyMzFmZjdhYTk1NWRlZjI3MThkNTU3OCBweTNrCis1Nzc4NCBkMmU5ZGFkZWRjYzZkOWFjOGEyN2U1M2UzMGQ3NmQzYmJiYjRmZTIzIGRlY2ltYWwtYnJhbmNoCis1Nzc4OCBkZWU0Yzc4ZWE5MTBjODRiZDE4YWIxNmQ5NjkzMTE0YmRkNDNlMmI5IHB5M2sKKzU3Nzg5IDY5MWI1Y2NlZjBjODExYmJmYjFkNDU5Njc1Njk1NjRhN2VhNzcwN2QgZGVjaW1hbC1icmFuY2gKKzU3NzkwIGRkNmNmMDBjMTc5NDk0YTdlY2NjNzkyOGFlMjMxNTg2YmZiOWJkZmIgcHkzaworNTc3OTEgOWZiMDMyN2IzMTEwMDkzYzlhNDIzNTNkMjU4NGExNzdlYmM1MzlhZCBweTNrCis1Nzc5MiBlZWQxNWVjNmI3NTk5NWJjZTUwNjVlYjU1Y2Y5NjFkZDQ1YjdkZmJmIHB5M2sKKzU3NzkzIGE4OWQ0NjllMWZmNzc3MTY5MTRjZTFhNDI0NGZhNTI5YTcxY2U2OGEgcHkzaworNTc3OTQgNTdlM2Y2ZjBhNTg4YzAyZjI2MTJlZTMwOTkyNDVhOTIyOGQ1YjhkYiBweTNrCis1Nzc5NSAwMTM1ZjBlNjc2YmQwMWI0MTEzYWFhNDZjM2NlZGZkZTVhNTdkZDUyIGRlY2ltYWwtYnJhbmNoCis1Nzc5NiBlZWU1YmRkMzcxNTg3ODQwOTJlNGMyZTdmMmYzODA5NjM0NjJiMDE3IHB5M2sKKzU3Nzk3IGNkYjdiOWY4MmNjNDU2MDg3ZjgxYzU5NGE4MDQ2YmVjYTY2MTg5MjIgcHkzaworNTc3OTggN2IwMjM3Y2JkMGVkMTE5NDY0MGY4ZTBmODE1Mzk0MDdhNWE2YWZlYyBweTNrCis1Nzc5OSA5MGM3MTViYzdkMzA1ZGEzZDE3MzczYTY3Zjk1NGY3YTdmZTk5NzFmIHB5M2sKKzU3ODAwIDdlYzA0Y2IyNjJkMjFlMjRkZTQzYmU4NGRjYTRkMjAyZDgwMDgxYjMgcHkzaworNTc4MDEgODQ1NGEyYmZhZTA0NDU2ZjBmNDUwYjllMGFlMzMyMDcxNmY2OTIwMSBweTNrCis1NzgwMiA5NWQ2ZmUyZThlMGU5MWYxYzkzNmEzZGJmMzA5YTg0NjNhOWVmMjY5IHB5M2sKKzU3ODAzIDBjZjcwMDQ2NDE3NzZkNzIzN2RmNDE0MWIxNDZkNjRmOGZjYWExZGUgcHkzaworNTc4MDQgN2VhMTM2N2JhMjc1ODhiNDJiZGVjZTA3YzRlN2ZkNjA3MGY2YjYzZCBweTNrCis1NzgwNSA4OGFhYTM4MGYwOTE3YzI3MDA3NGQwYWI4ZTJlNzliODdlNTA5NjdiIHB5M2sKKzU3ODA2IDE0ZWU2NzA1NTdjZjAwMDgwMTU1MGMxNzZhZjQ0MGYxZjUwYWU5OWMgcHkzaworNTc4MDcgZmVjMmMwMjk5YThjYmFkMjFiMmRlZjkzZmE4NjFiODc5ZmU3ZjQ5MSBweTNrCis1NzgwOCA4ODM0ZTY1NjgzZTdiNDEyODdkNmQ3ODRmYmJjYjhiNDQyZWJjMDQzIHB5M2sKKzU3ODA5IDM0MjQ4MDMzMzdhMzcwZDY5OWNmMjE2YmZjYmNkYjEzOWUyY2E1MTIgcHkzaworNTc4MTAgODVhNjc4NTc5OTgzMTQxOGI2YmZiYjczNzgxMDkxZWRmNmZlYTgyMCBweTNrCis1NzgxMSA3Mjc1Mzk4NjVmMDQ2NWNjYjk4NTU4MDk4MThiNjZkN2FhYjQ5MTZkIHB5M2sKKzU3ODEyIGVhOGI4ZTNkOGM5MzI4N2UxMDUyZWI5NGI2NDM0ODAyYjQxNDNhZTQgcHkzaworNTc4MTMgMzQ0OTFkYzE0M2U3Y2Q4NDZjYjNkN2QwM2U4Y2FhNWUxNjAwZWRjMCBweTNrCis1NzgxNCBlMTQwNTVlODJkYjk5MWViNzU3NjlhZGI1MDA5MWVmY2ZkYWRiNDg2IHB5M2sKKzU3ODE1IDIyMWZmYWRjMWE0YzI2OTUwMDg5NmExNmVhMzJiN2QzM2IxYWRiODYgcHkzaworNTc4MTYgYzkyZDQyNmVlZTc1MWI0MWRkMWQxOGI1OWZhNzk5ZjJjMTFkNGMxOCBweTNrCis1NzgxNyA0NzI5MGNhZjdlOGU4M2QxODdiMTRhNWE3YTRhZDU2MDk4YTFmN2M3IHB5M2sKKzU3ODE4IGQxNWQ5YzZiZWRhN2ExMDRhNDZlYWVlMTliMzkwYzUyZTI1YTI1ZmEgcHkzaworNTc4MjAgNWZhNWIyMTMzZmViZDhhNDc1OGRlZTRkZGExMGI4NTA4ZjA0MzY0YyBsZWdhY3ktdHJ1bmsKKzU3ODIyIGJjMThhY2Y4YjYxODJkYTE5ODk5MmRlM2M2OTQ0OTM5NjEzMDEyNjYgcHkzaworNTc4MjMgNDMwNzdjMjc5ZDE3Yzg2NmUzZDllNjVhOTI0NGFiZTkyNGMzYzRkZCBweTNrCis1NzgyNCBkNjdiOTRmNDlkZmNjY2YwM2E1ODhhMzFiYjYxMDVjMzdkMWE0ZDNjIHB5M2sKKzU3ODI3IDk5OGQ3NTdmM2ZiMGFlOGI1MjE3Y2NjYjMyMDA0ZDFlNTMzMmZkNGQgbGVnYWN5LXRydW5rCis1NzgyOCA5NThjNGNjNTk5M2UxZTZhMTA0ZDE3ZjgwMjBjOGY2MjdiNjlmNTVhIHB5M2sKKzU3ODI5IGExMmEwMmI5ZjY0OWRhY2M3OTZhMzQ3MTg5OWNlNGI0NzI0N2Y2MGIgcHkzaworNTc4MzAgMTEyNmU3ZTg1ZjE4MDQ1ODg2YTE1OWMwOGQwYzNlZDViY2ViMDk2ZiBweTNrCis1NzgzMSBiNWYwNmU1N2EyNGY0OTg1YmVhZDIyNjg3MjY5M2MyMWUzYTZiMTNmIHB5M2sKKzU3ODMyIGY3Zjk0NDM3NDQzOGMwM2MzNzY4M2ZkNjJjNzNiZmIxY2M5YTEzZDQgcmVsZWFzZTI1LW1haW50Cis1NzgzMyA3MTEyNTI0MDJiMmY1NjczYTZmMzdhYTkwNWY3NWUyNmM2ZTJiMmZlIGxlZ2FjeS10cnVuaworNTc4MzQgNzcwMDBmMjY0MWVlOTE2OTdhMjIxNWNkMzZiYzJjZjA3NWM5Y2FmZCBweTNrCis1NzgzNSA1YzMwZjE1YTZiODc5OTdiYjkzNTQyOTVkNjdlYTk3NWM5MDE5ZTg0IHB5M2sKKzU3ODM2IDIzNjFhYWVhZmNiY2M4NTllNmNlNWQyMTQ0OTQyZDM1YjM0N2I0Y2YgcHkzaworNTc4MzcgMDgyY2VmM2JlMjliMzM5ZjNhNTVkYWI3MWJkYmRhNjk1MWYwNmJiMSBweTNrCis1NzgzOCAwNmRjNDMyMWE1NmEwYjM5OWUxMzA3Mjc5OThiOWIyNjRjNmJkNDA2IHB5M2sKKzU3ODM5IGE3ZDU0NDAzNTNjMzVkNDM5ZjhjM2MwODJkMjVmN2JiZWQ5ZGY5OWIgcHkzaworNTc4NDAgZmZiMTAwYmUwMzEwZGE1ODRmNjhmNzYzZDQwMjBhZmFmZTBjOWU4MSBweTNrCis1Nzg0MSAxYmI2M2EzMmE2YzhkOTFhZjk2NmVhMmM5MzU5ZGU1YjVkNWFlMTc2IHB5M2sKKzU3ODQyIDQyMzE0ZDdkNjA4M2Q0ZmVhZjMwMzFiOWI4MzFhMjg2MDE2Y2E1YWEgcHkzaworNTc4NDMgYTZmM2JjMjE2YzM3MGJjNjhhZTgzMGY4NGMwMGMxOGMyMWYzZmVmMCBweTNrCis1Nzg0NCBiNWUwZjc3MjEwMTRhNmM0ZTE5ZDRiMTJmZTI5ZTY1Yjk4ODk0MTZkIHB5M2sKKzU3ODQ0IGNkM2Y3ODNjZDA4YTE2NzgxZTIzNmMwYjljYjU3MTdkMWQ5OTVmYTkgcHkzaworNTc4NDYgMzM1ZWY4NmE4YzVjYWM5OGM4ODE5NTIyZWJlMTJlMDY0M2UxNDYxZSBweTNrCis1Nzg0NyA5ZmYxMTI2ZjA5NmMyYTc1ODI3OWUzZmU2YWJmNjFlNWI0YzMwZDg5IHB5M2sKKzU3ODUwIDhjMWMyZDViZWQzMjI2ZjVkMDM1YWQ3YzJiNjMzZjFiYjc1MTEzMjcgcHkzaworNTc4NTEgMWQwZjRiM2VlZmFiMzc3MmM0MDAzNjJhNjc3ZGJlYTExOTliZDlkYyBweTNrCis1Nzg1MiAyMGFiZGI5MTZjZTMyM2UxOTUzZGJlYWNhZTkwY2M5YWZjZDc0OTVjIHB5M2sKKzU3ODUzIDI3NWY4OTRkYmYxMjFjNDA0OTYwYTMwODNmMzRiOWRkNWY1MDllZGYgcHkzaworNTc4NTQgOWNmYWQ5YTVjODNiMzgwZTJkY2U4NGVlNGU3ZWI0ZTI1ZTZjNjcyMSBsZWdhY3ktdHJ1bmsKKzU3ODU1IDlhZjljOGE3MWJmZTgzZDJmYTg4OTUxZDNiNDdhMTEwYmE0ZDQwMzAgbGVnYWN5LXRydW5rCis1Nzg1NiA0N2M4ODBlNDhiZjZiMmU5MmNlZDRjNzk4ZGM4ZDg1M2FlZjA0YTc2IGxlZ2FjeS10cnVuaworNTc4NTcgZTliNjczNmMxNjMyMDg1YjZkNjZkMTM4Mjc2ZjQzNmVkY2M1MzI0NiBweTNrCis1Nzg1OCA2NmM3NTFlODFjOTBlNmQ0NDk2NWEzMGE5NmZkNTc0ZmZlNzIyYjFiIHB5M2sKKzU3ODU5IDUxYWZjMWQ1NjVmODMyYmZkMWQzZWQ4ZjMyYmY4ZDY1ZWEzNjYyMDYgbGVnYWN5LXRydW5rCis1Nzg2MCBiZDk5ZmVhZmY5OTU4Y2I2MGIxMGFmYTViZDE3MDA0ZTQ3YWJmYTkzIHJlbGVhc2UyNS1tYWludAorNTc4NjEgNjIwZGNhNjc1MTM3YTE2NGQwZDRhNjI1ZjRhMjBmOWQ3NjVhOTdhOCBweTNrCis1Nzg2MiBlZTFiM2ViN2EwMTM2ZGNjMTI2OTMzYjVkNGUzY2E3MjJiOTJjMzc2IHB5M2sKKzU3ODYzIDBhMGI4MjI2NTcwNjIyODJiMzhlNzNmYzZiMTE2NWYzODdmZDI2MTUgcHkzaworNTc4NjUgYmVkMGY1MGVjNzBiN2Y5ZWY0NWFlNjhmNjgxMWY5YWM5Y2JlMTNkOCBsZWdhY3ktdHJ1bmsKKzU3ODY2IGQ4NDI0NTdlNGIwZTM5ZmIyYjEzMmUxNGYyMmNkZWRjYTQ1ZmU0MDYgcHkzaworNTc4NjcgYmYzYzk0MjEzZDVkMWUyNDM1OTM3ZTJjODVlZjhhOGQxNDg4NTc3MyBweTNrCis1Nzg2OCA1ODNlNDFkMTI5NGI0YTUzYTAyMGY3YmM3YTAxY2Q3NjZjYzQyMDk1IHB5M2sKKzU3ODY5IGRhMjg1ZDNiMDY1YWMyYWQwYWIwOTdmNGVkNWI4Mjc2ZjY2YTgyY2UgcHkzaworNTc4NzAgODA4ZjMyYTBkOTljMmUwMmM0Y2NiNzM4YWVmZTM4MzNiODFmYWU2YiBweTNrCis1Nzg3MSBiN2JmYTc4MGE4ODI4ZWM2NjVkMjA4Mzk0ZDdmOTU0NDhlNjNlYzYzIHB5M2sKKzU3ODcyIGY0ZDJlZDUwZGU4NTlkOTFkOTQwNGM3MjJmYTM1YjMyYWNiYzk1ZmQgcHkzaworNTc4NzMgYzRmNjNiYjRkMzhhMmM0M2Y2NjU5NjlmN2VhNzk2Njg5MWI0YjQwZCBweTNrCis1Nzg3NSBhY2FjZThlYjBiZDgyNmQwMzBjOTBiNTcyZTIwNDkxMzczZDk2YjZkIHB5M2sKKzU3ODc2IDllYmE2ODllY2YyODdkYzc3M2UzZjk1Yjk1NWRiMTI5NDdlYzA0ZjEgbGVnYWN5LXRydW5rCis1Nzg3NyAzMjBjNmJlZjhkMzBjMjlhOTY5ZGU0OTkwZmI3NGMyMWM1ZDg2NjU5IHB5M2sKKzU3ODc4IGNhZjBkN2UzYjI5YTVmNmY4ZGM3YmVlMTUwYzE2ZTg4ZjUxZjhmNzQgbGVnYWN5LXRydW5rCis1Nzg3OSBhZDNkNWFjYWNmMDNkZTcwYmY1MzhjZTRjODdiOTZlZTc0YWY0NTI5IGxlZ2FjeS10cnVuaworNTc4ODAgOWIxODMzZmM1YzdiMjA3YjJjYzYxMDQ1ZWNlNmFkNjZjNDg0ZmMxZiBsZWdhY3ktdHJ1bmsKKzU3ODgxIGNlM2EwNzEzNTFmY2NkNTBkYTc3ZWNlOTY1M2E4OWM3YWMyMDg0NDMgcHkzaworNTc4ODIgMTRlOWI4N2I3NTNiMjc5YjM3MjI1OWJmYjI4NzlhNTU3YzE3MTI4ZSBweTNrCis1Nzg4NiAzODZjMjJkOTNhYjY1YjYzYjA1Y2FkODkzOTQwMDA1OWY2Nzk4N2ViIHB5M2sKKzU3ODg3IGQ0NDI5ODRmMjkwYjljMjVlMGRlMjg3Y2QxM2U4OTNmNTE0ZDBmNTYgcHkzaworNTc4ODggM2FjMjM3YmNhNWVlNTM3OWMzNWZlYmY4MWE1NGVjNGRiNGVkNWRiNSBweTNrCis1Nzg4OSBkODY2NzJiZGU2NDA2NTY1YWRlZWM1MzBlMTgwZTVmNGFkNjM3YzViIGxlZ2FjeS10cnVuaworNTc4OTAgZWExODQ1MTM2NjBiNWQyODE2YTdmYTc4MmQ1ZDJjMWI0M2ZhNjYxZSBweTNrCis1Nzg5MSAyNzliOTU2YTNhOTYzNWRmMWI2NDFiODk4NmQ4OTE5NDE4ZmZmOGRiIHB5M2sKKzU3ODkyIDE0Nzg2ODhmNDU2NTg3YTUwZWRmNTk5MTg0NzNkMTU0OGUyMzViZTggbGVnYWN5LXRydW5rCis1Nzg5NSAzNmY1NmEzZWYzNmY4MDkwMWMwNjUwYmIzOTg4M2FmNTI2Yjc3NTJiIGxlZ2FjeS10cnVuaworNTc4OTYgYjc1MTZhMzQ2ZjBmMzk4ODQzMTRjM2I2MGQxMTRkMDI2NGQyN2YwZCBsZWdhY3ktdHJ1bmsKKzU3OTAzIDFiMGQxNTQ0NGNhNWQ0MjZkZjhhMTAxY2E0YjkxMGE2MDNmY2ZmY2QgcHkzaworNTc5MDQgY2UwY2IyZDg2OTE5OWRmOGI3MmI1ZDg5MzVmOGY1Y2YyYjdhZTBiZCBsZWdhY3ktdHJ1bmsKKzU3OTA1IDFiNWIwNTQ2YTdkZDJkOWNkNWIxYjI4YzRjNmEwZjlmZTU2M2M5NTkgcmVsZWFzZTI1LW1haW50Cis1NzkwNiA0NjNiMzQxYTlkNjMxZWM0ZGYyMzg0ODcyM2Y2ZjhkMTVhMWNhMmU4IHB5M2sKKzU3OTIzIDQ5MDI2NzFkZDY3ODUyNzg5YTBlNjFmZDI3NDBmZmRlZDFlNTI5YzQgcHkzaworNTc5MjUgN2M2ZTdkMTlmZjUzYmM0ZWQ4MjY4NjYxYWJiYzYxMDYyYzIyZTM3YSBsZWdhY3ktdHJ1bmsKKzU3OTI2IGI1ZjUzNWNmMTM1ZmM5ZGM0MjBlYzkxMzRmZjkxOGE5MjE5YjZjZTAgcHkzaworNTc5MjcgYjUxYWMyZDJkNTM4YmRhMGY2ZjU3ZGQxZWVhMDNjODhjZTcwMTAyMiBweTNrCis1NzkyOCA1NjRhZTU2YmQyZGE2MWM4ZjI0NWUzOTk5YTBmYmM1OTE3NDhiZDI3IHB5M2sKKzU3OTI5IGY0ZmI3NGY2MzgwNjdmM2QwYzQ5MTM3YzNmNjRkMzI0NDE0NDQ2M2QgcHkzaworNTc5MzEgZGQwYzY1M2JhMjlmMjMwOGYyNjJjNjhmNjM1OGY5NzlmODQzMjMzMyBweTNrCis1NzkzMiA1NzhiMTc0NjFmNmI2YjlhYmExN2IwM2RjOTIxODU0ZmZjYzFiMzdlIHB5M2sKKzU3OTMzIDExOTkzYmNiMGJhM2QxZDlhNDZiYTkzOTM0OTZhMDMzOWZiZGUzODEgcHkzaworNTc5MzQgNDM1OTc3NzhlZjJjYmM1MTMzNGRhMWI5YjJmNTdkYmQ5ODBjYTE4OCBkZWNpbWFsLWJyYW5jaAorNTc5MzUgN2ViOTU0MzUxYTRmZDdkZDQ3N2YwYjUwNmZjNGNjZjI2ZWU5ZmUzZSByZWxlYXNlMjUtbWFpbnQKKzU3OTM2IGM0OGNkNmUwNmFjYTUzOWQwNTI5MDc2NzYwNDUzOGJjMGZjYTBmN2IgbGVnYWN5LXRydW5rCis1NzkzOCBhOWZiNjVjOGVhY2IzODFlZTI0OGMxNTUzYjkzYzUwZWY3YmRlYmY0IHB5M2sKKzU3OTM5IDQ4ZWU2MzlhNzVkZDcyZmVkYWQxOTRhYjQzZWU1ODA2YWQ3MGQ1ZmIgcHkzaworNTc5NDAgZTI1M2IyMDQ1MjUwNjlmZWVjNGZjM2IyMWJhMDY2NDJmNmZmN2I3OSBweTNrCis1Nzk0MSAzY2JiNGY5MjIwZjQxOTI1YjEwOGZmYjdhYWEzMjRjZDdhNmE1ZTdhIHB5M2sKKzU3OTQ3IGEzMTFhYjJmYzFhNzAwNTE1MGE0YmZmNDUxYWNkMDA3YzgxY2UzY2QgcHkzaworNTc5NDggMzQzNmRhZjQ1NTE2YWU3OGM4YjIyZmYzNTA1MGQ3YWI0NWUyNzk5ZSBweTNrCis1Nzk0OSA0MjhkOTIxODA0ZmE0M2NkOGU2MWM0YzQxOGI4ZjMyNjZlODgxNGQ2IHB5M2sKKzU3OTUwIDY1NTA3MWJmNmM0NWM2ZDg2NWI0NDNkNGE1YzlkMTEzNTYyYTFjMmQgcHkzaworNTc5NTEgYTFjYzliNTg5ZTIyMmVmMjk5YzE1Zjc2MzE4NjA1OTk1NGYyYTU1OSBweTNrCis1Nzk1MiBiYmQ0ZDI5NmY3NGFjZThmMjhlMmI2OTRmNGFkOGZiZjg2MjE0NTg2IHB5M2sKKzU3OTUzIDk3OGM0MmI1MzhkMWM5YjRlOTI4N2M3ZTFjNzFlY2IxMmI4ZDc5YWQgcHkzaworNTc5NTQgMjA1MmY1NGNlZDQ5NjYwYjI4OWY0YzI5MTg4ZmU4ZTQyZTc2NGIyNSBsZWdhY3ktdHJ1bmsKKzU3OTU2IDAyOTRiYjJlOTVkZTMyOWJmNTkwNzlkNjI2YjJiZWJmNjNlYTYzZGQgcHkzaworNTc5NTcgMzhmM2Y5ZWYxOTNkMmFhNDQ5M2MyODFjYzRjMWNiMjQzNzNiNTMyNiBweTNrCis1Nzk1OCA0N2Q5MmRiN2NkMTAyMjJjZDdmYjEyNjc3OGJlOTEyYjM3NzczZDc3IGxlZ2FjeS10cnVuaworNTc5NTkgYzlhYzViOGU0YTgxNjk1ZWRmYzFhYzhlNDIwODM1MTgyOTI5MzIzOCBweTNrCis1Nzk2MCAxYTBjNzM1ODA2NjVlZjZkNDE1YmEzNjZjOWI1MmM1M2NlYjY5MGViIGxlZ2FjeS10cnVuaworNTc5NjEgNmEwNDhmZjMwNDg4ODc4YTJmZDIzOGQyZDkyZTI0ZTA2MmVkMDVhNiBsZWdhY3ktdHJ1bmsKKzU3OTYyIDQyNTEyN2MxZDExM2M0ZmFhYWYzYWIzYmVmMDA5ZTEyYjg3OTQ5OTIgcmVsZWFzZTI1LW1haW50Cis1Nzk2MyA4ZTcwZmQ2YTdkY2IwOTUyM2VmMDRlZjRmMWU1NjVkOTY1Y2QzOTdlIHB5M2sKKzU3OTY2IDA4MWUzNjIzMjVkYTY4ZTNiMzc3MTNjZTI1NDBmODhjYzI0MmQ0MTMgcHkzaworNTc5NjggMzRiYzYzOGFjNzA3NmVjMTViYTE3M2ZmZjVlNWU5NTc4NjI5ZTAwMSBweTNrCis1Nzk2OSA0OWQ2ZmE5OGRjNzgxN2Y1MTA1YzA3OWVlZTQ0ZDU2ZTdmZGFjMzgxIHB5M2sKKzU3OTcwIDc5MDRmYmFmYWIzZGU1MDg2NTRmZjkxMWNiMDM5NDc3ZTM5YTJhMjEgcHkzaworNTc5NzEgMzQ4NDM1MGE0ZjY5ZGYzNzY0MjI2NGQyYjJjYjE4ZGJiZGRmNWE0NSBweTNrCis1Nzk3MiA4MGZmY2MxNjFiMzBjOGY2OGIyODk5OGY1YmY1YzliYWM5OGNkYjU2IGxlZ2FjeS10cnVuaworNTc5NzMgNTNiOGZjMDc5MDc3ZjQ4YmVhYjFiOGMyY2ZjYzBmMzU5MzU5OGZiNCBsZWdhY3ktdHJ1bmsKKzU3OTc0IGM2YjExMjNlMGU2Y2E0YmUxZDA1MjBmMDI2MjBiMTk0ZjA0ZTYxYjcgcHkzaworNTc5NzUgMjk0ZTM1NDUyZDI1Nzk4NTI4ZTRiNGJhNTY2MmM5MTU4YzNiZTdjNiBsZWdhY3ktdHJ1bmsKKzU3OTc2IGU5NDYwNzNkZWUzOGIwNjVkNmFkZTcwNjBjMTA2MzI0Mjg4Y2I3MWYgcHkzaworNTc5NzcgZTZkZTlhZGQ3YzA3NWJjOTcwZmM1YTJkZjQyYWI2ZjQ0M2ZkZmMxZCByZWxlYXNlMjUtbWFpbnQKKzU3OTgwIGUyYjRmYzk2MDgzMGZjMjJiZTFmN2E4NDU3MzlkZGMwNDI5NGUzODkgbGVnYWN5LXRydW5rCis1Nzk4MiA3OTA4MGM0ODg5YmMyN2U5NWQ4Y2M5YjIxYTc2YWJkYmU4ZjI4M2U1IHB5M2sKKzU3OTgzIGNjNDQ0Mjc1NDUxMDVlMzIzYTExNzMyYTg1ZWE5N2I4ODdkZmUyODggcHkzaworNTc5ODQgZDMxMDQ3YTFjZTE5NzY4NGYyZjU1Mjk2Yzg5NzE1ZWUyYmYyMDJiZSByZWxlYXNlMjUtbWFpbnQKKzU3OTg1IDQ1MzEyMjBlNTBiYThjMTRmYjE3YWEwMzMzYmI5NmJmMmU3MTE5NGMgbGVnYWN5LXRydW5rCis1Nzk4NiA1ZmQwNDUxZTc0MDYwOWZjNmE5ZmJhOTcwZTU3YzU5MWU0YWIyYmJlIHJlbGVhc2UyNS1tYWludAorNTc5ODcgN2ZiOWNkOTFlNjQ4NjFkM2RlODkzNWU2YTNkZDQ2ODhiMmNjNzgzZSBsZWdhY3ktdHJ1bmsKKzU3OTg4IDcxYzNlNWI2OWUxNGU3MWRlMzM0NWQ1NTUwMzc4OTczODhhMzRmM2UgcHkzaworNTc5OTAgM2MyYTRmNmFjY2Q1NmFkZDQzOWZlNmFjNTY0NWQ0ZGVkYjBiZGM5YiByZWxlYXNlMjUtbWFpbnQKKzU3OTkxIDU4YWY2Njc1MDE5ODYyZGFiNDQ5YWI2NDU5ZjhmNWE4OWNiZTlkOTcgbGVnYWN5LXRydW5rCis1Nzk5MiAwOGUxMDU1NGU0MzAzODA3MDM2YTkxODQ5MzU5ODU5ZTBmMzdiYTM3IHB5M2sKKzU3OTkzIDkxYzk5MDExZDA2OTQ0YTYxNzAxODNlYWJjOGZkYWYyZDA0NjhjYTggbGVnYWN5LXRydW5rCis1Nzk5NSA3MmE5NmU2YTdjMmZiYzViYjhkZTE4NGFkZWVhYjBjNjAxZGEzYmM4IHB5M2sKKzU3OTk3IDg4NTgxM2NjYmY0NTRjYzBkOTNmNTk2NmUwNGYyMTViMDdkNmRjMmEgcHkzaworNTc5OTggYTRiZDhhNDgwNWE4MDI0NzcxNmYxODFiZjhlZjdhNWVhYmIwYzJmMCBweTNrCis1ODAwNCAwYTMxZDFjNDVhODkyYmE5ZDBkZDNkNTMxZWZkNzE3Yzc0OWYxM2FiIGxlZ2FjeS10cnVuaworNTgwMDUgODg3ZTFmZWFiZGJkZTZhYzlhMTZhNTAyODE3MDY4ZWIwZTEyMGU4ZiByZWxlYXNlMjUtbWFpbnQKKzU4MDA2IGZkYzY3NWNiNWU4YWVjMDM3ODc3OGFkOTQ0ZmEzOTYwZmRmN2VlNjEgbGVnYWN5LXRydW5rCis1ODAwNyBiZThmN2QzY2Q3Y2MxM2IyZjZkZjZkMTlkZGY3OGNmZjc1MGNjMmZhIHB5M2sKKzU4MDA4IGZjYjAyY2I5NmNhMjAxYzE3MjU1NzMxMWI3MzU1MDM4ZWM4YTAyN2UgcHkzaworNTgwMTEgYjRhMmYxMGIzOWQyMGYxMjIyNTU3YjcxODFjMGZjNjE1NTI5NzA4NCBweTNrCis1ODAxMiA3OWRkYTU2OGY0MjVhMzkwOTg0YWMyOWUyZjE0MGUzYTYwNjgzZWQ3IHB5M2sKKzU4MDEzIGFjM2ZjMmFlNGFiY2ZmMGRlMWQyMjA3YmJlMGM3N2NlZTcwZjQ4ZjQgbGVnYWN5LXRydW5rCis1ODAxNiBjNzZhY2E0ZTEwMGRlMTE2MmY0MjdmZDcxYzE2NTQ5Yzc0ZWNlNjQ2IHB5M2sKKzU4MDE3IDdjMmY1YzYyZjhjYTBkOTM3MzNmNjUwMjc4Mzc5NzQ5ZTA1ZGM4MDEgcHkzaworNTgwMTggZWRmYmNmMWZmNzM0MDc1MTBlNmZkNjM3ZDUwMjZiOWZhYzk3NjRhNyBiY2Fubm9uLW9iamNhcAorNTgwMTkgYzljNjE2NWY3YzBkMWUwNGNjNmI3NDhkNWMyYzQzNTg1OGNlODZhNyBiY2Fubm9uLW9iamNhcAorNTgwMjAgZTdmZDFmZDkxYzUzZmFiNmRhODU0ZDI4ZGU2YzgwNTQzOTE0NmZkYiByZWxlYXNlMjUtbWFpbnQKKzU4MDIxIDJkYmE1YWM4Y2UxNTlmMWUwN2JhMmE0MzY4MWEwNWU1MzRmYTEwMDMgbGVnYWN5LXRydW5rCis1ODAyMiBiYTA4ZjdmMzZlOGVkNGMwN2Y3NDM0YmMxMGViNzk2MjVjNTc2NDE5IGxlZ2FjeS10cnVuaworNTgwMjMgNTU2NTY5YWIzZjlkZDg1NTUwZDhmNzE2MzFhYmMxYTkyNGYxMTllMCBsZWdhY3ktdHJ1bmsKKzU4MDI0IDE2Y2I4NWZlZmM1ZDAyNWUzMDRlNTFjMmQ0NGJkNWM1Mjg1MDcwNzkgcmVsZWFzZTI1LW1haW50Cis1ODAyNSAxYmM0YThkNTdiMzEyOTg1ZjRmMjljZDU1N2VkN2UyMDQ3YmMxZjI4IHB5M2sKKzU4MDI2IDcwNTI1OTM1NzRiZjQ3YjQ0MzM2Nzc1OTAwMmZiNTAzYWU2MjA3ZjIgcHkzaworNTgwMzEgNTdlYWJiMDUxY2ZkY2FjZWM4Zjc3YThhNTlmMTE1NTg5MDZhMzNiNyBsZWdhY3ktdHJ1bmsKKzU4MDMyIDNiYzNmMTJjYWUyOGYwMmIzNTcyYWEyYmU3ZmNiMjUwMjVlZjA3ZTUgbGVnYWN5LXRydW5rCis1ODAzMyA4MGQyZGFlYzYxY2M4Y2FjNWFhY2Q5ZGQwZjU2ODI1ZTQ5YjI1NDc3IHB5M2sKKzU4MDM0IDI4NzE2ZGQxNGJjNWZhMjcxNDJjYTU3OWVjYWU3Yjc4ZjI5YWU2OTkgbGVnYWN5LXRydW5rCis1ODAzNSA3ZGFkZDIxZmE4N2MxMmIwMjlhOTU2ZDY5MDNlYmYzYWFkZTRjYzA2IGxlZ2FjeS10cnVuaworNTgwMzYgZjYyODU3NTMzY2JlYWEyYjk0YWFhYmI4MDMxYjg2NWRhODBkOWZiYyBsZWdhY3ktdHJ1bmsKKzU4MDM3IDRiMjEzNGU0NzMwYzIyZDVkMTcyMTJlM2E4NWM0NGVlNzAzNTI0MDYgbGVnYWN5LXRydW5rCis1ODAzOCAwNmY2NjgyYjIxNjZlMzA3YzJhYTFmMmE3YjE5OGRlNjRiOGU4YjkxIHB5M2sKKzU4MDM5IGZjNDcwYmJlOGQyNDJiODdiMjgwZTU4MzYyMWRhOGJhMzZkYzEyNTMgcHkzaworNTgwNDAgMWY5ZWVlMDhhYjM1ZTk1N2ZmNTY1ZmZhNTJiYjAyNmY1MjEyOWI4NiBweTNrCis1ODA0MSA3NTVmYTUxODdkMWJjMTJlOWQ0MGI5NTMwOWMzNmNjNjBjNDE1Nzc0IHB5M2sKKzU4MDQyIDg4NWZiMTdjNWUzMTk2ODI1ZmZlNDc2ZmFiYzkzZjg2ZDYyYTNhZmEgcHkzaworNTgwNDMgZmE1NWQ0MmM4ZDljOGQyZTU3YTY3MjY2ZmM3Yjg5NTU3ODA5YTJjMCBsZWdhY3ktdHJ1bmsKKzU4MDQ0IGI4YTgyMDZjMDg0OTI1MDVmM2RkODM1ODE3ZDQ1NDE3OTg1NGE2ZmQgcmVsZWFzZTI1LW1haW50Cis1ODA0NSBiMzY3ZDZlNDIyMzE1YTkwNGJlNDVkODZmNjc3YjI1ZWFkMGYwNzQzIGRlY2ltYWwtYnJhbmNoCis1ODA0NiAxZjYyMjczNjVjMzZkYWJhYmFhMTgxOGE2M2M2YWYwNzBlN2FmNGM0IGRlY2ltYWwtYnJhbmNoCis1ODA0NyBlODVmYWEwMjE5MWM0N2M5NTBjMTk3MmIzMzdlMTdmODcyZTMxYWIwIHB5M2sKKzU4MDQ4IDA4ODFhYmFiOTM3Mzg0MWU4ZDY0N2YwMGFhYWZmMGFmOTBmOTkyMmYgZGVjaW1hbC1icmFuY2gKKzU4MDQ5IGZmYTA3NDdhN2NiN2EyMDYxNDcwODMyNDhmZGIzMjgwOTVlZGRmZjYgbGVnYWN5LXRydW5rCis1ODA1MyAyYWU2ZGIwYmM3ZWJjYmJiYzczMTJkYjZlMDNhYTBmNTU3NjQyNWQ3IHB5M2sKKzU4MDU0IDg3NmI3ZWY0Nzc1ZDhmYmI5ZTRhNWRhM2Y0NGYwOWE4MzE4NzljNmIgcHkzaworNTgwNTggYmFlYjY2Y2U3YjUxZGRiMzY3MmM0NTU2YzczMDRmYmRhMzRkZDRjYiBweTNrCis1ODA1OSA3OGYxYzMyOWM5ODM3MTNhNDFmMzFhODVhNDBlODgzNmZjNGMxZjIzIHB5M2sKKzU4MDYxIGEwOWVhMmNmZTc2YTMwNWIwMzcxMjljMWNkODE0OTVkMWY2MzcyZTYgbGVnYWN5LXRydW5rCis1ODA2MiA3NWNkNTQ4NjMyNTA5YTJlYWNhN2YwYzMwZjczODdhNmI1YjNkZWM3IHB5M2sKKzU4MDYzIDc2YzFjYzY3MGM2MzNlZmVkOTgxN2FhMDMwOTJiYjYwZWUwZjc3M2MgcHkzaworNTgwNjQgYTExYjQ4ODViNDQ1ZjI3ODBjYjgwNjM1MDJlNjViMjRjMWUxNTc5ZSBsZWdhY3ktdHJ1bmsKKzU4MDY3IGU4YWE3MjRkYTkwNTg0ZDM0MmJjODczYmZjZTUwNTIwZmE4NGUyN2UgbGVnYWN5LXRydW5rCis1ODA2OCBiMzU1ZDJkYmE5YjZlMjVhMzlhN2UyZjlmOTUyYjJlYzdhNTc2ODZkIHB5M2sKKzU4MDY5IDgwN2FkYzAzMDY1MzUxNTFmYzgxZjAzNjFlOTY4NWY4ODdmMmZhYWMgcHkzaworNTgwNzAgM2QxNDk2NDg5ZjU4NTFjNjBmNWU1NzA5ZTU1N2VhNzU2ZDg3YjcyOSBweTNrCis1ODA3MSA5MTc2YTUzYjRiNjI1MGVhYzg1MzZkMGNmMGIxOGExYWRmOGUwYzQwIHB5M2sKKzU4MDcyIGY4YTVmYmEzNWViMzZhZjM0YTliMDJmZjM4Y2IyOTI5YzhkM2I5OTAgcHkzaworNTgwNzMgNzViMjY1YzA4YzkxMGJlNWE4NWJjNDQzMDg1YTIxMzM4ZjQ0NjEzMCBweTNrCis1ODA3NCA5ZjdmMzE0NzAzMWMyNjg2ZGEyNmNkNDBhMTIwOWFjMDc2NjIzZjA2IHB5M2sKKzU4MDc1IDg3NTA1MmMyYjdiMzQ2ZmNkZmIzYzY0M2ZkMGRhZjdhNTFkZDMyODcgcHkzaworNTgwNzYgYjI3ZDM0OTE2MmJkZWVlZDE2ZGRjMzZlMDgzM2NmZjVlYzU1MmRkOSBweTNrCis1ODA3NyAwOTI4N2YyMDU1YWI1ZDhkZjE2NGVjNzk0Y2I4M2FiYmRjMzg4MDE4IHB5M2sKKzU4MDc4IDg3ZDQxMWViYmFlMGUyNDI3YTlhZWNhYmI1N2RkYjgyOGY0YTc2NmMgcHkzaworNTgwNzkgMDk5YWI4MjNiODRjNGExZWE0YWUxMGE3NWUzMTU4YmQ2NzcxZThiMCBweTNrCis1ODA4MCBmYTAyY2QyY2MzM2I4YjM5MzU4YmZlN2MwNTM2ZDUwNTNmNjA2ZDAzIGFsZXgtcHkzaworNTgwODEgYTdkYjllYmVkMjhhZDEyOWUwZDdiMGQyYTVmOWQ2OTk2NjA0ZDI3NyBhbGV4LXB5M2sKKzU4MDgyIGQ5ZmM5MjhkYjFmYWY1NjQ0YjU4ZjA5ZDU3ZDQ2NTY0YmYzODE5NjMgYWxleC1weTNrCis1ODA4MyBhNjY4OTc0MTlhMzRlZmE5NzhhY2FhMWMzYmUzYWQyY2Y4ZDFhNjBkIGFsZXgtcHkzaworNTgwODQgNWE1MWQxYjY1NjI5OTVkYTFlMmExOWE4MWY5Y2VhYmVjYmViODE3OSBsZWdhY3ktdHJ1bmsKKzU4MDg1IGQxNTUyYzE1MGU5MTRkN2JjYWMyMGI2ZGFiNDJmZjI3YThiZmMwYmMgcHkzaworNTgwODYgNjBmYjk4NjEyYTllN2RhY2Q2MmI0NWM0NjFjOTU4NzY0OWNmOWQwMCBsZWdhY3ktdHJ1bmsKKzU4MDg3IGNlYTZhODBiZmZiMjliMGY4M2YyOGJmNWQ0NmM1YjNmNzIyMGQ2Y2EgbGVnYWN5LXRydW5rCis1ODA4OCAzNGI1MDAwMWRkMmMzNTc3MjZiOWQ0ZDNmMDU5MzY3MjQ4OWJhMmY4IGxlZ2FjeS10cnVuaworNTgwODkgODYyYWU0M2NmYjJiMmUyMTZjZTgwYzZhZGM5NmUyMWRkOTAwMGIxNCBsZWdhY3ktdHJ1bmsKKzU4MDkwIDc4YTdiOTlkOWY0MmEwZmMzMTNiZjRhZmFiNjE4MmYzNGFiNjU5MjAgbGVnYWN5LXRydW5rCis1ODA5MSBjZWQyNGNjYzQ5ZGQ2YmIzN2U2YzgwZWQ0NTk5ZTZmMjkzZWM3YzQ3IGxlZ2FjeS10cnVuaworNTgwOTIgYWMxOThmYmQzNzAwNGZjYTgxOTRjNTVlMDA2OGU2Mzc2NDYxOGU3MCBweTNrCis1ODA5MyAyODJlMmQwYzI5MzcxYzExMzQxM2FhNzE3ZmMwYWM5NTAxZjcxZmQ4IHB5M2sKKzU4MDk0IDViZmZiNmM3OWMwNjExMjQwY2M2Y2UzOWZiYTI2MTE1MjhmYjI3ZjkgcHkzaworNTgwOTUgMjZhZTIxMDk2OWMwNWU3YmY1NGExNDMzN2ExOTI0NzQ5YWZiNjczZCBweTNrCis1ODA5NiA0YTZjNzg4MjI2ZjVjMmZkODExMWEwMzMwN2UzNWNkNjdkYjQ4ZjcyIGxlZ2FjeS10cnVuaworNTgwOTcgMTkzMDIwYmY1MmRjMzU2YzlmNjhiZTRiZTU2NzNlOWI3YzJlMDY2OCBsZWdhY3ktdHJ1bmsKKzU4MDk4IDFkYWQ1OGUwMGMzYTUwYWQ3Zjk2NzNlMDcxNjE0YmJkNGYwMjNiNDAgbGVnYWN5LXRydW5rCis1ODA5OSAzMzgxN2RhNTNmZDc0M2E5NGU5NmE3NjU0OWZjZThhNmQ4MWI0ZGI1IGxlZ2FjeS10cnVuaworNTgxMDAgMjBhODBiODNhNmM1MjY5NmZmZGEzZmFjMzkzOTA0ZWQwNDdkNmQyMyBsZWdhY3ktdHJ1bmsKKzU4MTAxIGIzYTRhMTRkOGFjMzEyMzE5NWI5MDkzNzE3N2VjYTBiMWI2N2FjYjMgbGVnYWN5LXRydW5rCis1ODEwMiBlYmRmMmMwOWMxODk5MDg3NDJmYTk0NDY2MmQ3NzM0NGEwZWE1OTBhIGxlZ2FjeS10cnVuaworNTgxMDMgYmZlMThiOTA3ZDg3MzVlNTFhOTc2MzljODllNDBiMzk5NGE5NmRkZCBsZWdhY3ktdHJ1bmsKKzU4MTA1IDE4ZDVhYTUxMzVjYTNhNTMzZGRhYjAzMzhmZDQzYmZjZjYzOGRiN2YgcHkzaworNTgxMDYgM2ZmMjQ5OGNmNTQ4YTc3MTcyYTljY2M0OWY5MWNkZTBhZTA0ZDQ4NiBsZWdhY3ktdHJ1bmsKKzU4MTA3IGU4Mjg3NmE2MjFiNWY0MzgyMjQwZWI3MjcwM2VjYWE4Nzg2ODczMDEgcHkzaworNTgxMDggYzViNmFlOTQ0MGI1ZGZmNDFkNWUyZWExNzc0ZTg3MDkwODEzNTRhMiBsZWdhY3ktdHJ1bmsKKzU4MTA5IGVhZDdjM2M2YmUxYjlhOGQ5MDlhYmJiOTA3N2I3MDk5MTllOWE0MTEgcmVsZWFzZTI1LW1haW50Cis1ODExMCAyNzRmZTRiYmUzZTA3MGQ4YzQyNjI3NDc2MTU2NzAzZTI5ZmIyNzA0IGRlY2ltYWwtYnJhbmNoCis1ODExMiAyNWVhNGU2NmY5YTAwNDgwYzUxYjUzNDdhZDcwZjg4MTgwYTA0YTU1IGxlZ2FjeS10cnVuaworNTgxMTMgNjM3YmZiMGM1ZGFlODVjZmI3MDRkZjFlZmE2NzQwZDQxOTRhZTRlOCBweTNrCis1ODExNCBjYTA2YzRhMzA5MWVlNzRiNWNhMjI4NjJhYzkzZjNkZTk0NDE5ZDVhIGxlZ2FjeS10cnVuaworNTgxMTUgNTU1M2Y4YjRkZWMwZGUwODA3ODRjYzAyN2QyOGMyNDQ0MmExNDllMCBsZWdhY3ktdHJ1bmsKKzU4MTE2IGI1Nzk1ZGE3ZGQyNjNhNTE1MTI0MjNkNmRhZmYwODcxYTQ3NWI1YWEgcmVsZWFzZTI1LW1haW50Cis1ODExNyAwODU4ODg3NmU0YTc0Y2Y1ODExNTY0ZTVhZjZjNDRmMDI1YjcyZGFhIGxlZ2FjeS10cnVuaworNTgxMTggMjAzOThiNTUyNjZjOTZiNWYxZmIxNjdmYTM3YTdlOTA3YWU5YzgwOCByZWxlYXNlMjUtbWFpbnQKKzU4MTE5IDg0MGZmNThkMWU5ZWZhNDhmMDMzODdmNDY5NzQzNzg5YTI1MThlZjUgbGVnYWN5LXRydW5rCis1ODEyMCA3NTZhN2I3Y2RjNGU1YWQ5OTYwYmZjMTRkNTA0YmNjZjllMzc4ZWEzIHJlbGVhc2UyNS1tYWludAorNTgxMjEgOTAwNzE1NGE3YzQ5MTU3NmYzYThhZDhmYjRlZjZlMjM5Y2NhMDI1ZSBsZWdhY3ktdHJ1bmsKKzU4MTIyIDA2ZWZlODM1ODA0YTJkMmE2YTU0NjUwZDViOWI1YzQwNmI4Nzg5MmEgbGVnYWN5LXRydW5rCis1ODEyMyBjMzhlMzUzZTg3NjFlODQwMDQ2YjY0N2M2NzZlZGNmZjVhYTdhM2M1IHJlbGVhc2UyNS1tYWludAorNTgxMjQgMWUzZjU3ZTczZTA0YzNhZjM2ZTZiNmVkMDZjNDJlYWE5OTg3OGRmOSBweTNrCis1ODEyNSBhMGQyMDEyZmY0YzE1YjVlY2M5Y2MxNWIwYjk0YmU2Mzc0NTM0Nzk3IGxlZ2FjeS10cnVuaworNTgxMjYgODRkYzg2ZjIxMTk2NGI3Mzc0ZTExYzc4MTVjZmFlMDUxZTE5ZTA3YSBweTNrCis1ODEyNyA1YWI1YTVjNzM2NjhmZGI5YmU1ZDJjZWQ0MmI4NzI4Zjg2Y2Q1MmE0IHB5M2sKKzU4MTMxIDk0MmZhMWM0YTlkMGVmMDEyNjZkNWY3NjNhYTg0ZGY1YTUwOTI1ODIgcHkzaworNTgxMzIgYmYyZDhiNzk0OTNhYTIwMTcyYzJhNDBmNjg4MzUzNWVjY2JhZDI2YiBweTNrCis1ODEzMyA3MTA3ZjM5YzJmNjZjMjBlNDMwYmE3YTU1ODk0YjRkYTRiMDBhNWM5IGxlZ2FjeS10cnVuaworNTgxMzQgMzllYmNmMGE5OGI0ZDEzNDdlNzdmNmJlMjg5YmM2ZDkyMDAzNGFiZCBsZWdhY3ktdHJ1bmsKKzU4MTM1IGUxMDAzNzFhM2Y2MmRlNTNhZTJmMGE1YzgyNTViMGQ2MWE3YTUwOTIgbGVnYWN5LXRydW5rCis1ODEzNiA5NDlhMzViMjdkMjA0MmRmYmRjOWUwZDUwMzRiZTBiMmI0NmFlZjZlIHB5M2sKKzU4MTM3IGIyZGNkNzU3YTZhMzc1ZWNmZWUyYTY1ZWY2NjljZjBhYzBkNzI5Y2EgZGVjaW1hbC1icmFuY2gKKzU4MTM4IDUyN2M0NGVmMjZjY2QyZTM4M2IyMWVkMzk2OWM3NjE3NmZkOTIwY2QgZGVjaW1hbC1icmFuY2gKKzU4MTM5IGM3OWEyZjBhNzAzNDJkNDRjMmY4NzdjYjdlZGQwZDhlZjUyZWI0MDUgbGVnYWN5LXRydW5rCis1ODE0MCBjNjc4NTExMzBmYzRjNmU5YWNmYzg1ZGEyN2NiZTM0OWZiOGIyYjliIGRlY2ltYWwtYnJhbmNoCis1ODE0MSBmMTRmYjdiMDNkY2ExZWI3Njk2NTYxMjEzYjUwZmJkMDg2MDc1MWI3IGRlY2ltYWwtYnJhbmNoCis1ODE0MiA5OGJhNWMyMjExOTg2Y2MyYWI5ZmY0OWYzMDY3ZGQzN2ZjNDgyYmJmIGRlY2ltYWwtYnJhbmNoCis1ODE0MyA2M2YzMTU0YzczMWQwMjJjYmIwOTg5OTM4ZWM2NjdkMWM2YzhkMzcxIGxlZ2FjeS10cnVuaworNTgxNDQgNjNjOTU3NjNhNDNiZTRlOTE5NDRkYWYxOWVhMGYwMzhlNzc1Y2I2NSByZWxlYXNlMjUtbWFpbnQKKzU4MTQ1IGM4YzdhOTQ3YTY0MTk3Yjg2ZWZlOTQ0NWRkM2Y4ODcwOTNlZWI5ZjQgbGVnYWN5LXRydW5rCis1ODE0NyAyZjhiM2VhNjJhMmUxZWFjYWI0ZWQ5MDIzOTg3NDA4OWIxMjk0OTQ0IGxlZ2FjeS10cnVuaworNTgxNDggZGY4ZDMyZDVlNDQ0MTBkNjZhMTJlMjQzZjg2ZTE2OWJmYmEwNDU5YiBsZWdhY3ktdHJ1bmsKKzU4MTQ5IDYyYzNjMTA0Y2EwMTIwMzliNjlmN2Q5NDI1YjU5ZjE2YTljNzlhMGQgbGVnYWN5LXRydW5rCis1ODE1MCBlYjk4ZjIyM2Q2ZWFlYWQ0NWZiMTg3NTM3YmJjYzczYzQ0YzZhYjNiIGxlZ2FjeS10cnVuaworNTgxNTEgOGI2ZGM2NmUwZWI1NGVjN2FmNmZlYTE0NmIzMWViMzU1ZDMxMDVlYyByZWxlYXNlMjUtbWFpbnQKKzU4MTUyIGUwZjVhZjE0Yzk4ODNjYTQwMDVmYmNjMDEzMDcyMDY4ZWRlNmMwYTQgcmVsZWFzZTI1LW1haW50Cis1ODE1MyBlNTFlZGRlMjgwN2YxZWExMWUxYjczNjkwYWE3YTQ3YWZjNDdlYzcwIHB5M2sKKzU4MTU0IDA1ZDdjM2QwYjc3YTIyOGFlZTRiODFlM2U2MjBkMmNkZjg1NDkzYzMgbGVnYWN5LXRydW5rCis1ODE1NSBmZGZmNDhmODdmMzVlOTA3NTc4ZGYwYWU3NGE5ZjM1ZDI3N2Q1NTJhIGxlZ2FjeS10cnVuaworNTgxNTggMTMzOTFmOWQyMGVhNDk5MjYyZmNjZjQ1N2FlNjkxZmRiOTZiNTYwYSByZWxlYXNlMjUtbWFpbnQKKzU4MTU5IGUwMDIzMzk1ZTUzOTMyOGI5ODE5MGQxNzdiYmViYmRlZjdlN2Q4NzEgbGVnYWN5LXRydW5rCis1ODE2MCA3M2YyYzlkMTZjZjRkNzVjNGNlYTRkN2Y2NjJjMWNiOTVlNTg4MTFjIGxlZ2FjeS10cnVuaworNTgxNjQgOTA0MTk2NWE5MmYyZWY2NmYwNWVkMDUxODc0NmI1NGUyNWFhMTI0NCBsZWdhY3ktdHJ1bmsKKzU4MTczIDFiNjZlMmE1Nzk2ZjE4Yzk0NzVhNmZjNmM0ODAwZDgyZTFlYzVhMWMgbGVnYWN5LXRydW5rCis1ODE3NSAyZTdkZDIwMWVhMWQyYzdlYTllODYyOGE3YmU1MWE0NzVjZWFkZTM1IGxlZ2FjeS10cnVuaworNTgxNzYgNzYzMDI0OGI1OTNjZGZkMjAzMDcyMDcyYzcwZTU1OTVjNTU0ZTY3MSBsZWdhY3ktdHJ1bmsKKzU4MTc3IGFlOTgyMjkzYzFhZTA4OWNiN2YxNjNkOTMzZjFjOGFkNmI5MTY4ZDYgbGVnYWN5LXRydW5rCis1ODE3OCBlMzEzNzk1ZWExNzQyZGRmYWUxYzU2YmM2YmY4MDMxNzhhMmU1MzUwIHJlbGVhc2UyNS1tYWludAorNTgxNzkgOWNjMTMyYzg0NjFlYzY0NTcxZjQyMjY3Nzc5MDA2ODRhNDk5YWIwOSByZWxlYXNlMjUtbWFpbnQKKzU4MTgwIGUwMWRkMmJmMDk5YTVhZGEwYTU3MjMxM2M4MzE1ZDM3NzExOGVmNDYgbGVnYWN5LXRydW5rCis1ODE4MSA4ODkwYmU5Mzg2YjdhYzQ3YTYwODc5ZGNiZjVlZTY1ZDc5YTk4ZWYzIGxlZ2FjeS10cnVuaworNTgxODIgNGU1N2MzNmY2ZDJlMzY2MjI4MzJlNDNmZjk4ODIxODY5NTU3NzI2YiBweTNrCis1ODE4MyA1ZDM0MjhmZjdmZmExODIzZGFmMjIyNTEwZDlmYzIyZjljZjBhNTc3IGxlZ2FjeS10cnVuaworNTgxODQgMzYzMjAzZDc1ZDY5ZjNkZjg3MzY5NmJlMDRiMzQwNWRhODA1ODBhYSByZWxlYXNlMjUtbWFpbnQKKzU4MTg1IGM1NDkwYTllYWFlMmY3ZWZjM2VjM2IwMzQwNTc1M2QzZTU5Njk1YjAgbGVnYWN5LXRydW5rCis1ODE4NiAyZmRmZjBiNWJlYjZhYjdjNmYxYzc4YzUxN2M2ZTQ1YjU4YWQ3MTIyIGxlZ2FjeS10cnVuaworNTgxODcgNGU1NDNmYWUwZGVkODlmOGEyMTBjODc0ZGI5YmU3NTc1YmY5ZmE0NSBweTNrCis1ODE4OCA1MzM1Zjg5ZGYwODFiYWU0ODdhZDQyMThhNmEwNjBlOWNhZWZmZTM1IHB5M2staW1wb3J0bGliCis1ODE4OSBlMzk1YTYzNmVlNGE3Y2VlNjNlZTc4ZjkxYzE0OTZjYjcyMWIzYmVmIHB5M2staW1wb3J0bGliCis1ODE5MCA2NDFkNGNhYzk3NTZkOGE3MTczY2FkOTdjZWQ1MDdlYTkxZmM5YzFhIHB5M2staW1wb3J0bGliCis1ODE5MSBjMWJjYjYzMzkzNTc3NGEwOThmY2U1YWM1NWFlNzBlMjIxMTEyMDRlIHB5M2staW1wb3J0bGliCis1ODE5MiA1OTc1YTczMTZjMDY1MzIyZTg5ZTVjMWMxYzc0NzNjMzg4YzhmZWM4IGxlZ2FjeS10cnVuaworNTgxOTMgYjkyMzZhNzVhNmU1YWVkNGE5OTdjMGMxN2JjYjJjYTY3ZjVlMDkyMCBsZWdhY3ktdHJ1bmsKKzU4MTk0IGVmMjIzNTQ2YjRiZDZkZTMzODhjZGNlNjEzOGE0YTY4Yzg1MjVmZDggcHkzaworNTgxOTUgNmEwZWEwNjVhOTlhMmY5OGU4MTIwZTQxY2FhMjk2YjAwY2U2N2U3MSBweTNrCis1ODE5NiBmMTkyNDQyZjQ0ZDgxZDhhNGMyZjE2NzE5YmViZTYzZTM0ZTMzZTJlIHB5M2sKKzU4MTk3IGIyOTU4MmJkYzkzY2Q2Y2NiYWVhZjE0NmRkZGRjNjcyODFkOTc3ZmMgbGVnYWN5LXRydW5rCis1ODE5OCA3ZGRkNDA1MDNlMWExZDAwMjY5Mjk2YTRlNWMwZmZjYzIzZTU3Y2ExIGxlZ2FjeS10cnVuaworNTgxOTkgNzVlNmJmYTJkNGQyMjBlN2MxYWJlNmJjZWNiMjVhOThiZDZhMzI4YiBsZWdhY3ktdHJ1bmsKKzU4MjAwIDNlZDJmNzcxNjNmYzMwZjhmOTI3YmVmNGZjZWU5ZjcwYTFlMDczYmIgcmVsZWFzZTI1LW1haW50Cis1ODIwMSBmMmVmOGFlMGJjMTg3NTI5NTU0NzJlODBmZmZkODYzZmI4MDBiZDEzIHB5M2sKKzU4MjAyIDFiYWMzODZjMTdjYzY5Yjk5ZDMzMTViOWZhYTE1MDUyNmM5ZmY2MTcgcHkzaworNTgyMDMgZWIzOTZkZTgyYzAzMGZjNzBhZmJlMWM0NzY2MjFiMGU3ZTQxYTgwZCBweTNrCis1ODIwNCA4ZTEzZDNlYWNhY2NiNGJlN2NiYWY2ZWFjNzdhMzEwOTViZWNlZDM2IGxlZ2FjeS10cnVuaworNTgyMDUgNjkyNDkzNzcxYWUzMjJjNWQ2ODgwNjU4NzU1NjUyYjExODNjNDhiNCByZWxlYXNlMjUtbWFpbnQKKzU4MjA2IGQxZmE4MjBiMmRjYTBkMWVhZDc3NTcxM2RjM2QwMjlkYTRhNTc0NDMgbGVnYWN5LXRydW5rCis1ODIwNyBjMTllYzk1MTVhMzM2NzYyNWJhNDYzODA3YWZiMjBjNWE5ZTQ4MmY4IGxlZ2FjeS10cnVuaworNTgyMDggMzU3ZjU0MDE1YTJkM2JhMTBjZGYxMzFjODM0MzZjYTNiNGUyMmY1YyBsZWdhY3ktdHJ1bmsKKzU4MjA5IDQ0YWE0ZmZkYzFhYzk2Zjg4MWI2MjczZDIzNDhiMGY2YzY3MzkzMzEgbGVnYWN5LXRydW5rCis1ODIxMCA4MTQ3ODQ2NWZlZjNiMTQ3Mzg0NTlmYjdmODUzMzFlNWVkYWZjYjQ1IGxlZ2FjeS10cnVuaworNTgyMTEgMzU3Y2YwN2EyM2ZlMzY2YmY2YWI2ZGViYjU2MTNiOTcwNDg4ZmQzYiBsZWdhY3ktdHJ1bmsKKzU4MjEzIGIwNmIxOTFiN2NmYTBiODdhZWVmZThjZmQ0MzJlM2M3NWU1MmEzN2EgcHkzaworNTgyMTQgYTVkMzdjZGNkMzE2MTczYTEzNWQzYzdiOGVjNzMyMmRmZTE2YjUyZSBweTNrCis1ODIxNSA1MjFiZjg3Y2ViYmQ5ZTA4YWZkY2MxN2M0ZWZlMDM4NWI5MDhjZWNlIHB5M2staW1wb3J0bGliCis1ODIxNiBlZjE3MjE4MzYxNzgyYTA4MTg3NGZkMjk5MjU5OTYxNDM2MGU3ZjY5IGxlZ2FjeS10cnVuaworNTgyMTcgNDA5MDkxYjI4YzdlOWQ2ODM0NmI0MmNkMTg4NWE0ZmU5YjVjMDg4NiBsZWdhY3ktdHJ1bmsKKzU4MjE4IDdkMTRhMzE4ODg1MDFkYzFkOTAxODc5MzU2NjQwZWE4NWUzMmVmNmYgbGVnYWN5LXRydW5rCis1ODIxOSBlMWMwOWZhNmZjMGY1ZDI2ZmUzMmIyOTkwODliOTlkNzZlNTM3NWRhIGxlZ2FjeS10cnVuaworNTgyMjAgZGMzOWRkZGVhMzMwMDQ1ZTk0NTQ2NjMxYzkxYjY3ZDdiZmI3Njk4ZSBsZWdhY3ktdHJ1bmsKKzU4MjIxIDQ2YzQ2N2RlZTY1OTM4ZTczZTliNDNhMmQ3Mzc0YTE5NWYyZjBkMzMgbGVnYWN5LXRydW5rCis1ODIyMiAwYzhmZWM3NjExMWM3ZmFlYzYyMWNhODljNGVlOTk2MDhlNDI0NzA3IHB5M2sKKzU4MjIzIGRhOTUxOTc5N2M2MTA1OGExOWFhMGVjMjllNDg3OTk3NTFlNmJiZGEgcHkzay1pbXBvcnRsaWIKKzU4MjI0IDE4MzdjYWU5MGU1MmU1NTBmYmFjNGU1NTY0NzFlYWVmMjFmYzc0OTYgcHkzay1pbXBvcnRsaWIKKzU4MjI1IGVjODQ2ZWJhYjJlZmEwYzU3NTE2MWMxMGRhZjRjOGQ3ZjA4OWI4N2IgbGVnYWN5LXRydW5rCis1ODIyNiAwZmY0MWIxNjNmNWJhMWY1ZDI4OTk5MmQ2YWExNDRjZWE1ZjViNmNlIHB5M2sKKzU4MjI3IGYzMWQ0MTU1NTRjZGJmYzViNTQ5ZGQzNzZlMmFmZGRhMTkwNmJjZWQgcHkzaworNTgyMjggZjZjYmFiNzU5MjhmNjg2NDljNDU2YzA5ZDE2MmViOTdmMGQ1YmU0MyBweTNrLWltcG9ydGxpYgorNTgyMzAgNzNkMjZjZDhlMGI1NjRmMTA4MzJiN2JlZmI1OTkyYWQzMDI2ODQyMiBweTNrLWltcG9ydGxpYgorNTgyMzIgZmMwMzM2ZjQ0N2FlYWYwYjVmZjNlZDY0NGVhYmE0MmYxNTBlYTMyOCBsZWdhY3ktdHJ1bmsKKzU4MjMzIDM3ZmZiYjdhMTk2MjkzMGY3MmE1ZDRiMGY5NWUyMGVmMjJkYTZjYjUgcHkzay1pbXBvcnRsaWIKKzU4MjM2IDA0NzZhMmNjNTY1ODc0NDNjZjQ2ZmRlYmNmODg1MTEwNjExYzg4ZmYgcHkzaworNTgyMzggY2VmMmVkODI5MmI2Y2ZkYmI4NTQ2MTI5ODVhMmE2ZTk1NzMwNDUzMCBweTNrCis1ODIzOSA1ZjczMzhhNGQxZGRkZDI2MTgxZjYwYWRhYWFkNDk2YzcwMWJmODc0IHB5M2sKKzU4MjQwIDU1YTY2MzE2Yzg5ZWQyY2IxNjE0YzI3YTU1NjBmYmQ0NWJkZjE0NjYgcHkzaworNTgyNDEgYTRkZTMxMjIxNTc4NDdmMzA4ZGJkNjJiM2ExYjAxZjM1MTRmYzUwYSBweTNrCis1ODI0MiBiNGU2ODhmZDY2MDJhNTY5MDE1MDNlMjY0NmE5N2VkNzJhZDk4MTY3IGxlZ2FjeS10cnVuaworNTgyNDMgOThmZjliMmZmNzU3NjUxZDVkMmE2ZmIzNjM4ZTEwNTViMDY3MmM5NyByZWxlYXNlMjUtbWFpbnQKKzU4MjQ0IGI5M2VkMDQzZjI3MjFiNWJjZmNlMGUwMDJmYTg0OGY4MWNhMzZlZWUgcmVsZWFzZTI1LW1haW50Cis1ODI0NSBlOThlMTFkNzc2OGM2NWI2ODIxODI3MmRkYWUzYTNkNTEwMWVjYTQyIGxlZ2FjeS10cnVuaworNTgyNDYgYjcwZWRiNWE3Njg4NDkxYzczZjU1ODUxNWJjNWE3MjI3ZmZmODNjZiBweTNrCis1ODI0NyA3NzNlOTc2YmFiM2FmYjUxNDlkMjRhM2UxZDE0Y2YxMzFjYzVlZjRlIGxlZ2FjeS10cnVuaworNTgyNDkgMGI2MTRmZDJkYzJhZTA1NmI2ZTA5MDFhNjk3MDgxZjY0OWMwMGNlMiBsZWdhY3ktdHJ1bmsKKzU4MjUwIDk0NjNkZGExOTE2MDEzYWY4ZGM3NWFhMjhkNDRlZjZjY2ZkODAxOWEgbGVnYWN5LXRydW5rCis1ODI1MSA1M2Y3YzkyYjQwMjQ3NTVmNjIwZDkzNzEyMDE5MjA3NDg3Y2E4NzgzIGxlZ2FjeS10cnVuaworNTgyNTMgMmRjMGU2ZTNhZDIwMGU2YWFlYzNjYTk4ZmNhNDA3NDQ3YTc4NjdkOSBweTNrCis1ODI1NCBmODFlMzljNDM3M2RhNTgzZGM0NTMzOGM1M2E1MWI5Yjg4OGJhODFkIHB5M2sKKzU4MjU1IDc5YjBkYjAzNTZkMzFjOWE2NGE1ZDg4Y2FhNGFiNTNjNDM5Y2Y1OGUgcHkzaworNTgyNTYgOGQ3ZTkzYjQ3Y2FiZDUzZjczYzM3NzhkOGE2ZjhmNjg0OGQ1NzUyNyBweTNrCis1ODI2MCAxYTc5YTQ1MDAzZjVkYjk0MjY4MDkwYWNlNjNkYTBhZGMxNWI4ODcwIHB5M2staW1wb3J0bGliCis1ODI2OCBiOTAyODZhYjg2MjlhZjAyNDEzODFjMDQwYjM3ZTg0MTdiZTljMTU1IGxlZ2FjeS10cnVuaworNTgyNjkgODU2ZjhlYTkyMmRmNTEyOTQyZGJmZDQzYmQyOTNhMjIxYWZiOWMyMyBsZWdhY3ktdHJ1bmsKKzU4MjcwIGY1MzAwNTk4YjExY2FkMTMxMWUzMDhiMmMwNTExYzcxYmJhYjU1MDcgbGVnYWN5LXRydW5rCis1ODI3MSAxOTQ0Zjc5ZGI4YWQzNDRmZTVlZDFlZTk1Nzc5ZDVlZTg1ZTk0NzVjIGxlZ2FjeS10cnVuaworNTgyNzIgMTNiYWFkYTJhNjAxNzFlNDIyYTQ4N2JjYTlkMWYyNjc4NGFlMDA1OSBsZWdhY3ktdHJ1bmsKKzU4Mjc2IGE3YzQ4YWI4MDllYzQ4ODFjOTFiY2I4MzRkNzhlODdmOTM1Y2Q1ZTQgcHkzaworNTgyNzggMGZmNDZlZjk0NmIxM2RjNTIzMzUzMjI2Njc3YjIzYzEwZmQ3OGQ1NSBweTNrCis1ODI3OSA5YmM5ODU1ODJjYjI4NTY3MGMxOThjNDdhZWI0Y2YwN2I3NGZmOTY4IHB5M2sKKzU4MjgxIDdmY2Q5OTQ1ZDFiZmUzODQ3NzYzN2RiZWE4MjI4NTA5ZGIzZGJkMjkgcHkzaworNTgyODIgZTg4ZjgzYzNiMjVlOGM5ZTUyM2FhMmQ1MGFkYjZlY2FhOWU4YjIwZiBweTNrCis1ODI4NSA4NjY3MTcyNjljYTM4MjM1MTM0NGM4Yjg5Mzk5ZDVkMzA4ZjkxZDQ3IHB5M2staW1wb3J0bGliCis1ODI4NyA4ODBiMGIyMmMxNWE5ZjcxYmNmMmRlNjgyYzAyYTAyMTJkN2M0NGYxIHB5M2staW1wb3J0bGliCis1ODI4OCAzODFlZDQxMDAzZTc2N2FmMjk4NGNlYTU3NzQ4YTI3NzU2MzYyMWRkIGxlZ2FjeS10cnVuaworNTgyODkgMTA2YTcxYzUxNDc3NTFiYmZlMDU2YmIxMjc5NGVlMjBmYmI4M2RjYyBsZWdhY3ktdHJ1bmsKKzU4MjkzIGExY2E0ZWE0MWU3ZTlmZDU4MDk3OTJiYzMyNDYxNTEzODExY2I3ODkgcHkzaworNTgyOTQgOWQ2ZDlhYzk1YWUxNzYwZDAxMDNhZjhiNGY3YmY2MWIzMDAxZjU4ZCBsZWdhY3ktdHJ1bmsKKzU4Mjk1IDc5NDMyNjJlNWZjNDM3NjdkMDQ5NWJkYzU5NTFkMmRjMDJlYWVjOTggbGVnYWN5LXRydW5rCis1ODI5OSBjOWJmNmU3MDMwOGU3NjQxYWNiYjczZGExYWNkYzhkMzc1N2M3NmE1IGxlZ2FjeS10cnVuaworNTgzMDQgYjEyY2Y0NjdiMDVjYzJkMzc3MmYwNDI2OWFhODM1OTgxMmMyMjc1YSBsZWdhY3ktdHJ1bmsKKzU4MzA1IDMzM2IwNTJlOWRhOWEwYTIwY2RjYjNiZjVmNDZmMDkyMzdiNGJlN2UgbGVnYWN5LXRydW5rCis1ODMwNiBjZDI4MWMxMjgzNmRjNGYwODdjNTRjMDY3NDU3MTg3M2VlMDgzNTljIGxlZ2FjeS10cnVuaworNTgzMDcgNzMyY2EyN2E2NzhjZmVjMWVmNDRlNWNlYmQyYjMyOTYxNGY3ZWRkNyBsZWdhY3ktdHJ1bmsKKzU4MzA4IDFiMWE1NjUyZmVkOGY3NzZmOGU0MWI3MGUzYzhlNDdmYmQ0YmE3NTUgbGVnYWN5LXRydW5rCis1ODMwOSA5YWU0ZThhNTM0ODY2MmRlY2EwMmQ2ZGZhYjU5YThmZDNiNzQxYThmIGxlZ2FjeS10cnVuaworNTgzMTAgMTc2YjYxMzFiMGJhZjQxMDNkZmY0MTI4NmNlZGIyM2M2N2UwZjNiNiBsZWdhY3ktdHJ1bmsKKzU4MzExIDY1YjM2NTRjNjdmNjMxYzY3ZTQzNjBhMGY2ZmFmOThlYTUwNjVhYmEgbGVnYWN5LXRydW5rCis1ODMyNSA1YjUyNDlkZDE2YjQ1MDc5YjE4YzBjZjRlYjA3N2I2Y2MwMDYyNDM0IGxlZ2FjeS10cnVuaworNTgzMjYgNzNmNDk2NTY0MjBiY2E3NzE1NzJmYTIyMTRmYTYzOWIyZTEyNTg4YiBsZWdhY3ktdHJ1bmsKKzU4MzI3IGU4Njk0YWI1M2E1ZWNhM2YyMWZhNjNkODBkMWRlZmM4OWZjYWRhNzkgbGVnYWN5LXRydW5rCis1ODMyOCBjMGFiZGQ1NzllYjI2YWZmNDg3MWZjYzUyZDUyZjc1YjhlYmRiNDJiIHJlbGVhc2UyNS1tYWludAorNTgzMjkgZjJjOWYyNGEwZjVhODlkNGQ4ZGUzYmEyMmEzOTI1MGE2Mzg3YTExMiBsZWdhY3ktdHJ1bmsKKzU4MzMwIDk5NTY3NzIxOWE2NTU4MmE4NDg2ZGMyN2Y0NjQyM2ExMzBiMDNlZTYgbGVnYWN5LXRydW5rCis1ODMzMSAyNzUxMTU5OTliNTgxMjFmZDMxZDZhZDk4ZTgxMzcyODI1OWQ1ZTJlIHJlbGVhc2UyNS1tYWludAorNTgzMzIgMWJlYTZmYWZjYzUwNTcxMDk2NTNmMWU1ZWIyNjJkYTRlODc5Nzk2NSBsZWdhY3ktdHJ1bmsKKzU4MzMzIGE1NDMwMDYzMDhiYjliZDk0MGViNWIxOGJiOWZiOTQ5Zjc5Yjk1ZmQgcmVsZWFzZTI1LW1haW50Cis1ODMzNCBlODQxMTk3YzFkMTdmNTVmMGIyN2U5YjM5M2YzOWIwYjY1NWM1OWVkIGxlZ2FjeS10cnVuaworNTgzMzggMTdiMDczNzBhNzgyOTAxYWRmMTgyNjg4ODVjMDY2YjE0YTBjNGEwNCBsZWdhY3ktdHJ1bmsKKzU4MzQzIDY4ZmMxMDdkZGI1MGI5OGFmZDEzNjgxNmU5YjZhNWI2MDMzYTZmNGQgbGVnYWN5LXRydW5rCis1ODM0NCBmNzM1MzU5NWI3ZmE4MTlmOTZlY2NlYzYzMzFkYWQyMzA5ZmM5YjRjIGxlZ2FjeS10cnVuaworNTgzNDUgYWNkYWM0MWY3MTA5NzJhOTIyNTE1ZTYyOGE1ZTkzY2FjZDFhMGQxYiByZWxlYXNlMjUtbWFpbnQKKzU4MzQ2IGVkNDk5ZTM0OGExMTlkMjc3ZGRmZTIxODkzNjE3NzlmODRiMzAwNDMgcHkzaworNTgzNDcgYWUyYTk5ZmM3M2RhNmQyYmViMWEyYmIwOWQxZTJkYTIzNzg1OWI3OCBweTNrCis1ODM0OCBmMzZkMGY3MDc3ZmNiZjVmOTc2M2UyNzQzODYxNzRiNzQwMjQwM2Q5IGxlZ2FjeS10cnVuaworNTgzNDkgYWQzNjZlMzE2ZTMwNjRmM2I0NjdmZjNhMzMxN2IyZmQzNzUyOGJlZSByZWxlYXNlMjUtbWFpbnQKKzU4MzUwIDM5ZjRjNTA2Y2Q3MThiMDQzN2Y4MGZiMDAxY2FmNTRlNzc5MTlhMjcgcmVsZWFzZTI1LW1haW50Cis1ODM1MSAzY2QxNDYzYzkzOGQ2ZjdjODMyODBmNzk2ZTMxMjRmNjg4OTg0OGQ4IGxlZ2FjeS10cnVuaworNTgzNTIgMDc0MTMwYTA3M2I2NjgyYWVkOGU4MWVkZWFiZTM0MmVkOTkyNTRjZCBweTNrCis1ODM1MyAyMzE5MmIxYjcxZTI3NTU0ZGU2ZGYzMDY0M2RlYzFjZmY5ZWY4MWYyIHB5M2sKKzU4MzU1IDE0YWRkZGE4MzM0NDMzNzVlMjkxZWRjNWFhNjcxNTI0YjMwNDI1ODMgcHkzay1pbXBvcnRsaWIKKzU4MzU2IGY1Yzc5ZjQzYmJmNjk1ODZlMmZhYWNjMDZiOWYwODViOWFiM2M5MzQgYWxleC1weTNrCis1ODM1NyBhM2JhZDY5NGMyODM5ZGEzZWY3ZGY1ZTU1NThlZWZjNzc4YmUzMzY3IGFsZXgtcHkzaworNTgzNTggOTRlNTM2YzM2NDQ5M2ZjOGFjNjI2MjVjNWRhN2E2OWMzYmFmMmJjMiBhbGV4LXB5M2sKKzU4MzU5IDMwNGQyY2VhMTM3ODM1Yjc0ZDEyOTUzMTA0MmNjMWY5YjU3ZjU3OTMgYWxleC1weTNrCis1ODM2MCA4YzEwYWFjMzcwMzc5MjVkY2NiN2JiZGZiNGI3MTRiNjFiZmIzZmZiIHB5M2sKKzU4MzYyIDhiYTUzMDBjYjRiM2I1ZDZiMzgwNzFjNzU2MTk2NWRkNDVhZWUzMTYgcHkzaworNTgzNjMgNzY3ZTBjMzEwYTZhYWZhN2YwOWJjZGQ3YjU3YmRlYzQ0YmNjNTQ5MSBweTNrCis1ODM2NCBmNjE0M2M0MTE3MTM1NjUwMWU0NmFlY2FhN2RhZjA0ZTk3Zjg1ZDhlIGFsZXgtcHkzaworNTgzNjUgZjYwNjFjNzFhNGQyMzZiNmU4ZDUzYjhjYzM3ZjdlYmQ2MTkwMjY4MyBhbGV4LXB5M2sKKzU4MzY2IGZhYjQwODlkYWI5ZjlmMGQxNzVlZGU5Yjk0MDRjNzI4ZGMzNjM0NDAgcHkzaworNTgzNjcgZGU0MWU5NzlhZWJlYjg5OGNiNjZhOWEyZGU2YTI1ZWQ1MWY1MTU4YyBweTNrCis1ODM2OCAwNDU5NTJmZjA4Zjc0M2IyMzE2MzUyOWM3ZWUyYTNjYmQ1OTAxNDY3IGxlZ2FjeS10cnVuaworNTgzNjkgOWU2MDIwYmIyMzUyMmIzMWM4ZTk3MmQwMGE0YzM1NDU5Mjk5OGY0ZCBsZWdhY3ktdHJ1bmsKKzU4MzcwIDRkYjVkYWI3ZjIzNTg5ZGFjNzg0NDNkYWI0ZWNiNDBlMGFiN2NmMjMgbGVnYWN5LXRydW5rCis1ODM3MSBmZjRiYmU2ODIzZmM5YjkzMGEyYTllMWQxOTkzNzE2ODNmZmUwZDE1IGxlZ2FjeS10cnVuaworNTgzNzIgOTE5MDRmM2U3YmUxYmE0ZTc4ZTMxMTk3ZTVhYTMyY2VmMjUxNTZjYiBsZWdhY3ktdHJ1bmsKKzU4Mzc1IDY2MTRkNDJkN2YwYTMzNWQ5YjFkNDFlYTA1MWNhZDM5NTU1ZWEwZDMgcHkzaworNTgzNzYgMGJhMzgxMDBjZGE5MDMyNTE1YTc3YjhiMTljYzBmYTcyNjIzMzFmMiBsZWdhY3ktdHJ1bmsKKzU4Mzc3IDhiZDkxMDAzNmM5N2Y3NDBiNzBiNDljMTFhOGM5OTdiYWM5YzhmODggYWxleC1weTNrCis1ODM3OCA1NzEzYjE3NmRkYjY5ODQ4N2VlOGRiMDY0YTVlMTM1MTg5M2U5MWFhIHB5M2sKKzU4Mzc5IDI3YWY0NTI0OWE4MDNkMTVjNjAxZjc3MjQ0NWFhOGIxYThkZjkxMzMgYWxleC1weTNrCis1ODM4MCA2NTk4N2IzOGRmMmUzNThjZDMzMmNlZTJkODRlZjcyMDM1MThmOGRlIGxlZ2FjeS10cnVuaworNTgzODEgOTY1ZTcxNTQxNzdjNjk1MDU5MzgxMDg1NjEyYmNlOTU1ZjhhNTNjNSBsZWdhY3ktdHJ1bmsKKzU4MzgyIGViZjJhNWNmMTNmYmRlMWU0NWRmMGUyNmYwODdmNTE4MmVlNWE5YWMgbGVnYWN5LXRydW5rCis1ODM4MyA5OGY2MTgwYjliMzMzMGIxMDFmNGMxMDYzNjIxZGU2MDgzZmUwZDhiIHB5M2sKKzU4Mzg0IDMzMDIxZTQwM2YzYzY1OWRhMzNjNzA2MWFiNGE2NmQyNzEzOGI3M2IgbGVnYWN5LXRydW5rCis1ODM4NSA5YzMwMTVmYzViZjQ1OTk3MDJkYTdhY2YwYTkzZWYzOWE1M2MzNjY0IGxlZ2FjeS10cnVuaworNTgzODYgYzQ4ZjkzODFkZGYxMzBmNjc0N2MyYjRmZjg1ZWNmYTAxY2FiNmNkMiBsZWdhY3ktdHJ1bmsKKzU4Mzg3IGRjNmUyYWRmOGRkMmEzMDZlOTg2YjdmNmZmMzUzMTYwZmIyMjY4MDAgcmVsZWFzZTI1LW1haW50Cis1ODM4OCBhMWI3Njc1N2Q2MmVlMGZiMDYxNzU2YjMzZjQxMmFmNTEwYzdkNmMxIC4uL2N0eXBlcy1icmFuY2gKKzU4Mzg5IDI0ZDExMTgwOTQ4MDA5NGIzNzEzYjA5ZTRiNzcxNzE3MjQ1YTRkMzIgLi4vY3R5cGVzLWJyYW5jaAorNTgzOTAgNDdjMDI3OTFlYzZiMmM2YmYxNjBjY2I3NzY3YjdkMzhjZDQxODA0YSBweTNrCis1ODM5MiA0YTcyZmM1ZGZiNzliM2QyMGE3N2Y1YWNjMTBlMzJjZWI0MjVmZTM2IHB5M2sKKzU4MzkzIGM5NGRhODQ3NjVlZTMwMjUyYWI4NmY4YTA4ODAzMzkyN2U5YjYxYTIgY3R5cGVzLWJyYW5jaAorNTgzOTQgZmE5M2RkNGUzNGJjMjMwNDY3YjE5MDBjYmM2OTYzMmZlZjg5MWViMCBsZWdhY3ktdHJ1bmsKKzU4Mzk1IGJjMjViYWZhMzNiMWZjNDZmOGQ4MWEzNzBlOGEyYmUyZjk4NzdkMTggcHkzaworNTgzOTYgMzdkODI3MGFjOGQ5NjFiNDgzYjg1OWY4YTAwMWQ4ODE0NDkzYTVmYyBsZWdhY3ktdHJ1bmsKKzU4Mzk3IDM0MGU2ZmQ1ZDc1ZjA1NTU1Mjg4NDZjNDY4ZGY3MDhjMDkzNWNhZDMgcHkzaworNTgzOTggNDE1YjFiYWNmZWQ3YWYwMGNkMzU1NjVjMGUzM2QwMGY2MDYzYmNkYiBweTNrCis1ODM5OSA4YzVlNjBkZGFhODI3YjVmMDE3MzUxNWEzYjExMThmZGQxZGRhZjIyIGxlZ2FjeS10cnVuaworNTg0MDAgOGQ0MGM1MzQ4Y2E5ZDkzZDAyZDg4MGFiNzY4MWQ0MWM2MmZlNGQ1NiBweTNrCis1ODQwMSBkYTUyYjRjNzc2YTQ1NGZhMWEwZDkwYTU2MzBhM2JkYzc1MTJiMjQ2IGxlZ2FjeS10cnVuaworNTg0MDIgMDZiYTQyYzJjMGQwNzQ2YTU2ZDVmNmMzZmQxOTMzNjE1ZjJhZGY5NSBweTNrCis1ODQwMyBlNWQ2ODkzZGJiMzZlZjQ0ZTkwMjhiYjZmYzMzNWI2MWUzYTFkMzllIGxlZ2FjeS10cnVuaworNTg0MDQgMWQ1MmU3ODM4NDJkYTFhODA2NzEwODFhOWU4MzdjOTU5ZDAxYThiNCBsZWdhY3ktdHJ1bmsKKzU4NDA1IDlmN2RlMTg0MzFmZTk1MGQ1MzkxZTU3NzRlZWQxY2QwNDU4MTA5OTkgY3R5cGVzLWJyYW5jaAorNTg0MDYgZmZlYzQ5ZDNkMjE1NDcxZmJkZmVhZDdiMTFkZTZhMmNjZjhmYmJjNSBjdHlwZXMtYnJhbmNoCis1ODQwNyA0ZjllY2VhODE3N2NiZWQ5N2I5YTZjMThmNTIxMmZhZDhiZGEwYzg2IHB5M2sKKzU4NDA4IGI0ZDhmNzE0NTllOTQ5YmNkMDU3MjUzMjEzYWNkNDA5N2E2ZGZlNmEgcHkzaworNTg0MDkgNGMxODljNzE0NGI3OTRiNDY3YjM0YWFjOGNlNDVlNmQzMThmMDczMiBweTNrCis1ODQxMCAyZjMwYmZiN2M3Mzg1ZjM4ZDA0NzdkYmQ4ZTg1Y2RmYTQ1OWEwODMxIHB5M2sKKzU4NDExIGI5ZDE5ZDUxZGUzNjk3NWE1ZTdjNDU3MDVkOTY1NTYwZDQzMTFjMTMgcHkzaworNTg0MTIgNmU2MGY2NWZmMzY0N2M5ZjE3MDhjNWI1NGFmNjZjZTE2NzYzNTkwMiBweTNrCis1ODQxMyAyYjc0NmYyOGIzOTlhNzEwNjk3ZDhhMzEwYWMyMGNhYWQ2ZTkyZDhkIHB5M2sKKzU4NDE0IDk5MzcxYmQyY2E4Zjg3ZDliNWJiYzRjZTQwZWVjNWM4MzE3Yjg3NjUgcHkzaworNTg0MTUgMDI3MTBiODk3MDFlMDgzNzUzMTcxNWM2NGQ5MDE1Mjg4ZjdlOWY2NiBsZWdhY3ktdHJ1bmsKKzU4NDE2IDM5YzliNTYxMjQ1MWEyNzI3Mzg0NjNhODEwYWQwYzI1NmNjMGU0OTUgcHkzay1pbXBvcnRsaWIKKzU4NDE3IDM5Y2I1ZDk2Y2U3NzAwNGU5NzI3NGE0MWVmMDkwNmE2YjJmYmViZTAgcHkzay1pbXBvcnRsaWIKKzU4NDE4IDhjNWE0MzNhOWQ5MGU3ZGEzNTFlYzU1NDEzMmNmNDc2MWNlNDg4M2QgcHkzaworNTg0MTkgYmYxMDE0NDQ4YzQxN2Q5NDg1NmViM2MxMzdkY2MyYzNjZDQ5ZTRiYSBsZWdhY3ktdHJ1bmsKKzU4NDIwIGI2Mzc4ZmE2ZTE2NDkwYTcyYTRmNmZkNTZmZGNjNGMwZGI3MDEzN2EgbGVnYWN5LXRydW5rCis1ODQyMSBjYTliMDhlN2RjMjNkYTAxMGIwZjFkMWE3ZWZmYTI0ZDVhZDE0ODhhIGxlZ2FjeS10cnVuaworNTg0MjIgZTQ5YWU5OTgwODA4MjJlMzQ3MWE5ZDRhY2FiN2I5NTBmODY2YTZkMyBsZWdhY3ktdHJ1bmsKKzU4NDIzIDE2ZDRiOTA0ODUxZmUwYTFiMTc0NjI0NmU3ZjIzNmU2NjdlNGU2MWEgbGVnYWN5LXRydW5rCis1ODQyNCBjZGEwYjYyNTI3NWE2MWIxYTZiMWRjZTI0YTRlOGMyNmZhZWMyNjUxIGxlZ2FjeS10cnVuaworNTg0MjUgOWI2YTQ3M2NmYTIyOGIyZDcyZTY0ZmQ2YzliYzBlYjA2MzEzZmEwOSBsZWdhY3ktdHJ1bmsKKzU4NDI2IGE0NGU0Y2MzM2Y1ZTAzZGNlZTU5Y2QyNGMzMWNhY2RkNWU5MjYxZmUgcmVsZWFzZTI1LW1haW50Cis1ODQyNyBhMjYyMTc4YzFjMGFmNDUyY2M3MTlmZjNmOGVmMjUwOTJlZDNlMmU4IHJlbGVhc2UyNS1tYWludAorNTg0MjkgYTNmZDZlNTliYTgzNmVjZjQ3MTM4MDgwNjZjMmU3OGM2OTg1N2M3OSBweTNrLWltcG9ydGxpYgorNTg0MzAgODFmNTk4YTc2ZjU5ZmEzNDI4MGU2NmEwNDk2YzEwOGM4NWQ3NThhMSBsZWdhY3ktdHJ1bmsKKzU4NDMxIGZjMDQ4YjcyYmYzZDA4YWJhNDY4NDk2NWJiZDczMmVlNDc5ZDlmOTcgcmVsZWFzZTI1LW1haW50Cis1ODQzMiBkMGJhMzlkZTdhYjdlNTBjODEwMDMwYWY2OGRiMjBkYjRkZjMxMjlkIHJlbGVhc2UyNS1tYWludAorNTg0MzMgZmIzMTBiODYyMGVjZTFkMTY1YzU3NjA1NTBhOWFjZDI2ZTI1ZDBlZCBsZWdhY3ktdHJ1bmsKKzU4NDM0IDk2MDMyMjFiYmE5MDJhYjAzMmQwZWI0NjBjMjJjNjdmMjAwMGRiZmIgbGVnYWN5LXRydW5rCis1ODQzNSAxMDRkMmYyOWY4ODZiOGM5MmViNzU1MzIyNGVhNWY1MWYzMmViYmY1IHJlbGVhc2UyNS1tYWludAorNTg0MzggNmE5N2Y3MjYwY2FkMDk4NWYzOGYwZGU0YjJiZTFjZmRiNzZmZWI3ZiBweTNrCis1ODQzOSA4MzNiMGU3ODE1MDZkYWQwYTI5MjQ1Y2MzYWE2NzFiZWQxZmRjMzg1IHB5M2sKKzU4NDQxIGZiOWQ1MzA2ZjRjNzIyNDBiY2ZkNGQyNDNjNDIzMzI2Y2VjYTE3ZTkgcHkzaworNTg0NDIgOTkzZTI0YzcyNGI4YzdkMzJiY2I5M2QxNWVhY2IxOGZlNTU0NDE0YiBweTNrCis1ODQ0MyA0ZWE5NDVjYmJiNmQ0OWQxZTQxMzUxMzI4Y2JlOTQ5Y2U4ZjBlMDU5IHB5M2sKKzU4NDQ0IDQ4M2NiNDFhNTY5MWJiNTU2YWY1MjI5ZDc3ZGM1OTU3ZGQyZGY2MDMgcmVsZWFzZTI1LW1haW50Cis1ODQ0NSAzNTg2NjMxZDhkMjFjNTkzNjc1ODNkN2YyNzhhNmFhYTQ1ODc3ODkwIGxlZ2FjeS10cnVuaworNTg0NDYgOWYwMzY2MjYwY2ZiYjQ4NzM3MDhlZjFhMDVlMjQzMzRkMDMxZmIxMiBweTNrCis1ODQ0NyA2NDRlMjhlYTliMjJhNDYwZmZjMGM1NzJjYjQ2NzNiMzliYTM4ZjY5IHB5M2sKKzU4NDQ4IDhlNzJkYWNmN2YzYTUyN2IxMjVhNjg5ODk1YWEwN2VjYWI4NjFiMGUgcHkzaworNTg0NTAgMDJhMzNkY2E0MDAxYTU4ZmM5ZDVhZWYyNzgwZDQ2YmZmNzFjZjg2NiBsZWdhY3ktdHJ1bmsKKzU4NDUxIGMzYTI1ODIwZjUxMjM1Y2Q0YmU3ZDQyNjFkOWE1YmFjZTczN2Y5MWQgcmVsZWFzZTI1LW1haW50Cis1ODQ1MiA5OTI1Y2UxZmQ3YmU3ZGZiNDY3OTg0NzEzMDIzZTFhZmExM2Y2NDgyIHB5M2sKKzU4NDUzIDMwNmQ1Mzk1ZGZhMjk5ODA5OWU0OTUzZDVhMWY1ZDhjZjY3ZTlmOWQgbGVnYWN5LXRydW5rCis1ODQ1NSBhYzYyZWIyNjcyMDZlMTVkMzk5NDRiNjYzYTc3YjYwOWU5OGQ2MDJhIHB5M2sKKzU4NDU2IDAwMTU1NzJkMTFiY2Y5ODYzZjExMDYyNjhkMjFhMmVhYmFjNzgyMDYgcHkzaworNTg0NTcgOWZiZjczM2EwNjM5YmVhNzdkOTEwNWJlYzFhODdkZGI5N2FlYzJlYyBweTNrCis1ODQ1OSA0ZTA1YzI0ZTI2ZjhhNTM0YjY0YjY5ZmVhMWEzNGRhMzAwN2U4Y2EzIGxlZ2FjeS10cnVuaworNTg0NjAgN2UyN2Q1MGM4NjcyMWU2MWZmZmZlOTcwNGJkNjYzYWU4MzY3YjdjYyBsZWdhY3ktdHJ1bmsKKzU4NDYxIGI0MDM1ZDM2NjViYjgzMDIyMGIxYzM1ZDU3ZGZmZDU2Y2JlZjYyZjcgcHkzaworNTg0NjMgMTI2ZDJmYjczNWI1YTI2NGMwNmE1ZjgxNTM2YTYzMzEyM2QyMGFlOCBweTNrCis1ODQ2NCA1YWQ1NzhhZTk4NzNlNjE3NDY3ODA4M2QzZWEzMDMzNzNiMjI3ZTEwIHB5M2sKKzU4NDY1IDkwMjk0ZDgwYTNjNWJjZmRlNmEyMzk5MDQ1MjIxNTJjMmNiOTg2ZWEgcHkzaworNTg0NjYgMTkzMTllNzBmYzNlZGJiNDViMmQwMDcxNjFjMWIzYTFkZTA5NDE4MSBweTNrCis1ODQ2OCBhNWE0Yjc4NmJiMjE1YjZiMGE4YmE5NDBiODQ2YzExZTE0Y2Y0ZDY3IGxlZ2FjeS10cnVuaworNTg0NzAgMjE5NWQxZjE3OTU4M2FmNmYwYzNlZTg1ZmY1OTdjZTZmYmRlZGQ2NyBweTNrCis1ODQ3MSA2OTc0MDBmY2U3YzVjMDRiNWIxN2RlOGVjNzBkZTdkYzIyOGMzNWVhIGxlZ2FjeS10cnVuaworNTg0NzIgNTA1OTliYmIwYzY3MjM5OTJjZTc0MjQ3YWZmNmZiZTg5MDk4ODQ5NCBweTNrCis1ODQ4MSAxNmUyMzdlY2UyN2QzOWQ0NzgxNTRlYzhlYTBiMDU2MDIxNDRjZGVkIHB5M2staW1wb3J0bGliCis1ODQ4NSBjOWU2MWQ2NmZmNjUxODI4MWVjNjQwZDNlMzM3MGQ2ZGRmYWM1YzU0IHB5M2staW1wb3J0bGliCis1ODQ4NiA2Y2I2Mzk3ZDIyMWFmMmE4YTM3M2Q3ZjZlYjNhMDNjMTkyOTMyYjNjIHB5M2sKKzU4NDg4IGQ3MTM4NGNiNTYwNDRkYTE5OTFhZmVmZjNiN2U3NmExNmM0N2ViNGMgcHkzay1pbXBvcnRsaWIKKzU4NDkxIGU3MmFkNGQyNTZlODQwYmI3ZDk4NDUwNTUwNzNmMGIzODAwYzk3N2MgcHkzaworNTg0OTMgNjk3Y2MzMWE4M2Y2NWU5MjBkMmYyMjNlY2RjZGRiOTI2ODhlZDI3ZCBweTNrCis1ODQ5NSBhY2U0NWIzNjFlODczZTBlMTdkODIyMDk2YmJhMzM0NjU5MTRhNTFiIHB5M2sKKzU4NTAwIDQwNjAwNDdiM2YxZDNiMjBjZjAxNDg3MmRhMTExYjQxYzZmMzk1NDUgbGVnYWN5LXRydW5rCis1ODUwNiAwNDZlZGFhMTU2NmE3Yjg4NWQ2OGI1ODRhY2VjY2RjODFjNjJjMjBhIGxlZ2FjeS10cnVuaworNTg1MDcgN2NhMGJjMGFkOTYwMzViY2NkMDUxYWIyNGIyNDQ3ZTkzMmNmODU0MSBsZWdhY3ktdHJ1bmsKKzU4NTA4IDAxNmRhOGUyZjk0YjhjYzM4M2MwZDk0NDYxNjE3ZjE1ZjkyYmM3NDMgbGVnYWN5LXRydW5rCis1ODUwOSBjOGVlMjYwNzMwNTAzZTk5MWYyMWFhZjRlMDBjZmVhMTc5NmI3MjdjIGxlZ2FjeS10cnVuaworNTg1MjIgNjE1N2UwZDI3ZWVmNjEzOTRhZmRkNmM4M2FkNGVkMWM4OTBmMTA0ZCBsZWdhY3ktdHJ1bmsKKzU4NTMwIGRhNDQzMzRlYmVhMjQ1MmNiMjMwMmI4MzhlYWY4Y2UwNjE2ZTE3ZGQgbGVnYWN5LXRydW5rCis1ODUzMSBmMWY3MDFjMjI0YzFjMGI5ZTRiZGQ2OWU0YjVlYjYwMDIxZmIwYjcyIGxlZ2FjeS10cnVuaworNTg1MzIgMjdhNGQyMjRlYTFiOTA5YWFjYjhhY2Y4OTgwYTljOTk2ZWJhNzlhYiBsZWdhY3ktdHJ1bmsKKzU4NTMzIGI4MzM0NmYzYmZhZmRhNGMzZjE3MTkyYTMxZjdlMTE2YjNmZmVkZTEgbGVnYWN5LXRydW5rCis1ODUzNCAxNDNhY2JiZmFmZDdjNzA2ZWNjZjg3OWM5OTYwNGEyODI2ODY1ZWExIGxlZ2FjeS10cnVuaworNTg1MzUgNmRiN2JiZThmMjdjZTY3MjQyZTk2ZjAyYjY3YTBlYmI1NGFhZWMxMyBweTNrCis1ODUzNiBkMjE2NWRjMWIwOGRmYzA2NTE5NmRmNGY4ZDBkMjc2ZGIyYWIyOWY4IHJlbGVhc2UyNS1tYWludAorNTg1MzcgY2MxNTgzNmI2ODA4Yjk5OGZiZWQ5NDE5NmY2NzkwZWIyODdhMWMwYSBsZWdhY3ktdHJ1bmsKKzU4NTM4IGU5YWY3MDYzODg4OGRmZDBmZDA5YzFiZjFlNzUxODM4ZjM4YjdkM2EgbGVnYWN5LXRydW5rCis1ODUzOSBmMjY3Nzg0MzA0NzAwNGRlNjM2MDM0MmJlNmRkOWI2NzdmODJiMTQyIGxlZ2FjeS10cnVuaworNTg1NDAgNDQ1MDdjNGRlYzJiNWYyODQ0ODdjZWQzMDYxNDgxNWY4MzQ3MGJmNSBweTNrCis1ODU0MSBkMzdjMDA1MTQwNmU2NmU0ODNmOTUyYmFjODJhOWM2NDRlYjNmMDk0IHJlbGVhc2UyNS1tYWludAorNTg1NDIgNTQ4ZDA2ZTk4ZjU2NDVjZjcwNjQ1MDU0MjVlZjUwNDlhZDI0MmM4YiBsZWdhY3ktdHJ1bmsKKzU4NTQzIGJiNWNiODllZmUxOGFlOGMwZTQ1NTRkYmU3ZDMxMDYxZmI2MDI5NmUgcmVsZWFzZTI1LW1haW50Cis1ODU0NCA5NmFmNDFlNTBlNTYxMTdjZDZlYWM3ZTdlMjY5OTczZmMxNjNmNGIwIGxlZ2FjeS10cnVuaworNTg1NDUgYmRkOTI0MjUxODBmNGJkZjMzYmFjMmE0MjBmMmU3NTkwNWRhNTVhMiBsZWdhY3ktdHJ1bmsKKzU4NTQ2IDIzMjBjZDRmNjhiNThiYTdmZWIxMjY4OTcxMTNjYTE5YmEyZjg2NzQgcmVsZWFzZTI1LW1haW50Cis1ODU0OCA4YTAxNjc0MTYyMjMyMDU5MjVkZjVjNTQ2MGJiNDJlOTE1MzY2NjM2IGxlZ2FjeS10cnVuaworNTg1NTAgODA3NDRjOGQzNGQ4YjE0Y2M1MmNmMjE5NDA2MjBmZTE1NDNmNzg2ZCBsZWdhY3ktdHJ1bmsKKzU4NTUxIGRkMDNhYTc0MWY1Njg4OWM1MTI2MjhmNjI2ZjUxZjEyZmZiZWNhM2QgcHkzaworNTg1NTIgYjE4ZjYwOTJmNmUwMTc3ZWQyN2VkOGVmNmNmMjM2OGJkOTM1ZTg4ZiBweTNrCis1ODU1MyBhMmJiNzZkMTFkNjZiMzEzZTRhOTU4ZmRlNTAyODE5N2NmYzc4MTQ5IHB5M2sKKzU4NTU0IDU3ZjNmMTI2ZjNmNzAxMmNiMmNlZTE0Mjc4NWU0YzU3MzRiNTM3M2EgcHkzaworNTg1NTUgNzU5MzQzNjA1OGRkNTMxMDE0MmZmNDUyYzBlNGJiOWJmZmEzNGVkMiBweTNrCis1ODU1NiBmMGJjYzExY2E5NjU2NTlkNDMxYzkyOGMyYTdiZWFiNzg4ODFmYjI1IHB5M2sKKzU4NTU3IGQzNzhhY2RjMzBlZWQyMmNlOGQ2OGI1YmY3OGZhNWYzOTc2ZDRiZWYgcHkzaworNTg1NTkgNjVmZTE5NTUxOGNiMmZkMGJmZmE0ODE5Mzc3NTcyZmJiYTMyMThmMiBsZWdhY3ktdHJ1bmsKKzU4NTYxIGNiOTRlYmQ5YWZhN2ExYWNmNmY5NTVkNGZmZmFhZTA3ZWMwMGZmNjEgbGVnYWN5LXRydW5rCis1ODU2MiBhMjE0MGViNWZjNmFjZWYxNGU4ZGRjOTc5Nzc0MWFmMTRhNzc1N2IwIGxlZ2FjeS10cnVuaworNTg1NjQgM2NiNjc4NjI4YWYzOGU4NTZjZWUzZDM2YjgwNmM4M2RkMTBiZTRjNyBsZWdhY3ktdHJ1bmsKKzU4NTY3IDI1MmI5ZDIyY2E1NTVjNzBjMmI4ZjIwYzA0NGJiZDY5ZDc0MGUwNDYgbGVnYWN5LXRydW5rCis1ODU2OCBkNzI3OWMzMjFiYjdjYzhlMjRkYzNjYTVmZmE1MGI3OTMwN2FkZDUxIGxlZ2FjeS10cnVuaworNTg1NjkgMjAxZGQwOTQ5OTk5MGVmMTI5YWEwZWU1YjQ4YzY2ZDVhOGNiMjI2NyBsZWdhY3ktdHJ1bmsKKzU4NTcwIGM0Y2MzYzI0ODlhMDQ4Mjk1MGI5ODFkMWYxNzg5OGM3MmRjOGFhNWEgbGVnYWN5LXRydW5rCis1ODU3MSA4ODk5N2YwODIxNzQ5YWQwZmUxNTZjNzE1MWIyMGYzN2FkNzcwNjVkIGxlZ2FjeS10cnVuaworNTg1NzIgNWU0MjExN2Y5Y2JjYzAxMDUzNTBiMTRiMjk5MzQ3ZDBlYjUwNDk0ZCBsZWdhY3ktdHJ1bmsKKzU4NTczIDI1Mjk2ZWMwMmIxOWM1MWZkMmQxZjQ2ZWU0YzU3NjBhYjFmMjRlMDggbGVnYWN5LXRydW5rCis1ODU3NCA1Y2JhMTRhNTY0ZmRkZmFlZDgwMDE2ZDc1NjFlYmQzMDFkNGUyM2IxIGxlZ2FjeS10cnVuaworNTg1NzUgOGZlMjI2OTMxZWU3MjFhZTNkY2ExMTVhZDRjODdhNmYyNmM3ZDZmOCBweTNrCis1ODU3NiA3YzM1YTU5MzE3NTVmZDY1ZDAwZjgwOTA5NGM2MTNiMTI1YTkwYTUxIGxlZ2FjeS10cnVuaworNTg1NzcgMWJmNDc2MjM5ZjM5NTllMjBiYzBkMDU5NWQ1MzczMzkzNDI2MjU2OSBsZWdhY3ktdHJ1bmsKKzU4NTc4IGE1NzYzNTEwMGRjMzk0NmIxNjZkMmFlN2Q4MGNlYjU4YWQ0ZmI2ZWYgbGVnYWN5LXRydW5rCis1ODU3OSA0ODIyMGQ2NDRjOGUxMDlhMmMwMTNhNDAyZjllNzczZmMxYjk0NzA4IGxlZ2FjeS10cnVuaworNTg1ODAgZmFmNWRlNjllOTc3MWU2NzY2YTA4NDBhZjUyMzEwNjc4YWE5MjA5MiBsZWdhY3ktdHJ1bmsKKzU4NTgxIGM1Yzk3ZDdhZTkwY2U4ZjRmNWU3ZTQ4ZTdlNjcxYTI1ZmNmOGIzOTYgbGVnYWN5LXRydW5rCis1ODU4MiA0ZjY2MmJhMDlmMWZiZTM4NjFmY2Q1YWU4NWMwYzM1MjZkZTFiZTMzIGxlZ2FjeS10cnVuaworNTg1ODMgNmRmOTg1NzQ0ZDk2NzhmYThiMDhmMjlhOWRjOWY4NmE0NzJhNjk4OSBsZWdhY3ktdHJ1bmsKKzU4NTg0IDAzMDU2MzY1YTFiNjYyY2FmMjg3NmM0M2FkM2ZlNWU4YmU3MzhiMjIgbGVnYWN5LXRydW5rCis1ODU4NyAwMDY3YTZhYjQ4NTRlNzE2NTdhNWJiOTJiNzJhZTI3MTdmMjZhMjZkIHB5M2sKKzU4NTg4IDkwMjEyNWI1OTRjYzg5OWY4OGU3MDU3OTc5ZWU5ZDk0NTA1YTU1NWQgbGVnYWN5LXRydW5rCis1ODU5MCAxNzgyNTgzZjExNThiZjM1OTAzNTk3Zjk0YmZlMjhkYmVlZGUyNTAxIHB5M2sKKzU4NTkyIGE1OGYzMTkzN2RhZjljZGNkYTdkYzkzZWZlYjQxYTcyZWFmZjZjZDEgcHkzaworNTg1OTMgZTgyZDlhODhlZDllNDI4NTJjNWFkZWYxZDRjMzVhZTdhNzhhMGEzNyBweTNrCis1ODU5NCBiNmEyOWEwZWEzMDdkMzkzOWRlNzg0ZTA5ZWIyMGI5NTdiYThiOWYyIGxlZ2FjeS10cnVuaworNTg1OTYgYjEwNTQ0ODI3YWY3MGIzNTcwM2MyYTRmZjNmYjQzOTNhM2JhODc3NiBweTNrCis1ODU5NyBhMzJlN2VjOTMzOTRlMTUyNWRlY2NmYWIyMWU5NjlmYjFjOWMyMjdlIHB5M2sKKzU4NTk4IDA0MDg4YWJmNGU0ZmQwM2U3ODg1NDU2ZmUzOGQxN2ZjM2Y4NDRiNmMgbGVnYWN5LXRydW5rCis1ODU5OSA1M2VlODk0M2QxNjU4ZGFhYzNhODBmZjgxOTcxNzUwMjg4YmFmNGZiIHJlbGVhc2UyNS1tYWludAorNTg2MDAgZGM4MWJjZmMzNTFhZTAxYmEzN2UzZjNiNjc3NzQ0MDg3ZmE3N2M2OSByZWxlYXNlMjUtbWFpbnQKKzU4NjAxIGViOTA4YTE5YzA1YTI0ZTA4MDMwNjZiODY1Yzc1MzhjOGIzZGExNTAgbGVnYWN5LXRydW5rCis1ODYwMiA5NWQ4YzkxM2U4YmYzNjExMmVjNzdiYTYzNmM3MTFiYjFkZDE0MTNkIHB5M2sKKzU4NjAzIDk5NTI2YzQwMTQ3YjE0NWI0YmMyMGEwMTc5ZGFiZGRiYjZjYWJhYTAgcHkzaworNTg2MDcgY2Q1YjM4M2EzOTdlNmUyMTJkZjZmZmI1ZDMyNmJkZDJhMmNhY2IyNiBweTNrCis1ODYwOSA0NDFkNjA5ZDA5NmI1ZGY2NjAzZTE0Zjc0OGNiYTQ3OTYyODYyNDlkIGxlZ2FjeS10cnVuaworNTg2MTAgNjM0YzNkNDA0OGU3ZDdkNzBlNjUxOTYzYjFjNWQ4YWVkZTgxYzljOSBweTNrCis1ODYxMSBmOWI3OTU0ZDc4OGQ2MGNkMDRkNTI0ZWYyMjZmNmZkYWRhODc0YjFiIGN0eXBlcy1icmFuY2gKKzU4NjEyIGRhODIzMGZhZjJhZWJiZmEzMTgwYjQ4OGFhYzUzODliYjJmMmFlNjMgcHkzaworNTg2MTMgYzlmMjg2OTdlMTk5NWI5MzAwZDIwNjZkYjU1ZWFiZTc0ZTMzOTRiNyBweTNrCis1ODYxNCA3OTkwNGU4NDFkZjM4MGM2MGRiYWM3MGY4OTg2YjRjMWJhM2U0ZjAwIGN0eXBlcy1icmFuY2gKKzU4NjE1IDM0NzkyYjllNGI0MjhkZWIxNGQ2Njk5YWZjMWI3YTRmZDg0NTRmMzcgY3R5cGVzLWJyYW5jaAorNTg2MTcgMDAzZDM1MjE1ZWYyYWM2MjY3ZWZkMWNhNGM1Y2E1ZDcxZmY5ZDNlZSBweTNrCis1ODYxOCAwY2ExZDI5YjgzYzJiNmRhOWRhYWU5ZDJiMTcwYjhkYTk4ZGVmY2ZhIGxlZ2FjeS10cnVuaworNTg2MTkgMGM3NmU1M2MxZDY1MmUxMzc4ODNkMTlhNzVmNTFjNzk2OGRiZDQ4ZSBweTNrCis1ODYyMCBhMDk4M2Y1NWM5NTc1Y2VjZmZlMGQwNGY5NTZhZWVlNDFjMzJiZWIzIGxlZ2FjeS10cnVuaworNTg2MjEgYTc2MGMxYTA3ZDI2ZjBhOGYxMTU2NWY3YmEzZTdjZTgyYzE3M2I3YyBsZWdhY3ktdHJ1bmsKKzU4NjIyIDM2YjJhYWY0NTdiNGFlMmI4NDJjZGYxZWVkMTg0NzgzYWI1NjJhYzMgbGVnYWN5LXRydW5rCis1ODYyMyAwOGVlMjU2YTliZDExOTE2NDIzMDMyNmZjMjU2YTk5Zjc3ZmFiZmU3IGxlZ2FjeS10cnVuaworNTg2MjQgNzQwOGUxYWU5OGM0YTA3NWJjYThhYmVjYTdhNzg2YTE3NWI0YTAzYiBsZWdhY3ktdHJ1bmsKKzU4NjI1IDk3NGU2NGNjMDgzZGNhOTI2Y2Q0MzFjMzUwNTQ2NDk1MjY5MGUxZmIgcmVsZWFzZTI1LW1haW50Cis1ODYyOCAzYTE0YzkwNGRhMjMyN2MwNDEwZGQyMGE0N2JmYTM5YjQyMmEzMTJiIGxlZ2FjeS10cnVuaworNTg2MjkgNzMyMjc1YzQwMjZiNTIwYmE0ZTE2NGU2Y2RjOTBjZDUyMzAyZTgwMCByZWxlYXNlMjUtbWFpbnQKKzU4NjMwIGU1M2Q5NWMzYzBjNGRiMTRlOTllYmEzYWNjMTY5OWYyYjY1NjRlM2UgcmVsZWFzZTI0LW1haW50Cis1ODYzOSAzZGY1Yzc0NjE2MDNjZmE5YTU1YmVjNzlkZDBmMTU3Y2I3NGU1ODE3IHB5M2sKKzU4NjQwIDMzZWZiZmMyOGQyYjM3OWI1M2M1MmQyNzdjYzJlNmI0N2NlZmVlOWQgcHkzaworNTg2NDEgNTkwYTFiZWVlZjg5ZDFkYWMxZGNiMTI0YmVmMzNjYWM3ZDZhMzdjOCBsZWdhY3ktdHJ1bmsKKzU4NjQyIDdjN2I0MmY2NGY0MWQ0MThkODM1ODRkODdlNjRiMmJjN2FjOTUyYzYgcHkzaworNTg2NDMgYmFjMzQzYWRmZmQ5ZDI3MzJmN2JhNDFlYzZkZjEyZjNiYzMyNDMwNyBsZWdhY3ktdHJ1bmsKKzU4NjQ1IDNlNjM0OGJjOWEyODM3NDkxMDQ5ZWJjNjlhN2JiMThkODUyOTIxMTkgbGVnYWN5LXRydW5rCis1ODY0NiA4ZGVhNTk5NzliYTJlOTg4YmFlZDUyZWU1YTIzZmRiNzQ5YTk0M2VhIHB5M2sKKzU4NjQ3IDU3YzBkMDg4NDMwNjQ4NTllZTFkZmNiNmE3ZTFjY2VkYmE4N2JiMmIgcmVsZWFzZTI1LW1haW50Cis1ODY0OCA1MWJhMTJlMGExZDUwZTI3MzMxMWU3NDZlMTJlNjJlMWU4ZDg1MGUxIHB5M2sKKzU4NjQ5IDhmZTI0ZTVlZWVmZmI5OWQzYmFjYzQ5NWI5YjA2MDdjOTc4ZTNjM2UgcHkzaworNTg2NTAgZDY2MDE4ZWQzZGVkNTkwYmExZjZjNjY3MDVlYzNhYjAwNDAzN2RlYyBweTNrCis1ODY1MSA5MDBlZjBlYjNmOTRiNTAxMjUwMWY0MDI4ZjlhZWRmMTE1OTYwMDk1IGxlZ2FjeS10cnVuaworNTg2NTIgMzVkYTkxNWFkZWRjYWNjMWEwMzJhOGE4NGI1YzE3ZTc1ODdlZjE1ZiBsZWdhY3ktdHJ1bmsKKzU4NjUzIDgyMzc3MmYxZDJiZTkwOGI1YzU0OTJlMGI3NGIzOGJiZGI5OTJiOWUgbGVnYWN5LXRydW5rCis1ODY1NCBmZWQ2NDMxNGQ5NDQ5ODNmYjNmZmI4MzM4MDk0OTliN2JhNzIyYjg1IHJlbGVhc2UyNS1tYWludAorNTg2NTUgNTMwNTczY2Q0ZjdhNzc4MTY4YmQwNjFkZmFjYThhMjAwZmU5ODI3ZCBsZWdhY3ktdHJ1bmsKKzU4NjU2IDUwOWE3MzZlYmRiOTcwNjIwNjZhMWRhNTcyMGI0ZmU5YjI5MzBmNjUgbGVnYWN5LXRydW5rCis1ODY1NyBhODgxOGZmZTI0ZDExZjEwMTQ1YzM1MWU0YzY4YTk1Yzc1ODA4OTI0IHB5M2sKKzU4NjU4IDcwNzVkNDY0ZDkzODQ1M2ZiMzg2NDI5NDY3NjVmYWY1MWRiZTNjOWUgcHkzaworNTg2NTkgMDZiZGI4NDM5ZTI5ODRjMjc2NDc2MDgyOTUwMDM5ZTljOGUzMTdhYiBweTNrCis1ODY2MCBkM2JmMDA5ZmJiYTk4ZDNiN2MzMjJkY2YxZWNlYWRlNjNiODY4ZjdmIGxlZ2FjeS10cnVuaworNTg2NjIgNGJiNmEwYzM1M2FiNjg2ZTc2NTcxMmYyNWIxNjRlZDhhZTFkMTlkZiBweTNrCis1ODY2MyA1YjEyYjBiZDgxODgwZTk4ZjAwZTljOTczNjJhZmRiNTdlMzVkNGExIHB5M2sKKzU4NjY0IDE5OThlZTBlZmYyYzEyNjZhOTA3NWY4MGMyZmQyMTQxYTM1NzdjNDggcHkzaworNTg2NjUgNmFiNjRmNmI0YzAzMTdlNzEwYWJhNzllMDVjMWM4YTZmYTNlZTM3MCBweTNrCis1ODY3MyAwNjUzMTg0OGEzOTQ2ZWFlODk5M2E0YzRlZGFjMDg5MTEwYmQwYTkwIHB5M2sKKzU4Njc0IDY0Y2UzYmYzYTZhOWQzOGRjODUwYzYxYTFkMjY3ZTNjMjRiZWU2M2UgcHkzaworNTg2NzUgZmM2YmEwODhiZDc3Y2FiMThkMDkyOGE3Mjk4NzJkOTI5MTkyZDRlZSBsZWdhY3ktdHJ1bmsKKzU4Njc2IDVhNGU4YmRhZGI4NTA0Y2I3YTE3YWQxMTcyYWUwYmNlZDE1NjQ5NzkgcHkzaworNTg2NzcgNTBhMzQ3NWRiNDY2YjdkOWQzYmExZGRjYTcyNzFhNjAzNjVkOGUzMCBweTNrCis1ODY3OCAwNTAyYThjNjRlZjIwZWZmOGJiODljNTU1NzljY2Q2YTc0OTQxMjZiIHB5M2sKKzU4Njc5IDdmYjg2ODAyM2Q3NWFlZjg1ZmIyMWUxZTM0MjBhZTgyYWVlYzI0NzYgcHkzay1wZXAzMTM3Cis1ODY4MCAxNzI2YTRjOTE2ZjAxMzE0M2RiMGM4MDllYzZiZWRmOGM5N2FhOWNkIHB5M2stcGVwMzEzNworNTg2ODEgZmE3Y2Q4ZWFiMmQyYzNlMDdlYmFhZDAzZDNhYTI5YzdmZTZhMWJhMCBweTNrLXBlcDMxMzcKKzU4NjgyIGIxMDJiODM2MWQ1ZTkzY2VmNTQxZjc5OWVhZTMzZGEzYzlmZDExMGEgcHkzaworNTg2ODMgMDQwZjUyMmZlZTExMjM4ZjIwNmM4YTA2MWIwZGVhN2FmNmQwZjU0ZiBweTNrCis1ODY4NCAyM2U2ZWMxYjVmMzUwZDZmNTY1NGNhNzk2ZGViZjMzZTE0N2MxYjBkIHB5M2sKKzU4Njg1IGZmYWE2Y2U0YmZiNDc4OWJlY2ZiOWY2Zjc5NjdmYTZiMzM1ZDA5MjYgcHkzaworNTg2ODYgZDQ2YTMxZjVjNWRmMjZiMDkxM2Q2MmUzYWQ4ZTMzZTZiMDZiMjkzMCBweTNrCis1ODY4NyBmZDRkMTBlOTkzYjc5YzQzOGViMWIyYzY3MGVhN2Q1ODVhNjU3YjY5IHB5M2sKKzU4Njg4IDk3ZTJlODljNjU5MTJmMmQ2MjJhNTU5MDMzOWNkMzNhYTQ1MGVhNzkgcHkzay1wZXAzMTM3Cis1ODY4OSBlMTg5ZDMyYjM3MTkwNjhiYWY2YmYyN2VkYjY0NzAyNjZkNGEwMjdjIHB5M2stcGVwMzEzNworNTg2OTAgNjFiYzgyZGYzNWZmOTA2YTczNGRkMmIzZjdhNWM4MzVjYTA4NDUwMiBweTNrLXBlcDMxMzcKKzU4NjkxIDVkMGJlOTdmMTcwNDBjZjNlNGJkYzcwZDE0MDdiNTQ4OTcyNDQ4YzggcHkzay1wZXAzMTM3Cis1ODY5MiAyZTllZGNkZGRkNDQzYTUzY2Q4ZmQ1YTc1MzY1ZGE2NWYzOWZjMDNjIHB5M2stcGVwMzEzNworNTg2OTMgZGFjYzczMGM3Mjk4ZDU5MDI2MTkxODNjMTI3YWI2NmI3ZGRiODgxZCBweTNrLXBlcDMxMzcKKzU4Njk0IDhmZDNkYjY1MzMxOGViZWRkODA2ODdiZjBkYzY0NGFmNGFmMjZkMzkgcHkzaworNTg2OTUgZGM5ODE2MmVmODQ0ZjBhNmYxZDJkZTA2OTAxMjI2NTE1NWEwMDg5MCBweTNrLXBlcDMxMzcKKzU4Njk2IGY1YmM5NDgxZjg4M2ZjYTY0Yjk1ZTNhZjI3ZGY2ODEzZTIzZWQ3MTAgbGVnYWN5LXRydW5rCis1ODY5NyA2MDhlZTRiODIwYWZhNzIwY2RhMzgxM2JlZThmY2JhMDIxZGE0NzIzIGxlZ2FjeS10cnVuaworNTg2OTggMzY1OTEzZDdhZjdkNjVkNDhiZGY0OGY2N2UxMzEyNjg1ZmFiN2IwNyBsZWdhY3ktdHJ1bmsKKzU4Njk5IDkxZmQ2NTA0NWVlZTY4YWRiZjg0ZWZmM2Q2NjA2ZDY0MTk3N2MwMGEgcHkzay1wZXAzMTM3Cis1ODcwMCA3MzYwYzEyYmQ4MWQ0OWVkOGJhYzUxZDBmNzc1OTNjMjI0NjA4ZTQxIGxlZ2FjeS10cnVuaworNTg3MDEgNTFhNzM3NDEwNWFjNGMzZjVjYjUzMTg3MDI4ZmJiMGY2OWJjZWUxNyBweTNrCis1ODcwMiAzZjQ2N2FjY2VjZDJlNDYyYjBkN2I1YmRmOGVhNWI2ZGZjYTg5NTQyIHB5M2sKKzU4NzAzIDEyZDIwZmRmZWE2MmY1MTk3NGM1MDVjOTliMjI1M2IyOTY2YzVmZjUgcHkzay1wZXAzMTM3Cis1ODcwNCBkOGY3NDQyYjhjYWU4NjZmYThmYTUxMmY5NzMwMDg4MTk0OGY1MTdmIHB5M2sKKzU4NzA1IGMzNDcyMDc3N2NiNjZmZjM0YWE0YmRlOGVkYjA3YWRjNzQ2OTcwZGIgcHkzaworNTg3MDYgNDBlM2EyZGI1ZDllMzAzZGQ3YTllZTA1NDE4MGMxODA5YzIzMzU0ZSBsZWdhY3ktdHJ1bmsKKzU4NzA3IDMyMzU0ODcwZGZiMmJiOGZmNjEyNmE2Y2MxZTM1YTVkZjQzNzNlNzMgcHkzay1wZXAzMTM3Cis1ODcwOCA3NmE1NWY3YjUwNjAwNzUyYTFhMjdhNTFmYmQ4NzUzYTY3MzE2ZjJiIHB5M2stcGVwMzEzNworNTg3MDkgMTI0Y2JmMWEwZTNlYTQ4MDUxOTJlOWU4N2M1Y2U4YmU3YzViNDQ3ZSBsZWdhY3ktdHJ1bmsKKzU4NzEwIGE1ZGQyNzhiMGMxZmJhNDBkZDc5ZjRjYzQ3OGU0NjA0ODk1NGViYWEgbGVnYWN5LXRydW5rCis1ODcxMSAwMGIxMzZiN2RhODQ0ZDMyZGU4OGQyZWFhNWQ5MjFhMmZhOTNkYThkIHB5M2sKKzU4NzEyIDQ3YzU1M2ViNzVkOTFkMjZiYTI2Mjc1NDYzZGE5OTFmMDI0YjQyNGYgY3R5cGVzLWJyYW5jaAorNTg3MTMgOGY3ZjZjODUwZGJkMjYyYjY5YzJiNTNjODRmMjA5Y2UyZTljNmQ2NSBweTNrLXBlcDMxMzcKKzU4NzE0IDI2ZmU3MDg5ZjE0YWYxZWJkMjM3ZGJmZTcxZGRiZDM1ZDAyM2NkZDggcHkzaworNTg3MTUgMzM0ODA3NjVmNjY5MzAxZmI0MjFmYjUwYTFkN2QzMGMwMzNmZDExOCBsZWdhY3ktdHJ1bmsKKzU4NzE2IGUyZmU1ODYwNGNiMWNlYmY3OGViNDY0YTAwYjc5MWY0MjUxMmJmOGQgbGVnYWN5LXRydW5rCis1ODcxNyA4ZWRlYjUxNjhiZjUxNjY0MTQ2NzNmZDhiN2FiNzg5M2M1ZDViMTBlIHB5M2sKKzU4NzE4IGMxMjE0YmQ2ZWQxNjA1MmU5OWVlMWVjZTAxNTQ2OTg1NDM4OGQyZmEgcHkzaworNTg3MTkgZTUxMGI3MTZiZDgwYjdhNzY5Y2ZkNWI5YmMxMzQ2NmFhNmE4ODkyNCBweTNrCis1ODcyMCAwNDY4MjY4NzgxN2ViOTQ0YWYwOTk0OGI1N2IxY2YxZGNhODc2NWY1IHB5M2sKKzU4NzIxIGU5MTUwNmI0Yjg1ZjhhYmQwM2VmOGY3NTNiYTQ0YmNlODAzMDRlNjUgcHkzay1wZXAzMTM3Cis1ODcyOCA3OGE4YWVhNmNiMGFlNTFlMzJkNWZjMjYyYTA5ZDYzZjUwNTRkMmY0IGxlZ2FjeS10cnVuaworNTg3MjkgZTIzNGQ5NzZiNWQ0N2I3MDAxN2M5YjQzZjcyZjc3ZDU5NjNlNjRiOSBjdHlwZXMtYnJhbmNoCis1ODczMCBlM2EwMWY0OTNlOTRmMzU4MzgwOGE5Y2RiNWI0NjBjMDQ3MmNlNTgyIHB5M2stcGVwMzEzNworNTg3MzEgNDMxYzVhMWE2MjkwMTEwZDEwZWU5YTMwY2RiZDAwMGI1NGQxYWRiMiBsZWdhY3ktdHJ1bmsKKzU4NzMyIGJjZjYyOWU0MzA4Mjc4M2IyNTJlZTBiMzUwMTFhYjhmZTEzMThkNjggcHkzaworNTg3MzMgNTI1MzFiNGY1MzVkM2I5NDk2OWVjMDc0ZjkwOWUwOTJhMzlhMTEyNiBweTNrCis1ODczNCBlZWIzNzI4MTg5NTk1NTdmM2ZmZDRjZTg4MzAwMDFkODM2ZjdmNGFlIHB5M2sKKzU4NzM1IGZlNTcwY2Q1YjE4ZjFmMmQ2NjcwZDU3Yjk1YzhhZDQ1M2IxMjA2MmMgcHkzay1wZXAzMTM3Cis1ODczNiBkNDdhMDRhMmUwYmI0NWU1ZTkxNjc5MTVhNTQ1YjZkMmE5YzZiYjUyIHB5M2sKKzU4NzM3IGVhNjUwMTEzNDI4NjhjNDIyYjllNzI4ZTk5NTk5NjUxYjcwNGM0MTAgbGVnYWN5LXRydW5rCis1ODczOCA2MGQ5NjEyMDQ2MGIxYzQ3MmVhOWRmNDMyOGYwMGU1YWU3NzQ4OWMwIHJlbGVhc2UyNS1tYWludAorNTg3MzkgZTQyMGFhN2Y1MGNiNTBkYjM1NDU0OGM5MmY5MDBlOTUwZDhiOGY0MyBsZWdhY3ktdHJ1bmsKKzU4NzQwIDNlNzM4ZTUyYTNjZWIxMWJiZWE0NTczNDI1ZjU3NzcwMmE2NjA2ZmIgcmVsZWFzZTI1LW1haW50Cis1ODc0MSBiZWY4OGRhODIxYTRjMmM3MjY2OWEwZTRjZDUzNmZkNWYzZjZlM2U3IHB5M2stcGVwMzEzNworNTg3NDIgYTJmOWU2Y2VmMDJmNzhhN2E2ZTQ4NzBmZjU4NTViMzIzZGJkZTliMiBweTNrLXBlcDMxMzcKKzU4NzQ0IGZiYzZmYzZkYzRmZmUxYjJjMjc0N2M3MjUwYWI1NTgxN2E3NTk4YTggcHkzay1wZXAzMTM3Cis1ODc0NSA0MzFiYzkwOTQwMTk1NWEyMTAzY2QwY2Q2ZGFlM2E2YTM5M2IxOTA2IGxlZ2FjeS10cnVuaworNTg3NDYgMDIxY2VlMTg5ZjllMWFiZTViN2MyMDAwNzIyMTljMDUwMDNjMGZhNSByZWxlYXNlMjUtbWFpbnQKKzU4NzQ3IGZkNjg1ZDdlODU5YWExMGRiZDRkNmUzOTQ1Yzg0OGI3NzkyMmE5NjkgcHkzaworNTg3NDggZjg3ZGM2YTA0Y2VhYmEzMDdjMjA4YmYyYzFiMDJjYmEwODU4ODg5ZSBweTNrCis1ODc0OSAzZTVlZGYxOWQ1ZjA1ZDJmZmExZDAyMWRhNzgxNjE1ZmQyZDg1ZjA0IHB5M2sKKzU4NzUwIGJkMmY4YmIxMWJjYzM2MjUxYjFmMGM0NDBiNTU2ODg2MTc5OTY3MTcgbGVnYWN5LXRydW5rCis1ODc1MSBlOGQwMDNiMzg3MGYwM2UxNmQ1MjlmOGUzZTBmZmY4NmQ0MjVmOTgyIGxlZ2FjeS10cnVuaworNTg3NTIgM2Q4NjY1NzkxMTdkYTcwODk3OGRkNzlhN2QyYmVhNTllMGE5ODM2MSBweTNrCis1ODc1MyA3OWY1Y2E5ZWUxNTQ5YzE1ZjU1ODhjYTNlN2QzYTAxMTNiNGNkOWY2IGxlZ2FjeS10cnVuaworNTg3NTQgMGY3NDFjODlkODAzYWEzOGUyNzdhYWZkNTRkOWEzNmFkYmQzYzNkOSBweTNrCis1ODc1NSBjMDBkYzc1ODY3MTQzZTc5ODkwM2RiOTJmNWM2MTVkNzVkODlkNjJiIHB5M2sKKzU4NzU2IDJiN2FhZGJjZWEzNGY2NWU0ODM1M2FlNjllOWQ4Yzg2MjkxZmViZjAgcHkzaworNTg3NTcgMTU3YmIwMjg5MmJjOTRmNzA5YjQ2YWVlMGQ4ZTNlNzczZGVhYTQ4ZiBsZWdhY3ktdHJ1bmsKKzU4NzU4IDVhMWNkM2NhMGIzOTFjYjdlNDVlNDFkNmY1NTlhNTViNTFmMjJhMjEgbGVnYWN5LXRydW5rCis1ODc1OSBjMTliNjg0OTQxMWMwMzI0MDg3NjM5ZTRjMDg3OTViNWJiOWY1NDM3IGxlZ2FjeS10cnVuaworNTg3NjAgZWQzYzJhYWEwMDJhMmE3YjA5YjE0MWYwZGI3NTYxYmYzODI5ZTJiYSByZWxlYXNlMjUtbWFpbnQKKzU4NzYxIDk5ZmY5ZGNmMzc2MGUxMjhkOTg5Zjk3ZDNiNGI5OWZlMjgwNzQyNjQgcHkzaworNTg3NjIgZTVlYjkzYTBhMjBlMDUyMzFlODI4YTVhNTJhNTU5NGY4MGY1Yjk5MiBweTNrCis1ODc2MyAzMjc2N2I0Yjc5MjFhOWM5ZTljNmMyYjljNDMyYzVhZjYzZTNiZGMyIHB5M2stcGVwMzEzNworNTg3NjQgOGFjMjg0YjY1ZTM3ZTA2OGI5ODJhNzIyZTJjNDQ1MjUwZGUwMWNhZSBweTNrLXBlcDMxMzcKKzU4NzY1IDhhNDBiODMxYWI2ODk5YzUwNDkzOTQ0NzU5N2Y1Nzk2YjhlYzI3OTkgbGVnYWN5LXRydW5rCis1ODc2NiBjNDYyNGRjMGQ0MWIxMDdiYmFhZTA4ZDkzODA0MDhiZGI3YjAzNWY5IGxlZ2FjeS10cnVuaworNTg3NjcgNTg5MGQ1MTBhYTZmNzQ2NTE4OTFlNDZkOTVlZjExMGU5ZjhhY2ZiMSBweTNrLXBlcDMxMzcKKzU4NzY4IDg5NDhmODgxZTQwM2ZiMmQ1MWU1YThjYjQwN2QyOWQ1NjcxMzdjZTIgcHkzay1wZXAzMTM3Cis1ODc2OSAyNzQ4NmEwMmFlNjRmZDVhODk1Mzc1MDJlODEyOWE3YzA5NjVjNGZiIHB5M2stcGVwMzEzNworNTg3NzAgODcwZjcwNTYwYzhmMjg5MWIzNDBlOTE4ZWQwNzk0ODRkZmFjM2VmMSBweTNrLXBlcDMxMzcKKzU4NzcxIGI2YzhhNjY5Yzc5Y2EzNjYwOGYwODFmNDBmZWEyODM4MzU0Y2JkYzcgcHkzay1wZXAzMTM3Cis1ODc3MiAwNGJlODlmYTc0OTdjMjllMmEzYjA1MWNmZjY4MTJiMjYzMDkxMDQyIHB5M2stcGVwMzEzNworNTg3NzMgZDdhYjVhZjNjOThlYTk2NWU1NmYwZWYwMTQ4OTI0MGJkODk5NjFkMCBweTNrLXBlcDMxMzcKKzU4Nzc0IGI0ZThlNTIzYjg4MmVlMjZkNmUxNzRmMDQ1YzNhNjVlMmNmMTg4MjcgcHkzaworNTg3NzUgNWIzYmU0YWIyZmUxZDExZTMzYWRjMWU1MDM0ZDFlNDA5ZDFjZDE5NSBweTNrLXBlcDMxMzcKKzU4Nzc3IGVlMWJjODM0ZDhjNmZjZDY1MDUzNTZjOGY4MGY2ZjZkMDc4M2VkZjcgY3R5cGVzLWJyYW5jaAorNTg3NzggYzUwZTZmOTI0MTlmM2EwMmYwZDE3NjljMTA0ZWQwNzcyZTZmNjdlOCBjdHlwZXMtYnJhbmNoCis1ODc3OSAxMWMyZmRlNzhkNTc3MWI3M2MyYWQ5M2ZhY2E0Nzg5ZWQwZDc3OWFhIHB5M2stcGVwMzEzNworNTg3ODAgODkwNGEwYmNiZjRmZjkyMjZhYzljNjgxZTNlNDk3NjMzNGIyMzBmYyBweTNrLXBlcDMxMzcKKzU4NzgxIDJhOTM5NGZiNTBhYzE2Yzc5NjdiNjA5YzUxZDQ1MWFkOGU4Yzk5MGUgcHkzay1wZXAzMTM3Cis1ODc4MyA4YzdkYWFjMGQ0YjBiM2Y0NDZiYzcyZDZhODNkYjI1YjMzZDkxNjhiIHB5M2stcGVwMzEzNworNTg3ODQgNWZjYjY2MDJjNDlhOWM1ZGMxMTRkYzhmMmViNjdhMDFhNjQ0YzUwNSBsZWdhY3ktdHJ1bmsKKzU4Nzg1IGE3Zjk1ZTJiOTM1ODI0Y2IxYmJjZmIyN2M0YzI5ZWUyMjBiZGQ3NGYgbGVnYWN5LXRydW5rCis1ODc4NiBiNjEwODM3NzRjMDhjNDA1NGNjM2NjOGE2NGRhYjI2NzhjMmMwODYwIHB5M2stcGVwMzEzNworNTg3ODcgMDYwNDZkMTc5MGI5MzBiOTRkNTI5OWU5YTliMjg3ZDZkNDM4OTE5MiBweTNrLXBlcDMxMzcKKzU4Nzg4IDkwZDVkODRjYTI3ZDgxZjRiYmE4OWZmZDQ5MzdhZmIzMDZkYTBjYzIgcHkzay1wZXAzMTM3Cis1ODc4OSBhOTgyMzQ0NTE2NjllODUyMzIxZTBkZjMxNzhmNmEyZmRmOWY0NGI1IHB5M2stcGVwMzEzNworNTg3OTAgNmRhOTBhNWFlOWZhYTAzOGJhZjE5NTI2M2VmMGUwOTJjNTVhZjNmZiBweTNrLXBlcDMxMzcKKzU4NzkxIDQyNjRhMDdhMzlkMTNmNjk0NjU5ZGIyNjgzODVhNTIyN2ViMDgyZDYgcHkzay1wZXAzMTM3Cis1ODc5NCBhMDMwZWNlYTRjMjRiNzVjYWFmOGVkYzMxOGU5YTE3ZTUyNGI0YWRiIHB5M2stcGVwMzEzNworNTg3OTUgMjgwM2U5NmNjNjRhZjhjNDE3MGNkM2QwMGYwNGE3NjBiZmZhNGEwZSBweTNrLXBlcDMxMzcKKzU4Nzk2IDRiMzYyMzU2OGU2Y2Y4NGM4OWI1MzY4NWQyMDk1YTc1NTNiNWEyNmIgbGVnYWN5LXRydW5rCis1ODgwMCA4NDRhYzJjZGY3YThlMDU5MTFkYzRhNjlkMmQ4OTE1ZWMzODJhMzJiIHB5M2stcGVwMzEzNworNTg4MDEgN2M0M2Y0ZGNjN2M3YzBiODYwOWU0MmFiNGNhODdiOTlkNTJiN2VhNyBweTNrLXBlcDMxMzcKKzU4ODAyIDZkNDZmZWIxNjRiNmJkZjY3Y2I4MzVjZjBiMGMxZDQwYzUzMzQzMDIgcHkzay1wZXAzMTM3Cis1ODgwMyAwMGM5ODQ2NjYxNWIyM2FmNTY4M2U2ZjA5YjMxOWVmMzMzYjkyNDMyIHB5M2stcGVwMzEzNworNTg4MDQgOGJiM2U3NzY4Y2E2OGZmMjM4ZmZkZmRmMzZmZTczMzkzMjUwMWRiMCBweTNrLXBlcDMxMzcKKzU4ODA1IGFkOGMzZjllYzFiMjk3ODYyYTY0M2Y5MDI5Zjc5NDUzMWE3Y2JkNTQgcHkzay1wZXAzMTM3Cis1ODgwNiA3ZWRiZjI1OGNhZDAwMTE5MzIzOTU4MjZjMGNhNTJmNmYxZDY4OTU1IHB5M2stcGVwMzEzNworNTg4MDcgMTE5Zjg0MWJiODE2NGFkZmI3YzBkZWM5OTc5ZTQxMzM1OGU3MzA5MyBweTNrLXBlcDMxMzcKKzU4ODA4IDAxMTM1ZGRkNzI2ZGNhOWUxOWZmYjY0Y2FiMWJkNTkyMTM4OGQ4NDkgcHkzay1wZXAzMTM3Cis1ODgwOSAzNTc1Mjg0ODU3NDM1MzI4MmNlZjJmYjFkMWIzYmI2NjM4YTRkYjcyIHB5M2stcGVwMzEzNworNTg4MTAgYjQ5YjMxMDdlNDIwMzBjYmRmN2JmZWI4MDk0YTU5NzhjMWFkYmEzMiBweTNrLXBlcDMxMzcKKzU4ODExIGE4ZTdjYjllMzdjOTQ1ZDEyZjAzODA0ZTRkOWExNzRkZTAwZTRmZWUgcHkzay1wZXAzMTM3Cis1ODgxMiAxNDJmMjY5NDdhYmE3ZDg0MjExOWIwN2M0NjYxZDViN2MxYTY1ZGI3IHB5M2stcGVwMzEzNworNTg4MTMgZDI0OTU0NWJhNzkyMjRhNGNiMjY4ZmQ3MmRlNGY1OTQ5OGIxNzBkNSBweTNrLXBlcDMxMzcKKzU4ODE0IGNmY2ZhZDg3ZWI3ZDBmNGUxMjc2YjFkYjdiODA0NGQxM2VlN2NmN2EgcmVsZWFzZTI1LW1haW50Cis1ODgxNSA3MDRlNjcxMWU1MGRjZTVlNjFhMjc1MDBkZDcyNDM1ZWE3ODA0ZWU4IHB5M2sKKzU4ODE2IGQyYmEyYmY0ZTc2YmFkYTU4NGE1ZjUxODY5NTM5MzAyNzAxNjQzOWEgcHkzay1wZXAzMTM3Cis1ODgxNyAzMTdiYTUzY2Q0NWM4ZTZlYjBiYTVmNzQyNDA5ZTY4Mjc5MGY3M2Q1IHB5M2sKKzU4ODE4IDUyMmJiYjkwMDVhNDE3ZGNkMTdlZGE5YzYyNzRkZjE1ZTYxMzRmNDcgcHkzay1wZXAzMTM3Cis1ODgxOSAyZmYwZTgxZTY4ZmNhMjMwNmU1MGI3YTNjNzU3YTEwMzE3ZjUzODUyIHB5M2sKKzU4ODIwIGE0MTQwYTI4YzNlNzYxY2IyM2Y3ZWMxNWQxZWU1Yjk0NjZiZTllM2QgcHkzay1wZXAzMTM3Cis1ODgyMSA4N2QzOGY0MmQxNjM0NDBjYTQyYzQ2YmY2OGQ1Y2YwZjVkM2E1YzVmIHB5M2stcGVwMzEzNworNTg4MjIgNmU0OTFkMTI3NjVjNWY3YjRjZjI1MWIyMWI1MzRmNDlhZDYzZjlmYyBsZWdhY3ktdHJ1bmsKKzU4ODIzIDQ0OTBmMzM1YmJjZDM4YmI3MjBmNjk4Mjg0OWI3NTRlMmM4YTNhMDcgcHkzay1wZXAzMTM3Cis1ODgyNCA2YWRjOTlhNjg4OGZkZWQwZDI3YzM1NTBjOWZkYWZkZjhmZGVhOTA2IHB5M2sKKzU4ODI1IDhmZDY5NGQwZjkwMmI4NjQ3YjRjYzBlMDM0ZDUyOWIzYjQ0NDhlMTMgcHkzay1wZXAzMTM3Cis1ODgyNiAwYzUxNzE3OWNiOGM0MDVjNTY4MDFjNmI4YWJiZmFmYzNlY2FjMmE4IHB5M2stcGVwMzEzNworNTg4MjcgOTIxYWY3ZjI3NjAwZjdjNDk0MzljZTZhMDUyZTc0OGQxYzc2YTI1OSBweTNrLXBlcDMxMzcKKzU4ODI4IDlkZTA3Mjc1YjAwODdhNjZlZTY2MjNhOTFmOWM3NzhlNzZiOGE0N2IgcHkzay1wZXAzMTM3Cis1ODgyOSBmZDFjMTBkMjFjOWVlNDMzZDUxZTgyNTg1OTcwOTc1MzY1OTlkMWMxIHB5M2stcGVwMzEzNworNTg4MzAgM2NiYzc4YzNhNDAzNTQ5NWU0YjJmMDQ3Mzg3ZGI4ZDc3ZDQ5NDMxYSBweTNrLXBlcDMxMzcKKzU4ODMxIGY2MWEwZWU3NDc2ZmFjNjEyMzRiZWEwNzMwY2M4NmI0YjY3Njc0ZGIgcHkzay1wZXAzMTM3Cis1ODgzMiA0OGU3NzkyMjQxMWQ5YzVhNThjY2RjNWEzNDMzY2I5YTQ2MGU0MjY2IHB5M2stcGVwMzEzNworNTg4MzMgYjNmODZjNDFkMGEzYTA3MjVjODhjMjQzMTgzNTdkMzZhZWIxYzA0ZiBweTNrLXBlcDMxMzcKKzU4ODM0IGY3YjQ1MjlkMDk4NDJhM2Q2ZGE5MTgzMzdkZjQwMWFiYzVhMTYzN2UgcHkzay1wZXAzMTM3Cis1ODgzNSAxNGRmZTJmMTM1ODIzMjk5ZTc4OTBhMzU2MmM4Y2FkYjA2MjQzMTM4IHB5M2stcGVwMzEzNworNTg4MzYgZTkwMDY1ZTE3MjEyMDIwNzg2YjI1MWQzNmM0YWU0MTBiZjRiMmQ3NiBweTNrCis1ODgzNyA2NThjZDM0YThjNWRiZTE5NjhjYzhlN2FjYWJmYzkyMDU3ZDYyMzg3IHB5M2sKKzU4ODM4IGRlM2I2M2Y4YjE3YjZjZGU2NGExZjEwMTc0MTVlYjE5MmE5Y2VjOWMgcHkzaworNTg4MzkgMDNjM2E1NDA3MmQ5MWVmNDMxYmJjNTc4MTI2NDAzMjU0OWUyOGE3ZiBweTNrLXBlcDMxMzcKKzU4ODQwIDE4OTEyNTdkZmQxMTNkYTY4MjI0MTczYmYzN2I2NzE5NTgxZTNhNTcgbGVnYWN5LXRydW5rCis1ODg0MSAwOWY5MjJjNGY4ODcyNWU2YWQ3ZTk1OTE0ZjhmNmFhYTRkZTdiNmI4IHJlbGVhc2UyNS1tYWludAorNTg4NDIgZWYxZDNlODcyOTZmMzY1ODkxMDU5NzdjZWYyNGU3ZGU5ZGY4NzE1MCBweTNrLXBlcDMxMzcKKzU4ODQzIGYxZmRkNmI3MDE1ZjAwNWM1MmFmMTFmMjJjZTg5MzIyZjI4MGEyZTggcHkzay1wZXAzMTM3Cis1ODg0NCA1ODVhZDc3MTNlZmVmZWU0MjBhMjY1MjE3OTU3MDQ4OTFiODcwYjkwIGxlZ2FjeS10cnVuaworNTg4NDUgNDQ3ZDJhNDUwMWNiNzJhNjVjMWU3OGY0NzY4YmRiNjg5YzZjMWFkMyBweTNrLXBlcDMxMzcKKzU4ODQ2IDUwNDIzZjQ0ZTZkY2ZmYzVkMjFiMTcwNjdiNzg0ZDZkOWIyMmQwM2QgcHkzay1wZXAzMTM3Cis1ODg0NyA3MWY4NDM1NzUxYmFhNWM3MWZlMDgzZWNkMzNkOTU4N2IyOTg1OWIwIHB5M2stcGVwMzEzNworNTg4NDggMTUzYzBjNzQ0MWFhZjZmZTExNDA4MWI5NjZhODhjMDZjZDRkZjk0MiBweTNrLXBlcDMxMzcKKzU4ODQ5IDVhY2Q5ZGYyNzEwODUyODNmN2MyODc5MDUzNTRkOWU2NTY4OWJkMDcgcHkzay1wZXAzMTM3Cis1ODg1MCA1MWEwZGU5YmFiMzc0NmFmMWE1ZDdmOTYzMWNiNmVlOGE1ZDY4Mjc2IGxlZ2FjeS10cnVuaworNTg4NTEgOGQ0ZTljNGYwMzUwYTFlMGI0Y2ExYzM2NzgwMzQzMWU4NmU5ZGU0YSBsZWdhY3ktdHJ1bmsKKzU4ODUyIDM3NDIzYzc2ZTIwODU4NjhhOTZkZDhhYjAwNWFjM2Y2YzM2MTRhNmUgbGVnYWN5LXRydW5rCis1ODg1MyAwZmQxY2FhODUyMjVmYWNhMjU5ZmUzODgwMTZlMzZkNmUwNjAwNGRmIGxlZ2FjeS10cnVuaworNTg4NTQgMzcxNTY5NDVjYTM1MTZlNWI3YjhhNjU1OWM3MzhlZGQwOWE2ZDg3OCBsZWdhY3ktdHJ1bmsKKzU4ODU1IDAxZTYzMzNmM2I2Y2VmMjM4NzhiZmNkMDEwMDg0ODNmM2M4N2I4NGYgcHkzay1wZXAzMTM3Cis1ODg1NiAxOTg3ZGJlN2ViNmU3ZDcxN2M3MDg0YTRiMDEwNWM5NWMwOTJlOTZmIHB5M2stcGVwMzEzNworNTg4NTcgMDhlZTNjNzNiNmJlY2FjMTYyNTUwNWQ2Yjg2Zjg4ZjE2ZGM5OTczMyBsZWdhY3ktdHJ1bmsKKzU4ODU4IDcwZWYwYjZhODM0NWYxMjJhOTU5ODUwYjE2OWUyNTcwZjZjNTBkZTIgcHkzay1wZXAzMTM3Cis1ODg1OSBmZTljMjIzM2NkMDRmODMyOGY5MTk0NmY3Yjc4Mjk2Y2ZlMDRkZGM4IHB5M2stcGVwMzEzNworNTg4NjAgMzA3ODgxNDZmMGE2YzA3YWIxMzgyNmRhMDQ0MTc4MjkwNzdhMmYxZCBweTNrLXBlcDMxMzcKKzU4ODYxIDc3ODgyM2MwZmZiNjM5OWIzYWM3OGFlYjA2YzUwZTIxZDkyODIzZmEgcHkzay1wZXAzMTM3Cis1ODg2MiBmM2MzMzdlOWQxZTU5N2MzYWQ0YTM5M2ExYjNlYzdlYjExNGE4NmFiIHB5M2sKKzU4ODYzIGY5ZDQwMWYxZTFlZjBiMGM3YmZjNTlhZDkzYWIxOGJkMTJlMmU3ZmUgcHkzay1wZXAzMTM3Cis1ODg2NCBjNDkwYWUwOGQ2MDhiMDE2MDgzOGJiNjMzOTc2MGU4MTc3MWExZGQ1IHB5M2stcGVwMzEzNworNTg4NjUgYzE1NWYxZGVkYTY1ZDg0N2FhZGZjMjJmNWI4ZTljYTAwZmNkNTg5ZiBweTNrLXBlcDMxMzcKKzU4ODY2IDc5ZmU3ZDA2MjA2YzE4ZjQ0MGM0ZTU4MWFkYWUxYmVkZDJkMzc0MWUgcHkzay1wZXAzMTM3Cis1ODg2NyA1M2FmMDQ2Y2MyYzUyZTJlODNlNzQ5MmE3NWQyN2Q1ZmY3NWI0NTYwIHB5M2stcGVwMzEzNworNTg4NjggZDdkYjQ2N2NkOTQwN2FhMDk2NDA0N2E0YjJkNWIzZGVhNjRlOWQzOSBsZWdhY3ktdHJ1bmsKKzU4ODY5IGE0OTRhOTE1MTJlYzllZTQ1ODJlYTZjNmE1ZmRmMTg2ZmVkNzBlN2QgcHkzay1wZXAzMTM3Cis1ODg3MCA4ZDMxYTM2ZjBjYWFlNTA4OWRlMGNmOTM0OGMxNGVhZDRhYTVjYmU0IHJlbGVhc2UyNS1tYWludAorNTg4NzEgZDI0ODUyYjg2ZDcwYmMyNjRlOTFjOTc0MGI2YTc3MmRhMTEyNjM0ZSBweTNrLXBlcDMxMzcKKzU4ODcyIDI5YTU5OGU2OTM4MjYwZjg2NzA5MTdiOWMyMWMxMjBhNTMzMDE1MTQgcHkzay1wZXAzMTM3Cis1ODg3MyA4NzE3OGYzNWQ3MDA3NDk1Nzk2YThjNWIxNTFiMmQ5MzY5YzVlOWFmIHB5M2stcGVwMzEzNworNTg4NzQgNTUzMTM4NDgwOTE4NTM2NWY2MWFmOGI2YWY5MGVhYmFlYWE3MjA2MyBweTNrLXBlcDMxMzcKKzU4ODc1IGNjNjViNjQwMTk4OTQ2ZTRiZmJhMzI3NWEwMDEyOTE2ZmU4MDhlZWQgcHkzaworNTg4NzYgMGIyMDY3OTBmZWI2NDNlY2UzY2Y4ZTEwZGI1M2FmZWQ5MjY3MDMwNiBweTNrLXBlcDMxMzcKKzU4ODc3IGQ4MjRjMzE1ZmNhYzI4ZTQ1ZGFmNGJiMzZhNjU3NTY1OWFiOGMxMTkgcHkzay1wZXAzMTM3Cis1ODg3OCBkZTk3MzkyNmEzNWNmZDI1MzIzODhmOGVkOTRkMmQ1NTVhMzQxOGVlIHB5M2stcGVwMzEzNworNTg4NzkgYzkzYWQ2YzQxN2RmMjUxYmZhYTZiMjNkYzI5YWQ5YTQ3NWRmNWJkNCBweTNrLXBlcDMxMzcKKzU4ODgwIDkxYmExNjk4YTAxMTg2YzJkNmI3YzVhYTk1ZDJkOWEyMmU4MjBhMTkgcHkzay1wZXAzMTM3Cis1ODg4MSA2ZGIzODA4NTJmNjNmZTFjZWYyYmE2YjJkNTI1Y2Y1ODdiZjExYmI4IHB5M2stcGVwMzEzNworNTg4ODIgOTMwYzYwZjhhYWZmYTcyODk4ZjA5NDIwMTI0NzE1OGFjZjIxODZjMSBweTNrLXBlcDMxMzcKKzU4ODgzIGZjM2JlYzIwZWMxNTM4ODhiMTZkNjA0NWEwZWRhNDhkMjhjY2ViYTMgcHkzay1wZXAzMTM3Cis1ODg4NCAwMjI1N2VjNTRkNzkxM2NmNzgyYWY0MTY4MGM2NDQwMjIzM2MwZjZlIHB5M2stcGVwMzEzNworNTg4ODUgY2I4ZWYyNTUxZDBkMGUzNGZjOTNjOGVlNTQwZmZjYzZlMmY0YjU4NSBweTNrLXBlcDMxMzcKKzU4ODg2IGIzMTBmZDJiMDE4NDdhMGM5MWQwN2E4ZmFiMDc4NWMyNzJlMWQwZWMgcHkzaworNTg4ODcgOTBkMGMzNzY2ZTkyOGEzMmI2MGJjYTYzZmVhZGYzYTNhOTViM2I5NSBweTNrLXBlcDMxMzcKKzU4ODg4IDBkNDYyZDc4OWIxOGVjNmE1OWViZTIxMTY2ODhkNWI2OTg1YzIxNWQgcHkzaworNTg4OTAgY2ZlOGZjZWQ4YTEyMjZhZmYwZjE0NGIwZjliOTRmMjNmODc0NTAyOCBweTNrCis1ODg5MSBjNWY3MDhiYzRjYjdmYzAyOWE3NjI5MzczMDExYTQzZDlmZDU4MWU0IHB5M2sKKzU4ODkyIDczNDdmNzViOWMzNDQyYmQ2MzNhZGFlNTMyNjk4ZjI0YzJhMmJlMDcgbGVnYWN5LXRydW5rCis1ODg5MyBkYTU4Y2Y5YmNiMDFiNWE3MjZiYzM2NjVlMWNhNDAzNTY0N2I4OWIxIGxlZ2FjeS10cnVuaworNTg4OTQgMDZiYjgxMDc0N2UxZDM2MDcxZmVlYTJkYmRiMWQ5ZDRiOGI5ZWMwZSByZWxlYXNlMjUtbWFpbnQKKzU4ODk1IDlmMTdhOWE1YjVhZWVkNzRiMmJlMWVmMGJiNmI4MWQ5ZThiNmE5MTMgbGVnYWN5LXRydW5rCis1ODg5NiA4ZmNjM2Y0NmM2OWRlMTczZjI4NzM3YmU1NzkzODUzYWUwMGMzZmU3IGxlZ2FjeS10cnVuaworNTg4OTcgZmE4MmVjOWM4MGNkNjc4NjdmZmVkMjIzOTU1NzJhOTliNWRiZjRlNiByZWxlYXNlMjUtbWFpbnQKKzU4OTAwIGRlNjNlZjE4NmMxZWM1MDAxODgxNWY0MzFmZTZmZjFjZDJkNDNhNDAgbGVnYWN5LXRydW5rCis1ODkwMSBmNDc0ZGU5NzM0MDQ3OGVhYzcxMTc4YTkyNzZhY2JlZDFhYjEwOTkxIHJlbGVhc2UyNS1tYWludAorNTg5MDIgN2JkNzJjNTZmNmE0MGQyZDQzNDFiZjE4MmM4Y2M5OTQxZjRjMDhjYyBweTNrCis1ODkwMyAxMjQ3ZDI0YjI4N2I4YzZkZDIwZTM1ZjM4OWE0ZGFmNGQyMjUxYzQxIHB5M2sKKzU4OTA0IGRiYTI0OTFjZjcxNzYyNWIxYWQ2OWZjNWQ5YTA5ZTg5Yjk0Y2E0ZjggcHkzaworNTg5MDUgZGZiNDYwMDA0Y2ZlMmRmNzAzOTg2YWExM2JmOGFjM2Q5MDgzZjVkOSBsZWdhY3ktdHJ1bmsKKzU4OTA2IDJmMDRhYmQxMzM5NDRkZTMxMzdmMDBkNmI2YWQ0MGJhMWY1YjIxOTUgbGVnYWN5LXRydW5rCis1ODkwNyAyZDhkNjg1NWE2MDI0MTllYTlhOTk2ZTc2ZDgzZmUyY2M3ZmVlNThhIHB5M2sKKzU4OTA4IDJiM2FiZTNkM2FlNmVhMzNkMmIzOWYyOTgzNDg4MGNiNTA4NDIxZWQgbGVnYWN5LXRydW5rCis1ODkwOSA2NmQyNzVmMjlhYzU1MGVhZjViN2YyYTYxZmNiYTg4ZWQ0ODIzY2EzIHB5M2sKKzU4OTEwIDcwMjJhZmZkN2JkMDljZjExNTUzYzIyZjhlMGFmZDQzN2EzZWRjZmMgcHkzaworNTg5MTIgNmFjNjE4ODJmOTM3MGNmZmZiZGFmYjRmY2Y4Y2U2MjgyYmM0NDgzZCBweTNrCis1ODkxMyA2ZDM0Nzc3OTUyMWI1YjI1MjI3MWVlYTA3NWY5YzgxYzg0ZWI1OTllIHB5M2sKKzU4OTE0IDM2MGRmNjQxMjQ0ZDllODExZWZkODlhZDA2MjJhZDQ2YmE2NmZlZmYgcHkzaworNTg5MTUgYjIyZjI3ZTA3MDExNDhlYjYzYjIxZWYyYzM5MTU0YzAzZmVjMTViMiBsZWdhY3ktdHJ1bmsKKzU4OTE2IDJmN2M0MDFjYjYyZTA0OTczMWRiMzZiOWU1YjAxMmU1YzkyNTlhZDQgcHkzaworNTg5MTcgM2MxZjg1OTNhMTRlNGM1NWU3YzAwNjQ4MGMzNmVkNDFhYjc4NGY5NiBweTNrCis1ODkxOCBhZGU1NjYzZTg4ODY4YTMxYzA0NDVjYjk5NWY1YTcwNDI4ZGRlZWUzIHB5M2sKKzU4OTE5IGQ1YzI1YmYyNjkyZWVhY2ZlOWNkOWIxZGJiMTAwZmYwMzlhNmI3YjUgcHkzaworNTg5MjAgODNjMDVkMmUxMGRlY2QwNjMzMDRlZTU3ZWU5ZTdjYzQ4NWVkYWNhNyBsZWdhY3ktdHJ1bmsKKzU4OTIxIDgxZTMzYmRlNmVlMjBhYzQ0YTAxNjk2MWFhODE2ZTljOTBmYjhkYWYgbGVnYWN5LXRydW5rCis1ODkyMiBkZGM3ZDE0YmUxZTk5Mzk0MThiMzQzMjc4MzliNDgxNjk2MzQ4MjZmIHJlbGVhc2UyNS1tYWludAorNTg5MjMgYzFmODgzMTE1NWRlMGU1OGI4MjMzYmIxNWY0ODllZjczNWRiNmQ5ZiBsZWdhY3ktdHJ1bmsKKzU4OTI0IGFhZWVlNTBhMDY0MDE2NzFiZjVhMDc5MzM2MjI5NjMxYTZkYTVhZjggbGVnYWN5LXRydW5rCis1ODkyNSBhYzEyYWM4OGFlZWE5M2ExMDZiYjY4ZTc1OGZiMTliY2ZjMWNlYzRjIGxlZ2FjeS10cnVuaworNTg5MjYgMjBkYzY3ODZmOWFjZmU5ZmYwN2QzMzQ0YzJhYzhlYWVhYmMxOTMwYSBweTNrCis1ODkyNyBmODJhMjBkZGE0NjVlZjIwZDgxOTcxYzlmMTAwN2YxNzUzNjFlMWFiIGxlZ2FjeS10cnVuaworNTg5MjggMTU2MTc2M2NkYTcyZGVjNmNjMjE5MzY5NDVhYzRhYTQ4MTI4ZmMxMiBweTNrCis1ODkyOSAxOTdmZmI5OTZmYjg4OTU5OWI3YmYyZTViYjNiZGY5MzE3MDIwZDUwIGxlZ2FjeS10cnVuaworNTg5MzAgODVjZjMzNGIzMmMzYWMyMWViYzQxYzUxNTYxZDZlM2I3ZjZjYjEyMSBweTNrCis1ODkzMSA0ODdmMzczN2VhZWZkMDIxM2IwZTE5MTEwM2JlOTYzMzY5MDQ5ZmQyIGxlZ2FjeS10cnVuaworNTg5MzIgMWFkZjA2NmYxODc5YTRiOTM3YWE4OWYxZTFhNGU0NjI4YWVlY2IxMCBsZWdhY3ktdHJ1bmsKKzU4OTMzIDVhMTY5ZGUzNmRlNzhjYmI3NTlmNWNlZGJhZjUyYzY4YmZkYzhjNWIgcHkzaworNTg5MzQgMDY4NjU1MDU0YjBkMGQxMzYyYWE3MmIxYzBjZDdkZGMzY2ZlMjYwYiBweTNrCis1ODkzNSBkMmY5ZTIwMTIwZjllOTM1NzQ5ZWVlODc5MTU4NTBjM2E2NDJhZDE3IGxlZ2FjeS10cnVuaworNTg5MzYgMDFhNWJkYzI4MjBhMDExZmE3YzYwODkzODhjNzk2NDhiOGZlNzNkZCBsZWdhY3ktdHJ1bmsKKzU4OTM3IGM0ZTI5MzZkMTMwNzUyMzI0NjUwOWMwM2YxZGE2Y2U2ZDM3YzFiODEgcmVsZWFzZTI1LW1haW50Cis1ODkzOCA1NWNiZDBjN2FhY2ZjMzg3NDIwYmYyOTM1N2U0NjIxYzZhZjNmZDEzIGxlZ2FjeS10cnVuaworNTg5MzkgNGVkMTZjYTRkOTgwMDhkYTEwMDdhYWI3M2U4NWYxNjBhNDRmMzIyYSBweTNrCis1ODk0MCAyOWJlY2UxNDc4OTM5MWRmMWIzNDg0MzEwZmM4ZWU1MzlkMjdmYTlmIGxlZ2FjeS10cnVuaworNTg5NDEgYWRlNThlYjdjOGM3NWM1YmVjYzNiNWExMjljZDgzODU0ZDY4YThkMyBsZWdhY3ktdHJ1bmsKKzU4OTQyIGFmMzQyOGZhZTE1ZmQ4MzM5MDhlYWEwOTI2NjdlZGEwNTVkMGVkNTQgbGVnYWN5LXRydW5rCis1ODk0MyAwMGU2MTY1ZjQ0ODI5ZGVhYmYwNzVmM2JmZWU1ZWY5ZGM1ODM5YzA5IHJlbGVhc2UyNS1tYWludAorNTg5NDcgN2JjNGNjOTcyYjBiM2M2MWVlNDQ2YWMwZGVmMDBiYjQ1MTZiNGVmZiBweTNrCis1ODk0OCA4ZWQzYTk1Y2ExMTRmYjFjMmQyNDAyMDU3NmZlYWE5YzVlNGMzZTdkIHB5M2sKKzU4OTQ5IDE2NGE2YWM5NGQzYzgxZjQyMjc3OGZhZWZhZDBmM2NlZTA0NzdjODMgcHkzaworNTg5NTAgNTkxMmI2NmNjYzJkNWZmNzViNmFkYmNhN2EyMDk0ODM5ZWFlZjRkYSByZWxlYXNlMjUtbWFpbnQKKzU4OTUxIGNlNzdkOTFlYTFkMGJiZGZmYTFiZmNkNDZhNDMwZjBjOTNhNjZmODcgcHkzaworNTg5NTIgZDdlOWJlYzFmZWFhOWE1ZDYwNzUzMTU0ZGVmMGJkZWRiZTg2NDIxMyBsZWdhY3ktdHJ1bmsKKzU4OTUzIGEyMjEzMDYwZDlkZGIwNDhkMWRhMjE3OTkyY2YxNGM2MWIyZDlkZTcgcHkzaworNTg5NTQgMWQ2ZGI5ZGQzZTc3YTdjYzhkODlmYzhmODRlYTA4N2M0YmFmZGNmZCBweTNrCis1ODk1NSBiMzFmNjFkN2Y4YjBlZTAxNGViYjA5YWM3ZWI2NGIyYTg2ODAxODRkIHJlbGVhc2UyNS1tYWludAorNTg5NTYgMWUwZWExZjAzMDU4YjVhMjUxZGYxM2ZkMzhhZjE3ZjI0YzNhYjA0NyBsZWdhY3ktdHJ1bmsKKzU4OTU3IDA4MTExODJhOWNlOWFjMWRkMmEwOWVlZmE0ZGQ4Mjc1OTM4MzQ4Y2MgcHkzaworNTg5NTggNzNjOGUyN2ViOWNlZjQwMmZhY2Y4YTljYzMxZWY5MzFmOGZkYTA0ZSBweTNrCis1ODk1OSBjY2NlYWVjMTE0NDJmOTRhODkzMDMzM2MzYTZlOTk4NjEwYjBkNjA5IHB5M2sKKzU4OTYwIDI0MTI4MTEyM2ZkODM1MWQxMGUwMjE4ZDMyMzlhNWJmMWYxMGVmZjMgcHkzaworNTg5NjEgYTA2MGIzY2MyYzYyYjEyOTZlMWM1Y2U5MTU1NDZiYTJhMDY3Njk5YiByZWxlYXNlMjUtbWFpbnQKKzU4OTYyIDJjOTdlMjRiMTZjZmNhOTMzNDhhODg1MjAzMWI0ODlhNWM4ZmYwNGMgcHkzaworNTg5NjMgNzY4NDRhMGE1NzlmOTkyZTJiMDQ4YmE4N2NiYjNkNjNmNDJkMGRkNSBsZWdhY3ktdHJ1bmsKKzU4OTY0IGQ1ZmM2ZTk2MDkxZmI2ZmVkMjM3YTQ5MjQzZjgyMzAwOTlmM2RjNjMgcmVsZWFzZTI1LW1haW50Cis1ODk2NSAwMzc3YmE5YmMzNTkxNzUyYjc3MTNiZjQ4YjQ3YTM3MzFlOWI5MGE1IHB5M2sKKzU4OTY2IGUxNjJlODgxZWE1ZjRlM2RhNWM0MWQyMzkyY2IyZGFjMTdhNDAxZDIgcHkzaworNTg5NjggMjRjODRkNThjYjgwMTBiMThlNjIzZTc5M2RhNzJmYmRhMTg3YTdmZSBsZWdhY3ktdHJ1bmsKKzU4OTY5IDUzZmMwZjQxZjY4ZDdmMTY2NmMwNjkxOTZjZTkzNjU2MTBmOTQ2MzkgcHkzaworNTg5NzAgOWExMjgxMzkxYzQ2ZTljNTMxMzY3NjZhYmRlMDM2MGFmZWZlYTFmYiBweTNrCis1ODk3MSA4OTk5ODkzYTZlMjIxNTBjODk4OTdhZTQxYjM4NmZjNWIyOWYyMmMwIGxlZ2FjeS10cnVuaworNTg5NzIgMDNhZDFkYjdjODBlNDVkNmRlNjY5NWVhODFiZDBjNjUyN2Y4OGRhMSBsZWdhY3ktdHJ1bmsKKzU4OTczIDNjMjlkNzNjNzc2OTRlNmM3MzU3NGNlNjA3MmM4ZmI2ZTIyNWUxODcgcHkzaworNTg5NzQgZWUwODE2MDljZWU4Y2QzNDUzMTkxMjQyNzYzYmQyZTM0MWNlOGEyNyBweTNrCis1ODk3NSA5ODc5NTczOGI0YzI3OTNmMGNkOGNkOGE4MjE5NWZjMWM0OTVkYTY1IGxlZ2FjeS10cnVuaworNTg5NzYgMGFlOTA3ODc4NmI0MDJlM2YyYmQ3ZjYxOTc0NmM1YTBkOTEwZDcyOSBsZWdhY3ktdHJ1bmsKKzU4OTc3IDAxOTgyOTgwMzg0OGU2ZjExZWZlMDE4YzNmZjgzNGE2YTYwYTk2OWIgbGVnYWN5LXRydW5rCis1ODk3OCBkZDNjNGRkM2VjZmQxNGNkZGE4N2I0ZjhjZGM5MmFlYjI0NGQ3OGIxIGxlZ2FjeS10cnVuaworNTg5ODUgMTc5MTg2NWE2NjhiOWYyZGI0YTBkOGM3Y2Y4OWMxYWM2NTFmYmMxOCBweTNrCis1ODk4NiBmYTZjZGY1NWRlNThmMzZhMjc0MjBhYTY5MDkwZGE5MzMxNzI0YWRmIHB5M2sKKzU4OTg3IGQ0Zjk3MDZjYjQ2YjNjMmIxMjFlM2U0Mzg3MzFjYTBmY2U1YjExYzggcHkzaworNTg5ODkgNTE2MDQxZDUyNjU2ZDQ4MWIxNTc1ZTFlOTQxYWEyMjJiNjgyNWJhOCBweTNrCis1ODk5MCBmNGEzYjRlMTU1YzI1OTM3NGM5ZGM5NWQzYzA5NWZkNGJhNGI3ZmQ5IHB5M2sKKzU4OTkxIDlhMzVlOTI2NjM3OWJjYWE5NWIzNjI1NmRiNTUwYmUwZjc3NjU1Y2IgcmVsZWFzZTI1LW1haW50Cis1ODk5MiA4ZWQwMjgwYzJhYjY3NDg1M2VhMTdlMGIyZTJhZWJiYmJjMzExNDQ0IHB5M2sKKzU4OTkzIGY0NDRlMjU5MzQxYTk2ZTM5YzU0NzgxYzZkMzRlM2QzYTZkNzYzYmMgcHkzaworNTg5OTYgZGU2YjEyNmE4ZDM3NDk1YjY5YTI5MzhmYjI4MjgyODc2ODA1ZWE1MyBweTNrCis1ODk5NyBiNTk4MjVkOWRiOGY5OWU2NjBhZWExYmE1N2E4YmM1OGQ5MzUzYWIzIHB5M2sKKzU4OTk4IGM3OGRiNDkzODQ4MmM3YjZiYzBjYjg2M2IxNjZhMTYxNjI1NTgwNGIgbGVnYWN5LXRydW5rCis1ODk5OSA1OTA5MzBlMTdlMGM5OGY4N2ViZDUwNTdjY2VkM2Q0Mjc1YTA4NWM1IHB5M2sKKzU5MDAwIGQ0MTkzMzMwZDFiZWVhZjkyYjIwMWIyNjI4N2RiZTk1Mzg2YTAwY2EgbGVnYWN5LXRydW5rCis1OTAwMSAxNzM5ODY5Y2JjNmU3ZTM1NDBhNjQ1NDE3Yjc4ZmNiY2UzNmM4ZjlmIHB5M2sKKzU5MDAyIDZiMDEyZjAxYTg4OTA5MzI5YTdmMDVmZmU1NDM5NzgyOTE2NmE4YmMgcHkzaworNTkwMDMgZTIwMjAzZDAzMzFjYzI5OGYxNTJiMWI0ZGI0MTZlOWQwMGI5MTI1NCBweTNrCis1OTAwNCAxN2FhZjk1YWY5MDlhMTYyZTNhYWIyZTQ1NjljZWYwYmMzYjU3Nzg1IGxlZ2FjeS10cnVuaworNTkwMDUgMTE2NWQyNjFmYjA1ZGI1NzNmODJjZWNkY2ZmYTA5OGEwY2Q4MWRiNCBweTNrCis1OTAwNiBjMzE1OTRmYjFlZDQ0ZjAzNmFhOGQ0NWY5ODNiZmJjNjMzMzI5MzY5IHB5M2sKKzU5MDA3IDU1OTAxNTdmNGZjNjE3NTQ5N2ZkZWI0MDQ2NjYxNjk1YjE4YmNkZjAgcHkzaworNTkwMDggNGE2YTdhZWE1N2Y0ZmQ4ODY0ZTgyNmI2MzUzNjY0Mjg0N2U0OGJlOCBweTNrCis1OTAwOSA3MGNmYzdiNTA0YzI4NjM2MjQ0MTAyMjM1NGMxYTBmMzc2ODJkNDBmIHB5M2sKKzU5MDEwIGY2Y2NhNGIyMjYwY2FiZmM4MmExMzAwN2I1Zjc3NGNjOTM5YTNlOGYgcHkzaworNTkwMTEgZGMyMjU2ZTMwMWE5MjM5MmM5YzU1ZmIzMzA4NGViODZiOWFiYjU2MCBweTNrCis1OTAxMiA3MWU3NDU2MmZiNjQxMjg1OGVlZDNiNGIwNTZkMGUzMDU1ZjQ1MmJhIHB5M2sKKzU5MDE2IGE5OWRhODkzZjIwYzFlYWRmYTAyYjM3ZTdmMzM0MzJlMjhjNGI5MjYgcHkzaworNTkwMjAgMjVhNWY2YTMwMjkyNWQ1NzQ5MjFkNjUzMjFjMzI4OGUwNjQ2N2VkMSBsZWdhY3ktdHJ1bmsKKzU5MDIxIDJkZjUzZjA1MzkyY2MxYWU3ODRjOGVkNTM2NTMwOTU4NTNmZDI4YmQgbGVnYWN5LXRydW5rCis1OTAyMiAxZmIzNTM3NzZkZmI0ZTg2MDhiZjA5NjY3YzVhYjBkYzAzOGQxYjk4IGxlZ2FjeS10cnVuaworNTkwMjQgMTQ5NGJkZTUxMGZmOTRlZDk2YWQ1MGNhMmM0MjNmMDA0ZGRhZWEzOSBsZWdhY3ktdHJ1bmsKKzU5MDMzIDk5NWQyNWFhYzE2YWFhOTJiYzk1M2I3NjA3ZjIzYzliZTU1NmIxMmIgbGVnYWN5LXRydW5rCis1OTAzNSAzOGY2MzQxOWFiZDY0NzNhNDRlOWM4OGI3ZjNhMjcxZDg0YTkxNzUzIHB5M2sKKzU5MDM2IGQ1MGM3MDk5ZDRhYTRjMGNkNDRmN2JhZGY2NmYxYTZhNmNlNjUwMTQgcHkzaworNTkwMzcgNDgzZTk1OGQxM2M3NmI2NjRkZTE2YjM3NjQyYjU5NTRlYjZhYTMyNCBweTNrCis1OTAzOCAxMzMyNDUwYmM5NTIxZDAzOGU3NGUzNmQyOWNhYWM3ZWY5YTBlYzYzIHB5M2sKKzU5MDM5IDRjZWMwYzYzOTJjMTNhZDViYTY4OWEwNmVhMDU3NDgwYmExYmQ3NjkgbGVnYWN5LXRydW5rCis1OTA0MCA1MjBlMmVkOTRiY2M1MzBkNWRkNGQyNzA5MjBmYTU1MzVlY2FhZjljIHB5M2sKKzU5MDQxIDQxZjdjMTNlZjE2MTFjNWJkMjAxMWRmZWM5YTY1YWNlNWUyODQzMjIgcHkzaworNTkwNDIgYjkxZmQ3NGYzMmQ4ZTljNGNjMThjZmM2YWE1ZDZkYWE3NzUwYTMxOCBweTNrCis1OTA0MyBmY2Q3NjMzOWZlMWZlNmY3NGY5YTkyNDM3Y2FiYmFkNTAwNDU4NWQwIHB5M2sKKzU5MDQ0IDNhNzMwZjQ5MDhlM2YyZGIzZThmM2U5MDNmYTlkNmJjNGVjZGU3NWQgbGVnYWN5LXRydW5rCis1OTA0NSA3MGRkYmU2N2QzYzQ2MGExYzhlNDVhYmNiMDM4NWIxMDBhMzFmNTI1IHB5M2sKKzU5MDQ2IDE5Zjk5NjU1MzE4NDgwNmI5Yzc5NmM2YzM3ODA2ODAxNzNlYWI0ZTkgcHkzaworNTkwNDcgNmFhOGUxMzVkOWY4NGRmNDAxZDIyMTljYzc5NmZmMjkyNWMzZTY3MiBsZWdhY3ktdHJ1bmsKKzU5MDQ4IDQ5NjgxZDQzNmRmOTIzNmE2MzRkZDYwMjg2ZDEwNDM1NTE1NjE1ZTggcmVsZWFzZTI1LW1haW50Cis1OTA0OSAwZTg5NzkwNWVlOTQzZDk0MjI0MmFiMDljOGEyNDhiNWMwZWQyZDYwIGxlZ2FjeS10cnVuaworNTkwNTAgZTVkNDhmYmUxNjQ2MmM0MGRjMjJmNzBmMGViZmFiNDQ1NWIxZjkyMiByZWxlYXNlMjUtbWFpbnQKKzU5MDUxIDc4MGM3Mjg0MDZlNjc1ZjJiNGZjOTllYzZlZDJlZDllY2IzMjE3MWEgbGVnYWN5LXRydW5rCis1OTA1MiBkYThkY2Q1Y2Y1YTAxYTM0MzA1NzA4MTlkNWE3NGUzOTY1ZGYzZDBiIHB5M2sKKzU5MDUzIDFhZTkyMjRmNGVlN2YwMWE1YTQwN2NmZGE0NGU4ZjU4MDYwYTI0NGUgbGVnYWN5LXRydW5rCis1OTA1NCA1NGI5NzNmMGY1NWI1YjVkNmMwNTZhMmNlMzMyOGUxNzZmMzY0YTBmIGxlZ2FjeS10cnVuaworNTkwNTUgYjZmNTc4MWY1YzNmMGY1NWNmNzUyMTVmOTZlYzZjMGI4ZWY2MTVjZSBsZWdhY3ktdHJ1bmsKKzU5MDU2IDQ3NDdlZjk2NDBhZThiMTM3NTIxNzAyMzQ4MDJjNDYwNGNkNzYyMGEgcHkzaworNTkwNTcgNjFlZjkwYTFiMzVlMjU3Y2IxYTA3NGU1ZTg4N2UxNGNkMzRjMTA5OSBweTNrCis1OTA1OCA0MGRmYzQ4NWIwYmUzN2ViYWEzMWM2ZTg5MTA2OWU4NzA1YjVhYTUwIHB5M2sKKzU5MDU5IDY5Njk5Y2ZkZDI2ZWQwZTUzYmNmMDM1ZWY4ZDQxZTZmNDUzYWJlMWYgcmVsZWFzZTI1LW1haW50Cis1OTA2MCBiMWJjZDU5OTY3MWYwNTE4MWRjOTUxNTYyNDBiNGE3NDQ4ZDBmYTZhIHB5M2sKKzU5MDYxIGE5MTVmMmIxMzVjMDk1ZGZlOTQ5MjlmODNiNmFkMzIwYTQ5OTMzOWEgcHkzaworNTkwNjIgMTQ2YmE5N2ZmZTFhYjJjOWFmNDM2YjAyM2M2M2ZiOTgzODYxZmViMSBweTNrCis1OTA2MyA4ZWE3ZjU5ZGZmNmJjNjNhYzhmYzUwYjJlNjcwMzE5YWY3NmIwMWJjIHB5M2sKKzU5MDY0IGZkZjE0MTcwMzM3YWQ3OGM1ZGRjNDNlODBiMTA1NDBkZTgzYjE3ZGUgbGVnYWN5LXRydW5rCis1OTA2NSAyYTNkNzM0OTVmMTg0ZGNiMWZkMjZlYzZhNjhiY2Q3NjI0YjI0MjBkIHB5M2sKKzU5MDY2IDMyZDQ1N2E3ODg1YmRmMzgyNmJlYmRkZWE0OTk0MTRlOTRjMDYxY2QgbGVnYWN5LXRydW5rCis1OTA2NyBkM2NiMTZiMzIxZDU1YzNmYmZkN2E4NTI0ZmE0ZjlhZDZjNjg4MTFmIHB5M2sKKzU5MDY4IDc0ZjIyOTU0ZjE4OTlkYjRjNDlkMGNmOTZkZGFkMjVjMTY4OTljN2EgbGVnYWN5LXRydW5rCis1OTA2OSA2Y2EwMDQ0NzVhYTBmYzg0Mzc4YjA0ODI4NGMwMjhiZDZjYmRlNjI4IHB5M2sKKzU5MDcwIDJkZTdkMDBmYmYxOTJhYzNhNmZmYzE5ODNmYTI4NWM4NWMxMzRlNGYgcHkzaworNTkwNzEgNTU3NjE0YzRmZjAwZjMwOTg3YjY2NzkwMDNhY2Q0MGU3MzY4NDI2NSBweTNrCis1OTA3MiAyOWIwZjQ5NzVkOWYzMWUyZDEwNmViYjRmMzU2NGYxMjQ5ODk3OTU4IHB5M2sKKzU5MDczIDdhYjQ5MDY0ZDQzMGFhNWM5MzA0NjM1OGExMTEwYWIyZDQzMmQ4YWYgbGVnYWN5LXRydW5rCis1OTA3NCBmNTRlY2Y0OTRjYjcxMTA1MDI2MDgyZTgzOTk0OWM4ZjczNDA4M2QxIHB5M2sKKzU5MDc1IDhiN2Q0MzEzZWJjMDU2OWNhYzkyZmUzNzQwZDMzN2I1YWRkMzIxNWUgcHkzaworNTkwNzYgZThhYzFhZTQ1MDNjZDdhODI4MDcyMjgyOTVkNDU1OWU3YTBlMjFhNCBsZWdhY3ktdHJ1bmsKKzU5MDc3IDljNGJmMThlNWQzMGU2MzM0Y2MzNDQ1ODRiMGZlYmVjMzg4MDBkMDQgcHkzaworNTkwNzggNzFhMTdkNGQzYWZhMGRhNDE2ODg2NzFlMGNjNDBlMWJlZTgxOTUxNSBsZWdhY3ktdHJ1bmsKKzU5MDc5IDJiYTVhYjM4NjhjOTBmYjFmNDdkOTQ2ZWQ1Y2Y0YTI5ZDkxZmZkNmIgcHkzaworNTkwODAgMzhiMWRlYjRlNGViZGY4MzlmN2M5MTZmODY5YTRiOTc2MmNjYzkwZiByZWxlYXNlMjUtbWFpbnQKKzU5MDgxIDg4Mzg4NGZkYWFlOGUxMTQzY2ZhMjk4Yzk1MzAwYWExNjkyYTE1ZjUgbGVnYWN5LXRydW5rCis1OTA4MiA4NjM2ZGNiODAxY2UwNjAzZTQ3YTY1ZmJkNDZmNDk2Mzk2YzhlZmE0IGxlZ2FjeS10cnVuaworNTkwODMgMjVkOWNlMjgzYjM5NGYxYWVkNjlmNzkzZmYzYzVkZDA0MzY5MjQ3YSBweTNrCis1OTA4NCAzZmI3ZWQ1YzIzZGQ2OTBkNDQ0MGJkZDY2ZDc5NTE0ZWM0MTE2MmVhIGxlZ2FjeS10cnVuaworNTkwODUgM2IwNDg5NDExNmZlMjIyZjgyMTQzNTVkZmJkNmVjNmFmZWY1NDU4ZCByZWxlYXNlMjUtbWFpbnQKKzU5MDg4IDc4MmNiNDAzNzhmNDRmODdhMTRjNmFiYTUxN2FkMDRmYTQ1Y2U3MjIgbGVnYWN5LXRydW5rCis1OTA4OSAyZGJjZDM5MGI2ZjE1Mzc4ODNjMTlkM2M0MWRjZDRjOGE4N2QyYjVmIGxlZ2FjeS10cnVuaworNTkwOTAgYjA5OWQzOWMzNDgyZDk1Y2FmZjcyZWYyZTg0Y2YyMzNhMmMxZDFkZSBweTNrCis1OTA5MSAyZmQ3YzkxMTE2MzJhMjUwMGExMGY4MjY2N2YzZGYzNTU3MWJkOWU1IGxlZ2FjeS10cnVuaworNTkwOTIgNmM5NjdjMjY4NDFhOTE0NTUyYmQwNmUxZjVjN2U5NjNhY2Y5YzZlZiBweTNrCis1OTA5NCBjYmM4YjNiZDMxNTc4MWU1M2FmYjg5MDI2ZTU0ZDAxZmMwNmQxMzNiIHB5M2sKKzU5MDk2IDhlMGM0YzcxMDM3NWYyZGM5MThiMjQzNmZiMjY0NWVjZjA4MWU3N2EgcHkzaworNTkwOTcgZWE5ODg0ZjE0NTQ1OTg4NWJiNTE0ZjFjZTA4NWQ3OTE5YjI5ODEyNSBweTNrCis1OTA5OCAyYTNjYTkwMDA4ZmZmZWMxZWNjMzAxY2RhN2E0OGFmNmE1OTI4ZDY5IHB5M2sKKzU5MDk5IDMyYmZmN2YyOTc1ZDgxMGE5OWQ2OWQ5YjNkYWI5ZTE1ZDhkYTY3YTEgcHkzaworNTkxMDAgNmYxNDk1MjZlODY0YzQxMDQ2ZTRkZGVhM2I1M2YyZTU3YzQ1YTJjMCBweTNrCis1OTEwMSBkZGJjNWUyYzY4OWE3YTQxMTEwMmQ4YTU5MDYyYTkxYzk0MzAxZGY2IHB5M2sKKzU5MTAyIDA5MmI1MzA2OTgzZjcyMGJiZTAxZWIzZTFiZWY5NzcyMjE5NTg4Y2QgcHkzaworNTkxMDMgNzUzNjQzNjQ0MDhiNjkzMWQ4M2Q4OWJjNTA1ZjFkMmU1MmZlZGI0NSBweTNrCis1OTEwNCBmZTViMmVkZmZhZTc2OWFjY2E1MDViMjhmMzNhODA3ZGVhYjQ0NTY2IHB5M2sKKzU5MTA1IDIzYmVmZTU0MGQwZDU0NmRkMTY5ZTdiNTU0YmQ5YmM2MDY4MGQ2NzggcHkzaworNTkxMDYgMTAzYjdmOTU1MDM2ZWEzNmY1ZmVjNWQzYmQ2NjgwYTU2Y2JlYzdiMiBsZWdhY3ktdHJ1bmsKKzU5MTA3IDEyMDk5NzA2MTJkZmUxODExNjA2MDE0ZDFlYTczODRkY2U0ZmE5NWMgcHkzaworNTkxMDggOThiNDk2NjY0OWQ1MWIwOTNlMTkxOTdlMWM5MmE2ZGJhNGMxMjMyYSBweTNrCis1OTEwOSBiMjMxYmRhNjUzYTRmOWIzNWY2MWRjZDI2NTNkZWFkOGFkYWQ2OGJmIHB5M2sKKzU5MTEwIDI1OWU4YTJkNmY4YzI3MDU5NDUwZTgyZGQ3OGVmMmZhYjYzZThiYmYgcHkzaworNTkxMTEgMTRjNGJiM2M2NWE3YzdlZWY3ZWJiZjE5MDFlMWY4YzkyOTlmY2E3MCBweTNrCis1OTExMiAyNjU1ZDExMzEyMzJjMWNmZDI1Y2IyMDkzNTQ5MzY5MzJjMWMzMWNmIHJlbGVhc2UyNS1tYWludAorNTkxMTMgNDFiMmYyNmM3YjNkYmM1MDg4NjFiZWM0MTQzYTE5NWU2YjA2MTcwMyBweTNrCis1OTExNCBkMjM4MjlhOWRiMjExOTNjNmU0ZjE1YzRiOTZjM2IxNGU0YWEzYTVhIHB5M2sKKzU5MTE1IDhkMWVlZjM5MTlmMDUxZTc5ZDU3OWI2OThhNjYwYTc3MjdjMmYwZjAgcHkzaworNTkxMTYgZDliY2Q5NGU1OTM1ZTZiNWY5MWE0YjIxYWRhYzhmMTQxNmZiYTYzMiByZWxlYXNlMjUtbWFpbnQKKzU5MTE3IDhiY2JmMzIyYzJiNWMyNzkwZTdjMDlmYzVmNTU3MDhlM2I3YjczZTYgcHkzaworNTkxMTggNGE3NTUzYjE3NmI2YTFhM2NkNGMzMDFhMjY1ZDJjYWY0Y2YyNDkyNCBweTNrCis1OTExOSA3Mjk2MmFiZDkwYTE2YWI4NTZiYTY5ZTIzZWYwZjJlZGJmNWM3ZmM0IHB5M2sKKzU5MTIwIGE4ZGQ4ODc0ZmYyZDUxZWJiNzQwYTM0MzkxNWMwMGM4NWYwMDMxZTIgbGVnYWN5LXRydW5rCis1OTEyMSBmNjMyNzIwZDgxMDI3Y2U4OWYyNDYxYTQ1MDcyNTNjZDZlMjQxYTg0IHB5M2sKKzU5MTIzIGRhNDc4NDcxZjFiNmI4Njg1NzdmYzg2ZDM5N2FhYTQ3OGJkZTZiYjAgcHkzaworNTkxMjQgNmQ2YjYwOWU0NTdjODA3NTJhYzVkZTA1NzFjNTMxY2UxZjcwMGI3OCBweTNrCis1OTEyNSA4NzQ0ZTQxZGFmNTQ1Y2QxODZjMTI1ZTVjYzEyYzgwZTVhYzNiODc4IHB5M2sKKzU5MTI2IDNjNzI1YTQzYWM4Y2Q4ZTY3MzEyYTQ2NGVhY2E4MDZlZTY0MjU2NDYgbGVnYWN5LXRydW5rCis1OTEyNyA5MzUwZTQyNWU1ZjNiYjdlNWI2NGZmZjBmYmQ4YTk1YTRiNDIwNWZmIHJlbGVhc2UyNS1tYWludAorNTkxMjggNDljZWZlY2NmOTNlYmY1YWI1MmZlYWExZTZkNzhkMDY3ZjVkMzYzOSBweTNrCis1OTEzMCA2ZmY2ODUwNTE5OWFlMTg1MWZkNmJiNjdhZGFhNGZlOTM2ZWZjZWI4IHB5M2sKKzU5MTMxIDYyY2YwOGE2NGJjMjMxNDA0MTkzZTdkODBiNzQyMjM0N2EzNDE1YmMgbGVnYWN5LXRydW5rCis1OTEzMiA1ZjZhOGUyYjllOWNhNmRkNDQ2MjcyZTliYjllMWM1MjYxZjM2MThjIGxlZ2FjeS10cnVuaworNTkxMzMgZTcyNTE2NmM4YzgxODRmODBmZmQ2ZmRlY2VjOTQ2NzUwY2Q0MWUxMSBsZWdhY3ktdHJ1bmsKKzU5MTM0IGFmMzYwMzgwYWExNmZmMzdlNjYwZWYxZjVhNDIyMzUzYzllZmNiODEgbGVnYWN5LXRydW5rCis1OTEzNSAyMjMwZjE2ZTQwMmIxMDUxMzNkNGI4ZDE3YThmNmFkYjVkNTViNTc4IGxlZ2FjeS10cnVuaworNTkxMzYgZWQyOWI5MTYyYWU5ZTlhNzM4YmFhZjMwNzEzZTE3NzFhZTIyZTA1NiBsZWdhY3ktdHJ1bmsKKzU5MTM3IGI0ODFhZGIwNDY5OWFjM2Q2MjdlNTk4MmU0ZmVmYjU3ODMwNGMwYjUgbGVnYWN5LXRydW5rCis1OTEzOCA0ZDBmZTdkYTRjZDVmNmYyMGY0ZGQxMTI4YmU3YzJiYjllNTdiYTY3IHJlbGVhc2UyNS1tYWludAorNTkxMzkgMzU4NmE2NjM0OGJmODRjYTBkYzkwNmI3MzcwNTRhZWYyYWI3NDU0NiBsZWdhY3ktdHJ1bmsKKzU5MTQwIDRlMWExOWJhM2Q0YTYzOGY1YWRjZDM0OGUwNmNkNmZkZjNjMTI0YzQgcmVsZWFzZTI1LW1haW50Cis1OTE0MiA2OGNhYTQ3ZjVlMTUzZTM1NTczMDhiMzM3NjYxYWJmNWY0ODAyNjA1IHB5M2sKKzU5MTQzIDExZTNlMmFlMjM2NDNkMjIxYzYwMTMyNmY0OWU3OTAxY2MwZjExZWYgcHkzaworNTkxNDQgYTRhMTQwNDg2NjkxMDNkZjJjYWJlYjNiMzc5MzAwNjExZjY4NDYzMyBsZWdhY3ktdHJ1bmsKKzU5MTQ2IDU1ZmFmYjQ2ZmE0NTVmNWJjYTZlMGFhYzBkNDY3MDg1ZTczMWQ0N2UgbGVnYWN5LXRydW5rCis1OTE1NCBhOWNmNzgwZjYzOTZhNzJlOWNmZjgwN2ZhOTViM2Y4NjQ4NWUxZjdmIHB5M2sKKzU5MTU1IGI4NmU2YmY3NDM4Zjg4ZjMzOWNiYzViN2U0N2ExOWU4ODY1NmMzM2QgcHkzaworNTkxNTYgMTc0NzlhMDllYzdjY2Q1NTE5MDU3MmE4NGNlNzIyOWU4MmQ1ZGJlYiBsZWdhY3ktdHJ1bmsKKzU5MTU3IGJiMWUxNWJiN2I1OWVjODU5Yjk0NTY5MzI4ZGE1Mzk4NmYxZTkxNmIgcHkzaworNTkxNTggYjliOTQ3ODViMmM3MmZjNWM4YmM3NGE5MDgyZjkyNjJiOGNiMTJlMCBsZWdhY3ktdHJ1bmsKKzU5MTU5IDE1NWU5NzI1ZGEyZjkzNDc1OTU1MmZjZDFkYmIyMGVhZGNiZDc5N2IgbGVnYWN5LXRydW5rCis1OTE2MCBjZjYwMzhkZjlkNTI2OWM4ZTFlZGE3NzRjOWUxMjg4MzY5OTA1NjQ1IHJlbGVhc2UyNS1tYWludAorNTkxNjEgNDlhN2M3ZGJhOGNhZmY0ZGE5ZjA3MDNiOGY0OTJhNDU5ODA4MWY3ZiByZWxlYXNlMjUtbWFpbnQKKzU5MTYyIDBiNTM1N2NjNDE2YjhmMzU4MjRiZjMzNDExMjBmMmZlMTJmODdmMzkgbGVnYWN5LXRydW5rCis1OTE2MyAyYmVkODQxNTg1YTljYTY1YjBiNzRiNzcyNmU0NzRkZGJiZjk1OTRlIHB5M2sKKzU5MTY0IGQzYmU2ZTYxNWY4YzQ2ZGFhNjVhZjgyODdmYzI2NThlZjY2NzdkOTUgbGVnYWN5LXRydW5rCis1OTE2NSBlZGI3NWMwOThhNGIwNTlkODQyMDc2OTQ4NTczNTRlZDYxMjYxMmMzIGxlZ2FjeS10cnVuaworNTkxNjYgNmQ2MTRiOGM1MTI1MzJlY2Y4MDcxMTAzMTRjNzNkZjIwZmRkMGIwYSBsZWdhY3ktdHJ1bmsKKzU5MTY4IGNmMjIwNTk2MGNiYmFhZDZlNDVjZDczNTRhNWJmZDhhZDU2MjhiNTYgcHkzaworNTkxNjkgMjA2OGJmNzc4OTFkMGI0MjQwOTI0Y2M4Yzg0NTc1ZDEzMWJkZTg4MSBsZWdhY3ktdHJ1bmsKKzU5MTcwIDIxODNkNzJhYmZhYWNmY2RlNWNhM2ZmOWYzNGQ4NWE2ZTIwYzUzYWEgbGVnYWN5LXRydW5rCis1OTE3MSA0Y2Y5YmI5Y2VmOTFmNTAzZmM2MTlkYWM3MDIzNzQ5NTI4MDE2YTI2IHJlbGVhc2UyNS1tYWludAorNTkxNzIgZDU2MDFlYmUxNWE5NDcwZDFkZDMzZTg1ZDczNTI3YzU2MzRkM2EwNiBsZWdhY3ktdHJ1bmsKKzU5MTczIDE0YWEzZTRlNzM3NTliN2E2NjdiYzdiZWZmMTYzZjIzZmZjNTdiMTAgbGVnYWN5LXRydW5rCis1OTE3NCBlMDQ2NWJhMGU5NWQ2OGJmMTYyOTUxZmZkNDJiYjZhMzRhNGVhZTVkIHJlbGVhc2UyNS1tYWludAorNTkxNzYgN2RkNzk2MWUwZWZmM2ZmNGM3ZmMyMmZlZDYzY2QxOWI2MDQ5YTgxNiBsZWdhY3ktdHJ1bmsKKzU5MTc4IDIyZTA5OTA1ZTQwMDBhZTdjZmY0ODZjYmZjNjc1MjFiZWM0MjlmZDYgcHkzaworNTkxNzkgN2I0ZTk0YTdiOTJlOWVlMDFhYWY3NzllNDVkZDg3ODgwZWMzMjdjOCBweTNrCis1OTE4MCBhN2MxOGI5MjQyMzZhMDdlOWE2M2Y1MTgzZDFkODI4YWI1MWMyYWVjIHB5M2sKKzU5MTgxIDdiMzAxMTEyNDdmNjcyMDA3YzI2ZWM3ZTM0Mjk5NGRmMzMwODljZWEgcHkzaworNTkxODIgZTYxNjVlMzg5YzUwMjJiNDY4NzNhNWYyOWRlODI3OTEwODAyYWE1ZSBweTNrCis1OTE4MyBmZjVkZjFmYzBmY2M0YTZkZjMzOGE4Y2VjNWYxODRkMDk5NGU3MDljIHB5M2sKKzU5MTg0IDUyYmJlMzM2NWM3MmMyNzBmNzVkMTczYzBjNjk4ZWI0Y2U2MDE2MDQgcmVsZWFzZTI1LW1haW50Cis1OTE4NSA3M2Y4Mzg5OWViOWQ5ZWMwMGU2MjJjZGIwMGUxN2Q4MjY1Yjk3NmM4IHB5M2sKKzU5MTg2IGU0YjFlMDVjZTI2MzUyNzU1YzAyZDMzZDkxMTlmN2E0ZWYzMTUxNTYgbGVnYWN5LXRydW5rCis1OTE4NyBlYmM3Mzg5Mjk3ZDY5MWM2ZTE1OWM1OTk5OWU3ZTAyODVmMGQ1NjZkIHB5M2sKKzU5MTg5IDQ4YWY2Mzc1MjA3ZTcwOGRiNDFjMTliNjAzNzNiYzYxZGYwM2ZlYjAgcHkzaworNTkxOTAgZjQ4ZDJlZjcyZTdlMzk0MjRiMDRhYTI1NThiOWJmNjBiYTA5YmNhMiBsZWdhY3ktdHJ1bmsKKzU5MTkxIDA0NzY0NTdmZmIzOTFmZDJmMDQ2OGM3MjJlN2JjNWU2Mzc1NDE1NjAgcHkzaworNTkxOTIgZTdmZWQ3YTU5NTc2OGRjZTI5M2U1ZDA2M2U2MGRmOGM4MjBiY2ExOCBweTNrCis1OTE5MyBiNGRhNzFhODhmYzAxNWVkNDI4YTdmZWVjZGExODM4ZjA5NTU5OWNjIHB5M2sKKzU5MTk1IGYyZTI0NzlhZmRmMGIzMzA4ZjI3NWJhNjhmZmU3Njg1NjFmNDM5MjYgbGVnYWN5LXRydW5rCis1OTE5OCA4ZjkyYjRlZTZmYzRjZjU5NTQ4OWJiYzViOGI5MmIyZDVkMWYyYTEwIHB5M2sKKzU5MTk5IGJhMzA1NjExOWIyODNjMGQzOTQzOGQyZTU5MzEwNjM0ZjE0YzM2NTUgbGVnYWN5LXRydW5rCis1OTIwMCA1ZDEwNDlkNGMzYzY1ODQ3MGRlMDM3MTNiZGMyZTZiYzlmZGQxM2RlIGxlZ2FjeS10cnVuaworNTkyMDEgYmZlMDM3ZTNmZDU1ZmYyZmI4N2RiNjA1ZmZmOWU2YTgzMTU0ZmJiMCBsZWdhY3ktdHJ1bmsKKzU5MjAyIDQ1Y2VkNmFiMDY2ZDViYzYxM2QxOGVmZTk3MDFjMGZlZjY0MGU0OGEgcHkzaworNTkyMDMgNjBlNmVhYTM3OGQ5ZjkxYmUyYjQ5OGQ2NjJhNTZkNWVjYWJkYTE5NyBsZWdhY3ktdHJ1bmsKKzU5MjA0IGQ0NGZmZmRhMmNkMDg3NTdkZWQ1OWI3M2FjNDI5N2IzODUxNzE2YTIgbGVnYWN5LXRydW5rCis1OTIwNSAxMmU3MjgwMzVlMmM2Y2YyYmZkMTMzMzg2NmZmNDlkNjMxYjBhNmEzIHB5M2sKKzU5MjA2IDcxZjQ3Zjg2NDY5MWU4NDRmMzZjNDgxYmUzYmU3NjFiMGFmN2NmM2EgbGVnYWN5LXRydW5rCis1OTIwOCA3ZThlODc5N2Y5ZDBhODUxOGI1NmIxMzI4OWIxNTM2YWZlZmQ4ZDFmIGxlZ2FjeS10cnVuaworNTkyMTAgOTE4YmJlZTNhNTQ1ODgwMGYyYmUxZWYxYmZiMzhmNjc2MDE1OWI4NSBweTNrCis1OTIxMSAxZjAyNGE5NWU5ZDkxNmEzOTQ1M2UzZDYzOWZlMDdlYzU1MDU5ODBlIHB5M2sKKzU5MjEyIDUzYjA4ZmQ4OGJmNDc1YmI0ZjY3OTk5MWUxMTRkYzA0YzIxMWMwYWIgcHkzaworNTkyMTMgNTMwZmI5ODUyYzUwNDNmZWMwYmQzNzNiYjNkMmUyNWVlMTM1ZGQ5MiBweTNrCis1OTIxNCA0YzM5MDI5ZTNmYjAzMGE2N2Y3NTVmN2M2MThmYzNjZTkwODgyMTRiIHB5M2sKKzU5MjE1IDQyOWNhZGJjNWIxMDkzY2Q4MDdlYzg4MTY1ZDU4YTdjMWNkOWMxNWIgcHkzaworNTkyMTYgNDFiN2Y4MDI2NWRiMTliMzk4NDg1NzU0M2ZiM2MxYTZjYmJhNjQ1OSBweTNrCis1OTIxNyAxNTY0OWFlZjJkYjU1ZTEyNzAwOTQxYTNjYTNmMDE1N2UzOWVlOTNhIHB5M2sKKzU5MjE4IGVjY2IxOTcwNDRkZDQ5NWQ3ZDYxMDRmMDc2NzU3ZjZkNjhiMjhlODggbGVnYWN5LXRydW5rCis1OTIxOSBjMDI0Yjg5NGQ5MjljZWQ0Y2I2ZWM1MzkwZjg4NGI4OTQzYTZhN2MzIGxlZ2FjeS10cnVuaworNTkyMjAgZTZjYTkyYjE4Y2Y0ZGE0MmVjNTkwN2RlYmQ0MzY1Y2NmZTFlNzViMSBweTNrCis1OTIyMSBmMjM4NWQ5ODI4MmFiYTBkOTEwZDAwOTliNzlhZWNhYjYxY2I1ZDA2IHB5M2sKKzU5MjIyIGM0YTZkM2VjNDJjMTI0OTI2NzFjNzg3NzlhOWYwNjRjMzBkNzU2ODIgcmVsZWFzZTI1LW1haW50Cis1OTIyMyA2ZWQ3N2ZkYThiOTE0ODBhYjliZjUxOWFjNjY5NDMwMTFiMjVkNGM2IGxlZ2FjeS10cnVuaworNTkyMjQgYjZiNWI2Y2RkMjAyYTkwZWQ1ZGUzMjAxYzc5ZWJhNmEwM2JhNDM1YSBsZWdhY3ktdHJ1bmsKKzU5MjI1IDllZjg1NzI0ZjRiMWY1MjM3YTMzMmE0ZTNlZTEzNTdkNDFjOGNhMjMgcmVsZWFzZTI1LW1haW50Cis1OTIyNiA0OWFjNTg3ZTIyZTkxZjAxN2ViMWQwMjMwMGE0YjM4ZTdmZGU1YWU4IHB5M2sKKzU5MjI3IDI5NWNmMDVmZGQyYzMyOGM3NTAxYzQzYzA2NTYxZTU5NGM3Njg4ZjkgcHkzaworNTkyMjggZDYzOTQ1OGM3ZTAyNDVjYjNjMDRjMTBiYTMwYzEzZGQzZTkxZGZjYiBsZWdhY3ktdHJ1bmsKKzU5MjI5IDBjYzU1MmFiNzZiZDM5YzNmMDVjMzMyODIwNDQ0Y2M1MDE5YTdiYTcgcHkzaworNTkyMzAgODk0ZmVlMjc5ZGJjZWYxNjFiYzExZTdlYTRmZWUxNjcyOTg0MjE3ZiBsZWdhY3ktdHJ1bmsKKzU5MjMxIDQ0MTdhYjViMzUxZTZjZDg0Y2RkMDNmYmU3ZTBiNWNiOTUyOTg3MDIgbGVnYWN5LXRydW5rCis1OTIzMiAwMDA0OGZlZGJhYTBlMjJlM2ZmNTZiOGI5YzIwYTQ3MjViOWZmYWM3IHB5M2sKKzU5MjMzIDNlZjZkYmM0MzUzMWExY2JmMjg0YTZlY2VkYmYwOGNlNGM3NGUzNjcgcHkzaworNTkyMzQgMjhjODAyODM3MjUyMzNkMWY0NTY0NmNlYzcxMTdjNDRjNzI1MzdhYiBweTNrCis1OTIzNiAzY2ViZGU0NzhjYzRkZmUzMzc3NWM5NDEzNDM2ZGUxNDVhOTRiOWEyIHB5M2sKKzU5MjM3IDUzMTEzMTA2ZmViYjU5NTVhNDExNWI5OWMzMDY2OTZmYmFkMTMyMGYgbGVnYWN5LXRydW5rCis1OTIzOCAzYWExMTBmNjgwYWIzZTBhMDgxNzI5ODRlMDg4YWQ1N2Y2ZGZhYWNkIGxlZ2FjeS10cnVuaworNTkyMzkgZjU2NDQwNWM4MTA0MWRmYjhlNmIwNTU4YjZmOGViYTM1NDc4ZDA5OCBweTNrCis1OTI0MCBiNDQwNTllMGYwNzU5ZWQxMmNhYWU1MzU5ZTFjM2FmODU2NDBjYmE3IGxlZ2FjeS10cnVuaworNTkyNDEgMmY0N2IyMjhiYTA2NTRhMGEwYzE1YjU4YTEwMmViNWViNjVhM2MwNCBsZWdhY3ktdHJ1bmsKKzU5MjQyIDc1NzdiOTllYzUzYjU5MmJjYmU5YmY0NTkxZDRiNzFiN2MyYzQ5YTkgbGVnYWN5LXRydW5rCis1OTI0MyBjNWYyYzk3ODkzMTM1ZmJmODczYTA2ZDkyOTRiZGI0NzQwMzhmYzIxIHB5M2sKKzU5MjQ0IGY0ZTdjNzI5YjNhMjRlYzJiODViZWZmY2I0ZTU3OGRlYjY2MzBjOTMgcmVsZWFzZTI1LW1haW50Cis1OTI0NSAxNjVlNTI3YzM5OWFlZTUyODY1MDRmMGUzMmRlZTJlMjI5YjYxMWY0IGxlZ2FjeS10cnVuaworNTkyNDYgNTFjMWVhZWI4Nzg2YTY5MmQ1MzY0NmJjM2NiYzk4NTdlZmFjN2Y4MiBweTNrCis1OTI0NyA2NjRiMGJjOTJiOTZmZGU5ZTc1ZTYwODc5YTBiMTdmOWRhZjlhNTYxIHB5M2sKKzU5MjQ4IGRjYzRiYzU4YWY1MmI3ZWM2ZjA1MDUxMmE0NmJjNDNlYTNlMzY1OTkgcHkzaworNTkyNDkgODBiNDJkYjJlYWM5MmJlODllZDE0MGI2OWU0MjNmNzQxYjEwZjZlYSBsZWdhY3ktdHJ1bmsKKzU5MjUwIDJiYWFiZWU0MDcwMmY4NDYwYzFiZTcxZWZhMjlkMDM1NDA4OWYzN2QgcHkzaworNTkyNTEgNGNiOTVmYzQxMjllMGUxMzU4NDFmMDcyZjQ0ZTU1MTBmNjBiZjM5NiBweTNrCis1OTI1MiAzNTFiN2JkNzg2ZTRhZWVkMzNkOTZmZmFhNGQ2MGRiZWVjZTNlOTYzIHB5M2sKKzU5MjUzIDJiMjFmMTU4YWI5ZmYzMTUwODYzOGU4MmFiYmMxODgzMTQ1YjMwMjggbGVnYWN5LXRydW5rCis1OTI1NCBjMjE4ZDFhYzkxNmU1ZmU0M2JkZDNkNWE1YWQ1OGUzNjIwZTJiMjQ3IGxlZ2FjeS10cnVuaworNTkyNTUgMTEwZmY2MTRlYzI4YWRkZWY2M2YxZmNiZjYwZGM2NThkNjBkMDUwOSBweTNrCis1OTI1NiA5NDRhZTM0NWU5ZmZiNDFhOWExOGFlZjIxOGFjOTIwNzYzNTBkZWQ5IGxlZ2FjeS10cnVuaworNTkyNTcgODZhNzM1YjQyYThmY2VkOWZiYmUwYzViYjVmNjM1ZGU3M2QxOTU5YiBweTNrCis1OTI1OCAyMTMyMWRjZjBhYjVkOWY3NmYwNjFjY2NmZTAwZWUzZjc4OWQ3ZDE4IGxlZ2FjeS10cnVuaworNTkyNTkgNmQ3ZmQ5NWVmMTRhZTk3ZDI2MzE3ODU1ZjFhMjk3ZWMzZjFhMWY1ZSBweTNrCis1OTI2MCBlNjM0NTExYjRhZjVkYThjZmU2ODdjMjIzZTg4ZmM1ZjJlMzQ5YzhmIGxlZ2FjeS10cnVuaworNTkyNjEgYjIxYjFjNGYwNDM5NWI5YjJhMWE1MGEwNTk1Y2U2MzYwY2JlMzU5YyByZWxlYXNlMjUtbWFpbnQKKzU5MjYyIDRmMWIyMGVkOThlNWZhNzU3ODA4MDBkNDY4Mzc5MDBjY2U4YzNiMTAgbGVnYWN5LXRydW5rCis1OTI2MyA2MjI0ZGNhYzgwN2Q4NzMwMGM5YjdjOThhNmFkZDc5NmEyMmEzZGU3IGxlZ2FjeS10cnVuaworNTkyNjQgYmZkZWE2NTM4OGMzMWE2NWJhYmJmM2RlODE5ZjFkMDQyOTU0Mzk3MSBsZWdhY3ktdHJ1bmsKKzU5MjY1IDE5OWRmZjg1MzBhZDlkYjk2YjNlMDA3ZjUwY2UwZDM4ZTc0YTc5MGMgbGVnYWN5LXRydW5rCis1OTI2NiA4MjMxNDFhZGIwODAxYWE0M2VlYWJmYzIzY2QxOTFiODc2YzFlYThjIGxlZ2FjeS10cnVuaworNTkyNjggMDg4OWRhZjZkMGQ5NGI1Zjk2N2FkNjk3MGUyYjlkNTE3YWFhNmE2YSBweTNrCis1OTI3MCBmMzI0NjMxNDYyYTI3YzZkMmE2ODRmM2JiNTcwOTE4NWZmNmI4ZjJhIHB5M2sKKzU5MjcxIDFhYzdiYWFlYmNlNzc1NDlhNmM1N2I0MjI1ZmM2ZTFmN2NkNzdlMWQgbGVnYWN5LXRydW5rCis1OTI3MiBhYmEzZDA5NDlhMWQ1NTJkZDdlZWZhMTlkZGM0YTY4ZGE3NjA2ZWUxIGxlZ2FjeS10cnVuaworNTkyNzMgZTdiY2FjODU2MjQ1MmM2OWE0ODIwYzJjNWUzODllNzNmMGFlMGNlNyBweTNrCis1OTI3NCAxZTI2NjAxNWNmNWJhZWNmZDQzMDc4MDRiMGE0ZGVjNjk2ZjUyNzdlIGxlZ2FjeS10cnVuaworNTkyNzUgZmYxNzY2ZWIyZmNlZWYzM2U1OWE2NDUzOTQ3MDliYmUwYTIxN2E5ZCBweTNrCis1OTI3NiAyN2ZkY2EzYWE3ZDQ2OGQwY2FkMTA5OGM5YzBiMjhmMWVmMmRlYmUwIHB5M2sKKzU5Mjc3IDQwZmNhYWRmYjE2NjNmZDlkZmJhZGE4ZjVjNTMyNWQwYmM5ZWI2ZmEgcHkzaworNTkyNzggNGUxZDY0OTEzNjdjNzU4ZDMwNmQyMjdiNmU3ZGZlMDc3Nzc2MWYzYSBweTNrCis1OTI3OSBjZWRiN2FkYzg3YzVmN2MzYTM3ZWFiZjEwZTI3NWNhOTRkM2U5MTg1IGxlZ2FjeS10cnVuaworNTkyODAgMTY5YTgzNjQ1MzY3MTcwOTlhZDQ1YjQxYzE1NWE2NTZjMTc1MTY2OCBweTNrCis1OTI4MSA1NzgxZTE5MjhiY2E2NTYzM2JkMmVjNWMzZWZhYzEzODY5M2VlMjA5IGxlZ2FjeS10cnVuaworNTkyODIgN2YwZTQ4NTM2YTI3YjM1YzAyOWFjYzkzZjlkNDdjM2Q3YThlNDY0OCBweTNrCis1OTI4MyBhMWMzYmQzODI3NzFjZTQ5YmFlOGZmZmMwMDA4NTkzZjQ2Y2Q3ZDhlIHB5M2sKKzU5Mjg0IDkxZDExNGQxYjU4NTEzNDgxYTgzNGNmYjI3YTI5YTJlNTMyMzkwMGMgcHkzaworNTkyODUgNDg2ZGM0ZGYzNzg5Njg3MTBiODA2OTg5NmI5NGUzNzlmZmYyM2FjNSBweTNrCis1OTI4NiAyMGFjNDc3N2MwY2ExMDNlOTJmNGUyOTc3ZWFiOGM1Mjg1MmI3ZWUzIHB5M2sKKzU5Mjg4IDgwM2VkZjliMWRkOTE0MzMyNmVjYzJlNmFmYWM3NWJjZjYzOGI0ZDYgbGVnYWN5LXRydW5rCis1OTI5MCBlYWQwZDQ3YjAxMmI1OTJiN2FiY2QxMTllMDIzNjE0ZjgzYTJjYWQzIGxlZ2FjeS10cnVuaworNTkyOTEgN2VhYjE3YmU4Y2I0OTc4MGI4ZDAzNjdlMDQ3MWJhNTk1MzYwNzQ0MyBsZWdhY3ktdHJ1bmsKKzU5MjkyIDY0NTgyMDgzY2I5YWZhNDNjMDc0NTA5MDAxM2E3YzdjYWJhNDJiMGUgbGVnYWN5LXRydW5rCis1OTI5MyBmZTZiZWRhZmI0NmE2NDYwZWIwMGNlZDA4YWEyYjgxNGQ5ZTc4NjIyIGxlZ2FjeS10cnVuaworNTkyOTQgMzBmNTQ5Nzc4MjhiMzM3NTBiMzViNmNjNjVkMzg2OWEwZWQ5NWEwMyBsZWdhY3ktdHJ1bmsKKzU5Mjk1IDk3MjEwZDg2M2QxMjM0YzZlNGI2M2Q3OTJkN2U5YzA3ODgzNTQzYjcgbGVnYWN5LXRydW5rCis1OTI5NiA0ZDE2ZWUzOTMwMWY5YzIxZTlkOTJjZGY2OWI4YTNiMjdhNjQ0ZGI5IHB5M2sKKzU5Mjk3IDk3MzI2ODVlZWUxNzJhYTc2NjU5ZWNiY2E2ZmYyZTk2NWQxODQ3ZGQgbGVnYWN5LXRydW5rCis1OTI5OCA4YWNkOGY1YzYwODE3NTJhMmM4YTU2MTk5MWVhMTZlOGQ5YTQyYjIwIHB5M2sKKzU5Mjk5IDdlODlmNWNmNmIyMTRmNGJiZjU3NzJkODY3MjBlYTcwZDhjOTYyODkgbGVnYWN5LXRydW5rCis1OTMwMCBhYTYwMTdhMmU4ZjkyNmZkMTE5NDJkNGQ3MDFjMjUzN2Q0NGNiMzg5IGxlZ2FjeS10cnVuaworNTkzMDIgYmU3YTg1YzM0YTRjNGY4NzM4NmU4YzNkZTgwNTJlMDAzN2EzNjhlMCBsZWdhY3ktdHJ1bmsKKzU5MzA0IGI2MzczNDkzMzZmZDlkMTIyN2FmMDczNTMwZjk1MDUzNmM3NzhlYTQgcHkzaworNTkzMDUgZWFkN2EwNTNmNWI0MzRmYjljMzZiOTYzMmMwMzFhNDU4M2JkMzdlMCBweTNrCis1OTMwNiA0NGQwYzcxZGMzYzNiMzg5ZGZlZGNmMzI4NzdmZTUwMWI3MGMwNzg0IGxlZ2FjeS10cnVuaworNTkzMDcgYWVlZmI4OTczODRmYjQwZGE5ZjBlZDZkM2Y1NjFlZmNiYmY4ZGUzMCBsZWdhY3ktdHJ1bmsKKzU5MzEwIDBiZmVjNjA5ODM3ZWM1MDFhYmM4MTY2NTg1NzY2MGJhYjE2YjQ1MDEgcmVsZWFzZTI1LW1haW50Cis1OTMxMSBlMDhiMTJjM2I5MTM2NDNiMGFkNzhjNjcyNDYwYzVlY2ViYTc4ZWI5IHB5M2sKKzU5MzEyIGQ3NTIxMGJiY2E5N2FmODc5ZTY0NjExMzg3NGUxZDY2NzY0N2QzMGMgbGVnYWN5LXRydW5rCis1OTMxMyAyYTQzNTA3Y2Q5NTMyZWIwNDFiZjU4NDE3MTBkYzRjOGI3YWIzMWNiIHB5M2sKKzU5MzE0IDgyNWNmZmQ2YzBjZGE3NDg2NTI0ODEyZDAzMjZiZDc0NDdjMDY0OTcgcHkzaworNTkzMTUgOGU3NGFmMTk3ZTZjMDMyNGQ5YTk1YWY4MzQ1ZGJiZDBjNzlkZmZmNSBweTNrCis1OTMxNiA4NDJiM2Q0NWJmZTRjM2NmN2IyNjI0MmJmYzIyZTgyNWNmM2IzYTI0IHB5M2sKKzU5MzE3IDA0NTA1Yzk4OGFiY2Y3YzNiZWRhMjZjNDg1NjQ3ZDliYTQ0ZTdiZWUgbGVnYWN5LXRydW5rCis1OTMxOCBlY2U2NWM2OWIxZDMxNGUwYTFiNDU2OTcxYTY5ODRlMTg5M2QyYmNmIGxlZ2FjeS10cnVuaworNTkzMTkgYzhiMzM5Y2ZlZjFmZTViNDYyZGJjZDk3ZDA5OGEzYWM4Nzc0MjAyNiBweTNrCis1OTMyMCAzMWEzY2UzOGI1NmMzNWQ5YTA0OGMyYTI4ZGE2YTY2M2YyZDIzYzViIGxlZ2FjeS10cnVuaworNTkzMjEgYzlmYzRiMWY5YmM2OTJmNWVkOTczYzAzMDQyYTgxNDZiNjNlYzFhZCBweTNrCis1OTMyMiAwY2U2MTIyMWM2M2Y4NGYyNzVhZGYyNTQ5YjllMTVmNWVmNTQ3ZmE1IGxlZ2FjeS10cnVuaworNTkzMjMgNjBlZjljNGU0MDEyNGRjMzMzYzljYWIwMmZiYjdkYTI4MjhiY2I1MiBweTNrCis1OTMyNCA3ZTUwNDJlZTk0MjQ0ZmRlZWRlYTJhM2FhNzhlYjIyYTk3Zjg4NjY0IGxlZ2FjeS10cnVuaworNTkzMjUgNTMzMjBkNTQ0YmM3YWQ5MmI5ZDI4YWJiOWM0MGQ2ZDJjNmQxYTU5YiBsZWdhY3ktdHJ1bmsKKzU5MzI2IGYwYjMzMTliNzI2NmI4ZjJjYWFlMjUxZWVlMWJhYjNjYjQxNjQ5ODIgbGVnYWN5LXRydW5rCis1OTMyNyAyZmZhNGY3OTk0YTNlOWM4NDVmYTdjMTI2NDQxZDA0ZWY2ZmVmZjZmIGxlZ2FjeS10cnVuaworNTkzMjkgMTZiYTAwMTY4YzZhZWRhNDZkZTgxOTVmZTEwOGM4ZjQ0MzUxZTE4OCBsZWdhY3ktdHJ1bmsKKzU5MzMwIDFlNzI2YWVhYjZhNTI5YWNjYzViNDhhYWMzNjEyYzc2NTI4Njk2ZDIgcHkzaworNTkzMzEgODhmODY0NDViZTc3M2U4NWEwMWJlZTAzZGE3NDMxM2I5NjgyOWIzOCBweTNrCis1OTMzMiA4Mjk5MWZmNzVjNWE2ZTRiN2ZmMWQ5N2Y2NTgyODY4NDcwNDI2M2M4IGxlZ2FjeS10cnVuaworNTkzMzMgMWEyYTZkZjBmYmUwMTcwYzgxYjNlM2YxMzcxOTNjNmIyNDdjODNhOSBweTNrCis1OTMzNCBmYjg0YmQ5NTAwYTQwZWE2YWRiNDk2MTA4YjRhNTkzMjNmNDEzZmE2IHB5M2sKKzU5MzM1IDU2NTAxMmQxMTIzZGYyZTJhN2NiYjllY2IwNmRkYjAzZDkxYzMyZGQgcHkzaworNTkzMzYgODFlMGMwZTJhOGMxMzg0NGMzNzk3MGRjYjliNWIxNTkxZGVjZWE3YSBweTNrCis1OTMzNyBhZjg2Yjg5Y2U3ODQ3MGE5YjlmYmRmMDViNzI2ZjNmMmIyNzFlYjBkIHB5M2sKKzU5MzM4IDlkMTUyNTMwOTEwYTY1MGQzY2FkNGFmMzA3NDk1YTAyZmRjMDFjMGYgcHkzaworNTkzNDAgMWE3ZGZiNjFiNGQ4ZTE2YjdlNDY1MjE1NWZjOTliOWMxZTRlNWEzMSBweTNrCis1OTM0MSBlZjUzOTliMzUzYzk1ZGE3MGU3ZTc3YjJmMmYzYjMyOGE5NWY0MTYwIHB5M2sKKzU5MzQyIDU2NDlmN2NlMzA2Mjg1NjFjZGZhNjc4Y2EzMTRhYmE1MDY3ZDEyMzUgcHkzaworNTkzNDMgMzM0MTYxZjc0YjhlNWZkZmVhMTAyNzFmZDAxZDNlMTE1NmM0ODE2MSBsZWdhY3ktdHJ1bmsKKzU5MzQ0IDYxMmQ4ZGVhN2Y2Y2UzMjM5MTIzNTg0ZDg3NWY1MzA1NTdhYzA3ZmMgcHkzaworNTkzNDUgZTRjMjI1MDVmMDExY2YwNjcwZjdlZTM0ODY4MGM1MTU1NGU2MjNlYiBweTNrCis1OTM0NiA2M2U2MWM3NzBhOTMyYzg0ODdjNWE3ODU4YzFkYWJhNTEwOTEyNDQ1IHB5M2sKKzU5MzQ3IGMyNzg3ODI4MWM4Zjc4MWI2OGMxMTgwNDU0ZmY2MzQ5NTk1M2MxMzAgbGVnYWN5LXRydW5rCis1OTM0OCA1ZDk5MTA4MGQ4OGU1ZmExYjE0NzQwOTdmNDhiMTQ3YmRhYjgyOTg0IGxlZ2FjeS10cnVuaworNTkzNDkgMjZhNDM3ODYzOTViNGQyYjIyY2U0MWIzOTcxZDU4MTllZDk0ZTMwOSBweTNrCis1OTM1MCAxN2I0MzkwMWJiNDE1ZmJhMjhhZWU5MDljY2U2OGQ2Nzk1Nzc1Y2QzIGxlZ2FjeS10cnVuaworNTkzNTEgMjc4NWUyMTYwZmE2YjI3MjQyMThjYTZmY2NjOTdjYzg5ZDRlMTdhMCByZWxlYXNlMjUtbWFpbnQKKzU5MzUyIDI1MGM0ZmQ0Y2E1NDJkMjQ4Yzc4MjA5MzRlZjIxYTMzZTBhMTgxNmUgbGVnYWN5LXRydW5rCis1OTM1MyA4NjcxNjEzNGVkODc2ZjNiOWY0MTIyODQ0MWQxMWY2NThkNDZiMWQ3IHB5M2sKKzU5MzU0IDEzNDllYTQ0MWU0MWJiY2EzZmY2YmVjY2JkZmJlNmNhNWYxNDBmNTAgbGVnYWN5LXRydW5rCis1OTM1NiA0MGZjODQwNTE3ZmMwMTJiYTE0NzFjNTUyZjBmY2QwZjYwOWQzMzM1IGxlZ2FjeS10cnVuaworNTkzNTcgZGFkOWVkMzM5YmMzNDU4ZDYwZDk1YzRjN2U1ZTUyZWJiZTI5NmZjZiBweTNrCis1OTM1OCA5MzQwNjk4YWU0MjEzOTA4NmUyMzdiZmI4MjgwNjQ3ZmQ1YjhhZWM0IGxlZ2FjeS10cnVuaworNTkzNTkgNzlhZmE0YzU1MjExZGZhYjU4YWRmNGUwMDRlZDQ5ZWQ3ZDRkNjA4OCBsZWdhY3ktdHJ1bmsKKzU5MzYwIDYyMDBhNDQ3ZGFhMTY2Nzc5NTAxNTBmNjdjMjgwMDI3ZTgxZjMzNTAgcHkzaworNTkzNjUgMzIwZjdlYzYzZjBiZGZkMjdlMmRkYjkxYzA2NWIyNmQ1NTQwOTg4ZCBweTNrCis1OTM2NiA1OTBhMTQ0NzYwMTlhM2MyYjYyYzAyNmQwMmU2Yzk5M2NjZmY5NzczIGxlZ2FjeS10cnVuaworNTkzNjcgZDMzZjhjYzcwN2NiZmUzYjkxZGUzZGM0ZTQ5ODA4OWEyN2VlMjgzZCBsZWdhY3ktdHJ1bmsKKzU5MzY4IDg2MGNlOTc1NWQxNWJkNzg1MTA3MTNkYjM0MjNlMWYyOGFkNDcyMWIgbGVnYWN5LXRydW5rCis1OTM2OSA1NWMwNTA0MjMwM2IzOWYwNTRjNDcyMTNmNTYxYjBiZjU5N2VjNGFhIGxlZ2FjeS10cnVuaworNTkzNzAgYTFiYzY1OTU0YTljYmMxZTE3ZWNhODViNzBiYmU3MDc3OGU5OGFhNyBsZWdhY3ktdHJ1bmsKKzU5MzcxIDA1ZGE0OWViMTJjMTRmMDM0OGE1ZWMzYzMzM2E5MzE0MTgwNjJkY2MgcHkzaworNTkzNzIgMWY3MjJiMDg1NDAyN2M1ZWMyZDcwYzI0ODljY2I0YzQwYjQ2OWE2MSByZWxlYXNlMjUtbWFpbnQKKzU5Mzc0IDUzODQ3NmI2ZDdlMDUyYjUwYTgyZmRiMWE4MjRiZjA0MWUzZTg2YjUgbGVnYWN5LXRydW5rCis1OTM3NSAxN2MxNzgwN2E2MTE3OGFkNjg4YWU4MWI0MTE1NzZmMjk0ODVmNWJjIGxlZ2FjeS10cnVuaworNTkzNzYgZDY0YmViOGZhZDA2NjE3N2Y5MWVlOTFlN2ZmNzZhYzBjOTM3YjI4NyBweTNrCis1OTM3NyA4NWU0YmZmMzdiYmRjYjZkNTZmMDJlZGY4NTMyM2IwNWExOTI2YzRhIGxlZ2FjeS10cnVuaworNTkzNzggNDRjMDkwYzc0MjAyNjAyM2NhMGYwYjczMTUyNmIzYzU3NWFkMWU3YyBsZWdhY3ktdHJ1bmsKKzU5Mzc5IDFkOThmYzI2NWY5OTJlNTY2Y2NiYmYwMmQzZmJmYTI4YTUzNzQ4MGUgcHkzaworNTkzODAgOWFkNGFlZGYzNDliZTkyYTI4NGQzMzdmZDNkZDI4YmEwYWUxMTAxNCBsZWdhY3ktdHJ1bmsKKzU5MzgyIDZlZjhiNWI4ZTVkNmZmZThiMDRmNjc2OGU1YmYzZDAxZjBhNjI4OTMgcHkzaworNTkzODMgYWZkMjk5NmYyMDIxMjQ3NDk2MjA4ODliNjIzOThmZmI2ZjQ0ZTE3NiBsZWdhY3ktdHJ1bmsKKzU5Mzg2IGE1M2VmNzc4NTkwZWJiM2QwZDY2ZTAyZjIwZmY5MTFmZjIyZmYwM2EgbGVnYWN5LXRydW5rCis1OTM4NyBiY2MxNzNjM2FkNzA5MmIzYjY3MGUyMGM5MWEzZmJjMDliZjExZWExIGxlZ2FjeS10cnVuaworNTkzODggZjExZGQ0ZDMxNWRkMGRhNjdiNzBkYmEwNGZhNWExMWJkYWNmOWFiYiBweTNrCis1OTM4OSA3NGJkZDUwZjA3ZTVkYzNjNDhhNmY0MjJjOTllNmZiOWJkMjEzOTU3IGxlZ2FjeS10cnVuaworNTkzOTAgNzFhZDVlMmJlZGRhMjdkMDljNTE5YTE5ZDYzNzYxZjYxYjBkYzAzNCBweTNrCis1OTM5MiA5MzllODEyY2MwOWNlN2IwMDliNDNhYjkyMzBjZjA3MTFiYzU5NTE3IHB5M2sKKzU5MzkzIDUwYjAzYWZhMGJiZTc5MzM3YWZkMTI4ZTcwMTMyMjJhNmE3ZGE5OWUgcHkzaworNTkzOTQgYzIzMjgzNmNlNWM5NDM2NDU0MDA1MThmM2FmYmRkOThjZTMwZGMxZSBweTNrCis1OTM5NSBjZTI4MGEwNGY1NWUwZmU4N2I1ZTljYTFlYzYwZDZhMTFlYTY1ZDViIHB5M2sKKzU5Mzk1IDY1ZTgyMTQwZTI4MWJmMjZmMmUyMmVkYTA1YTdmOTk1NmM0MjBmOGIgcHkzaworNTkzOTkgMmZjZTk4OWRhMDIxM2NhZDQ4NjQ1MTNjMDM0ZWRmNTA3Mjg3NzhhNyBsZWdhY3ktdHJ1bmsKKzU5NDAwIDMzNTZhZDYyYzJhMzY5OTcxZWViNzVmN2YyYjFlNjg1OGU1NDIyY2UgbGVnYWN5LXRydW5rCis1OTQwMSA1ODJkMmE4Mzg2M2NjNDM5MDM1MGMxNjNiOTEyODNlNDJmMmYwZjA0IHB5M2sKKzU5NDAyIDgwODg0NjQzYTZmOWU3ZDEzNmM5NjI3ZDEyNzE0NDdlMDc4M2NiOWUgbGVnYWN5LXRydW5rCis1OTQwMyBjNmZiMzkzYjZjODE1OGIyMDU5ZmM1MGIyMTg2ODlmZDI0NGVjNGU2IHB5M2sKKzU5NDA1IDcwY2M3Zjc0MGQzNDcyNjBhMGJlNjI5MDdiNGI2NjgwMWNmYTRkYmMgcHkzaworNTk0MDYgMjJlM2Y1YmQxNDA3ODYzMzhhZjQ2ZTRiMmUxY2JmYThlZmNmOWI2OCBsZWdhY3ktdHJ1bmsKKzU5NDA3IDRkZTU5NDc0MGE4OGY5OTZiNzAxMDYzYzI2OWE5N2NhNmY5ZTYxYjIgbGVnYWN5LXRydW5rCis1OTQxMCBhNzFhNzFjYWI2MDgyNWFjMTcyNmU1MzBjYzllZTYyY2FhNTQ0NDVmIGxlZ2FjeS10cnVuaworNTk0MTEgMGJiMTA4YTNjMGM5N2NlOGI0Y2NlNTkzN2E1YWU5YmVhZmE3MzdiYiBsZWdhY3ktdHJ1bmsKKzU5NDEzIDc3Y2I4ZmYzNDkxMmFjZDA3ZDNiMTllZjUxYTRjMzkwMWMyOGI2MTEgbGVnYWN5LXRydW5rCis1OTQxNCBhOTg3N2I3ZWU4NWRlYzhjOGNkNGU5N2I5YmU2N2Y2N2VmYjgyOWQ4IGxlZ2FjeS10cnVuaworNTk0MTUgNjI0ZjUxMWNlOWYyNDhkMzhhZDA4YTAyNzNjOWQyNGUwZDQ0YzgwMyBsZWdhY3ktdHJ1bmsKKzU5NDE2IDAzOTQ1YTFkNGZiM2NmNTlmODIxMmZmZDdiNDYxNTAyNDYyNjdkMzggbGVnYWN5LXRydW5rCis1OTQxNyA5YTk3NmE2ZWU5MzY2OTFlZjlhNDNlZjBjNGFhZjkzODViYTcxMjNlIGxlZ2FjeS10cnVuaworNTk0MTggMTE4ZTZkNjhiNDRhMTI4OGFiNzZlODQ5ODMxNDMxMTdkNDFmNDcyOCBsZWdhY3ktdHJ1bmsKKzU5NDE5IGYyZjczOGE0MzdmODc5YzY0M2RkNDY0NjRkNWI5YTRjNzhhY2UzYTAgbGVnYWN5LXRydW5rCis1OTQyMCBhZDhiODA0NjA2NDRmMWY4ZmE2MzU0ODU3YzIzNjQzZjkwNDZjOTJhIGxlZ2FjeS10cnVuaworNTk0MjEgYWFkNjVhMjQyNGUzOGQ4YTcyYTdjMGEyNjU2ZGYwMzlkMTA0MDM4OCBweTNrCis1OTQyMiA0ZWU3NDMxMGVjZjk4ODc3NGIzNGFiYTVkZmI4MmE1OGQwMmI1MGU5IHB5M2sKKzU5NDIzIDE3NDQ4ZTVlOTY3MWRhNGI5NjE5NjMwOGY1MTNmNjAyMmQ4NThkMDEgcHkzaworNTk0MjQgNjk5ZmNkZjViYmQ3NGIwMTA4NDRmZDQxYTE3Y2FhNmVhOWNmY2I3MyBweTNrCis1OTQyNSA2YjUxN2FjMTBlOGVmOGUyMzdhZDFiNmJjYWViYjE2M2M0NTQ4N2I3IHB5M2sKKzU5NDI2IDkxY2NjZTc0MWQxMTQxZDk2ZDNhM2YzMDNjMjU0MTE2NDVkZDcwOWIgcHkzaworNTk0MjcgNmQ1ZjA4NjAxZjRhOTViNDIxNWZjNWM5YWY0N2JmMWRmYWMyMTQyYSBsZWdhY3ktdHJ1bmsKKzU5NDI4IDUwYTUwZTc1MjE0MjNhMjcxNTM4MzkzNDY1MzI5MGE1YTg3MGNhZjAgcHkzaworNTk0MjkgYTVjNDczOTEyMWUxNGZkM2RhMTc0OWE1YjBkZWM2MmU5NGVmYzk4YiBweTNrCis1OTQzMCA2MWRmNWY1Mzc5NjllNmFhZWNiNDgyZDM2NTQyMDFhZjk0NmYyNTg5IHB5M2sKKzU5NDMxIGY2N2VjNGViNDc4YTg5MDhjOTAyMzFhYTIwZjA1OGU2ZTljMGVkY2MgcHkzaworNTk0MzIgNDRhMjRiNTliMTZkMDIxMDY4MmRkYjAyYWFmYmFkYjFjNWVjNTY0YyBweTNrCis1OTQzMyBiZTNiNjYwMWY5ODlhNjhlNWEwMTljZDgzODY1NDcwZmFkOWQxYmU0IHB5M2sKKzU5NDM0IDM2OWE0ZTA2ZmQzMDExNjJiODdmYmY4MDg5MzM1MmJkZmMwNGY4ZWIgcHkzaworNTk0MzUgNmNlNmUyZjNkY2IyZDY4N2Y5NWFkNDUxNjJjMTdkMzNkMTY0MDM0MiBsZWdhY3ktdHJ1bmsKKzU5NDM2IDVhYzg3NGQwOTU1NjM2ZDUzOWNkY2QxOTk2MmEwZmM4ZGIyZjgyZDIgbGVnYWN5LXRydW5rCis1OTQzNyA2NmRiZTEyZGRmMzFkNzZjNDhhNjAzYmQ5MGVmMDM0MzFmZWMyNjE2IGxlZ2FjeS10cnVuaworNTk0MzggNDBiZmQ2ZjFjYzE2OTAzMzIyYTE2YzJiNzBkMmQwOTIwZWY5NTExOCBweTNrCis1OTQ0MSBkNzdmZDFiOGMwYzU0NzMyMDkzZjE0NzEyM2EwYzQ4ZmUzYzI1YTMyIHB5M2sKKzU5NDQyIDVhYmZkMDdlOTdkNDg5ZjI1YzVkZTIwMmVmNmYzNGVjMDQ0YmIyYmMgbGVnYWN5LXRydW5rCis1OTQ0MyBhYWMzM2VlMWE4ZmM3MzI3N2RlMDEyZmRkMWI1YjczMWFiMDc2OGQ0IHB5M2sKKzU5NDQ0IDg4OWE2NDIxZjEzNWI1OWVjMjQyZDU0NTA3MmEwZThmOWI3MTA4Y2IgbGVnYWN5LXRydW5rCis1OTQ0NSA5Y2YyYmY5NDYxYzQxMGQ4NThlYWNjMWQ2YWViYTllY2Y1NDI4NDNiIGxlZ2FjeS10cnVuaworNTk0NDYgMzNmZjQwZTZlMTM3NTg5NTZlMWZlNDZmYTNlZWZjNGRjYzJjNjhiNSBweTNrCis1OTQ0NyA1OWU2NGZhM2FkMWQ5Y2EyZTc3NTk5OTMwYmU3NWYzYmIyOTMxZjQyIGxlZ2FjeS10cnVuaworNTk0NDggMjAyOGZlYjk0YjU3NTUyMDQ5YWU1ODdjNDc0NTc3YzdlMWFjYTIwZiBsZWdhY3ktdHJ1bmsKKzU5NDQ5IDQ0NGRhMDhmNzhhNGRhNzlmNmM3MTdiMTdlYmEyMDdlZjYwZDE1YWUgcHkzaworNTk0NTAgNjBhNzQwZjVhNTdhM2ExN2U5ZGE2MmQ0NzY2ZGZiZWI4MDM0YjM0YyBweTNrCis1OTQ1MSBhMzg2ZWYyOGIwMDg3Mjg4MzZhYTk0MzRkOGU0ZGVmYjc5MmQ5Zjk1IHB5M2sKKzU5NDUyIDEyY2Y5ZmZmOWQwYWVkMzZkNmEyYzZmZTdiNDQ2N2Y4OTg3YWU1YjUgcHkzaworNTk0NTMgNmIzNWRmNDBiY2FjYWZkNmQyZDVjYWViZDkzNjkwZjA2MDY1MjgxYiBweTNrCis1OTQ1NCA3NmNlNTk3YzcyZWUwZTEwNTVlNWM3OTA3YThjZjU4NDJkZTcxODlhIHB5M2sKKzU5NDU1IDQ3ODk1Y2E2ZjBjYmE4ZmIxYThmNzU5MDI3MTVlOGE1MDNlMTA3ZjUgbGVnYWN5LXRydW5rCis1OTQ1NiAxYjBjZTlmZmE5NzI2ZDUzOTRjNDhiOWI1OGQ5MTMzYjM1ZmMwNTMyIHB5M2sKKzU5NDU3IDY4MmQ5Nzg4YTAzOGU3MmZiYWJiMTAwMzQ2NzNjMWM2ZmQwMDQyMzMgcHkzaworNTk0NTggNjZjZTMzMTRjMTk4MjBhNzFhYjk0YTg2YjI5MGQ5OGYyNzI3ZWM4ZCBweTNrCis1OTQ1OSAyNDc0OWEzODA0MDkzNDAxZGU4MDMxNDA3Zjc4MGNlNjZhYjBkY2NkIGxlZ2FjeS10cnVuaworNTk0NjAgZWI2NWUxMDVlNGI4Y2RhZGEyMDBhOTUyYmRmYTk0YTQ4MjU4YjU3YiBsZWdhY3ktdHJ1bmsKKzU5NDYxIGE0YWFiNzJjMmNjMGJjNDk0MzE5ZDIxMTA1ZTU3YTVkZTg0NzhlZjMgcmVsZWFzZTI1LW1haW50Cis1OTQ2MiAyYzZmZTJkY2M4OGVhMWQ4MWJjNWMyMTg5NjQzNWQ2ZjljNTEyZTNmIHB5M2sKKzU5NDYzIGU2NWU5YzY0OWNmZGFmYjM4YzM0YTg4NDNhMTlhODMyOWYyYmM0YWUgbGVnYWN5LXRydW5rCis1OTQ2NCBmOTA5ODcyOTE3Yjk1ZDliM2NkZDlmZmFlODU0NTA5NTNjYmI1NzUyIGxlZ2FjeS10cnVuaworNTk0NjUgN2FlNjA0YjM1MzNiNTM2MzU0ZGEzMWEzYzNlMzdmOGI1MDk2N2I3ZSBweTNrCis1OTQ2NiBiNTIzOWNjZjk0YjViYTczOThhN2M3MTdjNDYxNDgzYmQ4MGMwMmQwIHB5M2sKKzU5NDY3IDcyN2FmMTYxY2E0NjRhYmQyNzEzMDQ0YWNkZjVmNTEzNGE2ODAzYTAgbGVnYWN5LXRydW5rCis1OTQ2OCAyZTE5YzNlNTExYmY1OTM5ZjYzZjQ2ZWI2NDNkZTBlNzEyN2IwZDE2IGxlZ2FjeS10cnVuaworNTk0NjkgM2UwODY3YTA3NzY1N2U0MTQ4NzU1MDQ0ZTFiZDgzNjI0OGQxMWEyMSBweTNrCis1OTQ3MCBlYjIyNjBkY2IzNjVmZGU2NTExZjQxYWZjNGQ4MjRhNGYyOTI4OWViIHB5M2sKKzU5NDcxIGE2ZDEwNTlmMjJlMmNkMTQwNGJhMGEwMmNmMjI4ZDUyNDdiNDRkOWEgbGVnYWN5LXRydW5rCis1OTQ3MiA0ZWJiYTliMjY4OGY0MDcyYzE3ZjU5ZWI0YTk0ZDQwMzBiYjU1OGUzIHB5M2sKKzU5NDczIDY2ZDQ3OTZlZTkyY2JmYzQ2OGRmOGRmNzZjM2YyMWM3M2Q4OWUxZjggcHkzaworNTk0NzQgOWEwOWQ0NDJiY2UyN2IyZDczNzZmZDM5YmIxMWJiMGM4ZTFmNzk3NCBweTNrCis1OTQ3NSA5OTI5NzgyZjVjYjQ4ZDA3YjQ0NTEwNmMyMzVkYjIyNjI4MWJjZTgxIGxlZ2FjeS10cnVuaworNTk0NzYgMDE3MDcxNGViMDQ0MjE1OGMzMTBhMjRmZGI0ODdmZGFhMTE3MWUyOSBweTNrCis1OTQ3NyBlMTc2YjRhZWE5YzUwZjVhMTlkMmFjNWI0M2Q0ODZiNmNjMTRmZTVlIHB5M2sKKzU5NDc4IGMyZTcyZmViNTNiMzZlYmMxNTBhOTY4MWI0MThlOTU1NzA4OTJiMzAgbGVnYWN5LXRydW5rCis1OTQ3OSA1NDEwNTJiMDQ0ZjA5ZTMxMDk2ZGRkOTdlNjI5Y2JlYjhiN2M0MDVmIHB5M2sKKzU5NDgwIDdhOGM4YzU2ODVmY2NiMTRmZmNiNmY2ZjdjYTYwYjg5N2Q5MzlmNmEgbGVnYWN5LXRydW5rCis1OTQ4MSA2YWU5NGEyYmE1ZGZhZmEwMWEwZTQzOWQxNzU5NTFkYTlhYjdkNjQwIHJlbGVhc2UyNS1tYWludAorNTk0ODIgMjI2YTA2MmFiNDNlZjc3Nzk3Nzk0YmFjODVkMWUxODVmNTYyYmU1ZiBsZWdhY3ktdHJ1bmsKKzU5NDgzIGQ4ZTA2NTQzY2RkODBlMzQ1ZWRlMTZjNmUyYTI3ZjA0OWU3ZDVhYzUgcmVsZWFzZTI1LW1haW50Cis1OTQ4NCA1ODkyNjJkODFlMjk4ZmVlYzcwODYzMmZkYzhiNzg5YzE2NWI2MjdmIGxlZ2FjeS10cnVuaworNTk0ODUgZjA0YzAzNjVjOWFhZmJiMzllOGI2MWRhYzZjZDYyZWE1MTQwMThkZSBsZWdhY3ktdHJ1bmsKKzU5NDg2IDMwOTZiMDEyNzMzZTE5YTRiOWJjYTM3MzA1MDE5ODIwNmYwMGY5YTYgbGVnYWN5LXRydW5rCis1OTQ4NyA2NmVkNmUwM2ViYmRhOWVmYTMyMTI5YWQ3NzYyMzkxZDEyZmRlZGZmIGxlZ2FjeS10cnVuaworNTk0ODggNzE2MjM4NzgwNTdiMmU0ZmRiZGJhMmFiNGY1ODgwMTA4NzgwYzk4NiBweTNrCis1OTQ4OSA0NGM0MThiMmJmN2Y2NjA5ZWY3MjEwYjAzMzJkYzgwNGZmMGY1NWM0IGxlZ2FjeS10cnVuaworNTk0OTAgN2E2MmM2ZDkxMDdkZjk4MmRmMWY3NWJkYTM1NTVlYzMyMzQzZGU5MSBsZWdhY3ktdHJ1bmsKKzU5NDkxIDI5NGIxYTc5ZjIwMTlhYmMwMmQ2OGIxOTViMmU5YjY5MGZmOWJiMzggbGVnYWN5LXRydW5rCis1OTQ5MiA2MzVhMjMyODAxMTI2M2QyOTU3Y2FhZmU2M2Q0YjljNTYyZDIyMmFmIGxlZ2FjeS10cnVuaworNTk0OTMgYTMyN2YzZTI2MTU2MTFiYzU0ODM2ODNhMGUwOWIzYTQxMDJmYmRlNiBsZWdhY3ktdHJ1bmsKKzU5NDk0IDNjOGI3MDJlNWYyMDcwZWVjZjEwNDcxZjRjZjUwNWE3OTcyMTYzNWUgcmVsZWFzZTI1LW1haW50Cis1OTQ5OSA5NjFlODljYzc5MTFjMGE2YzAzOTcwOGMzMTU1NTY3MzE0MDE0ZTgxIHB5M2sKKzU5NTAwIDkwNWE5Njk5N2I3YzgwZWIyZGEzMzM3YmFjOTViODc4ZGNkOWJjN2EgbGVnYWN5LXRydW5rCis1OTUwMSBkY2E5NTk1NjczMGZjM2Y2MTk3MGE2ZWZhM2M3YjlkMDZiMWVhZDU4IGxlZ2FjeS10cnVuaworNTk1MDIgN2RhOTQ3NTdlYzViZDNmNzhmODZmYjY5ZmNkMWUxOGU4ZjE5NWMwOCBweTNrCis1OTUwMyAyMGVkMWQ0MTU0MDllYWMwYTkxY2U3MGU3MGQyYjQ4NjkyMGNhNThiIGxlZ2FjeS10cnVuaworNTk1MDQgMWJiOWIwN2EwMWRkYTFlYjkzY2U0ODQ2MjhjOTNlMWY2YWVkN2JkYSBsZWdhY3ktdHJ1bmsKKzU5NTA1IDQ1Yzc4ZTUwY2JkNWUwZTVlN2RhZGVlNzc4MjJiNGJiYTY2ZDNkY2QgbGVnYWN5LXRydW5rCis1OTUwNiAxOWY4OTRhZTg2NGFmMWRhMmEzYzI0ZTM0Yjg3YzExMjYyNWY5Yzc1IHB5M2sKKzU5NTA3IDE0YzVkMjc1ZGRmMTQwM2E2ZTJkZWM3MDZlNWM1YzNlZTZlZmUzZjggbGVnYWN5LXRydW5rCis1OTUxMCAxMTU3MDY4NDYyYjUzOGVjOGJhMDY0YjM5N2UyNzcyNDNmYzVmMGNmIGxlZ2FjeS10cnVuaworNTk1MTEgMDZkMTIyYjRiZmZkN2FlZDhiYWU0NmVjZTU3OGE1OGI3NDlkNDAzNyBsZWdhY3ktdHJ1bmsKKzU5NTEzIDJjZTUwYTI2MGY1M2Q0MjNiOTYzMWJlNGYxNmM0YjI4NjBiOTBjNTIgbGVnYWN5LXRydW5rCis1OTUxNyBlNzBhY2JmMjZjZGE4ODBlMzBjOGZhMjE4OGQ2YjY2YjBjYmM4OTNjIHB5M2sKKzU5NTE4IDMwMzcyN2M1OGI1MWUwMTRhNjM2OWRmNzE1ZWIwMTI2M2U0YzI0MTggcHkzaworNTk1MTkgMDQzY2E5YjY2Zjc5NzIyMDA5MzU5ZGM3OWNlOWMyNWU0Njg5ZjQxMSBsZWdhY3ktdHJ1bmsKKzU5NTIwIDYxOGNlMjgxYTU1Zjg0NTIxZjZiMmE0ZDk1ZDllOWU5YzNmMmI4NjQgbGVnYWN5LXRydW5rCis1OTUyMSA0YzBlYjU4NzQ4MmY2MGNhMjExZGNkODJjNmUyNDA5MDQ0YmRjMjg3IHJlbGVhc2UyNS1tYWludAorNTk1MjIgYWFkOTBlYmJmYjUwNGJkNTgzNjNlNzZiODdiOTU2ODg4YWViMTkwZCBsZWdhY3ktdHJ1bmsKKzU5NTIzIGE2NDlhYTUyYjA3OTkwNTAwMTNhYjIwNDFmYzZiMzQwZDk5NmM5OWMgcHkzaworNTk1MjQgZWUxMTc0NjIxMmIyYmQyNWU1ZmI4ODViMTZmNjA2ZDdiMWFkMDBkZCBsZWdhY3ktdHJ1bmsKKzU5NTI1IDVhNTBhNWI1NzBiMDJlNmYzNjJiYjZlMjM5ZDA2NGZkN2YwODFkNDMgbGVnYWN5LXRydW5rCis1OTUyNyA5YjQwYWQwNTdkNTllMjA3Y2FmNTE3YjIwMjljMTAwODcyOTVjZGZjIGxlZ2FjeS10cnVuaworNTk1MjggMjExYWJjZmI0OTI4YjJjMTcxZDVlMjhiYzkwMTk1ZWEyNjI3MzExMyBsZWdhY3ktdHJ1bmsKKzU5NTI5IGE0NjM3NDJmYTQxMWI4OThiMjJlOGQ5ZDRjNzAwODM5OGM5NGVhYjggbGVnYWN5LXRydW5rCis1OTUzMCA3NzkxYTVlYTE1YzM4NGVlMmU1MzcxZjY2MmFmMjU0MDZmMzllMjJmIGxlZ2FjeS10cnVuaworNTk1MzIgZTk3ZjEwNWQxYzgzNDBmY2FiYWZiMmIxMWFlY2VkMzVmNWRhZjI0OCBsZWdhY3ktdHJ1bmsKKzU5NTMzIGExNDQ4OWY2ZGI2ZjkyYjg3NjNmNzkwMTY3YjdjMGMzODIxN2FjNGEgbGVnYWN5LXRydW5rCis1OTUzNiBhMmQwYzZhODg5MDk4MDEwOTU2NDEyYTE2MjZkNWI2OGMxZDE3NTFiIGxlZ2FjeS10cnVuaworNTk1MzcgMGE1NDQ1MjhkYzlmNWQ3Nzc2NWY2Y2MxMzQwNjdjMDI3ODlmMGRlOCBsZWdhY3ktdHJ1bmsKKzU5NTM5IDA1YzUwMWE5NTMwODc1MTFmMTViYWEwZTFkOWNlZjdjOGNlYzE0NTIgbGVnYWN5LXRydW5rCis1OTU0MCAwOWY3NDMxNmQ1ZmI1NTgwYTlmNmI3ODBhNWNkMjdjY2UxZDA4MDYzIGxlZ2FjeS10cnVuaworNTk1NDMgNzVjNmJmZDNiMWYzMmVjMjE3Y2E3MzFlNWM1NTRmOWZmMzEwZmFiYSBweTNrCis1OTU0NCA0YTZjMDZhNzdkZWIxNmEwNzhjNDM2MmVmYzRlZDY3OTk0YjJlYmY5IGxlZ2FjeS10cnVuaworNTk1NDUgYzBmMmNmNDM4OWM1MDI4ODgwMWI3ZDhjMTVmMmNlYjRmMjM2MjA1YiBsZWdhY3ktdHJ1bmsKKzU5NTQ2IDExYjZmNWI2OGFkMWE3MjllMDdjOWEwODM5ZGI3NzlmNjZkZGQwMzQgbGVnYWN5LXRydW5rCis1OTU0NyA1NmYzNDJjODRlODcwNzVmZjZjOTZhNjc3NTZhOWVmODdjMzIxZDY5IGxlZ2FjeS10cnVuaworNTk1NDggMDdhYTE5MTcwYTY3M2RhNmIzZThjNGM2NmJmZDg2OGIyZjkwYzBlNCBsZWdhY3ktdHJ1bmsKKzU5NTQ5IGI1YjMwODBiMzYwZmRlYWU0M2FlYTgwN2RjOTBhNjNjNWIyN2QyNTQgbGVnYWN5LXRydW5rCis1OTU1MCBlYWIwMDJiOGUxN2U4ZTJlODQ4NzY5MWQ3YmY4MDkxNDA3MzZlMGJkIHJlbGVhc2UyNS1tYWludAorNTk1NTEgYjU5YzMyOGJmYTYyM2UwZjk2NjRhOTYyN2I5NTA2NWE5MmFmMzE3MyBsZWdhY3ktdHJ1bmsKKzU5NTUyIGE5OTEyOGY2Yzk3ZGYzOTMwZmMzODk5NmIwN2EyOTcwOWQwZDNhNWIgcmVsZWFzZTI1LW1haW50Cis1OTU1MyA3YWMxMTdiM2JlMzdlYjdhZTMyOTcwNzg3ZTYzMWIyMmFiYTA0OTk0IGxlZ2FjeS10cnVuaworNTk1NTQgMTVmYmU3Yzc5Mjg0OTczOTE3NzExNjMxNTBmZDBlODlkYjYzMTk2YiBsZWdhY3ktdHJ1bmsKKzU5NTU1IDk1ODU4MTA5ODE1MWFiNzYxYjYxZmZjOTkxN2U2MjYxMDk1MDgyODMgcmVsZWFzZTI1LW1haW50Cis1OTU1NiBkYzg4NGI2MDUwZDQ1ZmI1MzA2YjUxN2E0YzM5MTUzZDA4MDk4MDcwIHJlbGVhc2UyNS1tYWludAorNTk1NTcgZjhkMGZhZmZjZTg4NzZmNTU0YmY2ZTE4NWNkMjllNzAzYmRhNjFmZCBsZWdhY3ktdHJ1bmsKKzU5NTU4IDFkNjlhYWJmNmY3ZjIyNzQ2YjRjNzIwM2FmNWM5YjAxOWQyMmUzMmUgbGVnYWN5LXRydW5rCis1OTU1OSBkNTFiMzljMjE2MGEzYjg1NWY0ZjI2NWM0MjBjNDY0MGQ3ZjU3NGRhIGxlZ2FjeS10cnVuaworNTk1NjAgYTI4YWM5YjY3YmVkYjU2YWExZTI0NzM4MThjZmMxMjk4ZmUxZTFkOCBsZWdhY3ktdHJ1bmsKKzU5NTYxIDYxNmZlYzBlYjUxNGI2NTEwNjBjNDA5YTM5MjhkNGE5YjA1Zjk2YjIgbGVnYWN5LXRydW5rCis1OTU2MiBlMmVmZmVjOWQ1YWQ3Y2YwOTZmZGM0MGM2YmQzNWFhNWNiMWVmZTNmIGxlZ2FjeS10cnVuaworNTk1NjMgNGRjMDE0MDJkNzhhZmUyYzliNGE0YmQ4MDA0ZWIwOGUyNjQ3MzM1ZCBweTNrCis1OTU2NCAyNjM4NGI4MTgwYzdhNTVjZDZhMmVkNDQxMDdjZjRlMzM5MDI1ZWM2IGxlZ2FjeS10cnVuaworNTk1NjUgODZhMjY3OWRjYTQ2NGEyODRmZDAyYjgxNjQ2ZjI2OTIwNDlhMmNlOCBweTNrCis1OTU2OCBmN2JjNzkxMTJiY2ZhODliYmVhYjAzNWQ4YmNlYTQzZTgyZmU4OWQ5IGxlZ2FjeS10cnVuaworNTk1NzIgNjMxNGI5ZjhhN2UwM2YwYzU3ZTk5NTQzOGE0OWQ4OTFjZmFkMGQzMiByZWxlYXNlMjUtbWFpbnQKKzU5NTczIGIxMzQ3YzY4ZDQ1Njg1YWUyYzgzZjUyYzIwOTI4OTQ2NjgxZWYzOTQgbGVnYWN5LXRydW5rCis1OTU3NCBiODliMDMzNDM3MmJhODNhYmY0ZDJmYzI0NGFjMTZiZTNkZjk3MjgwIGxlZ2FjeS10cnVuaworNTk1NzUgNTFjMTc1Yzg2ZjM2YmIzYmVkMTMzYTFiMGExNDhmM2UyODE5ZTVjZSBsZWdhY3ktdHJ1bmsKKzU5NTc2IDE3NGUwYmNiMmMzYzEzMmEyNmM5ZjA0ZDNjZDYwZmQ5ZjdkZjFjZmEgbGVnYWN5LXRydW5rCis1OTU3NyAwYWQxMmM3OWFmMTg1ZGY4MzhmMjE2Zjc3NmU3NDQzZTFjMjM5MTcyIGxlZ2FjeS10cnVuaworNTk1NzggYmI3MTZlYmNiMDgyYTFlNzk0NDJlNjI1ODEzZmExNjNiYzQ2OGQxYSBsZWdhY3ktdHJ1bmsKKzU5NTc5IDhkNGQzMzUzNjk5NTBjMTIwMmIzM2ZlOWE1OGQ1NmRlMTVkY2E2MjIgcHkzaworNTk1ODAgYmFkNTVhNTg1OTU5YjExZjkzNDFjOTZmNjE0ZWFiMWE3NTU0NWVjMiBweTNrCis1OTU4MSA1NWRhZGM4YjY4ZmMxOTQyZmNlMzZiZDczZTQ4NTJmYjZkODljYTA4IHB5M2sKKzU5NTgyIDIxMGM1MDdkYWM5OTYxODQ4MjE3ODFjYjEzYWI4ZmVlYjljOTMyZjMgbGVnYWN5LXRydW5rCis1OTU4MyA2ZWEwZTE1Y2U1NzM2ZGY3NmRhNTFiMjVhZWNkNDNmZmY3YzMxZDY0IHB5M2sKKzU5NTg0IDhkZWFkNmY4MWJhZTAxYmU0Y2QzNGJjOWI1Yzk0YzViZDNjOGYwNGIgbGVnYWN5LXRydW5rCis1OTU4NSA4M2NlZDQxNzdlYWNjNDkzZWI1ZDU2ZTRlMGQwYzI0NzFkZDgwNDBjIHB5M2sKKzU5NTg2IGVhZWZiOTNiNWVkNDQzODQwNmZjN2Y4MGExMGFjMDM1MmNiZjVhZWYgbGVnYWN5LXRydW5rCis1OTU4NyAzMmRkOWI3NzczYzNjMjFkMWY1MTZlYWVhOGZmOTgyZGM2MDQxYjYyIHB5M2sKKzU5NTg4IDQ0NTQxMDc0NGZkNjM3MzU5NzEzZDBkMjMxNzZkOGFiNDk1YmJiMzYgcHkzaworNTk1ODkgYmNlNzBhNDc3ZjFkYTNkYTM0OTNiZWI0Y2RjZDVmYzdlMzljZTBmZiBweTNrCis1OTU5MCAyYjAzY2FjYzFiNmE0ZTFhYjU4MTI5YmViZjBjNDU1MmM5MThiYTI0IHB5M2sKKzU5NTkxIDk1N2JhYTM3Y2UwZDRmNGIxNWYyN2JkMGI0MzA0MWZmZWU1ZjA4ZDYgbGVnYWN5LXRydW5rCis1OTU5MyBjOGQzMTI3OWZjZGNiNmE3MTJhOWEzNTYwNmY2ZjJjNWJmMzFjNWYxIGFsZXgtcHkzaworNTk1OTUgMjc1MGQ1MzFmZGMwMjNkYmRiNDAyZGI2MmZiMTljYzgzZjRkYTczMyBweTNrCis1OTU5NiA4NjM2OTJkYzQxMWVmMDFmMGM2NDIwMmI1YjE1YTQwMzhhZDZjODM4IGxlZ2FjeS10cnVuaworNTk1OTcgNWY1OTEyM2U3ODFmZjY0YzU4MWEzZmVlYWVkY2FhOGNlYzg3N2M5NiByZWxlYXNlMjUtbWFpbnQKKzU5NTk4IDFkYjYyNDNlOTNmMjliZDJjMDE1OTg5ZWNkOWZmMTJhMzM1ODA4NGMgbGVnYWN5LXRydW5rCis1OTU5OSBkYjY3NTIxMWMyZjc1MzExNjJmZDc4NWNlMmY5YzA5Zjg2NWQxOWFmIGxlZ2FjeS10cnVuaworNTk2MDAgYjliZTExN2IyODJjMzdiYjM1Y2E5MjAyMjViOTVjYTgzYTY5NDU4MSBsZWdhY3ktdHJ1bmsKKzU5NjAyIGVkYjZhYTYyNzUzYmM3OTA3ZmVmM2NlNGYzMzY2MTI5NTk5MTNiZTIgcHkzaworNTk2MDMgMDg0NjhhMjYzYTk1ODE4ZjliMGJmN2E5NjZmZjMyZGIwNWZjNjdlMyBweTNrCis1OTYwNCBlYjY5NWM1OTFlNzA0YmE0OTczMWJhOTcxNjdiNTZkZWQ2ZjM2Y2ViIGxlZ2FjeS10cnVuaworNTk2MDUgNzFiYjcwZjYwOTdiODIwMDRjZDE2ODdkMGQ1ZDQ1NWE3NjUyMzM4NyBweTNrCis1OTYwNiAzNjI1MjM0YmYzZDJlZDM2ODAxY2EwYzY0ZWQ0ODU0ZjA1MzQyNGFlIGxlZ2FjeS10cnVuaworNTk2MDcgZGEyYjEwNWIwYzUyM2Y0ZmEzOTJhYWNiYzM4M2UxMDNhOTBhNjVlYiBweTNrCis1OTYwOSA1NjcwMTA0YWNkMzk1NDk1MWNhZTJmMzJhOTlkMTk5ODkyNmE0MWEyIHB5M2sKKzU5NjEwIDdkMmRhMWNkODBhMTFiYjZmNTQ4YzY0ZjI2YWY2ZTQ1MGQwMzA0M2EgcmVsZWFzZTI1LW1haW50Cis1OTYxMSBmMjkyMjczNWZiN2FiMjllMzAyYjQ5OTNhOWM2OWI4OGE1MjQyNDA2IGxlZ2FjeS10cnVuaworNTk2MTIgYWUwZjJlYTA0MDlmNDQwMGRkMDUzMTEwMzhhMjA5ODRhN2M5NGI3OCBsZWdhY3ktdHJ1bmsKKzU5NjEzIDFmY2YxZTZkOGJiMWRlZDk1YWJmNTdjY2YzOWUwYmI4NWQ5ZWFiYjcgbGVnYWN5LXRydW5rCis1OTYxNCA4NjM1OGI0M2M4YmIyNWMxYjkyYTFmYTFkZjg1ZmI5NjM5MjJjOGI3IHB5M2sKKzU5NjIwIDk1Y2YzZDUzY2FlMDAxYmU2YmNkODQzMzY1MjQzZTUwZTQwZGY4ZjYgbGVnYWN5LXRydW5rCis1OTYyMSA4M2ExMzhmZGZkZmE5ODE4YTU0YmJlMjIyODU2OTZmMDMxNmZlZmM3IGxlZ2FjeS10cnVuaworNTk2MjIgNzQyZDY1OTYxYjFmYTZjYzRiMzk5MmE3MWRkMzk1NmRmN2ZmZDljMCBsZWdhY3ktdHJ1bmsKKzU5NjIzIDM3MTVmMDM3NGY2YWU3ZGMxODllMmExYTU5M2IwZTM0OTNhODhjYTggbGVnYWN5LXRydW5rCis1OTYyNCBhNjMxOWFiNDllMGEzZmJlNDI4ZjdhZWQzY2ZhNzlhZDJkOTQ0ZWNiIGxlZ2FjeS10cnVuaworNTk2MjUgNjU1NmYzZjIyYzE5ZjFiYmVlMzk1YjU1MDkxMGJkODQ4MzdmYzAxYSBweTNrCis1OTYyNiBmMDVhYzE0NTExZmY2MmYxNTkwNTJhNzEwNzlkNmJlNjcwZjJlMmYxIHB5M2sKKzU5NjI3IDFlYjQ5ODIzN2JhNWI1OGQxYWJiYTEzMDcwZjIyNDY2NGY5NzMxZmEgbGVnYWN5LXRydW5rCis1OTYyOCA0NDZlOGI2MDdiZDNhMDBmM2NmOTZhYzMxNzcyYmEyYTkxNWJkODg3IHB5M2sKKzU5NjI5IDQxYmZiZmMzNmNmNzI2M2ExMzkzMDEzMzQ2Nzc3MDE3NDAxMmYwYWEgcHkzaworNTk2MzAgODFiM2FjNTkwODljMThhNDFiZDkwNWQ3YWIxZTQ2ODgxZmE4YmNhZiBweTNrCis1OTYzMSBhY2I2YTRiMmMwN2YzMWViNmUwMDg4MjU5ZTk3OTI4OTlhNjM4Nzg5IGxlZ2FjeS10cnVuaworNTk2MzIgNDI1MTg1M2ZhOWI5MzQ4YjJiZWY5NzJlZWJiY2Y0NmJjNDE5YTM1YiBsZWdhY3ktdHJ1bmsKKzU5NjMzIDNlZTVkZTE3NmU3ODUyZWQ2YmU4NzQyYjA2MTU0ZmJhOTUwYTcyODkgbGVnYWN5LXRydW5rCis1OTYzNCA3YTg2YjIwYzViNGIxZDNjNDMzMTUxN2ExODk1OWU4ZTA4MTUwNWViIGxlZ2FjeS10cnVuaworNTk2MzUgZWIxMjA3NTEzZWU3ZGVlOWE1N2M1N2U1ZjAxZWMxYmJkMTI2OTQyNyBsZWdhY3ktdHJ1bmsKKzU5NjM2IGRkYTI5ZTcxMjgxNTA2ZjFkMjIxOGE2ZWVmMjQ3N2NlMmIwNGYxYTAgcHkzaworNTk2MzcgNDZkNTQwMTFlMWU1NjNjNGMzODc4ZWM4M2MxY2QxYmUwNzk3ZTI1NSBsZWdhY3ktdHJ1bmsKKzU5NjM4IGUzNjZjNDQ5NDhhMzE0MWM4Y2IzNTZmNDRjZTg1N2QwYmU5YmU2ODAgbGVnYWN5LXRydW5rCis1OTYzOSA2MDdlNjhjYjA5NDhkNzA3YWJjOGY5MzZhN2I3Yjc0MDNlYzZmMjI2IGxlZ2FjeS10cnVuaworNTk2NDAgOTM4MGQ1ZGE3NzE2OGUwZTk3YWYyNjIwYzcyMjg0N2Y5MWQ5YjkyMCBsZWdhY3ktdHJ1bmsKKzU5NjQxIDkwMWY3MGRiM2IzNDA0MDA4ZTgyNDA4YWQwMDUzOTIyNWRhYzViODcgbGVnYWN5LXRydW5rCis1OTY0MiBlZWUxYjc2YTk0ZTAxMThhMDZiY2NlNjZlMGIzMzM3MjNjMDM0ZGViIHB5M2sKKzU5NjQ2IDY1MmY3YWI1OTE4YjJmN2Q5Y2FkYWYwZjRjMmNlNDRkZmIxMzdkZDkgcHkzaworNTk2NDcgM2ZmNzc4YTM1NDEwNDhiZmU4ODA5MDE2ODE3MzI3N2QwN2QxY2ZjMiBweTNrLWdyYW5kcmVuYW1pbmcKKzU5NjQ4IDliMmUyNTUxYWZiZTM3ODQzYWQ5ZDdlNjE3NWEyZjRiNmRmMDgzYzUgcHkzay1ncmFuZHJlbmFtaW5nCis1OTY0OSA5NGEyOTM3MzQ5M2JkMTAwNGZjZWZmNTBjNDBhZTk3YjEwYWY1ZmUyIHB5M2stZ3JhbmRyZW5hbWluZworNTk2NTAgZjY3YjJlODNiMzQ3NWRkZGY5YWJlYTJiMTQ2YTg2ZDU4ZWJmOTVmNCBweTNrLWdyYW5kcmVuYW1pbmcKKzU5NjUxIGRiMGM4YjQxZGRiMGQ1ZTRjMjlkOTdiMDBmOGU2NGUwZDkxY2M0MDkgcHkzay1ncmFuZHJlbmFtaW5nCis1OTY1MiBiOTg4ZTRkMzVlZjNjZDBkNjVjYWFkZGU1ZjA0ZWMyZTNmNTNkOWJkIHB5M2stZ3JhbmRyZW5hbWluZworNTk2NTMgYTFmZjJmYWVkYzZiZThmYmVkNjZjYTc5NzhhZTY1ZDFkNGE2YmI5OSBsZWdhY3ktdHJ1bmsKKzU5NjU0IGQ5YTRhNWYwMTIxZTE4YjFkZThlM2ZjNjQ0MTAxODM5MjRhYmIxMjcgbGVnYWN5LXRydW5rCis1OTY1NSA2YzBjNTNiOWYzN2I0Zjk5NDcxZTYyOWNjNDkzNmI3OTIxZTc5NGEzIGxlZ2FjeS10cnVuaworNTk2NTYgMWE1NDhhNjU0YzFhM2U2OWUwZTUwNTU0NDE2MGFmNzFkZTc1OGYyNSBsZWdhY3ktdHJ1bmsKKzU5NjU3IDlhYjMxZmEzNmZiNTJmYzEzMmM1N2I5ZjQ2MzA3MGFiNDIzOTE2MDIgbGVnYWN5LXRydW5rCis1OTY1OCBmNjQ1ZTA3ZDg3MGFmNTk2YWYxY2UwZWY3MWNiY2I3NzBhZDA5NDI4IGxlZ2FjeS10cnVuaworNTk2NTkgZjBlOWMzZDE2NzY2ZDI0NmFmODUwMDAwY2ZjZjU0ZDViMDVlOGIwYyBweTNrCis1OTY2MCBkYTMwODc3Zjk3Nzk5OTQyMGRkOGYzOGNlMzQxMTJmZGM3ODkxOTNkIHB5M2sKKzU5NjYxIDA5OWExN2UyZDJiZDQ5ZjM0YmFmYWYxNjQwNmNkYjliOWFjZDhkMzUgbGVnYWN5LXRydW5rCis1OTY2MiA2NmJlYTkxMzI0Y2Q5MzM3MGZkMGM2NGFkYzUxZTk0MmQ1YjhhOTVjIGxlZ2FjeS10cnVuaworNTk2NjMgMWU2ZjI3YjY5NzNjYzVhMDY3MmUzYmU5Y2Q4YzU5NWQ4YjE0ODQ3NiBweTNrLWdyYW5kcmVuYW1pbmcKKzU5NjY0IDg5OWZlYWQ5ZWFlMjFiNmEwZjk5OGVmMDQzYmRhMzhmZTAyOWFjMWYgcHkzaworNTk2NjUgZTkwN2Y4MTRkOWEzMDcxOWM4YjdiNmM3YzBhYzFkYmI2YjU1ZWJkYyBsZWdhY3ktdHJ1bmsKKzU5NjY2IDY2ZGEzNzdiYTgxMDc4OTMzMmMwYWRkMmIwYzQyNmFhYWFhN2VjMzAgbGVnYWN5LXRydW5rCis1OTY2NyA2ZTkzZDJkNmViMjgwMWRiYmQxZjQ5MGJlN2JiOWMyNzFmZTUzMmYyIHB5M2sKKzU5NjY4IGU5ZjQ4MGI0YzEzM2NmNmU5Y2U1ZGI4Yjg4N2EyYjNmYzg4ZWFkMmYgcmVsZWFzZTI1LW1haW50Cis1OTY2OSA1Y2QyOGYwMTBmYzcxYmEwYWM5NzAyM2MyNjJkOTI5NzY2OTk3MDNiIGxlZ2FjeS10cnVuaworNTk2NzAgNGFlMzAwN2ViMGY0NzE2MDRlNWUzY2M0ZDYxNjczNzY2MWE0ZDRjZiBweTNrCis1OTY3MSA0Zjk3MjNkOWNhMzIwYWY2N2U5ZjYwYTJjMTk3ZGEyZTZmZGZkMzBlIGxlZ2FjeS10cnVuaworNTk2NzIgODM4NmVlZGEyMWM4ZTM1OGY5YTRlNGFiMDNlZGViYWE2YjFkMTk5MCBsZWdhY3ktdHJ1bmsKKzU5NjczIGEzZjE4Njc5MGZmNmUwOWFhNDAyYzhjNGViMThhMTlhZTk0ZTdmZjcgcmVsZWFzZTI1LW1haW50Cis1OTY3NCAxOGExYmM0OWE2OTZlMDVkZDRlNjM1Yjk1Njk1MTI1MzYyNjM1MTUwIHJlbGVhc2UyNS1tYWludAorNTk2NzUgNGMwNTZjMGEwYjlmNTY2OTlhNzk2MzUzNjcxMzdjNTg1NmU5MmVjZSBsZWdhY3ktdHJ1bmsKKzU5Njc2IDk2OGJkYTgxZTZjODBiYTVmZmZmMTVkYWM3Nzg4YWJiODZiN2IxOWYgbGVnYWN5LXRydW5rCis1OTY3NyAyN2U0ZTUzMGNmMmY2ZjA2OTU3YTVlNTI5Y2NlZjVjNmM3YzY3NjYyIGxlZ2FjeS10cnVuaworNTk2NzggMGNiZTk0YmVhMmM3ZWY2MTBkZWE3YjA1ZDFiYWI5ZjA0YWY5YWY0NCBsZWdhY3ktdHJ1bmsKKzU5Njc5IDYyMDhiMTdkMGRiZWRmMGRlODJkOTBkMGQ5ZDA0NTg0MTdkMGRkOTEgbGVnYWN5LXRydW5rCis1OTY4MCBiOTFjYTg3ZTZmMzI3MjE0N2Y5NGFiNjVjZWE3NjhiMjQ5NDIwMzA3IHB5M2sKKzU5NjgxIGZhMmY3MTgzYjFhZmM1NTNjMTdiN2U2YWU1ZDMzODI1YThhMDFmYzQgcHkzaworNTk2ODIgYzczMjEwZWE2MWM4NjUxNmVlZjAyMmFiYTg4Yzc4ZDFhMGZiMjk3NiBweTNrCis1OTY4NSAwMzZiMDBkYzk3NjdmNzVlMjMwMDVmNDNhNTc4ZWQyNTQ5NDYwOTFjIHJlbGVhc2UyNS1tYWludAorNTk2ODYgNTNhYzNmYzY5Yjc4YjFmZGUwODI1ZmYzNmI4YzQ2ODRiNzFiNGRkNyBsZWdhY3ktdHJ1bmsKKzU5Njg3IDhkNjllZGQzZDI5MDI4N2U5ZmRlNWI3ZTliOWE1MWE0MDZlZjFlMWYgbGVnYWN5LXRydW5rCis1OTY4OCAxNzM1OWM5YTRhN2QyN2ExOGEyMzZjYTY0NTNmNDM5ZGRiMzM5YjYzIGxlZ2FjeS10cnVuaworNTk2ODkgNWUwMTcwZDNjNGRhNTQ0YzlhMTdmMWE2ZGQzYmE2Y2YyNzUxM2Q1MSBsZWdhY3ktdHJ1bmsKKzU5NjkwIDk0NjI5Yzk1OTY1YTExODRmMzNjMDgyYzgxZTFlMWEzZTQ1ZTM4MzYgcHkzaworNTk2OTEgY2YyNjY3ZTJiYTJmNWUyZTQxNzdjY2EwMWI1ZWNiNWQ5ZTMwMTVkOCBsZWdhY3ktdHJ1bmsKKzU5NjkyIDUxNzFiNWFlNjg4YTIxN2I5ZWM4Y2NiN2EzZDA1ZTY4OGRhMjFkNTcgbGVnYWN5LXRydW5rCis1OTY5MyBkMWEzNmRkYmFhNDkyZTkyNjc5OWM1NDdjYmI5NTk4MGU4MjVjMjNiIHB5M2sKKzU5Njk0IGNiYTlmZjc2MDQzMDQ4ZWMyZGM3YjMyMDRjMGY1ZTE0NGIzMWFjNTMgbGVnYWN5LXRydW5rCis1OTY5NSAyOTg2YmI0MzIyMjIxNzIxYWJlNGJhNDg2OWZmZTBlNzBhZDg3MDZiIGxlZ2FjeS10cnVuaworNTk2OTYgZGUwMGFmMDNiYjRkNTY5NTU0YWRmOWRjYmQzMzMwY2I1OGIwOTdlYiBsZWdhY3ktdHJ1bmsKKzU5Njk4IGRjZGQxYmEwOTY0MTBlOTdjMTA5NDU4MjczMWJiZmM3MmFmNDJlYWUgbGVnYWN5LXRydW5rCis1OTY5OSA3NDJjYWY1MzU1NTc2ZmU2ZWRmMzYzOTFlNDQ2NzM0OGYwMWJkZDllIGxlZ2FjeS10cnVuaworNTk3MDAgYWQyYmNiZTgzZmRjMmZkMTRiNzU5ZDE1Y2VhY2RjN2ZkNmJlZTYxMSBsZWdhY3ktdHJ1bmsKKzU5NzAxIDc2NDNhNDNmMjVhMWU2OTdmMTZiMjNmMmFjZjhmMGM2ZGJmYTE3NzIgbGVnYWN5LXRydW5rCis1OTcwMiAxM2FhYmMyM2NmMmUyYzBlMjI1OWM5YjUwNjY4OTQ1ODE4ODk3NDM4IHB5M2sKKzU5NzAzIDYxYzE2NGYyNTQzNTY0MmMzM2FhNjY2MmY5ZjY5M2VkNDE1Yjk0YzcgcHkzaworNTk3MDQgNzZhODlkZDRhNTEyMzcyNzdiZTU1NTgxNDQwNTI1M2UzNTAyZTU1MyBsZWdhY3ktdHJ1bmsKKzU5NzA1IGQyYzFiYTA5OTI5MDgzYzgyNTY2NGUwYmQ4YTBkNGExNjlmOWQ5OWIgcHkzaworNTk3MDYgMzk4YjYyNDY3NTlmYzJkMmUzY2I0ZDAzYWY1ZTE4YTE5ZWEyOTU4MyBsZWdhY3ktdHJ1bmsKKzU5NzA3IDc3YzM3ZTMyZmUzNWI1YzA3MjU0M2VlYzk4MDEzODBmNmEyNjQyYWYgbGVnYWN5LXRydW5rCis1OTcwOCAxMjdjYzJmZWE5ZmI5ZDE1ZWMwNjY2ZGZiY2ExNzMyNGVkMzExNzFlIHB5M2sKKzU5NzA5IGRjZTI1OTQ4OTE4ZDBkOThhMDMzMGRkMDE4MmI5NTcyN2Y0NjJiZjQgbGVnYWN5LXRydW5rCis1OTcxMCA4MTY2OWZiYzg0NWYxMjQ5N2M2NGY2Nzk1MmE0M2E3YjNiYmQzZmZkIHJlbGVhc2UyNS1tYWludAorNTk3MTEgNWQ3ZDJhZjU5YWZlMWNhYjUyMWE2NmRlN2FkZjExMmJmOWQ3NDFmMSBweTNrCis1OTcxMiBiZDAyNThkZjMzMGVjNWRhZTliMTZkMmRmY2I4MmVmOGYxNzIwNWE0IGxlZ2FjeS10cnVuaworNTk3MTMgMjkyYzVlNTFhMGU1OTYxOGVmOGE4YjQ4ZTAwMzhiNzkyMWM0NjAxMSByZWxlYXNlMjUtbWFpbnQKKzU5NzE0IDkwMTkwODZmZDIwYTRkYjc1MmYyN2JhNjdhMzNmOGY5MDJmOWQyNWYgbGVnYWN5LXRydW5rCis1OTcxNSBkMDc3YjBjODkzYmM2NTYxOWFiNzMwNDI2NjY2ZTU3N2U4OGEyODUyIHJlbGVhc2UyNS1tYWludAorNTk3MTYgYmZlZDcwMjc3YWIzYjY4NjUzNzlmN2EzODU4OTM1N2I1ZWY2ZjRjMyBsZWdhY3ktdHJ1bmsKKzU5NzE3IDYxMzQxNzc1YmM0MjE3MjMxNWUxOGViMTQ0ZjdhNzQ1MTdkZTZlY2UgbGVnYWN5LXRydW5rCis1OTcxOSA4M2NhNzM1YTM5OTVhNzIxNTVmNmEwZmVmYzYwNjJiMmFiYmIxNDlmIGxlZ2FjeS10cnVuaworNTk3MjAgNjQ2Y2ZmMDk2MDM5YmFmYTVlOWNmMDBiYjdlMGJmYzgzNTgyZTkyYyBweTNrCis1OTcyMSA3M2JjMDAyMjUyYmZkNTgzYmY2ZmU1YzJkZDJlMWQyNGUyMDMyYTdjIGxlZ2FjeS10cnVuaworNTk3MjIgMzRjOTFkZjYwNTMyOTk5MDY0MThjOWM1YzlhM2UzZmFkOTQxMjZlMyBsZWdhY3ktdHJ1bmsKKzU5NzIzIDU3YzdkNDJmNmNkZWIxOGE3YWUyMzk2ZGQyYjc1NmRkNWQ5MDA1ZGIgbGVnYWN5LXRydW5rCis1OTcyNCAyMDM3ZjRjYWJiMDdjY2RhNjNkZTNmMjFlODFjNjM1MWQ1NmZiYThiIHJlbGVhc2UyNS1tYWludAorNTk3MjUgM2ZjYWY2Y2MzMDZkMWU0ZTZhYTlmY2YyMGZhZTc2MGYxN2VjYTRlMyBsZWdhY3ktdHJ1bmsKKzU5NzI2IDJlMmZhMjkxOTE0YzUzY2Q0ZDRkYmE2YmUyMTg2YTAyYzllZjkxY2YgbGVnYWN5LXRydW5rCis1OTcyNyBkY2M3Yzg2NWM3N2IxMDE3ZGE5MjAzOGYxM2EyMjRlZjBkZjc3NTRlIGxlZ2FjeS10cnVuaworNTk3MjggN2JiOTFiM2JhMGVjYzI4NTM1MDJmMGUyZTg0MDRiYzE1YzhjODllMiBsZWdhY3ktdHJ1bmsKKzU5NzI5IDVhMGNiZTM2YTYwMzc3OTVlM2EwZDVmMWYyYmQwYWE5ZGZlZmM4NGMgcHkzaworNTk3MzAgMzNhMGFlNzA2NzBmNDM2OTIzNGQ4ODk4NTUzMGU2OTAwZDI0ZWViNiBsZWdhY3ktdHJ1bmsKKzU5NzMxIDk0ZWVhZWViM2NlOTNkZjhkMmIzYTcxMWU3NjA3NjVkMjZmM2QwODggbGVnYWN5LXRydW5rCis1OTczNiBlNDhiNDY5ZDFkODY2Yjc3ZTViNjdiYjIwMGFjNGRmMjNkM2JlYTZhIGxlZ2FjeS10cnVuaworNTk3MzcgNzc3NDI5YTIzMDI2NjdmMWQ1NjMzY2Q4NDQyZThkMmQ5ZjNjODRhZSBweTNrCis1OTczOCBjMGMyMzY5Zjk0MjY3ZWExNTBjZTJlMmUyZmVjNjM3ZTc0ZjE4ZDhhIGxlZ2FjeS10cnVuaworNTk3MzkgOWNhZjhhN2IxMWE2Yjg5YzE3OTNiYzZmNGQ0YzA4Y2I4NWM5ZDRkNCBsZWdhY3ktdHJ1bmsKKzU5NzQwIGJiYzllOGMwOGNkNWVlZTM3YzAzNWU5MTFlMTA0YzE2N2M0MDU2YWMgcHkzaworNTk3NDEgZmM4MTg2YjUwMTQ1YjlkMmI3ZjJkMDE0ZDVlOWQ5ODVlMDg2YzQ1NSBweTNrCis1OTc0MiAwYzBhZWJjNjY1NmY5NGQyNTMzNDRjZTRhMTJhMDMzZjM4OTc2YjM3IGxlZ2FjeS10cnVuaworNTk3NDMgM2M2Zjc1NDNiZGQ2YjRhYWQ5Nzg4OTA2M2NmNGNiN2Q5NTYxOGI1MSBsZWdhY3ktdHJ1bmsKKzU5NzQ0IDAxZDViOGU3ZDEyMTIwNWVjN2IyMWE4YWYwZDczYTQ4ZWNiYzQ4OGMgbGVnYWN5LXRydW5rCis1OTc0NiAxNDI2Y2QxMzY3MzlmYmRlZTI3ZmQwNjc0ZWNiOTQ2ODNlMTRiMzY2IHB5M2sKKzU5NzQ3IDMxZTI5NGQwOGNlMWM5ZGYzZjI4NmM1MjMyODY3OWZjMTViMTZhYmYgcHkzaworNTk3NDggYmQ4NTg3OWVmZmE2OWRhY2RjOTk1MWM4NzVlZWY0NDY1ZjI0NzYzYSBweTNrCis1OTc0OSBkMDBkZTBjZjA0ZTI3NGYwMjNhMmQyNDFlZGFlMzg1OThlNjlhYjY2IGxlZ2FjeS10cnVuaworNTk3NTAgMGYxYzhiYWI4OThkYmQ5YmNkMzljNDY2MzIyMWRjZDM3Yjg1MDY3YiBsZWdhY3ktdHJ1bmsKKzU5NzUxIDlkOGI5NTNkNGFmNTJlY2FiZDA2ZDQwNGVjNmZiMjlmNDBkNGQ0YzcgcHkzaworNTk3NTIgZWRiYTBhMWI3ZWJlMTA4YzZiNzIxNTJiZDQ4OTc5NTU1NGQwZTZlZCBsZWdhY3ktdHJ1bmsKKzU5NzUzIDI0NGJiMzFjMDM2YmQ1NGQ3MzFlZWJiODAwMjgxYzdlMjg3N2EwMzggbGVnYWN5LXRydW5rCis1OTc1NCAxMTVkYTIyNjhjZDk1ODExMjNiNDk5N2E4MDdkMDc4MmQ0ZGRlN2M1IGxlZ2FjeS10cnVuaworNTk3NTUgOThjYzFjYzU3NTczY2MwNmMyYTdlNGQ3OWE1MGJjMzg4MDhjZWIwNiBweTNrCis1OTc1NiAwODEzOGJjM2MwNjBlYzZmMzQ2YjI5MTZmYzQxODllNzI5OGY3ZGE2IHB5M2sKKzU5NzU3IDRlNzRjMjc2NzhiYTE1Y2U5ODY0ZGU5OTJmMzA3ZDViMjY3Nzg3ZDEgbGVnYWN5LXRydW5rCis1OTc1OCA2NWZlNmU1NmQ0ZjhkNWM5YTI5MDJiZWU5ZGI4NTNkY2U4NjRiNDNiIGxlZ2FjeS10cnVuaworNTk3NTkgYWZiMTMzNzkwNmFlOGE1MmU4ZWJkYWI3NGI1Y2YxYzY0ZGNmNjY4OCBsZWdhY3ktdHJ1bmsKKzU5NzYwIDI4MWM5NDc5MTQyYTNlNGFiYTA2YjI2MDBlODRiN2JiMzRmNzc2OTIgcmVsZWFzZTI1LW1haW50Cis1OTc2MSA4YmY2YTlhM2E2MzI5YmUzOWNkMDBiZTgwNjUwNDg5ZGQ4NWYxOGIwIHB5M2sKKzU5NzYyIDU2YmE3OTFkOGIzNTkyMzU0N2JmMmNhYTM3YzM5ZDhhYjQ5N2Y3ZjEgcHkzaworNTk3NjMgMjg0OGZmYjlkMTdhNmMzYzliMzkyNjZhYTcwODIyNmY5ZGE1YjcwZiBweTNrCis1OTc2NCAzMjY4MWFlNmM1YzE0ODg1NWZiNzQ2ZDQyYzExMWM0YjgxNWI4NjQzIHJlbGVhc2UyNS1tYWludAorNTk3NjUgN2EyMDY1YjViZTc1YjMyMzVmNTkyODg1YmQxYWFlNzBlZTZmYWEwYSBsZWdhY3ktdHJ1bmsKKzU5NzY2IGJlZGQ4YmZkM2ZkMjY4MDQ3OTA0NDY1NGVlZWUyZjgxOTMwZDUwNjIgbGVnYWN5LXRydW5rCis1OTc2NyBmYWIyYWE2YjgwNzM2MzMyZGNmMTMwMTg5MGFhODQ3YzQ1NjE2ZTA1IGxlZ2FjeS10cnVuaworNTk3NjggZTViZjY2OTZlMmUzNmE3NGNjNzFhMGM4NGQ0MTEwZWU4NzA4MzcwOSBsZWdhY3ktdHJ1bmsKKzU5NzY5IDNiYzA0MDVkZTQ5MTVkNDg3YzQ1ZGVjYTNmNWJiZGY5ZjViY2JiMDEgbGVnYWN5LXRydW5rCis1OTc3MCA0MzIxYTVhYmQ2Y2UyZTJkN2Q2NjJkMTVmZmZmMGYzYTRiYWRhMDU3IGxlZ2FjeS10cnVuaworNTk3NzEgMTU1ZjVjMzZmZjkyOTU2MWZmMmI1NDc5MjJkNWI1ZGFmYWY4YWI2MCBsZWdhY3ktdHJ1bmsKKzU5NzcyIDc5YTM0MjQ4YTI2MmZiYTlhNDI3ZWFlODY0YmYyZjM2YmM1ODM2YTUgbGVnYWN5LXRydW5rCis1OTc3MyA2NjE5N2Y4ZDBmZGYwZjg3MjcwMzA2MzE1YzliNmI0YzczOGM2ZDQwIGxlZ2FjeS10cnVuaworNTk3NzQgNTA3ZTc2ZDdmY2RkNWM1YmY2ODViYTViNDViYjVjY2Y5ZGE4M2MwMiBsZWdhY3ktdHJ1bmsKKzU5Nzc1IDY0Nzk0YmE5ZTI1YWQ1YzFjOTJlZDMxNGFkY2Y2ODViYzdhOGVlMzIgbGVnYWN5LXRydW5rCis1OTc3NiA5OWY2MzcwYzZjZDA1ODRhNzUyMDIzM2MwMWIwYWU3ZTRkZGRjZDBlIGxlZ2FjeS10cnVuaworNTk3NzcgZDg5NzllNjQyOWU1ZmY4YWJjY2QyZDA0ODdlMTYzYjllNjU3YTI5NyBsZWdhY3ktdHJ1bmsKKzU5Nzc4IDZiM2FhZTVjNjliZjIwNDRlMjU5M2YwYzIyZjIwMzE5MGQ1OGE1MWEgbGVnYWN5LXRydW5rCis1OTc3OSBlZDc1OGY2YTk3YmIxMGNhYzUzOWM1YWIwOWQ4N2U3OTRiMzI4MmRkIGxlZ2FjeS10cnVuaworNTk3ODAgMDkwMDgzYTIzM2Y4ZTM2NmRlOGNjOWU2ZDZlMmZmMjlmMTE3YTkwYSBsZWdhY3ktdHJ1bmsKKzU5NzgxIGIyNDg4OGNiOTU1MzMzNTg0YzhjNTg5NDBmNzQwODYwYmI4OWNkNTkgbGVnYWN5LXRydW5rCis1OTc4MiAyYWNjNjUyZTU4YTE5YzZjM2Q2MDgxNzg0NWJiYjkyNmVlY2FlYjI3IGxlZ2FjeS10cnVuaworNTk3ODMgNDIwZmU2ZDdkNWY0NWU1ZjlmZWU0YTI0ZmNlYmZmZTJhNmQ0MjZkZCBweTNrCis1OTc4NCBhYzdkZWIxYzFkM2NlMDNhZTcxMDdkM2YzZDM0ZThiYzAxNWZhZmI0IHB5M2sKKzU5Nzg1IDhlYjk2MzYzZjFkNTljMmI3NWVjNTE0Y2Q5ZmI1NGVjZWI5ZDYwOTYgbGVnYWN5LXRydW5rCis1OTc4NyAxODExZWIwM2JhMDBjOGY5MzcxZTA1YWNlZTNmOTExZDMyZTQ3MGVmIHB5M2sKKzU5Nzg5IGZhMjUwYTU4MDk5ZmM0YWFhNzhhNTZlZTFmYmVjMjdhZjA3MTVhMjAgcHkzaworNTk3OTAgN2NiYWNhYTVmODg1OGY0OTQ3NWJkNTMyNGRiMTg5ZWFhNDQ1YmI5NCBweTNrCis1OTc5MiAwYzRkMjU4YTViMjVlYTBmZGE1OWM2NTZmZGQyYmMyZjM0Yzg3YzM4IGxlZ2FjeS10cnVuaworNTk3OTMgZDA0NjVlNzgyYjAxOTEwM2M4YTg0NWJiNTcxOWYyOWYzMDAzNjBkMCBweTNrCis1OTc5NCA2NzRjOWI4OWQxMjQxNDAxY2UyZmI1YzMwYzdlMzgwNGJjY2QyOGRiIHB5M2sKKzU5Nzk1IGI4ZTM0YmNkYmE0NTQ4Mzc1NGM0Y2VhMzA0ZTg0NDBiODJlODFmNzQgcHkzaworNTk3OTYgMTNiN2NhMDRiZDcwZTE0NjQyZWQ2ZDk3YjEwZTg1ZjU0YzM5OWIwZSBsZWdhY3ktdHJ1bmsKKzU5Nzk3IDk3NGYwMzIwZDZiM2NkOTMyMWQyYTkyYjZjNjA0YzhjMDUyMjZiNTQgbGVnYWN5LXRydW5rCis1OTgwMyA0MjY0NmE4NzI3NzJlZmFkYTA2MjA5MmNjM2NmZjE0MTQ1YzNhMDJlIGxlZ2FjeS10cnVuaworNTk4MDYgMDViY2I3OTBlZjYzMjRiZThiN2Q2ZjJhMDA2NDJkNmI1Y2MzYzBkMCBweTNrCis1OTgwNyBhODY5N2FmYmYxN2VmNWM3MmMwNWUzOWNkZjVjZTI0ZmJjNGEwYjlkIGxlZ2FjeS10cnVuaworNTk4MDggNDU1MzZkNTU4N2Q0NzcwMzI1MDFhMWM1MzY0NThmOWI0ZTRiM2VkMiBsZWdhY3ktdHJ1bmsKKzU5ODA5IGY5Yzk1MGU4ZjJlMGFlNmZhYjI5MzdlY2MzZDcyMmFiZGFhMWVjZjYgbGVnYWN5LXRydW5rCis1OTgxMCBiNmVhNTI5OTNjYWU1MGFlNjU2MDQzZmRlNzA1MDFkZjU2OTEwNWM0IGxlZ2FjeS10cnVuaworNTk4MTEgZjI3MDc0ZDE0N2Y0ZTE5OGE3YjMwODc5MmIxYjViYzhkNDU0YmQ2OCBsZWdhY3ktdHJ1bmsKKzU5ODEyIDZjNGIwY2M5ZjZjOTAwYmIyNWI0OTIxZTIxZmI3OTViZDZmODEyMjUgcHkzaworNTk4MTMgN2VhMjMxNTc4YjAyZGZhMDNjNzg2MzZlODNlNjBlMmE4ZjRmNWVkYyBsZWdhY3ktdHJ1bmsKKzU5ODE0IDNhOTQ0OTM1YzYxMGRhNGZjYzAyYjRiMTk4MjljZjU1N2MwODc2ODggcHkzaworNTk4MTUgODY0ZTY3OWEwZTg1MDgwNGJiZjIzZWJkMzRlZjA2OGI5NjZjMTcwZCBsZWdhY3ktdHJ1bmsKKzU5ODE2IDRkMjNmNWE3ZDRjOTYwOWMzMDM0ZmVjMzk0YzAzOGExY2I3NDBlN2UgcHkzaworNTk4MTcgMTljZTllZjM0YjYyMzNjYjM4MzU1OGNiYjc3YjI0YmM2OWNkMjZlNCBweTNrCis1OTgxOCBiOTg5NzdmMGFiYTFjNjU3YzQwMGViMWRhYWQ1NTkyMjJjYjhlZjJjIGxlZ2FjeS10cnVuaworNTk4MTkgYWM1MWNmZTVjNWM2Yjk4Mjg0YzM2NzQ0NDE4NmY3Y2NhYjU1NzM5MCBsZWdhY3ktdHJ1bmsKKzU5ODIwIGYzYzFmOWM4Y2U5ZjEwNmVjY2JmMWY0Mzc2YzJiMDAyMDQ1YTZhNjEgbGVnYWN5LXRydW5rCis1OTgyMSA3NmZjZWI1OGJjZjUxZDFlNzk5MzI2NGU3YjFjNWFmZDQ2ZmYxYjAxIGxlZ2FjeS10cnVuaworNTk4MjIgMDZkMTVkYTFmMTI1OGM0NDU0NTQ0MDMwMmJlZmJmOGMxNWFlMWE3NyBsZWdhY3ktdHJ1bmsKKzU5ODIzIDJjZGI2NjE2NzVmOWMwM2Q5YTk2MmQ2OGE3MTIxZTNjY2Q3N2Y0NDkgcmVsZWFzZTI1LW1haW50Cis1OTgyNCA1OTlmMjJhMzQ5YTI0ZmUzYTk5MGVhMWNiNTM4NzU3MjAwYzE1ZGNiIGxlZ2FjeS10cnVuaworNTk4MjUgY2RjMjg1YmQwZWZiNDRlN2E0OTA2YzFkYjNlMTExYTg5MjIyMThkZSBweTNrCis1OTgyNiAzMDVkN2QyY2UwNDcwMWI0MWNlMDk0ZTUwODNlMDA2ZTc1ZGE1MjA2IHB5M2sKKzU5ODI3IDEzMmQ5MDg0NzFjODM4YjkxMDU1Y2YzMDA0MTQxNGY1MDI2YjMzNWIgbGVnYWN5LXRydW5rCis1OTgyOCAwYWFlMTQ5NTBlMGJjMmJkMzdmMGY0NjFhMjQ3OGRjNTcxNmQ1OTBkIHB5M2sKKzU5ODI5IDNiM2FiOTI1YjI2MWU3MzRiNjRlM2QxZjA1ODgxNDM2OTYzY2U5NDkgcHkzaworNTk4MzAgZGI1ZTAxYzMzZWI3NjMzYzAxM2E1MTRkMjc5YWYzMjQ3OTg4OWI1NyBsZWdhY3ktdHJ1bmsKKzU5ODMxIGZkNTMyYTliMjgxMDYzODMzOTE4ODY0Y2VhZDc5NWNmZTY0YzZlNTIgbGVnYWN5LXRydW5rCis1OTgzMiA2YjcxNWVhODA0Mzc3NDY4ZmQ5NmUxNTRmOGEzOGI1YmEzNGM3YTQ5IHB5M2sKKzU5ODMzIGNmMzZlMDFlODNmMjBlNzQwZTkxMzViOWIzNmJmNDhkMDBkYTBjYWYgbGVnYWN5LXRydW5rCis1OTgzNCBhZGRjMTg1OTZhMTU3NTM1ZTBhZWRhODAzNTJhZjUyMTk1MjNlNmI3IGxlZ2FjeS10cnVuaworNTk4MzUgY2ExNDE1YzYxMDVmN2ZkMGRlN2JlMWNmZGYwZjU3MzNjZDZlYjBmNyBsZWdhY3ktdHJ1bmsKKzU5ODM2IDE5ZTFmYTc4ZDMzMDU0OWY0MmFjZDI0ZjI0MmNhNDVkNTUxZGM3ZDcgbGVnYWN5LXRydW5rCis1OTgzNyA1ZTAyNGU5MWVlMDY3ZDc1MWE5NDI5MDgyY2JlOWE2ZjEzNjdmMGQzIGxlZ2FjeS10cnVuaworNTk4MzggZTk3NTYyNjZlMGI5MzgxNDAzODQ4NDE5YjE3MGVlMjI5NmYyYWMzNCBsZWdhY3ktdHJ1bmsKKzU5ODM5IDZkNTIxNjAzZTA3ZGU3ZmI3ODhlZGE1ZThmOGM5NTQyOTJkOTZjNGQgbGVnYWN5LXRydW5rCis1OTg0MCBjNzVkMzYwYWI4N2IzODc2NjNhMTgzMmM0MmEwNTRhYjdhYzNiY2JjIGxlZ2FjeS10cnVuaworNTk4NDEgNzNlMWJmMTc5YTAxYWQ3ODI0ZmY1YWEyYjI5Y2UwNjhhNDU3Y2Q2NyBweTNrCis1OTg0MiAyMzZlNzUyNmFiZWFmNThmMDVkZmU5N2VkNWNjZTJmMmU5YWFhODkwIGxlZ2FjeS10cnVuaworNTk4NDQgNDJjZjU5Y2NjZTY2MmI3NTAwZjc3NGE5NGE2MWZkYmUzZDU3YzVlZiBsZWdhY3ktdHJ1bmsKKzU5ODQ1IGEyOTM4YzU1MjAwY2U0YTZkYzFjZDBkNTEwYTg5Y2VmMjQxZGUzZWIgcHkzaworNTk4NDYgZmI1YTYzMzBmNzFiMzk4ZmNlYjBlNDA1MjAyYTg4ODA1YmExY2MxNCBweTNrCis1OTg0NyBjYzg2OGZjZjUwNWFlYjU5ZTQxM2MyOTgxOTFhMzNjYTg2OWFkOTlhIGxlZ2FjeS10cnVuaworNTk4NDggYTViN2YyZDg3NjFkNWExZDJhYjI2ZTIxZjM2MDdhM2FlZjY5MmE3OSByZWxlYXNlMjUtbWFpbnQKKzU5ODQ5IDYwYjU0ODAxYjY0NjMyZTgwZGE0MTE0MTU0YWQ5YzQwNDc0YTExMjggbGVnYWN5LXRydW5rCis1OTg1MCBhMWRkZTY4MGU2OTQyMGY3YmQyYjgxMGYyOWE3Njg4MWZhNzM1ZWJiIGxlZ2FjeS10cnVuaworNTk4NTEgY2IyMmY4NzQ4ZGE3Y2Y0NTZiODZlYjJmNzBmNGJjMzFlOTJiNDU4ZiBsZWdhY3ktdHJ1bmsKKzU5ODUyIDA1N2RlNDZlYTE3ZTIxYTYwYzRiNjkwMjJlMzE4OTQ5ODgyMzkyODIgbGVnYWN5LXRydW5rCis1OTg1MyA4OGQ3NmI5MjA2ZTY2NzMyNmEzY2Y4MWRmMjhlYmM2ZjI1ZDU2MTExIGxlZ2FjeS10cnVuaworNTk4NTQgZDFhMWJhNTAyNTc5ZTllMjIyNTVhNzhkN2I2ZjhlMzBjODM2NzI0MyBsZWdhY3ktdHJ1bmsKKzU5ODU1IDc2Yzc2NWE3NGZiOGNiNDM4NWY5MDI3MDVmYWZiNjY0ZGUzZWZjYWIgcmVsZWFzZTI1LW1haW50Cis1OTg1NiA1ZmI5YjJmNmJhY2I3YzZiZTg4OWIwMDA0ZjljNmQ3YTExY2NhYmUxIGxlZ2FjeS10cnVuaworNTk4NTcgMDg4YjUwNzdjOTAwYzhkNDg3M2RkYjVlOTc5OTg4NzI3NmRkNjAyNiBsZWdhY3ktdHJ1bmsKKzU5ODU4IGY0NWVhZWRiOTIwZTIwNTVlZjM3ZTEyZmIxZDNiZWQ0ZWE0MDYyYzAgbGVnYWN5LXRydW5rCis1OTg1OSA5YTYwYmQ4ZjAwZDZhZmE5MDQyZmMyODIxZmUwYTI4YjYxM2QyYzAxIHJlbGVhc2UyNS1tYWludAorNTk4NjAgNzZjYWI4Njc4OTE2ZTRkNGE4MGIwMmFlM2QxOGYxNDhmOGQ0YTU5MyBsZWdhY3ktdHJ1bmsKKzU5ODYyIDQ3ZTc4YzJkMTZkZTBkNDMwMGU2YTdjMjcyMmY1MzZlODllYTUzMjYgbGVnYWN5LXRydW5rCis1OTg2MyBiN2QxYjYyN2E3ZDUxZTRkMmIyMmUwMDkxNzBlZGE1MzlkOTI2YjlkIHJlbGVhc2UyNS1tYWludAorNTk4NjQgOTRhYjU3MmVkNmRkZjM2MDgwMDYwMjc5ZDliNzFmMGZkMDNlMjdlNyBweTNrCis1OTg2NSAzMzQ0MDkxOTk2MTI0MzIxNDM5NmZkMjk1Mjc5NmM4YzA5ZjY5MzVlIHJlbGVhc2UyNS1tYWludAorNTk4NjYgYmY3YmJkOGRiMWE4MmQ3ODI1OWZmOTI1NGMwZjRjYmEyMzMyMjg4YiBsZWdhY3ktdHJ1bmsKKzU5ODY3IDVmNjQwZjhmOTJmNDhkNGRiZDJiODkzMzAyOTIxZWRkMGQxOTNjOTYgbGVnYWN5LXRydW5rCis1OTg2OCAxZDc0ZGQ4MjI4ZGIwY2M5NWJjNzAwMjNlYzNlOTJhN2NiY2U5ZDNjIGxlZ2FjeS10cnVuaworNTk4NjkgMTBlYmQwMjdjMjQzOTQyNWRjMTI1YjM0MmYxYWMxYzE1NDE5NmQzYSBsZWdhY3ktdHJ1bmsKKzU5ODcwIDUwODY5ZTc0N2U3NmU5ZTQwYTk2ODM5NTA0ZjdkYjViOGM2MTcxNjggbGVnYWN5LXRydW5rCis1OTg3MSA5ZjZhYTQ5ODQ5OGQyODVjMWExYWNkZDc3ZGZlNjk0MWEyNTU1MDM1IHJlbGVhc2UyNS1tYWludAorNTk4NzMgYTYwZjkyYmEwZDFlZDU2MzE1NTViMmMyOWFhMDU3MDdmM2IxMzA5OSBsZWdhY3ktdHJ1bmsKKzU5ODc0IDY3NzZkNmVmMjAxYTEwMzc1OGI0YmZjMTI3ZTkzOWQ1NmNmYjljZTcgcmVsZWFzZTI1LW1haW50Cis1OTg3NiBkYzlkOTViNzE3YzU3ZTNlNjFmNGRiMjllZGY5MGQ5NjU3ZWU1OGVlIGxlZ2FjeS10cnVuaworNTk4NzkgOWE5NzkwOGI0Yzk3ZWY5MWIxZDJkYjUxMjM2NGUxNzFmNTJkNzliZCBsZWdhY3ktdHJ1bmsKKzU5ODgwIGM5YjZiZTQ4MTY1N2RkOTYyODFjZDAyNjg3YTQ1MTYzMjcwNmFlYjcgbGVnYWN5LXRydW5rCis1OTg4MyBhMjlhZGMzYjBmMjY2YjYzNmM5NjJlNDI5YzE0MGEwYmJiM2MxODk3IHB5M2sKKzU5ODg0IGZhZTljZWRiOTE0NmJkZjE2MmJiODg3YmMzODM5ZDcxZjc1NWExNDcgcHkzay1pbXBvcnRob29rCis1OTg4NSBmYjI4NzQxNWFjYTBlNmZhNWQyYTMyOWUyOGEzNjA0YzJmMDEzNDMzIHB5M2staW1wb3J0aG9vaworNTk4ODYgYTkzZTBlODBjMThhMDE3MTA4MDE0ODdiMzFkZGU5YzBjOWE1OTM0NCBweTNrLWltcG9ydGhvb2sKKzU5ODg3IDc2YTQ2MWRlMTU0NDQ0MTBmZTE5MDVkNmFlN2E3YTczMTJiNzJkMWIgbGVnYWN5LXRydW5rCis1OTg4OCA0MjY3NmE0ODQwYjVhNzExMGFjY2M2ODJjNzZlYzQyYzYzMTc4OTc3IGxlZ2FjeS10cnVuaworNTk4ODkgYjQ0NmNkNjEzODhmMDViNWZkZDVlNjU3ZGQxYmFhMWYyN2I4NWQwMCBweTNrCis1OTg5MCBkOGQ3YTc4YzY0MjNjMWE0MTYyMmM1YjY3MDY5YjU2ZjA4MjEwNTVlIHB5M2staW1wb3J0aG9vaworNTk4OTEgODk2OWQ3NGQwZDIyZjMxOWM3YzQ1ZTY0MjU5YWQ3NDc3NTYxODc1MSBsZWdhY3ktdHJ1bmsKKzU5ODkyIGMzMTEzOTE0ZTY2ZTllMGQ2NjkzOWFjM2UxYTdmYzhhY2ZkMjI0MzEgbGVnYWN5LXRydW5rCis1OTg5MyBhZjZmMzQ1NjU3YjRiNzk0MWYzMWZkNGNlNjM5MzI0OGZhY2U2ZTQ1IHB5M2staW1wb3J0aG9vaworNTk4OTQgMjA1NzhkYjA3NjI5YTIwNDY2ZjU0ZjY3YmI4MzQwZjhiODJiYjIxMyBweTNrLWltcG9ydGhvb2sKKzU5ODk1IGRiYWZjZDgyNzk3OWUwOTdlMDlmZmVhMTc2MzQxZmI2ZDUyYjk3ZDQgbGVnYWN5LXRydW5rCis1OTg5NiBlNzUzZTMxYTBjOGYxNzk0MzhhMTlmZjc0NjkwY2VlMDc0MDNlYjQ3IGxlZ2FjeS10cnVuaworNTk4OTcgZGY4NTZlMGUxYjJhMDg5Yzk0MWRmNGMyYTMxNzMwZDc1NTU1ZDg1MiBweTNrLWltcG9ydGhvb2sKKzU5ODk4IDY5ZjQ5NTA4MjQxMjY3MjczNDg5MWY2NmUyMjhhNjI5ZGU2ZTA1N2QgbGVnYWN5LXRydW5rCis1OTg5OSA2MDEyNmFhM2I4MTY5NzcwZDc5ODQ4NWIyZjc1YmZlOWUxYjhlNWVkIHB5M2sKKzU5OTAwIDc4NTFlNzVmNTQzOGNhNDU5OGQzMDVjNmM5OWZiOTQ0MGZkYzBkN2EgbGVnYWN5LXRydW5rCis1OTkwMSA0MDNjZmNhOTg2M2ZkMmUzMDhiMDQ1ZTJhZjE4YzBmNmQyYWZjYTQ4IHB5M2sKKzU5OTAyIDVkZWM0YWRlOGZhOTUyODRiMDYwZTBjNTQzZjMwNDM2YTEwZDAwN2IgcHkzay1pbXBvcnRob29rCis1OTkwMyA4MDU4ZTE2ODIwZWY4NjBlNGM5MGM0N2UwNzBhYjNiZjc2Zjg5MDM4IGxlZ2FjeS10cnVuaworNTk5MDQgMzU0YmUwZGFmZTU0YjIyMmFmMjVhOTNkYzk4NWVmYmMyODdjOWI1NyBsZWdhY3ktdHJ1bmsKKzU5OTA1IDNjZDliODc3ZWFlMDlhMzViOWNjZDc5NWRlNzVkODM5NzI5YTQ4N2YgbGVnYWN5LXRydW5rCis1OTkwNiA3ODUyMzdmYTVmNDAxNDQ0YzMxZDYxN2RkYzA2ZTAxMGEzOWU4ZmE2IGxlZ2FjeS10cnVuaworNTk5MDcgNmIwYjVlZGZiMWI3ODVjMTY5MWM3Y2Y2OWQ1OTgyNzExYzQ5OWRlYyBsZWdhY3ktdHJ1bmsKKzU5OTA4IDA2ZjlmNTFhYjhjMDNkZGNiYjFkMjlhNjkzZDI2MGM4MTQzNmEyMDQgcHkzaworNTk5MDkgYmUwNGVlNGM0ZmQ3MzQ1ODY5Yzk4MDNkNWQxMGI4MWRmYTE5MmJhMiBsZWdhY3ktdHJ1bmsKKzU5OTEwIDJhZDNlMzVjNTgyNWMzN2YyOGI3ODgyYmFiZGEzMzM3NTM1YzgxNzEgbGVnYWN5LXRydW5rCis1OTkxMSBhZjNhMGNhMWFiNGEwMmJlMmE1OTMxODZhNDMwNDYzZGNiZjM3YjkxIGxlZ2FjeS10cnVuaworNTk5MTIgNjJmNmQ3ODBhMTFkZTAzNzM0NjM3NWFmOGY1ZmNiOTY2MmQ4YmFjZSBsZWdhY3ktdHJ1bmsKKzU5OTEzIDNjYzNhNTVkMTIzMzQ1MTNmYTczNmE1MDQ1NzNlN2I2MjE4YWVkYWEgbGVnYWN5LXRydW5rCis1OTkxNCA5NDI2MWYzMDI3YTU5M2RlZjQ0YTM1ODZkMTMwYjhkNjE0OGRiOWZlIHB5M2sKKzU5OTE5IDU5YTgyY2RmYTEzN2U4OGI4Y2MzNmQ2NTUwMzVjYTdmNGU5YjcwOTMgbGVnYWN5LXRydW5rCis1OTkyMCBhYWRjZGE3YTRiZjdhZjRlZTNhMDliNTAxMmU0ZjRhMmQ1NTY4OTYxIGxlZ2FjeS10cnVuaworNTk5MjEgZDhlNDM0MmMxNDVlNmI1YTg4YTE0OTFjNTRmMWYxZjE5ZGM2OTUyYSBweTNrCis1OTkyMiBlN2I4MjEwMWI5NzBmOGVjNWIxMGU1NWU5ZDlkOTE4MmQ0MmUzMjliIHB5M2staW1wb3J0aG9vaworNTk5MjMgNzk1NzlmYThkNzUyZjJiZmE5NDQzNDg0ZjRhNjc2MDFiNzdlYTY1MCBsZWdhY3ktdHJ1bmsKKzU5OTI0IGYwYjkzM2YxMjk4MjY3ZDhlNmNhMzU1MTM2MjgxNzljNzBiZWI0ZTcgbGVnYWN5LXRydW5rCis1OTkyNSBhMjIwMjExZjgzMzEzMTYwMjkxYmRmNWZhNzY2NTZlMjMwZjM5MDUyIGxlZ2FjeS10cnVuaworNTk5MjYgZDU4MjRmZGQ5YTE1ZjBmZDc2NjljYzc4Y2IxYzJjZDExOWE1YmU1YSByZWxlYXNlMjUtbWFpbnQKKzU5OTI3IDc3NmI0ZTA1OWY4MzZhMWZjMTI0MWNhZDczYmRkZTZiMWI4MzZmYzUgbGVnYWN5LXRydW5rCis1OTkyOCAzYWYzZmQzODg3ZWUyM2U0OTVjMjIyNTQwZmIxMTBlY2JkOGFiY2I5IGxlZ2FjeS10cnVuaworNTk5MjkgN2I3OTg1NDhhNGFkZTRkMDI2ZjVlOWQ4ZDljOGIyNjAzYmMyMzlmNiBsZWdhY3ktdHJ1bmsKKzU5OTMwIDdkYmMzZjQyNzhlYmQzNGZiNzFmMDQ4MGUyNjdjOWE4ZjA4N2RjODUgbGVnYWN5LXRydW5rCis1OTkzMSAyNzNkMzdiZjIzZDNiZTJkMzJhYzI4OGNhOThiMmVjZDBiNjkzMjYxIGxlZ2FjeS10cnVuaworNTk5MzIgYTU0Y2M0NzcyZTczNzM4MzViOTZjZTY4NmMyODlmY2FiNDAyZDhhMCBsZWdhY3ktdHJ1bmsKKzU5OTMzIDVhNzFkY2M3MWVmZjc2Mzk0ZDM1OTk5Mjc3MmEwZDlhMGQ5MmE3OTQgcHkzaworNTk5MzQgNTM1MTEwNWZmODA4YTMxNzBhNjNjNmVmN2U3YzhkODA5NWFiYmNlMyBweTNrCis1OTkzNSA0Y2E4YWNjOWJlZDcxNTQ4OTI3ZWE4Mjc1ZmU5Y2EwMGI0ZWRlYTU4IGxlZ2FjeS10cnVuaworNTk5MzYgM2Y2NWJjYzg5NjZmMjlkODkwOGUwZWNhZTE1NmVlOWRjMjU4OGIyMSBsZWdhY3ktdHJ1bmsKKzU5OTM3IGI2NzJjMDE1YzJkYjg0ZmY0Njc5NjMxMzY3MDUyOGQzMDdkMDRlNjggbGVnYWN5LXRydW5rCis1OTkzOCA5NDY4ZTYwNjM2MTczNGUxNWNjZmEwYWMwY2U5NThlNGI5YjkzNTRhIGxlZ2FjeS10cnVuaworNTk5MzkgYzczNzY4ZDk3N2E5ZjkyYmI5Y2RiOTA0NzhkNTcxY2FkMTk5MGQyYiBsZWdhY3ktdHJ1bmsKKzU5OTQwIDg5NGQyYWQ0NTAyNjllN2UwNWQ4OTk4N2YzZGQ2N2UxODA4ZGEwOTcgbGVnYWN5LXRydW5rCis1OTk0MSBmMmQ4MjBiNWFlMmFlNjQzNzA2MGJmMzg0MDkyNjAxYTk1OTRmY2YxIHB5M2staW1wb3J0aG9vaworNTk5NDIgYzI1NzYwYzIxMzk3YTFlNDIzOTBlMzM2NGFlZWM5Y2FhYjVhNTVlZSBweTNrCis1OTk0MyA0MjkzYTA2YWZkNzI3Zjc1MzYwMTVmN2RmM2QyYTFjMjcyZWM5YjkwIGxlZ2FjeS10cnVuaworNTk5NDQgMzg3ZDQ4YzNhMGIzZTdjMjc0MTg3MWIxOWExMWI3YjI3YzZmYThhMyBsZWdhY3ktdHJ1bmsKKzU5OTQ1IDkxOTI4ZDk5ZWJiMDkyNzA3YjQ2MmQ2Y2U4YTU0OWFmODFiNjUzYTEgcHkzaworNTk5NDYgNDI2ZmVmOGJhZGUyZGQ3YTg2YzhhNjhkMDBiNDA5NTE2NjhhYzdiOCBsZWdhY3ktdHJ1bmsKKzU5OTQ3IGI0MDk5NDFjN2E1MWUxMDA5ZGIxNDE4YzEwMjMzNTgyNzNkM2RiY2UgbGVnYWN5LXRydW5rCis1OTk0OCA3ZTQxZTFjNDZiNTdiMGVhNmEyOGVmMmFjOTZlY2MwOWFlMGMwNzI1IGxlZ2FjeS10cnVuaworNTk5NDkgOWI2ZDM0OGNlYzg3ZTRiYTRjMzBlM2E3ZDhmZDczZDQxNjIyOGMzYyBsZWdhY3ktdHJ1bmsKKzU5OTUwIGQ2NmU1ODM3YWE1N2MzMjJlMWRmZTYwMTMwNWMxZjVlOTQ2ZTZhNGQgbGVnYWN5LXRydW5rCis1OTk1MSAzM2Y2NzA5MDc1ZTgzYzhhN2U1YzJlNjNhMGYwMTJiMjhiZDRmZmU4IGxlZ2FjeS10cnVuaworNTk5NTIgMzIyYzIzOGE2NGU1MjczODVhMzU5NjdmNWZjZGM3ZTk4ODNiMmQzNyBsZWdhY3ktdHJ1bmsKKzU5OTUzIDYyZWFjZTY3ODBmNjU4Y2RlNTFhNjVhMWU1YTBjZTliNThkMmNkNzcgbGVnYWN5LXRydW5rCis1OTk1NCAxMTU0MTU4YTE5OWY3Nzk0ZjI1ODU1ZDllZjcyMWM0NzcxYzY1YmU1IHB5M2sKKzU5OTU4IDYyN2YyZTIyNzNiOTRmZTk4YmI5MWQ3M2UxOTlhNzRkZDkzMGExNjcgcHkzaworNTk5NTkgMDA1MDIxYmY1YWNlYzczYzMyM2VkYzQ3ZGE4OTllMzY2MzFiZTA2NSBsZWdhY3ktdHJ1bmsKKzU5OTYwIDgyN2YwNDUxNzM0ZmQ5NjY0NzdhZjNiYmNkNWVlZjU1YTdhNzc1NGUgcmVsZWFzZTI1LW1haW50Cis1OTk2MSA1ZGZkZWQ5YWQ4YTBjYzZkZmViYTc2ODUzY2E5ZTNjZDlkNzc0ODFlIGxlZ2FjeS10cnVuaworNTk5NjIgNmFmMTk0YzQ5NGNjMmZkZjNmNzIzNDJjMDQ5ZTVkYzU3NzlhYWNmOSBsZWdhY3ktdHJ1bmsKKzU5OTYzIDc3NGE5NTk3MjI4ZTBhZGI3ZjhlMWI5YTViNjkzYjdkNjQ5ZTY1YTUgbGVnYWN5LXRydW5rCis1OTk2NCBjYWI4NDEyOWRjY2I1NDU2NDA2M2YxNjM5NjE4NTY1ZmYzODdlOGMwIGxlZ2FjeS10cnVuaworNTk5NjUgZjAzNGViNWQ4Y2RmNDlhYzUxMTM5M2ZjOWY5NmM2ZDZhNGM3YmM0NiBweTNrCis1OTk2NiAzNTdiMzY1NTYwZjRiNzkyMzhlOTBmODQ5M2U0NGViYzlkNzlmZWM2IHB5M2sKKzU5OTY3IGEwMGQ5MDAwNGEyNTE5NmFkYTZjZmNhMjA3NzYxMmU3ZGQ4NGNmYzMgbGVnYWN5LXRydW5rCis1OTk2OCBlNTExY2NmMmZmYmU2N2ExMmUyMTQyMzkwYTY4MzZjZDU3NmIyZTA1IGxlZ2FjeS10cnVuaworNTk5NjkgZDAyMDhkNjVkYzIyYzUwMTA4YTY3MzllOGEzNWE5NzkzOTllYWU1YiBsZWdhY3ktdHJ1bmsKKzU5OTcwIDg2ODlmNDZkMjVkNmFmNTVjOGNiZTRkNWYxNzVkZjhjMTVmZjc5YzQgbGVnYWN5LXRydW5rCis1OTk3MSAxNDg1NGM3YzZhMjQ4NzBhZGI1ODhkMmE2MTVhNzU1NzJiM2ZmYTY5IGxlZ2FjeS10cnVuaworNTk5NzIgNWM3YjdmYmVhNjgxYjE1ZDg0ZTQzMTI5OTgwZjgzY2ViNTk5ODg0ZSBsZWdhY3ktdHJ1bmsKKzU5OTczIDBiYjZjZjc3Yzg1YWY4NTM0ZDBmZWVlY2JhNDQ0YWVhZjE5MWEzMTggbGVnYWN5LXRydW5rCis1OTk3NCA0NmU3MzFiYjZhODVmMWNlZGM3NjQ4NzRjOWZhYjEyZDY0YmU1MmZhIGxlZ2FjeS10cnVuaworNTk5NzggNTlmMjliMDEzNmZiNWY2MTg0OTdmMDlmOGE0NTJhNTA2NGI0MGIzYSBsZWdhY3ktdHJ1bmsKKzU5OTc5IGJmYThkMjI1NzgyMzIyM2RiN2M0YTNkZGNlNjYxNDQ0NDFhZTFmNzggcHkzaworNTk5ODQgMjhjODFjMjczODllMjU0MzM5YTkwYzMxMGFiNTc3NDdhZTMyMzIzMSBsZWdhY3ktdHJ1bmsKKzU5OTg2IDZlNTY3NWNhMjU1OWM2YTczN2VmMWI0NmI4MTE0OWY3NzFhN2Q0N2EgcHkzaworNTk5ODcgYzc5MDU4N2YyOTkyNWMxNTE0NTEwNDBkMzk0MzcyYWU2ODdkNjY5YSBsZWdhY3ktdHJ1bmsKKzU5OTg4IGNiOTA0MDRhNDZhZDE4YTEyMmJmMTgyYWQyNDE3ZTljZjRmYTVhNTAgbGVnYWN5LXRydW5rCis1OTk4OSBmMzAyY2Y5OTk2MzNlYjdjNmQyYjBlMGYyNjg0ZjRkZWZiYzkwMGE1IGxlZ2FjeS10cnVuaworNTk5OTAgNmYwNDljYTU1ZTA2YjJjMTA4ZWMwZDhkMGU4NGJiMGI4MjNkYzM4NSBweTNrCis1OTk5MSA5OTJhNjExYjJlMzE0NjZjMTcwNGJhN2VlNmMxOTZiYjg0YjRmMDFjIHB5M2sKKzU5OTkyIDJmMTFmN2Q5YmRjODRlMGQ2YmJhMmVmZTNjZTVhNDlmYzBjZTlmYTUgbGVnYWN5LXRydW5rCis1OTk5MyA3MWM3OTllYjI0YjI0ODBhZGZiNzdmNDNkZDI3NWZmYTRlMjFhODgwIGxlZ2FjeS10cnVuaworNTk5OTQgN2YyZjIxYWEzNjkwNmE5ZGQxZTc4NTdjODllNzllOTQxYTgxOGJhOCBweTNrLWltcG9ydGhvb2sKKzU5OTk1IGIyM2I0NzdkNzg5OWE2NjhmNjg0MzQ5NGE2NzEzNTk0NTg5MjQzODMgcHkzay1pbXBvcnRob29rCis1OTk5OCBjNDM4M2Q3NjVjYTcxNzgzNzQ4NGEzYzJhYzVkMzcxYTgwMDY2NDk4IGxlZ2FjeS10cnVuaworNTk5OTkgYTRhMDI0MzJlNzMzM2U5OWVmMDllYzU3YjM5YTI5ZWFhMGU3NWI4YyBsZWdhY3ktdHJ1bmsKKzYwMDAwIDQxZjFiM2NiMGJiMTAzNTViMjQ5NWY5MTNlZWI0OTZmMzk3NDMxNGMgcmVsZWFzZTI1LW1haW50Cis2MDAwMSAyZjdmM2Y1ZTczZDNjNWVhYTE0MDJjOTFhZmUwZTRjZTE4YWIyNzI0IGxlZ2FjeS10cnVuaworNjAwMDIgM2Q3MDQyODkzY2M1MDQ2Y2VkN2ExOTZkNThiNmQyMGExZjU5ZTllNyByZWxlYXNlMjUtbWFpbnQKKzYwMDAzIGNhZjU4YzgzMTQ5OWNjN2Q1OTQ1MzU5MTg5NmQwMzEwZWQ5NWZkMjcgbGVnYWN5LXRydW5rCis2MDAwNCBhMmYzZDQ5OWNlMTJlZjRjZTIxYjU2YmNiMWUwOWJhM2M1NjIyNjllIGxlZ2FjeS10cnVuaworNjAwMDYgMjdkNTk2NzViOTJjNmY3YTBkMDA1ZWJhODljYWE4NWQ1ZGUwNGJiMCBsZWdhY3ktdHJ1bmsKKzYwMDA3IGYxMjhlNmViZjkwZjgxZDBmZDJhMzA1OGJjN2ZhM2NhYjY2YjMwZjMgbGVnYWN5LXRydW5rCis2MDAwOCAyYzliYzYxZDRmNzNmMzc2ZTM1ODk1ZmZkZDcwZmQ5MTFiMzEwNjMwIGxlZ2FjeS10cnVuaworNjAwMDkgYzc4NGYyMGM5NjdlODQ0YmVkYmIyZmQzNzQxZDI5YmNjYWU5MmE4ZCBsZWdhY3ktdHJ1bmsKKzYwMDEwIGFhNWNmNjM5NDY0MWRjMWQzYTJiZjBkNjM3NGRiNmFjNGVlODA1YmMgbGVnYWN5LXRydW5rCis2MDAxMSA5OTAwMGVhMjFmZjI3OGFiYjg5NDlkYWVjNzBhNzE1NzRlY2RkZDczIGxlZ2FjeS10cnVuaworNjAwMTIgYjQ2OWU5MDI3M2ViMDcyZGY3ZjA0ZGVlZTMyYzQ3OTE1OTI5ZDNiNSBweTNrCis2MDAxMyBkMGY3OTYzY2Y4YjAzMzQ4Y2JjYzQ1MzA4NjcyMDU4NjU0MDNhMDg0IGxlZ2FjeS10cnVuaworNjAwMTQgMjZiNjFhNWRmMTFiNjEyZDMxMTE2NjI3NGE3MmFlNjI0OWQzMTU5ZiBweTNrCis2MDAxNSBjYjBkY2Q2ZTNiMTE0N2YzYWNhM2IyZTI3MDVmNmIxYjkwYTg4NDY2IGxlZ2FjeS10cnVuaworNjAwMTYgM2IzODU2YjM2MjFiMjA4OTVkYWU0ZjM0YTMyMTJkNTg4MTVkODRhYyBweTNrLWltcG9ydGhvb2sKKzYwMDE3IGRmNzFmY2RkYjc1ZWFiMTdhMDVmZTI2MWU0MDIzMzAyYTJlZDY4OWQgcmVsZWFzZTI1LW1haW50Cis2MDAxOCBhMzgwMjg1M2MzMTc2MjY2Y2Y3YjI2MGQwMGQyZTQ5MDljMTgyZDg1IGxlZ2FjeS10cnVuaworNjAwMTkgMTcwY2IyNzM5YTM5MGUyNzgzMjI5NDQ2MjVlZjFiOTViOGNlYzIyZSBsZWdhY3ktdHJ1bmsKKzYwMDIwIDA3NjZlZmQyYTZkNjNlNjNhM2IzZGRiNTMzZGRmMmNhYWU4N2E2MDAgbGVnYWN5LXRydW5rCis2MDAyMSBkODE2YmMwYzQwYjY3NTk2ZTI1MzVlMDQ3NDU2YWI1YTE2YjdjNzc2IGxlZ2FjeS10cnVuaworNjAwMjIgNzE3MjY1ZWQyMDQxYjMxOTdjMjVlNjFjZjViMmUxNjIxODgyNWU4YyBsZWdhY3ktdHJ1bmsKKzYwMDIzIDNiNGJjNGM3MDRjMTRmNjkwYmY0MmEwYWRkZjY1ZGZiODVjZTc0NmYgcHkzaworNjAwMjQgMjIyYjkxOGNlMDkyNGNlZDZlZTdkYjE5Y2QzYTRiZTVmMGFjMmU2NiBsZWdhY3ktdHJ1bmsKKzYwMDI1IDI5ZTRjODZkNTA3MWE2YzhlNWJhMjgxMjAxZTE4MWIyMjM1OTA3YzkgbGVnYWN5LXRydW5rCis2MDAyNiAwNzZjOGFiYmQ1NGY3ODk5ZDgyMDQ1OTU1NjUyYTBjOTE2YWJlZGVhIGxlZ2FjeS10cnVuaworNjAwMjggOGI0OTU0MDNiYTIzNWJkYThlM2U4M2JiMGFhNzA3M2NhNDg0N2VkMiBsZWdhY3ktdHJ1bmsKKzYwMDI5IDQyOGRkODUxYmI4YWU4MGZkM2IxM2IyMjc4MzhiNGQzZmMyNTdkZDEgbGVnYWN5LXRydW5rCis2MDAzMCBiYjMzYjMyZGUzYTBiOTM3MjE1NDI5M2RiYjE5NmMyYTRlMDdiNTRkIGxlZ2FjeS10cnVuaworNjAwMzEgODVjZjIyMGYxNmQ4NWVlNDA0NjY4MTk3NDYzMjJiOGVkMzU5YmU4MyBsZWdhY3ktdHJ1bmsKKzYwMDMzIGEwZGQwOTJiYjZjMzZlN2M2ZDNiNThiNDY5Nzk5MzU0NDc0MDQ1OTkgbGVnYWN5LXRydW5rCis2MDAzNCA0ZDYxYzg4NzYyNGQzNWJiNmNjNjMwMjFiNzZiMjk3NWU5M2JmNjI4IGxlZ2FjeS10cnVuaworNjAwMzUgMjZhODZjMjlhZDYwMGE2ODhlNGE0OTRjOWE0YWVlZDQ4Mjg2YjRlMyBsZWdhY3ktdHJ1bmsKKzYwMDM2IDg0MGU4N2UxODMwNjk0MGI4MGM3MDViMzkyYzM0ZDg2M2VmNTVlNGYgbGVnYWN5LXRydW5rCis2MDAzOCBiNDAwM2I2YzZkMTM3ZWY5NTRjNDczMzZkY2NjNWY5NmUzZjUzYTcyIGxlZ2FjeS10cnVuaworNjAwNDEgYTNiZjBlMjRiOTFlNjk0ZWY5NGM0ODU2N2YwOTFmYjM5MDZiZGU0NyBsZWdhY3ktdHJ1bmsKKzYwMDQyIDc5YmFiYjRjY2VjODUyZmZmZDkzYjk2MTMxNzg2ZTdkMzQxMGVjOWMgbGVnYWN5LXRydW5rCis2MDA0MyBiYmY0ODQ1ODEwNDM3ZDY2YjYxNjg3ZmU3M2I3ODc1NGM4OWIwMmI1IGxlZ2FjeS10cnVuaworNjAwNDQgMTRkNDEwNDk3NmZjYzdkNDFjODc5N2IwMTA2YTcwNDVmZDY4ODhhNiBweTNrCis2MDA0OCAyOTQ2MDIwNTYwZTczZjk1OTNjNDAxMGY0ZmQ5NzYzNjEyODgxZWI0IGxlZ2FjeS10cnVuaworNjAwNDkgZDk4MzNkMmJmNDY5NWZmYzY1YTc4MmE5Yzg5ZTJjNzM2MmEyN2ZmNiBsZWdhY3ktdHJ1bmsKKzYwMDUwIGRiZjA4NTY3NzZkZDdjM2MyYmY5ZjZlZDdlNGYyNTRkZTY3MTU3ZDAgbGVnYWN5LXRydW5rCis2MDA1MSA5N2E3YzEyNmQwNGViZjY2NTUxMmE1MDBhM2JlNThkODY1YmE2ODNhIGxlZ2FjeS10cnVuaworNjAwNTIgOGRhOWViZjczMDI2NDdlY2FiNTM5NDkxNDU3MjNjN2Y0YzM2Mjk5OCBsZWdhY3ktdHJ1bmsKKzYwMDUzIDRhNjc2NzNlMzQ4MWRjMTA0ZTVlNjg3ZTViZjNiMzdjYmNmMDA3NjIgcHkzaworNjAwNTQgNTVkZGIxNjZmMWQxYWEzMmI0MTQwZWZmNjE4MGMwZWNiMDFkYjRkOSBsZWdhY3ktdHJ1bmsKKzYwMDU1IDNmNDBhZDNjMTNkZDdlYzJiNGNlYjI0NzkxNGY0OTYxMmViZDlhM2YgcHkzay1jdHlwZXMtcGVwMzExOAorNjAwNTYgNzY1ZTU3YzAwMWIxYTExZWJiZmUzMGU3NjM4MzcyZWE5ZTkwODM5MyByZWxlYXNlMjUtbWFpbnQKKzYwMDU3IDU4MzAzZWQ3MmJhMWE3YmYxMjVlZjY2MDk2NDI4ZDQzNzBjOGQ2ZjMgbGVnYWN5LXRydW5rCis2MDA1OCAxM2Y3NGM4NTQ0Y2M4YTkyMWRlNmI0ZmM2MzE2NDA0YWIzYzk5MDJkIGxlZ2FjeS10cnVuaworNjAwNTkgZWI4ZWY5NjllZDY4YTVmNzg2ZmE0MjlhZTM0MDcwZmQzYWNhMzJiNiBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDA2MCBkN2E4N2M3ZjE0ZDllZTk3NmY0NTZlN2Y5OWVlMTI1ZmM3MzUxN2E3IHJlbGVhc2UyNS1tYWludAorNjAwNjMgYTUwNzJiYTM1ZjBhMGYzYWQxNTY5NDUxMDhmNDY3MmNmOGJmY2U3YiBsZWdhY3ktdHJ1bmsKKzYwMDY0IDIxNzk4MzNjOWM5YTU5MDhmMzljMTA2MjFkZDdkZDI0MzEzZTQ3NTEgcmVsZWFzZTI1LW1haW50Cis2MDA2NyAwYjdiNjJkZDRkY2JkMjgzZjc2ZjExMjM1YTIwMWQwMmYxNTg5NTU1IHB5M2sKKzYwMDY4IGM0NzA5YjgxYWJkZWI2YzdjMTZjY2I2MGFhYTE5N2VjNzk1ZWQ0NDQgbGVnYWN5LXRydW5rCis2MDA2OSBmZWJkZTNjYWYyOTEyNmM1M2IyY2NmNTA0NzczMTRhZjljM2NhZjJhIGxlZ2FjeS10cnVuaworNjAwNzAgZjI3OTdlMDcwOWUzOGNlMTRkZjNjYjQ0NTRkOTkzZWZmMzk3MjQ2NSBsZWdhY3ktdHJ1bmsKKzYwMDcxIDNkNzJmNTIwOWU2N2Q1NDk4MjUzYTE4NjU0ZTJjODc2YjcwOTk2MDcgbGVnYWN5LXRydW5rCis2MDA3MiBmOTc3NTQzODM2OWFiNjExNjFiYWE0NTUwYmYzZjY2ZWY5ZGY2NTU2IHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMDczIGNlMzI2YWZkZjA5ODlmY2I2MGQ3ZDE4ZDg5NWE1YTliMzY2NWE5ZjAgbGVnYWN5LXRydW5rCis2MDA3NCBjYzBhMjk2MTE5NWVmMzgxYWNhZGI1MjU1YWY4MTE0YWEyOTE5ZWY5IGxlZ2FjeS10cnVuaworNjAwNzUgNzNiNWU5MzllMDU4MGRkYmU4MTA1MDFiODkyYTBiYzljNWNkMjVmOCBsZWdhY3ktdHJ1bmsKKzYwMDc2IDUyZTgyMTQxOGE3OTliNTI0YWQ4MzU4MTE1OTlhNjU3YjQ0MGJiMDMgbGVnYWN5LXRydW5rCis2MDA3NyA4ZWRiZTAyNWFlZDU3MTI4ZjEzODc1YmU1NTQ1OGNjMTU3OWNjNzg3IGxlZ2FjeS10cnVuaworNjAwNzggYzdjYjU4MDA2MDZlMmY2ZGUwM2JiOTJiZGVkN2FlYmExMTJkMDQ4OCBsZWdhY3ktdHJ1bmsKKzYwMDc5IGE2ZjlhMmJhODk2MmE0NjI5NDNiNmEzNDM1ZDQ0NjExZWYxNWI3NDMgcHkzaworNjAwODAgY2RlNDFiZDA4ZTVlMjRjZDkzOGQ2MjI3NTU4ZDA0N2Y1YTBjYjk5ZSBsZWdhY3ktdHJ1bmsKKzYwMDgxIGUzZmRiYzgwOTk5OTgwODhiZDA3YWJlNGQwMmIxMmM0NzY0NGZjNGYgbGVnYWN5LXRydW5rCis2MDA4MiA4NTliZjg1YTU1NmE5OGI4MjBiMDAxNjgyZDM4YWZlMDQ5NTBjMWEwIGxlZ2FjeS10cnVuaworNjAwODMgMGZlOTM2Yjc3MTE0MjM1MTRhY2UwNzhjNWU1YmZiNDQ2N2IwN2VjYSBsZWdhY3ktdHJ1bmsKKzYwMDg0IGFmYTBlZjM3OTE4NjVkMThjZWI3MTM4ZDYzNTE4MWYxYmNlMzJkYmMgbGVnYWN5LXRydW5rCis2MDA4NSBhMjY1YmFhNzkxMDAzNDNiYTE1Yjg1ZDA1ODc1NDNlMzNkZjJjMzY2IGxlZ2FjeS10cnVuaworNjAwODYgODAzNjY2MjFjNTAyMjk4MWI3MjNhODY4YmEyNGE1ZTMzMjYwMjI1ZiBsZWdhY3ktdHJ1bmsKKzYwMDg3IDljMGE5MTNhZGNkNGI4YTk2ZTZiOWY5MWNlOTI1NDIxYTVlODIyZWYgbGVnYWN5LXRydW5rCis2MDA4OCBlNGU2ZmM5Yzk3NzVkODIwMjQzODI5YjE5NDYzNzFlMWZiZjE1ZjhiIGxlZ2FjeS10cnVuaworNjAwODkgOGI1NTMyMTE2MTE1MmJiMGZjMmZiMDI4NGZhMjM3YjlkYjU4M2FhZSBsZWdhY3ktdHJ1bmsKKzYwMDkwIDM2MjVlZWQ0ZjBjZDliZThjODNiNTY4ZmY0N2UzYTFhMWRmYTQwNTggcHkzaworNjAwOTEgODc3YjQ2NzliOWZlNjliNDA1YmU1ODNlZDA4ZjY2MTJkYzQ2MThhYSBsZWdhY3ktdHJ1bmsKKzYwMDkyIDYxYTExY2M5NTYzMmU4NDE1MDVmMmZhZTEzMzVjNmNmODA4YjE5NDYgbGVnYWN5LXRydW5rCis2MDA5MyAxNzAwOWQ2MjExYjgzNmE2NjAxNDZkZjM3MGIzN2ViZmY1MmNkZmQ4IGxlZ2FjeS10cnVuaworNjAwOTQgY2EyNjgzYTY3OTQzMTNhM2ZlYzE3NWQ3NDA1ODdjNTM3MzllMjM4YyBweTNrCis2MDA5NSA0YTdhZmZmNTJlYTcxZjQ4N2EyMWVkMTk2ODViYWFhOTdjYmNkMWVlIGxlZ2FjeS10cnVuaworNjAwOTYgYjMxMDIwMDZkZDdlYzlmY2VjZTM4MjI4ZWYxMjdkN2MxMGRhYTczOSByZWxlYXNlMjUtbWFpbnQKKzYwMDk3IGI1MjBkMzNiZWUwNjE1NGY5N2M1YWVlZjJlMDc3OTZhNzVkZDk4ZTYgbGVnYWN5LXRydW5rCis2MDA5OCA0YWM0ODQyNDliZDFlMWZkYzYyMTFiNjE2YjFjNmNmOTFhZjBhYWY1IHJlbGVhc2UyNS1tYWludAorNjAwOTkgNGYzNTExOGVlZDNiOGYyMTYyNWM3ZmI1MDNkNmNjNWU3NjQ1MmM3NyBsZWdhY3ktdHJ1bmsKKzYwMTAwIDg4ZjhmMTUyYTBiMzMyYzJkMGI5MTQ3ZDAyMTkxYmFmOGE1YTQ1NTQgcHkzaworNjAxMDEgM2M5Y2NjMzJkYTlhZmU2NDQ5NzBhNzdmZmI0OGEzYmRiZTExYmZkMyBsZWdhY3ktdHJ1bmsKKzYwMTAyIDIxMDMyM2UyYTkyNzI2ZDRiY2JlNTNiYzZmYmUxOTcyZDdiMTRkNDQgbGVnYWN5LXRydW5rCis2MDEwMyAxNTUzNjg2NTE5OGFiMjE5NjUwYzUwYjk4N2RmNzg2MWQyNzcwOWI2IGxlZ2FjeS10cnVuaworNjAxMDQgYjRkMDNhOTJiZGRmOWNiY2I3Y2MwNWNkNzI3NjE4NDM0MGNmMTY1YiBsZWdhY3ktdHJ1bmsKKzYwMTA1IDNkMTMxYzgzOGYwOWI4YTMwMTFlNDMwOGRjOTNiZTJiNGNiYjFkNzcgbGVnYWN5LXRydW5rCis2MDEwNiBkOGMxM2VjYjZlODU5ZmVlNmRjMTlkZjhmZDRjYmYzMWUwYWRhZDkxIGxlZ2FjeS10cnVuaworNjAxMDcgYmRhNDllYjQ2MDc0OWY4NDMwNzk1ZjI0ZWYyZmQ2YzNhZjM4NmU0NyByZWxlYXNlMjUtbWFpbnQKKzYwMTA4IDE3Zjg0NTMzMjc3ODQxNTQ1YWZjMTc0OWJmODlhMTNlZTIzNjkxMzUgcHkzay1jdHlwZXMtcGVwMzExOAorNjAxMDkgMTNkYzY1ZmU4NTk5ZjA4YThkNGFlNWRmNDU2MDBlY2U3ZjA3MjM2YiBsZWdhY3ktdHJ1bmsKKzYwMTEwIGVjMDJkYmU2YjA1MTAxYjYxM2FhZTUzNmUxMTA0NTZiMTE5YTU0NGUgbGVnYWN5LXRydW5rCis2MDExMSA1ZTY2MDMwZjFhNjdhNDY5NTQ4NDc1YmI4ZjBhMDhmODgwNjIxNDJjIGxlZ2FjeS10cnVuaworNjAxMTIgYWMyZWE5NTUyMjkzMGIyYzIxYzZkYmRlZTg2ZTc3NzE0MTcyY2VmMyBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDExMyAwYWNlNzQ3Njc0NzhjZjY3ZTZiMDc0MmVkMWY5MDRhMGNjNTMzNzljIHJlbGVhc2UyNS1tYWludAorNjAxMTQgNDc5NjU4OGQ5ZjlhY2I3NTEzNzUyNjc3MzM2YzNjZjZiYTI3ZWM4YiByZWxlYXNlMjQtbWFpbnQKKzYwMTE1IGMyMzg5MmY1YTY5ZjE2ZjgxYjExZGY3YzgwYjAwYzZkNmY5OTU2MzYgbGVnYWN5LXRydW5rCis2MDExNiAxMTQ4M2E2NzNhNDVlZWQ0Y2I0NDI1NTI1ZDBkY2NjZGQ5ZjczZjFmIGxlZ2FjeS10cnVuaworNjAxMTcgNjhmNWNjOTViNzBhNWU2ZjljMDQ5YzlhODE2YTRjM2QxOWRmNmE0YyByZWxlYXNlMjUtbWFpbnQKKzYwMTE4IDc2NDcxNTJmNzQyNDViN2VlNTI5OWIxZDg4ODZjZWU3OWEyNDQ1MjcgcmVsZWFzZTI1LW1haW50Cis2MDExOSAxZTU2MTQ1NjdhNmVkOTY5Y2Y5NDI3NzQ1YmVkYjg3YjAyYzk5NzNkIGxlZ2FjeS10cnVuaworNjAxMjAgODE2YTdiZGJmNjllOGZjMThjODlmOGY5N2UwZTZiMWI0ODQ2Y2Y0YyBsZWdhY3ktdHJ1bmsKKzYwMTIxIDExMjBiM2Q2MDZmMjhjMWM1YWQ5MDUyZDQ2NDg0YTUzODc5NTQ2MzAgbGVnYWN5LXRydW5rCis2MDEyMiA2ZDQzZmNjZGE5MGMzYTE0MmNiNGUwMjFlZTNjMDFjZGFiMDBlZDY2IGxlZ2FjeS10cnVuaworNjAxMjMgM2UwZjRhNGI5ZjU1YWU2MTIyNGE3ZTIyNWJiNTVlNjk4MWVlOGQ3NiBsZWdhY3ktdHJ1bmsKKzYwMTI0IGZhNmNlZTE0ZGNiYTQ4ZDBhYmQ1ZDAxYjRkOTA3OTE4OTdiODAwYzAgcHkzaworNjAxMjUgNTUzNDlkNGQ5ZjgzMzllNTBjNWVkNjg5Y2U4MzVmYmZkYmM4NDdkYSBweTNrCis2MDEyNiAxZThiOWU3YzM0Y2VjNTVkMDYxN2FkYjNkZjAxMjE0MGUzYWM4MjkyIHB5M2sKKzYwMTI4IDAyYTIxMjBlNWRiMjNiNWZiNGQ0ZDQ2ZjNmOTAxZjk1Zjg0MzY4ZjEgcHkzay1jdHlwZXMtcGVwMzExOAorNjAxMjkgOTQxY2YyYmYyMDBlNDM5MmEzZjhiZDg2ZjM2ZjY1MTk1YmE1ZTBlMCBweTNrCis2MDEzMCBiOTlmOTI5NWZkOWNmODg2ZGVlYmNkYzY0NmIyOTU0ODY2YTk3NWFhIHB5M2sKKzYwMTMxIDk0MmU0YjQyZGExNGQ1Njg1Y2UyYTY3ZGQ3M2IzZjVhMTdkMTkxYjUgbGVnYWN5LXRydW5rCis2MDEzMiAxNTBjYjQ4ZWRiMDdlMWJhODYxMGRmYzNjMTAwMjI3NjhjNmVlZDE2IHB5M2sKKzYwMTMzIDNmMzRkM2IwMzUwZDEzNWI5ZDYxZmNlZjUwNGM1NmEzNTBhZTlmYzkgbGVnYWN5LXRydW5rCis2MDEzNCBlMzY0NjllNmQ4YjY3ODA5YzczNGJhYmJmMTgxYTg5YzJhZWM3YmI1IGxlZ2FjeS10cnVuaworNjAxMzUgYWJjYjc5MjNkODk4ZmRhM2RlZDJiNWM2MTM0NTQzNzdjNzI2N2QxYyBsZWdhY3ktdHJ1bmsKKzYwMTM2IDE0NWIzZTYwNTM3ODQzNTI2NmU1NDNhMDA0MDhmOGMyNWQ5NmY1NjkgbGVnYWN5LXRydW5rCis2MDEzNyBiMjhmZGVmMmYwZDcxYjE4ZDY4NDQ3ZGZkYjI3YmE5OTI5YmQwODI4IGxlZ2FjeS10cnVuaworNjAxMzggNDI0Y2NjZmQyYmFhYTcyMThhOWNiNGRhZjM5YmQyMDhlNjU4YjNjNCBsZWdhY3ktdHJ1bmsKKzYwMTM5IGVhY2EyMzY3ZWNjOTkyNzhiMjA5NjY1YWI2MWFkZDA4OTQxYTI0NTMgbGVnYWN5LXRydW5rCis2MDE0MCA4NGYxYTY1OGIyMzE5MjM3MDVjZTkyODk5YjAwYzUwN2E2Mjc1YmE2IGxlZ2FjeS10cnVuaworNjAxNDEgZWY4NTljZDc1NGE3NmZhNzdlMDg0YTg1OGUzNGMyZThmNTJhMDYzYiBsZWdhY3ktdHJ1bmsKKzYwMTQyIGVhMzg5YTI2OGI1NDQ5ODA3MjdjZTM4NTk3ZDM0ZmE5OGY4Yjk5YjQgbGVnYWN5LXRydW5rCis2MDE0MyBlYWIwMGRiODBjMjc5NTlmMDIyZjRhZDljNmQwZjM4NGNkZDczYjE0IGxlZ2FjeS10cnVuaworNjAxNDQgZWY3ZDcyZDk4NDg1YmY0MTRhODYyMTY3YjBlZjI3NThiZjllMTMyYyBweTNrCis2MDE0NSBhYzk3MGY4ODMxODc1NmNlMmFkYmQ2YmQ2YmEzYzkwYjZhNmI2NDZhIGxlZ2FjeS10cnVuaworNjAxNDYgMGYwNzJlZGIzMzQzNzMyNjE3OTQ1Yzc1YmQwM2U5NWU5NmY5ZWU2MSBsZWdhY3ktdHJ1bmsKKzYwMTQ3IGMzYmY4ZjliZWFhNzI3MTI5ZTRlMDdlNzYzYzE2NzllNWI0OWNlZDEgbGVnYWN5LXRydW5rCis2MDE0OCBlYjJlYWZkYTI5Yjc2ZGQ5YjFiMmVkYjYyNzc0ZmY1OTRlODFhZmMzIGxlZ2FjeS10cnVuaworNjAxNDkgODliMTNiNjkzODY0NTQwNjVmMDViNjZlNjVhODk0NjY4MTAzMTA1ZiBsZWdhY3ktdHJ1bmsKKzYwMTUwIGVkMzNkYTJlNzRlNzBlM2UxNGZhOTlmY2Y4ODAyOTc0ZTJkNjM1NDEgcHkzaworNjAxNTEgOTQxMWIxYjkxMjE4MTJiN2JlZjZlNzg4M2I5MzViNDRlZTEyMjk1MCBsZWdhY3ktdHJ1bmsKKzYwMTUyIGZhYmM2ODhhMDhjNjhmZmJiNWQxNmE1MzQ0ZmQwOTZlYjYzMDFmZDcgbGVnYWN5LXRydW5rCis2MDE1MyBhZDZhOWRiMWZmNDVjNTQyNzkyYWEzYmQ5NTBiYzZlNWE4YjNhNDYzIGxlZ2FjeS10cnVuaworNjAxNTQgZjZkNGEyYzQ5NTMxNTBlOGM2M2MwZTgwMmViMjRiNDljZDdkZmRhNiBsZWdhY3ktdHJ1bmsKKzYwMTU1IDhmMTVmOGRlNDIxODVhYWM0YWExZGZhZWE5MmE0MGRmNWMxODRmZjMgbGVnYWN5LXRydW5rCis2MDE1NiA4YWJkMzZmM2FiN2EzYWRjODI5Zjk0NTcxODhkYjRlNzg1MjM5NjI3IGxlZ2FjeS10cnVuaworNjAxNTcgMGFlNTlmNjA4YjQ0ZjljMTFlOGMwMzYxMGVjZmViNjU2M2Q1MWVjOCBsZWdhY3ktdHJ1bmsKKzYwMTU4IDE5OTBmYTZiOWU4Mjg3ZDgxMmE3MGFkOGMxOWY2NTc0MDYxNDNjMWQgbGVnYWN5LXRydW5rCis2MDE1OSA3OWYxNTA1Mzc1MWVkODc2ZGMyNjRiNDhmODUzZGViOWE2MDYyYzYzIGxlZ2FjeS10cnVuaworNjAxNjAgZGZmZjA0MTc1M2FhMThlMDYwNTk0Njc4ZjA0NTgxMmE0ZjhjNjZlMSByZWxlYXNlMjUtbWFpbnQKKzYwMTYxIDI3ZGFjMTY1NDFkOTA5MDg2NDI0MmU0NWQwNTUxN2M2NmNlMWQwOWUgbGVnYWN5LXRydW5rCis2MDE2MiBkOTYyMTQwNTQwNmJkZWQ1NTk0ZmZiOTZhNzNiMmI0ZGYwZTM5ODZhIGxlZ2FjeS10cnVuaworNjAxNjMgYTZiMTkwYjBjZjA2OGU3ZDI0Y2M3M2RkYjE3Mzg1ZTk3YzliODBiMSBsZWdhY3ktdHJ1bmsKKzYwMTY0IDQzMmM0YWUwZmQwNDZmZTkzZjQ1M2ExMTE5OGFjMDMxYmU4OTNmZTggbGVnYWN5LXRydW5rCis2MDE2NSAzMjQxMmZjZWIxYjM0YWQ2MzQyYWY3MTE1ZGZlNTFiZjVmMGI0NmFmIGxlZ2FjeS10cnVuaworNjAxNjYgNzI5NDk1ZjdiMjIxYTQ1ZTA4ZWU4NmQxMTEyNjQ0ZTJiZWFmMjdkMyBsZWdhY3ktdHJ1bmsKKzYwMTY3IGM2OWE3YjU1YWQ2YmZmYTU5ZmRmMTcyZDZkNWY5YTg4ZWY3MDM5ZjUgbGVnYWN5LXRydW5rCis2MDE2OCA4YTliM2IwYmU1NzM5YWFlOTYyZDgyZDUwYzIwM2ZjZmNjYWMwMGZmIGxlZ2FjeS10cnVuaworNjAxNjkgMWJlNGJiZDgzNGExNGNkMmZhYjVhMDYwZGM2MzExYjQxMjMzZDA5MiByZWxlYXNlMjUtbWFpbnQKKzYwMTcwIDdjNTRmNGEyZDQzODRlY2RhMjI0ZmQxZTAzMTEwZTUyZGRjNmU3NjkgbGVnYWN5LXRydW5rCis2MDE3MSAwYjQxYTkxY2QyNjFhMzUyN2I4ZjhlMWY1NDEyZDVlYTA2NjUzYmNiIHJlbGVhc2UyNS1tYWludAorNjAxNzIgZGYyMmU2MTgwZTY3YWM5MzU4OGJmNjRhODE1YTU0MzdjM2Y2MjJjNSBsZWdhY3ktdHJ1bmsKKzYwMTczIDI5NjQzZmJlMTE1MDcwNmE0OTJhM2NhOWU4NmI1NzAwNTA4MTlkN2IgbGVnYWN5LXRydW5rCis2MDE3NSBiNzZjNzhjZGEzYWJmZTFkNzI3NWIwYmM3Y2E0ZTZlMjIyMjQxN2U3IGxlZ2FjeS10cnVuaworNjAxNzYgZmViYTVkNWNhYzIyMWYwYmQ5MTNmZDk2ZWQzMjg1MjU3OTY1YTIyNCBweTNrCis2MDE3OCBjM2Q5ZTU3ZTcxZjJjMjM0MDE5M2Q2MmQwYjVhNWEwNDg1ODNkY2NlIGxlZ2FjeS10cnVuaworNjAxNzkgNWJlYTQ1OTJjZDdhMWI3MGUwN2Q4OTVkOGQ4YzBhMjNmNjg0ZTQ1MSBsZWdhY3ktdHJ1bmsKKzYwMTgwIDEwMWQ4NmExYWY4NTg4ZmRiNGFhNDY4ODFmZDEzN2IyYzNlZDJhNjMgbGVnYWN5LXRydW5rCis2MDE4MSBlYjRiNTBmNzM5ZjZlMWE1ZDlhNGVkNDJhOGYwNjRhZjZhMzhiYWZiIGxlZ2FjeS10cnVuaworNjAxODIgMzEwN2ZkYjkwODFlNTg0ZWU2N2I1YTVhMWY4ZjlhZmQ5MzUzYzUwYyBsZWdhY3ktdHJ1bmsKKzYwMTgzIDgxMDNmMDE5ODk2N2M5NjUzNzY4MTNkYjEzODZhNmZjOGYxNmY1NGQgcmVsZWFzZTI1LW1haW50Cis2MDE4NiA3MTFhZTBlOTljMDI3ZDVlN2Y4NWQyZDlmMzhiNzFmNThlMzI4OGE3IHJlbGVhc2UyNS1tYWludAorNjAxODcgZWE2MWU5ZWRkOTc5OWI4YTU2M2RiOWRlYjk4OTZmYzg5ZGQ3ZWY1MyBsZWdhY3ktdHJ1bmsKKzYwMTg4IDdmMmI1MjVmOWRmNDhjN2U4MDc1M2U5MjIxMTgwODA5YjZiMWJiY2UgbGVnYWN5LXRydW5rCis2MDE4OSBiNWU4MDlmOTI2ZGUxODdlYzFmYTg0OTk5ZTUxY2Y2NDllOWY4YjQxIGxlZ2FjeS10cnVuaworNjAxOTAgZmU3ZDQyMzQ3NGRlYWQ5YjZkMzJmNzk1ZWE2OGY5YjVmY2VmYmE3MyBsZWdhY3ktdHJ1bmsKKzYwMTkxIGZmYWNiNDQ2NzNlYWI3NmQ5M2E5YjMyZThkNGFjMjg2NGVlYjIwMTYgcmVsZWFzZTI1LW1haW50Cis2MDE5MyAxMmI2OTEwMTE1ZTBmZjI4NzRlOWQ5MDBiNzQ3NjI1NmFmZmM0ZTNmIGxlZ2FjeS10cnVuaworNjAxOTQgOWQ4Yzg3Nzg4OWMzYWQwYjVmYWQzOGY4ZTQ2MGE2MTZiMWQ3YzZiNCByZWxlYXNlMjUtbWFpbnQKKzYwMTk1IDAwYTY4NTk2ZTUwNjUwZDQxZDgzNDNlMDcyZTlmNzA0ZTJkMmZkZDEgdHJ1bmstbWF0aAorNjAxOTYgZTA1MDRhMWM1ZjlkNzJkNzE0NGIyYjU3ZjQ5N2RiN2E1NTZhYjJkYiB0cnVuay1tYXRoCis2MDE5NyBlNDNjMmFiNmE1N2M3Njk1ZTg4YTc0YjU5NTcwNTE3MWVjMWEzMGIzIHRydW5rLW1hdGgKKzYwMTk4IDA5MTgwNjM4MWNmOGQ2YzE1MTJiYjgwOGE3YWQwNTA0OGZhYmM2MjYgbGVnYWN5LXRydW5rCis2MDE5OSBjM2NlNTZjN2VjZDExYmFkMTU1ZTdjMmFhOTMwNTNmN2Y0MTFmOWNhIGxlZ2FjeS10cnVuaworNjAyMDEgN2NhMDdmZTAyOTU4ZDEzOGI1NzMxMDM3ZmJhNzliOTBiMzE5Mjk2MCBsZWdhY3ktdHJ1bmsKKzYwMjAyIGJiN2VlM2Q4OWMyZjYwNzY4MzkwNGE1NTNlM2Q5Y2JkOGNiYjVmOGYgbGVnYWN5LXRydW5rCis2MDIwMyA1NmYwZmJhZWI2N2ZkZmM4ZTRiNjcwYTE3YzE0ZjFiOGMwMTRmYmJhIGxlZ2FjeS10cnVuaworNjAyMDQgODY3YzBhYWQ3OWMxNmE3MWVlYjE1NzIyZjcwYWQ1NmEyNDc2YTQwOSBsZWdhY3ktdHJ1bmsKKzYwMjA1IGMzZWQ2ZGE3YTE0Njg0NmMwM2NjYTVmNTg3MzM0OTVmYjgxZGFhZTUgbGVnYWN5LXRydW5rCis2MDIwNiA1Mjk4YWJiZGQ5MWNjZWM2ODM2N2M2NmI0YWZlN2JjMDgwNDgwNDk0IHB5M2sKKzYwMjA3IDZiZDQ4NDliNTQ1OGRlNTUwMGQzMDUyYWQ0YmY5ZjRmMDM4MTIyNjYgbGVnYWN5LXRydW5rCis2MDIwOCBkZjgwYzZiNjA2YTQ4NmNlNTBkOTg2ZjY2NzRhNzE3YmE4ZDg4MmQ5IGxlZ2FjeS10cnVuaworNjAyMDkgZDYyYzEyNmZlNTZhMmQ2NDMxN2I2NzUzMDlmMmQzYWNlNzA4ZjJlZSByZWxlYXNlMjUtbWFpbnQKKzYwMjEwIGZlZmFhMGU2NmZkZDBlMzUxMjEzZmJhYjA5MjkxNDFlZThiMTg4ZDcgcHkzaworNjAyMTEgZWI1OTEwMDkyZjU5YmJiNzVkYjZmMzgxMTU0MTFjYmFmM2NiOGViMSB0cnVuay1tYXRoCis2MDIxMiBjNGI5OGJjMTBiZTdlMTE2MGU1MWI5NjZkYzk5ZjhlMGU2MWUyNmM1IHRydW5rLW1hdGgKKzYwMjEzIDJlMTUxMzc2OTQxZjhiNWJiNjk2NWJiYjg3NDVkZjk2OGM3NmU2ZTYgbGVnYWN5LXRydW5rCis2MDIxNCBkZmQyMTc5M2E1YjU3NTExNjllZmU4NmMyMGRiZTljYThjZTIxNmE5IGxlZ2FjeS10cnVuaworNjAyMTUgZGZiNmYzNjdhNDA2YmJhZTllNGU4ZjY2Njk0MzA2MDZiZTBiNTRjNCByZWxlYXNlMjUtbWFpbnQKKzYwMjE2IDlhMTIxMWM3N2UwMjhiM2FiY2IzODMwYThiZDIyZDVmYmQyMGJlODUgbGVnYWN5LXRydW5rCis2MDIxNyA2OTU4MmJiMTExNGMzNmJkZmU0MzQzMjE2NzM3MWZjY2M2MzQ4MzYzIHRydW5rLW1hdGgKKzYwMjE4IGE0MDIyOWFkZmEyY2NkOGQ1MzE1OTdiODg5ZDhkYjE2MGFmZjdiNWYgdHJ1bmstbWF0aAorNjAyMTkgYjI4NTRlOTc0Y2E5NjcwZjYwYmNkYTFkYTBhOGY2YjZhMWQwMjMzOCB0cnVuay1tYXRoCis2MDIyMCBiY2NjNzY4MmM2ZDRiYTRhNTJkMmQ2NGRmYTkwZGQyN2ZmMTdiYmFjIHB5M2sKKzYwMjIxIDAwNTkyMWZjZmY0M2FkYmM4OTNiY2U3Nzc3NWY2Y2IyNWRjZGRkMTcgbGVnYWN5LXRydW5rCis2MDIyMiAxNDhjODdhNjY3YzIwMWQwNmYxYjc5MjIyZjA2MTYxN2Q1OWQxYTZmIHJlbGVhc2UyNS1tYWludAorNjAyMjMgZmRkNzRiZGVlZTE1YmQ0N2MzNzc5YmM4NTk1Y2Q0YzllZmM1NzZkNCByZWxlYXNlMjUtbWFpbnQKKzYwMjI0IDRjODMwOGFjMjBjZGQ5ZGRjMzFhZmIxZGQ5YmUyNzMyZjYwY2I4ZDcgbGVnYWN5LXRydW5rCis2MDIyNSBiOTM0ZDJlZTYzZjYzOWJkYzViY2I5ZTYxNjJlNjZmZTc5ZTljYzBjIGxlZ2FjeS10cnVuaworNjAyMjYgNzMzMzM1YjIyZjhmZDc4YTMwZmEyNGI1Mzc4Yzk2NmRkMjMwN2RiYyBsZWdhY3ktdHJ1bmsKKzYwMjI3IGQ5YTYwNzUyNTU4ZWY3ZDg0ZDI5MjQwZTEyMGU5OTExNDM5NTQ2NzcgbGVnYWN5LXRydW5rCis2MDIyOCA5NWE0ODczNTE3NDA4MGFlNTc4MjI3YTVmNzAwN2U0NmE4YTYwOWZkIGxlZ2FjeS10cnVuaworNjAyMjkgY2RjNGFlY2VkZDRjODVjZWY2ODRlMDFlMjgxZGViM2FlMDRjZmZkNSBsZWdhY3ktdHJ1bmsKKzYwMjMwIGNjNzNhOGQxOTM4YjQyZWM0YjlmZTcxZGQyZGQwYTU4ZjliMzIyMGQgbGVnYWN5LXRydW5rCis2MDIzMSAwMTJmNTE2ZDRkMjJmMzhlYmUwMjllMzllZTIxNjA1MThlODY2ZDFkIGxlZ2FjeS10cnVuaworNjAyMzIgZmVkOGMzNmQ4NzE1MGMzNzAxMmQzY2UzMDI0MjUwY2NmOWFhOWYyYyBsZWdhY3ktdHJ1bmsKKzYwMjMzIDIyYTlkOTc1N2ExNjk3Yjc5MjNjZTM3OTg1M2ExODA5NDMxODkyNTkgbGVnYWN5LXRydW5rCis2MDIzNCAwNjNlZDM3N2ZkM2Q2MmY0ZjEzNTcxNDBhYzAwNjE0M2FlNzVkZmI2IGxlZ2FjeS10cnVuaworNjAyMzUgYzBmMDQ4MzU2YzM2Yzg5MDJlMWEyODYyZmQ1NTYzOWNjNDhkNGI0MCBweTNrCis2MDIzNiBlMjJhOTJlZWM2NjIwMDY3NzVjYmNmOWFjZTY5MjBkZjg1NDgyMzNiIHB5M2sKKzYwMjM3IGYzYTlhZDQ0OGNjYWQxOWViMzcyNWYwZDkyYTI3NDQxNWY1NmQzNTYgbGVnYWN5LXRydW5rCis2MDIzOCA0MzcxNzIwOTNhMjNhMjQyMTA2YTMwOGFiM2FhYWZkM2RkNTdkYjg1IGxlZ2FjeS10cnVuaworNjAyMzkgY2JhMzA4NGIyN2U3MjY5MDY0OTQzYzdhZDJjOTc3Y2M0NWVlMWI4YSBsZWdhY3ktdHJ1bmsKKzYwMjQwIDk5OWE1ZWU5Y2QyYzNhMWY3NTEwMTU5ZjU0OWZlMmNiODZlNzhjMWUgbGVnYWN5LXRydW5rCis2MDI0MSA5NDhiYmEwZTI0N2I4OTU5MjlhYzJjZGE1YjNkYzNiMmE0MmJlNTNkIHJlbGVhc2UyNS1tYWludAorNjAyNDIgZDhhYjMyODIwYjE3ZGI1YmFjMTY2MTFlNjRhZGNjN2E1ZWJiN2JkMiByZWxlYXNlMjUtbWFpbnQKKzYwMjQzIGYyZGE3ZmNmM2EyNDRhMjA5MGRmYzkzNDk4YWRhMzRkZGRjZjVkOTIgbGVnYWN5LXRydW5rCis2MDI0NCA3ZmEzYWU5YmEwMzFkYWY2ODlhMjYyYTQ0OTIwNWUwOTYwMTliNTE2IHRydW5rLW1hdGgKKzYwMjQ1IGMzM2YyNzc5YTkzODYwNGMyOTFmY2NjMzEwMjRkMjBiMjBjNTUxMmEgcHkzaworNjAyNDYgZWJiYjdiYjAwMzNiYzM0Yzg3ZDI2YzI3YTg1ZjBiZjU4OGY0MjkzNCBsZWdhY3ktdHJ1bmsKKzYwMjQ3IGRiNjI0YjFiYTA2ZGU5YjVjODk3YWY1NjIwMzRiNTQ5OGU1NjYxY2QgcmVsZWFzZTI1LW1haW50Cis2MDI0OCAyOWZmOTA2NmRkMGM4M2RkZjQ1MGI3YjRmMDYyNmUwYWNkNzRkYWYxIGxlZ2FjeS10cnVuaworNjAyNDkgNjg1ZTk2ZDIwODgxYmFkNmRiMzQ0ZTVhMTRmMDE0NzA2NmNlYThlNSBsZWdhY3ktdHJ1bmsKKzYwMjUwIDhiZDVmMGRiN2Y1ZDEwNzBhMmQ0YzAwNGMwNDhiZDE0NjA3N2JlOTkgbGVnYWN5LXRydW5rCis2MDI1MSBhOGI3NTAyMTBiNzk5MDkxZThiMzI4MDMwYjY5MTZhNmEyNGQyODg1IHJlbGVhc2UyNS1tYWludAorNjAyNTIgNmVmM2JlNDdhNDRlN2U0NmMxZmExZjBjZjMyYzdmMDE4M2IyNzJkYyBsZWdhY3ktdHJ1bmsKKzYwMjUzIGQxNmRlNjI1MmY3ZmE0MzhlZjRmNjRhZjc4ZjNkYjVmODQ3MWYyYmIgbGVnYWN5LXRydW5rCis2MDI1NCBlOGVmYTYyZWVjMTU3ZDBmMjVkODdmYmI1NmVkZDEzMzZiY2JhYWY2IGxlZ2FjeS10cnVuaworNjAyNTUgYThjNzQxMjUzNzZkNjUxOTQ0NmY1OTQ3MTJlZGE0NTEzNzAxN2U1NiBsZWdhY3ktdHJ1bmsKKzYwMjU2IGY0YTZjMzIzNTAwYmVlMDU1MjA2ZGEwMTNmZGE2NTFmMmNlZTFlZDggbGVnYWN5LXRydW5rCis2MDI2MSBhNmYwZTRiZmMyZGQ3MGZlYjQyYjhjOGIyNWYwMWEwODc5ZDU5MjMzIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjYyIDdlM2FmZTkwNjQ0OTViMmIwZmViOGFhNWU0ZTVhN2NmMjMyZjAyYzEgcHkzay1jdHlwZXMtcGVwMzExOAorNjAyNjMgM2Y2MWI2NjQzYjdlZWExZGRhNTdhNzc3NTM3ZDM1YTYzZjFhZjI2ZiBsZWdhY3ktdHJ1bmsKKzYwMjY0IDc1N2E3ZjMxZTQ2MDkyYzA4YzQ2ZGRkODcwNDI2OGYwNzRlMmJlZGYgbGVnYWN5LXRydW5rCis2MDI2NSA2OWM1NzAzZDIwZmI0MTA5MzRhMWUzMGQ5Y2I2M2ZlYmMzZGE2MDI1IGxlZ2FjeS10cnVuaworNjAyNjYgZWJkYmU4ZGY2MmIwMzk4NTM0ZTkzNTUxY2I1ODcxMGFmNjdlNTdhZSBsZWdhY3ktdHJ1bmsKKzYwMjY3IDQyNjhiNzdmOGU1NjdkMGMwMzZiMzM1ODUwZjQ0MDExODQ2NDZmYmYgcHkzaworNjAyNjggNzQyYTI2NGNjZTRmYWIzNzgyZjcxMTM4OTg5NzA0ZGI4NzdmZGUwOSByZWxlYXNlMjUtbWFpbnQKKzYwMjY5IGNlMTU5ZDAxZWUzMjJhNzcxYWM3MzU2ZmMxMzEwZTBiZDQ3NDRiMmMgbGVnYWN5LXRydW5rCis2MDI3MCA2ZGEwZWVhMzY3ODNhOTMwODkxZTNiYWM3OGIxNDRlZmQ0NDRiOWZlIGxlZ2FjeS10cnVuaworNjAyNzEgM2JkMTljOGFmMmIxMWQxZjEzY2QxMDUwNTNmMjBkYmY2ZWI0MjgxYyBsZWdhY3ktdHJ1bmsKKzYwMjcyIGZhZTU0NTkxYzAzNTY1ODYxMTc1NjZmYzI2NjE0ZTcyZTYyZWE1NWUgbGVnYWN5LXRydW5rCis2MDI3MyA4NDQyMDMyMDlmYjA2ZWNiZTg1MzRhZTU5YWMyYWMxYjgxNTQwY2RkIGxlZ2FjeS10cnVuaworNjAyNzQgNTQ1NThlMDI5YzJkYTQyMGM1Y2E2ZjJkMWNmYmNkOWNkYzAyMTNlMiBsZWdhY3ktdHJ1bmsKKzYwMjc1IDkzNGE1OWQ1MjU0MzE0ZDM3M2ZkY2MzY2EyODljNjdiN2VmMTg2MTEgcmVsZWFzZTI1LW1haW50Cis2MDI3NiA5OTcyY2NjZjZhMzNmNDQ5YTU5ODkyNWQ3NzgzMzdiNzEyNWEzODRiIGxlZ2FjeS10cnVuaworNjAyNzcgMTIwOTkxNDM3MjRmMzRjY2NkOWE2MmFmMGNmOGEyMTViMWRmYjFmNCBsZWdhY3ktdHJ1bmsKKzYwMjc4IDA4ZWIxYzQxMTExMzkxZGJiMWNkZjFmNjNlM2JmNzdmMWM4YTE1OGEgcHkzay1jdHlwZXMtcGVwMzExOAorNjAyNzkgNTNlN2JjZmI1NGE0NWY1ZmQxY2IxNmUyNTNhZjQzNWMyN2JlYmEzMiBweTNrCis2MDI4MCBhYTgzODk1OGU1NGFiMTM4OGU0ZDljZDg3Mzk5Njc0ODUyM2NkMTRhIHB5M2sKKzYwMjgxIDY1NDdiZTExZjQ0Mzg1ZmM4MGYzMGY5ZjMxN2MyYzY2NzQ0ZTQ1NzggcHkzaworNjAyODIgOGJjYThlYjM2ZTM3ZjUxODlkMDk1MzcxYmU3ZWFmZGQ5MzEyZjFhOCBweTNrCis2MDI4MyBiYmM3MTlhOGI1OGJmNmQ5YzRiN2ExZmUzM2RjYTA1ODBjZTRjYzA5IGxlZ2FjeS10cnVuaworNjAyODQgMDVmMDFkZDc1OGExYmRmZmQ5ZmMzMDdhODljNDY0OWViNTliNjM3MiBweTNrCis2MDI4NSAzYTQ0MmEwMDlhODNlNTg2ODY4ZDQ2YTBiOWMwOTBlOTNmYzM5Nzc4IHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjg2IDhlNDM1YmRkNGJjODk2NmFhMzlhZWVkMTlhMDY3NGI2NWUwMDc4MzkgbGVnYWN5LXRydW5rCis2MDI4NyAxYmU5M2RkMTc5ZGY3YTkwMmM0OWI0NmM0MzhhOTE2NDRlNTg0NTUyIGxlZ2FjeS10cnVuaworNjAyODggZGNjZWFlZmE2N2ZkOGU1ODJlNWNlMTRlOTZhZGQ0MTA1ZWUwNWQwZSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI4OSAyN2QyMjdhODdhNzM3YmJkMTEyZjVlZjk4ZjFhZjQzYzE1OGFhMGViIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjkwIGVmNDJiZDdmY2JjODNlMzkwMmQ4M2ExZDBkMDBlNGJjY2VjNzUyMTggcHkzay1jdHlwZXMtcGVwMzExOAorNjAyOTEgZGRiMWU0OTlhMDFmODE2M2RlMTMzYWVmOTc3MjZiOTg4ZTBjODJiYSBsZWdhY3ktdHJ1bmsKKzYwMjkyIDNjNTdhNTFmNzM5NGY4NzUzMjhkMzk3MGUwOTM0OTkzNjcxNWUyYjggcHkzay1jdHlwZXMtcGVwMzExOAorNjAyOTMgZDhlODgzNThmNmMyNDA4MjhiOTZjYzZjMzI1MTM4NjE2NmIwZjY5ZSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI5NCA0MjQ0OWY2ODI4ODViYTA2ZWY3ZjVhMGZkM2NjYmQ4Njk1ZDRkODI3IHJlbGVhc2UyNS1tYWludAorNjAyOTUgNTk1MGQ4ZGU4MTM0YjU0OWVmODJhYTY5MTFlMzBmNzlkYzM5ZGQwYyBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI5NiBiNTQ3NDZlMmE4ODBiZDM1OGFiZGQ0MDk0NWY0NWY3NDk2NTMzMzBmIGxlZ2FjeS10cnVuaworNjAyOTcgOTQ2N2VhMjAwNDZjMzFkOGNkN2I3NTA1ZTE0MWE0MGE4NDUwNTA5MSByZWxlYXNlMjUtbWFpbnQKKzYwMjk4IDFmNGIxYmFiYjllMDdiMWMzZGE1ZmU3YjIyNjZhMjRhZjA4MDY4NWUgcHkzay1jdHlwZXMtcGVwMzExOAorNjAyOTkgZWExZDQ3YzdhNDY3NDdiMTVhM2MwNjc1OWNhZWQ1N2I2MjA5MWZmZiBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDMwMCA4OTEwNTBhNmE1YzkwMTcyNzc0ZmVjM2UzYmVjZWJjOTdjOTI3ZTc0IHJlbGVhc2UyNS1tYWludAorNjAzMDEgZmI2OGU0NDU4N2VhMjU5ZDUyMjAyMGFlZjE0ZmMzNjkzYTg4YjE3ZiBsZWdhY3ktdHJ1bmsKKzYwMzAyIDk2ZjVkY2I0ODBhNjAyZjlkZTUzY2Q5ZDIzZWUzN2Y2NDgwZTYxZTkgcHkzaworNjAzMDMgODUxMDMwMTYyZDcyODM0ZjA4YWViOTMwYjViYTQ0YTg5N2UyNjM0ZCBsZWdhY3ktdHJ1bmsKKzYwMzA1IDY2NmNlYjY3OTlhNzgxNTcxZTVkZDM5ODk2OTJjMGRjYWYyZTRlYjkgbGVnYWN5LXRydW5rCis2MDMwNiA2YWUyMjAzMGUxNTI1NzZlZjY4YzZhMGEyYjEzOWI0M2FmOTg1YjNhIGxlZ2FjeS10cnVuaworNjAzMDcgZDM0N2MxZjljMzhhZDY1OGI5YTdhY2M3YzJjN2RmODA5NTcwN2NkNyBsZWdhY3ktdHJ1bmsKKzYwMzA4IGM2ZTVjNjA0ZWE2MWRlZTJjYTJhNmVhYzJiM2M3Y2NlNzJlNjJjZGEgbGVnYWN5LXRydW5rCis2MDMwOSBiZTQ0ZmFlZDU0MmQ3ZmQwOGY2MWU0OGUyZTRhNDM1NzI1YjNlN2I1IGxlZ2FjeS10cnVuaworNjAzMTAgMGYwOTNlOGIyZjUzMWI0YjE0ZmVjOWI1NGM0MWI4Y2E5MjkwYzRlZSBsZWdhY3ktdHJ1bmsKKzYwMzExIDMwN2Q0MTA5ZTIzZWE1ZmRlYTBhYzJiNDMzYWQ1ODk0YWNjNjYyNmQgbGVnYWN5LXRydW5rCis2MDMxMiAzMTI0Y2M1Yjk3M2YxN2M0ODk3MDdmOTA4Mzk5MWYxZDVjYjYyMDgzIGxlZ2FjeS10cnVuaworNjAzMTMgYjcwNDg1MDExMjE0NTM4ZjNlOGMxMzcwYTg0YTdjOGVkNmE0MmU0MCBweTNrCis2MDMxNCAzN2Q3NjI5NzVhOTUzZGUxY2M2ZTU4ZTBlNzE5MWE4MDg5YTExNmMwIGxlZ2FjeS10cnVuaworNjAzMTUgMjIxZGVjMDNlMjYxMjU3YmI0NzY3YjM3MzM2ZTkyMTFhY2Y4YWVhMSBweTNrCis2MDMxNiBhZWRiN2FjMjYyN2VlNDI1MWYzZmQ2YWJiODE1MDZjMDA4NDg5YWQ3IGxlZ2FjeS10cnVuaworNjAzMTcgNDdiYjMxZDA2NTc3MmQxMDA3YTU0YWI1YTFkNmNjZWZkZDYxZjY2NSBsZWdhY3ktdHJ1bmsKKzYwMzE4IDY0ZDEzZjQ1NmQwNmJhY2YzZTkwMzQwOWVlNDIxNDdkYWEyMjI3YWUgcHkzaworNjAzMTkgODQzMTYxN2YyMGUyYTk1YWJkNjE4OTkzZjhkZjI0NWUyODhjZjM0YyBsZWdhY3ktdHJ1bmsKKzYwMzIwIGFhYjVjOGU4ZjM4ZGMwMzM5ZDIzMDhhZWI1NWFiZmUwZTE2ODY5YmIgbGVnYWN5LXRydW5rCis2MDMyMSBhYWE1YTc5NGY4ODdlMjFkMWNmYjY0YWY3OWEzOWQ1MjE3NDUyMWRlIGxlZ2FjeS10cnVuaworNjAzMjIgNWUwYjQ2MGYyOTRhNWM3Y2MxZTFhZGM4MWFkNzQ3MmU0MTVhMmNhMCBsZWdhY3ktdHJ1bmsKKzYwMzIzIGE3NTBhMjZiNWZhZGE2MmU2YTBlZDk5YTk2YmJkZTIwNDNmOTIyZTMgcmVsZWFzZTI1LW1haW50Cis2MDMyNCA1MWJiN2IxYWU3NjU5MTA1ODgzNmYxNjg3YmIwM2Y5ZmVkYjA0NjlmIGxlZ2FjeS10cnVuaworNjAzMjUgZGYyM2Q1MjQ5NTUwZDdmNzg4ODdmZWIwNzZlNjI3NWYwZjZkZDdhOSBsZWdhY3ktdHJ1bmsKKzYwMzI2IDY5OWIzNzE3MGNhZGM2YjAxOTRjZmE0YzM2M2ZmNWY1OWQxNjAwY2IgbGVnYWN5LXRydW5rCis2MDMyNyBjYjU4MzlkMTMyMjYxNmEwMTQ5Nzg4Mzc4YTJkODZlNGZmY2M1OTI3IGxlZ2FjeS10cnVuaworNjAzMjggOGNiY2E5MWUzMTU0OTcwYmI0NzU2ZDI4ZjI1YWVlOGQ0MTlhOTZiZCBweTNrCis2MDMyOSBmYmI5YWU5YTUxNGZlYmE5MGNhYzcyOWJiM2NkOTkyN2Q1NGQyMzMyIGxlZ2FjeS10cnVuaworNjAzMzAgNWQ3ODJjOGQ0MDE2NjhjYjkzZDYxOWM0ZDg0Njk3MTY3ZDQ1MDMxYSBsZWdhY3ktdHJ1bmsKKzYwMzMxIGRjYTNmNjQ2ZThhMWZiNTlmZjI4YWM2Njc4YjQxOTQyYWZlZjA0ZjkgbGVnYWN5LXRydW5rCis2MDMzMiBmM2I1ODQ4NDNmOWZiZGM5YzU0YWI1MTQ1NmU2ZmM3ZTA3NGRhMGZjIHB5M2sKKzYwMzMzIDk2MmM0OTFlMTdkNmNhOGM2ODAzYjAyZDBhMjcxZDA3ZGVhYjkyNDAgcHkzaworNjAzMzQgNWY5ODQ0NmUwZjFiYjdiNzU2MjRiYzU3MDI5NWU1YmYxZmE0ZGMwMCBsZWdhY3ktdHJ1bmsKKzYwMzM1IDUwZjJkN2JkYWJjOWE0NmM3MDljMTE4NmIxMWJjY2IxMzc4MzU2YzUgbGVnYWN5LXRydW5rCis2MDMzNiA5MDkzOTA4YTBjZjVkNGMyY2Y2N2Q2M2Y5YTI2YTk5YTlkODU4OTkyIHJlbGVhc2UyNS1tYWludAorNjAzMzcgZTMzNjI1ODk1NTUwMjYxN2I1ODMyOWM3ZmEwNzBiNGU3NzkyMTVkMCByZWxlYXNlMjUtbWFpbnQKKzYwMzM4IDViMTdiNDRiZTFiZjg3OGQ2OTFlZWNmOWYzMmM5NmU4ZTQyYmNkYjUgbGVnYWN5LXRydW5rCis2MDMzOSA2MzVhNzU2MzYwZjE4YzlhMTE1Y2NiZTI1NjRhNzYzNmRjYzYxMjQ0IHRydW5rLW1hdGgKKzYwMzQwIDcyYTY3MjdiZWQ5YzllMTRmM2U1NTQ2MDNhZGE3NDIyOTBjZTg4YWUgdHJ1bmstbWF0aAorNjAzNDEgNmFkYmQ2MmI5YWJmYTBlMzBiNTk3ZDdjZTExMGQ5ZTEyNDNiNmJlYSB0cnVuay1tYXRoCis2MDM0MiAyY2EyYjA4NDBiMzVkMzg0NWQ4MGJkNzc4NjM1YTA2NWQzNjZhNjQ5IGxlZ2FjeS10cnVuaworNjAzNDMgMjBiZjk0Mjg1ZWVmZTg2ODY1YzE0NDkyZmMwZGZmMDc3YzBmMzUxZSByZWxlYXNlMjUtbWFpbnQKKzYwMzQ0IDRkZDBmY2YzZGFmNzNlMjZmMDNjMmI4YjdlZDExODhlMTY5MTE1ODEgbGVnYWN5LXRydW5rCis2MDM0NSBmZjU4YjMwYThkNTI4NzFkNmNmMDU0MmNmN2VhMWE3MDRkOGExNGViIGxlZ2FjeS10cnVuaworNjAzNDYgNmJiZjZmZGMxNTJiOWU0MmVkYmYxMWE2MDVjMjE2MjMxOTk4MWU2MiBsZWdhY3ktdHJ1bmsKKzYwMzQ3IDQ2N2M3MWYzNjVmZGViNGY2OThlYzQ3MjEzNGFiODRiNzE5ODRmY2QgbGVnYWN5LXRydW5rCis2MDM0OCBmMDE4MTNiMzNjYTRiY2RmYjRjZTEzNTVlN2QzYjFlYTA5ODhlYTA4IGxlZ2FjeS10cnVuaworNjAzNDkgNjJmMGJhNzQ1MzU3ZjA1OWJlYzZkZGQzYTQyNTdiMjgyOGZhYzdjYiBsZWdhY3ktdHJ1bmsKKzYwMzUwIDdjMDIxODJlMjk3OWEyMmVlNzU4Y2EwMmYyNWY4ODJiMmI4NDBkNDggcHkzaworNjAzNTEgOWI3NGM5YzhiOTJjNzlmYmY5MDRmNDY3NmU3M2NkYThkYzM2ZjBkNyBweTNrCis2MDM1MiBmNWU1MmE1M2ZjZDE0ODM0ZjYzNzJiNmNlMWI2ZWFkOTg5MTNiMjA4IHB5M2sKKzYwMzUzIGVlMjQzY2E2NWY1ZjU0NjhiZDA5NjM5YzgwNzA0MmZmM2VjZGY2MmUgcHkzaworNjAzNTQgZjE1ZDNiZjRjYTU2YTEyZDFiMDZjNjI2MWI1MzBmZjE4MDQ1N2I0YyBweTNrCis2MDM1NSBlMjI0YWQ0YjhiOGNhZTMxNmZkYTA0YTI1OTc1M2FlYTJlNmEwNTU2IGxlZ2FjeS10cnVuaworNjAzNTYgNzA3ZGQ5ZjM4NGYzODk2MjRiMjBmMjEwYmFiOWI5YjQ3NTEwNjg3YyBsZWdhY3ktdHJ1bmsKKzYwMzU3IGZjZmExMzE5OWVjYmRhMjllZDk1OTFkNTJhZDc1ODhjOGJiM2ExNzYgbGVnYWN5LXRydW5rCis2MDM1OCAxZDcxYmY0NzVhODVmM2FjNjY3ZWY3ZTMwNTNkZWJhZTUxMWQ4NWJkIGxlZ2FjeS10cnVuaworNjAzNTkgMmU0ZGQzOWJmNjkwNTYzMjY5ZjUxNWU3NzQwNjE0NWUyNGY5YTljMCBsZWdhY3ktdHJ1bmsKKzYwMzYwIDYwNGFhYzQzMzdhNWM1YjEzNGFhOTVjNTFjNmJiYjM3MzQ3ZTUxNGEgbGVnYWN5LXRydW5rCis2MDM2MSBjMzE1YjY3MjQ1ZjdkNTRiMDMwYTUzZTI0ZDA1MDRkNDdkZGNjZjRkIGxlZ2FjeS10cnVuaworNjAzNjIgYTNkNTcwMGIxZDVhM2UwNjA3MDc3YjVjZmU0MTY1MjJiZTNmNjRiMiBsZWdhY3ktdHJ1bmsKKzYwMzYzIDFmZjJiYjUxODdkZmY5MmE1NDIzZmZjOTEzY2I5YTJkNTc1OTI0MTYgbGVnYWN5LXRydW5rCis2MDM2NCA4NWNjYzdjMTU0MjVkZTgyNzhhZDQzMzI5ZjJmMmJmNDA5OTE0OTA3IGxlZ2FjeS10cnVuaworNjAzNjUgYjA2NGUyNWZiODQyMzQxOWY3Nzk5ZTNlY2FlMzVkOTU0ZjhiNjBjYyBsZWdhY3ktdHJ1bmsKKzYwMzY2IDU2MWMwNjVlM2YyZDVmZThlZmEzYzU2NDkyZTM1YWYxY2VlNTdmOGUgcHkzaworNjAzNjcgMGE3MGY1YjMwYjhhYzE4N2E0Nzk3OTQ2NWZlNDJmNDJiYTEzMmU4MCBsZWdhY3ktdHJ1bmsKKzYwMzY4IDIyOTQ1ZGJjZDAzMDFmODY3N2JmNDBlMTI4OTE5NzM2YjBmMTE2YzMgdHJ1bmstbWF0aAorNjAzNjkgNDcyNWM4NGIwNDIyNzliOTU2OTJkMzJkMTYxNmNlZmYyMGY1YjliZCBweTNrCis2MDM3MCBmN2QyMzYwZTk1M2RlN2NlOWQ3MzljZTgyNmM3ZmJjMzQ5MDFiZmY5IGxlZ2FjeS10cnVuaworNjAzNzEgYWZhNTk5MzIyNGU1NTYzMDY0ZWFhY2MxM2YwMmY5YjY4ZWI3NjYyZiByZWxlYXNlMjUtbWFpbnQKKzYwMzcyIGJlMzE0MGVjNjdjOGY2MzA4ZjQ4N2EwYjNlNmNiMzRmNTg2MTlhNDUgbGVnYWN5LXRydW5rCis2MDM3MyA3OWY0MzlkOTlmOGMzYjhiMTkwNjc1N2VkYmMzMTNkNTNlYzVkNDlkIHJlbGVhc2UyNS1tYWludAorNjAzNzUgNjk1ZTViZjNhZjljMDU2OTIxNGZjY2QzN2FlMjVmNjcwMGRmY2JlZiBsZWdhY3ktdHJ1bmsKKzYwMzc2IDcyN2NjODEwZDY5MGJjZTg4NDY2NDM3MjFkNmM4N2YxMTFlZDVhNjEgcHkzaworNjAzNzcgZjA2MmRkYTU0ODk0ZjI0MGY5OGEwNDg1NGYwNzYwMzRkMzI2NGRlMSBsZWdhY3ktdHJ1bmsKKzYwMzc4IGVhM2ZlMzAyZDM5MjA2NDBmYzYyODg3NTA2YjVhOWE2M2ZhZjFkZDQgbGVnYWN5LXRydW5rCis2MDM3OSBlYmZiYWExMDUxZTJkMGQ3OGQ2Y2RkMjE5YjU1OTAxMTU1Yjc4Yjg5IHB5M2sKKzYwMzgwIDUyMzJmMDdkOWM4ZTNkYjM4OTI0ODRiMjdmMWZlY2UyN2U3YWI0YWIgcmVsZWFzZTI1LW1haW50Cis2MDM4MSAxYzlhYzAwYzQ3NTg3OTYxNWJjNzFjMWUzYzAxN2M3OTM3ODc2ZWQyIGxlZ2FjeS10cnVuaworNjAzODIgNDNjYWY4MThjZmYwNzI5MWMyODUzN2Y2ZDQxYzdkZmVhZjQ5N2JlOCB0cnVuay1tYXRoCis2MDM4MyBlZjJkM2JmODM4M2RjYmIyNTZlN2E3YTg2YTQ3Mjc3NjBkMjRmMjUzIHB5M2sKKzYwMzg0IGYwN2U2ZjMyOTc1NTNlN2M1ODRhODNjN2ZlNzQwNWZkNTU4MTM5NWUgcHkzay1jdHlwZXMtcGVwMzExOAorNjAzODUgZTYxNGQyNDhiZGQxMDE1N2JmZjc3ZTRiNTBkYzVjZDM4OTU2NWI3ZSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDM4NyA1ODNhY2UxMmM1Y2YxMzFjMGU0NjlhYWZmMWY0MWYzN2FjOWZjYTk1IHJlbGVhc2UyNS1tYWludAorNjAzODggMTVmNWI3MzFlMDBiMzgxNWEzNmEyYmJkODFlZDZkZjUzNjQwZWRmMCBsZWdhY3ktdHJ1bmsKKzYwMzkwIGEyOGQwYjE0Yjc3ZGVlZjQ1YzNhN2I4YTBmNTRmZGZjM2RiMDllYjEgcHkzaworNjAzOTEgMmMzZDQ5N2ViZmQ2ZGJhYWZjMjc4MDY0YWRhM2Y2NmNmNWI4ZmI1NiB0cnVuay1tYXRoCis2MDM5MiA5NGYxOGMyZGVhYTVkYWFiZTJiMjIxZGFmNWZlMjc2YjU4YjM2OWIxIHRydW5rLW1hdGgKKzYwMzkzIDBkYTJlZjlmZWRjMDMyZjA5N2JhZTZhZjA0NWQwNmZiODcxMmJjYzAgdHJ1bmstbWF0aAorNjAzOTQgNmFjN2QyZTlhM2JjNDAyNTA3MTI4OGIyZjY3MmRjYmMwNjA2M2U1ZSBweTNrCis2MDM5NiBhYjY3MjYwNzM3YjFjODZlMTMxZGFlNTNhNmU3MGQ2NzI3ZTk0ZjNiIHB5M2sKKzYwMzk3IDE1ZThiMzQyNTRlY2ZiNWY3ODg1MWMzZDZkNDNkNGI3ZjUwMWNhMjIgbGVnYWN5LXRydW5rCis2MDM5OCAxZTU4M2ViNzFiM2ZiMzYxOTc5ODk4YmM2Nzg5NDBiNTJhMWVjZjA0IGxlZ2FjeS10cnVuaworNjAzOTkgNzdkMDUyY2UxZjRjN2M1ZDM1MDRjN2MxOTllNGJlZmU1ZDEyYjJmZiBsZWdhY3ktdHJ1bmsKKzYwNDAwIDc1NjQxM2MwZmYxZDlhYTg3ZTQ1MTE5MWNhNjNjMWRlODNiYWI1YTcgbGVnYWN5LXRydW5rCis2MDQwMSA3YTZhODBlODRhOGEwMDZlNDY5N2YzZTIzMDI4NDU2ODFlODU2MTk2IGxlZ2FjeS10cnVuaworNjA0MDIgZGM0NmE2N2E3YjdiNzBkMDExN2IzZjUzZjI5MTIzOTNiMDZmNGNjZCB0cnVuay1tYXRoCis2MDQwMyBiZDI0NmYzMzY4N2Y3NTc1YzQ5ZDZlMDMzZGQxN2MyMjBhYmE4ZTFjIGxlZ2FjeS10cnVuaworNjA0MDQgNTQ2NzNmNzI0MTA2ZWIxZmU2ZTFmZDgzMDg0NTFjZDJmMjA5MWYxNCB0cnVuay1tYXRoCis2MDQwNSBlZmVhNDIxN2E5NTQzM2NlMzBjZGEzZGM0YTgyYTE1NTQ5NGM2MTEwIGxlZ2FjeS10cnVuaworNjA0MDYgNDE4YWQxNTlmZTg0M2VlNDc3MTBjZTE1NjUwNTM0YTRkNDdmOTIyYyBsZWdhY3ktdHJ1bmsKKzYwNDA3IGNjMjJkM2YxMmIxMzdmNzI4M2Y5ZGY3MGM5YzU3MjUyODBhNDU0MDIgbGVnYWN5LXRydW5rCis2MDQwOCBjM2IzOGE4NTk4OWZjNzY1MjMyMmYxNDNlYmUzOTAwYWM2ZTM3YjEyIHB5M2sKKzYwNDA5IDg2MDk0YzQ2N2VhZmIxNDgwY2VhMzE4ZmEwN2ZiYWY4MWIyNWZjNmYgdHJ1bmstbWF0aAorNjA0MTQgZTlkM2Q1NjFkYmQxYWYyOTllY2Q1MGJlOTJkZTdmZTVmYzEwYjJiYiB0cnVuay1tYXRoCis2MDQxNSAzZjlmZTI3MTU1M2YxNmQ2MTE2YzllM2JhMzE4MGU2MzZhYTQ1MTRiIHRydW5rLW1hdGgKKzYwNDE2IDMwM2NlZjA2M2MzNTIwZWE2ZDU1ZjRlMjRlYzA1YzU2M2UxYmQ5MmMgdHJ1bmstbWF0aAorNjA0MTcgYjliZGM2YTk4YmVhMjI4OGI0ZDNhYmMwM2E4MzM3N2Q0NDIyYjY5YyB0cnVuay1tYXRoCis2MDQxOCBlZGQzNjdjMjJjOGZjYzQ0OTM4NjYxMjhhY2Y4NDE2NTdiN2IzMDU2IHRydW5rLW1hdGgKKzYwNDE5IDNlYmFhZTM0MWMxYjEyM2U1ZDllNTQzZDU2OWYxZDRlYWExNDA0YTUgdHJ1bmstbWF0aAorNjA0MjAgM2I0ZjBjNWVjZjUzZmQ2MmM4MjE3NWJmODkzNmFhY2QxNDcxNjE4ZSB0cnVuay1tYXRoCis2MDQyMSAyOWQ2MTVkZDFkOTcwNTVmOWRhNTJjZTQwNTBlZDRlZTc0YmMxMTFiIHRydW5rLW1hdGgKKzYwNDIyIGIzNzJjMzU0YTI4YzE3NDc1MmUwNjE0YjBhYzMyODJiZjVjYTQwYzQgdHJ1bmstbWF0aAorNjA0MjMgNTA5Y2RmNmQ2NDc5NWVkZmQ5NDk1MDQ0YzZkNTFlMjYzZjdkNGVkMyB0cnVuay1tYXRoCis2MDQyNCA5Mjc3M2Q3ZTY1M2U0YzFmZTQ5Nzg4MzhlMTNiNWY0ZjAxMTM2MzFiIHRydW5rLW1hdGgKKzYwNDI1IGU3OTFiYjBhZGNkZTgyOTA3MTdiNGFkNzMzODU5MzBmZTc1NmFkZjIgbGVnYWN5LXRydW5rCis2MDQyNyA3YWM3ZTA4OWEwNmZjOWFkNGNlMWFjYWMxMjYzN2U1OGJlZTA3OGIwIHRydW5rLW1hdGgKKzYwNDI4IDcxNjZlZDQ5OGM2ZDNjYmRlNWQxODUxY2JjZTlmZTMyZmYyMjMzNmQgcHkzay1jdHlwZXMtcGVwMzExOAorNjA0MjkgY2Q2NWJhMjNhNTBlNzYxMGU0MDEwM2YzNDM1ZTVkYTE3NmJiMGNkZCB0cnVuay1tYXRoCis2MDQzMSA5NmQwMjQ5MTY0ZmM2NTI2ZmNmYzJiN2QzMDBhNGVhOTBhYWY2ZWE2IGxlZ2FjeS10cnVuaworNjA0MzIgYjdhYThiZGU3YmNmNzBmNDhjODhkZmEwNDYyNmNlYTc2YjU1ZTAxNyBsZWdhY3ktdHJ1bmsKKzYwNDMzIDI1MGYyOWJhYjYxYjEyYzM2NmFiMzMwNmY1MmJlNDljZmRmYjM1MDEgbGVnYWN5LXRydW5rCis2MDQzNCA5MGU4NmVlMzY4NGIzYzFiNThkNmUzZWVjMDJiMDBiOWI2ZGMxNjdlIHB5M2sKKzYwNDM3IGU5NzY0YTY5NTgwOTdhMDRkODkzYzI0ZjU5ZGZjYWYwZWUwYzE4MzMgcHkzaworNjA0MzggNjI5MDlkMmU1NzNiOTc0ZjcwZDk2OThhYWE2ZTFhNTIzM2YxM2FhZiBweTNrCis2MDQzOSBlNDMyMzg3NjBjMzg3Mzk2ZTA3OWQ2ZTczYzBlMTI5ZjYxOWQwNTM3IHB5M2sKKzYwNDQwIDI2Mjc4Nzk2ZDRkYTEzMTlmMzkzODM3MDBmNTQ3Y2NkNjk5YThkZTcgbGVnYWN5LXRydW5rCis2MDQ0MSA1M2I5MGYzMWVmZDZlNjZhMjgwYTY5MGU2MzA4ZDQ4NGVlYjA4OTZkIGxlZ2FjeS10cnVuaworNjA0NDIgNTEwYTQ4Mjg5ZDFkNjg4ZDUxODFjYmZkODNkNGE5ZWI4ZmJkOTUzOCBweTNrCis2MDQ0MyBjOGZjYTliNWNkM2MzMGRjY2I1ZDRkZDcyZmZhZDQxZTM1ZjI5YTVmIHB5M2sKKzYwNDQ0IDc2MzhkNGFlMzEwYzIxZjk4MDA4OTYyMDE1ZTQ0ZGUwNDgwMTg5MDMgcHkzaworNjA0NDUgYmQ4ZDIzNjlmMTQxMWIzNTA2YjY0ZWM4ZTI1MmUwZTFmODA3MzI3NCB0cnVuay1tYXRoCis2MDQ0NiA1YWIyMzdjOTY2OTVkZjdhMGI3YmU4ZTY3N2YzNGYwZmUzMzA2NDYwIHRydW5rLW1hdGgKKzYwNDQ3IGFmZDBjYjI1YzczZTIxMzE4MDdiMDEzMDFkMGM2NWVkMzdkMGVjYWYgcHkzaworNjA0NDggOTYzOWE3M2FmYTQ3NzYxNGMwZWQzNmQyYTg5ODljNzQ1YTUzOWVkYyBsZWdhY3ktdHJ1bmsKKzYwNDUwIGMwNWVlNzdiMzlmMmRjMTA2ZGQ3YWFlOTFiOTEyOWUzYTgyMGY4NjQgbGVnYWN5LXRydW5rCis2MDQ1MyBiOWVlMzFhMjZmMzg1ZDNjZmE5NGM1YmY5MjRmYzg0NmUyNTBiZjg5IHB5M2sKKzYwNDYzIGJlMDZiMzM5NTc2ODRjNDRiMDk1NWNkNGY5ZDZlN2Q4ODJjN2I0NWYgbGVnYWN5LXRydW5rCis2MDQ2NCA3ZDBkZjVlYzNkMmY0YmU3ZWIzNjRhZmUzYmQ5NTJkMTkwMTI1MDVkIGxlZ2FjeS10cnVuaworNjA0NjUgZTg0NzZhZWY4NTdjMjFjMTBlOTE1NDNlNzk5OTBkMGEzZTYyNTMyNCByZWxlYXNlMjUtbWFpbnQKKzYwNDY2IDcxOTgzNjAzZWE5OTk5MDQyNzI0NTFiYTMzMDI2MTdjMjRhNmQxOGMgcHkzaworNjA0NjcgM2YyNDk2ZGM5MWRiM2Y2NzhjNzgyMjE3Njc3ODVhMzdjZmJhOWRmNSBweTNrCis2MDQ2OCA4OTMwZmYyMzBlZTllNDYzY2Y0ZjRkMDEwZDY1ZjNkZDc4ZmY5Zjg4IHB5M2sKKzYwNDY5IGRlN2MzMDk3YjJjMTA2NTJlMTdhODZiZmRhMmY4MDRhODQ1ZDBkNzMgbGVnYWN5LXRydW5rCis2MDQ3MCBlNzdiODJhZWQxYTgzMTMxZmY0MzUzOTE1MDA1ZjhiNTEyZTIxOTUyIGxlZ2FjeS10cnVuaworNjA0NzEgMDNlNGEzNmE1NmJiYTQ5NWUxMzE1Y2YyZmUwYTkwZTc2MTIyYTAwOCBsZWdhY3ktdHJ1bmsKKzYwNDc2IGYzODBkOTkxMzkwZTA5ZjIzZDEyODQ3MDllZTJiNDk2OTE4YjlmN2IgcHkzaworNjA0NzcgZjE4M2YxMTg5ODI0OGU3NTRlZmJiZTQzOTMxMjEzMDE3MDJiMjE0NCBweTNrCis2MDQ3OSBkNjM1ZjI5ZTU1ZjgyOTQ3MGY1YTJkZjFhMjhjZTg5NTNjNjdlZjEwIHRydW5rLW1hdGgKKzYwNDgwIGE3N2M4ZGNiY2VkOTEwZmZkM2UyZjkzZDEyYjgyYzBhNWFjNzZmNDggbGVnYWN5LXRydW5rCis2MDQ4MSAzYWE0YjhkZmJjNGE0Y2I1NDJjZTk0ZjhlNDIwNmE4MjgwZmU4NzI5IHB5M2sKKzYwNDgyIDg2NTllNTI2MTRkYWRkNjllMTFiYTZlMzcxNWY1N2NjYzg4ZGE3M2MgbGVnYWN5LXRydW5rCis2MDQ4MyAzZjE2YWM5MTUyMTRlZDM5ZTU2ZmU3NGJmYjc5Y2UyM2RjMTY4NjQzIGxlZ2FjeS10cnVuaworNjA0ODQgZjBlNmJiOWIyNGY2OGIxZWYzZGNiYjRhYWYzMGUyNTg5YzNhNTk0NyBsZWdhY3ktdHJ1bmsKKzYwNDg1IGE0Yjg0MjU3YzdmODU3ZjUyNzZkNWQ1MDE1NjdjYmRiOTI2YjNjYmUgcHkzaworNjA0ODYgNDkyYjMwMmFkZWQ2ODk0ODcyZmMzYWYyNWFkZmI5NjY0NTBiZDIyMyBsZWdhY3ktdHJ1bmsKKzYwNDg3IDY3ODUwOWY5YTAzZjcyYTFlZWI0MDRiNTViZGIzZGY3ODlhZmNlMzkgbGVnYWN5LXRydW5rCis2MDQ4OCAzMTY0YjRhZTI3YzNjMWRmMjUxYWVjNzJjNDAwYjcyMTIxN2ZhMWUzIGxlZ2FjeS10cnVuaworNjA0ODkgZDc1NDAwMzFiOTU5MjE3Mzk2MWVlYjc5OTczNmVhNmFhNTI5NzA5ZCBweTNrCis2MDQ5MSBjNjZkYTU3Yjk0ODg5ODBlNTQwNTVmYTk2MWMxMzVkNDMwYzYxYTczIHB5M2sKKzYwNDkyIDM4NjA0ZmEyYTQ4ZjFmZWUxNWI5N2ZlNDdiNmZhZDJlMTdiYmMwNzggcHkzaworNjA0OTMgYTI4MWUzMzE5OGMwYWUzNGQxYmIxNTU4ZjNlN2U2YWRiNWNjZmVmMCBsZWdhY3ktdHJ1bmsKKzYwNDk1IDdjYjZlNTYxN2RhMDlkODlmM2U5Y2YzMTg4YTUzYTc4OWI4YjUxM2EgcHkzaworNjA0OTcgOTllZjI0OGZiMzE1M2ZkMDk4OTU2MGEwNWM4NTUxY2UzMjIyOTc0YSBsZWdhY3ktdHJ1bmsKKzYwNDk4IDJiNjM2OTBkNTEyODU5N2M3MDFjZGQzOWYyYjZiM2JiYTVhMzc4YTcgcHkzaworNjA1MDAgMzNiYmRjNzZhZmI2MmUxNDVlZmQ2MmFhZWNlMmQ5MjVkNmJiMGNmZCBsZWdhY3ktdHJ1bmsKKzYwNTA0IDM5NzlhZTFlZWExN2E3MTk4MDk0YjY5ZTBlOWYwZDJiMjRkYTVmOTYgbGVnYWN5LXRydW5rCis2MDUwNyA2NDkyYTc4ZTkzYjRjMWNjYzFiOTM3ZjdjNzc2NzM5ZDg5ZmZhY2JlIGxlZ2FjeS10cnVuaworNjA1MDggZmFhODhmZjRjY2U0ZDI1OWZhYjEzNzkyNzliOTFiMTFkNjhmNzEzYSBweTNrCis2MDUxMCBiZGI3MDI5NTI0OGJjZmMzNWM3ODMzYzA0MDNhZWYyOGI4NDVhMTMzIGxlZ2FjeS10cnVuaworNjA1MTEgYmVlYTczY2EyYjg4ZTdkNjhjYWFmZDIzNDdiZDdjNzNiYzJhNjA4NiBsZWdhY3ktdHJ1bmsKKzYwNTEyIDVjYjgyODgzNjBlNzM4YzNiMjFhMDY4N2MyYzk0MzYxMDYzYWY3MGMgbGVnYWN5LXRydW5rCis2MDUxMyBkMTJjOTdjYzc0NjcxM2Q0N2EyNjczMmU0ZWM0YjU2YTNkMDExMjhmIGxlZ2FjeS10cnVuaworNjA1MTQgZjRiNDllZmNlZGMwZWUyOWU0ZDRmY2UyMjY1MWJmNGU3ZTlhYzBkOCBsZWdhY3ktdHJ1bmsKKzYwNTE1IGRmNWU1MmUwNTI0NmZjYTBlOTUzZjQ4NDFlOWNmMTVkYmU1YTBjMzEgbGVnYWN5LXRydW5rCis2MDUxNiBkMGIzMWYyNDY5NGRiZTcxYjlhNzNmZjQyM2JiZGYyMjk1ZjdiYjk2IGxlZ2FjeS10cnVuaworNjA1MTcgMGI0ZThhZmVkNjYzMTI0ZDA1Yjc3YjBmNmQzYWQ3ZTQwNDI3ODA4OSBsZWdhY3ktdHJ1bmsKKzYwNTE4IGY1ZTE4YzliZGU3MDE3NTIzODBjY2Q2OTJkODdjNjcyYjU3MGJlYzMgbGVnYWN5LXRydW5rCis2MDUxOSBjZTk4MTZmNTM2OTA5YjU5ZGVhNjk5N2I0NDU1MTYyYmQwMDFkZWJkIGxlZ2FjeS10cnVuaworNjA1MjAgNGM1OWE4Zjc5ZTQyODFlYzI1NWU5OTQ5YzhkNjZmZGJiMWQ3ZjljMyBsZWdhY3ktdHJ1bmsKKzYwNTIxIGUyYThiNjc2NWFiM2ZiMGM4YzViYzZkZDE0ZDVkMDE2Y2NhNDM1OWIgbGVnYWN5LXRydW5rCis2MDUyMiBkNTRkMTMzYzZhOGRiN2Y3NmY3ODA5MDg2Y2YyN2Q2ZmM0ZTUxYWU2IGxlZ2FjeS10cnVuaworNjA1MjMgN2UyZTYwM2Y0Y2JlY2UwODUyOGZhNmIwNTU5NzA2NTRkYjJhOWU4NSBweTNrCis2MDUyNCBhM2U2Zjc0NTMzZDYwY2QwY2JmM2IxNGRjYTBiNTRjNjAyMmYyZGY0IHB5M2sKKzYwNTI1IDY0MDkxMjQzYzA3YmNlYzk1OTJkMDQyMGRlYjlkMTI3MmM1Njk5ZmIgbGVnYWN5LXRydW5rCis2MDUyNiBhODFlZjYzYTEwMDlhMjk5NGNjYmUwMWQyN2NiYWE0MDkyNjFjMmI0IGxlZ2FjeS10cnVuaworNjA1MjcgZDk4MGYxNzVjODg2MzRiZGFiMDAwOTUzNWI3ODFjZWU2N2EzMWE2MCBsZWdhY3ktdHJ1bmsKKzYwNTI4IDZkNzViZTJjM2QzZTQxMmIzNTNmODY2OTc5MjcwNTUwM2Y0MzBjOGYgbGVnYWN5LXRydW5rCis2MDUyOSA2NjBkMjk4OWIxNjFjZDU0MGFjOTk3Y2ZmNjMzZGM0ZDY3ODY4ODgyIGxlZ2FjeS10cnVuaworNjA1MzAgMDQ2NTNmOTI2NjRmMzFkMjE2MTIyY2ZhYmQ5NDFmOTJhMWRlMGI2ZCBsZWdhY3ktdHJ1bmsKKzYwNTMxIDY1YjEyNTJjMWJjMTkwYWFmNjAyYzc5OTZmOTU2MGRkNzE1YzgwYmUgbGVnYWN5LXRydW5rCis2MDUzMyBmMDNhZjYwMTIyNWIxZGU5ZTBhYzlkMmI1MzFlNjNkNmYyYjc0ZTViIGxlZ2FjeS10cnVuaworNjA1MzQgYjJkZTk3ZWIxZjY3Yzc0MzA1NzJiYTk2NmZkODVlZWQ1NDYxMmI0NSBsZWdhY3ktdHJ1bmsKKzYwNTM1IDk1YmJmNTYxM2IxOGY0OWRlNTJjNDIyYjY4ZDZjY2FlMmIwZWFhNmMgbGVnYWN5LXRydW5rCis2MDUzNiBhZWZkY2I1MjQwNmRkNzFmZWI3ZjE0NTU5NzAyZDQ3YmY4Yzg0ODFlIGxlZ2FjeS10cnVuaworNjA1MzcgNTlkODlkNjFjM2EwYjMwY2U5MGVlZjNjZmI4NTVhN2M1NzQxMTAyMiBsZWdhY3ktdHJ1bmsKKzYwNTM4IGMyZGNmNTRlOTFmZDE4OGU2MWUwNmU4N2VjMWI5NjYyNDE3MjdjYjIgbGVnYWN5LXRydW5rCis2MDUzOSAyNDk2OTQwNWUxYWFkN2Y0ZGQwODBiNTY5YzM4MTk1OGE3ODNhMGI2IGxlZ2FjeS10cnVuaworNjA1NDAgZTVlMDI4OThiNmM0MmMxMTdhZjY4Yzg3ODk1YzE0YWY2YzNkNGY2ZCBsZWdhY3ktdHJ1bmsKKzYwNTQxIDM5NDA5MWZkMWQ1MzM1ODA2MTQ1YmRjN2UzYWZlZTE2NWI1ODIyNWQgbGVnYWN5LXRydW5rCis2MDU0MiAyMTU5NGM1YTA2MWE1MGUwNTgwNTIyYjM4YTk0ZWJkYWMyNzdjOWY4IGxlZ2FjeS10cnVuaworNjA1NDMgZjJjZGVkMGMxZmQ3N2E2YjQ1ZTliZjZjMmZiNjQxNWIyNjMxMzBkMSByZWxlYXNlMjUtbWFpbnQKKzYwNTQ0IDNhYzQ4Y2IzNDAyNzM0YzYyOWZhZTc3NTY1N2FlZDUxOWNhZWNkYjggbGVnYWN5LXRydW5rCis2MDU0NSAyN2NhNDcwMGJjNmRmMGZmNzhiNDU4NGI1YTYyNjk4YjIxN2QxMmI2IHJlbGVhc2UyNS1tYWludAorNjA1NDYgNDAzYTdlZTVhNTNlY2ViNmExNThkZWNmZjE1MTQ5ZjAyMTM5OTY4NCBsZWdhY3ktdHJ1bmsKKzYwNTQ3IDZjOGM2ZGU0NGZmNzU4NjdjMDJiNTgyMjMxMGFmZWUxZmYzZDhkYjQgcmVsZWFzZTI1LW1haW50Cis2MDU0OCA2ZTEzNGFhNzM4Nzk2OTUyNjk4YjA3MjNhMTEyMzU5ZDllYzc0YWE0IHJlbGVhc2UyNS1tYWludAorNjA1NDkgYjY2YWJmMGZkNTkxMjk2ZTU0Njg2ODU3ZjcyZTkyMzA3OTBjMTBhNCBsZWdhY3ktdHJ1bmsKKzYwNTUwIDViZGM4YjU5OTIyMmJhMTRmN2ZiYWRiZGNlMzU0NzViZTcxMjU0ODUgbGVnYWN5LXRydW5rCis2MDU1MSA0YWQwOTU2NTU3OWQ3YmNmNzIwOWFkNmJjY2ZhZTVlZmU2ZDVjMWVkIGxlZ2FjeS10cnVuaworNjA1NTIgYmRjZjQwZDFiMzhlYjRmNDc3M2ZjM2YzYzM0ODYyNTNhMmM2NjIzMiBweTNrCis2MDU1MyA1YmM1ODdmOTAxNjRjNWIwN2FjZGRiYzY2NzFjMmM4ODkxNGVkZGE3IGxlZ2FjeS10cnVuaworNjA1NTQgZWI5N2U4MzAyZmEzMTA2YzQ4NDM2Y2NlMDQ1ZGE5MWRlOGI1ZDE2MSBweTNrCis2MDU1NSA0YWE2MzgzMTMyOTgwYjNlNDJjMWZkMDFiODVhODdkYTM4M2VkY2M5IGxlZ2FjeS10cnVuaworNjA1NjAgNGY2ZjQ0YmM1MTk1N2UzMDJhMzI0YTRmMzg1YTczOWYzNDFmZmQyMiBsZWdhY3ktdHJ1bmsKKzYwNTYzIDc1MDM5ZDMxMThhZWVhZDY1ZTM3YTEyM2QyNzI1ZmM1NmY1ZTJjOTQgbGVnYWN5LXRydW5rCis2MDU2NCBhM2ZlNzQ4NWY1YzU1NmIzZmVlYzVlY2JmYzhjOTYzZGMyZjMxODY5IGxlZ2FjeS10cnVuaworNjA1NjUgMzg1MGQxM2JmOTZiNzUzOWI1ZTgyOGFjZWFiZGRmMmVjOTIxZDU2OCBsZWdhY3ktdHJ1bmsKKzYwNTY2IGYwMzk1NWZhZmZiNDc0YjYxMGRhMWY1NWE1YmRiN2ZiNGI4MzdhNTQgbGVnYWN5LXRydW5rCis2MDU2NyA4ZmRkNmQ2MmVhNTVhYjc0YzJiZTlhNjdlOWMwMGI1N2RlOWMxNjBlIGxlZ2FjeS10cnVuaworNjA1NjggY2MzMTlhNWY1MDNlNzQwNmUxZGQwOTg1OWU2ZDgzZWEwZGMwODk2MCBsZWdhY3ktdHJ1bmsKKzYwNTY5IDNkN2I4NGRhYTM0YTRkNGNiYTU5ZjQyZjE3NDM1ZjQ5NjNhMWYyNGEgcHkzaworNjA1NzAgM2JlNGZhZmQ5Y2MwZGYzNzdlOGVmNzk2YTJjZjBkZjcyNTQ5MDY1NiBsZWdhY3ktdHJ1bmsKKzYwNTcxIDFiZWI3ZDI5M2Y1NTJjODBjYjU1Y2QyN2I0YmUwYTQxNzU4OWQwYzEgcHkzaworNjA1NzIgMzhkZTBlNDFkMjU0ZDc0Njk0MGQ4YmJkZDIzOTVkOGI1ODMwZGQ4MiBweTNrCis2MDU3MyBmNjlkYTNmNTcyMTc2NmUxZmIxZGZhNjcyOTY2OGM0NWFhNmJlYTJhIGxlZ2FjeS10cnVuaworNjA1NzQgOWI2N2QyNTk1YTIzMWI2Zjg5MmQ3NTk0OWM2OGUzODFkMjAxZDk1NyBweTNrCis2MDU3NSA2NDNjMTM5N2Y5NTQwZjAyZWM4YmI0MjFlMmRiZDE1MmUxZjU2NTlhIGxlZ2FjeS10cnVuaworNjA1NzYgOTY4NmM0YjQ2MjQzZGE4NWMyZTUzYTA3ZjZkN2RkNmE2YzljNmRiYyByZWxlYXNlMjUtbWFpbnQKKzYwNTc3IGU2MTEzNWY3ZjliYmZhYjdjNWIxNjYwMmIxYzYwMzQ4MTY2ZDg1NGMgcHkzaworNjA1NzggY2IxZTVjMzdkM2QwMjQwZThjNTk3NWZlYjYyYWEzZDBhMzM3YzhlZiBweTNrCis2MDU3OSA4NjYwMmI2MDM0NjJjODE2YTg2NjIyYjMxYjRjZGM0YTYxZGEzODA1IHJlbGVhc2UyNS1tYWludAorNjA1ODAgMWY4N2VjOTkxZTU5ZGVhZjQ1YWU2MTc2Yjc1MzIxZGU0OGYyMDA1YyBweTNrCis2MDU4MSBlODdiZDhkZGQwMWIwYTA5MTFlOWQ2MGQ2YWZkNzA2NTUxZGEyZjIxIHJlbGVhc2UyNS1tYWludAorNjA1ODIgMGRmYWE5MmJkNTM0OGRiNDhjMWVhMTZiMDYxNTVhMThiYTYxMjVmYSByZWxlYXNlMjUtbWFpbnQKKzYwNTgzIGU2MDY5YjI0MDMxZWFlNGEwZTdhNTdmYTBkYTA1N2I1MmVhMDk1NjQgcHkzaworNjA1ODQgM2Y4Zjg2NDkzZGFhZTgyOTcwYjRiOTk4NjY1ODk0YjRjZTA5ZmZlOCBsZWdhY3ktdHJ1bmsKKzYwNTg1IGJkZjc0ODY4OTNiYWFhMmM3MWY1OTY0N2E5MmJjYjYwNjc5ZDUzYTMgcHkzaworNjA1ODYgNjQ2MzQ3NDQ0ZmFhNTJjYzEwNWRhMjU2YTVjOGE2NjlkZjAxNGNlNCBweTNrCis2MDU4NyA1YmRhNGY3NmFkOTJjNjc1MWE0M2E0MDQ1M2IxNjFhNTllYzRjOTRmIGxlZ2FjeS10cnVuaworNjA1ODggOTRkOTgwOTY2MDU2ZmUzZWU5MDU5ZWU0ZDE2ZTNhNmU3ZjZjOGE1YiBsZWdhY3ktdHJ1bmsKKzYwNTg5IGYyZjk5MTYzNDc4MTQ4NGE0M2IzYjBkYTcwNmNmY2RiOWE5OTJiOWQgcmVsZWFzZTI1LW1haW50Cis2MDU5MCA4ZDg5MDM3ZDVmYzFhYzIwYTExNzU2ZTBkMGNlNDJmYWU1ODRhODUyIGxlZ2FjeS10cnVuaworNjA1OTEgMDYwZjAzOWQyZmFiNTQ1NzU4YzBiY2JmOTdkNWFhMmE0Yzk3NmNkOCBweTNrCis2MDU5MiBjZmEyODA0MjRiNjUwZjg3OWVlMzA4N2RjMDc1ZWU3MmM4YWI4ZGRiIGxlZ2FjeS10cnVuaworNjA1OTMgYjAxMTM2NjEwMmRiYWI3NzlkN2JjNTcyNWM3YjliYTlmMDU5NGNjZCBsZWdhY3ktdHJ1bmsKKzYwNTk0IDRkNThjMGZhNmUzNDMyMDdiNWIxODkwYmE1MGU0MWI5Y2FlNDk1ZmIgcmVsZWFzZTI1LW1haW50Cis2MDU5NSBkYWM0MjE3ZTk5NjVhMGVhOWUyM2NhODY2ODkwMmNjZTc2MDAzZWI2IHJlbGVhc2UyNS1tYWludAorNjA1OTYgZDJiNDlhNjhlNmY3YmIwZWFkMjZiMmVkMDcxMTlmOTk4OGUxMWM3YiBsZWdhY3ktdHJ1bmsKKzYwNTk3IDVmZTU1N2M3NjBhMjAwZDY3ODZmMGJkZGM3OTdkMmUzYmJiZTA5MGMgcHkzaworNjA1OTggNjg3NDM3ZjdiNzg0OTE2OTJmYWNkNzEwY2YwMGU2ZTI3MzUwMjkzNSBweTNrCis2MDU5OSAxYzJhMjY2ODZlNTQ0MDFiZGYxZGMxMDNlY2NjZDNhNDlmZDljYzcxIGxlZ2FjeS10cnVuaworNjA2MDAgODNiNWQ2YjJhYTcwZjNjYjM1Y2Q5Y2VlM2UwYTgxMmE3NmVjOTJmMyBweTNrCis2MDYwMSAwMWQxYTRmZmQ1YjM1Zjk5ODFkNDdhYWRjYzk3ZDdkYzE1YTllZTk4IHB5M2sKKzYwNjAyIDY4NjM2ZWE4OTE1MzExOTM1MGY1ZmY4ZmJmZjc5ZmRmMWZjNzM3Y2MgbGVnYWN5LXRydW5rCis2MDYwMyA4YmMxZmRjNjMzNzBkMTRmYjNkMmFhZjA2ZGYzOTJjYzlmYzkyN2E4IGxlZ2FjeS10cnVuaworNjA2MDQgZjRjMGU1M2MzNTYxYTM2YjlkNmE1YjEyNzRiZmVjYjc5ZGYxMDlmOSBsZWdhY3ktdHJ1bmsKKzYwNjA1IDc3YjM3MWM2OTU4Y2VkZWRkMDU3ZDNlYzY0ZjE5Y2JiZmIyYWRjYzcgbGVnYWN5LXRydW5rCis2MDYwNyA4ZmVjNTBhMzg1OWY0ZDFkZjJhNGM3ZWZmMmI5Nzg1ZjA4NTMwNjFiIHB5M2sKKzYwNjA4IDExMWNiMmFkN2FmNDhkNjUxZjIxNDU3ZmJlOTRhY2ViZWZlN2NlY2IgcHkzaworNjA2MDkgM2VjZDUyNmMzNWM1NjcxZTVkMWQxZWNkYjcyY2U2YzJhN2Y2N2QyYyBweTNrCis2MDYxMCA4ZWYzYzdjMDA0NzAxNTlhZjBiZTA3ODA3Nzk4ZDNhM2M3ODI4MTMxIHB5M2sKKzYwNjExIGI2NWY3OWUzNWIwOGVjZTRiODhiZGJlMzNlODc2N2VhODUzYmFkYzcgcHkzaworNjA2MTIgZmRkOTkyOTFjYzQ1OTE2ZTllYzIzYWFmMjcyM2EyMTE1NjRhMjFlYSBweTNrCis2MDYxMyAxNjUzZjVmZjNjMDAxNGFhZjgzMjkxNjRiZTQxNDM3YjljNzUwYjk5IGxlZ2FjeS10cnVuaworNjA2MTQgYTRjODdjODg5NjQ4MzFkMzgzZjc4ODVkYzM4MGE2MzFjNjg0ODU2OCBsZWdhY3ktdHJ1bmsKKzYwNjE1IDczNzgyN2I0YzVkNzVmNTI1OTJiOTcwODNmZTJiYjUwYzZkZWM0ZDYgcHkzaworNjA2MTYgOTIwYTc2MzNhZTA4OTIyNTFkZWMxMmZjODIyMmQxY2Y0YTc2ZmYxNiBsZWdhY3ktdHJ1bmsKKzYwNjE3IDE0MmExMWIzMDU3ZTlhZjg3ZjI2M2RkMDcyNjk4Nzk2ZjdmNGIxN2EgcHkzaworNjA2MTggYjg0N2E5ODIzYjJmZmZhYTI1NDRhNjAzNjY2OGNkNTY1YjVjMzM4OCBsZWdhY3ktdHJ1bmsKKzYwNjE5IDMzYjc4YWFmYmJiMjIyMmM5OTAxOTBlYWJjODk0ZGFjMjY5MTFlYTEgcmVsZWFzZTI1LW1haW50Cis2MDYyMiA2NWZiMjE3NTA5NDI1YzllNzFlN2YxMjFiNWUxMGZhZTkxYzJhNzJjIGxlZ2FjeS10cnVuaworNjA2MjMgMDU3MWJjNGFiNmMyODIxYmE5OGMyNmNhZmE1NzliMjlhOGYxNzJiMyBweTNrCis2MDYyNCA4MTkwMGE5MTQyMmJmNzEyMThkNGRmNDFlOTRkMDM2NTU5MDZmNDYxIHJlbGVhc2UyNS1tYWludAorNjA2MjYgMGY3YzMxN2JiZTdmOGNkYzZmZGE4ZmY0ZTY0NWIwODk2N2MzNDU2MiBsZWdhY3ktdHJ1bmsKKzYwNjI3IDBiYTMxY2VhNmUwM2IyYzkyMzc5OGU3YTg5M2IzYWI3NzE4MWI2ZWIgcHkzaworNjA2MjggZGJlM2ExMzNiNzE4MzQyYWJiOTFhZjJmZDlmZjhmZGI1MDYzNDFkNSBweTNrCis2MDYzMCBmNTVhNGYxMTkxNDE5NWEzZmU4MDdhYzQyYTExNDUwNWQ3Yjk1MmJjIGxlZ2FjeS10cnVuaworNjA2MzEgYTIxMjZlZGIyMDdiMTI4NDBjZTA0Y2FlMzg1OGExNDY5NzA1MzI5MiBweTNrCis2MDYzMiAzNDY2MjViYTU5MDMyY2I3NDRjNjUyMmI3MWY3YjBkNjUyN2MzNTVjIGxlZ2FjeS10cnVuaworNjA2MzMgZmZlMmQwZjU3ZWZkNzFjZmNlNmM1NzE0OTYwMGI5YmEzMWUwMzNkZSBweTNrCis2MDYzNCBkMzllMWEwZTA5NjU0ODIzNTM1M2EwOGMzNTI4YzQyMTA4Mzg0M2M4IGxlZ2FjeS10cnVuaworNjA2MzUgMDYzZDAyMmFjMDExYjg1ZWU4NmYwMGQyMzQ5NjNkMGIyNGNjMWIxYiBweTNrCis2MDYzNiAzZjEyNDk3NWUwOTk1OTQ1ZDQ2ODRhZTNjMGQ2YzRkMGEyYjBmMWRjIGxlZ2FjeS10cnVuaworNjA2MzcgM2JiM2M3NDNmMTA1ZjcxMGFhOGM3MzMzNDE3MjkwYTU5Nzg5MzEwOCBsZWdhY3ktdHJ1bmsKKzYwNjM4IDkzOGJhNjIyYWNhMDNjZjJkZTZlNDhkODM3ODYzZWU3NzhmZGVkZWUgbGVnYWN5LXRydW5rCis2MDYzOSAwOTU4Y2M0NmIzM2YzNDlmY2MzMWYyMDUwZjYxNmNkNmEyM2Y2YmIzIGxlZ2FjeS10cnVuaworNjA2NDAgOGNiYjhhYTQ1YmE5YTlhZGI1YzY5NTk1MWI4ZmFkMjg3ZTRlNGZiOSBsZWdhY3ktdHJ1bmsKKzYwNjQxIGZlYjZkZDM2ZDUzZjMzZTk2NjMwMmE3ZmI0MTRmOWQ1MDJjYmY1YWIgbGVnYWN5LXRydW5rCis2MDY0MiBjNzNhMjgwMmI3Mzg2NjBkMTJhMzk0MTQyMDhlZjkxZjA1MjExM2MyIGxlZ2FjeS10cnVuaworNjA2NDMgZTgyYWIyNDIzYWFiNzA5YzZhYzk3YTY0OGYzMjZiODFiYjZkMTEyYyBsZWdhY3ktdHJ1bmsKKzYwNjQ0IDQ0ZTJkOTg5OTExNWQ3MjhhNGE5YTFjZjE4N2ExODJiMmI3N2IxZmEgbGVnYWN5LXRydW5rCis2MDY0NSA3ZGM5ZGVlMDk5ZTg4MGRhN2YxYjkwMTE4MTUzYTAxNzJlZDkyMjVkIGxlZ2FjeS10cnVuaworNjA2NDYgNWFjNjA1YzBmMjdjYThkODRiYTk4ZWRkODQ0OWY5NjU4MGYyYTEyZiBsZWdhY3ktdHJ1bmsKKzYwNjQ4IDIxOWY3ZjIxMzRkNDhlZjlmMDE1Yjc1MmZkYzNkMmRjZmRkYTM4OGEgbGVnYWN5LXRydW5rCis2MDY0OSBkZWI0ODczZmEwZjA0YzU3YmFkZWVmMjY2MjJhODgzMDk1MDNmZjcxIGxlZ2FjeS10cnVuaworNjA2NTAgN2ZhNDcyNWNjZTg3OWRhZWRhMTkxMTBhZGJjYmE5MzViNWNkYmI2NyByZWxlYXNlMjUtbWFpbnQKKzYwNjUxIDJjNjNmMTUyMmJiZTRlNzZlY2QzYTkzZjJlNTFjZWE4MDdhZThiMzYgbGVnYWN5LXRydW5rCis2MDY1MiBjZGQyZWEwODBlMjM2NWRkYWVkNjYyMjdmMGE3MDk4ZDE2NGY1YzQwIHJlbGVhc2UyNS1tYWludAorNjA2NTMgNGUzM2ZjODJlN2YzMTg4ZjU5MTU4YTVhMzU5MTRiOTVhZTJmOGE0YSBsZWdhY3ktdHJ1bmsKKzYwNjU0IDQwM2Y3MDVkNThjOTJmNmFhNDI1ZTk0ZThjMWQxZjg1YjFhZDNlOTUgcmVsZWFzZTI1LW1haW50Cis2MDY1NSAzODFmNGEyOTMzYjU4OTcwMTRhMWU4OGJiNWY5MmI4YzUwMDNlOTIzIGxlZ2FjeS10cnVuaworNjA2NTYgNWQ4ZmVjYTMzMzE1ZGU5N2I3ZDNhZGIxOTljZjNjZGMyMjQ1ZTEyYyBweTNrCis2MDY1NyA1OWE2NDg1YmFjMDIzMWQxY2Y2MmVhMjUxOWMzMzZlMWMzNjljYjBhIGxlZ2FjeS10cnVuaworNjA2NjAgNGU0MzcyMmZkNTAzZTE2MjdjMTA2NzQyN2I0MWI1M2IyMmQ1ODIyZSBsZWdhY3ktdHJ1bmsKKzYwNjYxIDI2MjI2MzczN2JjZTJkY2ZmMmJhYTMyNGQzYzY4OGE5OWJjOTAxM2YgbGVnYWN5LXRydW5rCis2MDY2MiAxYzMyNmRlYTQ5NGMyYzllYjg3MDBjYThiMzljODBmOTdlNGJmNDgxIGxlZ2FjeS10cnVuaworNjA2NjMgZTk0YWYwYzdhYTEyYmEyODcyZmI2NTNlZjI0MzFlZDVmY2I5M2Y0NiBsZWdhY3ktdHJ1bmsKKzYwNjY0IDQxNjY5NDVhMGNjNGZmYjc2Yjg2YjM4MWFjNjRjZGNjM2Y5YjAzMGUgcmVsZWFzZTI1LW1haW50Cis2MDY2NSAwNDYzZjgwMWQ3ZGM1MDk3Mzg1MmQyMDI2NzRlMzYwMzcyZWM0ODZjIHRydW5rLW1hdGgKKzYwNjY3IDU0ZGNmODA2ZGVkNjNjMTg3ZDg3MGEzOTJlNzAwMDVlNmExMTA4NzggbGVnYWN5LXRydW5rCis2MDY2OSA0MjQyMmNmMDIwOGIwYWRlZDZjYWZmNmQ1ZDc4NmIwMjk4MjJmNTE1IHB5M2sKKzYwNjcxIGVjYTkwYjhhYTdmZGI4ZTI5NzlkYzA5NGY4ZTZmZDdhYTQwMzVhOWIgbGVnYWN5LXRydW5rCis2MDY3MiAzZmE3ZmIzMjhkOWFhMjkwYmY3ODg0N2NkNTc5NTliNTI2ZDcyN2RhIHRydW5rLW1hdGgKKzYwNjczIDE5ODBkNzA1ODYyNzI1NzA3M2QyMmM0ODcwNDQwODUwMDA0NmRlNGMgbGVnYWN5LXRydW5rCis2MDY3NCA4MmQ0NDI4MGMxMzU2ZWFkMDU0MDU2MWUxYjIyMGU1OTRhMjlhNzEwIGxlZ2FjeS10cnVuaworNjA2NzUgNzdjNTc5MWI3YzIxMDE3NzgxYzc2NjNiNDI1Mzk0MmY2N2JmOGUzZCBsZWdhY3ktdHJ1bmsKKzYwNjc2IDE1YmM4ZTgzMjQyMDdjMjdlMzExYmZiMjI2NjQ3YTQyOWVmOGEwZTUgcHkzaworNjA2NzcgNjhkMzFhOTFmZGYzMjkyMjk2MzU1ZmRlZWQzNTQzNzZkODk3MTAyYyBsZWdhY3ktdHJ1bmsKKzYwNjc4IDU5NTBjNDlmMjI1YWRlYTQyMTYwMzUxODRhZDA5NjljNGQyZTY2YzggcHkzaworNjA2NzkgOTdiNDIwYjJkOGQxMGUwY2M1MjIzNjhkZTc5NDM3NjBmZDZkMjNmZSBsZWdhY3ktdHJ1bmsKKzYwNjgwIDViYTVjNGM5YTAxNjk2NjFmN2QxYmQ3YjRlNGEzOTBlYzMwNDUxZTggcHkzaworNjA2ODEgMmE4MjFlMDAxYTJiNDZkM2RhODEwNGJmOGU5NzI5M2ZjMTE4NGFjYyBweTNrCis2MDY4MiA4NTI3ZWQ3NTYzZDBiNGJjZjM4OTc4YzVjNjllMzZjYTg1OTZiYjk0IHB5M2sKKzYwNjgzIDBmM2Q1OGY5Y2QzNTI2ZGNiNmYyYjdjODE4NGFmZGIzYTZhMGRlYmYgcHkzaworNjA2ODQgNjQ1OTM4ZTBlYjUyYjI1MDZiYmFjNzU5ZGRlYjg3NDk4YWM1NjIxYSBsZWdhY3ktdHJ1bmsKKzYwNjg1IDI0OTA2Yjc5MjU0MjQzN2VmMDBmNmEzMTdhYTlkOWQ4ZDAzMjlmNDcgcHkzaworNjA2ODYgYWViZDljNGQxOWVkZmMxZDQ5MTBmNGM0NTc3Y2E5N2RjZmQ5MmZiNiBweTNrCis2MDY4NyAwMTU5ZTYyYjk3YzU1YzYwNDk3ZmYxMzZiNGE0NzMyOTgxYTQxZWQ0IGxlZ2FjeS10cnVuaworNjA2ODkgYTgyMTU3ZjUzNGE3ZTI5OTQ1NTA0OWNkNDYyYWVjMjE1NDZjYTJmOCBsZWdhY3ktdHJ1bmsKKzYwNjkwIGEyYmYyYTU5NDA0YTkwZWY2M2E0YzkyYjVlYWZiOTMyOWNkOWM3NGQgcHkzaworNjA2OTEgNGNkMWQwNDc0YTEzNGU1YTgwMDNjNWYyOTM5M2Q2NjhkODM1ZTUzNyBsZWdhY3ktdHJ1bmsKKzYwNjk1IDgzODIxZTBmMzk1YjRkN2M1MWRmNTQxMDE2ZTUxYzBkMmI5ZGIzZDEgbGVnYWN5LXRydW5rCis2MDY5NiAzMjljNmIyZTExMDUxNzk0YmFlODZjYzNiNTA5YzI5NTIyNzc2NjM0IGxlZ2FjeS10cnVuaworNjA2OTggYmM2Mjg1NGVlOWMyMTE0ODljM2I4ZDg1ZTdkMzMwMTQ3OWIxM2JkMyBweTNrCis2MDY5OSA2MjYwZGIyMmZmNzUyZjQ1YzQ4YzBiOGU3YzBjZmU0YjZhODJkMjNhIHB5M2sKKzYwNzAwIDU4NWFlYTkwNGYwZGI0ZGRhODI2YTczMTYzM2E1NTU0MTVkMmNhMTggdHJ1bmstbWF0aAorNjA3MDEgODcyOGY4MTZjYTc1MjAzZTQ0OWJlYTUzYjlmOGIwNDRjZTk5NjBiNyBsZWdhY3ktdHJ1bmsKKzYwNzAyIDg2ODliNjcyNjViZmJmMzZmMjY1MWM3OTQ1NDFiYzM2MzIyZDI1Y2YgbGVnYWN5LXRydW5rCis2MDcwMyA2MWViYTgzMzJjMTQ1ZTAyNWNjZWRjMjBhNmY0ZDgxM2EwZjVlOWYzIGxlZ2FjeS10cnVuaworNjA3MDQgNzQ1MjgwZDcxNDI1NWNlYzQ3MDk0N2ZjOWJhMTk5YmY3ZDU3Yjc1NyBsZWdhY3ktdHJ1bmsKKzYwNzA3IDg2OTA2YTVjZWNhNjM0ODgyNTY2MmM0ZDM5ZmYwMGM4NzQ1OGI0YzIgbGVnYWN5LXRydW5rCis2MDcwOCAyZDZmNjQwZjcwODEzOWM4MTBkZDQ0MGFkOGRlNzE0YmVlYzgzMmI1IHB5M2sKKzYwNzA5IDg1M2M3M2IwMjllM2UyOWU3Njg1NTAyNWNhZWUxMDMzZWI1Zjc0MTUgbGVnYWN5LXRydW5rCis2MDcxMCA3ZjRjZWYwNDE4NmYxY2JiZjVjMTM0MDYyNzU1Y2ZmZDYwZGNiY2ExIGxlZ2FjeS10cnVuaworNjA3MTIgNGFlMDM5N2VmMWM1ZjE0ZDljNDI3ZWVkNTdiOWYwNjAxNmRmY2M2NiBsZWdhY3ktdHJ1bmsKKzYwNzEzIDZlYmU4OTMyOGI1ZTczZTk2MjFkZTIxYzc0YjdmYTlhOWU1OTYxM2QgbGVnYWN5LXRydW5rCis2MDcxNCAxZGM3MWYwOGVhN2M3YzhiOWRmMDgwNTQ0NjUyN2Q4NjgyZGE1N2MyIHB5M2sKKzYwNzE1IGZiNTUxYzkzOGE1OThlOTNlNDE0MjQyODMxYjQxZGIwMjgxZDEyNmQgbGVnYWN5LXRydW5rCis2MDcxNiAwMTNlNjZjYjM2YzBmZTViMmFiNDRkYTcyYjljMGI5MGMwNDYzNGRkIGxlZ2FjeS10cnVuaworNjA3MTcgZmQ3Nzg5YTFiZmNkYTJhNjVkZDM0MjQyYzI5ZmUzMGZkYTRkYjU4ZSBsZWdhY3ktdHJ1bmsKKzYwNzE4IGY4ZWUwNmE1MWMwYjJmMjAzNGRlZTYzNjA0NjkxYmY1MjRiZTRhNGIgbGVnYWN5LXRydW5rCis2MDcxOSBjN2Y5ZjlmZGNmODI3MWMzMTIxMTI1MjMzMTk0NzNkNzMyYWQ0ZWRkIGxlZ2FjeS10cnVuaworNjA3MjAgYThjYTllMDY1ZDlkZWUxNWU5NWQzNDFhNzdlOTllYjhiOTg2ZGUxNSBweTNrCis2MDcyMSBhNTBjMWZiN2Q5MjBhODFiMTlhYWQ4N2UwZjAyYjI1ZDMyNGQzZTFlIGxlZ2FjeS10cnVuaworNjA3MjIgOWYxYTJjOTkyNTVmZjQxYzExMmY0Nzg1ZTYzOGRhM2NjMWE3ODI1MiBsZWdhY3ktdHJ1bmsKKzYwNzIzIDFkYzVjYTExNDQ4Y2QwNzMwODdjOWY3NjUyMzFiNzZmYWZkY2VlOGQgbGVnYWN5LXRydW5rCis2MDcyNCBkYzUwZGVlN2Y4ZTUyZTMxZmZkMDNlYmRjNjc3MDE2Y2I2ZGQ2OTQ3IHRydW5rLW1hdGgKKzYwNzI1IGU2NzA1MGQ2MmFkZmE0NmVkYWVhYmY2MGQzYjE5ZmMyMTFiMDVmNTYgcHkzaworNjA3MjYgM2U1YTc5MGUwY2Q2NWQ5ZTc4YTU4YmMwOGNiZjM2YzkxODhmMmVkZSB0cnVuay1tYXRoCis2MDcyNyBlZWVmMzlhNmY0ZGQ5OTVhZjZiMzMwYTcyNDQ5Y2RmOTU2NzVmMWE0IHJlbGVhc2UyNS1tYWludAorNjA3MjggNGFmYmNkZTM0M2VkYmMzZDI4MWE5NDJkMzg1YzMzMTdhNDQzM2IyYyByZWxlYXNlMjUtbWFpbnQKKzYwNzI5IDQ1NjVjNjk0MjBiOGNiMzRhOWYxMzllNGU0MDMxM2I0ZmNmNGE2ZDIgcHkzaworNjA3MzAgNzkwNTU0YWUyYjA0YWNiMzBhZGM3MjY3MTBiMDdiOTFkNzBkYzBmYSByZWxlYXNlMjUtbWFpbnQKKzYwNzMxIGMwYWE2ZDhmNWNkYjQyMGUyODhlMjdjNjY5Zjg3OTFlNjdkMTFlNTcgbGVnYWN5LXRydW5rCis2MDczMiBjMmZjMzE4YzRmYTMzM2Q2ZTgwYjVjN2I0ZjgwNzQ5Yjk0YTgyNWQyIHB5M2sKKzYwNzMzIGNhMDg1MzYyMmYxYTFmOWI5YWMxOTFiOGUyMTRkOGI3OTE0NDRkYmYgbGVnYWN5LXRydW5rCis2MDczNCBmODViNjNmNTY3MDYwNDE4YTc5N2I1MzVjZGJhNWMyOTYxZGQ2ZGM3IGxlZ2FjeS10cnVuaworNjA3MzUgODA4Zjg0YzU2NmYwZWRhZDZhYmI2OTc0NTllMjc4YzNmZGQwZTJhZCBsZWdhY3ktdHJ1bmsKKzYwNzM2IDg1YjY4ZDdkNmY0MTFlY2NlY2FiMWZlMjQ4Y2JjOWYyM2RhZmViMGEgcHkzaworNjA3MzcgYTM5ZmI4OThiZWIxYWQzZGEzZjYxMTEyYWNmZjk0YzdkZTM5ZmU4MCBsZWdhY3ktdHJ1bmsKKzYwNzM4IDkyYmQyMWU2YTgyYzRkMmM3NGY1YjJjZWU1MTJkYmFkMTFhNjhiYjMgbGVnYWN5LXRydW5rCis2MDczOSA1MDc2MmIxOTRhMDBhZDZiMTVhYTFkNjc1ZGExY2VlNTVlNjcwZWE1IGxlZ2FjeS10cnVuaworNjA3NDAgZWViNzJjZjM3YWViNGNiNDgxNTZlNGQxY2M0ZmRmYjRiMTFmNWZkOSBsZWdhY3ktdHJ1bmsKKzYwNzQxIDRjYTcwNjYzYTc5ZDA5YTdmNTA4ZDBhODgxYjQwNTIyMmVjMzMzNDAgbGVnYWN5LXRydW5rCis2MDc0MiBmMGU4YjU0MWYxMTMyMTU4NGYxZTRmNjIxOTU4NGVkOTM1YTdhNTA5IHRydW5rLW1hdGgKKzYwNzQzIDI3NWVkODU5M2VjNjFkMTYwZmY2YWVkMjJkNTljYmNlMTNjMmZlNjIgbGVnYWN5LXRydW5rCis2MDc0NCBiYTE3YjIxYWI5M2U2NjQ3ODY5ZjZhOGVlNzA1NTU1YWNlNDIzNDRkIHJlbGVhc2UyNS1tYWludAorNjA3NDUgNzg5YWE2N2RjZTZkODJiMjFmYmY2N2VkNTczOTAwYWU4NzA3MjAzMiBsZWdhY3ktdHJ1bmsKKzYwNzQ2IDVmNWI0NjQ1ZDkxMzJiNGJhOThlNjhlZGJkNGFiODZjYTdiNjBjNDMgcHkzaworNjA3NDcgOGViOGU5YTMyNjBkNmVlOWQwYmJkNWJjMGM2MjZmODI5MzZhZTU5NCBsZWdhY3ktdHJ1bmsKKzYwNzQ4IGFlNTVlNzE0ZDc0NGQyYTAyNjUzYTBkMTYyYTg3NzQwZjUwMTk3YzUgcmVsZWFzZTI1LW1haW50Cis2MDc0OSBhNDdmNWZmYzA4MjM1MzdmNzI1YTUyODk3ZGU5ZTJmMjkwYWYyYjZmIGxlZ2FjeS10cnVuaworNjA3NTAgMjdmODg1OTdkMDJiOGMxMTE4ZTUwNWI2OTAxNTk5M2ZiZGVkM2Q2MyBweTNrCis2MDc1MSBiMWNiNmI0NGI3OTg3MzMzNzZkYmE4OTI5NTgxMWUwMDZhNmZiNjA0IHB5M2sKKzYwNzUyIGQ2NzNkMDAzYjZjYTgxZTE0ZDc2NmU2NzhlZjY5OTdiMzgyMmM1ZjMgbGVnYWN5LXRydW5rCis2MDc1MyA5NWMwMDAyNjU0MDA5MDcwNTc1NjI0MTRjMmFkNTQ5ZWJkZWQyOWI2IHB5M2sKKzYwNzU0IGQzMTlmNDBjZDAwMGZiODRlZTQ4NzU3OThjYmE2MTJiMzk1ODc4MTkgbGVnYWN5LXRydW5rCis2MDc1NSA4ZjhhZGVjOTNjZjJjYmNkNmRjZDAyYzU5NTM2MWZiNDE0NDFmNmFlIGxlZ2FjeS10cnVuaworNjA3NTYgZjEyMDUxMjFlODQ4YTYyMzNjZDhkZjQ1NDg3NzdjMzZjOWZlNGM1NyBweTNrCis2MDc1OCBjZWVlMDk4MWYxNDFkNDAyMWNjNTUzMmE3NzE4OGY5NzcyZDEzODExIGxlZ2FjeS10cnVuaworNjA3NjEgMTE0ZGMyMTU4MzY5ZDg3NjAwMmUzZDllZGQ5NWI3ZWJiZWIxYzQ2MCBweTNrCis2MDc2MiBjNTIwNTU4N2IyYWJjMDY3ZjdmMjg5NWIzZWUwMDJkNGUxM2Y2ZGRjIGxlZ2FjeS10cnVuaworNjA3NjMgYWU5ZWNlZGI0ZjkxYzYzOGQ1MTZiODU5YThjNTJkOWU0MjcyODNkOCBweTNrCis2MDc2NCAxOGM3NmFmNGYzNjQ4ODU0NTc1NjVjMWFhMjU2NTE2NjMzYTE0NmMyIHJlbGVhc2UyNS1tYWludAorNjA3NjUgNmViNjQyZTBhZGQ4MGNkNWY3YTg3NjYwZDM4NjJhNTc1ZTBhZWIxOSBsZWdhY3ktdHJ1bmsKKzYwNzY2IDdlZGY3MjI1YjA1ZjhiMmI1NzYxN2JiZWJkNTEzNmVhOTc5NGYxNTYgcmVsZWFzZTI1LW1haW50Cis2MDc2NyBiZWVhMzViMGVkNTBhZDVhMWY1NTk2MGNlNTBiMmQ5ZjgwNzJkN2NmIGxlZ2FjeS10cnVuaworNjA3NjggYjBmMzgwYThiNDQ3YjRiM2ZmYTRiZDVmNWQyMzRmN2U2MTM0MzQyNCBsZWdhY3ktdHJ1bmsKKzYwNzY5IGY5MDNhNjQzYTg4YjFiNTFhNDY4MzczODRmOTQ5Nzk0ZjExZDdjODcgcHkzaworNjA3NzAgNWYyZWE5NjVmODUzZWNlMTg4MGJlMDQ4OWZmM2Y4OTkyYzg1MGIzZCByZWxlYXNlMjUtbWFpbnQKKzYwNzcxIDMwYjU2YmViZGU1NGFkYzlkNzhjYTk1MzIwYmFiZGE1YWVjMmQzZTggbGVnYWN5LXRydW5rCis2MDc3MiA3MzcyMzA4ZWI2MmY5ZjY0ZDBkNWFhY2Y1ODNiMDBmODExZTczNzhhIGxlZ2FjeS10cnVuaworNjA3NzMgMzMxMjJmZjgzNDA1MTU4ZWJmNmI4ZWMxN2FjYTk3ZGZjOWRhMGVjZiBsZWdhY3ktdHJ1bmsKKzYwNzc0IDdkMmZiYjRlNTc2ODZhNGZlOGI3MzdiMjhlZjE3YjgzNmFhM2JhZGQgcHkzaworNjA3NzUgNjA4YmQxMDE0ZmJlYTZmY2QzZGY5ZjE2YzQxY2IxZDIyYjNjMDViMCB0cnVuay1tYXRoCis2MDc3NiA1ODRmYzE1ZDQ3YWMyYTcwYWRiNmJiODk1NjEyMjg5NjEyYmZkYzc5IHJlbGVhc2UyNS1tYWludAorNjA3NzcgNDQwZTcxNWJiM2QyZWRhYzYwZjM1YzA5NDhhNTMzZmMzYTViZTFhZCB0cnVuay1tYXRoCis2MDc3OCBkNmVmOWNiNTQzYWY1YTgxN2JhMDQzY2FiYzU5ZTEzMjQ1MjNiMDcyIHJlbGVhc2UyNS1tYWludAorNjA3NzkgNjg1Y2VlMTQxMGY4ZTM0M2Y4OTI4ZGQ5NTEwMDNlYjk1ZmE5ZTBkNSByZWxlYXNlMjUtbWFpbnQKKzYwNzgwIGY4ZmIyNzEwNmVjYzAxODRmMmI2ZTU2MmFhOTI3ZDZiNWY1NGQwM2UgcmVsZWFzZTI1LW1haW50Cis2MDc4MSAwODNiZjZlMGFlNTA1MWNiNTVkNmJkNzQyYzhkMzRiZmIxNzgwNGExIHJlbGVhc2UyNS1tYWludAorNjA3ODIgNzZiMmRlOWM5YjBiN2U1MjNkYTVkM2U5NzliNzMwZDM0Yzk3NTkwOSByZWxlYXNlMjUtbWFpbnQKKzYwNzgzIDFlMGVlMzI0YzUxMzY2ODQzNGM4ODIyY2Q5MmViZDhjMWViMGU2NmIgcmVsZWFzZTI1LW1haW50Cis2MDc4NCA1Njc4NmEyZGVlYzQzYjg3MzZhYzVmZWI0NGQxYjcxY2NhMzhkODcwIHJlbGVhc2UyNS1tYWludAorNjA3ODUgYzdlNjgzZDUyYjNiM2UxMTI4OGQyMjNkYjYyZDY2ZDYxNTk4ZTZkYiBsZWdhY3ktdHJ1bmsKKzYwNzg2IDRmY2I3MDAxMTVkODAzYTlkYjM0YzM4ZmU5ZGUwOGMxMWE1OWIxNWYgbGVnYWN5LXRydW5rCis2MDc4NyBlNzBmNTZjZjY5NzIyZTIwMTY5MmM1MTA0N2NlNmQ3YTZhYmJkNDg2IHB5M2sKKzYwNzg4IDY4MDE2YTA4ODhiOTY4Mzc1YzBhYzlkMjE1MzA2NjgyZDEyMTJkNzIgdHJ1bmstbWF0aAorNjA3ODkgMDk1Y2E5ZmYwZDhlY2E5YzMxYzk1Njg4YmI2NzU4NGVhNWZhMWUyNyB0cnVuay1tYXRoCis2MDc5MCBlNTE4ZTM5ZjRhOWU5NTkxNzZkNWIwZTEwMmMxNWFmNzE0OWE2YTczIGxlZ2FjeS10cnVuaworNjA3OTEgZWY3NTQ4MTczZTYxNzFlOTk1NDk1Y2Q3YjgzMDc5MzU4MDExZmRlMiBsZWdhY3ktdHJ1bmsKKzYwNzkyIDBkZDA1ZWVkNjNkZTk4Njc3OWY5NTIyMDQwZTk2YzBmMDdiYjVlNWEgbGVnYWN5LXRydW5rCis2MDc5MyA4Y2JlMGJkOTNjMjhiMDEzMjNhMzg5MzIxYjEyOTU5MTIwZWRlY2ExIHJlbGVhc2UyNS1tYWludAorNjA3OTQgMTkwZDU1MzczZTUwNTdkM2M4YTc0YTY0ZjJhZDU5MjNhMWU2ODIyYiBsZWdhY3ktdHJ1bmsKKzYwNzk1IDVhZDhhZTRkNzg0ZTZhY2I4NmJkNzg1YzIwN2Q3MzNlYzQ2YjQyNjMgbGVnYWN5LXRydW5rCis2MDc5NiBlMjJiYzhiOTY1NDczZjU4MTc2OTNjZDU5Y2I5MzY2NTRkY2JhYmIzIHJlbGVhc2UyNS1tYWludAorNjA3OTcgNjVhZTY4YzdhY2EzODE2MmJhMDQ4OGUzNmY4ZGEwOThiYzFjYTIxZSBsZWdhY3ktdHJ1bmsKKzYwNzk4IDVjMWRhN2IxYjRhNmI4MjhkYmViMDA4NWU4Y2U1ZjE5Y2M2ZTFlMWQgbGVnYWN5LXRydW5rCis2MDgwMCAwYThhYWU1NzVjZGRkYmYzZDEzM2ZjYjRlZWQ5MTA4MGUzZmU0MWYzIHJlbGVhc2UyNS1tYWludAorNjA4MDEgMWRjMzIyYWRiYjY3NjQwMmU1MmY1MjY4ZDY2ZTM0ZTEwNzVmOGU2YSByZWxlYXNlMjUtbWFpbnQKKzYwODAyIDg5ZWM0MmIyOTg2MzBlODhiMWI5NjhiNTMzMDdiOWMwNTQ2NTE0ZTQgcHkzaworNjA4MDMgMTY3YTlmYzgyODQ0OTFjYjVjZWJlMTI1YTFkOTlhMmExY2VmZDQzNiBweTNrCis2MDgwNCA4M2QyYzcwNDQzZmI3MmIyZDYwNzBlY2E0NDQ0NTEyNjY4NGVjZjdhIHB5M2sKKzYwODAxIGEwMzM2MTc3OTJkMTlkZWM0YjFkZDBhNjc5ZDc1NGEyODE1MjIzM2UgcmVsZWFzZTI1LW1haW50Cis2MDgwNiBmMTk5ZGUzOGFkMDEwMTM3N2FhNDBmYTgyNzIyMmQwMDkwMWJlYzdjIHB5M2sKKzYwODAxIDk1NzAyMGVkM2FmYWU5ZWU0Njc1ZTM0ODViYTYxYzdjMWJkZmRhMzkgcmVsZWFzZTI1LW1haW50Cis2MDgwMSA3MjFhNTkxMGZiZjBkOTkwYTRjYjIzNWE4ODYyOTk5OWUzYWZkMGIwIHJlbGVhc2UyNS1tYWludAorNjA4MDkgMWNlYjJhNmM2MGVlYWU5ZDE1OGI1ZDRiNmM0NjY3YzczYjlkMDFkMyBweTNrCis2MDgxMCAyZDllY2EwYjQ2ZmQzZjA4YmJiZGRlYjQ0NGFmZmZkODIwZjZjMmUzIGxlZ2FjeS10cnVuaworNjA4MTEgMjE4MzZlMGI5ZWIwMzE5NzFkNmRhZGZkMDFlOWFmYWViODIyYzFmNyBsZWdhY3ktdHJ1bmsKKzYwODE0IDc0NmE4ZTFhNzg1YTU5MDVmODAzY2JhNzI1OTIxODM0YTkwZGNjNWYgbGVnYWN5LXRydW5rCis2MDgxNiBlMThjYjIxZjVmNWZmMDc0YzRjMmFmNDYzN2Y2MGM5MDNiNTY1NjM2IHRydW5rLW1hdGgKKzYwODE5IDQxZGMzNjg2ODg5MDhjM2YwZDEzOTIzNzBiYzY1OWI4ODgxNzlkNjUgdHJ1bmstbWF0aAorNjA4MjIgZWVjNjdhZjRkN2RmZjExNWI4ZGRlNzFlZjI1MTE4NjhiNGZhZjRhOCBsZWdhY3ktdHJ1bmsKKzYwODI0IDEwYjI2M2EyMDJjYWQzNzg2M2Y3MTA3MzcxODA3MzQ1NWEwNzZhNDYgdHJ1bmstbWF0aAorNjA4MjUgY2Y1YTVkNzMyZTNjY2IyOTI4YmY5ZWIyYWFiMGNlYzcwMDYwYzJmNCB0cnVuay1tYXRoCis2MDgyNiBmNDgzNzRiOGMxYzNkOGQzNTYxYTM5YjEyZjU0YjJjYzk0ZWJjMzA4IHRydW5rLW1hdGgKKzYwODI3IGEyMzU2NzNiOWY4ZWEyNGJhODE3NjI2MDRhM2Q0ZDIwZjk0ZmFhOWUgbGVnYWN5LXRydW5rCis2MDgyOCA4OTFmYjVjM2JjMTgyYTMxNzQ1ZTZjYjhmYmIxYjY3ZjUwMjU0ZmFjIHRydW5rLW1hdGgKKzYwODI5IGIyZjNmZDlhNGM2NTcxNDhkMjJkNmFjMGY0NWY1NzA3NmI0YzE4NTMgdHJ1bmstbWF0aAorNjA4MzAgYTk3Njg5YjNlNzQyNWU3ZDM4ZTEzOWU2ZmMwOWZkZTY3N2FjNDQ5OSBsZWdhY3ktdHJ1bmsKKzYwODMxIGIyN2RlMjlhMjMyN2E2MjA4NzY5ZmUxZjJlZmNiMDdlYzc1NTllMDcgdHJ1bmstbWF0aAorNjA4MzIgMzMyMjFhZGMwYzIwNmUzMmZmMTQxYWEyODU5OWUyMDc1ZDI1OGQwMCB0cnVuay1tYXRoCis2MDgzMyA0YjQzMjE0NjFhOWYwMjg3Y2E3YmRjMDBlNTRlYWJjMDNlMzM1YjhmIHRydW5rLW1hdGgKKzYwODM0IGE1NzM5MjVjOTFlNDJlYTBjYTdiN2ExYWE2YjYxODJhODAxZGJkOTkgdHJ1bmstbWF0aAorNjA4MzUgM2E1NWMwZmQ4MjJmYjMwNWE5Yzk4MTkzN2YwYjQ0NGZjYjRkYmZhZSBsZWdhY3ktdHJ1bmsKKzYwODM2IDdhMzU1YjZiMjFhYzhkNjRhNmMxNTczYzQ3NjVmOTRiNmMzYWMxODAgdHJ1bmstbWF0aAorNjA4MzcgZGY1MWJhZDg2NzEwMDU0NmFjMTcwMjNjZmIyOGIxNTJhOWIyZDQyYSBsZWdhY3ktdHJ1bmsKKzYwODM4IDQ1MDRkZmNjMTkyNGRkNWYzMDNlMjJiNWQ1MmZmNjA5NWEzZjAxYzYgcmVsZWFzZTI1LW1haW50Cis2MDgzOSAzYzRkNTkzZTE1Mzg2NWI3Y2Y2ZWRiZjM2Y2M2OTgzZGQ2YmI0NjI4IHJlbGVhc2UyNS1tYWludAorNjA4NDAgOTE1ZmRhY2Y3MDJkYTNhYjRlMWFmNTY5YjJjOTFjMzlkNWY2OGFkYiBsZWdhY3ktdHJ1bmsKKzYwODQxIDU1NzIzNmQ3NTJlMmQ5NzllZTJmZTIyY2Q5YjhmMzNiYzBmMjk2Y2EgbGVnYWN5LXRydW5rCis2MDg0MiAwZTJhYWE3YjliMWZjOWJiOWU1ZDlhYmE1ZGFiYWJjYTIxMTY0MzI4IGxlZ2FjeS10cnVuaworNjA4NDMgZDhmMTJiYWUzNzhhZDA3ZTU5OTAzNTE4ZWM4MWRkN2U3MjZjNmNhNSBsZWdhY3ktdHJ1bmsKKzYwODQ0IDE2NmUzYmE3ZGUyNDM3NzVlZDg5NTE4ODNkYjVhZTBjYjE1MjMyYTUgbGVnYWN5LXRydW5rCis2MDg0NSBjNDQ3NTJkOTBmZDJjY2U0MGQ5YjU2ZGQyZjRmYmUxOGEyNWQ1NDc1IGxlZ2FjeS10cnVuaworNjA4NTAgNjJkZjFlMzM5ODMyYjZmNjhmNDIxM2Q4NDc5ODhjNDQyY2FjNzE5MyBsZWdhY3ktdHJ1bmsKKzYwODUxIDcxMTM5YjY5MjQzOWJkZWQ4MTgyYjM4NmVkZDAxMmQyNjVkYmQxYzYgbGVnYWN5LXRydW5rCis2MDg1MiA5YWNlYjkwNTRiM2Y5ZmYyYTcwOTlkNjIyMjEwYTkwZjVjMTVmNWMzIHRydW5rLW1hdGgKKzYwODUzIDdjNGM0NjM0MjEzNzNiNTJlNGU3NTc1ZWYxNmY1Nzk0MDAyOGQwYjYgcHkzaworNjA4NTQgZDM3ODU5ZjI5ZTUxMWExMmM0N2NjYzgxMDU5MDMwODE2NWM3N2Y2NSB0cnVuay1tYXRoCis2MDg1NSA4YzY4ZGI4NmZmODdhNDEzYmJkYWQwZDU2NTVkZmQ2MmRkMGIxMGI1IGxlZ2FjeS10cnVuaworNjA4NTYgMWE4OWU5MTMzMzczOTUwN2UyNmU5NmRhYWFiZTBjNTg2MzM4YjIwNiB0cnVuay1tYXRoCis2MDg1NyAzMThjYTZiYzg5YTNkNWRmM2M2ZGY1ZmE3ZDhmYjU3ODg5ZDI4OTVjIHRydW5rLW1hdGgKKzYwODYwIGYzNzhlZGQyMWRmMjZmNjIyOTMzN2UxMDA4NmE0ZGRjNDM3ZDMxZjQgbGVnYWN5LXRydW5rCis2MDg2MSBhYzA5NWI3NzRlMTkzYmY0Zjg3OWI1NjZiMTI4NGFjOGI2ZjViMjU5IHRydW5rLW1hdGgKKzYwODcxIDI3MGZjZDJlOTc4MjY4YTQ0MzI4NjM0M2I0YWVmNmZjNDExZjE3ZWIgbGVnYWN5LXRydW5rCis2MDg3MiA2NTUwNjU5ZGJjOWRiNjZlMDU5OGZjZmQyZWVhODI3NDg3ZDNjZWU2IGxlZ2FjeS10cnVuaworNjA4NzMgNjIxMjM2NzM5MGUzMjRhYzcxYjcxOWE4OTc0OWJjOGY4YzhiNDNmYSBsZWdhY3ktdHJ1bmsKKzYwODc0IDE4NzJiZDZjZjRiNDViNThhZGE5ZTI5OGQzOWJjM2ZhODgyOWE1MjYgcHkzaworNjA4NzUgMTJmZjE0NmY1OWE3MDcxYWQ4ZDA4NTc1MzcxZWI3YTFlMWI1MjNmNCB0cnVuay1tYXRoCis2MDg3NiA5M2I2MTU3NDEwNzQwYzgzYjZiODIxNDgxM2U0MGUwNDFlMGM1ZmI5IGxlZ2FjeS10cnVuaworNjA4NzcgMDhjYjVhYmZiNWI2YTI0YjE4ZGYyZjMyNmNlYzE0MTk5YmJjMzViYiBsZWdhY3ktdHJ1bmsKKzYwODc4IGNjMDIzMmRlMDY2YzMzZGU2NTkyYTViNTA3MzgyYTExNzc2YjVjMDAgbGVnYWN5LXRydW5rCis2MDg3OSBiNzIzMWJmNmJmYjc5NTllMmM3YWRkOTIzNjg0MzQxNjk3YjgwZmExIGxlZ2FjeS10cnVuaworNjA4ODAgN2FmOTU1ODQzOTI5NjI5ZjZjZjM5YTA3MGNkOThkYzUyYmUzNmIzNyBweTNrCis2MDg4MSAyMWViMWU2ZWRhZmFmMzllNzE0MzkwYTNlMmM3Y2I3ZTMzNTI3MzJmIHB5M2sKKzYwODgyIDljYzdhODY3MzdjOTY1MmZmM2E1MzE4NjcyMGVjYjBmNGI5ZTcwNjMgbGVnYWN5LXRydW5rCis2MDg4MyAzZDJmZjAxNDY1NzQ5MGNiMGQxYmFkNzVjNThiNGU3NThlMjdhYWY0IGxlZ2FjeS10cnVuaworNjA4ODQgMWJjOTIzYTEwN2Q5NTZlNjllOGFjYjE3NDAxYTc2Y2QwZTFhOGM2MSBsZWdhY3ktdHJ1bmsKKzYwODg1IDBlOTJlZjU3YzBkNGE5ZWQzZjMyNmNjZTMwM2YxYjE1NDEyNDQwNDAgbGVnYWN5LXRydW5rCis2MDg4NiBkNGIwZjEyN2NmY2IxZTkwYjVhMDVmOGFiMzMwMzcyYzhmMzNiZTYyIHRydW5rLW1hdGgKKzYwODg3IDUwODc0MTUwNTRmMTkzNzg2ZWJkOWEzZDY5Y2Q3NTdiMzQxNTVjNWUgbGVnYWN5LXRydW5rCis2MDg5MSAyZWZjZDdmNjA2ZjhjZDUxYjJhZGYzYjIxY2EyM2FiYjdhNmFlMTIwIGxlZ2FjeS10cnVuaworNjA4OTIgYmY2YjI2OGU3N2YzYzQyZjBkYzg1MzU1YTkzN2VkNDU3Nzg5YzRlNyByZWxlYXNlMjUtbWFpbnQKKzYwODkzIDNmYzU4NjMwN2Q2NjkzYzRkM2UyOGI1NDZlZDc0NmNkZmViNzFmZDAgbGVnYWN5LXRydW5rCis2MDg5NCA4ZWNlNWNhNGE3ODVlMDc0ZGYxMzllOTc1ZjNkYzkxZTBjNzU4Y2UwIHB5M2sKKzYwODk1IDYwNmQ0Y2M1Y2RiMzBiYmFkMTZjZDM2MTU3NTI4YjMxOGY4Y2EyNmIgcHkzaworNjA4OTYgMjdiZWFlMjFhODJjOTY5NDNkNmFkMWRkODRlN2Q3ZWNmNzNhMjdmYiByZWxlYXNlMjUtbWFpbnQKKzYwODk3IGJjNzBlOGI4OWExYzA1NmM2NDU0MTExZWU1OWFjMGU2MTJiMDI4ZWIgcHkzaworNjA4OTggYjBjYzdhNmRhMWUwMzJlMmJkNTFjMmUxMzQ0NzUzNmU4OWI1Yjc4NyB0cnVuay1tYXRoCis2MDg5OSAzZWU3Nzk1OTg1N2FmM2FhMWY4NWFmYmNhOTQ5YzRkNjQxZjZiOTc5IGxlZ2FjeS10cnVuaworNjA5MDAgMjk1ZjM3ZmM2MjFiOTUzYzE3ZWI1ZjZiNzkwMTk0NTAzYmE0OTI2OSBweTNrCis2MDkwMSBmOWY0NzljZTUwZDBiYTRkZjA3ZWQzYjk4N2M0MTVlZjk3NTRkOGQwIGxlZ2FjeS10cnVuaworNjA5MDIgMTVkNTc3NmYyNzAzY2MwODc4OGE1ZDg1NWZkZTY2MTA1Y2ExYjYxNyBweTNrCis2MDkwMyA5ZTI2YzBiMjM5ODdmNWY2MzFjMzQ4NjY5NjVjN2VkYmFlZjI0YTllIHJlbGVhc2UyNS1tYWludAorNjA5MDQgYzQ3NGM5MjdlMDM2MGZlMjJlOGVlYmI1MmI2NjZmNmI5MGIyNmQxZSB0cnVuay1tYXRoCis2MDkwNiAyOWE2NmU2MjFkYmUzZjJkNzljMzUzMzYyODYwMjY5NTAzY2Q4OTI5IHB5M2sKKzYwOTA3IDJmZjUxYzQxMmU1NzdiNTQ1YTliZmRlMzJhMmE0NjFkMTc2OWMzZjQgbGVnYWN5LXRydW5rCis2MDkwOSAwZWEyMzZhNzFkNzc3M2M2ZjEyMjgxOTJhZjkwZWYwNGM4MWIzMDNmIGxlZ2FjeS10cnVuaworNjA5MTAgNWQ3MjZkYTIxZDc1NDMxMDVmYmVmYjQ3ZjhiYWNjNWZiYzAzMDU3OCBsZWdhY3ktdHJ1bmsKKzYwOTExIDA5YjE2N2E0MDE4YjZkYTY4ZTIwODEyZWJmMWEwNTM1N2UwYjYyMjQgcmVsZWFzZTI1LW1haW50Cis2MDkxMiAxNTFlN2ZmYzdlODkzNjhhMDYwZjVhYjA3ZDI0MWI5ZWE3ZGNlMmYzIHJlbGVhc2UyNS1tYWludAorNjA5MTMgZDEyMTk5ZDYwMmQzY2E5YWIzZGY4OWZkNDBkYmFkZTkyODEwZjM4NSByZWxlYXNlMjUtbWFpbnQKKzYwOTE0IDFkNTA4YmJiZGI0OWEyYjExNjI5ZWUxODZhNjM5MjgyOTFiMDg2OTQgcmVsZWFzZTI1LW1haW50Cis2MDkxNSA5ZjQyOGE1ZTYyYjMxNDI3Y2M1ZmFmMDdiNzc0ZDM5ZDM0NDZkOTBkIHJlbGVhc2UyNS1tYWludAorNjA5MTUgOTQ1NTAxNjVkNjI2ODIyYTBiZDUxZDNlZDJiNjAzZGYxOGFhZTk0ZCByZWxlYXNlMjUtbWFpbnQKKzYwOTE4IDgwZWNmNjczNDdlOTU0MWYxMzY0YTI0ODk0NTRhYmFlZjM5YzdjMGQgbGVnYWN5LXRydW5rCis2MDkyMCAxYzk1OGZlNzE4ZTNlMDg5MDIyM2EwNDA4Mjk0Nzc3NGExMjJiZDUxIGxpYmZmaTMtYnJhbmNoCis2MDkyMSBiNTI2NWFjYmVlNzVjZGZlNDlmMmRhNTc4N2MxNmNjNDk0NDJlYTc4IGxlZ2FjeS10cnVuaworNjA5MjIgZjZlZWVhMDE5YzFmNGNlNWQ1N2I5ZjNjYmRiZGRkZGNhMGMxMzMwNSBsaWJmZmkzLWJyYW5jaAorNjA5MjMgOGExODdmNTYyOTU5NDkyNWMxNWY0NDcxNTQ5NzI4MjU2NGY4MGFiOSBsZWdhY3ktdHJ1bmsKKzYwOTI0IGY4MmJkOWVmN2Q3ODgzYzQwYzdhODQ2MjY0ZDM4ZTc2NmZmMjI4MTYgbGVnYWN5LXRydW5rCis2MDkyNSAwMGJkZDk2ZGRlZGEzMWEzMjM1NzNiYjc4NjNlYzZiNDllNDQ0OTE5IGxlZ2FjeS10cnVuaworNjA5MjYgOTA0OGNlOWUzN2M4ZWZmYjEwYmZkYjcyZTVkY2UwMjljZGExNDhkOCBsaWJmZmkzLWJyYW5jaAorNjA5MjcgZjllMjU1NjJiMmQxYjk5ZTNmYTQ1MGE2MzdhZTE3YWNhNzAzZGE3ZiBsZWdhY3ktdHJ1bmsKKzYwOTI4IGU5YmM0ZmJkYTE5MTI1ZGU3MzE2NGEyYjM5NTRlN2UzMmRjOTUzNjEgbGVnYWN5LXRydW5rCis2MDkyOSA1OTUzZjZmYzAyMDQ0OTUxYzA5YzkwYTJiZGNiMWFmOTdmMTY4OGVjIGxpYmZmaTMtYnJhbmNoCis2MDkzMCAzMzc4MmNhOWY2ZGNkMzMzMWIzOTQ3ZjdkYjc3NzNhMTc3OGRjNzI5IGxpYmZmaTMtYnJhbmNoCis2MDkzMSAxODRkMWIyMjc1ZGM4NzZhYjVlOTVlM2U1MjA5NDI0NDllZDU2YmY0IHB5M2sKKzYwOTMyIDdkMjYyMzBiYjc2MzAyYjI2ZWUxZTFjZDllODk2MTU4ZGRkNGRmZmYgbGVnYWN5LXRydW5rCis2MDkzMyBlYzBhODU3ZTg5NmRkYWFhMWJiOTdhODc5NGE1NjYxYjk5ZTZlMGEzIGxpYmZmaTMtYnJhbmNoCis2MDkzNCA3YmUyMGY0OGZmNjcwZmE4NjAwOGVmYTUwNTQ1NjdkMzZjNjMwYTg3IHB5M2sKKzYwOTM1IGQ4OWQ0ZGY5NjdlNjBjOTc5OTE4ODZhNGExZWNlY2E2ZjA0NjFlYTUgbGliZmZpMy1icmFuY2gKKzYwOTM2IDM0YWZlNmNiMDJhMTU4YzE3NGUwNWJkNDc4NTIwOWQ1YzJkNzFiMzMgbGVnYWN5LXRydW5rCis2MDkzNyA5MzAwNTNjOWRiMWRjMzk2NWQ4MDY1MzJmY2I2MGQ2OTBhOGE4NjQxIHJlbGVhc2UyNS1tYWludAorNjA5MzggYzU5ZmQ4MmE1NmIwMzMzZWY2MDA4NGI4NjRiZmFiZTBlMTNjZjY5MiBsZWdhY3ktdHJ1bmsKKzYwOTQwIGUyODg3ZGM1YmRiNWE2YWI4MGRhZjljZWU0YzRmZGJlYWQ0NGQ0MGEgbGliZmZpMy1icmFuY2gKKzYwOTQxIGE5ZTFmZGFmNDEzZDlmZjI2YjI4ZGZkNTkyMzQ1MDcxY2MyYjk4YmUgcHkzaworNjA5NDIgM2NjNTdmZDg3ZDBlMGU5NjA5ZDhlYzNjN2E5MjM2ZjNiZTk0NmZhYSBsZWdhY3ktdHJ1bmsKKzYwOTQzIDAyZDRmOThhN2UxMzJlZWVlN2IzZDhkZWU5NWE1MDdmMjI0NTFjZmEgbGliZmZpMy1icmFuY2gKKzYwOTQ0IDNiYmY5NmQ5NjYzOTEyNDcyNGMyYzhmMjQ0ZDI3ZDRmMTkyODUzZWYgbGliZmZpMy1icmFuY2gKKzYwOTQ1IDZlYTZjODdhNzUwMTI3ZWFjMGEyYmM0NWM1YTNhODU4OGZiZDhjNmMgbGliZmZpMy1icmFuY2gKKzYwOTQ2IDkyZGI2OWRjOGQ0YjA2NTk3NDJkZGQyNWUxZGY2YTg5OGVlMzkzYjggbGliZmZpMy1icmFuY2gKKzYwOTQ3IDhlZWY1NmUwOTg2Y2YwMTIxNTJhNDFiODc0NTk3MmFhZTE2N2I4NjAgbGliZmZpMy1icmFuY2gKKzYwOTQ4IDk4YzNmOWExZDM2NjMwMGY1Yzg0NWJmZWM4ZmU3MmIwNDdiYTY0MzQgbGliZmZpMy1icmFuY2gKKzYwOTQ5IDg1YzYzMDM2Y2EwMTkxMjVkMWI0YjhlMDgyOGM3ZTIwYzI1MzQ3NWQgbGliZmZpMy1icmFuY2gKKzYwOTUwIGYwZjhiMjAwMTUxNWUwNWQ5MzU5Y2EzODBlZTZhYzdjYWE2MTg3ZmIgbGliZmZpMy1icmFuY2gKKzYwOTUxIGE3ZjM1MGIzZWQyNDkwNjNjMzZiZjgwMzA3YWYxYmNkMWEyY2E2MGIgbGliZmZpMy1icmFuY2gKKzYwOTUyIDFiNGNmYTAwNmJlMTU5MDkxMGMzN2UyNmVmMDQxM2E3MDEyMjgzZWMgbGliZmZpMy1icmFuY2gKKzYwOTUzIDM3MzA5ZTMzYzQyYzQ1MmRhZjYwZjQyZjM1ZmU2YWQwYmRmYmU4ZmUgcmVsZWFzZTI1LW1haW50Cis2MDk1MyA0NTQ2NjgxM2RlZjc3Y2IyYmJmNTU0ODVlMDc2MjRiMWM1Zjc4ZTBmIHJlbGVhc2UyNS1tYWludAorNjA5NTUgYjg4N2RiYTJiNWUxYzE0MjgxMDNkMjUyMzcyMzIzY2VkMGIzMzMzYSBsZWdhY3ktdHJ1bmsKKzYwOTU2IDg1M2FmNWJiYjQ5N2IyMzAzNzE2NWY1NTQ5NTlhYWVkNDcyYjYyNjkgbGVnYWN5LXRydW5rCis2MDk1NyBiYzlmZDg0YWZkZWNjZWIzYzk2YWNlMjhiNjdhYjYyYTE3NDQ0MjNmIGxlZ2FjeS10cnVuaworNjA5NTggYWIzOGQ3NzFmNTZkYTk5NmFkZjQ1M2UxY2Y1ZWFlY2Y0MDM0ZmViYiBsZWdhY3ktdHJ1bmsKKzYwOTU5IGQ0NjYyNzczMGEyYTMwM2VlYTlmMGZkZmVmYWM3YzY4YmRlNGE3ZjggcHkzaworNjA5NjAgNDI3YjU0YzdlZTI1MmQ2NDQ2MjVhYzI4YzQwZmU2ZTU2OWNiMzY5MyBsaWJmZmkzLWJyYW5jaAorNjA5NjEgNmQ2YTI5M2ZiYWYzYjUxMDhkNWY4ZGMwN2YzZGVkYTY4M2JlMjdiNCBsaWJmZmkzLWJyYW5jaAorNjA5NjIgNGE5NTIyZmQ3NWE2ZTJhYjU3NjVhYzZiODIyZGFlMmM2OTYwMTU5MyBsZWdhY3ktdHJ1bmsKKzYwOTYzIDA5MWIyNzg3NmExYjg2NGUxZjkwNDA0ODBiMjkwZjM2MGUzZWQyNDAgcHkzaworNjA5NjQgNDJiM2IxMTczOTFkY2I1MmNiNmJkMTAyYmJjZTRkYmRiMDc3ZWFmYyBweTNrCis2MDk2NSA2N2E5ZDMzODU4NTEzODBlMGRlOTNiNzMxODUzNDlmMjA5NDE1OGMxIGxlZ2FjeS10cnVuaworNjA5NjYgN2M1MWUxZDE0YzhjNTlkOWM2MDU2ZWEwMDEzZDE4MmFjNTg2NjUyMSBsaWJmZmkzLWJyYW5jaAorNjA5NjcgNmE2Y2E1ZTU3OWY2NmUzZTc0MDAzMWMwNjk5NzVkZDRjOTAyNDEyNSBsaWJmZmkzLWJyYW5jaAorNjA5NjggMDc5ZTIxZjU5MzE5M2FkNzgzZGU1YjE1MGJiMzIzNDEyZmE3OTdlMyBsZWdhY3ktdHJ1bmsKKzYwOTY5IDExYTczZmJiZjg2ZjJkZjM5ODA1NzhiZDY0MjQzNmZiMzU1YTQzMGUgbGVnYWN5LXRydW5rCis2MDk3MCA4ZWI1OTgzMzEyMzE1NzA4NWE4YjMwYTIxNDRmZGRlYjc3ZTMwYzQ2IGxlZ2FjeS10cnVuaworNjA5NzEgMWM3MmE3MzgyMTMzNmIxZDZkMzNmYWRhNGFmMDNhZDFiZWU5NDBiNCBweTNrCis2MDk3MiAxNDdiNDhiM2JjMjM0ZTY4MDY5ZjViM2VjMWU0N2JhYzNjNWJlZTVlIGxlZ2FjeS10cnVuaworNjA5NzMgOTAwMzQ3ZjcwMjU4NGJiNjI3MzUxNjE0Y2NlMmJmZTYwYjlhNmUyNyBsZWdhY3ktdHJ1bmsKKzYwOTc0IGNhNWYyZjk2MDYxNzRjMzY1MTkzNjQyMTlkMWZhZDA2NTU4ZTc1YTEgbGVnYWN5LXRydW5rCis2MDk3NSA5NmEzNGVlZjg5YTNkMWRiZmUyNDUxNDUxODhiODA4MGFiOWNjNzdlIGxlZ2FjeS10cnVuaworNjA5NzYgZGRhOTJhMDk3ZThjNmY2ZDIyNjBiZmVkZTIzZDVjNDU2MjAxZGRjOSBsZWdhY3ktdHJ1bmsKKzYwOTc3IDVlMDc3MmVkMjBkMWQ2OGE5NTY1MDIxNTJjNjBhYjkzMmZkZDQ5ZGEgcHkzaworNjA5NzggMzkzODIyZjJlZjkwMWMzNjU1ZDg0YjJiZjg0MDVlM2VhYjRjODVlYiBsZWdhY3ktdHJ1bmsKKzYwOTc5IGYxYjUwYWE1ZDVhZjQ4M2FhMjYzYWE5N2RjYTFhOTNjZTcxM2VjZTggcHkzaworNjA5ODAgNzM0ZmMwYTE5NjU3ZDVmMGYyYTg0YmFkOTE1YjA1MzE2NjY5NGUyYiBsZWdhY3ktdHJ1bmsKKzYwOTgxIDdhOGRlMmE3YjFhNTZiZGYyMjJmZTZmMTQ2NjA3M2ExZWIxNGVlN2IgcHkzaworNjA5ODIgOGY5OTRkNjk3NzQ3NTUwZDEyNmE1ZWVmMmJhODdiOWM2NDMxZDgwNyBsZWdhY3ktdHJ1bmsKKzYwOTgzIDM2NTdjMjdlYTJmZDJiOWE1NzQ3M2ZlZDU5MjczZjYyY2IzNzk2ZjEgbGVnYWN5LXRydW5rCis2MDk4NCA5MzBiMjgwMmMwMzdiOTM1NTQ5ZTNhMzdmMDgwNzIyNWYxYjY3OWIyIGxlZ2FjeS10cnVuaworNjA5ODUgZDdlMjMyZTlmMWExZWUxNWMyYjNmODU5MmY3YjdjNTEyNDk2ZmMyNyBsZWdhY3ktdHJ1bmsKKzYwOTg3IDFiMTlhNTcxNDVhNWIyZjVhNjZmNmMzODVlNGE0NzhhMDczMGYyZmUgbGVnYWN5LXRydW5rCis2MDk4OCA5NzcxMzk1NmMxYjBkZjNhZWQ3ODhhZTIxNGU4ZTgzY2M0YjAxYTIzIGxlZ2FjeS10cnVuaworNjA5ODkgYmEzNTliNmMzM2MzODE1NjQxZWE5MWIwMjc5NmQ1Y2Q1NTJkNzA5OSBsZWdhY3ktdHJ1bmsKKzYwOTkwIDlmMDM3ODg3NjNlMDlhMDkwMTM3MGM3MjVhM2IzNTcxMGY3NDVlYjQgbGVnYWN5LXRydW5rCis2MDk5MSAxY2M0N2UxMjlmZjQ3ZjRlYTZkNGQ2NGYyYmQ1ODBiZmU2NGM4ZGU4IGxlZ2FjeS10cnVuaworNjA5OTIgNThjM2YzNDM5NjcwOGFkZjM0MTdjZGY2ZGJkMmY3NTU4OTZiNWVkNCBweTNrCis2MDk5MyAyYzVkOTE2YmQxMWM5YTllMTE0NjVjYjk1YjdkZDBjMDBjNzNjODMyIHB5M2sKKzYwOTk0IDQyOTg1ZWJiZmM0NTMwOWI2OTQwNGY0MzJlMmNhYWQ4Mjk3NDg5ODcgbGVnYWN5LXRydW5rCis2MDk5NSBlODRhZDJhMjU4YTQ2OTQ5NDJmOTE0NzFkOGNiYmZhNDEzZGVjMDIxIGxlZ2FjeS10cnVuaworNjA5OTYgOTc0Y2ZmM2UwMDIxNjIxYWU0YWI0OGNmMGVhNzllOTBlY2ZmZjZjZiByZWxlYXNlMjUtbWFpbnQKKzYwOTk3IDEzMGZiZmIxNjAzNmFmNDY4ODAxMmQ2YmY1Yjg5OGE0MTRmNjIwZTEgcmVsZWFzZTI1LW1haW50Cis2MDk5OCA3NDhhZjBiODM2NzRjYzFjMWZlMGZjNWVmYzlkOTVlOWQxYzZiNmQyIHJlbGVhc2UyNS1tYWludAorNjA5OTkgZWM3ZjA4NzNiNjY0ZGY0NjM2ZWQzMWI3YmVkZTBlMDMxYTAwNjQ4ZSByZWxlYXNlMjUtbWFpbnQKKzYxMDAwIDFkODRiZjVmOTQ3ODZhODQ2YzA4MDI4Zjk5YjZjM2I4MjdhY2Y0NjMgbGVnYWN5LXRydW5rCis2MTAwMSA0N2E1OGNhM2UxMGViNzAyN2QwY2M5OTRlM2IxYWRkNjU3ZmI5NGJlIGxlZ2FjeS10cnVuaworNjEwMDIgMzkxNWQ1ZjY1MGZhOWRlMDdhYmI3MWQyNjEyYzg2MWMxMmE2ZTQ2ZiBsZWdhY3ktdHJ1bmsKKzYxMDAzIDdkZDJjMTc0NjI2N2QyZWNlMTc5MjgxNTM1YWIwZmVhYTlhZDY0MjAgcHkzaworNjEwMDQgNmJhNTMwOGY3YmE0MTY1YjhmZTIwZDk5ZWU5YmI1M2UzMDIyNjIzMCBsZWdhY3ktdHJ1bmsKKzYxMDA2IGVlYzRjMWU5ZTljYzg4ZmVkNjEyMzhjY2Y0ZTNmZWIxNmFlYjU2NzEgbGVnYWN5LXRydW5rCis2MTAwNyA2YTEzZmVjYWYyZGZiMjZjNGIxMDA2NTE0MGVjMTA4YjRjMDc3NjcwIHJlbGVhc2UyNS1tYWludAorNjEwMDggNGViNWE2NjdjODgyYjVhNGUyNzQxODA4ZTdmNmMwNDBmNmY1YmE2NCBsZWdhY3ktdHJ1bmsKKzYxMDA5IDgwZTBhMjkzMGM2ZDU5ODVlNTQ4NDdmMmFjNGI3MzJlMGU0MWEzNjIgcmVsZWFzZTI1LW1haW50Cis2MTAxMSAyNDFjZjgxYTA1MDg3OTdmY2M1ZDliNWIwMWFjY2M0Nzg4YWIzNTNhIGxlZ2FjeS10cnVuaworNjEwMTMgOWYxODNhZTM0NThiZmI4YTkzMTczYzNmNDI2NzdmNzljNGQ5NjJmMiBsZWdhY3ktdHJ1bmsKKzYxMDE2IDQwZDI2OWQ2ZGE5YzU4MzA3YzNhYTQ3N2E1MjQwODk2YTc5NWVkMjMgcmVsZWFzZTI1LW1haW50Cis2MTAxNyBhMDEyMTNhNTQyNWQxYzQwNTFlY2EyZWQ3ODlkZDY0NGI1MzI4MzNhIGxlZ2FjeS10cnVuaworNjEwMTggNjY5MzA0M2QyN2ZkMzI5N2NhOWZkOTFlOWMzZmU4YjYyZjdmZjM2MSBsZWdhY3ktdHJ1bmsKKzYxMDE5IDgxMGJkNjc3Mzg2MzZlYzg1OWM2ZjUwMjkzMTdkNjc5ZjEwYjA0ZjkgbGVnYWN5LXRydW5rCis2MTAyMCAxOWQ4NTI5NDJkZGRkMjJjMTA5ZmM2ODZmNDhkMmRiMjFhZTVlYWNmIGxlZ2FjeS10cnVuaworNjEwMjEgODUzMWY4OGI1NzhlMjBhNDI5NzZlMzM1NmFlMWViZmIwNzA0NzhkZiBsZWdhY3ktdHJ1bmsKKzYxMDI0IDMwNTc4ZTA0ZDM1Y2RjMGM4NjE1YTg3NzdiZjYxNGM2YmIwYzU4ZDIgbGVnYWN5LXRydW5rCis2MTAyNSAyN2JhYjM5ODlmNjM1M2NkNzJiM2Q3ZjNlMDMyYzA4OTQzNDY5ODg3IGxlZ2FjeS10cnVuaworNjEwMjcgODEzYzE0Njg1OGY3OGUxMjhiMTE0MWY4MWI2NDU4MGMxNjIzZWIxZSBsZWdhY3ktdHJ1bmsKKzYxMDI4IGMxMjZiZDliNTA1YmY4NmI4MWVhYmU0NzljZWY2Y2IyMTA3ZDJiYWUgbGVnYWN5LXRydW5rCis2MTAyOSA2YTk5MmI2NjgwYjFiNzY0NTVjZTBlMjExM2NlNDAzOWJkOGE3NGRiIGxlZ2FjeS10cnVuaworNjEwMzAgMWIwZWI3NmVmNzJhYmQ5MDgyYTA5NTE0ZTg3OTE4N2ZjYWE4NWNhMCByZWxlYXNlMjUtbWFpbnQKKzYxMDMyIDliMTE1YzVlOTExNTJiMDcyM2ZmZGU5NWI5YjU4MTJiMThjMDJiYTUgbGVnYWN5LXRydW5rCis2MTAzMyA5N2ExOTcyYjY3MmU3YjViNTM1YWIwM2ZlZjg4MmYxZjFmODM3NjZkIGxlZ2FjeS10cnVuaworNjEwMzQgMjFhNWU5YTU0ODNhNTIyNDBiNTFiNjJiZGY5MWI1NjQxMmYzNWFjMCBsZWdhY3ktdHJ1bmsKKzYxMDM1IDdlZmE0ZDFiY2VkMzhjMzBjNTc5OWQ1NzEyNmZjNGViZjU4MzJhZTYgbGVnYWN5LXRydW5rCis2MTAzNiA0ODQ4OGZhNTA3MjllNGYwYmEwMDVhNWUyYjMzNjAwMzc5NjgwMjhjIHB5M2sKKzYxMDM3IDAwMmE1YWM3OTJiMWU2YTdmOTk2N2NhMTAyMzRmODJkNjJkOWQ2NzcgbGVnYWN5LXRydW5rCis2MTAzOCBlYWE4YzE5MzkxMDhlMDFkMTRkZmUwMDI3YWU1YmYwZDNlM2ZhNzkwIHB5M2sKKzYxMDM5IDhjN2JhMGVkODQ0M2I1MTM3MmY5Yzc5YmU5ZDNkNTJlZGQwZGE5NjYgbGVnYWN5LXRydW5rCis2MTA0MCAxOGZlZDE0YjA2YjYwNjY0ZmMyZmQyMGZjMzE1YWJlNjliNGZhYTc3IGxlZ2FjeS10cnVuaworNjEwNDEgYzAzYWZmNmQwN2Y1M2IxMDZjNjJjNjI5NWY5MGNlNWI1NmJlMTgzNyBsZWdhY3ktdHJ1bmsKKzYxMDQ2IGQ4OWZlMWQyZmFkZDgyYTBjYzgzNjEyOGMxYTkwMzRkNDBjOTg4NGIgbGVnYWN5LXRydW5rCis2MTA0OCBhZGU3YWM4OGQyZDA5ZTIwZTYyMWI2MjExOWQ4YTcxZDA2ZDU4ZTUxIGxlZ2FjeS10cnVuaworNjEwNDkgYWY5MjhmZjBjNWM2OWQxYzU4M2ExZDY5ZTgzMTRjMGI4ZjdkNDU3YiBsZWdhY3ktdHJ1bmsKKzYxMDUwIDFiNmZiNTY5OTYzNDU3ODQwYWU5NzgzN2YwMzNhYzQxYWQxODAyYzcgcHkzaworNjEwNTEgYmY4ZWU1OTNjYmFkMDNjNzI0ZTVlNDk2YTBkZWRkZjdkYzMxNWI3NyBsZWdhY3ktdHJ1bmsKKzYxMDUyIDU1ZWVmYjQzZWY2ZjNhZDFhMDExNzdlZGFkMDJjMzE2NTZmNDU3NzUgbGVnYWN5LXRydW5rCis2MTA1NCBhNzdlMWNmN2VkMjUyNjJhOWNmMzUzNDdmZDg2YzMwMjczOGNkNDYwIGxlZ2FjeS10cnVuaworNjEwNTUgYjBmZGU5MzY2MWNlODc1MWVkZmM2YmIzOWNjZmMzYTRiNWZkNzhmNiBweTNrCis2MTA1NiAwOWM5Y2VlY2RkNTZkMDRiZjIzNzE5MWNkMTQ4NmQ0NzZkNjhjM2FiIHB5M2sKKzYxMDU3IDcxMjkzNzJmNTMzZjQxYjM3NDE1MjZhZjgyNjQ5OTVhOGM4OTU0ZTggbGVnYWN5LXRydW5rCis2MTA1OCBkYzViMDEwNzI5NGMwZGM0ZjdkNjg5NTNmZTUyNzExMTAxZDVhYzg5IGxlZ2FjeS10cnVuaworNjEwNTkgZTU3ZmZhMmI1ZDA3ZjAxMjVkNmM3ODlmNGI1MTRkZjk1OGZiZjZlYSBsZWdhY3ktdHJ1bmsKKzYxMDYwIGIyOThjYjQ5NzVkMmRmZGMwMTBlYmRlYTA4YzdjM2U4ZjBlYzI2YTQgbGVnYWN5LXRydW5rCis2MTA2MSBmY2U1YWY1Y2UxNmE2ZDcwZjAxMDY1NTk5YWQzY2I2YmE4MjM0NTFmIHB5M2sKKzYxMDYyIDhiNTJmZjQxZTBlMjc5NjMzMGRiNGU2YzNkZTJiYTg3OTBiNDk3ZWQgcHkzaworNjEwNjMgZjg4YmViZWViNjczZTk4NjA4NDgwZWYxOTI5NmM3NzFmZjQzNWQwNiBsZWdhY3ktdHJ1bmsKKzYxMDY0IDNhNmNhODllZjc2ZDQ3NDI1YWRkM2Q0OTUxZDRjOTkyM2FmYTE2NmQgbGVnYWN5LXRydW5rCis2MTA2NSAxN2M4ZWM4ODlmZjQyYjBjZjI0MjFiNTVlNTU3MWY1OWQyYTM3OGIzIGxlZ2FjeS10cnVuaworNjEwNjYgYzVlNzdlMGYyZjMyZmZhZjQyYzc1YTc0ZGRjYTFlNzRmM2UwMTE3MiBweTNrCis2MTA2NyAxNDRlODQ2NzJlZjkzNmQ5NzA4MDE1ZmQ3MjUyMzQzMzJhYWNkZmUwIGxlZ2FjeS10cnVuaworNjEwNjkgNDI4OWM0MTA0Mjc5MDM2ZWZiODYyZDIyNDkyMDgwYzY4M2RhZjQyZiBsZWdhY3ktdHJ1bmsKKzYxMDcxIGY2ZGMwOGFkNTY0YjFjNjk2ZTY3YTNmYjQyMzBjMzliNmI4N2NjOWMgbGVnYWN5LXRydW5rCis2MTA3MiA0ZjYzOWFmNThhMTkwYzA5OGI2NjVhMzdiMWRlMDViYjQ2ZDg5MGYzIGxlZ2FjeS10cnVuaworNjEwNzMgZTgxZTQ1ZjgwMDJlOGMwOWEzY2YxMDcxMjc2Y2EwNzYyZTAzNzdmNCBsZWdhY3ktdHJ1bmsKKzYxMDc0IDQ1ZmMzZWNiMzAyM2VkODBjOTc1OTAxOGIyYjkyZWZlN2ExMDFkM2QgbGVnYWN5LXRydW5rCis2MTA3NSA5YjM4MWVkMWRiMTQzMzJlNDE0Zjk3OTQyMjZiMjI1NGI2NmFhNGYwIGxlZ2FjeS10cnVuaworNjEwNzYgNjI0YWU4N2YxYzk2MWZkOTFmNWExNTVmYmE2ODljM2Q2NGVmZDEyNSBsZWdhY3ktdHJ1bmsKKzYxMDc3IDA4OGRmYzBmNzFiNDk4MGNiOGUyOTUzMDY1YTBlYTQ3N2Y4OTg5ZDAgbGVnYWN5LXRydW5rCis2MTA3OCA0YWU0MzMxNGI3NDYyOGY5ZjljYmVjNzM3YTdlZjk0MTY2NmIzMGM0IGxlZ2FjeS10cnVuaworNjEwNzkgYmYxYWIzYmY3OTljODYzNjgzODhjMjlhOGNiMTJmNGI3OGRkNjk0NiBsZWdhY3ktdHJ1bmsKKzYxMDgwIGNhY2Q3YmExMWI3NzU4YzE4OTI5NjAyZmYyZTBjZmI2YmNmM2NmMzcgbGVnYWN5LXRydW5rCis2MTA4MSAyYjM2NzI1MGIwY2QzMzU5MTdiMzIwMjU0ZWU5ODg1MzYzNGFjYmUzIGxlZ2FjeS10cnVuaworNjEwODIgZmU3Mzk0YmM3OWQ2M2UyMzUyMzk4ZjEyNDA5NDA0NDIxOTk2YWFmYSBsZWdhY3ktdHJ1bmsKKzYxMDgzIDdhZmVmOGY0M2U0YTUyZTA4MDE4ZDZjOWNjMDE0MjI4ODAzNzEwMTUgcHkzaworNjEwODQgYzU3Y2IyZjhjMzUwNTJjNTQ2NDYyODgwYzZhNzkzMGU1YTIyOTkxMSBsZWdhY3ktdHJ1bmsKKzYxMDg1IGQxMzIzZmNmM2FhMTc5NTNkYzAyNGM2NTJmYjIwYjZlN2MwOTQwZDQgcHkzaworNjEwODYgZjMzZjY2YTIwODJmYmYzMjZmZjc0ZTYyZjRiZjI0NGUwMDE3MzA5OCBsZWdhY3ktdHJ1bmsKKzYxMDg3IGZmZGQzMWYxY2QyMDk0ZDI2YjhiMGMwYWI0Zjg2YjU1MDllNjczOTEgbGVnYWN5LXRydW5rCis2MTA4OCBjYTQ1ZWI3MWYyZDJiYTMxZWNkMmFmYjJiMmZmNWRlYmJmMTM1ZTBjIGxlZ2FjeS10cnVuaworNjEwODkgZTQyNWRkYTRmNjMwMDYwZGY2YWU4MmFhZmU5NTE2MDJkMTUzMjZjMSBsZWdhY3ktdHJ1bmsKKzYxMDkwIGYyZjMzZGI1ODkyMDBiZWMzYmQzYjc5NjkyODA5MDU0YzdlMTI5MmYgbGVnYWN5LXRydW5rCis2MTA5MSA3ZDczNDdkZDk0ZTg3N2Q3Njk5ZDY3ZGU3YzkyZTVmZDJlNmY0ZmFiIGxlZ2FjeS10cnVuaworNjEwOTMgZjc4ODQxNjRmMDg4OWJlYjYxMjBjMWUyNjY2ZmI1M2E2N2U0NDY3YiBsaWJmZmkzLWJyYW5jaAorNjEwOTQgMmM5MzE4M2I4YTNjMjY5NDQ2YzUzNGYwNWFiYzI5OTQ5NDVlOTAyYiBsaWJmZmkzLWJyYW5jaAorNjEwOTUgNmM0NjEyMjU1ZjYwNTJjMmFhYTQ5YzgxN2QyYTc4NjAwMmY3YzY2MCBsaWJmZmkzLWJyYW5jaAorNjEwOTYgYjc4YzNhNDM3MWQ1MTExMGEzNzU0NjhkNzA0ZTYwZDJiNTE2NDhlMCBsaWJmZmkzLWJyYW5jaAorNjEwOTcgZDE3NjkwYzUwNzY2NjgzOGM2Y2I5ZjdiM2EzYzY0MjgwNTBhOWEyMCBsaWJmZmkzLWJyYW5jaAorNjEwOTggNjU5MmU1YTkwYzJjZDg0ZjIxMGZkOWY2NmRhMmE3NDhmNDg0YjUxZSBsZWdhY3ktdHJ1bmsKKzYxMDk5IDhhYWYxNDk1ZGEzOTU5Y2Q4NDRjYjVhNmRkMTZmM2UyOWEzNjMwMTQgbGVnYWN5LXRydW5rCis2MTEwMCAzZTQzNWEyMTEzNTY5NjhkN2U0MGViMjMxYjllNmI1YTVlYjEzM2EzIGxlZ2FjeS10cnVuaworNjExMDEgZDQ0MzRmMDNiOTcwMjJiMjc1ZjA0NTZiYTAzNjYyYWYwM2FlODRkYiBsZWdhY3ktdHJ1bmsKKzYxMTAyIDk2ZDVhMTU3MzE2ZTM1MTgwOTI3N2Q4M2U0NjI5M2ZkNGU3OGI1OGUgbGVnYWN5LXRydW5rCis2MTEwMyA4YzNjNWI0ZWVmNTU1NzE5Mzk4NTZiMzMxN2EyMDYyNTExYjY4MTlkIHB5M2sKKzYxMTA0IDhkZDMwZmUxMWE0YjM0ZDEwNzdiZTgwOGYyZTBmMTRhZGI4NDM0NGIgcHkzaworNjExMDUgMTE4OGVkZTE1NzM1YjliODY5OTEwY2M0NmY4N2Q1N2MxOTdlYzZmNSBsZWdhY3ktdHJ1bmsKKzYxMTA2IGNjMjIwNzQ1ZTRlNTkzZTZjMzZiNmY2ZGYyZjc0YTU0MGNkODJlM2UgbGVnYWN5LXRydW5rCis2MTEwNyA1MDRiNDM1N2JkZGQzOGU3M2EzY2VlYTYyNmQyOTkwMzAwNDEyZTMzIGxlZ2FjeS10cnVuaworNjExMDggMmQyYjBlMTU1ZjE5OGZiYzZmNjA3ZjFjODI5M2I4ZThhNjA5ODU2NyBsZWdhY3ktdHJ1bmsKKzYxMTA5IGJmM2ZhMzdmZTc5Y2QwMzhjMmVkM2ZiNjQyY2I1NjQ0NmNjNzk0OTkgbGVnYWN5LXRydW5rCis2MTExMCAwY2I0ODE5NTY0NTJmYzVmNWMxMDFlZTNmMjQwOGM5OTY1NWFhYThkIHB5M2sKKzYxMTExIDI0MjU0NDMwZTg5YTBjOGUwNWQ3NWQ5OGY4MGQ2YmUzMjZiYTZlNjYgdHJ1bmstbWF0aAorNjExMTIgMDEyOGNlNzczNTRmNjA1MjZkYjhkYzg3ZWU1MDc2OTM0YjNiYTRjMiBweTNrCis2MTExMyA3MTBkNTI1YjA1NGM4MWViMmNlN2I2MmVhYzQ5YTIxNmY0ZGYwODhmIGxlZ2FjeS10cnVuaworNjExMTQgYzM4ZGNiN2Q5NGE2ZGE5YmRmY2FiOGY0N2Y5NDNlNTM3MjhkMjVmNSBweTNrCis2MTExNSBlNGZmZTY0OTk1NDgxYTk3MTA1YjkzMDBiODllZmQ3Y2NlYzZmNWI5IHB5M2sKKzYxMTE2IDU5NzYyZDY3MTRhMzEzYjk1ZDkyZDViM2RmNjdhNjM1YTJiMDBlMWEgbGVnYWN5LXRydW5rCis2MTExNyA5NzJmYzdkN2NiNzI2OTc4YzI4NTUwMjZjNDQyOGI3MWU3NDE1MTAxIHB5M2sKKzYxMTE4IDQzZTA4NDg0N2U1MzMyMzQwMWU4Y2Y3YzJkMDI4YzI2OGNjZjgwMjggbGVnYWN5LXRydW5rCis2MTExOSA3ZGEzNmI0OWM5ZTVhYWUyZjg1MDVkM2VjMDZiMzZiNjEwZGFhZGEyIGxlZ2FjeS10cnVuaworNjExMjAgYzU0NjUyMzY2NzcyOGM5NTcwN2RkMzg1Y2UwYWIyNzgwNmI1ZTMxMyBweTNrCis2MTEyMSBkYmYxZGRjNWY0Nzk1Mzc5NDc0NWY2ZmM5ZmRlMmU1NDI5ZGFlMGYzIHB5M2sKKzYxMTIzIGJjZTRjNDBkZjdkZjc0ZWZkODdmZWUyOTIwOWViMWNlMzM2ZjE5NDMgbGVnYWN5LXRydW5rCis2MTEyNCAxMDk2MmIzZjc3YTliMzgxYjYzMTgxNmFjYjE2YThmYzQ5Y2Q2NTk1IGxlZ2FjeS10cnVuaworNjExMjUgZmFjZjAxZjE1YjE1MzU1NTljMmJhMDVjNGY1YWE3MjA0NmI4OGYxYyBsZWdhY3ktdHJ1bmsKKzYxMTI2IDkzN2EzYzVhZjY5MTkyYjhlZDE4ZjRlN2FlZjZjMWU1OWVjZDBkYjggcHkzaworNjExMjcgOGNkOTg0YzE3ZGVjODVhYzA3MzkxODVkMGVjY2U3ZDBlNDlmYzU4YyBweTNrCis2MTEyOCBiMjY5YzJkMDNmZDJkNmEyNzA4ZWNmNjYzMGI3ZmVhMjE5MjViYTk4IGxlZ2FjeS10cnVuaworNjExMzIgMDk0MDcxM2I2NzI2Y2EyNmYzYmQ5ZTZmZjQ1YzBlODdiZjVkMGY3ZSBsZWdhY3ktdHJ1bmsKKzYxMTMzIDA1YzM5NjE5MWU0MzI5MWY3NjBiYzIwMjkzNzkzZjZhOTRmZTNiNTcgbGVnYWN5LXRydW5rCis2MTEzNSA0YTk1ODhiMWU0Yjk1ZGYxM2JkNTEwOGViYTM0N2MwNjFlZmUyMzE0IGxlZ2FjeS10cnVuaworNjExMzYgODljZmIzOGE0Yjk4NjIzY2EwNTUyNmQ2YWI5MjI2MDdlZDA4ZWUwZiBsZWdhY3ktdHJ1bmsKKzYxMTM3IDIwN2NhMGE4YWZkMDAyMzBhYmI1ZWNlMjQ3N2Q2OGZiNzMwYjJhNDAgcHkzaworNjExMzggY2ExMWNmMjRlYjg1NWY1Yzg2Y2MxYzQwZjA0N2I0NjVjYmU3ZTQ4YSBsZWdhY3ktdHJ1bmsKKzYxMTM5IDY3ZDQwNDg2Njg0NjIwOTRlZGYzZWNlNzU2ZjQwMjlhNjJmZDUwNzUgbGVnYWN5LXRydW5rCis2MTE0MCAwMmEwMWU1NzhkNmM1YTBiZTM0Mzc4MzA2NjYwYzNmY2M0ZDU5YzYzIHB5M2sKKzYxMTQxIGI3ZWU5MDc0Y2EwZWIzYjc3ZWZmZDJiMjMxYjMwOTE2NzkxNjBlYTAgbGVnYWN5LXRydW5rCis2MTE0MiBmYzZmOTA1NDVjYjQ4ZTVjZWY1ZjZlY2JiMTBmZTZlY2NkY2Q3OTdjIHB5M2sKKzYxMTQzIDAwMjNjMDQyMjhlNmIzNTMzMDVkNWNhZGFhOGZlNjU5MTgzMTgxMDYgbGVnYWN5LXRydW5rCis2MTE0NCA4OTQ2ZTI3YTQ1NjNiYzJkM2RiMjllNDYwZjk4YzE4MWFkZTc1ZGYyIGxlZ2FjeS10cnVuaworNjExNDUgOWI4ZmM0MDVmOWIwNGZjNTExYTZjMjM4MTExOTk0ZTgxMjI4NWM0NCBweTNrCis2MTE0NiA5YWQ1NDJlYTA1YmExZGE5YjAwNjFlMmVlOTJlOGM5NTA3ZjQwNjYzIGxlZ2FjeS10cnVuaworNjExNDcgNDRkMTBkMzkwOTJjNjVlYzJmZWJjY2FlNzI2Yzg2MmZmNGI4NzU0NyBsZWdhY3ktdHJ1bmsKKzYxMTQ4IDZhMDRkYmIwZDE0YjQ5ZDE1ZjMwZGEzZjc3ZDM5ZjVmNjRhMDllNjYgbGVnYWN5LXRydW5rCis2MTE0OSAzMTI3OTU2ZjNiMzNlN2QxZGZhMmY1ZTI3MjE1NTg2ODhjOTU1YmIyIGxlZ2FjeS10cnVuaworNjExNTAgYThmYmQ5MjcxNGE5YTljNDcyMjdiOGYyNmU4NzZmNDRlZTgyNjA3ZCBsZWdhY3ktdHJ1bmsKKzYxMTUxIDJkMGJkMDk1YzQyMGIwNzExMDAwZDliZTY2ODQ4ZjZjZmQ5NzJiM2IgbGVnYWN5LXRydW5rCis2MTE1MiAwYWRmYmE4YWU5NTcxM2M0ZTBkNzJmMTVkMDg5NmRhZmJmYTZiOGQ0IGxlZ2FjeS10cnVuaworNjExNTMgODJjM2IwYjVhYTkyNThkODhlMTdmOTdkMTVmMDhmMDcyZjQ4ZTdlMyBweTNrCis2MTE1NCBjMDlkYjc4YmQwNjZjY2IxMmQxNTg3ODlkYmRmMzQ5OGE2MTM4OTNhIHB5M2sKKzYxMTU1IGNjNTU0M2I1NjEwYjJkMDY1Mjg0NDQ2Njg0OTY5ZGVkOWVmNjVmNDMgcHkzaworNjExNTYgMGUwMTY5YjBlYWNjNmRkZjgwNjhkNWM3Y2QxODQ3M2E3YzMwYjlkOSBweTNrCis2MTE1NyA1YmEwNjY5MGMxODQ3OTliMDVjNWRiNjAxMTBlMjNmYThjNzBhNTM4IGxlZ2FjeS10cnVuaworNjExNTggZGYxNTgyN2YzNDg4MWI5YWYwOTM2MzUwODEzY2VkNWMxMjNjODIzMCBweTNrCis2MTE1OSAzNjJhNDZlN2MzM2EyYTZhZjY3YTc5NzQzMGZkNjRmYjkwNTc2NjZhIHB5M2sKKzYxMTYxIDIwYTQyNjc0YjExMTA0YWI5ODU4NjlhMWRiZTc0ZDE2MGU1ZjU0ZDMgcHkzaworNjExNjMgY2QxNWE1ZTljMWRlNTliYmVmZGE3ZjZmZjg1ZjQ2MTIwMDU2ZDNmNCB0cnVuay1tYXRoCis2MTE2NCBjMTI1YzYxZTA2YTg2MDY3MzIwYjUyNmQ4MDFmYTlmN2NlYmNkZjU1IHRydW5rLW1hdGgKKzYxMTY1IDcwYzQxYmQ2ODBiNWU3Y2IwMWE0MjU2YmVjZTliMzI0ZWE2NGQwODAgbGVnYWN5LXRydW5rCis2MTE2NiAzNDM5ZmEyMTVmYWVjMGFlMThjYjI4NDM5NGYxY2M1MDQ1OTVkYmVhIGxlZ2FjeS10cnVuaworNjExNjcgNWI3MDc4ZWNjZWU4MzY5N2Y1NDQxNzQyZGY4ZTlhZGM1NGU3Y2M4MiBsZWdhY3ktdHJ1bmsKKzYxMTY4IGE2MmY5NWE0YWRmYzVlMmFkMjYzNmUwNzY0OWJiYzc3YTQwNzU1MDEgbGVnYWN5LXRydW5rCis2MTE3MCA0MDYwZGIxMjZlY2YzNmM1MDU0MjhjMjRkYzZkYjU0ZjFkNTdhYzU5IGxlZ2FjeS10cnVuaworNjExNzEgOGJiZTUzMWZjZDNjOGNhNzFmNWI0MWQxMjZiMzhkZTFjN2NhZWU0ZCBsZWdhY3ktdHJ1bmsKKzYxMTcyIGY3MmIyZGU5OTdiOTkyNzg4NWE5NGM3MzljOWFjOTc4MWIyODdmYmQgbGVnYWN5LXRydW5rCis2MTE3MyA5NmNhOGM3Y2VkYzRkMDMxZWJiMjA4ZTVhZGE5MzE4ZTYwOGNhNjI4IGxlZ2FjeS10cnVuaworNjExNzQgNzYyOGNiNDAzYzUzZTFhMzZhZTNkMmY5NDhiMTcxNTU5NmE2NjM2NSBsZWdhY3ktdHJ1bmsKKzYxMTc1IGJiZGYwNmE4NmEyNDMyOThiMjEwNzRlOWFlNTNjYWNjYWMwODRjMzEgbGVnYWN5LXRydW5rCis2MTE3NiAwYThlZWNhYzVhZDFkYzkzNDdkZTRjYWI0NzI1YjgxNjExZjA1ZmVhIGxlZ2FjeS10cnVuaworNjExNzcgZjY1M2MwYjg5MTZiOGU1NjViNzA3NjZkOTFhM2YyMjUwZDRlNjY4OCBsZWdhY3ktdHJ1bmsKKzYxMTc4IDQ3MzI4ZDc2ZThhYmJkMTc2MzFlZDY2ODA1Yjc1MmU4ZmMxNWEzYjggcmVsZWFzZTIzLW1haW50Cis2MTE3OSA1NGYxY2I4YTgxZjY2MDI1YzdlZjEyNmU4ZTdlNDRlYjQwMzU2ZDMyIHJlbGVhc2UyNC1tYWludAorNjExODAgMDU2NTEzMGQ3ZDlmNjRjMGRmNDQwZTVjMjE1ZjJhNGRlODM0NjBjYyByZWxlYXNlMjQtbWFpbnQKKzYxMTgxIDFmN2Q2MjhjNzBhOWFlZmU3NjJjMmMzMjIxMDg3NmZhZjhkNjRjNzggcmVsZWFzZTI0LW1haW50Cis2MTE4MiA3YTFmYzYxZDVjM2U0NWYzYTIyMTVkNDJjYTg1Njg2MWExODBkMTE5IHJlbGVhc2UyNC1tYWludAorNjExODMgNWNjYjZlYjIwMmZmMjFjMDE4MDA0NzU1NWVjYTY2OWJiOTI2Y2UxNyBsZWdhY3ktdHJ1bmsKKzYxMTg0IDg4YzFlMTdjZWZmY2YzNTkzZmIxYjViMGQ2MTc0NmFlYzBhZTk4MWMgcmVsZWFzZTIzLW1haW50Cis2MTE4NSA4OTNjN2JkNGE5MmJkODg5YTg1ZTY5MWY0OTE4OGMzN2IwYTcyMzU3IHJlbGVhc2UyMy1tYWludAorNjExODYgNTY2ODFkNWJlZTcwOTMwYmM0Y2Q4MWMyODkxZmNlNGMzMGVhNjcwYSByZWxlYXNlMjMtbWFpbnQKKzYxMTg3IDRkNzEzMDFhNmQ0YjdmYTk3OGUwZGUyY2YwYWIyNzFhMTRlYWUyNmIgcHkzaworNjExODggYTMxYjY1MDUxNWNiOWNhNDFjNTdjMTVkNGJkYjczYmMxMzhlZGNmMCBweTNrCis2MTE4OSBjZjNhODBmMWRhN2QwN2EwMzRmZTQ3MTNmMDQ4ZjM3OThlNmE0OWUxIGxlZ2FjeS10cnVuaworNjExOTAgNjA2OGI3NWVjMjdhMGYxOWM3MjAyYzgwZTA4MGRlN2ZlM2Q5ZjRhMiBsZWdhY3ktdHJ1bmsKKzYxMTkxIDQ0YWQ3OGZlMzVmYWIxMzE3Y2ZjZDAzMTg3ZjQ3Njg1MTFhZjFlNjggcHkzaworNjExOTIgYjkzMmYwMzVmYjNlZjQzNmRhYjAwNjIxYjUzZTdmMzEzZmQwMGZlMiBsZWdhY3ktdHJ1bmsKKzYxMTkzIDI0ZjQyMzBiYWViZTdkZmM2Y2IzNzY5ZmU5NzliMzFkYTY5MTc2YTcgcHkzaworNjExOTQgYzZkOWEzNGYwMjRmZGJhNDY2YTkyMjc5ZTNmMTE1NmMyOTE3ZGUyMiBsZWdhY3ktdHJ1bmsKKzYxMTk1IDJjNzNjNTgzM2YyMDA1YWU5ZjU2ZGNjYmM1ZjlkMjA5YTMyMDVmMmIgbGVnYWN5LXRydW5rCis2MTE5NiA3ZTRiNzUzYWZlYzZlMTc5NGUzN2FjOGVkYzY0MzI1MWU0MzVkMmExIHB5M2sKKzYxMTk4IGE1NTEzNmM3OGI2MDQxZDNlZTZmNTA1ZmUxMWQ1ZTlhYjQ1NWJmZmYgbGVnYWN5LXRydW5rCis2MTE5OSBhMThhNDI0YzJiZDM0ZTc4N2Y5MjMzODcxNmQ4MmQ3ZDQ4ZTkwNzA1IGxlZ2FjeS10cnVuaworNjEyMDMgNDFhNzA3NzQ0YmM4OThkY2EzZGZiMGQ0YjU3NzJmNTIyMzE1MWZmMSBsZWdhY3ktdHJ1bmsKKzYxMjA0IDYyODJkZmQ1ZGM0OTRmNDA5MWJhMzI4NTI5NWI2OWEzYmViNDczMmMgbGVnYWN5LXRydW5rCis2MTIwNSA4ODJlYmExNDUxMTk4ZDVhMGZmZDgxYmYyMTc4ZmYxN2FkZjg3YjMzIHB5M2sKKzYxMjA2IDI1NDA2YjNmZjk3YTZmZDI1ZGQ1NTExZGQ1MDVlMzE5YjI4ZTRhODkgcHkzaworNjEyMDcgNjVlZjYwOGRkNjZjYjA0MzIwYjVjMjcxY2Y1NzA1Y2Q5OWIwZTQzZiBsZWdhY3ktdHJ1bmsKKzYxMjA4IGU5OWUxZDhiODA3NzcwZWU4YmU2YjFhYjM1MTY0NTAzMGQyNzBkOTMgcHkzaworNjEyMDkgYzUxOGYzOTQ3M2ZkMGI5MDAzZDgzODAxNTIyMzY1YmVmYmM1MmJhYyBsZWdhY3ktdHJ1bmsKKzYxMjEwIGExNTRmMTk4MjU5MjhjYmFmMWYyZmM0MzI3ODliZGUzZjJlN2E0MGUgbGVnYWN5LXRydW5rCis2MTIxMSAwNzIzOTJlZDRlYTY5MTM5MTc3MWY0MDk1ZDM5Nzg2ZmQwODc1NTllIGxlZ2FjeS10cnVuaworNjEyMTIgODQwMTM4ZTI0OTgwYzg5OTc0NjNjM2Q4NjY0MzE0MDAwMGJkMGFjMSBsZWdhY3ktdHJ1bmsKKzYxMjEzIDJkNTUxZDA0NjAyMmUxYjc0ODY2YTY1NTQyMzc5YmU5MmZiZDNiYjcgbGVnYWN5LXRydW5rCis2MTIxNCA0ZDM2MWYwMTY0MWNiNjExYWIzZmE5MDNjMGVmMzQ4Y2M2ZmEzOTQ0IGxlZ2FjeS10cnVuaworNjEyMTcgOTFkNzU3MmUzNWExY2QwMTBlYTAxNGJkMzhkNDY3YTdjMDIyOGM3OSBsZWdhY3ktdHJ1bmsKKzYxMjE4IGQ3ZTRjNjNlYmNhZDA3YmU2YjJiYzE4ZTAzYzI1ZWQxYzMyNjRhMjQgbGVnYWN5LXRydW5rCis2MTIxOSA1NDg5YWY2ODY0MDhjMWVjMDcyYmEwYjg5NmJmMzMxYjEyZWQyZGUxIGxlZ2FjeS10cnVuaworNjEyMjAgM2ZjMDljY2YwMTQxODVkMmNiNGNlZjFjNWFlMzUwOTYxOTY1MGY4NyBsZWdhY3ktdHJ1bmsKKzYxMjIxIDBlMjI0YWEyMTlhMjFiN2ZhMjI1ZGExM2IxNWU3MTAxNGMwOTQwMjggbGVnYWN5LXRydW5rCis2MTIyMiBmM2ViNDU3ZTk2YTc1YzNmOTc3ZTU3MGIyNWUzMWJkODEyZGU1ZjBlIGxlZ2FjeS10cnVuaworNjEyMjQgZTQ0Yzc0NWJlYzBiYWRiNzkwMTZlYWNkMGNhNmIyZjNjZmU4MTBhZiBsZWdhY3ktdHJ1bmsKKzYxMjI1IDRlYTM2YzAxMmEyZGU1MjI3NDIxMjFkNDkzMjY1MjljOThjMGZiMTkgbGVnYWN5LXRydW5rCis2MTIyNiBkZDAxNmE2ZGRjYzVhOTAyOGYwNWJhNTE3YWRkMzc3OTQ3OTRiYTlmIGxlZ2FjeS10cnVuaworNjEyMzAgOTdiZWEzOTIzNmE5M2I2OWM0NGY5MWJkYTk0MjY3MTM2MjYyY2U1OCBsaWJmZmkzLWJyYW5jaAorNjEyMzEgMmQ0MjUzMDE1ZjU4NDBhMTRjYjRkYWFkZDc3MDc5MDhiYTU5MmMzMCBsaWJmZmkzLWJyYW5jaAorNjEyMzIgOTZhYTZkMDI3ZTJlNzY5MTgxNmU0OWIzMDRkOTc1ODI4MTQyMWNiMyBsaWJmZmkzLWJyYW5jaAorNjEyMzMgNTU0NmRjNGE0MjZhYWE2Njk5YjRjNzdiZDIxYWNkZTY3YmJjNTM3ZiBsZWdhY3ktdHJ1bmsKKzYxMjM0IGQzODdiMDFkYmMxYzlkYWFmOTA2NmIxMTY4MmU3Yzk1ZjUzMzMzYjAgbGVnYWN5LXRydW5rCis2MTIzNSA5MWNhOTU0OTkwNmFjYWJjOWFhNjU3ZTQxZjZjMjVlMDI1ZGM0N2JlIGxlZ2FjeS10cnVuaworNjEyMzYgNDk1NzAwZWUzMzQ1NmY3NjRjZWMxYzE0NTI5NTI2OGYxMzY4MmI1NCBsZWdhY3ktdHJ1bmsKKzYxMjM3IDhhNWM3NWVmYWU0YzIwYmU5YTc0MTliOGRiMTBhZTFlYzI1NjZmMGYgbGVnYWN5LXRydW5rCis2MTIzOCBkZDMxOGMzZjZjYjc5YTc0OTU5YmY2YTJmNTM1MWFjMmY0ZjE0NGRkIHB5M2sKKzYxMjM5IDAwY2IwYTM1ZmI0OWIyZmM5N2Y2Yzc0Y2JmM2M3NGNhMjUxNmRhZDUgbGVnYWN5LXRydW5rCis2MTI0MCBmZjNlOWFlYWE2OTIzNWI4OTI1OTIwNWVlYTMxNjZlN2MxZTYzMTM4IGxlZ2FjeS10cnVuaworNjEyNDEgMzBmYTY3NzcwOTZmMjEwMmVkN2Q0Y2NjODc2MmFkZGIzNjRlYTY0NSBsZWdhY3ktdHJ1bmsKKzYxMjQyIDExZTllMzY2N2IzNjVjZGVkNzdlOGMxNzZlYzI5YTkyMWNiMDgyYzcgbGVnYWN5LXRydW5rCis2MTI0MyBiZWFiOWUxMGExOGJkZTk3OGY0MjZmOTBjOGY4OWE4ZTA5MDgyYjYyIGxlZ2FjeS10cnVuaworNjEyNDQgOTk2MGZkMmY1ZWE5NDA4NWFlZTY5OWJjYWQ5ODBjNTA0NTVhZjllZiBsZWdhY3ktdHJ1bmsKKzYxMjQ1IDFhNjhlY2UxNTQ3YWI0N2Y3Mjk3Y2RmYmU4NjNhZmQ2ZGNkYWI1YTUgbGVnYWN5LXRydW5rCis2MTI0NiAyMzQ0MDFhZGQyOTk4ZmJmYTU0NTc4NDhjNWY0OTg1MmIzMjNlNGZiIGxlZ2FjeS10cnVuaworNjEyNDcgYzlkNjZiZGJjY2NkNDRhMzU5YzViYjgzODNiNGUyYWRiNWM4MWRlNSBsZWdhY3ktdHJ1bmsKKzYxMjQ4IDQzNjEwNTEyNTQ0NTkxZjc4ZTg3ZTFkMDcwZmViNzIzNzUzNmFmMzAgbGVnYWN5LXRydW5rCis2MTI0OSBmNTI0NjkxMWM5MDNmMGMzZmVlMWY1NGZhOGU5MTBiZTEzNWYwYjlmIGxlZ2FjeS10cnVuaworNjEyNTIgMGNkNGFkMWM5MTUzZWE4YTE0MTY1OGI1MTUyN2M1NDgxM2MyM2JiMSBsZWdhY3ktdHJ1bmsKKzYxMjUzIGQ0MWE0MjA2NDA1YzEzNWZmMGQ1ZDI5MWVhYjZmZTRlMTY5NDY3ZGYgbGVnYWN5LXRydW5rCis2MTI1NCAyMjE2YjEwMGIyZDJlZGVmZDIzZmVhZGFmNTZjMWVlZmI4ZWE2YjA4IGxlZ2FjeS10cnVuaworNjEyNTUgNDI4ODliMWE3ZGMyNTVkZDgwNTBjZjkzMDgwZGI4NmJkYWRmMTUxOCBsZWdhY3ktdHJ1bmsKKzYxMjU2IGMxOTdlMTg0NDliNDA0Zjk1M2E1Njk3NTVjODBhZDFkMDk2MmZhNjEgbGVnYWN5LXRydW5rCis2MTI1NyBlZWZjNjA0YWQ5MzVhYjg0MzA2MTE2ZDk5NmU1ODg2MzE0NWQ0NzY3IGxlZ2FjeS10cnVuaworNjEyNjAgZDBiZTJjMzZjYmY4ZDc5OTIyMGVmOTAwZTU4ZGY5NzVlYmUxMTQyMSBsZWdhY3ktdHJ1bmsKKzYxMjYxIDczOTVlZDBmMGY3Zjc3NDM5NjliYjk3ZmE2Mjc0ODU0OTk4ZWFiNjcgbGVnYWN5LXRydW5rCis2MTI2MiA5YjA0OTQxNjczZjE3M2YyMTRjNzQ5MjMyMjU3Njk4MTM4N2Q5YzJhIGxlZ2FjeS10cnVuaworNjEyNjMgZWY4OTMzOTA0ODdiYWZkMDFlODhhZmM4ZTNkZWE0OGNkNGVjNzlmMCBsZWdhY3ktdHJ1bmsKKzYxMjY0IDYxZDIyNzAxYTVlNWViNjI2YWQ3ZGQwOWZmMDYxMGE0NWNmZmRiZTYgbGVnYWN5LXRydW5rCis2MTI2NSBiMjYyYmVjZTEzMjNjYzNlOTExY2QwMWMxOWZkZTQxZjIwYTA0ODRlIHJlbGVhc2UyNS1tYWludAorNjEyNjYgYjhlZjcxYjAxNDQ2MTA3NjhhNTg0Y2QxNDg2MTQzMGQ5YmU5NTMzMCByZWxlYXNlMjUtbWFpbnQKKzYxMjY3IDRjNDc5OTNhZmIxYjEyMzBkY2FmOWQzMDc1M2I2ZWIxNmI4ZWUzMTcgcHkzaworNjEyNjggMGI4YjNlNjYzZTNhMTVjNzY0N2VjMTgzN2IxYTc2ZjUxNGJiYmQxZCByZWxlYXNlMjUtbWFpbnQKKzYxMjY5IDA2NWM0YTc2YWMwMWYxNWNhNGYzYmIzNDMwMThjMDNiMjQwYjJiYWEgbGVnYWN5LXRydW5rCis2MTI3MCAxNTc0NmJmNGEwYTYzYzQ5OTA5MzgzMjc2YTlhYTFjZjRlOTQ2MzcxIGxlZ2FjeS10cnVuaworNjEyNzEgYTRjMjY1NTY1Y2I2YjY3NzQ2YzZjNGRkMjI1MzE2ZTc3NDliZDY0MSBsZWdhY3ktdHJ1bmsKKzYxMjcyIDM5ODAzMTNkOWI4YjI3YzBlMjIzNzBjZjIxYzhiNDYwMzcxNTIyZGQgbGVnYWN5LXRydW5rCis2MTI3MyAzNmZlZjk5YWYxOGQxMjE0M2QzNjhjZGE4ZTE4MTAxMTRhNjk4MDE2IGxlZ2FjeS10cnVuaworNjEyNzQgZTliZTZhZWI0ZGYwNjIxZmIyOTIxOGU1MzQ0ZWU2OGIxY2Y3N2JkNSBsZWdhY3ktdHJ1bmsKKzYxMjc1IDg5OGRjMGY4YWI2MzVhZjdlODZmYTIyOWZjYzE4MTMzMWU3YmNkYTAgbGVnYWN5LXRydW5rCis2MTI3NiAxN2IyZWEwYWZhNjExODg4MjgxYTBmMjQ5YjBjNmViMTAxMzVjOGU2IHJlbGVhc2UyNS1tYWludAorNjEyNzggYWYyNjdlNTRiZjFkZGU4ZDhiNjdkZjAyOWYwNzk5ZWFkMDdlODQ4MyBsZWdhY3ktdHJ1bmsKKzYxMjc5IGJiYWI4ZjY0ZjhkNjJjNTY5YzZkM2M4MDFmMThjOTMzYmQ0MDg3MmUgbGVnYWN5LXRydW5rCis2MTI4MCA5ZWNiMDNlZjFjNjI0MTk3YjUyMzk2Yzc2YzVmMTE2ZGM1ODUwMzM1IHB5M2sKKzYxMjgxIDQ4NWIyMTk1NDc0NjA5N2IyNTA1MjIyNGNlNDllMTYxOGVlMGQxNTUgcHkzaworNjEyODUgNDRhYTU5Zjg1OTFkYWE2ZTc3NGRhOGM2YWZiYzUyODZkMmNlNWI5NiBsZWdhY3ktdHJ1bmsKKzYxMjg2IDBiZTliMWNmMWIxNjIxMTY3YmRhYTJmNzg1NzBkOGNiYWU0NWJkODIgbGVnYWN5LXRydW5rCis2MTI4NyA3MTIyZmE2NTY5N2I4YTczZTYxMGRiNDg2ODEzYTAzZTk2YTMyYWQ4IHJlbGVhc2UyNS1tYWludAorNjEyODggNWY0OWI1NjlkZWRmMTE0YzVmZWNiYWI1Y2Q2MDJmOWUyYTg1OWE4YiBsZWdhY3ktdHJ1bmsKKzYxMjg5IGE4NzU0YzBkYjUzZjUwMzEzZjVkZmM0MTc4ZWU2ZTI3ZjQ5NDdmZGYgbGVnYWN5LXRydW5rCis2MTI5MCAzNDM1OTdjN2Q2ODJiMzU1MjU4MDM1MmRlZGRkMGNkYjM2OTc4YTA0IGxlZ2FjeS10cnVuaworNjEyOTMgOWJiZTU1Zjk4NjdlZTk0ODU0ZTM0NWY5YWY3ODdmY2RlOTE0NDVmNyByZWxlYXNlMjUtbWFpbnQKKzYxMjk4IDM5MWRlMTQzMjI2ZmQ3YjM3Nzk2YmM5NzhmZjNmNzhmMDViMDg5MTkgbGVnYWN5LXRydW5rCis2MTI5OSBmODZmYTVmZWFmMzE0ZGZhOTdiMDYwYjAxYmEyMzY3NDIzMzc4NDc3IHJlbGVhc2UyNS1tYWludAorNjEzMDMgOWNmNzA3MjljMjNmMjA4OGJiNTAzMGIwOTA5MzliMzViZDIyZGVhZSBsZWdhY3ktdHJ1bmsKKzYxMzA0IDM3YWE0MTZiNGM0N2I0ZWY1ZjlmMDkzYWM4Njg3NTc0MjMwYTE0YmEgbGVnYWN5LXRydW5rCis2MTMwNSBlNWFhZGMwNWY2ZjUxZWNkNWJkMDZmNzYyYWZiMTZlMDEzNzIxZjkwIGxlZ2FjeS10cnVuaworNjEzMDYgNDUwNTBkMzc2ZDU3ZmI4NmY4MDQyNDVmYmZjMDY4ZWY2ZmY5MTQ5YyBweTNrCis2MTMwNyBjMjdhYWJhZTA2ZmRjNzViMjI4ZjY4ZDNkOTNmMTA0ZmQzYTIzMmQwIHB5M2sKKzYxMzA4IDlhNzI3YzlmOWJhYTI1Nzg2NGQ1M2E2N2UyZDNhMDAyMWE5OTdiY2EgcHkzaworNjEzMDkgYWY0NGNlZjFjZGY1YTU1YzkzZmQ5ZjE3OTJkYjBhOWJhODkyZTViNyBweTNrCis2MTMxMCBjODMwNjE2YmQyZmM5MzEwNTNjNDE3OTQzZjE0ZTk0ZjRmMjUzNmQ5IHB5M2sKKzYxMzExIDk0MDUzYjI3YTM1MjU5MGFjMjBkNjZiZjVkOGU2ZWVkNDExMTU4YzEgcHkzaworNjEzMTIgNTA2NTQ3ODIyYjhkMDEwMjJkYTY1NTAwZTRiNjFjYTdmZTk2ZDUyYiBsZWdhY3ktdHJ1bmsKKzYxMzEzIDE1ODQyMDk0YjA4OWEyYzc4YjUwMjVjNmM3ZWQ4ZDhjZDlhYWI2MmUgbGVnYWN5LXRydW5rCis2MTMxNCA4YmFiNDE4Y2M4NzkzYjhjMDA4NmEwMDI3YWE4MThlNWE4MjcyNDhhIGxlZ2FjeS10cnVuaworNjEzMTcgNWI0MjM5YzFmOGY4MmY2MDlmODg4MGE0MzRjMTM5YzFkNTk2MmUyMyBsZWdhY3ktdHJ1bmsKKzYxMzI5IDdmMjNiODA0ZTk0YzA0YWM0ZmI3NWUxNjU3MjljNGRmMzY3MzZlZmIgbGVnYWN5LXRydW5rCis2MTMzMCA2NjA3MGZkYmYwYjkzMDc3MzBjNzVkMTliN2MxMmI1OTkxMWU1ODlhIGxlZ2FjeS10cnVuaworNjEzMzIgNmYxOTU3NTVmMTQ0ZTgwMmRjMWQ4ZjcyNTE2ZGQwYWExZWI4OTcyZiBsZWdhY3ktdHJ1bmsKKzYxMzM5IDQ1NmNlZWM2NTM1N2MxNjY1N2IwYWRiYmJjZmUyNzIwYWYwN2FiMDUgcHkzaworNjEzNDAgYWVhYTMwMzE0N2VlYjIzZjRjMGI0ODAzMTZlYzM2NGU0MTI2ODlhNiBweTNrCis2MTM0NCBiOWQ2Zjg3MGJmYjE2OGM1ZmMzNmNkZWNjNzBhMTk1ODMwNzJjNTU5IGxlZ2FjeS10cnVuaworNjEzNDUgZDhkZjRhYTA2MjYxZGU1ZTRjMGFhMDUxZTQ0ODY5N2Q0NzkxZTQzNyByZWxlYXNlMjQtbWFpbnQKKzYxMzQ2IDIwMjI5NDNhZDQ1MGM0MWQ2NDcwOGZiNWNhY2EyZDI2NzJiNWI4ZjggcmVsZWFzZTIzLW1haW50Cis2MTM0NyA1ZDc2NGQ1MThmNjVlYmI5MTA4NTY5NzI3YTdjODhiMzIwYzI3ZWI4IHJlbGVhc2UyMy1tYWludAorNjEzNDggZTg1NzJkOWFjODVlZjNkM2U0YzAwYzRlZDhmMWNhN2E2YWVkOTlkZSByZWxlYXNlMjQtbWFpbnQKKzYxMzQ5IGY3YzM2NThjNzFjM2Q2YzMyMDM5ODI1MDczMjc1ZjVkNzgzYWE0MDMgcmVsZWFzZTI1LW1haW50Cis2MTM1MCAxNjJjNjk1MmVhMzRkNGU3MWY1Zjk5OTdmZDgwYTFiNjg4MzlhMmZkIGxlZ2FjeS10cnVuaworNjEzNTEgY2U1ZjZmZDU3OTEzMmY0Yjk1MGIwOTU1YWRjZjRlYjgxODQwN2JlOSBsZWdhY3ktdHJ1bmsKKzYxMzUyIDdmNGU2MDIxYmM5ZjYwOTRmZTJhMGQ2YTc1MGIwYTZlYTdjMGVlMDQgcHkzaworNjEzNTYgZTA5YmMxYzUyOTViYzE5ODQ1YTBmMzU0ZGEyZTgzMDY2ZmViOGVlNiBweTNrCis2MTM1NyA3YWRhYWI2NGViNzJlNDdlNTdmYmI0Y2NiYWY4NzAzZDBjMmY1ODEyIHB5M2sKKzYxMzU4IDc3NTJhNTdmOWM0OTBkMzFmMGYzYWY4YzYxMjE1NTM2OGUzOWRiZDEgcHkzaworNjEzNTkgZTQ0NjkxMGM5ZDQzN2Y0ZDRhMDMwYWIwMTQ0YWRiZDExYWZhMjRiYSBweTNrCis2MTM2MCA3NDBiNTgwOGM1N2FlN2IzZDRjNzkzYmFkZTUxMWNmYWY5ZjUyZmVkIHB5M2sKKzYxMzYxIDQyYTZhYWQzOWU1Y2U5YmQ0NWZiZGEzZjdmNjk5MThiN2Q2ODM1MzYgcHkzaworNjEzNjIgN2I5NWM1N2I1ODIxYmZhYzI3ZWU2YjE1ZTQ2MTZhZTM5MGMxZTNjYiBweTNrCis2MTM2MyA5ODYzMzhlYjBjMGRlNTI4NjI1ZDQ1YjlmYTUxYzNlZmM4YjkwN2EzIGxlZ2FjeS10cnVuaworNjEzNjQgNzQzMWYzZmFhMzU2OGE0MmUxZWQ0NDNmYTZkMzViNzlhOWFhOTQxYiBsZWdhY3ktdHJ1bmsKKzYxMzY1IDkzOTVhMjJhOTY2YTk0Y2EwODhiNWM0YTdkNTkxMjQ0ZjRiMjZkNTAgbGVnYWN5LXRydW5rCis2MTM2NiAwMTFkNzlhZjA1ZWE5MTNmY2JmNzMzZDVlMWVmMjRkNmJmMmFmOWVjIGxlZ2FjeS10cnVuaworNjEzNjcgZDUwMjRlZTllODhhMzFiMWI2Yzc0NDQ4NDIxZTEzYWQ2ODAyMzQzYiBsZWdhY3ktdHJ1bmsKKzYxMzY4IGQ3MmQ1MjdkZTcxMTk2NTY1YWY3MzVmMmE4NDdmNDg4OTc1NDdhN2QgbGVnYWN5LXRydW5rCis2MTM2OSBjYmI5ZTJmNGIyMDI4M2FjYTMzNTRhODljZGY4NDZmYjI3MTY1MWFhIGxlZ2FjeS10cnVuaworNjEzNzAgZGI1YjMyMWVkY2JiMmMxZjkzZWEwZWMxNDFmOGI1Njc2M2ZjNmRkNyBsZWdhY3ktdHJ1bmsKKzYxMzcxIDZhMzNkNGY2ZjE2Zjc4MjdlNmUyZjFlZjRlNzA3MzNhYWI2MTRkYTkgbGVnYWN5LXRydW5rCis2MTM3MiA1NDNlOGRkZTM2MWY4YTYxYzIxNmU3NzRhYzRmZmU3NDZjNzUxY2JjIGxlZ2FjeS10cnVuaworNjEzNzMgNDlkYzlhZjkwYjNkMWYyOWRlZGI1YmFlYzM4NzRkMzYyNjk2YmE0YyBsZWdhY3ktdHJ1bmsKKzYxMzc0IDY2MzQxYmVkODJiMzA1M2ZmZTY2Y2U4MWE0ZjE5MjU4ZTA0YzBmOWEgbGVnYWN5LXRydW5rCis2MTM3NSBkOTdiYmFkOWEzNWVlZWUyMDM3MWMyNDFjNjRjZmQ4ZGRmYjEwOGFhIGxlZ2FjeS10cnVuaworNjEzNzYgYmM4MTMyNjVlMmM2NTMzYzU1MGNjZWZiZmU3MzI2ZjFlZjhlYTM1NSBsZWdhY3ktdHJ1bmsKKzYxMzc3IGUyZTU0MmZkYWNkMDlkZWI4YWRhMzVmNjNmNzdiZmZhNzQ4ZjgwN2IgcHkzaworNjEzNzggZjZiM2NmMmYzMzMxMWZjZTcxNTFiNjFmN2M2ZDhkMWRiNzEzZTkyNCBsZWdhY3ktdHJ1bmsKKzYxMzc5IDdjNzhlYTcwNzIxOWVlNGQwMGU2NDYzNWNjZGExYWQyNzE5ZmI0ZDggbGVnYWN5LXRydW5rCis2MTM4MCBlN2FhOWI1ZjIxYjUwZDI4ZDg1ZDA2NzRhYmM4NTczNGM4YjBmNWVmIHRydW5rLW1hdGgKKzYxMzgxIDUzNzM3NTFhZDRiNDEwYjgyNzdmNTE0Y2YyNGMyZjUzN2ZjZmUyYzMgdHJ1bmstbWF0aAorNjEzODIgMGUwYzE0OThiZTFhODBmODZiOTk0NzRiNWNlMmFiZmQzM2RlYjNiZCBsZWdhY3ktdHJ1bmsKKzYxMzgzIDM1NGUzNzdjOTU5MDI0NGFiZTA3YTk3OTJhOGFhMDJjN2M2YzFhNjMgbGVnYWN5LXRydW5rCis2MTM4NiAxNjU4MGRjMTQyOTRlOTIyMzk4NGVhOTEyNDBjODljMTUyNThmOGU4IHB5M2sKKzYxMzg3IDAwNTNmYzlmNWExZjZlNzA1ODY0NDhjOGU5MmU1NGRmOWQwYzU3NWYgbGVnYWN5LXRydW5rCis2MTM4OCA5Yzg5MDllZTU3MWY0YzUwNWY1MTFkNWQxYTM3YjZmZGE1NTNmNWI5IGxlZ2FjeS10cnVuaworNjEzOTIgYjk0MGIxYWQ5YTNhYTIxOWEyMWE5NDhiMTIxN2YxZGQwZTA2MGZhZSBsZWdhY3ktdHJ1bmsKKzYxMzk1IGMwN2M1YzdhOTE0ZWUzMWY5ZDcwYzQ0YmEwZWZmNjQwMTQyYzBhMzAgbGVnYWN5LXRydW5rCis2MTM5NiA4MjNlMTFlYmY2NjgyOWJhZjU1MGI5MTYwMTNiNTM0ZmQ3NDVmNzA5IGxlZ2FjeS10cnVuaworNjEzOTcgYTVjOTM5MjI5ZmYyN2ZiNDY0NmQxZWVjYjFhMWVkZGFiYjhmZWQ4YiBweTNrCis2MTQwMiAyMTJlOWM4YWQwODdlYjE2Yzg5NGUwMGVjOTg1MjAxODQ1NTlmMmNiIGxlZ2FjeS10cnVuaworNjE0MDMgNTllYjVhZjYxY2Q3MzY4NTE3Mzk4ODdhNzA1MmI2NmVlMmM5OWJlYSBsZWdhY3ktdHJ1bmsKKzYxNDA0IDUzMWU2MjQxNmVlYjY3ZDVlOTI5N2UwNzg4MTNjMjI4ZmQ1OThkZTAgbGVnYWN5LXRydW5rCis2MTQwNSAwZDEwZjE5M2I5YmUyNWE2ZmVjODk5YWM0M2ZmNjIwZjExMWRiNTNmIGxlZ2FjeS10cnVuaworNjE0MDYgNGUzNThlZDdmNTE1NjE3ZmZjN2JhNTJiMDFlNTNlYzQ5ODMxOGIxMCBsZWdhY3ktdHJ1bmsKKzYxNDA3IGZlYTdiYTg5MTBhOTYwYmY3MGRkOTJlNGU3N2Q3NzAxNjE1Y2RiOTEgbGVnYWN5LXRydW5rCis2MTQwOCA4MzJjODIwZTlkMTQ0Y2I3NmM4Nzc4YWQ2ZmNmZmUyMzJiMWY1YzQ2IHB5M2sKKzYxNDA5IDA1OGZiZmI5ODVhZThhMGI2NWQ3MDQxNWE2MTk5MTVlOGM1ZGFkNDAgcHkzaworNjE0MTAgNzAyNjU3ZWZhYjliZTkxMzkzZDljZWI0YzkyNzA2MzYwZDk1OTRjNiBweTNrCis2MTQxMSBhZTIxYThkNzAzMDI2ZTE4MjIyMzBjNDZlZmI2ZDFhZjZmMTU2NTRmIHB5M2sKKzYxNDEyIGQwYzY3N2RkZDZiODljMDE0ZDY1ZjkxNzQ4NzIwNTdmOGIyNjk2YmQgcHkzaworNjE0MTMgMmUwZTE0MDI5NTlkM2RlNzA3YzUxZjllZTEyNjFiMDQyMTQ3ZmFhNCBsZWdhY3ktdHJ1bmsKKzYxNDE0IDM5ZmIyYzc4ODQxZWEyNTgyNGJiMWFiMDY5NmEyYTk3ZGI1YjlhMDEgbGVnYWN5LXRydW5rCis2MTQyNiAzNzk3MzEyNWIyYzBjYzBhZjk1NzhmYmQzYjU2M2I4Mjc1NDI1YTZkIHB5M2sKKzYxNDI3IGQ3MGZhYjk3ZWJiNWVhOTczMTA3NWUzOTdiOTE4MzFiMzE0NTBlNGYgcHkzaworNjE0MzAgMWYwZTdlMmRiZTE1Y2JhZTllNTY0NWM2MTM0ZmNlODI2MmJmM2MyZCByZWxlYXNlMjUtbWFpbnQKKzYxNDMxIDc5ZGVhNjUzMzJmODZmMzdmOWM2NTNkZTI0MGMxOGVlZjk2YWZlZDQgbGVnYWN5LXRydW5rCis2MTQzMyAyZmYzZTQzMjE3YjdlNTQ0YTM5ZTU0NTgzZTUwZWZkOTY0NzVhMTliIGxlZ2FjeS10cnVuaworNjE0MzQgNGQyOTEyN2YzZmEwZDdiY2E3MjljZGM1MDFkNjBkMjIwOTI2NzE4YyBsZWdhY3ktdHJ1bmsKKzYxNDM1IDE2NzMyZGIwMDgyMmVhOWRhZTE3ZTFhNGEzM2NlYjkzNGU3ZjNhMWQgbGVnYWN5LXRydW5rCis2MTQzNiBjNDQwMmVjNjBjM2E0YTE1MmVlNjI1ZTdkMTdjMjVmNmQzNTVjNTljIGxlZ2FjeS10cnVuaworNjE0MzggNGQzOWQ0YTZhOWRiYTVhOGQ4OWZmMWNjNWViNWRmM2Y0M2Y4N2E2OCBsZWdhY3ktdHJ1bmsKKzYxNDM5IDIyYTRhMTExZDU5OGFlMTNiYTcwZmI3MjEzMmIwMDJjNTIzZDhhZDcgbGVnYWN5LXRydW5rCis2MTQ0MCA0ODI0N2E0YjM4ZWRmMDk3M2QxN2E1NjQ1NDRlZWEwYzdjOTIyMmI0IHB5M2sKKzYxNDQyIDYyZWYwZWEwMzRmNGU5NjkwNzllMTY0YzgwNThmMjUxNmQwOTc3ZWEgbGVnYWN5LXRydW5rCis2MTQ0MyBiYjU0M2E4MDlmZTI0YzhjNTI1MWViMjU4YmYyZTlkNjBmODUwZjE1IHB5M2sKKzYxNDQ0IGYxMWMwMDI0NmZiNTI1ZDE3YzM0ZjI2ZTZhNGZiNmNiNjVjNjQzMmUgbGVnYWN5LXRydW5rCis2MTQ0NSBhY2JmOWNmNTk0ZjhiZDg1MjY0ZDZhNDRmNWVmYzQ2ODY2NGFhMGQ2IHB5M2sKKzYxNDQ2IDM2ZjNjNmJmMmM5N2JmYWZlZDY5ODFhZjIzMjljYjQzMWExNTc0YTMgcHkzaworNjE0NDcgMGRiN2ZhMTRjNzk0OGJmMTQzNjhmNjVjMGRkZmY2OGIzZDNlMzA2MSBweTNrCis2MTQ0OCBjYjM2MGZjODg5MTIyNzczZTNiYjIzZTQ3Njg4MzBlMjI2ZmRmMGY3IHB5M2sKKzYxNDQ5IDcxMDQ3OGExOTc3YWNmY2M0NWMzOWU4NjYzM2RmYmI3MjA3ZTYxYTkgbGVnYWN5LXRydW5rCis2MTQ1MCA4MDE4ZjUwNjU2NjFiYWEzMmEwNGNkMmI4NjI3YzM5ZDU4MWYwN2M2IGxlZ2FjeS10cnVuaworNjE0NTMgN2U4Y2ViMzk0NDdlY2JiYTY2YzBlZWQ3NjE4OGMxOWYxMThkZjU5YSBsZWdhY3ktdHJ1bmsKKzYxNDU0IGI1Y2I3YTY3OGYzODkxZmM0OTY3ZWFhNzUzMmE4ODcwOThjYzNhMzcgbGVnYWN5LXRydW5rCis2MTQ1NSBkZTZiMjgzNGI4YWY5OTBkMTFhMGQ3MzNjNTc3MjQ4OTg1NzY1ZjY2IHB5M2sKKzYxNDU3IDQzMTgyNWVhYzRhZTM3MzYzZTRlOWZkMDRhNjcwZDI4OTUzZmI1YjQgcHkzaworNjE0NTggZDMzY2FkYjU5NWY2NWRkYWY4YjAzYWY5ZTBlNmI3YzQ5MzQzZjZhOCBsZWdhY3ktdHJ1bmsKKzYxNDU5IDZhN2ZhODQyMTkwMmE5NTRkZWM3NzlmZTlhN2Y0YTQ2MThiMWE5NDIgcHkzaworNjE0NjAgMmMyNjBiZTEyNDJkOWFmZDI3MzE4NDdkNDcyZTM3ZjVlYjQ4ODY2NiBweTNrCis2MTQ2MSAzNGY0ZDQ3ZWM0M2E0ZjM2YzFiN2QwNzhjNDE4NmVkYWI0ODA0M2JmIHB5M2sKKzYxNDYyIDlkOWEzOGI4ZWIxYjExYTAyODI1ZWIwNDU5MGM5ZjI1ZTFhOGQ5ZjkgcHkzaworNjE0NjMgYTIwMGMzODdlOGIyNjUxMzVkZTE2YjZkOWU5N2Y2OGNlNDViOGEzMCBweTNrCis2MTQ2NCAxNmI0NDc2NDk0NGViOGEzZWE4MmRjNjNkOTA4ZTM2OTlhOTY2ZjRhIHB5M2sKKzYxNDY1IDZjMzkzZGNkNDVjNDhmMDcwNzMyYjFhOGQ4ZThiZmY4YmFhNDllYTkgbGVnYWN5LXRydW5rCis2MTQ2NyAzMjI2OTNiZjEwY2FjNmNkM2MwODdlMDAxZTZhOTRjMTAyMmU0MTFkIHB5M2sKKzYxNDY4IDk3M2EyM2NmNmYwYjdhMDk1OWVkNmFiNjJjZTc5YjBkZTI3YjEwZTggbGVnYWN5LXRydW5rCis2MTQ3MSA3ZjEzZDY5MDRlMTRhNDk0YWVlYzg4OTlkYWJkNzhjMjRlYzlkNGNkIGxlZ2FjeS10cnVuaworNjE0NzIgOGEzZmE4NmMzMGE2ZTJjNzJkNWM3YmJmYzIzOGE5NWViZjNmNjIyZCBsZWdhY3ktdHJ1bmsKKzYxNDczIDM3NDVmZGI5OTMyZjA3YzQ4NGU5ZjMxNTU3YmIyOGI2YWZjNTI5YjEgbGVnYWN5LXRydW5rCis2MTQ3NCA4ZGVmYTFkNWYwNjZkOTMwMThkOGI3YzdkOWY1N2RlMGQ0YzM3NmU1IGxlZ2FjeS10cnVuaworNjE0NzUgZmYwYWI3YjI4ZjQ5MTdjZDg2Mzc0MDc0ZDJlZjQ5YTk4MTViMTJlYyBsZWdhY3ktdHJ1bmsKKzYxNDc2IGUzMWQzMTc4MWE3NTNlMGRjYTQxZDI0NjY5NzI5ZTM4ZWY5MTNjYzQgcHkzaworNjE0NzggNzlmZGM4OGZmOWVjZGRlNWY5NzI0YWIwZTlhOGM2MjQ3ZmE3YjNhYSBsZWdhY3ktdHJ1bmsKKzYxNDgwIDRkYWJkOTA3MTg3ZWE3MzkxYTU0YjUzMWRhNzJmNDM0NmRkMmUxOTUgbGVnYWN5LXRydW5rCis2MTQ4MSA5NjZmZjE2OGI1NjY5NmMxMDVjMzA0NGU2NjJkMTdhYWYzNzg5MGNjIHJlbGVhc2UyNS1tYWludAorNjE0ODIgN2M0ODU0ZmZjZGNkODhjYzU3MmJlZGQ4MTk0ZmY1ZDBmYzYwNzAwZSBweTNrCis2MTQ4MyBjMGYxNjVlMWRiYzA1ZGNlNTMzNzgzMGZhNDMzZTlkYTBiNDU4M2YyIGxlZ2FjeS10cnVuaworNjE0ODQgYTdiYjAwNGU3ZjA2YTkzY2Q4ODU3M2MyYzc4YmY0N2Y2MDc2NmM5OSBsZWdhY3ktdHJ1bmsKKzYxNDg1IDNkZWI3MGU0MTgyYTA3YTJhNzkyOTgwNWIyMTYxMTZhZmNjM2ZlOWMgcmVsZWFzZTI1LW1haW50Cis2MTQ4NiAyN2U3ZGMyZTYyOTA1ZTkyMjhmOWUwYWIxYjY5ZTRhYjI1MmY3YjhiIGxlZ2FjeS10cnVuaworNjE0ODcgYWEzM2ZiOTBlYWE1MmE5YjliYTc5ZWMwYWUyNzZlMTkwYTJmOWU0NyBweTNrCis2MTQ4OCAwNDQ4N2FkM2QxYmVmNDE1MzUwZmQzY2NhOGNiNGRmNmQ3NDk1NjlmIGxlZ2FjeS10cnVuaworNjE0ODkgM2JiMGYxYTE5MzlkOTM4NzhiNGQ2NDliZWFlOGU3MWVkNTkxOWQxZCBsZWdhY3ktdHJ1bmsKKzYxNDkwIGIzNTk0ODBjYTg4NjQ2MGVjZmVmODUxNjA4OTE5YWY1YTBhMzMyYjAgcHkzaworNjE0OTEgNWMwYjVjYWJlZWM5NjZkN2ZlYzgzNjQyOTllMWFiODI3Mjk2ZDEzMSBsZWdhY3ktdHJ1bmsKKzYxNDkyIGVkY2IzNTQyMTc2YTUzZDE0ODJlZmM1ZDJkODQ5YjU1OWVkOTNiMTcgbGVnYWN5LXRydW5rCis2MTQ5MyAxMzcyOWM3MGM4ZDhjMjk0OTk2ZjA3OTg5OTFhNGFkZDlkZTY2YjAyIHB5M2sKKzYxNDk0IDA0MDUwMzczZDc5OWRjMGQ1MzkzMGM2OTE1ODVmYzI4MmUwNTc0OGMgcHkzaworNjE0OTUgMjU0NjMxM2E4YjI3YWQ0ZmFjOGFjOTJmMmYyYjM4YzljODAxYmEwNSBsZWdhY3ktdHJ1bmsKKzYxNDk2IGM1MjQxMDY5ZmZmZGFhOWU3ZjEzNWZjZmE0YmMxYWY2ODAyMjZkZDAgbGVnYWN5LXRydW5rCis2MTQ5OCA1MjY4MmJkNzM4YTc1Y2Y0Y2I3MTJlNmIxOGI0M2NmMzIyOWJhY2FmIGxlZ2FjeS10cnVuaworNjE1MDMgZTIyN2VkMmNhOWQxNWFiYmI2MTMzMTQxYjM5MWEwMjU0YmEzOWYyYSBsZWdhY3ktdHJ1bmsKKzYxNTA0IGQ0YmJmOWI0NzEwZjQ3ZDhmN2M2YzBmZDA2OTNiMDMyNGI5NDJmNDAgbGVnYWN5LXRydW5rCis2MTUwNyA2ZmM2YTgwNjc4NGY5NWYwNjBmZWVlZjQ0YmY1MzViNmIwNDk2MjZjIGxlZ2FjeS10cnVuaworNjE1MDggODY3MzY0MDFkMzk0NDQ3YWNhZmU5YzQ1NjY0NGQ0MDJjNjM3ZThlZSBweTNrCis2MTUwOSA5NzM2MWQ5MTdkMjJkNDAxYTM2Y2U4NmRmZjZhZDA5YmYyZWRhMjM0IGxlZ2FjeS10cnVuaworNjE1MTAgNDYzNDI0MzE3OTU1MGFmNTU4MmRhNDBjMzdhM2Q4M2VkZmE3MjAxNSBsZWdhY3ktdHJ1bmsKKzYxNTEwIDExN2JiZDQ0YWRhZTY0NmFlYjY1NGNjZWRiYzljM2FlNjI2NjVjYzIgcmVsZWFzZTI1LW1haW50Cis2MTUxNSA4ZjAwYTA5NDhmMDBlMmU1N2U3OTIwNjVhYjE3MzZhZGI1YWIzNTQxIGxlZ2FjeS10cnVuaworNjE1MTYgNmMxN2RhYzcwNTcxN2NmY2Q0MjQwYTM4NzEzYTdmOGY0N2VmNTZlZSBsZWdhY3ktdHJ1bmsKKzYxNTE3IDk2MzhkMmVhMmY1N2JhYTM2NDc1YTg1ODIzZDdkNzMwMDYzZjVhZTkgbGVnYWN5LXRydW5rCis2MTUxOCAzYjM5YjdiYjJjMDdjMjY4ZjlhNzE4ODQ4YjFlN2U2MzU4NThhMmJlIGxlZ2FjeS10cnVuaworNjE1MTkgZTE0ODI4NWJkNTExODM4OTBkMTU5NTZmYTMwYTkwMmMwOWMxOWZjMyBweTNrCis2MTUyMCA5NjYwMWY4ZjMzOTE0NDVkOTJiMmE1NzcyYjI2MDE2NTU5MTk1MGFmIGxlZ2FjeS10cnVuaworNjE1MjEgMzBjNGUxY2E4NDIxMjM2Njk4OWRmODMzYWUyMTc3MDI1ZjE3NDc3YSBweTNrCis2MTUyMiA5YjhjNGI1MTA3ZjBmNTVjYjczYzIwNzVmNmEzYzEyZmExMmNmMjJlIHB5M2sKKzYxNTIzIDIxMTM5ZWE1OWI2YmEyNTY1ZmI2Yjk0NzY1ODgwM2NiODI1ZDFlMDUgbGVnYWN5LXRydW5rCis2MTUyNCA3OGNhOGMyNTYxZGI4ZTc5NjY4ZDE1NzVkZjhmMWU3ZjliMDgzMTVkIGxlZ2FjeS10cnVuaworNjE1MjUgNmYwZWRhM2U5MmIzNjFiMjE4NzdlNjY0MDViNTVmNjhiMGQ3ZDY2NiBsZWdhY3ktdHJ1bmsKKzYxNTI2IDU4MWMzZTViMzQ5YjEyMGQyOTY1MGFkZDY2ZDE0OGRkMGQ4ZWFhOTkgbGVnYWN5LXRydW5rCis2MTUyNyA5MjMzODBhY2QxY2RkODA1NWM5OGJjNjc3MzVkMGQ0Yjk4Njg4ZWU0IGxlZ2FjeS10cnVuaworNjE1MjggYzQyNDA5OWI0Y2U0YjRkZTRiYWFhODNmNjAwZjEyYzA0ZGNmYWQ4YyBsZWdhY3ktdHJ1bmsKKzYxNTI5IDUwNzcxYTNmYWQyY2FhYTg4Zjk0MGVhMzllZmIwMDgyNGM2MGI4YTIgbGVnYWN5LXRydW5rCis2MTUzMCBmMzAyYmVmOGEwMDRhYWVmMTI3MTMzYjE0MjRjNWQ1NTgyMDVmZDMxIHB5M2sKKzYxNTMxIDFjZDkzMGI4MzVhNjM5MjhkMTcxODFiZmU3MzE4ZjZiNmJjMTQ4MTQgcHkzaworNjE1MzIgZWE5MTkxNGJjYjk3NzRmNTg1NDliZGE5MDM1YjVmOTc0MmNmOGI2ZSBsZWdhY3ktdHJ1bmsKKzYxNTMzIGE2MjhlZjgyZWI3ZTBjOWUzOTVjNWM4YjA0NjlmYzdlZTc3ZDkwODEgcHkzaworNjE1MzUgZTBlOGJlZjBkNWVjY2IyNzI0ZTE0NzM5OTY3ZjNlZWUwN2I4ZWI2YSBweTNrCis2MTUzOCBjYzc1OGU4ZGRjOWQ3OTQwNTJhYTBhZDA4NjU3OWEyMWM0Nzc5YWJjIGxlZ2FjeS10cnVuaworNjE1MzkgOTRhNjA4MmE3NzBmYTMwZmNmODVkMGJkMjFiZDcyNDk5NWYxMzg2YSBsZWdhY3ktdHJ1bmsKKzYxNTQwIDNhNzJjYmNjMWJiODA2YzJiNjljNmM1YWYyNTc1ZmQ0MTY4OWMyYjcgbGVnYWN5LXRydW5rCis2MTU0MiBlYjZkMDA3NDUzYmMyYzI3OWQwOTYxNjEzZTIwNzhkZmVhMzUwMjBjIHJlbGVhc2UyNS1tYWludAorNjE1NDQgZGM0ZDY4YWU5ZDNkYmYwNDE1OTc2ODdkYmZkMTZiMDQ0MzNkNTk3MiByZWxlYXNlMjUtbWFpbnQKKzYxNTUzIDBkNzY1OWMyYjk5ODUyNzRiNjYzMWM2YTFiMDcyNjViZjZmNTY3MzAgcHkzaworNjE1NTYgNTE1NjMzNjE1NzM1YWYwNmFiODM2ZjlkMWFkNjc4NDViMTQ3MWI0YiBsZWdhY3ktdHJ1bmsKKzYxNTU3IGJjZTY5ZGI3MmUwMDQzYzU4MTJiNzkwYTc1NDM4YTVjNjZlODU2YzkgcHkzaworNjE1NTggODNjNTVhY2ZiOTU5ODlhZTg5MWI3ZmMwNzdjMDM5NDA5NjhkZTM1MyBweTNrCis2MTU1OSAxYmI2N2U1MDNkZmZjYTQzNjRkZjY0YjUzYmZjZTY1YTJiZmI3Y2ZjIGxlZ2FjeS10cnVuaworNjE1NjAgMDA1ZGI5MzRlZTI1ZWY5OTBiZGFiNWVhNTZmZGVkNWI2Y2VmZWRmYyBsZWdhY3ktdHJ1bmsKKzYxNTYxIDBlNzk3OTNmZmU4NzA1ZTFkNWU4MTE1MGRmZjFlNGViODViODY2MTkgcHkzaworNjE1NjIgMTZjNTc2ZGVlOWQzYmFjMTg0YjQxNDkzNmZkY2RkYWVhMTI2ZDE1MCBweTNrCis2MTU2MyAyZjY0MGYwZjA2OTc2YjJlYWQ5MDM5MzNmNjYwYTIwMzEwYjIxMTgwIGxlZ2FjeS10cnVuaworNjE1NjQgZWUwZGZjY2Y4Y2VlNmVjZTg4N2JkNTM5MjY3ODc4NzI4YjY1OWFjMiBsZWdhY3ktdHJ1bmsKKzYxNTY1IGIwZDAxOTY5YmJjODdkZTQ1ZGMxN2M3NzZmNWIxOGFkNjYxMjVmZjggbGVnYWN5LXRydW5rCis2MTU2NiBmM2JlMTIyMjBmZDdlMDFiYmIyYTgwNjVjYmYxYWQ2ZjRjNmU4MDYwIHB5M2sKKzYxNTY3IGZhNzBlNmFlODMxYWUxZGVhZDFiOWFkYmFmZTBmZTVmNTYyYTFlNjEgcHkzaworNjE1NjggMDVhYzNjMTliN2E4MDM2NDMyNTZhYWFjOTc2MjFhY2IwNWZhMzhkNSBweTNrCis2MTU3MCA4NjBlMjNhNjFlNTUxMGZiYzMzZTM4YWYzZDU2NTExMGRjODdiNzJhIGxlZ2FjeS10cnVuaworNjE1NzEgMjg5M2MwMTI5ZmU1YzM2MDJhNjUzOTM2OGYzYWNkYTRkNzNiMThhZSBsZWdhY3ktdHJ1bmsKKzYxNTcyIGM4YzU0N2M1MWY5YTZmMGFlNTUwM2YwOTVlMGI5MWQwYmRjNzdhNGMgcHkzaworNjE1NzMgNTFlMjQ1MTJlMzA1Mjg1NTZjMmJiNzFhNGM2ODAyNjEwODc5NzcyYiBweTNrCis2MTU3NSAyMzg1ZTE2YWNiNDI3OWQ1MWZjNzFhYzA5MWYxYmEyNjA5YWZjNmJjIGxlZ2FjeS10cnVuaworNjE1NzYgOTZiZDk3MjJlMzFkMzAwOTI1YTZhNjMxZWZjZGNlNGJhODc3NjM3MyBsZWdhY3ktdHJ1bmsKKzYxNTc3IDcyN2Y3NDNjZjYzMGIxZDE5ZTBlMjI2YTE4NzI2NTAyZGY3MzkzOGYgbGVnYWN5LXRydW5rCis2MTU3OCBmN2E2ZjMzOTQzMTA2NzQwMjIxNDg3ZmFjOGIwNmM4ZDkzNGFkMTMwIHB5M2sKKzYxNTc5IGYwOTZlZjljNDExNGY3NTdmZmUzYTcwMmY5MmU2ODVjZWI0MzllY2QgcHkzaworNjE1ODAgZDg3ZDdmYzJjMmJmMzNhZDUwMmVmZTIwOWY3YzNhYjkyODRlYzJhMCBsZWdhY3ktdHJ1bmsKKzYxNTgxIDE5ZDRiNjk3ZmJmOWFkNTNjMDA0NTYyYzM3YjdhZjhjNTk3Y2RlOWYgbGVnYWN5LXRydW5rCis2MTU4MiA3MzNjM2VlMTk4OTk2NjdkNWY2OGNkZDFjYjc5ZTkxZWIxODAyNzE3IGxlZ2FjeS10cnVuaworNjE1ODUgYzc3ZTMxMTllMjY3NWUwODYxMmI5NjhlZGVmNjc4MDg4ODY2NDRkZSBsZWdhY3ktdHJ1bmsKKzYxNTg2IDFkZmI5YWU3OGEzNzI3Y2Y4M2U0NTBkNmJmMjhiZmRkMTYxODg5Y2EgbGVnYWN5LXRydW5rCis2MTU4NyA0Y2E3MTE5ZDE3MDA1ZGY2MTUxMWE1YTA0NGUxNmQ4YThjNDY0Mzk5IGxlZ2FjeS10cnVuaworNjE1ODggYjg0ZTBlMjNjYWJkODkwNDc1YTU3ODE2MTBlODc2M2NiZjE0ZmE0MSBweTNrCis2MTU5MCA3Zjc3NzA3MTllODQ4Njk5YzkxNDE4NDYyYTJhODUzMDAxNjYwNjYwIGxlZ2FjeS10cnVuaworNjE1OTEgZDRlMWRiODc5N2Y2ZGM4MGNhZmMxM2VkOGVhZjVkM2ZhMmQyZTYzYiBsZWdhY3ktdHJ1bmsKKzYxNTkyIDgxOTExNjk1MDA5OTA4N2JlYWZhZWI4ZGMyMzhjODAzZTc3ODk1ZGUgcHkzaworNjE1OTMgZDVjZmY3ZjlhMTQyYmU3MjA2MjRjYWJlODY5MDA0MzE0YTI0NjFhMyBsZWdhY3ktdHJ1bmsKKzYxNTk1IDJhMDEwNzVjZDkwMjE0MjcyN2FlNjVhNWY1OGM5OGQ1MDg1ZTA5MzAgbGVnYWN5LXRydW5rCis2MTU5NiAzMDI2MjVmYTZhMmE2OWFkYzhkNzkyNDI5ZWQ4ZTg4NDY3ZjgwZDJlIGxlZ2FjeS10cnVuaworNjE1OTcgNDU5NzBiMDRjZTgzZTJkNTM0Mzc0MjhjNmViMDQyYWI2NDIzOTk5NCBsZWdhY3ktdHJ1bmsKKzYxNjAwIDk2M2Q2N2RmMzcyMzdlNWRjOGExMTQ2ZjViYmNlYjZjYmNjN2ZjNjcgcHkzaworNjE2MDIgYTk4NTVkYjQwZmZiMzNmNGFiMGI0YzkzODYzOGRkZGI1ZmJjZTJlNSBsZWdhY3ktdHJ1bmsKKzYxNjAzIDFkYTI0OTk2ODNiNDNjM2UwZDE3NmU5NjEwMmJhN2I3OGU3Nzc4NTMgcHkzaworNjE2MDQgM2IzMjNmZjkzMDRjNWYwNTc2MjJiZmZjY2FiYzllNGViNjliOGZlZiBweTNrCis2MTYwNSA0MjJiNDlkZmQxNWI1M2MzZTc1NTBhNWJjNWUzNWU0YmI1NGU0NWI2IGxlZ2FjeS10cnVuaworNjE2MDYgZTBjOWI5ZWYwNDY2MGY5ZmI4MGVjMDQ1NjhiMWM0M2QzZjIyZDVjNCBsZWdhY3ktdHJ1bmsKKzYxNjA3IDQyODQ3MThmYjYzMWZhZGQzMjIyNmY0NTlmY2U5NDk2NGYwOWY5ZDQgcHkzaworNjE2MTMgYWQxZDYwNGJjOGVkMzUzMDE0YmIyZTRkNDMyYjhkOWM1NGE3MDViMiBsZWdhY3ktdHJ1bmsKKzYxNjE0IGFkYmM5MzRiZjFmZDUxMDI3NTU3MzI4NDBiNzhjNzY1NzcwMDg1MzQgbGVnYWN5LXRydW5rCis2MTYxNSAyMTQ3N2IxYmE1ODE3YzVjOGUyYjhhOWRmNzM1ZDc5ODY2MmI0YmQzIGxlZ2FjeS10cnVuaworNjE2MTYgNWNjMDRhMjA0NzY2ZjJlN2U1NDMwYTIyNDY0MTBiOGJiNzhiYjRhYiBsZWdhY3ktdHJ1bmsKKzYxNjE4IDg1NWM0MjkwZGZkN2FhMzRkYjA5ZTNmZmRiYmRjNzgyZTFkNGYwMzUgbGVnYWN5LXRydW5rCis2MTYyMSA3NGFiOGJkOTZjNWRlYjNhMmUwZjA0YjJlNWVjNDNmZmVkYTdmMjY5IGxlZ2FjeS10cnVuaworNjE2MjIgYjBiNjA4ZTU3OWNkNWFlMzYwZDcwYTFjZWE1MjQzYTYwNzI2MDEwNCBsZWdhY3ktdHJ1bmsKKzYxNjIzIGViYzEzMGE0YTI3MzgyOGY2NmFkNmZiYzczNjcwNGJmMWI2NDE1N2EgbGVnYWN5LXRydW5rCis2MTYyNCA5M2Y5NzA3YjY2NGNlNGFjZDk0NjliMTgwYjZiNTBjNzYzODZjYjYyIHB5M2sKKzYxNjI1IDMzMGY1NzRjNThmN2MzZGJlZDVlZDRkMDM3Y2I2ZjUzYTZiMGEzOTQgbGVnYWN5LXRydW5rCis2MTYyNyA4ODE3YThlMTJhNTU5ZWNhODczMjBjZmYxMTIwMWZkYzA2ZTRmMGNlIGxlZ2FjeS10cnVuaworNjE2MzEgM2JmMTljMzFjOTU2ZjE0MTI0ZDNhY2Y1YmYyZGMxYWJkZmNiMmI2ZiBsZWdhY3ktdHJ1bmsKKzYxNjMyIGRjNWJlMGIzYzNiZTdkYTQyNjQ2ZDQ2MzJlNjk4MDBkN2Y4YTkxYTcgbGVnYWN5LXRydW5rCis2MTYzMyBlNjY1YTBiMTZkYTBlODdiMGMzYTAzNmIzYjU0OTI2YjgzNGMwZTlmIGxlZ2FjeS10cnVuaworNjE2MzQgMjQyNzU1NTJjOTczMTcxNDIxOWUxMzVlZjJlZjg1OTQ1MmRhNjQ3MiBsZWdhY3ktdHJ1bmsKKzYxNjM5IDQ0MGIwOGEzMmUwYjNkNTA0ZjUzMjVlY2JiZTBiZTUyMmIwYmRlMmMgbGVnYWN5LXRydW5rCis2MTY0MyAxNjU3ZjBhY2NhNzgyMDIxMDVkNzczNjAyMDc4NTNkZjVjYTA1ZjIwIHB5M2sKKzYxNjQ0IGFlM2FkMDY1NzdjN2Q3YTVkMGZkY2U2OWM4Mjc0ZmE2YzdkNTZiMTcgbGVnYWN5LXRydW5rCis2MTY0NiAyZGEwYmYyZTJmNWNjMWYzYWM0Njk4NzRhNmNkY2M5N2YzNzI2ZTAzIGxlZ2FjeS10cnVuaworNjE2NDcgNjVmMzYxMDRmY2FkNzJjYTg5MjA0ZTZlYzQzMjE2YmI4YjFjNTU0ZiBsZWdhY3ktdHJ1bmsKKzYxNjQ4IDM5ODlmYzYxZTc4OWM4OTQ1MzY4ZDM2MGFmNWVmODIxZmE4MDU2YjQgcHkzaworNjE2NDkgM2FhNWViMTgyOTEzMTUwMTkwN2YzMDA1ZGJiNmM4MWMxYWMxODFhMCBsZWdhY3ktdHJ1bmsKKzYxNjUwIDI5M2M2MTA2ZmJlMzQ5Nzk4MmM5NTRkYzYwZTI1M2QxNzIyMjBhNzQgbGVnYWN5LXRydW5rCis2MTY1MSA2NTA5ZWY4YmZlOWMzNjNkYzdmYjU0NzY2N2U5ZWY2NjQzZDYxOGFmIGxlZ2FjeS10cnVuaworNjE2NTIgY2JhZDFmNWNhYmIxNTExZGNhMTYwNDVlYjdhYjUwNjRlMzUzYmUzYiBsZWdhY3ktdHJ1bmsKKzYxNjUzIGU4NjI4MjE5OTQ2NTE5N2IxYTE2NDExNzFkYzRhOTNiMDBhMGY3ZDggcHkzaworNjE2NTUgZmM5M2JmNWZlY2UxZDY0MmJiOGJkZTU4YzUzOWRlNGYxYzhmYzY4ZSBweTNrCis2MTY1NiA4YjBiODkwMjVkOTgyOGIzYTgwYjgyMjFhMWI0ZGRiZDcxMzY1YzBkIGxlZ2FjeS10cnVuaworNjE2NTcgNWJkMmJkYjM5ZTljZGVmNWYzNDkwZGUyMmFkMDQ3YmVkNzlhOTljNiBsZWdhY3ktdHJ1bmsKKzYxNjU4IGQwMGE5Zjc1ZDIyM2Q5MzRlMGNlY2I2Y2FjMmYzZjlhM2VmZWIyYmYgbGVnYWN5LXRydW5rCis2MTY1OSAwZmRiMzYxNjM4NDFkOGI2OTZhOTkwMmIwZGI4YzA2ZTljMjhiZTA5IHB5M2sKKzYxNjYwIGUwMjAzYzY1OGI4NjUwMWQ5ZjUxMmFhMGE2ODljMjVhNWZkZjhmZGEgcHkzaworNjE2NjEgOWE0NzcwOWEyOGI3OWY0YmM2YzE1M2Q4ODI0ZGIyOWUwYzIzMjUzOCBweTNrCis2MTY2MiBmYzIxMDY3M2VlZjAxNTQ0NDI4NjJiODk0NTU3NDhjMDU3ODNmZWMwIHB5M2sKKzYxNjYzIDYwZGI5YTY3ODU1MWQxNzUwNzBiMWRmMTdmOGI1ZThmZjQ3ZTEwZDAgbGVnYWN5LXRydW5rCis2MTY2NSA2YTNlZjNjOTA5NWMwNThmN2FkYmZkMGYwYjRlYmM5MDEzYjM4NjZlIGxlZ2FjeS10cnVuaworNjE2NjYgMTMyY2YzYTc5MTI2MWY0YzJiNTAyYWI4Zjg1ZmQzOTk4MjY0OTY2NyBweTNrCis2MTY2NyAwNmU2NDFjYjNhMjAwNzNmYTkwNmJiMTM4MWNiYWI3NDM0M2RiNWUxIGxlZ2FjeS10cnVuaworNjE2NjggMzlhNGY0MzkzZWYxOTgyNDA0MzY5NTI0ZmM4M2Q0ZTY0ZTdkNTM1ZiBweTNrCis2MTY2OSA4ZTVlYzY5Yjc2YTc0YzUwZGMxMmI1MTIxNzYzNjIzMWZmZThmMDQyIHB5M2sKKzYxNjcwIDM2ZTI5NmU2NmQyMTZhYzk3Y2U4YThjNzM0NGE1ZjIzOGI4YTc2MTcgcHkzaworNjE2NzEgMTMzNDk4YjkxZjFjNDAzY2Y1NjYxZmQ4OTdmODVkOTVjZmYxMWZkZSBweTNrCis2MTY3MiBjOTU2NjNjNjg0Y2FmOWExZTQyMWY5NDVhYmE1OTU5NDQxMmMzMDkxIGxlZ2FjeS10cnVuaworNjE2NzQgZDllYzA2OGIwOGYzMDk0N2U4OTVlY2ZjYTM5ZmViZjIxMTMwNmU2ZiBsZWdhY3ktdHJ1bmsKKzYxNjc1IDdkMmUxYWM4MzRiODVmNzhjOTk1N2Q1NjMwZGIwOTZiNzkzZmZkMzQgcmVsZWFzZTI1LW1haW50Cis2MTY3NiBkMTRhOWU1ZjgwYWU4ZmMyMzQ5YTUzNDFmZWZmNDAyY2EwNzc0ZWUzIGxlZ2FjeS10cnVuaworNjE2NzcgMWM3YzA4ZDI5ZmVlZTVkNzFhMTU4NTFmZGQ5ZWI5MTFlMmFmZWZhMyBsZWdhY3ktdHJ1bmsKKzYxNjc4IGQ1MTFlMzIxNzQzYTkxMWE1YjkxMjQ5Yjk2NDUzMWZiNTBmYmU4NWYgbGVnYWN5LXRydW5rCis2MTY4MCAyOTEzMTg5MjYxMWM1NWNkNDRlMTVlODc2ODZlMjQ2NzcyYTEyNzAwIHB5M2sKKzYxNjgxIDdjYTU3ZTIyYTUyMDc4OTQwZDg4ZjI3MTVkYTgzZjFjOWFiZTU0YjAgbGVnYWN5LXRydW5rCis2MTY4MiA5MWFjODA0OWU3MDkzNDIyZWI4MWFiNzE1MTg5OGIxMGQ2YzZlYmI5IHB5M2sKKzYxNjgzIGU4MzYwYjVkNWExMDc0ODQ0NGExNjI3NTY5OTJhYWRjZmEzOTRhOGMgbGVnYWN5LXRydW5rCis2MTY4NCA2OTYyMjViNWQ1NTU1OWFiMWQ3NjkyNzY1ODA3MTE2Y2I2YjgwNGI1IGxlZ2FjeS10cnVuaworNjE2ODUgZjNkODM4ZGFiNDBlZGJkNTk2OWExMGVlMGZmYTg2MGY0ZTUzYjRiNSBweTNrCis2MTY4NiAyODczM2FkYTRkMDMxZGUxODk4Nzc1ZWZlODc3YjBkM2ZlY2UwNmJjIHB5M2sKKzYxNjg3IDdjNjY2N2JiOGY4NTM0NzRlNWU3OTAxOTA1NmQ3Nzg1OWVjY2RlNGMgbGVnYWN5LXRydW5rCis2MTY4OCBhYTlkYTRhM2M5N2NlMDU2ZDdiNzNjODQ3ZjE3NmRjYzc2OWJiOGFkIGxlZ2FjeS10cnVuaworNjE2OTYgYzQ1YTQ1NjY5MDE3YjkyNTBlZmM2ZjM1YWRiNTEzNjQ1MTkwYzg4MiBsZWdhY3ktdHJ1bmsKKzYxNzAwIDhmOGIwM2MyYmJmZjAxNzJjOTY1OWNiY2FmODZjZDU0YjZkYTI4OTYgbGVnYWN5LXRydW5rCis2MTcwNCA5NDRkODdhOWJiZDBhY2RkNGQxYWY4MjNkMjdjNmY2NGNlN2FiZmIxIGxlZ2FjeS10cnVuaworNjE3MDUgOGVmMDVhY2VlZjJiNGE5ZTc0NzA2ZWExNmU4NDI1M2U0MDAyODdiNiBsZWdhY3ktdHJ1bmsKKzYxNzA3IDcwNGE4NjRlY2IwMTRjNTA3NjliNWE2NzczODdiYTQ3ZjlkNmRjYjUgbGVnYWN5LXRydW5rCis2MTcwOCBhZGI1Y2FiMzAxYTZlZTU1ZmFlODVmYWM5NDFhOGEwOWJhZjA0ZGM1IGxlZ2FjeS10cnVuaworNjE3MDkgNTQ0YTQ2ZGYwMjIyZGM5MjY5ODUzYjkzMGUwNTQ1YzE4OTVjMmNhOCBsZWdhY3ktdHJ1bmsKKzYxNzEwIGYwZTRkOWI0NWU3ZjM2M2EyYWEzMjljZGI4ZDFiYmFjODJhYjIzZWMgcHkzaworNjE3MTEgN2YwMzU1OTJkNmUxYmY1MGI0NWZkYzI3ZTEyZjg4ZjRhMWEwMzdkOSBsZWdhY3ktdHJ1bmsKKzYxNzEyIDg1ZmJkMWQyNjVhMjk1MTM5YjQwM2MxZTY5ZjMzOTVlNjI4NDVjOTYgbGVnYWN5LXRydW5rCis2MTcxMyA0NDE1MjdiZmM3OWNjNzNkMDVkMWM0Yjk1NzdmNDAzY2JlZTU0Y2JhIHJlbGVhc2UyNS1tYWludAorNjE3MTQgOTkzNTViYWE3NDhkY2Q0ZTYxNjNiNjFhZTRkMTU3YjBkNjkyYWYwNSBsZWdhY3ktdHJ1bmsKKzYxNzE1IDIyNzU2MTJjMTZhOWZjMTczOGQxYzBlNDRiODE3OGM4NDIzOTAyYjMgbGVnYWN5LXRydW5rCis2MTcxNiBiZjA3YmFkMWQ3MmY2M2ZjODkwNTNlMDg4ZjA3MzhjN2FjZDQzMjBiIGxlZ2FjeS10cnVuaworNjE3MTcgNzJkYzE2ZTgwMTc5MGUyM2YxNGIwMjA1NDZkMmZkNjI3MWQzZDBjZSBweTNrCis2MTcxOCBkNjc5M2VjZTMyNTQ0ZGU2ODMyMTYyM2FhMmU2YTkzMWExMzhhYzQzIGxlZ2FjeS10cnVuaworNjE3MTkgYTAyNTM3MTg0OTllM2I2YWE1YWQ5NDQ2YWY4ZmViNWE3ZjU0Y2JjMCBsZWdhY3ktdHJ1bmsKKzYxNzIwIDFmOGJhNWU4YTJmYTkzYmRiZTcwNDc4ZjdhMDZlZTExZTgyMDI1NGIgbGVnYWN5LXRydW5rCis2MTcyMSAyZTNmODZlNzNmYTI3NjFlNGY1Njc3YTczNGI2OWY3MWY3OTc4YjJjIGxlZ2FjeS10cnVuaworNjE3MjIgNzI4ZGMxMzMyN2IyZmI5NGNjYjkxYzNlNjgxYmIyYTgzMmExNzgwNyBsZWdhY3ktdHJ1bmsKKzYxNzI0IGU0N2MzYzdiYmRkYzdiN2JiZjc2NzQ0ZjY5MDBmZGFkOWU0YTQ2YmQgbGVnYWN5LXRydW5rCis2MTcyNSBhNzM3NmQxOTJhNmQ3OGFiMjA0NjBlZWUxNGEzOThlYjUzOGYyNzU4IGxlZ2FjeS10cnVuaworNjE3MjYgN2FhNTJlYjkwNzRmOWQyYTk5MzdkM2RkNzIwNzRmOTI3YWMzZDdhNCBweTNrCis2MTcyNyA4YzFmZjhlNTQ3Mzk3MTFhNWVlYWFmODIyMmM3NmU3ZGRmZDVhY2RmIHB5M2sKKzYxNzI4IDM3NmI1Y2I4YTAxNDM1OTlmYmMzNjJlOGUzZGM1ZDQ0NGE2ZjkwMTQgcHkzaworNjE3MjkgN2Y2YmNhNzhjMzY0ODU3ODk0NWIwNjgxMzM4NzQ2NzJhMzZjNzNmZiBweTNrCis2MTczMSBjZGViYTIwY2NkNmEwMWQ0ZWYzZDZiZWE5YzlhNDY5YTcwOTkyN2FlIGxlZ2FjeS10cnVuaworNjE3MzIgNzI2NGMwNTFhMzljYmI0NDBmMjU4MGQ0ZDg0MDM1YWNmZTI1Yjg0ZSBsZWdhY3ktdHJ1bmsKKzYxNzMzIDYxZjVjNjYzYjQ5ZDhiYWRlNDdmYjQwNjA4ZmMyMDczZDUyMDQyZTMgbGVnYWN5LXRydW5rCis2MTczNCBhOTljYTFlNTc1ZWQ5NzU4MWI0NzVkNTFiNGQ4MmQ0OWRkYzNkMDZmIGxlZ2FjeS10cnVuaworNjE3MzUgMjQwODMzMDVkMWM3MDQ2NjE1YTljNWI1ZmJhYjAwZjkxODc5ZmI5ZCBsZWdhY3ktdHJ1bmsKKzYxNzM3IDExZmJjOGFmZTMwNWZlMzM5ZWJhYjNjYzI0YTUyMzAyYmVmOTU1Y2MgbGVnYWN5LXRydW5rCis2MTczOSAwNGMyMTQ4NTY0ZTQ1OWNmZDliNDg0M2MzZjM5NTE0ZWY0ZGYxZDcwIGxlZ2FjeS10cnVuaworNjE3NDEgZWVlYjZiOTUyZDJmODllYWU0NmJkM2YyNjdjMWFiZDgyM2MyZTQ5ZCBsZWdhY3ktdHJ1bmsKKzYxNzQzIGY5Nzc4NWM3ZGU5YjYyMDFlMGNiMmY5OGY0NDEwMjMzZDVlZjYwY2UgbGVnYWN5LXRydW5rCis2MTc0NCAyMjY3Y2ExNGQ1NGJhYTY5NDBmYjNjOTYxMTg5NTAyY2ExNDM0ZGNiIGxlZ2FjeS10cnVuaworNjE3NDcgYjQ5NzU0ZWE5NGRiOTI2ZDE1N2UwMGE0ZWMyY2YwYzQyM2U4NDNkMSBweTNrCis2MTc0OCBiMGE0M2JkNWMyODE4MmJhZmMyNmEwNzU1M2UyMzJjZWE1NDIyMDA1IHRydW5rLWJ5dGVhcnJheQorNjE3NDkgNzA4MzRjMGU0OTFiZDhiZjE0ZDhiNGJjY2ExODQxOGQ4MWQzMWJhNSB0cnVuay1ieXRlYXJyYXkKKzYxNzUwIDQzNTY0M2I3ODBjNzE5YTcwMjFlYzhkNGY5OWM3YzYxMTU3NGIxMmYgdHJ1bmstYnl0ZWFycmF5Cis2MTc1MiBjNjMyZjllMWVhNWRiZDRhN2Y5MTg2MTA5NzU1MzY3MDZjOGY1NDY5IHRydW5rLWJ5dGVhcnJheQorNjE3NTMgZDRiYTViZDExNTgwYTg3NzkwYjYxMmZiOWM2MzRlYzFiOTVhNjgzNSBsZWdhY3ktdHJ1bmsKKzYxNzU0IGRmYTBhMDExYTI0MzVhNjM3MTQ0Yzk1ZmVkOTY4YjAyZmE4ZGNmNGIgdHJ1bmstYnl0ZWFycmF5Cis2MTc1NiA2NjY3MDA4ODk0ZTBkYjI2ZTFjZTkyODFlNjNhZTI0ZjJhM2Q0ZWFkIHRydW5rLWJ5dGVhcnJheQorNjE3NjAgMjQ4ZjkyN2JhNTdlYjI2M2MwZGQ2YzhjNDk5MWQzNDg3MzhjMjgyMiB0cnVuay1ieXRlYXJyYXkKKzYxNzYxIDc1MWRlNjE2ZTA4MDE3ZmMwYjE4ZDFhNmNkNTcyNjM1ZGNmMzJhZDAgbGVnYWN5LXRydW5rCis2MTc2MyAwMTIyYjQ2Y2U0ZTBiZGQ0ZjVhODQ0ZjMzYjQ1MjBmNjY0MWQ4NDBhIHRydW5rLWJ5dGVhcnJheQorNjE3NjUgZjJhYjUwZDBmYTkwOGViZTc5YTEyZWRhOGRkYjFlZjI4OTJmMTRlMyBsZWdhY3ktdHJ1bmsKKzYxNzY2IDJlNWFiMzVjY2FmMWFkZGIyM2NhNzU5MDNhOTgwNDAzNDlkNmQ2YTkgbGVnYWN5LXRydW5rCis2MTc2NyBkNmYwZTNlNTU2YTQ1MDllMzdhZGIwN2VlMmEyOWFhZDExODVlM2Y0IGxlZ2FjeS10cnVuaworNjE3NjggZTY3ZjQyMWEyMGIwYjFiZGJlYTVkM2I2MWY2YzU1M2NmYmMyYjgxNiB0cnVuay1ieXRlYXJyYXkKKzYxNzY5IDMxY2YzOGJkYWFjMGNiMDNlNzRjN2UxYjFkNWVmZDJhNjYyMzNmNDQgbGVnYWN5LXRydW5rCis2MTc3MCAxMGIwZDgxYTIxNDVkYmRlMGM0YjI0Yzg4YzMzOGRjMzU1MmU1MWJiIHB5M2sKKzYxNzcxIDk1N2NiYTc1NTMxNWI0NjUxNTI0MzJjMzQ3YzI3Y2I5NWZmMDFlN2IgcHkzaworNjE3NzIgZmIxZDM1Y2ZiOGQyZGRhODJmYjc0OTJkYTc0ODlhZTcyMGM1NjRhYyB0cnVuay1ieXRlYXJyYXkKKzYxNzczIGZhNDE4Y2RmM2JmZTlmMDQwZWVmOWJiMmJjZDNhZGFkNmNlOGVjYTkgbGVnYWN5LXRydW5rCis2MTc3NCAyOTZmOWJjNDJiOTYzZWZkMTM3OGI1NzJiZWNhOGQ5YzhlMGRhMTgyIHB5M2sKKzYxNzc1IDNmMGUzZmIyNzJhNjIxZTZkMzJlMTUyNzRlODIwMWU3NGY1NTFmNDMgdHJ1bmstYnl0ZWFycmF5Cis2MTc3NiBmNGM1MGE1MWQyNGYwYmYzMDAxMjRhZmY4ZTExZGIzZDI2M2RjZDBhIGxlZ2FjeS10cnVuaworNjE3NzcgNzIyYmVmNjgzNWI5NDRmZmEzMDE3ZjE4MDU3MGMyZmI1MjRmMzI5YSBsZWdhY3ktdHJ1bmsKKzYxNzc4IGFmOGZiNTNhNTRmZDNkNDRhMDg2Mjc4NGQ1YmFiZGRhZDMxMmZlZjkgbGVnYWN5LXRydW5rCis2MTc3OSBhOGY1NGI2YThjMTg1NWQ0NWYyNDVhMGU0ZTA4MjdjYTZjZmRmNGIxIGxlZ2FjeS10cnVuaworNjE3ODAgYzY0YzdiNzI3YzYyNThlNDM0MDk5ZWRkYjkzZGMwMGY4MTQxMGMwYSBsZWdhY3ktdHJ1bmsKKzYxNzgxIDdkYTViNjg5NzFhNWE5ZjBmZDc4ZGZkNGEzNzgwNjQxNzc4ZTRhNzQgbGVnYWN5LXRydW5rCis2MTc4MiA5NjM0YzE3ZThmZTU2MjA1MDljMWYxYzQ4MjU0YzhjZGUwNzFkMDE2IGxlZ2FjeS10cnVuaworNjE3ODMgZjFlY2IzZTk3OGRiNDlkNTdhNWE4MzJhZDY1M2ZkNmQ0NGQ1ODU4ZCBsZWdhY3ktdHJ1bmsKKzYxNzg4IDc1NjNmNGQyZjM2ZWE0NjhkYmNlMzI3MjhjZTIwNjI4M2Q1MTUwZmMgbGVnYWN5LXRydW5rCis2MTc5MyA4NzEwYmE3ZmJhMmJlYTdkNGNmYmNkYWM0ZGUxODdiN2YwNDA1NjRkIGxlZ2FjeS10cnVuaworNjE3OTYgZjFlNTE3ODU5NDdmNWI1ZjE1ZDMyZGY0M2U0MGQ2Mjc2ZWZkNDY3OSBsZWdhY3ktdHJ1bmsKKzYxODA1IDcyOTZjY2JiODU4YzJiODllZjUwZjk4NTczMjYwOTY4ZWEwZTRmOTEgdHJ1bmstYnl0ZWFycmF5Cis2MTgwNyAxZDVhMTE2MTllY2E4OGNlNzc5NDU5MjQ3M2Q4ZTNlMTgwOWU4N2QxIGxlZ2FjeS10cnVuaworNjE4MDkgZGY1YzhiOTdjYjJhMWZhMWZmNjQ1ZGZlYzY1MzNhMDFiOTgzMzE4MiB0cnVuay1ieXRlYXJyYXkKKzYxODEwIGMxZmM2ZTBhOTRiOWI3YzA0OGNmNDQwM2U0OTRlY2MzODk4ZmM0MTggbGVnYWN5LXRydW5rCis2MTgxMSBhZjFiMGY5OGRhZGY5ZDFiZGQwNjdmY2U0NWUyYTVmOThiYjU1MzE4IHB5M2sKKzYxODEyIDM5ZGM5ODVjNmZjNjA2NDQwOTZmN2U3OGY2NTRlZTNiYzU4NjBkMjAgdHJ1bmstYnl0ZWFycmF5Cis2MTgxMyA0NjdjMTZhNTAzOTJjYzBiNWY0ZTM3NDM2MzM3YWQ2YTA0ODlmZjAyIGxlZ2FjeS10cnVuaworNjE4MTggMGE0ODU1OTNhZTFjZTVkMzhlYjcwMTliNWMxODg0MWVmNmIwODA0MyBweTNrCis2MTgxOSBkMGI5MWE5MGJhY2M5NTNkNzQ0NzY2YTcwMTY3ZjEyMWI1ZmY4ZGE4IHRydW5rLWJ5dGVhcnJheQorNjE4MjAgNWU5MTY4NWQ5YzA2ODUyZGViOTc3ZmMwYWUxYWUzNDZhNzZjMjFkYyBsZWdhY3ktdHJ1bmsKKzYxODIxIGY1YjFmYTEyMTRmMGExNTRmODAxYmUyNTUxNWMwMTljMWI0OTk1ZTYgbGVnYWN5LXRydW5rCis2MTgyMiA3Y2FhYWIwNGE0ZDhkYTMyODBmMDk1ZmQwMjZjOWI0MWQ2YTI3MDJkIGxlZ2FjeS10cnVuaworNjE4MjMgNWNhOTI4NDAyZTU0MzY1Y2RkZTNiMGIzZjQxOWQwYTUxYTI3OGQyOCBsZWdhY3ktdHJ1bmsKKzYxODI1IGEzOWNmMzM1MzEyZTc3Y2I1OTJlNjNjZjUyZDQ3N2Y5NTM3NjVkYzggbGVnYWN5LXRydW5rCis2MTgyNiBiZmVlODczZWRmM2ZmNmY3YjA2ZGFhNjU4MmMwMzQxOGM5OWMyNGNlIHB5M2sKKzYxODI3IDY4MDUxZjhjNjYxOGVkYjhmZTlmMDE5ZjY5NDBlYzU4NTYzOWUwMjcgcHkzaworNjE4MjkgNGE2YjA5M2IzMTliYmZjODgwNzIxMDI2YTliZGZiOGVlYzY3NzczMyBweTNrCis2MTgzMSAzNzA4ZjA5MDZlZjVlNmYyM2MxYWQ2YTBiNmFmZmM1MmM1OTUyZjY5IHB5M2sKKzYxODMyIDVmMDRlMDJiYjQwYzVkNTZkYzk0Y2JhZTEwMzE0ZWNjOWZmYjI1OTkgcHkzaworNjE4MzMgMmNjZTkxN2Q3OTk2M2Q4ZDZiYWIwYTNlOGYxZDVmMjU1ZmYwOGJhNiBweTNrCis2MTgzNCA4YzI2MDRmZTU4ODY4YTU1ZjhjYjEyMGQzOTNhZDE2MmMzNDQxYzI0IGxlZ2FjeS10cnVuaworNjE4MzUgZGY5MDc3NGY5MmIwNjlkOTBkNzlkZTQ3MDJmNDQxZjlkOWM1ZGZiMSBweTNrCis2MTgzNiAzMGVmNTExMjgxMzI2ODUzNzNlMDFiNDk4MGJkZGZmZjllZTc5N2IxIHB5M2sKKzYxODM3IDg1OWZmNWM3YzYwYThjMGM2ZDUxNTUyZWViZmVjNzI1YWMxYTY5OTAgcHkzaworNjE4NDEgMjU0MzFmZjZjZTY5ZGY2NWNjODlhNjg2MDViMmM3YzEwNTYxNTdmZCBsZWdhY3ktdHJ1bmsKKzYxODQyIDM4ZGUwZDIwMjMzODY3ODE5OGI2ZWVmODY4NDY4MTUwMjBiNDM3NjggbGVnYWN5LXRydW5rCis2MTg0NiAyZDBlMDg5MTdhMmUzNjBmOTU5ZTE0ZTAwYmI4ZjY5MTU0ZjdjODI5IGxlZ2FjeS10cnVuaworNjE4NDcgNDYxZmY0M2U3NGQwMjJhYjk3OTMwZjEyODcwY2YyMGZiOTU2N2JlYyBsZWdhY3ktdHJ1bmsKKzYxODQ4IDQxZWU5YTQwMGFkMTE0MDI2NjQwYzA3NTBiNWI0NDgyYmIwZThlMGIgcHkzaworNjE4NDkgMDJhZTMxMTI1NmE3N2ExYTk0YjQ1ZDA3NThkYjBhNTQ1NGYzN2QwNyBsZWdhY3ktdHJ1bmsKKzYxODUwIGIyZjNlNDZlNzhhMjlhOTQzMTdjNmM0ZTNkNWYxY2EyYjY1YzI5MDcgcHkzaworNjE4NTEgYmZjZGE1NTI0OTJlNjVmNTY3YjZkMmM0MjViN2VjMjFiOGU2MWNiMCBsZWdhY3ktdHJ1bmsKKzYxODUyIGM4NmU5ZGQxNmI4ZDE0ZDVmYjljMmE3N2QwNDQ3YTBiM2E2OTQwZTcgbGVnYWN5LXRydW5rCis2MTg1MyBjOTIzMDA5MzA3NzJkNjY2OWZjZjk3OGJiNTJiYzI1MzllYzhjYTFiIGxlZ2FjeS10cnVuaworNjE4NTQgNDIyODVkNjM3NTVhYzM4ZjBjNDBiNjE3NzlhNTExMWY5NTkyNmM1OCByZWxlYXNlMjUtbWFpbnQKKzYxODYzIGYzZTY0OGZlZTRjMTlhZDViZThkNjQxMzNmODkyNmQwZDcxZTdhYzcgbGVnYWN5LXRydW5rCis2MTg2NCAwOWFkZmYzZDY2OTE1NGNmNTFjODQzOWY4NGFiNGNjMTkyNTY5MzcxIGxlZ2FjeS10cnVuaworNjE4NjcgY2U0NWZkM2E3YTNmYmU2MmRiY2JhYTk4Yzk2OTlmNDgxNzQxZDY2NCBsZWdhY3ktdHJ1bmsKKzYxODY4IGRlODNlZGNmZWIzZDMwOTA1Y2Q4MGIxNmJmZjIyMDNjMDFmNTA3MjMgcHkzaworNjE4NjkgZGU1NDQ5NWE0MTRhN2I5Mzc0YzgzNzBmNjYzNjIwOTA5YWI1NzExYiBsZWdhY3ktdHJ1bmsKKzYxODcwIDJiZmY1YTcyOTAzNjlkYjU1YThlMTc1NzY0MjM4OGFhZTcyYWVjYWEgbGVnYWN5LXRydW5rCis2MTg3MSA5NThjZjBjMjdkYTkzOTM2NzFlYTBlNzAyYjQyMjM1M2U1MmNmOGM1IGxlZ2FjeS10cnVuaworNjE4NzIgMzhhMGE3MzdjY2Q0MjUzMjg2YjI5ZGNkMWU3NjI0NjdjZDBjN2JkOCBweTNrCis2MTg3MyAxNDdmMzVmNmU2ZTU4NmFmMzk3MTZjYjU4ZjI3M2RlYjlkOTc3MTMzIHB5M2sKKzYxODc0IDRmOWNhODI3YTdkODdlOTdjZGU0OWZjOGE3ZDFlN2YxOThjZTkyYTggbGVnYWN5LXRydW5rCis2MTg3NSAwZGQ0NDFjYThlYjBjMzljN2UzY2Y3NTRlNjFmMTYwOGExNjYzYTRhIGxlZ2FjeS10cnVuaworNjE4NzYgYWJiZDgxZjJjYzY4ZTZiMTc5N2QzMGRlNDI3ODE1ODQ1MTJmYzBhZSBweTNrCis2MTg3NyAwNDFlOGQ3Y2M2ODQwOTMwY2RlYjQwOGIyNTE3YTFhYjYxMmQzN2QxIHB5M2sKKzYxODc4IDliM2YwZmE1ZDhjYTA3NjAyNDBkMDJlNTMxYmYzN2NmMTM4Njg0YWMgbGVnYWN5LXRydW5rCis2MTg3OSA4NGJiNzcwMWVmYmFkODIyYTA0MjU4MjQwZGY4ZDhlYTczNjhkYzI0IGxlZ2FjeS10cnVuaworNjE4ODAgMmExZjQ4MDFkNDk0ZmNhNDVkMDA3NTkyZTdlMjcxYWQyMTY5OGZlZiBsZWdhY3ktdHJ1bmsKKzYxODgxIGFlNjU5ZmYwNTI4YmMxN2I2MWYxYWRhYjE0MGIyOWY1MTViMzdjMGQgbGVnYWN5LXRydW5rCis2MTg4MiA0N2MyZmZjMzhkMWQxMDNjZWI0ZTVkNzgyNzA1M2Q0MmRhNGVmYmU0IGxlZ2FjeS10cnVuaworNjE4ODMgMWEyYzk2NDVmNzFkZjNjMDZiN2ZjZTgxMzlmNzMzMzhkYzM5NTdlMyBweTNrCis2MTg4OSAyYTg2NmVhNjY1MDliNjM3OGQzYTZlODFhZWNlZTJhYTk3MjkwMzdhIGxlZ2FjeS10cnVuaworNjE4OTEgYTdjYmZjYmFhNmIwNjE1NjdhNTk2MThiOTc2OWUxYzBkNDE5NjM1MiBweTNrCis2MTg5MiAyMmJkMDIyOTNlZmE1ZDVkNDA1MTFiMzFmMjIxMmQxZWVlNjhlY2VhIGxlZ2FjeS10cnVuaworNjE4OTMgMGI2Mzk5OTE1OGIwNzI2NGM4ZWQ3ZTk5MmJhMjczOGRhZjFlNWQ4MyByZWxlYXNlMjUtbWFpbnQKKzYxODk0IDZiZWEyZjEzNTFiMWY1ZjNhNGQ3ZDVjNjM5NjI5MzJiNTEwYmFiNDQgcHkzaworNjE4OTYgMjU2ZjkzOTRkOTNkYjVmMzIyZmRmZjQzOTg2MjRiYzNmMmZkNjRmMyBweTNrCis2MTkwMCA3MmNjNDAwZDgwNTM2ZDFlMTU0NTZlZjVlMzU3NDAzOTVlNjZkMTUzIGxlZ2FjeS10cnVuaworNjE5MDQgZTgxY2FjNzNkYWYyZjA4MTQ5OWJhOGMwZTc4Yjk3ZDlkNTQwNzkzNCBsZWdhY3ktdHJ1bmsKKzYxOTA1IDdkM2E2ZGM0NzFjZDkxMjM3ZmQwM2YxZmNiYmEyY2IzYTA0MTcyYTUgcHkzaworNjE5MDYgMTg5OWUwOGZhNDIxMTY0ZjRjZjI1MmYyY2UwZDQ1NWUxMzNmOWM4OCByZWxlYXNlMjUtbWFpbnQKKzYxOTEzIDVkZjcyYjk4ODdmYTY4OWU5OTQ5ZDM0MjYxNDczNjk2OWJkOTM4N2MgbGVnYWN5LXRydW5rCis2MTkxNCA0NmY4OWY0ODBiZDRjNTBjZDIwMTNkN2QwMGYxY2FkOWYyODU0MDBhIHB5M2sKKzYxOTE1IDYyMmQzYjExNjhhYTI5NGQyNTg4OTI4YjliOGUwMmMwMDllYTJlNDYgbGVnYWN5LXRydW5rCis2MTkxNiBmOTRhYzhmOWNmOTZkNGVmYzQ0MDFkYzBhZTVmNmQyY2VjNTM5ZTAxIGxlZ2FjeS10cnVuaworNjE5MTcgNjc5MDk1MDhlMDQxNWE0MGUwNTgwYTBlNThhNGM2YjFkZjYyMmI4ZiB0cnVuay1ieXRlYXJyYXkKKzYxOTE4IGI1MWU0YjUwZWQzMGVjMjhkNWZhNjlhODE2N2ZjOTE3YzM2NWVmYTMgbGVnYWN5LXRydW5rCis2MTkxOSAxNTExODU2NmY5ODcyN2JjMmFhZDAxZDhiNDY0ZjEyNDgyYWI2Njc4IGxlZ2FjeS10cnVuaworNjE5MjAgMTVkYTA5OGIzY2Q4NWMxNDdiNzc3ODgyZmJjN2IwOGQwYjM1YjYzMSB0cnVuay1ieXRlYXJyYXkKKzYxOTIxIDRlYTZmMTJiYmU4YzY5YmU2N2M0YjM5YWJiYWNmYjI2N2IzNTNkNjkgcHkzaworNjE5MjIgNTRiOTBkN2VkZGI3ODFhMGE1Y2E4ZGZjYzcxYzhkZTQzNTlmNTgwZCBsZWdhY3ktdHJ1bmsKKzYxOTIzIDI5NmMyMThmMzVjZjZjMzcyYWQ2ZmUxM2I2NzU5NTVhZTEyN2RmOGEgbGVnYWN5LXRydW5rCis2MTkyNCA4ZjZjY2QwNzVhMjRkODM2NjhhNGQzNzRlODZiOGRlMTViNzNjMDExIGxlZ2FjeS10cnVuaworNjE5MjUgN2RhODkxODEwMmZlZTE1NGMxOGUwZWNiNTBkYTViZmZhNDM1ZjE1MSBsZWdhY3ktdHJ1bmsKKzYxOTI2IGNkZGIyOTdjMjQ2NTNiNjg2Y2I0MzE0ODZkYzczMTg0ZmFiOTRjMmMgbGVnYWN5LXRydW5rCis2MTkyNyA4NWFjYzQwODExYjNkNjQ0Y2Y1MmUyNTYwOTMxOTI5ZDM5YmY1ZGU1IHB5M2sKKzYxOTI4IDFhYjVjYzI1MzQxYWQxODE3YzhmZmFhZTI5ZGY0YTM4ZGIzM2YzYTEgbGVnYWN5LXRydW5rCis2MTkyOSAxZGQwMDAxNmE2OWNlZDhlYjczZDM2NmY4ZWE1ZGJkYzAzMGE0MDE0IGxlZ2FjeS10cnVuaworNjE5MzAgZDU3ODRmYzE5ZTdhYzcwNjliMjg3ZjI5ZThlNzE5ZmQzM2NhMDkxMiB0cnVuay1ieXRlYXJyYXkKKzYxOTMxIDZlYTQxZDUyMzllMDdlNmVmNjU1OWUxOGZiOTgyNjM1ODRhODY5OGYgbGVnYWN5LXRydW5rCis2MTkzMyAxYzdmYTRhY2VjYjNhZDI1NjdhMGQ3NzQ0NDA4YzZmNDNlZGIxZDllIHRydW5rLWJ5dGVhcnJheQorNjE5MzQgOWZjY2NkNThkNjVkYmY5MzY3NzI3ODIwNzExYjE3YWMyYjMxZDBkNyB0cnVuay1ieXRlYXJyYXkKKzYxOTM1IDIwZmM0MWMxN2NjN2M2MDdmOWU5ZjM3NGYxODYyMWFhYzAyNTE3Y2MgbGVnYWN5LXRydW5rCis2MTkzNiA1MzQxYjMwYjE4MTI1YmYxOTI1YzBkNDRmMGM0NzIzODk4YjUxMjhhIGxlZ2FjeS10cnVuaworNjE5MzcgY2MwZDE5NzdmODIwYzc5ODIwZTZkNjQ4NmU3ODRiMWNjNDc4YTVlMSBsZWdhY3ktdHJ1bmsKKzYxOTM4IDJlN2ZmMzhlMGExODNlYTg4YzRlMmE1Yzk4NWUyMThkM2NhODIxNWIgbGVnYWN5LXRydW5rCis2MTk0MCBjY2VlYTk4Y2NmMzVmNzc0ZTgyZTQ1OWE0MzA0OTYxZmI0YTE0ZjMwIGxlZ2FjeS10cnVuaworNjE5NDEgMmJjYmQzODgyZWVlZDZjZjcwODVhYTMzYWQ4ZTIzMmQ0NjU1NjczOCBweTNrCis2MTk0MiA0ZDE5ODkyMDQwNjIwYTQ3NDE4YWYwN2E5YjRjZjU3OWQ3YWRlMTU2IHB5M2sKKzYxOTQzIDhkNmZkZTE2ZTQ5M2NiMjRjNzVkMTUyZDM4MmQwMTMwZjRiNGQ4MTYgbGVnYWN5LXRydW5rCis2MTk0NCA2NGJkOTZmZjk0ZjE0OTQxODMxMzRiMjY4ZDU2ZTI3OWNiYmY3YjUyIHB5M2sKKzYxOTQ4IDFiNmMwZmYxMzRmYTRhMWQ4YTdhOGYzYzAwN2E2Zjk4NDk3NDU3OTYgcHkzaworNjE5NTEgOTk1Yzk5NjBmN2ZmMzgzNGE5MWQ2YzNmZjE3NTRlOTBiODdjNGMzOCBweTNrCis2MTk1MiBkY2U5ZDJkOTJjODgxNDcyYTA3YzI4ZGIwNWNjMWVmYzM2OGNlZmQ1IGxlZ2FjeS10cnVuaworNjE5NTMgYzc4ZDM1ODZjNDc0ZjY2NDA2OTUzOTdiYzJkN2NhNWNmODgyNjhlZSBsZWdhY3ktdHJ1bmsKKzYxOTU0IGRhYTZhY2VhYmRmYzU4NDkwZjhhOGRhMjI2ZTk0MTk0MjcwM2U2MGQgbGVnYWN5LXRydW5rCis2MTk1NSA3ODUwNGQ2MDRiNDQ4YzhiNWNkOGRlNTFhMjgwNmYxNWU4ZTg0YTc2IHB5M2sKKzYxOTU2IGQwMGRlZDhiMjY3NzFkNDhjMDg5ODNmYjI2OTRlNzU2YzMxNTRkZjYgbGVnYWN5LXRydW5rCis2MTk1NyBhOTM1YzUwY2I1MWFhNDVlZWIxZTQyN2IzNDgwNTFhZWU0ZDIyN2UxIGxlZ2FjeS10cnVuaworNjE5NTggMjQ4Njc2OTg4YzU0OGZjY2NmOWIwNTU5ZjJhYjc2MjQ2Y2M0MTQzNyBsZWdhY3ktdHJ1bmsKKzYxOTU5IDM4ZmU2NGUzYjEzMTczYWZjOTMzOWVhZTQzYmRjZjM3ODc0YWY2OTggbGVnYWN5LXRydW5rCis2MTk2MCAzNmQ4MjhkMjdjMzY0MDkxMWU4NmNkNmE2ZmFlMjAyODQ5MjVmNzg3IHB5M2sKKzYxOTYxIGIwNmExNWVmZGM2ZDFmNDJjZjg2OTJhODhlZjk4N2I1NTA4MWZkZWYgcHkzaworNjE5NjIgYWUyODMxNTQyNTU4MTY3ZTg0M2RhNzI2N2Y4YTI2ODQ3YTU1NzVlZCBweTNrLWltcG9ydGxpYgorNjE5NjMgNWMyNzFlZjZjYjMyNjM4M2FmNzA0YzUwZmQ5NGQ4ZTkzNjIyNGFmZCBweTNrLWltcG9ydGxpYgorNjE5NjQgYjQ1ZTdiNTdhMGQ4MmFhZDU4ZGU3OWNiODE1ZmE5NzI0NmI5NzhmYiBsZWdhY3ktdHJ1bmsKKzYxOTY1IGVmNDBlYzMyYzVlNGQ3NzM5YjJhMjUwNWQ3MDI0ZDUyOGJiMGMyMWUgbGVnYWN5LXRydW5rCis2MTk2NiA4NDc5M2JmNWE0YmZjMGQyNjA5Y2M4YTBmMjNjMTY1OWZjM2U1YzJhIGxlZ2FjeS10cnVuaworNjE5NjcgNjE5MmQ1YjEyYjZhZTE3YjUzYTJkYWY4YzZhMzlhNjc2OTljNTFiNiBsZWdhY3ktdHJ1bmsKKzYxOTY4IGQ3NDBjNzFmMDJmZjI3YWI5ZDk1MThkODMzMmM2ODBlYmNlMTcxMzcgbGVnYWN5LXRydW5rCis2MTk2OSA1MDc4YjdlZTE2ZGMxNzFkNjk3YmEzMTUzOThhNGQwNWMxZWM5MmFkIGxlZ2FjeS10cnVuaworNjE5NzAgYjM1MDk2MGFkZTZkNjY5Njc3M2I3MWZlMDM5NmI2ZjYzNzc3NWI1YyBsZWdhY3ktdHJ1bmsKKzYxOTcxIDMxM2YzODFmYzBhNzE3MGNjMWU4MWE5NzRhNzdhYzA2ZDQ1MWNlN2QgbGVnYWN5LXRydW5rCis2MTk3MiA2ZjEzMWQyYzM2MjgyMDliZWZmZDU4OTVjZGQ1MjMzMTUzOWNkZmFhIGxlZ2FjeS10cnVuaworNjE5NzMgZWFjNDFmOTAyOTZjNjljNmQwN2QyOWYxZmViNDUzYTRjMGU0MDBkMSBsZWdhY3ktdHJ1bmsKKzYxOTc0IDYyMTM4YTBmNDIzMjZiYjAzNDBiZWU3MGZkNDdiMTExNGYyYjMxOTQgbGVnYWN5LXRydW5rCis2MTk3NSBhMGVhM2EwZWZjNzEwOTM0YWQ2NmUzOTA3MjExMjMwZmYyMjdkNmExIGxlZ2FjeS10cnVuaworNjE5NzYgZjFhZWM3ZGVjMDVjYTIxZWI4MzY3NDA2ZGVjOThlYjA2Y2ZhNmZkOCBsZWdhY3ktdHJ1bmsKKzYxOTc3IGUzOWY2OWJmNTYxMGVhZDM5ODUxNzc0NDU5MDlhN2JhZjk0ZjhhMWYgbGVnYWN5LXRydW5rCis2MTk3OCA1NjQ0MmRiNjBhMzYyYmZiNjJlOTA0NjNmNmRhMzE0OTM2YjJkZDllIGxlZ2FjeS10cnVuaworNjE5NzkgMzFiYTNmYTE1ODViMDlkYjBjODAyNzdkZTIxODBlYWNjMTYwNDhkMyBsZWdhY3ktdHJ1bmsKKzYxOTgwIGNiNTYzMzBkN2FkYzhjZDEwMzliZTQwNGVlY2ZmOTFiNTViYTJhN2UgcmVsZWFzZTI1LW1haW50Cis2MTk4MSA2YTY2ZDMyNjdkMGNkNGRjYTYzZjU2MWYxNmI2NzBhNjU5Mzk2NTYyIGxlZ2FjeS10cnVuaworNjE5ODIgZGE1NTk3YTVjMTk1ODJhOGUzN2Q1NDA1OGY0MTc1YjVmYWQxODcyYSBweTNrCis2MTk4NCAxMGEzOWE2NjJlNjljYTRkZGZmYzJiYmZlYjdiNTA4MDFhZDQ5ZmI1IGxlZ2FjeS10cnVuaworNjE5ODUgMThlMTlhYzk4ZDM0YzAxOTMzMTI5ZGM3YmE3NjE0YjQxOTYyMjBjMyBsZWdhY3ktdHJ1bmsKKzYxOTg2IDU5ZDA4MjU5MWY1NjgwNDFhMGM2M2Y0YTRlOWMyZGFmNmUyYzk0MjggbGVnYWN5LXRydW5rCis2MTk4NyA3ZmRmZjAyZTZmNDVlYTk4NDUxYTdiOWJiMzA3MDE4ZThkODYzNTdhIGxlZ2FjeS10cnVuaworNjE5ODggNGJmNjFmY2NjNGU2ODgyNDc3ZmNmM2E5NGY1OTQ1YWI5NzUyNmJmNyBsZWdhY3ktdHJ1bmsKKzYxOTg5IDZlN2IyODA4YjlhNjllNzdhOWI1YWYxYzhlZGIyYzJhYjE3YTAzNWEgbGVnYWN5LXRydW5rCis2MTk5MCAxZDUwNzQ3ZTUzZDM2OGIwZDgxZGE5MjA2ZjBmZDIzOWNhNmMwODg5IGxlZ2FjeS10cnVuaworNjE5OTEgNzIzMjI1OWEwNTI5ZTY5NjAyOWYzNDU4NDJhNDZlYzFkMWI5ZjA4NyBweTNrCis2MTk5MiAxZTEwYjMwZjc0OThjM2Q3MmRiOWRlM2EzY2JlNzYxMDk2NmI2ZDZiIGxlZ2FjeS10cnVuaworNjE5OTMgMzEwM2VhM2RmNDlkOTRjN2U3MWM1YTAxYmE3ZDZmNmRiZGRjNDkwMiBsZWdhY3ktdHJ1bmsKKzYxOTk3IGJiZmNiYWZlYWU4NDNkMDBhOTRiMWFkM2IzMGJmYzk0MjgxYmY1MWMgbGVnYWN5LXRydW5rCis2MTk5OCA2NGYyZWI0MTcwZjE5NjBhMjk1NjgwZjdmZTFlODM1NmI2MWFiYTYwIGxlZ2FjeS10cnVuaworNjE5OTkgNjlkMDA5MDc0MDg4M2ViOGQzZjJiNWVmOTg4Mjg2MGQ2YWQyYTI0YiBsZWdhY3ktdHJ1bmsKKzYyMDAwIGY5YTYyOWY0MTY1NmRhNzIwYTU0ZmRmYWZiMzM0ZjM5YmFmNDRkZGYgbGVnYWN5LXRydW5rCis2MjAwMiAyMzY1YzQ3ZmU2NGRkYzM0ZWYwY2NhNjNiNTdjYWZjMDQ4NTdlMGIxIHB5M2sKKzYyMDAzIDg0ODE2MGQxMDc4MDYxY2NiYjVkNjdjZTcyYjIyNDVlMzY5ZTU1MmQgcHkzaworNjIwMDQgY2EzOGY3YTRiNGM5NTk2OGI4NGEyNzQxZjQxYWUzMmFjMjQwM2JjNiBsZWdhY3ktdHJ1bmsKKzYyMDA1IGE0M2JlMDc0MzI0ZDJmM2YxYmU5OWY2ZTRkZDUyYzZkZjgwZTMxODUgbGVnYWN5LXRydW5rCis2MjAwNiAwOWZhOGNiMmJmZThmNGYyYWE3NTAwMTQzMWJlNTM2N2JiYTcwN2VjIGxlZ2FjeS10cnVuaworNjIwMDcgYWFjZjhiZTUxZjkwMzA3ODc3MDliYzVjZDQ0YWVjYWRmZTM4YTcwMyBsZWdhY3ktdHJ1bmsKKzYyMDExIGEyMTg1NGU1MTBiNDdiY2NjZWRlMmRlZmE4NzNkN2IwMjRmMTAyZDkgbGVnYWN5LXRydW5rCis2MjAxMiA2NTRhZDc0YWRlMTMxMjAxNmQ3ZjViZWU1NzU0NjRkOTg1MWEzYWJhIGxlZ2FjeS10cnVuaworNjIwMTMgMWI1YjZhYmIxZjJlZGU5YjE0NWFhODQ2MjdiYWJjZmYwOTQwY2Y3YyBsZWdhY3ktdHJ1bmsKKzYyMDE0IGMzZTY3NGNiZDcyZTlkOWFiNDUxN2Y5MDY3NmIwMGQ2OTc4OGY1MjUgbGVnYWN5LXRydW5rCis2MjAxNSAzYjk5NGY3NGIxMDA0ODIxM2VmZDI4YjdlNTVhYTgwOTk0NWU2ZjcyIGxlZ2FjeS10cnVuaworNjIwMTYgYzc3Y2MyM2UzOTRmMTQ0ODE2MTJjMDkxNGRmNGU4ZDI1MDYwNjUzNSByZWxlYXNlMjUtbWFpbnQKKzYyMDE4IDk3MzRhNDJjZmExNWUwMTVlY2RkYjlmM2VkM2IyYjkxNGYyNWRiYTEgbGVnYWN5LXRydW5rCis2MjAxOSBjNGVkNjY0YTFkYTFjMGIwMWIwOWE5NmVmM2VlYTZlMzVjMjExOTRjIGxlZ2FjeS10cnVuaworNjIwMjAgM2VhM2U1MWQxZWUzZmE4ZjY3YmM0NzNiMjU0ODU0ZDI3ODZhZTlmMiBsZWdhY3ktdHJ1bmsKKzYyMDIxIGVmZWY0ZTNmZWQxN2RhY2YyZjNiYzdjNDAyNzg0NWRmN2RkNWU0NWIgbGVnYWN5LXRydW5rCis2MjAyMiA4NzJhYmVkN2QwNjk0ZDg5YjRmZDU0OTcyOWE3NmYzZmQ4YjJhNTA4IHB5M2sKKzYyMDIzIDdjZTFhOGZkOGE3MWNhOTdlNmMyNmQ4ZmNlZWVlZTExYTBhZDExNWYgbGVnYWN5LXRydW5rCis2MjAyNCBlMDZlMDhlOGZkY2VkZWM2YmFkYTNiMWRhMjg3NmE5ZjhjYzBhMDcyIHB5M2sKKzYyMDI1IGQxZTFiNzQwZjY4NDM4OWMxZWViMmE4NjMzYmEyYTU2ZDkyNjA4MmYgbGVnYWN5LXRydW5rCis2MjAyNiAwZWE1YzA1NWFiNTRmNDZiNmYzZGMyOWMzOTI1ZmI4NGM4MjJmOTViIGxlZ2FjeS10cnVuaworNjIwMjcgMDkwNTNhN2MxY2RmZDgxOGYwOTJmNmE4YzRjNzA0Nzg0NDAzZWFjMCBweTNrCis2MjAyOCBmZTUzZDFhMzZlZjYzYjk0ZDFlNTk1ZmJmNGU1ZmRmMzUzMDYwMjJlIGxlZ2FjeS10cnVuaworNjIwMjkgYzQ0MGE1NzM3MTQ5YTcxMmRiOWJkNDVhYmQ4NDZmNTc2N2VjMzZkMyBsZWdhY3ktdHJ1bmsKKzYyMDMwIDZiM2FjODllMGRkNDkyNDlhMTA4ZDlkYzVmODVmODU1YzA5OTM4NGIgbGVnYWN5LXRydW5rCis2MjAzMSA5NThjZjdlY2NhZTI0OTYyZDc5NTBiYWIyMjc1NjViOTM5YmI1MjAwIHJlbGVhc2UyNS1tYWludAorNjIwMzIgMGE0ZGEzOTdlMWRiNDdiMDg2Y2ZkYjAwZGRiZjg5YjNhZWE0MzUzNyBweTNrCis2MjAzMyBmMTg0MzMzN2E2NmMxNWU1MzNjNjAyMGU5MGJiN2FlZTZmZTQ0NmZkIHB5M2sKKzYyMDM0IDQ2MzQ4ZGU2M2Y2MWEwZWJhN2ExZjM0YzRkM2E0YTVlOGVkOTk3MGIgcHkzaworNjIwMzUgNTExMGNmMGU1ZjhmZWFmMjQxY2I5MGRmZjJmZjc1MDAwNWU0ZGVjNyBsZWdhY3ktdHJ1bmsKKzYyMDM2IDE2NzM2ZWI0MDE1MGFhN2Q3ODg0MDc4ZmJiMTA2NzViMmFiY2Y3ZDQgbGVnYWN5LXRydW5rCis2MjAzNyAyM2U0MjU3NzIyNmE3Zjg1ZmI4YWIyNzIxZmZkNzgzNDgwODljNWFlIGxlZ2FjeS10cnVuaworNjIwMzggNmUwMmZmMGJkNmY4OTQ0YjcxMjI5YWIxNzEwODIwODk4N2YwMmFlZiBsZWdhY3ktdHJ1bmsKKzYyMDM5IGIwYmYwNmQ0OTY0N2RkMjVkMWMzZDM2NmM4NDFhNDYyOTA4Zjg3NjMgbGVnYWN5LXRydW5rCis2MjA0MCA0YzY3OGU5YzdhMzA1MGMyNDEyYjM2MTc0YTEwMDVhN2MzZmQzYmI4IGxlZ2FjeS10cnVuaworNjIwNDEgNTFlZmYyZmQ5NTI3MTM2NmNlODc4MWQxN2YyYTBjZDYwZWIwMDAyZSBweTNrCis2MjA0MiAwYzIxZjliNGE4MzFhNDYxNmE4NmQyNjJhZWFiNjdlZjYxZWZjYzMwIGxlZ2FjeS10cnVuaworNjIwNDMgMDFhN2U2NjUyNWMyNjI0Y2M3YzI4MWQzMzZhMzgzMjkwZWYwZTIwMSBsZWdhY3ktdHJ1bmsKKzYyMDQ0IGU0NDg2YzM0M2Y3ZmE2OGQ5YTA3MWIwMTc5ZDY3NWE1MWUxZDhkOWMgbGVnYWN5LXRydW5rCis2MjA0NSBlZDg4ZjRkZTQ5NmYxOTgwNmIzNjZhNzBlZjI5ZDc3MmJjYTE2Y2RmIHB5M2sKKzYyMDQ3IDJmZjg4YWU5ODUwYzUyZTVjZTdhZDljNWExMmVlMTUzYTYyMTRjODEgbGVnYWN5LXRydW5rCis2MjA0OCBlMzcwZDljZDE0OWVhMjYwNGJiNzhmNTFhMTcxNTU2MTllNTQ1Y2VlIGxlZ2FjeS10cnVuaworNjIwNDkgNDJjNWQyODdhODUyZTZmMjg5ODhjZDZiMjU5MzIzZGFjMDA3N2FlYiBsZWdhY3ktdHJ1bmsKKzYyMDUwIGYwNTFlN2E4MGFjYzc2YjQwMjllZTU4NjYyMTQ5NTgxZjJiMDZlMTkgbGVnYWN5LXRydW5rCis2MjA1MSAyOWVhNTA3ZmQ5OTgyMjMzNzQzODc0MTAyMTY4MmYwMzFjODIzMGMzIGxlZ2FjeS10cnVuaworNjIwNTIgYzExMjIxOTA2MTcxMWE0NTAxZTg3NmUwZDA2ZTczZTcxMWU5ODAwZiBsZWdhY3ktdHJ1bmsKKzYyMDUzIDA3Zjc1ZDU1MTliNDdiNGMwYjE3NWQzYzNmMjVhYWZiZTFiNjg5OTIgbGVnYWN5LXRydW5rCis2MjA1NCA1OWQ0MmU2ZDE4ODUzYmEwZmFkOThmOWJmZmU1MTU0MDQ4ZDVhYzJhIGxlZ2FjeS10cnVuaworNjIwNTUgZWE3NWIxMmZlOGU3NmY5YmZlODMxM2Y2ODYwNGM4ZDAxNGYzMjhiYyBweTNrCis2MjA1NiA5ODI3NmJlNjQ1NzlmYzNjMGM2MTMxZmYyZTJmMTUxZTU3MDU3ODNkIHB5M2sKKzYyMDU3IDFjOTcyMzJkOTNmZjNlOWFlMjBlNGExNjE4NWM0YWIzYTA2MWM0ODUgcHkzaworNjIwNTggZTg5OThlODBlYWYyYmY4YjU5OTAxODU4NDc4Y2NmN2NmNmY5NWJkZSBweTNrCis2MjA1OSBiZTE4ZGY2MzQ0MDU4NTkzOTU2MDUwYzg3ODc3YTVmODY3M2EzMTE0IGxlZ2FjeS10cnVuaworNjIwNjAgMzJlYTc2NTRmZjljNGVmMzVmZDNjOThjN2EwMmQ4MDcyYTQxNmVhNiBweTNrCis2MjA2MSA0YzdiYjQwOWRhZDZkMDBkOTBkNmRhYzQzZjgzNDk3MjJkNWQxMDU2IHB5M2sKKzYyMDYyIGE3ZmI0ZDg3Y2JkZTM5N2RhNGZlZjM1ZjZmNzhlOTkwYmQ2ZTI5ZWMgcHkzaworNjIwNjMgMmJjMWQ1YWE3MjllZTQ5NmM2ZTkyZmZjODBlZTQ0ZTRjOTJiNDk2NiBweTNrCis2MjA2NCA2MDQyOTE0ZTgyODY3N2NiMjllNmRhOTJmMzhhNWVlZDg4YjBiMWJhIHB5M2sKKzYyMDY1IGM1YjE0OWFkMzAwZjhjMDhjMWVjMzhlYjMyYTkxYjA2MjQ3NDdjMWMgcHkzaworNjIwNjYgNTdiYmFjNTMxOTE5ODI5YjMzZmRmZDNkMzE4NmNlNTRiODcwNGFkOCBweTNrCis2MjA2NyA2MDBmMmZmOGFhOWU5MTcwY2M2MDk3YjU3MzUxNmU2OTM2ZjNmMWNhIGxlZ2FjeS10cnVuaworNjIwNjggZmZiZTZjNzkwNTIzY2QyODhmMTg5MWY5MTcxZTJkZWEwNjU5YjM3MSBweTNrCis2MjA2OSBhZWQ2OThjODY0N2I5OTE0ZjAxNTdiYTdhM2ExOTI5MTEyY2U4MTc5IHB5M2sKKzYyMDcwIGYwZmE2MDViMmE3OGE2MDhiN2Y3MzI5MmVkY2FlM2RhMzczYjMxM2IgcHkzaworNjIwNzEgMzhmOGRmZWNlOThlNWJkODNhNzNjNmJmZDA3NTMyMzYzMjkxOWI5OCBweTNrCis2MjA3MiA4NjQ1NzRhOWNkMjZlYTZkNWY1NmE5N2VjOGU0Yjk5MDk4MDk3NjU3IHB5M2sKKzYyMDczIGU5MDMyZjVkZDUzOWIzYTY0OTI2MTY3MTVjYjJlOTQwMzFlMDdlOTAgcHkzaworNjIwNzQgYjJkOTNhOTYwYjk4OTBmNmQ4MzE2MzVlODhjOWZiM2FmZjc4YjkwNiBweTNrCis2MjA3NSBlM2RjODY3YjYxODJlZTEyOGMyNWIwMDE1ZWYwODJmYWEyYTViYzA0IGxlZ2FjeS10cnVuaworNjIwNzYgMDdiMzZkMmI3NTM0YzVjOGJiNDk2YTcyYTkxZjgwY2MxMWZjYzM3MiBweTNrCis2MjA3NyBlNDc0ODE3NjRlNTczMDg0ODhhMTllMWNiMzkyMzQxYzFkNjQxOTQzIHB5M2sKKzYyMDc4IDgxZWUyNzBhNmViNTRmMDAzNzIwMDcxMzdiZmZjNDgyZGYzNTMzMjcgcHkzaworNjIwODAgYzNlZTBmMGZiZWUxY2VmNjI0YjIwNGNiOGIzZWFlZmY2ZTQ5YTJhZiBsZWdhY3ktdHJ1bmsKKzYyMDgxIDYxYzkyOTIzY2Y3ZmNlYjNlOTJmMGY1YmM3NzNiN2I5ODg0ZWQ5YTMgcHkzaworNjIwODIgNDE1MTU2ZDRjYmQyMGM4YzYyZWE5MTg3NDg5MTZlMTBjYTE2NzNlMSBweTNrCis2MjA4NCBjNzAxNWUzNTdhMmM5NzljNDI0MmI2ZjIyNThkMDA4NTg2Mzc0OGRmIGxlZ2FjeS10cnVuaworNjIwODUgMTc4ODFmOTZlYTAxZTMwNDBmMWE2ZjkyYjMzYTRkMjAwOTZmM2FlYyBsZWdhY3ktdHJ1bmsKKzYyMDg2IDZkZWNmZTM4YTgwOTE5OWYxMjU4ODUwMjE4ODQ4YzA2OWM5NWQwZGMgcHkzaworNjIwODcgZDg2YjMzM2M3MmU3NDFiOWM2YTIwNzdiMGI2Zjg4Y2ZmNjA4ZGE5YiBweTNrCis2MjA4OCAzMGRkNjA2OTg2NzFmMWI4NjY2NTVkOGM3ZjgwMThhY2YyMjYwMjU5IHB5M2sKKzYyMDg5IDVhMTdkMTU3ZGYwMDE2NDdiNjIzMjRkODk5ODUyMmM3N2U0MGI1NWQgcHkzaworNjIwOTAgN2RmZjVlNDFmYTdhZTFiYjAyNzQ1N2ZjMDFiZTgwMGZmMWE0MDU1ZiBsZWdhY3ktdHJ1bmsKKzYyMDkxIDRjNTA2NWRkYjliZDYzODgzMzAwMmYyMzhmZTY0NTM2NDI3MmY4ZTggbGVnYWN5LXRydW5rCis2MjA5MyBhYjRmOGM0NmMzZDliNmRjNjk2NmE5ODM1MDllYTU4NzZiY2JkODg2IHB5M2sKKzYyMDk1IDQ3NzllMzQ5NmFlMWFmYmJmYjgxMmViNmU1NTIzMmRlYjM2MTI0YzUgbGVnYWN5LXRydW5rCis2MjA5NiAwNzMwZjNkNTBjZGNhMWIxNmQzZGQyYWZlNDhjYzU4YWM1ZTE4ZjcwIGxlZ2FjeS10cnVuaworNjIwOTcgMWM3OGQ4ZTg3NjUzYTVkZmIyNzkxODE1YTNjYjc1Y2Y2MDM1NjcxZCBsZWdhY3ktdHJ1bmsKKzYyMDk4IDBiMzc0NzcyNTRmNjQxODA4Mjc2ODdlMjRkY2QyZDM5ZWJiMjM4OTEgcmVsZWFzZTI1LW1haW50Cis2MjA5OSA1OTM5OTAwZDk4ZDIxNDk5MThhMWNmNGY5YjQxYWU4Nzc2ZDBkODE4IGxlZ2FjeS10cnVuaworNjIxMDAgZDZlMTMzM2U2MDc1Y2Y0MWNmMmQxY2I3NTY2ZGY5ZWI2NzA4YTdiMCBsZWdhY3ktdHJ1bmsKKzYyMTAxIGM3YzI1MjA0ODU1NTM3NjhlNDk5YTgzZmZkZmFjNDI2OTkzYjA3NWEgcHkzaworNjIxMDIgZjc1MzkxOGFiZTY1MjgzOGIxYjEzZjI4MzUxOGZhMWM3NjM5ODEyYyBsZWdhY3ktdHJ1bmsKKzYyMTAzIDBiMmE0YTEyNDVhM2M5NjY3MTY3NmFlY2U4NzYyNDM5NGQ2ODE0YWIgbGVnYWN5LXRydW5rCis2MjEwNCBiYjRhNTQ3NDMwZjg1Y2UwMzVjODgxNGZkMGRjMDMwMGU5NDhiYWY2IHB5M2sKKzYyMTA1IDAzZWQwMTE4ZTczMzc2MDM4Y2RhY2Y5MjA5OWQ0NTk3MWRjN2M5OTYgbGVnYWN5LXRydW5rCis2MjEwNiA4ZTZhNGNjN2RmYzA0ZGE2OTRiOWRjMzQ5ZmRmNDQyNDY2ZGM4YWY2IHB5M2sKKzYyMTEwIDgxMTc5MDZiN2JhNzVlNmUyYjQ5OGYwMjYxZGFhYTA1ODU2ZjRhNWUgbGVnYWN5LXRydW5rCis2MjExMSBhMTcyYzJlMzhhYzllMmVhNjJlZDllOGI1ZWJhMWI2NjY4ZTE2YjYwIGxlZ2FjeS10cnVuaworNjIxMTIgYTk0NDY5Yzc0YjllYjRiYjMyZDhlYjA2Yjg0ZDZjMjQ5Y2IwODQ3YSBsZWdhY3ktdHJ1bmsKKzYyMTEzIDBhNWM4NjM1MGE4OTI3NjEzZmE0NTI0OWEwMDkzY2MzMGEzMTk2M2MgbGVnYWN5LXRydW5rCis2MjExNCAyYjBlY2M3ZmQ3ZWVhMjgyZGRiMTJmNGViMzY3MGM1MWRhNDRjZmFiIGxlZ2FjeS10cnVuaworNjIxMTUgMjA1ZDdmZDUwZDM1YTk2Y2FiNjM2OTllZjI2MmZkMjNhZmU2ODk1MiBweTNrCis2MjExNiBmNTQ3ZWJmMDI4NDMyODliOTQ4MWQxOWU4ZjU5NjI4NzcxZmFkNjI1IHB5M2sKKzYyMTE3IDg3OTFhYzljYmNjZDViZjFmMmEyNTc4MWU2ZDQ4MmNiODNiNDVkYWUgcHkzaworNjIxMTggOTc1YmQyMTYwNTI3MGEwN2Q5MjU3Yzk0NmE3OTViNDg4OGM2YTkxMSBweTNrCis2MjExOSAxNWY3NzNmNzMwMGUzNzJjNTZhMjFkNTlmZTQ5Y2EyNjk1NWE2NDc3IHB5M2sKKzYyMTIxIGVjYWIwMzc2NmNhY2NmMzQxN2JmNGZmOWQ3NWEzZDlhNzc1YTQ5NTQgcHkzaworNjIxMjMgZWVjMTQ0OTE3YTE4OWJlMTFlZDVlZmEzNWM2NjA0ZDAzYmM2MmJjYyBsZWdhY3ktdHJ1bmsKKzYyMTI0IDc2YTgxZWY5YjM3OTFlOTRjMzZhNTAyYTliNjIwNWIwNDc2NWNhY2IgbGVnYWN5LXRydW5rCis2MjEyNSBhYTliYWJiOWE0OGVkOWNjMjliOTJkOGJmYmI2YWQ2NjE0MmRhMzkxIHB5M2sKKzYyMTI2IDE2MTdiYjA1YTc4YWQ4MTgzYzJkYTI2Mzg3MjEwMTg5N2IzNmExNmQgbGVnYWN5LXRydW5rCis2MjEyNyA0ZDgzYjhkMDMyOTlmNWFhMWZhNGU3MzQxM2FmMjRlZTQ0ZDAwNmZkIGxlZ2FjeS10cnVuaworNjIxMjggMjg0OGM2NTdhZjBhZTc0ZjYzMGJmMzdlMTIxM2M5OGY3OTUzZGQzZSBweTNrCis2MjEyOSA5ZGNkYTU2Yjg3MWUxY2VhMGIxZTk0OGQ3Y2Q0YzYxYmM5OGM1YjMzIGxlZ2FjeS10cnVuaworNjIxMzAgODE0MjJmMWRlODkwOWRhM2RkMzcyYTRjY2UzMzQ1MjI5YWJjMjAxMSBweTNrCis2MjEzMSA5NzM2YzIwZDI2ZWI2ZjY0OGFkMzFmNGQyNjNlNzY4MzA0ZmQ5NDE0IGxlZ2FjeS10cnVuaworNjIxMzIgZGRmZTk0NzQwZWRlYTU3ZThiYmVkYjAxOTlkMTc1YTM3YjcwMGM1OCBweTNrCis2MjEzMyBhNzJlOTE3NDkxYTQ4Njg0MjQzOGY3MzhmODM2OTAwZWIyN2VkOWFlIGxlZ2FjeS10cnVuaworNjIxMzQgNjdmMWM0NjUyNzljYmMxZDRlMWY4Yjc2Mjk2MjRlMmZkZjNjOTliOCBweTNrCis2MjEzNSBjYzMzMzNiN2JkOTM2NjY4YzE2NzgwZDgwZjAzZGQzY2Y2ZjllOTNiIHB5M2sKKzYyMTM2IDc2ZjU3N2E5ZWMwMzNmZGEwODE0MGFhZDc4ZjY1OTVhMDU4Y2U1YjUgbGVnYWN5LXRydW5rCis2MjEzOCAwM2IyNmY5MWJmNmQwNTAzYTM0MjJiZGQ1Nzk0NDUxMDk5OTJjMjQ2IGxlZ2FjeS10cnVuaworNjIxMzkgNGJhNjgxOTVhNTExNjMyNjNjZTkzNDMwNjlhMGZjMDhjZjQwZjEzYiBweTNrCis2MjE0MCA3YzA4MWMwYjBmNTU4OGRiYzFiMDM0OGVjZTlkYmQxYTQzYjllOTBiIHB5M2sKKzYyMTQxIGFjNWU0ZDU0YjIzZTlkNTZlMmUxNzM0ODc5MDNiMzM2ZmUxNmIzOTQgbGVnYWN5LXRydW5rCis2MjE0MiBmYjNjOWJiNzZiMjk0NThmYjMzODc1MzM5NDk3MTA5YzQ2MTgxOTkwIGxlZ2FjeS10cnVuaworNjIxNDMgZDgxOGY2ZDI5Mzg0N2E3ZjBiMTExOWM1MjBjMjJkN2E0YmM0ZTFhMSBsZWdhY3ktdHJ1bmsKKzYyMTQ0IGNjZGRjNTZiZDViMDcwZmI4ZmY2OGUyMzRhMmNjZDI0ZDUwZjYzYzcgcHkzaworNjIxNDUgYjI4YTJkMjVmZDkyZGMwNTZmZDU2ZTFlNTc0MWYzYzg4ODA2Yjg1YSBsZWdhY3ktdHJ1bmsKKzYyMTQ2IDNkMDM1MmE1NDFjZTU2NjJiNjlhZTRjNzQyNmM4NzQ3NGJhMTU5YWYgcHkzaworNjIxNDcgNGExMTMzMDNmMzE2NTQyZGM3ZDMzZjNhMjE5OTFmNzBhNWU2OWJiNyBsZWdhY3ktdHJ1bmsKKzYyMTQ4IDM5OWU3NGJiMTJjN2RkMGY5MDE3M2YwZGY2ZDk4NzY2ZTYzN2U4ZjAgbGVnYWN5LXRydW5rCis2MjE0OSA4MjczMTc2ODk4NmQ0NzQ5YTBhZTM4YjcxODExYmNmZmM3MDk5MGZkIGxlZ2FjeS10cnVuaworNjIxNTAgYzNhNzcyNTg4ZGI3NmViZGVjNWVlODZlODBmYWM0ZDhjMzZjMTEwNSBsZWdhY3ktdHJ1bmsKKzYyMTUyIDZhYmUyNWI5OTI0YmFjOWYzYWRjZGNjODE0YjZlNTM3YTdiYjQxODggbGVnYWN5LXRydW5rCis2MjE1MyA2MWEwYzc2ZWNmODc2ZWU1YzcyZDc1OThlNDgwNWVkMGE1NWMzMTlkIGxlZ2FjeS10cnVuaworNjIxNTQgYTE5ZWM0ZjE3Mjc3OTcyYTNkNWVlZDc2ZjlkZmUzNjM1Y2Y4MTlhNSBsZWdhY3ktdHJ1bmsKKzYyMTU1IGY4MDZmZDk5NDFkYTY4YzQ1NWQ2YzBiYjZjZGEyYjU0MmMwY2I2ZTcgcHkzaworNjIxNTYgMGNlN2EyMzUyYTUzZWEwNzgwMGZiZWE3MmQxMzNmMTVmMGE3OTgxNiBsZWdhY3ktdHJ1bmsKKzYyMTU3IGU4OTE2YzY0ZGY0YzVmYjUwMGZkMjZjNDA4MjA5NmMwMWQ4ODg3ZmUgcHkzaworNjIxNTggNDkwMWU3NWY3NzVhZTFhYzAyNTJhZDM1Mjc0ZjY1NzgyMzdiOTUxZiBsZWdhY3ktdHJ1bmsKKzYyMTU5IDM3MjZkZThjYjhlMWQzYzAwNDMwYWU3YTFjOGZhMTE1ZDA3Y2Y1OGEgbGVnYWN5LXRydW5rCis2MjE2MCBmNGJmM2U3YmNiZTgwYWUyNGE3MWQxODJjMTJlMzJlYzE4MDQ3MTIwIGxlZ2FjeS10cnVuaworNjIxNjEgZGU3Nzk3M2Q3ZTFhMGM0ZDJmYzU5NGM4ZTRhNGUxMDA4NjkxYTYzZiBsZWdhY3ktdHJ1bmsKKzYyMTYyIDM0NDJlOWU2YjJjZjE4ZGZhNjUwN2I1MjIyNzczYTRhYzU1Y2Q3Y2YgcHkzaworNjIxNjMgOWM5MjZiMGE2NDhmNDI0OGRkZDg1NGM3OTgzOTA3YTNiNjliMjk5ZSBweTNrCis2MjE2NSBiMTAyOTJlYWZiMDczNzE4Mjc1ZGU2ZDU0YzkzM2ZkZmMxZmFhNjA4IHB5M2sKKzYyMTY2IGMzZGNjMGM3YmZkOTU3ZTEyNjM4ZDFjZTA3YjQ5MWU0YWMzOWE5MzkgcHkzaworNjIxNjcgYTFhNTE4YmU1NDdkZDkyYzliYmE3YWQ2YTg3NGJmMGVjNjIwYmMxZCBsZWdhY3ktdHJ1bmsKKzYyMTY4IDEwNTVmMzY5YjFmY2VlMDc5YTJjZDk4YWZkOWQ1ZWM3MzU1NzYxZmMgbGVnYWN5LXRydW5rCis2MjE2OSA2MjUzYTcyMWQ4YTZhMmIzZTY5YjM1OWEyZjQ5MmJiN2ViMTAxY2QxIGxlZ2FjeS10cnVuaworNjIxNzAgZTNmN2RjZmFhMDMwY2JlODRmNWJkYTM0ZmZiYTQ5YWZjYWU3YTEyMCBsZWdhY3ktdHJ1bmsKKzYyMTcyIDg1MzJkNTY5MTg1MDlhYjhlMTEyYzMxMzVjYzEwYjQwOTFjNGFlNDkgcHkzaworNjIxNzMgMTBkOTRjOGM4NDE0YWI2NzJlMjI3ODBiMDJiYmVkZGJkN2JhNDc2MyBsZWdhY3ktdHJ1bmsKKzYyMTc0IGY4NGNkZmMyMjFkMTM1ZTBlMmUxM2U1YmQ5MjVkMTEyOWRmMTY0NmIgbGVnYWN5LXRydW5rCis2MjE3NSBiYzcwMGFkMDI5NjIzMTg1MjY0ZThjNWQyZDIxNmJlZjExMmJhZjJjIHB5M2sKKzYyMTc2IDQzNTJkNDFhZmZiMDFiMjVmMGYxNjI4YmYzY2JhZTk5MTllMTY5OTcgcHkzaworNjIxNzcgODY0YTU2NzFjN2E0M2NhNzcxYzQ2YmM2NzZlYTUyNmQ1Mjk5MDI2YSBsZWdhY3ktdHJ1bmsKKzYyMTc4IDIyYTc0ZWFmNmIyMjUzZmMxMjViMDc5MWMyZTcxMjk3YjkxY2Q5YTIgcHkzaworNjIxNzkgNDJhNzU4Zjk2MWExNzkzM2NlZTJiYTM2YzE4NjlmODAzMDJhZDVkMyBsZWdhY3ktdHJ1bmsKKzYyMTgwIDAxMmQ5N2JiZWVhZjZmNmMxOGVlZmQ0NTQxMGQzNDJlYTRhYjIzZTUgbGVnYWN5LXRydW5rCis2MjE4MSBlNTNmMmNjY2RmMWQ3MWIyNzk3MDE3OWM0ZjZjZDZiZjIxMTQ2YzM0IHB5M2sKKzYyMTgzIGZiNWVhYTRiZTcwMDkxYTZlZWM0NWRmNzJmNWNlZTJmNjFkODQ5ZWUgcmVsZWFzZTI1LW1haW50Cis2MjE4NSBmNDZjZDI0MGUxMDU4NWM5NDkwNTUyZjYyN2Q3ODA3NzIxNTNjOWY1IHB5M2sKKzYyMTg3IDAzNTI4OWU2ZmUyMzVkZDMwNGFlNDhkNmM4YjE1NTU0YTYwYTZhMDEgbGVnYWN5LXRydW5rCis2MjE5MCBjN2RhMzFjMmM0NWZmN2JkYTBiYTI3YzJiZWMzMzJlMjI4NTMxNjkyIHB5M2sKKzYyMTkyIDljNjQ3NTQyNzYwNTIxNDMyZjc3ODlmYzVmYWM4YWRjZjZmYTA3YTQgcHkzaworNjIxOTMgZTI4ZWQ4NWNjOTYyZGQ3NDFjODFmOTIxODg5OTI1ZjgyNjkxMmI0YSBsZWdhY3ktdHJ1bmsKKzYyMTk0IDI3ZDMyNDM2MGE2M2UzMTRlMjJhYTJhODEwMGNjYmEzZmYyMzkwNDEgbGVnYWN5LXRydW5rCis2MjE5NSA4NmRhOTI5OGI5MDhiOGM5NzZiODFkYTA5MjExM2JiOWM0MjViZTJiIGxlZ2FjeS10cnVuaworNjIxOTYgZGY3NjE5NTM5NjMxYTI2OGMyZTA2OWEwMjBjZThkYTRlYjI4OGZmYSBweTNrCis2MjE5NyBhOTNkMjkxOWVhNTliZGQ5YTBhMTBkNjQ0NjA3Y2I5YmYxYjIwMDk3IGxlZ2FjeS10cnVuaworNjIxOTggNGJkYmVmNzA5NTE1NWFiY2Y4YjJmOTYwNGFmODc1YzM5OTczZmQwZSBsZWdhY3ktdHJ1bmsKKzYyMTk5IDRlNzI0ODlmMTZkMDUwYWZiNTQ3MzQ3NWQ3M2U4OTE4YWQ0N2YxYzEgbGVnYWN5LXRydW5rCis2MjIwMCAzYWI1NDc0YmRlNDU3Zjg0ZWY1MDdjMzdhOGQyNjQ0MWFiZmYxOTQ5IHB5M2sKKzYyMjAxIDNkOWFkMjdkOTMwYjA3OGUwMTBkMTgwZmE3MzVjOWFiMjllZWIzMDMgcHkzaworNjIyMDMgNTZlNDk5NTJkMWE0ZjYzYmM1Mzk0OTJhMGQ3YjNiZDIwNGJkN2VjZiBweTNrCis2MjIwNCAyZDk1ZjdhOTgzZDgyZDgwZmQ4Y2JhYjRkYjE5OTdjZDQxY2IyMmZiIGxlZ2FjeS10cnVuaworNjIyMDUgMjdkZjNiODEzNTE4MjhkMzc0ZDdjOTEwZjE2OTQ5YzBkMTNmNTIzNCBsZWdhY3ktdHJ1bmsKKzYyMjA3IGMyNjY3MGYxZTUyMGZlZjRmMTgwMjFhYmEyYWRjNjkxNGM3MGZjZmMgbGVnYWN5LXRydW5rCis2MjIwOCAyM2I2NWYyZDc2MjE5ZDI5OWJmMGE1NmEwZTEwZDY2MzllYzRkMDRmIGxlZ2FjeS10cnVuaworNjIyMDkgMGJlNDAwY2JkNWI4YTAyYzZjYTllM2M2MzQ2NmEyMDQxY2ZlOGQzYiBsZWdhY3ktdHJ1bmsKKzYyMjEwIGQ3NmU1OWZiZjA2ZDQxN2M3NTIyZThjNTliZDkxMTYzZjZmODY1MDggbGVnYWN5LXRydW5rCis2MjIxMSBmZDQ3YTkwMDkwNWMyZDZmZjdiYzZjZmJmZWZhYzMxNGFjYzM1YzhiIHB5M2sKKzYyMjEzIDYwY2RiNjcwM2RmMzNlOGJiYjZiODNjYjZmMjYyYmVjMDEyODA3YjUgcHkzaworNjIyMTQgMDlmMzZkNTdjOWQ2MTNhOTNkNDBlYTQwYWI0NjcxYWJmMzk0NmY5OCBsZWdhY3ktdHJ1bmsKKzYyMjE1IGY5YzYxYzk2YTc2OTViMGE4NTFhMGE4MDkxYzRiMDQ4ODI3ZWQyYjYgcmVsZWFzZTI1LW1haW50Cis2MjIxNiBjZDA4MTg0NjM3YzU4YmVmMjRhMGM4MGY5YzgyZGZlMzdjNGY5MjIyIHB5M2sKKzYyMjE3IDg5ZGQxNjJmMTU1YmZjYTllM2Q5MjIxM2QzYzgzMThlMzVhMzg0MDQgcHkzaworNjIyMTggNDU4OWQ4MzFhYTgwYmJlNTE2YjgxODgwYTQ2NWYyMTJhMDkxNjY5OCBweTNrCis2MjIxOSAyMThmMmQ1NWRlNDg4MWFjMWQ1OGFiNzdmNTBkNzA2Mzk1NjAwMzc5IGxlZ2FjeS10cnVuaworNjIyMjAgNDM0ODM0MzIxOTI0ODlkOWM5M2EyZmNjNWQ1NjM4ZDM3YTFlMTlkNyBsZWdhY3ktdHJ1bmsKKzYyMjIxIDYzYTBkMzNjNGNkMzU0OTg2MzY3NjQzNmUzMmE0MjhlYTc0MDEyNDMgbGVnYWN5LXRydW5rCis2MjIyMiAyNzBkNzlmOTAwNzExZWJkNDY0YjExNWQ3MmQxMjJmMTJhYTA0ZjE3IHB5M2sKKzYyMjIzIGUwMjRiNzU1Mjc5NWVjYjllZDY2N2IzOTJlYTlmYWE4NTFlNWFlNWEgbGVnYWN5LXRydW5rCis2MjIyNCA2M2Y5YTg1MjYwOWUzMTg4NmYxMmZmNTBjZDlhMTJkZGM2NzdlNzBhIHB5M2sKKzYyMjI1IGFlNjRmYTFiYzljYmI0YjllNDJmMTBjNGMyZThmMzhjYjM0YTk5MjQgcHkzaworNjIyMjcgNTBmNTE4NGVlZWQ4ZDhhZjExY2YxYzgxODJkNjI2MjQwZDA5MWMwMSBsZWdhY3ktdHJ1bmsKKzYyMjI5IDM4MmQ1ZWExN2Q3OGE0OGQyY2FlYWEwMjYzMzdhNTNhZDE0YjNkZDMgbGVnYWN5LXRydW5rCis2MjIzMCA4NTQzZjhjODFkYTA4OGFkMjdkMmFlZmJlYmIyM2JmMTFkZjc1MTM2IGxlZ2FjeS10cnVuaworNjIyMzEgMWYxNTQ2M2FmOThjMzk0YTMxN2EzZmE3NjczM2Q0MWExNmQ4NmVjMyBsZWdhY3ktdHJ1bmsKKzYyMjMzIDdlYmU4MWIxZTQyMzJhNWE2ZmRlZWI2NjZhYjM4YzRlMjIyZTY4MGYgbGVnYWN5LXRydW5rCis2MjIzNCBkOTE3ZGEyYjE5NDZlMTJjNDZmNTIzMjZhOGU2N2EzZjVhNTE5MDMzIGxlZ2FjeS10cnVuaworNjIyMzUgMjdjNzEzOWE5OGVmN2U5ZTZkMTFjNDQ3NDk4YmUxOTMyODQ0NzhhOSBsZWdhY3ktdHJ1bmsKKzYyMjM2IDA0OThlYmI2YzQxYjgzMDk4MjYxODE2MzlhY2I5YmU5ZGIzNzE0MmIgcmVsZWFzZTI1LW1haW50Cis2MjIzNyA3ZmQyNzRhNThkNWMxZTBlYzVlYjg3ZTcxYzFlOWNlMmM5N2FiMzViIGxlZ2FjeS10cnVuaworNjIyMzggYWJkYzgxZTFjYjViYTY1NWJkYmMyZDQxMmVkYmM5ZTBiYWVhMmE1YyBsZWdhY3ktdHJ1bmsKKzYyMjM5IGFmNGM0NmJmM2QwOTcyYjc0NTcwMGVkMDQzZjE3NTRhNzJjNDM0OTkgbGVnYWN5LXRydW5rCis2MjI0MCA2MDg4NWY4ZTg1NzVjZTZlNGY2ZGE2MDkzMDA0NTRlMjQ4OTlmMzBmIHB5M2sKKzYyMjQxIGFmYzYyMWExYmM0MTkwMzk4ZmRkNDRiYjA4ZjZlN2VhNWYwNmMyMjQgcHkzaworNjIyNDIgMmU5MTdiMGM4ZjZlODkyYmM0ZGI4YTFmZGE1ZTZmYmZiY2RjZjI0YSBweTNrCis2MjI0NiBiM2NkMDMzOWNhNzdlOTc5MTg5OGNmMTZjMmQ4NzlkYWRiZjUzOThkIGxlZ2FjeS10cnVuaworNjIyNDcgMmM0NTUzZjY1OTI0MzUxNmI4NzEwYzAyZDkzMGIzYmUxMDA3ZDg1NCBsZWdhY3ktdHJ1bmsKKzYyMjQ4IGJlN2IwZWI1OTkwYzZiNjFhOTY0MjhhMTc4NGU2NGMyOTYyMWNhZGYgcmVsZWFzZTI1LW1haW50Cis2MjI0OSBhZmYzODM5ZDAzOTQxYWQ0NWFkN2MxYzQ5ZWQ4ZTMxNGJhMThhZGFmIGxlZ2FjeS10cnVuaworNjIyNTEgNWE1NjkyZTNjOWJlMjI5NTQ3MWE2NmU4NGI0ZmNhNDg4YmQ1ZWJmZSBweTNrCis2MjI1MiBmZjM0ZWYwYTgwOTY0OGNkYzNlMDliNTQ2OTc3MGU5YWE5OTMwNTUzIHB5M2sKKzYyMjUzIDE4ZGI4YzRkNDQ4N2FlNjlhM2RlZWUwYWZjNjVmYzU4NDIxMjc3NjcgcHkzaworNjIyNTQgZWZhOWNjM2JkN2YzZWJhNjhmYTc4ZTQ5ZGMyYjExYjZhZTA1OTVlOCBweTNrCis2MjI1NSAxMWIxOGRkMTU5MDNlYjljM2JhNjczMjAxNTM4Zjc1MTE5ODJjN2VlIGxlZ2FjeS10cnVuaworNjIyNTggZDhiNzcxYmUyMWRmNDQ5OWEyNGIwOWU1YTZiMzVkNWJiZTZjZjc0YyBweTNrCis2MjI1OSAzNjAzMjY3NjcyODgwYTQxYzVhODk3ZmEwM2I5ZWQyZDc1NDM3NzQyIGxlZ2FjeS10cnVuaworNjIyNjAgY2UzMTg3NDYyMDExZjY4Mzg2Y2I1MGViOTk5NGVmN2Q1ZDNkZjI3ZCBsZWdhY3ktdHJ1bmsKKzYyMjYxIDBiNTU4NzVjMWM5YzFkNjYwZjczMWEzMjk1OWE5MTZlOWUzNWY3MzAgbGVnYWN5LXRydW5rCis2MjI2MiBjZDRiMWYzZmQxYTk3NDA3NTAyNjQzYjMwNGYxZWE4ZmY1ZmE4MmM3IHJlbGVhc2UyNS1tYWludAorNjIyNjMgODQyYTZjMmM5YmNkMmE3MzBjY2M0NTdmMjFmNmIyY2Y1ZjRjZDQ1YiBsZWdhY3ktdHJ1bmsKKzYyMjY0IDIyODdhNGFiMjRkODc2MTE5ODhmNTE2YjRhYzVmMjVjMWZlODBmNWEgcHkzaworNjIyNjUgM2NlN2M3OTZiY2ExMjQ5NWJjYTA3YjdmY2NiZWE2MGRhNGJjMGFhMSBweTNrCis2MjI2NiA4ZDU1NTg1MGY3M2Q5NjhmZDY3Y2IyYmE2Y2ExNWY5MjcxNzRlN2IyIGxlZ2FjeS10cnVuaworNjIyNjkgN2M5OWNlZGMzZTU0YTVlZmJmOGRiM2E0MDM0NDk1NzEzYzgyNzZhYSBweTNrCis2MjI3MCA1ZTU1ZDQyNzVhMDk0MTBkMjk2Yjc3MWIwNmZjOTQ2NmU5ZmE1ZjBjIHB5M2sKKzYyMjcxIDFhYWFiMzIxODNmMjI3NDU4NTk2YWUwM2Y5YWQ5Y2JjNmZmY2MwZjcgbGVnYWN5LXRydW5rCis2MjI3MiAwNDEwZmY4MThlYzc4ZWYxYjIyNDBiM2EyN2UwMDkyZWNkYmQ1ODkxIHJlbGVhc2UyNS1tYWludAorNjIyNzMgNjQ1YzUzNWY4MjIzMjZlYjc3MDE4Njc2M2YwNzdkZDJjNjk2MzgyMSBweTNrCis2MjI3NSA4NDE2Y2RkMTFjMTE3MjE4MDJlOWQyNzU2NzE1NDc0MTg0YmNhZGU0IHB5M2sKKzYyMjc2IDYxOTY1MjlhZmQ3Mzg0NzVmNTliZjBiNzdkYWY1MTIxNWQ3YTMyOTEgcHkzaworNjIyNzcgMjlhN2JlYzYxMGNiZjIzOWNlOWQ4NWUyMDQ0ZjNiOTFhYzQ0Yjc1NiBsZWdhY3ktdHJ1bmsKKzYyMjc4IDQ1ZmRhZTRjZGI1NTdmMmE2Yzg1MGRlODk1MjEyNzU2Zjk5Mjk3OTggbGVnYWN5LXRydW5rCis2MjI3OSBkZGNlN2M5NDIxZDJlOTZmZDU1YTZlOWNkZWEyMjU1MGY5Y2U1YTAzIGxlZ2FjeS10cnVuaworNjIyODAgYWZhYzNmZjYwYzZjNWMxMDg4MTQ3M2NhMzYzNWMzMjNmNjE5ZGViYyBweTNrCis2MjI4MSAwOTRhOWNlNGI5YmQ0ZmRkZjNhYmY5NDZmMzg0N2U0NWIyYjdiMDRiIHJlbGVhc2UyNS1tYWludAorNjIyODQgOTc5NzRkOTY3MTI3MGI3ODdlOWFjMjQ4NmMxNTZkODRhYmY0NTYxZCByZWxlYXNlMjUtbWFpbnQKKzYyMjg5IGJjMzM3NzBjYTExNDhjNjAyOWIyNzQ5NDRmODA0YmE4Y2RlNzZkYmEgbGVnYWN5LXRydW5rCis2MjI5MCBhMjQ4NTZiYTc3ZmVkMzRjYWQ1MjU5OGExMzkzYzMzNWYzYWU3MDcyIGxlZ2FjeS10cnVuaworNjIyOTEgMzM2MWI5OGZmNGZmOGNlOGY3OWZkNzJlM2I5NTgxZjhlMjQxZTdhYyBweTNrCis2MjI5MiAzNjUzZmJkZDQ0ODM5YmJhMTA4NjA3NjBkZmMyNDQzOWJhY2JkOTY4IHB5M2sKKzYyMjkzIGMxZmEyZTc1OGUwNWI1YTRiMDdiYjY2NDVmZDI2YzI1NGI2NjFmNDQgbGVnYWN5LXRydW5rCis2MjI5NCA5NDc4MmJlOGYxZTc3YjU4YmY4Yzk1ZWRhNGU1YWRjNmQzN2U5MGZjIGxlZ2FjeS10cnVuaworNjIyOTUgZmUyNzUxYWNhZDNlMTNhNWNiYWZjMDQzZmY0NTAzMjFiMWFlOWU0OSBsZWdhY3ktdHJ1bmsKKzYyMjk2IGNhMjMzYmU2NDU5ODljYWRmZjQ0NjZkMTI1NjExNDU2NWU2MTlkOTQgbGVnYWN5LXRydW5rCis2MjI5NyBkNDZmNmViMDllYmNmYjg2NjRhZGI4OWE3MDk2MzE5YTBhNmM2OWUyIGxlZ2FjeS10cnVuaworNjIyOTggNzY0YWFiMGU4YjliMWU0NmEzNGUyOTFiNzNiYmI4NzAwMWExZDY4MyBsZWdhY3ktdHJ1bmsKKzYyMzAxIDhiOTE0ZmNlOWQ4NGMwODRkYTQ5OTZlMDQ4NDk4YWEyYzA5NTNjMjUgcHkzaworNjIzMDIgMmE5ODU4MjU1ZGUxMDg3M2U4OThiMzkwODczZTg0MDNmOGJlODZmMSBsZWdhY3ktdHJ1bmsKKzYyMzAzIDg0MDA2NDgwMjk1MmIzNzhlODFmNDYyN2EwMTc1YzZmODJkY2VhNjcgbGVnYWN5LXRydW5rCis2MjMwNCBmNzgxY2ExNDM5NWIwNjU3ZjJhYWU2MTllNTYxNmYyY2FkYjUyOGY3IGxlZ2FjeS10cnVuaworNjIzMDUgMzllYTJmYzQ1MDNkMTIzMTc5NWE3Y2NhNWQ3NGFlYjEzNDk1M2IyMyBsZWdhY3ktdHJ1bmsKKzYyMzA2IDgzZTY5NzVjMzE5OTg0NDE3YWIxZjJjZWUxODMzYWIyY2EyN2MzZDAgbGVnYWN5LXRydW5rCis2MjMwNyAzMzA3YTU0NTBjMzc5YTY5MWEyZTg5YTZkMWVhYTk5ZTMzNDY4YzcyIHB5M2sKKzYyMzA4IDM2ZDBhMWUwYzAyNGJhOWQwMDc2YjU4ZDFjMWI3MjNmOTI1Mjg4ZDQgbGVnYWN5LXRydW5rCis2MjMwOSBiNTQ0YmI2MWJjYTljYWJkMDMzNzhmOGNjN2I1NzIyZDVhODFiYjYyIGxlZ2FjeS10cnVuaworNjIzMTAgOWFkMzBjY2NlNDljMTgxY2RlMzliYzFmNTMwMmZhODIxY2VlNmVkOSBsZWdhY3ktdHJ1bmsKKzYyMzExIDAyMzQzZWNhZjBiYjAwODk3OWRmZWFhMjU0NGEzMDMxZmIwOTA3NzMgbGVnYWN5LXRydW5rCis2MjMxMiBlMGMzYWNiMTE2YTU1NGMxMGU2Mjk3ZWMyMjg5ZWUwN2E2OGE4ODJkIHB5M2sKKzYyMzEzIDhmMmI2NWVjN2JiYWI3OGI5ZDQwZTQ4NGEyZmRiNThiODNiYWRjMjQgbGVnYWN5LXRydW5rCis2MjMxNCAyOTIzMWE5NzM1ODBlYTg0ZDNlZTFiZmRmMGVlOTI4OGM1NmVhZDE3IGxlZ2FjeS10cnVuaworNjIzMTUgZmMzM2U3NWI5MjU3MGRjM2YxMmY0MTNjNDY0YzczMDA4YjE5ZDcyZCBsZWdhY3ktdHJ1bmsKKzYyMzE5IDdhNWE1ODBiYTZlYTIzYmE5ODA2MDBjNDcxYTE1ZDAxODE3MWRlM2YgbGVnYWN5LXRydW5rCis2MjMyMCAwNTI4Mjc5MDA3ODI2ZDdmODg0MmJmNjdkZGY2ZWVlMjRhNTE1YmE4IGxlZ2FjeS10cnVuaworNjIzMjEgODVmMGUxYWMwYmM5YjJiMTA2YjA0NTczMDhhMDUwODM3YjJlNTY5YyBsZWdhY3ktdHJ1bmsKKzYyMzIyIDQ3ZDliYmUxMDg5NzIwY2QxZTNkMzcwNzRlYTUzYmZjYzA5ZTJlMTMgcHkzaworNjIzMjMgMDI4ZDg2MjU0MDliMjIyZGFkN2NkYjY5YTAyZmQ2OWY3YTY1ZmFkOCBsZWdhY3ktdHJ1bmsKKzYyMzI0IDRhZmRjNjhlYTUyZWE1OGM2NTdmNWQ0NTBlNzc0NzBhNTlhOWIzMzQgbGVnYWN5LXRydW5rCis2MjMyOSA2OTUyZTcxODFmZmM4OGY4YmY5MTZkOTcyMzlmNWE4ZDc0MjQxZjdjIGxlZ2FjeS10cnVuaworNjIzMzAgYjQyMGVhYmY5ODM1NDU5NzQzMGFkODdiY2Q4NzI5ZDU3MDBjNDJmMCBsZWdhY3ktdHJ1bmsKKzYyMzMxIDdjMjFjYzE0Yjk0ZjVhNjRkMjg2YTNkY2M1YWI3NDg0MmZlMTRmMTEgbGVnYWN5LXRydW5rCis2MjMzMiAwM2Q5YzY2NGE3YmM4NzA1ZmQ1Y2U2ZmZhOGJmZWU1YTA0NGMzMmNjIGxlZ2FjeS10cnVuaworNjIzMzMgNDBmZGQ1Y2QyZWY1MWQ2MTY4ZDA3NjI4MjVmMjdmZWNkMmI0YTBjYyBweTNrCis2MjMzNCBmYjA4MTAyNWIyMjMwYmQ3ZDQ4ZjFlMTMzOTRlMDI1YzdlNGQ1YjU2IGxlZ2FjeS10cnVuaworNjIzMzUgNDY4NzllN2ZjNGQzMzU0YmVmMWRkNjA4OWQ0MGEyN2M0Nzg0MzYwMyBweTNrCis2MjMzNiBjNzQ0MjM1MTAzNjE4MDcxZDYwODhiZjNiN2Q0YzUyMjg5ZmJhNzY1IHB5M2sKKzYyMzM3IDcyYTc2NDg2OTlkMDgzODk5ZDIzNjkyZjFiNmU0NTliMTQ3NjIyOGYgcHkzaworNjIzMzggYjNkY2E4ZjU1MzVlYzIyMWY1MGY4YjEzODcwZDg3ZTczMWQ5MmVjYiBsZWdhY3ktdHJ1bmsKKzYyMzM5IDYxNDg3YmU2ZjQ0MjkyZGQzOGQ1Y2ViMjMzNDMwN2RmOTlkNzYwY2EgcHkzaworNjIzNDAgOGRkMjQ3NDFiNmFhZjBiNjI0M2JiNjdjODgwMTMyMjQ4MWJlZTkyNiBsZWdhY3ktdHJ1bmsKKzYyMzQxIDZlNGNhOWY3MmJiYTZkZGIyZDA2ZThkNzgwYTVhYzk4MjhlZmU3MzIgbGVnYWN5LXRydW5rCis2MjM0MiAwZmVkZTRkMWIxNGJhMmE1M2IxMjcyMTlhZmNmMmZlZGEzZGQ1OGZkIHB5M2sKKzYyMzQzIGFkMTcwYTMzNTk2N2JhYjIxN2FkMDNiNTA5ODViZWMwYzBhYjBkMDIgcHkzaworNjIzNDQgNTk3NTNiZGNlMDg5ODQ5Y2UxY2Q3Y2E5YmJlNzhlOGQ4OTFlMDIzMyBweTNrCis2MjM0NSAyNDIwNWIxZjk1NGVmNzVlNjIzMmQ3YjY4NjJhYTc5NDczYmZjYTM4IGxlZ2FjeS10cnVuaworNjIzNDYgOTliZmI4ZGUzNGIxZjZkMDE2MTM2YWViZTA4OGQ3N2U0Y2FmOTFhMCBweTNrCis2MjM0NyBlYWIxNTM5OGVlZjAwYWNiNjllODBiM2VlMTUyZGQxYzExY2RjNjkxIGxlZ2FjeS10cnVuaworNjIzNDggOTFiMDk5YTdmM2UyMmI4M2VhODIwMzRmODRmMmY2ZTZhMjhkNjQwZSBsZWdhY3ktdHJ1bmsKKzYyMzQ5IDk4MWRmMTNhYWIyMDA4YzExNGY0NTE4NTc0ZWZiYmMzODZmZjVkZGIgcHkzaworNjIzNTAgMTg0MWY5MmUzMGRlZjBhNWIzMTI3ZjVhYTFmYjBhMDNkM2U3MmYzNCBsZWdhY3ktdHJ1bmsKKzYyMzUxIGVmMDZlZDgwNDkxOGExYTQwMzIxY2FkZmJkMzM5Yzg5ZGJlZTk4MzAgbGVnYWN5LXRydW5rCis2MjM1MiBjZTU1OTdhZjk5YzdkOTVjYmY1YjE5YWNmNWQwMDczNGFjMjliNjkyIGxlZ2FjeS10cnVuaworNjIzNTMgM2UwOTVhYjc1ZmM4OWFlZDAyZjBjNGQ1Yzc5Y2Y4NzhhNDdlMDY2MiBsZWdhY3ktdHJ1bmsKKzYyMzU0IDE5ZmQ0NjNlYTcyOGU0MGU4NmY2ODc4YmNjMjU1ZjBkMDZkMDk0ZDUgbGVnYWN5LXRydW5rCis2MjM1NSAzOGM4MzFiNDdkYzViYjQzMWNjMDgyZTQ5NTQwM2Q3MzU5NGJjZjVkIGxlZ2FjeS10cnVuaworNjIzNTYgYjA0ZjIwNTJlODEyNjI5NjFkMmIzZDdmN2U1MTUwMTk5MDg2YjA2YiBweTNrCis2MjM1OCBiNzIzMTA2OTAxZTBjZjBmM2M0NDNiMWUxYmVmM2FhOGU3MmQ1MDc1IGxlZ2FjeS10cnVuaworNjIzNTkgOWYzY2ExOTE2MmE3MzhhNjIwYzYwMjc2MWE2MWNiZjAxZDJlYTJmNiBsZWdhY3ktdHJ1bmsKKzYyMzYwIDQ4Mjg5NjQ1Y2RlZjc3ZmZkZWI1NmNiYmIzZWIwYmNiZmI2NjE1YWEgcHkzaworNjIzNjQgMWM5YmE0MDExZjVkZDg1YmRkZWEzY2Y3ODVkODRjNmIzMWE2OWNhZiBsZWdhY3ktdHJ1bmsKKzYyMzY1IDA3ZDdlNWNkYzFhMDEwY2Y5MWEyNDE3MDg5ODA4NzUxNTQ0NTY1MWUgbGVnYWN5LXRydW5rCis2MjM3MCBiYzk2YmFjNTg2YjRjMjFmYzJiMTJlMmJmMmJjY2YwMTY4MzFlZmQ3IGxlZ2FjeS10cnVuaworNjIzNzIgMWZlZjI2Zjg5YmNlYTE4NmE1NDMyMjAyZDlmMGY2ZTc0ZDIxOTdhNSBsZWdhY3ktdHJ1bmsKKzYyMzczIDdjZDM2M2RmN2E4NDZjZDE4MjUwNGFmZGU4MGI1ODg4MzJiNTgyMWYgbGVnYWN5LXRydW5rCis2MjM3NCA1MDI0YjEyYTAzOWQxYzdkZTFhMGIyM2U3OGIxNDdiNDgxOGIwNDA5IGxlZ2FjeS10cnVuaworNjIzNzUgODkxOGM1MWRlMDEwOGFjZWM3MTEzYzY1ODE5YTM5MWM2NDNiMGVkNyBsZWdhY3ktdHJ1bmsKKzYyMzc4IDRmODI2MWI5MmZjNTYwZGVkNDMwNmVhYWVlNjUxY2NhNTZkZTgxYjkgbGVnYWN5LXRydW5rCis2MjM3OSBmYjhkM2UxZjYxNjEyZDQ0ZWZmMTNkYjA2MDEyNzMwMTViMTE0NjA1IGxlZ2FjeS10cnVuaworNjIzODAgNWJjN2IyMGRjMDRhOWQyNDlhODIzMzk0NTc2NDE1ZGE3ZmU4OGE5MCBsZWdhY3ktdHJ1bmsKKzYyMzgxIDVjNDMxNTlmNWFkMGIwNjU5OWI2YjdhMzliZWNjOWViYzAwYzZiY2QgbGVnYWN5LXRydW5rCis2MjM4MiA3NzljYWExZTBmZmIyZTBjODJlMWU3M2NlN2YxNDRkMjljMjNjMjIxIGxlZ2FjeS10cnVuaworNjIzODMgYTE5OTczOTlmODcyNGM0YWEzMzU0NTU4NWQwZWQ3MzE3ZTA5M2JhMyBsZWdhY3ktdHJ1bmsKKzYyMzg0IGI2OWY0NDNlZjQ4MDcxNzljYjExYjZiNTJlYjM2NTMzOTg5OGYyODIgcHkzaworNjIzODUgYmViN2FiY2Q2YzAxYTU0M2RhZGY2ZjgyNThkZmY1ZmI3YmRlMmU2OCBweTNrCis2MjM4NiBlMTY1OTNkYTQ4OTg5YzcwM2RhZTY3MzZhODBmZWQ1OGUyZmEwMGQ0IGxlZ2FjeS10cnVuaworNjIzODcgZTAyOWQ3YzdkZTgxMTQ0MTMzZmU4YTg5OTA1MDlhYzc3ZGI2NGM4NyBsZWdhY3ktdHJ1bmsKKzYyMzg5IDk3YzIxNDE3YWY0MGFkN2IyNzY2N2U1NDI5ODIzMGJlNGZhMGI3MDUgbGVnYWN5LXRydW5rCis2MjM5MCBiMWM3MGM4OWMzZGE2YzM5YzExMzJlZTEzMDZkNjg4NDdiMjcyNDQyIGxlZ2FjeS10cnVuaworNjIzOTEgMzc0ODMzZGU1NzBjMjQxYmUwNjM0ZmUxNGJlNDkyZjUwMmY2Mjk1MCBsZWdhY3ktdHJ1bmsKKzYyMzkyIDEwZGEyNzk4ZTU4ZDgzNjQxY2IwMzIyYzU3ZTAzODgzZTEwN2YyYWQgbGVnYWN5LXRydW5rCis2MjM5MyA0ZjcxODA2MWY0NWE0NDE4N2M1MjBiMmM2MDZiNDZmYWYxYzQxNTZlIGxlZ2FjeS10cnVuaworNjIzOTYgODJkODVhMDU5MjNiZjM5ODQ2YTQ1MTZiMTYwMjBmMGQwZTU3NTBiNyBsZWdhY3ktdHJ1bmsKKzYyMzk3IGQwZmE0NWU2MzdhMDUwMDE5MGNkM2RmYjNlODdlZWRiZDU0ODhmZDQgcHkzaworNjIzOTggYzM2NTljZTg5M2U3ZThiYmViYjkyN2ZiYWZiMDg3Mjc5MDZiOGM5OCBsZWdhY3ktdHJ1bmsKKzYyMzk5IDY0NGE2NzgzMDA2MWJhMzViNGY4YWZmYjhhMmI2NDUyMTJmZTRmMWYgcHkzaworNjI0MDAgNjQ4YjRkMDFjY2NmNTk1NTgxNTU1NjViM2IzYzRmYjlhY2RlYmNjYSBsZWdhY3ktdHJ1bmsKKzYyNDAxIDEwMjM2ZDFkMDg2MDc2N2E0OWE4ZWUxNGIxY2E1Mjk0YjNjOWViZWMgbGVnYWN5LXRydW5rCis2MjQwMiBkYTRhODdkNjNiMGVlMzAwYjIwMWRhMDJmZTE0MGFlMTJmYzhkNThlIGxlZ2FjeS10cnVuaworNjI0MDUgMzg1ZTIxOGQwZjZjNWFlNWIzZmY3Y2M3M2I4MDQzMTc2NTNmYTNiZCBweTNrCis2MjQwNyBmZjU4Y2I1YWE3NmRhNjAwOWNjZDhlMjFlNmEyNjkzZjBmNDM5NmRiIGxlZ2FjeS10cnVuaworNjI0MDkgZjY0MWU1MDVmZmY0NmUxNzY1YTZkMTBmMjM1MDIxMzNjYWQ0MWQ3NCBsZWdhY3ktdHJ1bmsKKzYyNDEwIDM1YmY4MDEyYTM3NmU2M2QxNWE5MTNlNjM4MjllMDdhYmYwMDkwMTEgbGVnYWN5LXRydW5rCis2MjQxMSBkMTY2MjUxZDgwMTQ0OTE2Nzc3NzI5ODllY2VjNjdlNzk2ODNmYTI0IHB5M2sKKzYyNDEyIDMxZmY1OWQ5ODRiZGUyYzhlN2Y4M2ZmNTY3MjBmNjU0MzdhMjAxMDEgbGVnYWN5LXRydW5rCis2MjQxMyA4MGIxNjU5NWU0NjI2Y2M4NGI5Mjc3ZjAwYTcwZDBmY2Q5MmVkOGE4IGxlZ2FjeS10cnVuaworNjI0MTQgYTIwZGVmMDEwMWRlMjY5ZTFhZGFkZDQ5ZTFiZWQwMTAzYzQyMTZhMiBsZWdhY3ktdHJ1bmsKKzYyNDE4IGYzY2YxMmJkMTExMjg0NmQwYWE0MTUxMmQwODliZTMwNzQwZTEwN2EgbGVnYWN5LXRydW5rCis2MjQxOSA3MzczMmQ2NmQwZDVmN2I1NzM1MzI1NmZhZjk3YTllMGJhNzQyNzA3IGxlZ2FjeS10cnVuaworNjI0MjAgYzc4Y2ZlMjEyNmRhMTg0NjEzNjg2YzE2ZTVkNzIwNGRhZDU5MTk1NiBsZWdhY3ktdHJ1bmsKKzYyNDIxIDYwZjQ0NTZmYTMzODNlMDc4M2MxNDE0NTFlMmYzNmI3MDZiMzFlMzQgbGVnYWN5LXRydW5rCis2MjQyMiA2Mzk2NTMyN2IzZWY2NWYxYmM3OWYxOWQxODQxN2M5MjA3OTM5NzIwIHB5M2sKKzYyNDIzIDYzMjNiZGMyZDY3MTFmYmYyYWQ1Y2NkNzFjZmVlYzk0ZWQxYjc3ZWUgbGVnYWN5LXRydW5rCis2MjQyNCAwMjIyOTYwMzJkOGY2OTY0YTBmZDVjMjEzNjZlNzlkMWRjZGNiMjBiIGxlZ2FjeS10cnVuaworNjI0MjUgZmRkNWEwMTk4NzY5ZDMwNzVhOTM2ZThlODNhNzIxMmM5Y2M2M2ZjMyBsZWdhY3ktdHJ1bmsKKzYyNDI2IDA1MmZkOGYxY2EzNzFjNjg3MzM4MTAxZTY1OTg0NWNhYjhjYWU2ZjQgbGVnYWN5LXRydW5rCis2MjQyNyA0MDZlY2EyZGRiYmM0Zjg5ZjZmYWFjM2IzNDQ3ZDI3YWQzODljMGE5IGxlZ2FjeS10cnVuaworNjI0MjggZGYxM2NjYWE1YWU5N2MwMWQ4Njc5NzU0ODg1MTlkZDg4NDA2MDJjZSBsZWdhY3ktdHJ1bmsKKzYyNDI5IDYwNzc2MDYzMzliYjlmZDAyMjA5OTcwZWFkZWU4NmE2NGNlODM1MjggbGVnYWN5LXRydW5rCis2MjQzMCBkM2FmOWZkMWNmYWZmNjc2ODY1ZWI4YzZhNDU1N2EzYWQ4ZDJjOGI1IHB5M2sKKzYyNDMxIGQwYjhhOTBjYTI3MDlmNWZlOTNiMDg4YTk4NDkyZjJmYmQ2ZGRiODMgbGVnYWN5LXRydW5rCis2MjQzMiBiYjBmNThhZGM5MWNlMDcyMGYwOTM2ZDU5Y2ViZTNhYTFkMDk1YzIyIHB5M2sKKzYyNDMzIGVjNDg0OTBiOTY5YWJkZWIzOGIwNmUyNDk5MmQxMWU2NWYxZDRlYWMgcHkzaworNjI0MzQgMzg3NDljMDljNTU2MzUwMWQwNTExOGZmZDM1MWJhY2Q3MzJiMjljMyBsZWdhY3ktdHJ1bmsKKzYyNDM1IGFlNTU0ZTVkNmUwNmRiMzBmYTU2OTNhYmM3YmI0ZDk3MzQzMDEzMjQgbGVnYWN5LXRydW5rCis2MjQzNiBmNTE5NTNjY2U2YWIxOWM2MzIzNjA3NGJjNGEyODM5M2VlNWIyYTIwIGxlZ2FjeS10cnVuaworNjI0MzcgOThlMDcyZjIyYzRmM2Q2MjhmMTE2NDhjMGI3M2U0OTM4MGMzNTNkZCBweTNrCis2MjQ0MSAxYWNkMDBmMmEzODA3Y2JhNjAxZDg1Yjc4OWJlNWZlMmNkMWI0NjMxIGxlZ2FjeS10cnVuaworNjI0NDQgYjdkZjMwYWM1YjVhMjYwODg3NWYxNDM1OTc4MjljZDAzNDE0ZjAwMyBsZWdhY3ktdHJ1bmsKKzYyNDQ2IDA0OTI4NDcwYWQ4NjA5YTk4NDczZDIxMmRhYjg5YWFmYWRmNDI4NDYgbGVnYWN5LXRydW5rCis2MjQ0NyBiYWUyZjRmZWVmY2NjYWNhYWRhMTU5ZDBhMjk2OTVmMWY2ZTAwMTVlIGxlZ2FjeS10cnVuaworNjI0NDggYzQ0YjhjYTNmNGQyOTU4Y2E4NmJmMjNiYTcyN2QwYjVmOWMzZmZhMCBsZWdhY3ktdHJ1bmsKKzYyNDQ5IGIxMjU4MzY0MzEyOGVhY2Y4NTQ3NDg3YTM1MzNiMzM5ZDBjM2YyMzAgcmVsZWFzZTI1LW1haW50Cis2MjQ1MCA0MzRiY2NlY2E3ZGYwODkwZTQyZTJjNzYyYjExODA5YWI4MTRmMTBmIGxlZ2FjeS10cnVuaworNjI0NTEgMTA4ZmU1N2I5YTY4ZTFlOTc4ZjhkZmE3NjE5OWFiMmMwNGI4MGRlZCBsZWdhY3ktdHJ1bmsKKzYyNDUyIDJmMDA2NTQ0ODg4M2FiYzU5ZjVhMmZmZTU5MjQ0NzdjYTk4OGU1M2QgbGVnYWN5LXRydW5rCis2MjQ1MyAwOTQxZDc5ZWE3ZDZlZmI2M2UwZGQyNTc3YzUyYWNjZWFkZjdlODM3IGxlZ2FjeS10cnVuaworNjI0NTQgODhhOGRlZjU4MDA3NzdhZTFkNzdlMGIyMzRhMzc5YjQ2N2YyMzRjYiBsZWdhY3ktdHJ1bmsKKzYyNDU1IDY0MmQ1NzEyMDkzYjgwYjA4ZTRiZDIwOGZhYWU4ZjJiMTkwNDg0NTYgbGVnYWN5LXRydW5rCis2MjQ1NiA2NmI3OTkzMDY4YmRhMzFlZTcyMzkxMmNjYjYzZjc4NjI4M2Q5ODcyIHRsZWUtYXN0LW9wdGltaXplCis2MjQ1NyBmYjNjYjA0MTk1ZTBmODIyYjA3M2RmNzU1Y2FiY2Q2OTJkNDgxYmU2IHRsZWUtYXN0LW9wdGltaXplCis2MjQ1OCAxNDQwM2E1NDI1OGZjNGU4OTU5NWY2YzNkZTFhYWMxODAyMGU5YWQxIHRsZWUtYXN0LW9wdGltaXplCis2MjQ1OSAwYzU4MjRiMDAyNjMzYmE0NjE1ODAzMjYyNzVlNGQzYjljNDZiOGJkIHRsZWUtYXN0LW9wdGltaXplCis2MjQ2MCBkN2ZlZmIzNWU5OTNmZmM5NDc0MmIwOWQ5YTdlODc2MzFlN2IwMGUxIHRsZWUtYXN0LW9wdGltaXplCis2MjQ2MiBjMGNkYWNmMDdmNTQwZDkyYzhlYzAzZGIyOThkOTliZWMyYmU5YTdkIHB5M2sKKzYyNDYzIGZlZDcyZmE5NjdiZjVhNGEzMWQ2NzI2YTA4ZmE4NDVmMzM0ZjNkZjMgbGVnYWN5LXRydW5rCis2MjQ2NCBhNzQ2NTQzNTIzNjZlZjM4NGY4MTE4MzI0MTU0MDRiYjU4NDY4OTcyIHJlbGVhc2UyNS1tYWludAorNjI0NjUgOThkY2FkOTA5MmE4ODllZjQ3YTkxNGYzZDU5MjQ0ZGZhNjJlYTIzNyBsZWdhY3ktdHJ1bmsKKzYyNDY2IGM5ZGU2NzA1YmQxMTI5NzVhNWEyYWIyNGE5Yjg5ZTM4ZWVkOGMzMTEgbGVnYWN5LXRydW5rCis2MjQ2NyAyZTFlYTYxYzk0Y2M3ZjE3MjhlODllMmFiZjNmMTdjNzhiY2E1OTJlIHRsZWUtYXN0LW9wdGltaXplCis2MjQ2OCBlZDI2N2M2OTg5YjZjY2I0NmM1NTg4Y2FhNzUyNzI2OTcyOTkwN2VjIHRsZWUtYXN0LW9wdGltaXplCis2MjQ2OSAzYzZhMjVlNGRiYjVmMGY5NjNiYjFhNjk4OGNmYTJjNTIyZjZiNzk2IGxlZ2FjeS10cnVuaworNjI0NzEgMDdjZjI4NDgwYWQxZWM4MzYyYWM1MDJkOTlkMGQxMGUzNzE4NmE2ZSBweTNrCis2MjQ3MiAzZTliNGZhOTNlNWM0MjkxYzZmMjg1YmUwYmQxZTcwNGUxMTZiZDRmIHB5M2sKKzYyNDc0IDYyMWEyZWFjYzI3YzQ4OTkzYzYyMjgzZDBhYzYzZTcwZmVhMWQ3MmQgbGVnYWN5LXRydW5rCis2MjQ3NiA1ZTYzNmM5ZDYxYWU1NzVjZDZhNDVlODE1MzQ0NDczM2NkODE1YWY0IGxlZ2FjeS10cnVuaworNjI0NzcgYTAyMjU2MDBiZmYxNDk2ODhhNWIwZTJiNTJmNzlmNTQzMTU2ZTUzZiBsZWdhY3ktdHJ1bmsKKzYyNDc4IDNlOGEwM2E2NDk3ZTE3MTQxZDNkNmJiZjE2NDY5MTVhZWU2MWU4OTIgbGVnYWN5LXRydW5rCis2MjQ4MCA0NTkwODNjNmJlMTUzZWJiNWZkYTZhMDM2ZmNiNmViYzQ1NzA4OTkwIGxlZ2FjeS10cnVuaworNjI0ODEgNGZmOGRmYWVjM2ZjNmRiOTQzYzc5Y2U2M2NiNGY0ZjhhYjcyZmQ2YSBsZWdhY3ktdHJ1bmsKKzYyNDgyIGE1MWIzMjkyNDViMTQ0ZGFiZjhhZDgxM2RhNjk0YWMyMTU5ZmE2MDQgcHkzaworNjI0ODMgODVkNDY3MTU2NWM4NzQ5Y2Q1YmZkMzhiNWNlZDY4YjdmMGI1Y2JjNSBweTNrCis2MjQ4NCA5MGUyMTQ2Y2I4YTMwOGEzMDEyZTczODAxNTdjYWMxMTgyOTRhYTM1IHB5M2sKKzYyNDg1IDk1OTQ3ZmRmNDBhZTQ4YWVkMGZlZmEzOGQ0YWZhNGUwZGU4MjUyZmUgbGVnYWN5LXRydW5rCis2MjQ4NiBkMWZiNDlhZWM3NjUxMDQ0YzllODBlNjIwMGM0NDA1ODNiYjU0YmZlIGxlZ2FjeS10cnVuaworNjI0ODcgODg2NGRmYTk5Yzc2MDJjZThmMjk5MWFhNTVhNTA1MjBkNTgxYzEzOSBsZWdhY3ktdHJ1bmsKKzYyNDg4IDM1MTE5YjAzNjg2ZDJkNDlmMzFjNDQyMzM4YjE5Y2QwODFhOTcxODYgcHkzaworNjI0ODkgMWNmM2IzNGRmNmM2MGVjMGQwNDA4MTg3YTY2ODEyZjBkMjhkODkzYSBweTNrCis2MjQ5MCA2NmM4YmQxYmVkZjMyMzJkZjBlNGEyZDJiOWYwMGUxM2M4NGQwNjUzIGxlZ2FjeS10cnVuaworNjI0OTEgOGI3MThmYzE1ZjNkNmI1MjMxNjJhZDJlODA1ZjQyMWMyYTA1MzlkYiBweTNrCis2MjQ5MiA1YmE2Y2JiY2FlZTczNjQ1M2M5YWJlMWI5YTA5Y2M4YmMyZDQ4NjA3IGxlZ2FjeS10cnVuaworNjI0OTcgMDRiZDc2ZTkyMDY1NDMyZmUzZjk3ZjMzNDkyODFlNTczYzkxZGVlYiBsZWdhY3ktdHJ1bmsKKzYyNDk4IDY4OTg2MzU1MjM4MDczMWZmNDdiYTkzMmJkMjgyNjUxMmNiMGYyMzcgbGVnYWN5LXRydW5rCis2MjQ5OSBjZTYyMGNjOWE2YTg2OTQ5ZDIzZDg1YjJjOTUwODJiNjRmMTNhNmU5IGxlZ2FjeS10cnVuaworNjI1MDAgOWUwNWYxNWY5MjFiMDEwY2RmNTA5Y2QwNGNmNzVjOWViYjQ2YTcxNiBsZWdhY3ktdHJ1bmsKKzYyNTA0IDBjN2NhNDcxZmI4ZDc3OGJjYjM1N2I5MWRjYjI1NTNkZjNjYmNmNzggcmVsZWFzZTI1LW1haW50Cis2MjUwNSBjNzM4MjgwNjIwMzEzMGJhNDExMzQ0NTM4MDc5MjNmMmE3N2U1YmE3IHB5M2sKKzYyNTA2IDJhMzFiYzI4YzEwZmZmMGFkODM2MzNkNjZmZjNiNzFjNWU2MGJjYjcgcHkzaworNjI1MDcgMGUxMTg1YmZhMzEzNGNkMjQwMWU1MDk2MDY1ZjA0ZmQxMzk3ODA3ZiBsZWdhY3ktdHJ1bmsKKzYyNTA4IDBjZmM4NDViODUyZDgyNGExZGU5ZTNmMGUwZjg1YTFjNjZiYTNiZTkgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNTExIDUyMzgzMjdmNDViZDQwNDJjNzZiNWQ0YjhjZGNjYWY4ZGZmOTQxMTUgbGVnYWN5LXRydW5rCis2MjUxMiBmZmVlY2JlYmYzY2E3Y2U3NmIwZjg4YTVkNzYwMDkyZmRmY2YzYjMzIHB5M2sKKzYyNTEzIGViMjc0NmU4Yjk4MzMwZGUxYjEwMmYxZmFmMTM4NTNiOTVlZmRhYzggbGVnYWN5LXRydW5rCis2MjUxNCBhZDM0MTc1MDM2MzZjZjdlZTU3MTA5MmIzYmZiZWFjNDQ4ZDg5MzY5IGxlZ2FjeS10cnVuaworNjI1MTUgMzYxZDc3NmQzODBlYjk0MjczYzRmNDNlZjU5NWNhNmI3NTQwOTliZSBweTNrCis2MjUxNiA0NzIzM2ExN2U5NzA3OTc0ZWFlZjQ4ODM0YzAxZDMyNjU4MWJiOTc5IGxlZ2FjeS10cnVuaworNjI1MTcgZDU4ZWMzOGU2ZGIxYTk1OGIyOGE1M2ZmY2ZjMzJhMDFlOWJiMzU1MSBsZWdhY3ktdHJ1bmsKKzYyNTE4IGFlZjM1MDFkOGU3NzZlNjkwNzg0MmQwNDIwOTUxYWEyY2I4M2UxM2QgbGVnYWN5LXRydW5rCis2MjUxOSAwNmU2N2NiMjIxNTgwODZhMDRiOTQzNGUwNzA2ODdlZDdhMjY5OTVkIHB5M2sKKzYyNTIxIGRhZDg4Y2I2ZWYxZmRkNTk1M2JlOTZiZjgxNzMyMGE1NjQzZGRiZjUgbGVnYWN5LXRydW5rCis2MjUyMyBlZGIzYzNkNjYwMDY3ZWFlNTkyODIwMzI2YmI3MGI0NjlmNzg4Mjk1IHRsZWUtYXN0LW9wdGltaXplCis2MjUyNSBjNTg5NWI5ODFkOGYwZjRkYmIwY2JjN2NjMjRkNjRjYjc5ZDNhOThmIHRsZWUtYXN0LW9wdGltaXplCis2MjUzMSA2YjdjOTFkOWRjNTExYmYxNThiMTVjOTg0MjIzZmI2YTczNjY1ZjAyIGxlZ2FjeS10cnVuaworNjI1MzUgZjM2NWEwMThhZjViNjk0Njk1MDY3MjU4MTUyNDY1ZjVlMmJkZGMzMSBsZWdhY3ktdHJ1bmsKKzYyNTM2IDc2NzAwMDVkYThjNTY4YmViM2JlNDYxNGQxN2E0ZmI4OTI0ZGRiMTQgbGVnYWN5LXRydW5rCis2MjUzNyBkN2Q1NjcyZjVkNWUwNTBiYmMzZGU2ZWEwZjZmNjA2MTM4YTVkM2U3IHB5M2sKKzYyNTQwIDA2YWE4MDJiZmNiMThjNWIwMTllMmY2NTE0MzkxYjY1NDg0NTE3NTAgbGVnYWN5LXRydW5rCis2MjU0NSAzZDlkZGNlMmRhODUyMDQ3NzBjYWI3NTdmOWZhMzI2NDcyMzZjNTE2IGxlZ2FjeS10cnVuaworNjI1NDYgZWJjNDBlNTAwODY5OGE1NmQxNzEzNGI4NDU2NGQyMzE3NmI1MzI1NCBsZWdhY3ktdHJ1bmsKKzYyNTQ4IDE4ZTlhMzcyYTdhM2EwY2M3OTUwZjAxMjY3OTViOGE4OGU0NDg2YzggbGVnYWN5LXRydW5rCis2MjU0OSA4NGRmMDgyZGQyMTY3ODM1ODE1OGExZGNkMDVmOWI2ZGVlY2VhMWIwIGxlZ2FjeS10cnVuaworNjI1NTAgNTlkYjU3NWFlMzc0NjI1NjVmNDdkNmE0NWEyNTAzMzU1YTBhMzUxZiBsZWdhY3ktdHJ1bmsKKzYyNTUxIGM1ZGMwNWNkMzg1ODliYzMwYTdiZGZjYTZlZGFkY2QzN2I2ZDE3M2UgbGVnYWN5LXRydW5rCis2MjU1MyA1NzZmYTI0NDBhMGM4ZDhmODg5ZDNhZmE1NzZmZjA3NWI3NDYyYjA0IGxlZ2FjeS10cnVuaworNjI1NTQgZDJiYjVmMTMxODczOGIwMDY0NzVmYTdkZjEzYmM4M2E1NmVhOTIyYyBsZWdhY3ktdHJ1bmsKKzYyNTU1IDA3YTRlMTcxMDI2Mjk5Y2YyN2E4ZjBhMjM0ZDlhNTFjN2E4ZGJkMDIgbGVnYWN5LXRydW5rCis2MjU1NiBhNTE3ZWNjYzc4M2I5ZTBjODFhMDRlOTgwNzk5ZGRkMGVkZDE4ZGE2IGxlZ2FjeS10cnVuaworNjI1NTcgMWVhNGQxYjE4YWVkNThkNGI1YjNkYThkMDcwNTI4NGE0M2RlYzAzYyBsZWdhY3ktdHJ1bmsKKzYyNTU4IDRlNDc1NDhlZGQzNjZkMmIxMTZiZjNmMWJkZGZhOTFhMDRmNTIzNGIgbGVnYWN5LXRydW5rCis2MjU1OSBmZWY2ZDZiYTc4YTQwMTdhOGQwN2ZlMzQ5NzRjMzhjMzYwZjkxZDdiIGxlZ2FjeS10cnVuaworNjI1NjggYzM0ZjBlNjA5ZmE2YWU0MzBkZDFjNmQzNjQxZTM1NjhiNDk3NGU3NiBweTNrCis2MjU2OSA4ZDNhZDhhZjY5MmI1YTM0ZWZmYzgxMzc0MDc4NWExMDc3YjExZWNmIGxlZ2FjeS10cnVuaworNjI1NzQgNmZlYWQ0Y2Y3OTExMWRiMGZkZmNjN2JmMzRmMmFjM2Y3YzYwYjdlOCBsZWdhY3ktdHJ1bmsKKzYyNTc3IDdmNjBiMzM3YjA0OTJkNGZlN2UxN2I4OWI3MWYzMDZhNjIyMDVlNzMgbGVnYWN5LXRydW5rCis2MjU4MCAwMTU0ZGYyNTBlZjZiNTA5NGE1NWVmMjBkNWEzZjFjYzNmY2Y3ZGU2IHB5M2sKKzYyNTgzIGU0MmQzOTc3OGVhZDljY2I0NTg3NWJiMzZmMzhmZDBkYWM3NjQ4MzkgcHkzaworNjI1ODYgMzdkNjQ1YjAxNTIzMTZlNDFiMTE4NDAyOWQzNmJhNmVmNmIzYmIwMCBsZWdhY3ktdHJ1bmsKKzYyNTg3IDdiNDA4MWJlYzc4Mzc4OWY4NjcwNzdjYTc2YTg5YWNjN2VhYjk3YmEgcHkzaworNjI1ODkgY2JhMjgxYjE2YTgyNDVlMTU2ZmMxZjliMzgxM2I3YjQ4OTgyYjZkNyBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MjU5MCBlZjQyMWEzNjVhMWQ0YzcwMzEyMWU3YzUxYjgxOWUwNTY3NDM1NmUwIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYyNTkyIGQ2YzZmMzY2YjIyMDYyZmQzZGVmMmI0MmMxZjE1NDcxN2FjYzE2NDYgcHkzaworNjI1OTMgOGY1Yzc1OWUwMTljNjZjYmQwYTM0NTc5ZTdkNjhlMDA3MjY1N2Y0YyBsZWdhY3ktdHJ1bmsKKzYyNTk1IDNkMGQzYTY4MDg5NmNkY2U3Njc5MTYxZDQyMWNiMjFmYzgzMWQ0NTEgbGVnYWN5LXRydW5rCis2MjU5NyA5NDhiZWE5NmRkMjAxYjMyMGI2YThlYmI3ZmIwNjRmMDhiM2Q3NDQxIHB5M2sKKzYyNTk4IGFmMGVmMDQ0MDFiYjJlNzliNjRmOTI5NTk5MjY4ZjVhNmZmOTJiMzAgcHkzaworNjI1OTkgN2E2ZDc0NzRjZTZlMDhiMDdjYjZhNTNhZDhmNzNlY2I3MzAxNTA3ZSBsZWdhY3ktdHJ1bmsKKzYyNjAwIGIxMDE1NTZiOThlYWU2MDk5ZTk2ZGEzM2FiYThlYmY5NzQzYWQyMWQgcHkzaworNjI2MDIgMDFiZTFjOGYwMDZiZGQ1NjM3MWFiMDg5NTRkOTA5YWUyMzVhMTUxNCBsZWdhY3ktdHJ1bmsKKzYyNjAzIDAxNDUzNTcxOTY2ODg1YzNmNGY3ZWQ2NzNiYTFhZGNhMWRmNDViYTUgcHkzaworNjI2MDQgMzAzNmUyMWFjNjYxZGRhMDEzZTY3NzcyZDlhMzlkOTdhMDI4NjAxNCBsZWdhY3ktdHJ1bmsKKzYyNjA1IDE0MjM4MzRiNzJkOGQ4ZDI2ZTE3MzNiODc3NmMxMzJmMmZiYTYyMzMgbGVnYWN5LXRydW5rCis2MjYwNiA2OGNmYzUxZTQzMzFlZmUxYjc3ZWJiNWI1MTE4YTkyZjc0NzYxMWFmIGxlZ2FjeS10cnVuaworNjI2MDggNjVhY2M1NWYxYTY5MGZhNDA2ZjcwZDc2ZjczNmI5MDIyMzQ5Mzg0NiBsZWdhY3ktdHJ1bmsKKzYyNjEwIGE0MGQ3ZTYwNWY5ZTExN2E2NjE3OGZmNDdhOTdhYzJiNWM4ZDZkNjQgcHkzaworNjI2MTEgM2YyMTE3ZDMyNzFmN2MwZjYwZDQ1ZDcxMmFhMzg5Y2YzOTMxY2VhMyBweTNrCis2MjYxMiBlNDJmZTE5YmE2ZmRmMzdlOGYyNmZhOThkMzM0NGEyYmZkM2Q1MzA5IHB5M2sKKzYyNjE1IDg3ZDMxMzdjMzFkNDM2MTAyZGY3NmQwY2EzMmEzY2U5YTUyMzE0NzEgcHkzaworNjI2MTYgMzMxNWY2YjQ0NDAzMGI4Nzg3YmNlYTQzZDY2NTA2YzQ5OTgyNWUyMiBsZWdhY3ktdHJ1bmsKKzYyNjIwIDU2ZjgxZWE5Y2I3OTUwZDRlNjJkNWU3OTc5ZTZmOTE4Yjg5ODI4MzggcHkzaworNjI2MjQgODBiZDRiYWE2Mzk4MTkyMDM2NWE3MjU0NTczMzc0NDA5ZTQ5NjQ1ZiBweTNrCis2MjYyNiBlYTFhOWNmNzM1YTU2OTQ1NDMzNjhkODQxN2M1MjE5OGE3N2E4MDA5IGxlZ2FjeS10cnVuaworNjI2MjcgNTQ2MDZlYTlmNGM3YjkzMzg0MmViZDcwZDA1MGRjM2UzY2RhMGE0ZCBsZWdhY3ktdHJ1bmsKKzYyNjM2IDBiYTEyYzMyZTJiNTY5NTkwMDg1ZTIwMTBjOWVlMmVkMGE2MDQ2ZTQgbGVnYWN5LXRydW5rCis2MjYzOCBjNGQ5MGZhOTM1ZWFhNDEzMDVmMTk0MWI1NGZmYmI1ZTA0YWM3OGY0IGxlZ2FjeS10cnVuaworNjI2NDQgYTFjNmYyYWI1OTdlMDM3OTYyMTQ1YWIwOGRkMjE1YzZmYzBkY2I1ZCBsZWdhY3ktdHJ1bmsKKzYyNjQ1IDIwYjcwNzg2NjQ1OWFkYTc0YTA2MzkwOGI4YmNhZDk2YmRkZjBkNGYgbGVnYWN5LXRydW5rCis2MjY0NyAxZmZlYzJhNjg3ZTk1OTZmNDhhYmFhMzhmMzAzNGM5ZWM2NzMxYjk5IGxlZ2FjeS10cnVuaworNjI2NDggM2Y4NGU2YWUzNmRhZDI5ZTA5MGE0YjQ3NDZhMDNiZDQ4Y2IyNjY3ZSBsZWdhY3ktdHJ1bmsKKzYyNjQ5IGI1NWM1NTY3Y2M3NjczM2Y0MWRjMTE5NmViNTU1MWY1ZWU5ZGJkMTAgcmVsZWFzZTI1LW1haW50Cis2MjY1MCBlYjlkYWI5NTZhNmViOGI4MGU1YWQ0YWZkYzIzMzg2M2UxZDZkOWE0IHJlbGVhc2UyNS1tYWludAorNjI2NTEgODA2MzU0ODllOGQ4MzE0NGI0YzA5ZDdmOTQ0ZDI0MmU0NzFjMjU1YSBsZWdhY3ktdHJ1bmsKKzYyNjUyIDZkOTQ5NzU5N2M0ZjNmZWZiNGMxOGE2YzUxM2I3NzI5MjVjMmI0ODYgbGVnYWN5LXRydW5rCis2MjY1MyBjYzY2MDI5ZDJlZmU1OTM5YWJjMjY0NDk0MTU1N2JjM2JlODcyMmQ3IGxlZ2FjeS10cnVuaworNjI2NTQgZmQyN2FjNWZjYzgxODA4ZTlhZmQ5MWU2YWQ3NjZiM2RkZTY4MWFkZSBweTNrCis2MjY1NSAwMzJhMGEwZDNmYTk2MDZjZmUxODcxZDliZmY2YTIxMmU2YWRiYzU0IHB5M2sKKzYyNjU2IGE4NTlmODM1ZWY1M2RhOGEyNjFmNzI4MDE3MTcyZWRmODVhZDAxOTkgbGVnYWN5LXRydW5rCis2MjY1NyAwZmRlZjE0OTgxYThlM2JiMGExYzJkMDQ4N2Y1MmM3YjNiNzVhNWU1IHB5M2sKKzYyNjU4IGJkOTEwMDBjOGU3M2RjNzc2YWY4YjZjNjc0ZGYyYzhhOWRmNzVmNzMgcHkzaworNjI2NTkgM2Q0Mzc3NTIxNzBiNTJkYzA0MTc4MTE5Mzg3NmNlMGU0ZGIxYWE2ZSByZWxlYXNlMjUtbWFpbnQKKzYyNjYxIGJmYTgyYjQ5MzMzNTQwOTcxZTY4OWY0ZmQyNzlmYTIzMjE3OTAwYjUgbGVnYWN5LXRydW5rCis2MjY2MyAwZGViNGFiMDQyNmUyODdkOTZlMDhjMDIzOTU1YTQ4Mjk5NjI3NDQ0IGxlZ2FjeS10cnVuaworNjI2NjYgZWMwOWFkNWJlZDFhY2NhMTBjMmNkNjFmZDRiYmJhZjkxYWY2MjFmNiBsZWdhY3ktdHJ1bmsKKzYyNjY3IGVhNTk0MzA2ZWE4NTQyYjk4YmUwNjg2MzdiMDcxMmE3ODMyYTE3MjEgcHkzaworNjI2NjggNjhiMWQ0NGI1Zjc0YTc5ZjAzNjAyNTdkM2RjODc2MTUxMWI2YWQ0NCBweTNrCis2MjY2OSBlYTMwZjAzYjI0ZjQxZjgyMTUzN2I2ZjNjMmRiMGEwNGMwMGVlNTBjIHB5M2sKKzYyNjcxIDk0MThkYzRhN2I5ODVkNWNmYmJkY2I5ZDE1Y2JiODgwMjA2NWVhNzAgbGVnYWN5LXRydW5rCis2MjY3OSA1YmI5NDA2NWIwNzk5OWNlMmUzNDc5NjU5ZTdlMzcwNjE2ZjcwYWMyIHB5M2sKKzYyNjgwIDgzY2MwOTY4MjA4MWRjMDQ5M2U5MjIzYjg1MjcxMmZmYzhhNmU5MzIgbGVnYWN5LXRydW5rCis2MjY4MyAzMzkwZWI3NTkxZjYxMjhiM2ZkNjY0ODg2NzI0ZjcxOTI5YzgwMDY2IHB5M2sKKzYyNjg0IGM5N2UzNmFiY2RkNTk1NmY1YjM3ODFkYzY5MzNmZjMwZDc1YzA1YWYgbGVnYWN5LXRydW5rCis2MjY4NSBhY2IyYTkzOTQyOTZhNDU3NTE0NDE2MWEzMzVmODU4ZWIyNGE5YWI3IHB5M2sKKzYyNjg2IDE4NzJlMWRjMDM1ZmMzMjliOWU4Yjk5ZjIzYzNmMDdlYjA0ZmRlN2QgbGVnYWN5LXRydW5rCis2MjY4NyBiN2M2NmQzZTJlMjhkYjAyZDZjYzdhNzc4ZWJkNjczY2IyY2Q2MWUyIGxlZ2FjeS10cnVuaworNjI2OTYgYTk0YjlkYjkyMjNmY2QyMGQwNDkwZTU3NWQzZjQxNWUzNzc0N2M0MyBsZWdhY3ktdHJ1bmsKKzYyNjk4IGFhYTBhYjQ5MDEyNmUwMmYxODQwNTVjZmMyODA0N2QwNzNiMzZjMzcgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNjk5IGRlNzZiZTAyZGI0MjViM2U2YTRmNjBiNzFmODYxOWZlYmE5YmJjOGUgbGVnYWN5LXRydW5rCis2MjcwMCA2ZGIzOTJhYzlmNGViMTQyYjRiN2RlNzQ2NGY0MWVkZjQ2MTAzMjgwIGxlZ2FjeS10cnVuaworNjI3MDEgYjkzYTA0MWNjMjIxM2U1ODlkNDJhNGU0YTc3MjJkYTRlYWFmZGIxOSBsZWdhY3ktdHJ1bmsKKzYyNzAyIDI4YjA5OWFjNGNkOGY3YjhjNzUxZTZkNDM0YmQ0Y2YzODIyNzNiMzYgbGVnYWN5LXRydW5rCis2MjcwMyA2YzRlZmU1MmQ1OTRkM2ZmNGZhMDFmYWJkMjg3Njk4MWRkNTFhZjAzIGxlZ2FjeS10cnVuaworNjI3MDYgYzA3ZjE5YWY1NTRhOWY2MzBkN2ViZmMxOTUwMmQ5ZjY0YWJkMWUzMyB0bGVlLWFzdC1vcHRpbWl6ZQorNjI3MDcgMmU0NjM0NDJlNTcwNjA0Yzk1ZGE4Y2I0M2Y2OTk5NzA0OTA0NmEwYyB0bGVlLWFzdC1vcHRpbWl6ZQorNjI3MTEgZmUzMDBhOTcyZmI4ZGYyODc1MDQ3NTY5NThkMDI5YjVhZWY4ZTg2MyBsZWdhY3ktdHJ1bmsKKzYyNzEzIDcxNzJlMTFlOWZjOGM2NzZkY2Y2M2ZmZDk5NTVmNWQyMDI1OTliNWEgbGVnYWN5LXRydW5rCis2MjcxNSA2NDM0MTVmOTFhNTBjOTJmZjkzNTc4OTkyZmE4YTY4NTE5ZDdlOTBkIGxlZ2FjeS10cnVuaworNjI3MTYgMDMxZGZlNDU1NTg1Y2NkZDA3ODk3YjhlNmQwMDRmNzljYTQyNjc5YSBweTNrCis2MjcxNyBjN2MyNWNjOTk2M2RkMzMyNzgzOGE1Mzk1NWVhODlmMjQyZWQ1Mzc3IHB5M2sKKzYyNzE4IDA1YTgxN2UyNWYyMGQ0MmNjNzBhYTZiZTZjZDc0NjUyZDJlMzc1YTMgcHkzaworNjI3MjAgZDkwNzFmYTgyNDRhZjM0MzM2NjlhN2M3MDkwZTZhNTc2NjA3YWViZiBsZWdhY3ktdHJ1bmsKKzYyNzIxIDhhOWI4YjNjZTJlMTIyMjUwMzcxMTBjMDY5NWRhMDE0MTdjODFhNWYgcHkzaworNjI3MjIgOWIxMGJmNjRmMTI0MzIxNmI2MzA3MTFjNWE4MjhjMzljMDg1ODA0YSBsZWdhY3ktdHJ1bmsKKzYyNzIzIDRjOTBiZThhNGQzODI3ZGU0YTQzMjVhNGRmYTlmMTQ4ZTJjZjE3M2MgcHkzaworNjI3MjQgOGUzM2YzMTZjZTE0MGRhOTc1ODYzZWE0ZTk1ZGNkOGEwYjU0MjFmZSBsZWdhY3ktdHJ1bmsKKzYyNzI1IDE1ZjFkMjMyZWFlOTEzODU3YjgyNGU4NzFhMWQzZTk3NjJkYmUyZGMgcHkzaworNjI3MjYgMTBlOGVmOTViMTFmOWRiNjE4NGU1NTQwOTFmYjhlZjUzOTcxZmNjMSBsZWdhY3ktdHJ1bmsKKzYyNzI3IDg2ZjczODM4YTRiYjcxNTAxZjAzOGUzOTQ0YzVlYTczNjliODg1OTggcHkzaworNjI3MjggNTViZjhkNjkwZTY3YWY0NjBiY2E4ZTVlNTNhNDY1NzRiMjg5Yjc3YSBsZWdhY3ktdHJ1bmsKKzYyNzM0IDRkZWQzNTc1NGNiNzIxZjQ5NjEyMjA4YTBlYjg4NTE5MDFmYWRkMzAgbGVnYWN5LXRydW5rCis2MjczNiAzNGE1MzgwZWUyNzVhZTBjYTE3MTcxNWE2N2ZmYWUwZmUwNWFkMmZmIGxlZ2FjeS10cnVuaworNjI3MzcgODhhMDk4MDRiYmEzOTQzMTVmZThhMzUzYjQwNzA1Y2U3N2Y5YzgzYiBsZWdhY3ktdHJ1bmsKKzYyNzM4IGI3NGEzZjk0NmE1ZTY3ODEyZTliMDJmNDkyMzgwMjgwZDEwMGY5N2EgcHkzaworNjI3MzkgZGFjMjE4NDNjZjUzNTE0YzU3Zjg0ZTk5ZmZiYjgzZGRlZTZmM2Q3MiBweTNrCis2Mjc0MCBlMTlmODdhOTg3OGMyODhkM2U4YzllMmQ4MTAzNzdjMTM2NjFjODA4IGxlZ2FjeS10cnVuaworNjI3NDEgOTFkNWYwODQxNzAwMDY4MTkyNjViMWQxMmEwZTI2ZTYzZDBkMDQ5MCBweTNrCis2Mjc0MiBmMmE0ZDhkNGYwNjM0Y2RiMmM2OThmNWVhNzQ3NzdkY2Y4YWM3MDg3IHB5M2sKKzYyNzQ0IDI3MjllOTc3ZmRkOWVhN2UzZWRhYzUzMzFiNjhmM2Y3ODI2MWI1NTUgbGVnYWN5LXRydW5rCis2Mjc0OCA3MTA2Y2E4NzFiZmQxYjY3NWNmNmViYzIxY2FjMDAwOTUyNDYyYjczIGxlZ2FjeS10cnVuaworNjI3NDkgMmYzNTFmYTUzYTZiM2YwZWFmZTg4ODZiOTRlMGRkNzM2OGE0NWU0NiBsZWdhY3ktdHJ1bmsKKzYyNzU2IDVhZThkNTRkMDk1MjhmNjU1NjE4MWQ1ZWJmYWFjNzExNzdmMjAyZWUgbGVnYWN5LXRydW5rCis2Mjc1NyAxMWVkNDA1ZDk5Y2I4NmYzYjVhMTc4NTg1ZTY5ZjMyZTk0NDViYTcwIHJlbGVhc2UyNS1tYWludAorNjI3NjQgMWU4YjhkZjRkZjgzMTUzZGRhYjI3ODc2OTljZWI2YTk2ZWIwZjE4YyBweTNrCis2Mjc2NSBjODJmNjNlZmJjNDA4MzFiNDljYmJmYmM4MzIxYWJlZDE2Nzc3Nzg1IHB5M2sKKzYyNzY5IGIwZmI1NWVjZTg5ZmMzZWNjY2M1NGJjY2U1NzQ0MDBmNWEyODFhZTkgbGVnYWN5LXRydW5rCis2Mjc3NCBmODQ2OGJmZDQzNTc2MDRjZjQ5OThiOTg4YzQzNDBlYjdjZjc1ZTRkIGxlZ2FjeS10cnVuaworNjI3NzUgZGRkNWY0MjMzMmI5ODU2MzI1NzZjNzgyZWJiNTJlNmU0ZjNlOGYzNSBsZWdhY3ktdHJ1bmsKKzYyNzc4IGNkYTgxNmMzYTFlNDZiZTNhZjJlYjdkOGNlMjkyZGU4MjhkMWYzNGQgcHkzaworNjI3NzkgMDJhODE0MmQ4M2RiMjgzNzM3ZjUxZjdmOTk1MjcwOTQxNzk1MWY1OCBweTNrCis2Mjc4NSA5MTMwYjQ4YTcxMzBlMTVhNDljNGUxMjg0MjZiZmYxNjE0ZGViZDk0IGxlZ2FjeS10cnVuaworNjI3ODcgNGIxOWI0MWVmNjA2NGM1MzA1Y2FjYjc3YTVjYmFkZjhiYzhiZjZhYiBsZWdhY3ktdHJ1bmsKKzYyNzg4IDFhMmRiYzg0YmRmY2YwYThjNGM2ZGUwYjA3ZGI0NGViNmJmN2UzMWUgbGVnYWN5LXRydW5rCis2Mjc5MCBmNDA2NGI1YzhjNWQyZGY0YTBkYTZmMmY1MDQyYjZlZjkxYWMxOGZmIHB5M2sKKzYyNzkxIDkxMWM4N2Y4ZWQ1ZTU3M2E2ZTBmODU0YjM3Mzc5M2QxNWJiMDYwYmEgcHkzaworNjI3OTIgMGMyZTRiNTVmODBiOTdiNTZkNzFkMDM0ZDEzMjkxMWQwMjQxNjZjMiBsZWdhY3ktdHJ1bmsKKzYyNzkzIGZmZGI1ZjQxMzlmZTdhODcyYjJkN2MwYjhkM2ZjZjIxZTZjYjA5ZDkgbGVnYWN5LXRydW5rCis2Mjc5NCAxMGIxMzlkODc4NjAyMWMwOTVhYjM1OTUzZmI4OGEwNTZjYTdiNDg2IHB5M2sKKzYyNzk3IGNlZWE0MGRhYTg0OTA3OWI1MTVlZjgwMjRmNDQ2MDQwODBhYzE2Y2EgbGVnYWN5LXRydW5rCis2Mjc5OCA3YzgwYmFjN2Q3NzY1NmNiNzFkOWNhNjFjZTE1ZmI3ZWZjODQ3NGQyIHB5M2sKKzYyNzk5IGM4YWEyMjBjNmNlZWY5NThhZDVkOGQ1MzIzMWVmMGU1ZjcyYTk2OWEgbGVnYWN5LXRydW5rCis2MjgwMCA3MzdhMThiMmRlZDM2NWYwYmJmYzkxMGNhMThmZGMyNDZkYzc0NWYxIGxlZ2FjeS10cnVuaworNjI4MDEgNzRiOWM4NTM2MWY4OGUyNTNiOWY3YmI0OWRmYWUwNDY2MTliOWFkNyBweTNrCis2MjgwMiA3NDg2YzI5ZjkzYTNlZGQxMTIwNjE4YzU0OWY2YjAzNGM0ZTNkNjZkIHB5M2sKKzYyODAzIDBlNWE5NmZjOTQyMmI0ZTEzODU1MzcxYTQyYjM5MDI4NzNkZDlmYzEgcHkzaworNjI4MDUgNzdkZjk5MWVhNjM3OThmNWM5NWMzOTFmN2U0YWQ3MTQwMjM4OGUyMCBsZWdhY3ktdHJ1bmsKKzYyODA2IGQxOTY1MDg4Yjg1ZGQ3Mzc2ZjBiNzg2OGFhZWNhZjhiZDQ1NDFlYzEgcHkzaworNjI4MDcgOGI5MzFhNzk4MjdhOWI2NWUwMTMwYjdmYzlhMDU0YzdkNzYwMGE2YSBweTNrCis2MjgwOCA1ZmJkOTdmMWJjMzVlM2M5NmUzYWZiMGM1MmFiZjRkZGQ1Y2JhMTNhIHB5M2sKKzYyODA5IDM4Yjk0YzA5N2E1NTI2ZjVhYmFjMDE0Zjc0YjVmOTBmYWRmYzdlMTQgcHkzaworNjI4MTAgZDdlMjAyOWIzY2E0YmYxMTMwY2EzOTFiNDZkYWViOGQ4NzI2MTYxZCBweTNrCis2MjgxMSBiNjM1NDYyYTU3OThmMDNlNTUyZjFjYzEwMTU2YWE1M2UwM2EwNDJlIGxlZ2FjeS10cnVuaworNjI4MTIgODE1NDY0OWM1NTE2NjIwMWUwOWQwYjcwNGI0Y2FkMmU3ZTM5NTE3NSBweTNrCis2MjgxNSBhOWFjZjE4YThlNTc1MTFjN2JlYTg4NjRjYTM5ZTE4N2NjMDM1MDkzIHRsZWUtYXN0LW9wdGltaXplCis2MjgxNiA0MzA3ZWVkMWY3M2JlOWM0YjdmYjljNWQ3ZGUzMjk1Mzg3NTgwMzhmIHRsZWUtYXN0LW9wdGltaXplCis2MjgxOCBiOWEzYWJmNTlhNDU0NmYwMDJkNjZlNDE4MjgwMTEzYzU2OTc5MGUwIHRsZWUtYXN0LW9wdGltaXplCis2MjgxOSBhNjRmNDBiNjIxNjk2MzBjNjdmYWY0Y2JjYWJmNjQ3ZTFjNjkzYjA4IHRsZWUtYXN0LW9wdGltaXplCis2MjgyMCBiYjk1NmY0ZTMyNmVjNDYxNTVmMThmNWNlYjIwNjVkMzAyNmZhNjAyIHRsZWUtYXN0LW9wdGltaXplCis2MjgyMSBjNTM4MTUyNjYzNjBmMDVmZjVhMWVhMDY1NWM1M2JiODFkYmFiNGI2IHRsZWUtYXN0LW9wdGltaXplCis2MjgyMiA0YjAzOWVkZmVlNmJlZTQ5MjY4MWU3ZDg1MmY1MDM4YzIyZDU3ZTdkIHRsZWUtYXN0LW9wdGltaXplCis2MjgyMyA5NzQ3ZDExMzcwODNjYTUzYjc1NmFmZDBhMjEwYzY2OTY5Y2RiZDVjIHRsZWUtYXN0LW9wdGltaXplCis2MjgyNSA2N2JhOTNhZDAwZmRmMWI5MTM1NGRiYTExODMyYjM2YzRiZjY5ZjE3IHRsZWUtYXN0LW9wdGltaXplCis2MjgyNiAyYzQ1NThkZmY1M2Q5MDY0YTc3YTEyYjcyMDAyODhmYjJmNmFmODljIHRsZWUtYXN0LW9wdGltaXplCis2MjgyNyA0MWU4ZTcyYWE5ZWRiMWIwYjk2ZDA5YjgxNmRkMzI3ZmEwMjlmZjQxIHRsZWUtYXN0LW9wdGltaXplCis2Mjg0MSBlZjQ3ZGYyNTQyM2M3NmFhY2E0NDI1NGRhYjA5YjZiYjdjOWFlNWU0IGxlZ2FjeS10cnVuaworNjI4NDIgOTU3MGJjMTI4MzE0NDRhM2I4MzM1NGY3ZThkNzc4NWNiYzBhMWZlMCBsZWdhY3ktdHJ1bmsKKzYyODQzIGFkNzc1MWE5NTgwOThkNzEzZDZlZTgyY2ZjMTQwODZhMTgxMmYzMDIgcHkzaworNjI4NDQgODMxYTMwY2QyM2EyODIwNTJkOWIxMTJlOTcyODA4NTVlOTU3OTUxMSBweTNrCis2Mjg0NSBlMzQ1OWFkMDEzNjg2Y2JlY2U3MzY2MWViZjQ4YzY0YjViZDAzN2EzIHB5M2sKKzYyODQ2IDZlYzU2MDhiNjYzYzJjZjI4MDMwYTRiNzBjYzQwMmRmMzEzMDI4MTIgcHkzaworNjI4NDcgYWNkNjgyNzdjNGRkMDEyN2E3OTgyMTAzNTg0MDNkZmY1YmJkNTU1ZSBweTNrCis2Mjg0OCAyZWYxYzM4MTEzOGQ1NzNjZmQ5NGJmZWU5NGE1ZjZiMTFlZWY3Mjc3IGxlZ2FjeS10cnVuaworNjI4NDkgMGU3NmE4ZjM0NzY5NWEzNzUwZmI2ODExZDU1ZDZkYmJkNzc4Y2JkNiBsZWdhY3ktdHJ1bmsKKzYyODUzIGIxMjRlMzE2MTRlZDk2OTMzNmY3NWUxZTI3NmFhNTkzNjA3OTBmYjkgbGVnYWN5LXRydW5rCis2Mjg1NCBjNTYyNDAyYzFjMDgyOTkyNjliZWYzNjg3NTZjODIxYjhiMWNiYTFmIGxlZ2FjeS10cnVuaworNjI4NTUgYzY3YzA5NTU0ZDIzMDIwNDNmYjM3ODA5MWNkMDMyNTNjMzNiN2U5MyByZWxlYXNlMjUtbWFpbnQKKzYyODU2IGUzNTkzNTQ3NTE1MzM3N2Q2NzI3ZDY0ZTZjNTJmNzJjM2I4NDAxNWIgcHkzaworNjI4NTcgODE0ODA2OTI2M2FhMWYwMjEwY2RkMGQ1OGYxNTkzZmJhZDRlNmVmNiBweTNrCis2Mjg1OSBhZWQwNDIzOWEzZmMyNTg1MjA1MmRjNDZmMzkxNmQ2MDViZmUzNjUxIHB5M2sKKzYyODYwIGNlZjVhYTNlZDcxMzM1NDkwNDcyODY2MTg3YjYzOWZiNWE2NjdmYTggcHkzaworNjI4NjEgNDhlOWZiMGE3MjE3OTk4NzdmMjZlZGFlZjAxYWM2ZTYwMjliNjgxMiBsZWdhY3ktdHJ1bmsKKzYyODYyIDZiNzk3MGFhMGRkYTMyN2YyNWE4MzE1MTk1MWQ4YTdiOTY2ZWFiY2MgbGVnYWN5LXRydW5rCis2Mjg2MyA5ZjQ1OTc5NTU4YTliY2Q4MjE5NmYyMmM3MDA5ZDE1ZWVjYzM0NDRlIHB5M2sKKzYyODY0IGQ5ZDRjZWY0MjFhMmRjNDRhYzQyYWI4ZGM4YjFmYTA4YjRmM2RlMDUgcHkzaworNjI4NjUgZDQ0MzBlOTAyMWMyMjNlOGZlNTA2MDI5MjZiN2MyMWI1OWNmZGE5ZCBsZWdhY3ktdHJ1bmsKKzYyODY2IDcyYmUxMzkwYWU1ZjQ3YmY3ODliNGE3M2QxNWZhZWQzNzE4NGVmZGEgcHkzaworNjI4NjYgZTY5Zjg0ZWU0ZjNhNTUwMjJlMmYyNTJlY2UyYmFkOTQwN2QyMTU1ZiBweTNrCis2Mjg3MSA5ODFjYWYyNGRkOGE2YWFkOGMzOTI5ZmYwYWRhZmZiM2RiOTVkYjA0IHB5M2sKKzYyODcyIDE2ZGRkZmUwYThjZGM0NjYyM2UzYzdkMDU5Nzk2NDEyMWYxMGU2NTMgcHkzaworNjI4NzMgYzhiNDlkOGMzOTY3ZTdhZWRhNGFlNzk4MDMwNjE2M2FiZTE5NGUwMiBsZWdhY3ktdHJ1bmsKKzYyODc0IGYyZDc3MWYzNzBiZDhlMGJhMzU4OWZhMTZlMWRjZTJhNGJiOTZlNTcgcHkzaworNjI4NzYgY2E0MTAyNDE0YTM0NWNlZWM4MDliZmE2YjUyOTBlZDYzYjY4M2QyOCBweTNrCis2Mjg3NyAxMTQwN2MxZjY4Y2E0ODRjMjhiMWQ5NDY5MWRiNTg4NTdhZjNhMWZhIHB5M2sKKzYyODc4IGVhYWM1NjE5YTIxZmZjMDU0OWNkZjNlMzJiMjY3ZjNiMzdiODFkMWQgcHkzaworNjI4NzkgMjAyOGZhMmZjMWRkZmNjOTRhZTJlMTNmMWNmYWM2NzMyM2Q2Y2E3YyBsZWdhY3ktdHJ1bmsKKzYyODgwIGU5NWRkMjVkZmIwY2JlMDgwNWVlOTM4MzJhNjUwZTBmMzU1MGQ2MzAgcHkzaworNjI4ODMgNWM1YjM2M2QyZjE5YTgxYTllYWM1ZjM4MDE1MDQ2YmY5OTA4Y2JhOCBweTNrCis2Mjg4NCA5ZmJjMmRhNTRlMjkzZGU5MTMxYzUwY2M1NDE4ZWExMjZhYjQ3ZDM5IGxlZ2FjeS10cnVuaworNjI4ODUgMDQ3ZGEzZjZmZDdmZDk0YTJlYWQ3NzE1MDY0NGI4ZmY4OWEyNmMyYyBweTNrCis2Mjg4NyBjYWM2YTFhMzM0ZTA0Y2IwNmM4NzdjOWJlNTZkNDViODY5OGU2MzA3IGxlZ2FjeS10cnVuaworNjI4ODggYjcxMDlhMGNkMGY5ZjU3YTUxZmY1YjQ5MjVkMGNkNGEzYzA1Y2U3YiBsZWdhY3ktdHJ1bmsKKzYyODg5IGE3NjcwYWZiNWMwOTJkOTk2MTMzMjE0ODk0MTYwYTdlOTNhOTcxODYgcHkzaworNjI4OTIgNmFkYTE1ZDc5OTBmNzI2ODk5NzdmNDNhNDljMTQ4NzUyMzFlMDA2ZSBsZWdhY3ktdHJ1bmsKKzYyODkzIGI1YTY3NzI3OGI1ZmE4NTg0NjdjMGFlZGYwMjc0Mzc5NWFhZjBlNzkgbGVnYWN5LXRydW5rCis2Mjg5NCBiOGU3YTE2MTYxMWMxNGYzMmRiYmJkODM3NTM3Y2QzYzBlNDk2ZjdjIGxlZ2FjeS10cnVuaworNjI4OTUgMWZiMjQ2Y2IyOWFlNDExZWU4ZmNhODJmNWQxODEwZDVlNTY2NzAyNiBsZWdhY3ktdHJ1bmsKKzYyODk2IGRmYjBiYjVmYWE2YmM5ZjYzNGIwNDEyMzc1ZGJmYmI5OGFhMzc2MTQgbGVnYWN5LXRydW5rCis2Mjg5NyA2YmU2NDcxOWE1MDlhY2NiZjQwYzVmZDczYmQ5MTE4ODM1YzNhM2ExIHB5M2sKKzYyODk4IDJhMTczYThiM2IxM2Y4YWUxNDViN2FkNDg4ODE5ZDcyN2JlNTYzZjUgcHkzaworNjI5MDAgZmIxOTg0ZmIxODJkM2I5NjExMGUyYzE3MWYwNmVhMTFiODRlODcxOSBsZWdhY3ktdHJ1bmsKKzYyOTAxIDIyNGNhZDgyMzU5MDVmMDFkMThmYTU1ZmU2NGIzMzhjNjQwYjliMjIgcHkzaworNjI5MDMgNWU0YmQ4MjQ5ODQ2MjRlYjI5OWViYmZmZDIyZmFkZWU4NmYyYzhhYiBweTNrCis2MjkwNCBkYzU3M2VlMGQ5MDQxN2I3OWUyNmU1ODFjYWEwMzJjYTk5MWYzYWQ2IGxlZ2FjeS10cnVuaworNjI5MDUgYTEzMGNmNDhhZDY3Y2FlZjFiMTEzMzk0ZWU5MDgzNmM4MTA1MjQzMyBweTNrCis2MjkwNiA1ZDE1YThiY2M0NDU2NjI1N2E3M2FjNTNiZTFmZTdlZDU1MjRmMjdlIHB5M2sKKzYyOTA5IDhiZmUyYjA2NTI3ZGFkMDM0ZDM4ODJiZGRhMjhjZTU5Mjg1ZjcxMWQgcHkzaworNjI5MTIgYjkzMDA1NzEyZTM5OWZmMGMyZWVkYWZjYTNlYjcyM2M1MmRiMjQyYSBsZWdhY3ktdHJ1bmsKKzYyOTEzIDViNmVhNGRiYTQ0YzljY2ZlMWViY2IwODRjMDVmOGIxZGYzZDIwN2IgcHkzaworNjI5MTQgNGQwMDdhMzFiNDY0NTNkNzNjYjc1ZDQxM2MzYzQwNzQ5MmMzNTZlOCBsZWdhY3ktdHJ1bmsKKzYyOTE1IDM3Njc1ZjBjMzM4YTY2MDVmMWU1OTkzMDkzNGNjNjIxYTcyMTQ0ZjQgbGVnYWN5LXRydW5rCis2MjkxNyA4MTZjMjFjNzYyYzg1M2Y5NjYwOWRmNzgyZTFiMjNjYjQ4NDMwMWM0IGxlZ2FjeS10cnVuaworNjI5MTggZWJjOWY2NmZlOTkwMjkyODYzNDlhMzQ4YjRjNjkxZTljZjY0NDBlYyBweTNrCis2MjkyMCA5NDZmYmFlNGJhYWI1NjZiNDk1ZWVjOGJmOThlMzgxYjYzNTc5M2FkIGxlZ2FjeS10cnVuaworNjI5MjEgNGJkOTg5N2RjZTA3Y2ZhMTFiOGI0NWNjZjU2ZjQ1ZmUyODQ3YTY1OCBweTNrCis2MjkyMyBhODliZTI1MDcyZTNkZTdmM2U4MWQ1MzM2M2RiMjdhZGYxZDI0MmFjIGxlZ2FjeS10cnVuaworNjI5MjQgNWZiOGE1MDRmYTk2ZjExMTViNzVkZDU4MzFmNGJlMTNmOGYwMTE5YiBweTNrCis2MjkyNyAxNWM3MjIwMjg2MTU1YzFiN2I3OWJiNzM0MGY4ZDY0ZWQ0YmM3ZjNjIGxlZ2FjeS10cnVuaworNjI5MjggNTRlNjIyZWYzNTAwZTI3ZmI3ZDljOWZjZGFkNzk1YWJhMTM4ZTJjZiBsZWdhY3ktdHJ1bmsKKzYyOTI5IDg0YWYwY2ZhN2I4MWQ5NDM0ZTc0YWFiOWZjMjI3OTU5MzlhODIwZmEgbGVnYWN5LXRydW5rCis2MjkzMCBjZDZjNmRlYjdmODRlNGVjNDQzMzEyY2Y3Mzc5OGRkNDhmOGUxNDQwIGxlZ2FjeS10cnVuaworNjI5MzEgYzI0NDM4ZTlhYjU0ZmJhMzZlYTIwZWNkNTFjMTUzZTBkMGRlMGZjYSBsZWdhY3ktdHJ1bmsKKzYyOTMyIGNjYzMzN2I0NWIyZTMxYTAwY2Y0MDEzZTk4YzY0NTg3YTI3YzFlZmUgbGVnYWN5LXRydW5rCis2MjkzMyBlZmI5NzlhNDk0N2QwMDM4YzlkZjBjZjNiMGFhMDg1NzgzM2FiZTI1IGxlZ2FjeS10cnVuaworNjI5MzQgZjNmNmE4OTVhNTU1ZGYzNjk1Y2M5ZWRmZmRmY2VmY2VlYjAwMGUyMCBsZWdhY3ktdHJ1bmsKKzYyOTM4IDM5NTVjNTAyY2ZhMzcyMmZhMDk5NDIxN2Y1MjI4NDQwZDVmMTZlZTUgcHkzaworNjI5MzkgMTdjZDYxMmIwNmRhMWY4NGYyYzEzNjVlMTAwNmQ4YmVjMDg5MzRlNyBweTNrCis2Mjk0MCA4YjY3Njg1YThiYzNlZTY3OTIzYTFiNzg4MWEwMzdjN2YxZTgxYWQ1IHB5M2sKKzYyOTQzIDhiYWViYTEzYWU5M2Q0M2YwZTYzNjkyNmJlMjkyZDY5MWU5ZTVlZjEgbGVnYWN5LXRydW5rCis2Mjk0NCA1MWJhYmU3M2MwY2EzNWY2YTM0OGNmMTIwYjA0MDZkNWFlY2E4ZmE3IHB5M2sKKzYyOTQ1IGE0NDQ5ODVhNjc1YWU0ZWFlNDYwZDI5NzZiYjY5OTgyZjk3ZWIyMGMgcHkzaworNjI5NDYgYjQzMjUwNmVmY2U3ZmQ5NmVlOGFmNjgzMTQ2ZDhmYWExYjIyYjY4OCBsZWdhY3ktdHJ1bmsKKzYyOTQ3IGUwY2E3NGIzNjRlNDliNTU2MThhODIzZDJiZDllZWI0MTU2NGQ5MTEgcHkzaworNjI5NDggZmQwYjg5NGJjOTBjNTJhNDRmNTZlZjI2ODcwNzY0N2U1OWY0ZDFlZCBsZWdhY3ktdHJ1bmsKKzYyOTQ5IGJkMjk1NGM0OTE2OThjMTQyYmFmNTM2YWQzZDFhYzk5MTQ0Mzg1Y2YgbGVnYWN5LXRydW5rCis2Mjk1MiA0NDk1NGQ2NWE3M2E0NWRkNTI1YTMxYjRkZWM1YWM0NDk2YzFjZGE1IHB5M2sKKzYyOTUzIDg3ZDg1NGJjMWU0NWU3MWYwOTc0YTg2ODJkMTA5ZTljMDA2MmEzYjYgcHkzaworNjI5NTQgZGVjNTMxYzBhY2Y5YjYyZjlmODUzNDk2MDkxOWM0N2VkYjczZjk3NSBsZWdhY3ktdHJ1bmsKKzYyOTU2IDM3YjI3YTI1YTg0NzA0YThhYjA4MmE1ZDRmOGU5MDdiZDFjNDA2MTEgcHkzaworNjI5NTcgODAyNTE5ZjA0NzU0NWQ0MDExMjk3MjFkNzQwM2UzNmJmNzNkM2Q0MSBsZWdhY3ktdHJ1bmsKKzYyOTU4IGZlOWI5N2RiZDIzMmQyY2RhZGY4NzlhYjdmNjZjYWZhM2E1MjI0MzMgbGVnYWN5LXRydW5rCis2Mjk2MCA0YzVlZTFiMzgwNDUwMTdlODY1N2IzM2ZhZDVlYTFjZjY1MzNhNTY0IGxlZ2FjeS10cnVuaworNjI5NjEgOTFmZmQ5ZjNjY2VjOTAxMjA2ZGEyNzllYjFmYWE0MGJkZDU0MGZmNCBweTNrCis2Mjk2MiBjNTZlODNkMDhkMGIwNTgzNTM0YWI5NDBlYTAwMmFiN2U5YTk1YjE5IGxlZ2FjeS10cnVuaworNjI5NjMgMDdhMzVjOWE1ZDNmYjhjZmRjZjQ4ZWYxYjZhMzE3OWQwYjljMzg1MSBsZWdhY3ktdHJ1bmsKKzYyOTY0IDQ5OTg3NWNiNmJhMmM0MGQyNjA0MmZiZDA0YzZkOTViMzEzZTU5N2MgcHkzaworNjI5NjcgNDM5MjY5NDg1NTY5OTA5NzE0NzA3NmZiN2Y3YTdmOThjN2Y4N2YzNCBsZWdhY3ktdHJ1bmsKKzYyOTY4IDU2NzljZTY2ZTc0Yjg4MzhkNWRiNzdmN2M5MmFiYWVjOGQ2NGEwMTcgbGVnYWN5LXRydW5rCis2Mjk3MCA4ZGU1MWRhYTUwNmZkODU0OTZmZmE5MjBmY2IxZGM1MDEwNjQyNzVkIHB5M2sKKzYyOTcxIGFhOTI1MGU2YzQwOTM0ZTA1ODA1YzE4ZjJmYzYwMmQzMjllZGYyM2MgbGVnYWN5LXRydW5rCis2Mjk3MiA3NmVjNjc1ZTIwYjhjYmZkMTUzNmY5YTlkYTNlNjNkZTYwM2U1N2E2IHB5M2sKKzYyOTc0IDIzZWMzM2Y2NjczNjBlNGExNTA5ZTAxYTA4MGE5MTBjNDI4MDBlZTQgbGVnYWN5LXRydW5rCis2Mjk3NSA4ODRmODQyNmNjY2Y3ODkxMGNiOTNiZGMwNTg5MGEwZGZjYzAzMmMwIGxlZ2FjeS10cnVuaworNjI5NzYgZDBmNGMyNDY2OGYyMzdkYTY2M2MyZjQ1OGEyNTg1ZGQyMDI0YzAyZCBsZWdhY3ktdHJ1bmsKKzYyOTc3IGJlOGM0M2EzZmQ2MmZmNjI5NzQ3N2E2YTI2NWZjZDRmNDVkYzYyYmYgbGVnYWN5LXRydW5rCis2Mjk3OCAzODkzOGI3MTQwMTgyNDA2ODI0ODdiYzBmNDA2ZWNlZGQ3MjdlZmE2IHB5M2sKKzYyOTc5IGUzZDRkZTkzNTBmYjRkZGFkZjg5YjZmZjVkZGJiZDc3ZDBmOWJhYTEgcHkzaworNjI5ODIgMmVjZmM3MDEzZWI1YzMzNmNkMTBiMjM5Y2ViYmE3YmJmZjU4NDU5NSBsZWdhY3ktdHJ1bmsKKzYyOTgzIGExZjQ1OGIwMTQ5ZjA5MDIzYTdhNzBmNmU0NDY0YTIyYjdjZjhiMTMgbGVnYWN5LXRydW5rCis2Mjk4NCBhZDdkMzE5YWRmNzY3YWM2YTU3NzUwYTUzMTZiMzBkZjdjYTkxNWE1IHB5M2sKKzYyOTg1IDQxYTk3NjQ5ZGU2MTc1N2E1YTcwNjk4MTBjZDI4NDQ0NDc1YTQ0YjIgbGVnYWN5LXRydW5rCis2Mjk4NiAxMzJmODJkMjQwMjhlZDdmNzg2NWU3NzA3NjlhNWFjNDE1NWU0MDQxIGxlZ2FjeS10cnVuaworNjI5ODcgNDUxNjc0Zjg2ZDc1NDRlYTIzNTBmMDY0NjU2YzczYzk4ZDgzYzliNiBweTNrCis2Mjk4OCA3NjU0ZWI1ZDBhNjcwMWQyM2I0MjIxOTJhYTU3OTAwOTI1MDUyY2Q2IHB5M2sKKzYyOTkyIGJjOGIyMjY2MTFkZDQzZmJiYjhjMzMyODIyYTJmYzRmZWE1OGRlNDUgbGVnYWN5LXRydW5rCis2Mjk5MyBiMzhlZDdjMWNhYjFjMTllNzJkYzM2MDdkYTc5YTJhYWEyMmUxMGMwIGxlZ2FjeS10cnVuaworNjI5OTQgMmQxZWY5NDg3YzMxNTM4MzJlOTcwODc0YjE5ZDg4NmU4NjA4MTg5YyBsZWdhY3ktdHJ1bmsKKzYyOTk1IGJlM2M5Zjg4NjZlN2I3MmM5M2E5YTQzMDEzYjM0YzdmMGRmYjdmMTUgbGVnYWN5LXRydW5rCis2Mjk5NiBhYWM3YTIyYmVmODQ1ZTJhNWQzMzQ4Y2QyNTAzYTk2NTIxZDVmZTFhIGxlZ2FjeS10cnVuaworNjI5OTggMjcwZjU0ZTgyZDIwODFiMDBhYmNkYjE1MjBkNWJiZTM1YjlmY2IwZiBsZWdhY3ktdHJ1bmsKKzYzMDAwIDc2M2Q3MmQwMDAyNTdhMjg1NzRhY2Q2ZGViOTQzYjc3OTgzNzJhZjYgbGVnYWN5LXRydW5rCis2MzAwMSAzNDE4ZjJlYmNlODcyMzJmMzBjNjZlYjA5YjgyYjAwZTNkZDhmMzU5IHB5M2sKKzYzMDAyIDZiNGJmZjI4YzdiYTJiNWJlYTg0NTBjNDhmNTM3NjQ2NmFhZmFlYjUgbGVnYWN5LXRydW5rCis2MzAwMyA4N2RlNzU4ZGJkNjQ2NTViNmI3OTYyNjkwZGNmZjJjMzkyYmFjNWE2IHB5M2sKKzYzMDA0IDMzZDRlMDNiMjNiYWRlODE1MDU5YzU4M2ViMzJkMzk5Mzc3ZmJjZjIgbGVnYWN5LXRydW5rCis2MzAwNSAxMWEwYjIyMWYzNzI2NDMwNzQ3ZDgzMTEyNzQ2OTY0ZDJmMDBlNjE1IHB5M2sKKzYzMDA3IGI2YjJjZWE1ZDMwNmY3Yjk3MTRhZTkzMDI4N2EyNDI0YmNhY2ZmYWEgbGVnYWN5LXRydW5rCis2MzAwOCA0MjhiNjZjMDRkM2E5MTFiMjM5NDg4ZjMzNTNkZjhhYTFlNzBkNDNlIGxlZ2FjeS10cnVuaworNjMwMDkgNjBiMThiMzlhM2EyZTgzOWY2ZDVmMmVmMzJlN2E2MWJhNjRjYzAyZSBweTNrCis2MzAxMSAyZDA0ZTU2MDEyZWRjNmZkZDg3NmQ4YTAxYmNlMDI0MGU4ZDA3YWU1IHB5M2sKKzYzMDEyIDZlZGFhYTc3YWYyNzY4NmUyODM3M2I2YzFkMjRlNTc4ZmU5M2ViYTEgcHkzaworNjMwMTMgMGMwMmUxNWE3YzFmY2QyMDU0YWEwNGRkN2RhNTdmZTNkZTE2YjQzMyBsZWdhY3ktdHJ1bmsKKzYzMDE0IDJjYTdhMjc5ODE2MWM0MGM2YTgwMTE0MTFmOGMzZjdhNjc2YzMyYTQgbGVnYWN5LXRydW5rCis2MzAxNSBiZTFlZDYyZDhiODBjN2QwNzA4ZDhmN2NhNDliMGNjYmFhZWM5YmRjIHB5M2sKKzYzMDE3IGM3ZDUzMGU4YjdmNTNiY2QzZWMxM2NiYjA0NTU0NGIyYmMyNDZlOGEgcHkzaworNjMwMTggZjJhNjNlYzUwNTVlNmMyNDdlODAwZTQxY2E1ZjFiYzdiZjc5Y2E2YSBsZWdhY3ktdHJ1bmsKKzYzMDE5IDkxZmFhZTQ5Y2JlYmFhNWM4Mjk5ZDM3M2MwMGQzYTc0ZmZjOTIzODQgcHkzaworNjMwMjEgMWU0MjdiYzBmODE4OTRmYzUxYmQwMDgwZGJhZjNhMTg2NGI3MTFlZCBsZWdhY3ktdHJ1bmsKKzYzMDIyIGMwYzU3YmU5OGVlZDZjNDRhMzQxM2IwYzdjMTBjZmRkM2U4MzlkMzYgcHkzaworNjMwMjUgYzE1Y2YwMTQxNWY5MjU2NWVhNGFiNjk2NmVlM2MxZjYyYzBhMGEwMSBsZWdhY3ktdHJ1bmsKKzYzMDI2IGQ4ZTAwMGVjNzc5NmJmYzYxZTYxNTE5N2QzZjBmOTczOWYyOGY2NjggcHkzaworNjMwMjcgODkyZjliMjk1OWM5ZDE2NTYxYzVlODAwMTRkNDAzN2VkY2M2NmE4OSBsZWdhY3ktdHJ1bmsKKzYzMDI4IDM4NDk2OGQ0ZDY1NTg2ZTBlYzI3YWNmYmFiYzRkMjI4MzE5ZjUyYmUgbGVnYWN5LXRydW5rCis2MzAyOSBhYWFlNDg5YjlkODFjMWI0ODQyYzQxNDNlYTUyNmE3Njk5ZTFmMzE4IHB5M2sKKzYzMDMwIDJjYWMzMWZjMTdjMjFmYWFlZjM5ZmE0YjExM2UyMDNlMTRiYmJkODAgbGVnYWN5LXRydW5rCis2MzAzMSBkMjM0NTExOWEyZGFiZGIxOWYwNTZiZDFhN2I4NzE0OTEwMzQzZTEyIHB5M2sKKzYzMDM3IGZiMTRmZjA1N2MwOTY3NjZmZGQ2NmRkZTU1ODY5ZGQ3MWM0MjlhYTYgbGVnYWN5LXRydW5rCis2MzAzOCAxNmYxNmZjZTUzMDI1ZjYyYzE4NmJmODBmOTdiOWUwMjNiOWQ1ZTU1IGxlZ2FjeS10cnVuaworNjMwMzkgZjYzODhkYzAxOWNjODJmNmNiYzg1MWM0ZjU4ODA1YzVjNDhmMzM2MSBsZWdhY3ktdHJ1bmsKKzYzMDQwIDIyNGUwN2I2NTg2MWMyNTZiZWMwZjA4M2YzMWNkMGFiZTlhYTdlMGEgbGVnYWN5LXRydW5rCis2MzA0MSA5YzE4YmFhNzYwYWQwZDBkZDkxOGVjYTc0YmU0ZjgzYmVmOTJlZjIzIGxlZ2FjeS10cnVuaworNjMwNDIgYjQwODI3ZWI0YjgwYjc2ZWMzYTA4MWQ1Mjk1ZjQ0Y2U1YzAwMWQ1YyBsZWdhY3ktdHJ1bmsKKzYzMDQzIGZkZWY3MTc5N2U4MzIzMWJjYzIzOTQ5Y2FiZWQ3NTI3NDgwM2NkNTUgbGVnYWN5LXRydW5rCis2MzA0NCBkZDU1MTNiNDcyZGM5N2Y5MDlhNmRhMzI1YWQ5OGZiYjU1ZDFmZTBiIHB5M2sKKzYzMDQ1IDUyNTY2YjQ0NWZjNzU1NzAzMDE1YzlhYzg1NmQyNjQyNzYzMzJlNTcgcHkzaworNjMwNDYgZTVhZWIzZGYxNzRlNDk3ZWY1Y2YzNTQ4M2UyZjlhYzMxMWM0Mzk1MyBsZWdhY3ktdHJ1bmsKKzYzMDQ5IGQ4ODUwNzU4ODc5MDQ4OWU1Yjc5ZGZiYmJhMGIwZDRlODgyNWNhYTMgbGVnYWN5LXRydW5rCis2MzA1MCA4Nzc3ODMzMzNlYWVkZmU1MWEzMDFmM2ZmNmJmZmE1NDhlMGM3NjRiIGxlZ2FjeS10cnVuaworNjMwNTEgNmJkNjY2MDc1ZTE0YzhkN2U2OGI5OTQ3ZDBlMzNiMGJkYThhOWYzZiBsZWdhY3ktdHJ1bmsKKzYzMDUyIDVkYmJjNDQ5ZjAyYmUyMjVmOTA2OGYwZDA5NTEyNTg1OWM2MzkwOGEgbGVnYWN5LXRydW5rCis2MzA1MyBjN2QxYTE3MGM5NGMzNWNkMDE2NWRlNjVmYzgwNGFkZmUyNWZkMDEyIGxlZ2FjeS10cnVuaworNjMwNTQgYzIxMzZjMTRkY2Q3OTQwOWQ4ZTEwMmZkOGMzOWI1N2Q2YWFkYWQ3ZCBweTNrCis2MzA1NSBmNGU2MWRjZGI2Zjg1YTRkNzM1OTc5YWNiMThjM2QzNWZjNWI1YjkyIGxlZ2FjeS10cnVuaworNjMwNTYgYjI5YjQ2YTQzOWQ5ZjBjOGU1NWJlNDAzYjkyMTA2YjgwZjY2NGQxNyBweTNrCis2MzA1NyA5Yzc2NWY0ZWQ1MTIzNDUwMmY0NjFhMmIxZTVhZGYxZjNkYzFiZTIwIGxlZ2FjeS10cnVuaworNjMwNTggYWZhZWVkYWRiZGIzNmIzOGMxY2E2NWE3NWIzNzliNGZiYTA3ZWJlMyBsZWdhY3ktdHJ1bmsKKzYzMDU5IDRmYjZjMGMxNjlmZjBiNWNjMjQyMzk4ZTc2NjJhMDI1N2JhYjQwNGMgbGVnYWN5LXRydW5rCis2MzA2MCAwZGY2MTYxOTNiOTg4MDZiNDU5ZGQ5YzZkOTdjODlhMTFiODFhMGM2IGxlZ2FjeS10cnVuaworNjMwNjEgYTczZTg3ZjE1ZmZhNzQ5ZWUyODdhNzkwMzJmNDI1NjU4MDQzNjcwYSBsZWdhY3ktdHJ1bmsKKzYzMDYyIDA4MWYyYTY2MjYzNDY1YjU5NTdkYTIyNzEyYWRiMTQyOWE1MGI2MzQgbGVnYWN5LXRydW5rCis2MzA2MyA3Zjc3ZGI5NTBjYjQ0ZWZkNzZhN2RhZWRkNDVjZmU2Yzc2MDBkNzI2IHB5M2sKKzYzMDY0IDgxOGNhZWJlMzczMzExZTE5NDgxYzgxODg3NWFjNTU0ZTg0NTg3ZTIgcHkzaworNjMwNjUgMDc1NzJhODI1NDBmZGRlNzE3MGQzM2Y3OWMxNmQzZTU1OThhYTQwYyBweTNrCis2MzA2NiBiZTg3Yjc3MjY4NjYwYjVkODU4YzVlNjExZjBhYmNjNjA4NTFlMDA3IGxlZ2FjeS10cnVuaworNjMwNjcgZGVkY2U3Y2I3YTVkZmY3Y2EyMjBlYjUwZDY2MWY1NGQ0MjYzMGRlNyBsZWdhY3ktdHJ1bmsKKzYzMDY4IDFmZGZiMjlmNGZiODM2MDljZjZkYzkyYjA0MGRjZjZlOGM0ZmVhOWYgbGVnYWN5LXRydW5rCis2MzA2OSA1Y2NkMTY1ZjMwYTQ1MTIzMjliYWUxNjJmNDgzYzE4YTZkMWNjYzNhIGxlZ2FjeS10cnVuaworNjMwNzAgYjE3YjI5ZTYwZTliYmQ4ZGJlNTA4MjhhYzgyOGE4MjU1MzMzYzBiNSBsZWdhY3ktdHJ1bmsKKzYzMDcxIDQ5ZmYxZmMwMGM2YzUzNGUxZjQxYWZjZWEyMmI2NDY2MjYyMzhkMWQgcmVsZWFzZTI1LW1haW50Cis2MzA3MiA2N2U0MzYzZWEyZTA2NzRlN2ZkNDYyM2U5ODg1YzgzMGE3NzI0OTVjIHB5M2sKKzYzMDczIGFiMTkwZjcxYjkxNzY5NTYwNTFhMThmZWM4NDllMGI5ZTZkN2RkY2YgbGVnYWN5LXRydW5rCis2MzA3NCBlMzQwMWYzMTZhM2I5NGI4NmRlNDVkMzE2ZmRhZTY0ODZiZjk4NGU1IHB5M2sKKzYzMDc2IDIxYWUyYjY1YmJiYjM2OTdlMTY4NWE0NTA5NTM0M2ZkZTNiNTc0NDcgbGVnYWN5LXRydW5rCis2MzA3NyA3NjY4MWE2MzA2YTgwNzBlMDE2NTIzY2NkMTM3M2FlZDA4ODkwODJhIGxlZ2FjeS10cnVuaworNjMwNzggMjA2NzAwZDc0OWYwZjMyMzlkMDNlMmFjMzg2NjE3ZjQ3YzdkNDJmMyBsZWdhY3ktdHJ1bmsKKzYzMDc5IGJkMmM5NWMxNjVlYTRjMGQzZGVlZGUzMjI1MGE5M2JjMDJmNWM3ZWQgcHkzaworNjMwODAgYTk0OTVhM2ZlMmUwYjc4M2RhZDUxYWUwYTBmZjBkZTg3ZDQyNTc4NSBsZWdhY3ktdHJ1bmsKKzYzMDgyIGUwM2Q4ZDNlNjc1NDRmNzdkNzM5MGVjYWNkOGMwMjYzODI5NDdjMDYgcHkzaworNjMwODMgYjcxZmNmZDk4NjZiYWVlYjBkZWRmOGMyODljNDhlOTM0MzAxYzBhYiBsZWdhY3ktdHJ1bmsKKzYzMDg0IGFiZTNmMzA1ZjZjOTYwMWRiMjk4MDg1MTg4OWNmYzgzMmE3Y2NlODEgcHkzaworNjMwODYgN2U0NjllM2NlYmRhNmUwOTgzNzEyOTIwZGZjYzU5NzFkZDdlODc4MCBsZWdhY3ktdHJ1bmsKKzYzMDg3IGI3MTBkNzE5YTA4MmFkNTk1NWE2NTg4MGFjZmI2ZmFlZTBlNWRjNDEgcHkzaworNjMwODggODExMzEwNDZkMWIwOTI5MGZjYmMwYzQ5NTVmMmIyOWJjZTQzOWIyYyBweTNrCis2MzA5MSA2YzE1ZGI2Y2U1ZGFmNjRiYzNjY2JmZTM3MWU4MTMyZTE4YjRlOTFmIHB5M2sKKzYzMDkyIGVkMmMxODg4ZTE0MzAxNDFmOWJlMzBlNGRmMzgwYmI4Nzg2YzhiODkgbGVnYWN5LXRydW5rCis2MzA5MyBlZjRlYzk2OGZkYjY2ODBlZjMzOGYwMzZjNjIyMTNiMzA3ZmQ5ZmJjIHB5M2sKKzYzMDk0IDc0MWIyNjY3YWMwYjcxNGY2YWZkYzExMjJiMzc5OTBjZDgwM2Q3MDYgbGVnYWN5LXRydW5rCis2MzA5NSBmM2QwZWMwYjczN2ViOWMyYmZhZTc5ODIyNTM2NGViN2FjOTEwYWE4IGxlZ2FjeS10cnVuaworNjMwOTYgY2NjNjYzYWE0YTc2NDRjN2UxYjVlMWExYzU0M2ExNTkxYWEyODUwNyBweTNrCis2MzA5NyA2YTE5YjliZWExOGU3YmQyZTE4ZjBiZWFmMDRmNWYyOGY4OTRkZTQ2IGxlZ2FjeS10cnVuaworNjMwOTggOGVhOGZiMTRkZjcxNTNkYzcxMWMwNjI3ZDllMGVlYWU3ZTcxMTZmYiBsZWdhY3ktdHJ1bmsKKzYzMDk5IGU5NDU3NDQ1NWQ5ZGQwNzczYThlZDlkOGQ1M2JiYzJmZWYzNjcyZGUgcHkzaworNjMxMDAgYzhiNzcwMDdhMWMxNDQzM2VjZmZlZDM4NmI5ZjlkMWYwYzE3MDc2YiBsZWdhY3ktdHJ1bmsKKzYzMTAyIDIyY2RiNmVjM2U1NjkyYTI1ZDI1YWZjOGI2MzEzMDFhMzAwZjg0MzMgcHkzaworNjMxMDQgYTQyNzdjMWM5OGE4NTQxMmY4OTFlMDYzM2QzMDFlOGVlNGE4M2FlMiBsZWdhY3ktdHJ1bmsKKzYzMTA1IGQ3YzIwN2I4MGM0MGFhMjZmNmEwMWE0YzE1ODk5MGM4MWU5NGYwMzMgbGVnYWN5LXRydW5rCis2MzEwNiA5MDY4NjA0NWZiYThkMTJmNWJiMGNkNzRmMGIyYWNmYWRjNmU3M2UzIHB5M2sKKzYzMTA4IGE5ZmY3Mjg5MDgyYjIwZmM5MmEwNzFkMWQwN2UwYWI2Y2FhM2MxYTEgbGVnYWN5LXRydW5rCis2MzEwOSAwZDQ5NTc1NDBjOTZlOWY5N2QxOGViMzNmZjQxNGIzOGI0M2FhYmIyIHB5M2sKKzYzMTE0IGMyYWI3YTA2ZWQyNGJlYWQ0ZWM2MzZlYzVhMjQ5NWQ0MzJjYTU4MDQgbGVnYWN5LXRydW5rCis2MzExNSA1MjZkOGNmN2E5MjA2ZTNmNjQ0MjJmMzFhYjNlNzczZjdmNDRmOWMxIHB5M2sKKzYzMTE5IDRjODM3NTU3NGFhOWU3NDYxMGE4OTYyOTg0NWQ4MWVjMzZjMTI5NWQgbGVnYWN5LXRydW5rCis2MzEyMiA2MjJhMjU5NjcyMjhkOWEwODFiNzgzYzgyYWNmNzE1NDcyOGZjOTJiIGxlZ2FjeS10cnVuaworNjMxMjQgZjBhMjg1ZmMyMDFkMDA1ZTUwM2I0NmQ4MDAxOTIzNmMzODI2YWMyMiBweTNrCis2MzEyOSBiZGUzOGE3YjIzMTgzOTkyZTgxMjg5YzNkY2JlNjRjZjBhZGIyNGE4IGxlZ2FjeS10cnVuaworNjMxMzIgYTM3NWIxMzQ2ZWIzN2UzMjQ2ZWVmNTk2YzhkMzgyMGY2MWEwNmJhOCBsZWdhY3ktdHJ1bmsKKzYzMTM0IGRhZmRlMmVlZTNkMGQ4YTEzZTk2OTJhMTU0NDEwYmJjOGI3Yzk1YjUgbGVnYWN5LXRydW5rCis2MzEzNiBjOWU1ZmFhNDgyZThiYWYxZGU5YmUyNWUwZWM2MjllN2ZhNmJmYzQxIHB5M2sKKzYzMTM3IGIzMDVhOTZhNGJlMmU0NGFhMTE2ZWRlMGQ0MWYzMTVlYmRlZThkZTcgcHkzaworNjMxNDAgYWNhNWMxZDFjNTY5NGEzZWMwNTZmMTAyM2IxYTU5OThhNzIxNzJjYiBweTNrCis2MzE0NCBhOWFhMzQyYTM2N2E5MjJkMjM5ZmNlYmI1NDk0OWJkYjRjMWMyODBkIHB5M2sKKzYzMTQ1IDJmMTQ1MThmMzAwYjhmYzMzYTllYzY2MThmNjY0M2Y0ZWJhZmIzMmUgbGVnYWN5LXRydW5rCis2MzE0OSA3OTkzMjFlN2U3YmI0MzI5MTc2YmEzNzFkNzFhYjFiNWU1MjFjOWQyIGxlZ2FjeS10cnVuaworNjMxNTAgYzFhNjhmNTQwZDViYzNiM2M1ODczZTdkMjBhODM2ZTUwMzc2NGZhNiBsZWdhY3ktdHJ1bmsKKzYzMTUyIDgzN2RlMjRhYzFmN2E1ZmJmNTc3ZGE4NGI3OTJlNGJhZjlmZWNhYmEgcHkzaworNjMxNTMgNGFjOWNjMWQ3Nzk4NGJjOWMzZWNlMzMxMGMwMDUxZDllMWQ5N2M1MSBsZWdhY3ktdHJ1bmsKKzYzMTU0IDY0ZDE5ZjI4NTFlMWJkZjIxMzMyMjBkNTE2NDQzYjUxOTA3N2I4M2YgbGVnYWN5LXRydW5rCis2MzE1NiAxMjgwYjhlYzlkYTM4NTFmNmJhYzlkMGMyOGExMmIyOTNjZTU2ZTI0IHB5M2sKKzYzMTU4IDVhN2NjZDY1ZTU5YjNkMmVhZjc5YzUzZDhjNTdmOWMxMTJmMDI3OGQgbGVnYWN5LXRydW5rCis2MzE1OSAwODljOGQwZGY3NzQ0NGQxNTk2NGU4MjhhNDIxNDg1MjVkZGUxNTgwIGxlZ2FjeS10cnVuaworNjMxNjEgYmEyM2ZjMTU3NjE4YjM5OTcwMzBhMTc2YjNjZTc0ZmNjYjg5MzU0NSBweTNrCis2MzE2MiAzOWY2ZjdmMTcyY2E4ZTU0N2MyODg3ZmJjNDRiMDZhZjZmYTRjZjhlIGxlZ2FjeS10cnVuaworNjMxNjMgZmQyM2U2ZDE3N2U5ZGE2ZDdiNTM0YTU1ODVjODYzM2JkZDhhMTJjNyBweTNrCis2MzE2NCAwN2E1M2JiODJiYWEwNWJkYjE3YzgzNjRiZmRjNTdiMGQ2ZGE4ZTQyIGxlZ2FjeS10cnVuaworNjMxNjUgZGYxMWFmZjA5MmNkODRlOTVhYThhYWY4NWY1NDVhYzI2ZmNmYzllYyBweTNrCis2MzE2NiA2YTc3OGMwYTUxN2U2MGViZDgzNzY2NDRjY2U5NDc2Y2Q5OWY0M2RkIGxlZ2FjeS10cnVuaworNjMxNjggYjNlYWMzYTdmZGMzYzc1MTg0OTU4ZjE1ZjU2ZDYwYTU5OWU1ZjY1ZCBweTNrCis2MzE2OSBlOTk3MzkwMzY2MDY5YTQ5NzRmOTU5ZGFlNTcyMmY4ZDY0MDE1YTRhIHB5M2sKKzYzMTcwIGQyODEwYjhhZWQ2ZDFmYzA3OTE2NzMwN2RkYmFlM2E2YzU0Y2NmMjYgbGVnYWN5LXRydW5rCis2MzE3MSBmZjliMjA1NzcyMmNiNTA2YTk0OGZhMDlhYjBiNmVkNGRlMzIwYjNiIHB5M2sKKzYzMTczIDkwOTE2MzdlMzJiMWUzYjdkMjgxMWE2ZDU3NDFmOGUzOGEzYzdhYzcgbGVnYWN5LXRydW5rCis2MzE3NCA5OWY1MGFmNjkyZDAyOGMxMDQxN2EwOTRhZDU2OGU4MzI5MzQ2NGQ5IGxlZ2FjeS10cnVuaworNjMxNzUgOTJkMDBmNWYzYzBkMDQwMTk1ZTdhOWIzODc5NDM5ZGUzNzAxN2QwNiBsZWdhY3ktdHJ1bmsKKzYzMTc2IDlkNDZjMjg5ZDE2NjA1MWFkYzY0NmRjMjc5ZDJmYTA5NTJhOGFlNWUgcHkzaworNjMxNzcgZTY0MDM5YmJmZTI2ODY3ZTk1ZDRjZGViZTdlYTExZWUyYmYzNmVhMSBsZWdhY3ktdHJ1bmsKKzYzMTc4IDFlNTczYzJjZDliZTYxYTE4MDM1OTQ4MjFmMWUwZDY5MjI5OGEwODggbGVnYWN5LXRydW5rCis2MzE3OSAyZWJlMjcyN2ZjOTJhZTQwN2M2NzQ4MzVmMDFjODg5MTYwOTUxNjVkIGxlZ2FjeS10cnVuaworNjMxODAgOGE0OWY4ZWY3Zjg5NDIzM2E4YTEwZWRlYTdjYjhiZTcwYTkyM2I0YSBsZWdhY3ktdHJ1bmsKKzYzMTgxIDg5NDE0NGIxNzNjOWY2MmUxNTBkMGQ5OTI1OWYzYmY2NjliNThhNTYgcHkzaworNjMxODIgMDNiMTIzM2JmNWZlMDBjODZmZGU5MWU1OWQxMWE1Yjg2MGQ2MzBjOCBweTNrCis2MzE4MyA4MjZhZmY5NWNmMGJkMWIyYjQ4Yzg0Mjg1NDhmZjA5M2UxMTdmOTNiIHB5M2sKKzYzMTg0IDY1Yjc1Zjc4MzhmM2I3MzBlYzU3Y2EzYjgyOTgxZDkyNTY2MjkwZTkgcHkzaworNjMxODYgNTFhZmQ1NjZkYjJiZDQyNjNhNDg4N2IxYTlkN2IxMGM4ZjE2NDc1ZSBsZWdhY3ktdHJ1bmsKKzYzMTg3IDZkZjAzOTRhYmJmMWJkYTJiMGQ3ZTU1ZmQ0NzY1ZTZiZmFhMmFjYmEgbGVnYWN5LXRydW5rCis2MzE4OCAyODQ1MWI1ZTgxNmZkYmEwMmJlYmI2YjZiODUzNzIyNWVkNWFkODFmIHB5M2sKKzYzMTg5IDYyNjU4YjBhY2EwODIyZTRjOTY4NTdjMWUzY2EyOTk5ZGMwYmViNGYgbGVnYWN5LXRydW5rCis2MzE5MCBlZWFkMDhiOGUxZmQwNjNlMWQzZWI0ODU1MzI2ZWY4ZTdkOGVlNTExIHB5M2sKKzYzMTkxIGE1OTY0ZWU2NjE5M2E0YjAyYWRkMDkyYTg5Njg5NTA5NTVhMjg4ZDIgbGVnYWN5LXRydW5rCis2MzE5MiBkYTZlZjExMGMzNzM1MjQyZDcxNDI2Y2FjMWI0ZWI0MjJkZWU0NjA0IHB5M2sKKzYzMTk0IGU4Zjc0ODQ3MjczMGM3YmRhMDk3OTUxZjhkNjJjNjkyYzhmOTZiNTcgcHkzaworNjMxOTUgOTExYTdiY2RjMTdlNTkxMGNkM2ZlODg4MDQyOTFjZjg5ZWZmNmM4OSBsZWdhY3ktdHJ1bmsKKzYzMTk3IDc1NTY4Y2RkYTk0NDcwOWZiMTY3NDY5ZmY3NTUyMDdhNGIzYjM5ZmMgcHkzaworNjMxOTggMzg0YzU0ZmFkYWEyZmJkM2Q0NjY2ZDJjZWY5ZjliNzc1MzQ2YjlhZCBweTNrCis2MzE5OSBhOTU5NGE1Y2RmN2ZiODYyYjQ0OWJmNzg2OGMyYzVmZGM3NDI2ZDZhIHB5M2sKKzYzMjAwIDU1ZDhjMzUzMjJhNzBkYjNhZTk5YTgxZGJlZjI1NTg4M2Q2MDM3YjMgcHkzaworNjMyMDMgYzI2YzAyYTQyMDA4MjRiZmYyNWViMWQyODgzNzAxNjk3MmNkNTAwOSBweTNrCis2MzIwNSBlY2RlZWZhOGJiNmE4NDE2MDk1YWM4N2RhZjJlNDc3MWJhMTczZDE2IHB5M2sKKzYzMjA3IDY5ZGE3YTRmMmY4ZTJkMzA5YjRlN2NjZDYxNmZlNGYxODNmMGVmMTQgbGVnYWN5LXRydW5rCis2MzIwOCA0NzY5MmY2YzgxNWVkZGJhNDg0ZTIyYTFkN2E3ZGQzMjQxNmU2YmYxIGxlZ2FjeS10cnVuaworNjMyMDkgN2M4YWNhYTI3ZWFlMWQ0NTVkY2FlZWExYjhmZDQ5NTU2MDJiY2M4NCBsZWdhY3ktdHJ1bmsKKzYzMjEwIGU0ZTNiM2ViYTIyNmZkODliNjczMDIxMTlmYzQxNzdiYTJjNGQxYjMgbGVnYWN5LXRydW5rCis2MzIxMSBkMmMxZWQ0MDhhMWQ3NmE2NTcwMTVmNTIzYjUyZmU4NzUxYTM0YzBlIGxlZ2FjeS10cnVuaworNjMyMTIgNzY0NzdiOTc4ODUwOWI0OWE0OTI2YTg5ODQwNDkwOGMxYjEyOWFkMiBsZWdhY3ktdHJ1bmsKKzYzMjEzIGYyMmVkODAyODlkMzAxNDc5Njc5ZjI4NWUxYWE2Njg5ZjI5YmFmYjUgbGVnYWN5LXRydW5rCis2MzIxNCA0OTAzOGVlMGU1YjViNTMwMDM3YmM0YTllYTRmZGUzYzI2Yzg1YTFlIGxlZ2FjeS10cnVuaworNjMyMTUgODEyMmEzMjRiN2E1NTE5ZGRhYTRiODQ5NWQ0ZTU3MzlkZWIyMTBkZCBweTNrCis2MzIxOCA2MDNhOTM1ZWFhZGE5ODVhYjUyYjFmNDAwZTgyYjFhZGVmNmM3NjdkIGxlZ2FjeS10cnVuaworNjMyMTkgYTE3NTg1YTQ1ZWU3ZWEwZjBjODQ5MzllNjc4OTE3MmU4YTI4NTQ4MyBsZWdhY3ktdHJ1bmsKKzYzMjIwIDdiNmUyMjJlYWRhNzBhYjYyZWI4MDI4MTBkY2YxN2UwMDU0NTZlOWIgbGVnYWN5LXRydW5rCis2MzIyMSA1ZGQ2YzUxYWVlZGVhNDg4YzNkMjg3MGIwZGE4ZTkwMzZhMTVhZDU4IGxlZ2FjeS10cnVuaworNjMyMjIgOGIyMjNkMzUxYjA5NTkyYjAzY2U3OTQwMzVhYjI0YmFhMjNkYTk4MCBsZWdhY3ktdHJ1bmsKKzYzMjI1IDU2MWU1ZjUwMjZlYjBhNDRiMzhiNTBmMzg0ZWQ3YmEyYTY0YzlhNzggbGVnYWN5LXRydW5rCis2MzIyNiA4NzYwOTEyYTllOWZlMDU5MDQ1NDdmMDgyMjM0MzgyNTJhZmFmMzI3IHB5M2sKKzYzMjI4IDAzZDY4NzViZGUwZWJiMTkxN2IxODA0NDUwNmVjODM4MDU1MTVmODIgbGVnYWN5LXRydW5rCis2MzIzMCBlNTM2YzY1MDE0MDJjMTE3ZDBlYTRmZjgzOTBmZWQ0OGM5ZjFiNjI1IHB5M2sKKzYzMjMxIDhmYjliZDU5NjJlNDZmYTJmYzVkZmUwMjVkZWZjZDM5M2IwNzAwN2UgcHkzaworNjMyMzMgZjJjNGFiNzRjYzY1YmNmZmQzNzdiZmY4YzE2MDZlNjJiZjA3MmQ0OCBsZWdhY3ktdHJ1bmsKKzYzMjM1IDkwNWI2MjcxZWYxMThhYzNkMjA0MDBiOGY3YWQ4ZjVhNTA4MGRjNDQgcHkzaworNjMyMzYgNzFhYTkwM2ViN2FjMjI0NmU5YmU2YzM2ZTBmNTIwOTNlMGNlM2JiMyBsZWdhY3ktdHJ1bmsKKzYzMjM4IDgzZTk1MGYyOWQ0NDMzNjZlMjVlYmNkMDc2YmRmZGZmMjViYTZjN2QgcHkzaworNjMyNDAgYTNiNGYxZTY1Y2JlYWU1NjRmZmQ0YzllMTJjMTFmMzE0MDBmMGJjZSBsZWdhY3ktdHJ1bmsKKzYzMjQxIDQyZmM5MjIxMjBkOTZlOGMxZTgxNzkwYmZhN2IxMGNhYmVmNGY5ZDkgcHkzaworNjMyNDIgOTkzZDBiYzA3ZTAwMmE5Yjk1OWRiZTlmMjVmMjA1YmZhZjRlMzYxYiBsZWdhY3ktdHJ1bmsKKzYzMjQzIGM1NDZjNDBmY2VjZTBhNjc3YzJmMDE3ZDNkYTRiYTA0NzU0ZDhmZDQgcHkzaworNjMyNDQgOTU4Mjg2YjE1ZGUwNTBkOWNjYTJhNDQ4Njc4MDRmMzRiMDI3ZTJmMSB0bGVlLWFzdC1vcHRpbWl6ZQorNjMyNDYgZjI4YjcwNjQxNTk1ZjJkMTZmZGY4ZjA2ZTA1NTBmNzMyMmM3ZmE3MiB0bGVlLWFzdC1vcHRpbWl6ZQorNjMyNDcgMTc5NTZkYmFkMGU0MWUxYTRlZGY2MjU5MWFkNDI2M2ZmYTc5OGFlNCBsZWdhY3ktdHJ1bmsKKzYzMjQ4IDcwODIxNGYzNTFmZTdkOGJkZTRhOWQyMjEwNTQ0YzMwZmUxNzJkNzggbGVnYWN5LXRydW5rCis2MzI0OSA3ZTE4ZDY1OTM4MjQzYTUwNzVmNmMxN2ZhNmQ4ODlhMDk1YjQxODYyIGxlZ2FjeS10cnVuaworNjMyNTAgYzIyOWU3NWZjMjI0OWU2YWRlNDNiMDY1ZDFkZWY2NjkzZTMxMjZkNCBweTNrCis2MzI1MSAzNWE4ODk5MjU2YzJjYTdiMjkzOTNkYjI4MTkxZDgxZTIzM2RkYzczIHB5M2sKKzYzMjU1IDRlYjU5ZDhiYWM0ZDY0YzhiMzhhOTAyMTY3NjIwN2IwZDZmNjE1ODEgbGVnYWN5LXRydW5rCis2MzI1NiAwNjYzZjJmYWI5MzQ1MmM3YzM5MTRjOTc0OGFjZTJmODNiZGQ0ZGJhIGxlZ2FjeS10cnVuaworNjMyNTggNDE2MjhmMzhjNWEyODg3NGZkNjBhODY4MTQ1ZjVkMjA5YzdlM2JjNCBweTNrCis2MzI1OSA2ZjI1OWE5Y2NjODQ4MTg4NTM0MjdiMzQ2ZTBmY2MxY2RiZWEwZWQ4IHB5M2sKKzYzMjYwIGYwYTQ3MDkxYzhkODZkZDJmM2JlZGM5YThiNjFhZWMxZjgyMzVmZDIgbGVnYWN5LXRydW5rCis2MzI2MSAxZGY0NjY3MDJkZTJhOGFkMmNiM2NhNzdhMTAwYjJhNGNlNWExYzdkIHB5M2sKKzYzMjYyIGFhYjhiOGQ0YjZhNTA4NTVjZjNhOTE3ODVlNGE0N2VjMzJhZmVkOGUgbGVnYWN5LXRydW5rCis2MzI2MyBkNWVhYTdkYWVjMmY0NzMwNWMxNWI4OGY4YTYwZGNhZGFjNDU3NWRlIHB5M2sKKzYzMjY1IDA1NGZmNDEyOGY3NDRlZWRjMWRlMmZkMThiNDg1MGRhMGExYzMyM2EgbGVnYWN5LXRydW5rCis2MzI2NyAyN2Q2OWRjNzI3OTMyMWQwZDk0NGZkNGYyMzM1NzA2NDU2ZjA4YjAzIHB5M2sKKzYzMjY4IDVlODkzMjk5MWFkZmQxMjFjM2U1NTMyYWJmNTczZThhZmE0YWRkYzggbGVnYWN5LXRydW5rCis2MzI3MCAzYWJhNDQyNTYyNjU3OWVmZTA2OThlNjk2MjhhNjI4ZjRmZTYzMTNiIHB5M2sKKzYzMjcxIDYyZDllYzljOWVmZDEwMmE3NTQyNjZkMjIwZTc2ZjRkOTkyOGUzY2MgbGVnYWN5LXRydW5rCis2MzI3MyBmNTEzYmI3YjhkOTdlNTViODFmM2IxNDVhNWI4OWYzZmVkZDhlYWJkIHB5M2sKKzYzMjc0IGEwOTJkY2U2ZTlkNGE5NjEwMjg0MzNkZGUzYjg0ZDBmZTNhOWRiNmIgbGVnYWN5LXRydW5rCis2MzI3NiAzY2MwYmY3ZjA0YjZmNTUxMGRmYzUyOGM1MjhiYWQ2NjdhYWMxMWIyIHB5M2sKKzYzMjc3IDg3NmQyZjBlOTJlNGUzYTE1NDA4YTVmZjlkNjNkYTRjMDRlZGM0MjggbGVnYWN5LXRydW5rCis2MzI3OSBlNGJiNmYxNzRiMDA0NDQ3Y2ZlMzY1MDA4YmM4NGY3OWJmNzJiZDJkIGxlZ2FjeS10cnVuaworNjMyODAgNmRjOTFiMzY2ZDlmZmU3MmJhMDI0MDViNTkwZGM3NGQzZTI0ZjAyNCBweTNrCis2MzI4MiA1N2NmMDAxYWEyYTI0ZTg2Y2JmOGEzNDdkZTg4NDcyNDA5ZjJmZDJlIGxlZ2FjeS10cnVuaworNjMyODQgZmNmNWRhYzUxMzk0YjhiYjRmZjdlMTNjZTI0ODhkNzEwZjExZWNiMSBweTNrCis2MzI4NSBiYWRhMGU4NzFhYzFjZjE5ZWYzOTc1OWMwY2VlY2ExMDU0ZTIyZTAxIGxlZ2FjeS10cnVuaworNjMyODcgNWFmMzhiOTVhMTdmYWUyOTllM2E1OWRhNjVkYmIzZDZhZjMzMjZkMCBweTNrCis2MzI4OCA5NmE4NzZhZjkzMGE0Nzg3Nzc1YjNmZjM4ZDRmZjZjN2M2NTg4M2Y3IGxlZ2FjeS10cnVuaworNjMyOTAgOGExMGE0MTE5ZmMyNzU3M2FmZWFjZjk1NzI2ZTBiMjRiNjI4ODQzOCBweTNrCis2MzI5MSAxYjQ0ZWQxYTkwNDY1ZWU0YWRjNDA0YWZhMzExNWE0MTYyYjhiZWUzIGxlZ2FjeS10cnVuaworNjMyOTMgZGM0MDk4Y2E4MjNlMjg3OWJlZjM1YmU3MmZhYjIwZDQ5MGU2Y2Y4MyBweTNrCis2MzI5NCBkNGI3NDNiZGViYjE2YzVjOTFhYzVlOTZiYTNiNzllOTNjMmRhZGEzIGxlZ2FjeS10cnVuaworNjMyOTYgY2ZhOGM2MThlZDM1MzcwOWFhMjBiZTQwMzNmZDc0MTNlNDdhYmNmOCBweTNrCis2MzI5NyA4MDQzNWJjN2FhYzQ4MzhmODhiNWJmYTU0MGMyMjlhMjE4MGIwYmM5IGxlZ2FjeS10cnVuaworNjMyOTggMWU1NWIyZDFjOTNlZjM1ODdjZGMyNmM3MWVmMTNjMWQxYWViODdiMyBweTNrCis2MzMwMCA1OWJjZGZkMjc1MDFmZWE0Y2QxMzI1MWVmNWEwMjZkMWE3MTQ0MmY5IGxlZ2FjeS10cnVuaworNjMzMDIgNTI5ODczOWYwYTRkZmMxN2Y0YjFkYjQ5MWVkYTgyNTExMmRiNzhlMiBweTNrCis2MzMwMyBkNGFjZWQzM2Q1N2E1OTI0YzMyODdhOTVkYzg5N2Q5MWNhMWUzZmZjIGxlZ2FjeS10cnVuaworNjMzMDUgZTExNmNhMjZkOGYxY2E2YmJjMDBjNjlhMDhjY2EyZTk5ZDFhNDdjZSBweTNrCis2MzMwNiBlZDUzMmNhN2FlNzVjZmQ2OWFlNmFiODBlMTcwODdjZTA1NDY5MGI2IGxlZ2FjeS10cnVuaworNjMzMDggYTdjMWIzMTcwMTEzODMyYWZhNmVhMDQwMTE1MWRjZmZiMDVlNDk2NSBsZWdhY3ktdHJ1bmsKKzYzMzEwIDVhNDYwODI3MmM1MDZhNmMwNDI4ZGEyM2UxNjk4M2ZjZTZmNjUyMjcgcHkzaworNjMzMTEgZmRhNGQ0MWEwNzczODc5NTY5Nzg4MGM3ZjllY2EzMDI2NTViMGE3ZSBsZWdhY3ktdHJ1bmsKKzYzMzEzIDFkNjJkMzI2MTJkNmRjZmIyZDI2NDYyYjVlZWVjOWEzOTBmOWFkMDIgbGVnYWN5LXRydW5rCis2MzMxNSBhOGE1N2ZmNmY1NjhiYzRlOWQzNmQwZWE2YzBiYzEyMjZhNTIwNWZjIGxlZ2FjeS10cnVuaworNjMzMTcgMTM1NmE0MTg4MzBiMzRjYzE4ZmYzNzM1ZmMwZWNlNjZiNTRjODcwNiBweTNrCis2MzMxOCA2MjhkZDVlYzRkZDJlOGE3ODRhMjBhMmIzYjhhYWQwOTMxNGZkNWFlIHB5M2sKKzYzMzIwIDE1NzNjNzc2ZGY4MmVjNTU1ZThiZjc4NzhmY2NjZjkyODIxZTc0ZjcgbGVnYWN5LXRydW5rCis2MzMyMyBkNTkyOWNmODY4Y2JiYjUyMzFiMTkxNDNlOWIzOWJjMDlmNjNhNTVhIGxlZ2FjeS10cnVuaworNjMzMjQgOTE4OTYyMjcyNzJhNjkyYjUxZDUwYTBiNTEzYzJjOTBlOGM5MTc3MCBsZWdhY3ktdHJ1bmsKKzYzMzI1IDhlMDAxNzk4NmY1MGVlNjRhMTdlODdmOGNjYTBhNGQ3OGVjMjBmZDMgcHkzaworNjMzMjYgMzkxOTc5YWY2NjJiYzQ4ZGFkNjc0NDRlNGFlZjI2ZWY5ZjljZjY5MSBsZWdhY3ktdHJ1bmsKKzYzMzI3IGU2OGU2MTA4NjJiZWI1ZjlhNTcxMmNkZGIzMzJhOTM1OTVlMmNlZjAgbGVnYWN5LXRydW5rCis2MzMzMCA4N2E3OTM1MjM0MmM2MjE1ZWFjZTBmNmNjZTQzNjYxNzU1NTY2YzhmIHB5M2sKKzYzMzMxIDA4MWMxNTgwNmUyODdjMDM2NjE2YTUwODJjZjdhNGJlYjkxNTA2OTcgcHkzaworNjMzMzIgMGQ1NGM3MDU2NDY4YjMyYTY4YTU3N2YzOTIzNjRiM2RkOTZhNWFlMyBsZWdhY3ktdHJ1bmsKKzYzMzMzIDM5N2YyOWRkODJiZGM1ZGM0ZWYzZmY1YjcwNjYwNTUzNGFlYzczMTcgbGVnYWN5LXRydW5rCis2MzMzNCAzMWNjOGUxYThmZGY1ZjIzN2Y1ZTlhOTY5ODkzOTlmZjkyYzFmNmI1IHB5M2sKKzYzMzM1IDk2MGFkZTg1NjA3OGQ2NTcxMmFkNjdmNDA2NmVjNDY3ZDA4MjJlNzYgcHkzaworNjMzMzYgYWUxNmU5NGJiMDNhZThlZGZkNzAzNjQ4ZWU1YzQwNThlNmZkM2VlNCBsZWdhY3ktdHJ1bmsKKzYzMzM3IDJiOGY3NDRkYjc5YjcyMTU4N2FjMDZkY2JhNTVkNzhiMzI2NTI4NGQgcHkzaworNjMzMzggNjc4MGYwMTU5OGEyMzQ0Zjc5ZTczZjFkMjU2MTdkM2ZiNTNlMjhhOSBweTNrCis2MzMzOSA4ZDhlMDZmNGJlMWZmNGJmNmU0MjUyZGFlNDU3MGE0M2JjYTgyNmRhIGxlZ2FjeS10cnVuaworNjMzNDAgMGM3MTQyYzU2ZDdlZDllZjU3NTU4Yjk4MzJjMGE2OTRjY2ZjNWIyMCBweTNrCis2MzM0MSBhOGFlMmFhMDhlN2ZmNTMwNWY4NzVlYzkyYzQ5NDYwMTMzNzYwYTdkIHB5M2sKKzYzMzQyIDNjMDNlOWI0NjY5ODQxNzVhZjhmODY3MDhlYWRlZGMwZTc2MWM5ZDMgcHkzaworNjMzNDMgNTkzYjY0OTkwNGI4NjYzNjA0MGViYmNkYjFiNDFkMTYxYzM4M2E1YyBsZWdhY3ktdHJ1bmsKKzYzMzQ0IDM2NTY4NzM5ODUxODdjODgxMmUzYmY2OTI2MGQ3Y2YyOTRkMWJmOGIgcHkzaworNjMzNDYgMmUyYzcxMmZlMjZkNjk3ZGQ2NmM5Y2RhMDM1YTYyMGZiZDdjOGFmOCBweTNrCis2MzM0NyA1N2Y2MWRhZDdiM2I0ZjNmMzhiNGU2OGU2YWVkMWQ3MzkxMmMzMDgxIGxlZ2FjeS10cnVuaworNjMzNDggMzQwN2JmOWRhYzM4N2E0YzRhYjdjZGYwYmFmZGFhNmE4ODFiY2U5YiBsZWdhY3ktdHJ1bmsKKzYzMzQ5IDU4YTBkNTUyNGY5YTNiYTk1MDYxNTNkMWJmMDJhZjQ4ZGFkODc4ZGQgcHkzaworNjMzNTAgOThmNjg3MjZkYTAyZDUwYTZiNTljYzQ4YjAxMjFiZDU3MDdmODAzMSBweTNrCis2MzM1MiBiNjMwNzI5NTcxZTY2OGY0ZTRlMDcyNjg2YTdhMmZmYThjMGZjOWZkIHB5M2sKKzYzMzU0IDlhYzExMDQzYjM5NTM2M2UxOGVmMDNkZmFjOTZjNzdiNzYwN2VhZDkgbGVnYWN5LXRydW5rCis2MzM1NSA5NDdjYWVlMjM5OWVmMWY4OTFkMTQyMzkwNTQxZWI3MmZkOGRlOWUxIHB5M2sKKzYzMzU3IDNkZjA5MGVkNDgxMDNkNjIyOTIwOTQ1ZmU3ZjAzZTc0NmM5YzJmNGIgbGVnYWN5LXRydW5rCis2MzM1OCBkNmZlNTAyMzM2MjYwZjYwMTM0MTgyZGUyYmM5ZDlkZTYxNzI0MDM1IGxlZ2FjeS10cnVuaworNjMzNTkgNGVhOTkzMDllNTI1NGM4YjU2YTIzMmQ4ZjY1MDQ4MGMxNWQxOGJlNSBweTNrCis2MzM2MCA0ZjFhMDc5ZGY0MjdjYmQ5ZTgzYWE4ZmVhYTkwMWI5YjFlM2FiYWE2IHB5M2sKKzYzMzYxIGIwYjMyNzMyZjY2ZWI3YmUyNjBiN2NkMTQ0YmUzZjk5NDIzNTQ0MTQgbGVnYWN5LXRydW5rCis2MzM2NCBlZDEzMDQwYWMyZTZlNWY3ODQ3OThmYWZmMTlkZGJkMWRkNTNiOWFlIGxlZ2FjeS10cnVuaworNjMzNjUgZmYyZGMwMmJhNDFhYTNkMTExMzM4YTM3NGZhZWVmNzMwY2ZkNDM1YyBsZWdhY3ktdHJ1bmsKKzYzMzY2IDQ1NjUwYzI1YTAyODY1MjY2ZjM2NzM2ZjI0YzU0NGMzM2E0OTdkZWYgbGVnYWN5LXRydW5rCis2MzM2NyA1NGZkMDQ1ODU1MGM2YTc1MDM2MjE1ZGZkYTU1MGQ0OTI4MzZlYjIzIGxlZ2FjeS10cnVuaworNjMzNjggYWE4ZTEzMjc5YjViMWFjMWNjNTVlNWZmNzQ3ZmQ0ZjA2MjFjOTk4NiBsZWdhY3ktdHJ1bmsKKzYzMzY5IGEyY2VmOWU4OWI3YzJlNjk4M2UyM2Q1ZDA5ZmE1MjVlNzAwMjQ0OWIgbGVnYWN5LXRydW5rCis2MzM3MCA1ZDFhZmY0NmNjMGRmMWUzODNiM2JhZjFmMGEyMmExNWRiNTYyZTM2IGxlZ2FjeS10cnVuaworNjMzNzEgYjI0MDNkNDcwYjY5ZGQ3YzhiZmJmMDY4NTdlN2Q5MTZhYjYxOGQyZSBweTNrCis2MzM3MyBkZDBiY2MyMTZmZTM1OTIwYWY0NDZlMjg1NzM1NGM3OWMzZTNmNDFkIGxlZ2FjeS10cnVuaworNjMzNzQgM2I4MjdmMzY0N2NiMTg0NjhhYjY0MDY4YTU5ODJhOWY2ZTM3YmYzYSBsZWdhY3ktdHJ1bmsKKzYzMzc1IDg5M2E0ZGMxN2E5MWM1ZWJhMTM3MzUzNzI1YmU2NjZjNWVhNWU3NWIgcHkzaworNjMzNzYgODhiYjlkZjM4NWRjMGQ3NTA2MDBlZjM2Zjg0Yzg1YjdhMzNlNDRhMCBsZWdhY3ktdHJ1bmsKKzYzMzc3IDBmMTU3MzVjMTgzMWY1NGVhMGZhZDVjMGExZmRiMjdkYzc3ODY4YjIgcHkzaworNjMzNzggNjM3NDFjNzUyMWFhMGMyMjMzY2ZhOGFjNDFhZTU4NDU4OTRjZDZiZiBweTNrCis2MzM3OSAwZTY3ZTIxYTQxMTMyMGM3NzIyZmJhZjNjNTRkN2NkNWI4MTMyYWU0IHB5M2sKKzYzMzgwIDUzMDQwNDZiYjM1OGQ1NjAxNWNiNjk3NTA1ZGYzMmE3MzlmYjk2MTYgbGVnYWN5LXRydW5rCis2MzM4MSBhYmUzNWE4N2IwMWRhMzAzMTFiODk3MzVjZTk2ZWRkOTA3NDE0YmQ3IGxlZ2FjeS10cnVuaworNjMzODIgNjBiODU5MjRlYzZkMDI4ZTZhMmZiODdjNzZiNWI0NDBjZTE5N2NmNCBsZWdhY3ktdHJ1bmsKKzYzMzg0IGNlN2FhODhiNjY5ZWExMGRjMWNjNzk1YWMwYjRlMGYyMjA0ZTI2N2MgbGVnYWN5LXRydW5rCis2MzM4NSBhMDJiYzJhODRkMTljY2QwYjgwMmI4NDhkMjg0NzZkNjIwMDBmMzQzIHB5M2sKKzYzMzg2IDg4MGZlODg3N2RmOTc4YjllY2UwOTI3ZDIyMjc2YWU0YjkxN2U2ZTQgcHkzaworNjMzOTIgYWI4MGJiZmE2ZjBjMDg5MjU0YzVlNTZhOWRmYjMxZDYxYWRlZGZkYSBsZWdhY3ktdHJ1bmsKKzYzMzkzIGJlNTgxYWNlYTRlNzM5OTZiMzc0ODc3Nzk0ZTFmMTQ3ZDk0OWQ1OTQgcHkzaworNjMzOTUgNmFmNjQ1MTIyOTRhZDA5ZDcyN2IxZjBkYjEzMDRkMGQ1NTY3MmQyNiBsZWdhY3ktdHJ1bmsKKzYzMzk2IDQyYjc4ZTBlNjg0ODA3MzQ5NjIxNTA0MjQ5YzY1ZDE4YjhhMzAyYzcgbGVnYWN5LXRydW5rCis2MzM5NyA4NGJiNzJkOTBiYzcyNTI5NjM4MTUzYTdmZDVhODVkNmQzZmJlZGY2IGxlZ2FjeS10cnVuaworNjM0MDEgMDY4MDc5N2FlNDU0NjI5ZTA1N2ZmMjIzZTI2ZGIzMTIzMDExOGVhMyB0bGVlLWFzdC1vcHRpbWl6ZQorNjM0MDIgMjE0NGM5ZjM2NWM4ZmFhZmYzMTNmZTVkMmE1MTFmOWFiNDJlZGExZCBsZWdhY3ktdHJ1bmsKKzYzNDAzIDFjYTk2NzU2Njg4MGU4MDY0MjAzYmIyM2E3ODBmODdiNzI4NWM2ZDIgbGVnYWN5LXRydW5rCis2MzQwNCA2ZmJkMDZkYjcwNzc2MDE2ZDAzNWUyYzU3NTgzYmIzYmNiMDUyN2E2IHJlbGVhc2UyNS1tYWludAorNjM0MDUgNmI3OTc3MzE0YzAyZmQ2MWI3ZmVlMmFjZDc0Y2ZiZTU2MjhkYjQ3YiBsZWdhY3ktdHJ1bmsKKzYzNDA4IDNiYmY0NGQzMjM2MTIyYWNiOTA3ODAxN2E0OTM2YmZmOGUzMWU3YWIgbGVnYWN5LXRydW5rCis2MzQwOSBmMmMwM2Q3MTU5N2Q0OGIyYzRiOTYzYjY0ZDBjMjY3ZmFiYTkwOGVlIGxlZ2FjeS10cnVuaworNjM0MTAgNjk0ZDM2ZmI2ZjRkZmEyNjY4MGM0MTYyM2NlNzFkODAwMDY1ZDA2ZSBsZWdhY3ktdHJ1bmsKKzYzNDExIGE5N2ViMTc3ZjNhNzc5Y2Q5YTRhOTBiYmY2Y2Y1YTUyYjdiMTJjMGEgbGVnYWN5LXRydW5rCis2MzQxMiBhYzkzZWRjMzk2YTY0Zjk0YjAyN2Y2NGQzNDAzOTJhNmI4ZGEyNWRmIGxlZ2FjeS10cnVuaworNjM0MTMgYjY2MDUwZGI4NDFmMDViYWIyODIzZjE0NWY1ZTUxYzQyZjQ1ZDE3NiBsZWdhY3ktdHJ1bmsKKzYzNDE0IDY4MzZlOGYxZGVkYmNkNDZmMDNkOWY3OTk5ZDIxOGZmMjU5MjFkMzMgbGVnYWN5LXRydW5rCis2MzQxNSA3NDYwNDE1ZGE4ZmVjNzY5MTAyODZiN2U5MzNkYmM4ZDlhYTUzM2ZjIGxlZ2FjeS10cnVuaworNjM0MTYgZjNkZGE5ZDM2NjhmZDMzMjNiNzk5OGVkZTE3YzUyMWU2ZmRjYzY2MiBweTNrCis2MzQxNyBkNjMzNDRiYTE4Nzg4OGI2NzkyYmE4MzYyYTBkZDA5ZTA2ZWQyZjlhIHB5M2sKKzYzNDE4IGVmNGNjYTJkNjE3MTNkMzNjMmE1MDI1MjM1ZDQwMzBlMzY5NWQwMmMgcHkzaworNjM0MTkgMjQ5NjE4ODhhZDk1NmFjZTgwNzI3NTYyZTc1NTdjNmEyNzg5Zjc4MSBweTNrCis2MzQyMCA4YTc0NjEyZjNkMmJhZTFkYzIyYmY1NjA0ZmM4Y2Q0MTJkZTA1Njc0IHB5M2sKKzYzNDIxIGQ2ZTFlYTIxYzk0OGVjMjg4NTFmODdlZTExZjUyMjlhOWUzYWVmYjcgbGVnYWN5LXRydW5rCis2MzQyMiA5MjQwYTU5YTI1ZTlkZGM0MjJjMzU4NDgzMDdhMTNiMDU3YmFhNzJmIGxlZ2FjeS10cnVuaworNjM0MjMgY2NlMWIyNDNjMTFkMTM2M2Q4MTcxMjA0ZmVmOGVmM2RkZDE3YjdiNSBweTNrCis2MzQyNSA3MTE4ZmFkZTU3NWI5ZWMxZWQyOTgxMGRjM2JjM2Y4NjJhZjY0MmRmIGxlZ2FjeS10cnVuaworNjM0MjYgNjRmMzg3MzQzOGIxY2IyNjQ1ZDE4N2JmNGRkZGE0ZWRmY2Y1ODFhYyBsZWdhY3ktdHJ1bmsKKzYzNDI3IDVjZTkwNGM5MGU2MThjNzViMTQyZTNkMGI0NDFmNTVhNmJlNGI0NWUgcHkzaworNjM0MjggZDk1M2VhNThjYzhiY2EzNWU0MmE5N2ZkZmFkZmJiNmUwODcxZGY5MiBsZWdhY3ktdHJ1bmsKKzYzNDI5IDdhMWRjM2U3Yzc5YjUyNDM5OWViYTNmZDgwOWQzMDEwYTcwYjA1MTUgcHkzaworNjM0MzAgODAxYTA5ZGQwZWI4YWJkZjliMmZlYjc1OTVjZGE0NjBhZWMxNzA1YSBsZWdhY3ktdHJ1bmsKKzYzNDMxIGFjNTlmZGQ4MGU0NTllNjgyMDBkMjZkYTBhYTFjNDZmZDcyOWFjYjkgcHkzaworNjM0MzIgMGFhMWJkZTlkMTk0YTk3ZDYyNTdmNDQxZWRiNDYzMTVhYTM4MGQ3NSBsZWdhY3ktdHJ1bmsKKzYzNDM0IDMzYzdmZTg1ZTM1ZGZmNjAwMmQ5ZjlmZDJiOWMyZWUwN2U5NjUxNWIgbGVnYWN5LXRydW5rCis2MzQzNSAxMmMyMjlkMDIxY2MyYzYwYTQ2NjljMjI0ZWFjNzgxMjM0MmNmZDU0IHB5M2sKKzYzNDM4IGY4NjJkZmFmOWE0YmUzYTMwNWZiNWViZDlkNzRlNDA3MTgwMjk3MTEgbGVnYWN5LXRydW5rCis2MzQzOSA3Mjk2YTJmYjQ3ODZkZGE5MDdiNDZlY2Q4NjE5YzE4Y2RmNzRmNDdlIHB5M2sKKzYzNDQwIDNkNWNkZGM2ZTVlN2ZjNTAwMzY4YjUyY2E2YzZmMDQ4ZDIzMTkyZGUgbGVnYWN5LXRydW5rCis2MzQ0MSA1ODVmN2NhMzhhODVhZjgwOTcxMzVjOTM3MmY1MDcyNDdhOWNkYzcxIHB5M2sKKzYzNDQzIGJiZDMwYzQ5MmE5OThjM2VkNmUxNzA4MDc0MmViMmIyNmQ1ZmJjYTAgcHkzaworNjM0NDQgY2RiNzVhZjIzODVhMzFmZGE2OTNkMTYzOWVmYjg2MTY0NTllY2E0ZSBweTNrCis2MzQ0NSA5ZjM1NDAwMWVhMjUyNzExNWRhNWY5MmNiYzU2NTQ4ZGJkNDU2OTczIGxlZ2FjeS10cnVuaworNjM0NDYgZWZlMjJlZWYyNmJlM2UyNzVlN2IwOGU1MWVlYzZmNDRlODBlZjA0OCBsZWdhY3ktdHJ1bmsKKzYzNDQ3IDIwYjFjNWM0ZTMwNDQ1ZjJiNmE4N2M2OGNmMTJhZjJjOWVmNmI3YjggbGVnYWN5LXRydW5rCis2MzQ0OCBhOTM4NTI5ZjRkNmRkM2EyMTg5MTMyNzI4MDc5MGJkNzIwYzI4MjM0IHB5M2sKKzYzNDQ5IDJlOWY1NzJiNzMyMjdhODU5YTQ5Y2QyMGQ0MTVmY2QxZWFjNjJiOTQgbGVnYWN5LXRydW5rCis2MzQ1MCBiODZiMjllMGNmMzI5ZDEwYzE4NjMyZmRhNDg5Nzc1YWQ2ZTIxYTVmIGxlZ2FjeS10cnVuaworNjM0NTIgMzBmNjMyYjM2ODY4ZTlkNzBlYWQyMzEzZDU2MTViNDE5MjVhOTQwOSBsZWdhY3ktdHJ1bmsKKzYzNDUzIDM3NDk5Mjg3Zjc1OGE3MmRiMmQyYTliMzkwM2YwZmZhYjE4NjFjYmIgcHkzaworNjM0NTQgNjFhNjc1YmE3OTA2MDI1OWM3YTk5MjFkMDFkOTQ5MzFiYThmYmFmNyBsZWdhY3ktdHJ1bmsKKzYzNDU1IDM2YzcxZDNhNmVmOGMxZTg4ZmRhMjEwZGVjMzg0ZGVhYmNmNTY0YTggcHkzaworNjM0NTcgMzA3MWEzMzdkOTIxZjNlYmFlZTk0MjI0Njc3Yzc3ZjY0Y2U4MGJkNiBsZWdhY3ktdHJ1bmsKKzYzNDU4IDZhNmNiOWQ0YmY5NDUwMmQzOTg4ZjNmZmFmZDgwNWFhMTk3ODdlYmIgbGVnYWN5LXRydW5rCis2MzQ1OSA3OTZjYjkzYzk3MDdmN2JmY2Y4OTIzYjE2N2I5OGVkNWIzNGJjZDVlIGxlZ2FjeS10cnVuaworNjM0NjAgY2Q5MWRhZjAzMjdjNmVkMWUyNTJjZDYyMDkxMjFjMzVlZGJmYmI0NCBsZWdhY3ktdHJ1bmsKKzYzNDYyIDEyY2ExZTgyMDI4MmJmNDljNWQ5N2VlZmQ5NzcyN2FhMWMxOTA1MjMgcHkzaworNjM0NjMgNGVjY2U4ZmVkNmUxZGI2NDNmYWNjZGFlNjkwODNiNjc0MmZkYzA3MSBsZWdhY3ktdHJ1bmsKKzYzNDY0IDk1Y2IwMDkzNjZkY2I5MzA5NWU1ODUyYjI5MjNlOGI1OWI0MGI5YjkgbGVnYWN5LXRydW5rCis2MzQ2NSA4YjYyOGNhMjE4ZjNkNmMzNjI5YmVlY2E1OTA3N2MxNDNhZGQ5NTEzIGxlZ2FjeS10cnVuaworNjM0NjYgYTFmNzA0MzVkOGUzNzNmOTYwYjk4MjNlZTJmYzcyYjYzZmU5NGFlNiBweTNrCis2MzQ2NyBjYThkOGM4ZjI5NjAzMjUzNmVlYzA4OThmZGZmMTUwZThmN2Y0YmYyIGxlZ2FjeS10cnVuaworNjM0NjggODUzMjZmYjc1NWUyOTkwYTFkYzBiMGE0OGQzMjFhZDYzZmQxZGY0NCBsZWdhY3ktdHJ1bmsKKzYzNDY5IGU4MDg1MDA1NWI5MzE3MmMxNDBiYTIxMmFjY2EzYTFlN2NiMGM5ZWYgbGVnYWN5LXRydW5rCis2MzQ3MCBiODNkN2QwMjllMGUxNzVlYjQ5NTE2MjA0NDg3MjQ5MTcxMjJkZWYxIGxlZ2FjeS10cnVuaworNjM0NzkgNjNkZGQzZWU0YTJkMWQ3ODI4YWFjOTAwNTBjNDcwNDlmYzc0MjRmMCBweTNrCis2MzQ4MCA4NWJhMDg3YzBjYzc0YjJjZjc1ZTBkYTAwMTA3OGZkODQwZDEwMjgxIGxlZ2FjeS10cnVuaworNjM0ODEgNDU0ZDM4YzFmNDdlOTFhODAyNGU2YWZhY2RjNDYzNmM1MWI1NTNmNSBsZWdhY3ktdHJ1bmsKKzYzNDgyIGVhYWExOWU5NDk5ODNjNzE2YmIwNTZhMDdjNzY5YWI3ZTgzNzI4MzkgcHkzaworNjM0ODMgZDE3ZmFjODk2YTBiYzZiZmZjZjA5ZWIxNzRjYTkwZjFjZmJhNTAxYSBsZWdhY3ktdHJ1bmsKKzYzNDg0IDc3NTU3MjE2YmEzMjFhMTYxNjE4ZDdiOTczMzg5ZmVhYTk3NWQ3MDEgbGVnYWN5LXRydW5rCis2MzQ4NSBkNWRkOGE4NTI5NzA1NmFlY2Q3YWZjMTFlMTFjNWUzYzk4ZmY1ZjhlIGxlZ2FjeS10cnVuaworNjM0ODYgNWNlYzQzNmQ2NGEyODEyYWY3NTJhMGI5ZjI1ZjU2MTU5MDBkODljNyBsZWdhY3ktdHJ1bmsKKzYzNDg3IGI1MzYwNGZhZDU0YjBlNjYyOTAxYTdiYTViNDExYTc3YTQwZjFhNzEgbGVnYWN5LXRydW5rCis2MzQ4OCBhZTE5MTIwMjMyYjRhOGUzMzkwNTY2NGUxNTMyZTNlOGI1OGE4M2Q3IGxlZ2FjeS10cnVuaworNjM0ODkgN2ZjOTZkN2VjZjJlZDcxY2MxZjE3NmQyYjhmZmNiZTFiODUwZjc0ZCBsZWdhY3ktdHJ1bmsKKzYzNDkwIDUxZTMyNGI1NzNiMDk5NDZiN2YxMmE3NWJmZDVkNWI3MjAwODRlNzUgbGVnYWN5LXRydW5rCis2MzQ5MSBhOGYxNTgzYjc4ZjZmZWU3MTc2ZjdjZTJkMDhmMzBjYzBjYjA4NTkwIGxlZ2FjeS10cnVuaworNjM0OTIgNGFkNGJlZjkxZThlN2Y0NDg5ZTk3MWUxNjgyOTA2MGMyNGE5NGJhYyBweTNrCis2MzQ5MyBmNDE5YjJlOTZhOTg3YzFkMzZjNzhiODc4OWEyNmMzOGNlYWJkMDUxIGxlZ2FjeS10cnVuaworNjM0OTQgMTczZTVlOGIzZTU5ZWQyYTRhMGJhYTEwYjk5MDQxNWIwOTYyNjZjZSBsZWdhY3ktdHJ1bmsKKzYzNDk1IDA5MTI1MTFiOTg5NzYyYmQ0OTlkZGUwMjUwNzM5YzA3MTA4Y2ExYWYgbGVnYWN5LXRydW5rCis2MzQ5NiAzMmJkMTg3MDlkZmRmMDA0ZWFjMzlhMGVhMGZmMGI3NjUzOGMzOTM0IGxlZ2FjeS10cnVuaworNjM0OTcgMTRlYjgwNGIzZmM3ZGYxYzMyMzZmY2NmYzE5NTNkYjAwZTA0NDUzMiBsZWdhY3ktdHJ1bmsKKzYzNDk4IDU5YWIyY2YwMDJmYThiNWFkNjg3ODJjYTFjNTg3ZTljMzJiNjhjYTIgbGVnYWN5LXRydW5rCis2MzQ5OSA1MmE2NjM3MzQzN2QzMjM3YzRmOWIyZjJlYWRjYzZiMmI4MjZmNGI0IGxlZ2FjeS10cnVuaworNjM1MDAgMTJjNTZkMmViNGQ5Nzk5NTk0MDM0MDU3YTEwMTYxNWI2Y2U3ZmJkYiBsZWdhY3ktdHJ1bmsKKzYzNTAxIGRlMTFiZjg0NDkxZDZjZTQxOTUyMWNkYTZhNDIzZjgwYmIyMjBhY2QgbGVnYWN5LXRydW5rCis2MzUwNyA0NmJkOGNmYTc1NGM1ODlhMzY1ZmY4MTNmZDcxMmVhMTgyMjNlM2M0IGxlZ2FjeS10cnVuaworNjM1MDggMzI5MWNlNDkyOGJjNDQ2MjZjNmYyMGNlZTNhNjkyNTE4ZDUzMTI3YyBsZWdhY3ktdHJ1bmsKKzYzNTExIDIyZDJmYjc2MWFjMWQzNDkyOTk3YzMzZDIxZWIxMzM1ZDU4ZDdjNzMgbGVnYWN5LXRydW5rCis2MzUxMiA5YzkzMGEzMmNlYmIyNTc4ZWQzMTQ4YzI1NWQ2YjdlYmQwYmY5MzEzIHB5M2sKKzYzNTEzIDUzOGU0MTBjMDA4ODMxN2YwZWMyNWZmMzNmNWVjNDc0ZTAxZTBlNmUgbGVnYWN5LXRydW5rCis2MzUxNCA1NWE1MGQzOTFiYTlhODM5MjdhZWYwNjZhMTNhODI0Y2ViYTBmYmU3IHB5M2sKKzYzNTE2IDJkN2ZhODRjODc4ZGI1OTJiYTU5NWZmYWM4N2RmZDcwOGMyY2VlNTYgbGVnYWN5LXRydW5rCis2MzUxNyBkMjkwMDUwZWQ4YjIyYTJjNjE3MjA5MmUyYWVjMWU4NDNjMjkwMDFkIHRsZWUtYXN0LW9wdGltaXplCis2MzUxOCA3YWE5YWQ2NTgwMTRhNDNiYzQ2MDU1NDg2Nzg4MWU2YzA0Zjk5ZjMzIHB5M2sKKzYzNTE5IDlkYmNhMjc1NGI0MDZjM2MyMmU2NjIyZmFhMTAyOWY3ZjllOTBiZDUgb2trb3RvLXNpemVvZgorNjM1MjAgMWQyMjcyM2E1Nzg1MjQ2ZDZmMjc0YmJlZmI5MDg3NjY1YjZkNTVhNSBva2tvdG8tc2l6ZW9mCis2MzUyMSAzNjA3Nzc2NWUxY2Y0NThhMGM3MDk4NTQ2NjJlMDE0ODM4NGNkNGFjIG9ra290by1zaXplb2YKKzYzNTIyIDc3OThiYzg2YWJhMzJhMTVlNzY4MmU4OTIwN2ZlMzY2MjUwYjIwMTUgbGVnYWN5LXRydW5rCis2MzUyMyA4YzgxZmFhMjEwYzFkZGVmMjIwMGRmMTRkM2Y2ZThkMjgxMzk2N2M1IGxlZ2FjeS10cnVuaworNjM1MjggNWJlMmQ4MmFjNWFjZDU5NTc4NzdkODczN2JlNWNjZDYyZGIwMzI1NCBsZWdhY3ktdHJ1bmsKKzYzNTI5IGNkZDAwMDA2MzFjYzc4NWFlMzgwODExZmM0N2JhYzg4ZTBhNjMyNGYgcHkzaworNjM1MzAgMmMzNGYxOWUzOTIyYTZhZDE0ODk3YmZiNzMyOGM0YmExZjI5MjY0NSBsZWdhY3ktdHJ1bmsKKzYzNTMxIGM2ZGJjNDMyM2EyMmQyNWU1MDUyOThkZTk1MmIyNWUyNGJhNmNiNTcgbGVnYWN5LXRydW5rCis2MzUzNCA4MWMzYTZmOWQ4NWYwYTNkYzJhNjNjOTc2YWU4NGY4MDlkNmQ0YjY5IGxlZ2FjeS10cnVuaworNjM1MzcgNGY2ZWE1YzU5YWIzMWJhNWYwNWI5NzlkYjk4Y2U0MDZhNTYwODkzMSBsZWdhY3ktdHJ1bmsKKzYzNTM5IDM4YTk3ZGNjMmM5YzVhOTNlZTkwZGI0MDA2MGNmYWM4YzAzYTJkOTcgb2trb3RvLXNpemVvZgorNjM1NDAgNzExNGUxZWZlM2Y5Njc0ZTkyY2U5ZDM2NGI3NGM0ZjNmYTk0MjFmZiBsZWdhY3ktdHJ1bmsKKzYzNTQxIGM1MzRiNjlhYjg3MWQ1YTEyODYxYjRiMmFmYmQ0YTBlNmRjOTRlODEgbGVnYWN5LXRydW5rCis2MzU0MiAyZmZmZGVkYjEwZjhjNDgyNTU1YzU0MTNlMmM5OWY2ZjJlNzU3OWNjIGxlZ2FjeS10cnVuaworNjM1NDMgZTE4NTIzZjg0MmQ3ZDEzOTUwZGQ5OThhMjE1YmU1ZmE0ZjA5ZTMwYiBsZWdhY3ktdHJ1bmsKKzYzNTQ0IDVhMjk1NTI0MTJmYTJiYzZlZThhMjAyYjZiODViMjc3MDU4MTY3MjAgbGVnYWN5LXRydW5rCis2MzU0NSBiYjA0MzMyYzdmMDE3ODJiZmFmMjliMzJkZGIxNjE1NmI3YzlmMDk5IGxlZ2FjeS10cnVuaworNjM1NDYgNzFkZWVlNmI5NDFlOTNiODk1YzFlNGNkYmE2NTc2ZDkwODlmZTEyYiBsZWdhY3ktdHJ1bmsKKzYzNTQ3IDlmYmM0MWFiZGQ0YmVlMGI4ZjRlNDQxNjI0M2M5NWY0ZjQ2NTNiNDIgbGVnYWN5LXRydW5rCis2MzU0OCAzNDJmYmRjY2I3ZDk2OWZmZGY3MmVhOWJjMGJlNzJjMWQ1Yjk5NGMxIHB5M2sKKzYzNTQ5IDk5MTc2YjlkOTBiMzdmZjZmZDcxYmQxNGUwMzVmNWZhNzU5NTNhNTIgbGVnYWN5LXRydW5rCis2MzU1MCBlMmJlZjQ0ZjQ1N2RkYzIzNzQ0MDY3MDJmYTNiNWYzOGZmNjQ2Nzg1IHB5M2sKKzYzNTUzIDU5NDgyOGVhMDNhMTA1YWQ0M2VjZjZhMjZhMzAxN2EyMzY0MTdiODggbGVnYWN5LXRydW5rCis2MzU2MSBhMzBmZWRlODc2NDNkNWJiMDE2ZGFlYzQ2Y2EyNzdmYjg1MmYwNmYxIHJlbGVhc2UyNS1tYWludAorNjM1NjIgNWVjOTUyOGM5M2RlYWE1NmRmOTgyNTc5MmEzZDdiMzcwMWM0ODQwYiBsZWdhY3ktdHJ1bmsKKzYzNTYzIDVkMTkyOTllZTM0NjNlZDdkMzc5ODQ0ZWY0MjhlOWNiNzkxNzlkNWIgbGVnYWN5LXRydW5rCis2MzU2NCBjNWE4NWU0ZjllODY2NmIzZGFiZmE2YzdmMzYwMjc4OTlkYTQzM2IwIGxlZ2FjeS10cnVuaworNjM1NjUgYTIxOGQ1Y2IyNThiMjA4MzEzMjgyM2EwOWRkZjkyZDk1NThiMGIxZCBweTNrCis2MzU2NyA0NmM2Yjk3ODlkZGVjYzMwNjgyMGYyNmYwYTY5MWU5NmM1NTVhMmI1IGxlZ2FjeS10cnVuaworNjM1NjggMDM0ZDZjOWUyNjcxZjllNWQzM2IzOGM1MGI4MzQwZDgwNmQzMGRjNCBsZWdhY3ktdHJ1bmsKKzYzNTY5IDI3YzBkNzM1MWVhOGRmYWM0YWQzMjY3YjNiZDZkMTFjNWZlYmU0N2EgbGVnYWN5LXRydW5rCis2MzU3MCA3MjdmZGI5MDYxOTEzZTI2MmI4MzdjMjQ3MWYyY2E1NjM0NmE5YzMzIGxlZ2FjeS10cnVuaworNjM1NzIgNTU2ODAwNWQyMjE3MzIyNWI3MDY0MWVlZWQzZjJjY2ZjMTJmMGJmNyBweTNrCis2MzU3NSAwZDBkOTY0MWY5YmQ5NzdhNTU3OTUwNWE3MDVkYzg1ZmJjZTQ5MzNkIGxlZ2FjeS10cnVuaworNjM1NzYgNDVmZjczNzY3MWY2MzM5ZGE5YzU1YTRkZmU0N2Y0OWJjYWY0NDI5MCBsZWdhY3ktdHJ1bmsKKzYzNTc3IDZhYmM2M2M2MTUyNjVmOTFlMmE5MDZjYTE2MmZiNjRiYWZhNzA1YjYgb2trb3RvLXNpemVvZgorNjM1NzggOTA5MTJiMTBhZTcyZjM4Y2FjM2QxMjlkYWIwZmNmNTJiNzVlYWFiYyBva2tvdG8tc2l6ZW9mCis2MzU3OSBmZDFhMmY0OTk2ZWYxNjkwYzUzZmIzODdmMGIyNWFjMjY5MDM2YzJkIG9ra290by1zaXplb2YKKzYzNTg2IDI4Y2Y5OWMxOTNjN2Q1NmYyMDEzOGQ0NDY1NWE3ZGVkNWI3ZjI0YTEgbGVnYWN5LXRydW5rCis2MzU4NyAwZjVmMzJiY2RjOGZjZmRkMTUxMTUwZWRmYjJkMmM1ZjE1NzExNTYxIGxlZ2FjeS10cnVuaworNjM1ODggMDVhYTIxZDZkYmViZTYyOTlmYmY5NjU0ZjdmMTk5MGVjNzNkNjdiNCBsZWdhY3ktdHJ1bmsKKzYzNTg5IGJhMWZhNTExYjcyZDFmYzRiMTc1NTUwMmU5NTRmN2Y0ZjQxZjVlOTUgbGVnYWN5LXRydW5rCis2MzU5MyAyMThhMTA4NjcyOGFiNjg3NzAwN2M0MTRhNDY5NGUzMmMyYWVmZGNmIG9ra290by1zaXplb2YKKzYzNTk0IDg3YjE0NDE4ODlhNTMzMmYxNjk2OGNmZGE5M2ExNjEzM2I2YzQ2YmUgb2trb3RvLXNpemVvZgorNjM1OTUgZjViMDI5MDIwZTAyM2ZmZGZjZTVhMTZiNmQxYzM1Mjg1YTcxNmM1ZiBva2tvdG8tc2l6ZW9mCis2MzU5NiA2ODBiYjlkZDU4MDc0NGQxYjdmNDNlYzJkMWU4OTViNDkxOGEwOGIwIG9ra290by1zaXplb2YKKzYzNTk3IDBmZWNkMzg2NzkzZTYyMGE4ZDExYjUxOTlkMDY4Y2JmNTAwNTcxZDUgbGVnYWN5LXRydW5rCis2MzU5OCAzMzllMTcxODMxNWNkODYzNGQ3OGI1YmM1ZmMxOWFkNjU3NzQyNzA0IGxlZ2FjeS10cnVuaworNjM1OTkgMzc2N2E1YWE5NTYwMjViOGY5ZWIwYzBlYjAzNzIxOGQ4MmQxMzYzOSBsZWdhY3ktdHJ1bmsKKzYzNjAwIGNiMWM4OWE0NGVkYjY1MzQ0MmJjZTkzYTE5ZDM2NjU5ODIxMDA0M2MgbGVnYWN5LXRydW5rCis2MzYwMSA3MWZkYmNkN2JhYTlhNmE3NzUzMmE0ZWNjZmJmNjg5MzVjMTAwYWQyIGxlZ2FjeS10cnVuaworNjM2MDIgMjYwYjYyYWFmY2I0OTdiZDk4MGRjM2M5NTJjYmQ5ZDI2MjNjMTNhMiBweTNrCis2MzYwMyA5YWNiMzE0YjkwNzI3OGYwNDYxYmEwZTBjYWU0NWM1MzQzODY4MjZlIGxlZ2FjeS10cnVuaworNjM2MDQgNzNiMjQxMjdmN2I2M2RmOTc3MjgzOTQ5MmRhNTgyYTIyNTE0NzMzZiBsZWdhY3ktdHJ1bmsKKzYzNjA1IGNhZjNhY2RmZTVlNDM4ZDYwYzY4Mjc1MjVkYTU5MTYzYzMyZDlmMjQgbGVnYWN5LXRydW5rCis2MzYwNiBhZmUxNDhhNGFkMjdkZmM1MTZiOTVhZjZhY2Q4ODM2Y2M1OTZhMThkIGxlZ2FjeS10cnVuaworNjM2MDcgZTUzNGVlMGE0Y2QwNDQxYTcwMWNjMzkxNTYzNWI2MDkzMTA2ZDQ1NSBsZWdhY3ktdHJ1bmsKKzYzNjA5IDgwNjU5YjlhNGNkN2QzYjYzMWQxNjZmMjg0NmFmYTEzMjE3Nzc3MTMgcHkzaworNjM2MTAgMTU0NmMxZmI4ZjgyODM0NjZjOGI5NzVjYzAyNWY4MTEyNGExYTMyZiBweTNrCis2MzYxMSBkMTI1OWZmYjEwM2MyOGNlNTViOTIxM2U3ZmQyMTBiODhjNmY1ZWNhIGxlZ2FjeS10cnVuaworNjM2MTQgZDU1OTFjMTZiOTk3YjFhMDNmZTEyZTIyOTA2OTBlYmMxZjM3MjI3YSBsZWdhY3ktdHJ1bmsKKzYzNjE1IDYwZGY4ZjY1ODU3NWFjYmQxZjAyNDg4ZDg1NDQxZmVkZDlkMzc1YmIgb2trb3RvLXNpemVvZgorNjM2MTYgODk1NzA4YjA1NmI3YmQ0MjEwZGY2ZmViMTU0MTJjNWFiNDVhYTI5ZSBva2tvdG8tc2l6ZW9mCis2MzYxNyA5NjcwMjYyNTc5NjExZjFmOWE2NmJkM2QzZDY3NjQwYjI5NzAyNjI4IGxlZ2FjeS10cnVuaworNjM2MTggMDA5MTE5ZWI0ZDJkODAwMTllNjhjZDUyNThkNDFiNzgwNGE0ZDYxZSBsZWdhY3ktdHJ1bmsKKzYzNjE5IGQ2ODhmM2Y3YzhkZmQyZTBlM2MxZTViNjQzMDE5Y2YwZWJmOWE3MjcgdGxlZS1hc3Qtb3B0aW1pemUKKzYzNjIwIDc3MGU0ZTEzMjc3NWFhMGM1ZGFhNTc1MTM3OWRjN2IyOWFiMWFmN2YgcHkzaworNjM2MjEgNDk5MDZkNDMyYjQ3YmFiMDNlNDEyZGU4OGNmNjVhM2RlYmJiNWQ3NSBweTNrCis2MzYyMiA1NjBjOTczOThiOGU1MzRlZjZkMmQxMjBlYjVjODFkNzYwZjgwM2IxIHB5M2sKKzYzNjI0IDM4YjFhMDE3ZGJmNjAwNzFjYWZkZmMwNDg1MDQ0ZWE0NGJiNWUwZGQgcHkzaworNjM2MjUgODEzZTBmOGE3NDFkNTliZDVjYTdiNjUwNTc2NTVlYjlkZDc0MjUxNyBsZWdhY3ktdHJ1bmsKKzYzNjI2IDI2YjM1OWUyMzdiNTRkOWE2ZGI4MDUzMmU2NDgzNDRlMDgyYTQxZjcgcmVsZWFzZTI1LW1haW50Cis2MzYzMCA0NmYzNTFlZTlkNWVkNDEzMDM0ZjJlOWYzNzUzNGZmNDFhMjgxZGNkIGxlZ2FjeS10cnVuaworNjM2MzEgN2ZlM2E4NjQ4Y2UyNDJmNWIyZDZjYmYxNzAzYmVlOGM0ZWI5NDY3YiBweTNrCis2MzYzNCA2ZWRjODBkNDIwMjExNDdjNTJhYmY3ZjkyNTdiZTQyMzFiMmJiMjUyIGxlZ2FjeS10cnVuaworNjM2MzUgOTM4MjZiMzVmYWNjZTY2YmRmZTFhY2U0YTBiNzlkMWNlYzAyNmVmZiBweTNrCis2MzYzNiA4MjcyNTQzODQ1M2JhOWNlNjdhNjY3Y2ZkMDVmMWM0OGEyYjVlOWVlIHB5M2sKKzYzNjM4IDMxNjYxMWZiMTI2ODJmNzBiNGQ1NzYxNzAwNDdkOGE5OGRhNjk4MGQgbGVnYWN5LXRydW5rCis2MzYzOSA1MTE5YmM3N2JkNmRkZTMzMjU4NDZjOTMxZTcwZGI0YjI2MDAwMDU4IHB5M2sKKzYzNjQwIDQwYTE2MzBlZjJjZjg0NjFhMWQxNmY0YTc5NmNhYmJkZTc5NDJkMjIgcHkzaworNjM2NDEgN2RmNGJhNDg0MDU4ZmRjZjExMTlhMjRhMGEwMTdlNzU0NTI2MWU1OSBweTNrCis2MzY0MiAxYzUxYWJlYjkyNWZlNjg0NWFjMmJiNGMxMDY4NjYxNjViMzMwZjhmIHB5M2sKKzYzNjQ0IGFlMDE4NjlmNjJiZThiZWY1ZTY2MmJkODIwMmViZTQyOTlmZWExZGIgbGVnYWN5LXRydW5rCis2MzY0NSBkN2JmMjY2OWZlNjYwODhhNDRmOGYyMmRiNmFmOGY3OGVmYmYyMWQ3IHB5M2sKKzYzNjQ2IDA4Y2UxOTJmMjRiMDQyMzUyYjM5Y2IwNjA0MTcxMTZjNmRiYjQwMjQgcHkzaworNjM2NDcgZjc2MmE5YWI2OWRkMThiZTk0MDJmMjgzMGRkMzVhNzVhOWM4ZTNmNyBweTNrCis2MzY0OCBjOWQ3MTdiNWI3YTI0NmM0YTI2YzM2MDMwZjAyM2U5NDA5OTAwMGMzIHB5M2sKKzYzNjQ5IDY1OTUzYWU5ODEyMjc5M2RmODczMTIxYjU2NjUzODRjNjU2YTNjOWEgbGVnYWN5LXRydW5rCis2MzY1MiA4YzJmNWFhY2MxYmM5ODNjMGM3NDE0ODY3NDE0ZDA5MmNkZGZiOGY1IHB5M2sKKzYzNjU1IDcwZjlhNWRiMjc5YzIwZjIzZTE4ZjUxY2I2MDQ3Y2NiMWIxNDVhYzUgbGVnYWN5LXRydW5rCis2MzY1NiBmMjhjYmFiMTFhY2Q3NGNiMDE3NGY4MWJiNzk2ZDE5MTYxMzFkNzFiIHB5M2sKKzYzNjU4IGUyNDIwMjYxZDRhMzAwYzU1ODExY2E2YWQ3MDY1OWZmNGZiNTQ1Yzkgb2trb3RvLXNpemVvZgorNjM2NTkgNTQxMWI2YTIyNmU1YWIxOTUyODc1NzBlYTdhYWQzOTU5YzJkNGRmYyBva2tvdG8tc2l6ZW9mCis2MzY2MCAwZmQ1NTNhZDUzZjY0NjQxNDE2Zjk0NjQ2ZWMwZjY2ODA0ZjRhNDMxIGxlZ2FjeS10cnVuaworNjM2NjIgYWZiZGUzNjBkZDFhOTVkYWZmYzY0OGMwZDZiZTFlM2UzOTI3Nzc4NCBweTNrCis2MzY2MyA2ZDNlMTMzMGEzYWE4NGFkNzQ2NTMzZWJhMjQzMmUzNDg4OThiYmY1IHB5M2sKKzYzNjY1IGU3MjVmZjE4MzQyYjEzZmNhYzBhZjg2ZmI3YjcxYTc5ODk0NzA3MTIgbGVnYWN5LXRydW5rCis2MzY2NyAzNDZhOTlkZjU4ODlhYmE0ZGM5NGQ1YmU0MzNkYzllOGI1YWM2YmRlIHB5M2sKKzYzNjY5IDBhNDU1MDgxNDMyMDdkZDgyYWQ2Mjk3ZDZkYzZhZGQ3ZTgwOGZmY2MgdGxlZS1hc3Qtb3B0aW1pemUKKzYzNjcwIDBiOTc0MjU4ZTE1YjgzMmY1YTZiMDlmMTZjYjhiOGYwNzA2MmFmYWQgbGVnYWN5LXRydW5rCis2MzY3MSBiOWVhYjc0OWJhNjYwMDc1ZmIzMzViOTkyMWYxY2MzYjhkY2RhZWJmIHB5M2sKKzYzNjcyIDA0YmQzNjkwZmIxZmU1YTM4MTU2NGY2NWZmZDMxNDc4NmE4ZmVjOWIgbGVnYWN5LXRydW5rCis2MzY3MyBhYmFmY2NmZTc1MDFjMjMxY2Q4NmJiM2U0NGI0MTFjYjY2MzIyNTY1IGxlZ2FjeS10cnVuaworNjM2NzQgMzI2NGFhZjdjZjMwM2YwNWJhNzIyZmQyM2NkMjJlMmIxOWY1MWI1ZSBweTNrCis2MzY3NSA0ZmUxOTJkNDg5NjAzMmYzNTYwNjAwNWNkZGYxYTExYzUzY2Q4M2Q4IGxlZ2FjeS10cnVuaworNjM2NzYgNjUzZDA0ZjMwNDI4NzcxZDZhZGE1NGJiYTY0ZGQ4MjljYzUzMGFlNiBweTNrCis2MzY3NyBlOTIzOWFkN2I4YzA3MDI3Y2RhYjlkZTUwMzhiNGZmNjA5ODg2Zjc3IGxlZ2FjeS10cnVuaworNjM2NzggNGQ5OGViYWVkMjc4MzZmNzcyYTdjYzI5YzdiMDc2YzRlYzFhNmM4NyBsZWdhY3ktdHJ1bmsKKzYzNjc5IDE5NGJiZjA0YjAxNTQ0MjVjMTUzZWQ5MzczYjI5NGRlNzRlNjlkYmYgbGVnYWN5LXRydW5rCis2MzY4MCAyY2NiMzRkNTM3ZGI2NGU2NTBlYzFlMDNhMzg1NjYyNWU0YjI5Y2I0IHB5M2sKKzYzNjgxIDk2YjM0MjYzZTQ0OGQ0Y2IzN2Y1ZmFhMmVhMjI5MzE2NDI0N2Q4MGYgcHkzaworNjM2ODIgMjNhYjU4NmM0MjdhMzdlMjFmNjFkZTI3NmYwMzJhMmUyZDgyMDU4NiBweTNrCis2MzY4MyA4MTFhODA2NTEyMzJlOGQwODU0ZWY4MjYyOGM2NTZmMGE3MDYyZjU0IHB5M2sKKzYzNjg0IDhjYzNhZDhiZjdjNGU2N2FkMzk2ZTcxMDczODVlZjFlMmFiNzcxNDcgcHkzaworNjM2ODUgZTNlMGMxYTY1MjA0OWZlOWZlYzc1ZmZhNzVkMTcwM2Q1YzBjYjM2YyBsZWdhY3ktdHJ1bmsKKzYzNjg2IDcwOGE1NjEyNzljYWI0NjExYzAwZDFjM2Y0OTc0MGMzMDdjOWQwMzAgbGVnYWN5LXRydW5rCis2MzY4NyA5YTBkNGRjMDdjODk1NGNhYmU0ODc5M2Q2MDNiMTljNWNmNGU2NTM3IHB5M2sKKzYzNjg4IDM0ZTQxZjRlOTYyZjE0YzFkYTU1ZDQ5NGI1MzQ2MTYwOTViMzc1YWQgbGVnYWN5LXRydW5rCis2MzY4OSA0YWIzZTdhYzhiZjRhYTM2NjA0MjA4MTdkYzY1NTQ0MmFkODY2ODJmIHB5M2sKKzYzNjkwIDE3YjhmNDQ1ZDA0MzFlZDBmYzkxNmQxODAyNjVjMDc4ZGYyYjBiYmYgbGVnYWN5LXRydW5rCis2MzY5MSA2NjJkMTVhZjUyZGY2NjY1NGViNTQ2ZWFjOGRiYjhiZmI3ZWI1YjgzIGxlZ2FjeS10cnVuaworNjM2OTIgYTk0NmJmNzY2NjU0NDA4NjVkMDJmOGQ0MTRlZDI1N2U0NzYyNzk4ZSBweTNrCis2MzY5MyBjZTljZGNlYmFlZjAyNDdiYjhiYWM4ZjZhMWE2MDhiMTVlMmYwOGRkIHB5M2sKKzYzNjk0IGE2ZDYxNzcwODY2NWFmNjdkZWM5MGE2OTE1MTI3Mjg4MTJhZTY4YmMgcHkzaworNjM2OTYgNzAxMDRhM2UxZDlkMzk5OTMyNDJjN2FkOGJiNWQ2N2IzYzA4Nzk1ZCBsZWdhY3ktdHJ1bmsKKzYzNjk3IGJkYTE1ODU5ZjY1OGYyMjEwZmE1OGNlOWRiNTk3MTYxMmFjNzM0NDcgcHkzaworNjM2OTggYzU2MDRiZTdhY2RmZTBhMzc3OWIyYWZjNTA0ZmQ5YzhlNTg3MTZlNiBsZWdhY3ktdHJ1bmsKKzYzNjk5IGJhODAxNWUyMzQ4NzIwNTQ0M2MyYjU2NGIxYjhjNmU1MjZlNDNkYTYgcHkzaworNjM3MDAgZTFmY2MzODgxY2I2ODc1YjRkZjcxYzEzMTBlMTY0YzNkZmFmNWE3MSBweTNrCis2MzcwMiBlMDE3ZTFmZGUzNjkyZTI5ZWFiMDA5ZjU4NGFkNDZkYTkwMGI0YTVlIHB5M2sKKzYzNzAzIDM5NzVlYzJiMGRlMmFmMjQyNTc1YTk5Mzk0MDlmY2EzODZmNmY2NjYgcHkzaworNjM3MDQgZmNkNDU2YWU1MTViYTg4MTg2ZDIxNjlmNzI4MGJlNjFhMmNkN2UwZiBsZWdhY3ktdHJ1bmsKKzYzNzA1IDAyN2M4ODdlOWRhOTIzNjg3ZmE2N2E4NDc5ZTQ2ODQyOTBiYjFmYjIgcHkzaworNjM3MDYgYmM0ZGY1MWMwMWQ1MjU1MTcxZWQ2MmZlOTRjYjU0OGMyZThiMTY0NyBweTNrCis2MzcwNyA3YzViNWYwZWIzMGQ5NTBiOGYwZTUxMmY5YmUwNWYzYjc3ZDA2MjliIHB5M2sKKzYzNzA4IGRiZDlhZDUyYjRkMGU5ZmNmMTA3MTliMmI1YzRjZmQzNzNhMzM3OTIgcHkzaworNjM3MDkgNzljN2U4NDhlYTE3Y2M5MWM1MjY1ZmM1ZWViZDYzZmUwMTRkNjBmMCBweTNrCis2MzcxMCA2Yjk3M2Q5MzZiMDc5NzE2MGNjMTZiNWU0NzE1NjhmNTZlZThhZWJmIHB5M2sKKzYzNzEyIGMyYTBhNzA4NDYyZWJhMjdhMWIzNTAzMGVkM2Y1NDYwZWViNzg4NDUgcHkzaworNjM3MTMgMDYxOTNlM2RmNDE2ZjViMjcyYzk4NWRmNTUzNTAzY2VmMTlmZTNmNyBweTNrCis2MzcxNCA4ZmYwYjkyNWVhNjQ4ODU5OTU2ZDk5YjYxYWRmY2M2OTY0YTkwYTllIGxlZ2FjeS10cnVuaworNjM3MTUgMDUyNWNkNWIyNTgyOTAwNjhmN2ZkY2NkYmJlMzRiN2JjYWNjMmNjZiBweTNrCis2MzcxNyA2ZjFhNjMyY2IyZTUzMmI4M2Y5Y2I1YjdhZjk3OGZkMmNlMTJiNmM2IHB5M2sKKzYzNzE4IDNjNzBkNjhiZWIzMDk1N2E5NzY5YzdmMGEzZmVmZTBjODAyOTE4ZmQgbGVnYWN5LXRydW5rCis2MzcxOSBmNjFiNmMzMTAwMWNiNWZjNjIwZTUwZmEwMzFiMzAyNjIzMDdlZDIxIGxlZ2FjeS10cnVuaworNjM3MjAgNzg5ZTBmMTVjMzdiNmY2MjdhYTU4NThjY2JmYzM5YTE1Y2E1MTQ0MyBweTNrCis2MzcyMSAyZjkzMTkxNjlmZWM5YzYzMGQ4MzM4ZjE5NGIxNTJlNmU2Y2ZjNjllIGxlZ2FjeS10cnVuaworNjM3MjIgNTk3ZDhmZDU2OTNlNDM5NjE3MGE1NTJhZGQzNmMwMGNhYWI4MjU0YSBweTNrCis2MzcyNCAyNzNlOGRlMzQ2MDNkY2EyN2RlYzQ1NTI2YzIzMjJhZjIwNWZjMmM4IGxlZ2FjeS10cnVuaworNjM3MjUgYzRhNDU4ZWNkMmVkN2YwMDJlMWRjMGFkYmMyMjE5Y2ViNjIwNzkyNCBsZWdhY3ktdHJ1bmsKKzYzNzI2IGY2Yzg4ZjE3MmJiZWM2OGM4MjU2OThjOGFmNmYwMTU0YTVmZTM4OTMgbGVnYWN5LXRydW5rCis2MzcyNyBjOTFiMzdkYmJhM2YxOGJkYzM2MDQ3NjMyOTgwMDZmOWZiMzM3NTM2IHB5M2sKKzYzNzI4IGE4Y2M4ZTZmMGMxYTY5MDBiNDlkNjE1ZWNjMTcxZDVmNTY0YzJiMGYgbGVnYWN5LXRydW5rCis2MzczMSA2MWE1Njk3YTc2MjY1MWZmZWViZDFiNjQ4MDJiN2MyNDAwNzY3ZTZiIHB5M2sKKzYzNzMyIDE0NzRmMjUxMjhjNDRlY2E4MDNhM2U5NTBiZGQyNjE3ODdiODExYTYgbGVnYWN5LXRydW5rCis2MzczNCBlMWE0YmY5MWIyYWVkYzQwZTRkMGJiNTQzMGE1NjZhMWE0YzRkYmUwIGxlZ2FjeS10cnVuaworNjM3MzUgMjMzNzk2OTViNGRiMjgwYzQ3ZGNiZTUzMTI0OWRiNjk0NGJjNTBlMiBweTNrCis2MzczNiAzNDNhYWFhODAyZTgxMDQyZTVlYzlkNTcxMGE2NWVjZmE4Yzk5M2M0IGxlZ2FjeS10cnVuaworNjM3MzcgZGMyN2IzYjQ2ZjBkZmMyMGM5NWZhODY2MjQxMzE2MTYyZmY4ZTM3YyBweTNrCis2MzczOCBlNDEwNDU5N2MyYTNlZjc2MmQ5NjIxYmI1OTkyNGQ1NzVlYmQ0ZDkwIGxlZ2FjeS10cnVuaworNjM3MzkgNTFjNjNiN2VjMWE4YmNlYTg0M2M5NjVhN2Q0M2E2YmZmYjE1NWEzMiBweTNrCis2Mzc0MiA1MDJlNzJmMjhlOWVjN2Q1NTI0MGU1MWRjM2EyMTg1NGU4OWFjYjM1IGxlZ2FjeS10cnVuaworNjM3NDMgZjk0YWNhYjc4YWE5OWQ3YmUzNTNkZjQxMGJmNjI4ODQyM2M2NjcyYSBva2tvdG8tc2l6ZW9mCis2Mzc0NCAzZWFhNzIzNjcxM2ZhMTc2NWZmZTM2MmZhYzBkNjBkOTVhNGRhYzMyIGxlZ2FjeS10cnVuaworNjM3NDUgNGE3ZjM0ODBmNDU0ZGI3NjdkZTI0MjRmOTA0YzdiMGU3Mzk4ZjlkZSBsZWdhY3ktdHJ1bmsKKzYzNzQ2IDRkM2U5NTM3M2Q5ZTI0MGYxNWQ2M2NiNmI1YTgzNmI0YTQ2OWZhNWQgb2trb3RvLXNpemVvZgorNjM3NDcgNDM0ZjFkNWFjZmU0Y2U4NWVjM2Q4ZmMzYzI3ZTBkZDQwZDYzYzI0OCBva2tvdG8tc2l6ZW9mCis2Mzc0OCA4NDk0NmY0NTUzZjEzOTlmZjVhN2JmNTg4MDMyY2E2NTI0NGUzNTMzIG9ra290by1zaXplb2YKKzYzNzQ5IDQ5M2IzMmM3ZDEyMTIyNzdjY2Y5MGQxMzU3ZDJlZWIwYzQxZjdkODcgb2trb3RvLXNpemVvZgorNjM3NTMgNGVlMjlmZmQyODU2ODY1YTU0YTFlNTRmMmU4YWYxM2VjZDA4MTk2ZCBweTNrCis2Mzc1NCA3N2Y4YWU4ZmM3MGI0YTA5YjU1YmM5YzM1Nzc4ZDAwNzAwZjliZGM2IGxlZ2FjeS10cnVuaworNjM3NTUgNjdmNGI3NzY3YTBhYjExYWFkM2E2Njk2OTY1NDE1Nzk5YzEzMWJiNyBsZWdhY3ktdHJ1bmsKKzYzNzU2IGI5N2RkNTg4OTI0Njk5ZmIzYjVlMjFkYjU0OGJjZDkzOTBmNGY1MTkgcHkzaworNjM3NTcgOTNmZTkxM2ZhZTU1NDdhMTljMjEzZjYwMmM3MmJmMzM5NzdhNDcwMiBsZWdhY3ktdHJ1bmsKKzYzNzU4IDA5MDY1YjAxMGM5NTA4YTc3OWMwYzNmMTBhMDFlOGQzY2MxYTNmM2MgbGVnYWN5LXRydW5rCis2Mzc2MCA3YWU3OWU5NmZjNDJmOGYzZWZhMDlhODBkYzg2YWQyNTVkOTVhY2ZlIGxlZ2FjeS10cnVuaworNjM3NjEgMTI1MjQ3ZWNlNTYyNTJhNjgxZjVkMjViMTJjYjM2MzVjMDM5YjdiZCBva2tvdG8tc2l6ZW9mCis2Mzc2MiBhMWNiNTQzMDliNGQ0ZjQzNjBhOGRhMmIxNTA5NGQwNTlkZjllZmU4IHB5M2sKKzYzNzYzIGRjZDZiZmIwZGI0MzljOWQxNjdhN2FhNDI0MmQ2ZWI1ZTE4MGQwNTEgb2trb3RvLXNpemVvZgorNjM3NjQgMjNiOThmN2VmNDU0NzY3ODdiMTMyMTBkZmE4ZThiOGRlYTAyYzg5YiBva2tvdG8tc2l6ZW9mCis2Mzc2NSA3OWYzMTI3ZjFkNzI3MGRlYjA2MTA4NGVkN2NmOGQyODk1YTdhZTQ1IG9ra290by1zaXplb2YKKzYzNzY2IDA3MmJmYmI2NTQ4NDg1ZTQzYWIzZmIzODlhODBjMDM4ZTAxMzQxNDYgb2trb3RvLXNpemVvZgorNjM3NjcgMTU2NzQ2YTYzYTVjOGYzMzI3YzhiZWNjNzhmZjI1MjUzN2U0M2NmMyBsZWdhY3ktdHJ1bmsKKzYzNzY4IDc2NTI5MzZmYWQzOWY4YjdlMGY2YmVkMzNlZTAyZTQ3M2RmYzUzYTEgcHkzaworNjM3NzUgNWUyM2IwZmNjNzhlZTZhNDNkYzdlMzI3ZWYzZGEzOGU5MThlYTZjYSBsZWdhY3ktdHJ1bmsKKzYzNzc2IDI5Yzk1MzZjMDRhZDQ4NzY5ZWQ5NzM2YmEyNzdhNDI3NGI2MDZiZmMgbGVnYWN5LXRydW5rCis2Mzc3NyBiNmNiZWM0OTk3NTYyMmQ2OTcyN2JjMzllNDU1MWE3NzNjNTViMzMzIHB5M2sKKzYzNzc5IGIxNGM0YjViYWIwOGQzNmZmYjkyNTI5NjBmYWQzMGYwY2Q0NTExNGQgcHkzaworNjM3ODEgMDAxNTQ1NjdkNTkzNWIyODRjYWMyNTczMmJlODk4OGUwMzczMjE3YSBsZWdhY3ktdHJ1bmsKKzYzNzgyIGVmNTFmY2RhMzQ4YmY5MjNkZDk4MmVhNzJiYjIzNjY3YzA2MDEyMjMgbGVnYWN5LXRydW5rCis2Mzc4MyA2M2I0NzQ1NTYxYzM0MzZlZjVkNzIwM2FiZGQzNmY5YzU5ZmZjODYzIG9ra290by1zaXplb2YKKzYzNzg0IDllNmU2YjgxN2YzMjAyZTMwZGJjYzg4NDk1YWZhNjY1ZmUzMTA0NGIgbGVnYWN5LXRydW5rCis2Mzc4NSBmYjJkOWIwYjQ0NzAzMmExZjdkYWYzODFmNWVmZDkyOTk3OWUwZDRjIG9ra290by1zaXplb2YKKzYzNzg3IGU4MWQwMmQwOTY5NzRmMTMwNWU1MjQxNDIxMzk4MjA5ZDcwMWE4NjkgbGVnYWN5LXRydW5rCis2Mzc4OCBlMmM1YWUzMGNmZmVhY2Q0OGEwZWZkNTYxZDNkMjE2NzUxMWUwNjY3IGxlZ2FjeS10cnVuaworNjM3OTEgYzU5NWRhMDU1ZmQwOTIyMTJmYWE2Y2Q1NjM4MTFlNmNlMzVlNjcwMiBsZWdhY3ktdHJ1bmsKKzYzNzkyIGM5MGNkZDgzNTk2MDZlNDM3MTdiYTBkOTgwMThmMGIxODM3ZGIzOTMgbGVnYWN5LXRydW5rCis2Mzc5MyAzOTg2OTgwM2JmYWVlZGQwNjA0M2NlNDczODQ5NTZmODAzOTUwOTFhIHB5M2sKKzYzNzk1IGFlYTNjNTU0M2Q0M2YyYjlkNTFjMzc4NTY3ODNiZGNkMjliNGU5NTAgcHkzaworNjM3OTYgMzY2YTQzNTUxMWRkNWQ0YWM0MDU5NDIyZDAyNDhlZDQ5OWEwOGQzNSBweTNrCis2Mzc5OCAxZDI5YmZhMjczNjgxYjk0MmFkODhlYzgxMmU1YTJmNDRjZjU4NDA1IHB5M2sKKzYzNzk5IDkyMmU1YTI0Y2M4MmU5ZWZkYTQ4ODY3ODMyOTY2ZmU3ZWU3MDU5ZWEgbGVnYWN5LXRydW5rCis2MzgwMCAyMzkxZGE2YzQyZWYwOGExNmM3MWNkNmE2YjhkYzEyYzY0MzY5ZDQ2IGxlZ2FjeS10cnVuaworNjM4MDEgMjYzZmQ2ZmJhY2FjNTg0NWU5NDYyNDQxMzExZGIxYzAyYjgzYmJiNyBweTNrCis2MzgwMiA4ODJhYTE0NjY1ZTQ3ZjFmZDg4MDc3ODJkMDY0NDkxOGE1MDM5NTUyIGxlZ2FjeS10cnVuaworNjM4MDMgMDE5ZDNiMTEwYTZlZWU5YTRhM2Q2NjU2NDk0NTUyMzFmYTlmNmUyZSBweTNrCis2MzgwNCBjZjVmMjczMWZjNTYwNzE4YzFmMzkxYmIzYjlmMWIyM2M4NWJjMjAzIHB5M2sKKzYzODA1IDFlMWRmODkyMDk1YTcxNDE1NDEwNDVhNDZhNjZlNjBiNjVkYjhhZDggbGVnYWN5LXRydW5rCis2MzgwNiBlYTI3M2M4ZTNlYWEzMDU0NDBlZGYxZTEwZWQzNjA0ZmZiNmIwYzU3IGxlZ2FjeS10cnVuaworNjM4MDcgMzM4NjViYjU4Mzk2MmYyNTMwNTY5YTdhNDNiZjVkYTczOTdiYTAwNiBsZWdhY3ktdHJ1bmsKKzYzODA4IGQ2NjM5Y2Q5NTc1ZmYyMGFlZWMyOWQwYzhhMGRkZTc3MDYzNWExOGIgbGVnYWN5LXRydW5rCis2MzgwOSA2Y2U0NDM1ZjE1YWQ0ZThlZGNmOWYyODc2NWNmMmEwODAwZGM0YWM3IHB5M2sKKzYzODEwIDBlOTE2OTBkYWUyZjYzOTZjYWY0MjE4Y2UyNDE3Y2M1ZTk0NDJkMTkgcHkzaworNjM4MTEgZWNhODgyNzMxMTk0Y2RhYzQxNTEzZTc2MDk0Mzk5YzlmMDhkNmEzNyBweTNrCis2MzgxNCA0N2VmOWE4MDZjZTk3YmU3NjlhNDMxMTU0MjVlODQ4N2IxMDY5NzY2IGxlZ2FjeS10cnVuaworNjM4MTUgMGRhMjdmZGYwMTkyMDU3NDhmYzY2ODA3YzdlNmIwZWI5NTIwODAyYiBweTNrCis2MzgxNiBjNDFjMzk1NDU4ZWIwMjhjMWY4NDQ5NzJiMDhmODQxNDlhODcwOTI0IHB5M2sKKzYzODE3IGJiYTI5ZjQ2MmJjYzY5MDQ5NzNiZGVkMTdjODBlY2Y4ZDRhZGRiM2MgbGVnYWN5LXRydW5rCis2MzgxOCAxMDVhZDYxMzI1YWMxYzIyYTBjNTA4ODE0Mjk2M2RiOTgyODdhZjliIGxlZ2FjeS10cnVuaworNjM4MTkgMjE1MTBjYzBjMmU0MmI3YmYwYjU3N2YwYzI4ZjNkNWNjYWVmY2FmOSBsZWdhY3ktdHJ1bmsKKzYzODIzIDBiMjdjZTNjNmIyMWM5Y2FmNzhmNzQ2NTRlMWQ3MWI4NWE5NTdlMGQgbGVnYWN5LXRydW5rCis2MzgyNCAzZGNkNzAwMDQ2OTZmZGY4NzMzMDQxMTkwNWQ4YzBiMWIwYjY5MGUyIGxlZ2FjeS10cnVuaworNjM4MjUgYTJlNzJlY2RiZTAyYmU4N2UwODg3ZjQ3MDc5MzRlOThkOTNiYzA3OSBweTNrCis2MzgyNiBjMDRhYTRhYWJlMTdlYmQ5NWM4YzhkZTM3MTIyNmVmYTViMTkxNDI5IHB5M2sKKzYzODI3IDJlODc2OWQ1YTc4NmI5NTQ0YzJmYjk0ODZkMmQwYmQxZWE5YjVmMjEgbGVnYWN5LXRydW5rCis2MzgyOCBmZjZjYzlkNGZmZDM1YWU1MWFjMWY5NmEwM2Q0M2E2ZGYxYTU2MDMyIGxlZ2FjeS10cnVuaworNjM4MjkgMDNhZmU2OTg1ZTVkZjc4MDIwNmIxOTA1ODhjNjQ0NDZlNGUyMDkwYyBsZWdhY3ktdHJ1bmsKKzYzODI5IDgyYTQ3ZDc4ZDI3OGI5NzYzNWI1MTNlYmI4OWE4YWY1MWZiZWEzNDggcHkzaworNjM4MzAgYWYzNjg1ZmE5Y2E5MTQ4MjU2NTJhNGU1YmRmZDY4ZGFiNzU3N2Q4NSBsZWdhY3ktdHJ1bmsKKzYzODMxIDUxYTg2NTMxMjhlM2FkNWYzOWQ1NjYzZWFkZDE1NjlhMmJmM2Q1OTQgbGVnYWN5LXRydW5rCis2MzgzNyBiZWUyNzFlNzZhM2U1MzExYjcxMmFlOGQxN2QyMmNlZGZlM2UyMmExIGJlbmphbWlucC10ZXN0aW5nCis2MzgzOCAwNzVjNmJkMjBmMDc4MDRkYjZmZjlmZThlM2NhNDJkODRmOTQ4NjNmIHJlbGVhc2UyNS1tYWludAorNjM4MzkgMDE1NmMzMzZlNmIzZDUxZWFiZjZiYTU1MjY2M2ZjZTc1OWRkNTU0NyBsZWdhY3ktdHJ1bmsKKzYzODQzIDFiZGYwNzQwOTQwM2I0YjU1NzgyODcxZTZkYTFhYWFlNmQzNjJiNjIgcHkzaworNjM4NDQgMmY1ZWRlMDBmYTllZTE3YWFmNDRjYTExZDRmMTU0MmYxODFiZDMxMiBweTNrCis2Mzg0NSBjNGUyZWYwOWEyZjA0YjI5NzQxNGM4YTZjZjM0MjE2Y2Y2MDIzNmNkIHB5M2sKKzYzODQ2IDEwNjJiN2RlYzk1YjdhNjdhMGVkYzk4OWZiMWQ5NjRlYzI2MWM2ZTEgbGVnYWN5LXRydW5rCis2Mzg0NyBkMjM2MmY5OWE0MDM2OGM4OTdiNTMzNDI2ZDIwMmM5Yjg4ODBjMGUwIHB5M2sKKzYzODQ4IDYyMmNhYmJhZjJiY2U5OTdmNTliZGNhZjFhZTMyZWRiOGRjMDE5YzEgbGVnYWN5LXRydW5rCis2Mzg0OSAyYTYzYWIzNTk1YTE5ZTI5MzFkM2I0ZDliODIxNDVkZmIwZWE4ZjMxIGxlZ2FjeS10cnVuaworNjM4NTAgZWNmMmVkMDk1ODgxNTU3ZTZiMjhhNzk0YjA5ZTAzZDU0MzdkZjE3OSBweTNrCis2Mzg1MSBiMTMwNDRkNTU0YWZkYjMxMjA4MWRlMWM0ODhhMGM5ZTMyNDgwOGRiIHB5M2sKKzYzODUzIDgzYTEwMDAyZmVkYmRhODQ5NDE2MDMyOTQ4ZDNiNTVhNjA4NzUxNTkgdGxlZS1hc3Qtb3B0aW1pemUKKzYzODU0IDY1MzAyNjQxNDM3NmM4M2E2Y2Q4ZTgzNjhkMTA1NTc5MTJlMDQ1MjQgdGxlZS1hc3Qtb3B0aW1pemUKKzYzODU2IDg4YmQwN2MwYTg0N2QwMzQxMTc0ZTI1ZThlNjg0NmEwYmYyNGE3MzYgbGVnYWN5LXRydW5rCis2Mzg1NyBiZWEzYzFmNTJlMDViODg3NGViMDIwMTEzYjM3ZGNhOWE4NzdjMmI4IHRsZWUtYXN0LW9wdGltaXplCis2Mzg1OCBlODc5N2U2ZTA3YTc0MDVlYzUwNTM4NTg2NDBmMWNmZTNlZGQ4ZWIyIGxlZ2FjeS10cnVuaworNjM4NTkgYTY1ZjA5NWIyN2YzY2M0MDg1NmM1MTc2YTU0MTViYmY5MGJiZTYxMiBsZWdhY3ktdHJ1bmsKKzYzODYwIDM3MDI3MjlhMjQ3MDczYTA1Mjg4MDg1YjU0NjlkOTkzNDU1MzBmNDQgbGVnYWN5LXRydW5rCis2Mzg2MSBmY2Y5ZDk1ZWY1MGQ3OGIzMzFmNGM4NjNhMTQxMjIzYmZkYWU3YzIyIGxlZ2FjeS10cnVuaworNjM4NjIgY2ZiNTQ5MTAwMWQwMmFlNGI4MTVmM2E0YWJkMzc5ZmY1MmVhM2NlZSBweTNrCis2Mzg2MyBlN2YwZmQ4MzU4ZjVhZWY3NDE3OTgzZGFiMzA1ZmQxY2E5Y2JjNGViIGxlZ2FjeS10cnVuaworNjM4NjQgNGRlZGVmNGMwZGZkMjkwOTI1OTA1MTMyZDY2NmMwY2I1MTVkNDE3MyBweTNrCis2Mzg2NSBjMGZlNTRhMDI4ZTM2NTkyMDEzYWZmY2U4NGQ1ZmRlYjUzZDVhNTU3IGxlZ2FjeS10cnVuaworNjM4NjYgMzE0NzZkYjk5YWMzMWZmMmE4NDJjOGQwNWE5ODlmZGVkYzc2YWQ0NyBweTNrCis2Mzg2NyAwNmQ3ODU2Y2E5ZjQ2YThmZWI5NGEyY2ExMTk3MmMyMzg0NGJkMjIzIHB5M2sKKzYzODY5IDgyM2JlNGEyNzVlMmI5OWUxMmUxODJjZmFhYjJkOTQ4OTI2NjFlZDMgcHkzaworNjM4NzEgYzBkNjE2ZjBhZDg2MzlkMmM2MDlmODg4ZjdjNmZmMDljYmMzNWUwZiBsZWdhY3ktdHJ1bmsKKzYzODcyIDMxZDJmZjg2OTZiZGM4ZWMyMGM5MzdmNDIyZTE4ZThjOWZmZDA2NGIgcHkzaworNjM4NzMgMGJmMDhkZTMzOWEwZDIxMDNhZjIxNDliMGEzNDYxN2MyODk2YWZhYyBsZWdhY3ktdHJ1bmsKKzYzODc0IGYxNTAxNzdmZjFmZjc5NGQyOWRkM2NjNDY0MTEwMmVhNWQ2ZDk0NWIgcHkzaworNjM4NzYgZWJiZjg5NTA1NmVhOGFjZjExZTU3Yzc4Yzk1NmE3NDUwMGQzNjkwMSBweTNrCis2Mzg3OSBiNmRkNDllZTAzNWI1ZDNkNmE4ZjhjMDQwYzgxNGUwYWJkNWM1ZjFkIGxlZ2FjeS10cnVuaworNjM4ODEgNjQwNDQ0NmU1YWEzNmIyMTBiNzhmYWI0OWY4NWY3Y2U2YjIyMjkyNCByZWxlYXNlMjUtbWFpbnQKKzYzODgyIDdlYWFhZDA5YjZjZGQ0YjdkOTg2YmZiOWVmMjU4ZDc2NWFlZjY5MjMgbGVnYWN5LXRydW5rCis2Mzg4MyA3ZDY2MTEwNDY0MDQ5YjEwMmEwZWU5Zjk2MzNlNGJhODA5NDI0ODI2IHJlbGVhc2UyNS1tYWludAorNjM4ODcgMTAwZTMyNTA5YjU3NzY1MzZjYTZkY2FiZmIyMjY0ZDA0NDIxY2Y1NyBsZWdhY3ktdHJ1bmsKKzYzODg4IDA1ODA1MzFjMzc1NTVhZGU4MzFlZjcxMjZhODc0ZTBhYTcwMjJiYzkgbGVnYWN5LXRydW5rCis2Mzg4OSA1YmM3ZGE2NTAzYjA1ZWI3NzZlMTYxNGEzOWQ2MmI5OGQ5NjFjMTlhIHB5M2sKKzYzODkwIDc5MzczZTA3MGQ0ODYwMDllZmFkOTJkMTE4NWM2Y2U0NWFhNjkxYWQgcHkzaworNjM4OTEgYmIyYzRiZGMzYzY4M2I0OGZhOWU5NWJkODI4M2ZkOTQwNDhjMjRiZCBweTNrCis2Mzg5MiAxZjJmMTU3N2FlNzgxOWNkYjA0ZjQxMWI5M2FmMjZiZjU4YWI1ZTU4IHB5M2sKKzYzODkzIGI2YjUzNGI4MjhiMzM5YmJkNmVmN2JhMDIyNWZjOGViYjkxMTJjMDMgcHkzaworNjM4OTQgNjVhNjA2MDhhYjVhNTliMDI4NDkzY2Y3NTg4NGUxOTVlNDVhYjllMCB0bGVlLWFzdC1vcHRpbWl6ZQorNjM4OTUgZjllYmFjYWNlMzVkM2NiNTdjNjllYWZjNWUwNDdjZWExYjlhZDk5ZiBweTNrCis2Mzg5NiBlMGNhMDIxOGZmMzNjMDI0YjUxYzIxNGI1MDE2ZTJjOWM5NDAyOTYwIHB5M2sKKzYzODk3IDQ0NDAyNDdiOGE0NDgxZGZlNmU0ZjNmMDA1MTA0NDhmM2YxZDBlNDkgbGVnYWN5LXRydW5rCis2Mzg5OCA3NzA4OGQ0MWM3OTAxZmNkMGEwMWI0NDI1OTVhNmYxZGNhMTE3ZmE4IGxlZ2FjeS10cnVuaworNjM4OTkgZWQ0NzFhODAwOWE2MzE5MWY0ZGNhOWIzNTdkODFiZGQzNDNjODYxOSBsZWdhY3ktdHJ1bmsKKzYzOTEwIDQ3ZmYyNGJjNjExNjVkMmYzMjY3ODE5NDMyYjE1OTA0NjkxOThiNmMgbGVnYWN5LXRydW5rCis2MzkxMSBjMjNlNmQ1MzAwYTBhMjRjNGE1MTExYTI0NTQ4ODhhYTUxMzEyYTg0IHB5M2sKKzYzOTEyIDM5OTkxOWU2MWQyMzhjMjIyMGMzY2ZmOGYwMDMzMWUyYzEzMGQ2M2MgdGxlZS1hc3Qtb3B0aW1pemUKKzYzOTEzIGY3M2U2ZjZkOWJhNjk3Y2E5MjdlM2RjYjM0OWRiOGZiMjg4MGE3MzcgdGxlZS1hc3Qtb3B0aW1pemUKKzYzOTE0IDUzNTNiNTUwYzk2OTJjZTg4N2QyNjBhZGE5ZDAwNDU1YzljZDViZGMgbGVnYWN5LXRydW5rCis2MzkxNSBhNzZlNDliMjE5YTJjYTJjNzU0ZTU1NDc1OTY2Mjk1ZTFkZTY2NjQ4IHB5M2sKKzYzOTE2IDg2ZWQ5NzlkZTg5ODdmYjBkYzMxOGQyZTA5N2VlNDY5MTA0Y2EzY2UgcmVsZWFzZTI1LW1haW50Cis2MzkxNyAzMjU4YmJmYzQ1NmU2NzRjMWE0ODg0YTA0MDhkY2Q3OWE3MDUyZjgxIHB5M2sKKzYzOTE4IGU0YTE4NjQzNzQ0MDQyYjYzMTU4M2NlZTg4NmExODJmNGNhNzcxODUgcHkzaworNjM5MjkgZWYwY2NjZGU4YzI0NWNiNTU2ZjQyMWYzMjBmOWE2OGNiYmJmNDJjNyBsZWdhY3ktdHJ1bmsKKzYzOTMwIDU3MmQ4MWVjZjAwZDYwZTNkNmZkOWU1ZDI4ZjRhMWRmZjkwMTc0YjAgb2trb3RvLXNpemVvZgorNjM5MzEgZjgyMTE2NjAwYzBmMTgxYmNiNTM5ZmI4NTY0Njk0NmU4OTAzNmQ3YiBva2tvdG8tc2l6ZW9mCis2MzkzMiAyYTFjNjk3OGRjNTc2MTBlMDVmNzZiOWY1MWY0NzI1ZjVkMmMxNDBkIGxlZ2FjeS10cnVuaworNjM5MzMgMjFiZWIwZDVlMzI5OTUyNGIxYTQ5ZjJkOTY4NzU3M2E5NmJlZjlhMyBweTNrCis2MzkzNCBkNTdhYTc1MmE0MDExODI3N2Y2MGExZDM5NjUyN2E5YjIxODgyZTIwIHB5M2sKKzYzOTM1IGQwZjc4M2JhNzY2OWEzMGMxMWJhZTFmMTM1YWE4MGFiYmVjZTMwZDggcHkzaworNjM5MzYgYTY1NjE5YWQ1OWYyODczOGJjNWZjNjk4NzE0MGExNGEwYTc3MWVkNCBweTNrCis2MzkzNyA4ZmNjOWVjMTg4MjQ2M2FiZmUxOWFjOTFiZGViYmI5NDBkYzg1NWIxIHB5M2sKKzYzOTQwIDU4ZjRiNjA3NzNmZTYwN2NiZWM4Y2ZiNzU1YmU0ODRjNzUzMmFkNDEgcHkzaworNjM5NDIgOGFkNGViZGJkMzczYWE3MzkzNDI4MmM1MjAzOWU0NmRiMTEwNjM1MiBsZWdhY3ktdHJ1bmsKKzYzOTQzIDEwZmIyZGVjMzY2NWI0YjU4NzMzNjFjNGVlYzUwYzIxMGYxNTFmNTQgbGVnYWN5LXRydW5rCis2Mzk0NSBiMGQ0Nzk5YjBkYjg0NGU3ZDcxYTQ4ZDY1NTNlOGU5NDNmNDcwOWRjIGxlZ2FjeS10cnVuaworNjM5NDcgODQ4MGY1NGZjZDZkZjRjMzI0YTJmZDRlYjFlYjA0MjIxOTFlZGJlMSBweTNrCis2Mzk0OCA3MWJlZDIwOGZlNTA0MjQyZGY3Mzk4MzRhNWZjNzQzYjc3ZGE1NjY2IGxlZ2FjeS10cnVuaworNjM5NTAgZTk1YzE1YmI5OTUwMmI3YzE3ODRlOGY2YjI1YmJiZjBhMjM4MGRhZiBweTNrCis2Mzk1NSBjMzRlMzQwNTc3MTRhMDExYWI5Nzg3NzYwNzhiN2Y2YTFmZjU4ODZmIGxlZ2FjeS10cnVuaworNjM5NTYgNDU0YzdiMGI2OGE4N2JjOTc4MWIzMWE1OWEwNzRkY2EyOGVlNWUyYSB0bGVlLWFzdC1vcHRpbWl6ZQorNjM5NTcgZjA0YjA1OWU2Yzk4MjExNTVmZGM2NzU4OTM4NDQ0OGE5ZWE1OGYyYiB0bGVlLWFzdC1vcHRpbWl6ZQorNjM5NjEgNzM1MjU0M2NiYTAzYzQzMWVhN2QxNjUyZGIwYmIwMjUyZTMwM2UwZiBsZWdhY3ktdHJ1bmsKKzYzOTYyIGJiY2UxOGQwMGQ4NzUyNWFjYWY3Yjc0MjNhMTA1OGRhODAwMjIwMjIgbGVnYWN5LXRydW5rCis2Mzk2MyAxZDBhOGNhYzE1ZWYwNGU3NTZjNmU3ZmIyNDhkMzMzZDkyMzg2MDljIGxlZ2FjeS10cnVuaworNjM5NjQgOGUwYmMxZmMwOTVlNTBmYzQ2NzJmOTQ2NzZlMjJhMjg5ZTA4NTBjNCBweTNrCis2Mzk2NSBhZDEzY2I5ZTk0ZjFiNzRmOWRhMDQ0N2ZiYzZmZmY3ZTg5NDc5NmZjIGxlZ2FjeS10cnVuaworNjM5NjYgZmQ2ZjMwNmMwNGUwMGFmMmE4M2M0YTEyODJiN2FkMTlkODUzZmZjOSBweTNrCis2Mzk2NyAyYTQ5NmYxZWI5ZjE2NGY4NThjMjZiZGM1NzczY2I1ZGRiNDg1MjQzIGxlZ2FjeS10cnVuaworNjM5NjggMGQ3Y2NiNTAwMDdjZTJjMjBmODM3YTRkYWI5MDIyNzY3MjU2YzA3ZiBweTNrCis2Mzk3MCBiNTUzMDllZjU0Yzc3Mzg3ZmUzZGY3ZjlmYzUyZmQ1YjYwMTZjYWE4IGxlZ2FjeS10cnVuaworNjM5NzEgOTQ1ZGExNzI2Y2YxYTA4ZGYyYWU0ZWY4NDE2ZGViZmY5MzkyY2NiMyBsZWdhY3ktdHJ1bmsKKzYzOTcyIDllMjcxY2IyNWU1OWY4OWYyOTZmZDcxMjJjYzdiNDEzOWNkYWEyYTIgbGVnYWN5LXRydW5rCis2Mzk3MyBmNzQ1M2IwYjMzOWUwNWU2NzBiNTdhM2UxNDc2OWE2MTA1ZTk2YTAzIHB5M2sKKzYzOTc1IGIzODJiZWI3YmUzNmYyNTI2ZWE0ZjcyNGU0MDhmZDdlYjA2YTM0ZDkgbGVnYWN5LXRydW5rCis2Mzk3NiA3ODgwYTQyNzcxNTgyYmNlNWY3NTExZTY2ZjQ4NTZjY2FmY2U2NDMwIGxlZ2FjeS10cnVuaworNjM5NzcgNGY1ZTZhYWY1YTZhODBhNjUzOTA5NTVlYmU0ZGJiODlmMTE4MjZkYiBsZWdhY3ktdHJ1bmsKKzYzOTc4IDdhMWQ0ZTgyMzNmODkwMzEyODM4NGM1NzEyNzQ2NTk0ZDdkOTY2YzUgcHkzaworNjM5NzkgMzI1NWYxZjE2MGFkZWRjMTA0MWU5ZWJhZTRkZjQzNTA0ODQ5NjIyZCBweTNrCis2Mzk4MCAxMzBjZTg2ZDYxYjY3OTJlODJhMTBlMzJmYTQ3ZGRmZTg2YWIyNGM2IHB5M2sKKzYzOTgxIGViYmYwMTE1NTBjZDZhOTQ0ZjkwM2M4N2E5MmMwZTM2OTJjY2UxN2IgcHkzaworNjM5ODIgYWY2ODBmZDNmZmRjNzYzNDg4MWNhMWVjMTM0ODk4NTUzMGU3M2EyZSBsZWdhY3ktdHJ1bmsKKzYzOTgzIDllYTEwNGYxZTVjZDI2M2M1NjEwYmQyOWMyN2M4NDk5Y2YzZjVjYzcgcHkzaworNjM5ODUgY2FhOTBjZjZiZTlhM2Q1N2Q0OWY5Zjc0MTVkMWFkYTljZGJkZDU3YSBweTNrCis2Mzk4NiAyMjg0ZmE4OWFiMDhkNTU3NzEwZjQ3MTUwODVmODEyNTUwNzJmNTkwIHB5M2sKKzYzOTg4IDIyMTBmNDJlN2M4OThiM2RhMjMwMGU0Y2I5NjYwNWE4NTA5NGQ4NmQgbGVnYWN5LXRydW5rCis2Mzk4OSAyNDk1NGViODBiOWI2MTdiMzQyNWI2MjNiZTU1NTJjYTBhMjI5NDcwIGxlZ2FjeS10cnVuaworNjM5OTEgZjA4ODUwOGY2ZDk5ZGFlZjJlYzI3MWJhMDdjN2NlNDJhYjMwOGM2YSBsZWdhY3ktdHJ1bmsKKzYzOTk0IGEwMTkzYjA4ZjBlYjhmNzU2ZmJhZTc3ZDZjMWQ4OTc3YTc1MmU0MTMgcHkzaworNjM5OTcgYzlhNWYyZWI3MjBjYzU1YjU0OTRhMmQwYmI5MmQwMGNkYzk3ODcwMCBsZWdhY3ktdHJ1bmsKKzYzOTk4IGM4OTQzNGNiOTE0ZDhjYzk3NDEwMDQ3ZWNlMGE5MmZmZjM5ZWU5NWUgbGVnYWN5LXRydW5rCis2NDAwMiAzYWViYWM3ZjI3MjUyZTQ0Mzc3MGVkZDczNGY1ZjM4YTMwMWZkZTAzIGxlZ2FjeS10cnVuaworNjQwMDMgYmYxNDNiZWIwOGU4ZTYyMWE1MmQxYWRjOWFiOWJkYzg4ODk1NDY4YiBsZWdhY3ktdHJ1bmsKKzY0MDEyIDlmZGEwOTBjMDQ1ZjZlMzE0NGEyM2QzM2ExY2FjYmEzY2U4ZDJkYzYgbGVnYWN5LXRydW5rCis2NDAxNCBlYmY2ZjYzOWUxMTc4NWRiNDVmYWIwY2Y5ZDc5ZWI1NzIyZTMzYmVkIGxlZ2FjeS10cnVuaworNjQwMTUgOWJlY2U1N2NkY2UzMWI4MDkxMmRjZjY0ZTU5NmRlNzJjOGFlOWE5ZCBsZWdhY3ktdHJ1bmsKKzY0MDE2IGIzMmQ3YjgzMjk4YTk4ZTQwYjMxNzcyZmQwYjE0NzU0ZWYzNjY1OTggbGVnYWN5LXRydW5rCis2NDAxOCA3MjAxYzAxOTNhZGVkODNiZGZjN2NmNjgzZDYyNTgzZTU1ZjNiYzMyIGxlZ2FjeS10cnVuaworNjQwMTkgNDBmMmQ1YTRmYWRjYzMzYmUyMDkwMjJiMDgxYjQwYTA4YjIyOTdkYSBsZWdhY3ktdHJ1bmsKKzY0MDIwIDY3NzU2NGEyNzA3YWFjNzFiYjQyMWFkYmYyMGU5OTIxNzQ3M2QwNmYgcHkzaworNjQwMjEgNWY2NWM4MzNkYzg3MDZhMmQ1ZGRhZWFlZTZkYWJlMzU2OThlZWEwMSBsZWdhY3ktdHJ1bmsKKzY0MDIyIDRmNzBhOWRlMjg2NTE5NjA3ZTJjYzE1ZjBmNDRmYjJiM2MwZWRhZjggbGVnYWN5LXRydW5rCis2NDAyMyA3ZDM2MTNkYzNmMWNjZGU1MGNmYTY2ZWI4MzgxMzRkZDkwODRlZjQ4IHB5M2sKKzY0MDI4IDc4ZDNkMzU5NTU1ZWE1YmFmNTczMWM5OWQ4OTFmMGNiZTk2YmMxOWYgbGVnYWN5LXRydW5rCis2NDAzMSBmM2RmNTFiNjBkYzI2MjNiNTU2NTZiY2NkZjYxZTlkOGY4NzVkZmM1IGxlZ2FjeS10cnVuaworNjQwMzIgMjJjZmNlYjMzMzhlNjhhZjg0OTIxMmQxODk4NzE3YjM5NmQwMTdiNiBweTNrCis2NDAzMyBhN2IxNjIyMjc0YjM3NTJkZjBkNmJhZDRiNmMwOTE5YzEwZGQ2OWY0IHB5M2sKKzY0MDM0IDVkMjc0MmUzNjg4NmYwMWRlMDMyYTVlMzUyNTM1NDZmYTVmY2YzMGIgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MDM1IDFmZmU2YWI4NGExYjhlZGMyNDg5MzlmYzZkMTFkY2I4ZmY2ZTNjNDMgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MDM2IDFjMDMwOTBiMmEwYTJmYmU2MTRjOGUzNDJhNjhkZGFmNTlkODlmMDkgbGVnYWN5LXRydW5rCis2NDAzNyAyNGRmMzQzNGNjZjdiYzI4NDVlZTdkMmM2Y2UzMjUzZGUxMTU5YWNhIGxlZ2FjeS10cnVuaworNjQwMzggYzhlMjk1OWU4YjBmMTkyYTRiMzIxOGJmZjlhNjMxYjZiN2Q4NGJhNiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQwNDAgMzFhZWU2NzAxOWEyYWQ0YjU4YzA5YjI4MzA2NDM2YmRiNTMzMzFiZSBsZWdhY3ktdHJ1bmsKKzY0MDQxIDAyNjUxM2JlMzhkYWE3N2JkMGM4ODI0Zjk5OTdhNTkxOGQyMTczY2EgcHkzaworNjQwNDQgZDU2NDUwZGI2MGEyM2YzNDM0ZDZiZDAyMDc0ZTFiZjM1YmM3MDY0YSBsZWdhY3ktdHJ1bmsKKzY0MDQ1IDUzMjUzZjM2MDE0ZTAwMWYxY2YxM2NhYzE5ZWFiN2RhNWJjMDJlMjIgbGVnYWN5LXRydW5rCis2NDA0NiA5NGUzNjMwZGFjYTczMGZjODVmNDhmNTcxNDM2OWVjNGRkMjdkYmQ4IHB5M2sKKzY0MDQ3IDI0NmE4MDI2MzdhZGY3ZWQ4YzYwYjMwNzlhYWVmYzY3OTJiOTdmNGIgbGVnYWN5LXRydW5rCis2NDA0OCA1MjI5NGFmNGI2NjNjYWRhOGUxZmQ5ODg3OWVkYzQ5MTk5NTQ2Yzc0IGxlZ2FjeS10cnVuaworNjQwNDkgN2FjYjdlN2E1ZjI4MDkwNTA0ZDk2MDBiMmFlZGVlYjYwZjRiNTg5NSBweTNrCis2NDA1MCA2NDI4YzRmMWFlMDk3YTQyNWMxYmNlNGVmYzMyZWU5MzJkMzA3MDBlIGxlZ2FjeS10cnVuaworNjQwNTEgZDRjZDcyMjNhZjNiZjI5YzNjYTdjZDVjNzY5YTczMTlkNDFmMWVmYSBsZWdhY3ktdHJ1bmsKKzY0MDUyIDc3MWY3YTgwNDg3NGZkN2RhMGIzZmNlZjg5NWMyZjAyNTMyYWIxM2YgbGVnYWN5LXRydW5rCis2NDA1MyAwMjA1OTI2OGM4MjVmYTM2MGYxMjM1YTIxODY2OTkzOThhZDEwN2NjIHRsZWUtYXN0LW9wdGltaXplCis2NDA1NCA2Y2ZhMjk3YzY1NTUwYzljMmY0MjI2MzA1ODNjMmNkN2M5ZDk1ODczIGxlZ2FjeS10cnVuaworNjQwNTUgMTA1NzdlMjVmNzhmNmMyYTA1YTMyMzRjMjYzYjdmYWFkNzg0OWM1MiBsZWdhY3ktdHJ1bmsKKzY0MDU2IDJkNWYxZDk1NmVmNmJjZjQyY2I3ZWE1NzUwYWRmOTdkOTE4N2I2MGUgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MDU3IGRmOWIzMzdiYTMxMTI0ODlkMjVmM2ZhZDkyMmI3YjQwNWRhYjFiZWUgbGVnYWN5LXRydW5rCis2NDA1OCAzOTM5ZmY4OTgzNGNmNjBjM2YyZTUwMzI4ZDZlMDM3MDgwNDZhZmJiIGxlZ2FjeS10cnVuaworNjQwNTkgMzM0OTJjMjQxZGFiNWNhODEyYzkwZmY0YmNlNmM1YzdkNWQ1YzdhMyBweTNrCis2NDA2MCAxMzllY2RiZjRmMTk2YTJlNzNiZTYwZTNhOGQ3OWMyYjNhYzY1NmRlIHB5M2sKKzY0MDYxIGMxYWViNmM5NGFmMTBmYjdhODExOTI0ODVjNDBkOGJiMDFiMzI4NzkgcHkzaworNjQwNjIgNTNjNjBjN2NjY2Q5ODM0YmE5MWM3NGNiNDgyNjQ5YmNkNDQ0ZWJkYSBsZWdhY3ktdHJ1bmsKKzY0MDYzIDQ5MmY4ZTEzMDVjZjYyZTA2MTJkY2Q1MzI1OWI2YzU1ODk4MWQyYjAgbGVnYWN5LXRydW5rCis2NDA2NCBlZDU3MmQyNjBmYTcxNzJiMzE2NDkxN2IwMTNlNjk2ODBkNjI3NWEwIGxlZ2FjeS10cnVuaworNjQwNjUgODk1ODdlYTE4ZWQ3ZTE4NzRmMTFiYTMzMjljZWViNjU3YmIyMzViNCBsZWdhY3ktdHJ1bmsKKzY0MDY2IDI5NmFiMTAzOGI3Zjc4ODAyZWI5NzQxMTlkOGM1Mjg2NmNiNzQ3YTEgbGVnYWN5LXRydW5rCis2NDA2NyBmNDk4OTUxNmI0ZDZhMjg2NzE0ZjBkNmQyZmNjMDhlY2E0NTMyNzQ1IGxlZ2FjeS10cnVuaworNjQwNjggZGM5ZjRkNmNkM2YxNzI2ODNlZTE5MWMyODkzNzRjYzRjNTViZDA5MCBsZWdhY3ktdHJ1bmsKKzY0MDY5IGNkNWQyNWRkNjEzMTEyZjdiYzk1YzJkYWFjZDJlNDA4MGQ5NmM2ZDAgbGVnYWN5LXRydW5rCis2NDA3MCA4MTNiODdiMTZkYzUwOTAyZjM3OGI4ZDE3YzZiZDVjZTRjNTY5Y2JiIGxlZ2FjeS10cnVuaworNjQwNzEgYzAwNTc2ZTIwMmRhZGNmZGYxM2E0NDlkZDMzOTQyN2U2OTVhYTYzNyBsZWdhY3ktdHJ1bmsKKzY0MDcyIDc1MjEyYjQwOGQ3YmFiYTJjMmMyZjFkZGM0NTVlOWM0YTFlYWQyZmMgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MDczIGQ1Y2MzYzVjYzE4OGVjMzI5ZTUxMzBjM2EyNGI1YjM0OWIxZGMzM2UgcHkzaworNjQwNzQgZGZjMzhlNWFmMTJkMjY1MjA1ZjZiZmNlZDlhYzVkYTFiZDAyYmRiZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQwNzUgNDA4NGE4NGU0ZDNiNzQwMDNhZDhiZTk2MzY4MjU2ODEwMmRhZmFiMSBweTNrCis2NDA3NiBlZTczYTZiMjdjM2FhNGE2YmYzNWUxYTliZmIwZTgwYWM0MzFlMzNhIHB5M2sKKzY0MDc3IDAzNjdhOTM3ODhkYmFhMTJmY2ZjYzliODE5M2MxZGVkMTg2N2VkOTkgcHkzaworNjQwNzggOTMwZDkzMDhiMzJhYTU2NWM4ZmNjZjE5NjUwZmI0M2JmMzM1YTk3OSB0bGVlLWFzdC1vcHRpbWl6ZQorNjQwNzkgMDllYjhkNjI2MjZhMDI2MzQ5OWVjYzM2YzdmMWUxM2M2MmFhOGFkMyBweTNrCis2NDA4MCBiYmUyMDc3YTQwMWJjNDliMzY4MjMxYjgyMDY2NGUzOWM3YzMyMTc3IGxlZ2FjeS10cnVuaworNjQwODEgN2Q4MjRmZDEzMWFkOTkzMzliYWVlNTk3MzNmMjgyMWU2OGU2ZDY2OCBweTNrCis2NDA4MiAyNmE3MjgzZjdmMTc5YzRmMTQ3YjU3M2RjMzQyNDdmMWIyODhmYzc3IHB5M2sKKzY0MDgzIDk4ODI3YTIxZTM1MjllYjQ1NzZiYjgyNjE0YWM3MThkZDJjZjdiMDggcHkzaworNjQwODQgOTFlYjI0MjA0ZTA4YTZjMGVjZTkxYmYxYWI4ZjRjYjBhNWIzMTdhMCBweTNrCis2NDA4NSAyOTI1YjU2OGFhY2NhNjA4ZmY5Nzk3ZjZjMzYzZDlkNDk4ZjFmMmZjIHB5M2sKKzY0MDg2IGFjZGE0MzI1MjcxMDAxN2JhNzhmMTU1Mjc3NGMxMWY5ZjJjODNlYjIgbGVnYWN5LXRydW5rCis2NDA4NyAyZWFlMzFhM2VmODkzMDBhYmIxMmNkYjBhNjg1ZTA4ODkzZGZiY2JiIHB5M2sKKzY0MDg4IGJkNTg0ZjEyMWM0YjUwMjI0NTAyZmM4ZTYzZDk1NGMwMjA5NjJlMDQgcHkzaworNjQwODkgZmZjNmEyZWY3NmU4YWQ3MjRjMTU0NDZmZDc0MTI4OTA4MjM4ZDIzNyBsZWdhY3ktdHJ1bmsKKzY0MDkwIDZkZGUzOTFiZTk3ZDg4YjdjMWEzY2QzZWU1ODI1MzE4MTFkYTk1MmIgbGVnYWN5LXRydW5rCis2NDA5MSBmNTI5YmYyZGY0MzY4Y2E4OGZjMmNjOTJhYTY4OTcwNzJkN2I3MmE1IHB5M2sKKzY0MDkyIGFmZDNiOGVlZTJmYjk4ODNhMWNlZmE3OTkxM2MxYTQ2ZGY2NGMwNzUgcHkzaworNjQwOTMgZTdhOWVhYjM2M2FkYWE1NzJiNzUxMTcxNzk3MDllMWU3N2U3YTYzMSBsZWdhY3ktdHJ1bmsKKzY0MDk0IDgyNDhjY2ZlYjUzNDI5YmQ2MjI5YmZkNjdlOTcxNjE4OGYyMDI3OGQgcHkzaworNjQwOTUgZWM4MjdmNmU0Y2M2YjY2OGU4MDk0Yzc0OTRlNDNjZDA5YWJhNjFlZiBsZWdhY3ktdHJ1bmsKKzY0MDk2IDBjYTI0MThjNzcwMjU3ZjVkYzcwMDhjZDk3NjgxOGMyMGZkZjkyZjUgcHkzaworNjQwOTcgMjcxODQ1ZjMyM2JlNDMzMmZkNzFmNzFhYjgyMWMzZTQzYjYwOGU2MSBsZWdhY3ktdHJ1bmsKKzY0MDk4IDAxM2JlNjMyMGI4Mjg2ZTQ4OGIwMzFkM2M5OWYyYmI2OTFmOGY2NzAgbGVnYWN5LXRydW5rCis2NDEwMCAxZWFjOGZmMDFkN2IwNjA3ZWRjZDIzZDA0ZTM2ZTU3MDdkZTMwM2NiIGxlZ2FjeS10cnVuaworNjQxMDEgN2Q3MGI1OWVlYWYyZGQ5MGQ0NmRmY2JiOWFkMmVkMjM5NGE0MDVmMCBsZWdhY3ktdHJ1bmsKKzY0MTAyIGRhMzA3YmVlZWJiOTIwMjA0YjRjNzAzNDg2MTVmNDZiOGI4NjhmMGMgbGVnYWN5LXRydW5rCis2NDEwMyAyYTdiNmU5OWNjNTRjZWViNDhjZTljN2NmMzc1NDZhZGI5MTNmZWFkIHB5M2sKKzY0MTA0IDQ1MTFlY2QyNTYzNDNjNmIyNDAyODJjM2NiODUwM2JkMmFkYmY5Y2UgbGVnYWN5LXRydW5rCis2NDEwNSBhY2RkYjAwYjFkZTVmMDQ1MTNkZGJmNmYwZmQxNTZkZGEyM2QwYjM5IGxlZ2FjeS10cnVuaworNjQxMDYgZTgxZGVjY2IxN2M2YjY2NzJmNjcwOWQ4YmJhMzJlODYwMGQ4NTU1MCBweTNrCis2NDEwNyA5NGY2NGYxMWZkZDAwOThlNGFkNWEzZDZmN2EwMDZmMmU1ZGIwMGI5IHB5M2sKKzY0MTA4IDI1MTE0MzE1MTlhMjIxYmMxODY0ZDgwYjE4NDE5YTEyMGJjZGZjOWYgcHkzaworNjQxMDkgODhhNDJkYjM3NzdjMjNiOTQ3Y2VmYmNhMTIzNGU4MjZkY2NlYTgwMSBweTNrCis2NDExMCBiODJlMDU0NWQxMTE1NGE5ZWMyMDgxNTExMjYxOTJiNGFiNmVkNjI3IHB5M2sKKzY0MTExIGI4MzNhNDAwOThjMDBmNzk5NzY2Njg2ZTU1NWFlMzBlMjRiZWE1OGMgcHkzaworNjQxMTIgYjBlZjAwMTg3YTdlYzE2N2I4MTUxOGEwYjBhZTNlOTZjYTdmNmVjZCBweTNrCis2NDExMyAyNTQzYzRjNzk1NDMzYTYzMTRkMDIxOWUyYzRmZmJmZTA2YWFkNTNmIGxlZ2FjeS10cnVuaworNjQxMTQgMWM5NjRlZDM1ZWY5ZmIyNzliNmNjMmRjYTM5YWUwZWVmN2NjMTI1NSBsZWdhY3ktdHJ1bmsKKzY0MTE1IDhmZTQ3YjJjOGJmZTM3YTQwN2RjZDMyZmMyZjJmNzhjM2YwNjc2ODggbGVnYWN5LXRydW5rCis2NDExNiBjYjg0OTRjZTEzMzdjODNmYjQzNjU4ZGEwODEwMWZmYTJhZTRkZjgzIGxlZ2FjeS10cnVuaworNjQxMTcgMGY1NTY0ZmQwNDBhOTRhM2VlOTk4MWUwYzE4NGQwYTExYTIzNGY3NSBsZWdhY3ktdHJ1bmsKKzY0MTE4IDI0NWRjYTI2NzEyZjc2MzEyMjYyNWIzOTQyMTBlYmNiZjk2OTQ0ODMgbGVnYWN5LXRydW5rCis2NDExOSA1MTdlMTQxN2Y3ZTJjZDllOTlhMGU4MzYxMDI4OTBkOWQ0OTk4MmU4IGxlZ2FjeS10cnVuaworNjQxMjAgY2VmOWYyN2E0Y2MzM2ExZmY4NWY4NzIxZTI4ZTU0ODQwODAzOGU0NSBsZWdhY3ktdHJ1bmsKKzY0MTIxIDIxMmExZmVlNmJmOTNmOGI3NGY4MWRkMzU2N2JmOTY0ZTYyN2VhMjAgcHkzaworNjQxMjIgNWM2Y2RmY2Q2ZWFlNDllZmE1YzdhMTUyYmY4MjA1ZjBmYWE3ZmM1MyBweTNrCis2NDEyMyA1N2M5YWJhYjQ4MzJjOGI2MjRlN2NiY2M4ZmNmZTc2Njc5MmM0ZDNhIGxlZ2FjeS10cnVuaworNjQxMjQgNGRkMTAwMzcwODhjMjgyZDE3NmI0ODE2NmQ4ZDg4OGI3YzE3YjgyNiBweTNrCis2NDEyNSBjMzQ5ZjlmYmM3MDQ0NGE3YjM4NWJiZTQ5YmMyN2UwOWRiY2U0NmExIGxlZ2FjeS10cnVuaworNjQxMjYgZTJlYjcwMjM1MzkyZmIwZGJjMTQzZWY0YzNhZWU4MjRjZDE4NWYxZiBweTNrCis2NDEyNyBiNzcyYmVlM2ExMGVmMGMwNTIyZjE1NzMwMWE4MWNkMGM4MWQ5YjAyIHB5M2sKKzY0MTI4IDhkYzQzMTJhMmY3NTc4NTBhNDNmZTVmZjk4ZDk5ZDg3ODRhOWRlN2IgbGVnYWN5LXRydW5rCis2NDEyOSA5MTIxYzVjYzRmMDU0MTBmZmQyMGI4MjVlNWY2YjIyYjMwODNlZTcyIGxlZ2FjeS10cnVuaworNjQxMzAgNzJiNDk0NmM0NDNhZTQ1MjYzZGZlOWEzNWJlMWYzY2JiZWFjMDcxMiBsZWdhY3ktdHJ1bmsKKzY0MTMxIGU2YmVhNzJlOTQzNzAzZWViODYxNTlhY2U3MTAyNzRjODJlY2E1MzEgbGVnYWN5LXRydW5rCis2NDEzMiBlOTM1OThiZDdmNDI4OTI5NmQwMjQzMTZiYzJjNmUyY2QyYzdkOWYxIGxlZ2FjeS10cnVuaworNjQxMzMgNjk2MzQ0ZWY4YmMwNDg4MTVhMGRmZDNmMjQwNmJkMGVkYzRhZWIxYSBsZWdhY3ktdHJ1bmsKKzY0MTM0IDZkZDNlYjQxMTcwYTU4ZGFiNTc5ZDEwMjE5NjMzNjJlMzhjYjA5NzcgcHkzaworNjQxMzUgMjgyMDEwOWM4ZDU1MjhmN2QzN2ZjYmJjNDZlY2IzODFjZDQxOGE2YiBsZWdhY3ktdHJ1bmsKKzY0MTM2IGNjNzJmNDFmZjAxNDFhNDdhYTZjYzhjZDM3NGMxODgwY2MxNzM0ZWUgcHkzaworNjQxMzcgMTc3ZjFhYWUzYmI0NDkxYzAyNmUzZmRjZTdmNDFmODY2YmQ4NTUxYyBweTNrCis2NDEzOCBkYTQ3ZTdlMTM1YWU5ZjMxNjgzYTRhMmIzNjU0MGJkNjdmYjY2NDkxIHB5M2sKKzY0MTM5IDZmM2MxMzU3YTdmYmRlN2ZhMmM2Yzc0NTA5NTMzNDYzM2Q5Njc5ZTkgbGVnYWN5LXRydW5rCis2NDE0MiA2NzM1MzJhYTM3OGIxZjhmZWE2MzBlYWFkM2JhMTVhZGJkNmEyMThkIGxlZ2FjeS10cnVuaworNjQxNDMgNDQ1Y2Q2ZWJhMzMxZTlkNTZiZTgwZWVlNTIwZGFlNzJmMmU2ZjFiNSBsZWdhY3ktdHJ1bmsKKzY0MTQ0IDA0NWY4M2ExYjg2NDFjMjRmNmY0NGZmNjkyNWFiNWYyYTE3ZDY0MzUgcHkzaworNjQxNDUgZDNlMmE4ZTdiZjQ1OTEyMmYyMTNkMzFkM2UzOGJmM2JhNDdhZTlhMSBweTNrCis2NDE0NiAzMmZlZjYzMWY3ODkzNGMwNmI5ZGExMGNhNGZkODU1MTlhOGQxODM1IGxlZ2FjeS10cnVuaworNjQxNDcgN2E1YmI1NTNkYTJiMTcyYmIzYWNlMGQ0ZTE1MGJmNzE2ZWFmMDY3NCBsZWdhY3ktdHJ1bmsKKzY0MTQ4IDRjNmI4YjkzOTcxODE5N2UyNGQ4ZmJkZWJhZTkzOTgwMmY3NWVhNDkgcHkzaworNjQxNDkgNmE3ZWIwYjcwMTk4MDk5YTgzYzgwZmViZjJkMTg0OTI5ZmI5ZjAwZSBweTNrCis2NDE1MCBiNDVhOTUzOTA2MjBhZTY3MDYzOWRhZDc2ZDM3ZmU4ZDQ1M2NiZDMzIGxlZ2FjeS10cnVuaworNjQxNTEgZjc1MWRhYjcxMzAyNGQ5NGVhY2JkMmU2YTZiMGM1NTE2MDIyNGZiOCBweTNrCis2NDE1MiBhZmRkNDljNDc1OTlkOGJhZjU2ZmI4NTcxYWM4YWQ2YzMxNWI0NDgzIHB5M2sKKzY0MTUzIDhiMGUyYzk2Y2U4MGUwNWNjZTc3ZTMxOWI5MmQwMjdjZmIxOWUzOTUgcHkzaworNjQxNTQgMWJmZWE5NTZkMGQ3MDk5YWQ5YjU5M2FiOTE4MWQ1ZWM4MjAzMDRhNyBweTNrCis2NDE1NSBiZmI4Mjc0ZTM5MzlhOTQ5YjRjMGEzNzk5NzdjMWJmOGFmNTk3OWQwIHB5M2sKKzY0MTU2IDdiM2EwMjdhYjc4NWI4NDUwYTMxZGZlY2JhYmYyM2Q0NTNjZGVjNGEgcHkzaworNjQxNTcgZDE1ZDg2ODBhMDBhNjBjZDE5ZGI4ZTQ1YTAzOWUxZWMwZjQxYjE0YSBweTNrCis2NDE1OCBmNTI4MTNmNDMxODlkMjNjMDg0YTA2M2Q3ZWIyYWI0YzliMjg2YWM3IHB5M2sKKzY0MTU5IGEwMjFmZjExNzE4YjZhOTVhOGUxZjE3OTY5YWM1NzczODNmZjc3NmIgcHkzaworNjQxNjAgMzhkMTc2ZWJiMmZhYjk2M2ZiM2ViNWQ2ZmYxMDM1MzE4ZTU5OTU3MCBweTNrCis2NDE2MSAxOGVhYTFkNWYzOTQyOTgxOGU4NGVlOGZlZWMyZmU5OGUxZjI2MGFhIHB5M2sKKzY0MTYyIDVhZjE1MDg5YTEwMDY0OGI2NmYxZDY0MWIyNmVhYjliZmJjZTI1MWEgcHkzaworNjQxNjMgODA5NzVlNjFmOGM4Y2RlNWI1Mjk5YWI5YTVkZGRjZTI1YzVkNThmMSBweTNrCis2NDE2NCBmMzFlMzJhMjAxM2NmNDBhNDk4YjcxYWY0MjMxNzk3ZmJkNWUwNzYwIHB5M2sKKzY0MTY1IGY2YWVhODA4YjM1Nzk5OTMzZGUyZjAyNWQ1NDg5YzM3YWFiYTE0ZDMgbGVnYWN5LXRydW5rCis2NDE2NiA1MjU4ZDRkN2RlNzdiNDk4NjVlMDUzZDc3NWYxODQ4ZmIwNDZjMDFiIHB5M2sKKzY0MTY3IDVmNGE1MWY2MzlmMWQ1ZmU3M2E5ODA5ZGQ1MTY5NjkzYWRjMGE3NmIgcHkzaworNjQxNjggOTFhODgyMDBmZGYwZGQ4OTM0ODM4OGIzNWZkYjUyMWQxYjI0OTY1MiBweTNrCis2NDE2OSA0NDAxOWUzN2FjOTI1ZTU1ZTQ4OTliZjIzNTE4MjQ1NzRmMTM1M2I3IGxlZ2FjeS10cnVuaworNjQxNzEgNjUwYjNmNjg0NWY5MzFlOGJjMzFlNGRlODcwYjhjMWRlYTNiZjg5NyBweTNrCis2NDE3NiA1YTljZmY3ZmQwOGY1Yjc5MTdmNzA3NjBlYmUwZjM3NWQxYjk4NzEyIHB5M2sKKzY0MTc3IDU4NzBlYmUyNWRkMDkxYTViZDU4YmI1MWFkN2YzOGVhZWQxNGJmMTYgcHkzaworNjQxNzkgM2EzZTIzMWI4NjZmYmUyYWZkZjM5MDFkMDdmMTY3OGUwNDE1ZjM1ZSBweTNrCis2NDE4MCAwYWU1MGFhN2Q5N2M1Mjc3ZTdiZjhlZjg1ZDliYmM4YTVhZWE5YTc4IHB5M2sKKzY0MTg0IGIzNzY5YjZiYWUwZjBhZDc4NzNiNjA2ZjFhYzYzNGJmNTNmYzUzZWMgcHkzaworNjQxODUgM2Q2ODY5ZTJjOTJhYzk5NjlhY2U4YTY4ZDJkMzk4YzIzZGI3NWZkYyBsZWdhY3ktdHJ1bmsKKzY0MTg5IGU4NmYzODU4ZGYyMGNhOTNkNmVhYzA0YjAzM2M5NTdlYTc1MTFlOWUgbGVnYWN5LXRydW5rCis2NDE5MCA1MDNmYjNjNWUwODE0YzEwNWYyZTU5OGUxYTcxNjE3NGM4YTEwNTY4IHB5M2sKKzY0MTkxIDMwMTdlNzk0YmJiOWFjMzVkNGE4ZWZjZTc4ZDE5MTE4ZmFlZDJlMWMgbGVnYWN5LXRydW5rCis2NDE5NCA0MTQxNDkzZGQzYTA1NTZhYmIyMzcwYmYwY2NiNmY2YzU5OTAzZmIxIGxlZ2FjeS10cnVuaworNjQxOTUgNDE0ODRkMTgzOTBjZmMzMDYyZDkxMjMwYTBlZGQyZGQ1OGMwMGQyZCBsZWdhY3ktdHJ1bmsKKzY0MTk2IGY0ZmY1OGUzNDZlZTQ5M2ViYTQyY2UzNjBkODQyNTg0YWIyZGE0YWMgbGVnYWN5LXRydW5rCis2NDE5NyA5N2NkOTUzNjdkNjBmZmI1ZDc0MTY4OGU4MjZjMDVlOWQ1MDY0Njc5IGxlZ2FjeS10cnVuaworNjQyMDIgZTI0ZjI2YzNjY2U0NjQ4ZTc2NzExODdiODM4YjcyOGMxODFkMTE1ZiBsZWdhY3ktdHJ1bmsKKzY0MjAzIGQ0MDdmOTU4YzEzNzRlYzlkNjRmNjQxMWZiYWRkMjRhYTMwZDFiNmEgcHkzaworNjQyMDQgMTA5ZTk3NDhjN2Y0MzUxYmY2ZjJhZDNiMzNlYzJlZDEyMmQyNWRmZCBweTNrCis2NDIwNSBmY2RmODE0YzliMTEyOGEyMTkzYjk0N2Q0Y2YyYWI2ZmFkNWM5YmNiIHB5M2sKKzY0MjA2IDY1ODVmZDFkOWFkNzEyM2Q2Y2FhOGM3NDRhMWVjY2M0ZmI2ZjM0MDQgbGVnYWN5LXRydW5rCis2NDIwNyA0Yjg2ODJlYTM3YzFmNDI0OGRkNmM2OWY5ZmU1ODg1NmU2MTdiODhjIHB5M2sKKzY0MjA4IGZkN2ViMjc0MTAxMjFjOTVkODAyOGU1NjdhZWQxNzkyNWQ3MmZkMjEgcHkzaworNjQyMDkgNTcyNmU5MTU3YmYwMmZiNWQ4N2RkMzdmMWI0NjQ3YmM5M2ZjNjdjNyBweTNrCis2NDIxMCA5MmI3OWI2ZDFhM2I5YmJkMGUxOGE4YWZlNWFkYWQ0OThiM2UwMjZhIHB5M2sKKzY0MjEyIGRiOTlmODc1MjcxMDZjYjczYmU2YTdkMTZiNmYxNDE4MzZlMjY0OTYgbGVnYWN5LXRydW5rCis2NDIxMyA3MWNiN2VhNGYxMTAzNjc1MjRmYjNiMWFiOGRkM2UxMzhmMGNmYTgxIHB5M2sKKzY0MjE0IGZjZmUxMGYzZGMxNDZjZjUwNWFjZWZiZmJjOWJkZjg2ZTdjODNkNzEgbGVnYWN5LXRydW5rCis2NDIxNSBiMWY0ZWE0ZWI1NTU2Mzk5MzQxY2Q2ZmZlZTVkNDZhNDczOTI4NDA0IHB5M2sKKzY0MjE2IDljNzllZTQ5YTJkOTUyYjhlYWZmOTgzNmYwMmNmOWVmMWU3MDg2MTUgcHkzaworNjQyMTcgMzE5ODhiNDAxNTM1Nzk1NDZhNWUyMTNlNzc3ZDk1OGJkMDkzMDA2NyBweTNrCis2NDIxOCAxMzA3MWFkZDhmNDhhZTU4Y2E0NWJiZjM4Yjc3MGQzNzZmYmFjMTcwIHB5M2sKKzY0MjE5IGUzMGFmMzI2NGEwZjU3M2FjMTAyODljNzhlYzkwMmUyNmUxNWYyMWYgbGVnYWN5LXRydW5rCis2NDIyMCA1ZWJjZGViMGNiMjZjNjdhODUxZDg0MzEzNWZkYTE2YTU2NjJiZDM4IGxlZ2FjeS10cnVuaworNjQyMjEgMTQ2NDM0NWExOTY4M2I3NGI1YWZkZmFhMDEwZTExYTYwOWYyYWFhMyBsZWdhY3ktdHJ1bmsKKzY0MjIyIDhmNjFhZTAxMTMwZjg4OTM5ZGE1M2M0MDI2NmUyNzFlNmUwM2Y2Y2EgcHkzaworNjQyMjMgZDVhYTI1YmY5MzYwM2ViNGUxYTgyODJmYTU1ODU2OWY2Nzc5MTFmMiBsZWdhY3ktdHJ1bmsKKzY0MjI0IDM4ZDA0NjdmNWVjNzY5ZDRkNGNjYzg1ODlmNzM3ZWJmNDQ5YzU0MWMgbGVnYWN5LXRydW5rCis2NDIyNSA3YThlZTA1YzY5N2Y1MGYxMjJkYzEwYjExNDRmNWIyOTNkZTcyN2Q1IHB5M2sKKzY0MjI2IGEzNWRhOTRlMDVmYzVhNThlZWE3ZTZjMjg4NTA1MzEzNDRhYmFlZWUgbGVnYWN5LXRydW5rCis2NDIyNyA4YzYwNjhmMTRlZThjZWYxMDEzZTBlMGNiYzE0ZDViZmIxOGUwMjAzIHB5M2sKKzY0MjI4IGI1ZTAyNzc1ZmZmY2IzZmM0Yjk5ZjUxODE4MDhmOGM3YjEzNGNhMjYgcHkzaworNjQyMjkgNjQzNGRkNzA0ZDYwZWE2MDgwMDM4M2FlYjY0MGI0ZTEyZmU4ODBkNyBsZWdhY3ktdHJ1bmsKKzY0MjMwIDJkZmFhMDY4M2JlOGI2NjNkMDYwMzg0OTcyYjAyZDAzZGMxNmYzODcgbGVnYWN5LXRydW5rCis2NDIzMSA0ZGE4YjdhOGNmMmU5NGJiZGM1NjVlOTAyNThmZmMwMWM5ZjJkZWQyIHB5M2sKKzY0MjMyIGExMDY4OGFkY2RkNjI1MzZmYmQ5NWVjM2FjZTlkOTFkODgzNTYwYjggdGxlZS1hc3Qtb3B0aW1pemUKKzY0MjMzIDE2OGM5ZTk2NzcyYzU3OTcyYmZhNzliZmI4OGNkNDZlMmFhYWNlMTEgbGVnYWN5LXRydW5rCis2NDIzNCA3ZmQ5ZTljYmQ3MjE1M2FkOGQ1ZWRmNTg1OWJlYjI0OTg0YzdhMmQzIHB5M2sKKzY0MjM1IGEzMzNjODc3MGUzMjEzMjczOWRkYjUwNGZjNjI1NmM4ZjdmNWM0MDkgbGVnYWN5LXRydW5rCis2NDIzOSBmYWE3Y2E1MjQyNzE4ODQyMmVkMTE3YWQ3MzY4NzFjYmMyZDBhNzc1IGxlZ2FjeS10cnVuaworNjQyNDAgY2RiZjEyOTEyZDRiODJhNDQ4ZTdmODY3ZjczNjJiYTcwMTM4MjE2ZCBweTNrCis2NDI0MyBmNTI1NDlmYjc0YTI2NTE5MTFhNmQ4OWIxMjE5MWRmZWJhOGU4MmE1IGxlZ2FjeS10cnVuaworNjQyNDQgYjkwNWNiMjc5M2NjOWFhZjNhZDVkYjQ1MzQzMzI2NGZkODQ3YjcyZSBsZWdhY3ktdHJ1bmsKKzY0MjQ1IGJiODE3YTVkNjhiN2MzMDgzZDIwZjc0OTY0YTcwYWJmNjg5ZDViYzkgcHkzaworNjQyNDYgYTQ1MGRhMjQwMDg5NmQyNDMzZjAzZWZjY2M1ODg0ZDJiNzc3MzAzNiBsZWdhY3ktdHJ1bmsKKzY0MjQ3IDg3MTQ3ZGI4MmViMWUzMzIyNjNmM2E5NGVjZjVjY2Y0OTI0MTY1N2QgcHkzaworNjQyNDggYWY4ODczZGYwMzIyNWVjMTBmY2RhNjRmOWQ4OGVjZWMxYTI2MWQzMCBsZWdhY3ktdHJ1bmsKKzY0MjQ5IDliOGZmNzNkMDE4ODU5Mzc2YzkwZjY1MmI2ZmQwYmZiYzY2N2RiMGQgcHkzaworNjQyNTAgZDAxMTY1ZmFlOThlOTAwNGUzZjgzNTliOTNhNjY3ZDE0OGFjN2UwYSBsZWdhY3ktdHJ1bmsKKzY0MjUxIDQ2ZTU4NDYxNTBkNWU5NWY4YTJhMTIwNGJmZWRlOThkNDJiYjFmYmYgcHkzaworNjQyNTIgNmQxZGM3NjFhYjRlMDg4OTg5ZDc1NDRiNGUxZDJiNzliZGYwNGRlOSBweTNrCis2NDI1MyAxMDY5NTc4Mzc5YTAxMmNkMWM5ZjhjMjRhNTM5ZjIwYzk0N2UzYzgwIGxlZ2FjeS10cnVuaworNjQyNTQgNDQ2ZDVjMjk5MDhhYTk4NTJlODM0YjNmOWYyOTRhNjYxZWU4YmZlZSBsZWdhY3ktdHJ1bmsKKzY0MjU1IDJmMTZjZWEyMjRmNWNjNDg1MjQxOTIyM2NkZjBkYjY3NGNjZGUxYjQgcHkzaworNjQyNTYgZGZmNzYyYWRmOWQ2MTEyMmE0ZWI2NjVjMGEzYWVkNGE2MWViMTRkMiBweTNrCis2NDI1NyBmMzZmMDkyZGJlOTc4NDZjMjI2ZTEwOTgzNmUyN2M1YmMzZWMxYzVlIGxlZ2FjeS10cnVuaworNjQyNTggYWJhNThmMjhlMTY2YjNmN2FlNzY5NWI4NTVlZTNlZjQyODc3NGIxOSBweTNrCis2NDI1OSBmMmUyZDViOTY0ZGUzOGMxZDRhMjk5MTA4NTdlYzhmMjY1ZDBjNzNlIHB5M2sKKzY0MjYwIDM3Y2Y1YTFlNjM5ZTkwZWZjY2RkYzNmN2IxZDZhY2FlMjk1YzU0MGIgbGVnYWN5LXRydW5rCis2NDI2MSA1N2FhODczZDk2ZmNhOGI5MjA0MDc0ZmM4ZjQ0MzUxYzJhM2EyYmVjIHB5M2sKKzY0MjYyIDA5NWI4NWQ3YTAxNDFlM2Y3ZWZhZDkxNTZkYmZmMjk2YmQxODgzNDQgbGVnYWN5LXRydW5rCis2NDI2MyBlOGRmOWU0ODczYjQ3ODAxM2ZlMjk5N2Q1ODU5ZWNkNWRmZDYyZGUzIHB5M2sKKzY0MjY0IDEwYThjZThkYjZiZmI0ZjdjNjExMDJjMzFjNWYwMmM3Y2MyOGY1NWYgcHkzaworNjQyNjUgNmYwZmUwNjZhODRiYjUwNGU0ZGI0NzFlYmY1ZGQ1ZDlmYzVlZWEyYSBsZWdhY3ktdHJ1bmsKKzY0MjY2IDYxZTUyODZkOTM3YzhhY2VkNjkxYWExZTM2ZjIzMzYwNjQwZTk4M2EgcHkzaworNjQyNjcgYWEyNTAzMTg4YmYzNGQ4OTI4ZDcxMTU5NWFmNDQxYmQ3NjVhZjk5YyBsZWdhY3ktdHJ1bmsKKzY0MjY4IGM4ZjhhNTc4YzAxYjk4YWRkY2EyMGRjNmYxNmRkMzk1MTFiN2QyNmMgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MjY5IGU5YzkzNWNkNzg4OGFlYmY5MGUwNTc5ZTI0NzgxMjA2ZmI2MmMwMmMgbGVnYWN5LXRydW5rCis2NDI3MCAxODk4NjdhYWJhZmEzNzc4ODNmZmI1ODUwM2Y3OGIyMzU5YmYyZDQxIGxlZ2FjeS10cnVuaworNjQyNzEgYjViZjE2NzkwZTNjNjlkMWY1NWQ0YWRkYTk4ZDQ5MWYxMmMwMTM3MyBsZWdhY3ktdHJ1bmsKKzY0MjcyIDUxNmMxOWQ4NTkxYTliNDYwMzVkODUyNTVhMTMyYzBiM2Y5NDEwMjMgbGVnYWN5LXRydW5rCis2NDI3MyA5NmJmZjdlMTM3ZmJkMTIzMGQzZDU4NDQ2ZjI4MjZkNzc1ODU4N2MwIHB5M2sKKzY0Mjc0IDRiMWUwMTUwNWQ0ZDM3ZTk5ZjE3ZWEyZWM0NDEwYzBlNjcxZjhiNDIgcHkzaworNjQyNzggOWFkNjkxMjdlNmFhNjU0YTM2Zjc3YmY0OGJhNmEwNTRhZjg4NTRhNiBsZWdhY3ktdHJ1bmsKKzY0MjgwIDkxNTVmZjc4ZmQwNjRkNjgwZjczMDhmM2RmYWE3OTExOGNlYTYzMDUgbGVnYWN5LXRydW5rCis2NDI4MSA3YmE3OTAxZGFkN2Y4YzZiNWEwYTJjYzRmNDA2OTNjMDZhY2YyNmI1IHB5M2sKKzY0MjgzIDI1ZmEzZGQwMjFmNTJhYmUxYTI2OTk2MGM2OWVkNGUzNmI4YzFmNGYgcHkzaworNjQyODQgYjMzZTgzMzRmODJmNzllMzM3N2EwNzg3NTVhNjdlOTRlMjQ3MzliZSBweTNrCis2NDI4NSA1Y2I1MGU3YTk4YTI4NThhOTEzNzQyODAxMjE5OGQ1MThkOWU4MGI1IHRsZWUtYXN0LW9wdGltaXplCis2NDI4NiA5OTFjYWFkODFhMmRhNmY1NWZjMDE2ODBlNThlODc3MTJlNTQ3YmRiIGxlZ2FjeS10cnVuaworNjQyODcgNGUzMDRhZGVkN2E4NTBiNGJmNjcxZmY4NmNjMDc1NjZkMGFjODgwNCBweTNrCis2NDI4OCA2MTNkYWY3ZjhlNDg2YjQ3MTE2NDExMmE4YmU3YmIwNjU3YmY2NTVmIHRsZWUtYXN0LW9wdGltaXplCis2NDI5MSAxNDM1MGU3NWQwMmE0YmUyZGIyZWQxZmU3Y2Y0ODEwYTQ1M2FhMmNlIHRsZWUtYXN0LW9wdGltaXplCis2NDI5MiAzODZhNzI5ODRhZjVkY2YzNWQwYjA0MjMwYjliYzliMWUwZjM2NDM0IHRsZWUtYXN0LW9wdGltaXplCis2NDI5MyBmNzdmOGU3OTk3MTQ5NGZiZmZhZGFmNGQ3N2NhMDg2NWVjZDQ1YzU1IHRsZWUtYXN0LW9wdGltaXplCis2NDI5NCAyNmU5Yzg3MWQyM2ZhMTI4MGQxMzNlYTk5M2U2YTNmMDkyM2YyNTliIHRsZWUtYXN0LW9wdGltaXplCis2NDI5NiA0MGQ2MDFkZTI4ZGMwODE3NjY3NWQxMjM2NmY2MWE0YWZlNmIxNzk0IHRsZWUtYXN0LW9wdGltaXplCis2NDMwMCA2ZjZmZWQ0ZjA2MjZiNDc3YWVkYmJmODRkODBjM2RjYzc3M2ZmZTg0IHJlbGVhc2UyNS1tYWludAorNjQzMDEgYTZkN2JmY2Q3NDU2OTFlMGE0ZGRjMDFiMjJhOWQwOTYzYjUyODBmZSBsZWdhY3ktdHJ1bmsKKzY0MzAyIGVlMjgyM2UxZjIzYjY1ZjhiZDQwZmU3OGJmYzA4MGRkYjljMjEwYjggcHkzaworNjQzMDMgNDY1MGVlZmI1ODM4ZTljOTYwNGI4MWJmNjA2Nzk3YjEzYmZlMWM3NyBsZWdhY3ktdHJ1bmsKKzY0MzA0IDM4NDMyODYwYjNiNDY4Yzg2NzZlZjE0ZDM1ODQwMzU5ZDBhNjkxZmQgcmVsZWFzZTI1LW1haW50Cis2NDMwOSBiOGU5Y2MyODAyMmM1NGY0NzEwMDI4NGViYTQwNjIwZTFlNjZiMDM3IGxlZ2FjeS10cnVuaworNjQzMTAgNGVkMTY1OTQwYmRkMDE5MjUxZGIzYTg4YzQ3MjUyNjAwMTcxMWU2NyByZWxlYXNlMjUtbWFpbnQKKzY0MzExIDVjODVkNTVjNGZiMmJkYTQ5NWVjM2Q3MDRjODUyMTExOGJlZjg1M2QgcHkzaworNjQzMTIgNTY2YzcxMzdhYThkYWVjNTRiOGJlZTFmYjI4Mzk1NTA5N2Q5ZmQ3ZiBweTNrCis2NDMxMyAyZTEzZmZhYjE5OWZmYmMyYzg5NjhiZjU0OTIwYTc2ZGMzNzc0YWRkIGxlZ2FjeS10cnVuaworNjQzMTQgNjA5YjA5YTlmZWViNDFmN2YyMzM1MmZmZTk4ZGU4MWQ0MjhhZWFhNiBweTNrCis2NDMxNiA4NDU5MGE2NGYzYTIyNjQzMzY4NDBiZTkwZDI5ZmJkZDc4NDhmODViIHB5M2sKKzY0MzE3IGY4YTg4OTRkYTc3YTRiNzI3NjViOGZlYzk4YzE3NTNjOGQ5NGY5MzQgbGVnYWN5LXRydW5rCis2NDMxOCBhMjliZjY5ZmIzNDQ2NDdjNmZmMDE3MzZmNTc5ZjgyYjJmMDJhNDI3IHB5M2sKKzY0MzE5IDMwMmE2ZDc2MzM3ODQwNjVlMjMxZWU4ZGEzMDBmZjcwNjE4MmE5NWMgcHkzaworNjQzMjAgYzA3NDE4ZGUzY2QzMzI4ZWM5NTM1NjZmY2IxMTA4ZDc1OTViNTg2YSBsZWdhY3ktdHJ1bmsKKzY0MzI2IGI4YzlhMzU0MzM4MTNiMjgzNTg5ZjVhZTY5NjgwY2MwY2M0MDllNWUgbGVnYWN5LXRydW5rCis2NDMyOCA5OGQwMTJhOGU0NDVmMDhiYzIwZDE4YmRkODg1M2Y0YjNkY2U3YjU1IGxlZ2FjeS10cnVuaworNjQzMzggOGU4NWM0NmNmNjczYzI2N2VhZmYyZDMxMDkwOTQ1YTVlZjI3NmY5NSBsZWdhY3ktdHJ1bmsKKzY0MzM5IDI4YWJjMjAyYzc3MTA1OTcxMmU5NzlkMjI5YmQ4ODZkOWRhNTM3N2MgbGVnYWN5LXRydW5rCis2NDM0MCAwYjFjMDFlZWM3ODg1MjlmZGYyNjAzNGU2ODk2NDgwNzAxZDAwNDNhIHB5M2sKKzY0MzQxIDAzNjM5YjA5YzM3NjAzMjhhYTZmMTFjNDkwMTRkOTE5ZGU4ODJjZjMgcHkzaworNjQzNDIgNDBhNzU5MTNmMDRhNjRiNGZmODFkMDRhMjZiNmY3ZjNkNTdkMWEzOSBsZWdhY3ktdHJ1bmsKKzY0MzQzIGY2NDk5Njc2MDk4NDcyODM5N2U3NmIzODVhYmE2ZjQxOGUxNGJjYTEgcHkzaworNjQzNDQgNmYyN2Q1MmU4ZDk1NmUzMjM3OTU2ODZhZmExODlmYjE4YjE5OGRkMiBweTNrCis2NDM0NSA2OGQ4N2JjMDZmYTM3MGQyNWMwMGU5OGU1MDBlZDVlOTJiYmMyNTE5IHB5M2stdXJsbGliCis2NDM0NiA4NzAwMTE4OTk5NWMxYWUwOGFkNjNhNjE1MDkxM2JmNDIzOWJhNGY4IHB5M2stdXJsbGliCis2NDM0OCBmNjcyNmYzMmVmNzA0NzdiZjNhMzhkY2M4NjE3YmNhNDU0MTlmNWI3IHB5M2sKKzY0MzQ5IGNhMDc0MjMyYjg3OTc2N2EyODFjNzZkOGEyMWYzYzE0ZjA3NTMwNTAgbGVnYWN5LXRydW5rCis2NDM1MSBlMzljODEwYTdlYjI3NzkxODAwNTdjYWZhOWRkOTg2ODk5MmU4Y2IwIHB5M2sKKzY0MzUyIGVmODgzZmI0YzA3NmRkNmY4NzViYzU5YzhhNGVjMmVhNzEzNGU4M2IgcHkzaworNjQzNTMgNzBkNzJhNzVjY2YxZTZmMDZkNDIwMWQ3M2QzOWY4N2NmNWY0YTc5OSBweTNrCis2NDM1NCA1Zjk0MzUzMTdkZTE3MDU1MjkyOTliNGRiMzE4OTZlODk3YzdkNzA1IHB5M2sKKzY0MzU1IGEwNTIzYzdjMWM0Zjc4NDVlYjY1NjNlNWVjNTQ3OWRkODU2MGRlZTAgcHkzaworNjQzNTYgYTE3NDE2MTdmMDZmNGQ1NGNmMWYwYzM0NmE1ZjIzYzBkYzNiYzg4YSBsZWdhY3ktdHJ1bmsKKzY0MzU3IGRmNWJiMGE2NTk0YmI3YjExNzk5NmZmMzQ1ODRmNzUwYzc4ZTE2NmQgcHkzaworNjQzNTggYTRiOGRiZTFiNjMzNmYxYmNiYTc1MDczYzMxNGVjNTYxMjcxOTM0OCBsZWdhY3ktdHJ1bmsKKzY0MzU5IDE4N2E4MWRkYWYyYmRmOGNlYTI1ZDlhMTZlMTY2NDVjYjZiNTk5ZDAgcHkzaworNjQzNjAgMDNhOWE5ZDMwODFlZGFiNjgxZjUxODcyNjk3YTUwNTI0NmUzNmUwMyBsZWdhY3ktdHJ1bmsKKzY0MzYxIGE0MDhhMDVkMGUyNTFiOGI2MDk2NjdkNmM5OTc1OTIyZTdkNzg0MWUgbGVnYWN5LXRydW5rCis2NDM2MiBkNTJhNzNkOGQyMGYwMzJiOTNkNzU4NmY4ZTBiZDBkMDIyZWM3OTVkIHB5M2sKKzY0MzYzIDY2YzhmNzZjYWM0NDZkMWE0M2Y3YzRkMTc4MDkzMTEzMWQ0ZjI0NjMgcHkzay11cmxsaWIKKzY0MzY0IGFjODU0Y2RlMzEzNWU1N2VjMWY0ZmM5NWFlNWQ3NDQ5NTBmM2M1MzEgcHkzaworNjQzNjUgNTY0YzI5YTBmYWIxYTA0ZmE5NDJkMjNhY2M5NGU0YjJiZmRmZWQ4NSBsZWdhY3ktdHJ1bmsKKzY0MzY2IDBiMTQ5ZmM0MDE4Njg2ZmEyNTc0ZjJhYmRlYTQ1YjBkY2VjNjQ4OTQgcHkzay11cmxsaWIKKzY0MzY3IDI4ZjU2N2E0MTNmNDE0YmNjMGUyNGQwZjhlNThiYmNmNzQxZjBlZTMgcHkzay11cmxsaWIKKzY0MzcwIGFiMTJlM2FkMmU2NjVmMmUyYzVhYWU5YmIzMTYzZGY2NTQ2NGQxZGMgbGVnYWN5LXRydW5rCis2NDM3MSBiNGQ4MjM0ODM0MjFlYjQwNGE3MDY1YzkyODA5MDU0MWZmMGQ0NDQ3IGxlZ2FjeS10cnVuaworNjQzNzIgYTY1MDNhZTNlMTljMWZmY2Y3MWU5ZDViOTI4MzI3NWJmYTE5YzBiMCBweTNrCis2NDM3NSA2YjdkZGMwZmRhOTM3ODI5NWY3N2Y3YmUwODNjZGRkNjIxYjU5MDJjIGxlZ2FjeS10cnVuaworNjQzNzYgNTcwMmVkZTQyMjdhNDFiZmVjYzMyNTFiZTU2YmZkYmU2N2E0YzUxMyBweTNrCis2NDM3NyA5NTQwNTk3OTEwYjk2OTVjMWZjNjlkZmYzNzkwZGQ1MGM0MDU2ODRhIHB5M2stdXJsbGliCis2NDM3OCA0ZGE3NzE1ODhiYTMxMDA2ODhkNWVhNjE2ODE3OTRjMjQyZDQ4MmMxIGxlZ2FjeS10cnVuaworNjQzNzkgMTU4OGUyZmEzZTdlNzRiMmJhMmYxMjM0YmMwYjk3YzE0MDM4ZGUxNiBweTNrCis2NDM4NCA2YWZkZDZmZTU1MTJkZjRkYTE1MDRjMTNiMDMyNmIxNDNiYjBjMzc5IHB5M2stdXJsbGliCis2NDM4NSA1YTQxNmE2NDE3ZDM4OWNjYmUyNDY4Nzg1NWJmOTdiZWVjYjNkMDQxIHB5M2sKKzY0Mzg2IDc0NGY5YzgwOWYzMDNmNDA3MTViYmYyZGFkYjZhZTY4NTkzNGZhZGIgbGVnYWN5LXRydW5rCis2NDM4NyAwMzIyODA4YzIwZmVlNjg1NjMwN2QwM2YxYzI4YzVjOGUxYjMwYmY1IGxlZ2FjeS10cnVuaworNjQzODkgNjkwNDAwOTJiOGY4MzE3NmM5OTNlOTMyODFkOWQwZTdlNzAyMTkxOCBweTNrCis2NDM5MCAyYzEwNjgzMjhiNWJhNDc2YjE3Mjg5MTM5OTg2ZmYyNjllOGZhNjc0IHB5M2sKKzY0MzkxIDA3Zjk0NzI2MDE3ODNlMTJjMjhjODc4YWY4YzQzMDg0YTZkZTczNzcgcHkzaworNjQzOTIgZWExOTRjOWE2YzJmOWRlNDQzYTE1YmYyNjkyMjI5NGRhZTM5MDBjNyBsZWdhY3ktdHJ1bmsKKzY0MzkzIDJkZGQ4NmUzNzAwYzIwZWRjYWRiMjg1MjZiMzdlZWNiZWRlOTMzZTEgcHkzaworNjQzOTQgNWJkNDNlYjllNTIwYzI3NjI3OWMzZjc2YTgxMjg4YTkxZTVhNTlkMCBweTNrCis2NDM5NSBhMzM1YzRkNjQzYjFjZmUxNDE5N2E5ZWYxOTVjOWIyODA0ZjYwOGZjIHB5M2sKKzY0Mzk2IGIxZWQyYjAwNWUzZGJlYWRkZjU0NjRjNTA1NTIxYzNmYTU5NDBjMzIgcHkzaworNjQzOTcgMDczMDIyNGVjZjVmZWUxYjA3Y2E4M2RkOGFiMDI2N2ExOTI1NTA5ZCBweTNrCis2NDM5OCAyZjJmMzJhZjhjNGVlOGY2NTk4ZjYzMmRjODM3MDFhMjA3MjZkMTBhIGxlZ2FjeS10cnVuaworNjQzOTkgMjU4MWVlMWYyNmY5ZTRiOGRkMzY3MjlhZGJhYzcxZmIxYmEwNmZiNCBsZWdhY3ktdHJ1bmsKKzY0NDAwIGVjZmYxYTFhMDdiNTU1Zjg1ZTg2MTg3NmY2NmYyYjVkNTRlOTMzZTEgbGVnYWN5LXRydW5rCis2NDQwNSBiMzRiYzYzOGI4YTdjNzhiMTkwZTNkOWY4NmE1NjkzODA3MjMxMGNjIHB5M2sKKzY0NDA2IGJlMDdmMzc5ZDg3YWRmMGRkNjRlNjhjNmU2OWY3ZDA3YzVjOTZkZmUgbGVnYWN5LXRydW5rCis2NDQwNyBhNGJlNGIxNzQ3NzExZGUxNGUxYjljYTU0N2ViZGIzY2Q2YmUxODRmIGxlZ2FjeS10cnVuaworNjQ0MDggZTEwNzA2MmFhOWNkNzc4Njg3ZjdhYTM5NWM4MWY1YjMyYWU1ODljMyBsZWdhY3ktdHJ1bmsKKzY0NDA5IDlhZjBkNjViYzNiMjc4NDYwNjAzM2UwZmY3NWVlMmI1NjM2NGNhZTIgbGVnYWN5LXRydW5rCis2NDQxMSAyN2M3OGNiZmE3YzY4MWI4YTM3YjIyMzEwZDUyMThjZWQ5ZTM1N2JkIHB5M2sKKzY0NDEyIDBhZWViMmI0ODM0MWM3NzI4NGRkMGUyYzU4ZTUxZTQxYTFiOTc4MzMgbGVnYWN5LXRydW5rCis2NDQxMyBkYjYyYzQ0OGEzNDllMmYxNWM0YzJjY2VlODk2OTFhZjI2Nzg1OWRhIGxlZ2FjeS10cnVuaworNjQ0MTQgY2I4NzFmNzM2YmUwMjRhNzVmNGFlNzkzNWI4YTQ4ZTY0YzZjOTJlOSBweTNrCis2NDQxNSAyYmY0MTEyY2Q2ODE1YzcwM2UzNjU1MjVlOWE4YWI0Mzg5N2M4OTYyIHB5M2sKKzY0NDE2IGI0MThkZDM5Zjc5OGJlZjg0NzFmYzE5YzhjZDAwZGMyNzE1ZmRlM2UgbGVnYWN5LXRydW5rCis2NDQxNyA1OGY0M2FjZTI5NWU1YzM5ODE5N2EzMmQzZjBkMWM3ODlkMTJjOWJjIGxlZ2FjeS10cnVuaworNjQ0MTggNmI0YjI5MmMzYTJkYThkYWJkNzYyMTFjN2E5ZDYxNDFlMWQwNzRmZSBweTNrCis2NDQxOSAyNWQ2YjJkMGVlNDJlZThhN2Y1YTg1YjNjMDNjNTk5MzExMjQ1ZDZmIHRsZWUtYXN0LW9wdGltaXplCis2NDQyMCAwN2RjZjBlYTc4ODBmNDBmOTExOTczNzRmZDk1MmQyNTZiZDc1NDgxIGxlZ2FjeS10cnVuaworNjQ0MjEgYzM5MjYzZTk0YzMzMDc0ZDRiNmZlNWFjNGRlZjRlMDRiNjFkZjEwYyBsZWdhY3ktdHJ1bmsKKzY0NDIyIDdiOTZmYWU0MDBkNjE4OWU5ZTA2NTI1MDY1ZmExYjc1ODllZWY1ZWUgbGVnYWN5LXRydW5rCis2NDQyMyAxYmZkNWU3MTJiOTRjYTE1ZWRiOTQzNjdjMDJhNDM4ZmNkODA4NjBjIHB5M2sKKzY0NDI0IGVkYzcwMWQwMGI2MjI0MTIwMmQ1MjVkZTcxNTg5OTU2NjYyMjFjNzEgbGVnYWN5LXRydW5rCis2NDQyNSA3MTdlOGFlZTRhOWQwN2Q3Y2RhOWY1ODNmM2E3Mzg4Y2VjZjlkY2QyIGxlZ2FjeS10cnVuaworNjQ0MjYgZDFhNDYzNTBiMDQ3NmM0ZmNjMzM5YzA0MzIwNGQyOTg3MzBmNjI0ZSBsZWdhY3ktdHJ1bmsKKzY0NDI3IGJmZGEzOThjOTE3ZTVkYTI1MGE5YzYwOWNjNjg4ZjJkYzg5NmFmYjkgbGVnYWN5LXRydW5rCis2NDQyOCBhNzE4NmZlZTc1OTZiNjYzZjUzNDVjNGE0YjA5NjU2ZTFlNjk3YzRkIGxlZ2FjeS10cnVuaworNjQ0MjkgNjI5ZWVkY2JiMjY1ODUzNTI4NDc5YjQ5MDgyOWMxZmEwOWNjOThjZiBsZWdhY3ktdHJ1bmsKKzY0NDMxIGQ4ZGM2YjM3ZmQ3ODllZjRmOWY4OTU0ODE5Y2JlNzVhZDY1ZjYzYWMgbGVnYWN5LXRydW5rCis2NDQzMiA1ZWJlZmY4MDQyNWM1NDk5YjRjMzJhY2IyOTJlNjVmY2VmOTc1OTZjIHB5M2sKKzY0NDMzIDRlMWNhZGI3ODcxZWVjZTE0MzhhN2U2NmFjMDkxYWMyNzZjNmUxNjQgcHkzaworNjQ0MzQgYTEwN2JjMmQ4ZjM0MjdkOTk3NmI2OTRiMGM1NWI3MDY4M2MyNTFmMyBsZWdhY3ktdHJ1bmsKKzY0NDM1IGIzMjEwMWMxOWJmODQ4NTYzMjBjZGQzODAxMGYzNmI3MzEyZWZiYWUgbGVnYWN5LXRydW5rCis2NDQzNiA0ZmZhOWJiYTdjNWYwMGI4Y2FiN2Q0OGQxYmU5YTI1Y2E5MGRiODRiIGxlZ2FjeS10cnVuaworNjQ0MzcgMjQ1MjBlODI0MTA3MmU3NDAxNzkxYTVkNjU5ZmIyMjZjMDAwNDhkMCBsZWdhY3ktdHJ1bmsKKzY0NDM4IDQyNjdhZGFjZGQ1Mjc4YWQ5N2FjNTg1ZmY2MTRkMWU2MzA5MmY4NzMgbGVnYWN5LXRydW5rCis2NDQzOSBhMDY3ZGMwNDM4ZDUzMmM1NTIzNmYzNGE5MGVjZmU1ZDU2ZmEwMDQ3IGxlZ2FjeS10cnVuaworNjQ0NDAgNzViNmIyNzM3ZWE3MTkzNjhiN2Y2YThhNjhjZWZiM2E3MmNjZjhiNyBsZWdhY3ktdHJ1bmsKKzY0NDQxIGFjNmVhYjI0NzNjNWI2ZjFlMzAyMmY0NDJjM2FjYzc0NjY1OTkzOTMgbGVnYWN5LXRydW5rCis2NDQ0MiAxNmI3YzUwMGI3NTNhM2M5NmU2MDQ4ZDMzNjNlODk0MDBiNDg2ZDI1IGxlZ2FjeS10cnVuaworNjQ0NDMgOWM2N2QzZGNlOTI1ZDk0ZmY1OTU3YzMzNjBmMDU3OTcwNjk1MGNkNCBsZWdhY3ktdHJ1bmsKKzY0NDQ0IGFlYWQwYzc4MWNiZWY2MTI2YTExZjk1MGVkMTIyOTE5YzBkNmZmM2MgcHkzaworNjQ0NDUgNTU2ZTRmNmVjOWEwOGNhY2VhYjc4ZDQ2NWVhZTE1MzY2NmE2N2NjNSBsZWdhY3ktdHJ1bmsKKzY0NDQ2IDAxNjE2NmI3Yjk3NmUzM2YwYmM2NDBhOGE0NzJkYzMxZmQ0YTY3ZDggbGVnYWN5LXRydW5rCis2NDQ0NyA1ZThhN2Y5ZDk1MjM5MzIxZjgyZTk3MmJjMTZiNjZhNTQ4MjhlODUzIGxlZ2FjeS10cnVuaworNjQ0NDggOTY4MTUyNzE5NjNkNWNhYjJhYzNjMGNiNjc1MDlkYzExNTFmNjE1MiBsZWdhY3ktdHJ1bmsKKzY0NDQ5IGUxN2I4MWE5NWFlZDJlOGE5ODU4MjM1MGYxMzQxNWExMmZhNDhmMmIgcHkzaworNjQ0NTAgNzBlMWEzOGM5ODA1YjZhNmMxN2E0OTJmY2NjZTRlMmY3MmVjZjk0NCBsZWdhY3ktdHJ1bmsKKzY0NDUxIGM1N2QxZTk1NGQ5MzQ1N2MzMTM2ZGFiZjVmMTZkNGMyNGY1YjM4MDggcHkzaworNjQ0NTIgOTZhZGY5NmQ4NjFhNDRkMWIyOWU5MTlhZjgwZmYwNDE5NWEzNzNjNCBsZWdhY3ktdHJ1bmsKKzY0NDUzIDdjZGJlMDFhNDU3NjRiMmUzODQzYjUxODg4M2YyNjIwMGUwNDZiN2EgbGVnYWN5LXRydW5rCis2NDQ1NCBhYzE1OGNhNjg2Y2I1MTlhMzgwMTIyYjkyOWE0Y2FmYTNlMzlhYWU2IHRsZWUtYXN0LW9wdGltaXplCis2NDQ1NSA4YjZjMjg1NmRiZTUxMDM3YzJmZDZlYTM1YzA0M2NhYjhmMTJjNTE1IGxlZ2FjeS10cnVuaworNjQ0NTYgZWI5ZmFlMmZhM2Y5NjY0MmViYmY1YWM3MWNhNWQ3MjZiOTE4YjNiYSBsZWdhY3ktdHJ1bmsKKzY0NDYxIDY1YzIzNjYzZDBiZDY5ODEzMmVjNzlmMDBiNTE0ZjIzNDUxMWU4ODggbGVnYWN5LXRydW5rCis2NDQ2MiBkYTY4OTNlMjAwNGY0Y2E3MDkxZDk5YzQzY2NkNzRkZDY4NTRjZDU4IGxlZ2FjeS10cnVuaworNjQ0NjMgNjhjZjNjYmIyMWQyNThkOGUwMjIxNmQ0Y2NlM2M3YjhkNjlkOGUwZCByZWxlYXNlMjUtbWFpbnQKKzY0NDY0IDdiNTFlYThjYzU1OGRiYjM0YjRjNDAyNzFhZmYyZjAyZTE1ZGI5OWQgbGVnYWN5LXRydW5rCis2NDQ2NiBiMTFiMDljMWVmZWYyYmViMjM1NzgzZjNkNjdjNDUxZTQwZWE2ZDYzIGxlZ2FjeS10cnVuaworNjQ0NjggODhiZDhlYWE1MTUyZWRjNTc5NzI0YzllNTM5MDYzNWZjNWMzMDZhMCBsZWdhY3ktdHJ1bmsKKzY0NDcxIGE5YWQ5OWQwYzcyMjRiZTE4YWRlMjM3ZWE4NGNiMzQ3MzQ1YjljY2EgbGVnYWN5LXRydW5rCis2NDQ3MiBlMGYxZTFjNTY2ZDlkNjc1NDMyYTE2ZjU1MTgzY2MzYzEyMTE0YTdlIHB5M2stdXJsbGliCis2NDQ3MyBmODQ2OTFmNDg5YzM4YzYwODM3YWQwNWYxMDBhODY5OGI0YzQ0YmQ2IHB5M2stdXJsbGliCis2NDQ3NCBkZDkwN2Q2YTdhODVkMTYzYzdlMTIxYzVjZTNkMGZmM2M3ZjNkY2QyIHB5M2stdXJsbGliCis2NDQ3NSBmMDAyN2JmZGY5YmM0NDUyNTZmNDc5NGU3YWNmMjkwOWU3NzUzNWRhIGxlZ2FjeS10cnVuaworNjQ0NzYgMWY2NzFjODVkZjA0N2M1Yjc1MDI2YzM0NjQ3MjIwMTU5MmQ4ZDJmNiBweTNrCis2NDQ3NyAxZGJkN2E1MjJhMjM2OWYzYjUyOTA1NjllNjY2MThhOGI0OGQxZDUxIHB5M2sKKzY0NDc4IDZjMDRkMTQ5OTRkMDg4MDEzYzRiODE2YmM4ZmVjNTQ3ZGE1YTYxYmUgcHkzaworNjQ0NzkgOTY3Njg4NDc5ODgzMGQ4MDE2NzRhZWU1YzljNmI3NGM1NjNlZTVjMSBweTNrCis2NDQ4OSA2ZTA2ZDRhODZlM2QwMzI4ZDhkMjA4NDAwMzg2NWJhNjJhYmJmYjdkIGxlZ2FjeS10cnVuaworNjQ0OTAgYjAxNTY5MzExNGY2Nzk3YWM0YjBmMWIxZTJlMWYzMWM2MzNjOGE5NiBsZWdhY3ktdHJ1bmsKKzY0NDkxIDc1MmUxYWJhZjE1YTU2YjViM2ZhZTg0MWQ3MGE5NTJiZGNiNTBkOWYgbGVnYWN5LXRydW5rCis2NDQ5MiAwOTgxNzNlODQ0ZDE1Mjg1M2M1Mjk2MjdhZjhmYTczNmFkM2ViN2ViIHB5M2sKKzY0NDk1IDVkNWY3Mjg1ZjVjNTliNGY1MTU2NjYyNGJlOTU3OGFjYTY3MWIwZWUgbGVnYWN5LXRydW5rCis2NDQ5NiBjODNlZWYwNzhmZDlmMGVjYTg4ZWU1ODczZTkwNjVjMTQ1OWUxNjY2IGxlZ2FjeS10cnVuaworNjQ0OTcgYjFiZGNiYzk3YTE0YzA5NGFiMDRlODJiMjE2OWYwODZjMjZmMWY3ZSBweTNrCis2NDQ5OCA2OGZkM2FiODQ4NGVlYjdkMGI1ZjM2MzM3Mjc4ZmY2Y2ZlYjRhOGI1IGxlZ2FjeS10cnVuaworNjQ0OTkgMTJiZTQ0YzZhNzAyZThiM2I3Y2FhYzlmNzdmMGM0MTFkOGU4MDQ5MSBsZWdhY3ktdHJ1bmsKKzY0NTAwIDdlNzQ3ZGUyMzFiMzgyNzM3ZjYzMThmM2IyMDUwZDNmNTYxZjBkNjMgcHkzaworNjQ1MDMgMjJmYmRkZjE4ZDQ4OGExMDAxODMyZTc0NzVhOGM1N2U5MmQ1NTVkYiBweTNrCis2NDUwNiAyNzBmZjZmNGQ5OWYzZmQwZGY5MmZmNzIyNzA2OWYyNWUyYjUxNDRiIHRsZWUtYXN0LW9wdGltaXplCis2NDUwNyBkOGFmYTQxYzY5NmFiYmRlYjAzZDJkZGNjNDc3MWVjNmFjYjA5MDdmIHB5M2sKKzY0NTA4IDNiNmZmY2ZlMjk3MWUxZmQzOTllMDJlMWNiZmZhYjZhNDZmMWVlNzcgbGVnYWN5LXRydW5rCis2NDUwOSA5NTc0ZmVkOTM2ODgzNmE1YmZmNzc5MmYyYTdmOTMxZTI2ZjgwYjdjIHB5M2sKKzY0NTExIDBhZjZmMDMwMGVhZmY0NDNkNjg2YjJhNThmN2JiZmU0YjdkZTdiOGMgbGVnYWN5LXRydW5rCis2NDUxNSA3Nzg4ZTk4OTNiODViYjkxYzc3M2M3MWQwYTM1M2E0NWQwZWQxMjlkIHB5M2sKKzY0NTE2IDNhZGE0NmYyMzIxZGMyNDQ2ODBiNDcyZGIwZTBiMGFiMDM4M2JmMWIgbGVnYWN5LXRydW5rCis2NDUxNyAzYzhkM2I5OGNmZDczY2QyMjM0NmJhZWQ3ZjdkNWVhMTJlYTEwMDhmIGxlZ2FjeS10cnVuaworNjQ1MTggMzgwYWEyZDE2MWQzOTI5NzIzODAwOGNlNGRlODFhMDFjMGZiOWZkMyBsZWdhY3ktdHJ1bmsKKzY0NTE5IDBiNTJiZGM0Y2Q4OTM5OTkxYjhhNGFhZTk3NTJhNjMwZjAxOTMxMzQgbGVnYWN5LXRydW5rCis2NDUyMCA2NGFiYjYxZTlkNGY3ZjA0NzNmN2I3ZmE0Yzg4MTM2MzBmYjVjMmZjIGxlZ2FjeS10cnVuaworNjQ1MjEgNTdjODJjYjBmYWZmY2U5YmZkMmNkMWQ4OWJhZmU3MTY5NDM0MmYwYiBweTNrCis2NDUyMiAzN2EyMWQwOTdkMzRkMzUxNDVlNjhjNjVmOTY1N2VjMjBjODJiNWYyIHB5M2sKKzY0NTIzIGU1YTUxZWQ5ZTYzNDI3MGUyNGUzMTEzYTJiM2MzMTY0Y2U2Mzc4YWIgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NTI0IGQxZTg2NGE1YzYwYzhiNGYyZTA3ODg4M2YzODdjZDdlMDU0MzVjMDcgcHkzaworNjQ1MjUgZmZiZDRlMzMzZTJmOWJkMGUzZjA4ODE1YmFhZjYwMTkzYWRkNzUxOCB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ1MjYgN2RlMDM4NTUwNTIzZGMyYjM4OGY2ZDQ1ZDU0MjdmMzcwZGVlNDY1ZCBsZWdhY3ktdHJ1bmsKKzY0NTI3IGJkZTJhYjk0MzU5M2MzYTlhYzE4MzdlNWM0YjkwZGRmMzAyYWVjYjUgbGVnYWN5LXRydW5rCis2NDUzMiBiMjYxMTY0MjViMTE0MzYwMDY1MWU3ZjQ4MzY1MzNiZmU0ZmFmODBlIHRsZWUtYXN0LW9wdGltaXplCis2NDUzMyA3ZWIzNzM3NjU3ZDEyZWZjODBjMDAyZjNhYTk2ZWFiZDI2NmQ2MzU5IGxlZ2FjeS10cnVuaworNjQ1MzUgODgyMWI0MDVlMGU2Y2Y5ZTg2YTQ5YTU2YTA0NTdmZjM1ZGRmNDI5ZSBsZWdhY3ktdHJ1bmsKKzY0NTM2IDA2NGIwYjc1YmFkNTNiNWJhNzM2N2QxYTkyZTVlZjRkNjEyN2I2M2EgcHkzaworNjQ1NDQgOGM5MjljZTBmYjQxYzA4NjUxZTVhYmQzNWU4NTdkODI0OTMwNGE1ZiBsZWdhY3ktdHJ1bmsKKzY0NTQ1IDcyM2MwZmY2OThiN2Y1NmY4MzVlNGU1MWYxMDU0ZTY5MTE3ZWJmMzcgbGVnYWN5LXRydW5rCis2NDU0NiA3ZmJjMzc0Yzk1OWQyZDc3OWY1Y2U2NjRmMzVlZjRmYzA4MDZmN2U1IGxlZ2FjeS10cnVuaworNjQ1NDcgNThkYzM2N2RjMWVhMDBiZDNjYzgzNTNkYzRiMjY1MmIxYzQzOTk5ZCBsZWdhY3ktdHJ1bmsKKzY0NTQ4IGM0Yjc2NmFmYWM2ZjY0NmU4NzFhMTMxNGQ1NDNmNjYxZmRhZDJhM2YgcHkzaworNjQ1NDkgZGM0MmVmZDcyOGVlYjgyMmQ1NjM0MmUzNjMzYmU4YzdjNTMyNjFhYyBsZWdhY3ktdHJ1bmsKKzY0NTUwIGVkZDQ4YjA4NDk0ZGE4OTZjYmZlNThkZDMwYmFiYzg0YjUzNjYxMzAgbGVnYWN5LXRydW5rCis2NDU1MSBiZmFmMTQyOTU3OTQ5ZTA0M2JkOGNmZTZjN2NkZDhlOWZkZmZkY2Y1IHB5M2sKKzY0NTUyIDYwNWFiNmY5MjgzODhhZjVmMWRmYWE5MjJjODk1YTQ5ZmQwNzkxOTEgcHkzaworNjQ1NTMgYzcxMmJjZDMyMDNiNGNlOTgwNGNhZWZhMDE3OGM4ZjY3ZTBiMGM4MyBweTNrCis2NDU1NCBjNTYwNzJlYWFjYzI2MThhMTMzOWQ4Y2EyNzgwMGQ5MzMxNGNjODQzIGxlZ2FjeS10cnVuaworNjQ1NTUgYTY5YmQzYWI5Zjk5N2NkYmFhMTk2MzU3Y2I1ZjI3MTE2YzVkMzI0NiBsZWdhY3ktdHJ1bmsKKzY0NTU2IDcyNDM0MDEzYjAzMGZkYzhkMDVhMGUyNWZhODJkNTFjYzBlZjI1NWMgcHkzaworNjQ1NTcgNDNmNmJiMGVhY2IyZjQwODNiOTY4YmZkNGI3YjcxODZjMjhhZmEyNSBsZWdhY3ktdHJ1bmsKKzY0NTU4IDViNGM4NzA5OTAzZDA3YTUyNTNlZTExNDYzNDY0NGIzNmZlNDY0NjEgbGVnYWN5LXRydW5rCis2NDU2MSA4ODM5MjAyMTk0MmE2ZGZkY2VlODZhMzE4NjRkODc2ZWFhMjc3N2Y4IGxlZ2FjeS10cnVuaworNjQ1NjIgZWQ1ZGMxM2I4OTliYTJkNmI1NDViZjhhYTE3OTRhODVjMTI4N2JkMyBweTNrCis2NDU2NSAxYzRiZDUwMmRlNjI5YjI5MGRjODcxZDFmYjJiMjEyOTZhNzU5Yjg1IGxlZ2FjeS10cnVuaworNjQ1NjYgNTA4NTlhZTRhZWJiYTRiZDYyYTM2NWM4ZDk5NzZmZjIxMDlmMzBjZiBweTNrCis2NDU2NyA4NDFhZTE3NjdiNGM1NDgzOGJlMDRiZjI1MDdlZjk2OWQ5MGE0NDdmIGxlZ2FjeS10cnVuaworNjQ1NjggMjQ4YjhhZGZjYzk3YTM4ZjVmMzgzZTBhMGI4YmE5ZTE1ZTM4ZjkxMSBsZWdhY3ktdHJ1bmsKKzY0NTY5IDkwM2I2ZTJhMzA0ZmIwYjMwN2NjZTRjOWE1ZmRmNzNkZjY5ODY0ZjYgcHkzaworNjQ1NzAgYjg1NzcwNDU5NTkxYjg4YjY4MmIwMjYyMmY3MGMzZjM5NTVhM2MwNSBsZWdhY3ktdHJ1bmsKKzY0NTcxIDJjOGUzY2NlYWM0ZWI0ZTA0MDFlNGE4NWQxYThhZmJhNjMyZGJhMzggcHkzaworNjQ1NzIgYWZjZDY4YTg3ZWVjYWQyMTEwZTFmODk4NThkZjU3OTk2MTdiNGUwNSBsZWdhY3ktdHJ1bmsKKzY0NTczIGJkYmI2NmJjMzdkY2UxYjNmY2FjY2UyOWQ2NzdhNTg0YTEwMmI0MmUgcHkzaworNjQ1NzYgYWZiZDUwYWQ0ZjM0ODQwNWQ2YmQzNWI5ODI3ZDUzMzcyZGNhYzkxNSBweTNrCis2NDU3NyAxZGQxMGIwNGRiNDc0MWI5ZmM5M2Q0MjI4NTliMjBmNDc3N2RmZDM4IGxlZ2FjeS10cnVuaworNjQ1NzggOGEyODFiZmMwNThkN2YwZDFlYThmNTJkOWI2Y2QxMmYyYzU1ZTZlOCBsZWdhY3ktdHJ1bmsKKzY0NTgwIDBmYzc4NjFlY2U1ZjZjZjBlNjIzYWI3NTY3ZjhmYWU3M2FhNTdkODMgbGVnYWN5LXRydW5rCis2NDU4MSA1NWFjNmM3Y2ViNTk4M2MyNWYxZmE5NmQ2ZjVjMjQ1OWY2MjZmYWUxIHB5M2sKKzY0NTgyIDNjNDlhZjJkNWJmMGFmZTY1ZDBhODExMDQzZjE3ZWU1M2YzZTY2NmMgbGVnYWN5LXRydW5rCis2NDU4MyBhZDliZWI0MWFhYzEwNTAwZjc2NTk1NzUyZDE2MWUxYmNkMGQ3MWQxIGxlZ2FjeS10cnVuaworNjQ1ODQgZTE3YWRmYWY0ZjY0YzljNGE0MTdhYjA3YTY5ZWNiMDg1OTRhNmI1NCBweTNrCis2NDU4NSBkOTRmYTRjYjUyZTczNDlhOWQwOTBjMzcyYjE3MjkwYWYyZDFkY2QyIGxlZ2FjeS10cnVuaworNjQ1ODYgZWY5MjcwMzc0ODQ0NGNjZTkxOGUxYzIzNjM3MTZmMWQ5ZjlkYzRiYSBweTNrCis2NDU4NyBmNWY3MGYyMGI2NzhmOTY2ZjY2YTQxYmZmZDdjMDA5ZTU0MjE3NzA2IHB5M2sKKzY0NTg4IDRkMmQwYTIxZDQ5NDhkYTljMmM3YjFjZjI3ZmI0ZDQ3ZjRkNDVhNjMgcHkzaworNjQ1OTAgYmU1NWI3YzJjOGU2OTI1Y2JiZTY4ZjU4YzE1ZTBlNzk0NjU2ZmNmMCBsZWdhY3ktdHJ1bmsKKzY0NTkyIDczY2JjZGU3NWUwNThjMzg3NDZlYWNlZmZlNDA5MmQ5MDQ0NTlhNmYgbGVnYWN5LXRydW5rCis2NDU5MyAyOTdlMTIxOGVmZTUwOWY5MzdiZjgxODY4MTc5NDNkZDYzMTE2ZTBmIGxlZ2FjeS10cnVuaworNjQ1OTUgZTE0NzM5YzU4NDAxMzY5MzQ3NWI2MTg0MzNhMmYzODhiM2I5YTk4MCBsZWdhY3ktdHJ1bmsKKzY0NTk2IDI1NDEyYzZkMjc3NjM1NjU4MGY4MjcwMTY1NzhlNjdmOGYyMmViNDUgcHkzaworNjQ1OTcgODJjNDY4MWNkOWJkMDdhM2FkN2VkNWMxZTYxZWQ0M2FhMzJkNjg2NyBsZWdhY3ktdHJ1bmsKKzY0NTk4IDc2MDQ1MTVhODE5ODVhYjcwNzI3YzNlNGFmY2JlNzVjZjA4YzhiODUgbGVnYWN5LXRydW5rCis2NDU5OSBhOTAwYmIxZGVkOWQ5YjZlN2U5NmZlZDVhOTA1NWFjOWIzYWFiOGFjIHB5M2sKKzY0NjAwIGI5ZDJmZjVlM2RjZmMwYWU5ZWFkZTk1NTE2NzYwNTFjNGZkMGZjNzAgcHkzaworNjQ2MDEgOGNjYjM1NzM5YTk2ZjIwYjJhZDc2NjBiY2QyZWUwMzk3ODIzNmNhZSBsZWdhY3ktdHJ1bmsKKzY0NjAyIGUyOWI0Y2U2NDFmOTQzMTk1Zjg1MWE4MTRiMWI0YzZiYzZmZGFiNTIgcHkzaworNjQ2MDQgZmQ3OWM0ZDk3NzQ1YWQxZWNkZmI3OThlMjViODJhMDRiYzRlMjllOCBweTNrLXVybGxpYgorNjQ2MDUgOGNmYjg5YjYxYzJlNTFiNzkyYjFlYmYzOWZmNjBkMjk3NmUyODJlOSBweTNrLXVybGxpYgorNjQ2MDYgYjZhZDY2NGNhZTQ5OTg4MjcyZGI4ZmQzYTJhOTc0ZTQ2MmI1OTdmMSBweTNrLXVybGxpYgorNjQ2MDcgN2IyZjIxODk1MzkyM2M5MGU0MTFlOWIzNjY2NjEzNjFkNzJjY2MwNCBweTNrLXVybGxpYgorNjQ2MDggNzM5Y2M5ZmRlZmU1ZDRhZWI2NDE3MDhiNWU5MDY4NWRkYmFmOTBkMSBweTNrLXVybGxpYgorNjQ2MDkgYWQ5ZmI5ZjFkNmQzYmRiYWY1MzE3MDQ0NTFkNmVlY2FhYmEyZWZkNyBweTNrLXVybGxpYgorNjQ2MTAgNDE2YTU2ZWIyNGYzM2FhZGJmY2MzOGMyMWZiMTk3ZjQ4YTM1NDIyNCBweTNrLXVybGxpYgorNjQ2MTEgNDQ2ZTNkYWMwYzMxYmQ0OWZiMzY2Nzk4MTg3N2U2OTM2YzYzY2VmMyB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ2MTIgMzdjN2QxNzc0MGNjYTY4OTQyNjM1NzMxN2RjZWFmZDgzZDAxZjcwOSB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ2MTUgZTI3MTk3NmFjMzcyNGVhMGIxNDMzNzg2N2UyZWY4ZGE3OTNmMTNiZCBweTNrCis2NDYxNiA1Zjc0NjhhYzE0Y2Q4N2E1YTIxMjMyYzU5YzljMTE3ZWQ0MGVkMTYyIHB5M2sKKzY0NjE3IDkxM2FhMjc0ZWQ3N2I1N2QxYzMxZmIwOTdlMWU0NGY3M2NjOGQ1ZWUgcHkzaworNjQ2MTggYWNkZmZiNWI0MzUyMjExM2RmZGI1ZGQwNWJjOGZiZDk2ZDNjOWVmNCBweTNrCis2NDYxOSBlZWQ1MzE3YWM4MzdlMjYzZDMwZWE5MDA0OGYzZmJiZWM3YzRlYTc4IHB5M2sKKzY0NjIwIGY5MmM4MDA5NWMxNGM5ZDkxYjQ1YzVkZGVhNTEzNDllNTE0MTk1MTkgcHkzaworNjQ2MjEgYmI2NWY5Yjc2YzFmYTUxYTAyZGM1ODNkZDA1MTdmNTM4ZjdlMWQ5ZiBweTNrCis2NDYyMiA4MDEwOWQ0MDQ0Y2RhNGZlOTFlNGM0YTY3YjQ5MDFkZDE0OTRhZTdmIGxlZ2FjeS10cnVuaworNjQ2MjMgZTEwZTI1N2NiZjYxNWViYjY3MTBlZGJiNjBiNjQ4ZWJhZTMyZTA0NiBsZWdhY3ktdHJ1bmsKKzY0NjI0IDdkMTUzMGZhYzFmNjY4NDE3NjkyY2M5NDQ3MTJkNzE4NmM2M2E3MmQgcHkzaworNjQ2MjUgZTY4ZmU5MGYxNWFiMDBlMDMyMTg2Zjg1OTBlZDBjZTRlYmJiZGQ5ZCBsZWdhY3ktdHJ1bmsKKzY0NjI2IDQyMzA5NDM3ZjFjYTI1YzAxNjEzODc0OThkMmIzNjEyZjI0MWMwZGIgcHkzaworNjQ2MjcgN2UyOTlhYjM1ZDk1ZTE5OTg5OTk3OTBkYzZkMzlkOGViYjRhMjJmYSBweTNrCis2NDYzMCBjYTEzNTNiZmQ0OGEzMjMyMzAxZGVkODE3OWQwZjU0NGNhYTIwYTMxIGxlZ2FjeS10cnVuaworNjQ2MzEgNzAzNTc4MTE3Nzg2MjdjMWEyMDE1MTUzMzAzZDZhNmViZWYwNzNkYiBweTNrCis2NDYzMiBkNjY0MDQ5ZWNhY2FkOGJlMTk4OTk4MmI1MGUxYzRmOTkxYzhhMzIyIHB5M2sKKzY0NjMzIDdkYmQ2YjYwNzcwNmEzNjNiYWE2ZDhmMTA4NzhhYmU1ZTQ2ZTY1MTkgbGVnYWN5LXRydW5rCis2NDYzNCA3MGE0ZWM0MTI4ODIyYWNjYjQ3NTRkNTc1MGVmZjcyNDU3ODE1YzdlIHB5M2sKKzY0NjM1IGNkYTU1NmQyMzkyNDQ3Yjk5MDQwMTY5OGFmYzhhYTVlZDEzNjk2ZGEgbGVnYWN5LXRydW5rCis2NDYzNiAyZDQ4NzdmNzUwMGVmYWMzODEyM2Q0ZjhiYzRjYTI1MzUzYjkxODM1IHB5M2sKKzY0NjM3IDZjMzg2MDkxNDI5MmM2YmU4MzA2YWVjNjM2NmNkYzA1MmIyZDM3ODYgcHkzaworNjQ2MzggYTA2YTBlMTEzMmVlMDJmYmFkMTFmODI0Yzc3MjUyYWRkOWZkYTk4MiBsZWdhY3ktdHJ1bmsKKzY0NjM5IDYwZmQwODg2ODExYzc1ZDU5NjA3MGU2NjgyZDJkOGVhNTdjOTlhOTcgcmVsZWFzZTI1LW1haW50Cis2NDY0MCA0YTgzMjk1MzUyMzRkNzViNWQ3NmM0ZGI4NzgyMDExMGYzYWM2NmQwIGxlZ2FjeS10cnVuaworNjQ2NDEgZThiZWUzMDk3ZDQ0MGU1M2JiZjNmNWU4OTYwNTg1ZWVkNWE0YjY0MyByZWxlYXNlMjUtbWFpbnQKKzY0NjQ3IDZjZDNjYmUwNzAzNWU5NGZkYmE4ODNkZGE0N2FmOTNkMDVhZGYyOWIgbGVnYWN5LXRydW5rCis2NDY0OSA4MDE3NTQyMDFiMTE0MTI4NjJiMzU5YjBlMzliODIyYWI2OTkyZmIwIGxlZ2FjeS10cnVuaworNjQ2NTAgMmQwMzZiNzhkZmE0MGJkNjEyNWQyZDYxZjhlMDYxYzQ0YjQ5MWU4YyBweTNrCis2NDY1NCBiN2YzZDk3MGU0NGYwMzE3MGYzNDZjYzhhZGI4ODY0NWJiYzcyZmYwIHRsZWUtYXN0LW9wdGltaXplCis2NDY1NSA2NWFmNTQ0ZGExMjFkNDg1MTUxOTRkMmVkODE2OWE0MTYwYzk1NzM1IGxlZ2FjeS10cnVuaworNjQ2NTYgNWQ4ZjQ3MDA1YjczZWIwYzg1OTcwZDZhZDBiMmFjMTlmODZhMDM5YyBsZWdhY3ktdHJ1bmsKKzY0NjU4IGY5MjcyNDBkZWYxYjczYzdlZDE5ZGI4YjkwMDJmMjU2ZTEzODNmZTEgcHkzaworNjQ2NTkgYjM5Y2VlYzgxYzE3NGY4MWRkZTEyZDljODgxOTBlNjExZmE2N2Q5ZCBweTNrCis2NDY2MCBlMjJkZWFlYjZjMWIwMmYyMTdiNzQ0Mjk4OTgxMWRhZjhlYWNjMjMyIHB5M2sKKzY0NjYxIGFkZjQ4ZjJmYWRmY2JiZTk1NzRiYjMwNmVlZTY5MjAwNTlkMmE0NGIgcHkzaworNjQ2NjIgZGFmOWZhZDdjNTUxOTEzNmUyMjg5Y2E4OWEzNzFhYTQ4MGFmYWU3NiBweTNrCis2NDY2MyA4MzJhZTUxM2QzNDQ0NTAxNjZhN2Y2MDVjZTQ1NzJiZjJmY2IzNzZiIGxlZ2FjeS10cnVuaworNjQ2NjQgZTRiYmIxZDNkZDE0NWM4Yzg2Y2ZhYzA2NTE2YTU2ZTI0ZDA4ZDU0MSBsZWdhY3ktdHJ1bmsKKzY0NjY1IDMwOTU0MmZkN2ZlOGQzMzgwNjc1YmYzY2YxNGE3YzExMzM2ZDFmNjcgbGVnYWN5LXRydW5rCis2NDY2NiA4MWZkOGE4YmFhOWE3MzNjYjUxOWNhMmU4MTFkOWE1OGViNDUzNzUwIHB5M2sKKzY0NjcwIDE4OTliZTMxMjJjMjIwZWM5ZmQ3YmM5OTgxODg3NjdiZDNlMGUyOTggcHkzaworNjQ2NzEgNWY0YTg5ODBjMWFjYmY2OTk3YzBkN2Y2MzhmZmE0MGQ4NWM2MjUyNiBweTNrCis2NDY3MiA3ZTU2MDE2YTY1NjU5ZTBkMmZlMGEwYTA2ODk5Yzk3YzI1MjE3ODM5IHB5M2sKKzY0NjczIDcwZTFkMmJiYmMzMmZhZDE1OGQ5YjMyYTQyMDEzNGJiMjU3ZGMxMTIgbGVnYWN5LXRydW5rCis2NDY3NCA0MDI1ZjYzODkxMWZhMTk2MWUxMTNkYjlkMDg4MTdmMTkxMDNkNmI2IHB5M2sKKzY0Njc2IGJkMjMzNDEyMGEzMGU3YzQ3MWI0NzU0M2YxNzY5YjRiZWY0ZjJmNmMgcHkzaworNjQ2NzcgNjkwMWQ1ZmYwZjdhYjZhOTMwMGRjNTVlZmM2NTcxYWNkZjEwMDEzZiBsZWdhY3ktdHJ1bmsKKzY0Njc4IGZiMDJmZWRmZTY0N2YyYzg4MmYzNDRhNjc3ZWI3MzU2Yzc1MjlkM2EgcHkzaworNjQ2NzkgMWY4YmUyNmQwOThhY2E2YmVlNmJkMWIzN2EwZWRmYTk4ZjY4ZjlhZSBweTNrCis2NDY4MCA5ODg2MGNmYTE5ZmQzOGJjZmJjODAyZGRhNDI4YjI4NmI1NzZiMTRmIHJlbGVhc2UyNS1tYWludAorNjQ2ODEgYWExZmJlMzIxYWNmMWYwYTJmNGU0NDBmOWU0OTk0ZWUwNzk1MTA4YyBweTNrCis2NDY4MiAzNTBhMjg5YjBlZDQ1YzQ0ZTQ3ZThmYjllOWE0MTQ4MWMwYjkyOTY1IHB5M2sKKzY0NjgzIGVmOGQ3NDg3YTA3NzczYzNmODMyNDM1NTViNTEzMTVjZGQ3ZmJiYzYgcHkzaworNjQ2ODQgYTU3MjNhODM2N2U3NmExODk2NjM0OWQ1Yzk4ZDMyMGE1NGEwZGEyOCBweTNrCis2NDY4NSA0MjI0ZmY3N2ExZGRjZmVmMjUwZTE5ZjZhOGI4YTEyNGZhZTI3Njk3IGxlZ2FjeS10cnVuaworNjQ2ODYgODkzZDkwYjc3MzFiZDAxNWYwNjFjYzg3ODMzYWZmMmU5Zjc4MDY0MyBweTNrCis2NDY4NyA3ZDFlNjE0OTJjN2RmZDc4YjIxZDQxMTk2MzI1ZjFlMTkyZjQ1NjMwIGxlZ2FjeS10cnVuaworNjQ2ODggYWNmYWQ4NjQwZTIxZmY5YmNlNGZlYjNlMzVmNGRkZWUyYWIzODFjMiBsZWdhY3ktdHJ1bmsKKzY0Njg5IGU1MDIwNDY2NjhiMTAwYzhmNjk2Zjk1YTA1MDJmNDY3Mjc4ODk3OTkgbGVnYWN5LXRydW5rCis2NDY5MCA4MDdkNjk5NWJhZmQzZWVkMjY3NGQ5ZWEwMDg2OTJkMzMzNTIzYjk4IGxlZ2FjeS10cnVuaworNjQ2OTEgY2RhYWM3OWE3MjM3NjhkOTI4MzAxMzQ2M2ZiNzQ0NzY3OWQyODdjZiBweTNrCis2NDY5MiAyZDBjMzY0MzIyM2Y2OTI2ODUwODYzMjIzN2EyNzczMjQ2MDhmNGZiIHB5M2sKKzY0Njk2IDQwZWNiOTEzMzk5ZTY3MzEzNGI2Njc0Y2RmYjEyZjkyM2M0MGI4ZWEgcHkzaworNjQ3MDAgYjFiM2FmODJhZGQ2ZmFkM2IyNDMzODA2YjU5N2YwMDYxNjJiYWY2ZiBweTNrCis2NDcwMSA0ZTY4NTljNmQzOGM4YTJjYWE5MzZhNzJkZTFiMjIzODA2ZDVmMzIxIHB5M2sKKzY0NzAyIDEzYzk4NTJkZTgxYTNkMDFhMjhmOTJmNjIyM2VmYzhlMDlhOWUyNjkgbGVnYWN5LXRydW5rCis2NDcwOSBlYTdjYzE4YzlhYzg2ZjIzMmNjYmZhNWE5MWQyOGEwNDhhYzgyMjdhIHB5M2sKKzY0NzE2IGRjOWIzZjI4OTJiOGIwYzQ5ZTMyYjQ2ODhiZWQ4YjJjNWM1OGVhMDIgcHkzaworNjQ3MTcgMDQ4MTc3OTNiOTYyNWIyNDYwOGRhYTE3YWIzMmU5MTNhOTE3ZTczYSBweTNrCis2NDcxOCBmMjcyMDYxMDFmZjk0M2MyYTAyZWI0Yjg1M2E0NGQ2N2RiYTIyZmQ1IHB5M2sKKzY0NzE5IGM5MzU5NmVjMWQzZGU2NjVkMzYxMGMyY2JhM2QxODRlZDUzYzk1ZGQgbGVnYWN5LXRydW5rCis2NDcyMSA2ZjEzMmEyNmIyMmY3N2NlNDRmZjEyODZhZmY1MmQzNWFkNmNkZTg2IGxlZ2FjeS10cnVuaworNjQ3MjIgZDc1MjY2NzBmZjBhZGVlZGU4MmQ4ZDMyZjMyN2YwZjgxZjNhMjgzYSBsZWdhY3ktdHJ1bmsKKzY0NzI3IDNiMDBlOWY5ZDY5MjU5ZjJjNTMyZjVkYWM5MTFjMTJiY2IzOGExMzYgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NzI4IDhmMTM0NjUwMjIzNDVkZGIzMGZjMTY1NDk5ZjY3ZmY1ZWJmODAxODMgcHkzaworNjQ3MjkgNGJmODQwMzVjYjVmNTg0MWViNzA5NzhlNmIwNWI0M2YxMTg4ZjJmMCBsZWdhY3ktdHJ1bmsKKzY0NzM1IGY3NzI0NzZhZDkwZGY4ZTkyNzY0MDRjOWUwNjdiNzlhMzkzNTE2YmYgbGVnYWN5LXRydW5rCis2NDczNiAyMjc5ZGQ0YTJmNzMyYjc1Mzg3ODlkZWU0MjQ3YzE0Zjc4OTNmZGQ5IGxlZ2FjeS10cnVuaworNjQ3MzcgNDcyMWYyN2VkNmMyN2U4NzUzZDNhYWM2MDg5M2EwM2E0OTA5ZmQxNCBsZWdhY3ktdHJ1bmsKKzY0NzM4IGZiMjc5MjQyZjk3MTAyZDBkYTc2NTIwMDMzYTZiZGE3OWJhMWEyYWMgcHkzaworNjQ3NDIgNDgwMGRkMjJmNDU1ODM4ZjJkMjBiNWU2MGQ1NGRhN2I3ZTdmMTFiZSBsZWdhY3ktdHJ1bmsKKzY0NzQ0IGQ2NjU3OWY5MjVjNDZmODViOGIxZThkYTQxY2ViNGEzNTYxMzBiNjMgbGVnYWN5LXRydW5rCis2NDc0NSAyNDc2MzczZjU1NGQxNTM5MWY4YmIyYmE0ODNkODBmYTIzZDcxYTY3IGxlZ2FjeS10cnVuaworNjQ3NDYgNDViNjcyMzY3YjFmN2Q1MjJjM2NkZjA1ZjUwYTFmNzliNDhhZDM5YSBsZWdhY3ktdHJ1bmsKKzY0NzQ3IDRiYTNkMDdiODcxZjg3MzQzNzQ5M2JhNmUzNGFlODI5YWNhYWI2NTEgcHkzaworNjQ3NDggNGE3MmJlMWQ1YzIxODExYzg1M2Y4ZjBmOTBkNGFmZWQxN2EyM2Y5ZCBweTNrCis2NDc0OSA2YWU3MWY1MjJiMmYwYWJmZTZkMDA5NTJkNmVkMTVmYWZlZTI4YTNkIHB5M2sKKzY0NzUxIGZhMzQwODgzODBmOWJmMzA5Y2Q4MTA3MjY1YmQ2MjBhZGE0ODBjMWQgcHkzaworNjQ3NTIgYTA4ODJiZmFmNTRkOGQ3ZGEyZjliZTMwMTI5ZWEwMWY3NjQyOTk5ZCBweTNrCis2NDc1MyAwNzM4MTE5YzFlZjhmZDk1YTg4MTMyMmY5YzVhZWE1NmUyYjgwOWNkIGxlZ2FjeS10cnVuaworNjQ3NTQgYTMxMmUwM2EwNjMzMjUxZDFmZTNkMjVkN2E4NmY2ZGE2ODcxYTNkNyByZWxlYXNlMjUtbWFpbnQKKzY0NzU2IGMzMTkzYjcxNTZiYjY2NTA0MTM0ZjIxYTBmZjk2ZmYxZDFhODYzMzAgbGVnYWN5LXRydW5rCis2NDc1NyBjM2JjMDUyMzcyNzJlZGVlMDIxODYyY2M3NzRiY2U0NmMxODBkMGE5IGxlZ2FjeS10cnVuaworNjQ3NTggMmI5ZTEzMGUyMWJjNTQ2Mjk3ODhiOTc1YzhjZWFjMjMyZDk0NzdlYyBsZWdhY3ktdHJ1bmsKKzY0NzU5IDZjOWFmMTRkN2I4MTM0NzZlMjE5ODJiOTU2YzA1ZDIxOTE3Yzk3YmYgbGVnYWN5LXRydW5rCis2NDc2MCA3MWQzMWFiNzM1MDczMWZhY2I0ZmM3MDg4MzZjNmU1NjU4ZTkzYjhkIGxlZ2FjeS10cnVuaworNjQ3NjEgM2FlOTI5YzBlZTdhMjg1ZWJiZTU2Yjk3ZDQ0ZmIzMDhmOWJhZTJmZiBsZWdhY3ktdHJ1bmsKKzY0NzYyIDBjNjJhMjc5ZTRkYWZkMjBhMjJlNTIxNGFjMTFmNjZjMjBmYjdjOTggbGVnYWN5LXRydW5rCis2NDc2MyAzOTQ3YmZkZGE3NmQyN2NlMjJhY2JmNWZmNDg3M2FiNGU5N2YxY2QwIHB5M2sKKzY0NzY0IDY0MGFmNTQ0YTg2MWY3MDRhMzYzYWFhMzNlMTI2ODgxNzM2MzQzZGMgcHkzaworNjQ3NjUgMjIzMWE1Y2VlM2Y1NmVjODMxMDA4NzM4YTI5MmVmZjJjNDU5MDhiMyBweTNrCis2NDc2NiA0NjE0YWMzMTJjY2VlOTgwMjZjMmEwMjdiZWZlMTJmNjA5MDRmNDAxIHB5M2sKKzY0NzY3IDMwZmJmOGU0NTU0OWQwMjk2OTQwMTY4NzA3MzNlZTllYzU2ZGQwYzQgbGVnYWN5LXRydW5rCis2NDc2OCBkN2ZkMzJjZTA3YWE2MmFmNWVmZTk3NjkwYmU0NjQ4ODdhNGJjYmE2IGxlZ2FjeS10cnVuaworNjQ3NjkgYTI0NGQ2YjE0NTAxOGU4MGRkYTYzMmY4NzY0MzcwZjVkMWUzZGVmOCBsZWdhY3ktdHJ1bmsKKzY0NzcwIDViMmYwM2JlYmUzYmFmNmJiNThjMTliMjdlNjZkNWEyZjZjNWM1OWEgcHkzaworNjQ3NzEgMDhjNWM4YzExNGIyOWE4ZTgyOTAzYmMxZjczZTY0MTk3NmM2Yzg3NCBsZWdhY3ktdHJ1bmsKKzY0NzcyIDI2Nzk5ODYxZDMxOGNlMDdhNDYzYjdhOTRhYjk2ZDRkMDk1ZDdhZjggbGVnYWN5LXRydW5rCis2NDc3NCA2NWY2OWNiYWY0ZjBkNWIzYjZmODBhYTY5YWY3YzY4YjYwYTU4NmE0IGxlZ2FjeS10cnVuaworNjQ3NzUgYmM5NDNiYmZkYjFlY2IzMzNlZThiYWNiYTJjZTQ0ODM4YjlhZjg5OSBsZWdhY3ktdHJ1bmsKKzY0NzgxIDgzZjRiNzc3ZDk0YzVlMzUyM2U5YmQ2YjUwMzVjOWZjOWYxY2U2MGYgcHkzaworNjQ3ODggZjhiNzQzNjMyNTkzYWE0MTM3YTNkYzBhMGZhZTFjZjZhMDk4YzAyNCBsZWdhY3ktdHJ1bmsKKzY0NzkxIDFiYzU0Mzk0NGRhYTI4ZGQwZGFjZGRkOWEwNmJlZmM0MjcxN2ZiMDEgbGVnYWN5LXRydW5rCis2NDc5MiA0YzAxZDc4ZWM1OWZmZjRmMDFlNjEzNTU2MDVkZDRkMjE4MDcwODRhIHB5M2sKKzY0NzkzIDM2MTg4NTQ0YzU2MTAyNmY2ZjgzZDZlZmFmZDliODRhZjY3ZThiZjYgbGVnYWN5LXRydW5rCis2NDgzNSBiZWQzZGZkOTkyODFlNDFlNzU4YzE0N2M3MDM4MzQ1OTc2NGQ5ZmVjIGxlZ2FjeS10cnVuaworNjQ4MzYgYzMyZTkxNjUwYzE0NGI5MjdkYmMyMjI1Nzk3YjMxOTFiYmFiZTAzMyBsZWdhY3ktdHJ1bmsKKzY0ODQyIDY4Yzc5NjRkMjUzNDdkMjdkMWJhYWM4ZDk3OGQwNzEzY2EyOTYyYjkgbGVnYWN5LXRydW5rCis2NDg0NSA4ZTczODNjYmU1NmU0OWE3ZWRkMjUyNzgyNGZjNmQ0YzE2NTc2MDExIGxlZ2FjeS10cnVuaworNjQ4NDYgYmQ0MzVlOGIyZTI4MDA2ZGVlYzY0MDA3YzI0N2U1YTQ4NzRiOWU1NiBsZWdhY3ktdHJ1bmsKKzY0ODQ5IDA1ZmVkOWJmNDg5ZDc4M2UxYzQ2NjY0ZjNmMWI3OTkwNTEzZmM2YjIgbGVnYWN5LXRydW5rCis2NDg1MyA3Y2ZjMjhhYzA3MTUyMDFjOTM2ZDdhODQyOThlOWE1ZTI2NGE4ZTIzIGxlZ2FjeS10cnVuaworNjQ4NTQgMTI3NDIxMWEzODhmOWFkMWY4NjY2ODhkOTA3ODUzM2I1ZWYwMmU5MiBsZWdhY3ktdHJ1bmsKKzY0ODU1IDMyOGYzM2JhZmZhMzgyN2Q2ODE5MzQ3NmY3ZGJiNGIwMjQ5ZjA5OWMgbGVnYWN5LXRydW5rCis2NDg1NiBmZDA1NGU3M2UyZjIzOWUzMzVmNTRmZGY0NmZiNDQzN2Y5MmUwMTI0IGxlZ2FjeS10cnVuaworNjQ4NTggMWQ0NGUwMDRjOTFmOGEyZTk4NTVhN2I4MTVjYjVhYzU0ZGUzZGEwOCBsZWdhY3ktdHJ1bmsKKzY0ODU5IDc2MzI1YzE5YWY4NDA4NGQzZjQwOGM4ZDBlYjdmYjNhMjY1ZTVhZGYgbGVnYWN5LXRydW5rCis2NDg2MCAxY2Q0ZDYyNDQ0YjYxNDE0MTcyNTNmMmJlYmVlZjY0NjYzZTllODljIHB5M2sKKzY0ODYxIGUxNjM4NGUzZWUyMmE2NjQ2NmVmYjQ5OThkZjZlMTM2YWM4ZGRlNzIgbGVnYWN5LXRydW5rCis2NDg2MiA1NDVlNDQyMzZmMjg2ZDU2ZGIyYjllN2NiZDE1M2ZjYjM3ODRjNmI1IHB5M2sKKzY0ODY1IGMwM2IyMjNjMmI2OTBiNWI1MjAwOGU2YTY3Y2Y2ZmUwZGFkYTFjYTEgbGVnYWN5LXRydW5rCis2NDg2NiAzODFhZTJhZDgxMGI3NjMyN2UzZDkyZjkzMmMzZmE4Yzk1NzViYjAwIGxlZ2FjeS10cnVuaworNjQ4NjcgNTNiNTFjMjEzYjNkYjAxOGM3NzEwNzdmYWUzYjdmMTk2YjY5YzgyMyBweTNrCis2NDg3MSBlMjg2YmQwZjRlMWJkZjYwMTFlYTRjNDlmODZkNzVlMTcyYTRiZWQ1IGxlZ2FjeS10cnVuaworNjQ4ODAgMTNlNTI1ZDk3NGIxNThiZjZkYWE0MmU4ZTNkOTIzNDdhODFhMzg1NiBsZWdhY3ktdHJ1bmsKKzY0ODgxIDRmODA0ZWU3NzJlYjJmY2JjZmYyZDFkMGRiNWIxYzg5NjE0Y2U1MzMgbGVnYWN5LXRydW5rCis2NDg4MiBmYWVhNmU5ZGE2MzlhZjFkMDFkMmE2YjQyMzIxM2VlYzY2ZTkyYWE5IGxlZ2FjeS10cnVuaworNjQ4ODMgYzY1OWI1MzhmN2JhYzU2YTdhN2M5NTA1ZTllZGQ1YWQwYTdkNDUyMCBweTNrCis2NDg4NCBjZDc3NjNiMDU0NDZmMDM4ODQ0ZGMzM2YzMGRhY2RkYjRlOTY4YTQ3IHB5M2sKKzY0ODg1IDhkYTVkMzhkZGNhM2I4ZGNkMTRiZWEwZTZjNDcwZDdlMmY4NmJmYjAgbGVnYWN5LXRydW5rCis2NDg4NyA5MGI2ZDE5ZjA2YzFkOWZmMjhlZjY4MTI4Y2YwOTY0Y2Q1NGJjZTNkIHRsZWUtYXN0LW9wdGltaXplCis2NDg4OCBhNzQ3Y2QwNjZmMzIxMWY5MGRhMGIwMGZhNDQyYjljNTI2ZTg3NDllIGxlZ2FjeS10cnVuaworNjQ4OTYgYWQzMDkxMjI3ODRjZWZmNTZiYzY2OTRlMjdlMGUwMTE3ODI4MjQ0NyBweTNrCis2NDg5NyAzOGQzYTUwZGVmZWM5N2Y0Njc5ZTc5MWJiNGUyZTcxODgyMTQzNDM4IGxlZ2FjeS10cnVuaworNjQ4OTkgZDZkZmZkYjMwYmRkZDhhZGJlODQ1ZmE2NzBkNWUyZGRkZDYxNGExZiBweTNrCis2NDkwMCBiYzI3Yzg5NjdjYWMxZmFmYWI1YjkwZjgzNTJhZGEyYmRiOTAzMWI4IGxlZ2FjeS10cnVuaworNjQ5MDEgMmM5ZDBhN2UzYmM0ZDNkZDNmZjA0NzkwNWQwYzQ5MWZkNzUyYWM0ZCBsZWdhY3ktdHJ1bmsKKzY0OTAzIGJlYjBmZjVhMmEwZjU4YzU2YmJkOTg5NTY2NDVkNmFiYmNlYjM1MWMgbGVnYWN5LXRydW5rCis2NDkwNCA1ZjI0MzFkZTYzZDBhNTE0OGRkMmYzY2M0NjNjM2Y5MjY3NWU5YjY1IHB5M2sKKzY0OTA1IDJlYTgyOWRkNmI1YTFkZTcxNWRkNzQ0MzMyMmZmNDM3MTAzMTk5YjEgcmVsZWFzZTI1LW1haW50Cis2NDkwNiAxOWNkYWFkNzg4YjkwZjBhMzAxMDNmMjNjMjI4MTZkOGY1MmQzMjM1IHB5M2sKKzY0OTA3IDVlZTMzYjlkZGVjYzY5MzRmODdmNjE5YjJiNjA3NmIzZjQ3ZmUxYjQgdGxlZS1hc3Qtb3B0aW1pemUKKzY0OTA4IGE3MGQ5MDVlNTA0MThiMTE5NDJhMDg4YTYyMDMwNzc4YjA3NDEzZTYgdGxlZS1hc3Qtb3B0aW1pemUKKzY0OTA5IGUyMjk2YjUwMDYzZGYzZTdiOWQ0ZmE3MTM5ODdiMmM2M2VlNTE3OTEgdGxlZS1hc3Qtb3B0aW1pemUKKzY0OTEwIGIzNWM4YjE5NDBhZjUyMTAwZTllM2FlOTc5MzNmNmE5YmYzNDRiMjQgbGVnYWN5LXRydW5rCis2NDkxMSBiNWNmMGNiMGM3Y2U1OGI3MzAzNWQwNTBiOWU2YWFiZDI4ZTgxN2U0IHB5M2sKKzY0OTEyIDg2ODY1NjMyODE1Mzk1ODViZGFiNTc4YmQxOWE5YjAyNGVlNTY2MmEgcHkzaworNjQ5MTMgNWFhZmEyM2NiZmZjOTk2OTE2MmNiMzE4YTQ1OWM3MmNiNWZjMjJkYiBsZWdhY3ktdHJ1bmsKKzY0OTE0IDIzMjEwNDBlYzkwYmU2NzRiM2I4MmJiYzI3NTYzZDUyZWM0NTE3MGMgcHkzaworNjQ5MTUgYjkwNzUyYzVlOGMxNTNjNjlhOGU3N2YyN2IwMWFmYjEyMTIwZmFlOSBsZWdhY3ktdHJ1bmsKKzY0OTE2IDhjZmNmNzkzMjcyNDVjYzcwMzIzZjM3NzM5Yjg1OWMzNmRiYTQwMWMgdGxlZS1hc3Qtb3B0aW1pemUKKzY0OTE3IGFiMmNmZDdjM2JlODc2MjdhNmQyOTY5ZGNhZGRiODdmZmZjYWE2ZmYgdGxlZS1hc3Qtb3B0aW1pemUKKzY0OTE4IGU1M2U0YTcxZjU2ZmQxODZiZGU4MzY5ZGE2M2E0M2VlOTBjMzAyZGEgcHkzaworNjQ5MjAgZDYxMWIwMDkxZDVmNjRlZWFmZWM1NjZmYTY0MDE1OWMxNWUxYjdmZiBsZWdhY3ktdHJ1bmsKKzY0OTIxIDVkNjFhZDIxNGI5YzA2OWM4OGIxYTE5OGYxNzI0YTI0NTI3MGUzMTkgcHkzaworNjQ5MjIgMDQxNTUwNzM4MjAxZmRmZTQ0NjFlNzk3ZTc1M2NkZDVlMDhjMjY2ZCBsZWdhY3ktdHJ1bmsKKzY0OTIzIDhkMGE5NzY4MTZmMmY5ZGU3ODAzOGVhZmFlNDBiOGZhYzRkZGYyYTcgcHkzaworNjQ5MjQgMThiZjJhYWE4N2I1ZjI0ZTdiMzE0M2UwMjZkYjQ3NDJmOWYzOWEwYSBweTNrCis2NDkyNSBjNTcxMGYwZGViYWUyNzUxNWE3ZDhhMzA5ZDExZGNlMTQ2NzBlOTBiIHB5M2sKKzY0OTI2IGU1ZTEyZDMxMDU3ZWQ1MDViZWE3NTAyNWM4YzZmZGYwZjMzNTg2MDAgbGVnYWN5LXRydW5rCis2NDkyNyA1YWMyNmIxZjI1ZDkxZWVjNGJhYmE0ODliMjJhZWQwZmMyYmJkYjM0IGxlZ2FjeS10cnVuaworNjQ5MjggNmMxMjM3Y2I1YWFhNjZiZGNlODg1ZDA5MjExYTdkZjY1NmNjZmE3ZSBsZWdhY3ktdHJ1bmsKKzY0OTI5IDhiYWNlMjE0YWU1NGEyMGM5MGJhY2M5NjJhYjhmYjQ5NTZkNWZhNjYgbGVnYWN5LXRydW5rCis2NDkzMCBhZmU4ZDUxNWJmZTJlOWM5OWFiNzJmYWIzNzYxYzE4MTVhZDdmZmJjIGxlZ2FjeS10cnVuaworNjQ5MzEgODFlMzRkN2U0YmEwYTdmYTYzMWJkM2E0MTgwYTA3MzljMjM5YWI5YyBweTNrCis2NDkzMyA2ZmQ4YTFkODQ0OGJjZDE2NmZlMzcwYzQzYzJkYzRjY2ZlNjRhODhiIHB5M2sKKzY0OTM0IGJlM2QzMTA2ZGE2ZjI0NTFhYmVhNmRiMWZjNjdlN2M5OTNlNTQwODMgcHkzaworNjQ5MzUgYWZkZDY0ZWRmMTg5ZTVmOTY3OTM3MjEwNjI5MmQ1ZDQ2MzEzMWJjOCBweTNrCis2NDkzOCA5MmIxY2FmYTMyNjdiNjY4ODAzOWEzY2Q3YjgyNmYzYTU5OTNkNjMzIGxlZ2FjeS10cnVuaworNjQ5MzkgN2EzMGIzYzVjYjU3YTdiYzk2ZWFiNmJjM2I0MzMzNzg0MGRjZWNjZCBsZWdhY3ktdHJ1bmsKKzY0OTQwIGMzYmM0Mzg4ODJjYjgyZjRlMmU5ZGM4NDI4OWMyODNjZGNkZjA0NzkgbGVnYWN5LXRydW5rCis2NDk0MSBhZTM0Yjk1MWIzMzc3NjI2YWI0ZDdlYjE3NTI5MzQ3NTRmOTkyOWFiIGxlZ2FjeS10cnVuaworNjQ5NDQgMmFkNzQ5ZDU3ZTYyYzA1MDU4NDc1MjBmMWY2MWMxNzZmMzE0YTgyZCBsZWdhY3ktdHJ1bmsKKzY0OTQ1IDJjYzRlMWM0NzVmODEzYzE0Y2EwMDEwNzg2ODdjMmFiNWI4ZjJkYmEgbGVnYWN5LXRydW5rCis2NDk0NiBjMGMwNmZmYWVhODMxMDkxM2UwMzRhYzg0ZjI3MmVhZWIxOWQ0ODVlIHB5M2sKKzY0OTQ3IDE5MzY5YzdmNTc5MTRhNWNkNDJiNjAwODNkZGVjNTk3MGIxYTc4MTIgcHkzaworNjQ5NTMgZTdhNmE0NTE1YWIwYjM5YjU1YjI0MWFkZjIxNjg1YWNhNTMzN2E4OSBsZWdhY3ktdHJ1bmsKKzY0OTU0IDk5ODY4MjA3MjNlMGNmYzcyNzJkZTg5OWQ4MGExYjQwMGQ1YzlhOTUgcHkzaworNjQ5NTYgM2Q4NjgyNTRmZjdlZWZkNmUzYTFmYWJjMzcxNzM5N2EzN2M5MTc1NSBweTNrCis2NDk1OCBjMmIxMTRkMGUxY2Y0ZDczN2Q1OTAzNTg3NGIxMzVlZWMzZjJiMTBjIGxlZ2FjeS10cnVuaworNjQ5NTkgNzQxOTU0OTllOTA5M2NhNzVlYzExZjFhNGI0ZGI1M2VhOTIxNDM2YyBweTNrCis2NDk2MCBkNGU0NzMyOTFhMTdjZmIzNjc5ODY5Y2Q0ZDY2MTk0OGU3ZmNhNWFmIHB5M2sKKzY0OTYxIDJmYmUyOGRlY2EyYTI4NGNkODQzMTE1ZTQyZDEyY2I4ZTU3NmNiM2EgbGVnYWN5LXRydW5rCis2NDk2MiBmOWI4MGE4MjBhMjU2OWNhYmQ1ODJmYzk4YTQxZDlkZDk0NDY0ZmQ4IGxlZ2FjeS10cnVuaworNjQ5NjMgN2Q1NzBkZjVlOTBhNDEzYmUxNzg4NzAyNzlhNGVlOGZiYTQ0MmI2MyBweTNrCis2NDk2NSAyZWUwOWFmZWUxMjYwMjUwZmQ3OGQwMjc1Yjc3ZWVkZWE1YmZmM2FiIHB5M2sKKzY0OTY2IGRlZDIxNzA0MzcwN2MyZjVkNDM2NWJkOGQ4NzkyNzk0YTBlNDRjMDQgbGVnYWN5LXRydW5rCis2NDk2NyBmNGU3ZWY0MzI5YTk1N2U5MmFmYjExYTRmMGVmYzgyZGM2ZWU2ZmQ5IHB5M2sKKzY0OTY4IDFmZGJhMDk3OTMyYWY4NmZhNDE2ZTgzM2E3MmQ2Y2JkOTIxNTE4ZjEgbGVnYWN5LXRydW5rCis2NDk2OSBmODcyM2ViMTA1YWNkNWZhZGUwZDZlNmJhZjUzMjI0MzIxM2I3Zjk1IHB5M2sKKzY0OTcwIGUyNmM3MjRkNWUyM2UzNzQ4Zjg2ZWU1NzU0MGM4NjJlNDRiYWNiNDggcHkzaworNjQ5NzEgOTE2ZDMzZWM3YjVhZmVjYzBiNDNkZDNjNWM0NDgzODRmMTI1ODIxOSBsZWdhY3ktdHJ1bmsKKzY0OTcyIDQzMmQyNzgwOGJkMWVlNjM5M2E2OWFmZGI4Yjk2Y2Y1NGQzYzkwNWUgcHkzaworNjQ5NzMgMWYyNGNlYzBmMmUxZDY4ZDI2N2QxNzgxODZlYWYxY2NiMTM4Y2NmNCBsZWdhY3ktdHJ1bmsKKzY0OTc0IDk3YmE5MzZlOGRmODRjYTQ3YjBjOTYxZmYyMWY1ZTYwOGI0YTU3NTAgbGVnYWN5LXRydW5rCis2NDk3NSBkMDQwYTNiNjNkZjQyNTg4NjdhMTZhZTA5YmQzY2QxM2Q5Yzg2ODk2IHB5M2sKKzY0OTc2IDg3NWJlYjRhZDg4OTE1MGE2MDU4MjBmNDNkNDZlNDE1ZDE1NGZkNDcgbGVnYWN5LXRydW5rCis2NDk3NyAzNTAwNGQ5YmZkMTU2MDQwNDUzMWFmZjIyZGI5NTkzNTQ0M2I5NzVmIGxlZ2FjeS10cnVuaworNjQ5NzggZGEyZDM2MzM3OWYyNmU0ZTQ0YmQxNGRhZDg1YzEwMGYyMDQ0ZTRhYSBweTNrCis2NDk3OSBhNDQ4MmExYTMwYzZkOTNjYzMyMzQzYzhiMTI4NmVkODI3NWVlN2I2IGxlZ2FjeS10cnVuaworNjQ5ODAgMWUwMDkxNzA4ODc1YTc4NTEyZjQxMzczNTQzODI4MTBlYThjOWUzMCBweTNrCis2NDk4MSA5Y2IyOGFkNWE0MWMwMDEyNjkwZTU5NzE1OTRiMjViZTU2MGMxMWExIGxlZ2FjeS10cnVuaworNjQ5ODIgMDFmYmUzZmM4ODNlMGFlYjFlZGUzMTQzODJiYTkzYjQzNjQ2NzY5MSBsZWdhY3ktdHJ1bmsKKzY0OTgzIDUxYzBkM2EwNzFhZDAwNzgwNmZjN2Q1ZGZkZmNhMjJhYzNhOGMxODggbGVnYWN5LXRydW5rCis2NDk4NCAzZmE0NGU1ZTRlMmIxZjJjZDZkOGQ0MjU4MGQ0NWY3NDllMzg5ZTBiIGxlZ2FjeS10cnVuaworNjQ5ODUgYzY2MmU4Y2ZmZGRmNjFkNWI2ZTRjNWRhYTY5OTJlOTQ0YmYwZmI3NSBweTNrCis2NDk4NiBlZmY5ZDExYzQ3NjI2YWJjZTA3MjY3YWIyMmNlZmU4ZTU3MzQ2ZTRlIGxlZ2FjeS10cnVuaworNjQ5ODcgM2EzYTVhNDkyMTQ3MWMzNDgwMTQxZmRkYjQ1N2Y3MWNhNWIyYjQxMSBweTNrCis2NDk4OCAzYmIxZjhiYmEzMzY3NmEzNTk3N2E5MzY0ZGMzY2ZjOTE5NjJhMjZhIHJlbGVhc2UyNS1tYWludAorNjQ5ODkgYmJkMGM5MDAyN2JmYjc3YjQ2OGNlZWYzMTVmYjFmNjJiMjU3YjdjNiBweTNrCis2NDk5MCBiZDQ4NDEwNjljNjg0ODU4YjI3MmQyMjQ4YWE1NWYzZTYzZmMxMDQ0IHB5M2sKKzY0OTkxIGQxNGQwYjE1ZTE4ZTcwZjdlNzQ4Njk1MzgwNWZlNDI4NTA5YjlkNzMgcHkzaworNjQ5OTIgMzhkNzE5YmVkZGJkZDg2MzY1MWM5MGMxZDI2MWYxYTY0Mzg2NjNkMyBweTNrCis2NDk5MyBlYTIzZTdjNTYxNTQ1NmNjYzU5ZDNiM2Q3ZTAxZTZmNzIxZjJlZGI4IHB5M2sKKzY0OTk0IGZjZWZmOTU0ZjM4MDRjNjJiMWNlNjU1ZTI0ZGM5MTM0YzIzMWRjZGIgcHkzaworNjQ5OTUgOGU5ZTY1MzgzYWZiNjUwMmUzOWRlNzRkMTUwNzUwZTliMDVlYTEyOCBweTNrCis2NDk5NiA2NWU5YzAxMDJlZjljNGIwOTQ3YjkwZWQyMTU4MzhhZjFiNzIzYTk1IHB5M2sKKzY0OTk3IDkyNmIyYTE5NjA4MzE1Mjc4NTA4YjEwNWYwNzdjZWU0YTBiZTFlOWQgcHkzaworNjQ5OTggOWViZDNmMzg1NTc1OWQ1OGFlZTRlYjhiOTdjZWYzN2JkYWI4MjM0ZSBweTNrCis2NDk5OSBhY2E1YjJlNmE2NmYzMjRiNzQ1NDZlYjgwZjU0ZjIxOGM3MzU1MTBkIHB5M2sKKzY1MDAwIGY1OGUzYTBlYTk5YTE3Yjc2YzVlMDg2ZGY4OTU4OGNkNTM4MzFjZTIgcHkzaworNjUwMDQgOWFhMDc4MTYxNWZiMWM3YTc2MGFkYjZkZDVkNTI2ODFkYTAyZGI4NCBsZWdhY3ktdHJ1bmsKKzY1MDA1IGMwYWIyYmFmYjI2NDQwYjU5Zjk4NDkwNWM2NDFhMDc2NDc0YTQ2NTUgbGVnYWN5LXRydW5rCis2NTAwNiBjZWEwNjZkZWRmZGZiMjA4ODI1OTZlYTMzOTMyNzY3MWIyYWM1NmUxIHB5M2sKKzY1MDA3IGNhMGQ2MjBjZDYzYjJhNWZiZGFlZDQxYmU4NjY3NzU3ZmQxZmRjYWYgcmVsZWFzZTI1LW1haW50Cis2NTAwOCAyYmI4NjZkMjgyYmFkNTVkZmU2NWU3MTM5YjEyOTMzYmY4MmE5YmY3IHB5M2sKKzY1MDA5IDE3NzMwMmZlYWIzNjg5NTVlZWQwMzI1ZWU5NTE4ZGFmNWFhODliNDcgcHkzaworNjUwMTAgZGUwYmY2MGYxMjQ1YWM3M2U0NGJiMjVlMmM1OGVhZTZlNWQwODJhZSBweTNrCis2NTAxMSA0ZjZlZGVhNGI1NTg1NjExYzE1NGY1YTIwZmIwZDI3OTdjZDI3NzVjIHB5M2sKKzY1MDEyIGE1MTkxZDdlYTQwNTQwYzMxNjFlNWFjZDQ5NzAyYTcwMTM0YjhjODYgbGVnYWN5LXRydW5rCis2NTAxNiA1ZjZkYzJmODZhODg0NDE3NWIyYjliM2FkYzM3N2Y5MWI3ZWFiZTZhIGxlZ2FjeS10cnVuaworNjUwMTkgZWMzOGZiYmI4Y2NlYmUxZjI2NzA5MDdlNjg5MjY4MTU4ZjhhZmJmMSBsZWdhY3ktdHJ1bmsKKzY1MDIwIGI2NDVhYTJiY2E5Y2M3MTIxOWJjMjMzNDhjYjEwNDBiNGU2YzFhMTggbGVnYWN5LXRydW5rCis2NTAyMSAyZTkwZmVmMjI2ZWE2YzIwMmRhNzAxZGI2YTIwZWRhZDcwOGNmNmE0IHB5M2sKKzY1MDIzIGEwOTYzZTQ2ZjQzZTVlNzdlOTIzNTViNTU0ODdmMWY0NzZkNWUzNjYgbGVnYWN5LXRydW5rCis2NTAyNCA2NTRmZjU3NTU0MzZhZDUzYTZkYTFjMGQxMmIxNGI1NTc0YmIyYzNjIHB5M2sKKzY1MDI2IDY1NTIyN2M5ODhhNzhkNmQyMjgzYzE0YzhmOGMxYWI3NjJhNzk4OWMgbGVnYWN5LXRydW5rCis2NTAyNyBhY2FjYTExZDgwZGJjODRkMzEwOWFkODZiZDkxMDM0NTc2MDI3NjY2IHB5M2sKKzY1MDMwIDU5YWM1YWVmM2IyZDFmZjNjM2E2Yzc2Yzk0NDU5MmRlMTViMmU1NmMgcHkzaworNjUwMzEgYjJmM2RlMzU4YWY0MDgwMzI0ZDdhZjg0NWFiODIxNWVmNmI5ODAxNiBweTNrCis2NTAzMiAwOWJlYjk2YmEyMGQ0N2M2MzQxNzI3ZTFmZWM2ZmQwYzEwNmQ0Yzg5IGxlZ2FjeS10cnVuaworNjUwMzMgZWM4NWI1OGFkMmJhNGEwODBhNjAxYmIxMWI4NDc2Yjk2OThlNTJlYyBsZWdhY3ktdHJ1bmsKKzY1MDM0IDZjOGJhYzkxM2FhYmZjYzA4YzVmZDQ3ZjVjZTRlNGE0ZDZkY2I4ZTcgcHkzaworNjUwMzUgZWJlOTMyMzI5MjQ2OTk3ZDUzODEyMGEzOGFlZjdhNTZlZTJjMzgzNiBsZWdhY3ktdHJ1bmsKKzY1MDM2IDYwNGZlYmQyMDRjYjJkM2U2M2YyOWYxNGI5MWU3ZDY5NGY5MmFhNGYgcHkzaworNjUwMzcgZWM5N2I3YWFkMjMxYmVjY2Y3YTI3ODNlNGI0MDI4ODk4Y2FhOTM2NiBsZWdhY3ktdHJ1bmsKKzY1MDM4IGVmZTcwNmFhYjMyYjkxYWUyODNhZWYxYWVmY2I2OTczNDI2ZjJkY2EgbGVnYWN5LXRydW5rCis2NTAzOSAwMTgwNmNkZWRkZGUzNjA4YmYwNDE0OTQwYmVlODE5OWRjMTUyYTFmIGxlZ2FjeS10cnVuaworNjUwNDAgMDkxZGY0YzA4ZDk5YTRkZTUzNTdjOTk5OGY4NGU1NjkwOWE4YmI5OSBsZWdhY3ktdHJ1bmsKKzY1MDQxIGZiZjE2NWE3ODk1MzczY2FkMzBjYzYwZjFmMzY1ZjJiMjM3ZDVmOWIgbGVnYWN5LXRydW5rCis2NTA0MiA3ZTAzMGI2MjgyOTRkYjIyOWI4ZTA3MjQxNGI1NWM3MTU3YjcxMWQxIGxlZ2FjeS10cnVuaworNjUwNDMgYjk4MjhiMmE1MWMwZmYzNTFmMWNiNmYzNTIyZTc1Yzg0ZmU2MTMzNiBweTNrCis2NTA0NCA5MjFjNGE4MDk5MjM4MzE3ZDVkZjhmM2UyNzZmYmI5NjZhYzU4YzE5IGxlZ2FjeS10cnVuaworNjUwNDUgZDg3Y2Q1ZTczNjVhYTgyYWM3NzE3NTM0M2ZmODk3YzJlOTkxN2IxYSBweTNrCis2NTA0NiA3NjhiY2ZmNGMwZGFlZGE2NDdkYmQyNzQ0MTBkOGRmNzAxM2ZlY2Y1IGxlZ2FjeS10cnVuaworNjUwNDcgZjJjNzI3OTI1OGMxMmRjNDY2OTZjNDNjNWQ5MzQ0YWYzMTFkYjAwZCBweTNrCis2NTA0OCBkMzFkNjFmNDY0OThkMTQyMTczZmJiMjUxMjZiYWRkY2Y0ZTNlMzhiIGxlZ2FjeS10cnVuaworNjUwNTUgMzBmZGQwYzNiNmRlMWI4MjM1ZTc1YWI1ODAwOTA2ZjljN2M0NDNmOSBsZWdhY3ktdHJ1bmsKKzY1MDU2IDljNTZjZDk3ZmY0ZGVlMzA5NDY4YzM1MjMwZGJiOTg1ODVhNWY0NmQgcHkzaworNjUwNTcgMjdiY2E3ZmFjMzYyZDcxNTkwZGQ2M2JlOGVhNjE1MjU0ZjZjOTE3OCBsZWdhY3ktdHJ1bmsKKzY1MDU4IGM1OTExYTdiNWZhMDBiYzI3NWY2Y2Q3ZmI2ZDcyOWE4YjRlNWVkN2EgcHkzaworNjUwNTkgNDUyMzNkNGMxOGQyM2IwNjBhZWRlM2JiNWYyMzZmM2ViYWVjMmZiNSBsZWdhY3ktdHJ1bmsKKzY1MDYxIGEyOWM4NmNlNzY2ODcxMTEzYmUyNzZjNDI4NmIyYTFlZmY0MjE1ODEgbGVnYWN5LXRydW5rCis2NTA2MiAxYmU1YjZiZTQzY2I2OTg1NDJjODM5MjE5Njc1MjQ4ZGI4MmFjNTlmIHB5M2sKKzY1MDYzIDc5Zjg0YmMyYjE0OTIwODVmN2ZkNmMzZDdlNmFiNjU1ZTlhNGI1NmEgcHkzaworNjUwNjQgZGJjMmI3YWQwYzIyMTdjMDgwZWRjMDFjNDc5NzYxYWNkZTRmYmIyOSBweTNrCis2NTA2NSBlZWZiOTgzNzk2NDRkOWJmODRjNWUyZmViM2EyNTlhMTVhMzViNTBkIHB5M2sKKzY1MDY2IDc4YTI5YTA1MjA3OTgyZDI2ZTczYmEwMDZiM2U0NDlhYWZjYjc3NjUgcHkzaworNjUwNjcgOTkxY2FkZDQ3ZDk3MzJmMzExMjExZWViZGU5MGZhOGU5ZTdkOWEzNCBweTNrCis2NTA2OCAyMDY4NzEwYjMyYzM1MTNjMjQzNjJiMDhiNTE1OTMxNjM5NDY0YWM1IHB5M2sKKzY1MDY5IGYyODNlM2I1ZjkxN2FiMjZiNTM4ZjRlOGEwNDRmYjA3Yjc4NjlhZGEgbGVnYWN5LXRydW5rCis2NTA3MCA1NjAzODhjZGExNjNkOTNkZDhjODRmOWIwOGEyMmZlYjQ1YmRhMmUxIGxlZ2FjeS10cnVuaworNjUwNzEgN2M2ZWM3YTgwMTZhZGZhNzM0ZmI5NzIyY2UxMGRiYTY2YzlhODFjMSBweTNrCis2NTA3MiBiYTM5YjQwZWJmMmQ5MzM5Y2FiYzdkNWYwNDNhMGFmYjA3OTc3NDQ3IHB5M2sKKzY1MDczIDgzZDBkNGNiN2E2NjFjOTdjZjU5ODQ4YmM2NjE3NmY5ODhlODkyYTcgcHkzaworNjUwNzQgM2Q1MjY1MjViM2U4MWQ5NGFhNGYyZTRjNjcwODFhNTY4MzQ5OGY1ZSBweTNrCis2NTA3NSA1YzMzMDA5OTk0YjQ2MzU4ZDZlZjk4MzUzNzRkOGNlMzhkMjViM2ZiIGxlZ2FjeS10cnVuaworNjUwNzcgNmRkNTIwZTFiYzBkYjM2MWZhYTFjZDYzZWFlNDE2Yzk0Y2YzZWFkZiBsZWdhY3ktdHJ1bmsKKzY1MDc4IDRkZWFkYzhmOWUwYTM5M2VhNjFhYWRmOGQ5ZmQ5NGUzZTZiMjAxODYgcHkzaworNjUwNzkgMDMxYjVhZDU0N2U0MjdiNDM3Nzk0YjgxODFmMjkyNDkwNjJiMDgzZiBweTNrCis2NTA4MCAxNmVjNGJiMTRhNjhlYTQyOGFjZjA5ZWJmMGM5Mjk4MWRhMjY0NmYzIHB5M2sKKzY1MDgxIGE5NjgwMjliNjNkYjEyMWYwMDdhN2RjOTBhZjg4YWM1ODJkZDQ3ZTEgcHkzaworNjUwODIgODFlYzgyNjNiZDZlMjVjOWE4ODU1Y2QwY2U5YWU4ODE3MzI5NzJiZSBsZWdhY3ktdHJ1bmsKKzY1MDgzIDU4ZDRiZjMxNzI4ZmY4YjQyOTYxMWIzZjRiMGU0OTIxYjA4YTFhYzYgbGVnYWN5LXRydW5rCis2NTA4NSAxOWU3NzlkMDIwNTM1M2ZjOGNlMTkwMzU3MzRlMzc4MjhkMmQ0M2Q2IGxlZ2FjeS10cnVuaworNjUwODYgYjc0ZTlkMDliMTgwNjkzZDAwY2M1YjMzNDZjMTAxNGQxNDZjMTU3MiBweTNrCis2NTA5MCA3OGVlNmJhMjA5OWVlN2QyYzZkOGI1YjIyM2ZiOWUxMTliMzdkODVhIHRsZWUtYXN0LW9wdGltaXplCis2NTA5MSA2NDRjYTQ0ODc4ODFlODc5ZTAxMGVmNTNmZjk5NDY4ZjlhODM0MDVjIGxlZ2FjeS10cnVuaworNjUwOTIgMGVhZTliMjVhMmVkMGJkZTA1OTUxYjlhMDBlNWM5ODI3MmFkMjhkNiBsZWdhY3ktdHJ1bmsKKzY1MDkzIDhlYzE4MzBkNTcxOTk3M2U3MDczYTgxYjg5OGIzYTExMDM3YzFhMTAgbGVnYWN5LXRydW5rCis2NTA5NCAxYWNmZTQyOGU4ZjE5Yjk3OTBmNDU3ZDgyZmNkYjRjMmU0ZWMzYWY2IGxlZ2FjeS10cnVuaworNjUwOTUgY2VjNzA0Yjc5YmRmMWY1NTAxMzY5ZjE2ZDlmZDc1Mjc3MDA1OTU3YiBsZWdhY3ktdHJ1bmsKKzY1MDk2IDI5MjUxMzVjYTA1MGE2NDQ3NWRkZjMyYWIwYzM3NTRlNzk0ZTYwNjcgcHkzaworNjUwOTcgNGVjNWEwZWM2MzFhMDU1M2M1NTY4ZDM0OGJiODNhYjlkMmNlMWI1MyBsZWdhY3ktdHJ1bmsKKzY1MDk4IGU4NWQ1NjkwYzI5NmVmNmYzMGY1ZTk3MzBhYTYxYjBmZGE3Y2EwMmUgbGVnYWN5LXRydW5rCis2NTA5OSBhYzFjZDQ2YmY3ZDU3ZTliNGQ3NGYyY2YwYjViMzExMzVjZGUxYzZkIGxlZ2FjeS10cnVuaworNjUxMDIgMWIyMGFmYTQ4ZDU4YWU1MTI1NDkzZmMyMzM5ZTI5OGY3MGZjMmU0ZCBsZWdhY3ktdHJ1bmsKKzY1MTAzIGM0MzIzMDdlYzAwZGQ2ZDY4ODFhYjAxMWQ0MTRhOTFlNDg2MTExZDcgcHkzaworNjUxMDQgOTU3NmJiNzFhMDFiNDhjMGNkNDA5MzBkZTY5NzhlNjhjNTE5ZTMxMyBsZWdhY3ktdHJ1bmsKKzY1MTA2IGU3ZDY0ZTgyOTAzNTIyYjMzNjcwM2ZkZjFhOGMxYzNlZDJhNmUyZDggcHkzaworNjUxMDggOWJkYjc0MDRlZmU3ODg5ZGI4YmU3NDNlYjgyM2MzZjY2ZTdkZDE3MSBweTNrCis2NTEwOSA0OTcyNmRjYTE2ZDgxMWMzMThkYzMzZmE1MmVjYTI3YTU0NTg1NzhlIGxlZ2FjeS10cnVuaworNjUxMTEgYjkzMWEwMjI2NDY2NTZiZjE5Y2Q1NDgyZjIwZTEyZDQ4ZTY1NGNiMCBsZWdhY3ktdHJ1bmsKKzY1MTEyIGY5MDQwZDEwN2Q2NjQ3ZGVmNzlkZmUzNDkyOGU0MTM4ZTA0ODBmNjcgbGVnYWN5LXRydW5rCis2NTExMyAyOTc5NTEzMDY0MDA1MjFiN2Q3ODQwYjJjMWIwMDc1MGIwZTVkZmJmIHB5M2sKKzY1MTE1IDZlNzcxNmEzYmRlYzEwNjBiOGViNTNhYzZhNzdjMzkyZjA1NmY2MjEgcHkzaworNjUxMTggZGVjZTE3ZWRiZWQwOGFiNjljOTIyMWY4NjhiZDBkNDU1NmNmNjc5ZCBweTNrCis2NTEyMCBmZWZmZWMyNmM1NmNiOTZkYmNlYzMyZTdkOTZlNWJjOTEwZjIxMjliIHB5M2sKKzY1MTI1IDQwZGI0NWJmYzBmMmNkYmNjZGVmYTY1ZmE2NTU5MzhkMTdiNzdiY2UgbGVnYWN5LXRydW5rCis2NTEyNiA0OGU4M2U2NjkzNWE5YTZjMzM4YTU3OWE5NWYwMTJmNTQxYTc5NTU3IHB5M2sKKzY1MTI3IGE1ZmZlMzRjNzJjNDg5OWRjMGNhZTc4MzlkMmZmYzZjZmEyMzg3ODUgbGVnYWN5LXRydW5rCis2NTEyOCBjYWNhMzM4MzJhMWE1MTI3YzIyN2ZhYmY5OWQ5ODM1ODFmNWY5ZWUxIGxlZ2FjeS10cnVuaworNjUxMjkgZTZiYTZmNDE0NjliZjMwYmVkNGJlY2JiZTI1MmZhZjY0ZWJmOTBlYiBweTNrCis2NTEzMCA2YzVjZGRiMjY3ZmUyNGQ1OWQ1YjMxZWFlMGQwYjJjMmQ1OTRkZGE0IHB5M2sKKzY1MTMxIDdhZDZlNGNkNzcxMzY2ZDk0NTU4Mzc3YWUwODZiYzAwYzZlMTE1MTUgbGVnYWN5LXRydW5rCis2NTEzMiA0MGIwZTMzMThhOGJiYWRkMTc0NDdhNjg0ZGM1MjkwODQwMTk0YTBjIHB5M2sKKzY1MTMzIDMzYzZhZjY5YWUwZjE3NTMxZDJhZWE4MzQ3Njg4NzQ2ZDBmYTUyNzAgbGVnYWN5LXRydW5rCis2NTEzNCBlOTA3ZGE4MjUxNjkxOTI5ZThmZTU1ZjhjMmJkM2YyNDI5MTk5NTBkIGxlZ2FjeS10cnVuaworNjUxMzUgNDliZTg4MTJkNDMzMGFlZGU1MDBkMDhhOTYyMmE4YWJiMzVmYzZkYiBsZWdhY3ktdHJ1bmsKKzY1MTM2IDk2ZWFmYWI0ODkwMTJlZGYyZDk4MTNiZmVkMTAwYmVhNDZhYzQyNjggbGVnYWN5LXRydW5rCis2NTEzOSA3ZjU0MjJkMDQwOWY5NDQ0N2U3ZTE0ZTZkMTRiZmZjODMzYWI2NjgxIGxlZ2FjeS10cnVuaworNjUxNDAgZGZjMzc1ODNmMjA0NzY3ZWNhZTY5ZTQ2NWNlZTE2M2VjMDk5ZmI3OSBweTNrCis2NTE0MSA5NDhlNWIzMjMzMjkxYmUxNTI1NmNmMTA2ODliNTY3ZjM3NTE2ZjBmIGxlZ2FjeS10cnVuaworNjUxNDIgNDA3ZWIwMDQwMDQxNDFjYThlZjYyYWM3ODdiOTE3NDM3MjAxM2ZiYyBweTNrCis2NTE0NCA4OWY1Y2ZlYzA1NzNjNWVhMzMxMmI3OTljNTAwZmRmMzExYzhiZWFhIHB5M2sKKzY1MTQ3IDdjMTQ3YTc2YTBiMjcyNDY3NWQ0OTA0MDJiYjQ0ZjlmNmY2MGU1YjAgbGVnYWN5LXRydW5rCis2NTE0OCA4Y2RiMTgxYWE5YWZjNjc1ODA4ZTkyY2Y2NjZhZjExMTNmMjJlM2FmIHB5M2sKKzY1MTQ5IDcwYmU2OWM5M2UzM2FhNTNlOGVjMjVjMWQwYWYwMjg4MTBmOGZmNzggbGVnYWN5LXRydW5rCis2NTE1MCA0M2M2OTM0NTE0ZDdjYzM0MmU2M2EyNDI4MDJmOTJlN2M3Y2I2YjBkIGxlZ2FjeS10cnVuaworNjUxNTEgODk4OTIxM2YzODZiMjZiZTQ0ZGJiYzhlNGNkMmIxYWNhY2VlNDRmZSBsZWdhY3ktdHJ1bmsKKzY1MTUyIDY0NGZhN2EyNDBjOGI3OTYxZDZlN2FiMjRjYzJiMDkzM2FhMGUxYjggbGVnYWN5LXRydW5rCis2NTE1MyBiYjI2MzY4ODI1MDNkZDI2ZGYyZWQ3NGY5MDRmZWJiYjJhNmYwZWYzIHB5M2sKKzY1MTU1IGQyN2UyODAyMDcwOTJkODUwNmIyNTgzNzRiYTY3Y2UzOGI2Yjg4ZjQgbGVnYWN5LXRydW5rCis2NTE1NiAxZDRjYjI2ZWM4OWZhNjlkYWM3MTEzOTMxMzhiYTVlNWZkOTY2MzU3IHRsZWUtYXN0LW9wdGltaXplCis2NTE1NyA1NzhhNGIwYTUyMmQyNjBmZDEwMDg1NTM0YTI2NDM5MjgwMmM5NTgwIHRsZWUtYXN0LW9wdGltaXplCis2NTE1OCAxZWQ2OTRhN2FiNjAxNDczOTQxNDA5YzllMDYzY2UzYThmZmFkYmIzIGxlZ2FjeS10cnVuaworNjUxNTkgYTk3ZmQ1YTNiMDkwYjY5YzY5Y2NlNDFlMmQxYWZhNjE1NjhhMjViYyBsZWdhY3ktdHJ1bmsKKzY1MTYwIDYwNTM1MjUwYTYyYzZhNDBmNmRkYzUzNDdjYTNmMWVmZDU3N2VmNzEgcHkzaworNjUxNjEgNjI4MjNlY2E4ODFiZTRhODdlYzYwZGEwZWJlMmJiOTMwMDEzZjk3NyBweTNrCis2NTE2MiA3Y2NjZTJhNzM5NGEwMjgyYmU0MGFiYjRlNWNkZjEwOThkNWUwOWIzIHB5M2sKKzY1MTYzIDM2NDEwNjc5NmIyMTA0NzJlYTI5ZGY2ODI0NTIwMTlmNDdiZTUyMWYgbGVnYWN5LXRydW5rCis2NTE2NCBlY2M2YmUzODBjNWJjOGE0ODIwY2QyNDMzNDkyM2YwMWM4NjRhODQ0IHB5M2sKKzY1MTY4IDA2OGMwMGJmNWEyNGFmZmYzNjk1MTQwYjI2M2EwMmQ5NWU2Y2FlOTUgbGVnYWN5LXRydW5rCis2NTE3MSAwYTc0MWMxM2ZjODFjNmVjMjhlZjliZmJkZmZlMGJmYzBiNTZhNTkzIHB5M2sKKzY1MTcyIDNmNmQ0M2Q1NzU1Y2I5YmFmMzQwOGE0NDMwODQ3MmEyZDU5ODMyMWIgbGVnYWN5LXRydW5rCis2NTE3MyA5MjFiNjc1OWNiZGU3MDlkYjY2MmZjZTVjMWJkMDBhOTM0MDFjMzlkIHB5M2sKKzY1MTc0IGE5ZGZhMDg1MWIwNzM4YzQxM2Y2MzVlY2MyNTY3NzYwZmE2MmU3MTMgbGVnYWN5LXRydW5rCis2NTE3NSA5NzViYmRjY2M1NWVkNTgyOTUwYmUwYTU1NjQwY2Q0NTEzYmY0Y2M4IHB5M2sKKzY1MTc2IDgzMzFiYzRlODI3OGM4M2JmYzE5Y2Y4YzZlZGUzZDQ4ZDJhNjE2YzcgbGVnYWN5LXRydW5rCis2NTE3NyBiODM2YmYyNWYxNzZhMjlmM2I2MWI5Yjc4N2NiMWRhNmQwMzQyYzE2IGxlZ2FjeS10cnVuaworNjUxNzggYmEyNzY3YmQ0NjIwNTI5OTkwNjA3NmQzY2UzZTAzOTlhMDNjZTI0MSBsZWdhY3ktdHJ1bmsKKzY1MTc5IGQ4Nzk4ZDVlYzRiOTNhNTdlYWRhN2U2Y2U2MGY5M2JkNzliNWQ4ODAgcHkzaworNjUxODIgNWQzODMzZTZhYWUzMGVhMWE5ZjRiYmE5MTgzYmVlM2MzMzE0MjQ4NiBsZWdhY3ktdHJ1bmsKKzY1MTgzIDNiNWMyNjEzZWQwNWRjOTkwMWUzNGQ5NDQ4MDA4MzRjY2UwOWM1YjcgbGVnYWN5LXRydW5rCis2NTE4NCA5NmE5ZWJmZWUyY2QyYzc2NDVjZmY5Y2E5ZGY4MzNhNGE0NTQxZDAxIGxlZ2FjeS10cnVuaworNjUxODUgMWEyZjhkZGU4MWVjYzQyOGZlNGZjNmM0NjJiNzEzZWFlNjg0NmRkZSBweTNrCis2NTE4NiA3MzliYjA3MjhlZmU1Mjk5YmIzYmE3MWM4MDBkYzgwNGIxNzY5MjkwIHB5M2sKKzY1MTg3IGVhNTNlZThhODMzMzIxZDhlNzBmYzViZGUxMjc3OWJhMDA1NThkNmUgbGVnYWN5LXRydW5rCis2NTE4OCA5MGZiYmJjZTc1N2FmODcxNTFhMTdkNzdmMmNjYWRkZjNiOTNhY2Y0IGxlZ2FjeS10cnVuaworNjUxODkgOTU2MWFhZWRmYjczOGYwOWZiYWM4YTJhMjU3NzljMWM1MzYzMWY3NSBsZWdhY3ktdHJ1bmsKKzY1MTkwIGRkMzE0OTBkM2ViNmRlODIwNWQ4NmRlMDA2Y2FhZDAwNWMxZjkwZmMgbGVnYWN5LXRydW5rCis2NTE5MSA4MjFlNzNkN2JjYzU0YTRiODVjYjhlZGQzOWU3MzAxNWJlYWYwYjYzIHB5M2sKKzY1MTkyIDY3OWUzYzI3MmVjMjYyZTJkYmYxZDgzOTc3OTlhMzFmOTIyZWMyMzcgbGVnYWN5LXRydW5rCis2NTE5MyAxMGY0MWFkYzBkMjRlNjAyMjNjNTFhMWRjOWRiZGQ2YjZjMjliMzhlIGxlZ2FjeS10cnVuaworNjUxOTQgNzYxZGNhYWFhMDllMjEwNTk5MGNkZjhiOGY2ZDJkY2YyYmE0OWZkMiBsZWdhY3ktdHJ1bmsKKzY1MTk1IDZjYThhZjY0NzQ3YjUwOGM2NWM4MDkxNDE1MzlhNjliNzZiZmE5YjEgcHkzaworNjUxOTYgMjBiNGI4M2E1NGFlZmYxMjAxNDVhZGQ1ZTlkOTkxOWM3MWRjMjNjOCB0bGVlLWFzdC1vcHRpbWl6ZQorNjUxOTcgZmNiZDlmNGYwOTVjNGYwMGUwODQ4NWFhMmNkMWU4ZjE3MGE3YTVlNCBweTNrCis2NTE5OCAwNDQxZDMwZDY3MmJlMDY1N2RkMmU1ZjJmODRmY2QzNjNmYWYzNTAyIGxlZ2FjeS10cnVuaworNjUxOTkgODM3NWIzZjY0NzBmNjBiOTQxZDFmYjBiYzBjZDc0M2I3YWM0ZjJkNiBsZWdhY3ktdHJ1bmsKKzY1MjAxIDBkMzdhYjAwZjZkNmM0NmQ0OWI0MDZkNjhlNmY4ZWVmMGU4NDE0MjggcHkzaworNjUyMDIgYmRkYzFhMTcyNDdlM2Y5NTc2NmExNDMxNTdhMDg1Y2Q4M2RjZmNiZiBweTNrCis2NTIwMyBhYjIyMTc3ZWI2ZGM0OTU2NjNhMTRkNTY0NWE3MThmNmE4YTZmOTM4IHB5M2sKKzY1MjA0IDQ1Zjg4ZDdiZjA1NzZjMzRkYzRhM2RlNjQ4YmFjOGY2NjRhYmJjZTkgcHkzaworNjUyMDUgMTc5YTdmNDE2MjQwYWY1ZjYyZjdjZjlkZTljZmNkNjA2OWY3NjU1NyBsZWdhY3ktdHJ1bmsKKzY1MjA2IGI1MWNkNWQzNzk1Y2ZiNTE4Y2U1NTAxZTZkMWI2N2FiY2RhMWVlZDIgcHkzaworNjUyMDcgM2VmYTIwOTE2YTkwNDNmOWNkYjJjNGZkMjhiMTQ1ZmUxYzA5MDI2NyBweTNrCis2NTIwOCA4ODdlZTZiZDkyODRmYjliNmVhZTQxZmJjMjNlYWI0NzMyOWVlN2VmIHB5M2sKKzY1MjA5IGI2ODcwNDQ1N2VmZWYxMGYyNzc3NTZkMGJiN2RhYTY5MjQ5NDk2YmYgbGVnYWN5LXRydW5rCis2NTIxMCA3NTlhNzMyMzU5MWViZDk0MGQzNzhmODEyN2RhZTdmMjU0NWIxNTZlIGxlZ2FjeS10cnVuaworNjUyMTEgMzg1Mzg1NmY3YzUwNTVkN2E0MzgzN2YwMmQ1MzRlNjM3ZDc1YWZhMCBsZWdhY3ktdHJ1bmsKKzY1MjEyIDA4ZGRjYWQ4NTEzNDhlYjRmNzExYTQ0OWFjMjBkZjQ2YTEwNGNlMjIgbGVnYWN5LXRydW5rCis2NTIxMyAxYjFlMWY4NzJlMDk4MzFkYTkyM2E5Y2JkZWE3ODhmNGY3ZmQ0N2U3IGxlZ2FjeS10cnVuaworNjUyMTQgMDdiODk2NTMxNDVlMDMyYThiNDg0MDI3NmEyZDBiNjU3NGY1OGM3ZCBsZWdhY3ktdHJ1bmsKKzY1MjE1IDQyMDNiN2YwODdjMTAyMzY0YmE5ODMxZDRkMTVmNGU1MjI2ODkxZTcgbGVnYWN5LXRydW5rCis2NTIxNiA3NGZiMGRmMjlhNDg3NmEzNzU1MmIyOTk1N2ViNjg4ODQ1ZGI4MmM3IGxlZ2FjeS10cnVuaworNjUyMTcgMjkwMDc4ZTliNmEyMDJlZGM1MjNiNTViOWY0ODE0NjhkNWE3ZWI4YSBsZWdhY3ktdHJ1bmsKKzY1MjE4IDFjNzhhYTdlYTMzNjBmMzkyYzRmNmY2ODdkZmRjYzc1N2RlYTQ4M2YgcHkzaworNjUyMjAgMWNlN2U1YzVhNzYxN2U5NjZiYjc0MTExYzg5MTRlNGNhZjM3NjRhZiBweTNrCis2NTIyMSBkOWQ0OWY2NzM4OWY2Mzk5ZGIwODg0MTc2NWRmMTI4NTU3ODY2OTRlIHB5M2sKKzY1MjI1IDEwMWJiMThjMTBkNTc1ZGNjMzBhMjI0NDFmMzk0MzVhNTUzZmY4NTEgbGVnYWN5LXRydW5rCis2NTIyNiA3ODE2MzBlMjU1NDBhMzU2MjhjNmE2NmI5NmYyN2U4MzZhNWY0M2NlIGxlZ2FjeS10cnVuaworNjUyMjcgMzVhNDYyZmY5ODczMTczZmZiNzQyYzJmNmYyYjJhMDI0YTkyZTRhMCBsZWdhY3ktdHJ1bmsKKzY1MjI4IGEwMjhjMGIyYWNlZTc4OTYwMTJjZDE4NWUzZmIxYWQ5MDFhOTYyMTMgcHkzaworNjUyMzAgODYyYzBlYWIxYzUwOWI1MGUwYWZjZDEyMThkYjQ2YmI0MThkZTFhNCBweTNrCis2NTIzMSA4ZmYyNWRiMDEwNzgyOTIxYjI5NjdkMjIyYTJlOTJmNDUzNzg2NjQxIHB5M2sKKzY1MjMzIDE4MmZjYTAyNWNhMDRkNTVjYzRhY2Y3ZjliMTgzMzgzYTYwZDAxODUgbGVnYWN5LXRydW5rCis2NTIzNCBiNzFkNzZiZjQ1MDY2YmQ4NjkyNzFiYTIyMzUwZmY1NDQ1NjVkNGY0IHJlbGVhc2UyNS1tYWludAorNjUyMzUgOTcyZjQ4OWFlMzU2Zjc1ZmRiYTA2NDMxODFkMzI4OTIwODdjMDgyOSBsZWdhY3ktdHJ1bmsKKzY1MjM2IDU1NjQwMTUxZTBmY2MwZWQ4NDRiNTdjOTg0MzAyNWRlNjcwYTg0M2UgcHkzaworNjUyMzcgYmUwN2MzMDgzY2VhZTI5MGI5MDM4YWFiOTFhZjU2MGQ2YzY5NzY4ZiBsZWdhY3ktdHJ1bmsKKzY1MjM4IDc0ZWVmODViNGIyY2RkZTc2NGZhZDE2MGQ0MjRkMTBhYjRiZDQyYTcgcHkzaworNjUyMzkgMzAwZGY2YjFlNGIwZDc3ZjQyMzQ0YTZjOGY3NGVjMDM0ZDY3NTYyYiBsZWdhY3ktdHJ1bmsKKzY1MjQwIDlhNmY4ZmIxNzVlMDU3YjEyMWY4MjZlYWZhNGY3MjdmZjQyNmIwNDkgbGVnYWN5LXRydW5rCis2NTI0MSAzMDQ4NWJjMTcyNjgwNjE1YTFlYzk3YTIwMjI0YWVmMjRlZmM0ZWZhIGxlZ2FjeS10cnVuaworNjUyNDIgNDk3ZDIyNDBlMWYwZTk2YzkxNGU1NjQ0ZTM5NGU2YmJkMDdlMDU1NiBsZWdhY3ktdHJ1bmsKKzY1MjQzIGQzZDU4NjAxOWFmZmYwZTc1ODk4ZjgwMjUxOWJmMjYzZDY2Zjk5Y2UgcHkzaworNjUyNDQgYjIxMTdiMTgwNDljNDJhMGM2NzgyMzdkYjBmNTExZmEwN2JkYWJkOSBsZWdhY3ktdHJ1bmsKKzY1MjQ1IDYxM2IyNDAxNGFmYmExY2E3OTU1YWJjYjgwZWU1MmYwMGU0ZWI0YzggbGVnYWN5LXRydW5rCis2NTI0NiA3NjdjYzg5ZTNmZGVjNTkzNmM0NmM5YjcwOTJiNjM1M2IwNjk2YmYwIGxlZ2FjeS10cnVuaworNjUyNDcgNGE0NjIxYTY4N2E3ODdlYjNmODNiNjg3ZTYwMDQxODlmMzNhZDg1NyBsZWdhY3ktdHJ1bmsKKzY1MjQ4IDJkMGUwNDAwMWU4MWMzNmI2NGU5MDczNjRiYTk3ZDVmZmFlYWIwZWEgbGVnYWN5LXRydW5rCis2NTI1MCAyZmI1NWZmMDYyNzVlNjVjNzA4MjNmNTk1ZTA0ZjI5MjRlMjc4NzY1IHB5M2sKKzY1MjUxIDdiMDg0NDgxMzM4OTNiZTliMzI0YWIxMGFjZGQzYTY4OTE2ZTA0ZTEgcHkzaworNjUyNTIgNzE1MzJhZDdmM2VkZjYwOGQ5YTFlMTQ0OTNhODY3NjA2NDRkN2IxYyBweTNrCis2NTI1MyAwYzEyYTM3ZDVlNWQzZDQ2NDkzY2VhYzkxZjcyMjdjYTNkZmZmMzVmIGxlZ2FjeS10cnVuaworNjUyNTQgYjhkNGRiYjI5MzhhNTlhMWY5MzBjNmMxNDJiYWYzNDQyNzQ5OTQ2ZSBweTNrCis2NTI1NSA5ZjllNWZlNjNlYzJjZDc0NTkyYmE3YmRkM2M2ZDMwNTg4YzdiYTIwIGxlZ2FjeS10cnVuaworNjUyNTYgMzExMWI2NTQzZGQ5ZThhZThlNDBmNmJiMzVkMTExMWNiY2U4ZDE1OCBsZWdhY3ktdHJ1bmsKKzY1MjU3IGYzYmYyZTliYjg2OGM2ZTUwY2YwOWI2MjU4MmVhMmFlZTYwNzQwOTUgbGVnYWN5LXRydW5rCis2NTI1OCBiMDFlMjBkMzczMDQyNTg2MjY5ZmUzNWE5OGFjZTJjMzE1ZGM2MzYzIGxlZ2FjeS10cnVuaworNjUyNTkgZTNkYTg2OWRlOThlYWIxNWU0ZWYwY2QyYjc2ZjJhYTE1ZDNjMWY2MiBsZWdhY3ktdHJ1bmsKKzY1MjYxIDJkYTQyZGNiYjhjZWJiMDRlZGM1MDJkNDIyNjcxNWY2M2QwZWI5NjAgcmVsZWFzZTI1LW1haW50Cis2NTI2MiBjYzg0ZWU2NjY3YjcwZTU4N2Q1MWU3ZTRhMjI1YmEwNzczNjdkYWVjIHJlbGVhc2UyNC1tYWludAorNjUyNjMgOTVkZjExOGY0MmM2ZjIxYjAwN2FhNWU4MTAxYmFhOTNiN2I3NmI4NiBsZWdhY3ktdHJ1bmsKKzY1MjY0IDE1MWMxY2Q5NGE0MDJiYzBlNGUzZjNlMGZhODMzNDE1MTdlNDRhYmUgcHkzaworNjUyNjYgOGFmYzRlMmM0YzAyMzZkZDU5ZmY2NjVmNmVkNWE0Y2MwM2I5NTllYiBsZWdhY3ktdHJ1bmsKKzY1MjY3IDQwYTU3M2YwMWZjNGEyZDE3MWZmYTE1YmI1YTgxZThkN2U2YWI0OTcgcHkzaworNjUyODQgY2NiYzg3NzRkODJiNTVjNDFmYzcwMTIyNGE2OGNjMTFiNjZmYjcxNCBsZWdhY3ktdHJ1bmsKKzY1Mjg1IDc5MWE2MzFhMmM3YzgyODE5Mjc4MTFhZmY5NjYyZTY4ZTdjYmEwOTcgcHkzaworNjUyODYgMjYyZDJlYThhYjUwZGE1YmY0YjI2MjYyNTNiOTRkZWVkMTc0YzRhNyBweTNrCis2NTI4NyAzYTI2N2ZlNzM4M2M0ODExMjY2MDcyOGRlZTMxODc5ZDg5NDI1ZWU1IHB5M2sKKzY1Mjg5IDUwMjI4ZDJiMzJjMTQxMTRkZjJhMmFlYmU5ZWFmZDI0Y2VkNDA3ZjMgbGVnYWN5LXRydW5rCis2NTI5MiAyMWVhYzkxMzgyNDk1YmJiZTAwODQ4MTE3NDNkOTk5MmM2YWQ2NmUwIGxlZ2FjeS10cnVuaworNjUyOTMgMGM3ZmFiMGIwNWMwMzYzNzZiM2U0Yzc5MTg1Y2Y3ZDdlMThjNTAxZiBsZWdhY3ktdHJ1bmsKKzY1Mjk2IDY4OWI1ZThhZTY5ZDRiMTUzNWExZjZhODRhOGU0M2QzYzk3NjA0MzAgbGVnYWN5LXRydW5rCis2NTI5NyAwMDgzNDI1MTllODY1Njc3N2MzMjM5M2NmM2U4MWI4YzcwOGQ4OWQ1IHB5M2sKKzY1Mjk4IGZkMzA4ZjAzOGFmYmE3OTdiOWNiNTBhZTRhYzkwZjQwZDA1MTYzYmUgcHkzaworNjUyOTkgYjQwZTEzYmNiOWVhNWU4NjUzOGNmNzQ4YjVlZGZiZDNmZGJkNzExOCBsZWdhY3ktdHJ1bmsKKzY1MzA3IDQwZTk0OWE2ODM0NDY1YTQxY2RmNzY0NjhkZGJhOTljZjY0NjY5M2EgbGVnYWN5LXRydW5rCis2NTMwOCA4ZDA1ZGRhNzM1Zjg3OWM5OTQwZGE3ZTUzZWM4NjVkMDJmODViNGRmIGxlZ2FjeS10cnVuaworNjUzMDkgYjM1Y2U5NTRhMzkyMTBhYjk2NDRmOWFkNjEwOWYyZjVkMjYxNzgyNyBsZWdhY3ktdHJ1bmsKKzY1MzEwIDhmMzYyMGY1ZDY4YWFiZDU5OTBkMDlmYzk3OTBlNjMxOWIxYjBhMGMgbGVnYWN5LXRydW5rCis2NTMxMSA5MGMyNWIzNmUwYWQ2OTU3NWNhYzg4ODQ2MGNjNWJkM2U4YzJiOWUzIHB5M2sKKzY1MzEyIDgzYzdhOGZhZWI3OGU2OWI3ZDVlZjY4NDE0MmIyMTU4MWVjNTUyYjMgbGVnYWN5LXRydW5rCis2NTMxMyAxMmUzYzM4ZDMxNmUzOGRjMTNjMTY3ZmYyMGJjN2NmMzgyMTQwYzUzIHB5M2sKKzY1MzE0IDdmODIyYjVkMzY3MDE0N2Y5YzMxNGZjZjg2MzBhMWVmMTI2NDA3ZWYgdGxlZS1hc3Qtb3B0aW1pemUKKzY1MzE1IDY3ZDE3N2FhYjhhN2M1ZGIwM2EyYWUwNTVlODMyMGM5OTEwOWIzMDEgbGVnYWN5LXRydW5rCis2NTMxOCA4YTEzMzY2M2ViZGUwOWY2OWZiNTNkMmY0YzM4MDU2OWEwMjgxMDFlIGxlZ2FjeS10cnVuaworNjUzMTkgOTE1NDU1M2Y4NzZiYzdjMjU2MDc1MzMzMDEwZTQwODYwOTJmNzdkMyBweTNrCis2NTMyMCAwZmJkZGMwNGFlZTE1OWE0ZmNlMjE2MmJkZGIyMTVjYTY2MjE2YmQ4IGxlZ2FjeS10cnVuaworNjUzMjEgNWRiNDMyODRlYTdhYWMyNmExNDdjNzM4ZTVhMDgwOTg3MzYwMDAyMyBsZWdhY3ktdHJ1bmsKKzY1MzIyIDFlYzM4YjcwN2NkNmIxNDllNTc5ODdmMmNkODNjMzhiYTgyZDRkNjQgcHkzaworNjUzMjMgNmYyMzJmY2ZiNjU3NmM1NWQ0ZmFkNzU0YzU4ZjA5YTg3YmI3MDZmZiBsZWdhY3ktdHJ1bmsKKzY1MzI0IGJlNzUyMWFmODQ1YTBlODRjNmM1MDg5NDE3ZTViMDM2ZmM1MjljNTggcHkzaworNjUzMjYgMzQ3NjAzZjc5NGQxMWI1NGIwOTkzM2IzZDdlOTc2ZDM2ZDZjMTMxZCBsZWdhY3ktdHJ1bmsKKzY1MzI3IDFkZTcxOGEzMTAwNGUxOTY3ZTVjZDUxMzJjZDRlZDZiZDY1NjRkZTEgcHkzaworNjUzMjggNGNlYmI1Yzg0ZDdjZmJhODZmODFmNjA0NzY4NGI4ZTlmNmU4MDRjYyBsZWdhY3ktdHJ1bmsKKzY1MzI5IDAzNzgxOGNhZmMzOTM1OTk2MDZlYTBmOWMxNWVmNTk2MDk5ZjQ4YTUgcHkzaworNjUzMzAgNGMxMWZjM2IzM2EyMzNmYjRjMjZmZjMyM2YyNmM3ZTVjZDkxOTQ1YSBweTNrCis2NTMzMSAzNWIxYTIwNDcwZGIwNzljMDQ1N2M2YTRhYjdkOTczNjcyZTY5ZTEwIHB5M2sKKzY1MzMyIGIzOTAxYzU2NjBmNzFkMGE3MmMwZjE0NTU3MDdiMTRiMDI0NTkxNGIgcHkzaworNjUzMzMgMTg3Mzg4YzExNTA1MGM5OTEwNDA4MTc1ZDJmNWYyMjRhOTE2MGJiMyByZWxlYXNlMjQtbWFpbnQKKzY1MzM0IDBhYWZkMWFlNTEyMDhhMWI2Y2MzMTIwYmVhYWIzYWRkZjU3YzQyM2IgcmVsZWFzZTI1LW1haW50Cis2NTMzNSBjNGQyNGZjOGJhOGEyZWM2NWIyYTQzZDg4YTNiNTJkNTAwZGM0MjIzIGxlZ2FjeS10cnVuaworNjUzMzcgMTNiMmUxMWYzY2Y1YmQ3NDA2ZGFmYTQ4ZGYxZmNiYzM3ZDBkMGQyMiBweTNrCis2NTMzOCBmZWM5ODVjYmY1M2ZhYjA1ODM3OTk1MzcwMDEyNDY0ZDk3MDY5ODQ3IHB5M2sKKzY1MzM5IDQ1NTAxNDRiMTU2MDY2ZmZmYzhmYTZkZTg4NDgwYzMxNTU0OTZmMDAgbGVnYWN5LXRydW5rCis2NTM0MCA1NDI4ZjdmYTE3MWNmMWJhOTYyYzhkOWI2NGQyMjRmM2FiOTM2MTk3IGxlZ2FjeS10cnVuaworNjUzNDEgZGU3NWU3MjgwYjdhYTYxOGNjYTVkYmY3MWJlYzJlMmY5ODA1ZjdiZiBweTNrCis2NTM0MiBhOTRmMTM2YjUyODM4MmMzOTQyODM4NTEzMjNjODU3OGMzMDAyOTBkIGxlZ2FjeS10cnVuaworNjUzNDMgNjMxY2Q5YWU1YzhlMjJlMjNiN2FlMmZmNmVlNTJmYWU1NGQyZjE5NiBweTNrCis2NTM0NCA0ZmVjYzliOTlkOTg1MjJkZjJkZjU2Mzk4N2Y3NzE1YzkyYWZjOWM1IHB5M2sKKzY1MzQ1IGE0NzZlZjVlZWJhZGJlNDI5NzZlMzNlZDg4ZDVhNTU4ZTA2ZDljYTMgcHkzaworNjUzNDYgYzU5ZTkwZDhkMWM3MDgyMWNlMTIyNGU1ZjI1YTc1YWMyNGRiNDliNiBsZWdhY3ktdHJ1bmsKKzY1MzQ3IDNjMTU1ZDc4MTNjYzE3NWNiOTE3OWExYjJmNGJkMTQzNzllZDJkODQgcHkzaworNjUzNDkgYzJiNWEwYWIzMDcwNjM4NmI5ZjNjOTNhODNkZTk0NzRlZTQ2MjZiNiBsZWdhY3ktdHJ1bmsKKzY1MzUwIDcwZDQwZjlhZDFkN2FjZDI3ODRlMzY3NTZjNGI4NjlkYjdjYzMzODEgcHkzaworNjUzNTEgMGQyZDI2ZmZlMjBlYjI0OGFjMzZlMDI4MDE0OWI0OTMxMGY3Zjc5YyBsZWdhY3ktdHJ1bmsKKzY1MzUyIDE0ODAyMGI1YzUzMTJlMzk4MDNhMDFmYmExNjdjNDU0OGRmNGQzMGMgcHkzaworNjUzNTMgMTE0MDc3NGY2OWE1NzJjOTVhNDIwMWIxY2E5NDM4ZmI5ZGM0NWY4YyBsZWdhY3ktdHJ1bmsKKzY1MzU0IGYxZmM3ZDkzNTA5ZDNmZWQyMTkwMTFhZjU0OWE4NGEwZmU1YzNiNWIgcHkzaworNjUzNTUgNWQyY2Q5NmExOTZiZmQyMmE0MzgzYzA1NjhjYWMyYzMxYjc3MTg1MyBsZWdhY3ktdHJ1bmsKKzY1MzY1IGYxMjFhOTYzYWI2OTRkYmJmMzc1OGNiZGFmZjQ2YWIyZWMzMTA0OTggcHkzaworNjUzNjYgZWZmNGM5NGMwMmNkMWUxMmY4OGIwNTFiNDVkNzM4MGQwNjgzOWYyZiBsZWdhY3ktdHJ1bmsKKzY1MzY3IGMwZGYxYzY0NzdiYjkyNzdhZjM0OTI5ODgyNmEyOTI1YTZhNDA5OTUgcHkzaworNjUzNjggOTViYzBjZjMxMjAzY2Y4NzcyYjczN2QyMDFlY2Y4ZDE4NDExYjM5MyBsZWdhY3ktdHJ1bmsKKzY1MzY5IGNjMzcxNTcwZTE0MTMyM2ZhMDQ3ZDM4ZTcyZTI3NjUwNDIxNmM2ZTEgcHkzaworNjUzNzAgMTM4MTc3NDJhNzgxMGJhMTQzNmQ5YzgwM2M3NjQzZTY4Yzg1OWExMSBweTNrCis2NTM3MSAxOWI2YzYzNWY1YzFkMzMwMGU2OTEzODM1N2E5OGZhYjM2YWY4ZjQwIHB5M2sKKzY1Mzc2IDE1MjJmM2Q1YmU2ZTdhOTQ2OTczNDNhNTEyZWY4YjNjNzQwMTNkY2IgbGVnYWN5LXRydW5rCis2NTM3OCBiOGE4ZDExMzA3NmZiOTQ1ODRmOTE5YTk1MWM1ZDMzZTc0OGJhMTA2IGxlZ2FjeS10cnVuaworNjUzNzkgNGI3MmM3ZjYzMDc3NDVmNzg4NmJjZjNlZmNhOTlkODg3NzMyMjI5OCBsZWdhY3ktdHJ1bmsKKzY1MzgxIDEzZWJiNGI1ZDg5YWE4OWEwNjYxODZjYmQxNGM3N2RkNTUxN2Q5MmYgcHkzaworNjUzODIgNDViY2Q5NmU1NmQxZDQyMWZhZTc2YzZjNGEzMjdjN2Q4NjhlNDAyYyBsZWdhY3ktdHJ1bmsKKzY1MzgzIDBhZmYzYmYwYTM0MjZmMTI0NDE5Yjg0MDdjYWM4ODY0ZmJhMWI1MzQgbGVnYWN5LXRydW5rCis2NTM4NCA2OTIyZjg0YTcxNThmOWZjOTE1OGM0ZDc0ZDJmNGIyYTdkZjcxMzNkIHB5M2sKKzY1Mzg1IDZiN2M2MTAyN2ViMDRmYTM3MThlODdkYjY3OWNhZTU5ZmRlZDEzNzggbGVnYWN5LXRydW5rCis2NTM4NiA1Mjc5ZDc5NjEwOTM3YTViNGM0NzUwMTE5NzgxM2JlOTQzZjdkM2JiIGxlZ2FjeS10cnVuaworNjUzODcgNGIxYmE1MGQzYmRmN2FkZTI1NWJjNGRmNzkyNTUyNzkyOTExYTIzNCBsZWdhY3ktdHJ1bmsKKzY1Mzg4IDE2NjBiMzM1MzgyMTAyZGM2Y2IzOTA1MTcyMTUwYWE0ZTU3Mjc4MDMgcHkzaworNjUzODkgZjhkMmEzMTg1ZDlhYWZmM2MyZmExMmI4Nzk3ZGIyNGM3MjliYjRjNyBweTNrCis2NTM5MCA0ZjQ2ZjNmNzIzMWJmZjg5YzM5ODI5ZDhkN2NkNTkzNDM5OTZlMmQ3IHB5M2sKKzY1MzkxIGQyMWMwYTJiNmIxMWE0ZTlmNjliNDMyZDhjNWJiZWZkOTgzMTNlZTQgbGVnYWN5LXRydW5rCis2NTM5MiAwMDE4YjE4ZjVmNDY0MGE3Mjg3NTVlNzU3NzU1M2U5ZmUxNDAwZWViIHB5M2sKKzY1MzkzIGYwYmQzN2VhNjk0MDVjYjQzNWVlMWNhMWJiZWVlMzNkY2ExNjRlZWIgbGVnYWN5LXRydW5rCis2NTM5NCBiODk0NWQ4ZjAwZWEyNTMwM2Y4N2FkYWI0ZGJmM2NmNDY0YWU3MDEzIHB5M2sKKzY1Mzk1IGE3YmY1MDNjODU3ZTljN2VmMjNhZmQ4YjcxYzUxZDE3ZGM2MjdjNDUgbGVnYWN5LXRydW5rCis2NTM5NiBlODc5NmI1NWY4MWIwOGQwNWYyZjcyYzYxNGY4MWJhMjVmNDhjMDM3IHB5M2sKKzY1Mzk5IGJhODRjMWUzZGQ2MGNlZmIzY2E3NjFmMmIxYjFjODc3MGQ2NzgyYTggbGVnYWN5LXRydW5rCis2NTQwMCA0YTRjMjBhMjE2N2JiMTgzZTU3YTg0ZTYxYzU5MWM1MDljOTliODZkIHJlbGVhc2UyNS1tYWludAorNjU0MDEgZDU4N2FhNWU4MjRkNjUxOWJjZGE1YjNhY2M0ZjA5ZmRiMGI1YWVmMyBweTNrCis2NTQwMiBmZWRkYWYyMWMyYTQ5ZjdkZjk0Nzc1ZTZmZWNlZGNmMzdkMGE3N2QzIGxlZ2FjeS10cnVuaworNjU0MDMgNzQ3NWIwZmNjNWZmMmJjM2RlMzBlNTM3N2M3MjVmMGJhYjU0ZTI3MyBweTNrCis2NTQwNCA2NTQ0MjU0NjE3M2VhNDI4MjAyNDE3ZTg0ZGM2NjliMWU0MmNkY2QwIHB5M2sKKzY1NDEyIDc2M2ZmMWJhOTFjN2YyZDNlNTliMzMxOWRkOGIwN2M5NzE3YzcyOGYgcHkzaworNjU0MjAgYmY1MDA4NWZiY2QzMmQxYzQyZDQzZTZlYzM3NjkwNjMxZTA0MGFjMyBweTNrCis2NTQyMiA5NzYwN2ZjYjdiMjYxOTYxZWI2NzkzNjFjYzU3MTk5NTVlY2YwYTRhIGxlZ2FjeS10cnVuaworNjU0MjMgY2M0M2I5OThmNWI1MTgzY2IxYjEyMjg0YjVjOGFkYTVjMTM0NTcxZCBsZWdhY3ktdHJ1bmsKKzY1NDI0IDQzN2RkYmJjZGQyOTRiNzM1ZTY5MGE0NTAyZjQzY2NhMjBmNDkwYzggcHkzaworNjU0MjUgNGU2YTBhZTFhOGU3YWFlOTY4NDc0NGY2YTJiMjQxMDA5MDNhYWNkMCBsZWdhY3ktdHJ1bmsKKzY1NDI2IDc0Y2M5MzJhZDhkYjY4NmI3YjBkMDhhN2EzZWI5YjFlNjM0ZDIyN2EgcHkzaworNjU0MzAgOGYzMmIxMzI2OWI0YjFhZTk0N2RmZTgwNTZlOWZiZTAyZDhkOGY5ZCBsZWdhY3ktdHJ1bmsKKzY1NDMxIGJkNTFjZjcxNzYyNDViMGVlYmY2ZGRkNjgxOGY2ZjUzYmIwM2Q5NDcgcHkzaworNjU0MzIgZTAwN2FmNzlmNjdjNmE1MTcwYTViMjZmOTkxNjg2ZDlmNWNlMzliZSBweTNrCis2NTQzMyAxZGI0ODM5NDgxMDY3ODkzNjM4MWNhY2FmMzJhMzM4ZTE2ZDQzNWEyIHB5M2sKKzY1NDM3IDNlNDRkZWJjMmJjOTBhNzZiMWY2MTgzZGZlOTI0MWZjMTk1MThiMmQgbGVnYWN5LXRydW5rCis2NTQzOCBkZjViMzk0ZDFlMjQzOTI5NWE2MjA5MGU2OTIzNjU5NGY1NmUxMjAxIGxlZ2FjeS10cnVuaworNjU0MzkgZTkzNDk1NmRkY2UzNzJjMWUyMWQ3NTdjYzQwZGQwNjBiMDE4M2QxOCBweTNrCis2NTQ0MCA0ZTQ1ZDBjZmFmNzFiNTJiZDEzOTFjNjI5MGRlMTNjZmZmYmFiMzI2IGxlZ2FjeS10cnVuaworNjU0NDEgOGM0OWEzZTkwZjQwYTg0ZmI4MzQ5M2RjMzVkMTk4NmUyOWI2YTI2OCBweTNrCis2NTQ0MiAxODAzZGU1YWUwZGMzNzBkZjIzNzIyNzZkNWI4ZmZjNDZhMDc3ZTQ2IGxlZ2FjeS10cnVuaworNjU0NDMgMzNkYWFlNjMzOWVlM2EyNzBhMjkyZGI2N2M1MTY3MjNjMDMzYTFlZiBweTNrCis2NTQ0NCA5ODZjYmRhZjE1NGZjMjczYjM3MmJlOTg2YzQ5MWE0NjdmNDEzNjQxIGxlZ2FjeS10cnVuaworNjU0NDUgNWYzZWY2NDAwYTk2NzYyZTYwYzI3ZWQ1MWEwNTVlNmQ3OTExZGM3ZiBweTNrCis2NTQ0NiAyNTEyODI1ODAwNDFhMjgwNjg3Mjg3ZDg0YTk5YmZmYzNmMjNmYjM0IGxlZ2FjeS10cnVuaworNjU0NDcgMGM2YjZiZDg1YWNhZDM3MzcxYjk5ZmFhM2M4MWZjZWQ5Nzg0ODc1ZiBweTNrCis2NTQ0OSAxZjIyZGU5M2RhZjhlMzNjZmQwMGM3YWUwZTUzMzA1N2FmNzhlOGY4IGxlZ2FjeS10cnVuaworNjU0NTAgODJkNGQ2ZGVlMDM0NzVlM2U2YWZhYTRiMDM4N2I4MzVjZGY2MWVkZSBweTNrCis2NTQ1MSBkNGRiNWRlZDc2Y2UxZmMxOGM0ZGNjMTQ2NjE2NGQ4YTQ0OTAzMWY1IGxlZ2FjeS10cnVuaworNjU0NTIgZDdiYWU3YmQzOWQ2ZjIzMDYyMTUwMGQ3MmQ0ZTg2YTc5YjM0ODA0NSBweTNrCis2NTQ1MyAyZThjZGVlMzRkOTc3ZWVhYjhhMzlhM2E4MjliNTBhMmYwZDI4YmUzIGxlZ2FjeS10cnVuaworNjU0NTQgZTM2MjBiNzNhN2QxNGY3MzNhYzUyYzQ2MTk4Yjc1MjI4M2Q1ZWY0YSBweTNrCis2NTQ1NSAzNWU3ZGM5NzdhNjNjMzY0NDczZjJjNDFhODY3ZjgwY2UyMWRkNzg2IGxlZ2FjeS10cnVuaworNjU0NTYgODk3MmNlNTYyNGI0ZDkxNjA3Y2FmZWIyMDIzNTI3OWRmMDk2OTdjNyBweTNrCis2NTQ1NyBjNzdhYzhiZGQzZmViNGM3Y2RhOTQ2ZTQ5MTM2MzU3YzBhNDFmMjQxIGxlZ2FjeS10cnVuaworNjU0NTggNDMyMmFmMWI2ZDNkNmJkNWVlYjAxNjZlNmJkNTgzZGQxN2ZjZTYwNCBweTNrCis2NTQ1OSAyODhjYTFjNzI4ODgwOTRiNTkzMmJmYjI3NzM3NDg0OTc1YmYxNWE5IGxlZ2FjeS10cnVuaworNjU0NjAgZGM4NTBkYTA0YmQ1NDcyMTZlMzE0NzNmNjg1MDFmYWUyMTJjNjJlZiByZWxlYXNlMjUtbWFpbnQKKzY1NDYxIDE1MDhjZWEyYzZiNTZlNTgwMjIyZjgyOWZiNTY0MzA4MzQyMTQwMzYgcmVsZWFzZTI1LW1haW50Cis2NTQ2MiA1NmIzYjJjY2ZkNjg4ZDhhNTRlNTEyOThkMGFjYmE1ZjYwMmVhNTRhIGxlZ2FjeS10cnVuaworNjU0NjMgNTVlMzI1ODA5NGYwMzJkM2E2MDBiNWI0Y2I3MGRiMDIwM2I4OThlNyBweTNrCis2NTQ2NCBmZGYzYjZmNDk5ZGFlMWVhOTQwMTk5NDkwMTllMzYxYTcwODJhMDJiIGxlZ2FjeS10cnVuaworNjU0NjUgZGFkYTk0YTUzMjlmMmY4MjhkM2U3OTZjMzg5YzFjYjU1MjU2NGMyNCBweTNrCis2NTQ2NiAxYzI0YTA5YWNiOTdjOTQwOGY5NzY2YzcwOGU4NWZjMmYxMTg0MjhkIHJlbGVhc2UyNS1tYWludAorNjU0NjcgMjFmMTQ2Mzg3YTYzY2ZiNWM5Mjg4ZDdiYjVjOGIzMjJiZGJlMGNlYyBsZWdhY3ktdHJ1bmsKKzY1NDY4IDlkY2IxZDI4ZWZiYjhmMzlmM2E1NGQyNDYxMTAyOGE3NWY2OTIwN2MgcHkzaworNjU0NjkgOGJkNTY1MDE5M2M2MDg0ZTMzNjg1MDBhZjQ0MWM4NzgzMjM3OWE3YyBsZWdhY3ktdHJ1bmsKKzY1NDcyIDQwYmUzN2U2OTE1OGY2ZmNmNmY5MjhiZjg4NDNlNWQyN2FkM2Q5NTcgbGVnYWN5LXRydW5rCis2NTQ3NSA2NDFlZGVlNGZjYjE0ZjFkNjNjZTNiZTNjZGJmMjFmMTZjMTEyYWQ3IHJlbGVhc2UyNS1tYWludAorNjU0NzYgYzIzNWJhNzBlNTk0YjE0MDY3OGI1NWQ0OTM4ZmI0MThhYzQzNTg5YSBsZWdhY3ktdHJ1bmsKKzY1NDc3IGRmMGFjMDZjZGRjYzNlOGI1YzEwYTZkZGMwYWY5YWMyMTIxYjI4ZmQgbGVnYWN5LXRydW5rCis2NTQ3OCA1MTM0MDZhMzdlMzg1MzZmZWZmNWRlNDM5NjY0NjRmNDdjMWYzNDE3IHB5M2sKKzY1NDc5IGJjZjQwYzgxODkxZTEwZjlkMGUzODE1NmFhN2M3ZjgyZmVkZmJlNmMgcHkzaworNjU0ODAgYWI0YzljMzg0ZDMxODgwMjM3NGYwOTAxZGEyMTQ1Y2E0N2NmY2RhZCBsZWdhY3ktdHJ1bmsKKzY1NDgxIGE4YTgyMzJjYjU0MTlhMmJiZGQ1ODUzMDRhMzcwMzFmYmI2NzE4OWIgbGVnYWN5LXRydW5rCis2NTQ4MiA1OWY0Zjk5NDczMGZhNzlhODE5Yjg3MjA4NTVmZDNjNzRhYzBiYWUxIHB5M2sKKzY1NDg3IDQ5NDExZDdkYzI1NzQ3M2IwOGRkNjA0Mzc1ZTg4OGNkZjQyMDExYjUgbGVnYWN5LXRydW5rCis2NTQ4OCBlYTgzZmVlNTc0MjIzMGI5NjY0MGFjZjBiYjBiOGVhMTdkZmU3YWQzIGxlZ2FjeS10cnVuaworNjU0OTAgNmM4OGRlM2M0ZDRkZDg1MmE2YzRhNTcyMDYwODk0MmRlMGU1MzU3ZCBweTNrCis2NTUwMiAyMTc0NTU2M2U2ODBlMGQ0Y2ZmMWRhM2M5ZjVjMzM1NjE5OWI5MjczIGxlZ2FjeS10cnVuaworNjU1MDYgNmJjM2NmZTA5OGNlNDU3OGZiMGU3MjJkMjQ5ZGU5YmU3NjNiMDY2MiBsZWdhY3ktdHJ1bmsKKzY1NTA3IDUxZjVjOGU4ODVjYThjNDk4M2YxM2IwNDU5YzM4YWU4MTQzNjQyOTAgcHkzaworNjU1MDggOTNiY2M5MjAxZWUwN2Y3MzcyNGQ1NzBiZDFjMzYzNjg5ZjJkMTg5NSBsZWdhY3ktdHJ1bmsKKzY1NTA5IGZhY2Q4MTk3MjUyM2I5NjM4ZTljMzg5M2MyZGYwNzc4NjMyNzVjN2MgcHkzaworNjU1MTAgNGQ4NDI3ZDI1Zjg0ZTFjYzk3ZDYwMzBlNGI2NWJhOWI0NmVlNjY3MSBsZWdhY3ktdHJ1bmsKKzY1NTExIGNmZjgyYjk5MGEyMjk4YTI5MmNlNTAxMDc4M2U2NDI4NzQ4MzQyNDcgcHkzaworNjU1MTIgNDdjZDQ1MTY4NjNlZWE3YmJkZDY0YWZmZmQ2ZTQyYzdhY2Q3ODIzZSBsZWdhY3ktdHJ1bmsKKzY1NTEzIGU5YjZlNDQ4ODg3MWU5ZDJkMWNjNTRhYzA0MmU1ZmQwNjliNDJlYTggcHkzaworNjU1MTQgOTc5ZjBhODk5MDNmMjkzNTgyYjNlY2VlOGM2M2YyNzIyYjFiNzFmOCBsZWdhY3ktdHJ1bmsKKzY1NTE1IDU3YjhjNzc4ZGEwNzM0YzMxOTBkYWJmODMyMjA5MTQzMDM3ODdlNGQgcHkzaworNjU1MTYgZjc4NDZhNzFlMzhhMjExMDg2Mjg2MzYxNDMwMjhiOGYyNjNjMjRhMyBsZWdhY3ktdHJ1bmsKKzY1NTE3IDNkMDgzZTY5MjY1ZWYwY2MyNzUwYTJmNzc3MTI5YWNkYzY1ZTMxNzEgcHkzaworNjU1MTggNmM2YTAzMDU2N2RkMDYzMTJhYmU0NmRjZmNjZTFkMzNjOTQ3YzkyNyBsZWdhY3ktdHJ1bmsKKzY1NTE5IGNmMzMxZmVmMzI5M2M3MjAwZTk3YWZhNjg1MDk2YWZlOTBhZGQwYTUgbGVnYWN5LXRydW5rCis2NTUyMCA1OTRjOTljMGYwNzg0YTJmNjA0MDAyZWYxZWEzMjE2ZTBmYTMxNDkwIHB5M2sKKzY1NTIyIGRmMjc3ZTY0MmU1ODAwYjM5NGUyNjg4Y2Q2ZjdkMmRiODllMzE5MjkgbGVnYWN5LXRydW5rCis2NTUyMyAwZGEzMDJmN2ZlOTQzMmM3MzNkOTFmYjA4YTA0YTM5MzdmNWZkZTA5IHB5M2sKKzY1NTI0IDM4MWE3MWRmMDYwZTRmNTkzMTkzNTZlYTdjNmQ3ZjY4MTdhNzdlMjAgbGVnYWN5LXRydW5rCis2NTUyNSBmZmMxZDhmOGM1YWQwMjViNmUyOWQwZGI4ZmQ4NmNjMjBmMmMwMjZlIHB5M2sKKzY1NTI4IDlmYWE4NzkwMjExNDM0ZjQ1NDY1NGMwYmI2NmM5MTBlMDc2NmUyYzMgbGVnYWN5LXRydW5rCis2NTUzNiA2OGRmODQyZDYzMzA4NGZkZDVjOWU2YmZjZTU1YzJmMjE3M2U1ODRiIGxlZ2FjeS10cnVuaworNjU1MzkgNWI3NzRmZTA0YzdlMTc3ZTNkOGIzYjIzMTVlMGM4MjBjZDI4MGJiMSBsZWdhY3ktdHJ1bmsKKzY1NTQzIGI2NTRkMTRjYjlkOWVlMGQ0N2NmMjNlNmMxNjRjOGYwY2VhZTk4NzIgbGVnYWN5LXRydW5rCis2NTU0NCBlNWZjM2UxOThkZGFjMWM3Yzc5YzU3YWU5OWEwN2VhYzhjM2NiMmJkIGxlZ2FjeS10cnVuaworNjU1NDUgMTYzNTg5MWIxOGU4MWFkNmZjOTE3YzZhNDQwZTBiNmFlZGM3ZDI0OCBweTNrCis2NTU1OCAyMzY2MzczOTA0NTdlNmIzMTgxZWE2YjYyYjc2NWY0OGFhOTJjODNhIGxlZ2FjeS10cnVuaworNjU1NTkgNzllYTM0MGQxYTU5ZGFmZTBjNWQ2NDE5ZGFlMGRlMWRlOTViODFlNyBweTNrCis2NTU2MCA4M2E3MjE5MzY0YjEzNjcxODgzZDNlZjk0YTAyYzdhMGE1ZTExODA2IHB5M2sKKzY1NTYxIDU0OTEwOGU5YTBhMzIyMzE3YjUyODkyZDM0MjlhMDBjZjVhMDU0ODUgbGVnYWN5LXRydW5rCis2NTU2MiA5Y2NjMTY4MmUxOWI4Nzg5ZjQwMmQ3N2FiMWZlYjYwODA1ZTNkNDgyIGxlZ2FjeS10cnVuaworNjU1NjMgNTNhZGU5ZTY4YjU2MmUzM2I0ZTU4ZTM3NTMyZGFkZGI0ZDdhMTZkZCBsZWdhY3ktdHJ1bmsKKzY1NTY0IDEyMzczZmE2ODA0ZTRiOWY2MWUwYzM1NjVlOTdmYTFjOGViMjQzMTggcHkzaworNjU1NjUgMDNkYWUwMzdiMmI3Mjc1NTVkMjhkYzBkNmY3NmNmYTk2OTMzYzMxMCBsZWdhY3ktdHJ1bmsKKzY1NTc4IGYxZmM5NDc3MjJmMjlhNDNjYjI5N2Q0OTE4NjEzYzJmZTdlNmQ5MmIgbGVnYWN5LXRydW5rCis2NTU4MCAwNDJkMTZhMDUwMTY5MTFiZjA5YmNjODgxN2M4YjJhY2U5MWNmYTdiIHB5M2sKKzY1NTgxIGM4YzllNzhmYzA4MjM4MDFhNzM3YmYyY2IwYzAzZDUyMDAxOTMxOGYgbGVnYWN5LXRydW5rCis2NTU4MiA4NWI2N2ZiNTY3MmI5OWYzMTI5ZGUwMzNmMGM2MDFmZWI2ZDY1ZmE3IHB5M2sKKzY1NTgzIGNmYWQzZjdmNWU2MzhlYzFkZDg0NzE2NGYxYjc5NTA3YzYzMDdlN2YgcHkzaworNjU1ODQgMGJmNmM0MmFiNGU0MjM4NTZiODk0NjM4ZWFjOTMxNzhjZDNhOTc2YyBsZWdhY3ktdHJ1bmsKKzY1NTg1IDJiM2Q0MmVmZmU1YmUxNjlhNzlkOTE1OWJmNjc0MGIxNDVkMmE2OGYgcHkzaworNjU1ODYgNjQxNmU2MDQ0YTMwMTY3NmYwMmE2YTViOTJlZmRiODlmMjY5OGZmMiBsZWdhY3ktdHJ1bmsKKzY1NTg3IGE2ZDZjMmZhZDIyMDBlY2Y5ZjI2ODQzNzg1MDIzODk3ZTEyMjA1MjQgcHkzaworNjU1ODggNjU5MDFmZmZmYzZhYmU1YTMwYmRkMWNkMDMxMDhlOWE3NWJjNDMwZCBsZWdhY3ktdHJ1bmsKKzY1NTg5IDQ4N2UwZDlhMzgxYTgwMDAwNmFmNzY3NDI4MTBjMTk2NDFkZWU4NDQgcHkzaworNjU1OTEgZTZmZTgzYzJlMjYyMDZmNGFhZTYyYzIzMzZlNTlmZGQ4NGNlNGQ5NiBsZWdhY3ktdHJ1bmsKKzY1NTkyIGIyYzUwNWQ0YTIwM2Q4MmQ4MDJlNWQ4NDc0ZWQ2MmUzMzNkOTM0NDMgcHkzaworNjU1OTMgZmQ3YjkzYTAxYzA0YjdlNGVkMWQ5NzM1ZGU0YWYxZjc3NjhhMTk2OSBweTNrCis2NTU5NCA5NDliOWEyYjk4Njc2MTA5NjI3MGUxMGY1ZTZhYTAyZDQzNWIzNzg2IHB5M2sKKzY1NTk1IGUyYzcwNmY5OTA2YzM4NWI5NzkzNmVhMDU5NmM4NTI2OTJmYTI4ZmUgcHkzaworNjU2MDEgNzIyNGZmZjk4ODIzYmM5ODMwMDc5OWIzY2Y5Yzc2NmU3NmQ2NTY1ZCBsZWdhY3ktdHJ1bmsKKzY1NjA1IDQ3OTY3NjkwYjU4NTVlYzljYTMzMWFlYjIzMWVjZTQxOGE3NWExM2UgbGVnYWN5LXRydW5rCis2NTYwNiBhYWQ1ODA5ZmM0MTk1NWIxNDExZGE3NzcwZDhmNjc4MGI2NWY4NWU3IGxlZ2FjeS10cnVuaworNjU2MDcgZWUwYTUyYzk4MmU1ZjZhYTQ1ZGVmMDhhM2NjZThiYjYwZjBmZTJmZiBweTNrCis2NTYwOCA2M2FlYTk5Yzk3MWE2N2Q4ZWMwYmQ5Y2Y5ZDlkZjY3YzcxMDJiZGZjIGxlZ2FjeS10cnVuaworNjU2MDkgZDYxNWFhOWZkZjM2MTA0OGRlMmRiMTRmZjMwMzI5N2IwZDJkN2E3YyBsZWdhY3ktdHJ1bmsKKzY1NjEwIDZkOGQ5MjBjZDkzMjQwYTQ3Y2QwYjIyNmRiODIxNDc3M2RiYzhlNmEgbGVnYWN5LXRydW5rCis2NTYxMSAxYTExNzE3YTE1NGI0ZGYyMzA1ZGMzYjRmOWJiZWI0NGVmM2E4YjUyIHB5M2sKKzY1NjEyIGQzNTI5NjQ0YzY4MjNlYzRmYWM3ZDFiOGExNzQ5MGUyODg3ODY2MGUgcHkzaworNjU2MTMgMzg4YTRiZTdkNjc5YTE1ZjFmMjU4NmQ4MDFjZjgzMTY1MmE5ZjFlZCBsZWdhY3ktdHJ1bmsKKzY1NjE0IDk5ZjliZWE5MDliNTU5YTcyZjQ0Y2U0OTExNzRkYmQ4NWYxNDA2YWUgcHkzaworNjU2MTUgYjNhYmZmMTdlMmRkMTc0ZDQ3ZjUwOWEzODU1YzU4MTA1ZGFjMDExMSBsZWdhY3ktdHJ1bmsKKzY1NjE2IGFjYjk4ZGJiMWIwNGZlZTM1MDhkMzFiZDBjNjViYzMyMTEwNmRjYmUgcHkzaworNjU2MTcgYmM2YTM1NzJiYzg5NmQzYjE3ZmU0YzllZWI2NDc2NzE0OTY3Njk3MyBsZWdhY3ktdHJ1bmsKKzY1NjE4IDlmODQzMzk2ZGY4OThkYWViMzYwMTJiMjI5OGE5ZWVlZTI0ZDBiNzQgcHkzaworNjU2MTkgMzAxMzViNmUzOGZkYWY3MzIyMjJlMDkyNGIyMzk4YTA0YjViN2U1NiBsZWdhY3ktdHJ1bmsKKzY1NjIwIDMzY2Q2YzVkMWEwNGIxZjhkMzgxOTEyZDRhMWNkZTg2ZDkwM2FhZDkgcHkzaworNjU2MjIgNWExNWE3MDQ0ZTdkOGQ2YmE4YzJhOWMzMDNhMDcxNjI4Y2FmNGYxZiBsZWdhY3ktdHJ1bmsKKzY1NjI0IGFjODEwMzM0MWI4MGU5MDIwNWNkZmI0YjA2Y2RkMWFiOTU3Nzg0MWMgcmVsZWFzZTI1LW1haW50Cis2NTYyNiAwNTRkYzExMWIxZDljMTFhNzBkNzNiZTYzZDc2M2Q2ZjM3YTgxYWNmIHB5M2sKKzY1NjI3IDZlNGY0N2E2OWVmYTc1NDIyNzRlZWFiNjQyYWNiYzk3YWVhNGEwMDggcHkzaworNjU2MzcgNjk0ODE0ZDdiMTA0M2MxMzUwZWI0OGUzY2EzZWViMTcxYjYwMWJmNyBsZWdhY3ktdHJ1bmsKKzY1NjM4IDBiNjcxYmNlNjk0ZTQ4OTc4Mjk2NDFhZWVkNjBlNDhmZWU0ZTcwZGQgcmVsZWFzZTI1LW1haW50Cis2NTYzOSBjZTU5ZGFjM2ZjYTI0Y2I2YTNkZWJjODgzZDJhN2E0YzViZDM1MGE1IGxlZ2FjeS10cnVuaworNjU2NDEgY2Y2OTg1Y2I2ZDE1NmRkYmFjYjAxOGQ5YTA3ZWI3OGUxZDRjMDI4MSBsZWdhY3ktdHJ1bmsKKzY1NjQyIDc1MjdkYTJiMDVlOGE5ODgzNmQzOWI3MDI5OTE3ODc0MmU4OTYzY2MgbGVnYWN5LXRydW5rCis2NTY0MyBkMjFkOGNiZTZiZDRkZDc0MGFlMzY5MmNiNzVhYmM1YzU2YjZmMzE1IHB5M2sKKzY1NjQ0IDBhYWU3MmY4ZGRhOTA0OTkzZDdlOGJmY2MxNjQxNjNlMmViNDhiYmUgbGVnYWN5LXRydW5rCis2NTY0NSAyOWQ5MzZhNGY4ODU4ODZmZDA3NWUwNDY2YTY5MzkwMTNhZGVkNzgzIGxlZ2FjeS10cnVuaworNjU2NDcgZWJlYWE2NTM2ZDMyOGEzMTg4M2U0MzM3OTVjZjM3N2RlYTY3NWZjNCBweTNrCis2NTY0OCA3Nzc5YWYzODhhZWMxYTNlMDAyMzIyNTIzN2Q5ZTBkMWNmNTViZWI0IHB5M2sKKzY1NjQ5IGVmNDFkYWUzMGYzNWQzNmVkNDdlOTJkZmRlODkzZjMxMTQzMDQzY2YgcmVsZWFzZTI1LW1haW50Cis2NTY1MCBlZWZlNDQ1MGY3NzNmMmNmYTFmNDVkNDk0Mzk0MTcyMjcyYTc2YWY2IHJlbGVhc2UyNS1tYWludAorNjU2NTEgZGQ3ZTJkNjhiNmRkZGYxNjA4OTk2NzQyOThhZTgwN2NiOWEyNDNiMSByZWxlYXNlMjUtbWFpbnQKKzY1NjUyIGEzMzkzZTU4MWIxNWI4NGY5MTljZTI4ZWYxYWIxOGI3NzU4NzQwYjcgbGVnYWN5LXRydW5rCis2NTY1MyBiMjE5ZDU1NDA0ZTc2YWE2NjRlMmI5ODczNzA1ODEzMWYwY2M4MGZlIGxlZ2FjeS10cnVuaworNjU2NTQgYjhjNGJmMzkzNzk0ZTliMWU3NzM3ODhiMDdiOTQzYTk0N2E5Njc1ZiBsZWdhY3ktdHJ1bmsKKzY1NjU1IDc5ZmEzZTBjMDk4ODlhYWNiYWEwMDgyYjYyZDc2NDRmNzljMmRlODEgbGVnYWN5LXRydW5rCis2NTY1NiAzYzhlZjM0NjY5MjM3MTIzOGQxMDAyNTU2YWI1MjA5ZmJiNGJjZjYzIHB5M2sKKzY1NjU3IDcwMTUxNjU1NTM5MzczNmY5YzY5OWVjM2U2Y2U4MjM4ZWRhOWU3YWUgcHkzaworNjU2NTggZjA0NzI1MzNiZmM5ODkwNjM1Zjg5Mjg0NDc3N2Q3M2I4NzJiNTJmMyBsZWdhY3ktdHJ1bmsKKzY1NjU5IDc5YzI5MTZmZTU4ZTQxZTcxYzI5Nzg1Njg1YzZhOWQ4YTVjZDFmMzIgbGVnYWN5LXRydW5rCis2NTY2MSBjZDNiMGI3ZmQ4ZTFiN2UyZTNjYjNlZjFjZmVjNzAyYTRkZjJkNmY0IHB5M2sKKzY1NjYyIDEzMWY4NWJiNjkzMDBjNDhlNmQ5ZjZkYTI3NTdjMjIxNGY4YTBjOTUgcmVsZWFzZTI1LW1haW50Cis2NTY2MyBlY2NkOTQyOTcwMmU0ZjU3M2JkZjQ0MmI2ZmJiYmE4ZTljNGU5NGE1IGxlZ2FjeS10cnVuaworNjU2NjQgZDc4ZTI0YjEyZjYzMzZiODdhNTE2YjUyZGIwM2RkMDQyYmQwZmVlOCBweTNrCis2NTY2NSA1MGZmZmM4MDA4NDU3YTliZTBlY2VmODY3YWFlMTIxNDNmNDFlNTE5IGxlZ2FjeS10cnVuaworNjU2NjYgOWQ3OGZkNjBiZjJhNWVhY2Q3NDVhZTM0YWZjODQ2MTY4Y2E4Y2E2MiBweTNrCis2NTY2NyAwNjAwZmNlNjc4MzUyMjg4Y2RiNzc4NzY0MzcyODQ2ZTRkZTcyNTE1IGxlZ2FjeS10cnVuaworNjU2NjggNGYxZmU4ZjE2ZWY5M2Q2M2Y4ZjM4MTdhMmU2OWNlNWZhMDVhZmJhMyBsZWdhY3ktdHJ1bmsKKzY1NjY5IDA0NTU2ZTJhNzk4NGY5NDE4MTY5ZGExNTZjNDk4MWQ0YjZmOTU3ZjggcHkzaworNjU2NzAgZjYwMjZhMzc5OGQ0NDAxM2NjMDc0ZmJkNGIxMWUwMjMxZGI3ZWQzNSBweTNrCis2NTY3MSA2YjE5MDhlYTZiNTM1NDRmNjNkOWVhMWQ1ZWEwYzhkYmM1MmE0YTllIHB5M2sKKzY1NjcyIDcwZjI3OTVkNjkwMjgyNjE1MmU5MGI4ZmI1OWVhZTUyOTc3M2FjOWEgbGVnYWN5LXRydW5rCis2NTY3MyA2MWQ1MGRhNTgxNmEzODcyMGFiNDQ5MmUwMjcwMmNlYTQxNDlhY2YwIHB5M2sKKzY1Njc0IGYxMjYwZjQzMTFlZTc4Yzg1MTMyOTNjMmNhZDQzMWMyYzM4NTQ2NjUgcHkzaworNjU2NzYgYWRlMzNlMTNlYzY5MzA2NmM2ZGQ2N2Y5MWE1MmQ1MWVlOTc4ZjRjYSBweTNrCis2NTY3NyBlODUwOWFjNTAxZjMyNGQ4NTc3NWU0MDRmMDFiZDJjZjQyMzFhZWI3IGxlZ2FjeS10cnVuaworNjU2NzggYjc1NjIxYTQyMGVjYjI4ZTkyMzkwMGE0MDcxZTA0ZDE5OTZiZjc5MCBsZWdhY3ktdHJ1bmsKKzY1Njc5IGFmNzM4OGFkMzE2NGViNzRkZGRkOTg1MTBjMzAwZTA1MWQ0NDVlYzggbGVnYWN5LXRydW5rCis2NTY4MCAyOTNkZjgxNTNmNjE4NThlYWNiY2I5YTJjOGM4MDUwNTNlZDhjNjgzIHB5M2sKKzY1NjgxIGY4YTM0NmZjZDA0MTk2MzIxYWM2YjM3MzdjYzlmYjc4NzcxODlhNWUgbGVnYWN5LXRydW5rCis2NTY4MiA2MzNmYjAyNjBhYjMyMjU0NDNmZGVlMmVjYWNmNmY4MDg5YTExNGUzIGxlZ2FjeS10cnVuaworNjU2ODMgMzY1MGIxY2U0YmQ4NDY0MTBkYTY4YmY0Y2Q0MmJhMTdjNGMzZjFmMCBsZWdhY3ktdHJ1bmsKKzY1Njg0IDYwZTBlMDk3NjNhYjYwZDQ0MDZjMGJhOTVlY2M1NzM2Y2I2MTZhNjggbGVnYWN5LXRydW5rCis2NTY4NSAxMzZmNjFiNzRlOGZlOWQxYjYyZmYyZjVhNDc5NDYzMWM4OTBjMmIwIHB5M2sKKzY1Njg2IDY3OTM4NTc1YWZjNmNjNmNlNjg1N2ZjNWQ1ODU2MjFkNzViYzc5MTAgbGVnYWN5LXRydW5rCis2NTY4NyA1NGEyZGI4ZmRjNjI2ZGU5NGUzNGFjZTRjNDBjNzg1MGNlMGMxYWJlIHB5M2sKKzY1Njg4IDBhNDMzNzZiYWE2YmYyYTkwN2YwMmQ2OTdjZmU1YzgwYTk1ZDE2NzQgcHkzaworNjU2ODkgZTk2MWNjMDE0NjE5MTQxZDI5NjIzOGViNTBhYjU0YTRiYTg0MDM3ZSBweTNrCis2NTY5MCBjNmYwZGU1ZjJjNjg1MjNkNmIyMjJkYjY4Y2YxYzc0ZjViY2Q3YzY4IHB5M2sKKzY1NjkxIDkyMzMyODZjN2VkMGRjNWU3MmI4MzhjYmNlNjQwNDBiZmFmZmJjZGYgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NjkyIDFkODE3MWQ2NDQ2M2VkMDI0ZWJjM2I2MWQ0ZGY4OGE2ZDc0NjlkOWYgcHkzaworNjU2OTMgY2RkODk4NDMzZDU4OGUzMGRmNWI5ODZhYTM0NTI3ZjY0NWJhMjgzMyBsZWdhY3ktdHJ1bmsKKzY1Njk0IGMwNTc5ODllODdlYjlkZGVhMTgxNTE5ZmY5OTNhODg5Mzg4N2MyNTAgcHkzaworNjU3MDAgMTgwMDYyZTMzOTU2OTgwZDU1YjYwZjQzYmNiZDA5ZjE5MjMxNDM5MCBsZWdhY3ktdHJ1bmsKKzY1NzAyIDgxNjNkYWVlNzg1ZDQwYTNkN2ZiNTVhZDBkOWZkYjE0MGYxMmE3N2UgbGVnYWN5LXRydW5rCis2NTcwMyBmNjI3ZjgwMjAxZDM5ZmUxNWVmOWIyZWY2ZGYxM2RiYmIwOWVhNjRmIGxlZ2FjeS10cnVuaworNjU3MDQgZTYxZGViNjkwZTcwODQwMmQ0NTJlYTZjZmU1N2UxNGNjMTFlZTE0MSBweTNrCis2NTcwNSBhM2Y5NTBkMTVjMDgzZjU2YWRkMWFmM2RhMDJkYzE0MjlmMDhlODg2IHB5M2sKKzY1NzA2IGMzN2Y0YjAzNjM3ZjIyNjU4MzkzNDkzMmQ4OTQwMmUwNDgwOWQ2ZDQgbGVnYWN5LXRydW5rCis2NTcwNyA3MTAxNDY4NWUwZTVmNWI5OWUzYzcxZDc4ODI5ZmE5NDYxNmRjMDNjIGxlZ2FjeS10cnVuaworNjU3MDkgNzgwZTE3MDM4OTAyOTlhYmFhZTEwNDM2YWIyMDlkNTIwZWViMDVlMyBweTNrCis2NTcxMCAxNzAyODczZjI0OTJmMjMwNTI1YTdmOTA2MWRhYWIwNGZmYmE4OTAxIGxlZ2FjeS10cnVuaworNjU3MTEgYzZkNzhmODY5NDA1ZDc1MTRkNGNhNzJiMTM5ODc5OTRkNWRjOWM0MCBweTNrCis2NTcxMiAxZWQ4NmNlMGJlYjI2NmEyN2Q5ZmNjZTJmNTIxNTZhYjk1OWU4NGRlIHB5M2sKKzY1NzEzIGVhZDM1OGNlNGQ4YWIwOWZmMjczOGJmYThmYWMyMDI2ZTg1Y2Y2YmQgbGVnYWN5LXRydW5rCis2NTcxNCA4Nzg4NjE1MTViMTYwYzlhYmI2N2ZmYjM2Yjc5NDA0MmE0OWFjOGVjIHB5M2sKKzY1NzE1IDlmYjEwZjNkMGY4NzMwOWU5NTQ4Y2UxNDQ2ZWRhOWZhNTU3ZjlhODkgbGVnYWN5LXRydW5rCis2NTcxNiA4OTRiNGFjZmZmZTQwZDBiYjVjZWQ2NzRmYTBhNThjODQ0ZjVjYjkxIGxlZ2FjeS10cnVuaworNjU3MTcgOGMwZjg1MTk2ZTM3YzJlMTFkZGZjMzY3OTI1ZGJlZjRmMzljMDM2ZCBweTNrCis2NTcxOSA5MThhOTE4YTk5OTZjNjA5MDcwZWQwOWQ0M2E5MmE3ZmVlMTNhZmQxIGxlZ2FjeS10cnVuaworNjU3MjAgYjk3M2ZjY2QwMmE1YjkwNzgxZWMyNzM0NDhiZTYwOWIzMzBhNzY0MiBweTNrCis2NTcyMSBjYTRjNTEzNTg2Mjk3ODhjMTdkYTE1MGE4ODJjZjIwYzk0Mjk3ZDgyIGxlZ2FjeS10cnVuaworNjU3MjIgMWQ2NWM4ZjVjMDhlMTM4MzU3ZGRhMWMyNDlmMGFhMGEzMjY0YWMwNyBweTNrCis2NTcyMyA1ZGY1NmNkNTUxOWE1Njk0N2QwNGNmOGViZDI3NTcwMmFjOTAyYTg1IHB5M2sKKzY1NzI0IDJkNzZhZjdmNzcwMjY4YTkyZGI0NDQwNzhhODJiOWY2MWVjM2EzOTMgbGVnYWN5LXRydW5rCis2NTcyNiBiNjBlMDkyOGRiM2VjN2ExMDUyNDAzYmIyODIwNWRmYjRiNTFhZmU1IGxlZ2FjeS10cnVuaworNjU3MzEgZTBjNjU5MjJiODc4N2RmOGE0MjllNTA3MGU5MGQ2MGI3NzljOTQ5ZiBweTNrCis2NTczMiA5ZGU2OGFkODYwNzhjMzYxYWIzMGExOGIyYzc2NzZjOWQ1N2NiYWIzIGxlZ2FjeS10cnVuaworNjU3MzMgYWVmYjhlOWQzODQ0ZjFlNWVhOGFkMzZjZGM5YzE2ZDMzMDBlNzNlNyBsZWdhY3ktdHJ1bmsKKzY1NzM0IDMxYzM5YTYyZDNmOTY1NWE3MmY4MDgwMDQ3MWJjNWY1NzA1M2MwOTMgcHkzaworNjU3MzUgZWJhNzQ1N2Y0YmI2OTNiOTBjMTEyNmE3MDViNzc2NjEyNTVjZTQ2MSBweTNrCis2NTczNiAxNTNlOWU2Nzg2NDY0YTE4NDM3M2U5ZWM5YTBmZTAwN2Q5YTQwZmJmIGxlZ2FjeS10cnVuaworNjU3MzcgZmY4NTY1MzU0NWY1Y2E3MGY0ZjBlZjJiMmQzNDdlN2NkNWFjN2JhMSBsZWdhY3ktdHJ1bmsKKzY1NzM4IGViMWU2NGU1MzVlNmExNzEyNmVmZGI0ZTkwMjhjMDk1N2RlNzc2YzUgbGVnYWN5LXRydW5rCis2NTczOSA1YTM1Yzk2M2U3NzEyMmVhNmMzNDlhYzllNTg2ZDY1NjE5OTE1M2Q0IGxlZ2FjeS10cnVuaworNjU3NDAgZDk5ZmU1NmY5ZmY4ZDY0MWMxNjAzZTc2MWE2OGJkMGQ5ZmQ4ZGZkMSBweTNrCis2NTc0MSBhZjRlNDBmODkzYmQ5NTBkMDQ3MTMxZmNmMjUwM2VmOTAxM2EyMGFlIGxlZ2FjeS10cnVuaworNjU3NDIgMmJlMTdkMzY4YTljNWI4ZmU2MDhiZmY4NWU3NjRiYjc1YmI2MjY3NyBsZWdhY3ktdHJ1bmsKKzY1NzQzIGYyNGYyNmExMjE4Njc1ZWUwNzQyMWY4YzMzN2U2YzU5Y2E4MThkMDAgcHkzaworNjU3NDQgNDhkZGRmZDJmYmYzYmMwMDM0NzFhMmJkYWIzZThhY2I1MGMyNzJiZSBweTNrCis2NTc0NSBhYWVmMDhhYTJhN2VmZmJhYzI5YjEzODdlZjM4OTUzYWE2NmM2NzIwIGxlZ2FjeS10cnVuaworNjU3NDYgNjEyYjBjMGU1YTBmMzNkOGI5MmQ0YWYxZjU0MjIxMWFhMDU2NTEyMSBweTNrCis2NTc0NyBkOWQ1MThjZDQ5M2MzMmVmYWZjOGEzYmM1MjUxMjQ4MjIxZjg0YzcyIHJlbGVhc2UyNS1tYWludAorNjU3NDggYzc0ODFjNzNjMTYzYTE5N2E3Zjk4MmEzZWIxODZiNmJlZGIxMGJkMSBsZWdhY3ktdHJ1bmsKKzY1NzQ5IDQzNWQ2NGZkMTNhOWNkOWQ0ZDMwNmU0MzYxNGZhNGZmNWQ5ZDkzNTggcmVsZWFzZTI1LW1haW50Cis2NTc1MCBmNGMyZWFhZDA5Zjg0NWUxMzgzMGM0OWVhODdiZmEzNWE0ZjljNDA3IHB5M2sKKzY1NzUxIDQ1NTY5ODk1ZjdiNTYxNGFhZDUzZmNlYzgzYjhkYjNhNGQyMWIxMzIgcHkzaworNjU3NTIgZGRjNjVjZDJmMGJiYmFjMzVmMWRmNGMwMWE1NjM5NjkyNDUyYTY5NSB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NTMgOTBkMDQ5OTgzZjViM2RmZTZjNzczNjk5MDI3ZGIxZjhkOTlkNDU4NCB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NTQgMDc0MDllOTg1YzM5YzlhYTE3MWNmZWI4ZGYxNzYxNTQ3ODMyMTYxMyB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NTUgOWM0OTg5MDcyMThmZDdlODBiMmYzMjE5MTI1NjhmMzJkNDlkNTlkNiB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NTYgZmMxYTBhY2ZjZWY4MDhiZjNjZjQzODE4YTU1NDg2MzE5ZWUxODE1YyB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NTcgZGE1ODMzM2VjN2RhNzYxYzUxMTJmNzc4ZTU1YWJmZjA2YzEwMWZiYSB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NTggNTA0OTNmOWRkOGM3MWE0YTQ3MWJjZWZjYjU5YjRjZjhiMTE0OTlkMCB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NTkgMTZiOWVlMWVlZTMxZmEyNTk0Mjg4NWExODQyZWIwMjgwOTM1ZDc3NSB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NjAgOTNhYjlmZGE4MGFiMGM0YTBkNTM2MjlmNzc2ZGEwOWU0ODU4YzEwZiBweTNrCis2NTc2MSBmNDgyODc1ZTJhMDMxYWFiNmMzNDY5ODVmYTAzMmYzOTJiYWU5NjAwIGxlZ2FjeS10cnVuaworNjU3NjIgZjRjMjI2YzYxYjcxYzhmNmIzZThjNjRhYjczYWU0Y2JlYjJiYTExNSBsZWdhY3ktdHJ1bmsKKzY1NzYzIDJmN2U1N2ZjMWYzYTY2NmI1NzJjZWEzOGZiMzE0ZDMxODQwODZlMWMgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzY0IGE4ZjNlNjNiNDdlNDI0MmQzOTI3ODNlOWIwMTQ3YzVhYjUyMDM5NzggdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzY1IDNkZTY5ZTZiMmNiMjUyMWQ4ZmI2YjViNTZkOWE4YjBiNzRiMDQzNDkgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzY2IGM1MDU5YjEyZGRjNmQxODQ2YjMwNTAwNTM4NThkZTNiNzNlZTYzNTggdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzY3IDliOTg1NjdkNWRkZTUwNzA0YWU4YTU2ZDNhYmUwOWExOTRlOGNlMWYgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzY4IDdhMDM4MDIwYzhkZDYzZTZkYmFkMjZjNjMxYzg0ZDRhMWY3NGQ4ZTcgbGVnYWN5LXRydW5rCis2NTc2OSBjYWJmOTdiODIzMzA4NjFlNWI2NTEwYjRmMjYxNGJiY2VkMmI2ZThmIHB5M2sKKzY1NzcwIGIzNzdjMTQ3MzIzZWJmOWUwODY3MmIyMTRkNjQwMWZlMGUzNWZmYjQgcHkzaworNjU3NzEgZTRjOThkNjE1N2M3MDE5N2JiNGFjNmE0YjQyY2Y1ZGRjYmRhYzljNSBweTNrCis2NTc3MiA3MWI1M2Q2ZWE3YTQ1ZmRiNWUwZGI2NWFlYTE1MzIyYzQ5NDgxMjA5IHRsZWUtYXN0LW9wdGltaXplCis2NTc3MyBkN2Q3MTM5ZDU4NDA2YjY1NWNhOWJjMTgyYmM0OTMxZjcyZTExM2Y1IGxlZ2FjeS10cnVuaworNjU3NzQgMWQ4OGFkNWY0ZGVmMzM2M2YyNDg1MTdlZDM5NTA4MWEwZGRiODMxYiBweTNrCis2NTc3NSBjMzZjY2YyYTcxZTE2ZTYxOTVmYjc3MzRkNmMzMjFkZmNhZTkyZWVkIGxlZ2FjeS10cnVuaworNjU3NzYgYjI5ZGYzNjQyYjk3ZDNiNmZjNWJlMTUwMDAwNzdkYzdkODE0ZTBiNyBweTNrCis2NTc3NyA0MGMwN2E2MWUxYzI2YzFmZmEwNGRkMTk1MmI5NDU1NzIxN2Y0NDg4IHB5M2sKKzY1Nzc4IDEyYzNhMDMzODllN2YzZTIwYTdlYzgyYjVjNjUyMmFlZGZlMmE5YzQgcHkzaworNjU3NzkgNDkyMTNkNDI5YzY4MWEwMWRhZTBiMzdkYTlhZTk4Yjk5ZjE3ZjkxMiBweTNrCis2NTc4MCAyYmViYzBhNmQwNDI4MGQwYzczMjY3ZjVkZGJmNDc5MjQ3MGU3OTZjIGxlZ2FjeS10cnVuaworNjU3ODEgMDY4OTFhZWM0MWRlNmU2OWI3MWM1NTVlYmJjMzJlODIzMWQ1MTIwYSBweTNrCis2NTc4MiAxOTVkYTZkMGM3N2MxMDY4ZTI4YWQyOTg4OTNkOThjOWQzMmU5NzQ5IGxlZ2FjeS10cnVuaworNjU3ODMgODBhOWZmNTllYjAyMDJiMmMyYzdlM2I1MjUxNjk2N2E0OGNjMTg2NiBweTNrCis2NTc4NSA1MzBiNGNiMTk0NDI1YTIzYTQ2YWMyOGMyMTRiZjUxZGRmOWMyOTYxIGxlZ2FjeS10cnVuaworNjU3ODcgNzU2NTg1NDNiOTE5YmY1MzU0MjgzM2MwYjIxYjk3Yjg3NDEwZTEzOCBsZWdhY3ktdHJ1bmsKKzY1Nzg4IDIyYWQ4OGU1YzAwM2E0NmQzNDgxZWYxZTRkNjMzMDNlMjNjNDJhNGQgcHkzaworNjU3ODkgNDNmYTUwYjllYjEyOGZkNWY3MDJjNTI3NDA4NzkzZDE3OWNhNjYxZSByZWxlYXNlMjUtbWFpbnQKKzY1NzkwIDU1Mjk1MzMwNmQzNDJjNThlNjgxYzc2ZDg3NTA3ODcwNTdlOGM1MzggcmVsZWFzZTI1LW1haW50Cis2NTc5MSA4ZDk5ZDAzYTA2ZTQ0YTc3NDdjMWQxYzBmNTI1OWY4YTU5ODExNGEwIGxlZ2FjeS10cnVuaworNjU3OTIgYjBjNGFiODIzM2ZhOWI1Y2ZiZmNiZDgwNTgwOWU5N2Y0ZTJiZDk4OSBweTNrCis2NTc5MyBkN2ZiZTczZmU3Zjc0NDc4ZWU3Mjc1MzE1ZTUxYTY0YjVjYmEzMjI2IGxlZ2FjeS10cnVuaworNjU3OTQgZGQ5OTJiNjQwM2Y0Y2ZkYjgwMzVhNDhhZmRkMzM1NjgzNDg0NGM4YSBweTNrCis2NTc5NSA2MmM2OWQ4OGU5ODVkN2M5N2E3MGM3YmE5M2ZlZWIxZTU2ZDBhMGFiIGxlZ2FjeS10cnVuaworNjU3OTYgZWRiNWE4NTkzNzQ5ZTZjZWM5YWY4MjZiMjBjMDg5YjBjNDMwMmZjNCBweTNrCis2NTc5NyA4OTUzOGQ1ZmI4MWFkYjJmYjIwNDAzNmFiZDM3YmEyYzE0NDdmMzIxIHB5M2sKKzY1Nzk4IDk5YTJlZTRlM2EwNTczYzBmNGM1MmU0YTcwNWNhODdiYmY1MTI3NWEgbGVnYWN5LXRydW5rCis2NTc5OSA5NWYxYzdkYjg5MjNmNDhiZjQ0YzQ3OTZhOWE3OGNmOTdhNTY3ZTM0IHB5M2sKKzY1ODAwIDM1MWFkNjg0MDdlN2ZmMWY0NTE1ZGEzOTM4MDYwZjUxNjdjYjE4ZTggcHkzaworNjU4MDEgZjI4N2JlYjM1MmZlMTYzOTM5MGZlYzlhYTMwNDc2NDE1ZmJkZjU3YSBweTNrCis2NTgwMiA1NTA4ODYyYTFkZTUwNWM4MGQzYjM2ZjJmMDNmOTJmNzM0YWNhYjQ2IGxlZ2FjeS10cnVuaworNjU4MDMgNWE4N2IwZDFjZTkxZTE4YTMwNTc4ZGZmNzY5ZGNlYjQ3NDE0OTExYSBsZWdhY3ktdHJ1bmsKKzY1ODA0IDYwMTk0YWIyYjc1NjI1YjRkMzI5YWU3NzFmYjAxYzAwZjFlMTgzZWUgcHkzaworNjU4MDUgMzE5NWJkNmI2ZGQ3Y2RhZWZiZThkZjE0NTRkOGQ4NjRjMTY5ZjMzNCBweTNrCis2NTgwNiBmYzkwYjU4MTUxNmViZDhhMTkyMzE4MGQ0ZGU0N2VkOWU0Nzc1MjAwIGxlZ2FjeS10cnVuaworNjU4MDggMWE0MWQ0NTZkODAyYmZlNDE0NzU0ZTYyZjcwYTFmNDJiMTYyOWQ4NSBweTNrCis2NTgwOSAyMTE5MjcxNDdjNjA2ZTJkN2Q4NTA3Mjc0OTQ3NzM5YTRlM2M2OTNjIGxlZ2FjeS10cnVuaworNjU4MTAgMjI1NGFhODI0ZDRkYTNiZmUzZTA5NTFjNDYxZjkzYmViM2U1YmMyNiBsZWdhY3ktdHJ1bmsKKzY1ODExIDc1MTdiZGNjNzY5YTFlMTc1MDBhZWE3YjJjMTI3ODUzMzY5YmM4ZjcgcHkzaworNjU4MTIgNDIwNzIxOWFjYzdhODAzOWMzZGU0NTljNWY3MzMyY2FlMTlmMjIxZSBsZWdhY3ktdHJ1bmsKKzY1ODE0IDRiNDU2NGJlYjZkYTJlMGIxMzRmOTNhZjAxYjRmMTEzYmQ1Nzg0YjYgbGVnYWN5LXRydW5rCis2NTgxNyAxN2YwMTA1MTdiMzM1MDYwNTJlNmFjYzI4NTc5MzY3NjdhNzJmZTg1IHB5M2sKKzY1ODE4IDFkMjllNTNjZTJhZjY2N2Y2MTBhNTVkZWI2ZWFhZWI3NzliZDE3NTAgbGVnYWN5LXRydW5rCis2NTgxOSA3NjYyMDAxMGQ3ODI5ODYzN2ZiZDYzZDJkZGI0NDVjYmFkYTUzMzIyIHB5M2sKKzY1ODIwIDVjMGU1ZjJjYmM3ZDg5YzBjYjBmMDAyZTcwODc3YmVkNmQ2ZjdkZTcgcHkzaworNjU4MjEgMjYxNGQ1MDFkZTlhZWZjMTdlZTc4NTBjZjNjNDg1NTI4OGFlNGVlMCBweTNrCis2NTgyMiBlMTQzYThmMzUyNDE3Y2YwNDljYzkwYWQxNTIwZDIxZjZlYjhiYmZiIGxlZ2FjeS10cnVuaworNjU4MjMgNDcxYTRhODhmNTFjNjRjMDMyMzEwYTc5ZjExODJhOGI5Mzc0NWYzMyBweTNrCis2NTgyNCAwMjRiMmI5ODQ4NjY3NmNjNDFiNGU3Yzc2MzI3ODczYTg3ZTdjNTNjIGxlZ2FjeS10cnVuaworNjU4MjUgMWZkZmEzODJhZTEzMmUxMDNiODQ5OWM3ZDg2NWE3NjI5NDRlZDA4NyBweTNrCis2NTgyNiA5ZDE4NTZhYmE5ZjI0OTNkYTgxOTc1Yzk2MzlkNzg3MDY1M2QxZjNhIGxlZ2FjeS10cnVuaworNjU4MjcgZDY1MzdhM2UxYjczYzAzOWJjM2RmY2MzNjEwMWU0NDA4ZjVjMGUzMiBweTNrCis2NTgyOCAyOGQ5M2M5YzNhMDMwMzVjYjFkM2I1MTA2YzZhZGE2YTE1MjI5ZGNlIGxlZ2FjeS10cnVuaworNjU4MjkgZGI1ODkyNDFlNmY3NGM4OTU1ZjU2MDY2ZjY4ZjgwNjNjY2YxMmM5MyBsZWdhY3ktdHJ1bmsKKzY1ODMwIDZkZGEwMTY0MzEwNmNmYjJkMjcwYjBiNTg5OWFjODdmNjk0NGZmYzEgcHkzaworNjU4MzEgNTlkOTdhM2VlMjE5ZTQ2MTVjNjBhMzk5Y2U3ZDEzMTU5ZjdiZWVkOCBweTNrCis2NTgzMiA5MmY0YmIzNjYzN2MzNGU4Mjk5MzZkYWJjOTVmMmM1MGQwMTRkMWMyIHB5M2sKKzY1ODMzIDhkODgzNTA1NTNjM2Y1YTY3NDk1MjkyMTNhNDVkYTNiZTI0NzVlNGMgcHkzaworNjU4MzQgOGE3YTI1NDU5YzZmMDIxOWEyMzllZDEyMjA1OWEwZTc3Y2E1MTA5OCBsZWdhY3ktdHJ1bmsKKzY1ODM1IGUxMDcxM2IyZDU0MzM4ZDk4NzkxMzRhODlmZGY5MzkxMzlkMjM4YTAgcmVsZWFzZTI1LW1haW50Cis2NTgzNiAzMjkxNDkwNDhiOTBjYzk1NjU4ZTEzMjFjZjAyZjNiN2YzZTEzMjdmIHB5M2sKKzY1ODM3IDJiYWMwZDQyMTkyOWU0NTY5ZTlhYmFlMzUyNzU2OWQxNTAzYTQzY2QgcHkzaworNjU4MzggNDI4ZDM4NGVkNjI2MzQ5OTZkZTViZDc0NDk0MTAyMmZjM2FlOWY3MiBweTNrCis2NTgzOSA1YzEwNWY5YTc4ZThlMWY5OTljZWUxMTJkMzJkYmJjM2E1Nzc4ZjJiIGxlZ2FjeS10cnVuaworNjU4NDAgOWE4OWZiNTgwOThiNmJhNWNmZTJkMmYzYzUxOGI1OWY2ZGNkNGEyZSBweTNrCis2NTg0MSA1NDEzOGVlMjBlNTdjMmU5YWQyZGZiYzQxODY1NTFjNzUyZGIxODcyIHB5M2sKKzY1ODQyIDAyNzVkODFlMzFkMDljYmUzN2FjOWIyZjUxOWY1ZGJiYzc4NmQ1ZmEgbGVnYWN5LXRydW5rCis2NTg0MyAyOTFhNmYyMjAzNjA3MGM1YTAzMDQxZTE5OTIxMTJjOTBjMzk0MDdjIHB5M2sKKzY1ODQ0IDgzZjc3OTg1MjRmMWM3MDE5YWMxMDk5MTMxMjRmNWIwODc5YTYxNmMgcHkzaworNjU4NDUgYjBlM2FjODZjZGQ4MDJhMzFmNWU2ZjI1M2EwNzExZDMwMDI2YTdmMSBweTNrCis2NTg0NiA3ZDY0ODA2ZmViMTU2MDhkNmFmMmVlYTk4MDA3ODE3NzBkNWI0NmJmIGxlZ2FjeS10cnVuaworNjU4NDcgNWUzZmFhZTZlZmM2NzE5ZDQ0YmMwZWRiM2IyN2JjMzIxMzhkZjU1YyBweTNrCis2NTg0OCAxNGYyYTRjYjU3ZGUwNDM1NzZiODc4YjI2ZmQ1MGExODZlMmU4NDRhIHB5M2sKKzY1ODQ5IDdjODFkNWFhNWY0MTdkMDg1Nzc2ODUyYzIyZmNkM2JkNzk2MjRjNmIgcHkzaworNjU4NTAgMThhYTkxOWRmMjQ1YWI5ZmVmMTE4NjI5ZTgxZmMyZmY0ZmNhMmVlNCBweTNrCis2NTg1MSA5NGE3ZmIzM2FmZWE1MjkwMDg4N2Y3MTA4NTcwNDg2ZTQ4NWFkNTBiIHB5M2sKKzY1ODUyIDQzYTg4NTg0NGFkOGQ0ZTE1MTZmMGRiMmFhZGVhMTBkNGY0NGY4YzEgcHkzaworNjU4NTUgNGRmMTIyYWRhNzZmYWY0NmRhMzBhMTgyZGUyYjdlZWZhNmI1ZTU4ZiBsZWdhY3ktdHJ1bmsKKzY1ODU2IDgzZWIyYWFhNWZhYWE0NDU5Y2E2ODMwN2EyNjNkMzZjZDcwZDkzMTUgcHkzaworNjU4NTcgMTRlODE5YmVlZWFiOGMwNGFjNjRjZTYxNWM3ZGEzZGQyNmUxMjUxYSBweTNrCis2NTg1OCAyMDlhNDU4MWJkOTE5YTAzNTQ2YmZjOWQwMzdmZjBkZmY4NjA2Y2UxIHJlbGVhc2UyNS1tYWludAorNjU4NTkgN2YwMzhhNDcwMGIxYzA4MDRlYzM5OTZlYWJjNWNiZmI0MTk5OWM1OSBsZWdhY3ktdHJ1bmsKKzY1ODYwIDgzYjJkMDdiNDc1YjUwMzA3YjQ4ZjZhZjU3MzllMTZiYWI2ODU4YmYgcHkzaworNjU4NjEgMjQ4MDYyMjk2NWU2MDA4Yjc4ZDUwNzRjMDg3MmRkOTVlZmVmOTk1NyBsZWdhY3ktdHJ1bmsKKzY1ODYyIDc1MTFmM2U2NzJhMjlmMzcyOTVkZTUzZDgxZWQ1MGNmZDQxMzYyM2MgcHkzaworNjU4NjMgZWEzZDEzY2Q3YzFlNmI2ZjVlNGRlNjczN2Y2NzJjMzRlNjA1OWMxZCBweTNrCis2NTg2NCA3ZWE4MDVkODc5ZTFhYjU3Y2IyODYyMTg4YTI0ZDExODkxZGUzNDU4IGxlZ2FjeS10cnVuaworNjU4NjUgMWEwNTlhYWZlNDlmMGU0Yjk5NGVjMTg0NDc0OGVkZTRlMzk0NGQ1OCBsZWdhY3ktdHJ1bmsKKzY1ODY2IGFhNjEzMjA5MzMyZDUxYWI2ZWM2MjliODJhZWYwZDcxYmNhYzkyZTggcHkzaworNjU4NjcgMjVmMDZhNzAzZjg5YTllODk2ZjU1MDg3NGRhZDFjZDNlNzQzMmRjOCBweTNrCis2NTg2OCBiZDM3YTE4NjYzOGYyODNkNDNkY2M1ZDQzZmFjMzc0ZDU5ZTYwY2MwIGxlZ2FjeS10cnVuaworNjU4NjkgZjA0YjcwM2YyZGRkYTFiMTE3YTE5NTU2YjAyOWRlNGY3Njk0MWZmNyBsZWdhY3ktdHJ1bmsKKzY1ODcwIDk3YTI0YzYwOWMyZWU4ODA0MDA5OGE0YzhmM2I5Y2FiYTAyYWE1ZjkgbGVnYWN5LXRydW5rCis2NTg3MSA2ZDIyZWU4YzczY2EzNDhjMTE0YTZmYjc5MzIyZmZiNGQ2YmNjZWUxIHB5M2sKKzY1ODcyIDQ5ZjUyZTI4NWE2NDAyYmNkNWY5ZDBlNTU4MDA5ZGQ0NWI3YWYyZWEgbGVnYWN5LXRydW5rCis2NTg3MyAyYjgyOWZmYTQ4MWI1NzQxZDBlMDQ4MWYzMDRjMDU5NWMzZjgxNjFhIHB5M2sKKzY1ODc0IDk2YTRjZGE2NWM1NTJmZmFkODNjM2M4YjVjYjQ5M2M4ZDE5ZmY0NWQgbGVnYWN5LXRydW5rCis2NTg3NSA1MTA5MTkwNzMxMTlmOTE5ZTI2MjM4ZGVmMTU5Mjk4OWYwN2FlY2QwIHB5M2sKKzY1ODc3IDZhYmFkYTA1YzMxMzEzNTkxMjQ2YjJhZjc4YTBiZTQ3ZWM2NWQzMmYgcHkzaworNjU4NzggZjQ5ZDkzMTRkNDM5MTExYTFmYzBiMjc1YzM3NDhiZDJlNjBiZWVlNyByZWxlYXNlMjUtbWFpbnQKKzY1ODc5IGVmMTk1NTg0NTUwOTRmYzFhYWI4M2MwYmZmMDRiOGQxYWUzYzkzZTEgcHkzaworNjU4ODAgNGI4ODA2NDU2MDc4NzFjMDA1ZjkwOWFhZmUyMTBlYWM4ZDBmZGI2NyBsZWdhY3ktdHJ1bmsKKzY1ODgxIGM3ODIzYjM1MWZiY2I3NTY0MDI5MGI5OWViOTAwZmEyYWU5ZTFiNjIgcHkzaworNjU4ODIgODJjNjk2ZjA0MjRhNDdlNDZhOGEzYThiNDBjODg1MTU4ZTBkODUxZSBsZWdhY3ktdHJ1bmsKKzY1ODgzIDk5ZTc4M2VjNzc4MTU4NzFjNjdhY2IyMTY3YzY3ZDlkNjQxYzIyYzIgcHkzaworNjU4ODQgYzFhN2ZkYjI0NjI4ZjI0M2UxY2YzMmViMDE3NDE4ODljMzJmMzE1NCBweTNrCis2NTg4NSA1MDRlNmQwMzBlODRjN2RmYzQ1OWY0ZWI2MjZhYmJhNmI0ZWYyZTUzIGxlZ2FjeS10cnVuaworNjU4ODYgNTAxMjU2YzU0Yzg0YTY0ODUxZThmNjdlNmM5MDExYzNlNWQ4NTI1NiBweTNrCis2NTg4OCBmN2E2Mzk2YjQ5NmYwMjJhYzk5NTY4NmFjNWQxOWI1NzNkYjNlZjJmIHB5M2sKKzY1ODkwIGU3ODAyNGFmMGNmMDNhNDdmZDk3NTg1ZjkxNDQzNmY4ZjIyMjlmMzAgcHkzaworNjU4OTEgYThmOThhNzI3MzcxMjEyMmFiOWU3NGNjNzM4NmU1YmM3M2IwNzc4NyBsZWdhY3ktdHJ1bmsKKzY1ODkyIGJlZTQwMDMzNmZkNWM3YTA0MzQwN2Q3OTU0MDJkZGU4YWQ4YWEyMjQgbGVnYWN5LXRydW5rCis2NTg5MyBhYmRlNGRiMzA3YTU5YzU2MTE4M2RlN2ZlZmNkMDM2NDljMjQ5MzNhIGxlZ2FjeS10cnVuaworNjU4OTQgMWFmMjExMjM2OTA0MzBkZTA3MDEyZGJkMDgxNWYyOWE5NWFjNzIzYiBsZWdhY3ktdHJ1bmsKKzY1ODk1IDhmMjE1NmIxNWJiOGU2OTBjYjQzNjIwNjc5MWUxZjZmNjM5MTU2ZTYgcHkzaworNjU4OTYgNmNkN2IxOGJiNzQyYTM2YTJjNTRmY2UxNWU4NWY3N2M3MDExNDZmOSBweTNrCis2NTg5NyAzYTExZTc5Yjk0NzE1ZGRkNzEwMzY1YTM5OGVmNjEyNzUyMDhmYzdlIHB5M2sKKzY1ODk4IDBmZTZjYjBjMzEwZDcyOWRhZDUwYjM2NWNiNDFhZDYxZThlMThkYTAgbGVnYWN5LXRydW5rCis2NTg5OSA2ZDZkM2UwMzc1NTAzY2QyNWJlNzI3MzZjNWM2ZTU4NWYwMGFiOTFkIHB5M2sKKzY1OTAwIGQ0MjYyOTE4NTM4MmViM2Q3Y2ZkYTFhNzBhZjM4YWIzNGE2NjJlNTkgbGVnYWN5LXRydW5rCis2NTkwMSBjMTI1ZTc1ZDIxYTA0ODc3NGY2NWM1YTdjODRlNjM5MTczNjM2YWMwIHB5M2sKKzY1OTAyIGEzNmI2YzFjZWM1Njc4MjI2OTY3MTg0NmRmNjQ3MGNmNzQzNDA4MGEgcmVsZWFzZTI1LW1haW50Cis2NTkwMyBlODk0MjA0YWRmYmRhYWEyN2QwNTM5ZWFkMTU5MzY4YmJjMjUwNTY0IHB5M2sKKzY1OTA0IGFlNWI3M2M1MjA5N2U2YTM0NjZmZDVlMGVmZTQ4YjE5MGU3YWQ3MTUgcHkzaworNjU5MDUgNTFmMmY4ZmVlNWM0NTBkMjFmZjZhYzg4MDE1ZTc1NzY4MzgyZjAxMSBweTNrCis2NTkwNiA2Y2M4OWM2MGY3NGQ2Yjk3NjVmNzZlOTU0YTc1MzMzMDc3N2M5N2NiIHB5M2sKKzY1OTA3IDRmNTAyMjgyMzE5OTBlYTFkZWI5Yjg5Mzc2YzBhMDg1NjBmMjRiYTAgcHkzaworNjU5MDggNjdjYjMzODgwMzc3YmMzYWRlMWE1OGM4OTYyZDZhZTIzZWZlNTA1NiBsZWdhY3ktdHJ1bmsKKzY1OTA5IDExZTcyZWJmOTA2YWVmZWJhNmQ4MTNmNTI3NjY4ZWNkOWY3Y2IzMzMgcHkzaworNjU5MTAgMWJlNzg5MGNkNzU5NzgwMTZlZmQ3NTg5ZWM2NGNlZGZjMTNjMDhkNCBsZWdhY3ktdHJ1bmsKKzY1OTExIGMwMzAyNGRiODAxZjk2YWQ2NTk0MDE3MDgwODI4ZDNiNzQwYzQwNTQgcmVsZWFzZTI1LW1haW50Cis2NTkxMiAwNDBkOTU4MDUwMGNkYjY3MjM5OTY5ODYwYTM4YTllNzAxZDE0ZDgyIGxlZ2FjeS10cnVuaworNjU5MTMgZTk5NjE0Y2EwMjA0YjdlNjAzMWJmYzIyN2Y4ODI2NGQ3MGFlZWJiYyBweTNrCis2NTkxNCAxY2I5MDhhMDQzYjNmMGY5MzgzOTc3ZTU5N2NmNGE2ZWViNWMwMTQxIGxlZ2FjeS10cnVuaworNjU5MTUgNzYwOGFmZTExZmI5NjA0OWU3ZTQxNmZjMGNiZmY0YmFkNzIxMWIxYyBweTNrCis2NTkxNiA4MTMzZmJiNzQ1ODc1NGE3MjVlNjcyNTAzNjAzYmIyZWQ0ODE4MWU4IHJlbGVhc2UyNS1tYWludAorNjU5MTcgYjE5OWYzNDE5ZTY1ODAyYjlkZDY3MmJkZmQ3OThmMTZiNjBkYWY3MCBsZWdhY3ktdHJ1bmsKKzY1OTE4IGExOWQ2N2Q3N2IyMmY3ODdiZTE2NWM1MjA5NzhlMmI2Yjk5ZGE2MjkgcHkzaworNjU5MTkgODhjYTUxNzU0NmZkMDIzNTdjZjcyMzNkYzk0N2JlMGNmM2I0NTE1NyBweTNrCis2NTkyMCAwMzNkNjNiZjcwOGVhMmFkNDFjNTJkNGI4NDE0NmRhMjMxZmE5YzY4IHB5M2sKKzY1OTIxIDAxM2Q0ZDg0MDdjYjlmNjhlNzY1NmQxMWY2MmI3OTE4YTk1MjFlNDUgcHkzaworNjU5MjIgYzYyODYyZDczZjllYzY0ZDY1NTQ5NGNmMWY2MTQ0MzQ0NmYyZGVhMiBsZWdhY3ktdHJ1bmsKKzY1OTIzIDczMTY0NTY1YjkyMGUyMDU5NmQzM2E5OTNiOTllZDdhNzkzN2U3NjUgbGVnYWN5LXRydW5rCis2NTkyNiAyN2QxOWI2NjUwMzU3OWQ4YjNhNDFlNTJhY2FiOTA3OTlmMmJiM2RmIGxlZ2FjeS10cnVuaworNjU5MjcgNTA5ZTMwYTc5NjhlMDFiZTMyOWVjMTIxNTQwYjNlNzU1ZmM0ZTU2NiBweTNrCis2NTkyOCBjNDExY2Y2OTQyODk2Y2MyMTYwODlhNjk1MDY0Njg0NDMyMmYyZWE0IHB5M2sKKzY1OTI5IDAxYjllMThkNjlhYzQ0OWVlOTU5YWI1OGExYTFhOWZkY2Y4YjFiNDkgcHkzaworNjU5MzIgYTBhYmFmZjk3ZTAwMWE0YjkwZTQ2ZGYzNjdkN2YxMmFjNTBkYjllZSBweTNrCis2NTkzMyA5NTlkMWFhOGI1OGFlYmUzMjYzMGVmMDJiZDQyYWVhZmVmMTk2MzNiIHB5M2sKKzY1OTU4IDU3YTg3MzU2NDdjZjg3NDVkMGI2MzI2NTBhYjQ4NDQzMDBjZTY0ODMgbGVnYWN5LXRydW5rCis2NTk1OSBhNzcwMjJkYzNmNjFkMjIxZDE1OGZhOTgxN2Y0MGYyNTI3YWNmZTMwIHB5M2sKKzY1OTY0IGUzOWQ0NGFkYjYxODA2Yzk2OTJjM2MwZTBhMjMyNDU2ODdhNzUzNGQgbGVnYWN5LXRydW5rCis2NTk2NSBhOGQ2OWMxYTNmNGVmZDM4NzY4YTM3OTM4NjNiZGVlM2VjZDcyNjZhIHB5M2sKKzY1OTY5IDRmYWFiYjE4NTYyYzYzZDcyNmQ1NmE3YzBlMGNkNTQ1ZDlmMDk2MDcgcHkzaworNjU5NzEgNGIxZjI2MmNlYmRmNDAwMzI3MTlmMjUzN2Y5ZThiMGYxMGVmZjczNCBsZWdhY3ktdHJ1bmsKKzY1OTcyIDJkYzY0NjlmYzRjNGQ0YjNjNmM3MzhmODk0NzUxYzM0YzgzZjEyY2MgcmVsZWFzZTI1LW1haW50Cis2NTk3MyAxOTQ0ZDMxMDQwZTMwNjYxYjNiYzZkY2M5YmMwMzhiMDRjYzMzYTVmIHB5M2sKKzY1OTc1IGFmYmZkOGYyMTRkZDEzMzdkNmQxNzVjOGNmZmFmYWQyZTdhNTAxZjEgbGVnYWN5LXRydW5rCis2NTk3NiAyYWE3OWFkNGViODUyZGRkZDZhN2FhNWEwNTI3N2U4OWYwN2E3OTA4IHB5M2sKKzY1OTc3IGJjZTAzZjg3ZjY1ZGIxYTEwNDRhMTRjOTg3YWM4YTBjMDkwZjUzMTYgbGVnYWN5LXRydW5rCis2NTk3OCA0NmMxYmNjNGMxZDMwMzc0MDU1M2FiNjg2NGJjMGFmNTJkODYzMTVlIGxlZ2FjeS10cnVuaworNjU5NzkgZDk1MmU3NTNjNjExZjc1YWFjZGY1NzUyYzVjMzRlNTY1MDM0OTIzZiBweTNrCis2NTk4MCA3NDg5OWU2Yzg3YTVjNWRhNmFlYjljM2U1ZTgxODI1OTdhYmQwNGYzIGxlZ2FjeS10cnVuaworNjU5ODIgZjk3MGE0Zjc1NjBmZmEyMGU5NGI1NWE1ODk2N2RkZDRmYWE4OWY2OCBsZWdhY3ktdHJ1bmsKKzY1OTgzIGUzZTUwNzM1MGVkNGQ0ZGU4OGYxZGExNDNkYTAxNjI0Mzg2ZmIxZjMgcHkzaworNjU5ODQgMjA0NDMxZDQ0Y2RjNDkyODRjMWMzY2RkODE1YmU3ZWRjZjRmNTk5NiBsZWdhY3ktdHJ1bmsKKzY1OTg1IGNmZDc5YTRjMTYwNDMzZGQ1NDg1NmM0MjhlZmQzNDFkOTc1Y2QxMTggcHkzaworNjU5ODYgNzVmNjRmZDFmMTEzNzg4YmVjNGZlN2VjZWE3ZGZkYjhlYmFhZGYxYiBsZWdhY3ktdHJ1bmsKKzY1OTg4IDY1YjJkZDQ2ZTE3MTE4OTdiOTMxM2NiYzg4NDFlOTczMTI1ZDhlMmEgcHkzaworNjU5OTQgYjUyMTM4M2I4MWE3MTU3MTVlYWY3ODk1NzNkOTlhNzUzZWVhNmI4YyBweTNrCis2NTk5NSA5NjllZGMzYjcwN2YzYmZhODQzYjE1Nzk2MmViMmM0OTk0OGFmYzZiIGxlZ2FjeS10cnVuaworNjU5OTYgZTdiODU4OTBlOWIxMDczNTA0ZDE1ZGMxMzBiMjUxOTllN2JmNmRjNyBweTNrCis2NTk5OCA1ODdjZDRmNjZjMmRjZDk1ZmJjOTUxNDFjZmM2NWY3MWY1Yjg1MmFiIHB5M2sKKzY1OTk5IGRmZTU0NmI2NmVlZmQ3NTgzYWQ1MTZjZDY3MmEwNzE0ZGJlYzYxYzYgcHkzaworNjYwMDAgNzZlNzFjZWNjNGQzMTNjYmMwYTZmM2UyNTMzMjg4MTU5ZTg3NjAxMyBsZWdhY3ktdHJ1bmsKKzY2MDAxIDA3ZWM3MmNmMTljN2Q2MWM4YTJkMjY4MGVmMDI5NTk5ZGRkYmJlYjcgcHkzaworNjYwMDIgN2JiMWM2MGVhZjY0ZjU5ZTViY2VjODVmNjI2NmY0MmY2ZjcyNzZhZiBweTNrCis2NjAwMyA4NWMwOGNmMDhiMmI1ZWVmNzUzZDRlZGVjM2JmMTk3OGQ0MDdkZTJiIHJlbGVhc2UyNS1tYWludAorNjYwMDQgZTE0NTUyYjczMTdiY2M5NTU5NDNiYWJkZjM1OTIzMDZlNGIyZTAxOCBsZWdhY3ktdHJ1bmsKKzY2MDA1IDY4MmU5YTQyYzE1ZDUzYjQwZjAyYmYzNGIyYmNjNzc5OTYzZTkxNDQgcHkzaworNjYwMDYgYjE2ODJjNjkzYjlhMTVkODc5ZDY3NTUyMWY2MWQ1ZGQzZDk3YTc0MyBsZWdhY3ktdHJ1bmsKKzY2MDA3IDVjNzVhMzNlZjViMjc2MzYzN2Q4ODgzYzVkMWNhNmM1OTI3Y2U0ZTIgcHkzaworNjYwMDggZDJiYTM2YTdhNzEyNzQ1Y2I4YzU3MDEzNzRlZmEyNmY3ZWE4YTk2MSBweTNrCis2NjAwOSBhZmI5ODA4YjBmMzBmYTI1YjM2NjhjNzQ4NWRjYjIxYjAxMGUwNDQxIHB5M2sKKzY2MDEwIGEyNzIwMzUzZjBkMzQ5ZDc0MWU5YjU4YWMyM2QyYzFjMmFlOWM1ZjQgcHkzaworNjYwMTEgOTg0ZTFjNjAyOTc5MmM5ZjI5NDU3NGFhNmQzYzU2NjgyM2ExNjFmZSBsZWdhY3ktdHJ1bmsKKzY2MDEyIDJhNmFlN2U4YzdjMzZlMDMzZjIwYmFmMzU5NmE2ZjZiNmIzMTJkMmEgbGVnYWN5LXRydW5rCis2NjAxMyA2ZWExYTcyMGIwNTdlZTFiYzhlZjE2OWUwNTQzYmMyNzYxYjMzOGQyIGxlZ2FjeS10cnVuaworNjYwMTQgNzBlZGFjODkwZjJiNmRmNjJkYzkzMDhmN2UwNTE0YThkYjNjYjg3YSBsZWdhY3ktdHJ1bmsKKzY2MDE1IGMwMDE5ZDQ1NTUxZGM3NTBjNzY2NmYyMzA5ODM3YjFkNWM3OGJlNTEgcHkzaworNjYwMTYgYzk1ZjM4N2VkMWY0MjZjZTY1MjFjMDhiNjU5ZjZiMThhZjMyM2Q3ZCBweTNrCis2NjAxNyA1OGQyOTVlNzgwMGY3YTRmMmZiN2EyZjIxZjVjYTFmOThlMzBhMjVmIGxlZ2FjeS10cnVuaworNjYwMTggZGU5NTRkZDY3OTdiNmU2Nzk0NWRhZTcxOTljN2IxMjE1NzRhZmZmOSBsZWdhY3ktdHJ1bmsKKzY2MDE5IDg4MTE5ODNkZmNhZjhiMjI2ZjQzNjczZDNkODY0NTA1NjFkYWRjNjUgcHkzaworNjYwMjAgMWE0OTIyZmE1MTYwNjU5MjFhY2QwNzQ4N2ZjZWEyMmZjNzUzYjliMiBsZWdhY3ktdHJ1bmsKKzY2MDIxIDY3OGEwZjBlNjFiYzVkNmJjNTI2MWVjNzNiN2E1NTE0MjZiY2E0NjggcHkzaworNjYwMjIgMmE0N2IzYmIxMWZkOGJkOWVhOThmMmU2NzE1NzAzZDkyMDI5ZmI2YiBweTNrCis2NjAyMyBkZjYyNGRmNmVmYTNjZGEwNDFlYTRjNGEzMGJmYjk1ZmI0ZDhhNTRiIGxlZ2FjeS10cnVuaworNjYwMjQgM2RjNGRmYTNlYmExNjhjZmJhNDAxNmY5YmY3ZTAzOWQ4YzM0MjM2NyBweTNrCis2NjAyNiA2ZmFjNjM2MTMzZjAxMDZlZTRhMjllMTQ4NjI1YTI1YTA1OWI2MTg1IGxlZ2FjeS10cnVuaworNjYwMjcgNGZiN2U3YjJjOTYyYWMwODY5YjlhZDRkZDI1YmFmMGJjNTg2NjhkMSBweTNrCis2NjAyOCA5ZWIwY2QzMDMyNmQ4YjY1NDRiZGIwYmJmYmI5NWFjYmRiODVmZmQyIGxlZ2FjeS10cnVuaworNjYwMjkgZGQxNzdmNTc2YmU4YTk1ZTZlMWM4YThhMWVlOWE5ZGEwM2IwNTI3YiBweTNrCis2NjAzMCA1YTIwNTkzYTgxOGZjMjMyYWJjZjYyMzUzMTIyZjg2ODRmNDEwOWU3IHRsZWUtYXN0LW9wdGltaXplCis2NjAzNCA4MmY3M2IwYjVhMzA4ZTk4MmM1MDMyMmY5ZmNkYTM5NzNiOWYyODQyIHB5M2sKKzY2MDM4IDU0OGRjY2M0MDA4ZWQ5MzRiYWZhZDVmN2I3MTBjYTQyZGJiYjIxYWIgcHkzaworNjYwMzkgZWRkMmNhODk0YTY3ZGM2YjRmOWNjOTJkNjhmYTQ1YTc3NTk1MDMzNiBsZWdhY3ktdHJ1bmsKKzY2MDQwIDAzYzIzYzUwNjU0ZTVlM2E2MmE4ZmVjNmY0YTdmYjRkMWIyMWNmNmMgcHkzaworNjYwNDEgNGRiMWY1MDk4MTc1YWJjYzU2ZWFkNmYwNWQ4OTIxYjVjM2U0YmIyYyBweTNrCis2NjA0MiBkNmU4NmE5NmY5YjM1MDg5Y2IyYTk3NDYwNzNkMDVjOGMwYWM2ZTA1IHB5M2sKKzY2MDQzIGQwMWMxZDc2ODg0MTUzNDBlMzJiNmI3MzE3ZmMxZjk2YTc4ODA1ZGQgbGVnYWN5LXRydW5rCis2NjA0NCAxMmQyNzYyMDc2YmFhNjExZjc2OWJiZTgwNmZlZGQyNTg3NjA1ZmVlIHB5M2sKKzY2MDQ1IGM0MmJmOThiMjYwZjM1MjA0Njg0Mzg3MjU2MjQ3NDQ1ZTAyNTM2MDUgbGVnYWN5LXRydW5rCis2NjA0NiBkOWZlMjllOTVkNjAxNWI3ODM3NTRjNDJkYWI3NzM3MTFhODY1M2I3IHB5M2sKKzY2MDQ3IGRlNmZiOWYzNDUxMzI3NWQ2MzZmNTAxMjg0N2MzNmEzNmM1Y2ExOWQgcHkzaworNjYwNDggNDdhODAxYzI5ZjEzZDQ4ZTZjMGZjZTc0ZmY5OWQyMzQ3YmRiZTI0YSBsZWdhY3ktdHJ1bmsKKzY2MDQ5IGFhM2M5MGNlMTkzMmJhZTc3Y2E5YTY0OGQ4MTFjODEzMWY5NzNmYzAgbGVnYWN5LXRydW5rCis2NjA1MCBmZGQxZWUyMGFiODZiMDk4MDdkMTlhNDQ3ODEwZGRhNmYwNjM5ZjZlIHRsZWUtYXN0LW9wdGltaXplCis2NjA1MSBmMjdjY2ZkZWE4MzQwMTIwMzhjYmEwODI3YjM2ZDc0N2I1OTk0ZjdmIHB5M2sKKzY2MDUzIGVmYzQ5ODYzY2Q4ZmY5YmIzOWQxMzZhZWI1ZThiZDIzOWQwMWUyN2EgbGVnYWN5LXRydW5rCis2NjA1NCA0NzE5MmQwYjczMWYxMDQ5NmYzZTYyMzJkOTliNjVhNTBjZDZjOTM3IHB5M2sKKzY2MDU1IDZjZWI3Yzg5ZTc3NmJhOTI0NDk5NzY5YzY5NjliNWUzYjA2N2EwMTkgcHkzaworNjYwNTYgYzU2MmM4ZGFlNDlhNjA1ODcwZTZlOGFhNmZhN2I4ZTJlZTkxN2NhZSBweTNrCis2NjA1NyAyN2UxNDJkOTlhNzE3MzkzNmE2NThmZGIwM2NlZjg4YzEyNjdkYjg2IHB5M2sKKzY2MDU4IGJiZmZlMDkxNGM1NmU2MTBmMTE4ZTEzYmVhYTA3OWIxOTE4YmUxOTIgbGVnYWN5LXRydW5rCis2NjA1OSAwYzY1YzgwMjc1MmEyYjgyMGQzZWIzYmRiZjBjYzY1NzY2NjIxYmNlIHB5M2sKKzY2MDYwIGE4YzUzNTgwYzVlYzQ3MjI1YzE4ZjRjNTFiYWZlMWMzZGI0YWIxM2EgbGVnYWN5LXRydW5rCis2NjA2MiAzMDgzNGI5YWExOTM3ZjFmZjgyZDQ4Nzc0MTMxM2RhODUwNTJhMGE4IGxlZ2FjeS10cnVuaworNjYwNjMgMDEzMTM4Y2RiODczYjJlY2MxN2ZhNmI0MTRjZjM0ZjRhNzM0ZWY4YyBsZWdhY3ktdHJ1bmsKKzY2MDY0IDAzZTIxNmRjOGZlY2NiOTFhNDEyNzQyNjAzOGRkYzc0MGIxNzA1ODggcHkzaworNjYwNjUgNTZlZDQ0NWZhNjFlNjAzNGQ0M2IyOWNkNzI1MTk1NDZmMThiM2JmNCBsZWdhY3ktdHJ1bmsKKzY2MDY3IDk2YmM1ODk2YTI0MDU1MWNkYjc2NDM2YmZjZjdiNDk3NDFiNDUxYTAgbGVnYWN5LXRydW5rCis2NjA3MSBhMmYyMDI4YjczZWQzYWJlNTY4YWI2OTBiNDZhMGM0YmU5YTQ4ZTBmIGxlZ2FjeS10cnVuaworNjYwNzIgODRiZGQ1M2UzOTA2NDg2ZGViMWMxNmZmMWZlMzg1NzMyNGVmMTdjMyBsZWdhY3ktdHJ1bmsKKzY2MDczIDk2MDU4OWQyYTEyZDlhZDQzNzhlNTc3YzcxZmFkOGNiZDZkZThiMDkgbGVnYWN5LXRydW5rCis2NjA3NCBmYTdiNjFkMmJiM2Q3Y2M3Y2I3ODFlNjBmYmE5MTcyZDQyZTRkNGY1IGxlZ2FjeS10cnVuaworNjYwNzYgMTFkOGZhM2M4OGQ4ZTgzNjgxZGMzYWVjNDFiYzYxZmRmODFiYTA3ZiBsZWdhY3ktdHJ1bmsKKzY2MDc3IDQ4YzVlYjUxMzM3MGQ4ZmE4ZDRlMmU0OWQ5YzU3YTVhNDQ3NjYwYjcgcHkzaworNjYwNzggYjUxNTY5MGIzNzlkN2RkZWFiNTI4M2VhM2UwNTcxYzMzMDBhMmRhMyBweTNrCis2NjA4MCBmNjc5NjNjZDQzOTUzY2MxZDllZTA1MGExYjE1YWM4YzQyNzhlZjljIGxlZ2FjeS10cnVuaworNjYwODIgYTFkOWU4M2JjNzZkYTNhZWUyN2RhNGY5N2RkZTJkYTkwZjg2OTBhNCBsZWdhY3ktdHJ1bmsKKzY2MDgzIGViMTM0ZWVlMzIzMjI2MDAzNzNmNTQ4ZjY4NmIzNWJmOTBkYzA3ODQgbGVnYWN5LXRydW5rCis2NjA4NCAzNmFkNWU3ZTM5YjRmYmQ5NmNjMTk4MTRlZGM3ZTcwNmEyMjVhYTEzIHB5M2sKKzY2MDg1IDljMTc1Zjg4NjBlMjNkZjM2ZTE4YTBkMzE4MmRhMGVlYTQ4ZDA4ZmUgbGVnYWN5LXRydW5rCis2NjA4NiAyMjFkZTEzOTQ2ODExM2NmNTg5MTExZDg0NzMyNjRjMmJiMTNmODQzIHB5M2sKKzY2MDg4IDgxYTFhMTU0NTE3MjJiODE5NWY1Nzc0YTZkYzk0ZGM1NTNhZGZjMzEgbGVnYWN5LXRydW5rCis2NjA4OSA1ZGE2ZjIxY2Y4MDU5NDIxZDFkMjQ2NDg0Y2VkY2M0ZjhkZDU1YmZkIHB5M2sKKzY2MDkwIGZjMTFhOTA0ZjZjZDE3OTBhZjkyMGU4NDYxMjM5ODEzNDVlM2I5ZDcgbGVnYWN5LXRydW5rCis2NjA5MSBiZWU2ZWI3Njc3NDI3ZjgzZGE5NTY2YWI2NGE0Y2E3MGVjODBlM2ExIGxlZ2FjeS10cnVuaworNjYwOTIgNjI0YjQ0YjdjZGYyOTIxODRmZjc0MDFiODBkNjc1NTRiZGQ5MTVlZCBsZWdhY3ktdHJ1bmsKKzY2MDkzIGJlNjNlYzc0OGVlMDY0YTIwNmYzYWNjYzAyYWJiMWMxNDdhMmZiYzAgbGVnYWN5LXRydW5rCis2NjA5NCA3ZTE5NGI5Y2MwYTJiNGQxZjI0ZDBmNDljZWRmZjVjZmIwOWZiYmFlIHB5M2sKKzY2MDk1IGI0YzE0YjcwZmUwZjgxOTlhYzRiZmQxMjk2OWZiZDY2M2MwNGIzZTEgcmVsZWFzZTI1LW1haW50Cis2NjA5NyA3YjM5NTAxYjBhNzYyNDdjMDkyMDZkNzBlYjM5M2U5YjA4M2ZlYmE3IGxlZ2FjeS10cnVuaworNjYwOTggMTNmZGY5OGVhMjkwMDEzMDcyZTc2YTFlMDk3Mjg4M2M0MjBjODZhYSBsZWdhY3ktdHJ1bmsKKzY2MDk5IDE3NmM0MDlmZDc0N2U4MTJhMDY3MmRkYWE4ZGFjMDAwMWFmMDU2ZTcgbGVnYWN5LXRydW5rCis2NjEwMCA4Y2RhNjE1ZWYyMmJiNzQ4ZTBlZTM1OTQ0ODE0ZWQ5YWY5ODNhZjNkIGxlZ2FjeS10cnVuaworNjYxMDIgNWZhMGQzMWE2NzFiNzgxMmIwY2VmNGUzOTM3NjJhNjNmYmYxY2U2MCBweTNrCis2NjEwMyA1NzY0NDE1MjdkNGY3Y2MzZGI3MDY5MmQzNDQ2YTE5YTIyYjExODkxIGxlZ2FjeS10cnVuaworNjYxMDQgZWQ1OWYzYjY3YjNhZTNjMTE4NzRiODc1ZWI0YzJlMzllNjg0M2Y3YiBsZWdhY3ktdHJ1bmsKKzY2MTA1IDlkYjNmZTc4MGJmYzZhMTAyMGU4NDZjZWFmNWE4MGMwMjg4ZDJlZjAgbGVnYWN5LXRydW5rCis2NjEwNiA5MjUxNTMyMjU1NzBjM2I4ZTIyY2U1ODkxZGNjOWI3MWY0NDY5M2I4IHB5M2sKKzY2MTEwIDUxOWUwNDc1OTkxZjc2YjgxZDUzMDE1ODQ3NTYzMTAzOTU5YTZmOTUgbGVnYWN5LXRydW5rCis2NjExMSA2OTZmNWQ4NDE5ZjIwOTM5NWIzZjYyMTcyMzQ3OWVkNjUwOWM0ZWIwIHB5M2sKKzY2MTEzIDdlY2VjMWIzMGMzZjQwNTMxNzEwNWZkODM1ZDU4ZjAxNDJjNGIzZTIgcHkzaworNjYxMTQgOTg4NjYxZmZkMTAyOWNiMDM3ZjYyNGZlMjQ0OGMxMDhjZjg1YjliYSBsZWdhY3ktdHJ1bmsKKzY2MTE1IDUxZjc5NWM5NTMwZWMwYmNiNDQxNmU5YTljNmMwYWJkMzA1NWExY2EgbGVnYWN5LXRydW5rCis2NjExNiBhNWEwNzFjODBmMmQyNTI5NGUxYjQ3MjM0MTk1MDJjOTgxYjU3NDI5IHB5M2sKKzY2MTE3IDEyZmIzNjI2ZWU1OWYxOGRlZjgyN2UwNTI5NGQxMjE2MzRiMTg0ZjMgbGVnYWN5LXRydW5rCis2NjExOCAzN2E5ZjY5MGE5NGE5YWNiMzkyMzI3NTE2ZTQzMjMwNTk2Mzg1NDVhIGxlZ2FjeS10cnVuaworNjYxMTkgYjUzNjVmMzQ2NDBmMmM2NjRjMTkyMjk0ZWI2MDM1NTI5MWZjZTdhYyBsZWdhY3ktdHJ1bmsKKzY2MTIwIDY2ZTFhZmQzMzQ1ZmRiMGJiNGMxZjk3YTlkMTRkMGMxYzBjODE4ZDQgcHkzaworNjYxMjEgMTZjMDNmN2NiYzIyMWY5NDA1YzEzNTliYjJhNzNmZmQ0NGYyMjg5MiByZWxlYXNlMjUtbWFpbnQKKzY2MTIyIDMyY2U0MDJhN2UzZGYyMGMwZjVjZTUwZTkzNTQ4NzRiMjQwZGJjZWIgcHkzaworNjYxMjMgZTYwMjFhYWQyZGUyZDVlYzk5NGY2NzY2MTAyZDFlNWIxMjhlZTVlMCBsZWdhY3ktdHJ1bmsKKzY2MTI0IDY4MGIwNzZkMGMxM2EwM2YzMzRhNjc0OWZhNDQ2M2E1ZTNiMTE1MTkgcHkzaworNjYxMjYgNGZjNDgwYmUxZTRkMmM2NzhhMzkyZDQzYTM5YTQ4NzYyZjE5ZjkzNCBweTNrCis2NjEyNyBiYzU4NWI0ZDQ2MDZiNTJjM2M3ZTUxZDk2MmU1ZmYxNzhmOGM4YjZiIGxlZ2FjeS10cnVuaworNjYxMjkgOWVkMzI4N2JlZWYxOGE0YjdiYWJhMDQxMDFkYmMyMmRjM2FmZGY4ZiBweTNrCis2NjEzMCBhYmE4NTk4Yzc4NWNhNTNlMzM2MjFkMGE4YWE0YmEzNjQxNDljZjIwIHB5M2sKKzY2MTMxIDIzNmZjZjI5MzljN2Q1MjM4OTM0YzZlMGQ4MzAwNWJkMmQxZjVkMTQgcHkzaworNjYxMzIgM2I5NjA4MTE4ZjhkODdiODgxMWIzN2E0NmEwNzQ5MDk1MjQ5MWZmOCBweTNrCis2NjEzNCA4YTEwOGQ1NGVmMDNjYWExYjhkN2JhODIwNzYyZGYwYWViMzU0YjA1IGxlZ2FjeS10cnVuaworNjYxMzUgZDU2MzYyMWQ3NmRiNGY5NGU3NDVlYmM2MmI5MjE3OGVhMzNkYjJjYiBsZWdhY3ktdHJ1bmsKKzY2MTM2IGNkMTg2MzA2ZjM4NWFjOGNmYmU2MTg3OWY0ODRjYjExYmZmMDlkNTQgbGVnYWN5LXRydW5rCis2NjEzNyA4YzRmNzUwNjYxZWMzOTQ0MDQ5ZjBiZTUwNTIwZjRkMDcxODk4MWY5IGxlZ2FjeS10cnVuaworNjYxMzggNGMxNzcwYTU1YTg1ZTVkYTMzM2U3ZTRlZGUwYWUxMzA0Y2I1ODhjYyBweTNrCis2NjEzOSBjYWE0MWUxNjFiMDQxMWY0MDZjNzNlMThlODhjZDg3ZjE3NTkzYjQ5IHB5M2sKKzY2MTQwIDNiZGM0NmZhZWY0ZGE4YjA2ZDA3Mjk1Y2NmYWQ4YzA3MmM2YzEyN2MgcHkzaworNjYxNDEgNGIyOGJmNWVlMzkzYjQzYmE0OWJiOGU4NTVjOWQxNjA5MGQ2NTdkNSBsZWdhY3ktdHJ1bmsKKzY2MTQyIDk5ZWUzYjc3YmMwZGIyZjJhZTJhM2E4N2IxMDU4NDNmMDA1MDE1OTAgbGVnYWN5LXRydW5rCis2NjE0MyAxODk3NzQzYjMxNWRlMmFmNTRiYmNhNzA4YzJiYTIxNzUwMTBlZWMyIGxlZ2FjeS10cnVuaworNjYxNDQgNGRhNGY5Njc5NjcyNTc0NGZjMmQ0ODdkMmY1MjVlYzM0MzQ0YmZhZSBsZWdhY3ktdHJ1bmsKKzY2MTQ1IDM3NzlmYzlkZmU1ZjczODkwYWFhNDZlM2M3ZWYxMmU0ZTA2ZmQ5MDAgbGVnYWN5LXRydW5rCis2NjE0NiAzODg4OWNiNDUxODgxMDVkNzFmODM5YzUzNmI1NmNmNDMxYWY1NjdhIHB5M2sKKzY2MTQ3IDdhNmU2YTA0ZTI4ZDE0OTJiYTExYzA3OTNjZDg4ZTQ5ZDU5OGE5YjcgcHkzaworNjYxNDkgZDgzY2U0YjU4MWU2MTU2ZDNhN2JhZWEwMTYxZGI0YTliNGZlOTgyOCBweTNrCis2NjE1MCBkMGQ1M2RlOWQ4MmUyZjFlOTc4YzA1NTFjNDc2NWUzNzI3MjZmNTg0IGxlZ2FjeS10cnVuaworNjYxNTQgMzgxN2M5NmZkNTQwOGEwYjNmNDE2ZTdkNjMyZWZmNjhhNmQ2ODc5ZSBsZWdhY3ktdHJ1bmsKKzY2MTU1IDFjMTRjZTA4NTQxNTFlYTA0ZTE2MzFiNjZjMTk0YWFhNmFmMzVmMDAgbGVnYWN5LXRydW5rCis2NjE2MCBiYTVjNGNlMTJiYmRmMTZkNTk0ZTAyNjg0YjJmYWMxOTFjYzYxMjhlIHB5M2sKKzY2MTYxIDc1MGRhMmQxODA4OTJlYTk4YjJlMGRhZmZlMGUzYWFlYjM3NjdhMmMgcHkzaworNjYxNjIgYzdmZDBlODgxYzQ1MzAzYWQ5YTQxMjkwM2NhNjExMDgyYWVmNDE2MyBsZWdhY3ktdHJ1bmsKKzY2MTYzIDg4YzkzYTliNDEzNzNhZDFjZTJhNjg5MTFlODNmNjQ3MWE3MmJjM2UgcHkzaworNjYxNjYgM2I3NGQxNDYyZTNhMGY3ZDRkNjMyYTUwOTIyYTA4Mzg2NTI2MzIzZCBsZWdhY3ktdHJ1bmsKKzY2MTY3IGYxYWU2OWNkZDRmZmRiZmFiNjdhYzYwOGMzM2NjZmE0OTA3ZmFhNmQgbGVnYWN5LXRydW5rCis2NjE2OSBkODI2YTc1NTcxYmM5NzlmOWQwNTk3OTg3MTg4N2QyMjIyZTVkOTk5IHB5M2sKKzY2MTcwIDc4NGQyNGE1Y2U3YmFjY2Y5N2M0MzhiMzk0ZTYxOWVlMGJkMWM5MTYgcHkzaworNjYxNzEgMmQ4MGQwMGIxZWYzNjAzMzBhN2NlMzQ4NDc4ZTA2MjZmODM5YTM3YyBsZWdhY3ktdHJ1bmsKKzY2MTcyIDNiZDkwMDJlNzQxZmZjMzA2NjJiM2U4MGI5NGY5YTcxMTdjYzIxOTMgcHkzaworNjYxNzQgZTJlZGMxYzExZTUwNzc0NDI5NTI1MmYwMjg1N2EzMmNlZDY0YTI4ZiBsZWdhY3ktdHJ1bmsKKzY2MTc1IDYzNTZhNTQxNGQwMTljZmE5OWM0NDNkNGMzNDdiYjk4NGZkMjMwMTggbGVnYWN5LXRydW5rCis2NjE3NyBiZjA0M2QwZGI3ZGZjOWZhOTdhYWJiNTVkMjQ5ODIyM2Q3OGZmZDY1IGxlZ2FjeS10cnVuaworNjYxNzggNzVjNWEyYzkzNzZlOWI0NWQ2NDFjNzcxMTM4NzI1NzBlMGRmNDg0NiBweTNrCis2NjE3OSAyYTYwZjdiNDIzMjhkYjE0YTJlOTdiNDg5NTBjZWNiOGM1ZDRmYTUzIGxlZ2FjeS10cnVuaworNjYxODAgNWZkMzliODRmYzI5MmM5ZTUwNmZiZjBmNDAwOTEyNDRmMjQzNjMxMyBsZWdhY3ktdHJ1bmsKKzY2MTgxIDRjNjgzZWM0NDE1YjNjNGJmYmM3ZmU3YTgzNmI5NDljYjdiZWVhMDMgbGVnYWN5LXRydW5rCis2NjE4MiBiOWVkMTRlYjllODdiZmM2YWY3ZDM2MTlhNWI1Njc0MDg0YzBhOTJmIGxlZ2FjeS10cnVuaworNjYxODMgMGY2OTMwYTQzMzYyOGM3YjU1ZTFhMzRkODMzNmRlZmVmNGQ3YTcwZSBweTNrCis2NjE4NCAzMzgzMDhjOWNjY2JjYWY3MGIyYzMwNWZhMGViZmFkMGFiNmMxMGMwIGxlZ2FjeS10cnVuaworNjYxODUgMDZmNTRlMTFhMDhiNGFiNTAxYTEwOTdkYjdkNjE3NzQ2NTgzNGExOSBweTNrCis2NjE4NiAyMmFiMTA2ZTMxODZiNTg0OTQ2MGQxZmYzZjk2OWIyNGY3MDMzZTE0IHB5M2sKKzY2MTg3IGY4M2RjY2Y0MTdmMGRhNmQzZDA2NzVhMjVkZjdjOTQyNDc3MzU1MTggcHkzaworNjYxODggOTJhMDFmZTI0YWUwNjQxYWZlZDFhOWU0MmVmODNmZDFlODExM2RjMCBweTNrCis2NjE4OSA2MTU0NTE2YmU0OWNkYzk0ZmIzYmE5MzMxYTI4Mjc3MGEwMTMxZjhlIHB5M2sKKzY2MTkwIDE0ZmMxNjkyNmMwM2ZjODU4OTIwOTc2NmJlNjJlZGJlOTgxN2NlYjEgbGVnYWN5LXRydW5rCis2NjE5MiAwMWYyZGNlMDZmN2QxMDJmYjlkNDMyNjMzYTczNWE5NWU2MzE3YWZhIGxlZ2FjeS10cnVuaworNjYxOTMgZTZjN2I2ZmEwNzcxZTQwYjg3YjA3M2MyN2Y5ZTJiM2U2NzI5MTdlNSBweTNrCis2NjE5NCBhNTM4NjEwMTg2NWI5N2UwZTM4NzM5ODZiYjQ2OWJmZTYzMTZmMWJlIHB5M2sKKzY2MTk1IDE3N2U4YTYxYWY0NWM1MTQwZGUwNmI3NjIzMzViNjAxOGI1Y2VkZTQgcHkzaworNjYxOTYgMmI4NTVhOTQ3ZjBmNWY2MDQ0OGMxNmJjNDk1YmI4NzRmNzExZTliMSBsZWdhY3ktdHJ1bmsKKzY2MTk3IGUwYWI1YjI4NjEyNDU2Y2U3OGY5M2E2ZDRkNDlhODNlODY1NjQ2ZTMgbGVnYWN5LXRydW5rCis2NjE5OCBlN2JjZmQ3MjA4OThhYmE0MjU3OWQyYWQ5NTcyMTQ4NDY0ZTcwOTk0IHB5M2sKKzY2MTk5IDY1ZTIzNjgzYzAxMGMzZGE0NzE5YzE1OTAzNWIyZTY4ZDIxMTdjYmMgcHkzaworNjYyMDAgZTM4NDdlN2MyNGUwMzJlNGExNDc3N2E4YzhmZWZkZTE3MzZjOWQ1NSBweTNrCis2NjIwMSA5OTU3YTM2ZmMxNjdlY2NkMzczY2M2ZDkwOTFjYWFiZWNlNmM5MjU2IHB5M2sKKzY2MjAyIDViNzg0NWVmNGVmZDBkOWFiYzRhY2E1ZmY5ZjdmYjUzMzU2OTQwNTMgcHkzaworNjYyMDMgYzUzMjM0ZmY2MWIwMGY0ZGZlYTA5YWFlYzAwM2U1OTQ0ODM5ZTU3MCBweTNrCis2NjIwNCA4MTJlYTEwNWIxYjBlZDBiOWYxMTMwNTgyYWM2ZDk3MGQyZWJkOWU2IHB5M2sKKzY2MjA1IGY3MWE4OTI4YzFiN2I5NjNhNzY4YjQzMTA5NGFiN2U4ZGU2ODc1Y2IgcHkzaworNjYyMDcgMTQyNDliY2I5M2QwY2E2NWQ5YThhNGI2ZGNiMTA5NDNiNDE3YTYxYyBweTNrCis2NjIwOCBjNWJlOTQ4NGIxNGJkMDdhZjRlOGQ0NjNhYjhhN2JhMzgwMTBlOThiIHB5M2sKKzY2MjA5IDQ1YzQzODA4OTc5ZTk1NzYzNmVkM2Q5MGYxNDIxYTkwOTIwMjBlYTcgcHkzaworNjYyMTAgZGM3NzRjZTAxYzFmYTJiNTkzMjI2NWVjZWJlZjliMDlkNDdkOTFmMyBweTNrCis2NjIxMSA4MzNkM2VjZmJiZjA5MTA5NDM3YjAzNmI0Njg0ODIwNTU4NjI0NTUwIGxlZ2FjeS10cnVuaworNjYyMTIgYjI2NjU4NDc2ZDU1NTlmMDMxYjk0M2I4MmJjMDlmOWI5NjBkNmI1ZiBweTNrCis2NjIxMyAzMTY5MjM2NzczZjFiNzViMzFkZmNlYzI4NTA3NmU0ZTkxMWEwNWQzIGxlZ2FjeS10cnVuaworNjYyMTQgMmMyYmVmOGZmY2ExMzhmZGQzYjFiMWYzMTc5MGIwMTUyZmFlMDVhYiByZWxlYXNlMjUtbWFpbnQKKzY2MjE1IDVjMTBhZjhkMzNmNWNkMmRlMzJkYzE1MGMwMmUxZDE1MDk5YzVlMDggcHkzaworNjYyMTYgOTRjYzExZWM3ZWMyMDJlMzM2NDc5NWU3MjhhYWRiNjk1M2NjMGYxZSBweTNrCis2NjIxNyA1Yjc2YTNlNDVhYjNlMDFiNzlhY2VmZjRjMGQwYzNhMTJjNzYyNmNmIGxlZ2FjeS10cnVuaworNjYyMTggYWUyYzFiMjc1ZmViM2FhZGIyZTI0NDU3MjM3YjM1ZThkZjc5MmEyMiBweTNrCis2NjIxOSA0NDUyZmYxZmJjOWQ1MTM0MmMyZDVjZjNlNTFkMTk5OWM4ZjZmZmQzIGxlZ2FjeS10cnVuaworNjYyMjAgYjc1NzNlZjI0YzcxOWVjMTViZmEzNTEyMzIyZDQzMDI5NDZkMWFhMCByZWxlYXNlMjUtbWFpbnQKKzY2MjIzIDdmOGVmOTgyOTRiYzExYzM3NWNlNjJiY2ZlMzRiZWI5NmY4Y2NmODkgcHkzaworNjYyMjQgM2ZhMDY2ZDJhMzk3ZGM3MDg1NGFhMzJkODE3MjNlNTdhNjBjMjI0ZCBweTNrCis2NjIyNSA2YjA0YmM0MmJhYTViYTdhOGQ3NmUzZTI1YWRmOTc5ZjUxMDM5ZGNlIHB5M2sKKzY2MjI2IGM2MTgzYTg5ODgwZTYyODEzYjRkNGNkYjZiZjdlN2M1ZDczOTc0MjEgbGVnYWN5LXRydW5rCis2NjIyNyBmZGQ5M2JmYTZjMWJhNWU3NWI4OTBmOThmZTA3N2M5YmI0MWEwZTk0IHB5M2sKKzY2MjI4IGE2NjIwMzQzZTNkYjQ3ZjhiZTZmMjYyNDBmMTg1ZGYyOGQwNGVkZDAgcHkzaworNjYyMjkgOGFmYTc3MjNhZmE3NmFkMDdhMzgxNDg2OGY0OGRlZTdlMGY3YjU2MyBsZWdhY3ktdHJ1bmsKKzY2MjMwIGI0ODY2NDljYThiY2UyMDE3YTJhMzI4NDllYmFhN2IzZmJlMDUyNDAgcHkzaworNjYyMzEgODlhOWJjMTg1ODZhMTczMmYxYWQyMTQ4ZGU1MDc2NDJkMTZlYTI0OSBsZWdhY3ktdHJ1bmsKKzY2MjMyIGI0NTg2OGZlNDg5Y2IyMzkzZmRhMGUxNDUzMGEwYzgxNjQ5ODY2NDAgbGVnYWN5LXRydW5rCis2NjIzMyBlN2U3MGU4ODExNjBiYWIzMzk0OGNlZWUwZDdhZTlhNDEzNjljZmQ1IHB5M2sKKzY2MjM0IGE2NzdkNjhlODEwNWM5YWZkZDhhNDJlM2QyMjJiZjMzMjlmY2JiMWUgcHkzaworNjYyMzUgNDMzMjIwYTYwYThkMDM1MGY0MDZlMWIxNWYwNzEyZDliN2I2YzE1MSBsZWdhY3ktdHJ1bmsKKzY2MjM2IDk3YjlmMGJlOTM4NTI0OWYzMmI2NjYyYmZlZmYzNWFmNGRhYTI2NGUgcHkzaworNjYyMzcgZTc0MDk2OTczOGVmMWY4YWY1ZmJmOGVjODU0MDkxNDk0MjUyNTVkMCBsZWdhY3ktdHJ1bmsKKzY2MjM4IGVjZDdmNTkwZTE0MjQ3OWMxNmVlYWFlZDdiNWY3NWM4YzIzOTkzN2UgcHkzaworNjYyMzkgZGFiN2FiYjc3ZThmODU1MzJiMjdiNmM0Y2YzNjdiZTdjNzY3ZWQwZSBweTNrCis2NjI0MCBmMzI1MTdmODc2YjY3YzFjNWYxYzhmMjE0MThkOWE0NGNmMWViYWI0IGxlZ2FjeS10cnVuaworNjYyNDEgMjZiZGQ5NGE0MjkzNzc2YTA3N2RiMTQxMDU4MDg5NWQ4MDQxYWMxZSBweTNrCis2NjI0MiBjM2I4MTEyMTRjZThmYWFkMDE4NjgzMzNmMmNiNGIwYTliY2E2YTkwIHB5M2sKKzY2MjQzIDIzOGEwODlkNDJiZDYyZTA4NzZlOWMzYjA1ZGQwM2FkMjk0YWExMTIgcHkzaworNjYyNDQgZGMwNzA5YTJiNDJmNTc3MjM0YTg2MjgwZjU3ZjVjNGUyNDkwMTZlZiBsZWdhY3ktdHJ1bmsKKzY2MjQ2IDQ4ODJlNGM0MWNlM2VmZWI1YmMyZjM1M2FhOGU3ZDU5MzQwNzM2MjQgbGVnYWN5LXRydW5rCis2NjI0OCAxOTMzODI0NzkyNWZjNGNmOWNlMzE1M2MyNjcyNjFkM2UyZWFkZDQwIHB5M2sKKzY2MjQ5IDc1MWYxYjU2OTliYWRlNGU4MDY1N2E4MTE4YThkMWU4YTA5MTZiOTQgbGVnYWN5LXRydW5rCis2NjI1MCAxMmVmN2E5MmU1OWJiYjI0NWQ4YzkzMzc1MDAyMThkNDQ2MGRlNzI1IGxlZ2FjeS10cnVuaworNjYyNTUgNjYyMzM2ZDU2N2E5ZWNlNmUxYjM4YWY0MTU1YzdjMTNhNjI0YmUwNyBweTNrCis2NjI2MCA2ZTcxYjM5OGI2Y2NkZmY2ODNhYzEyMDAxMDI0ZjAwZWZiZTY0YTk2IHB5M2sKKzY2MjYxIGY4MzY4MTQyZjhkM2I0MjlmMTFjODRhYzk5MzkyZDEwM2MzMzhlYWUgcHkzaworNjYyNjIgMTVkZjI5NzA1ZTE4MmExMjc2MjlmNjQ2Y2VjZTJmNGQwMmM5Yzg2MCBsZWdhY3ktdHJ1bmsKKzY2MjYzIDRkZDU5ODkxNDM4MzQ3YzU4NDQzNmY4NThkYTQ1ZTQxMDFiNDhmMTIgcHkzaworNjYyNjQgNjcwMjhmNWIzMzIxY2MzZTk1MjNkMTU3MGUzYzE3ZjVlOWE3YzAyMCBsZWdhY3ktdHJ1bmsKKzY2MjY2IGMxYThmNmI2NDhlYTUxZjFjYTlhMmU1N2Q2MjUxYWYzYWU5ZmI5MzAgcHkzaworNjYyNjggYmIwZjc0MjhhMTUwN2RlYmE3MjJmMWFjYTk5ZWMyYjIwOTBjZTNmMCBsZWdhY3ktdHJ1bmsKKzY2MjY5IDY3NDZjNmJlZTI4NjA5M2MzMWVkYjg5MGZkYmYyMzU5NTU1NTkzMGMgcHkzaworNjYyNzAgZTI3Y2Y3ZWUyOTY4YjNmYWU5MGEzZWQxZGFkZjRlY2ZjZTJhNTkxNCBsZWdhY3ktdHJ1bmsKKzY2MjcxIGNhMWE4YWM0N2QwNDYxZDEzMmE3MzRjMzEyNWZiZmJiMGI2OTFkNDUgcHkzaworNjYyNzIgNDQ1Y2U2NTc1MTYyZWJkM2Y5OTRhZjdiMTYwMDdlMDJjOGZhMjljNSBsZWdhY3ktdHJ1bmsKKzY2MjczIDhmZmVjMzcyMDQwZTQ3YTliMjYwNzAyMTkxNzc0NWVlNzRiYTY4ZDcgcHkzaworNjYyNzQgMTc5ZjhkODlhZDE5YTZiYTRmNDRhNmVkYzlmYjVmZTFlODdmYWE0NCBweTNrCis2NjI3NSBmZGE2ODk5NzBiM2Y4MjhhNmRhMjI1M2E0YmNiYWMyYjYzNjAwNjQ3IGxlZ2FjeS10cnVuaworNjYyNzYgMDI2MjdiOTI1YTQzYzcxOTRiNTgyNGIxYjEwYWRmOWJlMWM4Yzg4MSBweTNrCis2NjI3NyBmZGMwOTQ4Yzk1Y2YxOTc5YjA1MDI2YjkwOTZhYzQ4MjE5YmE2OWZmIGxlZ2FjeS10cnVuaworNjYyNzggMTM5NTViY2QwOGJlMWE1YWFjMjU3NTgyMGJhZjk4NmEyZmUwYmY2MSBweTNrCis2NjI3OSA3N2UxYjk1ZjE0MThiMTMxZDQzYjFiZjNiNmUzYmViNWRhY2IxZmFmIHJlbGVhc2UyNS1tYWludAorNjYyODEgYzZiMDJmNzliMmJjM2EzNTYwOWNiYWY4YjIwNjEzNGNhMmJiODQwYSBsZWdhY3ktdHJ1bmsKKzY2MjgyIDJlY2I1NmU2ZTBhNmNkMTMyYWE5MTE0MGE0Mjc1MmQ3NTY1OTdlNzcgbGVnYWN5LXRydW5rCis2NjI4MyA3NTEwZDg3M2I4OGMzMDMwZTE0OTkyOWNlMjhmM2Q2OWRlZDYxMTU4IGxlZ2FjeS10cnVuaworNjYyODQgM2YyYzRjZTMyYmE0N2EyZDM4YTQxMjJmOWM4NjBlYzc4OTcxMmJhYiBsZWdhY3ktdHJ1bmsKKzY2Mjg1IDkwY2ZjNmI5MjZjNmY1NDRiNGRkNjQyOWY2N2EwMmJmYTZkZmZiMGEgcHkzaworNjYyODYgNDczM2Q4NGYzNDg4YjRkZTExZmU1MGI5MTRkMzNiMjA2NTVlNjUzOSBweTNrCis2NjI4NyA3MzUzNmE1OGFiNDI2MWQyYjViNzc2Y2ZmMjhmYmY1OTA2OTU3OTRmIHB5M2sKKzY2Mjg4IDhjZmJiMmUyNzVkOWM5MTU0YWEwZWMyYjFkNTI1NDU4ZTU4MzQ3YzggcmVsZWFzZTI1LW1haW50Cis2NjI4OSA5ODdkYjdhZjA3MDAyYTEyYzAzZWJlZjliMmEwMWQ0ZTliZTJjNjE4IHJlbGVhc2UyNS1tYWludAorNjYyOTMgNTIzZDZkN2U1ODI1YzI3YWMwNjNhNzM5M2I5ZTExNDFkMzQ3NjJhNyB0bGVlLWFzdC1vcHRpbWl6ZQorNjYyOTQgM2FmNmE3MDIwNzBiNDNhNGVhNGQ0NTViY2Y2ZTUzYjY0ZDQzZGUzNCBsZWdhY3ktdHJ1bmsKKzY2Mjk1IGExY2FlOTU1NWY1ZGY4Mjg1OWM3ZGRiNjVjZDczM2I0MzQxOWQyMjYgbGVnYWN5LXRydW5rCis2NjI5NiAyYWIwNTI5MjM3Y2IxYTUwMDA4YThjMDQ1ODA1NmI4NGI5MmQzOTZmIGxlZ2FjeS10cnVuaworNjYyOTcgMjYxMWU4YWUyMzhmZDZmMWNlNjM0NThiY2JhMTNhNWQwMjUyYjNhNiBweTNrCis2NjI5OCBkNzk0MjM4MTUwZDIyZmM0YWFmMTAzZmU2NzI0YjU3OWRjNGM5NGQwIHB5M2sKKzY2Mjk5IDA1ZTI1ZDdhMDdlMTk4N2Y1NWMxNDc2ZDhkMDg1NWExZDM4OTUyMjQgcmVsZWFzZTI1LW1haW50Cis2NjMwMCBhOTM0N2NiOGFjMzgwNjcyZGFiMjYwNDg4YzZjMTg0ZWE4NDhhN2Q1IHJlbGVhc2UyNS1tYWludAorNjYzMDEgN2IxZjhlZGU5YjUzNDNlOGNmNDY5YjZmYmQ2MDk1MTJmOGMyNmYwZCBsZWdhY3ktdHJ1bmsKKzY2MzAyIGYwODVmMzlhNmY0ZDEyMjMxZTZkNjY5ZmI4NzJjZGUwZjQ5NmMxNTUgcHkzaworNjYzMDMgMjcxZGNlMDkxN2MxMDU3NTRjMDI2MTBiMzU5YzMwMDI1YmViODExOSBweTNrCis2NjMwNCBhYTBlZjVkZTM0NWE3ODhmN2NjYWZkMjQwZTNiYmYxNDYxOGFjNzE3IGxlZ2FjeS10cnVuaworNjYzMDUgNTY4YWI1ODM3MTk0ZDg5OWUxMWZlZDAxYzI3MDVjYmMxYTk4OGE1YiBsZWdhY3ktdHJ1bmsKKzY2MzA2IGZlNTM2MmQ5MzU0MjU4ZTE5MTljOTBkMDY2OGUwNDM1MGU2ODU4MjUgbGVnYWN5LXRydW5rCis2NjMwNyBkNjFiOTU2YjBiZjY0NGMzMDlmMGRmMjg1Njc4YWNjZTI5OTlkNGFhIGxlZ2FjeS10cnVuaworNjYzMDggZGU2ZWVmMzFhYTVmNzI5OGUxYWE3YzgzZGI2NjE5ZWRhYWFlZTJiZCBweTNrCis2NjMwOSA1MDk0MWJlZmYwMzI4YjRmNmIyNjVhMDMxZGFjN2U3ODcyNjVjNmQ2IHB5M2sKKzY2MzEwIDM3YjcwY2Q0YTBmMGQxMGZmOTg4YTA3ZjA1MmRhYjViNGIwOGFmZTYgbGVnYWN5LXRydW5rCis2NjMxMSBhYzNiNjcwNDMzNjFlYTYyOTIxM2VjZjI4NTM2NjRiYWU3ZjRiZjQ1IHB5M2sKKzY2MzEzIGJmNGJjOTczZTJhYWZiMzM4ZmY3MDdhMmNiOWVlMGQ2MTgyYjA1YjkgcHkzaworNjYzMTQgNDQ3MDJlMjczNzUwNmM1MjdiZGMzYjFjNTBhMjk4OTNmMGRhNTAzZiBweTNrCis2NjMxNSBjODcxM2ZiMDVmOWU0ZTgzNDMxOGU1NGE1ZDBkNjU5MTRiYzM3MTA3IHB5M2sKKzY2MzE2IDk3M2JkYjJkYjZhYzk2ZTI3MGZjNTMyYzc2MTk4ZDNkYmQ3YmYzYTkgbGVnYWN5LXRydW5rCis2NjMxNyA0ZDE0OGJiODRhMDc3YjJhOWZhMzczNGZmNGQzZTM2YWYyZTY2NTgwIHB5M2sKKzY2MzE4IDg2YTQyZTlmNzNkYzIxOTMwMTY5MmEyN2RlNWZmYzM3ZGEyODhkMmYgcmVsZWFzZTI1LW1haW50Cis2NjMxOSAyM2I0NTJhYzFhNTBhNDlmYzQ5YzcyMDFmZTc1ZjljMDNjZWU4ZjJjIGxlZ2FjeS10cnVuaworNjYzMjAgOTY0ZGI4NzlmMTkwZTlkY2NiMWQ2ZjVkY2U3MTA3YzVkMTU0NDE2MiBweTNrCis2NjMyMSBmZjk2YTMxM2NkMWM4MzliYTMxYjM1NDIzMWVjZWRhZGY0MjA3NWE4IGxlZ2FjeS10cnVuaworNjYzMjIgM2U2ZTU2NWVlMzBhZGNiNWVjMDNhNTgwZTdmYTE5OGEyNGRhOTdlMiBweTNrCis2NjMyNiBjNDZiY2NjZjJhZjJlNDc3MjU3NDk1ZDlhZDVhNmIzNzk3MDkxNDNjIHB5M2sKKzY2MzMwIGI1MjhjYmVhNjBlMWM1MTVmMDgwMjY5ZDRhMzkzZTQwOGE2ODcxNGQgcHkzaworNjYzMzEgZjcxMjNkNDVkMGM0M2U5YWUwZTgxNmE2MDc4ZDJkMGQxNTNiMzUxZiBweTNrCis2NjMzMiA5NzQwNDBjOGYzNjk2MTEwNzQ5ZjkwMzQ5NjY3MmUzOTU3MTkwYWQ2IGxlZ2FjeS10cnVuaworNjYzMzMgZjY2NTBmMjQ3NTk4ZTJkOTg2Zjg2MjBmYmQ0M2ExN2M0YzM2ZTMxZiBweTNrCis2NjMzNCA3MDg3ZWE4MjhkZGEyZmI1OTI3MDQyYzU0OTE5NjYyYWZkNTA2NGYyIHB5M2sKKzY2MzM1IDBmNDQ1N2NmMjViMmNlYmEwOThmNTRiYjhjNzM5YTM2YWQyZTk4NzggcHkzaworNjYzMzYgNzU2NjM3YTNhYzRiYTI2MTAxNDBhMWU0M2RmMDQzMDgzZWUzNzNiMCBweTNrCis2NjMzNyAzNmIyZDY3NGZjOGM1M2ZkNDMwM2MzYzRmNGE3YTE1NWM1ZGM1YjU3IGxlZ2FjeS10cnVuaworNjYzMzggY2Q2MWQ1NGZjOGMwNjRkNzM2NzE4MTZhOTYxNDczYzZhMjliNjJkMiBweTNrCis2NjMzOSAyOTA5NDg0MmIzNzc2YTlmOGJlOWM5ODY2M2JiNGQ2MGQ2MGQ2OWY5IHB5M2sKKzY2MzQwIGE5MGIyODU0NThhYjAxN2UxZmUyNzRmMzQ0OWI2OTMzMzA3ZGNiMWUgcHkzaworNjYzNDIgMTM5ZjZiYWVmNmMyMzA4MzEzYTE0MmY3NWE2M2ExZDI0YzgzZTZjZSBweTNrCis2NjM0NCA0MjQ5ZTU4Mzk3ZWYwMWMxZjJlMmE3YzI4MGQyYTFmZWM2ZTE5YWEwIHB5M2sKKzY2MzQ3IDZmMDgyNzhiZjhiMWY1ZWE5ODdhZTU1OTFhOThiYmRjMmVhZjY5YTQgbGVnYWN5LXRydW5rCis2NjM0OCBkYzBjYWUxZTZhZGIxNTYxOTQwZGQwYjY4Nzk2ODM5MTMzYTVkMDJjIHB5M2sKKzY2MzQ5IDQ5YTkzYzAyYTZkMjEzMTdmYTUyNjFmNWQzNDViNzlkNjdlMjg0ZmQgcHkzaworNjYzNTAgNzUzYTc2YjNlZWE5MWRkMTljYTg5YjYyMWNiYmU2ZGM0Njk1MWRhMSBsZWdhY3ktdHJ1bmsKKzY2MzUxIDVjMDM4ODFjMjA3NTUxNTI1NTJmNmEyOGJhNTUyZmRlZDM1MjRiYzMgcHkzaworNjYzNTIgNzNjYzdiNjM1NWI4MTc2YTk1YjU1OTE4NTg5YmU0ZWZkNmJlM2ZjMSBsZWdhY3ktdHJ1bmsKKzY2MzU3IGRjMTlhMWI3YzVhNjM0NDgwNTM1N2M3NjhiZjVkNWJhZmZjMzk3YTEgcHkzaworNjYzNTggMmMyZTNhNTZjN2JjYzg2NzIzYzE0ZGE4YTk0MThhZDNlNDZiZjRjMSBsZWdhY3ktdHJ1bmsKKzY2MzU5IGU5MGEzZjBhOTkyOGFkM2ViNGVlN2VhYzk2MjBlNTY3N2Q3Nzk0Y2EgcHkzaworNjYzNjIgYzM3YzdkYmQ3ODgwZGIwMzQ1Y2E3ZTk3YTIyNmIxMWNiZjRjODVjZCBsZWdhY3ktdHJ1bmsKKzY2MzYzIGRjNjAyOTNiMjlkNTExOWJmNjc3Mjk5NmFlNzU0ZDEwZGIyYzlhOWUgcHkzaworNjYzNjQgOTVhYzY5ODM1OGFiYjM0ZDgwMzRlNGRmN2JlYzRmMDdlNGI1ZDg5MiBsZWdhY3ktdHJ1bmsKKzY2MzY1IDc3NTY1YmUxYjk1NzcwZDFmMjY0NDc3N2U4OGRhNGIzODY5YWY0ZGYgcHkzaworNjYzNjYgNTEzMjY2YTc1ZWMzMWUxMWUzMzc1ZGUzNjM3YzI4ZmU1MDczNjI3NSBweTNrCis2NjM2NyBmMTAwZWZjYTE0ODcxYmI4MjFhMzFhZWM4ZGQ5ZDFiMDI1YmRkZmZkIGxlZ2FjeS10cnVuaworNjYzNjggMjVmMTQxMjhhOTdjMThlNDRiZmRmNDE4NGJkOTcxOGE4NTc5NjJjYiBweTNrCis2NjM2OSAyYWI4NWMzOTJhOGRhZTAwYTVlMTcxZDhjNmJhMDk2OWUyNDdhNTBhIGxlZ2FjeS10cnVuaworNjYzNzAgZGQ5NjE0NGU2ZTgxZmE0ZTZjYzU4YWFlMDcwMzVhODk0Y2NiMWQzNCBweTNrCis2NjM3MSBmOTc3NzkyNjJiYWMxYjM1ZWRhMzAwYjZlN2ZlMjcwYWMwNzJlMTZmIHB5M2sKKzY2MzcyIGFmNDAyMzhhNjhiOTVjYTA4M2E3YmJjNTdkNDc4OTA0NjIxZjk3ZmUgcHkzaworNjYzNzMgNTg5MDczY2VlMGFlNDdhNjZhMTBiOWM1YWQwMTFlMjFlN2EyMDNmYiBweTNrCis2NjM3NCAzNDhhMzMwNDhlYmY0OGZiNTA3MjU2M2Y4NmJlNzQ0MmY2M2M3NDI3IHB5M2sKKzY2Mzc2IDE3NDc1ZWI1NTA2N2FjMWQxOTU2MDgxZGYyY2VkZjYxNTAxNDQxZmYgcHkzaworNjYzNzcgMTQ1NDQ5MTA5YTMxY2ExNmIzNGI3OWUyOTg1MDhiYWJiNDM2MWUwYiBsZWdhY3ktdHJ1bmsKKzY2Mzc4IDZhZTJkNGI1MDdhMjUyZjYxZDQzMjQwODJkY2MyMDlkZGI2Y2QyNjkgcHkzaworNjYzNzkgYTRkZjQ5MDNiMzU1NTY0ZjJhNDdlNTIxOWM0NTg3ZTNkNzU0NTg4NyBsZWdhY3ktdHJ1bmsKKzY2MzgwIGQyN2RmMDgzZDRlNjc0ZDk3MmU5NTRjNDRkNzhmNjNkNzZjZTI1YjUgcHkzaworNjYzODEgNTFmZjkzNDU2MmMyM2VjYTZkY2YyMWVjZWFmYjk3YjViYjNkYjgxOSBweTNrCis2NjM4MiA4NzUzMTMwMWJhNDhjODdlMjhjZGJkZWIxMDViYmYxZmVlNDdkYzkzIHB5M2sKKzY2MzgzIDNkYzMxODA5NjMxZmUxNzkxNWM1NjZiNDEyMjZlODJkYzZiYzNjOWIgbGVnYWN5LXRydW5rCis2NjM4NCA5NmQ2Mjc2ZDgwZTIzMjQ2YmEwMTI0MzFkMDcwMzA2MDU0ODJiNWFkIHB5M2sKKzY2Mzg2IGYyOGI5OTlhNjlmODNiNjUwMzcxZjU3Y2U0MzE5ZmIzNzRlZTc3OGEgbGVnYWN5LXRydW5rCis2NjM4NyA4OWMyYTY5N2Y3NzJmMGZiNjVmZWZlYzQwMzFjMWRlMDNhNGI2ZWU2IHB5M2sKKzY2MzkwIDBlZjdjYjM1YjIxNjcyNDY3NjY0ZmNiYzMyMzRlYTFkZTJkZTQ2NmEgbGVnYWN5LXRydW5rCis2NjM5MSA0Y2Q5N2Y4ZGU2OWUyMGE5ZTY0NWZjZThiMzZlNDI5OWEzZGM5MjdjIHB5M2sKKzY2MzkyIGMwNWY1YWJlZjc4YWQ1MjUyZTJiZWRhOGUwZDEzZTk3ZWQ5MGI3ZTggcHkzaworNjYzOTMgMjgwMzQ3ZDJmNzY1MDFlMjM5NDQ1ZGU2ZjE1Y2NiYWI1N2ZiNDQzZSBweTNrCis2NjM5NCAwZmNkNGRiMjNkZmZlYjM5YzU0YzZhMmMxNjUyMTczNzk3Y2IyMDFhIGxlZ2FjeS10cnVuaworNjY0MDQgZmYxNWU2MmEzNDliNzhiZDc4OWVhZTViMTdiZTU5NzcwMTRjNTlhYiBsZWdhY3ktdHJ1bmsKKzY2NDEyIDRjNzdkMTAxNmY2MGFmNDUyNmMzM2NiZGQzOTNhZWQ3ZWFkZTU0M2QgbGVnYWN5LXRydW5rCis2NjQxNCA3NmJjNzU3NzI3MzZmMzJlOWQzNDE4YTVmMWYzMTU3NWRhODBmM2FhIGxlZ2FjeS10cnVuaworNjY0MTUgMzgxZWNmNDZkZmFlNDRiODNlM2I4ZGI0ZjEwY2RiNGEwZmZmNDFmYSBsZWdhY3ktdHJ1bmsKKzY2NDE2IDFlYmIyYThjYzA2Yzk0NDcxZDcyYjU0NzZjMjA1MGM0ZDExNWExYWEgbGVnYWN5LXRydW5rCis2NjQxOSA0ZjdkZTFjYTkyZmY4MDY3MWVhMjJhNTgzYjBiOWE5Y2UyNjE0ODM1IGxlZ2FjeS10cnVuaworNjY0MjIgNzM4YmE4MzE5ZjQ5MjA0ZTQ5NjE5Y2I1ZWM5YTU3M2Y3YjYxNWY1MSBsZWdhY3ktdHJ1bmsKKzY2NDI0IGM4ZDQ0NmVhOTZkYWJkM2JiNGRkNzY2NTdlNmQ5MmFlMTAyOWNlYjYgbGVnYWN5LXRydW5rCis2NjQyNSAwOTMyYjliYWE3YTQ1OGYzNWNkNzFmZjdlZjcwYWY5Y2Y5ODFjMTczIGxlZ2FjeS10cnVuaworNjY0MjYgYmIzZDFiZDFlMjkzM2U3ZTExZWJkZGI5YzliMWZiYjIwM2Y5NzBhNCBsZWdhY3ktdHJ1bmsKKzY2NDI3IGU3YzI4MDBiMjNiZjgyYjU2OTM5YzNjYmRkOWY3M2ExMGFlMjEzMDQgbGVnYWN5LXRydW5rCis2NjQyOCA0MTUyNGY5ZTJhMmY5ZmI4NTljOTdhM2MxZGQxM2E1NTkyODBmNmQyIGxlZ2FjeS10cnVuaworNjY0MjkgNWNlMDE0MzhiYWFhNTk1Y2Y5MTUyMTkyYmVkZGQ2MDU1NzBmMDZhMCBsZWdhY3ktdHJ1bmsKKzY2NDMwIDU5NmExYWQ4ZmViNjFiMjUyMzdjOWY3ZDIyNmI3ODYxY2EyZTkwM2EgbGVnYWN5LXRydW5rCis2NjQzMSA3NDI2NzFjNWQ3Yzk1YzY1YWJkM2EwZTNjZDIyYjdhN2NjNGUyMDhkIGxlZ2FjeS10cnVuaworNjY0MzIgYzBkYTdmMjM2MWVjZGMzODVmOWZiMmQyMWQ5NTk1MzdkNDc3MTcwZCBsZWdhY3ktdHJ1bmsKKzY2NDMzIDA1MTM2MjkzZjBjOGJmZDVjZDI4MzU0NjI5ZGU1YzJjZjdlYTIyMWMgbGVnYWN5LXRydW5rCis2NjQzNCBjM2YwZjk3ODM5ZTM4Mjc3ZWY1Yzk1MTJiYjlmY2IwZjFhZDU2YjA5IGxlZ2FjeS10cnVuaworNjY0MzUgNTJlZjk1YmRkODAxZTQ0YmU0ZmZiYTJiNTUwN2FhZWM3ZWE0N2MyNSBsZWdhY3ktdHJ1bmsKKzY2NDM2IDA2ZjMyM2FhNzJjNDk1MDc4MGJlMTY0Y2M4ZGM4NWM5ZWI1MDhhNDQgbGVnYWN5LXRydW5rCis2NjQzNyA2NzA5ZmY4Mjg3ZDk4Nzg0YWE0MWJkOTY2NmJiYmYxZDg1ZTAxNjgwIHB5M2sKKzY2NDM5IDY2NjVlYmZmNjRmMWYyYzIwNjYxMmMwODg2MWY1N2RmMmRjODdiMzggbGVnYWN5LXRydW5rCis2NjQ0MCAxZWFkZGQyMzg4Y2MyNzQ3MWZiNDAyM2RiMDdmMThjMzc0MDNjZjM5IHB5M2sKKzY2NDQxIDFhZjE2OTcwZGFjM2ZkNDU2NWRlZmEyMzI4OTExYzgyYjc2YTU0YmMgbGVnYWN5LXRydW5rCis2NjQ0MiBkNDA2OTgzZWQ5Mjc5Y2NjNjU5Yzg2ZmIyY2ExZDBiMGY0Nzg2NjBhIHB5M2sKKzY2NDQ2IDhmODg2YWNhYTE0MmNjYWE5ZDliNjIyODg2MjBjYjFmYmI0NTlkODcgcHkzaworNjY0NDcgZmViN2JkZTFhNGQ5MzAxMTcwODZhMjg1NmJmYzBmYTk2NjJkZjdmOSBsZWdhY3ktdHJ1bmsKKzY2NDQ4IGM4N2I4NGRiMjQ0Y2Y2MzBlMzAzNzA5NzM2Y2Q4ZGZmMTdhMmE1MjEgcHkzaworNjY0NDkgMDk1ZGU1YjkyOWRkYmI1NjRkZjk1NTQ5NzVlMTAyZjk5YmEwZTljNiBweTNrCis2NjQ1MCA3NWIwZGNiYzNjYzcxODE1ODg5MDMzMmVhZTRjZTczNDU0ZGVmMjE3IGxlZ2FjeS10cnVuaworNjY0NTEgM2IwNDhlMzFkZDllNzdhYmRmNmJkNTk4OTJkZDExODdkMjVjNjc1MSBweTNrCis2NjQ1MiA1OWRiNGIzYTA2YjAxYjUyZjc4YzRlNzQ5YmY4MjM3YWM0N2RlZDRkIGxlZ2FjeS10cnVuaworNjY0NTMgNTZkNWMwM2I5MmI2Y2VmMTU5ZWFmN2ZlM2U0MDgyZWE0OTJhYTY4ZiBsZWdhY3ktdHJ1bmsKKzY2NDU0IDQ3ZGI2MmJmNmFhNzBkOGU4ZjVhYmY5ZTBkYTVhYTlkNmU5OTk3YmMgcHkzaworNjY0NTYgNjI3MDBiYjdmN2I1OTA5ZWE3OGNiMDcyOWY1OTY2NGEyOTI1NTIyMSBweTNrCis2NjQ1NyAyYzViYjQ2MzRkMmQ5ZWM2YTc3NzY1MjZlMWQ1ZjU5YTQwYjUwY2MyIGxlZ2FjeS10cnVuaworNjY0NTggZjk5ODAwMTY2YzJiNzNlMzNiNzIyYmZkMzVhZmQ3ODVlMDAzMzUxZCBsZWdhY3ktdHJ1bmsKKzY2NDU5IGNkZGY1ZDY0NzZjZjEyN2I4OTZmNDIzNjU0NjY4YWJmYTkzZTA3ODEgbGVnYWN5LXRydW5rCis2NjQ2MCBlOTY5MjMyMDU0YTJjMzhiNzI1ZmZjYmFiMmI0OGZjMDQyZmNlZTkzIGxlZ2FjeS10cnVuaworNjY0NjEgNjkyOWI3NDI3MmM0MGVmNTMyM2NiNTY4MTMwZTJiZmVjMjNjYWEwZSBsZWdhY3ktdHJ1bmsKKzY2NDYyIDYyZTVmNzNkMDViNDlmNDI3ZDZiYmY1YTg1MThiZmE0NTY5MzJkMDQgcHkzaworNjY0NjMgNjRiZTlmOTA4NjRlMTRiMzM1YjY0ZmQxZTBkNWM1MzM5NTE0NDM5MSBsZWdhY3ktdHJ1bmsKKzY2NDY0IDI2MDU0NjViYmEzYzE4YTFhYjMwZTZiYmE2YWZlZmMzZTMxNDcwNzYgcHkzaworNjY0NjUgYTNmMGQ2NjdlMmNlNTU3Yjc4M2UwNzgwODE3ZGI5NzZmYTA1YjEzMSBsZWdhY3ktdHJ1bmsKKzY2NDY2IDNhODJlNTAyNDc0MzI4MDA1YTRkYjY2NGVjYTk4ZWExZjExYWQ1YTYgbGVnYWN5LXRydW5rCis2NjQ2NyBhYWViZGM0YzQ2OTAzYjMwZjI1ODU3ODZmMzc5YzY4MDZkMzBmYzQ1IGxlZ2FjeS10cnVuaworNjY0NjggMDJhNmNjNWQ3YTIyNzZlMTkyMzkwMDUyODJjNGJkODY5ZTE5NmQ1YiBsZWdhY3ktdHJ1bmsKKzY2NDY5IGJkYjY2MGRjYTc0ZDZhZjRjMjZmNjI3OTdmMzQyNWQyZDYwMjIxM2EgcHkzaworNjY0NzIgZjk3NGUwZmE1NGNhYTc3ZDM2MTI5ZTVhNGZiYTdiYTkyZTFkOGQzOCBweTNrCis2NjQ3MyAxMTY3YWU2NDVlOGMwMjc1NDNhYTE5YjRkZDg2Njk1ZjVlNmI2NGIwIGxlZ2FjeS10cnVuaworNjY0NzQgMjBkZjA2ZTFiMjY2OWY1OTI4ZWQ2ZjViNzBlMjhmODhhMTU1MDg5NiBweTNrCis2NjQ3NSA2NzA0M2ZiOGFlYTVjMGU4MTA1MDVmYWNmMjMzYWI0ZjZjOWU4NTQ4IHB5M2sKKzY2NDc2IDMzMDIwNDViYWU5Nzg5NjExYmUwNDVhMDc3N2JmNjgxNDU3ZDY5YjggcHkzaworNjY0ODAgYmIyYTBhMzdmYWE5N2JkYmVjYmRlZjkyMTIyY2QxNGM1MDI5YTE2YiBweTNrCis2NjQ4MyBkMTdjYzRkMTc2NmNhMTNhZjU0ZTJhNjg0M2M0OGYwYWE1ZjQyNzBkIGxlZ2FjeS10cnVuaworNjY0ODQgNDQ1M2UyYzZhYTdmZDJlNTRhOTY2ZDhiODU4NzgyMWMxOWQyM2I1MyBsZWdhY3ktdHJ1bmsKKzY2NDg1IDk3ZjI4ZGZhMTU0OWIzYzFkMDk2YTNlMDA2MDNlMmY4YmM2NzJlYmQgbGVnYWN5LXRydW5rCis2NjQ4NyBhMWMxOWYyNjNmNzk1NWZmMWY3YTBkZTIxOGRlZDU2NTJiNDRlOTJkIGxlZ2FjeS10cnVuaworNjY0ODggNWQyZjE2MTE5NDU5NGIxYWE4NTczMTAzZTQxNTM3NjZmYmU5OGI1NyBsZWdhY3ktdHJ1bmsKKzY2NDg5IDJmOWIwNmY5NWM5YTZhN2QxZmUwOTU2OTU3NDAzMGQ5NmRhMTcxMDUgbGVnYWN5LXRydW5rCis2NjQ5MCA3YjE2ODYwMmY0NGRiMmFmYzRiZGNiOGQxMmJkNmVlMGVkZWZjYmJkIGxlZ2FjeS10cnVuaworNjY0OTEgZTI0MjllMjMyNTc2YTY2NmZkMmY1NDNkOTU2ZmRkMjk5OWMwOTY3MyBsZWdhY3ktdHJ1bmsKKzY2NDkzIDMwZWYyMmE4MDI2N2MzZDY5ODI1MzBhYjZmZTg4MjFjYzEyMDRjNWIgcHkzaworNjY0OTQgYWY0YzRjZjNlMDFlMDkzMmU2NDQwYTI5NWZjZDBlNWE5YzdhM2JjYyBweTNrCis2NjQ5NiAyNjA2ZDlhMDBjN2I2MjIwMGY0NDA2NWFlZDQwOWNjMGEyYjc2ZjNmIGxlZ2FjeS10cnVuaworNjY0OTcgNTg4MTg4NDYzNjNiYjVlMGM4MWFkNjJkNmFmNDY5ZTU1ZGFjNWEzMSByZWxlYXNlMjUtbWFpbnQKKzY2NDk4IGZlMzU1YmQwNWM0NzQzODI1NDZjZjg0N2FiNTc4NjhlYzVlOWM3YmEgbGVnYWN5LXRydW5rCis2NjQ5OSA1MDdlZGU5YzdmN2Y0NzVkZmFmYmQ0YTUyYzIyZDc2N2QxMGEyYmMwIHB5M2sKKzY2NTAwIDVkNjFjNjU0ODQ5Nzk1MDE3ZGNhNGMwOTY1Y2Y5MDg3YTY4OTRjMTAgcHkzaworNjY1MDEgNDI4YjA1M2JiMDk4MzkzOTMzMDE4YjcyMTU5NDEzZDBmYjBhZTM4YyBweTNrCis2NjUwMiBjNjcwM2Y0OTg5YjM3MzBmNDM5NWZhODBiNzI1MTAwNDdlMGFhYzM4IGxlZ2FjeS10cnVuaworNjY1MDMgMGFkOGNlYTYwYmZhMGI2MDQzODI1YTZiZTMzOTc2ZjRmODU0Y2RhYSBweTNrCis2NjUwNCA1MjU3OTIwOTdjNjMwOGE3OGE3NmI3YjVmNTZiYmQ4YTI0YzI2YWNmIGxlZ2FjeS10cnVuaworNjY1MDUgNTU0OWI1ZGY4YmNiZGVhNzIxZWQxZTljZTcxOTU0YzI2MDNmNjZjYyBsZWdhY3ktdHJ1bmsKKzY2NTA2IDBlZWMzNDc1NTA0MTRlZWZhM2I1ZjUyYTBlMWI1MzdkZjlmYzM3NDkgbGVnYWN5LXRydW5rCis2NjUwMyA0OWI5Yjk5NjVmMzEyYmExNWZhN2E5MmJkNGRmNWMyYzdjMzgzODdkIHB5M2sKKzY2NTA4IDc2M2U0Yjg0ODgxY2MxYjkyMDc4YmI4MDIyYjgyZWExYzY1MGQ3MzEgbGVnYWN5LXRydW5rCis2NjUwOSA2NzAwZmQ4MTI1YmE1ZTBkMWM5NjgxNDFiNTEyYmE1ZDRlYmJiNTUwIHB5M2sKKzY2NTEwIDlmZTQ2N2ZmMGMwODYzNGIzY2RmMjFjOWE5NjYyNGNhOTQ3NmVhMjUgbGVnYWN5LXRydW5rCis2NjUxMiA1YTcxYTYwNjhlMzAzNTg0NjI3Yjc2NWNhZmUyZTQyYmFjYmZiY2Q3IGxlZ2FjeS10cnVuaworNjY1MTMgYzQ1YTY5NjViYzQ2Nzc3ZTQwMTdiOTc1MjJjZGU3Y2RiMTRlOWIzYyBsZWdhY3ktdHJ1bmsKKzY2NTE0IDYyNjAzMjU5NzcxMjAzMTAxMjUwZmVhYmUzYWJiOWY1YmE4MTNjZmEgbGVnYWN5LXRydW5rCis2NjUxNSAxNWFjNDk2MDJhMDY0OGIxYjU2ZjkxMjIxYzVmMjZkZWM3YWNmNzJhIHB5M2sKKzY2NTE2IDU3OGFkNDkxZDRhNDg2YmQwMDE3ZDU4NmQxZjA1YzM4NjUwOTkyMmUgbGVnYWN5LXRydW5rCis2NjUxNyBjMTM3MjkzMmFlODdjYzk1NTU3MGUyNDk3MDgyY2Y2NmMxMWEwNmI2IHB5M2sKKzY2NTE4IGYzZTVhODUzNDIwNjI5MzYzMDk5ZTczNmI1Y2IyMTA1MzRjNzU3Y2MgcHkzaworNjY1MjAgYjZhODAzMTg4NDU0ZDc2MzJlYzIzYTI0YjdmNzAzZWJhODQyYWE1YiBweTNrCis2NjUyMSBjYzlkOWQ5NjZiMWE0ZmY1MDJlZjRmNjhhZTBmODBkZmVlNTAxMzUyIHRsZWUtYXN0LW9wdGltaXplCis2NjUyMiBkNmI4ZDQ2YTM0MzFiYWM0YmE0NjBjMzRiOGRmZDc2YTZmYjE5Njk0IHB5M2sKKzY2NTIzIDUwYjFlNTU3NTZhNTA3YzUxYWRlMGU4YWJiMzZhZjc4N2RlNjcwZWQgbGVnYWN5LXRydW5rCis2NjUyNCA0ZjlhOTcxNDBmMGVmYjlhZWM4YTM0M2Y5N2I1ZWI0NDc2YTUwMDg2IGxlZ2FjeS10cnVuaworNjY1MjUgNjFjNjhlMmM1NzFiMDdkY2U1YTY2MDQzNjViNzNkM2ZmMDhiM2U4NyBsZWdhY3ktdHJ1bmsKKzY2NTI2IDg1YjQ4MGVmMjYzNWM2N2E5MjQyNDA5NzIzNjVlMTE1MjBhZDZhMjggbGVnYWN5LXRydW5rCis2NjUyNyA4YjE3ZjkyYmJjNGRiNjY0MzU2MjRjZDBkNWNlZDUxYzdmNzVhNGY2IHB5M2sKKzY2NTI4IDZiOWYyY2U1ZmU5MjJlODZjMDIwNjQ2YTU2ODRkMzE4ZmYxYmVkODUgcHkzaworNjY1MjkgNzAxZGI1ZTk2N2I1ZGIxMmYyMDgzMzQ2MmIzMmRlZGYzMzNhZDY2ZCBsZWdhY3ktdHJ1bmsKKzY2NTMwIGI4NDE1NTJhOWE3M2I5NDFlNDFhMDBmMzEyYTQwYTJjMzkwN2Y4ZmEgbGVnYWN5LXRydW5rCis2NjUzMSBmNzFmNjRhZTY1MTk2NmU1MDRlMmJmNWQwMzY4N2E3OGJmMjNmNWE2IHB5M2sKKzY2NTMyIGU1MmEzNTk1ZGZkYmM1MDZlN2JkYTM3NDhkM2U3MDIyYWYwMmEwZTkgbGVnYWN5LXRydW5rCis2NjUzMyAxNzc3NmRmNmZkYTJjYzMwNDE2MjMzZjNkM2ZlMzkzYmE3YjMxMjk0IHB5M2sKKzY2NTM0IGMyZTJlOTI2MmI5OWIyMDhjZmI2ZTljOWI1NDI3YTFmNjE0N2VmNTkgcHkzaworNjY1MzUgOTIzZmI0NThiZDBjNjllZjliMTE3ODY5YWQ2ZTRlYjUyZTA1YTBhMCBsZWdhY3ktdHJ1bmsKKzY2NTM4IDM4NmEwM2VjMWZmMDE0ZGY3YjNlZGNjY2ZlZDM0ZjQ4ZmYzYjM4ODIgbGVnYWN5LXRydW5rCis2NjUzOSA1NWNiM2UxMWJkZjc0ZTY2MjdmYzhlY2I4OWI5NzZhOTgyNzZjZTUxIGxlZ2FjeS10cnVuaworNjY1NDAgYzIwMDVjMWNmNmNkZThhNTVmNTZhMTRiZTlkMjUyZjU0YmZhY2Q4ZiBweTNrCis2NjU0MSA0OTkyZmQ0OWE5ODVkNjc4Y2M0ZTBiODFhOTkwNTNlZWZjNjg5ODQ0IHB5M2sKKzY2NTQyIDI1ZjgwOTEyM2RmNjA2M2Y2NjVjNTYxYmJjNjY1NGM1MjUwYmFlOWYgbGVnYWN5LXRydW5rCis2NjU0MyBkMWFiODNhZDVlMmI5MzRmMzQwNDU0NDc3ZWQ4NzVlNmMyNmUxOWQyIHB5M2sKKzY2NTQ0IDZiNjc5Y2EyNDM2OWZhMWQyMzRkMjFhMTJjNzYxOTk3MmMxMmNiM2EgbGVnYWN5LXRydW5rCis2NjU0NSBmMGMyNWU2YmJhZDU4MGI3Y2FmNjA1ZTkzOWM3OWUwODhiNWE3ZWNmIHB5M2sKKzY2NTQ2IDM5YTk0NzE5NTQ1NGRjMjA4YmMxMmE5MzJlODI0YTdmZTQzYjVjNzcgbGVnYWN5LXRydW5rCis2NjU0NyBjMTc3NzAwNzRhNGJlOTU0OTE3OWFlYzI2MzBlOGMxYjRmNGQ0ZTA5IHJlbGVhc2UyNS1tYWludAorNjY1NTAgNTQ2MTNiYTFkY2FkZjUwMzdhNzYzNDdlYzAzNDAzYTM4OTBlZjcwYiBweTNrCis2NjU1MSA2YWUyOGE1MDNjOWQxNmE3ZGIyZGNiOTllZTQzMGY3ZTQ0ZmMyNGZiIHB5M2sKKzY2NTUyIGYzZGE1NmUzZmNlNGIxNDJmMjM2MWE4YWZiOTdiMWM0YmJjMmQzMGUgbGVnYWN5LXRydW5rCis2NjU1MyA5MjJiOWUwM2IyNjBlYzU5MmYxNjRmOTAwNzZmZjczODZkZjFhNDAxIGxlZ2FjeS10cnVuaworNjY1NTQgZmU2NjBlOGM2M2JhNjkwY2Q1OGI5MTUzNzFkMzAzNWJhM2RlOGUyMiBsZWdhY3ktdHJ1bmsKKzY2NTU1IDA2Y2YzNWU2ZTMwOGVhYmZhZWE4M2NhMTMwNWU0YTI3YzkzMmE2ZTUgcHkzaworNjY1NTYgZTg2ZWQxMTM1MzVjZWYwYThiODhiNDg3YmNiMTFhMDc0MzY4MGRlZiBweTNrCis2NjU1NyBlZjc1ZWIzZGM0OGU4MjAyZGU5MzkyMzZjNWJlNWYyMTIzZmI4NzdiIGxlZ2FjeS10cnVuaworNjY1NTggMjdjMWJhNzE4NmQ4ZjcyOWM0N2ZjNmE2YzA0YzhhYWM3MjM0MTIwZSBweTNrCis2NjU1OSBkZTkwYTcyZTNlMjM0MzhhOWFlZTNiNjZkZjFmZTQ3ODlmNmJlNjIzIHB5M2sKKzY2NTYwIDFkNWMzYmNmMzVhZDM5ODZjMDhiYmNmNWJmOWNkZWIxNGVlMWQ0NmYgcHkzaworNjY1NjEgMDE4YmNkNjRjMzNlNGY2OGM3MDJjNGI1NzljZDdlZWZmZWU5N2E1YSBsZWdhY3ktdHJ1bmsKKzY2NTYyIDBkZTVhMzg4YTI2MTgwNGU3N2ZhMDY3ZDU4ZmEzYWQ5MzE4ZjI3OWYgcHkzaworNjY1NjMgNjQ2MTZlNWQ4MGI0YjI2NGI5YTljZjkwODM1ZDI4ZjE4YjI5OTVkYSBweTNrCis2NjU2NCBmNmRmNTY3Y2NkNjI4OWE0ZDYwNWVjOTJkZmExM2M4NGUyN2ZmN2RkIGxlZ2FjeS10cnVuaworNjY1NjUgYmU4OWQyYTM0YjJmODlhMzE3YmFmY2UwNGY2YjQ4NDUzODA3NmIxZiBweTNrCis2NjU2NiBhNWYyNmIzYTI2ZmQ5ZWU4ZTU0Y2FjMTUzYjM3MjhhNTA1MTNkMGFiIGxlZ2FjeS10cnVuaworNjY1NjcgZWRmOGE2YzY5MDI4Yjc3NTg5NWExYWVhOGU3YTc3ZmEzZDg4OWE2NyBweTNrCis2NjU2OCBmM2ViMDAwNDg3YjkzNjJjMmZjZjU0M2UzOTk5NjdkNDdhODVjNDgzIGxlZ2FjeS10cnVuaworNjY1NjkgZjg0MzBiNjg3NmZiMzZjZmE5MGNhZTZiYWJjNDI0NzY3ZWZlMmUyZCBsZWdhY3ktdHJ1bmsKKzY2NTcwIGJiZTJlMzU4NTJjZDRkOGEwMmM3Y2E3MjJmZjViZDkzODUyN2VlZTMgcHkzaworNjY1NzcgYjNjMjlkYTkzNGY1ZWRmODhmNmRlMGFkZmQzOTBmNjYzNzNhMTBiNSBweTNrCis2NjU4MCAyNWRhMDdmZTM2MzBjMDFiODk5MThmMTBjNzM3OTNlODkwYTc5ODQwIGxlZ2FjeS10cnVuaworNjY2MTAgZGI5OTllYjJiYmRjNzU5ZDJiNDk3MjdjYjc1MWIwMzI0Mzg1MTk5ZiBsZWdhY3ktdHJ1bmsKKzY2NjExIDYwNmFiMjVkZGVmMWIwYmUyZmRlZTMxZDU4YzY5MGUzZWMyOThmZGEgbGVnYWN5LXRydW5rCis2NjYxMiAwMWZjMDgzZTFkZGQzNTEwMWMyZTIzNjA1NjM0NmRiNmVhMjdmNWU1IHJlbGVhc2UyNS1tYWludAorNjY2MTMgYTg3MGMzYzZhOWFkMjQxMzU4OTJjNzdlOWZhNTgwNzNlZjZjNzU5NCBweTNrCis2NjYxNCAxMjBiNGJjZjA5ZmY3MjBlNjMyZjRlZGU1ZDc5MWU5NGY5ZWU1OGJjIGxlZ2FjeS10cnVuaworNjY2MTUgYTAwNjI2ZjJkNzA1NzkyMzVhZDAxMDQyZjEzODEwOTE0OTJiMTM4YSBweTNrCis2NjYxNiA5ZDFjNTMxMTY4Y2FkN2ExZTg5NWY2NzBiODgyYTkyMWM4YzYyNjg0IGxlZ2FjeS10cnVuaworNjY2MTcgMDkxYTZjNTIyN2E5NDc1YmEzYWU2YTNmMjExMzNkNDhmMDZiM2Y1OSBweTNrCis2NjYxOCBhOTFlNzhhYjRkN2QyMDMxMzZmODZlOGYwYzlhZWMzM2Y4ZTAwZDBiIGxlZ2FjeS10cnVuaworNjY2MTkgM2ZlYmNiZmQzNjAxYzQyM2EzMWIyNzA3NDVhZmUyYWUyZGNiNjE5OSByZWxlYXNlMjUtbWFpbnQKKzY2NjIwIDVlNWIxNWI2OTJlMTQxN2Y2YTk4Y2ZiMjkwMGMxZWY4NTBmNjEzOTQgbGVnYWN5LXRydW5rCis2NjYyMSBhY2M0NGI3ZmFkZTA5YTZmZTcyYzA5NDE0ZjU4MWU0NDEwN2EwOGJkIHB5M2sKKzY2NjIyIGRiYWVjMjQ5ZDU2ZjEyYjVmODk2OWE0ZTM0YmNiNWY4M2RiMWZkNTMgcHkzaworNjY2MjMgNzhhMjFiMjc4ZTFiOWI3NGE4MmRlZjQxYmY1YTUzYzQ0MDZkYzJlMCBweTNrCis2NjYyNCBmMzIzZmE0ZTQ4ZDc5YTI4NzE0MTI2ZmY3NDM4ZDI4Nzg4MDJlOTAwIGxlZ2FjeS10cnVuaworNjY2MjUgYjU1MGRlNDI4NTFhODVjMTA2NmMwZGM3ZjdmZmE0MTVhMjQyMzQ1ZSBsZWdhY3ktdHJ1bmsKKzY2NjI2IGIyMzJlMmU5ZTc5MzdlMzQ1NzMyMjkzNmY5MTllMWQwZmE2M2RjNjIgcmVsZWFzZTI1LW1haW50Cis2NjYyNyAwNmViZjEyYmZhNjJjYTViOWVjYTJlN2FkNzBkNjU4MjhhOWMzZTJkIHJlbGVhc2UyNS1tYWludAorNjY2MjggNGVlZGU1ZTQ4YWU2ODVhYzdiZDk1OTEyZDI3YjY3YTRhMTMwYTVjZiBsZWdhY3ktdHJ1bmsKKzY2NjI5IGUxM2MwM2UwY2UwYmI0YzkyM2QyNmZkNzNmNTY2NzI1MDBmZDIxYjcgbGVnYWN5LXRydW5rCis2NjYzMCBiYmFkYjk2MGZkNWMxYTk3NjhmMDlkOWJiNzFlNzAyN2IxNmMyNTUwIHB5M2sKKzY2NjMxIDMwNGJlYTg3MzFkMjFhNGUwOGViZGNjZjYwNWFlZmZjYmI1MjMxMWMgbGVnYWN5LXRydW5rCis2NjYzMiBlMGMwNmNhZWZiZmYzM2ZhNDcwNmNjZTU1ZTM4MGYxNTAyYWY2YzBhIHJlbGVhc2UyNS1tYWludAorNjY2MzMgNjQwM2YxZWRlY2MxOWQyNGM0ZWJhZWI2MTc1YzQ5ZTEyMWE5MmQzZSBweTNrCis2NjYzNCBlYjM1ZmNiYTY1OGVlMjViMzEwYmE0YWQ5MjQ0M2VjNjY5MGIzN2I5IGxlZ2FjeS10cnVuaworNjY2NDMgMDc1MDQyYzc3MjRjNzRhNDliNmIzZTA0ZmQxNDQ1YWM4NzRkZGZjMyBsZWdhY3ktdHJ1bmsKKzY2NjQ1IGRlNzVmYjRlODAwY2VmOTNiOTIzNDUzMzZlMDA2OGFlZjUxZDBjMWMgbGVnYWN5LXRydW5rCis2NjY1MyBjZGM3ZjYzNjc3OGI2OTIzZDBmZjcxZTk1ZjMyNjAwNmVmZTFkNmI1IGxlZ2FjeS10cnVuaworNjY2NTQgOGExZGJlNWMyYjc0NWMxODU1YmE0MDE2MzhkOGRiZmI1ZjI0ZjkxNCBsZWdhY3ktdHJ1bmsKKzY2NjU1IDUyODQ3NjhjMjY0YzU5ZDU1MDM0YWM1MTFhNmQwYmM4NjczZDdmN2EgcHkzaworNjY2NTYgZDcwYmNmM2I2MjhkN2EyZWQ2MTliZjkzZjRlYjkzOTA1YzBiYjAxZSBweTNrCis2NjY1NyAwNjk5YTcxMmEzZGJkZDhjNTJmMThkYWQzMDY5MTI2MTMyMTJhMDBmIGxlZ2FjeS10cnVuaworNjY2NTggNzY1MWI5NDEzYzg1NGNiNjBkMGMxMDNlMzFkNzM0YTkxMjFhMWJjMiBweTNrCis2NjY1OSA3YTNmNzUyYWRmMWNmODk0NTJiODgzOWM2NDMxZGQ5MjUxN2IwYWJjIHB5M2sKKzY2NjYwIDUzMGM4MTQxOGMyODM4Y2M4MjJhOTkwYTJhM2UzZWFiYzMzZjljNzMgbGVnYWN5LXRydW5rCis2NjY2MSAyY2E0MTU5YmJlNjU0MDY2MTczYTkyNTAxZjllMjVkNDZjOTNiNzQwIGxlZ2FjeS10cnVuaworNjY2NjIgY2UyZmNhNDhhY2U0MzI2NjgxODU0NjMxM2M5YTFkNTNmYTg2ZjM0MSBsZWdhY3ktdHJ1bmsKKzY2NjYzIDc1NWYzNGFiNDM4YjE5MTY3YzM3MTBkNWIyNDhhNmUzNGMyNTU5YzIgbGVnYWN5LXRydW5rCis2NjY2NCAyMzFmM2EyNWNjZjViMmRlODhlZGE5MGYyNGU2MDlkYjkwNDMwMmRiIGxlZ2FjeS10cnVuaworNjY2NjUgZGEwNzM0ODRmNWFjMzA2YzU4YmNjODE5NWQ0ZDA2N2ZmNGI0N2UzYSBsZWdhY3ktdHJ1bmsKKzY2NjY2IDQ4NDRjYWMwODY1MjVkMmE5ODVmOTY5MDJhN2I4MmE2YWU5OGY3YzEgcHkzaworNjY2NjcgNmNjNWFjZTlmNTEzZTAwODAwZTEwMWE3ODI1NmU3ZGU5MjViMDFlYyBsZWdhY3ktdHJ1bmsKKzY2NjY4IGVjNDJmNzk4ZjU5NzM2NDQwYTAzMWZlNjJmMmQzMzcyZDU4MmJlNjcgcHkzaworNjY2NjkgNTZhM2ZhNDQ5YzZjNmMxMzU2OWY4YzRhZDNiOTlkMzA2N2QwMTdhNyBweTNrCis2NjY3MCA1M2FjZTM5N2I5YzViYjViZjUyM2MyOGQ5MmIzMTBlYWQ3ODZkOTMwIGxlZ2FjeS10cnVuaworNjY2NzEgZGJjNmVkYmE3MGE3Yjc2NGFhNzQ2OWMyMjIzNmM4NTZkYWRkYjFlZCBmaXgtdGVzdC1mdHBsaWIKKzY2NjcyIGNjNjliOTMxYTYwODJkOWQyNDI3NDkyOWJlZTI0MTkwMDAxYTk3MzYgZml4LXRlc3QtZnRwbGliCis2NjY3MyA1YTlhODNjYWU4ZjFiMmFiOWZmNzM1MjRjNTc2N2NlYTFjNmE5NDZlIGxlZ2FjeS10cnVuaworNjY2NzUgYzVmNWQ2YTMxM2U5OTczZGQ0ZjA5NGNmY2U5MTQ3MDkwM2RjZTc3NCBweTNrCis2NjY3NiA2NGJhNTI0MGFmMzFhOTJiZDgwYTk0MWYwMzJjZjc5NjBiZDRlY2JkIGxlZ2FjeS10cnVuaworNjY2NzcgNzRlN2Y5N2RhZDdkZWRkMTA1YTE3YTJmYzhhYjBkODAzY2EwYTM3MCBsZWdhY3ktdHJ1bmsKKzY2Njc4IGE5NTAzMGY5MzllZDA4ZGViOTM0MzdkMDZiMjYyZGE4NWVlMTM3MGQgcmVsZWFzZTI1LW1haW50Cis2NjY3OSAwMjQxN2I1NmU0YjIxYTk4Y2Q5ZDg2ZmFkNmMxOTM4MGM5NWRkNGU1IHB5M2sKKzY2NjgwIGQ1ODYxODVhN2E1MTY3YWVlMmJkZThkYjk5NzVjODk3YzkwMmY0NWEgcHkzaworNjY2ODEgY2FkMWQyYThhOWQzYjliMGUwNjZkODQ4YTg2Y2EzNjFjYTkyNDRlOCBsZWdhY3ktdHJ1bmsKKzY2NjgyIDQwNTM2ZGRjMjZhMTliOGZlZTI1MGY0MzczMDVjZjI1NjYzODM3YTQgbGVnYWN5LXRydW5rCis2NjY4MyA1YjM1Mjk0ODU0MjE4YThjYWYxNjE2YjFmN2ViZDJmYTYxZDhiZjQyIGxlZ2FjeS10cnVuaworNjY2ODQgNjllMTg0Yjk5MGRjNzdiMmU1OGMyMmZmZjNhZThiZjNmMDQ3ZDc3ZSBweTNrCis2NjY4NSBlZGI1ZWVjZjNiYjhiZGViNjg1ODk2ZjcyOTg3OTJjODU4YjUwODcxIHJlbGVhc2UyNS1tYWludAorNjY2ODYgZDg4ZjFmMmYwMjEzNWY2ZTQ1N2Y0N2IzODkwNjE5NzkzOTMyMGIzMyBsZWdhY3ktdHJ1bmsKKzY2Njg3IGFiMzRhNjQ3ZTIyZmNlYjUwNDUxNGZmYmJlMWYwNWVhM2U5MmI4ZjggcHkzaworNjY2ODggYjQ5NjRkZjY0Mzg0MGU0M2IxYmFkMzZiNDNiNmExMTAwOGE4YTViOCBsZWdhY3ktdHJ1bmsKKzY2Njg5IGY0YWViMTEzYzllZmFkY2U2OTViNmRkN2QxODY4M2M2MmZhNGZhMDMgbGVnYWN5LXRydW5rCis2NjY5MCA0MTU2NTU1ZjM5MTE4MWJjMGQ4ZmNhY2U3MzUzZTcwNjI3M2ZhYzg2IHJlbGVhc2UyNS1tYWludAorNjY2OTEgMzc2MzI3Y2I2ODIxM2M0ZDE0MDIxNDFkNTJlMDA1NmU0YTAwZGQwYiBweTNrCis2NjY5MiA3YzU2NjI0NTQ4ZmQ0ODJmNWJhZmZkY2QwN2U2YTUxOWY1NGFjNmJlIHB5M2sKKzY2NjkzIDZhNzMxMzRmOTYwMzJlZjExNjJlNWZmMjc1OWIwMmVjZWM4ZDg2NTYgbGVnYWN5LXRydW5rCis2NjY5NCBiMjgwMWFjYTlkNmI1ZmJlMWExYTBlOGU4NGQzNDMyMWJiMmJjMTMzIHB5M2sKKzY2Njk1IDU5OGQxOTkzNjE4NmEzODA0NDhlZTM5MWZlNDBlNTg1YTNmZTU4NmIgcHkzaworNjY2OTYgYWY2ZmU5YWRiMzljM2YzYWQ1MzhiOTYzMjg2NzQ5YTU3OTc4YjhhOSBsZWdhY3ktdHJ1bmsKKzY2Njk3IDZjZWFjZDAxNWQ2NzhhNTNjMzFlYWNhZTljNjhlNDNlM2M5ZDkxNTEgbGVnYWN5LXRydW5rCis2NjY5OCBhNGVkNTRkNTc2NGM5MDYzMWMwYjdiNTUwMzVmMWMwYjRhMWYyNjM3IGxlZ2FjeS10cnVuaworNjY2OTkgNjc2NTk0NmUxYWM0OWZmYjM1NGJhYmE4NWZmYzM4MjBiZjMwOTEwMSBsZWdhY3ktdHJ1bmsKKzY2NzAwIDdmMWY5ZTE4Y2RmYTMyNWFlOTU2NTI1NDcwZTIyMDU3NTk1NmQwNzcgbGVnYWN5LXRydW5rCis2NjcwMSA4NjA0NWUxZWU1OTUwYzRhMDAwNjMxZmQ2YWU2NGQ2YWEyNzRmYjFkIHJlbGVhc2UyNS1tYWludAorNjY3MDIgMWY0ZWEwMjI5ZWM2NjhjYzA1OTBiYjk1ZTYyMTk2MmZhMDlhMjkyMSBweTNrCis2NjcwMyBlZWQ0ZDUzMzMzMmYwZmQ5MDFhYjMwZDI5MmQ1ZmFmNmFhZThiOTM2IGxlZ2FjeS10cnVuaworNjY3MDYgZDMxODIzNGEwMGQ3NTg2Yjk1ZmRkMzY5MzQ0ZDFmNmEyMDI3MTVhNCB0bGVlLWFzdC1vcHRpbWl6ZQorNjY3MDggZWE1MzE2M2IwNmRlMzJhNmZiYjM5MGNiYmIxNDkwMTMwMTFhYjE3YyBsZWdhY3ktdHJ1bmsKKzY2NzEwIGI1ZmI5YjAwMmVjMzE3M2NhOWEyM2Q1NjBmMjQ2YmFjODA5NGFhOGYgbGVnYWN5LXRydW5rCis2NjcxMSBhZGE2ZDdmNzFiNWRmMDc2ZDllMGIzNmVmN2YwZWQyM2Y2Nzg4NjZkIHB5M2sKKzY2NzE0IDU4YTk4ODRkMmJjM2QzM2Y5ZGY4NTUyODU3NzA5ZGZlOTlkMTgzODQgbGVnYWN5LXRydW5rCis2NjcxNSA5NWZmZjVhNmEyNzY1MjBiMmU3ZTBmNzVmZTMwM2Y0OTM3NjU2N2E1IGxlZ2FjeS10cnVuaworNjY3MTYgYmM0Y2E4MGJiNWZkNGM5MWE4YjdlNzA3M2U3YzRkMWNjMWI0NzcwZCBsZWdhY3ktdHJ1bmsKKzY2NzE3IDU0Y2QxY2M3MGE0NzhkODUzZWY4YzM2NGEyZTAyN2I2ZmE2MDI0ODIgcmVsZWFzZTI2LW1haW50Cis2NjcxOCA3MjkyODkzZmMyYzVmOGI4NTA4MjdjZjI0ODIzMjk2MDE5ZGJmZTVmIHJlbGVhc2UyNi1tYWludAorNjY3MjEgNzQ4ZWM5YjJhZWYxMDI3YmQ5MzNkZTZmNzg5YmFiOGJjYTg4MGU2MSBsZWdhY3ktdHJ1bmsKKzY2NzIyIDlkMmYyODE4MjgzZDVlODljNDEyZGQ2ZjkyOWQ1NmRjMGRlYTA1MTUgbGVnYWN5LXRydW5rCis2NjcyMyBhNWYzMGQwNjQ5M2NiZDRjOTVkOWE4ZDZlNDZkODIxNTM2ZDY2ZmFlIHB5M2sKKzY2NzI0IDg4ZTYxODNjZGIzOGM2YmNhZmNjNjQ4MWU3NTA3YjY4OTNkOTA1ZGQgcmVsZWFzZTI2LW1haW50Cis2NjcyNSAwMzNiYjVjYWNkMGEzNDE3YmU2ZjRkNDVjMjI3NjBiZDFmMzE1MjA0IGVtcHR5Cis2NjcyOCA2ZGQ4N2RlODUwM2Q1NjUyNmNjZjhlMTVkN2JmMzE5ZDYyMTYyZjJmIGVtcHR5Cis2NjczNiA1NmQxNzg4NzQ4MjEzM2Q5YjdlNWRkMjg3YWIyMmZkMWNlYWE0ZmI4IHJlbGVhc2UyNi1tYWludAorNjY3MzcgZWViNWZhM2VmODg5YTIyMTkwYzY1NThjMmFkY2U4ZmMzNDAwODlkNiBweTNrCis2NjczOSA5Yzk3MWQ1MmEzYzM1ZmFiMmFhNjdlMzM5N2E1M2U2NzE0NjBlYmQ0IGxlZ2FjeS10cnVuaworNjY3NDAgODczZDFlMzY5NzlkYWU2N2Q5NGU0NTViNTllMjgyNTRlMjgxN2I1MiByZWxlYXNlMjYtbWFpbnQKKzY2NzQxIGY5ZjAxNDg0ZTQ4YjAyYzFkMWM4ODYxYzk0ZmFjODhiYTJjN2MwNGUgcHkzaworNjY3NDIgMDY4ZDliNjE0ZTdiZmZhYjY4ZGQyODExMmJiMGZmMTM4ZThmNDIwMyByZWxlYXNlMjYtbWFpbnQKKzY2NzQzIDhhN2M5MzBhYmFiNmEyYzI2ZWFiNjk4OTFmNDlkOGJlNDlhZmU1ZGUgcHkzaworNjY3NDQgYjlhZmE3YzljYzM1ZTE1ZmI2OGE5ZDQwMWE2YzEyZjNmNjEwMWQxYyBsZWdhY3ktdHJ1bmsKKzY2NzQ1IDc0MjZkOGQ3Y2UxYjRhNWRhZGY1OWRmN2E2NmNjZjhlZDU0NzlmYmEgbGVnYWN5LXRydW5rCis2Njc0NiAyODFiMjFjYTAzZjYzNjMwNGY5N2U5MzhmNmJkNjM4MTcwM2RiNzhiIHB5M2sKKzY2NzQ3IDAxMzg5NTI2YmEyNTU3OWUzODU1NmEyYzI4MDEwNGMxZWUyN2UwNjUgcmVsZWFzZTI2LW1haW50Cis2Njc0OCAyN2Q3ZWZhM2UxYWMwMDU1MTkyYThiZDc0MTBkNDJhZDMzNjg5Y2Y2IGxlZ2FjeS10cnVuaworNjY3NDkgNjQyZjIwYjIyNTc3OTU2MjhlNjM4YTcyNGJiMGYxMWZjNTExOTc0MCByZWxlYXNlMjYtbWFpbnQKKzY2NzUxIDg2ODkzYTM5N2RkMDUxZDRiMTUyMzVhOThlY2UyZDhiMjhhMzRjMTYgcHkzaworNjY3NTIgZjgxMmJjMmI2YTdiZmRmODcyYmUxNzg1NDJlNGIyMThkMDMyZmM5YiBsZWdhY3ktdHJ1bmsKKzY2NzUzIDk4MTMwNmY0YjQwNTAxMWUyZWMyMDVhZmRjMGUwYzViMjYxMWUxZmEgcHkzaworNjY3NTQgM2FlYWM0YTZhMmNmY2I1YWU3N2JiYTc1MjBiOTgyOWM4OTFiZTFmNSBweTNrCis2Njc1NSA0MTllNzIxYjNjYTllMjAzMDUyNjkyMzg0YWU2OWJlOWMxZDBhNmIzIHB5M2sKKzY2NzU2IDIwMGRkMWQ4MjBmY2Y0ODU5M2ZlODNiNGIyNjYwOTY5MzBlMGJkYjIgbGVnYWN5LXRydW5rCis2Njc1NyA1N2IyZDlhMjI1OTRhMTVkNTc5MDJlYmNiYzlmODFkODhjOTFkMjExIHB5M2sKKzY2NzU4IDRmNzcyMDA0YTg1ZGNhYzUyNjNmZTllZGJjNTQyNjY3ZTU2OTM2NzcgcHkzaworNjY3NjEgNTVmOTE0YWU5MGVkNjRjYTAzMDUyZWM0ODJhY2QwZDRlMTVlZmY5YyByZWxlYXNlMjYtbWFpbnQKKzY2NzYyIDAzOTEwYjg5MjY3OTFjZDY2ZGNlNDVmZjI5NWQxMGU3MGUyMTBiNTMgcmVsZWFzZTI2LW1haW50Cis2Njc2MyAyMjIzNjU2ODJjMWJlMjA2MjMzYTE4OTcyY2FjNGVkN2E1OGYzOGY5IGxlZ2FjeS10cnVuaworNjY3NjQgMTA5MTAwOGYyY2JkMDdkNGE2NzQ4MzQ1NDgzMTdmMDMzNGVjM2ZiNCBsZWdhY3ktdHJ1bmsKKzY2NzY1IDI4M2U1NDI2NGMwZDY3ZmU0ZGZiYWQyNjE4MDhmMDAwYjRmNzI4OWUgbGVnYWN5LXRydW5rCis2Njc2NiBmYTA0MGQzMGNmY2FhOGE2MzI3NjU5OGVlZWFiN2UyZmIyZmYwN2Y3IGxlZ2FjeS10cnVuaworNjY3NjcgZThlMTk2Mzk3ZjQ1NzFiNGIxZDYxZjFhZmQ2MTYxMmIxOTk5ZjI3MCBsZWdhY3ktdHJ1bmsKKzY2NzY4IDc0OTgxZGM4MzlmZDIyZmZmYTY5MDZlOGY4N2E5Zjk4MzA2NjRlYmUgbGVnYWN5LXRydW5rCis2Njc2OSBlODIyOTkyY2Y2Y2VjY2NmZGY4YTI0YjgxMjI1MDAyODE5YTJmYzRjIHB5M2sKKzY2NzcwIDhlYzg0OTc2MDRjNzdlN2Y1NTQxZDk4ZjQ2ZmQxNzlmMjA5YWQyMGQgcHkzaworNjY3NzEgYThmOTU5NWI5ZjU1MzZkZDk3OGEwOTk3ZDU2ODJiN2Q4OWVkNTM4ZCBsZWdhY3ktdHJ1bmsKKzY2NzcyIDA4YzQ4ZWEwNTA0NWJiMDNmYWQwNjVlNDU5MDYzNGI2YWVmNmUxMWUgbGVnYWN5LXRydW5rCis2Njc3MyBiZjgxY2I4ODkyZjUxY2U3MzYzZTk4OTM0Mjc0NzNkMDJlOWFiNTY4IHB5M2sKKzY2Nzc0IGI1ZjM5YzhhNDQyMzllNGNjMGZjMzc0NGQ3ZTVjMDQzZDgxYmFhNDkgbGVnYWN5LXRydW5rCis2Njc3NiBmNWI5YzZmNGM1OWM3OTA1ZDAwNWMxMGZjMTc3NTE1OWRhOWJmZjBjIGxlZ2FjeS10cnVuaworNjY3NzcgZWY0YmI0ZDVkZmRlOTdhNjVjYThjNDcyZmFkODgyNjc2NTJjZmE1NCBweTNrCis2Njc3OCAwYjFkYjI0MmQyMzJlNDdmN2U5NWVjNTE5NGM2OTk4NjYxMGMzOGEwIHB5M2sKKzY2Nzc5IDg0Y2NmOTFhMDZjYzU0NTJhNWY4YzczNzRjYTU5MWY5NGM1YzIwMjggcHkzaworNjY3ODAgOGE4OTJjZjI1ZTdhYTZiMzVmNWEzMjUyMWNjMmIzMGVjOGU3YTk0MSBweTNrCis2Njc4MSAxNmExOTRkYTc3ZGU5NmU1NzdjMjdmNzE0NmNlMWUxMGNiZTc2OTMzIHB5M2sKKzY2NzgzIDg0NDJmMTM3MjBhNGRjMGU2OTY1YmQxNGU0ZTcwNzQwYjY2MmNlMjMgbGVnYWN5LXRydW5rCis2Njc4NCBiZTJmODViZTU2NmU1MTYzMjNmYjRjN2UyNjEzZDJlNTY2MGQ3MjYzIGxlZ2FjeS10cnVuaworNjY3ODUgYzU2ZmJiN2MxNjg5Y2E4YjBkOWE0N2ZkYWFiN2JjZTI4OGE2ZmQ2NSBsZWdhY3ktdHJ1bmsKKzY2Nzg2IDg4NWZkZjU5NzBjYzU2M2E1YzBhYWE2ODQzOWRiODBjNTJjMTE3MmEgbGVnYWN5LXRydW5rCis2Njc4NyBiMjFkZTA0MjEzOTVkNTA4MzI0NzI2ZjkwMjlkYzg3YWU4OTUyYjE1IGxlZ2FjeS10cnVuaworNjY3ODggNTgwOGE3YWUwM2FjZDkwN2YwOTAwYmRkMjIxNWI1OGFjYjBiZWM4ZCByZWxlYXNlMjYtbWFpbnQKKzY2Nzg5IDM1NmU4OGQ0YWYzMDIzYzdiZWIxNmI5N2Y0YzI0NmNkNjcyMjUwZjkgcmVsZWFzZTI2LW1haW50Cis2Njc5MCBlNTkxZTc1ZTgzYTJmMWYwMjcwMmM2YWIzNjliYWUyOWJmNjUzYTNjIGxlZ2FjeS10cnVuaworNjY3OTEgZjIxYTNkODU4NWM2NTU0NDlmZGRjY2EyMTJkMWFlNDQ0NTkzOGI5NSBsZWdhY3ktdHJ1bmsKKzY2NzkyIGFmN2EzOTlmYzI3MjIyYzIwNjczYTE2MmIwNzJjZGM1MjdmNjMwYWUgbGVnYWN5LXRydW5rCis2Njc5MyA5ODRhOGJjNmQ5NTZmMzU1MTQ0NjA3OTJkODM1YjI3M2M0NjdiOTdmIGxlZ2FjeS10cnVuaworNjY3OTQgZjczMWYwOWVhODM5NGM0ZTQ4YzM1OWE2ZDk5MWJkOThiMjc4ZjJkMSBweTNrCis2Njc5NSBhYzMxNmYyNTIyOWM5MjA0ZTI2N2NmYTIyYjk2ZjhkYWZmODc2NzlkIHB5M2sKKzY2Nzk3IDczY2UzYTExMDQ2ZmJkYzAwOGJjYjM0ZWU4MWM0OTM4OGRkMmM1NzEgbGVnYWN5LXRydW5rCis2Njc5OCBmZjVjM2RkNjhkMDdjMzg4YWFkMmYwOWJhZDBiYzY2NTMyZmUyNDUzIHB5M2sKKzY2Nzk5IDA1NjA0NTU1YjhkNDAwZGJiYjE3MmY4NGYwZjJjNTg0OTRiZmY3MWYgcmVsZWFzZTI2LW1haW50Cis2NjgwMCAyZTc5NDc1N2JkYzg0YWI3OGFkMzY0NjdmNjkxMGYyMzI3MTk1NWJkIHJlbGVhc2UyNi1tYWludAorNjY4MDEgZTA5NmM1MmNkNWNhOWExM2U1MTk0ZmNkMWUyY2ZkMjVkN2UyMDA0MSBsZWdhY3ktdHJ1bmsKKzY2ODAyIDhmNWE4ZWE1YmE3NmVhYTNmNWZiNjkyMWYzNzhjMjhiMTFiMjA0OTYgcHkzaworNjY4MDMgZGE5NTVjMzM5NjViNDkyMDMyNTBkZjNhNWQ2YmEzM2JhNTNiYmNmMSBsZWdhY3ktdHJ1bmsKKzY2ODA0IDM1NmExZjZlZjM0ZmQyODc3YWVkOGM3YWY3ODJjOTg1ZTljYWQ5YzQgbGVnYWN5LXRydW5rCis2NjgwNiBjNWIyN2RmNzlkN2Q2ZDliZjZiMjU3NjIwMTBiYmE0MzBlNmMyY2NhIHB5M2sKKzY2ODA3IGMwNDc4NjUxNDYwZmNhZmQ3YThlMTliM2U0MDFlMjZhNThhYzM3ZTIgcHkzaworNjY4MDggOWU0MWM1ZTdlMzYwMTk5NjliMGIyZWQyM2Q0ZDVhNjZiOTRiOTI5ZiBweTNrCis2NjgwOSA1MjRhYzc0NGFlMDQzOTY2NjQwMDkzMDlmMTBhZmEyNjhiYzBlNDU0IGxlZ2FjeS10cnVuaworNjY4MTAgZGM5NWU0NmYxZjNlODlhOWJkNjIwZDM0MjdlNjI4NTAzMzIwOTI1NCBsZWdhY3ktdHJ1bmsKKzY2ODExIGMyZDAxOTZlYTU4YmQ0NmJlZTM5MDg0NzJjZjI5OGU2YTE5OWQ3NTAgcHkzaworNjY4MTIgMDJkZDVkYjYyOTBmNDViZTJlZWExZWJkNTczYWU5ZmNiODkxZTQ1NSBweTNrCis2NjgxMyBjOTMzYzg0NjdiZGRhYWVlYmY0YWZjMmYyM2I5ZmE2NDhlNTcyM2VkIGxlZ2FjeS10cnVuaworNjY4MTQgYzljNzhlMDBkZjY3M2U2NDM1NzNlNWJjNWIwMzRmYjQ1MjNmMzgyNiBsZWdhY3ktdHJ1bmsKKzY2ODE1IGM1YWU5MzJmNjNjOWRhMzQ4YjZhZDUyOWY5NTk2YzljZjk4NjEyZGEgcmVsZWFzZTI2LW1haW50Cis2NjgxNiBmNTExNWMxMzJkNGFhNmI0ZDkxNzA1MGQ4MDUyNGMzYzZlNTQ3Zjc4IHB5M2sKKzY2ODE3IGRmZTMxMGE0MDI0NThkMTE2NmI2YjBiMTRmOGJiZjkxYzk0MTRhMWUgcHkzaworNjY4MTggN2FlYzAwMDE1YTllMTU4OTRkYmRlNDljZmQyMmE4M2I1NmUzNzc5MiBweTNrCis2NjgxOSBkOGI0YTYxYWJmMjVmNzE1YWUzYTY2OTYwMzE0ODU2ZWExZDYxNDZlIGxlZ2FjeS10cnVuaworNjY4MjAgZGJkMmIxODE3YTc1ZDQyOGYwNDIxZjY4ZmQzYzYyMjM5MzJiNmJmMSByZWxlYXNlMjYtbWFpbnQKKzY2ODIxIDEyNTk4NGI3MWE3NjhlMjAwNTU1ZTg0YTIzNWRlNmJkYjIzYjdmOWUgcHkzaworNjY4MjIgZTk5MTUzOGI5YTg3NmM3NzRlNjA5MDg4NzFiZGM4MDg2ODZhODA5OSBsZWdhY3ktdHJ1bmsKKzY2ODIzIDljN2VkNzBhYTJjM2ZlNGY4Y2Y0Yjk0MGJlMDE0MTIyNjMyMzc4ZGEgbGVnYWN5LXRydW5rCis2NjgyNCA3ZWZkZGFlNTBkMjU1MDM5MTUyMWVjMzYzMjk5MDMyYWIwZThlNTQ2IHJlbGVhc2UyNi1tYWludAorNjY4MjUgNjY3OWMzMjUyZjliMGViMjVkZDgzMmNiMzhkMTA2NTc0ZjE2NzliYiByZWxlYXNlMjYtbWFpbnQKKzY2ODI2IGRkOTdkYzc5YWUwYTA1ZjE0YjdkZGMxODM4MGU0YzU5ZGU0ZWRkZTAgcHkzaworNjY4MjcgOTE1ODc4MThhZGI4MzgwNGEwZGVhZGFkOGM2NTdiMTgzNDMwZmIwZSBweTNrCis2NjgyOCBkMjE0MGRlNzY0Nzk0ZTdlNGYyYWIwNDU4ODgyNWEzOTRmMjI2OGE3IHB5M2sKKzY2ODI5IDFjOTgwNTU0YjU0YjJjMTBkNGJiN2VhODA1YmQ0Zjk1ODkyZDNmYjQgcHkzaworNjY4MzAgMGIyZjc2NWJhNGY3NzVjZjU5Y2Q1ZTQ4YTVjNTdlOTJjM2M4NjQ1MyBweTNrCis2NjgzMSA4MjA5MWRmNjUxYmU3YTkxNzY3NzcxOTMxOTM3MWZjNWZmMTMxMWY4IHB5M2sKKzY2ODMyIGNiNzg4ZTA4NDRlN2Y5ZDA4Mjg1NGEyM2ZkNTQzMzMwNzM0M2ZhMDQgbGVnYWN5LXRydW5rCis2NjgzMyBjZTdiOGMzMTdkYTIwZjhhNzQ1YTUyZjkzNjQxNTAyNzdlZGNlNzBlIHJlbGVhc2UyNi1tYWludAorNjY4MzUgZGVlZjI4NDgyMmY3NWQwN2E5MjhjMWE1MjVlODYzNzY1NjE2OGIxNCBsZWdhY3ktdHJ1bmsKKzY2ODM2IDIxMDYwYTU2ZGVmYzg4MWU2NzdhMTFkMTEzOTNhMWQwOGI0MjE3NWQgbGVnYWN5LXRydW5rCis2NjgzNyA2ZTdiODUzZTg2MTYwOTMzNDI3Mjc4ZGIyNzNhNTVmZDBmZTA4ZDdmIHJlbGVhc2UyNi1tYWludAorNjY4MzggMWU1YjIwNTBlYzZhY2Q0ODJmODk5M2E2MTUyNGRjNDRmMmVmNjhmNyBweTNrCis2NjgzOSA1OWRhYTdjZjhjYTA5Nzk1MmQwOWRiODUzM2E4YmQ4MzdiMzA1OGJmIHB5M2sKKzY2ODQzIDY5ZWExMmRiOWIyOGI1OTgzMjJkMWM2NTdhZjY2NWI5ZjI3M2RlNjIgcmVsZWFzZTI1LW1haW50Cis2Njg0NCA4NjBmNjI4NDhhZjAyZmJkODM4NTU3ZDI4MDVlMmMzNmVmMzIxMTk3IHRsZWUtYXN0LW9wdGltaXplCis2Njg1MSAwMjA1Y2YwYjFhZGI5ZmJlM2NiN2RlZmFkZTMyOGRlNWUxMjFiZTY0IHJlbGVhc2UyNi1tYWludAorNjY4NTIgOTRkMTdjZjNkOGJiYmUwMjQyZDIyZTQ4NDkzMDI1MGU5ZmJlZjgzZiBsZWdhY3ktdHJ1bmsKKzY2ODUzIGI0ZmNiMmY0NzEwMWNiYmRlMTMzY2Y1MGFiMTRiN2I2ODZkMjRjODQgcHkzaworNjY4NTQgNDg0NTgxMGY1ODhlYTI4ZjA0NzAzMDMzZDA4NGM5ZWUzYTc1YjM5MiBsZWdhY3ktdHJ1bmsKKzY2ODU1IDU3NWY2NWYwMGM2YzA5MjNjMGIyNmVhOTNmMGMzMWMxNDhlNGFmMGEgbGVnYWN5LXRydW5rCis2Njg1NiBkNGI2MTNkYTM4ZGNjZjY4OWI1MTg1NjAyNDc1YWExOWJiYmYxNmI0IGxlZ2FjeS10cnVuaworNjY4NTcgMmJmMWMxYmQ4ZDk2ZWIwZWFmMjhjNjVmYjY4Y2MxMWViOTkzY2VjZSBsZWdhY3ktdHJ1bmsKKzY2ODU4IDljMGVkNGFlY2ZiZDkxZDNiYzgyOGY0YWJiYWU0ZTYxOWExZmMzMWYgcmVsZWFzZTI2LW1haW50Cis2Njg1OSA1MTg3NmE0MDNjMGRmOWJjNTY5NzA1YzdiOWIyZWU3Yzg2N2FjNzBlIHJlbGVhc2UyNi1tYWludAorNjY4NjEgY2U2NGNiYTUxYzJiN2Q5ZTNjMDZjNTU5MmI1ZjA0ZGE1YzE4OGZhZiBsZWdhY3ktdHJ1bmsKKzY2ODYyIDBkYTNjMzBmZTliNTIzYWFmMTdjNDMwYjE4YjYwZWI3MDlhOTc4YTcgbGVnYWN5LXRydW5rCis2Njg2MyA1NTBkNzUxNjBjYzRmNzM4MWI5YjUxZjI1ZGZlMDU1NmJkNDMxNDMwIGxlZ2FjeS10cnVuaworNjY4NjUgYTAyNThiYWVkMDA1N2MwNjUzNTQ0MTcxZjliN2U2MTUxMTlkMGQ3NyByZWxlYXNlMjYtbWFpbnQKKzY2ODY2IDBlMzU5YWZjMDY0NjgxMjUzZDAxZDA0Y2E0ZjBkNjczMjE4MDczNjUgbGVnYWN5LXRydW5rCis2Njg2NyAwYjdlMDIzODAzZmIzNzJlMDQ1MjUxZDNiZjE4NTZjMDQ0NWFlNjA3IHB5M2sKKzY2ODY4IDJhMmNkYjI4NTY1NmRlMmYzZjY5MzNmNTk4MzYzYjI1ZWRjMThhOTUgbGVnYWN5LXRydW5rCis2Njg2OSA2NjVmYTA1NjMyZjdhYjY4M2NjNGZjNTQ3YmQ2Nzk3YWFhODczODhmIHJlbGVhc2UyNi1tYWludAorNjY4NzAgMDhkNmRkNjg0YTZiMzEwZjNkNGUxYjgzOTc5ZmNiM2E3NjZkY2Q3MSBsZWdhY3ktdHJ1bmsKKzY2ODcxIDNkZDE2NTFhZjM1ZGQ0YmNiMjU4ZWYyOGJkZDM0ZmZjMDQwNmI1ZGQgbGVnYWN5LXRydW5rCis2Njg3MiAzNDJmNzAxODllYTllNWI1OGZjOTc4NTA5ZmUzMTk1YmMyYWIzZTNiIGxlZ2FjeS10cnVuaworNjY4NzMgYzBhYzQ3OTg0YjExMDRkZGJjMGEwNzQwZmVkNDcyNzJiYzY5ZmY0NyBweTNrCis2Njg3NCA3OTZiMWJiOTU1NGNiN2VhNjI1MjU2MTEwYmQ0YzVhMWZkYzU4OWU5IGxlZ2FjeS10cnVuaworNjY4NzUgNWEwOTIxMDFmMDY5NjNlMjUwZTViZjE0Yjg4OWQ5NTY1YWU3OWFjYiBweTNrCis2Njg3NiBiZGY0ZGE1ZDA0YWQ5YmU1MzU4YzBmNGEyYWQ1NWVkYmM3YjFjNDE5IHB5M2sKKzY2ODc3IGQzZGUwODJjYTAzMTRhOWVhNGIxOWM5NGRiZWEyMzNmZWNiZGQ0ZTYgcHkzaworNjY4NzggZTY3MDJjMWEwN2Q3NTJiM2VlNTk0N2I4MWYzMDcwNjQzMzZmNjgzNSBsZWdhY3ktdHJ1bmsKKzY2ODc5IDE4NzAwNGRmNTc5Y2IwMjEwZDc3MTg4YTNmMDVmMjlmMGU1NmVlZTIgdGxlZS1hc3Qtb3B0aW1pemUKKzY2ODgwIDk5Yzc4ZDYwYmUxMjVlM2UzOGUwNDA4NTk1ODU2MTMyMjBjMjVjM2YgcHkzaworNjY4ODEgMmYwZDczODRjYzFjMGE4MzNkMWJlMWU4YWY3YTJjNjJmZGI3ZmNmYiBsZWdhY3ktdHJ1bmsKKzY2ODgyIDA4YTNlNjhmMWZjYmIxMWNiNWEwNDY4OTQxY2Q2YzJjYjBiMDZkY2QgcmVsZWFzZTI2LW1haW50Cis2Njg4MyA3MWZhN2QzY2M0YzU5ZGJlZjc2NzM0ZTk4NmIxNjg2MWU5NGJhMmZhIHB5M2sKKzY2ODg3IDlmZGY4ZDhkZTI4NzVhN2Q1NTZjOTU0MGZjYjM3YjI5OTZjM2ZhMmQgbGVnYWN5LXRydW5rCis2Njg5MSA2MmMyNGQ0YTFmOGY2MjA5YTAyY2JkZGFmMWEwMDA1N2M3MzM3OGU2IGxlZ2FjeS10cnVuaworNjY4OTIgZTFhODhlOGI5NjQ5YmZhZTdlZmJmNzkwZmFmZjk2NzZhMGFjNTYyNSByZWxlYXNlMjYtbWFpbnQKKzY2ODk0IGIwOWU3MDUzYjQ3MmMzOTVlMDVhNGFiOWI0ZWY1YzljODM5OWFhZWQgbGVnYWN5LXRydW5rCis2Njg5NSA1ZTY2NjMyODZhYmM1N2M5YjhjYTI1NTUwYjEyYzU2MGNhNTQ2OTI5IHB5M2sKKzY2ODk2IGFjODZlOTUzNTU4ZjQ0NmNkNGZmNjZiNDEyODJmMzNmYmM2Mzg5ZTYgdGxlZS1hc3Qtb3B0aW1pemUKKzY2ODk3IDBmMGMyMjgzNTgzZWViODcxMDJjMTcwMWNiNjdlMzIxMjc5ZTIxN2YgcHkzaworNjY4OTggMjMyYTIyY2ZkZWE4ZmE5OTNmYmE0NTdmODg2MWJlZDYxOTIwNWU0OSB0bGVlLWFzdC1vcHRpbWl6ZQorNjY4OTkgODRmMDE3NDIwYjliOGUxYjZhOTE0MTkwMTA5Zjc1ZGY5MTY1NTdiMCB0bGVlLWFzdC1vcHRpbWl6ZQorNjY5MDAgYmI1MTE1OWU3MWRmYzMxNTJlMDNhMmIwMDI2MmE2MTAzZTg0YTJjYSB0bGVlLWFzdC1vcHRpbWl6ZQorNjY5MDEgZDE3Y2ZlZTRmMjNkZWZiZWE1MzZlNjA1MGFmMDQ5NDM5NzBjZWU4MyBweTNrCis2NjkwMiBmZGNjOGEzMTM1Mzc0NDhmNDYwYzI0YmVjNTljYWJkOTM3Yjg5Y2Y5IGxlZ2FjeS10cnVuaworNjY5MDMgNDA5ZGFiOGIxZDM0NDk2OTkxZjU5MmFlYTA4ZjJkMDJjMjgzYmI0NSBsZWdhY3ktdHJ1bmsKKzY2OTA0IDQ4MTk0ZDdhZjMyZjAyNjgxYTc3NmYwZWNlNzY3MjdkNTdiMmU3ODcgcHkzaworNjY5MDUgMGFkZjZiZGIxNzBmOTczY2E1N2FlODA3ZmRjMzkxODY2ZDY4MThmNCBsZWdhY3ktdHJ1bmsKKzY2OTA2IDQ3MzdlNWRmNTBmNGQ3ZmU5ZWE4MmI2MzA3MGYxY2FlNzYzOWQ2MTEgbGVnYWN5LXRydW5rCis2NjkwOCAyYTEwOTZiNDgxN2EyZjZmZTJjNGQwZjAzZTdlNzFkZGY2ZDU3NDNmIHJlbGVhc2UyNi1tYWludAorNjY5MDkgNWFmYzlmZmE4MGJiNzllZjZiMmJjMTNjMGIwNDJjNjM4YTJkOGRhNiBweTNrCis2NjkxMSAwMTExMWM0MDYxNmY1OTBiOTFmMjliMjliYTAyY2FkODhlN2RkMzEzIGxlZ2FjeS10cnVuaworNjY5MTIgOTJkMDg5MDMzNWMyNDk0OGNhMzBjZTFjYjM1YWU2YmYxZWE4NWZiZiBsZWdhY3ktdHJ1bmsKKzY2OTEzIGI4ZmM3OTBhMjdhZWM4YjY4YjM4YjgwMjBhYjRmYmZiNDM3YjNiNmEgbGVnYWN5LXRydW5rCis2NjkxNCA4ZDJhNjk3MTFhOTdjZWQ1YmIwNDNhYmU0OTljMTdjOTNjMzFiODVkIHJlbGVhc2UyNS1tYWludAorNjY5MjAgZDA2MTllMjEwYWM0MmZlMDk3Y2MwMjUwYzhiY2NkMGI0ZWVhM2MzNyBweTNrCis2NjkyMiA2OTM4MjE5ZGM1YTY0NjQ4N2JmZWM4Mjk2MDlmM2IxNzU3ZWNmMGM0IGxlZ2FjeS10cnVuaworNjY5MjQgZDdhNzI4NDIwYjAzYTdiMzdlODE1YjNkOGU0NWQ3N2EzMWNjNjkwOCByZWxlYXNlMjYtbWFpbnQKKzY2OTI3IDE5OTI4ZTQ1ZDE4YjIxN2JlYWQ5NDM1YTU0NzA5ZGVmZTcxNGFjYjMgbGVnYWN5LXRydW5rCis2NjkyOCA5ZGVkZmI4ZTU2NWM0NDVkNTM0ZTE3MmMwYTk0OGZhMmM4MmI1ZGFjIGxlZ2FjeS10cnVuaworNjY5MzIgM2MzYWJkNWZjODMzOTIzNzI0NzJkM2QyZGNhMDM1YmFjZjA4Mjc1MSBsZWdhY3ktdHJ1bmsKKzY2OTM0IDAwZTQ2N2RiNjE4MjU0MzZiZDBjMDU4NTk5OTlhMGJhOTIzMTIwNDggcHkzaworNjY5MzYgYTU3ODE0N2JiNWMxMzA1NTk0ZjJlY2IwZjRjOTg1ZmQ1NDk3MzA1MCBsZWdhY3ktdHJ1bmsKKzY2OTM4IDQ2MjI1MjExZTUwM2ExOTU0YmM4MDYxYmFjMTJlZjQzMTcyNzE0NjkgbGVnYWN5LXRydW5rCis2NjkzOSAyNDFlMDMzNzFjN2U0MjYzMmUyN2VmMzIyMjFjZTU3ZDE4N2IwMmRiIGxlZ2FjeS10cnVuaworNjY5NDAgNjAyNGUwY2FiYTY0ODAyYWQ5MzJiZmNjZjFlOTU3ZmEwZjRmZTk2NSBsZWdhY3ktdHJ1bmsKKzY2OTQxIDRlMmU2ODg0ZmQyODg3NjIyYWFlYmY5NTliNjEyZjI0N2RjZDVhMjIgcmVsZWFzZTI2LW1haW50Cis2Njk0MiA4YTg5MTMyYjg1OWYxZWI0YzI1ZDJkODQ3YjVlMzJiMTIzMjE2Yzg4IGxlZ2FjeS10cnVuaworNjY5NDMgYTUzYmI4MzMwYTY0YzUxYmNjMGE0OGQ2OGEyNDZjZGU0MDYzNTNlYSBweTNrCis2Njk0NCA1MGM4ODZkYWVkZjBkODE1ZDY0OTk1ODI2NWZjMmZhYjI2OWQyM2RjIHB5M2sKKzY2OTQ1IGNhNzIyNzFjNjI0YzJkZmJlYmMwYjYwMzJmMDFiOTI0MTNjMTRjMDQgcHkzaworNjY5NDYgMmEzOTEwYThkYzM3N2FmYWRjMjFiMWVjNDFiYWM1ZjE2MjhmZTkzYyBweTNrCis2Njk0NyA0OTFlZDgwYThjYzE1MTAzMTBmYzMxMmUyNmIzMmZlODNmNzg5NDZjIHB5M2sKKzY2OTQ4IGNiYzNhZmMxZTQwYTIwOWQ4ZDQ3MDJmZmQ0ZmVkMGEyNDQ3ZDA1N2UgcHkzaworNjY5NDkgMmMzYTZjOWRmZjYyZDVjOTYwMDY3OTI3NGM5Njc4ODBhMTViYjM3ZSBweTNrCis2Njk1MCA2NDVmZTU2YzExN2FhNjNmOTFmMGMzNDkxOTc3YTA1ZDgxZDkzMDcwIHB5M2sKKzY2OTUxIDQ4MWFkM2Q5ZmZkMWI2OGRmOGRhODU3OGUyNTc5ODE5NjIzYjZmMGUgcHkzaworNjY5NTcgZjY3ZGU2MWMyY2ZhOTIzODgzZWM0MmUxNzNjZDE3Zjc3MThkY2MzZSBweTNrCis2Njk1OCBiNTU1ZDRkOTU3NWM0NThlOTdjMDVlOTViOGNjMzZhMjc2M2Y4NTg3IGxlZ2FjeS10cnVuaworNjY5NTkgNjZjNTQ1Zjc5NjI2OTMyYzFhYmEzYmJmY2UyYmEzZjgxMTExMzYwNiByZWxlYXNlMjYtbWFpbnQKKzY2OTYwIGRmY2U2MmFiMDdiYTBhMWY2Y2U0NzI5ZDA2MjA3Y2FhZDBlZDM0NGQgcHkzaworNjY5NjEgODNkMDk0NWVlYTQyMjg0MDkyNjc3NWI4NWVkZGYzM2U2MTRlNzYyOCBweTNrCis2Njk2MiAwMTIxZGYzY2Y1YTAxMmMyYjgwNjBkZWVhYzdmODMzNGZjZTE1ZWVhIGxlZ2FjeS10cnVuaworNjY5NjMgYmMxZjQzMjUyYzkyMjBmOTJhNjAyZWU1ZDcxMzY1MDk0MDFmYzIzNiBweTNrCis2Njk2NCA5NmU3ODU0ZDdjNmUxYTEyYjJhZWM1ZWI0OGQzYzZjZTM3MGM3NDkwIGxlZ2FjeS10cnVuaworNjY5NzAgNjg0YmY3OTkwMDk0YmNmZjFkMzg1NGQyM2Q1ZmU0MDhkYWNjYzg5NiBweTNrCis2Njk3MSBlODg0MWMzNDY2NTE5NDcwZDQ1MGEzZjQ4YWNkMDBkZWQzNjQ0YWI2IHB5M2sKKzY2OTcyIDU3ZTJiNWM0NTc5NWE4MDUwZTc0NTAzMzUzMDQwN2MxZDM5YTQwOTMgcmVsZWFzZTI1LW1haW50Cis2Njk3MyBkYmQ1NGJhYzBiNmY3Y2ViNWE5YTFlMTRkMzlmZGYzMmE3MTVmYWFiIGxlZ2FjeS10cnVuaworNjY5NzQgMmUzOGNhNzA5YjFkMjk2YzdmZmE4MjFmYjAyZWJlNzMyMjZhNjljYyBsZWdhY3ktdHJ1bmsKKzY2OTc1IDNmZjdiYjgzMDUxOWMyN2RlMTVmMGQ3YWExODUxODAxMmY5ZWNmYWIgcHkzaworNjY5NzYgMjZiYzBjZDAxMDhiNDViNmRlZjA5NGM5MTM2OTNkNWRmOTQ2NDUyZCBweTNrCis2Njk3NyA2Y2RlMmEwNTFiMjc5ZDIxMGM1NjYwYmJlMGNkMjZhODNiODhiZTc2IGxlZ2FjeS10cnVuaworNjY5NzggODliYTAxYjYxNGVlZDMxODA2OTgwYmQyMjkwMWJlN2E0MDdmMjZiMiBweTNrCis2Njk4MyA4N2VmODk2MDgyM2ExODQ4MTZjZWY2NWU1MTUyNTUyYmE1NjM1OTYyIHB5M2sKKzY2OTg0IDg0OTZmNTQwM2E4MjI1MTA3MDY2YjE3ZDI1OTc2YzE3ODY2NzkzMTYgbGVnYWN5LXRydW5rCis2Njk4NiA0MTUxMzdkMGUyMGE1MjdmZTMxYmNmYjRjY2MyM2JmYjdjMjEzZGVkIHJlbGVhc2UyNi1tYWludAorNjY5ODkgYzIwOGY1YzFlNGZlN2I3MzJiMjQ1NmUwMjllYjgzN2U3YWIzMmU2YyBsZWdhY3ktdHJ1bmsKKzY2OTkwIGMxZGNmZjc1OTc2ZTA1NDZiZjc2NGQ4MTE5MzMwNWRhNTk0YmMxZTAgcmVsZWFzZTI2LW1haW50Cis2Njk5MSAxZWIxNzEyMmI0Y2NiN2RmYzViMTZkYzFmMmM2NDhmMGIzOWVjMmIxIHJlbGVhc2UyNi1tYWludAorNjY5OTIgODBkMmQ0NjdmMjM4ODZkN2Q0Zjc1ZmVlODQwZTM3OTc4OTA4NDY4ZCBsZWdhY3ktdHJ1bmsKKzY2OTkzIGRkZDBmOGNjZTU1Y2QyMDgyYTU1YjliNjJiYWM3OGYwMzg3ODcxNjAgcHkzaworNjY5OTQgMGFmYTczZDRiZjk5NDc4MTMzOTFkMTUzN2EyMzc2YzY0MmFkZDk3YyBsZWdhY3ktdHJ1bmsKKzY2OTk1IDEyNDk4NDBhNDJiMmRhZWEyYTVkNzY5MDU3ZDc2ZTFiNzRiZjI5YjUgbGVnYWN5LXRydW5rCis2Njk5NiAxOTY4NzgzMDMzOGZiYjBkYTY5N2UxNjdkNjE1NzU3MGY5Zjk0Y2EwIGxlZ2FjeS10cnVuaworNjY5OTcgZGY3NDIyNDYwNjYwNjg5MWI2MTJiMTZjMTliMGQxNzNkODVmNjgxYiByZWxlYXNlMjYtbWFpbnQKKzY2OTk4IDU0NzlhODc3YmEyODI2YTBkMDBiOTVjMDFhOWZiOWUwZGMyZGIwY2UgbGVnYWN5LXRydW5rCis2Njk5OSBkODQ3YzRmYjdiMzk5M2I2YmM0OTZiNjY5ZWI0M2FhM2UwM2NhMzU2IGxlZ2FjeS10cnVuaworNjcwMDAgNzEyODRlOTE1NzA2M2JhN2U5NDFjOWRjMDc3YjNmMDhhOGVjMDE2MyBsZWdhY3ktdHJ1bmsKKzY3MDAxIGM2YzMyODQyZTcxZGM0Nzk0MjViNDgzNjdlMzQ1YjQyN2ZlYjUxZjAgcmVsZWFzZTI2LW1haW50Cis2NzAwMiA3MTRkM2MxNDQzYTc0NmQ4ZmFlMzE4NDFiZTJkYzY3OTQ4YTA4MDBlIGxlZ2FjeS10cnVuaworNjcwMDMgYmJhYjExY2RiMTc1NjEwMDY5ZDFmMzEwOThkZTIyYzNjOTcwODkwNSBweTNrCis2NzAwNCAwNTcxNWYwY2Q3ZTc3OTQzNGMzN2U0MmZkOTI2NDM4ZDQ4NTI3ZDhmIHB5M2sKKzY3MDA1IDg5YWU5ZDdkMThkN2JjZGVmNjJhOWYxODhjZmFhZDEyNjAzM2U3NzMgbGVnYWN5LXRydW5rCis2NzAwNiAyYTg1ZTVjOWUxZTJhNzdmNzhiNzNlN2NmY2ZiNGJmNzRmNjVkMGIxIHB5M2sKKzY3MDA3IDYzZjNmMDQ1ZmU0OGEwYzY0YTEyODI5YWVjN2I0ZTE3YzJmN2U3NzggbGVnYWN5LXRydW5rCis2NzAwOCAwYmMyY2QyZDk1OTgyYjMyNTlhYjE3MDRlOGIzNDBlMzJkZTlmNjBhIHB5M2sKKzY3MDA5IDhiNjVkMTNjMTc3YzZiZGE4YzA0Y2U0NmEyNGVkYjM4OTNjMTZkNDQgcmVsZWFzZTI2LW1haW50Cis2NzAxMCAzMWE2OWVkMDlmYmI0MGUxNGYxMmE1M2YxMThkOWQxZDA5NWU1YjQ2IHB5M2sKKzY3MDExIDg0MjBhZjZjMzNlZGQ5MzNkYWE5OWNhZmY5YjhhZGM1YzA0YWI5ODIgcHkzaworNjcwMTIgMmEzODc3MWNlY2RkNWFkMzc0MjE1ZDY4NmUwYjFkNDdhYzY0OGVhNiBweTNrCis2NzAxMyA2NjM0NTMwYTA0ZTAzNDUyMWEyZmQwMDEwNjU5YjY5NTc4M2FiN2RkIGxlZ2FjeS10cnVuaworNjcwMTQgMWE0ODdhYjBkNjViNzQyOWY1ZjE3MDExNzk5MWRjMjA1OTNhOWIzMCBweTNrCis2NzAxNSBiYmUzNzMyMjEyZDY0ZTZmM2IwMDA2NWM0MTFjMDRjMjI3MzNiN2QyIGxlZ2FjeS10cnVuaworNjcwMTggZjY2Njg4ZTY5ZjY2YmY1ZWIyNWRjMzZhM2E3MzMyY2EzOThlNTVhYyBweTNrCis2NzAyNiA0YTc0NTkwZjM4ZGE1YjIwZDRkNTdiYjAxMTliM2MyODYzZWMwNWYxIHB5M2sKKzY3MDI3IGRmMmJiZGU5Njg4MDJkOWNiYWI2M2YxMzdhZThhNWFkYzQ3YzMzYWMgcHkzaworNjcwMjggMTk1Y2Q3ZWJmNjJjZGJjMTU1NmY5ZWE4ZjU3ZTBjZDE2NmE5MGY5MiBsZWdhY3ktdHJ1bmsKKzY3MDI5IDg2MDczN2M5NmU5NzgyYTIxZGM0MGRjOTM1MDE0ZDdmNWEwYWIzOTQgcHkzaworNjcwMzAgYTU3NjhiZDYyOTM4YjlkZjljODVhMmEwYjBmMjNjYjQ2N2YxZTRhNyBsZWdhY3ktdHJ1bmsKKzY3MDMxIDBhMTg4YTJkNTA0ODgyYWEyOWJkZTA0OWMzNGIyNTc4YTQ3ZWEzNDQgbGVnYWN5LXRydW5rCis2NzAzMiAzMGMwYjI2NmFmMDYyYzE3YzY4MTA2NzI3MjY1YmMzNWZmZTZkOTFiIHB5M2sKKzY3MDMzIGU4MGQ5ZTZlMjZiYmQxZjYxNzFhN2UxN2VmZWE2N2YzNTc3NmQ5N2EgcmVsZWFzZTI2LW1haW50Cis2NzA0MCA0MGZkNmVmMGVhYThmMzNiY2VjZTMyMDMyZDIwOTBjY2M2MjYzNTliIGxlZ2FjeS10cnVuaworNjcwNDEgOGJkZThmNTFhZGUxNGRlNDljYWNhMzJiOTA4ZWM5ZDI2ZGQ2MjgzNiBsZWdhY3ktdHJ1bmsKKzY3MDQyIDQwZDhmYjEyOTMwNmFkNGYzOGM4MWIzYmE3MTQzOTNjYjM1OWVmM2EgcHkzaworNjcwNDMgNGI3MjY1MDBhOTY5OWNmZDE5NTM5MzZkMWYzZjFiMjI1MDgzYmU5NSBweTNrCis2NzA0NCA4MDRlNjM2NTgxN2M0YjEyY2MxYWY0YmY3N2RhYTA2ZTk4ZTMwMDZlIGxlZ2FjeS10cnVuaworNjcwNDUgMmFhNjliOWQxMjczOGRmMjBmMDhiYzQwZGRkMDY5ZmUxMGM4MDMyNSBweTNrCis2NzA0NiAwMjFiYzlmODgxMDM0OWRjOGJmZTY2YTg0MmY4ZjIzMjkwM2NlNjUxIGxlZ2FjeS10cnVuaworNjcwNDcgMzQ4NWQ5NTk1N2MxZDJjNTgxZTAxZjEzYjJkNDliYmU2NTJhMmY0YSByZWxlYXNlMjYtbWFpbnQKKzY3MDQ4IDcxMTM5MGQ0YWMyMTM5MGIwYzZkMWRlMjk4MzcyZWYwMzQzNDlkMjYgcHkzaworNjcwNDkgMjRmNjVlMzA5MGU4MGEyMmFmZGU2YTg5MTc0OTE5ODQxZTM1YjkxMiBsZWdhY3ktdHJ1bmsKKzY3MDUwIGJiMTA5YzRiZWQyNzZhMzNlYWFjYzZjMDk0MDE2Y2FlZjFmZTlhYzIgcHkzaworNjcwNTEgYzBhZmM0ZWViYTdkNmE4NDMzNTc1NzljNTJiNzU5NDEyMjVjOGU5YiBweTNrCis2NzA1MiA2YTIwZThjMTc0NWE5ODg4ZmY4YTgwMDcyMGIxZWUxZDk3OGFmMDFkIGxlZ2FjeS10cnVuaworNjcwNTMgYjNkZjU4Zjc2ZTQ5ZDg3ZTBjZjNkOTczNDdjOGQyNzY3MmE5OGRiNiByZWxlYXNlMjYtbWFpbnQKKzY3MDU0IGQyZWM2ZDViMmRiOTcwMWJhMDYyOTUzMjVlODY1OTM5YTY5ZDA3MGIgcHkzaworNjcwNTUgOWZjNTczZmJhZjVlMzRiZGFjZGYyNGU0MzA5YWY4YWEyZmM3NWZjYSBweTNrCis2NzA1NiBlOGMwYTVhNjQ2Y2E2Y2NkYTAzMWViZmFkMDkxNTEzYTI4YmVlOWUxIHJlbGVhc2UyNS1tYWludAorNjcwNTcgZWZlZjVmYzQ1YTlhNDc3MjUwYmVmY2Q3ZGVmZWI0ZWUwNTJiZjhmNiBweTNrCis2NzA1OCBjMzIzMTAyNzM3YmMyM2NiOGZmZTQ5MWZhOWFlM2E3OTY3ZWVhMjRlIHJlbGVhc2UyNi1tYWludAorNjcwNTkgYTVjYTg5NTFiZWYxNzI5YjdmNWQ0ZGI3NjMyMmZmYWE5ZTQwMGFhMiBweTNrCis2NzA2MCBiMGNjY2I1NTk0MWM0MTcwZTE5NWMyZDA4ZjY1MjQwYTNjYmQ1ZmFhIGxlZ2FjeS10cnVuaworNjcwNjEgODA0NWQ1NTk2YjFjOGI5MzM0MDU3MDc0ZTE5YzgyNDY5MGZjNzM1NSBsZWdhY3ktdHJ1bmsKKzY3MDYyIDljOTdiYzg2MTIyYTBmN2M3ODMyMjU4NGFhN2E2YmU4ZTUxOGRjNWIgcHkzaworNjcwNjMgMDZjZjJjZWEzODdiN2U0NTAzZmFiYzk2ZDVkZjhkNTE2MGI4NDYwMSByZWxlYXNlMjYtbWFpbnQKKzY3MDY0IDNlMmRlNDg0Y2UzNDIxN2M2ZGE0N2ViYWMxNDhjYjEwZGFkMmUwMDMgcHkzaworNjcwNjUgOTY0MThmODEyZjA2ODAwZTA3Nzk2Yzc5MzM2ZTZiMmEzOTVkNDQxOSBsZWdhY3ktdHJ1bmsKKzY3MDY2IDdlNDAyNjNkYmZkMzQ1NDk5Mjg1ZmJjOTJmODI0ZjJmNjRiNmYxYzAgbGVnYWN5LXRydW5rCis2NzA2NyA2Y2FjMmUzMDc3YTM0ZDcyYTNlMTgxOWZiNGJiYWI1MDQyY2Y2OGYxIHJlbGVhc2UyNi1tYWludAorNjcwNjggZjMyMzRlNDNlMWZlODBhMjk0YTg1MTU4ODFiYTY5ODAxOGNmNDI5MyBweTNrCis2NzA2OSA5OTA2ZjY5NmI5NDE5NWFmYWYwNTY4ZDFhOGRmOWI5NTYwMjlmNTQ1IHB5M2sKKzY3MDcwIDBkZmRiNTJhYmRmOWY5NTg3YjEwN2ZhMjM4ZmE5ODhhNzI2MjlkZGIgbGVnYWN5LXRydW5rCis2NzA3NiA1NzhhYTQzZGM0MDA0MzA3NTAxOGU3N2Y5MmI2YzMyMWJjZmIzMTNlIHRsZWUtYXN0LW9wdGltaXplCis2NzA3NyA5MWFiNDM1NDQ0MGVmYzgxNDRjNTI0YTMyY2Q2YzIzMzBkNGQwYzM1IGxlZ2FjeS10cnVuaworNjcwNzggMmVkM2Y4OTI2YmI4OTFjOTlhODRkMWMxMGM5MDc0YjBiMTFkMTVkMyByZWxlYXNlMjYtbWFpbnQKKzY3MDc5IDQ1YWM1MTk2ZmE2NzlkZmFlMTk5NGUwODdkMTY5ZjE1NzM1YTI1YTggcmVsZWFzZTI1LW1haW50Cis2NzA4MiAxMTg0YWJjNWY5NmM5NmQ2MTJmM2U5NmQxMDQxYWNmMjUwNTZkOTc4IGxlZ2FjeS10cnVuaworNjcwODMgMDBlNzFjZDg5MTI4NGE1N2NlZjBhOTY1ODU3ZDJlNjM5NDc5NWRkYyByZWxlYXNlMjYtbWFpbnQKKzY3MDg0IDQ1MDQ2ZjA3MjI3YWQzYWYyNzFkNTE3YWYyOGFiZTViMTk2NjhjNDggcmVsZWFzZTI1LW1haW50Cis2NzA4OCBiZDBlOWE5Y2QyODNhNTU0MGFlY2Y5ZjFhMGI4NzViODYxMTllNTZkIHB5M2sKKzY3MDg5IDBkZWM1NGFhNTNlZTc1ZTM3YWY2YTE4MmI1OWJlMDIxMmE5ZjZkYTYgbGVnYWN5LXRydW5rCis2NzA5MCBmODQ5YzU5YmJmZDc2NGYwMjUzZjQ5NTljZDEzNmEwODk0ZDFlZDEyIHB5M2sKKzY3MDkxIDBjOGZhZjZjOGViMjk2MGQ0YWI3MzgwMWJiMWE4MzJkNjc4ZGMzYmYgbGVnYWN5LXRydW5rCis2NzA5MiA1ZjgwMWFkZDIwZmJiYzMyYzY5OWU0NWY5ZWY0YTExYjY4YzEzNDRiIHB5M2sKKzY3MDkzIGYyYmIxMzNlZjUxN2Q0NTBkMDJmYTZjZmZiYmY1ZWVhYTNmZWVkYzEgcHkzaworNjcwOTUgZjY3YjJjOGZhOTNhZDIzMjJkZDI2OWU3YzFhOWQ0NmE2MzNmZTdmOCBweTNrCis2NzA5OCBlNjhlNDJiMTdlNWUzNDE0NDkwM2U5M2E0YzU5MDVhNDZiZGQwNWViIGxlZ2FjeS10cnVuaworNjcwOTkgYTUyOWUzZGM2OTVhOGI2ZWRkZTQ4YmMxZGY4OGZhMDIxMjkzNDNiOCByZWxlYXNlMjYtbWFpbnQKKzY3MTAwIGMwODllYjY0ZWU1NzZlNTdiZGFmMzJlYzMwZThiNmUzMDIwZDkwNDUgcHkzaworNjcxMDEgOTcyYjQwNTQ2ZDc5NTU0ZjNhODk3MWYwZjE2ZWYyOTM4MDA3ZmMyNiBsZWdhY3ktdHJ1bmsKKzY3MTAyIDUwZTc4MjJjOTU4NWZlZjU2ZWQ2NjYxMWZhYzRiODU0MmFkZTNlOTMgcmVsZWFzZTI2LW1haW50Cis2NzEwNiAyM2Q5Y2I3NzdkOWE4MTZhMjU2MmRlOGI3N2ZhZWM0NWMzZDQ4MTA1IHB5M2sKKzY3MTA3IDk4ZjMxNzU2NDYyMDNlZjRlYTM5MGQ0MzQ1NGJiZGU3ZWFiZjM2ZmMgcHkzaworNjcxMDggNDAwZmJjODA1MmFkZWNjMTc2OTI2ODVkYjM1MzM4YjNjYjkxNTE5YSBweTNrCis2NzEwOSAxYmMzZDFiMzlhNGI3OTVlMjY2NTNmN2M2NjllZDAyYWM2MTgzYjJmIHB5M2sKKzY3MTEwIGUyYTQ3MmYzYjc3ZjZjMTBlYTQ1NTE3ZjM5MThjOGVjMTkxOTA4ZmQgcHkzaworNjcxMTEgNWI0Y2I4Y2Q1MDUxZjdhMDEzOTc5YjQ2NDdhYjFhOGI0OGMwMmY1ZCBweTNrCis2NzExMiBhYTZlNjQ5NTk5YWQwOTBkZjkxMmRhNjcxNGQ2ODhkYzMyYmNjNzQ3IHB5M2sKKzY3MTEzIDNhOTQ3NjhhMmE4YmU1ZDA5MjgwNmRjNjhhNWFiMWFlY2IxNzJhMGQgcHkzaworNjcxMTQgZDcxOTZmYjk0ZjI1ZmM4ZGE1Yzk5MzQ4MGQ1ZTA1NTE0MTQ3M2JlNCBweTNrCis2NzExNSA2ZTBhMzYxMDc4ZTUyMTY4YWE1ZWM5MmE3N2MzODliNjRiMjFjYTkzIHB5M2sKKzY3MTE3IDFjMjNlNzAwMTUwNjc0MDQ0YTA2ZWM3MDdjMmFkMWYyOTFjZjYyNjQgbGVnYWN5LXRydW5rCis2NzExOCA3OWM5YWI2NDk4ZmRmYjlkZmZhMzMyNDY0ZmU0ODc1YTc0MTRkZmFiIGxlZ2FjeS10cnVuaworNjcxMTkgOWEzZTkyNDNjNTE4OWJlNjQ1NjAyOTNmYjMwMjc2M2U1NTVjZjE3ZSBsZWdhY3ktdHJ1bmsKKzY3MTIwIDI2ZjAxZWVhZjU0ZTgwZTljZGJiZWMwYjg5YzhmM2VhYjhhYTg3M2YgbGVnYWN5LXRydW5rCis2NzEyMSBmM2Y2NTBjN2QzYWFjNjNjYmJmNjZiZjA1ZjU2YWRlZTdkNzIyODNlIHJlbGVhc2UyNi1tYWludAorNjcxMjIgZjc4NjdiNzdkYzU1NzgxODFkMTk2YjJmZjRkYTNmYjVmMDJlNjVkNyBweTNrCis2NzEyMyA4MzcwZTllZjdmMGZkYzk2N2Q5OWE2YjkyYjZiN2EyZTM3MWUwZjZlIGxlZ2FjeS10cnVuaworNjcxMjQgN2U2M2ZlYjMwZWE1ZGRjNjkwNTk5MzAxOWJlZDA5NWJkMzMzZjA2ZSBsZWdhY3ktdHJ1bmsKKzY3MTI1IDIxMGM1ODVmOTViZWU2ZjQ1OWQxMTM0NjRjZmJiMmM4NzY0ODlmNWQgbGVnYWN5LXRydW5rCis2NzEyNiAxMDQ1MzdhNTQxOTY1MGQzNzk4ZjVhZmQ5MDc3ZThhZTg4M2IzYzI5IHJlbGVhc2UyNi1tYWludAorNjcxMjcgMzI1NjE4NzkyNWQxZTkxZWYxZTMxOGIxOWQyYjNlZGVmOWZlZDc4ZSBweTNrCis2NzEzMiAxNGQ0NDEyZDJiZjg0ODEzMGViOWQ2YjUxYWUwMmFhOGQ5MGUwY2VhIHB5M2sKKzY3MTMzIDgyODA5NDg1OTJiYjJjZGRkOGEwNTQ1NTg5Njk2ZDkwY2ZjMDk0NDMgcHkzaworNjcxMzQgOTc0Y2FmMTY3ZmYwNDUyOTYyYzBiNTMyYTYwYmNkZGE4NTU3NzdmNiBweTNrCis2NzEzNiA1MzRiZTgwNjZjMzZhNmFmYzI2MWI1YmZjN2M3NjIwMGQ1NGRhMWI4IHB5M2sKKzY3MTM3IDhmYWU0NjVhMzk2MjdiNTkwMzg1NDYyZTYwOTVlYjYzYWY0NTI0MGEgcHkzaworNjcxMzggYWM0MmRjOWEwMjAzZWZiMzdlNjVmNzc3MzdmZDE5NDRhOTE4MDMwOSBweTNrCis2NzEzOSA5MmJhMTJmOTMyODIzODRhMjM4YzBmYjA1NjllN2NmNDkxZjAzMmRlIHB5M2sKKzY3MTQxIGQyZjczMjNmYjcwOTY1YmU2MjJhZmQ0Y2M3YTU0MjE4NTA1NzljNGMgcHkzaworNjcxNDMgYzk4M2ZhNjhkNmZmMjU1Y2ZjN2IyYTU5MDUxODljM2E1NTczYzNlNSBsZWdhY3ktdHJ1bmsKKzY3MTQ0IDYyMzhiNmNmNzdmMTA1N2NlYWM1MWE0ZDY2MTdmNTliNDE4MGRmYmQgcmVsZWFzZTI2LW1haW50Cis2NzE0NSBlYTg3ZTg4MTQzNTliMzhlNzcxOGJiMDA4YzUwOTljZTFhODhjZDdjIHJlbGVhc2UyNi1tYWludAorNjcxNDYgODJjY2M3ZTc3ZWM1NTczZDU2OGQyZjUxNTZkNWZkNWM5MGQzZmYxMCByZWxlYXNlMjYtbWFpbnQKKzY3MTQ3IDQ3OWRhZDlkYzk2YzFlOGRjZjYwNDZkY2M1Y2JlOWUxNzgyOGY2NGIgcmVsZWFzZTI2LW1haW50Cis2NzE0OCAxZjdmNDFmMjBhYzU5NjY2ZDg3N2RmZGM5MjZiYzJkMTUxMzBiMTBlIHB5M2sKKzY3MTQ5IDlkYTUyOWEzZmQ1YWU3NDJkMjhhZWU1ZWYzZjgxNzE4Mjg3OTljYjMgbGVnYWN5LXRydW5rCis2NzE1MCBmYWNjYjk4ZDk0NzRlM2MzNTA0MDgzZjM0N2M5MWEwNzJjYjgyZDY3IHJlbGVhc2UyNi1tYWludAorNjcxNTEgYWNiNzhlY2U1NmE5ZTEwMmZjOWU2NzYyNWIyZTc0ZDljYWM1NTFjZSBweTNrCis2NzE1NCAzMTczNzE3YTg5ZjMxN2NhNzEzODgyOTExMTIzODI4MjhkMDIyNmUwIGxlZ2FjeS10cnVuaworNjcxNTcgNTcxOTM4MDU0NzIxZGIzZmZmM2U5YjA5M2E5ZTUzYjFhOTcwZDRhYSBsZWdhY3ktdHJ1bmsKKzY3MTU4IDAwOGFjYjBjYmJmYzI5ZWU4Yzk0ZTJkMDBlYzVlYzJkMDA4OWIyOGUgbGVnYWN5LXRydW5rCis2NzE1OSA1ODIzNWI5ZGMzYWUyNGM4OTdkYjFmN2RmOTc5YTQ4NTU2ZTAzMmVlIGxlZ2FjeS10cnVuaworNjcxNjAgNmYwNjU3MWE4YWVmYWZlOTY3MDkyNTdiN2YxNzlhNDFiZjhiZmY2OSBweTNrCis2NzE2MSBkMGFhMTBmZjI4YzY1NzAwNjU3MGIzNWM4Mjk1ZDVhNTQwZWE1OGZiIHB5M2sKKzY3MTYyIDIwYTQwODk0NTM5YTQ4YTFhN2ExZmU2YWI0MmM1ZWRiNWYwNzRkZWMgbGVnYWN5LXRydW5rCis2NzE2MyBkMzRjY2IwMzQxZWE1M2FhODZiYzM3MGRhZDE2NDRkMGYxMDk2MGVkIGxlZ2FjeS10cnVuaworNjcxNjQgZWY4ODBlMmNjNTY4Y2NjZjk4YjhjOTQ1MzJlMDM2YzU3ZTJjYjc2YyBweTNrCis2NzE2NSA3MWY1M2QzZDE1NTEyMWNmMDNhOGViNzcwODkwYzNmMjFjMDU5MjI0IHB5M2sKKzY3MTY2IGJjNGY3NDJlMmMxZDUzODQ0NTFjYzVkY2VkNWIyOTUyZmNlMjUxMWQgbGVnYWN5LXRydW5rCis2NzE2NyBmMDdiODJhMzIxZmUxOTA1NTM3OTg0N2Q1NTdlN2I4ZTVkYTk5OTMwIHB5M2sKKzY3MTY4IDc2ODMyYzA5ZDJmZGMxYjA2OWViZjBmNjFhMjZjNzVhNDVmZDIzNmUgcHkzaworNjcxNzEgMmUwODU3YjBmYzY3NTc4NDRhOWUwZGRiNTY3YmE0NWNkZjcwOWUyNiBsZWdhY3ktdHJ1bmsKKzY3MTcyIGNkZGQ5MTgwYjhjODgwNjIyNzA2YWQ3YjQ4ODlhYmVhZDU1ZDg1OTEgcHkzaworNjcxNzQgMjExMTUxZmRjOTI0NDQyY2NjM2NhY2U1ZWMwZmNhOGJkNDFhMzBlNyBweTNrCis2NzE3NSAyYmIxMmNhMmZmNDRlMTFiOGMzZGNiYTg0MjQ2NTdhZjllYjM5NjdjIGxlZ2FjeS10cnVuaworNjcxNzYgYzJhNzViYTQ2ZjE0ZDlmYzI2ZDRhZWM3ZTZjOTRlNTU3YmQ2YzA0OCBsZWdhY3ktdHJ1bmsKKzY3MTgwIGFlODNkNGFhM2UwZWQ5NzQzY2MwM2ZiM2FjOGE5NjQ1YmE4NjA2YjggbGVnYWN5LXRydW5rCis2NzE4MSAyYjMzNDBiNWNhMzg2YjUyNDY3YTViZWViM2ZhZjU3OTAwY2I5MDlmIHJlbGVhc2UyNi1tYWludAorNjcxODIgYjI0ODFhMTUzNzYzNDhmZjgxYmNmMWNkMDA1MTdmMzlmNDdiZTlkZCBweTNrCis2NzE4NCBhY2Y2OWUwNzliODQ2YjVjM2Q4NGU0MGU3OWE5NGVjMWJhOGZhZTM5IHRsZWUtYXN0LW9wdGltaXplCis2NzE4NSA1NGNiNTAxZjYyMTVhYmRjY2Y5ZTQxMTU1MmEwYWZlMzM2NGJhMjczIHB5M2sKKzY3MTg3IDIxOGE5ODk4MTE4M2QyYTNjN2YzZDE1ODc5ZTBmYTExYzA5Mjg0ODggcHkzaworNjcxODggNjNlYTIyYjU4ZDU0MjU5MjE5NjZkZjA1OWNmMjJiM2VmZjhjMTllNCBweTNrCis2NzE4OSA3NDQwYTMwYTJmMTM0MDNhNDI3ZTEyMGNjNmYxZjc4ODBiYWUyZDVkIGxlZ2FjeS10cnVuaworNjcxOTAgZmI3MjUzNjZmOWFjOGJlZDRlMzJkNjZkN2ViOTIzYTU1NWM2ODI4YSBweTNrCis2NzE5MiBiMDcxM2ZiYzUwNjFiYWEyNTJhNDQwYjI4ODY1NzRlOTJjZTA5ODdjIHB5M2sKKzY3MTkzIDgxMTkwY2IxY2FlMjkzMDZhMjI4MmQyZTE2YWM0NTBkNjVhZDYyZTQgcHkzaworNjcxOTQgZjJiNDNkMjgyNTFkY2RjMDIwYjhmZWY2MzgzZWQyY2E5YzZkODY2YyBweTNrCis2NzE5NSAwM2U3NGRkOWNjODNmNTkwZjg1ZDkwMjVhMjk2OTM2NmQ2YzU3NzM3IHJlbGVhc2UyNC1tYWludAorNjcxOTYgOGQ2ZTI0OTk3MjZhNTI4MTNhMTMwMTlhMDZiMjc4OTg5NzFhNTBjOSByZWxlYXNlMjQtbWFpbnQKKzY3MTk3IDYxYTMzMDUwNDQzZDIwZjBkMjRhZjkyMjc5MTI4MDU2ZjllOWE4YjYgcmVsZWFzZTI0LW1haW50Cis2NzE5OCA5NzgxZWVmMzE5MmM2YWIyY2NiMjVjZjhiZjExODU2ZTA5ZTBmZTIzIHJlbGVhc2UyNC1tYWludAorNjcxOTkgMjAwYzhhYWIxOTE3NmZiZjcxODYwZDQ3MDI2YmRiZGE2NGE3ODYxMiByZWxlYXNlMjQtbWFpbnQKKzY3MjAwIGNlNzIyNGNmODdiYTIwZjQ4YzBmZTBjOGY5ODczMWE5NWVjOTY1ZmMgcmVsZWFzZTI0LW1haW50Cis2NzIwMSAyMzI4NWZmMTBjMDRkNzkxYjRlNzAxYTRkYTcyMTE1OGQyZDBkNGQ0IHB5M2sKKzY3MjAyIDlhMTNlOTY2ODg5Y2I0NGM4N2Y2ZjgxNDhmNmQxZTIxNzAwYTE5NjEgcHkzaworNjcyMDMgY2QwOGIwMGFjZDZhMWNhNTM5YjAyNzAwYzE0NTY3NTg4OWI5MGM4NiBweTNrCis2NzIwNCA5ODYyOGRjNzMwZGFlNzcwZjQxODEwNGY4N2I0YjMxYzlhNDBkNzBmIHB5M2sKKzY3MjE2IDQ5NGJiOTY3MTM5MTc5MDVlY2NlZDRkNDM5NmJkOWJiMTM0NDZmYzcgcmVsZWFzZTI1LW1haW50Cis2NzIxNyAwNTlmMTE2YTI4MTk0Zjg4MzZiZDE5ZDljYjc3Y2MyMjRlNmJkMmE3IHJlbGVhc2UyNS1tYWludAorNjcyMjQgYzI3NzJjYmZlMTgxZTFmM2E5YjYyYWJiZTRhN2MzMjcyNDQ3NDZiNSBsZWdhY3ktdHJ1bmsKKzY3MjI1IDE2NjAwY2FjZTMxNWRjMmMxZDcyZjM0MGI4NzQ5MWIxMGUwNjM0ZjQgbGVnYWN5LXRydW5rCis2NzIyNiAwYWQwNzA3ODQzM2EzODc5YzUwMDYzMDZhMjVlZDc2NTk2YWJiZmM3IGxlZ2FjeS10cnVuaworNjcyMjcgNGM0NjMyM2FmYWI2Zjk5Y2JlOWYzOTI4NmQ4Yzk1YTkzNjU3MDdiZCBsZWdhY3ktdHJ1bmsKKzY3MjI4IGRiZTRiMTZmODA0YmE3YmQxMTE1M2E5MWE0YjU2ZWIwNzE1NTE1OWMgcmVsZWFzZTI1LW1haW50Cis2NzIyOSA0MjBhNWU4M2UwMmU3YjRjMTc1ZWE3NjY4ZDYyM2Q0OWZhY2U5ZTQzIHJlbGVhc2UyNi1tYWludAorNjcyMzIgYzcwN2RhMzQzNTU3OGNkYmE1MDI2YjUzMDFjZDM1Y2E0YTNlODhiOCBweTNrCis2NzIzNCBlNzRkZDU0MThhMzNmYjAwMGI5MzM4YTlhMzVjNGRkNmUwMDJkYjM0IGxlZ2FjeS10cnVuaworNjcyMzUgYjQyOGU4ZjZiMTQzNDYyM2Y2ZTFkZmZlODQzNDQ0YWQ0MDIyNTBlMSByZWxlYXNlMjYtbWFpbnQKKzY3MjM2IDdkZTFiMmFkMzgwNDg1ZDBlOTcyOThjNmNiNDljMjJjYTgyYTQ3OGQgcmVsZWFzZTI1LW1haW50Cis2NzIzNyBiMGZjYjE3ZjdlZmE4MTUyNmQ2ODcwMGQ0YTc0ZGNhYTg5ZWQ5NDFkIHB5M2sKKzY3MjQxIDFlNDRlYTUxNmUwZTcwYzVjYTUyZDNjM2I1MThjNTAyOGZiNmY4M2UgcHkzaworNjcyNDIgNjIwYTM0ZGMxMGY5MDY2MzdjZWM1MDZjZmNhOTBiODVkNWZmMTVjYSBweTNrCis2NzI0MyA3NTU5YTMyY2MzMGVmOTYwNTRlMGFjZGQ4OTgyMmIwNjlkNzk1Mjc3IGxlZ2FjeS10cnVuaworNjcyNDQgNjc0ZWY0YTdjZDczMDE3NWY1ODNiN2MzNzA0ODZjMTFlMGVmZWQyZCBweTNrCis2NzI0NSA0YjMyMTk5YThhZmVjNTc4NWRkNmM5ZWI3Yjk2MGQyYzM4MGRlN2UzIGxlZ2FjeS10cnVuaworNjcyNDYgMDgxMzVhMWYzZjVkODg1MGRjNTVkODNlMzZmNzk3OWRjY2IyZGE2NiBsZWdhY3ktdHJ1bmsKKzY3MjQ3IDczYjlmZTFjNTM5NzNkM2VmZjM3YTY4OGRiOTIxYTQwNDU0NjBkOTggcmVsZWFzZTI2LW1haW50Cis2NzI0OCAzNTZjM2UxOGRhNWU4NDhhOWY5OTIyYjY3MDdkNzNkZjdkNjNkZDRiIHB5M2sKKzY3MjQ5IGE1ZTQxYTc5NDk1NDQzNzlhZmU3YjEzMmU1MTljOWIxOGNlOWM2MTcgcHkzaworNjcyNTAgZmM0NmFiZjE3MGZkZDhkNzVjZDljNmI5OTYzNDFiMWJkNWYzYjBkZSByZWxlYXNlMjQtbWFpbnQKKzY3MjUxIDkzNmE2ZTYwZjNlYjdhM2JlNDdmYmFjMjY5NWJhNDZmYzBkNTBlNTEgcmVsZWFzZTI1LW1haW50Cis2NzI1MiBmMzlhY2ViY2U2MjhiZTFmOThjOTEwOGIzNjJhN2UxNmYxMzc0Y2U5IHJlbGVhc2UyNC1tYWludAorNjcyNTMgZWQwZGFjMjZiMzk2ZGEzZmI3NzY0NDlhMGU1NmVjY2M0M2U0OTg3MSBweTNrCis2NzI1NiBlMmQyYTdhNmU4MzE1ZGM4MjY3YjM2YzQ4ZWY3MWMwZGU0MmViYTVmIHB5M2sKKzY3MjY2IGVhNmVlMjgyMDc1M2JjZWZlZTUyZGI3OTA2MDFmMDhlNmYzOTVjYmIgbGVnYWN5LXRydW5rCis2NzI2NyBkNmU2Nzk4OWZmNTE0OTczNjJmZTNmZGI3ZGU4ZGFmOWIwZjdiYjBjIHJlbGVhc2UyNi1tYWludAorNjcyNjggYzZkMTZiMmE4ZWZhNGQ1NjI2YWRhZThlMTYxNDkxNjJlNzkyZWEwZiByZWxlYXNlMjUtbWFpbnQKKzY3MjY5IGNlNjkyMzU0NWU1ZWMzYTYzOTBkNjYyNGFkZDg0YTYwNDBhOTdhZjYgcHkzaworNjcyNzAgNmQ2ZTM4Y2ZmMjQ0MGUyZjlmZmQ0NmUxZWUyNTUwMWQ2MDkyODYwMiByZWxlYXNlMjQtbWFpbnQKKzY3MjcxIDBjMGJiMTA0ZWM0YjdhN2Y2YmRiOTk5MmM1Nzg2M2JiZThkNmEwZmUgcHkzaworNjcyNzcgMmQ5YjE3M2RjM2EyZWI3YTgwNmU1MWIzM2M5Y2E5NWNmYWU4MzdiMiBsZWdhY3ktdHJ1bmsKKzY3Mjc4IDE1M2ZlZDdjN2I2MGI5MGQ1ZTk0NjYzODkyYzllZmVmY2M4MTA0MTAgbGVnYWN5LXRydW5rCis2NzI3OSA3MWE1MGU2NzVmYTFlNDQ4YWVmOGI2ZGYyZTViNDM1NDBhMWU3OWMwIGxlZ2FjeS10cnVuaworNjcyODAgN2JiMjA0NjEyZmM2NzZiYmM3ZWZlMGVhNjM0YWE0OTg1OWFiMDVhNiByZWxlYXNlMjYtbWFpbnQKKzY3MjgxIDhiOWJkYTViOGQ0YTlkMWJhM2E3YTI5YmEzZWZmN2JiZDUwNDhkZWIgcHkzaworNjcyODIgNzIzODk1MGQ1YzYwNDAwNzdkYTcxNWQ4MWQ1Yjc0MWM2M2MyYzczOCByZWxlYXNlMjYtbWFpbnQKKzY3MjgzIGJmNmE1YmU4MjdiNGMyZTZkMGNhOWNiNjcwOWU3MDgwNTgyZTQ4NmEgbGVnYWN5LXRydW5rCis2NzI4NCAxZjdiNmM0MGM5OTA4OWE2NjViMTlmMTc5MzZkMzdiY2NiMDk5OGMyIHJlbGVhc2UyNi1tYWludAorNjcyODUgYTkzNzZhZGMyODRjZTc5MGMxMDMyOGIzNmE3MDRlZDZjYWM5NjkyMiBweTNrCis2NzI4NiAwNzIyZDcxYWZhMmYyODZlZTQ1MWY0MjkxMzc5ZDIxMDM5M2QyYTk0IHB5M2sKKzY3Mjg3IGE0NGNlNTU1NmE3ZmM2MzAyNzkzNDkxYWExYWRmZmFlOTMzYjRlYTYgbGVnYWN5LXRydW5rCis2NzI4OCBmMDRkZjEwZTIwNTAxMWU4YmNiNGNiNjEyNWVhOGQ0NTYyOTA4MDczIHJlbGVhc2UyNi1tYWludAorNjcyODkgZmZhZTU4Mzc4NTFjYjRhYWIyYmM0YzdkMjhkMDQyOTMwMWRmZTI0ZCBsZWdhY3ktdHJ1bmsKKzY3MjkwIDFlN2QzMjIyNzRjODNlYzc3YzlmNDM4MTZlZTJkMDhjZTFmNTg1NDEgcHkzaworNjcyOTEgN2IxODc5OWU5NTE5NDU4Mjk0Yjk3YTRlYjE2Y2Y4MWRlNThiNzJkOSBsZWdhY3ktdHJ1bmsKKzY3MjkyIGZkYzkzMzk1MTk2NDZmNWNiM2FhYjkwMGFhYjMyN2Q4NDNmYWJlMzEgcHkzaworNjcyOTMgY2FjYzAxOGZhMzQxYWI1YzU3OTZkNWVmZjYyYmZkZDkyYWQwMGI2ZiByZWxlYXNlMjYtbWFpbnQKKzY3Mjk0IDA4OGZkYWRmOTYwOWQxOTNlYjEwZjhhNDBmMDliNTBkZjkwMWZmOWMgcHkzaworNjcyOTUgYTI5MGE1MWZmOGUyN2Q3MmI4ZDFmMWZiMzBiOWFlYzc2MjYzOWIyZiBsZWdhY3ktdHJ1bmsKKzY3Mjk4IDJkYTNmY2Q0OTM1ZjE1NGY5NDE4NmIzNWMxZTkxODAyM2UxM2JmZTAgcHkzaworNjcyOTkgMmNhOTY0ZDcyNGQ1ZmY5YTE2NzQ2NzQ1MTliMzQzNmQzODAxYzFmYiBweTNrCis2NzMwMCA4NDEzNjlmMzczMzQ4NjFlOTAzZmZmMzdhY2U5ZjFiYzE3YjgxNTlmIHB5M2sKKzY3MzAxIGNiODAzOWQ4MmFmM2YxNDBmOTZjYTEzMjE5YzBhNmYxY2YyYWI4ZmEgbGVnYWN5LXRydW5rCis2NzMwMiAyNDY0NTg3MDc3OWFiOGNjYTM3ZWFiOTY4YWQ0MTEyNDVlNzJjM2ViIGxlZ2FjeS10cnVuaworNjczMDMgZjQxY2IyMDZkMDYxZWQxMzU4Njc4ZTQwMGMxOThmYzY5OWYyMGZkMSBsZWdhY3ktdHJ1bmsKKzY3MzA0IDg4ZmY0NWU1OGU5NGI2YmE2NTUyZDg4ZGYyNzYxY2M2NmUyNGVhZjcgcHkzaworNjczMDUgZGMxZGI0NmQwYTQ0YjliOWEzZjY4YjQ2MDBkYzAxZjdjYWI1Mzc5ZiBweTNrCis2NzMwNiA1ZmZkNjdkZjhjOWYwODE5ODYwY2EwYjVmMjM4ZWZkNWU2OTBkYjQ2IHB5M2sKKzY3MzA3IGVhZGU0N2RmYzFlNDcwNDc4NjVkNWNhZTFjNGI1Zjg4NDM3NzFkNzAgbGVnYWN5LXRydW5rCis2NzMwOCBmOTVmZjk2ZmQ3OTJmMmYxZGUzMWU4YjQ5ZDc3MTg2NWM4MDdhODY2IHB5M2sKKzY3MzA5IGJhYzA0MGI1ZWYyMmE0MjQ0NWU2NDhkOGU5NjYxNGNkZjJhZTM2MDIgcHkzaworNjczMTAgNTRlNWQ4NTNiMGRlYzdlNzRlZjMxMjY4M2FmYzFmMDUwNzU2NGY2YiBweTNrCis2NzMxMSAxNTlhMTFiMWQyNDQ1MGE0YTUxYTQxZTg3ODkzNjQ2OTI2NTVkMjM3IHB5M2sKKzY3MzEyIGU4M2E2MGM2OWQ1M2Y1NTUxYTMwNmU3N2E2ZDM4ZTliMTE0ODU0OTYgcHkzaworNjczMTMgMzRmYjY2NmZmNTJmNDEzNGYzMmVlYTY4NTk1YWU2ZDZiYzM4YjAwYyBweTNrCis2NzMxNCA3YWFhM2FmZmVjYzE1MzJlMTEwNGJjMTdmMWQ4NTliOTUxNTczYWJiIHB5M2sKKzY3MzE2IDM0YmMyMjc5ZGM1NmRmZGFiMWRhMzI3NmE1M2MyNjFmOThhNWEyMDQgcHkzaworNjczMTcgZWRhNDY3ZDY1YjY1ZWZiMjExYzNlNDQ3NTM4YzExODI2MWIxZTU5NiBweTNrCis2NzMxOCAyMzI3ZGQ2ODQyMWNjZmZjMDA1MzhiN2RmN2YwN2Q4N2RjNzZmODgyIGxlZ2FjeS10cnVuaworNjczMTkgMzI1MGZiNzFhOWUwOGMwNmE4NmVhYmYyYjE1MGFhYjlkM2JkYTUyOSByZWxlYXNlMjYtbWFpbnQKKzY3MzIwIGI2NGQwNTNhZmQ4NGRhOTE0MDI5M2NhODU2NzlkMDFjODI2ZDhhYzQgbGVnYWN5LXRydW5rCis2NzMyMSAwYmNhZmE2NGVjY2I0NDM1N2RhY2FiMzU3ZTU1NGFhYzdhOWI3OGQwIHJlbGVhc2UyNi1tYWludAorNjczMjIgZjQwM2Q5NDE1N2IyMTBkY2Q5MzhkMmM2MzNlYTQ0YzExZGY2YjYwNiBweTNrCis2NzMyMyA3ODQ2ZmU0OTUyMTI5MDBkNjEzNGE4N2VhNDRiYjhjMWQxZmQ2MTdjIHB5M2sKKzY3MzI0IDBlYjVhZGQzMTYwYTI0OTA5MDEzN2VjYjIxY2FjY2Q4YWYxMzBhYzEgcHkzaworNjczMjUgNmFlZjI4ZWJiZDZjMTE3NGI4NmZkODUwYTdlMmQ2MmI3N2M2OWZkOSBweTNrCis2NzMyNiBkYzRhY2Y3NTMyOTYyZDNjOWI4OWVjNDA5ZWVkZjljMjI2N2Y2M2Y5IGxlZ2FjeS10cnVuaworNjczMjcgYjE4MGIyNzFhN2IyYjQ0ZmQ3NmY0MmRjMGVlMWE2NGVkZmExZmI1MCBweTNrCis2NzMyOCAzMWQ4OGZmZmI5OGExMDRhNDgzNDk4MjM2MzliYzFjM2JmMjgzMTJmIHB5M2sKKzY3MzI5IDhmMGExNzVmMDRiZWFhZDVkNDA5OTAyNjY3NTNmZDYzOWNmMDcwNTUgcHkzaworNjczMzAgM2YyZGRiM2RkMTQ3YTViMzI3MjY2NjA5ZjhhOGEyYzg0NGZkMDhkZCBsZWdhY3ktdHJ1bmsKKzY3MzMxIDJkOGMxZWE3ZjhiN2VjNDVkOGI5MjgxMjJjYjEwYTMwODFlMDFhZGUgcHkzaworNjczMzIgNWUyMDA3ZmEzY2Y4MmM2YzRjNGQwZDQ5NGZhMmIyMjYzZjlkMGIzMiBsZWdhY3ktdHJ1bmsKKzY3MzMzIGEwZjRkNDVmZDQ0Y2Y2ZjE4NzljOTUyMjE4OGI5MjU4N2EyZDM4NDEgcHkzaworNjczMzQgYTQyMjBjOTJmN2NjZjQzMzAxNjZjZTZhZTA1MzdlYzAwODMyMDE5NyBweTNrCis2NzMzNSAyZDk3MDY5MDEyNDE3MTc1YTMwODE1YjUxZWYwMDdjNzc5ZmI2OGRiIHB5M2sKKzY3MzM2IDc4OWEzYWIwYWU5ZWE3Zjk3OTRhZDgxMGU3ODQxNTMzNTM5MmY0ZjQgbGVnYWN5LXRydW5rCis2NzMzNyBjMDA5ZjAwYTQ1MGZkYTc3NGIxOTgyYjVkMjc2ZDEwMzM1ZDYyMzkxIHB5M2sKKzY3MzM4IGI2YTgyNDU5OTIwY2VmMGEyMDI5MjdjMzE1ZDVlMmVjYzZhNjU5ZTYgcHkzaworNjczNDAgMTMzMjFjYjJkNzUyMDMxMmY4ZDUyMjM4MWUwOTdhNzBhMTIwODI2OSBweTNrCis2NzM0MSAwMzBhMTUzNjllYWM3N2NiM2JjMjY4YzhiYWUxYWQzYzBlNjM3NjZkIHB5M2sKKzY3MzQyIDVmNzA3MDZhOGU2NzE4ZjFjMjIyZTBiMjRkMTA5NzJmMzliNjMyMmIgbGVnYWN5LXRydW5rCis2NzM0MyA1ZmVjZDFlOTUzMjQ5NzkwZDNiYzk2MzJlNjhmMDEyZjcyNjU4OWUxIGxlZ2FjeS10cnVuaworNjczNDQgNWQ5YmU2NWU3ODkxZjcyMDQ1MzlkNDUwNjY2YTUzYmNiNTY2M2QwYSByZWxlYXNlMjYtbWFpbnQKKzY3MzQ1IDYzMGMxNzRiNDY1ZTk4MTY5YzQyOGU5ZmUzNTllNjU4N2I3MDU0ZTQgcHkzaworNjczNDYgN2MyYjFiNTJmMTM0MjhmOTU2MWNkMWUxNTY2MTA2YWRhZmRhZmJkNyBweTNrCis2NzM0NyA5M2QyZGQ2NDFiNzAxOTQzNGM5Y2IxZjJjMTA4ZTRhYmNiNzlhNGEwIHB5M2sKKzY3MzQ4IDhhM2VhYzdmOWNkNjQ5N2ViMzVkZTc3YjM0ZjY5NGJhMTYwZDVmZTYgbGVnYWN5LXRydW5rCis2NzM0OSA1M2ExMjdhZWE1NmU5MzU5NzMxNmVkZGFjZjc2ZmE4MzNjNWUzMTMzIGxlZ2FjeS10cnVuaworNjczNTAgYzlkMGQ0ZGE5YWM5N2RjNjk3ZWNkNWYwM2ZmYjgyMzFjZWYyNmNkMCBweTNrCis2NzM1MSA3YmJjYTI3ZDM1NTllMjdlZDg2ZDU4MGViODU5YTVkMDRmMmZjZjc3IHJlbGVhc2UyNi1tYWludAorNjczNTIgNzVlOTkyMDM1MWYyNWUxM2QxYTI1NjgwMjZjN2U1ZDk2M2UyMTEyZiByZWxlYXNlMjYtbWFpbnQKKzY3MzUzIGU3MDRlZWRkNzdkY2RlN2EzMzE0YzVkZjVlYmZiY2E4ZmRjYjI0OWYgbGVnYWN5LXRydW5rCis2NzM1NCBkNzMwM2FiY2YwNjkyODJiZjI0ZWVmNzQxN2M0Mjc5YjM2MGVmMjg2IHB5M2sKKzY3MzU1IGNhNjczYmJkZTFhM2Q4MWE1YjQ0YTJkMGY5N2UwNWMzY2VjMWVjNGMgbGVnYWN5LXRydW5rCis2NzM1OSAyNDE2NTAzYTMwNzhiNWRmMWNmZTgxNjAyZWE3MDg1YTE2NTE2ZTE5IGxlZ2FjeS10cnVuaworNjczNjEgZjFiYjI0MWJhZDI0YmJmMDYyNjI4Nzg2ZjUyYWRkYWRiMzY3MjdmMiBweTNrCis2NzM2MiA0ZWFiMzQwMTYwZTBhMjJjZmZhZjM5MTI1NGJkZWFhYjhjMjc4NTlkIGxlZ2FjeS10cnVuaworNjczNjMgMWU5MTlkMzRjOTgyNTE2MWI4NDkxMDJiNDczZDhjMDA3NmVjMjQ0MCByZWxlYXNlMjYtbWFpbnQKKzY3MzY0IDlmZWFhNmExYmYyYzIyYmFlMzFhNzRlZjg2ZjYyZDMxNjhkYTRlYzEgbGVnYWN5LXRydW5rCis2NzM2NSA3NTFhOGVmYzVkNDY2MmFhOTJmNzMzMTgyOTYxMzZkNDM3ZGE5MDdhIGxlZ2FjeS10cnVuaworNjczNjYgOTk1OThhNjFjYzM1ZmQ3YWYyMmU4MjQxNWU5ZGFlNWY0ZmI4NjdlNiByZWxlYXNlMjYtbWFpbnQKKzY3MzY3IGMzZjQ5YWRhYzJmZTY3ZTE2YjBjZmU2ZjQxOTJhZTAwNGYzOWZhYjMgbGVnYWN5LXRydW5rCis2NzM2OCAwNmZiNjQzZjY1NTNjNGY0YjM2ZjM4ZDhmMzczMTFkNDg1NmVkOGNjIGxlZ2FjeS10cnVuaworNjczNjkgZTQ5NzYwOTA5ZDJiYTUwNmJkOTMwYjc0MDYxOTc3N2FlZDc5YWM2OSBweTNrCis2NzM3MCBiNzFjYzAwM2VmOWY4YTUxNTBiZTg2YjhjYzNiODZkMzY3ZDFiN2Y5IGxlZ2FjeS10cnVuaworNjczNzIgZDY2Njg2ZWIxMWY2MzFhN2Y0ZDQ1MTZlMmRiODU0NDI1MTJlZjFlNiBweTNrCis2NzM3MyBmZmFkNmMwZjI1MmViMjA4MGIyYWY2NjE0MWE4MDQ4NTFkMTgzMDFjIGxlZ2FjeS10cnVuaworNjczNzQgOTZmMzhlMzU3MTk0ZWM2ODdmYTQ0ZjBjMmU4NTEwNjAxZDlkZDMwMSByZWxlYXNlMjYtbWFpbnQKKzY3Mzc1IDQwYjcyNzdlNjY1ZjAxNDUyZTliY2U5Njk2NzZjNDA3MmQ0ZWQ2OGUgcHkzaworNjczNzYgMGQxMGQ1YWIyODQ0MGE5NGI0MThkNTIzNzkwZWNmN2ExZGUzZDAwOCBsZWdhY3ktdHJ1bmsKKzY3Mzc3IGYzN2JmNTVkYjQxNmNhM2NjMGRlODEzOWQ5NmJkZTJmOGMxNzQ5MTQgcHkzaworNjczNzggNmMwODcxZjBjN2E2OWQ1NDJmZjUxMTAyZGQxOTFjZWY1Y2M3NjI1YSBweTNrCis2NzM4MCBkZmVkYTBkM2Q2MzZkNDAxNzNhNzFjZGEzYzAyMzMwNTU4NDYwMDY3IHB5M2sKKzY3MzgxIDRjZjAzZTE0MjAwYzg5ZDA1NGQyODViY2U5NThmZWFmMjY4NTVhMTMgcHkzaworNjczODIgZWZiNDlkZjBkODk5ZGY5ZDJhMjlmNjYwNTFjYWJjN2NlNTA2YzgzOSBweTNrCis2NzM4MyAzNTI4YjVjMTY5Mzg3OTliODk1YzMzN2IyMzZkYTg3YmU4NThiY2YyIHB5M2sKKzY3Mzg1IDMwZDAxYTVmNTE3ZWQ3YmU1MTI5Mzc3YzIyZTYzOWVmOGUwZmU5OWQgcHkzaworNjczODggMmQzZjFkMGMyYTEwZWNkNTdhYTg4MzgxM2U1N2UyNDM5NDFjM2JiOSByZWxlYXNlMjUtbWFpbnQKKzY3MzkxIGQzN2I0ZmU1MTMyODc1NDFkZTViODk3NWNhODk3NjdhOTQxODVlOWYgcHkzaworNjczOTMgOWZkOWNkODUyNjMxYWQ2ZjMxMzc3NzNhYzEyN2E2NjlmYjJkNWQyOSBweTNrCis2NzM5NCA2OGYzYmViN2VlYWRmMWIwMDE5NTkxZjQyMWU4NGUzZDMxZjc4ZWE3IHB5M2sKKzY3Mzk1IDczODk1ZWFkYThiZDFiMjIzMjZmN2E5MjA3NTNlOTRkYjZjMDEwYzcgcHkzaworNjczOTYgYTBjYmU0MGRhYzhmM2Y0NzVjYjdjZWE5MGY2OTQ0MjM4YTMyNzM5NSBsZWdhY3ktdHJ1bmsKKzY3Mzk3IDU2ODRjZTk2ZTYzOWY3ZWUwOThmMzNjMGVkNGZmZWY0NmJkYzJkYTkgcmVsZWFzZTI2LW1haW50Cis2NzM5OCA4NWIxZGU4NTVhMTNmYTRhZmYyMDU2MmFkODYwMTk5NWFjYTY5NDIxIGxlZ2FjeS10cnVuaworNjc0MDEgZGViMzA2NjljMzU1YzI4YTFhNWI4YWE1NjY3YmU3ODg5YjgyNGEzZSBweTNrCis2NzQwMiA3OTdiZDMzM2VmNmJhMjJlOWYzYWU4ZjA5ZWZjYjFlODMyMTY5NGQ4IHB5M2sKKzY3NDA2IGEzYTVmNjQwNGFkNWJhM2NlMTNjZjZmM2RjZmE1MjQ5NDRkOTQ4NjkgcHkzaworNjc0MDcgNWNiYzNkZDQ0OTE2MTA4NTNkMzE4OTE5M2MyNjkzNjViNTc1OWE1NSBsZWdhY3ktdHJ1bmsKKzY3NDA4IDBhOTk0YjMyZGU5ZmU1MTYyMGI0NzFhZDQ3ZmQ4NjU3YmJhYzRmMWYgcmVsZWFzZTI2LW1haW50Cis2NzQwOSBmODA0NGI4ZmY2ZWVlYmJhZmJjZWQwNTc5NTg5OGY1NTYxYzExYWJlIHB5M2sKKzY3NDEwIDhiMTRmYzVlNWYzZjVkMzljMzQ3MmZkMWIyYTliNDg4YTM2YzJmOWYgcHkzaworNjc0MTEgMzk3ZmJkNmMzNDcxYTMxMDAyY2UxMDIyMDhhMWE3ODZjMzBkNDlkOSBsZWdhY3ktdHJ1bmsKKzY3NDEyIGM1NDY0OTdiNDIxYTFhMmM1NjM0ZTExNWZmODZmYmQ4ZWJlNTMwMDcgcmVsZWFzZTI2LW1haW50Cis2NzQxMyBiNThhNDM1MDAyYzExMWQ5MzgxZTg0OGZiMmJkMDQxOGY1ZjZiZGMzIHJlbGVhc2UyNi1tYWludAorNjc0MTQgZmNhZTE0YmNlYTczMjM3ODViZWMzMTA3NjBiMDM0YjFjOWZmODc1MCBsZWdhY3ktdHJ1bmsKKzY3NDE1IDM4MWM2MjgxOWYyZWM4Mjk3OGFjYzkxMmIwMzU2OTA3ODZmNjFiN2QgcmVsZWFzZTI2LW1haW50Cis2NzQxNiBjNTEyNjJhZDU2MDNkZTk3MmFkZDc5ZDViZWI5MzVlMWEwMTQ1OTk0IHB5M2sKKzY3NDE3IDM4MDNiNmM0ZmY4ZjMyMDEwNTA2N2QyNTRmODkzOGYwOTM0OTdiMjAgcHkzaworNjc0MTggMDZlNmMzOWFkODAyNGY4N2Y5YThhNjQ0MmJmOGQ2MzJjMzNkZDBkNSBweTNrCis2NzQxOSBjYzllZmI5ZjhlNTdkODRkMDcwOWViNTQxOTM4YzgzYWYwYzQxYzYzIGxlZ2FjeS10cnVuaworNjc0MjAgYmYyZDE5MjkzZGI3N2NhM2EwYWFhMGZjMmMxMTdhNWIwZDdlMjY3YiByZWxlYXNlMjYtbWFpbnQKKzY3NDIxIGE5MDM1MmU1OWNlNjFkMzJmNDMyZDRlOWM4NDQ4MzJjNDZmMzVmOTQgcHkzaworNjc0MjIgMThhYTcyOGU5NTJkNTExZjkyYjExNjdhOTc5ZWQyMjMwMGU0YTQwNSBweTNrCis2NzQyMyAwYjNiNDRiOGM3ODI2MjU3YTI3ODFmYmI5NTY4ZWRiZGJlOGY3M2M1IGxlZ2FjeS10cnVuaworNjc0MjQgNDZiNWNmM2NhZGU0YWY3NWM2NWVjZmUxMjFjMDdlNGViN2Q4YTg3MyBsZWdhY3ktdHJ1bmsKKzY3NDI1IDBmY2ZlMThmZjhmNmQ1NzA2OGFhNGI3M2VkODliYmUxZTE3MTliODggcHkzaworNjc0MjggYzhhZWQ5YTM2ZWNiN2Y5OGM0ODA3ODlkMzhmMzc1ZTNhZGRlNGIwMCBsZWdhY3ktdHJ1bmsKKzY3NDI5IDhkMzI5ZDJhMzY0YWI1MjVjYjljZjJjOTExMjBjNjAxNDIyOTYwZDkgcHkzaworNjc0MzAgMDYwN2M5N2E4MTI0YjRlMzg1MWY4ZjRhNDkxMjE2NGQ3NzI2MmNjNCByZWxlYXNlMjYtbWFpbnQKKzY3NDMyIDIzYjQzNDhmZGY1MmZmNmVjZTA1OWVjN2QxYjBkMGY1OGNkZGI1ODMgbGVnYWN5LXRydW5rCis2NzQzNiA1NjBiMmY1Mjk1MmM4N2M0YzgyZDdjMTkyZmMyYmYzNTgzODYyMjJiIHB5M2sKKzY3NDQwIDA1YzEyZjZkMTQwNDA5YzEwOTk4MWQ3N2Q5OGRlODgyZGVkNWRjYzAgbGVnYWN5LXRydW5rCis2NzQ0MSBjYzI5NGZjOTBmNmM0ZGNlZDkxOWJkYTRkY2JlMjI2NGI1NzM4MWRkIGxlZ2FjeS10cnVuaworNjc0NDIgZWYwYzVjYTQ1NDQxMjM0NGM5NmE2YzIwMjhiMDc1YjJjM2U1MDAxMiBsZWdhY3ktdHJ1bmsKKzY3NDQzIDgwMzdmYTdhY2U5ZWVjM2M5MGI4MjhjMTUwNmRkMWU4NThkYTZlYjQgcHkzaworNjc0NDQgZTI5ZjY2ZmRiNDJjMjBmOWE3ZTNkMzI2NDYxZTY4YTNiZDUyOTk1YSBsZWdhY3ktdHJ1bmsKKzY3NDQ1IGY5YWE4N2ViMzM0YzFlZGM0NjNhOWVjYjdhMTUzMTIzYThiNzcwZDggbGVnYWN5LXRydW5rCis2NzQ0NiAzNTY5ZjdiMDkwMjU2ZTBhYTBlY2Y3ZTNhMTQ4OTk2NzRkMThhMjlhIHB5M2sKKzY3NDQ3IDI3N2E4ZjI5NDRiNDIzNWFlZWNkNGQ3MTVmYzMyNGI5YTA4MDlhYzkgdGxlZS1hc3Qtb3B0aW1pemUKKzY3NDQ4IGJlZjNjODVhOTA4ZDRjZGRkMGIxYWZkNjEwNjU1NmI4MjI2ODViNzcgcHkzaworNjc0NDkgYTFkZTkxYWQ5Mjg4MmRkYjdiMjlkZTRiYzhlYjNkYTlmZGE0ZWNkZSBsZWdhY3ktdHJ1bmsKKzY3NDUwIDdmZGY5MzZiMzBiZjZmMmNhZGNiZTNjNWY0MjE1ODIyNmQzMTIyZTkgcmVsZWFzZTI2LW1haW50Cis2NzQ1MSAzYmYxOGJlN2NlNWE1YjQ4NDI3YWU2NGUxYjk4ZTk0NDI4MmQyNDFjIHB5M2sKKzY3NDUyIGYxZWJiYzE4NmMxMTI3NjNkZWVhMTYxMjdkZjdjZWQ3MDk5MjRlOWUgcmVsZWFzZTI1LW1haW50Cis2NzQ1MyA5NDJiNGEyYzJjMTNiZTlhZjU5NjY5Zjg4ZjdiYTQ1ZWY0MTQwMWZkIHJlbGVhc2UyNC1tYWludAorNjc0NTQgMzlhNTZkMzU1Mzc2YWFmZjQ5MmU1ZjE5ZmY2MzVjZjQxNTY1YzcwYSBsZWdhY3ktdHJ1bmsKKzY3NDU1IDM3MTJkMWY2YmZkNTViNWE1OTk4YmMwNDllZTYwZDMyMjcwYjdiYTggbGVnYWN5LXRydW5rCis2NzQ1NiBiOTYyZDA0YmI3ZjAzMzRhZWQxZGY4YTZjY2UxY2I2YzRiNzRlOWZkIHJlbGVhc2UyNi1tYWludAorNjc0NTcgN2VkMzhhYTEwZGU2YTUyZTY4NjQ2ODFiMzM0ZWRhMzNiNzA0ZjZjOSBsZWdhY3ktdHJ1bmsKKzY3NDU4IDE4OWRlZjA2MjUzYzZhN2E5NzI4NWJkNDdlOTU3NDdiNWE3NGFkMmQgbGVnYWN5LXRydW5rCis2NzQ1OSAwMWY2ZWE3ZjdhNzU4MWY0YTQ5NGZjOWY2YWU4OGRhODQ1MmIwM2ZjIHJlbGVhc2UyNi1tYWludAorNjc0NjAgNzVhOGNhYTI0MTg2NTk1OWU1YjY1ZmYzN2UyZDVhOTZmMzkxZWEyOCBweTNrCis2NzQ2MSBlZDhhZGZlZjI2YzY1YjNhODg2YzgzYjBiZDM0YTYyNjc4ODgxZjY3IHB5M2sKKzY3NDYyIDZlODkxMzUzY2U5NjU4ZWJlYmQzZjY3ZTc5MGMyOWFjNDMyZmFiMGYgcHkzaworNjc0NjMgNjgxNzMzYjQ5ZmEyMzk4YWY4ZmI4MWY5OGNiM2UxNjFlYjZiNTRjMSBsZWdhY3ktdHJ1bmsKKzY3NDY0IDYwZTc3NWVhYWFlZWU4YThlZWM2ZjFjNWM2OTcyMzFjYmUwZjkxMmIgcHkzaworNjc0NjUgM2U1OTk1ZjZhYjhmNmE2YzQ0ZWU4ZWI0YmE4NzI5MDExNjY2OWRmMyBweTNrCis2NzQ2NiBhYjEyZDcxNmE3YTgxZWQ0YTA0YmE2NzAzMDM5M2M3NzM3NDAwYzViIHJlbGVhc2UyNi1tYWludAorNjc0NjcgN2Y4ZjcxZGM4NmM3NDA5NWM2YTkxYTQxZTNmNzYyM2YzZjE4ZTg3NyBsZWdhY3ktdHJ1bmsKKzY3NDY4IDA3MzJkMTNlZDA2NzhhZDg1NjViOGU5MDQwMDI5NDJkYjgwMzQxYjggcHkzaworNjc0NjkgMGY3NzI1ZTE5YmMzYjkzZjMyODE4NjQyNTBmYmY1NjI4MDgxMDE5MCBweTNrCis2NzQ3MCA0NDYxZjE4ZjI2NDNjOGZjOTlmMTAyYjQxZTE3OTA3MThkOTUxMThlIHB5M2sKKzY3NDcxIGIxZDJhZjUyZDgwMTUzNGE4YmQ4MmJlOTc0NGJkZGFlMzQ0ZmRmZmQgcHkzaworNjc0NzIgZWQ4NDc2ZDdmNjRhNWQ2MTY1MTgxMDY0MmQ3YTRiMzQ0ZWNhMzZjZCBweTNrCis2NzQ3MyAwOWMyZDE1ZTRkMWRiNjJjOTlmYTEzNTUxZmQ1N2U3MGJjNDE3ZmZhIHJlbGVhc2UyNi1tYWludAorNjc0NzQgYzE4MmUzYjllOWZjM2FiZGZkNTBkYTViNmZjNWJhN2Y3ZGRjZDY4YSBweTNrCis2NzQ3NSA0MGVjNmQyODk1NTJlN2YzMzljZGYwNzdmNTk3MzM1ZTcyNzBkNzA2IHB5M2sKKzY3NDc2IDZhMTIxZjA0YmM3ZGY2YTI0OWZhOTk5MzYwMzhiMWU3YmYwYTUxMmYgcHkzaworNjc0NzcgZDE3MmRkOGQ5ZTA5ZWJkODhmNTE0ODFlYzdkODU5MDNhYjc3OWVmNyBweTNrCis2NzQ3OCA4NmVlMmUwZDRkNDE1NDk1NTA3MDNmYjRjN2YwMmFiNjdlNDExZTUzIHB5M2sKKzY3NDc5IDc4YjBjOGRlM2E5ODgzODIxMzM4MWUwNjU0NmIwNGNhMTQ5YzM4ODQgcHkzaworNjc0ODAgOWM4MWMzYjcxMTE5NTJmMTRlYTI4ZWIzMjEwNjFlMmE0MjRkOTlmNSBweTNrCis2NzQ4MSBjZGRhMjA5M2Y2ZjUzMDhiNjJiZDI5NjM0OTVkMTJiNjk5MTUzNTI0IHB5M2sKKzY3NDgyIGNjNWE5NWYwZjU2YTUzNGY1ZmI0MzBlOTA4MGI3MjdmZDczNDI1ZDUgcHkzaworNjc0ODMgYzgyNmU0NjJmYTUxZjUzZjIxNWRmYmY2NjE1YTJlZWI3ZGI4MGEzZiByZWxlYXNlMjYtbWFpbnQKKzY3NDg0IDVkNGRmZWVkZDUxMmIzMTk0NDMwOGRjYzY5ZmZmNDE0MTIzMDA1ZTEgbGVnYWN5LXRydW5rCis2NzQ4NSAwNDUyNmEyMjJjYWYyNDNiMzU0YTU1MGQxM2QxMDhmNjk4ZTUzODk5IHB5M2sKKzY3NDg3IGNmNDdmN2M3ZGRiMzI2ZTA2OGE5NDY4YmM0YTcxODdhMDZjZmI4NTcgcHkzaworNjc0ODggZDFkZTMwMmU2ZWZjNTM4NjE2ODExNjcyMWY1ZWNiM2QxZWNkYTI5OCBweTNrCis2NzQ4OSA4MWNhN2JiODgwNGYwMmM1OGNiOTllM2M2MTkyMTQzYzM5YWEwOGZjIHB5M2sKKzY3NDkwIDEzN2I1MGVlOTZkNWMxYWQxODBhZTY0MDY5N2E5Y2Q0YTNkNGJhZmIgcHkzaworNjc0OTEgNTRmZWFjM2QxMTY5MDY0OTc0MzZjNTdjN2I4ODc4MjM0NTY2N2U5OCBweTNrCis2NzQ5MiBmNDQ3YTFkZTJmYWU5YjAzMzJmOTcwMzU1NGQyZGIzMDQ3MzI5NDJlIHB5M2sKKzY3NDkzIDg0NTMwNWEzZGEzNjNlYmJkOGZmYzMzYTIyNDk3Y2VhMTZlNmEzMWYgcHkzaworNjc0OTQgMzM0NDgwNGYzMjdkNmU1YjVlMWUyZWZhM2VlMDc5NjFhOGEwNmI2YiBsZWdhY3ktdHJ1bmsKKzY3NDk1IDZhNGNjNmJhMWMxNmFlY2JiMmU5ZmVlMTNmZDFmOGEzYTg5NDFmYzIgcHkzaworNjc0OTYgYTNkMDI5OWI0YjFkYWZiYWE4OWY3NThmY2QzNGM1NDg1ZWI0N2U1ZiBweTNrCis2NzQ5NyBjNmE0YTJjYzU2MTI2YTM5NzQ1ZWU3ZGY4MDcyYWUwOTEyN2Y0YTRmIHB5M2sKKzY3NDk4IDU4OGE5NWVmNzk3MTc2YTU1NzhjYzM0MTMyOWRhYmQ3YWI0MWNlNGUgbGVnYWN5LXRydW5rCis2NzQ5OSAxMDdkNDUzMTc5YmUyZWRlN2U3OGY3YWE4Njc4YzIyYzYyMDViZDQzIHJlbGVhc2UzMC1tYWludAorNjc1MDAgNTIzNWRjZGE5MDc2ZjI1YTljZGNjNzI2YTliM2FjMzk0NzkxYWJkYiBweTNrCis2NzUwMSAyYTVlYzA2MGJiOTk4MTliNmQ1ZDVlNTFiNjBkOGRiYTk3YjRhNjFjIHJlbGVhc2UzMC1tYWludAorNjc1MDIgNTlhZGZlNDM2OThkYzg0OGQ4MzExNTI3YzBkZTM0NDRiZTZmZGE5MCByZWxlYXNlMzAtbWFpbnQKKzY3NTAzIGE2NTMyMTQ2MDI3MDdiZGUwZTUxMDY0ZDdjNzc4OWNlMjk1ZTQ0MzIgcmVsZWFzZTMwLW1haW50Cis2NzUwNCA5ODA3Yjc5YTE2MmU2ZmZiMGJhNDJlMmM2OTU4NDg0N2E2YTdlM2MyIHJlbGVhc2UzMC1tYWludAorNjc1MDUgNTg5Yzg4YjIwYjViN2UwMDc3OTEwMWMxN2QxNDkxYTMzYThmYjljNSByZWxlYXNlMzAtbWFpbnQKKzY3NTA2IDY4YTZlM2FjNDFjMThjOGExOTBhZGEzYWExNzY0NGI2MTBkZTJjNTcgcmVsZWFzZTMwLW1haW50Cis2NzUwNyA5YTJiMDYzODcwYTMwOTFmMjMwMTlmN2JjY2M5ZDQ1YTY0MTNkYjQ2IHB5M2sKKzY3NTA4IDc1YjhlZTA2MmIwZDRmYzkxN2IxMzczOTNhMjg5YTBmNTQ4YzFjZDYgcHkzaworNjc1MTEgODc4ZDQwNDY4YzRlN2QyZDEyOTNmYWI2YTY5NjVhZjIxYjE0ZjkyOSBsZWdhY3ktdHJ1bmsKKzY3NTEyIGUwN2EzMjJlZjU5MzRjZTM1YjQ5Njk5ZTM5MzhlMjFmZDMxMjYzMTMgcmVsZWFzZTMwLW1haW50Cis2NzUxNSBjYWJmMzAzZTc4N2FhNWNkNzIwOWI0MGUzYjJjYWJhM2VlNzVjNWE1IHJlbGVhc2UyNi1tYWludAorNjc1MTYgYzlkYTg1YzE5NzE5Yjk1NDZkYTdiZjZlNjNjYWYxYzA1Y2Q2NDkxZSByZWxlYXNlMjYtbWFpbnQKKzY3NTE3IDUzMTQ1N2NmYTNlMjQzZTFmZDMwODU0OTU2ZTU1NjRhNTgxNTU2YmIgcHkzaworNjc1MTggNzFhY2E4NTNiMjQ0MjEwNjZmZDQ5NDcwMzdhMGJmMzUxODBjYTNhZiByZWxlYXNlMzAtbWFpbnQKKzY3NTE5IGU3OTNmYzNjOGFiZTk1ZTMxOThmODQ5MWM1NDljYmViZmU1MTRlYzkgcHkzaworNjc1MjEgZjNjNDg1ZTJiNDUxMzY2NTc4M2RiOTE5Yjk5NGIxOGVhM2MwYmQzZCBsZWdhY3ktdHJ1bmsKKzY3NTIyIDQ4ZjI5ZDg5NGIzY2M3YWZiYWViNGFmNTExMzA4MWE3NjRiZTIzMjkgcHkzaworNjc1MjMgNDI1NjAzNzRhYjI1MWFiYWQzNDczZTNkMGQyODUyMTgzZTM3NzM0OCBweTNrCis2NzUyNCAwN2VmY2UxMDdhYWVmMmU5ZDRlY2I5MWVkMjIwNmMxODY5NDhiNThjIHJlbGVhc2UzMC1tYWludAorNjc1MjUgODU2ZmMzZWEyZGRiODczOTdiY2M0YTM4ODZmYzIwMTM4Yzg1OWYwMyBweTNrCis2NzUyNiA3NTIwN2EwYTllMTU4NDUwZTA1OTk3NWIwMTJiYjdmZDJmNjMxYjFmIHB5M2sKKzY3NTI3IDQ1OGQ3YmMxMjk1MDkxOTc5YWRiNjgyODRlYTExYWY2MTU4NTllMWIgcHkzaworNjc1MjggZThhYjI3NTgyYjE4NDNmMTgyYTA0N2E0NTZlMmUxYzk5Y2Y2NDNjMSBsZWdhY3ktdHJ1bmsKKzY3NTI5IDNlNjUwMDMyYTVkMWNiYjEyMjE0NDJiOWNmZDEyYTcyOGQ0OWMwYWMgcHkzaworNjc1MzAgYzExNWFkNThlYWRmZTlhMGZiZDhiNjk2MzhjMmUxMzJjOTAxMDJmZSBweTNrCis2NzUzMSBmNmU1M2MzMGFlOTZjNWJjMWQzNGEwOTQwNWYwNGZjOTBhMzk2MjYwIGxlZ2FjeS10cnVuaworNjc1MzIgMjMxNjgwMjQ0YzE3YjMyMzBjNWMwYTkzOGNkN2U3YzYzZWJhM2UxMiBsZWdhY3ktdHJ1bmsKKzY3NTMzIDc0YmZlYjM2NGEyM2IzN2ZkYjM5ZDYxMGIxYTA2NWFjOTk4NmZhMDIgcmVsZWFzZTI2LW1haW50Cis2NzUzNCAxMDNjNjhjYzI5ZTVlMmY2NGJiMjlmNTU0OTlhODdjYWNiZTQ0MWFkIHB5M2sKKzY3NTM1IDg5ZTczOGM3OTJjMGJjOGRjMTYxZWZkY2M5NmQ4Y2I2NTNkZjE2YWMgcmVsZWFzZTMwLW1haW50Cis2NzUzNiA0NzkwYjMxZDkyNTc3N2YyZjFjNjY4M2Y1NjRiM2IxYTk1NDFiNzYyIGxlZ2FjeS10cnVuaworNjc1MzcgOWY4ZTUxZmRjZWEwZmJjNjZiY2I4ZDgxZGJkMTg1MWIwZDk4Mjc2NSBsZWdhY3ktdHJ1bmsKKzY3NTM4IGNkNWY1NmE4MWNjZTFkMTY1ZTNkZmJjNWI4YTYwYzgwOTBkMGE5NjQgbGVnYWN5LXRydW5rCis2NzUzOSAzZWNhNWE3MzY1MTYxMGFhOTMxZTNhZGU4YjdhNzNkZjc3ZWIwYjI1IHB5M2sKKzY3NTQwIDI3YmEwOTk1Nzc1MTQzZWJhOTE0NWFkODU3N2IyZjE5MTQyZTBmYzcgcmVsZWFzZTMwLW1haW50Cis2NzU0MSA2OTI5NTYzZGFkMDAzZDY1MWY2MGUzZWExYzk2ODI3NGM0ZDZjYTNmIHB5M2sKKzY3NTQyIDY3ODYwN2NlMTIyZmE4Nzc3YzA0Y2QyNWYwODc3ODVlMzkxMDcyYmQgcmVsZWFzZTMwLW1haW50Cis2NzU0MyA1ODljZGU2MTRiNWJmZTRiYzYxZDZiMDU1YzZjNTIxNGM3ZWJjNjYxIGxlZ2FjeS10cnVuaworNjc1NDQgZGVkOTllNGY2YjNkYmMxMDUyNWU4NjAzMTdiZjhlMDA0YzBkMjU4MCBweTNrCis2NzU0NSBhOWQwMDY3Y2JlYTQ2Mzc1Y2YyMzJmYmI2YmM2MGVlZjk5Y2ViNDMxIHB5M2sKKzY3NTQ3IDU0YzE5YTFiYmFiZDllNWVjOTk1ZTA4MzcwN2QyYzVkM2NhOTI5NDEgcmVsZWFzZTI2LW1haW50Cis2NzU0OCA0ZTEzYjM3YjM3MjNiOTIxNzNkODA4OGM0ODMzOGU3NzFjZDdhNzMyIHB5M2sKKzY3NTQ5IDliYjg2ZjdmYjk0NDc5NWFmOWY5M2ZjMTEwNWI4YjhiOGVjNzk3N2IgcHkzaworNjc1NTAgOGRkMzU2YjE0YjBkN2Q1NmUxMjgzMzc3MTc0MDEzNzliYzliOWQ5OSBweTNrCis2NzU1MSA3MjlkYjk0NjRlZjY4OGFhMzNiYTJjNzljZDZiMTkyOGVhNTcyOGNhIHB5M2sKKzY3NTUyIGJkYjAyZWFkNzU5Yjk3ODNjNmFmMmRiY2UwZTY1Mjg4OWZjNjZmZTQgcHkzaworNjc1NTMgODUxOTBmZjIyNGUwYzQ3MWE2YTE2MmJhZGM5M2M3NTYxZDAwZGJhZCBsZWdhY3ktdHJ1bmsKKzY3NTU0IGMzMTlkMjQ3NGY1N2UwZmNjOGZlNThiYWYwMjEyZjQzZTNjMzExNzAgbGVnYWN5LXRydW5rCis2NzU1NSAyNzk0NmYxZWI4ZmE1NzdlYmUyOGY0NzZkNGNiZTAxOTQ2ZmE1YjYwIHB5M2sKKzY3NTU2IGEwY2VhMDFlY2U1M2NlNmVhZmY2M2E5MTczNTVlMDU2MmU0MDQ4YjkgbGVnYWN5LXRydW5rCis2NzU1NyA3NjU5ODQxZDI3MTRkZWQwZGNmZmY5MmE1MzkyNjdlNGM0NzI0MDIyIGxlZ2FjeS10cnVuaworNjc1NTkgODZkOGE1MjJmNDQwNzNkMTIxMTM2NDIyYTQ2NGU4ZDY0ZThkZGQzZSBweTNrCis2NzU2MCBiNDdiN2Q5YzU5MzYwNmE3YTBhMWNlNjA4NTA3MzdlNzE2MWMwZjEyIHJlbGVhc2UzMC1tYWludAorNjc1NjEgODliYzMxZTA2NDg5MGJmOGE1YzllYTU4NWIyODU1YzZjMWI0ZjA0MiByZWxlYXNlMjYtbWFpbnQKKzY3NTYyIDAxMzcxODk3Y2IxOTAwMzVkNTZiYmY0ZTYzZDIxYjdiY2U1MGM3NGMgcmVsZWFzZTI2LW1haW50Cis2NzU2MyA1ZWY4YjVhNzRlZmEyMWNkYjlkYTU4N2E1YTA0NzUwY2ExMmU5NDNkIHJlbGVhc2UyNi1tYWludAorNjc1NjQgODU5ZjU1MGI0MDAzYWNhMWQyNmZkNGU3Yjg3YmE0MDhjMGRlNGZjNiByZWxlYXNlMjYtbWFpbnQKKzY3NTY1IDNjN2VlZjE4N2JlYTM0ZGFhZDFmZmEzM2QxZWMzOGI0MTU4MmJhMWEgcmVsZWFzZTI2LW1haW50Cis2NzU2NiBmMDhkMTQ0OGI5MGZmNWQ2YzA4NTMwZmU5MGU5OGM4ZmI2M2VhODZmIHJlbGVhc2UyNi1tYWludAorNjc1NjcgNmU1MWZlMWI3ZWQ5ZWE1NDJmYTJjZTZhZTZiMzkxMDRiYzM4ODZlYyByZWxlYXNlMjYtbWFpbnQKKzY3NTY4IGExNzJlYWE0ZDVlYzEwNDk1M2QwYzFkM2RiYTBhZGNlMzc2MjI1MWEgcmVsZWFzZTI2LW1haW50Cis2NzU2OSAxMWJmNTlmZTEwYjkyNDEwN2I3ZGE1MmVjZjUyNjI4MzBhNDNlMTk5IHJlbGVhc2UyNi1tYWludAorNjc1NzAgMmUyNmU4MjE5YWE0MjBjNTRlYjViMDQwZjExMDNhZjVkN2Q3NmZjMyByZWxlYXNlMjYtbWFpbnQKKzY3NTcxIDM2MzZmZTk1NzMyYzEzN2EzMTRiOTdmZmYxYTZlMmZiYzk5ZTIwNTkgbGVnYWN5LXRydW5rCis2NzU3MiAyMGFiMjI2MGRjOTNiYzA3MmRiNDdkYWE5NDI2OTcwNTEzOTFhZTMyIGxlZ2FjeS10cnVuaworNjc1NzMgYzQzNGI3NzE0NzdiZmExYjY0NzhmMWIzOTRjYzQ1MzhiNTQxMzRmMyByZWxlYXNlMjYtbWFpbnQKKzY3NTc0IGIzOGVhYjhjOTkwNGRhN2YyYmRmNzE2YmNiMDE0YjUyZjc4NGNmN2YgbGVnYWN5LXRydW5rCis2NzU3NSAyMGNkOGNmNjEzNzNkOTM1N2QzZWVmOWQzNjRkOGU3NzNmNTBlYzg0IGxlZ2FjeS10cnVuaworNjc1NzYgYzQ5ZDZkN2MxODFlMWYyZjRiOWNkNmVlYmI5ZDRkN2Y3M2I1NTg5YyBsZWdhY3ktdHJ1bmsKKzY3NTc4IDEwMGU0MTYwYWRmYmEyOWYzYmMwMjkyYjQwNjBmY2UwMWNiY2Q3ZDkgcHkzaworNjc1NzkgOTRiNGY4OGU1ZjZiZTQ0NDViNWU0Y2RkMDg0MTBjNzY2NTA0YzFlNCBsZWdhY3ktdHJ1bmsKKzY3NTgwIDAwNzk2NDgwOTgwM2ZmM2NkN2VmMGZhNWU5MjhkMTY3YjAzMjE5ZjEgbGVnYWN5LXRydW5rCis2NzU4MSA5MmNiNmU1ZWI0M2NlNjFmMjU4YTBlMDNjOTgyNjcwNzlkZmMzZGUwIGxlZ2FjeS10cnVuaworNjc1ODMgYTNhYjk1MzQ1YjUyYjI0YzJhOTc1ZWRkMzBiNTgyNDYxNTY4NzI5YiBsZWdhY3ktdHJ1bmsKKzY3NTg0IDA1NTA0NTgyY2VkNjdlZDNmMjgwMjRkOWI2NmM2OWJiZjI1NGNmY2YgbGVnYWN5LXRydW5rCis2NzU4NSBjMDYxODNiMmQwNmY0OTA0MzRkZWVkZDk3MjUxN2FlNGJhMzNjNmY2IHB5M2sKKzY3NTg2IDA5OGRiZDk3MzE0NzdjNWM2NDZiMWY5MmU1YzZkN2I4M2U3MGQ5MDUgcHkzaworNjc1ODcgZmYyMjYzZGUwZDZmNGFiNWJiYzk1NmFjYWE4MWQ2YWU2YTUxZTMwOCBsZWdhY3ktdHJ1bmsKKzY3NTg4IDdhOTJhMTY0ZmMxMmYzYzRkZDAwMDc3NzQyNTJiNmVhYzZmNDI1OWQgcHkzaworNjc1ODkgZGUzMDk0YmIxNDIxZDdkNjdiN2YxZTA0Y2JjMGY0OTdmZjgwZTA0NCByZWxlYXNlMzAtbWFpbnQKKzY3NTkwIDU3YjVjNDYzOWE1ZDIzZjRlY2Y1ZWMxNDNmNDdkYjg2ZWM3ZjYxYWQgbGVnYWN5LXRydW5rCis2NzU5MSBjMDMwMWI1NDMwZDUyNGIzM2MzNDQ0MzI4Zjc1ZjgzMGU2MzMxYWUzIGxlZ2FjeS10cnVuaworNjc1OTIgMjBhMWNjYWRkY2FlZWU3NzYwOGFmNmJhNTBmMDI4YWM3ZmNkMTE0ZiByZWxlYXNlMjYtbWFpbnQKKzY3NTkzIGJiYjEwMWE1ZjhjY2RlNWRlYzU3ZDUzOTAyYjliZmM4NDllMTliZDkgcHkzaworNjc1OTQgNjUxZGZiMzQwNWQyMThmNGJjMTYwNDBiMmQwNmQ5ZjEzZGNhMGZmNSBweTNrCis2NzU5NSA2MjRiOWVhZWRiODBmMDlhYWNiYmZhYTg3Mzg5MDY0MmQxNTZiZDlmIHB5M2sKKzY3NTk2IDI1ZjIyMmJlZmVjNGJkYWVlYjNhNWJjOTVmNTBhODlmYzRhYmNkNTggcHkzaworNjc1OTcgN2YwODIwZDczMjk5MzdhNTA0Mzk3MzE2M2Q1YWVlNzYyMjQ5OGZlOCBsZWdhY3ktdHJ1bmsKKzY3NjAwIDRjOTg0NGNmMmEzZjc4NGUwM2JhMjFhNTYyMTUyM2RlYzMzYzU3MzkgcmVsZWFzZTMwLW1haW50Cis2NzYwMSAxZjJhM2IxM2U4NmQ3YzRiYTg3MDczZTAxOGU2MGNmZDQ3NTNmYjJlIGxlZ2FjeS10cnVuaworNjc2MDIgYWJhMmNlMTYzYjcxOGQxMWFhM2NjNzhiMDc2MmMwODY1MzU0MmM5MiByZWxlYXNlMzAtbWFpbnQKKzY3NjAzIGIwMWRhMjZjNGJmOTQwMGQ3ZTExMDE0NGVmMTc4YmY5NjhmYTY2NTggcHkzaworNjc2MDUgODMyM2YyZGY1NjE3NDc0NmRhNGE1NGNjNmFjNjUzM2JiZTMxOGE3NyBweTNrCis2NzYwNiAyYzc4ZjgxNWUxOTJhYmZmNmUxNDIzNTdmMDQzM2E4N2IxNjA2YTRjIHB5M2sKKzY3NjA3IGFjNDJhOGY3NWY5MjViNzZiOTdmOWJlMGI1YWI3NzRiYmJmODBlNzIgcHkzaworNjc2MDggYTkwNjgyMDNhZmQ1YzAwM2E0MGU1NTQ4MTg2MmM4MDI4MDg2ZjA3ZSBsZWdhY3ktdHJ1bmsKKzY3NjA5IDdjM2FmMzIwMGUzNGI3MjU3NzFiYWM3NTA1MzQ2MzU0NGI2NTk0YzMgcHkzaworNjc2MTAgNjdjZTc0NWE3NDdhODg0NDE2NDRkNjYzY2E5NmY4ODg4OWUzZTQ0YyBweTNrCis2NzYxMSBiYThmZTNhNDBhNWJmNzNkNDUzMjQ2NDJiZDNmNTU2YzY4YWY3MTAwIHB5M2sKKzY3NjEyIDYxOTYzNTQxY2JmNWJkOWZiZjc1MmEyNjYxODk1ZjgxZmM0MTcwYjEgcHkzaworNjc2MTMgZTAwNzNiNzY1MGNjM2NhZTliNzExY2NhMWMwNTVhM2Y0Y2M1NmVlZCByZWxlYXNlMjYtbWFpbnQKKzY3NjE0IGRkNWUxYTA0MmRiYTRmYmEzYzk0MGY3NTVhYTJmN2FmOTM2NmJhOTYgbGVnYWN5LXRydW5rCis2NzYxNSAwYmUxMDM5MTM0N2I5Y2RkMGVmZWM1NzJhZGFmNjZkOTQxOTZjNmQyIHJlbGVhc2UzMC1tYWludAorNjc2MTYgYjEyZDZmNjA2NjE4YWJmZWZkYTQ1N2JjY2NkZjllZjdjNjliOTQ1OSBweTNrCis2NzYxNyBjZTM2Mzg4NzI3YTc4Yjc0NGUyM2RjNzM1NWUzMTNlN2VlOWMzZGRjIHB5M2sKKzY3NjE4IDUyYWQ4YTcyNDcyZTg0NjZjYzM2ZTU3MTc1Y2IxNWVkZDdkNmQ0MjYgcHkzaworNjc2MTkgMTM0OGRjMjQ0Y2EzNGI3YjY1MWI3OTEyZmQ2NmRhMzI1MTA4NjM1OCBsZWdhY3ktdHJ1bmsKKzY3NjIwIDNkZTcyMGNkMTc2NmE1MmUzYWNjYjBiYWVmYTJkYjMxYzAwYjZhZjAgcHkzaworNjc2MjIgNmRhYjI1ODc1MmMxOGIwNGE4N2M2MmI1Yjg4YzllZDlmZjE3MThiYyByZWxlYXNlMjYtbWFpbnQKKzY3NjIzIDE2OTNmZDk0ZDgyOWQxZjEwNzc3MWMzNGQ4OTNiMTExZjhiODVmNjEgcmVsZWFzZTMwLW1haW50Cis2NzYyNCA0YjlhZDNlNzQ4M2UzNWQwMThiNmMzNTFhYjNjMzQ3NTczNWFmMjUwIHJlbGVhc2UzMC1tYWludAorNjc2MjUgZWZmNGFhYjk1ODQ3OTVhMTEwYjIyZDkyMjBjODc3NDI0YmNkNzdiNyByZWxlYXNlMzAtbWFpbnQKKzY3NjI2IGU5ZjkzZTJmOGZiY2E4ZmY5ODU0ZjIwNjc3Y2MxNzk0NzNjYjc4ZmQgcmVsZWFzZTMwLW1haW50Cis2NzYyNyBiMTRmNTg3ZjUxMGU2OTgyMDFhZDAwMDE1MzIyMzliYzgzMmVkYWJlIHJlbGVhc2UzMC1tYWludAorNjc2MjggMGZlNDlhZWMyNTdjYmE0ZWI1NGJkMDM2MTc4ZmEyMDU5MTBjMjU2ZiBsZWdhY3ktdHJ1bmsKKzY3NjI5IDZhYTA5ODVhYmJhOGM2ODRlYzYwOTUxMTM5Yzg1OTgzY2IzNGRhMTIgcmVsZWFzZTI2LW1haW50Cis2NzYzMSA3ODc0Mzc3MTQyZjY0YzFhZDNiNGYwNzU0NDkwMjdjYjU5NDBiYWVlIGxlZ2FjeS10cnVuaworNjc2MzIgNWQwZTkzZjAzOThhM2NmNGMwZmFkNGY5MzJkZDMyN2VkNDlmNGJjZCBweTNrCis2NzYzMyBhZTk4NjgxMDU4YjI0N2NhMzBiNWI0YTQ1ZDU0M2ZmNjhlMTc1NmZmIHJlbGVhc2UyNi1tYWludAorNjc2MzQgZWVjOTI1MmIzZDQ1NDgwMThiYWJkMTkyNzMyMGE2Njk1NDJiMGRiNCByZWxlYXNlMjYtbWFpbnQKKzY3NjM1IGRhYmVkNjlkOGEyYWIyY2QyOGE3MjhhOGRhZDQxNzZhYWFiZjk1ZmUgcHkzaworNjc2MzYgMTcwYTk3NjhlN2FlZWY5NGZlODM4ZGJhNWRiODliOGVkNTI3MjlhZCBweTNrCis2NzYzNyAxNTgwN2UyNjJlYmYwZmE1OGQzOWExMDAxNDdlNjZjZWEyN2YwY2ZlIHB5M2sKKzY3NjM4IGI4YmU5ZDFmMGQ0NTVkMzhhNjhiNzJmNjlkOTVmNTgyOGUxYzE4ZjcgcHkzaworNjc2MzkgMjFhN2U4YzExNzA3MjYyZDExMmM4NWZjYjA4YjFmNjE4NGZkZWMxYSBweTNrCis2NzY0MCAwZDNkZWJjYjhkNDQ5MTQ3MDRkMzNjZGQ0ZTdhOGVlMmZmMGQ4YTAzIHB5M2sKKzY3NjQxIDYwZWU5MDFiNzM1Mjk4ZTgyYWFiODMyZDNkMjgwZGQxNmUwMjliNGQgcHkzaworNjc2NDIgMDI0YTk4OTdjNjUxMGFjZDY2ZjAzYmVhODNkNWFiNmU2OTA3ZmIyMyBweTNrCis2NzY0MyA5MmM3MzQ4M2MxZjdhNWMyMDhmNjJjM2I1YjRiNWYwYjNkZWIzMjM3IHJlbGVhc2UzMC1tYWludAorNjc2NDQgYzdhYmZhYjRkY2RiOTg5ZWM1MjVlY2QzY2E4ZmUyZmViZGE2YjkwOCByZWxlYXNlMzAtbWFpbnQKKzY3NjQ1IDkxNzAwZDIxMjFjODJkM2E4NTUyMTBkNzNlYmU5NGRiNzkxYzU4MjYgcmVsZWFzZTMwLW1haW50Cis2NzY0NiA2M2VlNmEwZjczNTg5OTU0YzcwZWM5MWIwNmViZjlhNDM1ZjhiN2M0IHJlbGVhc2UzMC1tYWludAorNjc2NDcgYTg2Y2RmNDliODIxNDQ2MjNkM2M0ZWRjMDUyOThmZDc4NWZmMzk0OSByZWxlYXNlMzAtbWFpbnQKKzY3NjQ4IDAwOWI0NjZjYzZjYTk0NTJhOGU0ZjZmNzI1MTRkYjcwNzk5YTdkNWYgcmVsZWFzZTMwLW1haW50Cis2NzY0OSBlMDdiYzM3OTg5ODEyNWVmMGE1MjNiYWFlMDRhNDY0MDVlZGNjMmEwIHJlbGVhc2UzMC1tYWludAorNjc2NTAgODIwYzExMmNjMmE4NjVmN2ZiY2M2OTM1OWIyYzExZjhjMGY0N2NkZSBweTNrCis2NzY1MSA3MjUxOTJjNjRjMjg0OTI5NzA4YTQ4OGU1OTI3YTFiZTUxZGM0ODVmIHJlbGVhc2UzMC1tYWludAorNjc2NTMgYzhhYTMxNTRkYjBlMzYyYzg0M2ViOGU2MjhhNTRjMTZmMzRiZWUwMCBweTNrCis2NzY1NCBhOWUzMDI1MGVkMjA2N2ZmZTlhMmI3MzY0ZTIzNThlZTM1N2FjODU5IGxlZ2FjeS10cnVuaworNjc2NTUgOWUxMWM5MmRhNDc2Y2VkNWM4NzM5ZjNhMjEwOGMzYWMzMTVhNzkzYiBweTNrCis2NzY1OCBmNGIxNmMwMmQxZjU5ZTYzZGU1ODZjZTBmZThiOTkzYTBhOThlOGRjIGxlZ2FjeS10cnVuaworNjc2NTkgZGNhNTdjYjBjMjAwMWIwZTNlOTMwNWNmZTE3OGRlYmZmYWJhMGU0OSBsZWdhY3ktdHJ1bmsKKzY3NjYwIDk5ZGQwZDAwNzI1YTU5NWY5ZGRlNWQyYzk2MzFmNmZjNzRjZjk4NzYgcmVsZWFzZTI2LW1haW50Cis2NzY2MSBkY2FjODg1ZDAwZjFkYTlhZjgyYjBjN2I2ODkwNjUzY2FhNmI4ZDM4IHB5M2sKKzY3NjYyIDQ2M2JmYTA3MzA4MTAwYTE5ODY2MTFkZjk0MzQwOWU0MjY5MGZiNGYgcHkzaworNjc2NjMgOGI5ZDA4ZGM4NTAwNDhiMzE2NzQ1MmVkNWQ4MmY0YTAzMDQwYzRmNSBweTNrLWlzc3VlMTcxNworNjc2NjQgMjZhMDlkMzg2NjRhMDFjZjU3NjVhZWQyY2Y0MDI5NTg4OTJiNTIwMSBweTNrLWlzc3VlMTcxNworNjc2NjUgZDA0MGM0MzVhZGU4Yzk4ZGRmNGM1ZjQyZGMyZDhlOTgwOTRmNWIzMSBweTNrLWlzc3VlMTcxNworNjc2NjYgZGM2OTZkZWIyY2YyNmRhMjQwOThkOTY0MGVjN2U5Y2Q3OWRhZmM1NyBsZWdhY3ktdHJ1bmsKKzY3NjY3IDgzZDY0MmEzNDM5YjNlOTlkN2ZkMjg5MjUzNGY3MDMyODU5MWY0MGQgcmVsZWFzZTMwLW1haW50Cis2NzY2OCAzZGFjOTkyODE5NGI3YWI0MmQxMzFmMTU0NWIyMzQ1NmI1ZmZkZTZhIHB5M2staXNzdWUxNzE3Cis2NzY2OSAwOTNlNGZhNTBkODRiNjRkNzJiMjhiZDc2MWU0OTgwODdiY2JhZWJkIHB5M2staXNzdWUxNzE3Cis2NzY3MCAwNWNhZjQ0MGNlOGYwMGIxOTdmOTAzYWNhYzA5ZGEyOGY4N2MxZDY1IHB5M2staXNzdWUxNzE3Cis2NzY3MSAzOGU2MTE2ODQ1NGIyNTZhZmFlOGZmZjFmOTdhZjk3ZWUzMmQwMzY3IHB5M2staXNzdWUxNzE3Cis2NzY3MiBiNzlkMWQ3NmYxOTVhNzFkYmYzNjNhMzY0ZGQ1ODdiMjE4YjU1NzJkIHB5M2staXNzdWUxNzE3Cis2NzY3NiA2MWNiNmM0YWIyMGRiNzQ2ZDM3MTQ3MWQ0ODkzZWIyYmZkZTg4MWJkIGxlZ2FjeS10cnVuaworNjc2NzcgYWQ2NDc3MTY2OTZjNDg4ZGU0YjlmMjFhMzU0N2U0OTE4NjU0NTllNiBsZWdhY3ktdHJ1bmsKKzY3NjgwIGQ0NzBiOWE3ZTllMTg5NmRjMTlkNDZiZjBjMTBkNGUzMmE3YThkNzAgcHkzay1pc3N1ZTE3MTcKKzY3NjgxIDlmYTBhNjVlY2UyM2EyOTFlY2UwOTAxOTdmNTA2NWFmZTMyMDk4ZjQgbGVnYWN5LXRydW5rCis2NzY4MiA0MGY3NTY2MTU1NGRiODA3NDA2NWU5MWM5YzRlZGMxYWNiZDZiYTE0IHB5M2sKKzY3NjgzIGQ5ZTgyOGU4M2QxMjVkZWY3NjIzNWMzZDk4ZDVmNzNhYmVmOGRmNjYgcHkzaworNjc2ODQgNjk0ZDA0ZWQyYjQzZGFjNjU3YWJmNWNjZTgxN2ZmMzVmMDM4N2E5ZiByZWxlYXNlMjUtbWFpbnQKKzY3Njg1IDYyYzg5Y2JmYjUxMWI4NzI1MTY5YjM1ZTQxZjRhYzBjZmQ5YjM3NWUgbGVnYWN5LXRydW5rCis2NzY4NiA5OGFiZTljZGU3Y2U3NzcxYjU2ZjE5NWEyZTRkNzlkMWRlOGE2MWY1IHJlbGVhc2UyNS1tYWludAorNjc2ODcgYTZkZGQ5NDk4M2VhM2QzOGExYzE2NDNiYjEyOWQwN2E1OTY3ZGJkMiByZWxlYXNlMjUtbWFpbnQKKzY3Njg4IDlhMTBkNDQwNGJkMDAyY2Y1MzRhYTFmOTRjYjcyOTc5NWVmMmVkYjEgbGVnYWN5LXRydW5rCis2NzY4OSA0ODIzOWY2MjA5YjA2NGRiZTllMDBiZmI5OTBiMzBiZDc1ODA3NTU4IHB5M2sKKzY3NjkwIDI2NTE4ZDQxYTE4NjhjNDk1YzQ3M2JhNTExMWQ0NTYwMzZkNDk4ZGQgcmVsZWFzZTMwLW1haW50Cis2NzY5MSA1OTY3MGI3Yjc3YTZiNTMwNzc1ZGRjN2Q0MzBjOGU5YTZjNGI0NjBhIHJlbGVhc2UyNi1tYWludAorNjc2OTIgNGFmNWUyYTYwOWFiMzU4ZmM5MDA4ODViZTIxNDk0Y2M5MGEwNWQ1ZSBsZWdhY3ktdHJ1bmsKKzY3NjkzIGIwODlhNTc3N2Q4MDZlNzE3MzkyOGQyNWEzZWMyODFlYWZkNWZiYTMgcmVsZWFzZTI1LW1haW50Cis2NzY5NCBhZTgxOTc1MTAzYjA4OWMyYTAxZWM4MDYwZjhkNGQyYWRiNmRjYTZiIGxlZ2FjeS10cnVuaworNjc2OTUgMjJhYTdkZDBlYTgxYjkxOGE2ZGY2N2U3NGQ2YmYwZTU1YzhhMGZkOCBweTNrCis2NzY5NiAyZjhjMzE3ZGZmMTdlN2Y2YTkyYTgxMzJiZWI0MTcwNWFlZmM2MTdhIHJlbGVhc2UyNi1tYWludAorNjc2OTcgYWJmODE1YjgwYjVkNTU3YTA1MzM2MGIwMzJlNDNkZDEwYWZmYjRlNyBweTNrCis2NzY5OCBmYjI0NTZhMzZhODNhODg1M2UyZTI3NGE4ZjVkNzNlYmJlNjgwOWUyIHJlbGVhc2UzMC1tYWludAorNjc2OTkgZTM1NDY4YmM0ZGY0MTFkZGQzYjhkN2YyZTM3NWJhOGYzMGIyZjllMSByZWxlYXNlMjUtbWFpbnQKKzY3NzAwIDIxZGU3YTkxNDZmNzRhMGM3OGEzM2VjZTBhOGNjOWMwNTBiNGQxMGEgcmVsZWFzZTMwLW1haW50Cis2NzcwMSAwMWMwMjNkOTIxOGViZDk5MzZkYzI2YTQ5YjU3NGQ0NWZkMGI1MWUxIHJlbGVhc2UyNi1tYWludAorNjc3MDIgNzE2Nzk3NTY0NjllOTAxOWQyZWE1MTZkNjcyNGZkOWEyOTkxMzg0MCBweTNrCis2NzcwMyA5YzMxYTk4NzQ0Nzg4YmY2ZmVhM2E2MzU4MTdkODc4N2YyMTUxMzg3IHB5M2sKKzY3NzA0IGU0ZTBmZjdkZGM4NWVjMWUxNTYxOTc2Yjk3ODhlYjVjMTVhMWZmZWEgcmVsZWFzZTMwLW1haW50Cis2NzcwNyAwZGYwZmRmYzhlMWIyYzAzYjEwZTBlMWM4M2ZiOTljNjBmYmM5MDgyIGxlZ2FjeS10cnVuaworNjc3MDggYTI1MjUxNTRlNDRmMjQwZTkwMzU2YWIyYTMxM2ZiNmJmYTFkMTY4NSBweTNrCis2NzcwOSA3NzZhNmNhZmMyMWEzNDgxOTU5MzEzMThlNTc3Y2NjMjZmOTUxOTQyIHJlbGVhc2UyNi1tYWludAorNjc3MTAgMjBhODRlMDYzMDUyNTcyMzJmZjc4NmVmOTI0YmIwM2UwMWZhZTMwOCByZWxlYXNlMzAtbWFpbnQKKzY3NzExIGQ5MWU2Mjg2Mjc2NDUxYmQ3YjJiYzRjOWJhZmZiOGU2YTU2MzcxMzQgcHkzaworNjc3MTIgMjZlNzg5NDIxNjVlMTBmYTY2NjI5MDAzYWI3Y2QwZWFhMGI4YmRlOSByZWxlYXNlMzAtbWFpbnQKKzY3NzEzIDNlMWM0NDlkMTFlMGVhZTAwMmEyZTFlYTRjYjMwYTNiMTg5MTdmMGYgcHkzaworNjc3MTQgZGY2NjQ5OTUxNDEwZWM4M2Q4ZWNkMjY5OTBhYzE4YTJlNDMzZjQzOSByZWxlYXNlMzAtbWFpbnQKKzY3NzE1IDMwMGI5NWZhN2I0ZDNmOWIxZDQ3MTc0MGI0NzNlMThjNjE0YWY4YzEgcHkzaworNjc3MTcgYjQ1NTJlMmZmZDVhNDE4NDUyZDJjMTBjMjU4OGQ4NjY3ZGY0ZjE0ZiBsZWdhY3ktdHJ1bmsKKzY3NzE4IGY5Yjk1Mjk0YWM4NTc3YTg0NjFhOWRlMWE2MjU2MWVlZGU1ODI5YjQgcmVsZWFzZTI2LW1haW50Cis2NzcxOSA1ODU1ZTNlMGU4NWIxNDljNmE4MTFmZjVhM2Y2OTg5Y2RjZGI4MDhmIHB5M2sKKzY3NzIwIGZkZWM1NzY2MTFiZGZhNjM3NWMyNTJjMjNlMDdkOTc5OWRiYjEzZjQgcmVsZWFzZTMwLW1haW50Cis2NzcyMSAzM2ExZTEwMDhlNTQwZmJlNjY1OTgwODllYjk4MThjZTc3MTgyZDJlIHJlbGVhc2UzMC1tYWludAorNjc3MjIgZWVlZjcxZGQzY2NlMDJmOGM2Njk1ODlmMWZkNDk5MDNmMzQ2ZjlhNyByZWxlYXNlMjYtbWFpbnQKKzY3NzI0IDQ2NDZjMzM1MzFkYjMwM2Y5YmJhMTEzOTBhY2RlNjQ2NGJmMGY2YzcgcHkzaworNjc3MjUgMjQ1ZTc4N2I5MGZjMTBlYThmZWQ4MGUzODk1MjkzMDZkZjMxZWMwZiBsZWdhY3ktdHJ1bmsKKzY3NzI2IDYxZDA2NDA5YTY2MDY5M2I0NzhhNjUxNjM0ODhhYWUwYzJiMTE4MDQgcmVsZWFzZTI0LW1haW50Cis2NzcyNyAzM2NkMDY0OTE4NTg1M2VlZjdjMGFhZjFlYzE4N2U4ZGE5OGMwMDViIHJlbGVhc2UyNC1tYWludAorNjc3MjggYTZjM2M3MTVlMmI3MDc0MGM0YjZiNGY3ZGM2ZjQ3YjE2YTdlNTkwNSByZWxlYXNlMjQtbWFpbnQKKzY3NzI5IGZiNWY4YWZmMjNmZDFjY2MxZTYxMmZmYTYzMThhNTg0ZGMzMzZmYjYgcmVsZWFzZTI0LW1haW50Cis2NzczMSAwYjdkY2RiNWNhM2FhYzg5ZTA1M2I2NzkyYTQxYmE5NTI2MzlkNjBiIHJlbGVhc2UyNS1tYWludAorNjc3MzIgMmUyMWNlYTQzNjcwNzFjMjY0OTI1MDM3YzZhMTM3OTJmOGJiNWI4YiByZWxlYXNlMjUtbWFpbnQKKzY3NzMzIDRkMjQyMjk4OTk4MWFlYmNmYzYwMTVhNjcxMjFjMDNhNzYzNjU0MzUgcmVsZWFzZTI1LW1haW50Cis2NzczNCA5Y2FhMWU1ZGQ4MmJkZDAyZTU5NTZjZTJlMzUwOTVkMThjMjE0NDNhIHJlbGVhc2UyNS1tYWludAorNjc3MzUgMWYxYTExNzc2Nzc0MDMzMWU4YjE4MGU1MzAzMWU0M2U4ZTMzZTZiNCByZWxlYXNlMjUtbWFpbnQKKzY3NzM2IDhkOTAyYzUxM2JhMGY4NTlmNTc0MmEyZWU0YWFlZGJjZWIzMjBlYzggcmVsZWFzZTI1LW1haW50Cis2NzczNyA3NmYxODllYTU1MDlmMWIyNDk3YTVkNWQ4Njc3MWU4NTBlMDExNzVkIHJlbGVhc2UyNS1tYWludAorNjc3MzggM2EzMzJiZjA2ZGEwNjllZmE3ODdkZTQ3YmE4Y2VmYWRkMDI1ZmEwNCByZWxlYXNlMjUtbWFpbnQKKzY3NzM5IGU2ZGJhZGFiMDFkOGE4NTAxZjg1YjAzMmNhZjM2M2QzMGI0MmMzNGYgcmVsZWFzZTI1LW1haW50Cis2Nzc0MCA1ZjRmNmI3ZGE4Y2JjYTU3NGZlYmFkOTNkNDM1OGZkZGJhMWVjYWIzIHJlbGVhc2UyNS1tYWludAorNjc3NDEgMTJkZDJjZjVlMGM4MDAyNjUwNWE4M2Q4MTY3MzAxNTU3NDE0NzM0MCByZWxlYXNlMjUtbWFpbnQKKzY3NzQyIDk1MzBkMzM0ZDI2MjQyMTllN2VlMWFlY2FmMzM1MzJlOTEwMjY2YmMgcmVsZWFzZTI1LW1haW50Cis2Nzc0MyA1ODQ2OGZjZGUwNmU5YmY1M2JhNThkNWM0ZjQyZTg5ZTc5YjlhMzUxIHJlbGVhc2UyNS1tYWludAorNjc3NDQgODhjMDhhNjNjYjc0MTU3MGNjMjUwOTZjZWU5MTQ0MWY5YWI2M2YwMyByZWxlYXNlMjQtbWFpbnQKKzY3NzQ1IDZlODBlYzQxMzA5NzNkZTU1ZjUwODczOGEwOWFjOWZjYjMwZDAwNGMgcmVsZWFzZTI1LW1haW50Cis2Nzc0NiBiYjFkOWFlODAyYzMxNTJkMGUzMGIwZGYzZjgzMDk1MDc1OGYxZjBjIGxlZ2FjeS10cnVuaworNjc3NDcgNzQwY2U5YTUyM2ZmYzRhY2M5MTEyMDAyYmM5OTIzNGQ4NmNkNDNlMyBweTNrCis2Nzc0OCBhMDkwYWFiNTc1YzZlZjZjMzIyZDQ5NDc2NzA0ZTI4ZGQ0NWVmOGViIGxlZ2FjeS10cnVuaworNjc3NDkgOWM0MjhkYzNkNmZiNzc4MmUxODA1NzRhYmIzYjM2NTdmMjI4M2FjNCBweTNrCis2Nzc1MCBiNWVmY2EzMDRkMmFmOTFlMWNkMGU2ZTZmYTllMTEwYjBlMDcwMDBkIGxlZ2FjeS10cnVuaworNjc3NTEgZjIwZWI4MDk1MzVlOTFjMGIxNDQxNmNjNTQ0NzM1N2NmY2JiZTk1YyBsZWdhY3ktdHJ1bmsKKzY3NzUyIDQyNjRjZjAwYTc1YzBmZTIwNjJlZDg0NjI3ZjA0ZTQ2ZjM4NzgxOGYgcmVsZWFzZTI2LW1haW50Cis2Nzc1MyBkZDFiOGRhMDFkMDJkMThiZDNkZjdjM2NlZTIyNzU2Mjg4N2M4ODNiIHB5M2sKKzY3NzU0IDI1MjkyN2EyZjMyZDZmZTBmZDBjY2YzOWM1YzczOTJhNzgxN2I1MjMgcmVsZWFzZTMwLW1haW50Cis2Nzc1NSBjYzcyNzIzOWU1MWIxNjQ3MjBmZWU2MjQzZDMxNjU2ZjZkYmYxZWU0IHB5M2sKKzY3NzU5IGViMDcwMDljODY2MDU4MTFlNjkzNWFiYmZlOTgxODkwODYwYTc0ZDMgcHkzaworNjc3NjAgMThmOTZmNjg4M2FmNWQ1MDkyN2U2Yjk3ZDQ2MzMyN2VmMDAyODU4YSByZWxlYXNlMzAtbWFpbnQKKzY3NzYxIDcwMzNiMjg2ODVhMTNiZjQ1NTQ0NWE0MThjOWIwYzViOTY0MDA1YWMgbGVnYWN5LXRydW5rCis2Nzc2MiBiMDk1MTc4YzA0OTI4YTM0NmMwMmI4YTQ3NDA0NzA0Yjc4MmJiNjcxIGxlZ2FjeS10cnVuaworNjc3NjMgMThiY2UyZjJhN2M1NmJhZDRjYjM2NGY2ZjFiMGRjNjdjYzc2MWRhOSBweTNrCis2Nzc2NCBkMTU3NDZhYmY2Yzc4M2M2MjJhZmU0YmQyMzk5MDAyZGM1Mzg3YzI0IHJlbGVhc2UyNi1tYWludAorNjc3NzcgNTc1Zjk3M2ZmMjQ0MzNlMTUyZTg4YTQzNGM0YzhhNjc0NTI0ZDI1MCBsZWdhY3ktdHJ1bmsKKzY3Nzc5IDcyYTdhYzIxOGVhMzI4M2NkMWQ0YjEzYjhlZmQzMmY5YmFmYWIyZDcgbGVnYWN5LXRydW5rCis2Nzc4MCA5NmFiMDhlZDk1YTQwMmFkN2Y5ZmJkNmFkYTFjNDIxN2IwOTgxNjFkIHB5M2sKKzY3NzgxIDRkYjY2YzIwY2E2OGU1YTE4YTI2NjZkNWRmYTZkNjlkODc1MGJhNmIgcHkzaworNjc3ODIgZWE5YzYwMjZhZTdlYTI0NjJjZjNhZmNlZWJiNTU4NTc2OTFiODAwMSBweTNrCis2Nzc4MyBhZDk4MmMyNmMzZGQ1ZjRkNzc5YTY1OTFhOWU3NDZiN2M1Y2U4NjQ3IHB5M2sKKzY3Nzg0IGUzNmJlMWVjNzI5NjVjMDBlNmIwYTZmYTA3ZDMwOGM3YWEzZmZlNGYgbGVnYWN5LXRydW5rCis2Nzc4NSA5ZTlmY2E5NGQyODYyMTY4ZjE0MDY5OGZhN2NiNzI0MTA3ZDY3NmFkIGxlZ2FjeS10cnVuaworNjc3ODYgMzMzNmU0Yjc3YTA0MTJlYWU4N2FhMzJmYTNmMGZjNDIwZmVhZjU4YSBweTNrCis2Nzc4NyBkYzZmOTc0ZmI3ZDRmODMyNDM1ZDA2MTljMzU3NzRmODdmMjc1NWUwIGxlZ2FjeS10cnVuaworNjc3ODggMWFmMmI4YjBhZDg4Y2I5NDc5Y2I0N2RhYmNhZGI1ZjUyNmM3MjhiNiBsZWdhY3ktdHJ1bmsKKzY3Nzg5IGRhY2FhMWY0NDE5ZDcwM2M2ODY1ODZjMmFkOWU3NjdlOGUyZTc2NTMgcHkzaworNjc3OTAgYWI1MWMxNTA5YmMwNGE0NmJmOWE1NDMyOWNhMWNiZGFhMjk4YmNmMSBsZWdhY3ktdHJ1bmsKKzY3NzkxIGVkZDcyNDM3Y2VjM2YzNTdiMjBlYmEwZjQwMDEzZjdlN2U5MTZkMmIgcmVsZWFzZTI2LW1haW50Cis2Nzc5MiA3ZGFiODgwNzBiYzdkZmFkMDg5NTA3MDRlMjkyZDdkMjE1YTc1ODViIHB5M2sKKzY3NzkzIGViMjg3NmFlMDQ3Njk2MGZlNDc2NTRlMmU5MGYzMmIyMzIxN2I1OTMgcmVsZWFzZTMwLW1haW50Cis2Nzc5NCAyMGYxNWMwZjIxZjg4YTlhZjg4NWI3YzA1YzJmMDgwYmU3MzA5NGI3IHB5M2sKKzY3Nzk1IDQ4MDU3NDVkNTU5OTM3N2JmOGI5YzM1YjYzNDVjMGNiY2M1NGE4YmMgcmVsZWFzZTMwLW1haW50Cis2Nzc5NiAyOTk2ODM5NWY5MjA1MzY4OTU4MGRiYTY5YmRkYWVjYWJmZDc1YzdhIHJlbGVhc2UyNi1tYWludAorNjc3OTcgMTRjZDU4ODU0NGZhMWIxYzlhMzU5NWIzMmI4MWExOGUzZmFhNjFkZSBsZWdhY3ktdHJ1bmsKKzY3Nzk4IGQ1MGRhZDJiMjc1MDQyYWRlYWYzMDlhOTU2YjNhZThiMjQ3MDAxMjQgcHkzaworNjc4MDEgOTU0MWEyZWNjNGZiYmNlZTRmYzhlNjI4NjdlNGY4ZTgwYWZhZDA2ZiByZWxlYXNlMjYtbWFpbnQKKzY3ODAyIGI3ZDlhZGM0YzM0Mzc5NmJhZTNjODc4MGFhYjgyOGVjODM3NGIxZTcgbGVnYWN5LXRydW5rCis2NzgwMyAyMmZmOWE0NjI5ODc1NWRlNTg3YjU5NmE5YTRjN2NlMzM0MWJhOTk2IHB5M2sKKzY3ODA0IGExNzViMTliNGJmMmNlOTg0MTBlNjFmMjc5OWYyZGVhYTdmNDdmNjkgcmVsZWFzZTMwLW1haW50Cis2NzgwNiA4YzQyNGYxMTZmYjhkMGVkNzVkN2E5YjJlNGMyNmViN2ZiYzc4Yzg5IGxlZ2FjeS10cnVuaworNjc4MDcgMjFkMzM1N2RjYmVjNDFmYzZmZTAwYzA0OTg1MTE4YWM4OTBmYjEzNiByZWxlYXNlMjYtbWFpbnQKKzY3ODEwIGE0M2E2ZGYxOGJhNGJjNjg5YzIyMThkZDA0NjAwMTcxYTJjOGM3NmMgcHkzaworNjc4MTEgYWVmMDczMGRmOWJhMzI3YThlMTVkMzcyYWU3MzdkZmI2ZWM0MmU2ZiByZWxlYXNlMzAtbWFpbnQKKzY3ODEzIDY4OTg3ZTkzMTE5M2ZhZjY5ZDJiYWJkMTA0MDU3MDY4NzU0MjhiM2YgcmVsZWFzZTI0LW1haW50Cis2NzgxNCAwNzQwN2RlMTgzOTQ4ODNlNGZkZDQ2Y2M5Y2Y0ZDlkMTZkY2FmNDUxIHB5M2sKKzY3ODE1IGQwNmIwNGM1N2I1MzYxODAxOGY3MWJiZWFkOTUwOWNiZTBjMzU1MDggcmVsZWFzZTMwLW1haW50Cis2NzgxOCA5NGU3OWQ3OGRmZjBkZmI1YzUzZjQ5ODQyYzdkZjY1YWQ1Yjc5ZTY2IGxlZ2FjeS10cnVuaworNjc4MjIgZjBkYjA2ZjQ5YTRlMzBlNDk2NjYyNTFmNjQ4Y2U5NWU3MDllMTU2OSBsZWdhY3ktdHJ1bmsKKzY3ODIzIDMzNjY4NjQ4MTQ0NjYwMDBmNzhhZDk3NWI4YzdkZWJiOGEyMzhlNjcgcHkzaworNjc4MjQgOTJlMjE2NTJmMmY0ZDMyZGJiY2Y2YzVhYjM5ZGQ0YmMwMTI2ZGMyNyBweTNrCis2NzgyNSBjYmJlMjU4ODY2NDg3YTQwNjBlZGZhNTJjOGQzOTYwYTFhYzY1NDJkIHJlbGVhc2UyNS1tYWludAorNjc4MzIgZmM5NzI5YzgwYjc5MWE3Y2JjZTdhNmI5YzQ2OWFhY2E1MjI4YTg4NCBsZWdhY3ktdHJ1bmsKKzY3ODM0IDE4OWI0NjJlZTlkNGYyNWJmYzJkMDMwYjY5MTg0YTA5MDhkNzcyMjQgcHkzaworNjc4MzkgMmVlNDY1MzkyN2Y3MmY5YmIzZmYxNGIzMDgzZDRhMjAzZDY4NGRmYyBweTNrCis2Nzg0MCBkYWY2ZDNhZjQwYzRiOTM5ZGQxZGNmMTVhNzc3OTVmY2Y2NzM2ZjdjIHB5M2sKKzY3ODQxIDAwMWEyNTE1ZDU3YjAxODhhNGFjNDViZTlhOGM2ZjRjN2VhZjI0ZmUgcHkzaworNjc4NDIgYWViZjcxMjRkZDMyMmE4ZmI1NTk0ZDQ2ZTlhNjUxZGJlNWI2YTkxZiByZWxlYXNlMzAtbWFpbnQKKzY3ODQzIDgyZTZmZTM3MDc4MjlmNjZmNGQ0ZmQwYzhhMzVhMDNkYzUzMGRjYmEgcHkzaworNjc4NDQgMjRiODBiNzk3OGVjMjE5NGM0ZmM3ZTExMDBhYTQwYjFhZmUxMWY3MyBsZWdhY3ktdHJ1bmsKKzY3ODQ1IDU2YjdlYmYxMmVhM2FkZmQ5MDMyNDYwNmUwZGIxN2NjZjY5NDgzNTggcmVsZWFzZTI2LW1haW50Cis2Nzg0NiA0N2VjYmUyZDNlZWZiYzUzYzc1YmJjMWE2ZWRlNzNkY2UzNDk0ZDk2IHB5M2sKKzY3ODQ3IGJmMjBjMzg0YmU1NjM5YWVhMDUwZTgwMmFjZTg0MTNjMGM4Y2JiM2UgcmVsZWFzZTMwLW1haW50Cis2Nzg0OCA2ZmE1Zjk2OWVmZTY0N2EyM2Y4ZjJhMWI0NjIyZmQ1NWMzMmViOGZjIGxlZ2FjeS10cnVuaworNjc4NDkgNWU4MzkyOWY3ZWViNjFkNmUwMDliYjFmNDY3OTYyMzgxZWVkNWVmYSBsZWdhY3ktdHJ1bmsKKzY3ODUwIDlhMTg5MDk4MjQ4OWU1NDY5OTcyNDAwYzYzNzlmNGIyOTE5OTE5ZjQgbGVnYWN5LXRydW5rCis2Nzg1MSAwZGI5MDdhNzA3MjM2MDlhYjFhODcwNWRhN2YwYjczOWY2MTZkZTA3IHB5M2sKKzY3ODUyIGYzZjFmMTQ2MmM4MjUzNmJiMjM3OTZlNzBjODU1MjIxNDRlZTI0ZGIgcmVsZWFzZTI0LW1haW50Cis2Nzg1MyA0OGYyNzM3MzM3OTU2ZWUxNWUzOTEwZDc4M2YyZWY3NDI0OWIwNjM5IHJlbGVhc2UyNC1tYWludAorNjc4NTQgNjA4ODU2YTdlNTY4Yjg2ZTUxNjNlYTZhODdlYjAxNjcyODhiYzY2OCByZWxlYXNlMjUtbWFpbnQKKzY3ODU1IDNjYzA1NmQyMWMyZjQ0MzVhNTM0ZDIzMzQ1YmFkOWMwYTlkOWIzY2IgcmVsZWFzZTI1LW1haW50Cis2Nzg1NiBiNTYyMzEyMjQ3MjhhYmYyY2IzZWFhM2I0N2FmZDc4MDlmODVkYjkzIHJlbGVhc2UyNS1tYWludAorNjc4NTcgNDk2ZGZmNDdiYzdlZjZmYzFhNmUxNzQyMjQ3NTk5ZjJjOWQ4ZGJiMyBsZWdhY3ktdHJ1bmsKKzY3ODU4IDliZGViMGJlMWRhZDRkYzhiMGYxOWQ2MWM2NmRmODk5ZTYzZTlkZmQgcHkzaworNjc4NTkgMWM5NGU3OThjODViMWE2MTM5NDg4MjdhMDA5YzZhYmJjMzBjZjRmOCBsZWdhY3ktdHJ1bmsKKzY3ODYwIDQyOGY2YzRlODQ0NjIxMGRjMTM5NWE2ZjAxYWNjZTVkOGI2NTY4ZTcgcHkzaworNjc4NjEgZDAyODJhMjkyYjBhYThjMjUyNTFjY2U0MGM5ZDc4N2QyOGY2MGNiMyByZWxlYXNlMzAtbWFpbnQKKzY3ODYyIDlmYjJhMjNlYWM0MzVhMmJkMGQ2ZjI5NGE1YmYwNWI5ZDQ4YTYzZDcgbGVnYWN5LXRydW5rCis2Nzg2MyAwNjQ3OTQ4YmU4NDBlZmQzYmU4OWFlMDg4ZGFhMjVhNTVlNDlhMWJiIGxlZ2FjeS10cnVuaworNjc4NjQgNjcwMjA0Y2YyM2UyMjU2ZDJiZGNkNDIyMjFmN2EwYWM0ZmNiNTZiZiBsZWdhY3ktdHJ1bmsKKzY3ODY1IGE3NjU2MThjN2U5NDRmM2UwNzBhNjUyNGRmZmFjOGVlNmE0M2EyZTMgcHkzaworNjc4NjYgNDYyNzljZWJlYTljZjE0M2NjYjkwYzQ5MzczMzY1Y2VhZTBhNzcxZiByZWxlYXNlMjQtbWFpbnQKKzY3ODY3IDc3M2FmMTg2MDhlM2E2MmE0MDllOTMzZGI0ODA4ZjAzYmFlMGQxZWUgcmVsZWFzZTI1LW1haW50Cis2Nzg2OCBlZGIyZWVmYjY4NTZmNmZiMGYzMTE5ZDU4YmQ5MjQ0ODllMDExNDE0IHJlbGVhc2UyNi1tYWludAorNjc4NjkgNzhmYzA5NmU1MDg1Mjk4ZmQwMTFhNTMxZDY1MmRlNDk3YjlmMjMyNSBweTNrLWlzc3VlMTcxNworNjc4NzAgN2ZlNzJhZTE5YWIyOTBhMzRjNDgzMTNkYjBlMTBlYWZhMWVlNjM4NiBweTNrLWlzc3VlMTcxNworNjc4NzEgNDViZWE1ODQ2OTRlMzUwY2YyYjkxMjQxNWJkYzY4MWE1YWQyMjE2MiBweTNrCis2Nzg3MiBlZTljOWNjMDI4Y2UxNTkxOTU3ZTdjOGQ3MTAxNmUzZDJiZmZlZWY1IHB5M2staXNzdWUxNzE3Cis2Nzg3MyBhZDI0NmNiNGY2NjJlMjExYzQ3MDFmZTNiOWZkY2I2MzljOTk0MDgwIHJlbGVhc2UzMC1tYWludAorNjc4NzQgNmUzZTU4MmZlM2YzODhlZDhiMDI3Y2FiNWU2Y2NiNGQ2ZTU3MmFhNyBweTNrLWlzc3VlMTcxNworNjc4NzUgMGMwYjlhYmI1ODQyNmRkOGE2N2Q4MGQ0NmM1OTdmYmQ0ZmY3MWJjOCBweTNrLWlzc3VlMTcxNworNjc4NzYgOGJiOWE4NTQ2MzliNjkwNWUwMzlkZWY4M2EzYmE1YTcyZGFkMTExYiBweTNrLWlzc3VlMTcxNworNjc4NzcgZmI5OTNmMDkzY2JmNDNiZGQxYzJiYmM0ZDYxNzUzNDM4YWJjZmJjNyBweTNrLWlzc3VlMTcxNworNjc4NzggYTY1NGYxZTFiZTIzMWZkMzNiODkwOTE1ZWE1MzY4ODViZDdjN2NhMCBweTNrLWlzc3VlMTcxNworNjc4NzkgMGRjYTJiNDU3Nzc1ZDQ3MjVkZDQ4MjAyZjVmNWY2N2RhODhmNzA5ZCBweTNrLWlzc3VlMTcxNworNjc4ODAgNTg5ZWRmNjE1YWRiNzI2MmRmOWNhM2JhNzNmYWU1ZDMxNzMxOGE2NiBsZWdhY3ktdHJ1bmsKKzY3ODgxIGE3YjM1N2Y5ZThhNDhlYWQ2MmVkNjFhZjlhOGM1OGM2Y2Y5ZTcyOTcgcHkzaworNjc4ODIgYzRmZmZhMDk3MmUzNjhlMGQ3Mzk5NWJmYzg2OThjZjZhOWNiMzNkOCBsZWdhY3ktdHJ1bmsKKzY3ODg0IDFkOTYxZmU1NGE2ZjlkM2MxOTQxMDY3YTEzMjcyNmJmZjU1ZTFkYzMgcHkzaworNjc4ODUgZjMzZGNmN2U2ZTFjM2VkOTQ1ZWJiOWI5YmIyYzgzZjgxNzcyNjhhMiBsZWdhY3ktdHJ1bmsKKzY3ODg2IDAxYjgwNzUzNzkxNTY1MWJjMTQzYmQxMDMyMzcxNTQwMWMwOGE4ZTggcHkzaworNjc4ODcgZTg3YTI1NjExODhiNTMzNTIzMWZkNmViYWJjN2IzMmExYmZmOWIxMCBweTNrCis2Nzg4OCAxYWRmYWJjYmUwNzMxN2ZhZDVkZmZkYWRlZWI1NjBiMGFkNmJiODE0IHJlbGVhc2UzMC1tYWludAorNjc4ODkgM2FiMTAyZDljZjU2MDZhNzQ5NjgzMzZjMTkzYjExMWIyNjdhYjBjMyBsZWdhY3ktdHJ1bmsKKzY3ODkwIGFmNTZlM2YxNGViNzRiMzBkMzk3M2Q1YmRjZTEyMjA3ZWIxNDg3YTEgbGVnYWN5LXRydW5rCis2Nzg5MSA1Mjk0YjIxNGUxYmU5OGU3OTc5YmJkZjk4MTM1MzQ2MGM2ZjY5YmRmIGxlZ2FjeS10cnVuaworNjc4OTIgNGZkYTRmNTQ1Zjc5MDY5MDEzMzI1MTM1NmFkOTJkODJiODUzNGJiYyBsZWdhY3ktdHJ1bmsKKzY3ODkzIDExNjY3NjEwZTlmNTZhNzNlOGI2ODdmMDk5ZGVlMTY3YTY3MWY5OTggcmVsZWFzZTI2LW1haW50Cis2Nzg5NCA1MDJmNjFkMWZiYWY0YjUxZWMwM2RlZWI3OTg1YzVmOGYxNTNlOTI4IHB5M2staXNzdWUxNzE3Cis2Nzg5NSAxYmY3MjdlMmIwOGZkZTRlMGNhYjg2NTM4MDE2NjM0ODE5YjIwYmYzIGxlZ2FjeS10cnVuaworNjc4OTYgZTQ2NzUxMTNkMTBlZmE3MzljNWQ4YWMzMmUzMmI0ZWRiYTUzZTAzZiByZWxlYXNlMjYtbWFpbnQKKzY3ODk4IGRlN2JiYzRkMGIxZDE3MjVmMjI5MjEyMGU0Mzc5N2U0NGU2OTMyNjAgbGVnYWN5LXRydW5rCis2NzkwMiBkNzlmZGQ4NDIwZjM2ZWM4NWRiZjY0MmZhYjcwZDlhYTBkMjM5Y2ExIGxlZ2FjeS10cnVuaworNjc5MDMgYzNiOTc1OTlkN2ExOTc0ZDFmMjg4NWU5N2Q2MTQ4MTVkYTAzN2IxOCBweTNrCis2NzkwNCAwMzc5OWJiNDQ3NzIyODNkODEwZTYyMWUzOWVlZWViOWUzOGMwN2EyIGxlZ2FjeS10cnVuaworNjc5MDUgYmQzYzVkZTRjYzU0MWJmMDlkYjUxMzlhNjdlNDc3NTdiNTBlMmMyYiBsZWdhY3ktdHJ1bmsKKzY3OTA2IDI0MTAyN2IyNGI0NWQ5NDMwYWMxZTgxOTE0MTMxNTQ0NDNiOWQ5ZjUgbGVnYWN5LXRydW5rCis2NzkwNyA5NGMwNTQ2NjMwNmUyMWYzMjA2MjNiMDFkMGJmMjlmMjNhZTk1YWU3IGxlZ2FjeS10cnVuaworNjc5MDggNGJkZWNhYTRlY2FiMmI2YzQ1NjFkYzRlNjY1NjM2NTk3NmQ3NDNjMSBsZWdhY3ktdHJ1bmsKKzY3OTA5IDNhMjU5YTFlMWQ5YzVlMDkxOTg3YTFlZjk0NjNlOWQ2Y2U1MDU4M2YgcmVsZWFzZTI2LW1haW50Cis2NzkxMCBhYzg4YjM0MzIwNjYwYjBkOTVlMDg4Mjc3MDdhNzI4MDFlNTkxNWZlIHB5M2sKKzY3OTExIDM5NjUzMTRiYjkyMmMyNzY1YzU3YmM1MTAxMDAwOWRlOTdhMmI2M2QgcmVsZWFzZTMwLW1haW50Cis2NzkxMiAzMTMyZWQxMmVjMTAwNmMzN2JiYzIzZWRjZjUyYmJmNzg0YzVjNWUzIGxlZ2FjeS10cnVuaworNjc5MTMgMDVlMDEwNTE1YzRiYzU3MTAyMzBkYzQ2NDI3NTk1NDgzYTZjYjUyZSByZWxlYXNlMjUtbWFpbnQKKzY3OTE0IDBmOWE3ZWRiOGU1OGM4ODFlM2Q1NjUwMjI0NTAzOTk0ZTY4ZDI5MWMgcmVsZWFzZTI1LW1haW50Cis2NzkxNSBhYTQ1YTE3NzNmNmUwY2U0YTQ3ODdkZjVlMmU1Zjg0NmZkYjE0NGVlIHJlbGVhc2UyNS1tYWludAorNjc5MTYgYTBhNmQ5OTA5MzEyYWQ5YzFkODQ0YWY2NmU5YzkxOTMxYjkzODUyYSByZWxlYXNlMjUtbWFpbnQKKzY3OTE3IGM3NGZkNzUxODdkOTA0ODkxZTIwNDdmNzdiNTQzMjllY2VjZjM1MWEgcmVsZWFzZTI1LW1haW50Cis2NzkxOCA3OTI5NTY0MWZjZjBiZTVkN2M1MjZmMmZmZmMyMzhmNmFmZDFlNDVkIGxlZ2FjeS10cnVuaworNjc5MjAgODc1MTI4OGRkZDk2MWM2Mzg4YWJmYjE0NTE5ZTNiYmI0YzRjNzc0OSBsZWdhY3ktdHJ1bmsKKzY3OTIxIDEwMDk3YmQ2NTU2NGYwZGJkY2QwZmQxNjhlNmRlZWUyZDY5NzMzZTMgbGVnYWN5LXRydW5rCis2NzkyMyAwNjlkOTVkZWVhOTE1NGUyYTMyMDUxMGU5NGJiN2Y3MTRjNjYyNDY4IGxlZ2FjeS10cnVuaworNjc5MjQgZWZkNDAwM2VlOGVhNWFhMzQ1MDI3NjBhN2VhMjk2MDQ3MTAyOTQ5OCBsZWdhY3ktdHJ1bmsKKzY3OTI1IDUwMjc5MjYzODAxYjVjZmQyNGRlOGI5ZWE4NDI5NDcwZTM4YWVmNTggcHkzaworNjc5MjYgZjZjZDFhN2EzMWJiODY0Nzc1YmE0ODNlOTY0ZGZkNGMzN2UwODc0MCBsZWdhY3ktdHJ1bmsKKzY3OTI3IDExMmJhM2RmODUxZDJmZjYzOTBlYTJlNGE4MWMxODE1ODhlZWE0ZTIgbGVnYWN5LXRydW5rCis2NzkyOSAwYzg1MmMxMTZlMjM1ZGYwNWUxYmRjYmRhZTI1MDViNTg0OGJjMjRlIHB5M2sKKzY3OTMwIDkyYmMxNGU4YjM3ZTZhYzNkNDVlMDhhNGIwYzlhNTZiYjQ3ZWRhYmQgbGVnYWN5LXRydW5rCis2NzkzMSBjM2I0M2NiNjcwM2M2MmY2NjcwY2ZiZTU2ZThjMTY5NzQ5NGNmMWRkIHB5M2sKKzY3OTMyIGY4NTlkODI0MzY5ZWE5ZmIwNWVmZWRiMjg3OTJjMjIzMDhhNzhmMWEgbGVnYWN5LXRydW5rCis2NzkzMyBhZGI5YjU0N2M3ZmU4M2E1OGY1NzZhZTQ1NzMyMTg0NjA4Yzg5ZTdmIHB5M2sKKzY3OTM0IGY2YWU3Y2M5ZTJlODVkNzc2YTE0NDc1ZWIxMGE4Yjc1YTQ0ZDkwNzIgbGVnYWN5LXRydW5rCis2NzkzNSA2OTlmZGQ4MjE3ZjNiYTgyZDI5MmFkYTAyMWRiMjFkZGVkNjI4ZGQwIGxlZ2FjeS10cnVuaworNjc5MzYgZDI3MDI0NzU1NTkzYjhmNzkyMTBjM2I5YmMzMTY1ZWE4NmVmNmY5NSByZWxlYXNlMjYtbWFpbnQKKzY3OTM3IDMwM2FkNDVhOTY3ZmM1MWVlNzY1MTQwOWVkNGExNjc2YmRkNmUzNzIgcHkzaworNjc5MzggNjY1YzRhYzQ3MDczZTczZjg5ZGQ4MzIwMWZkOWQ2OGJiYWMzYzNjOCBweTNrCis2NzkzOSBkYjUwZGMwMDYxZWRlYjNiNWMwNjJkMDFjZTE3MzljNzRhOWUyYzJmIHB5M2sKKzY3OTQwIDJlNTMyNjJjNTVlYTY3ZWNhZWEyZGUzYWJkMjdhNjczOGQ3ZTc1ZjggcHkzaworNjc5NDEgMTEzNzUxYTg5OTBjOTQ4NzJkOWI3ZGE3NWIxZmE0NzhmMTQ5OWNjNCBweTNrCis2Nzk0MiA0MDhhOWZmNGY4YjJjODFlMzZiNmUzOTMzNTEyYmQ4ZmQ3YzllYzQ4IHB5M2sKKzY3OTQzIDdiMWQwY2VhOTg3MDY0ODI1MDdkZDAzMDdhNmI4MmUxOTVlZjNiZWUgbGVnYWN5LXRydW5rCis2Nzk0NCBmYjE1MGZjZjE2NWQwZmE2M2EyZjM0ZTE3ZmM2MWY4YTRiNmI2NWE4IHJlbGVhc2UyNi1tYWludAorNjc5NDUgNGJkZjllMzQyMjkxYTY0ZTVkZjllNzhmM2QzOTM5NDA1YWM2MjVjYSBweTNrCis2Nzk0NiA5NGY5OTZiYzY0YjNiZjg0ODZmMmI1NjcxM2EyNDlmODdiYWIwZWZjIGxlZ2FjeS10cnVuaworNjc5NDcgZmVjNzJjOWIyNzFkODk2NDUyNTRjYjZiMDVlNTI5MTBkZTk0MWE3OSBweTNrCis2Nzk0OCBhZDc0NDdhMTY1YmJmYWI1YzAyNjJmYWZkMTNiNzk1MDY1OTIzMGEwIHB5M2sKKzY3OTQ5IDFlMTIxNDQxMDM3NWFhZGVlMWNlNjMwZDRhOWI5NmNmZjVlMDljYjMgcHkzaworNjc5NTAgZDI4MWViZjhlYTMwZjQ2OTU0YzEyYThjOGJjNmE0ZWE3Nzc5NzY3MCBweTNrCis2Nzk1MSBlNjczNjMyZTE4ODU2NTNjMGZlNmE0ZTExY2U1NjFlY2QzN2U4ZTlkIHJlbGVhc2UyNi1tYWludAorNjc5NTIgNDFkN2Q4ZjA4NTJiMjg0NzljZDViZWE0ZGRkZDE0ODg5OGU4N2YyYyBsZWdhY3ktdHJ1bmsKKzY3OTUzIGUyYmJiYzA2ZDkyYzgyNjFmZjNhYzdiYTVhOWY1NTBhZTY2MjQ3YmMgbGVnYWN5LXRydW5rCis2Nzk1NCA5M2RhOWYxNGU1YjU4YmRhNWYyMjkzMzMzMjc0MzQwYzVkZTY1Y2FiIGxlZ2FjeS10cnVuaworNjc5NTUgYWZmNmU5ZGRkZDlmODI5ZDY1ZTRlYmYzYmFjOTYzZDEwMjFlNzFiYSBsZWdhY3ktdHJ1bmsKKzY3OTU2IDM5OTFmMzdlYmNhMzFjY2M3NzEzZDYyMDZlYjhlZDFjMDk4NTg0ZTEgcHkzaworNjc5NTcgNzViNGUzMjM0MGE4YWIxMGIxYmNiNjA1ZjU1NDdjNDkyZmRlY2UwZSBsZWdhY3ktdHJ1bmsKKzY3OTU4IDFiODg5MzJkZWZkYjI4YjRkNzk5YjJlNzhiN2M5ZjFlNGQzMWViZjEgbGVnYWN5LXRydW5rCis2Nzk1OSBiY2RmZGMzNjk1NzA4NTBhMjNhN2ZiMTE0ZmE1YzQxYzc4NjQ1NWYzIHB5M2sKKzY3OTYwIGEyOGY5ZTc1MGI2NDgzM2VmYzkzZWJmNjk5ZGY2MmUxNjI4ZDM1ZmEgbGVnYWN5LXRydW5rCis2Nzk2MSBlOWEwZGU0OGI3NDc4NGQwNTAzNzE0ODExNTg2NjEwZDkwOWNiOTM1IGxlZ2FjeS10cnVuaworNjc5NjIgMDI0MzBlNDRkNTBlY2RlZWJkMWZhZTA5ZGFhZWQ5MDE1OTE5ODdmYiBweTNrCis2Nzk2MyBmYmZhMWQ2NzI0ZGU4YzIxYTAyMDBkNmUwY2YzNmI4MDllY2YzNWE2IGxlZ2FjeS10cnVuaworNjc5NjQgMWVmYTEzMDRkZmIzMjUwOTVhZjI1MTQ1NGRhZTNiM2I2M2U3MzRiNiBweTNrCis2Nzk2NSBhOWU1YWM0ZjA5MWNkNWRjM2Y2N2E4YWUwYTA0ZDJjZDkwNWIxODA3IGxlZ2FjeS10cnVuaworNjc5NjYgYTY0OTg4NGM3OWE4MTQ2OGE2YmIzYmNjNTQyNDMwYTBhYmEyNDA2ZiBweTNrCis2Nzk2NyBjYjM1MjRiNjQwN2Y2ZTM4Y2VmNTk1NzI1OGRhZDcwYjhlNzkyYzQyIGxlZ2FjeS10cnVuaworNjc5NjggZWE4N2NjMDY4YzU2ZjQ4YTA5NTk1OWNmODQ1ZGY1YjliMTRkYzUyMSBweTNrCis2Nzk2OSA4YmZiNDY2NDE0YWM5YjU3NDY3NzQwMWVjNWYyODExNDEyM2E5ODAzIHB5M2sKKzY3OTcwIDAyN2E2ZjNhYzg3NDc3YzVlYzk0MzY2NDIxNDE5NzQxY2RmMDYzYWYgbGVnYWN5LXRydW5rCis2Nzk3MSA1ZWMzZTNkNTRhYTY1YWYyNjM4MDRmZTUyMTU1NzgyNzU0OTUwOGEyIGxlZ2FjeS10cnVuaworNjc5NzIgYTRhODlkM2U0MWFmNTljNGI1NGNlYTE4N2E3OGIyOTZjYzcyZTAzOSBweTNrCis2Nzk3MyBkYjBkZGNlMjhkMGY4MjczNGZhNmQ2ODk0MGZkZWI3ZmVkMzU5YWMzIGxlZ2FjeS10cnVuaworNjc5NzQgN2EwMTE2ODBlMTUxYmEyZTIzZTIxN2YxYzAzMTI4OTQ3ZTJhMTNkNSBweTNrCis2Nzk3NSA0NDIwNzhmMDc5YWEwMjUxMWE3YzI0YTg4Y2UxNmU5YzViM2RmYmExIHJlbGVhc2UzMC1tYWludAorNjc5NzYgOWRiM2QzZDM5Y2MzZTc1NzVhOTJiYWMxNDE1ZGU5NTg4MjAyNGQ1MCBsZWdhY3ktdHJ1bmsKKzY3OTc3IDFlMGQyMDVmZThkNzBlNWY5ZjFkNjEzMGVjNjMwYWJhZmE3OTUyNzEgcmVsZWFzZTI2LW1haW50Cis2Nzk3OCA2YTA1NjZhNTEyMTg0YmQ1NTc5ZmM0M2NlMGRmZDAxODcwYmJkMzkxIGxlZ2FjeS10cnVuaworNjc5NzkgMzQxYmY3NmViNmViNzJiNTI4NjVkNDM0YWZjYzZmMjAyNWUyZDI2YiBsZWdhY3ktdHJ1bmsKKzY3OTgwIDBlYTRiZDU5YTQwZDY2YzcxMzUxNjliNGUwYjA2NjhmZjc3NzFjNWMgbGVnYWN5LXRydW5rCis2Nzk4MSBlNzcyMDYxMmE3OTY5ODU5MDkyZjMzNWM1YzQ3NDdmNDU4MzMzNjhiIHB5M2sKKzY3OTgyIDY0MWQyNzkwM2JjNTc0OWFlMGY3YjI3MWZiOTU3YmZmOTQ5ZjQ5ZTggbGVnYWN5LXRydW5rCis2Nzk4MyBiZGVkNWJkNjBlOTU0ZGE2NTM1Y2IyYTI2NTQ0Yzk1YjE0ZTYyNTk4IHB5M2sKKzY3OTg1IDdjNzYyNGEzM2Y4YjMyMzM0NGI5MTA0YWFiYTkzOTI3OGE0MDZlMjggbGVnYWN5LXRydW5rCis2Nzk4NiAzNzU1NDNiOTgyNDQ2MDI5ZWQzYzc0ZDlkZjk5YTNmMjU2NjBmMzA1IHB5M2staXNzdWUxNzE3Cis2Nzk4NyA3M2RjYjhiNDIxZjgwZDE5NWM2YTI3ODMzMDBhY2U5Y2Q1MWVjZTQzIHJlbGVhc2UyNi1tYWludAorNjc5ODggMmYxNWQ1OWRmYjgwNDg4MDE4YWJlOWIzZGUzMTIzN2NjZDcwODA5MiBsZWdhY3ktdHJ1bmsKKzY3OTg5IDQ1N2VjODg0YWYwNDVjMzVlOWQ2OWU5MWM0MDc2ZWZjODk3MzA5OGIgcmVsZWFzZTI2LW1haW50Cis2Nzk5MCBlMmViYWMwNjI0MzIyMTNjZTQyZjg1MTJjYjc1YzliMzdmNDEyZmU1IGxlZ2FjeS10cnVuaworNjc5OTUgNmZiN2Q4ZjQyNzNmMmIwNzUwMjExYTI3ZGIyYTBmYzU0YmJjMGM3ZiBsZWdhY3ktdHJ1bmsKKzY4MDA2IDJhZDY4ZGQwYWM5MGY3YTQyOTc0YjZkMjQ1ZTk4MWNkNWJiZDUxZGEgbGVnYWN5LXRydW5rCis2ODAwNyA4N2Y1NDMyYjllZGM4ZDlhNTFlNzIwMGVlNmE3ZGRmMWEzOTFjYzZkIHJlbGVhc2UyNi1tYWludAorNjgwMDggYjk1ZGRlOTU5OTZhOWIzYTE0N2RiYmRjYWMyNGI0NWVlZmNiMGI1NCBweTNrCis2ODAwOSA4N2Y4NmNjZTQzYjE1MzViZmJhZGFhMTkyYmNjZWIzMjUzODZkZmY1IHJlbGVhc2UzMC1tYWludAorNjgwMTAgMzgzNTdlMWQyMWU2YWI5ODI5ZWExMTQxZTU4MWM4Y2RhMmMxNjIyZiBsZWdhY3ktdHJ1bmsKKzY4MDExIGI5ZWZkZDhmOGIzMDkxZWZjODc0MjM3ZDRlYzU3MzM2OGJjNzg0MmYgcmVsZWFzZTI2LW1haW50Cis2ODAxMiA5ZjgzNjMwODg1MzZhNzI3ODE1NmYwNTk3OTgyODEwMzY3MTJmMzM4IHB5M2sKKzY4MDEzIGExYWJmZTAyNzA3NGM5OTRlNmU0YzY2MjEzOGY2Yzc4ZjI4NjMyMDAgcmVsZWFzZTMwLW1haW50Cis2ODAxNCA4OWEzZjVjOWI1MDMyMjRjZWE3MTA1MDhjYzJlOTE1NDU1ZmQ5MTUxIGxlZ2FjeS10cnVuaworNjgwMTUgNzFlNzMyYzkzMjM0NDVhMjBkMzMzMzRjZjA2MWI0YWE3Y2M4NmIxMSBweTNrCis2ODAxNiA3MGRlMmUwOTFlNTgyNmMwZGY5YjFiNmJiYmQyYzg1ZTk0ODYyZmNlIGxlZ2FjeS10cnVuaworNjgwMTcgMThkODE3YTdhMzlmYTlmOGFkZTNkNDAyNDllMjMxMTdkMzBkNTVmMCBweTNrCis2ODAxOCAzNGM3M2E0NjNiMzU1YThiMTIxNjFjYWJlYTM0NzJjYzRhMDIwYzAxIGxlZ2FjeS10cnVuaworNjgwMTkgMjkzMmIzN2YxZjA0NDIwNWNlZGFjZjNmNGY3YTk5OGI3MjFiZGRhOSByZWxlYXNlMjYtbWFpbnQKKzY4MDIwIDQ0ZWE5ZWFjOGM1YjUyNTIyYzRiMGRlODA0NGE3Y2Y3ZTYwMTJhMmIgcHkzaworNjgwMjEgN2Y1YWE3ZTU0YWQ1YTEyNDI3M2FmY2E4NjA3NjcyNTljYmMyZDY0OSByZWxlYXNlMzAtbWFpbnQKKzY4MDIyIGY3YTNmMTQxNjFlMTc1NzdjZmU1MjE2N2RhOTE0NzFhMzFmOWZjNWUgcHkzaworNjgwMjMgYWUxZTExNDIzNzI5NWQ5ZmYxYzE1MjdiNDBmMjVjNzZlMmEwZWNkNCByZWxlYXNlMzAtbWFpbnQKKzY4MDI3IDFhZWE4M2UwYWU5ZjAyZWJjOTM3NWVmYTBkNzY5MGRhYmQyYjg0MWMgcHkzaworNjgwMzAgYmMxYjM3NDM5NWY0MDAwMWE5MmQ4YWFkNDE0ODYxM2JiOTQwNDFmYSBsZWdhY3ktdHJ1bmsKKzY4MDMxIDNkNDQ3YjdiMTM2MzRmZjM0YzBiOWM3ZGUzNDFjYTllODVhZTNjZGIgcmVsZWFzZTMwLW1haW50Cis2ODAzMyBmMTQ2MmQ5MjRhOWMyMWVlOTgwNGRhNmIwYTI5NzgxYzAzNjQ4NTQwIGxlZ2FjeS10cnVuaworNjgwMzUgYWQyMGI2OWIxOGI3MGIxODI3MTU2NmE4ZWJiNTM0NTEzMzljODM5YiByZWxlYXNlMjYtbWFpbnQKKzY4MDM2IDljMDZmYjdkMTI2MDJlYzdkNmNkZWI2ODAxYTY2MGJiNGU4ZGU2ZjcgcHkzaworNjgwMzcgOGZhNjExYmJiMDc3ZmY3MTA5Mjc1OWJkNThjNjNmMTgxOTk4MTRhZCByZWxlYXNlMzAtbWFpbnQKKzY4MDUxIDdhYWVmNGQ1Zjg4MGU3ODYzZmQ2MDYyZTJlMzFmZWRjZDRlMWU0ZjQgbGVnYWN5LXRydW5rCis2ODA1MiBlNzgyZjk3MTE2ZGMxY2YxMjgyMTQ1ZWFiZGJlMmViNWQ0NTk0NGYxIHJlbGVhc2UyNi1tYWludAorNjgwNTcgZjczZmM0NDE3NDRmMDY1N2Q4MDczMzhkYjExZTllZTg2M2I0NjhkYSBsZWdhY3ktdHJ1bmsKKzY4MDU4IDYxOGQzMzk3Zjg4OGNlNTQzMjUxZjgyOGNmMmI2NGJlNGE2NDFjZTUgcHkzaworNjgwNTkgMjhhZWNiZjFlODMyYjA1ZjY3OTRkYWM3ZTFjNWU5YTZjNDNmYTJlMSBweTNrCis2ODA2MCA0M2FhY2JlNjQ3Y2IzZjQ5YTU3ZTA1MjFlZjY0N2FiZDE3NjEwYTE3IHJlbGVhc2UzMC1tYWludAorNjgwNjEgNzI5OTk5OTI5ZWY0YjViZDZhYjFkMTUzMDRjYTE0ZjM1NTczYmUyNyBsZWdhY3ktdHJ1bmsKKzY4MDYyIDExNTRkMDI0NWI2NjEzOGI0ZDNkMzc1ZDUxZmNkYTdkZjI0OWU1NzMgcHkzaworNjgwNjQgYWZhYjMxOTI1MmU3OTIzZGY0MThkMGI5ZjNhY2ExYWRhYzQwY2FjYSBweTNrCis2ODA3NCBmYTZmYzU1MjZmNzFmMTIzNDE2NDY5NjA2M2RjMzQ1OGNkNTkwMmFjIHB5M2sKKzY4MDc1IDJjODQ0Y2ZjMzc1YTMxYzIyODZlMzgyMjllOWFiM2FkNjhjYmNmMjUgcHkzaworNjgwNzYgYzMzOGJlZTIxMTczOTcwNTY3MDZlMGViNzhjOWRiNGM1NmEwNDEyZiByZWxlYXNlMzAtbWFpbnQKKzY4MDgwIDc0MzE2MzhlN2RkOGZhY2M0NWY5YjNjZGNmYjVjZDU2NmM2OGExMjQgcmVsZWFzZTMwLW1haW50Cis2ODA4MSA4YTQ4MzQzOWNiNTVmZWIzZmU5M2NmM2YwNTcyNTkzYzUyYzliMTI1IGxlZ2FjeS10cnVuaworNjgwODIgZDg5NzVmMjRhZjhiNThkZjljZWRlZjdkZjQzZjZiYjg5Y2RjNzlhNSByZWxlYXNlMjYtbWFpbnQKKzY4MDgzIDdkNTUwY2I1MzY5ZTA1YWU2YzdhMTc0NjdiOGEwZDhlMjhjOGUxZTIgcHkzaworNjgwODQgM2UxOGI0NTlkNGM4ODQxZGU3OTAzODk3NTExOTA0N2RlNmMwODY1YyByZWxlYXNlMzAtbWFpbnQKKzY4MDg5IGI3NWQ3NjkxNTFiYWE4ZjBhMTE0OWRhYThjNDMxYzc0NzYzZDJlZTIgbGVnYWN5LXRydW5rCis2ODA5MCAwMmZjZDljNWZlZmJmOTgwZmMwMTY4YmJlYTZjNjgxNGFiMTQ1N2JlIHB5M2sKKzY4MDkxIGVmNjQ5Y2U5Yjc4MzlhMDc0N2M0MTA4Nzc2MzllNTdjYTkyNjcwNTUgcHkzaworNjgwOTIgMDZmNGMzN2Q2NWY5Njg5YWE1YzIzODBmOTBlMmZlNjU0Y2MyYmViZCBsZWdhY3ktdHJ1bmsKKzY4MDkzIDE1YTY2MjYwODVmNGE1MTNlZTQyNGM3OGU1YzgyYWVhM2M1MTJjYjMgcHkzaworNjgwOTQgNmQxNjNjMmFlZjU2YjhkYWFhMjRlZDQ4ZGFlYjZmN2JhNWYwM2Q1OSBweTNrCis2ODA5NSAzODUzYzE1NTMyYzRlZGUzM2RkNjlhNzU3ZjIxYzVmMjBjOGNkMzA3IHJlbGVhc2UyNi1tYWludAorNjgwOTYgMDIyZDk5OWM0ZDFhOTRiMTdiNGFjODFmMGVkZjc3Yjk2ZWUzMGY0YiByZWxlYXNlMzAtbWFpbnQKKzY4MDk3IDljMmFjNzg2NjZkNDU3ODMyNTBmZjYzYmNmYzAwMGNiYzc4NTczNjggbGVnYWN5LXRydW5rCis2ODA5OCBkY2JlOTliMGNlODMyMjc3MTM2Y2E1MjUyNDY4OTAyODA0MzE4YWRkIHJlbGVhc2UyNi1tYWludAorNjgwOTkgMWM1ZDk0MjEyOGI2ODgwNTdmZjk1ZjUzNGY4YWU3OThiZDczMDY1MSBsZWdhY3ktdHJ1bmsKKzY4MTAwIGM0MzIyNjg3NWJkNDEwNzliMjU5ODBiNjRkNmEzY2YzY2ZhM2ExYjYgcmVsZWFzZTI2LW1haW50Cis2ODEwMSA3ZTFhOTViMjZhNWNhNmNiZDQyOTdiNjVmYTQ5OTAyM2Q2NDljYjg0IHB5M2sKKzY4MTAyIDVjYzA3M2Q2NjFmN2I2ZDMzYjJjM2VjNTQwNmQ2ODhhMjUxZmRmZWEgcmVsZWFzZTMwLW1haW50Cis2ODEwMyA1MDc0ODMwZTliOTk0NjQxZjE1NWZhODk1YmVmOWFjY2FiMWQxYzNlIHB5M2sKKzY4MTA0IDcyMzlmYmNkY2Q0ZmJhNjViMWNhMzRjYTM5ZTY5NzMxMWQyZWU1Y2UgcmVsZWFzZTMwLW1haW50Cis2ODExMiAxM2RhZjk5ZGIwMzU3NzBhNDI5ODcxYzQzMzY3MGY5NGRmZWMyNjZkIGxlZ2FjeS10cnVuaworNjgxMTMgYmY2ZjJkZmMzMTBiYTE0ZDk5MzU2YTEwYWM3MTk0YjIyODUxYzgxZiBweTNrCis2ODExNCBkMzJhNjY5Zjk2ZGE5OTNlMDkzZTU4OGQyZGUzYmEwZTU1MDBlMTYyIHJlbGVhc2UzMC1tYWludAorNjgxMTUgOTJhZDk2NTQ0MjUyNTgwNGE3ZGM2Nzc3YzUwMDU2ZDExMWU4Nzk3NCBsZWdhY3ktdHJ1bmsKKzY4MTE2IDU5ZjNiZjJhMzI4ZDQ0ODQyYzZjMjk5M2YwNjg5NzFlNzUxYzYzZTkgbGVnYWN5LXRydW5rCis2ODExNyA5MjdmNWQ5MDg3ZjVhMTVlNWE0OTRhYzlkYWYzODZjZmM2OTVmZTllIGxlZ2FjeS10cnVuaworNjgxMTggMzk0ZTM4OWU4OWYwOWE2ZWYzOGEwYjRhNTg2MjMwNjRjYjQyYTExNSBsZWdhY3ktdHJ1bmsKKzY4MTE5IDIwZWRiN2U1MTU5ZjRkYzJmOTM1MWRhZmQwYzBiZDkwZDczMzAxOTEgbGVnYWN5LXRydW5rCis2ODEyMCBkMWU1MzZjNmZhMmNiMjA1ZjRhZGUzYTcwODAxYTMxZmYyZjM1NjAxIGxlZ2FjeS10cnVuaworNjgxMjEgNjgzYjNmOGIxMmI0NGEyMzc4OWYyYzRiNzE4NDliYjk1NDdiODhjNSBsZWdhY3ktdHJ1bmsKKzY4MTIzIGYzNTQwM2EwMTFiOTRjNThhOWNiNjU4YzAxYTNlNjc2ZGExOGU3NDEgbGVnYWN5LXRydW5rCis2ODEyNCAxYzRlNjc4YTFkM2IxZWRmYjEzNzJiMWNjYTlkMWVjOTVjY2E4MWExIGxlZ2FjeS10cnVuaworNjgxMjUgMWI4MmYyYjgyZmQ5MjExYWQ1MjZmM2Y4ZThmYTkzNzU0NGIyODljMiBsZWdhY3ktdHJ1bmsKKzY4MTI2IGU1ZGJmMzhiMWRhYzFhNzFjODllZGZhNDExZDRhNDFjOTQ0NzAyYWQgbGVnYWN5LXRydW5rCis2ODEyNyAzNmU5NzkzZWJiNWQ0ODNjNDgwZTIzM2M5NThkOTc4ODk5YTNkOTkxIGxlZ2FjeS10cnVuaworNjgxMjggMDk5YjQ4ZmU5MjJhMGRmMjY3ZDM5ODQ0OGZjOGNmNGM2ZmNkYzZmYiBsZWdhY3ktdHJ1bmsKKzY4MTI5IGNhYjg1MDFmOGFlNmIzM2IyOTVkMmZjMGI5ZDRlMGNlOTE2NWM2OTcgcHkzaworNjgxMzAgODQ2M2ZmODYxYTI2ZDg0ZDcyOTljZmRhMDYwMjJjM2U1MzQ5MWI4MiByZWxlYXNlMzAtbWFpbnQKKzY4MTMxIDQzNmU2MzE3YzdiNGI5MTM0MDMzZDFjMjUwNTA5M2Y3MDk4MjQwZmMgcmVsZWFzZTI2LW1haW50Cis2ODEzMiA0ZmJmNTJjOTliNmVkNDM0ZGIyNDBjN2EwOTU0ODA1N2MyMzk4NDM1IHB5M2sKKzY4MTMzIGM3YTQ1Y2JhMDc4NWQ2Y2E1NmIzMzIxMjM2OTBhZjMxNmVhMjY2MGEgbGVnYWN5LXRydW5rCis2ODEzNCAwZTViMjRhZGU0YTIxNzZjZTBjNTE1YzRiZWM1ODYwNDM2MmZjM2RlIGxlZ2FjeS10cnVuaworNjgxMzUgZGYzOTIzYzM2ZWM1OWY3ZDIzOGY3YWM4ODRlMDhlOWQyYmEwOGZlMCByZWxlYXNlMjYtbWFpbnQKKzY4MTM2IDA2ZTFmN2Q5ZGE4M2RlNTQyYWQ5NGE0NjZiZGQ4Njg3MzI3NzhhYzggcHkzaworNjgxMzcgOWRkMmUyNTdhYzdjMjJlNWY0YjQ3MzI3ODM4YjJlMDA5NThmMDA4YSBweTNrCis2ODEzOCBiYjMxMjIzYWJmYWE4YzVhZDYyZDI5NTg0YmE4YWU5ZDBmOTJkN2NlIHB5M2sKKzY4MTM5IDlmNjA0ZDMzYTQyZjcwYmU4ZTA0YTQxNmU0MmUwOWNiNGE0NzExNWEgcHkzaworNjgxNDAgMmIxM2QyMDJhNDdkNzM4NmFjYTQ0MDI0NDQzODhjNzAwNjllMmUxMyBweTNrCis2ODE0MSBhZDRlNTJkMTU0ZjRhMjk4ODM2ZDc1N2VmNDIwMGY3MTY3YWQyYjg3IGxlZ2FjeS10cnVuaworNjgxNDIgNWM2ZmVkNzNiNmE5MTgyYTk4NThhMWE4OTdjYmQ3ZDVhMTgxNGU5MCBsZWdhY3ktdHJ1bmsKKzY4MTQzIDJkZWJiZTY0NDVlMGZkOTFiY2EyMmZlNDYzMGU4Mzc0MWYxOTA0NzIgcHkzaworNjgxNDQgNDgwMTk2OWRhZGVlM2NmZDdmMmRlNjRhY2UzMWFkZGUxYzU1Yzk4NyByZWxlYXNlMzAtbWFpbnQKKzY4MTQ1IDYwOTdmOTdiMGQyMjA3M2JhMGUzMjA5ZTY4M2M4ZDUwNGE0MWI3MjMgbGVnYWN5LXRydW5rCis2ODE0NiA0MGZhODY4OTgxY2NkOGY3ZTZmMGJlMzk4N2UxMzU1YzZiMmQxMDU4IGxlZ2FjeS10cnVuaworNjgxNDcgY2IzNDc5Y2E4MWFjY2FlYTg0OGY0ZGRmNzNmYmIxOTViNTZiNjNiNiByZWxlYXNlMjYtbWFpbnQKKzY4MTQ4IGJmMTczNGM2YjZlZDIyM2NmMWQxYzkyMTJmZDVkM2UzYWUxNDkzMjIgbGVnYWN5LXRydW5rCis2ODE0OSA4NGNiMDFjNTY0OGIxNzRkMDdkYjM1NmI1YmQwMDRkODMyOTgyMDEzIGxlZ2FjeS10cnVuaworNjgxNTAgMjUzZTFjNzNmZGU2OWNhZWI3ODQyMGEyMTk3OGQ0MjU1MGM0ZGEyYSBsZWdhY3ktdHJ1bmsKKzY4MTUxIDVjNGY2MzljOTIwMDg5ODYyYzJmMWYwYzY1NTIwYjhhZjQ3MTU1MGEgcmVsZWFzZTI2LW1haW50Cis2ODE1MiAwOGRiYTdmOTcwMzAxOWE4OTAyZTdlY2ExOGZkNTE1ZWQxZmJkNzEyIHB5M2sKKzY4MTUzIDJmMDFmOTk1ZjcwNDEyYjcwMjNkNWIxOTEzZDBiMjg4NTkzODgzODkgbGVnYWN5LXRydW5rCis2ODE1NCAzNGQ1MWMzMGE0ZjRiZjFjOTIzNGRlZWFjMmZjNGY3NTAzZjM4MjYyIHJlbGVhc2UyNi1tYWludAorNjgxNTUgOTRjZmJmOTNkNzFiNGM2MTI1YTYxOGY2OGIxM2RlZjEyNGJmZWY5OCBweTNrCis2ODE1NiAxZGNiMTkyMTZiNjRkNjIwYTgwYWM0ZWMwYjNiODA1ZTI3MjlkNGUxIGxlZ2FjeS10cnVuaworNjgxNTcgZTdhZWU3Yzk5ZDNiNzdjMGE3YjE4ZTRjN2E4MTFlZDcyMjBmMDA4NSBweTNrLWlzc3VlMTcxNworNjgxNTggNzUzOTU0ZDE2ZWQyMTYwMTJjNDlkMzA3YjNhOWMwZjc2NmExMjM4OCBsZWdhY3ktdHJ1bmsKKzY4MTU5IDI2OTZhMzliY2YwYjA1Nzk4YzJkMjY1ZjU3MjE3YTU1YWY0ZmY5ZTcgbGVnYWN5LXRydW5rCis2ODE2MCBjNTBiMTE4ZWFmMzQ3Nzk0YjRmMjRmOWU5NDIwNWQ1ZDYwNTIyMzQ2IGxlZ2FjeS10cnVuaworNjgxNjEgMzU1YmMxMjJjMTQ1NjVjZTIwY2RjOTg5NWRkMDQwMzYyNjY2ZDBiMSBsZWdhY3ktdHJ1bmsKKzY4MTYyIGRlN2QxNjdiOWZmMTBkYWYyYmVmMzBhNzc0NTZmN2Y3M2E5OGU2NDcgbGVnYWN5LXRydW5rCis2ODE2MyA2OWEyNDBlNWYwMWRjZmY2ZjM4NGI1M2RiMmMwYzk5YTI1YjhlZmFmIGxlZ2FjeS10cnVuaworNjgxNjQgZTBjNjZiYmI0OGRhODNlYzc1MTQ3ODFiZmMyYjFmZGQ2YTdjMWIxZCByZWxlYXNlMzAtbWFpbnQKKzY4MTY1IDQwMGNmY2FhOGQ0NmVlODVjMTFjYjYxYjA4YTVjZWIwNjZjOThlNGYgcHkzaworNjgxNjYgY2E4NmFiZTE1OTI2MzlhNzZlMGJhNWU5YjQ3M2Q1ZTJhYzgwNjFjNiBsZWdhY3ktdHJ1bmsKKzY4MTY3IGZmMTA2NDUzMjU0YTFkZDlmZTkwNWI1ODU0MGIzNmFmMjMyZTAyZDcgbGVnYWN5LXRydW5rCis2ODE2OCBhNTQ5YzkyNzA3NzY3M2VhZGU5NTRlNzkxODJlZGI3YTdjOWYyYTZjIHB5M2sKKzY4MTY5IGFiYmNlNDhiOWFlNDBhNjlhY2M2ZTQyNDFiYzk0ZDBhMjI0NDM2M2YgcHkzaworNjgxNzAgYmNmNDZmMzNiZDkwNTE2ZDczYWE3YTQ5YjAwMTRkODJlOGQ1MDc2MyBweTNrCis2ODE3MSA4ZWRkZDY2NWU5YjlmYjZhZmVkZGM0YmIxMWJlNmE4M2IyY2Y4OTIwIGxlZ2FjeS10cnVuaworNjgxNzIgNjM2YTBhYzk2MDdiN2EzYTQwY2EwZmNiZjMwNDQxYmMxMGU2MDI4MCBsZWdhY3ktdHJ1bmsKKzY4MTczIDEyOTdiYjcxZGM2NGIxNmMyMDgyZTZiN2NhZTAwYTNhOWRhOTE3YmEgbGVnYWN5LXRydW5rCis2ODE3NCA2OGM5ZjhiNjU4NGQ0YjFlZTFlMmZmMDFhMGY4YTdlMTRjMjBmZmE1IGxlZ2FjeS10cnVuaworNjgxNzUgMjAzODRlYmZjNzE2ZjJlMGE5ZjRhOTBiNmM3ZmVmZDMzZGNlNDRmYyBweTNrCis2ODE3NiAwNTg4YTk4NzkzY2QwODc1ZjBlNDVkMWY4ZTMwYWY4NmJlYTNhZTY0IGxlZ2FjeS10cnVuaworNjgxNzcgZWIzNThkYWUwY2NhZDhhNWE1N2VjN2RlMzZjOGJmMTNlOTRkOGRjZiByZWxlYXNlMjYtbWFpbnQKKzY4MTc4IDBjOTcyODM3MmQwOThhZjRjZTRmODk5MThiMTM5MjI5NjY5M2MzYjUgcHkzaworNjgxNzkgMDA1MmQyM2QzOWY2MTVjNzYzZTczNWM0ZTYyYTgyODM0NTY3ZGZiNSBsZWdhY3ktdHJ1bmsKKzY4MTgwIDBlMzhjNzBiOTc3NmVhN2FjMWRiYWRjNTY5NTU4MzE0Zjc3YjU2NWUgcmVsZWFzZTMwLW1haW50Cis2ODE4MSA5MzAxMzM5NzlkN2EyOTFhZDAxYzUyM2U0OGZlNDEzZWUwMDA2NWQ0IHB5M2sKKzY4MTgyIGFkOTIxMDRkNTA2MDdlN2E3MzNjOTVjZmU1NjRlZGUyMmMwMTk0Y2YgbGVnYWN5LXRydW5rCis2ODE4MyA5NGZmM2RlMWUxYTQ1YmViZmZiNWM1NzhkZDcwZWQ1ODE0NDkyZTA4IHJlbGVhc2UyNi1tYWludAorNjgxODQgNWUxNjQ5ODhiZDUxYWVhZWVkMzgwMTdhNzUwNjkxMmE0NTNmYzMxYSBweTNrCis2ODE4NSBkMzY3YmU1NDNmNmNlOGFmNDA3NjRiMTlkZTc1NmJjODdhNjFjZDA0IHJlbGVhc2UzMC1tYWludAorNjgxODYgNDQwYWRkNTE2Y2YxZTFiNzEzZmU4MDY5OGJmZWRlMjg3ZGNjYzE1MSByZWxlYXNlMjYtbWFpbnQKKzY4MTg3IDM2ZDAyNzAzNzgxMjMzMzI3ODhmYmIyMjNkNmQ1OGFjM2FlOTA0NjUgcmVsZWFzZTI2LW1haW50Cis2ODE4OCBjNDVmZWQwM2Y3NDc1YzJkMmJhYzVjZTQ2NmExZWIzMThmZGNkNDIzIHJlbGVhc2UyNi1tYWludAorNjgxODkgZmM5NGM5YzQyYzZjODAwMDYzNWE1NWZjNDZhYTcyMGQ4YTQ1YTFmYiByZWxlYXNlMzAtbWFpbnQKKzY4MTkwIGZhNTVmYTQ1NTZmMDk5MTRjZGE0MWVjNDY3MzdiMGRlZDFiMTNmMjkgcmVsZWFzZTI2LW1haW50Cis2ODE5MSBjMjcyZmNhYzI0YTRhMjViNWNhNzU0ZDhmZjc0MjcyMDE1YjA3NWI2IGxlZ2FjeS10cnVuaworNjgxOTIgZjJhNWQ3ODI4YjgzZTcyMDBiNjQ2ODIyYTQ2MzY4ZTk2YTU5MGY3NSByZWxlYXNlMjYtbWFpbnQKKzY4MTkzIDczODg2NjA5MjZhYTE0OWViYWIxYmFlMmM3YzljYmY0YzU3MGNlNjggcHkzaworNjgxOTQgMTM0ZDE3M2I5MzUwYjJmZTQ1M2QxODNiYWYyZjc1ZjRmNjc0MGI2OCByZWxlYXNlMzAtbWFpbnQKKzY4MTk1IDQyN2Q4Yjc2NWE2YTAwYjAwNjc2Nzc4MDkwNzk1N2E0YzIyZDUxZGIgbGVnYWN5LXRydW5rCis2ODE5NiBhNzg4ZDRmMTBiOTc4M2NlOTNiYWZiMmY1ZWEzOWJhNDYyYWZlODE2IGxlZ2FjeS10cnVuaworNjgxOTcgYjk5MWZlNWY2MzdhODVmZWFiOGFhMDA3ZTQxOWUwOGQ1MDk5ZWMwMyBsZWdhY3ktdHJ1bmsKKzY4MTk4IDhlNzcyODY3NmY3ZTg1YWFlYmIxZDg0ODIzYTA0NWJkYjg4MjRhMDIgcHkzaworNjgxOTkgYTkyZjcxZDQ2ZGM0YzFjMzI5MDZjM2IxMDQ5MjllNGY5MWI2MDJmZCByZWxlYXNlMjYtbWFpbnQKKzY4MjAwIDI5ZjY0MDc3YzQyZjg4ZDFiMGQ1NDVkYTk0OTU5Nzg5YWMxOTc4YTQgcHkzaworNjgyMDEgNzkzNDcyM2Y3ZGM0ZmJkYTE1MjU1MzhiZjk2ODY4OWI4ZTg2YTE2ZSByZWxlYXNlMzAtbWFpbnQKKzY4MjAyIDI2MDQ1ZWQwYzI2ZTJjY2UxZDZmNWIxYzVmZGIyOTI3MDhmNjkxY2UgcmVsZWFzZTMwLW1haW50Cis2ODIwMyBlY2YxYmI3YmFlYjFlYzc2Zjg5ODgwNTUwNTY0OGZjMDMzODg0NWExIGxlZ2FjeS10cnVuaworNjgyMDQgNGQxYTY4YmQ4MDc2YzBjNmUzNDY1ZjYyN2UzMjlmMWY5NjllZThkMSBweTNrCis2ODIwNSAyNTNmOWU2ZTllMDc5OTc1NDRhOTU0MTUwYTAyZGFkNGNjZTA3NDgzIHB5M2sKKzY4MjA2IDEwY2M1M2U3MWIyMTIzZDU0NzlkOGYwY2QzNmZjNzY0Y2UwYmVlNWIgcHkzaworNjgyMDcgOWE0MjVlYjBmN2VhNTRhYjRlNDgwY2RkM2MyMzdmOTNiMDYxNGY1ZiByZWxlYXNlMzAtbWFpbnQKKzY4MjA4IDdhNmUzYmM2MGJhNmRlMTI3YmNlZTk0NGIxMzE2M2Y4Mzk0MDY2MzggbGVnYWN5LXRydW5rCis2ODIwOSBlNzhkY2Q4N2Q3MzNmNmY3YjI0YWIxYTY1OWU2NTA5NDRlYmNlZmRmIGxlZ2FjeS10cnVuaworNjgyMTAgYWE0Njc4N2I5M2NjNjUxYThkZjIzNzI3YWIxMGM0ZTFjN2EzNGM0ZiBsZWdhY3ktdHJ1bmsKKzY4MjExIDEwNDAwNWQwN2VhNTE5MGUzZDIyMDZlMjY3NmUwZDc1MmFhMmU3NTEgcHkzaworNjgyMTIgODQ1ZmE3ZDM2NjQyMDkwYzI0MTkwZDQ0MmViODdlOTJhMWVkMzA4NSBweTNrCis2ODIxMyBkZTI3NzEwNzBkODUyYjJjODNjMzZmZDhlNzlkNmRmNTNmMGE4NjY1IHJlbGVhc2UzMC1tYWludAorNjgyMTQgNmU0ZDZkMzkwNWE3OWRmMWFlNzNmNzJkYmQ1MjEzNWIxMGZmYmQ5ZiBsZWdhY3ktdHJ1bmsKKzY4MjE1IDYwODU0YmRiY2YxZTVhZjc5MGM4OGEzMWIzNmM5NTM1OWYxM2Y1NTUgbGVnYWN5LXRydW5rCis2ODIxNiBiMDY2ZmJiNmE4YmMyOWZhYmQxZWY4Yjc2NjlmNzc1Y2RmOTU5OGNiIHB5M2sKKzY4MjE3IGM3NTcyMGMzZTE2ZWUwMjgzZWIxZDU4MmE0MzFkMjIzMGFjYzYyYTAgbGVnYWN5LXRydW5rCis2ODIxOCA2ZWZjMWRlMzQ1ZjVjOTE3N2U0MDVkYWM3ZjY3NWIxZWI3OWUxZDIzIGxlZ2FjeS10cnVuaworNjgyMTkgZmIwOTgyYzMyMTdlNDU4MDQ3NzJhYzZiZGYzM2ZhZjA1ZjgzZmIzZCBsZWdhY3ktdHJ1bmsKKzY4MjIwIGM1MjE3N2YzNjg1Mjc2NDBlN2YyMjk5YmNjZDU5ODQxMGRmMjYxOWMgbGVnYWN5LXRydW5rCis2ODIyMSA3ZmI0MzFmYTQ5NDYwMTg1Yjk0N2I1ZDg1ZmZjMDA3NDc2NzA3MGMyIGxlZ2FjeS10cnVuaworNjgyMjIgOTg5MzE0ZDdjYzVlZmIyZGZjZWZiNTZjMmNlYzI0YmI5NGNhYjUzOSBsZWdhY3ktdHJ1bmsKKzY4MjIzIGM5MTg0ZjUwNzM0ZmJiOTc0YmUzODJmMTJjOTJhZGI4MTQ1ODFjZTEgcHkzaworNjgyMjQgNWFiMzA2M2NhZjRjMDg4Nzg4NDQ3NmY4N2FkY2UyZjQyMzMxMTkyNiBweTNrCis2ODIyNSA1ZjI0NzVmZTUyMzk5NTMzY2UwZGU0YmMyMzlmM2VlZTZjMjIzNDQ2IHB5M2sKKzY4MjI2IGMzZDNiNzYwZDhiZmIwZWY1MzFhMzY0YWNkNjcxN2RkMjg4YjNlMWIgcHkzaworNjgyMjcgMGUwNWI2Y2E2YWZkM2JhN2M1OTFmYTQ0NDgwZjg0NDU2NzE3ZmRjZCBweTNrCis2ODIyOCBlNDc5Yjg2ZGExMWRlNjRhZWQ4ZWM4OTRkMWZkODkwMzYzMmVmMzM4IHB5M2sKKzY4MjI5IDgzZWZjMjQ2N2ZhZjM0N2I3NjZiMzkzYzFmMTQ4OTI2MzJlYmU5OGEgcHkzaworNjgyMzAgMDcyZGVkZWU3N2ZhNmRkNDg0NTY5NjdhZjU3MGY2OWFhOThjOWIyOSByZWxlYXNlMzAtbWFpbnQKKzY4MjMxIGNkZDVmYTA1YzE0ZDAwOTUzNjcwZWZkOGI2MjRlNDBiZGU4OTk5YWYgbGVnYWN5LXRydW5rCis2ODIzMiAyNGEwOTM3ZDc2MjQzNGJiM2NlZGIwODQxYmYxOTFiMGQzYjg5NTc3IGxlZ2FjeS10cnVuaworNjgyMzMgYWVlNTVjYTA0YzhmYTMwMWY4MmU1Y2ZhNWYyNDE0Mjk3ZWE5NWFjZiBweTNrCis2ODIzNCBlZTljZWQ5Mjg0M2E3YTU5OTIyN2RkOGU2YjAxM2EzMGFjM2ExMTY5IHJlbGVhc2UyNi1tYWludAorNjgyMzUgNzEzYTNhMzhmOTc1Y2ExYzQzOWQ3MmE5NWI1MTg2NWVkYjAyNzBiNSByZWxlYXNlMjYtbWFpbnQKKzY4MjM2IGY4ODVjNzZmMWU5NTUxMjI2ZDgyZWQ5MjM1NDk3NjliNzcyZGMyZDUgcmVsZWFzZTI2LW1haW50Cis2ODIzNyBkZGI3M2E0ZGZjMjA0ZDUzOWI0MGRkOGI2YjlkY2QxOTFmNTljOGZmIHB5M2sKKzY4MjM4IDZkZjNkMDhiODllNDUwZGFkMTRhOWEyMDg5OTdiZWVmYmZmZmNiNjEgbGVnYWN5LXRydW5rCis2ODIzOSAyMWQ3ZTllODc1OTFjNzI5NTM1ZmI3MTVkMjA2OTZmYWRmMWQxNzhmIHJlbGVhc2UzMC1tYWludAorNjgyNDAgYjU2MzlkMjQ1YWQ1MzU0NzlkNzE1YTIzM2JiMDNkNjBhOWUwNDRlZiBsZWdhY3ktdHJ1bmsKKzY4MjQxIDczZGVkOTRmYjhiZWFiMzk4ODE4N2RkODFhMzEzNmM2N2NjOWM3NTQgcHkzaworNjgyNDIgOTFjZjllZDQ2YjcyMzJlMzU1ZTBjZDk5NWI4ZTM5NDcwNWNmODc4OSBweTNrCis2ODI0MyBkM2M3ZTlkOWFkYTdjMDcyM2IzYjAwYzgyNjUzNTY2N2U0MzJkMWQ3IGxlZ2FjeS10cnVuaworNjgyNDQgNmM4ZWQ2Njc0MzI4OTJmMjczYzc4ZTg2NTVlM2Y2N2FiMWFmODEzZCByZWxlYXNlMzAtbWFpbnQKKzY4MjQ1IGFmMjBkZDE5Y2MwZDk5ODA3ZjNiYWYwZWIzNDVmOWFlYjk1MmFhMGUgcHkzaworNjgyNDYgOTFhOTIzMzk3MzQ3ODM4ZTlmMmEwMGQxYjkwY2U3MTU4YThhMGY2ZiBweTNrCis2ODI0NyBkMDkxNDMwMGUxMmViYzVhOGVlMGY0ZGQ0YTc1Y2RiYzVhNmFmMmY5IHB5M2sKKzY4MjQ4IDhhYTE5NTMwZjlmMjI4ZjllODNkYjI1NjMzOTJkYmNjYTI4ZDgyNzQgcHkzaworNjgyNDkgNDUwZWNiYjU2YzdiNTBlYjkyYThjZTZmOWM2MjUxZTcyN2I2ODMwNCBweTNrCis2ODI1MCAyODMyMWRiZGZkYzBjMDZiZDM4ZTNhMWIzOGEwZDY0NDYwMjM0MGY5IHJlbGVhc2UzMC1tYWludAorNjgyNTEgOTYxODgwMzFiMWI1OTc2YmI3ZWEwZTY4OWU2NGMwM2Y5NGJmNzJmMSByZWxlYXNlMzAtbWFpbnQKKzY4MjUyIDQyMjlhNGIxNGYxZDg5M2MzNGI3YTFkMTk2NzQyNDRjNjI4YzM5MDggcmVsZWFzZTMwLW1haW50Cis2ODI1MyA3ODI1NzhjOTJlMWQzYWJjMTIxMGNmNmU3ZGYwM2UwOTVmNjZhMzkyIHJlbGVhc2UzMC1tYWludAorNjgyNTQgNWViZjgyNjg5ZDM2YjRlNWU5MzQ4OWU4YTY2NTcxODNmNjliYzk3YyByZWxlYXNlMzAtbWFpbnQKKzY4MjU1IGZkNGRhODU1ZDYwM2Y1ZjdmNTg1NDMzZTFkNTQzMWEyOTJlODUyZjAgcmVsZWFzZTMwLW1haW50Cis2ODI1NiBjOWU1YzFmYTI4NWU4M2FkNWM5NWRlNmIwY2JiNjU4Mjg3MzRmNDA2IHJlbGVhc2UzMC1tYWludAorNjgyNTcgZTgwYzgwNmNlMDJiNDY0NDBmYjMyY2MwMTMyOTQ4MzliMTg1ZTAzMyByZWxlYXNlMzAtbWFpbnQKKzY4MjU4IDQ0Mzg3ZjFhMjhhMjBiNDY2OWUwNWYyMGZmMzc4OGVkZDc0Yjc1Y2MgcmVsZWFzZTMwLW1haW50Cis2ODI1OSA5MWYyZmJhMDJhNTAyMjI4OWY3ZGU5NmIyYTYyZTFkMjI4NDgwZmQxIHJlbGVhc2UzMC1tYWludAorNjgyNjAgODFjNDliYTdiY2NmNzc3OTY2MjJkMTkzNTk3NDIyY2VlMjJjNGU1NCByZWxlYXNlMzAtbWFpbnQKKzY4MjYxIGZhZGY3OGY1ZjhhZDM2ZWRlNjM1ZTZiYTU0ZmM0ODllOTEzNWUyODkgcmVsZWFzZTMwLW1haW50Cis2ODI2MiBkYjQ2NDQyNmEzNjUzNzIxNzlmYmQ3OGJkMGNjOWVjZDdiOGQyNmUzIHJlbGVhc2UzMC1tYWludAorNjgyNjMgMjRiMThlODdkNjY0ODkxOTA4NTI0MTVhMTc3MzAzYTI1MTQ1NjE4ZCByZWxlYXNlMzAtbWFpbnQKKzY4MjY0IDE1NDgzNjFiZmQyZjNiYjZmODVlZWY1Yzc2NDM3ZmQxZDhjZjA1M2UgcmVsZWFzZTMwLW1haW50Cis2ODI2NSBiYWRiNDcxZGJhZWJlMDFhODVjYzQwMGQ3YzNkNDA0OTI0ZTFkZjMwIHJlbGVhc2UzMC1tYWludAorNjgyNjYgMjc5YTUxMDA2ODg1MDBlZGI3MmRlYjk3ZTI3Mjg4NjE3MTczMTU5YyByZWxlYXNlMzAtbWFpbnQKKzY4MjY3IDA0N2RmMGE1ZjE3NDM2MDRjNjY1ZjI0YTI1MTkzNjBhNWFmY2JhOTcgcmVsZWFzZTMwLW1haW50Cis2ODI2OCA1YTViMGIyZDAxYjkzZWM5ZmJhNTUxZTBmMDc1YmMxNTIxOTY2NjQ2IHJlbGVhc2UzMC1tYWludAorNjgyNjkgYmQwZTM2MWJkNjQyMTUxYjdiMjEyMmE1Y2NjMzM4Mzk1ZDk3NmEzMiByZWxlYXNlMzAtbWFpbnQKKzY4MjcwIGZiZjdmNTNmNDg4OGQyOTJmOGIxZWU0MTExMmNiN2NlYzcxYWE4NTEgcmVsZWFzZTMwLW1haW50Cis2ODI3MSA2ZjMwYjk3MTQ4YjY1OWMwNmRlMzQxYTQ2MDRlOGQxNzcyNDEzZTNlIHJlbGVhc2UzMC1tYWludAorNjgyNzIgODUxYzJmMDRmOTVkNWFlYmE0OTBmNzBkY2EzOWMwYzdhZmZhYmFmYSByZWxlYXNlMzAtbWFpbnQKKzY4MjczIGI5NmQ2MTY4OGI4N2NmMDNlNDA0ZjAzZWE1NDEyZWI1ZThkN2RhZjUgcmVsZWFzZTMwLW1haW50Cis2ODI3NCBhNmVlMmZmNGRlNGQ4NzNmZjI1ZjgxNTcxYTI2YzJkZjcwOGJmMGVmIHJlbGVhc2UzMC1tYWludAorNjgyNzUgOTNjZjNhNmVhZDYzOThjZWFjZDQ1NTNkOTc1MjY5NzRlZTJhZTFkNSByZWxlYXNlMzAtbWFpbnQKKzY4Mjc2IDA1YmY3MDAyZWM5NDI2NTEyMDczYTU4MzQxYWM4ZTcxNmViMjVlZjkgbGVnYWN5LXRydW5rCis2ODI3NyBhZmFjMGNhYmMzYWQyMDcyMzUwNmIxYmMxNjE2ZjliNTgxZDkzZmIzIHJlbGVhc2UzMC1tYWludAorNjgyNzggZWE3ZTMwN2RkZDUxYWYzNTRmMTg1M2NiYjJhNDE4YzcxMGRkMzNkMiByZWxlYXNlMzAtbWFpbnQKKzY4Mjc5IDdhYzFmNmJlOGFkNTU1MmIzNTc3NjM1ZTY4YTU3ODlkMWE1ZTM2ZDcgcmVsZWFzZTI2LW1haW50Cis2ODI4MCBmYjkwNTg5MGQwNDlhYTMzYTQ1ZWVkY2M0NjY5MzM0NTgzZGYyN2VkIHJlbGVhc2UzMC1tYWludAorNjgyODEgOGIyYzFhMGE5YTJiODEzOGU0MDVlMTZkZTU5YTViYWY4ODc3Zjk3NSByZWxlYXNlMzAtbWFpbnQKKzY4MjgyIDIyYjExYzIyY2VmODQ1OTc5OWRkMmI2NmExMWYwNTNmM2M3NDdkZGQgcmVsZWFzZTMwLW1haW50Cis2ODI4MyAzYjA4Njc0YjliNDgzZjc3YzI3MDY5MjRlNmZmN2Y5ZTI5OWRlNGY4IHJlbGVhc2UzMC1tYWludAorNjgyODQgMWVhNTAxM2Q5ZGFlMGYxMjE1NDM5MmM1MzdlZDgxYzcwMzNhNzE0MSByZWxlYXNlMzAtbWFpbnQKKzY4Mjg1IDllYzk5ZmRmODA0ZjE4MzQ3ODE1YmRjZDgwNmIwMjRjZjZkZjQ2OTcgcHkzaworNjgyODYgOTQwM2RlZmI2OWZiMTliZjliZGI0MjUxZjU1ZjExZTNhZmY0ZmZjZCByZWxlYXNlMzAtbWFpbnQKKzY4Mjg3IDFjYThjNjg1OWEwNzg1NDgzNWQ5YWI3Y2NlNDZjYjE1NzQ1YTU0MWEgcmVsZWFzZTMwLW1haW50Cis2ODI4OCBiYWVkYjA2OWU0MjU2YmFiMzQ5NjNiOWQ3ZDQ3NDY0MmVkMGI0YWVjIGxlZ2FjeS10cnVuaworNjgyODkgNTM2Nzk4NTk4YWYwODhkM2E0MDkwMzA0OWZlOWYyNWUxZWRjOGQ5ZCBsZWdhY3ktdHJ1bmsKKzY4MjkwIGQ0MWE4Njg3NTMzMmE3NmE0MGEzY2UwYjUwZmQ3YjYyMGNkOGM3NTcgbGVnYWN5LXRydW5rCis2ODI5MSA1NGE1YWZmYjZhZjAxODU4Njg0NWViNzYzZTVlZjM1NGVhM2NjNThiIGxlZ2FjeS10cnVuaworNjgyOTIgZjRlZTAwMDZlZTM5MmY0ZWU2NTBjY2UzOGQzYjI3NTc1NzNmNzRmMCBsZWdhY3ktdHJ1bmsKKzY4MjkzIGRhMzRmMDI2NjRlZGM5ZDUyMTgyMGM3Zjg1ZDc3NjA5YWMwZTkyYTUgbGVnYWN5LXRydW5rCis2ODI5NCAwNTdjYjQ2ZGRhYWQ3YTllNzIzOTY4OTQ5NTkzNWI3NGQ3Njg5MGY0IHJlbGVhc2UyNi1tYWludAorNjgyOTYgZjg1NDM3M2E2NmU1NWJmZDNhMjI1YTM0OTA3ZWE3NzQyOTc2MmU5YiBsZWdhY3ktdHJ1bmsKKzY4Mjk5IDNhNTQwZWQ3OTVkM2IwNjhmODQ2MmYwNTcwYTkwY2E5MjVjNGUxMDkgbGVnYWN5LXRydW5rCis2ODMwMCBmYWM5MzUwYjQzN2RjOWRkMWM4ZmU3NTllMTNjM2Y0NmVlZWUxYTg2IHB5M2sKKzY4MzAxIDExNDZiN2IwZDUxOGIzYzc5ZTU2MzFjYzZmMTVmMmNiZTJmNmVhYTAgcHkzaworNjgzMDIgNTg0YjI2M2I5OGRhNjRhNGI3N2JiOTYzZDU2ODY5ZjU0ZDQ4M2E0MyBsZWdhY3ktdHJ1bmsKKzY4MzAzIDlkNTA2M2I0MTFlODc5NTZiNDNmNzNlNjMwMTM4ZDBlOWU1MGNjZmMgcHkzaworNjgzMDQgZTE4ZjMyMmI5MzFlNzkwNjQyMTUxYmI0NGU0YWMzMDk2OGMxZjkzYyBsZWdhY3ktdHJ1bmsKKzY4MzA1IDZlNGRkZTJlOTVmN2QzYzQwZDE5N2Y5ZTBlZmYxNDFlYzhiNGVmZTMgcHkzaworNjgzMDkgMTNmMTg1N2RkOWJmNWRhOGU0ZWZlZmJhOGExZmM0ZjgzNTI4ZGE1NCBweTNrCis2ODMxMCBjMjVlNWI2MjBhNGNmMjQ4MTc3M2Y4ZTI3NjVhMTA3MWE1OGY0ZjliIHJlbGVhc2UzMC1tYWludAorNjgzMTEgOTJjZDM1NTFmYTEzMWI3OTljN2ExZjRmODU2MjM3YzQ1N2NiM2IwZCBsZWdhY3ktdHJ1bmsKKzY4MzEyIGJjOWY4MGRkYmJlMjVmNTJmOGE3OGNkMGZhNzA3NWI3NzllNDVlMTMgbGVnYWN5LXRydW5rCis2ODMxNCAyY2FmZTk4OTExN2EzM2RlNzkyZDkzNjIwNmMxODcxNGU4NjI2YjVkIGxlZ2FjeS10cnVuaworNjgzMTUgNDc0NzQ1YjdhMTJhNmNhOWVlNjUyZTc5YTAyMGMzZmNlZTI4ZjM4OCBweTNrCis2ODMxNiA0MGJhMmExMjUzZmE0YmQ0ZTE0NmIwNTBkZmE0ZmQwMDMxYzBkZTkzIHB5M2sKKzY4MzE3IDA5YTQ5OGViMTgyMDU1ZGVjNmI0Zjg2ZjQzZWJiYTVkYjViMzViOTcgbGVnYWN5LXRydW5rCis2ODMxOCBmZDBiYjY4YWQ1YzhiYzFjZjg1MjM4OGYzM2MzODg0OTE3YmMzZDk4IGxlZ2FjeS10cnVuaworNjgzMTkgOWRlMjFlNjE1NTc3ZThmYzRiMGZiOGIwNjQyYzhhZjUzMzkxNDhkMyBsZWdhY3ktdHJ1bmsKKzY4MzIwIDJiZTQ5MGFiZjMzMzNjMjAxMzk1M2U0MzRlNDU2NzFhNTdlNTQ3YmYgcmVsZWFzZTI2LW1haW50Cis2ODMyMSA1NDM2ZTUzNGRhNmU0YTM3OGY5YzhhNzNhZGZkMjM5ZDYyMTIwZDczIHB5M2sKKzY4MzIyIGRkYWVjNDdlNmRkOTlhNmUxYjVmZTM0MmEwNGVmNWYxMGM4ZTk5Y2UgcmVsZWFzZTMwLW1haW50Cis2ODMyMyA2YTZmMTM4ZDQxNjJjZjAwYmQ0NzJlNTIyMDU5MzhmZDc3NmJhYmY1IHB5M2sKKzY4MzI1IDE1YzRjOWUzMzBlOTIwZmI2YjI1MDEzMDA0YTgwOTNkMzdjYzllZTkgbGVnYWN5LXRydW5rCis2ODMyNiA4Njg1ZTU4NTVhNDc5NzM5ODg2NjAzNTcwOTAyMTVjNzk5N2RmNzg3IGxlZ2FjeS10cnVuaworNjgzMjcgZTE3MWNkNTNhYzRiNmVkNzU3ODc3N2Q0NmUxYjk5YmRlMGUzYzcxMSBweTNrCis2ODMzOCA3NThkOGZiN2JkOTkwODk3NTI4OTQzNTkxZjk1M2NjMmM2ZmEzZjEwIGxlZ2FjeS10cnVuaworNjgzMzkgOTE3NDg5NTk3MmNiMDkxYzEzMDhkZTU0NWFiZGY4NmMwMTY1MjJmNCByZWxlYXNlMjYtbWFpbnQKKzY4MzQxIDZkOWIwMzMxZDA3M2EzZWVmNTZlYjUxNWIxOTZjMDg0NjIwMDBkZTkgcHkzaworNjgzNDIgMjU1ZTY0YTEzNzU1MWRiNWFiNjg2MDZlYWZiNWEzMmI0YTVkNmU1ZCBweTNrCis2ODM0MyA2NGY5MWZmMjRmZTZjMjQ4MDFjOTFkZjEzNWY5ZmI2OWNjZDBjMTQwIHJlbGVhc2UyNi1tYWludAorNjgzNDQgNzI3ZWUxNjY1MjE5ZGRjN2RmMjZmZTNkYTk5MWEwNGExMmM4ZmZmZCBsZWdhY3ktdHJ1bmsKKzY4MzQ1IGU0YWNmMDc5YjUwOGRjMDEyNTFmNGRjNDQ5ZDliOGZjMjY2YWVjYWIgcmVsZWFzZTMwLW1haW50Cis2ODM1OSA0NWFlZjUzZjVjNzFhYzRiM2NiODkwZDQxYzFiOTc0NzBjYTg5MjgwIHB5M2sKKzY4MzYwIGZjMDAwMDY4MmJmZTdjMGVkNGRmYzMwMzdlODAwYjIwYzFlNWIwMmEgbGVnYWN5LXRydW5rCis2ODM2MSBiZTliMTViZjY4MjgzMWNhZmMzOTVhYjM4MjZiYjZkNDEwOTFjNmY3IGxlZ2FjeS10cnVuaworNjgzNjIgNjE3MTk5NzY5YmQzODRiNTE4NGJjNDZhMjg2NGU3MThmOThhMjNmNiByZWxlYXNlMjYtbWFpbnQKKzY4MzYzIDJmZjk5MTBmMTUyNmM4OTM0NzIwNGRiZDk3MjM5YmFlMGU2MWNkMmQgcHkzaworNjgzNjQgZTk4N2UwZGY4ZjQ4ZjQxMDA1OTJhNjY3YTQyMzIyZWViNmZlNjQ1NSByZWxlYXNlMzAtbWFpbnQKKzY4MzczIDg5MzNkZWJiOTMwOGViNzA0OGQ3NTc1Y2Y0YzM0MDYwMmJjZThkNmQgbGVnYWN5LXRydW5rCis2ODM3NCBhNGFmNWU2ZjZiMTdjMzkyNDZhNzllNmQ0ZmU0MGVlMTNlNzhmZTY5IHJlbGVhc2UyNi1tYWludAorNjgzNzUgODFkMjM2ODRmNjk0ZGUxMTE0M2FjZjJhZmI5MTIyNzgxMzlmZWU1NCBweTNrCis2ODM3NiAwMjc2YjhmZGRkYTdkNWQ1OTRmYjIwYzY3YWM4M2NkYTVhNDkwYjg2IHJlbGVhc2UzMC1tYWludAorNjgzNzggOGE1YTk1OTExMDBkZTcxNzRmYWE3OGYzNDM3MTZlNTc4NWNmNDI1YyBsZWdhY3ktdHJ1bmsKKzY4Mzc5IGZlZDJhZTFlNTBjMmZkNTVmOTczMzE0OWY1ZjkxOWJhYTY4MTU5NDIgcHkzaworNjgzODEgZjBlMGMzNTM2ZTIyNzI1MmEwNDNlOTE5ZDkzM2QyZjU2NzAyMzExYSBsZWdhY3ktdHJ1bmsKKzY4Mzg4IDQ0ZjE0ZmQ0ZDljMjczMTM5MmZiOGQyZTUyY2FjZTJiNTZlODBkNDggbGVnYWN5LXRydW5rCis2ODM5MyA1YWM4ZjBiNWE1OWJmY2M1N2RlOWQzZWE5NDZhYzk3ZTNhZjBjYWUwIGxlZ2FjeS10cnVuaworNjgzOTQgMGI4ZDJjZjNmNTViNDJiM2I4ODY2NDk4ZWQ0OWIzOTQ4Y2QyZmFkZiByZWxlYXNlMjYtbWFpbnQKKzY4Mzk1IDc2ZmExZGUyNzQyYTk4YTEyN2YxMjYzOGZhNzNmMTkyNmFjOWJhODYgbGVnYWN5LXRydW5rCis2ODQwMSBhMjI5Y2EzYTEyYWUyYzQ2ZGE4ZGFkMTc5NGViN2U1YzgzMWJlZjkzIHB5M2sKKzY4NDAyIGU2YTI5NzkwZDc1YWUwYmE3Y2VmZTM3ZGUzNjc4NGFmM2E1ZGRkYzIgcmVsZWFzZTMwLW1haW50Cis2ODQwOSBhZGM0MzBjMTZiNTdiNmE3NmI3ZGNjYzk3NzUxOWRkNWY5NmE1YWFkIHB5M2sKKzY4NDEwIGZmZmQxMGMxMmExYjc3MjM5ZmI2YmUyZTc2ZTJmZDcxZDFkYzJlMTMgcmVsZWFzZTMwLW1haW50Cis2ODQxMSBmOWY1ZDkwNDdhMDU0MWZhMTZmZmI1ZWMzNjQwNWYwYWRhNTc4YWM3IHB5M2sKKzY4NDE1IGEzZjMyOWYyM2IyMzZlMzMxNTMxODY0ZDU5MWFkMzI2YmZjNzk4NjQgbGVnYWN5LXRydW5rCis2ODQxNiBlYTQzMTk0M2E4ZGU1MjYxN2JjNWE1NWE1NzYyZWQ3YTA5ZjgzZDQ1IHJlbGVhc2UyNi1tYWludAorNjg0MTcgNTg5ZjY4NDRkOGUwZWMzYWFlZjE5ZDJjOWI2MjY5ZDIyYjEyNjQ0MyBweTNrCis2ODQxOCAzNjhkZjAwNjA3NDBjNzI2MDE3MjMyOGNiMzIyNjAwOGNjMjZmOTlkIHJlbGVhc2UzMC1tYWludAorNjg0MjMgZWQzZmRiZjEwNzc1NTZmMmQwMmVkZmZjNWZhNTUxNWYxNGNhZDgwNyBsZWdhY3ktdHJ1bmsKKzY4NDI0IGVkZWI5MDM4YzQwNWIxMTQ3MDRjMzVhNDgxMTQ5OTNkMTZmZjM0MWIgbGVnYWN5LXRydW5rCis2ODQyNSBkOTdhYTk0M2JlYmI1NWQzNThjYjJhYzA2MjlhZTljOTI4MzJmMmUzIGxlZ2FjeS10cnVuaworNjg0MjYgZDhiNjRjNjc2YmNiMWRlNWY2MjU0ZmQzYzFhMzY1MzhiYzcwMmVkYiBsZWdhY3ktdHJ1bmsKKzY4NDI3IDVmMjkyZGViZDI0YzM1NGQyNWI4NjNlODc5N2ExMTcxMDE0NTk1ZGIgcHkzaworNjg0MjggZTQ5NmZkYjkyN2ZhNjJkMDQ4M2EzMzk1ZGUxZWU1NzhmN2MwNzViNSByZWxlYXNlMjYtbWFpbnQKKzY4NDI5IDVjNjI0NGQyMTdmZjExYjk3M2RjOGQ1YjRkMGJiMDhlN2Q5Y2VkNDggbGVnYWN5LXRydW5rCis2ODQzMCA2OWEyYTRkYmQ5YjRmNGRhNGY0MDZkNWFhZGM0NjY2ZGJjMjJhZmRlIGxlZ2FjeS10cnVuaworNjg0MzEgNzJmZTUxZDZmODAwYmNlNzdjYzZjNDRjODkxZjM3MDEwYmIzYzFiYSByZWxlYXNlMzAtbWFpbnQKKzY4NDMyIGVmM2ExZWNkNDY2M2ZlNjU0ZTI5MmVhMDMxZTFmNzZmOGE1ODhlYWMgbGVnYWN5LXRydW5rCis2ODQzMyBlM2MyMTI3OTk3MDZlNjZmYWM3M2M3OWJhMGY0YTNlZDMwMTYwY2Y5IHB5M2sKKzY4NDM0IDQ4MGZjZGQ4MjAxNjIwOWRkNzI5OWFmNTMwZTRjM2RmZWI0ZmFhYzMgcHkzaworNjg0MzUgMzY2ODZkNGQ3ZTcyNzViYzI0NjFmMTAxOWY1NjIxMjA2MmFiM2QzMiBsZWdhY3ktdHJ1bmsKKzY4NDM2IDNiOTMzNTg1NTQ3MTk2YWVjMDQwMTA2NjEwYThkNTgxNjZjMTMwMmYgcHkzaworNjg0MzcgMGE2NmUxZGMzMGYyMjM1Njk4MzdhN2QxZWU5YTI4YTc0MmZkNTI2OCByZWxlYXNlMjYtbWFpbnQKKzY4NDM4IGM3YzM0NGI2M2VjY2ViZjYzMjczZmM4ZTJhYTdiNWE4MWQ5MWVlZDkgcHkzaworNjg0MzkgN2I4NmQ2Y2FjMmIxODVlMWM1NjAxZTc3ZGFlMWUwODE2YjA3NDE0YSBsZWdhY3ktdHJ1bmsKKzY4NDQwIGYxMjdiY2IwYWE3MTIyNWZmYjRjNWFiZDc2YTgzZmY4Y2RmMjQ1ZjcgcHkzaworNjg0NDEgOWYwNDFiYTNlNGM5MWZjMzNmM2NhMzkyZjdmMTI3MmEwODhkYzU2MiByZWxlYXNlMjYtbWFpbnQKKzY4NDQyIDlkMDkzZWY4OWM1NjA3NWJlZjBkYzBiZDUyZjBjNmI4ODdlOGQzNWIgcmVsZWFzZTMwLW1haW50Cis2ODQ0MyBjZTM3MzMxMzlmYWM4MDNlZmE4NGE0NGRiZWIzM2IyMzNiNjE0YTljIHB5M2sKKzY4NDQ0IGM5NGYwMjc5ZmVkZTk3N2IyNDc5NTYzZGNkNzA5NjY3NzE1NDUxYTQgcmVsZWFzZTMwLW1haW50Cis2ODQ0NSBjY2Q5NWIxYWFkZTlkNGM5OGRhYzkwNWM3MzNhNThmMmU0ZWJhYzA5IHB5M2sKKzY4NDUwIGI3M2JkNWE3NGEyNzg4MzdiYzJhMDIyOTdjZjg0MjNlZjEzNDNhMzkgbGVnYWN5LXRydW5rCis2ODQ1MSBiYzMwZTM5NWFhMTRhZGVmMDAyM2QxMDIwM2UxNTM2ZDMyMGNlY2RlIHB5M2sKKzY4NDUyIGI5OGZlOGRjOGFjZDZhMTA0NTBiZDlkM2FmODY0MWQzZWFjZjA0MjEgcmVsZWFzZTMwLW1haW50Cis2ODQ1MyAzODg2ZTRjODhmYTU5NmQ5MGUyNDgwYjNlMTI4NWUzMmEwMDViZWUwIHB5M2sKKzY4NDU0IDhjNDlmZjBjZTE3YWYzNmVlOGQwYjg5NGEwMjIyZDI4NDgyNDNmMTEgcHkzaworNjg0NTUgZmRjY2E4NzkzZWI5ZjdlMjUxMTgxMGZiMmUxMDBjZWU2MDQxNzk4NSBsZWdhY3ktdHJ1bmsKKzY4NDU2IDliMjc2Y2UzNTY5N2IyNTZhOWNiZTNhZjlmOTE1MGE4YTRlYzUxYTYgcmVsZWFzZTMwLW1haW50Cis2ODQ1NyBjYTA5OGZjMThlYzYwOTgwMzRiZTJlNGYxNGU0ZjI3ODc4ZDliZTZhIGxlZ2FjeS10cnVuaworNjg0NTggMDdiYmMyZTIwYWE0YjUwMmZhMWQ3NjY0NWEyZWUzZmUyZDg5MzJhNSBsZWdhY3ktdHJ1bmsKKzY4NDU5IGYxY2E1ZGQ1OWFjYTgyNjRlYjhiYzZiOTVlMjA5OTcxODFjMzliNjAgbGVnYWN5LXRydW5rCis2ODQ2MCBjOGY3OTNlMTU5YmJiYmU5NzVlN2QwZGE0NmQ5Yjg4OGEwMDQ5YmU0IGxlZ2FjeS10cnVuaworNjg0NjEgZTZmNTVjOWVjM2QwMTRhZmU5NGMwOGI3Nzc4MTYzZDZkZjI0ZWQ3ZSBsZWdhY3ktdHJ1bmsKKzY4NDYyIDc5Mjc2MzE2Yjk0YjM4ZjNkZWVhYThiMDM3MDEzYjkzY2I2MGE1ZWIgbGVnYWN5LXRydW5rCis2ODQ2MyA2MmNhMmNjY2RiNmZjMjBlYTMzM2FmNTg3NGRiZmZjOGM4NTA2OTBlIHB5M2sKKzY4NDY0IDljMmJkNjQ3YjY0NjRlYjY2NWRkYzAyMjhlNTcwMTExYTY1NTdiNTggcmVsZWFzZTMwLW1haW50Cis2ODQ2NSA1ZDBlYWMwMWEyODVkOThlYTM4MmRhOTcwMjViNjY1YWFmM2MzMDNkIHB5M2sKKzY4NDY2IGJjNjcwYThkZjQ0YmIyYTM4YTI0MWE0MjNlOWYyYjE3MjM2ZGQ5NmIgcmVsZWFzZTMwLW1haW50Cis2ODQ2NyA5MWUzODUxYzhjYzdjYTIyNDNhOTQ1ODUxZGM1ZTU2YWIzNjZhMGExIHB5M2sKKzY4NDY4IGUwMGIzMjQ3NDliMDRlMjk2MzVjYmIxY2FmNmYwMjQ5MTIyZjBjNDQgbGVnYWN5LXRydW5rCis2ODQ2OSA4YWY1MWNmZGQ1ZTkwYzEwNTExMzFjNTBhMTJkZDU1N2M3ZGYyYTQ1IGxlZ2FjeS10cnVuaworNjg0NzAgMWUwNzBiODNjZmE5NGI3MGE1M2U0YzJiMDFiOTc5MDY3OTFkOWU1OSBsZWdhY3ktdHJ1bmsKKzY4NDcxIDkzN2Y1MDBlMGYwNmQwODA3ZmU0ZTA1ZTFkMGI3ZTNmMmE3Y2RhYmUgcmVsZWFzZTI2LW1haW50Cis2ODQ3MiBkNDQ4M2ZlY2Q2ODczYzBlY2M0MDc0ZDQzMGRmMzZlZDhmNGFmZmFiIHJlbGVhc2UyNi1tYWludAorNjg0NzMgYzM0ZDcyMWMyZGM3MjQ2MjliMmFiNTFiZjEwNTUyMzNkNjUwMjQ1NiByZWxlYXNlMjYtbWFpbnQKKzY4NDc0IDYzOGUzMDllY2M5OGFlODFhMGFkYjdkNTc2NTBiZDAzOTBlODVjNmUgcHkzaworNjg0NzUgYTBmZjkwMDdjMmFhM2U3ODhiYzkzNDAyZDU1NDg4ZWVlMDZiZmM1OSBweTNrCis2ODQ3NiA1MzAyZjgwNjUzN2E3YmJjMWY2ZGZiYmQxNTFjMTZmMzAwNzc0M2UxIGxlZ2FjeS10cnVuaworNjg0NzcgZDMyNmE2NzNjYjY2MDVkZjRlYWZjMWQxZjQ4OGVjMzRhZmVhZDBhMSBweTNrCis2ODQ3OCA1YzZjYmI3YTYyYjA3NmJlYjUxZmQ1MjU4MzJmMTVhOTdiOWJiOWRhIHJlbGVhc2UzMC1tYWludAorNjg0NzkgZmE5MjI5ODVhZjczMjE3ZWI4YWQ4MWZkZDkwNjRhMmFmMzdlMTNjZiBweTNrCis2ODQ4MCBkYmUzOWViZDMwMjU0ZmVmMzUxMjJkMzhmOTBiNGM2YWFlNTJlOGRlIGxlZ2FjeS10cnVuaworNjg0ODEgY2RjMmZlMWJlOGE1ZTIwZDg5M2Q2ZWUwNjZmZTIzNWZiMmIxMzE4NiBsZWdhY3ktdHJ1bmsKKzY4NDgyIDJkNDcxZmQ4OGFmZmIyOTQ4OTI4ZGRkYWEyMWQxN2EwYTUxNzQzNzkgcHkzaworNjg0ODMgOGU2MjNiNzhhY2JmNmMwZDY2MWU0NjMwYTVmYjg3MDI1MGNiMTI4YyBweTNrCis2ODQ4NCA1ZDVkOTA3NGY0Y2FkNDU3MDJmNGE2ZmJkNTBiYWVjNDViY2U2Mjg4IGxlZ2FjeS10cnVuaworNjg0ODUgOTljNDQxNjQwZjcwYzcxMDRmNzg0NDBmNzllZjJmOTQ0MjRmZDhkNSBsZWdhY3ktdHJ1bmsKKzY4NDg2IDE1YTA1NmUwZjg5ZmVmMjY0YWIyMDlhYTFiMGU3ZTViYjBjMmQ1MDEgcHkzaworNjg0ODcgNzQ0NGY1NjRlMjdkMWU5ZjY1OWIzZjhhNDRmMDU3YzdmNDY2MTdjMiBsZWdhY3ktdHJ1bmsKKzY4NDg4IDhkY2FiMjQzOTdhOGQyZjAwNzA3ZTBmNGNlZTc3MmVmZWI4NjJlZDIgcHkzaworNjg0ODkgMjkzYWM0NGQ3ZmYwZGY2NmU0YTQwMWQxMTYzNzBiMjA5MDBjMjBhOCBweTNrCis2ODQ5MCAzYjViZTBlZTMyZWFjOTc5OTFiNjdhYzU2ODc5YjQ1YmFmZWI0OThmIHJlbGVhc2UyNi1tYWludAorNjg0OTEgZTk1YzNhZWI0Yzg1ODM4ZGEyYWEyMDlmNmRjNzAyNTE4NDNhNWMxZiBweTNrCis2ODQ5MiBlZjRiZDc3MDhhZDdiM2RjMjg5YzczM2UyM2E1ZmE2M2U2NjcxNDgwIHJlbGVhc2UzMC1tYWludAorNjg0OTMgNDBjYThiMjEyMjA4MWRlNTNmNTIzNWI2ZjUxMjE0NWNmYjM2ZWQwYiBsZWdhY3ktdHJ1bmsKKzY4NDk1IDEyOGUyMGRhODllYjQxZmNmNGI2ZTYxMmM5MDg5MjRiZWVjMGViZTUgbGVnYWN5LXRydW5rCis2ODQ5NiA1ODYxZjZlMTA4NjA3NTNkMGU3OTlhMjQ1Nzc3ZjgxMzhlMGYyMjAwIGxlZ2FjeS10cnVuaworNjg0OTcgOTU1NzZkOGFmNzk4OWUzNDM1YmY5NTAzMDdkODJjYjg5ZjI5NDMwMyBweTNrCis2ODQ5OCAwMjQ0OGNjZjQxZTAxYTU5MDM4NjBkMDRiYTVlNzc4ODk3NTMxMTQ2IGxlZ2FjeS10cnVuaworNjg0OTkgOGUwM2RhYWFmYzc0MWRiODk4ODZiODE5NDEwNDc0YTg0NmQzN2JhMiBsZWdhY3ktdHJ1bmsKKzY4NTAwIGQ4N2NiZmM2YzVjNjc3MTQzMTVkYzk3MGQzZjc4ZWQ5M2YwNzA0M2YgcHkzaworNjg1MDEgYmJmNDY0MjEwOTg0MDQ1YmExNTE5YTIyYWU2ZTA3NThjYjk2NWRmMCBsZWdhY3ktdHJ1bmsKKzY4NTAyIGVhZjdjZWI4YWI0NTRhM2YwM2JmNTEzNjdlOGRhNGU0M2NkMDk4MmUgcHkzaworNjg1MDggOWUxODFlZWRjOTVjYTJiYjlhNTA0NGExNTc2ODYwMDc3MjIwZTIxMyBweTNrCis2ODUwOSAwNDk2OTYzZmNmZTlmYjY0Yzk0NThjMjFkMzU2MzU5MzIyMzYxZDExIHJlbGVhc2UzMC1tYWludAorNjg1MTEgNGQzNTBmMmIxZjJlODM4MGNjNWU4NWRkN2FiNjcyNWY0YTNhZDAzOCBweTNrCis2ODUxMiAxOWRmZmRlYzU1NDdhYjk0MmQ0Y2NkY2MwOWQxNWI2YWVkNmQ2ODRkIGxlZ2FjeS10cnVuaworNjg1MTMgMGYxZTRhYjk1NjU1MTcxZmY2MTBhZmIzYzg2ZDJlZjVlY2ZjMzQxOCByZWxlYXNlMzAtbWFpbnQKKzY4NTE0IDQ0ZTBjNjlhNTMwNDgxZDdjNzgyYzZhMGYyNTc4MTNkNTI4NGQwMGYgbGVnYWN5LXRydW5rCis2ODUxNSA0M2VkYzY1ODFlNDRkZmM0ODJjYWI0MThlM2FkZGNlNGFlOWY5OGMxIGxlZ2FjeS10cnVuaworNjg1MTYgOTNiMmE5MTNkOGFjZmQwNzNiZTZhNWY4ZDY5NDAxNzdkMjZjMjJiZCBweTNrCis2ODUyMSBhYjA4NmFmZGNmMGNmN2UwZjQ0NWY2ZjI0ODhkYjhkM2Y4NjQ0ZmJiIGxlZ2FjeS10cnVuaworNjg1MjIgMmQ4OTc3MmNjMjU2ODhhNmZmY2Q0MjI1OGExNmJiMDZiMjExNDk2NSByZWxlYXNlMjYtbWFpbnQKKzY4NTIzIDI5MzVjZWRlNTk0ZTM3N2ZlYzFiZmFkZjY4NzE0MjgwNTdmODY5MTggbGVnYWN5LXRydW5rCis2ODUyNCA3NTY2MWJmOGNiMmM2NzNjMzY3MTM5NzBjODgyYjlmMDFkOGQxNzYyIHJlbGVhc2UyNi1tYWludAorNjg1MjUgOTVhNGY1MzA4YmUyNGNkZWFhMThiOTY4MzRkNzNhNmY0Mjc3OWViOCBweTNrCis2ODUyNiBkYzQyYWRmODg3YjU3NWYwNDIyZTNlMGU1YzFmZmZlYTIxZWY3NGE0IHJlbGVhc2UzMC1tYWludAorNjg1MjcgZDg0MWZmNjdjYzYxYjhhMjU1OGZhNzVhM2UwY2UwNDI4NDFiMzY4MyBsZWdhY3ktdHJ1bmsKKzY4NTI4IDcwNDQzYWU3NmIxMDVjODE5YzA1NzRhODVkOWZlODM5NTU1MTAxZWIgcHkzaworNjg1MjkgOTJiZDAxNDE1OTA2OTdiNTkzMjFjMzdiNmI0MTA1N2YyODQwNTY2NCBweTNrCis2ODUzMCAyZmZkZjhkZDNlOGI1MDY0YTI5NWU0MjU5ZjI1OTQ4ZDIyNGYwMWRlIHJlbGVhc2UzMC1tYWludAorNjg1MzIgZDA5ZDZmZTMxYjYxOTk4N2Y3OWZhOTQyNDNjOTAzMzRlZjJkMWU1ZSBsZWdhY3ktdHJ1bmsKKzY4NTMzIDI3ZGI4MmE1Y2RhOTE5ZGNjYTIxZjRjZmM2ZDQ3OTZhOWE1ZTYyODcgcHkzaworNjg1MzQgYjdmYmUzN2ViODkwNGRmOWNiZjk5ODVhNWRjZGIzZTJiMjgyNGViZSBsZWdhY3ktdHJ1bmsKKzY4NTM1IDQ5MWVjNDExZTVjOGZmMzZmZDE4MTQwYjJlM2ZhMGRmNDYzMDgxMmYgbGVnYWN5LXRydW5rCis2ODUzNiA3NTQzZjEyODIwNzM2OTRhNDY0NGQxNTc0YmJmOTA1NDljMzgxMDA3IGxlZ2FjeS10cnVuaworNjg1MzcgMGYxYjNmMzExYWUwMTAyZDJmOTQ4NmJiNTJkOWRlMzI4NTlmZWI4NiBweTNrCis2ODUzOCA2ZWVhODBiZGNiZjVlOGY2MTY4ODA0ZjJiMGQyZjBhYjJiMGIxNzA3IHB5M2sKKzY4NTM5IDVmNGMyZGU5NTA5MWI1MmMwNmNjZWZkOTI1ZGQxMzhiYzNjYmEzMzUgcHkzaworNjg1NDAgYWQ5NjkxMzUwYzkzMWRmNjE0Nzk1ZTAxMjA1ZTg0OWIyZjc4NDkyZSBsZWdhY3ktdHJ1bmsKKzY4NTQxIGU4MTU0YmQzMjJjYjU2NjEyYzI0MWY4MmM2NDdlNTE5OWViN2JkZGMgcHkzaworNjg1NDIgODU0MDI2ODA0MGZmMDQzZjAwODJmNDcyYTZiMmVlMGZlM2MwYjMyNCBsZWdhY3ktdHJ1bmsKKzY4NTQzIDJiMjcwN2ZmOGJiN2E5ZjI1YzVjYzBmZjg0MDVjNmU5ZDU1MzhmYzggcHkzaworNjg1NDQgZTQwY2U4ZmZlNjMyZDE2YzZmNjNiNzRiYTYyNTI4YzI3NzVhZWUzNCBsZWdhY3ktdHJ1bmsKKzY4NTQ1IDM4ZTE4YTg4NGYzZmVlNjVkMTIwOWNjN2IwZmU5ODY1N2Q5ZTI5ZjYgbGVnYWN5LXRydW5rCis2ODU0NiA4N2FkY2NlNDhkZWZlNjRmNTRmOGViNDBlMWE0Y2UwMTg2N2Y1NmI5IGxlZ2FjeS10cnVuaworNjg1NDcgYmJjZDQ2MzRhZTczM2IyZDg0MWQxN2FhOGVmNDc0MjJkNzAxMjcxNSBsZWdhY3ktdHJ1bmsKKzY4NTUyIGJjOTJiYjIwODE5ZmM5Y2I1NTZjYWJiNzU3ZjdlYmFmMDg4YzgwMDMgbGVnYWN5LXRydW5rCis2ODU1MyBmNTViODU1MzIzOTI3YmQ1ZTUwMjllZjk2ZGEyMGY3NmFlNjA2MDllIHB5M2sKKzY4NTU2IDg3MWExZmY0NmZhNjljM2RkNmVhNTQ4MzMyMTUyODNlYTQ0NjdkOGIgcmVsZWFzZTMwLW1haW50Cis2ODU1OSA1OTM0NjEyZDUwNzA1YjA0OWE4YjliMzc5NzAxYTYzNzU4ZjVlYWZhIGxlZ2FjeS10cnVuaworNjg1NjAgZTk3NDhkYjQ3NjM1N2NjNjE0MmZiOWMxZDAyNjMxYmUyODNkOWFmZCBsZWdhY3ktdHJ1bmsKKzY4NTYxIGM5OWNlMDE2NDY5OWMzZDRmNmI1OGRkMGFhMmE3YTU1MWMxODJkZDkgcHkzaworNjg1NjIgZjQ1OTk3ZDlhYzU1NTYxOGFkZDFjMGM2NmNhOWU3OTE5MWE3YzM0OSBsZWdhY3ktdHJ1bmsKKzY4NTYzIDEyYTc4N2I0NGRiNTQ0OWYwMGYwMTM1NTFjNjMzNzZmOGI3YzMzM2UgbGVnYWN5LXRydW5rCis2ODU2NCAyYzAzYzc1ODBhYTM4YmQzNmYzMjZjMDQ4MDgwYWQ2YjQ3M2Y4YzY5IHB5M2sKKzY4NTY1IGJhMTUyMWYyNDc0OTA0MzQ2MjU1YzUzODJjZTZmY2JlMjExMTU0NDggbGVnYWN5LXRydW5rCis2ODU2NiBlMzAxMTQxZTkxYjEwNDY3ZWQxZTA3ZGM0YjM0MzA2MjE0ZDFlNjI3IGxlZ2FjeS10cnVuaworNjg1NjcgZTVmOTk2Y2RhMzIxNmU0YjAxMWRiNWUwMjNkMmVjMWE3YmIxODMzMiBsZWdhY3ktdHJ1bmsKKzY4NTY4IGExOWQ1OTZkMzUwMGNmYTYwNTUzNGM0MWFiMWFjYzU2MzRlOTM0ODUgbGVnYWN5LXRydW5rCis2ODU2OSAyYTgyYmQyOWVjMTg4ODU4ZDllOGY2YWE5NWVkMmJhY2E0ZDUyNGRiIGxlZ2FjeS10cnVuaworNjg1NzAgNDU0YjY5NmMxZDczMGUyYzY2ZTI1N2RjYzdkNGZiMjBjMTFlZTQxZSBsZWdhY3ktdHJ1bmsKKzY4NTcxIGM3NzZiNmQ4MTRjMjNlOGJhYmM3YTJlZjI2MTIxMmU5MWJkZWMxNGIgbGVnYWN5LXRydW5rCis2ODU3MiA1OWIxMjEyYTRkYmYzZmUwMTMyMmYyZWM4NjlhY2YwN2FmZDJmNjAzIGxlZ2FjeS10cnVuaworNjg1NzUgYmU4ZTk1OGRlZTk0Y2VkNGFlNmM1NDcwMDY5NGU0OWY0NzY3ZThkNiBsZWdhY3ktdHJ1bmsKKzY4NTc5IDA4YWM0NDA0MDhjOWQzMmE2ZWY0M2QzYjBhZjAyZDJjYWNjZGFhMDYgbGVnYWN5LXRydW5rCis2ODU4MCA5YTVkMTQ1ZjE5YTUxMmI2YjU4M2VkZWM4OTYwZTQyY2MwNWY1ODk0IGxlZ2FjeS10cnVuaworNjg1ODEgNDM5OWUzZjEwYjE5YjBhMTcwYThjYjJjMTNhYzRjNjUyY2EyNmIzNiBweTNrCis2ODU4MiA2ZTMzYWVhZWU3N2RkMzk2ODA1N2E4ODg1MDgwNzk5M2M1ZGRkNjRmIGxlZ2FjeS10cnVuaworNjg1ODMgZjU3MTg0NGJlZjVjOWE4ZTgwNzcwZGIzNGFhNjYyNjZkNDg1MzkzYiByZWxlYXNlMzAtbWFpbnQKKzY4NTg0IGEzNDk0YTViMDQ5NTY0NmNlYzk3YjUxNjk1Y2VkYzFlM2NmMmM0YWIgbGVnYWN5LXRydW5rCis2ODU4NSAwMmFiMTYxNDIzYTU4NmQyNGQwZjBkNjM2ZGIzOGZmY2MxMmNkOTAyIHB5M2sKKzY4NTg2IDQxM2NjYTNlYmU4MmUwMjE3ZWIyOTViOGJmYmNkNTM3MzU2MjdkYjAgcHkzaworNjg1ODcgMDIyOTA1NWM4YmUwNmYxMDFkM2RkYTczYTA4ZTdiZGIwZjlhYmU2NSBweTNrCis2ODU4OCAwOTQzMzQ0YTUyNjFiYzc2MDgzN2JmYjg2ZTJiYTZlYmYxNThmNWEzIHJlbGVhc2UzMC1tYWludAorNjg1ODkgMDhmM2ZlNjkxNTFhYzZkMDQ0OTM2ODEyYzdiNTcwZDQ4ZGU5OWU0ZSBsZWdhY3ktdHJ1bmsKKzY4NTkwIGZhYjUwMTI3N2JjMmMzYzMyOWMwYzY0ZjMyYzg3NWIwNmEyNTg0OGYgcHkzaworNjg1OTEgZGRhMzEwN2Y2YmM3YTdiYjYwMDAxNDYzODBiMjBhMTQyZDNiMjM0MyBweTNrCis2ODU5MiBhODU4YjYxZGIzMjRkN2VkM2M2ZWY0OWI3MThkN2RjMzc5MjhkYTgwIGxlZ2FjeS10cnVuaworNjg1OTMgZTQ2YTA2YTI2NGIzMmRkYjRhNmViMTI2ODkyMjUyMWVjMmMzNDBhMyBweTNrCis2ODU5NCAwZmRjZTM5OWRjZGUwYTIzYzgxNzkxY2U2N2EzODFkYTFiMzM0YTAyIHJlbGVhc2UyNi1tYWludAorNjg1OTYgNjVjMTkzOGZiOWZmZjI3OGFjYzRjZTY1MmExZDU0OGFiNTE2Zjk5OCBsZWdhY3ktdHJ1bmsKKzY4NTk3IGJjZjY2NjNjNWMwNDhiYTlhMTdhYzRlYjdiM2VkMjY3MWYxMDBjNDcgbGVnYWN5LXRydW5rCis2ODU5OSAyZDQ1M2IyMjFiZWNkN2U0ZWFhZDBlZTNjMmZiYjE3ODc1ODc3ODFhIHJlbGVhc2UyNi1tYWludAorNjg2MDAgMGVmMWU2NjRhNGE0NWEyOTBkYWEyOWZiOGQ4ZWM2MTcyNTkyYjlhOSByZWxlYXNlMjYtbWFpbnQKKzY4NjAxIGUxMWM5OWUxZTZlN2VjODAxNjJjYzg4MTBmZDc4MDNmZTczOGZjNTEgcmVsZWFzZTI2LW1haW50Cis2ODYwMiAyZDVhOWM3ZTliNGUzMGI5ZGIxOTFhNjM0Yzk3OWJiZGY2NWRlMWE3IHJlbGVhc2UyNi1tYWludAorNjg2MDMgNDgzMmEwYjEyODdiN2M2Yjc5YzQ2NjM5MDViMTYzNzUxNWE5OTdjMyBsZWdhY3ktdHJ1bmsKKzY4NjA0IGQyY2MyNmJkYTZhOTM1ZTg4YTczMWYyNDY0OWYyOTZkOWZmMDQzZWMgbGVnYWN5LXRydW5rCis2ODYwNSAwNDEzMWM3MDJkMTcyNjA2NmQ0NjExYzJmNDdiN2I3YTVhMzJmZDY2IGxlZ2FjeS10cnVuaworNjg2MDYgMGUwNWUwNzhiY2VkMzMyNmFjYTk3NzA4OGRkOTM5YWRiMGIxMjc4ZSBweTNrCis2ODYwNyA4ZGY4MTk0MWRlMDVjZDU5Yjk2ODczOTAxZWY4ZGZhMmIwYjExMzBhIGxlZ2FjeS10cnVuaworNjg2MDkgY2ZmNGZjNTJjNzA4ZmQzYzAxMzAyNThmNmE0NWUxMTNiZjQxZGFkMSB0bGVlLWFzdC1vcHRpbWl6ZQorNjg2MTAgNjZiODFhY2FjYmMwNTI4M2YyZmU2MTIxYzBlZTRmOGUyNjhiNzBiOCBsZWdhY3ktdHJ1bmsKKzY4NjExIDMzNzhlYWZkMjdkZjU5YTU3MGZhYTVlYWYzMmMxNGYyMDFjNjQyZWUgbGVnYWN5LXRydW5rCis2ODYxMiBhZTVlZDE1Nzc0YjRmNTdhZDlhNzJhMmExZjFiYzc0YWM3MzA2MDU4IGxlZ2FjeS10cnVuaworNjg2MTMgZWJmZTkxN2QwZWVhMmQ3NWZiZDZkNDM4NWUzYzEyY2I5MzgwMzU5OSBsZWdhY3ktdHJ1bmsKKzY4NjE0IGQwMDg2YzE3NmU4MjRlMWQzZWIzOThhYmI4NjllZDgwMTIyNGZjNmEgcmVsZWFzZTI2LW1haW50Cis2ODYxNSBiMTdlYzRjNGE3YzM4NTAwYWViZGE5MzA3YmQ2OTZjMGIxZjIzODkzIHB5M2sKKzY4NjE2IGJiODZmMmVkMThhYWIwZTJjMjQwYjMxNWI1NGYzODI4NjZhNDIzMjkgcmVsZWFzZTMwLW1haW50Cis2ODYxOCBiZTU5YTIzYjdjMDQxNWFlYzFkODQwMzRmNmVmZDI0MmIxNTY1MWI4IGxlZ2FjeS10cnVuaworNjg2MTkgZTgzYWI5NWU5Yzg3YmRiOTM4ODI4ZTI1OTlmNzgyM2YxNzg1N2UwZCBweTNrCis2ODYyMCA0MjdlNDNkMGUwMzFjZjVjMGJjYzVlNjQzOWU0NGQwMDU4MzUxZmUyIHJlbGVhc2UzMC1tYWludAorNjg2MjEgNmRkZTBkZjNiYjRlY2I3Y2MyYWM5NWM1MGFkMmVlZWRmMTI2ZTgxZCBsZWdhY3ktdHJ1bmsKKzY4NjIyIDY1YmViZTRhMWFhM2Y5MWY1MTNlYzdjNWZiYjlkNjZmMjQ3MWJkYmQgbGVnYWN5LXRydW5rCis2ODYyMyA4ODRjZDNmMTliMjBlYzZmOTUzZjUyOTM2MjQ0YzE3MTA2ZmZkYTRkIGxlZ2FjeS10cnVuaworNjg2MjQgMjY4MGE0YmVhZWExODY5YTA0Njk3ZWEyMDFiNTBiYzJjMjM3ZjA5MSBsZWdhY3ktdHJ1bmsKKzY4NjI4IGFkYjIzNjllYjdiYmQwNjJmNDE5ZTkzMjFjMDVkYjE3MDRlNTk1YTkgbGVnYWN5LXRydW5rCis2ODYyOSAxMmE1YjY3ZDU2N2QyMjFlOWQ0NTEzODM1ZjlmYTY4ZjdiYmM5MGUxIHB5M2sKKzY4NjMwIGM2OTk1ZGFlOThhNjljODNmM2Y0ODFmNDk2MDZmYmExNzNjZDJhODUgcHkzaworNjg2MzEgYTA0YjFjNzE2N2JhZGRkZmE4MmU5Mjc2ZjIxZWI3MjczM2ZjZjY0NCByZWxlYXNlMzAtbWFpbnQKKzY4NjMzIDhiZTE1OWQ2ZmQ0MDQzY2M2ZjYxY2FkZmM2YTM0ZDFkYjExYmM5ZWIgbGVnYWN5LXRydW5rCis2ODYzOCAyY2M0MmVmZGQzZmVkZTUxY2JkZjcxOTYxNDdiMzI3ZDRiZjc2NTM4IHB5M2sKKzY4NjM5IGMxMGY2ZjExNmFmMGMxYThmZDEzNjY0NmFiMDUwM2IwNThkNTI0YWUgcmVsZWFzZTMwLW1haW50Cis2ODY0MyA3NDlhNmI4NTMzNzZiNjk1ZDY2ZGFmMjUxOWEyMzExNDk1MTdlNmQ2IHB5M2sKKzY4NjQ3IDBiMWE4ZjU2MTE3YWM3OWY4MTE5ZDEyMDgyZWQ0ZmZkMDJlMTAyZjMgcHkzaworNjg2NDggY2IyOTA0ODJhMWE3Zjk4OWQ0ZDllM2QyMmY5ODRkNGVjZGYwN2M2YiBsZWdhY3ktdHJ1bmsKKzY4NjQ5IDFlMmQ3ZjA3NTMyNmE4YWJmMzM3MGRiZWY5NDc2NzY1MDY1NjA3NjIgbGVnYWN5LXRydW5rCis2ODY1MCAxYjgxNzcyY2Q1OWQ3ODk5NzMzMTQyMzBlOGZmZTBkNWNjMTUzMTc5IHB5M2sKKzY4NjUxIGRmM2ZhNDBmZGJlZGEzYTk3OWVmMDAyZWVjYzNjNzE1MGJlYzE5NTkgcHkzaworNjg2NTIgN2JjOGUyZWVkNjkwYmMwNDcxZGExOGUwNmIwNzY5ZTNjMjA0Zjg2OSBweTNrCis2ODY1MyA1N2VkZjgzNWRlYTM2NjEzMzZiNGI0NzlkOTdkNDhmZWYyZGFjYzg2IHB5M2sKKzY4NjYxIGRjMzFiZTUwYzQwNTM0YzQ4YTAyNzdmMzIzZDhjOTcyMmRiOTE3ZDUgbGVnYWN5LXRydW5rCis2ODY2MiAxYWFkN2QyZTg5NDU5NDg1ODM5NWViOTZmOWY3MTI3Y2U1OWVkMWVjIHB5M2sKKzY4NjYzIDQ4NmUyNTc5Yzk3OGI5ZDI4MDk0YjY3Nzk5ZWJmMzNjZjE0OGJiNzYgcmVsZWFzZTI2LW1haW50Cis2ODY2NCA4ZGZlM2M0YWJkNWIxMTY2MGUwNTZmOTBiNjdjMjdmY2JhMjg1ZDczIHJlbGVhc2UzMC1tYWludAorNjg2NjUgMjdiYTgwM2JkZWE5MDU3MWJlZjFiN2IzYTBiOGM0NzJkZjhjZGJjNyBsZWdhY3ktdHJ1bmsKKzY4NjY2IGFmMDJiNmU0MjE0MmIzNDZhMjA2OTYyMTFjOTFiNWU4NjJjZTY4N2UgcmVsZWFzZTMwLW1haW50Cis2ODY2NyBlMTU4YzcwNTExZmVhZGI5ZmU1NTM3YTdmZGY3YTQzM2UyMDk3NWYzIGxlZ2FjeS10cnVuaworNjg2NjkgZTU2YzVmM2I2ZTE4ZmE2OTYxOGIzMTEyMjczYThlYzI0MjNlZDg5ZiBweTNrCis2ODY3MiA0M2UwYjFlZTFjMWI5MjdkZmZkNzAyNzg4NzRmOTEyZmFlZTk3YmNjIHJlbGVhc2UzMC1tYWludAorNjg2NzUgYTYwYjg2YTczZTIwNDI2YmQyODBmZmJkYWU3MmIwOTdhYjU3MDY3ZSBweTNrCis2ODY3NiAzNWJmOGY3YThlZGNjMmQ0OTFjZWVlNThkYjgxYmVkNDgyMGRhZDlkIGxlZ2FjeS10cnVuaworNjg2NzcgZGIyMWQxMjFiYTUzZjVkMzMyYjg2MzVjMzY2MDc3ODBkNmRhNzE2MSBweTNrCis2ODY3OCBiYjljNjUyNGZkY2E0NTkxOTE1YjFkOTdjYTgzZjZjNDU4MTBjMDk2IGxlZ2FjeS10cnVuaworNjg2NzkgNTYyMDUyYTAzNDc2Zjk3N2IyNzYwODU1NDg0OWRkNDJhZTU5M2M2MiBpby1jCis2ODY4MCBhMDI5YzU3OTBlNDFmYzJjN2MwYjExMDQ3MmVhYzU3ZDNhNDY5ZDBkIGlvLWMKKzY4NjgxIGQ3MjIwZmViN2QwYjg4MGI1NDFiNDRlY2Y4YWM2MjQ5ZjU5Y2Q1ZGEgcmVsZWFzZTMwLW1haW50Cis2ODY4MiBmMzk2OWY0ZjQ5ZTM2N2E3NGZiZTJkODZmMTAzZjUyMzE2MDc5YzY1IGlvLWMKKzY4NjgzIGIzYzE5YjY3NmY1ODY4M2JmNDQyMjhkYmFhODBlOTQyOGY1ZWU1OWQgaW8tYworNjg2ODQgNjI2ODI0ODcyMGQ2NjRjYTFkNjQ0Nzg5ZGY2ZmY0ZDQ1ZDE5MTU5ZSBpby1jCis2ODY4NSAzYzU1NTFhOTRjN2M5OTg4YTkyYjUzNGM4NTc2NzViYWQ3M2VlN2ZlIGlvLWMKKzY4Njg2IGQ5NmY1M2Y2NzdkYmVkMGM3ZTBmYTE0ZTlkZDY3NDlmYTVhZDEwMzkgcHkzaworNjg2ODcgOGFiNzBlYzJhZjViYzMwOGFkNzZkY2Y5YjVhZDA0YTNlM2U4MTNhYSBpby1jCis2ODY4OCAwZGRjMjFkZjk3OTliOWM2M2FhZDNkNGM1ZTQ3ZGE1YThkZDNiZjVmIGlvLWMKKzY4Njg5IGFlZDBjNzk4MDllNDlmMGZiYzdlZmQ5Y2YzMWEwZDNlODk1YTgyYjYgaW8tYworNjg2OTAgNzUwMDlkNDg2M2M5ZDM0MzQ1YzcxNzQxOTIxNzY1MWNjZmFhMWEwOCBweTNrCis2ODY5MSAyOWVkZjI2YjljMjNlZmRkZjBkM2YwYTdhZTEwZmI0M2Q3MjllNWFjIHB5M2sKKzY4NjkyIDk5ZjNjMzRkNzMyOGUyYzFhYTJkM2U0ZTJjN2VjOGRiOWRkZWEwMmMgcmVsZWFzZTMwLW1haW50Cis2ODY5MyA4ZWExN2YyN2RhNjdkMjQxYzBkYTRmYjJkYWQ0ZGEwOGE1NzEwM2UxIGlvLWMKKzY4Njk1IDUwNzg3NGY2NTVhY2JhNDI3ZjE0YWM5MWMyMDVhYzA4MWYyYTg1YjAgcHkzaworNjg2OTYgMzNjNGY0MjNhZWJmMjEyNzdjNzM3YTYxMmQyYmUwOGMzNzlmMmIyNyBweTNrCis2ODY5NyBmYTY1MWExYzM0Y2M2OGE4NjE4NmY5MTJiNDgyZDc1M2NjZmJlNTQxIHJlbGVhc2UzMC1tYWludAorNjg2OTggYWFjNTFiNzBjNzRjYjJiMGYwOGQ1NDhmNDExYjEyMzY2ZTc0OGRmNyBweTNrCis2ODY5OSBlMzUwNDMzNWY0ODBhNzFjM2I4YWMzZWM1NTJkNzFhNGUzMGExODY4IHJlbGVhc2UzMC1tYWludAorNjg3MDAgNDI4ODU0NmE0MjM4YzJlNDhkZGJkYjRkZjM1ZWYzMzJiYjZlMTFiZSBweTNrCis2ODcwMSA2ZTk3ZDcxZDYxYzI1Y2IxYjM5OGU1YmJmNTVjZDNiMWE3NDgyNDRkIHB5M2sKKzY4NzAyIDFjZTFiZmJlNzA1MWRlMTdjZGNjNzI2MjAwOTJjNmI1NTZmZWE1NTcgcHkzaworNjg3MDMgOWM3ZjE5OGY5YjI1MjBmOTA1NDRlZmJmZjI0YjY2MzZiN2FjNWRjMyByZWxlYXNlMzAtbWFpbnQKKzY4NzA0IDIwYmQxMTc4ZmM2NDJkNjk1NjBiNDU3YWMwMjk2YjdjZTZiNzFhMWYgaW8tYworNjg3MDUgYjljYjM2NDY1ZGQyYTA3ZDFmMDk3ZDdjMzc3MzRiZjI3YTNiNjE4MSBsZWdhY3ktdHJ1bmsKKzY4NzA2IDEwYzM4YmM2NzM3ZGViNGUyZGI4NDRjOTNmODg5MTY1ZmQwN2Q2ZDMgbGVnYWN5LXRydW5rCis2ODcwNyBlNTU0YjhiYmRlZWFhOTIyZDAwNGQzNDExNWNmM2VkN2JlZjU3YTg4IHB5M2sKKzY4NzA4IGI0YmFhNzI1Mjg0YTZkMjhiOWU0YzAwZTBkMjA3YTViMGY0YmRlZDkgbGVnYWN5LXRydW5rCis2ODcwOSAwOTk2MjcxZTIxZDhjNGM5M2UyMDg0MDM4OWMzOGIxZWVmNzYzYzRkIHB5M2sKKzY4NzEwIDllMmFkNDQwMTk2YmYyNDQwYTA0N2NkM2RlYWY5MWI4YjkyNDQ4Y2YgcmVsZWFzZTMwLW1haW50Cis2ODcxMSBlOTFmNjRmNWQ5NTU4MjFhOGYxOTVmMWE1MGM1NDcwMWVkZTdlY2Q1IHJlbGVhc2UyNi1tYWludAorNjg3MTIgYzg2MzQ3YWM2NjYzNTIyMWJjNTgyNmYxYmNlMjg5NmQ1MjMxNzE5OSBweTNrCis2ODcxNiA0MDhjOGRjZjAyNDhhMTY5MTdlZDg1YmY2NjEwNWM4MjBiN2MxNjAyIHB5M2sKKzY4NzE3IDQ0NDI0OTU3ZWFkZjY3MDUzNzQyYmRjZGY2ODJmN2Q3YTEzZmY1ZDkgcHkzaworNjg3MTggMTg5ZDUwODMwMjk3MDU1MjViYjRmOWI4ZWZlYzIzMDczMDMwOGExZiBsZWdhY3ktdHJ1bmsKKzY4NzE5IDhmMzJiYTUyYjIwZDg5MzU5OGJiZGNiODQwOTBlOGNkMDg3YzgzNmMgcHkzaworNjg3MjAgZDJkYzZkMDQzYzIxZGE5NzA4YTA5NzdlY2IzY2U3MzgwMWU0YmM4ZiBsZWdhY3ktdHJ1bmsKKzY4NzIxIGJiZGEzMWRkOTc5NzViZGQzNWMzMTRjODFjYjQzOGEyMzdjYmZmMDMgbGVnYWN5LXRydW5rCis2ODcyMiA5YmJiOWFjMDYxYzBkNDhmZDQ4OWExM2IzYzc4Y2E2NjY1YTM3MWY1IGxlZ2FjeS10cnVuaworNjg3MjMgODMyNWViMDQxOTIxMGMyYjY3N2UwN2M2ZDk5ZDVmMWRjOWQ3MzMzZSByZWxlYXNlMzAtbWFpbnQKKzY4NzI0IGY2YWVmYmJkNzA0NWU5ZGNiYjg1NDQ2OTJkYmZhMTQ3ODg1MjU1ZWYgbGVnYWN5LXRydW5rCis2ODcyNSAxMWNiZjM5YzMxNmY3Zjc0NWIyNmEwMGI2ZWM5MzAwZjYzZGJhYzVlIGxlZ2FjeS10cnVuaworNjg3MjYgZDcxNTgzODYwNjM0NjcwYjgzYzMzMzM4ZjY1MmUyY2FjYTBjNzBhZCBsZWdhY3ktdHJ1bmsKKzY4NzI3IGU3ZDZlNWY1MTllZjI1ODExYjlhMDg2ZTJjMWE3YzExMTU3ODQ4Y2UgbGVnYWN5LXRydW5rCis2ODcyOCA4ZGM0NzliNjNlMDM2NzNiMjg0MjY1ZDA2YzI3NzMzMzQ1YTcxNTlhIHB5M2sKKzY4NzI5IGE4MTk5MjdjMmExMzk4YzhkZjEwMDM3ZjkzNWRlNjk3ZDYxYTk1MjkgcHkzaworNjg3MzAgZjNiYTVmOTlkYTUwZDBiMzYzZDc5YTBiN2ZlMjUxYWY5ODRmNzBkNSBweTNrCis2ODczMSBiOTJlNjk1ZDU2MWU1YTgxMDc4MzhhMWZjY2YyMmI5ODEzOTEwMjczIHJlbGVhc2UzMC1tYWludAorNjg3MzIgNzU4Nzc5OWNhZTFjYjBkMzE4NTEwYTk4OGU5Mzk5ZTcxYTliNzYzYiBweTNrCis2ODczMyA3ZTVjZmJhNTRlMzQ4MDFjZmZmMWZjZDY2N2JlY2RmNjJjODA0ZDAyIHJlbGVhc2UzMC1tYWludAorNjg3MzQgNmE3NmFiZDYxNmRlZGIxNjQxOTkwMGU5NmNjNTFjZTk2OTQzNDU2NyByZWxlYXNlMjYtbWFpbnQKKzY4NzM1IGFlM2ExMDYzMDZhODA4YjM4NGViYzYyNjIzOTgyMjBjOTcwZjYxM2MgcmVsZWFzZTMwLW1haW50Cis2ODczNiA1MGY1YzI5ZmNlMjZkMzFjYjg0ZDZiNDdhYWE2YTRmNWNmNGExN2IzIHB5M2sKKzY4NzM3IGMxYzQ0YTBhYjQzOGU2YWIyNzg3Nzk0ZTc4YmE0ZjFlOTk4Yzk3OWEgbGVnYWN5LXRydW5rCis2ODczOCBjNTEzYzY5MTE4ZGNhNjE0NDIxZjE5M2JjY2ExMWE3OWE4MDhmODA5IHJlbGVhc2UzMC1tYWludAorNjg3MzkgNWI0OGQ2MDAwOTE2NzYyNjgxNmU5NTk0ZDRjNTYzMTVkYjUxN2ZjZCBsZWdhY3ktdHJ1bmsKKzY4NzQwIDllY2JkOWExMDFkODM3ZDE1NzMxNDI2ZmM4YjExZDg4OTdkYjljMDggcHkzaworNjg3NDEgNDlkOTcwOGQ3ZWEzOWFlYTE2Njc3MGU2ZGMzM2RhMWUzYWViYTg0MyBpby1jCis2ODc0MiBjOWU1YzJjYTYyYzNlMmMzZTljZjg0MTA1NGE0MDQzNDgyNDc3Y2I5IGlvLWMKKzY4NzQzIDlmNjI3NGZkN2E5ZGY3YzM3YTgyMGJiZjI2YjRlMjUwYWVkMTUyYjMgaW8tYworNjg3NDQgZTE0ZWM2ZDE4YWI4MWY1MjNlYWYzZDM1YWZmOThlNjI4YzAzMmFiYyBweTNrCis2ODc0NSAxZWMzNWJlZWQyZDAxNGRjZjYxMWFjYzAwNjJjNzQ4NWU1ODdhMTRjIGlvLWMKKzY4NzQ2IDlmNDVmYTI3YjgzOGFlMGI2OWY3MDI1ODI0MjUyNWFhNzQ5NGQ5MmYgcHkzaworNjg3NDcgYmFkMzZmNDkyMDgxZTdkZDFiMzkzZGRlYmJlM2M2YWRiMDczZmNkYiBpby1jCis2ODc0OCA1ODFkODYwMmYzZjc0MmY0MDMxMjgzNjA1ODcwYWU4MjJiZTk3M2EyIHJlbGVhc2UzMC1tYWludAorNjg3NDkgMWIyMjllN2Q4MThiZDUyNzQ3OTQwMTU3Y2YwNzFjMzZkZThiOTg3MSBweTNrCis2ODc1MCAwNzg4ZDQ1YmY3YTQ3ZTk0NzBkMjdiYTFjNTAzZWJjOWViYjc2MGQ1IGxlZ2FjeS10cnVuaworNjg3NTEgZmI3ZjIzMWNjZDNlYzc3NzFjZWYxMWVkZGRjZGQzZDRmMmE0YzQ5YSBweTNrCis2ODc1MiA1OWRlMDY1NDcyMzJhNDkyOGMzYmRiZjU2ODE1NzBkMGIxNzFlMDc3IGlvLWMKKzY4NzUzIDU5ZWYzMTViZjAwZWZjZmE1MjRkNDI1ZTA4YjAwZjNkNzA0OGFmNDEgaW8tYworNjg3NTQgNjU4MThjZmQ0ODI2NWZkMjIxM2QxMWVjOTc3Mzc3NDJiZWQ0MWRjZSBpby1jCis2ODc1NSBhOTkxYmU2YTExMWQ4Njg0ZmZlY2Q5YmM0ZjUyNjdiMDg4YzFmZDM3IGxlZ2FjeS10cnVuaworNjg3NTYgMWMxNmVkYTMxMDllNTQ1NGY0M2MwNDRiNGUzOTUzZjE4M2I1M2MwZiBpby1jCis2ODc1NyAxZmFlZDdjZWQyNDI0NThlN2Y2ZDVhYWI3N2I3YzFkOWJlMzk2NzNjIGlvLWMKKzY4NzU4IDY1ZWY0NjI5MjFmNzM5MjZkYjczOWZmY2ZlMWVkNTBlNDM3OWY1NWIgaW8tYworNjg3NTkgZTEwOGM5ODA2Y2MzZjIxMDJlZjM4OGE1ZjRlNmJmNThmMzhiY2E4OSByZWxlYXNlMzAtbWFpbnQKKzY4NzYwIGE2NjExNjE1Yzc2YmFmZjVjOTEwYWJiMGViYzdhZDM2MTlkNTgyMmIgbGVnYWN5LXRydW5rCis2ODc2MSA2MTE0NjFhOGM3ODUxYmQwNTUwYjI4OGNlOWFiMDgzNWY3NDgzOTVkIHB5M2sKKzY4NzYyIDFjMTdkNWNiMTVkZDU5OGFjNmNhNDlhOWM0ZDNmY2FhZjMxZTAxYWEgcHkzaworNjg3NjMgMzkxODdiM2UxMmUwNTEyOWIzNzhmNTEyYjQyMjQwZTg1NDQyYjQxZCBsZWdhY3ktdHJ1bmsKKzY4NzY0IDA2MWM1MTI5NWQzMjZkZGE0NWVkOTA3YjI0Y2FkZTA2Y2U1Y2IwNDMgbGVnYWN5LXRydW5rCis2ODc2NSAxODQ0MWI4ZjcwMDBjMDUxZDkzYzAzOWYyNGM3NWRhNzIxMTA3MTcxIHJlbGVhc2UyNi1tYWludAorNjg3NjYgZTdjMTAwYWY4MWVjMjhiZWZhNTMyNDQ3ODBiYWNkZGI3N2U3NjE3NSBsZWdhY3ktdHJ1bmsKKzY4NzY3IDM1MmYyOWRiNWViZjYwYjg3ODA2OGQ2ZDg5MWJmY2MyM2I4YjFhZDYgcHkzaworNjg3NjggOTVlOGQ4NTU5NGJjOTJkMGY0ODZjYWQ2MDJkMDQxMmM3YjE0NTQ3ZSBsZWdhY3ktdHJ1bmsKKzY4NzY5IGZhZTk2YmM5MTk2ODQ3OTVlOWExMGMxZWNiMDVhNzk1M2Q4NzExMjAgcHkzaworNjg3NzAgYmEzNGRlYTVkMThjM2YzYTBjZTYyOWM3ZmRiYmRlZDFkNWI1ODhkMCBweTNrCis2ODc3MSA0ODhlOGU2ZjFjZGM2MzNkMjExYmFmMGNiYjM5MWY2NzA3MDg1NTY1IHJlbGVhc2UzMC1tYWludAorNjg3NzIgNmVkZDI5YTM0MzU0OGYyMmQxNmY5MjhiZDdkMDY5NWEyMzM4ZGFmZCBsZWdhY3ktdHJ1bmsKKzY4NzczIDdjZmI1OWUzOTc4MjYwOTA0MmE1Mjg1Nzc0N2I3YzY4OTEwZTA0MmMgbGVnYWN5LXRydW5rCis2ODc3NCBhZWIyYmRlMjAzYWFjZDlmMDM5ZWNiNzNmMzM4NGFmYTJmMWY3NjM3IHJlbGVhc2UyNi1tYWludAorNjg3NzYgYWFmOTZlZmM2MWU1NDJkYjMyNmEyZjY2YmQ2YmRjODIwZmNkYjliZCBsZWdhY3ktdHJ1bmsKKzY4Nzc3IDAxNWVhN2IyMTk1MGEzODNjOWEzNjA3YTE4ZTE1MTM0NzE1MDZmZGMgbGVnYWN5LXRydW5rCis2ODc3OCBhMmY1ODIwNGU2ODBiODdhZTM0ZjkyOGIxYTQwZTMwMzAyMDQ5YTVjIHB5M2sKKzY4Nzc5IGZhMTJjOGU1YWU4YWNiYTg2NmVlNzY1OGQxMmJmN2U2NWYwOTQ4ZjQgbGVnYWN5LXRydW5rCis2ODc4MCA3NWJjZWMwMTFlZWY2ZDJkYTVhNjZiNjk1NDI0YmIzYjI3YzQxOWMyIHB5M2sKKzY4NzgxIDYxMWQ5NTcwYjRjYWIyNGY2ZTFkOTk1YjJlNjAwNTMyMmNiMGEzYjIgcmVsZWFzZTMwLW1haW50Cis2ODc4MiAxOWZhNmY5YWI1YjUwMDczYWIzMmRmNmYzNTJiNmFkNjEyYWE2ZDE1IHB5M2sKKzY4NzgzIGNhYTc5ZDIzODkxNzJhZWFmNDg5MDM0YmYwNzY0ODEyYTBkNDBjMTUgcmVsZWFzZTI2LW1haW50Cis2ODc4NCBhZjM2YmExMjNjMWQyYWNmYTI0NzQ4YjUxOTk0NjdiYmMwNmU0ZDhhIHJlbGVhc2UzMC1tYWludAorNjg3ODUgYzNhMGVlNTFkODY3ODEzMGM1MDkwNjRjZGZlZTdjMzAxMGM4M2YxMCBsZWdhY3ktdHJ1bmsKKzY4Nzg2IDJmNTRlZWZkMDA3M2ExN2EzNmQ5YzQ3ODE3MTMzNDBmNThkZDc5NDEgcHkzaworNjg3ODcgNjA2N2ExZTYyODlhMTM1N2M3Zjk5MTNiZGViY2ExZTNmOGVkY2ZkZSBsZWdhY3ktdHJ1bmsKKzY4Nzg4IDUzN2U4ZDcyODQyNDY5NDljNTlkOGEwMTc0OGU3NjU1OTA4MGZjMDMgcHkzaworNjg3ODkgMTkxYjdiM2RkZjRmYTRjZGJhNWEzMzFiN2NkM2E1MWE2MDA4ZGNjMCBsZWdhY3ktdHJ1bmsKKzY4NzkwIDM4MDIxYjhlMTRhYWIxMjc2ZjA3MmMxMGVkOWMyMjcwN2FjOTFiODkgcHkzaworNjg3OTEgYTYzZjdjZjM3OTNhYmZlMGFjNjdhMzMwYjc1ZjYwYjM4OTcwN2NkNyBweTNrCis2ODc5MiAzOTA2NjhlMjA2MjhlNDBjODMyZDRjMjVmYWZiMzYwNmE0NTkyYWE2IGxlZ2FjeS10cnVuaworNjg3OTMgOGQ2NmI4MmExMGEzMDg4YzYwYWRmODQ2NDA5ZmE3YWY2MzU2NWVlZSBsZWdhY3ktdHJ1bmsKKzY4Nzk0IDZhNmI1OTA5MTJmZTZmMzIyNzY3MzlhMTU4MjRjMTcwY2IyMDViYzYgcHkzaworNjg3OTUgNWRkODc5ODY3Y2RlMjAyNjBmMzkwYmJlOTgzMmUzMWRjNjIzOGJmZiBweTNrCis2ODc5NiA1YzNiZjMxZDA0ZmQ2YThkNzE5NjkzZjFmODJmZjc1YjI2NWJhNmJjIHJlbGVhc2UzMC1tYWludAorNjg3OTcgZmUyODcxYWFiOWQ5ODg0OGQzZTIwNjk5OTRkMzFhYjBhODIxZDJhNiBsZWdhY3ktdHJ1bmsKKzY4Nzk4IDIzNDRjZWY3ZmY0NDQ3NDU0ZDk2MWE4NTQ4YmMxN2I2ODVkY2FlMDIgcHkzaworNjg3OTkgNWEwNDFkOWE1MWNkNjZmYmVjNTIzNDUzNWJjOTQ1MWRkMWFhZDgyOCBweTNrCis2ODgwMCBjYzlkZTE5N2RmN2UxMTkxZDE2ZjYxZDM5YTk4ODA5MTY2NGM1YjIyIHJlbGVhc2UzMC1tYWludAorNjg4MDEgY2MwNzhhNTc1ZWVkMzA3Y2Q4OTAzM2M3MzExOWI2ZDczMmJjMWQzYyBsZWdhY3ktdHJ1bmsKKzY4ODAyIDFhNjRkMmY1NmI3OThmZjYwMzk2YTYxMjNkYWEyODAyODUyMjkzNTAgcHkzaworNjg4MDMgYTgzMjY3YWQyZmQyNzIwNTRjMWFmZDRmOWYwYzJjZmRiY2UxMGFjMyBsZWdhY3ktdHJ1bmsKKzY4ODA0IGZiNzFjMTU2MjBlZTZmOTk5ZDk1YjMyYzA4ZDY4MzQ5ODY1NjgwOTMgcHkzaworNjg4MDUgZGJjMTRhY2RkZTM3ZjE4ODk3YWIxMzJiODcxYzljNjRlODRjMGU0ZiBsZWdhY3ktdHJ1bmsKKzY4ODA2IDFmMTQ4NDI0ODhmMDhmYWI4ZmNiODQ1YTI0ZGQ3YTFmMTY3N2M0OWQgcHkzaworNjg4MDcgNjFmMWNiMTZlN2I0MmU3OTZlZmEzMGNjMzA5NjY3YzI0YmM1NmNkOCBsZWdhY3ktdHJ1bmsKKzY4ODA4IDM2ZTI2NmIyZTQ2MDk4ZWJjMzFkMGM4NDkyOGI2MDYxMWQ2MGZmZDggcHkzaworNjg4MDkgYzdiYjMzMjA3NDk1YThjYjFjNzJiZmM3YmJhYjEwMDQwNWEzY2NkNiBweTNrCis2ODgxMCBkZDU2MjQ0MzliZTUwOGZkNDQyZWE0NDU2NGU3NmU4YzBjMTRjZjZlIHB5M2sKKzY4ODExIDczMzM4OGFjZjBiNjVjYjc5YmZjYTY0MmM5M2FjMjZiNzJkYzdjYjIgbGVnYWN5LXRydW5rCis2ODgxMiBmMTM1Mjc0ODRiYTNhYjQ0ZjZhMWMzNDUyMGUyNmYxZGMxZTM4M2MzIGlvLWMKKzY4ODEzIDQyNGE1MDliZWJmZWEyMDMwZjhlNTZiMGMzOTJkNjA4OTJhMzVkMTIgbGVnYWN5LXRydW5rCis2ODgxNCBkMWRlMDc3NDQ3YWE0ZjM0YTMxY2RjZjAwMTkzNDE3NjkyOTNiYTJmIHB5M2sKKzY4ODE1IDMyYTIyZmExM2I5OWM3OTYwMzBlNTgyMTBlZmExNDNkNDQzMDY5ZWQgcHkzaworNjg4MTYgYjIwZTIxOGQ2ZjAwZjc4OGJjYTRkNWE4NTRiNmY0MzlkZjY1MDYwMiBpby1jCis2ODgxNyA1YTg4MGJkYTZhNmI3ODVmNDU1MjRkYTdiMDY3ZjM0MWE1ZjgyZDFjIGlvLWMKKzY4ODE4IGE1N2QxMGQ2YmM4OTMxZjAwMDIwNjE3NmQ1MDVhYTBmMmNhMTllYTUgcmVsZWFzZTMwLW1haW50Cis2ODgxOSBhYjBiMzg1YWVmYzNlOWI2MDQxMjJjM2M1ZDk4MTg2ODNjMWJiZjA1IHB5M2sKKzY4ODIwIDlmMjk0ZWIzODE5MGU2NDM0ZDU1MzU1MTI5NDRlYzRhZDJkNjUwMzYgaW8tYworNjg4MjEgYzc3NTIwN2NlZGFkNzk0MDU2MDk1NjQ5YTZmMGI3MjAwNGMxYzRlNiBpby1jCis2ODgyMiA1MzkwMWU2NjkxYzM4MjQ4ZjExZDRjYjVjZTk5MmE1ZGQ0ZTMyZWFkIGlvLWMKKzY4ODIzIDBlNzlkNWEzNzIzMzgyMDM2M2Y2YWI5MzNmNzc0MWM3ZThjNGUxNTMgaW8tYworNjg4MjQgYzk0Zjk4YzU3NTNmOTcwYjVmMTEyNmU4NjNjODhiMjQwMzY0ZTFjYyBpby1jCis2ODgyNSA3ZWQ5YmVlZDg3MTU1MzMxOTI1Y2EwOWFmNzZmMzM1YWMwOTJlYzM3IGlvLWMKKzY4ODI2IDc2NmRlNDk2YTQyZDdmMGQxYTc0MmE4Yjg4NDYwOWY3ZTRhMTRkNGQgbGVnYWN5LXRydW5rCis2ODgyNyA3YzMwYWIwMTM0YTFmZTYzNDZmYWJmYTFjNzBmN2NkMzc4M2YxYmFkIHJlbGVhc2UyNi1tYWludAorNjg4MjggMmIzZWNkZTE3NmZlNTAxNzkzYzU1MDUwMjgwNWFkNzQzNjk1OGVlYSBpby1jCis2ODgyOSAyNTJmODI0YmI4MGIzYWMyMTcwOWZjOWQ3NWU5NTlmZGIwY2Q2NTExIGxlZ2FjeS10cnVuaworNjg4MzAgY2M1YjQ2MGZmMWFiMTI0ZjIyYzNlMmQ4YWU2OGIzMTUxNDJlNDlmMiByZWxlYXNlMjYtbWFpbnQKKzY4ODMxIDEyZTljNWY3MjY1OTA0OWViZjAzMjYwMmUzMDQ4Yzk5YTIyYjFkMTUgbGVnYWN5LXRydW5rCis2ODgzMiAzNWZiNGEyNjBhMjUzZDhmNzUwOGZhNjA2YjMzODJiN2QzOTNiNTI1IHB5M2sKKzY4ODMzIDY2OTI4ZGFkODFjYTE0OWI1MTBmMTNmNGNjYzU4NjBiMmYwMWQ1ZWYgcHkzaworNjg4MzQgNzEwNmZmNTZlOWQ4YmRmNjk2ZDZhMThkZDg4OGNmODE3MzhjMTM2ZCByZWxlYXNlMzAtbWFpbnQKKzY4ODM1IGI4OGNjN2UyYmZiNGMzMTNkNTBiYmFiZTI5NDBhMDhiNzRlNjA4N2QgbGVnYWN5LXRydW5rCis2ODgzNiAwYWQ4YzU2YTdhNzBkMGNiMDkxNDA1ZmJkMmYzNTg2YWE0YTdhYjI0IHB5M2sKKzY4ODM3IDc2MmY5ZjE4OWUyZTg2Mjc4ODQ1YjUxMmYyYTNlYTJkNGMxODIwNWMgcmVsZWFzZTI2LW1haW50Cis2ODgzOCBmMGM5NTUzNzhjYTNjNTFlZmZjYWFlNTMxMDc3NTUyOTgzZDM3MjIzIHJlbGVhc2UzMC1tYWludAorNjg4MzkgZDI3NDA2MjgxNmZmNjU4YzhkMmEzNDc2MzBkZjJjNGU3M2VmNGYxOCBsZWdhY3ktdHJ1bmsKKzY4ODQwIDBlYzM1NDcwM2QwMWNhYTRiZmQ4MTJmY2Y0NDgzMTQ0NGFmMWRhYzcgbGVnYWN5LXRydW5rCis2ODg0MSBhOTlkZWNlZGY3MmQyMjBhNTYwZjJkODI3NDFiZTA1NWNhYWFlNDdhIHB5M2sKKzY4ODQyIDg3NjNjZjJmN2UwYzU1ZmZkODAxNTMyMmY4YzIyMjE1MzI2NTQ2YzAgbGVnYWN5LXRydW5rCis2ODg0MyA4YmYyMDRhZjk2OTEwZTY0Yjg3ZTllMThjZmU2NTZiZDgxMTFmZTlkIGxlZ2FjeS10cnVuaworNjg4NDQgNzMwMGQ2ZmJkOTE0ZGJkNzRkYWRkNTgwZTY2ZjMwMTY0MTczZGM0MyBweTNrCis2ODg0NSBjYmU1NDY1MWUzYjk4NTM3ODRlOWVhMzRmNGNkNDY0MDJmZTBlNThlIGxlZ2FjeS10cnVuaworNjg4NDYgM2Y2MWY4MGU5MTMwZDE3NTM4YTZmMmE3Y2EyMzBiNjY4YWNjNDgxZCBweTNrCis2ODg0NyA0MDkyYTQwMmVkM2U3NTVhMjA0OTk3MmNiNDcyZTRmODk4YzZjMThlIHB5M2sKKzY4ODQ4IGVjNzBiMzkzZTE3M2Y4NGRkMGU5ZTE0ODY3YmViN2Q3OWI2MzIzZTQgcHkzaworNjg4NTAgM2M1YThhMzQ3OTkwN2YwZDM4MzAwNDdhOGZmZmUyM2EwNTk4ZWExZiBsZWdhY3ktdHJ1bmsKKzY4ODUxIDA1M2YzZTgyNjYwMTZlYzlhMGY0MmY3MzJlYTJkMmJiOTk2NzVjNzcgcHkzaworNjg4NTMgM2YxM2M2NWFlYzA1NmIzZmU1NDY2MTA0MGQ0NDM2NDEzNTBkZWM3YiBsZWdhY3ktdHJ1bmsKKzY4ODU0IGY1ZDdkMDYwOTExYWUxOTM4MzM0MmM2NThiZTc1MDQ5NTJkN2UyOGUgcHkzaworNjg4NTUgYjQwZTRiNTI5ZjY5YmFkODk5ZGZiZjQ5MDEwYTdiYjU5NTI4MjI5ZSBweTNrCis2ODg1NiBlYzZmMjk2MDhiZjA5ZmQ0NDlkZTZlYmUxNDQ3MzM4YjFkMDFhODVmIHJlbGVhc2UzMC1tYWludAorNjg4NTcgOGFlZDc4OGJmY2M4M2M3NTFkYmFmY2Q2NDI3MTBlOGFiMzZmM2JhYyBweTNrCis2ODg1OCAxZjBhM2FjOGJmODVkZTQ0MDRmZjRkYmI4MDc4MjE4MDhjYzYzZjcxIHJlbGVhc2UzMC1tYWludAorNjg4NTkgZGUyZGMwOWUxZjdlNjYxMWRmNDJhODYzZmU1ODQ5YzM0MmFkY2E2YyBsZWdhY3ktdHJ1bmsKKzY4ODYwIDI3MzVmYWM2YjBkNGQzZmYyZTAwZjJlMmZjZTIxN2EyZjE5YWZkYmQgcHkzaworNjg4NjEgZTRjODZkYzE4MWU5YTIwNDRlMDQ1MGY2MjQwNzNlODM2OTM4ZTk0MyBweTNrCis2ODg2MiBiMGI2MjFmMmFmNWRkZmM1MmZhZDM5ZWIwMGI4YjQyMDk3Y2VhN2I5IGxlZ2FjeS10cnVuaworNjg4NjMgNzJiY2YwYTBjYjMxZDQxYTM3YjNhOTc0ZTQwZWUzZjhkNTA0ZGQ4OSBweTNrCis2ODg2NCAwOTQwYTRmMjUwNmU3NzgyNDYwNjBjYjgzZGZiYzk0MDQ3YWQ0OWY5IHB5M2sKKzY4ODY1IGRkNjM4YjdlNzQ3ZTNmYTU1ZTZhNWE2YmVhNWE3YWU4OGU0YWU3MTYgcHkzaworNjg4NjYgMDljMTcxMjdhNGM5OTIwMWZjNTdiYmZkZWNmYmE0ODM2Yzc4ZjE1OSBweTNrCis2ODg2NyBjOTU0NDUwZjdhYmZjYzI1MWNkOTAyYjJhNGY0NDQzYzIzOWFmOGMwIHB5M2sKKzY4ODY4IDA0Yzk1ZmMzNzY1ZmVkN2M1OGE4ZjQzMjk3NTU1OTY3M2NjYjE3YzYgcHkzaworNjg4NjkgYWNlNzViMDZhNmY3NGRjNTk2Y2E4ZjRhZTQ2M2EyZGU5MzlmYzBmYyBweTNrCis2ODg3MCBhZWFhMjM3ZWJhZDdmNzk1YjcyY2IwYzg4OWZmOWY3ZTkyZmE1MGE5IHB5M2sKKzY4ODcyIDNiZjc3ZWExZGIzZTIzZGViOTQzMDMwNzE0YzY5NGVjNTkxZjU2ZGMgcHkzaworNjg4NzMgYTgyM2M5ZjNhNDUyYmMyMTkxODRmZDZiOWI1MGFiM2Y0ZTUyYmY4ZCBweTNrCis2ODg3NCBiMGQ1OTNkNDEyMTIwYzdhZjE1ODk1NWJmZTIwZGJiNzJmMDBlNmM1IGxlZ2FjeS10cnVuaworNjg4NzUgODU3ZDY2MzQxZmY5NDA4MjkzOGYxZDk4YmYyZDgzZmQzMmMxZjMwNyBweTNrCis2ODg3NiAwOGU5YmVkNmExZjg1ZjllNTY0NjVkZDg2NmEzYjE2MmYyMzcwOTZiIGlvLWMKKzY4ODc3IDFhZjRmYTE4YmNjMjA2NWFlNDFjOGYzZDcwNWM3MjE1ODZkYzcxY2EgaW8tYworNjg4NzggNTJmZjA1NzlhNDFmMTlhZjQ4YWE0NDJiMzdmZjQwYjk3ZmY2NjNhZiBweTNrCis2ODg4MSBhNGYyNWMzODBmOTZiN2YzZmYyMDY5NTI4ZGQ4ZTg0ZmUyY2MxOGQ2IGxlZ2FjeS10cnVuaworNjg4ODIgNWM3MzEyY2U1ZGJkMDYyZTg4MjA2MjUyNTEyNGFhMDM5ODI3MjE0NCBweTNrCis2ODg4MyAwNDhlYjVhODM0M2JlMDljYTc0M2FiZmM0ZmMyNTdiYzk3ZDU0OTJmIHB5M2sKKzY4ODg0IGJkNzRlODY2ZjljYWY4MTdjN2VkYTA5OTlhYTZjNDExNGMyMGMzYzggbGVnYWN5LXRydW5rCis2ODg4NSBmYzM4ZjJlY2QyYWMyNzczZGY4ZjY2ZWEwNzMwMzQzMWY0Nzg1N2E3IGxlZ2FjeS10cnVuaworNjg4ODYgNmY3NjFlNTcxNGUwOTE5ZDRhMjc2N2FkOTA2YzU5MTQyYjQxNmVhNiByZWxlYXNlMjYtbWFpbnQKKzY4ODg3IGNlZjBmY2M5MTU1OWViYjVkMTYwZWM5MTkxZGNiOWU5MDI2YzFiNWQgcHkzaworNjg4ODggYzliOWE1MDQxZWY1MjFmNTZiMWRkNGQ3YzM4OTczYTQ2ZmU2NGUxYiByZWxlYXNlMzAtbWFpbnQKKzY4ODg5IDU0MDYxMWFlNjFiODZmYWRhYTMzOTQ0YmZhODJkNzcxMzMwYzhmZWIgcHkzaworNjg4OTAgNGVhYzk5NDE1MzhjNWJkZWM4ZDI5ODg1NjgyMGRmMTRiZTIzZmMyYSBsZWdhY3ktdHJ1bmsKKzY4ODkxIGRiMGZmZWVlNmU1MDcwMzY5ODVjNjJiZmQwODkyM2YyOGNhOTI0OWQgcmVsZWFzZTI2LW1haW50Cis2ODg5MiAyNTAzNGM4MzI4YzdjZjdhZDUxYTRlODEyNTExNjIwYWNiYTQxN2VmIGxlZ2FjeS10cnVuaworNjg4OTMgZjFhZjQwODA0YWRlOTNiOWIzYjVhMmQxNWMwMGIzNzEwZDAyODgzZiBsZWdhY3ktdHJ1bmsKKzY4ODk0IDUxMzJhMTNmMTY5YTM0MTRiZWY3NWNmNDUwYWVhMzNiMjkyNzJiMjQgcmVsZWFzZTI2LW1haW50Cis2ODg5NSAyN2QyZmExOTA4NGE1ODJlNDY4NjNlNjdmMGUyNzFkY2EyYzNlNTJhIHB5M2sKKzY4ODk2IDdlZTZmYTA2MDJiZTkyNzEyYjA0ZGUyZGYzZjJhYzMyZGRjM2VkN2QgcmVsZWFzZTMwLW1haW50Cis2ODg5NyBhMWE1Mjg3M2Y5ZmNmMDY1Y2I4MzhiNGVjMThmMjJkNTZmOTE1Y2QzIGxlZ2FjeS10cnVuaworNjg4OTggZmViNGEwOTJiODcxYzY3ZWNkZjRjM2ZkMDY4ODIwZDU5OWYxYzZhMyBweTNrCis2ODg5OSBhNmE2MzY5Y2ZiY2NkYWRmOGE2ZTU5NGY1ZTNkNWFhODc0ZmZkNzZkIHJlbGVhc2UyNi1tYWludAorNjg5MDAgOTlmMGIwMjY1NTE2YjI0Mzk2ZDMzNjQ2ZmQ5NWEyMTFiM2Y0MDM2ZCBweTNrCis2ODkwMSA1OWQ1ZTcwZjM0OTQyMzBkYmQwMTcxYzc1YTM2MDgzOWU2OTc3OTUzIHJlbGVhc2UzMC1tYWludAorNjg5MDIgNTc4ZGQ3OGZiNTU3MzUyZGE4OTg0MjgyNGNmOWFhMTZmMzI0NWFhNCByZWxlYXNlMzAtbWFpbnQKKzY4OTAzIDZkNTUxNzk3NWZkMjQ1NzM0YWU1ZjJmZjk5NWUzOTczOWVhMzk5OGEgbGVnYWN5LXRydW5rCis2ODkwNCA4NDNjMTc4NjhiNTJiNGY0OGVhZmU0ODU2YjhhM2E3ZTA0MjVmYWU3IHJlbGVhc2UzMC1tYWludAorNjg5MDYgODYzY2U2YzAzNjE3OWY0Yzc0ZmE5ZjcwYmNiOGU3MTg1NjViOTBhMiBsZWdhY3ktdHJ1bmsKKzY4OTA3IDAxMzk2NDg1MjZkOWE4ZmNmN2MxMzgzMDhjN2IwZTI0MzAwYmVmNDUgcmVsZWFzZTI2LW1haW50Cis2ODkwOCA5YTQ1ZTJjYWQ2YTFmM2YxYjRmZTMyMGJkNTg5ZGJiM2E4ZjJlMzc3IHB5M2sKKzY4OTA5IGY3ZjNkODQxZGEyYzZjMWZhNmUwMDE3ZDU5MjU3MjA2Y2JmNTA5NjQgcmVsZWFzZTMwLW1haW50Cis2ODkxNSBmNWJlNmNhZWFkMDNkODkwY2I1MWJkZGY5ZDIyYWFjMjQzZTZkZTBkIGxlZ2FjeS10cnVuaworNjg5MTYgNGU4ZjI4YjNlYTBhOGVmYTAzNTczMDczZTA3NGRjNTg1YTUzODEwNiBweTNrCis2ODkxOCBlYTU3NjdlYmQ5MDMyYWQ4YThiYjQ4YWU5MTU4ZDk4MDA1N2VlYjA2IHB5M2sKKzY4OTE5IGMyNmYxYWYyNmJmYzIyYWY5YTA5NTMzYjllOTFjYjkzM2VmZGY3MWYgcHkzaworNjg5MjAgYzRjNGU0YjFkYzFhZTYzMWVmOTg1OTFhOGYyMTUyYzA1NTBiNWNmMCBsZWdhY3ktdHJ1bmsKKzY4OTIxIDk5YzEwZDY0N2YzMjZmNjM2MThiMmQ4YzkxZTE5Y2ZiYTdjOTExNjAgcmVsZWFzZTI2LW1haW50Cis2ODkyMiBmZDhhZjQ2ZDM2MTU0M2M3NGY1Njc1OGVmNmQwMTJkZWEzMmM2NDUzIHB5M2sKKzY4OTIzIDJjN2QzNTY5ODgyZGUzNWNlZWEzNWRhYTk2ZWIwODRhOWEzMjVhMTIgcmVsZWFzZTMwLW1haW50Cis2ODkyNCBkODZlMjMzMThiNDE1ZGZhZGQzYjIxM2NjODk2OTUyODc3ODlhZWU4IHB5M2sKKzY4OTI1IDU1MTI1N2M4MDU4YWYwM2E3NDZiMGMwNTFmNzQ5YjMxODM1NTM2YjMgbGVnYWN5LXRydW5rCis2ODkyNiBlM2NlZWI3ZWI5MDEwZWU3ZmRkZTRhMTM1OTRhYmU5ZDJlZTg5MDAxIHB5M2sKKzY4OTI3IDIxY2Y5NmNjMjIxNjNhOTU2OTM4YzYxMDZjYjg1ZWJiZDQzNjNhNjMgbGVnYWN5LXRydW5rCis2ODkyOCAyODE5YTQ3MDZjODExMmY0YmE2YzYyYTdlMzczMTMxZmE5MmRhYThiIHB5M2sKKzY4OTI5IDdkNWZhNTIzNDFlMjMyMzAwY2I3YjkzMDg1N2IwOTk3MmUyNWY5MGEgbGVnYWN5LXRydW5rCis2ODkzMCA3NWQwZjYxOGUxZGVjNWFmOGRkODgyZDk3ZmFiNzc5M2EyYWE4NDhjIHJlbGVhc2UyNi1tYWludAorNjg5MzEgNTBmNDBmMmMzN2RkYTU3ZjRjMzg0YTFiOGJkZTA5NmE5YWJlMDhkNSBweTNrCis2ODkzMiBjYzgxMzBhZmIwMzkxMjJiOTQxMzUxMTM0ZDQ0Yzg3ZDYxYTMyNWYzIHJlbGVhc2UzMC1tYWludAorNjg5MzMgN2E1NzU5ZTg1NjM5NGZkNDczYmRmOWM1YTg0MGY1YzczMTgyMjgzOCBsZWdhY3ktdHJ1bmsKKzY4OTM0IDQ3MWJlMmM2NDU3ZWVhMzUyNTI4MDhiOTEyODU2MWExZDJkYzQ2MTkgcmVsZWFzZTI2LW1haW50Cis2ODkzNSAwMTEzMjE5NWY1NjI1MTU4ZTc4ZjI2YTFjNzdhZmI5MWRiMWIzOGJmIHB5M2sKKzY4OTM2IDMzNjlhNWFjYWY3OTgzNjVhZjRjNzgxMTg1NzYxYTQ1NTE5NWVmYTIgcmVsZWFzZTMwLW1haW50Cis2ODkzNyBjOWZlYTM1Yjg3M2VhMWE3ODM2MjNjMWVjNjM5Y2E4YTFkYjYwMzBlIHB5M2sKKzY4OTM4IDEwZjRhMTYwNDM4ODkxY2ZkMGU1M2ZkNWNhZTM2NTk3NzcxODI5Y2UgcHkzay1pc3N1ZTE3MTcKKzY4OTQwIGUwZDljNjU5ZjdhNmMwZTI3ODkxMzY0YjlkMGYzNzE0ZTkzZDJiNTUgcHkzay1pc3N1ZTE3MTcKKzY4OTQxIDE0YWNlMjA1NDQ3YmJlMjM4ZWFkNjQ1OGEzMzAxOGFmZWY4NGVjYjIgbGVnYWN5LXRydW5rCis2ODk0MiBlNDcwNWZmNjI2ZjA4YjQ5NGRkODJjMGY3MTRlZjg4NThiNWNhODA0IGxlZ2FjeS10cnVuaworNjg5NDMgYTUyMjkyMzdlYjUwY2JmMzY4ZjkwMDYyZjkwN2Y2N2U1OGVjZmY0ZCBsZWdhY3ktdHJ1bmsKKzY4OTQ1IDRlODJmYjFhZWIwMjIyYTBmOGM0ODBjNTJmODg4OTg3OTIyNzQ4MTMgbGVnYWN5LXRydW5rCis2ODk0NiA2YTkxYjNhZGNhZDZlNjA3MmE0MTdhYTAwZTcyYzk0Nzc4NDYwN2IyIHJlbGVhc2UyNi1tYWludAorNjg5NDcgYzg1MWVkMGNmNjVmYmM2ZWIzOGVkYTIwOTVkYzhjZjg3MzljMDQxZSBsZWdhY3ktdHJ1bmsKKzY4OTQ4IDA5NmI0ODg0MzhlOTI0ZWM4OWU3YzI4NDc1YzQ1ZTMwMjAyZmZlNWQgcmVsZWFzZTI2LW1haW50Cis2ODk0OSBjMTU1Y2IzOGY3NmQwZTY4MDU1OGY4Y2QwMTA4Y2Y3ZjU4OGQ2NWJiIHB5M2sKKzY4OTUwIDQ1YTUyNzZlNWRjYzY1ZWJlMmQ3ZDZkMzQ4Y2MyZWY4OTllZjQ1NjAgcmVsZWFzZTMwLW1haW50Cis2ODk1MSAyMWZiMTAxNDI5NGNjNjdlMjY3M2NhZGFkYzZiNmNiZjZiMDkyMzg1IGxlZ2FjeS10cnVuaworNjg5NTMgYjRhY2UyYjZjMjhmMGY0MjE1MTI4Yzc2ZjVhYjk3MTQ1Y2ExMGQzYiBsZWdhY3ktdHJ1bmsKKzY4OTU0IGZiOWQyZDJhNDM1OTU2NzIwYjY3ODBkZDRhOWRlMjczMWMzN2NhOTIgcHkzaworNjg5NTUgZGZhY2VjOGJhNmRiNGU5NjEyMjQ4ZWQ4ZWZlZjc4NzY5NWRjYWU2NSByZWxlYXNlMjYtbWFpbnQKKzY4OTU2IGI5NGU5ZWQzNTU5YzI3MzQxMzNkZDhjMGYxNDhkMjM1YWJjMTZhYzIgcHkzaworNjg5NTcgYzRkMzFmOTc5OTBlOTVjMjkwMDhkNTU4YjY1YjBlNTQ2MDQ3OWMwOSBweTNrCis2ODk1OCAwNGEzM2M0N2FiYjVmMTE3NzNiMGI5MGU5MzgyMmViMTVlNzY5MjJmIHJlbGVhc2UyNi1tYWludAorNjg5NTkgNTIwMzc5NGM3ZWEyMTQ3MmRmNmNkZjExNmQ5MTE4ZDU1YjU4MDRhZSByZWxlYXNlMzAtbWFpbnQKKzY4OTYwIDM1YzY5MzdjMDEyNzVjMWUwMjI2YWY2ZjhhYzZjZWZmMGI3YzQxZmEgcHkzaworNjg5NjEgYWQxZGIwYWU5OGM2YTg3OWE5ZWI4YWEzYWViNTA2ODM3MTMxYTE3YSBweTNrCis2ODk2MiAxYzUwYTE3YzBmMjFjOTYyNzkxNWIxNjU5M2QyMjQ3MmE5OWRiMWE2IHJlbGVhc2UzMC1tYWludAorNjg5NjMgNjk2MDUyM2ZhZGMxZTRiZmI0NGE2Njc3YWQzZDBlYmFhMWE4ZjEzZSBweTNrCis2ODk2NCBkNTEzMDI0ZjUxNzc1YmFhNWU4MDI4NzhhOTNjMDM2NTA4OGYyODdkIGxlZ2FjeS10cnVuaworNjg5NjUgYjg4NTA2MDZkOTIxYTBhZTgzODlkZDc2MWEwYWVmNjMzODAzMDcyMSBweTNrCis2ODk2NiAwMmUxYzVjZTZhNjlmOTZlYzE4MTNkZjAyY2IwY2Q1MTJhZGE1Y2NhIHJlbGVhc2UzMC1tYWludAorNjg5NjcgMzZmYmFmNzUzOGNlYzI1YmRhODBjMzhlMDcxNmEzODJmMjZmYTAwMiByZWxlYXNlMjYtbWFpbnQKKzY4OTY4IGQ0MjM3NGQwYWE1ODRiYTlmYTk0MDY4YzU0ZWZkNDIyMjczOGNiOGUgcmVsZWFzZTI2LW1haW50Cis2ODk2OSBkMzYyZGE5OGQwZGU4NTZhNjRhMDZiZmNjMWJmNzBhZjZjMTcyYWMwIHB5M2sKKzY4OTcwIGIwNDg5NmNhYTI5YmU5YmJlZWI4NzQwM2EyMDA5NmNjOTE5MzU0ZTEgcmVsZWFzZTMwLW1haW50Cis2ODk3MyBjOTRhMjM3YmY0OTcwMDBjNzlmMzFjODkwMWFmMTM0NDc5MDAwOTdkIGxlZ2FjeS10cnVuaworNjg5NzQgMjAwODI5MjU1YTZhN2ZhN2FiNTJkMDM3ZTI0NzE4YjZkY2RjNzFhYiBsZWdhY3ktdHJ1bmsKKzY4OTc1IDJlYTc1ZjYwZDllNWQxZGE0ZWE5N2MwNzU3YWQyNGViZDFjMmNkMjYgbGVnYWN5LXRydW5rCis2ODk3NiBjYThlYTUyYjQ1YzMzOGFmZTc4OWRlMDUyMjg5MTQxMWU4N2I0MzY0IHJlbGVhc2UyNi1tYWludAorNjg5NzcgOThmMjIzZWNlOGYyNzI5NzBmNTk5YWY1NThiMTYzNjhhOWU1YTU5ZCBweTNrCis2ODk3OCAwNjg3ZDQ0N2RlNjFmZjhkYWM5NmI5NjVmNmI0YzZjNzFmYjM0MGY0IGxlZ2FjeS10cnVuaworNjg5NzkgZTE5ODgwN2M1NTg2N2IyNzQ0ZGNiNmNlMzFhOGY2M2ZkMzRhOGEzMSByZWxlYXNlMjYtbWFpbnQKKzY4OTgwIDg1N2RmNmMwOWUxMmY5Y2MxNTU4YThmMzdiM2JjZDY5NDIwZTZhMzAgcHkzaworNjg5ODEgOTRjMmRjNWY0NDZkNjc2YWNlZTU0ZjlmMzE4ZWQ3YmRkNmJmNWE5YyBweTNrCis2ODk4MiAxNGMzYWI5YmQ3MDYxZjYxMGMyMGJiOGQ0ZGMxMjkzMDU3YTFkMTgyIHJlbGVhc2UzMC1tYWludAorNjg5ODMgYzIzZTQwZDFhYmJjOGQ5MWVjNDZhMWE0YjhmOWM0N2YyOTY5ODM0ZiByZWxlYXNlMzAtbWFpbnQKKzY4OTg0IDgwMjUwNjY0NTY2NjRkZGM0OTljOGQ2OGRiYTlkMmY0MzEwZWFiYzcgcmVsZWFzZTI2LW1haW50Cis2ODk4NSAyY2IwYzUyZDc3OWZjMjNiZTBmYzJiYWRmNDI5YzY3ZmQ1M2M5YTA5IGxlZ2FjeS10cnVuaworNjg5ODYgZjU3MjkxNzE4M2ZhMmVjYzJhZjRlNzc3YTI2ZTkxY2ZlNTk1ZmMyYSBweTNrCis2ODk4NyBmMTM4ZmJlMjk0NWU1NTg5YjBhMmQ0MmRmODI1MDc1MTVmZGUyMzIxIHJlbGVhc2UzMC1tYWludAorNjg5OTEgZjA4NWFhYTQ2ZDg3NDhmZDU4ZGVlZDA3NmNiZDkzMDcwNWUxZTE2MyBweTNrCis2ODk5MiBmZmU3MzJkYWRiMGQ4ZDk4NDFkODk3YjljNzJhMWUwN2EzZTI1OWJiIHB5M2sKKzY4OTkzIDI1OWZhOGY2NGE5N2U2MjQ0N2Q2ZTgxODM0ZTlmNTFjYWMyYjMwOWUgcHkzaworNjg5OTUgNDQ1MTIzMTFmMmJjODIwMDcwYjgwNWQ2MmQ0NGI4MDllMTJkOGE3YSBweTNrCis2ODk5NiA5NmQyOTZjNzhmYmE4NjZhYTlmNjhlNzc3ZWY2OGQyZDc4YTZiMzdkIHB5M2sKKzY4OTk3IDU2NzliYjliNTE5MGM5MWFjMWFiMTI4MWQxYjU0NDBjMTkxMTZmZTYgcHkzaworNjg5OTggNmMwYmI1NDhhOTQ2YzdiN2U5NWViYjc4YzFkNWE4MjZmNzUwYjQ0NyBsZWdhY3ktdHJ1bmsKKzY4OTk5IDc3MjBlMzYzYzFjOGNlZDc3OGYwM2Y2ZDM2MjBmNzNjMzYxZjAzOTQgcHkzaworNjkwMDAgODRkNjQ4Y2RkYzMzNDYwYWQ3ZTJiNjIyMDMyOTE3YWMwYjRjZDIwMSBweTNrCis2OTAwMSBiN2NlNjc1ZmViYjkwM2NhYWEwYTA1NzhkOTllMjQzMTdkMWNhZjQzIGxlZ2FjeS10cnVuaworNjkwMDIgZjExYTQxMDk1NzI2Zjk5MzVhZGU0Nzc5YzlhOTQwN2ZmZThlMGI2ZSBweTNrCis2OTAwMyAzMzI5MWUxZTg3ZWM3NDNmODViYjdhMWY1NmFlMTQyNGYxOGYyNjlkIGxlZ2FjeS10cnVuaworNjkwMDQgNDAwNTAxMWQzYTA5ZWNhOTllMTEyODUxOTExMjJlY2M1NWYxMjVhYiBweTNrCis2OTAwNSA3ZTgzM2NkZWIyNDE3NDU4NmE1MWQwOWQxNzMwMGQ4NjQ4YTI0YTgyIHB5M2sKKzY5MDA2IDRiODdmMzE5NzhiN2UyMTc2YzY4ZGI2OGQ5NWVjMDVjZTQ3YTA5MjkgcmVsZWFzZTMwLW1haW50Cis2OTAwNyA0OGI3MDM3ZmYyMGU4NWI2ODhlMGJiNzQ1YTdlMGI5MGRkZDRlNDI5IHB5M2sKKzY5MDA4IDdmMGU0ZTQyN2VhM2Q3MGFlOGRhZDRjZmQ3ODY1NWY3Y2I1MjM1MTAgcmVsZWFzZTMwLW1haW50Cis2OTAwOSA5OGE4NTVjOTdmZjIxNGZhYWJhMGNjYzMwMjg5NDg2YTM4NDI3MDdiIHJlbGVhc2UyNi1tYWludAorNjkwMTAgZDE3MGZkZjRiZGZiNDUyMmE2NDQzM2QzOGY5OWU0ODQ2NTRiMTJlMiBsZWdhY3ktdHJ1bmsKKzY5MDExIDE0NjMxYzYyN2UwMzc0MmQ4ZTlkODFlNjIxNzYwOGJlZjE3ODIyYzggcHkzaworNjkwMTIgM2U0Yzg3MmQwMjQ2N2E1NzE2YTVmYjRkMmJkOWI5NzZkYmU5MDExZSBsZWdhY3ktdHJ1bmsKKzY5MDEzIDM0MDI3ZThkMDQ0ZjAzYzg4OWFjZDk4ZDkzNTljODhmMjRkMzNhNzcgcHkzaworNjkwMTQgYTI4NzY1ZmQzMmYwMGE1ODdmODJhNmJiYzVkYmE1MGFiMGE3OTc5NSBsZWdhY3ktdHJ1bmsKKzY5MDE1IDdlZDljY2MwYjUxOTdlNzMxYjg5ODMwZDU0ZTIwMGE3MzIyYWQxMzUgcHkzaworNjkwMTYgOGNkM2NlZDFlZDI5OTlkZTYwYzljOTY3M2E4ZDFkMDljN2MyNzc1NCByZWxlYXNlMzAtbWFpbnQKKzY5MDE3IGU3MThkMjk4NzRkNzVjN2Y2NTdhNjg2YzlmN2Y5MmM5Mzc4YmVhYmUgcmVsZWFzZTI2LW1haW50Cis2OTAxOCAyMjU0Y2QzMjAwZjA2MDJkYTFmNjc2YWE0NmQ0OTg5Y2JjM2M5YjNlIGxlZ2FjeS10cnVuaworNjkwMTkgNTMyNDRjNGVlZjIyM2UxZWU5MTJkNTBmY2I2ZjQzNjkxOWQzOGM4MSBweTNrCis2OTAyMCA1NDdiN2ExN2MzNzk5ZTc3MjA1ZTExMzljMjBjNDAyZDA2NTI3ODdkIHB5M2sKKzY5MDIxIGE2YjAyNTIzYjkwMzVmNWNjMTQ5MDZkY2Y1ZDRlZDQ0YmExNTlhMGMgcmVsZWFzZTMwLW1haW50Cis2OTAyMiAxYjMyMGZmYzBkYjhjYWU4MzA4OGI5OTU0ZjNmNzY0NjJiOWM3ODY1IHB5M2sKKzY5MDIzIDlhNGZkYmNmMmQ5ZjJhYzc1YmJhOGQ0ZDk5MzA3ZDNkM2YzODg2OWQgbGVnYWN5LXRydW5rCis2OTAyNCBmYzUxMDI2YWJkZTZjNmQ2NWFlYzA1YTdmOGRhOGU3OWUwNzZjZDM1IHB5M2sKKzY5MDI1IDc0YWE0M2RkODc1ZGQ5ZTVkNzk4YzQ2MGQ0YjRhNDhjMGY1NTExOTUgcHkzaworNjkwMjYgYWRiZDc3YTkwYmRlYjVhYzFkY2EzZDAwN2M4ZGZkNTQ4NmU5NzY5NyByZWxlYXNlMzAtbWFpbnQKKzY5MDMxIGM1YTUyYWVjMmRkZjkxZTEzZTBlN2YzMDkxMDJmMjllMWQwYjMwZjUgcHkzay1pc3N1ZTE3MTcKKzY5MDMyIGI2ZGU2OTEyZmUxNDZiYTZiZWQyMDU4ZGY1NmVjNTU4ZjkwZWFjNmEgcHkzaworNjkwMzMgZDJjMDY3ZjlmOThiOTVkMjE5Y2Y0NDgwZmNlNTMzYTcwNWNjNTBhZCByZWxlYXNlMzAtbWFpbnQKKzY5MDM0IDVmZWI5NzZiMThhYWM4Y2U5MWY2ZWJhYTkwMTQzOTY0Zjk0MDE5MGMgcHkzay1pc3N1ZTE3MTcKKzY5MDM1IGJlYTZiN2EwYjlhMjJmODk1MTk0ZDI2Mzg0YTQ2NzZjZDI5Zjk0ODkgcHkzaworNjkwMzYgMmE2ZTBiYzRiYzAzMTlhZmE0ZTY4NzFhNTE5NGJkY2JlNTNkZjM3ZiBpby1jCis2OTAzNyAyMzFjNGU0OTBiMWY1OWY3NGRhNWU5Mzg0YThjMGFmNGUxZTRiMjZiIGlvLWMKKzY5MDM4IDYyY2E4MWRkMmFlODg3Mjk2ZGVjNTcxM2FkM2UwYzUwMWYzN2I0NTUgbGVnYWN5LXRydW5rCis2OTAzOSBiNjc0NzA2ZjNiMTBlZGUyYzZlNTQyZDQ0MjkyYWQ4Y2VkOTg4MGE1IGxlZ2FjeS10cnVuaworNjkwNDAgMTQzNGQxYmM2NjdmNzI4Mjk2ZDY2Mzc1YTJlMTc1NmYxMDQxYjU3ZiByZWxlYXNlMjYtbWFpbnQKKzY5MDQxIGFiMTE0NjU1MTI1NTIzMWFhYTg3NmM4NDZhYWRmZWZlMzgyYjJlYzYgcHkzaworNjkwNDMgMDUyMmNmZWU4NzlhMTFkMzNkNGMxZDlmMGYwM2IyNzE0ODQ5MmVlZCByZWxlYXNlMzAtbWFpbnQKKzY5MDQ0IDg0MDAyODIyNmVkNTNlYjZmM2I1NGU0ZmQxYjUwZDgwOTBiNzVjNWUgaW8tYworNjkwNDUgMDRjYTU3YmI3MTA4MzkzOTM5NGQzMzBkMzM4YzY1MWIwZjJmYjA1OCBweTNrLWlzc3VlMTcxNworNjkwNDYgNGFiNTA4YTVjZDdlZDBhMzUyMTgzNTY5NmZmMmI1OTYzMDViNmIwMCBweTNrLWlzc3VlMTcxNworNjkwNTAgYzEwMWY3OGFlZDhiNTFiMzg1MjRhODhmNzQ5YzNlODgyMzdhYmIzZCBsZWdhY3ktdHJ1bmsKKzY5MDUxIGM5MDkzZDQxNTkwZWVhMjI0M2M5YjBlYzk0MzI1OGJkZjQ4ODlmNDggcHkzaworNjkwNTMgZjA2ZDkwMDI3Mjk5NDg2NGIyNWZhNTc3YjM3Njg3M2RjZGMxMjI0MyBsZWdhY3ktdHJ1bmsKKzY5MDU1IGQ2OTAxMjlkN2RhYzI1NTYyZTljZGVmOWQ1ZmE5MDgxNmVhMzVmMWIgcHkzaworNjkwNTYgZmQ0YmViZjlkZGRlZTdhYzk3Nzc3ZWFlNzgxZjgwZGFkOWJjY2Q4OCByZWxlYXNlMjYtbWFpbnQKKzY5MDU3IDM5NzU3MjVhODViNTE4NGFiNzI1NWZlZjdiM2QxY2ZhODJlN2RiM2EgcmVsZWFzZTMwLW1haW50Cis2OTA1OCA4ZDYwM2U0OTM4NDZmODdiMGFjMDI2NjFjNzIyZWY0YWI3Y2E4ZWEyIHB5M2staXNzdWUxNzE3Cis2OTA1OSBiZmY5OWE4MTgyNGE3MDk2NGQyZDFlZDI3NGE5MjVhYmRkODFjYWVkIHB5M2staXNzdWUxNzE3Cis2OTA2MCBjYTRkYmU0YWU2MjlmNDMxNDI1OWNlODhjNDE4YzA5YTg1MWQ3MmIzIGxlZ2FjeS10cnVuaworNjkwNjEgOTQ2MzQwZmIxMTRiNTMwZjM0ZTFlNGRmODQxYTEyOThhODMzODIxMSBsZWdhY3ktdHJ1bmsKKzY5MDYyIDE4ODRkMDg4ZTBhY2NlY2Y4YjEzYmEzODM3NWI5OTFlNmY0NDc5ZDIgbGVnYWN5LXRydW5rCis2OTA2MyAwYThhN2M0NTdmMWJiZjliZWM5NmI5OTg4ZGNjYjEwY2Q4MDUwYzI0IGxlZ2FjeS10cnVuaworNjkwNjQgNWZjNjA3YjZlNDJkN2I3OWE3NmYzN2UxNzljNjFmNDA5NjIyNzkwNyBweTNrCis2OTA2NSA3M2JhMGY0ZGIwZDU5MTBkY2YyMjg2MWRmYTAxMWI3N2NjYjRjNmNlIHJlbGVhc2UzMC1tYWludAorNjkwNjYgZDhjNTIyZDYwMGU0ZTNlNDk2MDZhNjE0NjJhODk1MjkwNTM3YjFjZSByZWxlYXNlMjYtbWFpbnQKKzY5MDY3IDQ0NDdiYzFmNWE1MTIxNGY2MGY2ODk2M2E5ZTlmODljZThhYzdlNWEgcmVsZWFzZTMwLW1haW50Cis2OTA2OCA5NzQyZThhNGRjYTFmMGNjMzliNjUwODMwMzlkMTVhNDIxNWEzOTBiIHB5M2sKKzY5MDY5IDljMWYwNmIyNzNmNzJjNTYyM2U5MWYwOTQxN2YxZTJjZTBkOWJkNTMgcmVsZWFzZTMwLW1haW50Cis2OTA3MCA5NDQwNDY4MDgzNTkzYzUyMmRiOTg0ZTk5YWQyZmYxMDk0ODRjMGYxIGxlZ2FjeS10cnVuaworNjkwNzEgOWM1YWVmOWYxZmE3MjdlNzlhMmJiMjI1NDRhNjRjZDAwMGM0NzYyNiByZWxlYXNlMjYtbWFpbnQKKzY5MDcyIGYwYTFiZjI0OTAxMDVlZGQ4ODY1YWIzYWVkMTQ1NTg4MDM3ZTlhN2IgcHkzaworNjkwNzMgMDFiOWM1ZDk5ZWJlMjM0NDIxZDZkYTAwNjgxZGZiZjA2ZTAxYjQ4NCByZWxlYXNlMzAtbWFpbnQKKzY5MDc0IDUxOWIyMWY4OTFlYmQ1YWE4Yjk5YmQyNmIwMWQxNjc2ODMzOGRjODkgbGVnYWN5LXRydW5rCis2OTA3NSBiYjYzOTE1ODI5NmU3NjU2MjZhMjgxYzVlYjM3OTA2NjQyMzM3NWU3IHB5M2sKKzY5MDc2IGQ4NzdkYmZkNGJmOTM5ZTEyOTU2ZWZjYzgwMDQyOTIwYzRkNWVkN2EgcmVsZWFzZTI2LW1haW50Cis2OTA3NyBiZWRjNjg0Njg0NGRiZjBmNTkxNGE0NDI4NWM5YmZhN2U2NTQ2M2NjIHJlbGVhc2UzMC1tYWludAorNjkwNzggMjM4NGMwNGVkYmI2MGJiNmNkZDI5ZTczNzQzMWFjOWYzMjZiYjBlOSBsZWdhY3ktdHJ1bmsKKzY5MDc5IGEzMzA0MTkwZDhhYWFhOTE1MDg3Y2M1YjRmY2E2OTFhMjU3MjZlNjggbGVnYWN5LXRydW5rCis2OTA4MCA5YTlkMjZlODQyYjMzMTVhNjdiMTc3MzYxMmI2MGQzOWMxNDQ5MDRiIGxlZ2FjeS10cnVuaworNjkwODEgMzIyODkyOWVjYjZkODQ4MzM3OWQyOWY2ZDBkMjI2OWU0N2M3YzAyNyBweTNrCis2OTA4MiBkNjZlMWFiYjNhOThjZmQ2YzdiYjg2MDU5NDY1OTdmYjIzYTdiZDhiIHB5M2sKKzY5MDgzIDdhZDk5NmVlMzMzNDFkZjA2ODFmMzQ5OTAzZWMwMTMzZTZhYmIwNWEgbGVnYWN5LXRydW5rCis2OTA4NCA3MjViMjA4NzMwYTU5MzQ5MTRmOTdhZDczOTcwMDBkNDM2NDE2MzQ4IHJlbGVhc2UyNi1tYWludAorNjkwODUgMDdmZjI4MWJlMDJjNTU3NmFhYzQwZDYwNDQxZjAyNWRhN2Y4MTIzZCBsZWdhY3ktdHJ1bmsKKzY5MDg2IDRmNjA3YzNhZThlMmQxNzNmMmFhODNhYjA4Mzk2MDA2NDAxYWI4YTQgcHkzaworNjkwODcgN2NiMzUxYzljZjQwMjQ3ZTI2OTM3MmU3YWE4OTQxMDU0ZjUwMWQ5MCBsZWdhY3ktdHJ1bmsKKzY5MDg4IDRiODk3NmVhNjk2NjBhOGIyNDQ0NWU3NzUwZDU0MGU3OTY3ZjgwODYgcHkzaworNjkwODkgOWViODRmYzQzNmZjMWIzYTVhNGM2YWJiYjQzZTBmNmNmMDM0ZjhiZCBweTNrCis2OTA5MCA0YWJjZjlkMWI5MzgwZmJhMDE2ZTg4YTQ5MDQ4ZDhhNzY0ZTZjZDBkIHJlbGVhc2UyNi1tYWludAorNjkwOTEgMTRlNWI2ZTgzNjgwMGY4MmE5OTc3ZTQxMWViMWYwNThkN2NlMGFhNCByZWxlYXNlMzAtbWFpbnQKKzY5MDkyIDBiNjY3ZTM5M2ViMzQ4NzAxZmJjMWFhZjYxMDc1NTcyNWY0Yjk2Y2EgcHkzaworNjkwOTMgOTY5MzQ2ZGJmMzFlMjA0YzYxNmRmNmNmMDc2MGRmNjIwYjY4YjVhNCByZWxlYXNlMzAtbWFpbnQKKzY5MDk0IGRhYWU4YzMyNGJlMWI5MTkxM2Y1NGNmZGNhZTY5N2M0NTNlZWUyNzIgbGVnYWN5LXRydW5rCis2OTA5NSBkMTYyOWE5NTljYjg1MDQ2OWY2YmNkMWNkYzNjOWJhMzNhNjVhNjZlIHJlbGVhc2UyNi1tYWludAorNjkwOTYgNDYzZjZjMTJmMWQ0YzI1MTEzZjYwZTNiNzA5YzlkZjM4MTgzNTI3NCBweTNrCis2OTA5NyBkODU3MTQ1NzRjOGE1MDM1YjBkOTQwYjRlYzY1ODk0YWU3NzVkYjJiIHJlbGVhc2UzMC1tYWludAorNjkwOTggYmNiNmFkMWNiNTVkZmEzMmE0MjQyZDZlMzhjOWFjNWNkZWMyZjFlYyBweTNrCis2OTA5OSBhZjk0ZWYzOGI1YzBmMjdiY2U5NWQwOTEwNDU0ODU4MDY2MDM4ZjVkIHJlbGVhc2UzMC1tYWludAorNjkxMDAgM2MyOTBiYzIxZDJjM2RhYjk1ZmNhNmE5OWNlNzlkY2QyZjA0MzQ3OCBsZWdhY3ktdHJ1bmsKKzY5MTAxIGU0OGM1OTE0ZGE4MThmYzkxMTc2N2FlN2JhNjRkYjgxYTk2YTM0MTYgcHkzaworNjkxMDIgZTJkY2FkNTZlNDBlMDMxNzQ5ZTdkMzgwMDhkN2JjN2NjNTI5NmEwMSByZWxlYXNlMjYtbWFpbnQKKzY5MTAzIDVkMGVhZWI0MTM0ZDdlYzlkMzc4N2JiYTNlOTI3ZDNkODhlYzY2YzMgcmVsZWFzZTMwLW1haW50Cis2OTEwNCA0YTRhNzQzN2M1ZTFjZjY2YWQ0ZmYyNTY2ZWU4NTg3MTNmN2MzMzk0IGlvLWMKKzY5MTA1IDkxZWQzZWNlMGM3NmEyYjI0NWIwNzRjZjYxZmJjNjVkNTg2YTc4YjkgcHkzaworNjkxMDYgZmM1ODZiMzgxOTg3M2U2M2Y5NzVmM2E2MjJiNTQzZGQ0MmJmMzE5NyBsZWdhY3ktdHJ1bmsKKzY5MTA3IGMyNjI4YmZlNmE2ODQ4ZjI4N2UxYzkyYzY0MmE2ODY3MTNmZjFhNmQgcmVsZWFzZTI2LW1haW50Cis2OTEwOCBjMzc4YzRmNGE3OTY5ZTFmZDA1NTk3N2FmOWNjM2I3ODdhNDE3ZDRiIHB5M2sKKzY5MTA5IDIwZjRhZmNkM2IyN2VlNjMwMGM4ZmY5MTkyMGMwZGUyYjYwZjFiMmMgcmVsZWFzZTMwLW1haW50Cis2OTExMCBiODhkMzc3MDExZjUwZGE5ZDM0Yjk4N2NmNDM2ZmQ3NDk5YjViZDRkIHB5M2sKKzY5MTExIGI0OGI1ZGRhZGE4OTQ4ZThjOTUzMjU5NmM4N2UwYmZjYjViYThjMjAgcHkzaworNjkxMTIgNmEyODk2ZDkyM2UzYTJjMjZiOTI2ZTkzYzgyNjA2NTY2M2Y5ZTkyYyBsZWdhY3ktdHJ1bmsKKzY5MTEzIDRhYjM4MWFlYTY1ODAyMGJmMmQ0NmM0NTRmMmE3Yjg1MzY2NzdlZGUgbGVnYWN5LXRydW5rCis2OTExNCBlMjI3MDU0ZDQ5NmRmZTg0ZWM3NDNiMWJlOWUyYWI4OTk2YTAyNzBkIHB5M2sKKzY5MTE1IGEwMzhlOGZiNjdjMjEwZWNlMThjYWJhNjcyM2I3ODdiMzE0MGYyOGMgaW8tYworNjkxMTYgN2I3OTY4ODYyNmU0ZWYwZGJjOTFkNjJjYWU0MjZkYTY1ZDU4Y2ZhNiBweTNrCis2OTExNyA5ODY3Yzg0OTUzMGJiYmYyNjdiYzgwOWZlYjMxNjNiMDU4YzAxMWU3IHB5M2sKKzY5MTE4IDhjMmM3MmNmMmEwY2ZiNjJmYjMwM2NhNjNmNWVlZmE1YzZmZjk3MWYgcHkzaworNjkxMTkgNjE3ODc1MzMzOTVjMGRhYWRhYWFkNTU3YmViNGYyMDc4ZmU4YWE2MSByZWxlYXNlMzAtbWFpbnQKKzY5MTIwIGU2N2RjNGRiOTY0Yzg5YTY3NjRkNDgzYmFhNDc0ZjVlZDQ0MzMzMWYgcHkzaworNjkxMjEgM2MyYjM1YTEwNTkzYmQ2OGNmOGZmNzlkZDZmMzFmNWE3MmE0M2YxZSByZWxlYXNlMzAtbWFpbnQKKzY5MTI0IDM1OTM5NGI2M2EyMzg4YWMyN2MwOThjZWVmMmY0OGJlYTIwNjE1MzIgcmVsZWFzZTMwLW1haW50Cis2OTEyNSA3ZmMwYWQxMWIwYWYwNzRiMDU0YTExYzA2YzM2Y2RhMWFhYzJjOTg4IHB5M2staXNzdWUxNzE3Cis2OTEyNiAzNzhiYzE4ZDIzNTA5YmJmMTljOGY3YTViNWFlODFjODUyNWFlM2E4IHB5M2staXNzdWUxNzE3Cis2OTEyNyAyMzk0NGYxZDUzZmRmYjljZDAwMGRiYThhYjcyNmMzYWM0MmZmODkyIHB5M2staXNzdWUxNzE3Cis2OTEyOSA0YzllYTY0N2VhZjQyMWRlNTc2OTJkMGVmMzYxN2QzZWUyMDkyZDY4IGxlZ2FjeS10cnVuaworNjkxMzAgYzVlMjgyODViNzRkMDEyMzIxYjU2YzdiN2EzZjllZmJkM2M2ZWM3YiBsZWdhY3ktdHJ1bmsKKzY5MTMxIDc1NDAzMTRmZjI2N2I0ZDVlZTAzY2Q1MzlmMmEwMmViZGRjMDY3YTUgbGVnYWN5LXRydW5rCis2OTEzMiAwMmE5MGRjMGMyOWE4YWY2NWIwYjJiOTExNmU2YzQwYjRiYTY0NjVhIHB5M2sKKzY5MTMzIGRmMDkwNTk3YWZhYWYwZjc3OGI1YzNiNjFhNzUxZmQyZjc5NTFmYzcgcHkzaworNjkxMzQgYmU1NzM1NGRkYjExNDQ2MjMwYWNiYjRiMTlhZmU1NzEyOTFhZTQxNSBsZWdhY3ktdHJ1bmsKKzY5MTM1IGRjZmQ0MzY1NjdjZWY5NDg3ZGQ5MGE1NDdhN2ViYTNmMWZkYTQ2OWQgcmVsZWFzZTI2LW1haW50Cis2OTEzNiA0MzE3MWY1NTdhZjgwZmVhMGM4ZTBhMmEzNjlkMWQ3ZDBiZDg1MTM3IHB5M2sKKzY5MTM3IGMwNmZhYTgxOTZiM2EwN2U2NmE3MGY3ZDhlMmJlMTA3MTgxYjE0ZWQgcmVsZWFzZTMwLW1haW50Cis2OTEzOCAxYzBhNWE5ODI3ZmE5N2Y2ZTFiOTUxZjYwNjA3NTlmOWM0YWFiOTY0IHB5M2sKKzY5MTM5IDVmNmQyMjVlM2MxZGFjMDlhYmI3M2VmNTg4ZTYzNDhhOGY0MTQyMjYgbGVnYWN5LXRydW5rCis2OTE0MCA5NDI2ZWViN2Y0ZTZhNTFjY2RjMGQwZDM2MGYyODI4ZWI3OGQ5NjUyIGxlZ2FjeS10cnVuaworNjkxNDEgOWQzYzJjZTg2ZjQyOGUyMWZjNGViMTgzYWEyMzhiZWUyNjcwOTM3NiBsZWdhY3ktdHJ1bmsKKzY5MTQzIDBjYWEwMDJmNWYzZDI1OGU0ZDVkNDJhMWQ4YjcxODQzZjllNDcwY2UgbGVnYWN5LXRydW5rCis2OTE0NiAxMGRhZWUzYTM2MDk3OGI5MzkzNjBjODEzMTVlNGI4Y2Q3NjVmNjYyIGxlZ2FjeS10cnVuaworNjkxNDkgY2Q1ZGI0M2RiYjY1YjkxNzAyMTIwMWIzNjk0YjFhN2ZjZjc0NjI0MyBsZWdhY3ktdHJ1bmsKKzY5MTUwIDE3ZDQwMWFkNmEyMTU5ZmY4YzBhNzRiOGY2OGFkNjc5ZmRiNWUyN2QgcHkzaworNjkxNTEgYmMyZDk0ZmQ5MTBjMGM4MzUwODkzMWY3ZTg0ZWE2NWQxMmRiNjlhNiBweTNrCis2OTE1MiAxZjI5MjJiYTVhMmExMDE4OTVmMjk1YTkzMzk0NGU1Mjc5ODczM2VlIHJlbGVhc2UyNi1tYWludAorNjkxNTMgNGMyMDU4MzUwODMzOGNmOTBhNDk1ZDRlYzkxZTM3ODJmNDM0YTg5NiByZWxlYXNlMzAtbWFpbnQKKzY5MTU0IGFhMDdhMTIzMTk0YTBiNzg5YzYzY2I0N2Y3ODg2NmJmYzJhYTE3ZTMgbGVnYWN5LXRydW5rCis2OTE1NSA3Mzk4MWJjZGE1YTJiYmNhYTU4YWY0YjRkYjcwMGVmNWRjODU2NTMxIGxlZ2FjeS10cnVuaworNjkxNTYgZWIyNjA3YTY1MTZlNjdiY2E0NTA4YTJkYWVkNjM4MWY3YjY3MTI1ZCBsZWdhY3ktdHJ1bmsKKzY5MTU3IGJjOTJkODNlNTUwODI4NzdkZmZlNTIwMjM4NjQyYTJkZTQ1YjJiYjAgbGVnYWN5LXRydW5rCis2OTE1OCA4NjcyYjBmNjU3NWQzYjFjYzZhZWNmMTAzOGI4OTk5YzczZTY2NDE2IGxlZ2FjeS10cnVuaworNjkxNTkgOWEyNDRhZmExYTlhMTgyZjRhODdkOTU3YjQwODNmZGQ3Mjc5NTE3OSBsZWdhY3ktdHJ1bmsKKzY5MTYwIGI0Nzc5NThkZjk3OGVkMWFjY2Q0MWVjMjEzYjYyZDYxMTk1ZTdhNDMgcmVsZWFzZTI2LW1haW50Cis2OTE2MSBmZWI5OTM0MzA3YjliNzg5NWViZjQxYTQyN2YwNjQ1ZGJmMmY3ODRkIGxlZ2FjeS10cnVuaworNjkxNjIgMTQ4NDIxNzJiMTUyMmY5YmEwYmZkNGRhNTFhMjkwYmEzNzc1MzdlZSByZWxlYXNlMjYtbWFpbnQKKzY5MTYzIGI4Y2U5NzljZGRjZTIwNmM3MWMwNjg3ZjQ3ZWQ3NzJhYzI1NzEwMzUgcmVsZWFzZTMwLW1haW50Cis2OTE2NCAzOTU0YzliOTBiNTI3YTExMDJlZGU3ZTZlODNjNWZhYzVlNjI1ODIzIHB5M2sKKzY5MTY1IDA2YmJjYjc5MmYwNGUwYTM0ZDcyNTQxYmE1MjdiMDIyMjJjM2ZlZDcgcHkzaworNjkxNjYgOGQzZjdkZDliNmNjZTA1M2RiZWEwMDZkY2EwODQ0M2Y3MTExMjRhNyBweTNrCis2OTE2NyA1MGJkMmMxOGVmZjA2NTI5NWMwOWI4ZDQ0OTlkYzU1ZWRhNjg3OGE0IHB5M2sKKzY5MTY4IDgxNTU4OWQ2MmE5YWUyMDFhOTA0NTRkYzY4YjEyOTE1NDY4MzAyOWYgcHkzaworNjkxNjkgZDI2ZDk3OGQwMDY2NDg2OGMwY2NiOGZlOTZlYzA1NDM4MWMwNDZkNCBsZWdhY3ktdHJ1bmsKKzY5MTcwIDRiMzI0NmM4M2UzZjJjY2FjNzQxNTYxY2JhNWE0N2RmMjJkOWRmNjAgcHkzaworNjkxNzEgNDI3ZjRhNzRmNTM4YWJmNDY3MzFjZDg1ZThhZGQ5ZmVmZDRkMjc0YiBweTNrCis2OTE3MiBkODVlZjI2ZWZkMTAzNzZiYjIxMzVlMWUxOGE3Y2YwNmJkZjBmNzJkIHB5M2sKKzY5MTczIDEzNGZiY2UxMTFlOWI5YzJkODFlZTA0OGQ4OGEzMTlmODI4NTlhMGQgcHkzaworNjkxNzQgZGVlZGRkYzdlMGI0ZDkxZTNlOWQ2MTE1OGJlMjkwOTQ4NDUyZTgzMCBweTNrCis2OTE3NiAzODZlYjRiNWNiYjNhYzYxZmI1ZThiNzA3YzNkZWZlNjFkZjc1ZWMzIHB5M2sKKzY5MTc3IGZiYjE3Y2FiNTcxNmUzOTM3ZDM1MGZkNDcyYjY3NDIxYjkzMGM0YWYgcHkzaworNjkxNzggNmJjZjg0ZDYzNzk3NTJiZTg2ZDFmOWIzNDk5MzhlN2Q3ZjVjMGQxNSBweTNrCis2OTE3OSA3NjY0MDVjMDRiZGMyOTQ0NTMzYzRkYTY4MjA4NmIxZjYwZjZjZGFmIHB5M2sKKzY5MTgxIDdjOTFmNDc5YmQwZDkxMGJmOWQ0YzM0NDkzZDBhNDFlMDhiODhmYzYgcHkzaworNjkxODIgZTk2NzVkNzJlM2UzYjk0MDNkZTQwYzJkMTExM2YxNTEwZGQyMTZmYyByZWxlYXNlMzAtbWFpbnQKKzY5MTgzIGU2NjMwNzVmZDFhZTRhOTk4MDBlNjc1MDc4Y2FmMmJhNmY3OTAzNzYgcHkzay1pc3N1ZTE3MTcKKzY5MTg0IDljYTM0YzE4ZTFiZDNhMWVmMWEzMTg1NDYzNTk5YjgxN2VjMjhlNzkgcHkzaworNjkxODUgMDE2MmNkNGY1NWJlMzFkMWJlZDJhZmY1YTdkYzY5M2RkOWY5YTA4OCByZWxlYXNlMzAtbWFpbnQKKzY5MTg2IGYwMDg5NDEzYzEyZmQ0M2U4MmM1NWU5YTk1MTJjMTZhYmMzOWI5ZWYgcHkzay1pc3N1ZTE3MTcKKzY5MTg4IGJhOTRkN2MwOTVlODBmODliZTI5YjIyMzNkYmYzM2FjODViOTc4NzggcHkzaworNjkxODkgNDEwZGZkNDIzZWYxMmIzYzM0N2Y0ZGU5Y2U3M2E1ZjU4YTZmODIwZSByZWxlYXNlMzAtbWFpbnQKKzY5MTkwIGUyZGIxNTE5NmE1NGI1MzkwMjk0NjI4MDYzMWQ5OWY1ZjNhNTY2MGUgcHkzaworNjkxOTEgMjM1ODI5OTU2NGVhODA0OWY4YmNhMWFhMTU2ZjFlMGQ0NmFhNWY2MyByZWxlYXNlMzAtbWFpbnQKKzY5MTkyIGU5NDU3ODI0Nzc3NDBjOGZjMTlhOWRmZDAwODVjZTMzY2IxZDkwYjggcHkzaworNjkxOTMgZmRhZTRlNzQ5ZDJiMzgwOWYwNTc5ODQxZmE1OTcwMzYxN2FiYzdkNyByZWxlYXNlMzAtbWFpbnQKKzY5MTk0IDU3ZDdkNmMyYjExYmNjNTQ5NWY3ZTg5YzlkYzU0ZmEzZTJkY2ZiMDkgaW8tYworNjkxOTUgNDdkNzQ3MTI0YTNlMGM0YmM3MDg5YmQ3MDZlYjJlNTFkNDdiZTJlZCBsZWdhY3ktdHJ1bmsKKzY5MTk2IGFlZjI5YTllZDQ5MTg0NzJjZjJiNDczZTBmOTNkMThmMjA2YmFhODcgcmVsZWFzZTI2LW1haW50Cis2OTE5NyA4YzQ0MTBkMDY3ZWU3YTE5YzdiNmM2N2Y4OGIzOGFlMWFiMzI5M2MzIHB5M2sKKzY5MTk4IGFlMDI2ZDI1OWQ0MTExMzhlNTBmMDcxNDc3MTljY2IxOWE5NmFlM2YgcHkzaworNjkyMDAgOTIzNjM1MWI1MjlhNGNiZGJhOGI4NTZiN2E2ZDUyOGQxZmFiNWFlZiBsZWdhY3ktdHJ1bmsKKzY5MjAxIGMwODNjMjc0ZjlhZmVjY2FkODJiOGI0N2IzMDY3MzAyYjk3YmJjNTIgcmVsZWFzZTI2LW1haW50Cis2OTIwMiAyYzE5MjcyZDhlNTY1ODZlMTk3YTJiMTQ0ZTcwYTk5YThiOTE1OTExIHB5M2sKKzY5MjAzIDZlNWNhOThhMzBhYzM4NTMxMDVkZDFlYjcwNTViMzk2MjY2OGM2NjAgcmVsZWFzZTMwLW1haW50Cis2OTIwNSAwMWIzYWNkMTA5ZGJiNTYyNDgyNzRmNzUxNGZjMjAwYWJhZTcwM2YwIGxlZ2FjeS10cnVuaworNjkyMDYgMmFkZjllZDZiYTdlODk3NGU3NzI4ZWExOTlhODI5YjkxNDE1N2NhZSByZWxlYXNlMjYtbWFpbnQKKzY5MjA3IGZmNjgzYTkyODQxOTM0MGQ1YTAzMTgzZTU2NzFiN2M1MzUxNDBiNjYgcHkzaworNjkyMDggODdhOTg1YTFiNWM5ZDBkYzI2YTE3ZmQyZGRiZjk4ZTZiZmUxMGE4NCByZWxlYXNlMzAtbWFpbnQKKzY5MjA5IDA1MDc0Yzg4MzczODQ3YTNiZWM0ZjNkZTA4ZTIzY2UwN2FjMzUxNjUgcHkzaworNjkyMTAgNjMzODZhZTc3Zjc5M2Y4MWY3MGE3NTg5OGViZDc2YTEyNjc3MTMyNSBweTNrCis2OTIxMSBmYTc5ZjEyMmExYjI1ZjNlNDMyMTM3Y2NlMWJmNDJlOGIxNzg4NDE5IGxlZ2FjeS10cnVuaworNjkyMTIgN2I3YTYzOWI5NjBmNWMyZDNjYjgzNzAyMTk4NWY1NjY0YzhkNjZlYiBsZWdhY3ktdHJ1bmsKKzY5MjEzIDBjMzIwZjhlN2UyMDM0NTg3MzIyZjhjOWJmZjZlM2QzMzVkZGFlMDIgcHkzaworNjkyMTQgZGViZDE0YzQ4OWI5MjE5YTU0OGZjMzIwMDJmNGE0ZWU4M2QyYTQxZCBweTNrCis2OTIxNSA4N2ZiYmYyMmFkZjM3YmE3OGNmOGNlYjEyNDM3MjcyN2ViMmYxMTRlIHJlbGVhc2UzMC1tYWludAorNjkyMTYgNWM3MDJhN2Q0YzQwOWFmY2MyMzFkOTNhZGU0OWZkZTc1MjE2MjA4YSBweTNrLWlzc3VlMTcxNworNjkyMTcgNDBmZjgzZTAyMzk1MzFlYzM4ZjZlYmQxOTRkOGQ3ZjYyNWQ2ZTlmNCBsZWdhY3ktdHJ1bmsKKzY5MjE4IDkwODIxYzdhZDg3NGY4OTMzNDc5ZDk5Mjk2YzQ4NDU0MTRmZDY4MTEgcHkzaworNjkyMTkgOTkxM2M0NzE1MjYxMDY3NDI2NTBjNjhiOTlmNGRhYWY0YWJiMGY0MiBsZWdhY3ktdHJ1bmsKKzY5MjIwIGZhZTE3NThhMjM0NjUxODcwMmUxZjk2NmM4ZDUzNjhhNmE1MDY5ZDQgcmVsZWFzZTI2LW1haW50Cis2OTIyMSA2MzBhNDM0NTFkMDRhYTBhNGRhMTQ1YTdlYmM4MTQyY2U2MjYxMzBhIHJlbGVhc2UzMC1tYWludAorNjkyMjIgYTk1MzQzOTFmZmY5ZjFjYmUwMTViYmVkZGQ5Nzg5NGIwMzYzYzg0YyBweTNrCis2OTIyMyAzNjJkOTZkYmU5MmM1NDEwMmYxMmYwNmQyOWQzZTFhMmE2YmNlMWM1IHJlbGVhc2UzMC1tYWludAorNjkyMjQgNzg2YzEyNzg1NzJjYzZmMzc4YjU4ZWUxMGRiMDEyYmZkOTU4ZjAxMCBweTNrCis2OTIyNSBjMjFkOGNkY2NhZTEwZTcyYzYxZTFlN2U1OTI5OWFmMDNhYmUzMmYzIHJlbGVhc2UzMC1tYWludAorNjkyMjYgMTQ3OWRiMmVmOWNkNTNiNWVmMTkwMTQ0YzRlNDcyZTE1ZDlhYWI1YiBweTNrLWlzc3VlMTcxNworNjkyMjcgNmM4ZWRkZjI0MDM1ZDM0Y2M5YzJkNmM5ZjJiMTdlMTRmYjI4OTI4YiBsZWdhY3ktdHJ1bmsKKzY5MjI4IGNhNzFhNDRkNTQzMjIyOWI4NzAzZmUyYzgyYzIxMzAxNzU2ZDI1Y2YgcmVsZWFzZTI2LW1haW50Cis2OTIyOSA2MjUxYjlkMzIxYWY4ZDk1ZmI0MjJhN2Y3ZDc0NWU2NWE3MmIwOTU3IHB5M2sKKzY5MjMwIDc0NDM4ZmMxMWQwNWRjZGE5N2EwOWMxMmY2MGEyZDk1OWY4MzY5MzcgcmVsZWFzZTMwLW1haW50Cis2OTIzMyBmNWQxNDM0ZjRkM2Y5N2UzYzM2ODJhNWM1NzEyZmQxNWExZTY2Y2Y2IHB5M2sKKzY5MjM0IDk4ZjRjOTA2ODc3NTA3MTBmYjRlMWE2Yzk2MmMwNDI1YTcxNDEwYmQgcHkzaworNjkyMzYgYzgyMDcyNTI2NWFiMTkwOTBiY2FkMTYxN2E5YmU4YWI2OGMyZWNkZiByZWxlYXNlMzAtbWFpbnQKKzY5MjM3IGQzZTZmMjYwMjMwMGNhZWE3NjVkNGEwNTEzMzc4ZjYyZDJkM2I2YWEgbGVnYWN5LXRydW5rCis2OTIzOCAzODgwYTE1OTIxMzdlNjhiODkxYzg0ODE3NmExOWUxNjY0ZjJlMmE2IHJlbGVhc2UyNi1tYWludAorNjkyMzkgNjc2NTQxMDZlZTc5NTc0YTZmNGE4OGQ4YzViNGU2YWZlM2JjZDhjYiBweTNrCis2OTI0MCA3MzU0ZjFhZmFlY2I0NWIxNDFhMDQwOTI5OGU3OTZmZjI2ZGIxMTBhIGxlZ2FjeS10cnVuaworNjkyNDEgN2JhNDFjMDkxN2ZmN2IxMDQwNmVmNGJjOThhNjRiMDk2MGU4MWI5NSByZWxlYXNlMjYtbWFpbnQKKzY5MjQyIDVjMjU0Nzk1YWEwN2E3MjcxOGNjMDZjODZmNjExNjhmYjE2ZDUxMzcgbGVnYWN5LXRydW5rCis2OTI0MyBhZWE5MGY1ZjM5OGJkZWMwYzNjYTM2ZTE3NjAxMjNjMmJiYTQyYjlkIHJlbGVhc2UyNi1tYWludAorNjkyNDQgYTFhNzFkNTE1ZGQyZmQ5ZjliNTBkOWEyZGZjZjQzMDVjODJkYzk5YyByZWxlYXNlMjYtbWFpbnQKKzY5MjQ1IDBmM2FhYmFlNGNjNjQ2NTk5MjI5Y2RhOWI1ZmRkNjE4NGYzYjAyNzcgcmVsZWFzZTMwLW1haW50Cis2OTI0NiA1YjcxMzA0NWVhOTA2ZTBmZTIxYmJmMWExNjRlMzE4OTM5YTA3MjFmIHB5M2sKKzY5MjQ3IGYzNzcyNzc0ODJhYjU4NjA4MDI3MjM1MDRjOTY0MWM4Y2M2NmJiYTUgcHkzaworNjkyNDggZjM1MWZiN2VhMTc5NmFjMDk0YWFlYWI0NmIwYzg3YTA1NmYwOTFkYyByZWxlYXNlMzAtbWFpbnQKKzY5MjQ5IDg1N2EzZjlkYTkxNTMxNTllNTIxNmZmZWJhNTNmZDdiMWJmMWQxMjcgcHkzaworNjkyNTEgYzUxM2U3MjhlMjRjYmY1NjY4ZDhkOGJhMDE2MWFkYzAzZTgyYzE3ZSBweTNrCis2OTI1MiBlMjBmNWE2ODRhZWZhNTg4YjQ1MGIzMzBhNGI2YTFhMmNiNjVlYmI5IGxlZ2FjeS10cnVuaworNjkyNTMgZWM2OWRiMjRkZTE5MGE3ZTkyMjQzZDA3NmQwMTgwMzViOGNmMmJhNCBsZWdhY3ktdHJ1bmsKKzY5MjU0IDhiMDg4MmM2N2I2Y2ZlMWYwODUyYzYyZTBhMWMyZGJhNGZhNDE4YzAgcHkzaworNjkyNTUgZTVhYmFmYWUzNjA0NWM1ZWJiY2Y0MjcxN2UzYTdhMDE2MjQwYTFlOSByZWxlYXNlMjYtbWFpbnQKKzY5MjU3IDc1NTIxYzEyMzYxM2FjYWJiN2VkZjJjYzRjNGY2MjkzNjUyNWZiYmYgbGVnYWN5LXRydW5rCis2OTI1OSA1ZjMzNTRjNTJlOGI4YWFhZTRhMTc0NDQ0MmViYjMwNTllYTI0NzA3IHB5M2sKKzY5MjYwIGU5NzA3Y2MzNjg5ZDM4ZGJhYWQwMGU0OTQ3ZTMxY2I1OTJkM2VhYWUgbGVnYWN5LXRydW5rCis2OTI2MSA4YzAxOTg3NzRlZDZkYWJlZjNmZTVhY2FjMzI5YTlkNWE0NTkzOThlIHB5M2sKKzY5MjYyIDFlN2EwNmE3ZjVlNzhiMDc1MWNkOTQ1NjM5MzVkNWQ3NTY4Yjc5NjMgbGVnYWN5LXRydW5rCis2OTI2OCBiNTg2Y2EzYTMwNjIyNTJhYTk4YTYyNDU3MWZiNzBlYTg4OTBmMDY4IGxlZ2FjeS10cnVuaworNjkyNzEgNDg0NWFiZjU3MmYxNDZiODRmYmE2MjEzYTE0MTFjZWRmOTc2NTMxMyBsZWdhY3ktdHJ1bmsKKzY5MjcyIGVjNjM0ZTU3YmM1ODYyMzY3YzBmOGJlODkyMTA0Yjc5Mjc0OTBiNTcgbGVnYWN5LXRydW5rCis2OTI3MyBmNzQ1Mjg3NzZjMTE1ZjQzZWExM2VmMDJkZjNhNGViMjM2YzJkZTE2IGxlZ2FjeS10cnVuaworNjkyNzQgMjQ1NjZlNDk5N2FlMmY2NzVlNmJjOGZhNTAwNDEyNjhhYTgxZDdlNiBweTNrCis2OTI3NSBjZTA0ZTM2ZjJhNTU5OTI5NmI0NzRjZGJhNzEyYjlmMjZkMmQ4OTg1IHJlbGVhc2UyNi1tYWludAorNjkyNzYgMmI2MDNmNzIzMjYwNWRmMzU3ZmYwMDU1YTdlNTMwMzU1NDBhNTI5YSBsZWdhY3ktdHJ1bmsKKzY5Mjc3IDQ3M2ViMzcwZGUyY2ZkNjZhYmZiZmY2MWZmNTc3Y2YwZmNjYzc2MTYgcmVsZWFzZTI2LW1haW50Cis2OTI3OCBjOTFiNzZkOGVjMGE5NzE2NWU1OGM5NjBkNmE3OWI5MWVlOTMzY2ZiIHJlbGVhc2UzMC1tYWludAorNjkyNzkgYWEyZWIwZjI0MmZmZDk1ODhiY2M0NzEyODI2MzIwOGM3ZWRlNjQzZiBweTNrCis2OTI4MCA4ZTE1ZGYzNzI2ZTEyMDlhMDFiMTNmMTJlZmU4YmIzOTU3ZTdiZTlkIHB5M2sKKzY5MjgxIDUzZDY0NDVjNmM1YThkOTg2MDNlN2MzZDMzMzg4OWU5YWFmNTRhOTEgcHkzaworNjkyODIgYjQ2MTg1ZDdlOTVhN2EwYzMzMWYyNzY4MzRmZjVjYjU2YzAyMDY1MCBweTNrCis2OTI4MyAzNzhhYmIyODFlMzE1Y2QwODQwMGRiZjI0ZjVmMjk2YzUxMmU0ZDdiIHB5M2sKKzY5Mjg0IDhiMThiMzg5MGUzMTYwOTRjZGQwMWJhYzcyMDIxOTU0Mjc0NWE0YzkgcHkzaworNjkyODUgZTIxNGJkZDU1MmZjMjZmNGY2YjJjMGNhYzYzNGY4ODJiNjg4ZDYxMCBsZWdhY3ktdHJ1bmsKKzY5Mjg2IDVhOTQyNDg5M2I1ZmQxZDZlYzU4OTQzZGQyMWY1YWM0NjhiNGQ4ZDMgcmVsZWFzZTI2LW1haW50Cis2OTI4NyAyMzMzYTU3ZmViOTg1MDJkZTBiMGFiZjIwYmJkMTNlM2UwMWQ5MDM1IHB5M2sKKzY5Mjg4IDFiMjMzYzgzZjJhOWI4MWFjZjBlZjJmZDQ4MjlmNjQzZjVlODM5ZTkgbGVnYWN5LXRydW5rCis2OTI4OSBjYTQyMzAwOGZhNGFlNjUwZmMyZGQwYjNhMzU1ZTg3Yzc2YmEzNjRhIGxlZ2FjeS10cnVuaworNjkyOTAgOTIxN2IzYTQ3NTI4NjI4MGYwNjFhN2FmMTlmNDY3ZDc0OWEyMGQ0NiBweTNrCis2OTI5MSA0NDUyZWIwNTdjYzRjZGFlZDRmOWU4MTU2Yjc0MWIxNzJmNTgwZmI3IHB5M2sKKzY5MjkyIDNmMjc3YjU2NWY3NmVjNjhkMjdmY2RlOGE3ODY3ZDY4ZjhkMzQwZGUgcHkzaworNjkyOTMgOGFhNzFjMTlkY2I4MDhjYTgxYzZjMmMzZDFiNGExNzU0OGZkOWJmNSBsZWdhY3ktdHJ1bmsKKzY5Mjk0IDE4ZDM3MjllMmJhYzAxMmMyN2ZiN2IzMWVhNzU3MDFjYTk2ZTgyMDMgcHkzaworNjkyOTUgYjEyNmNlNzA3YTM0NmU4MDNmNzM3ZGNiY2I4NDg3NDc4NTliOWRlZSBsZWdhY3ktdHJ1bmsKKzY5Mjk2IDUyZjc4YmIyNmJmNTBmMzRlNmMyYmJmMDA1ZWIzNDViZGUwZTc0NjkgcHkzaworNjkyOTcgZWVhYTI1OTA2OWEzM2JmOTIwNWJjYjBlMjNjZDA5YWE5ZTE4Y2ZiNSBsZWdhY3ktdHJ1bmsKKzY5Mjk4IDhmODkxMGYzYjY1MWMyODNlZGE0NzlmYWVmYTM5NmZkYmExNjNjZjUgbGVnYWN5LXRydW5rCis2OTI5OSA4Yzg4MGJiYmU2ODVjMjIwMTYzZDE2YmQxZDIwZGYzYjgyNDg5Mjk4IGxlZ2FjeS10cnVuaworNjkzMDAgMGM5ZDU5OTgzNGI4YjRjYzRjZWVhMWMwNTRlZmFkMTkxNjg2YWY4NyBsZWdhY3ktdHJ1bmsKKzY5MzAxIDQ1Nzk1N2E3ZDZiYTliYWY5YWNiMjA4Y2FhMGUyMjY3NGEzZGE1MWMgbGVnYWN5LXRydW5rCis2OTMwMiBmNDAxMmU3ODI2MGM1ZDkwNDRmMDE4NzljODc1ODk2ZDcxZWQ4YmIwIGxlZ2FjeS10cnVuaworNjkzMDMgYmYzYjhlMzAyMTNmNmFmZWU0MDA3NTk5YjYwMGE4ODRkZjVmOWE1OCBsZWdhY3ktdHJ1bmsKKzY5MzA0IGYwZTVmODU4OWEwYzNkNDY2M2NmMjUxOWI1MGJhZGU0Y2U4ZjdmNzUgbGVnYWN5LXRydW5rCis2OTMwNSA5MGE0YzY2NmY3N2E4NTczMjkxNTNlMDc4M2FiZTExNWViZDc0YjgwIGxlZ2FjeS10cnVuaworNjkzMDYgNDFjNzFhZDQ3Zjg5M2QzMmRmMDBmMjA2YjhkMmIxNTQxMDQ4NWYwYSBweTNrCis2OTMwNyAzMjFmMjdhNDE0ZTg1NGFkZWY1MGY0ZWQ4ZmMwNDRjY2Q2MGJmNTEyIHB5M2sKKzY5MzA4IDc2MjM5Nzk4YTYwODQ5ZDllYzM3YmI1ZTNlZTU2MjE1YTNhYjBiZmUgcHkzaworNjkzMTMgM2ZjMjVhZTE4OWU5NjhhNTA3NmZiOWFmMTIxYzgzNTZmNWZjNjgzYSBweTNrCis2OTMxNSBlMDVjNmJlNmFmMTAwYTg5N2I5M2I3NGEzNzNmMDcwY2U1YjY3N2RjIGxlZ2FjeS10cnVuaworNjkzMTYgNDY2ZWI5Nzg0ZThiYTkwOGFhNGI2MmU5ZDUwNDAxOTczODU5Zjk3YSBsZWdhY3ktdHJ1bmsKKzY5MzE3IGVmM2M2ZDliNGZlY2E2NzdiOTQ2ZDQ1MzgzZGYzMzRlY2NmYTMwN2QgcmVsZWFzZTI2LW1haW50Cis2OTMxOCA5OTdiMjYzMmM5Yjc1YTFjYjY4MjBkZTJhOGQxMjZjMTliOGEzYzVkIHB5M2sKKzY5MzE5IGZkZTAzZTc1YmMxMDBhZGRiYTNkOGU4OTI1NTExNWI2ZTQ0YzU2MDQgcmVsZWFzZTMwLW1haW50Cis2OTMyMCBkYzg1Y2E0MTIwNzlmNzgzYWRhYjIzMzVkODFkM2Q0ODBlYmE3MjYwIHB5M2sKKzY5MzIxIGU1NDI1YWY2MGYzMDQxNjE1MDcyMDMzYTkyZDM1MzBmZjIwMWI3MDIgcHkzaworNjkzMjIgYTE4OTNjNjkxODc5NGQwZjRiMjcxZWQ5ZTJiZmZjNzk2MTYwOWZhZCBsZWdhY3ktdHJ1bmsKKzY5MzIzIGU2YTE0Njg4NTgwZWY0ZGQ2MjdlY2JhNmI0MDc2NTI0MTk0ZDZhMzUgcHkzaworNjkzMjQgNTBkODk0MzZhZWFiNzNkZWViMGJhMzdmZGRmNjAwYjRjNjRiYjg2MyBsZWdhY3ktdHJ1bmsKKzY5MzI1IDE2NzEwMDQ4MzlmOGJmZmUyOWViMDdlYjhlMWYxMWNlMjFlYjk4ZTYgcmVsZWFzZTI2LW1haW50Cis2OTMyNiA3ZTFhMzg1ODQ3YTk4ZGI4ZjUzNWRlZjI4NjA2NDg5YmU1NjVlNjE2IHB5M2sKKzY5MzI4IDM3NDMxY2QxMmJmMjc0YWRjNjk4YmFlZTNmZTcwMWNiYTllYjRjNzQgcmVsZWFzZTMwLW1haW50Cis2OTMzMCAyMWMzZTM1MzE1MDQ2MzYxYTAwYzdjZTNmZDUzMjkyZmJhMGZhNTAxIGxlZ2FjeS10cnVuaworNjkzMzEgZTIzOWU5NzdiYjMyYTJkM2E2MTYyMGY2MDUyNDViZDVkMjdiOTljMSBsZWdhY3ktdHJ1bmsKKzY5MzMyIGEzZWE2NWJmZTM3MDZhNDZlODU4OWIzNTFiYTA0MzllOTFjZTVhMGYgbGVnYWN5LXRydW5rCis2OTMzMyBmNzhkN2ViYjk2ZGE4NGM2Mjg1MWM1Y2IyOGMxMGZhMzFkNjI2N2JlIHJlbGVhc2UyNi1tYWludAorNjkzMzQgYzUwMjJiMTA2NGVhNjZlZTM1MDdlZTBhNmFiMWEzMDk1ZmM5ZDg2NyByZWxlYXNlMjYtbWFpbnQKKzY5MzM1IGU0MzlmOTcyMmE3MzQ5ZGZmZTVjZmIwNzI4MmIxOGNhYzQ4OGUyMjkgcHkzaworNjkzMzYgNTQwZmJlNWM4MTYzZjQ5OGY2ODA5NDJlYTZkNmZlYTZlMmNkMDg3YiBweTNrCis2OTMzNyA3YjhmYTI2NTI4NjY5MTA3ZDFiZjM0MzEzY2M2YWI4NTk4NmQ5Mzg0IHJlbGVhc2UyNi1tYWludAorNjkzMzggZGI4ZWZjOTQwMTZmNGRkY2MzYzIwOTY3MmUyMGVlNTkxZWM2YWRhMyByZWxlYXNlMzAtbWFpbnQKKzY5MzM5IGQxODU1MDI5OGFmODc3MzAwZjM0NTExM2ZkNmZhMmEzNGNlNzQ5ODggcmVsZWFzZTMwLW1haW50Cis2OTM0MiBmZGVjYjkxODI2MDQwZGZhNzY5N2NjNjJlZmRhNzFlNjY4ZTAwYzJmIGxlZ2FjeS10cnVuaworNjkzNDMgMTNmMTM1MmEzZjg3NDNlMzljNjJhMGJkYjZkMTUwZDUwOGQ0ZDA4NyByZWxlYXNlMjYtbWFpbnQKKzY5MzQ0IDIwNzA5NzY5MTk3Mjc0YWIwMjJkYTU4MDcxOTc2N2U2OWNkZDE0YjUgcHkzaworNjkzNDUgOWM0NmQxMDkwMDdlNmM4ZjJkOTk3OTYyMWQ4OWRkNjUxMzc5NTJhNiByZWxlYXNlMzAtbWFpbnQKKzY5MzQ2IDRjYzQ5ZDk3OGVjMjNhYTU1ZmJhYTMwYWFmZjgzZWVlZjM0ZDc0NDAgcHkzaworNjkzNDcgYmJjMWM2ODE1M2FiZGViMmU5NzRjYzBkZjI3ODNkMGE5MDU4ZGFiMyByZWxlYXNlMzAtbWFpbnQKKzY5MzQ4IDBmNzUxMTUzMzA3ZjQ2OWUzZGMwYTgyMDlmNmZhNGNiNWMyZjMwOGYgbGVnYWN5LXRydW5rCis2OTM0OSBjNGM2MTJkOTVhOWI2ZDk2MzYwNDkyNjdlZDE1ZmM2Yzk2YWNlN2YyIHB5M2sKKzY5MzUwIDdlMjhhMmIwYzFiMWYxOWI1M2U4MzRmOGM3MjNiMTM4YzFiZTY2ZWQgcHkzaworNjkzNTIgYTAwZTVkY2VhMTZjOGUwNDg4NDVmOTFjMzkyOTc5MjAzN2NjMDcxOCBweTNrCis2OTM1MyA3YTA1MjU2MTM2NDQ3ZTBlNWVjMTI1ODE0M2Q2OTIzMWJkYmRjMjVkIHJlbGVhc2UzMC1tYWludAorNjkzNTQgZjk4MWUwNTU3YzM1MDdjYjQ2ZjVjOTk5YTg2NjhmM2RmZjBjOWE2MiBweTNrCis2OTM1NSAwNWQxY2IwNTNkNDdlNGZjYWQ4MTAyNTQ3MTFlOTllZjFmODEzMmVkIHJlbGVhc2UzMC1tYWludAorNjkzNTYgY2M4MjUzMTE2Mjc1ODBiMTAxNGEzMGJkYjg1ZjdjZTllYzZmN2YxNCBsZWdhY3ktdHJ1bmsKKzY5MzU3IGYzODc4MzRjZTVkY2QzNGU3MTMxNjI2ZDYzZTI1YWI0YTg2OTViZmQgcmVsZWFzZTI2LW1haW50Cis2OTM1OCA1NGU0MDljMmY0OGQ2YTEyNjBiMTQ4NWFkZDkwZWE4NzA5NWU4NTAzIHB5M2sKKzY5MzU5IGZiNDUxMTFmMjQ0ZWI1ZTlhYzYyMzhlMjA0NjRkODNlOGI3YTZkNzUgcmVsZWFzZTMwLW1haW50Cis2OTM2MCAxODNhNmMyOWJmOWMxOGRmNTliYjgxMmU4NzY2YmFlOWIyOGU2MDBlIGxlZ2FjeS10cnVuaworNjkzNjEgNmY0MDc2OGQwOTA5ZDY5YTQ2MmU1NGU0NjFlM2FhOGU0OWQ3ZDU1MiByZWxlYXNlMjYtbWFpbnQKKzY5MzYyIGI0ODIwZmNlZGEyNDFiMjVkN2Y5MTYwZjI5ZGZkZjI1NTBmMDgxMzMgcHkzaworNjkzNjMgZGI0NmY4MmQwYTFkMWRlNDM2ZDJmMWIwNGYyZjBiNmNlNDVkOWU3YiByZWxlYXNlMzAtbWFpbnQKKzY5MzY0IDQzMjdkZmE2ODExOGY5OWIxYjk3ODAzNzIwY2Q5NDkyYTUwNDdiYzAgbGVnYWN5LXRydW5rCis2OTM2NSAxODIxMGFmZDAwNWE3MTA4NDViYjQ2NTAzODIyODViZTc2MDI3NzIzIGxlZ2FjeS10cnVuaworNjkzNjYgYzlhZmZiYTA2OWVhZTU5NTQzNjVlZTQxOTY1NDVmZDgwOWJkOWQ2ZiBsZWdhY3ktdHJ1bmsKKzY5MzY3IDI4ZTQzMGYxNGMwZGNmNDMzNzYyMWJhYzdhMjhmZDNlNDEyZjFiNzEgcmVsZWFzZTI2LW1haW50Cis2OTM2OCAxOWRiMzc5YmFjZjgzMzc3MjgyYjIxNDdiMjdkODIzNzM2N2U0YjI1IHB5M2sKKzY5MzY5IGYyZGYxMGJhNjA1NDg1ZjNkMDYyOGQyNTQ0NDAyZmMzNGExN2IxOWEgcmVsZWFzZTMwLW1haW50Cis2OTM3MCA5NmZlNDVkZTdmMjZmZWZhNjVkNThlZGMxMjgyZGIzYzVhNGVmNTc5IHB5M2sKKzY5MzcxIDFjZTAzNmI4ODA5MzY0MDFlYTE1OWJhZWRmYzI5MjNiZTUxNjc2MzggcmVsZWFzZTMwLW1haW50Cis2OTM3MiBkMWU1NDA3ZDU1MDliYWQ4Y2YxNzY1NzNmOTU5ODEzOGMwOTk5Y2Q0IHB5M2sKKzY5MzczIDQyZmFhODA1NGMzZGNiYTJiMTY5OGQxYWE4YTY1YWI3MDMwZTY4MjUgbGVnYWN5LXRydW5rCis2OTM3NCBiYWE4OGU5ZTk3NjZjYThkOTI0NjVhMTMwODBkNDVkNWM1ZGJjYjc4IGxlZ2FjeS10cnVuaworNjkzNzUgMmE0MGQ5ODFjNjUyYTJjM2NlZmE3Yjg0YThiZTM3YzkwZmFkOTljMCBweTNrCis2OTM3NiBkNDYxM2U5NzA0OThhNGFiNWU2Y2E2YTQ4YjY1NjE1MzVhYjViMDY5IGxlZ2FjeS10cnVuaworNjkzNzcgOTg1NmM0ZmFhYzA0ODFiZDcwNGZlMzI2MTBkYWQ5ODA3MzI0ZjNlYSBsZWdhY3ktdHJ1bmsKKzY5Mzc4IGI0ZTE1NGM4YTM4YTU1YjdjOTIyNzc4Njg1ZDJmMGQ0YjU3NzU4Y2YgcmVsZWFzZTI2LW1haW50Cis2OTM3OSBkMmRlNWRhMGY1NjM0ZmI4M2ZkODY4MDg1YjhjNTMzOTMyMzU3ZGEwIHB5M2sKKzY5MzgwIDU4YjdkYzljOTU1N2I3YmQ5MmQ0OTdkZjEwMTY1ODVhZjgxZWQzOWIgcHkzaworNjkzODEgYzAyODk1YTNlZDZkNTdmM2Y4NmI0NGMwNmJlNzBiZTI3YzZmNDgyNiByZWxlYXNlMzAtbWFpbnQKKzY5MzgyIGUxN2IzN2MzNWM3YmIyNDA1MWRjOTViNWI0OWNjMmM2NjMwYzlkYjAgcmVsZWFzZTMwLW1haW50Cis2OTM4MyAwM2FkZGQxNGU2ZjJjMzFjZTdmOTVjODMyMzhiMmU0NGQ1ZGE3NDk0IHJlbGVhc2UzMC1tYWludAorNjkzODQgODE5NzE2NmFhMTliN2RjMzNlNDdjOTBjMzgwZTY2MmM5NjRmNGJlZSByZWxlYXNlMjYtbWFpbnQKKzY5Mzg1IGE3MTMyZGI2OTA5MjE4ZjAyMWUwM2YwMTQ1OTJiNmI2NzUzZTFhMzUgbGVnYWN5LXRydW5rCis2OTM4NiA3YWQxYWI5OTA2ZWU1YWFkOGRmZjg0OGVmZTliZTE3MjIyN2FlZDk0IHJlbGVhc2UyNi1tYWludAorNjkzODcgYjA5MWJmODM0MjI2YTM5YTAyOTJkZDBkNGVjYzVhZTkyYjQzZjk0NCBweTNrCis2OTM4OCA2ZTkzZGQ1NzhjYjg2NjBmZmUwYTE4YmMxM2IwODhkYTc5ZjBlZTcwIHJlbGVhc2UzMC1tYWludAorNjkzODkgMDE1MWM1MTRkZjU2OWVmMWIxODUyZDRmZGE3ZTEzYzczY2I0ODVhZCBsZWdhY3ktdHJ1bmsKKzY5MzkwIDIwN2QwZWE5NTNkZjE4NTUwY2ZkNzBkYTAwOGJhNTUxZTQ4ODI5ZmMgcmVsZWFzZTI2LW1haW50Cis2OTM5MSAwYjM4MWI0MjNjZGY3MjM5Y2MxYjE4NzcxMzQ1NDNiM2ZkYzMxYWY1IHJlbGVhc2UzMC1tYWludAorNjkzOTIgNjZlY2ExM2VkZTE4M2MyZTI4MGRkOGFhNmJiZWQzODgyNjM2ZjkyYSBweTNrCis2OTM5MyA4MTE1NDY3NzBkMjBmNjBjZDQ0ZjgyNzkxYjQ1Mzk4MjU2MGEzNDAwIHJlbGVhc2UzMC1tYWludAorNjkzOTQgNDgwOWFmYTg1YTliNmJlOWJhNjMwMjkyNGRlMDViOWU3YWRmZWZiZCBsZWdhY3ktdHJ1bmsKKzY5Mzk1IDdhMTM1NmQyYWVlZjMzYjg2MWJmYjY3MDJjYzExYTg4MmU1ZDBjNjIgcHkzaworNjkzOTYgYWI2MGJkYzcwNzEwNmI5OGUxYjU2Yjc1NThkOWUzN2IzZDhkYjE1ZSBweTNrCis2OTM5NyA2NmRhNTI4MzMzNGYwNjFiMWQzODA1YTZkZDdhMjIyMzM5NGVkMjNiIHB5M2sKKzY5Mzk4IDM4OTYxMzNjOTVjYmE4ZmNkMDBiNDgxMmQ5NDc1ODMzODdlYTQzYTYgcHkzaworNjkzOTkgNWNkYzVmMGMxMzRjOGU2NDU3ZjQ0ODAxOTA2YzQyNzFjYjk2NTBhOCBweTNrCis2OTQwMCAzMjk1NzkwYTY1YmU3ZmNhNzlhODk4ZGJiZDk2OTAwNTNjODExNThhIHB5M2sKKzY5NDAxIGJjNThhNjFmODE3YmY5MjhmYjg2N2FkYTEyNzZhMTljMzM2NThhYjUgcHkzaworNjk0MDIgNDNkM2E5NWVkNjYyMTk3MjAwMWZkYjAzYzVmN2U5NjRiODJiYjFhNSBweTNrCis2OTQwMyBlZWYzOWI0Mzk2ZmZlNDYxZjY1NmUzNGExNzgxZjgxZDk1MjljNDFmIHB5M2sKKzY5NDA0IDJmMWVmZmYwNjZiMzg4MmQ3MDMxYzA3ZTE2Yzk2NTY0YzliZjgyMWUgbGVnYWN5LXRydW5rCis2OTQwNSAwMjUwNzg4MjdiNTQwODZjNzE0ZThiNzJkYjNiY2RmMzJkYmU4ZTM1IHJlbGVhc2UyNi1tYWludAorNjk0MDYgOGNkOGUyMzY4ODIyMTFlNGJhODYzOTY5OGIxMTc5MGVkMTE0YjRhOSBweTNrCis2OTQwNyA5MmZhMzliOWFmMTNjODM2MWQ1MjQ3OWJlMjY5Zjk0NmZiZWI1NzRkIHB5M2sKKzY5NDA4IDg3MzE3YTg4OWRiMDQ0YTY0MTY2ZjhmNjRmYTIzOWZiNjZhYzE4NzcgcmVsZWFzZTMwLW1haW50Cis2OTQwOSA2OWIyNmU5OTBlYjg2MTBmZDBhZWY5MDViNGE4NjUxOGEwYmE2ZDljIGxlZ2FjeS10cnVuaworNjk0MTAgOTllMjY0ZmUyMzgzMGIzYzZhMjM1ZWNhZDZiNWM0ODZiOGRmZTg3MyBsZWdhY3ktdHJ1bmsKKzY5NDExIGMyMWZiNWVmYzYzOGRhMjVlZjQxODZlYTFkYmU0NTVhYTJhOTQxMzAgcHkzaworNjk0MTIgOTAxY2IyMDdiMWQzMTdlNjhlMTgxODUyNzdjM2U4MzMzZThhNTE3NSByZWxlYXNlMzAtbWFpbnQKKzY5NDEzIDQ5NGRhMmM3MTkwMmQzYjZhMjkyZjRlOTk1MzgwN2ZkZjVkNTI4NzAgbGVnYWN5LXRydW5rCis2OTQxNCA5ODk5YWZlMGZmOGMxOGNmZDkzZWNkZGZjMTIwYTg2ZjgwOWUxNWQwIGxlZ2FjeS10cnVuaworNjk0MTUgMGFiMzY3OTZkZDc5NTg5MGM4YmM2NDA2NzM4MmZiNTNmNDNjZDgzOSBsZWdhY3ktdHJ1bmsKKzY5NDE2IDMyMGNkNzFlMmM1NjJjYWQ3M2E3ZDljYzBkYmZlZmUwNDU0ZWI1MzEgcHkzaworNjk0MTcgMTAwYWU2YThiYzJkYjM5NjdjZTY4YzUzZGM5ZTlmMTg4MDRkMGNiMyBsZWdhY3ktdHJ1bmsKKzY5NDE4IGNjYzcxODhmZGQyOGZjM2QyMjA3N2NlMGIwNGE2NzVkOWQ5NDYxY2IgcHkzaworNjk0MTkgNWNjZTk5YWExZjU4YWM3YjkyMTNlM2Y1MjI1MmVkNmI4NDhkZGY0MiBsZWdhY3ktdHJ1bmsKKzY5NDIwIDU3MDhhMWUwMTY0NTkwZTYwOTQxYzQwM2JhYjIxMzYxMmNlN2IyNmMgbGVnYWN5LXRydW5rCis2OTQyMSAyZDM1NGY0ZDc3YmNiYzZjNzVhNzQwZDhmYjUwZjhjODdlNzRiNmY0IHB5M2sKKzY5NDIyIDE3NThkZWQ0NGI0ZTBmYmI0NzFlNjEzZjc2OTBhMmVjNmYzMThlNzUgcmVsZWFzZTI2LW1haW50Cis2OTQyMyBmODVlY2Q3NTY0MTE0YTIwMjAxNGE5ZjQ1YWE0ODI4MjQyNjdlYTNhIHJlbGVhc2UzMC1tYWludAorNjk0MjUgMTE3ZTE1MmU1MTNhNjUwY2RiMTg0MjQ5NWVkM2JkN2MyYmE2MjdhOCBsZWdhY3ktdHJ1bmsKKzY5NDI2IDc0ZDE5NmM1NDJmNzhhYjhhOTQ5Y2U2Zjg3NjJjMDE4MmZhMzc1Y2MgcHkzaworNjk0MjcgMWNjNjFjNzliOWNlYWZhZjJiMGUzZTczOWM0ZDY3MWYzMmYzZDhhMiByZWxlYXNlMjYtbWFpbnQKKzY5NDI4IGU4ZmExMGM2NmQxODNlMGU5YjdiN2I2M2RiNmI5NGM2MjY0NTEyNTIgcmVsZWFzZTMwLW1haW50Cis2OTQyOSA1MDFiMWYwMzVmMjk5MGI4MmM2ZmI2Zjg1ZjYyYTg3OTBlMmFjZjAyIHB5M2sKKzY5NDMxIDBlZDIyZjFhZWQwNDYzOTQwODBlOWVhYWViNTZlZDhlMWVhMzE2OGQgcHkzaworNjk0MzIgN2JmYTY0NDkyZDAwMTYwYTRlMGY3NzIyNzI2Njc1YmJjMTFjZWM4NCByZWxlYXNlMzAtbWFpbnQKKzY5NDMzIGM1OTM1Yzc0OTdmYjYzMWY0MWQ2NTY2ZDAzZGQ4MGY5YjJkYWU2NzAgbGVnYWN5LXRydW5rCis2OTQzNCA0YzdlZDQwZGI4MWVhYmFmYTkzMGQ0NmQ2M2RmNzcxYzQ4NTg2MmQ0IHB5M2sKKzY5NDM1IDBlYjQwNWQwMWUwODNkM2UwNjZlODgxZWZlMzMxZTljYzA4NzVmOTMgbGVnYWN5LXRydW5rCis2OTQzNiBiYmI4MzUwZGRiZDI1OWQxNmZjN2ViYTA2OWE3ZTQ4NTBhYTBkYTA3IGxlZ2FjeS10cnVuaworNjk0MzcgNTg0OWE0ZjkwNGEyYTAzMjU4ZmQ4Y2JmYzJlZDRiNGJkNDM0YjgxYyByZWxlYXNlMjYtbWFpbnQKKzY5NDM4IDk0NWNiOTViMzViZjU1Y2FiNWViYjA0YThmZTlmNmEyMzQ1OGVlMDQgcHkzaworNjk0MzkgNDMxM2I0ZDRiZGM3M2QxNmJmZTU5OTI4M2YyMTRiNGI3ZjMyZDk2NCByZWxlYXNlMzAtbWFpbnQKKzY5NDQwIDIyNGQwZWZjYmY2Yzk0OGQyNzEyYzljOTQwZjJlYjZhMzQwNGJiMjUgcHkzaworNjk0NDEgZmQ3NGIwYzA2OTI3YzkwNDkyMzIyMjFiN2U3OTc5YWM2NDBkM2Q2NyByZWxlYXNlMzAtbWFpbnQKKzY5NDQyIGMzMzJmN2I0NTY0NzIzY2EwMzFjOGM0ZTM0YTBlN2ZjYmI1MDY3MDcgbGVnYWN5LXRydW5rCis2OTQ0MyA5OTRmZTRkZjRhZjcwZjU3YTIwOGMxODE4NTAyMzI3NTQ0Mjg0NTk4IGxlZ2FjeS10cnVuaworNjk0NDQgNjU1MGRiNDkyZjI4OGE3NzJjYTZiMjU5NDZlMzIxN2FiYmRjZmMyMSBweTNrCis2OTQ0NyBlNDkwMTNmMWQ4MzE0M2IxYTJiMjE0MWFmNDZlZDE3ZWFmNTllNzM2IGxlZ2FjeS10cnVuaworNjk0NDggYzE3ZjkyODFhODU2YjFkYTk5NTFlNGFiNDg1ZmE4MjgxMjQ5NTQyNiByZWxlYXNlMjYtbWFpbnQKKzY5NDQ5IDRlYTEyMjk3MzkxNDNlODUyNjFkYzcxNTIwNzIxYWQ5MTEyZGIxNzggcmVsZWFzZTI2LW1haW50Cis2OTQ1MCAzNmJjOGQwZTAxYmY3MzUxMTQ2NjQyMzE1OTdmODZjNDY3ZDczOGM2IGlvLWMKKzY5NDUxIDhjZmExMDhlN2JkYzNiOWM1NDBhYzQ2OTBmOWNiYTBmMjgwODY0NWQgcHkzaworNjk0NTIgZGEwMDcwY2Y0NjU0NGYyZDhmZGVjYzZjNzQwOWYxNjYwOTJkNGE0MSByZWxlYXNlMzAtbWFpbnQKKzY5NDU5IGU0MjNkMDdmMDhhZjBhN2M1M2ExYTk3MmI4YTZlNDQzZDA2NGFmZTAgbGVnYWN5LXRydW5rCis2OTQ2MCBkY2ZmYzcyMzgxZTczNGYzZGE3ZTRmMTM5ZWM3OWUyODlkNzIyMmMyIGxlZ2FjeS10cnVuaworNjk0NjEgN2JiZGNlNWM5MjUwNTI2MTUzNmYxMWNjNzkxMDFiZTJlZTE2MzJkYyBsZWdhY3ktdHJ1bmsKKzY5NDYyIGU0NTUyNTE5NTMxN2QzOTk0ZWIyYjY2MTNjZDg2ZGNkYWRkY2I4NGEgcmVsZWFzZTI2LW1haW50Cis2OTQ2MyA0NzI0NWFlMzIxMWJhNjllZDRkZmRjOWU3YzE3MGZjMjc3N2Q1YTJiIHB5M2sKKzY5NDY0IDY2M2NlNzRkNTE3NTdkNDYzNWIxNDhlNjQ5ZWM0N2E3MWQ0YWQ3MjggcmVsZWFzZTMwLW1haW50Cis2OTQ2NSBmOWYyZWQ3OWIwMGZjMmJmMTU4MzAyZjZjYzI0OTUwODUwNDUyMTAxIHB5M2sKKzY5NDY2IDE1NGU3YzQ3NGFhZDA0N2M5YmRjNWFjYWY5ZTU1ZGRmZTc1ZDQxY2IgbGVnYWN5LXRydW5rCis2OTQ2NyA2NzQ1YmRhYTliNDliNTkzNmRkZDg0MzAxMDhhYTJkZDcwMTI4ZWY0IGxlZ2FjeS10cnVuaworNjk0NjkgYWM2MjQzMmZiMzQxZDdlY2ZkMDk3ZDJhZmU5ZWIxZDZkYjA0ODQ4ZCByZWxlYXNlMjYtbWFpbnQKKzY5NDcwIGJkZGU0NGFmOTc0NDA2ZjM0ZTZiMTUwZDJkMTEwOGE2NDEzYTcyZGEgbGVnYWN5LXRydW5rCis2OTQ3MSAxYTdkZDlkMmU3ZWMzZTEwOWQxNTQ1M2QzYTU0ZDY0MjRkOGVhOGM3IHB5M2sKKzY5NDcyIDYyYTFlZDZlNjM2YWMxZTU2YTA1M2NmMDI4Y2YwOWU1NWJmNjM3ODggcmVsZWFzZTMwLW1haW50Cis2OTQ3MyBmYmJiYzI1OWI1Y2U4OGRhMjkyMzBjMGVlYzk1MDM2OTU5N2M3ZTgwIGxlZ2FjeS10cnVuaworNjk0NzQgZDdjNGQwNzFkYWZhZjE5YWM1YzJiMzFmNWE2MzM0OWI2OWQ2MzY2MyBsZWdhY3ktdHJ1bmsKKzY5NDc1IDI5ODgwNmY2NGRmYTM2NDZkOTMxMDU2YmUwNWQyN2EyNzc0ODg5M2EgcHkzaworNjk0NzYgNGU3YmE2N2NmYTA1MzczOWY3YzZlMDJjOTE2ZTY1ZTA4YWIzNjczOSBweTNrCis2OTQ3NyA4NzIxYzIxM2I2ZjQ0ZDBlNDk3MzcwZTdkNGY3MmUyMjQyNWNiNDJiIHB5M2sKKzY5NDc4IDg3ODIwZmM2NWQ3Yzk4OTkwN2RkNWRiZDNlNDNmOTZkMGY5Nzc2MjcgcmVsZWFzZTMwLW1haW50Cis2OTQ3OSBhOTBjOTI5OGRiYjQ4OGM5Y2MwYWEzMmRjZGU4ODRiYTA1Mzg3YmZiIHJlbGVhc2UyNi1tYWludAorNjk0ODAgYmVlZjg4MThhNjZjMjFiZTU4MTI3OGFjNjEzYWYxMjE0ZjgxZWUyYiBsZWdhY3ktdHJ1bmsKKzY5NDgxIDU4NGM0N2Q4YzkzZjFhNzU0ZmFjZDI3NmIzOWExMDgwNzFkMmUwNGEgbGVnYWN5LXRydW5rCis2OTQ4MiA1ZTdkN2ZkMWRhNWE3ZmFlYjVlNGJlYWMyYWJhZWYxNjRmMjZhMDA4IHB5M2sKKzY5NDgzIGFjOWVmNzQzMWM4ZjEzNGMyMDcyYmQ1ZmZlNzQ1YzkxNzhlZDAyMjUgcHkzaworNjk0ODQgZTc1OWRhOTNkZjY0N2YyNTJmYzQ1YzIxMTQyNjU0OTdkYTYwMmZjOSBweTNrCis2OTQ4NSBjNjFmMjRmZjA1NWU0MGQxMzMzY2M5MzhiOGMwYWM3YjA0ZGU0ZDIwIGxlZ2FjeS10cnVuaworNjk0ODYgMTMwN2E2NmEzOGY4ZDQ4N2YxNjRjMmFhNzdmZjI2YjlhZDU5MDIyYSByZWxlYXNlMjYtbWFpbnQKKzY5NDg3IDhhMjhkOTlmNzg0ZDc3YWM0MWZjNzFlM2I4YTJhNGI5ZTM1NGM2YTEgcHkzaworNjk0ODggMzQyM2Y2NDdiNTRhNjVjMmNjMWNkYzg3ODAyOTU0M2U2YWFiN2U2MyByZWxlYXNlMzAtbWFpbnQKKzY5NDg5IGRhYjgwNjM1MDM2ZTg4MjI4Mjc3NTViN2EyYzFmZDYzMmUzMDhmMzYgbGVnYWN5LXRydW5rCis2OTQ5MCAyYWU3NzBlZTYyODQxNzAxOGM0NzA4Y2NhYzhjY2E2NDYyZDIzNjdkIGxlZ2FjeS10cnVuaworNjk0OTEgMzg2NDIzODViMWUwYWYxNDMwYTgwMWNlYzEwZjczNWVhODNhNGM5YSBweTNrCis2OTQ5MiA2MzE2ZjM3NmI4MTRiYjFkZTNlMTIyZTBlMWVhZDQxYzExMDNiY2Q2IHJlbGVhc2UzMC1tYWludAorNjk0OTMgYmRiMWNhOWFiY2UzNjJkODhmODliYjE1NGY4NGJmMjlhYmRlOWUxZCByZWxlYXNlMjYtbWFpbnQKKzY5NDk0IDFmZWMwYmI1MDlhMmI1ZTQ4MmJkODcxNDE4MmViNjVhZjgxZTgxYmIgbGVnYWN5LXRydW5rCis2OTQ5NSAwNDE1NDE3Y2ZkNDgzYjk5ZmRkNDBiZjE2OTY0NGI2NWYzODNiNmQ1IGxlZ2FjeS10cnVuaworNjk0OTYgZjBjNzQwMmNjMDAwNjkzYTdjZDIzNDk2MzkzYmY1ZjJlZjRhOThhZSByZWxlYXNlMjYtbWFpbnQKKzY5NDk3IDA4ZTBmMDNiYTgxNzI4YzFlOGM1ZTNkYTJlM2QyNDRjY2U2MjRlOTUgcHkzaworNjk0OTggMjA2MDlmYzEzYTEzNTc1NGJiYzgxMTQ5N2Q0YTNmMzdkZWZiMjY0NiBsZWdhY3ktdHJ1bmsKKzY5NDk5IGEwMDc0NTQ4MDEyMGRmOTA3NzcwMDFiNDc1ZDhkZDRhNmQwYzBkZDIgcHkzaworNjk1MDAgMDU4ZGNhNzNlZTMwMjk1MWZlMGZkMmExODg5YmFmZDg0MDZjMjk1MCBsZWdhY3ktdHJ1bmsKKzY5NTAxIDk0ZDlkNTI1NDAxYzE2M2VmZGUwODljNjVlYzRjZjcyODU4MjMxOTAgcHkzaworNjk1MDIgN2Q2Y2RmMzM1YTU3MDI5MGFiMDhjMzIwYzI0ZjE4OTU4ODc0YjhjMyByZWxlYXNlMjYtbWFpbnQKKzY5NTAzIGZmYjljZjk0YzlmMTM5OWZiNjgyYTIyYzNlZDdmZjA5MDY5YzhmZTEgcmVsZWFzZTMwLW1haW50Cis2OTUwNCBmMzU4YmEzZDFlNTM2MzcyN2RjZjVlMjU3NjEyMDhmNjJlMWUzOTg3IHJlbGVhc2UzMC1tYWludAorNjk1MDUgOTViYjc3MzllMzg2Y2JiODkyNTViM2MxNGE5ZmZjMzk2ODFmODdmMiBsZWdhY3ktdHJ1bmsKKzY5NTA2IGQzZTg4Zjc3OGNkYzE2NWFkZTc3ZGFjMDYxOTVkNWM2YmU4NzhkMmEgcmVsZWFzZTI2LW1haW50Cis2OTUwNyA2ZGJlM2Y5YTA0MGNiOGU0ZTRkNjAzNTA3OWEzZGY1ZGUwYmExOTMxIHB5M2sKKzY5NTA4IDk3MmU4NjE3ZGZkYTZkODVhODI3MjdhNzY0MWYwMTMyZDFlY2VjMmEgcmVsZWFzZTMwLW1haW50Cis2OTUwOSA4MzUxNWJkMjg2MjZkNDI5NWZjYTMzZmYyNDAzMGUwODhkZTQ3ODM0IGxlZ2FjeS10cnVuaworNjk1MTAgNzJlZTQyY2M5NTMwZjNmNmY2ZmRkY2MwYzFlNGUwM2VlYWFlZjE2MSByZWxlYXNlMjYtbWFpbnQKKzY5NTExIDUxOTZlYWZjYmQ3MmM2MmVmYjIxM2I0YmZiM2YxNjFjZmY0ODhlYzcgcmVsZWFzZTMwLW1haW50Cis2OTUxMiAyOGJmNDU3ZmIzNGQwYjljMjcyNWRkMzFmY2NkZTgzZDI3ZGZjNDA3IHB5M2sKKzY5NTEzIGFmNDY5ZGMxNWZhN2JiZDk0ZGMxNWY3N2M4NmVhYzNhNTU5MzdkMTYgcHkzaworNjk1MTQgN2JiM2Q1MTViNjc3ZWFmMmRmZDJiZjYyMTc1MDBjZTJhZjBkZTVkOCByZWxlYXNlMzAtbWFpbnQKKzY5NTE1IDljMGE0ZmJiNTZiOTBhZDM3NDM3NDEwNDBhZDAwY2Q4NTEwNDA4ZmYgcHkzaworNjk1MTYgZGJkZDk0Y2QwN2ZiNDZhYzA1MjUyYjY1MWFiYzE5ZGJlMzMyMmY0NCBsZWdhY3ktdHJ1bmsKKzY5NTE3IDdkODk3MDY0YTZlZmI2ZDY3MjNmOWU5NWIyNDUwYjYzZmNlNTFiNWIgcHkzaworNjk1MTggNGQ5YjUyZmNiNWRmOWQ5OWQxNDJkNDQ1MWM5OTljMjk0MGVmNjk0MCByZWxlYXNlMzAtbWFpbnQKKzY5NTE5IGVkY2Y5OTZmMDdlOThmZmExODY0NmJjOTEwMmRkMzQzZWU3MTNlMjggbGVnYWN5LXRydW5rCis2OTUyMCAyOWE5ZTg1ZjMwYmY3Zjg3MTg1OWNkODUzZGU3YjYwMzQ4MTM5OWRiIGxlZ2FjeS10cnVuaworNjk1MjEgZDY5NzY5YjRmZDIwYTQ1ODIyNDk3NzIzNTQ0ZTliODk2ZTI3MWJiMyBsZWdhY3ktdHJ1bmsKKzY5NTIyIGNiZDUzZmY0OTU1NzBiOGE2NWEzOGE1NzU4NmQwZTgzMjI3ZDRkOTggbGVnYWN5LXRydW5rCis2OTUyMyBiMGRiMTA5MDg5Yzk2OGVkYjY4N2I0NmI4M2U0NDVhOWRhYjhhYTc0IHB5M2sKKzY5NTI0IDJhYzAyZGFlZjJlZTM4ZTk4ZjFhODA5ODI5OGJmODM3NDA0N2QzOTUgcHkzaworNjk1MjUgNDM1ODVkYmY2MWQ1N2ExODllODczMGNjNGQxYjVlZDFjYTZmMGM1MyBsZWdhY3ktdHJ1bmsKKzY5NTI2IGNiODE5MGExYmZhYjljNTM5ZjhlZmM5MzIzOGYyOTYwZDBhYTZjMjggcHkzaworNjk1MjcgMmJmNWVkNjcxZDAyYzExNjJiNjhkNmZkYmM1OWNhNzNiZDE4NDU5ZiByZWxlYXNlMjYtbWFpbnQKKzY5NTI4IGRmNjliY2NkZDM2M2JmMjc0MjA0MWViNTk0ZTA3YTY1NDZmMjdiOTAgbGVnYWN5LXRydW5rCis2OTUyOSA3ZDI5YzZlOGJhMDU1ODA3NTEzOWRmOGE4ZGYyZGIwNWFjZDVkMjlkIHB5M2sKKzY5NTMwIDA5OWU5NjA2NzZiOWYwNjRkMTlmMDQ2MWE4NDE1M2IzOWYwZDJiYzMgbGVnYWN5LXRydW5rCis2OTUzMSAxYWUzNGE0OGI3MzkyMDA4Yzc3ZGVlYzQ4OWQ4MzMxMmUwMWE5NjA2IHB5M2sKKzY5NTMyIDk2NzdkZDBiMDllNmI2MjdmN2E0Njc4MDAyZjc5NjdjYTNlNTYwZWMgcHkzaworNjk1MzMgN2ZhOGI3YTJmNTBhMjE1ZTQ3NjE2ZjJkZDg1Y2Q3YTQxNjhjMmQ1ZSByZWxlYXNlMzAtbWFpbnQKKzY5NTM0IDIxNzQyNWVhMjc2OWMyODE1NWMwOGY1ZWYzMDBjMDJhYjQzZjc3YmYgcHkzaworNjk1MzUgOTJkZGJhNTc3OWY5NDk0OGFiMzQ0NGIxNGI4MjE4NTYxNmM1N2I4MCByZWxlYXNlMzAtbWFpbnQKKzY5NTM2IDg2MTAwOGRlZWQ5N2EzZmQ4NzhjMTNlYmI5NzFiNzA1ZTQ2ZGQ1ZGMgcHkzaworNjk1MzcgNWI1MDExOTZmYzM4M2ZjMzIzYWY0MGZmODA4NmVkOWM1NzJmOWJmNiByZWxlYXNlMzAtbWFpbnQKKzY5NTM4IDY1OWQ4ODkwNGY1ZmIzM2U3MDYzZTgxZTE3Zjk4Mzc3MGZiYTUwNWMgcHkzaworNjk1MzkgMDhjYzU3NGFmNGY2MDllYzIyNzQ5YzlkMmNiMjk2Mjc1ZTI1MjE5MiByZWxlYXNlMzAtbWFpbnQKKzY5NTQwIDE4OTY5NmM0NmMwZTdmNGZhMjUxMDFmNDY3MWU0N2NkMjM3NDMwMTAgcHkzaworNjk1NDEgY2FiNGUyZTQ4NGEyYmU2MDhhZTJhMzZjN2I5YTFkM2JiZWFhODNlZSByZWxlYXNlMzAtbWFpbnQKKzY5NTQyIDgzYmQyZDE3NGNjOGQwMmU3MjVmMDcxNmZiNTM0MWYxM2ZhMjNmMTggcHkzaworNjk1NDMgMjdjNTg5ZjA5YTIxNzRmZjkyYzZhYzU2NTdjYWM3NDI2Mzg4ZTJhNiByZWxlYXNlMzAtbWFpbnQKKzY5NTQ0IDk3MWJiNDdmZjcwYjYxMTIxOTIzMTBmYTViOGVlZTNhZjk0NDNlN2EgcHkzaworNjk1NDUgYWNkYjMyMzQxZDg3YTMxNzk3OWZjNjkzODI5ODA3ZTY5YTNjNjA3ZSByZWxlYXNlMzAtbWFpbnQKKzY5NTQ2IGEwZDhjNjE2ZjM0MDVjYjk0MTJhOTJmOTc3YzIzODJlMWY2NzM1YWIgbGVnYWN5LXRydW5rCis2OTU0NyBjMDliNTAxNTE2YmQwY2M3NjIwYWZjMjBjY2Y2NDhlNTcxMDdkNWQ5IHB5M2sKKzY5NTQ4IDVkMjg0MDUwODBlZGZmMzkyYzc1NDIzYTVmYmQ2M2UxODZkNDg0MzQgcmVsZWFzZTMwLW1haW50Cis2OTU0OSAzMTY0NWVhZDRjMzViYjQzYmVlMmMxYWQwYmE5NmNlMzA3MDEyOTRjIHJlbGVhc2UyNi1tYWludAorNjk1NTAgOWE5MzJmOTJmMzk0OTk3YWIzNWQ4YmY5MmZmYzkwMDRkNmY1N2YzNCByZWxlYXNlMzAtbWFpbnQKKzY5NTUxIDY2NDFkODI4ZDc2MmQ2NTFjNWY5Y2EyYmJhMTcyOGZkZGNlNWQ1NmYgbGVnYWN5LXRydW5rCis2OTU1MiAxMzMyOGYxMWFkMjk1NjYxYjg5NDk2ZjVhZGNkNTFiZWUzNTc4ZGNhIHJlbGVhc2UyNi1tYWludAorNjk1NTMgM2VmNWEwYzVlNmI1N2ZkOTU5M2NjNThiM2I2YTUwYWMwYWJjMDRmYSBweTNrCis2OTU1NCBlMzc1MDcxZjk1MGVjNzU3ZWM5OTlkZjdkYzk1NWMxZGMyNjkzNGE1IHJlbGVhc2UzMC1tYWludAorNjk1NTUgY2UyOWZhZWQ3ZjY5ZTIwZDNiYzFlMmE5ODQxN2U3NjcwNzVlYmNhNyByZWxlYXNlMzAtbWFpbnQKKzY5NTU2IGU1MDJlMmJmMzVlODZkYmZhM2I1ODhlZjI4ODhlYmVhYTAwMzdlNzAgcmVsZWFzZTMwLW1haW50Cis2OTU1NyBjZDQyZTg1Y2FmZTdlZDZjNWMyZGI2NTgyNjc2YzE1YTY4ZTljN2JmIHJlbGVhc2UzMC1tYWludAorNjk1NTggMDdmOWUwMDQ4YjBiZGRmMTI4NmE4ZjFhYzg4YzJiOTMyY2Y2YzUwZCByZWxlYXNlMzAtbWFpbnQKKzY5NTU5IGUyZWEwZjgzZjAzOTQyYmQ4ZDEzZjhkNGEyOWIzNTdjODRmNWM0YzUgcHkzaworNjk1NjAgNjQ4ZTA3ZGQwODI1OGY2MGYwYTU5MzU1NjZmYzFjNGJkZTQ5MTUwNiBweTNrCis2OTU2MSAxZTdhYzE0ZTQ5Mzg3ZWI2NDQyMTFjMDU3NzNmMWI3MzA4OGIwM2NhIGxlZ2FjeS10cnVuaworNjk1NjIgZTZhOGExNjQyMzNhNDNiNTlkNDU1OTUzN2IxYjllODA4MTRmODNkOCBsZWdhY3ktdHJ1bmsKKzY5NTYzIDhkMzZhYjA5M2Q0NTZjMjRkMThlZGEzYmNkMDMyZWM1M2YyZTlhM2UgcmVsZWFzZTI2LW1haW50Cis2OTU2NCA0N2E3OWQ3ZWVlZGM5MDZkZmYzMGE0MDcwOGJjNGQ5Y2ZmMWExZWZjIHJlbGVhc2UyNi1tYWludAorNjk1NjUgM2JkNGFlMjZiMzY0OTdlZjhhOWJhMDQzYmNjOTE5Y2I3MWUzNjMzMiBweTNrCis2OTU2NiBiZDJiNzc5ZjVmMzEyMzQyNzc2YzA4ZjAxOTEwNTA3Yjg0MzQ1ZTQxIGxlZ2FjeS10cnVuaworNjk1NjcgMjEwMjc3NGU3YTJkOTNhMDNiNzgxNTU4ZGFiYzQ4NTE2MDQ3MDNlOCByZWxlYXNlMjYtbWFpbnQKKzY5NTY4IGI4ZjEwYzZmYWQ1Mjg1NDE0OGYyYWY3NWNmNGJlY2M0YTI2NTZjNmMgcHkzaworNjk1NjkgNzJmNmYxNzAxZWUxYWE0YjAzOWZjYzEzZDE2N2Q4MTk5ZmY4MzE2MyByZWxlYXNlMzAtbWFpbnQKKzY5NTcwIDdmNGExMTVhYWU2ZDk1NGRhMGI0NThkNzRjYmI3NDUzZTViZTM1ZjAgbGVnYWN5LXRydW5rCis2OTU3MSBhNDFlOGZmNjUxOGMyMDM1OWRiZGEyZjQxMjJkNzlmZjA5OTUxMDEzIHB5M2sKKzY5NTcyIDUyODUxYjlkOTc1OTAxMWRlZjg1OTk1ZTQ2ODQ2OWExNDkwMDgxNzcgcHkzaworNjk1NzMgMDk0NmNmZDY4NTc5OTk5ODdhNmIzOGE3NWYwZjY1NGEyNmM2M2FjYyBsZWdhY3ktdHJ1bmsKKzY5NTc0IDY4YjhhZjQ5NGJlMjgwZmUwY2I0NTc2MGVkNzg4ZDA2MjY4Y2E1Y2EgcHkzaworNjk1NzUgY2ExZDk5ZDlkNjkxZWRkYjM0ZjZkZWU1NzFlYTkwNjU2YWVjZDc5NCBweTNrCis2OTU3NiBjMDE0YTNiMWFkMzE1NWIxMmUzYTFkZGY2ZWI1YWI3NTE3MTliY2RjIGxlZ2FjeS10cnVuaworNjk1NzcgYTgzZjEwZWRiNmZmMTU5MjhhZmY2M2ZjOTNjZDdhNTJkNWM0OWRjNCBweTNrCis2OTU3OCBiZjQxOWNmZDdiMGFiOTRiMDg5OGYxZDg5N2IzZWI5MWIzNjQyZjcwIGxlZ2FjeS10cnVuaworNjk1NzkgNTEyYzVhNWRlMDBiODBiMjg5NjAwMDQxMjY0NjIzZGViNWM4OTRiZiBsZWdhY3ktdHJ1bmsKKzY5NTgwIDY5ZmRmODg4ZjExM2E3NmNjYjM0ZDY3MmI1OWZkZTU1MzFmOWRiNjMgbGVnYWN5LXRydW5rCis2OTU4MSBlYzMwYjFmY2MxYjNkZmY4N2JjNzMzN2NkNTdmOTRlZDgzODliNmYxIHB5M2sKKzY5NTgyIDVhNzJlZWQxZWIxYTc5NWY5OWQzOWZlOTZkMzk5ZDQxYTZjYzE1MzQgbGVnYWN5LXRydW5rCis2OTU4MyAwOGRmNGY1NTgzZmY1MmMyODRhN2JjZGExZDE4NjJhMTNiMWZhYmI5IGxlZ2FjeS10cnVuaworNjk1ODQgZmYwOTZkNmE5MjIyYmNiOTIzZDBiZGRkMGJjNGYxOWFhZmIyMTNjZSBweTNrCis2OTU4NSBjNmZmNDdiM2ViOTlmYmQyYjI0MmIwNmNiZWI2NzRiY2IzNmNjOTgyIGxlZ2FjeS10cnVuaworNjk1ODYgYTkzYjE5YTJmOGQ5MzQ5MThhOWQ2NTgwZmNmNzQwYTYzYmFiZDQ2ZCByZWxlYXNlMjYtbWFpbnQKKzY5NTg3IDQyODM4YjRkNmFhMWI3NjQyYTUwMzI0Yzk1ZTUyOTgzYzA3YTA1YTggcHkzaworNjk1ODggYWUxNmUyYjg2ZmViNTIyM2NhNzA4YWQzZmNhNTcyNTE4ZmZkZjkyMCByZWxlYXNlMzAtbWFpbnQKKzY5NTg5IDAyYzNlYjFjYTBkNWYwZDRlY2YwNzJkMTdiMmYzNTdmNGMyYmE5NzEgbGVnYWN5LXRydW5rCis2OTU5MSAwNTkwYzBiNzZlNjQ2MWU1YmNhNjYzNjhjMmJmNzNhZjcxYTc3YmNjIGxlZ2FjeS10cnVuaworNjk1OTIgODdhYjZiYzIxMzQ1YmFkMDg1NjYwYThkMGNjYTE4YzRiZTI5NDU0NiBweTNrCis2OTU5MyBkZmNmNjkwYTY3YzhlOTA5OTU3NWI1OTk3NjA5YTc3OGIwNmYyYjg1IGxlZ2FjeS10cnVuaworNjk1OTQgZDM2NjNmMDlkNzY0NWEzYzM2MGVkYWRmNzA4MTc3MTI2M2E3N2ZhMSBsZWdhY3ktdHJ1bmsKKzY5NTk1IDUxMjA3MGRhNzQzM2RkMzc4YmUyMmZkY2JmOGNmY2QyZTk4OWVmNDkgcmVsZWFzZTI2LW1haW50Cis2OTU5NiA2MTM1ZmY3MjQzZGQ3OTZlMjNjYzM1NWE1YmNhODgxMjUxYjE0MzE3IHB5M2sKKzY5NTk3IDhjYjhlY2NkNjYzMzljOTYzZWE2NDZjZTZlZjFlODE2NTgxMDRhZmQgcmVsZWFzZTMwLW1haW50Cis2OTU5OCA4ZGMyOGExMjZiMmM4MDFlZWEwMGNmMzhjN2MwMWY4MzZmZTdiZTJlIGxlZ2FjeS10cnVuaworNjk1OTkgOWM3NTgwNmJlYzY0YWY5MWU2ZThhYjk2MmQzNzZiZWQ0ZDc5NmRmYyByZWxlYXNlMjYtbWFpbnQKKzY5NjAwIDQwZWQ1NzgzZTI0YTJkYTVmNTRhMDU0ODFmMmQ2ODEwMDI0MGYyYTIgcHkzaworNjk2MDEgNjE2MTM4ZWVmMjI0YmNkMDZjODMzNDhhMjliNWI2ODBjZWFhMjJhMiByZWxlYXNlMzAtbWFpbnQKKzY5NjAyIGU1Y2EwYmRiMzkwZmQ3ODE1MzJmMjE3ZTRjMjA3YmM1MWFkNDNhNTIgbGVnYWN5LXRydW5rCis2OTYwMyBlOTFiMDRkYjZkMTk2ODBiMmViZTY4NWU0MTBhNmZlNGJkMmMyOTIxIHB5M2sKKzY5NjA0IGM1NjA3Y2Y3NjgwMTI3NWQ1NGIwNDY4NDNkMDRjN2U0NmNjOWY0NmUgbGVnYWN5LXRydW5rCis2OTYwNiA5Y2M3Njc1OGVlMDljMDc1MTMzY2I0Y2I0OTg2NGJiMjYzNTM4NDAwIHJlbGVhc2UzMC1tYWludAorNjk2MDcgMmEyNjNkNjZkNjU5NzgwMDE1ZjFlMzUzYmQxNjAxMzdkOTc3MmVlOCBweTNrCis2OTYwOCBmNDNmODY3ZDVlYjYwYTRkMzIzZTNjMmVhY2QwZmYwN2FjMmI2ZjRiIHJlbGVhc2UzMC1tYWludAorNjk2MDkgZTU1MjI4NzViOThjMjZhNjI1Zjc1NTM5MGM2ZjcyM2Q2M2YzMDAxZiBsZWdhY3ktdHJ1bmsKKzY5NjEwIDk0OThlN2Q1YjI2NTk5ZmU2YWY2ZTJlZDcwNzFlNDkyOTBhZTJiMDQgbGVnYWN5LXRydW5rCis2OTYxMSA2YTdhMGUxZTI3YmMwNDQ4ZGUzODlhMThlMWE3NzMxMTA4ZGRhMmViIHJlbGVhc2UyNi1tYWludAorNjk2MTIgNzFhNjhkY2NhMDQ0ZTMyZWZlZGUwYzJhMGExOGNmZGZlZjVkNGFmMCByZWxlYXNlMjYtbWFpbnQKKzY5NjEzIGUxM2VkNDg0NDIyZTgxNTVmYjI2NWI5Y2M4ZmIwZjlkN2NmMGY3NmYgcHkzaworNjk2MTQgYmI5OWVkYTM4YzFiODJlZWJjN2EyY2MyNDZhOWY5MDBkMjU5MmZiZiBweTNrCis2OTYxNSAzY2VhNDA1MWRjZGI2YzBlNmNiNGUzZWU3YmRmMWE3YzhhODhmNTExIHJlbGVhc2UzMC1tYWludAorNjk2MTcgZDQwODM4YzVhNDIwNmZlOWIzZDU3OGI4YmRiYzQ2YTFiNTM1NjQ3ZSBsZWdhY3ktdHJ1bmsKKzY5NjE4IDk2OTM3OGVhNGM3NzcxYzdmNTExMzFkY2EyOGZmYjA1MTNiMzgxODEgcHkzaworNjk2MTkgOWQ3YTEzMWRjYjc4OTVhMDJmMGMzNzY5NzQ1OWZkYWJjN2M0M2EyOSBsZWdhY3ktdHJ1bmsKKzY5NjIwIDU1Njk5MGJiNGYwYWNhYzdkYzk5ZWZjOTg3OTRmZWFjMDMzZWYyNTMgbGVnYWN5LXRydW5rCis2OTYyMSAxNWQ4YjJkYjJiZTQ1N2E0NjZkNzE5ZDYxNWE3YWEyNjcyOGYwZTQ2IHJlbGVhc2UyNi1tYWludAorNjk2MjUgZjY3YjQ4YTE1MTNlYmJhYWY2YjdjNmExNTY2NjA5ZGQwNDk3NGFkNiBpby1jCis2OTYyNiA4YWU1YjBjNWMyNGQyYWU3ZTJhYTViODM1M2MwODU1N2M2NDZlNDFlIGlvLWMKKzY5NjI3IGMxN2NkOWJlYzNkODUwZTQwNzkzOWMzMjg2ZDAyYTQ5ZTg2MjI3MTkgaW8tYworNjk2MjggYWRlNDU1MTFiNTY1YjFlYmM5NTM2M2YzYzk2MDlkNDZlYzk2YTAwNCBpby1jCis2OTYyOSA3NzMwNmFkOTMwYTMzNGViYzNlN2VlNGU3ODRjNzdjMTQ2Mzk5YTVkIGlvLWMKKzY5NjMwIDVmZDNhZDU0OTkxN2NiNDM5MjZkOTdhMWE3NjMxNzI1MzI4NGIxMjMgcHkzaworNjk2MzEgZWYyY2JhODBjOTc1YmI1ZDk5MTFjOWI5YmJkNTgxOTg2ZDYxNDE3YyBweTNrCis2OTYzMyAzZjdlMDczZGFkN2I1ZjQ3ZDEzYTVjZTAxZWIwYTg2Y2JiNzRhNmQ0IGxlZ2FjeS10cnVuaworNjk2MzQgYjU1YTNiNWQ3MDA4ODI5OWRhMDljOWNjZWY0MmRmMWJhZjc5OGQxZSBsZWdhY3ktdHJ1bmsKKzY5NjM1IGI4YzQ2NjRhNjUzOTE2ZTIxNjQ5N2JjY2E2YWQ0OTBhNDFlN2YxMzEgcHkzaworNjk2MzYgNWYyMjU3Yjc3YWIwOTkxZGQ4MDdiMjlhNjdmZWI5NzRiYWE0NGYwZSBpby1jCis2OTYzNyA3OWMyMzExZjMzY2MxZTJmYTFkZWQ0OWVjYzIwOGU5N2EzZDU3MjNkIHB5M2sKKzY5NjM4IDNmNDc1NzQ1YTNjMzA1ODk4OWVkYmY2YTVjYTI1MjY5YmMxOGZhYjQgaW8tYworNjk2MzkgYWY3ZDc4MGY3YTBiZTRiYTA0YmM3ZjU1Mzg0YWQ2NTY1OTBhNjJhNCBsZWdhY3ktdHJ1bmsKKzY5NjQwIDY1ZTA3NTVlOWJiYzlkN2ZkNDAwMDk0MGZjYTRmMGVlYjFhNmZiMDkgcHkzaworNjk2NDEgYWFkZWYyMTg4Y2ViNmZiNmJhMDRlYjk1NzRhZDc3ZmQwODhmNzJkMyBpby1jCis2OTY0MiAyYzRhMzMxY2QzMmE4ZDc3YjNkNmEyYzY0MmYxNGMxNGRiMzBkMDQ5IGlvLWMKKzY5NjQzIDk0ODc5NGFjNWE1MmJlMjcwZmNhZDQ4YWQ0YmJlYjA2OGQyNDJiMmQgcHkzaworNjk2NDQgOGM2ZDY4OGU0ZjE2MTA5YmM1Y2JhNjk5N2M1MDk5OTAwMTUyNjEzNiBpby1jCis2OTY0NSA5NWQ3NzVkOWFiNDdjNzdlZGRiOGIxMDkxMzliNzU2ZTQxMWFiMTc3IGlvLWMKKzY5NjQ2IDRmZTI4ODVkMDY1NDkzYjUxYzUwZWI1ZWUwNWIwM2RkMTc2MTdjZDUgaW8tYworNjk2NDcgNDBjOTU0MWU2MWZjODk2NWZmMTkwMmZjYmNmYzE3ODg4ZGIzZDYyZCBpby1jCis2OTY0OCA5OGRkMjA1N2UwODhiYjRmMjIwZWI0Y2RkZTM1OGNkMDJhMTBjYzlkIGlvLWMKKzY5NjQ5IDkxYTNjY2U2OGU5YjQ2MTBlZWMwOWI1N2ZjZGEwYmQ2MmI0ZmQ2ZTIgaW8tYworNjk2NTAgZDljMWQ5YjEzMzc0ODMwZGE5YjE3OTE4MWI2MGRkYWUwM2I4MTMwMyBpby1jCis2OTY1MSBkYjNjYWUxMjhkOTFlYWU1ZTRmMThjMWNlYjFhM2ZiNWE1NmFlZTNlIGlvLWMKKzY5NjUyIDE5MjAxNDg3NzlkNDQ2YmI4ZTk2YWM0ODk2MjczZmVhYjgzYzI2ZTAgaW8tYworNjk2NTMgOWY1MzlkOGNkOTA0MmEzYzM5OTk2YWNhNTNhMGI3MzZkYTk5ZWYwNCBpby1jCis2OTY1NCAyOGNhMWRmNTQ1ZTIzNjY3M2U1ZmE1NjM3ZTZhMzc1ZmNjZTFlYTNiIGlvLWMKKzY5NjU2IDI0MDZjN2RkOTg4NDEwODY1ODJkOTRiMTk2NWM2YzBiMWUwMDUxYjQgaW8tYworNjk2NTcgYTI2ZGIzMTQ0YWU3MTMwNDUyMzgxODQ0MzNhNmVkZDViZjM5YzQ4ZCBpby1jCis2OTY1OCA0YjEyMWJiY2M5MmFmYTAxOGVkMDg0ZGU3YWIxNGQyMWI5YWUxMWRjIGlvLWMKKzY5NjU5IGYzYWY0OTkyYjgwYjgzZDlhMGQ5NGYxZGM2M2U0NGI1ZGUxNzIwYzUgaW8tYworNjk2NjAgNmRhMzBlM2FiYzBkZDAwZDljZWFkOTIzNmMxNWVlZmE5ZWYzYjllZiBpby1jCis2OTY2MSAyYzcxOTAyYjM3NzQ3ZDY5NzU4MzBkOTNkZWNiY2NjMzZmZjM3OGMwIGlvLWMKKzY5NjYyIGY0YzQ5Y2Y2MDFhMmNkYzZlMTQzY2Q1MGU3MGYzNDE5Y2Q4YTJiM2YgcHkzaworNjk2NjQgYTQ1MGM4NmZjMmJjMDQ2ODU1Yjg2MmE4OWQ0NjUxY2UzNmY2OTAyNyBweTNrCis2OTY2NSBjNTcyNTRhOWMxYTMyMzAyMzUxYzU0MTRkOTBlOWRjYzA5N2I1NmFmIHJlbGVhc2UzMC1tYWludAorNjk2NjYgMDc2YzQ3OTEzMTM0OWQ0NzVhZDdmOTU0ZmUwNTFjYjVjYWQzYzE3OCBsZWdhY3ktdHJ1bmsKKzY5NjY3IDk4NTc1ZjlhNGVkMzg1ODIwNmY4NjFhN2FkNWMwNDk0MDI5NjA0OWIgcHkzaworNjk2NjggYTVjNjIxNWE0NWFmMDllMTc4ODI2ZjE5Y2ExYmE1ZjM0NzMwMmU1ZiByZWxlYXNlMjYtbWFpbnQKKzY5NjY5IDBlNTVhY2QxYTQyNjY5ZDJkYWEyMGZjYjZjYjc0YjgzMGRmOTA5MDggcmVsZWFzZTMwLW1haW50Cis2OTY3MSBlODczZjgwODQ2NGEzMzYzNzY5YzcxM2E1ZjYwMGZkOTBhNjg2OTkyIGlvLWMKKzY5NjcyIDZhMTE4Y2M0ZjNiNzhlMTk5MzA1OGE2NjFiMTYyNGY1MDY0MjIwYjYgbGVnYWN5LXRydW5rCis2OTY3NCA1MWRiMTgwODRlY2JhYWQ1MDg0N2E2OWI2YjdiZWY4YzNhNTU5Njk5IHB5M2sKKzY5Njc1IGIzOWQ1NDA1OGEyYmJmNzk1MTdiOTg2NDBjNGNmYWYzZmFmNDQ2NTIgcHkzaworNjk2NzYgNjI3ZGI1OTAzMWJlYjAxMjYyZTcxMjViOTY2ZWZkNzlmYTgyMjhhNiBweTNrCis2OTY3NyA0ZDYxZmJiYjQ1ZDc0MTc0YWU2YjRlMWNkZGEyMDBiZmY5ZjAwOGQ5IGlvLWMKKzY5NjgyIGRmN2M2YmQxYjYwOTJiODU2NmIxZWMxZDExMDAzYjFmZWY4OTNiMjQgcHkzaworNjk2ODMgNWRjYWEyZTFiYzg2OWE2ZDY3OGI2ZTgyM2NlYzg2YjczNTllNGQ5ZSByZWxlYXNlMzAtbWFpbnQKKzY5Njg1IDBlYmJjZjU5ODhkYmMxODNlYmVhN2MwY2QzMjNkYjM3NDYxYTNlYjkgbGVnYWN5LXRydW5rCis2OTY4NiAwMDNlMDA3OTdlOTEwMGIxNTBkYWE2MDg0ZDRiZDI2MzQ0YzBjOTRmIHB5M2sKKzY5Njg3IDg2YjYwZDA1MDYyYmE4ZGJlMzA0MWRkMDc3MTlmZWU2OGUzMWFiZDIgcHkzaworNjk2ODggMjdkNDNkNjZiZDA5Y2VlYzFlY2JiMzFjNTY2NDhlYmVhNGVhMTZlZiBsZWdhY3ktdHJ1bmsKKzY5Njg5IDE1NDk0OGUyZmQxYzU3ZjE5NDI2NzVmNGEyYmI5ZWFjMmY5NGVlYmUgbGVnYWN5LXRydW5rCis2OTY5MCAwOTIzNTg4OWM1NGQxNGU2YTY2OGM2OWE3ZTY1NWZiMTE0NGNmOTQzIGxlZ2FjeS10cnVuaworNjk2OTEgZjMwODk1M2M3MDFmYzRmNjE4OTljZmVlOTg1MjdkYWRjZDBlMTg2YSBweTNrCis2OTY5MiA5ODJmOWUyOTI1YTQ1YzU0MDY0OGRkMWI4OWI1ZWI5MjQ2ODk5NGRiIGxlZ2FjeS10cnVuaworNjk2OTMgYWI0ZGEyZWRiMjg4ZGVhNTgwZGJlNzk5YzEzYTI4YWQ5ZmQ2YjljZSBsZWdhY3ktdHJ1bmsKKzY5Njk0IGU3OGJhODgwMGUyY2UwMWVhYzQwODRlOWFlZDQ2NTQ1ZjFhMjlmYzggcmVsZWFzZTI2LW1haW50Cis2OTY5NSA1MjI3ZjhjNDE4M2VmNTFlYjRmYzRkNTRkMWEwMTYxZjRhMTI5OGQwIHJlbGVhc2UyNi1tYWludAorNjk2OTYgNTRjZjY4ZmM3MzEyN2VlMTM3ZjAxYmRmMjE5YmNjNDAzM2YyNWFiOSBweTNrCis2OTY5NyAyOWIxNDliYzMxMzAxNjI5ZTg2OTE2YWE5NjcwMjc5NWNmMmYxYWIyIHB5M2sKKzY5Njk4IDI3MzI2ODUyMmU1ZWU5Mjg3MDgxNTliNjExMDM0MDUwOGM5ZWUxZDIgcmVsZWFzZTMwLW1haW50Cis2OTY5OSAwYzg3NDc5OWExOTBkNTA0ZDFkMDMzZmM2ODk2MmJkNDcxNmJmY2UzIHJlbGVhc2UzMC1tYWludAorNjk3MDAgNzEwMTc3MmVhZTgwNWZlZjkxMTIwOWNiN2UyOTAwMDQ1Yzc0YTRhNCBsZWdhY3ktdHJ1bmsKKzY5NzAxIGY1MDVlYmE3MjZjODY1M2M3Zjc1NDc2ZGM3NzZhYjVjMTlhZjk3ZmEgcmVsZWFzZTI2LW1haW50Cis2OTcwMiBkYmEyZmFmMDk5MDY0OTU1ZGQ3ZTVhOGVhYzNmOTYxN2M2ZTdiOTM4IHB5M2sKKzY5NzAzIDAxZDNiNjg2MzM4N2RiYjU5NmVhZjBmYWU0ZmE1NDdmODU3MWNiOWIgbGVnYWN5LXRydW5rCis2OTcwNCAwN2ZhZDMwMTAyNWYwMTllZTMyNjE3NDVkZmNiZDU2OTA4N2NlZWYzIGxlZ2FjeS10cnVuaworNjk3MDYgZGQyMjEwYjJkYzIyY2JlZDRhMDMyZjBlZWI0Y2U1ZjI4MmI2YjZlMSBweTNrCis2OTcwNyAxNDdmY2ViYWNiNWJiMGQxODkwYjYxOWZkYTFlZjdlM2E3ZTFjMzA5IHB5M2sKKzY5NzA4IDE5ZTc2ODVkOWI5NDZmMjU4NDdiMDhhOGNhOTE0N2FhNmIyOGMwYzkgcHkzaworNjk3MDkgNDRmZDJjYzllOWNjNzQ2NzliMmM2NWIzMTQyNjQzMjg0ZmY2NjU1NCBsZWdhY3ktdHJ1bmsKKzY5NzEwIDI3MjY4ZWYwNDcwOGQ4ZTNjMzBhNGQ2NmZjNzFhNjFlNWJmMDI0ZTUgbGVnYWN5LXRydW5rCis2OTcxMSBkNzcyNjc4MjUzNmQ5NTAxNmE2YTc1YjZlMTViODAwNGMwYzNmOGY4IHJlbGVhc2UyNi1tYWludAorNjk3MTIgMjU3Yzk4ZmE1NWQ3NmNlYTliYWFiMzE0OGIxOTU2ZGJjMjRkMmY4OCBweTNrCis2OTcxMyBlNTQ4ZGYzNjE4OGVmNzM1Mjg0OGMxZGNjYWY4YWYyNjQzYjg2ZmM3IHJlbGVhc2UzMC1tYWludAorNjk3MTQgMGM2YzA1NzJjMjQ3M2MwZDI2N2NmYjNkNDliZjU2ZGMwNWE4NTNiZiBsZWdhY3ktdHJ1bmsKKzY5NzE1IGQ5ODJiOTViZTNlMjE4MGQ1NTVmYThmOWJmYmJmNmExNmFmOTA4YmYgbGVnYWN5LXRydW5rCis2OTcxNiA3OThhMTZhYmY1NDYwODg2MTBmZTUwYjlkNGQzMGEyMWU5MDNhZGRjIGxlZ2FjeS10cnVuaworNjk3MTcgZDY3NDBhOTZhNzBhZGFjMTZhNzYzZTA3YTY3NTZiNGU4OWI2ZWRhOCBsZWdhY3ktdHJ1bmsKKzY5NzE4IDlhZDY2MmE0M2ViMzUwZTQ3YTdjYTZlZmE2NzVhYjc5MDA3ZGU5MzcgbGVnYWN5LXRydW5rCis2OTcyMSA4NTQwN2QwNDc3ODIwOTgyNjMwNWFkZjUyNjZlOWQ4NjJkOWRiZjNiIHJlbGVhc2UyNi1tYWludAorNjk3MjIgMDllNjMyMTRmMGJmODY1MDZmOWNiZjUyN2NiNjM2NDg2MDA4YTQxYSBweTNrCis2OTcyMyBmYjg2MDZlMDg2ZWE4NDQ1ZjY5ZmQ2NjIwN2Q4M2RlOGJhOTY4MGIxIHB5M2sKKzY5NzI0IDkyZTQyYjFiMGE2ZWVjMGYxMTc3Njg5YjNjMDE2YWUwOGJkMDNkMGEgbGVnYWN5LXRydW5rCis2OTcyNSBkNzg2MGJiMGIxNWEwYmZkMTM1MmFiNjZjOWVhM2Q4ZWMyMDllYmZkIHJlbGVhc2UyNi1tYWludAorNjk3MjYgNjA1ZmZjMDUyYjQxOTVlMzM0MDE5YzYwZmE1ZDU4NWFlMjMwNDI5MSBweTNrCis2OTcyNyAyMDVhMmI0YzFmYTU0NjU1ODQ0MWExODM4MzcwMDhkZTc3NGEyYmNkIHJlbGVhc2UzMC1tYWludAorNjk3MjggMWZmNGI0MWE1N2MxMjZkMGY5NDY2YzAwNDQzYWM0OGUyYzliNjVlYiBsZWdhY3ktdHJ1bmsKKzY5NzI5IGU3ZTU0NGNkMmMyYjk0NjJhOTI0ZDFhYTIxZDhlN2Q0OGRjZjM3YmIgbGVnYWN5LXRydW5rCis2OTczMCA2ZWE3ZDM3MTRiZGY3OGYyODQ1NDM5ZDVmZDVkYWU1Mjk3NDMyOGUzIGxlZ2FjeS10cnVuaworNjk3MzEgNTUxOWI5ZGNjOWI2YjY0NDdhZjAyMDNkYWYwMjNmNDk2ZDAwYzgzYSBsZWdhY3ktdHJ1bmsKKzY5NzM0IDM5ZjA5YzllZDVhNWIzZWQ2YzNmMTE5NTUzZjg5OGIyNzNhY2I2ZGYgcmVsZWFzZTI2LW1haW50Cis2OTczNiAyODc4YmY4MTVkYTFlOGJhYzhiY2Q3NDc0ZTUzODQ1YzU1Njk3NjNkIHB5M2sKKzY5NzM3IGNiMGFkZTMzNTU1MTU2MGMxNTY4OWUyODAyOGM4ODExY2QxNTAzOWUgcmVsZWFzZTMwLW1haW50Cis2OTczOSA3MmQxM2VjZjRmY2E3NWZiMjU2YWI3MjNkMjNkMjY0NzBmOTMzOTU4IGxlZ2FjeS10cnVuaworNjk3NDAgNzZkNzdhZTk3YjM4ZmY2MDczZWVjZWVhYWRkYTNlYzlhYjYzZWJiNCBweTNrCis2OTc0MSA3NTU5YTAzY2JkMzBhYjc1MWI3NGZkYzdlZDQ5ODhmZjc1MTE5NmU5IHJlbGVhc2UyNi1tYWludAorNjk3NDMgOWJmZjEzMGQ3OTJkZWE0NzFmMmVhOWNmMWU2MGFkNzI5ZWMxZTM5NSBsZWdhY3ktdHJ1bmsKKzY5NzQ0IGVlNzAxMTg2Mzk0MzI2N2RmYzUwZWQ1NTVhZjZiZjJlZjBiNGE5YzQgcmVsZWFzZTI2LW1haW50Cis2OTc0NSA4YTI5MjU0M2U4NzE5OTc0MTA2YjQxYjc5MDcyNDVhNmZmYWE3NTYwIHB5M2sKKzY5NzQ2IGIyZmYyMWJiYjljNTQwNDQ3NjZiM2Y4YzM4NGY4NGYyZjBkOTE4YzcgcmVsZWFzZTI2LW1haW50Cis2OTc0NyA3YzdiODA1ZDBkMGE4ZGFmN2ZmNGY2NThkZTBjN2EyMTVmOWZkYWJiIHB5M2sKKzY5NzQ4IDc0OGRmZTliYjg1N2ZjMWVmYTcwMjE1YTA4NTk0MzI4N2UyYjY1YzAgbGVnYWN5LXRydW5rCis2OTc0OSA4NWZlODg3NjE0Y2U0NDIwZTkwMWNmMTE2ZjY4OWQ4MTYzMTZjYzMyIHB5M2sKKzY5NzUwIGUyNjBkNmRhZjc4NDhkODQwMGQ3ZDM5NWVkNmYwNTE5MTUwZjE3ZTQgcHkzaworNjk3NTEgZDI1ZmMwMjA5Mjk1NTAzNmE3MDM2ZmIxNTdjOWVjOGM2MTk2ZTU5NiBsZWdhY3ktdHJ1bmsKKzY5NzUyIDNkYmRiYzVlNmQ4NWFkNWVhMTNhNTEwNGVlNWFhMmFjYTA0NDdiYjMgcHkzaworNjk3NTMgMDNmMDdkOGYwNmU0NmMwM2FiZjJkYjk4Y2Q4NzU4ZWIzNWNmZDA2ZSBweTNrCis2OTc1NCAzM2Q1ZDdkYWE4Yzc0NjlmMTNjYzkyZWUwZmRjNWQyN2M4Njg5NGE2IHB5M2sKKzY5NzU1IDQ5N2VhYjc5YjFiZThlOTE3MjVhM2UzMWNkNDdhNTkwMTg0ZjRiOWMgcHkzaworNjk3NTYgYTk3NzRiNjFlNTJkM2Q4ZDZhYzUzOTIxODU1ZTcxN2QxYTk0MDViZCByZWxlYXNlMzAtbWFpbnQKKzY5NzU3IDMwMjI2M2UzYzhmMWQyYzU1YzdkMWEyMWU0YzY4YWZlNDlkNTczMTIgbGVnYWN5LXRydW5rCis2OTc1OCBkNDdjMjU4YTFlMWNlZmJlYjVkNWMzOTlmZDk2ODY3YmQyYTdlNGNlIHJlbGVhc2UyNi1tYWludAorNjk3NTkgYWI0MGM3NjEzOWFiNGQ3N2M5MjBlZjk5ZTUxNmIwZTdiZTY3ZTBkMCBweTNrCis2OTc2MCAyZjUyNTc0OTRhMmUwZmViMjZhMjI0MmE1YjU3MWUzM2FmOGE5ZGMxIHJlbGVhc2UzMC1tYWludAorNjk3NjEgNTU5ZTRmYzMxYzhhNzNiNWY2NGYzMmQwODNmNWNkZjlhOWEzNWU1MCBsZWdhY3ktdHJ1bmsKKzY5NzYyIGVhNDdjZWY2NzgzN2IwZWVkNWM1OWI0NzliM2Q5NmE5YzYwMWM5ZmIgcmVsZWFzZTI2LW1haW50Cis2OTc2MyA5MDAxZDljOGY3MWUwNTE3YTNlZTNjMzIxMTIzNGVkOGZkOTdhMzkzIHB5M2sKKzY5NzY0IGQ2NzNkYTkxNTkxNGQ3YzU5MTM0NGM5MzM4YWQ5YmJkZDQ3MmEyMmYgcmVsZWFzZTMwLW1haW50Cis2OTc2NSA5ODAwYWIyMzZjMDlkNDU1Y2Q2MmFjYjcxYTAzODIwNGUzYWRkN2U1IGxlZ2FjeS10cnVuaworNjk3NjYgZjBlYWM0NTJhNmNhZmQxOGZhMDg5MTJiMjdjODFmMmQ1ODY1MzliNCByZWxlYXNlMjYtbWFpbnQKKzY5NzY3IGJkNDY3MTc5MmQ1MDE2ZTVlODE0NzY4YWZiNTczNTZhNmRmNzA0MzYgcmVsZWFzZTMwLW1haW50Cis2OTc2OCA0MzQyYzBhMmYyZGM5Y2FkNDQ4YjE2ZDVkOTI4NWZhYjBlMTczMjIyIHB5M2sKKzY5NzY5IDg0NjhiNTJmNWVlMmMzNzdjZGJlMjczMTViMWYwOTUxMWI2YWE3NTYgbGVnYWN5LXRydW5rCis2OTc3MCAwMGY3YmUwMmFlMWYxYzJkMDA5M2JkM2NmMzNjYmIwZTQ5YjU0M2Y1IGxlZ2FjeS10cnVuaworNjk3NzEgNzhlMzExZjI3N2E3MDI3ZTFkYjUwMmY5MjE2NmY0ZjVkNGFlMjEyMiBweTNrCis2OTc3MiA4YzEzZjQzMGUxNjA2YTA4NTRlNmMzZWY0YTFjNWQwMzBiZGNhYjU0IGxlZ2FjeS10cnVuaworNjk3NzMgODMzZGRmZWMwYmM0NTZiZTA0ODhhNWU5ZmMxYzY4MDU1ODZhMGY5NSBweTNrCis2OTc3NiBjMDJjMmE5MDhjYjA5OGYxZjhmZGQzZmM4MDMzZjViODBhNzIxZmJlIGxlZ2FjeS10cnVuaworNjk3NzcgNDM4NTkyODkwZTJiN2VmNTkyOWEwMWVlYTA5MGQ5MWVjM2VjYzQ2ZCBsZWdhY3ktdHJ1bmsKKzY5NzkzIDI3OTMzNzUzYTM4N2Y5MWE4MmM5NGVjZmZiMzQ4NWE5MTI5ZTQ4ZmMgcHkzaworNjk3OTQgNjdlZWQ4MWJhNzRmYTZhMzBhODA2ZTQ0NTZkN2Y3NWIyYzBmZWY2ZSBweTNrCis2OTc5NSA5ODE1ZGE0M2ExY2VmYTQ2ZDBhMWQ4MTE3MDk3YmI4Mzk4OTY2ZmFmIGxlZ2FjeS10cnVuaworNjk3OTYgYzFiZjAzN2ZlZWZlMDZiMWVjZTkwMDk4MTFjNWM0MDVjOWEyYzMxZSByZWxlYXNlMzAtbWFpbnQKKzY5Nzk3IDYyNGI1NWQwZDZiNzJkYjExM2Y0MDUwNmM3NjI3ZDIzNWRkMDY3YTIgcHkzaworNjk3OTggMmYzYWZhY2Y5ZjBiNzJjY2Q2MDg3YjgyODk4YjFmNWU3YTQyODkyYSBweTNrCis2OTc5OSAxNDA4ZmVlYzAwODQ5YWVlMDU4NmY5YWZkMmIxMGRkMjkxNjY0MTY0IHJlbGVhc2UzMC1tYWludAorNjk4MDAgZGI4ZGIzMWZkYjRjNDdjMDFmZTBmNGRkNzViNmEwOTRhZGZmMzhjNSBweTNrCis2OTgwMSAwYjk4ZTM3OTFiOWVjODcyMGNhNzgyYmQ1YWNjNDU1MDUwYzUyMTZkIHJlbGVhc2UzMC1tYWludAorNjk4MDMgNWExNzg4OGM1MTUxM2U5NWRhODExNmEwN2UyY2ZiZDcxZDcwYjdkMSBsZWdhY3ktdHJ1bmsKKzY5ODA0IGVmMTljYTAxM2UxNmVlMTUxZDgzOWE5MmY0YjgzMWYxMjlmNDU3NzQgbGVnYWN5LXRydW5rCis2OTgwNSAwODI0MDkzMTRiMDA3YTg4YjNlMDdhNmRkMTc2NDkyYjhlYzNmNDc0IGxlZ2FjeS10cnVuaworNjk4MDYgNjVhM2Y1NTVmYWI3M2RhNGU3NGViNDViZjYxMmIwYTdjNjQ1YmUyNSBsZWdhY3ktdHJ1bmsKKzY5ODA3IDE2NGJhN2ZmYTBlZWU1NDRiNGMzZTEzNDc2OGJjMjgxMDFjODZmYzMgcmVsZWFzZTI2LW1haW50Cis2OTgwOCA5MjUwYzhjNjFhOTEwOTVhOTVlZjU2ZDNjYzIxNjhmNWRlNmU0YTlkIHB5M2sKKzY5ODA5IDRkM2JhYWMyZTFhMjBkYjUyYjE3NzliYTVmMWNmMzhkNTYwOGFjNmQgcmVsZWFzZTMwLW1haW50Cis2OTgxMSAwODQ4ZWJiOGY5Yzg4YzkyNzBkZTY3MmZhMTU2YTQ2YjRlNmNkZGQ4IGxlZ2FjeS10cnVuaworNjk4MTIgYzZlZDViZmUzOTY5YTM4YjRjMDdmNzE4M2NhZjMwYWJkZmY3ZmI1NiBpby1jCis2OTgxMyBlMDhlNDA5OGE0ZTc5YjQxN2M1NWVlM2QxMzczY2RjYmJiNzUxMzUxIGlvLWMKKzY5ODE0IDQwODJlZGE4YjQ2NjNiMTQ1MTZjZTY5NjBjMDUyMzkyYzZhOTc5ZTcgaW8tYworNjk4MTUgN2Y4M2FmZjY4YzE2NmNkODRlMzJlZWMxNmY2MmRlOTViN2JlNTE3NyBpby1jCis2OTgxNiAxYWFjNzUyMDQzN2E2ZmQ0YTc1NzQ5OTA3ZTY3Zjc3ZjZiNjI5OTE2IGxlZ2FjeS10cnVuaworNjk4MTcgYzA1YzMwZmMxMThiZTEwMDllZWZhYmJmNDQ1NDI3ODQ2NmIyYTYyYSBpby1jCis2OTgxOCA2Y2U5NmNlNGQ5YWZlNDE1NmQ2MTAyMDQxODNkMjE4M2QyYmZkNmQ2IHJlbGVhc2UyNi1tYWludAorNjk4MTkgNWY1OTVhYzhhZWZjMzk2MmY5ZWMwMjVmMzA0ZTkwOGRiM2I3MTI4ZSBweTNrCis2OTgyMCBlMDgxNWZlZTI0ZjZlMzgwYjI2MjNlZjY1MWYxZDQ3NWZhYTc4ZTIwIHJlbGVhc2UzMC1tYWludAorNjk4MjEgNjdiY2ZmMjkzYTIxYWQ1ZmViNTc1MWMzODdhMDc4NTc0NDJhOWRmZSBweTNrCis2OTgyMiAzN2U0ZGY5ZmRhYTZkNDAwMDU3YmVlZmUwMmFhMzBiYjNmMjgwZWE0IHJlbGVhc2UzMC1tYWludAorNjk4MjcgYWRiMTEzM2Q4OTJhYjZmYzJmNDJjN2M5ZjZjMDk4ZmE0N2VhNjRjZCBpby1jCis2OTgyOCBjNjE4MmNjN2U2ZDcwZTAzMzFjNDExMTVhMmIwMWYzY2VkY2I1NGNmIGlvLWMKKzY5ODI5IDcwMmMzYjk4MDNlOGM3NTNkNzFmYjcyYzcwYzgwNDkyMTllMDBjNGIgaW8tYworNjk4MzAgNmZkODkwYjIwZDYzZmM3YWQ4YjBkNWM5MDM3MTVlZmMzNGM1OTcwYSBpby1jCis2OTgzMSBkY2MxNjFlMWFmN2VjZTI3YWQ1MzNjYzRjZWY2MmY5NGU5NmQyNDBmIHB5M2sKKzY5ODMyIDQxZTM4YTYxYmM0YjQ5MTY3ZjJkNTliZjFhNTY3ZWFkOGRmYjYwMDQgcHkzaworNjk4MzMgYTFmYWZmNzRmZjg5ZTJkYWFjMDQ4ODkwMTU0ZjE4ZGJiYWFlYzk4OSBweTNrCis2OTgzNCA3MTQ5YjdlZWYxNTNkN2IzN2UyZTQ1YWQ1MzAxMTAyZTUyZTBmMjE2IHB5M2sKKzY5ODM1IDc0YTJmZjQwNTE4YWU2NjUzYjE4ODZjYjczYTQ3MTlhYWRiNjE3NzkgcHkzaworNjk4MzYgZWU3MDI5NzEwYzA1MGRiMjI2ZDNiZjg0NDIwYTljMzljOTY5MzRkNiBweTNrCis2OTgzNyAzZTI3ZDYwNmQ2MjVmOGU5MTdmYzVlMWY1NjU5YjBiZGVjZTdlZTdiIGxlZ2FjeS10cnVuaworNjk4MzggMzI2ZjZmYWNjMWFhNGY0MzZiNzNkOGNjMGQzMWJjNjg4MGRhMjE4MCBsZWdhY3ktdHJ1bmsKKzY5ODM5IGE1YmE5YzE3ZjhiOWQ1MGUwOWMwZjE0YWQwNjYwYWRmYzRhNWY2ZTEgaW8tYworNjk4NDAgOWU2ZmJhNWFjY2U0NmJmODQ3MTFiZmRmYWVmYmI3N2ExYTVkNGU0MyBsZWdhY3ktdHJ1bmsKKzY5ODQxIGMyNzJlMzE1ZGQ4NzIwNmE5ZDk3NmMxMDRiZjE2MWQ3NmMxN2YyMmMgaW8tYworNjk4NDIgOTU1NzZiZjNhZDczNTg5NjkzODQ5OWE1ZjZhYTA2YjJjNjA2MDQwNyBpby1jCis2OTg0MyAzNzZkODA4ZTFjMDVmYWFhZDllNTAwMmVlNWFmMDI5ZTQzZmJhOTVjIGlvLWMKKzY5ODQ0IDUxNDQ1YjA0MDk4NjE3NjI2NGQ1MGZmYjY3ODJmZjdhZTM0MzA0MGEgaW8tYworNjk4NDUgM2YwMjNmYjgzZjJiOWI5YTFiNGE4NDg5ZTVkNmNlMDcwNGUxZTQyMCBpby1jCis2OTg0NiBhZjliNmM0MzgwNGUxZTljNDkzMzJjYTY2MzQzNjNkMDhhZTJmMmFjIGxlZ2FjeS10cnVuaworNjk4NDcgZDA2YTNlYmYzMDZmYTk0NWU0M2Y1OWRmMDYzNzA1YTNmNGMzZGNjZCBweTNrCis2OTg0OCA2YmE1NTg4ZWY2NDU4N2YyMmE0ZTQxYzhlNjNkOGMxOTBiMDQ4NmFkIGlvLWMKKzY5ODQ5IGVjNDkwOTMyZDkxY2I1MmRiMTJjZTM2MzNkNzM0NzE4OTg3MzIxMjYgcHkzaworNjk4NTAgYzI5NTJjMmI1YTRhZTY4ZTczMzI3OWM2YWZiODRmYzQyY2FlOTc5NCBpby1jCis2OTg1MSBhYTI5ZDA5NjcxMDU4OWU2NzZlYTgyMWUxMGNhYmYyZDZkNzk3NjA5IHB5M2sKKzY5ODUyIDk5ODhlOWYwMDQwOGY2NTkyMjc5YWU2ZDY3NDIxODgzMWM0MjhiZDkgaW8tYworNjk4NTMgOGE4MjVhMTdjYjI3MzU4MmJmZmY5NGMwNWNkYzVlZTkzODg3ZGU2MCBweTNrCis2OTg1NCA3YWU4YTg3Mjg0MjFmZTVmMzI0ODBjMTFlODRjY2VjOGI2MDUxODc5IGlvLWMKKzY5ODU1IDk2YWJiNDM5ZTJkMDdkMGNiYWE4N2FkN2I1YjZiMTVhY2MwMzdjNjcgbGVnYWN5LXRydW5rCis2OTg1NiA2YTViZWUxODkzYWQ4MzZjMTEyMDQwOGEyOWVhNWU3NDFiMDJkZDkxIHB5M2sKKzY5ODU3IDkxODI2NGZmMDJlMWMwOWVhYzQ5NDQ3YzM0Yzc1ZWZhMWRmNjJiNGMgcHkzaworNjk4NTggNWJlMjRhNTZmMDkxOGFkZGM2ZmU1MjIyMjg1ODI5ZmVmNzI4OTMzMiBweTNrCis2OTg1OSA3NjU3MTk4NmEyZjQyMDgyNjYzNzZiZjBlYjI0YTI5MWNhZmVjMDQ1IHJlbGVhc2UzMC1tYWludAorNjk4NjAgOGU3YTRhNzc0MTM4NDI2ZGQ3ZDA0ZDMyZDg3YTE1MWJhZGYyODZhNSBpby1jCis2OTg2MSBlY2Q4ZWY0ZTc5ZTZiNzFiMTFiY2IyMzRhM2EzNjZlY2U3Y2FkNjBiIGxlZ2FjeS10cnVuaworNjk4NjIgYzMzMDRhNGI2NGVhMWE3ZTU1OGMyMmVkMzFkY2VmZTVjNWVjOTM3OSByZWxlYXNlMjYtbWFpbnQKKzY5ODYzIDg0NjBlNWVlMDZjMzkxNWRlNzgyNTgxMjMxYWZlNzY1MzQ1ODFjN2IgcHkzaworNjk4NjQgM2NhMWZiNjIyZjVhNGI4YTc1N2YwODkxNTNjMDk4ZDE5NGE2NDY0MyByZWxlYXNlMzAtbWFpbnQKKzY5ODY1IDAwMmRhY2E2NmY5ZjZiZGZiOWQxOTcyZmNhN2VkOThjNGJjN2NkNmYgaW8tYworNjk4NjYgZWQ1Y2Q5MDRmMjAwN2M1Y2VlNTY5OTM2NjQzNWIxNWI1MjEzNWVmMSBpby1jCis2OTg2OCA1ZmZkOTMyODBhNzFiNDA3YWM4NTQ5ZTE3Mzc3NzQ0ZjFkMmQ0MWNjIGlvLWMKKzY5ODY5IGEwZWRhMWUyMjhiOGY4ZjM1NGE0MGRmZjc3NzgyMjUxOTc3NGE1Y2EgcHkzaworNjk4NzAgMGFiOGJlZjY3MWEzZGY1OThhMDA4OTU4NGNlY2ExMTQ4Y2U3ODhhYiBsZWdhY3ktdHJ1bmsKKzY5ODcxIGMyMDFjOGNmM2NiNDBjMjY2YjhjZDY2NGI0NzE1YmE0ZjhmMGJiYWMgbGVnYWN5LXRydW5rCis2OTg3MiA1YjVkY2NjNTBlMTJjNDY0YjE5MDRjMjk0NDM2ZWQ5ZDA0NDBlODFmIGlvLWMKKzY5ODczIDQ5OTE0YjNlM2FhODEwMGY1MTA1YTc1NjAwNDIxZmM0ZDFjYmE2ZTYgaW8tYworNjk4NzQgYjM1MTVlZDI4MTM1MDQxNjBjNmE3MzNkMDU4NjEwODUxNDhhN2M5NiBsZWdhY3ktdHJ1bmsKKzY5ODc1IGQzNjI5NjY3Mzk3NGEwMjJkYTc5NjE3NzM3Mjk4NmEyMjQ2NGQxODYgcmVsZWFzZTI2LW1haW50Cis2OTg3NiBlODljN2VkMWNmZmY0ODBmZTVkNDM0MTIxZDlkNTNkZWM3ZDY2MDQ3IHB5M2sKKzY5ODc3IGFhMzAyMTY5OWM1OWFiODBhOWE5ZGNkMDU3MjY1OTBjOGJjMDY3YmQgcmVsZWFzZTMwLW1haW50Cis2OTg3OCBjZDJlZTgxOTA5NTdjOTQ3MDBmOTM1N2ZlOGFlYjllNjVhYmExNjFkIGxlZ2FjeS10cnVuaworNjk4NzkgMzM5ZjVjMWVmMGVkZjQzMzJhYWQ5ZGIxMWJlZmY2MzU4NDNmZjc4MSByZWxlYXNlMjYtbWFpbnQKKzY5ODgwIDBhNWMyNmQwYmU1NDBkY2MwMmQzOTZlODc0NTE4Y2MzYmExMTg1ODcgcHkzaworNjk4ODEgNjIwZTc0MmNkZjY4YTc0NWIwNjAxODc1YmVlYWY3ZjZlYjEyMDI5MSBsZWdhY3ktdHJ1bmsKKzY5ODgyIDBlZmZkYTU0ODE5ZTJjNDY3YmQ5YjI2YmNkNjkwYWExZGJkNWVjZTggcmVsZWFzZTI2LW1haW50Cis2OTg4MyBlNWU1Y2EwNDkxYjg0MDgyNWEwMmZkNmVmY2QzMDgwMzZiOWRiMzYwIHB5M2sKKzY5ODg0IDEzYTFjYmYxMWEyMWVhZDE3ZmYyNGVhOGIxZTZhMzQ5MDA5ZjU5YWEgcmVsZWFzZTMwLW1haW50Cis2OTg4NSBkMjJkNmU5Zjc5MWMyY2Y3MzY2ODdjNTA5YTM4YjEwNzkxYjVmNTc2IGlvLWMKKzY5ODg4IGNlMGE5NWFmNmIxZDQxYmJjMjkwN2QzYTQ4ZDE3OTEwNWY3MWJjMTUgaW8tYworNjk4ODkgMjcyYWM2NTRmZDFhZjIwMDc0ZThjN2U4MDc0ZTgwOWM2ODVlNDVhZiBsZWdhY3ktdHJ1bmsKKzY5ODkwIGZiN2JlNDVhOTQ0MThlZjYxY2E3MDM2OGRjNWQwOTc3YTJkNDRjZWMgcHkzaworNjk4OTEgM2RmOGJlMDM2MzI0M2UwYThlZWVlOGZkOWEwMWIzMGQ1NGM2OWI5OCBpby1jCis2OTg5MiA5ZjZjYjA0MzdiZTgyMzQzZWZjYmY5ODY4NWM0YTdhNWYzMzg5MjcyIGlvLWMKKzY5ODkzIDQ0NDk2Y2QwYmM3ODAzZTQ4NTE4YzM1NmM5OWFhMWU3OGQ1NWQ2MzUgaW8tYworNjk4OTQgZGIxNGVjYTAxNjM1MDZkY2ZhZmFiMzFiZGE4NzUyMDRkYmMwOWI2YyBweTNrCis2OTg5NSBiNjFmMzNhZjM3NGJjYTcyYjhiNGZlZWYwYzUxMTgxZTVkNWJkZjZiIHB5M2sKKzY5ODk2IDhhNGRjMDA4OGU4NjI2YjU2Y2RmOWZkNzVkYTAyM2E2ZWZjODQxNmMgbGVnYWN5LXRydW5rCis2OTg5NyAzMjE5YjM0YTMzMjA2MTI4OTRmYWE0YzlmMjk1YzE2NzcyNjc4NjUxIHB5M2sKKzY5ODk4IGEzNjY2ODhhOGYwZDNjOWUyZGU0NzE2YjAwODBmMzIyNDcxYjcyNmQgcmVsZWFzZTI2LW1haW50Cis2OTg5OSBjOGQwNmRmZDRjMzlmNWM5NmUwZGE3ODk5MTY4OTA5YmU2MjM4OTVjIHJlbGVhc2UzMC1tYWludAorNjk5MDAgNWJkYjljNjQyY2NjZDE2MmU4ZjM5NzFkZTQyZjg3YmE2ZmVjMTY0NiByZWxlYXNlMjYtbWFpbnQKKzY5OTAxIDNlNzczM2NmMjc5ZTM0ZGE1ZmFjOTMwYjRhOGMwMDFlMmE0MzRlZGQgbGVnYWN5LXRydW5rCis2OTkwMiAyYmYxMzM3YzNhNjA1ZGNhMDQwZjkxNmVlM2Y0M2U2NTg3MmUyZTE0IGxlZ2FjeS10cnVuaworNjk5MDMgMWYxZTIyZWY1NTYwOWFlMTU4Nzk5NzY1ODg2NjVmN2QyODAxOGIxMCByZWxlYXNlMjYtbWFpbnQKKzY5OTA0IDVjODU5YWVhNDZiOWM3ZGNhNTVkNDFjYTE0ZWUwMDE3NTdhNTg3MTkgcHkzaworNjk5MDUgMGE1OThkYmVkNjc5MjY2ZjYzZjE5NmQ5MzBiYjk5MWYzMGIxNjZmOSBsZWdhY3ktdHJ1bmsKKzY5OTA2IDAxNzRiOTM2NjljZDQ4ODllNTc3YzFjMGFmOGI5MjM0NjBkY2IwOTggcmVsZWFzZTI2LW1haW50Cis2OTkwNyAxNmNjYTMwY2YzZWI4M2IxZTI2MDVmMzI5NGQxNmYyZTc3MjYwMzhkIGxlZ2FjeS10cnVuaworNjk5MDggYTBmZWNiZTczNjE2ZjYyODNlM2RlMGY2OTk5MmJiNzhjM2NiNDNjNiBsZWdhY3ktdHJ1bmsKKzY5OTA5IDA1MDQwODdhMjcyMzZiMzc4NTAyMDkwMjU3YzY2M2E2ZDAyMmI3ODYgcHkzaworNjk5MTAgYzFmMDI2ZTA4NzVlMDQ5YjA4YzI3NWRlOTU1ZGY2NjZmNjdhOGVjYiByZWxlYXNlMzAtbWFpbnQKKzY5OTExIDlmZTUzMTU2NTQzY2Y1MmY4MmIxNmZkMzc5YTI3MDc1OTRmNWYzNzMgaW8tYworNjk5MTIgZjllYWQyZTFhMDNjZmQ4YzIzYzg4ZWFjNGNjNWU0MTNiYzU4NjQwMyByZWxlYXNlMjYtbWFpbnQKKzY5OTEzIGJjM2IwNzNhZDE0NmQ1OTE1OWNkNDc3MzRmNjQxYjY4ZjYyMzY5NTcgaW8tYworNjk5MTQgYTUyZTE0NTQ1NTYxNGU3ZmNiNjczMTgxODk2ODlmYTkzZWU0Y2ViZiBpby1jCis2OTkxNSA2NmNlODBlOGU1Mzc5OGU4MTk5NjYwMjYzYzljNmM0OGUwZjc4ZGNlIGlvLWMKKzY5OTE2IGVmM2E2YzE2ODM3NGM0OGRjMDEzYThjNDEwZGNmZmU0OGQ2M2ZhMTIgaW8tYworNjk5MTcgODM2NjRlN2Y3MDhhYjM5N2NkZGJiOTZkNzVmZWFlMWUwNmU5OTM2ZiByZWxlYXNlMzAtbWFpbnQKKzY5OTE4IDk0OTQxYjA1OTgwMGUzNDZiMTU3MWJjYzE0OWE0OGVjZWRkMTMxZGQgcmVsZWFzZTI2LW1haW50Cis2OTkyNCBmYTc0NzY2MGQ0ZDQxNjhjZDViMjNiYmM3MDk4YjA1M2VkYjViMThlIGxlZ2FjeS10cnVuaworNjk5MjYgMDRmM2NmMzJhYTc3ZjgzNjA5MDZlMTIxNTZkYjdmNGYwZDZkODE4MyBweTNrCis2OTkyNyA1Yzc0ZTQwZDE5MjZlNWE2ZTg0ODM3OTA4MzM5ZTkzYTgzNDBjNjgxIGxlZ2FjeS10cnVuaworNjk5MjkgYjFlNjBiNDdlMTYwMTdhNmExZmMyYjBmNzg2ZDEzNzA5NjkxZmViNiByZWxlYXNlMzAtbWFpbnQKKzY5OTMwIDU2MTc0NzEwMzdiYzdhZjVjY2JhNmI2OThiNmY3MDQ3MGJlY2M3MDQgcHkzaworNjk5MzEgODNmYTI3NDgzZmRjOTM5MWJjNDBjN2QzYzZmNWU2NDc5ZGYyNDFmYSByZWxlYXNlMzAtbWFpbnQKKzY5OTMyIDU5NTJkNDExODlhZDFhZjExMTEzZmM4ODAwYWU3NjJkOTI1NjIzYmMgcmVsZWFzZTI2LW1haW50Cis2OTkzMyA5MDQxMmRmZGFiYTMwNmEyNDk0ZGJhMDQ0YzYzZTFiZjc0ZmVkYTg0IHJlbGVhc2UzMC1tYWludAorNjk5MzQgMTJjNjllZjQzZGRlODMyYWMwZDdmMjJiYzMxMzY4ODc4ODgwYmFkYiBweTNrCis2OTkzNSBjMGI5YmMyNWNlYmJlMzk5N2FiM2I4NTQ1YzU5ZTAwMTEyOWUyNmZhIHB5M2sKKzY5OTM2IGJjNzBlYzk3ZTM5ZmFmNTc2NjlmZDAxY2Y3YzkzYzcxYjc1OGVhZjcgcmVsZWFzZTMwLW1haW50Cis2OTkzNyA5YzI1YTA3OTAwMjJjMDYxNzViYTZmNWJkYjgwN2VjYTQ2YmUyOWQ2IGxlZ2FjeS10cnVuaworNjk5MzggZmFmOTY4MjEyZjMxZDZhMDdhYmZmN2ZkNzRkM2U3MDBjYzMxNzk4MSByZWxlYXNlMjYtbWFpbnQKKzY5OTM5IDU3NGZlZjUzYTdlM2RlNDllMjkxODk1NzcxMjU4ZDE3MTA4ZWNhZGUgcmVsZWFzZTMwLW1haW50Cis2OTk0NiA0NWI0NGJkMzJmNDE2NWQxNjljMzFiZTk2MjZiYzY5YmE4YzRmNDczIGxlZ2FjeS10cnVuaworNjk5NDcgYThiYjgyZjVmZDY0N2FkNzBjM2IwMjg2NTBmOWI2Yzg4Yzg4ZTBhZCBsZWdhY3ktdHJ1bmsKKzY5OTQ4IDJmNmIzNGY2N2VmMDIwMTY1OWVmZGFkNTdmNzkxYmYxM2IzMDAyODAgcHkzaworNjk5NDkgMmUyNTc3MWQ3MjAyMTYxZjI1NDBmOTMxYmYwNTgxMDhmZTg1NjUyMSBweTNrCis2OTk1MSA2MGQwOWE3MTY1NTY4MGJkNzZjMjE1MWM4YWExYzM4MGM2NTBhMzI2IHB5M2sKKzY5OTUyIDFkMjQ3Mzk1MTFjOWM5MjlmZWZiY2YwMjZhOWJhYjg4Y2M2NTdhODIgbGVnYWN5LXRydW5rCis2OTk1MyBiOGM0YTM3OTNkMGY1MTJhN2YwZDlhMjhjYzAxMmZlY2JhZWRiOTE5IGxlZ2FjeS10cnVuaworNjk5NTQgYTdmZGY2OWNhZTEzNWMwYWM0OWNmYmNhMTA3MDA3ZGZjMGFkMTg1YiByZWxlYXNlMjYtbWFpbnQKKzY5OTU1IDQ2Y2JlNjdiOTY2MWY3MTE5ZGM2ODliMGI0YTMxYjI3ZDMwOWIxYWUgbGVnYWN5LXRydW5rCis2OTk1NiBkYzMxNWRmN2U4MDg2MzI3OTVjODE4MmVkYzQ5YjI4OWQ0ODAzMzE0IHJlbGVhc2UyNi1tYWludAorNjk5NTcgNjU3NjJhMDZiODhmM2NmMzAzMTM1OGFiMWUwM2Q2ZDEzY2M3OGI2MiBweTNrCis2OTk1OCAzMzdiZDUwOTQ1NWExOTcxODcwMzc1YTU5NWU1MDMyMTY0NWFiZjZkIHJlbGVhc2UzMC1tYWludAorNjk5NTkgMTc3YmExMjJiYjFiMDJjM2EzMzJiMzE1ZDliNTliZTU1NTYxZDc5ZSBsZWdhY3ktdHJ1bmsKKzY5OTYwIDI5YjEyYTg5YjJhMDZjODA1YjE1NzI1NTgwODA4Mzk3OGYxNDkwMDcgcmVsZWFzZTI2LW1haW50Cis2OTk2MSA2NDNkOGQ0ZmM4ZWJjYzY5MTU1ZDM0MTYzNTdhYWRjYTljMDUzMzg4IHB5M2sKKzY5OTYyIDA4YTI5NmE4OGMzZTBiMzRiMTYxZTliOTUwODZhMTgxNzk1YWVmZmIgaW8tYworNjk5NjMgOGUwY2ViOWY1YzJhNzNmMzRmZDI1OTYzN2EyZjg3ZWI4MmM5MjY0YSBpby1jCis2OTk3NCA0MjFhMDM2OWYyMzk0YTRhNDc2M2FjMjViNTI0ZjdiYTBlYmU4NjVjIGxlZ2FjeS10cnVuaworNjk5NzUgYWMyNjc2NWZiMWJiOGIwNDYxZWY1YjU4YThlNDQwZGM4ZDUyMTIxYSBweTNrCis2OTk3NiA3MDJmMTg5OTE2MWUxOTQxZDM1MDQ1YTBjN2Y0MWFkM2JlZmRkMDdkIGxlZ2FjeS10cnVuaworNjk5NzcgNjkyYzhhOTg4MDI2NGIyZTZmY2YxMDIyYTdlZGFlMjIyMGUwNDcwNCBweTNrCis2OTk3OCAwMmVlY2RiMTczNTgwNzljZTA3MzZmMmVlZGU3MzRjMmRhZmVhYTVhIHJlbGVhc2UzMC1tYWludAorNjk5NzkgZjdiMDMwMTAxNjJjNDExN2Q3ZDdjY2FlZWZmNGU1ZDMxZmM0ZmNhMCByZWxlYXNlMjYtbWFpbnQKKzY5OTgxIDBlZTNiOWE3ZjIwOTdlOWRhNzc2N2Y5ZDc1ZTRiZWUzNzdhYTc0NDYgbGVnYWN5LXRydW5rCis2OTk4MiBkNzhiMjhhMzUyNGM1YWFlNmFhNWJlM2Q1YmU4YTg4MTMzOTBiMTc0IHB5M2sKKzY5OTgzIGMwN2Q3ZmQyNzQ2OTkwZTAyNzc5YmRiZTQ4NmU0YzA5OTY1NjhmZTcgbGVnYWN5LXRydW5rCis2OTk4NCA4ODczODU0YmI1ZjkwNzJlNWI3M2I2Mzc4NzQ0OGQ0MGNlNjcyOWRhIHJlbGVhc2UyNi1tYWludAorNjk5ODUgYzgwMDQ4MjE1ZGU1ODAwYjA2ZDM0ZmJmZjIzNmE5ZDlkMDkwMDA3OSByZWxlYXNlMzAtbWFpbnQKKzY5OTg2IDA1MmZiNTFmOGRjZjNiNzkyNTg5ZjlkODBjNjc1NmI5YzYxZDcwNWQgcHkzaworNjk5ODcgM2VjZDQ4NDc1NmIwMjNiM2ZhODAyNDc4NDBjN2IzODUzMzBhNjRhYiBsZWdhY3ktdHJ1bmsKKzY5OTg5IGU4NzJmNTg3ZjE5MDFhNzQyOGU5ZWFlYjliZjkyNTU3ZDhlNmUzM2UgcHkzaworNjk5OTAgZTk5YjU2ZGE0MzJhZjZkMWQ1NmIzMjE3Nzg0ZTkwYjdkMmE4YWZhZSBweTNrCis2OTk5MSAzMjNhNWE4ZDEwZmM4NjAwMmI5MzExZjVhZTc4ZTM4OTFlMGUzNGE1IHJlbGVhc2UzMC1tYWludAorNjk5OTQgNjk4MTc1ZmU4YjNkZTk5MGQzYjZiNzJjY2M1ZWEwMjQ5MjY2NjRjZCBsZWdhY3ktdHJ1bmsKKzY5OTk1IDNmNzNiN2FmMTMxYzE1ZDI5N2JkMjYzMWQwNDZlNTcyOTM2MzNmY2EgcHkzaworNjk5OTYgMzcyMmNlNDU4MzE4OTQ3YTlmMjViZDg4OTliZWIyMDZjZGRlNjU2YiBweTNrCis2OTk5NyBhMWIzZDAyMTY4MjBhOWQ2MjgxODcwNTA0NmM3ODJhODFiZmJmNjg4IHJlbGVhc2UzMC1tYWludAorNjk5OTggNjMyNjY2NjkxZDNkNDgwODMwNTNjNmQ4YzA3YTkxNTFlNDgyZWI5MSBsZWdhY3ktdHJ1bmsKKzY5OTk5IDU4YmJlYjMzZjU4MzMzMWM2NjA4YWZmYTYzMmE3MzFkMWE5YmYwODggbGVnYWN5LXRydW5rCis3MDAwMCA3MTJhYTViYjdiNDhkNWQ3Y2VjM2EwYzk0MDdmZTI3ZWQzZmVmZmVjIGxlZ2FjeS10cnVuaworNzAwMDEgODYyMjg5NDdiNjVkMWY5MDZmODhkMjMzZjNmMGI1OGRhMmY3ZTg0YSBweTNrCis3MDAwMiAxNDlkYzRiYzhlY2EwMzEyMzA4NzYwMWNlMGJmY2E4NThkZDk1MjFlIGxlZ2FjeS10cnVuaworNzAwMDMgOGI0ZGExZjQ5Mzg0NWNhMDc4MjMxMDIyYTkxY2JjOTFmNWNhOWM5MCBsZWdhY3ktdHJ1bmsKKzcwMDA0IGYxNzA3MjllMzAzODJkOWMwMjU5ZWZiNzExN2U1MWJmYzZlZjczN2YgcmVsZWFzZTI2LW1haW50Cis3MDAwNSBmMmU2YTVlYTEwZmUwYTA5NjhhYmIwODgyNTg5N2I0NzUyY2RjNWUzIHB5M2sKKzcwMDA2IDM2OTVjYWZlZjU4ZDkzNDRlYTI5Y2E1Njk3ZGFlZTBjMDkwNzVkYTEgcmVsZWFzZTMwLW1haW50Cis3MDAwNyBiN2IyMzg4N2ZiZGU2ODE1MGU3NTRkODdhNjI2NGM5NTRlNmNhMjBlIGxlZ2FjeS10cnVuaworNzAwMDggZWMxZjhlYjRkYTU5NGY1ZWQ5NDA3OTRiNDgxNjdlZDM2MDUyY2ZhNiByZWxlYXNlMjYtbWFpbnQKKzcwMDA5IGU5ZDAzZjZiMGQ1OTA1NmZhOTU0NmExZTI3NTVhMjEyMjU3ZmZhY2EgcHkzaworNzAwMTAgMjI4Zjg5YWU1NWIxMDA4MjdiYzA5MDU5YmZkMzY2NjA2NTQxMjRlYSByZWxlYXNlMzAtbWFpbnQKKzcwMDExIDJiNjBiNDY1MTNkMjYzZjkyMDVmYmY0Y2Y5ODg1NjdkN2U4ZTgyYzEgbGVnYWN5LXRydW5rCis3MDAxNSBjNGYyN2U1NDZjZjUxNzVlNTJkYzM2NTdiZmRjNWZmMmY3MTM5MjBjIHB5M2sKKzcwMDE2IDEwNWE1MzE3ZTY4ZTEyOTA5OWZmOWU5NDFlMjBkZTJmZjM5MmY2ZGUgbGVnYWN5LXRydW5rCis3MDAxNyA4YjY4OTY4ODc5YzcwZGYxMGEwMmUwMmUzYmE2NjkzY2NkMzM4NmQyIGxlZ2FjeS10cnVuaworNzAwMTggMTY3M2Q5NTczMTFhMGJiNGE5MzNkNmJhNGFjZmJiMWI5OTBlZGZhMiByZWxlYXNlMjYtbWFpbnQKKzcwMDE5IDRmZDgwZTY2YjEwNzIyZjNkNDBmMzc3NDUzYTJmMTY0ZDc2MWFjNGUgcHkzaworNzAwMjAgZGIxZGJmMDU3MTQ3YTRhOTk2NDk5YzdiMWIwNzNmOTE4MzFmZjlkOCByZWxlYXNlMzAtbWFpbnQKKzcwMDIyIDg2NmY3NDdjMTk2ZjEzNzRkOWRmZjA1NWVkOGRmZGIzMWUyOTNkMWEgbGVnYWN5LXRydW5rCis3MDAyMyA4MDAzYTJmYjYyNWJhMTAzODdkYzkxMWU1OWEwZjYzYTI5NzY3ZmNjIGxlZ2FjeS10cnVuaworNzAwMjQgNWRhYzA4MWU3MzBkMDgwNWNhNTQ4ZDk1ZDgwODg0OWY2M2M1ZDA4MCBweTNrCis3MDAyNSBlYjAzZTVhZTcxMDlhNjk3NGNjMjE4YWRkN2ZiNTdhMmEyZDdmYTg4IGxlZ2FjeS10cnVuaworNzAwMjYgODM5OTgzNTk1MzM4MjkyYTM0MGQ0NjAzNmI0NTg5ZWUwZjc5ZGVlYyBsZWdhY3ktdHJ1bmsKKzcwMDI3IDFmODQ3MDZlODE2YzJlNzBlY2Y2MDI2Yjg2ZDc1NGIxNmQ4MjkzMjcgcHkzaworNzAwMjggMWYwZGU0OTRiYzEzMTA3NmQ0NTRlMzFlM2NmNDdlYjI2M2I3MjIyOCBweTNrCis3MDAyOSA5YjYyY2I2NTM4OTIyNzY1YTgyNGM5Y2I0NWM3MTlhZmU1OTdiZjQ1IHB5M2sKKzcwMDMwIGE1ZjAzNzE4NTBmZjU0ZjQ1ZjJhMjc5ZTYyMDVkM2RiNWUyNWNmMTggcmVsZWFzZTMwLW1haW50Cis3MDAzMyBiMzA2YzcyZmZkNzAxMGVkMWE2Yzc2N2Y5ZjRkMWU4YjQ0Yzc0ZTAwIGlvLWMKKzcwMDM1IGQxNTU2YjgxOTVmMjhhZDQ1NzIzNmU5OTkzMDViODAyMzdmN2QyMGQgaW8tYworNzAwMzcgZTA5NDJjNjc1MzcyOGI3NGJmNmNjYWE5ZjFmZWQwZTkwYzMyMTk1MSBweTNrCis3MDAzOCBiNzFkZjQ0ZDViYmYwYTZhYmNhMTIwOGNiY2FiZmNlYjM4ODAxYTA1IGlvLWMKKzcwMDQxIGZjODNjYTFhYzExMDg4MTNlMWFmZWM0ZGIwMmRjMjMxMjljNmY5ODMgaW8tYworNzAwNDIgMzVjMWQ1MjYwN2M4NGY5ZjcyMTY2OWU2MzExZmE0Yzg4ZTZjOGYxMiBpby1jCis3MDA0MyBkMjQ1MzNmYjNmNDdhMTlmZDA0ZGNhYjM2ZjZiMjE5ZjAyZTAwNzNhIGlvLWMKKzcwMDQ0IGY3NWZiOWY0NzFkMDliMjVjZGRiMGM1ODVkNjVlMmVmM2VmMGNhNzYgaW8tYworNzAwNDUgMzE0N2IzYjc4ZGNmN2ViMzA1NjI2ODQ5ZmQzYjI1NTlmNTg1NTllOCBpby1jCis3MDA0NiBhMjY1ZjU5OTYxZjY2YTNkZWJjNDMzZDE0ZTUzMjlhYjEwNTNiZWQ5IGlvLWMKKzcwMDQ3IGM4NGRjYWM3ZTY5YTE4NTBlODVmZGM2ZjdkZmMwMTM5ZDc2MGJjMDAgaW8tYworNzAwNDggZjMzOWRhODM4NThkOTkxMDQ0NDRjMDA3YWM5Y2YzN2ZlN2NkMTFkZiBpby1jCis3MDA0OSA3ODlmZjhiZDE5MGE1YjgwMTVkNTE3MjI1OWI4NmUwYTExM2Q5YmRlIGxlZ2FjeS10cnVuaworNzAwNTAgYmU1YTljODRmNmJjY2E3ZWM0OWFkNmQzMjgwZWEyNTFkMDUxOThjMiByZWxlYXNlMjYtbWFpbnQKKzcwMDUxIDIwNjAzODEyMWFkZWM5NzU1MzU3YjM1MGZiZjgwMjNhYjNjYzhjOTcgcHkzaworNzAwNTIgOWRlNWQ2MmFkNDAyMjhlZjYyZTI3ZWNhZThhZTc0YTQyZDQzMWM2ZSBsZWdhY3ktdHJ1bmsKKzcwMDUzIGJhNmMzMDZjZjJjZWU3NzFmY2MxNDI5NTQxZWNmYjUwNzY0NmM4YWMgcHkzaworNzAwNTQgOTAwMzdmOTdkODcwN2JjZmRkZjgwODNlZTUxMmM1MGVjZWQwNmE4NSByZWxlYXNlMjYtbWFpbnQKKzcwMDU1IDc1OWRiYWNlNTFkMmVkMWJlZGI2NDA1NGFmZTJjYmE2YTFjY2MwMjQgcmVsZWFzZTMwLW1haW50Cis3MDA1NiAyOWQ2NTJlM2YyZDMyYWI5Y2Y4M2JiZTQ0ZTZhYmZiOTlmMjAyODZhIGxlZ2FjeS10cnVuaworNzAwNTcgMGU2ZmFmMjdiNTMxZjI3M2UxNzIyNmM3OGU4NDAzNmJhYmI1MjlmOCBweTNrCis3MDA1OCBjNjRkNGE4YWUyYjJlY2I4MDlhYzZkODVmNGU1YzM4NmExN2VhMzEyIHJlbGVhc2UzMC1tYWludAorNzAwNTkgMmEwZjg0YWM0OWYwOTAzYzMxZGQ1NTlhYWUwNDVmODQzYzYyZWYzYSByZWxlYXNlMjYtbWFpbnQKKzcwMDYxIDY3MjQyNWJlMzg4YTY5MjFkYzhhNzZhYmY4M2Q0MTkyY2ExZjY1ZDggbGVnYWN5LXRydW5rCis3MDA2MiA0ZTE1NTYwMTI1ODQ1ODNhMTg2ODliYzViNzg3MDZiMjY2N2MzZmNlIGxlZ2FjeS10cnVuaworNzAwNjMgNzllNjZjMTFkYzgwY2EyYTBhZDgwYjA1ZWE3NTQ5M2UxOTI2ZGRlMiBweTNrCis3MDA2NCBhZTIyNjMxYTc4N2M0OWI5ZjQ5ZTE1MmQ4OWVhZmJmNWFlZTA4ZTcxIHJlbGVhc2UzMC1tYWludAorNzAwNjUgNjc2NTY3ZTJhNzExOTIxMjZmMDM0MmRjYTVmY2E3YmI4NzA2MDY2NiByZWxlYXNlMjYtbWFpbnQKKzcwMDY3IGQxYTMxNGUwZWZmNzIwMDM1ZmJkNDUyMjBjZGY5YThlN2RhMzU3YWEgaW8tYworNzAwNjggNjAxMWMwOTJlMjEzNDZlZTdiMzViNjY0ZmM1MzM3YjYxOTc2Zjg1MSBpby1jCis3MDA2OSA3ZmFjYTY5NThkYWMwMmRhYjkwMzgzY2M3MGQ0NzY5YWY3N2Q0MzYwIGlvLWMKKzcwMDcwIDBhZDNkZTIxNmU4M2U0M2ZmZWE1ZmE3ZTYzMGZjNmNjNzI0NjVhYzggaW8tYworNzAwNzEgZWY4ZmU5MDg4Njk2OGIxZWI0NjhjYjkxZWJhZTEwM2Y3NzNmYTE3ZiBsZWdhY3ktdHJ1bmsKKzcwMDcyIDc1ZmY2NjliZjk5NmRlYTlmMGUzYmNiODZhNTQ0MzZkYmNmM2YyZGYgcHkzaworNzAwNzMgYjQyMTQ0MWVlNjc5YzVlOGMzYjEyNzRlNWYxMjExYzY4YzY1MTQ1NiByZWxlYXNlMzAtbWFpbnQKKzcwMDc0IGU0Mjg3ZDhjOTc0MTdhZTUyNjBiY2M5MjViYWFhNDcwM2JkN2E1NWIgaW8tYworNzAwNzUgOWYzMDAzNjEyNGY2NzhhMDM2ZTBhMDFjMDM4YTdkMThkYmQ3ZGVmYyBpby1jCis3MDA3NiBlMWNlNjY2ZDc0MDVhNjM3ZTQwODVhMTE3NGRiMTJmNzcxNjBjZjFjIHB5M2sKKzcwMDc3IGZjMmE2ZjZkMzZhY2E1MWU1YzI2MjVhY2U1MjkzODZmNDFlOTk4OGMgcHkzaworNzAwNzggZDcwNzczYzlhZGFkMmQxYTc5MGEyYjQ0MzA0ZDE1NWNiNTY0MDc3MCBsZWdhY3ktdHJ1bmsKKzcwMDc5IDVkZjY2ZGZhNmY2NGFjNjZiMjNhOTdiMmQxMmZjZTllZjdiMWFiMTcgcHkzaworNzAwODAgMmE0NTgxMDZhZmJmZTM1Yjk2ZjM4MGExMzAyZDAwZGUwMDUxYTA3MiByZWxlYXNlMjYtbWFpbnQKKzcwMDgxIDJjNTkwM2EwMmIzNjNhMzhlM2M4MDQ5OGU2Yjk4YzIwMjliYTE1NzkgbGVnYWN5LXRydW5rCis3MDA4MiA2MTJmYzZlZTY4Zjc0NTE4NTk5OWVmN2FjMDM3MzQzZThhZGU1ZTJkIHJlbGVhc2UyNi1tYWludAorNzAwODMgYjc2MzJkZjExMjFmYjcyMzVmZmIzM2Q0ZTBhMTg2ZDFhNjU0N2M2YiByZWxlYXNlMzAtbWFpbnQKKzcwMDg0IDZmZDIzMTkxN2VmN2MyMzFlMzhiNGIzNGFlNjRmYzRlNGJlM2VkZGEgcHkzaworNzAwODYgYTZjMjRhYWNlOGNiZDc0MTMyZTZkYzUzNThlZjY1NzI4ZjJmYmVjNiBsZWdhY3ktdHJ1bmsKKzcwMDg3IDJjZWIyYTc2ODgwZDVmZjMxNDBiOTVmYzExMjBjYTY5ODY1Nzc0ODYgcmVsZWFzZTI2LW1haW50Cis3MDA4OCBhZGM5YmI0NGVjNDcxMDFkZjE5OGRhYWM3ZTBiMzJkMTQ0YWJjZTk3IGxlZ2FjeS10cnVuaworNzAwODkgOTkxOWMxZjQ3OTVlZjg1MTljYjc0YmE5OGU1N2Q2M2EwMjE4ZjcxNyBweTNrCis3MDA5MCA4ZjVkOGYyN2M2ZmNkYzlkYjUwNTA5Mjc3NzcwMTZjZjVkNGVhMTJjIGxlZ2FjeS10cnVuaworNzAwOTEgZGNkM2JjMmUyMzc3M2MwMGQ4ZGNkYjQ3ZmM2NWI5ODgzM2U1YmFjNSBweTNrCis3MDA5MiA2MGZjZmQxMzdhNzI5MmNmMmZlYmRiNjY2NWZhNWQ0MzdlNWMzODJmIHJlbGVhc2UyNi1tYWludAorNzAwOTMgMDhhNGEzZjljNTBlOWMwMTU1ZDk4NmI0ZjVmMGQ3ZjljNGEzNGI4NyByZWxlYXNlMzAtbWFpbnQKKzcwMDk0IDBiOTdmZmI4MTFhMDEyMTJhNzU0ODQ0MGJlOWMzMjU5NDg0MWIwOTUgbGVnYWN5LXRydW5rCis3MDA5NSAxOWMxYTFjZWIxMjk1NTllYzM2NGE0ZjU4Njg4OTIwZDllZmE5ZjM4IHJlbGVhc2UyNi1tYWludAorNzAwOTYgYzJhOGE1MmI4MTFkYzhjNWQ5ODhiN2FjNjc2ZDkxYmJjNDIyNTFjNCBweTNrCis3MDA5NyBkZTExM2I2ZDI2ZDMyNzQwMWMzODc4MmNjY2M4YTUzZjhlYzhmNDFiIHJlbGVhc2UzMC1tYWludAorNzAwOTggZDVmMTM0YTNhODE2YzcwOTMxZjE1NmMyNzA3OWI3MGEzMmZhYjk2ZiBweTNrCis3MDA5OSA4ZTAzYmZlN2VmMzMxYTlhMzk0NDI4YzdmM2I4NDI4MzAzYTMwNzViIHB5M2sKKzcwMTAxIGM5MTBmNmUzYmIyODcxOTgxY2JhMzhiNDI1OTAyOTQ2NzFkODBjMjMgcHkzaworNzAxMDIgY2E4N2M0NzA3YmZkZGQ4NzM5MGVhMTgwZWMzYmQyMDc2MGJjOWFhNSBweTNrCis3MDEwNCA4NWFjYTQzZGFiYzQ5MzAzMmNjOTQyNDU1NjI0Y2Q0YjhiN2YyYTM5IHB5M2sKKzcwMTA1IGQ1MTNjZTI5MWZiZDIyZmE4NmJiMWE4YjFlODY5MTM1ZTUyNzhiYzggcHkzaworNzAxMDYgZGIyOWEzZmJjYmEwZmRmZmQ5NWFlYTk4NGZhY2IwMjQ5NjFlZTYyYyBweTNrCis3MDEwNyA4NzExNWM3MjcxMDJiNDIwNTYyY2RiZThhODc0YWRjMDRjNjE1NWJmIGxlZ2FjeS10cnVuaworNzAxMDggMmQ2OWQwZDNhOWNhNWUzZjA2NDkxNTg2NTA0YmIxODA3Mjk4MjExYSByZWxlYXNlMjYtbWFpbnQKKzcwMTA5IDljNTZlYjE3ZjMzNGZjZjk1OGY0NmYwYWQ2YzQ5NmUxM2UzM2U4YTEgcHkzaworNzAxMTAgNGRhNWYwZGVkMzYyMmUxMmUxNmI5YWI4ZmE2NGFjOTgwMGNjNjljNSByZWxlYXNlMzAtbWFpbnQKKzcwMTExIDExNmQ5MGVmMzE2NDk0OTQ5OTQyNWJiOGMzNTYwNzE0NWUyZjcyYTUgcHkzaworNzAxMTIgMzc0YTlhZTVkZDBmNDJhNGM0NDZjY2Y1ZDI5OWI4ODgzMmJmNjkzNiBpby1jCis3MDExMyA4ZmUyOTg4Y2Y1NTA5MmM4MzJhODBkZWJiZmNlZWQ4MGM5ZjM4YTY1IHB5M2sKKzcwMTE0IDdiMTc0MWQ2ODA5ZTg5NjNiNWE4ODg4YTcyOGNhMWJmZWY2OTljMzQgcHkzaworNzAxMTUgMDQ1ODczMGViMDM4Yjk3ZmY2MjhjYzY1ZGM2NDFhNWM3MjZiMDUwNCBpby1jCis3MDExNiAxN2VhMThkZmNhYTU1ZDJmYTZjZTQ1ODAwOTc2YWIxMzMzMTFkMDk3IHB5M2sKKzcwMTE3IGQzNDJhNzI1YjJkNTg5OGJlMzViNzU1NDhlZmM5MTAxYjdjNWVmZmYgcHkzaworNzAxMTggMDM4MzIzNTZjMDk2NzQ0OGUxODk4MTYyODk4MjY4ZTEwOTVmODc1MyBweTNrCis3MDExOSA2YzA4YmZlNzhmZmZlYjJiNjU0N2FmNDg1OTJhM2MwM2U4Y2FjYWYwIGxlZ2FjeS10cnVuaworNzAxMjAgNGE0ZGE5NjhkZTJhOThjODc1NmY5ZWEyYTk0OWZkMzVmMDMzZjdmZiBsZWdhY3ktdHJ1bmsKKzcwMTIxIDBjNjM1NTc0YjEzOWUwY2NkYTI4MzI5Mzg5MjkwN2Y1MWFmYjgxNjQgbGVnYWN5LXRydW5rCis3MDEyMiA2YjFiMmU3YTA2ZTk3ZDU5ZjRjZTNlYjZlZTI2ZDRmYWEyODg1ZmQ4IGxlZ2FjeS10cnVuaworNzAxMjMgYjM3M2I5OTYyYzM1YWMyZDQwNDUxYjM4ODRhYzJhMmE3YzNhNGE5NyBsZWdhY3ktdHJ1bmsKKzcwMTI0IDRkMDc4ZDUyMmYyNTk3NTJkN2E2MTcyN2FjOGNjYzgwYjlkODcyZGQgcHkzaworNzAxMjUgZmQwOGU5NDQ5YTQzODgzZDRkNGQwYzY1MDA3M2JjNjZiYWJkNDU4ZiBweTNrCis3MDEyNiA4ZjdiZTQ4NzdhNjA2ZjAwYTk1YTVmZDUzOTE1OWYzMWMyMzk3ZDM2IGxlZ2FjeS10cnVuaworNzAxMjcgZThhZjRlMjRmMDhmOGQ0ZDZmNWZjYWZhMjI3Y2JlNzdlYjUzZDU1OCBweTNrCis3MDEyOCAyNTk2ZGRkYmQwNTdiN2RmMDJmNWYwNzM5Mjg1ZTAyNjc0ODgxMTEwIHB5M2sKKzcwMTI5IDVhZDg4YjkxOTMxOGE1NDUzNTM4ZjdiZjliYjdlMmRmODYyM2RhNTkgcHkzaworNzAxMzAgMGE2MDliYTU0ZjVjNjU5NDVjNGY5OWY4NjRlN2JmZTkxMTE5M2ExYyBweTNrCis3MDEzMSA5ODI1MDI4MjZmNzg5ODc2NmUyOWRkZTYwNWNlMzQxYjM5MTA1Yjk1IGxlZ2FjeS10cnVuaworNzAxMzIgYWU3MWRmOTM5NGRhYzhiY2QwMjE1ZTA2MDRlNjYwYTdmYTU0ZWQzNiBsZWdhY3ktdHJ1bmsKKzcwMTMzIDExNzcyNTg2YmM0Mzk3ZWQ2ODVlZjRjZWFlYWJjZThlNmYyMjE4ZDAgaW8tYworNzAxMzQgNzM4ZmFkMzhhNGJmZTViNjJjYWM4MTg3OTEzOWMwYWY4OWEzOTliNiBweTNrCis3MDEzNSA1YjRlOGY0ZTljYmQ2MmU5OGQ1Y2RkNGRjZmQ2ZjgxOTRkNTcxZjFlIGlvLWMKKzcwMTM2IDYxZDIwZTkxOWE5ZTY2Zjk1MzM1MmI0YWYyZWI2ZjIyZTZjMjU1YzIgbGVnYWN5LXRydW5rCis3MDEzNyA4MDIzM2RmMjRmOGNhZDVhYjJlZWJlZDQyNGEyMWRlNTk0NjRhYWUyIGxlZ2FjeS10cnVuaworNzAxMzggOTIwYTQxZDU4MWI1OWVlZjM0Mzc2ZDBiYTc1YTdlZGJkYmY1OGY1YiBweTNrCis3MDEzOSBlNjczZjkzOTI0MDJkNzU1NDc3NjdiZTQyYmI2Yjc1NGU1OTdkNGI2IHB5M2sKKzcwMTQwIGM5NmUxYWI0ZGFiM2FhMDUzODdjNWI5OTg3N2VmYzc5ZGI4NTM5MzIgaW8tYworNzAxNDEgMzhhYTZmMzZjZTRmYzEwMWMxYzA5Yzc4NmJmY2VlMjAzODY0MGUzNiBweTNrCis3MDE0MiBkNzcxNzJlYjZmZTc4OWQzM2I5MTVjM2VhMmRmZGUzODgxMGE5YjhlIHB5M2sKKzcwMTQzIDNiODg1YjkyYWY2Y2RjZDQxODI0Zjk2NTkyYTA1NzlkODlmYmYzOTggcHkzaworNzAxNDQgNzdlZmJiM2MzMTEwYzAyOTc3NGY3ZmQ3Y2VjZWYzY2Y5OGQ3YTI3ZCBweTNrCis3MDE0NSAwMWY4M2JiNGExYzRkMmJmOTc2Y2UxMjY0ZTVmOGUzYzU1ZDU2ZGE1IGxlZ2FjeS10cnVuaworNzAxNDYgZjYzMmE0ZTZlZTMxNDJjZmRhYjcyMGFiNThlMzYyY2FmNDNkNGM1ZCByZWxlYXNlMzAtbWFpbnQKKzcwMTQ3IDcxMTE4NDVjMmY1ZTNhMjJlNTE5MGQyODRmNjA4ZmJjZTVkNTIzYjcgcmVsZWFzZTI2LW1haW50Cis3MDE0OCA3ZDY5MDcwYTNkNzgzZGViMGYxMjQwMWUwZTU4Y2I2MDJlYWY4ZTFmIHB5M2sKKzcwMTQ5IDc3ODU5OWNlODFhMTRjNjhhNmM3ZGJkOTViYjBlNzhmNmEzOGM3ODkgbGVnYWN5LXRydW5rCis3MDE1MCA4YTNkYWRjY2QyMDc1M2FhYTQ4NTdkZWYyMzYzMzgzZjIyZGRmOTEwIHB5M2sKKzcwMTUxIDcxZGFlMjJlMTgxZDk4M2UyOTRjYWNmOGIyOGM3OWJiNjBkYjkwNDMgcHkzaworNzAxNTIgMzA0OWFjMTdlMjU2YmIzMGI3OWYxMTM0YTM3YjY1N2UzMGQzYjc4YiBweTNrCis3MDE1MyA1OGRiNGRlYjdhYjE2ZDc3ZGEwOWIyMDU0NDI1YjFlZWI4NDFkZGE5IGxlZ2FjeS10cnVuaworNzAxNTQgZWJlMTA4MTBlYmVkZWNiZmZlYzc5NjhjZWVmOTFlZGZjOTY2ODUzMSBweTNrCis3MDE1NSAwMTU5YWMyYmM3ODdjNDk5ODM1ZGQ3ODQzMGQzNzYyNjAwNzcyYmM1IHB5M2sKKzcwMTU2IGUzN2JiMzAyNTVmMzExNzM2MDM5OWNjNDBiYWJjYTdmNzJhN2UzZWMgcHkzaworNzAxNTcgNDU2M2U2MTIwNTQ0YzA3ODFmOGVmNDliNmYwMTQ4YzI1YjU2ODUyMyBweTNrCis3MDE1OCAxOTRmZDQwMTkyMmU2MDdkYjkxMTc4Yzc2OTYzNjk3MGI5ZDI2ZmEzIHJlbGVhc2UzMC1tYWludAorNzAxNTkgZjg2NzBhN2RhMjI5NmIwMGJlOWE1ZDdhNzk2ODU5MTIxMmNkYThiZSBweTNrCis3MDE2MCA3NjhhZWVhMmJjMGZkYmEzNzNkMDUxZTNmNDk2OTNlMjBjZmJkY2YxIHB5M2sKKzcwMTYxIDU1ZjNiODgxY2VkMjYzNzFjNjk1ZmUwYzU1OTc2YmUyZGIwM2JlZDggcHkzaworNzAxNjIgMGE1MzNkYzFkZWIyMjc3MjQ5ZTFhY2I0YmM0MTM0YWE3ZjViODQ4NCBweTNrCis3MDE2MyA3NmE1NzliNmJhZGU5NWQxZWExOTRkNGY1OGE4MjgyMDdmZmJkZTk1IHB5M2sKKzcwMTY2IDBjMDI4Njg1YjQ0YzNiYjRhMTBiMTYxMmVjMGIwODkwNjA1ZmJjOWMgbGVnYWN5LXRydW5rCis3MDE2NyAyNDAyMzFhYzc5Y2ZkMDE3MWQwODc1ODI2ZjA2YzI3MmY3YzFjMGRkIGxlZ2FjeS10cnVuaworNzAxNjggZWIyYzM1ZGQyMjVhYjM0NDM5ODJkOTI2N2VjODA2Yjk0ODU3ZWJhMCByZWxlYXNlMjYtbWFpbnQKKzcwMTY5IGZhOWNjNGQ0MTg1ZjdmZDJjOWQxMjQ5ZGYwN2YzZGViYWEzNWMxYmQgbGVnYWN5LXRydW5rCis3MDE3MCBjZTJiNzU5ZGM3ZjM1ZjE2ZmI2ZDI0ZTgzNDdhMWE5YWZiYmMyNzZhIHJlbGVhc2UyNi1tYWludAorNzAxNzEgNGQwZDYxNWQzNzg0YzJkMTg0N2M0MzVkNDIyMTc4YzczYTA0Yzk2YSBsZWdhY3ktdHJ1bmsKKzcwMTcyIDI2MjljNDdmYTZiY2U0ZjQ4N2NjMzg3ODA3YWZhYWExMjhiMGIxZDkgbGVnYWN5LXRydW5rCis3MDE3MyBjOGE4ZWM4N2ZmMWYyZjNlMzI3MjJjMTAwZTQzNTczZGE0M2JhNzMxIHJlbGVhc2UyNi1tYWludAorNzAxNzQgNDFlNDA3Mjg2NjEwNWQ3OTQ5OTBmYjg1Mzk2M2U0NDUxMTkxOGMyNyBweTNrCis3MDE3NSAzMGVlYWRjNDY1MjBmYmU0NjZhZjY0ZmYzN2MxNTYyM2IzYmY1Y2IxIHJlbGVhc2UzMC1tYWludAorNzAxNzYgMzllOWEyMGI3ZDdmNTA1NGViZWQ5Y2IyNDQ5YTYxZjVhYmY2ZGVlZSBsZWdhY3ktdHJ1bmsKKzcwMTc3IGRjM2QyNDgyNGI2MDI3YTdjZjM3NTdhMmY2Yjg5OWYyZTRiNGJmMzMgcmVsZWFzZTI2LW1haW50Cis3MDE3OCAyNzYyNDRmZmNhZWVlMWNmYTQ2MmFhNTBmZWZkZGZmNWY2NmJlODhmIGxlZ2FjeS10cnVuaworNzAxNzkgNWYyNDVjNzAwYmJiMTUwYTVhYWI1MmNhNGJmZGJlMTZiNWNkNmFjZSBweTNrCis3MDE4MCA0YjU0MzFmYjJlOTIwMjFkYjhkNDI4NjRlMjEwOWIwNjI5YTMxNzk0IHJlbGVhc2UzMC1tYWludAorNzAxODEgZmJjNzc1OTc2M2IyYzhjMGJkNjczN2ExZDM0Y2ExYjEwOTcwZWMxZSBweTNrCis3MDE4MiBlZWFhODdmYzNiZmQwY2I3NWM3N2U5ZmUzMjYxNTA0ZmIxMjZmOTAwIHJlbGVhc2UzMC1tYWludAorNzAxODMgNzU3OTI5MjhmY2U4OWJjYTFlOGM1MDFkY2E3NzM3MGE0ZWY5YTFmMSBsZWdhY3ktdHJ1bmsKKzcwMTg0IDMzZTlhMTQ1ZmQzODM1N2VkNDJhNTJlYmY1MGNiMmU5OWE2M2Q4NjAgcHkzaworNzAxODUgOTliNjhkN2Q3YTg5MmYyOTlhMjA2NDFiZGM3MzQ3YjAyODczODQ5OCBweTNrCis3MDE4NiBmZGRlZTU0NTYwMTNhYzAxZTVmZjU5ZmI2ZWY1ZWY5MDkxZWFlOTk4IHB5M2sKKzcwMTg3IDFmYzFjNDFkMTM2ZjRiY2Q4OTZmYTBjYWM1YjIzMzc3NWVlYzZkNWQgcHkzaworNzAxODggZjQ4YWY3N2VlODRlMjA4MjhiZDUzYjY2YTJhYjBmNTdjZjRkMWZmMyBsZWdhY3ktdHJ1bmsKKzcwMTg5IDc5ZWEwNjY3NjA0YjM3MjJmMmQyY2QxNmEwZjA5OTYxZmY3ODAyZDggbGVnYWN5LXRydW5rCis3MDE5MCBjZGQzZjYwZDk5NzRmNDQ3NjljZjc5ZGM1OTc0YTk4YmFkMzE2ZGFjIHJlbGVhc2UyNi1tYWludAorNzAxOTEgMjc1YmJlZTE0NmFiMDViZjQ4N2YwOWI0YWNiMzQxOWM2YWYzMzc5MSBweTNrCis3MDE5MiBhOGI5YWEwMjg4OTliZTk1OTBiYTBiMGY4MzdlMjE0ZmJjNGE5MDYxIHJlbGVhc2UzMC1tYWludAorNzAxOTMgOWNkMzU1YTc5ODQ1NmY4MDgzN2JkODRiNDMzMjg4NGZlM2ZkNWY4MiBsZWdhY3ktdHJ1bmsKKzcwMTk0IGQwMWRjODQ3YjU4NjIxYzJlNTQ1ZDljYzc0NDMyMTlmOThkMTY4NjMgcmVsZWFzZTI2LW1haW50Cis3MDE5NSA3YjI3OTY3OGE2YTFkYjQ0YTA3OGE4M2I0NDVmOWRmMzE3MjA0NzU0IHB5M2sKKzcwMTk2IDI2OTg0NDUwYzdlOWE4MTg5YThiZWYwNzEwZTk3OTU0ZDAwYzA5YzQgcmVsZWFzZTMwLW1haW50Cis3MDE5NyBhZmVmYjc3MTY0YWQzYmYyZGMxNzRlMDdmNmQwYTllMTk0YjcwNzgyIGxlZ2FjeS10cnVuaworNzAxOTggNzc1ODI5Y2YwMGQyYWJlYzRiNGNkYjU2MTk1MjMxNDcyMGRjNGNhOCBweTNrCis3MDE5OSA4ZGJkMWI5NmZhNmI2OTBmZDdkYzM5MTVkMTBiZTJiNWY3OTE3NWQ5IHJlbGVhc2UyNS1tYWludAorNzAyMDAgYzc3MjM2MjZlNGUxMDY4MDgzN2E2M2NlMjRjMDgwZGYyZTNmNDRjNSByZWxlYXNlMjUtbWFpbnQKKzcwMjAxIDFmOWRlNTM5ODNjMTU1MTMxODBlMTM0Njc1NzJlNDY1YTFlM2JkNjggcHkzaworNzAyMDIgYmViYzRlZWY5ZTg5M2M0MDE5MmM4YWVhMmVkYzg5NjZhMTc5ZDFkNSBweTNrCis3MDIwMyA5ZmE3OTQ5NjQxZDMwMDliYjYxOTg1YWJlY2ZlOTJiM2FiNDdmMDY3IHB5M2sKKzcwMjA0IDRhM2I0NGMyMWI0ZjNkYTdjODJkNWI1MzIxZmE1NmEzMTg2ZmE4ZGYgcmVsZWFzZTMwLW1haW50Cis3MDIwNSAzYjlmNWZhOGJjY2Q5MWQyZDNkMjFhNGM3ZTE2M2JjMDNjYTU4MDQ5IHB5M2sKKzcwMjA3IGNhYmIwZGRjYjg4ZTRhN2UzMTBlZmE0NmU0N2RkMTIyMzUzMmFkNjcgcmVsZWFzZTMwLW1haW50Cis3MDIwOCAwZjZmNzg3ZjEwM2IyOGI0MzIzNTg2ZDE3MzQ0NjE0MzYyODMxMTM2IHB5M2sKKzcwMjA5IGFlZjVjZmU3MzM1OGQ0OGZmZGFkOTIyYjMxYjAwYzBhZjg3Mjg2ZTcgcHkzaworNzAyMTAgZjViODFiZTU5MTU5NDZlM2Y5MjI0ZDZkOWJiNmFiYWM5NWVkZjdhZSBweTNrCis3MDIxMSA5MGE2NjkxNWNhOTE5NzAwYTI0OTk1YTY2MGM2NjA5ZWY3NmYyZmVjIHB5M2sKKzcwMjEyIDQ2NTBlY2RmY2ZiNjQyMzdkMjljMjI5MjQzODMyZDRiZTgxMjlkZDMgbGVnYWN5LXRydW5rCis3MDIxMyAyYjJiNTFmMzA0MDc5OTc3ZmExODk1ZTcyMzBjOGI3ZGMwYjAyMTM2IHJlbGVhc2UyNi1tYWludAorNzAyMTQgZmNjNjIxMWUwZDcxMDVlM2Y3YmI5M2NhN2ExNmYxOTc3YWI0MTVhOCBweTNrCis3MDIxNSA2ZjBkMjExM2RkMjIyNjAwZWY5MGZlNDQ1OGVkYzJmZGY4YzAxZjk1IHJlbGVhc2UzMC1tYWludAorNzAyMTYgYTk5ZmE3NjcxM2ZjNjY4OWNlYzA2NTQ1NjkyMzJjZDVjMjk5ZGIzZiBweTNrCis3MDIxNyBiYmJjOTc0NmM3MGRjNDA2YjllMDhlZTNhNzA1NTJmOGNjZDFkOGMyIHJlbGVhc2UzMC1tYWludAorNzAyMTggNDMzZTExNmMzMzVkYmIyZWNjODYzMDUwNTlhOTY4Yzg5MjYyMDRkMSBsZWdhY3ktdHJ1bmsKKzcwMjE5IDExNDg1MGY3M2UzYTVlYmU3MTVlMjVmZjJlMWExNTdhOTU2NWRiNWYgbGVnYWN5LXRydW5rCis3MDIyMCA0ZTc0NDkzNDhjMWE0ZDVkZTExMzZkODRiZDE4YjVjNTI3ZWU5MjlkIHJlbGVhc2UyNi1tYWludAorNzAyMjEgMDNjODBlMDc0MmMzNDQwOGIwMWY1MTk1YzM0ZTkyNjc5NzhiNGJlMyBweTNrCis3MDIyMiAxMDY2Nzc2ZTI4MjAzNjI0Y2MxOTJkMTM3Mjk5NzliOGJlMjY1Y2E0IHJlbGVhc2UzMC1tYWludAorNzAyMjMgYzc5ZWM2M2U2YzA4ZWQzZTk0NmEzNDJkYmUxMjY5NDhkNTAzMDM2NCBsZWdhY3ktdHJ1bmsKKzcwMjI0IGI5Y2Q2OTM5MjY2NjdkMTg2NGQ5ZTJlNzdiY2JkMTAzOTdlZDZjMmEgcmVsZWFzZTI2LW1haW50Cis3MDIyNSA2ZGJiMmMxYzA5MDA5ZDY2MjIwZWU2ZDIwMzkyMGFjNjMwZDdkYjBlIHB5M2sKKzcwMjI2IGY1MTQ1YWJkNGJhMjZiMTBhOThjZDYyMTM4NjhmNGQzZWUzZmE1MjYgcmVsZWFzZTMwLW1haW50Cis3MDIyNyBlOWU0NmFkZTYxYzc4Njg0OTdkM2ZmMjg3ZjUwNGNhZTM3NmYwMWQyIHB5M2sKKzcwMjI4IGE1ZTMyYzA2ZTE0YjEyODdjOGVjNjkyNDZhNTk3ZDVhNmZhYWZhY2YgcmVsZWFzZTMwLW1haW50Cis3MDIyOSBhODlmZGJiMjNhNGE3ODU2YzdjNmQyMjNmODhiZmYwYWY5YTFhM2QwIHB5M2sKKzcwMjMwIGJjMWNlMzY4OTg2ZTQ1YjFmYWY5NmY5Mzk5NWRmNDZiY2Q3NWU3YjggcHkzaworNzAyMzEgMzZkN2ZhYTVmZjk2MTRlNjI3ZGYwYmRkNWM2N2M4ZGJmMTc1ODA0NSBweTNrCis3MDIzMiBhYmE0NDA0ZjVkOWZmNTE5ZWVkOWJmMzBhMGU3MTZmMTYxMDk1MmI1IHB5M2sKKzcwMjMzIGJmYzJmYTRjODQ0NDliNjFkOWRiMWEzN2ZiNmI3NzQzYmE1ODczMDQgcHkzaworNzAyMzQgZjdiMDZhOTY1OWI4NTMwNWE4MWFiMzA1OGJkZGZiZWRkNTRkOGZjOSBweTNrCis3MDIzNSA0MzcwNDRlNjJkM2QzYmQ0OTQ2NTI0MzBhNTBmNjk5N2FjMDg5YTFjIGxlZ2FjeS10cnVuaworNzAyNDQgOWYyZjg2ZGY1YjI2NDhjYTY5YTFiNzU5YWZkNzhmOWM5ZDYyODg2MiBsZWdhY3ktdHJ1bmsKKzcwMjQ1IDU2OTgzY2ZkZjVkNGUyZThkOThkYWUyYTA4Y2ExNWRjMzY4NzNkZDYgcHkzaworNzAyNDYgZGNlMjhjNmI5ZTg1YTI4ZDhkYTJjOWUwYThkNmE5NzAwYjA5MTAzOSBweTNrCis3MDI0NyAyMDMzZDQ1YTViOTk2ODFlMTQwZGZhM2M0MTRhNDk0MTA0MmFjYThlIHB5M2sKKzcwMjQ4IDg5NWY2OGVjYjA1NWMzZjE1NjY1NjAwYTUzMTk0NWMwN2M1NGNlZmQgcHkzaworNzAyNDkgODM2ZTRkYWRmNmQyY2M2NWI4ZDBmNDU2ZTk0MmIxMTUxMzQ5MmZiMSBweTNrCis3MDI1MSAxMDQ1ZmQ2M2ZhNzMzNWZmOTE1YzU2ZGI4NTQ1YTZjOGU0M2ViMjFkIHB5M2sKKzcwMjUyIGNmMDkzYTc2MzA1MzNjZmJkYTQ3OGNmZWU3NTJiMWVlNTM2MWUyNmIgcHkzaworNzAyNTMgNjUzNzFkZjQxYWNhNjI0MWVlODgxMzA1NGIwYjdlNmM0NTk4NzFmYyBweTNrCis3MDI1NCA1NTQwNzQ5YTI5YmI4NzMwNmFjNWY5M2Y4OGM5NjRhYWUzMjE1MDJlIHB5M2sKKzcwMjU1IDcwZGVjYjU4MGRkOTFmMGNhNzNkZjEyYTZlMDQ2OTZlYzRhNDI2NWYgcHkzaworNzAyNTYgYzA2ZjAyYTVlOTYyN2IxOTA4NWY2NjNlNTE4OTg4NGY1MDU3NTI0NiBweTNrCis3MDI1OSBiYzAyZGUyNzg3NDkwM2FiZDkzMGE0NDE2Y2VmMDA2ZTJjMzliMTFhIHB5M2sKKzcwMjYwIGI5YmQyZTNmNzliYThhNjU4NTI5OTY2MmE1NDdkMDU2ZmVlYTZiMGYgcHkzaworNzAyNjEgNTk4MjUzZGIxZjVkMTEyYzM4MjNlODRlMGJkZDMyNWJhYTVhYmQ2MiBsZWdhY3ktdHJ1bmsKKzcwMjYyIDRkN2Y2M2FjOWQyNDY1ODg4YWVkZWM0NjA5ZTY2OTA3ZmE1ZTIxYjIgcHkzaworNzAyNjMgYjFlY2ZmNWUyNzA0MDQyMmMzNmE2OTk4MjI1NzA0NjkyZTkxYmFkZiByZWxlYXNlMjYtbWFpbnQKKzcwMjY0IDUwMzk3NmNlMzM3M2U1ODliYzEwYmNhMDM4MjYwZTdjNDkxZDE0MjEgcmVsZWFzZTMwLW1haW50Cis3MDI2NSBmNDY3ZDQ3ZjZkZTUyYWRmNjNmZDRkMWQyMTVhYjJhYWJmNmVjNjRmIHB5M2sKKzcwMjY2IDdmY2I3ODVlYzBmNTI3ZDQ4YjIwZGNiMThkYTVlYTkxZDJjZWY1MGYgcmVsZWFzZTMwLW1haW50Cis3MDI2NyA5N2FjODNlNDUyNzA2MWI5MWNhMGM3ZGZkYTc2NTYwNDhkMzcyYTMwIGxlZ2FjeS10cnVuaworNzAyNjggNTQ1N2U0NmQ5ZGZkNDYyOWE2ODE1NTdkMDY5YzNhYWEzNjcxZDE4NSByZWxlYXNlMjYtbWFpbnQKKzcwMjY5IGMxNTQyM2Y5ZmFjMzUwZjM5MjhhMTY5YjhmMDA1ZTczNTBjNDE5MjAgcHkzaworNzAyNzAgM2U2NzZiZjI4MzEwM2VlMDE2ZjdjOTgxODM3ZTY5YjZkYWU0MjM1NyByZWxlYXNlMzAtbWFpbnQKKzcwMjcxIDYzNDU2ZDJiZjVhMDg5MTdjOTExYzM5NjFhNDYxNTZlNzI5YjYxMGQgbGVnYWN5LXRydW5rCis3MDI3MiA1YzkxYTZlMTg1NjRmMDRmMzM0ZDZiMTZlNzBkYWY3ZjM5NjI2MzI4IHJlbGVhc2UyNi1tYWludAorNzAyNzMgYmNmYjdkNjc5MTYxNTliY2ZhNDU3NTJhNDRmNmViY2EzYzEwN2YxNSBsZWdhY3ktdHJ1bmsKKzcwMjc0IDdmNzA3NDkyOGM2ODE0MmQ4MDUyNjc0NWI5YTU1ZjdiNTc5MGVkODMgcHkzaworNzAyNzUgMWE4MzkxY2M0YjQ0Y2Q2NmVhOTg0MjU1YTFiMGJhMWE1MzFkOTNhOCBsZWdhY3ktdHJ1bmsKKzcwMjgwIDc5ZmUwN2UxMzM4OGVjN2E4NDhjYTIyZTQzZjU1ZTUyNzllNmIzYWQgcHkzaworNzAyODEgNDI1NTNlMzVmOGU0YjQ5NjY1YjliMDRlMWVlODY4NGVlOTA3M2UwZSBsZWdhY3ktdHJ1bmsKKzcwMjgyIDNiNDM1NzdlMTk3MWM4YzEzODBhZjBjYjJhMTdiMzlhZGY5YzdhNDIgcHkzaworNzAyODMgN2NiZDQ0YzIwM2NmOTVjYWE3NjA0YmZmYzU0NWMyZWViOWI3MTA3YSBweTNrCis3MDI4NCA4ZWQzY2JhYzE2YmY1NjUzZmE0MmMzMjI4Yjc5YWE5YzRkN2RhOWZjIHJlbGVhc2UzMC1tYWludAorNzAyODUgZGFiNDU5NzFjNTY4ODQxZDIzODUwODc2YWY0MWY0MTBlODgyMGMwZSByZWxlYXNlMzAtbWFpbnQKKzcwMjg2IGY4MDRiOGEyNTExNWU3YjIxZWEzMTQwM2YzZmEwMzY5MGFmN2E0M2IgbGVnYWN5LXRydW5rCis3MDI4NyBhZTMwMDZjN2Q1YjAxOTljNTZmODBlNjRlNDZlNzFhYjdkNWRjYmZkIHB5M2sKKzcwMjg4IDg5ZDhhZjI1OTM1MzI3NGU3NzAxMDE5YmRhOTUxMDZjZjE5NjEwMzggcmVsZWFzZTMwLW1haW50Cis3MDI4OSA1NjNiNGY4ODNlZDg4YjE2NjI3ODdjYjkxMDVkMGM0MjM3YWVkYzlkIHJlbGVhc2UyNi1tYWludAorNzAyOTAgNTRjZmFjYWM2ZDBhMTU1ZDE4ZWQ4ZmM2M2FlODQ3YzQzZDc3NDEzZiBsZWdhY3ktdHJ1bmsKKzcwMjkxIDAzMDgwZmEwOGRmZTdjY2RmMTViY2UxNWI0YzcwYmRjMTQ2ZGZjMzAgcHkzaworNzAyOTIgNWJjOWY2Y2M1NjFlMDQxN2E0MzM4NDlmNDUwYWVhM2Q4Nzg1NzljMyBsZWdhY3ktdHJ1bmsKKzcwMjkzIDRmZGRjZDRlOGViNTE5ODYzY2EwYTY0YTMzNGQzNTExMmIyZWI1NjcgbGVnYWN5LXRydW5rCis3MDI5NCBhZmQ3MTE4YzhjY2ZiNDBjYTU2ZTdkM2YxMTViMGI0Y2FkYmM0NjFlIHB5M2sKKzcwMjk1IGRjYmZmZTkxOGE2ZjhlYzZlZDdmYTE1OGFkOWNiYzI0YWI1YWUwZjIgbGVnYWN5LXRydW5rCis3MDI5NiBhYjdhNzIxNWU0NjM2OTUwZjBhY2Q4OTk5YTNjNzU5NTNmYjE4MWZlIGxlZ2FjeS10cnVuaworNzAyOTcgYzVlMjNiOWNlZGNjOTk3NDAzNzY4MDQzZjRkYjZmNTQ5MGE0MTc1NiBweTNrCis3MDI5OCBiMDkxMWI1YTAwMmVkODQxYjZjZjI1Y2Q4MDRlOWU4NDJhMDU4YzBlIGxlZ2FjeS10cnVuaworNzAyOTkgMjE4NTBkNmQ1YjRkNDBhOTZlYzI4ODg2MDRhY2QzOTk4MWI4ZmVlOCBweTNrCis3MDMwMCAwMzgyOTAxYzZlYmQyNzk0NjExNzM2YWZlY2Y4YTdhMTM4Y2Y1OTFkIGxlZ2FjeS10cnVuaworNzAzMDEgM2MwNGQzNGMwNDk3MTdjZThiY2RlOWMzYjY3ZDkzNTU1ZGM0MzQzOSByZWxlYXNlMjYtbWFpbnQKKzcwMzAyIDQzMjJlNmRkMmE2YzllZDY0ODJlMTk5YzRhYzMzNjgwZTNkODM3MDYgcmVsZWFzZTI2LW1haW50Cis3MDMwMyAwYzdkYWM3ZTJmYjA4MTEyYzM3MDE3NWQxZjc5MzBhNWUyODJkZDYyIHB5M2sKKzcwMzA1IGE2MGZhY2M5ZjdjZjU1NWIyNTRjMGNmNzU4MmZjNTA4OWQzMDU3M2YgbGVnYWN5LXRydW5rCis3MDMwNiBmNTFhMjhiMTA0MjY1MTQ1MTBlMzNlNWJkZmM1MDJhYjBiZWYzNjlkIHB5M2sKKzcwMzA3IGNiY2IyMTQxYWVlNTllODRiOTdkZjlmYThlZGFmOTgzNTFjNzAzZDEgcHkzaworNzAzMDggM2VjZjZjM2NjODFlMGViN2ZkZjQ1ZjQ1NjU5N2EzZGZjM2QzYjM3ZSBsZWdhY3ktdHJ1bmsKKzcwMzA5IDhiMGI5ZWU1OGY2N2I4MWFhYmVkY2FlMzEyZGY2NTg5MTY5ODg1YTIgcmVsZWFzZTI2LW1haW50Cis3MDMxMCA0OGZlNjIzMTcxYTQwZDUzYzZmMjYxNjQ1ZDE1MWY3ZjU0NzkzNWUyIHB5M2sKKzcwMzExIDg3NTg4MWZmNjlhNGQ1NDhhY2M5NmNjZTcxZGRhYjNjODUwZjJmZTggcmVsZWFzZTMwLW1haW50Cis3MDMxNSBiZWI3ODgyOTFjN2ExNmE2ZjM3OWVkOGVhMjAwMGMwOGVlODYyZWI1IGxlZ2FjeS10cnVuaworNzAzMTYgNWRmYzQ1YmRhOTZkMDk1MGNlMjRkOWU2Y2E5ODYyMTU1MTEyYWVkZCBweTNrCis3MDMxNyAzNDAwY2IxMGQ5Y2Y3ZDQ2MWVlZjNkMWE4YWYwOGZhYmY2N2U3ZGUzIHB5M2sKKzcwMzE4IDFlYjU3YmRkZmIzOGJlOWQ2OTk4ZmVlMGM5OTVlNDcyMGRiZjk4M2MgcmVsZWFzZTMwLW1haW50Cis3MDMxOSAxZDhlNGJjZWNmMmFhYTk0MTNhNjMwYWQ1NzEwOTNhMGJiMzg0ZWI0IGxlZ2FjeS10cnVuaworNzAzMjAgYmY2N2U1YTg5M2Y4ZWMwYjU0NmRhMjcxMTUxMGE4NjAzMjU1ZmE2YyByZWxlYXNlMjYtbWFpbnQKKzcwMzMxIDZiMDI0ZmY1YjU4ZjZiMmQyZjQ3MGUxYmRiMmY3NTViYTBhNGNmZDcgcHkzaworNzAzMzIgMmU4ZTg5N2ExMjQ0N2YxYzJhZjQzYmZlNDZhOTJjMDA3ZTE4ZTZhOSBweTNrCis3MDMzMyAxYThiYmM1ZmIzZWZjMjVjY2JlYTc4NDA3MjkxNGZhMzZhZWE4ZDJjIHB5M2sKKzcwMzM1IGYxODhkZDY4NjIwZTZhNGFkYjE4NWFkNzFhZTFhMDMyYTY4Y2UyOTggcHkzaworNzAzMzYgMDRhNWI2NDM4NTI2NGU5NjM4YzNlM2I0NDNlOWMwYzhmYjcwYTk0NSBweTNrCis3MDM0MiAwZTg4NTgyYWEzY2U3MDRhMjA3ZDI2MzIzOGE3ZWU2N2M2NzlmOTM4IGxlZ2FjeS10cnVuaworNzAzNDMgZTVlNjRhMGM0YWEyYzMxZTUzN2ZkMTM5ZjllZmRhZmJhZWFhZThjOCBweTNrCis3MDM0NCBiMzYzZTI5NzU2ZmYyNTg2M2M5ODk3MWQ5YmJmNWEwYmU5NjI4OTllIHB5M2sKKzcwMzQ2IDQ4MDQ4M2MzZDkzZTMxMzhmNzFlMDdhNWFjZWE3OGI5ZGY4NDRlMjMgcmVsZWFzZTI2LW1haW50Cis3MDM0NyAyMjc0N2U4NzRmNDZiOTA1MDZjNmRiZDYzZjdkYzU2ZGVmNjMxMzFmIHJlbGVhc2UzMC1tYWludAorNzAzNDggNjMyYWE1Njg0NzRjOTg0ZjEyNmY5MGM5M2RlMDM5YWNlNGRkODhhOSByZWxlYXNlMjYtbWFpbnQKKzcwMzQ5IDhiMTI4ZTA1ZWM3NDU1OWQ4MjE1MGE2ODVkYWU3YTU4YjE0ODA4NTEgcHkzaworNzAzNTAgNzkwY2I5OGY4YjRmYmYwNWQ4ODJmNTM0ZGYyMDAyYzQ5ZWQ2ZTYyOSByZWxlYXNlMzAtbWFpbnQKKzcwMzUyIGE1OTk0NzViNjljMzAwODAxYmI5YTE4MmUxZjRjZWJkYmRjOGM4MTcgcHkzaworNzAzNTMgMWY4ZDExY2Q0Njg0MjAxOWE5MmI0ZWUxOTQyOWZhODJjYTY4YjFjOCByZWxlYXNlMzAtbWFpbnQKKzcwMzU2IDg2MWNkNDZlZWFlZTdmNTM2YTQyNzYzOWJkYWQyMDdkZmQ4NTJhZmMgbGVnYWN5LXRydW5rCis3MDM1NyBhNGM5YjBiMGE4ZTRiZDc0NzI4OGZmYTE2NjZjOGE3ZWNhNjJhZmE2IHB5M2sKKzcwMzU4IDMxNjU5ZjkzNzYxM2NmNjYzZWFmYzA3MjEwYTI2OGIwNDY1ZDgzYzMgcmVsZWFzZTI2LW1haW50Cis3MDM1OSBmMjdjYWFjYjc0MjY3OWU1MGRkOTA2NzliYTdmNzdmNjlkYzFmMDYwIHJlbGVhc2UzMC1tYWludAorNzAzNjQgM2YxOGQ2MDlhYzFiZDg3MjE5ZGVmYTQ4ZmViYmY4YWYxNTg1ZDcyNiBsZWdhY3ktdHJ1bmsKKzcwMzY1IGM1ZmViMDU4ZmZjNGE2MWQ1OTdiOGVlMDhmMzU5OWJhMjI0MTE0ZDcgcmVsZWFzZTI2LW1haW50Cis3MDM2NiAxYzBhMGY3YjRmNzZmOWQ1OGQxNjc0NWYyNGFlZmY2YjA5MmQzYjU0IHB5M2sKKzcwMzY3IDczNzdhNGQ5NWE0NGNhMTM4MGMzNzVlNGI5Y2ZkNDc1MTZjZjUxYzUgcmVsZWFzZTMwLW1haW50Cis3MDM2OCAxZjk2ZDczM2E3NDM5MGU2MTYyYzNkM2RiY2FhMGJiZjE5NzMyMGI1IGxlZ2FjeS10cnVuaworNzAzNjkgNGUxYTE1NzZmMWU1Y2Y1NjhjMGEzMDYyYTk0ODIyOWQ0ZTlhNDFjNSByZWxlYXNlMjYtbWFpbnQKKzcwMzcwIGMxZGM4N2JkODgzYzllN2ViOTc2ZTAyYTZmODI3NDFmMTk1MWU3ZTkgcHkzaworNzAzNzIgMGIxOWJhMzE4MDcxYjFkZTFkNWEyYWFmYmU3NGY2ODY3MjYzZjIyMiBweTNrCis3MDM3MyA2MmY5ZGFkNjI4ZGVmYzE5MzI0YjIwNzBiMzZkNTMyZGNkODNmMzhlIHB5M2sKKzcwMzc1IDY5Y2Q2MTViNzZmYmQ0NjZkNjc3NGZkZjY2MDdmNGE4Y2VhM2VjODAgcHkzaworNzAzNzYgZThmZDc5NzYzYmNjY2ViOGMyZjY3ZDY3YzE3ZGZjNWYyMDc3MWY3NiBweTNrCis3MDM3NyA3MGY1ZjkxMTNhZTExZWM4MGRjMzNkODg5MzQ3Y2M5NzcwYTA2M2M4IHB5M2sKKzcwMzc4IGJlYWYwMGM5OGI3MWU2MzEzYzZjNWNkMDMxMWY0YmRlNThlMDQ2MzggbGVnYWN5LXRydW5rCis3MDM3OSAzN2Q3NmI1YTgyN2JhM2EyNWNiNjI3MzU0MTY0MzVlNjM0ZWE0MzUxIHJlbGVhc2UyNi1tYWludAorNzAzODAgNGU5MjdmYWYzMGVhZWVjMWE0YmMyYWFiMGQwNjQ4ZDNkNTQyMGYzZiBweTNrCis3MDM4MSBlZjdlNDdlYjJiNjk3NWQ1YjVjMmZhYjdjN2MwMjM2OTVmYzczYjM4IHJlbGVhc2UzMC1tYWludAorNzAzODUgNDQyYmRmZTkzYjI5MjFhOWNhOWJhNTFjYjQ5YmU5NjVjMmMwYTdhYSBsZWdhY3ktdHJ1bmsKKzcwMzg2IDIzYTM5Njk3ZmQ2N2U4NTg0MTc3MmRhZGIxNmMyZWIyMjIyZjM4N2YgbGVnYWN5LXRydW5rCis3MDM4NyAxYmUwOWM1YzY4ZTk4YjRmN2M4Zjg5Yzg5OTJlOWU0YTAwNTQwYjY0IGxlZ2FjeS10cnVuaworNzAzODkgZGU3ZTQ3MTZkOWNiYTk3ZWJhYTU2MjdlZTdjYzRhYTMzNmI3NjgyNyBsZWdhY3ktdHJ1bmsKKzcwMzkwIDY4NTUxYjJhNWZhYTI4MDNlNDNmYzNjZGNiMTlkNmQyNmZkNGVkY2IgbGVnYWN5LXRydW5rCis3MDM5MiAyZmU1YmFmODk1Njk1ODFkODVkMjNhMDU2OGJiYjRlYTZhNTZlMTRjIGxlZ2FjeS10cnVuaworNzAzOTMgMGQxOWUxMTY4M2ZmZWI3NWU0ZWQ5NWEzOTRkMDgzODhjZDI5Y2Y5MSBsZWdhY3ktdHJ1bmsKKzcwMzk1IDRlOTRlYWI2YzdhMmQwZGVkMTA2MDFmY2E2NjY1MzM4OGFiYTJjNDEgbGVnYWN5LXRydW5rCis3MDM5NyAxMmViZGE4ZmI2YjMwMGFmMjdhNmI0ZThlNzEyY2Q3M2M4ZDI4MTllIGxlZ2FjeS10cnVuaworNzAzOTggMGJlMWMxZjEyN2UwNDA3NzljZjNiZTQ4YWU5ZDc3NmNlYTdiZGU0NyBweTNrCis3MDQwMCA2YmYwZjNhYjAyNzlhYzEzNzFlMDBkNjcwZDk5MGZmNzE1N2JkMDhhIGxlZ2FjeS10cnVuaworNzA0MDUgZTRkOTg0NGFiYTI1MDFhOWI3OGVlNDQ0YzE0ZjAwYzYwMDQ4MjlhOCBsZWdhY3ktdHJ1bmsKKzcwNDA2IGNiYTYwOTM4MzA3ODFjYjlhYmQxZWM2MGFlMmQzODNiZmQzZDRlZmEgbGVnYWN5LXRydW5rCis3MDQxOCBjY2VkZWYyOGZlMDQyMDIzNzJlOTQ2NTY5ZGJiMWFiNDZjODhiYWZhIGxlZ2FjeS10cnVuaworNzA0MjQgYTMxOTNjMDQxNDk2ZGVjZGZiNmQ5MjI5N2IzMjc1MGY4ODRkMDg2NyBweTNrCis3MDQzMCA2YjczOGI2ZjdmYzY3OGI1NDEyN2M4YzBiMmFlZWRhY2RkNWI1NGJmIGxlZ2FjeS10cnVuaworNzA0MzEgZmQ0YzgzOTI4MDgwOWFjYWE1ZDliOWY5Y2U0MjgxMGUyNTZiZTlhNCByZWxlYXNlMjYtbWFpbnQKKzcwNDMyIDM5ZjRmYTUxYWNmYjgwN2I4OWUzNDQyZWMxYmE5ODhkYjMyNzY3ODcgcHkzaworNzA0MzMgYzM1N2Q3OTI2NGY4Y2JmNGY1ZDcwMmIwOWVkOTNiNDQ4M2FhYzk5NyByZWxlYXNlMzAtbWFpbnQKKzcwNDM0IDdjM2ZlMWE0YTJjZTM0ODhiZWRhZjUwYTAwZTI1NjM4NDJiNTdkOWYgcHkzaworNzA0MzUgMTU3MjQ3ZWI3OTNkYmJlNjc1NmFmMDNhYjNiOTA3NTYxNzlmZTJmYSByZWxlYXNlMzAtbWFpbnQKKzcwNDM4IDE3MWVkNmZmYzg2YzY0Yzk2OTZlN2FjZjgwOTFlOTM2Njc5MDAxMTYgbGVnYWN5LXRydW5rCis3MDQzOSA1ZGVlOTNhOTc1NThlMTgxZTdlMjhhNmZiYTljZmFlZjI4Mjc3ZmQwIGxlZ2FjeS10cnVuaworNzA0NDAgMTJlMTRlNmYxZjJkYjFlZDc1YzVlMzQ4NGZiMWY2MmM5ODBiMmQzMiBweTNrCis3MDQ0MSBhZDRhNzJiMDhkM2U0MTBlN2U1M2JiZDVlYWJmZmIxNTM0N2NiOTE4IHJlbGVhc2UzMC1tYWludAorNzA0NDIgY2FjMjA3MzczYTM0Zjc0YzZkZDE2ZTgwOGUxZmIwMjU2NTYyODMwMiByZWxlYXNlMjYtbWFpbnQKKzcwNDQzIGQ5NWU1YWRkM2NhNGNjZTMyOTA4ZmI3MDFmZDhkZGMwY2EzYzg3YzYgbGVnYWN5LXRydW5rCis3MDQ0NCAyZDk0YzhmZWQzNzZmNzZiOGZlOTZlMjg3NDg2ZjAxMTA4ODM4MGJiIGxlZ2FjeS10cnVuaworNzA0NDUgZmNkZmZkODVhOGJkM2ViZTBlYThiOWJjMDgxNDBkNTMzNGRlMzRlOCBweTNrCis3MDQ0NiAyMDdhNGMyN2E5MTZhZDlkMGEyYjRhMjQyOGRlZmFmNmNiZWQ4ZDlkIHJlbGVhc2UyNi1tYWludAorNzA0NDcgYTUyNzQwNWE5YzEwNjEwODMyNDkyZjZhOWViODljNzM4MjAzNjAxMiByZWxlYXNlMzAtbWFpbnQKKzcwNDQ4IGMzNDBlM2Y0OWJmMzY0OWU3N2FjYTYyYmY2YmZlYTAyMWYyMDFkMTAgbGVnYWN5LXRydW5rCis3MDQ0OSA1OGIyODZlMTVlYmNlNGNkZjk5Y2Q0MDJkYzU3MTA4OGJjNzk4NTI3IHJlbGVhc2UyNi1tYWludAorNzA0NTAgNTkzODBiMzkwYzQwNjI0OWEwNDg2NDljYjJjNmYwYjRlNDAxYjEzOCBweTNrCis3MDQ1MSA2ZmU2NDAxZGE1MWY5Y2FjYmFmMDY2ZmIyNThhZjY2YTNiNTQ0OGU4IHJlbGVhc2UzMC1tYWludAorNzA0NTIgNzk2NDJiNTg4MWUwYTZiMjIyZDc5NmQxNjA0MmVmNGI4ZDk0NDkyZCBweTNrCis3MDQ1MyBkYTQ4NDBiMmJhMDYxMmY3NGMwMmUzZDI1MjZjNGM3MzQxYTRjMjllIHJlbGVhc2UzMC1tYWludAorNzA0NTQgYzczZGQyNWMwMWMxMjA0MTA3MGUxMTAyYmQ3MzBlOTc5MDQxYzdiYiBsZWdhY3ktdHJ1bmsKKzcwNDU1IDZiYTVlZTVhMjIwOTQzYTMwNzIzNzc2YjA2MmU2ZjdkNjJlNjk4NjggcmVsZWFzZTI2LW1haW50Cis3MDQ1NiA3ZDhmZDc5NTVkMTU1NzQwN2IxNGY0NmVmMTI0NTMzMWY1ODJmN2M0IHB5M2sKKzcwNDU3IDNlZTI1OTQ2OWJhODI4MDQ2OGQ3MzY3Nzk2NjJhNzQ0YWQ4MDE2Y2UgbGVnYWN5LXRydW5rCis3MDQ1OCA3YjUzNjBmYTNlMTlmMjkwNmJmNGVkMDM1ZmMyYThiMzYwZGJhZDE1IHJlbGVhc2UyNi1tYWludAorNzA0NTkgYmI1ZGUyNGEzNDNmNjk3MTViMjRmOTk0MWE4MGVlZDllODQyZTg4YyBweTNrCis3MDQ2MCA5ZjQ2MjhiNDY1NWIwYmU5ODIwMTVkNmZlZmRiYzA3ZDA5YTYwYjdiIHJlbGVhc2UzMC1tYWludAorNzA0NjEgZmZlNGI5YTEwMzVjZDM2ODkxNDZhNDkxMGMzYzJjYTJjMjVlNzcyZiBweTNrCis3MDQ2MiAzNzAzMTdmYjk1MTU1NjE4MzhkZTVkNjUwZDk0Nzc3NDMyZjczMzVmIHJlbGVhc2UzMC1tYWludAorNzA0NjMgZDJiNzg4N2Y4YzlhZWMxMDFjYjlmYWMxNzZjYmY2YjdkZDY2NGM2OSBsZWdhY3ktdHJ1bmsKKzcwNDY0IDkyZmVmY2RkYmZlODQwMTUxYTlkZTFhNTI5MmQ4MGY1MDYzODBhNTEgbGVnYWN5LXRydW5rCis3MDQ2NSBmYjgwYjI4MWUwNWFhMGFhZmViNGYwZjg0NDVhZDcwMjNmMTFkYTYzIHJlbGVhc2UyNi1tYWludAorNzA0NjYgN2NmYmJmMmQyOTRlNTEyYTM3Y2ExNzUxOTQ0ZjlkZWNhM2FmYTU3ZiBsZWdhY3ktdHJ1bmsKKzcwNDY4IGUyYzFjYmRhMmE5NTcyNWExMTJjYWE0MzliNDk2ODBmMWE1MzhiOGMgbGVnYWN5LXRydW5rCis3MDQ3MCAxZjczZTA5ODRkNTU5ZTdkYTcyOTVkYzMwYzI3NzYzYmVjODhjMWM0IGxlZ2FjeS10cnVuaworNzA0NzEgYTExYTY3NmZlNmMwNWFhYmUyOTU0MmMwMDIxOWJiYmVlZWFkOTBmYyBsZWdhY3ktdHJ1bmsKKzcwNDcyIGVhZDNkZTQ4YWFkZDc5NmZjYjVkM2ZmNmI3MDMzOTVkMzAzMmMxZTEgbGVnYWN5LXRydW5rCis3MDQ3MyA4ZmQxNzIxYzMyYzQ3NWMzNGIxOTZiMmMwMjgxOWNkYzgxZDZkMjU1IGxlZ2FjeS10cnVuaworNzA0NzQgMTEwMGE1MDZlZGNmMDUxMDY5MjY4ZmJhNzM4ZTBjNjgyZDJlZmQzNSBweTNrCis3MDQ3NSAyOTBjNzUxM2UxMjUzNzVhZTM5NjhmODk0NmVhY2JiMWUyZjI1YjFkIGxlZ2FjeS10cnVuaworNzA0NzYgNDIyZTJlNjc2M2U5YTE3ZWY2YTBjMjM4NjNmNDk4ODhmODhjODYwYyBweTNrCis3MDQ3NyA0ZmRiMTBkYmM3MzY3NmM2MGJiOGQyYTAyMTQxMzFjZjhhZDU0ZDU2IGxlZ2FjeS10cnVuaworNzA0NzggNjY0NjliNjVkNTQ4NDQ0Y2JmOGMxOWU1ZTRjZDQyNmE2MzZhNDk1YiBweTNrCis3MDQ3OSA5YjM1OGVhZTUzMmE2MjFmNTI0NTU2OGUyYmM5Y2ZiZmE2MjAzMTdlIGxlZ2FjeS10cnVuaworNzA0ODAgZDFjMGY1NTA0MGJhZDUyNGIxNmY2MTY4MGEyZTA2YTU3N2UwNmFhMCBweTNrCis3MDQ4MSBlN2NmNDY5ZDBlMTI4M2I3MmJmYzNmNzY2NmY3YTUzNTAyY2E1OTQwIHJlbGVhc2UyNi1tYWludAorNzA0ODIgNWEwMmYwY2YzYzM4MWVkNWNjZDE4YThkZDhjZWQ2YjhjOGY4MGI4OCBweTNrCis3MDQ4MyAzOTU5ZDUwNGI1NGMzNTM4OGRlOGVmMjUyYTk2ZjhlNWQ4YWEwY2E4IHJlbGVhc2UzMC1tYWludAorNzA0ODUgNzg3ZjI1YjEyN2VlNjFkMGE3YTdmNWRkZmE5ZmVlOGVjMWMwZWVlNSBsZWdhY3ktdHJ1bmsKKzcwNDg2IDczZmRjMDc2ODFlMzdmMGI5NDk4YWE3NTA5M2ViYjJiZDM0YmVjZjMgcmVsZWFzZTI2LW1haW50Cis3MDQ4NyA1MDU3N2FlMmMwYzBjNTM5MzMxY2Q1N2UzZDBhMWFjZDIwYzU1YWViIHJlbGVhc2UzMC1tYWludAorNzA0ODggMjI3MzdlOTVmNmY3NTU0NDJhNTAxOTY1YTMzMjdhOGMwNzA3ZjdhYSBweTNrCis3MDQ4OSA2YzBjMTVhMmVkMmQzZmU5NDhhNDY2ZGYxNDA2ODgwNjg1Yzk0MzU3IGxlZ2FjeS10cnVuaworNzA0OTAgYTQ3MGQwYTAyNTZlNzQyZjJjOWY3YTc1Mjk1OTAxMjdkZGVjZmZhMCByZWxlYXNlMjYtbWFpbnQKKzcwNDkxIGQ5MmE2ZGVjOGJmZWQ3NTIxOWU2NWVlZTYzYzdmMTllMzk4MDRjMGYgcHkzaworNzA0OTIgYmM2ODFlNTNmOTRlMDZhZGQwMmRhMGY0MjZhMjg2M2U2YTlkYTU0YSByZWxlYXNlMzAtbWFpbnQKKzcwNDkzIGM1Yjc5NThmNDI5MjA2ZTA5NWVlOGMxNjAzOGRmOWI3OTdhOGE2OGUgcmVsZWFzZTI2LW1haW50Cis3MDQ5NCAyYTNhZjIxMWYwZTExZmE3NDM3NWYyNDkxZDZkOWE3MDQzOGUxMTcyIHB5M2sKKzcwNDk1IGM3YjJjYzgzNThmNjY1NmUyYzdlYjUwMjhjODQ0NDVjM2FiMzI5MWYgcHkzaworNzA0OTcgNWNhY2U3NWJjYjA1NmNjNjI3MjZmMDFmNDY3NmJlZTQxZDc1MTAwNiBweTNrCis3MDQ5OCA1YWE2M2RkZDE1MTM0NTRhNzdmNDE0NjFlZWUwMDE0ODdkMmY4Y2Y5IHJlbGVhc2UzMC1tYWludAorNzA0OTkgYjg0NmQ3MDljYjc2MzI3MDFiMDE1MmQ1OGMxYTRiODY4ZWExNDY2MyBsZWdhY3ktdHJ1bmsKKzcwNTAwIDAyOTI4MTIxMzM4ZDkzMWU0MDIxNTk3M2FkY2Q2MzY4YmViZmU2ZTYgcHkzaworNzA1MDEgNWM1ODIzNjY3ZGRkNWNlZWRlOTQzNWYyMDk5ODFiOTUxNjIyZjA5MiByZWxlYXNlMzAtbWFpbnQKKzcwNTAyIGI4OTM0ZGQ5MjY3ZGUwM2JkNzZmOTkxODZiOGQ3NWExZDZmNjM4OTcgcmVsZWFzZTI2LW1haW50Cis3MDUwMyAyZDZmZjVjZDI2MDAxMjQ2YTE4ZjU2NzViZWE2MGZlNmU3ZjJlNmFkIHB5M2sKKzcwNTA0IGYyNzc3ZWE5NTRjYTI1YmVmMWMyZTkxNGY4ZmIxM2JiOWFkNDdjNjEgcmVsZWFzZTMwLW1haW50Cis3MDUwNiA1YjFmMDJkYzY5YTM5MTkwNWU3MGIwMzc3N2I4NWIzZjg4NTg1MjQyIHB5M2sKKzcwNTA3IDNhYjJlNTJkOGQxOTY5YzE0M2FmMDBmMTZiMWMwYzJiYzA0ZGQ2MTYgcHkzaworNzA1MDggZTQxZjVhODlmNWMwNmU5OWJmNjQ2ZjYyNzY3YmVhMDAxNmQ0NjI3OCBweTNrCis3MDUwOSBjNjY4OGU5MTU2YjU5MTdlZWQ4NjU1MzE2N2ZhYmQwZDIwMmJlNTVkIHJlbGVhc2UzMC1tYWludAorNzA1MTAgMThkNjU2NTEyMzVlNDg5MTMyZDFiODQ4NjJlNWZkMTUxNzViYWIwOSBweTNrCis3MDUxOCBmYjIxZWFiYTk0ZjY4OWVlZDI3Yzk5Y2RhYTkxYjkzMDA3YTkxOTk3IGxlZ2FjeS10cnVuaworNzA1MTkgZDFiMGJkNDhiYTE1NjM4MWI3OWY5ZjFlNDRjZDM4NmNkNDdiYWE4MCByZWxlYXNlMjYtbWFpbnQKKzcwNTIwIGM4N2U1ODI2MmQ1YmNiM2VkMjM1NDI5ZTEzNzJhMDYwNTEzNWNmMzEgcHkzaworNzA1MjEgZWZkMTdjYjU4MjNhOThmZWE2MDE2OTEyNjVkOTdhNDNjMTQxNDg1MSBsZWdhY3ktdHJ1bmsKKzcwNTIyIDc1MmYyZTNlNDc1NzdmYjAzMDNlZjAwODk2ZjU4NDdmMWUyMmY4YTQgcmVsZWFzZTI2LW1haW50Cis3MDUyMyA0NDVkNDA0MjcwZWFhYmYxOGJmNjMwZjliMTBkMzIxMTc1MTY1MzdkIGxlZ2FjeS10cnVuaworNzA1MjQgODU2ZWQ0MTg3NjhjMTkwNjhhYTcxYTIwNDAwMDlkMTJhOGYzNTQxZCByZWxlYXNlMjYtbWFpbnQKKzcwNTI1IDA5NWQ4NzRhMzA1NDlmYWJmZWRmZWEyZWQxMjY5YjQ1NTQ2ZmNkM2YgcHkzaworNzA1MjYgNDM1YjhiYTFhOTAyMzQ0YTUxZTRjMGUzOGJkMzM2NWFlYzliYWRkNSByZWxlYXNlMzAtbWFpbnQKKzcwNTI3IGRkOWZkZGIwNzIwZGFmOWIyY2I5NTc5MmJkN2Q3ZDY0NThkODMxN2YgcmVsZWFzZTI1LW1haW50Cis3MDUyOCA2Y2I4NDMwNzVlNjkxMWYyZGNiYTg2ZjEwMTJlODMxMDYzODFmYTUwIHJlbGVhc2UyNi1tYWludAorNzA1MjkgNWY4YzhjOTE4ZjliMDI5YjRlOTdjNzJhY2U2MzM0NDIyYzJkYmJmMyByZWxlYXNlMzAtbWFpbnQKKzcwNTMwIGFiMzg5ODc3ZjE1MmY0Yzg5YmUyMDViOGQ0MWZhN2QyNTRkZGFhMDggcmVsZWFzZTI1LW1haW50Cis3MDUzMSAxZjcyYWM5MDk0MDhkYzQxNDIwNjE3ZTE0ZDFlOWUyYTE3MTdmNjk3IGxlZ2FjeS10cnVuaworNzA1MzIgNDQyNmU0OTIyNjRmMDdhZGE1MTZlNTczODcwNzBkYWZmMGU2MWMxMyBweTNrCis3MDUzMyAxMTllM2ZjNmNkZjM1ODFkODk1ZjNiOGIyNWY0NjNhNWI4NjE2YjUzIGxlZ2FjeS10cnVuaworNzA1MzQgYjE2MjdlN2U2NzhkN2Q5NTk2ZDVjZGI1NGE1YTk5ZDlhN2EzNjMxMiBweTNrCis3MDUzNSA4ODk3NGNhNTAwM2ZmOWRhY2Y2MTBiYWY5YjQzMDc4ZjI4MmNiNTZkIHB5M2sKKzcwNTM2IDA1YWU5Y2NmZjUxNDRjNzU4NTA1YzA4MzYzZjEwNDY2MjE0OTFhYzQgcHkzaworNzA1MzcgODdjYjk1MDU5MWJlZTFiOGFjYzRmMmQ2ZDI2ZThjOGQxNWM1NTkwOCByZWxlYXNlMzAtbWFpbnQKKzcwNTM4IDY4N2U3NTFjMjg4ZTZmYTU0ZjhjZDAzM2E4NzIwMWNjZGI3NWVkNzAgbGVnYWN5LXRydW5rCis3MDUzOSAxM2Y4ODdlNWZhMGQ3NTAyNTVmZWZhNmM1MWY1YWIyZjNhNzNiNDg4IHB5M2sKKzcwNTQyIGE1NGVmMThhYjBkODlkY2QxZjg3MzRmNTRiZTQ0OTZiZDFlMmVkZmEgbGVnYWN5LXRydW5rCis3MDU0MyBlZGQ0MzAyY2NlYWZlZWU4YjNjMGUxYTEyM2FjMGNiZDE0ZmM3MzAwIHJlbGVhc2UyNi1tYWludAorNzA1NDQgYTFkZGI0ZGU4NWE1MzY4MTk1OGI3MDcyMmMyZDNhOTI2YjAxYTNkYyBsZWdhY3ktdHJ1bmsKKzcwNTQ1IDYwZDA2Yzk4YTYwNWIxMTAyNTlkMDU1NjI0ZGMyYjYyZDNlZTg2MTIgcHkzaworNzA1NDYgMGU0OThhOWZkZTNjMjI5M2Y4OGI5ZTFjZTk3M2Q2YjdmYTdmYTNkZiBsZWdhY3ktdHJ1bmsKKzcwNTQ3IGExZDE2ZDk4YWE0MGRhZjBlYWM0NDllZDEzOWQ1OWUwZjYwMzhjZDIgcHkzaworNzA1NDggYzcwOTEwYWM0OTJkNzk4NDYyYjY4M2FiOTY2NTc3OWI2OGRmMTEwZCByZWxlYXNlMzAtbWFpbnQKKzcwNTQ5IDk0YmQwNjY2ZmZhNzkzM2Y1MWY5YzIwZGUxYjg2YTgzNDUyNzE1NGEgcHkzaworNzA1NTAgYjM3OTEzMDllNjkwNGM3M2I5MGM1MDQyNDMwODI1MTY0YzE3MjcyYiBsZWdhY3ktdHJ1bmsKKzcwNTUxIDY3ZmI5MDMyZDQzYTQ3YmRhZjk5YzYzOGU5MTYyNjAwZDgyOGNkMzUgcHkzaworNzA1NTIgZjZlZGM2ODZiZGU3NTMzYTkwMDMxODNlMjdlNDkxYTQyZjhhYTVhYyBsZWdhY3ktdHJ1bmsKKzcwNTUzIDdlZGQxNDNjZDRlNDJmMzk4NTEzZmJlOWQyNzRiZWQ3MGI1ZjE2MTYgbGVnYWN5LXRydW5rCis3MDU1NCBkY2EzZDY3Mjc1OGUzY2RjNTNkNGVlYmIxYzkxNmE2NTg3MWRmYWNkIGxlZ2FjeS10cnVuaworNzA1NTUgZTRhYTUzMGU1NzYwYjhhY2ZiODQwYzcyZjg5NzM4M2VmNjgxOGJhOCBsZWdhY3ktdHJ1bmsKKzcwNTU2IDEwODQ1ZTE1ZWQ5YjFiNjAxODExZmJiYzZiNjdmNzFhOGIzMDI2M2QgcHkzaworNzA1NTcgZDc0NzYxMmY4YTJmZWU5OGEzNTU0MjY4NzJkMDEyYTI4MTBhMzZmMCBweTNrCis3MDU1OCA2OGFjMjU1MmY0NGUxOWY1ZjU4NjA1MGZlMDkwOTljY2ZiNDA5MDRkIGxlZ2FjeS10cnVuaworNzA1NTkgNmQ1YzhhNTA2OWIwZmZmYzlmMmMwOTFlODY0N2NmOTVjOTA2ODQ4OCBweTNrCis3MDU2MCBhZWRhOTJmMWFiOWI1NzAzYmJjMjc2ZTk3NGUzNDk4YjRiMDc0MGNkIHJlbGVhc2UzMC1tYWludAorNzA1NjEgNTVmMTUwOWM0NWI2N2YwY2M1Yzg1OGRjNTY1ZWMxMzNhMDIxNmRlZCBsZWdhY3ktdHJ1bmsKKzcwNTYyIDU4Njk0Yzc2ZDc2ZDgxNWY4YTRiNmY4YTZiMjA4ODUzZjAxZGE5NTggbGVnYWN5LXRydW5rCis3MDU2MyAwMDI3YzA4M2EwZDRiNDA0Y2VjNzU4ZWM4Y2ZiZjQyM2MwYjE4ZGFlIGxlZ2FjeS10cnVuaworNzA1NjQgZWMzZTI5ZjE2MGRmZDEwMTI2ZWExOGJkNGU5OWU3NGQ1MjNkYmFlMCBsZWdhY3ktdHJ1bmsKKzcwNTY1IDcwMWY2OGY4YjdjZjc1M2Y5NDYwMTQxMjNiMTc1Mzk2MGU0NWM3NWUgcmVsZWFzZTI2LW1haW50Cis3MDU2NiBhMmY2YjJiMzgyYjRjMTFjZDFhZjA4YTJmOGI4YTgxZmNlMWE1NjM3IHB5M2sKKzcwNTY3IDk4NmFjY2UyNjY0MTBiZGFiN2JhZTM2N2FmOWU1MmVhNGE1MGNlOTYgcmVsZWFzZTMwLW1haW50Cis3MDU2OCBmMGE1MDc0MTRlOGNjNzg2Nzc3YjZiYWNhNGZjMGVhMmRmY2I2ZWM2IGxlZ2FjeS10cnVuaworNzA1NjkgMjNjMTJhYzdmMzE3MzZjNjY3NGQyMWI4NGMxZDMzOGYxNDNhZjY5MCBsZWdhY3ktdHJ1bmsKKzcwNTcwIDZlZGI3NDIxNjM4YzBiMjFjYjBhYWQ1YzUwMzkyYzY3NDA0ZGMxZTYgbGVnYWN5LXRydW5rCis3MDU3MSAxMmFkYjgxOTc2NDc5YzQwMzE2NDc1MzI5MGVhYTFhOGUzYzU3YjIxIGxlZ2FjeS10cnVuaworNzA1NzIgYThhOGNmOWIyODE4M2Q0NGQ3MDM3MjhjOGFkNDM3NDA2NDk2ODZkMyBweTNrCis3MDU3MyA5YjU5OWI2MDEyZmE1NGRmNzJhOGYxODM0ZGQ1YjVhMjA3NTkxY2E4IHB5M2sKKzcwNTc0IGQyMTM0MTMzYmYwYzk5NTI0ODM2OTlkMGQyNzdhMTFmOTQ5Y2NmMzUgbGVnYWN5LXRydW5rCis3MDU3NSA4MjBmMzQ3NWIwOGQ3ZjJjNzQxMjI2MzY5ZWY3OTgyMThhNDE5N2VmIHB5M2sKKzcwNTc2IDExZDU0YzdlMDg5Yjg4NTEwOGFhMmI5ZWI5Yzk1OTM1OTgwMjgzYjggcmVsZWFzZTMwLW1haW50Cis3MDU3NyBhOGRhOGFjZGExMjg2N2Q0NzRhZTk0MzI5NDBkNTM0NDhlMDZjNjVlIHB5M2sKKzcwNTc4IGE5NTE1ZjI5YjM4Yzg3MzJmZDNiNTY2OWVhZjE2NmQ5Y2VkM2UxOTQgbGVnYWN5LXRydW5rCis3MDU3OSAyNDk0ZmZkNjBlYWU5OWQwZTU2YjYxMDk3ODJjNmIyNzAxN2M2YjUwIHB5M2sKKzcwNTgwIDYwYjk3ZmM4ZjA2ZGEzNmE0OTE2NzRjYTQ4YjM4Nzk1MjIzMjQyYzMgcHkzaworNzA1ODEgMDA2YzgxZjliMGU4MGVkNjBlMWQwOTI3YWU1Zjg0MWYzZTc5OTRhNyBweTNrCis3MDU4MiAyY2M5MDBiZDZiYjAxNjJjZDBmMmI5MzY3MGQ2N2ZjNWIwYmI5MzYzIHB5M2sKKzcwNTgzIGJhNDI0MDE2ZGI3NDY5NjAzZDU3ZmUxMzVjOTdjNzBiODhiOTFmYjcgbXVsdGlwcm9jZXNzaW5nLWF1dG9jb25mCis3MDU4NCA3OTJhN2Y5MzlmZGRlYWMxYTFjZWRjMTZlYWY4MTVhMzAwYmEzMjY3IG11bHRpcHJvY2Vzc2luZy1hdXRvY29uZgorNzA1ODUgM2FkYjM5NzRlNzc3YzA5MDcyNDQ5ZDFmMzZmMDllYTI2NGRiMGFmNiBtdWx0aXByb2Nlc3NpbmctYXV0b2NvbmYKKzcwNTg2IDhhZDI1MWRhNDc0Mjc0ZjE3YWIwOTNiZGY1NThhMmE5MzMzNDE3NmMgbXVsdGlwcm9jZXNzaW5nLWF1dG9jb25mCis3MDU4NyBmZGM4MDZjNzdjZDZlNDIxNWY1ZjZkMTBiZjVmZjVkM2JkYjlmMTFhIHB5M2sKKzcwNTg4IDNkZjdmMTE4ZTUwNDIyZjZhMzhkNDgxZWRjYjI1NGNhYmYwMmUxMWUgbGVnYWN5LXRydW5rCis3MDU4OSBlZmZmYzdlYWFkNmQzM2U3NGU1NzNkYzc3MTVhNjE4NDI2YWRkOTQyIGxlZ2FjeS10cnVuaworNzA1OTAgNWQ2YzBmYzg3YTcxOGViMzY0M2ZmZjE3M2JkZTczYjJkZWNmNjYzYiBsZWdhY3ktdHJ1bmsKKzcwNTkxIDA2MGVhOTc1ZDU5NzEyOTc2MTQwYjQ3MmViMDc1MTYzNzVhNGQ3MzYgcHkzaworNzA1OTIgNDFlMzQ0ZTU3MWExNjAyMzYxM2FmMTAzMzlhNGFjMjcyYjA0NTM3MSBtdWx0aXByb2Nlc3NpbmctYXV0b2NvbmYKKzcwNTkzIDczZjRlOGFkZmViZmQ4ZDI1ZGEwMWRkN2RmM2NiNDQxNDQ0MTAwZWEgbXVsdGlwcm9jZXNzaW5nLWF1dG9jb25mCis3MDU5NCA3ZDBlM2E4YzJlOWUxYjE2Y2QwM2I2ODgwYTM2YjUxYzU5YzliODJmIGxlZ2FjeS10cnVuaworNzA1OTUgOWY4OTc2NTY1ZjgyNmVlMGU5YTdlMjRkOGQ5NWY2ODE0ZDdiNDFlNiBsZWdhY3ktdHJ1bmsKKzcwNTk2IDhjZDYxN2MzZTc0YjAyOGVkMzcyMTcyMWU5MThlMjMwYjc4NTA4ZDEgcmVsZWFzZTI2LW1haW50Cis3MDU5OCBlZTBmNzUxYjgwMjAwM2M1M2FkNTdhMGFkNTY3Yjk1ZDhlMmNmOWExIGxlZ2FjeS10cnVuaworNzA1OTkgMWZiZWMyOWY4OWU4ZDAyYzUxNWZjNDVmMjdlOTAzZDgwZmM4MzQxNyBsZWdhY3ktdHJ1bmsKKzcwNjAwIGE2NzZkMzZjMDdkZDUzOTlkYjBhMWJjYWRlYTE3ODk3MDU2ZjA4OGYgcHkzaworNzA2MDEgZjVkNjcwZmNkYmU5NmJjN2Y0MjFiOGI0MjhhMjllN2Y5N2MyY2IzYSBsZWdhY3ktdHJ1bmsKKzcwNjAyIGYyNzcwNGY0NWQ0YWYzMzEzNDMzYzJmZDhkM2MxYmU5NGRlZGExYTAgcHkzaworNzA2MDMgOGI1YTgwZjUzMzE3Zjg5OWU3OTkxMmRkMTBkNDM3MWE2YTBmOTcyOSBweTNrCis3MDYwNCBiNmY4NjEzMjFiNDVjZjBmZGFhNGRhNWVhMGQwZDc0MDE0ZjdmOTBiIHB5M2sKKzcwNjA1IDNmZGM0YWEzNmQ3NjcwNzhhZDhkMmIzNmVjMDFjZWIzNjBhNjMwMzYgbGVnYWN5LXRydW5rCis3MDYwNiA2MWVmNjU5YWI3OTlkZjYyMzdkZTI3MDk4YzVmZmRjY2U2OGYzODY5IHB5M2sKKzcwNjA3IDMzODI5Yzc5MWJmNjIyNzBjNmU4MmJmMjNlNGRjM2Q0ZmM5MjgxZDUgcHkzaworNzA2MDggYTEwZDk5NTEzZjllOWVlM2EwNTdlZjI4Y2Y0Zjg4YjFkZDI0Nzg0NCBweTNrCis3MDYwOSBjYzEzY2MyMjRmZjU2OGJlMTFiNmNmNmE2YjNkYjFhYTU2ZTBlYmE3IHB5M2sKKzcwNjEwIDA3YjZmY2RmN2Y5NDk5NGU5ZWFlNmI0YWM4Yjg1ZjdkMDU2NjA5MzYgcHkzaworNzA2MTEgMWUyMzM1OTYyYmFkODU0NmExZTExZmY5ZGQ4ZmEwYzA2MTE0ZDRjMSBsZWdhY3ktdHJ1bmsKKzcwNjEyIDc4ZmVkYzM0MmE2YjEwN2RiYzFiNzIyMDgyY2Y3OWZhZDcwZjJlODkgbGVnYWN5LXRydW5rCis3MDYxMyAwYTA1MmEyODczYjI0MTlkZjY5ZDg4NzI4NDY5MDQ4NmYxODdkOTZhIGxlZ2FjeS10cnVuaworNzA2MTQgMDA3ZTljODZmYjU1YjVlMDg4NGI2Y2E1YTE4M2QyNzU4NTZjMWE1ZSBsZWdhY3ktdHJ1bmsKKzcwNjE1IDRmZTc2MjQ5YTkwOTA3MGVkZDFlOWY1ZDIzODJlNTA4MWFjMjAxNTYgbGVnYWN5LXRydW5rCis3MDYxNiA1NTcyOTBmZmE3ODQ3NjhlN2E5NDNlNzk1YTg0YTViYzZkNTIxYWNiIGxlZ2FjeS10cnVuaworNzA2MTcgOWNjZjgyZTY1MzMyOGYxZDgzOTQ0M2Y4Y2ZjZmY4ZjlkYjAwMmQwYyBsZWdhY3ktdHJ1bmsKKzcwNjE4IGU2MDA5YjljZDkwODRmZmNhZmUwYjI1MzhiNjkzMGUzNjk5ZmVhYTYgbGVnYWN5LXRydW5rCis3MDYxOSAxNGNjOTJhZTk0YzkwNGQwYWNlMzEzYTlkYzkzYjgwMDM3NWUwNTU5IGxlZ2FjeS10cnVuaworNzA2MjAgMjI4Y2ZiNmUyOTAwYzE0NDZjYTA2MmY1ODgyZjEwZTBjZjRhZWMwMSBsZWdhY3ktdHJ1bmsKKzcwNjIxIDc2YmYzNDFhYzIwMjM3YjI0ODllZDYyZmJmNzE3YWRkNTNiZDdhZDggbGVnYWN5LXRydW5rCis3MDYyMiA1MDIzODQ5NGYwZjA1ZGVkNTMyYjUzNTkyY2RkODZkZThmOTEzN2QzIHB5M2sKKzcwNjIzIDcwNTU0NWVjMzI0M2Q0MjcyNTRjZmUxN2NhYTcyMjhmYzZmNjhmY2YgbGVnYWN5LXRydW5rCis3MDYyNCBmMjZjMWNkNmM5ODUwMDVmZWQxNTlkN2UxNDYxZWIxM2UwYWMwODg5IGxlZ2FjeS10cnVuaworNzA2MjUgZWRmNjI3MjYxYzdiNTU4YjBmOWMxZjFkYzU1NmQ5ZDA4MmY1YzY2YiBweTNrCis3MDYyNiBkYWRiZTAxNGJkYTRlMjc1MGUyZWRmMjVkYjEwMjQxZGI4NWE0ZWU0IGxlZ2FjeS10cnVuaworNzA2MjcgZDIyNzU4NGMxYzdkOGU3MDY0N2I5Njg4YmQ0MzA3ZTcyZjQxZThiOCBsZWdhY3ktdHJ1bmsKKzcwNjI4IGRhZjY2MWQwNTQ0MmE3YWRkODhhMzM2ZWM1YjZhZjcwZDgwOTA3MDEgcHkzaworNzA2MjkgY2EwMmJkOGM5NmYyOThiZjlhMmE3MGM4NTMyYmQ0NjhkMDM3NWE4YiByZWxlYXNlMzAtbWFpbnQKKzcwNjMwIDQ3NTgwODY5OGVhZmFhYjYwZDc1OTBlMjgwOGI3ZTAzN2Y4OTNjY2EgcmVsZWFzZTMwLW1haW50Cis3MDYzMSA3NWUzZmUzYzA3MjY3MGQwNmI4YTFiODQ2ODQxN2Q4MjAyZmE2ZjhkIHB5M2sKKzcwNjMzIGVlNGEwMDZkMDE3MWVjMTQ0YWU4YTY5NDEwZWE4ODRiOGQ4ODA2ZjUgcHkzaworNzA2MzQgMTBhODRjNjM4ZWRhMTI5NTY4ZTYyNmNiYzVmZTBiZmUxN2I3ZDg2OCBweTNrCis3MDYzNSA4ZDY5MThhZjIzMmJhZjdlOGU4ZDIwMjE4NmFiM2ZiYzc1ZWI4MjU2IHB5M2sKKzcwNjM4IDhiNjkxNjkwYmFiZDcwODA3NjRlNGFmMzZkNmM2YTkxOTM2Zjk4MjYgcHkzaworNzA2MzkgOWFiNzU0MTEwNDMxNWZhZWFjOTk1ZDM0ODU0M2U0NzE5NTMxN2QwMiBweTNrCis3MDY0MCA0MjY1ZDZjN2MwNzQzY2QyOTkzZmI3YTk2MWRhNWYzODc5NDAwNzA5IHB5M2sKKzcwNjQxIGZiYWQ0MmM0NWM5Y2I2YzQxZjkwZDVlNWI1YmUzOWQ3ZGM2ZjU3ODggbGVnYWN5LXRydW5rCis3MDY0MiA3YWZmOGE3NjZlMjUwNmRhNzZhYTM2NzQ1ZmVmOWFmMGM0Y2I4MTg3IGxlZ2FjeS10cnVuaworNzA2NDMgYTcyNmY3OTI4NTYxODU0MmRiYTZkN2Q0NjBhOWEyZmExYmUxODk5YiBweTNrCis3MDY0NyA5ZGY1ZDA2OTQ5MjFhNjJkODBiMTgzNWIxMTMxY2Q1MTViMDNmNGM2IGxlZ2FjeS10cnVuaworNzA2NDggYjczY2RhYzZhMGMzOGM4NWE4NjQ2NGEyYWJlOTBmNzAwODI3YjlkZiBsZWdhY3ktdHJ1bmsKKzcwNjQ5IGJiOTBlYzY3ZjMxNDg1NzI2N2ZlNTQ2OTEyMDJkYjAwNWM0MTA1ZWMgcHkzaworNzA2NTAgZGE0NTZmNDJlYmU3ZTdhOGVhOTExMjRlNzk1ZThhZjVlYjljZWIwMCBsZWdhY3ktdHJ1bmsKKzcwNjUxIDNhZGQ0MDBlNDE5ZmYwMzIxZWU5ODVmODMzNGFmYmQ5MWM0ZDRkM2EgbGVnYWN5LXRydW5rCis3MDY1MiAxZjVkYjk0MzdkYjg4YzVlY2Q3ZmZmYzJkN2Q3NjJkY2JiZTU3YTAzIGxlZ2FjeS10cnVuaworNzA2NTMgNDk4M2ZkMTk1MDM2NmJjYTllYzkzNjViY2ZjNjJmNGI1YWUxYjM1NyBweTNrCis3MDY1NCBiZGZjNGIzYTkzNDcxOTUxYzgxMTMyODA1MzI4OGVkYjgzNjM0ZDdlIHJlbGVhc2UyNi1tYWludAorNzA2NTUgMzkxODcxZjZjMTY0MmJkNjhhZDQ4MWQ3ZjM4ZDQyYWYwYWQ0ZGRjYyBweTNrCis3MDY1NiA1ZWYxYzFkNzRjNTEyMjdhZDc2MGI5M2YxNmNhNWE2ZmIyMzc5ODc4IGxlZ2FjeS10cnVuaworNzA2NTggOTc2YjA3OTk5NTg5OWI3OWIwNTViZTRkMTg2ODhhMGFlNGM2NDQ4ZSBweTNrCis3MDY2MCAzNzQ5Yjg4ZGJiNjEyNzVmNWI0ZWIzODg1ZDQ0YzJkODNmZmJkNTNhIGxlZ2FjeS10cnVuaworNzA2NjEgNTVkNTQyM2JhOTg3Y2VjZTY0MjY0NjUzODUxMWZkMmViNjA5NDZlOCBsZWdhY3ktdHJ1bmsKKzcwNjYyIGQ0ZTc0NzBiZDY2MDQyYzJhYjk0Y2MxNWVhMzk0ZWYzZjQ2MzBiMDIgcHkzaworNzA2NjMgMTUwZjU2OGQxYmEyZDAwYjQ0NmJiMmM0YTNjYzc5Yjg3ZTJlMTA2YyBweTNrCis3MDY2NCAzYTZkMjdkODA4MjI5NWUyZTUwMTg2N2MzMTJlMzM2YWYwYzEzMTEyIHB5M2sKKzcwNjY1IDFiNzI3M2FlZDM2Y2VkMGJmN2E2YjA3OGM5MTE2Nzc4YWY2YzVkNTMgcmVsZWFzZTMwLW1haW50Cis3MDY2NiBkMDU5MzkyNjNhMGU1MTVhMDAyZWUzZGQ5NGZkYjlmMTMyNDA3NTljIHB5M2sKKzcwNjY3IGI3OTQzMTljMTI1ZWI0NWNhZDAzMGRlYWJjMjlhOTc2NTRhZjYwM2QgcmVsZWFzZTMwLW1haW50Cis3MDY2OCBkNTVlMDViMDZlNGEyYjBlN2ZkMGZlNjNiNzg5ZWFmNGIyNjY0OWJkIGxlZ2FjeS10cnVuaworNzA2NjkgN2FkZDQyM2FmOTcxMDk4ZjM5NmUzYTliODM0NjNjZjJhYzAyMGNlNCBsZWdhY3ktdHJ1bmsKKzcwNjcxIDM2YjM1OTJmMzAyM2I4NzQyMTVjMTBkNTZmZDNmZTFjYTQ0OGFiODMgbGVnYWN5LXRydW5rCis3MDY3MiA5MTM0YTIwOTEwMTNjNWZhMzk5NjM1YTQ2NmJjMzcwNjk0YTc3YzU5IGxlZ2FjeS10cnVuaworNzA2NzMgZTMxNGI5NmZiNWFkMzYyOTJmY2FkOWM2YTU3NjdjYTAwNzMzYzI2YSBweTNrCis3MDY3NCBlOTg5MTU5OGE0MzM0NjRjMjc0OTJiY2M3MDBhNDYxMzBiNmM2OTI3IGxlZ2FjeS10cnVuaworNzA2NzUgZWY2MTJiZTc3MWVkY2VmYjVlZjQ5ZGE4NDhjZWEyMWUwNGU3MGM4ZiBweTNrCis3MDY3NiAwMDEyODhhNjhlOGIwNzQ4NGJiNGY1ZTFhMzdhZTMwMWY0NmYxNmMzIHB5M2sKKzcwNjc3IDQ2YTQ1ZWNjYzlmNzAxZmFjYWI2MzBlMzc3NjYyZWU0ZDYxZWZkYzcgcmVsZWFzZTMwLW1haW50Cis3MDY3OCAwMTk4MTViYzM3ZWFmMTJkOWQ4YTQ3ODJjNDYxNTc3YjMyMGQwNTEyIGxlZ2FjeS10cnVuaworNzA2NzkgNDIzYzk0NzdkNmVmZTZlYzgwNzhjOTUyM2ZhMWI5OTA1ZjAzNTBkNyByZWxlYXNlMjYtbWFpbnQKKzcwNjgwIDAyZjI5NGEyODIwNmZiMGNmNzllNzE3YWZkNTJkMmZlMDA2YTIxMzEgcHkzaworNzA2ODEgZjQ5YTk3YTk3OWViMDkwOGUwM2E4MjM3OThjMTFlNjNmN2UwMjE2OSByZWxlYXNlMzAtbWFpbnQKKzcwNjgyIDFhZmIzNjVmMjQ0ODIyMjdlOWIzZmM4NTMwNjU4MjFjYzUyNWMwMWEgbGVnYWN5LXRydW5rCis3MDY4MyA2ZTU5MWQ0ZGM2Yzk2ZmI0ZjA1NDBjOTk4Yzc4Mzk5NjZmMzg1ODdhIHJlbGVhc2UyNi1tYWludAorNzA2ODQgZjA1YjZkOWFkYmU2NDc3NTc2NGFiODY0OTg4OGZmZDFmZjU0NjlkYSBsZWdhY3ktdHJ1bmsKKzcwNjg1IGJhZmFkNjFjZjMwMjYyZDc3MmRkNjUxMDM1MDQxODUxOWNiZjJhOWQgcmVsZWFzZTI2LW1haW50Cis3MDY4NiBlNTA4NGQ1MTQ4MDllZjAxYzYyZDQyOWY3NDdjMzgyMTNjYzliZDQwIHB5M2sKKzcwNjg3IGIwYzVkZjhjODRhMzQ0MDRkNTEzNDZkOTRiNTUzYmUxODkxYWE3MTUgcmVsZWFzZTMwLW1haW50Cis3MDY4OCBmMTcxYmFjOWY5NjFkMWQ3MTM3ZmQ0ZTBmZmNhNGQzMWFiNmMwMGM2IHB5M2sKKzcwNjg5IDk4MDdjMjZjYmM5OWZhMWUwMTU1ZGY5NTgyMDdmODY5M2VkNDIzODkgcmVsZWFzZTMwLW1haW50Cis3MDY5MCBhM2I4ZDE5MWVjNjgxMmVlYjViZDJmNjk2OTJjZjU4MmVmYTMxNmQ5IHB5M2sKKzcwNjkxIDA1MDdhYWI1ZmIxMTlmNTkwZTI5MDBhMzQ2M2YyNzY0OGMwMWVhZTUgbGVnYWN5LXRydW5rCis3MDY5MiBiYWVlOTA1MjExMTBkYTI1NWI4YWNlMDJlOGYzN2Y5ZDNmNTM5MDQwIHB5M2sKKzcwNjkzIGJlZjAwY2E0M2VmYWU2ZDliZGMyYmM4ZTNmMjQ1ZmI0NzMwOWYzYzMgcmVsZWFzZTMwLW1haW50Cis3MDY5NCA5MmJjMWRkYmM1NzI0ZjRlMWZlZGFiMGZjYTFjOTZlNGVhMDlmMTE0IHB5M2sKKzcwNjk1IDk3NWIyMDM5OWM4ZDAyOWNiZWRiYmUxN2IyZWJkOTViZjJlNGY5NTUgcHkzaworNzA2OTYgN2I1ZmJiZTdiMDA5YzRmMmJkZGZjOGIwZDg0NmEzNmFhNjdkZGFkMiBweTNrCis3MDY5NyA2ZTFjNGEyOTYzZTRjNDFkNjMyZjI2NDkzNzBlYTJhNjdiNTI2N2YxIGxlZ2FjeS10cnVuaworNzA2OTggOWMyM2M1NGU2YjE1OTY3NDZiYTM4YTU2ZTU3Zjc0ZTUyOTcxODlmOCBsZWdhY3ktdHJ1bmsKKzcwNzAwIDZhZDliMDFmOTVmOTk5MWE2ZTQwNDExYmY5ODRlNTU5Nzc2OWNlMjkgbGVnYWN5LXRydW5rCis3MDcwMSA3MWI2OWE4NzNkMjEzMTY3MDgyYzEzZDQ1ZTJkZjlhNmVmNWM0YzQ1IGxlZ2FjeS10cnVuaworNzA3MDIgNjg1ZjE3OTFmYmM1OWE5NzQxNTk3ODliM2VlOWUyOGMzOWYxMGEwNSBsZWdhY3ktdHJ1bmsKKzcwNzAzIGE3YWU3M2EzNzgwNTk0ZjMzN2ExNTIxOThkNDljMGZiZjlkYmYxYzEgbGVnYWN5LXRydW5rCis3MDcwNCAyZDgzNjQ5YTk0Yjc1YWM2NDU0ZjUyMWY0MDViMWUwZDk0YjBkNjA0IGxlZ2FjeS10cnVuaworNzA3MDYgZmNlOGYyMzg0NTJlMWNhZDlmNTgwYzRlOTdkYzE1MTE5OGEwMWI2MSBsZWdhY3ktdHJ1bmsKKzcwNzA3IDExYzMzNWE5NmY2MGYxZDljZGMyYWI4ZjI2MDFkMGI0MTNhZjg5MzQgcHkzaworNzA3MDggOWU0YmI5NDFhMWVhNTVjNTBhMGZkYjdmOTQ5YzgxODcwOTlhZGRmYiByZWxlYXNlMzAtbWFpbnQKKzcwNzA5IDAwNTcxMzk0MWExOTNhMDY5Mjg5MTZhMDQ2Zjc1ZDE1NWQ3OWY2MDUgcHkzaworNzA3MTAgY2MwMmM5YzI5MGE5NDg0YmI5MjY5YWVmYTk3MTQyOWU1MTI0NGE4YiByZWxlYXNlMjYtbWFpbnQKKzcwNzExIGI5ZDZmZGYwZmJiMzYxZjk4YTkzYTIwNzQ5OTE4OTUyMWU3ZjgzMTUgbGVnYWN5LXRydW5rCis3MDcxMiA4NGU5OWVmYzY3YjJiMWEwZmFjYmZjY2JiYjNmOWQwMzg2MmNmMDc3IGxlZ2FjeS10cnVuaworNzA3MTMgZjVjMmJjYjA5NDdiOGFhNTZmOTYzOTZmNmUxYzhiZjBhNDBjYjNiNCBsZWdhY3ktdHJ1bmsKKzcwNzE0IDE0Y2FlMTE2MDY5ZDNjZjVkYzc4N2I5YjBmMmQ2YTUyZTc4OTlkMmUgbGVnYWN5LXRydW5rCis3MDcxNSAxYjdjY2NhMzRmMmZhNjhmYzljNWVjODM1ZmY1MmY5MGI1NDA5ZjEzIHJlbGVhc2UyNi1tYWludAorNzA3MTYgYWFhZjMyNjk0ODc2YTc2OWIwOTA4MWU4YjQ1NzkwMzcwZDcxYTEyNyBsZWdhY3ktdHJ1bmsKKzcwNzE3IDk2NTIzMGIzMzc5ZjFiODI1YzJmMDA5YTYwNzgxNDA3OGJkYzg2M2EgbGVnYWN5LXRydW5rCis3MDcxOCBiOWM0OTllOWY3NGRhOTViOWQ4MzFlNDkxZDhhODA5YTViYTNhMmNmIHB5M2sKKzcwNzE5IGI0YTRmNGI2MDhhYmIxZDBkZjA1YWE3ODcwZjQzNzI1OGMwMjk5NDAgbGVnYWN5LXRydW5rCis3MDcyMCBhYzE2NGI1NGM4YThhM2MxNmM0MzU1Mjc1NTUwNmE0NGRlYjM1ODA0IHJlbGVhc2UyNi1tYWludAorNzA3MjEgYjRhZDU5NDhlMTk3YjI2YjQ5NjRhOGMxNTFlZmVlZGM1MmUyYjRhYiByZWxlYXNlMjYtbWFpbnQKKzcwNzIyIDEwMTRmMGFiZGI1NzIxMDNjZjc5N2UyMzE2ZTZiZDA1ZmNiODdlNzAgcmVsZWFzZTI2LW1haW50Cis3MDcyMyA0MmU4N2ZmOWY2NWRiZDI2NzRlOWY3MjliMDBiZWIxNTkzYjY0MTFlIGxlZ2FjeS10cnVuaworNzA3MjQgZWI1NTJhNTkwOWZiOGQyMTc2ZGM1OWRiMmViNGViNjdlNWE2ZTNhOSBweTNrCis3MDcyNSAzOWI2MmIyY2IyYzc2MDIzZTBkMzkwMGJhZTVlZjU2NGYzNzI1MGIwIHB5M2sKKzcwNzI3IDhkZjRlMGMwNmU5NDAyNjNhMjg0ZWY5Zjg4ZTRiZmQyYmQ5NWI4NWQgbGVnYWN5LXRydW5rCis3MDcyOCAyZDM4ZGUwMDJiYmViYmYwOTdiOTY1YmFjM2FmNjk4OWNlNWQxYzFhIHJlbGVhc2UyNi1tYWludAorNzA3MjkgMDhiZjMxODQ4YTQyMmFjMTkxNmM2MGU0MTI2NDliNTdiMTYzMTNkNyBweTNrCis3MDczMCAyYmZmOTEyMWJlMGY2NGM5ZTQ3OGM2M2JlODQ4ZmY1MzVlZmMxYmQ1IGxlZ2FjeS10cnVuaworNzA3MzEgMTc1YmE3NmU5YzJiNzRiMjhjZDBjMjkwNjhhMjM4ZTkzYzMzY2NlMSByZWxlYXNlMjYtbWFpbnQKKzcwNzMyIDk4NjU1OWRhNTRkZTE0MTA0YTRhZTBkMWMwNzg0Mzc0YzM4MTJlZmQgcHkzaworNzA3MzMgODFhYTQwYWIzNDZkOTYxNmIwMjgzNThmMmZkZTc4OTQwNmVmZWE0ZCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwNzM0IGYyYzkwZmQwNWQ2NmRjOWM3OGQxMWMwNjA5NGQyYTdkN2NjYzllNmUgbGVnYWN5LXRydW5rCis3MDczNSAxNGUyNzUwZTI1MDZlNTY2YjUzMjI5MzdjN2VlNTdjMmRiMmRjYmEzIGxlZ2FjeS10cnVuaworNzA3MzYgMzk1MjM0NjFlZjdlMjQ3MDM1ZThmM2ViMDM4OGUwNGM4YjRmNTEwMyBweTNrCis3MDczNyA5NzRjMmJlZjI4MDBmMGFkZTRhNThkMmVjYmE5MDU2YjY4ZWYwOGQ1IGxlZ2FjeS10cnVuaworNzA3MzggNTczMDg1MDE1YWE4OTM0Njc0OWQyNDU2ZjM5ODFiZTllMzIzNThiZCByZWxlYXNlMjYtbWFpbnQKKzcwNzM5IDg1N2JlNWQ5NTEyMDhjYWUwYTEwN2Q5YWQxYjBjMDY4Mjg5MzRlNDQgcHkzaworNzA3NDAgMzc2YjgyMWRiNDI4YjhmNzVkNWUyYzQxYWU5ZGE5NzA2ZjA5NTY3MyBweTNrCis3MDc0MSBkZDk3ZDNjM2ZjNjYxOGY0M2ZiYWE3OTI1MDc0YTlmNTM5Mzk4YmRmIGxlZ2FjeS10cnVuaworNzA3NDIgM2I1YmNiOTNiZDExOWRiODZkMzdmMWZkNGYyMGRlOTJjMjE1YjgyMCBweTNrCis3MDc0MyAwZTM4Yjk0MWQ5ZTQ5MGJlYjZhMzAyZjJkNjcyZmRlMmM1OGEyZDNkIHJlbGVhc2UyNi1tYWludAorNzA3NDQgNTRhMTA3NjM4Mzg5NTU4M2I5ZDFkMTkwMjk1ZGExY2ZjNGU3NDYyOSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwNzQ1IDJlNWUwMDFkN2QzNmFkM2I0NTIxNGM5NTU0ZjNkYTQ1NjYxMzcxMTYgcHkzaworNzA3NDYgOTk4MjljOTA4MDU4MTI3ODNlZDNiODE4OGRlN2I0MjAxMGU0MGEwOCBsZWdhY3ktdHJ1bmsKKzcwNzQ3IDEwYTYzYjkzMGNiYWUxNGYwMDM0NDk0YjBkMWQzMjMxZTIyODNhNTIgbGVnYWN5LXRydW5rCis3MDc0OCAyNjhiOGViMzFmNDkzNmUyZWZhZGM0ODcxMGZlOTJlMGNjODJiMTljIHJlbGVhc2UyNi1tYWludAorNzA3NDkgNTJjMzZlNDUwYTQ4YWM1Y2E2NWI2Mzg3ZDVkOTI1Y2FhZjE3YmY2ZCBweTNrCis3MDc1MCA3NTcxYWFjM2UwYzIwYTM3M2EyNWZiZjU2YzU0ZjU3NTQxNjZlOGYxIHB5M2sKKzcwNzUxIGI4ZTg3ZWRmMmY2NjI4NzJmYjU2ZTMwNmEyNDE4NWFiNWUwNzk1OTAgcHkzaworNzA3NTIgZWNhOTM5MDIyYjgzMmUzN2I3ZDY4ZjBkNjM2MTQzMTkwMDQ4N2I3ZCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwNzUzIGMzNzFjMDkyNGYzNTNjOWE5MTY2NDQyZmViMzkwZjg4ODY1N2Q3YzkgcHkzaworNzA3NTQgZGU2M2NiYzU2MWI2OGU2YWM4YmE2ZmE5NTY0M2FhZjMwZDBiM2I2NCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwNzU1IDQ1YTcxNzQ1MDk2MWM2OGM5OGRhODE1N2EzOTljZjhkMGVkMTVlZTUgcHkzaworNzA3NTYgNzgwZDY0MDFlZWQ2ZDVmZmFhNTA5MGFjYWZmZWQ4ZjYxNDMzNjgwMSByZWxlYXNlMzAtbWFpbnQKKzcwNzU3IDJmZjg5ZjBmMWQxOTAyYjgxNzEyNjViZDYwZTRiMGE2YzUyMDA3Y2UgbGVnYWN5LXRydW5rCis3MDc1OCBmY2ZjMmM5OTRhNGFhMGU3NGQ5NDBkOGFhMDBlNTU4NTRjZGU1ZTE2IGxlZ2FjeS10cnVuaworNzA3NTkgODM0YTNhOTZkM2FiNDgzYmFhYWIxYTk1ZDBlMmM5ZWZlODYyYzk2ZiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwNzYwIGU5ZmYwZWZjZmZhOTA4YWQ4Y2YwN2NiMzVkN2I1OTg5OTNkYWMwYTAgcHkzaworNzA3NjEgMWU3OGIzZGNjYTQyYWYzY2ZkN2ZlMWRlM2QyNWExMjc4YTYyYjFjNSByZWxlYXNlMjYtbWFpbnQKKzcwNzYyIDgwMjcxY2UwOWE2NmZiZDk5YjgzM2Y3NThiMDFhNmJkNGM1NzM3ZDkgcHkzaworNzA3NjMgOTRiYTJmYWQ5Mzc4YTY0M2E0YWM2M2UwMTA3YjNhNDYxMjYzZmZlMCByZWxlYXNlMzAtbWFpbnQKKzcwNzY0IDgwZWM1MGQxMzg1N2YyODk0MjZlMzdjNmM5NTQ4YmYyOGMyZDBjN2UgbGVnYWN5LXRydW5rCis3MDc2NSA0MjM5ZmE1NjI3MzVhYjExNTRiODhiZWY3N2U5MDg3ODZmMjMwZjUxIGxlZ2FjeS10cnVuaworNzA3NjYgNTZhMDlkZDBlMGYzMzAxNDdlM2YxOWEzNGNjNmY1NThjOGQxM2I4OSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwNzY3IGY2YjA1MDVhMjJiMzlkOTY0NzIyZDM2MWY4ZmU3YzQ2ZjYxMDY1NGUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc2OCA0M2ViYTc4OTE1OGZkY2EzOWIxMWYzMjJlZDE3N2Q4ZTgzNWM1NmExIGxlZ2FjeS10cnVuaworNzA3NjkgMmYyMjI3MWNmOTI0OThiODJiZGZlNTJmOWMyMzE2M2IzZTE5ZDRiNyBsZWdhY3ktdHJ1bmsKKzcwNzcwIGEyODg3MTA5ZjM0MDY4ZWQwZmMwNmE1NGQ1ZTgwZTlkMWZiNWYzZGMgbGVnYWN5LXRydW5rCis3MDc3MSAwYWZiNWQ4OTQ2NjE2NGZkZDhlOWFiNjA3MzVmNmUwOTg4OWI4NDRhIGxlZ2FjeS10cnVuaworNzA3NzIgNWRlYjI3MDQyZTVhNzllMjQ3ZTNhZGM5MWNjNjBiNmIzNGViMDA3NiBsZWdhY3ktdHJ1bmsKKzcwNzczIDNmODFkOTk0NWU4MmEwZTk4MWJiYTEzOWJiZmJmMjNjZTNkYzkyYjIgbGVnYWN5LXRydW5rCis3MDc3NCA5ZDE3OGNiNTQ2NmEwZDc0MmNhOGE2NjE3NWVmZjE4YjJjM2NkNWE0IHB5M2sKKzcwNzc1IGY0YzVlM2E2NGJlMjNhNGVjYWZkYmNkOGY2Yzc4YTA3MzY5MjMzZjggbGVnYWN5LXRydW5rCis3MDc3NiA1ZWNlMDc4NWRmODEzZDU1Y2NhYWFkYTQ3ODg0NWI1ZjE1ZDRmYTkyIGxlZ2FjeS10cnVuaworNzA3NzcgZTAxMjRmNTQwZWU1NjQ4ZWE5MDMyM2NjNzE0NGFjYTkxMWYxODVhZSBsZWdhY3ktdHJ1bmsKKzcwNzc4IDg5NzZlYzJjZGZlNWRiN2U4NWI0NmUyMGE3NmZlODYyMTA2ZjliOTYgbGVnYWN5LXRydW5rCis3MDc3OSBlNGVmY2IyOTkwZTI1ZWI1ZWMwZTM5NzE3ZGNiNWU0NmFlZDUxOGY1IGxlZ2FjeS10cnVuaworNzA3ODAgOTcwNDk2ZGIxNGJjZGI5MTdiYzI5NjMxODgwZTI2NDUxMWFhOTYyYSBweTNrCis3MDc4MSBkY2FjMDQ1OTIzMDI4NDg0M2RhZjIzYmJlNWFkYjU4OWE1ZTUwZmM2IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3ODIgMGQ2MmNjNWI0OGQ1Y2VjZTQ5NzQ2ZjYxN2E5Mjg4ZTZmNWZkNDcxZCBweTNrCis3MDc4MyBlYTRjNWMzYmM3YWJiOGMzMGM1MjQ5ZThmYzAxNGI0ZDcxMmY1NTM5IGxlZ2FjeS10cnVuaworNzA3ODQgMTFhNDU2NDc3ZTgyNTg3MzNmMzI1ODlmN2EyYjRmZWRjNmNmYjhjZiByZWxlYXNlMjYtbWFpbnQKKzcwNzg1IDgwM2QwMjczY2JmN2MwOTA1NjkwZTY1YjEyNjUzY2RjNWY0ZGIyZjIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc4NiA3NWVjMTJiMjQ0NDhlMmI0ZGMxY2Q1NWRmNGJiMDYxMTU2MjAyNjNmIHB5M2sKKzcwNzg3IDg5ZGVhM2RmNGNiNTc1MGJhZjdlZmE1MWQzZGY3NzY4YWMwYmVmMTYgcHkzaworNzA3ODggYzY5OTU0NzA1M2E5OGMxOTdiOWEzMTYwZDExM2IwYzE1ZWMzMTBjZiBsZWdhY3ktdHJ1bmsKKzcwNzg5IDEwNGNjZDA2NDYxYTg4OWEzNmU0YjQzMDlhYThjMzQ2NjA1NWUwZDcgbGVnYWN5LXRydW5rCis3MDc5MCBmMjhlNmY3ODIxYjMxYjc0NmUyZjZjYjNmZDk3Y2QyODJmNDI0ZGU4IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3OTEgYzFhM2NlYzBhY2Q0MjdmMzE4YTFmZDMwMjUyM2M1MTBiNmM5MjhkZSBweTNrCis3MDc5MiA3MmJiYjBmOGIwOWE3MjE0YmZkMDExOWIxYzM5ZTQyZjViZDQyYzgwIGxlZ2FjeS10cnVuaworNzA3OTMgMjZiMWFkMDlkMWE3MjM3ZjJhMGRiNTJiMmFmYjlmYzhiMzU5NGY3MiByZWxlYXNlMjYtbWFpbnQKKzcwNzk0IGVlMjIyYzRkMTI5YTJmNjg1YjhiOTI2NGYyYTRmYTI5ZDMwNjBlYWIgcHkzaworNzA3OTUgNTIxOTVmY2FiMTkzZDY5NDdlM2JjZWQyMTlmM2ZmZTkxMzQ0MGUzOSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwNzk2IDM4MDkzY2JlZDZhNmRjNjM3OGQ0YzZkNjY4MWQ1NGUyNzAwMjU5M2MgcHkzaworNzA3OTcgZDEyYjAyYWJlNmRjYjQ3YWIyYTE5NGMxNjdlZDIxNjVhOGViY2NhYiBweTNrCis3MDc5OCAyMzFkNjFjNDNlOWNkZmRkNzY0NWVhNDNmZTU1ZTAyZWJhZTYyMmUyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3OTkgM2RhOWRjMGM2NWM2YjFmMGFkNDJmMDZlYjgyNjc3MDFhZTQ2MjM0NyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODAwIGE5MWNmMGRlZmJkNjc2NjhlNGMzN2Y2ZWMxODRiZjAxYmJlMjY0ZDkgbGVnYWN5LXRydW5rCis3MDgwMSBkNGY4NjY3MzliYjI0YzM0MTJlZDc0ZDM1MWFlMmE2YWIxYzE0MDMwIGxlZ2FjeS10cnVuaworNzA4MDIgOTYyZWJhNjIyOTlmYjg4ODg3ZWQwOGZhNzRhMTQ2ODk0ZTAwZTk1ZCBsZWdhY3ktdHJ1bmsKKzcwODAzIDIzNTYyMjYxNzQ5NzFlYjgxZjdhZTA2MzJlOGE5MDIyZmVmYmU2MmUgcmVsZWFzZTI2LW1haW50Cis3MDgwNCBlY2Y4NDI0ZDc0MjIwYjQwMDY5ZmI5NWJjZjk5N2JhYjdiZDdkMWQzIHJlbGVhc2UyNi1tYWludAorNzA4MDUgZDI0NzVkODA2OWFjZGM2Zjg3MjdjZTNmODU2MGE2Y2I3YjgwZGJmOCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODA2IGU0Nzc4ZWE4ZTRiMjhkNTQ2YzkzN2NlMDIxMTYyMjk1MmNiZDQ3MmQgcHkzaworNzA4MDcgNmY0NjBiN2FjZjhmNGJjYTcxMGE5MDg1ODdhYzM3ZTIwODQ2YzI2NSBsZWdhY3ktdHJ1bmsKKzcwODA4IGM5OGE3MWU5OTE2MmFjYzg2YTJlNDBhMmIwMzhjODE0YmViYmNkNDAgcHkzaworNzA4MDkgMDdkNjUxNzFhODAwNjkxMWM3OTczNDVhMzUyMWQxNTc1MzllZTQ5YiBsZWdhY3ktdHJ1bmsKKzcwODEwIDRhZGFiNzI0MzMzOTk1YmExN2IzNTdiZDY1ZmZhZDg3NGM4ZTIxMDAgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDgxMSBlZWQ0YzdmYTNlMDU4NzQyZGIxODFjOWMxNjFkMDMxNjMzOGZhZDM3IHJlbGVhc2UzMC1tYWludAorNzA4MTIgODk5YWEyZDE4OTg0N2I3ZjVjOTU4YThhZTFjOTdiMmRkNGIyMzNhMyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODEzIDY5MTA3OTJmY2Q0YjY0NTllM2ZjMjRlZjEzM2M2ZDMzOGU5ZTYxOWYgcmVsZWFzZTI2LW1haW50Cis3MDgxNCA0ZWViMTRhOWM1ZDJkNzFjNTEyZDNjN2ZkMmFmMGQ4MWRiOTNkMjA0IHJlbGVhc2UyNi1tYWludAorNzA4MTUgOWVjZWI2MTgyNzRhNTIxZmM1NWMwYjVkMWZjOGUxMTFiOTFiZjZkNiBweTNrCis3MDgxNiA5MzJhMWU1MTRjMTYyMzRmY2NiNDIzZGY3YWIzYzJmMWEwMzA4ZDA0IHB5M2sKKzcwODE3IDIxYzE1OTRhYzM2OWZhMDlhYjdlZjlkMzhjZjMyZjg3OTJhODBmOTUgcHkzaworNzA4MTggYzJiMDE0YjU1YmFjMjQxZTFmODI5MjYyNDYyZWIwNGQxZDBiNTcxOSBweTNrCis3MDgxOSAyMjQyYzJlNmM3M2FjNmQ2OTEwNDZjY2NlN2UwM2IwZTY4ZmZjNjMxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4MjAgMDVmOTBjZWNiMmEyOWUwZGUwNTRjZDljNjg0NGQ2ZjZjZTY4MTRjZSByZWxlYXNlMjYtbWFpbnQKKzcwODIxIDY2OTRmM2ExYjZlNzI3OWVlOGJjNjc0NGZjMDNhOTFkNzI0ZDg5N2EgbGVnYWN5LXRydW5rCis3MDgyMiAyMzQ1MWIwOWYxNWI5MjNhODFkYWI4ZDA4YThkNmE2YWI5YmIxZWY5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4MjMgMmI0MzYzMTBmYzhiYjA1ODk5YzZmNDRhNGZjZDljMmNmMDkyMTU0ZCBweTNrCis3MDgyNCA0NDM2MzkxZDJhOWYyNGJlODIxMDdlNzIxMjJkMDJiOGM4NDMxNDY4IGxlZ2FjeS10cnVuaworNzA4MjUgYWE3Y2YzMjgzZDZlMDYyNmQwZTlmMDhkZWFmMzk2ZGUwOWM4MmViZiBsZWdhY3ktdHJ1bmsKKzcwODI2IDQ4NTdjY2E0NWFhNTQzMDgwODA3NDZlMTdjMDM2MGY2ZDdmOTkwY2UgcHkzaworNzA4MjcgMzk4ZWM5NDAyNzdmNjQ3NmNkYmMyZTJhM2U2NjBjNzg0NDMwZDc2MCBweTNrCis3MDgyOCBlMTI5NDQ2ZGZiZjlhMWMyZDNhYzkyMjU3NzgxOTBhODIwZGYzYWI3IGxlZ2FjeS10cnVuaworNzA4MjkgNTE0MjlhMTk2Yzc1YWUyM2EzMjg4M2JkZWIxM2M5NmFjNzkxOWVhMiBweTNrCis3MDgzMCBhZTYwZTRjMjBhZTMzZjg0NjQ2MmVkNTJiYjNjNDllZjNlODRjMDIwIGxlZ2FjeS10cnVuaworNzA4MzEgZDhjZWIyNmM2NmM0OGMyZGZkZDUxODNmMDI5ZjNlNjk1ZmY3MjE3YyByZWxlYXNlMzAtbWFpbnQKKzcwODMyIGRhZmQ5ODJkZmNmNGEwZTIzYWQ1NzM2ZjNiNjAwYmY1OTcxYjI4OGMgbGVnYWN5LXRydW5rCis3MDgzMyA1MzRmYWY5MTg3ZTg0MDBhMGFhNTNlMGFjNmJhM2YxMDgwYTRlYTE3IHB5M2sKKzcwODM0IDM3NTI4NzMyN2NlOWVmYzcwMzMxM2EwNmVlY2M5ZjQ3MDEwNTUxNDggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDgzNSBkMTg2ZDM1M2NjODE3MGZhZTFhZTcwMjM2MTVkY2I5NTM2NWRkYjczIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4MzYgYjk4NTIzYmUwYTE1NzA5ZmFiOTMxMDcwZjViYzBlZDY0MTY1ZWY0YiBsZWdhY3ktdHJ1bmsKKzcwODM3IDExZDZlNTM4YTI3OWI0YTI4Nzg0ZGE4ZWQyYWNkNWUwYWVjNjI1YmMgbGVnYWN5LXRydW5rCis3MDgzOCBhM2IyYTk3MDZmYzM2ZTIyYzE4NTQyYTE4MjBmZGI1YmNkYmZjMGUzIGxlZ2FjeS10cnVuaworNzA4MzkgNmE2ZGQ4YWIzZjIyODdlZDY3MDE5YjYyYmNiYTBmM2IxMjUyMDdlNSBweTNrCis3MDg0MCBhMzk4YTJmNzVkNDQ0ZmY1ZDEzNGRjYWEyYjY4ZjhlNDliMjlkNWRmIHB5M2sKKzcwODQxIDFkMWViMTQ5YjMyMzcxYjExMmVjYzhkMmQyOTdkZWMzNGUwNWI0MDQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDg0MiA3MDcyOWU3MzUzZGIwMzU0ODRmMWZlOWQ1YjUwN2RjODI3NWU2MjVjIGxlZ2FjeS10cnVuaworNzA4NDMgMmQ4MGMyNzk3NTAxMmRmMjk5MGJkYmYxNzlhNTA2ZWJiNjU3ZGYyOSBweTNrCis3MDg0NCBkYjUwMTg3YjRjMGNiOTE1YjZlNTNmYjA0MzBmNWFiMDY2NjY0YTZmIGxlZ2FjeS10cnVuaworNzA4NDUgNjI1OWY4MGRjMjRkNjA4NDRiNjcyYTk4ZTVkMTIwOGU2YzAyZTQ5NiBweTNrCis3MDg0NiA4NDAwMzJkOWVmZDYyY2FiN2Y4ZjI1NTlhNTdlYzk0Mjk4MjdmNmI1IHB5M2sKKzcwODQ5IDg3MTcxMjgzZDAyZjhkZGYzMTY3NDRmMGRlOTNlMjdlNWY4NjE5ZDAgbGVnYWN5LXRydW5rCis3MDg1MCA2ZGRiZGZkYjdhODZkOWFkODBlOGZlNWY4NTg5MDE4MDc4MWE1NTUxIHJlbGVhc2UyNi1tYWludAorNzA4NTEgZDQ5NWExMWM3NmU5ODg1ZWFiNGQ4YjM4NzYxN2M1OWUxNDNlZTAyNyBsZWdhY3ktdHJ1bmsKKzcwODUyIDc2NjNjNDljOWJmNmRjYzdhZjM5OTc5ODM4ZTM5MTRiYmEwYmQ0NmIgbGVnYWN5LXRydW5rCis3MDg1MyAwOGM4NmY0NWFjOTE1NWM1Y2VkNzdlY2NlN2E2NjkwMzM0ZWNiNjMxIHB5M2sKKzcwODU0IGZlYTc0ZDliMmE1ZjMyNjE3Zjk5MDcyYTA3NDUxNTJjZDIwOGY2YzQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDg1NSA2MTU0OGIzZTRjYTgzZWYxN2M4M2JhMmEyM2E4Y2Y0ZDU0YTAxYjQwIGxlZ2FjeS10cnVuaworNzA4NTYgNzY0MWEzZjBiMmVjMzVlY2I4NzBiYmRhNjVkZWYyMmQ5ZjgzMjk1YyBsZWdhY3ktdHJ1bmsKKzcwODU3IGU1ZDhmMGMwZDYzNDA2MTMyNWQxNTRhYWY4ZTE3ZWYwZjJkM2M5ZWEgbGVnYWN5LXRydW5rCis3MDg1OCBhMDIwZTY5ODM4YmE3MmFlODg1NzEzZDMyYzA1MjczNjRhNTQzYjVhIGxlZ2FjeS10cnVuaworNzA4NTkgZDAyNzU1NzRjN2NmZTNhZTdkZGY5NTRiYzQzZDBkZmNhY2E3Yjc5YiByZWxlYXNlMjYtbWFpbnQKKzcwODYwIDNkNTk4MTc1MDY4Y2JiMmM4YTQwM2ViMDRhNjE2MzY3NjgzYjA2Y2MgcHkzaworNzA4NjEgZWYyODE2YzU2YWMyZWU2NzI5MTEyZmQ5YjVkNzc1MWJkYmM5NTc5NyBweTNrCis3MDg2MiA4ZjUxZGQwOWYzZjIzYzdmYWRlOThkMjZkZDJkOWFhNjlkYjAwYzk1IHB5M2sKKzcwODYzIDE1MTZmYTIyM2ZjMTRiNDI5MmYwNjFkODI0ODRmYjdlNTllYjE2NTYgcHkzaworNzA4NjQgNTEwZWQwNTdiOTVmYTg2YzYwNWY0OGE4NThiNjZhZjgzNTE4OWRmMiBsZWdhY3ktdHJ1bmsKKzcwODY1IDU0NmM1MDIxZjAyNzhlMzMwZGQ1NjNjNDg2ZTVlYTczYjEwYjIwOTYgcHkzaworNzA4NjYgZTE2MDdmNmQ5YmU4NzU3OThhMjU3YTAyYWQxNDEzYWM0NTA0MDZkYSBsZWdhY3ktdHJ1bmsKKzcwODY3IGU3MGE2YzQ2YjNhYjQwZjMzYmVlMzllYTcwOGJlNjJhMGM2ZWNkN2IgbGVnYWN5LXRydW5rCis3MDg2OCBmNGI5MDAxNWVmMDA5OTIyNjhhNjllNGM5YzE0NmIxZjBiYzM4ZWI1IGxlZ2FjeS10cnVuaworNzA4NjkgZDNlMzFiZDU0MzBhYjY5YWFlZDY1NDM4NmMxZDQxZWY0ZDU0YmU0NyBsZWdhY3ktdHJ1bmsKKzcwODcwIDAyZGIyZDM0MDEzMzRiMzVjZWI5NzI0OGMxYzFkYmFjZmExOTc4ZmMgbGVnYWN5LXRydW5rCis3MDg3MSA1M2MxYjVmNjY5NjUyZmZkMTUyODBkOTVmMDIyZjcwY2EwMGI3MjE2IGxlZ2FjeS10cnVuaworNzA4NzIgZTZiM2U2OTZkYmNlOGQ0NGMzZjU4ZjkxYTkyNTViYmI0MjEwMTY4NyBsZWdhY3ktdHJ1bmsKKzcwODczIDYwOTZlYTgxZGUwYjdhOTM4ZjQyNjBhMjE5YWUwYjQyYjkxOThlNjkgbGVnYWN5LXRydW5rCis3MDg3NCA2OGI3ZTgyMTdjN2U1MDQ2MTkzYTExZTc0NjUxZGU4NjUyYjhjMzU2IGxlZ2FjeS10cnVuaworNzA4NzUgNDViYTQ3NWQ0ZTk4YzcyNTY2NzBmMDFjNTdlNDZiOTNlZGQ3N2QzNyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODc2IGIyYWRiN2ViZGI1NGYyNzkwYjBkMDcyNDE0YjE4NmM5ODkzMjAxMjggbGVnYWN5LXRydW5rCis3MDg3NyAxMTI2NjlkZmYwNGFiYWYzNTFmMjUyMjViMGYyYzUxNzYzZjA0MTlmIGxlZ2FjeS10cnVuaworNzA4NzggYWI5YjdkNWRiOTM1OGZiM2RkYjdhNmRmYjJhNmQ0ZDBhY2YzNTU4MiBsZWdhY3ktdHJ1bmsKKzcwODc5IDNhZWE3NWEzNDMzNzNmZDk2OTAyZWU3NjczNGFlMzI2ZGUwZTYzNDggbGVnYWN5LXRydW5rCis3MDg4MCAwYzE3ZjdiZWUyYTA2OTBkZTY1ZDg5ZDk5NDllYTVhY2RhYzYyYjJiIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4ODEgZDljOGQxYTVkZGVlMjM1NTg5NTc1OWU3MjEyYTBlYjE3NWUzZGQ4MCByZWxlYXNlMjYtbWFpbnQKKzcwODgyIDlmOGQ2ZGU4OTAzNTIxYWI2OTJkMTRmYWQwNDEwYjU3ZGRkZjMxOGUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDg4MyBiNWFhOGFhNzhjMGYxYzExNDMwNjQ3MDY0MjhjMWJlYjUwZDVkNTlkIGxlZ2FjeS10cnVuaworNzA4ODQgYTUzMDFlZGFhNzA0Y2IzMGNiNjYyMzY2ZDZiZTM3NWVhZDA5YTg4NyBweTNrCis3MDg4NSAxZDdhNzcyYjNiMTgzN2JlOTBiZDA3M2QxMTFiYzIwMTNjOGYwNmQ1IGxlZ2FjeS10cnVuaworNzA4ODYgMmI5YzkxNjY4Nzc3NGY2YTMzZTc2ZWIyZWFmY2MxMTY1ZmNhOTUxOSBsZWdhY3ktdHJ1bmsKKzcwODg3IDA5YjcwZDU4ODhiZmI0YTIxNTBlMzZjOGJlNGRlOTA1NDVhZTExZmYgcmVsZWFzZTMwLW1haW50Cis3MDg4OCBlZmFhNjdiYjNmMDZmYThlNDE2YTYzY2Y1NTc3YjI5YTgzYzI3MGIzIGxlZ2FjeS10cnVuaworNzA4ODkgY2IwOTY5MDcxZjJhZDk0YzlmNTg0N2M3MDA5MDdjYWZmMjc1NmQ3MCBsZWdhY3ktdHJ1bmsKKzcwODkwIDk2MDllZDdkZWFmODkwNTMwNzE4YTBlYTdhYmRjMDE2ZmI2NzExZmUgbGVnYWN5LXRydW5rCis3MDg5MSAwN2M1YzBkOWU3MDAwYWNkMWZlNDE5ODg0Y2JlMjQxYzZhM2RhMzcyIGxlZ2FjeS10cnVuaworNzA4OTIgMjFiMjdlMTE1ZGQyNTAwYjYzNmM0YzhjZTQyNjIxYzk1YjZkN2Y4OSBsZWdhY3ktdHJ1bmsKKzcwODkzIGZiZDQwNTQ4MTMwZGU3Y2I2MGMyNjIwMjkzZTFhMWY5MWU0YjA3ZDQgbGVnYWN5LXRydW5rCis3MDg5NCA1NzQ0NDY4ZTYwOWJkYmY1OGRmMTY2NjJmMTRiOTQ2MDYyMzBkMmI2IGxlZ2FjeS10cnVuaworNzA4OTUgODBmZjg1ZDg3ZjY3NWJkY2E2Y2I4OTVlMzExMjE2YTUxMjU4OTFjZSByZWxlYXNlMjYtbWFpbnQKKzcwODk2IGY2ZDljMjA4OTE3MDc0MTcyMmFjYzliMzY3ZTkzNzFjYzRlMjc0YmMgbGVnYWN5LXRydW5rCis3MDg5NyA1ODdmY2ZiZTA4YjYzODk4N2E5YTBmYWY4ZTQwNzA5ZjFkMDAzNTJjIGxlZ2FjeS10cnVuaworNzA4OTggNjY0MDk5NmYwNGU3NDcxYmY0ZDY3ZjhlOWM3ZjJkYjA2Y2Q1ZTFkMyBweTNrCis3MDg5OSAzYmY5YWU0Mzc2MDZjNGEyYzZiMzJjYTZlOTkzZjM3MDQ3ZWViNjYzIHJlbGVhc2UzMC1tYWludAorNzA5MDAgMjFiYTBiM2ZlODE5ZmQ2YzM3ZTc4MjEyNjk4MGE0NDNjOGUzM2EwYSByZWxlYXNlMjYtbWFpbnQKKzcwOTAxIDBkMDgzZmIwNjY1ZGY5N2IwMzIxMWM0NDhhNjk5NmI5NDdkYTE1ZmEgbGVnYWN5LXRydW5rCis3MDkwMiBmYTkyNDNiZjUyNTY4NjYyMmIzZDYyOTYxMjFiZWJiZjFjNTAyY2IyIGxlZ2FjeS10cnVuaworNzA5MDMgZTUyODZiZTI0ZWQ1MTA2YWNjODRhMzVmNjZlZDY5ZTY0ZDg4MDZkZCBsZWdhY3ktdHJ1bmsKKzcwOTA0IDdkZjI0NDExMGRkNWZhMTc5NWU4YjNhYTY4N2ExMmQ3YTI1NWNmY2YgbGVnYWN5LXRydW5rCis3MDkwNSBiNjU3OTc4ZDU2YWQ2ZTIxM2M3OGM0NzM4NGM5OWVjNDFlMDJmZDFkIGxlZ2FjeS10cnVuaworNzA5MDYgNWYzZmUxZjI2YjM2ZDA5ZDhmMGQzODM2MWY3NmNlODk2ZDI0NDRkMyBsZWdhY3ktdHJ1bmsKKzcwOTA3IDE4MzliODU1M2EyZGJkY2FlOWVhZWI4MDljMTRlMDhlOWE1MDZhYzIgbGVnYWN5LXRydW5rCis3MDkwOCA1Y2Y3NDEzN2MwZjg2MDhjZGE5ODg0YjMxNDI0OTkwYWIwMjc0NTQ0IGxlZ2FjeS10cnVuaworNzA5MDkgZTI4MThiOWY5NjRiZTgyYThlNjU3NjZlY2UzNTgwZTM1NzA0NWE2ZiByZWxlYXNlMjYtbWFpbnQKKzcwOTEwIDU4NTZmYWUwMDllODZkNTYzY2EzNTEwYmY0NWFlZTYxZTk0MjEwZTQgbGVnYWN5LXRydW5rCis3MDkxMSAxZTA1MzQzMTlhM2VlN2U2NzUxNGY0ZGI4ZDc1Mzg1MGMwMWM3NzhhIHJlbGVhc2UyNi1tYWludAorNzA5MTIgOWI5NmJkMDkwOTA4YTY3OTM4YjE3NTdhYjJlZjU5YWVhYmUzNGVmYiBsZWdhY3ktdHJ1bmsKKzcwOTEzIDExMTM1MjExMmFmYThlZjJiOGI4MjJjYTc2M2MxYzYwMDg4YzZmY2IgcHkzaworNzA5MTQgZjdiMTFiZjAxYTEyNjRkMjIyMzY3MjE4OWJiZGE1MWI2OTMwMmZlMSBweTNrCis3MDkxNSA2OTY0NmY5Y2Q3MGI1MTE4NWY3NTJmNzNjYTVjYmFkODRmZWU2Mjk4IGxlZ2FjeS10cnVuaworNzA5MTYgZmEzYjJlZDIwZDg1NzI4ZjIzY2QwNzFjYzFjMmJmODlmN2ZlZGM2ZSByZWxlYXNlMzAtbWFpbnQKKzcwOTE3IDkxNGE1ZGVkMWJlM2M5ZjZmNjBlZmI2ODdlZmIwY2MwNWVmZWJkMjcgcHkzaworNzA5MTggZmZhMTNhZmYyOWRiMWRjMDA3NjNkOGM2MDI3ODlhNGQyOTI1ZjlkYSBsZWdhY3ktdHJ1bmsKKzcwOTE5IDg4NDNhODQyN2E4YzgyYWYxMTg2OWI3NWVhNWY3Y2Y4MTYwMDM3NDkgcmVsZWFzZTMwLW1haW50Cis3MDkyMCA4MmFkZWRmZDIzMjRmNGIzOTBkOTUzYjJlOTc0NGY5YThmNGVmZGQ1IGxlZ2FjeS10cnVuaworNzA5MjEgZjc1OGRkMmE4OTY4OWJjMjAwNjRhY2JhNjc3YzNhMDYwYTNkMDFlMyBweTNrCis3MDkyMiA5ODFhOWIzZDk3ZjNhZmUyZDcyYWY2ODlhOTBhNjNlZTZjNWM3ZTI5IGxlZ2FjeS10cnVuaworNzA5MjMgZDNmNWE5ZjA0MWQ4NDBjZmYxNDgxNGQ1ZTUyMWUzYzk1OWQ1YzFkNyByZWxlYXNlMjYtbWFpbnQKKzcwOTI0IDMwZDg3NGIxYzRhNzIzNDNlZjY0NzhlYmExMTZmYzE0ZDA5MjQ4ZDMgcHkzaworNzA5MjUgMDAyZmE5MjA1YWFlMWFiZDg0MzVkMTNmMmE0NzNmYjdhODI4MjExOSBweTNrCis3MDkyNiA3YTc3ZTRiZWFlNjY1ZDgwNzMzYmJhNzIzZGRlNTViODVhN2FiYTQyIHJlbGVhc2UzMC1tYWludAorNzA5MjcgNzY1NTE0MmY1MjI0MTRhYjkyOWU5MWQzOWMyNTA2ZGZkODE1ZDc0YyBsZWdhY3ktdHJ1bmsKKzcwOTI4IGI0MDI2YWM3ODExNDY1MzU3NTJhYThmNzk3M2M0MGIxNDdkOWEyNmEgcHkzaworNzA5MjkgZjg0MzQwODg2OTM2Y2IyZTg1Y2NmOWY0ZmU2YjJkNWE4ODBlZWU3MCBweTNrCis3MDkzMCA1NzA0NGEzNjUyZDhiNDJlMDgyZWE5YTBiZjUxNDMwZWEyNTljMmFlIGxlZ2FjeS10cnVuaworNzA5MzEgMTg0Y2E2MjkzMjE4Zjk2ZjQyYTY3MjkxNDk2NzAzMTRiYTAxOGE5MiBsZWdhY3ktdHJ1bmsKKzcwOTMyIDA0ZDQxODhmYjQxMTYwNWU5NWJhNDBlZmVhMTFjY2Q4NDU0ZGQ2MzUgcHkzaworNzA5MzMgMWFjMTE5M2E2MWQyZjVmN2QyODRhZTljMDA5OTgxYzQ4M2Q3NTA2ZSBsZWdhY3ktdHJ1bmsKKzcwOTM0IGU1NTVmZDhjNGI2ZWU3OWVmMDM0MmExNjY1NTU3Y2UwNDM3YmQ0Y2IgbGVnYWN5LXRydW5rCis3MDkzNSBkODUwOTBhNDgwYmE0YWIwYmE0YWZhNDVjYzVkZmJiYzNlMGM3YmRlIHB5M2sKKzcwOTM2IDUxM2Q5NmJmMGQ3MDM1MjZkMjFjNTI2MWI0ZjI0MjAwNTVhYzI2MjMgbGVnYWN5LXRydW5rCis3MDkzNyAxYmE2NWE5MWU1NmJlOWNiZmIxNjRmNDZjNzM5MzFmYTdjZDhkMzFiIHB5M2sKKzcwOTM4IDc5YTQyMDYxNzY0MTNjZGFmOGRjMWEzMWYyNTVmZjdjZmZjOWJkYzMgcHkzaworNzA5MzkgY2MyYzcxMzNkYTRmNWY0NzYyYjgyYjU2NWFiMzhiZDdjMjg2ZmQ0NCBsZWdhY3ktdHJ1bmsKKzcwOTQwIDc2MjM1NTgwYWEzZDQ3YzA0NGI3YzljMjNmZTdmNDc1ODM4NzQ4ZTEgbGVnYWN5LXRydW5rCis3MDk0MSBmZmE4MWJkMmVjNzJkNjdkYzYzMTM5NTU3ZDVjYzU5MDU3M2NjODA2IHB5M2sKKzcwOTQyIGFjZmMxOGNkY2RmYjc3MmJlNDZmZDdjNzY3YWVjNzJiODk0MmE0ZmUgcHkzaworNzA5NDMgMDgyYjI1MGQ1ZWU1MGZkYjkxNGU5OTE5NGQ3MTdkMzFiMGU5OTUxZSBweTNrCis3MDk0NCBmYTdjMzc2NWQxMGZmNGMzZWZjYTkxYWIyMWY3YjhkMGEwZmU5NDVhIGxlZ2FjeS10cnVuaworNzA5NDUgMDUzMGFhZGZmNjk2ZDFiNjZjNjY3Y2JkMTliMTBkMmNjMjU5MGVjNSBweTNrCis3MDk0OCA3MzQ3ZDkxNmYxM2FlNGNlMTkyMzQ2NDFjZjFjYzRkNTMzZDUxNDJiIHB5M2sKKzcwOTUwIGRhNzQ0OGViY2U4YjExODY1Nzc4MjhiMjE0NTlmYWNmNDRlNTlhMjUgcmVsZWFzZTI2LW1haW50Cis3MDk1MSBkYzUzZjM3MGNhOWQ3NDc1M2E5NTAwNTU3ZThkYzNiZTAyZjVlYmM1IGxlZ2FjeS10cnVuaworNzA5NTIgMTkxOTBlMDU4ZDU5NDMwNWYwOTE0NDBkY2Y0N2IxM2U1OWMxZmRlNiBweTNrCis3MDk1MyA5N2ZkMGQ3NmFlOWNlN2IxZjU0ZWJjOGVjNDg2Zjc3NjdlOGMyNTEzIGxlZ2FjeS10cnVuaworNzA5NTQgMDI3YTNhZGMwZDhmNTYyMDAwZjI0NmEwNzRiY2MxOGQ2YzEzOGIzZSBsZWdhY3ktdHJ1bmsKKzcwOTU1IGFiZjZkYWQ3ZDY0ZmUyODM4NTI3YTBmNDYyOGY4NzRmZTllODI3YWQgcHkzaworNzA5NTYgNzZkNjFjMTI2MjNjZjkxZTc4NTVkNmMwN2FjY2UxY2QxYzI3ODMwNyBsZWdhY3ktdHJ1bmsKKzcwOTU3IDQ2ZjFjZTc2MTk5ZWI0NTE5OWZkZTEzNDg5MTI2NTAyNWNhY2I3NjIgcHkzaworNzA5NTggZGY1Y2IzODM2YjI4MmFlYjJlMmFlMzYxMTFkYmY4ZTRjZGU5ZGI3MyBsZWdhY3ktdHJ1bmsKKzcwOTU5IGNlMGUyOGRjY2JjMjI4YWJiOWU4YTE3NDYyNjA2ZjNhNzdiZTYyMTcgcHkzaworNzA5NjAgOGI1MWQ5NjM2MGIwM2M1YzY1MjFiNTBiZTBkYzljYTQ5NGE3ZDVhOCBsZWdhY3ktdHJ1bmsKKzcwOTYxIGMzZjA3YjY3N2FmYTY3NDkzNmQxZWEzNDhhNjkxMTFiMWMwNmRkMTggcmVsZWFzZTI2LW1haW50Cis3MDk2MiBlOWZjNTIyYWFlOWE3MzljNTM3MzFjMjJiYjliZGRkM2UwM2JiM2ZiIGxlZ2FjeS10cnVuaworNzA5NjMgMzQ1NjY3MWE3MmJjMTY2YjUxMTgyMzNlNzAwNjQxNmU4YTBhOTNjMCBsZWdhY3ktdHJ1bmsKKzcwOTY0IDE4YmQzY2Y1Mjg3ZmYwMDg5ZGRjNzZhOThjZDQyODU3YTJlMDU0ODEgbGVnYWN5LXRydW5rCis3MDk2NSBiNWQyM2ZhOWI4YTQ4NDdmMjM5YjdhYjQ5Y2UxNjM0OWU3NDEwN2ZhIGxlZ2FjeS10cnVuaworNzA5NjYgMjg3ZGYzYTA5ZjM1MzBlMzU1YjdjNmU3MmQ1NDUxM2FkN2Q3ZGUzMSBweTNrCis3MDk2OCBlOGVmMTNjOTg1OTcwOWM1ZDViNjMyNzNiZTgyNjljM2EwZDdjM2ExIGxlZ2FjeS10cnVuaworNzA5NjkgMmU0ZGJiMzk1NDE3Y2I2ZDQwM2Q0NWViN2VlNDgwNDJmYTdiMWI3MyBsZWdhY3ktdHJ1bmsKKzcwOTcwIGMzMzdmMjAyOGQ4Yzc3ZTA3NmVlNzBmNTI1OWE0MWEwM2VjYzQ0NWEgcmVsZWFzZTI2LW1haW50Cis3MDk3MSAxNmMxNDQyNjIzNzQ2MjIyYjAzMGZhOGJhMDZhZGNkNmEzYjZlMWQ0IHJlbGVhc2UyNi1tYWludAorNzA5NzMgY2UzYjVjYWY0NTIyYzhhMTk4MDJhZjFlMWRmNTE2YmU3OGQ2ODliMCByZWxlYXNlMzAtbWFpbnQKKzcwOTc0IDhkZmY0MDY0MDNiZTJmZjdlNDBiYzYyY2U3Y2IyZTU1NmQ3NDVmMTIgcHkzaworNzA5NzUgYjgxNGIwYzM1MzQ3MWNmYjRiNzQ3MjA4MzJhNDVmZTU2YWYzMGI5YyBsZWdhY3ktdHJ1bmsKKzcwOTc2IDJkOTVjMDE0MTIxNGY4NGU0ODViMDJjOGVjZmM0ZWY5YTZmNzkwYjAgcHkzaworNzA5NzggY2VmOGI4MjU5YWM5OGViOTc5ZmYwY2JhMjE2MTU2NGNkNDkxMDE2NiBweTNrCis3MDk3OSA3ZTJiYmI0ZGJmODc1OWUxNTQxZDc1YzNiNDAzODhhODI1MTM4MzYzIGxlZ2FjeS10cnVuaworNzA5ODAgYTczMzczY2NjY2MyMWUwZGYyNTNhZWVkYzM1NDEzZDI4NzM1OWQxYiBsZWdhY3ktdHJ1bmsKKzcwOTgxIDQyZGE3MTU0YjI3MGJiZDk3OTI5YjMxZGFhOTc0Mzc0ZGQzYjdlMGQgbGVnYWN5LXRydW5rCis3MDk4MiA2NzU0MTVjNWI5MTI1NzkzOGRhZTBlZTJjYWM2OWM3OGIzYTRhMjBmIHB5M2sKKzcwOTgzIDZiNmFjNmFjNTU2NmE4NDU3NGM1ODI3NjM1MGQ5MmM1YWRmMWI0NzYgcHkzaworNzA5ODQgZDdmNDc4YzY4MWI5ZTMwNWU4ZmZhMzI4ZGY2OGE4NGQ2YWMwYzA5NCBweTNrCis3MDk4NSBmOGFhOGQzZDY2MDc4ZTliYTAwMGI5M2EzYWViYmE4OTc1OTM3ZjNmIHJlbGVhc2UyNi1tYWludAorNzA5ODYgZTllODdkMWEzODljNTNkMGJiNzUxOGFjOTc0MjM3YzhhMDlkZjBkZSBsZWdhY3ktdHJ1bmsKKzcwOTg3IGYxNWU3YTkzMTMzNGQ1MDBlNTdjZDUzNDgyZDFlMDFiMTA1NzAyZjcgcHkzaworNzA5ODggYWZmY2YwNzA1NDM5YTViNmQ2YmJiMzI0OTc5ZmE3NzYzOGFmYmNhMSBweTNrCis3MDk4OSBmOTQyODkzZmE0ZDhkOTJiNjRiNmUxZmE4NzY3MTU2YzQ0YjNkMzllIHJlbGVhc2UyNi1tYWludAorNzA5OTAgZGEyYzZkZDI2ZTg4ZGFkMDIyNDVjYWI2MjE3MDk0ZDk3NWVlNGQ0YiByZWxlYXNlMzAtbWFpbnQKKzcwOTkyIDllNTc5YmFiNzZmMWM1NzJhNTIwNjFhYWU3MGUyMDQ2YTc1MmNkYTIgbGVnYWN5LXRydW5rCis3MDk5MyA1MTAyYmJmNGFiNzQ5NWM1OTE4YjI3M2YxY2ZhMDFkYTRiNjZlYmYwIGxlZ2FjeS10cnVuaworNzA5OTQgOTg1NmI1YmUyNmM0Y2FiZDkxYzNhMTdlZmUzZWJjMjgwYzBhNjc1NCBsZWdhY3ktdHJ1bmsKKzcwOTk1IDNiMzRjOTM3NDk1NTJiMDMyMzMxMGY1ZTFkYTNhNzc1ZjRlOWFlMmEgbGVnYWN5LXRydW5rCis3MDk5NiA5ZWQ5ZDIwNDEzMDY2NTQ0MWM4ZmVlM2E3ZjRlMGFhYTBhNDAyNTk1IHB5M2sKKzcwOTk3IDgzZjllM2QxMGVkYzQ4OGZjNzhlMTFlZDYxMjIzNWVmODFlOWU3N2MgbGVnYWN5LXRydW5rCis3MDk5OCBlM2ExOTY5ZmRiZTVlMGFmZTk5MGJhODQxNDBhYzRmNjRhMzcwMzg2IGxlZ2FjeS10cnVuaworNzEwMDAgMWUxZGFkYmJkZDAxYjk3OTM5MjQ2MzdjNGQyYmIzOGZhOTY5ZTUzYSBweTNrCis3MTAwMSBjZjczZmI1Y2MzYWM5ZDgzYmVjZGE0Y2ZlMzliMmQzN2ViMmU3MzJkIGxlZ2FjeS10cnVuaworNzEwMDIgYjQzZjE0YzEwM2JiYzNhYWQxODMzMzM1ZDFhYWEyNzQ3NmM0YTFlMyBweTNrCis3MTAwNCAyZGZjMzM3MTc0OTM4Zjg1NWI1YjMwODU0NWMzNzYxZjNhY2E3NzFiIGxlZ2FjeS10cnVuaworNzEwMDUgNzU1YmIxZjliMGU1ODZmZmYxNDc1ODEwZjEzYWY3NTRmZDQ5ODc5NCBweTNrCis3MTAwNiAxYjhkNjhkYWU1NzIxMjU1MzMzOWQ1Zjk3OGUzZDRkMzhiZDkyYzQxIGxlZ2FjeS10cnVuaworNzEwMDcgZWI2MjIxN2JiYjUzNzM3YmU3NGM3MGFiNzMxM2IyM2MxOGQwYTdkNyBweTNrCis3MTAwOCA4NTAzYTNkMDI1NGQ4ZjY0NzBiZWEzNzIwNDBiZmZjODlkZTk4ZGVlIGxlZ2FjeS10cnVuaworNzEwMDkgZDM0M2U4MDJiMjc2MGFhNzAwY2YyZmY3ZjE3Y2FjMzZjZTU0MDQ3NyBsZWdhY3ktdHJ1bmsKKzcxMDEwIDA4MGZkZmM0M2Y5NDE4Njg2NDdkMzkyNzBkMDEwOTY1MGQ0YmJhNDggbGVnYWN5LXRydW5rCis3MTAxMSAzNmYyNWJmYjNhMWJjY2RkNDQzZDcyOGYzMmE1NzU3ZmE3N2JmMGUyIGxlZ2FjeS10cnVuaworNzEwMTIgYzVhN2ViZWM1OTg0N2FmZDU2ZDQ2OWI0NjcyZmU0Njc1NDYzNWQ5ZSBweTNrCis3MTAxMyBhNzNkNzMyNjMxMWRkOGM5NTA3MTU2NmJhYTEzNTYwNTg4MDg0ZTAzIHB5M2sKKzcxMDE0IGYzOTA0NjQ2MzlmYmU4NTgwMTFiMGM2NjBiM2I2MDc1NDBkMTM5NjYgbGVnYWN5LXRydW5rCis3MTAxNSA0NzViYTQzY2NjYjFlNTIyZDNiOTU1NjhmMTQxNTkwNzM3YzliNGRmIHB5M2sKKzcxMDE2IGMwMTM4YjJkNGVlZGM5OTA1MDBiYmJmZTFjZmU0ZDU0ZGNhODUxZTggcHkzaworNzEwMTcgOTI2ZmQyMTdlMmRjYTEyNTMxMDRhMDE2ZTA1MTg5YjU5NmI0ZWI1OSBweTNrCis3MTAxOCAzM2ViMTY5N2MzODJkZTg1ODNhOWJlZmY2MTBkM2NiNTUxYjhhOWYxIHB5M2sKKzcxMDE5IDM1YzNlMWQ3Y2ZkZjYxNDcxNzMxMThjNDQwYWY1YjgyZGM2YTllMmMgbGVnYWN5LXRydW5rCis3MTAyMCBiYzE1YjQ4M2QzODQ2ZGEwZDllYTMwNmI3NGI3YmMxZDhkOGU4OTdkIHB5M2sKKzcxMDIxIGEwZTIxMWIwNGIyZTBjODRkMDI1NDZjMWQ1OTQ1MWNjMWYyZGE0YWEgcHkzaworNzEwMjIgMTA4NmQ3ZWU4YjBiM2ZlZmQ3MDc4ZTI1ZDM1ZjliYWEyMTRjOWQ3OCBsZWdhY3ktdHJ1bmsKKzcxMDIzIGI5ODQ0NTYxOTZhZjI2OWQxM2Y1YTk0N2UzODI4YjRmMDI4NzVmZjIgbGVnYWN5LXRydW5rCis3MTAyNCA3ZTg2ZmEyNTVmYzIyNWNkNzIwYjE2ZjhhYjYyZWQyNGIyMjAyYmMyIGxlZ2FjeS10cnVuaworNzEwMjUgOTA2OTBlYjg1MzgwYmQzYjhjMjEzMDRmODBiYzM2MjQ5MzU1ZGUyOSByZWxlYXNlMzAtbWFpbnQKKzcxMDI2IGY2MzRjNTQ1NWI0ZjNhYjUwNTFiMjYzZDU2MzIyZWMwZTMyZTIwOWEgbGVnYWN5LXRydW5rCis3MTAyNyAzZTFhODA1MjVmMThhMDExMWVhODE2NGM1NjNkNDU3MmFjMzc2Y2ZjIHB5M2sKKzcxMDI4IDk1MzU1M2FlOGI4NGZmMGVmOTgzZDhjMjBmYmQwMmFjODkxZThhNmMgcmVsZWFzZTI2LW1haW50Cis3MTAyOSBjMzM5NTkzOTI5NTNiMDFhZmU2MjE5MzNjYjk5YWYxZWUwNGY5ZDBkIGxlZ2FjeS10cnVuaworNzEwMzAgMzdmZmVhYzNhMWE2OGQ2ZmY1N2I3NmQwMzE1YWE4MGE3OGM3NjU5OCBweTNrCis3MTAzMSAxZWYzZGE2YzQzNGNmYjIyOTdiMmQyYWEyNzMwYTU5NjhkZmU3OTM4IGxlZ2FjeS10cnVuaworNzEwMzIgMWI1MGY3OGNkZGNiYjg3MWE0MzI4Mjk5M2I0M2U2YjMyYmZhNDlkYSBsZWdhY3ktdHJ1bmsKKzcxMDMzIGZkNWVlM2QwZjU1MjhmNjU2ZDY4NmE2OTY1MTQ4YWY4OWJlOTcyMmEgbGVnYWN5LXRydW5rCis3MTAzNCA1NGUwOTNiZDg4N2VhNzRkMzAzYTViNzEyNjU2Y2ViNmVlODdlNmQ0IHB5M2sKKzcxMDM2IDIzYTJlMTU4NGMwMmFmMmVmNGY5MjMzZTk3YjQ1Mzk3YTE1MjAwOGYgbGVnYWN5LXRydW5rCis3MTAzNyA4ZDg0ZjIyMGZmMjc3MDhlMDc1N2M5NWQ5ZTk1MjQwNDA3Nzc0ODM0IGxlZ2FjeS10cnVuaworNzEwMzggNWYxNzlmNmYwN2UwZmY4MzQ4NTQ4MDg3YWFhMWIwZmU1NTA1ZmY3NSBweTNrCis3MTAzOSBmY2JlMWFkMjRkNDEwZWQ3ZDgzMWRlNDhkZDliZjIwZGVjNWY4ZjI3IHJlbGVhc2UyNi1tYWludAorNzEwNDAgMGJjNjJkN2RiZjU0OTJmNDIwNGQ2NjJlNjBjMGQwYzY2YTRkNjI0NiByZWxlYXNlMzAtbWFpbnQKKzcxMDQxIDcxZjYxMjlkZGFkNDY2Zjk2M2RhOGMwZDQyOWUzMDg2MGFlMjZhNDIgbGVnYWN5LXRydW5rCis3MTA0MiA1MzkxNmFhY2NmMmNjMjNjODY1NzQ5MjAxYjJiMDkxMzY1YTg1Y2JlIHB5M2sKKzcxMDQzIDFhYmY5ZTMwYzE5ZjlmMjJlZTI4ZmUyMWViNTM1YzUzYTRjMjNjNGUgbGVnYWN5LXRydW5rCis3MTA0NSBhY2RkMTFlMzlmMGIwMjI1NzQxYWUwMmZkMjQxYTRkOWI5ZDZmMDQ5IHB5M2sKKzcxMDQ2IGM1ODk0ODNhNzJhY2E1NTRjZGFlOWNmMjU0OTljYzIwMmI0ZTUwY2QgbGVnYWN5LXRydW5rCis3MTA0NyAzNTgwZDNjMDcyYWU1MDMyYjEzYWRhMzg0ZTY5YTlkYmFmZjM1MjMwIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEwNDggYTMzYmM4MTgzZTRjMTc2ODI2OWI1NGEyNWU1ZTY2MzkxNDk2Y2YyOSByZWxlYXNlMjYtbWFpbnQKKzcxMDQ5IDJlMjIzODY4ODMyYTgxZmZmOWY3M2IwZDMxZTQzZTFlODBlMjZlN2YgcmVsZWFzZTI2LW1haW50Cis3MTA1MyA3NTlmNDNjOTc4ODc4YWY5MTUwNzU2Yjg2ZTI0ZDNhYWIzZjg4Yjg4IHB5M2sKKzcxMDU0IDk0ODlhOWU3YWZkNDM4MzI2NDRiNjUxMTQwNTY4YWIwMzYzNjA2M2IgcHkzaworNzEwNTYgYzgwMWE2N2NlMjkyZTZjYmI4NGI4Njg4YThhY2U2YTlkZGQyYzMzZCBsZWdhY3ktdHJ1bmsKKzcxMDU3IGY4MTQyNDk3MmFkMTE4NzdjZDEyYzc0NzE1MGQ1Mzc4MmRkZTgzY2EgcHkzaworNzEwNTggNTRiMmNkMjFhYjQ2Y2U0ZWRiMWI2NzlhNTJmYmFmMmIzMzRmYmI0MyBsZWdhY3ktdHJ1bmsKKzcxMDU5IDdmYTBmODFkNjA3ZTcxYWU2ZmYyYjk5MGY4MDJlNmQ3YTM1Y2ZmMGYgbGVnYWN5LXRydW5rCis3MTA2MCBjZGQ1NDcxNDc1NjY3ZmMwOTg1Y2UzNTI5YzEwYzU4YTc0Y2EwYTYzIHJlbGVhc2UyNi1tYWludAorNzEwNjEgZDFjNTM2N2Q1N2Q2NTU2MThjMDEwMWUyY2RlZDUwZTliMzJjNTdiNCBweTNrCis3MTA2MiBlMDJjNWI0ZTRlOTJlZGM5MGEwMzYxZjkyODQwYjQxYmUyNjYzMWE2IHJlbGVhc2UzMC1tYWludAorNzEwNjMgOThjMzQ0OWRhMzY5M2JkMmZiZTIyY2JhZGVjYWVhOWE0YTcyOTZhNyBweTNrCis3MTA2NCAxYjQ4MzkxMWIyZTY2OGUwNDBjMzM0MTRjZjljMTNlODRhMzJhOWEzIHB5M2sKKzcxMDY1IGJlZDUyNGVjMDg1MGNlYjZkNDc3ZmM4MWIyN2Y3MTIzN2JmMThkYzggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTA2NiA2NjQ2NGRiMzgyYjE0ZDViYzA0NmQxMGY4ZTM0N2Q0NGU3ZjcyZmExIHB5M2sKKzcxMDY3IDliNTM1Y2U5OWQyZGFhN2JkMjFhM2E5YjUzMDEyZGI0ZDMxMTdjOGQgcHkzaworNzEwNjggZDI4ZWEyZWU3MDcwZDM2MDUwNTA1ODAxMzE4Yzk5OWQ4ZWMxOTEyYiByZWxlYXNlMzAtbWFpbnQKKzcxMDY5IDY3MmZkN2E0MWQzNWYyYmQ4YThmMWExODJiYmVjOGUwNmI0M2ZhMTAgcmVsZWFzZTMwLW1haW50Cis3MTA3MCA3NWVmZDc1NzQzNGI4NWY4NWM1ZTdmMjI1ZmUwY2YxYWMzN2FiZjYzIGxlZ2FjeS10cnVuaworNzEwNzEgYjNkNWY2ODVkMjdhY2NhNWVhNjY5ODQyMjk5MjE3Njc5YTQ2MDYxMSBweTNrCis3MTA3MiBjYmUxOTEzMGIyZWI2MzExMzY2NmU4N2I2NTQ2NTU5ZTE0MzgxZGU1IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEwNzMgMjBlN2FhNDJkNmZlNGQ5ODE3M2MxOTczNWMyMjU0OTlhZDZjZDViMiBsZWdhY3ktdHJ1bmsKKzcxMDc0IGYxM2VlOGFjNmQ1NDUyNzc1MWQyODFiMzk4YTFiNTk4NWRjNDE3ZTggcHkzaworNzEwNzUgZjNjNGZmMjE0YjExZWM2ZjEyMzljZmI2ZDAxNTU0MGJjMDlkZjhjYyBsZWdhY3ktdHJ1bmsKKzcxMDc2IDVjMzdhYjA3YTdkYzM0MTk4ODI2ZWNmZjM1YTc0YWU5Mzg0MGRmMjMgcHkzaworNzEwNzcgOWJlMmUxNmE3MWRmNWI2NTU4NDM0NGZiMTFhMTJjNWMxODY4ZGQyNSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMDc4IDM5YmU5YWM4OWJlOThmZmNjMjlmOGUyYmViYzFkNGE1MTU0ZDZjZTYgbGVnYWN5LXRydW5rCis3MTA3OSBmNjIwMmIzZWY4ZWE5OGU0ZTBiZTJiYmFmZWJmMTQzZDgzOTA0ZDVkIHB5M2sKKzcxMDgwIDE4M2Q2MDcyZTFlNWRmOTNmOGNmZjM5MGIxZjg0N2IzZDY5YTA4YTYgcmVsZWFzZTI2LW1haW50Cis3MTA4MSAxYmY2NzEyMTdhYmYzY2Y3OWY3ZWViYTJjMTYyYmU0ZWM1OGM4MzY1IHJlbGVhc2UzMC1tYWludAorNzEwODIgZGNiMzY4ZmI2YWRiZmFlNWFlOGM5YzMzMThhMjZkZTVlNWNmMjliZCBsZWdhY3ktdHJ1bmsKKzcxMDgzIDk4Njg2ZjMwN2RlNDI2YzYwOWZjZGUwZDkxOGYzMzMxNTJkYjM2ZDIgcmVsZWFzZTI2LW1haW50Cis3MTA4NCBjYmZiZmYyMzNlZjVjMTdjZjZkZWE5ZTQ4YjE0YmRjYzY5ZjQ1NTgwIHB5M2sKKzcxMDg1IDJhMjdmOWFkYThlMzNlNDc5NDgxMWYxYzcyNzQzOTY2YTI4MjQwODggcmVsZWFzZTI2LW1haW50Cis3MTA4NiBjYWMyMDljZjVlNGNjNzM5MDIzMzllODcwMzE3YzU5Zjk1NTgyMDk1IHJlbGVhc2UzMC1tYWludAorNzEwODcgYWU0ODJlNTJhMTZiYzA4OWU5MTVlZWMwYjBiMzE5NGQ1ZmIzYzRjZiBweTNrCis3MTA4OCA0ZTVmZThiNmQxMDFjOGYzNjFkNjRiNzAxOGQxNWQ2ZDA3ZjcxZDFhIHB5M2sKKzcxMDg5IGI0MWMyOWRlYmRmNjlhNzkwOTI2Y2QyOTljMzA3NTYzZmE1MjMzZGQgcHkzaworNzEwOTAgNjk2NjJiYzNhOWY2YjZkMzIwODcxYmU5YzkwNmZmNjQzZTJiZjViOCBweTNrCis3MTA5MSA2NDNmNDRhZDM4N2ZiNDY0MzBiMDY1YWZhODY2NWU2OTYwZWUyNjAxIHB5M2sKKzcxMDkyIDhhMjZmOTYyMGIyMTE4ZDdiYjI0MmUwMGUxMDg3NTU3NzliZmM3YWIgcHkzaworNzEwOTMgNDc1N2RkYWE4OTdkZWM5M2YyZjVhM2QxYjg5OWRkMTdjMjA1NDEwZiBweTNrCis3MTA5NCA2ODk0MzQ0NTRjYjhlNTMxMjg4YzUyZTg4MzhhZTRkNGJlYWJlZTY1IGxlZ2FjeS10cnVuaworNzEwOTUgYTk4MDkxMDY2ZTAxYjIwNjM4ODE0N2ZjNWZjZTA2ZTQ1Y2I5YTAyZSBweTNrCis3MTA5NiAyODA5NmVkNzMxNTNlZDY5Njg3MGJhZGVjYjBkODI5ZTBkZDc0Yzg2IHB5M2sKKzcxMDk3IGMyZjllMTM1NDJhYjJhYzJmOTVkMGYwZGE2OWIzNTAxZmZiODdmMzMgcmVsZWFzZTMwLW1haW50Cis3MTEwMSAxNWM4ZTlkZDE5OTY3ZmQwMTExNzE3ZmNjYzY4ZmEyMjM1NWQzNzE3IGxlZ2FjeS10cnVuaworNzExMDIgNWY1NTg3ZjNjNGQ1NWFiYzIzZDFlZGM2YTJlNGY5ZDAyZWVhMGU5OSBsZWdhY3ktdHJ1bmsKKzcxMTAzIDQ0OTU0ZTZhMTM1MzIzYjQ0MDE3MDFmNGNhZjRhZGNhYTkyYTE1NDYgbGVnYWN5LXRydW5rCis3MTEwNCBmYWEzNDczZTQ1MzQ0ODRiYzIzZmRiZTAyMTYxOTkzOWIxN2NhNWE3IHJlbGVhc2UyNi1tYWludAorNzExMDUgYzNjNmI3Mzc0YmRhMmVkOGQ3MWNhOWNmMzMyYjg4NGU3OWRhZDViMiByZWxlYXNlMjYtbWFpbnQKKzcxMTA2IGQxOWQ4OTAxMzhmMWVjYjFmODQ5MmNmMzY5YzA1YTVhN2YxMzg3MjkgbGVnYWN5LXRydW5rCis3MTEwNyAyZGYxNTE3ZDg2OGM5YWYwNzBhODU1NTI5MmU4MjQ2NTUxOTBiYjY5IHB5M2sKKzcxMTA4IDdiZjYwZDdiMDllOWEyMDYyZDI1NTYwODc5YWRiNzViNWM4OGNiM2UgcHkzaworNzExMDkgYjRmMTU3ZjhlNGE3Yjk4YjUwMjk1ZGY1MGJmYjY5OWEyN2EwYmVlNCBweTNrCis3MTExMCAxZmRiNTY1OWVlMDg5NjgyYzFkZDVmZmQzODRjYjNkMmFhYzRjNjYyIHB5M2sKKzcxMTEyIDA1NWIzMDI3ZDU2OGI5NjM5NDEzMjE2YzcyNjYxODA0ZDdkYjZiMjQgcHkzaworNzExMTMgNmNmMTZlYThhMTZkZTZiNzM0N2UzZWI1ZDdiNjQxZGVlNWQzZjA4MCBweTNrCis3MTExNCBiNGRlZmRkN2Y0MzFiNTE2OWMwNjZkMzU5NzVkYjM1MGNlZDEzYWZlIHB5M2sKKzcxMTE1IGZhMmFhYzQzNGQwNjM2NTZjNzdlOWE1M2ExNjU3Mjk2MDc3MjBhZjkgcHkzaworNzExMTYgZmI3Yjc3MjdhNzMxYWM2MDlkODM0YmZkNDIyZjUxNTVmMmQ3YmEwYSBweTNrCis3MTExNyA1MTc0Y2NmYjAxYjgyMTM5NTI5NDg3YjA2YTA2ODQ5MDBkYzE5YzZlIHJlbGVhc2UzMC1tYWludAorNzExMTggNDkyNTE5NmEyZmQ4YmQ1MjJjMGQwOTViNDExZTU3ZTAzOTA2NWM0ZiBweTNrCis3MTExOSBmMTIxYmQ5NTZhZTA1MTA5ZjM1ZjdiZTMzYTM4ZmMyOTY2NmY2NWY5IGxlZ2FjeS10cnVuaworNzExMjAgOTA0MTllMWI0NjU2YjU4ZmJkNjljZDI0N2Y5NTgwNTdmZTBjY2EwNSByZWxlYXNlMzAtbWFpbnQKKzcxMTIxIDhiNTNiOTY5YjYyODFkODAxN2M0MDhkM2M2Mzk2MGVhYjE2ZDYwODIgcmVsZWFzZTI2LW1haW50Cis3MTEyMiA1NDdhMjM4YTJhYzQ5MjU4MWQzOTU3MDM2ZjMyM2RmZjk3OTkwYzI2IHB5M2sKKzcxMTIzIDE0NmE4ZmRkYmJhMjc3ODc3OTQwZjVhMzkzZDE4Njc2NmRkYWJjNDggbGVnYWN5LXRydW5rCis3MTEyNCBiMzg3Y2E3ZDBmZTYyY2ZlZGJhNTQ4YzM0Mzk1MThiMGVmNTc5YjIxIHJlbGVhc2UyNi1tYWludAorNzExMjUgYTFiZWIxNmNmMjM2OTRkOGUyZDBmNGMzZDBkZWY0OGNmN2YwMTI3YiBweTNrCis3MTEyNiBiYzA4NGE5NzMxOGI5MzM0MzcxZjNmY2M4ODg2OTU4ZTVhZTllMDZmIGxlZ2FjeS10cnVuaworNzExMjcgNWY2NmRlYWQxMTc1YTA4ZDg0YmNkY2M3NmFjNGMxM2Y3ZTlkMjU2MiBsZWdhY3ktdHJ1bmsKKzcxMTI4IGM0Y2FjYmM5YjNmZDI0NDIzZmU5YzY2OTk3M2I0YzIxOGU3NTljNDkgcHkzaworNzExMjkgYTgwZTJlYTM4OWUzMGIzZjA3NzMzMmIyYmM0ZDA3YmNkMWQ0ZTAxOSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTMwIDU0NDdlMWY3ZGJmZjRjYjY4NjU5ZDBmOGUyOWYyMGE0MzRlNjc4OTEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTEzMSAyNDc0ZmE5YzM4NTU5MzIxNjJjYWYzMmY0M2UzZGYxZGMxNDFjMGUzIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExMzIgN2Q4N2U3YzA2YjU5ZDA0NDA5YWNhYTIwODdhZjllNDAyMWRhZGYwMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTMzIDQ4YTAyZDVmNWQ0MjhkMmRiOWRiZTA4NWNmMWRhMTJmM2Y0NTE5NmQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTEzNCAyNGYxYTk4OTJkNDljYmU5NTkxN2U3NWMxNTQ5YTE3NTM1OTJlNzU4IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExMzUgNDIyMjQ4ZTZiNzNiOTBkM2Y3NWRiNjYzODRkMjlmMjllNzZiZTExYiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTM2IDgxNzViYzAzMTM0ZTMyYjhhYjAzZGY4NDc0NWY1ODlhNGVkMmFjNTEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTEzNyA2NjFiZDU1ODM2MzIxMGMxZGYzOGVkMGIwMzMxYWNhZmQ5MWU4ZGJkIHB5M2sKKzcxMTM4IGUyNTQyYTdkNGFjZmNmNzZmZDZkNWE5NDY0ZThkY2EwMzk0NTk2YmUgcHkzaworNzExMzkgYzllNDhlMDA4YmI1MzZhNDZhN2Y5NjQ2MTYwMGZmMjUwMTMyMjYyYyBweTNrCis3MTE0MCA2ODMwMGRhMTJkZmUwZGM4YmRhMTliMGRkYjA1NjZhZTdjZDlkMjkwIHB5M2sKKzcxMTQxIDk0MTUwMTc1MTk2OTEyZGE3ODE0ZGZhYTA2MTU0NmUwMTk1M2RlY2UgcHkzaworNzExNDIgNjAxOWZiMWRhOWUxMTM1MGI1YjhmNjhiNjVjNmViYzg3NGE5YTEwYyBweTNrCis3MTE0MyBjYThjZWJhNzM3MTQ3ZmNkZjMwYjAyNjU2NzVjOTllZTQzYTE0ZTFiIHB5M2sKKzcxMTQ0IGQ2MzhlY2RlMzU3MjU5NDRiZGU1NzkyMzk3YmI4MjE0ODkxZjY3NzggcHkzaworNzExNDUgNzRjZjIwYTYxYmVjYjY3MjYwYzNhMzlmYTBhZTM3ZWE1ZGMyMTBjNiByZWxlYXNlMjYtbWFpbnQKKzcxMTQ2IDcxNmFjY2Q0YjYwM2U5MjY0ODMzMGM2ZjljNDFlMDM0ZmYyYWU0ZWYgcHkzaworNzExNDcgOTNlOTI0MDljYjQ2OGU5NmQzOWU4OGM1YWJkYjUwMTliZjdhMWIwYiBweTNrCis3MTE0OCBkMzZhZmQwNThkOGJiNmNlNTBkNDI1N2ZjOGVmYjE3Mzk3NjNhYTU2IHB5M2sKKzcxMTQ5IGY2NWYwMTE4MzMxYzI5MTgwNTU3NzEwNjM1MmUzZjUzZDc4MTc2Y2YgbGVnYWN5LXRydW5rCis3MTE1MCBlNzQ1Y2VmOGY0MDc1YmM5MzcyMzc3ZmMxZjFhYzlmZWJiZTJkMjRhIGxlZ2FjeS10cnVuaworNzExNTEgNjFiNTExZDA1ZWU5NDcyMjQ3YzYyMzQ3NTVmOTI5OGYzZjZmMTZhYyBweTNrCis3MTE1MiA2MzQ1MDJiZThkY2NiZGU1NGE0NTdlOGM5MjZlNjZlMzQ0MTg3ZjAzIGxlZ2FjeS10cnVuaworNzExNTMgY2I1OGM5NzM5ODVjOWMyZWQxYjlhNTA0ZGE2MWY5ZjRkMDljYzU1YyByZWxlYXNlMjYtbWFpbnQKKzcxMTU0IDczYTdlNmFiYTdiMjEyZjBlOTEwMzVjZjFkZWIzYjU0ZjM3ZmY5NmQgcHkzaworNzExNTUgMzczNDZkZjJiODg0ZmRlZjM3Nzc0NGZlODU2NDRjMGU3YWNiZTY4MyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTU2IDhjN2M1YTM1OGRiOTVlNDFlZTFmMGJhNjZiYjE1OWIzZWNjOWUzY2UgcHkzaworNzExNTcgMTc3ODQxODVhZDkzNTI1MWZlZjYzZGM2Mjg2ZDA1MjdmNDVhNDA2NyBweTNrCis3MTE1OCBlNjU2OGIzYzJhZTc1YjY3NDQ1NTIxMDhmMjdjNDE0ODAwNTI4MDQ5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExNTkgMmY1MmEzZDE4NWEzMGQ3ZmY5Y2YyYWFlMWVjNWY0MGIyYjQ3ZmRjNyBsZWdhY3ktdHJ1bmsKKzcxMTYwIDNlZjk3NTZmZmRhY2RhMjE1NGNmNDBlMTU2NjAyOTZkNjI1MTQ5M2IgcmVsZWFzZTI2LW1haW50Cis3MTE2MSBiZDc0YzRlZDAzYTQ2ZWUxMzZmNDVhNGU1OWFlNGI1OTI0M2Y2YTAyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExNjIgMWRmMzdmMDk3NDdjNGE5Yzc3N2UxMzk5N2JlZDNkMzViN2UxY2ViZiBweTNrCis3MTE2MyA3MTM1NWRkZjM3M2VkOWQ3YzlmMzMyYWYzMzhlODgzZjU0ZTNmNTkwIGxlZ2FjeS10cnVuaworNzExNjQgYThmMTdjZDgyZDg5ZjAyMTI0OTkzNmY4MTY5OTBiMjI0ZmUyZDYyZSByZWxlYXNlMjYtbWFpbnQKKzcxMTY1IGFhODkzMDY3MmFhNGQ4MjNhMjVmZjc4MzI3MTE4Mzg1ODg0MjAxOTYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE2NiAxZjgwNzllY2QzNzAwYzg2NWFiMjAxZTQ3MjFiM2RiYjJjM2QzMDYxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExNjcgNzNiMDE2ZWM1YjhmYTc4YWM1ODYxMzkyYmEwM2RiMjE2YWJhYmViYyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTY4IDM0NzZhZDc1OTBiNzgwYzhjNWMxNjE0NDQ3NWMwODE0MzZhODAwYmEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE2OSBjNTBjMDc5YjA5ZWI2NzE2NjE5MzUyMWQ5OTIwYzQ5MTA4Y2RjZTA1IHB5M2sKKzcxMTcwIDI4ZTMwYTVjNjM5ZDdmMGRjZTYxNjBhMmY3ZGFmYTVjY2U0YTYzOGIgcHkzaworNzExNzEgYWRiZGU1YzNiNWZlNGRmNDBjN2Y5ZmY2M2QxN2YxMTM4M2IzZWY2NiBweTNrCis3MTE3MiA0NThlYmU0ZjVhNTg4ZjY4NjFkMjQyOGZjMmRiOTNkNjgwYWQ4YWY0IHB5M2sKKzcxMTczIDdlZTFjZWZhNmQ2MmI5MjlhMWM1ZTRhYjM2ZGY5OWQ1ZWI5MTNjZDIgcHkzaworNzExNzQgNThhN2M1MDk0NTIzMDk3ZjYyNzA3YzJkZDg3NzcwZWNkZGMwYTkwNCBweTNrCis3MTE3NSBhM2JiZGQ5M2IzODlhNjY1MjQwYzUyYzBmODNjNzRmZDhmMDkzNTlkIGxlZ2FjeS10cnVuaworNzExNzYgZDdjOTc1NWI2MTc3MzMwMDQwYTI2NTEzYjBmZmIzNGI4ODM3YWIxYSBweTNrCis3MTE3NyBjYjQ3ODE1MjQ3MDQ5NmRlYmNiOTUzZGZkNzg4MWY1MzhlNzdjODU4IHB5M2sKKzcxMTc4IDJhYWRjMWFmYzlhMTk0ZDBhMGNmNzExNWQxMGQxMWI3ZDNkYWJjOTcgcHkzaworNzExNzkgNTM0Nzc0MGQ0ZDVkZDRlYjMxOThmZmYyNzYyN2QyNjZmYzMxZWFmOCBsZWdhY3ktdHJ1bmsKKzcxMTgwIGQyZTE1NjI5ZmMyOTdhMDA3MTdmYmY4NGMyNzNiZTIxMWIwOGZmMWIgcHkzaworNzExODEgN2MyYTA0ZTIxOGYyMWI5M2QwYzdkNTc2Y2U2ZTI2ZmU3NWJhNjRiMyByZWxlYXNlMjYtbWFpbnQKKzcxMTgyIDQ2YjZiODQxNWRlZTc2Y2ZhYWMxNTM2YjMzZGI3YjllNWM3ZGE5YjYgcmVsZWFzZTMwLW1haW50Cis3MTE4MyBiMTRlOWVjOWQ5OWY1ZWNjMWI2MWEzMmNjN2JjYzllYjY0NDlkNTQ4IHB5M2sKKzcxMTg0IDlhOTEyYTU3MTY0ZjY1YmI1MTNhYmU5ZTIzOGE1MzQ0NTRlOGVlMDYgcHkzaworNzExODUgNjhhOWU2ZTM4YWZhOGRkOTJhYTUxYmM0YzcwY2VjYzU3MDEwZGQ3ZSBweTNrCis3MTE4NiBjMTdlZjE0YmRmNDFjYWEzZWFkNDZjOTYyOTZiMDA3N2EyNzljNzVkIHB5M2sKKzcxMTg3IDM1NjMwYzNlZGQzM2M4MDkwYjU0NzdhNzljMjg4M2I5OWUyNzNmYTQgcHkzaworNzExODggZmY3OTMzZjQ0YzQxNjJmNTk0NGEwOGRlN2FlNzkyYzUxOWZlYTgzYSBweTNrCis3MTE4OSBhYWNmNTA5NGExYjU4MGZlY2VjZTRhNjE0ZTc0MzVjMDYxY2QzODk3IHB5M2sKKzcxMTkwIDFkNzkzZWUxNWI2ZjZlOGQ4ZDEzOTI0ZTkxYTg3YWUzODUxNWVkZWMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE5MSA0OWFlZjQxNDFiOTNmMjg3NTNmN2NhYTU1ZThiNGVmODcyOWQ1NTcwIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExOTIgNWJjOGNmM2Q5MGIzNTUzMTI4MzM1N2FiMDYyYWRhYjdmYWIwZGU1YSBweTNrCis3MTE5MyBhMDE0ZGM0N2I1NTJlYjdlMzcyYjc0MWZlOGRlYmVlZDU1MWE1YzliIHB5M2sKKzcxMTk0IGVlNDMwZTUwNzVkYjJhZGY4MTI0ZTZiOTQ5MTZhODljYTQxZDMxNzEgcHkzaworNzExOTUgOWVmN2JmNGQ4NTkwODYzOTkyOGJiMTVmODg3YTRiMTIzOGFhMzk3MSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTk2IDZkZTg2MzZjZDgxNzMxZTk0MzUwOTM4ZGY2YTY2OWMwMTc0MDNjZjggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE5NyBiNGVmNTAyZmNjYTAyODdlY2M3OTQ1ZDIyOTU0Y2NkYzEyMjY2MDZmIHB5M2sKKzcxMTk5IGJkYzU3NDc4MjkxOWQ3OGMxMTUyMGQ0Mzc3NDQyNTYxYjAzYjU3ODMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIwMCBlMDJiZGQ2MDg1ZmZiZWI1YjZkMjk5MDZjZmE0NjY3ODZiOTI2YmNmIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMDEgNzYxMDQ4YTBhOGQ5OWI5NjcwZGViZDU4NjNiNGNmZjNlMmQxN2QzNiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjAyIDMyNzI2M2ZkMmU2NjYzYTExY2Y2YjM0ZWU0NmMxYWFiYzdkNGY0YjYgcHkzaworNzEyMDMgMTliMGRiMTM1NGY3MGU3NmI5YTU3YzkwYmMwNmU3NzE5YWU0NzA1MCBsZWdhY3ktdHJ1bmsKKzcxMjA0IGQ5MDAyNDYyMDU2ODdlOTFkMTQxNTMxN2JjZDlkMmQyM2QwNDYwNDggcmVsZWFzZTI2LW1haW50Cis3MTIwNSBmZGNmY2E3MTViZjNkYWQwZGU4YmI0NjQ0NjM5OTA5NDU5ZjcyOGZiIHB5M2sKKzcxMjA2IGU2ZTVhMGU0MzU0MzQ2YjUzZDk3YjdmYTg4Mzg1NzQyOGQ1YWU1NmYgbGVnYWN5LXRydW5rCis3MTIwNyAwZmUzOGJiZDk3M2NkZjFiM2NhNWIzZDBkMzViNzMzNjMyOWY5MDQ0IHB5M2sKKzcxMjA4IGRlNWYxODYzOWE2Y2UxZmMzOWYzNjZiMGZiNzU2NTU2N2JhYjQ3MDcgbGVnYWN5LXRydW5rCis3MTIwOSA3OGYzMTBiOTYxYzAyZmNiYzcyM2IwZGIwNjYzOGYxZDUyYTJmNTllIHB5M2sKKzcxMjEwIDkzODRiNDNkNDI2ZmVlNWZhNGQ1NWRlNTZlNTI1ZDM4ZmQ4YTk0NzAgbGVnYWN5LXRydW5rCis3MTIxMSBhZGRkNzUzYmE0ZDk2YjczNjZiZDM4YmE1OTc1ZGZiYjkzN2ZkYmZhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMTIgMThmMWM1NmNhNmZkYmYwZDMwZThhNGI0OGFjMzQ0ZDljYzIwM2E1MSBsZWdhY3ktdHJ1bmsKKzcxMjEzIDBmNzcwOGIwMTI4YzA3YWVhNDQ1NTc3OTQzZDIzYzM3YTM1MjVkZmQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIxNCAxZWYwMmVmNDhjNDI0YmZjODlmMzU0Y2M4Zjg5NTkyMjkyZmUwMGE1IGxlZ2FjeS10cnVuaworNzEyMTUgNWU4ZGU2YzNlMDAyNzUyNjIzMjY2NWQzYjRiMTBkMWUyZDQxMTVkNCBsZWdhY3ktdHJ1bmsKKzcxMjE2IGU0MjFhOTJiMjUyMDc4ZGE3ZmE2MGFmNTBkNjk4M2NmYWFkZTkxODMgbGVnYWN5LXRydW5rCis3MTIxNyAwMDA2YjJhZGM3ZTQwNzgzOWI4NjZkY2Q4MmNhZmY4NjEzNDg3ZTk1IGxlZ2FjeS10cnVuaworNzEyMTggNTg3YTJhZWQzOWYyZWQzZGE0MTA0NmJkZjMzODY1YjdkYjczNmU5MiByZWxlYXNlMjYtbWFpbnQKKzcxMjE5IGViODQ1MzA1NzdhNTNhMjk5Y2VlNmE3NGE1MDljNjMyNmVjZmZhY2QgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIyMCBmNWNiM2IzM2I3OTQxYTcwNGEyOWYxZmM2MjU1MzE3ZjFmMTUyMzIyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMjEgZjU1MGUyNDYzMDYyOTkzYWU5Y2JhYmQ1ZThmNTZjNTZjYzI4M2QyYiBsZWdhY3ktdHJ1bmsKKzcxMjIyIDJiYmI2MGMwMGViNzI1NzgyMjQwYzM4MGRkMmY2OTdjMTViMzMyMWEgbGVnYWN5LXRydW5rCis3MTIyMyAwMWY0ZTg4MDNlY2RlMDA2MTQwZjQ3NjgwNzY3NDZkMmRhODFhMDQzIHB5M2sKKzcxMjI0IDk4ZjQyMzkyODM1YjY5YWVkNWZiZjgwM2Y3YjlmMzUzMjgzMjI5MDIgcHkzaworNzEyMjUgYTdjNzRlMDlkZTNkZjBhZTAwMTZjNWQyZmNiN2MyNjE2ZTA3MGQwNyBsZWdhY3ktdHJ1bmsKKzcxMjI2IDE1MmUwOGRmYzFhZjVlNTdhNGUzMjJjNDhhNDk0OGM0ZTcwNTE5ODkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIyNyA1OGQxNzE3ODBmZDg5NTQ1MzljYjU2MWY0MjBjYjE5MWE3ODVjZTlhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMjggNWNiZGI1MTU3ZmE3NmM1MDA3YjRmNmU3MzVhYzdjZjZhNDA2ZTA2YyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjI5IGJmZmE3NzY5NjkyNmRjZjU5MWMxZmUzNzJlMDA5ZmJmMjg5MWRiYjIgbGVnYWN5LXRydW5rCis3MTIzMCBlYjMyYTE1MzdkZDdmOGI5ZWZkMzdkNjNkZWNlMzQyZmY5NDEyOTI2IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMzEgZjFjZWMzNzY5OGZlOGQwNDE5NDU1YWIxZDQxMDBjMTAwNDE4ODUyOSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjMyIDY2MzU0YmRkZGNmNzZkZDRmMzE4OGIyNGUxMDQwNGY4ZTcyYjY1MDYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIzMyAxY2JlYWJmODg4YTE0NjQyYzFjMTBkNjgyOGEzMWM3OTk4Mzc2NWQ2IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMzQgZWI5NDUxN2RmYmQ2ZDdhZmIwZWJiOTgyYmZjMTM0NDhhZDE3ZDA4YyBsZWdhY3ktdHJ1bmsKKzcxMjM1IDg1YzVjZTZkN2Y5YzdjYjA5YjYyMTRmNDA0OGQ5NjczNmFmZjEyNzQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIzNiBlZDc4MzNkNDgyYzgxZjJlNzdmZjhjNGU5ZDVkOTJlYmIwMjQyZDk5IHJlbGVhc2UzMC1tYWludAorNzEyMzcgOTc2YjMwNWFhZGQyOWUwZTJmZjkwMmY5ZTM3ZWQ1NDgwNDUxN2M0YSBsZWdhY3ktdHJ1bmsKKzcxMjM4IDZlYWY5NzcyMWQzZDhhZDFmMTEwY2Y5YzVjMWVkMTE4MDJiODdmNWIgbGVnYWN5LXRydW5rCis3MTIzOSAzN2Q2YWY2Zjg1YWFjNGRkOGQ0NDdkOWVlMWUxNDJlODdhMGVkOTNmIHB5M2sKKzcxMjQwIDhjNjFlN2NhYTA2Y2Y3ODBhNDU4NzUyNjc4Mjk5ZWQzN2ZkYTUzYmEgbGVnYWN5LXRydW5rCis3MTI0MSBkYTFlNTQ4M2FjYTAxMzZhNWI1ZDhkZGViOTA5MTdhZTRmOGY5NDFlIGxlZ2FjeS10cnVuaworNzEyNDIgM2JiYzY4NDQ5Zjk0ZTdlYmMyYTExYmMwOGY0NmEzNDAxMjcwMWE4YyBweTNrCis3MTI0MyAxM2VmMTE5MGVkYTlkNjRlMTViZGU4MWIyOTdmMzc1MTI3OWNiN2Q3IGxlZ2FjeS10cnVuaworNzEyNDQgMjRlZDVkODUxNzIwY2VlMGUwMmFkNWEyYWQ3NjdhMzE0ZWNhN2JhMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjQ1IDhjZTllZGM4ODk2OWI4ZDhlMWZkMzE4MzY3NzU1NDczNTFiOWI3ZDIgcmVsZWFzZTMwLW1haW50Cis3MTI0NiBiOTA4N2I2NDVjZWZiYzQzYmMzOWM3YzIwYTAzNzg2NmFjZmI1YWEwIHJlbGVhc2UzMC1tYWludAorNzEyNDcgNzYxMmFhODliZjA2MGVjZDJjYjVjN2NjNjRhYTdkMjdjOGJmNjZhMCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjQ4IGE3ZTViOWQ5MGIxMjVmY2U2ZWQ3ZDBjMGIzYjNkY2VkNGM3ZTA4YzEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTI0OSA4ZDIyODczZTliMjZkMWQ1OWNmMGQzNzU4MWZiNWIxNWI2ODIwZWUxIGxlZ2FjeS10cnVuaworNzEyNTAgNDNjODg5ZmVkYTQwYjExNzYyMzk5NzcxMWQ2M2ExZjJmZWNhOGJjNCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjUxIGJkMTMzNmEzYTY4NjNhZTI3NTFjYTI2NDc3Y2EzYWRmNjNkZDI4MjggbGVnYWN5LXRydW5rCis3MTI1MyBiMmM2OGRmOTQ0NjM5ZGQ0MzRhZDNiMzhjMzQ0Y2FiODExOGM5MjU2IGxlZ2FjeS10cnVuaworNzEyNTQgZTc0MDgzMzAxYTM2ZTA4NzU1YzQ5YWVjOGFmMTZmYmUwNTViODdlNSBweTNrCis3MTI1NSBhMTZhMDQ1Njk3OGY3ZWY3ZTk4YjMyY2E3NjcyZjY5N2UyOGM1YTFiIGxlZ2FjeS10cnVuaworNzEyNTYgY2ZkNzEzNjk0MWEwOTk5MjNmODkwYzJiMTg1ZmVmM2RhOTg4MDdkNSByZWxlYXNlMjYtbWFpbnQKKzcxMjU3IGVjYjIxMDNiYTAyNzlmZjU3Y2Y0MmFkMzQyNDdmMjc2MTgyMDVlOTMgcmVsZWFzZTMwLW1haW50Cis3MTI1OSA3YjRlZjBiODdkZGNmZjkzMTM1Y2MxMDM0NDE0NzUwOThkNTVlMTAwIHB5M2sKKzcxMjYxIDc5MmJiODg1MDI5ZmJmYjI4NWZjOWQzOTY1OWYzZDJlOWJhODk3MjkgcHkzaworNzEyNjIgNGQ5NzYxMWQxY2NhNDhhMTRmZmExYjY5Mzg5NTY2NDMyYzgzOWY5ZSBweTNrCis3MTI2MyA2NzJiMGMwNDFiYTYzODRhZDg0YjNiYzNjNjY5YmQzODlhMmRlNGUyIGxlZ2FjeS10cnVuaworNzEyNjQgYzllY2Q0NWE1ZWEyZjEwM2EzNGU0OGNkZWEwOTE4YzFlOWJhYjg4NyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjY1IDE0ZTAwZjBmNzhiNzRjZjQxMDRmNzVjOWZhMGMyMDFmZjc5NWQ2YjEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTI2NiAyZDAwZmYzZDJmNWEzYzVjY2E4MzU4ZmQ1MWJiM2I1MDFlZmU4ZmRkIGxlZ2FjeS10cnVuaworNzEyNjcgYTE0ZGViOTQ4MGY0ZDMyMGRhZDJjNjIzM2FjZmQ0NDc4NGRlYzY0ZSBweTNrCis3MTI2OCBmOGM1NzZmYWE5YWQxM2U5YWE2NjA2M2I4YjhkZjkwY2U1Yjg1MzljIGxlZ2FjeS10cnVuaworNzEyNjkgNTRkNWYyOTg2YWY0MmNkZDc4YmI3MjZhZjBmYzA3OTc4MTc2OWFkZiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjcwIGZiMmVhOGJiM2EzM2RjNzZmZDg1NDE0MmRmODgxNzQwNmI0NjNlNDIgcmVsZWFzZTI2LW1haW50Cis3MTI3MSBiMDQyOWM3ZmE3MWFhZWQ1Y2M5MzI2OTZlMDkzZDVhNTI0NmMxMjgxIGxlZ2FjeS10cnVuaworNzEyNzIgNGFjYmJiM2U2NWUyYjA1ODIxZDQzNjg5ZWUzYWY1YmE1NzMwNDM0MSByZWxlYXNlMjYtbWFpbnQKKzcxMjczIDI1MWJmZDJkOTk2YTJkZmY4Y2MxMzI2NGFhODViZmFlNThiMTg0NjIgcmVsZWFzZTI2LW1haW50Cis3MTI3NCBkMzg4N2RmZTY2MWY5MzYyYzNlMmNmYzEzNDMyNDIyZTYwZTE0NTk3IHB5M2sKKzcxMjc1IDM4ODlkOTUyODYwMWUzYmUxOGE2MmI4NDg2MzZhNjBiMmQ0NTBjNTggcmVsZWFzZTI2LW1haW50Cis3MTI3NiA5NjlhZDEwYThhNzI1NzBiODFjNTg0YTVhNGExM2JiYzRhOTBlMjJlIHJlbGVhc2UyNi1tYWludAorNzEyNzcgZDA4ODQzNmFjMzZiMTBhOWYzM2NlZTkxOGY4MThkMTdkMGNjNDliMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjc4IDgyMzdkZTYzMmQ2ZjY4MTVhMzY4ODJmOTY0NTNlNGE5YmUyZDgxYTAgcmVsZWFzZTI2LW1haW50Cis3MTI3OSA4YjUzMTUwMTM0ZjVkYjE0ZDIyM2RlMGEyM2I5ZmRmMDVhNzU2NTJmIHJlbGVhc2UyNi1tYWludAorNzEyODAgOWE0YjE5MzMwYWE5MzFhYmQzNTg2MWZjZmVlNjI0ZmY0ZTBjNDQxMiBsZWdhY3ktdHJ1bmsKKzcxMjgxIDdlNzgxM2FkYTJkMTgxYzQ3MjQ5Yjc5YTkzZmRlZjMzZjhmYTBkMGIgcmVsZWFzZTI2LW1haW50Cis3MTI4MiBmM2IyNmE3MjllODJmOGZmZmIxNzRkNDkzYzY5YzZlOTlhYjg5MDU4IHJlbGVhc2UyNi1tYWludAorNzEyODMgZjY3YTRmMWYyMzBkNzQwZmRlY2JhNTNiMzU5NGY4ZmRmOTMyNDA5ZiByZWxlYXNlMjYtbWFpbnQKKzcxMjg0IDkzNGQ5YzNjYmE0MTg0Yjc0MDI2OTM4ZTY3ZjRlNzg5N2M2NjI3YmMgcHkzaworNzEyODUgYjY5MzQ5ZDRiOWU4ODMxNmI3NWRjODI4NjQ3NTY0ZDQ5ZjQ2YjcwNSByZWxlYXNlMzAtbWFpbnQKKzcxMjg2IGQ2ZGU2ODQ0ZmQ3MTQxYjM2YzY0NmQwNjBiODk3NzU1NjY4Y2YyZjcgbGVnYWN5LXRydW5rCis3MTI4NyAyNGZhN2RkZDRkY2NlNDhiMWRlZGYxMGQ2N2VhZDMwYzVkOWMzZmNlIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyODggMWQ4Y2I3NmU3MTliN2UwNTA4NDI5MWIyYzhkMmNjMjE1YzkxYmU0OSByZWxlYXNlMjYtbWFpbnQKKzcxMjg5IGIzNmIwMGFlMjlmZmJmNmU1NTNiYzY0NDI3MGUzYTcyZjZjODVjZWEgcHkzaworNzEyOTAgYjMzYmRkMjQxNDAyMzU4OWM2ZWZjYWRhNWVlMjI1NDA1M2MxZjUxYiByZWxlYXNlMjYtbWFpbnQKKzcxMjkxIDQzM2RlM2Q1OTYwNzhkMWFlNTVhZDI1OTc0ZjA4N2FiMDgyYjVhOTAgbGVnYWN5LXRydW5rCis3MTI5MiAwYzZiMTZhMmY5MWI3NWVmMjE3MGEzNmJkNTlmMmE3Zjg2MjVlNmRlIHJlbGVhc2UyNi1tYWludAorNzEyOTMgNTQ4Y2EzNDM1N2NkYWU1YzdmMTk1NTJiMWE2Y2YyYmM3YzlhZGRkNyBweTNrCis3MTI5NCBkYTBjMWY3NGNhMjAwYmM4YTFmYmFmMDFhMmVkNGIyNjBkYmMyOTk4IHJlbGVhc2UzMC1tYWludAorNzEyOTUgNGI4ODFiNGE5MGU5NWVlZDdmZDQ1MjZjOTlhZmIxZmIyMTUxMGU5MyBsZWdhY3ktdHJ1bmsKKzcxMjk2IDM2NGJkMDAyYjdmODY3OWZlYzEzYmI1MWYxMjgzMDJkYzBiMGIxZjUgcmVsZWFzZTI2LW1haW50Cis3MTI5NyA1YTdhMzNjOTRkMDAxYzhiZGM3Yzg4NjZmYmQyYTUzNTk2NDQ2NzJmIHB5M2sKKzcxMjk4IGVjMmU0YjVhMGU5MGRjNGQ2MGRjMDI0MWYwOTEyZWVkMjMxMTg0NTMgcmVsZWFzZTMwLW1haW50Cis3MTI5OSBkMzZhNGY5MjAzNzgzZmE5OWFkZjhlYzM5NzNhNWI2ZDBiYWE0YmIyIGxlZ2FjeS10cnVuaworNzEzMDAgNDE0YTMxMTgxZTlkYzM4MDFjYjczZmE3MGUxNzc2ZGRjMTAwMmYxMyBsZWdhY3ktdHJ1bmsKKzcxMzAxIDczNjAwNTE1OTk5YmNhMGYxZGUwNDk2NDM5MjUwNmQ2NTlhNTNiYTcgcmVsZWFzZTI2LW1haW50Cis3MTMwMiBlMzYzOTU4ZmNkNzBhNDNhZDA3YjM5ZGY5OTk1NTJkMGZhMWNlZmMxIGxlZ2FjeS10cnVuaworNzEzMDMgYzZjNDM5ODI5M2JkNjgyYjM1NWYxMDUwYmIxNmJiM2UxOGM4YjQwZiBsZWdhY3ktdHJ1bmsKKzcxMzA0IDk4NjIwMWFjYTY4YjQzNDRiZmJhMzlkZjhjZjk0MTQ3NDQ4ZmUzZTcgcmVsZWFzZTI2LW1haW50Cis3MTMwNSAyMDc5ZWRkNTI4NTg3NDJjYWQ5MWIxOTMxOWNjZjIxZDZiODc3NDk1IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMDYgZWZjN2UxM2E3NTQyMzI1YmIzZjczMDlmYmViYjI0ZWM1NDg3ZDc1NyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzA3IGI0ODgxZjhlYzcwNmY4MTIxM2JmYmNlYzFkOGZkNzFiM2IwNDQwNWMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMwOCA4NTkyNjc3ZWIzNTJjZjg1YzYwNTViOWRiZmQ5MDU3ZTdlYjY3ZmIwIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMDkgMDY2ZmEwYmE4MjkwMGZiYzI0OTg3MmYyYWU3NGExOWRkYjk3ZmZkNCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzEwIDdjMGZmMGRlNjI5NTZmMTc3N2VjNzMxNjY1NjI4ZDQzNjE4NDI3ZjEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMxMSA5OTY4N2Q1MWJlMGExNDI3MWZhNjJhOWNmNzJkZDc1ZjI5MTFmZGI4IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMTIgZTAxMjk4NmJlNGY0ZTUyZjlhYzE2OGRhZmVmNWQ4NDU0OWFlZGE0MSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzEzIDUyNmRiMjhmMTAwZDIxMjViYjgzNTU1MzRlNThiMjZhYmVhNzMyNWYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMxNCAzMGI1MGNiZTVjNWU1ZmM4ZjllOWYwZWQwYTJhMTEwNmNjMWQwMjYzIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMTUgZjdmNzAxMzllZjU3MGRmYjNjNjQ5N2I2MTM2YTFmOWViOTVkOWIwNCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzE2IGNlZTFhODZjNjljMTVlNjQ5YzFkNzU1OWI5MzQwMjU5ZjY0MmY5YmMgcHkzaworNzEzMTcgMDI2MzU0NjAyNjFlOWFmMWE5MzdjOWY2MGNmMGQ1YmFlOGJiMWViYSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzE4IDk4NjQ1MmI1MjZhMWRmNmNlMGE4MzNmNDAzMTVjYjAxZTBkNmMzMDMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMxOSAwNmZhODdmM2VjMzYyNzFmZDA0NzQwZjMxODlhMDA5ZWZkYTljODVhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMjAgNTU2MGEwNjhjMDU3OTVmYTA1MDA1MjE3YmZiMzg5NWZlNzFhOGZjMyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzIxIGU0ZWViMGRhZjYyNTQ2Y2ZkMzc2NzM3N2ViNjJhYzcxZDBlZWYzMDYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMyMiA0NWZkMjI3MGFlMWI4YzFkMDg5NDk5YTJhZDkyMTFjNTY3ZjI4ODFjIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMjMgYzVlMGM2ZjY1NmU2MzY4NWUxYTk4NjBjNmJlZTFlNmMwOTI2MzkyZiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzI0IDA3NmM3MjIxMTU2MTExOTY1OTY0MGEwMjY3ZTY2MTlkZTNmNmVjMDEgcmVsZWFzZTMwLW1haW50Cis3MTMyNSBiOTg0OWVmYjI3NTQ1YzY4M2Q0MjRkYmQ4NjQ2ZTA0MmZlYjhjYjg3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMjYgOGQ2OTc2M2EyMzE3YjU0MDYxOGZjZmIwYWEwY2I3Y2I1ZmRlZjQ2OCBweTNrCis3MTMyNyBkMzQ3MGJjNmQxOTE4ZGE5Nzg1NzZmOWY1ZDhlZTE4N2Q0NzllOTUyIHJlbGVhc2UzMC1tYWludAorNzEzMjggNGE2N2Q2OTE0NzI1ODUxNTA3MzQ1ODBiOWI4NjVlNWQwYTcxN2U3YyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzI5IGQ4MTk4NTE4MmEzNmQ2MDg2MGFkNGVlNjQzMmQ0Yzc2M2I0MDQ4MzAgbGVnYWN5LXRydW5rCis3MTMzMCA5MjBiMDc5MDk2MDAzZDRmNzRkNmU3MzFlZDhlOWQzZTdhZTkxZmFmIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMzEgNWIwMWZlNTEzZjkyODY0ZmY1YmQ2OTE3ZThmMDgwNjM4ODAyN2Y0ZSByZWxlYXNlMjYtbWFpbnQKKzcxMzMyIDU1NDllOGZmMjhkMmNlYzdhM2IyN2JlMTY1NTIzYWNkM2U3MWNkMDQgcHkzaworNzEzMzMgZjY2NDA2ZjI2MDQ0MWYzMGY4NmFjNmEzZjJkMjRkYzJmMDBkYmFkZiBweTNrCis3MTMzNCBhMGVkZDkxZTljNmYzMTI2MmJiM2ZhMTI0MjRhMDU4ODYzNGQxODc1IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMzUgZjgyNGRjNjAxMDZmMTA4ZjJjNjU5YjJkMGVkZGNhMDg1ZWRjOTA5NSBsZWdhY3ktdHJ1bmsKKzcxMzM2IDYwOTNmZGM1ZWU5NjJkZTBjZWU5ZmJiMjY2YjJkODY1ZjliYWI4YTkgcHkzaworNzEzMzcgN2EzOWY3ZTQyYmQ5N2NmZjI2YmM5MTMzNTM1OWE1NDcwYWU0ZTcyMCBweTNrCis3MTMzOSBmMzkxZGY5M2M5YWJkNDlmN2QwMjBkZDUyZDQxNzM1Y2I1MjI0NWVkIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzNDEgMzc0NGVmYTQ1NjY4MWVhODQ3ZDgzYzNlNzU2NjVjODdkYzk5OWM1MyBweTNrCis3MTM0MiA5NzY4ZGE4NmNmOGUzMmFmNjE3OTVmMmI3NDgyM2Q1MGYxOTdhYTU2IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzNDMgMjhiYWU1Y2E1MjE4ZDA0YjJhYzQ4NTJmOGIzODY2NGMzMzEwODNjMCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzQ1IDY5MTE0YTM1NmNmMGRhNzJlYmY0M2Q0NTVjMTU4MWQyNDliOGI2ZmMgcmVsZWFzZTI2LW1haW50Cis3MTM0NiA4ZmJiOTkzNmQ0ZGEyYjE3ODI5Mzk3ODAwODY2YjdkZjllYWNmYmY5IHJlbGVhc2UyNi1tYWludAorNzEzNDcgNmZjZDEwZWE5OThhOTI2ZDUzN2MwNjQ1NjBlYjBkNDRmNmU3OTM5NyBweTNrCis3MTM0OCBkYTczYzQzZTY5MWVkZjg3NWQxYTcyMjNmOTFhYWQ3ZTgxY2I0ZTI5IHB5M2sKKzcxMzQ5IDcxNmY1OTU4YjVmMGRhMGE2MWZkMjcxODAwMzJmZmNlZWI2OTg1ODAgcHkzaworNzEzNTAgNmY0YTA4OGQzNTlkNmNlNmY5Nzk4OWY4NDM2MDcxOTYwMWMwZWM3YyBweTNrCis3MTM1MSBjMzdiYjFiN2E0N2E4NDNlMjBkODBmY2U2ZTg2NzdhMzRhZGVlMzA4IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzNTIgNDliMjQ5MjJlYjJkZGY1N2Y5MzMyMWZhNTcxNDQ5ODBhMzI1ZGE3MiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzUzIDY3NGIyMDAwMjI0Y2M4OWU3Y2JjMWFlNGQxMGVkNTg5MjYzMmIzMjkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTM1NCAzMTU4MjQ4NWZiZmNkMTUzNDcxZjBkODkyZDlmZmFkMmMzNTUwMzczIHB5M2sKKzcxMzU1IDE1MzkxN2MwMDFiZWZhZmQyNmFkMzdlYzI1MTE5YTcwN2UxMTk4YjAgcHkzaworNzEzNTYgZjkyNTMzOTI1ZWE2NjI3MDVhYmEwYjA3YmQ2NTMyYzA4MTdmNDMwYSBweTNrCis3MTM1NyA5NDgzMjQ1NWUzN2Q1OTBjY2FkNzg0MDE5ZGJlODFhNmMyNDQ0YjM4IHB5M2sKKzcxMzU4IDc1ZGVmN2VkOWQ1ZmM2M2Y5MDVhYmIyZGQ4MDM5YTdhYmM0YjU3ODcgcmVsZWFzZTI2LW1haW50Cis3MTM1OSBjMzljMWMyOTc4Zjk0ZjViNGY4NDJjOTZhYTQ1MzhlMTE0MjM1OWVlIHJlbGVhc2UzMC1tYWludAorNzEzNjAgMmIwODMxNDZhY2Y1YzI2Njg4NDZkNTZmN2E0YWJmZjMyZjAzOWIxNyByZWxlYXNlMzAtbWFpbnQKKzcxMzYxIGI1MGYxMWI4Y2FkN2Y0MWVhZWNkZTEzNDkxNDRhMDRkNDI0ODk0ODkgbGVnYWN5LXRydW5rCis3MTM2MiA5MGQzMjM4MWEzNDBmYmU0MjVjZTBkNzE5YmZjNGQyOTIyZWI5YmU0IHJlbGVhc2UyNi1tYWludAorNzEzNjMgMDFmMWFlODM2MzFhZTgyYmQ4NTk4YTExYzE3ZTNmOWIzZjU2YzM4YSByZWxlYXNlMjYtbWFpbnQKKzcxMzY0IDI3NWMwYmE3NDg1ODllOGE2N2YxZDZhMWEyYjI3NWEzNmJhMzNlM2YgcmVsZWFzZTI2LW1haW50Cis3MTM2NSA1ZThjM2U3NDUxZmZiNzljZTExOGZjMjk3ZDg2ZWMzZGMwMTBjZjk5IGxlZ2FjeS10cnVuaworNzEzNjYgOWFiNTI0MTcwZjY4MmYzMzJiYTBiYmE4MTU2NWE4MmExZTgwMWFkOCByZWxlYXNlMjYtbWFpbnQKKzcxMzY3IGZjZTNhZDRiMjNkNjBjMzVlZmZkNWJhYmU5ZmMyZDRhN2ZjZTc1OTAgbGVnYWN5LXRydW5rCis3MTM2OCA1Y2UyM2NmYjk4YzdmNWZiZGY2MjA3MDc2ZWRlNmIxYzEzZGU2N2QxIHB5M2sKKzcxMzY5IGM4NDIwMTE4OTM4NzNlYWYwYjg3Nzc4MmQ0NDg1MTkxZjc0MjUxNTYgcmVsZWFzZTMwLW1haW50Cis3MTM3MCBlMjMyNTJhOGZmNTkyNmZjZmMxZGVmODc5NDlkY2RlNmVhNDE1OGU0IGxlZ2FjeS10cnVuaworNzEzNzEgNWE0OTQ2MjNjZjNhODE0YjllMmUwYmI3NjY4MzViNGFlYjNkODQyNSByZWxlYXNlMjYtbWFpbnQKKzcxMzcyIDZjNDZkNmRiMmZkNmE5ZmIxYjU3ODBkMzQ3MzI3Y2U0MWZjMTdjYmEgcHkzaworNzEzNzMgZDE2Y2FkYTk2MzcwMTkwNzM4MDUxZmM1NzMyYmY5M2NhYTIxYmJlZiByZWxlYXNlMjYtbWFpbnQKKzcxMzc0IGJhM2E5ZWJjZTgxZTdjMmNhYWYyYWJmZTYxMWI3Yzk5ZjBkNDVjMzIgcHkzaworNzEzNzUgMzc5OTcwMzA5NDc1NTY0ZjlhNmQ4OTMxYWVlN2Y5MGU2YjUxNTcwNSByZWxlYXNlMzAtbWFpbnQKKzcxMzc2IGJjNzliZWY1NWFhODA2ZTgzMTU0ZDY0OWEyMmRmODFkMDBiMGU5ODAgcHkzaworNzEzNzcgNDFlNzIwMmU5ZjkzMDQ2ZGZkNTNmYjNjYmRhNzU3ZGE2YmQ2OTdkYyBsZWdhY3ktdHJ1bmsKKzcxMzc4IDI0OGFkZmNiYjcxNTQ0YzZhNTczNTBmZTc4YTZjYzFmZWE1N2QwYzYgcHkzaworNzEzNzkgZGIxOGU3OGI5MmQ4NmEwMzFmMGJiMGNmMTkwYjg4Zjk4NmFjODEyZSBweTNrCis3MTM4MCAwYTFjZGExZTdjMWM3OTY4NzMxY2NmYmQyMTg5ZjAzZDFlZjI4OGUyIGxlZ2FjeS10cnVuaworNzEzODEgZDA0NDkwYmVlMmVkNDhkMmI5ZGI2Nzk5Yzg0MjU4ZDAyYzAxZTFmYSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzgyIDA5MTcwNmUxNDA1NjA3YTc2MzNjODcxNzBmODgwMTllOTRmZTRmNTcgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTM4MyBhZTVmNTE1NmI4ODI2NmFkZTRhYTgzODg0ZDQ5MDRiZDJmYzBkNTE2IHB5M2sKKzcxMzg0IGY3MTA1NTUwNTNiZjJmOGY2MmUwMzYwNWNiZTA4MjBhYTgxMTlmYzYgcHkzaworNzEzODUgMTA5OTQxMDE1NzAzMzA3NGI3ZWJhYjllNWE4NDAwMjNhNzc3NzlkNyBsZWdhY3ktdHJ1bmsKKzcxMzg2IDI1MWVmOTlkZmI0YzQwMWE4NGU4OTBjOTkwY2QyMDFiZmRjM2E0ODkgcHkzaworNzEzODcgNzRkOWY3NWQ5ZGMxZmNmZDBmNDRmZGRkYzc1ODQ2MDc0YjZhYTJkYSBweTNrCis3MTM4OCAxOWY3ZDNhYmU3Y2RlMjdmZmExNDYyYjk4NTIyOTc3YWIyNDA4ODRkIHB5M2sKKzcxMzg5IGRmMGVkOWViNzljMzY1NDVmMWNmMTMyYjEyYzAxZGQyNTZiY2U0NzUgbGVnYWN5LXRydW5rCis3MTM5MCBmZDE4MGJmNDcyMjdmZDZhNmUzNDViNGZhYWNiYTQ1ZTEyZDdjMjRlIHB5M2sKKzcxMzkxIGE5OGM1MDkwODRlYjM1NjJjYzY2Y2ZiZDYzZmU4MjVhZWE0ODVhN2MgcHkzaworNzEzOTIgN2I4OTYyZjY1OTE4YjNlNDk1OTdjMjM3NmI0Y2JmMzE2MjI4ZjI3NCBsZWdhY3ktdHJ1bmsKKzcxMzkzIDYxZTM3ZWZmYWUzYWVhZjMwZTg3ODQ2MTU0ZDE4YzViNWZkMWM5OTYgcHkzaworNzEzOTQgZmQxNmU1NzkwOTZlM2EzOTBmZGZmYTAxZDYwNzYxODUzN2MzMDBiMiBweTNrCis3MTM5NSAwYmMwNTI0ZDE3Y2ViYzIyMWE5MDljNWYzNjc0MDA3YmZkZmJkMDJmIGxlZ2FjeS10cnVuaworNzEzOTYgMDIyMjRjYjIxZDdjYjk1ZWI0NTFjMzMyNWNkZWI2M2M4ZmRhNjRmNiBsZWdhY3ktdHJ1bmsKKzcxMzk3IGIxNDA0YTg2OGQ4ZjQ4ZWQ1N2ViYzU5NzgyYWE1YTQxYmQ1Zjk3NzQgbGVnYWN5LXRydW5rCis3MTM5OCA1YThlYmFiYTFhMDllZmRmZTY0MzJkZGM4ZmM3MjUxN2Q5MDgxYWJjIGxlZ2FjeS10cnVuaworNzEzOTkgYWZmMmIxNWNjYzY4NDlhZDFjNjM2ZGEwMTNmZmI4ODU1MTgzZTI5ZCBweTNrCis3MTQwMCA2N2Q5ZDYxNjBjMTM0Y2RkOGZkOGVkNzJjMWNmZmJlZTg0OWQ5ZTEwIHB5M2sKKzcxNDAxIGQzNWM2NDg2YWQ5NGE2ODU5NjAzNzc2ZmU2ZmMzNThjNDIxMTJjZWUgcHkzaworNzE0MDIgNjNiNTc1MTNiMWJkZDQwMTIwYTMzNDlhZjM3ZWJiNWY5YTJiYzcxMCBweTNrCis3MTQwMyBkOTA4OGVmZDU1OGJkMGIzNThkYjE3Y2Y1OWVhZDk3NWU0NzdiNzQ5IHB5M2sKKzcxNDA0IDE4MDUzY2Y2MTE1YTUyYTc3MDA0YjUxNThkNTExMDhkODkyZjNjNjkgcHkzaworNzE0MDUgYzIzMzY5NTdjNTM1NGRjMGIyMzg2MGZlNTFjMzViODI0MGIzMWQxMCBsZWdhY3ktdHJ1bmsKKzcxNDA2IDMwODY0MjdiMDcwOTIyZGM0YWZmOWFlYTA2ODdkYzVkY2JkNjM3ZjIgbGVnYWN5LXRydW5rCis3MTQwNyAxY2M5NDk5N2NmYTdlZGM1ZmE5OTE0NThmODFhNDgxMDBiMjc5YWYxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0MDggOWE3MzE3Y2U2ZGI5OTRhYWUyMGFiZWE4ZTZjYTg1YTkzZWI3Mjc1MSBsZWdhY3ktdHJ1bmsKKzcxNDA5IDUzNjc2MWMyYjZhNGEyMGQ1NDc5M2FlMTUwMzI2YzBmMmE3YTJhNTMgbGVnYWN5LXRydW5rCis3MTQxMyA0MGVmZjNiMTgyZTRkMmZmOTFiYzMwZmJkNDE5NWM4ODYwMjYyNWUwIGxlZ2FjeS10cnVuaworNzE0MTQgZGZhOTFkZmVkMGIwNTQ5NmMyMTZkMzgyMGMwZTJhZTMwYjQ0NmY4MSBsZWdhY3ktdHJ1bmsKKzcxNDE1IGE3ODhmYWNlZTZlZjRkNzgzN2QwMmQwYmFkNzdmNWRhYWU2NjkzZTIgcHkzaworNzE0MTYgNWFkMjA0MzEyYmNjMzA2YjQ4MTJkYTlmNTg3ZTM3NjgxZDIyYjA4NCBweTNrCis3MTQxNyAyYmEzM2MzNGRjMWE3OTY0NmE3MjZkNjNiMTEzODYwMjEyNTJlMTYzIHJlbGVhc2UzMC1tYWludAorNzE0MTggMDdjM2FjMzBkYTg3MDQ0MTliZDU2YTBmYTMwNWU1OGRkNzI1NmFkZSByZWxlYXNlMjYtbWFpbnQKKzcxNDE5IGFkZTVjMjcxOThkYmVmMGM5NjI5MmE3MDU3ZjZmYWI5NDc1OGE3YTcgbGVnYWN5LXRydW5rCis3MTQyMCBiYzk0YjgzMjNiMzliMjliZDM3NTM2NWViMjViNzg5Yjg2NGRhNGNiIHB5M2sKKzcxNDIxIGY3MGIzYjVmNTM4MGNlNTQ1ODQ5ZGU1YWZiMDQ3ZTEyMjRjNGJkMzYgcHkzaworNzE0MjIgNzllNTdjODY2YjVmNGUyZmMxZGU4MGM0NWE3ZmFhMGNmYzk4ZjJkNyByZWxlYXNlMjYtbWFpbnQKKzcxNDIzIGI0YjI1MTFlMDNjNzUzMGE5YTM0ZDUwNTU2NjUwZGZlNzIzZmU0MWUgcmVsZWFzZTMwLW1haW50Cis3MTQyNCBkMzYxMGUzMzkyY2Y0OWEzNWIyNDE3ZTdmNzhiZjBmNTBmYzJlYWI2IGxlZ2FjeS10cnVuaworNzE0MjUgMDk1MDNjZTY2ZmYxMjNhY2YwMmU3MzI5MzQ3NzBmN2JmNWRiNGY5NCBsZWdhY3ktdHJ1bmsKKzcxNDI4IDhhNDU2M2QzYjVlODg5NWI5OGNiMWQ3ODRkY2ViMmY1ZWVhNDUwNWUgbGVnYWN5LXRydW5rCis3MTQyOSBhMjFjODQ4YWQ2MWVjNDQ4Njk0ODc2NWZlODc3NmUwOWVhNmFlZmM2IGxlZ2FjeS10cnVuaworNzE0MzAgNDBlYjk5ZTg5MzVjNjRkZTRmN2Q1OTA3OWY1N2M4NDA1MTBhNjZhZCBsZWdhY3ktdHJ1bmsKKzcxNDMxIGE2ZmYxN2E0MmFkMzFjN2E5N2Y1N2YwMDRmM2MyNWI4MjljYzIyMDggcHkzaworNzE0MzIgMTA2MzQ4MWEzNmY4YTJhMmEyYTQ1ZDE0YTk0MTUxMjJiOGY1MGYyNSByZWxlYXNlMjYtbWFpbnQKKzcxNDMzIGE0YmM4MGY1ZDZhMGY2YmNjNTE5YmYyYmUwZGYwODExYzVhY2VhMjggcmVsZWFzZTMwLW1haW50Cis3MTQzNCBjYmFhMWJjMzUwYmEyMDU5OGJlZDNjOWFkYzM5MWJhMmUwYzIyZDJhIHB5M2sKKzcxNDM1IDVmMzVjNTNhM2FkN2I4ZTEwZWYxZDNhODFlN2MzODlhNDdiMzhjZjIgbGVnYWN5LXRydW5rCis3MTQzNiBmOTY4OWQxNTBiYjlmZDgyYzMzMjE2YjYzYjg0NjY1YzI5ODJkMGY3IHB5M2sKKzcxNDM3IDBiOWU2ODk3MWExZTJmOTIwYTA5NTc4OGI4NGRjNTgyYTYyYWRkOGUgcHkzaworNzE0MzggOWVhOTU3NGRhYTViZjY5NGNhNTc3MTQ2NTdhYmZjNDY5ZDExNDU4MiByZWxlYXNlMzAtbWFpbnQKKzcxNDM5IDRhN2RiNDEyZmRkMmFmOGUyZjAxOWFmNTBhNmMzY2IxOWZmZTkwMTkgcmVsZWFzZTI2LW1haW50Cis3MTQ0MCBhYTliMGE2ZDdhZGRkNmExMTA1NzllNTRmYWRmOTliNzVjMDZiNzczIHJlbGVhc2UyNi1tYWludAorNzE0NDEgMDg5YzcyMTA3ZDdiMWM2MTI1MmE4MzAxMmMzMDk0YjBmMGE4MTFkZSBsZWdhY3ktdHJ1bmsKKzcxNDQyIDkxNjk0M2NmNTI0MzZmNzc0M2NlMzkwMDQ4YmNiMGEyNGRjMTVlM2MgcHkzaworNzE0NDMgZGJiOWI3MTc2ZWVmMGM2ZTA2NTU1YWFmZWFmYmEzMGZiZGVhMTc0ZCBsZWdhY3ktdHJ1bmsKKzcxNDQ0IDlkOTJlZWJiN2MzMDUwM2RjMDA2Yjc5ODRlYmEyM2IwODY3NmU0ZDggcHkzaworNzE0NDUgYjYxNGE1MWY0NDIzNmE2ZjhhZGZmMDk3MDZmZDUxMDFmMzE2ZTIzYSBweTNrCis3MTQ0NiA2YmY0MjZlNTUxZDU3MmUwYzJjZTUxZmE5Y2YyYWI5OTQxOWZmMDg0IHB5M2sKKzcxNDQ3IDAzMjc1MDRhNGY2YTFhZTQ3NDEwMzE4YzQ4NjE5YmE0Yzc4NDUwN2QgcmVsZWFzZTI2LW1haW50Cis3MTQ0OCA0Y2RkZWYxNDQ0MjgyNDRjZjBmOGUwZTJjZTRjZjQ2ZmM2ODcwOWI0IGxlZ2FjeS10cnVuaworNzE0NDkgMzIzNjZiM2UwY2E5OTA3MjUyNjc5ZGE3Njk3NTE5NGMzZjhmMmJiOCByZWxlYXNlMjYtbWFpbnQKKzcxNDUwIDBjMTFjMzQxOGQ4OWQ0ODZkM2VkMTk4YzgwZTI5MDY3NjA2NDMzYjQgcmVsZWFzZTI2LW1haW50Cis3MTQ1MSA5YTg5OTk5NzczNjM5OTRlM2E5ODY4ZDM0YWIxMzI4NjFlZGVhYTUzIHB5M2sKKzcxNDUyIGI5MTI1MTVmZTljZTIyZWE3YWI5MGNmOWQ4N2I1ZjkwZDY3MmU3NjAgcmVsZWFzZTMwLW1haW50Cis3MTQ1MyAyNzk3ZTVlNjAwOGYwZmU0YmFjMjNhZGU3YjZjNGZlNmVlODE0MGQyIHJlbGVhc2UzMC1tYWludAorNzE0NTQgMTVkNjA3NWMwODViMWUwM2IyODNmMDc3ZDg3NTZkODUzMjMzYmI4MCBweTNrCis3MTQ1NSBjOTUwMjZjMmYyYmEwYzNlMWUwZDY1NmRiMDdjYTIyZDYwNzU5MmI0IHJlbGVhc2UzMC1tYWludAorNzE0NTYgZjBmNjA4OTJjYmExYzkzODAyYzcxNTA1ZjEwNGIwZTQyNTU0ODhjMyByZWxlYXNlMjYtbWFpbnQKKzcxNDU3IDA2YjY0MTc4YTMwZDBmY2IwODY0Y2FlNGRkZGY1ZmE2MjM0OTdmNzIgcHkzaworNzE0NTggMGJlNjNjNzUwNDFhZGY3YzQ2NDc1NDE5ZjU4MzAxYmQxZjYyNjAzZiByZWxlYXNlMzAtbWFpbnQKKzcxNDU5IDFhOGJkZTE4ZDM1MzUzOTkzZGY3YTJhNWNiNWNlZmQzNGQ4ZGVjNzUgcmVsZWFzZTI2LW1haW50Cis3MTQ2MCA3OGE5NzM5ZGFmYTQxM2ZjMjNjYjhlM2RmNTQyYjY0ZWUzOWFkYzdmIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0NjEgZjcyNDk3NGI4ZDg5YjMzNWE5NGI0NmM4N2ZjZTgyM2RiMDMyM2ZkNyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDYyIDdlMjI5Y2EwYjkyYTVlODYyYjQ2NzA3MjY1YmIxYWEyMWFlNTc3Y2MgbGVnYWN5LXRydW5rCis3MTQ2MyBkOTM5MjBhMjVkYTRjOGM2YzJlNTc1Y2M5ODFmOWYzNTAzNmIxYWI1IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0NjQgOGYxM2E0MTRkODQzMjk1OGU1ZDcxNmIzMTI5MjRiN2FiYjc1Yjg4OSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDY1IGZiNDFmZTY3ZTA2MWEyOWM0NDgwOWVlZTdlNjg3Y2NlNmRmODlkZmUgbGVnYWN5LXRydW5rCis3MTQ2NiAxYzUyYjE0NTRmMWUyMDJmYWExY2ZkY2E4MWVjMmZlN2UzZmY1M2M2IHJlbGVhc2UyNi1tYWludAorNzE0NjcgNDQxMTIyNGNiODA2ODhiNDFiZWY3ZjA1MjVjOGI2M2YzZjY1ZDY1YiBsZWdhY3ktdHJ1bmsKKzcxNDY4IDJhMDNjZDA0ZDhmNDA4NjFiMjBjNmNjNzJmYWI3Mjg5Y2Q0MjkxNjAgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQ2OSBmNjUyZmUxNjQ5ZWQ4ZjM4NWJiNDY2Nzc1MjBjNmNiODMyOTU2ZWYyIHB5M2sKKzcxNDcwIGYzOWQzMzc1MjU4MjE1NWM2Y2E3MWFlMjNiMWUxNDQyOWRjY2YzZmQgcmVsZWFzZTI2LW1haW50Cis3MTQ3MSA4YjJjZGZkNWFhYjZmYzMzZTBhMGE0NjgyMjE1ZWQzMWQzNjUyMzQ3IHB5M2sKKzcxNDcyIGVmMzU5MmU5ZTAxZTVkNTlmZWU2MGUyYzNkOTg1OTk2M2FlMmNlOTkgcmVsZWFzZTMwLW1haW50Cis3MTQ3MyBlYzIzOWNmYTNlNjE3ODU4MDRlZTQ2NDU4NTkzYmYxZmUwZjg0NTQxIGxlZ2FjeS10cnVuaworNzE0NzQgYmYyZWVkODY1YThhNGMzNTkyMGI2Njc2MDI4NDU5ZTA5MjgyM2MxMSByZWxlYXNlMjYtbWFpbnQKKzcxNDc1IDRhMzVjOGE1YmU0NmZlOWNjYTU2MmYyMDE3NGZkZmI5NjEwY2Q1YmIgcHkzaworNzE0NzYgMDAwM2I1YjRmMGMwMzQ5YzQ1NTUwNWZlYjkwZmQ5ODIyNWIxMzZhZiByZWxlYXNlMzAtbWFpbnQKKzcxNDc3IDYzMjg5YjgyYzg0OTAzMDEwYTgzMDk1MTdmZDc4N2VhZDY3YTA0ZWUgcmVsZWFzZTMwLW1haW50Cis3MTQ3OCA5MDM1NjliMTMyYzI0Nzg4MDVhZjA0MTE2MzViY2NiYjI1ZGVlOWQ4IGxlZ2FjeS10cnVuaworNzE0NzkgMmUzOGM2MTdmZDNlY2NlYmMxZWIzNDcyNWM3ZmJhYzkyODhhN2RlNyByZWxlYXNlMjYtbWFpbnQKKzcxNDgwIDM0NTVmZDc4NDY3ZTY1ODM3YjczYThkOGE1MDA2MWJkYjAxNzE4ZGMgcHkzaworNzE0ODEgMzczMjdkMTkxMmE4MTQ2ODYzMTgwYjQ4NDQ5OTc5MDQ3M2YwNjMzNyByZWxlYXNlMzAtbWFpbnQKKzcxNDgyIDUyODJjNjZkODk3MjViZDQ3NjViMzVmYmFmZjJkMWIwOTM0YWJkMjIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQ4MyAyZjljN2I5MGE3OTU4MGE4ZTRiMTRlN2MxYTlmZDYwOTRhYWFlYzU2IHB5M2sKKzcxNDg0IGYzNzZhM2NhMTdkMzdmOWEzMmE1YTY4Y2IyZmZlZjQ3ZmQwOGZiOTUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQ4NSAyZDM3MjA5ODg1ZTI3ZWI5ZDQ5N2VkM2U5YzM0ZWNjZGVlM2E3OTdmIGxlZ2FjeS10cnVuaworNzE0ODYgODg2MTI5ODU4NmMxMGYxYzViZTU5NDYwOWJiZTdhOTEwOTk3N2Y5OCBsZWdhY3ktdHJ1bmsKKzcxNDg3IGQwYjc0NDMwM2I4NGUzMjU0YmIwNTllNDg5YjA3MjMzNzQ1OWZlMzQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQ4OCBjOTQ5ZGRjNDk0ZWI4NjZhZWQ2ODI2Yzc0ODVkZGVmODFkMzA4YmU5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0ODkgMjk3MDUwYWI3YWNhNDc2OTY5NWEyZjNlZjJjZDQ2ZTdiMzVlNjU3NCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDkwIGYzNDI4MWRiNDdlNjFhYmJhOWRhMzM5YzZkYjE1MmU3MDZkN2QzMzggbGVnYWN5LXRydW5rCis3MTQ5MSAzNjI5OTgyODY2MzVkMDRmYTdmM2ZmNWE5MTA5N2FlNWI2YmQ0M2JiIHB5M2sKKzcxNDkyIDRhZjMxMTQwZGUyOWRhYWZhNGU5MTFhOWQ0ODBjZTNiZmFkZmNiMDkgbGVnYWN5LXRydW5rCis3MTQ5MyAxOTg5MzQ5Mzc5YjVhYzVkN2MzNTlmNjkwN2Q4NWQwYmMxNmE4ZmFiIHB5M2sKKzcxNDk0IGQ1ZGRkMzQyMWM5YWU2OGM0YjIzMTQ5M2NmMTdmMzQyMjJlMmQwMzEgbGVnYWN5LXRydW5rCis3MTQ5NSA3ZTk3OGNhNDI5MzBhOTA2YjBjY2JmM2MyMzdkNzhkNmU2MzgxNGVlIHB5M2sKKzcxNDk2IDNiMWI2MTQyNjkwYWEzYjMzZDViMGUyMmY1NDU2OWIzYzdmMTRlNDEgcHkzaworNzE0OTcgMDM3ZjVmN2U3YWIxZTZkYTA2ZjMzYmUyZjgyMDlhZmMzMjY1ZTI3ZiBweTNrCis3MTQ5OCBmZTVkMDdiZWI1ZDM3Zjg3N2Q3NGJiMWU0N2QyMDczMzk5MzNjNWZiIGxlZ2FjeS10cnVuaworNzE0OTkgYmI4MTY0ZGIxYmRhNjdmNmM0YzRiYzM3YzIxZTNmODhhODllYTJlNiByZWxlYXNlMjYtbWFpbnQKKzcxNTAwIDQ4NDg1NjA0ZWQ0ODdiMWRkNDNhZDAzMDgyNTc2Y2U1YTM1MmE5N2UgcHkzaworNzE1MDEgY2FkZjk1NWJjMThiZDE1ZTI4NTk3Y2FmNzljNjA2NDJkY2M3YzY5MiBweTNrCis3MTUwMiBmMjIxZmNlM2Q2YmEzOGNmZDhjODhmMDQyNjhlOGE0NmJhZTFkN2NiIHB5M2sKKzcxNTAzIDAyMWQ4YzgyZjI4NDQ3ZmU0NzhkNDIxMDg1MWYzMDNiOTg2ZmUxYjIgbGVnYWN5LXRydW5rCis3MTUwNCA5M2Q0Zjk4MjYxNWYyNjRlMGRmOTYzMTRlNTU0YjE1MTFmNjBmMzFhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1MDUgZDIzZTg0ZTQxOGNlOGQ3M2ExMWExODNlZGJmOWQxMGNjZmNmYjMyMSBweTNrCis3MTUwNiA0ZTA4YjE4ZTM4ZmJlMTRmZDM0YjFkZjhlNTgwMWNmNGRiNTc5Mjc3IHB5M2sKKzcxNTA3IGFkM2YzZDMwNDk2M2NkZmIyMjhkMWRmYzcyMWE1YTBmZDQwNjZiYzYgbGVnYWN5LXRydW5rCis3MTUwOCAyMWVmNDc1OGNhY2Q0MzBmYWU4YTIwZTU0NWU5NjJmMWNmYmZlYzZkIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1MDkgYTgyNDQzMTI1MmUwZjI2MWQ1MjM5MWE0ODAyMWIwMDc1YTMzNTEwYiBsZWdhY3ktdHJ1bmsKKzcxNTEwIDI5M2RjNWYwOGU5OTBlM2QzNjViOWUyNTE2OGVhM2Y3ZDg4YTA0OTUgcmVsZWFzZTI2LW1haW50Cis3MTUxMSBlMDcyM2NjZWU3NGRmMTFkYjc5NjdjOGVhNWJkMmU2NTFhODkyMWE4IHB5M2sKKzcxNTEyIGE0OGZjZWIwZjBiM2ZmZDBiZmI5ZWRhOGQ1ZjM3N2Y1N2MyMTAxYTggcmVsZWFzZTMwLW1haW50Cis3MTUxMyA3NTRhM2Y3M2ZmMDdmYTU2ZGVmMzBlOTVlZWJkZDk3YjljZmJkMmE5IGxlZ2FjeS10cnVuaworNzE1MTQgM2IyNTkxMWM2YTRlYTZhOGUwNmFlNmFmMzZlOTA3ZGNhMDAyMmNlZiByZWxlYXNlMjYtbWFpbnQKKzcxNTE1IDE2ODQ4MmVhZmI1NjFkYjg3OTc0NWVlOWI0ZTk5NzU1YzJlYmNmNjAgcHkzaworNzE1MTYgZTJiOWIyYmM3MGIwZWNmZjBiMjY5ZGIyOTBlYjNhNGNkODA1OTkzOSByZWxlYXNlMzAtbWFpbnQKKzcxNTE3IDcxM2VmNjhlN2ZmZDAwYTUyNmVlNzBmYjA0MGRlNjI2ZTY4MThhZWUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTUxOCA0Y2ExNDcxYmQxY2QzNjg2MDk5NTMyZDUxMWM3ZjI1YjE2ZTVkNDYzIHB5M2sKKzcxNTE5IGY0ZDU1M2VjOWRkYzk3ZTcyMzM5ODI3YmQxODcyNmY3YzRkOGU4ODAgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTUyMCBkN2M1N2UxNmI3M2M1ZjNkZmZmNjNlYTg4NzQ5YzFkOGRhMTcyYmEyIHB5M2sKKzcxNTIxIDQ0MDdlNGQwNzA4NDIxZGU4M2E2ZjBiNDZhNTBjODdjMjcxYjU2Y2UgcHkzaworNzE1MjIgMWNiM2JjY2U4MzE2N2NkZDJlYTBiZDExYjY4NTE3MGMyZTcxZWIwYyByZWxlYXNlMzAtbWFpbnQKKzcxNTIzIDI2MDY5ZDNiNjg5MTlhZGQ5NTExOTQzZGM2M2E3YzRjYmNlN2IyNmUgbGVnYWN5LXRydW5rCis3MTUyNCA0NjE2N2FkM2FiOTNmYTg0NzA1MDVhZGYxMWMzMmIzMmI2YmExMjgyIHJlbGVhc2UyNi1tYWludAorNzE1MjUgYzkxNmY4NTRmYWViMmI4NWUzYmZmOGRiOTExZmMzZTNmYmE5OGM3ZCBweTNrCis3MTUyNiA4ODY3YTViNjBhOTEzMzQ2YTlhYjkwYWExNDRlMjk1ODU1OTJjMGMxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1MjcgNjUwNmNjMzNlYmFkYzE5NGJhODdmOWNkZTRmZmM0ZWUzYTExZWExNCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTI4IDUzNmYxODBmNjZhNzc2MWM1NWZlODU3Mjk1NGI5MDk3MThkNGExMGEgbGVnYWN5LXRydW5rCis3MTUyOSAxNDA5MjhjNmNmNTFmMDEzZjgwYTg2YjY5NmZmNzBhYmI4NDIwYzZkIHJlbGVhc2UyNi1tYWludAorNzE1MzAgOGM4MmI3YzUxYmRkZTMwYTVhZjRjNGQwMDVlMWRiOTJmY2EwMDkxYiBweTNrCis3MTUzMSA0MjcyOWVkZGJiNmMwYjAzMmU5ZmJkZWIxNjJhYWM2ZjczYjY1OGFlIHJlbGVhc2UzMC1tYWludAorNzE1MzIgZDBhNzNjZjQ2MTgwZDQxMmE3NTQ1NzZjMGJiMWZjZDFjMDM4OWRiMSByZWxlYXNlMzAtbWFpbnQKKzcxNTMzIDA5ODg4NWM2YjEwMWQwODU3OGFmZWVhZjI0MzA4YWJjMmM4MzdiNWUgbGVnYWN5LXRydW5rCis3MTUzNCBiYmI2M2M3MWE5ODMxOTE0MzQxNjA1NTZlZTcyZmY4MWYzOTUzZDgwIHJlbGVhc2UyNi1tYWludAorNzE1MzUgOTNhMmQ4MGNkMzRkMDM4MDE0ZDJhN2JmZTMwZmFkMzg0ODhhYzMwZCBweTNrCis3MTUzNiA2NmRhNTE0ZTNmYTM5NTI5MDBhOWZiODk2ZDY0YWQ2ZmFhNjQ0MTg1IHJlbGVhc2UzMC1tYWludAorNzE1MzcgYTI0OTJiNGU1MDVkZjNmYzMzN2FkMjVmZjY4YzkyODc4MzI3NmM1YyBsZWdhY3ktdHJ1bmsKKzcxNTM4IDgzMjI4YmJlNTkwNjc4ODE0ZTRlNDRmZjI0MTM1NGY5NjAyODc4N2YgcmVsZWFzZTI2LW1haW50Cis3MTUzOSA3ZTMxOWVlZmFiOGM4ZWY4NGU1NGQyNGU5MDc4NmJjYTFlMGExMWY5IGxlZ2FjeS10cnVuaworNzE1NDAgNDgwZjdlYzNiODY5NjA4ZmZkYjg4MjJjZGNjZWU1YTJiNWNhMzk1ZCBsZWdhY3ktdHJ1bmsKKzcxNTQxIDJlZWM1N2FiYzUyMzhmMzk3YjJlN2Y3M2ZhZTM4ZTM4ZDM5ZDE3YTggcHkzaworNzE1NDIgZTllMmFlM2JmYmMxNDA0MzMwYzFjNDUzMjk4NjZiZmYxNTkzNDdmOCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTQzIDhiYzRiYzg3Yzg4NTllNTg5MTdkMzc5OGIwNDY5NTU4Njc4YWRmMGMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU0NCBhZTc0MTQyMDg5ZDJiYmZmMjY5M2U0YjBiZTVkZDBiMjE1MzY1Nzg1IGxlZ2FjeS10cnVuaworNzE1NDUgZGEwZjdmYzc4N2Q4MjZkOGNkZjdmYzIzZjc2MmQ0N2FlZDU2N2U0YiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTQ2IGJjNWM1ZDdhMmExNDc5YTA1NzZkMzc5ODg5OTI2Y2ZhZjRjYWMxMDEgbGVnYWN5LXRydW5rCis3MTU0NyA3ZDQ0OTk3MTFhN2Q1YWRiMmMzOTY3ZTA1M2ZiMmMyOTIzZmNiYmIwIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NDggNjIyYWJmNmFjOTdmYWIzOTBkMzJhMzE4OTkxYTJiMTllYjQ1MzgzZCBsZWdhY3ktdHJ1bmsKKzcxNTQ5IDEyYThkMTk0NzE2NzkxNGFkMDM5YjRlMWY0MDhlMTBhMjVkYzYxNWIgcmVsZWFzZTI2LW1haW50Cis3MTU1MCA1NDcyNzg5NjUxZTE2MTEwMjI4ZWU2MWRjY2Q5Y2QwZTk0MGQxYTVhIHB5M2sKKzcxNTUxIGM3NDBmZWZhZTFiYWIwZTkxZDFmMGJiZTU3MjMyNDRjNjdjY2RkN2EgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU1MiA0NjA3ZjU0ZTc2OTM2Yjg3ZGFjNzg4YjRjN2JlZjhiMTkwOTMyYjZkIHJlbGVhc2UzMC1tYWludAorNzE1NTMgYWI3NWRhMjY2ZTU3YzU1ZTc3NzAyNGZiYjg0YTZhMzAwOGRjNDgzNSBsZWdhY3ktdHJ1bmsKKzcxNTU0IDM3NzA2NTJlYjBlNTA5OGJmMWM0MjYwNDExOTEwYzRjOTNlYjUzMjEgbGVnYWN5LXRydW5rCis3MTU1NSA5ZTNjOTc2ZGE1ZjQwNTI3ZDM5ZTcxNGQyMWNlY2I3ZWNlMmMyZGExIGxlZ2FjeS10cnVuaworNzE1NTYgNWVmMThmMGY0MzEwOTFkMDVjMmI0YjI2MWUwOWExODA1OWQ4NWZlMCBweTNrCis3MTU1NyA2ZjhmYzZiMTY3ZWE4YjAxMDgxNDg1OTQzMzhiNjc2NDliMDk0YWYyIHJlbGVhc2UzMC1tYWludAorNzE1NTggZTQ5Y2Q0ZjQ3Zjc2MjBiMDI3ZTk2YmMyODAyYTY2OGIwNjc1N2ZiMiByZWxlYXNlMjYtbWFpbnQKKzcxNTU5IDk1MTMyY2MyMmVlNWFiN2I4ZGFlYzYxNjJlYjMyZDgyNjMyZDMwODcgcHkzaworNzE1NjAgZmJjMzdmYmQ5NDE1ZmY1ZDQ0ZTcyYzVmMTFmNThjMTRkOGVkNTQxMyBsZWdhY3ktdHJ1bmsKKzcxNTYyIDBlNDY5ZGE2N2Q2M2E1ZjQ4YjVmZTFmNGMwYzk2YTY1NGMxZmU2YWUgcmVsZWFzZTI2LW1haW50Cis3MTU2MyA5OTBmMjU3OWVhZmVjOTUwNWViMDMzYWIzMWI5ZjhiMzQzMTJjZTM4IGxlZ2FjeS10cnVuaworNzE1NjQgMWRjNTNlMGExNDdhNzA0MzZiZDk2MzZmNjFhY2U4ZTg2NGM2MjhmZCBsZWdhY3ktdHJ1bmsKKzcxNTY1IDUzMDk4ZjI3MGJiZGEwM2Y3MmViYTA4ZTY1NjdlZTNmNTE3NzlmNmYgcHkzaworNzE1NjYgOTNkMmJlZmNhMGE1NGZlZTc2YTk5MDc3MzUxNjkwYWU3ZDE4NTdjZSByZWxlYXNlMjYtbWFpbnQKKzcxNTY3IGFhYzcwYTNiYTI1MGYzYTQ2YTJjOTEyZDkwOGNmZjljYzRlM2VjNjQgcmVsZWFzZTMwLW1haW50Cis3MTU2OCA3NGE0YTI3ZWEyOTFjYjFmZTY5Y2VhZWEwMDYzYjZiNzMwNGFlZmY3IHB5M2sKKzcxNTY5IDhhMTczMDU3ZDkwMzFjNTJmOGUxNmQ4MjU1Zjc4YjYyNTJjZjdhOGIgbGVnYWN5LXRydW5rCis3MTU3MCAzYmE2NWVlNDFmZTdlYThkZmRkMzkzODUzY2Q5MzkyNDk4MWMyNzIwIHJlbGVhc2UyNi1tYWludAorNzE1NzEgOGVlZTk0Yzc0ZTljOTg3YzkyZTI3OGMwZjJiMGVlZGFmNmUwYTRlOSBweTNrCis3MTU3MiA1NmFjM2Q1MDk1MmM4NzdkMDFhMDVmMzc0NDFjYWZjZjk1MjA5YjgwIGxlZ2FjeS10cnVuaworNzE1NzMgNzc0ZjdiY2FkMjJjNjlmNjdkMzFlNTMwNTE5NTMzMTExOWIxYTI5ZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTc1IDlmZDY2YTIxYWJkMTk2N2QzZjA4NDE0ZDE5OWE2ODVjOWFhMDQwNGQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU3NiAyOGVhNTRhNmJiNjQ2MjU5ZWE2M2RmYWNlMzVmOTEyMWVjZGVmODU4IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NzcgYzY2ZDRlMzA2ZmI2ODUyMTI0Mjk3MTUyYTJjZGE3ZTMzZmJiMDRmMiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTc4IGE0Y2M0NmNhYjZhNzQzMTJiYWNhNzIwOGQ3ZjQ4ZGNiNjU0OTg1MjYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU3OSBjOGZiMzk4ZWNhMjM3MzM2NDdkZGZjZTQwZTZhZjQ4ODRhYzJiYzhiIGxlZ2FjeS10cnVuaworNzE1ODAgNTdiOGRjNGE4ODg4ZmY5MTMzNmEzMzc2YWU5YWRjYzkzYTE5NWM4ZCBweTNrCis3MTU4MSBjY2YwZTY0MDk1MzZkOGMyYzg2YjZkMDUxMDgzMzFjNTA2OTJhOTdjIHB5M2sKKzcxNTgyIDU4Yjc0OTY3YTU0MjVjYjcxZDExZTQ2NjIxOGQxYjQxMGQ5YmM4NjggcmVsZWFzZTMwLW1haW50Cis3MTU4MyBjOTdlNDVlOTA1OTllNjVhODVlMDhmYjM0ODQ5OWQ4NDQ4MzYyMzgwIHJlbGVhc2UzMC1tYWludAorNzE1ODQgMTc3ZTEwNzMwNTJjODU5YmVlMTdlZDI1ZDQ0NTYzMDcwNzExOTgzOSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTg1IDQ3MDM5NjVkYTJjZWE5ZmY4NDNjMjBmMTc1MWUzM2RjN2ZiYzRhZGUgbGVnYWN5LXRydW5rCis3MTU4NiBlMDlhNjcxYTU5MGI3YmE1ZTI3NjQ2NDA3OWYyYmZiYTNmNDE5YzQ2IHJlbGVhc2UyNi1tYWludAorNzE1ODcgZTAzYmE1ZjZmNDk0MDYwM2UwNzU5YWYzNmZlMTJkMTk4YTRmMzM1MiBweTNrCis3MTU4OCA4NWJjMjUzN2U4M2UzZDk2MjQ1Zjk2ZGJlNmJkNzFhN2Q3N2QzZTQzIHJlbGVhc2UzMC1tYWludAorNzE1ODkgN2JhYTY4ZDY2YzhmYzc5OTg0MzM1MGZkMDA4NGI1MzNlZWQzNjQwMCBsZWdhY3ktdHJ1bmsKKzcxNTkwIDcxZjQ4YWRhZDg5MjNlN2Q5ZTc5MWQ2YjM2ZGYxYzM1ZDZiMzdlM2UgcHkzaworNzE1OTEgNjA1MTM4MDg1NzdmMzIzOTRmMjk3ZThjYzJlYTNjN2NjNmQzNTkwYSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTk1IDA5Njc2N2IxODQ1MDE4NjU4ZjRhM2ZkZDNlZjM0NjI2NTc3NTIzOTEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU5NiBlN2RiZmQwMjNmZjUyMWVlZjkzY2QzM2U2MTM0ZGI2OWYwNjM2MTQ2IHJlbGVhc2UzMC1tYWludAorNzE1OTcgNzk0NTI1ZWQ2NGZkNDIzYmM1Y2ExMzFlNzBiYTE0Y2E5MTBhYmE4NSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTk4IGRhZDNkMmI5YTg3NTNmNDVmMTk2YjcwMDY0NGNmOWVmYzI2YmNkOGUgcHkzaworNzE1OTkgYzE3YzViYTliYjZjYzdiZjc2YTI1MzM0MGNkYWVkZmRhNGRiMDMzYSBweTNrCis3MTYwMCA0ZmViYTA5YTgyNmJhOTllNWI0ODI3MDdiM2Q5NjQzZWJhMzQxNTZmIHJlbGVhc2UyNi1tYWludAorNzE2MDEgNjk4ZmEwMjRlN2QyMzlmM2FkYjdhMDNmNzdlMzU3ODdlNmYwNDk5MyByZWxlYXNlMjYtbWFpbnQKKzcxNjAyIDZkOTVkOTc5M2ZjZjUwMDAyMDczOTQ1ZTRhZWIwZDNlZjE1MGZhNWUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYwMyAyZmQwODgzMGE5M2YxMzI4MTkwNTA1ZGQ4YzE5NjczNTMyZDUwYjdhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MDQgNTQyODNiNGExNjU3ZmNmYjZmZDQ3YWQ0M2VkNzNkMDVmZDNkN2RiOSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjA1IGFkM2FjY2RlMGVlN2E3YmM1ZTA4OTI3N2RkZTk3MThkODExZTY4NTQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYwNiAwYjdlNDE0MTgzNDMzMjY2YmU3ZTY5YmQzNjQ3MjlmNDUzMmFmOGFmIHB5M2sKKzcxNjA3IGZkN2YzNmVhZDBjODE3MGJmZWE2M2Q5ZjU3MDFlZmJjMWZmMmVkMTAgbGVnYWN5LXRydW5rCis3MTYwOCA5ZGY1ZGRjMTk4YTgwMGJlYTI0YTIwNmE5NmY3NDFlYTA0ZDIwMDZlIHB5M2sKKzcxNjExIDE2NzA0YjE1ZGYzZWJlN2Q1M2Q1ZGEwNjJlZDFiNDNlZTAwMjFhMDEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYxMiBjMjQzYjEwYWI3MzA1NTI1ZTUwZjg1MzFhMmM5YThkMWZiMWFmYTkyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MTMgMjk3MjliOTA4YTgyMGRjYWMzMGY4YzBmMDY0NDI5OTVmYzU1MzBjZiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjE0IGI4ZjQxZGI4ZjZhZGEwOGE1N2UxZjM3NzIyZGY4ODJhY2QwMTNlOTggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYxNSBhYmVmY2EyZmQ5MmUyMWQzYzM3NjVhNmQ3YTJhYThiOTY5OWIxNWVjIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MTYgYTc0ZTEwMTkxODU0ZDIxYTA2MTU4ZjM0NjY0MTRmMzYxYzJkZjIwYiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjE4IDQwODc2MWNhM2Q5NjYzYjZlYWQ1OGQ3N2I5NGY5N2NkMDBkZWI5OTkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYxOSA2MTlkY2FjOGQzODkwOTY1YjQ0NzcyZGNmNzdhN2M1MjNjYjRkMThlIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MjAgMmNhMjA5ZjNhYWEyOTQxNTFiYjM3Y2U3ZmZjODUwNzgwZjVjOTk5NCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjIxIDEyYmRiMzk3MmUyYTdhYTVjZmMyY2FkMzYyN2MyNjhiYjc0NzI2NTIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYyMiBkODgxYjA2ZGNhMzg4YWZiZWVkOTE4MTdmOWExNTU1Mzg4YWY4Y2I0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MjMgNjczNDBmZDZhYzhhM2JhODg4NDFlZjM5ZWVkMDkzNTE0MDc1MzY2MiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjI0IDJkNjExNmVlZjJiMzY3YjNmOTJiODc4ODkxODlkNzhiNmVhOGI3NWYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYyNSBjZTY3ZTc4M2E2ZWQyM2Q4NjM2MmY1OGQ0Njc5NDYzMzM1ZTQ0ZDkzIHJlbGVhc2UyNi1tYWludAorNzE2MjYgMDdkMjM5ZWVhYTYyZWY5MWI1OTRiYTU0Y2E5YWY0Zjc5MGM4NWNlMyBweTNrCis3MTYyNyA1YjEwOGViYmZjMDgzZTdmZDMxZjczMTYzNTk0Mjc4MTlkOGQ4YmQ5IGxlZ2FjeS10cnVuaworNzE2MjggNDQxOWUwNjIxOWNhYjg5MmNkNTY5MTAzNDNjMGYyZTY5MjQwYzM1NCBweTNrCis3MTYyOSBkZjI2MzhiOWJlZTJlZGMwZjYzNmY0ZTMxZTA1MzY5MDAxOTI0MzRhIHJlbGVhc2UzMC1tYWludAorNzE2MzAgNmJjZGMxMzFmNTNjYmUzMTA4NzYxMDhmOTk4NmM1NjU0ZDkxOGUwYSByZWxlYXNlMjYtbWFpbnQKKzcxNjMxIDQ2MjgyMTdiMDEzYzQwNGZmZjBmNmZiMjRkZWJiYzAxZDk2ZWVjNDIgbGVnYWN5LXRydW5rCis3MTYzMiA3YTY5ZmZjNGY0YWUzNjZjNWUyNTMwNjY5YWRlZjYyZjM1N2E4MjJkIHJlbGVhc2UyNi1tYWludAorNzE2MzMgMjBjZjdmOGE1NDA1MmZhMDJhMmM3ZWE5YmNkYmUxMDQxYTIyNzEzZCBweTNrCis3MTYzNCBmMzI1ZWRmZTBjM2FjYmMwYmI5ZmQzNDBhYTUwMGMwYmQxYjA3ZmZiIHJlbGVhc2UzMC1tYWludAorNzE2MzUgYzU0Yjc4NGE1NmQ1NWFkZGI5NGVjMmRmZjUwMmQ1NzE5NGEyMTFlNCByZWxlYXNlMjYtbWFpbnQKKzcxNjM2IDVmZjkwMzMyZjkxMGUzYjdkNmIyODA2OTYxMDgyMGU3YjE3MTRjN2UgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYzNyBlZWJlNWY3ZGFmMWU3OGIwNDlmMzZhY2FjNzBlNTIzMDQzMjZjZWIxIHJlbGVhc2UyNi1tYWludAorNzE2MzggNDNlZjc0YmZjNTY5NjE5YTkyZTgxYzAwZTkxYTNkYmFiNDU3ZjEyZCBweTNrCis3MTYzOSBhYzkzYzNkOGUxOTIwNWI4N2Q4Yzc3YTY4NmUyMjQ2NzkwZGFhZmRjIHJlbGVhc2UyNi1tYWludAorNzE2NDAgNDhiNWZhZDljZTFiMjg0YmE3NWYyZTFkNjViODBkYzczMDY0ZmUyMyBsZWdhY3ktdHJ1bmsKKzcxNjQxIDc3ZjkwOWFjM2UxMDIyOTY4ZDYwNTFhZGZhNzRhM2Q4YWQzOTAyZjQgbGVnYWN5LXRydW5rCis3MTY0MiBkM2YwMjA0MDBmZjI3ZWZhMzNhZWM2ODJhOTk3NmY3ZGQwNTdhYjI1IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2NDMgYzUyNGJmZWU3MDNhZTUyYzhhNzQzMjA1ZTJiNjc0ZmRlNjI3ZGMyNSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjQ0IDNhMTFhMmFkOGY3YjgwOGU2MGM4NjhhM2M2ZDZiYjJlMmJlNWY0NGMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY0NSBhNjc5MGEzYjgwYzNhMjQwYjNjYTljYWUzMmRiYmE1MDZlZGQxZTRkIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2NDYgY2U0ZjdmNDg5YmQzNjFhYzg5NjY0ZTlmNTk5NzFhOGI2N2M0YWRlMiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjQ3IDQ1MDBhZGMzMWJlM2I4YWVjMDVkM2ExMDUwYzFjMTkxNzZlMTRlYjYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY0OCBlZGViYzg5M2IwMmNlMGZiMjcxNDNiMTAxZGI0YzFlNGZmZDdlNzgzIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2NDkgZGI3MzA0YmZiZjdkYzNjZjcwNjJkNjVkMjI2NWYyOTkxOTliMWVkNyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjUwIGEyOGFmNTVjNmU1OGYwMmE4ZGQxZGZkZmM3MzE2MmVhZmI1M2NhY2EgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY1MSA1ZDQ3MjljNDcwMzM1OGQ0ZmRhNzY4MWI0NDIyZmYyMTk4YjQ4MmJmIGxlZ2FjeS10cnVuaworNzE2NTIgNzNiYjQ5NDUxOGRkNmQzOTA1YzgzNTY4YmExYjliZjNmYTg3NzE5NCBweTNrCis3MTY1MyAxZjVmOTkyODAxZjlmNjljMmFmOTA2YTljMmI5MmJhM2Y2NmMxNzU0IGxlZ2FjeS10cnVuaworNzE2NTQgOGY2NTM1NjcyOTFmMGJiYmEzZmIzN2UyNGE0ZGZlMGFjYzljYmU5NyByZWxlYXNlMzAtbWFpbnQKKzcxNjU1IGYwYTE2ZTFkZWVhMTNkODhiYmFlMThhZmY0ODM3Y2MxY2U3Y2YxZjkgcmVsZWFzZTI2LW1haW50Cis3MTY1NiA5NzViZTFlYjNlYmYzN2RiNWMxYzBhYTQzZDE5MTBhMjgyNjY0Zjg2IHB5M2sKKzcxNjU3IDczYmZjYjM5ODg4NjJhYjgzYmY1MDdkMTVmNzUyZjg5MjlmYTdkMGUgbGVnYWN5LXRydW5rCis3MTY1OCBjZjE5MGZmMmE3MmM0YzQ3NjJmZjc4MzYwNmIxNzRiODVlOWIwN2QxIHJlbGVhc2UyNi1tYWludAorNzE2NTkgYTYzYjQ2YWRlMmI3YjYxYzdkMDYxNTFjNzM3ZDRlODdjYTFmNDkxYSByZWxlYXNlMzAtbWFpbnQKKzcxNjYwIDkyZjdhNDYwZmY4MjhkZGFiZWU3ODAzMzlkNDE2YWQ5M2M3YTQ0NjcgcmVsZWFzZTI2LW1haW50Cis3MTY2MSBmMDIyMjhkMWY5MDgwYzJiZWY5ZmNkNWE3YmRlNzRlMTQyZDQ0M2FlIHJlbGVhc2UyNi1tYWludAorNzE2NjIgODlkZWI2YmM4MmU0YmY4NTA0YTliYzEzZjllNmQ3NjUxN2JmZjdjMiBsZWdhY3ktdHJ1bmsKKzcxNjYzIDk3YWU3YTcwOWMxZDQxMWE1MTI3NmZjNzhhN2YxOWYyYWU5OTJlNGYgcHkzaworNzE2NjQgODY2YThiZWVjMDY1NTA5ZTE2NmI0YjBjZDYxNGM0ZDAyMzMwNjlhNiByZWxlYXNlMzAtbWFpbnQKKzcxNjY1IGI2NTNlYWIxM2I3MzI4NmU5NzVkYWQ5MmE5YmU3NjhiMWE0M2VhNzUgcHkzaworNzE2NjYgMDdjNmIwODg5NjhiMjA1OWRjMmRjOGQ2ZTgzY2M4YjYzZWRjZjcxZiByZWxlYXNlMzAtbWFpbnQKKzcxNjY3IDA3YzExMTQ2OTVlOTlmMmY1YjFiMWVlNTkyNDY3NjNmMTkyNzQyNGMgcHkzaworNzE2NjggZDg0YWQ5NzNjZGUyNWY2NjVjM2YyNmI2YTY2ZjdjNTUyZDIyZWRmNyBweTNrCis3MTY2OSBjYzU1NjU0MTVhZGE0MTdkY2EzNzcyNDcyYTRjOTYyMDQ5ZjBkZDNlIHB5M2sKKzcxNjcwIDk3M2Y0ZDdhYTg3Y2ZmZGFhNjhhMjhjY2Y2YzExMDZmNzUyM2RmNzMgcHkzaworNzE2NzEgMGNmNzc5OWZhMTkwMmE3YzAyMDE2NWI5NjEyMjYxOWU1YWI4MGE1YSBweTNrCis3MTY3MiAwMGUwNTcxMzZmYzY3N2Q1NDNmZWMwNjk5MTYzNGYyMjhjOWFhYjFmIHB5M2sKKzcxNjczIDBlZjVjZWRkYjFjM2RiYTQxYmQzMmI1NjRkODBjZWYyZWI2MmNmZmYgcHkzaworNzE2NzQgYzYwYzFkMzlhOTUxNjUxYzBiYTBjMmE1MGU0MmVhNjc4ZjVlNWYyOCBsZWdhY3ktdHJ1bmsKKzcxNjc1IDk4YTUwYTQ5ZGM4NjUwYmM5NTdkZjIyMDI4NzkwY2MzMjI3Y2Q3YjkgcmVsZWFzZTI2LW1haW50Cis3MTY3NiAyMTI0OTViMDQxMGMzM2VmZTRlMTAzNjJhNzBhMzY5ZDkxMjlmNmVjIHJlbGVhc2UyNi1tYWludAorNzE2NzcgOWVhYjA1NzNkODQ1NDgxN2I2ZTMyMjYyYWYzZTZhYzEyN2VkNTgxOSBweTNrCis3MTY3OCA4ZTUxZmFlOWJiNzU0MjlkNGQ0MzI1NjJiNTk3ZDJlMzkyYTBjYjBkIHJlbGVhc2UzMC1tYWludAorNzE2NzkgODJhMmVmNTk2M2UwZjA5NWNmY2MzYjY5ODAzODMxZDE4NmE2OGE0MiByZWxlYXNlMzAtbWFpbnQKKzcxNjgwIGRiMjkyZWJhN2VjMWFhYjE2ZjU0YzQ1ZjEwMGY3NDUyYWNmNmFmMmEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY4MSBjNzQyOTIwYzQ1Zjc3MWM0Yjc2YTJjN2UzNDlhOTI2MDQ5ZjQ4M2VlIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2ODIgNjg3NGQ3MDU0NjA0MzI1N2JiY2YxMzI2NTgxNjNhOTI3ZDdlZGFlNCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjgzIDkwOGM2Mzk4MGVlY2UwNmNiM2I2NDMxOWU0OTYxODE0ZWYxZGNlMGIgcmVsZWFzZTMwLW1haW50Cis3MTY4NCBhYjA2YTM4YjU5MGNjNDk3OGQ3ZDEyMzk3MWM0MTU0NjI4MWRkMTlhIHB5M2sKKzcxNjg1IGE3MDliYjVkZmFmNTExNjU1MDBlZWVmNmIxNWJjYzcxMjI1MDgwMTIgcmVsZWFzZTMwLW1haW50Cis3MTY4NyA5ODYyZDUyNzJkODU3YWE3ODQ0MDEyYjI4OGUxZGZkMjlhMGYwMjNmIHB5M2sKKzcxNjg4IDY2ZmRjZmE5NDAwYjAxZWNkZDQzNzNmZDk2N2UzZWQzMDM1OGM0Y2YgcHkzaworNzE2ODkgZmU5OWE1NjJiNzA4NWIyODQzNmI4NTlhYzkxOWI1NGUyMGE0MmQ0MSBweTNrCis3MTY5MCAyNjk1MWU1OTU4OTMxYjhkMjkzMmUwOGU2ZDc1ZTk5ODJiMmFhOTFlIHB5M2sKKzcxNjkxIDhkOGYyZjk4YTc1MmE3NjVkZGIwNWE1N2U0NDM4ZTQ3Y2Q0YWY5NDkgcHkzaworNzE2OTIgMTM5MTZiYjJlZmYwN2NjNDM3ZTdkYzcwNTQwNTEwZjhkOWJlZmNkMCBweTNrCis3MTY5MyAzZTMxOGM0YWY5NjFjM2EwOTY5M2Q3ZDk3N2ZjMzE2NDdjYjkzNDkxIHB5M2sKKzcxNjk0IDI0OWQ1MDBhNzc5YTg3Yzg4YTNjZjc5MmQ3ZGM2NTMwNWI5ODk3NTUgcmVsZWFzZTMwLW1haW50Cis3MTY5NiAwMmNiNDIwZDg2MmU2OWFlMjBkODYwZDMyZmQ2OWEzMjM1NmJhOTgwIGxlZ2FjeS10cnVuaworNzE2OTcgODU4YjlkMDhlMzRiNGVkZWU0YThlMzY5ZjI4MDY2MzBmYzg5YTA1YyBweTNrCis3MTY5OCBjODRjNzU1MjViYjM1YWVmMmYwZGVmMmU4Yjc5ZDBjMDI3NmUwOTBlIHB5M2sKKzcxNjk5IGQ4OTVhNDJkZmM5ODkyZGE2YjA0OGYwY2YyNDhkMjZiOGIzZDIxNmUgcmVsZWFzZTMwLW1haW50Cis3MTcwMCBkNmRhNjQ2MzU0ZDIxZTcxZGQ2NWE0OWUwZmJjZTc2MDhhZDBkZWFiIHJlbGVhc2UzMC1tYWludAorNzE3MDEgZDQzZDY0MjUyZDM2MTFkOTY3YmE3OWM3MDgzYmYwNjQ0Mjk0N2VhZiBweTNrCis3MTcwMiAyZWQwZDdlMWQxNzczNTc4OGI0NDZjYTE5NWU3MThjNTgzZjg2NzRhIHJlbGVhc2UzMC1tYWludAorNzE3MDMgZmUxNTUyNmViZThiZjY4Nzk4NWRlYjMyMGYzYjI5ZjlhY2Q1MGE4MiBweTNrCis3MTcwNCBjNWM4NjgwZWUwYjFjMWZhNGNmZTc0YTVlYTRkMDFlY2UxZjgxNDg2IHB5M2sKKzcxNzA1IGFkNWM3ZWFjY2VhMTEyNTJlZjg0MmU3OTA3NWZkNDg1ZDExNDBmMjUgbGVnYWN5LXRydW5rCis3MTcwNiA4MjA5YjZjMzJlNjEyYmM0NTdkZDYyZmY1NWIxOGIyNjJlNjBiYmFiIHB5M2sKKzcxNzA3IDhhOGRjN2Y4NTQzZTg3Y2Y2NjFmODcwNTgyOGJmZGNiZjYwMjYzMzggcmVsZWFzZTI2LW1haW50Cis3MTcwOCAzNDEyMTU2ZmI4ZWY2YTcxZmM0M2E4MmFmMWMwZTFkNjU2ZWY0MGNiIHJlbGVhc2UzMC1tYWludAorNzE3MDkgNzlhNmM2M2FjNWIwZDIwZWNlOWFiOWVjMDhkOWJjYmY3N2MyZjRhMiByZWxlYXNlMzAtbWFpbnQKKzcxNzEwIDk2ZDgyZmFjZDg5MGU5ZjZkOGU4MjI5NzNhOWUzMzdkY2ZhYzg3NGYgbGVnYWN5LXRydW5rCis3MTcxMSA2YTdmYTA0ZDgxMTFlNDgxM2IzNDc1YjkxNzE0ZThiMGY1YzU4NzcxIHB5M2sKKzcxNzEyIDU2ODg3YTJhOTBhZWY2MzkzMDE1ZmEzMzJjZDgxZDQ5YWRkMzdiMDggcmVsZWFzZTI2LW1haW50Cis3MTcxMyBmYjA4ZjYwYWI1MTExN2M4ZDQ2YjljYjdhOTJiZWMyNDRhNGUyOGE2IHB5M2sKKzcxNzE0IDRmYTQ3Njg2YzBkNzBmZGVjMzAxMjc0MDk0NDg1ODk4MTZlNTJiZGIgcHkzaworNzE3MTUgOTMyMjM2MDNjOTkyMjA2YjhmZDk4MjU3YTI3NTVmMGFmZmQzNWZhOSBsZWdhY3ktdHJ1bmsKKzcxNzE2IDRkOTk4MjA3Y2ZjM2U5Y2MzMjgxZTBhMWVmOTkyZWI0OTk2MmJhMDQgcmVsZWFzZTI2LW1haW50Cis3MTcxNyA3MmE3MDAwYTg2MDk0MmM1MDk2Y2ZhOGU1ZGRkMWYzZDA3YzBjZTA1IHB5M2sKKzcxNzE4IGE0ZjExN2U5MjBmZGE2MGUwZmVjNmY4YjM3MjNkZjY4YjBmZTBhMGYgcHkzaworNzE3MTkgYzRlOWE4NzVjOWE1NGZiNzJjY2I5YTYzMGZlMzdjMTQ1Y2E2NzdlNyBsZWdhY3ktdHJ1bmsKKzcxNzIwIGRkYTE0YWZhMTJiODViMGQ3YTBjNTZkMDljOTQ0ZWUyODNiMmY2MGUgcHkzaworNzE3MjEgOTc1NWQ4ZGQzMzY2YWNjZDI0NjIxZjQ5NDczZDdhMzYxYTBiYmZhNyBsZWdhY3ktdHJ1bmsKKzcxNzIyIDc3OTBiODVlNzAwOWJlN2FkMjFhMTVjZjlmOGU0N2U0ODVmYzdjOGMgbGVnYWN5LXRydW5rCis3MTcyMyAyODY0NWE5NjEwMDQyNDA2YTY1ZTk1OWM5ZjUwMDkxNGVlOGY2ZTc3IHB5M2sKKzcxNzI0IGMyNzdjZjQxOTNkMTFjNzY5OTk0ZmQyZmQ2ODVhY2VlMDhkZDYwZTUgcHkzaworNzE3MjUgM2U4ZGM1OWQ2NGRlNDQ0MDM2NDVjMmVkYzQ0ZDY2ZTc5NjI5NmZmNiBsZWdhY3ktdHJ1bmsKKzcxNzI2IDMyOWNiMDJmMThlNmYyMmU0ZTdlZDUwM2ZjZjg0YzdiYjQ2MDc0MmIgcmVsZWFzZTI2LW1haW50Cis3MTcyNyA2ZWMzZGYzNzVmNWE4MjY2NzYzZjQ3OTYyYTgzMDAxMzMzZDFiNzNlIHB5M2sKKzcxNzI4IGNmMjFlOWQyOTA2MmYxNmE3NTgyZjAxMWE5NzRmMmZlNWJiM2JhMzIgcmVsZWFzZTMwLW1haW50Cis3MTcyOSA3MmZmNDRjMDUyOTViOTU1YzQ2M2NlYTJlMmE0ZTJhNTgzZGNiMzhjIGxlZ2FjeS10cnVuaworNzE3MzAgYTZkMzI0MTM2ZTAxNDViMjk1OGY5YWFjZTIxNTU4NjdiYTJkMTc3ZiByZWxlYXNlMzAtbWFpbnQKKzcxNzMxIGE4MmI1M2RiYzY1NjU1ZGFhZTE1ZDUyYzRkZWI3YzVjOTA2NzgyOTAgcHkzaworNzE3MzIgMWJjZDU1ZGIzNWRlZDYxODlmZWI4YzVhNTg3YjlhOTkwNzlmMWI1ZiByZWxlYXNlMzAtbWFpbnQKKzcxNzMzIGNmNjIyMmNhMGJjYzA2ZDYzYzU1NjlmY2YyMjMxYWUwNDNiZDc3OTQgcHkzaworNzE3MzQgNTg5MTVmYzU3NmFhY2UzZWNhM2YwMzFhZWM4NTk4NDE2MjZmOGYwYSBsZWdhY3ktdHJ1bmsKKzcxNzM1IGFkYzc3YTVkNmE5NjI2ZTY5NDI5MGU3ZjhhMGZlNDA1YTg1ZTcyMTMgcmVsZWFzZTI2LW1haW50Cis3MTczNiBkNzRiOWE4ZTY2ZjYwMzZjMTZiNDRkM2NmMzczNmQ5YTQzYzAyZmI1IHB5M2sKKzcxNzM3IGQ5OTUwM2I2ZjIzOGFlYzI2MjgzOTZlZmFlNWM0OTZhMzM0ZjQzY2YgcHkzaworNzE3MzggNzU1NzcxNmI2YjFjYjk0YmU5NzQ5YjBhYWM3YTRlMGUyMDNlMWI5ZSBsZWdhY3ktdHJ1bmsKKzcxNzM5IDQ4YmY0MmMyZmY3YTgwMzhhYjkwMzRkNGYxZGUzYmQzNWI4YjBiMTcgbGVnYWN5LXRydW5rCis3MTc0MCA3ZDJjODIyMjY5Yzc0Y2Y0NDg0ZTAxYjY2MTE5M2YxNWFhOGE3Y2ZlIGxlZ2FjeS10cnVuaworNzE3NDEgNDFhNzVkZDlkZjc4ZjQ1N2RlYThmZmQ0MjAyMWZhYzc3ZTExMDYwMCBweTNrCis3MTc0MiBiN2I4ZmJkMDEwY2E5YjAyNTA2ZTY1MjE4M2Y2NzhiM2JlMzgzNmU0IHB5M2sKKzcxNzQzIGQ1MGQ0ZjA5Y2RmN2Q3NTJkNzRmMGI4NmZmYTFiMzJhYmQ1NzVmMzIgbGVnYWN5LXRydW5rCis3MTc0NCBiN2M0MTJkMWE1Y2M0NmI4ZTY5MzdlMTdlM2EyZjA1YzE5NDkwYTllIHJlbGVhc2UyNi1tYWludAorNzE3NDUgNjA3MjllZTg0ODIyNTg0NjI3ZWRjZjNlZjhiMWE2NDdjMDAyMmVmMSBweTNrCis3MTc0NiBlMmM3ODVmZjBhNTBmZjA1NWFmMmVkZWQwODFlMjk3NzljNzE2OGQ4IHJlbGVhc2UzMC1tYWludAorNzE3NDcgNDRlZjhhNzNhOGI3YmNjYzI5MjgyMjdjZTIzY2M2NTJkNjJhMzdmZiBweTNrCis3MTc0OCAxNzM3YWExNTEzMTA4Njc4M2Y3ODM0ZWI5ZmIwZWIyZDEwZWE3N2MwIHJlbGVhc2UzMC1tYWludAorNzE3NDkgM2YyOTIwYWE5MTBjYjM5NDMwZTgzZmVlNDYxZTJhZDUzMTM0MGQ2NSByZWxlYXNlMzAtbWFpbnQKKzcxNzUwIDEzODA3NzAzYWZkMGY1ODM0OWUzODIzOGM4MjQyZjA4NGI3Y2QzYWQgbGVnYWN5LXRydW5rCis3MTc1MSAwMzk3NmExMDg3MDA4M2RjOTVjOTc5ZTdjNjE1YWFiZGE0NDYyYjJmIHJlbGVhc2UyNi1tYWludAorNzE3NTIgMGIzYjhlZDM2MjI0NjQwOTVlNWNjNDdlMjI1NTExYzc2ZDM0NWRkNyBweTNrCis3MTc1MyAyYjE3Yzk5Njg5ODFiMjFjZmRmNjEwNGU0NTUyZDE0MGQ1ZjdlNDg4IHJlbGVhc2UzMC1tYWludAorNzE3NTQgNDUyN2MxNTJkYWE5MzljMmVlNWU0YTZiMWU1MDVkNTAwZmNmOTc1YiBweTNrCis3MTc1NSAyMjc5NjdmZTQ0YTQyNmM5NDQ0MjE1NThjOTFiMDdkZjM1ODVkM2U0IHJlbGVhc2UzMC1tYWludAorNzE3NTYgNDJiZjU2ZTM0ODI1OTZiYTUwNzJiMWU1YjY1NmMwODg5NzdiYTZmNiByZWxlYXNlMjYtbWFpbnQKKzcxNzU3IDg1MzNjZmMyNDIwYWRjMTM2NmE5NDA0MjBjMTdmZGRhNzc0NzM2MzEgcHkzaworNzE3NTggMDRmZmU2YjYxNzA5MTA2NzJmMDVmZGEyYzEzZWZkYTVkNjI0YzBlMCBsZWdhY3ktdHJ1bmsKKzcxNzU5IGNkYjYwMTQ0MWQwNDU1MjFkOGVkMGEyMjk2YjcyNzEzZjc5NWFkZGIgbGVnYWN5LXRydW5rCis3MTc2MCBhMmQ0MjMxMDE0MmJlODEzOGVhNjIyZGRhZmYzNGU4MGQyNWY5NWJlIHJlbGVhc2UyNi1tYWludAorNzE3NjEgZTQyMDIwYTUyMjBhZTk5YjRhZmZlMGVlYjU2ZjYzNTU5YzExMGE3YSBweTNrCis3MTc2MiAwNTM3NWMyZTA3NDI0MDA2YTU1ZjE5YzUzZmFhMGRlMGY1YTdiMTg2IHB5M2sKKzcxNzYzIDgwOTFlMDU2NmZlMzIwZjJjNWY4MTM0MTY1YzIwYzU4Y2RjODNiYWIgcmVsZWFzZTMwLW1haW50Cis3MTc2NCAzNzA5M2U5NGFmYzc3OGM5MGI0YmE3NTAzYjhiMGNhN2VmZmNhNmY2IHJlbGVhc2UzMC1tYWludAorNzE3NjUgOTZlZWQ3Mzg3Y2VhMzg5MGViNTliNmM1MTFjZDE3NmQ2NTg3ZTM0ZSByZWxlYXNlMjYtbWFpbnQKKzcxNzY2IDg3ZmI3MjEzMmQ2YmRmYTExNTcxOTY3YWJiNGI3Mjg5ZDM2MDAzZTEgbGVnYWN5LXRydW5rCis3MTc2NyAxMzc4MWIwZjc0NWE2MTg5MGU0ZDA5ZTZiMjRlYTJmOTdiODdkNTdkIHJlbGVhc2UyNi1tYWludAorNzE3NjggYWE1NDRhNTQ3NTNiYThmNjgyMGU3NzIxMzQ4YTY2NmQ3ZDM5MTU4MyBweTNrCis3MTc2OSBiZDE4OGZmMzQyYTRjNjg5MWUyYzBlNzI5N2UyZTNmNDcyMWVkMzgyIHJlbGVhc2UzMC1tYWludAorNzE3NzAgNzNhYTM3NTZjMGIyNmIwMTEzOTI2NTgyNDRiNzRmNWMxMzQxZmU4ZSByZWxlYXNlMjYtbWFpbnQKKzcxNzcxIDQ1NWY0MGQxNzM4ZThjMDY5MjZhOWI3YWU0OTc2MmNhNTAwNWY5M2MgbGVnYWN5LXRydW5rCis3MTc3MiA4ZjI4Y2U3YjhlNjlhMTQxNTE5NWI0YzA1YmVmMzlmNGNmOGQ1ZjA5IGxlZ2FjeS10cnVuaworNzE3NzMgNDEyOTNmYTZmMGRkNDNhNjhmODk4NjU2OWRhYTQ1ZmNkOTNlMTVhZiBweTNrCis3MTc3NCBkMGIxMzM2M2FhMjE0NTZhZTAwYTc3ODBkZTM1YmQ0ZmRkYWExZmE1IHJlbGVhc2UyNi1tYWludAorNzE3NzUgMjdhYzhjODc0MWNkNTkyYjkwZGVmZWI4YTA5NzEwY2U2ZmQ0YTg1NyByZWxlYXNlMzAtbWFpbnQKKzcxNzc2IGNlZTFmYzA3NjM0NDNiNGU4N2JmMWE3M2EzNDhhODJjNzZiZjgzZjYgbGVnYWN5LXRydW5rCis3MTc3NyA5Y2VhZTI4YWIyNzA0MDExYTFlOTBiODM4NjU0NjdjOWJiNjE3NTcxIHJlbGVhc2UyNi1tYWludAorNzE3NzggZGVkNDY3MzUyNTUzNzlhZDhhNDRmYTRjOGNiZmY5ZTNlZjBkMDE5NCBweTNrCis3MTc3OSA5M2M5MjlhMmZhYzdkNzIyOWVmYzJhZTc0N2FkMGI3NTE3MTkyZThiIHB5M2sKKzcxNzgwIGM4YTc1NzEwYWIyNTAxNzMwZGNhMzAzZTdhMjRmNGY4ODMwZGZmNzEgbGVnYWN5LXRydW5rCis3MTc4MSA3MmM5OGI0YmYwYjU2ODE5MmMzN2I1MGY1ZjQ5ZDgyYjc3M2M5NzY2IHB5M2sKKzcxNzgyIDY5NmRkMjI4MTg0MTU2MWVmZjRlYzA3MmQ3YTE3ZmNjZDNjZjZjZDcgcHkzaworNzE3ODMgZWQzZjUxZjJhYmZiYjcyOWNhYzYxMTJiNGFjMDUzYjEwMDZkYWNhYyBweTNrCis3MTc4NCBhNjhlMmRjNWY1MTQ0ZDIyZDg4OWRhYjczYjQwOTYzODU0Zjk2YTlkIHJlbGVhc2UzMC1tYWludAorNzE3ODUgZGU2M2I3ZTg1MDBkYzJmOTA4NTRjZDM1OTMzNDY4MDE1YzgxYjlmMSBsZWdhY3ktdHJ1bmsKKzcxNzg2IGY0NGQ0MmExMWI5YjQzYTNjZDg5MDRjMjk3MmQ5OTFiMDJhOGFmZjcgbGVnYWN5LXRydW5rCis3MTc4NyA3NzMzNmQ4MmFiOTUwYjY4YjllNWMyYThmODU5YzExMDA3NDZhZjIyIGxlZ2FjeS10cnVuaworNzE3ODggYzMwNjgxYzY2YjNmZWYyNjU0YjUyNGRjMjc2NjNmNDI1Mzk4YzgwYSBsZWdhY3ktdHJ1bmsKKzcxNzg5IGMyZTRhN2FkMDVmMmI0NzU5Njg1ZDdiZmZmZjA2ZjQyZTQyZTdhNTYgcmVsZWFzZTI2LW1haW50Cis3MTc5MCA0MTRiYThlZmM4MDQ2YWU0YWVlZTUxNjA2N2JhODc5ODhmNTI0NDIyIHB5M2sKKzcxNzkxIDJiMDU3ZDJiOThlYjA3NGYyYzExZjJjMWUzN2U4NmQ5NTBkNTBjNWEgcmVsZWFzZTMwLW1haW50Cis3MTc5MiBiMGZlYTNhZTNiNmVmNTYyMGQ5NjgzMjQ3OTgwZmM0ZTliMzZjZDRkIHB5M2sKKzcxNzk0IGY5ZjIzZjM2YzM2Y2E4ZjQxZDBlYzVlNzdhOWQ5ZDQ1ZmIxY2E2ZTUgbGVnYWN5LXRydW5rCis3MTc5NSA3OGJmZDQ0ODE3NjMzMWM4YjIzZjNmN2Y5OWZhMDFkMjk1MTJjMjYzIHJlbGVhc2UyNi1tYWludAorNzE3OTYgYzVlMGQ5YmVlYmY5MjMwODUzMDY3MDE1YWM5MTcxNTcyMWM4MTlhOSBsZWdhY3ktdHJ1bmsKKzcxNzk3IDYxOGQyZTNhY2E2MmViZGExZmU4MjZjMzkyNDVjOWY2ZmMxNDg4ZTYgcmVsZWFzZTI2LW1haW50Cis3MTc5OCA2MTE1MThkNjgwZGVjMjRhYmQyYmRmZWQ2YWY0MDQ3MmJiNDI3YWY5IHB5M2sKKzcxNzk5IGU5NTk1Y2I1Yzc4NjBiYWViYTAzYjU1MjBkYmI2ODE5NzA4MTE2NWUgbGVnYWN5LXRydW5rCis3MTgwMCAzMzBkYjk1NGU1OTM0ZTA5YjJiYjY0OTI3NmQ2NTc3ZmE1ZTU2ZDIwIHJlbGVhc2UyNi1tYWludAorNzE4MDEgYjVkZjA5NGQ4OTQxZDJkYTQ4OTZlYzllODA4NmY0YTk5YjYwMzRhOSBweTNrCis3MTgwMiA0NGE4YTUyNWVjZWI4MDY3Zjg0MjExZWMwOGY0ZTczNDg2NTk4ZWFiIGxlZ2FjeS10cnVuaworNzE4MDMgNmY0MmRlNzJjMmRjZTg4Y2ExMGQ2M2E1ODQwNjk2NmJkZDFlY2MyYyByZWxlYXNlMzAtbWFpbnQKKzcxODA0IDUxM2RjNmZhNjFjMGI3MGE2YjVkZjFmYzY1MGFjNWU4NzIzZmFlMjIgcHkzaworNzE4MDUgYzZlOGM2NTcxNTg4NzZmN2YyMTM5OGIyY2I0NTNhNTdkMjUxZGUwNCByZWxlYXNlMzAtbWFpbnQKKzcxODA2IDliZjRiM2ViMDQ0NzI2OTkxMzUzOGU2N2Q0Y2UxMzEwM2ZkNDNkNjggcHkzaworNzE4MDcgMjRkODFmY2IwZTMzMzVmMmUyYTRlMmVhNDJkNTg5NDBlMWQ1MTc2MSByZWxlYXNlMzAtbWFpbnQKKzcxODA4IDg1NTk3ZTU1NjY4Y2QwYzkzOGIyZTZiZjQ5MWEzMTMxNDNlOGM4OTUgbGVnYWN5LXRydW5rCis3MTgwOSAxZjFlY2E2ODE2NzVhMzllNWExMzIyMGJlZjNmYzAzNWMyM2M3MDk0IHJlbGVhc2UyNi1tYWludAorNzE4MTAgMWExMjkxMzg0OTI4OTMyZGY1M2I3MjJkZTA2YTBiMDU0MzIzNmJkMiBweTNrCis3MTgxMiAyZDA5YmNmNzAzOTU1NTg0NWU0NDJhNWM1ODgxNWMzYmJiN2YyZGEzIGxlZ2FjeS10cnVuaworNzE4MTQgMTcwMDU1ZDdiNDk0MmIyM2I2OWJiMmY4MzZhN2U5NmYyOTNmNWVkNiBsZWdhY3ktdHJ1bmsKKzcxODE1IGZmOWVkY2IzNjg3OGVlODYxZTkzY2FkN2JhY2U5ZmY2YWUyY2E1M2UgbGVnYWN5LXRydW5rCis3MTgxNiA2MjkyYmQyNjMyZTJiZGQ3ZDU4ZGVmMDdhZjliN2MyNGUxNTYxOWEwIGxlZ2FjeS10cnVuaworNzE4MTcgNDFiYzMzZWUxNzMwNGZhNmIxZWJiNjNhNDJiMTVjOGM2NTFmN2RlZSBsZWdhY3ktdHJ1bmsKKzcxODE4IDMzMDExNTEzNzQxNDc1Y2RkNzIwNmRkM2I1YmY4OTlkZWMxOTY0NzIgcHkzaworNzE4MTkgZDI5NTI1NGQ4NGI3ZjY1ZmU3ZjYxYTdhN2Q1YmJhNWUxMDdhOWQ1ZiByZWxlYXNlMzAtbWFpbnQKKzcxODIwIDViYmQyZTZkNjEyNjIwZTRmZWVlMzEyMGUxZDA3ZTU5MDVjNjM3MzkgcHkzaworNzE4MjEgYTdjNGEzN2M5ZGYwNzcxNjhkNzNlYWNhZTY4ZGNiMWE4NTBiNTA0MSByZWxlYXNlMzAtbWFpbnQKKzcxODIyIDgyOTViN2IyOTRiZDYyZGJiZWRkM2ZjMWQyZGEzMzM5ZGNmY2UzODkgcHkzaworNzE4MjMgODMwMGIyNzRmZGQzY2NmOGQyMTgxMTU3YzJhODgwNzlhYzE0OWVkOSBweTNrCis3MTgyNCAzMzMxMmI5MTA3NzM0MDFkZDUzNTRiZDljZGU3NjhiNTI3ODIwOGI1IGxlZ2FjeS10cnVuaworNzE4MjUgZmRlMDE1YTJjOGIzZWJlMjQ5NmI0NTZhMWRiZjE5OGNmNWUwNTkwOCByZWxlYXNlMjYtbWFpbnQKKzcxODI2IDMyYjI0NzMwMGZmOWQzMjM5MTkxYzE4YzNlNTQ5MGQ5ZDFiYTQ2ZjcgcHkzaworNzE4MjcgMDc2MWVlMjhiNmVkNjI0MDJhZjBlYmY1NmI1ZjU2NmIzMWI1YTUwZiBsZWdhY3ktdHJ1bmsKKzcxODI4IGQ1NTczMjBkZTg1NmNiYjIxMzk0ZDdlY2E1MTNiYWNlNWYzMjZkZDUgcmVsZWFzZTI2LW1haW50Cis3MTgyOSAwNmRiMWQ5ZDI1NWZmN2M3ZDQ1ZDQ2M2E1YjYzNmYwN2JiOGE2YTIyIHB5M2sKKzcxODMwIDFmYzliNjUwODcyMzIyOTI1MzY0NDAzZDkyYzY0OGYwOTJhZWUwYTYgcHkzaworNzE4MzEgZWM4NDJjYzYxMGU2ZjE0ZjNlMTJhMjVkMmYwZDQ5M2NlYzRmN2UyOCByZWxlYXNlMzAtbWFpbnQKKzcxODMyIDExNDA1OWMyNjc5NGYxYWQ3YzQyZTFjMTU5NjZlOTg1OTdhNDY2ZjggbGVnYWN5LXRydW5rCis3MTgzMyBhMWE2ZjVkMmIzZGNiNWU1MjM5YThlNDRlYTRjYTFiNzM0MmQwNjMyIHJlbGVhc2UyNi1tYWludAorNzE4MzQgNTlhMWZiOTM5NTc3NGNlYjNiNzhhM2YwYWE1ZTU5NjllODM3OTczYiBweTNrCis3MTgzNSA0NmEzMmQ0NDYzYzgzYTZmYmQwMjdlYjU0MzJlYjJjZWJmNzQ0ODU4IHJlbGVhc2UzMC1tYWludAorNzE4MzcgMTMzYzY2MDI3ZjMzZTRjMmY2MzExMzg5NWRjYjg5ZjFkOWYzODBkZCBsZWdhY3ktdHJ1bmsKKzcxODM4IDMyMjI2Nzc2Zjg2NjEzNDY4Mjg5MjI4Y2QwMjAxMmYxMWM1MDExZWIgbGVnYWN5LXRydW5rCis3MTgzOSA1NGI0NDg5ZjFjMjg0ZDYxMjc1NzBjZDdjNmMyNzc3MjkzZDljYmQ0IHB5M2sKKzcxODQwIGZhNGYxOGVkZTI2MGJhNzkyMzlmZmRmY2YzNWRiMDQzOGQ3ZGE4NmEgcmVsZWFzZTI2LW1haW50Cis3MTg0MSBhNjVlM2MwNzI2MGU5ZWIwNzgxZDU1YWRkZDE0ODcwMjhjOWNiMTE5IHJlbGVhc2UzMC1tYWludAorNzE4NDIgMTE2Nzg3ZjliOWZjZGJmODEyMTczOThjMTFhNTRhNTgyNTA2ZTJhNyBsZWdhY3ktdHJ1bmsKKzcxODQzIDYzY2I1YzkxY2UyMTQ4YzVkMDVmY2RhMmE3Mjc2OGFlM2RiODZhOTAgcHkzaworNzE4NDQgZmY3YjRlNTgyYzQ5MDgzZjcxYjQyYjlkNzE0NmRiYTIyNTJjYjAxMSBweTNrCis3MTg0NSBkODgwMmIwNTU0NzQzMDI5ZTE1NDg2NjFhY2NjMzkyZDBhMzcyZGQ5IHJlbGVhc2UzMC1tYWludAorNzE4NDYgNDNlNDZlNGUwMmYwMzYwYjMzZDczZjBhODYwMTkwNGUzOGE1NWFlYiBweTNrCis3MTg0NyBmYmIxZGYyNTQxYzM2YTA5Y2U5YmU1NzdjYWI2MDkzNDJhZDMzNmYwIGxlZ2FjeS10cnVuaworNzE4NDggOTY5MWU3MzQ1OTY0ZGExOWRmNTJmYTg4OTI3NjJmMGZjM2FjYTNkNiBweTNrCis3MTg0OSAwOTY4OTIxMmIzZWIyODE5NGFhODExODY5Yzc4NjAwMGJmMjA0NWZjIHJlbGVhc2UzMC1tYWludAorNzE4NTAgMmVmNTRlOGE0NGRkNDg5OWVkOTFkYTVlZTZkYmUzZDA5NDNlMDk3NSBweTNrCis3MTg1MSAwMGE5Mjc4MTVkY2Q2MmQ0Njk0OGJjNDhjM2ZkYTIzZjVhMGE0MTk4IHJlbGVhc2UyNi1tYWludAorNzE4NTMgZDUxZTRmNjJiYzhjMDQ1NThkMjA4YWY5Y2Q0MzA0NTE5M2UyOGRiYSBsZWdhY3ktdHJ1bmsKKzcxODU0IDAyZjNmODVlMzkzNmI4YzAwMDhlYWRlMzMzNmM3MTBiYzRlNjE2ZWYgcHkzaworNzE4NTUgYzYyY2MyYTU3NjRiNjM0MjJlYjVkMjZiMzQ1ZWY5MTAxOTZlMWQzNCBweTNrCis3MTg1NiBiNWUyYmNiYmZhNzQwMmMyNjk0ODRkZTc4NjdkOTA5YzFkZDlhYzczIHJlbGVhc2UzMC1tYWludAorNzE4NTcgMGY1NWUwOWMxNmI1NjgwNjBhYzFiMmJhMDM2NWNmZTU1ZmZjZWZkMyBweTNrCis3MTg1OCAyOThmMjhhZmYxOGQyMzk0MGI5OWNmYjgwODI2YTIzMWQyNDAxN2RjIHB5M2sKKzcxODU5IGIyZmNiM2YyMjRkZTJmZTNhZjA3YjJjNDdhNTk2YWQwM2JjZWZiMzQgcmVsZWFzZTMwLW1haW50Cis3MTg2MCAzMTg5NTE4OTBhYmI1N2MzOTUzMDQ2MjliZDUxYjIxNTE2MjZiYmZlIGxlZ2FjeS10cnVuaworNzE4NjEgNjQyOTEwYTAxZDdmMzkwMGYwMGQ0YzNkNGMyMmZiM2ZmZmZlNzE0OSByZWxlYXNlMjYtbWFpbnQKKzcxODYyIDJlMzcxOTBmOGVhN2Q0OWNhY2I4OTZhODdkMjc3ZWI3YTdjM2JlOGIgcHkzaworNzE4NjMgZmRiMmJlNDcxYTNmZGJkMDM2OGQwYzAwNjRlMjRkYzM4OTVhYTUwYSByZWxlYXNlMzAtbWFpbnQKKzcxODY5IDVmZDBkYTJhOTc3OGUxNjhmZjVjNzRjYjQ5ZjVlNTdjZWVhOTRjNjcgbGVnYWN5LXRydW5rCis3MTg3MCBhMzRkOTQ1YzA3ZWRiM2VjYmU4ZjdmMDA1MGM4YTRlM2RlNDAzN2JkIHB5M2sKKzcxODcxIDgwZGE1MjQ2NmZlODdkZTViNjMzMzU5NTE1MGM0NTA1OWYzMzhjMmMgcmVsZWFzZTI2LW1haW50Cis3MTg3MiBhNWVjNTdlODVmNjVjMThjYzMwMzY1YmUyMzBmNjQzNTYyMzJhNGExIHJlbGVhc2UzMC1tYWludAorNzE4NzMgOWY5NDEyMTkyNDAyZDlmNTkxNzczZDY4NDdhNWY1OTkwODNkZGMwZCBsZWdhY3ktdHJ1bmsKKzcxODc0IDk1NTZlOTNmMmFiYjQ5OWI2ZjM4MzllZmVmYWYxZWU4NzM4NmNhYTYgbGVnYWN5LXRydW5rCis3MTg3NSA1YTQ2YTgyMjA2ZTdiYmYzOTg0NWFmNTI5ZWUzNWMwZGUxOTY4MGM3IGxlZ2FjeS10cnVuaworNzE4NzYgYjM2NmE0OTZkNDk5ZWIxOTE3NzBiYmVkNmNjZDAxOTM3ODViMGI3YSByZWxlYXNlMjYtbWFpbnQKKzcxODc4IDg4YTc4ODdkN2ZkNGFmOTZjMzg4YjMyMzE3M2FkYzkzOGI5N2E4MDAgbGVnYWN5LXRydW5rCis3MTg3OSBjZTQ3ZGVlMWI1NDQyM2NhY2EyYjg0NTA1OTAwMDAyZmE3Mzk5YWVjIHB5M2sKKzcxODgwIGM1NzEwOGRlZjNlM2JlOTk3YjQ2NGQ1NTA3NGUyYzJiNjRjOGMxMTIgcmVsZWFzZTI2LW1haW50Cis3MTg4MSBkMzUzMzdmNjUwMTU5OTljY2MzMzE5MGIzOWJiNTVmNjQ1NWUxODJlIHB5M2sKKzcxODgyIGFkMGMyNjk3MmIyMjIxNzU5ZDI3YzE1MjNkMzA5ZGRiYjA2OWU2ZmUgbGVnYWN5LXRydW5rCis3MTg4NCBhZDAzYmI1ZDBmN2RiYmM1Y2ZjNTU0ODNhMTA3YjI0N2I1MjZmNmJhIGxlZ2FjeS10cnVuaworNzE4ODUgNmRjOTgwNWNiMGZhOTc3OWFkYTliZjZmZmU1NWFmZTBkMGRmYzA4MyByZWxlYXNlMzAtbWFpbnQKKzcxODg2IDNjYzVmYzMzMzJmNmFiY2NiOTkzMTFiNTE5NzMzNWZlOGU3M2ZkMmYgcHkzaworNzE4ODcgODA2YmM0NjUxYjlkZTM1ZWU2MGZlNjZjNDM0MWJhM2JkMWY2NmJjYiByZWxlYXNlMjYtbWFpbnQKKzcxODg4IGNhZGI2OWUxZGM5YTYyZmNiNDc0YzMxNTZmMzhmYTg3MTQ3NTM5MmEgcmVsZWFzZTMwLW1haW50Cis3MTg4OSAxODM3ZThlMjI5Mjc3NzExMTUzYzRhZTAyZTBhZDRkMzM3YWJiMDgyIHJlbGVhc2UzMC1tYWludAorNzE4OTAgMDVkZTg2NDA3N2JhOWI4M2U4OWNmOTU4NzNlZGU3NTE3NTQ5NjdlMCBsZWdhY3ktdHJ1bmsKKzcxODkxIDU4N2M4ZTM5MTdjNmE4MjVmMjkwOGY1OWY4NTg2NTMwNzY3MmEyYWYgcmVsZWFzZTI2LW1haW50Cis3MTg5MiBkM2ZlNmU5NjQ4NGM5N2NkNGUwMDc0MWEzNzdmMjVjNDJiNmQ1NTZjIHJlbGVhc2UzMC1tYWludAorNzE4OTMgZWFiZTZjZjk3MzRjODMyYjI5NmFmOGQzM2E5NjJlN2RhN2I0NjE2NiBsZWdhY3ktdHJ1bmsKKzcxODk0IGEyZWY0ZGQ1NWNmMjU2MTk0YmY4Y2RmNGNmNTk5YWFlMzQ2MmZkNmYgbGVnYWN5LXRydW5rCis3MTg5NSBmMDhmNzc2MDgyZWNjYjNhN2UzYzEzOGQwZGZhMDFmYzViZmMzNjI3IHJlbGVhc2UyNi1tYWludAorNzE4OTYgZmYyOWU5NjZhYmI2NWE5MjA2MmI4OWUyNjhmNDc1Njg2NDA4MmYwYyBweTNrCis3MTg5NyAyZjhlNTM1ZjlhOWJmYTQ0MWE3MzFiMzhjYTYwNDUzM2M1OTI3MGRhIHJlbGVhc2UzMC1tYWludAorNzE4OTggYmI4NzZhMTMzYmRmM2E3YTlkZDU4YzI3ZjhkNzcyNjAzODgxZmFhNCBsZWdhY3ktdHJ1bmsKKzcxODk5IDY3NmRhYTFlZjIyMzcxMjllMzY4MGUwNDI2MjJiYWZmZTIwZDJjMzEgbGVnYWN5LXRydW5rCis3MTkwMCAzMDVmZmFkZjgzMTViM2I1OGQzMzYwMWE1OGNkM2JhN2QzNmE3ZTRlIGxlZ2FjeS10cnVuaworNzE5MDEgZGRjYzJhNmZkZTNhZTNiOTczNjEzNDRlMjUwYjk5ZTVlOGFmYmUwNCBsZWdhY3ktdHJ1bmsKKzcxOTAyIGM3NTZmMzBiYzQyYTdlNjRjMDRjNTZmODdiNzgwNTFkZTQ3MDllNGQgbGVnYWN5LXRydW5rCis3MTkwMyA4NTI0NmU0ZTE0MjgzZTZlMTlmMzQyYzA1ZDA4YWNlMDgyYmEzMDM3IGxlZ2FjeS10cnVuaworNzE5MDQgMTQ2N2NiYzIyM2U2MDA3OTkyNGU3MjFhY2VkODYzNzlhMmViOTJiMiBsZWdhY3ktdHJ1bmsKKzcxOTA2IDI0ODBlYTc1MDY4ZmEyMWU0ZDExYTNiM2IxZWY5YzZlMTZiMjRkYjYgbGVnYWN5LXRydW5rCis3MTkwNyA3MWI3YjQ5MjE1MTIxZjU4ZDA5MWNlZTZlNTcwZmUwMTUwNWE2NGFlIHB5M2sKKzcxOTA4IDRhZjA2YjJiYzNjYzI1ZWE2ZDNmYmIyZjdhZWJkYjA1YTBiZGQ4YzMgcmVsZWFzZTI2LW1haW50Cis3MTkwOSBjNmJmNTJlMTUzYjRhM2QyM2ExMmU1MTYwOTI2Mjc1MjBmNGQ2YzgxIHJlbGVhc2UyNi1tYWludAorNzE5MTAgODVjYzk1MTJiNjBjNTM3ODE2OWExMzIzZGQ1OTFkOTUxODM1ODQ2MSBsZWdhY3ktdHJ1bmsKKzcxOTExIDdjZDIzYjJlYWE5M2JlZGUyNThlNjRhYmU3N2M4OGYyMjY4MTlmOWEgcmVsZWFzZTI2LW1haW50Cis3MTkxMiAwODNjZWEwZjI3YTJjMjEzYTc0NTEzZTM5ZGMyMWY5ZTM1YWU0OGFmIHB5M2sKKzcxOTEzIDAwNmE0MGI1ZTBjM2I1ZjllZjJlYWY0ZGI5ODE3M2MxNDAxM2IwYTQgcmVsZWFzZTMwLW1haW50Cis3MTkxNCAxNzlmNDU5M2JkM2VkMDgxZmIzZTc3MGMzMzI3YTQxYjQzOGVjYjI1IGxlZ2FjeS10cnVuaworNzE5MTUgM2QwN2M5YjIzOTUxNDJiMDJhNTQyNDc5MTM5MGZjYzQ4MDhkYzJmNSBsZWdhY3ktdHJ1bmsKKzcxOTE2IGY4ODMwNmM4MjY1ZTNkZGMwYjI5OGViYTI1YTU1NDgxNTM3NmRhZGEgbGVnYWN5LXRydW5rCis3MTkxNyA2MmIzMTg1MzU5ZTM2NWEzNzhjZmJkNjlhOGM2N2U4Y2VhZTFhNGQ1IGxlZ2FjeS10cnVuaworNzE5MTggM2I0OWQzMGNhNTQxM2JjMDljNzM4YWE3Y2Y2ODQzMDEzZjZkYzA3NyBsZWdhY3ktdHJ1bmsKKzcxOTE5IDJlMjk3YjFlYzkzNTYwZjEzMjBhY2RkZTk3ZmEyMGI4MzdkYmZiMjEgbGVnYWN5LXRydW5rCis3MTkyMCA2OTRkYWY4Y2RmOTkzOGJmMmJlYThjMGIzNzg3NmQyYWMyMzIxMWJmIGxlZ2FjeS10cnVuaworNzE5MjEgNjI1NWE3MmE0YzFlOWVhYmI5YjBlNGVhMzBiOTc5ZDA1NTRhYWI3NSBsZWdhY3ktdHJ1bmsKKzcxOTIyIDhmYmEyNTg0ZjM4YmVhMjMzNWZkYTA4ZGRmMTQ2MmMyMmUyYmZmYjYgbGVnYWN5LXRydW5rCis3MTkyMyA2MzI4NjI0MmRkOWRiMTQ0NWU0ZjkyMzA1Mjk5YWI0NzAyMWU2NmViIGxlZ2FjeS10cnVuaworNzE5MjQgY2EyZjFlMzRmNTYyZDFiMjkxNmNhNWIwYmFhN2MxYmZhYTU5NGYyNCBweTNrCis3MTkyNSA3YmIxYTRjZDVlZTViODZjNmNmZDJmZGUxNWM5NzdiNmM0YjM4OTkxIGxlZ2FjeS10cnVuaworNzE5MjYgZWRkOGYwZDUyYjM4ZTJlNTBjZDYwMjMwMTlhMWQ1ZDVjNjdmYjZiZSBsZWdhY3ktdHJ1bmsKKzcxOTI3IDQ1NmIyYTA2ZDAxNzAwZjcwNjVkYmExODU1MDQ5ZDhmNmMwYzZlMmEgbGVnYWN5LXRydW5rCis3MTkyOCBjN2VhODI2ZmFkNzczNDdlZTg1MmVlOTRmMzJhNzA4ZWRjYzgyNmY1IGxlZ2FjeS10cnVuaworNzE5MjkgMjVjMjBhNzdmMzczM2Q5NDAwZDkxYjM1YzA3OGQwZjA5ODhiYTM3YSBsZWdhY3ktdHJ1bmsKKzcxOTMwIDBhZDQxNTA5NGEwNTA2MThkODU4Mzc5ZDI2M2VkZDZkMzgzNTc2MWQgcHkzaworNzE5MzEgMTI3OTE4MTI3ODhkZmU5ZWE1YzUzZjRiMDIxODM1MmM0OGEyMzcyYyBsZWdhY3ktdHJ1bmsKKzcxOTMyIGVjYWNhNzE3N2Y2Njk2MWM2OTQxMmU1MGZhOTMwOGFlNmJiNGNlNDIgbGVnYWN5LXRydW5rCis3MTkzMyA0ZTVhZDU2NmJmYmI1YTkzOWIyNGViMzI0MGJjNDAwZGEzMjM5N2Y2IGxlZ2FjeS10cnVuaworNzE5MzQgYTA3YTliNzU5ZjI3YzI1NmZmM2MzNWM1YzNiMDhiYzk0ZjRjZGQzOSBsZWdhY3ktdHJ1bmsKKzcxOTM1IDljOTg2MDUwNzI2NTA0ODNlODI0YmZjNjgwZjM4NTMyNGNjZWZjOTYgcHkzaworNzE5MzYgZjExNDJkZTQzZTdkZWE4ZmRmMzcyZWZiYzBlYjE3OTAzMTc3YWViMyBweTNrCis3MTkzNyA4MWFlYjhiYzY1OWQ1NzBmNjM2MTdkMWI4MGFhMjdlZTI5YWVlMjA4IGxlZ2FjeS10cnVuaworNzE5MzggNjk0N2JjM2RkNDMzMjE2NDJmYzI4YTU1Y2NlNzFkNGY4ZTYzMmM5NiBsZWdhY3ktdHJ1bmsKKzcxOTM5IDMwYjAzZTFkZWE4YmI3MTIwODc4MWMyMGMyYWU0NjFhMWY0NTIyNzQgcmVsZWFzZTI2LW1haW50Cis3MTk0MCAyY2RkYWY4ZDNjM2UwYzk5MzEwN2UzOTQ1NjcwYWI5M2U1NTRmYzAxIHB5M2sKKzcxOTQxIGEzZDQ4YjJlOTU3ZGU5NzFjMDk1NWY5ZWIzMTE4NDI1MjUxZjgwYjEgcmVsZWFzZTMwLW1haW50Cis3MTk0MiBlZjBhYzQyNjk5MzQwYjVkODg3MTViZWY2OTE1NmU0NWYzNDRhYWMxIHJlbGVhc2UzMC1tYWludAorNzE5NDMgOTMzMjk3ZWJhYzdiYWMyMGY5YWE2MmY5YTIzY2JjMDIwYjhiNzA5MyBweTNrCis3MTk0NCA3NTAxMGNhZTA0NzkwMDc2ODgyYWYyNzliOGI0NDVmYjkzYzMzNzgwIHJlbGVhc2UzMC1tYWludAorNzE5NDcgNzJiZDQ1MGQ1MzlmMTU3ZTY3ZWI2ZTFiN2RkZTFlZjYzZTNiNDhhOCBsZWdhY3ktdHJ1bmsKKzcxOTQ4IGM5MmU5M2E1NDI5OGE4MzA0ZjFlY2UxNTRmNGQxNTlhNmFjMmM1Y2EgcmVsZWFzZTI2LW1haW50Cis3MTk0OSA4ZmRjZGYwYjUwODBlYTkyZTVhZWQ5NWQ4M2ZiYTFkMjA5ZGJjM2YyIHB5M2sKKzcxOTUwIDkxMjQzODY1NWY5MzA0MDQ4YmY4Y2I4Y2VkOTMzYWY1ZDIzYzc2Y2EgcmVsZWFzZTMwLW1haW50Cis3MTk1MiBhM2EyNDZkYTE0NGI3ZDM2YmIyYmI3ZWNmY2FhNjQyMDJlODEzMDM4IHB5M2sKKzcxOTUzIDlkYTFjZmNkMmFjZjdmNjdkMjkxMDI5NDY3ZDgxODU1M2UyYjIyODggcmVsZWFzZTMwLW1haW50Cis3MTk1NCAxMzM4MTlhZTgwZmE4YWNlMTgxNTYzYTlhMmZjMTNiNzhjMTJiYWM0IHB5M2sKKzcxOTU1IDFjMmQxMWE3ZWIyM2Y0MTIzNGVmMTQyMzJhNzVkNTBiZWYzNGFiNzIgbGVnYWN5LXRydW5rCis3MTk1NiAxNzI5MTNlMTcwMTllZDI5NjAxNTc4NGZiNjdmZmNkNzg2M2NkNDI3IGxlZ2FjeS10cnVuaworNzE5NTcgNzNiNTAyZjU3NjkwNTljMDk0NWRlMzhlMDIwNDg4MmIyMjhkM2VkOCBsZWdhY3ktdHJ1bmsKKzcxOTU4IDAwNjk0ZTBjMmU2YjJlYjMxY2JmYjE1Y2ViNDU3NDFkMjJlMzRlNTMgbGVnYWN5LXRydW5rCis3MTk1OSA1OWM0MTE0Mzc5YjM0YTdiOWNlY2ZhY2Q2MDg5MzhhYTgyNjdlNzBkIGxlZ2FjeS10cnVuaworNzE5NjAgNjQxMTBjMGFkNTMwNWU3YjcyNWZiOWI3YWYzMDJmOWRhZWRhN2VmNyBsZWdhY3ktdHJ1bmsKKzcxOTYxIGRiMDMwMTZiZjY1MzlmNDZkZDA0NjU0YjY3ZjZlOWQ0YTMxODEzMzAgbGVnYWN5LXRydW5rCis3MTk2MiBhMTVjMjhiZmJiMzhjODZiYmI2N2FmMzNkZTYzZTY1NjU2NDIxYTg3IGxlZ2FjeS10cnVuaworNzE5NjMgNzU5NjMzNzJiNzE0OWQ5NjYxNGFlZjA5NDY2OWZmYTQwY2FjNmNhMSBsZWdhY3ktdHJ1bmsKKzcxOTY0IDU5YTFiMDJkZTkwNjcxMjBmMmQ0NDA0YWI5MTQxNmY5YWFkMTA4ZTcgcmVsZWFzZTI2LW1haW50Cis3MTk2NSA3ODM1YWRhM2NkYTJjNmFiZDZiOGY1MGJlYjVkMTE0ZjAzNTg3ZDM4IHB5M2sKKzcxOTY2IDFhNWQxZDFjOTQ3OGE5NGQzOTg4NzQ4OWQ3YzhjYmUyMWI4YTc1Y2UgcmVsZWFzZTMwLW1haW50Cis3MTk2NyBmNzY1NzIxMDhkZDdhNDUyODA2ZWM1MWJmYjE3N2NlNGNiYzY5M2JiIHB5M2sKKzcxOTY4IGI0NWEzMjM1NWQzNzhjY2M4ODQxNGVmNzYzYmMwZWYxYWZkZWE1OWQgcmVsZWFzZTMwLW1haW50Cis3MTk2OSAwMWMzMzYzYTM1N2Y5ZmY3MTY4YjFkYzYyM2RjYzI3NmQ5YjE0ZTBlIGxlZ2FjeS10cnVuaworNzE5NzAgNDYzM2Y4NTM3YmI3N2M3ZjUxYzRlM2RkNjQ1ZDIxODY3YjJmYmZlZCByZWxlYXNlMjYtbWFpbnQKKzcxOTcxIDM5MTIwY2M3ZTMyMWVlODA4NjA5ZDUxODQyNTdmZmU2ZGQwOGJhMTcgcHkzaworNzE5NzIgZmI0YmIwYTM4NTZlMWIwNDkyMjA2YWQ5MTQwOTkyNDQ4N2QxMmZiYSBsZWdhY3ktdHJ1bmsKKzcxOTczIDM1NWJlYjBiZDAyYmVhMzg3ZGNiMzk3MmEwNzg2ZGVkNTZhNDc1NmEgcmVsZWFzZTI2LW1haW50Cis3MTk3NCA3MjM3NzMwNDI1ZmIzNzNmZDJiZGVhYzU0NzkxYWNmMGNkM2ExMTU1IHB5M2sKKzcxOTc1IDk1MWE2MmI4NmRlOGI5OWNlNDZkZWZiNjc5MDc3MWE0NWNhMTRhMmIgcmVsZWFzZTMwLW1haW50Cis3MTk3NiBiZmI0N2JjMWQwNTExNDQxOGFkN2FkOGE2MDZhZWFiNzhkZjNhOGYxIGxlZ2FjeS10cnVuaworNzE5NzcgZjdlY2NmNzY5YzFhZTJkZjlmNThmMGVlZTI4ODMyYWM2ODNhOTU2MSByZWxlYXNlMjYtbWFpbnQKKzcxOTc4IDc4NWVhMjk5ZmUyMzZkYjYxMzNmNDk4NzM1Y2MzODI0ODhkMmZiZTQgcHkzaworNzE5NzkgMzE2MmViMDljMmMzZGRhN2RlMmUyNDE2ZjAyOWNmMzJmMWM2M2UxNyBweTNrCis3MTk4MCAwMjFjMzlhMzdlZGY3NjE1ZGFjZjRkYTQwMjI0MWEzZTQyYTg1ZGNmIHJlbGVhc2UzMC1tYWludAorNzE5ODEgNTRlZTZmZDE4MWYyY2E3MzM1NTUyM2E1ZmU2NTQ4ZmFmYWM4YzQ1MSBweTNrCis3MTk4MyA5ZjYwZWRiYTVhZWFiZmZiNzAzNWY5MWUyOGUzYWFiMjQyMWI0OGRiIHB5M2sKKzcxOTg0IGFiZGMxNzY0ZDhlNWExYWQwMWM3ZWM4MzJlN2RhODAzNDUyNWJjMGMgbGVnYWN5LXRydW5rCis3MTk4NSAwNjg4ZThiMjQ2MzI2YTA2ODA2MWUyMTYzNWE2ZDk2ZDJmOTBlZDUzIHJlbGVhc2UyNi1tYWludAorNzE5ODYgMGIxNjc0ZjI3YjcwZmEwNGM4NTEzYzY4MmFlNDc0NzZjZDg2OWIxOCBweTNrCis3MTk4NyA1ZDRmYzE2NmEzZDQ2MTQwNjgzMDBiZWExNGE0NGVlNzAyOWIxOGM3IHB5M2sKKzcxOTg4IDQ1NmU1ODQzMDIwMjA2YzdkN2Y1M2E3Njg3MjI1ODNjYzI3NWZiZGQgcmVsZWFzZTMwLW1haW50Cis3MTk4OSBkZTFkMGY3MWUyMDliNTJiMGQyNjUyNGVhOGYyN2I4NDQxOWY0NThkIHB5M2sKKzcxOTkwIGVjYzNlYjE1NjQ4ODhjODRhNmUyNTE0ODY3ZGFlNDU1ZjY0NTYyNDIgcmVsZWFzZTMwLW1haW50Cis3MTk5MSAzODNlMzJhYjYwN2M0YWMxYmUzNzZmOWNjMzAzNGJiNTM4OGEzZTc5IHB5M2sKKzcxOTkyIGUwZDQ1ZDMyZmI4MjQ0MjY4OGY3Mzg5ZjQ2N2Y0MGJhMzRhZjcyYTAgcHkzaworNzE5OTMgMzVkNzNhOTg4MDM5ZmQxMzM2ZWYwNzk2ZWZkZDhiODc3YWRlZWMxMCByZWxlYXNlMzAtbWFpbnQKKzcxOTk0IGNhZjJiOTFlZjA2YTU5Y2Y4NDRhOWRmMjVmYTRlMTBjZDMzY2U2YjYgcHkzaworNzE5OTUgZDJjZmQzZDNiYzU0OGY0Zjk1YWY3OWVkMzEyOTE2ZjkwY2ZmNzQwMSBsZWdhY3ktdHJ1bmsKKzcxOTk2IGM0MmI3ZGQxNTUwNWNlOTgxNjFjOWVkM2RmY2JkZjA1ZDBhOWE4YzggcHkzaworNzE5OTggZDMxYmU4YzljOGEyOWJmOTFjZTc0M2I2MzIxYTUyNDQ3ZDhlMjZmZCBweTNrCis3MTk5OSAxZmNhMWM5MzI2OTYyNTE3M2VmMzk2MjZmY2IxOGM1MmI1OGNmMGE4IHB5M2sKKzcyMDAwIGZiODk5ODMzNTNhZDNjM2NmOGZkYTFhYzIwNGI0YzllZjlmNzQ0ZGUgcHkzaworNzIwMDEgZDA1OTRlN2E0NWQ2MzY5MzcyZDllNWJiOGE1YmIzYTk0YTdhNzNjMCBweTNrCis3MjAwMiA5OGFhNjMxZGFjMmJjZDAxZGM2ZDIyZmZjZTA3ZTEzNmU3YTdjNzViIHB5M2sKKzcyMDAzIDU1M2NhZjZiYWU0N2UxMGFkYTk0NWY1NDg1NzhkY2MwODIyZmVmMDAgcHkzaworNzIwMDQgOTczZDI0ZjQ0YjA3ZjYwODg2MWZhNjU0NTMzNWRlNDQzYTEwNzcyOCBsZWdhY3ktdHJ1bmsKKzcyMDA1IDI5M2FkYTFkYmZkYWRlMjQ1M2RhYWYyMDYxN2JlNzFmNWEwN2I0NmEgcmVsZWFzZTI2LW1haW50Cis3MjAwNiAxNzU0MGExNjQ3OTc5OTU2NTg2MDVkMGUwNDQwMWJkZGViYmNkNjAyIHB5M2sKKzcyMDA3IGQwNTEzNGE0ZjAyY2U1OTI4OGU5NjYxYjQzOGQ3NjZlZTE4YTI3ZDQgbGVnYWN5LXRydW5rCis3MjAwOCBmNTIxNTlmODczMzJiYmJmMjE4ZjFhNGM3ZmIwMWYwNzQ4OWUzMjk0IGxlZ2FjeS10cnVuaworNzIwMDkgNTc4MTI5NDRjOTYxYjc4OTQ0NWE2ZGVmNTJmMzJhODM5Yjc0YmQ0NSBsZWdhY3ktdHJ1bmsKKzcyMDEwIGNjMGRmZjJiZjFjMmU2ZDUzZmM0NmU2MDE2ZmYyMTM0OWQ4MWE1MDggbGVnYWN5LXRydW5rCis3MjAxMSBiZjdmMzQwNzM0MThiZWRhMzZmN2NmNWIxMjYyN2RhYmEzZWVkODNiIHB5M2sKKzcyMDEyIDExYTU0NTJlMzMwNWU2MDc0YzVkZjJiY2MyZmM3MjgzMGViYWM4ZDEgcHkzaworNzIwMTMgOWI0NTFmYTU4NTAzYTUzNDBiOTdhOTQ4MWI1ZWI4MmI1OWUzMWUzMiBweTNrCis3MjAxNCBkMzdhNGM1ZDZkMmI1MzhiMWYxMzQ2ZDY4MThmNzI0YzY1MmMzYWRhIHB5M2sKKzcyMDE1IDM2MmI0YWUyMTI5YTRmMjJiMGMxOWE3Y2JlYjY4ZTRkNzczMjk3YjkgcHkzaworNzIwMTYgODA2OGFiNTE2MzJkNjEzMWU2MzNkZTViZmM0YjZlN2M0MzJiNjliOSBweTNrCis3MjAxNyA3NDMyMTFiNjBjOTQ2N2YxOGE0NGJkMGM5NWJhMTk1NjdmYWQzNzVhIHB5M2sKKzcyMDE4IGNlN2MzNTNhMWU5NmJkYTA4YzBhOTE0MTNhNmYwYjc4ZjYyZGExMTcgcHkzaworNzIwMTkgN2ZhYThhN2Y4NjNlMWNmZGUxYjkwZTcxMTczZmUyN2QzMWJiZmViNSBweTNrCis3MjAyMCA5ODg4OWVmMTU3OTU4ODRmNDJkNjhiNGIwZmEwYjViNGNhN2JiZjQwIHB5M2sKKzcyMDIxIGU0OGY4NjBhNWNhYzIwYjU4ZTk4MThhNGZjOGE1ZjI4YzFiZDkxNWQgcHkzaworNzIwMjIgNmJiZGExODUxNzMyZTE1NTBjZTYyZDcxYTE3MTAyZmZiMTUxODY0OSBweTNrCis3MjAyMyAyMTgwMDA4ZDAyZWVhMmMzYTc0NWYwZWY0MGFjYmE0OTk2MTgyNmNmIHB5M2sKKzcyMDI0IGVhNGUxOTJkOTQxNDdiNDhhNTE3ZjU0NjMwZWFkODUxYTgwMDczOTYgcHkzaworNzIwMjUgNGFiYzRjYTQ0NjFmZGJlZDAxNDExYTljY2ZlNmNmZWNmNzE4N2U3MiBweTNrCis3MjAyNiBkNTgwMTc1OTk3Y2Q1MDljYTgyMDE4ZDljYTFkZDBmODlmZjEwMzU3IHB5M2sKKzcyMDI3IGY5NDNkODI0YzhjMzVkZDc2MmRjM2EzMDkwYjEyZWM2NzMwZmFhNGIgcHkzaworNzIwMjggZjJkNzEwZTQ3OWUyZWRhNzIxZjMxNjg3NGIzMGZmNjA3M2FkODA4OSBweTNrCis3MjAyOSA3MWEyYWFkNWJhZDY1NWZlNGUxNmJiZjk3MzY1MzY3Yzg4NTMxY2ZmIHB5M2sKKzcyMDMwIDI5MzU0YzQ5NTBlNDk0NjgzYzdhODQ3NzgzNTY3MDBhODJmNDJkODMgcHkzaworNzIwMzEgMDFkMGJkOTUwY2NkMTM0NDUzZGUxZDE4YWNmZjljYTY0ODhmNTUyOCBweTNrCis3MjAzMiA0MWZhMWExMDYzNzNhZGIyNWQzODhkODE5ZTViMThiYzhhOTBhMTY4IHB5M2sKKzcyMDMzIGMyNWU1YTk1NTRmNTMwOTA2NmFhZmViYjVlZjQ4ZmUyN2MzZWIzNjIgcHkzaworNzIwMzQgOTc1MDY2NzJhZmUzZmI1MjQyYzU4ODNhODg0NjYxMDZiYjRkYmE5MiBweTNrCis3MjAzNSAyY2UyNmM0Njc5Y2I5NzU4M2IyM2ZlMzJjMmIyOTJlNmVkODYwY2EzIHB5M2sKKzcyMDM2IGM2YzRjMDYzZDg3NDBlZjI1MjAxZmE5M2E4NTIyZTgyM2NlOTkxNDEgbGVnYWN5LXRydW5rCis3MjAzNyA5ZTA5NzgzY2UyMjg4ZGVmYWQxMDJmZDQyMjIyYWNkM2Y4OGQ1Y2ZiIGxlZ2FjeS10cnVuaworNzIwMzggNWQ3NTIwM2M4NzEzOTJjZWZiNmEzM2ZhMDA1MjI2OTE5Y2ExZmY4MyBsZWdhY3ktdHJ1bmsKKzcyMDM5IGI0ZWJiMzAwZTYxMTljMGZiZmM3MWNjNjY3YjFlZGUzODdmNjU4YjAgcHkzaworNzIwNDAgNGJkZDg0N2I1N2MyN2EyNWEyZWRkNjdkZjRkYTY0YzQyZTRiMGRkYSBsZWdhY3ktdHJ1bmsKKzcyMDQxIDFmOTViYTRkMWVjYjE4NTk4NjIxNWMxOGZiZmZkOGNhYzE4ZDVjZTYgcmVsZWFzZTI2LW1haW50Cis3MjA0MiAxYTQ1MWZmNjU4M2M1NDhmOGIwNjY0NzEzNTJlNDQ1MTY2N2I0NWRlIHB5M2sKKzcyMDQzIDc4ZGZiYWY2M2IxN2M5Mzk4YTE0MjJjMjFjMjk4ZDNhODQyNDVlMGMgcmVsZWFzZTMwLW1haW50Cis3MjA0NCA0YjRiNTlmMjc4YmYzMzhjYjI1MzIyNmRkNGJkODBlMmVkNGIyYjcyIHB5M2sKKzcyMDQ1IGIwY2NmMmFjZmExZTY5MDgwODllZmRiOWNiMDYyMTZiMjk1NDdhNWYgbGVnYWN5LXRydW5rCis3MjA0NiA1NDI3OTE2MzM4OWQ0NWY0N2VjNWI5MjdhYTY5ZWM3ODk2M2M0ZDhhIHB5M2sKKzcyMDQ3IDg0NTM3ZGVmNDU1MDUwMTk2MTFkZjkzZDVhNTk3ZThmZmI0YzY3MWIgcmVsZWFzZTMwLW1haW50Cis3MjA0OCA3YzM5NTc0YWQwMzc1NDE2YTJhYWFhYTQyNjRhZTUwZDg0ZTBhZWYwIHJlbGVhc2UyNi1tYWludAorNzIwNDkgNzhmZDE1ZTA1MjU4NDA3MGNhMmNlMmQyZDFiOWUwOTk0MGY1NzlmMSBweTNrCis3MjA1MCBlNTZmZGJhNjFlOTc1ZjExODQ5MzE2ODBiNzhmMjJjYTlkNzE2Y2ZmIHB5M2sKKzcyMDUxIDM4NTIyZWEyYWRkMGE4NzYyNmUzMTdkOWNjMmNkMzY4NGRhNWJiN2EgcmVsZWFzZTMwLW1haW50Cis3MjA1MiAxYzA2MGQ1YzQ3Y2YwYWVkYWM3YzdlNGYyYWE1MGQ3ZGVhNDU4OGE1IGxlZ2FjeS10cnVuaworNzIwNTMgMmIzOTQ1ZDc1NWE3ZmU2MWI3OGY1ZGUyZTA5M2I2MjllN2VkMDUzYyBsZWdhY3ktdHJ1bmsKKzcyMDU0IDAxOTI0NGY0YjBkMGQwZTVkOTMyZjZlNTQwMWIxMWU0ZGM4MTNjNmQgbGVnYWN5LXRydW5rCis3MjA1NSA0MjNmOGY5YjA3YjE0YTg1NDRjNWZmMzMwOWE2ZDI4OWRjZGEyODRhIHB5M2sKKzcyMDU2IGQ5Yjk0MjJiNDA5Yzg5ODQwMWY5ODBmZGM4ZjM0YmM5MThiMWE4ZjggbGVnYWN5LXRydW5rCis3MjA1NyA5N2NmZjU5M2EyNTdlOWQ1YmE1ODFmNTlkZTRhMTZmZDdiMmZhOTM5IHJlbGVhc2UyNi1tYWludAorNzIwNTggNmYxNTg4ZmI3NTk1ZTFiMjBmZTZkNmY1Yzc4NTZlNTQ4MTBiMzg1MiBweTNrCis3MjA1OSBiMGFlOWZmYzc3NzlmZDc1MDNkYzRmYmQ0MjExNWU4YzMwNjkzZjVlIHJlbGVhc2UzMC1tYWludAorNzIwNjAgMzI0NjBiMDRlN2I2ZTBkNTA3NzI5MmE3NjVjZWE1Yjg5NTEzYWQxZCBsZWdhY3ktdHJ1bmsKKzcyMDYyIDdiMjA2ZTJjMDA5MmM0YjJiYjgxZmYzOTg0MTNkNDQ4OTA5YjhmZDMgcHkzaworNzIwNjMgNGFmMmJkYzliMWI3MzU1Nzk1ZjY5NzcyZGE0Y2I4MzBjZmJkZTIyYyByZWxlYXNlMjYtbWFpbnQKKzcyMDY0IGNhYmNlZjdlNmYyNTZjZDE4MjU4YTUxYjU1MDZmMjQ5OWE4NjE5NjggcmVsZWFzZTMwLW1haW50Cis3MjA2NSAxZWM0YmYzZGRkYTZmNWVkMjkzYTliOWJkZGQ5M2Y1NzY5Y2Y0ZWVkIHJlbGVhc2UyNi1tYWludAorNzIwNjYgZGNiYzIyMDNiZGYzNjI3NmIyYzhkMDcxNjk1MjlkZWVmZDcwNzgyMyByZWxlYXNlMjYtbWFpbnQKKzcyMDY3IGQ2NWRiMTY5ZTNhZDcxNTE2ZTA0YThlZWM3YmJmZTNjZTZiYjdmMmYgcmVsZWFzZTI2LW1haW50Cis3MjA2OCAzZjE1YTA2ZDAwNDczYWM5NDYzMmEzOGYxMjQ0ZWI0YmY5ZmI0ZGZkIHJlbGVhc2UyNi1tYWludAorNzIwNjkgYmYwNTIyMmMwNzQwMGUyMWI2MmRlOTEwZWM2YWE4YWRlYjZjZmRlOCByZWxlYXNlMjYtbWFpbnQKKzcyMDcwIGY3YTM5ZTYxOWUwYTFmNjJmODU1MGM1MzA0NDZmMjZiYjU1NjUwMjIgcmVsZWFzZTI2LW1haW50Cis3MjA3MSAwMmQ2ZjNhNjk3N2Y3OGI1ODg1ZTFlMmQ0NDk4MTEwMWMwNzVmZmNkIHJlbGVhc2UyNi1tYWludAorNzIwNzIgZjI0NjcxNTI4OTgwZTdjMzQzMjcwOGUxNTI4MWMyM2I5M2JkZmM3ZSByZWxlYXNlMjYtbWFpbnQKKzcyMDczIDcxNGY5NWVhNmI4ZjZjOGM3OGVlNGI4OTdiZDkwZTIwZTBiNjNmN2IgcmVsZWFzZTI2LW1haW50Cis3MjA3NCAzNmViNTM3YWJiMTc5MzYyZjRhZmUzYjRlMTY4Y2VhYjcwYzU3NzgzIHJlbGVhc2UyNi1tYWludAorNzIwNzUgNTAzZjBmNDFmMzVmOTFhZjQyNTRhMGE0YTg4OThiZGVhMGViZGJmYyByZWxlYXNlMjYtbWFpbnQKKzcyMDc2IGIyOGRkZWJiZDgzNTU3NTk4OWNlNDUzNTMyMWY0MTFiMjAyYzRiYTEgcmVsZWFzZTI2LW1haW50Cis3MjA3NyA2ZjEwZDUyNWUzYjg0YjUzMDJhNDdiNWFhYjc0MDY5NjczYzdiY2I4IHJlbGVhc2UyNi1tYWludAorNzIwNzggMzE2NmRlZDZiYzRhMjZjMmQxOWEwODk0Njg5MTExYzI3NTNhODgzNiByZWxlYXNlMjYtbWFpbnQKKzcyMDc5IDlkYzM0ZWYyMjczNTM4MjdhNDM3YWIxNDRhOWNhZTk5N2FhZTkyZDUgbGVnYWN5LXRydW5rCis3MjA4MCA5MDAwZjk2NmNjYmJiZjAzNTg1ZmJkNGU0MzJiYzljZGIwMDAzMjZiIHJlbGVhc2UyNi1tYWludAorNzIwODEgZTI4NDNiNjQxNzVlY2Q2OTRmMGRlNzhmMWUxOGQyNDNlMWNhZWY4NSBsZWdhY3ktdHJ1bmsKKzcyMDgyIGM4Zjk0MDA3YjFjNDZlMGUxOWUzZTAzYTIzNzVjY2RhMTU2ZmUzNGYgcHkzaworNzIwODMgMjMyZDIyNTBkNzAzNTVkZmQzMDMxZGU1MDhkMThjODdmYjcxOTAyYiByZWxlYXNlMjYtbWFpbnQKKzcyMDg0IDAyNWJhMTJjN2RhNTQxODgwOGYwNGY3ZmY3ZDRjYjc0MzBiMGMzMWQgcmVsZWFzZTMwLW1haW50Cis3MjA4NSA3NDU5MDIzZmY4NjFhZTVmYWNmYTU2MjFjNjkwZDVkNDBhMTgwMWYwIGxlZ2FjeS10cnVuaworNzIwODYgN2ZkYTVhZjJhZjdkMTBjNjZkZDY2NGQ4NjlhNmJhMzJhZjMyZjJkNiBweTNrCis3MjA4NyBhMzhkNmNkOWFhNjM2OWNmZmUzMmYwZjMyYzI2NzdhMWQ1YWE2MTUxIHB5M2sKKzcyMDg5IDE0NjlmYjFhZWE5MjRkZGNmYzhmNmQ3MjliMDQzYTNjY2ZmZjZiYzkgcHkzaworNzIwOTEgM2I0Y2VhNDNmOWU2Mzk5MmMyMWRkOTFmZjhhOTIwMDFiMzYyYTc2YSByZWxlYXNlMzAtbWFpbnQKKzcyMDkzIDgxN2Q4YjI4Y2Q2YjNlMjYzMzY2ZDZmNTJjYzZhYjQ0YTYxOTMyNjMgcmVsZWFzZTI2LW1haW50Cis3MjA5NCA5YzJhYzFlZjNhNmZlNGQ3ZjM3YTMyNTE2YzZmZjJlODBhOWZhMTc1IGxlZ2FjeS10cnVuaworNzIwOTUgYjQwODk0MmZiNDM1Mzk4ZTlhMjFiMjY4MmQxMzM0NzQwYTkwZGQ1MCByZWxlYXNlMjYtbWFpbnQKKzcyMDk2IDY5YmVhMjZlYzg3Yjk5MzdlNTY1ODdmNDUxNmRhYTVkNTExODEwYjEgcHkzaworNzIwOTcgY2VhNjQxZmY0NTM0YzM5MGRiYTQzMjkwMmJjYTNiNGM0NmZjMmQ2ZSByZWxlYXNlMzAtbWFpbnQKKzcyMDk4IDNkZmJhYzc5OWNmNTFjOTFiYTA5ZDYyYTBiODczNzRlNDgxMjFiN2IgcHkzaworNzIwOTkgMDIwNjg4NzdjMTkwYjNkNzc5YWFjNmYzYjRkMDUyMGQ2NjQ1M2UyNSByZWxlYXNlMzAtbWFpbnQKKzcyMTAwIDRlZjdmOTNkNjFhMWE4ZDcwNWY2ZTg4YmI1ZWU1ZGMzY2RhMDcxOTUgbGVnYWN5LXRydW5rCis3MjEwMSA4NjE3ZTgxMDE2YjZiMGMxYzg5ZGM5NDNjYmM3ZjA0NjczODg3NmIxIGxlZ2FjeS10cnVuaworNzIxMDIgNWY4MWM0NWJkZjZkMTAxODA4MDZhNDNiNjFjOTUzODQ2NjU4ZjI1NCBweTNrCis3MjEwMyBiYTYzOGQzYTQ5ZDE1ZjVkZjY5OGE1ZGNmZTRhODExMWFiMTY3MzM2IHJlbGVhc2UyNi1tYWludAorNzIxMDQgZTk1Yzg3OGFjNzlhZTdkNzk5OTYzNTdkNDdlMTdhMDRmZWE4NWNjYSBweTNrCis3MjEwNSA3MzcwMmFiZTFjYjk3MTg0ODNiNTAzM2M0YTM3ZmY1YWYxZDg3ZjE2IHJlbGVhc2UzMC1tYWludAorNzIxMDYgYjg2MzNjNzg5M2ZlZjQwMmVkNDY2OWJlMzU3YzQ4NDMyYjAxM2Q4NSByZWxlYXNlMzAtbWFpbnQKKzcyMTA3IDJlZjJjYjU3NzNmZTJlNGVhZWFkY2RiNDE4YmVkZDg2NTY5OWU1MjAgbGVnYWN5LXRydW5rCis3MjEwOSAzNzU5ODM5YjlmYTU0OGJjZTBkNDAwYmNlYTJlZjkxZmFiODEwMGRlIHB5M2sKKzcyMTEwIDIxODAzMDc1YjQxMTE1NzgwNmQ3NTdmZjQ5ZWQ5MzhjMGQxYjgzMjQgcmVsZWFzZTMwLW1haW50Cis3MjExMSBhZTdmODJiYmYxNmM4ZTZkZjNhZDMwMzJmODA0N2ViZDE4ZGJhNTA2IGxlZ2FjeS10cnVuaworNzIxMTQgYTM4MTRkYzk5YjgwZDFjMjNkOWNkZWM4Y2Q1ZjA5N2M2MWYzODQ4OSBsZWdhY3ktdHJ1bmsKKzcyMTE1IDNkNmJjNDI2NDZiNTFlMGMyZjNiZDMyMjAwOGYwNjgwNTVjYzI0ZTcgbGVnYWN5LXRydW5rCis3MjExNiBjODU1ZGY3YzZiYjU5MTA1MGJjOGEwMjMxODNlNTc1YTUzNWFkNDU5IHJlbGVhc2UyNi1tYWludAorNzIxMTcgY2NmNzg1M2IwNzkzMjQ0YmZmYzU0MmY4ZDRlYTI3NjZjMzUzMmNjMyBsZWdhY3ktdHJ1bmsKKzcyMTE4IDY0N2EwNDBkZjRkMTFjZDQ3MTk5OTkwZDNhMmIyYzJhMzFjZjZkNmYgcHkzaworNzIxMTkgYTNmY2NjZWU4OTU3YTBlNmExYTRkNTdiYmFiMzc3NGM1MzkxMzI3ZCBsZWdhY3ktdHJ1bmsKKzcyMTIwIDQyZWY3NmY1NDRmYmYyMWI2ZTYzNDAzMDU5ZTYzMjAwNTQzZjNkZjkgcmVsZWFzZTI2LW1haW50Cis3MjEyMSBmZTA2MjE4NzYyNGNiZTczYzMxNzdkNmQwMzFkNjgyN2UwMGZlMjk4IHB5M2sKKzcyMTIyIDc2MTdmYTcxNjRkZTZkYzcxNDBhYjllOWFkOGIwYzE4NmMxNjMxYjAgcmVsZWFzZTMwLW1haW50Cis3MjEyMyBjY2ViYmFkNWY4ZGZmZTlmZDhkYmYxYzY5NTllMjI4YWM2YWZjYzMxIHB5M2sKKzcyMTI0IDkzZmU2MTFjYmQzYWExMmYxZmRmZTBlMjEzYzUyNTMyODJjZjUwNDEgcmVsZWFzZTMwLW1haW50Cis3MjEyNSBiMzljYjI5MjE5NDU3M2QxYmI0MGEzOGYxY2ZmNjcyZjFkNGY4MTU2IHB5M2sKKzcyMTI2IDQ3NjIzOTRmYzI2YzUyYzE5YjkzMDBmODA0ODhkMjM2YjE1ZWZlYWEgbGVnYWN5LXRydW5rCis3MjEyNyA1ZDk3NzFkN2NjNDZjN2YyOGI0NjBjMTZjZWQwMWVjNDgyZGJkN2IxIGxlZ2FjeS10cnVuaworNzIxMjggOGE4NTlhYzdlNWI4MWUxOWJlY2NhZTA2ZGQ0ZmM5NWYzNDU1OWQyMiByZWxlYXNlMjYtbWFpbnQKKzcyMTI5IGUyNzQ0OWRlNjFkYjY0OGM1NDc3MGE2Yzg4MGMwMzI2NGFjMGFjNzIgcHkzaworNzIxMzAgZTg5NDQzM2M2NDY0MGYxOTc4N2MwNmRjYTVhN2E5NjE2NDAxZDIyZCBweTNrCis3MjEzMSAyN2M2YjYzZDFkYjM1NWY2ODc3MTc1ZDNkYzE3NmM5MGE3ZGY0MDFmIGxlZ2FjeS10cnVuaworNzIxMzIgNDExMzc0YzVhYTQyMjc4ZDMwZjE2YTA3MjExYmFkYWViNWY1ZjIyNSBsZWdhY3ktdHJ1bmsKKzcyMTMzIDk0Y2RmZDA3ZDRmNDhkNzI4NTI0OGM3YzAzYmUwZTQ4ZDVmNGJhNzMgbGVnYWN5LXRydW5rCis3MjEzNCA3OWRjOGQ1ODhlYjMwNjZjMjk4YmY0NzllOTA3YTg1N2FhZWM1OTY2IGxlZ2FjeS10cnVuaworNzIxMzUgZDY4MmM5MzQ2ODQ4MDg4MzI4MjU4NDI0NjM2NDRjMmM5MmI2ZjBhMiBsZWdhY3ktdHJ1bmsKKzcyMTM2IDBmMmIzMzU2NjhlZWJjOGZkYTlhM2IxMjA4NjBiYTAzMTU4ZTg4MzIgcHkzaworNzIxMzcgMzRlN2MxYjE0NDk1MDFhMTgzZTFkOGIxYTE4ZGRlODViYjk4Zjg1OSBsZWdhY3ktdHJ1bmsKKzcyMTM4IGExZWZhZjAxNTEwMDE3NDcwYmZjZGFlYTgxNDFjYzE0Y2VmNThmYmEgcmVsZWFzZTI2LW1haW50Cis3MjEzOSA0MGQzNDMxZGIyNDA4NTVjNDNmYjVhYmRhOGUxZjI4Nzc2YjExYmI0IHB5M2sKKzcyMTQwIDJjZGUwZDAwM2ZmYzAzZTgwMTBhMWE2ZGExZmVmZDcxNDBjZmQ4ZGUgcHkzaworNzIxNDEgZDY2ODhlZDA0MGNmMzZiNGNjMjE2ZjY0YzM1ODE3NzVhY2JjNjg4YSByZWxlYXNlMzAtbWFpbnQKKzcyMTQ0IGM0YTFjNDg4NDA1NmQ0OWI4ZDgxZWFhZWE4NWRlZjc5ODRkM2FlMmYgcHkzaworNzIxNDkgYWJjODBmOGIwZGZkYzFmZmRkNWM4ZDFmZjAwZDI3NGZkMzc1YWI0MSBsZWdhY3ktdHJ1bmsKKzcyMTUzIGVkOGMxMzk1ZDAzMzBjZGY3NDZhMmI1ZWVmMjYxYzQ3YTViN2MwZjQgcGVwLTAzODMKKzcyMTU1IDI5NjU2YTAzY2NlMmZhNGMxMDRkODA4MjlmMWRjYmRhODRmMDI5NDQgbGVnYWN5LXRydW5rCis3MjE1NiBiYzYwZGUyMzIyMDMxY2VkNWI0Nzg5OTFmN2IyYTA1NzMzZTI3M2UzIHB5M2sKKzcyMTU3IDRiODZlNTNmOTAwNmY2MTcyYTliOWNkMjZkMjQ0NmM3OTM0ODFjZjYgcGVwLTAzODMKKzcyMTU4IGJkYWI3Y2NkYzdiNDg2NDExY2Q0ODQ2OGIyZmVhZWI5YTE5ZjEzODggcGVwLTAzODMKKzcyMTU5IGU3YTllMmZkNzEzZjAyNDE3MGE4NDUxNmQzNmE5NTUyNWNkZDZkNjQgbGVnYWN5LXRydW5rCis3MjE2MCAwOTM1ZTI0YzgxYzA4ZDVkZGI3NjI3MzQwMzMzMmQ5MDYxYjNkMjYwIHB5M2sKKzcyMTYxIGUwOGU4MGU3NjhjMTFmMDk0ZjFiNDA3MDczOTUzNDIxYmY2YTE4NzMgcHkzaworNzIxNjIgYTgwYjNiYjRkMWIwZGIyNjU2ODc2YjFlM2YwMzRjZTExMDM0MjFmMyByZWxlYXNlMzAtbWFpbnQKKzcyMTY0IDU0YzdiYTNkZGZjNjU2ZWYxZGQzOWJlZmE0NzNiYjM0NzgxNjFkZTYgcGVwLTAzODMKKzcyMTY1IDYwZDBmMzczYTg5NDZhMjBhMGQwMjhiODA0ZGJjZTRkNWQyNWJmZjkgcHkzaworNzIxNjYgYWViOTE0MTkzYjQ1YTYwYTFkN2RkNGYxYWEzMTdkMTgyODk0MmU1OSByZWxlYXNlMzAtbWFpbnQKKzcyMTY3IDg1NTQyNzE1YTI0OTBiZDYxYjRlNWQ2MDMxOGM0ZjYxNDQ1ZTQ2YzcgbGVnYWN5LXRydW5rCis3MjE2OCA2MzQ4MGI5MmE1ZTEyNWY4ZDliZjAzMTY3ZDkzYTVhMjg4YzEwNmIyIHJlbGVhc2UyNi1tYWludAorNzIxNzAgOTZjMDRlNmE2ZDg4MmQzNmM1MjA3NTRhMTdhZmQxYmRmODliNGMxNiBwZXAtMDM4MworNzIxNzEgY2M2OWQzZGZmODdhMjIyYWE3NWVhNDQ5ZjRjZGMyZTRiZWQ1Mzg2YSBwZXAtMDM4MworNzIxNzIgNWM1NWI5YzgwODQ2YTRkMWZhMzE0NmVlZDI2ZTkxMmIyNGQyYWQ1MSBweTNrCis3MjE3MyA5NjNmMGY1MTk3MDk1NWVjNzQ0MjMwMWY5YTBjOTljMDc5OTg5MjY3IGxlZ2FjeS10cnVuaworNzIxNzQgOTg2NTFlNGY2NWZlNTlhYTA3NTljZDU5YTA4MDZiNTQ3OTY2OTY1YiByZWxlYXNlMzAtbWFpbnQKKzcyMTc1IGJjMDRjZWJjYTdlNmI0Mjk4M2NlN2Y4ZDAxZTg4NzZkOTJhY2IxMWIgcHkzaworNzIxNzYgODlkNWVmODJjMDA2NzcwY2YzYmY2OGFmMjRjZGQ0NTJmZWYxNzhhYiBweTNrCis3MjE3NyAwMWFlZDQ4MTk2YjAyOGViOTFhOGQ3ODc4ODA1MGU4Y2FhYmEyN2RmIHB5M2sKKzcyMTc4IDQwOTQ0OGQ0NTVlM2U0MjYwZWFmYzljNzExMWM2Y2U1YzFlZTg0NjYgbGVnYWN5LXRydW5rCis3MjE3OSA5NjBlZjAwZDUyMTQxNzc5ZDgyNDlkZmFkYmIzNjdlMmY5OGFjYTlkIHB5M2sKKzcyMTgwIGIxOGJkMWE0OTRjNzFmMDU1OTYyNTQ0MWQ2OWIwNDYzOWU4MjFiYTUgbGVnYWN5LXRydW5rCis3MjE4MSAyMjgwMzY1ZWFhNzJjMTA3NDZkNzQzYmY3MWQwYjg0NjRlMTU2ZTg1IHB5M2sKKzcyMTgyIDk1MDYxZGEwNmNiODQ1Yjc5MDNmNGJiNTk0YzZhZGQ4ZjAwNWZiNDMgcmVsZWFzZTI2LW1haW50Cis3MjE4MyA4OTYzY2Q4NThhZDYxMDZhNjNjNTMwN2ZlZTAzOWVhNDNiMTNkOWQ5IGxlZ2FjeS10cnVuaworNzIxODQgOGZiMTljYTYyZTcwZGZjNWY5Njc5ZWVjN2I3NTNlZDY5MTc5MTlhYiBsZWdhY3ktdHJ1bmsKKzcyMTg1IDEzNTVkYWMyMzhmZWNhZWI4MjczMWMxNmYyNzFhMmEwMzEzMDM2OGUgcHkzaworNzIxODYgMGQ4MTdlOGVkM2ViZjlkZjdhYmFmZmEwOTJhYmFiNTU0MjE0YmY4NyBweTNrCis3MjE4NyA0MmQyOGU1ZGM3Y2IxNGM5NDUwYzJmNjJhMWRiNmI1ZjQxMTA3NzVjIHB5M2sKKzcyMTg4IGViODExNWFiZmY1ZTU1MjE1NGZkZjBmYTEwNjYxYjg1MzUwNTFmY2UgcGVwLTAzODMKKzcyMTg5IDIzYmM0YjM5MWMxMDIyOWI2OTQxOGExNDBjNmY0M2YxODk0MTU2ZjYgbGVnYWN5LXRydW5rCis3MjE5MCAwYzhiZmRkYmZjYTI2NjY3NWYzYmUxY2Q0MzdjMDFjMmJiZWFkZjE5IHJlbGVhc2UyNi1tYWludAorNzIxOTEgOWQ4NDBhNThhMGQ1ZDFiNmFiYzhmZTJjNWE2MjBiODdiM2MzMWZjNiBsZWdhY3ktdHJ1bmsKKzcyMTkyIDUxMWEzN2VmMWE0MTBmZjRkMjVmNzQ4MTk0ZGRiM2JjNjIzZWJlMGQgcHkzaworNzIxOTMgMDUxMDE5ZjBkZDlmZTM5YTVhZDhjMzQxZjhmMTMzNDhhZDE4MTA0NSByZWxlYXNlMzAtbWFpbnQKKzcyMTk0IGY2ODZhY2VkMDJhM2U0ZDQzYzM0OGM2M2FkNmQyNzgzMmNiYzVkZjcgcHkzaworNzIxOTUgZTE5Y2MzZWJiNThhMGJlNjI0NGE0MzdhZDQwODRjY2RmYzI0NjFkNiBweTNrCis3MjE5NiAyMDZjY2Y5YWEwMjVmMDE2NDVmYzFiZjkxZDdhY2I3MmVjNzc3MGM4IHB5M2sKKzcyMTk3IGU2MmJjNTdhNjJlYWJhMGFhYmU4NjQyYzczYThlZmJkMDJkNTk1ZDYgbGVnYWN5LXRydW5rCis3MjE5OCAwMmI2MTUzODlkM2VmNTA2YWNkNTAzOWUwYjc3Mjg2YWVhYjA3OTU3IGxlZ2FjeS10cnVuaworNzIxOTkgZDdiNTFlYmY2ZGU0MjQzNjlmZjVkNTYzNmExNWI0OWNlOTE2NjBhYSBsZWdhY3ktdHJ1bmsKKzcyMjAwIDFiNzFhNTcwZjU0ZWFjZmQ4NjAyYjQxNjk0MWRiNDlkMDE2NzYyNjIgbGVnYWN5LXRydW5rCis3MjIwMSAxYTg0OWVlNWYwOGNjODY0MTY4MjFiOGNiYTE3MjkzMGFlNTg0Yjg4IHB5M2sKKzcyMjAyIDVhYWYyNGVjNDNkYzEwYWZhNGFlNzU2YzU2OTkwNmEwNTdjNWQyMWUgbGVnYWN5LXRydW5rCis3MjIwMyA5MDNlODBmM2U4MTE4ZWYyN2M4MWFjYjRlODk1NmIwNjE0NDg0YTg5IHB5M2sKKzcyMjA0IDExYjFmYzk5MjFiZDBlMDNkMTE0N2Y2ZWU4YmRjNzBiM2UyODQ2MGUgcHkzaworNzIyMDUgZjI3N2E4NDA3MWYxNGVlMjg1N2I0ZmExYTQxZjhmNGUxYWMxMjE5OCByZWxlYXNlMjYtbWFpbnQKKzcyMjA2IDIxYmRhNjExZjBlNDAwZDc1MGU1OWZkODZmNmQzMmEwYmIzNDg4N2EgcmVsZWFzZTMwLW1haW50Cis3MjIwNyBlYzNmYzY0NjMxZDk5ZWVmYTFlZjAxOTRkZWYxOGU4NTQ2OTRjNzQ2IHB5M2sKKzcyMjA4IDUyYTc3ZWYwNjljZGJhM2ExMmZlNzc2M2UzNzk0MDdlMzhlOWRiMzMgcHkzaworNzIyMDkgNjYyMDBhNzZkZTI2NjJiNDcxNTY1YzgzNWY5Njk2MWNlZTM4N2MzMCByZWxlYXNlMzAtbWFpbnQKKzcyMjEwIDliNTVlOWI5OWE0MzZiZGEzNTdkY2M5MjJmOTg1YjRkNDZjNWFjNmYgbGVnYWN5LXRydW5rCis3MjIxMSA1ZmU5MDRmZmM2YjgyM2M0ZjliMjE2YjhhOGYwNzUzN2UzMTE1OTUwIHB5M2sKKzcyMjEyIGJlM2MwN2FkZGU5NWRhNDM1ZWZiZDZiNDEyN2I0OGI0OTkzNjVhNDUgcHkzaworNzIyMTMgZTBjZWRlN2Y1MjFiNDM5ZmU5ODEwODViNmJjMjA4MjAzYzg4MTc4YyBsZWdhY3ktdHJ1bmsKKzcyMjE0IGE4OTMxOTQxNTVhMjI1MjNmYjc0Yzg2OTg0YjI2NWY2YWVjMTZhZDEgcGVwLTAzODMKKzcyMjE1IDRmNjVlZTFmNDg0OGY2OWJmNGU3YzkyNjQ2NGMzZDMxMzEzNDkzODggcGVwLTAzODMKKzcyMjE2IDU4NzA1MDgyZTdjODVjYjc1ZjY0ZDZhZWMxZWE5MmY5OGRkZDQxMGUgcGVwLTAzODMKKzcyMjE3IDUyYTg5ZDcyM2I2YmMxMmQ4MzczZmYxN2YyNWNlNTI5YjFlNjM1MWYgcHkzaworNzIyMTggMGVjYzViOTA2NDc3OTUyMzVkNmRmOWU3NGYzOGE5MDNjZDEzZTIxNSBweTNrCis3MjIxOSA3YmNlMDUyZjBlN2I3MWU0ZWY2M2MyYmQ0OGFkZTc2NjMzMWU3ZjY0IGxlZ2FjeS10cnVuaworNzIyMjAgYzVmMTRkYmVhNDNmYmNjY2ZhYjdjZGI3OTE5OTRkMTIwNDIyMDUxMSBweTNrCis3MjIyMSBiMDZmMTFmM2I2NWIwZDg4NTllZGU4Y2VjYTA0ZmYyNmRjZWZhMDEyIGxlZ2FjeS10cnVuaworNzIyMjIgYmE0NWUxMjY1NzRkYTFkNmJmNjFkNGJlNzEwOWM5YWY0MzkzN2I4YyBweTNrCis3MjIyMyBlNTQxNDFkNjNlMDE4NzRiYTJiODkwMDI1ZDgyMGRhYmUwYjdmMjcxIGxlZ2FjeS10cnVuaworNzIyMjQgNjRkOWE5ZTdmNjhlY2Q0MjBhMjk0YTkyZjlmZmUyNTFhNmRhMTRmZiBweTNrCis3MjIyNSAzMDNiN2VlOGU3ZmVmMmJhZjNlYWMxYmZjNGM4MmIyNDc0NTQxMWVlIGxlZ2FjeS10cnVuaworNzIyMjYgMDAxYWM1OWMxZTY3MmNlM2RhNjRiYzFjODRlM2NhZDM0YmJlMmZjYSBsZWdhY3ktdHJ1bmsKKzcyMjI3IDlmZWYxZjE2NTdjOGE3NTUxNGMzZDI4Y2QzNjFhZjQwNWVkNDFmODYgbGVnYWN5LXRydW5rCis3MjIyOCAzNThhYjFmZmFhODA4NGVhNzczYjFhYTkxYzNhOGQ3Mzg5MGU3ODY5IHB5M2sKKzcyMjI5IGFlZTJiMTBkYmFiOTM4ZWMyYWE1NGQxODA3MWJkYzZhZDA4ZGJlNDYgcHkzaworNzIyMzAgN2ZmZDk2MjVjOTFjZmQ3OTg0MzY1MWQ1YTJiMDk5MzQwZWVhZjM3NSBwZXAtMDM4MworNzIyMzEgMDAwNjNhZGYwNTU4NDU2NThiN2RiMjAxZTQ2YmFlMzIyOWMyYzllMiBwZXAtMDM4MworNzIyMzIgMDcwOWM2ZDM2OWRlNjcwN2NjNjlhODdiNTNkZDM5OWFhYzRmMzk1MSBwZXAtMDM4MworNzIyMzUgNzY0ZWFlNTIwODgwOGY1ZjA0YTMyNmFlMGIwNzYxMDIwYjNiZmVmNCBwZXAtMDM4MworNzIyMzYgOWIxMDdhNzk3ZGY4OWUwODYzZDdkM2Y3N2RkMTlkNjBmNmRlNjUwMyBwZXAtMDM4MworNzIyMzcgZDZiM2I3NGJkYTBlNWFlY2JmM2Y2NDU4ZTQ5NThjMjNhMzJmM2YwOCBsZWdhY3ktdHJ1bmsKKzcyMjM4IDUyNmIwZGMwOTEzODIxY2Q3MDc4MTRkMGU3NjRjOWZlNmYzMGEwMzkgcHkzaworNzIyMzkgZjc4MDE2OTk4MTVjMTI0M2ZmOTllYTgxN2Q2M2VhNDI2ZDVjMDZhYyBweTNrCis3MjI0MCA2ODc3YTFmNGEwOTI3ZmVjNjVlMWJhM2VkOGU2MzE1ODY1Yjg2YjYyIHBlcC0wMzgzCis3MjI0MSBhZTI0ZGU0OGFkYzQxZDExOTZlOGJhMWI0YjI0MmYzMWUyZWFmMjE2IGxlZ2FjeS10cnVuaworNzIyNDIgYmQ2ZDI1N2E5MTMwZjc4NmNjNWM2ZjJmNzJiNWEyNzI4NTJkOTdhNSBweTNrCis3MjI0MyA4N2ZjMTE2MmQ5ZjRiNjk0MDljOWIyYzk1MTQ3NjgzYTM4NmY5YzNhIHBlcC0wMzgzCis3MjI0NCBhYmY1NzRlOWYxZDNkNTlkNzk3NWUxZWY1ZjVmNGI5NDZhZjM0MDAzIHBlcC0wMzgzCis3MjI0NSAzOTQ0NjJlYWI2NWRiMDUyNzRhNmY2NjQ0NWFjODE4Mjg2YWY5YTk5IHJlbGVhc2UzMC1tYWludAorNzIyNDYgYTY3NzgzZDgxMmY2ZTZjZDM3NzRmYjE0YmMxYjFmNmU3MGU0NDdjNiBsZWdhY3ktdHJ1bmsKKzcyMjQ3IDMzMjcwYWQ2YWRlZjgyZjYwNTNiYzNiYzhlODk5ZjU5NWY2NzVmZGEgcGVwLTAzODMKKzcyMjQ4IDEzYTgyYTcxMGYxOWI0Mzk4MDBhOGM5ZTQ5OWY5NDFhN2ZkZjU4YmMgcHkzaworNzIyNDkgZjcwZTkxZjVmYzljZmYyNDhiNmMyZTE2YWJmOWI5NGU0NGY3ZmMxOCByZWxlYXNlMzAtbWFpbnQKKzcyMjUwIDYzZGRjZTlmYWY0YTk4N2ViNGE4Zjg5MjgxZTJkMGU3Zjk1YjcxYzcgbGVnYWN5LXRydW5rCis3MjI1MSA0YTc2ZDZkMjk3Y2ViZTVlM2IwOWExMjlhNWEzOTg3OWYwODRkNzIyIHJlbGVhc2UyNi1tYWludAorNzIyNTIgZmI1MjFmOTk2ZGUxM2JkYTc1MWRkOGE5ZTcxMmM3NmI1YzI2NDE0MiBweTNrCis3MjI1MyAxZjAwYmMxZDExNWEwYmY0MGZhMDJkOWI1MDYwODgzMDA3MzExYTY1IGxlZ2FjeS10cnVuaworNzIyNTQgNWIyOGRlYmExY2Q2YjdhMDEzYjY1ZWFhYThhM2I5ZWQ3M2M3NWU0MSByZWxlYXNlMjYtbWFpbnQKKzcyMjU1IGUyYjU1M2Q3MjA1ZjM5YmViMTA1ZGRmZDg3ZjBkMmQzZjg0YjNjMTQgcHkzaworNzIyNTYgYThiNWE1YjlhNDlhYWQyMTgzOTFiYTJhYzM4YmFhYzFmYTMxNDgwZSByZWxlYXNlMzAtbWFpbnQKKzcyMjU3IDRmODY3ZjE0OTRkNTVlOWMxZjAwOTE4MDM1MDc0ZDdhNTY3YjRjMmEgbGVnYWN5LXRydW5rCis3MjI1OCBjNmY5OWQ0YzgxMjJlMTJjYjRjYjdjODZlNjZlZWY4OTVkNGZiYTY0IHJlbGVhc2UyNi1tYWludAorNzIyNTkgMGI3ZWVmZTdiNmQxN2Q4ZjRjYTJhODFlMWYyZjA5OGRhYWNjN2Q1MSBweTNrCis3MjI2MCAxYzI3ZWNiZWQ4YzQxYTcxMjllYjRhM2E4ODI5NTczOTQ4NTg2ZjdjIGxlZ2FjeS10cnVuaworNzIyNjEgY2U5NDcyMDBiNzY4OGE5Mzg0ZDNmZTljNDcxNTRhMGU3YzI0MDRiOCByZWxlYXNlMzAtbWFpbnQKKzcyMjYyIDE4YTVhZTk2YWU1YzlhM2ZkZTFkZmJmNjgwYjNiNTE5MzMxODIxNzkgcmVsZWFzZTI2LW1haW50Cis3MjI2MyBlNGFmOTcxYjkxODQ1NjA5ODEyZjkxMTYzZjhkNDBiZjA3YTJhYjQ5IGxlZ2FjeS10cnVuaworNzIyNjQgNWFkZTBkZTc0YjVhOTEzYTBhNzE4ZDRiMWIyYjQ1MjZiYjlhZTc1OCByZWxlYXNlMjYtbWFpbnQKKzcyMjY1IGQ3YmJkZTkzNmQ2MjkwNWFkYTcyOTU2YTlkOTZlNzAwYWM0ZjViZjUgcHkzaworNzIyNjYgODM0NmQzYzdjNGUyM2I4OWU4Y2E3ODMyMGI1YzRhYzFiZWFhOGIxYiByZWxlYXNlMzAtbWFpbnQKKzcyMjY3IGU0ZmY0MjczNDkzYmQwNDhiZTBkYzlmNzliODk2MzgzYjhkOGE4NTYgbGVnYWN5LXRydW5rCis3MjI2OCA0Y2Q0MzdkZmFjZTg5ODMyYmU4YTIxMmJlODY1M2NkMTAwZTJjZTViIHB5M2sKKzcyMjY5IDY2Zjc1MDA4YzNhODcyNTAyOTM2ODJkOGViMjJmOWQxZTllOTJlNTUgbGVnYWN5LXRydW5rCis3MjI3MCBkOGQ2N2FhNzU1MjUyMDFkOGM4OWFjOTYwMGZiYTViODQzNTNmNjI4IHB5M2sKKzcyMjcxIGU2ODY4NWNmMzY1MWQ5OTg3NjZjYzQxYTFmZjA2ZWJmNTdhMjE2ZmEgcGVwLTAzODMKKzcyMjcyIGRiMjgzOTBjYTYxNzI2MDY1MWY5NmQ4MzQyYTI3YjBkMDM5YzMyZWIgcGVwLTAzODMKKzcyMjczIGQ2Y2JhZWE5NzU2OThlYmY3OTU4NGU2ZDZhOGI1OWUwYWI1ODE2YWQgbGVnYWN5LXRydW5rCis3MjI3NCAyY2Q5YWVlNmY2MjQ2MDMyODg1ZjU1NDYxMjM3NGI2OWYwMjI2NjhmIHB5M2sKKzcyMjc1IGJjMWQxOTY4MzZhNGZiYThiYzExNmVkZTNlMTBhOTEyNzQ4NjZiZjcgcmVsZWFzZTI2LW1haW50Cis3MjI3NiAzY2I1YjdkNTYzMDk4MWNmMjQ2NzkxYjMxZmQwNWY0ZTY4ZmIwMzA5IHJlbGVhc2UzMC1tYWludAorNzIyNzcgNjkyMzFjZWZkODBkM2ZhZmViMmQ1NGI4NTJmZDIzYjk3YzZhZTY2YSByZWxlYXNlMzAtbWFpbnQKKzcyMjc4IGFkMTJkOGY0MTRjNzM2MWE5ODVlMmYxODA0MDFjZTlmMWViNTQ3NmQgbGVnYWN5LXRydW5rCis3MjI3OSAzMDg4ZDJlYmY3YmU1ZWEzZDEzMGQ4YWY4MTIzNDdkNmU0Mzc2YzViIHJlbGVhc2UyNi1tYWludAorNzIyODAgZmU1NGYzOTQ1OTljMjUzNTg4MTkwZDk2MTg2MTA3M2NjYWI1ZDg2MiBweTNrCis3MjI4MSA3M2FmOTAyMDZjYmUzMjRiOTk2M2FlNTY4ODhjY2RmZGEyOTFiNzgwIHJlbGVhc2UzMC1tYWludAorNzIyODIgNWNiODVlZmY4YzAzNWFlYWEwNDA5ZjNjNTkxMzc3ODJmZTJmYjhkMCBweTNrCis3MjI4MyAxMmQ4ZmQ0OTk3MjJjMmRjZTRiYmIxYjc5NDY5OWMwMWMxNzA3NTE3IGxlZ2FjeS10cnVuaworNzIyODQgNTM4YTdkNTgzMDY0NWQwYTc2MTRiNGYwYzZkNGM3MDlmNjk0ODUzMiBsZWdhY3ktdHJ1bmsKKzcyMjg1IDliOTU5MDAwN2U4MjQ5ODFiNWRhNDhhOTBjNTg4NzI2NWJlZjRiMWQgcHkzaworNzIyODYgMTAwMzgxYzVlNzNhYmI3ZjBjYjg3NjlhYzQyZDcxYTNkMGM4MWFmZiBweTNrCis3MjI4NyA0NzkxMjE2YmZjMWViZGI5ZTg2OTUzYzk3MTU0NzVlYTRjNWYyZDM3IHB5M2sKKzcyMjg4IDc1ZDQxZjQ2MDg1MjEwOTE3YmMzYTRlZjA4OGJiM2EzNjYyYzU0MDkgbGVnYWN5LXRydW5rCis3MjI4OSA4MmZmZGZiYzQyZTU2OTY0OWRjZDRjYTljODcyYmY3MjY1MWI4Y2Q3IHB5M2sKKzcyMjkwIGY3MjI4OTJiNjBhZTNiZWFmZGM3ZjYxMDRhODJlZTRlYjdkYzBiODcgbGVnYWN5LXRydW5rCis3MjI5MSBiZDQ5MWI1YTg4MDg2OThiNjU4NWVmMWYyNzU0MGE3YTYxNmRkYzEzIHB5M2sKKzcyMjkyIDVjY2VjNGIzNjY0NmQxMTdhZmI3YmU2ZTM4OTc1MjgyNjQ1ODIzODMgbGVnYWN5LXRydW5rCis3MjI5MyAzMTBkYWE5OWQ2MDczZDMzZmNmMDdiMTRjZDIxNzcxZTk4YmMzMjcyIHB5M2sKKzcyMjk0IGMyZDEwN2UwNzgzOTc0NTJjZTg2ZTVlMTQwMTRlNDJmODM5ZWFjMzEgcHkzaworNzIyOTUgNTM5OWJlN2EzOWJhMzcxN2JkODAxZDVjNmE0OTc4MmQ1OGM5Nzk1YSBsZWdhY3ktdHJ1bmsKKzcyMjk2IDc1NzQzYWFlZTUwNDBjMGIzYmJkMjE2ZWJmZTg3NzhjMjU4MjQzMzAgcHkzaworNzIyOTcgZDM3NDdiMGEyZjM2MWFhNGQ3MGM0MGY4ZGI4MThiMGFmZTU2YWM2ZSByZWxlYXNlMjYtbWFpbnQKKzcyMjk4IDNiMDlmMzMyZjFmYTNiNDIxYjFmM2UyMTdiYzc4M2UxZTZjNDVhMmMgcHkzaworNzIyOTkgYjMzMTljMDg0ZDI1NzFjMzAzODMxMDE3NWVkMzljYzVjY2U5NzVhYSBsZWdhY3ktdHJ1bmsKKzcyMzAwIGRkOTM4YTJjYzJmMGM3NGE3MDdiZmY1OTNlZmJiYWIzM2MzNWIzYTIgcHkzaworNzIzMDEgNWJlY2M4NjU0ODEyMjA4MmMxYzkxOTNlMmE4NmVmODUwMmZjNTAzYiBweTNrCis3MjMwMiBiYmE3ZWU5ZGFlZTA2NDU4OWM5NzMxNTY4Mzc3YzQxYWRjN2FiZDU2IHJlbGVhc2UyNi1tYWludAorNzIzMDMgNjM5YTc5ZmE2YTIzOGE2NTJjOTQ4ZjE0MDA2NzMyOTA3OTExNzE0YyBsZWdhY3ktdHJ1bmsKKzcyMzA0IGFlYjQwNTBjZDQzMTg1MjYyZmM4OWViN2NjZjY5ZTJhYjk2MWFhOWMgcmVsZWFzZTMwLW1haW50Cis3MjMwNSA0ZmNmYzUzZmNjNzRiZDZjZTk5NWZjZGVjNTM5MDVkMDgxODZjMmVmIHJlbGVhc2UyNi1tYWludAorNzIzMDYgMjQxNmYxNjZkZTRiMDBlMmFiN2IwMGJiZWY2NTExNDk3ZjZlOTM0ZiBsZWdhY3ktdHJ1bmsKKzcyMzA3IGIxZWE1ZjczMTNmZGU1NGQzMWY1Mzg1ZjFlYTY3MWQxMWVmYjk5MDggcHkzaworNzIzMDggMGJmNWJiMmYzYzA4OTg2ZGMwNjBkMGFhNGZiNzA4MzNiMWJlYTk2MSByZWxlYXNlMzAtbWFpbnQKKzcyMzA5IDY2NjgyZmMxNzJlOTBlOThlOGExNDc0YWUxNWYwZjFlZGZlZTc1NWEgcHkzaworNzIzMTAgNzMyMWQ0NTEwYjQxYmFiY2UzZjljMmE0NzQ4ODY4YmQyYmU0ZDQwMiBwZXAtMDM4MworNzIzMTEgNGRkNWE2YTkzZTcwODhjMDNiMmFjMTYwN2RiOWIzNTZiYjk0NTE2NyBwZXAtMDM4MworNzIzMTIgNmUxMGI3MGE0MTEwMzc2MDI5NGQxMzAwYzllYmJlMjgxMDY4NTZkNCBwZXAtMDM4MworNzIzMTMgYWMyMDlmMTMyYjE3YjI4NDAxNGQ0YTEwY2Y5N2JhNzdkZThiN2NiNyBweTNrCis3MjMxNCA0ZTU4MzRiMzIyYzEwYTJjZjAxMGYzZDQ0ZTRiZWQ4NmM0ZTU5MGIzIGxlZ2FjeS10cnVuaworNzIzMTUgMmUwNDRjOWY0YjQwNWY3OTYyODA4YmUwOTMzMTE1NWViY2U3OWUyMCBweTNrCis3MjMxNiBiMDBjZTZmMGZhM2E5Y2ZiOTM3YzZhZGExZGJhNjhlMmI0NmZmMTdhIHB5M2sKKzcyMzE3IDFlODJiZWY2OGY0ZGZlODdkNmVkMjg5MGM3ZTExMmRhNWVjMDVhYTYgcHkzaworNzIzMTggNWRmZDIyOTA2MzQxMWZmNjFjMzcxZDY2YTNjZGI4YmYzZWZmMWI2NCBweTNrCis3MjMxOSBkZDQ4OWY0NzU3YmU4MjY5YmU5NmViYWNhMzZlYjAzMTQ1ZmI3ZTBlIGxlZ2FjeS10cnVuaworNzIzMjAgYWY4Zjg0MzI1Nzk3M2YxOGI5ODgwNDQyMTVlNDc0NmZlZDFmN2RhZiBsZWdhY3ktdHJ1bmsKKzcyMzIxIGIxMmE0NGVlZjQwYjZjNTkyNzA2ZWMzZjViNjYzNzA5MmU3NmM5MzUgcHkzaworNzIzMjIgYzQ5YmMzMzAzMjdjZjI5ZWNlNWExMGRlYWFjMjUyYmZjMTZjNTYxNiBsZWdhY3ktdHJ1bmsKKzcyMzIzIDU4NTc0Mjg4YTViZmVhOWRlYWM2MTA3ZTMzYjI3ZDcyYTY2MmRjY2MgcHkzaworNzIzMjQgNGM2MzY3MDYzOWVjNzBiNWFhNmI2NGU1ZGJiZmJlOWJhZWNmNDNhMyBsZWdhY3ktdHJ1bmsKKzcyMzI1IDU4YWEwYWQ3NzI1M2Q3NzU0YzY4ZTlhOTYxMDBmM2I3N2IxZmVlNWUgcHkzaworNzIzMjYgNTg3OGNhNzg0YTg0OTZlNGQ1ZjRjZDViZmZjMDg4MjhhMDhmODU0YyBsZWdhY3ktdHJ1bmsKKzcyMzI3IDMzYmJkZDNlZWE0M2Q5ZmNlY2U1ZWY0YzdkZjdlMzljZjdlOTA0ZWMgcHkzaworNzIzMjggOWY4NTMyYTBmMWFiY2M0NjFiNjAwMDlmYjE1NTFmZDdkMjgyZWY4MSBsZWdhY3ktdHJ1bmsKKzcyMzI5IGVjNWYwM2QxZTgxOTg5MzEzZjBhYzE3N2MyZmJjYWQxMjQ0ZmI1YjggcHkzaworNzIzMzAgZjZiZmZiOWU4MzRmOTllNjA4MDY2OGQxOWU3MDE1OThlMDQ5MWEyZCBweTNrCis3MjMzMSAxNjdjZDM3OGI1YmQ4YjM3ZTY3NjZiM2RhNWRjMGQ4MjlhYzM4NjNhIHB5M2sKKzcyMzMyIDJjYzExNjkzYTE4MGVkNzQxNzg0MzA5ZGRlYTc2NGE0OTQ0YzllMzUgcmVsZWFzZTMwLW1haW50Cis3MjMzMyBjNjM3NmQzZmE5Njg3ODE3YjJhNDFiZjU2OWVkYzA1NDljZTZiYTkyIHB5M2sKKzcyMzM0IGQxN2NjNzJmZmU4MDc2NzFkNDk2MGQ1MWJhZTA1MjFmY2RhMGM4ZDMgcmVsZWFzZTMwLW1haW50Cis3MjMzNSA5ZjZiOGNlMjAyM2YwYzI0NGZiMWExMjFmZGQ1NzQzZjdhMTBjNGY4IGxlZ2FjeS10cnVuaworNzIzMzYgMjE1YjdiNjZlNjJkZjI4NWUxNWQ5MTdhYjJkZjI5OGM0YmQzNzdkNiBweTNrCis3MjMzNyA0ZjNlZGI2YWY4YzFiYmQzYjM4NTUyNWM2ZDAwY2Q1Mzg0NzVkNGNhIHJlbGVhc2UyNi1tYWludAorNzIzMzggOTc2MDM1MzY2MDY1N2FhYTIxZDJjZDM3Y2M5YjFmMDUwMGExYjY4MiByZWxlYXNlMzAtbWFpbnQKKzcyMzM5IGNhNDUwYjI4MjdlZjM4MDliMzQ5N2ZlYWMxOGMwMmZhZDQ4YmY0M2UgcHkzaworNzIzNDAgZDg2MDFlOGIzYWJlOTFlYmEwN2QzMjVmMTczNDc3NDdjZDI5OWQ5NSBweTNrCis3MjM0MSBhN2M5OWUzNGUyMzllMjE3MmE2N2M4MDc1Mjc3MWZiZDcwYzk2ZmVhIHB5M2sKKzcyMzQyIDhlOGI5NTkwOTE3YWQ5NGM1YjgyYzYzOTU3MzhhMTQ3MDdhMTMyZWYgcmVsZWFzZTMwLW1haW50Cis3MjM0MyA3ZWE3ODcwZGQ5NjZkMjIxNmQ1MTQ0ZDczYmFkNTE1ZGMwM2Y0MDliIGxlZ2FjeS10cnVuaworNzIzNDQgZWEyYTkwMDgyYzgzNzUyODM5MjUxMTBkZDliOWZjZjE0NTYzZmY1MSBsZWdhY3ktdHJ1bmsKKzcyMzQ1IDZkNjRjZDY5ZjM4NDRhNTVlZGI3MzRiM2JhYzViZWUwY2ZhY2NmN2YgcmVsZWFzZTI2LW1haW50Cis3MjM0NiA5ODc0MjFkM2Y4YWU0MGI2ZDkwNWZjY2IyZjc3ZmM1ZmU1NWQ5Njc0IHB5M2sKKzcyMzQ3IGIwMzc1NTY3ZmFlODBhNDZjYWM4YzEyNWZkNTg5NmMzNDIyODdmNDUgcmVsZWFzZTMwLW1haW50Cis3MjM0OCAxZDhmMjRkNDBjMmM2OGZiOWIzZWM0NDFjYjE3NTA0NmM5YzgwMjFhIGxlZ2FjeS10cnVuaworNzIzNDkgNGQ1ZjA2NjU3NWVkNTBkOTAxOTYxYTMzMTNhMzhiMGY5ZDdhYjAwOSByZWxlYXNlMjYtbWFpbnQKKzcyMzUwIGI5NzdhZjE5YzZmMDEzN2ZlNDdhNzU2MWEzYmMyMTFjYWM4ZjhkZTcgcHkzaworNzIzNTEgYmJlMmFhNDMxNjkyMzIzNjA1ZmRlMWFiZTRjMjM0OTc1ZWQzY2NlNyBweTNrCis3MjM1MiA1ODFiNTY0ZDhmYzNiMmZlNjdjY2QzYWUwYzI1NTIyMDQwODFlYzgwIGxlZ2FjeS10cnVuaworNzIzNTMgYTg1ZTY3NTZkZWQyY2ZlN2UyYjE4Y2RkY2Q0OThjOWMxNmQ2ZWU2OCByZWxlYXNlMjYtbWFpbnQKKzcyMzU0IGUwMTc5ZjA4ZDM0ZjIyMDMxNDNlOTQyOWU2ZmJhYzUyYzY2YjY3OGQgcHkzaworNzIzNTUgZDNmZmIzNzAyYzNhZjYzZmE1MGVhMDZmYTUzMjY0MjJhM2VjNmJjZCByZWxlYXNlMzAtbWFpbnQKKzcyMzU3IDhmN2NmNWNiMjFiYjU4M2FiNGU1YWVkYjJmNDIzMDRiMGViNGZjNDIgbGVnYWN5LXRydW5rCis3MjM1OCAwMjZkMzkwZWVjYzE5NmFkMDUxNGNjMTg3MTBmNTg3NTJkMDJlOWI5IHB5M2sKKzcyMzU5IDE1ZDNiZGU3MGQ4N2IwMDBlY2NlOTQ5N2MzNTg5ZDRlY2U3MzdlNDcgcHkzaworNzIzNjAgZjBmYjRkZGZmMWFiZGFhYTMzNTZmZDZkMzNhY2EzOTAwNzNlOWRlYSByZWxlYXNlMzAtbWFpbnQKKzcyMzYxIGFlNjg1MDg2OWQ1MmY0ZjZlYzc4MmFiMzRjYzgwOGY1ZTY4MjI2ZWEgbGVnYWN5LXRydW5rCis3MjM2MiAyNTkyYzZhOWRkZDZjNDRlY2Q5NTllZmQ2YzI3OTUyZWVlOTNkNjU2IHB5M2sKKzcyMzYzIDkxMWRmODJiYzI1ZGZiNjJmYWVmNmVhMWI5ZDBjZjcwNDE3YmI5N2MgcHkzaworNzIzNjQgNWI5MDIxYzE5NTEyYmIyZTNhM2JkMDEzMjUyZDI4ZjkyOGY4MzUzMyBweTNrCis3MjM2NSA1NGRjNTc3N2JkZmJmZTYzNjlkODNmNzI3OGIyODQ2YzM4YTg4NmI5IHB5M2sKKzcyMzY2IDdiYWY0Y2MxM2JjZmY2OGJiNWI0ZmI5ODgyZDJkZmJlZGY3NWRkNzkgcHkzaworNzIzNjcgM2I1YzQwMGM5ZGNkNDUxMDM1ZDg3YzQyMzA2ODZiYmJmZGU1ZGQ2NSBsZWdhY3ktdHJ1bmsKKzcyMzY4IGZiMTBiODhhZmQ0MDFlODEyMTJhNWNhY2U0YjE2OGUxODY3MTNiNzMgbGVnYWN5LXRydW5rCis3MjM2OSA1YjRiMDllOGYzMmJhOWNiZTVlMWFiNzdiNzc0NTgxODY3NjI3NDQ0IHB5M2sKKzcyMzcwIGEyMzAzYTc0YTc2MTBjOGUyYzZhNjNkZDIxOWVlYmI4NmJmMmEyZmQgcHkzaworNzIzNzEgYjY2NmU3MmY2MDJmYTg1MjhkODMwMGFkYjRhMDgxNTk2N2QzOWFmZCBweTNrCis3MjM3MiA5ODk1NDgzZTk2MDEzYTUyY2ZmMmQ4MTk3ZmM1NGU4ODY5N2E5YWQ4IHB5M2sKKzcyMzczIDljNGQ5MjlmNDA1OTk0MTcxOTFjM2Y0NWM1YzMzYmJiZTZjOGQ3ZTAgcHkzaworNzIzNzQgNGIxYTlhZmZlMzRjZDRmOTIxMmRlN2I1MjNhZDdhMGE5Mzg4MjJiZSBweTNrCis3MjM3NSBlYjNhZmJkNmFhYTk2ZWY2NzYwMmJiYzAwZTk2MTZlZWRlNDgwMDA4IGxlZ2FjeS10cnVuaworNzIzNzYgNGYxNzM4NGFlOGNiZmU0NjhjMDExMmVkN2U4MjRhOWY2Zjg5YWM1MSBweTNrCis3MjM3NyAwZjZhNzg1Y2YyODZlM2QxZDgzYTVlN2M0MjRmMjc5YWZiMWU2ODgyIGxlZ2FjeS10cnVuaworNzIzNzggNTU2ZDExMzE0YWQ1Y2Y5MTM4MmM0ZmY5MmFiMWRiZDVjZGJhNjAwZiByZWxlYXNlMjYtbWFpbnQKKzcyMzc5IDU3ZTliMWIwODM4ZTUyZGU5NDBjZDA0NzEzNGVhODQ0NzBjNWJkMmQgcHkzaworNzIzODAgYTgxNWFjY2Q4OWU0MGIzNDFhNWQ2MGY1ZDAyMDE5M2FhODFiNGM4NCByZWxlYXNlMzAtbWFpbnQKKzcyMzgxIDg1Nzc1ZDEwMGEzMmM1OWYyY2JkMmExMmNlZjM2YzBiNDEwZTRmZTcgcmVsZWFzZTI2LW1haW50Cis3MjM4MiBlNjIwNzAxYTNlYzg2NDBhZmM2YTQzMjMwYTU1ODFlYjEzYzI0NDM3IGxlZ2FjeS10cnVuaworNzIzODMgYWVjNjJlOWNjNmU4ZWVmYTZhMWUxYmNjZGIzMzQ2YzdmYTVhYzBkMiByZWxlYXNlMjYtbWFpbnQKKzcyMzg1IGJjYmI5NGQ2OTJlZmQ3MTI5NjJkNGVhOWJjMjI0NWEyZWQyY2M3MDggcHkzaworNzIzODcgMjkwMjViNTMwMDQ2Njg1MDBkMDg5YmRhNTlmODg5MmM2NDQ0NmIwOCBweTNrCis3MjM4OCBjYWMyYTVmNGI5ZmFlMTI4NGI5OWNmZGU0MDllYTg3Y2Q3OWZmM2RmIGxlZ2FjeS10cnVuaworNzIzODkgYzZlZmU1OGVlZjY2NTdlZTRiOWYyODk5NDllZmUxYzY2Y2JkOGJkOCByZWxlYXNlMjYtbWFpbnQKKzcyMzkwIGYxYTNkZTlkZjQyNWRiNGMzZjFiNjc5MTMxMDQ4NDdjYTliOGQ3YzMgcHkzaworNzIzOTEgZmI3ZDEyMTk2YzM1YzJiNWY1ZGFhYmNjZDQyOWNlZWNlOTUxYzY3MiByZWxlYXNlMzAtbWFpbnQKKzcyMzkyIDM1NTk3ZDNkYmQwODIwMmNjODg3MWQxZWMxM2QxODA0N2JhZTQ1ODAgbGVnYWN5LXRydW5rCis3MjM5MyAwMzg4YTQyNzI1OThlMzg2NGU5NTU5ZTkxMWI2YWFmMDA3MDMwMWRhIHJlbGVhc2UyNi1tYWludAorNzIzOTQgMGM1MjZkMTg5NTI3MmI5YTUyNTdmODJhMWMxNGI4NzM3MjExZjUzYyBweTNrCis3MjM5NSBhZGM4ZWM3ZjdkMjMwMTlmMDI5YTc3NWYyMTQyNmI1M2JlMGVlZWJkIHJlbGVhc2UzMC1tYWludAorNzIzOTYgZGYzZjVkYjUyOGYwMGIzNzFmNzE2MWE1YmRjMGQ2ZmFjODE5M2Y4ZCBweTNrCis3MjM5NyA3Y2I2ZGYwMDY5OWY0YjM0ZDcxOWJmNmM4ZmNiNDIzZmQ3ODg0NDI5IHB5M2sKKzcyMzk4IDA0YmRjOTQ0NzE4YWY5ZWVmZjE3OThiZGQ1ZDE2NzRlY2M5YTE0M2MgcHkzaworNzIzOTkgOWM2NTQwNDA0MDBkZWZhNGMyOWJiZTYzZTA0NzBmNTM3Y2UxZGM0YyBsZWdhY3ktdHJ1bmsKKzcyNDAwIDBiOWQ3Y2NlZDkzNzFkN2ZiNGM4NTNmNWRhMzMyZjY0YjgxMTBhMjUgcHkzaworNzI0MDEgMDM0ZTBmY2Q2OTRlODgxYTU4YWU0ZjFjYWM5OWVkZmE3NDAxMWI2OCByZWxlYXNlMjYtbWFpbnQKKzcyNDAyIGVjZTdlN2E4MDA0M2MxNTgyNTExNGI0M2E4ODM2NDNmN2MwZmE3MTQgcmVsZWFzZTMwLW1haW50Cis3MjQwMyBjNTJlNTU1YzkxOGQ5YmJjNGZhNjAyYWY5NTczN2EzMGIxOTYwOTc2IHJlbGVhc2UzMC1tYWludAorNzI0MDQgN2RjYTI1MDM0M2VhNDFjOTYzOThlYjY4YWVlNGZjYmQ1YWQ4ZjdmNiBsZWdhY3ktdHJ1bmsKKzcyNDA1IDRhODQ3MDA2NjRkOTI2MjFhZmU4YjQxZDhhMzFmZjhlMDU2YTJmMzkgcmVsZWFzZTI2LW1haW50Cis3MjQwNiA0NjM0MmZmYTI5NjM1M2YzNTA3ZWU3OTQwMWY3YzEwNzg5MjY0ZTJmIGxlZ2FjeS10cnVuaworNzI0MDcgYzBhZDIzYWUyYTNlMWNjZTQ1OTIwMDZkOWEwYjY2YTg2YzlhZTM3NyByZWxlYXNlMjYtbWFpbnQKKzcyNDA4IDYzYjIzYmQzOTA0ZGU3MTY5YzYyY2YwZWJhMzc3OTM1NzVlODhmNjkgcHkzaworNzI0MDkgY2E1NTdmODUwZWVlNjRjZDNmMmZiMTEwYTA4YjU4NGM4NjRhMjhmYyByZWxlYXNlMzAtbWFpbnQKKzcyNDEwIDdhNjdiNjQ3YjllNzc3NzllY2ViMjBhMzQ4MTkyMmU5ZTA5ODNhZGMgcHkzaworNzI0MTIgYjYzMDIwNzk3Zjk2NzhhZGFmNGQyYzNlMjY1NzRhOWVlZjJlZjAyOCBweTNrCis3MjQxNCBhNjI5OTI0MWZiZDliY2M2MDU5N2Q1NDZjMDZkNDQzZmM2NjI3MmU2IHB5M2sKKzcyNDE1IDNhYWFiYjMxMDJlOGU3NTlhODk5NzE5ODEzZWRhNTk5MzY5ODE2OTUgbGVnYWN5LXRydW5rCis3MjQxNiAzNzZmZTE1ODYyNzYwMDA3YjA3NGNkNGVjM2NmNmU3ZTU1ZDE0MzhkIHJlbGVhc2UyNi1tYWludAorNzI0MTcgMjA1ODY5MGE1M2UxMmNlMmUyYzcxMDMwNWMzYmI0MGVhYWJiMzE4OSBweTNrCis3MjQxOCA2NWQ4ZGI1YmViMjAxMjIxOWNiZmYxNzM5ZTQ0NzE3ZGVjOTE0NGI2IGxlZ2FjeS10cnVuaworNzI0MTkgMmEwZmFjYTNkZWVlNTk4M2E1MGRlMTQxMTI2ZmQzMzNjMTliYWUxMiBsZWdhY3ktdHJ1bmsKKzcyNDIxIDc3MTQyOTg1YzY0MTBhNTM1MDRkZjc3NDIxYjY1Y2FkMWY2MDExZTAgcHkzaworNzI0MjIgYTdjYWYyOWQxNDA2MzNjNDUzY2E3ODI3ODJjZjk4MzA3MmE1NDVmZiBsZWdhY3ktdHJ1bmsKKzcyNDIzIGZhYzUxYTAyMmJmNTA5MzA0MDNlZjlhNmYxZmFjYjJjOTg0YjA4NDAgcHkzaworNzI0MjUgODViOWRmNTI1ZTEwNzBmNjM4YWU1NDBkODljODE1ZTA1ZDJhMGU5NyBsZWdhY3ktdHJ1bmsKKzcyNDI2IDIzOGNhZmNjMjUxNWY1ZGIwM2QwYTUxNjhlYmUwZTc2ZmFmNDFhNjcgbGVnYWN5LXRydW5rCis3MjQyNyA2MmJlNWFjOTg5ZjRmODZjMDRiMjQ4OWZiOTRhNzliZmM2NTNmODU2IHB5M2sKKzcyNDI4IGE4MTkwZTg4MWZkZmYyYWY2M2NlMjNjYzkwOTUwNDAxMjc1NjA1NTQgcmVsZWFzZTMwLW1haW50Cis3MjQyOSA3YTNiZDE3OWIxODBkY2MxODk1ZDI4OTdlMmFlMTNiOWYxNDQ1MjQxIHJlbGVhc2UyNi1tYWludAorNzI0MzQgNmM4YjM4MGRiNzI3ZmMyMjFjMjI2ODdlM2JiZDFkZjM0OGE3NjRjYyBsZWdhY3ktdHJ1bmsKKzcyNDM1IGU3ZmUyMTdjZTAxNTdkZDgxNDRlYWFmN2Y2MzMyZWQwNzAyNTE1NzUgcHkzaworNzI0MzYgZjg3NTgzNTNjNmMyMDJiNmM1NmI2ZWU3YzA0ZDM1ZDgyM2E0MGZhYiByZWxlYXNlMjYtbWFpbnQKKzcyNDM3IDU3MGQzZTU4ZWVhOTU4YjIxYTAzZjM4ODRjMjdlNzQyYTBhYWEwMjkgcmVsZWFzZTMwLW1haW50Cis3MjQzOCAwZWYyNDJmMjdkNzY5OTc3YTI2Y2YxMjdmODkxZjEzZTgxZWIyNDZkIHB5M2sKKzcyNDM5IGQ3ODAzN2MxNjIyNTAwNzI4ZjE0YzRjOWY0NjQ0YmMxMDY4YjkzODkgbGVnYWN5LXRydW5rCis3MjQ0MCA1NTAyZmYyZmJkZDYzZDI3ZmVhNjkyYWRiMDAyZDEyNmVkOTVmZjNmIHJlbGVhc2UyNi1tYWludAorNzI0NDEgYzY5MzAwM2IxNWUyMWQwNDUwZjc2ZTMzMTMzMGVlMmMwNDdkYTYxZiBweTNrCis3MjQ0MiBhYWM0MDU1ZDA2NmEwM2UzOTRmZDMxNTI3NGZjMjJiMTc4ZDQ4ZmY0IHJlbGVhc2UzMC1tYWludAorNzI0NDMgNGMzYTg0ZTU0ZDA4MjY4MTZhOTAzZWIzMzdjYjMwMDc5M2QxZDhkOCBsZWdhY3ktdHJ1bmsKKzcyNDQ0IDBkNWUyYTkyODZhMmE0Yjg1M2VjZTM1MTMzYjJjMzNiMzc0NTE1YTYgcHkzaworNzI0NDUgOTE0M2QyMGQ4YjI2MzlkMzg2YzFmZjY4ODY4YTEyNjYzNTkwNTYyNCBsZWdhY3ktdHJ1bmsKKzcyNDQ2IDE5OGI2OGFlMmMyZGY1MzczYTA3N2RmMmVhMDZhYTcwMWIyMzhiNmQgcHkzaworNzI0NDcgZjVmNTA3YjU1ZDQ2NTc5NTE1ZTRlNTA1Y2NkY2M1MzIyYWZkNjczZCByZWxlYXNlMzAtbWFpbnQKKzcyNDQ4IDhmM2RhNzEzNGNhNWYwN2EzNjVjYjAyZTY1Zjg3MzNiNjE2ZGJkOWIgcmVsZWFzZTI2LW1haW50Cis3MjQ0OSBlNTY3MTJlMTg2ZjlkZjhjNWI2MWVkYjA0YzZjMDQ3YTFhZGZjMTg4IHJlbGVhc2UyNi1tYWludAorNzI0NTAgMmRmMmQxZjA5ZDU4NWQ3MmY0MmRjZmIxNmRhODM4NTlmYTE1ZjNjMyBweTNrCis3MjQ1MSA2YTcxNTcyN2YxOWY3NTVjM2I0NTM4ODYwMDg4YzlhYzdmYWIwYzBlIGxlZ2FjeS10cnVuaworNzI0NTIgNDdiM2ZlZWE0ZTFhNTFjMjAxOWQ5NmY5YTJiMjU1MjEwNzFhZDUyNyByZWxlYXNlMjYtbWFpbnQKKzcyNDUzIGMxNDJlNDUzODk0MWU2M2RkMGIyNDdiYzhmYzM3YWE2MGY5NzhmNzkgcmVsZWFzZTMwLW1haW50Cis3MjQ1NCAxMWFkNjU0NTgwOWFjN2JmYzUxOTFhZmM3Yzk1NDUxN2FkNDRlZjY2IGxlZ2FjeS10cnVuaworNzI0NTUgYjNiMTU1NTgzZTA1NWQzOTgxN2RkYjg4ZmQ3OTUzMDUyNTg4NDdkZiBweTNrCis3MjQ1NiAxN2Y3Nzc0Zjc0ZGRlYjZiNDQwYmUxNDM5OTViMDViY2UwZGM4OWJmIHJlbGVhc2UyNi1tYWludAorNzI0NTcgMWNkMWIyMTQ1MmQzOTUyNjY4NTlmNmM1ZWRlYzdkNjZhOGQyMjYxYiByZWxlYXNlMzAtbWFpbnQKKzcyNDU4IGEwMTVhMjk4NTQzZGRlYjE4YzI3ZTg3MzU2ZDQzN2JmMGEyZWU2YjAgbGVnYWN5LXRydW5rCis3MjQ1OSAwNDZiZDJhNDEzMjJmYWVhZGE3ZDhmYzdjYzlkZmRkM2JmYmIzOGQzIHB5M2sKKzcyNDYwIGEzNmZhMmNlNjFiMWYzY2I2ODQ2ZjU3MmY1NDc5ZTNmNWE5ZjA5NDAgcmVsZWFzZTI2LW1haW50Cis3MjQ2MSAxZWNkY2ExMWViOWVjMjg2NDAzNjM0NGM4NWE5YjU2NmZiOGZlYzM5IGxlZ2FjeS10cnVuaworNzI0NjIgMjk5M2YwNDllMmM5NTMzM2U2ZDcyOTIyMjQ2MzYwZTc0MjcyMDdmMiBweTNrCis3MjQ2MyA1NDIwZGFlMzU1ZjczYzYzNTAxY2Y5YTcyNjVjZWE3NmRiODFkMWJlIHB5M2sKKzcyNDY0IDM3NDk3YTc3OTNiMmZmNzNiMDgxYWM2MDZjOWZkYjEzNTIwOTFkZjYgbGVnYWN5LXRydW5rCis3MjQ2NSBmMWZmODdiOWI0MzczYjJiNGM4Y2Q0MGE4MjIwZjNkMjc0ZmViYmI3IHB5M2sKKzcyNDY2IDIzODUwMjQ2MDc5NWJjNjBmZTc5NzM0YzAxYTUxMzMyOGQwYTI2OWQgcHkzaworNzI0NjcgNjZlY2M4OTZiN2U3M2EwNTRiMTY2M2E4YWYxOTJhZDZmMzAyYzllNCBsZWdhY3ktdHJ1bmsKKzcyNDY4IDljN2JjYjdlNzQ4YzE2MjQ3ZGU0OTRlNzIxYmE0MmUxZTc5M2U3MmYgbGVnYWN5LXRydW5rCis3MjQ2OSBhNmU2YTU3Y2NjYzI5YTRlNTVlOTM5MjRkZmY4NDQzODBlOWFjMmM5IGxlZ2FjeS10cnVuaworNzI0NzAgNTI4MGY3NTViNDhhMTRiNDFhMjg0YTY3M2ExYjdmZDcwODZjZTM2YiBweTNrCis3MjQ3MSA2OTRlZTIwYzhjNzQzYmViNjlhYTE3MTRlNWJmNjMxZDhkZjhiZGMxIHB5M2sKKzcyNDcyIGJhNGU2YTNhZjU2NGVkNzBmZWJlODdjOWY3NjUzYjVlYzkxNmNjY2QgcmVsZWFzZTMwLW1haW50Cis3MjQ3MyA1ZWE1NDYzNTcyMjZkZGFkZjQxNWRlMzVhY2QyN2ZkNjNjNDVlOTJhIHJlbGVhc2UzMC1tYWludAorNzI0NzQgMTcxMjUyM2Y5MzZjNTBjZTUwY2E3YmQ3Mjc4ZWMzYzdiZDY1YWZiMCBsZWdhY3ktdHJ1bmsKKzcyNDc1IDVmMjE1NzQ3OTc0OTVkNTYwNmJhNTg5MGYzMDMyZDIzNzJkNDA1YmQgcHkzaworNzI0NzYgZDRlZmM3MzM4NzA2YmM0YmFlOTc1NDY3YzVkYjIyOTY0MTA3MjMwMyBsZWdhY3ktdHJ1bmsKKzcyNDc3IDdhOWUwODFlY2U0YzNkYTFjNDYwYTQ3ODhmMmNlODk5NjhkODdhZDkgcHkzaworNzI0NzggY2I3YmU2M2I5MWQ4NWVhOGFlZmVlMTY1ZTk3ZmRmZTRlODczYzZhOCBweTNrCis3MjQ3OSAwZGFlN2ZlZmVkNDQwNWM4NDJlNGQxZDMyZWRmNDJjMTUzYjc0NjI1IGxlZ2FjeS10cnVuaworNzI0ODAgOGI5ODk3ZDE1Y2ZjODBjZWU2ZTgwMTYwZmQ1NGEyZDNlZGE1ODdhMSBweTNrCis3MjQ4MSAyMDg2OWQ5NzhiOGI0MzA5YTkyYjI3YmE3OWI2NzNmOGQ4NmIxMWU0IHJlbGVhc2UyNi1tYWludAorNzI0ODIgYjg2N2NlMzc1ZTk4Y2QwZDIzM2Q2NzQ1ZDY4MWZmMjkyZGFkZDVmOCBweTNrCis3MjQ4MyBmNDk1MDA5NmU3ZDdiNDc3ODg5NjQwYmJmYWJiMGQ0NGJjOWUwNjNkIHJlbGVhc2UzMC1tYWludAorNzI0ODQgMDY3YTYzOWQ1Zjc2NTkyMmIzYzRhZjhkNDI3OGYxZjMwMDIxZTdhMCBweTNrCis3MjQ4NSAwNzIyZjIwNGQyNmUwNDViZWVmZWRiOTYwZGUwYjllNTU3NzQ1ZjVmIHB5M2sKKzcyNDg2IGY5MTdhYWU3NDFkNWU2MWZmZmRlMWU5NmRiMjI5YWE0YWIxYjkyN2QgcmVsZWFzZTMwLW1haW50Cis3MjQ4NyBhMTcxMDQ4ZGFmNzZmNDI1Nzc3MDgwYTNiNjllMjJmZmQwYjA2NTY1IGxlZ2FjeS10cnVuaworNzI0ODggOWVmNjgzZDQxYzliMjIyOTdiY2M0YjA1Yzk2NWQ2ZmFiYzNlNzMyYiBsZWdhY3ktdHJ1bmsKKzcyNDg5IDUxMGZmYzVkYjIzMjU4OWM3NjkzYTRlYWM4ODIxZDM1ZmNmZGJjY2YgbGVnYWN5LXRydW5rCis3MjQ5MCA0NDZhMTVhMWJlZThmZDA2OTQ0MDhjZmM0NDZjMTBhNjdkNTBkMDFmIHB5M2sKKzcyNDk0IDExOWU0MzIzNDAwZDAxYzgyMmViMWUwYzc1ZmE1ZWYwZTZiY2I2MTUgbGVnYWN5LXRydW5rCis3MjQ5NSA3Mzk4NmE5Y2ExZDYzZGZiNTk1NGY2OTg5ZThmY2U2NmM1YjBlMzhmIGxlZ2FjeS10cnVuaworNzI0OTYgMWQ3OTQ4Y2I1NDMwMDBhZjNkMWZmMTQ2MDYzN2FhNjM2YjU0M2E4OCBweTNrCis3MjQ5NyBjY2ZkYTE0ZDE1NTQ4MWY0ZTQ4NzBlZWIyYWU3NWZmNDc2NjIzMGQ4IGxlZ2FjeS10cnVuaworNzI0OTggZDY2NjAzZGQzYjJkNzE4YWJlMWY3NjY3NzM3Y2UwYjY1Yjg2YTMyMSByZWxlYXNlMjYtbWFpbnQKKzcyNTAwIGY5ZDllZWM2YmU2NzAxNzg0N2ZkN2Q3YzI3N2ZjNGQzOGJhZjcyMGQgbGVnYWN5LXRydW5rCis3MjUwMSA5ZjcxM2Y2MDVmNjBlZmQ1ZjQ0YjViYzVmMWQzNzA5OGM2MjA5NmNlIHJlbGVhc2UyNi1tYWludAorNzI1MDIgMzZmYzA3OTg0MTdmMTRlNmQ2YzNjNDM1NDU3MTdhOTg1ZDQ5OTM1YiBweTNrCis3MjUwMyA5OWRkMjllMjRiZGUzZDRlZTVkMDY5ZjBkYzk2NjRjYWM3NDdjM2M1IHJlbGVhc2UzMC1tYWludAorNzI1MDQgOTYyYjRmZjc2Y2NhMjEzNDU3NTMzYzhhZDc2MTU0YmJhYzA1NmI0ZCBweTNrCis3MjUwNSA5MjA3ZDQyOTIwM2ExYzVhOTY1MmQ4Mzk5ODlhNTQ0MGZiNmU4YzZlIHJlbGVhc2UzMC1tYWludAorNzI1MDYgMDcyYThhN2NlOTczY2RkZTQ2NGU4OTUwZjQxNGRiNTMyMDVkODI1MyBsZWdhY3ktdHJ1bmsKKzcyNTA3IGViNmViNDlkYmFlOWVjN2RjZjIyMWU0NmI3ZTgyN2UwZDZkOGMyYzUgcmVsZWFzZTI2LW1haW50Cis3MjUwOCBmOTBiM2VlYzdjMzI3OGM1ZjkwZGFhZjM4ODYzMmMxNTJiMGJjMWM2IGxlZ2FjeS10cnVuaworNzI1MDkgNWRkM2IzOGEwOTc3OGE2NjczY2JmYzZlMDhmN2I4NmU1MTRiMmMxYiBsZWdhY3ktdHJ1bmsKKzcyNTEwIGI3OTIwZTE4MzQyMjhmNWVmNzg0YmJiMmE2ZmNkMzI0MmEyZTFiOTUgbGVnYWN5LXRydW5rCis3MjUxMSBhZmQ2MmViMTY5MmVmMWFjYmFiZWIxYzlhMDU5ZjFjZDYzMGM5MThhIHB5M2sKKzcyNTEyIDMwZWRkN2Y2MTAxYmQ5YTdmNmRhOTNmMmJhZDA4NzIzOThmM2E3OTcgbGVnYWN5LXRydW5rCis3MjUxMyAzMjdlMjNhNmE2MTAyMGFlMGUxYWY2ODVjZTg3NzM1N2JiZDdjNjQxIHB5M2sKKzcyNTE0IDI2MWY1OTQwMTRjNjIyNWEzZTk1YzY1MTU3MGM2NmViNjhmYTE2NGEgcHkzaworNzI1MTUgMWIxNWE1N2UxZjAyZjRiYmUwMTM1YTI1YThiZGUyMTE1ZmE5MWUyMiBweTNrCis3MjUxNiBkMmIxNzYxNjFhYmYwYjM2NmNlZmM2ZTM3NmY1ZjQyMjQyZDg4YzRhIGxlZ2FjeS10cnVuaworNzI1MTcgNzJhNTAzOTRjMmRkZTgzOWI3MzZjYzA5NGYwZGVkNTI0MWZiYzk2YSBsZWdhY3ktdHJ1bmsKKzcyNTE4IGFhNDFjOGM5NjA1NTAwNmYwNzNmYmZiNzk1MTlhZTk4MDllYWQ0YTQgbGVnYWN5LXRydW5rCis3MjUxOSAyYjQwNjUzODg2NmQ5MDkxNzZkZjJlOTk2MDZhZmY0OTgwZDA4MWUzIHB5M2sKKzcyNTIwIDI5YjUxOGYyOTZkZTAzZThlNDcyNzhjOTQ2NDI1NDIyOWY4NGExYTggcHkzaworNzI1MjEgMDU2YWE3NjlkYTg5MWExMGYyZTc2NDVkZmQzMDAyNjY5MjdiNjYzMCBweTNrCis3MjUyMiA1NzAyZDJkYWQwZjllYzhlZTBlNzViZTBkMjQ3NGEyMzg0ZDZhYjBiIHB5M2sKKzcyNTI0IDEzMTE3NzI4ZDA4NmRhNDI1OWQ0NWYzOTE2NGQ5ODM1NDZhY2RiY2QgcHkzaworNzI1MjUgYTdjNTNmYWQxM2JjMzZkMjIwMmNiNjExMmMwMGJmM2NiODkzOGNlYyBsZWdhY3ktdHJ1bmsKKzcyNTI2IDNlODRkNjAxMjZiN2UwMjljMDgyZDA5MWQ4Y2M0OTc3NGM4ZDc5OTcgbGVnYWN5LXRydW5rCis3MjUyOCBmYmNkYWUzZTBjYTFiZWMxMGY0ZGVkZDk5YjM1MmM0YjNiY2JlZmY4IHB5M2sKKzcyNTI5IDdjMjliZmJmZDM1MjQ0ZDA0YzQzOTQ1ODUxNTFjMDE5NzgzNzQ4YzEgcHkzaworNzI1MzAgNDFjMDllMTQyYmQwMDZlMjA5ZmZmMTQ0OTBiNTEzYTE3N2VmZjkwYiBweTNrCis3MjUzMSBlOTFhNzdhNDgyZWJlNGUxZGE5NWU1ZGQ1NGQ5ZGU5ODRjNzkyMGFkIGxlZ2FjeS10cnVuaworNzI1MzIgMzVlOTgwM2EyZjRlNDVlNDRkZTk4YTVmMzk3MDJiN2VjZWIzNDAyMiByZWxlYXNlMjYtbWFpbnQKKzcyNTMzIDA1MDc0MmJiNjBkNWIxNzM3NGExOWQ1YWFkZDJjYWMwMTJkMzFhMDcgcHkzaworNzI1MzQgOWU2N2MyZjk5OWM5Y2NjNjNkNzcxNGU2NzIwZmI1YmU3MTUzYjM3YyByZWxlYXNlMzAtbWFpbnQKKzcyNTM1IGM2MGNkYTM0MThiNTRmNjUwOGNhZjIxN2NiYTM2YTU4NTU1NjZlOGUgbGVnYWN5LXRydW5rCis3MjUzNiA4YTA0Nzc3YjU5Y2JkMGFlODUzYjFmNmQwNjJjZjM2OWJiZDdlMjBjIHJlbGVhc2UyNi1tYWludAorNzI1MzcgNTIyNGEyNThkNWJiMDRlMjA3OWIzMzAzYjFkNTJkNGZjM2VlZjQ2MyBweTNrCis3MjUzOCA5YTZmNWUwNTMxYTYzMTg2MzA0ZDJhMmZjNjkxYjM3NWYzM2U5ZmI3IHJlbGVhc2UzMC1tYWludAorNzI1MzkgMWJlYzY0YjhkZDE3NmFhOTUzNmZjZjUxY2EzZmE2NTViZjJhYTllYSBsZWdhY3ktdHJ1bmsKKzcyNTQwIGFjNDg5NDY5MzQxMWQ0MTdlZWEyZTUzNmRjY2I2Yzc4NTFiYzBmMzEgcmVsZWFzZTI2LW1haW50Cis3MjU0MSA4ODhkYWEwMDNmYzNjZTM1OGJmZjdkMmY2ZThlNTYxNzc4NTU1OTU0IHB5M2sKKzcyNTQyIDg2YTNjOWE5YzZkZTQxYWFiN2I4MWRkYWY4NDZkNjlkMzQ4NzA3OTggcmVsZWFzZTMwLW1haW50Cis3MjU0MyAxN2M1M2ZhMzc4OTAxNjcxMGRjYTFkYzIyMzcyY2QyY2UwMDg5MGMyIGxlZ2FjeS10cnVuaworNzI1NDQgODgwM2FlMGRmM2YzYTU1NmU0Mjk3ZjUxNjZjMWE2NzZkNzQyNDg0MiByZWxlYXNlMjYtbWFpbnQKKzcyNTQ1IDI0MWRhYTI1OWFmOTZjM2U5MjE3NzY2ZDEyZjdkMjhkNTdiMmIzNWUgcHkzaworNzI1NDYgMjgxZDJlMjNiZGIyZDNmYzI1OTcxZmY5MDc1NDhmMDRmN2M0ZWFkZiByZWxlYXNlMzAtbWFpbnQKKzcyNTQ3IDE5MjdlOGQ3OTE0Nzc5NTdkMTk5NzlhNTIwZTU0OWUxMmUzMTY5MDQgbGVnYWN5LXRydW5rCis3MjU0OCA0YWUwMWEyNDE2NTBkNTY0OGY4M2RlOGYxNDcwZTNmNzVkYmI5YzcwIHJlbGVhc2UyNi1tYWludAorNzI1NDkgZjk4MjI4OWY5M2NmYjhlMzQ4MGI3NTJhZTI2OTliYWViOThkZTc5ZSBweTNrCis3MjU1MCBiZGNkMDVhODFhY2JhMGVlMzg4YmU4MGUzNTI2YTdkNDc3MmQ5ZTljIHJlbGVhc2UzMC1tYWludAorNzI1NTEgNjMwZTY4MTEwMGUwOGU0OTJhODUwMjljY2E4N2FkY2JiMGQ5YTZjMiBsZWdhY3ktdHJ1bmsKKzcyNTUyIGQ2NWQ3MTg5ZGUzMmNkM2VhNTYzZTQ2MzU1YmUxNGIyODc1ZDFlZWYgbGVnYWN5LXRydW5rCis3MjU1MyBjNzQ3MWM5MTFhZDI0ZWUzZGFmMWU2OTlhMzI3NDI5NmFkMjFiNDQ3IHB5M2sKKzcyNTU0IGVhMmU0MjVkMWY2MDBjYjFiZmE3ZWI1MzY2NDAzMTg0MzYxMDcyYTkgcmVsZWFzZTI2LW1haW50Cis3MjU1NSBkMDJiMGU3MDczNzdkM2VjNjYxYTY5Mzc0M2NjNGE0ZDgyY2QwOWY1IHJlbGVhc2UzMC1tYWludAorNzI1NTYgNmU3YzdmNDI0NDM2YjY3ODgyYjc0YjkzOWM4Y2IwZmU5ZWRmMjE0MyBweTNrCis3MjU1NyAzNDE2NzIxNDgwYjIxYzVmOTYyYTM2YmM5OTIyMTFhNzJlZGIxYjZmIHB5M2sKKzcyNTU4IDRlYmNkMDE0ZjNkMDZhMDcxZGY2MTQ0NDhlNzc1OWZiZmE0NTMxNjQgbGVnYWN5LXRydW5rCis3MjU1OSAwNDk1YmM0N2NkMDg2YTk3YmNkYzg4NDM1ZTYzNjA2Mjk4MmVlNjhlIHB5M2sKKzcyNTYwIDRiNDE3NDNmNjUyN2NiYzhmMzE0NGZiODU1M2EzODMyOTM5M2I1NDkgbGVnYWN5LXRydW5rCis3MjU2MSA2MWM1YmRiMjk0Zjk1MTg1YTlkZWZjZTVhNWQwZjNiNjg4NTY2Mjk4IHJlbGVhc2UyNi1tYWludAorNzI1NjIgZjIwMDkzNzE5YzBlZmYxMDU2Yzg2NTJiYzIwNjllNTdiZjRlZWQ5NyBweTNrCis3MjU2NCAxMTlmNDIzMmFmNDYxODBhNjQ4Njk3M2M2OWJjYWI2ZWQ0MzJkMTQwIGxlZ2FjeS10cnVuaworNzI1NjUgOTQxNGMyYjE5MjNlZGVhOGQzNWNjNzk1MGM0MzVlNGRmNDYzMmFlNiBweTNrCis3MjU2NiAzNWM2ZDQwN2QzYzllZDQwYjAyM2RlMGE0M2E4YjhmM2U1YjUyYTNhIHJlbGVhc2UyNi1tYWludAorNzI1NjcgZTllZGNhZjQyNTQ3M2Q5ZjFhYTYzZDg0M2Y1NWQ4MjcxZDA4NWUyMCByZWxlYXNlMzAtbWFpbnQKKzcyNTY4IGMyZTJiNDdhODdjMTQ3YjQ0YmI3YzVjY2MwMjVkOTZiMjc1NWI3ODcgcHkzaworNzI1NjkgOGE3ZTg0YWU0NmM1ZGQ4NTZmMzkxOWE3ZTQ3MWZkYzYzYWM4MjYxYiByZWxlYXNlMzAtbWFpbnQKKzcyNTcwIGNjZmNhMjU4Nzg4NTNlOTE3Y2YzMTczZDVkM2MxYTA1MDQ5NmYyYTEgbGVnYWN5LXRydW5rCis3MjU3MSAyMjI3N2RmZmM1NzFjYWU3ZmJkODFhNTM1ODU0M2I0MWMwZGNiOTQxIGxlZ2FjeS10cnVuaworNzI1NzIgODkzMDU0OGFmNzM0ZTAyNmYyNmJkNGMwYTEyOGE0ZGJmOGY4NjhjNiBsZWdhY3ktdHJ1bmsKKzcyNTczIDg0NjE2ZWJmMmI0ZmMwODdiODg3NmQwOGY1NGZkOGRhODRhMTgzYTQgcmVsZWFzZTI2LW1haW50Cis3MjU3NCA1ZDBmNWM1NzEzNTc5N2U5Nzg1YmFiZGQ0MGIxZmM4M2VjZDVmNDIzIHB5M2sKKzcyNTc1IGEyNmFmODVhYjg5NTBiNWYyYzcxMDg0ZTZmY2UxY2VkNDEyYzlkMGEgcmVsZWFzZTMwLW1haW50Cis3MjU3NiA1OWNiOWMwNzRlMDk3YWM3YzJiN2ViNDRjMjJmMjcxZTNiMmE4NTQ2IHB5M2sKKzcyNTc3IDk0MmYyZDZkNWM1Y2MzYzZkMmQyZWM1YzA3MWI1YjE4NDljYzMzOTMgbGVnYWN5LXRydW5rCis3MjU3OCBiZDgwZmI4MzZiOWU5ZmQ4NThhZDViYmQ1MGE0ZWU3Mzk5YjVkNGJiIHJlbGVhc2UyNi1tYWludAorNzI1NzkgNTQ2MDQ2ODhiM2U5N2JkMzBmMzA2ZTdkM2E3MjljYjA5NDk0MjVlMSBweTNrCis3MjU4MCAxMzU3MzAzNDExNDg3YzU5ZGM0NjViYWRlZGI2YWQ3YmZjNWMxYjdhIHJlbGVhc2UzMC1tYWludAorNzI1ODEgMjU4MjE5NjQ2ZTNhZGI5ZGVjMjAwYjRhNzgzZDM3YzI3OGE4ZmQ4MSByZWxlYXNlMzAtbWFpbnQKKzcyNTgyIGRmZTU4NjVlNWY5ODA5Y2M1ZTRiYWY3MTM3NTA1ZTY0MWE5NjM5NWMgbGVnYWN5LXRydW5rCis3MjU4MyBiZWFjMGI0MWNmYjE0ZmVjMTAyNjQ4MTNiZGZlYTRhNjBhNWQyOTkyIGxlZ2FjeS10cnVuaworNzI1ODQgZWZlMTJhYThlZjE5Y2QxNTFhNjAwZDFiNDNiNjE0M2ViNTMwOTQxOSBweTNrCis3MjU4NSBlODIwOWFiNDk2OTE0ZTI4MzgwNDUyNDZiMDA5YjQ5ZmMwZDc5YmIyIGxlZ2FjeS10cnVuaworNzI1ODYgMTVhOGY0ZjJiYzg0ODQ1ZTIzOWUzMGU1ZjExYjZhZTc4NDJkZjdlMSByZWxlYXNlMjYtbWFpbnQKKzcyNTg3IDkyNGRiYjdmYzZjNTdmYjA2MWI4YWE2NDc1MjFiNTU5NTU3ZGEyYTggcHkzaworNzI1ODggYjYzODU3MDM3MDNlMWNjNzgxZDM1Y2RlZTQ4OTc4YzFlNGFiMDliZiByZWxlYXNlMzAtbWFpbnQKKzcyNTg5IDVmY2UxNGUxZDcwMzJjMmNlZTMzMDNlOTViMThiNzk5YzBlOWQyZTkgcHkzaworNzI1OTAgNzhmYjdmOGNkMzQ5MjJkZjE1NzFlMmFlOTA1YzY0YWE3YWI2NWUyZSBweTNrCis3MjU5MSBjMmM4ZDBkZGYxODc3YTliYWU0ZTcyNWIxZTc1NWYyYzM5ZTU5Y2FmIHJlbGVhc2UzMC1tYWludAorNzI1OTIgZDg1YmQ0OTlmM2Y0ZWNlN2EwZDJjMDcwM2NiOWE2ZGE3NTg4OWVmNSBweTNrCis3MjU5MyBkMjIxMjRjNjQ0ZmZhNGI4NDUwM2M4NjZhYzA0NDRmZTdjYWU4MGJhIGxlZ2FjeS10cnVuaworNzI1OTQgNzM1ZWQxNzhkZmFlNTI1YmVjMTk0OTIxOGVkMjg0YThkZTcxMmZjOCByZWxlYXNlMjYtbWFpbnQKKzcyNTk1IDJjMWQ4ZjJkMzgzOThmZjI5NWE2ODJiN2ZmZDY1OThkNmM1MDhmZGYgcHkzaworNzI1OTYgMDU0NjgwNWIzMDIyYTA2NWY4MjUxNzBlMzM4N2ZmOTcyOWVlNDZlOCByZWxlYXNlMzAtbWFpbnQKKzcyNTk3IDY0MTk4MjhlZjY1YWM0ODEzY2MxMDU5MDc5NzJlZDg0MDdhYzQzODAgbGVnYWN5LXRydW5rCis3MjU5OCA0ZWJlNmIyNjBjNTViYmMwMzQyNGY2NzRkZjNhZmIzNWQ2MWFjNDllIHJlbGVhc2UyNi1tYWludAorNzI1OTkgMTllOTU5NjI2MTA5ZjMyNDU4M2E3YjJmYzU3YTk4NWJhZWQyNDdkOCBweTNrCis3MjYwMCAyZDZmZjRhOTQ5NTNjZjk0MzVjY2NkZDY2ZDU3ZGU4MTk4ZDBjYmUwIHJlbGVhc2UzMC1tYWludAorNzI2MDEgYmJiOTExZjdjMGMyOWYzY2FjMjdmYjIzZjMwZGQyZGQ1MDc5NDViMiBsZWdhY3ktdHJ1bmsKKzcyNjAyIGY1MGVkZDRiYjQ4ZjgzYjg4MjhmOGVkZTdjODYwYTg4OGE0YWU5YjMgcmVsZWFzZTI2LW1haW50Cis3MjYwMyA2ODhkOTRlODZjYTI4OGRkNDViYWQzNDk2NDU1ZjI4N2RiOGQ4MzYxIHB5M2sKKzcyNjA0IDM1YmE2NWYxY2M4MTc5NjM1ZGYwNjAwNTdlMjQ1MzQyZTdjMjAwYjMgcmVsZWFzZTMwLW1haW50Cis3MjYwNSAzNDdlNTllYTFhNzFkYTY4MWRiZmU2YjQzODllMjE3NTQ2NzIzNmY1IGxlZ2FjeS10cnVuaworNzI2MDYgMzE5NTI0NTI0ODViZmEyYjQ2MGE0NWNkZDI3YTRlOWJiNmRjMzIxOCByZWxlYXNlMjYtbWFpbnQKKzcyNjA3IGU5YTdhZWU4ZTgwMDQxZTEwZDI0NjEzODUwZGYwZDYxZmM4YWVkNjggcHkzaworNzI2MDggYmQyZjdlMTNmZDczZWRmZDA0ZWQ3ZjVjZjVlMzA2MjMxMDRhNTM1MiByZWxlYXNlMzAtbWFpbnQKKzcyNjA5IDAyMzE4NzZmMzEwNDNkMTg4NjEzODAyYWI2NTZmZmVmYjQyYmE1MjEgcHkzaworNzI2MTAgYzUxODA4MjY5MjE0ZDIyMzA4MGRiNjRkNWJlYWRlYTYxZTQ1YTExOSBsZWdhY3ktdHJ1bmsKKzcyNjExIDkxMzc3ZGE1NGVkZTk1ODRhZWMwNGMxOTU1OWJmNmRjYjEzMmJhYzEgcmVsZWFzZTI2LW1haW50Cis3MjYxMiA4ODJkOTc5NTQ1MjYwYWI1NjA4NGY3YTA3N2FhNWJiZGVmZmRiZjA3IGxlZ2FjeS10cnVuaworNzI2MTMgOGY2ZTkxMjM3MDI3NDIyODAzYWRiN2Q1ZDlkYjg5MGZmNTkzOTRkNyByZWxlYXNlMjYtbWFpbnQKKzcyNjE0IDMyM2UxZDg0OGI1ZmZmYWY3MjE3Yzc1NTUwNjgxOGNhYzVkMDhjYmIgcHkzaworNzI2MTUgOGM3Y2MxNmRjNzljNDhlZDc1Y2I3ZmJmMjRhMzlmZTBjNTgzYjMxNyByZWxlYXNlMzAtbWFpbnQKKzcyNjE2IGE2YzRjZGZkYTlkNmQ1MDc5NTZkNzJjMTI1ZWYwZDI3ZDQ2Y2IxYmEgbGVnYWN5LXRydW5rCis3MjYxOCBiZjY5OTAyNjQ1OGU0OTAyNGE5OGEwNmYyMGM4NjIwY2U1NWFiMzkwIGxlZ2FjeS10cnVuaworNzI2MTkgZGRlZTRkMDVmYTE3ZWExZGE3MWNjMTY4NmNhMzYxYTZjNDkxYzdlYyByZWxlYXNlMjYtbWFpbnQKKzcyNjIwIDc4MTRiZTY5NjdiOGJhMDg4NTgxZmRjYTA5ZThlOGExYzA5NjYzNTEgcHkzaworNzI2MjEgYmVjYTZkN2NjYzkwNzcxZWNkZTk5NjE3NTc1Yzg4MzA2NjNhODg4YiByZWxlYXNlMzAtbWFpbnQKKzcyNjIyIDNhNWY2YjYzMzQ5OTM0OTQ2OTYwMjdiNzc0ZWU5OGE4MzYwMGJlM2EgcHkzaworNzI2MjMgYTY5ZTdjYzA0OWJiNWVjOTllNzg0ZTkzOTk2ZGVmMTRlMjgzMTlmNCByZWxlYXNlMzAtbWFpbnQKKzcyNjI0IDY3YmFmMmMxNzM2OWY4NGY2ZTZjMzg1OWQ5NDM5MTAyNzgyOTI4ZWQgbGVnYWN5LXRydW5rCis3MjYyNSBiMDVkNDc5ZDFjYjBhZGZhYmE4OWU4NTExOGFmZTE2MzBhZWE5NTY5IHJlbGVhc2UyNi1tYWludAorNzI2MjYgMzkxZGI4MGQxYWY0Y2YyNmNiYmIzYTljOGI0MzA2MDFiNzVmNTgwMCBweTNrCis3MjYyNyAzN2Y5MGYyZjQwMzQ5YThjZjBlZmZiNmFlODBkMTI0Y2EyZmQ4NGIxIHJlbGVhc2UzMC1tYWludAorNzI2MjggMWQwNDhjOWY0M2RjNjZhMDJiNjJjODdjNzIyYzk4ZDg1MGI4Zjk1MiBweTNrCis3MjYyOSBhYTc3ZmQ4NjI2YmE5Nzc3MTBjNzIzNjY4NjcyNWRmOTQ1Nzc2NTUyIHB5M2sKKzcyNjMwIGU5NjIxMjk2NjVkODA0NDc1YjJiZjExNjU2OWEzOWU1M2YzZjhkM2IgbGVnYWN5LXRydW5rCis3MjYzMSA5MGE4MTAyZDdlZmJkNjkwMGRkMTNhYjgwNmY2OTZiNWNjN2ZhZTA3IHB5M2sKKzcyNjMyIGM3MmQ0ZmNlMzAwMDU5N2RjMTI1OTEyMzA1ZGZhYTYxMzgwMWRkZjIgcmVsZWFzZTI2LW1haW50Cis3MjYzMyA2ZDY5MTQxNzdmNjAyNjZiNWRhMDQ0NzMzOThkNmMwNzU0YWRiOWNhIHB5M2sKKzcyNjM0IDkxMDMwOTI3NjM3Njc0ZGY1YjEzMjE5N2M4NmVjMGFhNmY0ZmY0ZWEgcmVsZWFzZTMwLW1haW50Cis3MjYzNSAwN2I1ZjIwZDAyNWE4N2Y3OTNiNmEzMTJmOTQ3MDdkZmFkNzFhOGFiIHB5M2sKKzcyNjM2IDM4ZTM1NDYwOWNmMmQ1NjYyZmZjODhjMDU5MjVjYmI3NTEyZDIwNDYgbGVnYWN5LXRydW5rCis3MjYzNyAyYTdjZTEzY2VhMjUwODNmOTk2MmVhZTFiYTc1MDlkZmQ3NTBiZWVlIHJlbGVhc2UyNi1tYWludAorNzI2MzggZTY5MTIwYmU2NWM0NTI3OTA5ZDlhMWYwMjkxMDQ5N2YxZDE0MDdjMiBweTNrCis3MjYzOSAwZmNmMmFjZGU0NzM2ZDJhZGUwOGY2N2YyZGUzNDNmNjlhYTlhNzI4IHJlbGVhc2UzMC1tYWludAorNzI2NDAgZTRkOTM3Zjc4OWExMTMxNGZlMWJkMmU4YjBlYWRmYzMxNGIwM2I3ZCBsZWdhY3ktdHJ1bmsKKzcyNjQxIDczZDliOTczNTQyNDhhOTBhODgyZjU0MWZmNzIxMTY1YzA4MTFhNDQgcmVsZWFzZTI2LW1haW50Cis3MjY0MiAzYzRiMWI0NTAxYzFiNGQ4NzIzMmI0YjRhODdiNDVhNTExNzVkNTFiIHJlbGVhc2UyNi1tYWludAorNzI2NDMgNmJlNTg1NGU1ZGY3YWFiYWQ2MjQ4NWE3MzE3YTc5MTA5MGMyOTE0NyBweTNrCis3MjY0NCA3ZTNkN2I1MjI0YjFlYWI2YWVhZDIyM2UwMjQxOTg5MjNhM2M0ZTk1IHB5M2sKKzcyNjQ1IDkxZWE4ZmNkNDU3ZTVjMTQyMzRiOTY4OGQ4OTZjNDQxZGMxMTAxMGYgbGVnYWN5LXRydW5rCis3MjY0NiBhYjMwYjIzN2I2MDAwOWI3MjdmOGNhYmM4Y2IyM2I1NGY5MmYwOGNjIHJlbGVhc2UzMC1tYWludAorNzI2NDggMTdkMTk0NjU0MGQ0Nzg3MTk2MDJlYTU0YmI2ODhmYWYwMTU0YzI4ZSBweTNrCis3MjY0OSBlZTIxNTY0OWZhZTA2MDhjYzRlOTI1ZjMzYTQ5MjhmZGVmMWMyYjQwIHB5M2sKKzcyNjU0IGZiMDE5NzE5NDlhNTU0NTUwMjBkNGVhMDM3MGYyNDYwOWQ3OGRmMTMgbGVnYWN5LXRydW5rCis3MjY1NSBlNDUxODZlZGFjOTE5YWRiYWE3NjQ5OTg3Y2YzM2VhMDExY2IzMWE4IGxlZ2FjeS10cnVuaworNzI2NTYgZjc2ZjIzYWYyMjk1YWU1MzY4NThmY2I1YTQzNWY0NTA2NzMyMzE5NiBweTNrCis3MjY1NyA5ZDUwMzcwNzQ0NGU0MTg3OGI1ZjZiODMzY2U2MzY0Mjc4NTc1NzZjIHB5M2sKKzcyNjU4IGI2MDBlNTEwM2M2M2UyM2ViZDZiODY5YjY5ODU1OGY0ZTA1YjAzZTQgbGVnYWN5LXRydW5rCis3MjY1OSBiMzNiNDI0OWIxODU4NTIyMDhjZDg1YTExZjk2MTU4ODVmOGQ2ZTYzIHB5M2sKKzcyNjYwIGUzZGZjZDFmZTIxMGQ2NTVlNjk2ZWM4MWYzYTQ4ZDQ2ZTBjZmE1NTkgcHkzaworNzI2NjEgYTdjMzRmNzI4ZjBlOGFkMTM5YWFmNTM1YTUyNmQ5ZjAxZjBmYzA2NyBsZWdhY3ktdHJ1bmsKKzcyNjYyIDkzZWQ2OGI5OTllNzU3Y2VlOTgyODI1NTMzNmFlNGQ1ZGQyY2VlZjEgbGVnYWN5LXRydW5rCis3MjY2MyA4OGQ5NjViZTg2MTcyNWRmZjIxNTM2MmIwYjAwMjhhMGJkYWU5OTBjIHJlbGVhc2UyNi1tYWludAorNzI2NjQgZDkwMmYzNDk0NDk5NjA4YzJlYzA0MzQ2ZGM0NjZmNzIxMGU0NjFlYyBweTNrCis3MjY2NSBkZDkxNThmYjA4Njc4M2Y0OGY5MWRjOTE2OWI0MmFjODE5ZTU3NDNkIHB5M2sKKzcyNjY2IDliYjJhMTM3MWRkYzQwMDUxOGYyMGRhNjcxZTU3ODY3NzUyMzQzMWIgcHkzaworNzI2NjcgZTVmMjg4NzZhZTZjOTNiYWU5ZTg3MGViNGQ2ODEzYjQ0N2I1YWU4ZCBweTNrCis3MjY2OCAwZDhkYjgxYTc4NmM2OGFjZjFhZmUzN2ExZWQ4ZGE3N2NkODc3NzczIHB5M2sKKzcyNjY5IGM0MGYxODdhZjZkZGJjZjc5OGExNzRhMmMzOGNiNjRkYzYwNzE4ZmUgbGVnYWN5LXRydW5rCis3MjY3MCA4NWZiNGMyMjlhOWNlYzIxYzgxMzU0NmUyOTg2NjYyZDY5OTBlNGUyIHB5M2sKKzcyNjcxIGI0MjYxZGE0ZWE1MGMzNzZmNDA4NDZmZTVlZTk2MjYxMDhiOThmMGEgbGVnYWN5LXRydW5rCis3MjY3MiBjZDRhNzgyN2VkYjY4YTU2OWQwZGM2YTVlNjI2MzRmZjZhZTg1ZjViIHB5M2sKKzcyNjczIDE4YjJmMmNkMDc0MWY0YTIzZDNkMGU5MjNhZmQ5YTQ2NjM1NGI2M2IgcHkzaworNzI2NzQgOTYxMDk0NzA1MzcwMjkwY2M1ZmQ3ODM4OWY4MjU2MDEwZDlhMWMzMSBweTNrCis3MjY3NSA5MGUyYmZlNGY2MGU3YTI1MjQyZDJiNWIyODE3YTg4YjkyNzU5ODY1IGxlZ2FjeS10cnVuaworNzI2NzYgMzRiNjBiNzM2YWQzM2Q1NDgzNjY1ZTlkMDM5ZDdiMTU2YzIxMjI4MyBsZWdhY3ktdHJ1bmsKKzcyNjc3IDJjYTExOGNhYWU3MTZhN2M3NmQ5ZjBiOGRhZWY4YTY1ZTAxNzNmZGEgbGVnYWN5LXRydW5rCis3MjY3OCA3OTA5OTJiZWRkNjFkMWU3YWZjMTJmZGNlYzg1YjY0YmZlMGQ1YjlkIGxlZ2FjeS10cnVuaworNzI2NzkgOGU4ZTg3YzFlY2I3ZWM1N2RlMTUwM2MxZDRlMDgxMTk5N2Q3MmZjNiBsZWdhY3ktdHJ1bmsKKzcyNjgxIGQ1MTRhOGI3YWU3OGFlMmFiYWM1MGQ3ZTIzMzdlZjdmYTZhMmQyZGQgbGVnYWN5LXRydW5rCis3MjY4MiA0M2ZjNDVkM2NiMjE2YjVlNTQ4NjU4MTNlOTk1ZWFhYTE5YzE3YTliIHJlbGVhc2UyNi1tYWludAorNzI2ODMgYWM2NjBlYTM1ZjUyNWRhMzYyYzFiYjYwZmYyYzUwYzU1MWE5YzRkMiBweTNrCis3MjY4NCBjM2Q0ZDkzYzg5ZTI1N2VlNmNhMDM5NmFiMTdlOGRmMzk4NWQ4YTQ5IHJlbGVhc2UzMC1tYWludAorNzI2ODYgZjFiZjUzODc4NmI3YzllYmI1YzIxYTUxN2UwZGNkZWJjODljZDlmYiBsZWdhY3ktdHJ1bmsKKzcyNjg3IDk4OGNhOThkOTE5NjJiZmIwMmZlYmE2NGFhNjFiMDQzY2I5MWM3ODggcmVsZWFzZTI2LW1haW50Cis3MjY4OCBjYTc4NDdkM2M0NTE5NGYwYjg5NGNmNDQ1NGIzZmYzZWJjNGI1OTlmIHB5M2sKKzcyNjg5IDFmOGFjY2QxZjQyYWQwMDRlZmJjMmQyNWNhODVmNDhlNzgyYmE3MGYgbGVnYWN5LXRydW5rCis3MjY5MCBhZTAwNjM4NmVjMzkzYjI2MzRmM2E2NmZmNjM0ZTAyZGI3NjljNTMyIGxlZ2FjeS10cnVuaworNzI2OTEgZjlmOTk3YzFmZDgxM2M3NTMwYTU1NmFmNjYwYzE2NzdmN2U3ZGZmNyBweTNrCis3MjY5MiA2OTU2N2EwNWQ1ZTY1NzM2ZGMzMDRiYjc5NTdkOTkzODRkY2EzOWZiIGxlZ2FjeS10cnVuaworNzI2OTMgM2FhNmE4NjNmZjA2OTFlNThjZGIyNTkyYjJjNDA1MjJlOTlkZWI4NyBsZWdhY3ktdHJ1bmsKKzcyNjk0IDFjYjgwNGEyZTAzODc5Njk3YTJkNGFhODk5MmIwZGY0MmVkYmRlNjggbGVnYWN5LXRydW5rCis3MjY5NSBhMTk4ZThkMzZlYzNiNTc4MDFjZjI5MzIyZTM2MzUwNDdkNWU1ZmY5IHB5M2sKKzcyNjk2IGE1MzU5NjA5NDQ0NDEzODZlNDQ0N2Q4MGU4N2UxZTY0OTI0ZTAzMjEgbGVnYWN5LXRydW5rCis3MjY5NyA4M2RkMmIyNTJhMjc2NDZjOGFhMTU2Yzk0OGIxMTZiOTRmMzI4Mjk2IHB5M2sKKzcyNjk4IGQ2NGQ0N2VlNTRhMTgxNjhmZDkyZjJlYjQxMzM4ZWMyYzAwYmU2YWMgbGVnYWN5LXRydW5rCis3MjY5OSBkY2RhNDQ4Y2E2NmU4NzI2YjY2OGY2ZWU0MDZjYjRlN2NjZjIxYmQzIGxlZ2FjeS10cnVuaworNzI3MDAgMGUzYWNlOWY3NTE2ZGI0ZmY1ZGY5M2I5MDNmNjFkZDI4MzExZjU4YyByZWxlYXNlMjYtbWFpbnQKKzcyNzAxIDc3Y2ZlZjU5NmQzMzUwYjU5NzAyZGYxZDQ1MzJlM2JkNzEwMmM1OTMgcHkzaworNzI3MDIgOTAxYjRmZmZlYTFmODBkZWNhYjcyNGUzNDMyNjg5ZmM3NTI2N2YxMCByZWxlYXNlMzAtbWFpbnQKKzcyNzAzIDliOTJkMmI4NmJhYWVmMjExNGUwOGY4ODBlNWRlOTQ3YTkyNzgwMjEgbGVnYWN5LXRydW5rCis3MjcwNCBkMjczMmVhOTliYTA4ODgzZjU4Y2MyYjRjY2I1YjY5YWM3NjNjNTIwIHB5M2sKKzcyNzA1IGU4ZjFhMDA3NzcxYWE5MGI4ZjA5MmM5NTEyMDMyYzRlZjAyMTUwNTAgcHkzaworNzI3MDYgYjIyYjJkYWFlYjQ0ZjM5ZTliMzI3NGNjZjA5YTExZTlkZTNkYjAwNCBweTNrCis3MjcwNyBkODQxZjk3MjQzYjU3NGFkODUzM2U2OTQwODc5MDk4OGUyYjZhZmMwIHB5M2sKKzcyNzA4IGI1MmI5MmYzMWZhODg5YzFhNTQ4YWVlZTFiY2YwYzc2YWQ4YWVhM2QgbGVnYWN5LXRydW5rCis3MjcwOSBmNDNmYzExOTNjMmFiMzg4NDc1NjlkZWE1OWQ2NzAwOTBlOTE0ZDU5IHB5M2sKKzcyNzEwIGU5YzA4ZmZhOTg5NTEzNWE4ZTFkOTMyMTAzN2E2MTUzYTY5NTAyZTEgbGVnYWN5LXRydW5rCis3MjcxMSAxMGNhMTFlNTk4ZTY5M2NmMzcyNjgyNGNjNzA4MjNjYjBiMDY4MmM2IHB5M2sKKzcyNzEyIGM1Yjk4MmFmMjA5ZDdiYzM4YjM2YzkwMmQ3OGFiM2NjOTBiMjJiMGUgbGVnYWN5LXRydW5rCis3MjcxMyBmZThkM2ZkNjZkMjY0ZWMyMDkyM2FmOWRiZDg4Y2Y2ZmQ5YmFjNzA4IGxlZ2FjeS10cnVuaworNzI3MTQgYjZiNDU0YjA2YTdiMzVjYTExYTBhMjY1MTY3ODZiNmI1MzlkZjcxZSByZWxlYXNlMjYtbWFpbnQKKzcyNzE1IGZjNzkzNWRlOGU4YWRhOGM2Yzk0ZDM1Mzk2OGU1YTc1YWJkNjE1MTUgcHkzaworNzI3MTYgZDQwNzI5NzU1ZWRmY2MyNzJlZWNhZDNmMDE5MDAyMzQ4OGZhMzhkOCByZWxlYXNlMzAtbWFpbnQKKzcyNzE3IDM1YmNlODBhMjVmODk5ODZhZWJjYTE0NzgyZjI0ZjM1NWI5NTQ3NTcgcmVsZWFzZTMwLW1haW50Cis3MjcxOCA5OWI0MDA4NjE1NDNlYTQ0MjE2N2NmOTZmOTJlMmM4ZmMyZWE5YTQyIGxlZ2FjeS10cnVuaworNzI3MTkgYWRiYzY2MmZmNGMxZDI4YWJiZDA1MjFkYjU3MmEwZmMxYmExN2Y1ZSBweTNrCis3MjcyMCAwZThjOGIwZDg2NjllNDlkNTgxYjU4NDIwYjNlMjhjYWJjZDcwM2M0IHJlbGVhc2UzMC1tYWludAorNzI3MjEgZjI1MzgxODNkMjYyMWZhMDA5YWUyY2RkNzJkMjgxMWIzMzNlOTFkNSBsZWdhY3ktdHJ1bmsKKzcyNzIyIDlkODFlMmM0MzhkYjk3MWI1Y2IwOWE5MDVlZWIxYWYzYTE2YThmZTggcmVsZWFzZTI2LW1haW50Cis3MjcyMyBlMjIxNzM2MWViMzdhN2JjODRmMTcxMjZlZGM4ZjZlZmFkODJjMGVkIHB5M2sKKzcyNzI0IDEwOGU5MGI4OTIzZWEyZWE5NWNlMGNiMTg4OGNiZWM5ZDEzMjZlNWUgcmVsZWFzZTI2LW1haW50Cis3MjcyNSA4MDZlZjNhMWY4NThkMTQyNmJkYzMwYjQ5M2QyNDlkZDlhNmI0YzI5IHB5M2sKKzcyNzI2IDM2NzhiMmQzNjBjNjk4NTQ4OWQ1MDYxMTk2OWIzYmM4MTU2MTEwODggcmVsZWFzZTMwLW1haW50Cis3MjcyNyBkZjM4MjY0NzJlM2JmOTFjZGVkN2I5NDBlZDJjNWI4ZTg2ZGIyOWFiIGxlZ2FjeS10cnVuaworNzI3MjggZjBiMDlkMDUzOWMwOTk1NzRmODU0MjU5NWJkMTkxOTBjZGFlYjA5YSByZWxlYXNlMjYtbWFpbnQKKzcyNzI5IDU2YWRmODY0ZjM4MDhkZDIyOGJjYTg0YTlhOTg5ZGY5NmU2MWRmNjEgcHkzaworNzI3MzAgOGZmZWFmNjQ5OTcwOGVkNmY3NmNiMDM0Y2RhMzhjMjIzZjQwMjk1NSBsZWdhY3ktdHJ1bmsKKzcyNzMxIGMwMDliMmIzNDgxZjljZmM1ZWQ2MjE5OWE1OWUwMDQ0NGJjM2NmMmQgcmVsZWFzZTI2LW1haW50Cis3MjczMiA4NzgzMDQ2MWFiNDI5NzJjODFmMzZlMjZlOTBhZGI2YWRlZTkyZDRlIHB5M2sKKzcyNzMzIDc2YTlmOWNiNDM4ZjUwOTNmM2ViMDYxYWQ2YmNkM2JkY2FmMDljNjMgcmVsZWFzZTMwLW1haW50Cis3MjczNCA3MTE2ZGUzZGJlOTgzYTZkZjM5NTI3YzBlYjIyYjUwMWM2NGMzMGU3IHJlbGVhc2UzMC1tYWludAorNzI3MzUgZjY1ZGUzNmYxODVjNWNkNTAzZmQ2MDI0ZDMxNDc1Y2ZhODc3OWYyOCBweTNrCis3MjczNiAxNzhmNzBmYzQ3OGQ3OTZiNmE5YTllZTI3YzhjY2NhMzMyMTMxY2U5IGxlZ2FjeS10cnVuaworNzI3MzcgM2JmZGI4ZDcyNTYwZmNmYjJkYzdhMGEyMzk1OTM0NGEwNDE2ZThhOSByZWxlYXNlMjYtbWFpbnQKKzcyNzM4IGZiNTlhNTI2NGFlMjVjOTUwODhiNTViMzQ3Njg4YWZlYmJhMzg3ZDAgcHkzaworNzI3MzkgODFjNTc5MDBhMTgyNWE4MDNhOGZkOGJhMDUzZjA2YjhlZTM4YmQyOCByZWxlYXNlMzAtbWFpbnQKKzcyNzQwIGZiYjMzMzkwYjI1NDliMmY0ZTA1MDk1YzY2ZThiMWU4ODdmMTdiZmMgcHkzaworNzI3NDEgOTA0YTFiZDM1ZTAwODkyYjU0Yzg3MGY0NGVlMjJhOWU1ZmYwMjU0MCBweTNrCis3Mjc0MiBkMTQzZWI2MjRjZjVlMmZiZmI5YzJkM2ZiZTJmZjAyMTRjYTMxYzE0IHB5M2sKKzcyNzQzIDc0YjY3NDhiNjNmNWZjYWIxZjMwZGI3N2ZjNmZkMDQ1NjNhOWZiMjIgcHkzaworNzI3NDQgZDA5OTRhNDJiNTk3NWIyNjBlNzViODAxMzA0ODdhOGE3YzFhNjUxMCBweTNrCis3Mjc0NSA0MWE2OTI2MjdlZWIzYzUzMzgwNDdmMTQ3YTE5Y2Y3Njk3YWFmZGVmIGxlZ2FjeS10cnVuaworNzI3NDYgN2NiMGE0NTQ3ZjBhMGY4MzJiZjY2ZTczNmMzZThlYjZhMzJjN2UzZSBsZWdhY3ktdHJ1bmsKKzcyNzQ3IDBmZmM5NTU4N2Q3YzQ1NjAzNDA1YWJiYzg5NzA0NTFjOWYxNWJjNDggcmVsZWFzZTI2LW1haW50Cis3Mjc0OCAxN2QwNzhjNWQ2NWI1MjI5OWYxMWJjYzg2ZjU0MDZhOTU0YTRlYjk1IHB5M2sKKzcyNzUwIDU4ZDNjNDU0YmMzNzI0MzhiN2EyODE2NTZiNzM2N2ZiYWExNjhkNjMgbGVnYWN5LXRydW5rCis3Mjc1MSBmOTM1Yjk1OTgwMzk4ZDBkMWFmNDI1ZjEyMWZlYmUxMWZjZGJhYWVhIHB5M2sKKzcyNzU1IGE3YWQxNjk2ODY2YjRkZDk2OTJmMWQ0NTExYjhkMDY3OWNiY2MwN2YgcmVsZWFzZTMwLW1haW50Cis3Mjc1NyAyYjdjYjQyZGRlMTE2N2YwNTc3NTcwNTg4NDU5OGM0ZjA2OTZiZjBmIHB5M2sKKzcyNzU4IGUzYmI2YjYyYmQwZjUwNzVkNTdjOWUzMWMxNGUyYmY0YmY2MWI2MzUgbGVnYWN5LXRydW5rCis3Mjc1OSBkNDczZmJhNGVjNjc1N2IwODU0MDM4MjRhZjFkMGM2ZjkwNDc2MTczIHJlbGVhc2UyNi1tYWludAorNzI3NjAgOTRkMjgzZDNkMDBiZjc0YjcxNzUwNzQwYTI5ZDVmYzM0NDYxMDkxMiBweTNrCis3Mjc2MSA2YTM1OWZkMjQ2NjkzZjQ5YWY2NDBiMGMzYTIzZDY2NTFhYzc1MTVlIHJlbGVhc2UyNi1tYWludAorNzI3NjIgMTcwZGRmOTYwZmRkZDhkOTM5MjA1Nzk0MTg5OTc5NWY1Njg3NDcyOSByZWxlYXNlMzAtbWFpbnQKKzcyNzYzIDcxZWM0ZmM2ODNhZjkyNjM0YmMzMDk3MDgzOTBiYTkxOGNkNjA5MzggcmVsZWFzZTMwLW1haW50Cis3Mjc2NCAxNDNhZWNjODBiNmI2ZDViMDM0MzU2YzlkN2FkNmYwMGYyNWZjMjNkIGxlZ2FjeS10cnVuaworNzI3NjUgMmQwNmEzMmExMmUzNzA2ZmUwYjVkMzFjMDY1Y2ExNDEyNDkwZTMzOCByZWxlYXNlMjYtbWFpbnQKKzcyNzY2IDczN2IzZDRhY2JiOWZiNzAxN2FlNDJmZThjMDYzZjdhMmRmZDllZjQgcHkzaworNzI3NjcgNjhkY2U2NTUwNmQ5ZmFhYjAyNmQzZDRkNmRmOTU1ODhiM2U4OTJkMSByZWxlYXNlMzAtbWFpbnQKKzcyNzY4IDhkMjYxYjc2ZGE0NmJmOTRiNjBlZjFmMzBlMTIzMGVlYWYxMzE4YTIgbGVnYWN5LXRydW5rCis3Mjc2OSBjZWU4MGQwNmY3Y2U5YzQ2MzhhZGZiMWFlZjViOGNlMWMwOTZiOGRmIHJlbGVhc2UyNi1tYWludAorNzI3NzAgOWEwN2U5ZDYwOTNhZGE0MmUxMWQ0OGQwMjdjNjA5NjlkZWNiNzFjZSBweTNrCis3Mjc3MSA3ZmY3YmVmMzI5MTE2OTQ0MzFjMTc3MGI1ZmI3ZDY1OTc0YTViNWY1IHJlbGVhc2UzMC1tYWludAorNzI3NzIgMDBlYmJmMWNlOTM2MDI2ODAyOWEyYWYyNzk5ZjZiYTEzZWVlNmYyZSBweTNrCis3Mjc3MyBhZTIwZjFlYmVjMjFjY2VhMzg5MzhhNmJmNjgxNWUwMGIwYjJjZTUzIHJlbGVhc2UzMC1tYWludAorNzI3NzQgZGFjYWQ0MjgzNmRkNjAwYzc4OTRjMGY0OGFhNTBkMDJjZjI1Nzk4MSBsZWdhY3ktdHJ1bmsKKzcyNzc1IGMxMzY4ODdkYjdlZmY0Y2IwMWZjM2UxZTM0ZGM1ZTk5ZDg2NWI3YzkgcmVsZWFzZTI2LW1haW50Cis3Mjc3NiBkODM1MGQwNDRjZjIyOGNkNmY5ZjdjZGI3NjcyMzFkMzEyMzMxNDExIGxlZ2FjeS10cnVuaworNzI3NzcgNjM5NTM0N2MwMjc2MjZhZDNmZDdiNWQzNTA3NzllOTU4NzI1MTJlOCBsZWdhY3ktdHJ1bmsKKzcyNzc4IDk0NWM2NTc0NDdkMjFlNjY3OGQ4NDU2NTBjMDllMWNlZmRkMWMyMjQgcHkzaworNzI3NzkgOGYxNzM2M2I5M2U2ZWQxYzRhN2NiMjZmMWI2NjNkMjJkYTI5MWY5ZiBweTNrCis3Mjc4MSA4ODNhY2U3ZWE0NDY2NjQwZWExZTdmNmU2MzQxZWI2YWRlZTk1NjMyIGxlZ2FjeS10cnVuaworNzI3ODIgMjkwMWIxM2ZiZDdlNjJlNGY2YjIyOGJmOGNhMmEyYjgzODQyYzVkOSByZWxlYXNlMjYtbWFpbnQKKzcyNzgzIDkzOTRhODJkOGRlMTY5NWYyZTE5OGI0Y2EwMzM2MjMwOTdkOGM0ZjUgcHkzaworNzI3ODQgNjllOTQzNGU0NTBhZGViZGNhMmE3OTE2MmVmNDM1MTMyMjk3NDcyNSByZWxlYXNlMzAtbWFpbnQKKzcyNzg1IGY3NjUwYTBlOTBhZGI1ZjZjODRmZjQyYTEwYzRhMjFkYmM0YTE4YjcgcHkzaworNzI3ODYgNzRiZGIwZTUyMTJiZGYyMjE2ZDUxNGEzNzdlYjY0Njg1OTExZWY5YSBsZWdhY3ktdHJ1bmsKKzcyNzg3IDc2YzQ0MTRkMTBhNmMxYzE2MmU0NTQ1YTNjMGU1YzRjNTIxODExNjMgbGVnYWN5LXRydW5rCis3Mjc4OCA2ZmQwMDllYzIyNGE3MzlmOGZkMWRkY2MxNTU5YWMxMGZhZjUwYzQxIHB5M2sKKzcyNzg5IGFiMjNmZjIwNDdhYTBkOGE5YTk1ZDY0NzQ0ZDY4NmUyMDFkYjExN2EgbGVnYWN5LXRydW5rCis3Mjc5MCBjN2ZkNzQxYzcyZWJlYmRmNGMyYTQ3YzljN2VkMWYwYTM2MmU1NTc5IHB5M2sKKzcyNzkxIDA1NjI4M2E1YzVkYTAwMmVkZGExZmI2ZmY2ZGIwZTA2YWM3M2U1ZmUgbGVnYWN5LXRydW5rCis3Mjc5MiBmMjc1ZDZhMGExZDE3Nzk3M2U0MTQwYWJhMDMxMTk0MDZjOGYxMWU5IGxlZ2FjeS10cnVuaworNzI3OTMgNmZhYjhiZDE1ZDcxMGQ4NTE3N2ZmN2YxYmUyYTgzZjViYzAyOGNmMyBweTNrCis3Mjc5NCBhNTJjZWNhYmZmZDRjMzI4MDAxMDQzZTU5NGI4MzFjMzRiYTQ0NGNlIGxlZ2FjeS10cnVuaworNzI3OTUgYmRkZjExZTYyMjAwMDJhOTJmNjU2MDA3MGI5Nzg1N2RlZGI2ODM0YyBweTNrCis3Mjc5NiA0Y2VlZWZiODU1NWU2MzlhYTlmODg3ZTQxYzE0ZWMwZjIxYzJjNmJmIGxlZ2FjeS10cnVuaworNzI3OTcgYWQ3NzIyNjExMWIyNjMwYWRiMzY1NWIzZDVlMTYzMTQwYjE3MjYyYiByZWxlYXNlMjYtbWFpbnQKKzcyNzk4IDA4M2JhMjQ5MDVhZDkxOTc4MjhmMjRhNTYxZmRkZjYzMWNjZDBmYjUgcmVsZWFzZTMwLW1haW50Cis3Mjc5OSA0ZmE0Y2E0NTAzYzhkZjYxZTc5YmUwNGQzNTBiYWQzOTY5Mjg2ZjZmIGxlZ2FjeS10cnVuaworNzI4MDAgN2UyYTZjMWRjOWQyMjM2M2Y5MWI5MmNhZWE0ZjNkZDU4YmRjZTk2MCBweTNrCis3MjgwMSA2ZTQwYWRkM2VlMDJhN2FlY2MzMDc2MWVhODU3NjQ5ZWU5NzgzN2QwIGxlZ2FjeS10cnVuaworNzI4MDIgMDIzYTM0MjhmMWFlZjY4ZDQ3ZmFjNzIxZDJhOTg1NDBiOTg3OWU4MiBsZWdhY3ktdHJ1bmsKKzcyODAzIDY3MGZhMGMwZmY5YWYyZTY3MTFmZmRmN2RlM2M4MDcyNjFhZGU4NDQgcHkzaworNzI4MDQgODkyMTMwNGI1ZjkyMmE0MTViZGI3YTBkZDI0YjBiOTcwMmE4NmRjMSByZWxlYXNlMzAtbWFpbnQKKzcyODA1IGQyY2NkODllOGU2Yjk1MTNkMmU4YzY0OWVkNjZlOTJhOGI4MDI2OWIgbGVnYWN5LXRydW5rCis3MjgwNiAzNzllNjNiY2JkMDQ0OGY2YTIwNjcxZWM2OWUzODI0ZGQ0ZWY4YWViIHB5M2sKKzcyODA3IDkzZjRhOWFkMjZmNjhkMzNiZjgxYjgyYTA5MzRmNjQxMThmYzE0YmYgcmVsZWFzZTI2LW1haW50Cis3MjgwOCBiMzMyNmZlNjMyZTVhNzkzZTE5NmQ5MTRlZDM4MGMyYTZiNTQ2MDYwIHJlbGVhc2UyNi1tYWludAorNzI4MDkgMmQ2ZmZmOWZlOGFiNzM2ZmYyMWE1OGFhZjllNmZlNTliZTBhOGQ0YyBweTNrCis3MjgxMCA0NTAxYjYzOGZjM2YyOTQwZDMyYmViNmFmNjYxNWZiMWI3Nzc4ZmE3IHB5M2sKKzcyODExIDlkNjQ1N2YzYTNlZGY0NWEwZTJjOTQ5ZWZiMGZkNDhkZjUzNjVlZGMgcmVsZWFzZTMwLW1haW50Cis3MjgxMiBlYjliMWFjM2Q5ZDg3MDQ2ZmVmY2U1NjY4Y2YzMGExOWFlMjNlMWQ4IGxlZ2FjeS10cnVuaworNzI4MTMgY2MwNTU3MzU2MDE0YmQ1ZWJkN2YyYTc1MWQ3M2U5ZjY5YzEyNTRlYiBsZWdhY3ktdHJ1bmsKKzcyODE0IGQ2MWFiMDQ0ZmRmNGQxODBiNTRlNDE4ZDc0OTk3MWI4NDFlMDEwZWEgcHkzaworNzI4MTUgNjA0NDQ0NTAyZWEwMjc3ZjM4ODAzNTg0MjA1ZTVkOThmNTI3ZGMxZCByZWxlYXNlMzAtbWFpbnQKKzcyODE2IDJjMzViODE2YWMwZGFhZGFiOWMwYzA4MjBhZWI2MWRhNDFkOTUwNzUgcmVsZWFzZTI2LW1haW50Cis3MjgxNyAxYjYyYmZmZDJlZjJlMGQ1ZmUyYmZhNDI4Y2NlOGJkNjg2ODNlOWMyIGxlZ2FjeS10cnVuaworNzI4MTggNDJkYmJlZTY2YzMyMmFjNjQ1OTBmNTFjMjRkNmNmOGQ5OWIyYzQ0NiByZWxlYXNlMjYtbWFpbnQKKzcyODE5IDRmYmNlNmQzZmU4NjFkZTdjZDVhNzYwYzk1MDc0YjE5YzhiN2JiZmMgcHkzaworNzI4MjAgZmFlM2E3N2QyMDMyMTkxOTdjMGM2ZTkyYzk1OTY0ZWM4YjRmZDBhZCBsZWdhY3ktdHJ1bmsKKzcyODIxIGI2NmRhZmI0MDY0OTQzMzVlOGIzM2VlNWIxMjRjNTIwMDY5YjNmZGUgcHkzaworNzI4MjIgNjA3NGZiNDExNjIxNmQxMjNlN2FlZTk2Nzg2ODY2ODUzYzBiMWU2OCBsZWdhY3ktdHJ1bmsKKzcyODIzIGM4M2ExNzJlZTkzMWU1NzljMzcyYzhiOTY5MGEyZjBmNzA3ZjJhMjIgbGVnYWN5LXRydW5rCis3MjgyNCBkZmU4OGQyMDIxODBlZGQ5ZmY1OWI0NTNmNWJmZWUxM2RmNjI0N2ZlIGxlZ2FjeS10cnVuaworNzI4MjUgYWFiMTE3ZTZiYjE2YzI3YTJiMTAxYTU4YTBmMmVlNzFiM2MyN2FhMCByZWxlYXNlMjYtbWFpbnQKKzcyODI2IGM0MDgwNzQ3M2EzNzlkNDFiM2IzNWZiM2E5OTA2OTY0ODY2MGFiYmYgbGVnYWN5LXRydW5rCis3MjgyNyA4NDBhMDlkZTY4YzNkMTQ1OGRkZmU1NDkyNDE2ZmU1ZTViMTVhNzMyIGxlZ2FjeS10cnVuaworNzI4MjggZjIyN2ZmMzRlMzNkNDhmMjM0MWU1M2RkMTUzOTliOWM3N2NhOTkyZSBsZWdhY3ktdHJ1bmsKKzcyODI5IDM1NDA0NWJiNzMyNjE1ODliZGUzNTNkMTczZjAyY2I5NDM0ODI2MGUgcHkzaworNzI4MzAgNzNkYzcyODQ5ODUzZDE0YTE1NjA3YTRiYmRjM2YxOWNhY2Q0OGI2ZCBsZWdhY3ktdHJ1bmsKKzcyODMxIGRjNDdmN2M2NWQzMDhhZDk0YTA3OGU4NTY2ZjMxYjEzNDkwMDgwNTIgcHkzaworNzI4MzIgNjM2NGU5MTFlNGNiMzYxZmVkNTQ0OWJhNDI5Y2NhYjhiZjczNTg2NSBweTNrCis3MjgzMyAyNTljODY1NWM1OTIzMDNhNTRlMDI3YjAxMjhkNjViMzU2MWQ3Nzk3IGxlZ2FjeS10cnVuaworNzI4MzUgOTg3YmI3MzRlMzc2YzE4N2Q4MWI1MTBmNDk3MmM1NjMzZDk5NWFiYyBsZWdhY3ktdHJ1bmsKKzcyODM2IGU1ZGQyNDI5YWNiMzNlYWEwZGJmNmMxOWFhYmYzYWI2ODQ3ODVmM2UgcHkzaworNzI4MzcgOGJlZDZlNmJiOTg0MmIxZDM2MmQ0ZWZhZjAyNmIyMTQ3NWU4ZWU5YiByZWxlYXNlMjYtbWFpbnQKKzcyODM4IGQwZWE3OGU5MjRhNjkxYWE0ODhkMTg1ZWZmNDcwODNmMjEwMTg0MGYgbGVnYWN5LXRydW5rCis3MjgzOSAwNGE0YjdkZjJkNGQzMGY2OTE2ZTNmMGY2ZjMwODMxYzMxZDUyZGRiIGxlZ2FjeS10cnVuaworNzI4NDAgYzhlMWQ3ZjIyNTJjNGYwYzQ4ODRhMjQ1NzA5OWQ1OTI2ZjNjNDBkMiByZWxlYXNlMjYtbWFpbnQKKzcyODQxIGYyNDU0ZDcxMjk4YWNkNTlmM2NhMjQ5YjA1NGVmYzZlNWQwYWFlODQgcHkzaworNzI4NDIgYWIxYjVhYzM0NGQ3OThjODE0MjM2YjQ0MDY5OWUzMDk1Yjc1NDI4YyByZWxlYXNlMzAtbWFpbnQKKzcyODQzIGViMjBjOTUwMDZjNzYzYzNmYTJlYzljNzdhNWNhOWYyMjc3ZGZhN2YgcmVsZWFzZTMwLW1haW50Cis3Mjg0NCAyNTNlY2FlNjQ3OGE0YzU3OTVhYmRlNWY4Yjk1MjE5MWEzYWQ4NzE3IHB5M2sKKzcyODQ1IDQzNWJjYTA3ODFlM2RiYjgwNjU2NDMzNjY5YWY5ODQzYzE1NGZjNGEgcmVsZWFzZTMwLW1haW50Cis3Mjg0OCA3M2Y2MjczMWIxZTZlNGU5ZDQ1Y2M3MzczYjBiYzY0ZGE4N2FiZmQxIGxlZ2FjeS10cnVuaworNzI4NDkgZDJkMDI4ZjY1YzdjNjIxNGY0YjNlZDVmZGFlMjdjNDAyMzAxNzFjYiByZWxlYXNlMjYtbWFpbnQKKzcyODUwIDJiY2FjMDhjZmM2ZGJkOTY2ZDY2OTljNzQ0ZTAyOGZkNWViODk0OGYgcHkzaworNzI4NTEgZTk2NTczZTdjNTE4N2RlOGE3ZjgzNDFkMDY5NWYzMmMwYTViNGY1MSByZWxlYXNlMzAtbWFpbnQKKzcyODUyIGMwOGJiYjg0MDYyZTAxNTVkNDUyYzhkNzBiZjMzNzc1NTc5MWM4Y2MgbGVnYWN5LXRydW5rCis3Mjg1MyAzZTdiYzc0OTM0YTFjNzA3NjY2MjQ4NzcyODM0ZDgxZTNiNjgyOGE2IHJlbGVhc2UyNi1tYWludAorNzI4NTQgZDVjNTgyZjQ2YmM5NGM4YzQ3MDI1MDEyYTBlMTM5ZmUxNmIwOTA2MCBweTNrCis3Mjg1NSA3Y2MwZmIwNzY4NDcxYTg0YzY5NTg0NTVmN2EwOGY1NmMzNGU0ODdjIGxlZ2FjeS10cnVuaworNzI4NTYgMWI2ODlkNTc4ODhkNTVlNTExNGJmNGI0NjMwMjZmMDFkYjYzZjFjYiBweTNrCis3Mjg1NyBlMDY0NTRjMmNjMGJmZmFlY2I0MjFlODMyZmMxYmE4ODM1YjA1MDdiIHB5M2sKKzcyODU4IGIxZTM1MWNjNTliNzQ3NWEyNmQwYTllMTE3MTllYTQ0ZDAwOWRjOWMgcmVsZWFzZTI2LW1haW50Cis3Mjg1OSA1NGJiZmQ0MWJlNjY4ZGZjMjNjMDgzNTEwMjExYWNjZGE3ZTU0MTMzIGxlZ2FjeS10cnVuaworNzI4NjAgOWZkMWQ1NGY2MTdjZjBmN2RjMDQ1MDgzNjk2YjM3YjUxMWM5MjA1NyByZWxlYXNlMjYtbWFpbnQKKzcyODYxIGRkYzlhMTZmYmVhOGRiOWFmZGE1MmQ4NWY1N2FmMGFmZDM1M2RlNGUgcHkzaworNzI4NjIgZTc4ZTBiZGJiYWM0ODE3NjhkYTAyNThhY2MxOGU3MzRiYzRkMmExZSBweTNrCis3Mjg2MyAwYTc4ZWZmYjVlMGI1MjA0M2YyYjQ3OGI1MmNiOTU4ZTkzODQxMDA4IHB5M2sKKzcyODY0IGJmMjg0MzA4ODU2NzE3ZGIwNGQ5ZGU1ZGZhNDQyYzFmYjQwZjlkYmUgcHkzaworNzI4NjUgZjlkMjYwOGUyNGU4YTM3YjRiN2ZjZmI3ZTY4MmU0NjBkZjFlNjdiYyBweTNrCis3Mjg2NiA5OTdlZjY4YmZhMTUxNzkwZDdlMTgzZmJjZTdmNDFhOTE5MDI5NmQ0IHB5M2sKKzcyODY4IDMzYTdjYjIwZjU1OGNhNTNjNTA4MTBmNTQxMGFiOWNkOTlmYzQ1Y2EgcHkzaworNzI4NjkgMjUyZDgxYTRmNjlkMmVjYjY0YWFmOWUyY2NhMzJmODE2MTU3ZDIyNiBweTNrCis3Mjg3MCA4NDYyNzdhNDIyNDkxMDQ1NTgzZDE3NWM0ZWZkODkwZTRlNTJiNDcxIHB5M2sKKzcyODcxIDE1MDk4NmFiM2RiMjg0Y2ZkMzhkNjdhMWFjZTJmMDRjMjc4MGJhZTQgbGVnYWN5LXRydW5rCis3Mjg3MiBiMjc4YjRiZGZmMWUyMjM5NWM1MGVkYTRmM2U0Nzg2NzU1OTUwNzY5IGxlZ2FjeS10cnVuaworNzI4NzMgZTE3YzE4YTZjYWVjNDc1ZGM2MzhlOTE0NjUzOGUxYzc0ZWU4MDRmMiByZWxlYXNlMjYtbWFpbnQKKzcyODc0IDg5NjMxZjYyNzgxMGU4ZDYyMjFlNzdiZmNjZDUzNTA1NTZlZWZkOTkgcHkzaworNzI4NzUgYmQyZmIxYmUxMzBlZjRmYmYzNmI4N2U4YjQ5MDZmODRlMDUxNjAzMSByZWxlYXNlMzAtbWFpbnQKKzcyODc2IGRiYTc2N2JjMzE1NWZkMmJhNDM2ODdmZmNkNzQ2ZTllOTZkYmJjZmMgbGVnYWN5LXRydW5rCis3Mjg3NyBmOTlmM2Q4YzUxZDU4ZmJmMGY0YzBkMzExOGUzNTZkYWVlYjNlMWViIHJlbGVhc2UzMC1tYWludAorNzI4NzggZDljZTNlNzQwNjc2NTU2OThiYTA2Nzc5NWU2YWE3OWJjZDdhNjU1MSBsZWdhY3ktdHJ1bmsKKzcyODc5IGRkZGY0MjRiZDY2OTY4YzA1OTVkNDJlZjQ0NGZjNWY2NGQ1YmUxM2QgbGVnYWN5LXRydW5rCis3Mjg4MCBlN2I0YTQ0M2Y3NjRhZWZiZGUxZjFhYmYzNGFmYWRkZWZjNjJjZGYzIGxlZ2FjeS10cnVuaworNzI4ODEgNjFiYmU1YzkwNTFiZmVmMmMzOWFjODIzOWI3NDE1MDEyNWUyNzcwYyBweTNrCis3Mjg4MiBhNTgwYTJlZTMxMjg0Mzg2N2U0NmQyNDkwNGQzZjJmZGI5OTA5MzE4IGxlZ2FjeS10cnVuaworNzI4ODMgNjI1YTAwNmEyNTNiOGYxNjQxZGU4ODA2NzE0NTZkOTI2YTg0MzFmNyByZWxlYXNlMjYtbWFpbnQKKzcyODg0IDk4OTc4ZTRmZDYwZmExY2M3NjIxNDk1ODgxMjdjMzlmYTZmOTQ0ZTggcHkzaworNzI4ODUgODMzZTQ2YzE0OTliZDc4MTJhMTNhMzY2MzY2ZDU5YzFlNzQ5YzgxMSBweTNrCis3Mjg4NiA0OGI3NWViMDI0MzRjYTYzMTQ2OGUxMTM3ZmJhYWRjNDkxNmQxOTBjIHJlbGVhc2UyNi1tYWludAorNzI4ODcgMzQyOGFjZDMxZTQ1NjQyNTcwNmNlZDhjYmRlZGM3YTE0ODEwOTU4NCBsZWdhY3ktdHJ1bmsKKzcyODg4IDFlMmMzZTdmZTYzY2Y0N2I0MmRhOGQ5NGM3MzI5MWM4MzI3YWY3MTQgcmVsZWFzZTI2LW1haW50Cis3Mjg4OSAzZDMwNWRlY2U1Njc0ZGM2ZGQzNDI5NTE4ZDNiNTkzMGRjMjE5ZWUwIHB5M2sKKzcyODkwIDVkYzMzZjQ2N2ZmNDZmMmY2MzA3ZGE1ZTNhMjYxMGM0Y2NiN2ZiNzYgbGVnYWN5LXRydW5rCis3Mjg5MSA5Yzc0NGRmY2Y0ZGU3NjVlNzcyM2I3NTViZjkyYjUzN2IwZDBkMWU3IGxlZ2FjeS10cnVuaworNzI4OTIgYjVlMDAwZDAzYjJjNGY5MjZmYzgyYmJkMWEwNGVmYzlhZTQwM2FkYiBweTNrCis3Mjg5MyAzYmUzN2VjNDNjMWJiMzg1ZmE1YmZkNjAyODc1MTRjZWM2MTcxYjQzIGxlZ2FjeS10cnVuaworNzI4OTQgZTY3YjFkMDcxZWQ2MWY1ZmRmYjgwMzZjZjcwYTNiYTM0OWQwZTJhMCByZWxlYXNlMjYtbWFpbnQKKzcyODk1IDUzOGY0ZTc3NGMxOGUyN2Y2NWVjMjIxMWE0NjYyZDNjZTE0ZjRkOWQgcHkzaworNzI4OTYgMWY0Mzc1NjE5YzljM2Q5YzIyNDc1NDczMjdjNWM3NDc5Nzg4MWIxNyByZWxlYXNlMzAtbWFpbnQKKzcyODk3IGIwNWY4NGFkOGVjYjBjM2UwZDllZmYxZTNiMDdhMTA1OTMwNjhlMWMgcmVsZWFzZTI2LW1haW50Cis3Mjg5OCBmOGNhZGZiNGExYTIzNzM4M2UyNjQxYzY1NjE4ODJhYTNlNzBiZGIxIGxlZ2FjeS10cnVuaworNzI4OTkgODAyNDE3NWUzY2M2OTk5YjFhYjZhYTlmYTJiMDYyMzEyZmMwZDkyZiBweTNrCis3MjkwMCBiZmU0MDI4NTkzZTExMThlMTVkN2FjZTVjYzMwZjhiYTE1NjdhZTAwIGxlZ2FjeS10cnVuaworNzI5MDEgMDQ2ODhhYTU2NGM4NWVmMmJiNjUwZWNiNDVkOTJlN2E2NjA3NTAzZSBweTNrCis3MjkwMiA1NjU0MTNlZTljMWIzNmQ2N2ZmNjNiNmZmNmQ4ZjExNWY2ZmU0OGJhIHB5M2sKKzcyOTAzIGQ3NTA3OWRlMmU0NmU0MDBiMjI4ZWU5OThmZTM5YjhmM2NjYTEzZWEgbGVnYWN5LXRydW5rCis3MjkwNCA3MzkxZDg4YjNkODJjZDE4MjdhODQ1NDgxMTY1MDQzNWM3MjY1OTFiIHB5M2sKKzcyOTA1IGI5Yzc4ZmI2ZDcxZGJkMTY2MmIxMmRjMTVlNDYxMmQxZDA2ZWVmYTAgbGVnYWN5LXRydW5rCis3MjkwNiBlYjBjZDgzYzg0YWJmZjM0NzQ0N2I2YWRjYmYxNTM1MzBlOTYxMTIxIHB5M2sKKzcyOTA3IDBjNjE3YjdhNzI3YWUwYWFhYWM5ZWRlNmIyOTJiNjFmMWVhNTM1NDUgbGVnYWN5LXRydW5rCis3MjkwOCBkYjIxMjg2OWQ4MTQ2Y2RhYjkwYWNlYTAwZTlmZWI0OGVjMjAzMTZlIHB5M2sKKzcyOTA5IGM3NDk2N2ZlYjAyMWFhN2E5OGY5MmFhNmZhZjI0ZjBkM2I1MzFkMjEgbGVnYWN5LXRydW5rCis3MjkxMCA1YWIyZjZjYTY1YWFmYTAwOGI3NjVlYzE0NmY3ZTQ1YmI3ZDI4ZDA5IHB5M2sKKzcyOTEyIDE0NTM3NmRmM2FkNzI4ZjcwNTJmZGQ4YjZlYmE2MDBhODMxN2ZlY2UgbGVnYWN5LXRydW5rCis3MjkxMyBmMjliZTcxMGMxNzRkMWMzNDM3NzcxZDE2OTg2NTE5MTg3MDI5Y2NlIHB5M2sKKzcyOTE4IDM5ZDNhNzVmYTgyMTg0MTAyZjM0Njg1ZDViNjM5YzhkZjdhMTRlMWUgcHkzaworNzI5MTkgNWFlYTYwM2IyMzA4OTNlMmNhODc4NzE2M2Q0MzU3ZDEwOTNiYzJhYyBweTNrCis3MjkyMCAwZDc0NjFjMDYzZTc5ZWRiYmJiYzM4MWFiYjJkYzcxODY0ODc3ZjI4IGxlZ2FjeS10cnVuaworNzI5MjEgMTQ4MGZhM2ZjYWI0MDExNDUxZTU5OWVkNjJmNzEyNTM2NTZiMjAwZCBsZWdhY3ktdHJ1bmsKKzcyOTIyIDVkZDFmNmIxNDkzOTFmYTdmYzNhMWZhZmQzM2JlMDkyZmY2MmU1NGMgcHkzaworNzI5MjMgZGFkZDg5NzBiMzAzNzU2YmM3Mzc2ZjYzNTE2M2NiNDQ0OTQ3NmU3NSBsZWdhY3ktdHJ1bmsKKzcyOTI0IDE2NzU5ZjYyZWIyMjZjZDcwMWUwMWNhMWQ3NWE1MGY0NmI1N2I3YjcgbGVnYWN5LXRydW5rCis3MjkyNSAyODdjZTMwZDA4YjU0NDA4NDZlNjEzNjkwZWVhNWZlZDk0Mjk1ZDRjIHB5M2sKKzcyOTI2IDY5OWRhNmM0NjdkYzM4Yzc3YjMyNWFjMTIwZGJkZjA1NDNmMmQyZDYgcHkzaworNzI5MjcgMzU1NDA0ZWExMTQzZmVhNzkzY2Y1Mjk4YmRhNTY5ZmQ0MWNiMWI0ZiBweTNrCis3MjkyOCA0ZDY3NDUyOTIyZjkzZmU3YmU0ZGVhOTExOTBiODVlOGI3YjY1MjgyIHB5M2sKKzcyOTI5IDg0YTYwZTcxMDU1MzA4M2NiNDRhNmQ4OTExMTE0ZDE1OTBhOTRlOTkgcHkzaworNzI5MzAgYWFjMjZkZThiNWQwZTRkNmUxZjJhNjE1NGZjMmU5ODcxOTAwZGJkMiBsZWdhY3ktdHJ1bmsKKzcyOTMxIGQzZGFhZDBlN2Y2ZjU3ODdjZjdmZWM4NGE2Y2QwMjYwYjFlMjM5YzMgcmVsZWFzZTI2LW1haW50Cis3MjkzMiBjZGZkMDE3Y2VlOTA4YzhmYzM1MzkxZmRmYWU2ODYxNjdkOThmZWUxIGxlZ2FjeS10cnVuaworNzI5MzMgM2I2MTI1NjlkNTM2MWY3MTdjMTgzOTFlODBmMmU2YTBlOTc5YmJmNyByZWxlYXNlMjYtbWFpbnQKKzcyOTM0IDk4M2QyNTY5MWI2OGQ4MGY4ODVjOTE3YTRkZWFhZTlhYTQyNDdkMjYgcHkzaworNzI5MzUgYTI3YTczOWNlZjdmODc5YWJlOGFkMTI2M2Y5OTJiODNhNWFjOWQ5NiByZWxlYXNlMjYtbWFpbnQKKzcyOTM2IDAyNTgzNTFkZmE2MDQ0OTJmNDVhMTc3ODU3MmY0N2RiMGE0M2MyNmQgcmVsZWFzZTI2LW1haW50Cis3MjkzNyBhY2MwNzg2NmIyMzMwM2ZkZWU2NWU4ZGYwY2I0ZGVhMzc1NDU3MWNlIHJlbGVhc2UyNi1tYWludAorNzI5MzggMzQyNTdhNzczZWMwZGNkMzY5ZGJiMzNhMmQ2ZjEzNjdlNDMzNzIxZCByZWxlYXNlMjYtbWFpbnQKKzcyOTM5IDY1NjQ2MzgyZTRlMDNkZTllZjE1YmU4YzhhMDU3NTg2MzNiN2E5MGQgcmVsZWFzZTI2LW1haW50Cis3Mjk0MCBiYTMwNWZlOGU4MzEyMDM0NzQ0OWZiMzU5NDQ0NTEwMmViZWJlOTI1IGxlZ2FjeS10cnVuaworNzI5NDEgMWNjYjZkNjI1NzE3MzA1M2MzMWY4NjFiODNmYmIyMzgyOWJjMjY3MCBweTNrCis3Mjk0MiA5MDEyZmY3ZDc1YTIxNjVkMWJlODFmMTYyMWZlOTZhMmMxZmI4NmZjIHB5M2sKKzcyOTQzIDI3MjFiZTdiZTM2NTdhNDI3ZTE4ZmFmOGI4MDUwZjc2NTE5YzcyNTMgcHkzaworNzI5NDUgMjllNWMwMTY1ZTEzNTE2YWEyOTczM2NhZjkwNjNhZDAwNWNmMjA0OCBweTNrCis3Mjk0NiA4ODMwNWQ3MzlhZTUyNmUzYzc5YTg1YjI4YmEyYTllZGNlYjI2MGFlIGxlZ2FjeS10cnVuaworNzI5NDcgZDcxZmE2YzQ2OGNjOGIxZDg3YzEyNmM0YjRjNmRhMTE0YzQwMDllZSBweTNrCis3Mjk0OCBmZGYzZWI3ODIyZTQ1NmJkNTIxNDVkOTVlZmZjMzU2Mzk3Njk4YTEwIHB5M2sKKzcyOTQ5IGE0ZGQ5MjE3ZWExMzFjZjFmMzc2NWI0MGU0NDNiYThkNjNjNWMyMTUgcHkzaworNzI5NTIgNDdkZDI5MGQyZDc0NWI0NDM2NDY2ZDVjOWRkNGE5MjNiNGZjNmU4YyBweTNrCis3Mjk1MyAwZTc2MTAyZjQ3OGI1Nzc1ZDQ0ZGY5YTY1MGU4YTFlOTZkN2M0YzM3IHB5M2sKKzcyOTU0IGYxM2JjZDkyMmY3NjAyOWNkNTYyN2U4N2VjNzMxYzkyZjk4MzE5ZmUgcmVsZWFzZTMwLW1haW50Cis3Mjk1NSAzZjc5ZWNhYjVlNTI5NzQyNDkwNDllNGFjYzcwMDRmOWZkNTUyZTNhIHJlbGVhc2UyNi1tYWludAorNzI5NTYgMjNhMzczYzhlYzFiMzg4YjcwMzc2MWZmNDkyY2Q0Y2VlNzYxNDgyYiBsZWdhY3ktdHJ1bmsKKzcyOTU3IGJhNjM3NmRmZjZjNGY4MTE1YjI5YmM0NzMzZGE5MTMyNmNiY2JhNWMgbGVnYWN5LXRydW5rCis3Mjk1OCA3YjRiOTIxZjMzMzU2NzczNjQxMzUxMzBkOWRlNTBkZWY0ZjE3YmRjIGxlZ2FjeS10cnVuaworNzI5NTkgNmFiOTM0NzAwMTFiYjk0ZmRkNWVmMGU3NDFhNTY3MDhlZTRjMGYwYiBweTNrCis3Mjk2MCA0ODYwZjc0OTNiOTE0NzlmNjQzZTVhNzg2NTM3YmY1Nzk3ODA4NmM4IHB5M2sKKzcyOTYxIDFjMDc4YmJjYTIzM2Q3NjEwNjQ4MmIzNzRmMGJlYzI0MDY2NjRjODIgcHkzaworNzI5NjIgMWQwOTZkMWI5OGZkMTNlMDI3ZWRiNWY5YmJiMGM2Nzc3YzIxZjc0MSBweTNrCis3Mjk2MyAyMmZkOTY3NTE4ZWVjMDMxZjNiYzdjNzdiNzRhNDI3OGVjN2VjOWY0IHB5M2sKKzcyOTY0IGI2MWU2YWQ1YWU3MGU5ZjUyYzQ2NGU3OTcwOGNlNDEyNDE5NjA2NTYgcHkzaworNzI5NjUgOGNiMzQ5ODczY2RhZTJiZDc4ZGJhM2M3OTM4MjIzOGNkNGI5NTI2YyBweTNrCis3Mjk2NiAxNTRjYTM3N2Y1M2M3YjUwZTVjNjc5MjFjNDQyNWM4OGE2ZTQzMzM5IGxlZ2FjeS10cnVuaworNzI5NjcgOWI4YjYwYmMwZjViNzMxODJmM2M2NjYwYmZhZjkyYWQzNzNlYmQ2NyByZWxlYXNlMjYtbWFpbnQKKzcyOTY4IGFmNGZkMjM2NTRjZWIzZjQxOWVjZTZmMDNhOWZiOWQ1NmRkMDRlNzYgcHkzaworNzI5NjkgNGM3N2Y5ZTFhMTlkY2U4MTk2ZmQ4MTAzYzJhYzBkNWI1ZWJmZTljYiBweTNrCis3Mjk3MCA4MzdhZGI3NmEwZTFhYzBiYzIxNDdkMjA3ZGE1MzdkZDE5ZDc1YzI3IHJlbGVhc2UzMC1tYWludAorNzI5NzEgMTM5MjFmNTI2ODQ4MzBhM2I4MTRhNjlmOTk4MTFiMDU5ZGM4Y2EwOSBsZWdhY3ktdHJ1bmsKKzcyOTcyIGU2ZTNhMGU5MWJlYWMzZDEyN2I1ZWYyMWYxNGYwMDRiNGJlNzUxMzIgbGVnYWN5LXRydW5rCis3Mjk3MyA4MjFmN2Q0MmJmNzQyMmEwZmRlNjgzYmU3YmVhYmJmNzg2N2IyYzYwIGxlZ2FjeS10cnVuaworNzI5NzQgZmM0ZTI0NDNmNTA5NjRlOTY0NjI2Yzc2OWNhZDMwOGMzZmUzNzZjNCByZWxlYXNlMjYtbWFpbnQKKzcyOTc1IDYwMzg3MDIyOGRhYzU0ZTFhOTZjNDlkZTNkNWJjMDc1ZTgyMDk5NDUgcHkzaworNzI5NzYgNjBkNDliM2ZkM2JmZDJiNzYzNDQzMDZhMTBiNzE5MDUyZmMyYTA1OCByZWxlYXNlMjYtbWFpbnQKKzcyOTc3IDEwMjlkOWFhZDQ5MWM4ZjgyNmM5NjY3NzgxZDEyNjJlYTNjZjVmMmQgcHkzaworNzI5NzggMWQzYjFiZTZhOGIyNmJmMjQ5OWQyY2U2NDQ3ZDI0NmMxZDQzN2VkZSByZWxlYXNlMzAtbWFpbnQKKzcyOTc5IDcwZmI4NDg4NzBhY2Q0MTRhY2M1N2MxOGY0YTg1ZWY0OWRjMzdkYmUgbGVnYWN5LXRydW5rCis3Mjk4MCBhNmI3M2Q4MGZiZTI3NWE5ZjYzYTdkN2ZjZTdjMDA3NzBmMzk2ZWM4IHB5M2sKKzcyOTgxIDExYTU0ZGFiZmIxY2Q1ZDMzNzhjNDNmYzc5ODRkYjVhMDA2ZGVhNTIgbGVnYWN5LXRydW5rCis3Mjk4MiA4YjI5OTY1MmIxZTg1ZjdkMTJlODRlYTFmMzBiODI5YmYwYTIxNTkzIHJlbGVhc2UyNi1tYWludAorNzI5ODMgOWRkZmE2ZTA1ZmIwZGExMTk5NDM0MjFhMTJiOWRjMjg5MGE4NTM5MCBweTNrCis3Mjk4NCBhYzBiODVmNjgyOTdiZDMwZjFlNTBlMjllN2FiZWJiZDM1NmFkN2Y2IHB5M2sKKzcyOTg1IDViMjEwMGU0NmQzYjQ4YTAyZjA0YzBkZGIxYWY3NDg1MmQzZTI0YTQgcmVsZWFzZTMwLW1haW50Cis3Mjk4NiA2MDU2Yzk2YzJkMzI3NTU4NzBhNjg1ZGU5YjcxMWYxNzRhYzI4MTQxIGxlZ2FjeS10cnVuaworNzI5ODcgZWQwYTlkNjg0MDIyNjlhODkyYzA0MTc3MTIzNmI0ZmY2YzQyNzY4OSByZWxlYXNlMjYtbWFpbnQKKzcyOTg4IDk5NjczNzkyNzBhMDk0MTNhMzViOGViMmZiOWZiMjRiZDFlODQ4NzMgcHkzaworNzI5ODkgY2U5OWU4ZTIyYjFlYWMwOTYwNzNmZDM3MTc1OTUyNzU3ZTZjMDUzOSByZWxlYXNlMzAtbWFpbnQKKzcyOTkwIGIwMDQwNDk0YjRhNjlhYWM5NmNhOTE2OWQyYzBmZTc1YzgyNGIxNjggcHkzaworNzI5OTEgZjU1ZDhkZWQyZDA1ZTVhY2VjYmY2MWFjNDNkMjM5NDk5YWFiODc4MyByZWxlYXNlMzAtbWFpbnQKKzcyOTkyIGI3MjZmZmQ0OTUyNDUwZDIyYmY5OGI5NGY1ZDVmMTIyYzU3NWU1NzggbGVnYWN5LXRydW5rCis3Mjk5MyBlOTBiMDY3ZDgzZjI1MTY0YWI2NGU5NTY1ZjkyZTQ3M2ExZGFlYWE0IHJlbGVhc2UyNi1tYWludAorNzI5OTUgM2ViNTIyZGMzMzM3ZGVhMjFmMjc0ZWQzZDlmYjNmODJjMzE4NGVhZiBweTNrCis3Mjk5NiA0MDM1MzgzMzk0ZWNmYWE2YTcyNTBjZmU4NmQ2YjJiNWQ0MTgyM2NiIHB5M2sKKzcyOTk3IGJjMjUxNjgxMGNjNDExM2MxMGQ4MmYyODM3Y2EzY2M1NmQ3MTVmMDAgcHkzaworNzI5OTggYTBhMjVkZWVjZGIyMzZlMzU1MWE3Yjk3NjZjY2NhY2VhYTIxOTA0MyBweTNrCis3Mjk5OSA2MThlNDZhNjlmMjc4ZjA0MjAzNjlkYWRkOGI3YzQ5NWFhMTE1MWM4IHB5M2sKKzczMDAwIDJkM2MyY2YxYjUxZTM0Y2M4NzcyZDcxYmQ3MTk2MjMwNzgzMjFjYzEgcHkzaworNzMwMDEgODhiZDg3NjBiMzQyZWM4N2I3YWJmMDg1MDQ4MzEzNzQyMzk2NWJhYyBsZWdhY3ktdHJ1bmsKKzczMDAyIDI2MGM4ZWQzZjVkZjk3YTY1MzVmNzQ1ZmQxNmU0OGQ2ZjZhOTIwYmYgbGVnYWN5LXRydW5rCis3MzAwNCAxZDhmMjRiZjQzOTk2MzM2MGZjYzEzNjg5MzJlZmI5YzE3OWYwNGU4IGxlZ2FjeS10cnVuaworNzMwMDUgZjNjODcxYmRlYTU3MWQ2ZDY5Y2Q4ZDQzNzVjMTg2NTZmYzc0NGZjMCBweTNrCis3MzAwNiBkNzVhYjE2NDEzZGE0MmMxNDdiZWE4YTI0NzVlYzQzNzVjYjRmNWFhIGxlZ2FjeS10cnVuaworNzMwMDggMWZhMTM3OTQyMDg1ZGZkMWYyMTNjYWY1ZGMwMDA5ODNlNzhiNGY2YyBsZWdhY3ktdHJ1bmsKKzczMDA5IDc3YjkxMjRmMWM4YzE0ZDhlNzZjMjhiOWFkYmExZGE3YWVkN2QyYzggcmVsZWFzZTI2LW1haW50Cis3MzAxMCBkMzljMTkwMzE2ZTc2OWQ5Y2ZkNjA1MDVmMDY0Y2QwODJiNTZiZmU2IHB5M2sKKzczMDExIDQ5YzBiMGNhNTExM2I5MzM4MzE4NjEzZjY4MTIyMTY2MDllYmU0Y2IgcmVsZWFzZTMwLW1haW50Cis3MzAxMiBjNWQzNDk1ODJlOWNhZTdiMDNmNTQxNjk2N2ViOGZlNzYxZDM1NDdjIHJlbGVhc2UyNi1tYWludAorNzMwMTMgYjY3YWJkNTFiMjcwNGMwYWNiYjBmNzI4NDJlOWQ5NTMyMmU2ZTAxYSByZWxlYXNlMzAtbWFpbnQKKzczMDE0IDExZGUzNWRhMjgxYzE3NTVlZTk3MzlhMWY4YWE5YzdmZDQ4ZWM3MGMgcHkzaworNzMwMTUgMjhkNjQxOTJhYjVhMmNmNzJhOWJkNmJkOTEzOTAwNzUxOGNkYzI0NyBweTNrCis3MzAxNiA5YzE3ZTM2NjkzMzZhY2E3MGVlNWI5Zjg5NWNkYzZhZTZlMjZhODgxIGxlZ2FjeS10cnVuaworNzMwMTcgNzZmMWJlOWQyODE4MmJmNDliMzFlMjg0NmVkYTJkMWU1MjE2MTUyZSByZWxlYXNlMjYtbWFpbnQKKzczMDE4IDEzNGQxMmMyZTc0NTAwZThmYTJiZGJiNGJmNTAwOGQ1NjBiZjViYzEgcHkzaworNzMwMTkgMjM1NmU5ODVlY2U4MzVmMWJkZTNmYzg3ZTQyZDA5ODJjMzZkNmVkYyByZWxlYXNlMzAtbWFpbnQKKzczMDIwIGVjNWQyMjhhODNlZmNhMjFmNTdhZDc1NWUxZjA0M2ZkYjA0ZDczZmEgcHkzaworNzMwMjEgYTVhODljNjBkMzJlNGVlZmY0NjY5MDY4ZTQ0M2FiYTUwNmRhMmNiZSBweTNrCis3MzAyMiA2NDc1MDA2NWVjZDRkMWMyOTNiZTEyMmEyZWUxNTA0NjExNDg1NGM1IGxlZ2FjeS10cnVuaworNzMwMjMgMjVhMzE1NWRhYzc2YzUxNjM5NzRjOWVhZjljNmI3NjFiY2NkNTY1YiByZWxlYXNlMjYtbWFpbnQKKzczMDI0IDlhNGNlMWU3MWFkODE2NTE2MjEwOWZiZDFiMjc2ODk5NTY4ODkzYjIgcHkzaworNzMwMjUgNGVkMmVlMGIyMjkwYTA2NDZhZDgxOWZkOGNiOGU4MTMzY2YyOGU1NiByZWxlYXNlMzAtbWFpbnQKKzczMDI2IGU0NzQ1ODM4ZjY1NWI1Zjk1MWIzNTRlYTEzYjQ3MDkwYjlmNGRiYTYgbGVnYWN5LXRydW5rCis3MzAyNyA3YTEzNDcxZjRlOWJkMWRjZTUyY2FmODU1NTYyZmQ3OGRiMDdhNmNkIGxlZ2FjeS10cnVuaworNzMwMjggMTQ2YTM5YjI1ODQ1ODVmN2I5MjRhYWVlOTBmZmYxZGE0Yjc5ODljOSBweTNrCis3MzAyOSBjOGZlMzAzY2VkYTQ1MTU4YzcxZmU3OWRjNGU5M2E3YWRlNjEyNTY1IGxlZ2FjeS10cnVuaworNzMwMzAgNmUyYThiZGFhNTQwMjA4Y2QzOTA2YmU4OGRkM2I3ODUzMjQ0MDM3YSByZWxlYXNlMzAtbWFpbnQKKzczMDMxIGIyZWNkMmJkZjE5NTJiOTE0MTg1ZDgzZjhjZGIzMDE3YWRkMTRhM2MgbGVnYWN5LXRydW5rCis3MzAzMiA2ZDRjNDdmZWM0NDlkYWJkNWZmMjMxMDdiZWY4ZTIzY2FjN2Q2MmRmIHB5M2sKKzczMDM1IDFhNTIxYzA2YTcwZGI1MTZhMjVkNjJiZmRjZWQyNzcxNjFlMTYzMDkgcHkzaworNzMwNDIgNmQ2YjRkMzc4MWYyNzU4NGM1MDUyMjZjMDhiYmFmYTJjMjJkNDVlNiBsZWdhY3ktdHJ1bmsKKzczMDQzIDY5Y2Q4MGY4ZTEzM2EyNDAyMjAzZmY2M2Q2MmFiZDViMWIzYTFmYTAgcHkzaworNzMwNDQgZjVkM2ZmMDNkZDViY2RkNTUwZjFhMmY1ZGE3MjIwNTIyZDI1MTY5MiBweTNrCis3MzA0NSA1YmI1ZTkzNDM1YjA0ZTExODExMDgwMGU4N2RmNjUwNTc3NjVmNThjIGxlZ2FjeS10cnVuaworNzMwNDYgNDMxY2E1Mzk5YTI0NDg2YzBmZjhjOGQ0NTY5ODQwM2Y0YjdkN2E3YiBsZWdhY3ktdHJ1bmsKKzczMDQ3IGM2MmI2NTIyNTFkODk5YzEzODdkNTU0Njg1ZTY3ZmQ3YWJhNmI4MWUgbGVnYWN5LXRydW5rCis3MzA0OCA4ZDJmMzljMjFlOWU1MmYyYzUwM2M0ZGZkMDg1ZGYxYTJiNjRjYjEwIGxlZ2FjeS10cnVuaworNzMwNDkgYjAxYWVmZjcyYjY1MmE3ZjE5OTg3MTYxOWJkNGMwM2IxNTY1YjM4MSBsZWdhY3ktdHJ1bmsKKzczMDUzIDU1M2M4MTUxYzljNmUwMjVhNjcyZDUzZmJjNDE0NjRmMGEzNmNiZWUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMDU0IDQ5NWNmM2MyNWViMTQzYjAyMmY2ZjI5OTM4OTUyMDM5ZTk5OWI2NTAgcHkzaworNzMwNTUgMjM0NjJiMzgxNzFkNjllY2ZhMDljYjA1MWVhNjU1M2I1ZDI0NTRmZCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMwNTYgNDM1M2ZkMDg0M2NiMzFiMzU2YWRjNTBmOTNkMjIwZTJlNzI1NWVmMiBweTNrCis3MzA1NyAzZmZiYTZhZDMxOWMyZWFlZjUyZWE5NDIyMDQwZjU4MDY3ZmQxZjQ3IHB5M2sKKzczMDU4IGNhOWJlOGZjMDI1ZGMyNzczY2RjNDNjNWZlMjQ1OGJjMjY0M2NjOTUgcHkzaworNzMwNjAgZTQ3NWNjNzFmMTg4YTRhNTlmYjQxMGJiNWYyOTRhYTM5MDhlZDMzNCBsZWdhY3ktdHJ1bmsKKzczMDYxIDkxNjJjZGYzNGRmYmY0NTYyYmNhZWI1OWRiMzg4MTU0NjY3MWI0MWYgcHkzaworNzMwNjIgYjQwNDMwNzkyMmM2ZThjNTA4ZGQwNzQ2OTE5MGI4ZjVhMTUwMWQ1ZiBweTNrCis3MzA2MyA0OTQ4NWY5OGEzMDgzYmMxYzE4MjQ2ZDI2MmFlNTU3NDc0ZGJiMmQ0IHB5M2sKKzczMDY0IGEyNTNmZWE4NWFmMTVjYTk5ZTAzM2EwMDU0YTNkMTllNjlkOTI0OWEgbGVnYWN5LXRydW5rCis3MzA2NSBmYTJmOTE3OTA2ZTczYjdkMWRkNjc4NGRjYTZmZmQ5NWExYjgyZmY5IGxlZ2FjeS10cnVuaworNzMwNjYgNGU5NmQ3ZGFmNzlmNGM1YjQ0NjJlZjdiZjRkNGY2ZWU3Mjc4M2VhYiBweTNrCis3MzA2NyAxMTQzNTRiMWUwZTU3ZDhkYzY0Mjk3ZTcwMDA3NmI3NjIwNjY5MTgwIHJlbGVhc2UyNi1tYWludAorNzMwNjggNzU2NjIxODE5ZjVhNTFmNDE0NmFjN2M1ZjhlMDA0ZDhmZGQzYmFkOCBsZWdhY3ktdHJ1bmsKKzczMDY5IDVkZWM3MjQ3YjI0OTZlYjg1YzhhZTA5YmJhOTk5MmU5MDhmODI2MDkgbGVnYWN5LXRydW5rCis3MzA3MCBiZjBiZDZlYTFjNzJlNTUwZTgwOTRiYjk1MzBkMWEyZjYxZTA2YTg3IHB5M2sKKzczMDcxIDFiNDNlNmYyZDMyOGE5NzFmODA5NGRiMzJjZTk4OTViNGZiZWI3NDEgbGVnYWN5LXRydW5rCis3MzA3MiBkNzRiOGVkZDdhOGNmMDQwNjA0N2Y4ZmZmMGExNTI5MzQxNTM1Yjg5IGxlZ2FjeS10cnVuaworNzMwNzMgZWYwNzg1Y2ZhNmFmNTFiNjJjNDc2ZjJiOTdhYWI3MWY1M2EzYTExNiBsZWdhY3ktdHJ1bmsKKzczMDc0IGJiYjBiNGY4YjVlMTFhZjUxNjc2N2E4ZjkwMjUwZTc0MjEyOWIxM2YgbGVnYWN5LXRydW5rCis3MzA3NSA4MWJhZjc2ZDA3OTc3M2Q2NzQ3Y2U1MDgzYmJkZjcyZTc0NDA0YWZmIHB5M2sKKzczMDc2IDUxOWY4MGIxZjVlM2E2NDNkNDNlZWMxNTE3ZWZkMGIyNmMwNWEyZTcgbGVnYWN5LXRydW5rCis3MzA3NyAwNzA1MzBlOWYxOGYyOTg0MjI0ZjUzNzQyZDU0NDhkOGI0YmQxYTkwIGxlZ2FjeS10cnVuaworNzMwNzggYzNhMjY1NTZkZDE0YWQyYjU5NDgxN2FjNDliZDY5ZmZlMTlkMjQwMSByZWxlYXNlMjYtbWFpbnQKKzczMDc5IGYxNGI1MDVkMzlmNGFlOGE5YjU1MDkyM2UwMTc4MmYyZDk1NjcwYTcgcHkzaworNzMwODAgZjUxZWFhZWQ2YzcxYTYwZDYxM2ZmYmNjN2ExZjM1ZTEwYjdhOGM5OSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMwODEgMmFmZjcwMGUwY2E5MThjMGQzYjRhYmU2NzZmYjE4OGY5Y2FkMTZlYiByZWxlYXNlMzAtbWFpbnQKKzczMDgyIGE2YTc0YjlhN2NkMzcyYjAzMjM4MTZhMzYxMjU3N2JiNDA3NjhkZWYgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMDgzIDVkYjA1NTZlZDEyMjM1YmJmZTFkZWEzNGZlNGZjZDE0NmJlNTE4OGMgbGVnYWN5LXRydW5rCis3MzA4NCA3Yjc3MmVkNTM2Yzc2OWNlOWNlMDIxMjY2YjU1YzYwNzkyNmRlYmU2IHB5M2sKKzczMDg1IDc1ZTEyYzVlNGVhZmJhMWEzNGIyNGYwN2U3ZTAzYjY0ZDY0MzFjNzMgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMDg2IDUyZDI1OGViMDE3NmZhZjQxZGY2NjczYmRlNTI2NTlmY2EyYWM1YmUgcHkzaworNzMwODcgYjRkZDQyODNmZjgyMGRkYTIzZGZkMTRjNzdlNjNlMDVkM2M2OTM4MiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMwODggMWUyYzAzNzFjZTU3MzdkYTQ2ZGIwYjQ3YjFlYmZmOThiYWMzMTIxMSBweTNrCis3MzA4OSBmNTE3ZjJlNGZiM2JiNTZjYjY3NDk5N2Q5Y2Q0Y2E4OGUxZWFkNzMwIGxlZ2FjeS10cnVuaworNzMwOTAgNTBmMzEzMDhiNTBhZWQ2NTE0ZjY1MGRmMjRhZDQyMTcyOWFhOWQ2MyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMwOTQgNDIxMTgxMGRjNzljZTdhZDdlMTk0ZTcwYTg5MDczNWJlZjNkMWQ4NSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMwOTUgNTdhMmQyNzEzZjE5NTNhMGNhNTQyODkyN2UxYmM0N2NkMjY2YzY0YyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMwOTcgNTI4YzA5M2FiOTg2ZDIwN2Y4NGVmNjkwYTc1N2M0OGE1ZjQ3MDM0YyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMwOTggNzU3YTdjMGY2NzllM2JhZjM5NWUwNjk1YTk4NTZhMmUyNzlhNTA4YiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMxMDEgNjAwMTY5YWU1NjgxZDNhOTU4YTk5MDZlYjYxYWFhN2NjZGZhYmUyZCBsZWdhY3ktdHJ1bmsKKzczMTAyIGZiNzllZTQ1Nzc1NDI4MDlhMDc4MThlNDIwNThmYmFlN2JmMmZjMzcgcHkzaworNzMxMDMgN2M0NDQwNTM4YWJiMjQyZjk1YjA0NDM2NDM4ZDkwZWU4MzI3ZDI1YyBweTNrCis3MzEwNCA4NTY3ZGYzYTQzYjYxMjMwZjBlODBmOGMwZjBlMDk3NGY3OTVlNWMwIHJlbGVhc2UyNi1tYWludAorNzMxMDUgYzA1MWJhNjE3ZjA0NjE5OTBhY2FlMjJkMDE2YjYzN2QyMDdmZjRmNCByZWxlYXNlMzAtbWFpbnQKKzczMTA2IDY4NDZmOTVmOGUwNzdhOWFkNDU4NzVlM2FmZjk0NzgxMmZjYmE5YzAgcHkzaworNzMxMDcgMThiM2Q1YjM3ZDgzZmJlNjI2YTE1ZmEzMjMyNTU4MzJjMjliNTUwZCBweTNrCis3MzEwOCBjNjc4NTRmMWNmNzkzMTVlNzI0ODg0MDFiMTIyNGE1ZGQ4MTc2YTc4IHB5M2sKKzczMTA5IDQ0Mjc4NTlkODE3YTcyYzMzMmM0ZTA4MDg3ODg2NGFiN2Y1ZDZmNDkgbGVnYWN5LXRydW5rCis3MzExMCA4YzEzMDY3MWM4NDI1MzI3ZmJlYmNhZjM2MGUwMjkxOTg3YjNlYjExIHB5M2sKKzczMTExIDkzOGNjMTZlN2Y4ZGViZDllNzkzNDlmMWNhNjU1ZTY2OTUyZmUwYzkgcHkzaworNzMxMTIgMzUyMmMyYjBkNTFkNDdkZTNjZjZkNjVkOWE1MWY2MGQ3MDk0ZmJjYSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMxMTMgYmJmOGYyNWViMzc3YjIwMTUyMTJiMjAzMjhjNWEyZDljNTk3MzNjNSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMxMTQgYzM3YWU1NjJlZjgyMmRkNTU2MGFmZjE0MzMxZDI4YjA5NWNiZDAxMyBsZWdhY3ktdHJ1bmsKKzczMTE1IDFkZmNjNTNlODM2YTBlNjAyOTA0MmIxY2QxYzE0YTNlOGU5NjU0ODYgcHkzaworNzMxMTYgZDBlOTYwNzliNmFjYTlhOWI1YmE1OWI0OGNmMGZhNzJmZWVlMDQzNyBweTNrCis3MzExNyBhOGQ5Y2M5MzI2NzU2MTdhNTQwNWM1ZDBhYWFhOWEzNDU1NjE4NTIyIHB5M2sKKzczMTE4IDUyMjk1ZWJjY2EzMTI0NGQwMWQ0NWY2MGYyN2U2NDc3NjdiY2UwZDIgcmVsZWFzZTI2LW1haW50Cis3MzExOSBhNTYzYmNmMWE2MmQyZjY5YzQ4ZDI5YjM5NDdmNDVlNTU1YmM1MzE2IHJlbGVhc2UyNi1tYWludAorNzMxMjAgZTI1ZmMzNzc2NzA0NzAyMjNkNjYwN2RjYWFiMjMzNDliYmQ3ZDFjMCByZWxlYXNlMzAtbWFpbnQKKzczMTIxIGQ1MDcxZDlmNzQwOGJkYjg4ZDU3YmM1ZWM3MmQ3NmIyMTA0ZjM2MjggbGVnYWN5LXRydW5rCis3MzEyMiA1ZjhkZWM4NDZmNDZkZTliODE0N2I5OTEzZjA5ZjdhZDJmYjNhNmVlIHJlbGVhc2UyNi1tYWludAorNzMxMjMgNTQyOTUyN2UzYTI4OGZkMjFhNWQ2MWVjNGVhNGU2YWY1NTc2Njk3YiBweTNrCis3MzEyNCA0OTkzZTExMGZkNzc4NTg0OGI4YTM2YWI0NTFmZDE3OTdkMDZhMjE3IHJlbGVhc2UzMC1tYWludAorNzMxMjUgY2VkMzgwYjQwMDA0MzYyYTdhOWFjNTM4MGJmNDkwMGNkMDNhYTZjMyBweTNrCis3MzEyNiBiZjRjZmU1MWI0YjUyMTc0NTI1MWY2ZGVlNzFiNzdkNjdlMDRlMDJkIHB5M2sKKzczMTI3IDYyNTQyYmI4ODczYTFiMzdmN2E4YjBmNDhjMDQ1NzExZDkyNjE1NmIgcHkzaworNzMxMjggMmMwMGJkYWFkN2E5ZmZmZTFhN2Y5NTczYmVhZGVkZDNlMTZjM2JlNSBweTNrCis3MzEyOSA4Yzg1MDQ3MTViOGEzODc5ZDU0YjAzZDQ0YmY3OTYyYjc3NDA0MThlIGxlZ2FjeS10cnVuaworNzMxMzAgZGI4OGE2N2UzOGVlYTFhMzFmYjNlMDg5ZWQ4ZGVkMGU1YzBmMzgyYyByZWxlYXNlMjYtbWFpbnQKKzczMTMxIDI5OTA0NDBhMjBmNDJhMTA3ZDA0Y2IzMjE5MTk0NmM0MTc5ZGM4NWYgcHkzaworNzMxMzIgN2ZhODMyOTI3YjkxYzg2NDE0NDYxZDg5NGM0OWZhYmJiMjgzOTg1ZSByZWxlYXNlMzAtbWFpbnQKKzczMTMzIDdkNDc3NTU2ODBkNzg0MzNiNzI3MTg3OTE2YjY5NDBjMDVhNjliOWQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMTM0IGUxM2E0ZjYyYjZjYWNjZGFkYWJhNjk5ZmRmYjYzYjVmOTg0YWI1M2UgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMTM1IDEyODE0N2RjYmMxZDUxMTM3OTUzYjY0NTgzYmY3MzE2YzgxNmI4NTcgbGVnYWN5LXRydW5rCis3MzEzNiAzZDEyZmI5Y2VkOTI2Y2FlNzVkYTY0YWNlYmUzZWM5NTM1OTE1NGMwIHB5M2sKKzczMTM3IGY4YjVhMTUzMmJlYzU2MDQ0YzllZTE1OGRiMDg2MzFiZDdmYmQzNWUgcHkzaworNzMxMzggZjBmODRhZjE1OTU3YmM4M2M2ZTNlNWI4MTI3NTMxOTZiMDQyMmFlMiBsZWdhY3ktdHJ1bmsKKzczMTM5IGJhODIyMjgzOTkzOGRiMDY5NDJmMDQxOWIwZmJkNjc0Y2ZmMTQwOWMgcmVsZWFzZTI2LW1haW50Cis3MzE0MCA3MjM0YTgzYThiMTlmZDhmMTU1MGVkMDVhMDdjMWQyMDg0MTA5MjY4IHB5M2sKKzczMTQxIDA0NDljYmU5YWM5ZDZiNTk1NTAxYzNhZTdjMWI1ZTkzMWYyM2Q3NDkgcmVsZWFzZTMwLW1haW50Cis3MzE0MiAxZTcyYTU0MGMxYWE2Nzg3MzY1ZDBhZGI2M2NhOWYwZDkxNmFkNTRhIHB5M2sKKzczMTQzIDYyMWE1OWJiMzQwNDViYWJiMmRmMjkzMzAwODMyN2FlNWFmYTcwYjIgcHkzaworNzMxNDQgODg1YjBhOTJiNTA2MjYyZmM3ZDk4Yjk2M2MwZDgwNzAzMjdiZDVhMCByZWxlYXNlMzAtbWFpbnQKKzczMTQ1IGU4MGUyNWU2YTE4N2I0YzVkNWM0NWFlNGYwMzNiNzJlY2EzNGE0NWQgbGVnYWN5LXRydW5rCis3MzE0NiA5MDQ4OWYyNjdiMzAwZGE0ZDk1ZGY0YjVhNzFlZTk0YmY5MjI4MmVjIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzE0NyA0MjgzYmM4YzkzMDY1MWNhMzEyODAxODMxNGJlZmVmNTZiMzYyOTk3IGxlZ2FjeS10cnVuaworNzMxNDggYjJmOTYyMzg1OTY5YTIwOGMyYzFjY2NmMGI1Zjg0ZWQ3OTJmZmY3YyByZWxlYXNlMjYtbWFpbnQKKzczMTQ5IDVlNGQwNzA1NjVlNzI4YzkzMjRlNjM4ZTI5Yzc2NWM2N2EwZWUxYjggcHkzaworNzMxNTAgZjYzMmUwMmMyNjQyZThhMTdmZmIxYjViOTk4NjAwMGE1ZTA0OTdmOCByZWxlYXNlMzAtbWFpbnQKKzczMTUxIGI3YjczNTI5OTRjODg0MDUwZWI1NzE3NjFhZDNjNmRmZWEyNmJiMmIgbGVnYWN5LXRydW5rCis3MzE1MiBjZmU1NzdhYTE1NmFjYzRlZDA0OTZhZjExMzJiZDA4OTc0YjExYWJiIHJlbGVhc2UyNi1tYWludAorNzMxNTcgMmY3ZDlhYmQ2NTViYWI5ZDIyYjRhZmZmMWEwMzlhZWFlNDYwNDE4YiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMxNTkgMzJhNDlkMTA4MDFlZDFlY2JkNTBhMzUzMTdjOTY1M2Q3ZDM0MDY0NSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMxNjAgY2YxOWNjMDZiMDkzMDhkZDA2ZjZiMzAxMGE0Mjk1ZmVlOTlhZTZhOCBweTNrCis3MzE2MSAzM2E4YmE5MjVjOTIwOWY4NWMwMDBhNjBmOTQxNTRhODE4NWZhNmIzIHB5M2sKKzczMTYyIDUxZmVjYmI3ZmM4NzI2NWZlMGMyYzdkNzI1NDAzNTkzOWFkNjNkZjQgcHkzaworNzMxNjMgNGEyNzcxZjZiOWRkNzg1MDQ2M2ZkZDEyZTViODIzZWUyNjQ1ZTRjNSBsZWdhY3ktdHJ1bmsKKzczMTY0IDJmYmM3MDM5MzgyZDFjNThmMjgwNjZjZjhiZTZjZjMzYjI3NDE2MmIgcHkzaworNzMxNjUgMmQ1MDBkN2IyMGJlNjg2YzYyYmRjOGFmMWVjMDliMDRlNzJiM2M4NyBweTNrCis3MzE2NiA5OGQ4YjhiNzQ5ZjQ3NDY1ZTBkYzMyYjFkYTFlZTFiOTMxNjM5MjQwIGxlZ2FjeS10cnVuaworNzMxNjcgMTZlNDVkOGI3OTU3ZTdlZTAwMzM0NTRmMzBlMmQxYzU4MjM4YTczNyByZWxlYXNlMjYtbWFpbnQKKzczMTY4IGZjYjI1ODBjMWFiM2U4YjMyOWFhOTRkNmE0YzgxOTYxY2VmZjk2Y2UgcHkzaworNzMxNjkgZTFhNDY2MDJiOWQ3MmFiMDY2NTI1OGQyMjM2M2M1YjY1NWIwMWIyNyByZWxlYXNlMzAtbWFpbnQKKzczMTcwIDFhMDI5YjdjOTc3MDUyNzdkNzg5ZjdjZTM4Yjc4NjRlZjQzOTIyYzEgbGVnYWN5LXRydW5rCis3MzE3MSA2NWY1NjFhM2UyOTFiODBlN2FkMzE4MTg0YzMyNzBlZDA1OTJmNDAzIHJlbGVhc2UyNi1tYWludAorNzMxNzIgYWU1ODVjZDVjYTU0YjNmYjQ3YTg1NmJiMTYyM2QzMTlkMmVlMTU2YiBweTNrCis3MzE3MyA2MjU0NGM5NDZlZGEyYWYxZDQzODRhNTBmNDI3MDMxZDQ2MjhiZmQ0IHJlbGVhc2UzMC1tYWludAorNzMxNzQgYjhiMzJmZGNjMjhkNDFlMzgzNGVlYjNhMmQ0MDJiNGQ3M2M2NzFiOCBsZWdhY3ktdHJ1bmsKKzczMTc1IDljMmUwN2E4ZDIzMDJkM2Y2OWVlMDM2NDY2Y2E0ODkwN2U0OGY3YjYgcmVsZWFzZTI2LW1haW50Cis3MzE3NiA3YzBlNzllNzFjY2RjNWIzZGI3YTAxY2U2Yzk0NmRiMzIwZDA5NzI4IHB5M2sKKzczMTc3IDAzMGEzZmU0YjYwNDUyMWUwZWEwMTAxZmZkOTY1MzFjOTEyM2NmNzEgcHkzaworNzMxNzggYjAxY2NhYzMwNDczNTA5ZTBjMDJhZTQwYTEwYmE2Yzc0YmM5MjM2NSBweTNrCis3MzE4MiBlODZiY2NlYmMwNzU4NmU4NGY4Yzk2ODBjMzEyM2IwOWM0MmQ1MTZjIGxlZ2FjeS10cnVuaworNzMxODMgYmZhYWYyZjRiMmU1YmQ1YjA3MTk5MWM4MTI0M2YxZWY3ZDcxYjQ2NyBweTNrCis3MzE4NCBiYzc0YjJmNjExNTk1ODkwYzFjNGQwMjgyZTZiZDdjMDhhYmYzMzQwIGxlZ2FjeS10cnVuaworNzMxODUgYTI5ODQyZTVlMTM4YzM3NTFiN2I1Y2FjYWZkOTEwOTYyODFiNTNkMyBweTNrCis3MzE4NiA1YTMyZjNkMDYxNThjM2U0ZTAyMzhhNzZlNTE2Y2FkYjNmNTg5M2E2IGxlZ2FjeS10cnVuaworNzMxODcgMTRhNGI2ZmIwMGZlYmE4MTg5OThhOWEyOWMzYjdjMzFmNjIzMDEyMSBweTNrCis3MzE4OCBhYmQxM2FjZmY1ZGJlMmJhOTRmYzAzZGI5YTg5YWI2YWU0Mzk1NDQ1IHJlbGVhc2UzMC1tYWludAorNzMxOTAgNDQzOWIyMmNmNmVhZmRlNzkzYzEzY2Y5ODhkMWI4NjA5ZjhlYjYyOCBsZWdhY3ktdHJ1bmsKKzczMTkxIDI4Nzg4NzE5OGUyZmE3MjRmZjQ2YzhhMmI2NjU2MmMzODlhNTJkYjkgcHkzaworNzMxOTQgMGM5NGM1Y2E1NWQ1N2Y1MzE3MjVmYWZkMzMwZTFhMWRkZjY0ODA0MiBweTNrCis3MzE5NSBmNDhhMDUyMTQyODFjMDgzMzE5YjAwYzc5ZWZjNTI0NzMzN2ViODljIHB5M2sKKzczMTk2IGQwNDM3OGY5ZmRiNDU2YjcxMDQyYjZkNjlmNWJjODE0NDQzZTRiNDYgbGVnYWN5LXRydW5rCis3MzE5NyA3ZGYyOTI5YTNkMDZmYzQ4NTJhNTUyNDc3MGFlMTM3MTExYmZjZWQxIGxlZ2FjeS10cnVuaworNzMxOTggYjc4MmZkMDVhODA2NDI1MmU1ZTYwOGFiMDcxNzhhODA1N2EyMjI0NSByZWxlYXNlMjYtbWFpbnQKKzczMTk5IDBkOGVkOWU1NThmMjhlMzJiODU4ZGM0NmU4MTFlYTJlMWQzMmIyYTEgcHkzaworNzMyMDAgYWZmOTdlNTBhMjA2MGE3N2I0ZWViMDg5NjYzODEzMGY1MzMxOWVlZiByZWxlYXNlMzAtbWFpbnQKKzczMjAxIDk3YTBhODU4OTAxNGQ3ZWQyYTYyMDFmYjAwYTk1N2QzODk4ZDI1YjcgbGVnYWN5LXRydW5rCis3MzIwMiAwMGQ1NzcyYzg2ODY2MjUyNDZjMmEzOWZhNDYzZjBmN2Q5YTc0ODM0IHB5M2sKKzczMjAzIDVlY2RiODI5NDM0Zjk4NjNiOWFkYjNjMzk4NmUwZTBiMTRhNGNlZGUgcHkzaworNzMyMDQgMThkODIzZThiNjAyY2VkZTY3ZTI4NjJmNDNiMWZkOWRkOGQzYjFhMSBweTNrCis3MzIwNiBkNWJmMDhjODYxYTY0MjVlOGYwZGFiYzAyNjE0MjQyMjlmN2ZlMzhmIGxlZ2FjeS10cnVuaworNzMyMDggM2Y2MjExNDBlZmM0YTJlMjNlOWFiNTBhNWYwYTBhZmJkOTI4MjI3ZiBweTNrCis3MzIxMCA4ZmE0Y2NhOWEyMmNlNDkzMDYzZGZiMTc0MTA3MTQ2OWJjN2JjZmMwIHB5M2sKKzczMjExIDAzMWI5NjNmMmJjMjc2ZDVmZTAwNTI0ZGY5ZDQ0OGViODdmMjQzOGIgcHkzaworNzMyMTIgODQzMTc4Y2YwODk5ZDdjOWZlNmU4NGNmOTg4YTA4NjAyODk3NGU3MyBsZWdhY3ktdHJ1bmsKKzczMjEzIDBlMDU0YzY1NzA2MjQwMmQzNzhhYjQ1ZGQwZDk1NTRlZjIyNzZiNDcgbGVnYWN5LXRydW5rCis3MzIxNCBlOWIwZGI1NTNkMDFmYTgwZjM5NDRmODM2MzA1YTU1Njk2NWYwY2ExIHB5M2sKKzczMjE1IDNjNDE1NzM0OTBjYjg1Yzc3YTJlOWQ4OWE2OTFhZDhiYjMyNWI1NzkgbGVnYWN5LXRydW5rCis3MzIxNiA1MGJlYTUzMzlmMTgyMmM5ZGY5ZThhMWYzZjc3ZWUzNzkwNDlkYTViIHB5M2sKKzczMjE3IDc0MjQ2MTI5YmQyMjMzYWNhYWRlOTIzZDkxZDY1NWZjNGEwMDNlZWUgbGVnYWN5LXRydW5rCis3MzIxOCBkZGI1MGMzYjg2ZjJlM2QxYmVjM2Q1NTJiMjRjMjI3ZDRhZjRlNTZlIHB5M2sKKzczMjIzIDBiMDc1MzE2NzNhY2QyYjQ1YWQ1ZDFhNzA5YTRhMzE1ZTYwNmMxOTAgcHkzaworNzMyMjQgYTA3ZWE4MmE1YmIwY2M4MTkzOGVkODU4NDIxOGYyYmY4NTA2OTRkYSBsZWdhY3ktdHJ1bmsKKzczMjI3IDM5Y2IwMWIwZmM2NDhmMzFmYWUxMTUzYmNjYWI2NDJkMDk0NTlhYWUgcmVsZWFzZTI2LW1haW50Cis3MzIyOCA2ODZjMTViODY3NDg5OGNjZTk5MjUwZjc3NWMyMGZmOWYxMmJkZWExIHB5M2sKKzczMjI5IGVlZjVkMWNlNmY0YjcwZDliY2YyMzQzOGZmY2Q5Yzk2OWY3MTk4M2IgcmVsZWFzZTMwLW1haW50Cis3MzIzMCBkNDUyNjk5NTZlZmZlMjJkYWNkNWVjZGYxZDQ2YTA1ZTUxMGRjNzY1IHB5M2sKKzczMjMyIGVkNmVkM2M4MzlmNWJjOTNhYWFkM2VjMDQ3ZDBmNGJkMTRkNzQ5YzMgbGVnYWN5LXRydW5rCis3MzIzMyAzYTc4NGIyMTcyMjA5ZjNjOTI0NDA2YjFhY2Q5NDFlN2MzMTRlMjNmIHB5M2sKKzczMjM2IDA4MDVlYTIxMTEyMjBlNDBiZTQxZDk2MjY4OGEyYzI2MDliZjZmODIgcHkzaworNzMyMzcgZDk5MjI4MjljMjA0MzQ4MjZjOWIwMjMyOTVhNWQxMDA0NWU1MTMxNyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMyMzggMDNiZWFkNzI5NDdlZjliNWFmZGM1NGYxODNhZmIxNmRlMWM0NmVlNiBsZWdhY3ktdHJ1bmsKKzczMjQwIDgxMGMyNWYxOWNkOTRiMmI5MDMwMzQ1M2RkY2ZjZTRmYzU4Y2I2YzkgbGVnYWN5LXRydW5rCis3MzI0MSBlYmViNGQ2N2RiYWU5NjY5NzA3ZGIzMjhmYzg3ZTAyMzExYjhkYzQxIHB5M2sKKzczMjQyIGMyY2VjNTZkMGI4YTExNWFjMjNkNDU2ODgyMTY4YmYyMTZhMzk2NTggcmVsZWFzZTI2LW1haW50Cis3MzI0MyBjZWVmMGE3OGJmODc5ZjMwMTc0NGViNWJmMjQ0N2UzYzM1OTRiZDQxIGxlZ2FjeS10cnVuaworNzMyNDUgMDk0ZmQzMzVhNDcxMDIwNDViMGQ3N2RjYTAyOTlmNjcyYTIwY2I3NiByZWxlYXNlMjYtbWFpbnQKKzczMjQ2IGVmNzQzMTJkNzIxNTVmNzE4MGQyOGViMDEzMzYwMTg4MzJkYzQ5ZWMgcHkzaworNzMyNDcgZTRhN2M0OGRlNjAzYmRkMGUwMGMxMDI4MzA3YmU0ZDNjMjBhNWM4ZCBsZWdhY3ktdHJ1bmsKKzczMjQ4IGFlOWI1ZDRmMTIyOWFkNmMyZTQyZjA3NjU0ZWY1OGIwYThkOTZhNzEgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjUwIDYwMjU1OWZhNTI5N2Q1MTkxYzI0NjI3ZjAxMWNiMzY3ODAxY2FkZjEgbGVnYWN5LXRydW5rCis3MzI1MSBkYTMzYmVkNWQ4YzQ4NjI5ZDIwZTcwMGNjNzcyMjFkNWUyY2YzNGYyIHB5M2sKKzczMjUyIDExMmUxYmI1N2U3YjJkZmE1N2YwMTY1NzMyNjQxM2VlMTMwOWZmYmQgbGVnYWN5LXRydW5rCis3MzI1MyA5YzA5MTU0NGUxZGYyNzhlZWE3NGRlZThmMTQ5ODZkNjQ1NTJlMjE0IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzI1NCA1NzhiYWY3ZDMxMTQ3MzIwMWI5MjRjY2I2MDMyNjFkNzM3ODA5MmY2IHB5M2sKKzczMjU3IDgxYTViMWVjOTEwNWFhYjdiY2MzY2EwNjBiNmExMTA1YTgxMjFjMzEgbGVnYWN5LXRydW5rCis3MzI1OCAxMjg1M2RiM2VlYTM3Y2VkNTYyMDFiOGRmMGFiNmRlMjlhMTYxZTcyIGxlZ2FjeS10cnVuaworNzMyNTkgMWY4ZDk4NzIwYWNjYzk5OWQwMTlkN2EzZDcwMTYxYjQ5OWIwMmVmMiBweTNrCis3MzI2MCA4ODg4YTZmZTlkZDdmMjkwZDkzZjZlODc4YTkwZmI0ODJkNGUyODgwIGxlZ2FjeS10cnVuaworNzMyNjEgOTU0N2Y0YmJkNWE0NWY4NTk4MTBjOWU5MDEyNjNmYzliMzk1OGI5MiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMyNjIgMzJlMzQ0ODNlNmRiNzIzM2VlNGU0MTgzNzRjZTQ0NTg0ZGM0YmRjMiBweTNrCis3MzI2MyBjZTg5NTkyYTkzYTQzNmUyYTFhNWU4N2FlZGYxOTdmZjg4NGNlNzllIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzI2NCAzMTdhMTc1ODQwNTgwMzdjOGJmNTYzYTA3Y2RjNmYyM2NiOGYxZjc2IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzI2NSA3ODdmMjdlZDcyYzI4ZDNjN2I1MTU4ODRjMWYzYzRmNDU1MGQ5OGQ3IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzI2NiAxOWQ4YTNhNGUxNDk2MDJlNWQ5ZmY2MjE3ZTE0YTIzMGFkYWVhZDE3IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzI2NyA3ZWU1Nzk5YTdiNTE5NTYxMmUyZTYzZTQ3ZDUxNDA2ZjNmZWZiN2JkIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzI2OCAzZDgzNTdjY2Y1ODMxZWZkOWY2MzU5NGRhOWQ0MGY4ZjUzM2FhMmI1IHB5M2sKKzczMjY5IGZhZmI5OTFiZWE2YjFiMDc5N2U1ODNlMmFhYmQ1YjJiNjFkZmEwNjcgcHkzaworNzMyNzAgNzgzZDQwNDRkYzJkZjkyOWE1OGNkODQwNjFlMTY0MzE1MmM0OGNhYyBsZWdhY3ktdHJ1bmsKKzczMjcxIDBlYmU4ODlmMTA2ZmU5ZGZlMDcyMTU5NjQzNDRlNmU1Mjc1YTRiOTAgcHkzaworNzMyNzIgZGE2ODcxYjlkODg0YzRlODdhMjg3MDViNmJlNDdkZmFhNTVlNjA2OCBsZWdhY3ktdHJ1bmsKKzczMjczIDY2YTViYjNkOGE4ZDgyZDhmOTFkYzA0YTBjMWY2NzI2NGU5N2EzMTkgcHkzaworNzMyNzQgZDY3OWI2MDkwN2Y3Njk4YjBjMGE5YzEzYzM4OWI5ZGFhYzI1MGNhMSBweTNrCis3MzI3NSAzZTJiOGRlNGIxNmNjODJkYWE3MDljMjExZTQ0YjI3ZWViYTAzZGIzIGxlZ2FjeS10cnVuaworNzMyNzYgMDZmNWY0MjZiODQ5MTE4NmQ1ZTg0MmY4MWRmNjg3NTY1ZWEyOGRkZCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMyNzcgODg5YjVmZDhkYTMwOWE1NWNkYWQyNjU2YWY0NzFiZmE2OGM1ZmQ4MSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMyNzggODUxNjM2YjYyYWQ5NWFiN2NjZWRiZjQ1NjQxOGVjZjc0OWNhNGFiNCBsZWdhY3ktdHJ1bmsKKzczMjc5IGQ5NDVlNmRlNTIyN2I2YmJiMmJmN2FlNDcwMTAxMDdiOGJlNjRlYjYgbGVnYWN5LXRydW5rCis3MzI4MCBkNzlmZGUxMDQxYmRjMGFmNzRmOTA4YTc0ODY4MWZhOTEwNjkyZTgyIGxlZ2FjeS10cnVuaworNzMyODEgMDU0ZWE0N2Q2Y2M3MzgzNmQzN2VlOTc0NTdkNWFmMDcxYjg5MzU2OSBsZWdhY3ktdHJ1bmsKKzczMjgyIDBhYmY1NjJiMWU2Y2Y2ZTg4ZWZlZThkYTgxNzFjYmNhMzQxYzE2YTggbGVnYWN5LXRydW5rCis3MzI4MyBmN2M5ZTczNDIwODQwMDgyZDI3NmYzN2VmNjA0MGE4ZDAzMDVhOWIxIHB5M2sKKzczMjg0IDZiZmI1OTUyMTEzNjQ3ZDM2NTNkOGQzMmYyMDFhZmMwYzUwMTllODcgcHkzaworNzMyODUgZjAwMTlmZjZiM2U1YjMzNGJlZDBkMDE3OGI5NzliMjZjODUwZTgxMiBweTNrCis3MzI4NiAxZWYxNDIxYTYxMjI1NTMwYjQyN2VkNTE2N2ExYWFjNWE2M2Q3Yzc4IGxlZ2FjeS10cnVuaworNzMyODcgZWY2NWNjNDAyYzkyMzE2MmFiNTQyZjdhMzA4MTI0MjkyNWIwY2VlNiBweTNrCis3MzI4OCBjZjhmZmFiNDkwMDMzNWE3N2VhZDUyOWQ2YWY2NjFlZGU0NWYxNWU0IHB5M2sKKzczMjg5IDk4NTUyMTMxZjY0MWJjM2IzMTQ0ZWZjODc5YTQ3OTI4ZGE4NGNlNjcgcHkzaworNzMyOTAgNTVkZDllZDIzZWVhZWNmMjgwYWFiNWY5NWQwYWMzMmJmMDZmNmY4MCBweTNrCis3MzI5MSA4ZjkyODc5MjU0N2NhZjRlNjAzYmI4ZmE5MTgzNzI1NmY1ZjgyMDdmIHB5M2sKKzczMjkzIDI3ZTA4OWNhYjcyOWExZGZmNDkxNzRlMmE4OTdiOGUxN2UyOTAwMmYgcHkzaworNzMyOTQgYjUwNGQ2ZDM0ZmNkNzA4MGYxNjdkOTM4NGU0MjBhMmNlOTdkNTNlYSBsZWdhY3ktdHJ1bmsKKzczMjk1IDdhZDJmMjJmMTNlNmEwMGM0OGRiNzBmNWM3YzU5NTk3MjQ2MDA5MjYgcHkzaworNzMyOTYgNjk4NTU3Y2M1ZGM1MDdmOGIyMjU4MjczYmY1NjNmN2EzZmZjZjkyYSBsZWdhY3ktdHJ1bmsKKzczMjk3IGMwMTdkMTkxNjczMTQxNzM2YjVjNzA3YjRkY2JhZDYxN2U3ZDNjNmMgcHkzaworNzMyOTkgY2E1MTk5NjA5OWZkZDI0NzQ0OGY2M2I3NWEzYmM5NjRkZDgzMzM2MyBsZWdhY3ktdHJ1bmsKKzczMzAwIDI3OTVkNmZiMjFlMjYyZDljNzAyZjQzMjI0OWY5MmJhMDg1NmU2YWYgcHkzaworNzMzMDEgNTQxODlkNWE2Njc0Nzk3NDQ1ZDdjYzU5MTcyMGIxYzg5NmQyZTkyNiBweTNrCis3MzMwMiAyNTVkYjcwYmIzMTZhYzBlMmZlYWQzOTEzY2MxNDAwYWNmMWUxMTZlIHB5M2sKKzczMzAzIGNlYjI2MmQ0NGQ3NDY0MTQ2ZDYzYjg0YmU0NDRhYzJlMjY1OTM1MWEgbGVnYWN5LXRydW5rCis3MzMwNCA3MWNiNjAyOWU4OTI3OTUwZTc1ZDRmYWMwNzBhYTg4MGY1OTdmNjRhIHB5M2sKKzczMzA1IDFjN2ViNWI2MjI5ZGRmNTI5MTJkNzFjYzQ5MmE3NjVhMjZmNDJhYTEgbGVnYWN5LXRydW5rCis3MzMwNiAzNWM1YzFlMDdhNDRjZjMwNzVkMzYyMjY5ZmI5MDY1ODA1NzUyOWEwIHJlbGVhc2UyNi1tYWludAorNzMzMDcgZmQwYWQxMTVlMjM4MjlhYjk2YzhjMmU2ZjE5YTU2YzU5OTc2MzdiYSBweTNrCis3MzMwOCA4NmIzMmUxZmQ5OWYwYzdmODFlOTU1MzYyMzk5ZjkxNjMyNzQwMGQ1IGxlZ2FjeS10cnVuaworNzMzMTIgMWI4NjAyYzM4ZmQwYzdhYWE3ODY5NGI3OGJkMWJiOWFkOTUyM2Q4YSBsZWdhY3ktdHJ1bmsKKzczMzEzIGM0YTgxY2UzYzg5MzI3MDIwYzc2YjNhZDUxN2U4ZmZhZmVjYTlhZjUgbGVnYWN5LXRydW5rCis3MzMxNCBlYTMwYWFjYjMxODE2MzdlOGY5ZTAwOWNjYWQyNTQ0ZTBhNGY0OWQxIGxlZ2FjeS10cnVuaworNzMzMTUgODc1MzRiZmQxYmU4YjdiZGQyMGM5MGM4MjFmYWNhYTZiODkwN2VhZiByZWxlYXNlMjYtbWFpbnQKKzczMzE2IGQyZDU0ZGM4ZTQwMGZhYTYxNDBiYmQwZTE2NTYzZjVhN2E0ZDNiZjUgcHkzaworNzMzMTcgNTE3N2I2NzgwY2I3NDJmMDIzMWQ1MGFiYWY4Y2MxYmY5MDFlYTYwYiBsZWdhY3ktdHJ1bmsKKzczMzE4IGI5NmM5ZDhkNWY5ODVkYjZlMzhiYjY5ZWFjYjU2YWY2ZmZiOGI3N2MgbGVnYWN5LXRydW5rCis3MzMxOSA3NjBhODg2NmFlZmZhMjQxMGE3MzRmMjMwNTk2NmQyMWNkODdlZGUxIHB5M2sKKzczMzIwIGFiM2EyMTMzNmE4NGQ2Yjc4OGQ1NGQ1MWRlNGIwMWJiNzg2OTRiMWUgcHkzaworNzMzMjEgNDQ2MDMwZjMxMGE5NTE1YzdhMTZkODlmNjIyYzJkOGIzZjc2YTE1MyBsZWdhY3ktdHJ1bmsKKzczMzIyIDkxZDRjNTE0ZTc4YzAyOTkxZTVjZmViNmRlOGI1Mzk0MTZhZTI2NDYgcHkzaworNzMzMjMgZjU4Mjg3NDJiNDZmZWQyNDc4ZDFiYzRjODRiMDQxM2VhNzYzNjRjMCByZWxlYXNlMzAtbWFpbnQKKzczMzI0IGQ0OWQ0OGYzMzVjOTAwOWJhYmQwY2M2ZDc3OWMxZWU4ZTExNDhkMDMgbGVnYWN5LXRydW5rCis3MzMyNSA5MTQ1ZjU4Zjc0OTk5YTczMzBiMWIwNTljN2NiMzQxMDY2ODYxZGU2IGxlZ2FjeS10cnVuaworNzMzMjYgZmE2N2JmNjc0YWYzNjNlNDQ2NDU1ZjhkYTRkYjQyYTY1ZWM1YmNjMiBsZWdhY3ktdHJ1bmsKKzczMzI3IGVjODQ1YzRlM2Q3MzZiNmE5MGRjNjVjZGZkMjc3N2E5YzRmM2RkMWUgcHkzaworNzMzMjggYjhkMTYwYWQxYzkyNTYzNjU0ODBmNDM5NmE1MGM1ODFkNmVlMWViNyBsZWdhY3ktdHJ1bmsKKzczMzI5IDY2Mjk3YTA3NGQ4YmU5YzA0NTE3NzkyYjlkZWYxZGMwMTZmZmQ0OGUgcmVsZWFzZTMwLW1haW50Cis3MzMzMCAwNDgwNzAwNTUzYWIyM2ZjZWU4NWY2Mzc5ZjUwNWIwZjBjOWQ3MTJhIHB5M2sKKzczMzMxIDc0NGU5ODRmMTg0MWFhMDVmNTA5NGNmZjAyNjE3ODI2YWFlYTJmYjkgbGVnYWN5LXRydW5rCis3MzMzMiA0ZmQzYTRhZWVlNDczZTcxMDczODI3YjRiYjRlNGE4ZTM0YjAwNGM5IHB5M2sKKzczMzMzIDEzYTk4NzRkOGY0NzZhNDJkYjNmNTVmMDBiNzNmMjdiNmU3ZDlkYjggcHkzaworNzMzMzQgYjYwOTVkYzhmMzVjMDcwYzQ3ZTgyMjE4YjFkM2FmNzNkMzBjMjU2NSBsZWdhY3ktdHJ1bmsKKzczMzM1IDRhY2Q5MzZjZjZiNmY5NzI3MjYwYmE1YjQ1MmIxNzM3ZGY3MDU3YWEgbGVnYWN5LXRydW5rCis3MzMzNiBlZGYzZGRhYTM0NmJmZDEyYjA1NjZmOGJmYjg0N2UwNzkyMjgyYmU5IGxlZ2FjeS10cnVuaworNzMzMzcgMDNkMzhhMmFiYzQ2YTk4YmIyZWMzNDZiOTVmZGI5OTY1NzY4NWRlMSByZWxlYXNlMjYtbWFpbnQKKzczMzM4IDY1N2E4YWUwYmJjOTQ2Nzg4NGU0OTA2NWFiNDcxMjMyMzkyYzk4NDMgcHkzaworNzMzMzkgZjQxYjI4NWYyYjU5YWNmZThjNmVhNjEwM2NkNTAyNjcyNGJmYzE1OSByZWxlYXNlMzAtbWFpbnQKKzczMzQwIDI3MTlhODhjMjI5NGY0MDRkMWRjMmIyMDZmNGFhMjBiMWE3MTgyMGEgbGVnYWN5LXRydW5rCis3MzM0MSA2NTc5M2FjYzAwOTUwMDJmYTBmNjIyYWMxZDkyMmI1Y2NhZmQ2MWRkIGxlZ2FjeS10cnVuaworNzMzNDIgMGFkZjBmYTc5OTNiY2VhNDBiMWM0ZGY1ZjU2NjAwOTgyZmZkMDBhZiByZWxlYXNlMjYtbWFpbnQKKzczMzQzIDhiM2FlM2EzODI1MDc2MTQ4N2U5ZDZiOTFlOTE2YmFlODRlMDQwMGUgcHkzaworNzMzNDQgZjYzMTQ3NWEyNjQyYjNiMzhiNDc1ZGRjNWIzMTU1YmUxMzZmYzgzYiByZWxlYXNlMzAtbWFpbnQKKzczMzQ1IGI0NjM1ZGEzMTA5OTkyMjg4OTM3NDY0MGE2ZDUxYWYzZjFjOGI3YTEgbGVnYWN5LXRydW5rCis3MzM0NiA4MGVmM2I3YTRlMGRmNDVhMWRlMjBjNDg2NWFmNWYyNWQ2Y2JhYWFhIHJlbGVhc2UyNi1tYWludAorNzMzNDcgNDc1NWY4OThiOWZlMGQ0OWMxZDY1NjVjZDZmNTQwNmZiMTFhZjliNSBweTNrCis3MzM0OCAwZGU2NmZjZWYwZmE4OTcyZTk0M2YxZDcwZWQxNGUzOGYxZDI5MTlmIGxlZ2FjeS10cnVuaworNzMzNDkgZWM1OTE3Zjc3YWMwZTY4OGZmMjYzOTk2OWZmOGEyMjI0NTgwZjE2YyByZWxlYXNlMjYtbWFpbnQKKzczMzUwIGEyZjIzNzZlMWQyMDFhMjg4ZDY1MTk3NjRjOTI2ZDY1MDRiMDhhMmYgbGVnYWN5LXRydW5rCis3MzM1MSA2MDAzNmU1MGNkMTg2NzU1NDdkOTVhODMwMmU3NzJkODM1ZmE1NjMwIHB5M2sKKzczMzUyIDAwMzFiYTIxMzkwYTFiM2FlZjhjOTk5NDJiOGRiNGJmOTkwM2I1MzEgcmVsZWFzZTMwLW1haW50Cis3MzM1MyAxMTI4ODIzOTc5ZGRlOTQzMjViYzMyYTI1Y2I2MWI3NzhhM2JhODYwIGxlZ2FjeS10cnVuaworNzMzNTQgMGQ5YmQ5MWViODVjYjVjNGU0NGExOGYyOWMyZjJiNjVmMzhmN2JhZCBsZWdhY3ktdHJ1bmsKKzczMzU1IDIwOWE1MzllYmZmODA2YzI5YzYzMjc5ZTA2YmNhYzA4YWZmMDE3YzkgcmVsZWFzZTI2LW1haW50Cis3MzM1NiAzMjQ0ZmM0NzczZjU3NzI1ZWYzZGFlZjBkZGJkNzkwOTIwYjY0NzY1IHB5M2sKKzczMzU3IGJiNjNmZDk3OWZjZDBhODE0NDdhNjcwZWYxZWQ1MjA5MTllODAyYjAgcmVsZWFzZTI2LW1haW50Cis3MzM1OCA1YTM5ODVlNWRhZTNiNTczMDM2ZTllYTVlYTNlMzc1MmIyZDkxMTIzIHJlbGVhc2UzMC1tYWludAorNzMzNTkgMTQwMTgyYWNjZDFmNTgxN2VhMTk2ZGU5NDI3MDBlYjIwZDFlYjkyNyBweTNrCis3MzM2MCA0MTc5YTNlNjYxMjMxZjkzY2M1NTAyNzZlNTFkOWU5MDg1NDRhMGQ4IHB5M2sKKzczMzYxIDk2YTBjM2Y2ZWY4YmVhMjcyODk1NWM5ZTVmMGE3YjUzNjc4OGYwYmMgbGVnYWN5LXRydW5rCis3MzM2MiAwMjc0NDQ4MTBlM2YzOWNiMzU4ZTYxMTQ0ODE0YzUwOTVmNTQwMzEyIGxlZ2FjeS10cnVuaworNzMzNjMgYTFlMDY4MWFjYjM2ZjFiN2E3ODczYTQzNDA4ZTYyOWM4N2M3ZmM5NiBsZWdhY3ktdHJ1bmsKKzczMzY0IDQxZTZjZjY4NWVkMTZiMjlkZTc4OWE4NjFiZGVjYzg4NTgzNzFjOTUgcHkzaworNzMzNjYgMjAxNzBiZDBhZjI1NGRlZDk3YTFmZDczM2VhY2UxZTA1MmI1ZDhmMiByZWxlYXNlMzAtbWFpbnQKKzczMzY3IDcyODg5YTBiOGYzMjJhNzM4ZjE2ZGVmODg1NmM1ZmRjNjVjYjdkZjUgbGVnYWN5LXRydW5rCis3MzM2OCA5ZWU5ZTdhYThhYmMyNDQyNTg1ZDlkN2E5ZmEyOThiZDIwNzZlMTc2IHJlbGVhc2UyNi1tYWludAorNzMzNjkgZTIwNDFjNWM2MDA2M2Y5M2RlZDBjMTc3YjMwMTk0NjliYTczMTQ1YyBweTNrCis3MzM3MCA3NzAwNDA4ZjY1ZmM0MWZmZjYzNTYxNjE4MGQ3NTQyYjE3NGE4OTc5IGxlZ2FjeS10cnVuaworNzMzNzEgZDY2Y2FmZDZiYzIxYjA5OGQ4ZjcyMGRlZmY0NzE1YmQ2NTQzODU1ZiByZWxlYXNlMzAtbWFpbnQKKzczMzcyIDVlYTg1MDdkOWJlMTJhMGY2NTY3NGFmNmJiMGMxODgyMjA5NGQ2ZWQgbGVnYWN5LXRydW5rCis3MzM3MyA2MGEwYWYzMmE2NjNlMmFkMjY1ODc2NjBkYjQyOGEyNTc3OTUyNzE5IHJlbGVhc2UyNi1tYWludAorNzMzNzQgMTJiZjg3Y2QyNzQzMGUwYWRmNzM2OGZmYjk2NTY3Mjk1ZGI2NGVkNSBweTNrCis3MzM3NSA0ZjhhNDRiNTFkMGMxZWFkNGRjNTNmZTg1MGE4YjkyNTEwOWQ3OGVmIHB5M2sKKzczMzc2IDUzMDZiODRkNGZjZWVjNjlmYTc2ODE4MDNlNTMwMGRiZGU4OGY3NTAgbGVnYWN5LXRydW5rCis3MzM3NyA2MzcwZDcxZTNjYTMyNzE4NjJhNTkyNjMwODdmY2RjZWFiY2M3YmU1IHB5M2sKKzczMzc4IDU1ZDIyYjAyNDQ2NGRiMjVhNWNjNTBkNjRkMTE1ZmQyNjhjNzVjMTYgcHkzaworNzMzODAgMGUxYjNjMjRkM2UyN2E2NmYyZThkNzhlZTc1NDUxNWMzNWYxMzQ1YyBweTNrCis3MzM4MSA5ZjNhMjU3NDNmMDNmYjUwYTlmMTBiNGRmNmYyZTE3MmZlYWUyMzI2IHJlbGVhc2UzMC1tYWludAorNzMzODIgYmExMDI1NDBlYTM3Mzg4YWMwOTU1ZTlkOGE1MmQ4ZmVlMDhmZmE3ZiBsZWdhY3ktdHJ1bmsKKzczMzgzIDdjZjg5ZWQ5MGY5ZDA2NGFlNGExZDJjODk4NGQyMDk4MGQ0ZjgzYTkgcmVsZWFzZTI2LW1haW50Cis3MzM4NCBkYWU5YmU2Mzc5YjNlNTg0MTg3ZGE4NmRlZTI2NzkwM2JhNWM0ZTEzIHB5M2sKKzczMzg1IGZjYmNkOTMxMzM4Yjg5MzllOTI1ZDYxZjJkZWU1OWY4YmQwYTFkNDkgcHkzaworNzMzODcgYzk0OTRjODg3ODhmNWI4NTJiZDJlZjlmNzE4ZWNhYzZhYWMyODJmNSBweTNrCis3MzM4OSBmNTc2ODA3NDhlY2JkNjk1NWM3Njk1MTBkN2Q3NDhhZTdiODQzZDZiIHB5M2sKKzczMzkwIDY1MjU1MWFlNDc2NzAyZjM2YWYyNWQ2OWYzZGY2OGFmMTYyNjA0YTYgbGVnYWN5LXRydW5rCis3MzM5MSAwN2UyZWUyZmQzNmQzMmZiYzRmNWRiZWY0MGMzNzNjZDVlYzI5NDNjIHB5M2sKKzczMzkyIDY0OTJiNmVjZTU5ODdhYmU0YzFmNDA2NmZiYTc3NGQ2YTMwMmJmODEgcHkzaworNzMzOTMgZjM0NzU0YTc0NWFlMmEyYTg0NTc4OTMwNzU3MzZlMGUxNzk2YjRlNSBsZWdhY3ktdHJ1bmsKKzczMzk0IDc2MGE3MTBlYjZjMTU2NTRhOTlhNTI4MmNhOThhYjlhNzNiYzdiYTkgbGVnYWN5LXRydW5rCis3MzM5NSAwMTdiNGI2NDRmYWYyNDUzMTNhNGE1Nzc4Yzg1NGUxYTdmMmI4OWE2IGxlZ2FjeS10cnVuaworNzMzOTYgY2RmMjUyYzg3NDMzNmIwNWMxYWE0NTlmNDg3OTViMjQ2ZThkNDVlMyBsZWdhY3ktdHJ1bmsKKzczMzk3IDI0YzhkMWFhYmFkZTMxOTkzNWJkM2I3ZjA1ZDY0NWNiODkwZmU4MDEgbGVnYWN5LXRydW5rCis3MzM5OCA5MjFlNTY5ZDEyMTU3N2Y1YjAzNzQ2N2M5MjQ0NGY0ODVmZjk2Y2E0IGxlZ2FjeS10cnVuaworNzMzOTkgZDgzMzhhOWExZTNhODgxMDBkZTQzMzM2ZjhmYzZkNDU5M2EyNjFkMiByZWxlYXNlMjYtbWFpbnQKKzczNDAwIGViNjFjY2E1ZjU0ZGUzYWFhZGM0ODI2NWZmMmQ0OTk4OGM2NmI2MTUgbGVnYWN5LXRydW5rCis3MzQwMSBiZWU0NmZmMGU1NzgzNWFmMzQ4ZjEzMWY2MjY5ZjZiYjIzMDFkOWI1IGxlZ2FjeS10cnVuaworNzM0MDIgNDUzZmU0ODg0MmQwYjEwODQ1YWNiMzVmZTU5MDNlZDc1Yzk1OGUxNCBsZWdhY3ktdHJ1bmsKKzczNDAzIDc1YzRkM2JjNmNjODg0MDM3N2Y5OGQxMzBjNjFmMGQ0OGY4NTFhYWQgcmVsZWFzZTMwLW1haW50Cis3MzQwNCAwYzM1N2UzZmMzZDAxN2M2NmE5NDAxN2NkYTc1ZGUzNjg2Y2M0MzljIGxlZ2FjeS10cnVuaworNzM0MDUgNzg4ZTEzOTdjZTc3NzQ1OGZiMGRjOGYzYTBlOTZiNThiZTRhOGNmMCBsZWdhY3ktdHJ1bmsKKzczNDA2IGI0MzM5OGVhNTQ5ZGU0NDBlNjI4NTNjNThlMGI4ODNlNjNlZDkzYmQgcmVsZWFzZTI2LW1haW50Cis3MzQwNyA0N2UzMzY1ZTIxNzdlODhhMGE5OWRlMTJhMzJmNDQ1OTVhYmM1YzNjIHJlbGVhc2UzMC1tYWludAorNzM0MDggMDMyYzJlNWUwNjE0ZjM3MGU4MGY5NmE1MzA0NDY5YjQ2NWQxNDkyZSBweTNrCis3MzQwOSAwNGNjZWMwNDQxYjJhNjM5NGFiOTRkNmE2NDA1MjRkMDE0MWVjOTZiIGxlZ2FjeS10cnVuaworNzM0MTAgMDNhODQ4ZDFjYjY4Mjc2YTg4YTA2ZmI3NjczYmMxYWRkNGE1M2IwOSBweTNrCis3MzQxMSAyNWVkYzVmNzJhNzJlYTNjOTNkNjYzY2VmNzVmYjk4NTA0NGVmZTljIHB5M2sKKzczNDEyIDBiODdlNDM4ZTFiNTNlM2Y4MTJjYWQ5NjNhN2ZkYjY1ZDE5OGJhMmYgcHkzaworNzM0MTMgMTllNWRmY2UwZmJiMDI5NWJkOTA1ZGM1NzQ0YmNhYzUwZjZlZWQ4NCBweTNrCis3MzQxNSAyNmY4YWU2ZjAzN2Q2YjVlMjNjMjBlNDVlYjc2NmE5MWFkZDFmZTg2IGxlZ2FjeS10cnVuaworNzM0MTYgYTc2NGRiNjQwMjg0MmJjNzYxODRhMWZlY2EzMjc4MjY4YWYwNTJkOSBweTNrCis3MzQxNyA5MTI0MjMxMzU0ODM4MTYwNmVjYmQ3N2M2ZWI4ZDU0MTZmNTgwY2Y0IGxlZ2FjeS10cnVuaworNzM0MTggMjIxMjc0MGY0NTQ0NjliZTgxMTg3NWI5NTI3MTVlZGEyZjI4NDM4MSBsZWdhY3ktdHJ1bmsKKzczNDE5IGNiNjY0NzNjYmJmODhkOWYwMTg1NzFhYmFlYjE3YmE5ZTY0ODBlYTAgbGVnYWN5LXRydW5rCis3MzQyMCAzZWI4NTEwODA4YzlkMGU0MzMwYjQ0ZTQ3YWE5YjFiNTM0Zjc4ZWEwIGxlZ2FjeS10cnVuaworNzM0MjEgNDBjOGMzNTQ5MmYxNGEyODk3NjU0ZmVhZDc0MTRkM2NjMTczODkzNSBsZWdhY3ktdHJ1bmsKKzczNDIyIDI0N2Y4ZDI2OGQ1OGM0MWEyNDQ2MmIzZGQ3NzNhNjY0MjQ4Y2I1YzUgbGVnYWN5LXRydW5rCis3MzQyMyBmMTE4YWFiNjUwZGQzZTljMjRmYWZjYzMyMzIzMjAwZTdlMTViMDY1IGxlZ2FjeS10cnVuaworNzM0MjQgMGJlMzc3ZTYwODAxYjZhZmViMzI5ZjJmNDcwMDliZWYwYTYzZDBjYiBweTNrCis3MzQyNSAwMTUxMDI5ZGUxZDkxNzQwYzRlMTVmZTcxNzQ3ZGEyYzBmZmQzMDNmIGxlZ2FjeS10cnVuaworNzM0MjYgM2M4ZjRmN2U0YTYyZWIxZDBlMGEzYTkxODE2MTE4MWViY2MwOTA5OCByZWxlYXNlMjYtbWFpbnQKKzczNDI3IGU0MTE5YzkwYmYyOTUzOGQwMDJiYWY5ZGU5ZmRhZDU3M2Q4MWQ0N2IgcHkzaworNzM0MjggOTAzZWZiZjUxMWI0ZmVlMTc5NDlhYjI0ZmRmNGViOTgxZTk4ZmZkMiByZWxlYXNlMzAtbWFpbnQKKzczNDI5IDkwMDBhMDgxMTU5OTQxYmZlN2FmZWYyNWYyYTRlZGE1ZmUxMmFjMDEgcHkzaworNzM0MzAgNDY1OGZjYWFmYzczMjg4M2ZhOTczNzA4MjQxMDUyOGY3OWZjZWY1ZCBweTNrCis3MzQzMSBiNjM0ZDBlYzhkMzUxNTgzMDdlODBiNzEzZTc1ZWQwYmRkODlmMmJmIHB5M2sKKzczNDMyIDMxMTEwNzQ0M2NjMTM2YjBjM2I1MGU1N2ZiMTdlMTUyYzZkMjViZTMgbGVnYWN5LXRydW5rCis3MzQzMyBkOGFhNDg1NDg1YTZjZjhhYTBjNDczZDUxMDAwYjZmZTVjYzZhNzNiIGxlZ2FjeS10cnVuaworNzM0MzQgZTE4MzE4Zjk4NWVkMmUxY2VkNjZmMGE2MjBlNzlmN2QyMzAzNGQwZiBweTNrCis3MzQzNSAxYjNhMTkwMzdmNzY0MTM1ZDE0YjgyMWNhZTE3OGYwYTQ1NDNiZTcyIGxlZ2FjeS10cnVuaworNzM0MzYgNDM3M2YwZTRlYjIxMzJiOTFkZTk3OWE1ZDAxYzc5NjFkZDY5NTk0YiBsZWdhY3ktdHJ1bmsKKzczNDM3IGM3YWM3MGE5NDRiNTAxZDkxZjA3ZjdkNDg5MmRmMDIzZDBjZDMyMTcgcmVsZWFzZTI2LW1haW50Cis3MzQzOSA0YTUwZjBiZGM4MDYzYTdhNjk5NmE1MDYyYjk0MWM0ZjYxNDEyZWEwIGxlZ2FjeS10cnVuaworNzM0NDEgMjAzNDNhYTJhM2ViNzkzZDE0ZmQxNGI4ZjgwMGI5Y2YzYzgwY2ZiNyBsZWdhY3ktdHJ1bmsKKzczNDQyIGNiNWFlNDQwMWViZmRjNjkzMjkyMWM3OWE3NzdiYjllMzJhMzg4ODkgcmVsZWFzZTI2LW1haW50Cis3MzQ0MyA5ODE0ZDdmNjU5YTAwZWRmYTc3MWI5MjdiOWI5YjFjNjYyMTU0ZGEwIHB5M2sKKzczNDQ0IDI3N2ZkMDY0YjUzMDFhNjBhNmUwOGJjMjRiNTc1Mzc4NzA1Nzc0NGEgcmVsZWFzZTMwLW1haW50Cis3MzQ0NSAwNzZkYjRkZTAzN2FiMTAxZWQwZTdiZjFmZjdkMjhlZjFkYmNiM2MxIGxlZ2FjeS10cnVuaworNzM0NDYgYWQyYTU5NjAxMjZkYTIxZWQ2N2QxODVkNDZlOWQwZWEwYWViYWNlZCByZWxlYXNlMjYtbWFpbnQKKzczNDQ3IDQ1YzA1ZmRkOWIzMmE4ZjY1ZDg4ZjdlNTZhMDg2YWZhZTMyM2JmYTggbGVnYWN5LXRydW5rCis3MzQ0OCAzM2ZlZmRlNzkzYjBjYzRlZmFiMjI2NmJiZGI3MzZjZGM4NjhmMTk1IGxlZ2FjeS10cnVuaworNzM0NDkgZWVhNGQyMzdjMTZkNzUxMTEzOWNiMTJhZWVkNjVhNzVlYjFlMmEwNCBweTNrCis3MzQ1MCA4NjU1MDZmMzZlNTg4ZGRlNTMwMjU1MjBjNjhlYTU2Zjk1ZTM1ODk2IHB5M2sKKzczNDUxIDk4MmY3YmEwZTE0YTI3ZjZhMGZmY2JiYWVmMGNkYzA5ZjdlZGFhYzEgbGVnYWN5LXRydW5rCis3MzQ1MiAzOTAyZTRmNzRlZTI4MTdhMjFiNmQwM2U5OTc4NzBlNGI3M2ZlNTVlIHJlbGVhc2UyNi1tYWludAorNzM0NTMgZjAxOTVkYWFkZmZiYjI1OGY2OTRhZDg3YjNlNTU5ZDdiNmE1YWY5YyBweTNrCis3MzQ1NCAwOWU1Zjg4YzliZGJlZDQ2YWVjNGU5NGMwM2ZlNDRkY2FjZWVkMGZhIHB5M2sKKzczNDU1IGM1NjgyY2UyMzQ2NzU5YjhjYTAzYTNjMDE1ZGVhMmM0ZDI1MTIyNzIgcmVsZWFzZTMwLW1haW50Cis3MzQ1NiA2YjY3MDFiYTEyMTFlYTVmODgyZjc2Y2UxMWExMzAyZGEwOGFlMGUyIHB5M2sKKzczNDU3IDRjNmNkYmExYjBiYjNjYTAzNGM3NTc4MDMwYmUwYWI5ZDAxOTk5ZjEgbGVnYWN5LXRydW5rCis3MzQ1OCBjMzg3ZGE4MzdjNGEyM2ZmYmU3N2FhNWFjYzEyZGJkODdlNTc5YTZmIHB5M2sKKzczNDU5IGMxOTg2YmI0MzAwYjcyMmJmYWJhYWJmODBiNTM1ZDlmMWUwNDg5NmUgbGVnYWN5LXRydW5rCis3MzQ2MCA2ZjMwNTRhZmExYTBkOGFiMTBmOWI2MGU0YzFiNjk3NjEyZTYxMjg4IGxlZ2FjeS10cnVuaworNzM0NjEgYTVmMzFiMzBjN2MzY2NkMjljYmViNTAwMGNkODlkMmQyODA5NGJkYyBsZWdhY3ktdHJ1bmsKKzczNDYyIGIwY2IzY2JkZmM0N2FiOWI0YWE4MjA4NmI2M2MxYmY0ZTRlNjM3ZDcgbGVnYWN5LXRydW5rCis3MzQ2MyAyMmM3OTM0MWU1ODBjYTJjM2M1YjBjNDZlZDI3NmJkMWU5ODAwN2U2IGxlZ2FjeS10cnVuaworNzM0NjQgZDExZGJjZjg0M2RmOGMwNGNkZGU4NGMyZTk4YTQ1ZGMxNDhkZTdkYSBweTNrCis3MzQ2NSAzMzQ4OTExN2RhOWM1NjA5YzZkODUwNjgwNTY5OTk3MmM2Mjg2Nzk2IGxlZ2FjeS10cnVuaworNzM0NjYgZDRjNjZmZjEyOWMyYzgzMzA1ODcyNWIwYWJiNjI2MmI1NDM0ODM5ZSBweTNrCis3MzQ2NyBhZDZmNmMyNjE4N2Y5NDRhODkzYWUwMGViZjFkMDhiMTUxZTZjMTk1IHJlbGVhc2UyNi1tYWludAorNzM0NjggN2VkYzM3ODgzZThhMWQ2ZDNlMTVjOTZjNjkzNThhYzUxNjY5NTc1ZiByZWxlYXNlMzAtbWFpbnQKKzczNDY5IDMxNWQ3YWU0MmVhNzAyNTM1Mjc1NjJjMTlhZDIzM2VjYzUxMmY0YTEgcHkzaworNzM0NzAgYTc1ZTE4ZDgxNjZhYzJhZmZhMTFmM2Q1NmQxNDM0MGFhNGUyODI1MSBweTNrCis3MzQ3MSBhMjMwZjhkOWI0MTkyOGM1MmNmOGIyM2VmNmUwYmJhMjQ3ODY1NGVhIGxlZ2FjeS10cnVuaworNzM0NzIgMzcyMjNlZjRkNDcwZDQ3MTdkMDQ0MGY5NDcxZGY3YzVmM2RiNDYzNiBsZWdhY3ktdHJ1bmsKKzczNDczIDk4YTY2ZmEwMWUwYTRkMGE4NjA1MWI1MjBhNGU3NWM4YTY5ZDAxMjYgcHkzaworNzM0NzQgYjgxODkzZDM3ZTdhOWU5NTkwMGM4MjRjOWRlN2JiMGIzOTY2NWI5MCBweTNrCis3MzQ4MCBkY2M5NjJiNGQ4ZmY5MzBkZTBhMzU0ODlkMzRiY2RkYTRkZDYyNGQyIGxlZ2FjeS10cnVuaworNzM0ODEgZTI1YTRkMjdjMzhiNjA2NjA2ZjdjZmYxMjAxZDQ1MzM0NDJiZWEwYyByZWxlYXNlMjYtbWFpbnQKKzczNDgyIDVmYWZjYjMyZjA2MjI3Y2Q5ZjU3ODNhZTg2ZTY1OWIyYTc5ZDQ0YjcgcHkzaworNzM0ODUgZTdkMzhjNDA4MzYxOWIzY2RlM2UwYjZiN2MxZTAzOTUzMjA5ZmYyYyBsZWdhY3ktdHJ1bmsKKzczNDg2IDZkZDUwN2I5NTJjZjkwNDVlNWUwNGJmZWUzODc0NDc0MGU0ZmYyNTkgbGVnYWN5LXRydW5rCis3MzQ4NyAwNzI0OTg4OWE3NzNmMTg0NGUzNzBkYzEyODcwMDNmOGYwNzhkYTM1IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzQ4OCBlMWMyMzBmMDJmZWI5ZmRlY2U3OGMwZDkwMzgyZDA3ZGY3MTFiNTU2IGxlZ2FjeS10cnVuaworNzM0ODkgOTEzYzliZjk4ZDYwOTAxNmEwMWVjNjcwN2VkNzNkNDdlOGRiNjNjOCBsZWdhY3ktdHJ1bmsKKzczNDkwIDdkMjQ1YTQyM2U5NmM2N2M2Y2I0MGE5OTI0ODY5Mzg0NTkxOGE4YjEgbGVnYWN5LXRydW5rCis3MzQ5MSAwMWQxMDcwNWE3MWIxYTIxNGYzMmNmN2QwNGE1YjJhNDY4MWMxNGY1IHJlbGVhc2UyNi1tYWludAorNzM0OTIgM2U0NTQwYjdmZWM5ZjFhZTRmMGE1ODIyZTc1MWE2NjYxNjZmZTgxYiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzM0OTMgZjMyM2MyODBkZjU4NmE0OTJkYzUzNzUyNjdkNjM1MjZhNDdkYmExNSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzM0OTUgZDY2MjI3ODlhZDI3NTYyMGZhZGNlMDM2NWViOTgxZjVhNjE3ZWRiMiBsZWdhY3ktdHJ1bmsKKzczNDk2IDQwYWZiNjU1MzZkYTI2YjE3Y2M5ZTg2ZjA3ZjFmZmQwYjJiYTQ3YmQgbGVnYWN5LXRydW5rCis3MzQ5NyBhOTUwYTQ0MzRmOGJiZmE3NTgwNTVkMDBiZTQ4NDc2ZTE1MDQyYWQ2IHB5M2sKKzczNDk4IGQzYjQ0Y2U1NDNhZTQ0NTE1ZWI0ZjFkOTVlZTg5ZjBlZTM1NjUxMjcgcHkzaworNzM0OTkgMTFjMTZiZTRkMjFjMjEzY2UyMmNiNTYyOTU5ZTNjZmQ5NWJiZDI1NyBsZWdhY3ktdHJ1bmsKKzczNTAwIGU0OGJhOWNlODgzNjI0NWViNjViZDdmNjkxZjJlODJlM2E3MzBhMzggcHkzaworNzM1MDEgODcwMDA4OWVjY2Q0ZDNlMmM4MTE3NGM1NzUzNjEwYTYxNTAzMzJlMyBsZWdhY3ktdHJ1bmsKKzczNTAyIDkxNzQ5N2UyNTA5Y2Q2NmZiYjZkYTE4Y2JiNDM4NzRiMTBjNjZhNmMgbGVnYWN5LXRydW5rCis3MzUwMyBjNGZiMDcxMjE0N2ZkMmU1YWQ5NzgxOWM0YjJmN2RhZDFhOTg4NTE0IHB5M2sKKzczNTA1IGFjYzU4YjU5M2JiYzFiYmJlYmMyOTgwZGY5NzQ2ODQyZjkzMmRmNWQgcHkzaworNzM1MDYgYmM2MWQyMzFhNjUyNmJjOTY3YzVmZjNiN2UzOWQ1MmMxMzAwM2VlZiBweTNrCis3MzUwOSBlMzNiNjU2MjcxODhiZmMwYjMyNzM0MTE5NTJlZWRjMTE1NzM1N2NmIGxlZ2FjeS10cnVuaworNzM1MTAgNWNiNGU1MWE0NDA4NTEyN2NhYWJiMTk0YzFhNDQ0YjVjMTc0ZTQ4NiBweTNrCis3MzUxMSA4YWQ3ZmM4MDlmNjg0ZjliN2YxYzU0NTRmYmUzNWVhNmE4ZDlkNjVjIGxlZ2FjeS10cnVuaworNzM1MTMgMzg2OTIyYjYyOWMzOTA1NGUwOTJkZTJmMTU3YTJmMGUxY2M0OGM4ZSBsZWdhY3ktdHJ1bmsKKzczNTE0IDUxNGZjOTM2NmYyZGJiZjI0MmU4OWYxYjVkYTc2ODFiMDc4NWViOWQgbGVnYWN5LXRydW5rCis3MzUxNSAxNzMyYTU0YTAyNzI1ODgyYjJlZWYwZDI2YjJhN2RiOWI1OGQ5OTg1IHB5M2sKKzczNTE4IGRjMzgxN2E4ZjU1MmViNjhmNGFkNjBiMjZhM2E5Nzk3NGE0Y2YwNzUgbGVnYWN5LXRydW5rCis3MzUxOSA4MGQwZjIwMmI5ZWYyYTYzZjFiNDRjMTE0NzZkYWJhMjM5OWNiNGYwIGxlZ2FjeS10cnVuaworNzM1MjAgNDU1MDZiZTQ0NTE0NjYyMTlmMWM4MjE2MjU0OTI5MGI2ZmQ1MjRjNyBweTNrCis3MzUyNCBkZmQ5YjllNzFiMmViMmI2ZDg0MWFjODIzMTg2Y2MwOTlhM2MzMzQzIHJlbGVhc2UyNi1tYWludAorNzM1MjYgZGJmZTBhYmNkODkzYTI2M2ExMjdmM2UyOTYyNTgwNDNmZjg4ZWY4MiByZWxlYXNlMzAtbWFpbnQKKzczNTI5IGM5NDU5NGU2ZWRiNzMyODM5ZjFlNTJiZTg3OTJiNjcwMjc3NmI1ZmIgbGVnYWN5LXRydW5rCis3MzUzMCBlNzM3MTM1M2EzMDIwZWQxN2M0NWQzMzFlZDM5YjFiYmExM2M2MDMyIHJlbGVhc2UyNi1tYWludAorNzM1MzEgYjRkMGMwMjBlMzU3NzBmZTk0MTA3NjYzMDE3ZTA1YjhkY2ZhYmZiNCBweTNrCis3MzUzMiBmNjVhZGFkMzk4OGQ0YWE3MzA3Y2I0MjQ5NzBmODliMTBhNTU5NzI5IGxlZ2FjeS10cnVuaworNzM1MzMgYTZhMWE2MWY3MmJmODNlOWU0NDk2OGVhMDBlYjFjZWUwNjBlYjJmNCBweTNrCis3MzUzNCAwN2Y3MTFkODdmZmRiYWJjMWViZjc4MDkyZDRmNzZlMDI1MTM4MGUxIGxlZ2FjeS10cnVuaworNzM1MzUgZDE2Mjk0Njk3NjU4ZWNjYThhMTRjYTdiODdmYmViZGM3ZDhiYmYwZCBweTNrCis3MzUzNiBhZDYwNzM3OGE0ZWZkZDMyODU5OWM1OWY0YjgxYjJmMmE4ZWMyMGY4IGxlZ2FjeS10cnVuaworNzM1MzcgOTVlNTc5MWZjM2M5MmQ3ZGI3NTRkNGZmMzEzNTdjOTI4OTU3NDI4ZSBsZWdhY3ktdHJ1bmsKKzczNTM4IDdhMTMxNWE5OTJmMGI2ZWMwYTJhZDQ1Y2E3NjA3OThhN2ZmZGM5ZjcgcHkzaworNzM1MzkgY2IzZDMyMzQzOGQ5MjI1ZTM3MzgwMDBjY2E0ZjdmNjI0NWE5MjY4YiBweTNrCis3MzU0MCBiZGM5NzU5NGU1MDk4YThmNmQ5MWI5ZjU0MzQxNDVlZjE4ZjJlZDkzIGxlZ2FjeS10cnVuaworNzM1NDEgYjkyYjg5MmM0MzYwMzc1MjRkOTM5YWY4MWRjYTZmYTBkZjdiM2EyNSBweTNrCis3MzU0MiA2YTMxYzRlMGRmYzEyYTlhYWE4ODM5ZDViNTc1NzE2Y2M4NDhjN2ZjIHB5M2sKKzczNTQ0IDJhZWVkNGVjYWQ1Yjg3ZDg1NGU1MTQxZTcwZjkxZTQ1Njc3Njk4MDIgbGVnYWN5LXRydW5rCis3MzU0NSBmNmNiMjkzMjAyMmNhZjRkY2Q2OWQ1ZDIwZGEyMDllODI4NDFlMWU5IHB5M2sKKzczNTQ2IGEyMGEzNzdjYzMyN2E4MmRlNzkzMDBmOGMwNDM3OWQzYmE5MTBjNWUgbGVnYWN5LXRydW5rCis3MzU0NyA4YTk3NmNkNTdjYTY1MTE0MmMyYjUzN2ZiOWNiNWM3Y2NjOTAyNGIxIHB5M2sKKzczNTQ4IGYzMThhZGZlMjI2NGFlNmFhMmY2YWFmNmVmNDA3MzM5NzhhYTFiYTAgcHkzaworNzM1NDkgZjRkODRjNGYyODliZGE5ZGM1ZWY0MmQzYzZiZTViMWExOTU0ZDA3MiByZWxlYXNlMzAtbWFpbnQKKzczNTUxIDc5YTYzMGRhOGYwMGUwNjU5OWY2YTFiMWI4YzM3Y2NiYTA2NjIyYTYgcHkzaworNzM1NTIgNTViMzAzZDVkZDU1MTVlMThjOTJmNmZkMzdmYWQwOGJmYTBhYTdjYyBweTNrCis3MzU1NCAzZmUyZDFkMzdjZjFmMDYzNDIzZTgzNmQyYmRlMjBmZjFhNDliOTg5IGxlZ2FjeS10cnVuaworNzM1NTUgNDQ4Njk5MTU2ZGZlYTM1Yzk2N2VjODM5YWVlNDA0YTk2ZWQxOTUyMSBweTNrCis3MzU1NiBhMWE2ZTZkYmRkNmE3MmYwNjZhNzIwZThmZjI4Mjk5ZGNmYWE2NzJjIHB5M2sKKzczNTU3IDI3MzU4OTNjMzg3NDc0NDM0NzZkMzk5M2M5NDI1MDllZjJhN2RmNmEgbGVnYWN5LXRydW5rCis3MzU1OCBhOTM3ZjA0MDk1OTI4MWViYWFiMzQzNzU4ZjVjZThiNDVhNmIyYmY4IHB5M2sKKzczNTU5IDUyYzg2ODczNjgzZWFlOWNlOTliNGVhYWI3NmVjOGQxYTdkZWNjZDggcmVsZWFzZTI2LW1haW50Cis3MzU2MCBlNjkwYjczNmFmNDc4MTM3NmM5OWU1ZTFiYzVhZmI3NDUxYWVlYzkzIHB5M2sKKzczNTYxIGE1Nzk5MmE2M2NhYTA3ZTg4MWNjMmM3ZmFmNzFkMWI5OGI2NjViYTggcmVsZWFzZTI2LW1haW50Cis3MzU2MiBjZjljZWI2ZjVhM2E3YWY2NWJkNDdhNDI4ZDRhYmU1N2ExNmM1YjMwIHB5M2sKKzczNTYzIDg4ODJmOGZlODIzYzY0YjM1NzQ0OGMyMjlhMmJmMDRiOTJkOTI5ZjkgbGVnYWN5LXRydW5rCis3MzU2NCBhNjY2MTM0ZTZjMGMyMzRiMDk2ZjI5YzRjY2ZjMGZmNzk0Y2NiNTEyIGxlZ2FjeS10cnVuaworNzM1NjUgMGZmMGEzOTZmZGE4MzdiMzFhMjA1NGFhODMwNDJiYjAxZWJlMDRmYiBsZWdhY3ktdHJ1bmsKKzczNTY2IDAxNzBjOTYxZjI5MDU0YWY1M2I4N2U4OTI2MTlmMjQyN2E3ZDNlMDAgcHkzaworNzM1NjcgMjUzZGM3YmU1ZDFhYmI0YzE3OTVjZWM4NDVhMTZjMjgyNzgxODQzYyByZWxlYXNlMzAtbWFpbnQKKzczNTY4IGQwNDg3NzM5MWU4MDdjZmY2NjhmZTllNmY0OGI0YzkxMTA4YzIzZWMgcmVsZWFzZTI2LW1haW50Cis3MzU3MSAxNTBlM2ZlYmRmMTc4NWU0OGRkZTQxMGZkNjdlMDNhMWRiZWVkM2ZhIHB5M2sKKzczNTcyIDEyZTk2MGNjMzdkNjFlZDZkMDc3MTRiNWZiYTBjZDhmYWU1MzM1ZjMgcHkzaworNzM1NzMgYTY5YTAzMWFjMTQwMmRlZGU4YjFlZjgwMDk2NDM2YmNhNmQzNzFmMyBweTNrCis3MzU3NCA3YzllMWM5ZWM1ZGZmODIwYTNlMjYxY2Y5MmM0Yjk1ZTU2ODdkZDI0IHB5M2sKKzczNTc1IDRhY2NjOGEzZjlhZmU4NmZjZDQ2NmMyNjlkMGYyZWMxMDUxNjU1NjQgbGVnYWN5LXRydW5rCis3MzU3NiA4MzFiZWVlMjJhOWZjYWNhMTllMzg5YWQxMDU5NzM2ZWMzOWQyMjE2IGxlZ2FjeS10cnVuaworNzM1NzcgOWQwMGZkMDA4N2ZmOTE2NWRkOWZmOWZkZDZmOWQxNjlhNmI3YjExNiBsZWdhY3ktdHJ1bmsKKzczNTc4IGMzZDVkM2M4ZTQ5YmE4YjJkOTkzNDdlMWVmYjNkODdkYjE1MjYwNDMgcmVsZWFzZTI2LW1haW50Cis3MzU3OSAyNWQ4NWU0NDg2YWNmMTAzMzFkNDM2NWRmYzQ4NDJjOTNjZjUxODM0IHJlbGVhc2UzMS1tYWludAorNzM1ODAgYTI0ZjA5NjA2YjgzMjY5OGUyNmFmYjMzZDY0Mzk3NTUxZmQxNzY5MyBweTNrCis3MzU4MSA3N2ZiN2QzYzZkZGU3YTRmNTdjNzA0YmRmZjJiMTBhNTUxOTM2YWI5IHB5M2sKKzczNTgyIDk2MDMzNDQzNTg1NThjYzY1ZjczODZiODY4NGIwZjNhZjk5NWM4YWUgcHkzaworNzM1ODMgNWY0OWVhOGY1OTA4Y2ZkY2U0OGIxYjM0MWNmNGY4MTI2ZGQyZjU3NiByZWxlYXNlMzEtbWFpbnQKKzczNTg0IGI2NzYxNTk0NTY4MTU0NzZlNzliYTkyNzNiMjRkZWM5MDc5NWEyZjYgcmVsZWFzZTMxLW1haW50Cis3MzU4NSA0ZDQ3NmY2ZjFiZTNiMjE1ZGIxZDFkMjA4NzQzOGZkOGExMjY4MTE3IHB5M2sKKzczNTg2IDZkYzg4NGIyZGVhN2FhYzIzODYwODQyNWNjYzU3OTcwNTVmM2ExOTkgcmVsZWFzZTMxLW1haW50Cis3MzU4NyA0NmNmMmU1YTU3ZDRmN2IwOTBiNmU4N2FiZDRiY2E3ZTZjMTQ4OTgwIHJlbGVhc2UzMS1tYWludAorNzM1ODggZGM3NDU2Mzk3OGRmNDk1NGMzYTZlNjk1ZTMwYmU3MjI1MTgwNzkyMCByZWxlYXNlMzEtbWFpbnQKKzczNTg5IDE2NTFlMmYzNmFmMTJhZWFlZGYyMjhlMzNmM2Q5ZGEzYjI2YjI3NzEgcmVsZWFzZTMxLW1haW50Cis3MzU5MCAwNzBlMWUxNWM1MTYxZWI4ODNiNmYzMWRkOGJmNGZhMTE4ODUxZDhlIHB5M2sKKzczNTkxIDJkYTA1ZjgwZDM2NWFlOWY1NWY3NTMxN2VmZjNjZTU4ZDQ5NTIxMmYgcmVsZWFzZTMxLW1haW50Cis3MzU5MiAxZDNiZGRmYTg1MDkwY2M1NjBjNGY5ODdhMjM4NjVhMzg2ZjFiNTRlIHB5M2sKKzczNTkzIDU4ZjJiMjdjOTFhMTRjYjk3NWM5MDA3MjEzYTdjM2Q1ZDJlNzNlYWYgcHkzaworNzM1OTQgZTI1MjJlNGQyZGM4YmYyZjgyNDUyYTg1ZTgyZjMyODJiZTJjYTY2NyBweTNrCis3MzU5NSA1YjNkMGJmYzhkMjg5MWJjNDEwZGQyYTE2OWYyNGRhY2Q5MzI2ZTkxIGxlZ2FjeS10cnVuaworNzM1OTYgMWY2MDU4M2I2Mjg3Y2YxY2FjZTIwZGE0OThlZTFhNTc5NzRhYmIwOSBsZWdhY3ktdHJ1bmsKKzczNTk3IDNhYWYyZTA2NWRiMDU0MDE4MDM3MDVlZDRiZmEzZmQyZjkwMzBkZjggcHkzaworNzM1OTggZjRlZWEwZDIxNjVkYWRjZjFlOGExMTRlMzJhMmE3NzI3MWMyNTMzOCBsZWdhY3ktdHJ1bmsKKzczNTk5IDFmNGY0ZDllYzc5MzA3YWRhMWFlZDNmMTRlMGNjY2ZhODBkYjdiODYgcmVsZWFzZTI2LW1haW50Cis3MzYwMCBjNTM1NzgzNmMwNzlkNzZmZWY4YjgyMDdiNTE1MGQ0MzQyZDFiMjU4IHB5M2sKKzczNjAxIGFjNzhlZWViNDZjMjk1ZjBiNjViOWNiODc2M2U4Y2Q0ZjYwYjU0NGMgcmVsZWFzZTMwLW1haW50Cis3MzYwMiAxMGEyMjljOGJlYWRiOTc2ZWYxYzFiNzE4N2U5MGNmMDIwZTlkNzEzIHJlbGVhc2UzMS1tYWludAorNzM2MDMgNTU4ZWQ3MmQ0ZDMzYmJjMzg2MDE2NTlhYjYzMGJhNTNiNGJlYWUyNiBsZWdhY3ktdHJ1bmsKKzczNjA0IGM0MWZlMTMzZDg4NzMzMDUyZWFlNjliNzE5YjlmNjExM2JlY2Y4YjYgcHkzaworNzM2MDUgMDhkMDU4NTYyMTRhMzU4MWNiN2FlNmUxMzI2NTVlMWRmZDE5YWU2YSBsZWdhY3ktdHJ1bmsKKzczNjA2IDExN2U4NWNiZjE2OWI0YjgwNGIxYzA0YjVkODAwNDlkMDlkMThkODkgbGVnYWN5LXRydW5rCis3MzYwNyA1NGVkMjc5MWJiMTViOGM3MmUwNTMxOTllMTVlMDAxZDA4Y2MwZDc4IHB5M2sKKzczNjA4IGVlMjUzZWI2ZjA4YzA0OTIwZmIyMjVjNmZiOTJkNjdiN2IyM2I3MzEgcmVsZWFzZTMxLW1haW50Cis3MzYwOSA2ZThkNjMzNDRkM2UzMGQ5N2M4MTBhNmFkMzNjZTkyYjBkZTE5NmIyIHB5M2sKKzczNjEwIDRhMjI1ZGU4OTIzMzYyN2M4NTFlMjMyMjMzYjA3MjM3NzdhNmU0MGYgcmVsZWFzZTMxLW1haW50Cis3MzYxMSA1NDRjNWJhZDE2MDc3ZmFkZGUwOWZiZTVjMDUzYTcwZGI2NTI2OWUxIHB5M2sKKzczNjEyIDI2MDJiNTZhZDAyZGM2ODIwNzI5MTU3ODk0ODI1NDk5ZTA5MjhkYzkgcHkzaworNzM2MTMgYjU1YTc4YjM5YmQ1ZWQ2ZmJjOWUyMzQ2YzZhZTBmZjY2Yjc0MTAwMCBweTNrCis3MzYxNCBkZTg2NmY0N2QzOGE4NTdkNzg0MmRiYTBlYWFiNmUxY2NiZjg5NmZhIGxlZ2FjeS10cnVuaworNzM2MTUgMzY4NDc4ODU5ZmUzYWFmOWMyNjMzM2RmMzM5OGUzOGVhYmNmZmI1MyBsZWdhY3ktdHJ1bmsKKzczNjE2IGFhOTUwZjc5NjJmZGM2YTUzNmZlMzJkNzE4MTJiNGIzODIyZDE4ZGUgcHkzaworNzM2MTcgMGMzMTllMDNkOWExMGE5ZWVjYWQyYTNjNjhkYzFlMDNlNjBhYzE1NSBweTNrCis3MzYxOCBjOWU2NWU0OTM2NWRjMzhiZDY3ODkwNDRlNTE1NjUwYTJmNTY5N2JlIHB5M2sKKzczNjE5IGNiNjAwZTAzNDM3ZDY0MGUxZTE4ODUzZDRmZjJkNzY2MDJjYmY1OTkgcmVsZWFzZTMxLW1haW50Cis3MzYyMCA2NTQ0MDc3NDZiZTBhOGYzN2E3OGZiMDkxNzYxOGFkYTk2MWY5NDE3IHB5M2sKKzczNjIxIDkxMDliNDIyYzEzOGZjNGJlYzIyMjBmZDMzZTJmYjJmYTZhMmJiY2EgcHkzaworNzM2MjIgMjIyODkxNmFiNDc4OGY5YWU5ZWJiZDI5NzUwNjM1MmQxZjI5NmQ3YyBweTNrCis3MzYyMyAxZTU1ODlhMTdjZjA3ZWQ5NWU5NDNkYjk0N2QzNGYzMzU1ZTZkNzM4IHB5M2sKKzczNjI0IDdjMjg3ZDMwMDIzYzM1NTkwMGEyMmM3ODAwYTNhOTY5NGJkZGExMTIgcHkzaworNzM2MjUgZjk0YzA5YWE0NDQ0M2JhZmRlYTE5OTYwM2VhYzIwOTQ2NzE5MzA5YiByZWxlYXNlMzEtbWFpbnQKKzczNjI2IDA3MDRmMTViNDY4MjcxYjYwOWNhNGE0YTAwMWMyNDM3NTc1MDI5MTQgcHkzaworNzM2MjcgNDExODg0ZDAxZjhiMGY5NmFkNGQ4MTExODlhNGZiYTNhZWY0MmFkZiBsZWdhY3ktdHJ1bmsKKzczNjI4IDRkYjRhZjBjZjgyYzViOGEwNmNmYjU2MmNmZjBkMDk4NmE3MzllMjQgcHkzaworNzM2MjkgNWM3MDJhNGQ3NWU0NDVkNTJmNmQ3Y2YzMDhmNmNjZjA2MjhkYjM5MSBweTNrCis3MzYzMiA2NzZlNzRjMjBjNmVhM2Q2NTg2YjQ3YjRlMWRmNGQ2Y2ExYmQzNzkzIHB5M2sKKzczNjMzIDBjYzIxYzk3NTFmMTQ3NWQ1NGUwOGU3ZTkxNjAzNDhjNjA1Yjg0MTIgcmVsZWFzZTMxLW1haW50Cis3MzYzNCBkYjkxYTA0NTMwNTBjMjhkMTU0ZDQ2ZGQ1NmUyNjVkMWJkZTI2YzgzIHJlbGVhc2UzMC1tYWludAorNzM2MzUgYjMyZDEzNmYzZTIwMDRlNzllNGQ2ZGFiYmEyMWZmZWRkMDVlYzBmMyBweTNrCis3MzYzNiAxYTk4NDcyMzQwZmEwZDg4YWUzMTE4YzBiMWNjYWI3YjJjZWE5NGE4IHB5M2sKKzczNjM3IGUzMDI1YTRjMGFkNzg1MzNmYTUyNTk4Y2JjZGRmYjYzNGVhNzEwOGUgcmVsZWFzZTMxLW1haW50Cis3MzYzOCBmZmQ3Y2Y1YzcyODVmODlkM2EwZjJmZmRkYjBhNmFmY2ZiYjcwMzcwIGxlZ2FjeS10cnVuaworNzM2MzkgNTJjNDhkZWRlNWY3N2Y1YjYwNTg4OGZkODhjMzQ1OTQ2YjI0YzZmOCBweTNrCis3MzY0MCBhYjkxZmE1ZDBjNWNjMjIyNTU5ZTU1MmI2NzM4ZWEzMjRiMWM4ZTZlIHB5M2sKKzczNjQxIGQ5NGIzZWQ1ZDUzNjVjNDc0MzE4OTZmODM3OTQ2NDYxZTRjOWMzMzcgcmVsZWFzZTMxLW1haW50Cis3MzY0MiBhNTExZmU1MTY2ZmQ3NzhkYWI2NjcwMDIwOTQ3OWM0ZWI5ZTM5ZDdiIHB5M2sKKzczNjQzIGQ3NDk2Y2MxMGRmZWVlYTA3MTlkMDYxOWU0MDk1NWM4YmYyMTc4NmMgcmVsZWFzZTMxLW1haW50Cis3MzY0NCAwZjdkYzU3MDRjNTkwNjU5NGVhNmVkYjg5MTVkY2I1MTdhYmQ4MGUzIHJlbGVhc2UzMC1tYWludAorNzM2NDUgZjQ3Y2UxMWUwNzJiNjE1NTc4NWZhMjc4ODEyNzBiMDlmZjc4ZTMyYSBweTNrCis3MzY0NiA2NmNjNTA4OTA4OTRjMTNlYjE5NjllNzY1MDhmNDE1ZjQxNTRiNTQwIHB5M2sKKzczNjQ3IDU2M2NjNGRjYzcwMzI5MGI3MGE5MmFkMGU0ZjQ4NDBkMmM0YjE3ZmQgcHkzaworNzM2NDggNTI4NDBiZTQyNTMwZjc2MzA3ZGM0MjhjZDliNWIzOTJmNjc5ZmM4MCBweTNrCis3MzY0OSBhMzdiYjU5ZDRiNTNhOTI4NmVjN2Y0NjNhZTNjMmYwZmJkN2QxZmFiIHB5M2sKKzczNjUwIDA5YzQ0YzkzMzk0MmI0NDg4YTYwOTM0MGJkYTdkMTNjMjgyYjVlYmYgcHkzaworNzM2NTEgNDM2OTgyMjQxNGMzYWJiYzA3MzA0NGRkYWM0NDc5YWI3NjdiYjI4ZiBweTNrCis3MzY1MiAwMDgwMDI4ZjVjYTAwMTIzZWYxMjQwMjE5MDc1ZDMyYjIxYzI1NGRiIHJlbGVhc2UzMC1tYWludAorNzM2NTMgYTkyNTJiODg0N2YwN2Q3NjYzMWQxNTQ2MTdhMDBhYjIyYTIyMjY4NCBsZWdhY3ktdHJ1bmsKKzczNjU0IGRjZjcxMjFlZGIyZTg1ZDAwZGUwMTYyODk0ZDJjYWJlNWZhYjNlODQgcmVsZWFzZTI2LW1haW50Cis3MzY1NSBmZGMyMTBhOGEzMjhlMjVjZWExNDEzZjhkNTEwMTQyNWMzMmU4NTcyIHB5M2sKKzczNjU2IDNmNDY2OGI0OWYxMWUzOWJkY2E5YjM3ZWY1YTY4M2ZmMmFkNTFkYjYgcHkzaworNzM2NTcgNTIwZjEzMTBhZTYxMzkwMjQ4ZDNlY2ZkYjYwMWQ2ODdmMmZhNzc1ZSBweTNrCis3MzY1OCA1MjdiYWRlMzA0M2IyM2E3N2I3ZDYxMDUzZDExZmVkODM1MmUyOTA1IHB5M2sKKzczNjU5IGQ1MTAxN2RjYmEyNDdmODk1MWZhYmEzNjkwODBkNDVkNDhiZDI3N2UgcmVsZWFzZTMxLW1haW50Cis3MzY2MCBmM2RhZmZkNGNiMjhjNjI4ZTJmOWY1ODVmYzdlMTc0MWFiMzRiNmQxIGxlZ2FjeS10cnVuaworNzM2NjEgOTgyOWI0MjM5OWU1NmQ5YjJhZDQwNGMzYTdlZDU0ZjI4OWJmMzdlZSBweTNrCis3MzY2MiA1MDg4MDY0ZDYxNzA2NTg2ZjY4YWM1MWNmYzA5OTJkNmNjNDVhZDMzIHJlbGVhc2UzMS1tYWludAorNzM2NjMgNzA0ODk0ODY0NmIwODdlZjAzYmE0NTFlYWRhZTI5YTg5ODZlMzlmMSBweTNrCis3MzY2NCBjNDVlMzMxMjM4YWU3OTZhZWIwYWY4ZjM3MGRjNmJkYjAzMjc1YzUwIHB5M2sKKzczNjY1IDE2NGQ2NGIzOWFjMDZjMDE4N2JmOTZiN2MzMWM5MDg2NDI1MGE5ODUgbGVnYWN5LXRydW5rCis3MzY2NiA3ZWNjMDc1ZDE3MWY3YTIxYzVkNDIwNjM1YjIwMTY0OWFhNmMyMTY5IHB5M2sKKzczNjY3IDM4MGFmOWU4MGMyZThlZmQ4YmY2Yjk5YjhjNmJkYWZlZmZhOWFiM2YgcmVsZWFzZTMxLW1haW50Cis3MzY2OSBhNjY0YTQ0NDNhMzk0ODQ1MGFkYjRlZDRmNjA1NjEzYjE5NjJhMzc2IGxlZ2FjeS10cnVuaworNzM2NzAgNjVhZGJhOTVkN2UwZTczZjJjN2VlN2YzOTY1ZGU2OGFiY2M0OTU2ZCByZWxlYXNlMjYtbWFpbnQKKzczNjcxIDBkMDU1YTA2MmNjZTFlMDIxODM3Mzc1ZmY1ZDU2OGQxOGE0MjYzYzQgcHkzaworNzM2NzIgMjk3ZmRlYWY1ODIyMjUwMDkzMDI5MzA2NDA4MWU3Y2Y1M2RhYjgzNSByZWxlYXNlMzEtbWFpbnQKKzczNjczIGRiNmQyY2UzODMwYWY2ZDZhNDVjYjY0MDQzMTlmODAyMzk2NmY0NTIgcHkzaworNzM2NzQgOTQ2M2ExMDI1MTVmM2QzOTkyYzNkZmZkOTA0OTJmNjRhNTU3MzE1YiByZWxlYXNlMzEtbWFpbnQKKzczNjc1IDRlMzU1NjQ1M2ZiY2NiNjhkZjA5ODk4MDdiOWE5MzE5NmU3OTQ3MmQgbGVnYWN5LXRydW5rCis3MzY3NiBhNzlmNzRkNmY1YjM5NTA4NmNhMzIzOWM2ZTg1MTUyMzAzZWU4ZWE3IHB5M2sKKzczNjc3IDZlN2ExNmE2NDQyZjZjODQzYjZlYTk5ZjA0NDhlMWMxNzkzZTZkZjggbGVnYWN5LXRydW5rCis3MzY3OCA4ZjIzYmQxMDkyZmMyNGYwMzZiOTE4MmMyZjU5YjY3YTVhODc5Njg5IHB5M2sKKzczNjc5IDFiOGEwMWRjN2Y0NWE0YzhkMjQwNTJlMTVlMDg0YTliMmU5NTcxNzYgbGVnYWN5LXRydW5rCis3MzY4MCA2Mjk2NzQ0NDhkODRmYmJmMmQ5YzI0MjAxNTAxYTg0YzVhMmY5YTk5IHB5M2sKKzczNjgxIDIxMGE1MWVmZGM4MjY3MGQ5MGRlNGM2ODVjYTZmZTg1NjVmNjU1MzMgbGVnYWN5LXRydW5rCis3MzY4MiBhMjc1ODNjODM2YjIyOGYzMzJkNDM0YTQ2ZTcxZTkzMWNlNGUxODNjIHJlbGVhc2UyNi1tYWludAorNzM2ODMgZTBkMjdiNzZhMmU4ZDE0NGUzMTgzYWM0OTA0NzVkNTQzMzAwOWY2NSBsZWdhY3ktdHJ1bmsKKzczNjg0IDc5YzJlZDYxYTAyNTNkMzk5NGQxODk2MmE2MDc5NDhkNzEyODZjN2IgcHkzaworNzM2ODUgNTEzOWU4YjBmMjFjNzMyMzgxZDg4OTlhZWRlNmNiMTkwYmJmZmZiMCByZWxlYXNlMzEtbWFpbnQKKzczNjg2IDcwZWRhMDJjN2E5OGUzMWJkODM0YzQ3ZWQ4YzQ1N2VhY2I0NjMwOGUgbGVnYWN5LXRydW5rCis3MzY4NyBlNzhiOTliMDQ4YmFhODdjNzhjY2YyZmQ2Mjg2MzY0OTA1NDFiZTRlIHB5M2sKKzczNjg4IDNkY2M4ZmM0MzU0ZWZiZTkyNTY5MjZiZjY4NGI3OGE4YWY3MjY4ZGQgbGVnYWN5LXRydW5rCis3MzY4OSAzOTE1ZGVkMmQ2MGYxZmE2Zjc5ZjE1ODA3NGE4NmRlMWZlNjc0MzdiIHB5M2sKKzczNjkwIDY4MTAyZTdlMWViN2QzMzY3YmQ4ZDlkMTcyNTYxNzdlYzY2NjRlNDMgcmVsZWFzZTI2LW1haW50Cis3MzY5MSA0ODdkNmYwMTg0MmE5M2ZkYzMxYmRhZTcwY2JhOWNkMTUwOWE0ZmI0IHJlbGVhc2UzMC1tYWludAorNzM2OTIgNTE0Y2FlNjJjY2RhNWYwNzM2ZTQ1NDk1MWE5MGZlODdjNDYzMGZjZSByZWxlYXNlMzEtbWFpbnQKKzczNjkzIDU5MTc4NWNlZGNjOGE1ZTdjZDJmZTMxZWE1OTFiMjc1MzEyNzk1NmYgbGVnYWN5LXRydW5rCis3MzY5NCAzZDU0Y2JmZDM4MDk5ZWQ0OGZjYzZkNTBiNGZjOWEzOGM5ZDcyMTY4IGxlZ2FjeS10cnVuaworNzM2OTUgN2UzOTIwMjhhMDllZGEwMmZjYTg2OTllNTQzZGM5YmFhZDRlNjQ2NyBweTNrCis3MzY5NiA5MzIwMzNjMzA0ZWY3MjA1NDk3NzkyMDg3ZWEzNjljMzFhZGJlM2EyIHJlbGVhc2UzMS1tYWludAorNzM2OTcgZDJiMWY1ZWYyYWUzZDJkZWEwM2JhNjg2Mjk1ZDQzM2M4OTNmNmYxNCBsZWdhY3ktdHJ1bmsKKzczNjk4IDAxZTEyNWQzMTlkNDgxODAzZDA2Yzc3MDMxOTQ0ODZkZWZkMTQ2MTcgcHkzaworNzM2OTkgMjlmYWM4ODQ4NDg5ZmQ2NmJiZDc3ZDAyOTQxYjNlNGYzODBjZDZhMyByZWxlYXNlMzEtbWFpbnQKKzczNzAwIGQzZDZjY2M5YWJiNDEzNzg0ZWU0YTQzZTdkZGFkODVlZTQwOGNhMzMgcHkzaworNzM3MDEgYzA2NWYzM2Q5YzljZjliNmFhMDcwMTQ0ZjExMTJmYzk1YjZlYjY4NiBsZWdhY3ktdHJ1bmsKKzczNzAyIDViNjYzOTA3NWM0NzljZThmYzBjNWM0YTViZmNlMmExZmU5MmIyMTAgcHkzaworNzM3MDMgMzJmNzExMjBlYTU1MDQ0ZjgzMjFlZmYwYjM3ODUyZjcxYTI1ODI2NyByZWxlYXNlMzEtbWFpbnQKKzczNzA0IDBhZTEyMDJlNTM2MjBlNTk0Yzg0N2Y2OTUzNDcyOGM1ZWFiOWJiN2YgbGVnYWN5LXRydW5rCis3MzcwNSA0M2ZlY2MzOTQzN2IzMmNlMzFjMmNiNGM1MGU0NmU5MjcwOTdlNTgzIGxlZ2FjeS10cnVuaworNzM3MDYgMDhiNzYyOTM0NDg4YTI1ODVjZjFhODhhOTY2YjE5M2MxNWU4YmQ5ZSBsZWdhY3ktdHJ1bmsKKzczNzA3IDg0OGM4NmY0YmVkNjA2MGJlZWUxYWJkMjRiMGI3MmFlZWY0MGRlZjQgbGVnYWN5LXRydW5rCis3MzcwOCA3MGFkZjBmNjhmYmNhMWNlNzc4ZjNkYzAxMDFkOWRlM2RkNjNjOGQ3IGxlZ2FjeS10cnVuaworNzM3MTAgMmZhZjJmYTJhNDIzNTU3M2E1YTI2OWFmMmVlZDk1ZTkwNTM0NDY4OSBsZWdhY3ktdHJ1bmsKKzczNzExIDk5ZDUyZDhhZDAyNjZlZjZhNDBjYTEzMDUzMTI1ZWNhMjcyY2Y4MmYgcHkzaworNzM3MTIgNGY5MGRkYzZjM2I2NGFjODE4ODA3YjNiOGJkNjUzODBkMzQ3ZDM3MSBsZWdhY3ktdHJ1bmsKKzczNzEzIDM4MzY5OTg0NWM5OWIxYjkzNzE3MDYzMjE2ZmM5MjdmNGNkMWM5ZjUgbGVnYWN5LXRydW5rCis3MzcxNCA2NzY4YjIzNTBjNTc2YTY2ZDIyZDM3YmEyOGE5ZGYyMjZmZTczYTk0IGxlZ2FjeS10cnVuaworNzM3MTUgYWRmNjZiNTIwMjJkYWQ1ODVhNTRiZDZmNDFmNWMwNjFjMDg2MWRjMiBweTNrCis3MzcxNiAzZTAwMWVlYjgzODFiOTM2MWEzNDU2MGUyMGNmNjQ1NGQzMzUxNGMxIHB5M2sKKzczNzE3IGU4OGNkNDJmZjI4MmRiYzZjZWIyZTJhOGUxNTNhYzUyZTIyNmVhOGEgbGVnYWN5LXRydW5rCis3MzcxOCBjNDBkNmZlZDZiNmJhNTVlMmNmZmM5YTU5MmI1OWY5Mjg4ZWQzMTZjIHB5M2sKKzczNzE5IGRkNDcwYjcxMjkwMTQ3MzU2ZTYwYTJhOTMzNzNmODkyYjA2NTQxOTMgcHkzaworNzM3MjAgNmQ1MDc1ZWNjMTRjMGEzMzk2NWY2Nzc1Mzk0NjFiZDFhZTUzZTU1ZCBsZWdhY3ktdHJ1bmsKKzczNzIxIDFjNzY5MmQyNTA5ZmEwMTBkNWUxNGQwN2QzZjBiZDczZWU2MmY4ZmYgcHkzaworNzM3MjMgZjJiNjViZDY3ZGYyNWRhOTdhMmEzNGM0MGYyMGQ2OTVhNzcxN2E3NyBweTNrCis3MzcyNCBlZDJhMzM2MjA0ZDZhYzNhYTE3ZmU5MDZlOGJmYjg1MDJmYTg4ZGFmIHB5M2sKKzczNzI1IDU1MDJmMjU1YzI3Y2VhNTQxMzM2MTBhOWE4ZjY5MjMyNjAwZTI2M2QgbGVnYWN5LXRydW5rCis3MzcyNiA3NjU0ZmE4NTdiMDNjMmFiNjdiOWQ0OTk2YzQ0ODAyMDI0OGQ0YmY5IHJlbGVhc2UzMS1tYWludAorNzM3MjcgOTIzMGMzYTgwZGNhZDM4ZTViMmNjNjVlN2YwN2FmNjdkODUzMDQ2NSBweTNrCis3MzcyOCA3MmFkMTE5N2YwZmY5N2E4M2ZjNDc1ZTYzNzdmNmVmMDE2MjZiM2JmIHJlbGVhc2UzMS1tYWludAorNzM3MjkgNGI2Mjc5NjFiNDQ3MzYzOWY5NGZmYTJiMzZjYjBhZThkZmZlN2YyOSBweTNrCis3MzczMCBhMDdmZDQ3ZGY3NmIzMjY1ZWFlY2M5OGNiOTRmYjAzYjBlZjc0ODBmIHB5M2sKKzczNzMxIGUzZmEyZGRiYjNhMzE1MDkwMTBjZjM1NjliY2E1MzVmOGYyYTg3NzQgcHkzaworNzM3MzIgN2U0MjgzMzYyZDI3N2ZhYWMzZTA2ZWQ1ZWEwOTk5ZTI3ZGYwYzUwNyBweTNrCis3MzczMyBlODA4NTk0NjFkZThjZDBjNGFiOTRlZmZkZjZjY2YzYzE4MjIzZDM5IHB5M2sKKzczNzM0IGIxNjhkY2NlZTYwMjY0NGFhMjc2NjcwODhmNzA5ZWIwZjc0YmQ1ZGQgcHkzaworNzM3MzUgYzI0MjcwZjU0NWI4ZmE2ZmI2ZWE3MGU2MTg0ZTYwYTM2MmIzNDE4ZCBweTNrCis3MzczNiA0M2YyMjVjN2I3N2VjNDczNTg1MGZhOTE3YmRhZGMyMzE1YzY4MTIzIHB5M2sKKzczNzM3IDljZDc5ZGVlNWJjZTRiZWZlOTEzYWM5ZjgwOGM1Y2IxOGMwN2M3ZmUgcHkzaworNzM3MzggZTBlZDYyN2VhNjc5NDg1NDYzMzUyYTBmMDY5OGFjNjk1MDMxMTcxOSBsZWdhY3ktdHJ1bmsKKzczNzM5IGYwZWVhZGRhZjgzYTRhOGZhMGFkNTViOGE0N2JiOGU0MzE4OTE5MTQgcHkzaworNzM3NDAgMTUxYjdkNTM2YjVjNDViYjIzNDVmZDc5ZmZlNzhkMmFkODc3NTM0MSBweTNrCis3Mzc0MiAzNjZjOGE0ZTVhNDZhMGExYzcxYjJkZTk0ZjIwOTI0Mzk1MzVlMWRiIHB5M2sKKzczNzQ0IDc0ZmM0NzZmZTcyODMzZDBmMTU0OGY5YzZhZGVmN2U5NWRiODJiZmYgbGVnYWN5LXRydW5rCis3Mzc0NiBmMmE1MjZjYzNmMmFmMjY3NTA3NDExMThmZTU4N2VlOTc5NGE3NzNhIHB5M2sKKzczNzQ3IDY1MTgxMTRmYjA2MzgxZjk1NzJiMGNjOGU3MjYwYTI0ZWMwZGUwOGUgcHkzaworNzM3NDggMGM2ZmQ1NTYxNDlkYjJmNjc2Nzg2ZDQ2MzA5ODEwYTc2NTQzMDdlMCByZWxlYXNlMzEtbWFpbnQKKzczNzQ5IGNjNDNlOTIzZWY5NjE3ZGVjNWExMGM3Y2JkMGUzMWU3ZmJjYjY2MTggcHkzaworNzM3NTAgNjIxMGRlZGQyY2Y3OTU0OTNhYzJlMjI4OTk2NWFmNmI4ZGQ3MzBlOSBsZWdhY3ktdHJ1bmsKKzczNzU2IDliZGRiYTZlNzY0ZTZkNDU1YzE1NTdiYzdjM2UzMzRiNTZjOTM0ZTYgbGVnYWN5LXRydW5rCis3Mzc1NyA0NjYzMTYzZTY0NDk0MmUyYjk0NjlmZWE1MDgzYjIxNmExMzY0OTFmIGxlZ2FjeS10cnVuaworNzM3NTggNWM4OWI5MjczZTYxMTJmZTdmY2ZiNzZjNDgxNmZlMjM1MTQyNDQ3ZSByZWxlYXNlMjYtbWFpbnQKKzczNzU5IGNhNTNmODZmZTY3ZGIyYzhlMjFkMTA5ODBlYWEzN2MzMjYzNzljYmQgcHkzaworNzM3NjAgNmNjMTg1ZjQyYmY2NmFiNTdjZjQxYmMzODc2ZmY2Nzk0NDdhYzM4ZSByZWxlYXNlMzAtbWFpbnQKKzczNzYxIDNiZGU4MWU3YzlmNDAzY2U4NjFhMGFjMWI1NDUxMDEyMTk1NzkyZTEgcmVsZWFzZTMxLW1haW50Cis3Mzc2MiA1ZDc0OWJkZGE5NzljYWQzYTcwNzEzNzkwN2EwOWZhNGZlMTlmNmJjIGxlZ2FjeS10cnVuaworNzM3NjMgMmE4ZGFmYzg0NTI4Yzc4ZTcwZTIyNTM5YWE3ZTNmNTVlOGUwYzIwNyByZWxlYXNlMjYtbWFpbnQKKzczNzY0IDdkNTE0OTE1NTE1ZTVjNmQwM2VlMjJjMDAwNzc2NTRjMWM2MmQyMjQgcHkzaworNzM3NjUgZGE2OTgwNzk5NjM5OTA4ZjRhZGUxMjBkYTg1OTk3NzRlOWFkNDdkZSByZWxlYXNlMzAtbWFpbnQKKzczNzY2IDFkNDhjNzAxZjA3YzYxNDZmZmNlNzE4NzNiOWNlNmNiZDZjOTM1MDYgcmVsZWFzZTMxLW1haW50Cis3Mzc2NyBlZGNmZTNiOGY3MzYxNjcxOTQ1Mzc2NzNjMjI3ZmE0NDc5NmM5M2I5IGxlZ2FjeS10cnVuaworNzM3NjggZjE0OWY1N2Y3N2Q2ZmU4MDA3ODIzMTkwMGYzMWIyNTA3NjcxNDRhOCBweTNrCis3Mzc2OSBlNWM4MjkwYzc5NDliZDYwMGJmZjYyNjExODY2YmM0OGE0Zjg3ZTI0IHJlbGVhc2UzMS1tYWludAorNzM3NzAgNzRjMGE3ODExNGFlNGUyMzBkYTJlOGI0ZjJhM2UxNzA4YWFjZDEzOCByZWxlYXNlMjYtbWFpbnQKKzczNzczIDU2YzY2NGI5MTU0NWI4MTgxM2ZiYjVjODUwNWE5Y2Q0Zjk4ZjI3MzMgbGVnYWN5LXRydW5rCis3Mzc3NCBmZWE1NzE2NGJkNzkxY2VkNDUyZTVmMzI3NGIwNWQ3MTEwYjZkMDhiIGxlZ2FjeS10cnVuaworNzM3NzUgN2RjMGQyYzRiNTIwMjMwNmIyZWIxY2FiYWNkOTI4ZGVhOGU0NTEwZCByZWxlYXNlMjYtbWFpbnQKKzczNzc2IDA2NTNjMWEwY2IxZTEyNjRkNWUzOGY5NWMxZjA3MzI4MDEzNjhkODMgbGVnYWN5LXRydW5rCis3Mzc3NyAxNzgzODgzZTc2ZDc3OTkzMmFmZjdmMDQ5MWNkMzZlMWQ0NzI2MDk3IHB5M2sKKzczNzc4IGVhNDRhMTY1YjljZTU0NmQyMWE5ZGNlYzk2M2VlNjZiMmM3OTdjZWYgbGVnYWN5LXRydW5rCis3Mzc3OSBmNjVkNjI0NzM0NjViMTU0YzU3MDEzNmI0NjhhYTNmYzEyZmI2ZjBlIHJlbGVhc2UyNi1tYWludAorNzM3ODAgNDY2YTcxZmM2MjVjMWU2ZDMxODJlNDEyMzdiODIwM2M5NGQ3ZTA3NyBweTNrCis3Mzc4MSBmYjU0MmVkOTFlN2Y1NWI4MDdmYWU2MWUzNjZmZWZjZDFlNGI0MDM5IGxlZ2FjeS10cnVuaworNzM3ODIgMjYyNTVmMjlhN2U0OWQzNzcyOWQ3OWUxYWVjYzEyOGI2NmQyNWQ0ZiBweTNrCis3Mzc4MyBjYzZiOTFjM2Q3MTliNjljYjc3YjBmNDA0OTA2Y2M0Y2NlNmNhNDAyIHB5M2sKKzczNzg0IGVhOTMzYzI0YWQxMDMzZDg2MTM0NzMwYzc5YzkzMDI4YThhN2YyODYgcHkzaworNzM3ODUgNjVlNDFiY2JjMjVkNGQwNmM0MDBmMzQzZmUxZGEzMTMwMmM3OTdmNiByZWxlYXNlMzEtbWFpbnQKKzczNzg2IDdiNzU4ZjgwODMzMDViMzMwMjc4NjJiNGEwYTExNzNiOWY4MDMyMWIgbGVnYWN5LXRydW5rCis3Mzc4OCA1MjJhZDllZWQ1NThlNzhhYmYwZWNjMjgxYzRiYWEwNDQ1YWM0OGI0IHB5M2sKKzczNzg5IDU2YTI3NjM5NmUxNWY5Yzc5NTNhMzNjY2EzMTM4ZjBhNTcwMDUxMmYgcmVsZWFzZTMxLW1haW50Cis3Mzc5MCA4NTY3N2EyYzc4NTVkMjIxNDM0ZDRiMGE1MzAxYmJjZTg3NTJiYTQzIGxlZ2FjeS10cnVuaworNzM3OTEgZWVlYjM1ZjI4ODEyY2U1ZTg0YzBiOTg2YjhiYTgyZGVkZDJkY2I0NCByZWxlYXNlMjYtbWFpbnQKKzczNzkyIDg5Njg2NzczYTYxOWE3NzBjZDhmMWUwNDAxODY3ZDBkZjM4N2IwYTQgcHkzaworNzM3OTMgZDhjODNjYzBkM2ZkOGM1NGM3YzU3MjdhZGM4MmEwNjI4NzczMGY2NSByZWxlYXNlMzEtbWFpbnQKKzczODAxIGE1MDE1NzNjMjNmMmE1Nzg2NjE4N2NiNzFhZjYxMTY5NDkwYzc3NTMgbGVnYWN5LXRydW5rCis3MzgwMiA0MjdmYjYzM2M0Y2NlYWY2NjYzMTk3ZjQ1ZmYxNzg0NzA0ZTE4NmNiIHJlbGVhc2UyNi1tYWludAorNzM4MDMgNDZhOWIxOGExYTE3NmUxMTMyMTNlYWM0YjE0MWRhODQxOTZiMTg5ZiBweTNrCis3MzgwNCA4Nzc2M2M5N2Y2OGVhM2YwNGEwOTA4OTcwYTRhNDZmNjRjMDUxYmQ2IHJlbGVhc2UzMS1tYWludAorNzM4MDUgODU0YzA5NDhiMDhkMDQxOGQ2ZTFlNjc2OGVkNDgxZjUwZmRmMzdmYSBweTNrCis3MzgwNyA1OWM2NmFkZTNjMjY4MjJhYTg4ZjlmMDJkMTVkZDBmZTU4MDk4NTNhIHB5M2sKKzczODA4IGZjNmFkZmZmOWE5ZWZkNTI3MTEzYWVmOTlhMDJjNjU0NDUwMzMwYjEgcmVsZWFzZTMxLW1haW50Cis3MzgwOSAxYzUyOTIxOGJhOTY0NDQwMDIzOGY5NjNmMWEwODQ0N2NmOGFiYmEyIHB5M2sKKzczODEwIDNhMjE0NjIyYzk0M2NhNGE4ZDAwZDA0NzM4YjE5Mjk1Nzk4OTE3ZjQgcmVsZWFzZTMxLW1haW50Cis3MzgxMiBmNmZhNWZiMDEwYmY3ZmNhZDY5YjE2MjRmNTJhODc3ZjI1Yjc4MmIzIGxlZ2FjeS10cnVuaworNzM4MTMgMGE0NmUwZTNmYzA3NDg1M2Q4MmM1ZTUwNjRhNDI3ZGFiOWI0NGQ5YSByZWxlYXNlMjYtbWFpbnQKKzczODE0IDdiMGU3OTdmNmIyYzg2ZWMzMGQzZTZiNjE3MTgxNDUwZjdjODZjMmQgbGVnYWN5LXRydW5rCis3MzgxNSBiMmM3NzY4NTdkYzRjODczZmY1OWVmYzdmYzg5ZTUzOTkyZDJiZDUzIGxlZ2FjeS10cnVuaworNzM4MTYgODg0MmY0ZTJmYjFiNzRkYjA2OGRmMDdmZTU5ODRmNzdjYWY2NGVjYiByZWxlYXNlMjYtbWFpbnQKKzczODE3IGRmYjk4NWE4ZGU2ZjY1Yzk2M2VlNGM1N2ExYzBlOWZmNzA2ZThiYWYgcHkzaworNzM4MTggOWM5ZmU5YWFmYmE2ZDZkMDhkZGZmZDA0ZTc3ZTdkNGNjYzlkZGEzNiBsZWdhY3ktdHJ1bmsKKzczODE5IDAxYWY3YjUyZTBkYjU5ZTM1MmYxYzhlMGQ1ZDdlZWRiY2QzMTQ1ODMgbGVnYWN5LXRydW5rCis3MzgyMCBjN2RhMGRjNmViMGM2YzQ0MGIyYTIxYTVkMTlkMjU5NzBiNzQzZmUyIHB5M2sKKzczODIxIDhhN2MyMDY2YTliMmU2MTRkNTIzMzk0NjNhNDA1OGVlZTk4NDk4OWUgbGVnYWN5LXRydW5rCis3MzgyMiA0NjE3ODgzYWMxZjMzZmNlYzQwZmI3YThkYjcyZjViOWU2Y2U2MDM2IGxlZ2FjeS10cnVuaworNzM4MjMgYzJmNDI3MGJlMzYyOTJkNTRmN2U1MzlkNmM5NWI1MWM3OTQzMjJkYiBweTNrCis3MzgyNCAwZTM5MWJmM2ViOWRmOWNhYjhhODY2MjU1YTkxMTBlNGRhMGJiYTkxIGxlZ2FjeS10cnVuaworNzM4MjUgOTgwOGUzOGZkZTcyYjZiMzJiYmJlNjFhZjQ2ZDU0MDU3YzY0NWIyNyBsZWdhY3ktdHJ1bmsKKzczODI2IDU0MGZkNDYxNjNkMWM5YmU0YzViMDFiYzA0NzNkYWI1YTUzYmU5ZTEgbGVnYWN5LXRydW5rCis3MzgyNyA1MmFhYTc3YTVkYmZjN2ZjYTQ5MWZhYmQ4OTFlMGFmOWQxOTNkYzM5IGxlZ2FjeS10cnVuaworNzM4MjggMDhiNThjYmVjZTc5ZWVkZjk2OGIzZDBiNTMwMGZkMTQ2NmI1Y2FiYyBweTNrCis3MzgyOSAwNDkxMjI3ZTU0MGVjZTU5ZjZmYmNlODA3MjEzMDc4Y2I1N2M1OTE4IHJlbGVhc2UzMS1tYWludAorNzM4MzAgODNjZTMzMmEyODM0ZjliZjg0N2RkNzQzZTZjYzg4YTRiMWU1ZThmYyByZWxlYXNlMzEtbWFpbnQKKzczODMxIGY4ODI2OTZmZDEzNGY3NzE3NzRiYjMzYmIzMzg3YWZmZDRhYjZmOTkgcmVsZWFzZTI2LW1haW50Cis3MzgzMiAwNmIzNjBhMzNkNTcxMWUzMTBmMTkyNmQ0YTY1YjE1MGJhNGQyMmM5IHB5M2sKKzczODMzIDdiOWFkOWFhYTkwMjRjMTRmNmY1YjQ0MzQ1OWNiMTFhMjcyMWRhZmMgcHkzaworNzM4MzQgZDExZDg5OWFhYjFkODBlNGFiMjc1OGZlZmQ1YWI5MzYwYTgzNjZlNSBsZWdhY3ktdHJ1bmsKKzczODM1IDdkZDhkYmQyNzAzMzM4M2VhMWI3MjRiMTgwYzg5NDQxNTNkNGVhNzEgcHkzaworNzM4MzYgODY4ZmYzN2Y1YTgwMTI0NzY3ODFlOWI1MDRhZjhkY2ZlNzEwMmI3ZSByZWxlYXNlMzEtbWFpbnQKKzczODM3IDFkZWE3ZWQ2ODY3ZDdjN2QwODUwMmNhMjA5Y2ZlMTY0ZjRlYTIwNzggcmVsZWFzZTI2LW1haW50Cis3MzgzOCA3ODk4N2JjZjFhYmZiMDgzNTRjMjQyODhhYmYxYzM4MDFhNjA5NmY2IHB5M2sKKzczODM5IDdmZjE0MDVjY2I2NGJiNTFjNGUxOWMxOTgyMzcyNTUyMmE4NDFlZTQgbGVnYWN5LXRydW5rCis3Mzg0MSA0NGZjZGJiNjIwMzhiMTE1ZjNlOTcxZmZlOWY2NGNlZWUwMDRjMTJmIGxlZ2FjeS10cnVuaworNzM4NDMgZjc0MmMwODc1Mjg4N2QzODhkMDAzMDU0NDQ0OTQ0YmU0ZWY3MDM2OCBweTNrCis3Mzg0NCA0ZmY0YWE4ZDY1ODMyOTkyMDc2ODMwODNkZDYxNjJkNDBlODJmYjRlIHB5M2sKKzczODQ1IGMyMzM2MTViMzRhYWI4ZTUwNTdhMmU4OGNkZGNiNDAwMTdiYjUzNjIgcHkzaworNzM4NDYgNDY2Y2E5NmJlMTgyNDAwOWEwZDRiN2EzM2EwZmFkYTdhOGJmZDExMCBsZWdhY3ktdHJ1bmsKKzczODQ3IDc3ZWJlYWNjMTA3YTgwNjBlOWYxMjJiNTJlYWU5YzAzOWE4MTQ2YWUgbGVnYWN5LXRydW5rCis3Mzg1MCA4ZTgxNTc0NDVhNTU2NTcyNGYyNzY2MWUxZTRlZDJiMzUxOTcyZGM2IHB5M2sKKzczODUxIGFiNDM0ZjBkY2IxNWQ5ODRlOWU2MzMzZTM2OTk5OGQ4MWZkOTM1M2UgcHkzaworNzM4NTIgYTc2YjM0Y2ZjODk3YzEwMjZmN2JmMDBjZjkyNDNiMTE3NWE0ZGEzMCBweTNrCis3Mzg1MyBhNDBhMjI2NjFlNTA0ODdkMmE3Mzg3OTkzNTQwZWJhYzA4NGE2MGQ3IHB5M2sKKzczODU0IGM2ZjEzOTM0ZjRjNjY5YjQwM2U0ODJkM2MzYWJjMzU3MGE0OTAzMjMgbGVnYWN5LXRydW5rCis3Mzg1NSAxMGE2Y2EyYzBjY2IyNzI3YTI1ODZmYThmNDcxZTNhZDYzNzkxODQ5IHB5M2sKKzczODU2IDI2ZjYwZmQ0N2FkM2ZhNGQ0MjQ4MjdhMjNkMDIzZmEwYTMxNGU2ZmQgcHkzaworNzM4NTcgODVkYjZhNTQzYjNlNDRiYWYwZTYxNjhjMjNjZjE2YThlNTM5NmY3MyBweTNrCis3Mzg1OCAxZmMzN2ZlY2FmOGYzM2Y3NzczMGViODhhMzkyMjIwZjIxZjQyN2FiIGxlZ2FjeS10cnVuaworNzM4NTkgMjQ0NDZkYzg3ZjczZTdkZjA3ZTJmZGI2NTdhMWUxMzA1MWFhNjg4ZSByZWxlYXNlMjYtbWFpbnQKKzczODYwIDA1MjJlNTcxY2U3NDk0ZmE3Zjc1YjBiNmQ2YWJiNzM0MzM2NGVjOWUgcHkzaworNzM4NjIgN2JiNzc1OGU2ZDY0YjhmOTBmZjI1N2NiNzY4ZjczZTNjNWE1NzJjYSBweTNrCis3Mzg2MyA0MjYzOTRkYmJjZWUyMmY4NzExZGU2OWJkYjNlNmQzYmQzOWNhZWZiIGxlZ2FjeS10cnVuaworNzM4NjQgYjQ2YWJjMmYyYTFmYmFjYWVjMDNlOTI5OTljNmZjMTA2YTA2OWM0NSBsZWdhY3ktdHJ1bmsKKzczODY1IGQxZWRhNzBiMzgzZTllZWJkMzlhMGUyMThiZTBhMTQyNGE3MWRhM2YgcmVsZWFzZTI2LW1haW50Cis3Mzg2NiBjMjNhOGYxY2ZhYjhmYWNhMWJjMTA2M2U4YjQ4MTAxOWFjMGE5MDA2IHB5M2sKKzczODY3IDQ5ZmYyMzQyMDkxOWI0MWVjMGI4Nzk0MDI0NmZiMDllODM5ODQyMjUgcmVsZWFzZTMxLW1haW50Cis3Mzg2OCA3NDljZjA2Y2QwNzA5OWE2MGUzZmI1MDAyOGQwY2QxOGMzNWEwNGE1IHB5M2sKKzczODY5IDU5Y2Y1ZjgwOGMyNGE5OTllMzc1MGM4ZGNhYjY4OTQzMWFiMTdkYmUgcmVsZWFzZTMxLW1haW50Cis3Mzg3MCBlOWZjODk0N2M0OWE1NTYzOGE5ZWE0YzNlMzI2YzljZGQ0YWZkMGVjIGxlZ2FjeS10cnVuaworNzM4NzEgMzhkNmU0ZTUxYWYwODk1MWIwZTk2Zjg5NjA3OWU1MGRjZDZiYWQ2OCBsZWdhY3ktdHJ1bmsKKzczODcyIDFjZWY3ZTcxNjI0NzhiOGY4NmZkZmVmOWFjZGRjNGEwNzVmYWZlNzEgcHkzaworNzM4NzMgMzA2MzcxNGZmOWYzMWMwZmFiNmExODE3YTJmODYwZGE2ZDA4ZmMwMCBsZWdhY3ktdHJ1bmsKKzczODc0IDYzOGVhMTM0YWE4MmQ3MmEyYWMyMGJhZjIxOGUwZjRmOWU4MjBiZmUgcHkzaworNzM4NzUgZGU1OGY2MTM4NmMzYjQ5ZTU1ZmMzZGM5YWE0ZThiMjI3NjI1MDUzZiByZWxlYXNlMjYtbWFpbnQKKzczODc2IDQxNjgxMzhjMzcxZTVkMzUxMDRmN2I3NTYwNTc1MjRmMGQ5NGYwYmQgcmVsZWFzZTMxLW1haW50Cis3Mzg3NyA0ZWE4MTMwZWUwOWU4NGI0NDQxNjkxN2RhMTJjMWQ2YzE1MDI4NTk1IGxlZ2FjeS10cnVuaworNzM4NzggODEwMDJjNzYwMGJkNWQzMjAxOWVjODYxMjk5MDhiNTNjODFmMzk4NyBweTNrCis3Mzg3OSBhZGZkNmI3M2QzNjQ3NDFiNGQ4OTc5YTEwNjRmNDM4YTNmNDFkZWJkIGxlZ2FjeS10cnVuaworNzM4ODAgODgwYjUwYmNhMWIxOTIyZjdkMmI0ZTFlYjQ1MzA5Yjg2ZGIzYjlmNCBsZWdhY3ktdHJ1bmsKKzczODgxIDk5ZTMwYWY0MTE2OWYwNWE3NTYxNTJiZjkzMGFmZjhkNmNiNjVlOGYgcmVsZWFzZTI2LW1haW50Cis3Mzg4MiBlZTE1NmVjNWVmYmY5NmQwMGQ1NDYwZWZhOTdjYTAwMDlhYmY0ZWU1IHB5M2sKKzczODgzIDFmNDhjYmQ0MzIyNmQyNmVkNTYxZjc0ODE1YjE4MWFiODU1OWJkZWQgcmVsZWFzZTMxLW1haW50Cis3Mzg4NCA3ZmEyMWJkYzM0OGI0ZjZhMWI3YTgyMmY1N2I1MTQ3ODMzYTU5Yjk0IGxlZ2FjeS10cnVuaworNzM4ODUgMWZkODM5YjgzMzBhMWI2NDUyYTA3Yzg0ZjAxNmYzYTUwNjFkMmFhNSByZWxlYXNlMjYtbWFpbnQKKzczODg2IGRlNmM0OGQ3M2I3MTZlZWFmM2JjYTdjYzBhNTMyMTlhM2I3ZDUxZjUgcHkzaworNzM4ODcgZmEwODBjNGY1MzlhOWVhOThiOWVhNDA2NGY3OTk3OTZiOWQyN2Q5NSByZWxlYXNlMjYtbWFpbnQKKzczODg4IDg5N2JkZWQ4MDAyMDZhNmY1NTIzZDIxOTBjNWFjMWJmMDAwYTNkODAgbGVnYWN5LXRydW5rCis3Mzg4OSA4YTg0NGE1YjE2ZGJiZjk5MzIzNDQwYmM4MzMzNmJlM2RmMTRjOTMyIHJlbGVhc2UyNi1tYWludAorNzM4OTAgODYwYTA2OWQxMjZjOWJhZjYwYWExMDVmMWM1OTVlNGZjMGFkMWY5MyBweTNrCis3Mzg5MSBiM2ZiNWU2YjdlODJkNjNmYmM2N2E3ZTFjMjg5ZGYyYzA2NmQzNDZkIGxlZ2FjeS10cnVuaworNzM4OTIgZjAyZTQ3MTIxOGI3NzkxZDQwOWQ1M2Q3MWJhYzMwZWY1NGY1N2M1NCByZWxlYXNlMjYtbWFpbnQKKzczODkzIDhiZWYzYTI2N2UxZWU4NGYzZjdhNmUzYzdlNGI4YTZlZTJkYzdhYmYgcHkzaworNzM4OTQgZDliMTliMzdmODFhZWNiODMxYWYwZjk4MzE1NGFjNDllODc4NTliMSBweTNrCis3Mzg5NSAyN2I1MTYyNjMyNjkxNmU3NDc2YTE0MmFjZjgwYzA3YzZhOWFkM2JiIGxlZ2FjeS10cnVuaworNzM4OTYgZDYxYzRkY2Y2MTg5OGRiYjcyNWQ5MTI2MDVhMDEwMDljN2VhOWEzNyBweTNrCis3Mzg5NyBkNTk5MjU0YzIwM2JjNjk3YjZiYWJjYjAyY2VkZTdkYzUwZWRlOTRiIHJlbGVhc2UzMS1tYWludAorNzM4OTggYmEwNDU5ZjJjMGNiNDAwNWNkZGIwNDA2ZDgyNDA0OWRkZTJlNWY5YyByZWxlYXNlMjYtbWFpbnQKKzczODk5IGJlNzM2YjQ5MGFiMmM4YmNkNTkyYWFjYjMyZjJjYzI3YjlkZTU3N2YgbGVnYWN5LXRydW5rCis3MzkwMCA0NjhhNDBhZGY1NmY1ZTNmNDU1MDcxZGYyY2IxZTdlM2E3OWFhMDQzIGxlZ2FjeS10cnVuaworNzM5MDEgYzkyYjkzNzc1NTY5MGI5NDRlODY5YTE2MjEwN2FiMmU2YjQzMWY3NiBsZWdhY3ktdHJ1bmsKKzczOTAyIDlhZmVhZTBiYWJmOWM0ZjY1OGZiM2UzYjcyMmQ1NGYyNDk0MWIxNzAgcmVsZWFzZTI2LW1haW50Cis3MzkwMyAxM2M1Y2Y0ODk3OTdjNDViNmJhZDg4YjZhNGQzNTA1MmQyYzJkODVhIHB5M2sKKzczOTA0IDgyOTA1MTkxOTllYzJmYjdhMDllYzdkOGE4NmMxODAyNGQxMDMxOGMgcmVsZWFzZTMxLW1haW50Cis3MzkwNSA0ZjFiMmE0NTdlODNjZTEzNGEzNjBlZTZjYzYwOTI4MmJhZjhkODY1IGxlZ2FjeS10cnVuaworNzM5MDYgMGYwNjViNDhhY2Y5NTEyOWQyNzc3ZTJkMmE3YWMxNzcyNzMzNDA5YyBsZWdhY3ktdHJ1bmsKKzczOTA3IDVmNDUzNTIyNTgxOWJlZTE0OTUzMzc5OTAzZWY1NTUwOGUyNzYzZjYgbGVnYWN5LXRydW5rCis3MzkwOCA1ZDliMzIzMDE4MTU0MjM4OGYwYzYwNTY3ZWUyODQ5NmJiZjJiMzc4IGxlZ2FjeS10cnVuaworNzM5MDkgZGEyYzE0N2U5MjlkMGExZDBiMWIwNjgxMzgwMTgzMjllMjZmOWM4NyBweTNrCis3MzkxMCA1YTI4YTk1ZGVjMTkzMDVlN2ViMGZmNjE0YmNkOTkwMGQ2Zjc3YWFlIHJlbGVhc2UyNi1tYWludAorNzM5MTEgOGE3N2VkZTRlMTc1YThjNjRkMmY3ZTA1YzFlNGY4MWYwMzJlNzI5NCBweTNrCis3MzkxMiA0YWUxZTk2ZTkzNzc0YzA3ZWU0NDFlYTU0Y2FhMmJmM2I3OTk3MjNkIHJlbGVhc2UyNi1tYWludAorNzM5MTMgYzQ3ZWY0ZTEwN2RmOTA4YzcxOGU5YjUxNGZiZDFhZGEzMDZmNjg5NyBweTNrCis3MzkxNCBiNTNlNDJlNTBjNDE1MzJjOGM5MDQzMGFhODc5NmRkODk0MWI0MWQ3IHJlbGVhc2UyNi1tYWludAorNzM5MTUgMzg5OGQ1MjBmMTA3ZmY0MDFkN2QwYmJkZTM0NDY5ODM2NGU3MDMzMyByZWxlYXNlMzEtbWFpbnQKKzczOTE2IDU2MDkzNTJmZWExMjBlNTlkMjE4ZTUwZjY1NGI0ZjVhMmUzYWZkYjggbGVnYWN5LXRydW5rCis3MzkxNyBlODlmYWFhZmEzZWVhMjQ5OWUyYzdkMDIxZDNhYWZlOGM0ZmRmMDU5IHB5M2sKKzczOTE4IDBiMmFiYTdhYzFmYWY2MDA0ZDhhOTViN2RjMjFiMWU5MzA2NWE0MDMgcHkzaworNzM5MTkgYWVkYzIyMGNjOWJmODkxMTIyOWJmZWFkNDcyYTE0MTNjY2M4ZDVmZSBweTNrCis3MzkyMCAwMTEzN2UzYjllYmU4ZjhkNWFjZDA1OWEyMTcwZWM4YWFhYmMzNjJjIHJlbGVhc2UzMS1tYWludAorNzM5MjEgODc3YmQ3ZDUwZDg5N2Y0ZTZmZmE4MmIwZjliODNiYmJhNzczY2ZmNCBsZWdhY3ktdHJ1bmsKKzczOTIyIDZmMGU1OWZhYjYyY2ZmMjU3ZWE3N2FmNTIyNjU3NTMxNTgxNDY5MmQgcmVsZWFzZTI2LW1haW50Cis3MzkyMyA2MjY0MTMyNzI0NjQ5YmE0NjU2NDMyNjg4ZTVkN2MyMmFhYWJkNzNlIHB5M2sKKzczOTI0IGQwYjNhZjU2NWVhYTVhOTBlYWQ0Yjk1ZDRhNTM0ZmViNTY4NmRmMmMgcmVsZWFzZTMxLW1haW50Cis3MzkyNSBlNTNkMDMxZTU0ZDQ3NWM0MDY3MGUwNDE3ODdmOGEzMzIzMThjMzI1IGxlZ2FjeS10cnVuaworNzM5MjYgMDNiODY2MDZjZTBhMmE3OGJjNWU1OTFlMDllMzFmMzYzOWZhZWFmMiBsZWdhY3ktdHJ1bmsKKzczOTI3IDliNWQyODE4ZTJkMGU3MDI3NzljODQxZjg0NWJhYzVlNjJhYTEwODIgcmVsZWFzZTI2LW1haW50Cis3MzkyOCAxMzkzNDdiMDBjMThmNzljMDE2OTY5ZWQxY2Y4MzY4ZmM3NGNlZGEyIHB5M2sKKzczOTI5IDJmZDc0YzUwMjYwMDM2OTExMWRmZTAyYjFhMzY5ZmEyZGQ3OGNlOGQgcmVsZWFzZTMxLW1haW50Cis3MzkzMCAxNGNkMTlmZWFmMjBkODU5MGU1ZDZkN2NiZTJhZGRhOTdhYTMwMzFkIGxlZ2FjeS10cnVuaworNzM5MzEgY2RkZDUxNjRkYjAzY2E3NGUwYjNhZGEwNDJjNjI3NTM2ZmY0YTNhYiBsZWdhY3ktdHJ1bmsKKzczOTMyIGIxYzYzNzJhODA5MmMzZWI4NzFjNzk1YWEyNmEwZTIzNTE3NzRmODEgbGVnYWN5LXRydW5rCis3MzkzMyAyMjE3MThlNzU3YmFmYWQwNWJmZWU1MmJkMzlmMzc5ZDhlNjA5MjE4IGxlZ2FjeS10cnVuaworNzM5MzQgZmVhYWE3Y2MwMmQxMjJjZjAwYmUxOWI5Yzk0YTcyN2U3OTk1YTY1NSBweTNrCis3MzkzNSBlNTM2YTNiM2E4ZDBlNWIwYTczMTI1ZjJhZjM2NjExYzRkMTJkYmU3IHJlbGVhc2UzMS1tYWludAorNzM5MzYgZTIwMGVlOWNjYzRiZWQ2MTI2YmYyZGQ2Y2U2M2EzYTVkYjhjNTkyZCBweTNrCis3MzkzNyBhY2FhMGM4N2Q0MDFmMzU5M2MzYzdkMTAzOTkwMTRhYzczODljYWE5IGxlZ2FjeS10cnVuaworNzM5MzggN2IyNDY5NDVmYzhjYjBkYjU2ZjYyZDBlNmY0ZjQ4NzJjMmRhZjU0OSBsZWdhY3ktdHJ1bmsKKzczOTM5IGIyOGRhZGQyMGQ5YjdiNDllZDA2YzY5ODBkOWFjNjBhYTI0ZDJmNWIgbGVnYWN5LXRydW5rCis3Mzk0MCA1OWMzNGE5MWM1NGQ5ZmQwYzQ5ODdiYjUxM2VlMzQ2ZDFlMmI1ZDQ3IGxlZ2FjeS10cnVuaworNzM5NDEgODQxYTFlNjhiNGVkY2NjYjIxODRmYmNiMjFjNWYzZmMzOThlMDk3MSBweTNrCis3Mzk0MiA2N2Y1ZTAxZDVhNmE3MWUyNTc4NzZkZmUwNWM1YjE2ODVjNjdlZDg0IHB5M2sKKzczOTQzIDgwNjYxNjA4ZDRlMjA1N2NjZGM0NzQ3ZDEyMThiZDEzNWU1MDFkOWMgcHkzaworNzM5NDQgNGM1ZTA3NWY1NDczZGE1NjNjZDllYTQ2NTY3MjJhZjdkYmI5OTJlNSBsZWdhY3ktdHJ1bmsKKzczOTQ1IGYzYmYwODMyOWYwNzk2NmI1Y2UwOWY0MmZmMjA1NjAyZGY2YmZhNzcgbGVnYWN5LXRydW5rCis3Mzk0NiA4MjJhMDJiNzFiYmViMmMzN2I3YjljOGI0NjE0MDg1YTdmYjIzOGQxIGxlZ2FjeS10cnVuaworNzM5NDcgYzY0ZjlkYzNjNmE0OTg1YjM5NDVkNDc5NzQwMjNkMzRhNDM3YjQ3NCByZWxlYXNlMjYtbWFpbnQKKzczOTQ4IDU3YjM1OTFmMGNiMjMyYTQ3ZjI1ODdhOTcwZjMxNzE1ZGY2ZWRkOWUgcHkzaworNzM5NDkgNTZjY2VmMzQyMGU3ODEzMzM2MDliOTE1NjMwZjg3M2E4YjcxOGU0NCByZWxlYXNlMzEtbWFpbnQKKzczOTUwIGQyN2ZkYzcwMzc5YzI2YTEwOWFjNjZlZWZmZWI2MzFmNjk0ZjBiZGUgcHkzaworNzM5NTEgMGI1MGU2ODQxYTgxYmRiZThlODk2YTVjNDliYTA3NWQ5MDAxMDVjNCBsZWdhY3ktdHJ1bmsKKzczOTUyIDg2ODIwMjI1YTRkNWFmYjc2MmRlOWFmZDAzNjI5OWQ4MDA4NTAyNjYgbGVnYWN5LXRydW5rCis3Mzk1MyBhMWI3OTc3OGYyMmUzZTI0Y2EzMmM1NTljOGYxYTAyZjVhNzIwMTdhIHJlbGVhc2UyNi1tYWludAorNzM5NTQgM2RhZGYzNDUzZDA1NTA5ZDY4YzRlMzU4NDA2MjZkMTRkYTc3MGRiOCBsZWdhY3ktdHJ1bmsKKzczOTU1IDkzYjQ4YWI5MGVhZDBlNWM1ZjZhYTZiYzc2MmYzMWMyZmNmOGIyZWQgcmVsZWFzZTI2LW1haW50Cis3Mzk1NiAxMDI4YTk5MWI2OGVjM2U2YzZjZGFmMzgyMDk3ZTA0NWYxYmE0OTU5IHB5M2sKKzczOTYxIDBjODEyODcwYTk3NWVjMGI4Njk2N2YxZTlkNGRlNDVhOTFkNzRjMDEgcHkzaworNzM5NjIgMjYzMGMwNzViNTdjYjM1N2NhYTM5MjRjMDA4OGU0MGI2MjE4OTRlOSBsZWdhY3ktdHJ1bmsKKzczOTYzIDQ5M2M3Zjk1MGEyYjliNWJhODE1ZGQ1OTVmYzM1Y2EzOTJjZmUwMTUgbGVnYWN5LXRydW5rCis3Mzk3MCA4NDhhNWFjOTI0YjliNTAwOGIwMDVmNDg4YzUxMzUyYmNlODZhYmM5IGxlZ2FjeS10cnVuaworNzM5NzEgMmEzOThlZGViMDhkOTUzYzQzNjI0Njc2ZjkwMzI3YjBlYTE1ZTBlZSByZWxlYXNlMjYtbWFpbnQKKzczOTc1IGQwZjIyNTg2NWJlNjU2M2NiODMwYjBkMmEwNDRkNGRhNjcyNTA2MjMgcHkzaworNzM5NzYgMzE4NzYzZWNjNGIzMDQzYTYxMTk2ZTE4MjdiN2U5N2VjZWM3MzYxNSByZWxlYXNlMzEtbWFpbnQKKzczOTc4IDU3ZTlmMmQzNjdhODFkMzViZDdiMmQwYTYwYTI2MWFmYWU5MzI0MGYgcHkzaworNzM5NzkgYWNkYTY5MmE4NDdmY2U5ZTk1Mjc3NjViNjEwM2FiYzU5ZDQ1NDE0YyBsZWdhY3ktdHJ1bmsKKzczOTgwIGYzYjljNTBhN2FhZDVjMDBmMGQ1YjMyNDc0OGIxYzA0NWMwOTkyZjUgcHkzaworNzM5ODIgODhhY2MxMGNhYTZlMTFmYmNlOWFmN2Y0OTVjMTQ1ZmVmOGYyYWI2MyByZWxlYXNlMzEtbWFpbnQKKzczOTgzIDViZTA0ZTIzMTdlOGQxMmE4YmUyODI1NzJlZTc3ZDIwYWEwZGVhMGYgcHkzaworNzM5ODUgMDEwYTQ4ZTk0MjIzNzIyN2YwNzMzMzE1ZTIxMTMxNjdkYmE1NzEyYSBsZWdhY3ktdHJ1bmsKKzczOTg2IGQwNzZlNjVhOTBkNmMxOTM4NWE5NWZlNzljZWQ4NWIzZTU0ZTg5MmEgbGVnYWN5LXRydW5rCis3Mzk4NyAyYjY3Y2I5MjViYjE5ZTg2OTlmNDk2ZTQwOGZhY2Q0MTI4YmNhNTFkIHB5M2sKKzczOTg4IDk1MDdlNGI5Yjk4ODU4ODUyOWQ3NTM5NmI5MjBjYTYwYWNkM2EzNzUgbGVnYWN5LXRydW5rCis3Mzk4OSBiNzRlMzkyNjI4MTUxM2EyMDkyMDE2ZGQ0ZWY2NmE2ZjM2NDkwZjkwIGxlZ2FjeS10cnVuaworNzM5OTAgYjFkMzRkZmZmZTJkZTAxZWM4MGQ1MTQzNWY1MDU4MzU5OGVkNDdhOSBsZWdhY3ktdHJ1bmsKKzczOTkxIGUxNzJhODg2NTBjZjlhZTU3MTZkZGJkMWU3ZmViNjRmYmU1Mzk1YmIgbGVnYWN5LXRydW5rCis3Mzk5MiBiZDc0ZTJjOTczNDg5YTg2ZjFkZDg3YzQzNzRlMDQyMjA4MTEwOTdkIHB5M2sKKzczOTkzIDRkMmI1MzI1ZWU0OGU4NWRjMjJiOTI4ZGM0NWRhZjgzMzczZTcxOWMgcHkzaworNzM5OTQgZGFhYmNiZjI0MTVkZDBhMzg5MzllMTJmNGMxZWIxZjhkN2UyZWM1NCBsZWdhY3ktdHJ1bmsKKzczOTk1IDMyZDQ4NjYyYWE1ZjM2MzA1Mjg2ZTM0YmI1YzM0ZDYyN2U4YTU1MDMgbGVnYWN5LXRydW5rCis3Mzk5NiA4ZWJiOTBkYzNiMDQ1MGIzOWJkOGE5YmQwYjI4NWVmYjBhZTA5OTFhIHB5M2sKKzczOTk3IDdiZWM2YjQwNzRmNTg0NzFlMzQxN2VhZGU1NTJjZDk1OTQzZTE1YTMgcmVsZWFzZTI2LW1haW50Cis3Mzk5OCA3MzdhNmIzMzc1MDU2M2MwMmY3NTA2MTMwZTJlMDVhNDZkMTNlOWFmIGxlZ2FjeS10cnVuaworNzM5OTkgNmQ5NjI1ZGQ5MmU3ZWJjNWFjZjU5NDE0OTJjZjUxZjFjMGI4NTdiNCBweTNrCis3NDAwMCA0MWViMTEyOTAxNDJlNzYzNTYyZjI4NTM0YzM0OWIxOWU1NWM3NTE0IGxlZ2FjeS10cnVuaworNzQwMDEgYWEyMmU3ZjMyNTE3ODJhN2NlNmY2MGY0NTQ2MDlhODg3N2ZmNTdiZiBsZWdhY3ktdHJ1bmsKKzc0MDAyIDcyYzVlMTczYWFjNWE2ODFjOTU3NzBjZmY4NzkyMzAyYzNiYzM1YzQgbGVnYWN5LXRydW5rCis3NDAwMyBlZjFiMTE5ODMzOGJmYWQ3MDQ4NzhmMDVlOTQyN2NmYzc1ZTdkMzFhIHB5M2sKKzc0MDA0IDEyNDM5YTAzMzk4OGE0ZWUyMTgxMWI0NjRjNzczOGQxY2ZmOTA3ODQgcHkzaworNzQwMDUgMjllN2E0ZGQ0MTdjYTI1NWZmZDg5Nzc3NDAxMjhhMGZlNTgzZTU3YSBsZWdhY3ktdHJ1bmsKKzc0MDA2IDBlZDQwNWMwNWNjMzA0YmZmNTdkODRmZTdhNWY0MmI4M2ZkMjJmOTggbGVnYWN5LXRydW5rCis3NDAwNyA5OGJiYjk2MzQ2NzJhNTgxZGZjOTkwZjdjY2QxMmNjMDdhOWVmMWM1IGxlZ2FjeS10cnVuaworNzQwMDggMjA3M2E5ODljMDE5MjZiMTMzZmYyMjI2YTgwZGVmMTc0ZTQyZTk1ZiBsZWdhY3ktdHJ1bmsKKzc0MDA5IDhjNjYwNmIzMmNiMWM5MGYzNTBlNjViMzgxMDM0NjBhZDFkNWJkODQgcHkzaworNzQwMTAgODdiMzEyMWNlNTgwZWYyMTNkY2FhMmJjMmNlYzk0MTk5ODA4OGZhZSBweTNrCis3NDAxMSA5MzkwNmIzOWZmZWNjNGIxNTA2ZmZjNzhmZWQ2MzhkMGFkNWQ4Nzc2IGxlZ2FjeS10cnVuaworNzQwMTIgYTUwZWI1OTZhNmQzZDFjMmU3NDAzNmZjNGNhYmQ1OGY0NzFiNmY2NCBweTNrCis3NDAxMyBlZGM3MTRmZmU2Y2NjM2EzM2I4OTRlY2ZiNWRjOTQ1NDcwMGZjYzFiIHB5M2sKKzc0MDE0IDNhMzE2MjQzYmQ2YzZmNWY2MzUxMTRhZjA5MWE1NzJhZDhkOGRkYjYgbGVnYWN5LXRydW5rCis3NDAxNSBhODkyMjcyM2E5MmQwMDFmMjQzYzQ2YTljYWI4OGRlNzE1NzYzMGQxIHB5M2sKKzc0MDE2IDczZGNkMTgzZmFlMmQ2ZDY4OGE0NTkzNjcxNTJhMjZiMDExYmJjNzAgcHkzaworNzQwMTcgZDEzNDBhNTBhMWIzMDc2YTVkNWE5MjA1YTZmNjA3Y2MwM2JlZmM3YiBweTNrCis3NDAxOCBiZDQzMWEwZTY4Mjc0OWY0MmQ4ZTk5YWU0NWMwZTQ2ODlmNDIwMGVkIHB5M2sKKzc0MDE5IDFmZDBmNTY5N2I0MGRiYzFiZmUyZTQxMTY1ZjMzYjViNDMyNDVlZGQgbGVnYWN5LXRydW5rCis3NDAyMCA2OWEwNGRiZDVmMGEyN2Q5NTA2OGQxY2Q2ZWNiODI3MzExNWU1NTQ5IGxlZ2FjeS10cnVuaworNzQwMjEgZGMwODRmNDAwM2JiYmY2ODBiYzdmODQwODg3MzFhNzg0YzEzNjIxOSBsZWdhY3ktdHJ1bmsKKzc0MDIyIDk4MjcxNDY4YWIwN2ExODlmNjc4Mzk0YmQzOWJiOGRmZjI0ZTQ1MDAgbGVnYWN5LXRydW5rCis3NDAyMyAzMzcwZDYwOGU1YWE0ODU2MzhjZTljMjBiOGI4MWE5ZGM3NTg4Y2I5IGxlZ2FjeS10cnVuaworNzQwMjQgMzg2NDUyYjJkOWQ1NzMzNzg0NjQ5YTk3ODM2Y2YwNDEzNjVkMzkxOSBsZWdhY3ktdHJ1bmsKKzc0MDI1IDA3NzUwYzU1ZmQ1NWZiODA1MTQ2MTM4N2IyNmJlMzUzMDAwY2E2NzAgcmVsZWFzZTI2LW1haW50Cis3NDAyNiA5YjE3ZDU0Njk4MjFiM2Y4ZTFlMWQzMmVlYjY2YjhiMWRjMTY5Y2JlIHB5M2sKKzc0MDI3IGY5NzhkZGRiOWI3MWZkODhiZGNjZTBkZTY4ZjljYWQ2Nzk0MGU4ZWMgcmVsZWFzZTMxLW1haW50Cis3NDAyOCBhYjYzYTI2MmExMTNiOTU0ZWIxOWM3Y2UyOTI1OTM0N2RkMTgyNjU3IGxlZ2FjeS10cnVuaworNzQwMjkgN2YxNTQ3ZjY2Y2NmMzBjMWUxYmYwMGU3N2VhODhkNDAyMGRkY2RkMCBsZWdhY3ktdHJ1bmsKKzc0MDMwIGZjOGZiOGVmZjIwZWM4NjM4MDhlN2M2NmU2ZDYzNDMyMGRhMzFmZDkgcHkzaworNzQwMzEgZTgzMGU4M2YwZjVhZTRiYjg2OTk4OGM0MmY4YjljYjVlNGMxMDNlNCBsZWdhY3ktdHJ1bmsKKzc0MDMyIDBjYTgwYTJjNzdmZmRlODg1NDM2NzIyODk4NzFiM2U4NDA3NGEwNWYgbGVnYWN5LXRydW5rCis3NDAzMyBjZmEwMDRjMWZkOTVkNzYyYTAzMThiNTE0YzRiMjI5MzY3YWQ0MTUxIGxlZ2FjeS10cnVuaworNzQwMzQgYjE2YWU2OWQ2NDg0YTcwNTIzYjYxOWJiYmQyNGU2NjMyMGYxYzYwYSBweTNrCis3NDAzNSBlNjIxZTNlMzE5NmVhNDFmZGMzMWIzYjIwYjE4Y2M4YTcyMWY3MTkwIHB5M2sKKzc0MDM2IGNiM2FhOGJjZDdiMDJkOGEwMWU3NmJkNjlhNWY0ZDI0ZTFiNGI3ZmEgcHkzaworNzQwMzcgZGNlNDdjMTBkM2ZhZTFmZWYyZmMyZmY1MDgwNDgyNzU1MzYxYjU4MCBweTNrCis3NDAzOCBkMjA3OWQ1YWRjZmFhNDRhMWVmNTFkYjVkNjcyZmUzMDZkMWY2YjczIGxlZ2FjeS10cnVuaworNzQwMzkgN2Y2ZDAzYjU5ODY1YzMxNzBiMzEwOGZmM2IzYTRmMjZkOWNlMjdkYiBsZWdhY3ktdHJ1bmsKKzc0MDQwIDJkYWI4ZDYzZWI1NTU2ODNlYmQ0OWMxODBhMmNjM2FmYjc4OWIxODUgbGVnYWN5LXRydW5rCis3NDA0MSA5ZTc1MjllZjQ0ZDQzNWQxOThkZGMyNjI3OTg2ZDUzNTMwZWZkOWU0IHB5M2sKKzc0MDQyIDEyYTEzZTUzOGExMWQ5OTRmOGZkNTZkY2YyZDE3YmM0NmZiMmYzMjEgbGVnYWN5LXRydW5rCis3NDA0MyAxMzBmMTkxMWQxNDY1YjQ2MDQ0ZTliOTAxNjYxYmMzMmRkZTU3ZWQzIHJlbGVhc2UyNi1tYWludAorNzQwNDQgMjdlNzBkODFhZDU3NWViZTIzMWE3NjRiZGJlMWQ0YmYzYzg5YzFmMSBsZWdhY3ktdHJ1bmsKKzc0MDQ1IGI3YjgyNmY2NWU3NWRiZWNmNWE0NDdjOGQ5NjJjZTVlYTEzODMzNGIgcHkzaworNzQwNDYgOTA2ZWQxMTljYjE5YjQyY2FkMjQ3ZTQ1NzI0ODk0YTVlYzZkZDg2YiBweTNrCis3NDA0NyA4NTExYzdjMGQzZWZmYmNiZmViM2Y2Y2QwOWNlY2NjOGFlNjljNWZiIHJlbGVhc2UzMS1tYWludAorNzQwNDggMDFhYmNkMzczMDE0NWY5M2RmM2IyZmQxOGRkZTEzNDdlNDg5ODQ5YiBsZWdhY3ktdHJ1bmsKKzc0MDQ5IDEwN2U0ZmI5MzYwNWZkODkwMTUxNzZmZWY1N2YwY2U1MWNiZDc0ZjEgcHkzaworNzQwNTAgMWVjNWMyNjZkMzkwZGY2MWZhODkyMDFjYTQxYWNlZWE2YmMwYjZhMiBweTNrCis3NDA1MSBhMjliYWJiNTQ4ODRiNTE2ZGFlNjE2MThhYzRjNGM1YTM2ZDI3ZDU4IGxlZ2FjeS10cnVuaworNzQwNTIgNWQ3ZDg1MjQwNDI2MzJkM2Q5MTZhYjM1ZWU0M2Q2MTEwM2Y5ZmMyYiBsZWdhY3ktdHJ1bmsKKzc0MDUzIDU5MzkyMTgwYmY0NDVlY2UxYjhlM2FiYWVlNzRlNGJiMDFkODc2MWUgcHkzaworNzQwNTQgYjQyODdmZjE2NGU1YmM5MzkxNDk5NjQ4Mzc1YTM1NGViZDcyOTM0MiBweTNrCis3NDA1NSA3MjRkZmVhYjNlOWI5MTU5MGFhZGUxOGNlODc5YjM4MDM3ZDc0MTdlIHB5M2sKKzc0MDU2IDJmY2RmOTY3Nzk3ZGU2NTQ2OWU5YWJmYjhjMjQ3ZGI1OTcyODJiMzggcHkzaworNzQwNTcgMWM1N2RlYmY5N2JjMjc0ZDE2ZmEyMmVlOWZmOTgzZmJkOTJhMDAyMyBweTNrCis3NDA1OCBjMDc1Yjk3NGMzNWNhNGQxMmZjOTE4ZjRiZDJmZGNhNDA3NjdlODAwIHB5M2sKKzc0MDU5IGEwNjE2OWE4NzJiMzQ4OWNiYzRiNWRhYTAxMGU1NDNmZTVlM2Y0OWIgcHkzaworNzQwNjAgMWRiOTdjZTRhODUwYTBjZTFjMmRkNDU3M2Q4ZGRlNWVjZTdlOGRkYSBweTNrCis3NDA2MSAyMGNjMGVhYTg5MjY0NjdlYmFiZjdkZDdlM2JkNGRmYzE1NTJjZjc3IHB5M2sKKzc0MDYyIDc2M2U1MTI5NjVmYTc4MDI0YWNiOTFjOTdjYzhiYTc3MzkwZDY0YjAgcHkzaworNzQwNjMgZWE4ZmY4ZDYyOTI4YTNjYmM0NDZkMGUyNDJmZmNhZTgzNTlkOWVmNSBweTNrCis3NDA2NCA4YWE4MGI3MTVjNTFjNzZlNzRmOTMzZjRhYTkwMzViNjJjYjc3NmI5IHB5M2sKKzc0MDY2IDM2YTdlOTZlOTBmYjNhMjY1MjA1YTUzN2U2NzZkNmMwNWI5MmY1OGUgcHkzaworNzQwNjcgZGI1YjNkMzE4NjQ5MzNiOWFjM2M1ZGYyMzNlMGM4NjdkODMzNTBhMyBsZWdhY3ktdHJ1bmsKKzc0MDY4IGZlMmIwMjZkZGYyMWNkMWU1ZTdkNmZhODRlMmUxMjNhYTk5ZjgxMTIgcHkzaworNzQwNjkgZTIzOTFkMzYwYWMyNDc5MTljNDU3NTNiOTFmMzljNTgxMzc4YmM0YiBsZWdhY3ktdHJ1bmsKKzc0MDcwIGJjZGI3YjE4N2ZhYTA1NDNjYzRkYTE2ZTc5ODg0NWRmMzU3NmZhYWYgcHkzaworNzQwNzEgYWIyNGZmNjQ2ZGE4OGY1NWM0M2JlNWM0NTNkZWQ4ZDdlNzhiMzRhNCBweTNrCis3NDA3MiA2ZTA3NWVlNDhkNGJhZWEyMmZlYmYxY2EyNzQ3MjBlMmE0Yzg4MWFkIGxlZ2FjeS10cnVuaworNzQwNzMgYmE3MzhhZjE0ZGZjZDQxYjMyZDU3YzUyNjYzZGM1MjY3MDA4YmFhNyBweTNrCis3NDA3NCA1OGI1MTJlZGZkYmI0MWFkMGZhYmY3ZWVmOGM2ZWE4MDhiYWEwNzNkIGxlZ2FjeS10cnVuaworNzQwNzUgMjU5MTM4YTk4OGE1MjcwYTFkODcxOGRjOTIxZjhhNWZmNGE2ZTRjZSBsZWdhY3ktdHJ1bmsKKzc0MDc2IDVlZTJlOTY1ZGE2ZWRlMTMzYzIxMDExNTUyMDllYzAzMWZjMDdhMjkgcHkzaworNzQwNzcgMGFhNTMyMTE3YTRiYjY5ZjA3YzYzYWU0N2M1ZWE0MzAzY2EzYjc4MSBsZWdhY3ktdHJ1bmsKKzc0MDc4IGIwNTEwNTViNTlmMTk0MmNjYTNiNjE1NjQ3MmQ4MTA3ZDc3OTMyMzIgcHkzaworNzQwNzkgYTE5ZWI5NjM3ZmY3ZWRmZmExNWE2ZGQ2OTA2YThiNDZkM2ZmZmEyNCByZWxlYXNlMzEtbWFpbnQKKzc0MDgwIDlkYzVhYTYyYmU3MmZmODdiZjhmOTk5MzU2ZTIyZTVlMWI5MTkwZjAgbGVnYWN5LXRydW5rCis3NDA4MSA2NmJhYmU2MzEwMzdmNzQ2Nzc3MWFlOTRmYjQ3YjE0MDYyMmY3NjBiIHJlbGVhc2UyNi1tYWludAorNzQwODIgZGUxZDUyMDY5ZDJkZmNiNzI2Yzk4NTJkYTc3NGFhNjU3MTBkZGM2OSBweTNrCis3NDA4MyAzNzU1NjNjNmQzMjQ0YTE5ZDc4OWNjMDZiOTVlNTM4Y2VkMjc1YjdjIGxlZ2FjeS10cnVuaworNzQwODQgNTRiMWY4MDI0YmM4M2MzNjM0ODA0ZGRmNWE4OTBkOTI1NmU1OTJkZCBweTNrCis3NDA4NSBmMjA3MDU4NzVlODA2NTA5NzUyYTZlNTMyYzRkNzFhNDc1YzQyZGE1IHJlbGVhc2UyNi1tYWludAorNzQwODYgYzcwNDIxMjcxOTZhNTE1ZmFlZjI5ZTJlMDRjY2VkMjc1MjlkYzZjOCByZWxlYXNlMzEtbWFpbnQKKzc0MDg3IDRmMTc4ZTU5NTgxMzEyZTc4ZGUxN2U0NzYxMGYyODRjOWYyZjZiYjYgcHkzaworNzQwODggZWUwYjlhOTMxYzk0YTQ5NjQ0N2E3ZTM3OGIwOWRhOGViZjlkNGEwOCByZWxlYXNlMzEtbWFpbnQKKzc0MDg5IGMzMzZiMzAzOGQwNTQ2NDJhZTQ3N2EyNjM3MTNlNDFlMzMzYjhjYjAgbGVnYWN5LXRydW5rCis3NDA5MCA0NjEyYTJhY2RmMmY2MDdkNzQzMmIzZGVlYzI5MzdkYjU1MDBkZjczIHB5M2sKKzc0MDkxIDYyMzZhZGIzNjYxODFkNjI1YmEzZGM2YjY1NmY0OTBhMzA5MTk4NDEgcmVsZWFzZTI2LW1haW50Cis3NDA5MiBkNjBiNTU5ZWVhZDlmMjk3NDg3OWRmNTk0ZGMxODljN2I1OGQ2Y2M2IHJlbGVhc2UzMS1tYWludAorNzQwOTMgMzY2MzZmYTU0ZjMzMzM5YWNiNzY1YmE2ODBlNjM1YjAxZDY0YmQ2NiByZWxlYXNlMjYtbWFpbnQKKzc0MDk0IDZhZDI1NjEyNDA4MDQzYTBkYWJlOWNmZDdjOTY4MGU3M2I3ZDBkMzkgcHkzaworNzQwOTUgZjMxMTM5NTQ4N2M5NzBmMmVhODUyYWE5YWU3MDUxYmEwMDg2MDM5MiBsZWdhY3ktdHJ1bmsKKzc0MDk2IGVjMWYzMmI3MmFiZTgxMzI2Nzk0ODUzMDM0N2JmNzcyOTEzN2VmYmEgcHkzaworNzQwOTcgYWY5NzdlOTRlMmZkZDRlM2M3NGVlNTNmMmVkZTY0YzI5OTZmYWVkNyBweTNrCis3NDA5OCAzYTYxM2UwMGY2NmQzNDhiYzNjYWUyMmFiMmI2NTgxYjE5Zjg0OTI4IGxlZ2FjeS10cnVuaworNzQwOTkgZTYyOTU3YTBlZTE0MjM3ZDAzOWZjYTYyMjgwMTE2NzRjZmNlMjY1YiBweTNrCis3NDEwMCBlZWFkNzgwN2RmN2NjMDc4ZmNlYTk5YzVmYmU5YzFlNmExODRlY2VmIGxlZ2FjeS10cnVuaworNzQxMDEgYzBhY2FlMTliNDg3Njc2YTc2MTc3MDg4MGI3YTM5NmJkY2RkYWMzZiBweTNrCis3NDEwMiBlYWY0YTAwNDg0YmRiZDgzZWQwMjEyZDBlNGE0N2NmZmU3YTRhZmEyIHB5M2sKKzc0MTAzIGFlMmMwNTZjNDZkMzQ0NzAzZTJkOWJkNTNiZWYyNTBhMWQ4Yjg0ZTUgcHkzaworNzQxMDQgODFjOGIzMDQxNjNlM2FkYWQ4ZjVjZDI4ZThhZDYyODdkOGRiYWRhNCByZWxlYXNlMzEtbWFpbnQKKzc0MTA1IDBhZjk0MDdjODhkMmU2ZWYxYjQxMTUwN2NmMzI0NzdlZDg5ZjhiZDMgcmVsZWFzZTMxLW1haW50Cis3NDEwNiA1Y2Y2OGQzYjY1MzI0ODk5ZjVmYzQwZDBmZjQ5M2E0OTIwZGQ1NDdiIHB5M2sKKzc0MTA3IGE2NDBiYjNiOWMyYmI2YmQyYjcwYWRkNzY4ZWQzZGUyZjIxYzMzMTMgcHkzaworNzQxMDggZjUwMjkwNzk3ZmI1MGE1MzBkODdiY2RkZDcyNzk2OGVmNjcxMDQ3ZSByZWxlYXNlMzEtbWFpbnQKKzc0MTA5IGZlNzk4OGE1NzBkZmYyMTNlMDA3ZDUyNjgzNDMxZGJkNTk5OTFhZGEgcmVsZWFzZTMxLW1haW50Cis3NDExMCBkZmFmNmRlMmM4Y2U3YTM0NGVhODdmODhlZjcxYTJkYjkwY2VlNjVlIHB5M2sKKzc0MTExIGQ4MjZhMGNjMmMwZTBlNjFmNzlhYjMyZTE2NjFlMTIzZGZiY2YyZWEgbGVnYWN5LXRydW5rCis3NDExMiBkMWQ4MjU0YzRlZDVjNmY4ODljY2Q0OTRlZmU1NTRjMmE3MzBhYzI0IHJlbGVhc2UyNi1tYWludAorNzQxMTQgNzMyZjcyY2JhZjdkODRjY2NmNjEzZDVhZTkwOGVlYjExZGNlZjMzMyBsZWdhY3ktdHJ1bmsKKzc0MTE1IDBhY2YyNDkwMTVjYTRjYjNkMDk1ODEzM2Y5MmNiZDU5ZDdjOTUwZGQgcHkzaworNzQxMTcgMDFiNzYzY2ViNDA4NzNlODkzNGY3N2Q4MzlkZjVlMzllNjU0MTRiYyBsZWdhY3ktdHJ1bmsKKzc0MTE4IGFhY2RjNzM1ZjE5YjE4NWMyZmQyMTE3MDFjMWE0NjNkNjdlN2NmYjEgcHkzaworNzQxMTkgN2JmOGZjMjAwMzdhMWNiMjFiMDNkMWRmMDg4NjM1MmE4OWViMjFiOSBsZWdhY3ktdHJ1bmsKKzc0MTIwIDg2MGU3MTJlMzJlMGRmZjhiZjMwZGZlZDJkYTNmYWJiNjY5YWJiOTQgcHkzaworNzQxMjMgMDFlMmU5YWRkMDcwZmI0MjIzNWJhOGZmYmFmZDI4MTQyZTUxY2E1ZCBsZWdhY3ktdHJ1bmsKKzc0MTI0IDM4MzJjZjAzNjg3YmIzOTUwYTVjMjVhZjkxZTNhOTA2MzBlODJlNDcgcHkzaworNzQxMjUgY2M5ZmVmY2RkNTMzYzRiNzNhN2YzNDJhODBiYWU2MjNmNWY0NWYyZCBweTNrCis3NDEyNiBjZmFiMTFkZDNlNzNlNTg2ZjAxNDM5MzRiMjIwNDM0OTllN2Y0MmZlIHB5M2sKKzc0MTI4IDYzZmQxN2JhOTg3NTMwNjI5NzhiYTExYzU5YWVlOWMxMjJiNzA2OTUgcHkzaworNzQxMjkgMmNmOWQxOGQzZGY1NGM5ZmM3YjE4ODcyOGRiZDFkMzE4Yzg5NTQxZiBweTNrCis3NDEzMCAwYjFmMWQ3YjJlNmRmZDA1OTZjZTQ0MjlhODFmNzYyYzZjN2UyNTY5IHB5M2sKKzc0MTMxIDNjNDQ5MGFkMDFjZjA3NmRhMDQ5NjJmMjkyNjgxY2I0NDNjYjBmODMgcHkzaworNzQxMzIgNzk3MThlZTAzOTg2MjlhYzQxYzAzMmQ3YzA5ZDgwM2Q3OGUxNjRlMSBweTNrCis3NDEzMyBlYmM5ODU2YTliZGIyNjAxZjQzMWQ2M2FhOTg4ZTJjNjk3YmNjMWI3IHB5M2sKKzc0MTM0IDU2MTM2NGEzNGIwYzQ2ZDEzNDRmZTI5ZjgwYWQyYmNlZmJmMDZiMDIgbGVnYWN5LXRydW5rCis3NDEzNSAwYTIwZWRmM2Y3ZGI4OWViOGRlZjY3NjhmYTk1MzM4ODY2MjAxYjE2IHB5M2sKKzc0MTM2IDZmODczNjczNzk5NGRjMTE5YTk4MzQ1ZTk2ZDZlMmVmMGFlYmUwNDAgcmVsZWFzZTMxLW1haW50Cis3NDEzNyA5ZmY1YmQxNjAxNmI0MDdjNjc5NzRiYTI2ZWEwMGUwODVkMzkwYWUwIHJlbGVhc2UzMS1tYWludAorNzQxMzggMjFlNTgzMWNiYWU4YWJiYzMzOWFlMjhkMTU2YmFhOWNiNDRjYzdlZiByZWxlYXNlMzEtbWFpbnQKKzc0MTM5IDM4MTVhYmVkOTI3OWI4ZDgxMWM4NGJjNGY1ZThhYjE5OWE2YjY1ZTQgbGVnYWN5LXRydW5rCis3NDE0MCBjMjhlNjFjNWJkZjgyOWZjMGZkNDdhNGNkYmE4ZWU5N2I2OTg2ZWE3IHB5M2sKKzc0MTQxIDk0OTljMjMyZWRiNzNmYjcwMjY5Zjk1NzIxMDZiNDRiOWY0NWY1ODcgcmVsZWFzZTMxLW1haW50Cis3NDE0MiA0ZGY3MDUwMGRiZTM0ZDU3OGI4MGNjMTU2MDg0ZjMxMTQ1ZmY1ZGRiIHJlbGVhc2UyNi1tYWludAorNzQxNDMgMDNmNWM2N2RmMThlMmI2YzU0ZDgyNTIxYjhmYzY1ZjYyZmMzYzMwNiByZWxlYXNlMzEtbWFpbnQKKzc0MTQ0IDhkNmVhZDJhY2NhMDA0ZjU3MDU3YTAxNTIwNjcxNzEyNTU4YTYzMWUgcmVsZWFzZTI2LW1haW50Cis3NDE0NSBmZGE5MDYyZWJmYTRjODcxZTljYTdjNzhmNTBjMDE1ZTQyMjFlOWRmIHJlbGVhc2UyNi1tYWludAorNzQxNDYgY2RjNzQ5ZDljMDIxYjk3ZWM2N2VjNzQxOTBmZDFlMGY1ZWU3NjI4ZCByZWxlYXNlMjYtbWFpbnQKKzc0MTQ3IDdkY2U0MDRmYzhlYjViMzNjMzA2YjU4NTk3MzFhYzk1NjRjZjI4NTMgbGVnYWN5LXRydW5rCis3NDE0OCAzNjEyYTRlY2E1ZDUxY2NhYjFlZmM3OGYyZjZiMGIzNzgyZGZmZWJhIGxlZ2FjeS10cnVuaworNzQxNDkgYjQwZWViOGY2OWNhN2JiNjQ1OTJjNjlmYWZmZGViMTJiZTA3YzZjMCBweTNrCis3NDE1MCBjMzBmYThjNWUzMjQ2Zjk2YzA5YWM5ZTgwZWQzZTNhMTExMjc3MjZiIGxlZ2FjeS10cnVuaworNzQxNTEgZTQwNTA2ZWRjYjNlMTU3YTA5ZWU3MjBkMDI3NDcxNTMxMDc0ODM3ZSBweTNrCis3NDE1MiA2YmIwMTg4N2Y0NzU2NzY3NjExZjI4MTM5ZTVmNjgyNDRlOTMzNzFlIGxlZ2FjeS10cnVuaworNzQxNTMgMjRhMmFjZjEyOTFjOTQxMzcyMmYzMWEzYTU2NTE3ZGIwMDFmN2JkMyBweTNrCis3NDE1NCBhYmZkNWY3OGY0NjZhZTE3MDMwMDg1OGQ2ZDM3ZDliNmFkOWQwNWM5IHB5M2sKKzc0MTU1IGQ3NDdkNTJmOWE2NjkwNmU1MmMxN2NlMzM0OTUxZDE4ZWUxNjE5NWMgcHkzaworNzQxNTYgZjc5MDQzMzY5NjI1ZmY5ZjZmMjhiMjRkMzE2MDViYmZhNDhkNGUxZCBweTNrCis3NDE1NyBkNjgyY2E4ODhlMjc5NGIxN2E1NmYxOWFlYTJlZjNjZTQwNzY5YzQ2IHB5M2sKKzc0MTU4IDUzODg1MGIzODkzMTA5MDcxYzUxNDgwYTg0ODhjNTIyOTAxYzI3YjQgcHkzaworNzQxNTkgYjdhYWJiYTg0ZWUxYTBhOTlhZGIwMjgzZGQ2Yzc5ZTAyMWI3ZjRlOSBweTNrCis3NDE2MCA1OWU1ZjI5OWRhYTAyMGM1Y2JlZWUyNDU4NDI3ZWM0NjNhOTJkYzAwIHB5M2sKKzc0MTYxIGVjODVhNTFkZTljZjQ4ZTkwMjhlOTUyMTc5ZTRlODAzOTY1Mjg5NDQgcHkzaworNzQxNjIgZGY1YTcwODYwNzgxMGJmMDk2Mzg1MzcxOTk4Y2I5NGY4NWVlOTJkYyBweTNrCis3NDE2MyBjYzlhMWEzZTNmYjgxZTQzMjg2YzRjM2NiODBiYzhmZDkzZDY1YWNjIGxlZ2FjeS10cnVuaworNzQxNjQgMWVjYjA3ZTExYTJkY2M2MWZlM2U1MjMxYzQyMzNjZmM5ZjgyY2FhMSBweTNrCis3NDE2NSA5YzIxMTFjZmQ5NzQzNmRiMmEyMjRmZjMxZGI4MDBhM2JiOWM2ZTY0IHJlbGVhc2UzMS1tYWludAorNzQxNjYgMDc2MzQ2MGIwYjM4MWRmZWQ2MWRmMmMwNzgwZDU4NjhlN2Y0MWU0MCByZWxlYXNlMjYtbWFpbnQKKzc0MTY3IDE0ODBmYWUzYjcwM2ZjZDdkMDA0ZDZlOTgyYmFjM2IwODBkMDEwMDcgbGVnYWN5LXRydW5rCis3NDE2OCA3NGFhZWI5YzM1ZmJkMTE0ZWEyMWIzYWJkYmU5OWFmY2YzNjFhYTZjIHJlbGVhc2UyNi1tYWludAorNzQxNjkgY2I0NmEwZDc4OWM2NzBmNTRhOGQ5MGY0MDFjMjgxYTQxNDg2M2JlMSBweTNrCis3NDE3MCAyNWNmNzc1YTcxNTE5ZmZmNjA2MGI5NTdlNTliMjFiZDU5ODhhNWE2IHJlbGVhc2UzMS1tYWludAorNzQxNzEgMDNjZjRjYjRhMTUwMWQ1YTM2OWJjZmIyZGM0NDkyOGRlNDRmZjFlYSBweTNrCis3NDE3MiA5MDhiMzk3NjRjNzM4ZDcxNWM5YWJjZmFmMGJmNjhlNDNmOGI3Zjg5IHJlbGVhc2UzMS1tYWludAorNzQxNzMgMTMyN2FmNTZlYTQ5YWI4NWIxYjIzNTI5NTBhODYzMThjNWVmY2ZjMSBsZWdhY3ktdHJ1bmsKKzc0MTc0IGU2NTBhOWQ2NGFiNWM2ZTI4YmRmOGU0NjliOGVmZTRlMGEwMDlmZjIgcHkzaworNzQxNzUgOTRmYzQzM2M0MzczNDZhYjYyODA0MjFmZGZiM2VjOGI1ZWE1MDRmMiBsZWdhY3ktdHJ1bmsKKzc0MTc2IGEwZWFjYjVmOWQ4YWEzNTJhNmU2MmViYTI2NzhlZWU0MmI4MzQwZTIgcmVsZWFzZTI2LW1haW50Cis3NDE3NyBkZjE3NDQzMTk0NjZjOGNiZjg3NGU4ZWM5YmQ3YmUzYzY1M2Q1MDFjIHB5M2sKKzc0MTc4IDI2MGZiNDIxYWMwN2ExNDA4OTUwODBlMzYyMGI1ZGY4YzhmZmYzZDYgcmVsZWFzZTMxLW1haW50Cis3NDE3OSA5ZGRhMDJhZmE4ZWQwMDdjN2ExMzg3MjY0MGY0Mjg3N2M1YzRmODExIGxlZ2FjeS10cnVuaworNzQxODAgMDI1YTY0MjhhNzY0ZjVlNDUwOTE5MmI3ODI3YzJlMWI4NTIzOTEyYiBweTNrCis3NDE4MSBiOTY0MDY1NTEyYjE1NTdhZGRhZmEyYjVmNGI5OTliYmU4OGY3ZDBkIHB5M2sKKzc0MTgyIGIxMWE3NTI0ZTU1OGYxY2EzZjIyZDgwZGY5YTNjNTRmZGU1M2Y0NDMgcHkzaworNzQxODMgMjA3NTQxYzk4NzQ0MmQ2YmJiZjlmNmRmNGY4ZDA1NjQ5ODFmMDNhNSBweTNrCis3NDE4NCA3NDIyZDc4OWZkY2E5YjJlOTFiYzBjNTg5ZmNiY2E4MWFiOGMwNDA0IGxlZ2FjeS10cnVuaworNzQxODUgOTc3NjAyYjNlMTQwZGNiZGEzOTE5MTk2YjdjYTFlMWUxNjUzZTM3YiBsZWdhY3ktdHJ1bmsKKzc0MTg2IGVjYTAyMDdiYjc3ZjA5MWE5OTQ1ODQ2Yzg5NmFiNDI2MjdiNGI2YTUgcHkzaworNzQxODcgMmU5NDcyNDU5NThiMDFjOWUzMmJiZTJiZjRjOWYxMTljNjk5ODI5MCBsZWdhY3ktdHJ1bmsKKzc0MTg4IDYwNTIzNDE4ZjhjOGU5NTUxNzkyZjNlZTFjNDc0NTZlZTE0YTM0ZjAgbGVnYWN5LXRydW5rCis3NDE4OSAyZmIxMDU3N2M2MjFlMjlmZmI5NWU0NTJiYzViMjU4MjE0MmU5NzUyIGxlZ2FjeS10cnVuaworNzQxOTAgODY4YjRlNjM5YjVhYjFiOGU3MWE2YWQ4MmMzMmMwZjVjNmE4NzllNSByZWxlYXNlMjYtbWFpbnQKKzc0MTkxIGI3N2JiNTMyMTEwODg5MWVmMjY0Nzc0ODMxYzg4NDZiMjE2YzI0NTggcHkzaworNzQxOTIgYzAwYjA4ODQyZDdmZDRiZDMxMzhiNDk3ZTY5MjAxMmQ5Nzg1MjI0MiBsZWdhY3ktdHJ1bmsKKzc0MTkzIGU5OTAxM2E5ZDJmOWNhNGUwYzM2M2RjMGFkZjQwNmFlNTZhYzQyYjEgbGVnYWN5LXRydW5rCis3NDE5NCBkOThiOGE2ZWMyYjg0YzViNzgwMTE3MzQ2MDRlYTU2YzRkZDRmMTY4IGxlZ2FjeS10cnVuaworNzQxOTUgNjFhMDY1YjMwMDFkODdkNTZiMzliYzA3YWVkYzJkMTc5YmMxOWIzOSBweTNrCis3NDE5NiA3NTk2MjJkMGFlMjg0NzU2YTRhZGZlOGEyM2M0OWVmYjhlYTA1MDNlIHB5M2sKKzc0MTk3IGNmZmIxZTk2M2RkOGEwNzcyMjExYzA3NTRkYmFkZjc3MjAxZjZmMmUgbGVnYWN5LXRydW5rCis3NDE5OCBkMWVjOTVhZTBhYzI4NDZiZDhjOTZlMmM1OGM2Y2YzYzU4NThkZTk1IHB5M2sKKzc0MTk5IGExNGMwOGY4ZTc3YjVmOGQ5ZmQxM2VkOGFlNjVlNzQzNGJkMzg5MDQgcHkzaworNzQyMDAgN2Q0NjA4MDA2Y2ZhYzM3Y2M5MDg0OWExMmFlNWU4NDlmZTI0YjYxZSBsZWdhY3ktdHJ1bmsKKzc0MjAxIDZjN2I0YjQ3MDgyNzc1YWI3YmQ3NmU0OWMxNDEzZjRjNzBjMzk4NTcgbGVnYWN5LXRydW5rCis3NDIwMiA0YjEyMTZmNGZjYjViMGMyMjExMDYwNzg4YmFlOWUxYTk0ZDcwMWExIHB5M2sKKzc0MjAzIDBmNTdiMzBhMTUyZjQ2MTkxZGE2YzI4ZjllYjY2MzFkZWY3N2Y4MGQgcmVsZWFzZTI2LW1haW50Cis3NDIwNCA1MTEyYTU2ZGY5NzdhMWMxZjlmOTg0NDBiMzI1OTU4ZGJjYjRkY2MzIHJlbGVhc2UzMS1tYWludAorNzQyMDUgNzI0YTEwMTFlODk3YTdiOWYzMmFlMjdkNDEwMWE4OTc4ZTVkMzE2MiBsZWdhY3ktdHJ1bmsKKzc0MjA2IDBiODkzYzZlYWQ0YzczNmZlOWQ4YzI4NzJiYzYzOWJmMDEyY2RiMDMgcmVsZWFzZTMxLW1haW50Cis3NDIwNyAxYmRlODQ1NTIyMmMzNDg5YTZmM2IyOGE0YWQ5N2ZhOGNmMDM1ZjQyIGxlZ2FjeS10cnVuaworNzQyMDggYTU1NjM0Y2U4MTE4MzhkZTgwY2VmNDExYWMwODY4YmU5NGU4MTMwMiByZWxlYXNlMzAtbWFpbnQKKzc0MjA5IGJiZDFkOTBkMTU4YWJkZGQ1NTE5MDNhZTc0NzhhNTdjOWY3YTg0YjIgbGVnYWN5LXRydW5rCis3NDIxMCA0MmRiMWNmMzlhZmRiYWM1MGMyODUxYzUyNTNiYTIyN2MyM2QyMzQ3IGxlZ2FjeS10cnVuaworNzQyMTEgNjc4OWQ4NDA2MjFmNGQwZGNjNmU1NTRkOTk2Y2VlOWQxZDc1OGJkOSBweTNrCis3NDIxMiAyZjhhMzYyZTM3M2Q5NTBjYzliODBlZjA0NWY1MGFkYzFlMWYxZjUwIHB5M2sKKzc0MjEzIDE1YjYxZjMyN2Q1MDk1ZGJhOGI1Y2IyZGJlMGMxNWNmOTJmM2U0OGQgcHkzaworNzQyMTQgOWJmMjA2ODU3ZDdlNzljZTJkOWY1MGIxMjEwZDIzNTUyNzgxMjQzMCBweTNrCis3NDIxNSBjMTA3NzNiYmFmYTAzNTkzZTZiNjAyZDU1ZTFiNTFlYzRjYzA2OTA5IHJlbGVhc2UyNi1tYWludAorNzQyMTYgYjcxZWViOTA3MDkzN2I1NjJmMjcyMzNlZWQ1M2U4MDY1NjI0ODk5ZSBsZWdhY3ktdHJ1bmsKKzc0MjE3IDBmMDE2M2Y4YzViNTZjZmQyZmZmNWE5ZjliYzgzNzRlMmUzNjViOTkgcHkzaworNzQyMTggODllYmU0MzI0NGFlYmY2YmMzY2JmMWU3NzMxNTc1MmFmYzBiN2FmYiByZWxlYXNlMjYtbWFpbnQKKzc0MjE5IDBkMjAzY2EzYWM3OGVkZjA0NTllY2I0Y2I1NTIyOTBiZmI3ODk1OTkgbGVnYWN5LXRydW5rCis3NDIyMCBhOWI1MDdlY2RhNGM5ZDI3MmIzMzM4NzE4Y2YzNjIxZGNlNGZhNGQwIHJlbGVhc2UyNi1tYWludAorNzQyMjEgOGMyMWZmZmIwNmM0NjE0YWNhYmI3OTExZTdhNjBkNGQ5NzllYWQ3OSBweTNrCis3NDIyMiBmYzQ2OWFmNmViNzAyNmJlOGRhYzhjN2EyY2MxOTI1NDM2Y2NmYzIyIHB5M2sKKzc0MjIzIDA2Yjg2YTZlMjhmMWExNDM1N2VkNDc1OGE3MWNkZTQxYWQzYmU5MDkgcmVsZWFzZTMxLW1haW50Cis3NDIyNCA3NGRjN2JiNGY0NjQzYjNkNmZlODAyMjdhNTlhZjJmNjliMjJkY2JjIHB5M2sKKzc0MjI1IDYwN2NkMTE5ZmU0Yjk3OGEzZDlmNTFmNTI4N2UzMjAxNDUyOGJjYTcgbGVnYWN5LXRydW5rCis3NDIyNiAxMzI2ZWY4NmYzZTQwZDMyNmY2Y2NmNWUyZjI3N2NjNWFmZDliNGY5IHB5M2sKKzc0MjI3IGIzNGNhZTc4NmNiMDNlNDY3MjQyYmY1NDhjZWJmZGM0NjBlYjc1YzEgcmVsZWFzZTMxLW1haW50Cis3NDIyOCBjODUzYTNkMmExOWQzNTkyZGYyMjkxMDIzYzk5MTlmY2FhOGZlODBjIGxlZ2FjeS10cnVuaworNzQyMjkgNzIxMmUzZTBjZDE3NTA3MDc1MjI0ZmYwMDViNjkyNzNiMzVmYjliYSByZWxlYXNlMjYtbWFpbnQKKzc0MjMwIDBmOGI1NmVmMGY3ZjRkZTE5NzBlYjRkMDg3ODhhMWEyM2RkZGE4ZjEgbGVnYWN5LXRydW5rCis3NDIzMSA3ZmQ5YWRjODEyODAwYzEzNWRmMGQyNmI0NTMzY2E4ODdhNDc1MTM2IHJlbGVhc2UyNi1tYWludAorNzQyMzIgNDQzMTgyMTBiMDNjNzBhYmVkMmVkNzY1MTE2NzhmMzg5NGI2NTI1YSBweTNrCis3NDIzMyAwMWY4NDhlYTExMGFlM2Q1OTBjNGIyZjMwZmFmZmQzMWY5MzVlMGViIHJlbGVhc2UzMS1tYWludAorNzQyMzQgZGE5OGNiZWJkYWNiYTI5ZDA2NjQ4ZTliM2E3YWY0M2Y1YjViNTE4NSBsZWdhY3ktdHJ1bmsKKzc0MjM1IGJiMGI3ZDBlNTUwZDgwYTg3OTgyNzZkZGNkZjA5ZTFiNDE1NWUzYWUgcmVsZWFzZTI2LW1haW50Cis3NDIzNiAwN2RiZGYwM2U4ZjUwMzA3Mjk4YTJmMTUxMGNhMmM3NzFkZWMwYjllIHB5M2sKKzc0MjM3IDNkNDUzNjdjYzYyYWE3ZmZiOTkyMmE0NjkwYjUyYWRhMzY2OGFhMTMgcHkzaworNzQyMzggYWRmNDg0ZGY2Nzk0OGU0OGIxNjI1NmJlMWVkN2U3ZDQxOGYwYWU1NyByZWxlYXNlMzEtbWFpbnQKKzc0MjM5IGFhOWZmNDdiZDFjOGVlNTY1NDliMTVlN2FlYjhmNTBhOWZiOWZkMTIgbGVnYWN5LXRydW5rCis3NDI0MCA1NmIyZGE5M2FkOWM4MjMyZGU1YWEwYjk1ZWIzMmYyNzFlMzkwNTg1IGxlZ2FjeS10cnVuaworNzQyNDEgODlhZDIwYTMyYTI2MDMxMDc4NjM1ZWI2N2RmMGE0NzNkMWY0M2Q0NSByZWxlYXNlMjYtbWFpbnQKKzc0MjQyIGJjZDM5ZWZmZDMxZTM3ODZmZGI2YjM2NTg3ZWEyMWZhMjAyYjk2YzEgcHkzaworNzQyNDMgODg5OGYyOGU2ZDJjMWE5NTRhNjVhNmIwZjA0NDRhNzZhMWM5NTVmNCBsZWdhY3ktdHJ1bmsKKzc0MjQ0IDU3MmMxODdkZjYxMmUyNzZhMjczZjY3Yzk1Zjg4MDNmZGEzMGQyOWIgcHkzaworNzQyNDUgMWRmZDZmNDA3MzM2Y2EwMjczM2FlNDUyOTIyOGI5M2FkYWZiMGM4ZCBsZWdhY3ktdHJ1bmsKKzc0MjQ2IDVlMDU4ODkwOTZjZDA4MGU3MTIyMDIzNmZmMzU3MDg4YTFjMGNhZTUgcHkzaworNzQyNDcgOGEwMTdkM2NiOTI4YWU3MmVhMDEwYjkzYTY0MjkwOGE0MTlmMzdlMCBweTNrCis3NDI0OCA5ZmZmZDNlZGI2Njg5ZmRhZDI1NTQ0Mjc5MmJmYjBjOGZiZDI1MDE0IHJlbGVhc2UyNi1tYWludAorNzQyNDkgYTVkMDI1YWQyMWM4ZWExNGZhZDM4MGFkMDJiOTMyZTMyMjlhZThlNCBweTNrCis3NDI1MCBmMzU3ZTI2MDNkOTNiZWIxNWZhY2M1N2EzZjdmY2JmYjQ0NGQzY2I4IHJlbGVhc2UzMS1tYWludAorNzQyNTEgNjBiMzFmMGRiMDE2Mzg0NmFlMmEyYTZmNjc5ZTU2YWIyOTJlZTRiNiByZWxlYXNlMzEtbWFpbnQKKzc0MjUyIGVlMjU0NTllOWI5MWZhY2FjNDc2ZDQ3ZDFiNmNiMjY1YzEyZDQyYmYgbGVnYWN5LXRydW5rCis3NDI1MyAzZWQxNTkzZGQxNzQ3MjAyNzZiYTcxMjU4YzEwM2JjYzU1ZDZkMTJmIGxlZ2FjeS10cnVuaworNzQyNTQgMTU2ODNjMGVhZjI4NjMyZDYyN2VhMGE1MjBiZmY2MWVhOGI3ODI4YSBweTNrCis3NDI1NSA2NGFmNDE2MGNmMWViOWY5M2RkYWM4NzY3M2NhMDA0NWVlYmU4MTE2IHJlbGVhc2UzMC1tYWludAorNzQyNTYgZmExNGY4MTMyMmNlMDcxODc4ZjNkNmNkMjViNjAwNDMzZjBjN2U1NiBsZWdhY3ktdHJ1bmsKKzc0MjU3IDFkZjI4MWM5ZTE4MjFmYzljNTBkZWM4N2Y4ZjFjNzM5YTc3ODVlZGYgcHkzaworNzQyNTggMTM3NTk5YWNiOGJhYTMxODAwNzYyYzdmZDUxZmM3YzQwYmNjNDNmMyBsZWdhY3ktdHJ1bmsKKzc0MjU5IDkzODgzZjM3ODdiNTc5Yjk3ODExNDIxODIwYjgzOWJjOTI4YjVmZWIgbGVnYWN5LXRydW5rCis3NDI2MCA0ZmU1ODAxYmY3MTIxN2JhNDc2ODg0MTZlMjFmODg4ZGNiNzFhM2EzIGxlZ2FjeS10cnVuaworNzQyNjEgNWJlNGMwOWU0YTY2NjI4ZTQ5OGNhM2E1MzhkZDZlYTE3N2E2OTA1MyBsZWdhY3ktdHJ1bmsKKzc0MjYyIDdhYTBkNmZhNjM1OWYxNzhhMzRmNjEzZjdkMzQyNTU3ZjdhNzc2ZDMgcHkzaworNzQyNjMgZDI5ZDFkOGUyY2Q2MzY5ZjEyMTRjYjYwNmYxZjYyZmYzZGFhNjE5ZSBweTNrCis3NDI2NCAzZTBjZTk0YzJlMWUwZjEwNDE3OTQwZGZlM2M4YTEyM2Q1Yjc1ODM3IHB5M2sKKzc0MjY1IGJkMDNkNmQyZWZiMDk1MGRjMzc3NzlhYzM3NmE5ZGQzNDMxYTc3MTcgbGVnYWN5LXRydW5rCis3NDI2NiA0ZDQ0ZjJhMzhlNTFlZjIwODIxNDg3ZmY4MTc5NzE0NTZmYzdkOWRjIHJlbGVhc2UyNi1tYWludAorNzQyNjcgMDUzNTc0MWI1N2JiMjBiNmQ2NDc1YjNkZGQ1Y2UyOGZmYTM4OGRkYiBweTNrCis3NDI2OCA2NTA1MGU4MjZhOTZkYjU2MDVlZDdkYjMyYjM0MDYwN2IxOGMyZjVlIHJlbGVhc2UzMS1tYWludAorNzQyNjkgMTZmYTU3MDYyOWUzZjQ0Y2NjYjc5MGQyZjA3M2NiZGNjNGVhNDk4YSBsZWdhY3ktdHJ1bmsKKzc0MjcwIDE5NjExYTI5YzhkZTdlODExMjEwMjc0NGMxNGYzN2JkYjFjYTYzMmQgcmVsZWFzZTI2LW1haW50Cis3NDI3MSA1NWUwMmZhN2ExMWMwZWE5OWEwNGRkNjAzYTM3NDYxNTY3MjFkZWRiIHB5M2sKKzc0MjcyIDA0MTIxNjE1OTU1YTI4YzA1MzZkZThjZDQ3MGIyZTdlZDdlOTQxYmUgcmVsZWFzZTMxLW1haW50Cis3NDI3MyAyYzdlMDc2YjRjYTlkODI4ZTNhMzE1N2U1YWZjYzVmYTNkMTY0YzQ5IHJlbGVhc2UyNi1tYWludAorNzQyNzcgM2FmM2ZiMTY4NjM4M2FmMWVhZjE0YjRmMTYwMWYwOTZkZTY4YTE2MCBsZWdhY3ktdHJ1bmsKKzc0Mjc4IDgzYjQ2YTU5ODhiMGViNTEwZGU0MjM4ODk3ZDQ5OGU3NzFlMTY4MTMgcHkzaworNzQyNzkgNzQ2YTgxOGJkZDM1MmI2YTk0ODU5MzMyNTc1YTEwZTJiNDE2YjRhMSBweTNrCis3NDI4MCA4ODI1NWNiNDUzNGRhZDVlNGU2NWJlMjk4OTgwOGRlMDQwMTlmNDcyIHJlbGVhc2UzMS1tYWludAorNzQyODEgN2MyM2YwYmNjYTg1Y2VjNTgzMDE2MTQyOWZkZmJjNWEzNWJhZDNjNSBsZWdhY3ktdHJ1bmsKKzc0MjgyIDhiNDhiMjgyZWJhOTM5NjBjMDRjYmM0YTVlZGY2MDI0ZWExZTc5YTYgcmVsZWFzZTI2LW1haW50Cis3NDI4MyA0YWUwNGUwZjY4NTAzOGU0ZDY5ZGQ5NmMyZjYxOTczODkxYWUzMWZjIHB5M2sKKzc0Mjg0IDc5Nzg5ZTg5ZmY3ODQ4NWEzZmQ3YzVmOGE2MGFjNjYzZmExOWRlZjggcmVsZWFzZTMxLW1haW50Cis3NDI4NSBkMjUzNzMyNjY3Mjk3NjM3NjhjMjUyZGE5OTE3YzNhZjJkOTA1NjM3IGxlZ2FjeS10cnVuaworNzQyODYgZjQyZTA3YWIzMjZlYzVhZDg5NjliZjU0N2M5ODc5NTRmN2Y5NWJlNSByZWxlYXNlMjYtbWFpbnQKKzc0Mjg3IDQ2ZjliZTI1MDkxMmY2MTM1ZDBlMDc0OGIwOTk4N2UzMGY2MTMxODEgcHkzaworNzQyODggY2ZiZWZkY2MyNmRiMmY1MmYyOTg3MGQwNmM5YTMwMGYyZGYwYTJjNiByZWxlYXNlMzEtbWFpbnQKKzc0Mjg5IGUxYWM1NGJiMDhlZDI5YzI5MzM1MWVlNTY1ZGUwZmUzZTA5ODQxZDcgcHkzaworNzQyOTAgMDhlY2E2ZThiMGJlZmJiMWM4ZGQzOTAwMzRjNDBmYmRmMjU2M2M0NSByZWxlYXNlMzEtbWFpbnQKKzc0MjkxIDQ2ZTQ2YTBlNjIyZTYwMmYwZTI5NGNlNWY1NmE1NWI0MmJhNGM3YjEgbGVnYWN5LXRydW5rCis3NDI5MiAwMDI5NDZiNTJmYzNlN2U3NjMyNDA2NmQ2NTUwZmRlYjQwNGJkMmYxIHJlbGVhc2UyNi1tYWludAorNzQyOTMgZDk5Y2FkZjBlNWYwYzk2MTQ3MjkxMjAzZjkwZWE0NDdjODZiM2JkNyBweTNrCis3NDI5NCBjZmE3ZTk0M2ZmYzNmZjAxOTRmNDc5ZGUzMGUwYTcxNjE3ZGFkYTYzIHJlbGVhc2UzMS1tYWludAorNzQyOTcgNTAyY2UyOGZlYmFhYjc0Y2QyNjQ1NWE5ZGEyNTVjNmUxYjQ0MjUwMiBweTNrCis3NDI5OCBmYTZmZDFlZDczNzg4M2E5N2MyYjg2ZTVmNGMwYWUzNDY2MWI1YTM5IHJlbGVhc2UzMS1tYWludAorNzQyOTkgZGQ0ZGE3NWViYzk3MTVkYjkzMzkyM2NmNTg3OTRmY2U1ZWZiZWU5MCByZWxlYXNlMjYtbWFpbnQKKzc0MzAwIDI3MWQzODJkY2FiZGZmYzJlZWYyNGMzYjVmYzlmZTVhOTgwYTU1ZDcgbGVnYWN5LXRydW5rCis3NDMwMSA2NThkZTg0MzgxZDdmMzdjNGYyZTdkYTU2ZTFjZDAyYzQzYzdmZDZkIHJlbGVhc2UzMS1tYWludAorNzQzMDIgNTM0NWUzYmM5ZTQxNjJiZmY1ZGQ4YTUyMDg1ZDNjZTExYTQwN2ZhNiBweTNrCis3NDMwMyBhMGUxZDYyN2I3MTgzNTU1MGRiNDIyODUzOWY5NjIwYzAxODJmMGU5IGxlZ2FjeS10cnVuaworNzQzMDQgMzQyNzdkYTM4ZTM4OGI3OWQ4ODQxN2IxYjg5N2MxZjVmYmRkZjU5MSByZWxlYXNlMjYtbWFpbnQKKzc0MzA1IGNkOWZhODFlYTQ4MDEzODk5MTgwYzlkZGFiMWNiNmM4YWFhNGMzMjYgcHkzaworNzQzMDYgODg0OGM0OWVkNWY1Nzc0NzQ4OWE0MGU0M2YzZTAxMjQ3ZTRjMmUyNiByZWxlYXNlMzEtbWFpbnQKKzc0MzA3IDJmYWU4MDk0NTBjZDExZjcxMGE2ZjdhNWUxZGQ5NjJhNWVmMjVkNGEgbGVnYWN5LXRydW5rCis3NDMwOCA2YTA1ZWM0OTNjZTllM2YxOGM2OWVkYzIzMDRjNzM1MjViOTY1YjVhIHJlbGVhc2UyNi1tYWludAorNzQzMDkgZTgwMjViODVhYjE4MjdjNjUwMzRjOWZjZjU4YTRiNzRmYmY2OThlNSBweTNrCis3NDMxMCAzZmYxNzI1ZjgzN2VhZTE2NmUwZDljNDdjMzQyNWEyNmRiZTMzMDU4IHJlbGVhc2UzMS1tYWludAorNzQzMTEgNWRlMTljNTAxMWNhOTM2NzQxMDkzNjY1ODlmNzhiYTc5ZWFkMjQxMCBweTNrCis3NDMxMiA1ZDg3NWZhZGY2M2Y1MzU4YzczYzY5YTljNTNkNmViODkyNjMxMzFkIGxlZ2FjeS10cnVuaworNzQzMTMgYjE3NzUxODdhYTMwZTczNzJlMTgzNzQ2NzljYTQwYjhhOTE2Y2FkMyBweTNrCis3NDMxNCAwODM4NmM3OWUzNGYwZmNkYzI3NDM5Y2JlMzE5ZDBjMzM4YjRjNzg0IHJlbGVhc2UyNi1tYWludAorNzQzMTUgZWIyMjQ0MjE5NDE5OTkyNWVlN2Y2MDZlMzk5NGM4M2RlOThiNTZhMSByZWxlYXNlMzEtbWFpbnQKKzc0MzE2IDlhNDNmYWM4NzYwYzJmOTNmOTcyYzAzNGM0ZTEwZDk0MTg2ZTJkYTMgcHkzaworNzQzMTcgYzhmNGMxMzJkNmRiMDRlOWE0M2U4MTc0Yzk1YzM3N2RlODkxOWY1NyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzMTggNjQyNDg1ZGJmZmJhYTEwMzBmM2IxOTk4YmM4YzYwZjdjMDY3MWZiZiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzMTkgYmQxYmNjZDhlMzQ0YjlmZGQ0M2NlMTM2NmE1NjJkMDgyNjNiZGE3MyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzMjAgYmE4MDJjMGI1MzhhNzk2OTIzNzY2YjNlYWE4OTNhNmRjMTI4ODY0YyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzMjEgZmNlYTdiYTRiMDM0ZGNiMjQ0MDgxNGVmYjliOGQwYmY4Y2I4MWJlMyBsZWdhY3ktdHJ1bmsKKzc0MzIyIDc1OTQyYmM3NGY3MTIzMTMzMmZjZTZiNmYyMzJlNTI0NGVmNTcwMDAgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzIzIDBjNGVlNjJkZjBlMTkwYmU2ZTBmMjhlYzE4NTMwYTkxZDkzNzE1OWYgbGVnYWN5LXRydW5rCis3NDMyNCAxOTJlMzQ0NGI4ODhmYTQ1MzFmNGYwODllOTMxYTE4NDNlN2NkOTlhIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDMyNSBlNTczM2Q1OGZkYjE1YTc4MDRhYzY5YTRlMTE5YTlhMWU0Mzc1NmE5IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDMyNiA1YTEzMGI3NTg1YjFjZTVjNTE1MjUxZDM4NmJlZmU1MDcwMTQ3NWJjIGxlZ2FjeS10cnVuaworNzQzMjcgNjVkMTY4MmRjZDVlMGU1OGIwZGFiMmMxNTFmMzlhNGJhNGQzNDNkNyByZWxlYXNlMjYtbWFpbnQKKzc0MzI4IDFiZTNkNDI3YWNhMjQ0NjZhMGJiMTBhYmNmNTJjNTllZGFjMmVkNDUgbGVnYWN5LXRydW5rCis3NDMyOSAwNmNlOWQ4NDY4YzJmMDY2OWU5ZTZiMGIxODRmODUxYWM2NWRlMzVjIHJlbGVhc2UyNi1tYWludAorNzQzMzAgN2YzZjZiNTVlNDdhMjhjN2ZjZTRkZjE1OWY5ODU2Y2IyMGU0YThhMiBweTNrCis3NDMzMSA5ZmRmMTgyZjE5YTkxM2QxMzkzNThiN2IyYmZjYmYxNzRlOWJiNmRiIHJlbGVhc2UzMS1tYWludAorNzQzMzIgOTNhOTZkNmRmZmI1ZTkzMmRhZTBjNTUwNmIwOWQ4ODcwOTNjNTY0ZiBsZWdhY3ktdHJ1bmsKKzc0MzMzIDdiNjZjZDAyZDYwYmE4MDFhNTA5ODc4YmZkYzI0YjY1N2U0NjE2NGUgbGVnYWN5LXRydW5rCis3NDMzNCAzMTU5NzI2ZDBlNjU5Y2M2ODViY2Y4ZmVhZjkyZGY0ZWIyYjkyOGYzIHB5M2sKKzc0MzM1IDRmMjA0ZWI3NmUwN2EyNmE2NjdmOTMwMmNkNDNmNGJlMDMzMDQwYTUgcHkzaworNzQzMzYgMmY2NDFlMzM3YzlmOTZhOTI5ZDQzYjg1NTk0NDJmZWYxZDRlOGEyMyBsZWdhY3ktdHJ1bmsKKzc0MzM3IDAwZmQ2Mjk3ZWJlN2IwZGY4ZTFhMDhiNmZiOTA4YjY3MmY1MmZjOTAgcmVsZWFzZTI2LW1haW50Cis3NDMzOCBmMTM2MDJhODRkYWFhZmQ2ZjJjMjE4MDY0MDc1OGUzZDUxZTU1NWI0IHB5M2sKKzc0MzM5IDMwODg3OWVjOTAyMzRkZTM1YzVjYmYwMTA4NGEwMDg0OTg1ODUxMDEgcmVsZWFzZTMxLW1haW50Cis3NDM0MCAxOWU3Yzk5NmU2N2FlYmU0ODNmYzQyMTZlNTQ1OThmYTk0YTQ3MjM3IHB5M2sKKzc0MzQxIGVmYTg4MTFiMjUwYTNjNjU5ZjVhYTU2MGQ5M2M0YTU3M2EyZjQ4MjAgcmVsZWFzZTMxLW1haW50Cis3NDM0OCA4NWMwZDhkODNjYmZmYjYyYWI4Mzg2MjUyMDI5YjZlOTkwMzQ1MmY5IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDM0OSBiMDAyZTkyYTM2Zjc3NDY4ZjhmNjY4YmUxMGNmMDNlNTRhMDBlZWU4IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDM1MCA0MTJhODVjZTU4NDRhZDhkNmU5MDJiN2MwYTIyYjE2MTgwZTZjNTBlIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDM1MSA5NGQ4YzM0MWZiNDJmMjI0MGVjOTEyNjBjZWE4NWE4NzNhOThkNDYyIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDM1MiBjZDIwYTllZDg0ZTVhM2JmMTBkZmI0NjgyMjEyYzQzMDg3NTM1ZmU3IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDM1MyAxMTI4NmI0NTNmY2ZmYjM5NTU3MzQyMTNjYTQxOGE2YjNkOWIwMjE3IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDM1NCBlNGE2NzQ0Y2U0YTlkN2FmOTU3MzY2MDcwNTcxODUxMDU4MDYwYjI3IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDM1NSBjYTZlOTA0NzBkOTZmZDNhY2MyNmYyNWVkMTg1ZDBhYzEzMzRkMWFhIGxlZ2FjeS10cnVuaworNzQzNTYgMzYxYTAzYWQzYzM3M2JjNWM3NTdmNmZlYzIxZjkyZjFlYTVkMjU1NSBweTNrCis3NDM1NyBiYmVhOTgxNDhlMTI2NjEwNDUxZTEzYjU0NGE2NGJiOTQ0M2Y0M2IzIHB5M2sKKzc0MzU4IDVjOGIyMjM4YTJmNTI0YzhkNzQ0NzE1MTVlMWUyZGIzOGMwMDY3ZDMgcmVsZWFzZTMxLW1haW50Cis3NDM2MCBlNWFlYmQwMzhmMGMyYWQyNWU1ZDZkMTU5MGQ2ZGE4Mzg2MGMzMzJiIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDM2MSAyYzY0ZTliZmIxYjY2NjVlNmJlYmY0YWI0MjZmNDE4NDVlMjVjZGQyIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDM2MiBiMDEzYjNjOGM5YzdmNWQ5ZWUzMGY1YjdhZDFmYjcyZjE4YWRmNzNiIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDM2MyBjMTllNzkwZDk0MmY3OTA5ZDY2YWNiYThlMjk2MDY3YzMyY2UwMDkwIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDM2NCAwMDI1ZTA3MmZlOTdhZDc5MmI3ZTVkYzFkNzFjYTZlM2QwYmY3ZDAxIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDM2NSAxMjNjOTVmZTA0YjYwODMwNTNkNjE4NmI0YTM1ODliM2U1NGU3MGJhIGxlZ2FjeS10cnVuaworNzQzNjYgZWY1NjUzNWY1MzU2MTgwOGU1MzE4MWU0M2Q3OWM3MDBkZTE5MmZjMiBweTNrCis3NDM2NyA0YTFhYjJkNzAzODU5YTRiOGM5ODA4MjVkNDUxMjIzOTBhNWJkMDkxIHJlbGVhc2UzMS1tYWludAorNzQzNjggOTg0OTg1ZWEyNGM0ZGNlMjk0OTZkNDQ5Mzg4MDE4NWU4NjhhYjU5MiBweTNrCis3NDM2OSA0YTliODU5MTY0OWZiZDZlNDQ0MWVlZGNiMGI2OGMyYjRhYzQ2MTc1IHJlbGVhc2UzMS1tYWludAorNzQzNzAgZTAwYjUwYTNkNDk5ZDVlMWQ0YTA0ZDAzYjBjNTIzOTA4M2RmZmEyZiByZWxlYXNlMzEtbWFpbnQKKzc0MzcxIDdiNDk1YzhmMmEyNDBlYTgwNzUwNGM1OGRjZGUxNzI4ODM0MTgxZTUgcmVsZWFzZTMxLW1haW50Cis3NDM3MiAxYWNkMDI3N2QyMjUzMGU1YzEyYjk5OTI1ZWZkMDlhNGNkN2YyOGI2IHJlbGVhc2UzMS1tYWludAorNzQzNzMgYTQ5MmIyYmM5NTFiNDM0ZTU3NTk5MTg5MzFlOGVjNjc4NzI1ODA4MCByZWxlYXNlMzEtbWFpbnQKKzc0Mzc0IDUwOTVhNTI3NmQ4YzI2NjcwY2IxMGUzNjU3YTg0ZWZlMjAyNGFhMzcgcmVsZWFzZTMxLW1haW50Cis3NDM3NSA1ZmJhYzA5YzBlOTFkYjJmYWI2NDRjOWUwZWI4NTdhYWRiODNmNWMzIHJlbGVhc2UzMS1tYWludAorNzQzNzYgNThjMTBjZjA0NjE2N2UxMDAxYWE1ZThlMDNjZDA4MTk3ZDkzMmViYyByZWxlYXNlMzEtbWFpbnQKKzc0Mzc3IGRhZDBhNTRmNWE1ODNlYjkzZDkzNGEzZDg2M2NlMGZkOWNiNGU0MGYgcmVsZWFzZTMxLW1haW50Cis3NDM3OCA1OWI2Yjg1NTdhMzMyOWYwYzYyMjBiNWZlOWUyZmZjMmJlMzBhZGYxIHJlbGVhc2UzMS1tYWludAorNzQzNzkgMTdlNzE0ODUyODdmNzFmMTZiMGU1MjQ1YTY1MDE5YWVhY2Q0NDVmOSByZWxlYXNlMzEtbWFpbnQKKzc0MzgwIDU0NmFhMTM0ZDc3MzdhMzA3MWVjNGFhYjU2ZmI1MTM5YjI2YjUyM2QgcmVsZWFzZTMxLW1haW50Cis3NDM4MSA3NzBhOTNjN2FiZmY3N2E3NzQwNDczZDhiYjQyZTUwZmViM2JiZDMwIHJlbGVhc2UzMS1tYWludAorNzQzODIgYzRkNmI3N2MzNDY4MTU0ZjZjZjE0NjkwMTU5OGNmMzdmMTczYzI4MiByZWxlYXNlMzEtbWFpbnQKKzc0MzgzIDEwOTQwYmNlZGM5OWU0Nzg1NWYzY2IzZTU5M2U2OTQxZDllYjVhNmEgcmVsZWFzZTMxLW1haW50Cis3NDM4NCAwYmIyMzIwNzhiOGNiODE1ZjA5ODM5MGMxYzExNzQ1OWQ3ODI2NzYxIHJlbGVhc2UzMS1tYWludAorNzQzODUgZDdmM2NkZjJiMDdmNzg5YTFhY2E2N2RiNjUzYmE5Y2NmODU0NmMwMCByZWxlYXNlMzEtbWFpbnQKKzc0Mzg2IDBmN2E2ZWIxODIyMzE3NGQ2NDY2NDNiNTZiOGIxNjY4MjlkOTE5NTIgcmVsZWFzZTMxLW1haW50Cis3NDM4NyA3ZWU3ZmRjZWEwZDcxNmZhOWFiZjNkMTg5NTVjNTFjYTgxNGJlMDE1IHJlbGVhc2UzMS1tYWludAorNzQzODggZWZlODA4YTVmNTllODg5N2I1NTYzOWI4ODVlZGFlODlmOTk4MzNhZSByZWxlYXNlMzEtbWFpbnQKKzc0Mzg5IDc0M2ZhMjgyZDc0ODEzODQ5OTAwNDQ4ZmFmMDZjZTdkM2Y3YTI0NWIgcmVsZWFzZTMxLW1haW50Cis3NDM5MCBjZTY2NDIyMThmZmVjMWE4Y2M2OTE0YzMwM2U2N2Q0NzQ5YTc5NjM1IHJlbGVhc2UzMS1tYWludAorNzQzOTEgMzRlYTU4OGFjM2M1ODgzY2E2MTNmNDYzZmY5NWViZjFmZTg4Y2YxYSByZWxlYXNlMzEtbWFpbnQKKzc0MzkyIDk0YzI4YmE2NTZiZTA3ZDQzZTNhMDZkM2M0MzhlNTAzOGQ1YjZhNzQgcmVsZWFzZTMxLW1haW50Cis3NDM5MyA2ODBhZDhlZWQzM2IyN2Q5MGExNjM0MjJlYzc0MzMwNjU4ZDYyMTM4IHJlbGVhc2UzMS1tYWludAorNzQzOTQgMTJmZWM3M2NiOGU1M2Q5NjA5MWEzYzM0YmRmYjEyMWFmYjQ4ZjE3MSByZWxlYXNlMzEtbWFpbnQKKzc0Mzk1IDZlMmJhMjM3NjgzM2I2YmYxYzg1YmZhNmQ0N2NiYWVkZDQzODQ4MzIgcmVsZWFzZTMxLW1haW50Cis3NDM5NiA3ZTUxNDE3MDQ2YWI4NzEwYjgwMGYyYzFiN2M5ZjMyMDZlZDkzZmY1IHJlbGVhc2UzMS1tYWludAorNzQzOTcgZmY2ZWVhMDE3YTdmNDY0MTg0MmIxZmYyODllNWVlOTMyNjY1NWFjMCByZWxlYXNlMzEtbWFpbnQKKzc0Mzk4IDU0MTRmZjczODllZTk4MWVkNzJlODA0ODMxNjViYjRlMGMzZmQ1Y2MgcHkzaworNzQzOTkgODdmZGYyNzk1YTdjZDQ0MzY4NDNhZTFkZDQwNzMyNjRjMDNhYjI1MSByZWxlYXNlMzEtbWFpbnQKKzc0NDAwIDlkNDA1ODZhNmFmY2RlMDFlZmNmYjZmYTk1NjM0Y2MwMGRhY2NlZjUgcmVsZWFzZTMxLW1haW50Cis3NDQwMSBmNzI0MzE5OWQwYjFjY2IxMmRlYWY2NThkNWRlMWIxNWNmMzc5MjIyIHJlbGVhc2UzMS1tYWludAorNzQ0MDIgNGQzOGU1MWU3Y2RjOWE5Nzk0M2Y2Nzg1M2ZjMjllMTEwZDE5M2I3ZCByZWxlYXNlMzEtbWFpbnQKKzc0NDAzIDAwNTBiNTcxMWZhYTZiN2I4ZWJhZWVlYzdkNzYxZGY1ZDNjYTQ4MmQgcHkzaworNzQ0MDQgZTA1MzIyZWZjYTg1N2E5ZjUxYzBhNGM1ODFlNmEwYzI4ZmRiNjMzOCBsZWdhY3ktdHJ1bmsKKzc0NDA1IGJlMzQ1MzFjNmQwYjc0OWY4NTk5Zjg1ZWQwMzRkZThlY2QwYTMyOTQgcHkzaworNzQ0MDYgNTZlOGMyMmRmNzFmMzE2Njk3NjVkMjJjNDM5MmQwZWRlYzY4ZTY2NiByZWxlYXNlMzEtbWFpbnQKKzc0NDA3IDkxZTQwZWI0MTk1NmEwNDVkMTAyMTI3MWZlNWNmMjRmNTIxN2QxN2YgcmVsZWFzZTMxLW1haW50Cis3NDQwOCBhMjY3YzYwNDQ2NWYzNzRkNjM4OTRiOTU3ODUxOTM2NGI0MjJjNThlIHJlbGVhc2UzMS1tYWludAorNzQ0MDkgMDE0ODQxN2UxMzAxZDg5M2Q4ZDQ1MTNlNTE3MGMyZTMyOTRkOWRiZCByZWxlYXNlMzEtbWFpbnQKKzc0NDEwIGJlMzQzYWY0OTA5OTk1MzU1MjI1MDZlYzNkNDNlNDJmOWJkZTk2MTMgcmVsZWFzZTMxLW1haW50Cis3NDQxMSBhZjExMGE0OGQxNTQ3ZmFhNmU0ZGUyNTBlNWE2ODE5ZGE2ODcwNGJlIGxlZ2FjeS10cnVuaworNzQ0MTIgNzg1ZWMzNDQ3NmJhZmE1ODU2NmU3NzY3NDNlOGE5OWZmMTQ3ODdhYyBweTNrCis3NDQxMyBlM2Q1MTMxOWI5ZDBlYzgzN2NjMTM3NmRjNTcxOTgwZmNkNzRhNjgwIHJlbGVhc2UzMS1tYWludAorNzQ0MTQgMTIyNGFhM2ZiNmEwZDQ2NzY4MWFjYjBhYjdkZDcwZGY3M2NkMjNiNiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0MTUgN2M4ZjQ4MTE2MGMyMmUwNzEyYjVlY2EzMWZlOGYxOTgwZGM1YjU1ZCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0MTcgZjJhMTJmNTI1OWU3ZWRkMjIzYzc1MGUwNWVmNTYxNjJkNmE1MzQ1ZSByZWxlYXNlMzEtbWFpbnQKKzc0NDE4IGY4ZGI0OTNkZDg0ZmI4MzBkOWFjYjQwY2IzNDRhZTYwZmYyOWUzYjkgcmVsZWFzZTMxLW1haW50Cis3NDQyMCBmYWY4YTEwMDk5MGQ2NmNkNTEwMWQ0ODdiYmY5YWU4MDdkMDJlMjNiIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQyMSAzYTM1ZTMzYjA3MWJkNGVkMjc2YTFhMGQ5ZDAwNTYwMmYzYTJiNDFkIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQyMiA5YmM5NTg4ZWI2NGMxOTEwNjgyM2FmYTVmN2YyNjY5YWJjYWM1YjhiIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQyMyAzODFjNmY5Yjc0YWVhZTZjYzNmYTVkZmFhOWI2OGMwOTNjZWU0NWYwIHJlbGVhc2UzMS1tYWludAorNzQ0MjQgNDk2MjkxMDM3NTgyMDk2NjJlYjM5NjM3ODRjMWNjMDQ1NWVmODE4NCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0MjUgZmI1ODU3ZjkwM2ZlOTM3NWFiZGEzM2FjMDU0Nzc5ZDFjYTgzZWU0YyByZWxlYXNlMzEtbWFpbnQKKzc0NDI2IGZiZjhiNzkxY2U4MTFiNDkwM2M0MjBiNTVmODhjZDUwOTQyNjJmODIgbGVnYWN5LXRydW5rCis3NDQyNyAzNWVmYjEwNTRlYzZjZWNhNzIwMTdhNTg3MjYzY2I2YTkyNTczNDBiIHJlbGVhc2UzMS1tYWludAorNzQ0MjggYTFhZDE5MmY4ZGY1NjQzNzM5MGMyYWQ4OGNkMTMyZDk2MGIwNjIwZCByZWxlYXNlMzEtbWFpbnQKKzc0NDI5IDk3NTIyZTI3YjA1ZDBjODIzOGRkNzRmNTU3Zjk0YzM1YTZiMjZjZDUgbGVnYWN5LXRydW5rCis3NDQzMCA5YTZiZWIxYTkzOTc1NzNkZGY5ZDhkOThiZDE2NGFjNWNjMjQ4ODYxIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQzMSBlZWFmZDg3MTY0MTBhNmM0ZGMzYjc5OGEzM2UzZDU3NGEzNjdlMDQ1IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQzMiA2YWMxNDc4ZDliMGU2NjE5OGY5ZmM2Nzk3NTIwYjlhZjk1NTkyZmRiIHJlbGVhc2UyNi1tYWludAorNzQ0MzMgNTE1MmI1MzY2MTJlNDg3OGZkMDBkNTc2N2E1YTcyMWE0Nzc4YzMxNyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0MzQgMDFkYjQxMGYyZjIwN2ZmMDA1ZTU5YTdiOTNkM2JiMTAyMzhkMWE3ZiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0MzUgODk5MjdmNWU4M2Q2Zjc5NDUxMjY5MjU2YTM1YzVkMTljMjk3OGNhOSBweTNrCis3NDQzNiBkNWE2MmRkOTA3ODk4ODc4MDNiOTUwMTcwY2RkMzY3ODQ2ODY1YzJmIHJlbGVhc2UzMS1tYWludAorNzQ0MzcgYTVlNmYzZmYyZTJmNjQ3OTlmOGMwNmMwZGI4ZjE3ZTI3ZmI0OWQwMCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0MzggNDlhNDI4NjY5Nzg4ZDY3OGQ1MjZjNjY3ZjZmZjM5YTY2NjE2YjY2MiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0MzkgNDI3NTlhNmVlOThhYzVkMzZhYzIwNmQxMDhjNTEwMzI5M2QzOGFmNyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0NDAgMWZjODkwMTRiZDgzZGIwOGI1ZTVhOWJlOGQ3MDg1Y2JiMWIwMDFjOSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0NDEgZmUyODY0NWE2MTIyNmY4MDU1MjE4MzdmNTgyNGI4Y2YyZDc0NmU2NyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0NDIgYmViMTJiYjc3OTFiZjc3OTMzYTI3N2YyNzRkZTc0Nzg5M2Q5NmU1OSByZWxlYXNlMjYtbWFpbnQKKzc0NDQzIDFmYjdlMmY3ZjBiYjRlMjRjYmVhOGEzZDYzNzUzMDdiZTk2Njg1YWQgcHkzaworNzQ0NDQgNWVhM2Q0Njc1NjRhNTJhMWU5MTgzYjZlY2RiMjhiNmM1MDJiZDAwNiByZWxlYXNlMzEtbWFpbnQKKzc0NDQ1IDUxZTVhNDE0YjNjMjQ3ZjJmNzVhNTM4MGRhMWZiYzg5MDJhMTVjYzUgbGVnYWN5LXRydW5rCis3NDQ0NiBhMGY4MGRjMDlkZmUyMjg5ZjhjNDUyMTYzZDY3YWYyOGEyZDc5MTdlIGxlZ2FjeS10cnVuaworNzQ0NDcgYzZkMzI3NjZlOTRjODBiNDZhMmM2ODNkNjZmMjY2NGRmN2YxNmM4OSBsZWdhY3ktdHJ1bmsKKzc0NDQ4IGI3YTU3MWQ0YWFhN2UxZjRhNGJiNmY3YTUwNzgyOGRhZmE3OTkzZjEgbGVnYWN5LXRydW5rCis3NDQ0OSBhZTgxN2ZhNGU2MDU2NmVhY2I0Mjg2N2Y5NDJmOWJiY2UyNzEzYTFlIGxlZ2FjeS10cnVuaworNzQ0NTAgZTRhODNlOTE1MjFhMzY5ZGM4ZDgyNzYzYjM1YjQ4ODhjMTM4MDAxNyBweTNrCis3NDQ1MSBkNzI0Y2E4YzU4MjM0N2IzYTEwNDA3ZmQ0NmM1MmVmMmI3ZGRiMzE0IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ1MiA0MWIwMWJiOTA2ZTM5NjljZGZhYWM2NTIwZWE1OGE0YWVkNGJkZWY4IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ1MyBkNzE0MGJiYzY0NzNiZTQ5YjdiNjI5ODE2ZTZmOTlhNjc4MjNhNTQ5IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ1NCBkNDRlM2FhNDJhNWJjNzgxNzI2MzdmYWM2ODU2MGI0NjgzMDg5NWUwIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ1NSAwMDIwODcxODdiMmZmNjcwZmMwNzEzNjc2MGFiMGQ5MzdhNGQ0ODM0IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ1NiBmOTFjMWQyODgzNDM0ODk1NjZkYWE3ZDdhZGU1ZDJkMjZjZWU2ODJiIHJlbGVhc2UyNi1tYWludAorNzQ0NTcgMTEzYzBiODZmZDc0OWE3ZmNiZjg2YWM5OWM2MDYxOGM2NGZlOWY0ZSBsZWdhY3ktdHJ1bmsKKzc0NDU4IGJjMWM0MDMwNTRlMWM3N2ZhNzIwZWE3ODk2Y2Q5N2EzNzg0NTcyZjkgcmVsZWFzZTI2LW1haW50Cis3NDQ1OSAzMDk2M2NmYjY5ZmQ4MjBiYjgwZDZkM2U1ZjhiNDQ0ZDI3ODUyZWU5IHB5M2sKKzc0NDYwIDRjNTFjNGJmZmIyMWE3MGY5MWU3ZjkxMGUzMTlkYjBiNzM2OGFmYTAgcmVsZWFzZTMxLW1haW50Cis3NDQ2MSA2NDNjNmM3Njg0YjE2NWM4ZjI2ODk4YTBiMjI0MTFkYTM4ZGMxMzI2IHB5M2sKKzc0NDYyIDIyNzdlYmNlZGE0M2E2YzE4NWEzZWRhOTgxMDE3ZmI4ZmU3MDU0NDkgcmVsZWFzZTI2LW1haW50Cis3NDQ2MyAxMzc3YThjMjY3OTIyNTc2NDExZTNlYjllYTMzZDk2OTNkNDk1MTFlIGxlZ2FjeS10cnVuaworNzQ0NjQgMWUyODc3MDI2NDM1ZWJkYjNhZWMyZGNiYWZjZmQ5YzdmNmVmMDI0MyBsZWdhY3ktdHJ1bmsKKzc0NDY1IDAwNTMwMjg3YmRiNTExMzFlOTU2NmU2ZTYwZDlkZWFjYTJiNWJkNzggbGVnYWN5LXRydW5rCis3NDQ2NiAzODQzMzRkOGI5ODc1YmU2MjgxMjkwYzk0YjI1ZmQzYjAxOWUxMGYyIHB5M2sKKzc0NDY3IDBmY2Y0MGExNDBlNWVkYmMwOTc2NTU2ZDMyMGI4NGY2YzU5NzI2YmMgbGVnYWN5LXRydW5rCis3NDQ2OCAxOWZjMGQwNWZhN2E0OWJkNWQzZGVlOTg3YzQwZmMyYWRhN2FlMmRmIHB5M2sKKzc0NDY5IGZiN2Q1ZWU5MDhhNTAyYTk2NTBiYmZkN2U0ZWZjZWRkOTMxNmQzMzYgcHkzaworNzQ0NzAgNmFjMmE2NGU4MjZiZTQ1NDQ4NjJmMjM5MWJmMzE5NGRlYzZlZTBhMCByZWxlYXNlMzEtbWFpbnQKKzc0NDcxIDEyMjdlN2NjMWQ5YjE4Y2RlODgyMmI0MjU1ZmUyNTc4MWZjNDVhMDggbGVnYWN5LXRydW5rCis3NDQ3MiBjNjMwYmYwNWNlMzhkZmUyZTcyMDkwNTY0YTRiNjUzMzQ0MjhjNjljIGxlZ2FjeS10cnVuaworNzQ0NzMgYmVjMzQwNWUwNzNmMzQyZjk4ODEyYmYwNzYzZDgwNTE3ZTdkZmNhNSBweTNrCis3NDQ3NCA2YWZhNWJiZGMzNzU0YjY0NjVmODQ4MjdlOGYzOWY0ZDAxOGI1Y2Q0IHB5M2sKKzc0NDc1IGQ3ZTFkMzk3OGRkNjAwNTNiZThmMDc1MzI1MDY5NTBiZmVmMjlkOWUgbGVnYWN5LXRydW5rCis3NDQ3NiBlNTIwMDllMjIwMTdkNTFhNDBjZGU4ZWI4MDE4NTYwN2MzN2E3ODM4IHB5M2sKKzc0NDc3IDZkYTZlZGZhNjI5NmMyYmQwYTlmY2UyMzc1ZjIwNDRhYmY1ZWNiZjkgbGVnYWN5LXRydW5rCis3NDQ3OCA0OTVlZWZmM2I5ZmYwZGJiZjljNGY0MDljMThhNTM5Y2MzZjE4N2Y5IHB5M2sKKzc0NDc5IDc0NmYxMGUwNjI0ZTlmM2U0NzkyOTg5MWViZDg2NTljNDgzNDg1M2UgbGVnYWN5LXRydW5rCis3NDQ4MCA4YjljMGY1NzNhYjI5YzQxYzZjNWZkY2NhODJhMWZlMGZmNTM1NWFmIHJlbGVhc2UzMS1tYWludAorNzQ0ODEgNWVmNmJjMDA1MjBhYjAxOGQ4N2FhOTdiM2U3MDM3MDEzNDJiZjgxOSByZWxlYXNlMzEtbWFpbnQKKzc0NDgyIGRhMjFiNDgwZmYwNTIzNTU2YmM3OGU5OWVmNzkyMTMxZGU1NzUxNjEgcHkzaworNzQ0ODMgZGVmZmU2YWE0M2QxMTRlOGJmNWVlMTM5MGY4ZDhlOTIxZDM0YzgyMiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0ODQgMzRjNmY2ZDI2OTc2ZDNhNjlmZTQ2ZmJhOWNlMWU3NGQzNDA0NWNkMyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0ODUgNDI4NjMyYTU5MGFkYWNlM2I4N2E0NzBhZWI1ZTMzNjFiODZjZWE2YiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0ODYgNzg3NWRlYWM0MTBjOWMzYmY0MDQxZGU3ZDlkZmNiYWY4N2VkMDRhNiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0ODcgZjZlMTdhZWI5MmFiYzg4ZTBkNTRiY2UzOGQxNmM4NjUwYjlkOTMwNSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0ODggNDJiMjU2Nzk0ZTZjNTEyMTliZmZkZjFmMTA0YjIwZGRhZGJjZTU5ZCBsZWdhY3ktdHJ1bmsKKzc0NDg5IDRkMDg4MThiNmM0YTFkODg3M2IwZDgzYWQ2YmNiM2YyNGExNTFlNTkgcHkzaworNzQ0OTAgMjE3YmNiODYwM2FhZDE1YzkzNzU0OGY1Zjc4ZDQxY2I2MTVlMjcxYiBsZWdhY3ktdHJ1bmsKKzc0NDkxIDBiMDdjMDNhNWYzYzM2ODQ0MDE1MDc1MDQxZjBhMGI0ZDEwYTFhZGMgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDkyIDRlYWMxMzJmYWM5NGI4NGYyYmI0MTMzN2FiYTJmYjliZWY0N2I0ZTUgbGVnYWN5LXRydW5rCis3NDQ5MyAzODRmOTY1ZTEyY2RmMWQ4ODlhYWYwZTk4MjQyMDdiNTA5YTMzOGE4IGxlZ2FjeS10cnVuaworNzQ0OTQgNmIwODhkY2YyNWY4Yzg5YmFhODhkOTAxNmI4ZGU4ZWZkNTE5NTQzOSBweTNrCis3NDQ5NSAyYWFmN2QxNDFiZDBmZWQ5NmY5YTI3YmQ5Nzg0YjY5ODcwODY0NjMxIGxlZ2FjeS10cnVuaworNzQ0OTYgMjgyMWU1ZTc2ZTgyOTFjMjc4ZmE4ZDlkMDVmOWNkNmRlMThmYWU5MCBweTNrCis3NDQ5NyBiNTYzYWIwMTcxZDkyMzhiMWRjOGU1YmQ5NTM4YWEwMzI1YmNjOTJlIHJlbGVhc2UyNi1tYWludAorNzQ0OTggZTNhMGQ0YjBkN2FhMDIwOTJjMzdjMjk0NDM3NTRlZGI5OTlhNzVlNyByZWxlYXNlMjYtbWFpbnQKKzc0NDk5IGM4N2FhY2NjNzBiNjE4MDAwMjdmMjlmYWVmM2FiOGI5MDU0MzM5MDIgcmVsZWFzZTMxLW1haW50Cis3NDUwMCBkNDI4YmMxODRlMWZiZGMwOWFjODQ4YWMwMjc5YzBmZDc3NDJlMDE0IHJlbGVhc2UzMS1tYWludAorNzQ1MDEgZWIxMDA5OTM2NmVhNTIyNjA0MGE2NDBhZDlhNGFlY2JhYjRlZTIyNiBsZWdhY3ktdHJ1bmsKKzc0NTAyIDI0Yzk1M2YzZjhkYWYyYzk1OTQ3YmI4MDM3ZGJiYjA0NGFjMzBjMjMgcmVsZWFzZTI2LW1haW50Cis3NDUwMyBhZTJmNzVhYTNmYWE5NDQ0MWFmOTJhNjhmOWMzNjJjNmFkYzA2Y2Q4IGxlZ2FjeS10cnVuaworNzQ1MDQgOTUxNjYzYzAzMGI0OGM4Y2FiZTI3NWNiZmYwOTE5YjYzNThhMTgzMSBweTNrCis3NDUwNSAzYmYwM2FkNGE2YTA2Zjg1ZjQ2Njc1MjM5NmQ3MGZkYzZhMWFlZTlhIHJlbGVhc2UyNi1tYWludAorNzQ1MDYgZDg3NDA2NDZhMDMxY2NjZGFjNmIzNGRjMzc5MDMzNjJmODIwNzIyNiByZWxlYXNlMzEtbWFpbnQKKzc0NTA3IDczZjQzMmNkODJkZThjNzBlOGU5NzgzNjQzYTM4NzM0MmExY2Q3ZDYgbGVnYWN5LXRydW5rCis3NDUwOCBhZDkzMDA2N2MxMjRmYmNjY2M5MmY0M2M0NTVhYzEzY2ZlOGFiNzYwIGxlZ2FjeS10cnVuaworNzQ1MDkgMzdmMmYzNjdhZDhiYmM1NzVjNTU2NjcwZmIyNzFkMzI4ZTQzNGU4MCBsZWdhY3ktdHJ1bmsKKzc0NTEwIGNkMTgxYTZmNGRkNzM3NTExYTI4MDgxOTZkY2FjZjRhZTQzNjFiMDkgbGVnYWN5LXRydW5rCis3NDUxMSBmODAxMmZkZGE2ZDNkZTBlNTExMzI5OWNkOWFmZGRmMjRkZWNjZDY5IGxlZ2FjeS10cnVuaworNzQ1MTIgZjc0NjZhYzFkZDcyNWY3Zjg1YjNmYjQ4M2JlM2MxMTBhMTk0Mzc2YiBweTNrCis3NDUxMyAyY2ZiZGU4Y2JmODg2MTg3MzUwNzFhNTQ3ZWQ2YmZjNWJkMDRjZTFlIGxlZ2FjeS10cnVuaworNzQ1MTQgMDMxZTQzMTY0Yjc2OGQxOWU3NTY4NGY0ZTI4Y2U5YmM5Y2IzNThmYSByZWxlYXNlMjYtbWFpbnQKKzc0NTE1IGUwMWExOTkwNzE3MTExODc1YzQ2MzE5MDM2MDc3OTAzMzE4ZmJkNDggcmVsZWFzZTMwLW1haW50Cis3NDUxNiBmNWU3MDExZmJmZjEyMDVmOWI0NWViODc1NTY4NzE3MTNlODFlNjUwIHJlbGVhc2UzMS1tYWludAorNzQ1MTcgNjUwZGYwZWMwYzEyZjZmMThiNWEyMGI5ZjNhOWI5NmIxYzk4NzQ5ZSBsZWdhY3ktdHJ1bmsKKzc0NTE4IDNhYmJkNzIwOWJlODUwMDVkYmMzY2VhNDcyMTI1Y2U4MDRkNWVlOWUgcHkzaworNzQ1MTkgY2QwYzhhYzljYjQ5NDMxN2Y2MjBiYzE3ZWM2YTRlOWQzZmYwZDZjOSBsZWdhY3ktdHJ1bmsKKzc0NTIxIGZlZmQ5ZWI3YTgyMmRjZmUyOGJjNjE2NWRiYjlhMGE4ZWVmNDhlYmUgcHkzaworNzQ1MjIgYzdjZDI3ZjY2NWQxZGRjNzcyZGMwZDQzYjE4YWNlYjhmMGExODQxNyBsZWdhY3ktdHJ1bmsKKzc0NTIzIGU0NzFkNmQzMjcyNGFhNmUyMzA1MWZmOTU2MTYzMGNiMjhjYTRhYTQgbGVnYWN5LXRydW5rCis3NDUyNCBlMjFjNGM1MjdlNjYxZWExYTk0YjAzMGVlODNiMmYwNTZjNzA5NWRlIGxlZ2FjeS10cnVuaworNzQ1MjYgOTc0NTUzZmI1OWRjYjMzY2I1MjgwZjY0ZmM4YWY2MjIwZjU2OTI5OCBsZWdhY3ktdHJ1bmsKKzc0NTI3IDAyZDQwODlmMzFkZGNjYzc3ZTFiOWUyNTA0MGJlNDQ4MmJiNmRhODAgcmVsZWFzZTI2LW1haW50Cis3NDUyOCAzOGI5N2MzZTk4YmRhYTU2YWE4N2JkNTBkMTc1ZWNjOGY0NTEyNjA1IHB5M2sKKzc0NTI5IDg2ZWY3NGM0YWQ5NzdiMzMwNTIyNjczZmJiM2E4OTRiNWU0MTQ2ZGYgcHkzaworNzQ1MzAgMGU1NWZjY2IxOWVjNTVkMzAzZGY0MmRmNGY0NmZiYjAxYWI4NjMzNiByZWxlYXNlMzEtbWFpbnQKKzc0NTMxIDQ4NzFmODFkNzEzMjAwNGMzZjhkMzM4YTFjYTBiZTNkMGM4NTgxNTYgbGVnYWN5LXRydW5rCis3NDUzMiA1OTRlMTk3ZWQ2M2Q1MmVmYzk5YWQ2N2NjYmM4YThkZTZjNGU3YjhkIHB5M2sKKzc0NTMzIGYzNDA4NzYwZDQ2ZTVjNWFhNjkyZThjZmQ5M2VhMGY5NDYzNzNjMWQgbGVnYWN5LXRydW5rCis3NDUzNCBiYzE2NzA5MmM5OGNiOGVjMTE1OTg4ZWMwYWFiN2IwOGIxMmYzZjZjIHJlbGVhc2UyNi1tYWludAorNzQ1MzUgMTNmMTlmYjkzZjhlY2Q3YWJjZTIyNjBjMDFmYTU2NTM3YmQyODMwZCBweTNrCis3NDUzNiBhODg5NDFlMmJmMjczZDI5Y2Y4NDRhMGQyOTYyY2RhYmYxZjliOGM2IHJlbGVhc2UzMS1tYWludAorNzQ1MzcgMTU0NWNmNzM3MmFmOTY4MTc1MzkyMGQxYWM1MmRmZTc4Zjc5ZmRmYyBsZWdhY3ktdHJ1bmsKKzc0NTM4IDVkN2Y2MGJmZmU4ZmM1YzY0N2IwNGVlNTRlYmRjZmVkNGFkMzkwMmIgcmVsZWFzZTI2LW1haW50Cis3NDUzOSBjNGQ1ODFlNzA5Y2E1NGFmMzUxMjZiYTBhM2U3ZWExMWQ5MzM0ZDc5IHJlbGVhc2UyNi1tYWludAorNzQ1NDAgY2ZhN2FlNzE3YTkwYjZjOWYxZjVlYWE5YjJiNTY3Y2UzNWMzNjc1ZSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ1NDEgYzQwM2I2NmQ5MmIwZmEyM2JhOTI5MzljNjQxOTlhNzcyNGNiYjgyMiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ1NDIgOWEwOTY5YjZmOGU1ZTYzMjZkMmI1ZGQzNDNjYjY1ZDVkYzZkMjczYSBsZWdhY3ktdHJ1bmsKKzc0NTQzIGM0ZDhjYmFmZDhjODkwNjFmYjkyNGNmOGNhYzc5OWUxYTUwN2RiZTYgbGVnYWN5LXRydW5rCis3NDU0NCA2NzVhM2MxODI0ZjQwNTkxMDhhMTA0ZTk1ZmZjNjAxZTJkMTZkNmNkIGxlZ2FjeS10cnVuaworNzQ1NDUgMDkxODMxMmEyZDdiOWFiMTgyYTFiNDQ1Yjk5NTNlOGM0OTMwNTJiOCBsZWdhY3ktdHJ1bmsKKzc0NTQ2IGZmY2ZjOTkwZTRjYTE5Y2E3ODdkNGU0NjQ0MmFiNmRjNTNiYzZmOWMgbGVnYWN5LXRydW5rCis3NDU0NyA5MmUzODU4Y2NhNzBhZTZjYTRhNjU3YTA0MmVhY2M1YTRlNjViNGQyIGxlZ2FjeS10cnVuaworNzQ1NDggZWM4ZDI1ZTA1MDBhODhjNzgyZDZlMDA0YTIwZmY2MWQwNWE4ZDVhMCBsZWdhY3ktdHJ1bmsKKzc0NTQ5IGRiODZkM2NjMWU2YjkxNWYyOGQ3YTE1MTkwNjE2MmI0OWQ5MWYwYzMgbGVnYWN5LXRydW5rCis3NDU1MCBiNjAxMzRlZTVlYjQ1YzNmYmU2NTEyM2E0MmEyZDZlMGYzZWQwMjAwIGxlZ2FjeS10cnVuaworNzQ1NTEgZjc1ZjI3OWJjZDM0MDQ5ZDQyYzUxMTQzMjI1MWFkOTM0NDg1MTgwYyBweTNrCis3NDU1MiBkOTFhZmYyMDZkZmRlMDMwYmU5NmE1Y2FkNzQ3NWZkMTVkMDU5MjFkIHJlbGVhc2UzMS1tYWludAorNzQ1NTMgZDAzZTUyOGVmOTQ2YWE3YzRlOTM0N2EyZmEzNmNkMDljYjFjMWM0NSBsZWdhY3ktdHJ1bmsKKzc0NTU0IDQ4ZGY0MDdiNjA2ODI3NzA1ZGIyYzg2ZTE3MGEwNzIwMTRiNjlmNjIgbGVnYWN5LXRydW5rCis3NDU1NSAxNGM1ZmFiM2VjYmY0NjZjNGU2NGMxZDhlOTZjMzAzZjJkOTBlMjA1IGxlZ2FjeS10cnVuaworNzQ1NTYgODAwNThkZmU0NjlkOWM3N2ViYjJhMDNhYTU1ZTVkMGQxNjdjMmI0MiBsZWdhY3ktdHJ1bmsKKzc0NTU4IGFlMDBhM2E4MDQ3MzkzMzg4Njk1MjFjY2IxNGU5Yzk0YTBkN2Q5OGMgbGVnYWN5LXRydW5rCis3NDU1OSAwZDliNTU2YTQzNzgwNjliODI0YzRmZDg0YTQ1YjAxZDczMzZlYjI0IHB5M2sKKzc0NTYwIDczNTMyMmFhNzFkMWFlNmUyNTFhMDlhY2JjNjE5MjEzOGIwYWI2ZDYgcHkzaworNzQ1NjEgYjY1ZWJlZDA2ZWIwNDU5ZGExNzRkNTcyZjMxMGQ3NGJhZWFkYTcxMSBweTNrCis3NDU2MiBiODlmNTgyZWU3OGE4YjgwYTQ1NjVkNTJmMjNlZmExNjdjOTkxYmFmIHB5M2sKKzc0NTYzIGUyMTMwM2NhYzEyMDVjNDU5M2QyNjllODIwNTI5OTVmZjdkZDQ4YjAgcHkzaworNzQ1NjQgZjI5YjU5YTQ5MjQ2MWUzMWUxYzczNDAyZjY4NTE0MzEyMzIxYWEzMCBsZWdhY3ktdHJ1bmsKKzc0NTY1IDFmMWI0YzAzZTg5MmFhMDQ1ODhkYjVhYjkwNWYzYjkyYjY3NTI0NmUgcmVsZWFzZTI2LW1haW50Cis3NDU2NiBkMjEwNzdlNjM5ZmRkMWJkNGVhZjA1YmEwM2E1Mzk5YTcxOGNjYmEyIHB5M2sKKzc0NTY3IDA5NGE2ZjE1ODY0MTc0MjAxYWFhNzM3ODQ0YzE5YmI4ZmFmMjk3ZDIgcmVsZWFzZTMxLW1haW50Cis3NDU2OSBiNmJmMmE1ZjQ5ZGRkZDBiNzdlZjlkM2QwMzEwMjZkMjNjZmU3YTVhIGxlZ2FjeS10cnVuaworNzQ1NzAgMDI5NTBkNTgwODA4YmExZWVjNTU2ZTUwMzQxMDI2OWQ0ZDA5MzFlNCBsZWdhY3ktdHJ1bmsKKzc0NTcxIDVmOWUxMzA2NmQzNjY3NGEyMzYyNjI4NjE4YjMwMTMwNzcyOTYxZGYgbGVnYWN5LXRydW5rCis3NDU3MiAzM2NlNGM1YmMyZTU2MGNjYmE0NDZlMmY1YTFhZTg0YWYyNTczMTIxIHJlbGVhc2UyNi1tYWludAorNzQ1NzMgOWE3OGUzZDkwNjE3MWM3MjE4YTFhMTZkZjk3MmEzMDUzNmI4M2ZiMyBweTNrCis3NDU3NCA0NzRhOGUwNmU5NjYxYTAyYTUyZDliNzgwNDg0NGM3MTBkYzBlMzQ3IHJlbGVhc2UzMS1tYWludAorNzQ1NzUgNjA2ZTk3Y2FlYjc3MzZmNWJhYWVkY2Y1ZGYxZmFjZTEyNzMyZDk4NSBsZWdhY3ktdHJ1bmsKKzc0NTc2IGJmYjIzMzc0NTFlOWFjNWJlZDFkNzZiYjY3OGY5NjM2MTFhNTI5NDUgcmVsZWFzZTI2LW1haW50Cis3NDU3NyA2ZGVjYTczYmQ1MTJkZmNjMzhjMTQ1YjQ2MWE2MzljZGIzYTkzMTZlIHB5M2sKKzc0NTc4IDA0OGE5MTM4MWJkODBhZTFjMGM5YTFkZmZkMTMyMzk5MWNlNzIzMmYgbGVnYWN5LXRydW5rCis3NDU3OSA3ZGUyMDdkZDQ3Mzk5MjY0OTE0NjI1Nzc0NjgxMWIxN2M3MjI3ZjgxIHJlbGVhc2UyNi1tYWludAorNzQ1ODAgYTRlYmFiODQ1ZjcyNDFlZjQyM2M3NDM0NTI2NDU1NzIxYTA5YTVlOCBweTNrCis3NDU4MSBkNDAzN2ZiODU2ZDIxMDhhYWU4OWY5ZjQwMmY4NjFlNDNkY2E4ZmVkIGxlZ2FjeS10cnVuaworNzQ1ODIgMWI5MTI3ODcxNzIzMjA1ODk1MGE3ZmFhYTFiMTg2NzA0MTBkNzhmOCBweTNrCis3NDU4MyBlOWJhYTJkZThiYjRlY2RiYjAwNTVjM2U1MDNkOWQxYjhiZTIxN2ZlIHJlbGVhc2UzMS1tYWludAorNzQ1ODQgZTRjMmNiZDNiZjkzODMzY2YwN2NiZTExOWVjMjI2ZDNkZjZkNzQ5MyBweTNrCis3NDU4NSA2OGM5MmVkOGQ5NjA0ZDMwYTUzMjA3MWNhZjE3OGYyZjg2ZGUzN2M5IHB5M2sKKzc0NTg2IGQ4MjgwMzY0YzU4MTRmODQxNWU1YTM0YTVkYWM3YmI3MGUwZTczOGUgcmVsZWFzZTMxLW1haW50Cis3NDU4NyAxZjc3MmY4ZmVjOTIyYmY1NDdjNmI5ZGY1ZjllMzY0OWQzMDkwNzU2IHB5M2sKKzc0NTg4IDZmYThhODExOGRmMGMzZmRiY2RkN2Y0YjZiMWMwMjAwOTE5ZTU5N2YgbGVnYWN5LXRydW5rCis3NDU4OSBhZWRjNGVjMmZlMjQwMDc3NzcxYjExYTFmY2E3YTMyMGNjYmNmZmIwIHB5M2sKKzc0NTkwIGI0ZmM4Y2JmZTFlZTkxZjBjNGVmODg1NzI2YjdhMWI4NjQ5OTBkYWUgbGVnYWN5LXRydW5rCis3NDU5MSAwODA5MGI1ZTk2YzJmY2U3NzIwZTc2M2RlNjI0MzhhNWFiYjFlMWQ2IHB5M2sKKzc0NTkyIDY5NjE2ZTIyODcyOGUzZDljYTVlYTcyODY3Y2I1NzMxZWZmNmNmMzggcHkzaworNzQ1OTMgNThlNjMxOTdkNGVhYjMxMThkZmI4OWQzZDUxNjhjYjUwMjc4NDIyOSBweTNrCis3NDU5NCAzNjhiZmMxOGE3YTEzOWFiOTVkNjZhZTJmZDA1YzVmYmE1NTRhZThjIHB5M2sKKzc0NTk1IGJmNTAwZDg4NTc5NjZhYWY1ODdiM2EyYzUzZDY3YmNjYTc4NDZiZTkgcHkzaworNzQ1OTYgNTYwMDA4ZDA5OGRkYzcxOWUyMDMzMWM0ZWQ2M2EyOTQxNDIxYjcyNyBweTNrCis3NDU5NyA4NmZhNDNjNmQ1N2M2NjFmYjhjNDBlYTU2NDlmY2FiNjdjNDM3NzgxIHB5M2sKKzc0NTk4IDgwMWFhNTJiMTIxNzA1OThmNzg4ZmM0ZWMzMDA4MjRmYWI1MTFjYjMgcHkzaworNzQ1OTkgOTlkYzIyZWYxZGYwNDg4MGI4YmZmM2FhNTY5MTQwNTdiN2YzMDY1YiBweTNrCis3NDYwMCAzOWJjYmYzMTZkYmE2N2I3OTAwN2YzZDQyNzFkYTE0N2M2OGYzYTc0IHJlbGVhc2UyNi1tYWludAorNzQ2MDEgOTQyNDlkMTQyNWEzZmRiNjc0Y2ExZGMzZWRjMjU2MzcwZjljMjIyNCBweTNrCis3NDYwMiAwMjcwMDdiNDNmMTY1NjBkZjJiODQzMTFkYTc5M2IwYzc3NDU5YTQ1IHB5M2sKKzc0NjAzIDc4Yjg2ZjhiZjVjNDU5YzE3NWRlYWY4NWZjNGU2M2QzZmZhMmE5MDAgbGVnYWN5LXRydW5rCis3NDYwNCA0M2E2NjY3NjhmNDc0YjU2MWZjNjRiZmFmNzJlYmNlZjMzNjg1OWIwIGxlZ2FjeS10cnVuaworNzQ2MDUgMzVhMTYyM2MxMDIzOTA4OGIwMjZjOTUxNjE5OWEwNGJkMjAyNjMwNSBweTNrCis3NDYwNiBlODE0NTNiYjA3ODkzZjdlNjRhNjQ5NjRmMTg1MjUwM2JmM2EwOWYzIHJlbGVhc2UzMS1tYWludAorNzQ2MDcgMDVhZDllYzYzMDg3NzQ5MzYzOTk2ODhkZmExMjIzZDE2MTg3NWQ2MyByZWxlYXNlMjYtbWFpbnQKKzc0NjA4IGFjZjIxNWJiZTcwMmUwNTU3MGQ0Y2MyY2MzZDQ4NzhkZTNmNzcyMDkgbGVnYWN5LXRydW5rCis3NDYwOSAxMWI0NTUzNWExYjNlNjE5Y2U2ZGI3ZmFhZjI2OThkOWYyM2I4NWQyIHB5M2sKKzc0NjExIDg0OTkyOGQ3NWQ2ZTM5ODhlMWM4NWM5YWI2YjQ2Nzc0OWNlNGRkMzYgcHkzaworNzQ2MTMgMDdjMjM4MDZjY2M2YzJlZGJlMDZjYjQyOTNmN2YxZTk1NTZjODdhZSBweTNrCis3NDYxNCBiYTViMjY4M2MwNjQwYzYwMTMyYjU4OWY0ZTE1MGRkODc0MDlhYzNmIGxlZ2FjeS10cnVuaworNzQ2MTUgZTViNDYzYTYxZWUyNjllYThjZjA5NDM2NDcyMjBkOTM2YTk3NjEwZiBweTNrCis3NDYxNiBlZDdkYmM5MjJkMDVjOWY0NWUxN2Y3MDk3ODc4MzFhNjczODM3Yjc5IGxlZ2FjeS10cnVuaworNzQ2MTcgZTE1N2NlYjU0YTQzOGIxMTY1OThlOTRmZGE0MTRhY2JjZDI4YTQzYiBsZWdhY3ktdHJ1bmsKKzc0NjE4IGI3NGE3YTNlNDFjNTcyZGYzOTgwNzJmNWZmNDllNTgxYzYxMjc4MTEgbGVnYWN5LXRydW5rCis3NDYxOSBkNTEyY2JiODVhZTAwMWQzOTZjOGQ5ZGQ0NjUxYmFjNzY2MzcyOGVjIHB5M2sKKzc0NjIwIDgxOGJhODk4NTI4MTA0MzVlMTY4MzU5MjQxZDIxZmJjZTMzMWUwMjUgcHkzaworNzQ2MjEgNjZmNDhiYzk0ODE0ODc1MWJhYTc4MzU1ZmE3NjIwMDM4ZTJhMTgzOCBsZWdhY3ktdHJ1bmsKKzc0NjIyIGFjNzU1YzU2NjEzNmQ1MTMwNzYxMzJmY2IzMDhhZGU1YTY5OGM1NmIgcHkzaworNzQ2MjMgMDA4ODg0NGQwMTA5YTRmN2I3M2Y3ZTcyOWJhYzk0YjdiZGVmY2NjYSBweTNrCis3NDYyNCBhZmJiMmIyZmY2Zjc4MTBkOTVlYTc0NDhhZGYxMmQ3OGE1OTkxNThhIHJlbGVhc2UzMS1tYWludAorNzQ2MjUgNWQyYjY2ZTAxOTY4YTNmYWFlM2YxYTI0NWI3NDM3ZjIwZmMxOGM3YSBsZWdhY3ktdHJ1bmsKKzc0NjI3IGZkOGE1ODkwMDhhYzIwZTQ1MTg3NWUxNThlOTk4ODczMzU4NDY0ZDUgcHkzaworNzQ2MjggYTQ3YWExMTBmY2FjZjg0YWVkNDRkMjg5ZmYyMjY1YTM3OTk2YzQzNyBweTNrCis3NDYyOSA2YjgyYmEzMDRhN2VkZTg3NmEwYjc3ZWE3ZmVjM2UyMGRhMWIzYWM1IHB5M2sKKzc0NjMwIDEwNmVlNGViNTk3MDVkY2VmZjNmYjRiYzRlMjJlOTVhYmVhYTg5OTIgcHkzaworNzQ2MzEgOWZmYThmODg3NzUwOTQ4N2VlMjU4YTJkY2NkZTJlZjk0YmY0ZDk3YSBsZWdhY3ktdHJ1bmsKKzc0NjMyIGUwY2VmMDIzMzAyMDNlNDZiMjE4MTk2MDVmZDYxYjQ2M2FiZGIwZjIgbGVnYWN5LXRydW5rCis3NDYzMyBiYjkwMDUxYjQzNGMwM2VlNzMzYmZiYmI5NmRmMDhmNjg1YTVhOWVhIGxlZ2FjeS10cnVuaworNzQ2MzQgNjM3MWUyZDBkZWEwMDkxNmY4YWY4NWRhMWQ2NzRlYjgyOWYyMDhjZSBweTNrCis3NDYzNSBkNTVjOWEwNjMyNThhZTc5M2I2NDY3ODM3MWQyNDQ0NWVlMmEzMWRmIGxlZ2FjeS10cnVuaworNzQ2MzYgZWI2NzNhNDAxYjlkNTUwODYxYjUwMmFmNDJhOTFjNjA0NTZmZmI1MiBsZWdhY3ktdHJ1bmsKKzc0NjM3IDk1ZTU3MzhjYjMwOTgxODE4YTViYzgzZmJkZTdjNTQ4YThjMDQ3ZDYgbGVnYWN5LXRydW5rCis3NDYzOCA3NmFlYmM1ZWE0NWNiYWQzNjE1ZGY1ZmQwMGExZmRkNDQzZWFjN2YzIHB5M2sKKzc0NjM5IDNiOWU3NTMxMWU0MzBhMzY2Zjk5YjgwZjdiOWY5YmQyZDk2YmQ0MzggcHkzaworNzQ2NDAgY2U3ZTAwMzg5OTZmNGI0ZjgzOWQ5YzViNDkwODBmNmI5ZDg1NWNiZiBsZWdhY3ktdHJ1bmsKKzc0NjQxIDFmMDNmMjkyMGM2MTcxZTg3NTU4OTE1NWU0YzExYTJhZTliNzlhNGYgcHkzaworNzQ2NDIgNzdhYjkzY2EwNjVlMzY3YWYxZjE0OTE5NWU3Yzk2ODA2OTQxZGE4ZiByZWxlYXNlMzEtbWFpbnQKKzc0NjQzIDdkMzllMjEzYjc1NjM2N2Y4YTFjODJhZDI3NzBjMzcwZjdlNTYzYjMgbGVnYWN5LXRydW5rCis3NDY0NCA2MWRiYzFkMWI4MDRkNjI4NGY2ZmI0MjNlMTFjMjU3ZjAzMTcwZDA1IGxlZ2FjeS10cnVuaworNzQ2NDUgYTA3ZjMwZDdkMGYxY2VmMDg1NTEzYWE0YzIxODYyZDlmMzg3ZDAyMiBweTNrCis3NDY0NiAyNWIxM2Y3ODJmZmU4NDhhMWQzZTAyMTM1OTRmMzk3YzEyMjM3NDk5IHB5M2sKKzc0NjQ3IGM1MTcyMWQ2NDQ1MWE0OTJiMmZiOGNkODk0ZDY1NzFmZmI4YWJkMWEgbGVnYWN5LXRydW5rCis3NDY0OCA2M2I2YTkxYWQ5ZDk3ZGM4ODhlZDkwZGFlNjRmNjUwYTM5NDlkNWQ1IHB5M2sKKzc0NjQ5IDE3ZTgzZjAxNjllODFmZjFkYWUzMDg5YWMxY2VlZWY5YjA5YWRjMzEgcHkzaworNzQ2NTAgNjc1OGJmMjAwMmRhYjdjMTY3YjRhNzc5MmI4YjBkOTkxN2NjMzkwZCBsZWdhY3ktdHJ1bmsKKzc0NjUxIDhhOGUzYzE2NjhhMDk5NzQ0MWUzMWFkYzcxY2M3ZmQzODg3M2Q5ODEgcHkzaworNzQ2NTIgMTUwMWExMzYwY2U0ZTQ4NTc1YmU0N2M0ZjA1ZjdmYWRmZTFiZTAwOCBsZWdhY3ktdHJ1bmsKKzc0NjUzIDIwYmZjMWQzNTk4OWMwNDUwOTc1NjY5ZDZmMThjMzAwZjE5NDZjMTcgbGVnYWN5LXRydW5rCis3NDY1NCBjMjE2NWJlMDAxNzFhNjgzOTQzYjVhNGVhZmZmNTMwN2MxZThhZjY4IHB5M2sKKzc0NjU1IDc3ZGIyNWM3NTI2YTEyOWU0YzJjZTA0OTcwZDllNmFlNmJjNTU4YTggbGVnYWN5LXRydW5rCis3NDY1NiBlODQ0MTg1MDc5MGY4NmRkODEyZjRhMzIwZDc0Y2E2MWRiOWM1YjhkIGxlZ2FjeS10cnVuaworNzQ2NTcgNzU4MzdjZmU5ZmZiZjlhZmFkY2U2OTY1Mzk0MDQzZjZlMzE1MjdlYSByZWxlYXNlMjYtbWFpbnQKKzc0NjU4IGQ1NjdkOTYzY2IzNzA0YThjMzhkNzg5ZjE1MzAzMzY1ZDc3YTAyYTAgcHkzaworNzQ2NTkgMGY2ZGMyZTZmMDkxZTQxMjI3MWQ1OTQwNTJlMjcwNjQyMGVkMzJiNSBweTNrCis3NDY2MCAzYjBiMzcwMTRhYWViMTc5YzcxYjZlN2JjYmZlMWIxMzU2ODZiMzNjIHJlbGVhc2UyNi1tYWludAorNzQ2NjEgNGRkYzA1OThkZjc5ZjYzMDVhNzI1YTMwM2E5OGE0MmU0ZjNjNGQ3OSBweTNrCis3NDY2MiAyNjZkN2RjM2Q2NTUxMDNjYTRhNmI2ZjA0MDc1YmE4YWQ5NDE2ZmUxIHJlbGVhc2UzMS1tYWludAorNzQ2NjMgZmZiYjhmZmYzNTIwZWY4YTBiMWYxMzgxM2U0NTBiMTMyN2NhNzE2MSByZWxlYXNlMzEtbWFpbnQKKzc0NjY0IDZmN2U3MTkyZmViYjBmZDE5YTgxNjIxZTM4ZDRlMDE3YWU4YzhjNGEgcHkzaworNzQ2NjUgNzgzNzA1YjA0MjU4MGUzMTAwNTg4ZGY1ZTNiZWJiMTk2ZDFhM2M2OSByZWxlYXNlMzEtbWFpbnQKKzc0NjY2IGQxOTExNDQ5MjI4NjAwYmE2ZjlkYzM4YjBjMjgyNWFhYTExN2I1MDIgbGVnYWN5LXRydW5rCis3NDY2NyAxZDQzODEyYWFkYjYxODg3MTcwMTIwYzBlYjY4NTljOGY2YzJiNGRlIGxlZ2FjeS10cnVuaworNzQ2NjggM2M3YzliODFlMzYxNDQ0NTFkYWU0NzQyY2Y3YTdiN2Q0YmIxNzM3YyByZWxlYXNlMjYtbWFpbnQKKzc0NjY5IDYyMzE0N2EyYjViMWFiNDM3N2NjMTdjZTNiMTg0ZGNiYzFkMmMwYjcgcHkzaworNzQ2NzAgZGM2MmRkMzMyNmVkMGJlMjNmMjA2NzkwYTY0Y2RjMzIzZjlkNTI5NyByZWxlYXNlMzEtbWFpbnQKKzc0NjcxIDkwNjQ5MGFiNmFmZmI0ZWVkZGMzOWM5NTJkNTMzZjczZjdkODg0ZWUgbGVnYWN5LXRydW5rCis3NDY3MiAzNDQ5NmJlZDkzNjVmNWRkNWJiOTc5OWVjZDA5MDcyZDkzMzU1ZWI1IGxlZ2FjeS10cnVuaworNzQ2NzMgNWQ5NzYxZTQ0NTU1ODdmNWE3MzE4MTFhMjZmODhhOGZkMzdlODFiNiBsZWdhY3ktdHJ1bmsKKzc0Njc0IGQ2MjdiMGZmMWQxN2U1ZWU0Yjg2N2FhNjY3MzRiOTI5OTZlNTM5NjIgcmVsZWFzZTI2LW1haW50Cis3NDY3NSAxOTdjMmFlNTFjYzYxMmE5NTZkM2E0Y2VkN2ZlZDU0NTBjYzIyNzY4IHB5M2sKKzc0Njc2IDFmNGYzNDJiZmUyZTgxZGU3OGE5MzlkMzM0N2Y5ODBlZTQ3OGFiMmMgcmVsZWFzZTMxLW1haW50Cis3NDY3NyAyMGI5YWYxZjAwYzg3NTNjYTg4ZWJiNzJiMDMyYjRjMjhjZTlkYWQxIGxlZ2FjeS10cnVuaworNzQ2NzggOTU5MDBkYmQ1ZGQzM2Y1MjEyNjFhNTVkYTZlYzVjN2RhMTk3MjFiNyByZWxlYXNlMjYtbWFpbnQKKzc0Njc5IGExNTJjY2NhNTM4OTYyZWVlNDgyNTVmNTc3YmJjMmY0OTEzNmFmMTQgcHkzaworNzQ2ODAgNGYwOTg4MGJlYmJiYTZjYjNkMjMxMmEzNzFlOGFjNTE4OGFlOGQxZCByZWxlYXNlMzEtbWFpbnQKKzc0NjgxIDg5OWJiY2JhZjlhNmVhODUxNWM4YmZiMTJhMDFkNjA4OWNkZjk5MzAgcmVsZWFzZTI2LW1haW50Cis3NDY4MiBkYjE1YzdhZjAxNGZhMDg3MjU1NjM2MzlmZmYyYTE4MTRmN2FiMTFlIHB5M2sKKzc0NjgzIDBjNDk0ZTU3ODdkZjZiZDBkMDk3MTUzNWQ2YjJmNGRmY2NlYzVjZDEgcmVsZWFzZTMxLW1haW50Cis3NDY4NCAzNGE3YTkxNTgzNzIzYjU4ZjkzOTIyMzBhZDZmYzE2OTU3NGJlYjQ2IGxlZ2FjeS10cnVuaworNzQ2ODUgN2U3NjlmZGRlNDM5ZmZjODA1ZDQxM2NlY2JhNTllOGJlYmRmMmNlNiByZWxlYXNlMjYtbWFpbnQKKzc0Njg2IDllN2I3ODMyZmQ0NTEyNzhhN2VmYzk3MjI4OGIxZWM1MTIxYWIzMDIgcmVsZWFzZTI2LW1haW50Cis3NDY4NyA5MmYxNmM4Nzg4OWRhMGY0MmRlM2VhYmE2NmZiZjNkMGZlMjFjYzc5IHB5M2sKKzc0Njg4IDY1NzJkMmVmYzhiMjlhYWFmMjgwZDg0Y2QzNWFjMjdkZTQ0MGE2MDQgcmVsZWFzZTMxLW1haW50Cis3NDY4OSBjNjY0NTVhNDE2ZWM3YmZkOTM0MDEwMmM4MTcxZmYxN2ZmYmJlOGZkIGxlZ2FjeS10cnVuaworNzQ2OTAgNTNjNGVmZDE3MGMwNTE3ZjE2MWE1YjA3ODM4NmY3OTMwMzEyNmJlZiByZWxlYXNlMjYtbWFpbnQKKzc0NjkxIDc1MDAwOTZiZjFhMDdlYjA2NGM1ODhkODdjMjRjZmIwZmY1Njk4NDQgcHkzaworNzQ2OTIgODY5MDFjYWU2YjY0ODNmOWEyZDU2ZWEzZWUzNDA2YTc1YjMyNzk0NSByZWxlYXNlMzEtbWFpbnQKKzc0NjkzIGQzMGEzZDU3NzE2NGViY2RhODJhZDJiYWY4NjkzMDUwMDg4YTVmNmQgbGVnYWN5LXRydW5rCis3NDY5NCBhNzBlNzJlZmMyYWQ2OWNkYjk4YTM2ZmRjZTIzMzgwMzcxMDExMzZhIHJlbGVhc2UyNi1tYWludAorNzQ2OTUgNWUxMTA4NTQ1ZTc4NzRhNDljMTc3NDNkZTNkYTQ3NGJkMmM1Zjg4YyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ2OTYgZWQyYzVlMDA3NDExZDA5NmQ5MzgzNGExZWFlZGM2MTE2YmIyYWUyNSBweTNrCis3NDY5NyA0ODAzZTc2ZjIwYzU2ZmU5ZTk5YzliNWJiNDI5ODhhZTU1MjcwYmZmIHJlbGVhc2UzMS1tYWludAorNzQ2OTggNzkwYzAxOWY2NDAzODg3MzAzMDkwODJiZmY1NWRjNzczNWQyYWY0OSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ2OTkgZGM3MjE3Y2I3M2I3YjNiZjI3MGNmZjNhODBjYzQ0YmZmN2Y3YjdiYSBsZWdhY3ktdHJ1bmsKKzc0NzAxIGY2NDU3MGQwZjcxZDlkYmQ3MDA1MDY0YTM0NjQ0Nzg1NjRlMGM2NWYgbGVnYWN5LXRydW5rCis3NDcwMiAzN2Y1ZDE3ODViYjNmZThjMjczOTY1ZWZiMzAzYzhiNzYyNmJjZmM5IGxlZ2FjeS10cnVuaworNzQ3MDMgMzAwZGEzY2NmOWZjM2Y3MTRmMWQ1OTgxNWFmYjY0MWIxODY0MzI5YSBweTNrCis3NDcwNCAwZjczMzNhY2E0NTUzMjMxMGM2ZjU3ODM0MjMwZDA0M2VkYTJjZWQ3IGxlZ2FjeS10cnVuaworNzQ3MDUgZTg5NWVmODJjMDg2Y2NiODNiZDE2NTQzNGJkY2U0YzkwNjAyNTA4MCByZWxlYXNlMjYtbWFpbnQKKzc0NzA2IDhhOGQ0NjdjODljY2VhMDRiMTdkODI3ZWQ4OGRhMjY4ZDkzOGI0ZjEgcHkzaworNzQ3MDcgMGRkMGIwZGU1ZTMxZjAxYjY0N2M5NzI0MmE5OTI5OWJmM2YyZTE3YSByZWxlYXNlMzEtbWFpbnQKKzc0NzA4IGQ0MTAyNDU5MzkzMWY2OWFhNzY3MzQ4Y2JiNTRlOWFjNWU0NWI3YWMgbGVnYWN5LXRydW5rCis3NDcwOSA1ZjVlYTc0N2UzMWExYWZkOWRlZWI1ZjNkNGE2YmNkYTZjMjRmNmRkIHB5M2sKKzc0NzEwIGNlYjc1ODE5NTM3NzE2YzVhYTdlNTNlYzk3YTQ4ZDA0ZDdlZjNhYzMgcmVsZWFzZTMxLW1haW50Cis3NDcxMSA2NmEyZGUwZDQyOGU2NWRiNGU2NTc4ZDA4NDRmMDE0OWFhNGI4ZThmIHJlbGVhc2UyNi1tYWludAorNzQ3MTIgNmZlOWRmYjEzOWMzMWM3NTQyODBhMTMwMTEwZmM0ZmM2M2MxM2ZkNSByZWxlYXNlMjYtbWFpbnQKKzc0NzEzIDFkMWQyZGI0NTZkODZlMjY3YzA1NDBlMmRkOGY2ZDUyYWEwOGFhMmIgcHkzaworNzQ3MTQgZGU2MjdjZmVlZDE0NjZjN2M5MjFlYjI0YzI2NDdkOTc4Yzk2YTllMyByZWxlYXNlMzEtbWFpbnQKKzc0NzE1IGZkMzRmZmM4ZjgwNDJmM2U3NmI4ZDI5MTgwNDMwOGRmZjUyYjgyN2MgbGVnYWN5LXRydW5rCis3NDcxNyA5MWRjNjMyMjcyMmRmOGIyYWM4Y2MyZDU0ODE1YzkwZjlkOGE3OTllIHJlbGVhc2UyNi1tYWludAorNzQ3MTggZmM5YTAwNzk5Nzk1YzRkMDQzYmFmZGQ4MzAwMzUxMjgxZmIzMGQ0NiByZWxlYXNlMjYtbWFpbnQKKzc0NzE5IGUyZmEwNjA1MDhkYTA1M2M1NzQzZTJkNTE3NzJjMzlmYTU2OTAyMjcgcmVsZWFzZTMxLW1haW50Cis3NDcyMCBkZDZhOWJjMzk5NDYzZjA2MmVkYzgwNzExOWVmMDA0ZGQ0ZGUzNDQxIHJlbGVhc2UzMS1tYWludAorNzQ3MjEgZTA0MDlmMDM4MjJmYjMwZjdkZmE4NTk4MzQ5OTRhMTkyODEwN2RiMCBsZWdhY3ktdHJ1bmsKKzc0NzIzIDQwZmQ4ZmQ5NmQ5NmNkYTFjZTdjODI2NWQwNzU5NmZmMzA4ODY0NjUgbGVnYWN5LXRydW5rCis3NDcyNCAzMmU4NWQ1MGM1MmRiY2I0M2E5NzFiZmRkODdiYTNjZjU5MzU1MzZiIHJlbGVhc2UyNi1tYWludAorNzQ3MjUgMGJjNzU5ZjZkZWQ1YzhmYmVhYTRlOTAwOWExZWIyMTNmZmI4ZDhiNSBweTNrCis3NDcyNiBlMDE3OGI4YWVhZjA3OThmYjZjNDM2NGJhYmY1ZjMzYzM0YjhhYTE2IHJlbGVhc2UzMS1tYWludAorNzQ3MjcgOTMxYWY2NjExYWU5Y2U0NTRlNzFjNWZlMmJmNWFjNmQzMDE1ZTQxMCBsZWdhY3ktdHJ1bmsKKzc0NzI4IDY3ZGU0MmNhMGEyNmE3MDQxYmY0MjZmYWRhNzY2ZDY3MTlmYjlkZjkgbGVnYWN5LXRydW5rCis3NDcyOSA0YjYzOWY1YjdkM2ViZWUwYTBhZWU0MWFjODJkZGY0NWMwZDYwNzRhIHJlbGVhc2UyNi1tYWludAorNzQ3MzAgNmZhOTQ2ZDA3NWY0YWMzNDcwOTg3YmQwMTE4YjI3YmM2YTMwMjgyYyBweTNrCis3NDczMSBkNWZjNTE4OTE5OTdkYWVmOThjMzA1MGFkNjVlNWYzMzUxMmI1ZWQyIHJlbGVhc2UzMS1tYWludAorNzQ3MzIgZTFlZmNhNjFlZTRlZDlmOTM1NjkyMTU2ZGFlMzRkM2JkNTdhZjc0NiByZWxlYXNlMjYtbWFpbnQKKzc0NzMzIDVkZWM4YTEyZTQ1NWFlOThlNzAyYTFkOTEzOWQzNzJmN2ExMzI2NmYgbGVnYWN5LXRydW5rCis3NDczNCA4ZjZjZjM5Yzk2ZGQ2MjM2MDMwMTBkMzg1ZGMzNjM1Njg4NDdkMTM4IGxlZ2FjeS10cnVuaworNzQ3MzUgMDBkNmNiNjI1NjY3ZjM3MTRiNGFkYjc0YWE4YmZlMmI5MTJjMDg1OCByZWxlYXNlMjYtbWFpbnQKKzc0NzM3IGFiN2ZkNGJjMzgyOGY4Y2UwNzY5NTg3MTM5ODJhYWVjOGI2NmQ3ZTUgbGVnYWN5LXRydW5rCis3NDczOCAyNWE2MTdjYTgzZTIzOTI1NDc0MDc0OTQzNjM5MTRiMTY0ZDg0MjBlIHB5M2sKKzc0NzM5IDVkMTUyOTZhMmE0ZTFjNzViZDVlYzdjOWNmZDU0NjhhYzA2YjFlOGMgbGVnYWN5LXRydW5rCis3NDc0MCA4MzVmYzg1NzdkYzc5MGUyZWU0NWVjNTI5OGEzM2YyZThjMTk0ZWIyIHB5M2sKKzc0NzQxIDdmMmE4Nzk0Mzk5YTFlNjBjNDA5ZjM3NDVlNDVjNWJjMmYzYTM5OTQgcHkzaworNzQ3NDIgMGY2ZGIwMDJiM2ExZmVjOTk4OTMyZDA2ZWRhNTc2ZjE0ZTZjN2QyZCByZWxlYXNlMzEtbWFpbnQKKzc0NzQzIDk1ODBiYmJiNTUyZTEzYTAxMTBkMmM4YjZkMWI1MmU1MWRiNjFmYTcgcHkzaworNzQ3NDQgNmFmZmQ2ZGRhMjI5ZDE0NmM4NjIzODcxYWQ0ZjQ5OGNjOTJkNDU2OSBweTNrCis3NDc0NSA3ZTZmNjE0YTZhZDE4YzJjZjJhY2ExYmQ5NWE3NGNhMTY3NzJlNmIzIHB5M2sKKzc0NzQ2IGQ0ZTNhZjM0M2UzMjBhOTI5OTk5ZjEzNmRmZWUzNjk4MTkxYWI5NTkgcHkzaworNzQ3NDcgM2ZiMWMxZmJlMjZjYWVmNGQ0ZDU0NGQ0MjNhYzk2MzM3MDNhYWQ1NCByZWxlYXNlMzEtbWFpbnQKKzc0NzQ4IDYyMjUwMjFiZGMzNmIxODA5YzRhOGU0MmYwNTEzZDM3M2E5MjE3ODcgcHkzaworNzQ3NDkgOTJkYWE5YzQxZDU2MWRkMDFkZGU2NDY2YzAyNWRjZmRhODVkYjhhYSBweTNrCis3NDc1MCBlY2QyMjg1MGQyMDFjYTRiZjI3NzQxMmQ2N2QxMTU5Y2M5MmEwMTE3IGxlZ2FjeS10cnVuaworNzQ3NTEgNTFiYWFkMjhmZTdhMTQxZWQ0ZDgwMTRmYWIxMmEzOTFkOWNjY2QzNSBweTNrCis3NDc1MiA2YmYyNTM5ZDNiYWE0MjFlMTliNjg0MDFlNmRjNjYyYjQ3MGQyZDQyIHJlbGVhc2UyNi1tYWludAorNzQ3NTMgZDlhNjY5MDVmMDNlOTVjMjA4ODJiN2VjNGY4YTIxMTU1NGQ0ZWExMCByZWxlYXNlMzEtbWFpbnQKKzc0NzU0IDM5YmUzZWY4MmQyMzM2ZTMyNzNmMGQ1MmQwNjNjMzBmMWQ3NzU4NDcgbGVnYWN5LXRydW5rCis3NDc1NSA1MTExZDMyOTk3NDE2MGM5ZGMzNWRiNWFkYmEyZGUwNmI0NDE5ODc5IHB5M2sKKzc0NzU2IDNkZjk5MTRlZmM4NGUzOTM4YzI4NGMxYWFhYzhkYzkzNTA4MmFjNTYgcmVsZWFzZTMxLW1haW50Cis3NDc1NyAyYzllYzRlN2Q4YzIxMGI3NzI3NmE1OGE2YThmYjgzNjM0ZjBjMmVhIGxlZ2FjeS10cnVuaworNzQ3NTggZmFkMDI1MTMyNGQ3YWExNDczMDhkZTRmNDgxMzg1ZGMwNWUzM2U0YyByZWxlYXNlMjYtbWFpbnQKKzc0NzU5IGZmZjU5YjBhZGQ5OGE1NjE1NzRlNzY0MGYzMzEwN2Q4MWVmMzMxZGQgcHkzaworNzQ3NjAgMDc4MWFjZmRjOTQ1ZDkxZWJjZDNhMDkyN2Q3Yzg0ODM2MzY0OTU0ZiBweTNrCis3NDc2MSA4YmM0YzhjYWM3ZDcyMmZiYjZkZDFkOTllZTVjMzM5ZTQyMzU0OTc0IHJlbGVhc2UzMS1tYWludAorNzQ3NjIgN2Q5Y2M0YmNkNzc2MGU1NDFmZTRiY2M4NDA5YjkxZmE2ODJhZDkxZiBweTNrCis3NDc2MyBkMGJkYjE5MzBkNDllNGUyYTkzODM5NTA5M2VhODA0ZjgwYjAyYzcyIHB5M2sKKzc0NzY0IGRkMDI3OTE2NjZlMDViODA0ZDQ3ZmNhNDE3YTA2OGQxNDg1NjhlODggcHkzaworNzQ3NjUgMjI5MzBhZjRkZGY3MzRmYzliYTViZWY4MTNhNjQ1N2FjYjVhZWNkMSBweTNrCis3NDc2NiA5MTE5NDY3YWE4NGU4MjhlMzQ5NzZiYWE3MWNkZGU1NTQ3MzkwZjRmIHJlbGVhc2UzMS1tYWludAorNzQ3NjcgZjNhMzAwODNmZDk2NGZjMjUyN2FkNGMwZWQ1MTU5M2MyY2NhNWM2ZiByZWxlYXNlMzEtbWFpbnQKKzc0NzY4IDNjNTdkMjZiNDBjNDY3YmE2NmRhZTYyMDcwMTE5MjBhY2UyYjc4NGIgcmVsZWFzZTMxLW1haW50Cis3NDc2OSA2NTk0MDY2ZTUwNDE2OTQxODM3NWRkOTA4MjExN2M0NTlkNmM4NDcyIGxlZ2FjeS10cnVuaworNzQ3NzAgZjQ0ZjQ2ZmU4ZGE1MmUzODBjYjEwOWE4M2ZjNWNkZWNjNTdhNzA4MSByZWxlYXNlMjYtbWFpbnQKKzc0NzcxIGQ3YWU4YjA3MzllNDdhZTY0ZDg3NTIxNzMzOGIxZDhkM2FhMGFlZjUgcHkzaworNzQ3NzIgMzE2OTIxY2M5MDRhNWRiMmU1NTlhNzM2NGQ3ZDMwZDU0MzY2ODMyOSByZWxlYXNlMzEtbWFpbnQKKzc0NzczIDBjMGE2Y2ZkNGJlMjIwYzg1MDhhZDE5YzllYzRjYjZlYzhkYjBiODMgbGVnYWN5LXRydW5rCis3NDc3NCBhYWE2YjcyNGE0ZmNlNDYxMmVjODI4YjNkNGQwNTk5ZTYyN2VlMjNiIHJlbGVhc2UyNi1tYWludAorNzQ3NzUgNDNkYTUzZTUwMmUxNWRjNDRhZGEzZTNkZjg3Yjg2NGEzZDQzNTNjOCBweTNrCis3NDc3NiA4MzkzYTkwMjE2YjM4NmM0M2RmNDIyMTBjZTViNzFjZGFkOTA5NGQ3IHJlbGVhc2UzMS1tYWludAorNzQ3NzcgYmI1ZmMxNWIwMzRjZTNhOTQxYmE5YzhmNjVkNzI4NjhhMjA3YWQwMyByZWxlYXNlMzEtbWFpbnQKKzc0Nzc4IDFhMzlhNGRkMjc3YzQ5NzQ3YjAwMDRjZGI0MTAyZmRmNTBkZGU3MTMgcmVsZWFzZTI2LW1haW50Cis3NDc3OSA5YWNlODYyOTliYjhiZjRiZTE1OTcyYjQ1ZjQxZDkzZWFiYWY5MjM5IGxlZ2FjeS10cnVuaworNzQ3ODAgZThkNjgxYzQ0OGQ3MmRkYTY0YTJmNzk4ZDIyZWZlNGQ4MWE0YmVhZiBsZWdhY3ktdHJ1bmsKKzc0NzgxIGFlZmYzMzE5YzQxOGI0MDdiZDZjOTc0ZDJhMzA2YWFmYzk0MTI3MWUgbGVnYWN5LXRydW5rCis3NDc4MiA3MTVlNjk3MjUzZjI0YWM1YmI2ZTU4OWI4Y2VmNjQ4NmU3NjI3NWVkIGxlZ2FjeS10cnVuaworNzQ3ODMgOWYxZDZkMWRiYjAwODBjNmU1NWM3MzRkOGE4NDBjYmVmOWNkY2NjYiBsZWdhY3ktdHJ1bmsKKzc0Nzg0IDFhMWFmOWZiZDgzMTc5OWIxNjM2N2FlMGU0ZTBiMTY3NzIwNDFhZjYgbGVnYWN5LXRydW5rCis3NDc4NSAyNTEzYWZmNDQ1YzJjOWVjMTU2MzQ4MGZkMWRiNzFhNDgxOGU2YWE0IGxlZ2FjeS10cnVuaworNzQ3ODYgNzY0M2UyNzMwNDM3NjRlNmUwNjQ1MDQzYTFmYTZkZTk2NTljOTc3ZCBsZWdhY3ktdHJ1bmsKKzc0Nzg3IDk1ODRiOGUyMmY3NmZiYTgyY2YxZWY4MzEwNDBhNjI1NGM2NWNjZTcgbGVnYWN5LXRydW5rCis3NDc4OCA2ZDQ1ZmJjODViZGYzZmRiNDIwZGU1NWEwMTNkNThiYTc1YzA0MGZiIHB5M2sKKzc0Nzg5IDliMmE0MmZiZDA0YjQyZGFlYTVhYmRiYzA5ZmEwNGQyOGE1YjYyNWUgcmVsZWFzZTMxLW1haW50Cis3NDc5MCBjMDRhN2MzNjU1ZmMwZGI3Y2U0ODlhNmJjN2EzMjc1MTY5MGJhZDhjIHJlbGVhc2UyNi1tYWludAorNzQ3OTEgNjg1NTk1MWFmZjE5OWUyOGQ4NTAwNWE2YmI4MGZmMDcyNzQ5ZjNhYiBsZWdhY3ktdHJ1bmsKKzc0NzkyIGNmNGUwODE1ODQ2YzU4NGM5MDlhNjRmZmZmMDdmNDZmNzQ1Y2EzN2EgcHkzaworNzQ3OTMgM2FmZjU5NzkxMGM0MWI5ZjJhZjBiZWE1ODIwZjAxYTg0ZTQxNjA1OSBsZWdhY3ktdHJ1bmsKKzc0Nzk0IDhjNzc3MWRjZTA0NzRhODdmMmU2YjdhNDUyMTUyY2E1MjJjMmQ1NzggcHkzaworNzQ3OTUgZDliNWI3ZGQ4MmEyMjI0YmRiNTJjYWFhNGMzOGE5MTcwYzkxMDU2OSBsZWdhY3ktdHJ1bmsKKzc0Nzk2IDFmMWY2YmZkNGRmYjA0NDQ3YmZhOWU0YzU1MTJkMzQ0ZGRiYjdiMmUgcmVsZWFzZTMxLW1haW50Cis3NDc5NyA0YWIzYjVlYWU4OTc5ODIyODRlZWI4ZjI3NjRhYTliZmQ3MzcxMGU3IHJlbGVhc2UyNi1tYWludAorNzQ3OTggOWFkNmQ3MmJjZGE1YjU0N2JmYjUyYjVmZTExYzg3NWFjZjFlOGU0ZSBsZWdhY3ktdHJ1bmsKKzc0Nzk5IDIxZTkwN2EzODM2ZjNjOWUzNzRlMWMzYWIxNGYyYWFmYTc1NTIyMWEgbGVnYWN5LXRydW5rCis3NDgwMCA3ODQ3YjQwOWI3OWMxY2I3NDVjMmJjMzdhNDg0NDI2ZTdjYzg2YjEyIHJlbGVhc2UyNi1tYWludAorNzQ4MDEgNGNjY2YzY2UxNWEwOWM2MjdkYTZkNDNhNTA3OTFiNWVmNDkyZDM5MCByZWxlYXNlMjYtbWFpbnQKKzc0ODAyIGRhODUzZTk4M2YwODI0ZjNmYjVjN2M5NmYxZTNiMDEzYTNiOTkyM2UgcHkzaworNzQ4MDMgMmQ1NzVmMTZiY2VjZDlmNmUwODM3ODRiMzM3YmMyM2FkMmRlMzcxNSByZWxlYXNlMzEtbWFpbnQKKzc0ODA0IDg1MGRhZmQ0YTI0NTNkNTI0NjEwMTgzMTc3ZTk2YmZiZDdlYjQzYmIgcHkzaworNzQ4MDUgNGU3ZjZiYzgxMGIzNjBkOWU4NTc0ODNlODQzY2MyZGEzNGJjOGU4NyByZWxlYXNlMzEtbWFpbnQKKzc0ODA2IGJkNDIwMzg4ZTZiMWRhMTg5ODVhODc0MzYwNjhmMzhiMmRkYTZiNzAgbGVnYWN5LXRydW5rCis3NDgwNyBhNmRmMDc0ZDJlMDkzZmJiMGIyYTViMjNiOGI1NmNmYTI2YmJlZTg1IHJlbGVhc2UyNi1tYWludAorNzQ4MDggOTQ2MjQwNGRmNGUxMGNmZGExZWJmZGZjNmFmYWM2ODA0ZTQzNzc3OSBweTNrCis3NDgwOSBhYjRhODdmZWYxYWU2ZTRhODRlN2Q4MDRjY2Y5MWQyY2NjM2RjYmE5IHJlbGVhc2UzMS1tYWludAorNzQ4MTAgYTMzZjk2YjQzZjI0YWNiMjE2M2M2YzVjZjYzNWE1Yjc0Mjk1ZDQyNyBweTNrCis3NDgxMSA0MTAyYjVmMmEyZjFlM2NlNjRmZDBiYzY1N2Y4MDdiYmZiYzBhYmZlIGxlZ2FjeS10cnVuaworNzQ4MTIgODUxOWUyOGIyODRmNzk0YWI2ZjYyMDZkYjdhYWMxMWQ3ZDM2YzQxMCBsZWdhY3ktdHJ1bmsKKzc0ODEzIGEyYmFiMmQyMzc0NmI1NTJjOWY4ZjhiYzJjZTc1MDhhMjU3MmExNTEgcHkzaworNzQ4MTQgNTYwYzA1NGEwMWFhMmZmZTEyZmZjZmJiN2EzM2RkMDczZjQ3NDgxMyByZWxlYXNlMzEtbWFpbnQKKzc0ODE1IDdkNGMzYzA4M2YzNjE5N2YyZjM4ZGUzNDYxZWRhNThiYWVjYTAwNjIgcHkzaworNzQ4MTYgODg1ZGExNDZmZWE1YTNkZmEzNWQ5Yjg1MmViNDY5NzY5NWZiN2MzMCByZWxlYXNlMzEtbWFpbnQKKzc0ODE3IDUwN2JhOTdhMmVlZWYzMzk0NTVjYmVjNjk3YzgwNmI5NmI3YjhlNzIgbGVnYWN5LXRydW5rCis3NDgxOCBiYjZhZGU1MWEwYjYyMzhkMTM1YzRhNjBiYjYyYmIyNGIxNTEyYWQ1IGxlZ2FjeS10cnVuaworNzQ4MTkgMmViZThjODFhZmYwNjkyOGM3YmVhMzg0N2EzYTc0ZDNjMGY5OTJlZSBsZWdhY3ktdHJ1bmsKKzc0ODIwIGMyZGUzMjg2NmQwZTNkNjQwYWJlOTJiMzQ3Y2E4NTQxMTM5MWQ0N2MgbGVnYWN5LXRydW5rCis3NDgyMSBjMDE3YTQ1MGY0YTU3NjhmYjUwNjMxYTUxOTQxMDMzYzI0NDJmMTVkIHB5M2sKKzc0ODIyIGQ0YzI3ZGE0NmRjYTBmNzk5YmE0NWU0YzBlOGZiNGY1NjE2Y2ZmMWMgbGVnYWN5LXRydW5rCis3NDgyMyA3NDJjZTU4YTMxNzFiYzEyZWU0NjAzNTA2YWU5ZWRjMTZlOWQ0NzM5IGxlZ2FjeS10cnVuaworNzQ4MjQgM2UxOTNkMGIxYWJhODlkNGJkYWFkNGMzNjIwZjg3MjQ1NmY4Nzk3MyBsZWdhY3ktdHJ1bmsKKzc0ODI1IDMzODVlNjE4MjExMjk0OWE3MmQ0YjQ5NWFiYjA3YjcwZmJhNGQwNGUgbGVnYWN5LXRydW5rCis3NDgyNiA0ZTYxZDdiZDFiMzY0NmJhM2ZhMjkwOWU0YzE2MmUxOTMzOWRkYzZmIHB5M2sKKzc0ODI3IDk2YjY0NTc1MmMzMzQ3NWIzOTY2ZGM1MjUxMmJlZGY4MzJiNmE2MGUgcmVsZWFzZTI2LW1haW50Cis3NDgyOCAyNmRmMGI4NTZiY2JjNDgwM2Y2YTA1N2QzMThkMjRhZjQ1MDczN2M2IHB5M2sKKzc0ODI5IDRjYmRhYjYwMWI4N2ZmMzhiNGVmZDJiYzM4ZTYwMjQ0MGQ0ZWQ4NDMgcHkzaworNzQ4MzAgNGI2NGRiMzZmMDliOGZkZGMyNjI2NmYwN2E3NTQ4OTc2NzQ5YzhjMCBweTNrCis3NDgzMSAzMWMyMzZjNTNiMDI0NTdlNGY5Y2ExN2ZiOGRlZGQ0ZDViYjM5Yjc1IHB5M2sKKzc0ODMyIGYxMzkxNDQyYmQwYjVkODgzMzdhMGQ1ZmQwMTY1MGIyZmQwN2JkYjAgbGVnYWN5LXRydW5rCis3NDgzMyA5YjAwM2JiY2E1ZGJmNWM4MmM1NTVhZDViMmU5OWMyMDZmNTJjOTFhIHB5M2sKKzc0ODM0IGQ4MDcyMjA2ZmRjNjFlYTY5MjliNjUzMGY5OTFlMzVlMzAxZWJlMDYgcHkzaworNzQ4MzUgYjZlMzllZWExYmJmNmVmM2ZiMzE1NWNmMGE0ZDUxM2NkN2M3ZTlhMCBweTNrCis3NDgzNiBmYTkxMjcwYjYwODdiMGZkZjM5M2NjMDg1YmU4ZGM4ZTYwOTliNzBmIHJlbGVhc2UzMS1tYWludAorNzQ4MzcgYmU0ZDQyMDA5ZjdlNWJjYjdiZWVlYjM0MDIzZTY2YzAzMzA1NDg4MCByZWxlYXNlMzEtbWFpbnQKKzc0ODM4IDMyNDQ4ZjhhNmM2MzZmMzlhNjE3OTg1ZDEzN2E1NmFkYjlhYzM0NzggbGVnYWN5LXRydW5rCis3NDgzOSA3YTNlZDFiNDM0MTA5NzUzYTU3ZGU4MmQ3YTljMzNiMjdlNjk0ZDc4IGxlZ2FjeS10cnVuaworNzQ4NDAgMzM0YzYwZjUxMjU5NGM4Mzc2ZmMzMGY1MjllMDM5N2ExODgwZTZkMiBweTNrCis3NDg0MSBiMGQwM2ZhMDczZWM1ZDE2N2EwMTY0N2ZmZjM2MjUzOTYyZDE3ODRmIGxlZ2FjeS10cnVuaworNzQ4NDIgMWFkOWYyYmRhMjBhMjZjNzQzMjYxZTNhYTAyZWVlYWIwNzU4M2I3NSByZWxlYXNlMjYtbWFpbnQKKzc0ODQzIDNhY2QzMWVhZGJiODgwNzA0NWNkYTA5NmI3ZjQxNDE2NGM2YTNkMTEgbGVnYWN5LXRydW5rCis3NDg0NCA2NjFjOGE5Mzg5MmZmN2MxMGRkZTAxZjBkOGE1ZWI2MWVjY2ZlYzQwIHJlbGVhc2UyNi1tYWludAorNzQ4NDUgMGYwOWQzOGY4NTJlODQ3YTg2YTU3YmQxYzJlYmY4NDI5OTg0MjYzMyBsZWdhY3ktdHJ1bmsKKzc0ODQ2IDc4ZmY5YTc0Y2I0ZTliN2RhYTE2MTE2ZWQwNjYwNjYxYmMzMDhhYzAgcHkzaworNzQ4NDcgMWIxODk2N2ZiZDQwODEwNjkxZWE1ODI4YzhlMDE3ZDE5NDQyYmEwNCByZWxlYXNlMzEtbWFpbnQKKzc0ODQ4IDhhYjMwNDAzNDAyMWE1NzcwZjczMGYxMTdlOGY2ZTg1NzVmYTBmZjUgcmVsZWFzZTI2LW1haW50Cis3NDg0OSBmYWI5OWU4ZDI4YzMyNzViZWQyNTMwMGQ2YmJmOWQzZDhiNGRjMzhkIGxlZ2FjeS10cnVuaworNzQ4NTAgYWUxYjFjZjQ3YzBjYTFmMzM1ZWM3YWMzODYzZWQwZjA5ODEyZmY2OSByZWxlYXNlMjYtbWFpbnQKKzc0ODUxIDFlMDlkYzY4YzhmMzYzOGJmNmNiZDgzMTU2NWZmMjBiYWQ0ZDRlYmMgcHkzaworNzQ4NTIgMmU5ODU4YzBkMzY0ZDFjZTRiZGYwMDI4YmE0ZWE2ODYxZGM5NGZlMSByZWxlYXNlMzEtbWFpbnQKKzc0ODUzIGEyY2JiOTQyMWExMTQzYWM1YWYwMzI3ODUyNWQ3ZDE2M2E4N2NkNTIgbGVnYWN5LXRydW5rCis3NDg1NCA5MDY5ZTUyYzBiZWRjMjUzMzJmMDIyOTk1M2M4NWM1MGFkMzYzZDEyIHJlbGVhc2UyNi1tYWludAorNzQ4NTUgYzhjYjllZjBjZDBhMDRkOWJkMDBkMDEwYzZhOTRiZjg5NjI4MTUxNyBweTNrCis3NDg1NiA0NjYyNWJjYTBjZmI1NmY0OWVmZWNiZGI4OWU5MzYxYTQ0MTNjODVmIHB5M2sKKzc0ODU3IDc2ZTA4YjkxZDk4ZTBhZGI3NDA4N2M2ZjdlNWRhOTBlMmZmZjE4YjQgcmVsZWFzZTMxLW1haW50Cis3NDg1OCBjZGFlYjI1MWQ0ODhiZTM2NDUxNDNkNDc2ZmU5MzBhMDAzMzY5MWUwIHB5M2sKKzc0ODU5IDE3M2JlZDBlMDRjNDg5NjUyZTU3MmZhOWUwM2VjZGJlZDRiODI2NDcgcmVsZWFzZTMxLW1haW50Cis3NDg2MCA3N2I5NmE1NDI0YTJjNjUyZjc1ZGZhM2UzN2I2NzQ3M2I4ODJkMzE4IGxlZ2FjeS10cnVuaworNzQ4NjEgN2M0ZDUyODYwMTMxYjZkYTljYmU0OWUxYjFkYjk4ZmY3MWFjMGJjZSBsZWdhY3ktdHJ1bmsKKzc0ODYyIDlhMTA5NzE0MDNhNWFkMGQ0OWMxN2ZjNzExM2YyNDk1ZmM4YzdjZjggbGVnYWN5LXRydW5rCis3NDg2MyA3ZjcyNjExNWJhMjlhMGU2MDQ2MTQ4MzAyOGEyNTVmMTJhMDY4ZTA4IGxlZ2FjeS10cnVuaworNzQ4NjQgMTcyYjJkMzZkYTc3Y2QyODMxMzY4MmU2ZjJmZDlkMWNlODRkZmNkYSBweTNrCis3NDg2NSA0MmY4ODA4M2RkYmRmM2UxOGY1MWIzMDRmMDFiZTkzNjhmMzg4ZjY5IGxlZ2FjeS10cnVuaworNzQ4NjggNWZlZDVlOGVhOWNjMzMzMjY3ZmM3ZDY4ODJiYjQ3NWVkOTQ5ZjJhOCBsZWdhY3ktdHJ1bmsKKzc0ODY5IDM4YTUyYjY3MjQyOTI2MDMwZDBiZDQ5MTQzODc5MDRkNzUwNzU1YzIgbGVnYWN5LXRydW5rCis3NDg3MCAwZmYzN2UyMDAyOTJjOTM2YmY2OTQ0YTRhYzliY2QwNWQ5NGYzZDU4IHJlbGVhc2UyNi1tYWludAorNzQ4NzEgMTJmMTQ1ZDc1NTEzZWI5ODZhYTc4ZjA0OTM2MTM3YmU3NjY5ZDgzNyBweTNrCis3NDg3MiBhOTgwOWYzYjE2NGZmYTZmMGQ4ZWYzMGZjYTYxOGQyMDI4M2MyNWIxIHJlbGVhc2UzMS1tYWludAorNzQ4NzMgOGMzYjJkZGE0NzAzNjBlNTIyNTFkMzY1ZmUxNzRiNjMwZThiOWJmNCBsZWdhY3ktdHJ1bmsKKzc0ODc0IGRjOTIyYTg5Y2NmMTBjMzhmZDZkYTVhMGRiYWQ3YjQwMDI5NGViM2UgcmVsZWFzZTI2LW1haW50Cis3NDg3NSAwYTU4MGRjN2FmMTM3NjQwNDU1M2ZmNzUzZjE2MGE1YTc3NjUxNTVlIHB5M2sKKzc0ODc2IDZmNGI4NTJiODJmMTc1MDdjNTlhZWFhZGQyOTk3YjU2Y2U0NzlmODUgbGVnYWN5LXRydW5rCis3NDg3NyA5YWNiOGViNzJhOTJmYTVmNTMxODdiNjJmOWEzMjk5YWRlYjFlMGIyIGxlZ2FjeS10cnVuaworNzQ4NzggY2E5MjBjMTZiMjA1N2U4ZTQ1NTIxMTEwMjM5NmIyOTNkZGFkMjJlMCBsZWdhY3ktdHJ1bmsKKzc0ODc5IGUwZDVjMGMzODA4Y2UxOGQwZjkxMmRhMTNlZDA3ZjcyMTRmZGU3MzAgcHkzaworNzQ4ODAgYTI3YWJkMzUzZWQxY2ExMzRjODk3M2NjNmU0ZDRhYzBkYTk1YjBjZSByZWxlYXNlMzEtbWFpbnQKKzc0ODgxIGIxYjYxNWE5MTFmMDMxZjBiYTRkM2NkOTk5OGIzNjhmZjYxOGJkNTYgcHkzaworNzQ4ODIgZTQ5NzRlOTVmYTY0OWVlZjY4NWZlMjgwMjVjZGFmZTc4ZjkxODNhNyBweTNrCis3NDg4MyBiMzk4YWZlZmQzNjk2N2EyYmZiMWY4Y2U5MWI5YmU4MDFkNjY3YzdkIHB5M2sKKzc0ODg0IGJhMjI4ZTVjM2RhZjc5NmM4Njc4ODA5ZDYxZmJlMWMzNjZlNmY2YmUgcHkzaworNzQ4ODUgOWNlZWI2MDJkZGEzYjliNmUyNjQ2OTk2YWQ2YzcxMjFkZWEwMWExMiBweTNrCis3NDg4NiAwZTQ0ZGNjMGIyMGQzOWQ3MTkzYzY1M2FmMjA4NDE1Y2UxMzdkZjZjIGxlZ2FjeS10cnVuaworNzQ4ODcgMmVhMWZjMjY4NTQyNTJjN2NkMjIzYTk3YTM4YTMxZDY2NDBhOWVlZCByZWxlYXNlMjYtbWFpbnQKKzc0ODg4IGQzZWU3MzhmZGNkYjE3Y2ZjMzZkNGIyOTRlYzljYmQxMDg1ZjgwZGIgcHkzaworNzQ4ODkgMDcyZTNlMzBiNTBjYzIxZGIyMmNmMzU5Mjc3ZTczZjE4MjcyOWUyNSBweTNrCis3NDg5MCA1NDdkNDFiMWRlOTczODFiZTUzMTJmZjJjYzYyYjZhZWJmZGM5YzkyIHJlbGVhc2UzMS1tYWludAorNzQ4OTEgMWM1NDZjZjNlYjEwZDZkNmVjYzQzMjEzZDZhNGQ4MjQ2YTcyMTIyMyBweTNrCis3NDg5MiBkNjAxZmUzN2ZjNTRjZTAxOGYzNzZiNDNiYzg3YTJmNjBiNDA4ZjJjIHB5M2sKKzc0ODkzIGZkMmY0YWU5M2QwMTI3ZWRmYzU5MzY5OTg4MDE3ZjFkZDc1NzMyMWYgcHkzaworNzQ4OTQgYjYzYzcxODA2MThlMzQ4YTQyN2NkYzUyMmVhOTlhOTQ2YWU3M2VjZCBweTNrCis3NDg5NSA5OTNlZTM5ZThiY2ZlZmE5ZGE1ZTA5NWM3ZGJkYzZiNTg0YWQyNGVhIHB5M2sKKzc0ODk2IGJhZTlmNDgyM2I4ZTExYjU0NjQ4NDc3MmU3NWViZTNkZjUzYzllZjkgbGVnYWN5LXRydW5rCis3NDg5NyA1YTFlODc5ODMyZmUzM2M3NzE2NTZhYjYxMDI5ZmIwMGZlMDA0MzBmIHB5M2sKKzc0ODk4IDk4MTc5MTVlYmRlYmM1MWE4MTljOTRiNTcwMGRjNDE1NzQyYjk2Y2EgcmVsZWFzZTMxLW1haW50Cis3NDg5OSBkZTMzNTdjMjYwYjYwN2NhY2YzNmU3OTU1ZTUxZjAzNWFhZWI0ZDRmIHJlbGVhc2UzMS1tYWludAorNzQ5MDAgZGEwNGIxNTJhNmZlM2Y2NmZiOTQ1MzhjZjhmNTQ0YWI5YjdjYmY2ZiBweTNrCis3NDkwMSBiMzI2ZTdkNjY0MTM0YTgzZWRmYWUwZDdjNmQ0NGU0MDIyZGU1YTU4IGxlZ2FjeS10cnVuaworNzQ5MDIgN2E1YzExOWI4NjY5MDJmNjIwNjJjZmEzMjMwNmY2YzlmZmRlMjdkNyByZWxlYXNlMjYtbWFpbnQKKzc0OTAzIDg0ZjFjOTViNGU5NzQ4ZjlhNTQ5OTNjYTY2OWVmMmVlNTdkODhhMjMgbGVnYWN5LXRydW5rCis3NDkwNCA2ZmNhMzUzNTJmN2I3ODE2NGJmMmIzMzhjMjE2MWQ1ZjU2YzhlNjljIHJlbGVhc2UyNi1tYWludAorNzQ5MDUgNGYxNWExMzFhYjA3MTk1Y2NjYzgzNTM4NzNjZDY5N2M2MmMwYTAwMCBweTNrCis3NDkwNiBjNzZmODQzODM4YTVmYTA1NzVkZGZiNDgxNzljOGI0MmQzYjNhNjI4IHB5M2sKKzc0OTA3IDMyODlmZmMwNWNjNzg0NDk0NTEzZTJlZTdlNjBhZmEwNTIxNTkzYTMgcHkzaworNzQ5MDggYjM1ZGQxYjYyNDhlMzkzOTY4NTliOTA0MDk5NGFiMmQyNTRlYmIwYSBsZWdhY3ktdHJ1bmsKKzc0OTA5IGE0NDJjMjUwNGE1N2UxYjViNzE3Yjc4ODU2MWYwYjI2OWYzOWVmYWEgcmVsZWFzZTMxLW1haW50Cis3NDkxMCAzN2U5NjI0NmJkYTFjNjQ5MjY5MjFiZTIzMjUyMjUwNmYyYjZjNDg3IHB5M2sKKzc0OTExIGRhODE4NjE2ODRlODkzYTY0NGY3M2M3MTUwOTJkODA4MDc4ZjkyYzMgcmVsZWFzZTMxLW1haW50Cis3NDkxMiAxZDJlNmM0NDFhNTNmMDE1Zjg2OTEyYjNkMjA0ZDQ5NjBiYThmNWExIGxlZ2FjeS10cnVuaworNzQ5MTMgNzdlMDdhZjZmODdhM2M4NDU1ODE0Mjg0MDA0YjU1Y2IyYmMzODdmNSBsZWdhY3ktdHJ1bmsKKzc0OTE0IGQ0ZTAzNmM2YzYwZDRhNDAwZGY2ODYyYmUwYjFmZmUyZTRlMzMxYzYgcHkzaworNzQ5MTUgODVlZjFjMDRkOGRkZjVjZWE4YWE5NmY3NzBjMTIwZDUzZjdlZDc1YyByZWxlYXNlMjYtbWFpbnQKKzc0OTE2IDUxNzQ4ZGZjYjQ0NGM3MDA0NGU1NGI5MTBmOWNiMzE1OGI0NzI2ZDMgcmVsZWFzZTMxLW1haW50Cis3NDkxNyA5OTMxZTE3N2RhODEzOGViMDliODI4YmI5YjRkYThkYTUwMWJlNTg0IGxlZ2FjeS10cnVuaworNzQ5MTggMzc1MzhiNTUwZjY4NWFmMzgxYzM0YWUzNjk1ZjBhYmIwYTZjNDA2NCBweTNrCis3NDkxOSBmZDE4Nzc0NTMwNjA2MjUyNzM3ZDM5NGJjNTdiMjUwZmJhMWRjMTZjIHJlbGVhc2UyNi1tYWludAorNzQ5MjAgZDFkM2EwN2EwZWQ3ZjQ5ZjBmNjExM2UwMmU2ZmYzZDA4YzQyMDgxMSByZWxlYXNlMzEtbWFpbnQKKzc0OTIxIDNjODNhM2NhY2Q3Nzk4NWJlODM1NWQzY2JlZWFmZGRkYzAwMDE1YWUgbGVnYWN5LXRydW5rCis3NDkyMiAwNDNmZGRhNzA2YTM3NmZjZmMzMjUzODU5MjgzMjkyMDlkOGQ0MjIyIHB5M2sKKzc0OTIzIDgyMmEyOWY3NjYwYjUxN2ZlZDY3ZGMwNGI1YTBkODdiZTY4NDM2N2QgcmVsZWFzZTMxLW1haW50Cis3NDkyNCBiNGNhNTk0ODQ5MTQzZDY1NjNlYzcxNWIzZDk5YzU0YjE2NGZlY2E1IHJlbGVhc2UyNi1tYWludAorNzQ5MjUgZjI1NTVhZDVmZTA5ZWEwMDBjNjBhYWMyOWRiNWI0MzIyYzZhYWUyZSBsZWdhY3ktdHJ1bmsKKzc0OTI2IDIyMTFhZDNlN2JiZWQ0YjkzODY4Yjg1ZDdiYWZhZjg0NTdlN2Q3MmMgcmVsZWFzZTI2LW1haW50Cis3NDkyNyBiMGU1MTA1ZmY5N2JiOWNjNGYyYWI5YTI5ZjZmZjUxNDRlYWE5ZDg2IHB5M2sKKzc0OTI4IDdiMmJkMzliMjFjZDFjNmJhZDU5ZDIwNGIxNjlmYmRiMmE5MmI2NGEgcmVsZWFzZTMxLW1haW50Cis3NDkyOSBmNjRjMGViOGNjNjIwOWY0YzI0YmZmNWMzM2ZiYWQyMGQ3ODM2OTQyIGxlZ2FjeS10cnVuaworNzQ5MzAgZmRhMjkyZjMxNjMyNDIyYzY1ZGRjMWVlNzI1NDIzMzRmNjQzYmY0MyBsZWdhY3ktdHJ1bmsKKzc0OTMxIGYxMmNlN2FkYmQzMDAwOTBkNDJiOGEzMjEzZmM2NGVmMDQ4NTY3YWIgcHkzaworNzQ5MzIgNjE2YTY2OWM5MDIzZmU3NDczYTc1YjA5NzkzYzI3NTllNmE5ZDRiOSBweTNrCis3NDkzMyBiNGJiNGJiODY4OTI4OTk2NTNjOWMxNjI3NTAyMjFkOGM5ODdhOWY4IGxlZ2FjeS10cnVuaworNzQ5MzQgZGU2NTkwODk3M2QwMjQzOTFlZDljMWVkY2VmZjlkNDM3MzJiNmI3MSBweTNrCis3NDkzNSAxYjdiZGFlMDIxNzk0NzBlZWIyMmIxODc0MWVmNjUzN2YyYWQzMzdkIHB5M2sKKzc0OTM2IGNjMzI5YmIxOWRhNWYxYTlmYzM4NTM2MjhjZmNhMWU0NjNlYWVhMTUgbGVnYWN5LXRydW5rCis3NDkzNyAyNDNmYWYwZjVmNWU0MzEwMzVlYjQzMjRkNGViNmQyMGJjODJjYzY1IGxlZ2FjeS10cnVuaworNzQ5MzggYTJiMmNjMGZhN2FkNGQwZjQ5NGE0MDBlZmQxZjFiZTY4NzQ0YTIwNCBweTNrCis3NDkzOSBjZjc1YzBkMmUzYzc2YjEyZDg5M2M2OTRmOWJmMWExNTA5YWJhY2QxIHB5M2sKKzc0OTQwIGM1YjE1MDAxNzJmODljZjc1NWEyMTMzYTIyMzgwNjQwMDUxM2YwMWMgcHkzaworNzQ5NDEgODMxNTI1ZjE1YzU3MDI5MTIyYTEyYWEzY2Q2NGNiMWQyNGJmZDk1YSBweTNrCis3NDk0MiAwNzUyMTM5ZjNkYTFkM2FjZTcyN2YxMGM5MTlkZjRmMWQ3MDA0MDJiIHB5M2sKKzc0OTQzIDZhMjc4ZTRkOWY2MThkYjJkMmJiNTc0OGVkNTY1MTMzMjcwNDFjYWYgbGVnYWN5LXRydW5rCis3NDk0NCAzMGNjNGYwNzMyOTJlZWEyNmQxZjEzMTVmYjExNDM2MTQxZWRiNWJjIHB5M2sKKzc0OTQ1IDU4YmE4NWMwZDRiMGIwZmU5YTBmODJhODBjOWY1ODZkYzdiYjliNTAgcmVsZWFzZTI2LW1haW50Cis3NDk0NiA0NTE0NWFlYjYzMzEwYjIzMjIzZjNkYzIyNDRlNWJjZWFiNWVmNjI5IGxlZ2FjeS10cnVuaworNzQ5NDcgMDAwNzAyNGU5ZTIzNDhlNzgzNTdmOWY4ZTU2NzhlNDZlNTZjMWEzZSByZWxlYXNlMjYtbWFpbnQKKzc0OTQ4IDRjNzM0OWI5ZDE1OWE3YWRhMzUwMWViYzE5MWE4ODFkNmRjNGEzZWUgbGVnYWN5LXRydW5rCis3NDk0OSAxZWI0MjQyNTczNDVjZGI3NmJlYmMxNDkzNmQzNDE3N2QxZDk1ZjZjIHB5M2sKKzc0OTUwIDFiMTgzNmNmY2YyNjJhOTA4MTg5YWQ0YzUyOWVhNmE0NjcxN2JjOTYgcmVsZWFzZTI2LW1haW50Cis3NDk1MSA4MGEzOGY4OTNiN2YzZjA4ZTY0OTI3Mzk4ZGY1ZTJkZWQ0OWE3ZmJiIHJlbGVhc2UzMS1tYWludAorNzQ5NTIgYTA5ZGE1NmU0Nzk2OWVmYWUxM2JhZGU5ODNlZDA1OTg0MWJmNGUzOSBsZWdhY3ktdHJ1bmsKKzc0OTUzIDM5YjQ2MzA3OTdmYWNlN2Y0YzA0YWFhNzhkNzBkYmFjMjNjYWFmYjUgbGVnYWN5LXRydW5rCis3NDk1NCA2NzkxYzJiMWE3ZGM5ODhkZjE2MGEwODI2ZjhjYjNjNjA0NmQ0M2QzIGxlZ2FjeS10cnVuaworNzQ5NTUgNDE2YjY0NTUwN2QwYTg0Mzk4OWRmYTY1MmJiYWQ4ZGJhMWRkMTYyNyBsZWdhY3ktdHJ1bmsKKzc0OTU2IDhjY2MyM2FmZWEzZDE4OTY5OThmMmMyM2Q5MmE1ODA2MmQxYjRkMGEgcHkzaworNzQ5NTcgZWE2OTdjZGU2ODgyMzRmN2IyYmM1ZTBmZDUyMGQ3MDJhNzJlZTAzZCByZWxlYXNlMzEtbWFpbnQKKzc0OTU4IGY1NGQzMWU1ZmQ0ZDZmMDBiZDk1OWMxYTRkY2I3YmY2NGVmMjQyNjQgbGVnYWN5LXRydW5rCis3NDk1OSAyYzVhNzc1MGI3MWQ4MjFkMDkwMTRlMzljZmYyMmFlYzA2MTFlN2ZmIHJlbGVhc2UyNi1tYWludAorNzQ5NjAgYmQ4NGY0MmMzNjMzOTU4YjlkNTJjYTEzYTMyZjUzY2VhZjhhMTVlZSBweTNrCis3NDk2MSA1MjJiZTM2YjI5Y2QyMTQ4MWI4ZGIyNTY1YzYwNGM5ZjViOTQ1ZGUzIHJlbGVhc2UzMS1tYWludAorNzQ5NjIgMmRkZGRjNjQxYTk4NzNmMDJmYTlmODNmMWU2ZmEyMmY3ZWQyZTBjYiBsZWdhY3ktdHJ1bmsKKzc0OTYzIDI3MTdkODVhYmEyZTZiYzNlNzMwOTE1NmVhMzMzMTBjNmEwZDE1ODMgcmVsZWFzZTI2LW1haW50Cis3NDk2NCBlNTYxZjEwYzdiMzExOTI4YmU3NjA5MWJhZTI2ZTAzY2JjZTVjMjU3IGxlZ2FjeS10cnVuaworNzQ5NjUgZDEzMTk1NjUzM2JmMWNkOWNhODgzN2UxNmYxZmU1NDFiNGUxMzJlNSByZWxlYXNlMjYtbWFpbnQKKzc0OTY2IDY5ZWUxNTAxYjEwMjY5YzNmN2VkMzFhMDM5MmNiMTgzOWE3YWZmODUgbGVnYWN5LXRydW5rCis3NDk2NyA0MzZjYTc3NWYyNmNhYTg4NDllNGY5YmRmN2I5MjAzM2E3MWFmZDhiIHJlbGVhc2UyNi1tYWludAorNzQ5NjggMjI1NDhjN2VhZjM3NWJkNzZlM2M3MDVmMTBhMGQzZTE0YzllZDk4MCBweTNrCis3NDk2OSBiM2QyNWU2ZjY2ZjEyZGU1NjQ5NzQ1NmM1Y2EyM2JhZDQzMTljOWJmIHJlbGVhc2UzMS1tYWludAorNzQ5NzAgYjBhMmZiYTAwNDU4NjExOTA4YThkYmJjNmE4MmQzMWYwZGI3MjEyYSBsZWdhY3ktdHJ1bmsKKzc0OTcxIDFjNTBkYzIxMzMxMmRjNjQ1NzMzNzkzNWQyNzk1ZDlmZGYzYjZhZGMgcHkzaworNzQ5NzIgZDhjMjQ4YTU5MzEwNTBhMWY5NzVjM2ZmOWI3NjQ5ODJmNzQzMDg5ZCBsZWdhY3ktdHJ1bmsKKzc0OTczIDk4MTA0YWI4NTlmYTk2N2I1YWI0YjVhYzlkZTRkOTBiODFhOThiNWQgcmVsZWFzZTI2LW1haW50Cis3NDk3NCA4MDZjNjM2Mzg1ZmNjZGJhYmI1ODY4ODE0ZDFhZDIyODRiYzNlMTc0IHB5M2sKKzc0OTc1IDdlMzk4NWZhZjlhOGFjZmUwMjdiMGQ4Yjg5M2VhYTc4MGEzOTFiN2YgcmVsZWFzZTMxLW1haW50Cis3NDk3NiA3YTNmZGQ5M2I1NjY0ZGEyNTE0ZmZiM2E0OTVjNWQxMDFkOWQyMmIzIHJlbGVhc2UyNi1tYWludAorNzQ5NzcgMWRiNmVlOWQ3YmU3YTFkNmM1MzNhYTA3YmEyNWIwOTg1YzZlN2Y1YyByZWxlYXNlMjYtbWFpbnQKKzc0OTc4IGRiOTdjMDQyY2MxZWQ1Yjk1ZGE4ODQ0YTM5NTA3ZTRjY2UxMzI4ZGIgbGVnYWN5LXRydW5rCis3NDk3OSBjYjM0MjhiMWY0YWYyOWIyNWI0OGQyOTc2NTVhZTJlYTg0MGJjYjdhIHB5M2sKKzc0OTgwIDMzOTNmZmMwZGU0NGU2YTNjYmNiYmQyY2E3M2Q3OTRiNWZhM2Y1YzYgcmVsZWFzZTMxLW1haW50Cis3NDk4MSA5MjM0MzA1ZDM3NDAzODdhNzMyNmQzNDlhNDdlMzU2MTA4OTA3MjI5IGxlZ2FjeS10cnVuaworNzQ5ODIgNmQ4YjU0YjIxYjg3N2VmZmNjYjJiMTU1NDI5NDg0YjFjMzkyZDdlNSByZWxlYXNlMjYtbWFpbnQKKzc0OTgzIDI3M2MyMzQ4MDBjMTg0MWQzMGJiZTdiNjQ4NTFiN2QwYjdiOGMxMGEgcmVsZWFzZTI2LW1haW50Cis3NDk4NCBjYzNkOGFmZjQ1OTU2MGNhNDRmODg1NTMxZTNlNzVhMjM3ZGUwYTYzIGxlZ2FjeS10cnVuaworNzQ5ODUgYzU5NDllMTJjNjkyOWVkOGRiNjFiNGY1MGFlZGQ2ZWM0N2UyYzhkNCByZWxlYXNlMjYtbWFpbnQKKzc0OTg2IDljOTE2NWJkMjkzYWUyNDk4NjYxYmM3MDU2OWZjYTBhMjU2MTk5N2QgcHkzaworNzQ5ODcgYzYzZjg5MjNlMjRmNjhiNmVmM2JlYTJkNWU1ODAyMTE3ZjRiZjk5MiByZWxlYXNlMzEtbWFpbnQKKzc0OTg4IDJkZjhiZWRlYzZkMzMzOGMzN2RmNzYzMGM1NWI5ODdmZTNlZjNkOWMgbGVnYWN5LXRydW5rCis3NDk4OSBhOWNlMTU4OWQ2OTRkMjk4NjU1OWI1YmRkZTk3NTc1MDg5Y2Y2YjRiIHJlbGVhc2UyNi1tYWludAorNzQ5OTAgN2M0MzQ2ODdiNDI5Mzk2ZTE3YWE1ZTIxMWRjMmJiOTM3NmQxNjJiMyBweTNrCis3NDk5MSA0MDA4YTAxMzdkZTdiMGQ2ODAyMWFhZTg4NDY3YmU4MWU3MjVlYTA5IHJlbGVhc2UzMS1tYWludAorNzQ5OTIgZDYyN2M1ODkyZmQ1NDhlZjQ2M2JmNTEwMzFhM2M3NWUxMjUzMGNhZiBsZWdhY3ktdHJ1bmsKKzc0OTkzIDVjODcwMGNjOWQxNmVkMjZiOTRjNGZhZTViZjEzZDk3MDBlNDYyYTQgcmVsZWFzZTI2LW1haW50Cis3NDk5NCA3YTc2NDJhYjExYjM5MjdjZDIyYTQ3ZWY5ZTMyMmY5M2FjYzlmNzRhIGxlZ2FjeS10cnVuaworNzQ5OTUgNjI3YjM0OWRmMGU4ZTI3OTE3ZWM0ZmU3ZTEzNDUwOTdjMDYyNDFmMyByZWxlYXNlMjYtbWFpbnQKKzc0OTk2IDAxOGYyZWFlMjUyNmZlMjRkZGQ0OWQzZDQwZjFiNmY4N2I2MWViMTQgcHkzaworNzQ5OTcgZjhlNjk2ZTRjZmYxZDgwNGI0Y2U2YTA2NTI3OTdjYzMwZGVkYmI3NSBsZWdhY3ktdHJ1bmsKKzc0OTk4IGFmN2ExMjAwZmIzZjM1ZjAxZDQyMGZhZjc1YjNmNWIzNmU1MDIxM2QgcmVsZWFzZTI2LW1haW50Cis3NDk5OSA0YjgzZWE2ZmM1YmRlMjE2MjczM2UxNTk3NTdkMDQ0Y2NkYTcyZTFiIHB5M2sKKzc1MDAwIDNhM2UxNDVkNTUyYzVjOWIwMjkzYTJhN2YxZWEzODMwN2RkZjMwNTUgcmVsZWFzZTMxLW1haW50Cis3NTAwMSAxZmZlNmZiMTlhMThkZDA5ODliYWNhODU1NzVhMjU5YzU0NWFmYzMwIHJlbGVhc2UzMS1tYWludAorNzUwMDIgNzQzNWQ1OTFhMzI1ODNhZTEyNjFhYjlkZWRlMWE0NGQ1MjNmODFmMiByZWxlYXNlMzEtbWFpbnQKKzc1MDAzIGI3NzdlMGYwYjU3Y2EyMTE5MDhkMzQzNjMwODJlN2U0NTMxZDU4MjQgbGVnYWN5LXRydW5rCis3NTAwNCA1ZjYzYjUxNDI3MjUyMGZiOTcwMGM2MmZlNWIyODYxOThmYzI1MDZlIHJlbGVhc2UyNi1tYWludAorNzUwMDUgYjczNGQ2YjUxODUyOTRjNWM4NDMwZTJiZTI5YWRlM2I1ZDVkOTk1MyBweTNrCis3NTAwNiAzNTdjNzVkNTljZTk5NGJkNjY0NDgwZjAzMTQ3YzY2NTU4MjExNzY2IHJlbGVhc2UzMS1tYWludAorNzUwMDcgZjczY2RhZTE5N2M0ZDFlMmEwOGE0YjMzMzViYWNlYWE2NDQyMzZiMyBsZWdhY3ktdHJ1bmsKKzc1MDA4IDc4ZTAwZWI0NWRiYjQwZDhhZjRlYThlZWQ5MGQzMzZkZDgzNWU5ZDkgcmVsZWFzZTI2LW1haW50Cis3NTAwOSAxZjVmNzg4MThjNTFlODM0ZDI4YmUwNDg3YzlhYWYzMGYwMjQxMTYzIHB5M2sKKzc1MDEwIDgyZDc5N2ZmOWFhM2MzOGJmN2YyOTY4YTM5YjYxY2Y1YTEyZjBhYjUgcmVsZWFzZTMxLW1haW50Cis3NTAxMSA0Y2U0ZGE4NDdkOTNmMDUwM2QyOTA0ZDIzNzY5NTVkMTdmNDM2YTdkIGxlZ2FjeS10cnVuaworNzUwMTIgYzIzOTJhNzk3MTVkNjFkNmEyMTBhYzYyYTk0Y2RmOWM5MWFjMzBlNyBweTNrCis3NTAxMyA1NzRhNTMyZmI0MGIxODZlOGU3YmEzZmE1NzY2ZmJmNTliODFiMmJiIHB5M2sKKzc1MDE0IGFmZGEwODc3NjNhZjFlZGVkOWUxMjc4NDBjMTc0NDU4Mjk0ODUyMTAgcmVsZWFzZTMxLW1haW50Cis3NTAxNSA3NzE5MWYzYTFkMjdkZGM3MDE0OTU5YjdjMmMxNzdjMGE3MTdiYTVkIGxlZ2FjeS10cnVuaworNzUwMTYgNWI4YjE4YjAwZDRjZmYwNWVjZjNlMDg0MjFjNGYzMzg1MDZhNWZjOCBweTNrCis3NTAxNyA1NTU3YmM4Y2JmNjVmOTk0Y2U2MTUyMzhjOTBkNTRhYzdlNmYzNmM1IGxlZ2FjeS10cnVuaworNzUwMTggMDZjZTI3YTgyZTk5ZTdmZTNlZDg0YzQ1NjEzMTJkNGU2YzUxYjE5MyByZWxlYXNlMjYtbWFpbnQKKzc1MDE5IGNhZGJmYzczYTNiMGQ2NjJmMWE2NDBkZDEyOWM4MjNhYmJjYjIzNzYgbGVnYWN5LXRydW5rCis3NTAyMCA5YzZhOTgzY2Y2YTkzZTVjZTdmZmU5YTUzZmYxZTQ1YThlYzMyY2ZiIGxlZ2FjeS10cnVuaworNzUwMjEgMmFlOTNlYWM0MjBlMmFiOWE5YzZjZjk0Y2M5YzZiNWZjOGM2N2JlMiBweTNrCis3NTAyMiA0Y2ExMTVmMzNiNmI4Zjk2ODMzYWRjMzk5YTE0YjllMGNkNDMyMjcyIGxlZ2FjeS10cnVuaworNzUwMjMgNGFhN2RlNjYxMzdmY2MzZjM2ZGIxZDA1ZTg3N2ZlNDg1MGZmMDJmYSByZWxlYXNlMjYtbWFpbnQKKzc1MDI0IDMyMjhiYWZiZTZjOTM4NjU4YjllODRiMzU0NDYwMGFkZGU3MmFhMzkgbGVnYWN5LXRydW5rCis3NTAyNSAyZDM0YTc0ZjAwMTcyMDZmZThkNzBjYTcwN2UzZjM1MTIzMmU4YTMzIHJlbGVhc2UyNi1tYWludAorNzUwMjYgY2FlMDUzYzlmOWNhY2U0YmZlYThlYzUyZDkyZGM4OGM0MjcxNTYyMSBweTNrCis3NTAyNyBiMTlhOGFkZDExMmY4ODJkNWNmMDkzMjkzM2RkMTVmMDNmNDU3YWUwIHJlbGVhc2UzMS1tYWludAorNzUwMjggZDU5OWEzZjJlNzJkNmUwYzQzZTU3YTNhOGRiZDM2Mjc3YWIxNzA4NiBweTNrCis3NTAyOSAxZDBkNmY3NDM3OGM2YjUyYzdiYTc0NTM3NzgyMDExZmQ2NmQzMjJlIHJlbGVhc2UzMS1tYWludAorNzUwMzAgNjAwZWQyZGQ3NjcyODkxOTc3ZGQ4NGI5OTQyMDVhMWFlNDUxNDg3YSBweTNrCis3NTAzMSA5Y2FjOGJhNmY0YTlkYzU5ZWNlOGYyYWUyYmYxZjMwM2UyMmY3NGYyIHJlbGVhc2UzMS1tYWludAorNzUwMzIgYzI0ZjAwMDE4MmY0NTU1Y2Q1OWViODZhODAxNTlmNmZmZmNmNDNkNCBsZWdhY3ktdHJ1bmsKKzc1MDMzIDY4ODk5ZGMxMTdlYjM1ZmQzOTZiZmI0YjBkMDdiM2RiNmU2MGI2NjMgcmVsZWFzZTI2LW1haW50Cis3NTAzOCA1ODRkYjAzZTUyNDgwN2E0ZTc5ZTUwM2I5YjMzZWYzNmFjOTYwYjM5IHJlbGVhc2UyNi1tYWludAorNzUwMzkgYjRhYjQ5ZTI4MzA1MTAzYzkyNTFkZjQzYzMyNjY5NjlhM2QxMjVhMyBsZWdhY3ktdHJ1bmsKKzc1MDQwIDlkYWY4ODQwYTQ3M2UwOGU1NDcwNDUyYTc4MDRhZGE3NWE0M2JhMGQgcmVsZWFzZTI2LW1haW50Cis3NTA0MSA1M2E2YjM5ZWU0YjY2ZDk0M2MzNzVkYzI1ODIyZGI3NTEzMjY0YTU3IHB5M2sKKzc1MDQyIDNmZDdmMTIyNTU2YTk2MWE1YTlkZjVjN2UxNzFiY2JiNjc5ZjgyYWMgcmVsZWFzZTMxLW1haW50Cis3NTA0MyA3ZjdjZmFhMzgzMmUzZTI1YTNkYWZkOGUwNmMwN2RjYzY1Nzk3OGJkIHJlbGVhc2UzMS1tYWludAorNzUwNDUgMWQwZjQxNmQ0YmE2NDJmMzVlOGIwMTIwNzEyNmI0MGZjYmU4MjQxMSBweTNrCis3NTA0NiA4OTY2NzBkNDFjOWY3NGIzMWE4MjI3NDIxOTMwNzExYmQ0OWVlMTBmIHJlbGVhc2UzMS1tYWludAorNzUwNDcgZjlhNzBmMjI1NjI1MGU3MWFhMzBiYTMzM2RmNzZmOGMzMDEwYzE5YiBsZWdhY3ktdHJ1bmsKKzc1MDQ4IDc4NWVjY2MwMjVhYzZlOWZkZDA3MzdkMTM3MGYzYzJhMDZmNzA0NzYgcmVsZWFzZTI2LW1haW50Cis3NTA0OSA2NTZkMWQ0MGZlY2JmYzU1OWM1ZjdkYTgxMGQ4ZDhlMzRkMDkxMjcxIHB5M2sKKzc1MDUwIDU5MmJiODI1OWM1NDI3ODA0NWEzYWMxNThlNzJkNTliNTdiZDkzZWEgcmVsZWFzZTMxLW1haW50Cis3NTA1MSAwZjRlOTVmZjg1OWQyY2FjNjAwODRkMzU1ZDczMGQ2YjFiNmU2NTc5IHB5M2sKKzc1MDUyIDI4ZTJjZTAwZjU0NWJmNGU1N2E3YWVhYWM0NGQzY2RjODk1OWI0ZmMgcmVsZWFzZTMxLW1haW50Cis3NTA1NCAzZGVmOTUyYjUxNWMyYjQ1OGQ5NGQyMDRmZjhhZWNmNTE4MmU2MDU3IGxlZ2FjeS10cnVuaworNzUwNTUgMzU2N2U4NzE1N2Q4MzYzMWExNjNhOTFhYjM0ODNjNzc0ZjgzYTFhMSBsZWdhY3ktdHJ1bmsKKzc1MDU2IGUwNzNmYzg4ZGM4OTQ3ZjIxMDE2ZWQwZDU4MTljNjExNTA3Y2VjMzggcmVsZWFzZTI2LW1haW50Cis3NTA1NyA4ZWE5MjFjN2QxMGZhMTIzNzBmNTk5NzE3NTRmNTJjOWE4MjIzNmJkIHB5M2sKKzc1MDU4IGEwNzU2OGM3YTgyYWNhNTI3YWYwYWI5NjNhYTE2OWQwMTFiMzhlMmEgcmVsZWFzZTMxLW1haW50Cis3NTA1OSA1MGIxOGFlOGNlYzQ0OTI3ZTRhZWE5OTNkZGQ2NGIwYTExMGM2MTI3IHB5M2sKKzc1MDYwIDE0OWJlZDIxNzM1ZTA3NGFlMzFjZmFjZjdlZGE5ZmJjMzQxNTlkZmEgcmVsZWFzZTMxLW1haW50Cis3NTA2MSAxYjlmMTRlNWU5ZTUwN2Q3OGU2YjVkODA4YjVlNWExNDYwNTYzZjMwIHB5M2sKKzc1MDYyIDhjYzgyZGM2YmJiMDIzZjFlYzc4NGIyYzAxNDcyMmFlZjVhZmE4OTggcHkzaworNzUwNjMgMjY0NGY1NGUzNjc2M2UzODY2NWQxOTRhMjNmN2MzMWNkOTA2NDMzYiByZWxlYXNlMzEtbWFpbnQKKzc1MDY0IGJhODQxYmEwMGQwNjIyMmQwOWJlZGVjYTE3NmM4YzMzOWUyNmRmODQgcHkzaworNzUwNjUgNzgxZWY5NWNiNzgxODc2Y2ZlMTRiZWQ1ZjdhOTU2NTZmYmJhN2NhMCByZWxlYXNlMzEtbWFpbnQKKzc1MDY2IDJiZmFkZGIxOWMzYTFjNjViYmFmZGQ2MGRlZTFmZjdjYTUyOTg2YWIgbGVnYWN5LXRydW5rCis3NTA2NyAwMGE1Y2YzNzQzMTQ2MjQwMWExZDc2MjdkYjRjM2U2ZTVjYjMxNGVmIHB5M2sKKzc1MDY4IDg1ZTFkZGRlNTY5ZTI2M2FjNDg1YzAxYmNiN2ZkMmU5NTg1NWNiNGYgbGVnYWN5LXRydW5rCis3NTA2OSBlOTkwMjRlZGRmYjQ1YzYzM2I5YjlhOTU3OGVlYTNmOWY3OWYyYTA3IHJlbGVhc2UyNi1tYWludAorNzUwNzAgODlmYTI2NDE3MTVkMzQ5YTk0Mjk1YzI2YmExYTc5NzA0NmIyYmI0MSBsZWdhY3ktdHJ1bmsKKzc1MDcxIGFjYmZjNjliNTVmM2UwZDY0ODA3Y2VkOWM2NmRmYjQ5MGQzOTZkZGQgcmVsZWFzZTI2LW1haW50Cis3NTA3MiAwNzZiMjMzMzUyNjM3ZTIyYzk1MWE4YWJlMGNlMjBiNzY3NzQxZDNjIHB5M2sKKzc1MDczIGJmOWJlZjcwZjdlOGFjNjI5MWQ2ODViMTA3MDA2YjUwYTQ2Y2IwNDUgcmVsZWFzZTMxLW1haW50Cis3NTA3NCAyMDA2YTJmNDgxMmQ3NjdmNjllZjdjZmMwZjk2ODU5MGVjMTMxOWNhIHB5M2sKKzc1MDc1IGYzYzU5NTIxNGFiYzQwMDYxZDgyN2MxMmQ2M2RiNWVmODliOTdhZWIgcmVsZWFzZTMxLW1haW50Cis3NTA3NiA3MzkxNDM2ZDhhNzQ4OWQ0NjFiMjc4YWM5NWVlZmQ0Mzk1YzcyMjdjIGxlZ2FjeS10cnVuaworNzUwNzggZGQ0NTY0OTY5MDljZDRjY2FlZjNkN2Y2NjYzYzAzZTU5NTcyNWFkMSBweTNrCis3NTA3OSBiMDUwZWE3YmFmNDBkZWJjOTRhYzFkNjMzM2JiYWMxMTQxYTE4OGUwIHB5M2sKKzc1MDgwIDdlZTE0MGI3ZWY5M2JhZmRhY2E4ZGZiNTM0MjY2NjUxNDE2MTFhYzkgcHkzaworNzUwODIgMDQ1M2QxOGM2M2E0ZTg1ODE3NmU5MzM5MjNkZDRmNTI4YzRhZGI0MiBweTNrCis3NTA4MyBkNjg4OWRhMDY1MmM3Zjg2YmIzODM3YWU0MzQzOTQ1NTc2YzQ1NGFiIHJlbGVhc2UyNi1tYWludAorNzUwODQgNTQ2MTAxYTY2NzdjODRlMzM5N2ZiNmJhNDJhZjVlYzU4NGFjZjAxMCBsZWdhY3ktdHJ1bmsKKzc1MDg1IGIwZTk2MTliMzFkOGQwYTFkODcyNzI2MWI0ZDUzNmEzZDkwOGQ0M2EgcmVsZWFzZTI2LW1haW50Cis3NTA4NiBmY2IzMWJlMjEzNmQ2NGQwNDZhNTQ4OTE3M2I5MmY3YmFjNjFhZWU3IHB5M2sKKzc1MDg3IGMwZDk1NjI1ZjE3ZGU3OGZkZDc0NjU4Y2M2MmQ5YTAzYTQ4YjVlYWIgcmVsZWFzZTI2LW1haW50Cis3NTA4OSAxYTY1ZGRkN2Q5ZTE1MWRmMTNlN2YyN2I3ZDExNGM5MzRlNTkzMTZmIHJlbGVhc2UyNi1tYWludAorNzUwOTAgZjNmYTM5NjdmNDQ2NDFmNTg5YTBkYjYxOWNkMzg5NzQ0ZWUwOTUwYSBweTNrCis3NTA5MSAzZGVjM2I3N2I3ODc1YmMzNzFhZWFmNGQwMTA5ZGY4Zjk5ZWFjODI1IGxlZ2FjeS10cnVuaworNzUwOTIgYTA0MTA4NGMxZmRkNjYyNzBkODYwYmUxZTMyMzg0M2M1MGMzMzg1OCByZWxlYXNlMjYtbWFpbnQKKzc1MDkzIDkxMGRhNTQ1ZTE3YmM1ZjFhNDQxMGJjMjllYTc4OTJmYzNhYTc5ZjcgcHkzaworNzUwOTQgN2QwMjZmNzA2NDUwZDk4MDNkNGZiYWRjMDEwZGY1ODE2MmIyYWIwYyByZWxlYXNlMzEtbWFpbnQKKzc1MDk1IGJiOGI3NzBjZTg5MGU5MWJkZmYzZTU2Mjg3Mjc4ZWRhYWY2ZDViZWEgbGVnYWN5LXRydW5rCis3NTA5OCBmMDRhMWYyMDIzZWNiNjg4MWJmMTVkNjkxMzY3MGI2ZWRhMTg3MGEyIGxlZ2FjeS10cnVuaworNzUxMDAgZGViYjI0NWViYjQwMThkMThiODNjZDA3MTAyNGI0NDRkYTA0OTk4YyBweTNrCis3NTEwMiBjNzY2NzRjMmQ3NGQwMzlmOTE2ZmQ1N2I3MDNkZGViZDQ1ZjJkOGEyIGxlZ2FjeS10cnVuaworNzUxMDMgZTk1MjE4NjA1MzAwZWQwNjRkYzhlNTlkNzRkZGJiYzFkM2Y4ZGE5NiBsZWdhY3ktdHJ1bmsKKzc1MTA0IGFiNDllMGFjOGM4ZjEzMWUyYzNkNWNiN2FkN2Q1OWRiNDA3MjYxYmIgbGVnYWN5LXRydW5rCis3NTEwNSBiNmFmZjdhNTk4MDMwMDlkOGZmYzlmYjBhY2I1NmQ5ODZkYWY5ZTE3IHB5M2sKKzc1MTA2IDk0NTcyOTQ5YzFjYTRiZGUxMzM4MTc4YTg5Yjc4NWMyYzhlMTVhOWUgbGVnYWN5LXRydW5rCis3NTEwNyBkMTA4ZmU3N2MwNmMyNTZjZWVhZTg5MmNhZDMyZjIyZjE5ZWY2MGZlIHB5M2sKKzc1MTA4IDcwMTNlMzY1MTFhOGNlZGVmYjgxZWI5ZTViMjE3ODEwZWRkYTE4NTggcHkzaworNzUxMDkgODkyNzcxOGMxOThmZjdiN2E5ZjY1Y2E2NzY5NTE3NTQ2ZWE3Mzk0NyBweTNrCis3NTExMCAzYWI0NjRmZDVlMDFhNWRkZGE2ZWJhNjg3Yjg4ZGI1MmE4OTU4NjEwIGxlZ2FjeS10cnVuaworNzUxMTEgNTIzMWVjNTEyYzdhZmQwNGExZTU2Njg4ODMxODllMzYxOTkxOWRhOCBsZWdhY3ktdHJ1bmsKKzc1MTEyIGNmOTBhYTU3YjIwYmMzNjc1MjE2OTU4YTExYWQzZTRiNGQ5NDEyODMgcmVsZWFzZTI2LW1haW50Cis3NTExMyA5OWUzNmY0N2NhMGY3NjZmNDExMDFiM2MwYmIyYmJhY2Y2NjMyYWIyIHB5M2sKKzc1MTE0IDRlYzkxNWE1YmI0ZTBjZmM4MDhmZmZjYWZlYTAxZDE1ZjczNjVhMWMgcmVsZWFzZTMxLW1haW50Cis3NTExNSA3ZjY5NWRkNjRmOTAxZDMyZjJlZDVlNTY1YjgxMjI5YWViMDFmOTQzIGxlZ2FjeS10cnVuaworNzUxMTYgNTZiNTMwMDI5YmFjZjZhYjI4ZTg1YTAwZDIwMDRjZmMzNmE0MmJhOSByZWxlYXNlMjYtbWFpbnQKKzc1MTE3IGI1MGRkMTdkZmUyNjJhNDcyNWY0YWUzZTZlNDcwYTFmZDQwMGQzNWUgbGVnYWN5LXRydW5rCis3NTExOCA1MGMzMGE4Mjg0ZmJiNGNlNGNhYjIwYjk0NDI0MjEzODdlYTIxNzdlIHB5M2sKKzc1MTE5IDQ3YjgyZmJkYzJiYjFlMDBmMDM2OTY3ZTUxMjRiMGE0YmRkNzk0ZDkgcHkzaworNzUxMjAgMjAxMjRlYjg4MTFiYmZjODU2YzJhOGNhNjJmMmE5M2U2ZjIzMzc4NyByZWxlYXNlMjYtbWFpbnQKKzc1MTIxIGI5ODViY2RiOGI5MTRiM2NhZDRlNzRmYjQwMDk1MzA5ZDBhYmViYjggcmVsZWFzZTMxLW1haW50Cis3NTEyMiA4MjUwMjE4MjU0NjM5MGVhYWFiY2U5MjY3ZjNhMDcyYzdhMzk0MTYzIHJlbGVhc2UyNi1tYWludAorNzUxMjMgZWViZjNkNTFkM2E0NmYzNTgyZWQ0N2IzMmFmNWQwZWNkYmNkMDc1MSBsZWdhY3ktdHJ1bmsKKzc1MTI0IGVlOWE1NTFhODc1ZWQ0ZmU2ZDVjZTRiYjliNGNiZGY1YjRmNjRiYTQgcmVsZWFzZTI2LW1haW50Cis3NTEyNSBjNjNlMDYzODdiOGZjZGY2YTFlMjhlYjY0MjY0YTZjNjZlMzg2ZjRjIHB5M2sKKzc1MTI2IDc0YjE4YTI2N2NkNzUyYWRhM2IzZGI0ZWZkZmUyZDUyY2U3ZTUxZTYgcmVsZWFzZTMxLW1haW50Cis3NTEyNyBlZGQ5YTVlM2NhZmI2ZjA5NmUxYTI2NjAzYmY3MjcwYmEyNzQ4NjdmIHJlbGVhc2UyNS1tYWludAorNzUxMjggMzU3N2FmNTEyZGY1NzMwMzNmNWI4ZTE4ZmU4MzQ3YWQyNjM2ZGYxOSBweTNrCis3NTEyOSBmMjZiODAyYzAwM2U1YzAwMzU0MDc0NmU4NDFiN2ZiMjdkMDg4ZDc4IGxlZ2FjeS10cnVuaworNzUxMzAgYThkMGU3NjRlMzRiMWNhMmVkY2I0NWZlMWM3YWFhYzM0Yzc3MzBmNSByZWxlYXNlMjYtbWFpbnQKKzc1MTMxIGU1YjgxMjEyZmRmZDcxNzY5ZjQxMmZhZmQ1NGJhYTg4M2IzOGJlODQgbGVnYWN5LXRydW5rCis3NTEzMiA5ODY3MDljMjQ1MzE4OTQwNzAxZDFiZmExNzYzMThmNWZkOThiNmJkIHJlbGVhc2UyNi1tYWludAorNzUxMzMgNGQ3NDczNDQ5NWNmZDY2ODdkMTE5MzViOTEyMzZkODllNzU5YjI4MSBweTNrCis3NTEzNCBlMGYyMzQxMTZhYjE0OTgzNTY5Mjk0ZWZjYWYzZDEzYTBkYjI1MjgxIGxlZ2FjeS10cnVuaworNzUxMzUgMmUyYzE0MmJiZWFhOTlhYzE3M2M4ZDg0Y2Q2MWJiNTFmYjFkZDZjNiByZWxlYXNlMjYtbWFpbnQKKzc1MTM2IDE4NDM4ODZiMmIxZDg2MGIwOGNmOTZiZjhlMzQ2MmI4ODY1NjFkYTYgcmVsZWFzZTI2LW1haW50Cis3NTEzNyAxZjczNjFjNzQyMzRjNWNjYzI0NGJiMDE1MjY3Mjk2MDAxY2VjOWIxIHB5M2sKKzc1MTM4IGU3MmE3M2FkN2UyOTRjYmVmZmExZjVjNWI5MGE4ODY3OWVlZjYyZDMgcmVsZWFzZTI2LW1haW50Cis3NTEzOSA4ZTliZGM2YTEwMGZhMDg2YmQ0NjZmYmE2ZjJhYzYyYzMwYmIyOTJkIGxlZ2FjeS10cnVuaworNzUxNDAgMTlhNGE2MjNkOGI3MDQ0YzJiMWI5ZTI1MWIyYzhiMDhhNDI0MjRmYyByZWxlYXNlMzEtbWFpbnQKKzc1MTQxIDkxZjlkZjUzNjdjMWE1ZjFjNjE0NmNmODRlOTZkYjM5MTcxZjVhNzAgbGVnYWN5LXRydW5rCis3NTE0MiBhMTdjZDlmY2RkNDY5ZWQxZjM4NTA5MmNkODA4MTQ2YmYxZjIwNjBiIHJlbGVhc2UzMS1tYWludAorNzUxNDMgMWVhMDNmODZlMDgxM2RkODBlNTlmMGE2NzU1MmIyZjVhOGQxMTU1NyBsZWdhY3ktdHJ1bmsKKzc1MTQ0IDdlMTg1NjE2N2M0YTgyZWMxNzU0MDI5OGNjODI1ODNlNThlNzQwMDIgcmVsZWFzZTI2LW1haW50Cis3NTE0NSBiYTE5NjYyZWIyMjFiODNlNjM4MThlZTRiMTNhMTQyZjMzMTRkMjgzIHB5M2sKKzc1MTQ2IDA4ZTU5MDc2ZDg2YjJjYWUwZGZlMjdjZjU1OTBmYjkzZTgxNjBhNTAgcmVsZWFzZTMxLW1haW50Cis3NTE0NyBmOTliY2E2YWIwZGNjODVlNzhhNGZjMDk1OTNjN2NiMzI0MTFiM2FmIGxlZ2FjeS10cnVuaworNzUxNDggZGFkNzQ1M2QwZDA4NjJiYjczMDI1NTM3ODhmODViNGUxYzMxMzYzNyByZWxlYXNlMjYtbWFpbnQKKzc1MTQ5IGRmNThmZjJkZTA5YmEyMTg1YzIxMTlmMjY0YjYzOGU5NzljN2QyNTMgbGVnYWN5LXRydW5rCis3NTE1MCA2NzE2YzVmOGM2MGQ1Y2U1NDYwMzRhNTRhODM0MzI4NTM1ODUzOTA1IHJlbGVhc2UyNi1tYWludAorNzUxNTEgMTg3MzU0MmMwMDAwMGM0YjdjZTJjNzk5MmQxZjJkODdmODY2MjMyYSByZWxlYXNlMjYtbWFpbnQKKzc1MTUyIDBlZmZkYjM5YzQ3YjdhMDdiMTk5N2E1ZGJiNWJlZTY2NzY2MTNlM2YgcmVsZWFzZTI2LW1haW50Cis3NTE1NCA3YmNhZjA2NGUyNDA1Njc0ZDhiNTZlMGI0ZWNiZjE4NjUwMjI1OTk5IHJlbGVhc2UyNi1tYWludAorNzUxNTUgNWFjYWU0NmFmODQzZmE4YzNhZDkxMjcxYTQxYjBkMGJkZTMyZGRjNyByZWxlYXNlMjYtbWFpbnQKKzc1MTU2IGQ5MTIwOWQ4MjUxZGU2MDUzMGMwNjZhNTZmNDQ5NzQxMmViNDU0ZjggcmVsZWFzZTI2LW1haW50Cis3NTE1NyA1ZjI0NWRhNzJhZWJiNGQyNzdmZWE0NGIzYmUwYmM0MzU1ZTA1MjYzIGxlZ2FjeS10cnVuaworNzUxNTggMWMwMTZmMGU5NGJhYzFmNjQyOTBmOWIyY2Q4NjkxZGRmMWUyZWVmNCBweTNrCis3NTE2MCAxNmM5ODVkYWFlYjA5ZDY1M2I2NGNmZWI3NmQ0ODRmODk5NDdjZjUyIHJlbGVhc2UzMS1tYWludAorNzUxNjEgZTdlNDUyNDQ5YTVlYWM5YThhY2NiYmZjYTc1NTAxODNkMWIzMzkzZiBweTNrCis3NTE2MiA3MDNkZTU1ZTAwYjg1ZDY3ZWUwNGQ3MzhhZDE0Mzk1MzE5MDRmMjEyIHJlbGVhc2UzMS1tYWludAorNzUxNjMgMDg0NTgwYTM0OWI3MTEzNzg2NTc2MjE1ZmJmZjRiNWNiOTFkNzY4NSBweTNrCis3NTE2NCAzMzliODIzMjFmOGVmNjM5YTFjYjQ4ZjQwM2I2NTBjYjIxZTVjZWZkIGxlZ2FjeS10cnVuaworNzUxNjUgM2UyODgxNmFhMGEyMzI1YTcyN2VmNjFiYmExNWNiNTg5YjUzODJjYyBsZWdhY3ktdHJ1bmsKKzc1MTY2IDgwN2IwZDU5NzMxNGIyZjQ0YjU1ZjcxMDlmMjA0YmVlMDBkNzQ1MTcgbGVnYWN5LXRydW5rCis3NTE2NyA5MjE3YmQwY2MzZmNkNTAzODAzNDJjMzMxM2EyMjEwMzRlOWE4YTg1IHB5M2sKKzc1MTY4IDEwNjQ1NTUyMzdlMjE4Y2ZkMzlmMDk2ZTAzMTgxM2MwMTdjYmQ1MjcgcHkzaworNzUxNjkgZTFkNjk1MWJmMzlkN2RmY2RhNjBhYWZjZmZmZWFlZWI4YjA1NjlmYiByZWxlYXNlMzEtbWFpbnQKKzc1MTcwIDVlYzE1ZGExZmM0MjIwNWExZTEzZTE5YzBmMzdiNDViOTBlMzA3YTIgcmVsZWFzZTMxLW1haW50Cis3NTE3MSAxMTdiMzA4YmUzMjE0MzZiNmJhOTE5YTkwMTFjODMzOGM4NDc3NDUwIGxlZ2FjeS10cnVuaworNzUxNzIgY2UyMTRlZTQxMTY0OTI4YTMwYjY2ZGRlZmI0ZTFhMDhhOWU4YmI0YSByZWxlYXNlMjYtbWFpbnQKKzc1MTczIDE3MDBhNzg5NzNjZDgxNDZiMGI4MmVjZTE5MWZkMWYzNTZmZDM5NDEgcHkzaworNzUxNzQgMmM3YjFkNWM4YjY1YjFjZWMxZTI5ZWJjMzI1Nzk0YzMzMzQyNTcwZiBweTNrCis3NTE3NSBkYzM1MDBkMzllZjE0ODk5MTgxYjMwMGY2ZmI1ZTQ2MGI3MmJhODM2IGxlZ2FjeS10cnVuaworNzUxNzYgZmU4YjliNzNkOWFmMGQ0ZDZmNGNkMjk2M2QzODljZGUwYzZhNzc0MSByZWxlYXNlMzEtbWFpbnQKKzc1MTc3IGUzMDRkOWYzNGQxNTI4NzA1MzBiMmQ4MTA5ODRiNzM4YmE3MGFjOGQgcHkzaworNzUxNzggZmU5NjRiM2M5NjYyYzc3MmVlNDBjMzc4NzRlYzZkNTY1ZDI2NTYxYyByZWxlYXNlMzEtbWFpbnQKKzc1MTc5IDlmMTk4YjBmMzY3ZmJhMDRkYWMzNjFiYTBhM2E1ZTRiYzMxYzI2YzMgcmVsZWFzZTMxLW1haW50Cis3NTE4MCBlNmE1ZWJlNWFlZGQ4ZWUzMDJiZDQyM2NkNGNkYjJhOTI2ZTg2ZjM0IGxlZ2FjeS10cnVuaworNzUxODEgNzgzZTZjYzJhYjYyMzUxOTZiOTI3MDUwYjZhYTliNWNjOTIxMmRjOSBsZWdhY3ktdHJ1bmsKKzc1MTgzIDAwYzMzOTZkN2E4YzRhYjRjMmM4NDFkNjEwMTNhMDczYWU5MjFkMGYgcmVsZWFzZTI2LW1haW50Cis3NTE4NCA4ZTdhNjkyNzg3OTgxNTg4NzMyZjY1MGFjMmZjYWE1MDM3MmEwYzJhIHJlbGVhc2UyNi1tYWludAorNzUxODcgYzg1MGNlOTc3YmI5ODJkNzI1MWQzZjdmYTQ3MzBiZTRjZmI1ZjZhMiByZWxlYXNlMjYtbWFpbnQKKzc1MTkxIDRjNTk5ODNiYjA1Nzk2NjU3MDYxNmMyYzNmZDIwOTU0YzI2ZjljNmIgcmVsZWFzZTI2LW1haW50Cis3NTE5MiBjMmM5MGQxZjNjMzNlYzY5NzI0ZTY5ZjgzMmQ0YzM0YTVjZjZmMTA1IGxlZ2FjeS10cnVuaworNzUxOTMgNzI5MDE0MGNkMzMwMjcwNDQ0NDBhNjNiMWQ1NmI4MjBhOWQwNjAwOSByZWxlYXNlMjYtbWFpbnQKKzc1MTk0IGM0MTE5Mjg2ZmFhNzVkN2RlOWUyMWQxMDc3YzZjM2E3ZWM2YmRiZTUgcHkzaworNzUxOTUgOWIxZWI1ZTc1ZTE1OWU3ZTdlZDNlM2Y5ODUzNjY5OTQ4M2YwNjhkNCByZWxlYXNlMzEtbWFpbnQKKzc1MTk2IDdkN2Y5NzgzYzg2ZGIxNDkzZjM1NjA0Mzg5NWQ4OGRhOTgzYzdlMmYgbGVnYWN5LXRydW5rCis3NTE5NyA2NzQwOWJjOTlmYTJiY2YwMDAxNDBjYTAzZmE5ZjVkNGVhYTUyMTMzIHJlbGVhc2UyNi1tYWludAorNzUxOTggNzdlZTIyMDY4NmNjNTAyYmIwMjk1OWI5MTQ2Y2EwYzgzOTU3OGIzMCBweTNrCis3NTE5OSAyNzVkNjBmOTNkM2M1ZjYxOTA4ZThkN2QzNWZlYTkyMDEyNzQzMWEwIHJlbGVhc2UyNi1tYWludAorNzUyMDIgNDMxMzUwZjIxZDg3ZTlkOGVjNzBjNmY1YWM2NWMzMjNmYmFlNzBhZiByZWxlYXNlMjYtbWFpbnQKKzc1MjAzIDkxMzBmZTljNThiZjk3ZGY4ZDQzZmQyMzM2NGFmMDU2YmYyYTcwYjEgcmVsZWFzZTI2LW1haW50Cis3NTIwNCBmYzc0ZDUxYTY3OTc0MWE5ZDUzNmMwYWE1ZDQ4OGU3YTM0ZmY5NDdhIHJlbGVhc2UyNi1tYWludAorNzUyMDUgZDQxMzYwOTBhYzM0ZjkxZWRhMTFlN2UzNGQ5MzNjZjYwNGFmNTcwNCBsZWdhY3ktdHJ1bmsKKzc1MjA2IDI1Y2ZiNzBiY2Q1ZTlkZDA4Y2YwZTU5MGRmNDU3NjU1ZjEzZjkzNGEgcmVsZWFzZTI2LW1haW50Cis3NTIwNyAzZWUwNGVhOWNjNmUyZjczMWY3NTEzZjJhNWRlNzI3ODg4YTBiZTkyIHB5M2sKKzc1MjA4IDk0NmNlY2FmNjRjMWYxZDA3N2Y2NmMwMjBmNjUzN2Y4NzNjNzk5MzMgcmVsZWFzZTMxLW1haW50Cis3NTIwOSA1Mzg0YzhlZTRhMjZjZTAxZTc3MDRhZjM5ZGI4YWYzZmU3ZjJmYmQ3IGxlZ2FjeS10cnVuaworNzUyMTAgMzliOTk5NGU4NjY5M2IzNTFkMmMzZWY5YWMyYWY1ZjJiYzZmY2EwMyBweTNrCis3NTIxMSAyOGZiY2M3OWMyMGE5M2M2YTY1Mjk5MGMxZmUzNDQwZGIzOTJlMzU4IHJlbGVhc2UyNi1tYWludAorNzUyMTIgNmQwZGZlM2ExM2NhMThhYjM0YjUzZGQ2M2Y0MmQ1MjkwMmRhOTBhMyBweTNrCis3NTIxNCA4NDlmYjI3YzU1OTQ2NjI0NGJlMmMzODNmYThhZWQxNmQ2NWNmNDRhIHB5M2sKKzc1MjE1IDUyMjdlYWJkYmI2NDc1ODYwOGI1MWI4ZTQxOGUwNTkzOGQzMWNmNDUgcmVsZWFzZTMxLW1haW50Cis3NTIxNiA1M2YxN2NjN2JmZjY3YzZjMGM4ZWUzNjA5YjFkMzgwNzExNmI5MzQ2IHB5M2sKKzc1MjE3IGQ1NDkzNjZkZDIxOGIzMjQwYzNhYmFmM2Q4ZWQ0OTc2YzE5MWFkMmMgcmVsZWFzZTMxLW1haW50Cis3NTIxOCAxNTBjZGFlYTU4ZWM2OTE2YWM1MTlkMDkzMzdiM2QzZTZkYmNiMjQ3IHJlbGVhc2UzMS1tYWludAorNzUyMjAgNmNmZjY4MmEzMDk4MWZlMjAzMzUzODE2NDQ2ZDA2Nzk4YThiNWUxOCBweTNrCis3NTIyMSA1YzBhNzgwMDIxNWE2NzQzYmYxN2JmY2M0Yjc5MmUxOTYwNzNkZWJlIHJlbGVhc2UzMS1tYWludAorNzUyMjMgY2NlYjYyZWIxY2YxODMyYjI3NjJiZGZlYWY3YzlmMWVjNWFjODYyNCBsZWdhY3ktdHJ1bmsKKzc1MjI0IDQ1ZmNlMzEwZDQ3OTJjYzNmOWFkMzM2MTE4NjUyZTg2NjUwZjQxNjcgcHkzaworNzUyMjYgNGY0OWJkMmU3YzU4ZDI5ODQ5ZDIzN2ZhZTY4MGZkODY0ZDA0M2JjYSByZWxlYXNlMzEtbWFpbnQKKzc1MjI4IDIxOGNkZDZjNjg0Mjg1ZDgyYjhiMDgzYTQ4MDI4NTc0YWJhMTM4MTYgcmVsZWFzZTI2LW1haW50Cis3NTIyOSBkNWQ4Y2I5OGViMmFlZWEwOWQ5ODUzMGFhY2Q1OTU0ODUwNjUyZmNlIHJlbGVhc2UyNi1tYWludAorNzUyMzAgZjQwNTZmOGZlZWMyNmJkMjkyNTM2ZGY2MThlZmFhZDgwOTUzNTJlZSBsZWdhY3ktdHJ1bmsKKzc1MjMxIDQxYmI1ZTJkYzk0N2FjM2Y3YzRhZjk0NmMwMWExNGUwYjBhZDA2N2IgcHkzaworNzUyMzIgYzliZDYyZWZlNmNlNTUyNGUxNzRkMTA2M2QxNjViOGM5YmUwYjM2MyByZWxlYXNlMzEtbWFpbnQKKzc1MjMzIGJlYzJlNDQ1ZTIyNGI2NWEwZGYxMjFkNjFmOTk5ZTgwZDRiMzEyMGMgcHkzaworNzUyMzQgNWJjZTNhNTliZmQyYzVlZmM3YmE4ZmM3MWJmNzllY2VmZDE0YzlhYiByZWxlYXNlMzEtbWFpbnQKKzc1MjM2IGJiMmExMjNjZGQ3YmIyYWY1ODAxOTIxZDgzNTMzYjBjNDhiMWUwNDkgbGVnYWN5LXRydW5rCis3NTIzNyAzMjFjMjIwN2Q1ZjhmYTk0NWI1MjkxN2Q0YTg0NTliYmUxMDc3NDJkIHJlbGVhc2UyNi1tYWludAorNzUyMzggOTE5YTI3ZGRiNGEzMjExODZiMTMzNDVhMzU4OTIyMzJlOWIxYjZjMSBweTNrCis3NTIzOSAwNTM4OTAxNGJmNDQ0OWNkYTA2MjVjZTJhNGIyNjRlYjBhOTcwZWZmIHJlbGVhc2UzMS1tYWludAorNzUyNDAgYTJjYWJiMzYyNTdmM2JjMDEzMDVmOTVkOGMwMzJkMzUzYjYzYzYwMSByZWxlYXNlMjYtbWFpbnQKKzc1MjQxIGMyMTlmNzI2MWQ5ODYzNTYzMTE2ZDU0NDdkYzY3NzZmM2ZlOGFhY2UgcHkzaworNzUyNDIgOTIyYzExMjJjOTI1YjZhZTU2MmYxOGZlNzIwYTk5MDdhMWRkNGM4NCBweTNrCis3NTI0MyA4ZGJiMGZjMzk5OGFkMDg5MDQyNDE1NTI0YjdlY2VjMjlmNWYwZDgzIHB5M2sKKzc1MjQ0IGM4Mjc3MTBiY2RmZGIyZjYxYzQxOGVjNzQ0YmMzYmM5ZWNiYjU0ODYgcHkzaworNzUyNDUgMTM4YzdmYzE5YjVkNmVlYzRmYzM0MGNiNjRkZjk2OGYwMDBjOWUzNyBweTNrCis3NTI0NiAyYjdlMGVhYWM2NGVkZDQwMDBhM2Y2YzQ0ZDM5YTY0NTVkOThlYzdhIHB5M2sKKzc1MjQ3IDJlNGQ3YTQwYzJkZDdlMTMzYjcxYTk4Nzk3NDc5OTZhN2I5ZGUyM2QgcmVsZWFzZTMxLW1haW50Cis3NTI0OCBiMGI5ZTU5MjhkYTk5ZGRkYTJiNzVjNzRjNGM2NmNkZTgyZDIwOTY3IHB5M2sKKzc1MjQ5IDZiMjNiMGViYTQwNTE2NWEwYjFhMmRjOWI2N2RkNzhmNmM1ZDAzMWMgcmVsZWFzZTMxLW1haW50Cis3NTI1MCA3YWE0YTQyMTE1MmY5MjRlMTFmMTA3MjFjYTMxMDFiYjI4ZTVmNDg2IHJlbGVhc2UyNi1tYWludAorNzUyNTEgMzhiZTI2MzkwMzU1MDA0YjYxYTVjMDIwZDY3MzQzOTA2Mzg5MjRhNyByZWxlYXNlMjYtbWFpbnQKKzc1MjUyIDQ5MDE5MGNiNGE1NzcyMjg2NzMzNDZkZDY1ZTE5NzVlNjk2ODk1OTEgcmVsZWFzZTI2LW1haW50Cis3NTI1MyAyNzhjZjVjOGYxZmE5N2MyNjY4YzkzOTEyZjMzNjg0ZWRjODQ0MGRlIHJlbGVhc2UyNi1tYWludAorNzUyNTQgZDUyNTBkYTAwNWNhNzM5ZjJlYTg2OGYzY2QyODkwMDM5NmZiMDRiMCByZWxlYXNlMjYtbWFpbnQKKzc1MjU1IDk3NGMwM2M5ODg4NDgwNmNmZDM4NGMyNmRiNjA3ZmU1YmEyYmNkYjEgbGVnYWN5LXRydW5rCis3NTI1NiAyOWMwMTk2YjFiZGQ3YjUxNzYwYzEyNmZiM2E3MDg3MGE3MjU4YzI4IHJlbGVhc2UyNi1tYWludAorNzUyNTcgYTAxZjQxM2VhMDhiNmQ5MTdiNTdmN2EwYzBmMDJkNDc4ZGNjMmI5NiBwZXAzNzAKKzc1MjU4IGI0ZDFiZTcxMDJiMzFiMDExMzdjZjE3MjdiODU4YjQyNjE2Y2JmYWMgbGVnYWN5LXRydW5rCis3NTI1OSBmN2VlYTYyYjA4YjA1YTNiOTJhOWRmN2FlY2QxZGFkN2YyNDg3YTg3IHB5M2sKKzc1MjYwIGVlOTAyMDE2MjQzYTI5ZTc3ZGQyZTZkYWFkNTFmZDNiYzEyYTJmNTggbGVnYWN5LXRydW5rCis3NTI2MSA5ODdlNTk2Y2Y1NzM3M2U5ZmMzMTE2YWYxMzRhNzJhNzFkOGNmYmEzIGxlZ2FjeS10cnVuaworNzUyNjIgMWM3ZjJiOWExNjc4MmMwNmM1MTA1NGQ3NTdiOGE3NTAwNjgzODMzMiBsZWdhY3ktdHJ1bmsKKzc1MjYzIDJmYTlmZmU2ZDE0NTFkN2ZlZGVkZmQzOGIxMjQwYjVkMWYwMGY5ZWUgbGVnYWN5LXRydW5rCis3NTI2NCBkMmY5NTkxMTU0Mjg2ZTU0ZjIxMjQzY2QzMmI3YzAzZDlmZTQ2YzgzIGxlZ2FjeS10cnVuaworNzUyNjUgYTEyZTcwMWQ5N2NhYzc4N2YxNWU1ZjQ5MzNiMWE4ZjU2ZDRiOWZkNyBsZWdhY3ktdHJ1bmsKKzc1MjY2IGE0NTk1MDcyNmJkZmJhZGJlZTE1NWVkYjgwNWQ3MzNlMjAzY2ZiMWYgbGVnYWN5LXRydW5rCis3NTI2NyBhNmU3ZWQ1MmRmOWIzMTdlNmFjODgwYTJiNmExYjZmMTlhZDM2MjQ2IGxlZ2FjeS10cnVuaworNzUyNjggYzlkOWI3ZDA5NDIyZjdhNmE5MjAyMTA4MWY4MDAzYTliZmVjZTI4YyBsZWdhY3ktdHJ1bmsKKzc1MjY5IGE0YTMyNGMyYTAwYzc4MDg0ZWFkZGQwMDNiNjU2ZTM2NmM2ODA0NjcgcmVsZWFzZTI2LW1haW50Cis3NTI3MCAyNWFhOTBhNjg2NWI2MzEzMzk2MmRkNjQ2MjZjNTNjN2I2ZmQ0N2Q1IHJlbGVhc2UyNi1tYWludAorNzUyNzEgNDMzZjcyN2U1ZTgyM2YwMGQxMDIzYjQzOTAyZWJiMzhmYzJmOTIyZCByZWxlYXNlMjYtbWFpbnQKKzc1MjcyIGE5ODY0NDE3Mjg2YjkzZDVjYjU2OTQ3MWEyOTgxNjE1MTdkNWQ0MWMgbGVnYWN5LXRydW5rCis3NTI3MyA1ZTNmNmU4ZDZhZTU5NTU5N2M2NGQ1Y2FlYTA3OTQyNTRmYzRiMzViIGxlZ2FjeS10cnVuaworNzUyNzQgNmM5MWQxODAzMTgyNjgxNmE5OTExOWEzOWZjYzRmNGY0ZTY5ZTdkYSBweTNrCis3NTI3NSBjNWEzZDQzMTQ2NzY5ZGEzNjc3MDhjMTFiYzRjNDczOGM5OWUxZGM5IGxlZ2FjeS10cnVuaworNzUyNzYgMzI5NjkzNTI5OWNlNjI3ZDc5MjEwYzYxZjU2OTZiZTZlMDY4OTk3NyBweTNrCis3NTI3NyBkYzA0N2Q5YWJmN2I2Y2Y5MGZkYzEyYmRlODYxN2I5YTAwYmU4ZjBiIHJlbGVhc2UzMS1tYWludAorNzUyNzkgNjE1NWI5NTlmZjcyYmRmNWVmM2NhMGYwZjE5Y2U0NjY2MmE5OTk0YSBweTNrCis3NTI4MCBmOTliM2ZjMDFmYzA2ODk2YzM5MjkyYjQ5NWIwYmJkZmJhMDYxMDFiIHJlbGVhc2UzMS1tYWludAorNzUyODEgYzQ1Y2UyODVmNTUyYjk2M2U0Mjg2MTUyNWZkMTJiYzBjY2YwYTlkOCBsZWdhY3ktdHJ1bmsKKzc1MjgyIGI3ODUyMWFlN2E2MjQ1ZTQ4YmQ1Yzg4MmRiZTU5ZjM3ZjU1OGIwODcgcmVsZWFzZTI2LW1haW50Cis3NTI4MyBlNzU5Y2EyNTcwMWQ5YTY2N2RkYjg3MmJiYTViNTc3N2U3NjZlZjdkIGxlZ2FjeS10cnVuaworNzUyODQgMjQ5YjBiZTc5N2E4MmUyZWRmNjNjNzgzMGU1ZmEzNjcwYmM1NzJmYiBweTNrCis3NTI4NSBkZDk0ZjFkOGM5YTVjYTQ0Njk2MzQ5MDY3MDE3ZmJiZjIzYjFkODM3IHJlbGVhc2UzMS1tYWludAorNzUyODYgNDhhYjJlNjJkZThiYzZiZDM2NWFjMWEwMTQzMTE5YTY1YWIwNjE3OCBsZWdhY3ktdHJ1bmsKKzc1Mjg3IGVmNzM0NjQ0OGI2MDBkZmNlZWI1NGFmMTAwM2QwZjdlMDI1NGQxZjggcHkzaworNzUyODggMzA3MmY5NDBmMzVhMzZiNmQ0OWY1ZTI0ZWYxZmRkNTViODg5YTFiYiByZWxlYXNlMzEtbWFpbnQKKzc1Mjg5IDk2YWZmMmMyYTlhMWQ1YjcyZTBmNGYxZDBjMWVkNzk1OGQwNzhjNWYgbGVnYWN5LXRydW5rCis3NTI5MCBjYjQ5ZjJlYjA0NTc5Zjg3YWZiZWNhNzA5ZDA2ZTc2YmNmMmEwNjM1IHB5M2sKKzc1MjkxIDlmNjMxYTNiYjU0OTNmYWQ5OTgxNzkyOWQ4OTk4MTNmODBiMGViZDAgcmVsZWFzZTMxLW1haW50Cis3NTI5MiBkNzkwMjAyYzE1MWRiMGM2ZmI0MzUyOTg4ZmQ4MTdjZmVmZjU0YmE4IGxlZ2FjeS10cnVuaworNzUyOTMgYWJiYzc5NzU3NWM0MjM3MGE5ZWNlMWJjZGI0NTA2MWM4ZWQxNTVkMiBsZWdhY3ktdHJ1bmsKKzc1Mjk0IGViMGMzOWY2MmRlMTljYzdjMjQ3ZDY0NDkwOThjYzlmZTBiNTQ4NTAgcmVsZWFzZTMxLW1haW50Cis3NTI5NiA1NDU4YzIwYWEwY2Y4Mzk1YmY0ZGI0OWIxYzE5Njg1N2RmZTM1MDk3IHB5M2sKKzc1Mjk3IDk0NmUzYWYwMGIwYjhmMTNiNjhmOTdkODdhZjViMmUzZWI3NmQ1MWQgcHkzaworNzUyOTggMmM2MGU5NDYwNjJlYzBhZmFhMjFkM2JlYTdiNzI0M2Y2MzU5NmJiYiBweTNrCis3NTI5OSAyNWU1MWM1YjA2OTZlODVjNDkwMWI2OTZlZDdhMjQ1ZGM2NmFhOTZiIHB5M2sKKzc1MzAwIDg5NmE0ZmIxM2YzNWM5MWRmZmIwNTRkZjg1ZWVhODJkZTNlOWRlNzUgbGVnYWN5LXRydW5rCis3NTMwMSAxZWM4YzdmYjg4MDdiNWFmY2Y2YzUzNjU0MGE2OGE1ODE1NTg4OThiIGxlZ2FjeS10cnVuaworNzUzMDIgMTJjZDk0ZDM5ODc0NjQ4ZWIwZjNjZmI1MzdjZWRmYzBkZDAwZjIzMSByZWxlYXNlMzEtbWFpbnQKKzc1MzA0IDU3ZWUwNzkzZTQ2MjdiODBjZTEyYjZmZjQwMzRmZWE3YWRjNDVkNzUgbGVnYWN5LXRydW5rCis3NTMwNSA2ODQ5NjBmYjFjYmY2NGU4NTc5NzljYzJhOTY4NWYwNjcxNmJjMTE5IGxlZ2FjeS10cnVuaworNzUzMDYgYWI0MjAzM2ZkZmRiZTVhYjRlMTI2ZWU1ZTFhODA4MWVjMWNlMDIzMSBweTNrCis3NTMwNyA5MWFhMDQ0MTAxMzkwY2VkMzk4YWFkNjFlNzEwMDFhMDY3MGQxNTlhIHB5M2sKKzc1MzA4IDI4MzY5MzllN2M1NDdmZmVkNDA2NDZlMTIyZmYzYWJkMGViMjM2MmIgcmVsZWFzZTMxLW1haW50Cis3NTMwOSAyOTkwOGYyYmM5M2ZkOGNkZWMzNTc0Y2U0NzBhNWFkMDFlZjA1N2JiIHB5M2sKKzc1MzEwIDZkMDkyYTUxZTE4N2U0NTIyZDZiZGU4MzU4NDljYzI2MTUwZjZmMGUgbGVnYWN5LXRydW5rCis3NTMxMCA0ZjkxMzEyZDZlYzJhYjM1ZTdhYjgyMmE4M2RhMDA5MjMwZjEyNGFhIHB5M2sKKzc1MzExIGI1ZWE0NzczYWZmMTAyMWEzNTYxMWJlYTIxZDBlNGJhOTY3NGUzNTUgcHkzaworNzUzMTIgYTJmMDJhMTI1ZmViMGI5NjlkODM4NjRhMGU5NDdmNzlhOTgxNDNhOCBsZWdhY3ktdHJ1bmsKKzc1MzEzIDMyYzM1ZjliMjQ1Yzg3YzBjMDc5Zjg0MWI5ZDdjNWQ1YzZmY2E4YzMgbGVnYWN5LXRydW5rCis3NTMxNCBkNzNmMjIxNWVmYzE5ZjkyMzcyNjhmOGI0NzMzOGQ1OGEzOWM4MGUwIHB5M2sKKzc1MzE1IDMzYjA0MTM1MDAzNDJhZjcwYzI4YjljZDM1NDkwYzFhNTRiZDU3YzMgbGVnYWN5LXRydW5rCis3NTMxNiBlZjMxYjA0ZGU1MDU2MmZmYzQ1MGE2YTFkNDBlMGFlZWY4OGQ3NmFhIHB5M2sKKzc1MzE3IDM5MzFjNzhhZjExNzViM2M3NDI0ZjMzMTNkZjAwY2I5ZjA1ZWRjZWQgcHkzaworNzUzMTggZmY4Yzg2YTI0YjE1OGZiYWUxY2Y0NTQ4NTVmZjU4Yzg2ZjAzNDE0YSBsZWdhY3ktdHJ1bmsKKzc1MzE5IDM1NjE5Y2ZjZDBiNWJmNWE0MzAwMWY2MjEzZmIyZDJmMzM4ZDg0NTggcHkzaworNzUzMjAgMjIwZjdkZWZmYmFmYjU3NjAyYmE3MzVmNDMzYjJlZDA3MDEzM2ZiZCBweTNrCis3NTMyMSA0MmE2YTIyNDk0NzRjYTZiMjBjMTEwNGFhZTg2YmEwNzhkNWYyNTdmIGxlZ2FjeS10cnVuaworNzUzMjIgMzQ5OTlhMWFlYTliMjYxNzYxM2ZjMGViYzE1OWJmMjExZDYwZjdmYiBsZWdhY3ktdHJ1bmsKKzc1MzIzIGJmYTYwZGY3NjkyOTBhMTIzZTM2YmNlZTQyZDBiZjA1YTM1NDE0MWQgcHkzaworNzUzMjQgNDQzMTQ5ZmIzNTc0OGY1Y2RjZmJhODk5YTk3MjZkZjI5MWRmNWQwZSBweTNrCis3NTMyNSA2NTg3ZWE2ZDNlNzg0NWRlZjlhMjNjNTJhMjEyNWI0ODJhYjc1MDhmIGxlZ2FjeS10cnVuaworNzUzMjYgZjMyZmVkYTY1Yzg1NmFlNGFkMjU4NGRkOGMwNzc3NGZkZWUwODJjZCBweTNrCis3NTMyNyA0NTgxNTNkNWQ4MmQ2ZjcxYzdmZThkYjQyMTZlYThlNDhmNjllYjI2IGxlZ2FjeS10cnVuaworNzUzMjggMjE2OGI5ZDQ5ZTNiMTkwOGIyYzEyZmFkYTg1ZGQ1NDZmYWNjM2MyNiBweTNrCis3NTMyOSA1NTk3YmE3MGEzMzZjODY1ZjA2YThhMTkwMmQzMjE2OTczNzlkODA0IGxlZ2FjeS10cnVuaworNzUzMzAgZjc2ZTJlNjM3NzMwMTg5YTRjZjE2MDhlZjRmNDdmMWEyNWY5N2Q3NyBweTNrCis3NTMzMyAyNGU5MmNlZjI2NjQ2MzU5ZmUwMjYxM2M2MDMxY2I5YzFhYzU3Y2JkIGxlZ2FjeS10cnVuaworNzUzMzQgYjk0MmM3MDZlMzM4MTIyOGMyYWY3OWNkYjlhOGIyNTUwMDEyNWY0NCBweTNrCis3NTMzNSA2OTZhY2ViNzYzNWI5OTk2NTU3OGNhNTdhOThmZjRmM2I4ZDNmZjhjIHJlbGVhc2UyNi1tYWludAorNzUzMzYgODY3NjMzMzMwYTkzOGU3NDYzOTk3Zjk1NDI4MDM3ZTMwZDdiYTNjNiByZWxlYXNlMzEtbWFpbnQKKzc1MzM3IDYxOTRmZDc1NDMyMzk4ZjhlNWViZTg5MjFhMDI2YjkwMmViYWYyZjIgbGVnYWN5LXRydW5rCis3NTMzOCA4NmI2ODRjOTY5NDI0YjJlYWU2ZjlkNjUxYTRkMGEzNTE3ZmMzZThlIHB5M2sKKzc1MzM5IDMxMzBiN2U4MTJiMDRlYWYzOTg4NDA2M2Q1Y2Y1ZjUzZTNjMTgzMzUgbGVnYWN5LXRydW5rCis3NTM0MCA4OWI0YmIwYWE1YWNmODM4NjI5ZTYxMDkzZjNlMzYzNGIzY2ExZWFkIHB5M2sKKzc1MzQxIDRkZDA5MDEwMGVjYWZiNWI2OTI4OTQxZDBjMTZlZTNiMTZmZjAwMGMgcHkzaworNzUzNDIgM2VkNjU3MTZkN2FkMjQyYzk5OTZjYjZhMDFmNDg2MGI3MDI3YmVmMiBsZWdhY3ktdHJ1bmsKKzc1MzQzIDVjMzY1YWFiMTBkMWNlMzBmZTc0NTA2NzBlYmQ1NmFlOTgwZWI0ZGMgcHkzaworNzUzNDQgYzEwNWI5OGU2NDlkZTlhNDU4NDNlODM2MzM1ZTIwNjkzMzAxZDg4YyBsZWdhY3ktdHJ1bmsKKzc1MzQ1IDBhZDdmOWM5NTJiMDhjYTEyODkwYjRhZDRiMDM0MzhhYTg3MTlkYjcgcHkzaworNzUzNDYgNGJhMjdkMThkZDkyZGFhZmI3M2IxN2Y5ZmY1OTU1NDc4NTY0NDdjYiBsZWdhY3ktdHJ1bmsKKzc1MzQ3IGJkZThhMzk2MjI4YzJhYWMyMWU0MzljYjJjYjEwNzk4ZThhNDJmNTkgcHkzaworNzUzNDggYTE1YzdkNTBiM2NiNjRlMDE2ZWQyM2UzOGI3ZjEzMmZhY2Q5MzQ5NSBsZWdhY3ktdHJ1bmsKKzc1MzQ5IDM5N2UwMmUwYmU5MzE0YjU0MjEwM2ZkNTZkNDk4YTJhMDRlMzZiMTMgcHkzaworNzUzNTAgY2EwMThlMmJiODY1NGI5YjU5NGY2YTdhNGE0NzFhMjA0MmY2MzNiYiBsZWdhY3ktdHJ1bmsKKzc1MzUxIDUyZDY5NzNjYmQ5NGViMzM0NGIwMzczYzJkNmJhMzEzZWIxYmRhZWIgbGVnYWN5LXRydW5rCis3NTM1MiA1M2M4M2ExMzJlMWVhMjFiYjZjNjZhZTk0YmY0NDI3NDc5ODAyYTMzIHB5M2sKKzc1MzUzIDY5OGUwZTY5Yzc2NTdiMjY5YzBlNGYxMjg2MDdkZWFiYzk0MzU4YTUgcHkzaworNzUzNTQgNmE1ZTBjOTEzYzdjZWJhYWM4ZmE0MTdmMzU2ODc0MDM4NTllODA2NCBsZWdhY3ktdHJ1bmsKKzc1MzU1IDkyMDQwOGU2MDMwMzIxMzM3YjkxM2ExYzM5ZmIxYmVjZGEzMmZkNzAgcHkzaworNzUzNTYgZTQ2MTljZjllNjJjYmUxMjhmOWVhYWIyYzFjZDRjOTkyNWY2YzVkMyBsZWdhY3ktdHJ1bmsKKzc1MzU3IDhlZTQ1MTc5YzUwMzk4N2IwM2IwN2YxYTUxYjdjZjk3MGE5YzU3ZDcgcHkzaworNzUzNTggYTVkN2I1Mjc3OTUxOTNjYzZhYWM2YzFkOTFlYjcwOGVmYmY2NDNjNCBsZWdhY3ktdHJ1bmsKKzc1MzU5IDE1MjFhNjU3YTg1YWQ5YjU2MDE4OTc3YzU1OWIwMDQ4YWM0MTI1YTcgcHkzaworNzUzNjIgMjA1Yjk2ZWZiNzkwMGExMjhlNzMwYzNjNmM4OTJmZTljYjE3ODQyNiBweTNrCis3NTM2MyAzMjAwOGQyM2Y2Y2I0OGExZWRhMGIyN2YxYjFhZjY4OGIwZWE3N2ZkIGxlZ2FjeS10cnVuaworNzUzNjUgOWY3NjUxMThkOWI5NzEzOWQ2ZTY4M2Y4YmY2NjM1N2I4NTg5ZGEyZCBsZWdhY3ktdHJ1bmsKKzc1MzY3IDIyMDA4ZDkzNGU2Mzc1OTJjNDcyN2NiYTkyZjE2NmExOTMyZDg3YTEgbGVnYWN5LXRydW5rCis3NTM2OSA0M2FkNTU0NjE1YjZkMjAwYzYyZmVkNzU2NGVmNjgzNTE0Nzk3M2UwIHB5M2sKKzc1MzcwIDA1MDc0OGNlNWFkOWVhZTI0MjgyZWFhYjY3YzY4YmRhZDgzZGRlMzYgbGVnYWN5LXRydW5rCis3NTM3MSA0YjVkMzk4ZWI4NjY2NDMzZGVmZGY4ZDdhMjM3YzI2YzgyZjhlODM0IGxlZ2FjeS10cnVuaworNzUzNzIgOWEyYzM3YzMyYjdlNzE4MGE3MzE1ZGFhOGNjNDhiZjU5MzcyMGQyZiBsZWdhY3ktdHJ1bmsKKzc1MzczIGNkZGI2MjBmMGNkYTBhZTE0YjMxMWI4MzQ3OGRmZDU1NWY1MGJlYTAgcHkzaworNzUzNzQgMTY4ODQ3OTU1MzI0OTRiZDZlZTAxNzgxNmFkNmQ0OGM2ZTdmNDk4OSBweTNrCis3NTM3NiAzOTIyZTczNGM5YmI3MzJmOWY0ZTRkZjk4Y2U3OWJjNTJmMTgwYjg5IGxlZ2FjeS10cnVuaworNzUzOTAgZjU5ZGE5YzkzNDI1YTlmOWNmNjE3Yzg3Y2FjMDQ4NThhYTVhZWU5ZSByZWxlYXNlMjYtbWFpbnQKKzc1MzkxIDk1YTY5NjQwZWJkM2JkMTc5N2ZhOGJhMmFhMmY3MDFhNzI3NTE3ZDEgbGVnYWN5LXRydW5rCis3NTM5MiA5ZDE3YmI0ZjExNzBmYWIyMTBmNzg3ODgyMzNiMjIxOGY1Njg0MmRhIGxlZ2FjeS10cnVuaworNzUzOTMgMjA5ZTM4MjU0YWU4Yjg3OGQzNDUzNTRmZWYwZGUyOWU5ZTIxMjU3OCBweTNrCis3NTM5NCA5YmQ2YTdhZWUxM2NhODBlODU2OTc5ZWUzOTc5ZmFkMjNjNWU2MTYwIGxlZ2FjeS10cnVuaworNzUzOTUgMmE3NTgzNzE4ZDI1M2ZkNWEwZGEyNmNmOTgwNTgwZjM2NTg5ZDJlZiByZWxlYXNlMjYtbWFpbnQKKzc1Mzk2IDdmZThhODMxM2E1YjJlN2UyMzQyMmVmYWNmOTY3NmZiMzVlYmQ2NGQgbGVnYWN5LXRydW5rCis3NTM5NyBlOGUxMDM0ODhmYjM3ZTMwYjlkZmY4ZjRhODFmNjA3NmMxMjQ2Y2E0IHB5M2sKKzc1NDAwIGJkYmRhN2E5NGMzMzNlMDM2NWRmNjE5MmMzOTQwYTczOTA3ZDg0Y2UgbGVnYWN5LXRydW5rCis3NTQwMSA3NzU2MWNkMzlmZDM5N2JkM2ZhY2UzMmVlZTVhOTZjYmI5NDM2ZTY2IHJlbGVhc2UzMS1tYWludAorNzU0MDIgMDM4NTQ3MzJhNmMyOGU3MzlkNTU0NmYyNGI5YWE3MmUxZTAwNWJkZSBsZWdhY3ktdHJ1bmsKKzc1NDAzIDE4MzQ3NGJiMDIxMzhkYTg4YzNiNDk2YzUyYTdiMWIwYTA1ZGE0Y2EgbGVnYWN5LXRydW5rCis3NTQwNCA2MzUwOGVjNzY4NDBhYTY0ODIwOTg3NTcxYTc4OTVlYWRkMTBjZjBiIHB5M2sKKzc1NDA1IGRjNzVkMTdkZDMwNGE1MDZiZDE1N2U1YzJhNGVhZWZmMzE3Y2FjZTAgbGVnYWN5LXRydW5rCis3NTQwNiA2N2JiMTdjMmU4Njg1MjE5ZmFiM2M3YmZiMjAwYzA2ZTRkZDg1MGMyIHJlbGVhc2UzMS1tYWludAorNzU0MDcgMjQ3ZDVhNWVhZmE1MzQzOTc1Yjk5ZjNlZTk4ZmE0YzFkOTQ1ODE2OCBsZWdhY3ktdHJ1bmsKKzc1NDA4IDU4ZTU3NjMxYmU4Y2I2MzhlZDMxZTRiNDIyOWEwMzZlNDc3YTkyOGQgbGVnYWN5LXRydW5rCis3NTQwOSAzODZhNGQ3YzNjOTljZmE0OTI0M2MzOGM4NWZhNDQ0OWJmZjc4ZDY4IGxlZ2FjeS10cnVuaworNzU0MTAgY2RjZDgwNWVlZTg1ZDY1MDU3MzAyMTEyMmUwNjI1ZmI2ZmY3MjJhMiBsZWdhY3ktdHJ1bmsKKzc1NDExIGU4NTMyY2M4YTE0ZTQ5NzRmOGEzZjI3NGMyYzNlYzdjM2IwNGI5ODkgbGVnYWN5LXRydW5rCis3NTQxMiA5ZTcxOGQ4ZjcxZThmMDE0YTY3NzZiYTJjMWNhYjU3NmQ4ZTcwYjY2IGxlZ2FjeS10cnVuaworNzU0MTMgNGVlMzQzYzRiYzQ5ZDA3ZTNlZTY2NWIxMmM2MDIzNTk5N2M1ZjYwMiBsZWdhY3ktdHJ1bmsKKzc1NDE1IDZkNTBjNGMxYThiMzQ2ZmUwMzY0ZjIzN2ZjMjgwY2FiMWFhYTI3OGQgbGVnYWN5LXRydW5rCis3NTQxNiA1ZGZjNThmMzliOWY1NDIxOTBlNjlkNzBjYTIyN2NkZmVjYzM4YjQ1IHB5M2sKKzc1NDE3IGJmOGM5YmY3MTE1YzkzYTIzMGY5ZmI5ZjMzOGY0OTliMmE1ZGNjMWMgbGVnYWN5LXRydW5rCis3NTQxOCBkMjQyOThkZjJhNjYyMDZiZDAzODU4ZDkzZTczNGMwNmE1MTUwNWFiIGxlZ2FjeS10cnVuaworNzU0MTkgOTMzNTBhY2I1NDI1YmE0ZjAwYjVjZDgwOGM3YzYwNGVlN2E1MDI4MSBsZWdhY3ktdHJ1bmsKKzc1NDIwIDY0ZTE5YTY4OTg4NjE3ZWY1NDVmZDQ1MTgwZDBmODg3MmVhZTE0ZTEgbGVnYWN5LXRydW5rCis3NTQyMSBmZTM4ZDNjMTc4ODhjOGMwZWJlYTEzYjhhYWUxZjFmY2RlMmQyMDdiIGxlZ2FjeS10cnVuaworNzU0MjIgMTZkYjJhOTMyMjQ4OWMzOWViZjJiMDVkN2I2MDZmMzk0ZmIwYWE2NyBweTNrCis3NTQyMyA1MGI3ZjU2ODE0ZjllM2VhM2M2MTBiMWZlYjI2YTU3ZWQxMDNkOTFiIGxlZ2FjeS10cnVuaworNzU0MjQgZDBmMDA1ZTZmYWRkMDY0ZDc1MDMwYTlhZGJhZmIxMmU3YTI2Y2E3ZCBsZWdhY3ktdHJ1bmsKKzc1NDI1IDkwNDRmNjRiMTBhZTA2YjhjMDFhZjNjZDQ3ODZmMmVlMjc0MTQ2NDggcmVsZWFzZTI2LW1haW50Cis3NTQyOSBmYTYxODhjNDdiNjNmYzUyNWQ4MzljODc5NWIyNWQyZjM1NzZhZDAwIGxlZ2FjeS10cnVuaworNzU0MzAgNDViNjI3MjUzNzdhNjEyODU5N2RiY2ZkYzZkOWZmNWU3NGNkZTE2MSBsZWdhY3ktdHJ1bmsKKzc1NDMxIGE0YjE5MjJhMzA3NDkyMTg0YWE0NDY5NGQ5MjhjYjUxYzEyNGQ5MGUgbGVnYWN5LXRydW5rCis3NTQzMiBlMDBjNzg4NjliM2NkMzU2OGQxNzdlYWQyNzEwOWJmMTE4NTJkNmNlIGxlZ2FjeS10cnVuaworNzU0MzMgOTgzZWVmYmY2NjQ5MzQwZTc3ZGIyNTIwMGVjMTk3MjM0MzZiNzM5YyBsZWdhY3ktdHJ1bmsKKzc1NDM0IGU0YTBiODczOWU1YjhhYjdiZjllNGZhNmViZmZmZGE3M2Y0NjdhM2MgbGVnYWN5LXRydW5rCis3NTQzNSAzYjM3YjhkZDc2ZDc1MDI1ZjE0MTI0N2VmNGQ5NTNmY2I2MjE5ZmIxIHB5M2sKKzc1NDM2IGVjNTA4Yzg5YWQzNjgyMDc4Y2U0M2MwN2RkNjVkZDJkZGRkNGM0NzIgbGVnYWN5LXRydW5rCis3NTQzNyAyMGQwOTU0OWI4MmMwYjk5Yjc3MGMxMTQ4MDJkN2Q4Yjg5ZDI1YTkzIGxlZ2FjeS10cnVuaworNzU0MzggMTYxN2MxMTU1NmFmYTI4YzFiY2FiNTQ4MjQ5MGE1ZjNmMWRmYjBkYiBsZWdhY3ktdHJ1bmsKKzc1NDM5IDdlNTg0OTQyMDRjOGY2ZTQzZGRlYjA5YTk2NzQ4YWVjNDc4NDNjMzYgcHkzaworNzU0NDAgMjc1NGQ2NDE4MGQxZGM1NTdkYWIyOTc5YTc5MjU4YTg3MGQ0ZDYwMiBsZWdhY3ktdHJ1bmsKKzc1NDQxIDNiYzZmYjNjMGNjZDA5YTA1MDc0ZmJhMmZhNGU3YjMzNDIxZmQ4NzkgcHkzaworNzU0NDUgZDllNDhhYjYyNTYyYzE0ZjAzYjI1MmJiMTE5Y2YzYjhkODI2YWYzNSBsZWdhY3ktdHJ1bmsKKzc1NDQ1IGQ5NjMwNTE3YzcwYzE5NTA0MjJhYzdlMTIyZmUxMzg5ZmYxYzFmMTUgcHkzaworNzU0NDYgN2ZhMTRiZThhZDczY2IzNTc1NzY2NWQ4MTM4MWUxNzMwZDRkMWM1NiBsZWdhY3ktdHJ1bmsKKzc1NDQ3IDhkZmE4NDNjODM1MDFhMGU1ZGI5ZGFmM2M3NDEyYmY2OGUwOGY0ZWIgcmVsZWFzZTI2LW1haW50Cis3NTQ0OCAyNGQzMjFmZDNkMWEyMGIxNDc0NjQ4ZWIxYjNkNGJkZjIyNDVhMjVkIHB5M2sKKzc1NDUwIDllNDJjYzE5MmE0NDY1OWY0ODJiODc3MGFhYmYzZDJkN2VmNDhiODcgbGVnYWN5LXRydW5rCis3NTQ1MSA3NjAwNDM2ZGIyYTliODY5YjlmMDMwZjRiNjhlMGY3YzhlOTFkNGZjIHB5M2sKKzc1NDUyIDI2YjExZTZmZTVlMzFjNjdlYmZmODhjZmU2OWM0ZGUwYWU4M2M4Y2UgcmVsZWFzZTMxLW1haW50Cis3NTQ1MyAzNjU4YzBhOTU4OTIyYWY5MjZmMzk5NzY3NGZiMWZjN2M3NTdkODFkIGxlZ2FjeS10cnVuaworNzU0NTQgNjI0ZjgxYjVlYzI0Zjc3M2JiMDFmMDc5NDY1ZDhkYzdhYmU1YmNkNyBsZWdhY3ktdHJ1bmsKKzc1NDU1IDdkNzFjNTFmYzMwOGMxYjI2NTNiOWYyM2QzN2M0MWU0NTlhMTc1NDQgcHkzaworNzU0NTYgNWVhNmNkMjgzOWNjN2MxMDI3NmU5YTI3NWMxNmY1MDJkOTlhNzUzNCBsZWdhY3ktdHJ1bmsKKzc1NDU3IDljMDZjNzMwOTc2NTY2YzRlZDlhOTExMWI5ZWFkZmI3YTkwOGIwZjEgbGVnYWN5LXRydW5rCis3NTQ1OCA1Mjk5NTc5ZjU3OWE4NTRhZmI4ZTA3MTczMzIzMDRkY2E3ZTI2YzY5IGxlZ2FjeS10cnVuaworNzU0NTkgNGMxZmY3YjI0ODJlZTE4YTRlOThmMDAzYmNmNTllODY5MjU3NDg5NiBsZWdhY3ktdHJ1bmsKKzc1NDYxIGExMDg4YmI0ZmNmOGE2ZDIxMzQ2N2VmODE4NDA4ZGIwYmQ4MTk3OGYgbGVnYWN5LXRydW5rCis3NTQ2MiAyMDQ4ZDA0ZGVhYjQyYzU1NWI4MzViYTdiNDE5ZDRhMjhkOWMxOTJjIGxlZ2FjeS10cnVuaworNzU0NjMgODE0MzNhNjc2YThiYWZlMWZlMzY1ZjlkYzM4MGIyMmFmZDViOWIwYyBsZWdhY3ktdHJ1bmsKKzc1NDY1IGI4MThhN2E3MGE0Nzc4MTFhMWYxMGE0M2JiY2ZmZTQ0ZWQ1NWM3NGIgbGVnYWN5LXRydW5rCis3NTQ2NiA5ZjA1M2U1NTBjOTc3NjhiMGZhZGY4Mjk1YjAyNDZkM2Q0MzE2NjI2IGxlZ2FjeS10cnVuaworNzU0NjcgOTkzMjA3ZGNlMzk1NWI0MDhmNmE2YTI1MTU4NTE5ZDYwOTg5NDViYiBsZWdhY3ktdHJ1bmsKKzc1NDY4IDAwNzUwNWNjMWUyYzczNTZmNjRhZDVlZmY0ZGFlNmI1NGQ5ZDI4OTUgbGVnYWN5LXRydW5rCis3NTQ3MCBhYzNjNjMyZTFjMTNjMzFjNjYwYjc5MjIzZmY3M2U5OTNjNTBmMDgzIGxlZ2FjeS10cnVuaworNzU0NzEgZTZkZWIxNWM1YWU2YTA2ZmMxZDQ2YTkxYjMyNzQ3ZjdkZjY2MWJlZiBweTNrCis3NTQ3MiAzNTRmYTU2MWFhZGY2Y2RhMTA1NjhjYTU5OGUzYTQxMDdjZTNjYjcyIHB5M2sKKzc1NDczIDQ5ZTNkNGFjNjljNmY5ODBjMzUzNTViMDA1YzgxNzQ4ZjIzOWRlZWMgcmVsZWFzZTMxLW1haW50Cis3NTQ3NCA4YTZiNjE0ODRhOTg0YjhhOGZkMTg5NzA3YWFiZmFiNTdkNjlkMDRlIGxlZ2FjeS10cnVuaworNzU0NzUgYzM3Y2E5YWNkMWY5YWFjYjllZWIzODBmMTc5MmM0NjNkZmE5NmEzMSByZWxlYXNlMjYtbWFpbnQKKzc1NDc2IDMwYmI0YzM1NTU5ZDYxNjUxZTc1MWU3MTgyNTc0NGNmY2NiNzVkNTEgcHkzaworNzU0NzcgZDA3OTg3N2RhMzM1ZTYzODI4Zjk3Nzk0NjUzZTgxMTNhY2I1MzkyYiByZWxlYXNlMzEtbWFpbnQKKzc1NDc4IDg0YzE2ODA4YmEyYzgxZGEyZWViY2MwYmNkYWUyN2RjNTgwMzcwZDggbGVnYWN5LXRydW5rCis3NTQ3OSBkOTQ0NDAwMTE0ZTUwMGQ1YzYyOWE1ZmVlZWYzM2JiNTgyYzU4NTc5IHJlbGVhc2UyNi1tYWludAorNzU0ODAgYWE1M2EyZDRlZjJmY2JlOWIzOGEwNTFiNmI3OGFlN2E2Nzg5NGY2MSByZWxlYXNlMjYtbWFpbnQKKzc1NDgxIDVlN2M1Yzk0YzU3MjFhMTZiOTdjMjNjY2RhMzAxNDc4MjBmMDE4NTUgbGVnYWN5LXRydW5rCis3NTQ4MiAzNDljMDMzNzg5NmEyNzJmNjA2ZjkwZWU2NmUwNmE4NjAyNjE3NzdmIGxlZ2FjeS10cnVuaworNzU0ODMgZWQ3ZGVjMTM2NDMwZmU1NWI2NWI5YmZiNzM4YjczZjdhMTg0NzEyZSByZWxlYXNlMjYtbWFpbnQKKzc1NDg0IDc3N2JkNWRkMWQ5YWM1NDFhMmEzYTkzN2ZiYTkyNjhjOWJmMmUzYTUgbGVnYWN5LXRydW5rCis3NTQ4NSBlNjdlYjk2NjAwNDE3OWZlYmRiZjk4NzQxYWFmM2U4ZGYyMTAyYWFjIGxlZ2FjeS10cnVuaworNzU0ODYgNzdlY2M1ZTRmNjY0YzcxNDI0ZTRkNTFhYTVmMTM2M2ExNjA5MmNiMSBsZWdhY3ktdHJ1bmsKKzc1NDg3IDI5MjhmMWU4YjM4NTgxNTQyM2FkMmU4OWI1ZDhjOTAxNzEwNTIwNjAgcHkzaworNzU0ODggY2I1M2IxZmE3MjA2ZjJmNTIwNTA1Mjc5ZDVkODU1NDRlYjZiZmMzZCBweTNrCis3NTQ4OSAzZGJjNjIwN2NiZjZkZTRmZmE1MWNhMGI5Yzk3ZGIxMmRlMDM4NjM1IGxlZ2FjeS10cnVuaworNzU0OTAgODkzYzJhNGM5NTQ0NDU1Zjc5ODcxODgwMWU5Zjg3YTIxZGVmMDQ5NiByZWxlYXNlMjYtbWFpbnQKKzc1NDkxIGRlMmQ5OWFhNDZlYWZmNDgzYTlmNWNhYjI5MDI3MWExZGU0ZTU2NjYgcHkzaworNzU0OTIgMmI2MzU5NzA5MTg4YjExYjY5ZjMxN2ViMGVkZDNjZGQ0YjAxZTk2MiByZWxlYXNlMzEtbWFpbnQKKzc1NDkzIDA5OGJhM2E2MzczMGNhNmQ3NjRiYmFkZjU5ZjBjZmE3NGJjNjEwMDEgcHkzaworNzU0OTQgNTM5NzAwMmY3ZTVlOGZiOTE4MTIxZDBkMGY2MDM3NDcyNWNmN2M4ZiByZWxlYXNlMzEtbWFpbnQKKzc1NDk1IDBmOWU4ZDNlY2FjMzhjNTc2MDcwZjU1NTUyOWE3OWY2OTIyYzFkNTggcHkzaworNzU0OTYgMmM2MGFjNGVkNjVmNjkwMGI4NGFiYWFjYzlhOTI0M2JlNDM0YmFlMiBweTNrCis3NTQ5NyBlYTFmZGFmYmU0ZmUyNDU4YWMxNzI4N2UwZDZjNzA5ZWQwMGZjZTVjIHJlbGVhc2UyNi1tYWludAorNzU0OTggYmZlNzU2ZWIwOWZhYWQwNWU3YWQwYTlhNWEwOGRjNjdiZTEzZmJhZiByZWxlYXNlMjYtbWFpbnQKKzc1NDk5IGEwZTQxZGZiOTcyYjUxODc4MzM5Y2ZhYjFmMTc0OWQ5MDViZjVlZDcgbGVnYWN5LXRydW5rCis3NTUwMCAzODY0MTRiODQ2ZWJjY2RjYzc4NGVkNWQ3NzAxMzBjY2U2NTIzZGRlIHB5M2sKKzc1NTAxIDI1ZWY2ZjQ4MThhMDU3ODk0YmQ5ZDc3MGZmOTc0ODk3YzA4NTY0MTcgbGVnYWN5LXRydW5rCis3NTUwMyAwNjk5OTI1Mzk4N2JiNTM4NWU3MTk3MmU1MGFkYTY1MTAzNDNmOTE1IGxlZ2FjeS10cnVuaworNzU1MDQgMmE2ODUzYTEzYTJmNzk3ZDliODQyZmMyNjA5ODE3MmRlNzA4YTQ0YyBweTNrCis3NTUwNSAzY2NkMWQ2ZjA1YTZiNWM3MGM1YTVkOThmNGYzYzRhMTE4NjYwYjE0IHJlbGVhc2UzMS1tYWludAorNzU1MDYgZDE2NjZjYzdiYzc0ZjNhZDlmZTRmY2YxZjBiOGU0OTFlOWRiYTUyYSBsZWdhY3ktdHJ1bmsKKzc1NTA3IGQ4OWU0YTRlMGIyMDdmZGI0MGM2Zjk5Mjc1ODNjYWRiOTU0MDZmMTEgcmVsZWFzZTI2LW1haW50Cis3NTUwOCBlZDk5MDI2ZTA3ZmNkZGU4ODZjN2ExYzQwN2FmYTk5ZTMwODVkN2Q3IHB5M2sKKzc1NTEwIDc5Y2IwN2ZhMzZlYzEwZTAwM2M2YTA1NjNhOTFjZWVkY2MxOGFjMmYgbGVnYWN5LXRydW5rCis3NTUxMSA2NzQ5YzhhZGM0OTg1N2NkZGMyMWVlZDZjN2RlZjA2ZWI4YzZhNzYyIHJlbGVhc2UyNi1tYWludAorNzU1MTIgZTY0NGVlNGU3NmM3YmNmN2FjMWY0ZTU1NTdjMTY1NGZjMDAzZTNkYSBweTNrCis3NTUxMyBmNDI2M2E5YmQ4YWRkYTczYWQ0YTU0NWIyMWFkNTZiMzE5MzhjMDBhIHB5M2sKKzc1NTE0IDk4MjVlYzIyOGVmYjEyY2IyYmY2NzgxM2I2OTc4Y2YyNjE0YjUxZWYgcmVsZWFzZTMxLW1haW50Cis3NTUxNSAzNzE5MzdiYTZmYTYyY2IwYmM4ZjU3NzZjZTY5ZDg2YzE0ZjY4NzhiIHJlbGVhc2UyNi1tYWludAorNzU1MTYgZDhhN2IzMTRmYzUwNTAxMjUzOWZiZGU1ZDFkNWNhMzhkNTI4Y2UyOSByZWxlYXNlMjYtbWFpbnQKKzc1NTE3IDcxODgwMDI5ZmU3NTYyYTQzODBlMjBjYTlkZTFiYTMyMzg5ZjFkMTkgcmVsZWFzZTI2LW1haW50Cis3NTUxOCBmMzA2NjdjZDQwNDNjNDNiODllMDM0ODkwZThiMDQ2NjhjZTQwZjc4IGxlZ2FjeS10cnVuaworNzU1MTkgMTYwZjE2YTkxZWU3Mzg1YTUwYjM2YTEzZjFhYmQyNTgzYjM4MjVjNiBweTNrCis3NTUyMCBiZDZkZWU2YTc4YzM5NWVjNjE3ZWI0MWYyNmJiYWQxMGE2ZTg3ZmFkIHJlbGVhc2UyNi1tYWludAorNzU1MjEgNDIzMDNjOGNhYjMxNWViZTcwYTliYzRjOGIxMTFjNzFlNDcyNmJmZCByZWxlYXNlMzEtbWFpbnQKKzc1NTIyIDRhOTU0MmFjY2QxMzM0NWU3NWUwYmZmZDk3ZGY1NWNmZTE4NWE2NTAgcHkzaworNzU1MjMgNjcwZTIyMmFmZDQ4MTdkMzhhZTFiYjhlOTY0OTZkNzRkMjQ5NDU2NCByZWxlYXNlMzEtbWFpbnQKKzc1NTI0IDNkYWFjZDk4OTI1ZDc4Njc3NzgwOTUyMTdkZmE3YTcxNzU2ZGEzYjUgbGVnYWN5LXRydW5rCis3NTUyNSA3MzI3MmJkOTRkN2IwM2ExOTk3OGFkZTg0ZmJmMDA4OTcxYmM2ODE5IHB5M2sKKzc1NTI2IDM0MTgyZjk4NTg5YjhjOWEyMzkwYjkwNmEzNmY3MzZiNzAwNGE3OTMgcHkzaworNzU1MjcgZjc0MDMwYmE2NjEwODhmNmUyOTIwNzlhMDc5OGNhOWQ5NmIyNGIyYSByZWxlYXNlMzEtbWFpbnQKKzc1NTI4IDkwYzEwZGNiMjkxMzM5MjIyMThhN2UxZDZkMjllMjQ4OTYxODcwNzYgbGVnYWN5LXRydW5rCis3NTUyOSA0M2QwYjQ3MTA2ZGY4YjhlZWRlZDg1NzlmMWY2NDdjZDhkMTAzZjk3IGxlZ2FjeS10cnVuaworNzU1MzAgNTU0MWU0MmUxYzgxMWQxZGJlNDZlMzkzZTM3MjNhMGE2NGM0ZDlmYSBweTNrCis3NTUzMSA4NTY4NWU3ZDcyYzcxODRiYzZiNzM5YTU4MmQwZWE4Y2ZlMWIxYmU5IGxlZ2FjeS10cnVuaworNzU1MzIgNTQwMzFlY2U0M2EzM2FjYTE2ZGMwOWYzMmExMjQ3N2UzZWE2YjU2YiBsZWdhY3ktdHJ1bmsKKzc1NTMzIGNhZjNjOTNkMDE5MzZhNGIyZTQ3YWU2MmU4NWU3OGNmNTlhYTU1ZjIgcHkzaworNzU1MzQgZTZjNGRiYjVkYjAyZTUwOGE0OWU3OTdmYWY5MzQ2MzYwNTAzMTkwYyByZWxlYXNlMzEtbWFpbnQKKzc1NTM1IDdhZDZlNzhhOWM3ZGNkYjE1NmRlZGEyY2M0NTVhMjY4YzgyNWY2ZTMgcHkzaworNzU1MzYgY2VjN2Y0YzU4NTQ0MTQyOTBmNzU2ZTU2MDQzNzc5OWFmNzc2YjkwZiByZWxlYXNlMzEtbWFpbnQKKzc1NTM3IGVkZjIyNjM3YmQ5MDhkMzdjOTc0MDg1OTE2ZDZiNzk2NjRlNzFlMWYgcHkzaworNzU1MzggMmYxNGIwZjQ1NTFhZjJhMjkwMDczN2VjMWI0OWVkMTY0YTVkYmQ0OCBweTNrCis3NTUzOSA5MWVlODFmMWE1MjQyYjY2ZTViYzlmNWU1MjYwMDBmNjIzYmVmOWM2IHB5M2sKKzc1NTQxIDdhZTZkNWU0Zjc5ODM1ZTdiNDA3ZjhhNzJkMDhhZjMyN2MyM2QyNjggcmVsZWFzZTMxLW1haW50Cis3NTU0MiA5NWJkNzBkNWQ3MTVjZjA4ZGI1MzFkNWU3YzcyMGE5NWNkZmQ3ZGQ5IHB5M2sKKzc1NTUxIGJkYzM5MDcyMWY5NzVjOGQ5ZjYxMGUzYWY4NTQwOTQwNjliN2VhYmMgbGVnYWN5LXRydW5rCis3NTU1NiBhMjE5OTg4OTNiMWRlNDY2M2RiZWYxYjhkOWQwN2UyOTU3ZTQ4MDMwIHB5M2sKKzc1NTU3IDk0MWYxYmU0MjNhYTE4ODcxZWJkOWY1MWFkYTFlMzZlZjFkZDAwOTIgcmVsZWFzZTMxLW1haW50Cis3NTU2MSAxYjYwMmEyZDgxZWY1MThiN2UyODcyNDJhMTY3MmI1NmUxZGM4MGNmIGxlZ2FjeS10cnVuaworNzU1NjIgNmU0YTQ5MGU3MTQ3MTNlYzA0YTdlNDU4MTNjNTBjMDY4NWQ4ZGY0ZCBweTNrCis3NTU2MyAyNjAwNzM5NTYwN2U4OWRjM2Y5OTYxMTA5ODQ4YzBjMzBiM2RmMWFhIHJlbGVhc2UzMS1tYWludAorNzU1NzAgMTIwNzljM2Q0Yjc3OWNjY2ZiZjJlM2FkMzA1YjE5M2NlMzdlZWE5NSBsZWdhY3ktdHJ1bmsKKzc1NTcxIGJmNzYyNDEyMGVjN2ZlMWFhZTA4NmJkYTBiZTIzODk2MGVlM2VkOGEgcHkzaworNzU1NzIgMDI5OTk1MTM5MWUzNmFkMjMxNWRkNDBmNWY0ZjU4NDNhZjczZjQxOSBsZWdhY3ktdHJ1bmsKKzc1NTczIGIzYmVmZTBmMmI4ZGRjMmRlNDdiZjMzZmEzOTU4ZGQ2Y2MzOTBmMmQgcHkzaworNzU1NzQgM2NmZDIwY2Q2NDU5ZjVjYzQyZmNiYTFmMDYyYzg0YjdmMzIwNzZlNSBsZWdhY3ktdHJ1bmsKKzc1NTc2IDE3Y2U5NGFlZTcwNDZhYjkwZjI4MTRiZjM2NzQ5YzQ3YTljYzNkMTIgcHkzaworNzU1NzcgMWU3MDM1ZmE2MTU0YzZmNjVmMDYwZjZkOWE1MmMzYjEyOTQ1ODhlOSBweTNrCis3NTU3OCAyOWIzZTEyNmMwYzI0NjcyZjdmNDM4YTE0OGVjNWMzODY4MTMzMGViIHJlbGVhc2UzMS1tYWludAorNzU1ODAgMWI5NDQ0OTdlODFlMWRiZmRmMjU4MjBkNWU1YzcwODkxOTk1MDU1ZiBsZWdhY3ktdHJ1bmsKKzc1NTgxIDhjMWI2MWU3NDYzYTQxZjdmMWQ3ZTZjNjg5MDQwYmFjMjc1YzI1NTAgcHkzaworNzU1ODQgNWQ4YjJkNmRjZDYyMjlkZWEyYzRiNTdmMThkYzRiOTUyNzYwNzM3NSByZWxlYXNlMjYtbWFpbnQKKzc1NTg2IDcxNmVjM2VkM2ZjZjhmYWY1ZTNkYjhiYTVhZjE5MzkxMjAxNGFjMTMgbGVnYWN5LXRydW5rCis3NTU4NiA0MTRlMDNjMTQ4MTU5ZjQ5YmQ2ZGViZmU1Y2E4YmJjZDhmZGUwNzk3IHB5M2sKKzc1NTg5IGViZTE5YzRjNzFmNTcwNmM5N2UyYmE3YjgzYWE4M2U3ODcyZTZhOTYgbGVnYWN5LXRydW5rCis3NTU5MCBhOWJhNjM3ZDRkY2QzNzU2NTRjNGJjMjAxNGMzOTA0ZTIyMTlkYTY5IGxlZ2FjeS10cnVuaworNzU1OTEgOTc4MzQ5YzA3NGNlMDgyOGJmNTVjMDFhMmFhMWU2MDQzMzYwMjA1NyBsZWdhY3ktdHJ1bmsKKzc1NTkyIGZlODVlZjI3ZGM0NzkxZTY2ZGY1NGM5ZDE3MDk1NDU3NTY0YjZiYjAgbGVnYWN5LXRydW5rCis3NTU5MyA1ZGUxYWMyNDJiZmI1NjNmNDQ1ZjczNmI1NjQ4ZDc1ZjhhYTE3Y2VjIGxlZ2FjeS10cnVuaworNzU1OTQgNThiZGExMjA1YWNkOWQ4OTFjMzRlMzg5ODU3YzRmYjJiYWM3MDA3YSBsZWdhY3ktdHJ1bmsKKzc1NTk1IDBiYTliMjE3MTgxZWQ4YzU2MDU4M2M5OGY5MGU5YzZhZTJlZDJkNDMgbGVnYWN5LXRydW5rCis3NTU5NiAzYzI2YzZiNGRiNTAwYjdjY2FmNDBmMTFiZTUwZjhmYjRkODNiMzc4IGxlZ2FjeS10cnVuaworNzU2MDAgMDdlZjU5NzY2YjAyNmUwMzIxNDk4ZTYzMjRhMDE4MTU0ZjJiYWZlMSBsZWdhY3ktdHJ1bmsKKzc1NjAxIDI3ZWFhYzA3YzVkNmE4OWExYTYxYTA3Njc2NTQzZWU4MGRkYTZlZGQgcHkzaworNzU2MDIgZjU1NTY4YjM5OTI1NmMyNzMxODM3OGExZGVjZDcyOTRmNzIzNThiMCBsZWdhY3ktdHJ1bmsKKzc1NjAzIDA2NTM0ODY5MzViNjQxNjhkZTM0NGQwYTUyMDY4NmEwMWJkODA5Y2IgbGVnYWN5LXRydW5rCis3NTYwNCBiYWNkNGQ0MjI1NmI2Njc4Zjg1ODEwOWQ0ZmI3MTFiYzQzMzAwZTdmIGxlZ2FjeS10cnVuaworNzU2MDUgNzJhNWZjNzkwZDAxZmMyMzIyODZiZWM3Nzg2YzdmZGE4NzZkZGQ3NCBsZWdhY3ktdHJ1bmsKKzc1NjA2IDhhNThhN2VjOTJkYzU2ZDY5ZmQ4OWI1YTVhNGEyNzhkYjUzNTIxM2YgbGVnYWN5LXRydW5rCis3NTYwNyA0Y2ZhZjZhZWM1ZWJjNTU5OTA1ZjI5YzY0ZThmN2I1M2ZiM2QzYTE1IGxlZ2FjeS10cnVuaworNzU2MDkgYzQzODhlN2U3N2U5ZjY2ZjY0MTIwNjAxY2Y2MGU3Nzg0MWNiMmE0MiBweTNrCis3NTYxMCA1NjlhMGQxNzBmYWM3MjAzNDUyMmRiNjhlNDk1NGFlOWQ1Yzg0ZDczIGxlZ2FjeS10cnVuaworNzU2MTEgMWI4ODgzNDMwMTM5MTFmZGZiNmUzNTU3OWYwYTEyYzQ5ZTdjN2FkMSBsZWdhY3ktdHJ1bmsKKzc1NjEyIGExN2I1OGE0ODZmNDBiNTg1MWM2NDk2ZTMwMjUyY2Y5M2M1MzE1Y2QgbGVnYWN5LXRydW5rCis3NTYxMyA5ZmZhMTUxMzA5ODQ2NTMxNWU3Yzk3NTVmNjYxZmM1ZDdmZmU5NWZlIGxlZ2FjeS10cnVuaworNzU2MTUgNjgyNzljMTMzZmQ5OTIyZDQ2MTc2MDY2MWZmMDI5ZDI5Mjc5NzA2OCBweTNrCis3NTYxNiAzMjFlNjM1YzlhYjgyNmE4YWZhNWYzZjQ2OGQwNTY0NTY1MzkyMjVjIGxlZ2FjeS10cnVuaworNzU2MTcgZjNiN2JkNmU3YWRkOWZhNzE3ZjExMWM4ZTM2OTI0OTFmMmFkYTRlNCBsZWdhY3ktdHJ1bmsKKzc1NjIwIGRiMjFjM2MwMDlkYjM5M2NlMjdkOTczN2ExMTgxYTI2MDg5YjZkMjkgbGVnYWN5LXRydW5rCis3NTYyMSAzYzA2NjQ0ODBmN2ExNjBiZTNhNDAzZDdjYTE3NDRmNDQxOWFlNTI3IHJlbGVhc2UyNi1tYWludAorNzU2MjIgODgxOTU4ZGEyMTlhN2EzNGQ4MDE3ZGYxMTMxYzQyZDJjMTY1ZGQxNyBweTNrCis3NTYyMyA2ZDI3MmZkMWNkZDFlN2I0NWNkYmQyODQ3OGQxOWY5ZGU1ZTA3MGUyIGxlZ2FjeS10cnVuaworNzU2MjQgOTJkZGUyODIxNTNkZWY1NGI0NjQ5ZDBkNDc4MjM5YmM3NGY4OTEyMyBsZWdhY3ktdHJ1bmsKKzc1NjI1IDllYjc5ZTk0MjA0ZDI2NWM4OWY0NzkzOGY5MWZlNTgzNzQwNGFmYjggcHkzaworNzU2MjYgNjIwMDg1YWI0OTViNDE2NDg0MWEzMWUzNzkxYmVmZjEyMDVkODM3YiByZWxlYXNlMzEtbWFpbnQKKzc1NjI3IGIxMWYwMmNiMTEyNDRmN2QyZjU1ZWVhMTVjZGE1YTZmNjNlNjk5YmMgbGVnYWN5LXRydW5rCis3NTYzMyA5ZGYzMzkzNzE3MWY2NTE2Y2I1MDcxMWMzNDUzYmI5NDdmZTNjYmVmIGxlZ2FjeS10cnVuaworNzU2MzQgZjA5MTQ0NGRlZWEwMTA0MGZmMmY4M2I4ZTBiZjAxNmViZDk1NmIyZSBweTNrCis3NTYzNSA5NmQ2YzE0NmNmYTkxNzYxYTg1YmYzNjQyMzU2Y2QzMWIxYTg2NWIxIHJlbGVhc2UzMS1tYWludAorNzU2NDAgZjM4ZGFiZjI0MGNiYWVjNDE1M2Y0YzQ3ZGE1ZTg5YmZlMjI5N2M2ZSBsZWdhY3ktdHJ1bmsKKzc1NjQxIDM1YmI0MzM4NjczNDRmZTMyN2JlNzEzZmFkODBmYTcwNGQwYmUzOWEgcHkzaworNzU2NDIgMTYxZDMzMmFmYzg4NGQ3YTc0NzI0YmNiNGQ5MDQ0MGIxMzY3MzE4OSByZWxlYXNlMzEtbWFpbnQKKzc1NjQ3IDgwZjIyOTNmZDY2YWM4NTFiNmE0ODVlNzgwMTQ4N2E2ZGRiYzY2N2QgbGVnYWN5LXRydW5rCis3NTY0OCAxMGU3MjkzOWQyY2Y5MTY2ZGI1ZDhhMzA3YWY5OGYxZDJjM2RkNWI5IGxlZ2FjeS10cnVuaworNzU2NDkgOWE5MWQ0NTJhMGY4OGY3ZTg2NWZhNjJhMjdhYmVkMmVhNjQ3NDVlZiBweTNrCis3NTY1MCAyZjMwN2M3YWRiOGZjNWIxMDc3NTI3MjFmZmVjNDIyMTQxNThmMDAzIGxlZ2FjeS10cnVuaworNzU2NTEgMjE0NmJiZGY0ZWQ3ZGEzOGI5ZDJkMGUwMmI2MTVkMDZhYzEzM2FhNCBsZWdhY3ktdHJ1bmsKKzc1NjUyIDBjOWNmYzdmMWU5NWI3N2Y1YzhjODc1Y2JiZjM2YWNlYjg0NDg5NWQgcHkzaworNzU2NTMgZWI5MjVhZGJhOGY5MDE0YzRjMjFlM2I0ZjRjNTkyYzkwZDVmOGQ0YiBsZWdhY3ktdHJ1bmsKKzc1NjU0IDI2NDYwOWZiZGE0ODE1NjM3YjU4YWM0NWI5YjQ0ZWQ0MDFjMTRlNzQgbGVnYWN5LXRydW5rCis3NTY1NSBhZTAyYjE2ODE2MmNlOGY0ZGRlYTIxNDBhMTYyNDk4YzIzYjEwZDQ0IGxlZ2FjeS10cnVuaworNzU2NTYgYzcwNDc1MGU2ZjNlNWIwNTA2ZTE3NGNkMmZhNGE2YzlmYjQ5N2EyNCBweTNrCis3NTY1NyA2ZDI5Y2U5ZGNhOTAyZGEzZjIxZWNiMDc1MWYyMTQ2MTZkNWZiYjFjIGxlZ2FjeS10cnVuaworNzU2NTggMmFiMDhjOTE5NjQ4MjRjZjA1YWM5NWM4NWJhZGQzOWNhZTdmY2M3MiBsZWdhY3ktdHJ1bmsKKzc1NjU5IDI0ZDQzYTkxNDJkMjVhZjBlYjIwMjNkNDAwMjlmOTFiOTNmNTdkZTQgbGVnYWN5LXRydW5rCis3NTY2MCBkYWJlMWY5MmNhMjc0Mzc3NzlhMTgzNzgzN2NmM2ViNzQwY2RlMmI0IGxlZ2FjeS10cnVuaworNzU2NjEgNzIwNjZlNWI5NDIxN2UxMzg2YTk4NTY1OGYzNzg0ZTkwYWM0MWMyZSBweTNrCis3NTY2MiBjYmUzOTNmYTQ0Zjk2Mjg4NzdiMzMwZTcyZTdjMjQ5MzhjMTI0ZWE5IHB5M2sKKzc1NjYzIDU2N2IwZjM0YjFlYjEzZTMyMzJmNzEzZWFhMmU5NmU4ZmZiZjdjYjIgcmVsZWFzZTMxLW1haW50Cis3NTY2NCAwNmU2NjM2NjE4ZDcyMWI4M2Q0NDFkY2ZhNjljZmQ3YzI5NTE1MjdlIGxlZ2FjeS10cnVuaworNzU2NjUgY2M4OGE3MDM0MjhkMDExZjJiYTg0ZmUzZTM5YzU2ZmE1Y2ZjMDk1NyBweTNrCis3NTY2NiBhYWNlZTk3NDlkMTU0MzVhOTcxYzc5NDZiZmQwYzA3ZTgzYmU1MDJiIGxlZ2FjeS10cnVuaworNzU2NjcgOTJmMGExY2E0ZTk4Njg0M2QzY2IxNjcyZjZiNTUxMjIxMzY4OTkxNyBweTNrCis3NTY2OCAwYzM4NDA4YWQ4MTllMGU0YjI0NzFiMzNkYWM2ZTYyNjZlYzA0NGYzIHB5M2sKKzc1NjY5IGIyYzhiOTg0MjUwYWFmOTE3OWMzMTExOTYyMmZkYmM3YmQzOTdkZGUgbGVnYWN5LXRydW5rCis3NTY3MCA0ZDY1ZjEyMmIyYjNiN2Y0ZmFkYWU0ZTBlNTE4MzNiMDExODE5MzNhIGxlZ2FjeS10cnVuaworNzU2NzEgZGFkMjJhMWVkMjhiMmY2ZjViNTcxYzg3ZDZkNzlmY2M3YWViYjRhNCBsZWdhY3ktdHJ1bmsKKzc1NjcyIDVjZjMyNDMzMTViNWJiOGE4YjdlMDNhNzRlMzk4NWJkYzIwODE2YTUgbGVnYWN5LXRydW5rCis3NTY3MyBmMDIxOTkxZWNmOGQ2YjMxZTBmZmQ5ZjA2NTI5ZTE3M2EzMjIyNmJkIHB5M2sKKzc1Njc1IGVkZjM1YzNhNDhhYjhiMjRhMmI1NzYwYTE2Yzc3ZWEwNGVkNzJiOTggbGVnYWN5LXRydW5rCis3NTY3NiA0M2Q0N2NiNjY4OGNmZGUwOTk1MDk2Yzk2ZDQzM2U0YzgzMmY1YzkzIHB5M2sKKzc1Njc3IGNiNzIxYzMxOTVmYzc0ZGY3MzJkMjkyYzQ5NTdiYmRjN2RhY2IyOWMgcmVsZWFzZTI2LW1haW50Cis3NTY3OCAxNGI1NWE0ZTg3MjVhYzhjMzM0NDNlNjY2MjBiZDNkYTgyNGE2OTY0IHB5M2sKKzc1NjgwIGI1NGRhNWNhYWIzNjUwNTAxMTY2YTEzOTZkNzcwMWJmMmY4YjY2NzUgcHkzaworNzU2ODIgMGMxMjM4Y2FiZTkyMTVlYmNkZGE1ZTFlOTdlMjVhYTAwNjg2ZjA5MCBweTNrCis3NTY4NCBmNWM1NjNhN2RlNzVkMzkyY2IyNGU5MmIxNTE3NjM4NDllZTYwM2YwIHB5M2sKKzc1Njg2IDZjYTY0MmQ0ZjQyZmQ1Zjg3MDU0NjY4ZTFjMTBjN2FiMDgwNWEzNDcgcHkzaworNzU2ODcgYzcxYmE1ZDFmMTdkMjJmMTY4NzVjZmVmMTkyN2IzZTZmYWUzZGQ4ZSBweTNrCis3NTY5NiBkM2Y2ZmJlYmVhYzkwM2Q1Mzk3ZTA5MTE5NDM3NGViMTFiMTEyMTE5IGxlZ2FjeS10cnVuaworNzU2OTcgZmJlNmIyNjViZDFhMDk1M2I2ODdmMjcyOWU4NGQxNDEzNTFiODEwMyBsZWdhY3ktdHJ1bmsKKzc1Njk4IDQ4MzRhNDI4NTQxMWI5MTIzOTc3NDcyZmQ2MDRmYjUwNTFlZWZhNjcgcHkzaworNzU2OTkgYTM1M2UxMDhjN2U0MjM5ZDRhMzk2NDhmNWQ4Mjc1MTFkYzU0Mjk2NCByZWxlYXNlMjYtbWFpbnQKKzc1NzAwIDk3NzM2Yzc4OTBhNmI1MzZhY2JhNDgwMmVkNjkwMjcwYTU4YzRjOWYgcmVsZWFzZTMxLW1haW50Cis3NTcwMSBkZDQ2NmFjMTkyYmU5ZGVmZDkwZWJmMzZlOGYxYjFiNGE4NjllNWU0IHJlbGVhc2UzMS1tYWludAorNzU3MDIgOGFjOTA3MDE1NjA1OTU1ZTNjOTA2NDIxODgzNzhlMzkzMWU2ODQ0MSByZWxlYXNlMzEtbWFpbnQKKzc1NzAzIGY4ZTY1Y2EzZmQzOWNkMGIzZTE5ZDk2MTBmNDk1ZTVmNTYyN2FkMjggcHkzaworNzU3MDQgY2I5YzU3ZTJlYmQzNDc5MzBmMDIwOWY0YzI5YjQzMDEyMTEyODE2NCBweTNrCis3NTcwNSBhM2NiODEyZDgwZjkwNzZjNWIzYTAzNGEyODhmOTMxYWEwMzZmYTBmIHJlbGVhc2UzMS1tYWludAorNzU3MDYgODgwM2MzZDYxZGEyNzVjNzFjYWJlOWU5ZDAyNzRkYWM5OTAyZTJjMCByZWxlYXNlMjYtbWFpbnQKKzc1NzA3IGVjNGExYjRlY2IzMTQwODg0NGFmODRjNjcyMjRmZDUwMWI1M2I0ODEgcmVsZWFzZTI2LW1haW50Cis3NTcwOCBiNTE5NjA4YTk3MDFmMDEwOGU3YTE2MTgzY2RkZDVlZjMxZDM1YmNlIHJlbGVhc2UzMS1tYWludAorNzU3MDkgN2I2MDM2ODBiZjI5NWEyMDAyNDRkMGE0ZDYzZTU4NGU3MmYzMjFlMCBweTNrCis3NTcxMCBkM2NmOGViODcyNzRhNmM2NGYxNjJjNzk0ZjRkNWJlMWFjZGYxNWM2IHB5M2sKKzc1NzExIDc2YzY2NjkwZDFlZWE1Mzc2ZTkyODg5MTkwM2ZiNWFjZmEyNjhiN2IgbGVnYWN5LXRydW5rCis3NTcxMiA4ZWZmNzU5ZDA4MGY5ZGIxZDdiZDdiZjM4YTY4YTVhYTg4M2Y2MzE1IHB5M2sKKzc1NzEzIDk3MTM5M2Y2MGJkODc0ZGM0ODE2NWJiZDdhZDQ4NjI0NzAwNTAyMGQgcmVsZWFzZTMxLW1haW50Cis3NTcxNCA2ZTRkODk2OGUyNDY5NmJkYTkyOGY5NDVmMzA0ZDU1Y2UxYTUwZWVlIGxlZ2FjeS10cnVuaworNzU3MTUgN2RjNTdiOTkxZDgzYmRkZDJjNWY1MmFkNmQ2MDhlNzVmYWM4ZjVjYSBweTNrCis3NTcxNiBmNTk4ODQzZjM2OTViY2NjMWY4YzMwOWM5ZWNkNjMxZWZhMDg4YWEzIHB5M2sKKzc1NzE3IDA5NWFmOTllNmI2NDBmNTI3Nzg0NTg3YWI2YjlkZTJhOWY5ODFlZDAgbGVnYWN5LXRydW5rCis3NTcxOCAzOGE1NzU0YjMwMzc3MWQ4MTVkNDNmNTBiM2UyNzhhODc1MjBmNTA2IGxlZ2FjeS10cnVuaworNzU3MTkgZjRjN2ZkODVmMjMyNDA5NjRhNDEzNDJlOWM2ODE1ZjkwMTA2YzA3NyBweTNrCis3NTcyMCAzOGZkYTNhNDJjMGIzZjU4ZjZhNzZjYzEyMTRiN2VmOTBlNTA5ZWM5IGxlZ2FjeS10cnVuaworNzU3MjEgZGE5NmIzZmVhZjUyNWI3NjFmY2E2NGYyOWYxZGE0OWQ0YWJjM2VmYiBweTNrCis3NTcyMiA3NDQ3MmRhMDlmNmNkZGViODUxOWY3NmU2N2NkOGE1YjQxMTU3MzdlIGxlZ2FjeS10cnVuaworNzU3MjMgYjU1YzJlZWUzNDhiNTYzNjYxZDYxMGM5Y2JkYjc2NGYyZDY0NzRmZSBweTNrCis3NTcyNSBmM2JmOTJjZDExOTE3NGMzOWMwYTY4N2U3ZmNmNTQyMWZhYzI4YWQwIGxlZ2FjeS10cnVuaworNzU3MjYgNDUwMTA1ZGQ5Y2E3NDUzZGMzYzBhN2QyMjA2OTJiODc4YzI3YWMzNiBweTNrCis3NTcyNyA2ZGEwYWU2ODBmYjYwMmRjZmE2OWM0YjYwMzY3OWFlNjkyZmY2YmE4IHJlbGVhc2UzMS1tYWludAorNzU3MjggMDNlMWRiZTJmNGQ1OWM4Mzg5ZWE0NTI0ODVkY2Y4MGE2YWViZTU0MyBsZWdhY3ktdHJ1bmsKKzc1NzI5IGI1MDQxNzU2ZmQ5MTQzYzgwNWJkNWJiNWU5NWQxYWFhMzI0NTQ1NTggcHkzaworNzU3MzAgNDFiZTJjNjk2MTliMmM2YzY3MTAyZWM3YmE4YWZmZTU4M2IxOGYxZCBsZWdhY3ktdHJ1bmsKKzc1NzMxIGM1NjQxOWNiZGQ0ODY0MzcxOWNkMzM5OTEwYjdlMDhjOGQyNGVhYjEgbGVnYWN5LXRydW5rCis3NTczMiA2ZDIzOTZlYTdiMDNiNDRiNzQ3ZmIxYzQyNWZkOTAzMTk4OWNhMmUzIHB5M2sKKzc1NzMzIGU1NWZmYjg3Y2I3MDJjYzVmMzU2OWIwODg3NTZjNjA2MGEwNjUwYTggcHkzaworNzU3MzcgNGNiZWE5ZTc4MzU2ODE4MTMxYWZhODc0YmMyYWNmOTYwMDBjMWQwOCBweTNrCis3NTczOCA1YThlODE1OTRmMGYxNjFlMzgzYjgzNzIwMjlhMThiOTUzYjEzNjQzIHB5M2sKKzc1NzM5IDBiMWEwODgwMTJjNzRhMjE3YzZkOTcyNmVkYzM1ZTBiMjk2OTc4YzMgbGVnYWN5LXRydW5rCis3NTc0MCA4NzU1MDA2ZWRmOTczZGNhYjU2YTI0ZThhOGUzYjIwYmYyMmYxMjYwIHB5M2sKKzc1NzQxIDg5NmY5NDU0MWY3MmVmMzViYWUxNTFkMzAxZjE3NWZmN2MzM2ZmZDggcHkzaworNzU3NDIgNDIyNTJkNmQxMDMwYTJjMmYyNGI3ZTg3NTQ1ZDY3Y2I0M2EwODA4MSBsZWdhY3ktdHJ1bmsKKzc1NzQzIGE3NzgxNzFjOTNkZTVlYzY5YjFjMzhmNTgwZDg3MjA4ZjgzNGY1MGYgbGVnYWN5LXRydW5rCis3NTc0NCBiZTU0YjQwNDg3OWU2NWFlOTUxNmY5YmM4MDY4MDc3ZTMzMzA3NjRhIHB5M2sKKzc1NzQ1IDkxYTBjM2M2MDIwOTRlNTFhYWZiOTM5MjAxNDIzNzc5Y2FlYmNiNWUgbGVnYWN5LXRydW5rCis3NTc0NiA1NWQ4YTkxMTdkZTc4MGZmOWI5YWVjMmI5ZjhlYmJlNzczYTFjZmYwIHB5M2sKKzc1NzQ3IDE5YTgzMmI4NDY0YTJlZjkwMTNmODkwN2NjMzQxNmJkYmJhMGM0MDMgcmVsZWFzZTI2LW1haW50Cis3NTc0OCA0MTY5ZDNjZWNiOWRjZDI3Mjk2OWM0NzUwMjUyOTJiYTQ2MDkxMDA4IHJlbGVhc2UyNi1tYWludAorNzU3NDkgMmFiYzNiNGJjZTdjZjU2YTVlYTRlYjlmZjhkNDIzMjdjYTY5MzE4MyByZWxlYXNlMjYtbWFpbnQKKzc1NzUwIDE3YWNkZDY1OWVlOWU1MGYwZGM5YTI4ZmY5NGExOWEwZDc4MGNlMjkgcmVsZWFzZTI2LW1haW50Cis3NTc1MSBhMGVmNGVmNWZjODg3NWFiZjc1MzQ0MjY3YzI2MzY3YzM4MjVjYjM5IHJlbGVhc2UyNi1tYWludAorNzU3NTIgZjljZmVhMjAxNWIyMGE2MTQ5N2ZlZjBmNTBjYjk0YjkyMWUyYzc2OCByZWxlYXNlMzEtbWFpbnQKKzc1NzUzIDgxNzgxZDFlMmZiOWNkMjgxNGU5Zjg4MWUxYWVkNmIwODQ1YTA1YTIgcmVsZWFzZTI2LW1haW50Cis3NTc1NCBjMWMwYTBjN2Y3YmMzMDI0ZjU4OTVmYzg2MzZkODM4NmQzMjM3ZDY1IHJlbGVhc2UyNi1tYWludAorNzU3NTUgNTI0NTI2NzQ1ZjJlOTk0N2U1MGM1ZTQzMmQyZDRlY2NjZDY0YmQ4YiByZWxlYXNlMjYtbWFpbnQKKzc1NzU2IGZhYzRlM2ZkNzQ3YWNmMmM5MTcwOGJhYzlhMmQwYjQ3YWY3MzAxYmEgcmVsZWFzZTI2LW1haW50Cis3NTc1NyAyNTBiYzgyNDJlN2VhYmZlNDVmZGQ4MGI2MzI3NjdkODIzOTFkNzMwIHJlbGVhc2UyNi1tYWludAorNzU3NTggM2Q1NDA0Njk1ODViZTgzYjhjMDFiMDQ2YTQ3OGUxYTM3NTBiODk5NiByZWxlYXNlMjYtbWFpbnQKKzc1NzU5IDgzMDlhZDZhZTRjMGU3ODhhMjQzY2M0NDI5MTQ0YmU2OTUzZmVhNzUgcmVsZWFzZTI2LW1haW50Cis3NTc2MCBjN2RjYzIyM2Y5MjVkMzk0NjFiMWU4NzljZDc2NDczODZhNDljMDk3IHJlbGVhc2UyNi1tYWludAorNzU3NjEgMzU1Mzk1NDM4N2ZhNWIyNjY1ZGMxZjg3YWQ0NmI5MzJjODBjYTk1MCByZWxlYXNlMjYtbWFpbnQKKzc1NzYyIDI2ZWM4ZGJkNmY2OTdlZWYzZGQ4N2YxODczODU0Mzg2YTkyMmRjMzggcmVsZWFzZTI2LW1haW50Cis3NTc2MyBiNzE4ZjMxODhjNzZmZGMzOWIyMzlmMjI0YzRkYWE1OWE0MDQ1ODM5IHJlbGVhc2UyNi1tYWludAorNzU3NjQgNDdlMmMxNGIxNTAzMzUwM2QxMzc4OTgyMDhkZDgyNWEzYjZkY2FlYSByZWxlYXNlMjYtbWFpbnQKKzc1NzY1IGNjYmY3ZWJlZjQ3NTEyNzJmYzFiZGNmNTQwYjdmMzc1NjMzN2M0NGYgcmVsZWFzZTI2LW1haW50Cis3NTc2NiBjNzYzN2I2NmIzNGJiZTM3YTJmZGU3NmU0NmM3OTU0ZDkyNzMyYjk2IHJlbGVhc2UyNi1tYWludAorNzU3NjcgMGRkNWQzNjcyMTM0ZDhlNWEyYjExNjE3ZTVlZmJiNGE1N2I2MjEyOCByZWxlYXNlMjYtbWFpbnQKKzc1NzY4IGYwMGNjZjhlMTM1ZTEwYTNhMjVjYmQ4Yjc2NjU3NTFmZDdjNzZmYWYgcmVsZWFzZTI2LW1haW50Cis3NTc2OSBlM2U1M2I4OWMxNzg0Mjk1MzMxMWU5ZjI3YTY0YmY0YTI0MzZhNTFjIHJlbGVhc2UyNi1tYWludAorNzU3NzAgNmQ0MmYxZWVmNDVkOWRiZTc2NTE1NjMxMGI3OTI2NDFmOGQxYTgwMiByZWxlYXNlMjYtbWFpbnQKKzc1NzcxIGJiODE4ODczNmEyOWI0YTY0MTQwZjExNTc0M2ZhNzI3NWNkM2Y1YjEgcmVsZWFzZTI2LW1haW50Cis3NTc3MiA3ODZhYmFiYTQ2MmQxZTc0ZDY4M2I1ZjM2ZjgxMjZkYjYzZjRiNjBiIHJlbGVhc2UyNi1tYWludAorNzU3NzMgYzg2MzBmNzMwOTA3MThlYjI2ZDFlNjdhOGEyMDdhMTM3NGRhYTI0NiByZWxlYXNlMjYtbWFpbnQKKzc1Nzc0IDEzMTQ3MjdjMDlhZTdhNjkzNTRjOTc1YTk0ZTk2NzBmMzA4YzdmN2MgcmVsZWFzZTI2LW1haW50Cis3NTc3NSAwOTZiNDJjY2IyNThmNWM2M2QwZGZmZjA5NjU1OWM1ZDkyYWVlMDA3IHJlbGVhc2UyNi1tYWludAorNzU3NzYgOGFkZjhlZjdhNGRiYWFjOGEwYzgwYmUzYzA1YjRlMWM1MzRiNjkyZCByZWxlYXNlMjYtbWFpbnQKKzc1Nzc3IDA3ZTNjMGI0MWQ1MDAzY2M1YTg1NmE3OTI3NDNiMDlmYzA2NjhiZGQgcmVsZWFzZTI2LW1haW50Cis3NTc3OCA2OGY3Mjg4ZDE1NWNlM2MxN2ZlMjNmZjdmYTAxYmNmODA5NjVhZGZhIHJlbGVhc2UyNi1tYWludAorNzU3NzkgMGQ1MWE1ZDU2YjVhMjIxNTlkYzZkMGJmYjVmOWQ4MzI5ZmY3ZjkzNCByZWxlYXNlMjYtbWFpbnQKKzc1NzgwIGExYjA5MzZiMDI3Y2YzZjA2YTllNGU1OTA2ODljNGRhNmNjNjkyY2EgcmVsZWFzZTI2LW1haW50Cis3NTc4MSA1ZDkzYzc1NDA1N2NmMjY2NzVjMGY0YzY0MzEyMjQzZjgwMDgxNmI4IHJlbGVhc2UyNi1tYWludAorNzU3ODIgMTI3ZDYyMzM5NmFiOTNhYzk3YTA1YjFkZTQxMDkwYzkzY2M2MGQyYyByZWxlYXNlMjYtbWFpbnQKKzc1NzgzIGZhYjY2MGMyZWY4ODg3YmNjOGIzOWZiMDgwZGVmNDhhZmM1ZDIyMTIgcmVsZWFzZTI2LW1haW50Cis3NTc4NCA2NmRlNzExMTIzMGFiNDVkNDkzNmZiMzI4NTRiOTlkNTRjZjkzNjgxIHJlbGVhc2UyNi1tYWludAorNzU3ODUgNmIwNWQ0OGNjYTI4NzIwNjMyMDMzNjkxMmJmNjQ0Njg1NTEwNjc5NiByZWxlYXNlMjYtbWFpbnQKKzc1Nzg2IDNlMTVhMDdhMzJmYWY5ZDQwNGNmMjJlNmM0NjgwZTE2MzU4OGRhYjAgcmVsZWFzZTI2LW1haW50Cis3NTc4NyA5YjI0ZDAxMDEzM2YwYTYxMmYyOWMzYzM2MjE0ZGZmZGE1MmYxNmJhIHJlbGVhc2UyNi1tYWludAorNzU3ODggODVhYTcwNmY3MTI2ZDIxMTQwNjk5OTEwZjg3N2YwOTM5MTcxMjUxMSByZWxlYXNlMjYtbWFpbnQKKzc1Nzg5IDQ4NTIxMjMzYmQ2ZThkNGQ5ZTI0NzA2NmUxZmZiNGQyOGM1Zjk4NGQgcmVsZWFzZTI2LW1haW50Cis3NTc5MCBjNGM0MjliMDhhNTc1OTkyMmIxMmM1ODc5ODRlZWU0Y2JjMzBkZDBmIHJlbGVhc2UyNi1tYWludAorNzU3OTEgZWYzMTk0NzQ5Mzc3MDAwMzhmNGExNGY4NjgxMTQ2NDBkZTE3MGI4ZCByZWxlYXNlMjYtbWFpbnQKKzc1NzkyIGI3Yjg5NzBjZDVhNTc2NDA0ZDRlODIwMzA0MDYwNTU3OGEzOThmNTAgcmVsZWFzZTI2LW1haW50Cis3NTc5MyAyODg1MjUwYmE1ZjQ5ZjU1ZGZhZTdjOTA5ODk3NGE5ODBmMWFjYmJhIHJlbGVhc2UyNi1tYWludAorNzU3OTQgNDAyZGFkYzdiNGE4NjI0MjNlZWUxMWI0NTliMjYxZTczOTM1MTRiNyByZWxlYXNlMjYtbWFpbnQKKzc1Nzk1IDFkNjhiMWRjNDEwOTM2ZmI4NzIxZTg4ZTg0NjcxMzZkNzI1MzMyMDAgbGVnYWN5LXRydW5rCis3NTc5NiA4ZDllZjVhNzliYzdhNTkzMThkNTJhZmE0NGI1N2E5ZTUzOGQ2ZDk1IHJlbGVhc2UyNi1tYWludAorNzU3OTcgMzAzNTljMzNiNmY2NzdmMGM0YzU0ODY1NzMyNzM5ODc3NDM0M2M1ZSBweTNrCis3NTc5OCA5N2Q3Y2QzNjVkZDUzNDRmNTFhNTkwZDlmMjUyMjlmYjFkNjkyYTVkIHJlbGVhc2UyNi1tYWludAorNzU3OTkgNTk4YjliZWU3NGVjODgyYzJmYjIxMDI1ZGViNzIzY2UwMThlYjcwMSByZWxlYXNlMjYtbWFpbnQKKzc1ODAwIDcyODQ1MDdiYWRiMmEwOTc1ZjE4ZDc4YTFmODRmOGQ4MmNlZGM1MzkgcmVsZWFzZTI2LW1haW50Cis3NTgwMSA4MWI2M2FiNmQ0NWZiNGIzZjA3ZDYzMDU4ZDY2YjA2ZDNjMDdmYmM4IHJlbGVhc2UyNi1tYWludAorNzU4MDIgNWIyOTUzMzA4MzBhMDk2ODY0Zjk3ZGFjZjFkNTNkYjQ4NDg0NTIzZCByZWxlYXNlMjYtbWFpbnQKKzc1ODAzIGU5NDA4Y2IzZTI3NGUxNTAyNTMwZWMzNWI3NzA0NTZjMWFmNWZhYWQgcmVsZWFzZTI2LW1haW50Cis3NTgwNCBiZDc3NmUwMTk5M2FjYjkxYTAwODlkZmE4NGRkMDcwMWFhNmNkOTQ0IHJlbGVhc2UyNi1tYWludAorNzU4MDUgOWVkODk5MWE5MTQxYzY0MDkwZGMyNWM5NjE5Yjc4MDUwMzM5Yjc2MiByZWxlYXNlMjYtbWFpbnQKKzc1ODA2IDY3MGNhYTk3NzVmNjBhYjNkZTU2NjIyZmZmY2U5MDlmNWQyMjk5ZDIgcmVsZWFzZTI2LW1haW50Cis3NTgwNyA3NjRhZTJlYzRhNzA2MzFiMjM0MDYwYWViNTQzYzBjYzFlNWI4NmU5IHJlbGVhc2UzMS1tYWludAorNzU4MDggYTA1ZTFhNTczNjNkNzVhMTE3ZTJlMDY1OGM1MGI3YmE1YTA3MTY2ZiByZWxlYXNlMzEtbWFpbnQKKzc1ODA5IGJlNTM0OGIwNTRiNGY1YzBhMWQ4MjZjMDdlZWM1OTdlNzU4NmQzYTggcmVsZWFzZTI2LW1haW50Cis3NTgxMCAwMGU0NWQyMWYyNWJmODVhNDdiYmM0YjIyMTBmY2Q3ZGI2MWNjNjc5IHJlbGVhc2UyNi1tYWludAorNzU4MTEgMWMzMmI5NWZlNTc4ZTcwYmY1NDUyYjA3MWRjYjliYWE2YTI0ZTI3YyByZWxlYXNlMjYtbWFpbnQKKzc1ODEyIGI5N2U4Y2ViZThlZGE1ZDFiYzI0YzI4ZWRhYzFlYzRiMjQwMWU0MTUgcmVsZWFzZTMxLW1haW50Cis3NTgxMyBlNTBiYTJhODE5NzM2NzI5MTI3ZmY5N2M2MzgzNmU2YTQ1MGQxMGY4IHJlbGVhc2UyNi1tYWludAorNzU4MTQgZTRiY2ZlMmU2ZDU3NmMwZTdiMjEwZWY2ZDNlOTNlOTMyYjIyY2YzNiByZWxlYXNlMzEtbWFpbnQKKzc1ODE1IDA5N2MzNjBiNGJhNTlhMWM5YzE0MDg3YTFiNjhlYmM4ZWE4ZTYxOTYgcmVsZWFzZTI2LW1haW50Cis3NTgxNiA2MDRkYjlhODNkMTg3N2UzYzZhYWEwMTk2NGZhNWJhOTkyYzc1MzM4IHJlbGVhc2UzMS1tYWludAorNzU4MTcgZWYwODI1M2YyOTBiYWJmMTFiMTRjODBhODE4M2ViMWE5OGQzMzdiNSByZWxlYXNlMzEtbWFpbnQKKzc1ODE4IDNhOTkyMjkyY2NkODVmMTZmNGM2NzkwNjc5NzhhNmZkYzZlNDczMDkgbGVnYWN5LXRydW5rCis3NTgxOSAyNWJjM2Q2OWU4YWZlMzAxNTZkYzVkZGEzNDY5M2JiZTNjYmY3YWYxIHJlbGVhc2UyNi1tYWludAorNzU4MjAgMTlmNzZmYWJhOTY1NGRkZmRkM2M1NjI4NWE5YjdlN2FjMjBjZTM1YyBweTNrCis3NTgyMSA4NjUzMWRlNzU4OTRmMWZhMjI0ZTczNGJhMGU5NTRkZTZlMjljNzQxIHJlbGVhc2UzMS1tYWludAorNzU4MjIgNTk1MDVlN2U3MDczMmExZWIyOWNkMTc5YmJiNzJiMzUyMDI1NWI4NCByZWxlYXNlMjYtbWFpbnQKKzc1ODIzIGU0NzMxZmQyN2Q5MTY4MDUxNDgyMzJjZTU2ODljZDkxZDRiOTYyZTkgcmVsZWFzZTI2LW1haW50Cis3NTgyNCBlOTlhZGZjOTJkYzJlZjU3MzExNTIzZTQ0Yzg3YjZiMTI1MTliY2Q5IGxlZ2FjeS10cnVuaworNzU4MjUgMzU5NjJiNTQxNTk1N2VkZDMwNmY4NmZjOTA5ZmM4ZDc1YzY0MmEzNSByZWxlYXNlMzEtbWFpbnQKKzc1ODI2IDQyZmQ3ODU1MzQ3ZTg1OTFhNDFkYTNmNDkxZTBiMDBhMDM0ZGUzODYgbGVnYWN5LXRydW5rCis3NTgyNyA2MzJkZGIyNzUzMjFkZTI1YWY3YmZhYzBiNzM4YTlkZTA5OWQ5Y2IyIHJlbGVhc2UzMS1tYWludAorNzU4MjggZjhmYTM2ODBjNWQzNTU4MjI1MmRlYzE5MjY5NjhjODhiZjBmNmIwYiByZWxlYXNlMjYtbWFpbnQKKzc1ODI5IDYyOWQ0NWJhNDZkNzljZjMwZjQwNTYxYjQ4ZmNhNGE0N2JjNTUzMDEgcmVsZWFzZTI2LW1haW50Cis3NTgzMCBlMWJiYzYyMzJmMjlkMGEzODkxMjM5NTE1NTMxNjFkM2ZlNzg1ZmVkIHJlbGVhc2UzMS1tYWludAorNzU4MzEgZjhlZDg0NDBjZGI0NWZhMWIzZjRkM2ZiZTZiNTA2OTcwM2FiNmEzMiByZWxlYXNlMzEtbWFpbnQKKzc1ODMyIDEwNzUxNzk0NTFiNTYzYjc1OTExMWZkOGQyNDMzNmNiNWMzN2FlNWUgcmVsZWFzZTI2LW1haW50Cis3NTgzMyBhZTk0ZjY4NTUzMTAwYzA4NmM3NzJiNDRiMDMyYTRhZjA4NDc3NzlkIHJlbGVhc2UzMS1tYWludAorNzU4MzQgYjQwZmE4MjZlMWNmMGQ4YzNhN2U3ZTdiYmM1ZjM0NzBiZDFkZTg1OCBweTNrCis3NTgzNSA1ODBhYzE1MTE2NTIzYzFkZGFiMTI1ZDkyZTliN2ZmNDBkNzAzNDEzIHJlbGVhc2UzMS1tYWludAorNzU4MzYgOGE3NzRhZmU5OTAwOTBiOTlhOTE1MTQ1YmIzZjQ3OWNmODY0MDY0NCBweTNrCis3NTgzNyBjN2ZmMmZjZDJiNmJmMGU3ZTk2ZjY1Yjc3NDYxMjA1MTBlZmNlODkzIHJlbGVhc2UyNi1tYWludAorNzU4MzggMjY5ZjFkOWM4NmNkMjI2YTI4OGZkMjc5MWE0YmU2NTFhMGU4YmViNiBsZWdhY3ktdHJ1bmsKKzc1ODM5IDhmYjhmZDNiNjdjZjY0Mzg4NzE2ZDc2ZDNmMmI4YTcwZTM2MWJkNDMgcHkzaworNzU4NDAgOTM2YWFhMTI0OTJjNzA2YjMxZjBjYTExNDcwM2Q1YzZkY2I5NWZjOSByZWxlYXNlMjYtbWFpbnQKKzc1ODQyIGIzMWZjYmFiMDUyMGM0ODNjNTBhNTZkMTVlNTVlYjYzOWY1Y2I3MmIgbGVnYWN5LXRydW5rCis3NTg0MyA5NTVkOGZhMTJhZDU0YjVhY2I4NjAwYWYzMDIyMzhhNDg5ZTc4YTllIHB5M2sKKzc1ODQ0IDVjNTQxNGE4YzdjMjQ3MTY5YmJlNTY3NGMwMjViNjc2OGI2ZDllMjIgbGVnYWN5LXRydW5rCis3NTg0NSBlMWQ0MTI0ODkxMDdiNTMwYTY3NTdhNjRiNTcyYjU1OGIwMzkxNmM5IHB5M2sKKzc1ODQ2IDE0MGQ4OGQxYjE3OThmYjJmN2M4NWMyNGZhMzgwODY4Y2EzMTY2MWIgbGVnYWN5LXRydW5rCis3NTg0NyBlMjU5YjM0YTBiODgxNDQyNzkzNzc3NDA2MDFlNmFlYzk4N2M0NDEzIHB5M2sKKzc1ODQ4IDExZmMxNjBkNTNjNGRjYTUxZjViN2E1NTJjYzkxZWRmMWU5MjU4NjUgcmVsZWFzZTI2LW1haW50Cis3NTg0OSA0M2JmZjY5MDNhYTVhMzU0YmMwNzg1YjgyYzc1MmU2NTEyNzVjYzZhIGxlZ2FjeS10cnVuaworNzU4NTAgZDdjYzBlYjNmMjM0Zjg0MGM2ZjA5ZjkwNGNhODA5ZGRlNDgyNjRmNiBweTNrCis3NTg1MSA1ZjYxYmQzYWE0MjdiMjJkYzg5MDczNmU1MzcwMjkyMjYwMDlhZTRmIGxlZ2FjeS10cnVuaworNzU4NTIgZTRiZmJlOWI3NGM4OTI5MmU0ODllZDM0MmVlMDUyMWVlMmM1MTI1NyBweTNrCis3NTg1MyBkOWQ2OTA2MGY1ZTRiZGMzYzExZGVmYzBhNjZkZGU2Y2EwZGQ4M2VkIHJlbGVhc2UzMS1tYWludAorNzU4NTQgMWJkYTQ2MDJmOTM5YTJmM2QxMjE3Yzk2N2M3OWQ2YjEwNDQ2ZTJlNyByZWxlYXNlMjYtbWFpbnQKKzc1ODU1IDVjODg3Nzk0NzNiOTI5NjM4NGQ0OWQxZWMzMjA5Y2FmZDBlYTM1MTggbGVnYWN5LXRydW5rCis3NTg1NiBhZjc4ZmRhNTdhZjg2NGY5ZThlNWQxNmQwMjU5ODkzMDM3OWYzNzJlIHB5M2sKKzc1ODU3IDAyMWQzYTM4YmQzNmE0YTA3ODQyYTdhYTgwNGJkMDdjMjg3NzJiMTYgcmVsZWFzZTMxLW1haW50Cis3NTg1OCAwMjlkNjk2NTliNWY5OTU0OGZmNGU4YzcyZTA5YmEyNThiYzliNzdhIHJlbGVhc2UzMS1tYWludAorNzU4NTkgY2VmNWNiMjcwZmRmN2M5NjZjNjJhNTEyODUyZjczNGYwNzk3NmE0ZCByZWxlYXNlMzEtbWFpbnQKKzc1ODYwIDBkZjQ3YjFiMzBiOGEwNzk4MTk5NWNiYjNkNmNiNGQ3YzdlY2I2ZmMgbGVnYWN5LXRydW5rCis3NTg2MSA4MTQxZWM4MWFkMmQzODg4ZjIzOTliYmM2ZThjMDdiY2NjOGI1YTcwIHB5M2sKKzc1ODYyIDcwZWI2YTEzYWJjZDY4NTY2MDVjZmJjYjI2NGE2ZmFjYjM0MDVlNmMgcmVsZWFzZTMxLW1haW50Cis3NTg2MyBiMDg1ZmQwNjExZGUwZTgxZjFlN2RlMTFjYzc0NGY1MzRiNGRlYWJhIHJlbGVhc2UzMS1tYWludAorNzU4NjQgMmYxYzUyZDlmZWVjYWRhMjRiNzI1ZjMyYWI0M2YxODRiNTgzNmIzNyByZWxlYXNlMzEtbWFpbnQKKzc1ODY2IDk4OTllY2E5Yzg1N2Q5MWQ1MmViNzAzZDQ3ZDJiNWM0ODg2ZTViMmQgbGVnYWN5LXRydW5rCis3NTg2NyAxODUyMDRkNTQxZmU1NmUzMTY4ZTUxYzEyYWFjMDg2YWEwNjk1OTgzIGxlZ2FjeS10cnVuaworNzU4NjggNDExYjZhY2JjZjEyZTc2MjcyODk1M2EwNGQ1YWEzNTE3OTAxY2FjNiBsZWdhY3ktdHJ1bmsKKzc1ODY5IGI0YmFlYzFlNmEwYzMzOGFmZTFkYTRjOTAzMzRmYzIzODc0NjY3MGUgcHkzaworNzU4NzAgZjVjNzJhY2E2YjYwYTNiMDU2ZDIxMWEyMGNlMTg2OWYyOWI4YzU5ZiBweTNrCis3NTg3MSAzYWU0ZDM2Njc5MjBmYzM0YWFmMzk1NmExMTJlZGUzOTY5ZTY3OTRlIGxlZ2FjeS10cnVuaworNzU4NzIgZmIxYmZhOWNhYmYzM2JjNmU0ODRjZDY1M2MxYTA3ZWRmNDM5MWE4MCByZWxlYXNlMjYtbWFpbnQKKzc1ODczIDQ1YTI3Zjk2MWFhMWRmNGU5N2U3NmMzYmM2MDA0MWY0MGQyNDc4OTUgcHkzaworNzU4NzQgMjA0ZjMzZDQyNzYyYjI0MTM1OGIyMTZlNjlmM2RhNTRkZmRiYTgzMyBsZWdhY3ktdHJ1bmsKKzc1ODc1IDM5NTlmYTEwOTcxOGVjMzdmMGYxMDM0M2UzYTgxZjczZmQ4ZjMxZTQgcmVsZWFzZTMxLW1haW50Cis3NTg3NiBjOTI2OGZlYTgxMDQ5MTI3ZWM1MzYxNDNkOWYxNjc2MGFmNmIzYjM4IHB5M2sKKzc1ODc3IGJlYzI2NmY2ZDUwODFlMjU5NWNjYWVmOWEwYTVjZWFiOWI2MzZiYjUgcHkzaworNzU4NzggYjZjYzAxMzRhZjMxNDBlMTE2ZGIxNTA0MzZjM2IzYzIzMDNmNTM1NyByZWxlYXNlMzEtbWFpbnQKKzc1ODc5IDIxYTNmODNkOTlhYmY3ZDdhOWVhNjFlMTI3ZTBiZGRjZWRkMDJhNWEgbGVnYWN5LXRydW5rCis3NTg4MCAxMjhkYWY2Njk5Y2NhMjhkMzMzN2VmYjRkODVjNTZlMzY0OTY0ODVlIHJlbGVhc2UyNi1tYWludAorNzU4ODEgMzkyN2UwZTEzODI0MTI2ZTczMTI0M2VkZjc3ZGNjM2VjM2FmZjdiYSBweTNrCis3NTg4MiAxNThiMjExZTZmYThjMWM4OGI2ZjEyNjQyNjQ4MWM4MmYxZmU5NDA3IHJlbGVhc2UzMS1tYWludAorNzU4ODMgZjEwMTA0MDUxMzM5YjhhYjY3NzE1YzRmNTFiZmY4NjQxMDNmYTlhOCBsZWdhY3ktdHJ1bmsKKzc1ODg0IDQ0ZjY0NDcyZTkyMjFiN2VjMzk2YTM5OWJlNmY1MTU4Y2UwYTEyMDQgcmVsZWFzZTI2LW1haW50Cis3NTg4NSAxMjQzODlmNGViYWRjMzljNThjNDAxZTI4ZTU2MThjNGMwZTI2ODRkIHB5M2sKKzc1ODg2IDY5MGM1NjVjMTVhOWUxZmYyMmNmMWY4NzJhMjc5ZWQ5YTJlNjdlNDAgcmVsZWFzZTMxLW1haW50Cis3NTg4NyA2OTQ5Y2U3OGMwNjU1ODFlODNjYzBhNzI1NjlhOWQ2MmVhN2U1ZDRiIGxlZ2FjeS10cnVuaworNzU4ODggN2U2NmZmZGJjYmVmZmJmNmE0MmZlODk5YTVkZGZiZjY5NTg5YTZiMCByZWxlYXNlMjYtbWFpbnQKKzc1ODg5IGQwZDdlMTViNDk1MzVhMDA5MGNkZmRlNjY2YTMwNjBhZWVmZDJjNmQgcHkzaworNzU4OTAgNWU0ZDFiNGY2MmZhMWQwODc4NWZiYjhkMWI1ODA4NGRlNzlmZjk3OSBweTNrCis3NTg5MSBhZDYxMTI5YzQ0MjIyNTY5MmRjMjUwYjRkYmE2NmQ5ZGY2MzAzYWQxIHJlbGVhc2UzMS1tYWludAorNzU4OTIgZTFkY2E5NzJmYTM1ZDMxYTU0NmNiNzA4ZjY2N2E4ZGFmN2E2YzIzYyByZWxlYXNlMzEtbWFpbnQKKzc1ODkzIGZjNWE3NzE4NDMzYTg1NDRmMWVlNTMzMDY5MzUwODQ1YWQ3OWM1MmQgbGVnYWN5LXRydW5rCis3NTg5NCA2NGFkMzY1MDc5NDQ2NmU4NGNjYzUyMmIzZGM5MDE2ODJiZGUzZWVjIHJlbGVhc2UyNi1tYWludAorNzU4OTUgMTc3NzlhOTRlODI1MDg2YjY2MzFjZmViN2YzMDNkZmE5N2NmZjZhMyBweTNrCis3NTg5NiAwZjI5YWEyZDQ4NDRmNzE3NDc5ZmI5ODJiMDQxZTliNWI1MmMyMzQ2IHJlbGVhc2UzMS1tYWludAorNzU4OTcgNzE1NzRmZTQ5NTc2N2IxMTg3NDE3ZjcwNmM2NmM3ZjI3MTE0OWQyMiByZWxlYXNlMjYtbWFpbnQKKzc1ODk4IDAzZDc2YmRmOTM2MmFhNTQyZjM5ZDAwNTg2YmRhMTNkNzA3NzgxNjMgcmVsZWFzZTI2LW1haW50Cis3NTg5OSA5ZTI0ZmQ2YTU1ZjA4ZWE1NzI3MWIzYTA1YjY0NmViNWI4MzQ0NGNlIHJlbGVhc2UyNi1tYWludAorNzU5MDAgMDQ0YTY4YmMwZDJlZmI5NjIzZTI2YjM2MGI3Y2ZlZGMxMmU5ZTE4YyByZWxlYXNlMjYtbWFpbnQKKzc1OTAxIGMxODIyNDk4OGJiMWM4NmY4NDQ1ZjdjMDdiMjg2YzJmZGRmMTU2ZjUgbGVnYWN5LXRydW5rCis3NTkwMiBjZDlmNzJmYmE1M2IwMzE1MDM1NzQyNzkwNjgxZmFiZmE2MzJmZThkIHJlbGVhc2UyNi1tYWludAorNzU5MDMgZWY2YWI1ZDBhMDA2YTliYzFkY2QwMzI0ZmE3OTllNzM4YzhhMGRmYiBweTNrCis3NTkwNCA1MmIyN2MwODE2ODY4YTgwNTVmNjI1MmRmMzVkMTYzNTY1ZDc1OWQzIHJlbGVhc2UzMS1tYWludAorNzU5MDUgYWFmYTY2YzU3NDQ0ZTNiMjVjYWZlZDAxYmIwZjdhYTljOWI4M2I3ZSBsZWdhY3ktdHJ1bmsKKzc1OTA2IDFlOWVlYzczNDQ3ZjI4YTBkMGViNmUxYTMxNDA2NDNmZTRiMTJhOGEgcmVsZWFzZTI2LW1haW50Cis3NTkwNyA5MGM3MTQ2ZGRmNDIxOWY5NDMzNDNkMTEyMDEyMGM4MWYxYWUyMGU3IHB5M2sKKzc1OTA4IDc2ZDA0MjE0MzhhYzM2ZjRhNWMzOWFmZDJlNjhkM2NhOTIxNWFmN2QgcmVsZWFzZTMxLW1haW50Cis3NTkwOSBlN2NlMjUxYjNiZmI2ZDRkMTY1YjI2MGVhMTZkYzBmZTMyMDFhNGQ1IGxlZ2FjeS10cnVuaworNzU5MTAgZTc1MGI5MGJkOTgyYjMzNTJhYzg4N2M3NDg3MjBkOTZhYzczMWFiZCByZWxlYXNlMjYtbWFpbnQKKzc1OTExIDQ0ZGUzYTQwMjQwMTQ1OThlNGY0YTBiZDViYjkyNjRhMTcyZGE0MjMgcHkzaworNzU5MTIgYTFkZWM1N2JlYTVkYzI2MDUxN2Y2M2I3ZTliNWQ3N2YyYzYwYTdiOSByZWxlYXNlMzEtbWFpbnQKKzc1OTEzIDJhOTYxZDdmMjAyOGJiMzUxODNmZDY2YjQ1MjRhMmQ0NDViNWI3ZDEgbGVnYWN5LXRydW5rCis3NTkxNCA4NGI4YTJiOGU5YWU1MWUwMDk2MmVjZmNkMzI5NWMzNWEwMDUwNWFiIHB5M2sKKzc1OTE1IGI2YmUzMDAyZDNjYTJlYzdkNGYyMTY0NzZmYjdmNzUyZGY1YTEyYWMgcmVsZWFzZTI2LW1haW50Cis3NTkyMCAyMTQ3YzJlYmNlZDg1OTNkNjZiZThkZGNkNTdjYmNkYzlkYTk5NmJlIGxlZ2FjeS10cnVuaworNzU5MjEgMjBlMjFjMTU1YzA1NjJmNjRmYTczYWQzMjM3MzcwYjk3ZjBjMGQyMSByZWxlYXNlMjYtbWFpbnQKKzc1OTIyIDA2NjY4NWY2OTgzYWQ0MGVkYjJhYWE1MWUzMzZkMzQxNjRkYmI5NzAgcHkzaworNzU5MjMgYTc5NTUyOWIwOWM5NjZhMjdlZmE0MWYyNzYxODJhNDlkMzQxZTMzZiByZWxlYXNlMzEtbWFpbnQKKzc1OTI3IDllODJmMTdiMmM4ZGEyMzAzZjlkY2MxNGQzNWRmM2I2YzVlN2FkYmUgcmVsZWFzZTMxLW1haW50Cis3NTkyOCBkYjRkZmRjNzQwMjlhZDk4NDY1MmMxMzUyMDYxZjFkMDIwZTdkZWQ2IHB5M2sKKzc1OTI5IDg0MDJlNDc3ZWI0ODdkZDRkMDI5MTM5Yzk5MjJjNmYxZTBlMjFiNDAgbGVnYWN5LXRydW5rCis3NTkyOSBlMzU4YWYyNTY5Yjk4YzEzYTQ3ODg2NjBkY2JlN2FmNTdiMmE1MTg2IHJlbGVhc2UyNi1tYWludAorNzU5MjkgNDQ4OTA5YTk0MGMwNGRhMDNiMzlmNThkM2VhZjc0OTIzMzZmY2I4MyBweTNrCis3NTkzMCBmMzJkYzg0YTg3NmNjNTk5MWI2N2Y5YjhlNzhkZjZjYTk0MDE5MTFmIHJlbGVhc2UzMS1tYWludAorNzU5MzEgODQ0MTgwYjdlNmZmMGUwZmE4NzI1MmI0M2YyNDMzN2Y4OTQwZmRjMiBsZWdhY3ktdHJ1bmsKKzc1OTMyIGM3MTVmODI1NTVhNGM5MzQ5NmVhODJiOTRjMWI3ZmM4MWRiMTdlODggcHkzaworNzU5MzMgZTgwOTk4MjYyOWM0ZDgzZGY3MjA3YjY2Y2E2Njk5MGM3OGMyNzVjNSByZWxlYXNlMjYtbWFpbnQKKzc1OTM0IDAzMmQ5NzQ5MDQ3ZDdlMTNkZTYzNTJhYzYwOTQ0ZTZjYjVkZWVjODkgcmVsZWFzZTI2LW1haW50Cis3NTkzNSBiNTcxYzY2ODUyMjlmM2MwODE4MzQ5YWVmYjY0OGNhMDgwNjQyZGVkIGxlZ2FjeS10cnVuaworNzU5MzYgM2NmZWNiYzdhZTk1YTdmNjI5ODA5MmNkMjg3MGQyN2ZmMjQ5OTFjYyByZWxlYXNlMjYtbWFpbnQKKzc1OTM3IDhjZmY5NDkzMjNjOWU2NmJjMThkY2U5MjRlNDljNGJkYTc3MWY5OTMgcHkzaworNzU5MzggYjAwOWEzODc2OTliMzJkMWM0NGFjYTJjYjkyZGVmYWExZGU0Yzg0ZCByZWxlYXNlMzEtbWFpbnQKKzc1OTM5IDU1ZTUwOGUyNTM1YzlhMzM0ODI4ZjIwNDU0NmFmZTkzZjE3NTMwYjIgbGVnYWN5LXRydW5rCis3NTk0MCBmZmM3ZDllYTI0ZDkwMjJmZjZlNzZkYmFjYzcwYzIyNjM3ZDcyZWU0IHJlbGVhc2UyNi1tYWludAorNzU5NDEgYWFhMmIwN2MyYzQyNThiNDE0NzBkNTNmYzg2ODUzNDRlY2I5NmQxZSBweTNrCis3NTk0MiAwNWZkNDhkYzJhZGE5YmYwYmYxOTUxNjM5M2UxMjQxZjk2MGFiMDAyIHJlbGVhc2UzMS1tYWludAorNzU5NDMgMTVmMTg3MjQwN2JlMjY0NmExMDFmZGI0ZDRjMTRiOTc0NmY2MmM0MiBsZWdhY3ktdHJ1bmsKKzc1OTQ0IDYzZWIyODgzOTI2YjJkNWI4MDI0YjUyMDQ2MTJkYTNmMGRmYzU2ZWEgbGVnYWN5LXRydW5rCis3NTk0NSBkNWEzNGVmMmZjYTdjMzIxMTc0Y2MwYTM0Yjk0ZDY5MjhjNjAxYjJmIGxlZ2FjeS10cnVuaworNzU5NDYgNTNlMzgwMDVkNTA3YzRiYTdlYjZjY2ZmMzlmYmRmZDExNDhiYTJlMyByZWxlYXNlMjYtbWFpbnQKKzc1OTQ3IGViZGRjZWQyYzljNGQ0ODQ1ZDA5MDA2MTY1ZWJkZWI4NTk2ZDY2OTMgcHkzaworNzU5NDggMGVkNGJmNDMwZDRlNWVlMGE3YjhhYmIxYmM1MThlZmY4MWIwYjlkNyByZWxlYXNlMzEtbWFpbnQKKzc1OTUyIGM2ZDYyMzQwYWViZjBjMzE5MGY1OTYzMjNkNGQwMjMzZTJkZWZiYjUgbGVnYWN5LXRydW5rCis3NTk1MyBlNjY1ZDIxNzBlODUyYjE5ZDYwOWIyMmZlYTk0MzAyZTYzZmRhNjJhIGxlZ2FjeS10cnVuaworNzU5NTQgNWY1ZTNjN2RhOGNiNDVmZTc0YTFjYzEzN2Q0ZDE3OWY0NzZiNDM3ZiBsZWdhY3ktdHJ1bmsKKzc1OTU1IDdlMDIzNzFhYTUwNjAyZjA5ODE1NGNhNTk4MzVjMDY3OWI5ODY1OTUgbGVnYWN5LXRydW5rCis3NTk1NiA0MTFmMjUyYTI5NGE0ZmUyMTg2NjE2YzdiMjQ3ZjdjMzNjODAwM2I0IGxlZ2FjeS10cnVuaworNzU5NTcgOWRkYmQ2OTgxNWNhN2EwOTZjNzQxZjg2NWRjNzQ0NDlmZDcxYzI4MSBsZWdhY3ktdHJ1bmsKKzc1OTU4IDI5ZmU1ZTdiZDZlZTE5MDBhODUzMTAxYmZjMmEyZTEwZTUxZjIzM2QgbGVnYWN5LXRydW5rCis3NTk1OSA2Y2Y4NGU1YTZkZDdlNTU1ODhmNTNkN2M2NzI4YTRjNTE2ZTMyNDNkIHB5M2sKKzc1OTYwIGUxMWQyNDY3ZDEyNjc5N2I5ZjNkZWE3OGUyNDE4MGZiOTIwMTBhNTQgbGVnYWN5LXRydW5rCis3NTk2MSA3MTNlMjFhNTQ3MWVkNzYzNjQyYzg1NjBmYmRhMzk4ZDUwY2M0MGQ2IHB5M2sKKzc1OTYyIGFjYWZhNTE0MmJmOTE4ZjQ2MGY3MWE3N2I4NjlhZDAyZGVhMWJlYzAgbGVnYWN5LXRydW5rCis3NTk2MyBjMTQ2OTI1MjM0ZjAzYWMwOWM0ZjBlYjUxMzM1YmY2YTA3YjQwMTQ4IGxlZ2FjeS10cnVuaworNzU5NjQgYTE4M2M4MmI2Mjg5NDdjZmUzOTg3ZmRjNTk0NTllNmMwMzAwNDY4ZSBweTNrCis3NTk2NSBlODdhNjY5OGEzMDVhNjQ1MDEyNzY3MDlhNmNmOWU0MjRkMmE4YTA2IHB5M2sKKzc1OTY2IGZkMjE4YWIwZTIyZWZlNTNiODMxNGRjYmE5YThjM2EyYmY5ZGQ3YzcgcHkzaworNzU5NjcgMzM4NjFjYTFmYjJiMTE4MTYwMjNjZDNkNzNhOTlhM2U1MzdmNWE0MyBsZWdhY3ktdHJ1bmsKKzc1OTY4IDA1NjQ3MDQ2OGZlMjllMThlZjFlMmE0NzNmNGEyMjQ5ZTBiZTk1ZjMgcHkzaworNzU5NjkgZDU2YjEwMzQ5MGE1NWIwMDNiY2FkNjYyZjQ4N2Q3OTQwMTc4YmQ5OSBsZWdhY3ktdHJ1bmsKKzc1OTcwIGJmOTNlNGRmN2JmYjFlNjMyNDkyNTgzNjRmYTI4MGFlNzFhYmVlZGUgcHkzaworNzU5NzEgOGQzNmRlYjM1NmYxOWY0YjhjODAzZWY5MDNhOWU5NzFlOWU0MmQxZCBsZWdhY3ktdHJ1bmsKKzc1OTc0IDdjODY5OTNiMTNjOWZkNzRkNDIxYTc0Y2I4MzM0ODNmZjI1NjE4OGQgbGVnYWN5LXRydW5rCis3NTk3NSBiNGU5MzM5YjQ5OWQ1NTI1YWM1ZWQ1NDA5OWZmZjllMjQwN2FkZDg3IHJlbGVhc2UyNi1tYWludAorNzU5NzYgZmNmOGE0ODY3OTIwNjNkZTY1YjAyYTE0N2MzOWM1MDY1ZGRlYjNmMyBweTNrCis3NTk3NyA2Y2I1MzI0OGU1YmU0YjA2YjM1YmZkMWQzM2RlYTlmNTQyOTI0ZGFiIHB5M2sKKzc1OTc4IDZhNmYzMmIwZmFiZDBkOGVkMzNmY2MxNTM3ZjY1ZjRhMGM0NmMyNWMgcmVsZWFzZTMxLW1haW50Cis3NTk3OSBiYWIzZTNjZDc2ZjFkNTI0NTExNmUyN2NjMDc5MWU3NWYyZGM5MjFkIGxlZ2FjeS10cnVuaworNzU5ODAgMTdkYzBiNTNiNDhlZGIxYWUxYzA4OThlNTFkZGI0MWJhYTFhYWE2ZCByZWxlYXNlMjYtbWFpbnQKKzc1OTgxIDE4MmZlMGFmNjA0ZTM1YWY2YjFiNjIzM2Q3NzYzYmZhZDYwYWYxM2YgcHkzaworNzU5ODIgZjU5NDMxM2I5MzY0NWFiMjRmODEyZjA3Nzk3ZTk0ZGEzYjllYTkzMyBsZWdhY3ktdHJ1bmsKKzc1OTgzIGZiNDk4YTBkZTBiOTVhYjYxYWYzZGMxMjE5MGMxNGY3ZjljNjBhMzQgcmVsZWFzZTI2LW1haW50Cis3NTk4NCA1YTk5MDAzYzliODNkODQyZjFiOTk1OWYzMzI2OGJmYzZlYTgwYTY4IHB5M2sKKzc1OTg1IDI2NGE3MzVhOGFmNzc2Nzk3ZGNiZDFiMDdmYTcyNGNmZDU1OWM5OGEgcmVsZWFzZTMxLW1haW50Cis3NTk4NiBlOWI4Nzc1NmFkM2IzYzI5ZTg5YjJjOTI5M2QyOTZiNGMwNmQ0ZjMwIGxlZ2FjeS10cnVuaworNzU5ODcgN2VjZDNlM2M5NTY0MjcxMGQ5MDFmMjU4NmU3MDhkMzExZWE1OTFhZiByZWxlYXNlMjYtbWFpbnQKKzc1OTg4IDhkNjc3MjVjYmI0ZTM1ZDhkODUwYTM0YTQ1NThiOTVjODU5NjQ1YzEgcHkzaworNzU5ODkgNzA0OWIyYzg2ZjA2MTBkMTE0OWFlMzM5YjIxNjVjOWI3ZDY1ZWY5NiByZWxlYXNlMzEtbWFpbnQKKzc1OTkxIDRjYmMzZmU5MzY3MWQ5MTViMDY5OWM1ZGU3MzFiNzRmNzIxMDkxNzkgbGVnYWN5LXRydW5rCis3NTk5MiA4OWU5ZDA1ODQ4OTAzZTU2YjNjMTUzOTE5NjBjNTg5MDBlYzJlZjI1IHB5M2sKKzc1OTkzIGFiMzg2OTBmZTAxY2Y5MzViYWZiZDIxMzE4ZDRiNGY0YWYyMmJmOGUgcmVsZWFzZTI2LW1haW50Cis3NTk5NSA3MWIzYWE4YTczMjBmZTQwY2MyMGQ4Yjc0MDcwYTNlYWNlZDJiYjg0IGxlZ2FjeS10cnVuaworNzU5OTYgMzcyNDZiNGMzY2NlMzllZTU4MjFkYWY3MDFhZTRmZjJiNjVkYzA5MCByZWxlYXNlMjYtbWFpbnQKKzc1OTk3IDE4MmNkMDRlMjlkYjExODdkOTY2Nzk5MmE1OGQ3NzgxMDZjNTNlZGIgcHkzaworNzU5OTggNDcxNzgwNGJiNTdkYzc1MGJkNTcwY2UzNjFjNTVmMjlkZDA5N2Q4ZSByZWxlYXNlMzEtbWFpbnQKKzc1OTk5IDlmM2Y4M2RmNjk3NWJlNmYwY2NiMDlhNzU0Y2I5MDgwMmRjYTlhYzggbGVnYWN5LXRydW5rCis3NjAwMCA4NDZmMjZhZDU4MDAwMjNiNmRlYTc2NmJjN2JjYWVmYzhiNmJlMzRmIGxlZ2FjeS10cnVuaworNzYwMDEgMjkxMzg2NGRkYmU5NTg5ZWEyOTZjZDNhMGQ5YTI0M2UzMTg3ZTE3YSBsZWdhY3ktdHJ1bmsKKzc2MDAyIDQyYmIzZTM2MTNmNmM5MGExYjU3NjVjYWVlYjBjMWQ5ZjYyYmVjYmIgcHkzaworNzYwMDMgZjgzYjQ4OTYyNzM5OTNhYjdmMTE0YWYwOGZjZTdlZWQ1MDljZTFkYSBsZWdhY3ktdHJ1bmsKKzc2MDA0IDAyZjVjNjAwODMyN2FmZTU1NTY1NjgzMDFhOWI1OGU3ZjlkODU4YmQgcmVsZWFzZTI2LW1haW50Cis3NjAwNyAyMTFlN2I1Yjk5OWMxYTNkOTFkNjM5YTA1N2I1YmMzOTg3NjdlYjZlIGxlZ2FjeS10cnVuaworNzYwMDggNzAwMDJmMjdkMjgxZWY2YmVkZTgxZDZiMDQ1ZjY3ZGU4ZjhjZTQ2MiBweTNrCis3NjAxMCA0MDI2OTZhYzRmOTgyY2ZiMjdlYmI4ZmZkNDVmNTAyOTNhYTY3ZTYwIHB5M2sKKzc2MDExIGIwZTRlZmI4M2Q2MGM3N2YyOTk4NDAxOGI4NjNhN2ZhZTIyYzc4OWUgcmVsZWFzZTMxLW1haW50Cis3NjAxMiBmZjhlMzU5ZTI4MDg0MzI1OGQzYjJlYWNhYWQyOTQ2YmVkNGM3NzgzIGxlZ2FjeS10cnVuaworNzYwMTMgNmI0YzczMjBiYTNhMTdmMjQyMmJkZGM0MzY2MjQwOWVlMzkwZjY1MCBweTNrCis3NjAxNCBiNjkwMTc3NjIyMDhhYWE2ZjJlODkzY2NkODk1MDE4MTY1ZTk1MTA5IHJlbGVhc2UyNi1tYWludAorNzYwMTUgNTkyNTkwMGVkZjE2ZjBjOTRiNWJjMTg5YWQxYWFjOGMzZTcwOGM4MSByZWxlYXNlMjYtbWFpbnQKKzc2MDE2IDc1N2I5N2M2MTY5MWUyOTIzMDk2NWY1N2I5Y2EyYzM4YTlmZjQ5OTkgbGVnYWN5LXRydW5rCis3NjAxNyA1Yjk1ZTRlYWM3YThiOThhOWE2OGIxM2FmZTk2ZWNjZTY5ZDk4YzUwIHB5M2sKKzc2MDE4IGVkMTY2ZmY3ZDk1MjM4MWM0NWRmMjFkMGMzNTE5MWMzMzBiMzg1ZWIgcmVsZWFzZTI2LW1haW50Cis3NjAxOSAxMGZlMjBmZDZmYjNkOGM4YWRhN2ZmZjYyZjIwNjY5YjgwZGYyM2MyIHJlbGVhc2UzMS1tYWludAorNzYwMjAgNGRiODQwNDVhN2YwMDcxYTBhODJhMGYxZjQ4MDgzOTQ3MzRiNWNkZiBweTNrCis3NjAyMSBkYTZhZDk4ZDVkYWVmMzA4YTNlNDBhZWNiNWQ5NTRhZTE5ZTE4NzI1IHJlbGVhc2UyNi1tYWludAorNzYwMjIgYzc4YTAwYTFkNmRiMTgzMGExODU3NGNmMTg3YjFmOGI4MjhiNTE1YyByZWxlYXNlMjYtbWFpbnQKKzc2MDIzIDkzYzdmNjUwOTM3ZjdlOTU3OGE2MTRjN2FhY2Y3Y2E1NGI1OGE1ZmYgcmVsZWFzZTI2LW1haW50Cis3NjAyNCA5MDEyNTliYzBiNjJlYTAxOWZmYTZhNTA5MGI2NDZkMDdiY2RiMzNlIHJlbGVhc2UzMS1tYWludAorNzYwMjUgYjdlNzYyNzdmNTQ1MjY3YWY4MGRiMGQ5ZjU3ZDlhYjNhZTNiYTIxNyBsZWdhY3ktdHJ1bmsKKzc2MDI2IDFhYTZiNjhlODUyMzA0MTdjM2E3OWMyZjAzYTQ0Y2RmMTUzOTA0OWQgcHkzaworNzYwMjcgNjU4ZWI1OGQyZTY4Yjc1NDA4MzU0MzJmNjYzNDY2ODlkOTFlNTBhZCByZWxlYXNlMzEtbWFpbnQKKzc2MDI4IGM3ODVhZmE2Zjk1YzU2NDlkMGY2NTNhNWQ4ZTQ3OGJjZDU4MmQ5ZjkgbGVnYWN5LXRydW5rCis3NjAyOSAzMDM5YTRhZDdlMzlhMTFhY2I3NmRmOGNhMTVmZmEwODM0ODlmZDZkIGxlZ2FjeS10cnVuaworNzYwMzAgZGRjMTQxZDllZjFiMWJmMzFiODUyMWViY2MyZmU0M2Q5MGYwN2I3MyBweTNrCis3NjAzMSAzODcxOWI4ZTBjOWY3MGUyZjI5MTJlZmU0Y2Y3NDIyYTg3ZWYyMGQ2IHB5M2sKKzc2MDMyIDM4ZWI2YThhZGMyNDJiMDI0NGIwYTIxZmZiYTk0YTRmZjI4NzczNDQgcHkzaworNzYwMzMgOGNhNGQ3NzY4MGM2ZDI0MjE0Njk5NTdmZmMyMTlkNGMwMWIxNTY0YyBsZWdhY3ktdHJ1bmsKKzc2MDM0IDUxYjk5NzNmNzYxZWM0MDBjNzQ2ZGVhMzNmNmY1YjkyZTUzNzhkMzcgbGVnYWN5LXRydW5rCis3NjAzNSA1NzU0MmI1MDJkMzIyM2E2YjUxZTI4MzkzMWEzODljYmY3MzFhNjllIHJlbGVhc2UyNi1tYWludAorNzYwMzYgM2JmNzYxZGY4MDJhYWRkYWI5MGIyZWIwMTcwY2QzMDhlZTIyYjFiZiBweTNrCis3NjAzNyBhMDFlNmNlZjEyNTZjOTEzOWM5NjMxNzZmMDEyYTA4ZTIzODczZTgzIGxlZ2FjeS10cnVuaworNzYwMzggMzQ0YzQ3ZGYzNjNmOGI5YzI4YTA2MDI5MjU1OTYzMzJhMzZiZDY0ZCByZWxlYXNlMjYtbWFpbnQKKzc2MDM5IDQ1ODBmZTA3MTllNzAyZDIxNjEzZTQxNmY0ZDZhNWI1MDUxN2I0ZjEgcmVsZWFzZTMxLW1haW50Cis3NjA0MCBmZDA1NDI3MTZhODA1NTFmYTJkODkwNWYzNDIzOWIyOWJmY2YwZTk4IHB5M2sKKzc2MDQxIGI1OTFmYzg3MjFmMmZkYzUwNTg2NjFjOTlmMzY2ZTUzOTQ1MzI1OTMgcmVsZWFzZTMxLW1haW50Cis3NjA0MiA2ZGM0ZmFhNDVjYmQwODkwMTBkZjVhOWNjMzBjOTE2YjA3ZjgzZDY1IGxlZ2FjeS10cnVuaworNzYwNDMgMjhmZWY3MjY0NGI3YzY0NDRjZTViMjlkYjhhMGIzNWMwZWZjZGI2NiBweTNrCis3NjA0NCA0YTg0NTllMzI5MTkyMzJiZWVjZjUzMDNiZjJjMzYyNWFjN2Q3MjQwIHJlbGVhc2UyNi1tYWludAorNzYwNDUgNmU0ODlkM2Q3M2I4ODA0OTE1MzdhZWFmNGFlZmFlZmE2MmU4MTYwMyByZWxlYXNlMzEtbWFpbnQKKzc2MDQ2IDFlMWJlMWEzOWE3OTJlZjc2MGQ2OTI0YmMwMWU2M2M3Y2NiMDljZjEgcmVsZWFzZTI2LW1haW50Cis3NjA0NyBmMDEzMDJlNmFjZDU0NDYxMzU1NjliNzUzNDI5NWNkMzQ4NDE3ZDk4IGxlZ2FjeS10cnVuaworNzYwNDggNWQ2ZWQwODgzYmY1NzljM2Y4NTNmMTI0YTY0MTQ4YmYzM2U2Mzg3MyBweTNrCis3NjA0OSBhNWU0NzNlOTViY2VhZDVjNWRiM2Q3NmZmZGUxYzUyYTI0NTQ0YmJhIHJlbGVhc2UyNi1tYWludAorNzYwNTAgNDUzZjU0NzhhNjkxZGQxZGY5ZDViNGYwZjBlYWUxODlkZTZlMzExMyBsZWdhY3ktdHJ1bmsKKzc2MDUxIGI5MTkzNzBmMTgyMGZkYmExNTU4YjlhNzM5ZWNjY2I3NmMyZWI2ZWEgbGVnYWN5LXRydW5rCis3NjA1MiA2OThkZTUwMTc5OWQ5OTM1YWMyZDY4NmI2MzA4MDk3N2M4NmQwYzBiIGxlZ2FjeS10cnVuaworNzYwNTMgZDJkOGNhYmI5ZTNhOTIzYWIxMDM3YjBkZThjY2Y2YjllZDQ3YzYzMCBsZWdhY3ktdHJ1bmsKKzc2MDU0IDk2YTg1M2ZhZTgzYjIzNzRjODBiOWUwNDQyYWUzMTU5MjNmNzA5ZGUgbGVnYWN5LXRydW5rCis3NjA1NSAxNDAyYzc1Mjc1NjU1ZmRhM2ExOGY5NjI2NjM0ZTY0MmVkYzVlYjBjIHB5M2sKKzc2MDU2IDhhMGQzYzY5YWUyMWFkYmRhNGMwODZiYzg1NDU2NjJiOTU0YzU1ODkgcmVsZWFzZTMxLW1haW50Cis3NjA1NyA4OGEzNjQ2ZWYzMmMyYTc4MmJiNDE5YmMxZmM0NmE4Zjg2ODQ3ODVjIGxlZ2FjeS10cnVuaworNzYwNTggZTYwOGY1OGQ1ZDE4YjYxZDQyZDQwNTU0MjZiNmUzMTYzYjI3YjY5NSBsZWdhY3ktdHJ1bmsKKzc2MDYyIDk0ZTFiMTRlYzgwNGI4YWM5MjkwYjIwNTI4NjU4Mzc0ZGZmY2M1MzAgbGVnYWN5LXRydW5rCis3NjA2MyA5NTljNjhkMWQyOGEwYTBjNzJlZmEwZWRiZDc3NWJiZWEwMmY3NmUyIHB5M2sKKzc2MDY0IDNjZmQ2OTU2NGU4ZjA3NmZkNmJkODU5NGE3YjFlZDA4MDJiMmI5NDUgbGVnYWN5LXRydW5rCis3NjA2NiBmMjk2MGYxMTZlNzdhMmViYWQ1MTAzN2UyMmEwOWI3YTdhMzBjMmEwIGxlZ2FjeS10cnVuaworNzYwNjcgYmVlODk5NGIxM2RlZGI4MTcwMzk5YmNiMjRhMDY4NjAwNTQ5Yjg2OCBsZWdhY3ktdHJ1bmsKKzc2MDY4IGEzZjIxY2VlNjRkMWYxMjhhNjM1YmQxYzJjNGQ2MjdiMzBlNTAxZTggcHkzaworNzYwNjkgYTgwODZiMzE0Y2QwN2U2YzNlYjkyMDliMmQzNWYxZjNjNGU0NzgzZiByZWxlYXNlMzEtbWFpbnQKKzc2MDcxIDIwMWE0MTllOWUwNjYwYmU0NDhiZjEyNjdjOWJjOGQxZTE3YTc1MTAgbGVnYWN5LXRydW5rCis3NjA3MiA2NWIxMTIxYTI0NzNmZDIxZTYyZTliNGJjOWIxM2MxNjI2NGNjYTBhIHB5M2sKKzc2MDczIDZjMTNiZjM1ZDE2NjExNzRhYmVlZThlZjBjYWIwMTViMTg2OTIwYzkgcmVsZWFzZTI2LW1haW50Cis3NjA3NCAzMjAxZmFiMzUyMjBmNzg1Mjk5ZGQ4MjhlNTYxNDg4YjQ2NzI5Y2M3IHJlbGVhc2UyNi1tYWludAorNzYwNzUgYzkwMDhhM2U3ZjdmZDIzNDhiOTVhNDhhNDJhNjVjOTViMGJmNzUzMSBsZWdhY3ktdHJ1bmsKKzc2MDc2IDY4NWEyNGE2Zjk4Njg0N2YyNDIwY2ExNTY2MjI0MGYyNzIzMzRiMzEgcHkzaworNzYwNzcgMzJjN2Q5ODEwM2JhZWMxYTM3MWNmY2UyMTk4NmY3NDdiNDAzYWJkOCByZWxlYXNlMjYtbWFpbnQKKzc2MDc4IGI0MTFjZTU4NGI3ZmYwNDFhOWEzZGZhNmUzNTkxODE1MzBlMTZmYzEgcmVsZWFzZTMxLW1haW50Cis3NjA4MCA2MmRjZDlmZGQ3YjM0ZWU2NzJhNzIxODY0YmM2MDZlMjQ2OTM5MDNjIHJlbGVhc2UyNi1tYWludAorNzYwODEgYmIzN2M3YzI2ZmE0ODY1MTUyNzBmYzA0YWQ1ZGMwNWNmMzMwM2U2YSByZWxlYXNlMjYtbWFpbnQKKzc2MDgyIDE5YTU3M2M0NGFlMTFjMmJjMmRhNTEzYjMwNGMyN2I4MWQ5YzNjYjcgbGVnYWN5LXRydW5rCis3NjA4MyA5MmNjN2VkODNlOWMwMWExODNlODRiZjM1M2FhNjViMjc2MGI5YzcyIHJlbGVhc2UyNi1tYWludAorNzYwODQgN2ZkOTBlNWEwYWQ1ZjliMzMyMDQ1ZDMwZGI1MWJmZWNhNmViNDFmOSBweTNrCis3NjA4NSBmZTgwOGQ2NjQ4M2Q3YjVlOWRkY2IwNjZlOGMxZWFkODNmNDkwODVlIHJlbGVhc2UzMS1tYWludAorNzYwODYgOGM4MDdiM2E5MDUyMzIyNzA1NzJjNWIxZjliZTMzOWVkZmE5ZDEyZCBsZWdhY3ktdHJ1bmsKKzc2MDg3IDU5ZTlhZGNhNzcxYjM0YWFmNDQ3OTNhNDA3YjllYmNjYmNlYTIxMWMgcmVsZWFzZTI2LW1haW50Cis3NjA4OCAxZGY5MGUyMmJiNzA2MWU0ZTc3MjZhZGVmOWFlOGMxM2M2OGU1NWYwIHB5M2sKKzc2MDg5IDlhZjJlOTQ0MzlkMWI0NDZmMTA2NTc4YzdhNWZmMzIyMTI3MWY3ZDggcmVsZWFzZTMxLW1haW50Cis3NjA5MCAxZThhMzNmNjE4ZmIwNjNmNzRjYTZiNmM3YTk0Y2NhNzY0YjExNzJiIHB5M2sKKzc2MDkxIGZmYWY2NjVkMmQzZTVkNTZhZWRlMGJjOTkzMDdlMGRmYzE3OTA2MjUgcmVsZWFzZTMxLW1haW50Cis3NjA5MyA0MmZhM2UwOWI2ZTc5ZDMxZjhmZTFmMzk0N2U5MmI3ZDEzM2I2ZGYxIHJlbGVhc2UyNi1tYWludAorNzYwOTQgMzM2NGFjYmFhMTUzY2VjZmUzY2JiMzFmNjFjZmU0ZDcxNDlhZTcwNiBweTNrCis3NjA5NSBlZGE5NzljOThhN2ZiZTAzZDY3ZDBjNmRkYjcyZTMwMjQzNDJmZWM0IGxlZ2FjeS10cnVuaworNzYwOTYgYzk0ZTNiZjgzOTJiYTAzNTNiYTUxZTk5YmVmYWY2MTk2MjYwNDQ0OCByZWxlYXNlMjYtbWFpbnQKKzc2MDk3IDFmMTc1ODg0OGM2Y2IzODBkYzQxYzQyMGEzN2RmMzI2MDg4ZmVhNGYgcHkzaworNzYxMDAgZjk1YjVmYWExM2NmNWY0ZjZmOTk0ZjdhN2Q0YjU1OTk1OGU4ZDhjNyByZWxlYXNlMjYtbWFpbnQKKzc2MTAxIDUxODY5ODE0YmE5YThmOWRkYjc0M2Q3MGU2OTE0MmViMmZiMjcwZTYgbGVnYWN5LXRydW5rCis3NjEwMiBlYTczOGZmMTgwMTY2M2JhMzJlMzM0NTBiOTI0MTAyMmFhYjQxYjdkIHJlbGVhc2UyNi1tYWludAorNzYxMDMgNjA1ZDJmNGM3NTM5NDlkMmI5YTM4ZmQ1NzQwZTY5ZDMzZjlhMDg4MiBweTNrCis3NjEwNCBjOGJmYzRkYWZmM2Q4ZjQ4ZjM0YzYxNDhjYWU2OWFjMDU5M2NhOTIxIHJlbGVhc2UzMS1tYWludAorNzYxMDUgZjVkNjg2MDRjNmI5NTJhOGUxNmMwYjlhYTIyOWRjOTBiZDc5MjUyNyBsZWdhY3ktdHJ1bmsKKzc2MTA2IGQxNjE0NDI2OWQ1NThkNjcxZjI1YWNlNzE0YjkwNDhmZTk0NGEyMmMgdGFyZWtfc3lzY29uZmlnCis3NjEwNyAyOThmNmIzNDEyNWQzNThlM2Q4NTZlMmExNTdmYmNjZGNiMDk2NTYxIHRhcmVrX3N5c2NvbmZpZworNzYxMDggMDY4Zjk0MzBjYzI0MGIwOTVlMjUyOTNlMjJlMjE5Y2E3MDc3OWEyYyBsZWdhY3ktdHJ1bmsKKzc2MTExIGY4OWE5M2E3NzhhODFkMDY4ZGM4OTI2MWQ0ZTdmYTIyYzliZDU4MTEgcHkzaworNzYxMTMgZDNhODEwNTE2NjNiNmI1NmI4Y2RjNzRlYzQyMjAyMGIwMmQ5YjRkZCBweTNrCis3NjExNCA0NDQ5ODljZTVmNzcxNDhjYmVhNDI4YjM0OThlZjFkYTZjNjA4ZmNiIHB5M2sKKzc2MTE1IDkzYzc1Mjg3NTAzM2NjNWRkZWIzMWZhNTIxNjlhODA0ZjVlZGY0ZDAgcmVsZWFzZTMxLW1haW50Cis3NjExNiA2M2M5ZTYzZTBkZTNmMDJhYjZmMWQwMzI2YjRkODlkMDYyNmNkMDlkIGxlZ2FjeS10cnVuaworNzYxMTcgZmQ3ODI4MDUxODY1NTFhOThlMTA1MTI4YzUxNWVhZmRmMGQ2ZjUyOCBsZWdhY3ktdHJ1bmsKKzc2MTE4IDJlYmFkM2RmY2RlMzc2MjdlZTEyOTU1MmRiY2I1YTQzZjI4YzBjZjggcmVsZWFzZTI2LW1haW50Cis3NjExOSAwY2I5NDM5MDBlNTMxZTRmYTJlMjI0ZjQwMWQ1NGMwYmU0YmUwYWJiIHB5M2sKKzc2MTIwIDRlYTBhODBlZDc2YTYzOTJjMWM1NWZlMmY5MDM0ZjYyYTUxYjI5YzYgcmVsZWFzZTMxLW1haW50Cis3NjEyMSBhMWM5NGYwNzYxZDQxM2JhZDZmMTA4ZTA2NWQ3YmM4MjlmMjI5NDIyIHJlbGVhc2UyNi1tYWludAorNzYxMjQgMzVkZGZiNDQ3MTY4ZDA2ZjQ0NjJhMzlkYWE5OTVjOTdkYzg0MGRhZCBweTNrCis3NjEyNiBkM2E3NjM2MzkyYWY1NTRkMWVlZjYyNWU0NmJmZmM2MWU5ZTMzNzkxIGxlZ2FjeS10cnVuaworNzYxMjkgZTNmZjM5NzZiYmFjZWY3NTIzYTU4MzNiMTI5NDgxYjVjOTY3YmRmMiBsZWdhY3ktdHJ1bmsKKzc2MTMyIDg1NTJhMjY3NzJlNmZjMWJkODFiNjYwNmZjNjI4NjQyNDAwMTk0NmQgbGVnYWN5LXRydW5rCis3NjEzMyA2ZGIyMjBhZjhjYTNmZWM5MDQ2NzljZTc1ZTljMWYyMDRiNzFiOGVjIHB5M2sKKzc2MTM2IGQzNDZmZmI4Y2ZkNzQzMzE5Y2RhODVmY2NlMzU2N2IwNzdiOTUxY2IgcmVsZWFzZTMxLW1haW50Cis3NjEzNyBjZDM2MGFjNThjZDJlYTA2YzZhOTBiMjMzYTYxNzdjMmY2ZTE5OTNjIGxlZ2FjeS10cnVuaworNzYxMzggZTBkZGVkYTBkOWMzM2Y4NDI1MTAyNGEwNTY5N2Q4MmI4ZWFmMDgxMyBweTNrCis3NjEzOSA5MzA5ZGFhZjMyZDE4MDcwMjZlYzM2NmU1YzBkZDMyNzdiZTM0Njk4IGxlZ2FjeS10cnVuaworNzYxNDAgODE4YjBiMjg3YWE0MjQ0YjdjYTdjN2Y1YjY4M2JiOTg3MzI2YjBkOCBsZWdhY3ktdHJ1bmsKKzc2MTQxIDQyZDRjZjgyN2I5ZTg5YzgzZmNhZTNhYjRlNzYxYmUyYzAzZWRhNDUgbGVnYWN5LXRydW5rCis3NjE0MiA5MmJkYzNjN2Q1YTQzZWYzZDlhZjhjMTI4YjJjNWY2OTY3ODNmZmUyIHB5M2sKKzc2MTQzIDFhMzA4NjBiY2EwMzdmODQxMDk0YjIyOWMzMjVmYzllMzJjYjhkYTIgbGVnYWN5LXRydW5rCis3NjE0NiAyN2UxMjBmOTIwOGIzYWE4YzBjODkxYTVkYTNmMWY5ZGZhMjg0NTg5IHB5M2sKKzc2MTQ3IGUyNTI4OGJiNmZhZjE3YWU4MjQwZTViOTRkODViYTFkNjgyNGUwOTMgcmVsZWFzZTMxLW1haW50Cis3NjE0OCA2ZjVmNDgxZDYxOWMyY2RiYmViYzM1ZTliOWQ4YWEzYTgxZmQzNDgxIGxlZ2FjeS10cnVuaworNzYxNDkgMDRjZjk1Y2Y5NDk2ZmZmNTBiMWYyZWYzNjY4Y2E3OTIyZmE4MjU1ZCBweTNrCis3NjE1MCAzYTBlNjkwMDEyMTU0M2E0YmY1MTY0OGQ3YmQzYmQxNWZjOTFkN2ZjIHJlbGVhc2UyNi1tYWludAorNzYxNTEgMzgxYTYyZjFlNjM1ZjJjMDIxNDRkZDkxZDRmOTNhNDk5MDVkNDI5MiByZWxlYXNlMzEtbWFpbnQKKzc2MTU0IDYzNzcwYTVhMGM3OWRmMmI0ZDIzZjc0ZDkwN2JkZWQ4NTU2NzkyODYgbGVnYWN5LXRydW5rCis3NjE1NSAyZTRlNDc3MjE5YzU3M2Y1Y2FiMGYzNDlkOWFlN2QzM2FlZTRlNmU0IHB5M2sKKzc2MTU2IGRjZDY4ODdiOGEyNzc0N2RhOGI0MjczNmUzY2ExYWQ1ZjRhNzQxZTQgcHkzaworNzYxNTcgOTc5ZWIxYmJmNmU2ZTQ2ZGEyNzA5NTZlOTQzMWUyODc5ODE2ZGUzZiByZWxlYXNlMzEtbWFpbnQKKzc2MTU4IGQ2MWIyNGM4NzY3NDQ3NTY5NTRmZmQwMDllMTliMmM0MmMzMWRiZGUgcHkzaworNzYxNTkgNDg5ODllY2ZmODA0N2JiZTQ0MGU3YTE0NzMxMWI0MzkxNzE5YmVlOCByZWxlYXNlMzEtbWFpbnQKKzc2MTYyIDY5ZDYxYWY1YTk1ODkzNjQ2ZWQyNTY2MmY3NGFmMGExMWYwYjMwZTUgbGVnYWN5LXRydW5rCis3NjE2MyBkOTcwNTllOWU4NTJlYWMyYjg1NjNhY2RkM2JmYTE4NGVlOGNjYjk3IGxlZ2FjeS10cnVuaworNzYxNjQgZjE5MDMxNWYxODVlYTdhYmU0ZmMzYzE1ZWIyNGUxN2UwNjA0ZWI3NiByZWxlYXNlMjYtbWFpbnQKKzc2MTY1IGVkMTFiMzE1ZDM2YTM4ODdmMTY0MDA1MDcyMzdkYTNlMjBjMTYzZTggcHkzaworNzYxNjYgMTQ0N2Q3NWRlZjhiMjU3ODEwZjIwOGE2MDg1MjVhNDUyZWFkMjY3MyByZWxlYXNlMzEtbWFpbnQKKzc2MTY4IGM3NmQ1ZmJlYjY5MTkzMzljZDJiZDU5YTIyM2UyOTdkZGUxZjBkNzggbGVnYWN5LXRydW5rCis3NjE2OSAyNjdhNDE4ZWJiYzliNjRhMGIzNWY4N2JhZWM5OGU3MTVhOTc0MmQ1IHJlbGVhc2UyNi1tYWludAorNzYxNzAgYTdhYzRkYmRlNWRiNjIwYmEyMDBmZGM4Y2NkY2RiNzVmZDkyNDk5MiBweTNrCis3NjE3MSA2NjdkOTc3OWNhZDZhZmY2NjA0NzlhM2YxMjU3MDA4ZDI1YTIyZjBhIHJlbGVhc2UzMS1tYWludAorNzYxNzIgZmJmNDFiMTEyNGQ4ZWNhZjFlN2Q4ZDdlZDA1Y2I0NDNjZWZkMjhkYiBsZWdhY3ktdHJ1bmsKKzc2MTczIGVkOGIyOTY5MTE5ZTI2YWU2ODI2OTY0NmRiYjQxYzkzZmI2NGE5Y2QgcHkzaworNzYxNzQgMGViNTZhOGU2MjYyZjNiOWQyMGFlMzk1MDM1MzUyNDU3ZDIyYzdhNCByZWxlYXNlMjYtbWFpbnQKKzc2MTc1IGZlMzM1NjJkMWY5NWEwZmRjYjk4MDEwMmI5ODQ5ODU4ZDI0Y2I1NDcgcmVsZWFzZTMxLW1haW50Cis3NjE3NiAyZDM5NGQyZDJkMzdkN2RhYTFjNmI4MTM2MzM5YmNkMDQ0MTNiNzc1IGxlZ2FjeS10cnVuaworNzYxNzcgMDUwYTY1YTNkZjUzOGIyODc5YTNlOGY4YzBkMWUyZGRhMDE4NmE1OCBweTNrCis3NjE3OCBiZmNhYjFiYTBmNTFjYjNjZTUxODk4NWIzMTUxNTQ4YzBkMzNlOTdkIHJlbGVhc2UzMS1tYWludAorNzYxNzkgYmNhMDI3YjZkZjUzM2Q2ZGMzYWIzMTNhNmFjZWY0ZjA5MGI1MTliZCByZWxlYXNlMjYtbWFpbnQKKzc2MTgyIGZiZmNjZTExMjRhZTI3MGE0NmM0YThiM2JiYTUzZjIwNWY4OTEyMzUgbGVnYWN5LXRydW5rCis3NjE4MyA1MjE0MDczOGQ2YzNiNWVlZDZhNDJkNjFhMDNlNDQzNDU3N2Y1ZTFmIHJlbGVhc2UyNi1tYWludAorNzYxODQgOGJmYjMyYjVmZTZkNGQyZjk2NGRkOWRmZmU3MmY1ZjY0MmY3NzM0ZiByZWxlYXNlMjYtbWFpbnQKKzc2MTg1IGRkOWY4NWE1ZjEzNDdjZmIxNjIyNjg0ZjBlYTYyNDYzZWM4OWMxNDkgcHkzaworNzYxODYgOTIxOWE5NjJhZDFjMzA3YWUxYzc4ZWZlOTJjZDM3ZGIwNmQyNjE0OSByZWxlYXNlMzEtbWFpbnQKKzc2MTg3IGZmZjU1ODI4NmFhZTNmZTM2YWQyYzY5Mzc0N2ZmM2MyYjg0M2Q5NDkgcmVsZWFzZTMxLW1haW50Cis3NjE4OCAyM2NjNzU5Y2ZhZTM1ODI1MjdmM2I1MmVkODJmMjVjYzE2NTZhZmRiIHB5M2sKKzc2MTg5IDZkOTFhYWFkZGRkMDgxZGU3M2U0ZjI5YjZlNzM0MzdhYzRkYjdiYjMgcHkzaworNzYxOTAgODY3ZDJmMjczNWI4OTA1NTc2MDFiOTQyNTc4NDY1ZDgzNjYzZGVhZCBsZWdhY3ktdHJ1bmsKKzc2MTk0IGNhMDIxN2M1MmE4YmYzODRiMzQzZGFiMmYzODMwYzVkYzc5ODBhNTkgbGVnYWN5LXRydW5rCis3NjE5NSBmZGQ2NDg0ZjEyMTBkNjBjMTY4ZTIzNzY2YmQzNDJkZThhNjZmMjE3IHB5M2sKKzc2MTk2IGNiNTkwNTgwNmRlOGRjODc3Mjg4MmY5MjRjNWVjOTExYjYzZTI2YWYgbGVnYWN5LXRydW5rCis3NjE5NyA5N2MzMTg3MTQwNzBmNmYxN2RmN2U2ODVlNmY3ZWFiNmNiMmE0M2UzIHB5M2sKKzc2MTk4IGZlNmI5YmFiZTRiZTkxNmY0ODQ5MDVlNTNmMWYyNWEwNWNhYzBmZGUgcHkzaworNzYxOTkgOTc2Y2M1MDRkOTlmMjgzODViNWQyYWZkODFiYjNkMjg1NWM5Mzc1ZSBsZWdhY3ktdHJ1bmsKKzc2MjAwIDEwNzY0ZmZlNzU0M2NlOWJjMTJmNjNhYzQxZDQ1ZTk2NjEzOTI5ZWEgcHkzaworNzYyMDEgYjFhNzc1YWEwNzEwZDQ5NjFlYWVkMTM4NTA0ZTc0YjBlODdjN2IwZCBweTNrCis3NjIwMiA0ZWJkZDJlMGFhYWRlNzUzZGMzNGUwZTcxMjc2NTY3Y2NhZjU4OTUxIHB5M2sKKzc2MjA4IDU0YjhkNzgwYzliOTllMGJiNTcyZDQ5YzZmN2RhZDdmNmYxMDY1MDAgbGVnYWN5LXRydW5rCis3NjIwOSAyOTUwZDk3NzEzOTU5ZTcwY2Y1ZTk1Yzg5NjAxYjBiNmNlOGYxODc5IHJlbGVhc2UyNi1tYWludAorNzYyMTAgMTJlMGM5ZWEzMDRlZWViNTY4MWI3ODU0ODc5MjlmNTY0Y2VlMWE1ZSBweTNrCis3NjIxMSBjODVlYjU5NDY2MTQ1NjViZDNmOWYyOGZmZTBlNWUzZmEzZjk0OWM3IHJlbGVhc2UzMS1tYWludAorNzYyMTIgNzk1ZWY0NjM0OWU1MDFjYmM5MzRmOTE1MDQ2OWYxZjYxYmExYzBiZiBsZWdhY3ktdHJ1bmsKKzc2MjEzIDIxNDg4NTFmMDgyYTE5MDBhNjBjNzNmYjU3MmMyYzE3MmVlZDhjMTcgcmVsZWFzZTI2LW1haW50Cis3NjIxNCAyNTdjYjYxYmY0MWI1NjdiYzI5MzAwMTBiMzkzY2EwODRhYTUxMzU3IGxlZ2FjeS10cnVuaworNzYyMTUgY2U5ZjU1YWQ1NDZlMTRhNTQ3OGQzMjBiNTY3OGU0YjcyYjE2ZDhhNCByZWxlYXNlMjYtbWFpbnQKKzc2MjE2IGM3MTdmZTk5MzA4NWNkYWExZmJjOTRlY2E5YTZjZWI4MjJlYmVkMDAgcHkzaworNzYyMTcgMzNiZTgyZmEyNzdhYzlhMWVhNTAwZTljYzViM2E2YTE0NjlkMzg0OSBsZWdhY3ktdHJ1bmsKKzc2MjE4IDQzZjMyZGIxYmY0NmZiNmUwNGM2ZGFkM2U1ZDA0MDYxYzU5MGE1YjggcmVsZWFzZTI2LW1haW50Cis3NjIxOSA4MTE2NmQ3YjQxNGM4YWYyNzhkNzlhMTBiZjI4OGYzOWMwODE0YWVhIHB5M2sKKzc2MjIwIDEzOGMxZjc0ODA0ZDY4YzZmNTYxYWExMmIwY2Q5ZGU0NWM2OTNhNDIgcmVsZWFzZTMxLW1haW50Cis3NjIyMSAxYzI3ODg4YTk1NWZlOWM2ZDkxZTExMWU1ZjQ4YTI0ZmM3ZThmYmZlIHB5M2sKKzc2MjIzIGQ0NGZlYTIzZmQ1N2ZkNWI3MmYyMjU0YTEzMjJjNGEyMzQ0ZGZlYWMgbGVnYWN5LXRydW5rCis3NjIyNCA5NGNkMTg1ZjUzYjQ3NjEzNmUxNDIzNTBkNzdjMGNlZGU2ZWMwZTliIGxlZ2FjeS10cnVuaworNzYyMjUgNTcwNzdkZjAyZjlhY2JjNzkzMGYzYzIxZDZmM2Q5MzZiYzI2MzAyNyByZWxlYXNlMjYtbWFpbnQKKzc2MjI2IDVjMGQ0YjNlY2Q2NWQxOGYyMWE4MDIwYTkwNzQ1ZWRjNTNjMzdhNzAgcHkzaworNzYyMjcgNGYxYzdiN2JmY2JkYTQwM2FhZGMzNzE0Y2YyMTY4NzFmNzg0MjU3ZCByZWxlYXNlMzEtbWFpbnQKKzc2MjI4IGNkMDQzNmMzNGVmNDZkZTBmNDRmMDU5M2RiNDBiMThhZTE1ZjllMzkgcmVsZWFzZTMxLW1haW50Cis3NjIyOSBmOWE1MGNlZGU2YTkyMmIwNjdkNmQ2Y2U5NjgwMjYyZjQyNTJhMWQ4IHB5M2sKKzc2MjMwIDg5ZjQyOTM4ZDVjY2I3MzNjMzM2YTRkNTE0MTYzZjQxZmZlNDI4YzIgbGVnYWN5LXRydW5rCis3NjIzMSAxMjhkZDZkZTEzNGNhODljMmM3OThjZmJkMzFjZjJkNGI2YTY5ZWYyIGxlZ2FjeS10cnVuaworNzYyMzIgYjJkOTBjMWM2MzdkYzU3Zjk3NTgyMTg4ZDRmMmQ1NWVhNzJkODZjZSBweTNrCis3NjIzMyA3NjNkMmZmNzhhZTdlOGM0NTI5YTYxZjNlNGNiNjU1YzExYjQ1MTQ1IHB5M2sKKzc2MjM0IDdjZWI1ZWI0NjJjNTAzZjk2ZjBmYjllMTEyMTJjYWNlMjM2NTkzYzQgcHkzaworNzYyMzUgYjM1NGMxYjZiNDc2N2MzN2I0YzM4MzYyNTViN2FmYzAyZGE3ZjUzNCBweTNrCis3NjIzNiBhMDk1MWYxMWJlM2Q3NmU2ZGE5OTk1NDM1YWZjZTU0OTVmMTAxNTMxIHJlbGVhc2UzMS1tYWludAorNzYyMzcgYjdmNzNiMDJkNmQyNDhjZWQ4MmI2ZTExN2I1YTcwMTQ2MjIxMWIyMSBweTNrCis3NjIzOCBiMjE4ODM2NTczZmFjZTg3ZjRmN2M3NDM2YzlkNmU1NzI2ZjQ3ODZkIHB5M2sKKzc2MjM5IDk4NTc5ZTk1MmI1NGFmOTdkMGE4YzZkMzMxMDgwMDhiNTEyMzk1NDEgcHkzaworNzYyNDAgNjg1NTI3YWU0MzdkZjkyYThmNGNhNDMwZTFlYzMxODc4MjNiNjgxOSBweTNrCis3NjI0MSAzNTdlMzk3MDA0ODk3ODNlN2EwZGNmNDY4N2FkMTVhMTQ5Yjg2OWFkIHJlbGVhc2UzMS1tYWludAorNzYyNDIgOGU2YjQ3OGE3MDUzZWViM2ZmZmIzNDMzMzhlMDgyOGVhMzZiZWY3MyBweTNrCis3NjI0MyA2NWUyMzA4NWUzY2FkZGRiY2QwNWMwNDI1NmUwMTQ0ZjJhNTM0MWM1IGxlZ2FjeS10cnVuaworNzYyNDQgMzIzMzViYTNhYTBiYjE2MjYxYzAxNzVlZDZkMzA3YWZhYWFiOWVhOCBweTNrCis3NjI0NSAxOTZmMmFiOTc3MThjYmRiNmI5ZTFlYjM2NWFmMWZmZmViYTdjNjE0IGxlZ2FjeS10cnVuaworNzYyNDYgYjgxNDVkNmRiN2Q0M2Q3MDFkNTUxMDZmY2VmODRjZTA5ZGJiOGU3ZiByZWxlYXNlMjYtbWFpbnQKKzc2MjQ3IGM2MTNjNzI0ZTMxNTlhZjg2MTE5M2NmNDNjYmRjMTcyZDliOWU3ODggcHkzaworNzYyNDggOTBmMWY1NzMyMTg1OWQwYzY1ZmFkNDY1NzkwNjQyYTEzOTVjODRlMCByZWxlYXNlMzEtbWFpbnQKKzc2MjQ5IDVjOTA1MDQ4MTMwOWQ4YjY4MTM0ZWMyYWI0YWI3YmU1YWYyMDgyZGMgbGVnYWN5LXRydW5rCis3NjI1MSAyNzdiODlkNWIzMjA5NzQ4MDIwNTJmYTFkY2NkYWE3MGMxZTg2YWZmIHB5M2sKKzc2MjUzIGExZGY1MjRmY2JjNjIyYjA3OWNmOWE4ZjIxOWIzOGFjMmNiZWYwZTAgcHkzaworNzYyNTUgZjAwMTNhZGU5YzFhZDM2ZmMxMDRkMDk5YzM0ODU0OGIzZDdkNTM1YSBsZWdhY3ktdHJ1bmsKKzc2MjU2IGFhNjRhNTBhZDQ5MDVlNzkzY2Y1YjY3ZjU4YmRlZmI2MWYyMWExNzUgcHkzaworNzYyNTcgYTJjYjdkMjcyMWEzZTRlNGU4YTJkZDlkYTVhZDJhM2YwNjdlMWE5ZCByZWxlYXNlMjYtbWFpbnQKKzc2MjU4IDIwN2E0NjI2MTNmM2YzZTI3NTE2ODYxMGFlNGRjNjk3YjljN2NkOTkgcmVsZWFzZTMxLW1haW50Cis3NjI1OSAzZjJhNzZmYTI0OTZiMmExNWMyZGU2MTEzNGEyNjU5ZDY5MDk5YmZkIGxlZ2FjeS10cnVuaworNzYyNjAgYzFjMWYyOGFjYjA1MzI3OTE5OWJlM2I1OWI2M2QwMzBkZDNlMGY5MCBsZWdhY3ktdHJ1bmsKKzc2MjYxIGIyYWIwOGM5M2EwMjgyOWY2NGRiOGM0Y2Y1MmQ2ZTcwZTM2YjEzYzEgcHkzaworNzYyNjIgOTJmOTE3MDQzOTE5OTlmZDMwNzJkN2Q3MjE3ZDU5YTU2YjM0OGFlMyByZWxlYXNlMjYtbWFpbnQKKzc2MjYzIGJlYzU4OWI0NGFhZTdhNmMzMThkNjRmNjM5NWZlYmQ3OWViYjkxMzIgcmVsZWFzZTMxLW1haW50Cis3NjI2NCA1NTUwNDU1NDE3OTRlODNmZTU3NjBjNWM0NzhiYmExODI2NjM5MjdmIHB5M2sKKzc2MjY1IDNkYjFmYzNjZWZkMGY4NjNmN2JlNTU5NjZlOWQxM2QxYzM2YzNjM2MgbGVnYWN5LXRydW5rCis3NjI2NiA5NGYyNzA1ZGVmNWNmNjU2NjgzZWIzODZjMTAzNWVlYzU2OWU1OGMyIHB5M2sKKzc2MjY3IDdkNGFiOGNkMDAyMzk1NTQzMjg2Mjg0ZTA0NWY1Njc2MWJkNWQ0ZTcgcmVsZWFzZTI2LW1haW50Cis3NjI2OCA1NmU3MDFmODI0NWU1NjM2YTBmZmY5ZDlkZjlkYWM4ZTU0ZjdlNzJkIHB5M2sKKzc2MjY5IGZhNjAyNzBhYjc5YWU1YzhkZGRjODUyYTkzNDg2ZGU5ZjRkMTg4ZTQgcmVsZWFzZTI2LW1haW50Cis3NjI3MCAxMjU3YTU5N2M4ZmFkYTA1N2Q2MTQ2ZGIyNjkxYWVjY2NiZjE2MDkxIHB5M2sKKzc2MjcxIDNkOTAyZDY3YWY5Y2EwOTJiMmQ3NDNjN2FhZDM1YTU4MzFiNjZkNWIgcmVsZWFzZTMxLW1haW50Cis3NjI3MiA3OWVhNGIxZWYwNGYyN2RlNTdhNzU0OTViYjIxOTkzOWFhYjM0MTQ3IHB5M2sKKzc2MjczIDdkNmJhZDVjMmQ2NGUwNmIyZTI3ZWU4N2RkZWI2YzMwMDUwNDVlZTYgcmVsZWFzZTMxLW1haW50Cis3NjI3NiAxYTNkMzk2ZDFiNmZjYmY1NDJiZTU5Mjc0NGU0OGEzODljOGE4MWJlIGxlZ2FjeS10cnVuaworNzYyNzcgNTNlZThlY2MxOGE1MjJhODIyM2NhY2RmNTE1YjhjYWJlOWQyOGIzMiBsZWdhY3ktdHJ1bmsKKzc2Mjc4IGJiNGZkYTIyZTY1NzgwOGJlMDRmZjY1OTQxOGY0ZTJmZWI1NjdjZTUgcmVsZWFzZTI2LW1haW50Cis3NjI3OSBjNzc3ZTRiNDU1MDA0ZTI4MjZkMDI5ZTAyYmJjYmIwYjgzMDdlYThkIHB5M2sKKzc2MjgwIDg3Njg4ZmY2YWNjYzRkZDZjZTQ1MGQ3MmQ2MmQ1YmY2ZTExNDY2ZjcgcHkzaworNzYyODEgMDVhODljODY2M2NjNzJlODQ1ZmVjZDQ2OGRhY2JiOTEwZDJhOGY0OSByZWxlYXNlMzEtbWFpbnQKKzc2MjgyIDA1YzRlYjAwODljNWYxZTUxMmJjMDA0MWE4NDRiMWU1NTM1ZjYwZTkgbGVnYWN5LXRydW5rCis3NjI4MyAzYjBiMTliNTNkMzJiZjU1OTg1NTc2YjdlN2Y2ZjYyNGZmOTM4NWVlIHJlbGVhc2UyNi1tYWludAorNzYyODQgNTk1ZWMxZDkwYjJmZWZjNjQxMDBjODE3MzQ5ZmJiMzg4ZjBmYTE3NSBweTNrCis3NjI4NSBmYjdmYzgzMDI3MjFkMDA4ZDA3NWFkZDczNWZjMGFmYzhjMTMyNDNiIHJlbGVhc2UzMS1tYWludAorNzYyODYgNDA4ODFkYjMxNjg5MzM5MmRjMmU3ZWQxOGE0YTFjNTEwNTliMzJlOCBsZWdhY3ktdHJ1bmsKKzc2Mjg3IDZhN2ZjMmU4NTY1ZjczYTdmNDZjOTM2MmMzOGVmYTMzOWE3ODZmZGYgcmVsZWFzZTI2LW1haW50Cis3NjI4OCA1OTA0YWJiN2VlZjdiM2M4ZWNjOTJiNjlkNWIwYTIzM2VhOGFjNzcyIGxlZ2FjeS10cnVuaworNzYyODkgNDlhNWYxY2IxYjI1NDcwYWQxYTkyNGViYzI3NjFhZDVjYWQ1MTQyMCByZWxlYXNlMjYtbWFpbnQKKzc2MjkwIGY2NDBmNTVlODg3Mzg1Nzg5ZjQ5ZDJlMjc2ZGYwMWYzYjY3MjRhNmIgcHkzaworNzYyOTEgNWIwNWI1ZTlhOGU5Yjc0MmE4Y2M4ZGQ2ZmMwNWEyYTk2Y2RkNDk0MyByZWxlYXNlMzEtbWFpbnQKKzc2MjkyIDM3MGQyMThhMDFiYzMyZDlmYjc5NjQ5OTYyZDI3M2Y3YTZhOTE0MzQgcHkzaworNzYyOTMgMmFhNjJmY2UwYmY4NjUzNjFlYWE4ZWRmMWRjMTI5OWIxZjMxODM1YyBweTNrCis3NjI5NCBiMmEzOTBjNWRlNWY4OTMxZDFjOGUzZGE0ZjNkYzUwMzYyZjYzODljIHJlbGVhc2UzMS1tYWludAorNzYyOTUgNjJiOGRlOTgzYjI2NDJiODc5NDI5ZGVlOWUyNDhhMzIxNjZjZDYwZCBsZWdhY3ktdHJ1bmsKKzc2Mjk2IGMyMTdlMDMzMWQ0YjJlM2E4ZDU0ZjI2MzdmYWNkMGQxMDBmNjljOTkgcmVsZWFzZTI2LW1haW50Cis3NjI5NyBjNDU4ZjgxM2E3MDk0YmZmMDU4MGMzOGFiOWFlOWEwYmJiOGQ3MmQ2IHB5M2sKKzc2Mjk4IDNlYmY5MDdkYjAyOGUxMmJhN2MxNzNmZTIyN2JmOWFiOWU2MDYxMGQgcHkzaworNzYyOTkgOTUwNWFmZTg4MjNmOTRjMDc5MWI0ZTdhMjMwODZiYWFkMDU3NDEwOSByZWxlYXNlMzEtbWFpbnQKKzc2MzAwIDA2OWI2NmNmYWQzZmQ5ZjY1ZGU3MDg0MjdmZDIxODc2ZjVlYWMwY2QgbGVnYWN5LXRydW5rCis3NjMwMSA3ODUyMzFjMWM1NWE5MTkxNTY3YmI3MzM4NGQwYWZlZmE1OWE0MDJiIHB5M2sKKzc2MzAyIDJlY2M1OTM2YjFmMjMzM2Y4M2QzMzJkZWY4MzE3MjlkMjExZjM0MzAgcmVsZWFzZTI2LW1haW50Cis3NjMwMyBmMTM1ZmRiNzNkODg1NDM3YjdjYjU5ZDRjODU3NWMzZjg3YjM3OTFkIHJlbGVhc2UzMS1tYWludAorNzYzMDQgYzUwOTk4MThlMGQ0ZTU5MGNkZTM3YTY3ZmM5NTMyZDEyYWQ2ZTBlMSBweTNrCis3NjMwNSBhYmFmMzcyNGJlNzExNzg2ZTIxNjBiYWZhYzY4OGI0NTdlZGNhOWRkIHJlbGVhc2UzMS1tYWludAorNzYzMDYgYWZiMzM0OGIzNzE1NjIzMmYyMDE1OWI5Yjc0NmZlOGYwMTRiNzdlYyBsZWdhY3ktdHJ1bmsKKzc2MzA3IDE1MDYxMGNhZTgwNDkyOWRjOGQ1MzBkNDc5YzAyZGRiOTBlMDFkODMgcHkzaworNzYzMDggNTEwMjg3MDlhYmMzMjdjZjc3NTZmZmM0MGFmMGU0NDM2MDI1MDA0OSBsZWdhY3ktdHJ1bmsKKzc2MzA5IDgzNjY0MjI0MDQ2NGFiZDRhOGUwMWZiMGVjYzM2ZGYxNTQ0YjEwZjYgbGVnYWN5LXRydW5rCis3NjMxMCAyM2MxMzhjNGVjMDVlYzEyMmY4YTUxY2IwYTYyNjU1ZTY2YmI2ZDZjIHB5M2sKKzc2MzExIDE1NGZiMjcwYTgyMGYzY2QwMDI5ZWJjNDFhNmE2NDNhNjUxOGI5ZjEgcmVsZWFzZTMxLW1haW50Cis3NjMxMiBlYjFjMDNhMzdhMDI5NWQ1YWE2ZGUzZTE5NmY0NWJhYTUwMjVkYWU2IGxlZ2FjeS10cnVuaworNzYzMTMgYzA4NDIzZDcwYjlmMjFhNzExNjM5NzNiMDlkNTQ1MGI5MWFlN2EzYiByZWxlYXNlMjYtbWFpbnQKKzc2MzE0IGRmNTM2NGZjMGU1YzlkNDkwMGI3NjBlN2E0YjBjZWNkYzBjNWNkODEgcHkzaworNzYzMTUgMjViNjQwZDIzNGY5NTU1YzNiZDE1MWUyOGU0OTdiNGI4MmFhMGRhNiByZWxlYXNlMzEtbWFpbnQKKzc2MzE2IDI1MGUxZjQ3NTU2OGFhMmU2Y2UyNjYxMjRhZjhhYTJlNTE2NGU1ZmUgdGFyZWtfc3lzY29uZmlnCis3NjMxNyA2NjRmNjMwMTk0MGY4MzJlNjNmNWFmNjIzYjEzNzA2Njc0NWQ2NTk4IHRhcmVrX3N5c2NvbmZpZworNzYzMTggNjE1NDUyOTBjYjUxNDQ5NjU3NmIyZjU1ZjE3ODI0MDFmYzM3YmEyYSBweTNrCis3NjMxOSBlYjIzNWViNDVkMzI5YmQzNjM0MGRjMmM0Nzc0NTRhNmYzZDViNjk1IHB5M2sKKzc2MzIwIGYxMTEyYzI3MDBiMWU2NTExMmE5ZmM1YjU4OTI5ZjczYjIzOWJjOTUgcmVsZWFzZTMxLW1haW50Cis3NjMyMSA0MDFkMjIzNzA1Yjc3ODFmYzg5ZDgxNmYzNzc3MmQxMjc0N2QxMWJkIGxlZ2FjeS10cnVuaworNzYzMjIgMWUwM2ZlNWExMWI0MmYyZDBjNWI2ODdhODk2ZTgzNDU2NTRjZTlmYSBsZWdhY3ktdHJ1bmsKKzc2MzIzIDk2NzBmZTZlNmQxNGRjYWFhM2YwMDk3NDU4MmU4MjhmMjk3MzkzNDggcmVsZWFzZTI2LW1haW50Cis3NjMyNCBmZDQxN2NkNjQzNDE4NWFiNjBkNzA5NTQ5MTQzOWEwZGQyNjNjYTJlIHB5M2sKKzc2MzI1IGY2MjkzMGQwZmE3MmQyNTU0MDQ1ZDc1NmE4MzY3MjgwZjZmZDk3MWUgcmVsZWFzZTMxLW1haW50Cis3NjMyNiBjODQ3YzY4NGMyYzVlYTA5MmI2NjAyYzA2ZjU2YjdkYjFkYmJhZDQzIGxlZ2FjeS10cnVuaworNzYzMjcgZDNiM2E4YTgwOTBmYTE5ZGFiODUzNTVmNWNmNTdjZWNjMTEyYWIxYyByZWxlYXNlMjYtbWFpbnQKKzc2MzI4IGFjNzY4YzhlMTNhY2E4OGFkNmI1NzdlOGEyZjA4ZmQxMTQ2NzRmM2YgcHkzaworNzYzMjkgMmQzY2RhNmI4Yzk1MjIxM2YzN2YwY2Y5YTU5ODdkNzljN2Q3MDc4MyByZWxlYXNlMzEtbWFpbnQKKzc2MzMwIGY2ODBjMWZiNzgwNGY4MzIyNWZkZDBiYjY1NzQyYWJmMmVhOWNkNGYgbGVnYWN5LXRydW5rCis3NjMzMSBkMTI3Njc5ZWNmYWE2ZGU0OTU0NThjZjNlODYzMzhkMmFhZDFkMTlmIHJlbGVhc2UyNi1tYWludAorNzYzMzIgOWQ5MzQyY2JmOTM1M2U0ZTU5MjE5NjNiNGZlMGNlNmNiODAwNDAwMiBweTNrCis3NjMzMyBjZWIzYjM2ZGQ2ODFlY2MwODI0ZWI2ODAxNzNkYjA1MzhjN2M1OGZkIGxlZ2FjeS10cnVuaworNzYzMzQgYzVhMTIyY2IxMjg4YTZjNDdhOTY2ZmUxZGFkZjM5YTNkY2M4NWE0MSByZWxlYXNlMjYtbWFpbnQKKzc2MzM1IDQzOTFhMjJhYjFmMDRhOTM4NjhjZWM1ZDcyNmMxMGY1OGFlZjU0M2YgcHkzaworNzYzMzcgNGFhNGMxOWRmYWVkZWNmN2Q0MWIzYzRkMDBlOWNhNjUxZDA4NjdjNyBsZWdhY3ktdHJ1bmsKKzc2MzM4IGFkZjkyNzRkM2VkYzQxM2ZjMjZkZjA3ZDNlZjI4YTUzNmZmMzQ5ZWEgcHkzaworNzYzNDEgZjkzYjJhNjhkZmI0MjA3NGZmNmQzNzllNmY2MzhkNDhhMWE4MDFmYyBweTNrCis3NjM1MCAzNDliOTdmZjRjMmI3ODMyNGZhZjNkNDczOGU2ZWFmZmIzN2UwOTY2IGxlZ2FjeS10cnVuaworNzYzNTEgNzE4M2Q2YjkzMGJhOTEyNGFjZjhiNDEwY2UxMGQyZDFjOGM0ZTBiMCBweTNrCis3NjM1MyAyNjI4MjE2YmM2NmQ0NzZmNzc2OTNkODJjNzIxNDYwMGYyMGE5ODgyIHJlbGVhc2UyNi1tYWludAorNzYzNTggYTc3YTJkN2NlZDdkZDdjMmUzY2VjODAwNzdlZWExMDI4NmQxYjkwZiBsZWdhY3ktdHJ1bmsKKzc2MzU5IDE4NGViOTBiMmUzZDc1ZmI5MWM0MGY5MjE0ZWU2NzAzNzI5YTE5ZjggcmVsZWFzZTI2LW1haW50Cis3NjM2MCBkNmMyMTA2Nzc5YjkwY2UyY2IwOTQ2NzZkMmIxMjVjOTJjNzFjZTRiIHB5M2sKKzc2MzYxIDNjNjIwMzFiMjUwNmRlY2Q1N2U3NWMzNTFlY2U5NzIyNjViMDkxMjMgcmVsZWFzZTMxLW1haW50Cis3NjM2MiAzZDJiMDZhYTdiMzZmYTBjNjRiNjNjNzRjM2Q5ZDAwMDYyM2NiMzI4IGxlZ2FjeS10cnVuaworNzYzNjMgZjAxNDhkOTJkYjdmZjUwNjMzMzczYzM4MGYwYjAxNmI2YTFmODdiMSByZWxlYXNlMjYtbWFpbnQKKzc2MzY0IGVkYTU2ZDA3NzViYWNkN2RiMmZjNjYxOTU5OTI3NmFjNmFjMDYwMmYgcHkzaworNzYzNjUgMjRhYjkxZmIyNWFiZjA3ZWRhYWE0MzUxZDk5ZDUwMGY0N2JkNjRlMiByZWxlYXNlMzEtbWFpbnQKKzc2MzY2IDNkMThjZDFkMDRhNDQ2OGYxODFmMjA4NzZmNGI3NTQ2ODZhYjMwZmYgbGVnYWN5LXRydW5rCis3NjM2NyA0ZWQxMzJkNmJiNzAwMTIzOGYyYzEzMDcxNTkyYmFjMzcxMDA3ZTJiIGxlZ2FjeS10cnVuaworNzYzNjggNmUzY2MzYWRmMWRjNDQwYTNiMmRjMThiMjYzNjNiYWM3NTMwYjg0MSBweTNrCis3NjM2OSBhN2Y2MTk0Yjc4Y2M5MmQyODA4OGM3YTRjMTliM2IwZTc2Y2ExNzBjIHB5M2sKKzc2MzcwIGVkNTRhMWE5MTRiNGM2NjA1MzAwZTJiZTBhMjZjNTVkZjVhZjdkZjEgcmVsZWFzZTI2LW1haW50Cis3NjM3MSA1ZWYzNGIyOTc2NmNmMWEyNzYzMTdmODljYmQyNGQyMmJhN2JkZWVmIHJlbGVhc2UyNi1tYWludAorNzYzNzIgMmM1YzY2ODdmMWM4ZWI1NDBmMGYwYTc5NmUzY2ZjZGYwMGYxYWE3ZiByZWxlYXNlMzAtbWFpbnQKKzc2MzczIDkyZTA2Y2RiZWFiOWI2ODQyNWVjMmY5YzUyMjU3N2E2MDRlZDc0ZDEgbGVnYWN5LXRydW5rCis3NjM3NCA1MGQzNTUzMjRjNTA2MzI3ZGRhZGM3MzYyZWMwMTFlZmNjMjBlYzA3IHJlbGVhc2UyNi1tYWludAorNzYzNzUgYjk2Zjc4Y2U4MzgzMzkzYmMxZGJmNDQxMGM0YWQ0YmU4ZjA3ODBlMSBweTNrCis3NjM3NiAzMzNkZGEzMWJkNzMzMWVlNjExN2MyMTkyNGY3YWNmNmI3ZTBkZTMxIGxlZ2FjeS10cnVuaworNzYzNzcgNDFkMjljMTdmZDQwNWQ2YWUxMzJkMGJlM2I5ZTJiYjQxOTRmYjMyZCBsZWdhY3ktdHJ1bmsKKzc2Mzc4IDQ2MzNlZDIzNzk3MGQ3NDZmODRiOTFmYzAwZGUyNTY0N2E5ZDM2NmUgcmVsZWFzZTI2LW1haW50Cis3NjM3OSAxZTUzNGQ3OTUwZjgwZTg5MzM3MTY4N2VhNWViYWFjMDFjMTdiYjMxIGxlZ2FjeS10cnVuaworNzYzODAgOWVkMDJkZjcyYmQ2MmYzZTcxMmZkZWI0MzcwZjdiZWVkZTM2NDE2NiBsZWdhY3ktdHJ1bmsKKzc2MzgxIGQ4YmNjOWRlMTYwNTRjNzllODQwZjNmNjhlYjdhYWIzNjcxYjU4MGEgbGVnYWN5LXRydW5rCis3NjM4MiAwYmNjMTJjNDYwMTVhNDg4ODU1N2NkYWM5ZTFkMjBlMjQ1ZjdjNGFhIGxlZ2FjeS10cnVuaworNzYzODMgMDVhZjA0OTAwYjZiOTFlMmVkMDBkYzQzNTlmNTBmYWNkYTAzN2E5ZCBweTNrCis3NjM4NCA3MTVjMGJhYThiMmM4Yzc4YWNkNWFkYmIyN2YzMjUzYzE3NGM4YzRlIHJlbGVhc2UyNi1tYWludAorNzYzODUgNWU1Yzk3YjljODI3OWY2MmM4MzgwODM2MmI3ZGQzMTFkOTU0ZTIyYyBweTNrCis3NjM4NiBhMzQ1YmI1MGVjMGY4OGM1ZGE4ZDMxYjAxMjgyOTQ3OGZjOWZmMjk5IHJlbGVhc2UyNi1tYWludAorNzYzODcgZDgwMTlkMWQ1NmYzMzRmNTJlOTZiNzgxYmJjNGFiYzQ3MjE0YjE5NyByZWxlYXNlMzEtbWFpbnQKKzc2Mzg4IGVkNTkwNzc4MzhhZGU5OTI3YWY2ZDQ5MjA3NTNjMTA2ZDkwYmYwODUgcmVsZWFzZTMxLW1haW50Cis3NjM4OSBiMzFhMzNjMzZmMDg3NGNhMTcxNjhhMTRlYTY3ZDVlNzRhYTZkMDRhIHJlbGVhc2UzMS1tYWludAorNzYzOTAgYjhhMGIzMzNlNDY5ZTFhODk4ZjMxNDNhMDc4ZTE3MWE4OTA3ZmYzMSBweTNrCis3NjM5MSA4ZDA2ZTQ1MGJjOThjYjZhNGY3M2JhOWNmYWYyZGE5NzhjNmY3M2MzIHB5M2sKKzc2MzkyIGYxNTI2NjcyMDBhZTkwNDI0Y2YyZmRjYjVkYTBiODY2MDRjOGM1NTEgbGVnYWN5LXRydW5rCis3NjM5MyBhNzkwZjg0ZmJhZmEyODE4ZWU2ZDk4YTE2YTFjNTA2NTBiNmU4MmMwIHJlbGVhc2UzMS1tYWludAorNzYzOTQgZjczZDEzN2NmYmQwNDZmN2E0YWRhNjEwZWM1ODUyMjRiNzQ5M2JiNyByZWxlYXNlMjYtbWFpbnQKKzc2Mzk1IDg3OTNmZjhmNDgyNjFkOTE0NmQ0ODgwY2M0ZjVlZDc2MWQxYmYyMzMgbGVnYWN5LXRydW5rCis3NjM5NiAxNjZmN2EzYjczZmM2MGM2MzZkNjYyYWFiYTAyZWY5ZjNkYTc0YjNhIHB5M2sKKzc2Mzk3IDQyYWFlZGFlZmJjYjY1ZTBiOTU2OWU3NzVmNmM1MmJkYzBmNjBlMDUgcmVsZWFzZTMxLW1haW50Cis3NjM5OCBkNTc3OWUxNTlkZGIxYThkYTIxYzdjYjc2YzdhNThmZmRkNmMwYmJjIHJlbGVhc2UyNi1tYWludAorNzYzOTkgYzBkZmE5YmQ1YzdmODIzM2I4MjY1ZDkyZTQ4ZDM0YjFjZjE2Y2NhZSBsZWdhY3ktdHJ1bmsKKzc2NDAwIDRiNmI0OTQzZDY5YTQwYjBiNDlhOTJjM2VkYjNkYWUxNDExNzNlMmEgcmVsZWFzZTI2LW1haW50Cis3NjQwMSBmNTdmMGM2YWFlOWQ4MmQ4M2JjY2ZkOTE0YzU0MDY2M2Q0MWZhNDE3IHB5M2sKKzc2NDAyIGFiNWI3ZTBhOTEzMWFkYmMzZmFhZmZiOGRiN2Q4OGIwMDI1ZTA1YWYgcmVsZWFzZTMxLW1haW50Cis3NjQwMyBjMDc5ZmNiZmM3NjE3YjZiOTgxZWM2Y2ZlZGZmNDllOGNlNmViZTMzIGxlZ2FjeS10cnVuaworNzY0MDQgNWI1NDMyNWVmNmY1NzYzMTM4YWNlZGE5NTExMmYxYjMyZmQ0MmUwNiByZWxlYXNlMjYtbWFpbnQKKzc2NDA1IDM5OTg5YzY2ZGIxNzhhMjE4YjU5MTNmODU3MzM4ZWMyNzlmZTI5NzUgcHkzaworNzY0MDYgYTkyZWYxMzZkOWQwY2ZmOTE2YjgzYWE1MWNkZTI1OTM4NDI4YmM3NyByZWxlYXNlMzEtbWFpbnQKKzc2NDA3IDRmYWU4MTY4YzQzYjEzMTg4ZTMwYzQxMTA4ZDA1MzdiMjg0YTdlYmUgbGVnYWN5LXRydW5rCis3NjQwOCBiOTZhZTNkOGFkZmQxMDhhYjM3ZThiMDIxMjcwODNkODYwZTFiOTM1IHJlbGVhc2UyNi1tYWludAorNzY0MDkgMmRkNzk0MmRjZmQ1MzkwYTY2ZjkzMTU0OGFmOGI3MDM1NWIyNGMzYSBweTNrCis3NjQxMCAyNGQxZTA2YzYyOWMxYTg2MGY5ZGM1ZjVlMjIzYjE4YjFkZjhmODMzIHJlbGVhc2UzMS1tYWludAorNzY0MTEgNjdjMGY5MmNlNTVjNzdiYTJlNmNmN2VhZGE0NGZhYjVmNThiZGZlYiBsZWdhY3ktdHJ1bmsKKzc2NDEyIGE0ZDlhM2RiYzUzM2ZiMmVmMmUxZmQ3MGM1YTJlNjQzNmYzMjRhMDggcmVsZWFzZTI2LW1haW50Cis3NjQxMyA5OGFiM2FkYjA0NWNlMjZlYTZkZjY5ZDQxNmY5NWIwNDQwMDBjODkzIHB5M2sKKzc2NDE0IDIyNTRjN2RhOTc3ODgwNDYzMzBlZDkxZDQ0YzkwZGFlZTg3YjNmOTcgcHkzaworNzY0MTUgODIzODA4MTZlN2RiM2IyNjQ3MWMwNjgwNjUxYmFhOWM4Mzk4NmQ1NCByZWxlYXNlMzEtbWFpbnQKKzc2NDE2IGVkMzBiY2ZmYTE0NjcyZjBlMzM0OWZjMDc3Y2U1OWRlNzdiMDk2MGEgbGVnYWN5LXRydW5rCis3NjQxNyA2YWE1MjhjNTAxMjg0YzVmN2MyZDE1YjJhMzk2NDIxMjE3YjczNDdlIGxlZ2FjeS10cnVuaworNzY0MTggNDc1YmY4YjU4NGE5MjNiMDQ4ZjIzODcyZjNjZTlkYmI2ZGNmMjE4NCBweTNrCis3NjQxOSBmOWYzOTUwYjVlYzc1NjUyMDcxZTUxNzk5MjM0ODBiYzFkMWM5MTAwIHJlbGVhc2UyNi1tYWludAorNzY0MjAgMWMzNTI3NTBlYmYyM2Y5NTE2Njg2MzZmODE1Mzc4ZGUzODNkYTQ2NyBsZWdhY3ktdHJ1bmsKKzc2NDIxIGYyZGE0ODhiNGI3YjM5MzU2ZTM0MDY3YmQyZWZkYjU0NzU3ZTJhNDcgcHkzaworNzY0MjIgY2Q1YjE1YzI5YTM5NmVlOTljZDBiYmY4NDRiYTM1MzRiMzNmZWI4NSByZWxlYXNlMjYtbWFpbnQKKzc2NDIzIDZlMzcwMDEzZjNhMGE1OWE3OTk0OGI2MzNiMmVlNWJmMjhjYWUzYjUgbGVnYWN5LXRydW5rCis3NjQyNCAxMzcxMTVlMzk1ZDhkZGZiNTdlZmQ0MjA0YWY0ZTExNmFkYmQ2ZjgwIGxlZ2FjeS10cnVuaworNzY0MjUgMThhZjBjZTBhNThiZDhiNmJiYzcyYTI4MGExY2RjYjk4OWVhMGYwYyBweTNrCis3NjQyNiBlYWViZTI0NjAzNzdjNTViYWMyMDc4OTVhZTU5YmQyNmFhMDA1NjY0IHJlbGVhc2UyNi1tYWludAorNzY0MjcgZmQ2ZTJhYmFlMTRlNDJmNTJmZjY4NWZiMmQ2NTA0NDM1YzEyNGYzMSByZWxlYXNlMzEtbWFpbnQKKzc2NDI4IGUyYjJjZWVmYTgyYWNmZGI1YTk4Yjk0MGEzZDA0MDAzMDljYmFmZWIgbGVnYWN5LXRydW5rCis3NjQyOSBlODNlM2RiNjJmYzc4ZDRlM2ZkYWE4ZjM2NWRlN2MzMzI3YzRkNzJlIGxlZ2FjeS10cnVuaworNzY0MzAgZTNjOTk0YzI5YTIyOTI3YTI5ODY5Y2I0MDViYWE2NWMwMmM1YTFmYiBsZWdhY3ktdHJ1bmsKKzc2NDMxIGI4MWQ2MDExMGY4NmY3NzgxMjI5ZTVkMDNiZDAxMDIzMWEwNmJlMjYgbGVnYWN5LXRydW5rCis3NjQzMiAyZTNlYzNiYjRiZTdjYmZkMmE2ZGViZTEwMjZhZjJmYTUzMjczNTZlIGxlZ2FjeS10cnVuaworNzY0MzMgMWQ5MjNlYmI0NzYwMGY4YTMxYzY4OGIxZWZiNjNmZGVhM2MyZmUzZSBsZWdhY3ktdHJ1bmsKKzc2NDM0IDdhNWNiNGRlY2Y2ZjI4ZThhNWYwOWQ5MTRhY2JlMWQyODdhNWNjYTggbGVnYWN5LXRydW5rCis3NjQzNSBiOGJkNTM2MDg0MWJhYTVkZTViOWZjMTE4ZGNkMzIzMGM1ZjhlNjY1IHB5M2sKKzc2NDM2IDVhZWVlZTBlYWU1ZmNmNTM2YmUzM2Q4NjcwZmFiMjQ2Yzk4MjgxNjUgcmVsZWFzZTI2LW1haW50Cis3NjQzNyA2MzliYTAzNmMyMDk0OGM0ODhlYjdmOTQzN2EyM2Y2YzdmMTJiY2M0IHJlbGVhc2UzMS1tYWludAorNzY0MzggYWY4OGIxZDI1YmYyOGViYzk1NTFlOTUxODAxOWM2YWUxMDBkZTQ2MCBsZWdhY3ktdHJ1bmsKKzc2NDM5IDUxM2M0YjE1NzVmMjY3MDJiYzMxZmVmZTcwNDFmZjQ1YWQ5MTg2MTEgcHkzaworNzY0NDAgNGM4NzA4YTc5MWU2MDMyZTAyOGNkOTU0YjQ0MDQ5NDdmNjg5NmM0MSBweTNrCis3NjQ0MSA0ZDU1NmMyNzkyNmE2MWM3MzI3NjdhZWYyMDIzMmIyZTI5YWYxNzAzIHJlbGVhc2UzMS1tYWludAorNzY0NDIgZGNiY2M4YzE0MTc5MzUwMDc3NzU0ZDczMmUwNmNlZDRjMTY0MmY1YSB0YXJla19zeXNjb25maWcKKzc2NDQzIDRlMjcwZWFiNDUyZGYzMDgxNDBhOWI1ZDc2YzA1NjkzZjUwMTY3NGEgbGVnYWN5LXRydW5rCis3NjQ0NCBkNmY4NTUyZmNlNzlmYWZkNGFhMWUzYzg2ZTg1NmNjZDAyYjMwMWYxIHB5M2sKKzc2NDQ1IGJjNzY0M2E3YTVlN2IyODdmZjNjOTg3NjM3MmNiNmRiODA2ZDI4YjYgcmVsZWFzZTI2LW1haW50Cis3NjQ0NiAwZWViM2EzZTc5ZWY4ODhmNzJhOGJhN2EzMTBjODk3ZDdlMmRlZjExIHJlbGVhc2UzMS1tYWludAorNzY0NDggZWM1MmM0MTliODI0ZTFjNWUwOGYzYTliZDQ3ODJjZTA2OTM5ZWQyYiBweTNrCis3NjQ0OSAzNzNkNDJmMjZlOTY2YTdkYTgwNDkxOTZlMzRkMzVhMzYyODY4YzkxIHJlbGVhc2UzMS1tYWludAorNzY0NTIgZGUwNzg4MGE1M2ZmYTc5MDRiMzNlMzNkYTA2NWYzNWVmMjEwMWIyNyBsZWdhY3ktdHJ1bmsKKzc2NDUzIGQ2Y2UxOGFkODQ2NzE2OWUxODJlYTdlMjE1ZDkwOWI0MGU4ZjM2MmQgcHkzaworNzY0NTQgNTZmMTkwODFkN2JjZTk3ZWNkMmFjMGE1ZjgyZTMxNzRmZWY0OTU3ZSByZWxlYXNlMjYtbWFpbnQKKzc2NDU1IGUxZDczMjUyN2M3ZTM0NDU3Yjc5ZGYwNzA2MDRjYjhjYTc5ZTRlM2EgcmVsZWFzZTMxLW1haW50Cis3NjQ1NiAyNDhjNGZhNWZlMGM5ODc5NWE4MzYxY2JiMzg1M2ZhZjJjZGM4ZjQ0IGxlZ2FjeS10cnVuaworNzY0NTcgMDg2OWUxYWI1NzJlMzdjMzM1NDlhMmJkNzcyMTNmNjQ3YmI0MzNmOCByZWxlYXNlMjYtbWFpbnQKKzc2NDU4IGM0OGZkNjNjMmY2MWEwOGIwMjJkMjdhMzNmZDEyODQwNjFjNTBmYWYgcHkzaworNzY0NTkgMDk4NDA5OWE5NDMxM2IyZWZlYmQ1MTBhYmE1MTBhMTZiNTA2NDI3NiByZWxlYXNlMzEtbWFpbnQKKzc2NDYwIDcwNDIxNGI5Y2I3NmM3NzNkMTA5NWU3NTAxYzk2ZjU2NjE5NzQ4ZDUgbGVnYWN5LXRydW5rCis3NjQ2MSAyNjM5ZWE3YjkyZWQwNGM2OTZlNGQ3NTBkMjEzMWZlOWI5MWRhZWZlIHJlbGVhc2UyNi1tYWludAorNzY0NjIgYWRhNWY2ZWVlMWNiMTIxZDQzNzJiYTJkMzliZGNiN2M4YjRhMWU2MyBweTNrCis3NjQ2MyBjMmVjY2E1ZmY2NTkzY2RiMDliNDBjNDE1MjQ1OTI3YjE0ZTk1MjVmIHJlbGVhc2UzMS1tYWludAorNzY0NjQgZjU1NGRmZmY3NDUwNTc2NTZmNWNhNzMyMGQ4N2Y2ZGUzNmI1MjU1YiBsZWdhY3ktdHJ1bmsKKzc2NDY1IDgwOGY5YzBkNGFjNDAwY2JmNWIyMDM5YzAzN2IxY2E0Y2E0ZjVmY2QgbGVnYWN5LXRydW5rCis3NjQ2NiA1Y2Q5NWU1Nzc3MmM4MGM3ZmJiNzVlYWU1YmVmNzhiYzc0NjE4ZGMwIHJlbGVhc2UyNi1tYWludAorNzY0NjcgYzhkNjlhMDZiMzNiYmY2MTY0OWE5MGQzNjc3MjFiNWNlNzQ2MmNmZCBweTNrCis3NjQ2OCA4MThjZDQwZGY4NjVmMjY3ODMxMzBkNTAzYTJiNjUwNTUyMTU3Njc5IHJlbGVhc2UyNi1tYWludAorNzY0NjkgYWE5NjI3YzQxMjIyY2FhMmE0YTJmYjZjMWQwODgwNzIxZTYzMzM3ZiBweTNrCis3NjQ3MCAzYTJiMTQ5YWU2NmU4MTVmMDgzZjIzNmMwMzJjYjk5NDM1MDE5MDg5IHJlbGVhc2UzMS1tYWludAorNzY0NzEgZjAxN2EzNDg2NGUyYmE1MzcwMjk4NjlkN2E4OWY0N2Q2YjRhYTlhOCBsZWdhY3ktdHJ1bmsKKzc2NDcyIGE3ZWIxYWU0ZTkxOTA0YmJlNDlmYzNjNGVhZjRlMWUwZmY1NTI2ZDUgbGVnYWN5LXRydW5rCis3NjQ3MyAzMDE3ZDgyZjA3NWFjZGIxMTRhNmM5ZWIwZTUxNjM4MmFlMjQ1NTY3IHJlbGVhc2UyNi1tYWludAorNzY0NzQgMDhhMGM5NTg4ZjEzZjBmNTg1Yzc5ZDExZjIwNjZlMTY1YmE0MmY5ZiBweTNrCis3NjQ4MyBiOWI2ODNlZWRlZTExNjc5MGMwMWQ3NWI1NTYxYmZmMDEwMmU4MGM2IGxlZ2FjeS10cnVuaworNzY0ODQgNTExNmVmNzc5YTgwMWYxY2RiMTJhYjJlNzhlZjZlMjc0OTk1MGUxMyByZWxlYXNlMjYtbWFpbnQKKzc2NDg1IDM1N2FkOTBiODExNGNmNDBmNzJiYzg4OGNlZWM3YTY0ZmE4NjdjZWIgcHkzaworNzY0ODYgYjdmYmVmMDc3ZWFlMTNjYjUwYmZhZTg4YWJjOTQ2ZmNhZjk5NDdmNCByZWxlYXNlMzEtbWFpbnQKKzc2NDg3IDM5NDhiNGM3MjlkN2FlOTRhZDc1ZjY0MWZjNDNmYzc0YjY2OWViZTAgbGVnYWN5LXRydW5rCis3NjQ4OCA1MTZjNjIyYTRmOWUxMzgyYzI2ZDM3NjdiMTcwOWY4ZWYzODMwMWUxIHB5M2sKKzc2NDg5IDMzN2ViYjgyOWI4Y2EyZTM3NzIxNDFhODRhM2U3ODRjOTI1ZjNiNjggbGVnYWN5LXRydW5rCis3NjQ5MCA5ZGNhMzg0NzQ4NTQ5Yzg2ZDg0NmQxZTVlZDMzMGE2MDlhZTU2ZWU4IHJlbGVhc2UyNi1tYWludAorNzY0OTEgNTM1ZTA4Y2U0M2Y1NzljYzZlOTY0ZTdiZWU4MGJhNGZmNzFkNTRkNyBweTNrCis3NjQ5MiA1OGIxMTkxZTQ1MWZhMDAzZmUzMzlhZTM5NDU1MjNjMGVkYWJlZDI2IHJlbGVhc2UzMS1tYWludAorNzY0OTMgNmYwNDhiMWU1MjgwNjIzMjNmOWU1MWI5MGY2OGY2NDk3OTI3YTBiOCByZWxlYXNlMzEtbWFpbnQKKzc2NDk0IDc2NTkwOWZjN2RlYzk2ZTNlZTRlMTE4Mzk5ODE2NjA1Zjc4NTdhOTggcmVsZWFzZTMxLW1haW50Cis3NjQ5NSBmYmVmNWZjY2IwYzg4ZjljZmJkMDc1NzY1MTA1ZTI0MzU5MzVjMDJiIGxlZ2FjeS10cnVuaworNzY0OTYgODNkOTRlNzJmMDFjZmZhMGIyNjFkZDU1Y2Y5YWE0NDRlZDhmYTgxYSByZWxlYXNlMjYtbWFpbnQKKzc2NDk3IGZiNzk5NGIyOTEwMTczYTRjN2FlMTQyMTFiMDdiMDlhZGNhYTliZjIgcHkzaworNzY0OTggMTdlNTkwYmU0YzVhYTJhNjY4ZWU0OTFhMzdhYjE5ODRmNGFlY2NlNCBsZWdhY3ktdHJ1bmsKKzc2NDk5IGNiM2VhYzQyMWNmOTZlZjhlMTgzNzRhMWUyMmYyMThjYTJhMjI5ZmMgbGVnYWN5LXRydW5rCis3NjUwMCBiNTFmZGE3NTRmNWE1ZTMxNzA0YjNmZTMxM2M5YWZhNzdmODIyZmRjIHJlbGVhc2UyNi1tYWludAorNzY1MDEgOWU3OWE2YWZhM2Y1MzEwMGI2YWE0MWE4YWQ2ODFlM2ZmMDFjYzM2OSBweTNrCis3NjUwMiAyY2QxZmIxMDQyMzM0ODFhMTBlNTcwZjc2OTdjYWI4NDM4OTg3OWY0IGxlZ2FjeS10cnVuaworNzY1MDMgOTAyODI4MDRjZDUwMTY3ZWEwYzI4YjQ5YmZiYzkxNDA2OTNkOGM5OSBweTNrCis3NjUwNCBhZDUxNjllMDVkYzNiMzhhNjk4ZmQ2Mzk0ZWFjYWZjMDE1MDc3NGZjIHJlbGVhc2UyNi1tYWludAorNzY1MDUgMDE4YjIwYjAzOWE4NTRiNWExNmVjZjgwZmI3MzVjN2YxODlmYmMxYiByZWxlYXNlMzEtbWFpbnQKKzc2NTA3IDVlYTIyNmQzMmY2ZDc3ZTU4MTk3ZTU2YjNlM2E1ZDZjNmQ5OGM5ZGUgbGVnYWN5LXRydW5rCis3NjUwOCAxZDE1N2UyY2U5NDkzZjQ4MzQ4NmZhZDI5MTMxZTY3ODk0OGYwY2JhIGxlZ2FjeS10cnVuaworNzY1MDkgODVjZDkzNTI1NTY4N2QzYjgwM2Y0OTg2NTg0NDM0NTM2MmM1NzIzNCBsZWdhY3ktdHJ1bmsKKzc2NTEzIGM3NzMyZjg4OWM0NTQ4YWU3MGNmOWJkMTg4ZTMzYWJiOGZkZDNiNzggcHkzaworNzY1MTQgMDIyY2QwZjNjNTU4ZWRkZTE2OWY2YmE1NjJjN2QxNDE1MzU2Y2I0MyBweTNrCis3NjUxNSAwZGI2NzE1M2QyNWYxNGMzZTk3YzdkOGJmMTA5NmI4OTFiZTA2ODk3IHB5M2sKKzc2NTE2IDEzODZkMGU5ZTBmYzdhNGQ2MTdkODBiMGJkYWIxYjQwZGU2M2Q0NzYgcHkzaworNzY1MTcgNDFiZDMxMjM4NjRkODlkMzUxMWJiYjc3NWU1ZmU0MmZmYTNlZWU2ZSBsZWdhY3ktdHJ1bmsKKzc2NTE4IGU1YmMzODJjY2Y3NWIxZWQ4YTMwY2E3ZmI1ZDI0ODhkMjMxNjMzNjEgcHkzaworNzY1MTkgNTA4NjU0Y2VlMTM3YThlZDE1ODE1YWU3MzBlZGY4MGExOGNhMDQxMCByZWxlYXNlMzEtbWFpbnQKKzc2NTIwIGU2MTMzZDE1NGY5ODE5YzY0OWQ4ZWFkYmNiZmU0MmU0OGNmMjFlMDUgcHkzaworNzY1MjEgZmVhNTMyNThhYjdlYmVlZDEwOGRjOTcxZWE5MzYyYWFlNGZmYWVlOCByZWxlYXNlMjYtbWFpbnQKKzc2NTIyIGRmODZjNDIwZTk3YTBjYzE1N2M2ODdlOGYzYjgyYWMyYzA1ZWQ3ZGUgbGVnYWN5LXRydW5rCis3NjUyMyA4NWUxZTEzYjQ5OGE3MmMwMzJkODBkOTJmNmE5ZmU1NGVjNjhmOGJhIHJlbGVhc2UzMS1tYWludAorNzY1MjQgMmQzODhkMWE4M2Y0MmUyNDQ2YWVmOGU4Y2MxZmU0ZjI0NDY5YWQ5NyBweTNrCis3NjUyNSBhMWQxNjZhYjE4YzQ0YmE2MzYzYWNjYjllZjJmZmE0ZjA0NGYzOGMwIHB5M2sKKzc2NTI5IGE2OTgxZjRhNzRhMWQ4NjZjMDliNTllZTdjYTA2MDNjOTRlYzBhZmYgbGVnYWN5LXRydW5rCis3NjUzMCBhODU0NzFjNDc1MTQ4ZGYwNjc3YTkxMjE5ZjE2NmM4YjhkMjE1ZDc3IHB5M2sKKzc2NTMxIDYxZTZjZTcxODUwMDg5YzBkNDgyOTY4ZDFhYTE3YjI4ODI0YTIxMjMgbGVnYWN5LXRydW5rCis3NjUzMiAzZjcxZWJlOTFmOTA1NTA1YzllNTBlNjU2YjY5MDU4ODVmMDhhM2M2IHB5M2sKKzc2NTM0IGM1NDU4YmEzODlkNzY1OWY4ZTkxMjE0NWY4YzQ0Y2UwN2Y1NjU1Y2EgbGVnYWN5LXRydW5rCis3NjUzNSA3Yjc0YWJiODAzNTY4ZGJlN2Y1MzA4ZjkzM2FiMmM5NDM5ZDVkNWE3IGxlZ2FjeS10cnVuaworNzY1MzYgNzQyMzBlNWFiMzczOTA1NTljOWE0MmYyMmUzMTU3ZmY3MmY4OGZiMyBweTNrCis3NjUzOCA0NTIxZjU5OThlN2M2MmU5NDEzNjAzOTk4MzlmZTgzZTlmY2NhZDEyIGxlZ2FjeS10cnVuaworNzY1NDYgYThhYjYzZmQzMDk4OTdjMDAzNWQyYzM3M2MzNmYwMTg3YjEwODMzOCBsZWdhY3ktdHJ1bmsKKzc2NTQ3IGM5MzY5MDkyZmVmY2Q0NDViOWM1NjNkZWZmYTJjMWRmMGE2MGU0MjcgcHkzaworNzY1NDggMTM3NDhmM2RkYzdiNTQ5YjRlYjZkNjZhNjU5OTUyMWQ2NjQ0ZjE5YiBsZWdhY3ktdHJ1bmsKKzc2NTQ5IGM3ZDdkNWNhODQ0NjRmMmFjZDdjMDRkYWQxZmY1NDg5YTVmZjkxMzUgcHkzaworNzY1NTAgOTg4ZGIwYmJlZTNhM2UwYTk0NjY2ZWNkOTA0MTBkNWM5NDk2Yzc3ZSBsZWdhY3ktdHJ1bmsKKzc2NTUxIDY3MjFkMzNmM2NkMWYzYWM2ZGQxNmJmMjQ4Y2JhZTcyN2ZiNzdiZDEgbGVnYWN5LXRydW5rCis3NjU1MSA1MzY2OWNiZjBlZDJhOWIyNDk3MzNlZjA2OWRlMTRiMzdiNzE1ZWI4IHJlbGVhc2UyNi1tYWludAorNzY1NTEgNzI2ZDEyZGJhMWY2MGUzZGIxNGZmMjQ0MDRmMzE2Y2I4MGE1OGQ3ZiBweTNrCis3NjU1MiA0ZWY3YjNlMmQ2YThiMGIwYTliN2M4YzJlOThmMzQ0OWU2ZTAzZDJmIHB5M2sKKzc2NTU0IDUyN2I3YzA3NTg0OWZiZjY0NTg3YTU0NmMzNDI3MmQ5OWI2ZTRjMDYgcmVsZWFzZTI1LW1haW50Cis3NjU1NSA1NzRkZDhhY2E5MTRlNDQzYjY2NzVlZTdiNWI2ZGU5MDg4NWYxOTM0IHJlbGVhc2UyNC1tYWludAorNzY1NTYgNmU3NDAzYWQ1MzM1ZWE0ZDEyZDI2ZTFhZWMwMjc1M2FiZTY1YmNlMSBsZWdhY3ktdHJ1bmsKKzc2NTU3IGZkZTUxMzBiZjZjZGJkMzJjOWY0YWE4ZjUzZTIwYWJiYWIyMGYzODMgcHkzaworNzY1NTggMzM5ODY2NDg2MzBiYzRjMDlmMDFmZGExNzRkMWJjMDI0NjFkNjgyYiBsZWdhY3ktdHJ1bmsKKzc2NTU5IDE4MDI0ZDI5ODY5Y2IxZjVkNWUwOTAxZWMyMGFiYmI0N2JlZDZmOGQgbGVnYWN5LXRydW5rCis3NjU2MCBjNGMzZmQ1OTNiMGFjMjk2ZDM4NTJhYTZjNGUwYTVkMjg3ZmE0YmQ1IHB5M2sKKzc2NTYxIDI5N2RmNzdiYTM5NjQ3MDY5NmZhNWViMjdmN2ZhYjE4M2MxODc3OTEgbGVnYWN5LXRydW5rCis3NjU2MiA2OTZkOTYxNWEyMzgzYjk1M2JhYTY3NmQyMjQxMTRkYmE4YjM3ZWY1IHJlbGVhc2UyNi1tYWludAorNzY1NjMgNWI2MDdjZDhjNzFiYjU4ZGEzZmM4Nzk2ZTc3YjEwM2MyMGNmYjgzZCBweTNrCis3NjU2NCAzZDExNTc4MmZlMWJiMDRmMTFhODNlMzRkMGFlNDczNDNlMjdhN2QwIHJlbGVhc2UzMS1tYWludAorNzY1NjUgMGMxOWJlNDUwZTY3YTAxZWM0YTJkNmYxMjNmN2E0YzdiMGU1OGVmOSByZWxlYXNlMjYtbWFpbnQKKzc2NTY2IGNiODM2MzAxZGI2MDU3ZWRkY2U0MjliMzIwYTBkNDQ0NzBjOTczYmEgcHkzaworNzY1NjcgM2Q3N2Q3YzE2YzkwOTc5NmM3ZjJhZjM3ZWIxZWZiZGY4ODY5NzUyMCByZWxlYXNlMzEtbWFpbnQKKzc2NTY4IDE0ZWU3NWI4NmE1ZjA0MWQ1MzFiY2I0MWU2Mjk0N2JkZWVjZmM3ZDEgbGVnYWN5LXRydW5rCis3NjU2OSA5MzZiNmYwNjU1OTM4YmVjMDQyN2MzOWEyZjI4NjczOTYzM2Q4ODA3IHJlbGVhc2UyNi1tYWludAorNzY1NzAgOWZkOGU5NWI0ZmNlMTdkYjM1NWVmZmMxMTlkMjcxOGNjMjE4MDQzYiBweTNrCis3NjU3MSA4M2M3MDJjMTdlMDIxOGRmOTY1OTJlYjI3YTk3YThiYTYzYzc0N2UwIGxlZ2FjeS10cnVuaworNzY1NzIgOTE2YTNkMzUwNzQxYzdmNmNmZTg4NjA4ODJiNDA5MjliZGFkMWIwYSBweTNrCis3NjU3MyAxNDljMWE3ZTcyYzE1NDcyZjI5YjkyODBkY2Y3OGZjOTU1MzI0YmExIHB5M2sKKzc2NTc0IDRiZWQ3OTZlZTBkNzg2OWFkMmZmMDAxMTdlZWQxY2Q5OGIzYTE3ZGUgcmVsZWFzZTMxLW1haW50Cis3NjU3NSBlMDZjM2Y2MmZjYzk4YzAxMjZhMjJhMGZkZjFiYjY2ZTJhMTVkOTVjIGxlZ2FjeS10cnVuaworNzY1NzYgODMzNTJlZDkyMjlhM2Y2MzBhMjM4MTIzMDdjOGE5NDdlNWZkYTlmNSByZWxlYXNlMjYtbWFpbnQKKzc2NTc3IGIwZmM1NGM1ZDIzNGY3YTQ5MGY5NTUwNDlhZjg3NTA1ZTI3YjI5MjcgcHkzaworNzY1NzggZjJlMWFjNzUwZjExODUzNGVkMDI4NTkxM2VmMzVkMGMxNTU4OTY0OCByZWxlYXNlMzEtbWFpbnQKKzc2NTgzIDkzMGFlZGVkOTAwZGM5ZDdhNzM5OWEzZGQ2ZjIxMzg3ZmM5YWFmNTIgbGVnYWN5LXRydW5rCis3NjU4NCA5ZmI2ZDU0MTRkZDg4MmU4Mzk5NjU0ZWUwZTAwM2Q3YTExYWNjOTY4IHJlbGVhc2UyNi1tYWludAorNzY1ODUgMGVhZjVjOWVkZDcyOGYyN2M5ODgyMzljYmMyMmM5MjM5OTIzZDhhYiBweTNrCis3NjU4NiA5MTVhMDQ0YmU4MzRjYWQyZGQ0YzQ1YjEyZmNkYzg1YTUzOGQ3ZDE3IHB5M2sKKzc2NTg3IGU4ZDU1MGE4OWYwYmExMWE2NTM1ZGI3MWE4ZjMzNGRjZGI0NWEwZGYgcmVsZWFzZTMxLW1haW50Cis3NjU4OCBhOTQ5MjU1ZDQ1MGZiYTE2NmRkMGVhY2FhNGE4ZTA1ZTlkYzc2ZTQ3IGxlZ2FjeS10cnVuaworNzY1ODkgNmNkNDVmNWNhYjU4YTczYzk0MzZiMTY3Mjk0ODFjNGQ1NTA5ZjFiMyByZWxlYXNlMjYtbWFpbnQKKzc2NTkwIGU5NjA2OWExMzI3ZjkzNmI1ZTc4MWY0OTQyMWY0MGYxNTk0ZjY2MTkgcHkzaworNzY1OTEgMjE4YTdlYjQwZDI2ZTM4MzRhMDI1OWE4MTljMThhOGUyNjNjOGZkMyBsZWdhY3ktdHJ1bmsKKzc2NTkyIGQ1MTAxMmZlMDliMzQyNjIwNmQwMjNhZTM4NzU0YzU0YTY1NzU1MWUgcmVsZWFzZTMxLW1haW50Cis3NjU5MyA2YmRlZGUxOGZjODBkZjZkNmI2ZjhiN2E5MGU3NWUwNjViMjljZGRiIHB5M2sKKzc2NTk0IDllNTFhMTQ5OThhMmE2MDFiYmNhMzUzNTkyODc4Mjk1MTdhNjI5OTQgcmVsZWFzZTMxLW1haW50Cis3NjU5NSBmMzdmNmI5YjIyNGIwNzkwNWVkOGUyOGU1ZGJmNGNmNjgwMjIxOWUyIHB5M2sKKzc2NTk2IDc0YWM4YzEyN2E2ZmYxNmVhMDFhZTExZWVhMDg5ZDdmODM1NmFkMDcgcmVsZWFzZTMxLW1haW50Cis3NjU5OSAxZmYyYzNlZGMxM2NlODcyZmIxYmNmNmY2MGQ1ZDIzNzE2ZTU2OGYwIHJlbGVhc2UyNi1tYWludAorNzY2MDAgMjgxNjY1MGQ3Njg4YzMwMzg0ZjczZTk4MTUzZTg3OTZmODgwNGNhYSBsZWdhY3ktdHJ1bmsKKzc2NjAxIDg0ZTNkMzZkYTRjMjcwYzZlZjM2ZDM5OGQyODQ4OWM0N2M4NWQ4MmEgdGFyZWtfc3lzY29uZmlnCis3NjYwMiAwY2Y5OTE1OGZhNjM2MDAxNzI3ZmY4NWRiYzAzZmRhMWMwMzUyOWIzIGxlZ2FjeS10cnVuaworNzY2MDMgMzE1ZTZhZTY0YmVmN2FjZDg1MzllMDg0ZTdmNjg1ZTRkY2M2YjUwMCBsZWdhY3ktdHJ1bmsKKzc2NjA0IGZmMmFlZmM5Nzg4MWYyNTg0NDM1ZmExMTVmYjhjNjM1ODQ2YzFjMzggcmVsZWFzZTI2LW1haW50Cis3NjYwNSBlMzIwZjg4YTY1YzlhY2IzODlmNmI4NGRiOTk5MDkzOGUxY2VkMDVjIGxlZ2FjeS10cnVuaworNzY2MDYgZGRhYjNkYTk0NzNkYjU4NzYyNTNjMGIxN2Y4MmQ1NjAyYzVkYjA2NyByZWxlYXNlMjYtbWFpbnQKKzc2NjA3IDg4OTZjNDg0NzQyM2Q1OGJkYzFiZGQzM2MxYjQyZTFiZGVjNmZhYTYgcHkzaworNzY2MDggMGE2MTM3OTQ0ZTYxYTA3NjdkYzZhNWRmZGZjYmVjNzRmY2E4YTdhNCByZWxlYXNlMzEtbWFpbnQKKzc2NjA5IDY1MzZhMWNkNDdjZDNlZTgxZjU3NWUzOTc0Zjc4NjgzNWE2M2NmN2MgcHkzaworNzY2MjMgZDk5ZWY0NjRlZjMzZmVmNjMwY2E4NzJmZjdmODdmNDUzOTcyZTgyZSBsZWdhY3ktdHJ1bmsKKzc2NjI0IDRkN2NkZjdhNmM3NWRiNWY3N2FmOGJlZmEwMTRlMmZiNTRlZjBlNzggcHkzaworNzY2MjUgMWIyYWZjYzNjY2YzOGE4M2I3MTUzYWJhOGFlZTNjZmYwMGNmOTFiZCBsZWdhY3ktdHJ1bmsKKzc2NjI2IDVkMmM5ZDg4NzdkZGI5YTNhZWIxNTEzZGU2YTUxZGQ0ZjY4NWEwNWIgcHkzaworNzY2MjcgMjgwMzY5Njc3NjAyYzZiZTY5MzZmMDhjNDQ0ZjEyNTg3ZTZiYzg0ZSByZWxlYXNlMzEtbWFpbnQKKzc2NjI4IGNmOWM2NDlkY2M0ZjRmMjE5MTRhYTUwNDA5NDJiODhkODBkZDUxOWIgbGVnYWN5LXRydW5rCis3NjYyOSA4ZjZlZWU0MmY4MTBkY2Q2MzBjYzRjY2JmNjM5MWI0ZGM1ZmNjNWMwIGxlZ2FjeS10cnVuaworNzY2MzAgY2JiNmU5MmMxYTBkZDI1NDE5YjQzNTM5ZjA4MTMxYWQwM2VmNmU3MyByZWxlYXNlMjYtbWFpbnQKKzc2NjMxIGQ5Mzk4YmRkNDEzYTAzMjUzMmE1ZjQzNGJhYmY1Nzk5MDg4M2E5ZDggcHkzaworNzY2MzIgMGZmNDcwMzRjNjkxY2FiM2MyN2I4YjY1NTk4ZmUyODQzZGE0YmE5NSBsZWdhY3ktdHJ1bmsKKzc2NjMzIGQ2OGE2MDA1MmM2NjUwNjVkNzU2MDJlN2MxMTcxZGIzYWViNDI1MzYgcmVsZWFzZTI2LW1haW50Cis3NjYzNCBiNDA1MTJjZWMyZDZjOWYwMzdkMzdlY2JlYjc2N2UzYWViMzNmYjNiIHB5M2sKKzc2NjM1IGFjZmQ1NjE1YjUyYzE0YzgyY2ExNDhjOGUxMDZkYzI0OGY5ZTU4ZDUgcmVsZWFzZTMxLW1haW50Cis3NjYzNiBhNTRjMTk4MDJhY2NjYWZhOThkMWY1Njg0YTg1M2JkOGM2ZmQyNGFlIGxlZ2FjeS10cnVuaworNzY2MzcgZTlkYWMzZWZmMzE3NDNiNTE1MmQ4NzRlMDllODU0YWFkY2E3YTFlNyBweTNrCis3NjY0MCBkN2NjOTAxN2FjNGM2NjAxOTVlMTU0MzMyMjdiZGExNDFlZTAwMTZkIGxlZ2FjeS10cnVuaworNzY2NDEgMGFmODE4MWRhNWNlNTE1MTYxOGNhOWY1ODM3MWIyMzBkZGNiOWViNiBweTNrCis3NjY0MiAyNjJhMmNlYWYwNWYxY2RkNmVlODc2ZDUyZTg4YmEyYjUwNWUyYTdlIGxlZ2FjeS10cnVuaworNzY2NDMgMTVhYzMxOTFmOWJlMDVhNDViZmUwN2U3YmQ2MjVjYTBjNmZlNDI4MyBweTNrCis3NjY0NCA4MTgwOTI1Yzc1YmE1MTljYjQ1NTE5NWNkNDk5Zjc5Yjk0MDRiNDJkIGxlZ2FjeS10cnVuaworNzY2NDUgYjc5ZDA0MjBjMjA0MGQ4MmQ3ZTg2NjdhOTc2NTgyMzcxNjU0ZWJmNSBweTNrCis3NjY0NiA1YzY4MWVjYzk5NjdjNDFkZjllNzdlY2M1NDQ5NzUyMDU3ZjdkMWM1IHB5M2sKKzc2NjQ3IGI2MGYyYjJiOWMwNDU0ZDM0MWVhYmUzNTE2MzJiZTRhYWU0MGE3ZDAgcmVsZWFzZTMxLW1haW50Cis3NjY0OCA3NWUxYjhjMDVmNDNkNGFlNDJkNGFlMGY0OTFmNjU0NWNhY2ExYzQzIGxlZ2FjeS10cnVuaworNzY2NDkgOTE3MDU4ZWVhNDQwMjQ5OWNmZjI2NDgxN2Q1M2RhN2ZlMjEyMGU0MiByZWxlYXNlMjYtbWFpbnQKKzc2NjUwIGZkZjdkMGVjOWQwNDFiNDUxYzViMTYwMWQwOGNiMGVhMmYwNTdlZGUgcHkzaworNzY2NTEgYjVjZDNkMmVjMDI3NmQyNDkwMzgyNjViMGI0ZDY4MTY5MGQ2NTY0MSBsZWdhY3ktdHJ1bmsKKzc2NjUyIDk2OTU0ZTdkZDliNmUyMWM2OGU1NTUwOGY4M2FkMDNmOTY2NGIyNjYgcmVsZWFzZTI2LW1haW50Cis3NjY1MyAxMTQzNGI2MmQ4Y2Q4MDYyZmVkYTE1OGNmZjM0ODBiODRiOTNlYzg5IHB5M2sKKzc2NjQ3IGVmOWY0MzJlNGQzOWRjZDk0MjJjYWFiMzkxOWE2ZWZjNDEzZGUyYWIgcmVsZWFzZTMxLW1haW50Cis3NjY1NSAxZmExODU0MDMxYWEyYTQ2Mjk2NjYzODE1OTQ2NDc1ODZiODc4OWNkIGxlZ2FjeS10cnVuaworNzY2NTYgZjA0MmRiNDM0NjM4MzkyYzkzOTc2NTQ0ZGE4YjdmMzVlYzdkZWE2ZSBweTNrCis3NjY0NyBkMDBlYzI2MGQ2MmFhOWM5YjFjNDA0MWIwM2UzNzZjNWMwMjQzNjgwIHJlbGVhc2UzMS1tYWludAorNzY2NTggYjhlMjkyMzY5ZWE4YjgyY2YxOWU1YzI2NTJlMzg5ZWM2NGFjYmRiYSByZWxlYXNlMzEtbWFpbnQKKzc2NjU5IGQzMWIzMzUwYWFkYmU2MzBlMGEyNjI3YzEyYjNjMGViZDM2ZjViN2UgbGVnYWN5LXRydW5rCis3NjY2MCAxZWUxZmE3YmVjZjJhZDIzZWUyOWIyMWI0MTU3M2JjNDgzZjA3MjQzIHJlbGVhc2UyNi1tYWludAorNzY2NjEgNTk4ZGU4ZTZjNDhiMzQ2YzJlNmZlODM1NjVmYjQ0NzIwMzNmZDMwNSBweTNrCis3NjY2MiA5ZGY0ZDViNTI2MDljZmU0ZGI1YTBjZDc0YmEyM2VlYjQ3ODMwMzRiIHJlbGVhc2UzMS1tYWludAorNzY2NjMgNzMzMTM4ODU4MTU3NGU3ZWJiMzUwYjRjYjI2ZjU3MTMxMjFkNzQ5ZSBweTNrCis3NjY2NCAzZWM2YjUxY2RiZGRiYjcxNjNmM2E5ZDZmZTM2NDE4MjY5YTNlODUxIHJlbGVhc2UzMS1tYWludAorNzY2NjUgMDQwYzM4ZWQyMjUxNWY5NzM0Mjg3MTVhNWYxNDQzZDc1YTg3NmNmYyBsZWdhY3ktdHJ1bmsKKzc2NjY2IGQ1ODdhNGU1YmE1YTU5NDkxZTI1MDA5ZmIzOTFlYzJhOTYzMDczN2MgcmVsZWFzZTI2LW1haW50Cis3NjY2NyA3M2E5MTI1NzAzYzMyYWMyNDYxM2ZjOGY4ZDYxOGJiMWFjMGM3ZGE0IHB5M2sKKzc2NjY4IDU1YzgzMmJkMzIzMzNhMWFmMDAxNzk2ZTljNDU0MDgxZGRkMGIzZmYgbGVnYWN5LXRydW5rCis3NjY2OSBkMzA4MDI5ZTlhZDIyYjViOGZhNDg5MTE0NDY0NzMxMDA0Nzc2M2JjIHJlbGVhc2UyNi1tYWludAorNzY2NzAgMGZlODk4NzVlZGVmMzQ3NmRjMjRhZmUyOWViNTNiMDYwZmIxMDAxMyBweTNrCis3NjY3MSAwMTQ4Zjc2ZDZmY2RmZDlmMjUxOTZhYWEwMzE0YWE4YTczZDFkZmE1IHJlbGVhc2UzMS1tYWludAorNzY2NzIgNmJiNjNiZTcyOTljYjYzY2JlNDIwZDMwOWNiNGNmYmUzMWI0NDIyMyBsZWdhY3ktdHJ1bmsKKzc2NjczIDRkNzQ0NWNhMzA1MTRlZmY5NWNhOTI2NGJjYzZjMzVmN2VjZTU5YWYgbGVnYWN5LXRydW5rCis3NjY3NCBiNDEwN2ViMDBiNDI3MWZiNzNhOWUxYjczNmQ0ZjIzNDYwOTUwNzc4IGxlZ2FjeS10cnVuaworNzY2NzUgYjllOWQ1NDBjOTBkMzEyOTZiNDViMmJmZDFiNTc5MTQ2ODBhYjZiNiBsZWdhY3ktdHJ1bmsKKzc2Njc2IDM2YTBkZDIxYzViNDNkOWFlODY5Y2MzYTU2ZDQwNzdhMDJkYTliOGUgbGVnYWN5LXRydW5rCis3NjY3NyBlMTlkZTk0MzNhNGJmZThjZmEzODZjMWJiODVlMDc0ZWI5ZDA0YzUzIHB5M2sKKzc2Njc5IDI1NTMyYzk5MzJkZmZhN2Q5MmU0Mzc3YjUxZDc1YjZmOWI3ZmU1MzIgbGVnYWN5LXRydW5rCis3NjY4MCBlYWIxMjNkYzEwN2Y2NGRjMmZlMTFmMjczZGVmNzhiMTg0NDRkNDU0IHB5M2sKKzc2NjgxIDFjOTJmYmIzYmFmMjZhYzVmYmVhNWY0NzU0M2FiODc1OWEyZGQyMjUgcHkzaworNzY2ODIgYWQxNDU1NTgyMjZiODdhZWM3MDJmMDk0OGFlNjExOGEzMmZmZDQzNiByZWxlYXNlMzEtbWFpbnQKKzc2NjgzIDY4NTY1ODE3YzE3Zjk1YmU0NDFhYzdjOTA2MmZjNTViMTIyODEyMGMgcmVsZWFzZTMxLW1haW50Cis3NjY4NCA2YTQ4YTA5MWMwZDM4NmM5NDZhYTk0ZjA2ZDZiZGRkOGI5ZDdmNmFiIGxlZ2FjeS10cnVuaworNzY2ODUgMWMyZWNkNTlkNjVhZjk5ZDc1MDQ1MzZlNmJmODE1OTdjZWExMmUzNiByZWxlYXNlMjYtbWFpbnQKKzc2Njg2IDllNzUxNjAxZjUzODI3ZTBlYTdlMzEzMDNmNWY2YWZjNjM5NDBmMGMgcHkzaworNzY2ODcgNTY4NjE4YjVmNmZkNWQ0NTVjZDA4ZGY0YTJiNGRkYTA3ZjI3ZGRmNiByZWxlYXNlMzEtbWFpbnQKKzc2Njg4IGE2YjFlNjk1OTM4MmUzNWY0MGMxOTE1OTdlZDNkYmM4MjgxNDA2YWEgcHkzaworNzY2ODkgZWVhODAzZDIzNWQzNDFjYzViYWFiMGE4N2RmYzdmNzAxMzg4ZTVkMyBsZWdhY3ktdHJ1bmsKKzc2NjkwIGJlMWNiYzE1ZDlmNTFjY2NmYWNjZmE3MDE2NDI2YTc3NjZhYzFlODggbGVnYWN5LXRydW5rCis3NjY5MCBmOWJkYmNjOGQxZThlNmVjOGM0NTgwOWYyYmQ0MDM4ZGJhNDYyYmEyIHB5M2sKKzc2NjkxIDYwN2Y1MThiZDNjZmI4MGIwZmQ2YWM3NDc2YmU1YTE1ODM5ZDA2OTUgbGVnYWN5LXRydW5rCis3NjY5MSBiYWM4ZWEyYjZkYTM1ODg0ZWFlOWFmYzEyOWI3ZWEyYzE5NmViZGY5IHB5M2sKKzc2NjkyIDg5ZjZhNzU0NjJiMjdlZGIxNTEyMGE4ODBmYjZhMDA5NTMwZjdjYzIgbGVnYWN5LXRydW5rCis3NjY5MyA2ZWY0YmNjNGE0NTAyMTY2YjZjODM0YjJiNmIyOWExZWUzMTE1Yzc2IHB5M2sKKzc2Njk0IDU2ZmNlMTg4YzZiZTA3ZWZmOTQ4YmE1NjVjMTMzNmY1Y2IwM2VlYjAgcGVwLTAzODMKKzc2Njk1IGMwZjhlNGEyM2RkZjRiOTQ5NTI0YTg1NWQzYmEzMjJiOGIzNjIwZGEgcGVwLTAzODMKKzc2Njk2IDY4NTUyMmM2ZjMwZmJlMWIxNjUzZmEzYzQyZDdjZGJkNWQxOGVhMjUgcGVwLTAzODQKKzc2Njk3IDljNTk3YjBhNmE5YjcxZjg4MDNmNjRlMzc4YmRhZjRkNDc3MGZjYWYgbGVnYWN5LXRydW5rCis3NjY5OCAzNWYzYTE5YzQyNjVhNzZjODJhOWJmZmYwYzlmZTdmYmE1YjQ4MjY2IHB5M2sKKzc2Njk5IGY1YTQ0N2IzZjI2ZWJmNDk1YmQ1NzFjZjdlOGY1OWE3OTkwNTk2ODEgcmVsZWFzZTMxLW1haW50Cis3NjcwMSA0NTA4MTg2MWVmNzRhZmY4NjhmMDFlNjliYTZhOGJhZmM3NDU3YTFlIGxlZ2FjeS10cnVuaworNzY3MDIgMjVhZWRlNjJmYzE3MmE2Njk4ZWMwMzY2MmQ0MjhjODJjODFmMmRkMiBsZWdhY3ktdHJ1bmsKKzc2NzAzIDI3NTA5NzNlMzg5M2M0M2JhOGIxY2I0YTA1ZGUwZTNiYzNlMDRiM2QgcmVsZWFzZTI2LW1haW50Cis3NjcwNCA5ODg3OWM4ZDUzZjE2NWRjOGM4MDBkOGQ4NGNkZmUxNjAzZjlkYjVmIGxlZ2FjeS10cnVuaworNzY3MDUgNTFjNWM5MTJlYzNlYjQyZTE2OWIwNThmZDU0MmFmYzgxZjg1ODM1NiByZWxlYXNlMjYtbWFpbnQKKzc2NzA2IGQ5YjRmNmVhM2UzOTc1YjNiNDlkODVlZmU2NDY4Y2JmNGZhNjhkMTggcHkzaworNzY3MDcgNzY0N2IxNGVmZTcxZmE5MzY1ZmI0MmUwOTFjZWFlYTlhODM0MmE0NyByZWxlYXNlMzEtbWFpbnQKKzc2NzA4IGRiMjhhZWIyZmI3YTdiYmEyMmM2YjZjNmUxODkyOTMwNjIyOTNlYzUgbGVnYWN5LXRydW5rCis3NjcwOSA0MDc0Njk1NmIzNzkyYjM1Nzg1M2MyMzQ4MjIyZjJiNzEyZmFkOWE5IHJlbGVhc2UyNi1tYWludAorNzY3MTAgNjgzZDVjOTdlNDc2ZGU0OTlmZWNmODZmOTA0YjQ4NjVjNDkyZmFlYiBweTNrCis3NjcxMSA2ZWZiNDZjMmIzYzNhZGRhZTJhNWIzNGI5MDhiYmJlYmFkOGI4OGZlIHJlbGVhc2UzMS1tYWludAorNzY3MTIgMjRmZmIwYTNhZTRiYTkzNDY4N2RmY2M3MGUwMDM0NzQ0MWNmNzdiZSBsZWdhY3ktdHJ1bmsKKzc2NzEzIDQwYzM2MmE1OGU3ZjBhYTEwNDc1YWQxNmZiZTM4ZWNmNjUyNWUwMWUgcHkzaworNzY3MTQgY2YwYzY5YmUwMTFhNTg3Y2MxY2E3N2RjNTQwNzcwMzkyNzNiZjFlZSByZWxlYXNlMzEtbWFpbnQKKzc2NzE1IDgzYTc2MTkzOTk3NTMzYTI3NGQzYjkzMGI3NTg2ODBmMzEyNzdkODIgcmVsZWFzZTI2LW1haW50Cis3NjcxNiA4M2MyYmYzMTkxZDg1YTQ4YTAxYTg0ZTg2MTg0MjllYTZmN2NlMjRjIGxlZ2FjeS10cnVuaworNzY3MTcgNWI4NjgzYTk1ZWFlYzY1ZjAzOWU3OGNkMTY1MzJkZTlkMDUzZDYzZCBweTNrCis3NjcxOCBlNzI4YWU4OWFlNjlkODhjODVkMzA5Njk0YmQwNTZmYzJiZDNmNjZhIGxlZ2FjeS10cnVuaworNzY3MTkgNWU4Yjc0NDlmOTYxNWMzMDdkNWZiMjFjYjZmMWYxMmQ2MGIyYWZiNCBweTNrCis3NjcyMCA2YzY0MjU1NjM5MTgyODI4YjY2MGZhYTEzZWIwMjE3YzQwZmQ4NzE2IGxlZ2FjeS10cnVuaworNzY3MjEgMmM1MmQ0ZDNlNTRhZWQ1YzQ3NmJhMTlmZTQ3MDJiOWJhYjkzNjg5ZCBweTNrCis3NjcyMyBlNjM0NzAzOGRmOTc2ZmNjNDNhMDhkNzBlN2E4YWNmMmVmNWUzZWEwIHB5M2sKKzc2NzI0IGNjYzU0MDZjYjM4MWRmYjk1NWY2YmZkZTJiN2JmMDgwNWY2NTY1MmMgcmVsZWFzZTMxLW1haW50Cis3NjcyNSA3MzhiMzliMTJkYzhmMDUwNTVkYmFjNDNjOWU3MDQ1MjMzZWI5YTY1IHB5M2sKKzc2NzI2IGVmZWFiZWU2ZTA2MWFjNDk5M2E0MWNiNzdhMDVhZTY1MzZkMzdmMDIgbGVnYWN5LXRydW5rCis3NjcyNyA3NTBlNzVkOTMwMjE1NTUwZGRmY2E3YTI2NTFjNTg4OTczYWZkZTBlIGxlZ2FjeS10cnVuaworNzY3MjggMGE3NmFiM2E2NzNjNmZkNmUyMGM5MzQ1YjEzMTAwYTc3YzA4MzM0MCBweTNrCis3NjcyOSA4MTYzMDNhMDc3NjI3NzhmZDEyZTVkMDkwZmRkZjliNDYxZDY1OGMxIHB5M2sKKzc2NzMwIDI3M2VmMDlmZTgwNDhlMGQ0Mjk5MTJjMWQwZDE3MzBhMzMyMTdmMmIgcHkzaworNzY3MzEgOGI4YWVlMjFkODVlNmE5MmRlMWYwZDMzZWNmZTE5ZDE5ZjI4YTg1ZSBweTNrCis3NjczMiA4OTc0YWI2ODViYWUwNjQwZTBjZDU2MWZkZWJjZmM1NDAzZDVlNjI0IHB5M2sKKzc2NzMzIDE2NjkxYmM4YjE4OTRjNDg0ZDcyYjhmYTQ4MGNjODZkN2IxODllNTggbGVnYWN5LXRydW5rCis3NjczNCBiYzcxNmQ4ZjQzNDVkNmE0MzlmMjY2ZjY4M2M1YTI0ODRlOTgzOTYxIHJlbGVhc2UzMS1tYWludAorNzY3MzUgYjVhNGFjYmVhYWExNjFhZWYyNTAyNTA3ZTZlOWI1MzNlYzZkMzFjNCByZWxlYXNlMjYtbWFpbnQKKzc2NzM2IDU3YWU1ZDQ0ZTczMWZiYzI0NGE0ZDVlODVjZmQwZGIwODNhOWFlODIgbGVnYWN5LXRydW5rCis3NjczNyA4Mjc2ZDAwZDMxMDBmNWFmNjYxNWM1MjFjMTlkMjZmMTZjNjdjMzE4IGxlZ2FjeS10cnVuaworNzY3MzggOGI2Njg5YzBlNWE2ZTZjNThiOWZmNTNkZDgzZWE2ZWQxNWNkYmQxMCBsZWdhY3ktdHJ1bmsKKzc2NzM5IGIyN2Q5NDYzODllNzY3ZTY0NjcxZTVhNTA2ZWUwMmJkMzBhZjM1ODggcmVsZWFzZTI2LW1haW50Cis3Njc0MCA2MzE2OWNiOWU0OWEwMWYxMWM2NGE4NTM2NTg1ZmY2YTk2MDg0MTVhIGxlZ2FjeS10cnVuaworNzY3NDEgOTJmN2M0ZWU2YWFkZmM4Y2YxMzA0NzEwNjEyYzc3MGI0ZTI2YTRhMCBweTNrCis3Njc0MiA3NTJlODYwOGUxMzFiNzFkYTJmZDFmYWI5Zjc0ZGNjMmZkNjBlMWU1IHJlbGVhc2UyNi1tYWludAorNzY3NDMgYTQ0MDljZjZiNTU2NGE2YmUzZGI0ZjQ5ZTBmZDIyYTQxYWMyN2JlMiByZWxlYXNlMzEtbWFpbnQKKzc2NzQ2IDkyMTFhNWQ3ZDBiNDI0Njg2MTVlNzI3MjRlMzQ3OGQ5ZjY0ZGVjNDQgbGVnYWN5LXRydW5rCis3Njc0NyAzNzRkNGU5YWFiMDUyYjVmZjljNTc4NjAwZjk2Y2Y0ZGU2ODhjOWNkIHJlbGVhc2UyNi1tYWludAorNzY3NDggNmY5YWQwNDE4ZjcwZjE5Njc5OWFhMDMyMGI0OTE1ZTM1MmM1ZGU2NyBweTNrCis3Njc0OSA0ZWUyMjY4OTBiNTk5MDlkNzhjMDk3MDlkYzI5MjcxOWMxYjczZTI4IHJlbGVhc2UzMS1tYWludAorNzY3NTAgZDI4ZmJhYzM3ZTIwMmY1N2ZjMTgyNzRkZTZjMzgxNzQ3ODlhZDAyMSBsZWdhY3ktdHJ1bmsKKzc2NzUxIGUyOWE0NTMzMWRlYThiNTQ4YjNlZDM2MmVlNzhlYTE4NzAzMGExMmMgcmVsZWFzZTI2LW1haW50Cis3Njc1MiA2NmZiMWUyNzYyZDM0MjNkN2YzYTk2YTdiYjhkNTFhNzg2OGQ2YmU1IHB5M2sKKzc2NzUzIDc1NjJlMzc2ZDliNTUxZTdhM2Q1MGY4MzcwNjc5ZTcwMGRlZWRjMTYgcmVsZWFzZTMxLW1haW50Cis3Njc1NCBhZTkzOTYyNjA4MzU5ZWRiYzI5MzFkOGNiMWRjNDc3OTk4ZmM0OGU4IGxlZ2FjeS10cnVuaworNzY3NTQgYTZiZjA3ZmZmNmZjYmZlOGQ0OTA1MTg2NzZkOGJiZjcyYWJiMjJmNiByZWxlYXNlMjQtbWFpbnQKKzc2NzU0IDBjZDdhYzhjNmJiM2JiY2RlMDJkZDcwYmE5ZTJjOTU5ZGVkNmU3MjkgcmVsZWFzZTI2LW1haW50Cis3Njc1NCAxOWI0ZTFmNjQ0M2UxOTk5MzMwYmJhMzBiZmZlMDU5NGVjZGIxMzViIHJlbGVhc2UyNS1tYWludAorNzY3NTQgOWI2YjFjMWMxYjMzMGYxMjE5MTQ0YmM1NGI5YzNjNjczODI4ZmU0MCBweTNrCis3Njc1NSBjYjIyZWFlZTg2YzkwYzBmYTMyMjlmZGRiZTBiNTE2MGQ0ZGU5Mjg1IGxlZ2FjeS10cnVuaworNzY3NTYgOWI4M2JmZWZjNWU3ZjZmYWVlNDg1M2FmOWNmNGEyOWZhZTMxNmRlNiByZWxlYXNlMjQtbWFpbnQKKzc2NzU2IGJiYWI2MDJkYTExNDlhNjk3MmI3NTY2N2Y5MTUwYzQxMzkzNWMzYzAgcmVsZWFzZTI2LW1haW50Cis3Njc1NiBlNzAwNGRhMjlmNTEyZGRiNDYzYmQ0NzFlN2RhZTE3ODdhN2Q5NTQxIHJlbGVhc2UyNS1tYWludAorNzY3NTYgMzc4YmI3MDViZTkwNGJiMmRkOGRjYTRiN2Y0MjRmZGY1MmVhNjU5MSBweTNrCis3Njc1NyA3Y2I3M2U3YzE3NmQzMGNkN2I3MzlkOWNhOWJlMmU0NjU5YzAxMDBkIHB5M2sKKzc2NzU4IDE2Y2QyMWJhMjY4YTQ5NjlkZmFjYzY3MjA0MmE0ZTkxNjkyZDRmNzEgcmVsZWFzZTMxLW1haW50Cis3Njc1OSBhZWU4ZWI3ZjVmMDIxZTYyOGEyMGI1N2NjNTFmYzdkN2JlNGVjZDk1IHJlbGVhc2UyNi1tYWludAorNzY3NjEgMjU2ZTlmMDBkMDYxZWY4ZDU0NjRlNzBjYTkxZThlNjRjM2Q4M2VlYyByZWxlYXNlMjYtbWFpbnQKKzc2NzYyIDRkNTFhYTU3MmU4YzlhYmU5ZjllNmI5NjVmYjZmNDMyYTk3ZWMyNDYgcmVsZWFzZTMxLW1haW50Cis3Njc2MyAyZmZkMTlhMjI0ZDQxZmE0NjMwZTQ0M2VhZGI1NGE4NGFmN2ViZWFiIGxlZ2FjeS10cnVuaworNzY3NjQgZDk3ODU5MDljM2E3MmI3NTZkZWYyNjk2ZDgxZjE2MGQ0YmMxM2MwOCBweTNrCis3Njc2NSA3OWUwZGJiNmM0Yjg4Yzg2NDE3ZmU2OTlkZGZmY2I3N2Q3YThkN2EyIHJlbGVhc2UzMS1tYWludAorNzY3NjYgODY5MGE3ZWZmODJhMWUzZDhhZDU3ZDBkMGQ3YzFiODViODYzOWQ4MCByZWxlYXNlMjYtbWFpbnQKKzc2NzcwIGFkOTE3YjhmZDY0Y2Y2MDE0NzIxM2NkODc4ZWU1ZWUzZTE4OGI4ZGYgcHkzaworNzY3NzEgYjdlYzRhZmNmYzNmMGJkZjg4MGIzNWIxYmYzNTNlOWQyMjg0ZjYzNyBweTNrCis3Njc3MiA3M2E2YjliMDU0M2Y0YzgwMTMxNTI1MmYwZTIwOTE3ZTAxMzE0M2ViIHJlbGVhc2UzMS1tYWludAorNzY3NzMgODA0ODU2OWViNTNmNWY3MWUxMjVlODI3YThjY2IxNDQ1NDEzYzhhZiBweTNrCis3Njc3NCAyMGI3ZGViNTNkNGU1OGIyOTRkNjhmOWU2ZDhlNWY1ZTZlYWU5YzMwIGxlZ2FjeS10cnVuaworNzY3NzUgMmI5MzRkNDY2OTkzZGQxYjcxYzhjYWEzMDk0MTJmODc5M2RhZWU3NSByZWxlYXNlMjYtbWFpbnQKKzc2Nzc2IDA4N2ZlNWZhMTEzYzFmZDEwZDliNTQ3NzliYjNhYThhYTkwYzY0NzMgcHkzaworNzY3NzcgZDhjNWUzODUxNWI2Y2RjNTIzMDk1NWNiMTkwMDI5MjA1Y2ZiY2ExNSBweTNrCis3Njc3OCAxNTU4ZGM2OWFhY2YyNmQ4NjBlYjdlZmM2Y2Y2MzM2NmM5ZTU3YjU4IHJlbGVhc2UzMS1tYWludAorNzY3NzkgYTc2OWE5YjM0ZmJjMmM1YWNhMmFjNzlkYzZjZWZjMDBjNWRjMmQ4YSBweTNrCis3Njc4MCA0OTM3ODBlYTM1Y2Y4MjFhYTdhODM0ZDI1MDYxYzExNWJkOGQ1YTY0IGxlZ2FjeS10cnVuaworNzY3ODEgZWQyYjY4ODNmYzk2NzM0YjFiYzE1MzdmMzMyZWNmMGNjZjFjNjM5OSByZWxlYXNlMjYtbWFpbnQKKzc2NzgyIDQ2YzIyOTc0MmM2NDIxM2ZmMGQ4YjRkNzRkMGEyOTRmZDlkNDdhNTggcHkzaworNzY3ODMgOGM0N2Q3ZDJhMDIzYjUxOTEyY2U5ZjJkZGQ0YzgzY2FjNzNkZDk4MiByZWxlYXNlMzEtbWFpbnQKKzc2Nzg1IDExNDIzNzE5YmFiYjQwNDVlOGUwY2U0YWRjZjQ2MmNjYTNhY2NkNWMgbGVnYWN5LXRydW5rCis3Njc4NiA0NjQ4NTFiZjIyZmRlYjUwMDc3ZTE0YTBhZTI4ZjNmZWMzNTJkZDEwIHJlbGVhc2UyNi1tYWludAorNzY3ODcgMmZkY2Q3M2MzMmFhYmI5MjZlNTA5ZmYzMjEyMDgzYWMwN2VlZjdjYSBweTNrCis3Njc4OCA1NDgzMzVjYjAwN2IxZmU4NzRmZWVlMGYyNGRjMzE0ZjE2OWU4Njg4IHB5M2sKKzc2Nzg5IDRhOWU0M2EzYjk4NTMzYWE3MDUwYzEyNGQzOTg3MGIwYTgxYWNkNWEgcHkzaworNzY3OTAgYzkxNWZmNTkxYTJmMzM0MWQ4YzgyYmFhYmJkYTBjZTZjZDQyNGNkYyByZWxlYXNlMzEtbWFpbnQKKzc2NzkxIDE2Y2VkZGU5YWYwMDkwNGM0NTBlMmQwYjlhYmIzYjFhYTgyYjE1MDMgbGVnYWN5LXRydW5rCis3Njc5MiBjNzA4N2VhMWMyMWRkZDNhM2VkNjExZTFiOTQ1Yzg5MzI5MGFmNzA5IHJlbGVhc2UyNi1tYWludAorNzY3OTMgZTdjOTRjYjcyNjc4OTkxYmFiN2JhNTI1YzBiOGRiYjAzNTkxMzY1OSBweTNrCis3Njc5NCBjYjI2Mjk5ZTBlNTI3Yjg4ZDVkM2Q0OTY5NWVjNDM4ODZiNjUwZWJhIGxlZ2FjeS10cnVuaworNzY3OTUgYzJlOTRlZjBkN2U1ODU3NzJmZWI2Zjg1ZGIzMmNkNmEzOWM3MTQwNCBweTNrCis3Njc5NiAwZGJlY2NkN2UwZTZmYWVkZDFmZDJiNjY3ZTcxZWVlMGRiNjJjM2IwIHJlbGVhc2UyNi1tYWludAorNzY3OTcgNDJlMzExYTQ3NmU4MGIxMDRiZjE2NTE0MTY1ZWFlNTAzMmYwMjdjYyBweTNrCis3Njc5OCAyMTVkZGZmMTk5YzFiNjdjZTc4MmVjNzQ2ZTE5MTY0NmY4OWQxNTRkIGxlZ2FjeS10cnVuaworNzY3OTkgMjdjNjNkNjUyNjIwOWE3YjgyYjgwMzUwZTNkZjk1YWI4NGVjNjczNiBsZWdhY3ktdHJ1bmsKKzc2ODAwIDEzOTJlMzZhZjFiMjZhMjNiMDdlMGMxY2Q5YWZiNjJjYjdiMmU2ZGMgcHkzaworNzY4MDEgNjA1Mjc1MWEwNGM4MjMyNzJhZWEzZWYxOWJkYWE4M2E2ZDFkYzAxMiByZWxlYXNlMjYtbWFpbnQKKzc2ODAyIGE3NGUwNGZjOTNlYjlkY2ZjZDMzMDI1OTkzMGQwY2M2ODU3YzQ1NzUgcmVsZWFzZTMxLW1haW50Cis3NjgwMyA2NTRjNjg1MzY5NzUxNDY1MjRhYmE0YzVlYWU5NWQxYjQyZGM2Y2UxIHJlbGVhc2UyNi1tYWludAorNzY4MDQgN2NjZDIyOGI4OTVjYzlmMDhkYjU1YzJlMGRjNGI5Zjc4YWI3NTBiMSBsZWdhY3ktdHJ1bmsKKzc2ODA1IDU0Zjg0NTU4YWQyYjJmNjcxMTA3NzQ2NDMxZmVkMmNmMGEwZDZkMDkgbGVnYWN5LXRydW5rCis3NjgwNiAyNGE4YTI5YzhhNGEwNDZlNjQ0ZjNmYTNmYjA2YzNhMjJjMTRkOWE1IHB5M2sKKzc2ODA3IDNhN2Q1NDA0M2FiYThlZjk4MDQ2OWRmMjkzMTQ4MWI0OWU2NmU5MWYgbGVnYWN5LXRydW5rCis3NjgwOCAxMjA2M2E3YjZhMmEyOWVkYmJkODhlNjgzMTUwMDM2OWM2YjQ4ZDFmIHB5M2sKKzc2ODA5IDM1ZGY2Nzc5ODljYjk1NTEwNGEyYjEwYmJmMTg4ZTM5Njk1YjI4ODggcmVsZWFzZTMxLW1haW50Cis3NjgxMCBmYzcwYzhkNzQzZGI3MmU2YTlkMmI4ZjQ4NWZmZTgxY2M4MDMyZGI1IHB5M2sKKzc2ODExIDYyMTA2YjZmNTU5NmM4OTNjNzZhNDg3N2M5YzRhZTRlOWEyNGI3MjggcmVsZWFzZTMxLW1haW50Cis3NjgxMiA3YzQyMTI0NGU2ZWE4ZjBkMzIzYmQwMzU1ZjRmNWQ5NTkyYWQ1ZDVhIHB5M2sKKzc2ODEzIDUzNmU0NmVkMTBhY2Y0MzYyMDA3YWYwY2YyMDhmNmYxZGJmODNjNjYgbGVnYWN5LXRydW5rCis3NjgxNCBiM2EzNjQxOTJjMGFkOTdjOGMzMDA2NDI4OGVjMDFlMzA3N2U2YWE0IHJlbGVhc2UzMS1tYWludAorNzY4MTUgYmM5MzQwOThjYWExMDFlMTgxOTk5NWUzNzFlMjU3YTMyYTczY2EyYiBweTNrCis3NjgxNiAwNTZmZmI4ZTE3YjNmNTRmMDk2MDZhM2ZmMDM3NjJhNzNjNWQyMjYxIHJlbGVhc2UyNi1tYWludAorNzY4MTcgZGQ1MzkxZDRiYjY4MGQ0Zjg0NDljODBkMmNkOWRhOTk4MDI2ZmU2MSByZWxlYXNlMzEtbWFpbnQKKzc2ODE4IDZiMjg1MjIxOTdkYjEwZTQ0ZDhjZTk2M2Q5OGUzODA4N2MxOTczMDggcmVsZWFzZTMxLW1haW50Cis3NjgxOSA5ZjM1N2M5NmYyNDZlODg0MDU0Mjc4NmRjZjBlNGZjYTBhNjVlNDFmIGxlZ2FjeS10cnVuaworNzY4MjAgNzJlZjNkYjVjNmIzN2IyODE0N2MxNjBkMDRkNTgxNGEzNzZmZGE2YSBweTNrCis3NjgyMSBlNWYyMDEzYjI5YTE5N2UxY2Y4YjNhZGYzZjEwNjllYjIzNWE1ZjI4IHJlbGVhc2UzMS1tYWludAorNzY4MjIgNmUxMzFlMDcxMzEwNWQwOWJhZDM0NGI4YzE1ZmVjYTcwOTA0NjhkYSBsZWdhY3ktdHJ1bmsKKzc2ODIzIGRhMWZjZTU0MDg4NWUxZDc1YWQ2YWNjYTQ3NTYyMjRlMjRkZDE4ZmMgcHkzaworNzY4MjQgNDBmM2I4YjgzY2M2YTNlOWNiYTVlYjRkZDM2YmI1ODI3M2U0MDY3NSBsZWdhY3ktdHJ1bmsKKzc2ODI1IDc3MDVhYzIxOGM4NzBiNTE1ZjNhNDBjYWI5NDg3OGNhNWVmM2QzOGIgcHkzaworNzY4MjYgYzBjODYxZDM4YzRmZGFlZjZiYWQ4ZWM0YTEwNDg0NTk0NTIxMWQ0MSBsZWdhY3ktdHJ1bmsKKzc2ODI3IDM1NDY3NzliMjFjNzA4M2U1Mjg0ZDQ5N2FhNWQ5OWYzYWNkZWI2YjIgcmVsZWFzZTI2LW1haW50Cis3NjgyOCA2ODI0OWVkODgwOWU4MTMzYzgzYTQ2Y2JlOTdkZGExMmFiNGE0YTcwIHB5M2sKKzc2ODI5IGJjNTVmNWQ1MGRlYzg3MGE5NDY1NzBkODIzYzY2YTAxM2M2NTk0MDMgcmVsZWFzZTMxLW1haW50Cis3NjgzMCA1MTAzZjY4Y2NhNjkwOTVlNzBjZDczNjQyYjAyZDhkNDFiNzMxZGMyIGxlZ2FjeS10cnVuaworNzY4MzEgMmI4ZjQ4NWIwZDAzOTdlMTI1MDJhM2M5MzA2MzIzNzBiYTdjZmY2NiBsZWdhY3ktdHJ1bmsKKzc2ODMyIDc2YmQ1YmRjZWNjZGZkOTY2ZWMyYjhiMGMzNjc2ZjFiMTA1YmY2MWEgcHkzaworNzY4MzMgZDJlMTQ2NTNhNDNjOTk1YzdmNjIyYzQxNTg1ZGVlZmVjODI5M2VlMiByZWxlYXNlMjYtbWFpbnQKKzc2ODM0IGQ4OTlmMjhkYmI4ZTk3YzIxMDk2MmY4MDBmOTM5NjQwNjI1YzM1OTIgcHkzaworNzY4MzUgMGVlZWE3NjU2YzIyZjAzMGVkMDFkNWYwM2NkZWE5NjIwZjI4ZDY1ZSByZWxlYXNlMzEtbWFpbnQKKzc2ODM2IDQ5YzY4YTJiMDU4NTJjNTQ5MTVjYWJjOTI3ZWE4M2M0NzRkZWEzZGYgcHkzaworNzY4MzcgYmMwYTZlNGNlMWIwYmJmMWUzOGQ2NmQzOTAyYTE1YjdiY2IyYWViYSByZWxlYXNlMjYtbWFpbnQKKzc2ODM4IDkxOWUyMTQyNzI2ZWZlMmJhMGJkMTU1NDQwNDc4ODBkMmE3YjdhMDAgcmVsZWFzZTMxLW1haW50Cis3Njg0MCBmYTRmMjNiMTgyZGU2NzkxYWJmZjg3YTU2MzQzN2IzNjYwMDI2ZTJmIGxlZ2FjeS10cnVuaworNzY4NDIgMTU5MmU4OTUxYjJiZDM1NDQ0NGI5ODgwZTIzNmM3MjA0YmRlYzhmMiByZWxlYXNlMjYtbWFpbnQKKzc2ODQzIDMyOWVmMjk0Y2MyZGI1NmQ0MmQ4MmQ4MjA5YzcxNmIyMDY2NGY3OGIgcHkzaworNzY4NDQgZTljZWJiZTlkZTVjMzFhZjkzMGMwYzFmOGNiNjhkYTYyYTRkMTk3MSByZWxlYXNlMzEtbWFpbnQKKzc2ODQ1IDk2MGU5ZTg0Y2E1OTc1NWM2YjVkZGFkMmU2OWRlMzcwMjE0Njc0YzEgcHkzaworNzY4NDYgN2MzYzAwZTc2YzI0ODhiNjZlOWRjMjE1M2RlNzQ4MTJhYTczNmQzZSByZWxlYXNlMzEtbWFpbnQKKzc2ODQ3IDY2NjQwZmM2MDdjYTA2MzU1ODhkNjA1MmY5YmNhNjUwOWNiYjcyMTIgbGVnYWN5LXRydW5rCis3Njg0OCBkODYyMDAwZjFiMDE1NTNmOTdlMjY3NmRjNjA0MzA4MzhlMGFhZjcwIHJlbGVhc2UyNi1tYWludAorNzY4NDkgMjRiNjg1MzE4NjMzYjNhM2UyOTM0ZWIxMGVkMmE4YTM4ZGEzYWI5OCBsZWdhY3ktdHJ1bmsKKzc2ODUwIGU1MGU0OWQ2MWZlYTVmMzQzOTBiMmI5OTdmODQ5YmZhY2NiMjJjOWIgcHkzaworNzY4NTEgYTliNmYyN2QxZTI5MGVjOTdjYzE1ZDU5ZTFmNTRiYzZjZWNhYzNkMSBsZWdhY3ktdHJ1bmsKKzc2ODUyIGMyZTRjZmJiMzk4Y2I4NWYxMWIzM2ZjZWY0ODVjODUzYjE4NTgxNmIgbGVnYWN5LXRydW5rCis3Njg1MyA5NDI4MjNkZGQ4MThmYzM4OTJiMTg4MGNhMzczYTBlNDM2ZmQ5MGQyIHJlbGVhc2UyNi1tYWludAorNzY4NTQgOTdhYmQ3YWFiYWRjMjhlMjg4MzRkYjYzZWY0OGUzMWZhNWFiMGEyZiByZWxlYXNlMjYtbWFpbnQKKzc2ODU1IDdlYjA1MGMwZTY1NDY3YzBkMWVmYTA5MTM5OTM4ZWRmOWIwMGFiNDkgcHkzaworNzY4NTYgMmJkMGYzOTE1OTM4NDBjNzYxYWJhYjk5Zjk2MDE5OGY3ZjRkZDI2NiBsZWdhY3ktdHJ1bmsKKzc2ODU3IDlmZTE1YzFmOTljYzliMGM5ZjJlY2FiMGYxNzIzNjBjNjk3ZDNhODggcHkzaworNzY4NTggNGZjYmUwZWE5YjMxNzgxMzg1YzU3NjU0NzQ4NzlkNWIyZjMxYTU4MyByZWxlYXNlMjYtbWFpbnQKKzc2ODU5IGJmNjljM2YyYjc3OGU0MDNjNDVlNTQ4M2FmNmI0YjlmZDU2YWU4M2YgcmVsZWFzZTMxLW1haW50Cis3Njg2MSBiMjA2YWQ4Y2Y1YmYyZTQ0NzVlNTZmMWZjODlmNzczZTZiYTQ5OTljIGxlZ2FjeS10cnVuaworNzY4NjIgMjJhMWVhOTBmYWE2MTc3Mzc2Njk5YTQ0NDYzOGRmZGM3NmIxODhjNyByZWxlYXNlMjYtbWFpbnQKKzc2ODYzIGI0NWNhMTFiOWEzZWM3NDhlYTRkYzBiNzU0ZmI1ZjkyNDA5NDRkMjEgcHkzaworNzY4NjQgNTRhNTAyZGIzYjhjZTBkOTNkY2ZhNmYzNjg5N2JjMWI0NzY3OTI4YSByZWxlYXNlMzEtbWFpbnQKKzc2ODY1IGIzNTZlZDk1NjRlNjhjMmMyMjBkOGUyMGFhN2QxYzY0YjZhNzE1MmQgbGVnYWN5LXRydW5rCis3Njg2NiAwYTFjMzljNWYxYjljOWU0MzEwMGJlMmNlYmIyNDZhYzJmMzBhMjczIHJlbGVhc2UyNi1tYWludAorNzY4NjcgYjE4OTY2MjBjMjk2ZDJiZjJjYWY4Yzc3MzRlZWE3ZmE0YmY0ZTJhNSBweTNrCis3Njg2OCBiMTNmNzE1MzlhYWMwMGE2ZGNhNGI4MWQ5YzZkYmVhMmMxN2VjM2NkIHJlbGVhc2UzMS1tYWludAorNzY4NjkgNjJhZmNmYTNmZTE4OGI3YjdhNDhmMzU4NTZjYWY2MWQ3NTVjMDg1OCBsZWdhY3ktdHJ1bmsKKzc2ODcwIGJiNjY0ZDIxOTM5YjY4OGRmYWZkNDBiNDk5NmM1NmEyYmEwYWMzNDkgdGFyZWtfc3lzY29uZmlnCis3Njg3NCBlMjZlZThkZGQyOWQxM2M3MDlhMTdiYWRlOTBjOTY5NDU4NTRkNDY4IHJlbGVhc2UyNi1tYWludAorNzY4NzUgNTFkMzdlZjQzZTFlOWRlNTgxM2M0ZjM4YjYyNGQzNTBmMGFhMGE1OSBweTNrCis3Njg3NiAwZDM5ZGFiMDU2MjJlN2IxZTMxYWNmM2I1YjcwODlmYTQ3ZGFlMGMyIHJlbGVhc2UzMS1tYWludAorNzY4NzcgMDE5NDkxYjI2YjM2Y2ZlNzAxOGJmNGQyMTNhNTIxZDkwY2NhODU4NiByZWxlYXNlMjYtbWFpbnQKKzc2ODc4IGQzNTBhZmMzMzdkYzY0YzQ3Y2ZhYzc4OTQ1ZmQ4OTI4Y2FlMjljYTYgbGVnYWN5LXRydW5rCis3Njg3OSAxZTgxNjRiNWYzNmRiYWYyYTU5ZTljMGYyYjFjYzFhZjhhYjM3MjIwIHB5M2sKKzc2ODgwIGU1ZGY5YTFkYWI2YTA4M2I1NWU2MGFiMTY4MzFjNGRiODE4ZDI0ZWIgcmVsZWFzZTI2LW1haW50Cis3Njg4MSA2NGY1ZjM3NWQwNzNlYzYyOWE4M2UzZDlhNDg4ZTRhMmRiMDJmYWY0IHJlbGVhc2UzMS1tYWludAorNzY4ODIgNzY1MjMzNDZlMjBkNzZkNWE5ZjM0NDA0Y2I3OWUzNmU3ZWIxMDg2ZCBsZWdhY3ktdHJ1bmsKKzc2ODgzIGQxMDZiYTYxMjZhMThlYzBiOTEwZGIzZmYwZTUzMDY2ZjVjNDk5YzAgbGVnYWN5LXRydW5rCis3Njg4NCA3MjM0NjBiOTBhZGQxNGFjMDA0YjQ1NTQzZWViNTIxOTEwMzdmZDYyIHB5M2sKKzc2ODg1IDBlZWM2MzNlZjBlMzIwZTI3NzkzZDhjYjQ2NGQ4M2RjNjVmMWJjOWIgcHkzaworNzY4ODYgOTYxM2VjNDFhZWFhYTA1NjYyMmZkOTVhZmIxNjFlZjc0MTllMjk3ZSBsZWdhY3ktdHJ1bmsKKzc2ODg3IGEzNDlkYmVhYmFlZTVhMmZkNjFmZDYwYWI4NjY3ZjQ0OTdkMTIzOTMgcHkzaworNzY4ODggNWIzNzU4ZWU0MzU2NmY5OTNiYjhlYjA3NGI3ZTA1ZmJjMmZjMjI2NyBweTNrCis3Njg4OSAzNjIxOGI2ODFkOWVkYjE2N2UzMTg3ZjI3YTExODRjOTExYzE4MjVjIHB5M2sKKzc2ODkwIGRkZDFkYjVkMmZlMDBlNjg5YmMxNTZmYzczYjBjZDg3OGE1MWJkYTYgcHkzaworNzY4OTEgMjYyMTMwZDcwMzA2Y2JjYmMxMjhhNDA0MjQyYmY4YTBkOWM2OTNiNiBsZWdhY3ktdHJ1bmsKKzc2ODkyIGI4Y2E2MWQ2ZTI2MjNhNWNmMDJlMDgzNWIyMTlmOTc5NzFjODM0ZjIgbGVnYWN5LXRydW5rCis3Njg5MyAyZDc1ZGE2NWQyOTBlNWRlNWQ5NDA2OWI1MDE4ZjE4ZWM3NDczZTdmIHB5M2sKKzc2ODk0IGFlZWYyZjI3ZjlmMGNmNmM5YTU0MWVlMjk3YzBiYTQyNDdlYjE3NDcgcmVsZWFzZTMxLW1haW50Cis3Njg5NSA3YmFhNTViNmU4YzkxODhkMDI4OTQzYjk4NjFmZmM4ZjJjNWI0ZDhhIHB5M2sKKzc2ODk2IDEwMTMyMDg5OTA0MTdmNGVlMGJhMGExN2VmMTJiNzA1YTM1MmIyYzcgbGVnYWN5LXRydW5rCis3Njg5NyA2ZDQ3YjI0OTQ3MTM3ZDFlMWJhMTg2OTI3ZTA0MWI3YWUzZmFiMzA1IHJlbGVhc2UyNi1tYWludAorNzY4OTggNzdlMjMxMzEzNWRkOWJhMDE4YmE2OWU2OGFiZGE5M2M2MDNiZWY2NyBsZWdhY3ktdHJ1bmsKKzc2ODk5IDliODQ3MDk4Y2JmOTMwNmYzNGNiMGJmZWYwZTkxZGViZGM2MzU0MDkgcmVsZWFzZTI2LW1haW50Cis3NjkwMCAxOGViMDA5MTRhZWU1YmFjYTk4Y2QyODQ1ZWVjYjU1ODFkODY4ODFlIHB5M2sKKzc2OTAxIDZmOWMwNzQ2ZjFlMjA1MDY4YTgzNmE5NGFiMDNiMmU1NjE5OWY1ZmIgcmVsZWFzZTMxLW1haW50Cis3NjkwMiBhMDg4NDBjZTg4ZDM0YzFmMDM3OWRmYTlhMmY4NTkxM2E5YTA4YTlkIHB5M2sKKzc2OTAzIGVkNGQ1Y2Q0N2VlOTYxMDIwN2M0YzBkNWU5MTY3MzQyMTRhYjU0NjQgcmVsZWFzZTMxLW1haW50Cis3NjkwNCBmN2Y1ZTFkMjdlMDYzMDJlNTUzMmZlMWRiYzFiOWFjMWE0OGYwNGNlIGxlZ2FjeS10cnVuaworNzY5MDUgODk5OTY3NTVjZjM5ZTcwYmM0NmU3NGM4NTM4OTYzZWI5NzBjMzNmOCByZWxlYXNlMjYtbWFpbnQKKzc2OTA2IGE0NmRkOGRhM2MzMDgyN2MxMTAxOGZlMGE2MTBkOTg2ODFiMDliZjAgcHkzaworNzY5MDcgZTIzZjVlYzkzMzE1ODU3ZDcyMjliN2JkMmQ2YjFiNDk3MDI4NjVmMiByZWxlYXNlMzEtbWFpbnQKKzc2OTA4IDEwOTcwZjY0YmEzMzFiMTg5YmQ4ZTk1NDJmOTU5MTMyM2RkMDZjZjMgbGVnYWN5LXRydW5rCis3NjkwOSA3MGNjMjg4ZjkxOWUxN2VhNjAyMzYzOWE5NTMyMmU3NDY2M2JhZDZkIHJlbGVhc2UyNi1tYWludAorNzY5MTAgNzI0YTBkYTg1YzQyY2FlNzkwODZiZDc4NDlkNmU4OWZmZDkxODAyMiBweTNrCis3NjkxMSBkYzFhYWRmOWZhNGEzYzZjZTI0NjAwZTdkZDZiZGQ2Mjc1MzliNGI5IHJlbGVhc2UzMS1tYWludAorNzY5MTIgOWM5NTc1MmVkZTEyNTNhOTMyMGZkY2RjNzdlMTRlZWQzZWFmOTU3NSBsZWdhY3ktdHJ1bmsKKzc2OTEzIDUzMWIxMWE2YTEyNTVjZGVhZjRkYTA0YjRjNmVhZGRiOTc1NWZjZDIgcHkzaworNzY5MTQgZWJlYjJlNzc2M2Y1YTNhNTgzYmU1ZTc4YjUwYjA4YzE3NWU0Y2UyMyBweTNrCis3NjkxNSBlZDEzMTJjZGI5YjIwYTk5ZjA0MzE3ZTVjMWQ5MTBmNzcxNjc5ODE5IHJlbGVhc2UzMS1tYWludAorNzY5MTYgNWNjYzVkNDA2OGMxYWVlMjYyODY2NGE0MzQ4NDc5NGUyMDRlZTQ4YiBsZWdhY3ktdHJ1bmsKKzc2OTE3IDUzZjIxZjA4YWYwZDQ0Yzc3NGQ0Y2Y4MjFjZTIxNjNlMDJlOGQzYTUgcHkzaworNzY5MTggZDUxNTBiMjkzNGZhNjBkMzc0MWJmNTM2MWNhNTI5MjA2ODcyN2ExOCByZWxlYXNlMjYtbWFpbnQKKzc2OTE5IDZmNjAwZTkyYTBmNTI3ZGE2ZTVmN2IyYTc5NzhiM2FkOGQxMmZlNDMgcmVsZWFzZTMxLW1haW50Cis3NjkyMCA4OTZiZjQ5NjI4YWJmZDNiMGZkODg1YzQ3YjgxZDYwMjk1YmZkOGNkIGxlZ2FjeS10cnVuaworNzY5MjEgY2NhMDk3ZWEyN2I5YzFkODY4M2ZlNDJiYjdhMjNiNTJkMTRlMjljOSBweTNrCis3NjkyMiBlOWRhODEyZjRmZmY0MzE0NDIyOWUxNDRmZWQ4MTlkZWU2NjU2N2JhIHB5M2sKKzc2OTIzIDIwODlkOWMxYWUxM2UxYjNiYTBkNzQ4MzZjOWZlZTkzOTVhNjk3OTcgcHkzaworNzY5MjQgOWU0YzkwMWYwMDkzY2ZmMDRjN2M2OGVkZmYzZjE1ZjUyNWRiMjFlNSBsZWdhY3ktdHJ1bmsKKzc2OTI1IGQ4OTBjOGZmYWQwMmY3YzAzZjIyODA4ZTU5OGZiMWZkYmZjNTc0NjUgbGVnYWN5LXRydW5rCis3NjkyNiBjOWE1YjNhNDYwZmY2M2ZkNzUwZTI2NGM1OTY4Y2RiNjdlZGYyYjA2IHB5M2sKKzc2OTI3IDY1MGIzMjY0MDNjZDI2YmY1ZjJlNzk1MzA4OTE5ZjA4MDhmNjZjOTkgbGVnYWN5LXRydW5rCis3NjkyOCAxZjhiMzYzMjAyMThiODQ0NTJlNDQzMDAwZDg3YTcyMjk4Y2M1OGJlIHB5M2sKKzc2OTI5IDc4NGJkYzdiMTlhYWYzYTFjY2ZlYmU5M2MyZDcwNzc1YTNjMmM2MDMgcmVsZWFzZTI2LW1haW50Cis3NjkzMCA3OTQxYTlmODY1YzIyODNjM2MzYzEyZTczMDIxMzA5MWFlY2M3ZGMxIGxlZ2FjeS10cnVuaworNzY5MzEgNmQ3NDY0ZGJiNzE0YjE0ZWE3YzJlMTNiYzI4YTU3YTM4ZGFiODBkMiBweTNrCis3NjkzMiAzOTE0OWQyMjVlYzdhMTUyM2NlMmE4NTUwMjkwYzM4MGU5ZmU1N2VlIHJlbGVhc2UyNi1tYWludAorNzY5MzMgMDIwNTRhZmEzNjJmMWIzNjRhODk1NmZkMWI1NmFiMWM1NzY2YWEwOCByZWxlYXNlMzEtbWFpbnQKKzc2OTM0IDA0NTg4ZWZmMjVhMTkwOTU4YTM1NzMxNGE4NzNhNjBiZDVjZTE0ODkgbGVnYWN5LXRydW5rCis3NjkzNSAxYzJiM2Y3OTVkMWIyM2UyMTliMDRkYTRhYzgyZjc4YjNhZGQ4YmVhIGxlZ2FjeS10cnVuaworNzY5MzYgMWRhYWMyY2VlZGJmMjVjMjZjYThkMDY3MzljMzM1ZjY4OTk1ODA0NCByZWxlYXNlMjYtbWFpbnQKKzc2OTM3IGNiMDVjY2Q3NTk5NmJjYzAxNjVlMDBlODQyMjFiMmVlOWIxZDM3ZWQgcHkzaworNzY5MzggNTgxMzM3MTQxODljYWE4NTg0M2JmZWU1NGUzMDA4NDg3Y2Q1MTdmZSByZWxlYXNlMzEtbWFpbnQKKzc2OTM5IDY2MzBlMzZhZjljMzliMDYyNGNhYzE1NGRjYTIzYTU2ZjljZTMyYmUgbGVnYWN5LXRydW5rCis3Njk0MCA1NTAwNTNiYWFmZmE3OWQ0YzQ1ZTcyNzg3YmVmNWM1ODhhNjQ4ZTE4IHJlbGVhc2UyNi1tYWludAorNzY5NDEgNGFjZTA4YWFjMzc2MzljMzY1NTA4M2YxZmUzZmZiNTRiZmM4NzI2NCBsZWdhY3ktdHJ1bmsKKzc2OTQyIGQ4NTYyMDAyZjhlNWMxYjZiY2RhNjFiYjkzODk0YjM0NDFmYjQ1NWIgcmVsZWFzZTI2LW1haW50Cis3Njk0MyA0NjU4MDk0MTZhODJmMGJmMWU5MDhiOGUwZDBmYWVjZjEzMzFlZWFhIHB5M2sKKzc2OTQ0IDRkNDMwZTU1YWQ3YzU4YWRlYTQ5ZmQzYzRmYTZmM2NhYzBiMGY4ZWEgcmVsZWFzZTMxLW1haW50Cis3Njk0NSA2YzFiMjA2NWQzNWNiM2JjZmUxY2VjZDBiMTJmN2EwN2NjOWQxOWVlIGxlZ2FjeS10cnVuaworNzY5NDYgYmYyZWZmNjBlYWUyYmFhMTc3ZDkxZTdjOGFmY2JkNDZkNWRkZGRlYSByZWxlYXNlMjYtbWFpbnQKKzc2OTQ3IDk5YzBhYjNjZDFmOTU2OTgwN2U3N2ExODIxMTczZWIxZDQyMzE1NmUgcHkzaworNzY5NDggNzk3MTdiN2QzNzlkYmZmZWJiNjc2NjhjYjk5MDIxODk5YTg3MTExMCBsZWdhY3ktdHJ1bmsKKzc2OTQ5IGIxZDcyZDg5NDYyMTdiMTEzMTgyOThkNTU0MzQwZWFkMTNkMjAwNTUgcmVsZWFzZTI2LW1haW50Cis3Njk1MCAwOGRmMWM5ZWE2NDNiNTVjY2FjNjQxMDRiYjg0YTIyM2JkYTMyM2JlIHB5M2sKKzc2OTUxIGQwMjVmNDk4NzMxOTFhMDM0MjU4YTAyNmZhOTc5ZWUwZDdjZGI2MmMgcmVsZWFzZTMxLW1haW50Cis3Njk1MiAwOTZiMWQ5OTc4NTM4YmIyYzg4NjBhNDM3YjA2N2ZmYzc4ZTJiMjExIGxlZ2FjeS10cnVuaworNzY5NTMgMTc3MjE5NTQwNWU3ZWE3NTdlNDllMGZmNTY0NjBiM2U5MjdlOGVmMyByZWxlYXNlMjYtbWFpbnQKKzc2OTU0IGVhNWU1NGJkNjI3NGMzMzQ4NjlmYzUxYTE1Y2NmZGUwNTQ4ZjJlMmQgcHkzaworNzY5NTUgODZiNWRmMDQ2MzRjMDY2ZTMzNmQxZjczZTM3M2NiMGViY2YwYjhkNyByZWxlYXNlMzEtbWFpbnQKKzc2OTU2IDNlMmI3OTY1YWRhOTk3YmVhZTQwMmFjMGY1NWRlMWI0MjNlZjk3NDAgbGVnYWN5LXRydW5rCis3Njk1NyAwZWUyYWU3NWNlOGY0OGI3OWJiYjNmNzhiOWE0NDkzMDk2ZjQ0ODBmIHJlbGVhc2UyNi1tYWludAorNzY5NTggMzlhYjFhMzZiMjA5ODY2YTI1MWQwZGVjMjgzYjhiZDFlMTk2OWQ3NSBweTNrCis3Njk1OSAwOWMxNzFmYTU5MzVhMWUwOGZkMjJjMTJhMDAxZGFiYTZkMjE1NjI4IHJlbGVhc2UzMS1tYWludAorNzY5NjMgMjhkZTgzZjE3ZDA4OWU0NTQ3ZGE2MzYxMzhlMjg1NDQ1YjZkZTZhYSBsZWdhY3ktdHJ1bmsKKzc2OTY0IGE3YzRjNzE3YTljNzg4MWFjYjMwMjUyM2UwMDAwNTkzNTA3NTQyZjIgcmVsZWFzZTI2LW1haW50Cis3Njk2NSA0OGE5OWNmODE4YzkyZGVmNjA4M2M4YWFiOThhYWI2ZGIxYzhjYzRmIHB5M2sKKzc2OTY3IDdiMmVhYTM0Yjg2YjM2NzA3OGY3ODY4NmU2MDQ1NWNhM2QxMDAwOGEgbGVnYWN5LXRydW5rCis3Njk2OCA2ZDA5ZTNmZGY4NDBjYmQ4MWI4ODk3NjhiZGRkM2YwNTMyYzE1MDUxIGxlZ2FjeS10cnVuaworNzY5NjkgNzYxM2RlZjA5OWQwYmMwYWY0MmI2Y2RiNzg4MDZjYmM5YzdiM2Q5MiByZWxlYXNlMjYtbWFpbnQKKzc2OTcwIDgwNzE5NTliYzMwNmM1MWU0NjU2NjZjMjZhMmU2NWMwOThjMDI5NDMgcHkzaworNzY5NzEgNTBmMzA0NmQ0ZmEwMDI1OGZmMjZkNWU0ZmEyMzJjODJhMzg4Y2M1ZSBweTNrCis3Njk3MiA4Yzg2Y2Q4MGFlMjYxYTBiNzliNTQyY2MyYjY2MTk2ODM4NzkxZDZkIHJlbGVhc2UzMS1tYWludAorNzY5NzMgMTNlNjJjZjAyYmMzYTEwODIyMjhjODA3ODMzZDBkNThmODk1Yjc5NyBsZWdhY3ktdHJ1bmsKKzc2OTc0IDA5YzRmMWI5NDM5YzlkZTdlNWRkOTUyOWE3YjhiNGNiMjdkNDZhYjggcmVsZWFzZTI2LW1haW50Cis3Njk3NSBkNzYxMGVjOTViY2UyOGNkZjgxN2FjMGNhOGFmZjUxODUwMTY5OTkwIHB5M2sKKzc2OTc2IDc1NTliNzBmOTg5OTM4ZDFmYjFjYzEwMWVjMDYwYzQ0YjNhMWNjYTkgcmVsZWFzZTMxLW1haW50Cis3Njk3OCA3ZjVjYmMyOGY0MzMzYzliNDNhMzY4ZWNlZmU1Y2I1NzUyNjRhNDI5IGxlZ2FjeS10cnVuaworNzY5NzkgZTczMDAxYWZjNTZmMDZkY2Y1YTY1MWVkMGFhYjFkOThhOTVmYzg3YiByZWxlYXNlMjYtbWFpbnQKKzc2OTgwIDk3NTFkZGNjMTg4MjgzYWI4MmY4NWE5NTk1NjVhYTQ2OTYzOThlNzcgcHkzaworNzY5ODEgMzdhMDU5OGQzMzJmNzUzOGIwZDNiNDY5OTM1NTE0ZjFjMDFlNjFhYiByZWxlYXNlMzEtbWFpbnQKKzc2OTgyIDJlNDg0MTkwY2ViNWExOTk0ODAzM2FiNmZmMDFmMWM2NzdmNzljMjkgbGVnYWN5LXRydW5rCis3Njk4MyAxYTI1YjQyMGVjMDBjYzRmOTZkZmNiZWFiNjExYWY2MmNiZmQ3OWM5IHB5M2sKKzc2OTg0IDYwNmE0NWRiZDEwY2U1ZTNlNWM2YzdkYTJiYTJhZDg0ZjVhMmJkOTMgbGVnYWN5LXRydW5rCis3Njk4NSAzNTI0OWU5NTYzYWFmMTkwZDMwYzU1ZmRhYTNiM2VjZTY1YjQ0YzdlIHJlbGVhc2UyNi1tYWludAorNzY5ODYgZGIxOTdiMjhlMDQ1NDQzYjVhZmM2OTg3NmUwNGYzODkzYjM2NGZiZSBweTNrCis3Njk4NyAyMGZjZWJkMGNiNWRkODZmZTU1YmFkMjkwNjIzMTRlZmNkYTNhODM5IHJlbGVhc2UzMS1tYWludAorNzY5ODggYWVkMzIxODc2NDkwOWVlM2ExZjdjNzRlNWZhMmUzZjEwOGNmNWMxNSByZWxlYXNlMjYtbWFpbnQKKzc2OTg5IDRkM2I5YjRjYWZmMDZiMzVlNWUyMGYxNzNlODZkMjY4Yzg5ZDhlYmYgbGVnYWN5LXRydW5rCis3Njk5MCA0NDJkMmI5ZDgxZTA5OGYxODE3Mzg4MDBkZTdkNGM2YTVkYjMyMzk0IGxlZ2FjeS10cnVuaworNzY5OTEgZjMxMTUwZDg0N2MzZmU0M2I0MTg2YTQ3MjY3MjEyYTY0N2QyMjllMyBsZWdhY3ktdHJ1bmsKKzc2OTkyIGJlNzg4NjYwYTkzOTMzOGY2MTAxNGYxNmM0MjIxNDExZjEzNjQ3NTkgcmVsZWFzZTI2LW1haW50Cis3Njk5MyAwN2EyODMwOGNlYmIwNjk0MTNjYmVmMGIwZDI2NmQ1Y2YxZmZhYzJjIHB5M2sKKzc2OTk0IDY1ZGUwYmVlMGZmMmVjYmFlNjVhODZhZjcyNGI2YWJhOWJiMjIzN2YgcHkzaworNzY5OTUgYjk5MjdlZWUyYTY5ZmE4MjI1YzdiOWYyN2UzMWZkMDhhNzg5YTQ3NiByZWxlYXNlMzEtbWFpbnQKKzc2OTk2IDMwYmVkYmMyOTc2MzUyMzI1NTFhYmYxODI2ODBjMWIwZDRiZWU2N2YgbGVnYWN5LXRydW5rCis3Njk5NyA2YzgxMzAxNTJlODhhMjAxZTUwNjVjY2JmZWY0OGFhOTI2NWFhNjBiIHJlbGVhc2UyNi1tYWludAorNzY5OTggY2Y3NGQ5YWY4OTVhNjk0YmYwY2ZlYzJlODg1ZDJmN2U0MDdhY2MzYiBsZWdhY3ktdHJ1bmsKKzc2OTk5IDE1MjA2OTc5MjAyMDFiMDI4OWQ4MWRmYmJiYTFjODQ4MmM0NjJiN2EgcHkzaworNzcwMDAgOWRjNTczYjZmOGY1ZmE3ZjRjN2M2YzY2ZGVlY2UzNDM0MGRkZmQzYiByZWxlYXNlMjYtbWFpbnQKKzc3MDAxIDUzZTMyMTI1OTU1NmU1YzBhNWNlOWI3ZWNmZDhiZWE2ZmZjOTFmNGEgbGVnYWN5LXRydW5rCis3NzAwMiAwNzJjM2QwZjA1MWU5YjhiYzA1NmY4Mjg0MGM4OWYyNzZhZmQxNGZkIHB5M2sKKzc3MDAzIGRmMjYxMDkzYjMxY2Y0ZGRkYzgxMDZhNWZlOGM5ZjA5NzYyYTJlN2IgcHkzaworNzcwMDQgYmQyODc0NWM2ZmU3MGQ3Mjc4ODYyZWE3ZGY4NGJiMThjYzhmOTM2NyByZWxlYXNlMzEtbWFpbnQKKzc3MDA3IGJhNzRkNTg3NzRiNzBmNmE2Yzg3NjY2NjYxMjdjZjE3OWIzMDU1OGQgbGVnYWN5LXRydW5rCis3NzAwOCAxOGE4YjJiZmM5YzJlYmM4YWI0ZDRiZDAyMTZhZTg4YTZiYjYyZjFkIHJlbGVhc2UyNi1tYWludAorNzcwMDkgNDI5YTNlMzhlNDZiZjVkNzg1NzNmN2EzYzM4ZWUzZTY2N2QwNzRlOSBweTNrCis3NzAxMiA5M2Q1Y2RmMWM0NTczZTg2YTQ5MzJkZjdjNGViYTI5ZDc2NWJmNzU2IHB5M2sKKzc3MDEzIDNhNzM2YWQ2NjFmYjY0M2MzODNhYWY3YmE1NDE4YmNlMDNkM2Q5NGMgcmVsZWFzZTI2LW1haW50Cis3NzAxNCAyNTE4NjBkYjM0OTNmMzhjYjgwN2Y5N2ZmYWZlZTBhODMxYjJlMzNhIGxlZ2FjeS10cnVuaworNzcwMTUgMjQwMDZjYTU2MmQ1YWI5NWNmZWQ1ODU3Njg0OTQ0YzJlNzY0OWE4YiByZWxlYXNlMjYtbWFpbnQKKzc3MDE2IDRhYTBkODE2ZWU1YmEwNWQzNWMzMmQxODI4N2Q5ZTNhODVjZmMxMzggcHkzaworNzcwMTcgODAyMWI5MGI1NmVkYmI3ZjQ4Y2FlNDJlMzQ2NzAzNDUyNzM0YmQzZCByZWxlYXNlMzEtbWFpbnQKKzc3MDE4IDFjNGU4OTUyMTg0N2UwMDM4MjIzOWIyYWZjOTNjMjk4ODhjZjliYTEgbGVnYWN5LXRydW5rCis3NzAxOSAxM2UyZjhhNzQ5YzQ2NDIwYTliMGEwZTU5Yzk1ODg1ZTA5NTdhNDkzIHJlbGVhc2UyNi1tYWludAorNzcwMjAgODg2Mjc1ZmZhZmQ2YjNjNjU2MzhmNmRiZTljMDZhNjc0YjI5ODUyNyBweTNrCis3NzAyMSBlNzU3ZmE3Nzk2MDFmNTA1M2U0MDJiOWJhYjMyYTU4OTYwYWYxN2FmIHJlbGVhc2UzMS1tYWludAorNzcwMjIgZGYyY2ZjZjlhMDczOGUxZWE4NDE3NTJlNTAwYTQ3OTQ5ZGI2ODFjNiBsZWdhY3ktdHJ1bmsKKzc3MDIzIDFmODZlMGU0Njk2OWZhNDIyMzEzZGM1M2ZjMTIxOGQ5OGNmNzExNWMgcmVsZWFzZTI2LW1haW50Cis3NzAyNCA1NTk0MjUzMzMxNzg3ZTEyMDQyMDlkNGNiNTQyNjMwODZlYmVkN2M5IHB5M2sKKzc3MDI1IGQxZjFhMDU5MTU0YmE5ZjEyMzA4MTRiYTdjMTdjYTNmMTI5NDRkMDUgcmVsZWFzZTMxLW1haW50Cis3NzAyNiBjYTI0ZWExYTJhZTJlZDg3MjYyNWFhYzQ0OTkzYjQ0MTg1ZDY5MTVlIGxlZ2FjeS10cnVuaworNzcwMjcgMWRmNzNiZjM4YzU1Yjg1N2RiODAyMTFiYTQxZmE4YjRlMzcxMjc0NiByZWxlYXNlMjYtbWFpbnQKKzc3MDI4IDM1ZGU1N2Y1MTU5OTU3MzQ5NGNmN2EyZDhlNzI3NWI2NmE3NmJmZDkgcHkzaworNzcwMjkgNzFlNmEwZGZhZmM4NDcxNmY0NjdlOWUzMzIxOTRjNzUzMzllOWVmZCByZWxlYXNlMzEtbWFpbnQKKzc3MDMwIDlkYTBjZjJkZmZjYzllYTU4YzUyMDE5NzE0MTA5Y2FkZTE2NmQ1OWIgbGVnYWN5LXRydW5rCis3NzAzMSBhYWViNjViYWIzYzA1MWZiNWJiOGQ0OGUzYmVlMjQzN2M5YWFjNjVkIGxlZ2FjeS10cnVuaworNzcwMzIgOTRlOTU3Y2ZkYTM4M2FmOThmOGQxODg1MmExNmNjMGY1YzBlMjBjOSBweTNrCis3NzAzMyA0NjM3MWIyOGZkZDExODUxY2U1MDE1MDE0NDA3YTUzNGY4NjJhNzkxIGxlZ2FjeS10cnVuaworNzcwMzQgYmM1ZWM1MGM1MGY5ZWFiMzMzNDU3NDAxY2Q1M2YzNmU2MTEyNDA4NyByZWxlYXNlMjYtbWFpbnQKKzc3MDM1IDNjNDEyNDQ3ZWZiMjAzMGI0NjY1ODViNjNiNDU5YzU2YjkzMmUyNDYgcHkzaworNzcwMzYgZTdkY2M3NDg1ZDBiZDgxYzU4ZjgxMDdhMDRmZDdjYzRkNDAxYTExYyByZWxlYXNlMzEtbWFpbnQKKzc3MDM3IDA4NTU4MTg4NGU2ZjYzMjJlYWNkMTRiNzVjYjkwMDZmODUzNmI5NDMgbGVnYWN5LXRydW5rCis3NzAzOCA4NzBhNDZjOGE2NzA1ZGIyOGNkOWM4ZmE2MDc1YjgyOGI3YWRjZDE0IGxlZ2FjeS10cnVuaworNzcwMzkgMGVmOTRkYTc1YmZkYTZkNzNlODgyNzc5YmMxMzVkODU1ODczY2EyZCBweTNrCis3NzA0MCA0MjdjMjE0M2UyYzliYTFmODdjOTYyMTc3NTE0NzliN2Y3ZWM0OWJkIHJlbGVhc2UyNi1tYWludAorNzcwNDEgODQyNjM0Mjc2ZDAxMWRjYjFmNDJmMGNhM2I0NjNiZjFhZjE5NWIyZCBsZWdhY3ktdHJ1bmsKKzc3MDQyIDNiODZiMjNjNThmZTQ0MGJiMGQ4OGMyN2UyNDMzNjMyOGQzODk2NTcgcmVsZWFzZTI2LW1haW50Cis3NzA0MyA3MjYzMjNmZDg3Y2E1MGM2MDg5NGU4NTc3NTJhYmYxZTZiZTEyMGU4IHB5M2sKKzc3MDQ0IDM0MzRlNmIxMWE5MjE4ZWU4ZWFlZWM3YjViYTRkNTIxNWIzNWMzY2EgcmVsZWFzZTMxLW1haW50Cis3NzA0NSA4NjM4N2I4YjlhZjhiOWQ1ZmY2M2FiMzhhMzk4ZjNlZmZkMDc1MzA5IGxlZ2FjeS10cnVuaworNzcwNDYgOTQyNGI4NGEyZWM5NTJhMzBiOTQzMDJmZThjNzdhNDkyYjQ2ZGMyMiByZWxlYXNlMjYtbWFpbnQKKzc3MDQ3IGY1NjBlMWE3NzQ0ZWZhZDYyYjk4MmI5Njk3MzVjODcxNjM5YzVmYjUgcHkzaworNzcwNDggOTYyOGViN2U5OGRmYjc4MDEwYTY3MDNhMDk0NmUwMWRkMDFiNGMxMyByZWxlYXNlMzEtbWFpbnQKKzc3MDQ5IGRiNzk2NTY3MTA5Y2I0ZWNlZmUyOTY0ODc2YjJmZjI2Yjg0OTVmN2IgcHkzaworNzcwNTAgNmNhMWI5Yjc4YzNmZDc5YmI3MWY3MWY2OTA4YTFjYTlkYTYxOWE1YiBsZWdhY3ktdHJ1bmsKKzc3MDUxIGU1YzRjOTcxMjY2MWFmM2UyZTgwNTI4MmRkZDlmNjU1YzkwMGRlYjEgcmVsZWFzZTI2LW1haW50Cis3NzA1MiA0OWRmM2NmOTE5ZjdkYmNlZmZkMjViOGMxODk4NzQyZjM4MjEzZThlIHB5M2sKKzc3MDUzIDIxMDYxMTJmNWIwNzYzOGVjYjRiOGY5ZWE1YTBjZTRkY2I1YzI4OTEgcmVsZWFzZTMxLW1haW50Cis3NzA1NyA1ZGM1ZDZjNmY2NDE3ODk4MzZjZTU5ZDRmNTNjZTdmMzYwYjFlNGYzIHB5M2sKKzc3MDU4IDY0Njc2NDk5NDEyMDA5M2QwMDZhNjJlYjUwZDlhODMwMjZiMDdhYzAgbGVnYWN5LXRydW5rCis3NzA1OSAxNTEyOWM4MGIyZmVkN2M1MDA0MjRjNjAxNDRkNWM3YTFmN2QwNjkxIHJlbGVhc2UyNi1tYWludAorNzcwNjAgNjg4MTFkZmU3MDZjZTk0ZDMxZTQxZWEwNTRjMTY5Y2RkZWU0ODgyNSBweTNrCis3NzA2MSBlMzcyYTgwNTZjOWQ1MzdkNmZkNDk0MWFmNTEwNjU0MjAxODdjMmUxIHJlbGVhc2UzMS1tYWludAorNzcwNjIgYzRlNjA5ODg4MzRkZjBmZDQzN2FlMzQyMmRhMGNhYjRhY2Q2ZmNlMCBsZWdhY3ktdHJ1bmsKKzc3MDYzIGFhYTVhYjdiOTQyYThlNDQ1M2YxMzEwZGNhZGQ5YzVlNTdiMDA2YmYgcHkzaworNzcwNjQgNTYwYjg3NjY5MTlkNWQxNWM0NDJhMTJjOTk5NzlkZmI1MWEyZjgyYSByZWxlYXNlMjYtbWFpbnQKKzc3MDY1IDIyOTA3OGU0NzAxMGM4YzhhN2JjZDA3OWM4ZDA0ZjdlOGEwMzkxNmEgcmVsZWFzZTMxLW1haW50Cis3NzA2NiBlYjBiYmFiYTAzNjFiNzQ2ZmJhOTcwZWRiNTg5OTU3MmM5YjBmN2YxIGxlZ2FjeS10cnVuaworNzcwNjcgZGQ2NzI2Yzk3OGM2NjY5OGY0ZDY5MDUzOGQ4Mjk2MmQ2NmUyYWVjYiBweTNrCis3NzA2OCA5NTcyODkwMjljMDUzNGU1ZGUyNGZjYTkyNzJjYWY4MGZjMjYyNDg4IHJlbGVhc2UyNi1tYWludAorNzcwNjkgODVlNzgxZjU5OWJjOGE5NGY1NjdiMWEzNjQwNGZjZGFkZmIyNzExYSByZWxlYXNlMzEtbWFpbnQKKzc3MDcwIDhlODJmYjA0M2FlODc4NTllOWRjYjVmZTAwYTcwMGRjODUxMWQxOTEgbGVnYWN5LXRydW5rCis3NzA3MSBhZDdlNDE0MWEzZWI4M2Y4NmM2YzU2OTA0MGRlMzUzYjE3NTQ0NGQ1IGxlZ2FjeS10cnVuaworNzcwNzIgNzMzNjViYjI2ZmQ2NTBjYzA0NjBjZjM1ZDcxZmQwYjZiMTg4ZWZjNCBweTNrCis3NzA3MyAxZTM3MTgwZWVjYWVhNDQzZjE0OGY0YjM3OTBiYjYxNGJkNWNjM2ZhIHJlbGVhc2UyNi1tYWludAorNzcwNzQgNWE5MzcxMDE3ZWRmOWExYTUwMTNmZjhhMDFkMGE5YWVmM2VkZWEwZSByZWxlYXNlMzEtbWFpbnQKKzc3MDgxIDUyNWY2N2JlZWI4OWM3ZmEyMGNhZmM5ZTg3MTg2ZWUwMDExMjY3YWEgbGVnYWN5LXRydW5rCis3NzA4MiAzMDc0MWVmNjU2MTczOGRmNzBjYmUyNzU5ODc1MGRlNDA0ZWNlMGJhIHB5M2sKKzc3MDgzIDU3NDMzYjgzM2IyYThkZjM0MTE0NWVkMGUzMjlkOTljNjNjNTFmZjEgcHkzaworNzcwODQgY2JlMWJiZTU0NGM5ZTQ2YmRhMTU3OGYzNjBiMTczMTVhY2M5NDMwNiBsZWdhY3ktdHJ1bmsKKzc3MDg1IGExMWE4ZTUzYzQ5NWNlOGJjNzcxMjM1NWRiZGY1NmQ4ZjVjYzQ2N2MgcHkzaworNzcwODYgZmUwNDU5ZGM5ODg5ZjkzNzZlNmRlMWE1MTQxMzNjOTA1MjkzOGUzMCBsZWdhY3ktdHJ1bmsKKzc3MDg3IGZmZDgwMGVmNDZlYTA1NGU5MmVmYjQ5MDZjZDI3ZjE0MzE2M2U4ZjYgcHkzaworNzcwODggY2YzOWM1ZTQ2MmY5NGJjZTU4MTViMmQ2OGIwYmFiNTNhZGY1YmFlMiBsZWdhY3ktdHJ1bmsKKzc3MDg5IGMxOTcyZWVmMzU3OTVjZTJkNGExMzEwNDIxNzNmMjg3YTExZTNlMGQgcHkzaworNzcwOTAgYzE0YTAxNGFmOTU0ZWJhY2YwNDBjNjljNjRhNzA1MWMxNjNlYmVjYSByZWxlYXNlMzEtbWFpbnQKKzc3MDkxIDVlODRhYmZkZmVhYmQ3NWE1MTVjNDY4YTE4YzNlMjE2ODgxZTFiMGMgcmVsZWFzZTI2LW1haW50Cis3NzA5MiA5YjRiNDNhOGM5MTMwNTk1NTBmY2Y4NmU1Yzg3YjhlYmQwODBkNGMyIGxlZ2FjeS10cnVuaworNzcwOTYgMzc0MTkxZTEwYTQ1YmU2ZDU2ODIzYWNhMTc2ODljZGIyZmFmYWRhMyBsZWdhY3ktdHJ1bmsKKzc3MTAyIDVjOGM0ZDJmOGI3MTIwZDFkZWE4Yjk1MWM5Y2EwZGI5MDg0YzM3NjEgbGVnYWN5LXRydW5rCis3NzEwMyBmNzY0ZTQxMjZhMjMxYmEwYjdjYzY4YjViZTQ4ZDEwNTdhZWY3ZGRmIHB5M2sKKzc3MTA0IDNiNDZmMmQzYjc1ZDAyZjM1NmMxYWZiZWNhM2ZiNWNhZmQ2N2E3ZDIgbGVnYWN5LXRydW5rCis3NzEwNSBlYzhiYjE1MTRkNjcxYTYzYmQ3YzczY2IzNWRlYmRjOTYwMGVmM2ZhIHB5M2sKKzc3MTA2IDE1ZWFjNzY1Y2MzNWQ5NGQxY2E5ODc0NjA0MjEyYjUwZTZkODVlYWQgcHkzaworNzcxMDcgMDQ5ODAyNzcxMmJmNDJjMzBkNzJiOWM2OGVkOTM1YmVkZWE1MmY3MSByZWxlYXNlMzEtbWFpbnQKKzc3MTA4IDNhZWE1N2RjMjFhOWIxZDNiODYxNDhhZjUwZGNkZWI4NzgwMWRjZTYgbGVnYWN5LXRydW5rCis3NzEwOSAzOGY1OTNhODNjZmM4NDIzZjQ4MGQ4ZDZiOWExMzZkOGRlOWZhNzcxIGxlZ2FjeS10cnVuaworNzcxMTAgOGFkMzM5OTIyMDJhZWEzYTZhMDE3ODJlMDIxMzEzNTI1OTNlMzBhMiBweTNrCis3NzExMSBhYmU1MDA4YjkzZTlhNGM3MzJlYzUzMTRkYWRkNjU4NjIzNGI0MTI3IGxlZ2FjeS10cnVuaworNzcxMTIgNjFhNzcwZjdiOTUxYjNmOTIwN2U3ZDY2Yzk4ZTRjOTAwY2JhOWUyZiByZWxlYXNlMzEtbWFpbnQKKzc3MTEzIDU3NDU2ZjE2OTQyZDk5MDBlOTQ1MzY2MDZkYTgyZGViYWRkYzU5NGIgcHkzaworNzcxMTQgNzBkNzQ3M2FmY2ZlZjY3Yjk2NjJkYTJjMWNjNTRjMWNhNDJlN2ZmMCByZWxlYXNlMjYtbWFpbnQKKzc3MTE1IDcyMzNiYzM0ZmQ0NGUyODhmYmU2ZTE1ZmRkNzM3ZjllNTI5MjFjN2YgbGVnYWN5LXRydW5rCis3NzExNiBlNDg0ZmRhNDYyYTYwYjcwMDYxMGRhYjg1OTgwYjgyNmU3YWVlYWE4IGxlZ2FjeS10cnVuaworNzcxMTcgYmQ2YjAzZmI3MWEwNjQ2NjliMGE4ZDIyZTA2ODU2ZjhiOGMzNzJmMCBweTNrCis3NzExOCAyNTllZDVjYjkzZWFjZGZjNDkxMGJhMTNhMjQxZTMyYWY1NzY2MTI2IHJlbGVhc2UyNi1tYWludAorNzcxMTkgZWFmYTA1M2FmMDU3MGRiMDdhYjc0NTVkNTlmMmFlNGRhNzc1NTNkZSByZWxlYXNlMzEtbWFpbnQKKzc3MTIwIGViZDA2MTgzOGZiMTc0NTVmOTg1ZmJjNTZkMzMwZTZlNTgxOTBmMzMgbGVnYWN5LXRydW5rCis3NzEyMSA1ZTBhOTQ3MTYwMWY2MzQ5M2JiZmRhZTk4NGJjNDc3NWViNTU4MjdmIHB5M2sKKzc3MTIyIDhjNjBhOTU1ZDAyYzBhMmQyNDk4NmI3Y2M1MjhkN2RkODVjZjU1ZGYgbGVnYWN5LXRydW5rCis3NzEyNCBlM2Y1OTE0ZDliYjNmZWE3Zjg5YzU1YzVmZDMxYTZkYTcwNThkNjZlIHB5M2sKKzc3MTI1IDIzZjQ2NzE1MTc1NmE3YzgzZTg3MzVmMTEzMTM3YWYxMmRhZjBlYTYgcmVsZWFzZTI2LW1haW50Cis3NzEyNiBjNTAyZWMyNDM0NTg4YjhiY2U4MDk5NmM1YmIxYzAyNzNlNjk5MWU5IGxlZ2FjeS10cnVuaworNzcxMjcgNzkwZThmY2Y1MTc5NWYzMmFhNThkZjllMmY1ZjkxNzY5ZDZhZWI1NSBsZWdhY3ktdHJ1bmsKKzc3MTI4IDZmZGUxMWY0ZDg0MjY2NmYzMTllYjg4NzNlZDQ1YzA3OTVlY2RlMWYgbGVnYWN5LXRydW5rCis3NzEyOSBmYjY3MWRmMGY1Y2M5NjZhODE3MzUzZWY5MzdjYWI2NTFjZTk1YjI2IHB5M2sKKzc3MTMwIGU1M2U1NTI1MmJhODRiY2UwZTliZjEzM2UwYmJlZDA2MTFkNTRkZmUgbGVnYWN5LXRydW5rCis3NzEzMSA5MmE1OGI4MDEyMjA2NzMzNDk3N2E1OTBjZjgxZDMwY2EzMWJiMDQ2IHJlbGVhc2UyNi1tYWludAorNzcxMzIgMTlmMjM1OTk0NGViNDM1ZDFiNmU1Mjc2NDU5NjI1ODViMTUwMjUzOCBweTNrCis3NzEzMyAyNDRiOTc5ZDU0NGMxMjQ4NDY0MDE4NmU5YTc0MzUwNzkxNDBlMDA1IHJlbGVhc2UyNi1tYWludAorNzcxMzQgZDRhYzNhODAwMGM3NTE4OGQwMjlkNzUxMzljN2I1MjBlN2U5NGIzYyByZWxlYXNlMzEtbWFpbnQKKzc3MTM1IGE3ZjZhNTNkYWExMmQxYjVjNjU2ZmJlMzdiOWQyNWRkYjUxOTNjZjAgcmVsZWFzZTMxLW1haW50Cis3NzEzNiA0ZjA5ODhlOGZjYjE1NmRkZWJjNDQ5ZWQ0MTFhNTMyMDk1ZTgxNzYxIGxlZ2FjeS10cnVuaworNzcxMzkgYWM1ZmQ4OTA5OTk4ZmVkOWY2MjhmNWM1Y2NhMjlhZDZjYjAzMzE3ZCBsZWdhY3ktdHJ1bmsKKzc3MTQwIDM4NTdjZDRkNWIzNTk3M2I1YjkzMzIyM2I5ZTI2YWMyZThjNDdjNTYgbGVnYWN5LXRydW5rCis3NzE0MSAyYWEwZDlmMDFkNDc1M2I1NjUwOWNmNWUwOWIwYmQ1OTZlYzczOWFkIHJlbGVhc2UyNi1tYWludAorNzcxNDIgNjI0OGI3ZmRlYzBkYmI1OWY5ZDdhNDQzNzE2NDczNzA1ZTViMDRkYSBweTNrCis3NzE0NSBhZDYwOWQwZjUxNTA5NzQyYTE0MmZlZWFhYWFlMGFlOTMzYWU1MzMyIGxlZ2FjeS10cnVuaworNzcxNDYgNzQwZGJhZTJlMzBjZmZkMDEyMDRkODNiMjQzYzdjZWI5ZmM2ZGI5NyBweTNrCis3NzE0NyAxNzRhMjhjOWZiNDA3MDI1MGYxZGUxMTRhNjkwMTlkNWFmNDYwZDkzIHJlbGVhc2UzMS1tYWludAorNzcxNDggNWFkNWExZDYxMmU1ZDE0OGM3ZWY1Njk3ZTEyNjJiNDQzYjA2MzdjMiByZWxlYXNlMjYtbWFpbnQKKzc3MTQ5IDljYjI3NWRiNGQ2ZDU4NGMxOTJlZWRjZTI2MTVhMWU1Zjg4ZDUwZjYgcHkzaworNzcxNTAgMDBmZTY4OWYyYjc4ZDU1YzUzNjIwZjkwYTVjZTJkODY4NWYzMjkyOCByZWxlYXNlMzEtbWFpbnQKKzc3MTUxIDhkOWM5MzQwYjEyZTE2YzhjMzU1NTBhYTM1Yzk0N2I4ZmUzZjIzNGEgbGVnYWN5LXRydW5rCis3NzE1MiA3MzYxZWUyZGRmZGI3YTQ0MGViNTNhYzI0YTUzYmY2MTRjODNlOTg3IGxlZ2FjeS10cnVuaworNzcxNTUgZGI2Mjk3N2M1NzEzZjkwYTdjZTdjODA5Y2MwN2RkODA3MWY1M2E0MiBsZWdhY3ktdHJ1bmsKKzc3MTU3IGFlMTljMjg3ZTljMGY4NTU2YTFlYTRhMmU3MjQxYjQxM2I1NjQ5NTUgbGVnYWN5LXRydW5rCis3NzE1OSA5NmEyMzcxYjExNGI5ZGNhY2VjMmIxMTRjYTM3NDMyNWJkMmRhN2FmIHJlbGVhc2UyNi1tYWludAorNzcxNjAgODFjZjI0ZTVjZTkyOGU5YzkwM2E5ZTYzYWI2NDNhYzI4MDU5YmE3ZiBsZWdhY3ktdHJ1bmsKKzc3MTYxIDZjMTlhNmE2OTdhNjExZDRjYTZkMTMxYjUwMmFhZTA5ZTYwZGZlMDMgcHkzaworNzcxNjIgNDZmNGI3YjViNGRkZTQ3ZWE5YjVhYmRlYjNhNjA5OTE2YTQ0MzY1YiByZWxlYXNlMzEtbWFpbnQKKzc3MTYzIDhkYzZkZmE0MWZkNTY1Y2VhYzc2MWZlZjFjMGI3ODViNWViZGQ1ZTIgcHkzaworNzcxNjQgMjUyODU4MmQ2OGY2YmY2OTY2NDJiYjVjZTdkYmNiNjU5ZjcwMGYzMiByZWxlYXNlMzEtbWFpbnQKKzc3MTY1IDM2YWVkOWUzNjQyZGM0ZDMzNjc4ZTdhZjU2ZTJkYjQxMjA2ODgzYzMgcmVsZWFzZTI2LW1haW50Cis3NzE2NyBlZmE1OTc2MzMwMTBlZmUzYzhiMzZhMDQxNWNmODkxODk4NzdhNDljIHB5M2sKKzc3MTY4IDk4MGM3OWZiZDRjNWRmNDVjYzJmMTNmYzkyYjIxNWZiZTg2NTM4OWIgcHkzaworNzcxNjkgOGZlZTJhYjUzZTcxNmFjZWM5ZmQ5NzZmODg4YTZiYmI3MGFhOTAzZSBsZWdhY3ktdHJ1bmsKKzc3MTcwIDIyOGJiYTJkMWYzZjc1MDg2ZjcxMmFkZTcxZTMwODQzZjQ3OTEyYzEgcHkzaworNzcxNzEgZTA3ODU3OTk4NGE0ZTRmYzEzODI5YTc1ZTM2MjUwYjUwY2YwMmNmZCByZWxlYXNlMzEtbWFpbnQKKzc3MTcyIGIzZDM3ZWI5NjMyMjM1NDYzMjYzMzI5ZjU0YzFkOWVhMjNlOTdlMmUgcHkzaworNzcxNzMgNGQ2ZDk1MmZlMjg4MTE4MzM0NzIwZTExOGM0Mzk0MGI0NTI2NzM2NCBweTNrCis3NzE3NCBkNTJhNzE3OWVlY2VlMmVkNWM4NmY1OWU2MDlkNGIyZDU1NjUzZDIzIHB5M2sKKzc3MTc2IDQ0M2Y3MWRkNWNmMDJhYmQ5NTE0NzM0YjUzNzIzNzc3MWUxMjU1ZTggcHkzaworNzcxNzcgYTkyZjBhMGFmZTU2NzQ5OWQ4YWMyZGUyYWJiMGVlMGExZmM0ZDVmMCByZWxlYXNlMzEtbWFpbnQKKzc3MTc4IDM4NGE3YTM3MDlkYzhmOWUwZWQ4YTY4MmZlNmQxZjI3MmUwM2VmNzggbGVnYWN5LXRydW5rCis3NzE3OSBiZjk3YWNmOGVjYjE4NzBjMWRmOGMwOWRkZjlmNmMyOThiMGQ5NTY0IHB5M2sKKzc3MTgwIDdjNjMwOTMxY2M4MzFjN2U2Yjc0NDQ5YmUwZTVkNjFiYTk0YjZlZGEgbGVnYWN5LXRydW5rCis3NzE4MSAyMzZkY2YxNzFiNzQ2ZjIyM2QyZWQwNGU0ZGQ4N2I5MTc5NjYyNTM1IGxlZ2FjeS10cnVuaworNzcxODIgMWU5MmZlNTkzOTE2ZGMwY2UzNjMzMGViMDQ1YjY5ZDViMDI1NzA0ZCByZWxlYXNlMjYtbWFpbnQKKzc3MTgzIGRiYWE0ZWVlYWViOGQyNmZhOWQxZDA2NzIzMGI1YWFmZDY4YTBkYWQgcHkzaworNzcxODQgNWFmYTE2OTE0Mjk1ZTVmN2Q2ZDQ4NWFmMTllYjkzMDg0Mzk2ZjJhMiBweTNrCis3NzE4NSAyNWFhNDNlNDMwMmJmNWRiM2MzOTJlZWFjZWI3MmUzMmFmNjkzOThjIGxlZ2FjeS10cnVuaworNzcxODYgN2Q2YmZmNzIyMTk1MGZlOGQyMmQwYmMyMmY2YTkyYWIzMzAxYjBkMSBsZWdhY3ktdHJ1bmsKKzc3MTg3IDg1NmE0NWMwYjZjNDFjNjU4ODZiNzBjNzJlMzEyNGZjOWRkMDY5NWYgbGVnYWN5LXRydW5rCis3NzE4OCA1YjQ3MTg0N2Y2ZWE2ZWM3MzdlM2JjYjkxZGYyMDBiNTAyODNkNjA3IGxlZ2FjeS10cnVuaworNzcxODkgYWI0MGI5MzZiZDFjMTQzMTc4NjQ4OTk5NzgwZGFlYWEyZWUyMzRkYiBsZWdhY3ktdHJ1bmsKKzc3MTkwIGU2MmJlMDg0NzhiY2RhYjY4NDhlYzk3YTBjMWZkNWUxYjFlNjI5MjQgcHkzaworNzcxOTEgMTY2NmVlOGRhZjliMTI0OTMwMWFmZWNmMDY4YWI1ZGQxM2NiODVjNiByZWxlYXNlMjYtbWFpbnQKKzc3MTkyIDUzMTAwZGIzNTEyODRmN2I1MGViNzZkMWQwOTM4YjUzMjgxZDZiNGUgcmVsZWFzZTMxLW1haW50Cis3NzE5MyA4NGIwMGU2YmQ2OWIyMWZlM2Y0YjRmMjIwMTYzZDhiZmQ3NDZhMWYyIGxlZ2FjeS10cnVuaworNzcxOTQgNjIxMmVkYzIyY2JkZjhjZTlhZGRiMjU0ZmU2YjczYjFmMDdlODAxMiByZWxlYXNlMjYtbWFpbnQKKzc3MTk1IGJhYmZjMDYxMjEyYzE3NDNmMzExNWFmZGEzMTc3MWFlYTFjODA5ZTggcmVsZWFzZTI2LW1haW50Cis3NzE5NiBkOGU2NGE4NDQ3M2NkZDU0YTljMTMxZDI2N2MwYmIzMjU1N2MzMTJmIHB5M2sKKzc3MTk3IDNlMjJjN2U5ZjMwN2NiMWM5M2Y1MzhkYWUxOTg1YmY2ZmMyNjg5N2IgcmVsZWFzZTMxLW1haW50Cis3NzE5OCBlNDU1M2I2MDdiNDNkZmMxN2NiMzRjMzgyNDQ2MTIwNzcwMzg5NGFmIGxlZ2FjeS10cnVuaworNzcxOTkgNDJjZmI3MjdmZjQ4NWE3OGZiNTM5MjFhYjA4ZGZjOWE0NmE5YWFlYSByZWxlYXNlMjYtbWFpbnQKKzc3MjAwIGUyMjYxYjYxZGYwNjYwNWIyYmQ1YjQ5MmZkZDUxNjZlZDEyNDE3MjEgcHkzaworNzcyMDEgNzFiYjg0MmI3OWFiMmUzMGE2MGVjNDhiYjc1NmE3M2Q2ZmQ3NDlmZiBweTNrCis3NzIwMiAyMTJhNzIyODY0YTFhZTg3NzRmNTJhOTI2ZmQ5MTFjNTZhMTgwN2FjIHJlbGVhc2UzMS1tYWludAorNzcyMDMgMGJlNDViNWNmMGQ2M2RjMzI0YmY3NTQ5YzViM2FlMTI0NmE5ODA3ZSBsZWdhY3ktdHJ1bmsKKzc3MjA0IGZjZTY2MTEyNDFkMTA5MmNhMWI3ZDZlMzM1NGE2Zjg4MDIyNWRiNjggbGVnYWN5LXRydW5rCis3NzIwNSAxZDBmZGU1OWRkZWE4ZmE0ZjFkMGI2ZmYzYTJmMDE0NmY1OGZhMGI5IHJlbGVhc2UyNi1tYWludAorNzcyMDYgNjhhNzU0YWJjZmI2OGIzYjAzMWNhNjlhZDRiOGI4ODI2NzJlYTZhYiBweTNrCis3NzIwNyBjMDI2YjkxMGE1ZTQ4NjVlZTJmMmE4Yzk1NzIwYjY0NDQ3MmU5YTE5IHB5M2sKKzc3MjA4IGZjNzVhOTk4YWRiZmVhNzQ3NTM5OTQzNzkxOTZjMmIyZjgyZTRhM2MgcmVsZWFzZTMxLW1haW50Cis3NzIwOSBhZGI5MjFmMDRiODc3NTc0MDNmYWI4YmIyOWIzMmRiYTUyYzg4ZWYzIGxlZ2FjeS10cnVuaworNzcyMTAgZmYyYWJiOTRjNjhlYmY1MmUyYTU5YmZlNzQ0M2FkM2NlMzExODNiZSB0YXJla19zeXNjb25maWcKKzc3MjExIDlhNTViMTE3M2QyMDA2YzQ2ODRiZTE5MjZlMWZmNDJkMDc4NDNmMDUgdGFyZWtfc3lzY29uZmlnCis3NzIxMiBmMDI4ODEzMzIzNDJhMWE3NmYwMzcxYjAwMTU0MWEyMjI5OWVhMDFiIGxlZ2FjeS10cnVuaworNzcyMTMgYmFhNzBkNDFjOWJkYjViZWQwZDc0ZGMwOTlkNjEwMzg3MWRmMjM5NCBsZWdhY3ktdHJ1bmsKKzc3MjE0IDk0MThmNGIwMTA0NTFmN2I0ZDFmZDAyYjVlYjAwZmI3ZjkzNDJjNzAgbGVnYWN5LXRydW5rCis3NzIxNSBjMzUwNzVmMmE4ZjMwZTVhZmRjM2JlZWY5ZWZmZDYwYWE3MWVhZGM5IGxlZ2FjeS10cnVuaworNzcyMTYgYjBkZDZjMjFkY2JmNDQ4M2IxYjA1ZWI1YWIwNGE5YTU0ZGMwM2IyMSBweTNrCis3NzIxNyA0ZmZiOTMzODkyNTY4Nzg3YWYxMzUxODY5NjZlNGRiZTNlOGQyNzY3IHJlbGVhc2UzMS1tYWludAorNzcyMTggMmRlMjRiYjMzY2M1N2M1MGNmYTY0YzA1NDIwOTdhNTNhZWUyZDcxZSBsZWdhY3ktdHJ1bmsKKzc3MjE5IDEzOTRhNDAzZGM4OWU1YjQyYWI0NDJmNjI3NjE2MWM5ZGFlZWMxODMgcmVsZWFzZTI2LW1haW50Cis3NzIyMCA3OGNhNjljZmM4OTc4YjczOTk5ZjNjMTQ0NTY0YTg5MmExNjg0NzA5IHB5M2sKKzc3MjIxIGYwOWViOTJlZDBhYjJhZjU1MWE2N2IxZWZiMjEyZjFlZjEyMzMyMTggcmVsZWFzZTMxLW1haW50Cis3NzIyMiBhYzUyOGE4YTM2Y2Y1YzUzNDJjODNjNzY5NGU2ZjNiNDQ4NDQ4ZGMzIGxlZ2FjeS10cnVuaworNzcyMjMgNzQ3YjAxYTA1MzAwNjg3NmMzOTg5YWEwMjU4NWJiMTdmODFjMzAyYSByZWxlYXNlMjYtbWFpbnQKKzc3MjI0IGE3MjhmYTQ4MWFkNDM4ODc0YWU2M2UxYTZkN2NhZWFjYjU5Y2JkNzUgcHkzaworNzcyMjYgYjVjMWNmZGM2OGI5MjlmNDQ5YTVlNWVhNjZjYjBmYzg2OTYzZThiMyBsZWdhY3ktdHJ1bmsKKzc3MjI3IDZjOGMwNDBjMTQ0M2I3NTJhMmM2NDgzYzUyY2YwOTMyYzYyODEzNDEgbGVnYWN5LXRydW5rCis3NzIyOCAxOGJkMWM2N2Y1ZTJkNGJmODExNjE1NWU2NTVlODdiN2E4ODdjMDIzIHB5M2sKKzc3MjI5IGI4ZTM4ZDBhNTJkN2UxMjc4OGIwOTJkYmIzNTk0ODQxZjhjOTJmNTYgbGVnYWN5LXRydW5rCis3NzIzMCA2ZDE3MDI1Yzg0YzE0ZTRhOGYzMWViNDNjY2FkN2UxZmMzNTA2YzA3IGxlZ2FjeS10cnVuaworNzcyMzEgZmM4N2EyZmM0N2E1OTVlYWJiNTZmNWQxMTlkNTgwMDgyNDZmYjAyMiByZWxlYXNlMjYtbWFpbnQKKzc3MjMyIGJkMjRlMWU5MGY3Y2MyNjZmZjhiMzM5ZTk1MmNmNjkyMDliODVlZTggcHkzaworNzcyMzMgYWRjOWNkYzAyZGYxMDA5Yzg4NzM0NmUyN2RhZTQ0MTU0OTRhZTE1OSByZWxlYXNlMzEtbWFpbnQKKzc3MjM0IDI3Yzk0NmZmNzZhM2E5MmM5OTA5YmE4YzM5NGY1YjI0M2M2OGQyZTIgbGVnYWN5LXRydW5rCis3NzIzNSA1OGE1YmI5NzFlOTUyYjdhNWU2OTI0ODE1NzdiOWFjZjI2ZGI1NDM2IHJlbGVhc2UyNi1tYWludAorNzcyMzYgYzJmYjA3NzQyNDQ1Y2Y4OGZmZWFkMWY0MjQ5NGE2MDY2YTEyMWU5ZCBweTNrCis3NzIzNyA0NmQ2MGU1ZmYxMDNlOTVjNDUxYTE0NDU0ZWUwOTM3YmM1YTAyZjQzIHB5M2sKKzc3MjM4IDM5MGQ2NzRlZDRjNzMyNDc4NjM4OTljMzBjZjcyODcyMWQwNGMxYzAgcmVsZWFzZTMxLW1haW50Cis3NzI0MSBkZGY2MWNkNzc1ZTAxOWQ0YmYzY2E5NzM4MTRkMmI1ZjFjNWMzYTBmIGxlZ2FjeS10cnVuaworNzcyNDIgNjI2M2E2ZmJmN2Q5MzQzZjg1Y2YyNTRlMGNlM2UyMDRjOWVmMzVjMSBsZWdhY3ktdHJ1bmsKKzc3MjQzIDJkNWFiNGQwOGM4ODUwYjRmYTdmYmQzMWE5MDhjMTYwZDEzN2FmODMgcHkzaworNzcyNDQgYTMyNjYxYjMzNGY2NzY4MzgzOWEzZWYzN2RmNjk0ODM0YTgyYWQ4YSByZWxlYXNlMjYtbWFpbnQKKzc3MjQ1IDMxMzI2NWQ0ZTAzMjgxMmVmYzc4MDNlYmI1YjM3NmE2ODFhMzdhNTkgcmVsZWFzZTMxLW1haW50Cis3NzI0NiBhMTAzNWNiNGE5MjVmYzgyMTc5ZTQ2ZDQxN2VhYmU5ZjkwZWNjNTQyIHB5M2sKKzc3MjQ3IGY1ZTQ5NmE4NDE3ZjMxNWM0YTNiZTQxOGY2NTU3YTdlOGMxNjQyYWEgbGVnYWN5LXRydW5rCis3NzI0OCBhNmFjZTMwY2I5MTIyNGE5NWEyODE4NWVlZmZlYTEzMjNkN2RmNDI4IHB5M2sKKzc3MjQ5IDRhY2Q4ZmFlYTJkOTMzYjQ5NzcwMzkxNGMyYWFiYjVkMDhmMDg1NTAgbGVnYWN5LXRydW5rCis3NzI1MCBjYzk3YTk2ZTRhMDkwODI2NzU2NzVmMjA4YjQ2ZGIwMWJjMzQ3ZDgwIHB5M2sKKzc3MjUxIDkyNjExODQxNzk3OTJhODgwMWU1NGI1ZmMyMTI4NGY4YTRkN2JlYmUgbGVnYWN5LXRydW5rCis3NzI1MiBmZjViYzJmYTM4ZDY2ZWVjOWVkZGI4MDIxZmRjYzA0Nzg4N2NkZjVkIGxlZ2FjeS10cnVuaworNzcyNTMgYmUyN2VhMmIzNjc5ZjA0YTc0YzZjMGU2YjZmN2JkNDZhNDM2YzQ0MiBweTNrCis3NzI1NCBlYjk1ZmQ5NWU2NWVkZWJiOThhYjgwYTA2Njk1MDliZGJlMjAyNTdlIGxlZ2FjeS10cnVuaworNzcyNTUgNTdiOTk2YzNkOGZmYjM4ZGM5YjJmNzkwODc4MzljY2QwNTFmOWNkZCBweTNrCis3NzI1NiBlOTgxMmI4MTZmZmRiMTc5NWMzMGZlNWIyZWE4MWE4NTQzNjZlOTllIGxlZ2FjeS10cnVuaworNzcyNTcgOTFhNTdjYzAwMjBlNGFhYzZmZjkzZDMyZDIxNjJmOWEyYjA4MjM5OCBsZWdhY3ktdHJ1bmsKKzc3MjU4IDJhMjM5OTUzNDU5MTdjYTcyNmQyZjE2MjkxYjFjNzkwYmNkMzQzNGIgcHkzaworNzcyNTkgMzg1NmM3NjRlMWY1MmMyMDRlZDgxMzU3MmUxYmZiNzgzMDU1NmRkZCBweTNrCis3NzI2MCBmZTExN2U1ZDEzYTFmY2FlZTZhMGI3ZWE4YWE2NDdiOWE1OWZhMzdmIGxlZ2FjeS10cnVuaworNzcyNjEgYWJiZGMzMWVhNzkwN2IwNTRkMDFjNjdmMDZhNTMxNmQwMzRlOGU2NyBweTNrCis3NzI2MiBmZDkxNzQ0YjFjYWFiNDlkMGZiN2I0YjAzOGQ4OGVlOTk2MzQyODU0IGxlZ2FjeS10cnVuaworNzcyNjMgNzJlM2U4NWJhYzhiMGRjMDI5YzVjNTQ1NmE2YmMyNDZhNGJhYzY2YiBsZWdhY3ktdHJ1bmsKKzc3MjY0IGExOWFkMjk5MDk1ZjI3ZGIwMmE1YWZmNDg4ZDNkZDY4YTc1MzhhMWYgbGVnYWN5LXRydW5rCis3NzI2NSBiMDM4NmZlNjUwYzc1OTYwZmQzOTY5YzA4MzZlMzZhOWU1MThmNDBhIHB5M2sKKzc3MjY2IDhjNGE3MDdjMGJkOGVlYzY5OWEwZTAyNGNiZjZkMGNkYTM0Y2Y5MWMgbGVnYWN5LXRydW5rCis3NzI2NyBjM2FkY2ZhYzA3NzIyODYyYjYyMmExZWQ5MzgxNDUyMmE5MmU1ZDM3IGxlZ2FjeS10cnVuaworNzcyNjggYTBmY2U5NjY1ZjQ0YWQ5ZjEzYmNmZjNmODE1NjNkMWIxNjk5NjNlZCByZWxlYXNlMjYtbWFpbnQKKzc3MjY5IDI0MDJmMjkxZTgwMTliYWViOWJhOTA4YTk2ZGI1MTU2NDFjNDUzMjIgcHkzaworNzcyNzAgZTU0NDM0ZDJlMmE3ZDM3ZTI0YjI0NDU3OTU3NWNiNWRmM2M4ZmIwMyByZWxlYXNlMzEtbWFpbnQKKzc3MjcxIGY2ZTM0MDAxNGY5Njk2OWRmNmZkZjU5NzM5M2ViNTU3Nzg1OGU0ODUgbGVnYWN5LXRydW5rCis3NzI3MiBlYjkyNGZhZDkyNzIwNjIwZDk0ODYyYTZjYmNlNTc1OTQ0ZTVlNGY4IHJlbGVhc2UyNi1tYWludAorNzcyNzMgMDNiZmUzMmVmODQ5Y2E4NjNkNjg0MDM4MTBkZjZkNjY0NTljOTk2MiBweTNrCis3NzI3NCAzNTFmYzQyNTBjMWIwYzdhNjU5OWQ4MjVlYWQ3ZmY2NWEyZGU0OTdkIHJlbGVhc2UzMS1tYWludAorNzcyNzUgMGY4YTU4NzkyNTYzYzMzNTRiYTFlYjM4ZGE5OTU2NTNmY2U5YTA2OCBsZWdhY3ktdHJ1bmsKKzc3Mjc2IDliOWFkYzQyYzczYTJhZWJiMTQ4Y2U0ZmNjNGFmNmY5N2NiOGZkOWIgcHkzaworNzcyNzcgOWMxZjMwNmZiMGRmYTU4NDhiNTMwMzdkYWIzZjQ0NDBkNWQ5NTZkNyByZWxlYXNlMjYtbWFpbnQKKzc3Mjc4IDc0NGUzOTFlNDJmZGYxNjAwZTVkNTA3ZjQ1NTRkYzExOTg2NWFmM2IgcmVsZWFzZTMxLW1haW50Cis3NzI3OSA1MTc0OWI2ZDYyZDNlYjJhNDAwZjhjMzM1YjY2N2RlOWY2ZjJlYjk2IGxlZ2FjeS10cnVuaworNzcyODAgOTBmMWU5MmRiNmYyMjU1OGUzZWM0YzMyOTFhMjFmOWNjNjU3Y2YyZCByZWxlYXNlMjYtbWFpbnQKKzc3MjgxIGI1NTg1MDA3MGE1NTE4ZTM3MTJhMWZjYTc5YjY4NWI3YmZmYjIzOTEgcHkzaworNzcyODIgMjM0YmVhYWZkMGM2ZGQyYTA0ZjMyNjE4ZDYzYWFiZDQxMzdkMjhhMCByZWxlYXNlMzEtbWFpbnQKKzc3MjgzIDA2Yzk2OGViNGI0MDNjMjg1NTMyNTBkMjQxMmMxZDZjNDI3MGZmZGUgcHkzaworNzcyODQgN2JjZTcyNmVjNDQwYjE2ZGMxZTk4ZTA5NTJlZjk0N2U0ODQ4YzMxMSBsZWdhY3ktdHJ1bmsKKzc3Mjg1IDM5MTE1MjRhZmMyZDZmMWZlODIyNmY0ZmZmMDIzNjVjZDM1YTYxNDcgcHkzaworNzcyODYgYzcyNjUyMTQ1YjIzNWQ3MzcyYzg4Y2NlMzBhNzNhMTM3OGI5YmMxOSBsZWdhY3ktdHJ1bmsKKzc3Mjg3IGVjYzhhNDU4OTRjOTQxZmEyYWYxYzZiNjI0YTgwNjk1M2ZhOGYzOWMgcHkzaworNzcyODggYzg1N2I1NjY5OWI1NzJkNmFiNjhiZDhkNWI0MjYwYzdkNTg4YTU0ZSBsZWdhY3ktdHJ1bmsKKzc3Mjg5IGM1ODAyYWI5ZTM0ZTcxNTRmNGNkNTBiNjc1NGJkMGE3YmYxZmNhYmYgcHkzaworNzcyOTAgZmM4MzNlZGJhNzY5OWZiYmNjZWFkOGZiODQ1NWY1NTM0ZjRjZDVlZSBsZWdhY3ktdHJ1bmsKKzc3MjkxIDJjYmRhYjI0OTg1ODk3MGQ4NDIzYjhiNzkyNDdmMWM1OTYyYjMxMWUgcHkzaworNzcyOTIgNGJjMjZhODBlNzM3ZWEzZDNkNTU2YmU5MzY2NDQ5OGZmNWI2NTY2YyBsZWdhY3ktdHJ1bmsKKzc3MjkzIGY3ZTA5YmEwY2I1NWEzZjNiOTYyMjljYmIzMTJjYjJmZTE1NWNiZjUgbGVnYWN5LXRydW5rCis3NzI5NCA2MDQ5ZmU0MDIyZmZhNDY3YzBmMDU0NjgxYTdmNjMxYWIzNWNjZTAzIHB5M2sKKzc3Mjk1IGQzOTlmNmRjOWVlNDgzOWYzZWQzNzM0ZmQ4NjAwMzZmMTMxMjdlZGIgcHkzaworNzcyOTYgMGZmMmRhYTgzZDBkN2Q1M2ViMzlkN2VlZDJjYjdiNDY1ZWRlYmI5NyBweTNrCis3NzI5NyBlZmJhYzdkM2EzNjg1MDQ0ZmI1YzJkODczOTk5NjI5ZTI3NTU5NTFmIHB5M2sKKzc3Mjk4IDBmY2VmOWQzOTU5NDAxYjE4NGFkYzJhOTEyYTIxYjZmOTY4MThjYjUgbGVnYWN5LXRydW5rCis3NzI5OSA1OWM0NzE0MTg3MTg1ZjA5MWQ4MDgxNTcwODM2NjdmNzEzYzBlY2Q1IHB5M2sKKzc3MzAwIDJmNjc2MjU4ODZmNjAwMzU1N2ViN2Y5YThkNDgxOTZlNDc5NjdiZmYgcHkzaworNzczMDEgZDU3MjkxZjVlNjY4MTFjMWIxOTk1NDA2MTJjY2ZmOTMyOTg2Njc4OCByZWxlYXNlMzEtbWFpbnQKKzc3MzAyIDhjYTM3Nzg1MzMyMWUzZWQ2YTcxNDFjYmJmNTc3M2QyZWY3YWRiZWQgbGVnYWN5LXRydW5rCis3NzMwMyA0ZmI4ZWFmMTRmMDljYjE5ZjdmNzk0NTMyNDVmYWVkY2Y4OTlhNTk2IHJlbGVhc2UyNi1tYWludAorNzczMDQgZTFmMTMxM2NlNmRhMThmNzJmOTA0MGU1ZTY5NjZmMjg1OGY0MTkwOSBweTNrCis3NzMwNSA3MGY2ZmEzMDg0ZTY3ZGQ4ODI4ODY3YzA2NjQyMTBjYmUxNDc0NDUyIHJlbGVhc2UzMS1tYWludAorNzczMDYgYWZmNWRlNWNjNDQxMGZkOGQxMmVmYWJhNjc5MTVhMjYxOTZiYTQ3MiBsZWdhY3ktdHJ1bmsKKzc3MzA3IDBmZTI1ZTA3Yjc3YjNjY2FkMWIzNzliZGJmOGQ1M2VkZDZjMTM1MzYgcmVsZWFzZTI2LW1haW50Cis3NzMwOCAzMTc1MmNhMDA3Y2YyZjNlNDBiNTNjMmYwN2NmZmMwMjExYjAxYjAwIHB5M2sKKzc3MzA5IGZhMmIyN2ZhNTQxOWU4MWY5ZmM1NGRkOGQ0MGVkY2U5ZDVmMWMyMmIgcmVsZWFzZTMxLW1haW50Cis3NzMxMCA0NDJlMTcwYjU2YzNmN2Y0OWZkYWVmMzBhMTE5YWRjOTU2YTM0MDcyIGxlZ2FjeS10cnVuaworNzczMTEgZTYyMmIyY2ZlZjEyZDZmZjE5Mzg2NWRhNGI5YmQzZmJkNGVjYmUwMiBsZWdhY3ktdHJ1bmsKKzc3MzEyIDc3NjY0N2UzZmIwN2RkMjRjNGI4Y2Y5YmQzOTNkMjkxM2ZlNDQzZjYgcHkzaworNzczMTMgYjA1NzQzY2U1ZTk0MzJmZjU2NzU5MzBhM2FlZmM3YmI5YzI2Zjk3YyBsZWdhY3ktdHJ1bmsKKzc3MzE0IDRhYWIwMjk1NGRlMWQ5ZGNkZDQyMTQxMDI2NmUyN2Y4NTNhNTRkNzcgcHkzaworNzczMTUgMjJlMGZjMjBlOTExMzNkODczY2U4NWQ4ZWFkMjZmZjM4MmMyM2IyMSByZWxlYXNlMzEtbWFpbnQKKzc3MzE2IDJjZGJhNTE2N2RmMWExNTU4ODQ1NDg2NTUyYjVkYjM3YjgxYjNiYzggcHkzaworNzczMTcgYTJkNmQzNDU0NzBlOTRhMzgwNjg1YWIwNTdjZTJhZGUxNTkwOGI3OCBsZWdhY3ktdHJ1bmsKKzc3MzE5IDNlY2VlZjM3ODA2NWE1NWE5N2Q2YjJkMjJkNWM2NzVjYjgwYTNiMTAgcmVsZWFzZTI2LW1haW50Cis3NzMyMiBmOWQyYzM0MjZlMTQ4YzUxMTVhMzMyODZmZmEzYTAxNmE1ZGY3MzNjIHB5M2stY2RlY2ltYWwKKzc3MzIzIGQ2YmEzN2UzMjc3NjM3MDY3ZGQ4MmE1OGNkNTcxZmE0MWRkNTI1ODUgcHkzay1jZGVjaW1hbAorNzczMjQgODgyYzllNzExYTJkMDU5M2Y0Y2JkNWZkM2MwOTY1MDg0MTE2Y2VmNCBsZWdhY3ktdHJ1bmsKKzc3MzI1IDg2YmY0NDBiZjliZjM1N2FjZGNiNDMwNzYzZDFkY2U3ZWY3YmQzNzAgcmVsZWFzZTI2LW1haW50Cis3NzMyNiA2MTNiOThkMGQ4OGJlMDJmN2Q1NDdlMjA4MjNkZTM4NDUyYWU4MDE0IHB5M2sKKzc3MzI3IDA3YTc0OWYwNjZhMTE3MWYzNWIzNjRlODIyZmQyOGM5M2U0NGYxMTMgcmVsZWFzZTMxLW1haW50Cis3NzMyOCBhMTkwMTcxMWIyMjViNDAzOWJjYThlZjE1OTdhZTJiZGVhODdhOTNjIHB5M2stY2RlY2ltYWwKKzc3MzI5IDMwNzA2NmYwMmFjNTJhNDIzM2Q3Yjc5OGJlNTI1MWUwMTdiZmE1OWMgcHkzay1jZGVjaW1hbAorNzczMzEgZjU2MGE4MTdiZmNiNTEyNTIwNDYyODU5NjYzNzA4ZWJhYzQ2ZjQzZCBsZWdhY3ktdHJ1bmsKKzc3MzMyIDhlODJkZDU1MjJmMDM5Yzc4Zjg2YzAxNjFkZmYzMzkzZjlmODY4NmIgbGVnYWN5LXRydW5rCis3NzMzMyBhOGZiZjI5NGQyMmU1YzVmZDk4NGY1ZDFjYzY4MjNhNmM0YmQ2MDk2IGxlZ2FjeS10cnVuaworNzczMzQgOTllN2MxYjhiMWUxZWUxOTgzOTdiMjNlNGNjMDExNjIyMzcxNjZlMyByZWxlYXNlMjYtbWFpbnQKKzc3MzM1IGIzYmI4YjNlNWU0ZWJhNWU2OGFhMjI5Y2Y5ZTM1ZDIzZWE3NmFjNDIgcmVsZWFzZTMxLW1haW50Cis3NzMzNiAwZmE5ZWU0ZWFiODg3NDNmNTgwMjBlMzkyNjY4Mjk0ZDRjZTNhODBjIHJlbGVhc2UyNi1tYWludAorNzczMzcgNmFkNTNmNjcwNTZhODQyMDc0N2JjMWE5YTJmOWQyZDFjOWM0NTk3NSBsZWdhY3ktdHJ1bmsKKzc3MzM4IDI1YzFlNTdjYTFiM2UxODk3ZDhmYzNhMmZiNzg2YzdmY2JhOTRiYzkgbGVnYWN5LXRydW5rCis3NzMzOSA2MTQ0Y2Q0ZDQyMWJhMzI2ZGNhYWE4NGZhNmNiMjVjMTRjNWFjZjI5IGxlZ2FjeS10cnVuaworNzczNDAgYzYxODEzN2YzZmQzYjdkNDk1YjE5ZDk5ZjE0MjExYzJiN2RlOGQ5NSByZWxlYXNlMjYtbWFpbnQKKzc3MzQxIDdiMTI1NDU3MzY1NjRiYzk5NzA3NTYzODI5YWMwNWJmOGEwODljZjEgcHkzaworNzczNDIgODcxNjEwNjllZWYyM2ZjZWUyN2E1YWUzYzRmNjcxODBkZTE3MTRjNyBweTNrLWNkZWNpbWFsCis3NzM0NCAzMTViNThjYjEzYTYzN2M5ZGY1MTBhNjdhNGI5Y2Y3YTk2MzJkYWEzIHB5M2stY2RlY2ltYWwKKzc3MzQ1IGQ4OGUzZjU5OGFhNDEyY2YzYzNkN2I3NzgzNTBkYjhhNzJkZDA5ZjYgcHkzay1jZGVjaW1hbAorNzczNDYgZGU3M2I4NThkZTExZDIxMzljYzRmNjRmZGRjYTQ4NmFkMjE2ZmJiNCBweTNrLWNkZWNpbWFsCis3NzM0NyBmZTVlYzk4ZGU5ZGExZTczMDlkZjU0MDdiNzEyMDJkNWIxZjk4MDZkIHB5M2stY2RlY2ltYWwKKzc3MzQ4IGI4MjY5NDEwNzE1MWMyOGE1ZTFjYzQwNmQ4MTcwZTA4NDg4NWJjYzUgcHkzay1jZGVjaW1hbAorNzczNDkgMjI0NTg4NGM4NmU2MTU3MWJkMjdkYjcwODNjMGY1OGM5ODYyMDk5ZCBweTNrLWNkZWNpbWFsCis3NzM1MCBlMTNkMDcyNDNjNzNhMGM4MmMwOGFkYjAxZDRkODZmOTY1YTU5OTg0IHB5M2stY2RlY2ltYWwKKzc3MzUxIDc0MGE3ODdkYzU5YTBiMjNmNGNjZDZmNmZjYjYxZWM2YzlmNzFiZDMgcHkzay1jZGVjaW1hbAorNzczNTIgMTU5MDRkNWI5OGRiNDc2MDBhNWI4OTkzZGVmYTk3ZDAxYWYyNDE1MiBsZWdhY3ktdHJ1bmsKKzc3MzUzIDIyYTMyOTJjZjY3MjJjN2QwZWRmNDRlYWZkNWFiODM0ZjJlMzY2MTAgbGVnYWN5LXRydW5rCis3NzM1NCBlMGI3ZTgxYWNmNmYzMzI1Yzk3MTk2ODkyYjk0Njk3MDhiNjU4Mjk5IGxlZ2FjeS10cnVuaworNzczNTUgODkwM2VhNmE5ZTY0NzkxNTY3NDU1YTRmYWFhZjRlYWIzMGM5MWUyZiBweTNrCis3NzM1NiBkMzk0MjBhMjdlNjQ2MDhjNjA3NzY5NWYxNDJiMWQ2YTJkYTA1ZGE5IHJlbGVhc2UzMS1tYWludAorNzczNTcgYWZlNmRkZTgwYWJiMzlkNjE4NjRiYWEwNzRmNTA4NWNkMjA0YzdhMyByZWxlYXNlMjYtbWFpbnQKKzc3MzU4IDUxOGFjYjEyZjM1N2ViYTAwZGRhYzFlODlhNjFjZjg0Y2VmZWY3OTUgcHkzay1jZGVjaW1hbAorNzczNTkgYTY0Y2ZlZjFkYTA3NTM3ZjM2NzE0ZmUzMWQwZGZiNDIxMTE1YThlNCBsZWdhY3ktdHJ1bmsKKzc3MzYwIGYyMWYyYzkzMzI5ZWIwODc4ODhkNThlZmViZjRjOWQ2MmI5Y2JmYTcgbGVnYWN5LXRydW5rCis3NzM2MiAxMGI2Njc4ZjVjMDRiM2I2MDViNTQ4ZmViYmY2OGFhNjY3ZGNmYTQxIGxlZ2FjeS10cnVuaworNzczNjMgMzVmZTIwNjlhYjFkOWVhODRmZGE4YzdkNTIwNTNiZjZkNzkzNmFmYSBweTNrCis3NzM2NCA1OWUxYjAzMDZjMGU4NmI0Y2RmNGM3ODU5NGViYTIwYTViNTk4NzM0IHJlbGVhc2UyNi1tYWludAorNzczNjUgODRjYWFjNzFkNzliZDNlOWVlN2U3NGU1Y2NiYjhhM2M4ZDUxMmRiMiBweTNrCis3NzM2NiBiMGVkMzVjOTlkYzZkOWEwM2YyZDFiMjM5M2MwMmUxNzFlMGUyNjE3IHJlbGVhc2UzMS1tYWludAorNzczNjcgN2E2NzUxNWJmOGUzMDhiNjg0ZjA4YmVmODA3NTU2YzM5NzcxMzUzZSByZWxlYXNlMjYtbWFpbnQKKzc3MzY4IDdjYWY1NGNlNTI5ZTdkMjFiM2NjNGY0ZWIwMTJmZDQ5YmZmMzM2Y2YgbGVnYWN5LXRydW5rCis3NzM2OSAwZGQxYWEzMzI2NWYzOGMyNDY2ZGM3NWY5YjIwNzFhMmZkZmI3ZDU2IGxlZ2FjeS10cnVuaworNzczNzAgOWU4ZDc3NTBlNDcwYjhlMDI5N2E4MDk2Yzc3ZTUxMWZhZWU0OTFjOCBsZWdhY3ktdHJ1bmsKKzc3MzcxIGJiNzI3MDMwMDA0N2Y0NDM4NjUxOGVjM2E1YzE2M2I2ZWIwM2RkZTAgbGVnYWN5LXRydW5rCis3NzM3MiAwYzdlYWQwMzRhMDNhOTJlZDVkNWQ3NzliMjY4ZjUzMmQ0ZmY5ZWUyIHJlbGVhc2UyNi1tYWludAorNzczNzMgZGEzZmQ3YTc3OWFjZDI3ODA3ZGZiNDk0YzVlY2YyZjgyOGE0NjhlZiBweTNrCis3NzM3NCBmM2ZlNTc5ZThmMTQ3YWYxNTkzYjI5NjA0MzEzYTBmYWEyMTE4YjdjIGxlZ2FjeS10cnVuaworNzczNzUgZjVjZWJmMTFkNWUwODk1MTgyODA3ZjhkODA5N2I4ZWNkNTI5MzllMCBweTNrCis3NzM3NiBhYzQ5MzFhYjAzNjllNjNkZGUwYmZmZWQyZTE1ZWQ3MzAxYzQ3NzkyIHJlbGVhc2UyNi1tYWludAorNzczNzcgNjE1MDI3MTBmY2U5ZjM2OTM0ZTk3MTAxN2M1Y2EwMzUzZTE5MGI5ZiBsZWdhY3ktdHJ1bmsKKzc3Mzc4IDFiZGExZjZiODVkNGFlMGFjOTc5ZDRiMDcwOWU1M2RjZmVjNjIyZGMgcmVsZWFzZTI2LW1haW50Cis3NzM3OSBkODQ2ODIwOGU4ODI0NjA5ZTRkNDg4MGQ2MzZhMWFjYTY0MTU4MjI0IHJlbGVhc2UyNi1tYWludAorNzczODAgYTFmYjU3NTUzMWIxMDM0Yjg4NjUyMjVlODgzYjExMjc4Nzg1NDU4YSBweTNrCis3NzM4MSBiNzc0OTVjNzdhZTQwN2EyZTE0NGU2MjljMzlmNTU0ZGQ0MTM1ODZiIHJlbGVhc2UzMS1tYWludAorNzczODIgYWVlNWExZjMyYjAwYmY2MDFmNWM2MmJlNmNhNjRlN2I3YzViNGQ4OCBsZWdhY3ktdHJ1bmsKKzc3MzgzIDQ0MWJmY2Q1NWYyZDliN2EzNGI5ZGI3N2Q1NWUzMzY5NGViNzVkMDEgcHkzaworNzczODQgYWRjODVlYmM3MjcxY2MyMmUyNGU4MTY3ODJiYjJiOGQ3ZmEzYTZiMyBsZWdhY3ktdHJ1bmsKKzc3Mzg1IGIzODZlNTNkZjkwNjkyYzZhMjZhOWUzYjU3MGM0MmNlZmE5ZWYxMzEgbGVnYWN5LXRydW5rCis3NzM4NiBlNTdjZmM1MjY2NTZmNjZkM2ZjM2VhMGJhN2M5MjI3NmM0ZGY5YmM1IGxlZ2FjeS10cnVuaworNzczODcgNWFiMmJjMmY2ZGI4MTVlZTUxNDRmODg4ODRkZjlmNDA1ZDVhMWFiMiBweTNrCis3NzM4OCBhZjFlZDE5NzE3ZWYzOWM5MzIyNzBiMmZiZDQ4MzQwZDA0MjU2YjQ1IHB5M2sKKzc3Mzg5IDg5YTlkZDhjNjI4ZDRjMDU0MWMxOTg4MWIwNWQyMzY0Mjg0ZTZhMzMgcHkzaworNzczOTAgYWFkZmMzMWIzZjE0MWYzODlmZWU0YzVlZmFjZTM1ZWYwYTc0OTBmMiByZWxlYXNlMzEtbWFpbnQKKzc3MzkxIDQ2NzVmMTFmYjEyNWQ2OWU5MGJiZjhiNDE0ODU2NjM3NjJmYjM1YjggbGVnYWN5LXRydW5rCis3NzM5MiBiNDA3ZThiZWNhNGE0N2U0MGJhNGFhNmZhNDIwMWJkMmRmZDZkY2Q5IHJlbGVhc2UyNi1tYWludAorNzczOTMgZjJkNTQwOTZkYzhjMjgzOTM5MDgxYzZhYTgwZGRlNmZiNGY4ZDgzYiBweTNrCis3NzM5NCBmOWMwYzQxMWY4MGNjZDE2NjI4YmU0MGQxNzljYzllOTY1NTUyODU2IHB5M2sKKzc3Mzk1IGFiODhkYWE0ZDJjZTJjMWYzZGQ2NGZkMGM0MDk3ZWNlZjAxY2E3MzYgcHkzaworNzczOTYgYTdhYjFhYmRlYjkyMGE1NGM3Mzk5OGM3NzZkODFkOWVmMmU2MjZkYSBweTNrCis3NzM5NyBjMWJlYzJkYjFmY2Q3MzVlNzAyYWZjZDNmNTVmYmYwYjBlZjc5ZTFjIHJlbGVhc2UzMS1tYWludAorNzczOTggN2UyYWY0ZTU3MDM5ZmJiNjcxYjRiNmY5NzE0MjBiYmMxM2M0ZmI0NCBweTNrCis3NzM5OSA2N2Y3YTBlOWUyMzMyNDM5YzcwMzJhYzRmOWY0NzVkNjhlZTYyY2YzIHB5M2sKKzc3NDAwIGMyZmRmMjUzMjlmZjMwY2Y4ZDY4YzBjMGU3Y2Y0NzlkN2IyMDM3NDUgbGVnYWN5LXRydW5rCis3NzQwMSAyY2ZmM2JjZTQwOTY3MjgzNzhiMDFhNzczODkyNGQ5NmQzZmVhNTYwIGxlZ2FjeS10cnVuaworNzc0MDIgMWYxNzc4MThmMWQwYTczNGZjNjE0MjJjM2JmMjI4OWEyNDg2NjUxMyBsZWdhY3ktdHJ1bmsKKzc3NDAzIDc1NTBiNGI5MDVjNzA3Y2ZkYmY0N2ZiNjVkNTMwODZhN2QwNDg5MmEgbGVnYWN5LXRydW5rCis3NzQwNCAzZmE2NzA3ZGY5OGNjMDRjOTI0NjJmOTI5NjIzNTQxNDdjZDVmODRmIHJlbGVhc2UyNi1tYWludAorNzc0MDUgNzhjM2ViNWMwNWZiMjg2MzM1NWI5ODAxNTM5NWZiNjY5NDFiZjA2YiBweTNrCis3NzQwNiBlN2ZhMzk1OTkzNTU0MWE5Y2IxYzUyZTJiYmZhZWIzMTkxZjRmYmJiIHJlbGVhc2UzMS1tYWludAorNzc0MDcgMzM5OGE4Yjc0MzNkMDYyNmU3NjBmOWZlYThhMWFiNzdjMDdhYzQwMyBweTNrCis3NzQwOCA0MDVjOWI2MzllMDU1MTc4Mzk3ZjRhMmM2NjRjZGI1Nzc3ZGIzZWQxIHB5M2sKKzc3NDA5IGZiZjQ5ODdlNTE0YTI3MjgzZjE5MmNmNzU2NTQ5ZDYwYzQ3YWQ5NzMgcmVsZWFzZTMxLW1haW50Cis3NzQxMCAzZTE3MTIyMjFmYTY4NjdmNWRiZTMxMzEzMGQ4ZWI0YzA5MTE0ZWVlIGxlZ2FjeS10cnVuaworNzc0MTEgYTY2NjY3NzA0YWIwZTZlODFmYzY5Yzk0YjAyNGIyY2E4OGUxMGIyYSBsZWdhY3ktdHJ1bmsKKzc3NDEyIDk3YTQwNDE3OWU1OWQ0OGU4MGQxMmI5MTFmOTYzNjdhYmRjZjk3MmEgbGVnYWN5LXRydW5rCis3NzQxMyAyNTQyNTU3YTEyYmQ3MGNkMjdjZWJmMjY0MmVkODAwMmI1MmQ1YTM2IHJlbGVhc2UyNi1tYWludAorNzc0MTQgNzFmMjQ5MWQ4ZjJmNGE1N2E4MzA1MTZiZmNjNGFhZTgyNzcxZTE4ZiBweTNrCis3NzQxNSA2OGZhOTUzYjVlNzZiMTQxZmQ3NTc1ZmYyZmEzZTVkNWJiZTJmMGVkIHJlbGVhc2UzMS1tYWludAorNzc0MTYgY2MzMmQ1N2UwNmIwNDE3NjFiYWJjNTljOTIwYWVlMzM2Nzk2NTliOSByZWxlYXNlMjYtbWFpbnQKKzc3NDE3IGYwMDEwOWUxNmVhYjkwODMwMGZlOGZlOTAzZjIwYzlkNDM4ZmQzYzYgcHkzaworNzc0MTggZGQzMWIxYzAzM2IyYjBhYWIwMjcwZWE5Y2Y0ZTkxZDg2NWY3OWNjNSByZWxlYXNlMzEtbWFpbnQKKzc3NDIwIGRjZTc0YTg3MzBmNTdjZWJjMDczZTQ0NWFiZGUyMjNlYzBiN2NjYjcgbGVnYWN5LXRydW5rCis3NzQyMSAzM2U0MDI5MDljZjI5YmEwZWYzZDE4MzE1OTM5N2JlYTE2ZDNmOTBhIGxlZ2FjeS10cnVuaworNzc0MjIgZWRmZWQwZTMyY2VkZjNiODRjNmU5OTkwNTI0ODZhNzUwYTNmNWJlZSBsZWdhY3ktdHJ1bmsKKzc3NDIzIDhhNWFjOWZmNTA1N2YwZTY2ZjY1Njg1YzRlZTUzNjI3NWRiOTUxYzMgbGVnYWN5LXRydW5rCis3NzQyNCAyZjkzNmI3ODMxYjY3Y2ZlN2NmZDcwNDg4NWMzY2Q1ZjNiNTM5Mjk1IGxlZ2FjeS10cnVuaworNzc0MjUgOGEzMjA2OTRlNTNiNWZjNzk1NjY1ZTYzMjYwYzJjMTA3Y2NmZmYyOCByZWxlYXNlMjYtbWFpbnQKKzc3NDI2IDA1ZmI3MWYwMjUzZDhkYTIyYTUzZGI0YmY5MDcwNmY3MmYwMjdiMTYgbGVnYWN5LXRydW5rCis3NzQyNyA4ZjVjZDNlYjdjNzM0Y2Y2NmVmYzVlNmY4MGUwZTQ2ODY3MGQ3ZTkzIHB5M2sKKzc3NDI4IGQ5ODA1YTk2MzUxYzA2MDFhYWRmMDMzOGUwMDI2OTUwYjQyZWVkMTkgbGVnYWN5LXRydW5rCis3NzQyOSBiNGNlMGM4YjBiY2ZmZTg5ZTRlMjI4MzczY2NjMzY2MTk0YWZjZTRiIHB5M2sKKzc3NDMwIDljODUyYTMxZTg3Y2UwMWY2ZmMwMmE5ZTBjYTVlODY3ZmUzY2MyYzUgcmVsZWFzZTMxLW1haW50Cis3NzQzMSAzZWVjMmU5ZDY0OTNmNTVhMGQyZjkyMmFkMzY3ZTIyOTE2ZDg2MTYxIGxlZ2FjeS10cnVuaworNzc0MzIgMjM1YzgyNjQzNDc0Yzg5NzMwMGQzNDg1ODBhZTNmMjQ5OTkwZmFjNSByZWxlYXNlMjYtbWFpbnQKKzc3NDMzIDMyZWFiNDQzYTk2YjEzNTFkMGY0YjE5YjUyN2E2MmFkNjBlMjU3MmQgcHkzaworNzc0MzQgM2ViMjlhYzdiMjBhNjRjOTFjYzc0NTI3ZTAzOWJkYWU1YWNmODk0ZiByZWxlYXNlMzEtbWFpbnQKKzc3NDM2IGYyMzU4ZDMzZjEwOWRkZGQ1ZGY4MzM5OTJhZTIzMGVjMWYyNTI2MWIgcmVsZWFzZTI2LW1haW50Cis3NzQzNyBlZmE1ODY3ZDhhMTRkMTljYjkzZDdmMzU0MTY5YzM3Y2ZjMWU4ZGU0IHB5M2sKKzc3NDM4IGUzMGZjYjk1NmI1ZmNmMjJiMWRiNjBjZGZmY2M3MTY3MGU5MmUyYWUgbGVnYWN5LXRydW5rCis3NzQzOSA0MWNlYTY2YTI0MjZhNTQ2MGUxNTFlMjEwNzU5ZWQwNjc0Y2FlMzBjIHJlbGVhc2UyNi1tYWludAorNzc0NDAgOWY5MGRiMjc2MGQ5YjgxZWJhMTdjMjIzOGI4NjYzZjI3Y2RiNmQ5MSBweTNrCis3NzQ0MSBkMDhkODZlYWQzNzVhMjJkYmI4MzAyMDExNmIwZDBkMDRmY2FjZGI2IHB5M2sKKzc3NDQyIDhmZDEyZWE2M2M2YWM2ZTJkNWQ2Mzk3NDAxYThjZTNhNzc4NDVkNzggbGVnYWN5LXRydW5rCis3NzQ0MyAyZjU0ZjdlOWMyYjE5YjYyYjU5NTQ0YzQ0MTRlN2JhOWZmMjk4NmZjIHJlbGVhc2UyNi1tYWludAorNzc0NDQgN2NlMjI1OGRlZThhNTg5YzY0NjI4YzY2YTAyMTUyNzE2NTUwZmRjYyBweTNrCis3NzQ0NSA3ZDdiNTc2NWI0NmY3YzRlMTIyMTI2MGQwZGY0OTk0MTZkMzU0YjhhIGxlZ2FjeS10cnVuaworNzc0NDYgMWNjYThkOGY5ZWU1MGU2YmM2NjZiZjZhNDAwNzNkZWU1YmVmZjYxZiByZWxlYXNlMjYtbWFpbnQKKzc3NDQ3IGM1ZGJlZmJjOTMyMTJjYjc1ZTJlODlhYTQ4MDE1ZjMxZjZhNDFiZTEgcHkzaworNzc0NDggMjNmMjFmNDgyMjk0ODU1ZWFiOWFiZDdjNmYwYWUxMTUzM2FjYWQ3NyBsZWdhY3ktdHJ1bmsKKzc3NDQ5IGI3NjQ5NzMzYTM1NDVlNDFhYzgxYmZkNzQwMmQ1MzQ2ZDZkMjU4YTggcHkzaworNzc0NTAgMmE5ZjY2ZGY0ZGM0Njc5MzYzZjVkMzM1OWEzNTk1ZmFiODA3ZWYxNCBsZWdhY3ktdHJ1bmsKKzc3NDUxIGI0ZjMwMWNlYTExNTZhNGNiZjllOGM2MDY4ZTExMjFiMzdiNTQ5MjggbGVnYWN5LXRydW5rCis3NzQ1MiBjMzJkM2IwOGZjZGMxNTU5ODc2YjZiYmIzMDA0MzM2NzY2NTA4MzljIHB5M2sKKzc3NDUzIGJlMzJmNjExMTgzYjkwM2Y0NjUzN2Q2NTQxMmRhOTE0ZTljZDU0YmYgcmVsZWFzZTMxLW1haW50Cis3NzQ1NCBmNWZkMDFiYTQ3YmUwYjdlODgyMjk0NTQ0MmQxNmJkYzI2NzI4NTVjIHJlbGVhc2UyNi1tYWludAorNzc0NTUgYjgwZDI5NjI5NzhjOGNmMTlkMmU1YmQ2YzU5ZmViMGYzZWRhYjViYSBsZWdhY3ktdHJ1bmsKKzc3NDU2IDJhOWNmZTJjZTU5YjQwYmM5OTk3NjNjMGY1ZmJlMGU5NWZhNGFlMjEgcmVsZWFzZTI2LW1haW50Cis3NzQ1NyA2NjJkZmZjMWIzNGQzZjYwZDVmNjE2MDc5N2RlZTA1NDNjMTg0ODhlIHB5M2sKKzc3NDU4IDdiNWY1YWY0ZjVhY2IyZGVmY2E4ZWUzNzEwNzZiODVmM2ZlYjA1MDAgcmVsZWFzZTMxLW1haW50Cis3NzQ1OSBhNmJmNjhlNmU4MjRjNzkwMTg2YTI4NjQ1YjU3NGE0M2YwMGM0OGJmIHB5M2sKKzc3NDYwIDNjMGE0MzNiMjZlMWZjYTFmNDg1ZDYwNjlhNGE3NDA2NGM4NTA2ZGUgcmVsZWFzZTMxLW1haW50Cis3NzQ2MSA2NmYxZDRhNGM3OTk0ZjkzYjJiNDEyYjU3Nzk3YmQ1MDg3OTljYWExIGxlZ2FjeS10cnVuaworNzc0NjIgNWNhMTk0OGE4ZmQ2OTMyMjJlNDc1ZDBiZTlkYmI0NTk2NGVlOWYzZSBweTNrCis3NzQ2MyBkNTEzNTg2NDVlNjA2Mzc1OTkzMTYxODAxNGYwMzZmZjNjZDFmY2U2IGxlZ2FjeS10cnVuaworNzc0NjQgODUzN2MzNzM2ZTk5Njc3ZWM1YjI0NzVmZjIxOTVlMmFkMmU0MjQ0ZCBweTNrCis3NzQ2NSBkMWZkMGEzNGJiMzY4MjkwMDA1ZmU2NTYzNGU1Yzg5N2JmMmNiNjZlIHB5M2sKKzc3NDY2IGJhZDFhZTNmZDA2MDczYTI5ZmQyYzRmY2VjNzg5NWVlODJkZmE2MzYgbGVnYWN5LXRydW5rCis3NzQ2NyAzMTI1MGMzNDgzM2E0NDIyZmFhN2EwNzkyZjk0YmEyYzM3MTgyNmEyIGxlZ2FjeS10cnVuaworNzc0NjggMTViMDY2OGYwZGM1OTdmZTY0ZDFhMmU0YTkwMjc0MTk5OTAwYzVhMSBweTNrCis3NzQ2OSA2MjJmNzliYmE1MjMxYTgzYzZlOGMwYmY4OTAwODRiM2QyMWJiZjgxIGxlZ2FjeS10cnVuaworNzc0NzAgOTIyNWVhNjc3YzRiMjcxMzc5MDAxYzQ5N2MwMTc5MjcxNTA2ZDNiZSBsZWdhY3ktdHJ1bmsKKzc3NDcxIGU1ZTU1ZmZlOWY3MzhiMDhkM2U4MTk2YjIyZjRjZmVhYjI1YmExZjkgcHkzaworNzc0NzIgYjIxZWZjMGNmZThiYmU1NTIwOTc4MjgwNzQ4M2E1Mjg3ODE5NGIwNyBsZWdhY3ktdHJ1bmsKKzc3NDczIDhlMjdkM2I4ZDJlYzQ1OTY4ZjBhZDZjMDdiNmNhMzQ1N2RhMmQxN2MgbGVnYWN5LXRydW5rCis3NzQ3NCBhYjkwNWY3NGJmMTE3YTFhNjhkMDdlODViNjIwMGI3YmFhMTA1NDE3IHB5M2sKKzc3NDc1IGM1YjZhNWI4M2FiNWRjNjcyNzA3M2YxYTIwODY3ODBiZTQ0Y2JlOTYgbGVnYWN5LXRydW5rCis3NzQ3NiA5ZmM3ZjI5N2QxMzJiOWE1YTEyOTMxZTFhYjc1MTFmMmMxZTQ2OWZjIHB5M2sKKzc3NDc3IDU3MTAyMjgzYWI1ZWNmNTUzMzlkMGY4YTkyNjhkZmNiNjgwNWNkZjcgbGVnYWN5LXRydW5rCis3NzQ3OCBjNWEwYTVkNmFjYjA3YmE5YzIzODYwNGIyMzhhY2FjOGYzNWU0MGYwIGxlZ2FjeS10cnVuaworNzc0NzkgNGY0ZjAwMWM4MWY1NTllMzRmYWVjZDAxOTU3YzljYjg4YjJkYmQwMiBweTNrCis3NzQ4MCA0NzhhYmM3YmNhYWFkY2EzMzYzMzM2ZjM4ZjJiZjY4MDc0OGI1OWQ0IHJlbGVhc2UzMS1tYWludAorNzc0ODEgMGY5NzRiYjIzOGVkYWEzZjFjMmQxZWJmZmM0ZGU0MDVhNGJkZmNhZCBsZWdhY3ktdHJ1bmsKKzc3NDgyIGM3ZjMzZDUyMTZmOWM0MGMyMmEwMTk3Y2RkODg5OTVkMDg3NTIyODYgbGVnYWN5LXRydW5rCis3NzQ4MyBiMzlhMDIxOWY3MjdlOTNiNGQ2OTFjMTcyODNkZTI1ZmJkNGM0YTdlIGxlZ2FjeS10cnVuaworNzc0ODQgMTAzMDY3ODBlNWMwY2Y1ZGRmNzM0NWNmY2I3MmMzMTZjYjhmZTQ4OCBsZWdhY3ktdHJ1bmsKKzc3NDg1IDIwMWI0NjFhMTJiZGZiMWM4MmRjNzAwMTA0NGQwZGY1MGEyNjUwODIgcHkzaworNzc0ODYgZThmODQ2MWQ2ZDFkZjUxZjE2OGY5YWJhZDRkMjI4YzdkMzk5NDNlOCBsZWdhY3ktdHJ1bmsKKzc3NDg3IGM0MzBlNjY0ZTYwNWJmZTBkNjJlMjQwNGRkMjcxZmJhYWEwZTFjZTcgbGVnYWN5LXRydW5rCis3NzQ4OCAwM2ZhNjFhMzdlMmQ1MmQwMDFiZTkwNzI2NmI2YThhMzgyNjlkZGVlIHJlbGVhc2UyNi1tYWludAorNzc0OTAgYWYxODA5ODEzZGU5NmQ2NDMxZjFhYTllNDllYTdmYzQ1ZmYyMzU1YyBsZWdhY3ktdHJ1bmsKKzc3NDkxIDc2ZmI3ZGJkNzM4ODQyMzJlMzBhZTFjYTAwOWExNmM0Yjg2MjViZTkgbGVnYWN5LXRydW5rCis3NzQ5MiA5MjM4NGQ3ZjQyNWE1OThlZGZmMjkyODIxYTk0ZTUxYjZhNjRmNWRiIGxlZ2FjeS10cnVuaworNzc0OTMgMTY4MmI5NjJlOGRlZTFjOGY1OWViOTUxZGFkMjhkZTY3ZDdlZTQxZSBsZWdhY3ktdHJ1bmsKKzc3NDk0IGNlMTFjMTI3MGI2OTA2Zjk0MjhhNjVmOTNjMzE1YTdmZTA4Yzc0YmMgcHkzaworNzc0OTUgZDc1OGViMmM4MjhlODZhNjIxOGVjYjFmYzE0ZWZjNmE5MWU4YmRlMCByZWxlYXNlMjYtbWFpbnQKKzc3NDk2IDliYWIzZDdhYjRmNTFiNzNlOTY0NjY1MWQ1MTEwNTRmMzA3YTY1MTMgcmVsZWFzZTMxLW1haW50Cis3NzQ5NyBiM2Y1MGQ2Y2I2NDA2YmEyYmMzMjk2NDIyZGE0ODYxMzIwNWY5OWNhIGxlZ2FjeS10cnVuaworNzc0OTggZDE0MGY0OTAxYTQyMzgwNmU5ZmFiZWU3NmZjZDA4NzdjYjViZTFhNyBweTNrCis3NzQ5OSA5ZTczYmU1ZmE4MGY4NmNjNWMwMjk5NmEyMDAyMTBiMTVhM2NjYWUzIGxlZ2FjeS10cnVuaworNzc1MDAgMzU0NjllNzlmZjgwNDZmZTJhMTNjODJmNjE5OTFkNmNmZTgwNGRmNiByZWxlYXNlMjYtbWFpbnQKKzc3NTAxIGViODRmNzIxN2M2NWQ5Mjc4ZTRjZjBjNjYwMWZjYjg1ODkwODBlNmEgcHkzaworNzc1MDIgODA0MTNjMTgyYTI4YjY4MDBlNzM5NzEyMjViMTJhNTdhNDMwY2YzMSByZWxlYXNlMzEtbWFpbnQKKzc3NTAzIDY1N2YxNjU4Mjk0MzczOWI5MDZmNjZmN2VmYWQ0MDE0NDkyYzhiMWMgcmVsZWFzZTI1LW1haW50Cis3NzUwNCBjNzZkNDFlNzQ0YzIzMTkwMzAwODk1MzZjYmJmNWU1NWJhM2IxNjYzIHJlbGVhc2UyNS1tYWludAorNzc1MDUgZDNiZWExNjY5ZjJkODkzZjI4ZDc1MTdjYzRkZDJkNDU3NTQzN2ExMCBsZWdhY3ktdHJ1bmsKKzc3NTA2IGVlZjJlYmMwODFkZWUwMDZmNmUzNzFiYzk4MDI1YzA3NzQ1MmUzZGUgbGVnYWN5LXRydW5rCis3NzUwNyBiZTBiZjBiYmQ5NGFmZmVjNTQxNjRmMDY1Y2U0MmMzZTZlZTI4ZTMxIHJlbGVhc2UyNi1tYWludAorNzc1MDggYjMwNDhhNTJlM2M4NWFjODMyMzViN2I5ZDUxNWYxNTQyZWIyMjIwYSBweTNrCis3NzUwOSAzYWFlZjJlZGZkYjM1NWRlNThiZGQyZTExZTg0ODIxZmJjYjJiYmUyIHJlbGVhc2UzMS1tYWludAorNzc1MTAgMWY4NGRkYWZiNmEzOTJjNGIwMDExMzU1NmZlMDdkNjkyYTc3MjE4MCBsZWdhY3ktdHJ1bmsKKzc3NTExIDc4NjEwYjQ4YzM5NmMxNjRmMzVhNzM1ZjA0ZDU2N2QxM2ZiOTVmMjggbGVnYWN5LXRydW5rCis3NzUxMiBlZjBkMDRkZTRhNDNmOWUwYzg0MGQ1MDIxYzZjNmVkY2JmMjM2YWJiIHJlbGVhc2UyNi1tYWludAorNzc1MTMgMDgyZDBlYWY4ZGRhZGM5Yzc5NThkOGVmMDlhNzc1YmIzMjc1NjA3MiBsZWdhY3ktdHJ1bmsKKzc3NTE0IDc2MDc2NjU5YjIyNDllMDQ0MTdmYjhlOTQyYWUzOTJmZTc2MmExNzQgcmVsZWFzZTI2LW1haW50Cis3NzUxNSBmNDdkMTk5ZWU2Njk3ZjBmNjA0NjNiYmIwYmQ3ZmZkMjY3MzI1MWE0IGxlZ2FjeS10cnVuaworNzc1MTYgMjAwNmZkODE2ZDIyNTIwMmMwNDZiYmZhNjI4NGFiZGFmYjUzYjYwMyBweTNrCis3NzUxNyA5MDA2MjQ1YjE5YWZmOWNmZmMwMDAxYTYwZjlmOWEwZTJhOWRiZTRlIGxlZ2FjeS10cnVuaworNzc1MTggNDI4OGM0MGM4NDQwNzViM2NkZTE3ZDg0ZWE3MGRmYmNiYzNjMzM5MiByZWxlYXNlMjYtbWFpbnQKKzc3NTE5IDU2NzNkYzNiNjQzMmU0YzkwYzk4NWI1MWU0Y2FiMzg0YmIwNTUxYTUgbGVnYWN5LXRydW5rCis3NzUyMCBlYWZhYmFkNWU2MDFlZWQ1NTUxMjA3ZTk3YWYxYWIwZmFiNjA1M2VmIHB5M2sKKzc3NTIxIDE4OWE1YWJiMjMyM2UxY2YzNWY5OGI5MTU0YmIyNjhiMTA0YmIxN2EgcHkzaworNzc1MjIgMzJkNmE5NGNkMGZhMzlmZTU4OGNiYzdjZTE5ZTljOTk5NTJmZGE1MCByZWxlYXNlMzEtbWFpbnQKKzc3NTIzIGExNmIyNGIyNWFjMzFhN2JmODk1YmE3YmI4NGJjYzk2YTk5NTU3N2QgcHkzaworNzc1MjQgMGZhYjNjMmRkMzE0Y2ZhZjgzMWI2ZWMxMGI5Zjg4OWY3Yzg0MWYxMyByZWxlYXNlMzEtbWFpbnQKKzc3NTI1IDI2OWMwOTkyMWJiMmZhNDdiYWVkNDFmMTBhZmQ0Nzk1N2VkN2U5MjkgbGVnYWN5LXRydW5rCis3NzUyNiAwODk1MDQwYWRlZmY1MjYyYjRhMGUxYmI1NDkyNGYzMzc1ODA1ZDI4IHJlbGVhc2UyNi1tYWludAorNzc1MjcgZjIyMTgzZTY4ODVjOTk0YzdjNjk5MmJkZWY5ZTU3NjlkMDVmMzk1MSByZWxlYXNlMjYtbWFpbnQKKzc3NTI4IDExYWQ0MmE3ODZhMjEzOTY0ZmEzNmI5ZDUxMjVlMjM0ZDE2NDc0NTYgbGVnYWN5LXRydW5rCis3NzUyOSBkMTQ5M2NkOTEzMDA2ZDUzYWQwNjY0ZTlmZjhlYmMyOGVhMGUwN2RhIHB5M2sKKzc3NTMwIDhlMTc5YTBmY2I1ZWI4YjU0NDE5YjBlNjRiZGQ1YWFlM2MwMGZjMzMgbGVnYWN5LXRydW5rCis3NzUzMiBjYTAwYWNjOWMzMDRlYjdhOWZmYTQ4NWY2MTg5ZTBhODc4YjEwYzE4IHJlbGVhc2UyNi1tYWludAorNzc1MzMgNWMzMmYzYjY1ZDIxNmZiMzRkZDc5NGEzYjAxNTcwYzRmYTUzZDQ4YyBsZWdhY3ktdHJ1bmsKKzc3NTM0IDE3NGJkYWIwMjRlYjgzNTAwMzk1MTQxN2RiMjAxNWQxZjU2NWYzNTggcmVsZWFzZTMxLW1haW50Cis3NzUzNSA2MzUxZDNkNTNkZWQzNzgwZGRiZjNlYjQ2YWU5MWUwMjNjYjM2OTBmIHB5M2sKKzc3NTM3IGQ4MWU0ODg0NmI0ZWJmOGEyZjhmMjE1YjI2NDJkYjU2NzE2Mjk0MjAgcmVsZWFzZTMxLW1haW50Cis3NzUzOCAyOWExNDEwY2Q3ZGM4MmM1MTAwN2JhNTkyOGIxZGJmNTA3ODQzOTJiIHJlbGVhc2UyNi1tYWludAorNzc1MzkgMWVhN2ZiZDk5Mjk0NTQzODk1NTNjYzMxNDE4ZmMwMTdhYTZlNjhmNiBweTNrCis3NzU0MiBiNWVlNDc4MjFmNGJkODdjY2MxYmQ5NzNjN2ZjOGJmMmRiMjZmNjg1IHB5M2sKKzc3NTQzIGVkOGIwZWUxYzUzMTFjZWZhZGQxMmI2ZTM1N2ZjY2UyMDNkNDEyNzcgcHkzaworNzc1NDQgYTZjYzQyMTJjZDU3ZTMwZDM1YTFkZWUwNTllYjgyYmRhOTlkMWQ3YSBsZWdhY3ktdHJ1bmsKKzc3NTQ2IGE0YTNlNjg4NDQ2ZTRlZTI1MWI4ZWEyZmE2OTk5NjNkMGYwODY1ZDIgcmVsZWFzZTMxLW1haW50Cis3NzU0NyBlMzUzZjVkNzlmNGNjOTM0ZjJmNjgxNzcxOGVmZDIwM2QxYTA0YjI5IHJlbGVhc2UyNi1tYWludAorNzc1NDggODFiMzE0NTA2MWQ5OGNlYzRjMmZmZjI0Zjg0Mjk4YzFkMzc1ODUyMiBsZWdhY3ktdHJ1bmsKKzc3NTQ5IGZiNzNhYTI0NTAxNGFiOTY1ZWUxNjlkMTY1YzNlZTM1ZDhiZDQ5MTkgcHkzaworNzc1NTAgNTM2NmQ1NzVlMmNkMWQyNGJhYWYzZDlkZjNiYmVhOGQ4OGE4MTM5OSBsZWdhY3ktdHJ1bmsKKzc3NTUxIDYwZTA2OWM1OGEzNWRjMjJjZThlYjJhNTNiZjk0NjMzMWQzZDE5OTAgcHkzaworNzc1NTIgN2FlY2ZhNDQzMmRmM2E4ZGVhZTk2NTE4NzJjMDNjOGFlZjEwYTk1ZSByZWxlYXNlMzEtbWFpbnQKKzc3NTU1IDcwN2Q4Y2E1ZWEwYjAyM2IwYjNlNTFlY2E0OTkzZGRmYWQ5NDk5YzEgcmVsZWFzZTI2LW1haW50Cis3NzU1NyA5M2ZhMTBiZWYxZTIyZmY5NTliZjcwOGRhNzk4ZDdkNGM2MTNlNGUzIHJlbGVhc2UzMS1tYWludAorNzc1NTkgOTJhNjJkZmZhNDA0OWNjNzg0MDExNDJkYTEzYjE5OGNiZmE3ZjZjNSByZWxlYXNlMjYtbWFpbnQKKzc3NTYxIDM1ZjdlMjMwOTdkODMwYTZkY2VkN2E0MGFmMmE4OGE0ODNlMWUxZjkgbGVnYWN5LXRydW5rCis3NzU2NiA5MzA0NjRmMzIyMDQ2NTNhZmNiNDQwNzlkMGIwYjg3OTQ5ZmNhZDkzIGxlZ2FjeS10cnVuaworNzc1NjcgMjNmMTJjYmYxMjJjMTMxNDdhMDQ4OWY4NzllYzE4MTRhYzc5YjgxNiByZWxlYXNlMjYtbWFpbnQKKzc3NTY4IDFhZTMzNzljMDIwOGY2ZWM4ZjRjYTI0ZTk1ZjhjM2RmZGY4MTM5ZjggcHkzaworNzc1NjkgYTMwNjgwYmNiNzU4OWNiZWZkNmFjYmFhYmUyNjU1MjA1OGJhMzA1MiByZWxlYXNlMzEtbWFpbnQKKzc3NTcwIDQ1NDdhOWJmZjdjNzdlNzczNzBkYmNjYmIxYTg2MGI2NjEwODE2ZmQgbGVnYWN5LXRydW5rCis3NzU3MSA2NmU1N2ViNTk5NTEwODE4Mjc2NGFjNGQ0NTZjOTM0YTY4MDUwZTcxIHB5M2sKKzc3NTcyIGE5ZmIyMDM3MDhjNDExOTc2MDQ5YjQ2MTBhODc5YzcxMDk4MjRiNjYgcmVsZWFzZTMxLW1haW50Cis3NzU3MyAxY2VmZmIzYzhjYjJlNTVjOWM4NDEyOGEwY2NhYmY4ODljNzZmMDI5IGxlZ2FjeS10cnVuaworNzc1NzQgM2JkNmRmMTFkMWQ2YzI2YTI0ZGRhZTE3NDA3NWQwZjBjMGQyYTdmOSByZWxlYXNlMjYtbWFpbnQKKzc3NTc1IGRmMDIwMDc5ZTI4ODlkNDBhZTIyYzg1NTg0ZjE4NDllYjMwYTlkYzkgbGVnYWN5LXRydW5rCis3NzU3NiA4Zjc5NzFiODIwYTQzNWIxMDVlMWU0NzFmMDFhZjBkNjRmYzU3ZjFiIHB5M2sKKzc3NTc3IGZiMzM3Y2I0NmI5ZGU4NWZmZDUyYTZiYjBkZDdiYTU0OTkxMjAzMmYgcmVsZWFzZTMxLW1haW50Cis3NzU3OCA3MzIyYzU2OTEyOTRkNGRjMjU3NjVkOGFlYmJjMzAxOGYyNjY2ZjI3IGxlZ2FjeS10cnVuaworNzc1NzkgYjk4ODhjMTMzOWRmNTIwYmFlY2M5YjhjOGE0MWJmZjA2NjIwYjk2OSBweTNrCis3NzU4MCA2ZWMxNGJjNmFiMGM5YjU2NWQ0OTgxMTY0MDAzNzkxMDlmNzgzMzdhIHJlbGVhc2UzMS1tYWludAorNzc1ODEgODAwNTU5YzlkNTA0YmZlYTFiNDk2ZmE0MTQ1ZDRlMGVmNWE0YWEzZSBsZWdhY3ktdHJ1bmsKKzc3NTgyIGQ2MGI3YjJjNGExZjUxNzRkODlmYmNhODZlNmNlMDFiNDkxYmQzYTUgcmVsZWFzZTI2LW1haW50Cis3NzU4MyBhMTE3Y2I5MjZkMjA3ZTA5YWUyOTMxMTFmMGM1OWVhMTUxNjcyM2E3IHB5M2sKKzc3NTg0IDhlOTY3NzAwN2ExZThjM2MzNGMxN2FiODUyYThmN2I4NjllNzdkOGQgcmVsZWFzZTMxLW1haW50Cis3NzU4NSAwYzhjYmRiYWZhYWRkYTdhZTdlZTE5YmI1ZWNjNTRkOWIxZDRlMjkxIGxlZ2FjeS10cnVuaworNzc1ODYgYzI0NzUyNmQ1YTViMDM0MmNkYjgzYmNiYmJiYzViOGU4NzkyMGQ2YiByZWxlYXNlMzEtbWFpbnQKKzc3NTg3IGE0ODVmY2RmZTg1OTYwMzg5Y2E5NTVhN2U1NjY3N2NhNmNjN2RmYTUgbGVnYWN5LXRydW5rCis3NzU4OCAzYjQ5ZWY2YjA5ZmZhMGE5NThhMjgxZDM2MmYyNzVmZjFlOWU1ZWZmIGxlZ2FjeS10cnVuaworNzc1ODkgNWM5YzUzYTcyMWE1NTRiZmIwMjVmMTRiMGRkNjUyMjNjYWJmNGZiMiBsZWdhY3ktdHJ1bmsKKzc3NTkwIDNlNjI5NDcxODUwYWZlODM5OWY3YTc0YTgyZTUzNjFlOWYzYTkzZTIgcHkzaworNzc1OTEgNjAzNmQ3ODY5YmQxZjg0MTE2ZGRlMTM1Y2MyMjM0NGVjY2VlOTVhYiByZWxlYXNlMzEtbWFpbnQKKzc3NTkyIGJiMTBmM2ZmYWUwMjgxZDM2OWFjMmI3NDgyMDdiMjk2YTM2NDY4MmUgcmVsZWFzZTI2LW1haW50Cis3NzU5MyAzYWFkY2UzOWQzNDUyZDliOTZlYTM5ZjNmZDRkNWRhZjhlYmM5MmVhIGxlZ2FjeS10cnVuaworNzc1OTUgZmVhY2FhNmU0MGI4NGI3MDQ4MThmZTYxMmY4ZTRlODhjMWIxZGZiYyBsZWdhY3ktdHJ1bmsKKzc3NTk2IGE5ZDUxOGZhZGE1OTk1NjVlY2M4MWQ1ZmZlZTU1ZTExNTVhZjA4OWQgcmVsZWFzZTI2LW1haW50Cis3NzU5NyAxMjFkZWVkNTk2OGVlNjhlNDFlOGQ0ZjI5ZWUxODEzZTZiYjA2YmE1IHB5M2sKKzc3NTk4IGQ1OWY3NmQ2Yjc5NTc3ZGMxYTNkYzFjMjhmMGY4MTAwZWJhNDUxZTEgcmVsZWFzZTMxLW1haW50Cis3NzU5OSBlYzE5MjY0M2FkY2JhMjlhNmViZGFlNGRjMzdiMzE4NzdiNDViZDhlIGxlZ2FjeS10cnVuaworNzc2MDAgODZhMzVlNTliNmIxOTU4NWU0YzRhMmEwN2YwNTU1ZjVmMGQ3YjZlZCBsZWdhY3ktdHJ1bmsKKzc3NjAxIDllNTliZTFkMGMzNzEwYmIxZWFmMjM0YTg4MTg2ODU2ZWM0M2JiMjEgbGVnYWN5LXRydW5rCis3NzYwMiAyZGVmMWRmZGYxZjYzOThiZDBkOTVmMTIzNTE3MTFkMzkyZjU5Y2QxIHB5M2sKKzc3NjAzIDE2Y2RjMTVlNWQ3NWJiMWIzMDY4NDFiOGI5ZWMyNzBjMjBmODA0ZmIgbGVnYWN5LXRydW5rCis3NzYwNCBmNmE2MjZmMzQ4NDBmYTBjM2Y1ZWJhZDhiODYwMjg4MGI2YmRjNzcwIHB5M2sKKzc3NjA3IGRmNGQyMTU4ZmEwNDg2MWQ1ZjFmNDMxMTVkY2NiZTg0Njk0YWEwMTAgbGVnYWN5LXRydW5rCis3NzYwOCA3NWJmYTVkYTFiZWI1MjUyN2Q3NGJlMGM5MWNlMDMwMjYyNjY3NzU5IGxlZ2FjeS10cnVuaworNzc2MDkgZjgwZTZiZDRmZDRlNmE3Y2M0YTYxNWVjMTYzYTlhNzAyMDc2YTMzMSBsZWdhY3ktdHJ1bmsKKzc3NjE0IGJhYzgyMWRmZmVhODA0ZjFlZjkxNmYzMGRkYzVmNTZkZGM2ZTI3YzAgbGVnYWN5LXRydW5rCis3NzYxNSA1ZGJiYzQzYzU5MWI5MmQ3MjViN2Q5MTAxNjFmNTY3MDM4MTgzYWQ5IGxlZ2FjeS10cnVuaworNzc2MTYgODg2MzIwZjFiYTgyYTA1YTJkN2RiMDFmMmQ5MDE2ZjA3MDkwZmI3YiBsZWdhY3ktdHJ1bmsKKzc3NjIyIDczZmVjZDRlN2ZlYzM0ZTkzODgzMjA0MDQxNjFlYzZiN2Q4NDRmNjkgcHkzay1jZGVjaW1hbAorNzc2MjMgMjY1ZWIyNTBlNGE1ODE3NTg4MmViYTI1ZWI5Mjc1MjI0MTc2ZjYzYSBweTNrLWNkZWNpbWFsCis3NzYyNCA5YzU2M2E0ZjNmOWEyNDRiNGFjZmExYTg5YzZhMjU4OTVmMmU4M2M0IHB5M2stY2RlY2ltYWwKKzc3NjI1IDQ2NGEyMzY3NjU0MDk4MmFmMDA5ZTBmODFjMTI3ZWM3ZDQwYTA2YTAgcHkzay1jZGVjaW1hbAorNzc2MjYgODc1MjViZDQ5YTlkNjE1NDNkMDViMWZiZTk0MGEzZTBjOGFiYzk3ZiBweTNrLWNkZWNpbWFsCis3NzYyNyBkNjZjNmViYmM2MTc0MGYwZGI1NmViYWRiMzBlMDA4YzJkNDNhMGU0IHB5M2stY2RlY2ltYWwKKzc3NjI4IDgwYjA3OGQwNTU3NzM2NjE5YTkxZWJmNTNhMzdiZDVlOWFkNDYyMzkgcHkzay1jZGVjaW1hbAorNzc2MjkgZDgyOGNjOTFjMDliNTA4MDcxMWQyZGM1NDMwYTQyNmE0ZGYyMWQxYiBweTNrLWNkZWNpbWFsCis3NzYzMCAxM2JiOWE5N2UxYzUwMjRiNTg0YjBiMTQzMTExNDA1MmY3YTYzN2VlIHB5M2stY2RlY2ltYWwKKzc3NjMxIDUxNzEyYzQyYzVmYjFmNzZiYzFhMjg5NzhhYmFjMzY2OWRhZThkMzMgcHkzay1jZGVjaW1hbAorNzc2MzIgY2VjMTQwZjcyZDAzZmJlZmQyYTQzYWRkMDVkNTM0YTM5MWRmMDM0YiBweTNrLWNkZWNpbWFsCis3NzYzMyBjMWRjZTk1OTZlNzcxYjliNDIxOTdmZGJiMjU5N2FlYjQwYWM5MTI4IHB5M2stY2RlY2ltYWwKKzc3NjM0IDA0ZGVhMDA2MDI1N2JmYTI3ZTJkMWJkMjQ3MzAwNmI4MDRjNzhhNGMgcHkzay1jZGVjaW1hbAorNzc2MzUgNDBhM2JlNzhiYzk5YmQwOTdhOWIxNTkzMzZhZmRiZDM3YzI2MmZiZiBweTNrLWNkZWNpbWFsCis3NzYzNiA3M2UzZWU0NjNjOTQ4NzcwZDhlMTZlMzk3NDBmNGEzMTRhYWIzY2E5IHB5M2stY2RlY2ltYWwKKzc3NjM3IDAwMmY3YWIzNWUxN2QwNmVlNTlkZTI4NDdkMzhjMGRkYjU1MTcyYTEgcHkzay1jZGVjaW1hbAorNzc2MzggM2RmOWI0MGZmNGZjZTk2YjgxYWQyMjE0MjVjZTM4M2FhNGVkMWU4MyBweTNrLWNkZWNpbWFsCis3NzYzOSBmNjQ2YWFhOTFiMGU3Y2QyODRjODY4ZjY5NTdkODFjNTAzYTliZDY1IHB5M2stY2RlY2ltYWwKKzc3NjQwIGZmMzU2M2JiYmI4MDM5YmFlYjU2MzU3OGIzM2YyMDAzZWZkMTRjMTEgcHkzay1jZGVjaW1hbAorNzc2NDEgOWNmMjBiZDE1MTZiOWM5NWZkZTM0ZjNiYmQwYWM2MzllMTkxYjgwNSBweTNrLWNkZWNpbWFsCis3NzY0MiBlZWY3NmM4MTJiY2JkY2FmODlkMzIzNDM4MDUyODZkMjQzOTg0ZDBiIHB5M2stY2RlY2ltYWwKKzc3NjQzIGMxNGM5NDUzMTI3MzdiY2JmYzZmNzU3OGZiYjRjNTk4OTc4NWI4ZmUgcHkzay1jZGVjaW1hbAorNzc2NDQgYjQ3MWUwN2EyMzc1YzZhMjg3MmNiY2UzMTg5MzU2MWVmYjExN2RkMSBweTNrLWNkZWNpbWFsCis3NzY0NSBiNGFmMjE0NTY3OGI4ZTkyY2UyNjYxMDNmMThmYmU1NjFhMThiODk0IHB5M2stY2RlY2ltYWwKKzc3NjQ2IDY5NGFmZjE2Nzc3ZjgwNGZiYzBhZjdjZDkxYjgxZDQxM2Y5MTg0MzYgcHkzay1jZGVjaW1hbAorNzc2NDcgN2QxOTk2NzI3ZDA4NGQ4N2I2MmMxZmVkYjhjZjAyOGE3NmRiNjc5OCBweTNrLWNkZWNpbWFsCis3NzY0OCBkYmMwMGZlMzc3NzE5ZDQ0YWRmMzZiMDJhMTZjY2Y2NDE1YmE4Y2RlIHB5M2stY2RlY2ltYWwKKzc3NjQ5IDFjYWJkZjI4OTM4ZWU0ZWYwZGY5MWMwZDExNDFjNzEzZmM4Nzg3YmUgcHkzay1jZGVjaW1hbAorNzc2NTAgMGJkMmIwNzIwODMyOTg1YzhjMTQ0ODEwMTgwNDFjYmQ5MzBiNGU0ZCBweTNrLWNkZWNpbWFsCis3NzY1MSA5MzFlYzU1ODkyNzE2NGIwNzVkNDgxMWIzODY1NjEzYWYzNmMwYmY0IHB5M2stY2RlY2ltYWwKKzc3NjUyIDBiYWMzZGI0ZDVlMjhjNzhhYzNjNjM2ZWQxOGVhZTcyNjllMTgwN2UgcHkzay1jZGVjaW1hbAorNzc2NTMgNjMyNjNjY2RiMDgxYWEyYWJlNmU0MDA3ZDYyNGRlYTU2ZDE4MTczZiBweTNrLWNkZWNpbWFsCis3NzY1NCA2ZDg5NmU0MjRhM2RhNDM2ZTgzOTUwOWY4NmM2MjBkMGJkM2FmZTFkIHB5M2stY2RlY2ltYWwKKzc3NjU1IGIyMjE0ZWUyNzk4Nzk0ODFmYzZjM2I4NGNjNzU4Mjk3NDVjYjc3NDYgcHkzay1jZGVjaW1hbAorNzc2NTYgMDgxM2U4OWQwMTkzZjY3OTkzZjg2NTdmNWJmMjJkMTg1ZWMxOTkwNCBweTNrLWNkZWNpbWFsCis3NzY1NyA0YWQwM2Y3MWQxZTEzY2Q1MzBkZWM5ZjRlODhjZGUxNDdmMGM1NmU3IHB5M2stY2RlY2ltYWwKKzc3NjU4IDU3N2MwOTlhZGE4ODE3MDE5Nzc4MzdkZTU5MGFjNmYzY2UwZjEyYTQgcHkzay1jZGVjaW1hbAorNzc2NTkgZjA0MDg2MzdiZTc3ZjI5OTc5ZTg3NzFiN2MwMjMzODAxZmI0MTQxMyBweTNrLWNkZWNpbWFsCis3NzY2MCBiMTk4YjBlMjFkNjJjYzY4ZDZlYWNhOGMzNTVlOTgwNzZmZTBmNmQwIHB5M2stY2RlY2ltYWwKKzc3NjYxIGQ0MmE4NTQ2M2Y5Y2Y0MjhlMjRkZDQ1ZjEzMzA4MGYzZDc3ODgyZTcgcHkzay1jZGVjaW1hbAorNzc2NjIgNWVlYzNiMTFlNDFlMTkzN2RhMDkwODQ0M2Q5ZjI3NjAwMzAwM2RlMyBweTNrLWNkZWNpbWFsCis3NzY2MyBlMDNiOWJkY2Q0MDVlOGQ5NGJjMWEzN2VlMDk5NjdiNTJlNWIzNTg0IGxlZ2FjeS10cnVuaworNzc2NjQgYWU2ZmIwNWI0YzE5ZGU2MzM3Zjg3Yzk0ODYxODVkMjMyYmFkYTY2MCBweTNrLWNkZWNpbWFsCis3NzY2NSA3ODJhNDBmZjNmMGRjMjJjYjY2NTRkODNjZTFiOWFkOTEwZjQ3NTgyIHJlbGVhc2UyNS1tYWludAorNzc2NjYgZjM0ZjhhZTc2NDZlNzA2MzlhZTQyOWE1MTcyYzVhNmFmZjlkZWNlYSByZWxlYXNlMjUtbWFpbnQKKzc3NjY3IDRmOTViNDM1MjE3OWM4MmQ4Mzk3ZTUzOWU0YmUwZGJhZDJmODMzYzUgbGVnYWN5LXRydW5rCis3NzY2OCAwNTllMWZkNzg2NWNmZTdiNWVhMTc5ZWYyN2U5NGMxMGZlNTllYmNjIHB5M2stY2RlY2ltYWwKKzc3NjY5IGZlZTdhODhiMDZkMWZlYzk1OWQ3M2RiM2VkOGRjZmExNWIyMTgxZjIgcmVsZWFzZTI2LW1haW50Cis3NzY3MCBmMzhjMTE5NmQ5ZmYxN2U0ZjM4ZDJkMTVhNDBmYTZiYzgxNzRkY2Q2IHB5M2sKKzc3NjcxIGYxYWNkMDE3MjVlMDE4NjUxZDBiYTgyZWQ3NWMxNWViODA1ZWJlMDEgcmVsZWFzZTMxLW1haW50Cis3NzY3MiBmYmU2ZWNiOTFjNGJlNTk1OTg0YzE3NDY0YjY5NDhhNTRlM2JiNjIyIGxlZ2FjeS10cnVuaworNzc2NzMgMjJjZGVjN2Y0NGM1MmYyYmM2YThiMmIzM2MzMjJkNWRhMzIwYjk0NCByZWxlYXNlMjYtbWFpbnQKKzc3Njc0IGNhYTY0ZGM0NGQxNmVmYzJhOGJlNjExM2E2YzMwZjY0MWMzMTAzZDcgcHkzaworNzc2NzUgZjU2ODM4M2FjYzlmODAyOTBkMGJjM2UwZDc0M2IxMDczMTJmYzZkOSBsZWdhY3ktdHJ1bmsKKzc3Njc2IGE5OTZkNjZmYWVkMGNhMmRkZGI2YjZlNjQwNzZiNzQ1N2I1ZWM0ZjYgcmVsZWFzZTI2LW1haW50Cis3NzY3NyA1YzIzNjcwNGRhZjE1YTkwODNhNWQ2ZGIzODRlMDQ0MGNiNjIyZDlkIHB5M2sKKzc3Njc4IGI2MzZjYzcyZDJkZTczYjNmMTlmMTlmNzFlYTM3ODk5ZDQwNTBiNTggcmVsZWFzZTMxLW1haW50Cis3NzY3OSBmODUzOWI0OTdkNGFhMTMyYTY1MTVhMjNkMDhmMzE4YTZmY2QyNjcwIGxlZ2FjeS10cnVuaworNzc2ODAgOWUxMjRlNjQwMmJjNzIxZDdhYzBjOGFjZmU0NTBiNmI5YjlmNDJkYiBsZWdhY3ktdHJ1bmsKKzc3NjgxIGVkNDAyN2U2NjYwMDZlNzM4NjgyMDVhYTU5MjkxNTAwOGUyNzEyMjcgcmVsZWFzZTI2LW1haW50Cis3NzY4MiAxZjcxNWEzNzdlZDA5ZDI1ZTVhZGM3Mzk2Nzg3YWZiNTNjZDcwZTU2IHB5M2sKKzc3NjgzIDRjZmRjOGI3ZmIzYWYyNmY3NThkNTg5NDAwOTJiYWM3NTc4NTEwN2IgcmVsZWFzZTMxLW1haW50Cis3NzY4NCBmNmZjZWMyOGFmOWU0NTk2NDZkZTMxZTVhM2FjMWU1MmJjZTc2ZTA2IHJlbGVhc2UyNi1tYWludAorNzc2ODUgZmU0ODg0YjA0MWI5M2Q4Mjc1MWI4NTMzYzMyMjU4ZTBmNmFlZGY1ZCBweTNrLWNkZWNpbWFsCis3NzY4NiBkMGQwNTc5ZGQxZDEzY2YzMjdmZGQ0MGZiYzA3ZmEyZTFmZWEwZjlhIHB5M2stY2RlY2ltYWwKKzc3Njg3IDRlNjk5ZDdjMzJlY2Y4YmEwMjRjOTNiZjVkMDZmZTZlNDc3NDc0N2EgcHkzay1jZGVjaW1hbAorNzc2ODggMmNmNDFkOGY3ODdhYTEwOTk1OTA4YTUwOWNjZGRlOWVmODUzMTQxNyBweTNrLWNkZWNpbWFsCis3NzY4OSBhZGM5OGJmMTUzZWMwNGJhYjdkZDBlYWNhOTYzZjg3MzhmZjBjOGI3IHB5M2stY2RlY2ltYWwKKzc3NjkwIDAxY2U3YTg1OGRhZGIyM2E1MjM4NDhkYjkzMDNmZWVhNWI5OGQ3N2UgcHkzay1jZGVjaW1hbAorNzc2OTEgNmI3NjE4MTdiNzE3NDFhYTJmMDQ1NjgxZTQ3ODQ3Yjc0YmY4YzU3NiBsZWdhY3ktdHJ1bmsKKzc3NjkyIDMxY2RlNmU2M2MwM2Q4YjM5Y2M2Mzg2ZGE1YThiNDUzYTQyODg0YzYgcHkzay1jZGVjaW1hbAorNzc2OTMgNjA3ZTI1MjVjMDUwN2Q1MzI5MTc2MWI5YTA5MzY5NTlkZDJjZmYyZCBweTNrLWNkZWNpbWFsCis3NzY5NCAwZWM2MDM1MzY1NmUwNDEzMzg2ZWY4ZjEwNWZjN2EzN2Q2Y2E2ZTBlIHB5M2stY2RlY2ltYWwKKzc3Njk1IGNlYzJmMjgxMTE4MjM3ZjUxNzA5ZTlhZTMzM2RhNDdiMjc4NzhlYWMgcHkzay1jZGVjaW1hbAorNzc2OTYgZDBlNGJkNzZjNjkyNzQzNmU2ODYyYjMxNGJjMWU1OGEwNTI4Y2I4MCBweTNrLWNkZWNpbWFsCis3NzY5NyBkM2I4M2ZkYmM4MWE0NDE4N2FlNzY5MGQyYjVhNzUzZjU5MTY3ZTg4IGxlZ2FjeS10cnVuaworNzc2OTggN2E5ZjM2Y2M2ZGYxMWFlZDI3NGNjOTllZTEwMzdmZWVlM2Y0MWI1ZCBsZWdhY3ktdHJ1bmsKKzc3Njk5IGE2NzhmZTFjOWM4YmU5MzYxNDFkMjE5MDE4NWNjNzAwN2ViM2EyZjQgcmVsZWFzZTI2LW1haW50Cis3NzcwMCA2ODAwNjY2M2E4NTIzMmI5NmVhZjViOWE5MWFmNWIzNDI1NTI0ZTU1IHB5M2sKKzc3NzAxIDc4N2M2ODBmMWZlODhjZjg1Njg0N2E1ZmI1NTQwMjQyM2M1YzM3NmYgcmVsZWFzZTMxLW1haW50Cis3NzcwMiBmNjY5Y2YxMDBlYmJlZDNmZWM4NTM3M2JiNjlmY2FhNGU3NTVjYzhjIGxlZ2FjeS10cnVuaworNzc3MDMgOTcwNWVmM2ZkYjIyNzgxN2U1ZTgwNWVjNjkyYTY4N2U5YWNkOTkwMCBsZWdhY3ktdHJ1bmsKKzc3NzA0IGZhNjllODkxZWRmNGU3Y2RmZGJkM2QzODc2NTk2NTU1YzU4MzYzNWQgbGVnYWN5LXRydW5rCis3NzcwNSBhYzZlOTYwYTAxNGQ4MmFlMmQ2OWZiYTBmN2MxZDQ5MDk5MDEwMzEzIHJlbGVhc2UyNi1tYWludAorNzc3MDYgMmRkNjRjMjQ4NTRjOTEwZDEyNzY0YzhiNmVlMGE5ODc2MTMxODZkYSBsZWdhY3ktdHJ1bmsKKzc3NzA3IGJiMWMzM2VmZmY5MzI5M2ZlYTE5YzQwZDFhNDVhM2M2MWI1MTVmZWMgcmVsZWFzZTI2LW1haW50Cis3NzcwOCAzMDFlZDY5ZWRkYzRlYWNjYzFhYjgyMTYwM2Y3YWE4ODU3ZTQ4NzE5IHB5M2sKKzc3NzA5IDkwMjIzZTM0NThlYjMzOWRmMDIzNmU0NDU2NDJjMDNjYWNjZjkyZDQgcmVsZWFzZTMxLW1haW50Cis3NzcxMCAxZWE2Y2ViYmQ4MThmN2Q1NzEyZjJlMWMzNWY1OWIwM2U1OTMzMjJiIHB5M2stY2RlY2ltYWwKKzc3NzExIGYwZjIyMWUxYTdjMDMwZjdmN2RkOTViYzc5ZTgzZTc5YmQwNGVkN2MgcHkzaworNzc3MTIgYmFkNWUwM2UyNDQ1ZTNlNTQ2NjI3NjAxYjI5YTYyNTY2MjE0OWQ3MyBsZWdhY3ktdHJ1bmsKKzc3NzEzIGQ3N2M5NDdmZjdkYjVhZWVmMjE0M2NhOWFlYzM1OTZhYjY1YTQwODcgbGVnYWN5LXRydW5rCis3NzcxNCBiNDBhNWE1NjhlNzZlNDRiMGQ2NjUxMTlhYmI1MzUyY2RiMzBhZGEyIGxlZ2FjeS10cnVuaworNzc3MTUgMTc4OTE1NjZhNDc4YzQyNDk0YTA0ZDgwOGQ2NGE0NTE0OGFjYWY4NyBsZWdhY3ktdHJ1bmsKKzc3NzE2IDVhYjMwMTJmOTBiNzRjODA1NDYwZDA4M2QwZTEzMDE3ZDM1YTk5NDIgcHkzaworNzc3MTcgODA3ZDgzZjU3YmM4ODM5ZDU3NWE0ZjJmNWYxNWUwYzljMTNhOWIzMiBsZWdhY3ktdHJ1bmsKKzc3NzE4IDVkYjgyYTU3ZGRkMDY2YmU2ZTQ1Y2ZiNjI3ZGJkMDZlNWE3NWY2NTggcmVsZWFzZTI2LW1haW50Cis3NzcxOSAzOTQ3ZmRjYTJmNDBkZmZjMWUwM2E4OWQzYjg0ODk5MDQyY2RlNzQxIHJlbGVhc2UyNi1tYWludAorNzc3MjAgZmZjNGE0NGJmZGI5OGYzZjlkNzBlMzIxZmU2YWUwZDM3YjlhZDUyOSBweTNrCis3NzcyMSA4NzY1NmU4M2RjMTk2ODMyMTZiNDU2YzRmNWI1ZDgxOTgxNWZlNjliIHJlbGVhc2UyNi1tYWludAorNzc3MjIgYmUxMmQzNjIxNTE5NTUzZTIwOTQ3MmU0NDBhMjYyY2JjM2M3MDlhZiBweTNrCis3NzcyMyA4YzNkMmE3MWVkMDE1ZWVjMTFlODhmMmQ0YTFhMjEyYWJmYTFlNWNkIHJlbGVhc2UzMS1tYWludAorNzc3MjQgMmQ3MjM5Y2FkNzEzMmJlNWJkYjNkYjJiYzY4YWE3NThkYzUxMzdkYiByZWxlYXNlMjYtbWFpbnQKKzc3NzI1IDFkYzkxZTlkZDVjMTNhNGJjMmQzYmI3ZDRiNTg5NmFiMjY0ZjIzMjUgcmVsZWFzZTI1LW1haW50Cis3NzcyNiAyMzI1MzNmNzFhYmQ2ZjZkYTk5Y2RlMzEyZjI5ZjRiODAzNDZjZGFjIHJlbGVhc2UyNS1tYWludAorNzc3MjcgNmZmY2RhZmEwMTE4OTk0NDg1YTE3NGNlNDEyODMxNDFiODM0MTIxYiBsZWdhY3ktdHJ1bmsKKzc3NzI4IDcxYWNkNDQ4MmU2NTViN2QxYTEzNzY0MzcxYjdlNTkwZWE0NDc3YzIgcHkzaworNzc3MjkgZGFiMzRiNjBhNzJlMWFhMjM0NDBkNmNjMmQ0MjMwNDFiYTAzMGZkNSBsZWdhY3ktdHJ1bmsKKzc3NzMwIGU5OGVlOTQ1ZTI2MjczMDQ3OTgzYjM2NjBhZTBiOTIyNzExODZmZDEgcmVsZWFzZTI2LW1haW50Cis3NzczMSBjMTBhY2U1Yjc2Y2U5NTRkMGM0MjViZWIxYTZkYzJiMmJmMjZlMzU3IHB5M2sKKzc3NzMyIGZmYjk0OTIwZWZmM2FiOTdiMmUwZWI0NjQ4N2MyMjU1YzZkZGZjZTEgcmVsZWFzZTMxLW1haW50Cis3NzczMyA2OGQxYzgxZmZmMmVhNDM4MjYzYWNiMWE0NDIyZjhjODVmZDBmYzYzIGxlZ2FjeS10cnVuaworNzc3MzQgZWFiNmNkZTJhMzFjODQ1YWY5NWEzODI2Y2E1ODVmNTdkMDhlMTQ4NSByZWxlYXNlMjYtbWFpbnQKKzc3NzM1IDVjMWQ3YTNiYTI5YzE2ZWVjNzg3NTQyMWEwZGRkYjJlN2U2YjMwMTkgbGVnYWN5LXRydW5rCis3NzczNiBhMjU2NzkxYWExOWQwZjhmZTFhZTNkNGYyN2ViODFhNTE5MWMwMjU3IHJlbGVhc2UyNi1tYWludAorNzc3MzcgMGNjZTYwYjY4ZTQ2NWMwOTE0NGI0MGQ0NzkxZTJmYTkyOWM5NTlkMiBweTNrCis3NzczOCA2YTA1NzBlZTIzNjZlZDZkZTY1MWQ4NTExN2Y1ZGM3MTcwYjMxYTc5IHJlbGVhc2UzMS1tYWludAorNzc3MzkgNjdmZjA0MDc0MjcwMzIxMTk4MWZjNmUzNzkxZTJhMWI2YmVjMGI2MSBsZWdhY3ktdHJ1bmsKKzc3NzQwIGZiZmU1ZTQyMzQ5ZjZhM2UwMmQ2OWJlZDhmZmY5NWM5NmY3NDA4ZjQgbGVnYWN5LXRydW5rCis3Nzc0MSAyNDE4YTBhOWE5YTkyNWM3ZGI5OTQxMmZhYjVjY2UyM2FlN2NkOTEwIGxlZ2FjeS10cnVuaworNzc3NDMgNWU4OTMwZjM3MGQ1NDU3ZTMwNDk5OWRiNzg5MTNlMGNhNTZjZTdiMiBsZWdhY3ktdHJ1bmsKKzc3NzQ0IGZmNjYzMjRmNTJhMTI0MjJkM2RmYjliOGM0OWI2YjkxMjEzOWU1MDEgcmVsZWFzZTI2LW1haW50Cis3Nzc0NSAwODM1N2Q5ODc4MmI5ZDNlOWFhZTZkNzcwOTI2MmM1YjUzZTIyNjUxIHB5M2sKKzc3NzQ2IDIzNTkzM2Q0ZGE4ZWRlMDkzYzNkYzdkMTg4NGY4YTEyNTMzMjU3NjkgcmVsZWFzZTMxLW1haW50Cis3Nzc0NyA2OTg1YzBlODViNGJjOGFjZDU1MjY2MzcxZTJlZmJjMjZjZjU2ZTA5IHJlbGVhc2UyNi1tYWludAorNzc3NDggNzhjMGFjMDdhYTllYjI3NmU2NTkyY2ZjZTU1Yzg1MWQ2YTYxMzdhNiByZWxlYXNlMzEtbWFpbnQKKzc3NzQ5IDhkZDQ5YTg2YWRhYTU0ODMxZmE5OWYxNjViYTU5NjFhMGFjNjJiYTQgbGVnYWN5LXRydW5rCis3Nzc1MCA3NzIzODk1MGM2ZGQ0MDVmNzI2YjEyMzdlZmI3NWUzYjk0MWZkNWEyIHB5M2sKKzc3NzUxIDFmMTY1YzQ0MDMwNjRiNDFlZTY3ZTlhYjdmMzY1NmQ3M2VjODdjMjcgcmVsZWFzZTI2LW1haW50Cis3Nzc1MiA2MjA4ODM2ZmVkZjk5YTU0NjI4NDZiODM1ODg3NmJhYmY5YjkzNjA3IGxlZ2FjeS10cnVuaworNzc3NTMgM2UwZmVkMjVjMGFlNTljN2QwNzA2ZDM0YzBmN2FkZjAyYjMyMDI2MCByZWxlYXNlMjYtbWFpbnQKKzc3NzU1IDIyYWVhMTMxYjZhZmMxOTE5Y2Q3NzUwMWY1YWVjNzY5NmJhZTc4NGEgbGVnYWN5LXRydW5rCis3Nzc1NiAyYmRlNmQ0YTEwZWRlZGZhNWY2ZTBmN2RhNzFmNjYzNTk5ZTNhYTFkIGxlZ2FjeS10cnVuaworNzc3NTcgNzQxMTg3YmZjNjEwMmVlNTEyNDcwY2JkZGVjNGRjMTk1YTQ4M2JjOSByZWxlYXNlMjYtbWFpbnQKKzc3NzU5IDU4MjY2ZjFhMmU3ZjNlMzYxNmUxMTNiMDc2ZDk5Mjc2ZTZmNzAyYzcgbGVnYWN5LXRydW5rCis3Nzc2MCBiMjViNzhjZTc5OGRjODdlY2M3Y2MwMThlYzkyMDhmY2Q2NWRiNzBlIHJlbGVhc2UyNi1tYWludAorNzc3NjEgZjlmZDE3OTVmY2Y3NGUxM2Q5MDkyYjZhNzljMDM0NGY2ODgwOTYxZiBsZWdhY3ktdHJ1bmsKKzc3NzYyIDEwYWQ3ZDhlNWQxNzE1YTU0NWNlMTlkYjM1ZjYxOThmMjg5MTBkY2YgcmVsZWFzZTI2LW1haW50Cis3Nzc2MyBiYzJiODhiZWFlNDVkYThkOTdlZDU4NWNmZTFlNjM5NDZhNzE5OWQ1IGxlZ2FjeS10cnVuaworNzc3NjQgOTA3ZmYxM2JkNGUyZTE0NTYzNjMwNmRjMDY0MTJmMjZjNDgwMDM1MCByZWxlYXNlMjYtbWFpbnQKKzc3NzY1IDczNzljZjcwZmQ2MDNhZjVmOGVjYzc3OTUwZDEyNzJjNGM0YmE0N2QgcHkzaworNzc3NjYgODIzMmIxMGUzNGUxMzg4YmRhZWEzMjhjYTNjMTdkNDRhZjI0OTJiNyByZWxlYXNlMzEtbWFpbnQKKzc3NzY3IDkyZTZlOGQ5MDRhMjllZGVjMzBiMDliODlkNGM5NWIyYzAyNDJjZjkgbGVnYWN5LXRydW5rCis3Nzc2OCAzYzBjZDdhN2RiOGVlMzAxNzFjYzRiZDA0Zjc3MzMyOWMzZDk1OGZjIHJlbGVhc2UyNi1tYWludAorNzc3NjkgODA1NjIwNTFiYjcwYWI1NzEwNjUyMTE4OWQ1ODNjMWVmMmRkOGFjYiBweTNrCis3Nzc3MCBkODE1ZGQyZmI1YmY5MTg2MjczNGRhNTU1ZDRiNTUxNjY0YTcxNWY2IHJlbGVhc2UzMS1tYWludAorNzc3NzEgMjc0NmMyMTdkZDllMGE4NGNkYTU3YzkzMWU0ZDNhMTUyY2E1ZmMxMiBsZWdhY3ktdHJ1bmsKKzc3NzcyIGZkZTk3MTllMjA1NmY0M2FlYTU2MzYyYjFjMDE0MjI3YjAxMGRkMTQgcmVsZWFzZTI2LW1haW50Cis3Nzc3MyBkZjMzNTk5MTg1MTdkMjE2MmEzYjk2YmQ3Mzc2NjE4N2NjY2NiNzQ2IHB5M2sKKzc3Nzc0IDBkZGY4ZDk2OTBlNWFlN2QxZDI0YmRlZGNhODZhMGY5YTZjMzBlY2YgcmVsZWFzZTMxLW1haW50Cis3Nzc3NSA2NzI2YWViODY3YjkwMDIwY2FkYmNiOTA4ZjQ5ODQxOGYyNjA1YzVjIGxlZ2FjeS10cnVuaworNzc3NzYgNDk4MzExZmQ4ODIyY2U3OWFjZGU0OTg0MDA1NTVhNzJhYWU3ZjNhZCByZWxlYXNlMjYtbWFpbnQKKzc3Nzc3IDM0ZTJkNTE2MmNlOTNjMjEyMzIxZjg3YmJhNWM4NTAzYzk1ODNiNWMgcHkzaworNzc3NzggYWZkMjBkM2Q4NWRjODhmNDZjYmNiNDdjYjI0MmY0YTMxNGExYTEwOSByZWxlYXNlMzEtbWFpbnQKKzc3Nzc5IDc1ZDI0YjI0NTJhNTliMzU2ZjRjZGY0ZGMwMDMyNmY4ZThiYWUxZGMgcHkzaworNzc3ODAgMTIwNTQ2MzQ2ZjkzOTc5NDYwNDg5MTRjZDNhYmYyNTEzZWUyMTI4OSByZWxlYXNlMzEtbWFpbnQKKzc3NzgxIDc0OGUyODJlMDkxY2U0M2Y2YTI3NTRmN2RiOGRkMzA5OGRkMTI2M2QgcHkzaworNzc3ODIgMWRkODIzMmQ0ZWNiOTgxYzQ1NDZkOGFkNmNiMTI1NTBkYjY4MTgwNyBweTNrCis3Nzc4MyBkNGUyMmZkNTI4ZTJhMmUyNjUxNzlhMTQxZDY3OTM1ZjZhZGJkZWZjIHJlbGVhc2UzMS1tYWludAorNzc3ODQgZjZmOWVlODNlY2JmM2M0NzVmYTQ1NzkxMzJhODBlMWM1NDA1ZjM5YiBsZWdhY3ktdHJ1bmsKKzc3Nzg1IGRjNzE0N2QxYjdkOTRkYmYyOTkzYTBjOGFjMmUxYTE2NGY1ZDNmNWMgcmVsZWFzZTI2LW1haW50Cis3Nzc4NiA5NmQ1YzcwMzE0NDA1MjkzNTE4Njk4NTE5ZjkwMDI5NzczOGQ3ZDI0IHB5M2sKKzc3Nzg3IGUyMGUwMmZjMTQ0N2ZjNzMyZWU1NzdkMWE1YjNmZDUyYjY4YWFlNTggcmVsZWFzZTMxLW1haW50Cis3Nzc4OCBhZDdhNjE1NzRiZDY4OWU2MDY4MzczZWVkOTUxODdhODVjODE2N2U1IGxlZ2FjeS10cnVuaworNzc3ODkgOTU3NWNlMGRiMjA0N2MxYzU2NmFhNmU5ODlkOTYxMjZhMmJlOWIxNSBsZWdhY3ktdHJ1bmsKKzc3NzkwIGE4YTRiYzY5YmVhMTIyNTBkZmY1MmZmZGEwZDk5YzE2YjJiZmNiZmUgcmVsZWFzZTI2LW1haW50Cis3Nzc5MSBlNjYwY2I1MmJmMDA2MGRjYzcxYjBhNTlmN2E4ODBmM2VhMTAxZWI4IHB5M2sKKzc3NzkyIDJiZmVlZjYyOTkzNjI4MDQ0MWIyYmU2MzM5NDVmZWRlMTU5OTFiOWMgcHkzaworNzc3OTMgMjAwNzA4ODBlYTQ4MzM0YjFmY2UxNDc5MDYwMmQ0Nzk5M2UwOTU5NiByZWxlYXNlMzEtbWFpbnQKKzc3Nzk0IGRlYmU2MTY3M2E4YjEwNWJlYmIyMThiMDc1MWI3OGZjZDdiZDY4YzQgbGVnYWN5LXRydW5rCis3Nzc5NSA3YTM2Y2EwNDc0MmRhOWIyOGM2NGMxZjIzZmU1OTQ0OWEyYmY1OWZiIHB5M2sKKzc3Nzk2IGY5ODlmNGYzMDI0NTIyN2Q5YTE5NDE1ZmY1MDgwMTc3NmU5OWFhNDggbGVnYWN5LXRydW5rCis3Nzc5NyA0ZjhiMmExNzNjOGRjNWMzYTRlZGRkMDYwZDQ1NGUzYTZlNzhmNWIwIHB5M2sKKzc3Nzk4IDFhMDA4MWI4NWMwNDg5NWRhZTI3ZTJmZjc5Mzk3YWZlNTE0ZDIyYWQgbGVnYWN5LXRydW5rCis3Nzc5OSAwMTFkOTY3YzFhMDQ5NjZiMGRlZjJkM2I3ZjQ5MDA1OGExYzlhYjg3IHJlbGVhc2UyNi1tYWludAorNzc4MDAgZjQxZDM1M2ViNjYwMjY2ZGZmNWFjNmNlNzc0NTc4MWNiNWZmMGM5MCBweTNrCis3NzgwMSA2YTQ3OTJjYmY0YzlmMzY5YTVlNGFjOGJlNWZkZTg3YWY5YzFlZjRlIHJlbGVhc2UzMS1tYWludAorNzc4MDIgMGJkNjE2ZGZjOTc3ODVhMzExNmQ4N2E3ZjU4YzAxNTQ4YTZmOWVjYyByZWxlYXNlMjYtbWFpbnQKKzc3ODAzIDdmYjc2NDRhMGJjNjhhNzU4OTg1NWY1OWEzNzVhYjVjOWY1ZTAyYTAgcHkzaworNzc4MDQgM2YzNmM5ZTZhNWFmN2YyNDQ1NjUwYTk3ODczZTUyNzgwM2MzMzg2NSByZWxlYXNlMzEtbWFpbnQKKzc3ODA1IDFhYmMyMTkxYmVhZjQ5NGM5M2E2YmFmZjMyNTRkOWQxYmQxM2NmMjIgcmVsZWFzZTI0LW1haW50Cis3NzgwNiBhNWU2OGFiNzg5NWJkODFjNjdmZDAwMTRkZjc1MjEyZTdmMjM1NWRjIGxlZ2FjeS10cnVuaworNzc4MDcgNjcxMGE0M2YxOTNmMGY4NDgwZDgzMWM5ZGU1ZmU3YzY4NGE2MmIxZSByZWxlYXNlMjYtbWFpbnQKKzc3ODA4IDRjZjVhZTcwY2IxMTllYjJiNGFiZWMyZWRkMjhjMDkwMDI3YWU0NTUgcHkzaworNzc4MDkgZjYwNjQ3NGEyMTBkMWNlOGFjM2M5MWU0YjhmZGY1OGZhYmM5ZWI2MCBsZWdhY3ktdHJ1bmsKKzc3ODEwIDI0NWYzNjI4MjExMzZjNzkwZjYwZGFjNzNiY2I2YzJmOWM5M2MyMzYgcHkzaworNzc4MTEgNjU4ZWI1YWU0NjE1ODEyNjAyNmRkY2E5ZGJhZTZmMWE0NTA4YmFiNSBsZWdhY3ktdHJ1bmsKKzc3ODEyIDgyYWQ3ODcxMWVkYjUyOWQzZWE1YjM4Y2JjNDYxNjQ4ZDRhY2NmYmEgbGVnYWN5LXRydW5rCis3NzgxMyAzMjE4NzBiNWQwMzBhZDA2NWM1ZDIwY2UxOWI4ZGFkNDY1ZjhjNTE0IHB5M2sKKzc3ODE0IGYyZjU5ZDdiNDYxNDYwY2EwNWU2MGI0MDE4OGFiZTBjNTBjYTJhZjcgcmVsZWFzZTI2LW1haW50Cis3NzgxNSA1NDcyNWUyZThhZGQwZTkxNDFlNmQ2MzE5MGJjNDZjNGYwNGMwYWY3IGxlZ2FjeS10cnVuaworNzc4MTggNWFhOTAyNDhhOTlmOGZhZWM3OWNlMTlkODkzNTQ5NDY3Yzg0MjZhYSBweTNrCis3NzgxOSAzOGI5MGZlMzQ2MjM3ZTlhOTNjMGJlZGQ3YjQ2MTEyMTE2NzY2ZDMyIHB5M2sKKzc3ODIwIDBkNGIwNTg5ZmJjNzIzMzI1ODAwZTZjYzQ0NTg3MzI3ZGZlNGM0ZTUgcmVsZWFzZTMxLW1haW50Cis3NzgyMSBjNTc5OThlM2JlMzNhZjkyZDFhMWI4ZDJhZGEzY2E5NGQ0N2UyNDM3IGxlZ2FjeS10cnVuaworNzc4MjIgM2NlODYwYjllNzMyMzdhNDJmOWQ4NTJmMTkxZGNmZWFlNzExZDJkYiByZWxlYXNlMjYtbWFpbnQKKzc3ODIzIDJiMDhkZTlhMWZhMDEyMDBmOTA5Y2U0MGYzYjMyMGM1MmJhZmM2Y2QgcHkzaworNzc4MjQgNmRlNjQ4OTZjNmY4ODE4MWUyMzkzMTdmYzRiYjIzNGFhZDU5MmJkOCByZWxlYXNlMzEtbWFpbnQKKzc3ODI1IDJkYWI0NzYwNmFiNjNjZGE4MmVmOWQzZjIyMWFjZjAxNWUxY2M2NGMgcHkzaworNzc4MjYgM2I2NTA2ODA4N2M2MmY1MDgyZjIzNjE0ZWZhNzg2ZDYwZWQ2ZmY4OCByZWxlYXNlMjYtbWFpbnQKKzc3ODI3IDIwZjBkYTMxZmEyY2Q3OWIzZDAxODkzMjBlYjc2YTVmYmI1MDJlMzQgcmVsZWFzZTMxLW1haW50Cis3NzgyOCA4NzkxMDFhMGI1Nzk3MDI1MWU5ZmQzNTE3OWRkM2MxNzY4NTJlODIxIGxlZ2FjeS10cnVuaworNzc4MzAgMjc1Y2Q5ZmUwNGYxYmY5NmQ1MWU4ODdhNDMwZWU5ZWMwMTczNTg5MCByZWxlYXNlMjYtbWFpbnQKKzc3ODMxIGRkZTIwYWU2N2Y5ZjMzYWIwOTBiOWY0NWIyMmNiN2I3OGRlODUzODYgcHkzaworNzc4MzIgOGVmMjUyM2MzYTVjNTcyMTAyM2MyOGEyYzdlYWFjYjI4MWFmNjIwMSByZWxlYXNlMzEtbWFpbnQKKzc3ODMzIGEyYzkxNzM3ODQxMWUyM2VhOTkxMGJiOGRmYjZmZTQzNmVmNjk4NTAgcmVsZWFzZTMxLW1haW50Cis3NzgzNCA2MDg1M2MxYWM1NjJkMjU5ODkwZGRmNDcyNThiNTVmZDRkYzFiZjgxIGxlZ2FjeS10cnVuaworNzc4MzUgZWJmNGYyMjZhZWVmOWRlYmZlNmJkNTQ4OGIzYWQ4ZjJhMjE3MTc3OSBweTNrCis3NzgzNiBkMDE0NjIzZWNmNzIwYzJkZjQ1MDhlYzFhYzI1Yzc1ZWUwYjgxNDYzIGxlZ2FjeS10cnVuaworNzc4MzcgZjIwZjhmYzZjZmFlMzQ0MWQwMTllOGJiZjQ2MTNiMDkxNDcyMTA3NCByZWxlYXNlMjYtbWFpbnQKKzc3ODM4IGQ2ZmIzNzhkNzY1YWY5MTVlM2ZiMGYyMTdmZTlkYmQyMTBiM2E5MjAgcHkzaworNzc4MzkgMTA5ZWMwNmJiY2YxYjgwNTExZjQ0NzE3OGE3YmE5NGFmNDUyODk2ZiByZWxlYXNlMzEtbWFpbnQKKzc3ODQwIGUwYWQxZjNjOTFhZjIyY2NhZTlkZDM2MDJhODlkZGRiNTE4YWMzOGQgcHkzaworNzc4NDEgYmZjMTNjZTYyZmFiMGRiNDJkMmU1OThjYzg3YzBmOTAyMjVhOGZhOCBsZWdhY3ktdHJ1bmsKKzc3ODQyIDYyOTVlMTYzMDNhNzE4M2Q2YzUzZWQxYmJlNjM3ZmFjNzgwMmVmMGUgbGVnYWN5LXRydW5rCis3Nzg0MyA1ODkzZWY5YTliODRiZjg4YjBhMWRmODk0OTZjZDMxODc2ZGU0MGMzIHB5M2sKKzc3ODQ0IGVmYzIwMzBjZTZiMTZkODhlYzM4YTEyMzFmMGExYjc0NGY4ODdjNzcgcmVsZWFzZTI2LW1haW50Cis3Nzg0NSA3NDUwZTAzYTUwMWRiYjliZjdjMWMyOGRhOGE5YTcyZmRmMDM3MmUyIHJlbGVhc2UzMS1tYWludAorNzc4NDYgODZiOGY0Y2I5MjNhYzMzOGQ4NDhiZWUwNzUyMWNlYWI1MzZkNDZjNiBsZWdhY3ktdHJ1bmsKKzc3ODQ3IGMwYzc2ZDQ4Y2QyYjhlYzE5ODJmYzk0MmY5ODQ5MDkwZDI3ZjFmZWMgcmVsZWFzZTI2LW1haW50Cis3Nzg0OCA1YzQ3Y2QxNzM2YzE2MmEwZDVhYjFjMzFkMjA1MzE4ODFhZjExMjdiIHB5M2sKKzc3ODQ5IGQzNGQzYjhmOWRlZTRlMTdhYjM5ZGVmZTU1NDhiZWU2NzBkZGZjOGQgcmVsZWFzZTMxLW1haW50Cis3Nzg1MCAzOTMzMmMwYWY4NTY1ZWE5NGJiMzk5MGNjZjVjNjU0YWUyMDI0NWMzIGxlZ2FjeS10cnVuaworNzc4NTEgODI0ZTVlY2Y5MDIyNWI1OWYzNjJkNjc5MWQ5ZWM0MmFlMjhjNWUxMSBsZWdhY3ktdHJ1bmsKKzc3ODUyIDkzNGQ0OTU4YTQxNTFhZmU1OTg2MzZhMGFjYjkyMDdhODcxNTdkYWMgcHkzaworNzc4NTMgZDc5YWE1YjY2OTcxYzlmMWMyOTBhZGUxNDMwZjUwMTVlYTM5YmM4ZSByZWxlYXNlMjYtbWFpbnQKKzc3ODU0IDAxOWY1MmFlMGZlOGNjYjlmYmNiZDRkM2E0OWM4OTM1ZTA4NWM4N2YgcmVsZWFzZTMxLW1haW50Cis3Nzg1NyAyYmY3MzU3ZDEyMmMyNmMxMzE5OGVkYjk4OGUxYTRmNTIyZjUzNGUxIHB5M2sKKzc3ODU4IGQyMWIwNWZmOTIwYWZhZjAyM2RhNjUyZWNmYTlkNGNkNmJlMDFlMWIgbGVnYWN5LXRydW5rCis3Nzg1OSA1YTdkN2VlYjg4YzExMzI1YTVkZDUzYzQ4MWU3NzI4Nzk5M2FlODc5IHB5M2sKKzc3ODYwIDA5MGZjMzljZTVlYzM1ZGQ1YTQyZjM2MWIwN2ZlZWU2MDcxODQ3OGEgcmVsZWFzZTMxLW1haW50Cis3Nzg2MSA5NzZlYzQ1ZDkwOTBhZjg0ZDkwZDQ4MmZhYTU0MTc1YTRlYWMwOGFmIHB5M2sKKzc3ODYyIDY5MDhiYTQ0NWQyYjM1YzM5MGQ4MTdmMjNlNzY5NDhjZDQ1MWM1ZWMgcHkzaworNzc4NjMgZjU2MjA3YjkzNmNjMzU5NDg1YjRhOGRlNmFlYTUxYzQ0MDBkNjQzMiByZWxlYXNlMzEtbWFpbnQKKzc3ODY0IGU5NTY1NzBiYzNiOWYwNGQ5Zjk1NDViYTdjZDM3ODk2ZmU3Y2MwMTggcmVsZWFzZTI2LW1haW50Cis3Nzg2NSBmYzVlYzdlMDQxNzczY2ZiNTJmMjM4MGI5YTRiMTU5NWJjMjdkN2RhIHJlbGVhc2UyNi1tYWludAorNzc4NjYgZmUwODZhYmI0YWViZTllNjA5MDhhNTVjZjUyMGVhMGRhNzJmNDBjMiBsZWdhY3ktdHJ1bmsKKzc3ODY3IDY4YzU2YzRiODYzMWNiZDljODc3MjczNDQ5YTVmNmVlMmQ2MWU5MTcgbGVnYWN5LXRydW5rCis3Nzg3MSBmMGJjNmQ4YWEyMWUwMjUzYzJkMmRkZWNmMDFlYjA4YWM3OTQxZmNhIGxlZ2FjeS10cnVuaworNzc4NzIgNzA5OGE0NmYwYjc1ZTVhYWNmYWY4MWQ2NWQ3MmUzNjEzYjAyMzUzMiByZWxlYXNlMjUtbWFpbnQKKzc3ODczIDM4YzljY2NiYmU1YTRhY2Q0MDA1MTU3YWNhMWY2Y2U4NTk0MjFmMGUgcmVsZWFzZTI1LW1haW50Cis3Nzg3NCBhMjA0Nzc0ZDljNzBiZGRjMmNmYjgwNzU3NWFkNWM0NmJiOGFhODc0IHJlbGVhc2UyNS1tYWludAorNzc4NzUgMmRkYmU2MmE2ODIwZmE1ZDdiNzIzNjU1ODI0OGM0NmIwOGU0NzA0MCBsZWdhY3ktdHJ1bmsKKzc3ODc2IDZlNmI1OTQxM2ExMzg5OWI3NWRmYjFiMGM5YTk3YjI4ZWM3NjIwZDcgcmVsZWFzZTI2LW1haW50Cis3Nzg3NyA1NjZkNWM5NTdjMTk3NTk3MjM1MzdhMzc5OTg3MDExYTFmNjk4ZDQ3IHB5M2sKKzc3ODc4IGNlMGQ0ZGM0ODhkMjkwNWRjYTE5MWZkM2VjNzQwZDUzNmMyMTdkYWYgcmVsZWFzZTMxLW1haW50Cis3Nzg3OSBmNjI4NDJjMjViZDgzM2ZkNjYxNzI4NmQwZjNjYjRhZGUxOTZmYzQyIGxlZ2FjeS10cnVuaworNzc4ODAgNmIzM2VhOTQ4ODk2NjE4MTFlMDlmNjI4MmY5OGZjYzRjZmZhMzcxMiByZWxlYXNlMjYtbWFpbnQKKzc3ODgxIGZkNTgwMWI4Mzg4ZDE1NzIyYTA0N2ZjZWQ0OGViN2UwNzBlNWU5MWEgcHkzaworNzc4ODIgOTgxYTM5ZjM1OTE0ZDQwYzJiNjRlNGMyMzBjYzU2YjcyY2FjMWM1NyByZWxlYXNlMzEtbWFpbnQKKzc3ODgzIDY5YmZmYTNjNzgyZTMyNTg5NGVmNTVmY2VhNjhmNTVlYTgwNThjMDggcHkzaworNzc4ODQgMWU0N2JkNmJiZWQ1NGY4NDRkZGQyYWMyY2Y5ZjBjMTJlZWEyZjUzOSBweTNrCis3Nzg4NSBhNzNiOTJkMWU5ZmQ1ODJlNzVhYTA2YjVmMzg0Zjg4OWFmYzE4NWM1IGxlZ2FjeS10cnVuaworNzc4ODYgMDUwOGVhZDE4ZDZmNWEwOTJlOWQ5NTBjNzJjMTQ2NzA1NTA5ZWVmMyBsZWdhY3ktdHJ1bmsKKzc3ODg3IDU2YTIyMDgyNzIwOWNiYjMzZDIwZDQ0NTEzNzk4YmMyOTgzY2EwYzUgbGVnYWN5LXRydW5rCis3Nzg4OCAxNTlkYTlhNDJmZWYxYzZhYjAyYjkyZmJjYzA2MzViZTAyNTQzNDRjIHB5M2sKKzc3ODg5IGJjYmI5MDQ4ZjQ4MDM3M2FmOWM4YjdiMzRjMWUzZmRlOTgxZTZjYTQgbGVnYWN5LXRydW5rCis3Nzg5MCA3NzEzMGYyZmU5NDRlNGFjZDEwZjAzNWI2Nzk0YTQyZDEyYjFlYTkxIGxlZ2FjeS10cnVuaworNzc4OTEgZWY1NjM5YzcxOTY0MzVjZTBiZTdlNGUzMTFmZDE1M2M1YmQ1YjMzZSByZWxlYXNlMjYtbWFpbnQKKzc3ODkyIDI0NjY1YTlkODgxYWRlMjU2OTdhNzRjNGQxOThkYTdlZGY0Nzg3NDQgbGVnYWN5LXRydW5rCis3Nzg5MyA3NWJiMmYxNjkxYzBlYTk4YjE3NmU2MzJmYjkwMTE0YjNiZmEzYzRmIHJlbGVhc2UyNi1tYWludAorNzc4OTQgMzhlMzA3ZmI4Mzk4NTZhYzk3MGVmYmMyYzcwY2ZmYTY3Yjg0ZDYxNyBweTNrCis3Nzg5NSAzMTFkYjdhNjhhODI5MzZkMTM0YWRkNzQ3NzY4MmRhZjdkZDMxYzcyIHB5M2sKKzc3ODk2IGM3ZTMyYjRlMzg3NGJiYmNlMDQ4Mzg4ZDVlZjM5YWRmY2IxMjI0NzUgcHkzaworNzc4OTcgZDg4N2RiNTAxYTIyMTFhYTM0ZDcxZTFiZjcwYTFmZjNlYTkzYTM1MSByZWxlYXNlMzEtbWFpbnQKKzc3ODk4IGZkMjRkZWRiYTU5ZWE1ZjBlMDEzY2QwOWM1ZTEwYTQ3MGI5NjZkMDUgbGVnYWN5LXRydW5rCis3Nzg5OSBiMmRiZjExZTJhYzRjZWYwNDVkMDNlYWM0NGU5YWIzMDU2OTQ5NWQ4IHJlbGVhc2UyNi1tYWludAorNzc5MDAgODYwNGU5YTI1N2NjOGZjYTg1MGRkYjYyZGI2NjYzNTk2M2FiYzllMiBweTNrCis3NzkwMSBjN2RjYmQ2NWMyMTM1MjNlMzQzNmQ1NmQ5ODdkZjA4Nzg1YWM0YzNhIHJlbGVhc2UzMS1tYWludAorNzc5MDIgYzk3OTU3ZjVjZGY5MjQ1YTJlOTQ4ODRhN2ZlMzYzMGYwOWU2ZjIwYSBsZWdhY3ktdHJ1bmsKKzc3OTEwIGFmNDk4YWIyYWZiNGE1ZDE2YWQ1ODZhOGE4YzI5NWQzNjk3Y2YwMjYgbGVnYWN5LXRydW5rCis3NzkxMSA2NTJlMGI3NDg4NWFjNzc4MTgyMGIwNzVkZGJmZTI4YjRkMmFjNDUwIGxlZ2FjeS10cnVuaworNzc5MTIgZDA1MTc3OWM1YmJkNmRhZDhmNDRlOWNmZTkzMGU4ZGY1MmVjNTRhYiBsZWdhY3ktdHJ1bmsKKzc3OTEzIDViYWRlYmRiNDM4Y2VmNzU1YmMwZDQ0NGI1NmE1ZDMyNjliZjg2N2UgbGVnYWN5LXRydW5rCis3NzkxNCA0Y2JmZjAxMzlmNWI4MDg5ZjhhMGE4Y2Q3MjFlNTNhOGQ3OGNmMTliIGxlZ2FjeS10cnVuaworNzc5MTUgNTI1YjZjNWQ1YjEyY2NmYTY2ZWY0MWZkZTY1MjBlY2IzZWQ4MjVhNyByZWxlYXNlMjYtbWFpbnQKKzc3OTE2IGMzN2Y5OWI1NGQ3Y2Y0NTNlOTJmNjM5NzljZWVhNDRiMGE4YWNhMTkgbGVnYWN5LXRydW5rCis3NzkxNyBjNzcwM2I2NDk1MTZiNzMwMzYwYmFiNGMxNjQzZDczZDVhMzNjOTNjIHJlbGVhc2UyNi1tYWludAorNzc5MTggY2QwMGE5NDE4NmM5MzQ5NzdhNTNhZmM0M2EyMTZmOTNhMjg2NzQ4MCBweTNrCis3NzkxOSBmM2YwOGVlODNjNTU4NjM4YWRkNGFjMjM1MzkyNDg1YjcyMTIwNzc2IGxlZ2FjeS10cnVuaworNzc5MjAgZGYyYjlhNmQyOGFlZjg1YjlhMmU1NjI2NGE4MzgwNmEzNjBhYTA2MiByZWxlYXNlMzEtbWFpbnQKKzc3OTIxIDk5MmNhZTI0NmEwYzdmYTdkYWRiMzFjOTY5NjlmMzk1ZmIxNmRlODMgbGVnYWN5LXRydW5rCis3NzkyMiA3Y2IxNGI1MjJmODFjYmM2YjBlOTk3OTMxY2YwZDdkZjk2MDVhZTRkIGxlZ2FjeS10cnVuaworNzc5MjMgNmZkMmI4MTQ3ZjJhMzdlNWFhY2FhNDA1OGRmNjQ0NjU2MGFiZDEyNCBweTNrCis3NzkyNCAwMGQ3ODM4ZWFmM2FkMzZlNzk5ZWY2MzMzNDNhMmMyMWQxMTlkYTRmIHJlbGVhc2UzMS1tYWludAorNzc5MjUgZDMxMjdmNmRlMTZjMDg3ZDkxZmZkZGFjZjFlNGZiN2E3MWFlZjNlMyBweTNrCis3NzkyNiA3Y2QxODJiZWU2MzBjMzM1MDMyZDljNDk2MTI4MDVjYmQyZGFkNTZmIHB5M2sKKzc3OTI3IDA4Y2Y0YjM1MzFjOTQ2NDhlMGVkODE2OWYwOGIzNmI3Yjc1MzAwMTIgcmVsZWFzZTMxLW1haW50Cis3NzkyOCAzODA5NDI4OTJkYzBlMGViYTM5ZWY0M2U5M2ZkMjU5ZGUzMmExM2E3IHB5M2sKKzc3OTI5IGI3ZmVjZTE1YmE1ZmI5ODc0ODU0ZGZmMzhkN2MwNTBhMzg5NTA5MTYgcmVsZWFzZTMxLW1haW50Cis3NzkzMCBiODg4ZGI3NjQ1YWE4Y2ZmMjdlZTY3ODcwMTNjMzcwOTBiNzRiNjVhIGxlZ2FjeS10cnVuaworNzc5MzEgZWI5ODdjOWRmMzc4ZmM0NmI5ODczYWEzMzk1Y2VkMzA5Y2Q1NTQ5NCByZWxlYXNlMjYtbWFpbnQKKzc3OTMyIGE4N2ZjZTAzYTM0ZGQyMDQ0OTc4YWFhMDZkOTE0YzcwMjY3MzIwZDggcHkzaworNzc5MzMgOTY3YmZkMzY5NzM2Njk3MzExM2UwNzAyYjBiZWM2NTg5MjFkMmVkMyByZWxlYXNlMzEtbWFpbnQKKzc3OTM0IDliMzUxY2I5ZWY5ODMzOTU0ZWQ0MGZkOTcxZDdkOTE3Nzk2ZDVmMWEgcHkzaworNzc5MzUgZWY4MTc4NDc3NTY3ZjdjMDRhOWNiMjdjZjdjNmFiMDRlN2I0NjIxMyBweTNrCis3NzkzNiBjY2M2ZTVkNWEzYjM4NzkwZDUyNzdmNzRhNTNjNGI5MmNmZWZmNmE3IGxlZ2FjeS10cnVuaworNzc5MzcgOTkzZjcwM2E2MWJhZTA4ZTkxMGNhN2E3Yjg2YTUyMDE4OGQwOGQ0NCBweTNrCis3NzkzOCAyYjFkNjY1ZTY2Mjg0Njg2YzA1Mjk5ZTAyYTcwZWUxMDI3OWFjOTg0IHJlbGVhc2UzMS1tYWludAorNzc5MzkgZGFiYjc3MzQ4NTAxYWExNmQyNmE2YzBiMDk5NmFjODA0MTlhY2U2YyBweTNrCis3Nzk0MCA1NGQwMjViMmY0NWE5ZjNlMTdlMDM2YzQ4NjY2ZWMwZGQzZTRkZTYzIHB5M2sKKzc3OTQxIDcyZWNmZmZlOWYwMjU2NmFjNzZiOWUwY2E0NjZlMTVhZmFhYzk0MTAgcHkzaworNzc5NDIgZmYwNDA4ODBkMWJlOTg0OTJhZGViZjc1OGFmOTdhZjk3YTJkMGZhNyBsZWdhY3ktdHJ1bmsKKzc3OTQzIDQ1ODdiMDYyYjhkMDY1Y2I3OTA2ZGQ0M2Q1MGQ4ODE5ODVkZGI3YTQgbGVnYWN5LXRydW5rCis3Nzk0NCBjZTRiODRjMDJlNWE3NTU2Yzg0ZmY5YzZlOGY4YjVmMWEzNDFkZTVkIGxlZ2FjeS10cnVuaworNzc5NDUgMzIzNDRjNWNmOTMyZWEzMjY4ODJhY2MxMWNmYmRjZGU1YzE2MzBjMSByZWxlYXNlMjYtbWFpbnQKKzc3OTQ2IDc0NDJkYjU0NzY0NWUyMGUzNGEwY2FjZWUzMmY3NDkzOGRjMzcxYzQgcHkzaworNzc5NDcgMGQ3ZTVlZGM0NTI2ODA4NzE5MjNjZWY3ODU1YjY5MTMxODEyMjk3MCByZWxlYXNlMzEtbWFpbnQKKzc3OTQ4IDhkODA1YzZjMmRiMzdiZTY3OWM1ZmMxMmNjYjQzZjI3NzIwNjQ3N2YgcHkzaworNzc5NDkgMzljOGI0NzgyNGM1MDkxNTQ2ODliYzYzOWE1ZGEzZGJmZTViODQzYSBsZWdhY3ktdHJ1bmsKKzc3OTUwIDFjN2ZlYWMwZDZkNjM4OGJjNmI2ZGEyZTFlY2I3NTU0ZTkwMWNjZjMgcHkzaworNzc5NTEgOGEyZWI3NzYxMjMwOTcwYWRhYWNkMTA5M2MyZDhhOTgzNzIxY2QxYiByZWxlYXNlMzEtbWFpbnQKKzc3OTUyIDRhZThiOWNhNDBmZmU3YWNhNzIwOWY2YWI0MDJkMjBmNGU3MmIxMzYgbGVnYWN5LXRydW5rCis3Nzk1NCBkNzVmODg3ZGE3NzJmODFlY2Q0NjJjYTZkNjcyNzYyZjEwZjFkMTBmIHJlbGVhc2UyNi1tYWludAorNzc5NTUgYTY0YTAxMzRlNjZjZTA4OWM1ZTE0MjI1MDk0ZDc3YTBhNTUzZDgzNSByZWxlYXNlMjYtbWFpbnQKKzc3OTU2IGE3YTc3MGJjZTkzZDI1ZjE0MGNlNjFlMjgzNjVkZmJlYmZjOWQ5N2UgbGVnYWN5LXRydW5rCis3Nzk1NyAzMGU0MjQ2ZWU4MDMyODUwOTE0ZDMxMmVhMjAwN2IwN2JjM2YyMjg1IGxlZ2FjeS10cnVuaworNzc5NTggZmJhMWM3OGYxMDRlOWMzOTc5Mzc5OWQ2ODViNGZmYmVkMjFhODU2YiBweTNrCis3Nzk1OSAzYzE4OGVkOGU1MjFlZTM3YzQxNGUxMzVmMGVjZmQyZDY5MDJjMmRhIGxlZ2FjeS10cnVuaworNzc5NjAgNzAzYTA0ZTI5Y2U2MzQyM2UxNmRhMWFmNDZmZTI1ZmVlMDJiZjBlOCBsZWdhY3ktdHJ1bmsKKzc3OTYxIGM3MjU0ZThiYzFkYmQxZmQ0MTc4MTUyYWM1YWU4MTUxN2ZiMGJjN2MgcmVsZWFzZTI2LW1haW50Cis3Nzk2MiAwYzJiMDg5ODY0M2UyOTZkMWVmZmY2MjNjYjU2NzY0MzUyZGVlZDFhIHB5M2sKKzc3OTYzIDUxNGI1NmVmZDg5YTI0MzlkODQ4ZGYyYTIzZGY0YzJhMmE2MTk1NzAgcmVsZWFzZTMxLW1haW50Cis3Nzk2NSBlZWI4YTk5Y2EwYzVhMmY4ZjE5M2U0NzcwZGFmMzZjM2UxY2ViNTkyIHB5M2sKKzc3OTY2IDJmODI5Mzk2YTU0ZTM3YmVkY2E5MjRiZGQwMDFhMGViNTViYzIxYjkgcmVsZWFzZTMxLW1haW50Cis3Nzk2NyBmNDQxNDIyZjZmNTU3NGM5NWNjNjA5ZjNlNmQ4M2U1YmRjZGQ4YWQ2IGxlZ2FjeS10cnVuaworNzc5NjggM2MwMjAzNDk5YWU1MzVjNWU1NTdkY2YxYzE0MDQ0NjA1OTgyMWM5NCBsZWdhY3ktdHJ1bmsKKzc3OTY5IGJiNmY4M2I5YmE0OWUwMmYyMGNjOWUwNWJmZWNiM2RkZDQxNjNkMTcgbGVnYWN5LXRydW5rCis3Nzk3MCA1NGU5NzU1ODJjNjU0YTg4NDY1NmU5ZTYwM2MyMWU4YTA3NGJiYzNkIGxlZ2FjeS10cnVuaworNzc5NzEgNDUxZWQzMmNmYzUwNjI0MjMzYjg5NTNlOGMxZTkwNTMyMWU2NThlMyByZWxlYXNlMjYtbWFpbnQKKzc3OTcyIDM3ZjYyNjRkMWFhMzM5ODkxYjM2ZDY4MTY0YjY2MWJiNWEzNDNiM2MgcHkzaworNzc5NzMgNGFhYjE0YWY1ZTJkZjcyMDVlMGI4M2NlMTg1MDYyMTE4NzgxNGM0NCBsZWdhY3ktdHJ1bmsKKzc3OTc0IDMyZTBmMWFhMzRiY2Y3MzEyMGNlYTVjNDFiNGQ2N2Y2NWUyMjczYWMgcmVsZWFzZTMxLW1haW50Cis3Nzk3NSA3ODEzYzQwOTQyZTk5NGE5NGEzYmI2NTYwY2U1YjBlZTc1MWNhMzM2IHJlbGVhc2UyNi1tYWludAorNzc5NzYgZWUwOGZiODM1YmYxMmFhODUzMDA5YTdiNzhiNTU0YmZhZmQ1ZTcxYiBweTNrCis3Nzk3NyAxNTE1MGNkOGZkMzY1MzQ5ZmM0YTRhODU1NTc1N2M4ZmJiNzI2ZDJkIHJlbGVhc2UzMS1tYWludAorNzc5NzkgMzA0Y2U4ZmNjMzJhMWY4MzA4MmZiZGY0NWQ2NTg3N2FlZTNlNjk0NSBsZWdhY3ktdHJ1bmsKKzc3OTgwIGRlNWZhOTI1ZGZlYTYxNTEzMjg3YjA2OTkzM2ViYTZmNTI3ZDM2ODQgbGVnYWN5LXRydW5rCis3Nzk4MSA4MWYyZWNkM2IxM2U4ZmRmMmM4MTczNzlkMDcxMDZiZjg3MGZlNzBjIHB5M2sKKzc3OTgyIGMxYTdjOTQ5YzExMDBkOGZhZGRlNTA1Y2RiNDY2ZmY5ZWRmMzk1MGQgcHkzaworNzc5ODMgNzZjZjYwZTJkMDA1Nzk2ZjYwMDJiNTgwN2Q0YjgxMDljOTRlOTIzMyBsZWdhY3ktdHJ1bmsKKzc3OTg0IGNmYTg3ZDQ2NmMwNDQ4MDNlMjA5MWI3ODZiZjQxMWZhN2E2YTk2M2QgcHkzaworNzc5ODUgYjVhZDIxOTBkY2U4YzBmNmVkZTliZmZmMGJjOGE2OTc2OTQ2YjVmYSBsZWdhY3ktdHJ1bmsKKzc3OTg2IGUxYmRlYmQxMzY4NTllZWRhMWFiOTM4YTBlYTBhYTZjZmQwNzQ0OGEgbGVnYWN5LXRydW5rCis3Nzk4NyA0MjZjYzVmMmFkMjQyMGEwYmI0OTYzMTAxNGQxZGZlMjgzNjBhNTBlIHB5M2sKKzc3OTg4IDU1NTA1ODQyZTk3MzllYTBlM2VlYjgyNjk4ZjAxMTdhYzVmMjczMjIgcmVsZWFzZTMxLW1haW50Cis3Nzk4OSA3YzkzMzY4MzAxMGRjYjI5YThlM2Y3ODIxMWIyNDczZWJkN2EyNDdiIGxlZ2FjeS10cnVuaworNzc5OTAgZWI1NTBlODM5NDYwOTc4ZjAwNjdlZmQ3Y2IxNmUyNDQ3NmZjZmUwMiByZWxlYXNlMjYtbWFpbnQKKzc3OTkxIDUxM2M0YTI2MDBhOGJlMDc2MzZkOGM5NDVjNTFhY2NiNDg1YTk4MzIgcHkzaworNzc5OTIgNWU1MTgzNWY4NTk1MTJlZDJjMjQ4YmMxMTM3MmYyZjEwMzExOTg5ZiBsZWdhY3ktdHJ1bmsKKzc3OTkzIDFjZjE2Y2U0MTVlYWUwNmU0NjE2OTkwYTZmNmIwNDNhZTRjZDI4OTcgcmVsZWFzZTI2LW1haW50Cis3Nzk5NCBiMTFiODAzMDI2OGRkYzNhMGVjMDQ3MDllNGRhMzJjM2JhNmZkZTExIHB5M2sKKzc3OTk1IDk3OWMzYjYyNTA4Mzk3YWM5ODc1ZTQ4MzdhYzM2NDc4ZTIyMTdjMDMgcHkzaworNzc5OTYgMTFiN2M4MTA4MTZiZWY0ODkyODdkYmYyNTM4YzEyNzBlZmJjN2I1ZSByZWxlYXNlMzEtbWFpbnQKKzc3OTk3IDMyYTM2MGIxM2ZhMzIwNmFlYjQ0NGZiNzk4OTIzNTc1Y2U0ZmQ3ZmEgbGVnYWN5LXRydW5rCis3Nzk5OCBjZDMxYTlkNjdlYjEzOWY1MzA2MWM0ODYwZjBiNWZkYTEyMjFjNzk4IHB5M2sKKzc3OTk5IDI3NDE2Y2U2MmFjNmIxMTQwYmZjMTUyZjA5OTg5YTg3ZDlkOGQ4NTYgbGVnYWN5LXRydW5rCis3ODAwMCBjMDNjOTNhYzgxNTFjMzMyMTdlMWZmZTAxYzViZWU0YmFiMGNlZDFlIHB5M2sKKzc4MDAxIDJhNzBjNzJiODdjN2YxMmY5ZDA5ZWFiODMyMTc4M2JkOTI2NjE0MjIgbGVnYWN5LXRydW5rCis3ODAwMiBlZGVhNDhiMTIwZTMzOWJlYjVkYmEyZjRhZWI5NTE5ZmY2N2IyY2RkIHB5M2sKKzc4MDAzIDNkZDkyMWExOTBiOGUxYzYwZjVjYjY2NjFiZjY4OTE0ZTdkMzQyYmMgbGVnYWN5LXRydW5rCis3ODAwNCA0MmFjOGNiMTNlZDBkZjgwM2VmMzdjYjNmYzcyNDg1MDNhMTBjN2I1IHB5M2sKKzc4MDA1IGExM2U4ZDFkMzc5OGM1MDE4MzNmZTZhNjYxNWJiNGU3M2I2YjgyOTkgbGVnYWN5LXRydW5rCis3ODAwNiBmZjBmY2Q1MTU0ZDMzMTY2N2Q1YTg1NjNkNGY5NWU5ODc3MmQzNjZhIHB5M2sKKzc4MDA3IGU5ZGJiY2Q0YWQ0MGFhN2Y4NjhjM2Y2YjExNWI3NjI1ZmU3OGFjZDYgbGVnYWN5LXRydW5rCis3ODAwOCA5NGQxNDgwYmM1NjMwNDFjMjJkMTVkNTQ4ODEwNmJjNWExNzhmMjEyIHB5M2sKKzc4MDA5IDc4ZTc5OTJmMjg1NzlmYTVkMzI1YzhjZWI3N2Y5MjVjODBlYjkxYTQgbGVnYWN5LXRydW5rCis3ODAxMCAwZDhmMjBlNDZjMWZhMTk0NzQ2YTJhMzMzNzBjNGU3ZmY0NTQ4YTJhIGxlZ2FjeS10cnVuaworNzgwMTEgNzhjODhiMDc3ODQzMWE3MGEyYzJiNjljZGMxYjM1MTJmYTY2NWVjYiBweTNrCis3ODAxMiA4ZTU5ZjlmNzg4ZjViMDRlNjA1NjUxZWViNzFhZGRlMTUyNTE2ZmZlIHJlbGVhc2UyNi1tYWludAorNzgwMTMgZmFiMzgwNjc0OTU5NmYzMTFhZjk0NTcyNjFmOTUzZTJkMzY1OWE4MyByZWxlYXNlMjYtbWFpbnQKKzc4MDE0IDJiOGY0NThiYmNmNThlOGQ3MWFmNmZiNGNjYWQ0YjQ2NWNlMTIxN2IgbGVnYWN5LXRydW5rCis3ODAxNSAxM2Y2OTVhYjkxMTFjYzY5ZGYxMDEzMTEyZTJiYWEzZDRiMjAwMjQ4IHJlbGVhc2UyNi1tYWludAorNzgwMTYgMGViNDIyNjI0ZGI1ZWZhM2JmODJhODgzYmQ1OGM3NzQwMzA4NmM4ZiBweTNrCis3ODAxNyA5Y2VlMDg3OTE1YWExZGIyZDg0MzdhMzY4Zjg5M2YwNTQ3Mjg2ZTFjIHJlbGVhc2UzMS1tYWludAorNzgwMTggNTBiZDljZDJlZDQ4MTQzYjdiODlkNDQzODczNjcyNjRkOTJjNTYwMCBsZWdhY3ktdHJ1bmsKKzc4MDE5IDcxZTA4OTI2NWIyODUzY2NiYjNmNTI0MDk5YjM3YmU4NzQwMzYzOWMgbGVnYWN5LXRydW5rCis3ODAyMCA0MTgwNTU3YjdhOWJiOWRkNTM0MWExOGFmMTk5Zjg0M2YxOTllNDZlIGxlZ2FjeS10cnVuaworNzgwMjEgZmU4MzJjNWQzMDY2YjE2MzI3ZDNkMmQyNTM2ODUzZWU1ZDE1ZGE1YiBsZWdhY3ktdHJ1bmsKKzc4MDIyIDVlOWFiNGMyNWI5MTRhOGI2Njg5MDgwOTY4MGY4OWVlY2YzZWU3NjggbGVnYWN5LXRydW5rCis3ODAyMyA4MmNlM2EwODU3MWM5NTI3YWZiNTg5OTMwZDA4N2UyYTQ0YmFiMTk2IHB5M2sKKzc4MDI0IDQwMDJmMWM0NmI4NjljZTM3ZDMwZGM2OWVlOGM1MGM5OGI5ZjYyN2EgbGVnYWN5LXRydW5rCis3ODAyNSA2M2IzYTY1YWZmNTJhOGUyZWZmODlkMjNlYTdmOTMzNTBiNmFhYzNmIHB5M2sKKzc4MDI2IGFkNjgzY2VkZmJiM2E5YzI5MjZhNmYyNmQ0MGQ0ZmYzYWE1YTIzOTAgcmVsZWFzZTI2LW1haW50Cis3ODAyNyAyMjJiNmQ4MGU3NjkyNDAwMWYyZjM4ZGZhMDM3MGZmOThhN2MxZjljIHJlbGVhc2UyNi1tYWludAorNzgwMjggZGQyMjMwYThjNDFkYTExN2UxNTZhYWMwOTU4Y2JkNDFjYThkOGRkOCBsZWdhY3ktdHJ1bmsKKzc4MDI5IGNhY2YyMDdmYmRlZDQzYzRiNDA2YzQyMGIyMWExYjliMTk0NTVjMGMgbGVnYWN5LXRydW5rCis3ODAzMCBlOWNiM2ZkMzQxZTk4MmU1MzMyNTI3YmQ5MTk5ODQ3MzU3N2Q3Y2ZhIGxlZ2FjeS10cnVuaworNzgwMzEgODdkOGI5NWY1Njc1NjA2MTUwY2UyZTZmZWMzNTk1OWEyMDZhMWM0ZSBsZWdhY3ktdHJ1bmsKKzc4MDMyIGQ3ZDQ4YTMwYWRmMzAzNGI4Yjg2Nzg2MjM1MTAwMzY2Y2YwN2M2MzAgbGVnYWN5LXRydW5rCis3ODAzMyA2MDlmYTE4YjI0YmZjYzZhYjg0YjllZTEzYjUwNDkyZTRkMmJhMTZkIGxlZ2FjeS10cnVuaworNzgwMzQgODFiMjMwNmU2YmYzMWJlM2RmNDFmZGRkYzA1YjdlZDYyYjUxZWE2OCBweTNrCis3ODAzNSBmMmM5MWJmNWI3Yjk2NjFlNjYwZjI4OTIzM2U4NGNiM2M4Y2JiZTY5IGxlZ2FjeS10cnVuaworNzgwMzYgNmNhOWQ5NmYxNDBlOTA0Mjk1MTRiYWNlMGE5NDk1NzAxYjA3NzFmZCBsZWdhY3ktdHJ1bmsKKzc4MDM3IGNjMzY3YzA3NzI0NThkM2VkYzA4MTY5NTA1MjUyM2ZlMjg5OGQxMWIgbGVnYWN5LXRydW5rCis3ODAzOCBlZjhmMWMyY2I1MWY5MGI1YmE2YWQ2OTdkNjY3ZDBkMWM1NGU0ODBhIGxlZ2FjeS10cnVuaworNzgwMzkgZTRhZTc5ZDUzZTIzN2EzNWU5NTdkMmU1NWQ1OWNiZjVkZWY3OGY4MyBsZWdhY3ktdHJ1bmsKKzc4MDQwIDg3Mzg3NTY1N2FkMGYzZjIyYmUyODQ5MTQxNjA2MGQwMjYzNTRiYjYgbGVnYWN5LXRydW5rCis3ODA0MSAyYmE3Njc3YmZhOTUxNDhiYzQ2ZTZkOGE0NGNjZmM2MGI0YWQ5YWQ3IGxlZ2FjeS10cnVuaworNzgwNDIgNzM0NjU3YjRiM2U1Y2Y4MDVhNmZhYTRjNDliZmYzYmI0MTI5Yzg5MiBsZWdhY3ktdHJ1bmsKKzc4MDQzIDAzYmFmNmRmMzJkMjY4ZTMxOWQwYmMxYzk4YWI5YzdmNGVkYWM0MzQgbGVnYWN5LXRydW5rCis3ODA0NCA1NTE0NGNhZTAyYmFiMWQ1MTM3ODczZjg5N2E1ZTg4ZWJlMjJmMzM5IHJlbGVhc2UyNi1tYWludAorNzgwNDUgMGI0MmUxYWE0YThiYmIzMGY1MDgxNDg0ZmY5MmQwYmQ5NDU0MDlkYiBweTNrCis3ODA0NiAyMjM1ODcwMGE0ZDBiYmI0NzcwNjU0ZmI1MTQzY2U1NWJiOWUzNzk3IGxlZ2FjeS10cnVuaworNzgwNDcgYTJhYjI2YzVmMDhiNWE0OGI3Mzc2ZWEyODBlN2YyYWE4YThkMTJlNyByZWxlYXNlMzEtbWFpbnQKKzc4MDQ4IDIxYTQ3MWMzNDRlM2EwNTlmYWRiYzlkZGYwZTFkYjA2YzAyNzQ0NDYgbGVnYWN5LXRydW5rCis3ODA0OSBiN2E1ZGYxNDA4NjllN2FkNjZhNjRhZTcyZmQ4MzI5NTFkY2UxYTIxIGxlZ2FjeS10cnVuaworNzgwNTAgYzU4ZWQyNTU0ZjVjODczNmJkMDEyMWExZGJlMDhlNTE0YjYwMzZiZCBsZWdhY3ktdHJ1bmsKKzc4MDUxIGVkZTBmMDVkYzZjMDgxNmYzNTc0NDIyZGMyZDNkODhlZWQ0OGVhMGUgbGVnYWN5LXRydW5rCis3ODA1MiBhNjZlYjhhNjNkNWI2YTg1OWNlYmRlZTQwYTA2ODAzNTI3Yjg5ZjFkIGxlZ2FjeS10cnVuaworNzgwNTMgMTAxMDFjZjg5ZDIwNGE4ZTdmNzQzODdhZjE3YzY0N2MwM2EwMTY5MCBsZWdhY3ktdHJ1bmsKKzc4MDU0IDdjMjRmZWZjMmNkNGIxYzM1YmUzNzVkNDQ5MGI1YTVkZDZiYTAxMzkgbGVnYWN5LXRydW5rCis3ODA1NSA2YjgyYTIzMjM1MDEyYTc0YTM3ZjA4Zjg0YjY2MjQxZTk4M2Y4NDBlIGxlZ2FjeS10cnVuaworNzgwNTYgZjRjNTFhZTE2N2M1NTJkNTM2MGNlNDFlODk4NGY0NWM0NjBlM2YwMiBsZWdhY3ktdHJ1bmsKKzc4MDU3IDgyMTRkNGZjMzIzNDM2NWI3NmQ2ZDNjNmNiNTc4ZDgzODNhMzk3YzAgcmVsZWFzZTI2LW1haW50Cis3ODA1OCBmZGVjMzBhZWI5M2YzYWYzN2JjZWNhZGJhNDIxYjgzN2UxZTA4YzIwIHB5M2sKKzc4MDU5IDUyYmI0MDMyODYzZTE2MjE3ZGEyNmEzMmQ5Nzc3Y2Y5NzViOTAzOGEgbGVnYWN5LXRydW5rCis3ODA2MCA5MzdlYjBmZTFmOWMxYzMzZTMyNjJhODJkYTIwZDM0MDJjNTk0ZWY4IHJlbGVhc2UzMS1tYWludAorNzgwNjEgM2QzNzUzMDExMTVkYjNjMDFiMTFiNDY1MWYyZWFkOGFjYTM2ZmUyYiBsZWdhY3ktdHJ1bmsKKzc4MDYyIDZhNmZjMGMwOTFjZGVmYzY1ZTk3NzM3ZGQ5NWZjMTkyZWQxYjUyNTcgcmVsZWFzZTI2LW1haW50Cis3ODA2MyA0YWNiYmI1YTQ4ZmNkMDFjY2MzYzgzOGQwYTU5Njg3ZDI0YTM3NmI3IHB5M2sKKzc4MDY0IGI0N2JjY2EwMDE1YWM2MGQ1MjI0OWE3OTBmM2EwYWU3NmM2NDk5MzQgcmVsZWFzZTMxLW1haW50Cis3ODA2NSBkZTUzYmFhNWFjN2RlOGIzMWI0YjZkNDI1MTQ5YWJhNjQ4ZDhiNDQ4IHJlbGVhc2UyNi1tYWludAorNzgwNjYgMzc3NmMzMWMwZTgyMDhiYTcwNTNjZDAzZWRhOTAyOWRhMjg5YmZmNCBweTNrCis3ODA2NyBjOTY0NTdkZjQwZTBkOWNhYmEzMDk3ZmE5NzU3OGY0NGZmYjdlNTU5IHJlbGVhc2UyNi1tYWludAorNzgwNjggNGU0MGEyOTExNzUwOTMxYWUwMzNmNzI3MzVlY2Y3MTkyYTViZTJhYyByZWxlYXNlMzEtbWFpbnQKKzc4MDY5IDEwZjE5ZDFjM2I3NzE4YmY5ZjU4NzMyYWFhMTQ3YThlM2E0NjdjNjYgcmVsZWFzZTI2LW1haW50Cis3ODA3MCA3OWMwMjJkNzcyMTNjMjRhMjJjZDBjZGUxM2YzZDVjMDBmMWEwMTM3IHJlbGVhc2UyNi1tYWludAorNzgwNzEgY2E2N2MzN2NkMjZkYzAwYjg4ZTBmYzJhYTlmOTE5N2U1ZTZkZDQ4NSByZWxlYXNlMjYtbWFpbnQKKzc4MDcyIDE5N2YyNDNkZGFiNTNlODg4OTBhNWJmYjQxZjI5NmQ5MjdkODI1MGYgcmVsZWFzZTI2LW1haW50Cis3ODA3MyBiMGM3NDNjN2Q3ZWVhZjBiNGM0YjFhMDUzMjY3NTljNzI1OGY2OTIxIHB5M2sKKzc4MDc0IDdkMDdkYTJiN2RjYWI3M2YwYmUzNjY0ODYxMzAyNDFhZjg3MzZiY2UgcmVsZWFzZTMxLW1haW50Cis3ODA3NSBiNmRmNzVjMTdlMDJkYzA5MDYxYmM1Yjk2Njk3ODRjODdmMGUzMjM1IGxlZ2FjeS10cnVuaworNzgwNzYgNTY5NDQ0NGZkNWQyZTlmZTdlNmNmMWUzNWU3NDY0NGE5YTc3YmFkMSBsZWdhY3ktdHJ1bmsKKzc4MDc3IDUzZjgzZjIwMmE2ZDY4NDY5OGQxNGRkM2I3NGM4OTQwMWY5NmNkZTMgbGVnYWN5LXRydW5rCis3ODA3OCA5MTg5ODAzZjgzNDA3ODYzZDQ2OWE2OWRmMDM5NzNhYjMzNzM4OTViIGxlZ2FjeS10cnVuaworNzgwNzkgYjExNmZmYmNkMWIwNzExOWExNjQxNjdlNThjNTI5YTZhNWZkMGQ5NCBsZWdhY3ktdHJ1bmsKKzc4MDgwIGQ1MzBhNzJiNDZmYzgyYjljODhhMDYyNGI4ZjljMjNhZjNhMWYzZjMgbGVnYWN5LXRydW5rCis3ODA4MSA4N2NkODkzY2I4YmEyNmQyNTM5OWFlM2EyYmY5M2M5ODA0YWU3MGY3IGxlZ2FjeS10cnVuaworNzgwODIgMjE4MDRkYzdhZmY0YjQxOWIwZWVkZWIzZmQwMDY1YjA2Yjg3Y2ZlMCBsZWdhY3ktdHJ1bmsKKzc4MDgzIGRmZDQ2YTVkYjg3MmJlYmZkZjVjMTVhNjU4NWY0NmI2MzMzZjcwNjcgcmVsZWFzZTI2LW1haW50Cis3ODA4NCAwY2ZlODM2YzRhOGQwNjEwNGIyMGUzYzc0ZGNiOTEyOGE5YzI5YWJkIHJlbGVhc2UyNi1tYWludAorNzgwODUgNmE4OTJjZWRmM2E0M2FmMjUwM2UwOGViN2UyMWI1MzUwODZjNDc2YiBsZWdhY3ktdHJ1bmsKKzc4MDg2IDg2YTg0YmUzM2U2YWE4NmMzYzdkZTJlMTZmYmVlZmMzMzg2NjA0ZDAgbGVnYWN5LXRydW5rCis3ODA4NyAxYmU3MTE0NDczZWI1YTlmZTcxOGRkNGQ5ZWM0ZDdlMDExYmQyOWE2IHB5M2sKKzc4MDg4IGJkNWVlMTNmZGRhMWVjZDgwNTk1NGM2MWM0ZmY3M2IwNmRiNDNlYTYgbGVnYWN5LXRydW5rCis3ODA4OSA1N2ZmNzcwMmVjNzRlN2I4ZmJiMzA1Y2RmMDE3YzRkM2I2NjYwYTM5IHJlbGVhc2UyNi1tYWludAorNzgwOTAgMGNmOTdhZDJmZDFmNjFhOGRmNWI1YWEyNmNiOWEyMWE5N2E5OTBhMyBweTNrCis3ODA5MSA2NDAwNGE5ODYyZTQ3MjFkNTg2ODQxYjYwMjM3ZTAzODkwNGUxZjlmIGxlZ2FjeS10cnVuaworNzgwOTIgODBlMDIxZmUzNGVkN2IzYjkwNDlmMmQ0OTk3NDUwYzU3ODJhNjFmNyByZWxlYXNlMzEtbWFpbnQKKzc4MDkzIDcwZTExNWMzNGY5NzA4YTQyMWYxYzhjZjQxNmRmMjYwY2EyNTc0ZjQgbGVnYWN5LXRydW5rCis3ODA5NCAzZDk0YjFlNzc5YzU4MjkyYjU2M2ZmNmExMTQ4NWZmYjQ5Y2YzOWIyIGxlZ2FjeS10cnVuaworNzgwOTUgYjgzNGM4ZWU4ZTdjOTJkZGI0NDBhZWRjYmM4NmQ5ZmRiNDIxOTA0OSBweTNrCis3ODA5NiBmMTA4ZjYyNzU4NTU1Njc0NzQ3YmZiOWUyMTU0NjRkNjg0YmM4NmJjIHJlbGVhc2UyNi1tYWludAorNzgwOTcgYTI4MDg0NGI2OGY0ODU1NGNmODYwYzY0ODdkOWIwNTUzNjI3ODFjNCBsZWdhY3ktdHJ1bmsKKzc4MDk4IGZhY2E5N2M1ZjAzODA0NjExNjQ2M2I2MzFiNjZkYTBjNzg0MTA2Y2YgcHkzaworNzgwOTkgMTNmY2FhNzkzMjRiYjg1MTRlMmMzYmE4Y2IxYTEyYWI1NWM0NGQ5YyBsZWdhY3ktdHJ1bmsKKzc4MTAwIDNmMzkwZjQ4YjExMzE0ZWRhNDZlY2Y0ZjRkNDZhZGY4MDljYWM2MjEgcHkzaworNzgxMDEgYzhjMGFhMWZkNGE2ZDUyOWUwMzA3NzU2YmQ3ZDI0MTQ2OGQyMGJkOSBsZWdhY3ktdHJ1bmsKKzc4MTAyIGM4NmQ5M2FlY2Q3YTI1MDJkOWI3NTYzNzViZDVmMDdlMTY5Yjc1ZTUgbGVnYWN5LXRydW5rCis3ODEwMyBkODRkYWNkYjJkMTI1MjQ5ODBhNjkxZTU0ODIyMmM3MmI4Y2IzYmY2IGxlZ2FjeS10cnVuaworNzgxMDQgNjAwYWI5Y2VlNDAzNTBlNjNmYzA0MmNlMmNjNmQ2MWQ1Y2U3MmU4YiBsZWdhY3ktdHJ1bmsKKzc4MTA1IDRiY2Y5NjgyOWQxYTNkODk3ZjQxZTdkYTVlNTZlMTFjNDgxMTM2MGUgbGVnYWN5LXRydW5rCis3ODEwNiA5MzY3NmFlOTdjNjhiNTNlNmEwOTY4YzM0MTU5OWEwYWZlMzVjZmZhIGxlZ2FjeS10cnVuaworNzgxMDcgNDg0ZGExM2YxMjUzNTNjN2M4NDllNmQwZjMxMmMxZThiZmY0ZWQ0NSBsZWdhY3ktdHJ1bmsKKzc4MTA4IGRiZjAzZWI3YzEyZWQ0MjBjZTY4ZDQ3YTljMTdlMTdmZTRjODRjYjggbGVnYWN5LXRydW5rCis3ODEwOSBhOThiMTM2MDhkMjNhNDVkYjA2MjZlYTI5OTdiYmI4Njk4MzNhYTU1IGxlZ2FjeS10cnVuaworNzgxMTAgZTdlODliNDU4MzQxOGI5NDFkNTI5OWNmODg5ZDkyN2UxYWMxOTA4ZiBweTNrCis3ODExMSAzN2U4OWRlYmVmNmEzZGU0OTcwZmE0YjM5NmRmMzgwNjNmZGZkYzg4IHJlbGVhc2UzMS1tYWludAorNzgxMTIgNzU4OTYwNWRhZWQxMDQyYWY5OTMyNTE0Y2NkOGRmYjk3YzlkYWEyZiBsZWdhY3ktdHJ1bmsKKzc4MTEzIGE5MWZmYzk2NDRlYjllNmYyNjg3MjE0YTc1YTQwN2FhNjhjOTlhYTAgbGVnYWN5LXRydW5rCis3ODExNCA0N2ZhNTRkYWIzOGNhNzBiZDYzYTQ1YWQ5ZGIwOTM4YzczNWM1NjBmIGxlZ2FjeS10cnVuaworNzgxMTUgNGUwZGI0NDU2NGIxNzNkMDlmOGE3YTVjMDEyOGE0NDFjYmNhZWI0MCBsZWdhY3ktdHJ1bmsKKzc4MTE2IGY0OGM0NzFhYzhjOWUwZTk4YmJhMTY4ZjEzYTMxNzY0ZjY2NzgyMWIgbGVnYWN5LXRydW5rCis3ODExNyA5NmMyNjcwM2I0OTBhNGI1Nzk3YzIzMjUzNDg0MzE2NzBmZWY0OGExIGxlZ2FjeS10cnVuaworNzgxMTggOGJlOGQ1ZGI5NmEyNWNhZDhlOWMyNjRhNjNkZWNkNmY5ZjNjN2Q4NCBweTNrCis3ODExOSA1OWUxNjJiOWYyMjU0M2Y3NDhiNTgyZTFlMjI2ZjQ2YTlkNzViYzMxIGxlZ2FjeS10cnVuaworNzgxMjAgM2VlZjM5ZTdiNzRmMzIyOTRjODFlNjFkZWM4YWQxNzM2OGQ4MTA4NyBweTNrCis3ODEyMSBlNWM1NjQ2NTkyMDM3MzZiMTM0Mzg4OWU1YzJkYTAxMjRkZTAzODgwIHB5M2sKKzc4MTIzIGVhOGNjMTM5NTFiMGJiYTVjNDgyMGNjZDNhYmZjMTNlYjliNTNkZmQgcHkzaworNzgxMjQgNmE2ZWRkYjQ1OTk2N2IxMDAwZTY0NzA5ZDBkMmYyYzdhZTQ1YWE5ZSByZWxlYXNlMzEtbWFpbnQKKzc4MTI1IDI2NTI4NTkxMjE3Y2YzNzNlMzU2ZDU4MGZmYjE3ZjQxZWRkMDE0MzIgbGVnYWN5LXRydW5rCis3ODEyNiBiZGJlMTM3OWYzZWFmN2YyZmRjOTZjNjFmMTA4YjJmMzFhNTk5MWU0IHB5M2sKKzc4MTMwIDBiZWI3YzgyOTRjN2Y0MzljMjQzOGQyMGQ1OGM1MzMxOWYxY2VmODUgbGVnYWN5LXRydW5rCis3ODEzMSAwYWY2OTlmMDllZTNlMmNkMDViNDhiZDhkYzNkZGVmNzRkN2M1ZTEwIGxlZ2FjeS10cnVuaworNzgxMzIgNjFkMTcwMWQ5YzY2MmVjYjM5NDQyODQzMjQxM2YxYTkxODc4NWM5NiBsZWdhY3ktdHJ1bmsKKzc4MTMzIDExNjU5NTk0Zjk4MjI1ZWVlMzUxMDQ0ZjE3MjE1OTYxYjBkYTA3NmIgcHkzaworNzgxMzQgYzUyOWU1MWY4Mzc3NThkYmQ1YTE5ZmFkODczNjVhNDFlNzIwYzAwNCBweTNrCis3ODEzNSA1ZGNlY2FjMWM4ZDY3NWVjMDE4MzRmMzg0OWY3NDQ0YjdkNGNiYzk3IHB5M2sKKzc4MTM2IGQxZTJmNzk0ZDAyMDY0MjVmZDlmNzdhYzVlZTBiMjQ2MDBiMjJjOTQgbGVnYWN5LXRydW5rCis3ODEzNyAxNzJmZGIxZDczMzdhZGI0YmM4YzEwZjQ3OTUyNWU4YTFkNjNkZDAzIGxlZ2FjeS10cnVuaworNzgxMzggYzJiZGJkOTM1YjVlNTBjYjY3YjBjN2JiYjJhNDgxYjM5NmJlNTE1ZSByZWxlYXNlMjYtbWFpbnQKKzc4MTM5IGE3MWRlYTg5ODc3ZDg5NmY2NjA5MGY3ZDFmYmY4MjY0ZmU0N2QzMWMgcHkzaworNzgxNDAgNjg3Y2E0YjM3NGY0Yzc1NjhiNDA5NjIxOTIyYzllMmY2ZTNkNjYyOCByZWxlYXNlMzEtbWFpbnQKKzc4MTQxIGM0NWRjYmRjYWI4NzM2MmRhYzZiNGQ3Y2MyNjA5ODhiZGE4YjRlNmEgbGVnYWN5LXRydW5rCis3ODE0MiBiZmQ0Nzk4YjFmNzdlMDBkYjZhNzlkODEzYzZiNzYzMzk1NjZjNzRiIGxlZ2FjeS10cnVuaworNzgxNDMgMTRlZTNkNGM3YmQ1Yzg1NGUzYjY2M2M0ZGJiMDNmNDE0NzRjNjA5NSByZWxlYXNlMjYtbWFpbnQKKzc4MTQ0IDgzYzhkZmI1NDQyMTIwZWJlMWQ5OGNiOGZhMTI4MTIzOTM0ZWE1ZDEgcHkzaworNzgxNDUgZmIwOTgwZTFhNGNlNDJmNmMzNDM0NGVkNWMyNGQxOTg0M2UzYzNiMiBweTNrCis3ODE0NiA1ZWZmYmQ1NTIxZTNmNmVmNTdhNTEyNmQzMzJkNzQwN2VkMGRiNTY2IHJlbGVhc2UzMS1tYWludAorNzgxNDcgMjM2YWI0OGVkZDBjZWE0OTg4OGQzOTgwODY5YjllNDI1ZGU1YmM1MiByZWxlYXNlMjYtbWFpbnQKKzc4MTQ4IDJiOWIyMWI4MzBkOTI0NjAzNWRkOGQ2Mzc0ODRjMDVjZThiYTg2ZTQgbGVnYWN5LXRydW5rCis3ODE0OSA0NzEyMzkxNWVhMjBkOTBkZmZhMzc3ZmJhZjQ2ZjBlODMwY2E3ZDY4IHB5M2sKKzc4MTUwIDNiZDY1YjM0NmJmY2ExNjc3OGViNjE4MDk0YTMxM2Y4OTI4ZGU2OTggbGVnYWN5LXRydW5rCis3ODE1MSA2YWU1MGMyYzBhYjlmM2I4MTQ4ODUwNDNlNTI0NGRjNTI3OGU5YjRlIHJlbGVhc2UyNi1tYWludAorNzgxNTIgZjE1NmI1ZTczYjBkMWExMzM5MzVmMTVmNzllYmM5MTRhZmE2MDQ4MCBweTNrCis3ODE1MyA4Y2YwN2E2NWQ2Zjg1NThmOWNiNDc1MWI2YzU0MTU1ZDY1NDc2MzExIHJlbGVhc2UzMS1tYWludAorNzgxNTQgODJhYTk2OGE5NTA0YTZiMzUyMzU3ZjgzOTcxMWRiMmU0MmYwMGIyNSBsZWdhY3ktdHJ1bmsKKzc4MTU1IDMzNDUyZDk1MzAxZjE2MDczNzVlZTNlMzY4YWM0YzcxZWJiZWUwNzUgcmVsZWFzZTI2LW1haW50Cis3ODE1NiA1OTAyOTQ0OTVlNWYyZDMwNjE2MDhjMTU0NzA1YzRiNTU5N2VkZGU4IHB5M2sKKzc4MTU3IDM3ODhhYjI4Y2NhZDcwZTZlNDg4OTM1YjhjMTQzNmU4MGE0ZjZlMGMgcmVsZWFzZTMxLW1haW50Cis3ODE1OCA1NmZlMTY2OThlZTgyODhhYTEwNDFlM2ExNzVkMDJkZjlhM2UzOTAyIGxlZ2FjeS10cnVuaworNzgxNTkgN2IxNjJjNmE5MzQ0ZmMwMmRkOTY1MjRlNjVlNWU5ZTllMTk3YWNlOSBweTNrCis3ODE2MCA2ZjY5YjhmYzJiYTNlZjY4YTcwZDViNWMyYmU5ODZlOWQxMmU3NDY4IHB5M2sKKzc4MTYxIDEyMThhMmEyMjUzY2NhMzQzYWE3YzAxMmVlMGE5MDY1MTk3NzVlNDQgcmVsZWFzZTMxLW1haW50Cis3ODE2MiA2OTRjOTdhMmNkZGMxNmRiMzFlZTMyY2MyZWNkNTRjYWI0ZDc5ZTVmIGxlZ2FjeS10cnVuaworNzgxNjMgMjI5NmM1ZTZhZDBkZTY2YmM2NDM1ZTc3NGZmMWU5MGJlMGNiN2QxYSByZWxlYXNlMjYtbWFpbnQKKzc4MTY0IDgxMjk0NjJjYWEzMDdhNTg5MWM2OGY3MGJmMjRkOGFhMzI0ZGU5M2IgcHkzaworNzgxNjUgNTM3YjY2N2FkNDUwMDNjOGQ2NjdkNmYwYzgwNzgyZTJmNmE1MWE4YSByZWxlYXNlMzEtbWFpbnQKKzc4MTY2IGIxYzlkNmJjZjNkNGM4NDJjMDY5NzBjYjgxOWEwNzI2YTViM2I2NmQgbGVnYWN5LXRydW5rCis3ODE2NyA2YWNiOWFmYzc1Y2RlNGFjZDg2MDhmM2EzN2MyMTk0ZWZkM2Q1MGY5IHB5M2sKKzc4MTY4IDMzNDdiNGVlYWI0MDRlN2Q5MzMwN2QzOThmZmNkZjg2NjZjZTFiZWYgcmVsZWFzZTI2LW1haW50Cis3ODE2OSAyNjNhOGY5MDU3OGQwNmZkZjc1MWI3M2ExOGZhZDM3YzU5YjJhZDQyIHJlbGVhc2UzMS1tYWludAorNzgxNzIgZDQzNzQwMjQ3NTAzMzJiZDA5YTE3ZjE0YWY3YTkzNTQ5MjQ4ZGFhMiBweTNrCis3ODE3MyAzMmE0ZWUyNDgwNjk0MzRlMDhmODVmYTMwOTJmZGVjYTA2NThhOGIyIHB5M2sKKzc4MTc0IDQxNTc5MjAwN2ZmOWVlYjM3ZTY4MzA1NjhiN2JkZTQ5NjhhNDExNjEgcmVsZWFzZTMxLW1haW50Cis3ODE3NiA4YzRjMzkxY2FhZWJmNTc2MTczNDRmOWNmZDI1YTM0N2I1YjM5OThiIGxlZ2FjeS10cnVuaworNzgxNzcgYTMzNzVhMGZmZTJlNDU5MDQzZWUyMTUxNjM0OTkxMDk3MmZlOGUxOCByZWxlYXNlMjYtbWFpbnQKKzc4MTc4IDcwZjQ1NmJmNzYzODdkNDk5MDJkMzlhZmZmMjI5YTA0NDhkMDQ0MTggcHkzaworNzgxNzkgZTBlYjk3NzNhZjgxODM0ZDNkNTk4YTM2MTM0MjU4MjlkMWE1NzQyNiByZWxlYXNlMzEtbWFpbnQKKzc4MTgwIGE3OTZmMjhhY2VlMmU3NWRiMTk3YzAyNGIzMDMwYjc0YzVlYjgzYTIgcHkzaworNzgxODEgNjhiZTQ0NDI4OTA5ZWQzNGM3ZmY2MjBmOTJiZWM4NDU1NTkwOTAxMSByZWxlYXNlMzEtbWFpbnQKKzc4MTgyIGRjMTMwNGYwNDVhNjBlNTI0NjQ5NjA3MGE3Zjc2MGI1NTIxMzBiOTEgbGVnYWN5LXRydW5rCis3ODE4MyBhMGVmY2Y5YjZlZGQ1NDJlNmU1ZTY3YWZjYTFkYmQ0ZGZlZjc4NTRiIGxlZ2FjeS10cnVuaworNzgxODQgMjAyMmVkZThjYTBjNjFmNDRmZGY0NGMwMTZlYjAyNzg1ZjMxNDJmYSBsZWdhY3ktdHJ1bmsKKzc4MTg1IDkwMWZjYWFlNTI3NWNkODQ0ZWM1Yjc4N2RjYzk2MTAxN2M3OTkxOTcgcHkzaworNzgxODYgODc1NmMzZGU2ZDI0YjhlMjI5ZTQ5M2UwYzE2ZTVlNDNiMmEwYTZjNSByZWxlYXNlMjYtbWFpbnQKKzc4MTg3IGQyOTFiODMwNDJmYjZjOThlMWE0YzQwYmQyYjU1ZDgyOThjYmRiOWMgcmVsZWFzZTMxLW1haW50Cis3ODE4OCAzMWY1OGQ5YzcwMTZlYzhmOTZkMDY1MTlmZjc4ZDdkNDhmNGZlYmJiIGxlZ2FjeS10cnVuaworNzgxODkgNWU2ZWRiNGU3NmY1ODM3MDExMGM2MDBhMDAzOTFkMTJmNGE1ODU4OCBsZWdhY3ktdHJ1bmsKKzc4MTkwIDZiMjliOWY5NjgwNTk5Y2I2NTYxZTBmNzkwOTMxMTM0YTY0ZmZlZWIgcmVsZWFzZTI2LW1haW50Cis3ODE5MSBlZjc0NzY0YTYzMjA5ODM2MTA0MzFiMzE2MTRiNWEzZTY0NTNlOGRmIHJlbGVhc2UyNi1tYWludAorNzgxOTIgM2JhYWJkMWQ2OGEyODZmNDMzYWRkYjQyMmQ1ZmYzMGQwYTZiMGVhNyBweTNrCis3ODE5MyAwMjkzMTgyNDY5YTc3MzRkZDMyZTQ4ZDhhYmYzZTRjYjRkODU5YTI0IHJlbGVhc2UzMS1tYWludAorNzgxOTQgNDExYjMyOTkzOGRjNGNhZDc4MTQxMzgwZjI0MzhhYzUxNDdiMWZiNSBsZWdhY3ktdHJ1bmsKKzc4MTk1IDE3MjVmYmFiZTczYmQ0MDVhMDg1MjBhYzc3ODM5OGY2Nzk0NDM0NzEgcmVsZWFzZTI2LW1haW50Cis3ODE5NiA3YWU0M2MwNTExNmQzZjkzNmEzYzIyZWY4YTQ0M2Y5NGYyOTFhMGQ3IHB5M2sKKzc4MTk3IDYzNzRlMTg1OTM0NjQxN2Q1MjUwOTg2Nzc4YWQ2ZTQ1NGUyYzI5YTQgcmVsZWFzZTMxLW1haW50Cis3ODE5OCBiNjQxYzFhYTY0M2UxOTI4Y2E5MDRiZDA3ZjMxNDA0MTY2YTE2Y2YyIGxlZ2FjeS10cnVuaworNzgxOTkgNDY1YzA0N2VmMzExYzBjYzQwZjBlN2QzYmFhNTJlYTAzNzczOWM4ZSByZWxlYXNlMjYtbWFpbnQKKzc4MjAwIDc3ZDg1OTAyNjkxOWNlNGFiZThlMjM2ZGEzZWZkODhjYjk4Y2JhOGEgcHkzaworNzgyMDEgNGY2YzFiODI3N2ViNDM2ZWNiYmRhNTA4MDY0OGY3ZTIyNjA5YmI4YyByZWxlYXNlMzEtbWFpbnQKKzc4MjAyIDdhNTZmMmNhZTNlY2Q3ZGEyNzYyZmQ4ODk2MjgyZDViN2E5NjlkNjAgbGVnYWN5LXRydW5rCis3ODIwMyAxNWIwNDlmYWMxOTFhNDA2NWNiMDg2YzhjNzc5NTc3ZjkxOTU1ZmI2IHJlbGVhc2UyNi1tYWludAorNzgyMDQgZDRmYmI3ZTUzYzkyOTJiOTRkZmE4MmY1ZTRkMjM1ZDllN2E5OWQzMSBweTNrCis3ODIwNSBiNzMyNmY5YjU5OWI3MGYzNTFlNzlhYzEzNGIwMjFiNGY4ODBhYjI4IHJlbGVhc2UzMS1tYWludAorNzgyMDYgZWJmZDBlYWViZTI3MTE4ZjI5YTRmN2FiZTc4ODhjNDIwZTJlNDU5MSBsZWdhY3ktdHJ1bmsKKzc4MjA3IGJmYjNlODRmODVmZmY1OWVmMzRjODk1ZTJiZDkyMTgyNWM0NWExNjIgbGVnYWN5LXRydW5rCis3ODIwOCBlZWNmMWJlZjA1MmQzZGE1MTEyM2QyODViODNkMThiNGM0MWE1ZTE3IHJlbGVhc2UyNi1tYWludAorNzgyMDkgNThiMzBkYmNmOTljNDhkNmI4NWU3NTMzYmUwYmQwYTA2NzIzYTc0NCBweTNrCis3ODIxMCBhNjcxZWUzYmJjYjQ5OGU3NDk0NjNlZjRkODkzN2I3NzQ2OGNkODE5IHJlbGVhc2UzMS1tYWludAorNzgyMTEgMGRiZTI5MzBlZTNmMGRkMjU5MGQ1MGIzMzRiZDMxMDhhMDU1OWYzZCBsZWdhY3ktdHJ1bmsKKzc4MjEyIGEyNzI0NDRmMGVmMGM5MDIyZjM3ZWM4NmZkNDU3ZWZmNWM2MmRkOGIgcHkzaworNzgyMTMgMjI1MzU1N2Q2ZmEyZmU2MTEyZTgzYzIzNWQ0OTA5NWM3OTAyYjk1MiBsZWdhY3ktdHJ1bmsKKzc4MjE0IDRjMGJlMzdiNDZiMDM2OGMwM2I0ZDdiZWJlYmM4Y2I2NzZjMGFlOTEgcHkzaworNzgyMTUgZGZjNjdhZDRkY2VlNTdiNjY2MjdjYjBmOGQ4ZGQ0MTFhNjQyZGRiNSBsZWdhY3ktdHJ1bmsKKzc4MjE2IDhmMDJjNTRhYzJhYzhhNzBmZTcxMmQ5MGNiZTMwYmZjNzU0NzBiMmEgbGVnYWN5LXRydW5rCis3ODIxNyBlM2QwNzEyMzNiZWZjMGFlMTUzNjJiNzUzN2QzYzEwZjlmYzhmNDljIGxlZ2FjeS10cnVuaworNzgyMTggZWExYWRjNjgzNWNjZDE5MmZkMzg5YWM5NDZlOWNiMTVhYzcxNjM3NSBsZWdhY3ktdHJ1bmsKKzc4MjE5IGYyMjVkNWU2ZTBlNTBiMGNmY2ZlMjA4NDhlNWY2YWFhMDVkZjIzY2EgcHkzaworNzgyMjAgOTNlM2U2YzUxNTEzNzU3ZWI4MTUzMzg4MTdlYWQ1NWM0MTAyMDc4ZiBweTNrCis3ODIyMSA5YTU4MWMwMjEwZjJlZjc3NzdiYWUyOGZlZjM2NzlhMjEwY2JlNjM2IHJlbGVhc2UyNi1tYWludAorNzgyMjIgNDFjNWU4ZWZlYWEzYzU4YzkyNTlhMWRiM2E3OWYwZTdhNjkyNTgyYSByZWxlYXNlMzEtbWFpbnQKKzc4MjIzIGZiOGMwMzg4ZTM4NWU0ZWQ5Yzg0MzBlMzJiYzA5YThjZTJiZjA1NzEgcmVsZWFzZTMxLW1haW50Cis3ODIyNCA5OTJmZDA1NDdmZjhkNTdkODRmMzhlYTVhNjQwZTgyNmFiNWU5NjA4IHJlbGVhc2UyNi1tYWludAorNzgyMjUgMjg2YWYzMDhjMWJiYWFhODhhMTE1ZTA4Mzg5NDRhYzY3NzVkZDBjZiBweTNrCis3ODIyNiA4YTllZjJjZjc5NGZlNmU2Y2I3MGJmYjgyYTZmNzQ2ZjZlYjkzNmZjIHJlbGVhc2UzMS1tYWludAorNzgyMjcgNTk3ZDZkMzYyZGRlNDBkODBmYjcxN2RiMzM4Nzk5NTIzODUwNTcwOSBsZWdhY3ktdHJ1bmsKKzc4MjI5IDVhYTlmODNkZDAwZDlmZTJkNGMyNDRkMjlhZWIwZTkwMDc5MDE5NzkgbGVnYWN5LXRydW5rCis3ODIzMCA3MmY0NmNiZmE1N2FhZDIyMzdiNmYyOGZiOGVjYTViN2Q4MmVkZjI2IHB5M2sKKzc4MjMxIDVlNjE0ZWFhYTUwNTFhYjk0ZWIyYTEzMWIzN2Q2ZWEwZjliYzg3NjMgcHkzaworNzgyMzIgNmU3NGQzZTUxZDMzZTlmNzkxYTYxZmRkNGU1ZWYwMzc5MzJmMzI1NCBsZWdhY3ktdHJ1bmsKKzc4MjMzIDRmYzhiNmZlNGFmODY3YTJiYWZkYzRjODc0MGJkZmMyM2IzMGJhZjMgcHkzaworNzgyMzQgN2RhN2Y5YmZkYWFjMDE3ODlkN2QzNDVhN2VhMzA0ODY5ZDZhMDBjMiBsZWdhY3ktdHJ1bmsKKzc4MjM1IGM0ODVlNTVhYWY5NjVmNTQ2NTk2OWE2MDdkY2YwZGFkMTY3OGEzMWUgcmVsZWFzZTI2LW1haW50Cis3ODIzNiA4YjE2ZjE0MDgyNDllOWFlMmY5OWE2NTE4ODBlYjhiMWNhNjRlZjI0IHB5M2sKKzc4MjM3IGY3MjVjZjEyMzM0Yjk3YzAxMTI5YmI5OGY5NWFlZTkzMmQ2M2M5OTkgcmVsZWFzZTMxLW1haW50Cis3ODIzOCAwOTA2YzZmNjQ4NDc0NDlhN2EzYTUwMzBmZjlkYTA3NTk3YzE3ZDM5IHB5M2sKKzc4MjM5IDQ3NGVjNTY4NWEyZGYwZWVjZjczYjcwOThjNWEyN2JjZTM4YzcyYmIgcHkzaworNzgyNDAgM2M3MDQ0NjFlYWRhMDljYjllMzdmOGI0OWI5NjYwN2VkMTA1NzdlMSByZWxlYXNlMzEtbWFpbnQKKzc4MjQxIGY5ODE3ZWM4YjU0YzA0YjM2M2Y0Mjk1ZWVjZjhkNDg4YmQxZTAwNDUgcHkzaworNzgyNDIgNjc0YzI3ZDg3ZWE5OTIxYjViZDBmZjUzYTk3YWUxMjUzMTQxZjJlNCBweTNrCis3ODI0MyAxYmYwNDNlZGI4ZDU3NGZhZWU1OTZiMzAzOTdmOWFkODc1MjljYzQ1IHB5M2sKKzc4MjQ0IDUyODIzODIwZGNlMTNlOGQxZjI5OWNmNTA4MWIzNDgzNTdjMTkzMDEgcmVsZWFzZTMxLW1haW50Cis3ODI0NSBlNzQyM2JlZDBlYzQzZTJhNDRmZmFjMDkyNTE2MWY2MjJkYzMxNTQ1IGxlZ2FjeS10cnVuaworNzgyNDYgOGQ4NzFlMGZhNzAxODYyMjBiNDQ4YTE1NjRmYTIzMmRmYTZjNGFiZSBsZWdhY3ktdHJ1bmsKKzc4MjQ3IGVhZjhhOTNjZGJmZjRjYTg2M2U2Mjc0Y2ZlMjgyNmNiYmI0YWEzMDIgbGVnYWN5LXRydW5rCis3ODI0OCA3YWI2Mzg4NGQ2OGI2ZjU3ZjY3MzU0NTNiMDc2NGNiZGNlZjA3NDNjIHJlbGVhc2UyNi1tYWludAorNzgyNDkgM2E3MTMyZjY1NjIzMTM2ODEwODRiODkyMzVhODdiYTk5ODM5MjBhYSBsZWdhY3ktdHJ1bmsKKzc4MjUwIGFjYjI3Yjk3OTIzYTNhN2VhNDI5M2ZmOWI5MDMzYzgxYmNmNWM1N2IgcHkzaworNzgyNTMgZGU0Y2E4ODE0ZTBkODgzMTdmNGM3YTNmMDI4MjAyMzgwYzMyZGY2NyBweTNrLWNkZWNpbWFsCis3ODI1NCA1NTdlNDU3OTk3YTgxNjRjZTI3NjE3MGI3ZjJmZDdhMWFkYTg3N2I1IHB5M2stY2RlY2ltYWwKKzc4MjU1IGJhNDA3YzNkODIwY2Q4NTZkYzNhY2U3NmM5MDdmNjA0OGJjMjQ0OTUgcHkzay1jZGVjaW1hbAorNzgyNTYgODY3MjcwZDNjYTg5ODkwNGMyNTM5M2VmOWQwN2FkNDhjMjRiZWM0NiBweTNrLWNkZWNpbWFsCis3ODI1NyBhYzVjMmNmZWE0MmY2ZDA2N2MwMTFiNGUxZTgwYTJiOTdhNTVhOTMwIHB5M2stY2RlY2ltYWwKKzc4MjU4IDlmY2MwMzBhOGU3MDFiODExNWFmODQxYmFiOWZlOGZlNjc3OWIzMWYgcHkzay1jZGVjaW1hbAorNzgyNTkgM2U3ZGQyMDY4NWQ4ODVhOGE3YTY0ODhhMDE1ZjhhMmYzNGRjMmMxNSBweTNrLWNkZWNpbWFsCis3ODI2MCBmNjdiY2Q0ZWNiZWVmZDU2YTVhNDEzMWFiZWFlOGI4MDA1ODA4MGNmIHB5M2stY2RlY2ltYWwKKzc4MjYxIDY2Zjk3NTBiYzZmZjM2MWRjZWQ2ZGM3N2NhNDlhYzc1MGQyYWJmNzMgcHkzay1jZGVjaW1hbAorNzgyNjIgZmJjMTU5NTMxYmUxY2M1YzA2YzNlYTlmNjhjMjkwZDg1YTcyM2ZhNSBweTNrLWNkZWNpbWFsCis3ODI2MyAxMjliYmM2NjM5YmQ4N2YwOTY5Y2NmNTc4NTNhYmQwYTljNDZhM2E4IHB5M2stY2RlY2ltYWwKKzc4MjY0IGJhZGQ0ZTcwNTczM2FiZjQzNTQ5YWVjMzY1MzRmOWJiZjA4ZmM4YzkgcHkzay1jZGVjaW1hbAorNzgyNjUgNDIwOWMzOThjOTI5N2FhNTViOWIwZWFhOTBhOTg4ZjVkMDcwN2U5YiBweTNrLWNkZWNpbWFsCis3ODI2NiBlMGUzZjYzNDE1NzA0NmY5MDFjYjI5MjFlMDNhZDgzODUzZmM4MGFmIHB5M2stY2RlY2ltYWwKKzc4MjY4IDNjMTJiZGY2Y2M2ZDE3ZjNiMDg3ZTk2NDQwMmJhOGE4ZWQzNjRhOTggbGVnYWN5LXRydW5rCis3ODI2OSBhYjIxYTA0ODFkNzI2NGU2MTUxNDk5MDY2YmI1NmRkMDM5YzY4MmJlIHJlbGVhc2UyNi1tYWludAorNzgyNzAgZDMyZDAzZDQxOTQ3Njg3YjBkMjZmOGU1N2I5MzhmODYyZTU0MjdhYSBweTNrCis3ODI3MSBiOTgzNzc5ZjIxMjFiODU0NTExYTk1MGYyNzQ3NmIyZWRhNDljYWZlIHJlbGVhc2UzMS1tYWludAorNzgyNzIgZGNkYTk4NWM2NDAzNDI4MDhjZTdkYjA3NmFjYWIyYmUxOTVjNmYyMiBsZWdhY3ktdHJ1bmsKKzc4MjczIGFmMDBmNzBhMWZmMTA0NGMyN2NlZDFmOWUxZDBhZDRhMmY3Y2E2NWMgcmVsZWFzZTI2LW1haW50Cis3ODI3NCBkYjg2YmYzOWNjYWE2OGYzYmYzZjllNzFjMTc2MjhjMmZmYzMwZDIzIGxlZ2FjeS10cnVuaworNzgyNzUgZDNhZTA0MWU3YjhjMjZlZDk1ZDRhNzcyZWY5Y2M4N2NlNzhiNjE1MyByZWxlYXNlMjYtbWFpbnQKKzc4Mjc2IDM3OTBmM2VkYTFjNTZiOGFjNmZiZWNlNDc3OTMxMTMyMTllMDk1ZGEgcHkzaworNzgyNzcgMzkwYjBlNzA3ZjU0YjVkYzA5YWMxNzE0NzQzYjZjMGQzMzAwN2IwNCByZWxlYXNlMzEtbWFpbnQKKzc4Mjc5IDFiMjQyZmIzM2JlNzEyM2NhYTY1MDBlM2Y4Y2I4M2UyMTkxNmQzZDQgcmVsZWFzZTI2LW1haW50Cis3ODI4MCBjOGVhNzU1OThmZDZkMmU0MGMyMzQ5Y2EwODYyMjY0NDc1MTgwODk1IGxlZ2FjeS10cnVuaworNzgyODEgYjkyMmUxZWJlMzgwMjI2OTE5ZjQxNDU1Mzg3OTU3M2Y5ZDZmMDZkZSBsZWdhY3ktdHJ1bmsKKzc4MjgyIDBlZDE5Mzc2OWE1ZjFlZGJmNTU3MTkwMDUwZWUyMzZlMDFmMGQzZDggcmVsZWFzZTI2LW1haW50Cis3ODI4MyAwMzQwODA0YWQ3MTNlMDQ4NjRiYjlhYzE1ZGJjMmQ3NjgwMGNlNmRhIHB5M2sKKzc4Mjg0IDRmMzA0NDUyYmJmNjlhYWZlMDZhOWI2ZmI5OWIyYmQ0YjAzYTRhMDQgcmVsZWFzZTMxLW1haW50Cis3ODI4NSA4MGI2MTJjZDk0YTRlN2RlMWRlMjk5MGEwYmYyZjE0Mzc4MDQ4YTBjIHJlbGVhc2UyNi1tYWludAorNzgyODYgNTAzM2E0Mjk1Yzk2YWViNzJhMDNjMzg1NzI0OTMwNTU2MmUwMmY0MyBweTNrCis3ODI4NyBlMTQ0YzYzZTFmYTYxMTI0ZTM3NzFmMmY1NTU5NzgzMGU5YjEyOGIzIGxlZ2FjeS10cnVuaworNzgyODggMGQzYzk3MWViMjA2OTc1OWJiNzI2Nzk5ZmNlOGI2ZjM0NWEyMGUyNSBsZWdhY3ktdHJ1bmsKKzc4Mjg5IDIwYjg1N2JiMTBiODA4NWQ5MmNmNTE5MzJlODA2ZDViZWQ5NDYzYTEgcHkzaworNzgyOTAgYjc0OWE3OWE1MWNjYjRjYmE3MmQ0NzYxZTUzODVmNTRlMTNiZDhhNCBweTNrCis3ODI5MSAwZDJkNjYwNjEzMDNiZDViNWQwOWI2MjgyNGVjODhiNjVhOWM0NmQwIHJlbGVhc2UzMS1tYWludAorNzgyOTIgMTcyMGVlMDgzZWVlZjY0ZmMwOWFkM2VkYjk3MDlmMjM1MWMzZmQ5NyByZWxlYXNlMjYtbWFpbnQKKzc4MjkzIDZkNmJlNjVkMzg4MWZiNjIxYzYwODQwZWFkNGFlNTE0MGE3NDU1ZjkgcHkzay1jZGVjaW1hbAorNzgyOTYgOTZhNGFhMWYzMWMxMzY5MTAzNGYxNDZjMzQ5NGI5MDhlNWNkZjExMCBsZWdhY3ktdHJ1bmsKKzc4Mjk3IGFiNmZkOWU0NTQzNjIwNDIxY2Q5MzVkODhlNDYyYmVmYWJiYWZmYTcgbGVnYWN5LXRydW5rCis3ODI5OSA1ODFlMjFkN2ExOTI4NTdhNTVlODBiNGEyYzUzOGViNmU0MTc4NDgzIGxlZ2FjeS10cnVuaworNzgzMDAgY2MwZTY5YzhmMGMyMzcyOWY0NDM4ZjJlNDQwYTgyYTc2YjcwMmM5YSByZWxlYXNlMjYtbWFpbnQKKzc4MzAxIGY4ZGRmY2VkMmEzNDdhN2M3ODlhNmM4Y2M3MWI0OGUwYTFmZDZiYTUgcHkzaworNzgzMDIgMDM2OWJiYWE1ZDJkZmJmOWFhMWY3NWRlNTc0NjRmODAxMDA5MjQ4OCByZWxlYXNlMzEtbWFpbnQKKzc4MzAzIDNkZTliYWNhZDk1YmMyYmE0YzJkMTFhNTg2ZmE0NTdjZDJiNDUxNjAgbGVnYWN5LXRydW5rCis3ODMwNCA4Yjc0NTVlMDFhMTExNTBkN2M3MWJiNmE5MTVmOTc3NGU3NTNhNWQ1IHJlbGVhc2UyNi1tYWludAorNzgzMDUgZjg2MTJkNDEwZTJjNDE4YjI4ZWExOGRkZTdkZmE3NjgyY2JiNDU5NyBweTNrCis3ODMwNiBmMGFjZjIxMzhhOTY2YTdlM2VlN2Q5NmJjMDI1YTE5ZmMwODMyYzIwIHB5M2sKKzc4MzA3IDIwNDU0ZmIwYmU2ZWY3NzQ0ZGJlMWRhODEwOTg2OGVkOGM1Y2Y0MTUgcmVsZWFzZTMxLW1haW50Cis3ODMwOCBjMjU0ZTU0YWM4NTY0NmZkZGY5OTlkYTg5NTU3OTRlYWYzODY5YmY3IGxlZ2FjeS10cnVuaworNzgzMDkgYzFhNGYyN2FlOGZlODM2Njg4ZDdhZWU5MzA3OWUzMDcxZTU0MTQ0MiBweTNrCis3ODMxMCAxNWQ4ZWQ5NDhmYjU2MTFiNGFmNmVkMGQ1OWYxYzU3MTkyYmVjMWRhIHJlbGVhc2UzMS1tYWludAorNzgzMTEgOWVjZTNkZDFlOTAxMGQzMjZmYjkwNzI4ZGQ0MWYyMjM4Mjc1Nzg4ZSBweTNrCis3ODMxMiA1MGY4YmY2MTcwNmE0NjBhYmI2N2M1YTQwZDdkYmZiZjk4YjdjYjZmIGxlZ2FjeS10cnVuaworNzgzMTMgYzQ1ZWMzYjExYmJhOWVkODI0YWU3ZWI4YjM5ZWU3Y2FkYTU5NDcwYyByZWxlYXNlMjYtbWFpbnQKKzc4MzE0IDUyMjdhNTVlZDcxNDJiZDk5NTMxY2ZlZDZiMGQ4YWEzMGU4MmEyZDggcHkzaworNzgzMTUgYWU2NWM3ZDM1ZjI3YWEyYjhiODE3MDA2YTc3NGFlNjIyNWEyOGNiZCByZWxlYXNlMzEtbWFpbnQKKzc4MzE2IDM4ZjczMjgyZjAzODMwYjAyYjU0M2NmNzllMmZhMDI1Nzg2MGQ2ODYgcHkzaworNzgzMTcgNWQ3NzQxZTFlNjcyODZlMTM4ODFkNjhlODMyMDAzMGNkMmU0ZTQ2MSByZWxlYXNlMzEtbWFpbnQKKzc4MzE4IDIzMTE1MDE1ZTViOTZlNzQxYTg2MWJhNTJkODAwNDgxNmE4MTQ1ZGIgbGVnYWN5LXRydW5rCis3ODMxOSAzMWM3ZGVmOWJmNTFlNzhiY2FlYjBlMzUzMDE1NDc1ODc0YTc5MjUxIGxlZ2FjeS10cnVuaworNzgzMjAgMTMyZDQyMzQ4MjE2YzczZWRjZjY0NzRlMWFhOTFhOWFmYTM3OGYxOSBweTNrCis3ODMyMSAyZWIxMzY1OGY1NzNhOWJiNmVlZDA0NzQwMTQ5MjQxNjhkZTExMTZlIHJlbGVhc2UyNi1tYWludAorNzgzMjIgOGYyZDEwMDE0YzA4NDY0ZjkwNmEyZDkxNTQ1MTcyOWIyOWM1ZGExMyBweTNrCis3ODMyMyA3YTBjMzBlN2U0Y2FmMDQ2OWRlNWZjNTZmZTRhZGUyY2U1OTM4Yjk4IHJlbGVhc2UzMS1tYWludAorNzgzMjQgZDdjMzM3N2Y4YTdiNjc0MmY3NjAwZTMyNGY4NGZiYzE4NDlkMTRkYSByZWxlYXNlMjYtbWFpbnQKKzc4MzI1IGM4OGI2NjAyZjgyZDc1ZjZmMGRjMjI4YTQyNjRlNGFkZjlkOTg1ZWUgcHkzaworNzgzMjYgYTYwOGZjMzc4ZDkyMjFkNDQyMGExNWRlZDg3ZDNiNjAyNWM5ZTZjNiByZWxlYXNlMzEtbWFpbnQKKzc4MzI3IDQ5MDJlYTAyNTYzMDc5OTViYzk5ZDU0ZDEwNGNmMjIwMjUxYzhiYjQgbGVnYWN5LXRydW5rCis3ODMyOCA1MzJkYTg2OTczY2Q0YTFkOTZkMWVlZjUxN2YxZWQzOTNiZDdmYmQzIGxlZ2FjeS10cnVuaworNzgzMjkgZmY4NGUwODkzY2IxYWI2ZjdmNmQ0NDczNTViYjI4ZDdhZTI0OWE0ZSBsZWdhY3ktdHJ1bmsKKzc4MzMwIDk3OWFjMTdlYzgyM2QwNmY2NTRlZGNmMTJhZGJkYzUwNDk1OTFmZDIgcmVsZWFzZTI2LW1haW50Cis3ODMzMSA0MGNiMjIzM2Y3MjZmMWM2MGZjMjNlMTI3MzBlMGNkZjNiODVkOTEwIGxlZ2FjeS10cnVuaworNzgzMzIgZmQ5NDg4ODU0MDg4NzczY2M0NDI3ZTkzMjA5NDM3ZTIxNDFjMDcwNSBsZWdhY3ktdHJ1bmsKKzc4MzMzIDVjNDQ2NmIxNmQ2ZDU3NmUzMTUzZjNjZDQzZjRiNDA0OGQxNDAyMGYgcHkzaworNzgzMzQgNzNjZDgzNzA2YmM0NTQyZDM3ODhjMDJlNWY1OGJjNWI1ZmY5NGI5ZSByZWxlYXNlMzEtbWFpbnQKKzc4MzM1IDMzNTdiOGViYjI1OTVjMzM1MjRjNTRmOThlOTBkNmNiNzg2OWRkYTMgcHkzaworNzgzMzYgZWEwMmVjZTMyM2ZlMGU4NDQ0MTYzOTY3ZjkwMjI0ZTBkZTA4Yzc5NiBsZWdhY3ktdHJ1bmsKKzc4MzM3IGVmNzMyYzNkYjYzZGM1OWY4NDZjNWQ0ZjY1ODM0YWI0Y2Q5MzIyNDYgcHkzaworNzgzMzggYmQxM2VlZWRjM2IwM2NjMDM1YzM5NjUzYTE3ZWI4NGExNzMxZmQ1ZCBsZWdhY3ktdHJ1bmsKKzc4MzM5IDA0N2YxOTk3N2M0Mjg0MzZjMmFkY2VlOTJlODhlOTc3YzM3YzcxMjUgbGVnYWN5LXRydW5rCis3ODM0MCBiODNmOTcxNmYxMzViODY3Zjg5NzI0NTRlMDcxNmU1MjQxZmM5OTZjIHB5M2sKKzc4MzQxIGQyODhlNTQ5MWJjYWFiYzAxNmNkZjVjYjRhY2NmMTZiMTk4NjEzMDQgcmVsZWFzZTMxLW1haW50Cis3ODM0MiA3ZmIwMTNmZjAxNGYxOTVlODUxZGI1ODk3OTBkNTYzZmE1OWU1YjU5IHJlbGVhc2UyNi1tYWludAorNzgzNDMgNWZjYjBlMGJlODllOWIxMDEyMTMxZTdiNWQwOThlM2FmMjY5YjE0OCBsZWdhY3ktdHJ1bmsKKzc4MzQ0IDg3ZjFiOGZmYzI4ZDc1ZGUxNjUzNjA4MmVkOTNlYjViNjRhNjQ3YTMgcmVsZWFzZTI2LW1haW50Cis3ODM0NSA3N2Q4NzdkMGJmMDZkOTNlZDQzNTNiMzkyOTk0NDNlMDU1YWYxMDFmIGxlZ2FjeS10cnVuaworNzgzNDYgMzFjYjYxZTBmMmJjMDA4NjZlY2Q2MTgyMDE3NDBiNTg5NzljYTk3MCBsZWdhY3ktdHJ1bmsKKzc4MzQ3IDliNTgwNmEwMDhlNzE0ZWMyZWVkNjNjZGNiNjg3ZjdmZmExYzY2ZjQgcHkzaworNzgzNDggOWQ1NWIxN2EzYzY0N2FmMjUxNmRhYjg3NTI2M2E1NGEyY2JlMmEwZiBsZWdhY3ktdHJ1bmsKKzc4MzQ5IDE1Mjg2ZDlmMWE4ZTM4MDMyNWM3MDlhZmJlYjUyZDE0NWYyNzhiZmUgbGVnYWN5LXRydW5rCis3ODM1MCA4YzBlNDg5NmRiZmM1MjQ1NjI1OTBhMDMxM2NlZjM1N2MyODcyNDNmIHB5M2sKKzc4MzUxIGE0YzQ1ZjhlNzBhYWUxZjM5OTMzMDQwMzgwMzAxNDJiY2Q2MjQwOGYgbGVnYWN5LXRydW5rCis3ODM1MiA4ZThjNDVhYjQ0ZGNmN2Y3ZWE3MjgyZmE5NjIxNmYwMDZlMWJhNWY3IHJlbGVhc2UzMS1tYWludAorNzgzNTMgNTc2N2Q5MjQ5ZjU4OTIzZTMzMzM1Njc1ODUxZDdkZjkxYTg3MzU0OCByZWxlYXNlMzEtbWFpbnQKKzc4MzU0IDBiZDE3MzZlMzI5NzNkNjYxODA2NmQ1MmQwYTAzNDJiNzY3ZDlmMGEgbGVnYWN5LXRydW5rCis3ODM1NSBmYzRiMDA1Y2JkMjhmNDIzMDlmMDU1YWZhYWUyM2UzYzc2MDBhZDgzIHJlbGVhc2UyNi1tYWludAorNzgzNTYgZmMyODZmZTQ2NjEyMzMwY2IyYTRhYWZkODJkNzJjNjQ0MzRmMzRkNiByZWxlYXNlMjYtbWFpbnQKKzc4MzU3IGE1ZmFhYWI5OTVjNDJjOWE2MzMxNDYzNTM0ZGQ0MTk1NzFlZTdjZTQgcHkzaworNzgzNTggYjRjNmI3Njk0ZjBjMmVjODMxOTlmYTQ5OWE1M2ZlYTk4MzJlYzM2MyByZWxlYXNlMzEtbWFpbnQKKzc4MzU5IGFjMzZlYzhiYWU2YzY1MDY4ODYwNmI5MmRmNDQxMWQ3MmMwNTIyOTUgbGVnYWN5LXRydW5rCis3ODM2MCA0NjBjZTllODQ4MzgzZTVmNGZmZTY4MmUyYzE0YjJkMWUwNWFjNjM1IGxlZ2FjeS10cnVuaworNzgzNjEgNGExMTgxZWM0MDM2NGZmYTU0YTc5Njc2NTQzZWY4ZTlhZWU1ODUzMSByZWxlYXNlMjYtbWFpbnQKKzc4MzYyIGExZDA3OGI4ODI0NzJhNDI0OTE2NDBjYTUzYmY0ZDlkNmI5YWIyY2EgcHkzaworNzgzNjMgMTM5YzEwNDhmMzFiZDUwMGE4ODYxZjgzNDhiNDE4Y2JjMjIyZjM2OSByZWxlYXNlMzEtbWFpbnQKKzc4MzY0IGI1MmUzZmYwYTRjOGIyM2ViNjhjYjc0ZTUwNGJhYzI5OTRlMWU1OGUgbGVnYWN5LXRydW5rCis3ODM2NSA4YzkzMGU0ZDUxYmQyOTBlMjAxN2M0OTJiYWQxNmZmN2E5OWYxNTg2IHJlbGVhc2UyNi1tYWludAorNzgzNjYgZGY1NmJhMWNiMGFmMjgyNThhOGI4ODlhNzVlZGE3MGQ4NzM1ZTMzZiBweTNrCis3ODM2NyA5MjY3MGNjMWE2YmM0MDJkZDExYWQ1MTAyYWNkMTgyOGZjMTg2YTgyIGxlZ2FjeS10cnVuaworNzgzNjggZmVjNTVmNTI3NzVjZTc3NTE4NTNlMjQ2ZDIxZTM0MDQ5NWY5YjEwOCByZWxlYXNlMjYtbWFpbnQKKzc4MzY5IGJmOGQ5ZjAzNTljMTIyNjAzZWI2NzkzZmI1NjM4YWQyOTg3NmZmZWEgcHkzaworNzgzNzAgMjQzY2M4MGQ0YTA2N2I0OTM0OTFmYTlmMzEyN2I3OTkyOWEwNjMzMiByZWxlYXNlMzEtbWFpbnQKKzc4MzcxIDc2YWM3YTFkNzFiNzVlYWU2ZWE3NTE1ZWI4NzY5MTI1ZGE0OWEzODcgcmVsZWFzZTMxLW1haW50Cis3ODM3MiA4YTU2YjgyYzEyODQ1MjkxMWQ1YmRiMDNiYWVlZTcxMTE0OWZmOTU5IGxlZ2FjeS10cnVuaworNzgzNzMgZGEzNzNkYWMyNDE1ZTMyYmMyNWZlM2M5ZmMzZWYxYTIzNDljMjU3YiBsZWdhY3ktdHJ1bmsKKzc4Mzc0IDg5YmMyOGYyMDAyMWZiNDYwMmE0ZGVjNzM0NTBmMzlhNWUwNjc5ZjkgcmVsZWFzZTI2LW1haW50Cis3ODM3NSA4NjkwZDA4ZDk1M2Y5N2U1NThjZjE3YWZiZTk0MzQ3MmE2MGNlNGIwIHB5M2sKKzc4Mzc2IDBmNTRkNDMyNzM0Yzc2NjU4ODM4Yzg1YWUwMmM4MjM1MWFiOGUyMDMgcmVsZWFzZTMxLW1haW50Cis3ODM3NyAxZGQxZWFkYTQ2YzJkNzBkZWFkNGVmZjIzNDIzMGFjNzE5YmQ1ODllIGxlZ2FjeS10cnVuaworNzgzNzggYmQ0YzkxNmYwZWZhNWQxZWY2N2QzNzJlODI0OTNmYjQ1NjlhZTFmZCBsZWdhY3ktdHJ1bmsKKzc4Mzc5IDllMWNhMWMxMTkwMjFjNDgxMmJlNDE4NzE2Yjc3YmNlMmVkYmM5ZGYgbGVnYWN5LXRydW5rCis3ODM4MCBiMTc4MTRiZTA1ZjFjMWY1YTY3MjU4ZDFmM2Y4NTMzNjJkMDg1NDA0IGxlZ2FjeS10cnVuaworNzgzODEgZTJhNDQ0NWIwZTdjMzAwZDBhNzIwMmVhOTYxNGIzNTk5NGEzNGRmYyByZWxlYXNlMjYtbWFpbnQKKzc4MzgyIDlmZDgwM2FiZTE0MWM5NDY4YjhmYTY3ZWMzYjkzYTg0ZDc4MjVjYjYgcHkzaworNzgzODMgYjkwOGE0MGYwMDIwNTA5MTMyYzFkNGJhZjE0YjJkNzA2YjM3Mzc1MSByZWxlYXNlMzEtbWFpbnQKKzc4Mzg0IGRkYTUxNjVhMjM3NGU3ZDg2NjE4Y2Q3NzE0NDg4MjE4YTlkOGRkYjYgbGVnYWN5LXRydW5rCis3ODM4NSAyODc0NTBiMmQ3YTc4ZDVkMGQzMzIzNzI5NDY5NDBmZDk2YzFiYjQwIGxlZ2FjeS10cnVuaworNzgzODYgZWE2OGQ3NTUyOWIxMWNmY2RjMTdlNzNiMGFlYTg5MDRmZjBkYWM0YiBsZWdhY3ktdHJ1bmsKKzc4Mzg4IDc3ZGU3YjFiY2Q1OWRhN2U2NzY4ZGQ4MDRiNDlmYmEzNGMwZGVkOTIgcHkzaworNzgzODkgYWIxMDc5M2E0NmE3MDFjMmU4M2IzYzAzNGJmZjk4NTQ5NjQ4MjU0OCBweTNrCis3ODM5MCAxMjQ5NzA3MmY5ZGFjZTIwY2U3YjJiYjVjY2YwODk0NzNmNjM5YTMwIHJlbGVhc2UzMS1tYWludAorNzgzOTEgZmNmMjEyYTkzZGQ0MmYwNGYzZTBmZDdjMmM5NTBhZDdhNjRjZjViNyByZWxlYXNlMjYtbWFpbnQKKzc4MzkyIDMyYjIxMDYxZWU5ZmZmMjU0YzMyMjI0Y2I2ZjJjNTlkNWRjZmU3MzQgbGVnYWN5LXRydW5rCis3ODM5MyBkZjU3MTljMjk4ZGIyZDhmYmJiOTE5MzYwZWJlN2RhYjI3NGM5ZGZlIGxlZ2FjeS10cnVuaworNzgzOTQgNzc4MDQ4MmE2NGRhNjlmNjE2NmY5YmNkN2I5NDg3YTAyY2ExMTcxYyByZWxlYXNlMjYtbWFpbnQKKzc4Mzk1IDQ0ZWU0ZjI3MWQ3YWViZjhhZjIwZjBiZDg5ZjQ3MTk2NzU2Mzg5MWIgcHkzaworNzgzOTcgNzk4ZTBkMGM3MjQ2ZGRiMjA3YzI3NWQyZGE5YTVkM2U1ODhhMWEzYSBweTNrCis3ODM5OSA0MTBjMWM4MGQ2NjNhYjNiOWRlOTkzZmM2MjJmMjRjMmM2Yzg2NTA2IGxlZ2FjeS10cnVuaworNzg0MDAgOGQzZmYyZmJiZTRiNGE0OWExYjNlZWQxOWViNWI1NDBmYTcwM2Q3NCBweTNrCis3ODQwMSA2OTZmNzY3ZTc3ZmY4Yjk5YzI2MjY1Mzk3Zjg3MTczM2JjZmYwNGRhIHJlbGVhc2UzMS1tYWludAorNzg0MDIgNjc4MjU2ZTgwZmM2MDFkM2IzNmVjNjMxMjZjMjFmNzZjMzQxOWNkMiByZWxlYXNlMjYtbWFpbnQKKzc4NDAzIGU4NTQxMmY1NDRjODNlMjMzZjJhYmE5MDlkNDdkNTRiYWRkOTg1YTkgbGVnYWN5LXRydW5rCis3ODQwNCA5NTRiOGUyNzY2NzQ2MzIxZWY3NGM2YjMxMTBlNWYzNTZlZGI2NmE1IHJlbGVhc2UyNi1tYWludAorNzg0MDUgZTgwMzI3Y2I2ODQ2ODFkNGY1YzQ2NjAwYWZhMzg0OTZmODEzNGM3ZSBweTNrCis3ODQwNiAxMDdjNGM2ZWM2NDk1MWZhODg3MGU1OTAxYjA2NDJlOGJkMTFmMTcyIHJlbGVhc2UzMS1tYWludAorNzg0MDggYTVmNmRkMTg5MjgyZjAxZGE2NDlmZDdhOWZjOTIyMjFiNGE2ZGFhMCBsZWdhY3ktdHJ1bmsKKzc4NDA5IGE5YTQzODEwMGY4ZDRiMmNhYjgwNWUzNzNhNDQzNTcyMjQxZDIzMjggcmVsZWFzZTI2LW1haW50Cis3ODQxMCBhOTk0NWFmY2M0ZWQ0ZDcyYmNiZGU2YmQ5YzFlZWEwZDhlNjRjM2NmIHB5M2sKKzc4NDExIDE3NzE5ZDM5NWYxZTZkZTQ3ZjBmODdhODlmMWUwNmE0MmY3NDMxNjAgcmVsZWFzZTMxLW1haW50Cis3ODQxMiBjNDY1ZDIxNDM4NzRkY2FmNWZjOWU1YjcyOGIwYzVjMDc3YzQ5N2M0IGxlZ2FjeS10cnVuaworNzg0MTMgMDc5NWRkN2IyYzlkMWIyNDAxMmM5YmNkN2UzNjI4ODU0Mzg0NTk1ZSByZWxlYXNlMjYtbWFpbnQKKzc4NDE0IDgyMGVhZjkzODgwNDViY2QzMjM5ZWNmNGI5NDA1NDMyYjc0ZjdlMTUgcHkzaworNzg0MTUgNGY3NTAzYWVlYTg1ZmM4NWMwNTNiNTgyYWYxOGI0OGNlODA5NDIzNiBsZWdhY3ktdHJ1bmsKKzc4NDE2IDllYmJjYjdhMzk4OTcwY2M5ZGRhNWJkOWNlOGEwOTlhYTBkMjJiMWMgbGVnYWN5LXRydW5rCis3ODQxNyA0NTIxMmEyNDdlZDRkNWQ0YWM0OTAwMDYzYzY4MjViZTVlMmM0YjY0IGxlZ2FjeS10cnVuaworNzg0MTggMmI4MmIxNmE2Mzc1NmM0Njk1YWM5YzY2ZTg3YzNlM2IyMjI1ZTBhNiBsZWdhY3ktdHJ1bmsKKzc4NDE5IDVhYzM0OWMzMjJmZDNmZmM3NTdmYzY0YTRhYjY4YzNjYzg1MTk4OWQgcmVsZWFzZTI2LW1haW50Cis3ODQyMCA1OWVjZWExMzc2OWIzOTg4MDNiMmViOGExN2Q2Y2ZmOTc4MDRmMWU0IHB5M2sKKzc4NDIxIGM4ZWY5MDZiMTFiODgzMjAxN2E1NWEyMzcyODBhNzM2MDhhOGUyOTkgcmVsZWFzZTMxLW1haW50Cis3ODQyMiA1NmY0ZDZjNTE0NTAxNmU1YTVmZjJkYzlhMGY3N2E5NzA1OWI4YjZjIGxlZ2FjeS10cnVuaworNzg0MjMgOTIyNWI0ZjhjYjFlNzNjODExNWFjNWRkYmNmN2I1MzA2ZmFmYjNkNSByZWxlYXNlMjYtbWFpbnQKKzc4NDI0IGFmNTg3YjRiNTkwOTE5NGYzM2UxMmU2MzI5ZTI4MjczYmU3OWY2NmQgbGVnYWN5LXRydW5rCis3ODQyNSBjMGZhMTQ1MzcwZTQxZjQxMDI4NDk1MTExODk5ZGIzNDVjNzFlMmIzIHJlbGVhc2UyNi1tYWludAorNzg0MjYgM2Q0ZGIxZjViM2IxNTVkNWJmNzQ3ZjFkZDJmNTg4MDQxY2U4NDViMCBweTNrCis3ODQyNyBlNzA5ZjZmNmY0NWNhOWNkOWZkZTJmYjlmZTU4YmI3MzYxNGQ3MWJjIHB5M2sKKzc4NDI4IDVmOTkzOWFmMmY3MWFjZmRjZWZlNTZjNmI0MjBkZTNhMDI2MGZlZWUgcmVsZWFzZTMxLW1haW50Cis3ODQyOSBhZjllNmVkYmIwZmY3OTZhYmZhNTU2MjhiZDg3YWMwNzFmYTcyNTg4IHJlbGVhc2UzMS1tYWludAorNzg0MzAgZTQ3YTY0ZjljYzc3YmZlYWNlZjAwNjNkNjFhNDU2ZjRlNmI4OTc0MCBsZWdhY3ktdHJ1bmsKKzc4NDMxIDMxODEyNTVlMjhjOTlmOTZkODMzM2Q1NzA2ZDZlZGI2Y2Q3N2NkMTggbGVnYWN5LXRydW5rCis3ODQzMiBjOTUwZmFjNzQxMWJhNjQwYzkzYTFkNGIwYzZiMjQzN2RiOTEzYjU0IHJlbGVhc2UyNi1tYWludAorNzg0MzMgMjg3ODhmNzJkOGMwZmU1ZGE1Yzk2NTU3ZmM5NWFmNjBlOTE2MjA5ZiBweTNrCis3ODQzNCA5NGUyYjY5MDI5Njk2ZDBhMGEwMjA5OWQ4ODI5MDRmNjA1ZjkwOGE5IHJlbGVhc2UzMS1tYWludAorNzg0MzUgYjdkZTdjNWFmYTA0MjkzYzcxOTNhNTAzYTFlNzRkMmExMmIyMWE4MiBweTNrCis3ODQzNiAxOWNmNTI2YmVmYTQ2OWI1OWNiZmNmOWFmMWEwMGMxZTYxMzFmOTA4IHJlbGVhc2UzMS1tYWludAorNzg0MzcgMTIyMjFiNmNjOGNkYzdkMDg4YWNlZjRmY2Q4NWRjMTM2MzRlY2FkNyBweTNrCis3ODQzOCBmNWVhMTI2NGI3YWUxNzg3ZjNhMGE5MjAxMGUyYTFlMGJlMGY5YjVhIHJlbGVhc2UzMS1tYWludAorNzg0NDAgMzgzZjQwOTc1Yzc1YzNjMzFjZWU5YjQxYzMzYTg2ZTBjZDE1YzA2NiBsZWdhY3ktdHJ1bmsKKzc4NDQxIGJkODM1N2E5MWQzZTYzOTI2MWJhMWQxMWQyMmI4NDA4MmEwODBmMDggcmVsZWFzZTI2LW1haW50Cis3ODQ0MiA4NWJmODQ0NjlhMzJjOWRlNDZlNDlmYzlmZDM4NGRmMGI4YjNlMDE0IHB5M2sKKzc4NDQzIDIxODMyNzdjYmFiMTg3NjZkN2FiMTMzOGYyNjQyODkyYWM3ZDNlMTggcmVsZWFzZTMxLW1haW50Cis3ODQ0NCBhY2NhYjRiYWI2MzRjZDYxYzZjMzA4NjY1Mzg5ZWY1ZDVjMGI1YzVkIGxlZ2FjeS10cnVuaworNzg0NDUgZWNmZTljZmFhMzM0NzMxMTM0YTk1N2FlNTczNTA3MDJiZmRiYzE3OCByZWxlYXNlMjYtbWFpbnQKKzc4NDQ2IDg5YTUwYTExODIwMTkxMmRlN2U2ODdkNzkyNzQwZDFjYjk4ODUzNjggcHkzaworNzg0NDcgNWYwNGUwY2Q4MTcxNzkwM2I2MzAyNjNkMDY2N2JkZDEzMWJjNmU1YSByZWxlYXNlMzEtbWFpbnQKKzc4NDQ5IDZjMTRjMjc5MjViOWU1ODNkNzdlOWI0NDFkNDAyYTFlMTQ1Y2E4ODQgbGVnYWN5LXRydW5rCis3ODQ1MCBhYWNjMGQ0OGQ0NGQ3ZTEwNWI2Y2Y4ODYzNmMyZGZiMDcwOWMwZDE3IHJlbGVhc2UyNi1tYWludAorNzg0NTEgODU1M2Q0MmM5NGIxYTlmY2FlY2Q3NWYwYTRiMzc5OGUxNDE0YWI1NSBweTNrCis3ODQ1NCAxYTYyZjQ4OWE2OGEwYTkzNjYyOThkY2RkNzI1NTY4YTE5NmIwNTc4IGxlZ2FjeS10cnVuaworNzg0NTUgNDc4MGUwMzc3ZTEwZjY4ZDFiMzhmZDUyNTBhNDkyOGIyMzg4NTA2ZCBweTNrCis3ODQ1NiBlMWJjMDAyMmIyM2IyZDkxMGEyM2I4NWYzZjY2YmNhMmZkNjg0ZTEwIHB5M2sKKzc4NDU3IDk1YjNiYjZiOWZhYWI5YzQ4Zjc3ZTU5OGQxNjBlNDM1YzU0YjdjM2MgbGVnYWN5LXRydW5rCis3ODQ1OCAzYWI3NDA5NDA1ZmEzYTNiOTJiZGRiN2ViMTcxMmJiMjM1MmJhZjMyIHJlbGVhc2UyNi1tYWludAorNzg0NTkgYzEyYjk1NTM1MDk0ODgzOWU2NzIwZWNkMDk5ZDgwZWRlZjVhMTIyOCBweTNrCis3ODQ2MCAwODNjOGU1MzU0YWRiMzNiNzk2M2JkMDM5NDZmNDY3YzIzZTZjYTc4IHJlbGVhc2UzMS1tYWludAorNzg0NjEgN2UzYzQ3MzU0ZGEzNDI2ZTdiY2ZmMjNmMGJkYzJhZmVmNWQxZDJkYiBsZWdhY3ktdHJ1bmsKKzc4NDYyIDdkMzQzZDViZmIzZjFjZGZjODM5NjczY2JmMjUzMDEwNTAzMWFlZjIgcHkzaworNzg0NjMgYWQyZjVlYWNkMmEwMzZkNGU4NGFiNDA5ZDI5ODRjYTUzOTNlOWI5YSBsZWdhY3ktdHJ1bmsKKzc4NDY0IDlhYzM1MjE1YWY0YThjOTdjMmJlMmQ5NzQzMWM3OGJhOTIxYjcxMTggcHkzaworNzg0NjUgM2RjZGNhMDA3MDk1NTY2ZTQyNjYxNzYzNzc3MWQ4MmM3OWM0MzliZCBsZWdhY3ktdHJ1bmsKKzc4NDY2IDI1MmYxZTIzZTk4NjAzMTY4NGRjODI2YzBiMzQyZTM2YzMyZTU0M2UgcmVsZWFzZTI2LW1haW50Cis3ODQ2NyA4YjIwNDhiY2EzM2MxZDQzZTE5YWI0YzdmMTYzN2UwZGU3NjZiNzY2IGxlZ2FjeS10cnVuaworNzg0NjggNTM1ZTIxNTVhZjFhODJlMTAzNGFjODE1MDliMDI1MWQ0ZjNiOWQxNCBsZWdhY3ktdHJ1bmsKKzc4NDY5IGRjMWNkOGVkZmE0NjU3MmUxZTY5MTA0Y2MxODE2MDMxMzIxZmRmYTYgcHkzaworNzg0NzAgNjA0M2QwYmQ4YmY3MGE1NzRkODI3ZTY1NGVjNjQ1ZWQ1ZGI1NDk5NSBweTNrCis3ODQ3MSA2MmJhYmY0NTYwMDViNjdjZGRlZDYyMDgyZGU3NWE3MWU3MTQ3NWQwIHJlbGVhc2UyNi1tYWludAorNzg0NzIgOTQ4NmZmNDAyYWNjMzg4MTk0ZDI4NzVkNGZhZjBkZjI2ZTVmM2FhYyByZWxlYXNlMjYtbWFpbnQKKzc4NDczIDMzM2ZlOGQ3OTMyOThiYzE2ZGNiYzE2YjA4ZjVjMTRjY2JiYmE0MDEgcHkzaworNzg0NzQgNzg3NGQxM2M5YWE3NjdhNzg4MTBiNDBkYTUzYmZmMjI1ZDY0NTA5YiByZWxlYXNlMzEtbWFpbnQKKzc4NDc1IDhlNjQ2MTVhNGM4NjM1ZmFlZDRjNzRjNWRiY2M0YWU3YjEyZTIxNjcgcmVsZWFzZTMxLW1haW50Cis3ODQ3NiAyZjJkMjI1Nzc3NDI4MDZiZTYxNmY5NmE2NzQwNTU4ZWM5MTdlOTRkIHB5M2sKKzc4NDc3IDVlMmE1ODQzMDdiYTk4N2M4YzExMTI0MmQ2OWM3ZmM2YjU0ZDk3MzYgcmVsZWFzZTMxLW1haW50Cis3ODQ3OCAyMzFjODhlZTg4ODVjMTAzMGU5NjA2ZjI3NjE4OGFhZDI2NTVhZDE3IHB5M2sKKzc4NDc5IDMyNzBiYTFiZWM3NmEzODliMDczYzMxMTllZjg0NDgwYWI1OTVhYzAgcmVsZWFzZTI2LW1haW50Cis3ODQ4MCAyYjY4ZTMxNDJkMTdlODMzZjYxNmYxNTE3OTljNTNlYzk1ZTI2MWQ0IHB5M2sKKzc4NDgxIDU2ZjUzN2JlZGFmZWQ5ZmY3ZGE4NWE3YTkzYTQ4OGQ1MzY4OGI4NzAgcHkzaworNzg0ODIgNDA3MGY0Y2Y4Yzc3MmNkNTM5ZTJiNjdlMWY2NDEyYzQyMmYyNzY1ZSBsZWdhY3ktdHJ1bmsKKzc4NDgzIDQwNjZiNDVkMjhhYjI4YmQ2ZTI1ZGY2OTNjNWEzY2ZhMmM5MTgzNDkgcmVsZWFzZTI2LW1haW50Cis3ODQ4NCBlNTQwMzIzZDg3YThiMjAyMmEzZTVkYzZlNzdkODE4MDc4NTExZjcyIHB5M2sKKzc4NDg1IDBkNTkwZTVlODQwYzYzNWIyYjVmZTcwMWZiYTI5ZDE2NDAyZmFmZjkgcmVsZWFzZTMxLW1haW50Cis3ODQ4NiBhYmE5ZjY1NDFhZDY5ODNiNTA0OWM3Mzk1OGYwOGM1MDAzZDEyMGRhIGxlZ2FjeS10cnVuaworNzg0ODcgMmEwYWM5YmRlOTlhZmQwMjdjM2Q3YzJhZGM4Njk4YzY0NzEyNTEyYyBweTNrCis3ODQ4OCBkMGMyYjljMmJhYmIwZWQ5NjY4OTdkYmMxMDU4ZGMzYzA1MGMyYWQ1IGxlZ2FjeS10cnVuaworNzg0ODkgMGI0ODQ2NDg5MDU1YWNlNGZiNjczNzgyYTg5ZjJkZDQyNTM1MTViZSBsZWdhY3ktdHJ1bmsKKzc4NDkwIGYxMzljYTAzNGMzYjc1MDM4MDRlYTU2YTA1Y2U5NzgzZmFmMzFjYjcgcmVsZWFzZTI2LW1haW50Cis3ODQ5MSBiZjE0NmYxMDNlZTY3M2YyYzI3ODdhNDdiYTMwNWM2NDcyZjRlMDdmIHB5M2sKKzc4NDkyIDAxOTRkOGE2YjFlZmZjNDIwNjY2NDc3ZWJlNzA1YzQ1ZTlhZGE1MzIgcmVsZWFzZTMxLW1haW50Cis3ODQ5MyBhZTA5YWIyNjg2ZWQwNDk0NjEyZDQ4YmU4YjA1YTgyZDAwYWRiYzI2IHB5M2sKKzc4NDk0IDg5MWU3OWQ3NzBkODhlNjdiMDRiNzZiNWE0OGMwNDk0MTE0NjI4YTkgcmVsZWFzZTI2LW1haW50Cis3ODQ5NSA4MTUwOTJhNWU1YzEyOTgzYTgzNmE2NzYxNGNhYTBmYjUwOWQ0Nzg2IHJlbGVhc2UzMS1tYWludAorNzg0OTYgZDYyYmRkODRkZjBhM2JkYTVlZTIzYTk5MjE4YmU1ZTYwNTFjNTU3YSBsZWdhY3ktdHJ1bmsKKzc4NDk3IDc3NTkzN2EzNGY5NjYyYjM4ODU0N2YxN2ExMzY3YzlkOWJkYjgxN2YgbGVnYWN5LXRydW5rCis3ODQ5OCA4NjQwMmZhMGM1Yjg4ZWNmOWVjMDUzNDgzMmEyZjE4NjVhNWY3YmZiIHJlbGVhc2UyNi1tYWludAorNzg0OTkgNTYwZjNmNGVlOWE3ZDgxOWU3YTYzY2RkY2YzOTk4ZWY5N2ExOTc1MSBweTNrCis3ODUwMCA1NjIwNWY1NDdiNzQ2MDU5YzU3ODdiMDM1NDk3MzliMzAyNzQxYWZjIHB5M2sKKzc4NTAyIDg4NzEzYzBlZDAxMDI1YTgwNDU0NGZhZTEyMDJlOGQ5ZjY3MWIxNDcgcmVsZWFzZTMxLW1haW50Cis3ODUwNSA4MWQ2ODMzYzYyNzhiZWZkMDEyMzBmNWY4ZjUyNDJmODE1MWZhYjQzIHB5M2sKKzc4NTA2IDg4ZjE0N2QyNjM3MjYxZjYzMzc1M2RiMDhmNjJlYzIxYzM3Y2RkNzIgcHkzaworNzg1MDcgYTllMWYxZDM0Yzk2NzFiYmVlMTVhY2U0YzkxMmIwM2M1MjI1ODQyOSByZWxlYXNlMzEtbWFpbnQKKzc4NTA4IDY3OWY1MmI4YWVmNGM2ZDJmNjlkMjliMGQ0YTA0ZmZhNGE2ZDllMzMgbGVnYWN5LXRydW5rCis3ODUwOSA4MWRjYzBjODQ1ZGZiNjY4ZWFjMDE4OGM1YzFmNjk3NzIzMTYwMjFjIGxlZ2FjeS10cnVuaworNzg1MTAgMDFjNThjZWY4MmQ0OGE5YThhYjE2MjdlY2Y3MjE2NDMwN2UxOTdjOCBweTNrCis3ODUxMSA1ZDlmM2FmYmM0ZTRiYzBjNTEzZWU2YTE1MTY3MzhmNTNlNGExM2IzIGxlZ2FjeS10cnVuaworNzg1MTIgMTNmZjlmZGI4NDMxYjcyOTNmMzFiZGE0YjgxN2M2YjM3M2U2ZDc5MyByZWxlYXNlMjYtbWFpbnQKKzc4NTEzIGYzNzg2M2E3ZWQ2NzdhODcxMzJlNzliOGQwNjAwMDgxZDBiMTM0ZmEgcHkzaworNzg1MTQgMjA4MGFiODgwYTgwZWQwYmFmZWNmMDEyNzk4YjVmMDE2Y2U1MWI5MSByZWxlYXNlMzEtbWFpbnQKKzc4NTE1IDc5OWJjNDk2NGExZDkzMDJkNmNhNzQxYTUxMjE4NTZjMzFkZDM1ZGMgbGVnYWN5LXRydW5rCis3ODUxNiA3NTA4MDI3NTkyMWI4ZTg2YjU0NTk3NzY1MTkyM2I2OWRhOTg0YTQ2IGxlZ2FjeS10cnVuaworNzg1MTcgZWFiZmE3NzhiMDc2YjYwZTg1NWEyMDZlMTExZGVlNDM0NTYwODJkOSBsZWdhY3ktdHJ1bmsKKzc4NTE4IDJjZGVjODQ4Yjc0YzYxNDAxMjZkMTQ3YWVhY2RhY2YyY2IwYzhhM2MgcmVsZWFzZTI2LW1haW50Cis3ODUxOSA5OGU5YzRmZmQzNDNhZjFjZWM1MDQ2ZGQwZTg1ZGNkMTdlYzg5ZTkyIHB5M2sKKzc4NTIwIDllODExM2U3NmFkYmYwMTQ1NGNkYWYwYmMzNTQzNjU0YWI4YjdlOTMgcmVsZWFzZTMxLW1haW50Cis3ODUyMSA4ZTNkMDNiODA5MGJjYjIxZGFjZWNkMWQ5ZmZiM2U1MjA4MGI0M2YzIHJlbGVhc2UzMS1tYWludAorNzg1MjIgMWM2ZmM3MGY0OWQxYWJlZWY5MTY0OGQ0MjlhZTQ4NTYzZWEyYzBkNCBsZWdhY3ktdHJ1bmsKKzc4NTIzIDZlNjY0YmNjOTU4ZDYwZjIxZTc4ZGNmMTBmODQwZmQzNWM3MzEwMTggbGVnYWN5LXRydW5rCis3ODUyNCA1NTc3ODg1NWNkMjVhOWFlOGZiNjY3NWU5ZjhjMjkyN2RiOTg5ZjVkIHB5M2sKKzc4NTI1IDEyNDY5ZjIwNjU2YmVlMDU3OTUxMGU4N2NmZWI5ZWU0ODM3ZjY5M2QgcmVsZWFzZTI2LW1haW50Cis3ODUyNiAxZjE1ODIzOGZhNzY0ZDcwMGFjOWZjZGU3NDhiMGVhNGE3YjM0ZjMwIHJlbGVhc2UzMS1tYWludAorNzg1MjcgNGFmYzUwZDE1NTQ0NWQwMWQyYzkzZDZjYTg2Y2VmYzYzOWI3MDJmMyBsZWdhY3ktdHJ1bmsKKzc4NTI4IGUxYjcwYzZkZjllNzczZGZkNzAyOTFiOGRkNWVjMWMxMGNjZjQzMWEgbGVnYWN5LXRydW5rCis3ODUyOSA5YjRlMGNkNzgxN2FkYTFlMmYzMTMzNDk3ZTdkMjAxZDZkOGRjZTFlIHB5M2sKKzc4NTMwIDM3MGUxYTFjMjM4NjlkZjgxOWQzMWI0NGFhOWYzMmRmMjI4NDhmOTggcHkzaworNzg1MzEgMDc3ZjJiOGIzZTU3MjkwOTMzZGQ5MmJjZTRiNTBmMDMyMDI3NjI0NyBsZWdhY3ktdHJ1bmsKKzc4NTMyIDg1NGIzNGEwNjg5NmZkNmU0N2ExNmU4ZGUzZTRjMjhmMGMzMzQ0OWEgbGVnYWN5LXRydW5rCis3ODUzMyA5MjRjYTI5NWIxNDYwMDAyNjMwYjBhMzdkMWYwMmU4M2EwMjc5YmI2IHB5M2sKKzc4NTM0IGQxYzYyODgyYzczYmQwZGM0ZmYyYTE1NjQxZGNkMzAzMDI3ZDllODggcmVsZWFzZTMxLW1haW50Cis3ODUzNSBmNTNmZTMzZTAzZWExYjQ5YmY3Njk2YmEyNGM5ZTMzYWRiY2U2YjA1IHJlbGVhc2UyNi1tYWludAorNzg1MzYgYzQ1ODA1YmEzMjNmN2ZhYTlhYTE3MDIzODdiMGUxZTQyM2Q4MTJlNCBsZWdhY3ktdHJ1bmsKKzc4NTM3IDk0MWUxYmYwNGY1NTMyZTEyZjBmZmM5MDI3ZGJmMGYzYjUyNmU2YzcgcmVsZWFzZTI2LW1haW50Cis3ODUzOCBmMDI4M2JiNjIzNjE0YWQ5NTJhZmFhN2NlY2QzYzlmNmIyM2EzMDc0IHB5M2sKKzc4NTM5IDc4M2YwOWIwODcwNmVhMzBlMjBjNWYwZTQ2MzY2YTJiMjM4ODE3MmYgcmVsZWFzZTMxLW1haW50Cis3ODU0MCAwMjY1Y2RjOGQ1YmIwY2ViYjRkOTFjYzQ5MzI2NzQ4NGUxYTc0NGMyIHJlbGVhc2UyNi1tYWludAorNzg1NDEgOGQ0OGY5YjU5Njg5YmE0Njk4MjY1NTdhOGRkZDk4NmJkNGNkZTNmNSBweTNrCis3ODU0MiA5YjcyMjc3ZDZiMzBhN2MwOGM5ZDZkMGI2YmQyZjljMTQyNTEzODBlIHJlbGVhc2UzMS1tYWludAorNzg1NDMgZDVmNTBhZTRmMWY3OGUxOTlmMTM3MzkxYWRmNDhjN2VmMmJiODM4YiByZWxlYXNlMjYtbWFpbnQKKzc4NTQ0IGY1YmFjNDczNzA2OWE0MTNlODkyZDdhNTEwNzg5NWRjMWQ2YjFkYjIgbGVnYWN5LXRydW5rCis3ODU0NSA2ZmFmYjY0ZWMzMjgwOGQyMzlkZDVkMGM1MGY1NmU2ZDQ3NzcyMzkxIHB5M2sKKzc4NTQ2IDU4OTAwNGIyMmY1NGMxMzQ3ZTdmZWMzNTZhN2RmMzEwZjQ1YWE0ZWMgbGVnYWN5LXRydW5rCis3ODU0NyBhZmY2OTJiZGI2ZGIxMDc5NzgzMzE5MWYzNmFmMzJmODMyNTgxY2MxIHJlbGVhc2UyNi1tYWludAorNzg1NDggODg3ZGU1ZGZkOTYwMTVhZDQ0MDI5Y2ExZWJmYjQ0NGViMDVlNTJhOSBweTNrCis3ODU0OSBkYzg0NmEyMTFjNjU4YWFhZTBmMDkwOGUzYzI4YTc0MTBhZjAxY2M3IHJlbGVhc2UzMS1tYWludAorNzg1NTAgNDZhZTE2NGIxNWJhOTFkYzY0OTFlOTFhODY4YjJkMjcxYzMzMTdjNiBsZWdhY3ktdHJ1bmsKKzc4NTUxIDRlMzA0MzEwOTc0OWYyOTU3NDY2OGU0NDY1ZTQ5YmNjYmI5N2JmN2IgcmVsZWFzZTI2LW1haW50Cis3ODU1MiA1OGMzNTQ5NWE5MzQzODdkMDY0ZWRmNTk2MzRhZDczY2I4ZmUyOGU0IHB5M2sKKzc4NTU0IDRiYzViMDQxZDNhYTZiYmUwOTAxZGYyMjY3ZTU4Yjg4ODg3NzdjOTUgcmVsZWFzZTI2LW1haW50Cis3ODU1NSA0MGE0MDZlZWRjYWM5MmUxMWE5MjM1OWRkNjc0ZGZjYWM1NzkyYWU5IHJlbGVhc2UzMS1tYWludAorNzg1NTYgZDU2MTVlZWU1NjNlNTY0MDUzN2RlOThkMmJiYmExYzc0MGFlODZmMCBweTNrCis3ODU1NyBjZGY1OTYwNGExNzQ0ZDZiNTNiYjcyOWU5OTQ2NzYyZmVjOWM5ZTM1IHJlbGVhc2UzMS1tYWludAorNzg1NTggOGI3YjVjOWU2N2Y0ZDY3MDNhNzg3MTRlNTQ0OThmODhhYjMzMWY4NCBsZWdhY3ktdHJ1bmsKKzc4NTU5IDkxMjdkNzA3MzBjNWIwZDYxZjAzN2ExMDFmM2FjMDZmNzAyM2Q4ODIgbGVnYWN5LXRydW5rCis3ODU2MCAwNDU5MGVjNmYzN2RkZjY1NzUwMjk1MDg5NzY2ZDkyOWIzMTc1Yzg3IHJlbGVhc2UyNi1tYWludAorNzg1NjEgNDM4NjgwYmU1NDcyYjdhYzIyZTY3NjY0Nzg4NTMyZmFhNzM1Mzc0ZiBsZWdhY3ktdHJ1bmsKKzc4NTYyIDM5YTUwM2M4ODAwMmE4ZjYxZWM3MDJmY2U1NmI2NTNkODhmM2U1OTUgbGVnYWN5LXRydW5rCis3ODU2MyBmYmRlMTFkMWMxZjViM2I3OWZkNTNjNzBiM2Y5Njk3MmE3ZTkzODQwIGxlZ2FjeS10cnVuaworNzg1NjQgOTM0MjM5YjI2OGFkYzM1N2JjMDk1NDU1MzRlZjM4MGZhZmJmODQ2YyByZWxlYXNlMjYtbWFpbnQKKzc4NTY1IGM4YjI2Mjc2YzU4Nzc5ODViNGIyNDUwYThjNTRhN2UyODgxMmY1ZjkgcmVsZWFzZTI2LW1haW50Cis3ODU2NiA4OWY0MmI2ODFjZTU1NzczMjdmODA0MTAzMmY2MTQ2OGEzM2MxNmU1IGxlZ2FjeS10cnVuaworNzg1NjcgNjlhMTAzZWZhZThkNGViNjk0MjE5YjhiNTJhNzI4MTQyMGY4ODFmYiByZWxlYXNlMjYtbWFpbnQKKzc4NTY4IGY5OWU3YWU3MTJiMGIyNGYzZWVjZDRjYzUxMjFmYjIyOGUzYmRiNGMgcHkzaworNzg1NjkgODQ5OGYwZDlmMDI2MzYyZTlhZTExNTQ1MTZjZWE3MjhhOTFlYjlmZSByZWxlYXNlMzEtbWFpbnQKKzc4NTcwIGFjYTE4ODk3MGM0N2QwNmViMzA2NzcyNjFkOWI0MWQxMDAyM2M5MWEgcmVsZWFzZTI2LW1haW50Cis3ODU3MSAyYzliZjIxOGNlMjk4NzhmNDcxODQ1ODk5YmVjM2M3ZGNmNzBjYTRiIHJlbGVhc2UyNi1tYWludAorNzg1NzIgYzlmNjhlNDJhYjc5NmEzYmFiNGY4Y2YzY2M2OWNlMTA1MDNjYjk5MCByZWxlYXNlMjYtbWFpbnQKKzc4NTczIDExMTAxM2RkNWE4YWEwZWUwZTI1MTdjZmI2MmVhYjliODA4NzRkNDggcmVsZWFzZTI2LW1haW50Cis3ODU3NCA0ZjE4OTQ1ZmI4YjE3ZmRiYzQ0YmZjODI3ODc2NGM4NmVjZjU5ZWYzIGxlZ2FjeS10cnVuaworNzg1NzYgODNlZjY3NTI2MDExYWZmNGZkOTRiMTAzOGUwMzYxZjQ3Yjg4MjgwYSBsZWdhY3ktdHJ1bmsKKzc4NTc3IGY5MjNmZTU1YTQwYzNiNzVlOTUwYmE0MjRjZDJhMmY3MjVkM2EyNmIgcHkzaworNzg1NzggNzU1ZDdhM2E2YmI3NTZlM2E2MjNjMjk1YWM5MjczMmMzNTU3NTYzOSByZWxlYXNlMjYtbWFpbnQKKzc4NTc5IDM4YjAyZGQyZDQ1OWJhYzY2MTA4YjNiMTdmODBjY2U0NDM0Y2YwYWMgcmVsZWFzZTMxLW1haW50Cis3ODU4MCA0NzI4YWEyYzhhMTI4NDVhMjhkMzc4ZGVlOThkYmFhYTllMjIxNTdiIGxlZ2FjeS10cnVuaworNzg1ODEgN2E4OWUxZWM0ZjAwNWNlMGUxMzllMjNjMWQ1N2YyMjE1OTM5MDk5NiBsZWdhY3ktdHJ1bmsKKzc4NTgyIDZkNWMzMWYyNGEyMWIyZDg0ZjZhOGM2MWRiNGY3MmEyMjg2NzRjM2MgbGVnYWN5LXRydW5rCis3ODU4MyA2Yjk2OGUyZjA1ZGRiMGQ5MDMxYWI1ZGI1NDA1NTNiYzJhOTAxZDc3IHB5M2sKKzc4NTg1IDFhY2I2NDNiMmNmNDQ1YTAwOWNkYjdhNTVhZDEzZmM1Mjk1ZGVhZTkgbGVnYWN5LXRydW5rCis3ODU4NiBlNjRjNGI0M2ViM2MyNzY4OTI0MjI1MjgzYzNkNjkyNDNiZmU2YzAxIGxlZ2FjeS10cnVuaworNzg1ODcgNGNhODNjNWI4NTUxYmZlY2JiOGMwNzBjZDRlYTc1OWI4Yzg2Zjg1ZSBsZWdhY3ktdHJ1bmsKKzc4NTg4IDg0MDFkZTY1ZTEyYTIxOGMwNGI0NjM4MDA1MTZlODQ5OTE4NmYzOTEgbGVnYWN5LXRydW5rCis3ODU4OSBkYWJkZWVjNGY5YzFkMzMxOTU0Njc4ZjJmZWRmNjU5ZmU0YjFlYTNiIGxlZ2FjeS10cnVuaworNzg1OTAgODJlZGEzNDVhNWY2ZTEzZDljZWI2MDhlODJkYTQyM2Q5NjE0MGIxMSBsZWdhY3ktdHJ1bmsKKzc4NTkxIDRiN2I2OTUzY2QwNjQ5NzBmNTA2N2NmY2NmOTNjM2E0OGIxMDA2MWYgbGVnYWN5LXRydW5rCis3ODU5MiAxMzdhMjFmY2QzODUwYWI5NTk4NjM0YzhlZjBjYzBhNWZlZTYxNGJmIGxlZ2FjeS10cnVuaworNzg1OTMgODNlN2VlMTg1MTYyM2NjYWUzNmMyNDI5Y2E5OTBkYjQwYmE0NzgyMCBsZWdhY3ktdHJ1bmsKKzc4NTk0IDk3MGZiNGE4ZTY1NGFjOWJmNzlkNDkzYzBlNmVkYzFiNjAyOWM1NTkgbGVnYWN5LXRydW5rCis3ODU5NSAxMmJjYjY5OTM4YjNjMDEyNzc3YzI0NTA1NTVkYmJiY2E0YjE3OGI1IHB5M2sKKzc4NTk2IGMzMWE3YzBjNjM5OTg1NWU5Zjg0YTg2MTdhOGQ5OWIzMGJmYjdiMDcgbGVnYWN5LXRydW5rCis3ODU5NyA1YzY3YzFlZjhhZDNmNDRmNmQ2NmEyNGI3MWYxM2Q2ZGExMWNiZTYwIHJlbGVhc2UyNi1tYWludAorNzg1OTggMDFkNmExNGFiYTY1MTc2ZmIwOTY4ZmYyYjMzOGYxYzFhN2Q2MDRmOSBweTNrCis3ODU5OSA5NTFjOTdlMjg3OGQ3MWQ4MjQyNWMxOWMwNDMzOWQ0ZjhlMGQ5ZTJhIHJlbGVhc2UzMS1tYWludAorNzg2MDAgOGQ3MjE0N2Y0NDJjZjlkNWEyZjc3NDZhYmE5YzQyYjA3NDdiNzE2ZSBsZWdhY3ktdHJ1bmsKKzc4NjAxIGViYTk0MmU3Nzg5NTdhMTE2MTRhNDM2NmU0MjMxZGYwMDkzNTk3OTAgbGVnYWN5LXRydW5rCis3ODYwMiBiMzBmOGNlODIxNjc3ZDkzMGY3MDRkZTUxMWE5ZDZiYzdiYTE0ZWViIHB5M2sKKzc4NjAzIGIwNDQ0MDVkNjJlNTVjMWU1NTAyYmNlMzFhNmZhY2E1ZjgzY2ZjMjIgbGVnYWN5LXRydW5rCis3ODYwNCBmNTQxMTEyNTI0NWVlMjczZjczMTY1OWNlNTM1ZDRkNTAwNWMxNGJkIGxlZ2FjeS10cnVuaworNzg2MDUgMmQyNDE3NjVlNjMxNzRmNzk5MzRjM2E1ZjFlMWQzOTBjZjRkYjY2ZCBweTNrCis3ODYwNiBhYWI1Yjc2YWEwNTk3ZDgxNDk5N2Y4ZmI5ZmRiYjZmNWRmMWIxN2E0IGxlZ2FjeS10cnVuaworNzg2MDcgNjgxNTk3ZDBjNThkZjEwNzBlYWQyMjhlZWUwMTY5NWQwMTBlNDdlOCBweTNrCis3ODYwOCBkNGExODhkYWMyMjI4NTY5MGY5ZWM1OTc1Mjk2ZjRhYzUxZmUyMDc0IHB5M2sKKzc4NjA5IDY1Mzc3NjFjMzEwMTgzZjA0MzljY2VjODYwMzY5MGE5ZWZjOWI0MzkgcmVsZWFzZTMxLW1haW50Cis3ODYxMCA3ZWVjNjIzOGUxNWFjNGU3ZmEyMjNhYjFmYjRjYzBiZmFjYzJkYTk0IGxlZ2FjeS10cnVuaworNzg2MTEgMDg2ODQ2MzgxZThmM2Q2ZmIwZTBlMTljNjY3ODJhOGU4ZDQ3YWEzNCBweTNrCis3ODYxMiAxZTRjNGIyMzVhODlkZDc1NGYwNTM0MTg1N2I3YzVlOGE5YzAwYzUyIHJlbGVhc2UzMS1tYWludAorNzg2MTMgMjVjMGY0ZDdhZTU2OWU0M2ZiNGIzYTYyMGViOWU4NzUyZmRhMjJjOSBsZWdhY3ktdHJ1bmsKKzc4NjE0IDM4Y2VmOGRlYWUyMmVmMDE3MzNlYjcxZGRmYWZhNjYwOGI5NWMyNWEgbGVnYWN5LXRydW5rCis3ODYxNSA1ODRlYzdhNzI1NWIyNDBlOWY1N2ZjNDA1NmYwZTczMzYyY2ViMDQ2IHB5M2sKKzc4NjE2IGJkOWM3OTkzZWU3NWUzNjU5ZDljNjNmNDA4YjFmNDNhNzc5NmYxNjQgcHkzaworNzg2MTkgYmZmMDUwNDUwMjgzZWM3NWM2Y2UwYWIwOTU2MjA0YmM2MGE0YzYwZSByZWxlYXNlMjYtbWFpbnQKKzc4NjIwIGI4NzUwYzcyYjliYzQ3ZmNiNmJhZTExYTBjNjM2ZWUyNGUzZWY3ZjMgbGVnYWN5LXRydW5rCis3ODYyMSA2ODdkODUxN2EwYzM4Y2ZhMmU2NjYwNmZjYjI0OGU1ZTU2Y2ZkZmUyIHJlbGVhc2UyNi1tYWludAorNzg2MjIgMjlmYWM0YjFhNTFlNzYzZDNmMDcyOTQzOTIxY2YwYWMzZjI4ZTUyYSBweTNrCis3ODYyMyA4YWNlMmVhZDU1MjM3YjFlNzJjNmYzNGQ4ODQzZjk4ZTA2MDk3ZjA4IGxlZ2FjeS10cnVuaworNzg2MjQgNGI0MTNkZmEyN2Y5OTJhN2JlMjMyMTgzNGM2OWNkZWUwYTFkNjk5MyByZWxlYXNlMzEtbWFpbnQKKzc4NjI1IGM1M2NjNmJkNmI2MTMwODA2MDcxMDk1MDk0NDY3YmMzNmU2YzNmMmYgcmVsZWFzZTI2LW1haW50Cis3ODYyNiBjNGZjYTc3OGI1NzNhNTI2NjJkNmEwMzY3NDFjNTcyNTI1MTQ1MzFkIHB5M2sKKzc4NjI3IGI5OTk5ODQ1M2Q1MjNhZTEwZWJiYTNkZmIxZDRhOWRmNzUwMGQ0NmMgcmVsZWFzZTI2LW1haW50Cis3ODYyOCBkZTA2YjU5YWE0M2M3ZjlhYTU4ZDFhY2VkOGQ2ZDZhY2VkNDg5NmI4IHJlbGVhc2UzMS1tYWludAorNzg2MjkgNWJiMjk1YTk0YjBmN2QwNGQ0YTI3ODM0YmJjYWUyMGNiMTg1Mzc5YyByZWxlYXNlMjYtbWFpbnQKKzc4NjMwIGMzNTlkNWFjZGM0YjViNDA3YzgwZDU4ZDFjMmIwMmQwZjI0NTU5ZGUgcmVsZWFzZTI2LW1haW50Cis3ODYzMiA2ZjFlMmZmZDdiZGU4OWUwYWJmM2Y5ZGJjOTI3ZDYwNWNkMzhmOWUxIHB5M2sKKzc4NjMzIGRmYTc0OTExNDBkOTRjNmUxZTJlMzQwMzQ5ZDUyY2IwYzcwOTI3NjIgcmVsZWFzZTMxLW1haW50Cis3ODYzNCBkZjAyNzBiZWY5NzE4ZjRiMjA0MzZkM2Q0MjdjODQ2ZmE2ZDNmMGZkIGxlZ2FjeS10cnVuaworNzg2MzUgODY3ODUzNDI0MmEwOTM4ZGExN2E2ZGEyMjRkZGY4MmU4NzVmYTA2MyBsZWdhY3ktdHJ1bmsKKzc4NjM2IGJmZWE2YzIwMmVkZTU3Njc3YWNiNTNkNTRjZTc4MWIwMTlkOTVjYjMgcHkzaworNzg2MzcgNjBlN2U2ZDNlNDVhODkwN2JlOTFhODA3MDVlYTFhYzQ5OTJjY2M4NSByZWxlYXNlMzEtbWFpbnQKKzc4NjM4IDdmNTAwNjQxYzA2YTFkOTRjNzM1MGJiOTkyOWQ1NTU1OTM3ODc2ZGYgbGVnYWN5LXRydW5rCis3ODYzOSBkZDg1MjczOTk1ODIzYWE2MmI4Y2RhMGU4MzI0OTE3YThhYjQyMDYzIHB5M2sKKzc4NjQwIGQ3YTYyYzE2NTA1YjEyY2NjMjY3ODQ2MGQ0OWI2ZWI3ZTQ3MDgzNzQgcmVsZWFzZTMxLW1haW50Cis3ODY0MSBkNWZiZGEwM2M2MDMzY2UxYWVhMDQ1YzE1ZWQyMDYwZmYzOWVlZjNkIGxlZ2FjeS10cnVuaworNzg2NDIgOTk0NGU1MTA0YTU1OTcwMzk5MDNmMzhmOGQ1NDkzZGZjNWRhYjc1YiBweTNrCis3ODY0MyA3NTk1OTIxYTE0NzQ4MmYyMTA2MGFjMWI1MTk1NjAyOTU4Yzk4MzIyIHJlbGVhc2UzMS1tYWludAorNzg2NDQgNDYxZDljZDE5NWI3M2IzMDY2NzI2ODhmMjMwMmFiMTJiYTBhZjcwYSBsZWdhY3ktdHJ1bmsKKzc4NjQ1IDc3OTAwZTdkZWFhNTg3MDA1ZGYxMmYyZWZlNDg0YjA2YWY3ZWU1ZDAgcHkzaworNzg2NDYgMjYyNjlkZmMyMmFiNDdlNDExNGVkN2RkZjQxMjBhMzM4NWYxN2YzOCBsZWdhY3ktdHJ1bmsKKzc4NjQ3IDBiMjdjM2YxOGNiMzg2ZjU2MjQ3N2YzNGZmYjZmOGZlNDAxMDg5ZjAgcHkzaworNzg2NDggZmQ4ZmRkMzg4OTYzYTk2MjFkOGRiNWZkMDY4ZmQwNmE1MjI4ZTFhZiByZWxlYXNlMzEtbWFpbnQKKzc4NjQ5IDMwMmRiYzZjNDgwNzFlZGQ0NGQ3ZTVmYWQzNmEwMzUzNmRhMjZiNDkgcHkzaworNzg2NTAgYjZjYWIyMWQ4MGI5NWI2N2EwNWYzMDllMWM1YmRiZmViYTlkMjlkZiByZWxlYXNlMzEtbWFpbnQKKzc4NjUxIGEzYzAwNTY2YzJkNTljMmRmOTFlN2NkNDc3ZDA0ZDBmNDUwMTZjYjUgcmVsZWFzZTI2LW1haW50Cis3ODY1MiA4NDEzMGMyMjY1ZGNhNmY5MjA3MmM4YTYxMzI4MjlkYWIyZmVjZTZlIGxlZ2FjeS10cnVuaworNzg2NTMgMjk1ZDU5ZmE2ZTYyZTFkMmM1MTkxOGFmM2Q5N2Q3OGU3Mjc5M2Y5YSBsZWdhY3ktdHJ1bmsKKzc4NjU0IGRiNGRhMWVkZjM0ZjVhMjUxZjVkMDQxNGJjNGIwNDllMGQxOWMwMTkgcHkzaworNzg2NTUgNmZhY2JjMTgzYTRhMWZmN2NjNmNhYTViZWZhNTE0ZmRlMjU5YmYwNyBweTNrCis3ODY1NiA5ODdiYTM3YTU0OTQzYWQ0Mzk1MzgzMGM2OWIwNjFhYzZiOTEzZDQxIGxlZ2FjeS10cnVuaworNzg2NTcgZWVhMTVmYjAyNDRlMmViNTYxM2I5OTIxZTE0NGQ3ZWJlNDk4OTA5YSBweTNrCis3ODY1OCA5NTFmZWMxOTZlZGM3MGE5ZGFkYzQ2NGIzOGRkZTYzM2RjZTdiZTk2IHJlbGVhc2UzMS1tYWludAorNzg2NTkgZjgzNWUyODI3ZDFhYTYzMDNiNzA0Yzc4ZmRhYTkwMGE5ZmU5NGNkMSByZWxlYXNlMjYtbWFpbnQKKzc4NjYwIDAyYWVmYzQyNTdkZTc2ZjYzZWUwYjZjMzE2OTdlYTBkNjhiMDJkZTYgbGVnYWN5LXRydW5rCis3ODY2MSBjZThiZTY0YjM0YThhNmQxM2Y0NGM1ZWIyNjUyMTQ2NTRmZmMzMjU0IGxlZ2FjeS10cnVuaworNzg2NjIgZDhiMmZhODg3ODhiMWY2YjNkNzNkZWNiMmI2MzA1YWM2NTFkYzc1YSBsZWdhY3ktdHJ1bmsKKzc4NjYzIDA0OTU1ZTdlYjU5NzA2ZmI4NjIzMDI1ZjYwNDBkMTUwNTBmZDFlYWUgcHkzaworNzg2NjQgMzE5ZTYyMTVjNTZjYjk5NWViZjhhYzViOTk5OWJjZTJlYmQ1ZTkyOCBweTNrCis3ODY2NSA0ZGYzM2U4M2YyNmYxMGI1N2I1NzQxMjlmYzdiMjMzOWZmZDA5YTg5IHJlbGVhc2UzMS1tYWludAorNzg2NjYgYWQyMmJjMjJkZGRjYmVmMzYxOTE2OTZhMDA0MjljN2E2MDhkNTAxYSBsZWdhY3ktdHJ1bmsKKzc4NjY3IDM1NzRjNWZlMjA3YzQ2NjEzMzc2ODljZTUwNGRkOTFhOTYzNGFiYmUgbGVnYWN5LXRydW5rCis3ODY2OCA2OWIyYWJiOTUzNDg3N2RkZDY1MjYyZmFhYzBmZTVmMjY4NDBmMDU0IHJlbGVhc2UyNi1tYWludAorNzg2NjkgODFkYzE3MmJmZGFiZGNmMzQ1NjFiODhmY2UyNWM5OTRhZTIwNzYwNyByZWxlYXNlMjYtbWFpbnQKKzc4NjcwIDc1NTcxNWIzY2YyM2EzZTkwNzI5MGNiZTcwYjE3OTFhZmNlMTAzY2MgcHkzaworNzg2NzEgNDVjNGI2ZDZlMmE1MzRjZTdiYzYyZmE1Y2JkYmEyNjNiODFiZjkzMyBsZWdhY3ktdHJ1bmsKKzc4NjcyIDAyMWNiNGY0NTU5YTVmYWFjNGJmMWE2ZTliYjRlYjhiODRkN2M0MmIgcHkzaworNzg2NzMgNWI4MTllYzRlMjA1ZmMwZmQ5ZDEyZDQ2ZGYwNDljMDU0OTdhYjFlZCBsZWdhY3ktdHJ1bmsKKzc4Njc0IDQzMmY4YmE2NzM4MTgxMmI0N2JkOGEwYWZmNjVhMDZkYjA3Y2QwNDAgcHkzaworNzg2NzUgZmVmNGUyNTNlODhhZjM1YzEyYjdiZDI0ODczZTYwM2JjZmRkN2I2NiBsZWdhY3ktdHJ1bmsKKzc4Njc2IDBmY2EzOTdkNTBmN2ZlNjQ0NzQ2Mjc2NDc0YTc2NDFkNzAyYjkzYzUgcHkzaworNzg2NzggN2I0OGViYWFkYjYwMDBjZmI1NDZmNmFhNzI4ZTk0NDU1NzRlOGRmMCBsZWdhY3ktdHJ1bmsKKzc4NjgwIDdlOTZiMGJjYmEyN2VkNzlkOTk0NjMzZTAzOTU5ZWNmNWEwZjI3ZGQgbGVnYWN5LXRydW5rCis3ODY4MiAwMTk3NTk5MTZhOWJhN2EyNGM5MWQwYWI3MDNkODQ2NmUzMmIyODdlIGxlZ2FjeS10cnVuaworNzg2ODMgZTUwMzAzM2UzMTQzNmI5NDljYWRlNDc4OWQyZGEzNmRjZTFhYTJhZSBsZWdhY3ktdHJ1bmsKKzc4Njg0IDgyNDQ2M2M0NDg5ODQ0MDU4ZDdiY2NkMWU3ZjFiNjExZWE2NTlmYmYgcHkzaworNzg2ODUgN2NkN2ZmNmIwYWRiMjg5MTI1ODJjZTA5ZmVlYWVjMmZhOGFhOGRhMyByZWxlYXNlMjYtbWFpbnQKKzc4Njg2IDhiODY0YWE3OGU5MjUxN2EzZGY0MDlmNmVkNmRkZTRkNGU1ZmJkZjMgcmVsZWFzZTMxLW1haW50Cis3ODY4NyBhZTdmMjZkMjRlMWRjZjc0OTdmZTI5YjdkZjhiZDU3MWVkMjlhYzdlIHB5M2sKKzc4Njg4IDA0ZDNhZTUyZmY3MzAyYTM4NzliYmJiM2I2ZjQyMWQ5NDA1NWNjNWIgbGVnYWN5LXRydW5rCis3ODY4OSAzMjYxOTk5NmEwMTQ4YzRkNzk2MzE2ODgxYzNiOTkwZjdmMTk0NzM3IHB5M2sKKzc4NjkwIGMyZDlkNTBmMzdjNTliNjMzYjRjYjhhOTU5MDRhYjc5NGNlNTJjNjIgbGVnYWN5LXRydW5rCis3ODY5MSA5MWZiMzk0YzA0ZDYzZDk5ZmVlMmFjZGY4YzcyNmZmYjIzNzRjNWFjIHB5M2sKKzc4NjkyIDgxNDc3MTkyY2Y3YTk5YTIyOWY5NjM4N2I5NmI3ZmEwYjU5ZWVmOTEgcHkzaworNzg2OTMgY2VkNWYxZjQxNGIwMGM2NTQ3ZDMzN2QyZGY0NjBiMDAwZTEyNjc3MCByZWxlYXNlMzEtbWFpbnQKKzc4Njk0IGZkMTU1YTM2OGY1YmQ0NjVkNjUzMTMxNzcyMDVjMDJmNjZhMWQwOWQgbGVnYWN5LXRydW5rCis3ODY5NSA4MTc1MjJlMzUyZDY2ZjZkNTQ4YjhiMjBlMDEzNjZhYTI4MDllZDg1IHB5M2sKKzc4Njk2IDE5ZjMwYjQyMmNhM2ZkMTdiYTk0NDgyNzk3NzViMGViMWZjZTlmODYgcHkzaworNzg2OTcgNTA0ODA4M2U5OWZmY2U0MzA5M2E3ZWRmMmY1NzhiM2Y2MmVhZTBhNSBweTNrCis3ODY5OCAzMDAzYzE2NTZlMmFkZWViNWZhZjViYjIwMjBjYTY1MmMzMzNiZDNiIHB5M2sKKzc4Njk5IGJmNTg2YjI3NzZmNjdjYzhlY2QzZjllZGM2MTRhNTg5ZmIwNWVkY2YgcmVsZWFzZTI2LW1haW50Cis3ODcwMCBlY2NhNzAzYmMwZGY0ZGI0NWViYzk1NmM4ZDczMjE4NjZhODUzYWNmIHJlbGVhc2UzMS1tYWludAorNzg3MDEgMzE5N2VjYzA5NDRhMTdmNTU5NDMwYmQzYTQxY2E0OGM5OTdiNzI1MyBsZWdhY3ktdHJ1bmsKKzc4NzAyIGQ5ZTZmMzE4NTY4ZmM5MzYzYTM0NmY3NjBhMDM3MDk3MDVkOWI0YTUgcHkzaworNzg3MDMgY2M3MGY2OGU5YzExMTNjOTdmYTRiMDY3MjFiM2M0NzdlMzBlNmNmYyBsZWdhY3ktdHJ1bmsKKzc4NzA0IDQ1NGVmZjg0MGJkNDIyYWYwOWYwZWIyNTA5N2M1MDEwYjUwODM1ZTQgbGVnYWN5LXRydW5rCis3ODcwNSA4ZGM0MGM2Mzc2MWM4ZmRjYjU1OTRlNTM1ZGY0MWUxNDU0ODdkMWZhIHB5M2sKKzc4NzA2IDI1ZTlkZGJjZTEwYWJlNGZiZWUzODk3NzRmMzQyNzA0M2ZmODdlNDEgbGVnYWN5LXRydW5rCis3ODcwNyAyYjUwOGFhMmE0MzZiYzU1YjI0NzU0NTdlNDI4M2Y2NGVmM2ZlNmFlIGxlZ2FjeS10cnVuaworNzg3MDggMmQ1Y2EyODA1ZWE1ZjFiY2Q3NzQ4ZTZhOTc0M2M0NmM0YjcyM2M3MSBweTNrCis3ODcwOSAzMmFjNDI4Y2QxOGIzNDJlNGQ5YjZiYjk3ODllY2I3OGFkY2UxOWNmIGxlZ2FjeS10cnVuaworNzg3MTAgMjE1NjM4ZmNmMDliYTA4NjMyMGQ4MWNjNjVmNzUwYmI3YjE2NmMwZiBsZWdhY3ktdHJ1bmsKKzc4NzExIDVkNWJjYTZlY2IxNTE4NDI5M2Y1MzQ0MGYwZDk1YjgyMmEyY2I2ZjIgcHkzaworNzg3MTIgNWMzMTc2Nzc1ZTg3MzBjYjNkN2MzMDQyOThlYTM4NWI2ZGMzYzdmOSBsZWdhY3ktdHJ1bmsKKzc4NzEzIDRhMTE5ZDg0ZDBiNTc1NzQzYjAxNzdiY2Y5ODZlYTFiMDg1YzZjOTggbGVnYWN5LXRydW5rCis3ODcxNCBiNjhhOWE4YzJjMWY0OWYyYzAxOGMxNjExZTk1YjI3ZGQyZjg4OTMxIHJlbGVhc2UyNi1tYWludAorNzg3MTUgNjc0MzA4NzVjMWEwMzYzMWFlZWMxNDA4ZGE5NzA3ODVkZTBhZjdmOCBweTNrCis3ODcxNiBhYTQ4NTI2NDUxZDE3MDU2ZTEwM2YxMTU0MjhhNWRkMTdkMGIxMGE4IHJlbGVhc2UzMS1tYWludAorNzg3MTcgNWFhM2JmYzQ4Y2JkZWJiOGVlNWJlOTgzMGJlZjhmMjcxYmExNTZkNSBsZWdhY3ktdHJ1bmsKKzc4NzE4IGJiMDhhM2VjMTU0ZGE3Mzc2NWUxMTQ2NjU4NzAxYWMyMTU3ZWJhZmMgbGVnYWN5LXRydW5rCis3ODcxOSA1YjE3NjQzNzQ1NDVhM2YyZGYxNzM1ZjE5YTE4YTdiMGVkNGNlNDdmIGxlZ2FjeS10cnVuaworNzg3MjAgOTY2ZWIxYjllOWRiYzNkYmY4ZGNlMDM0NWIzOThkMWRmNjQ3Njg0MiBsZWdhY3ktdHJ1bmsKKzc4NzIxIDc0NDRkMzQ4ZDc3MWYwZjk4MWMzODAzNmFjYWUyZDZkYzg4MWE2NzUgbGVnYWN5LXRydW5rCis3ODcyMiA0OGE2YzI2MjEyMjY1YzUzYjZkZmZiN2JhYzU0ZTA5NGM1ZmZiMDYyIGxlZ2FjeS10cnVuaworNzg3MjMgNDg2YzFjOWVlMDA2YzA2N2FlZjRmYjRkMDdhOGVmYmVmOTRlN2UxNiBweTNrCis3ODcyNCBlZmU1MjhlZTk1OGE2YjIxZDVkNTg1NjQ3NDFiYTNlNTFjYWIwY2NiIHB5M2sKKzc4NzI1IDI0YzZhNTgzYTg2NmFjOGQyMDVkYTNkMTA1Y2M3YmMyOTEyNzM0YzcgcHkzaworNzg3MjYgNGM1YzViNDY2OGI0YTZhZDQ4YjY4YjcwMDM5ZTcxMTliNzBhNjQ1YyBsZWdhY3ktdHJ1bmsKKzc4NzI3IGYzNjJjZDRiZDJjNTFjNmNjMDU0OTI1MjY2NjkyN2U1YzIxZDQ4Y2QgcHkzaworNzg3MjggMTIwZDZjY2YyNmIwNGU5OTQ2OGMxNjRhMTg0YTA4ZTAyZjJjNmZhNCBsZWdhY3ktdHJ1bmsKKzc4NzI5IDkyNThmNDA1YTdhYzQ2NmI0ODU3MmFkYTAyM2Q4ZGM5ZTRkYjg3NjMgcHkzaworNzg3MzAgOTdjYTliMTRhNjYwN2JlYzdiZmJjNjllMGI1Nzk4NTYxNTY2YjY0MiByZWxlYXNlMzEtbWFpbnQKKzc4NzMxIGQwYmJiZjNjNTVmNWUwMTVjMzlhMTA1MWQwYmM0NWFlM2NjOWVjNWIgbGVnYWN5LXRydW5rCis3ODczMiBiZGY2ZDc2OGE4Y2M1ZjhmYWQwNzVjOGQzODNkMmVkMDA1OTdkZmI0IGxlZ2FjeS10cnVuaworNzg3MzMgYzJjZjZjNzE3MGM1MTUyYjA1MjgyYjhiMzY1OWNkOTUyNjkzNDE0ZCBweTNrCis3ODczNCBlYmRjMmFhNzMwYzBiZDFjMjczNzFjMzJlNzRlNWNhMDM4ODIzODVlIGxlZ2FjeS10cnVuaworNzg3MzUgYTA3ZjcwZmM4MmExMTAyZjFiYjVkYWQyZTMxODNmZGU0NjMzZjNiMSBsZWdhY3ktdHJ1bmsKKzc4NzM2IGU4YzExODkxNTc2MmU3NzE5ZjU2OTM4YWJlZTRmZTBlYzA1NmY2MzkgbGVnYWN5LXRydW5rCis3ODczNyA1YTk2MzFiOWRkMjI3NjE3YjYzYjJmNzZjMDcwMDNhYTJjMDhhNTg1IHJlbGVhc2UzMS1tYWludAorNzg3MzggZDJlMTAyN2VkZGU4NGEwMjg1M2ZjZjk3OTBmMzExZjEwZjQ2Y2YwYSBsZWdhY3ktdHJ1bmsKKzc4NzM5IGRjZmJjMzRiMmUzYzZhYjc5OWU2ZjZhOTVkNTIyYzhmMTNmOTJiYTIgcHkzaworNzg3NDAgZjllYTkxN2FmZjEzZjJhYWVlMzI1ZDgzODdiY2I3YTViY2NiZjIyZCBsZWdhY3ktdHJ1bmsKKzc4NzQxIDE0OWI4Yjg3NTE0ZDEwNDE2YjU5ODg4NGRiNWY3NDY1MWY2MjViMzggcmVsZWFzZTMxLW1haW50Cis3ODc0MiAyMTI0Nzg2NDBiMWMyNjM1MzVmZDBjYmZhNmQ3ZDVkZmE4ODRmN2M1IHJlbGVhc2UzMS1tYWludAorNzg3NDMgMTZhMjZkNDM3NGU0NmJmYzk3N2VlZTQxZTA4MDRlYjVmODBkNjBiYiBsZWdhY3ktdHJ1bmsKKzc4NzQ0IDRmYTk2YTkxMzgwODcxYjY4ZTFiODRlN2E4NzU3OGU3YTExOGJlNzMgcmVsZWFzZTMxLW1haW50Cis3ODc0NSBhZDI1NmE2YzY1OTkwYzhhMzUzODdiMGQzYzkyYWMwZmY5YzIxMDhmIHB5M2sKKzc4NzQ2IDMxN2QwYzQzYWIyYjZiYzg2NDQzNWI0NWZmNjUwYzVlMzc1ZGYwMmIgbGVnYWN5LXRydW5rCis3ODc0NyBmNzM1NjExMjdmNTdlM2UyMzg3M2U5YTVlMDQxYTJiY2RiMTU1ZDE4IHB5M2sKKzc4NzQ4IGU2ZDE0MTU4NzU4ZTE4YjYzYWY1MmJkMGI1OTE2NzJiMjUyNDJlMjQgcmVsZWFzZTI2LW1haW50Cis3ODc0OSAwODAyYmM5NzNiMzI0ZGEyNTFiY2ZmYzEzYWQzYTliZjUwZmZhNjA5IGxlZ2FjeS10cnVuaworNzg3NTAgY2U5NzNiNWM3NzlmMDMwNGFkM2FhMjBlNWU2MzIyMzQ1YWJmZTVkMSBweTNrCis3ODc1MSBjMTZiMzdiMTg5MWIwMGMwNjU3OTE0MjFlMWQwMzU3ZTBhMjBkNjYwIGxlZ2FjeS10cnVuaworNzg3NTIgZWU4ODAyODE1YmFkMmI3ZmY5ZjU2MGY5MGFmY2VjM2U1ZGY3M2E5MCBweTNrCis3ODc1MyBjZGUyNjg3ZTM3YzE2NTA5MjY3ZjgzNTM2OTcxODkyYjE0Yzc0ZmMyIHJlbGVhc2UzMS1tYWludAorNzg3NTQgNGYwMjE3OTQ5M2MyNWQxZmNiZDE5NTVjMGIwN2E0ZWIwZTdhODlmMSByZWxlYXNlMjYtbWFpbnQKKzc4NzU1IDI5OTBiZDNhZTg4MzhhNzZlZmYxOWRmOTFkMGZmN2M0MGNkZTgyZGMgbGVnYWN5LXRydW5rCis3ODc1NiA0OWEwYTk1MGQyMTliMjJiOWY1ZjlkY2EwMjc1Zjk0NGNmYWNjNzMzIHB5M2sKKzc4NzU3IGUyZDQxMDc5ZDA1OTY3ZTViYjZhNmY4N2NiOTczMDU4ODliYTVmYTkgbGVnYWN5LXRydW5rCis3ODc1OCBlMjNjYmEwM2NjNGIzM2Q5ZTEzZjU4ZDAyMWJjYmNmODAxOGFiMmJmIGxlZ2FjeS10cnVuaworNzg3NTkgMjc0MjJkMTczMWU5ZTQ2OTY0OGY2OTY2MTI3MzAzMTEyOGVjYTczNiBsZWdhY3ktdHJ1bmsKKzc4NzYwIDE3NGIwODc5YjdkMGVjYWNiMjZiNzUzZmI2YTlhNWY5NTk5OWQ2MTEgbGVnYWN5LXRydW5rCis3ODc2MSA3MWU0YWIyMTM0NmQ0MWU1MDQxMTI4NTgyNDk3YTcyNzhjYjM0ZmZiIGxlZ2FjeS10cnVuaworNzg3NjIgY2ZiNDQyZDcwMmNkNDcxYTY1MDJhOWQyZmI2NmU4YWExZWY2NzY0NSBsZWdhY3ktdHJ1bmsKKzc4NzYzIDBhMjczY2ExMGZhNWU0ZGZlNjU2MTg0OWRkODE5OTM2ODc5MmM1MmEgcHkzaworNzg3NjQgNGE2YmU4NjRjNmI4OWIxN2M2MzY4ZDk4MzU3MGFjOTJkNDExMzg2YSBsZWdhY3ktdHJ1bmsKKzc4NzY1IDg1Yzk1ZmQ1ZDdlM2EwNDRhMjA0MGNkMTU1ODUxYWFhZjY4NGZjZGQgcHkzaworNzg3NjYgZWRhYWZjYTg3NDMxYzdjZGZjMTU5OTAyYzg0YTM4Y2ZhMTY0M2I2ZCBweTNrCis3ODc2NyBhYjdjODdlZDVjYWRkMDRiYTkzZTc4ZTI1Y2M3YzEyODU3YjAxZWUzIGxlZ2FjeS10cnVuaworNzg3NjggZGExOTg5NDk0NmUxZjYxMmMxZWM0MDQ1NjgwNDIxNmQwOTY3NWU1MiByZWxlYXNlMzEtbWFpbnQKKzc4NzY5IGU0NWZmMDI3NDgyZmU0ODc5M2RkN2ZlMmIxNTdlNDZkMjc1ODg2NmEgbGVnYWN5LXRydW5rCis3ODc3MCA4ZjJjMzYwZDAyMTRiNTA0NTA4Mjc2N2Y2Mzg0YTk1OGViYTMwZjEzIGxlZ2FjeS10cnVuaworNzg3NzEgNWIxZGEzMmM5ZDRlMmQ0YjBkODdkOTc3MzdiYjA0MGM4ZTBkMjIyOCBsZWdhY3ktdHJ1bmsKKzc4NzcyIGM3NTIwNjRmYzI2MjcyMTQ5ZTJiZWEwNzU4N2M1ZjQzYjRmMTBjNWUgbGVnYWN5LXRydW5rCis3ODc3MyAzN2E4NDI0OWFhMDQ3NzdiMTYwNGFlZGIxNDdkOThlYjYyZTExOThjIGxlZ2FjeS10cnVuaworNzg3NzQgODVlYTQ1NGExM2RjZGExMzYzZGZhNjE2YTk1YWUzZGJiMWQ3MjNmNiBsZWdhY3ktdHJ1bmsKKzc4Nzc1IDEzMWMyMTA4ZDJiMWFmOTg3ZWQ4N2IyY2U0N2ExN2EyOTk2OGFjMGIgbGVnYWN5LXRydW5rCis3ODc3NiA0NjYwMzg3YjliMzUyMzMxNjhiOGY3ZGQwOGRlZTY3MTE5MGIwMzJiIGxlZ2FjeS10cnVuaworNzg3NzcgNDFhZWYwNjJkNTI5MzFmNWM2ZTQzMzg5YWQwYmUyYzczMzVkMmZlYyBsZWdhY3ktdHJ1bmsKKzc4Nzc4IGRhNzE0NjRkMmNmZjIxOGU1MGY2MDFiNDcyMGZiOTU3NzM3ODI1MmMgbGVnYWN5LXRydW5rCis3ODc3OSA1NzViMTJiMTk4YTE2NDRhOTkxYWUzYmU3MzczMDFkMmE1N2E1ZmJiIGxlZ2FjeS10cnVuaworNzg3ODAgMGY0NjhlMmQ5M2QwYWQxZDA2MjI3YmQxMTZhYWFmNmM3YTIwNzdlMCBweTNrCis3ODc4MSBjNjc2ZmYwZDg0OTVmNTc4NzdjNGI0NjZiYTYyZDAzZDQ4OGFhNTgxIHJlbGVhc2UyNi1tYWludAorNzg3ODIgYzZlZDMzMDM1ZDY5MmFmMDU2MmNhZDliMDViZWFmMjk0NWE0MmQ0NCBweTNrCis3ODc4MyBkYTNjNWVmZTQyNTJkZDIzMzAwNTUwZjA5OTY0NTk4MTgzMzAxYWYyIHJlbGVhc2UzMS1tYWludAorNzg3ODQgYjBiODBlYzJlM2EwZmUwYjc1ZGQ0OTBkY2Y0M2JiMzM5ZDEzNmIzZCBsZWdhY3ktdHJ1bmsKKzc4Nzg1IDM5ZDcwNDc4MDdkNTI5NWE2ZDQ4YWQ5NDM0ODM4ZjBkYjM3ZGZkNzcgcmVsZWFzZTI2LW1haW50Cis3ODc4NiA0NDVmODAxY2EyZDBiNDI5MWM1MmFjZDc5Mjc0Yzk4YThhMzYyNWExIHB5M2sKKzc4Nzg3IDU1ZjZhM2Q1YzE3Nzk1NzM3YWQ2OTRiNjQwMjg5MTI3MDNlYzFjZGQgbGVnYWN5LXRydW5rCis3ODc4OCA2NjcxOTMyYmQ4YjhiZmQyMDgxNDY1ZGRiNjdhNjhlYTc1ZjMxN2VlIGxlZ2FjeS10cnVuaworNzg3ODkgYTNmNjE3ODM1NGY1ZGMxYzA3NTQzNjhiMWI3NDk4MGZiNTRjN2E4OSBsZWdhY3ktdHJ1bmsKKzc4NzkwIDk2ZTAwMTFlYTBhNDRjYTZhOTc0YmFkYjQzMTViMDc5MjJkYzQ2N2IgbGVnYWN5LXRydW5rCis3ODc5MSAyYWM0ZjRmN2UzOTExNjFjYTAyMTM3NjZjM2VlOTM2ZjRiYzNmMWVmIGxlZ2FjeS10cnVuaworNzg3OTIgYTJmMWMxNWNhZTZjNDA1ZTIxZTg0MTVmZmI4MzU2MzkzNjJhNjkzZCBweTNrCis3ODc5MyA3MzNjY2MzZjNhNjgwNWIxMWJmNWQ2MzhiZGNlMGQ4ZTIxMzkwYzhiIHB5M2sKKzc4Nzk0IDE0NjE2ZGY5MjQwNzlkMTE1MmRhZWJlYmY0ODMxNGQyNDc4YjQxZDYgbGVnYWN5LXRydW5rCis3ODc5NSBjZGZkZWZlYzk5YWJjZGExNGRjZGFhN2Y0MTUxZTgwNWY4MDE2M2MyIHB5M2sKKzc4Nzk2IDY4ZTA1MDc2MzJhOTFmNzkwMDZiYjY4YzQzY2Y4ODc3ZWY3NDQ5ZGMgcHkzaworNzg3OTcgYWM4MDg4NGRkY2MzMjY2OTQ4MzM5NzQ2YWI2NWFjMDU0YzMwMTI1YSBweTNrCis3ODc5OCAwMjRjNTNhODY1MjFmOTBjMDA0MjEyY2Y3NzQ5MDE3MDFhYjY2ZGZmIHB5M2sKKzc4Nzk5IGIzZTY2NzNiNmFlNGQxZTA4ODJlYWRmZjcyNTZjZTY1NDNkY2Y1OTUgcHkzaworNzg4MDAgZDkyODc4YmJhN2JiZjcwZmVjYjNiYWUzNzRmNzJhYWE5MDRmY2YwMSBsZWdhY3ktdHJ1bmsKKzc4ODAxIDg5NWNmZWJkZTE3MjdiYTdkNTc5OGNjZWFiMmViMGZjOThiNmYxZGUgcHkzaworNzg4MDIgYzU1N2E1NGFkNmQxZjg3ZmFlZTA0NWUwOGI5YmU5NGVmZGIzNGM3NiBsZWdhY3ktdHJ1bmsKKzc4ODAzIDFjZGEzZDc3NzdhZTdlM2Q1NWFhMGY1NjFkNDIyZDJkMmM0NThjYzMgcHkzaworNzg4MDQgYzg3MDM5NmI2YWUxYTExYTk1YTQ1NzlkNGM5NTdlN2EwOTE3N2Q0YSBweTNrCis3ODgwNSA1OWExNTczYjgzYWM0NmIxOGUxODRjN2NiNjk2ODNhYmU1ZjE2OGEyIHJlbGVhc2UyNi1tYWludAorNzg4MDYgZjEyNjgyYWY1NTdiNjFhYTdlMDM5NGYxMzQyNjU1YjVmYjE0YmFiYiBsZWdhY3ktdHJ1bmsKKzc4ODA3IDJhNGU5MmVmZjMwYTc0MmE3ZWE0NTlmODg0MWZiNWMzMjBiMmM0OGQgcHkzaworNzg4MDggZTQyMTU1YzQ3NDk0YWZmZGM2NWI3YzMwMTllODU1ZTAyYmE0N2EwMyBweTNrCis3ODgwOSA4OGQyNjVkZTdkYWUyMDZkMGNkYmJiMjM2OWNjZDZkOTJjZGU2M2E5IHJlbGVhc2UzMS1tYWludAorNzg4MTAgMmVlZjliMGViZDVjZGY5NTg0ZmQ3MWQ3NmNmMThjMDc4NGZiYzYyMyBsZWdhY3ktdHJ1bmsKKzc4ODExIDU2Njc5YWZhZjA3ZGIyYWQ4NjBhODcwMDY1YmVmYjNhN2VkMGU4ZDYgbGVnYWN5LXRydW5rCis3ODgxMiAxZjVkYTU1ZWU3ZDdmMDAyNjY4MzkwMzMzN2FlZmUzZTE0MjNkMGY2IGxlZ2FjeS10cnVuaworNzg4MTMgZTI3NjJmNDk1MzkzNWU1MWEwN2VjOWQ2NWRkNWZkMjg3YmFlNGQ2ZCByZWxlYXNlMjYtbWFpbnQKKzc4ODE0IGJiZjJlZGQ3NTJiNjMyZjA4OTY5NzM5NzNkNDA1NTUxNmY1ZTMzNDcgbGVnYWN5LXRydW5rCis3ODgxNSAyNjlhMTJhNTAxMjNmM2JkOTRjYTRhOWUyZTIzYTAwMzA2MTRmOGRkIGxlZ2FjeS10cnVuaworNzg4MTYgM2M4ZTIwMDA0M2Q2OWU4OWU5YmE2ZWI5ZWFjNTI0MmJlMTM1MjkwMCByZWxlYXNlMjYtbWFpbnQKKzc4ODE3IDU1ZjRkZTVlMzc4YTg5ZWI5Mjg4Yzc4NjlhYWY3OWMxYjZmMjk3MTQgbGVnYWN5LXRydW5rCis3ODgxOCA2NTMzNDMwM2ZkZDNmYTI2NmNkNmIwZDc5NTMyYmVhNzFlZjJjNmI5IHB5M2sKKzc4ODE5IDZkOWJlMWE5N2MxNzIyZTZhOTFkNmIyMTUwMmYxZWE1MGY5ZjUyMTIgbGVnYWN5LXRydW5rCis3ODgyMCBkZmIyMzljNTAwODkyZmVjOTU3N2Q0M2JjODEyNGM1M2U4NGM0ZjQ4IHJlbGVhc2UyNi1tYWludAorNzg4MjEgOWRkMWVjYjVhMjRjMWI0NDIyNzUzMzlhMDJkNTdmYmZiY2M2YThiMiBweTNrCis3ODgyMiBmYTQ2MzA5MTY2OTkwNDYzNTdhNWFjMTY4ODRmM2ZjNDdiZDBlYWE2IHJlbGVhc2UyNi1tYWludAorNzg4MjMgMDE3YWFmZTgzMjZmYWM2ZWExOGRjNzI1ZDM4MTI4ZTlkZTg2NTc4OSByZWxlYXNlMjYtbWFpbnQKKzc4ODI0IDUzMGI3MWNkM2IyOTYxMmU5OGQ2YmUxMDgxZmY2ODNlNTMwYzFiMWYgcHkzay1qaXQKKzc4ODI1IGJjMGNjNjc3MWNhYTc4OTI0MDI5NmQ3NjNlZmYyMTA1Mzc0N2FmNGIgcmVsZWFzZTMxLW1haW50Cis3ODgyNiA0NDY4NjY2ZDAxYzRiYTUxYTY3MjkwMWZjOTcxMGVmY2RlNjJmMmNjIGxlZ2FjeS10cnVuaworNzg4MjcgNTU1MWZlNjY2NzBjMjQ0ZDBkNDUwYWY5ZjBjZmNhYmQ2YjZmY2FhZCBsZWdhY3ktdHJ1bmsKKzc4ODI4IGFkYmIzN2QzZDBlNTAzZDFiMDdiZjY2M2I5MGY3OGU5MmM4ZmUxNmQgbGVnYWN5LXRydW5rCis3ODgyOSAxMzVjZDgwNjRkNmZiODVlODQ5ZjdiYTNjMzlkYTUxODNkZWEzYmE1IHB5M2sKKzc4ODMwIDViNGE2NmQ2MDFjM2E0NDYzMDIzNGVkZDg0M2Q2ZjE5Zjg4Nzg4YzIgbGVnYWN5LXRydW5rCis3ODgzMSAwNTNlZjZlODNjZWQ3YzVkMzg4ZTQwZDViMDVjNmQ4NjMyYzkzMDkyIHB5M2sKKzc4ODMyIGFkOGY2M2Q5ZGNkODAzNDhkMWJlNzhiNmJjZmU2OTVhNTE3ZmE2MjAgbGVnYWN5LXRydW5rCis3ODgzMyA2ZTM3ZTEyNzU4MWI0YzEwMzBjOWMwODc0ODk1MzYzNmFiMDM1NzhiIGxlZ2FjeS10cnVuaworNzg4MzQgYTExMTAyNGEwYmNiNmM3MmQ0MzAxMzZhMjMxMDc3NTNmY2E4NDBhYyBweTNrCis3ODgzNSA4YjI0NmU4NTYwZGI1ZDAxYWU4MWY5OWZlOWRjZWFhMWYzNmQ5NGQzIGxlZ2FjeS10cnVuaworNzg4MzYgZTUzNjdkNjdhN2Y4YWJiNzg2ZjI5NTBlODU4YWRhMDg5MTEwZTU5ZiBsZWdhY3ktdHJ1bmsKKzc4ODM3IGI4ZWRlMGZlZTYxYTEzOWZiZmY3OTE3YTI4NzRiMDY5ODg3ZGQ4OWUgbGVnYWN5LXRydW5rCis3ODgzOCA4MzFlMzBjMGZkNzMwNjg1YWNlMjUzNGFiYjFlYTZmY2JjYmFlNjdmIGxlZ2FjeS10cnVuaworNzg4MzkgOTAzZDNlNjMzYTkyNTdjOTNkODMxZmNkOTBmMjZlYTQ0ZDM3M2NhYyBsZWdhY3ktdHJ1bmsKKzc4ODQxIDA2YWQzMmMwMzQ4NjRiNmFkODk0Y2RlMDExZjliMzIyOWZmYWE0YjkgbGVnYWN5LXRydW5rCis3ODg0MiA5MzQ3Mzc5YmQ1ZmI5N2QzZTYzZTdlNDM5ZjNkOGQxNDAzZjk2NjBkIGxlZ2FjeS10cnVuaworNzg4NDMgYjYyZjc2YWQ0MzBlMjgwMjJlYjc2OWY3NTQyODg0NTMzN2M2YzM2MyBweTNrCis3ODg0NCA0ZGQwOGE1Y2NhOGFkOWM0YTY2NTQ2ZjIxMjJkODBhMmMxYmUzNmJlIGxlZ2FjeS10cnVuaworNzg4NDUgMjAxNjBiNDYxY2QzYWViMzA0NmZhZjk5ZThmZDRhYWEzNTU2NTVlYyBweTNrCis3ODg0NiBlZjQ4ZTQ4ZjA2NmU5OTkxNTczNTY4MmIyOWE1YjEyM2IzNGNmZDIzIGxlZ2FjeS10cnVuaworNzg4NDcgM2VkOTU0OTBiYTlkM2RjNzI4YzBhOWJlZjU1ZjM1Yjc3NjRhMzc4MCBsZWdhY3ktdHJ1bmsKKzc4ODQ4IDZlYTBhNThlZDgzNzY5MDRkYjk5MWJlODU4NmNmZWEwOTU4ODEwMTcgcHkzaworNzg4NDkgNDkxMmNmM2IwMTkwYjM2ZGFlNWI0YWNhNzcwNjI3NzcwNjVkZTE2OSBweTNrCis3ODg1MCBmY2ZlMzI0NjYzYTYxNzE3YTQ5YjU4MmQ0NWU0MTcyMmU1YmM3MzQ5IHB5M2sKKzc4ODUxIDVjNWRlOGFjYjMzYzFhNTExNjkzMGVhODYzOWRmOGMwMjdkNjQzYzkgcHkzaworNzg4NTIgOWMyZDkxOTAxNGQwN2FhZGJlNjE0YjEzODg3MjhhMDc1ZjQ3MzYxZSBweTNrCis3ODg1MyBhNTY2ZTUzZjEwNmQ2MGZlYWJhY2E5MDQ1MjlhZTZiN2Q1ZDBhNzg5IGxlZ2FjeS10cnVuaworNzg4NTUgMTM1YWE3ZWRmNzkyYjgzNzQ5YWZhMzk0NWYzMmE3NGM4NzQ1ODc0NyBsZWdhY3ktdHJ1bmsKKzc4ODU5IDUzOTRkODFjNDUxM2JhYjg3YzJhMzJkODFkNGJlMzZjYTQ3Yjg5ODQgbGVnYWN5LXRydW5rCis3ODg2MCA2MmQ3ZjA0OTcwM2I0ODMwNTc4YmExMGQ3ZGQ1MDRmYjUzZTk4N2ZiIGxlZ2FjeS10cnVuaworNzg4NjEgOTAyN2IxNWY5YmI3NjJhNTc0ZWJmMWQ4YWRmYTQwOTU3ZTYzNzMxMCBweTNrCis3ODg2MiA5OTQ4NzE0NTMyZjkyMTE1YTAwNTQwMjk5ZGU5YjE0ZWNlNGUzNGYxIHB5M2sKKzc4ODYzIGRkNDhlM2YzMmRlNTU0ZjNlYTYzMzM1NGI5ZDZkNmRiZGYwZWJhNGEgcHkzaworNzg4NjggMjM2ZmIwYWY0NDA0OTcwOTY4M2FiYjUxZGYyMDVkOTYwNzUxZDFiZCBweTNrCis3ODg2OSBiMDU2YmM3NjdhZTFlYjE4ZjkyODVhY2IyZDE1YWU5NjEwZjc4ZDIwIHB5M2sKKzc4ODcwIDI2YjE5ODA5ZDgyZThmMzdhNjI1YjE5NDk0OGRlNWVlYzJkMGY0MjcgbGVnYWN5LXRydW5rCis3ODg3MSA2OWI3MWMzMzg5OTI1YjEzNjU4OGIwMDkxMjIxM2QyOTA3N2RjNTM1IHB5M2sKKzc4ODcyIDQyMjYxYzZjYTU2NDMwMWYyZGVmY2JmODEwODU3ZWRhY2IzZmI0YmUgcHkzaworNzg4NzMgMWJjYjQ2NTQ3MmJlNTlhODM2Y2EzNjQ0YzJmYjY3NjVlM2Y2ZjA2YyBweTNrCis3ODg3NSBmNDlkMjRiNDQ1NmVjOWU5NDFhMjg1M2M0MDIzZjEwMmQzZmZjNTQ0IHB5M2sKKzc4ODc2IDA2ZmRjNWUwYzJjMjQzYzgzYzViZTlhNDZmY2RjYjg5MjJkYmFhNTcgcHkzaworNzg4NzcgYzlkZDgyM2MxNDZkMWI2ZjIyZmZjODMxZGU4ZTBkNjY0MzExYjE4ZiByZWxlYXNlMjYtbWFpbnQKKzc4ODgwIGFjNzU0ZmFlYjYzZTg4ZjVlMTFkZDJlZDAxNWUwNGJkNWYyYmY0NzYgbGVnYWN5LXRydW5rCis3ODg4MSA4MmEyMzA0NzE5NGJmZDA1ODZjM2JkNjYwZGU5MWE1MTllY2Y0NjJmIHJlbGVhc2UyNi1tYWludAorNzg4ODIgMDdhZGIwOTQ0MGVmODk2NjUyNDhlNTY1OGE5NDJhOWUxMTFmOGY4YyBweTNrCis3ODg4MyA2YWUwOTBmZDk5ZmUzYjEzMzIwNzI0YjMzNTlkNzdhNTY0OTFiZDBjIHJlbGVhc2UzMS1tYWludAorNzg4ODQgMjczZWI1YzFiOWI5NzM1YWU2M2Y1ZjhhMGIwMzZkOGEzYWFlYTEwZiBweTNrCis3ODg4NSA5MDBmY2FjYzY0MDM0YTE3NGNhOTRjNzEyNmVjNDVkMGM1MzQ1OTQzIHJlbGVhc2UzMS1tYWludAorNzg4ODYgMWUwMWVmOTc1ODk5OWY2ZmNmZmYwMTQ0N2ZhMGRiNzNhNzcxNGJkYSBsZWdhY3ktdHJ1bmsKKzc4ODg3IDc2ZjA3Y2NkN2RiNWM3NWVlYzJmYTZiYmM5M2RlNTVhYmM1NjFmYjEgbGVnYWN5LXRydW5rCis3ODg4OCA2NzI2NDYzNjQ2ZmI0MDg4ZWYzMjMzNzZjZmNmNDQzMjFmOWY3NTIzIHB5M2sKKzc4ODg5IDk4MDgwOGRlMzBjOTFlZjM1OTUyOGY1NzI0NDMyYmQ3YWI5NmYwNDIgcmVsZWFzZTI2LW1haW50Cis3ODg5MCBlNDc0Mzg2ZmY5NmU4ODU5YTk5MmUzOTJjYTMwMjBlZGQ5NDhhM2MwIHJlbGVhc2UzMS1tYWludAorNzg4OTEgZjgwOGIxNmNjZmQ2YWRlMzFhZDUzNGNmN2E1MDdmOGYwMjBjZWZlOSBweTNrCis3ODg5MiBkNmYyMDRkNDA2OTVlYmVmNjEzYWQ0ZmRlZDdmMWQzNGQ2YWEzMWU1IHJlbGVhc2UzMS1tYWludAorNzg4OTMgYzFmYjA3YTU3YzhkNjc5YTMyN2I4N2JlNzE0Mjk4NmMyN2M2MmRkMiBweTNrCis3ODg5NCBjMjFiM2UzMmVkN2I4ZTJlNmE1NDE0NmViNjEzNDVjYzFhOTBhMjdkIHB5M2sKKzc4ODk1IDVkY2MzNjE5ZDZkMWRhODNhMDhkZDQwM2JjNWQzNzY0OTRjOGJlNTEgbGVnYWN5LXRydW5rCis3ODg5NiA2NzM1M2ZiNDA1ZWM5MmJlMTA4ZDU5YjI1MmY3ZGM0YzAxMTA3YjgzIHB5M2sKKzc4ODk3IDIyYzg3NzBmOTkyMzk2YjNjZGExYmVlY2I0MWRkOWZlZDg0NmU4ZjQgcmVsZWFzZTMxLW1haW50Cis3ODg5OCAxZWUyNDUyY2U5NDI2NjE2ZTUyMjYwMTMzMjUwZTQxYjlmNzA4OWUyIGxlZ2FjeS10cnVuaworNzg4OTkgZjQwYTgwODUyNDgwMzViMTcxYjNkNmM3MzM4MGUyYzM3YzhiYzNjMCBweTNrCis3ODkwMCBlMTBkNjFjYTM2OGVkZmFkZmM2ZGI1MDMzZjRjN2ZkZGRhMWFhZWQwIGxlZ2FjeS10cnVuaworNzg5MDEgNzdjNWM5MGJlZWYwMjhkOGM5OGQ0MzA5ZmYwMmI2YzAzNmUxNzA0ZSBweTNrCis3ODkwMiBmNjU5NzdkY2YyMWFjYWQwM2UxZTY0YjQ1NDZjZWY0MjhmODllMmU0IHB5M2sKKzc4OTAzIDRmYmYzZTcwOGZjNDAxYjcxNWY4OTBlMWViOWJiZjdjOWNiM2I3ZDcgcmVsZWFzZTMxLW1haW50Cis3ODkwNCBiM2VlNWZlZDhkYTQ4MTA0ZmQ3OWVhMGNmOTg0ZjJmYTgwYjA3MDhhIHJlbGVhc2UzMS1tYWludAorNzg5MDUgODAyODM3MDk3MTkxNzY5MjZlODQyZmIxMmEyMmQ0NjM1Nzk3MWNiNSByZWxlYXNlMjYtbWFpbnQKKzc4OTA2IDkwZGFhMDdhNDNiZmU5NDdiZDVjMjQxNzM1ZTkzYzdhODQ1ZTEyOWYgcmVsZWFzZTMxLW1haW50Cis3ODkwNyA1YTE2YmY2ZGE5ODkyZjg1ZGFjYjEzNjViNjIzYjhmMDhiNjdkYzVkIHJlbGVhc2UyNi1tYWludAorNzg5MDggZjI1NWE0NmIzMTVhZjYyOTVkOTUxNzQ3ZDA1NzIzNTc1NDZjNjc5OCBsZWdhY3ktdHJ1bmsKKzc4OTEwIGRhOTRmMTY2NmRhMThkMTdjMmE4YzU3YjU2ZTA0Mjg1OTc3NjFmYWQgbGVnYWN5LXRydW5rCis3ODkxMSA1NWVjZGI3OWM2NjAyZGQ2ZTRmZWZiZmMwNGJiZDliNjE5YWRiNGU1IHB5M2sKKzc4OTEyIGIxYjIyYzYwMjIyYjQwMDJlYTcwZTNmN2MwY2NlOTUyODYxNmRlNWUgcmVsZWFzZTMxLW1haW50Cis3ODkxMyA0NjA4MjNjNjc1Zjg5MzhiYjFmNTRhZTllNzVjMzU4M2Q1MTdjNWEwIHJlbGVhc2UyNi1tYWludAorNzg5MTQgNDNjYTY3YmQ3MDBhNjk4MTAzYTY1MmJhMjE1MGMzZmNkZWQzYTM4MCByZWxlYXNlMjYtbWFpbnQKKzc4OTE1IGFkMDE3ZDFiODA3MmUwZmE4OGQ2N2I2M2VhZGE0MzA2M2NlMGY4MGIgcHkzaworNzg5MTYgNWE2ZTg5NzA2NGQ2YmIxOTIwODU5MWQ4ZDUwMzRhM2UwZTJjNjFkYiByZWxlYXNlMzEtbWFpbnQKKzc4OTE3IDZkNWFiZmY3ZmMzMTM5OGIxZGZjNmViZGMxMWNiZmYxN2UzZWY2MTAgbGVnYWN5LXRydW5rCis3ODkxOCBkMWVkZjI4MjQwMDgyNWYxZDE0YjFjOGZlNzJhZWVkY2NlM2Q0YjUwIHB5M2sKKzc4OTE5IDI3YWE0NmQwMjE0YWJjMDA2NDQxMDBhMzk4ZjFmNWI3MWQwMzZlYzAgbGVnYWN5LXRydW5rCis3ODkyMCBhN2I1OGYxZThhZjA4NWQ4NzQ1ZGI4N2M2ZDFjYjRjYTYxOTRkYTY0IHB5M2sKKzc4OTIxIGI4NzhhMGFkNGQ4YzZiNGNiNjVkYTgyYzY1ZDc1YTkyOTBjMWI2ZTcgbGVnYWN5LXRydW5rCis3ODkyMiA1MWQyNmYzMWJjZTk1NTJiNjIyY2NmNWUwZGVmZjU4MjJlNWM3MWQ2IGxlZ2FjeS10cnVuaworNzg5MjMgZTFkNTFjZDMxNWQwODUzNDE2YjZhMmRjZGRiYTVmMjVlYzI0OTdmZCByZWxlYXNlMjYtbWFpbnQKKzc4OTI0IDMyYzVhZDI5NjYzY2RlMzc0MmNhZDEwOWJmMGUwYTJlZDM0N2I5OGUgcHkzaworNzg5MjUgMTllOTY2MGQ5YWE1MTJmZTM0NmJhNDI0ZjUzNTU3ZjkxNjgzZWM5ZCByZWxlYXNlMzEtbWFpbnQKKzc4OTI2IGU4MDhmYzU0OGNkNjY1YzlhNjE0MmU1MDgyODdiNmFhYzQyNDE3MjkgbGVnYWN5LXRydW5rCis3ODkyNyAwMDI2ZTQ0MzYyZTU3ZDA0ZTU0ODViNGJhM2RhMWM0NmNmZmZiNzI1IHB5M2sKKzc4OTI5IDY3NzRlOGM2YzM5ZjM4NGNlNTdiOGY4NTBkZGI2NWRlMjc3MTE2YzUgcHkzaworNzg5MzAgODU5Mjk2YTcwOTJmMGNiYjZmMWMxMmJlMTJkY2MzZWZhY2NhZDRmZSBweTNrCis3ODkzMSBlMGExNzcwZGY1Mjc4NjEyZWRlYzQzM2I0MTE1ZWI4OGFlMTE2NDgxIHJlbGVhc2UyNi1tYWludAorNzg5MzIgNzI4ZWYwMDcyZGFmMjJkODlmM2M4MzE4ZmZiOGQ4NGJmYzJkODNjZCBsZWdhY3ktdHJ1bmsKKzc4OTMzIDI5MDlhNGNiMWJhNzJmMTNjZDUwMzk4NDM3NGUxYTcwOTQxMDI1ODAgcHkzaworNzg5MzQgYWRjMzkwZTY2ODkwNDAxZDc2MWYxNzc0ZmMwOGI1Njc3ZGVhYjk1YyBsZWdhY3ktdHJ1bmsKKzc4OTM1IGNjMTMyMTIxMmU3MzQ2MGNiYjFlNWU5ZDkwNzAwZjlmOTYxYTM5ODAgcmVsZWFzZTI2LW1haW50Cis3ODkzNiBkNmUyN2ZhMjJmNDJhMjY2YzY2ZWViNjM4ZDA1NmNjMDJlYTFmODFiIHJlbGVhc2UyNi1tYWludAorNzg5MzcgNWZlNWEyNmUzMTY5ZTg5Y2RhOTU4MGJiZjg5ZjM3ZmY5OWFkNjc1OCBsZWdhY3ktdHJ1bmsKKzc4OTM4IGQzOTA1YTlmNDBmNDA1OWQyZDViOTdiMjU3N2Q1MTJjN2ZmZWJjMzcgcHkzaworNzg5MzkgMGI0NTdmMTQ5NzYxZGI2YWFmNzBjMjhkZTI1MDViMGVmMjRlNTMwZiBsZWdhY3ktdHJ1bmsKKzc4OTQwIDFhODEwY2UxM2RiZDdjNDNiYzdiNzMyMzM3OWNjNDVlMWI3NTIzZjkgcHkzaworNzg5NDEgOTY5NjkzMmFkODI3NWU3M2ZhOTdjNTA4MGE2ZWFiMTFlNmNhZTNhOCBweTNrCis3ODk0MiA3YTE4YzI3NjI4ODYxNjU0MzA5YWRkYTQ0M2FhYzhiMjc2Mzg3YmU1IHB5M2sKKzc4OTQzIGQzMGViNDIyYzU2NGJmNjFhMGMzZDgwZDA4MjIxZjlhYTIwNDIxNjAgcHkzaworNzg5NDQgNDYxYjg5Yjk1NTVkMGNhOTMyYzU5ZjQyMTNkMWUyODUzOThiMjIzOSBsZWdhY3ktdHJ1bmsKKzc4OTQ1IGYwOTdmMmJhMjMyOTM3MjczMzNhNmZiOThlNWFjNWMzY2MxNGU2MGMgcHkzaworNzg5NDYgNzY4NzIyYjJhZTBhNTk4NDA3OTBkZTE1MDI1ZGQ1NzdiYTIzM2JjNyBweTNrCis3ODk0NyAzNzJkMWRlODZkZTlmODYzMGRlNjg4NmM5NzkyZTYwMzhiYzU1OThjIHB5M2sKKzc4OTQ4IDNkNjgwOTQ5Zjc1NWQ4NmJhOWFlNzEyMzRiNTMxODUwMjQwYjdhYTYgcHkzaworNzg5NDkgZjEyNzBlMDBmNTg3ODc2YzNjYWYxYWVhNTY5N2YwYzQ0MzA0MjgxYiBsZWdhY3ktdHJ1bmsKKzc4OTUwIGRmOGY4MWRmODU5NWNlNWY5NGQ0YjUzYjRkOTFmNjgxMjlmNjQ1NDYgcHkzaworNzg5NTEgMzA4Y2ZmN2RmNjRmMTc0ZWRlODY5YTM2YWJiOTBlMGYyNDM1Nzk3OSByZWxlYXNlMzEtbWFpbnQKKzc4OTUyIDQwM2QwYTI3YmQ1NmVlNTUzNjRjN2NmZmM0YWI4MGYwYjQwOTM5ZWEgbGVnYWN5LXRydW5rCis3ODk1NCBlN2YxMWY0NGQ1MTQ1NWY0MmNmMmU4NzhkZGMxNGQ4ZDUzOTY5Y2I0IGxlZ2FjeS10cnVuaworNzg5NTUgNzdjNzFmMjU4ZGY3Y2E3NWY4NWI0OTg3YjUzNTk3NzI2Mzg0YTVmZiBweTNrCis3ODk1NiA1Yjc1NGU4ODI4NTdjZmQxYjMzNDVmNDMxMmRkODgyNTlhM2NhOGUyIHB5M2sKKzc4OTU3IGI5M2NmYWZjZGNhZDdjMzNjYjk1MzY4OGQwZTExMTU2YWQzMGViYjEgcHkzaworNzg5NTggOWNmNzAyYzkxYTllOGFlZjg0OTNmM2E1ZjUwZjc0NWI2ODVmYjBiYyBweTNrCis3ODk1OSBlN2I1ZmM4NjQ2YWJmYTkwMWU3MmEzM2FjMzk4YWY5ZWQ1MmVkNzY5IHB5M2sKKzc4OTYwIGM4Y2NiNGUwYzZmZWE3ZDNkMDMzZDJlN2JkNDY1OTg4ZjJlNWRmNDYgcHkzaworNzg5NjEgYzQ1ZjIxNzA1ZWNiNzllMzQxYmZiNGMzOTNmMWM1NzUyM2I1MzZiMiBweTNrCis3ODk2MiA4YTkwOWU2ZDJjYWZhNzkzZWZlNDdiYjQxNjIzNTUwMDM3YTNhYTY3IGxlZ2FjeS10cnVuaworNzg5NjMgYzE2ZTA3NTVmY2Q3ZDA3OGQ0NjUxNDk0NjU2NmIwYjk0MmUxYzk2MSBweTNrCis3ODk2NCBiNTcwYzViOWIyZWYzNTQ4NDM2N2U1NjE0NTMwMTkwOTlkYjRiYWMzIGxlZ2FjeS10cnVuaworNzg5NjUgNTllMjIzYTA1NjgwZmEyOTFiZmQzM2UzMTMxYzY3NDE5NzVhMDIxMyBweTNrCis3ODk2NiBkMzYwZjM3YTRiNTk1ZmI5YTM0NTMwNTc1ZDFmZTQ1ZTk2ZDc2Mjg4IGxlZ2FjeS10cnVuaworNzg5NjcgOGYxOTkzYjg2NmY3OTAyMTQ4MDFjMGNjMTgxZDRiMzBhYjdiOGMyOCBweTNrCis3ODk2OCBlZWZkNTIxZjE5Y2UwNWYzOWY3NGIwMmM3MTkyYjZiZjJhODBjYjBjIGxlZ2FjeS10cnVuaworNzg5NjkgYmIwNmFhOTE4MzgyMWQ0NTIyN2IzODJmOTcyODBhZTBhOTZiMDJkMyBsZWdhY3ktdHJ1bmsKKzc4OTcwIDA4YzU0NzNiZWRjYzM5M2VmZTU0ZjJlY2E1MWUxMWE4YWMxMTE5OGYgbGVnYWN5LXRydW5rCis3ODk3MSBlMWRlMDgwYzQ1NTZkMzk1MDAwNGI2NDM0NThiYWE0YzA5ODlhZWExIGxlZ2FjeS10cnVuaworNzg5NzIgYjc0ZjFiYjg4ZTYwOTRmMzMzYjgyYzc4YzZkNWE2YmRhMjJiMWQ0MyBsZWdhY3ktdHJ1bmsKKzc4OTczIGFkYjVlOTI4YmRlMjBmNzJlNjU2MWUwZTBmZmUwYmNkMmZlOTc1NWEgcHkzaworNzg5NzQgMzhmMmY1MjYyYjIwM2FkNTZmMTA5ODBkNmE3NWI0YWIwODUwYWU2NCBsZWdhY3ktdHJ1bmsKKzc4OTc1IDM3YWQ0MGEyOGQzYmY0MGI5YzcwMjBiZTRkZTk0OTYxYmFhYThlMjIgcHkzaworNzg5NzYgOTVmMjFiMmMyMTZjMDhmZGQ5NmIxZmI2NTA5YjBkY2IxZDg2NDBlZSBsZWdhY3ktdHJ1bmsKKzc4OTc3IDhlMzhiN2JlZjcwMDA0MmZmNmNlM2ZhMGFmOTU4YjUyZTAxOGVjNDEgcHkzaworNzg5NzggZGIzNzlhOTBiNDZlNDA0MDJkNDUwYjA0ZmIwZGFjYjZmYzY5MDU2MSBweTNrCis3ODk3OSA3M2U0MmMwZjVjOTllNTIxZmRiZjFlODA5OWM3MGZjM2ZjYjkwMjE4IGxlZ2FjeS10cnVuaworNzg5ODAgYjg5MDBhMWQ5ODM1MzA4OGM1MTBhYjE2MTI2NWRhZjQ0ZjU3NGY5MyBweTNrCis3ODk4MSBhMmRiYTZmZTNmYmU1YTg4Y2FhMjI0NjRhZjUzNjc3YzJiMzEwMDY4IHJlbGVhc2UzMS1tYWludAorNzg5ODIgOGFhNTUzMGU4NDA3M2Q4OGZiYWViZDMxNzdlODIxYWVjYzc4Mzk3MiBsZWdhY3ktdHJ1bmsKKzc4OTgzIGVlYjliZjE1MjViYWM4YWFkZGMzNTAwY2NlNDQ3Yzg4YTE4ODI5NmEgbGVnYWN5LXRydW5rCis3ODk4NSBjMTliNGJmYjgwNmFhOGMxNTE1ZDgzN2YxZDljNDgxZDE4NTFjYzEyIGxlZ2FjeS10cnVuaworNzg5ODYgYzRkZDMwYjVkMDdlYWNmYjNlYWVkNDQ3ZTg1YTllMTE1YzY3N2RjZiBsZWdhY3ktdHJ1bmsKKzc4OTg3IDU5OTMxMTc5YzVlMmM1ODIzZDE2MmQyNzYwYjdiYzI4NThhN2Q0YTcgcHkzaworNzg5ODggNzk4NDVlM2Q1Y2FjMjFlNWVhMzY2ZDhkYzZhMTE0OGJjY2ZkM2UyYiBsZWdhY3ktdHJ1bmsKKzc4OTg5IDlmZmM4ZjA1MTVjZGVjNjA4NGZlNWVlMmE4MWQzNzVmMDY4ZGE2ODEgcHkzaworNzg5OTAgOTIzYzg3MzljYTg2MTc0ZmVmOTI0OGQ2NTBlODQwMTczMjJhN2I2MiByZWxlYXNlMzEtbWFpbnQKKzc4OTkxIDg1Mjc5OWJiM2ZiMTNjYzFiYTc1YjQ4MTUxMzc1ZjcxMzYzMTUwYjUgcHkzaworNzg5OTIgNDI1NzJlMzQ3MTA4YTJkMWRkNzUzOTVhNjcwNjM2MjhiNDdmNmNkOSBweTNrCis3ODk5MyBiNDUzM2I1ODBmYzllYzFhM2RhNTU1ZjVhZDgzOGQ2NDhmMTNmNzFlIHB5M2sKKzc4OTk0IDc0NTE0MDAwZjgzNzVkNjQ3OTk5ZTU2ZDYzMDIzZmZlMjhmOWVlNTEgcHkzaworNzg5OTUgNjYxY2EwYjA1YTMxZTc1NWJjMzFlYjBiYTIyNzU0MTY5MjRmYWY1MyBweTNrLWppdAorNzg5OTYgYmY0YTRhY2VmYjJmODcwOGIzODkyNjc2OTRkNzlmYjQxYzBmNWUzZCBsZWdhY3ktdHJ1bmsKKzc4OTk3IGM5NjZlNmZkNjE3OGIxM2RkNDM3ZTZjNThkYmViNmM1OGVjOThlNDQgcHkzaworNzg5OTggOTViMjY5Yzg2OGRhYzk0NWIxYWNkZGVhNmI0NDNlZWU3MjRhZmQyNCBweTNrLWppdAorNzkwMDkgYWE2MzI5NDNiOGJkZGFkMTEyZWE3MGEwZTVlYjQ5NmE1Njk0YmUyNSBweTNrCis3OTAxMCA5N2I2NjJiMTBmZjgzOTBlNDE5MTc0Y2NhYWJhZTY0NmUxOWJlNzhlIHB5M2staml0Cis3OTAxMSAyZTE2Yzk2MzQwMWRlMDNiMDY5ZWM3OTNjZTAyYTIxYTcyNjY3YjRiIHB5M2staml0Cis3OTAxMiBiYzY1Yjg2ZmFlOTQ2MmU3ZDhhNmJlOGY5M2QxMWJkNmVkYzdmMGQ1IHB5M2staml0Cis3OTAxMyAxOTBlYWRhZWFiYzUyYWQ3ZGZkMjUzMGQ3NTY2ZDFlOWE2MzdiNTJlIGxlZ2FjeS10cnVuaworNzkwMTQgMGYwODA5NjFlY2VmMTMxYjA0ZjIzODJmNDlhNjhhMDBiYjZiOGY3MiBweTNrCis3OTAxNSAzYmUzYWMwMTliZGIwNGU0MzkwZDE5NjE3OGI3ODhkMWFkNWQzNzJlIHB5M2staml0Cis3OTAxNiAyMDY0YmY2MmEzOWY3ODY4YjNjMzc0MGE5NGQwNTIzYWYxMjk1ZjIzIGxlZ2FjeS10cnVuaworNzkwMTcgYmFjNzJmMTFhOThjNTZjMzYwNzhlMmVkZTMyYjA1MWE1ODA4N2U1MyBweTNrCis3OTAxOCAzMGYyODMwMzllMGU5OWE3NTdkMDgwMzAzZTAyODhiMWFjNDVhMTVjIGxlZ2FjeS10cnVuaworNzkwMTkgNDQwN2FjNGM2MzYwYmU0MWYwYmVhZTc5MDNjYjQ5NmYyYmU5NTEwYyBweTNrCis3OTAyMCA1OGUzYmMyMWMyZGQ3MDFlYjQyYTU3NWM3ZTBhYjA1NjFmZDM5MzBmIHB5M2sKKzc5MDIxIDcwNjU1OWQzYWM1OTA4ZWNhYTdkNDcwZDg1NjE2NjVkZTFjZDliYWYgcHkzay1qaXQKKzc5MDIyIDY5YzBkNWVhMmUxZTNjM2I0NzBlOGU0NmUzZDc4ZjAzZjgyM2E2YzMgcHkzaworNzkwMjMgNWI4ODhmNTkwZmUyNGNiMjM0ZTEyNmZjNGNmYmRjYTEyN2NjN2JmMSBsZWdhY3ktdHJ1bmsKKzc5MDI0IDU4Mjc4MGVkZDBlODhhM2JjNjUzMzY2OWUwNTBlNTcwNDZlMzJkN2MgbGVnYWN5LXRydW5rCis3OTAyNSA4MDM4YWYxZTIwNjU1ZWI2MzNjZTY4YjQxOTBjYWFjNmY0MTQ4ZGNlIHB5M2sKKzc5MDI2IDhhNDY5M2Q1MTdmZWNmMWEzYzg0OTE1NzA3NzI0MDYzNjkwYmU5OWQgbGVnYWN5LXRydW5rCis3OTAyNyA3ZjE2MmEzMDk0OTc4NWQ4YmUxMDE5M2Q4NjM4NGQ3ZDNlNmQwZDliIGxlZ2FjeS10cnVuaworNzkwMjggMzQ2NTgyZjg1ZmFmODg0N2Y1YjJmNWIxZDkxYTgyZTVmZDY4MzU0ZSBweTNrLWppdAorNzkwMjkgMTBiNzYwNmE5M2VkMDM5MWEyMzM1NWVjMzQwM2Y4ZWRmYzNkMWRlYSBweTNrLWppdAorNzkwMzAgOWI0NjI1NzAwMjUxYjc0MDA2Y2YyNDVhYmNkZjZkMDJkODhjZWIxZiBsZWdhY3ktdHJ1bmsKKzc5MDMxIDdkZjNlMTNkM2U1MDllMGYyYjA5OThjYzdhYzk5YmQ2NzE2N2NjYTcgbGVnYWN5LXRydW5rCis3OTAzMiA3NDA5YjVhN2M4MWE2ZjA2MmZlNzM2NzQ4MWQwZjU2MTgzMGE3ZGVhIGxlZ2FjeS10cnVuaworNzkwMzMgODBkYzRkMTMxZDg1ZGQzMzEyMGY5ZWFhZWQ4MzlmNTFhYjY4ZDI4MyBweTNrCis3OTAzNCBiODc5MjA5YzIwMmZkMzMzODgxMDJhNGUzNDk4NmE1MjVkZjZkNGExIGxlZ2FjeS10cnVuaworNzkwMzUgNTI0NzllMDQ1NGU5MGNmY2VjOTNlMzMyYTI5NDRiMDY2ZWIzZjE5OCBweTNrCis3OTAzNiAwYWMxOTE5MGE3MTBmYTc3MzRjZGZjNmY0YzNkNjNiNGYzN2ZiMTQ2IHB5M2sKKzc5MDM3IGUzYmUxZjFhZDYxZWUxMTUyZWUyM2ViOWZjZjY0MTJmODkzZjNhOGEgcHkzay1qaXQKKzc5MDM4IDUzMWQzMDIzYjQ4YjdjZWQwMzQ4ZmQxMDYzYmU4MjAyZDg5MjBhZWMgbGVnYWN5LXRydW5rCis3OTAzOSA0MzVmYTIxNWQzM2YwOGE2OGI2OWQ4NWQzMDFmMjcxMDJkMDNmMmI2IGxlZ2FjeS10cnVuaworNzkwNDAgZDYyY2ExZWFjY2I5ZGFiZjdjZDE1NGM1N2QzNjlhNzYxNjZlODgxNiBweTNrCis3OTA0MSBlYTI3OGQ5YzBiMmFhMzNmMzQ4ODBhYzgyZGYxYjIyYmI0OWMxYzZkIHB5M2sKKzc5MDQyIGIxYWU0ZjgzNzdmYjZlMzFlNTBkYTU0YWYyZWM0YzE5NDYzY2Q5NWUgcHkzay1qaXQKKzc5MDQzIGY3MjIwY2ExMTM2M2M5YzdjYTMwMzhhNTg2Yjc3MjE0NWIxN2RiM2IgcHkzay1qaXQKKzc5MDQ0IDg1NTVhNGNiN2M0Y2I2MzY4NGY0NDk0ZGJkZGQ2ZThkOWIzNjE2MzggbGVnYWN5LXRydW5rCis3OTA0NSAxNWJkYjk0YzgwNTVjZGU5YTAxZmI3NzAyYTI2MzU2YTdmNjRkODBlIHB5M2sKKzc5MDQ2IGJmZTllZTAyZjRjMDdlMWNiNzE2ZTAyZDc4YTMwMDdmMmJhNWFjNDkgcHkzay1qaXQKKzc5MDQ3IGExYjZhNTRlMmI2YTUxYzUzNTdkNDMwMjFmOWNiYWUzYTFiY2U0NzcgbGVnYWN5LXRydW5rCis3OTA0OCBkOWVjNGM4Y2U2OTU0MmM1ZmE2M2VlZDAwYWE3NTdhOWVkMzhmMGZjIHB5M2sKKzc5MDQ5IDc2ZjllM2I2YzU4NGU0OGMxZDhjOWY0MjEwOWFhNjM0YWIzNzU1NGYgbGVnYWN5LXRydW5rCis3OTA1MCA0ODVmZTIwZGFiMTIxY2I0NjkxNGRmM2FmYTVhNTMwM2I0OTYxNzRiIHB5M2sKKzc5MDUxIDQyOTQ2MmQ0Y2EwYzIwMGM1ZDIyM2JhYjE3NjZlMjkwNGQ5N2NmNzkgbGVnYWN5LXRydW5rCis3OTA1MiA0NjE4M2JmNGYxNDM2OTA1YTk1YjkxYTg4ZjBmOWI5ODNiMzgyNDdjIHB5M2sKKzc5MDUzIDQ2NTY4NDZhODliMjY3NWEyNzUzY2RlNzFkYjMxNDBjNTg2N2FjZjggcmVsZWFzZTMxLW1haW50Cis3OTA1NCAyY2ZhNDQ5NzE4OGZlZjQ1NTBiNGQ1YWMwY2NlN2JhM2U2NWFjNzRmIHJlbGVhc2UzMS1tYWludAorNzkwNTUgZDFkYmU1ZGYxNzkxZjI5MTg2Yzc1ODE3OGZhNzBjZTNiOGNkZTRkNSBsZWdhY3ktdHJ1bmsKKzc5MDU2IDg3MTI1ZDc2NDdkNjg1YjEzYWY3NjY4NWIzYzdkNGFjYzIxZTZmMWYgbGVnYWN5LXRydW5rCis3OTA1NyBkN2I5ZTI5NDFlMTQ1ZDdkZGRiYTEzNDhiZWJjNzAzMTYwMjIwNjJiIHB5M2sKKzc5MDU4IDI1ZGU3MTY3YTA1NThmOWEzNjAwMjM4NzY0MDM5ODM2MDQxZjYwNDEgcmVsZWFzZTMxLW1haW50Cis3OTA1OSAzNDRjYjZhNGVmN2RhZDdiZTQ3MTM4NWM1ZDlmMzE1YjMxZTczMDFlIGxlZ2FjeS10cnVuaworNzkwNjAgMjJmNTg5YThlM2FiOThlNmFhYWQ2NjNmNTEwZmU2YjA0ZDE4MWU3ZiBsZWdhY3ktdHJ1bmsKKzc5MDYxIDNmNGM3YzRlZWY2MmFmODIzYjIyY2I2YTNhOWNlNWNiYzBmNzc0NTEgcHkzaworNzkwNjIgMDM4NTJlYjA4ZGIxNjE0Njg4Y2E2YjcxNTBhNjE1OGEyOGU2MmQ4ZSBweTNrCis3OTA2MyA5OWFmNGI0NGU3ZTQ5MDM5MDgxN2E1OTdhNTQyNTQ2ZDc0OWU2OThlIHJlbGVhc2UyNi1tYWludAorNzkwNjQgMTZhYWIwMmVkOTljNjdlYzI2MmI5N2EyOThmMzI3YTIyMmM1OTJmMyByZWxlYXNlMjYtbWFpbnQKKzc5MDY1IGE1ZGIwZGYzMjM4MjA5NDNkNjk0YTYwZDkyMzVmYjE5ZDU2ZDQxZWUgcHkzaworNzkwNjYgNzJhODA5ZDE2NWY0MzZjYzkwOGRiMTdkOTlmOWZmYTBhMzZkZWVhMCBweTNrCis3OTA2NyAxNWI4N2VhMTQxM2Q2ZTgwMjBkM2NjNWQ2MDc2ZDM0YjJlNmIzYTUxIHB5M2sKKzc5MDY4IGUxNWE4YTQ3NjQ5NGJiOTQyYWQ4ZDQyYTMxZjUxYjExMzc4NjMwNDMgcHkzaworNzkwNjkgNGYwOWQ1YjE0NzVmZmFjMzU2NjAzMWYwNjdkNzg3ZGZjYTZhMmFiOCBweTNrCis3OTA3MCAzN2IxYjkwZGU1YzE1NWQ5M2IzYTAyODVlMjNmZjExNDdiZTljNGMwIGxlZ2FjeS10cnVuaworNzkwNzEgZWVhNzJiODFhMjNjNjVjY2JmNjA1Yjg2ZGE5ZGRjMDJmNDFlYTQxNSBweTNrCis3OTA3MiA5NmVmZWJkYTRlYTJjOTZkMzFlYjY2ODVhOWRlY2Q2YTFiYTY3YzMxIHB5M2staml0Cis3OTA3MyBmYmMzZjE2OTFhZDg5ZDVjNDgzOGEyNjUzZmRjYTkxNmY2YWYyZmUwIGxlZ2FjeS10cnVuaworNzkwNzQgMGIxZTUyMjgwN2YyYzdiMWRkMTcxYTcwOGZmMTNhYzMyMTEwOWI0ZiBweTNrCis3OTA3NSA5MTAzODU1YjgyNmJkNDc3NzI0NDkwNjY2NDA3M2Q5ODk5ZTI0NWFmIHB5M2sKKzc5MDc2IGI4YjQ5YzgyM2ZlNDQ1YmU4ZDhiZTIyYTM1YWYxNzMyMDk4Y2NiNWYgcmVsZWFzZTMxLW1haW50Cis3OTA3OCBhMGE2N2MyZmI3ZmY2ZTQwMzk5MGUwYTliMjFhMWU0ZGEwODg3NWEyIGxlZ2FjeS10cnVuaworNzkwNzkgOGZhMTI4NGNlMDBlNTkwMDI3YTQ0ZTVlMmY0NjA4MWRhNDEyZGI3NSBweTNrLWppdAorNzkwODAgZGQxMmY3ODhhNTQ0ZGY2NmYwOTE5MDg3ZjcxZTVkMzY3OTlkOWZlNSBweTNrCis3OTA4MSA0NzFkMDdkMmEyM2Y1ZWY3ZWQyOGJhYTkyNDk2ZTM1ZmY4MGMzODg0IHB5M2staml0Cis3OTA4MiBhMjQxZTQxNTg4ODIzZTcxMWJmMWQzOTc5ZmEyZjQ2YmZmZDVjMDc5IGxlZ2FjeS10cnVuaworNzkwODMgZDk0NDExNDAzMDkzYmIwYmM3ZDgyOWU2OWU3Mzc1NDE4N2QyNDZjZCBweTNrCis3OTA4NCA3N2Y4NTNmZTNjZjI2MTQzZGVhNTk4MjNlOGZmZmE1MDVkMTQ2ZWU1IGxlZ2FjeS10cnVuaworNzkwODYgNTBlMDZiNmFiOTU2NWRmNjdhMmVlYjBmMmE3MzVlYWNkNzUxNjkzYSBsZWdhY3ktdHJ1bmsKKzc5MDg3IGQxYzNhYmM4ZTBjMjljNjBjNzZlNjc0OWI4MmQ0MTlmOTZiZTg1NzQgcHkzaworNzkwODggNzkxYmEyMDFiYWE5Nzc2YmZjMjhjMDAyNDIzMTAyZTU3NjUwYTUzOCBweTNrCis3OTA5MiA0Mjg1ZWEzM2E1ZGZlNTIxZmJjMDFmNmFhMTcxNDdhMDExMDBiMDVhIHB5M2sKKzc5MDkzIGI5ZmZhOWZkMTAxYjViOWM0OWMwMzgyYzY1MjQxNGJiOWUzYWE4ZjIgcHkzaworNzkwOTQgOGEyOGJlNDVjMjQyM2NiYzEwNTAxNGUxYjM4Y2E5YzU4ZDYyZjY2MiBweTNrCis3OTA5NSA1ZmJkOWM2Mzg5Yzc1M2FlMmMxMzAzOTU5ZjA5MmI2YWM1NzhiMGQ5IHB5M2sKKzc5MDk2IDRiMzU2YzFiMjVmNjZkOTA5YmFjMzJjMGQxNzAzYzgxY2I5ZTZlNjMgbGVnYWN5LXRydW5rCis3OTA5NyAwMGRhYThiNzM2Y2M3ZmM1YjgzMWFjZmJlOGZjYWU5ZmU0NGU2ZTU1IHB5M2sKKzc5MDk4IGI2Mzg3ZjQzY2RkYmQ5YzNjZGRhYjhhMGZlNDc5YjRjY2YwMDE0OWYgbGVnYWN5LXRydW5rCis3OTA5OSA5MTQzMWIwNTg0NzhlYzE4NTg2N2M3NWM4ODA2ZDFlNzA1YWFjMjE4IHB5M2sKKzc5MTAwIDA3Yzc2NjRmMjFhMTg5OTE5NjUxNGM4NTEzYzAzN2MwZDYyNWNmNzcgbGVnYWN5LXRydW5rCis3OTEwMSAyNTEyYzJhZDVkZTcwNWJiNjE0YWRkMmZlNjAyMjgwNjA1NmFiZDQyIGxlZ2FjeS10cnVuaworNzkxMDIgNDU4N2UxZjc0ZWQ4NWQxMjhlNTI4ZTc3ZDMxYzYzYTQ4MGI1ZDM3NiBweTNrCis3OTEwMyAyYjFiMDM3OTcxOGI0OWQ3NzJhYWQxNjM1YzdhNjRiOTQ4YjFkNzBkIHB5M2sKKzc5MTA0IDYzMGNlNjJjOTQ2ZWY0N2FjNDQyZmVmY2JkMGE2NzNmMGU1MTExZjYgYnJhbmNoX2xpYmZmaS0zXzBfMTAtd2luCis3OTEwNSA4M2E3Njg5ZjFiYjVkMzMyYWRhOTU0M2JkYWY1NTBjZmU1NDAyNjhkIGxlZ2FjeS10cnVuaworNzkxMDYgOTk2YTMxOTIwZDQ4YzA5MDc4MWE1NzJlMGU5NDFlMDY5M2ViOTg3MSBsZWdhY3ktdHJ1bmsKKzc5MTA3IDE4Zjk0ZTIzY2E4MGE2NzQ3ZTU5YWZkMzMwNWU5NWI2ZGM0NjI3MTEgcHkzaworNzkxMDggM2Y5MDUzNTk4Y2EwZDU3YjczZmU5MWNmZDQwMzRmYzM4YTIxMDFlYSBweTNrCis3OTEwOSBhOGUzOTc3OWZlZGYyNGU3YjYwNjE0OGY1OTA4ZjZmMzYwNzUzNzJkIHB5M2sKKzc5MTEwIDJkNjgzYjhlM2Y1MDJmODYwZDE5MDlmM2M2NGEwYjFjOTM0NjlmY2QgcHkzaworNzkxMTEgNDc0MWY2ZGQ3YzY5YTBiMjk0MTEwM2JkYzU3NjY2YTE0OThiMjc2OSBweTNrCis3OTExMiAyMjQ1OTFiYTZhMTg0Zjk0ZGMyMWRlYWI1ZmY3NDU1YmEyMTA2NWYzIHB5M2sKKzc5MTEzIDFlMGQxOGU5ZjhjMWJjODliMjY4N2M0YTljZDgyMmNiOWJiNzdmMmMgcHkzaworNzkxMTQgMGYwMGRhNjkwNGE2NTc4MTUxYWVlMjAyYWU5YWZiZGVkYmE3ZDVjZSBweTNrLWppdAorNzkxMTUgOWFiMDdhYmUyMzBkYjk4YjE4ZDQ2ZmUyYWUwYWUyOGQ3Zjk0YjZhNCBicmFuY2hfbGliZmZpLTNfMF8xMC13aW4KKzc5MTE2IGU0MzIzM2Q4MDA2NGY1ODNkY2JhODFmNWU5NzZmMTIxMjRjMjlmN2IgcHkzaworNzkxMTcgMDJlMjE1NzZkYTAzNzczOTBiNGJhOWQwZWM1MmU4MWEyNWQwYmQ3ZSByZWxlYXNlMzEtbWFpbnQKKzc5MTE4IGMzYzdhM2JlNDBiMzU2NmUzMWIxMjk1YWRiNGIzZjAyZjAxNTVlZTcgcHkzay1qaXQKKzc5MTE5IGFjYzNlMzU4M2ZhYzk4OGEyNDJmOTg1ZDU1NDVkODYxYTNkMmUwYmMgcHkzaworNzkxMjAgOWZmMTAzNWY2MjM2NWViZjBkOGVjNTY0NzMzMmVmZjM1ODY4ZGI0NSByZWxlYXNlMzEtbWFpbnQKKzc5MTIxIDNkMzhjMDAzMmNlYWE5NWZiZGZhYTkzOWZhODMwMTE1MzRjZjJkMjcgcmVsZWFzZTMxLW1haW50Cis3OTEyMiBmMGVmYWFiMDQzODE5YWI1ZmY3ZDAxZjZmYmQ0MDM2NjdlYzVmOGMyIHJlbGVhc2UyNi1tYWludAorNzkxMjMgZmU0MTE1NjkyZjc2YzEwNmM4OWI2YTIzM2NhNzQ3ZWNlZTFmMmRmMyBsZWdhY3ktdHJ1bmsKKzc5MTI0IDlhY2I3YzE1NjA3NTgxOTdlZjUyZThkMWZiNTllYzA4ZmU4ZDFmZDYgcHkzaworNzkxMjUgYTVmNzk2ZmI2MWExMDI2NGRhYzJmYjIyZGU2YzZkOGRjNTA5NDAwMCBsZWdhY3ktdHJ1bmsKKzc5MTI2IDcwNjk1N2Q2ZWNkZmY1MGE3ODliMzBlOGIyOTgwYTdlMGI0YWM4MjUgcHkzaworNzkxMjcgMTNmZjg1YjEwZGIwZTU3MzQwZTc3Yzk5NGVhYTk5YWU3YzU4M2ZlMyBsZWdhY3ktdHJ1bmsKKzc5MTI4IDc0YmIwZjYyYjMyZTdjNzJlNmIwZmNhMDg4ZTUzMmExZmI0ODY3N2YgcHkzaworNzkxMjkgMTA5YzRlNjJlYzIzNTc3MmYzZGFmYTRmYzI0MjdjMjQ1N2I2ZDcxYyByZWxlYXNlMjYtbWFpbnQKKzc5MTMwIDVhNTVhMzI2MTE2NDRkYTljY2FkNDNhYTYzMzgxOWZkNTBiMzYyNTIgcmVsZWFzZTI2LW1haW50Cis3OTEzMSAwZTNjMTBiY2RiYTQxZDI3YjIzZGZjOTlhMWE5OTZiN2IxNzEyYTU4IHJlbGVhc2UyNi1tYWludAorNzkxMzIgYTY4MmI3MDg3YWNiYjNmOWZlNTM4ZWQ4OTViN2RhZmJmODZhYTY2OCBsZWdhY3ktdHJ1bmsKKzc5MTM2IDE4MDM3NGJmMmQ1MjlkZjM0NTQ0OGZiYjkwNmUwZDZmOWFhMDAwYjggcHkzaworNzkxMzggMzdjOWFiN2Q0OGYxZjQ3NGZiYTliZmYxZTNjZDY5MTBlODA0N2Y0MiBsZWdhY3ktdHJ1bmsKKzc5MTM5IDY2NTFlZmI3NWQ5ZWEyYTliNmZmNTdmM2FjZGM4YWViZDg3ZTJkOWQgbGVnYWN5LXRydW5rCis3OTE0MCBlMDc2ZTU1ODM0ZDlmMjExMzJhYWZlNjk2ZTUxNzVmYTNhMjhjOTViIHB5M2sKKzc5MTQxIGU1MjNiYzFjMzAzNDQ0NWZjOGJmNTdmOWMyOTUwYzEyMWQyNTg1YmMgcHkzaworNzkxNDIgZTg2NzIwMDNhZTg0ZmYxMmE1ODg0ZmIxMmZjZmFmZTk1OWE3MTU3NyByZWxlYXNlMjYtbWFpbnQKKzc5MTQzIDg1Y2JlNDRiMzkyNWY4MzJhZGEwNzAzOTZhOTE2NmY2MDcwMjExOTggcHkzaworNzkxNDQgNjM1ODY1OTJhM2EwNjk1NGUwOTYwOGU1NzdmN2RhY2I3ZjkxODUzNSBweTNrCis3OTE0NSBhNjEyYzhiNjFiNGFhODRhN2Y4ZWYzNDBiYThhNTNjYzU4NTUyMjM0IHB5M2sKKzc5MTQ2IGY3N2Y4NTAxZGE3ZmFiOTQ0NDk3NGExZGY1MTlmZDY4Nzk3YmEwYWMgcmVsZWFzZTMxLW1haW50Cis3OTE0NyA5NjBlZmEzMjdjNWQ5YzE4ZGY5OTU0MzdiMGFjNTUwY2I4OWM5Zjg1IHJlbGVhc2UzMS1tYWludAorNzkxNDggN2M5MjY4MTQ2OWY3YmI0NTUzMWEzMWQ1NTg5NmRkMTMxY2JjN2M3YiByZWxlYXNlMzEtbWFpbnQKKzc5MTQ5IDM1MmQ2MWE2OWY1OTViYTQ4OWU5ZTdlMGI0ZWE4ZDY0MjdhYTIzOTcgcHkzaworNzkxNTAgZWRhZDk0OGI0ZDY2ZmFiMzFiMDIzNGE0MTgxMmMzOTQ0ZTA2YjBmOSBweTNrCis3OTE1MSA1NTRlMGY0MzVkMDhhYmI3MDQxNWZhYmU3NWUxODI2OGU5YTYxZmRjIHB5M2sKKzc5MTUyIDYyMjNjM2ZkNjFmMDlkNzMwZmI4MGIwNmQzNTZmN2U4MTQzMDlmNGMgcHkzaworNzkxNTMgOGE5MjBhODkwOWEwOGJlMzkwYzQyODI3MDU4OWMyYWVlNTI2NGJhZSBweTNrCis3OTE1NCBhZTllMTM3NDExZjFmMzhmMjcyNDU1NGUxOWY1YWJiODI3MjYyN2VlIHB5M2sKKzc5MTU1IGQ4NzAwYjRmMWI5ZjUxNTI1MDZjNmRhZTdhMzUxNTViZjk0YWZiZTggcHkzaworNzkxNTYgNGY3MTliZTdjODc1ODVmNWIxNTc4MDNmZGIwMDA0ZDBlZjBkZWM1NSBsZWdhY3ktdHJ1bmsKKzc5MTU3IGU2MTkwNDdhMmYzNjYwOGVhOTZmZTk0MzI1ZWUyMmUxZjgyYjJjZGYgcHkzaworNzkxNTggYTlhODA3YjdjZDQzOWZjOTdlNDQwNjBlMmY0N2Y4MTAzNDMxMTJmOSBweTNrCis3OTE1OSAwZTA2MzJjNTQzZTQxNDRmMjJmMzFkNWI5MDhmY2RiYWU5NGVjZjMzIGxlZ2FjeS10cnVuaworNzkxNjAgNzExZDUxNzM3ZWU2YmU5ZjZlY2FmNGFmYjZiMDU5MmU1ZjVjNzQwMSBsZWdhY3ktdHJ1bmsKKzc5MTYxIGRiYzU4MDRlODI4NTg1YzQyMTAzNDM0ODllYmY4MjFmMjhkMWE5NzIgcHkzaworNzkxNjIgNmI2ZmZkNTI2ZTNiZTRlZDk5OTIxY2NiOTRkNmUzYzA4Y2E4N2I2MCByZWxlYXNlMjYtbWFpbnQKKzc5MTYzIGE3Yjg5ZjJhYzFkYTZhNWUyNDVlNzkzZTBhY2I3YWU5OGE4ODg2YjAgbGVnYWN5LXRydW5rCis3OTE2NCBkY2I5ZjQyNzA0NDFhZjdlZGIwYmFkZGY2ZDc1OTFiMDhkNThmNzljIGxlZ2FjeS10cnVuaworNzkxNjUgYzhjODQwMTYyODA0OWY5N2Q4YTZkZGZmNDZiZDMwMDNmODJmODA2YSBsZWdhY3ktdHJ1bmsKKzc5MTY2IDdkZGNmN2QyODM2YWFjMzJhNTMzZjEwNjMxYWU4MWEyZjc4Y2U5YTkgcHkzaworNzkxNjcgMzU2NjM2NmI4OWNmMTU5OTQzMDVlOWQxNzY3OTcwMzYyYjU5ZGQ5MSByZWxlYXNlMzEtbWFpbnQKKzc5MTY4IDRiZDFhYzExMzJjZGZkNTA1OWY3OGVmZmQ0NTM5ZDc1NGE4MmIzZWEgbGVnYWN5LXRydW5rCis3OTE2OSBmMDc2NmNmZjdmNTk2OGVhYjM4Yjg5ODA0MmVlODk3ODJiMmQ5YTBmIGxlZ2FjeS10cnVuaworNzkxNzAgZjg1N2Q0ZWQwNzc0NzU5MzY4N2RjMzY1Y2Q5OWU4ZjdlOWJiYTFjZSBweTNrCis3OTE3MSAxMGJkMWQwZjYyZGUyZGM4ODU5NjYzMWFjYzljNGZmNmJmMjM2ZjY5IHB5M2sKKzc5MTcyIGVhNGU2ODkyOGZmNTZiNmY1NDM5MmNiYTBlM2M0NTY0Y2FmZDQxN2MgbGVnYWN5LXRydW5rCis3OTE3MyAxYWU0NzRjOWMzNGU2YmM4MTVmYjc3NjVhYWEzNmY1YzY2MDNmNThiIGxlZ2FjeS10cnVuaworNzkxNzQgMmM5ZTBhYjNmMGM3ZWZkOTFmY2ZjMzdjMjA5ZTc5NDNiNDM0MDYxMSByZWxlYXNlMjYtbWFpbnQKKzc5MTc1IDZhMTI1NGUyMGM4OTY3YmU5MzhlOWVhOGI5MzhlMmI5MzI5NDJhOTYgcHkzaworNzkxNzYgY2IwZTM3MjZkOTFkYWIwNWY0NWQxMzAzMjc2ZjU0OWI1NGFjODcwZCBsZWdhY3ktdHJ1bmsKKzc5MTc3IDMxZjBkOWZjZGI0NWMxN2U3ZDBiYTY5NzE2ZmM3YzcxYzY4ODhjZjAgcHkzaworNzkxNzggYWM5NjJiYzQxZTg1ZmM5MzNiZjc2YmE3NjE2N2NlOTIwZmI1MDU5ZCBsZWdhY3ktdHJ1bmsKKzc5MTc5IGJjNWUwZDJlMTc5ZDAwODZlYjFjMTY5ZDI0MTQ0MTgzZjI5YTYxMTMgbGVnYWN5LXRydW5rCis3OTE4MCA0NTVlZjcwMTViYTgwMmRhMDhlZTc5NjE3YjU2ZDEwOWEwMmRkNDUzIHB5M2sKKzc5MTgxIDk1MGMxMDMwZjgxNjQwN2YxYjRiMDMxNDMwOGNkNzQwMzU5MTgxYmIgbGVnYWN5LXRydW5rCis3OTE4MiA1NzVlYzc3M2RkYTQwY2Y4ODNiNmYyZWZmMWFjN2VlNzM5ZjEwMTkwIHB5M2sKKzc5MTgzIDI4ODZmNmFhNWVmNjE5YTRiZDE2NWU3YTMzODU3YjY5NDhiMDc4MmIgcHkzaworNzkxODQgNDE0MDQ0ZGJmMzQzOTQzMTZhNDMwOGYwZTBjNTU1NGYyZGM1ZTFhOCBsZWdhY3ktdHJ1bmsKKzc5MTg1IGQ0ZmEyZWFhYjVmYThhNTZjMDNiM2YwMmU0Y2QyMTc1Zjg5ZTUxOWEgbGVnYWN5LXRydW5rCis3OTE4NiBjMTFmMWNlY2JlYjM1YTE4NmUyNmU2ZWJiYjVhM2ZjZTYzMDE0NmQ5IHB5M2sKKzc5MTg3IGMzYjljMzMzMzAxYzdiN2Y2ZjUzMDNjNjhjOTk1M2UyMGM5MWVlZTEgbGVnYWN5LXRydW5rCis3OTE4OCBlODIzZTI3YzIyNWVhYTA2MTczOWE2MjA3YjExMzljYjMxOTk4Mjg2IGxlZ2FjeS10cnVuaworNzkxODkgZGQ2OGUwNGVlMmU4NjIzNDk2ODY2NzA0OWFhMTUwNzBkZjIzNzg0MyBsZWdhY3ktdHJ1bmsKKzc5MTkwIDYyMDkxMmY4MzA4MjZlOTVlYzAwMDhiZDQ4NjhlMzhhMjY4ZTk0OTcgcmVsZWFzZTI2LW1haW50Cis3OTE5MSA5OGU0MTY2MDU3NGMzZGVkM2FmNjBhOGQ3ZWJjMzlhMDczMDNjZmY2IGxlZ2FjeS10cnVuaworNzkxOTIgZGVmYWFkMjAxN2I1Y2MwODllNzRmYjhmNGI5MTExOGNlMWE5NTk0YiBsZWdhY3ktdHJ1bmsKKzc5MTkzIGZjZWY0ZGEzMWUyNDViZDAzMDUyMDNmYzAxNjBhZDA2ZmZhMzk3ZmYgcHkzaworNzkxOTQgMjJjNmEyNzY0Y2FiNWZmODBhMjc5ZjQ2ZWNjNjgwODhmOWMzNzM4OCBsZWdhY3ktdHJ1bmsKKzc5MTk1IDYzZjNhOTRmNWU5ZDUwNTg1ZjQwOTkwNmI0NDJjMjY3Zjk5MjY4NmEgbGVnYWN5LXRydW5rCis3OTE5NiA0NGZmYjgwOTJlZDYyOTAzMzBjNTQwZWMxODIzMTA3YTI4ZWY2NDRjIHB5M2sKKzc5MTk3IGIyNWQxMDI0ZjM5NDY4ZTQzOWI5NGM2Zjc4ODcwN2VlNDgwYWJiYzAgcmVsZWFzZTI2LW1haW50Cis3OTE5OCBjNmY2YmU1MzE3YWQzNjE5NmJhMGYxMGQ4ZTIyZWFmOWQ2N2VlNTViIHJlbGVhc2UyNi1tYWludAorNzkxOTkgOGU0MWYxNzk0ZDQ0OTViOGNiMjI0NmU1OGY4MDNjYjBlNGFiMGViOSByZWxlYXNlMjYtbWFpbnQKKzc5MjAwIDBmYjZkMzQyMDE2ZGQ1YzhhMjZiZGYyOGRiODdjZjU0M2M1ODZlYmUgcmVsZWFzZTI2LW1haW50Cis3OTIwMSA4ZjEyMDJjYTg4OGU5NWJiMjVmOWRmNzRiMTViZGMyYmJiZDU3MmY5IHJlbGVhc2UyNi1tYWludAorNzkyMDIgMTJlMjA3NWRiYmUwZTFmMzVjMDA3OGVhZDczZjU5Y2M4OThiYzY0ZSByZWxlYXNlMjYtbWFpbnQKKzc5MjAzIDU4MTI2M2FmNTgyMGZkMWQ2NGFiN2UyYjQ1MTc0NTE2NTgzNzA3NDIgcmVsZWFzZTI2LW1haW50Cis3OTIwNCA4ZDhjOWJmMmEwNGUyN2Y1NmM2YTNhZTY5YTE5ZTRkNDQ5ODliYzlmIHJlbGVhc2UyNi1tYWludAorNzkyMDUgNjQzYmY5ZmYyMjhmZTQ4MGQ4MGNiMjJhMjkyMGY1YmExNGEyNzI2YSBsZWdhY3ktdHJ1bmsKKzc5MjA2IGI5ZTI3ZGU4NWU0YmM4NjgyODk5ZDA4ZjNiNGYyMTNhNjcxZDUyYTcgcmVsZWFzZTI2LW1haW50Cis3OTIwNyBlMDYyZGQzNTcxNDE5MmEzMThlOWM1MjEwZTM5NTdhY2MzNThmMmZlIGxlZ2FjeS10cnVuaworNzkyMDggMDlhYTg3MmY3OWZjNWYzZjllNzhiODZlMmE3YTZjMGE1MWZmYTdlZCBsZWdhY3ktdHJ1bmsKKzc5MjA5IGVjODRmYmNkZjdjYmI1MTk0MTRjNDMzNDNkMDY0MWMxNWYzODI5MjMgcHkzaworNzkyMTAgOTNmNzIwZTk1MThhZGJkZGE2ODBmYjNlNWRmOTk1Nzc5NzYxNGRkOSByZWxlYXNlMjYtbWFpbnQKKzc5MjExIGVkYzkyYmNlNGQ2ZTJkOTNhYmY0NTFiYjk0NTZjZTlmM2JlYjQ4ZmYgcmVsZWFzZTI2LW1haW50Cis3OTIxMiBjZjU4YjczMzIyZjhjNGIwYmM0MjY1MWE1MDkwNjlhZmEwN2NmYWQzIGxlZ2FjeS10cnVuaworNzkyMTMgMzhlOWI5ZGEwMTY0MmViYjQ2OGJiY2UwMjNjYjI0ZmQ4YTRmMmNlNyByZWxlYXNlMjYtbWFpbnQKKzc5MjE0IDc1OTg1MTdiMTIxODA3ZmFiMDUwMDQ1NzU5ZTVmZTcwYzA4OTQyNzYgcmVsZWFzZTI2LW1haW50Cis3OTIxNSA2NGEwMmIxMzNlNzIzYTk0NjY5ODQwODM3NTQyZTI2NjkyNTM0NjZiIHJlbGVhc2UzMS1tYWludAorNzkyMTYgOWVhYmJhNmRlZDA5NjJiMWE4ZTFlOTUzMjQyMWQ0MzZhNWJmMjA1ZSByZWxlYXNlMjYtbWFpbnQKKzc5MjE3IDQ1ZDIyODRjYzA2M2RlNWM5M2RkNDMzYmQ1YzI3NTkyZTM3MTg3ZmYgcmVsZWFzZTI2LW1haW50Cis3OTIxOCA3Njc4MTEzODVmYTZmZGY3ODZkNmVmZGZhZmE3NWZiMmRkNzY0MTAyIGxlZ2FjeS10cnVuaworNzkyMTkgZGI5NjFiYTM3Y2ZlNDQ0NjljNjhlNTIyZmZmYmU5NTFlZmE2YjIzYyBsZWdhY3ktdHJ1bmsKKzc5MjIwIGVmMWYzODhmNDgzZmI4NTAwMTZhNjAwM2RjZjEwYWFiN2ZjOWUwN2MgcmVsZWFzZTI2LW1haW50Cis3OTIyMSBjNjk0NjE4ZGFiNTQzYzJmODcwYzFhMjYwMTYxZTFkMTcwMjBlMGEwIHB5M2sKKzc5MjIyIGM5MmNhOGJhMWQ5NzUwZjY1OTcwNzJhOGY1OWQxYWJlNmI3Y2Q2NzIgcmVsZWFzZTMxLW1haW50Cis3OTIyMyBkMTM5OGZmMDFhMDc0YjRjMDE5NDc4NzZhNjZkYzA5OGYyODQzZmZlIHJlbGVhc2UyNi1tYWludAorNzkyMjQgYWMyMzE0YjVmOTYyODgyNTU2OTI2ZjVlOTE3OWQ3MWIxNmU2MDUxNCByZWxlYXNlMjYtbWFpbnQKKzc5MjI1IDUzZGJkODk2YzZjNjkyZjQyNGMxNjUyMmYwYWI5OTg0MjQ1MzM0MjcgcmVsZWFzZTI2LW1haW50Cis3OTIyNiAxYmY0OGE1ZGRlYWQ1MzYzMzU0MTlhZTE1ZmJjZDJmZDhmMTZiZTlmIGxlZ2FjeS10cnVuaworNzkyMjcgZjk2YzgyOTNkZDdmODhkODdiZTgyM2YwNDM5NmUzMjZmM2I1NzlhZiByZWxlYXNlMjYtbWFpbnQKKzc5MjI4IGRiOTRhZWRlYjBlMDRhYTExYmU0ZjFkNTYxN2QxNjExZjhiZmU1NzYgbGVnYWN5LXRydW5rCis3OTIyOSA5ZjYxODc1MDA2NGVlY2RhZWQ4NmE1OGQ5ZGZlMWUzYThhYTc1ZDk1IHJlbGVhc2UyNi1tYWludAorNzkyMzAgMGQxY2RkMTRjOWZhMTk2MThiZWE1ZjZjZGFkMjc5OWFhOTc5OGZiMyBsZWdhY3ktdHJ1bmsKKzc5MjMxIGEwYjZmMjg3MTFlNWVlODNlNGFhM2EzYTU2ZGU1ZTY3NTU5NGFjNmQgcmVsZWFzZTI2LW1haW50Cis3OTIzMiAwYzM0NDgyN2UwNDhmMjY5MzcyZmU2MjNiMGQ0NWU5YmQ5NjUxMjU2IGxlZ2FjeS10cnVuaworNzkyMzMgYzdhNjE1NDQ2MGZiZGE5ZWRiN2U5YTc3MDgzYzA4NTlmNjFhMjljZSBsZWdhY3ktdHJ1bmsKKzc5MjM0IDkyZjI1NjE3NDE1NDFhNDE4MWIwY2QwY2JhM2M0YWY4MmE3MjExYjAgcmVsZWFzZTMxLW1haW50Cis3OTIzNSA2NTFhOGU1YzQ2MGZhOWQyMGI4M2RlYTMwZTQxYThkM2ViMzYzMTExIGxlZ2FjeS10cnVuaworNzkyMzYgYzA3M2YzYzMyNzZlZjNkZjRmYWFiOGJjOTNjZmI4OTFmZmE5YmMwMiByZWxlYXNlMzEtbWFpbnQKKzc5MjM3IGRiYWQxYzA2NjhjOWY4Y2ZkODM0YzhmMzkxYjJiNjYyZjJkOTM5NDkgbGVnYWN5LXRydW5rCis3OTIzOCA3ZTNiNDkwODc3Y2VjZGJhNjg3ODQ1OGI2YmU0MDcyYWFkNmFlZGUwIHJlbGVhc2UzMS1tYWludAorNzkyMzkgZWM2YTk5NWVjZmJmODI0YjcyYmY2MWExZWQxZWNlOTQ0YzUwNjE1YSBweTNrCis3OTI0MCA5NzE0ZjhhNzdiMTYwZmI2MWVhMzY5ZGQ1MGYyNDNjN2UzZDZhN2Q5IHJlbGVhc2UzMS1tYWludAorNzkyNDEgYmFjOGEwNDI3MGZjZjE2M2FhYjIwNGM5MjRkZTg0MzY4Mjc3YzhiNyByZWxlYXNlMzEtbWFpbnQKKzc5MjQyIDQ4ZjQwYTE3ODVjYWFmMmYzYWVhNDdlODVkYTU0N2MxZmJkYjg5NTYgcHkzaworNzkyNDMgNDFiMjI1MDY3ZjRkMTI4NzY1MzAyMGNkZmNhM2FiNWZiMmE1NGEwNyBweTNrCis3OTI0NCBkMGJkZDA5ODU2Mzc0ODY2YWRlNTUwZDhlOTQ5NDg1YzU2YzEzMWNmIHB5M2sKKzc5MjQ1IDM4MzNjZjMzY2E2MTc0OTcxMjVlYTllZjJmNjE2YzljYTU2OGQyMDggcHkzaworNzkyNDYgNDI5M2MzMzY2OGRmN2Q2MjZlMzRmNmIwODg2MGMzOGZkY2ZiNTAxYiByZWxlYXNlMzEtbWFpbnQKKzc5MjQ3IGMyZDJlMjZiY2Y3ZmQyNWZlOTFhNDNmMWNiODc4MzQyNWJmMDAwMmEgcmVsZWFzZTMxLW1haW50Cis3OTI0OCA2N2YzZjdlNTM2NmJjN2UzYjljMTU2YjFmYTdkMzlhNDcwMTQwYjg2IHJlbGVhc2UyNi1tYWludAorNzkyNDkgYTM2NmQ2MzFhNjI5YTRhY2E2MDdmZjQzYTFhOTU0ZDZmM2FjY2JjMiByZWxlYXNlMzEtbWFpbnQKKzc5MjUwIGUxNmEyN2I1NTJhNmUzNDRlNWM0MDM0ZDMxODk2YmQ3YmRjZWUwNzMgcmVsZWFzZTMxLW1haW50Cis3OTI1MSBmYmFjZjk3MmZhNDRlNjk1NmE5NGVmYTVjYTJlMjMyZTU3ZjQxMGJhIHB5M2sKKzc5MjUyIDdlNmQ3MTUxZmRlODc0Y2E2ZDFiM2MwMzEyZWY4OWNlNTBlNjM0ZjkgcHkzaworNzkyNTMgMmQyZjIzODcyZDkwYTEwMDMwY2NiZGU1ZmQwZWJkMGZkY2MxNzFiZiBweTNrCis3OTI1NSBjNTNmNmEzZDJkM2IwYmU0MTdjM2E1NWU5ZTczOTExNGFhYjNjODY3IHB5M2sKKzc5MjU2IDEzYTQ0ODAxMmE4NGU3ZDMxZTI4MWFkZTBmOTUwYzVjY2UxMmY5ZGUgcHkzaworNzkyNTcgODI2ZDA1NDY5MGNiOGRhNmE1ODNjOGJhZDU1NWViNzdhNDlhNzQwOSBweTNrCis3OTI1OCBkOWI4ZjI3M2FiOGRhNmQxNjBjODI5ZjhhODNhMGQwMjA2YTEyZWVjIHB5M2sKKzc5MjU5IDkwMjE3YTg2NjQyZDA3YmFlMDI2NTlhYjNkMjE3YWJlOTk2YzMyM2UgcHkzaworNzkyNjAgN2Y4MTZmNmI1ZDBiMDk0MDc0MTcxMGM2YTBlZGJmM2U0YTE4OTU0MSBweTNrCis3OTI2MSA1YzA5MmQ0YjQ5OWNmMjc4Y2ZlZDM1NjZjYWY0OTU4ZmZjNTY2MGQ1IHJlbGVhc2UzMS1tYWludAorNzkyNjIgODFkYzAyMjk4NjE0YmExNmQ1MjFlYmZmMWI1MmVlZjQ1OTg3ZmYyZSBweTNrCis3OTI2MyAyODU4Y2FlNTQwZTQxMWI4MjAxNzRiOTk0ODk4ZmRhMTVlMTI1NzkwIGxlZ2FjeS10cnVuaworNzkyNjQgZjkwOTczOTYyZWFmMWM0MWM0NGVjNGE3N2VmZjRkZDVjMDU1MjM5OSBweTNrCis3OTI2NSA4NGNjMTNhMTQ0ZmZiZDUyMjhhNTA2MDY2MWQyYTFhZmFkOWY5ODU1IGxlZ2FjeS10cnVuaworNzkyNjYgYjRkOGZhNGQwMDQ5YzNhZDYwM2M3ZjYxNDg4ODgzNjdhODM5OGYyZCBsZWdhY3ktdHJ1bmsKKzc5MjY3IDY1N2QwMmE1MDNmYTVkNTYzZjA2YTFhODY0YWM5MWFhZjA4ZDc3MzcgcHkzaworNzkyNjggZWIwZmY3MTNhNWU5YzE0ZWM4OTdlMGI2ZGFlMjcxYzE2YjQzN2JkNyBsZWdhY3ktdHJ1bmsKKzc5MjY5IDM3YzBlMjhkMWFkNGVmZTMxMDAwNGQzZTljM2QwYWJkMTQyZDM0ZmIgcHkzaworNzkyNzAgMDE2MTk2NDY0OWMzOGE2NGRhNjA3OTI3ZWYzOGUzMDBlMmZmYWE0MiBsZWdhY3ktdHJ1bmsKKzc5MjcxIDIyOWYyNTJiY2U3NzM2ZTY2NDdjMzg2NTYyM2U1NjA5ODgxNjM0Y2UgcHkzaworNzkyNzIgMTA2YmVlM2YxZmU1MTYzNmUxMWE2YzYwOTNlODVmMmQyZTdmYzdmYSByZWxlYXNlMzEtbWFpbnQKKzc5MjczIDhjM2IxMjBmMjU5NjJkZWMwYTZkNmU5M2ExMTQ2YzE2MTI5ZjE5OTQgcHkzaworNzkyNzQgM2RjNjg4MmE3MjdkNzNhNjZkOWU0ZDYyZWJhNmJiODc3MGQyYjY3OCBsZWdhY3ktdHJ1bmsKKzc5Mjc1IDc2OTgxZWU1MGI0ODJmZWIzN2RjODNmOTY5ODUzMDcwMjIxYjE1MzEgcHkzaworNzkyNzYgMmQ2MTc4NDgwY2M3MTI2YTdlY2M0YTI2N2I3YzYyYTNlNGQzMTU5ZiBweTNrCis3OTI3NyAzNmU5ZjM4ZThhM2MyZWVmMmVmMjZhY2MzZTQ1N2IyMGNlODVhODBlIHJlbGVhc2UzMS1tYWludAorNzkyNzggNTJjZjdlNjVkYWQxNGJhYjI2MWM4MDA4MzkzZTllMWU0ODAyZGRiMiBsZWdhY3ktdHJ1bmsKKzc5Mjc5IDViM2E2MDFlZDIwNWI1YjQwM2ZjMzUyMTgwOTlhMzgxZGRjYWYyZTAgbGVnYWN5LXRydW5rCis3OTI4MCAyYjYxZWVkMjhmYWU0ZTkxZDBiOWE3OTY1ZTYxODE2Mjc0MWI0M2RkIGxlZ2FjeS10cnVuaworNzkyODEgN2FkNTYyM2Y0MTMyMWRiNDViNTUzN2Q1MDJmYmEyNDIyMzZkYjY4YiBweTNrCis3OTI4MiA4NDQwNWMyMmU0YzdmZmQ5ODkxNTVkOGY2OGZiMDMxZWViYjUzY2EzIHJlbGVhc2UzMS1tYWludAorNzkyODMgNjE1MWQwOWNlMDM5NDkzMTEzZGNmOWVkMWVjMDkxMGY5N2NlOGRkYiByZWxlYXNlMjYtbWFpbnQKKzc5Mjg0IDE1ZGU1MzkwNzA3ZGE0NDY5NDAxMzE2NTc5NGJmOTNkZmFhYjc1NDIgbGVnYWN5LXRydW5rCis3OTI4NSA5NmEyNDFkNGEwYWIxNzEyNjE5NTFmNDA3MzhlZjE1Mzg1ZmZjMDhkIGxlZ2FjeS10cnVuaworNzkyODYgZTJhOTY5M2I1NTVlZDY4NTEyYzU3NDVmM2ZiZGQ2YWVmMTg5ZDI3YiBsZWdhY3ktdHJ1bmsKKzc5Mjg3IDVmNWQ0NzM2ZGU3NGFkNmRmZTIxZTZhMTI0NjUwZTJkOTBkODJiZmIgcHkzaworNzkyODggMjI0YjcwZDNkMWQ0NGU1NjAwYTgwNTJlODYwMzBlNDUwMTA2MjBmYSBsZWdhY3ktdHJ1bmsKKzc5Mjg5IGM5Mzc1MjFlZDcwOTJhODFmNzJkZjJlOGVmY2UyYjRmNDQwMzc0MjggcHkzaworNzkyOTAgOWZiZTIzNzBkYzAyMTdhOGQzOGMwOTk3MmY2OWI3N2U3NGY5ODQ2NyByZWxlYXNlMzEtbWFpbnQKKzc5MjkxIDdmNDM1YzM4NWRhMjVjNGY1Y2M4OWMzM2IxNzQ4ZmIzYjViZGVmYmQgcmVsZWFzZTI2LW1haW50Cis3OTI5MiAwMWI1NzUxNWYxOTU2ODQwN2JhNDJlZDgyMTJiZWRjOWVhNTNhMjY5IGxlZ2FjeS10cnVuaworNzkyOTMgODA2YThjYWZjOTk3N2FmN2Y1YjY3NjNjNWVlYzMyOGE0MTFjOGUzOCBsZWdhY3ktdHJ1bmsKKzc5Mjk0IDZkZjc5OWEyYzI0ZTRhMjQ2ZTJmODczNmVhM2QyMmE0NWJkODFjOGMgbGVnYWN5LXRydW5rCis3OTI5NSBjZmM1NzcwMmFmN2ZkOTViOWEyNTljNjNjNzQ1MTVlMTNiNTIzYWYxIGxlZ2FjeS10cnVuaworNzkyOTYgNzY3YjA4MzE2NTllMDI3YTY5YzY2NDVhNTE1MGIwMzg1YmYxMWIxZiBsZWdhY3ktdHJ1bmsKKzc5Mjk3IGYwMDE0NTU0MTY2ZjkzYzNiZDc2OTc3MzBhZmQyZDU4OWRkNjg2ZTYgbGVnYWN5LXRydW5rCis3OTI5OCBiNzg3MmIwZThhYjI0MWUzNzlkZDQ5NTc3NjY4ZmUxNjAzMThhZWY2IHB5M2sKKzc5Mjk5IDczY2FhMzYxZjljZGUxNGJjMmE4MTE1MzhjOTY2NjU3M2IzY2M0MjQgbGVnYWN5LXRydW5rCis3OTMwMCBlM2ZkZmRiMWE4ZmY4ZmM2YWQ2MjhmMGU5ODQyYzg4OWE5NjY5ZGJjIHJlbGVhc2UyNi1tYWludAorNzkzMDEgMmUwZDU4YWRhZGJlMGViNDM4YTZkNWIxYmYxMTBmMGZkN2NmMDQwZSBweTNrCis3OTMwMiAxZGMxODQxMmE3ZWU1ZjAzN2RkMWIwYmVmZTU1NGE0YmExN2NhOWRlIHJlbGVhc2UzMS1tYWludAorNzkzMDMgM2M0ZGZlODZlYzJiNjQ4MjRhZWJiMTVkZDcyNGNmNzNmZmEwZDIwYiBweTNrLWppdAorNzkzMDYgMGExMjNjZGVkMmM5NzNiN2IxZmE5YTFmZjhmNTJiYWQzMWU2YTI3NyBsZWdhY3ktdHJ1bmsKKzc5MzA3IDgwYmVlYzhmYjc0MDNmMjA2OWIyMGNhMjA5YjYzNDY5NmU0YjU0ZDQgbGVnYWN5LXRydW5rCis3OTMwOCA1YjY3OWMyNDllM2MxY2Q2NzBlYmQ1NTBlNzcxMWE1ODY5MTc3YTgxIHJlbGVhc2UyNi1tYWludAorNzkzMTAgNDc3ZDM2ZTVkOTEzOTVlMTNkNDMwYjY4ZDgzZTg1NDc4MDdhMGZmMSBsZWdhY3ktdHJ1bmsKKzc5MzExIDhmMDE2YTgwMTY0MmY5ZjkzZTgyY2NhZTcwN2UzYmJjY2E2MzVlYzYgbGVnYWN5LXRydW5rCis3OTMxMiBlMDBkZDA3MDU2YWFmMzk3MmRhYzdjZjJiZGYyODZkMDJlN2U3ZWMxIHJlbGVhc2UyNi1tYWludAorNzkzMTQgMGY0MmYzNGMxNmU4MmIxMGMzMzNjZGRiMmU4MDY3Nzk4NWZjNjM3MCBsZWdhY3ktdHJ1bmsKKzc5MzE1IDY1ZmY1MjZlMDVlYmJkNTUyNGZkYTY5YWQ0MmJhMDI3NmU0YjBjY2IgcHkzaworNzkzMTYgY2Q5ODQ4Y2YxODQ3YWRiMWNjYjk4NTEyYzU2MjA4ZmY5MGY4NDNjNyBsZWdhY3ktdHJ1bmsKKzc5MzE3IDMyNDRlZmI2ZDg4Zjg4YWFmMWJkZjZkMTZlZThjYjI0ZWVkN2M5MTEgcHkzaworNzkzMTggNTQzNTg4MDcxM2E3ODNmYTVhNjZhM2YxMmU0YWQ4ODdlNGViZjE2NyByZWxlYXNlMzEtbWFpbnQKKzc5MzE5IDE3ODE2OTU4ODZkY2U4ODdhYTcwZDc0MmU3NGNhMTk0YzMzYTNmNWIgcHkzaworNzkzMjAgNjg0Y2Q3MzgxNTM1YTVhMjA5MWE4YzQ2OTVkZDIwN2IyYzViZDcwYiBsZWdhY3ktdHJ1bmsKKzc5MzIxIDhlOTliNjAwMGYwZGZlMzNkMWQ5ZTUyMzJiOGFiZDlhOWYyMjdhMjYgcHkzaworNzkzMjIgYTlkYjUxY2YxZmJjNGRlZGQzNmZhZGY5NjU3MmRkMzFkNmE4ODg2NCByZWxlYXNlMjYtbWFpbnQKKzc5MzIzIGY0MjhmNjZmN2U5YmI2NmQwOTA4M2NjZWNiNzFmMDc3OThhOTkxMDAgcmVsZWFzZTMxLW1haW50Cis3OTMyNSAxMmVlNDY0MzVkMDE3MWZhMDkwYjg3NTFmMDk3M2EyZDJmN2QzZTNmIGxlZ2FjeS10cnVuaworNzkzMjYgZmIzZGE1NmQ1NDhmMGQyODgyYTMwN2Q0NDNmOGUxNDdiZmQ3MGExYyByZWxlYXNlMjYtbWFpbnQKKzc5MzI3IDkyYzkzMjQ2MjViNmE1YTAwMWMwYzg2M2U2YTgyOWYzNzgyZGYyMjIgcHkzaworNzkzMjggOGU3NmU0NmMxOTk0NzU3ODkwNmQ3ZjQ0ZjY3NDExYTdmOTRkODkzOSByZWxlYXNlMzEtbWFpbnQKKzc5MzI5IGIwMWVmZjRlZmZkN2VmYTQyNTgzZDRlMDAzZTMzZjgyYTllZmU4ZTIgbGVnYWN5LXRydW5rCis3OTMzMCBmYTVlMjk5Y2UwOTFjNjc2ZjBjZDJhYTc2YTQ5NDRhZmY2MGU3MDMzIHJlbGVhc2UyNi1tYWludAorNzkzMzEgYTcwMjY0OGM4ZjQxMDQ5M2MyYWY0MDZkMDExMzliMmUyZGMxYmRmOCByZWxlYXNlMjYtbWFpbnQKKzc5MzMyIDNiYTIzN2EzMjZjMjdiOWNiZWNjMzA0ZGZmYzU0NzU4MzMwZWJkNjEgcmVsZWFzZTMxLW1haW50Cis3OTMzMyA1NmRkNWQ1MDcwYTVhNDU0MWM3ZTU5ZWFkZDJmYTVhZGIzODk4MWFjIHB5M2sKKzc5MzM0IGIwZWI5ZjZmMmQxMGIxZjMyOTViNjhlMzQ0MWVhNmJjMzIwNDJhN2QgbGVnYWN5LXRydW5rCis3OTMzNSBmMjBlOGI5MWY2ZThkYTk5MmIxZjFhNzdjZjU3NDNlNzQ3NGU3M2I5IHJlbGVhc2UzMS1tYWludAorNzkzMzYgMTAyNjIzZDY4NDNmYzQ5MWQxZGZlZTE2ZjI3ZjE5OTFmN2U4OTE5MiByZWxlYXNlMjYtbWFpbnQKKzc5MzM3IDZlMWRhZDg1MzAwN2EyYTM0ZWJiZjJlZjUwZTIzZjg3NmFkMWQyNDIgcmVsZWFzZTI2LW1haW50Cis3OTMzOCA2NjU5NWQ0ODRlYThkNWZjNzc2NDA2MWQ4MjgzZjA1YTEwMDM3ZmI4IHJlbGVhc2UyNi1tYWludAorNzkzMzkgNDk4NmNmMGE5MWI4ZTljYmNmNGZlZTZiNDk1MjcxY2RkZDAzYWM1YSByZWxlYXNlMjYtbWFpbnQKKzc5MzQwIGU5Yjk1OGU4MzkxYmQyZTM0ODRhOGFjYjE3MWE5YjZiMjQ1MDEzNDQgcmVsZWFzZTI2LW1haW50Cis3OTM0MSAxNTU2ZTY5N2IyZDcwYjFhMzYwNGUyNjJiMTM4MWQ5YjJmOTkzOGQ0IHJlbGVhc2UyNi1tYWludAorNzkzNDIgZjg0ZjgzOTYzYTc4YWQ2NDM0Mzg2YjE2OTViYzQ0YjUxMzQ5OTk5OSByZWxlYXNlMjYtbWFpbnQKKzc5MzQzIDI3Zjk3MjQ0Njk4ZWRhMDYwOTI1Mzk0Y2VlZTEzYzU1ZDNkYTU3YWUgcmVsZWFzZTI2LW1haW50Cis3OTM0NCBiMjE0Y2E4ZWI2YmQwYWJlNWYxMWUwM2U1ZjVmNWUxNTRlODYyYjY5IGxlZ2FjeS10cnVuaworNzkzNDUgNTJkODQ1ODMxYWU4NjRlMDBkNTJkMmI5MDVlZTI1MzdiMGZmMTcyOCByZWxlYXNlMjYtbWFpbnQKKzc5MzQ2IDI4OTAwNmRjNDZlZTI0YjQ2NjJiYTE0YWY5ZjE4OWU3MjNjMDBlYjcgbGVnYWN5LXRydW5rCis3OTM0NyA4MWI3NTA5MjQwOTE2ZWRjNjI3ZTcxMjNkMWQ2ZjU1MzgxMDI3MTBiIHJlbGVhc2UzMS1tYWludAorNzkzNDggOTg4ZTA0NTdlMzEzMzk2Y2Q1MTQ1OGEwYmM0ZGZkYTViMjk2NTVlNSByZWxlYXNlMjYtbWFpbnQKKzc5MzQ5IDcyMDExODEzNjBmZGYyN2QwZDE1YzQzNTRiNzU1MjRhMjRjZmI3NmMgbGVnYWN5LXRydW5rCis3OTM1MCAzN2RhOWJjNDYxNzQyZmM0ZTQwNjhkODY3M2FjZjljZmI2Mjk1NTljIGxlZ2FjeS10cnVuaworNzkzNTEgY2M4ZTM2OTYyYmFjZTZjNTM5ZjIyNWMxMTA4NWU4MzE5NjU0MDNiNiBsZWdhY3ktdHJ1bmsKKzc5MzUyIDk3NjI4NDg0OWU5ZDgxNDEwY2UwNjRiMTllZTFmZDViZmNiZDZlNDcgcHkzaworNzkzNTMgZDYwYmZiMWI5YzA1MmU3M2U4NDAzN2UxYThiZmJkOWExODFkMjM2MyByZWxlYXNlMjYtbWFpbnQKKzc5MzU0IGU5MWEwODZiNDE3ODNlNzM3NGNkNTg1OWJiOTg2ZDlkODQ5YmI3YTQgcmVsZWFzZTMxLW1haW50Cis3OTM1NSA1YWFjYzc2ODBkM2Y3MmJmZjJjNjI1NWU3ZTVjOWJkMTIxZDg2OWQ3IHB5M2staml0Cis3OTM1NiA0NDY5NjQ4MmFjNDJhYmNlNmI4ZThhNDk0NWE5ZTZkODcwZmViODQ0IHB5M2staml0Cis3OTM1OCAxZTc0MWViMzBiMTcwNGEzNTM2ZDg2NzE4YTRjMTY2ZmQ0ZjQ2NmMyIGxlZ2FjeS10cnVuaworNzkzNTkgNjU3ZTdkMjEzMDUyODljYzQwMWJkZTJlOWJjZDc0NGFlY2ZhYzMyYiByZWxlYXNlMjYtbWFpbnQKKzc5MzYwIDUwNWNmZjEyNWEwM2M2OTk3YTg1ODcyMDhmZWY5YjAwNzVkMTZmMzQgcHkzaworNzkzNjEgMDMxNmU2YTI4YTU1MzU4NzFiM2FiN2M1MzU5ZmM2YmU3YWQzMGZkYiByZWxlYXNlMzEtbWFpbnQKKzc5MzYyIGRlODRhNmQwZTY5NzBjMGU4OTBjY2Q1NzlhYjZlYjFmNzQ4ZjEyYTIgbGVnYWN5LXRydW5rCis3OTM2MyA0YmM4Zjk2NTNlOGUyYmQ3M2E3MGQxOWFhZjkyMmU5MDVhNDAyOTBjIHJlbGVhc2UyNi1tYWludAorNzkzNjQgNTk5M2RhNmQyNDA5NTE1MWEzMTYxMjRmY2E3NzRkNWI1ZTcyNTY1MSBweTNrCis3OTM2NSAxOTU3YzI4OTQyOTI1YmI4ZGVmZmJhZWJhMDQyNzY1NmJkNjY0OWVmIHJlbGVhc2UzMS1tYWludAorNzkzNjYgMDNlYWI5OThiMDdhMTVhMjY3OGRhNGQwODdhODY2MWZlMTI1MzBhZCBweTNrLWppdAorNzkzNjcgNjJmYjA4NmEzOTc1ODJhMjA2ZmZlMDcwNWE1OGJkYWIwYzcwN2IyNiBweTNrLWppdAorNzkzNjggY2QwY2E1NmI3ODgwZThjNDVmYTQ5NjY3MDUxZGQ2ZGM3OWM5NTU4ZSBweTNrCis3OTM2OSAyM2RhNTY2MDdiMzNmYWVmOTAyZTJhOTQyMzNjM2RiZjRiMDcyZGZjIHJlbGVhc2UzMS1tYWludAorNzkzNzMgZDhmODU1MzMzZmI0OGI5ODY1MjMxMTliZGVkNDdiNDk0M2M2ZTcxNiBsZWdhY3ktdHJ1bmsKKzc5Mzc0IGQyZGVhYTcwZmFkYjQ1Y2M0MDE3NDljZGY2OTRiMTMyYWQyMWNiNmYgbGVnYWN5LXRydW5rCis3OTM3NSAwYWJmYTI2MDdmNTRlYjg2NTdlMzJkZjUzMjk0MTVmZDhlMmQ2ZmMzIHB5M2sKKzc5Mzc2IDkzNGNiZTczNjgwMzcyY2UyODU1YTI5OGY3MjRlMTgyMjQ3OGVjZWUgbGVnYWN5LXRydW5rCis3OTM3OCA1MzJkNzE0MjBmNDYxNTU4NTI0NGFlZGJkOTNiYzU1N2IwOTBjNWZmIGxlZ2FjeS10cnVuaworNzkzNzkgMjI5ZWE4Y2NjNTUzMDc1YzY0NDdmYWMyNjlkZGIzNjZlMTcwNjRiZCBsZWdhY3ktdHJ1bmsKKzc5MzgwIDgzZmE0Zjg5OTU2ODgyZjVlYjA3Y2E2NTI2ODk3MGRmNGI4MjAxYTYgcHkzaworNzkzODEgMTc5YzY0NzM4NjMzMGIxOGJkMjM2Njc1YTllZDIwYmZhMTM5NzZiNSBsZWdhY3ktdHJ1bmsKKzc5MzgyIDYyMzg1ZDliN2RhMDQzOGM4MjY2ZmEyNWUwOTA0NDcxYmMxMjc3ZjQgbGVnYWN5LXRydW5rCis3OTM4NCA3NDMwZmE3ZWVhOGNiOWY5MDA0MTNlOTU0NjVkMDFiNTI1ZmFkMWQxIGxlZ2FjeS10cnVuaworNzkzODUgNGNlYjVkYzM1Y2M2NWE2NGZhOTRiY2ExYzczZTY0NWY0YTU5NThhMyBsZWdhY3ktdHJ1bmsKKzc5Mzg2IGNhYzY2MWRiNzc5NWYxOWM2YmYwYjdmMWZlZTc3ZTk1OGQ2ZThjOTkgcHkzaworNzkzODcgNDk2ZDc2MzYwNzYzOTQ1YjZlMTJjOTgxYjljNTQwNGQzMWY1NGFlNiBsZWdhY3ktdHJ1bmsKKzc5Mzg4IDJlMDgxM2Q2NzM4ZGJmNGNhZTZhYjlkYzNlYTYzNjVkMjU1YmI3YTMgbGVnYWN5LXRydW5rCis3OTM4OSA3MjUxZTczN2E1ZDhjYWJkNmRiZjcyNGExNGI5ZjM3YTFjNzM4ODVlIHB5M2sKKzc5MzkwIDljYWFhZmQ1OTlkNjUzNDNiMTRmMDNlYjNmZTE1YjA0YzEzOTg4ZGQgcmVsZWFzZTI2LW1haW50Cis3OTM5MSBjM2MzNGY4NDc5OThhMDA2NjU3NzYwZDA3NmZjOGJlODI2ODhlN2U3IHJlbGVhc2UzMS1tYWludAorNzkzOTIgNGI4ZGVjYjQ1NzJjZDcwMmU4Yjc4MDI1ODI5MzM5OTE4MTIxNzNjNCBsZWdhY3ktdHJ1bmsKKzc5MzkzIGU4YjA4ZDc3M2U3ODVmODcyZDI1Y2NjMDg2ZDRkMWE0ODBjZDE1ZDEgcHkzaworNzkzOTQgMDMwOTYyMDkyMzczZTk1NDI5NWU5MGMxOWFkZGI3ODU1YzBlOTY3OCByZWxlYXNlMzEtbWFpbnQKKzc5Mzk1IDI0OGE3YWRlNDQ0ZmJlZjU0ZjE1YjhjNDU4NjVjNjcxMzAwNWIwMWMgbGVnYWN5LXRydW5rCis3OTM5NiBlZDlhM2RiYzMxMmU5YjBhNTJiNmY4MmU3MjBjZGFkNTMxMDBjZjc5IHJlbGVhc2UyNi1tYWludAorNzkzOTcgZDExZmJjNzk2NDk5YTMzOGQwNDAyYjg4OWE5MDRkYTk1NDEzOGMzOSBsZWdhY3ktdHJ1bmsKKzc5Mzk4IGQ2ODkzYzcwZGY2YTQ3ZDE4MWFjNTdjM2I2ODZlNTU4NGRkNWJjMDAgcHkzaworNzkzOTkgZWIxYjY0NjhlOTc3NDZmNjMwOTdmMmY4MDZhM2M5ZTk5YmUzY2Q2YyByZWxlYXNlMzEtbWFpbnQKKzc5NDAwIDVkNTQ2OTJiNmRjM2UzZTNlOWQ0YzA5NjhjZjIyZjUwODM3MTE2M2YgcHkzaworNzk0MDEgMDlhN2ExOWU3Y2I5YjA5MzhmMDJlMDk3ZWY1N2M0MTczNTA3ZTgxYiBweTNrCis3OTQwMiAzYjRlOWZhOWMxZThkYzFhMzFhNDRjODllNzU2ODZjYzcyMzcxMTlkIGxlZ2FjeS10cnVuaworNzk0MDMgNWY5YTcwNjRkNjJhYTAwNTkzNjAzMDE0NTNkODkxMjM1ODY1MGFiMCBsZWdhY3ktdHJ1bmsKKzc5NDA0IDRlZjY1ZTIzOTZhZTlhNWVlYWM0NGVkNzQyNTVlZGI5NzY3ZGEwOWYgcmVsZWFzZTMxLW1haW50Cis3OTQwNSA0Zjg0MWRmOGM5NzY2ZjkzNWU5OTM3NGMzYjRiODBlNzA2N2UxNmQ0IHJlbGVhc2UyNi1tYWludAorNzk0MDYgZTVkZDlmOTg2NDQwYzg4MmZiZjRjMGU5OWU3MTdhNThlZjJkOGZjZiBsZWdhY3ktdHJ1bmsKKzc5NDA3IDBkZmQ2MjA3NmRlZDQxZTIwOWY1ODM0MWE2NDA3NmY1NWUxNDdlMjkgcHkzaworNzk0MDggZTFhODRmMjIxNTM3ZDNiMzY3NTM4MmY5N2NlMWRhZWI0MjU1YzliMiBsZWdhY3ktdHJ1bmsKKzc5NDA5IDFhYTY4NDY3MmNlNmZhNjZiNDQzOTk1MDQzODFmOWUzMjY1MjE1MGYgcHkzaworNzk0MTAgZTE4ZDM4MjAxMjgwNTc3ZTE0MmY0ODEzNzAyM2U5OWQzNzdlZjJiYyBsZWdhY3ktdHJ1bmsKKzc5NDExIGM5OWMzNzljZWQyZmMwNWYyOTcyN2JhMjZmOGEwMjhmY2RmZTJhMWEgcHkzaworNzk0MTIgZDZjYTljZDFiNDExZTY1MTEwMTFhNWQ5MWU3MzgyYmI3ZTFhOTBjOCBsZWdhY3ktdHJ1bmsKKzc5NDEzIDczMjkzMTJmY2JkN2E1MjRkYWIwM2JiYWJiYjU2ZmRiOTcwZTc4YTggbGVnYWN5LXRydW5rCis3OTQxNCBmY2MxMDgzM2ExYzliNWE1ZjBlZGE5M2NhOTllYzdjZmQ4NTE4NjE0IHB5M2sKKzc5NDIwIGUyNzcwYmYzMmRjZjY4Mzk3ZDJjNWNiZmQ2YTU2OWMxNzk5MDZhNmYgcHkzaworNzk0MjEgOTM4Mjg0Y2RhMTViZjU4MTIyMjAzZWVkZjdkOTAxN2Q0N2UyNDIzMyByZWxlYXNlMzEtbWFpbnQKKzc5NDI0IDE0NDMyNzI0ZDBmZTdmYWFiYTA5OTIzYzdjZTIyYWY5MzFlMDRhMGMgYnJhbmNoX2xpYmZmaS0zXzBfMTAtd2luCis3OTQyNSBlNmI5ZWY0OWUzM2Y5ZjNiMTFmNjQ3NzlkN2U2OGQ0ODkzODk1NzE5IGxlZ2FjeS10cnVuaworNzk0MjYgZTBiOGVjYTIyNTI5MzU5NjllMmRiNDdlZjEwY2YzOTEwY2Q5ZGViZSBsZWdhY3ktdHJ1bmsKKzc5NDI3IDM4ZTQxMDA1MGRjN2MxNWQ1ZTA0YjBmZjI4ZGY3MWQ1NDNjZWYyNjMgbGVnYWN5LXRydW5rCis3OTQyOCAxNmE3ZDMyNjA1YmI4MzJkYTBiMTA1MjQ4ZDRlN2IzMjkyZDRlNWI1IGxlZ2FjeS10cnVuaworNzk0MjkgMWEwZTIxNzA2M2I3NTQyOGM3YWQyMGQwMTg4Njk4ZGIwNWYxNDAwMSBweTNrCis3OTQzMCA4NzAxNTgxZmI0NTUwNjM3MzdjOWIxMGVhYTYzNWM0NDMxNDc3YTlhIGxlZ2FjeS10cnVuaworNzk0MzEgMTg4Zjg2MDc1OWMxNDA0ODgzOTYwZDNjN2ZmOWEzYWExMWFjYzQ5ZiByZWxlYXNlMjYtbWFpbnQKKzc5NDMyIGQ4MTg3ZWQ5NDMyNTYwZTM3M2M0YWM5MjUyZDcwMGVmMDMzYTJjNjEgbGVnYWN5LXRydW5rCis3OTQzMyBiOTA3MjJkM2FlZmEwYmViZWQ2NmZkNmI3ZTVjNGRkNGJkOTc3MjgwIGxlZ2FjeS10cnVuaworNzk0MzQgODI2MzdlNjY4Y2ExY2NiNmI0MWMwYTAyZTFkNDA0NDZmNjM2NTY3ZCBweTNrCis3OTQzNSAwMzBkNmJmMWQ5OTU2Zjc3MGY5ODFjZDJmYmM2ZDc2NTJjNzYxYzRiIHJlbGVhc2UzMS1tYWludAorNzk0MzYgOTVhNzhhMmQ3MDBkODBjYjgwNzM5NDM2OGEzN2E4ZWQ5YWQ1NGQyZiBsZWdhY3ktdHJ1bmsKKzc5NDM3IDk0MjFmNjdiNmMyYTE0NjBiNWFhYjNhMDQwM2U2OTQ0ZDVmMmQ1NzIgbGVnYWN5LXRydW5rCis3OTQ0MiAyMGJhZjYzYjA5NGNkMGJkNjcyOWU0MTYwNmJlM2MxYmE3OWJlOGM1IGxlZ2FjeS10cnVuaworNzk0NDMgMmVjYjhlOTk2MGZjM2E4NzFiNzU0MjI2NjA4YzAzMmY3NjQyMDMyOSBsZWdhY3ktdHJ1bmsKKzc5NDQ4IGM4ZWNhYmJlODAxNjk5OTA0YjExNTAyNzc2YTI0MTQ5NDkxODViYjMgbGVnYWN5LXRydW5rCis3OTQ0OSBlNDA3ZWJhOGUzOGQ0NDlmODE4MzI5M2JlMjk1MmFkMmJkZmY2M2ZkIHB5M2sKKzc5NDUwIGFjYjFkYzY2OGE5N2JiOGU0MzA5ZjZiMTljM2Y1ZTkxZGVkMDYyOTIgbGVnYWN5LXRydW5rCis3OTQ1MSA0YmJhZmRmNGQ1YzFiZWJiMmEyMDYzYzEwYzEzZmRjODA0NDgwZTg4IHJlbGVhc2UyNi1tYWludAorNzk0NTIgNjYwYjlmMjRlZGFjOGUzNzE1OTQ5ZTc2NDY5ZThkNTZjMzcwZTMyZSBweTNrCis3OTQ1MyA1MjZiYjA4MmMwNTUyNWM5M2ZmZjExYjEyOTk4ZGVkNDUzYjJiMGFkIHJlbGVhc2UzMS1tYWludAorNzk0NTQgNTY0MTY5MTUxNTEwY2ZlOTFmYmUwYjg3ZGIyMTcyZDM3MTQxOTdiMSBweTNrCis3OTQ1NSBlNWZlMmY2MjU5ODNjYzZmM2YzMWJkYzk4ZjMxYmFjYjE2MjY0N2I0IGxlZ2FjeS10cnVuaworNzk0NTYgMGY2YTBiMWRiNGUyYjFlYzBiN2M5NDk1YWYxZWVhMTYzMmNmYzkzMiBweTNrCis3OTQ1NyBiMjI3ZGI5YTAwMjk3NDRiYmNmYjEyMjA4ZWIwNzg2NzBmOTExMTAwIGxlZ2FjeS10cnVuaworNzk0NTggOGM1YzVlODZmYjIyN2E2MjdiNjhlMGMwNzc4MzllZTExNjlkYTgwNCBweTNrCis3OTQ1OSAwZTdhZTUzYjRlNzkwMjRjY2FlNmEzM2RhYWM5N2IyNjkxNTdiNzk1IHJlbGVhc2UyNi1tYWludAorNzk0NjAgZTgxMWFhMDk0ZjE5NDI5NTdlNDhkYjY4OWYyNzE4YjIyM2E5Zjk3NiByZWxlYXNlMzEtbWFpbnQKKzc5NDYxIDkxNzBhYTk0NGYyOTMzNDViZDZmOGRhNzZjN2FhMDE5Y2E0ZGViNWUgcHkzaworNzk0NjIgZTExODNhMTM3ZDhjYThmNGQ3YjE1YTc1MWQ1ZDY4MWE0MWY0Y2RlNCBweTNrCis3OTQ2MyBhYjMwN2Y3ZGVmYTFlYzc5ZDNiNmE2ZDk5N2E1NjU4M2UyMDM4MTJiIHB5M2sKKzc5NDY0IDIyOTQ2ZDAwZWVjY2VmN2U0NmM3NGRlZWMzZTY1ODhhYTY0MjkwODcgbGVnYWN5LXRydW5rCis3OTQ2NSBmOTZhZDgwMDcxMmVlNjFmNGFhMTI5MGM1OTYzODEyY2I2ZTkxZGM0IHB5M2sKKzc5NDY2IDg2YjcxZjQwZThhYWUyNzA0ZDA4ZjVlNmU3Y2I3MmNhYjBmNGQ5YmMgcHkzaworNzk0NjcgNzFhNDVlY2M0ZGM5MTFlZDAzYmEyNzZiMzIwZjNkZDdhM2YwZTJiMSBweTNrCis3OTQ2OCAzMDllMmQzZThkY2MyMWFlNzBkMzQ4ZjViMDUwZmU4ZjZkOWI2YWMyIGxlZ2FjeS10cnVuaworNzk0NjkgOGU2YTE2MTU3ZmFmMWJkZjU0NGI0NTY3NTQ4ZTJlZGEzZDllZmE5ZCBweTNrCis3OTQ3MSBhMmFhNmRkZmU4ZTI5NThhY2E2ZTYyMzA0ZjU4MDE0YTNhOTIyZjMzIGxlZ2FjeS10cnVuaworNzk0NzIgZGI1YTNhMjc3YzBiNTgwZWJmNTFmYzRhMzE5MjAxZDA2ZDBjNTlhMSBweTNrCis3OTQ3MyBiYjJjYTFiNjMzMjFhNzhiNDEzMzQ3YWQ4ZjRjYWJlMGU0Y2U5NGEwIHB5M2sKKzc5NDc0IDQwZjc4N2IxNTFhYzZjMDUzNWE3MzU2ZTFmZDI2NDUxZTYzMjI2MzYgcHkzaworNzk0NzUgMmI2MzIxOTE1ZTkyYjYxYTZjODY5ZTc5NzQwOGQ1NmVhZDlkNjNhMiByZWxlYXNlMjYtbWFpbnQKKzc5NDc2IDBiYzA0NTI1YWY2MzhiZDAwNGIxMTA0NTVjZmQ1MzJkNjMzYmQxNDQgcmVsZWFzZTI2LW1haW50Cis3OTQ3NyA2MDAwOTYzMmVkMTE5ZjdiZGYzOTk4NWU2NzJiZDVjYTU5ZDZlYzgwIHJlbGVhc2UzMS1tYWludAorNzk0NzggOGVlMmJmODIxZjYyNjcxM2Y5OGJiNDlkN2JiNWQxMDQ0MzkxZThhZCByZWxlYXNlMzEtbWFpbnQKKzc5NDc5IGU2M2Q0Njc4ZmNhNzNmMjRkNDJlMTQ3MmZiYjZlYWE1NjkxOGVkOTcgcmVsZWFzZTMxLW1haW50Cis3OTQ4MCBiYjhiZDMzNThiY2EwMmNlNWE3MDFiYmI2YTdiNjQ4MWNhMDJlODJhIGxlZ2FjeS10cnVuaworNzk0ODEgYmVhNzVmZjY1MTE0NmRhYWQwMDJkNDFkODc4OTc2NzU2ZTUyYmRiYyBsZWdhY3ktdHJ1bmsKKzc5NDgyIGQ0OTM1MjQyNmRlNTEzMzNkMzdlNjY1MTQxOGNkZmIzMDAwOWVhNmMgcmVsZWFzZTI2LW1haW50Cis3OTQ4MyAyMTNhMGFlMmRiNjViMmUyNTE5OWUwMTA1YjQyZTA4MDgxOWJjNzYxIGxlZ2FjeS10cnVuaworNzk0ODQgMmEzMTBhNDQ4YTBhN2UyMDE0NWMyYmNkODkxZGI4Njg3YjMwYWEyYyBweTNrCis3OTQ4NSA1MWIyYWY5YzQ2OWViNGE5NTM2Y2QwOWRiMGIyODFkMTU5NGFiYTA5IHJlbGVhc2UzMS1tYWludAorNzk0ODYgMmQwNmM2YzdlNzMyN2RlYmRjZjZmYWNlMWZkZDA5NWNlZWQ4OGZkZSByZWxlYXNlMzAtbWFpbnQKKzc5NDkwIGJiYjM0MDUwMWYyOWZjMGYzMzY2MDQxMzdmMTUzOWEzZjAxNmQzMmYgcmVsZWFzZTMxLW1haW50Cis3OTQ5MSA5YjlmZDI5OTA3MmQ4ZmNjMzg0Njc1ZDg5YmY4NTRiYTVhMmE2NmE3IGJyYW5jaF9saWJmZmktM18wXzEwLXdpbgorNzk0OTIgYzNjODJkODA0MGQ2ZjRlZjY2M2JiZDkwYTVlNjVlODhkYTExZWZjZSByZWxlYXNlMjYtbWFpbnQKKzc5NDkzIDA0Y2MwNzViZGRmNWJiOTk2M2VmNTIwNTQyYWY3Nzk3YzJmYjUxN2MgbGVnYWN5LXRydW5rCis3OTQ5NCA2NmU3NTdkOGVhOTM0Y2VlYzFkNmI3MDc5NTk0ZTYwZjM0MWRlZGE1IGxlZ2FjeS10cnVuaworNzk0OTUgNzczOWFlZWZkYmMwMTQ0YzY5ZGI5NzZmOTJhOTNlMTAzOWE3OTZhMiByZWxlYXNlMjYtbWFpbnQKKzc5NDk2IGM5NmQyNzg2NzdhZjNjZDA4ZDhiZGMwYzQ4ZDY2MmNmY2RjODAzZTMgbGVnYWN5LXRydW5rCis3OTQ5NyAzMzI5YzA1ZTZlMzE5Mzc5Yjg4YWM0OTA5MWU0MDVkNzdjMTU3MjBjIGxlZ2FjeS10cnVuaworNzk0OTggZTRlNGJiZDM5YTIxM2NjZThjYmVkNzlhNzRhOWIyZTMwNzRhY2MzMCBsZWdhY3ktdHJ1bmsKKzc5NDk5IDQwYTJlN2FjOGE0N2UyMmEwMTU2Mzc1ZTlhNmI2MjU4Yjk3OGJlYzcgcHkzaworNzk1MDAgYTE0YTIwNWFiMWZiODQ5MDFkNWJlNmUxZmNkNjUxMWE0Y2Q4ZGM2MiBsZWdhY3ktdHJ1bmsKKzc5NTAxIGJjNjgxNGMzNGQ1ZjIwZTNlOTVhNDkwZTVkYTRhNmYzY2FlN2Q1ZjUgcHkzaworNzk1MDIgZjY5NzY5YWIwZWI4MTY2NzM1ZTU1ZDYzNmQ2OTE4OWM0N2Y5MzJmMiBsZWdhY3ktdHJ1bmsKKzc5NTAzIDVlMGZmNjUyODRmYTIwODliMDRlMzZjNjFiMjFhMjIzNzM2YzIxZTkgcHkzaworNzk1MDQgMWQwMDI3ZDM0YTUxZTIxYzk5MjI4NGViMzE1NDZiNzVkOTFiZmZjOSBsZWdhY3ktdHJ1bmsKKzc5NTA1IDEzNjE4Nzc1ODVmMmM0OTFlYmIwZTA3ZTZhMDU0MGM5MmMxNjVhNjMgcHkzaworNzk1MDYgYmYzYzQ4ZjI0MTdjNDQ3MTNkNDM0ODA5OGMwYWUxYTc4ODYxYTY5OCBweTNrCis3OTUwNyBkZGQ1NTA5NTFiODNmYjE3MGIwMWRlN2Y4OGYxYjczM2QxYTg1YTYyIHB5M2sKKzc5NTA4IDRkZDZlYjZiZTgyZmQ1MmYwYmU3NjhmZDM2ZTc4NTIxZTg0YzFhOGIgcHkzaworNzk1MDkgNjMyNjljNDE4NWM1MmU2OWQ2NTdmMmNiMGFjNDVjZjFjNDAxMzMwZiBsZWdhY3ktdHJ1bmsKKzc5NTEwIDBjMDI1ODRjNGU1MzRmZTdmMzg1YzE4MWY0NjMwMGYyZDA5NjM1Y2YgcmVsZWFzZTMxLW1haW50Cis3OTUxMSBhNjA5NTRlYjUxOGI5ODQ5YTkyNzMyNDQ4MDJkYjIxZTEyMzM1YzUyIGxlZ2FjeS10cnVuaworNzk1MTIgOTY1MWM4NGM1MjBkOWU4YmE1ZGM5MzM0NWU1ZWZlYTRlNmM5ZTU4MSByZWxlYXNlMzEtbWFpbnQKKzc5NTE0IDYwZjkxMjRmZGVhYzA1MTA4OWRlZDgwZTFlODE4NGUyOWJhMmVmOTUgcmVsZWFzZTI2LW1haW50Cis3OTUxNSA0MTlmZjcwMjQ0NzgzODllMGZmNTA4NmViZTRmNWE0NmFjMWVjOTU5IGxlZ2FjeS10cnVuaworNzk1MTggMzRkODIyMTk2ZDhiZDBkNmFiZDA4NjE4Yjk1ZDIxMjU3ZDIwNjA1NiBsZWdhY3ktdHJ1bmsKKzc5NTE5IGVmNmViYzA2YTc4NmRjMDBhMzg5MWY3OTQxZmVkZjA3OGQyMzkyNTYgcmVsZWFzZTI2LW1haW50Cis3OTUyMCBmZmU3Yzc5MWI1Yjk0ODc4ZjRhYWUzZTBkNzcxNzliNGUxNzIwNmM5IHB5M2sKKzc5NTIxIDEzMjMyMTJkYTE1NDAwNGFmZTcyODczY2E2ZjA0NmZhNWE1YWU5NGMgcmVsZWFzZTMxLW1haW50Cis3OTUyMiA1ZTllYWRjNzZlODdlZjdiZTZkMmFhYzQxZWFjYzU2ZmZjNDVmYzA3IGxlZ2FjeS10cnVuaworNzk1MjMgY2FkMTI2NDI4ZjQ4ZDc4Yjk3ZGE3NzFmYWI1ZDRiNzYyZDg5Yzg4YSByZWxlYXNlMjYtbWFpbnQKKzc5NTI0IDU3ZDhkN2YzMTdmNTAxYjQxNTVhOTk0NTIxMjFhMzI4Y2RlYTk1NmEgcmVsZWFzZTI2LW1haW50Cis3OTUyNSBmZDVjMGVhMjg3MGJhYzRiMGQxYzkyOTlmMDJjYmU3NWM0YWQwN2Q3IHB5M2sKKzc5NTI2IGU0Zjk2OTAxMmU2ODNjYWUyZWQ4OTE4MmM2ZTUxM2I4MWY0YjgyYjkgcmVsZWFzZTMxLW1haW50Cis3OTUyNyBkNTdjZjFhYTJkZDRkMDBjM2MzNzBhZTNkYzU5N2E4ZDAwNjMyNGM1IHJlbGVhc2UzMS1tYWludAorNzk1MjggOTllNTIzMTMyYWVhNDNkNzhhNzY0ZTEwNGM5MWM2MDc3OTQxYjQ1MCBsZWdhY3ktdHJ1bmsKKzc5NTI5IDg3YmMwZjEwODcwMjEzOTEwNzI5ZTUxYjMzMDk0YjJhYTA5YjAyOTQgbGVnYWN5LXRydW5rCis3OTUzMCBhMmU2Mjc4MjdiZjM1MDlhYjRhNjc4MWJmZmI2ZTNlODUyNzMwMTEwIHJlbGVhc2UyNi1tYWludAorNzk1MzEgMDFlOGIxM2ZhOTlhNTY1ZGM1YTllZTI1OWYwMTIzOGNlNjQ2MTY3MiBweTNrCis3OTUzMiBlY2I5YTY2MDliYjFjNTQ1MDliYjhjOGYxZjc3YTM4NjIyZjE3OGY1IHJlbGVhc2UzMS1tYWludAorNzk1MzMgNTkyMGY5YTVlMjJkOGQzM2MxMTI0NGI4MTVmZTIyMjhiNTMwZjkyNiBsZWdhY3ktdHJ1bmsKKzc5NTM0IDgzMjAyMmY2M2JjYmQ2NzU1NDA4ODE4ZDhhNjFiNmZhODY0YjMzYTIgbGVnYWN5LXRydW5rCis3OTUzNSA3YjhiYTAxOWNkMTViNTIwOTg3YTM4MTU5ZTNkYmVhZGE0Y2U4YzAyIGxlZ2FjeS10cnVuaworNzk1MzYgNGZjYWFkM2Y2NjliMjNmNmJlM2E3MDYxOTg1OGNhN2U4ZmJlNWNkNyBweTNrCis3OTUzNyA1NzBlYWUxNDgxZWI2MDExZmMwOWZjMmJjMzdlYzQ0ZWNhYzJhOGEzIGxlZ2FjeS10cnVuaworNzk1MzggYzM2ZjIzZGE4OGMxYWE1NDNmZDZjNDZhY2U2YTk2MjliZTNlNWIyZCBweTNrCis3OTUzOSAzNzQ4YmNhNGQ4Njk4YWIwN2M3NjA4NDEyNDFjYjE3ZDBkMDJiNzhjIGxlZ2FjeS10cnVuaworNzk1NDAgMjVhN2NlMDIzMDZjZGYxZDNjMTJiOWZmMjg3OTk1Yjk2ZWRiZWE0ZCBsZWdhY3ktdHJ1bmsKKzc5NTQxIGQwMGYyZWEyNWQyMGE0MWYyNDZkNjY4MGY1ZjMxYzdjN2QzMjNiZWYgbGVnYWN5LXRydW5rCis3OTU0MiA3YjY3YzM0MjkxN2NjZTY5MTA0N2E3YTUwMGJjMDFjYjg3YmVkZjQyIGxlZ2FjeS10cnVuaworNzk1NDMgMTNhODExMmVjYTUyZmMzY2Y0YzhkZTZiOWMzMTljZTllODEyMTNhYSBsZWdhY3ktdHJ1bmsKKzc5NTQ0IGE0ZGFkMjE4YzZlMzQ1Njg1ZDc1YTcyYTQxYTk3YzNiMjU1Y2I0N2IgcmVsZWFzZTI2LW1haW50Cis3OTU0NSAxZTJjOWZlYTdjYmUwMTBhNmRkYmViZjljMzE2M2RmMWNlNGFjMzg2IHB5M2sKKzc5NTQ2IDVjYzgyY2NlNDUyMTVmYzdlN2Y4YTMxZGZjOTJmM2EwZDA0ZWFiNjcgcmVsZWFzZTMxLW1haW50Cis3OTU0NyBjNzk2NWJkNWQyMDA0ZTJjN2YzMzI5ZGMyODRiNmM1NDgwMTMyMzY0IHJlbGVhc2UyNi1tYWludAorNzk1NDggNmRlM2RlM2FiNzFmNzUzNmE4YTEwOGZkNjVhYTQxOWQwN2M1MmJlNCBsZWdhY3ktdHJ1bmsKKzc5NTQ5IDg4MmQ2ODFkNTBhMDA0ZWVjNDQ2YTgyNzQwNzM3ODI0MTFkMzFhNTcgbGVnYWN5LXRydW5rCis3OTU1MCA1NGIwYTZmNzVlZDU3OTUwNmQ2YmEwYzg1MWM5ZDgwNmEzOTFhMzRjIHB5M2stY2RlY2ltYWwKKzc5NTUxIDc4ZTIwOTc3OTJiZWVhZDFjODJjOTQ5OWUxMzkwOWVhOTI1MWIyZmQgcHkzay1jZGVjaW1hbAorNzk1NTIgZmQ4ZmVmNmFmZWZkOGNkYmZkNGFjMjU1MjJjODg1YTcwMDg1ODkxMSBweTNrLWNkZWNpbWFsCis3OTU1MyBlOTVmODc1NWZmMWUzZjY2MzRmMmJlN2MyYTU1YzE5ZTNiMmU3YWQwIHB5M2sKKzc5NTU0IGI0ZGVhZWFiOTZlNzhkM2RjZTIzNTYzOTNkNTc5N2ViOTFiNmQ1ZGYgcmVsZWFzZTMxLW1haW50Cis3OTU1NSA2ZGY2YzE5ZmJhZTM1OGM0NTgxOGYzM2U4MzBhNjJlYjMzMjEzZjIzIGxlZ2FjeS10cnVuaworNzk1NTYgMDRlNzc1YjMzZTllMmEzN2VjNWIyMzU1NGE1ZDMxNDk4OGE3YjcxMyBweTNrCis3OTU1NyA5NjIwMWY0ODhjYzNjZTI4NGZlMDBiZjlhYjJmMGQzNzNkZWQyZjUxIGxlZ2FjeS10cnVuaworNzk1NTggYTQwNGUzNzAyZjc5ZjI4YzAyYzM5NmVjNTZhZTYxM2ZiYjhmOWYwNCBsZWdhY3ktdHJ1bmsKKzc5NTYwIGM4YTYwMWU3NDRjZjY4ODMwZGQ2NDMwZjYyMzdiY2FhNmU1NzFkMTYgcmVsZWFzZTI2LW1haW50Cis3OTU2MyBmMTcxNzEyODgwYzhlYmQyZjQ1MDYzODE2NTNlYTk2ODViZTYyOTI1IHB5M2staml0Cis3OTU2NCA2ZDM0MTVjMTViOGJmOTIwOGJjNDgwODRlMzc0MTljOWEwZTdhZjAwIHJlbGVhc2UzMS1tYWludAorNzk1NjUgMWJlYTU0MDRlMDg3YzBlNWZiNTM4MDcwMWJhOTRiOWNhOGZiZGJmMSBweTNrCis3OTU2OCA1MTJiODAyNTA3ODliNzcyOGMxNWViMDE4M2ZmMjdlYTViNzE0OTA4IHJlbGVhc2UyNi1tYWludAorNzk1NjkgMjQ3OGMzOGZlZmY3NDlmOGU2YWY1ODM2ZDZhN2I0N2E2NzVmMzdhNCBsZWdhY3ktdHJ1bmsKKzc5NTcwIDViYWQ4MThkMTRmMjg3M2YzOTM5ZmE3YjM2ZmY2OGFmMTVkM2JkMjUgcmVsZWFzZTMxLW1haW50Cis3OTU3MSAzZjQ0ODI1MjZmNTVhMjY4Nzg3YTAxZDI3OGIzNWY0ODY5Y2RjYzdmIHB5M2sKKzc5NTcyIDM4ODA2ZGYwNWQwOWQ2ZGVmOGM2NDc3ODRiOGE5MzQ5Mzg0ODliMTQgcmVsZWFzZTMxLW1haW50Cis3OTU3MyA0ZDlkOTc2MGM4OGJlZjZkNzAyMzM3N2U0YzI0ZGQwY2Q2NzQ4ODZlIHB5M2sKKzc5NTc0IDQxNWM0YmI0NWZlNjg3NzRmNGIwOGQ1ODZlODc4NzE1ZjQzOTRkZjUgcmVsZWFzZTI2LW1haW50Cis3OTU3NSBiNjQ3MzE1NGE3MGJjMzMxNWVlNWE3M2JhNzZlMGU0YWY0MjQxOGQyIGxlZ2FjeS10cnVuaworNzk1NzYgZWFiMzYxNjE3ZjZhN2QwNDE5ZGE0OGM5MTMxNjJjYzMyMjAxZjU0YiBsZWdhY3ktdHJ1bmsKKzc5NTc3IGJhYzRiMjg5Zjc5YWFkNTMwNmM4NDY2NjgxM2U2NzYyM2Y4MDYyNzcgbGVnYWN5LXRydW5rCis3OTU3OCBlYjlmZGE5MGRhNmVkODRkNTQ3Y2I5YzU5YzYzMWQ2N2UzMjcyNGIxIGxlZ2FjeS10cnVuaworNzk1NzkgZjM4OTE5YmIyNmNjNzExOWZkNWE4OWRjMjdjM2Q2NWY2ODk4ZGZjZiBsZWdhY3ktdHJ1bmsKKzc5NTgwIDdhNGEwYzY5ZTNhNWYyM2ZmMjdiZmQ3MjNjYjc4YTExYmYzMzcxODcgbGVnYWN5LXRydW5rCis3OTU4MSBiNTdkYTRhNGEzZWQ5NWViZDFlYWE2Njg2ZWQ0ZTNhOTJlMzMyZDA5IHB5M2sKKzc5NTgyIGU4MWNhODhkNDc4Y2M1NTgzMjE5ZTNmYTYzYjI5MzUzZDNlNmIzYjUgbGVnYWN5LXRydW5rCis3OTU4MyAxMzA2MDMzZDhhZDJhYjcxOWFjODM5YzE0YzgyMmY2OTM1MDY1YWM3IGxlZ2FjeS10cnVuaworNzk1ODUgZTM1ZmViOTk1YmQ5NmM0NTBiMmEwZDNjY2MyYzQwYzU0ZWVmYjIyOSBsZWdhY3ktdHJ1bmsKKzc5NTg2IGM1YjIwNjQ1ZTkzMzUwYzc0MmI4ODc1ZWVmZGRiZTBjMjdmYWYxY2EgbGVnYWN5LXRydW5rCis3OTU4NyBmNzc1NTZmZWJlYzgyMGNmMjAzNTYxY2ViZjNkOTNhN2VkMjA5OWQ3IGxlZ2FjeS10cnVuaworNzk1ODggYWU3Y2Y1NzhkZTVhZGRlMDAzOTZmNWQ1Y2IzOTY5MDU3YWVjMTgyYyBsZWdhY3ktdHJ1bmsKKzc5NTg5IDE3ZjA4ZDY1Y2MwZDgxZGQ0NzQyZDViZjlkNmJmN2U1NWZiNGQ3MDAgbGVnYWN5LXRydW5rCis3OTU5MCA1N2Y0Yzk5MDgyZGY1NjA5NzE2M2RkZmIwN2E3YzBlYjlhNzQ4MDVjIGxlZ2FjeS10cnVuaworNzk1OTEgNDhmZDY5YzJhMmI0OTRmMmIxMGIwOWQ4NWMzYzY3YjYxZTAzMTUwMCBweTNrCis3OTU5MiAxZGYzNGZhNDkxYmRhMDRiMDIyYjU2YzJmYWNhNWQ2MjY2MjViMTUzIGxlZ2FjeS10cnVuaworNzk1OTMgZDc3ZTM4NDYwZTNjYTdkNmIyYzhkZWI5MGUyYmQ4OWY5NDcyMzQ3ZCBweTNrCis3OTU5NCA0YjU1Y2VhNTUwNjc3NmZhZDg4Y2VkMzgwMTUzMDA3NWMzYmMxMmIwIHB5M2sKKzc5NTk1IDUxNDlkNDg0ZDU2YWM4MWRiNzVkZDFmMzU4ZWE1NDk1NTg4ZmI4ZTUgcHkzay1jZGVjaW1hbAorNzk1OTYgMjA0OTdkODVlMDExMmVjM2U0YzgxZmViMTU0ZjNiMzI5MDFmZTcxZSBsZWdhY3ktdHJ1bmsKKzc5NTk3IDNmMWQ2ZWQ0ODBkZDgxYjA0MzNiNDcxYmQ0YTcwYTE0NGZiOTQ1YTMgcHkzay1jZGVjaW1hbAorNzk1OTggZTgwNTJhNjBiYmI3YjZlZjMyZjBiNzA0ZWE3ZDQyNjQ3ZDVmOTBiNSByZWxlYXNlMjYtbWFpbnQKKzc5NTk5IGNmYmE1OWMzODM0MTVjMjkyYTU2NDEwMzQxY2I1NzE0NmRlZWFiMWYgcHkzay1jZGVjaW1hbAorNzk2MDAgODcwZmY2MjIwYTBiOTliMDQyMGMzY2UxYjY2ZmUzMjk5N2QzOGIzMCBweTNrCis3OTYwMSAyNzc4NTgzYmUyMWQ2MmNlZWE4NGYzZTA4ODViNWQ3NTBkN2MyMWFhIHJlbGVhc2UyNi1tYWludAorNzk2MDIgZDExMDFhYTk4NGMwNzViYzdkYzZlZTI5ZGM3MDdhZWFiOTIxYjA3MiBweTNrCis3OTYwMyA0YWMwNWQxZjYwYzE4MDY4YjY0ODQ2MTkzNGVhMDEzOTY0N2JlODkyIGxlZ2FjeS10cnVuaworNzk2MDQgNjZkYjAzYTcwNzY3OWM2OWE3ZTcwMDZjYzQyMzVmN2JiMmQ4ODk5ZCBweTNrCis3OTYwNSA2OTkyNDY3YmI4YjU5YzYzMTBkNGI1MTg4OWE1YWQ2MDkwMzg0MThjIHB5M2sKKzc5NjA2IDQzYTgzN2QyNzI4YTEzNDFmMDQ2ZjAxOTFmYWY3OGU0NzJkN2I1ODQgbGVnYWN5LXRydW5rCis3OTYwNyAxZmY4ZGQ2N2JlODIyN2E3NzAwZjg4MmQxYzE1YmIyNWExMTdjNTY1IGxlZ2FjeS10cnVuaworNzk2MDggMmY1ZGMyZmEwZTU2YTI1MTAxYjMwYWZkZmNmNGMwNTM4MzY4YjNkYSBsZWdhY3ktdHJ1bmsKKzc5NjA5IGNjYTRiNzJmNDUwYjY0Nzg2NzJhODhkZWQ5OWVhMzIxNDhiOGY2ZjYgbGVnYWN5LXRydW5rCis3OTYxMCAyNTVhNDAxYzE5YjA1YWFlNmE2MmZhNTAyOTIxMjkyM2UyZTc3N2ViIHB5M2sKKzc5NjExIGVmZWJiN2JjYWU4YjE2NGIwMjUxMDUzYzkyOWIyMGQ3YmI1NTQ1YWEgcHkzaworNzk2MTIgYjQ3OTZlZmNhNzE2NGZmZmNjMmNhMjE4NDA4MTM3NWIwM2I3YmQ5MiByZWxlYXNlMjYtbWFpbnQKKzc5NjEzIGExZGFiZjRlODg2NjU2MWJiNTc1N2YzYWJjNjRmZjA4Yzg4NmViNTYgcHkzaworNzk2MTQgN2RjOGI4OGJiMTVhNDFlNGI2NmViOGU5ZTIzZjM4NmE3NWIwNDYyOCByZWxlYXNlMjYtbWFpbnQKKzc5NjE1IDhkNzMxN2M5MjRjZWY4MjQyNjllZWRkMjFlNTY4MzgzNDExNTgwOWUgcHkzaworNzk2MTYgZWVlYTM0MDE0YzgwMjY4NmQ1NmJlMTgyNDkwMWIwYjg0ZTZkMjk1MyBsZWdhY3ktdHJ1bmsKKzc5NjE3IDI3OGU3ZWNjMGY3N2VmMGRlNjIzYTEzYjMzM2U0NjZkMDY2NDI2NDIgbGVnYWN5LXRydW5rCis3OTYxOCA5ZDUwYmNkM2YwYzljYTg1Yjc4MmUzNDhlNGQ3Yzk2ODVlZWM2NmYwIGxlZ2FjeS10cnVuaworNzk2MTkgN2M5MjM4MDg1YTVjZTBhMjZlMjEwYTM1NTIzOTZiMGQ1MWRlMDllZiByZWxlYXNlMjYtbWFpbnQKKzc5NjIwIDM3N2IyNmQ4NzZlMGRmZTdhZTU5MWVjNmVkNmRlM2YwZWZlNGFjZDIgbGVnYWN5LXRydW5rCis3OTYyMSA1M2FmY2RjOWFlMGFiYzY5MTBjMzVjMjUxMDJmOGJjMTc1Y2U4ZjM3IHB5M2sKKzc5NjIyIGY3NmMzZGVjODU4YjdiOWM4NTEwMzdmZWQ4N2FhMWQzYmI5OWY1YWUgbGVnYWN5LXRydW5rCis3OTYyMyA3MGI3ZTRhN2Y3Y2UyMGIyZTc3MTEzMzYzYjc5ZTljYWE3NTM1MGY3IGxlZ2FjeS10cnVuaworNzk2MjQgYWFiNjQyODNkMDBhMWZlNmU0NDM5OTRiMmMzOTEwNDdiOWY0MWQ5MiBsZWdhY3ktdHJ1bmsKKzc5NjI1IDg0ZWNiMzVhMDZiZGRmNmNhMTg2YzY5MmE1NTg3OGUzNjdhZTNlZmIgbGVnYWN5LXRydW5rCis3OTYyNiAxYjVkNWU3NGY3MzhmNDFhNDc0OGRiY2Q3MTc2M2E2MzcxNmYwMDA3IGxlZ2FjeS10cnVuaworNzk2MjcgZjBiYjEwY2UwNWM3NzI2NjcwYzUxM2VjZTQ0MDE1ZjBhMjQzMTg5NyByZWxlYXNlMjYtbWFpbnQKKzc5NjI4IGFlYTMxOWVhMjZhOGU5MDMyM2UzYzUxNzgzMmVhZGU2MTNhNGY3N2UgcHkzaworNzk2MjkgZmZhMGFhNzBjNzQ2ODNmNDUwYjhmYzY5ZGRlNGYzYjFjYjNhMWVhOSBsZWdhY3ktdHJ1bmsKKzc5NjMwIDc2NTk0M2MxMTE1Yjk1YmZkYTNjODI4ZDViMGRlMWQ2OThhMGYwNTEgbGVnYWN5LXRydW5rCis3OTYzMSBjMzRkZGNhMzY3ODZjMWM0ZDcxODVlZTMxYjllYzc1OWE5NjkwNTQ5IHB5M2sKKzc5NjMyIDU0NjJjNWE5MWY4ZGNiOWRjOGY0M2Y1MWUyODhiNGJkM2IxNjcwZGIgbGVnYWN5LXRydW5rCis3OTYzMyAwYWI4OWU4YmRlZGM1NzY2ZGUyMTdjYTI0N2U4NjMwZTIwMGE2NTJhIGxlZ2FjeS10cnVuaworNzk2MzQgYTdlOWY4ZTM1NTNmN2NhNTY5NzMxYzBhNDc2MmNkNmE1ZDBkYzFmMyBsZWdhY3ktdHJ1bmsKKzc5NjM1IGQ0Nzk5ZWU2NGMyM2IxYzU4NGIyMjQyNzlkZGUxZjM3ZDBmNzdlMGQgbGVnYWN5LXRydW5rCis3OTYzNiA0ODc3YzExNTkxNTNmNWVmZDk5ZGNjYzVhYjhkMmY3N2IzZTRhNDhkIGxlZ2FjeS10cnVuaworNzk2MzcgNGVkMDRhMzljMGE5MWI5M2Q1NmFmNmViZjUxMWYzNGUwZDc1OTA2MiBsZWdhY3ktdHJ1bmsKKzc5NjM4IDU0OTY1MDNiOGIxYWJkNzJmMDNkNDg2NThmMDYyMmM5ZDI0YjZjOGEgcmVsZWFzZTMxLW1haW50Cis3OTYzOSA4NmY2OTk3NjYwMTYyY2JkZGEwMTkyYzNlYzA5NzkwODcyNGE2OWYxIGxlZ2FjeS10cnVuaworNzk2NDAgZDM4NTg5NThkZmY1M2U2MjQzNTIyMWFiMTk1ODdkNTMwZTk4MmUzMSBsZWdhY3ktdHJ1bmsKKzc5NjQxIGI1MjlhMTQyY2M0OWU2ZjMxMGFiNzQ2MmZkMmZmMjI2MWI1YjRjNDAgcHkzaworNzk2NDIgZDMzNGE3YTU2ODQ0OThjZTdlZTk1OWE0ODAwYjYwMzAxOTgxMjYzZiBsZWdhY3ktdHJ1bmsKKzc5NjQzIGViY2ViNzc5NjdkZTg2MzQ4YTEyZmFlMDAzOTQ2ZGUyOTkwYzkxNjUgbGVnYWN5LXRydW5rCis3OTY0NCA2ZDQ4MzVhODFiNjMyYWQwMjBmNmIwYjhkNDhiNjFhZGRiZmQwM2FlIGxlZ2FjeS10cnVuaworNzk2NDUgZmE2NDFkNjA1NDY4ODRmZDljMDYyMTE5ZmFiN2RhZWI3NGMwMGQ3MiBweTNrCis3OTY0NiA2NmI2MGE2ZTgxOTg0NmY2YmUwZWE2NzkxNTlmYTBiZDZjNWQ3NmQyIHJlbGVhc2UyNi1tYWludAorNzk2NDcgYTg4ZTBmNmFiOTQ1YTE2NjkzMTNhNGEyMGFiODVhMTNjNmU5OTVlYyByZWxlYXNlMzEtbWFpbnQKKzc5NjQ4IDg5ZTg3YmE4YWI0ZTBiMGY1MzE2NGRkYjIxYjNkZjFkNGQ4MTFjZmIgbGVnYWN5LXRydW5rCis3OTY0OSA2ZmU1ZGMxNzVjMjY0ZGYyYWIxMjI1Mzg3YWJkOTBlZmU1YTliODkyIGxlZ2FjeS10cnVuaworNzk2NTAgZmRkMDEzNzQzMmY4NTM3MzlmNDE1Zjc4NTBkYmNiOWM1ZjgyOTZlOSBsZWdhY3ktdHJ1bmsKKzc5NjUxIDVlYmNhNjIyODkwMzZiMzdiY2I3ZmQ0ZTA4YjQ4OTdkYTEyMTU0NjcgbGVnYWN5LXRydW5rCis3OTY1MiA1MGIyYzBmZTVlMjdiMzljMjM0YzE5ZjJlMzNmOWUyYTM4NzAyNjI3IGxlZ2FjeS10cnVuaworNzk2NTMgMTU0ZGNmYTMyYjIwMWFlY2RhYjc2ZjVmY2VjM2M4ZDhlYTYyY2IzYyByZWxlYXNlMjYtbWFpbnQKKzc5NjU0IGE3MDdjYTI2MDM0MWI1ZjZmMjgwYTcyNTRlYTZhODg0MThkNmZlNWMgbGVnYWN5LXRydW5rCis3OTY1NSA2MjllN2IzYzhiMmQ5NzZkYzcwZjY0ZTNjN2FlMWI5NzU0MjQyNTFhIHJlbGVhc2UyNi1tYWludAorNzk2NTYgZWE0YzZjMDY4OTUwMDlkMGUwM2Y5NzNhMDI3MDYyNmY4M2JjZWNhZSBweTNrCis3OTY1NyA2NThiMzllNjZkZWZlZDZmNmRlZjdjNmUzMzIxZTIyZTIyMWNjMTJkIHB5M2sKKzc5NjU4IGQ1ZjJjNzQyNWI0YTk0N2VlODUxYmZkNTRjMjkyYmY5YzhlYzZkZDIgcmVsZWFzZTMxLW1haW50Cis3OTY1OSA0NGQzMmE2YzllMzU3YTMzYWM2MjYzOWE3OTkzMDE3OTM0NTBkMDQ1IHJlbGVhc2UzMS1tYWludAorNzk2NjAgZGE3YjAwMDZhNzk5N2U3N2I1ZDc4ZmYzYzgzZWM4ZTU2NjhlOWJlZCBsZWdhY3ktdHJ1bmsKKzc5NjYxIGFkOTRhZjkxMjljY2EzZGRkZTYyNjg4MjU4NDQzMzk3ZGEyMmUxMmIgbGVnYWN5LXRydW5rCis3OTY2MiA3Y2E2YTM0MzFmOWUyN2NhMTE0ZmY3YzQzYjMwYzRlYzE4ZjNmODU5IHB5M2sKKzc5NjYzIGU0N2E2ZmY1YjUyMGYwZDFlNTNkODBjNGQzZWVhMDk1ZTBiNzM4MmIgcmVsZWFzZTI2LW1haW50Cis3OTY2NCAyODExYmU5NWM4Yzg0NDhhZWVjOTliNmU4NmNkMjZmZWM1MDc4ZGJjIHJlbGVhc2UyNi1tYWludAorNzk2NjUgYzU0ZGQzZWVlZDU2YjNmMmNlZTBlZGE0MjZmM2JkZGYxNzg3MTFiNCBweTNrCis3OTY2NiA4YzhiZGMxMWU5Yjk5MjljNTUxMTdjYjg4OTFjZDVkZGExZWUxOGI3IHJlbGVhc2UzMS1tYWludAorNzk2NjcgMWQ0ODRjNGRiZjYwNGNkYmQ3MWQ4ZDdjZjRkMDYxOWU3ZmZiNDM3YSByZWxlYXNlMjYtbWFpbnQKKzc5NjY4IDUwNzgyMjBiZDFlYTYzMjBiYzI3OWZlMTU5N2U5NzFkZjM4MjljOTAgcHkzaworNzk2NjkgMzM0ZDQ1NjJjODc1YTkwMjE1NzlkNGVjYWU1NjdiMzkwNjFmNmQxNiByZWxlYXNlMzEtbWFpbnQKKzc5NjcwIGNmODAzNzcxODRmZmFhNjg2NDQzMWUzNTQwYzljZWI2YjFlYWEwMzEgcHkzaworNzk2NzEgYzJiMjE3ZmU0ZWQ0NTQ4MWViNjkyZWNlYmE4OTIyYmZkZGU4YjUwNiByZWxlYXNlMzEtbWFpbnQKKzc5NjcyIGMwYjYyOTliOTNlZWJlODY2YmRkYmE4Nzc0ZDJiY2Y4ZWJlZmNiNzIgcmVsZWFzZTI2LW1haW50Cis3OTY3MyBiMWMwMGM3ZDNjODU1ZDUxNzI2NDc2ZGZhNTZmMDRiMjg2OGE2ZjFkIGxlZ2FjeS10cnVuaworNzk2NzQgMDU0MGE5NjI4Njk4OGE0ZGFhNzM0MTJiOWQzNzc3MDE2ODdiYWZkMSBsZWdhY3ktdHJ1bmsKKzc5Njc1IGNmMzRmYzFlODQxM2UxN2M5N2ZiZTlkMzAzZDQ1YjM5ZjM0OGFjYzMgcmVsZWFzZTI2LW1haW50Cis3OTY3NiBiMTk0MWNmZmZhNWM4NTE2MWZhMjIwMzBiOWUwMTJkM2RmNTA0M2FmIHB5M2sKKzc5Njc3IGQzMWUyNjlhYWNkZWJkMDgyNDkzNzA1ODVlOGJiZGNmODNlYjI1ZTAgcmVsZWFzZTMxLW1haW50Cis3OTY3OCBhNjY1NDVkYjNiMDY5OGE5OTE3NzU0YjZhM2ZhNWZmYTU0MDAxYzAxIGxlZ2FjeS10cnVuaworNzk2NzkgZWIwNDljM2MwODNmYzgyMTQzNjQzYTAyYmYyNDEyMmViNzc4N2RkNCBsZWdhY3ktdHJ1bmsKKzc5NjgwIDI3NDUxYTk2NzY1MDBkMDc0NjdmODdiOWNiMmE4YThmZDlkODczMTIgcmVsZWFzZTI2LW1haW50Cis3OTY4MSA1M2VlMzhlNjM4YmY5MGU5ODNlOGFmOTMzNmNhN2I2YjU1NGYwN2VlIHB5M2sKKzc5NjgyIDNiMWQwYTNhZGZmZmFlNzQ5ZGNlMjg4YTE3OTJlZDk3ZWVmOGNjOGUgcmVsZWFzZTMxLW1haW50Cis3OTY4MyBiZDUxMjFiZjY5OTZkMGMzZTllMTViNzdlMTQxMmY3MTQxMDQ4MzA1IHB5M2sKKzc5Njg0IGJhNDgyZjQ4ODdmN2Q2ODAyYzJlODE2NzE3ZjE5YjM1MDRlOTBmMjYgcmVsZWFzZTMxLW1haW50Cis3OTY4NSBhNTg0ZjI0MzE4MGQ1MmE2ZDZjMjJjMTAzZTcyZGQ3NzMzZGE3Njc5IGxlZ2FjeS10cnVuaworNzk2ODYgN2QyNzI0ODhiNjNjOWE0MmYyMzhlYjc3MWRkMmY5MjYzNWI3NTIwYyByZWxlYXNlMjYtbWFpbnQKKzc5Njg3IDU4MGYyZjViYTg1ZjM2NTE4MTY4MTNlYzc3MzY5OGIyYjViN2JiNjggcmVsZWFzZTMxLW1haW50Cis3OTY4OCA5YjI0YWEzNmMwNmY4M2UzYmI0MWZkN2Y1NTNkZWQ2YzNmNzQzYWIxIHB5M2sKKzc5Njg5IGQxNTIzNWQyMTM3YzE0ODU4MWQyOTY0OWYyZjI3OTJkOTRkOTVjMDcgcHkzaworNzk2OTAgZWExMGNiNjEzOTBhZWEyMGZiZDk2OGMwMzVkYzUyZjE1MDhlNGRlMiByZWxlYXNlMzEtbWFpbnQKKzc5NjkxIDRhNmUyMDEzNTQ3MDY4ZjA3NzBiN2JjMjY4MmJiZDA2NGI4MGI3YzQgcmVsZWFzZTMxLW1haW50Cis3OTY5MiBjNjY5OTViZWZlNDI0MjFiNTZlOTBhZjM0N2E0ZWQ0MTU5Yzc0OWIwIHJlbGVhc2UyNi1tYWludAorNzk2OTMgYjYyYTY4MjExN2UwMGYzODUyOTBhNWU0ZGFjYjg1ZWRmZWVhNDk1OCBsZWdhY3ktdHJ1bmsKKzc5Njk0IDM1MjdkNjU3OWVjMjkwZmQ5MGQ5YjRmYzQ3ZTZhNzI3NTFmZTQ1YjIgcHkzaworNzk2OTUgZDVhYmQ4ZGZkNGY0YmFhMGFiZmJjOGU2MmRlOTUzMTRkNWFmOTcxMiBsZWdhY3ktdHJ1bmsKKzc5Njk2IDA2YTQ2Zjk1MTk0ZWYxNDE1MWNlY2M2NTYxYmQ5YTY5NDkzY2JjZjUgcHkzaworNzk2OTcgOGFiOTYwYjYxMWE2ZjFiOTFiZWM4OGFiMzFiOTBmZmYyODYxMjQzMiBsZWdhY3ktdHJ1bmsKKzc5Njk4IDM5ZWZkM2ZjNTllZmE3ZjA4YzA4OWRkMjA0MTg0ZmI0MjQwNTJiZjYgbGVnYWN5LXRydW5rCis3OTY5OSA4NzY2NjM3NmQ4YjA1MDQyNmFlZjk1MzU0MzU4OGM3YThmNDNkNGRhIGxlZ2FjeS10cnVuaworNzk3MDAgNDBiYzhiMWNhOTMyOTg5ZjdhMWY3N2IyYTJiMWY3YjU3NmJkYWY4OSByZWxlYXNlMjYtbWFpbnQKKzc5NzAxIDNhMGY1MjViNTliNTk3NDhjMTQwMmY0NDNhMTA4MjkxZmMwZjBmOTggcHkzaworNzk3MDIgODZiZjM4ZWEzMTIzNmUzYmVhZTA5MDY5YTg3NWNiODAyMDk5OWM3NiByZWxlYXNlMzEtbWFpbnQKKzc5NzAzIGFhMTIxYTM5YTk1NjcwZTQ4NjI2YTBhNzdiZDg2ZGNhYTQ3YTQzMTEgcHkzaworNzk3MDQgZGEzNGQxZjQzY2IwMDA1ZmZmOWQ4ZWQ3NmExZDE3YTRmNTU3MTYwMyBsZWdhY3ktdHJ1bmsKKzc5NzA1IDdlYjkwN2M4NTRiNDJhZDlkYmJiMTgyNTZiOGY0YTQ4ODlmYjRmZDQgcHkzaworNzk3MDYgYzIxYmM4MGM4M2Y2MmZkZDE2MTllMDExN2M1Y2MxYjUyNmY2ZGZmMyBsZWdhY3ktdHJ1bmsKKzc5NzA3IGIyNjI1YWNjMjQ4NGU1MGViNjAyMzViZGE0NWZlOWE4NzU0ZGEwMmIgbGVnYWN5LXRydW5rCis3OTcwOCAyZTU1OWMwYWQ4YzM0MjhmZjI2YzJmZjJlZWQ3MjgzNTI3MWE1ODZmIHB5M2sKKzc5NzA5IDYxOTkwZjc2MzQ4NTkzMGU3OTNlYjljZmM5ZDk4NzI2ODkyM2Q1OWUgcmVsZWFzZTI2LW1haW50Cis3OTcxMCBlMTQ2MTMxMjRjYzE0Mjg4ODQwN2U3MDlmNmIyMzIzNGRmMDFjZDdkIGxlZ2FjeS10cnVuaworNzk3MTEgNjYxNThlNGZkMDIyN2U0MDVlNmEyYjlmYjVkOGNmZDA2OTQwY2FkYyBsZWdhY3ktdHJ1bmsKKzc5NzEyIGExODQyMjdjZmI5NDNhMGMwZDAyNTIwYWFhMDlhODk1YmNmN2UzMzcgbGVnYWN5LXRydW5rCis3OTcxMyBjNzNhNjU4ZGE2ZmFjMzQ0MDMyZGM0MjgyYjQ5OTgzOWM0NDY3OTRjIGxlZ2FjeS10cnVuaworNzk3MTQgZTI5YTJlMDNlNzM5ZTY2NjllZGM2YWE5ZGM2OTUxYjRkN2VjZmFjMSBsZWdhY3ktdHJ1bmsKKzc5NzE1IDNmNzg2NGMxY2YzZjYxNTQzZDRkMTdhNzg1YzI1OGZjM2NkZGUyMTYgcHkzaworNzk3MTYgMzQ1YjZhYjMyZDY1NGY0NjY0ZTgwMjZhZDA2NGYwMzg4ODgxOTkwMyBsZWdhY3ktdHJ1bmsKKzc5NzE3IDgyYzIwMzRiODA5NWY4NDQwMzQ5MWY5ZWZjYTJmYmUzNjFiMDMwNzIgbGVnYWN5LXRydW5rCis3OTcxOCBlZTM0MjVkMWM2ODhjZmQ4MTVjYzU1YzY0M2Y4ZjYwM2ExZmEwMmU0IGxlZ2FjeS10cnVuaworNzk3MTkgNGQ4NGUzZmEzMzNhMjFmODlkZjc0NzYxMWFlNDEzODEzNGE5ZjZlOCBsZWdhY3ktdHJ1bmsKKzc5NzIwIDliNTAwYTJjODU5ZDA2ZmI2NzE0M2RhYjEyYmU4ZjQ5ZTI0NDNhNTEgcHkzaworNzk3MjEgYzhmOTU1MDAzYjJjMWM1YTM3NmIzY2U3MTkzZWNlNWUzMTIxZTYwNSBweTNrCis3OTcyMiA2YTI0ZGVmY2MwMGIyY2I5ODA1YTgyZjdkNzUzZDE1OGRhMmFlMGMyIGxlZ2FjeS10cnVuaworNzk3MjMgOTY1ZWM2MzU2ZDVkODQ0NDIwZGYwNDZiNmY2NWZhY2NhMTdjMzUyYiBsZWdhY3ktdHJ1bmsKKzc5NzI0IDgxYzJmNTkyZTgwODEwYTg0NjYxYmYyYjg2MTlmMzAzMjYyMmEzOTAgcHkzaworNzk3MjUgM2M0YzBhNzE2YTE4YTQ4ZmQ1M2YwZDQyYTkwMzk4ZWI0OTM4YjMxOCBsZWdhY3ktdHJ1bmsKKzc5NzI2IDBjZmFiZWQ0NjY2OWNlOWQwYTg0YTYxYWQ0YjFjOTc5MWI4NTI3NjAgcHkzaworNzk3MjggZGE5MzlhYjJiZmUyNzc3YTgwOTQxZjMwNmNhN2M1OThjMjc3MWVjNCBweTNrCis3OTcyOSAzOTkyMTAyNjNlNzEwYzA3YThmMWMwMThmNzQ1YTk3NTdiMWVlOTAyIHB5M2sKKzc5NzMwIGViNDE2NzY3MjE2M2M4ZTMxZTA0MTNkMjM4OTY5ZTBkOWE3ZTNkOTAgbGVnYWN5LXRydW5rCis3OTczMSAwZDU2N2NlNWVjZTRhNDMxZGZkMWI1YjRmYjgyNWFiNmEyN2NlNmM4IHB5M2sKKzc5NzMyIDM5NWEyN2E0NGE5ZTQyNDZkOGZjYmU0NzU1NTRkNTQxODE3OWIxNTUgcmVsZWFzZTMxLW1haW50Cis3OTczMyBkNTg2MmQxMmQ5MmFiNGQ0NGVhOWMzMGI2MDg4OGZiZmMxMTY1Y2JmIGxlZ2FjeS10cnVuaworNzk3MzQgZjljMzY4ZmUxYWNmMzA4ZTMyNGFiZDcwYjdjODc4MTI0YmM3N2YxNCByZWxlYXNlMjYtbWFpbnQKKzc5NzM1IDY3NzdjZmFiNTE1MmUyY2RmZmVjYmZjNjliYTkyZmZlNmRkZDkwNGEgbGVnYWN5LXRydW5rCis3OTczNiA5ZWU5N2E0YWIxNWMwYzliN2NjOTUxNDU3ZjU0ZjA0NWY4YTNkZWE3IHJlbGVhc2UyNi1tYWludAorNzk3MzcgMmRhNTEzYjQ3MmNiZTUwZGU0ZjY0OGIzNDM2MWY4MTkyYjgzMjBjNSBweTNrCis3OTczOCBhOGRkZTAyNWE2Zjk5ZjAxZjBiNzhhMWRlZmFkMWZlNTc4YjI0Y2RkIHJlbGVhc2UzMS1tYWludAorNzk3MzkgMGRlZjI4ZGI3Nzk5N2VlYzM0MDQ3OGU5YTg5ZjQ2NWFkNDFjMTAzZCBweTNrCis3OTc0MCA0NjBmNDFiZDBlMzRhY2VlNjQ1YzQ0MWJiN2I1NTgwYmVhZWFhZWM3IGxlZ2FjeS10cnVuaworNzk3NDEgNTcxNWRlMmE0MDUxMDUxZTJhZTE4NzIyODE3MzFiYTdiNmQ4YzE5MSByZWxlYXNlMjYtbWFpbnQKKzc5NzQyIDU4ZGM0ZjMxNmZmNjQ2Y2RjMzE4NmY3NmJjMDg0NWQzMzA0YmQ5OTYgcHkzaworNzk3NDMgODFmZTFkNDVhZTc3ZmE0MmM5MzEwNDU0ZGVlZDk0MmZlOWNkMmVhMSByZWxlYXNlMzEtbWFpbnQKKzc5NzQ0IDVjYThlNDE1MDRiNmY5Mjc5YTZkNWU2NGIwZDFiZjIwY2Q1OTAyMGUgbGVnYWN5LXRydW5rCis3OTc0NSBjMzk5ZTkzYmYwZTQ1ZGMyYjcxYWIxZjQ5MzQ3MGEwYTM1ODQ3NWZjIGxlZ2FjeS10cnVuaworNzk3NDYgNzI0MDliMjMxOTY3MzNhMzQzZjdmNjY2MzJmYjc4YzMwOGM2MGI3MCBweTNrCis3OTc0NyBjMWI4N2UxM2U5ZDNmZjE1YzRlMWZiNTIyZjE1MDE3ZmNiNTI5ZTI5IHB5M2stY2RlY2ltYWwKKzc5NzUwIDFlNmYyNjgwMTZlNDczOTRhZTFhYjVhYjE3OTcyNDAwNjY0ZDU0N2IgbGVnYWN5LXRydW5rCis3OTc1MSBlYzFhNTQxMmZmOTBkZWFlM2VkZmViNDE0ZmU4MWYxMmYxZDkzNmM2IGxlZ2FjeS10cnVuaworNzk3NTIgN2FjM2Q4OGUzNWMyMTBmZjJlMjFhZDNkNDNiZDBiZDIxNjRkODhlYiBweTNrCis3OTc1MyA4ZTA2NDE3ODU1MDc0NTNmMTY0ZDEyOTFkNjkxMTVkNTExNzZmZDJhIHJlbGVhc2UyNi1tYWludAorNzk3NTQgZGM2MzQxMWEwMTA0ZWJhNDJiZjZmMjljNGVjY2UyNjVmZWE1OGVjZiByZWxlYXNlMzEtbWFpbnQKKzc5NzU1IDVkZGEzZjMyYTJjZTJkZDAxZmI2YzM2ODE5OTExNjViZjAwOTllZTAgbGVnYWN5LXRydW5rCis3OTc1NiA4YWEyOTZmYTZkNmM1M2EwNzRhM2IzMDBiZGUyZDUwYmY2YzAwMWExIGxlZ2FjeS10cnVuaworNzk3NTcgNDVkZDliZjM2MWVjMDMxNWYxODk3YjczNWQ0Zjc3YzU1NDRlNjQ4YyBweTNrCis3OTc1OCA5MzA3ZGVlZWU0MTJhMjIzZjE0ZjU4MzEyODI0MGZmYzUzODA3NWIyIHJlbGVhc2UyNi1tYWludAorNzk3NTkgZjQxNmYyYzJjMDk5ZTg0NzUzN2Y1ODkzZDhhYjcyNDA1ZDBhZGFhMSByZWxlYXNlMzEtbWFpbnQKKzc5NzYwIGI2YzZmNDJjZGRkZTVkZjRkZWRhZjViZGZjMGY2MGJmMjVlZGQ0YmQgbGVnYWN5LXRydW5rCis3OTc2MSAwMjI1ZDI5ZjBiZDk4ZTMzNTAxM2UxNmMxNDU2OWQzZDc5ZWE2ZjkxIGxlZ2FjeS10cnVuaworNzk3NjIgYWNjOTAwZGMxODRiYTliMGM2MmY1ODJmOGY3Y2VkY2E3NmUyMmVjZSBsZWdhY3ktdHJ1bmsKKzc5NzYzIDBlY2U5OGI4NTNkNTEwNDFkNTliZjBmYTEyYzNmMWNiYTgzOGFmZjQgbGVnYWN5LXRydW5rCis3OTc2NCBhNjYxYzk2YjhkMTBlY2Y3YjhiOTlkNWQ3YzllNjhmODg2ZDZmZjVlIHB5M2sKKzc5NzY1IGZiMmQ2NGE0ZDg3MmMzMmM1MzdlNzZjNTY4OTI1ZWMxNzZkMzQzYjEgcHkzaworNzk3NjYgYjY5ZGNmNjM1MDJjNGRmMjQyZjk5MTMyZmU2ZGRlNDU3ODEyZTQzZSByZWxlYXNlMjYtbWFpbnQKKzc5NzY3IGMwNGE2MjIyY2M3ZGQ1OWRmMjc1YjJjOTI0YjRiOTdmN2Y4ZGZlM2UgcmVsZWFzZTMxLW1haW50Cis3OTc2OCBhOTAzYmIzNWVmNGY1MzU3NTBlMDcyYjc5MGI5ZWFmNGRmOGRjNjk5IGxlZ2FjeS10cnVuaworNzk3NjkgYzU0Y2ZlODI4Yjg0YTNjZDBhMTA1ZTFhZTA3OTM5MmI0NmJhZjRhZCBsZWdhY3ktdHJ1bmsKKzc5NzcwIDgwMDQzNTdkNWJjYzAzNzJlNTIxODZmYmEyZWNjNGEyOWNlMzJiYzYgcHkzaworNzk3NzEgNzE3NzlmNGEyMDc4Mjk0YjU4ZGYyNzYzNzYxOGFlMmU3MjZhNDk2ZCBweTNrCis3OTc3MiAzM2EwMmU0YWM0YzJmMWU3ZTk3YmRlNDUxMDk1YTc0ZTJiMGEzMmI2IHJlbGVhc2UyNi1tYWludAorNzk3NzMgODkzYzc0ZDU0N2VlNzM4MDYyYjY2ZDVlM2JmMzIzN2RlYWFlZGU3NiBweTNrCis3OTc3NCAxYWJmMzdkYjI1N2Q5ODhkYmY2MDM2MTA3YjE3YzA1MTM0ODg1YmJjIGxlZ2FjeS10cnVuaworNzk3NzUgMjNkYmM4YTNiOTdhOTk5OTZhN2ZiMDY4M2Q4Nzk2NWM4ZDRmMGZjNiByZWxlYXNlMjYtbWFpbnQKKzc5Nzc2IDYwY2E4OTgzZGQzYjFlMjVmZjM0MzA3OGMzNmIxYjJhOWJhYTNhMmIgcmVsZWFzZTMxLW1haW50Cis3OTc3NyA1MzUyMjA0YzhlODhjNWJkMWZlN2E5YWUwMTc1YWE2NWVhYmNmZDJiIGxlZ2FjeS10cnVuaworNzk3NzggZTY4MTVlMWI3NTAyYzY0MDllNGZkN2QwZWFlMDIzNzAxMWU3NDdhOSBsZWdhY3ktdHJ1bmsKKzc5Nzc5IDFjYzRkMmRiNWNkNmJkYjNiNDZjZmI0YzA4NDFkMDAyMTExMGZkYTYgbGVnYWN5LXRydW5rCis3OTc4MCBjZmU1ZmEzNGRiNDY2NjRjNGZlOTgzMGIxNDVkYmQzMTFhZGJhNzI0IHB5M2sKKzc5NzgxIGM0MGZiZmZmNmQ3YWJjODhkMjBhMDE2ZWIyY2IwM2ExNTk0YzgxMDEgbGVnYWN5LXRydW5rCis3OTc4MiA3ZjY5MTgxYjY1MmMwYTliZmI1N2Y2ZDk0ZjJkZjYzMjE1YTY4ZWVmIHJlbGVhc2UyNi1tYWludAorNzk3ODMgMDJiZDJmNjBiYTVkOGQ1MmYzNjgyMjA2ZmUyMjVjNGQ3NGQ2ZWNiMiBweTNrCis3OTc4NCAyNzNjZGEyYjAwNTM4MTJiYWVmZDIyMzViMmZlODZhNWZkZjM4MjMwIHJlbGVhc2UzMS1tYWludAorNzk3ODUgZmRjYmViOWYzNzRjNzE1ZTZmZmYxYzgzYmFjNGNkYWIwNTQ1Njk2OSByZWxlYXNlMzEtbWFpbnQKKzc5Nzg2IDk3ZTk1YzlkMjZkYWJmMjE0ZjhiYzRkNDc4MzIxOWZlZjlhNWQ2ZmIgbGVnYWN5LXRydW5rCis3OTc4NyBlNGJkYzI5NmZjOGU0MjdiMDU3MjYzYzZhN2Q5ZWJiMWYzZmM5OGVhIHJlbGVhc2UyNi1tYWludAorNzk3ODggZTk0ZDQ0NmM2ZDBlZjkzOWM5OWUyYTRjOGIzOWRmYThhNDNiOWE3NSBsZWdhY3ktdHJ1bmsKKzc5Nzg5IDcyYzBlMTVjMDNiMjRhMjMzYWFmNGY3YWQwZGFkOWUxNWQ4MTZhMTIgcmVsZWFzZTI2LW1haW50Cis3OTc5MCAyNGNiNDExMmI3MzExMzA5YTIwNmVlOWNiZGU1ZDBmYzA0OTkzZWJhIHB5M2sKKzc5NzkxIDMyYThiNTIwZDc2N2Q3YzljNDc0MWI5OWRkNWJmNjNmYzZmYTUyOWUgcmVsZWFzZTMxLW1haW50Cis3OTc5MiAyOGI4MjM5ODNmY2U5ZDczOWIwZDE3ZGJhOTRmODVkZWE0ZmQwMjAxIGxlZ2FjeS10cnVuaworNzk3OTMgNmJlZTQzZWE3YzAwZTNhYWMzMzFjNjNmMTlhZTYwNWI2NTI5MTBhZSBsZWdhY3ktdHJ1bmsKKzc5Nzk0IGY4N2QyYjFiYTQyOTBjMzAzODIyOTY2MjZjMGNmZDE5YzAxZTk5YTUgbGVnYWN5LXRydW5rCis3OTc5NSBjMmIwOTNkNjgwY2YzMjMxMzRiNDlhMmRhZmUxNWMzMDYwYWExMTcxIGxlZ2FjeS10cnVuaworNzk3OTYgMmQwY2UzMDc4MDliNGQwNjNjY2Q0OWE5NDI3MTUzYTYxYzE4OGU1NyByZWxlYXNlMjYtbWFpbnQKKzc5Nzk3IDExZGUyYzI4ZDFhMDkxMDY1Nzc2ZGNlYzFlZmVkY2FkYTZhNDYwODYgbGVnYWN5LXRydW5rCis3OTc5OCA3MDg4ZDE4MzQ3Nzg0ZjI5MDg2MWYyYTlmZTFlNjBlYjY4OGVkYzNkIHJlbGVhc2UyNi1tYWludAorNzk3OTkgOWVjNTk4YjQ3ZGE0ZGJjNzBlOWM4MWI3MmZmNTA4YTY2MWYxYzU3NSBweTNrCis3OTgwMCBhN2I1M2FkN2FkOTcyNmNlMjU2NTkzN2VlMjFmNDFhZGE5Y2EwZGU4IHJlbGVhc2UzMS1tYWludAorNzk4MDEgMGE1M2MyNTRhMTkzN2RjMDdhMmRmYjdlNjUwZTc1YmUxZGEzMWZmOCBsZWdhY3ktdHJ1bmsKKzc5ODAyIGU3N2IyZmYyNGRkYjE0Zjk1ODZhZjdiNjY2OTkxZTIzMjczOGRkYTIgcmVsZWFzZTI2LW1haW50Cis3OTgwMyA3ZjJkN2JmYjA1NjcwNmNmMzc4MTJmOTkxOGFjMjRjY2Y2ZTkxMmQzIGxlZ2FjeS10cnVuaworNzk4MDQgYWNlNzExNTUwYjU5N2VjYWZhZjI3MWE5M2UyNDk4M2M3MDQ5MzUzMCBsZWdhY3ktdHJ1bmsKKzc5ODA1IDlkZTU2MzBmYzYxYmEwMDljODFiNTFiMWZiNWE5ODk4MmMzODdlMTUgcHkzaworNzk4MDYgOGY0NWQzN2M1NWExNDJiZjYzZjNlMWNiNWMyMmZmNDM1N2Q5NjUxMCByZWxlYXNlMjYtbWFpbnQKKzc5ODA3IDU4NmUxY2U5ZjI0M2M4NGE1ZjViMzcxZGM3ODI4YjZkZTEwNjJkODIgcmVsZWFzZTMxLW1haW50Cis3OTgwOCAzYzlmMDg4N2VlM2Y5YWVhOWZiNTIyMDViZjlmMDc0OGU1MjQ2OWM3IGxlZ2FjeS10cnVuaworNzk4MDkgNWRhYTc0YmNmNmExNTkwOTJhZGExMDRkNjA1MTJmOWY1YTU3ZTUyZiBsZWdhY3ktdHJ1bmsKKzc5ODEwIDNjZTY2YzY5MjJhYmFkYmEzZDg5ZWM0MTE1ODZjM2VjZWMwZDRlZWIgcHkzaworNzk4MTEgOWZkODg1MmVjZGQ0YzIwMmU5MTE5MDllYzFlZTFmY2FkNGUzOGM5MiBsZWdhY3ktdHJ1bmsKKzc5ODEyIDY2NDE3Mzk4NGYyZDNhMjFmYWE0Yzk3NjhiZTA2MzI3NDY1MWUxN2UgbGVnYWN5LXRydW5rCis3OTgxMyA5ZTVlOWQ4ZmE4NDc0ZmQxYjVmYjliYTAwMWQwNjE2Y2MwNzc4YThiIHB5M2sKKzc5ODE0IDI1YzI4NTJiZmQxNWI1NDI5MTJlMTc1OTJlZWEyMDIwZmJmYzE2ZjkgcHkzaworNzk4MTUgMWFkY2Y0YTQ2ODU2MDZlNWJmYjVhMjZjZTM4YzU0ZDUwYTZhOWI2NyBweTNrLWppdAorNzk4MTYgYzViZTUzN2I1YmE5MDlkOTk1YmY0MDFlMTM1NDFmNjllMjhkNTM5YyBweTNrLWppdAorNzk4MTcgOTIyMDc5ZjcyNGE2MjBjMjNhOTA0MmYzNGU3ZGZkMmFkZjJjMzJlNyBsZWdhY3ktdHJ1bmsKKzc5ODE4IDk0MjYyZDBlMDY0YTVlYTg4ZjMzN2Y1MGUwY2Y5MmVkMmZjOTAzZDkgbGVnYWN5LXRydW5rCis3OTgxOSBlZWVhNzhkZjhhM2M3MmY0NzM2N2E5NDA2ZjUxYzA5NmQ2MDEwMDA5IHB5M2sKKzc5ODIwIDk2MDA2MjVjMTVhZmE5YzBhNDIwYjg4MTE0NzIxYjRiYTI5YTFlOWUgbGVnYWN5LXRydW5rCis3OTgyMSBjMTAwMjRhYmQxMThmZmNhZmNjN2RkZmUyNjhmMTc3YmQxODIwNzVjIHJlbGVhc2UzMS1tYWludAorNzk4MjIgMmZmYjIyNGM2MWY2YzdkMGJiMmI4NmNmNDUyMGZmMmJiNWIxMTBmYyBsZWdhY3ktdHJ1bmsKKzc5ODIzIDI2YzZkZTE4Y2QzMGI1ZGIwYzQ3OTU2MjhmMmIzM2QwNzNlZWE5MDEgcHkzaworNzk4MjQgMzY3YWM0OGJmMDg1YTVhM2IzYmExYjNjYzE2YTkzYjdhM2VjYWU0NSByZWxlYXNlMjYtbWFpbnQKKzc5ODI1IGEwYzA4M2UxZDMxZmRkMmY5M2QzYTQ2YmZhNDc1OGU0NWJmMWQzOTYgcmVsZWFzZTMxLW1haW50Cis3OTgyNiA5NWJmOTdkY2M1OTE5MjYwMjM4NGZmOWQ5ZmQzMmJiOWFkYTU1Mzk0IGxlZ2FjeS10cnVuaworNzk4MjcgNzI3NDYxZDY2ZDEwMjI0ZGM3OTBmMzAzOTEyMTNmNmQzNDk5NjE5ZSByZWxlYXNlMjYtbWFpbnQKKzc5ODI4IDdkODlkMGRhZTk4ZTU1NzE4ZWJiNGE0NjExMzBkMDRhNmVlYzJjYzcgbGVnYWN5LXRydW5rCis3OTgyOSBhNjVhOTRiMDA5MDJlYzIyY2JlZjhhY2M4YTIxNDdiNWNhMGU2N2U2IHB5M2sKKzc5ODMwIDM3NzVhNGZkMTFjMmE3M2NmYTE5YzA2ZjUxYTkzNGJiMjE2ZjZiMTkgcmVsZWFzZTI2LW1haW50Cis3OTgzMSBkNDg4MDFiODYzODAxZjcwZmY1NWQwYThkZWQ5ZTA3ZDI4ZTE5MTMzIHB5M2sKKzc5ODMyIDJiOTNlMzE2NTk2MWUxYTkyMzBkYzNhZGQ5NGExYTUxMmMzOTliZjQgcmVsZWFzZTMxLW1haW50Cis3OTgzMyA1NzZiMGU4NzM2YzdmZWE3NGE3ZmNjMzZiZGMzMTZiOTMzOWFkOWQwIGxlZ2FjeS10cnVuaworNzk4MzQgZjFlYTAzZTM3ZmY2ZWNiN2YxMjQwMTFkNDdjODQ2N2ZmNjk1MGVmNSByZWxlYXNlMjYtbWFpbnQKKzc5ODM1IDdjNzZhN2I0MTE2MDM1Yzk2YzljY2ViM2M1ZGUyNDE2MGY2ODY4NDQgcHkzaworNzk4MzYgNmZlYjVhZGQ3NjJhYzZlMTk1MTRhMWI0YjYxOGFiYTEwNmJjNDQwOSByZWxlYXNlMzEtbWFpbnQKKzc5ODM3IGI2NmZjODhmYTk2ZDFiYjc2NjIzODNhMjRjOWZjNjY0ODk4ZThiM2MgbGVnYWN5LXRydW5rCis3OTgzOCA2NGZkZjY2ZjY5YjBiNzhiNTRjMmFiMmRmZGMzMzNiMzE2YjcwYjY5IHJlbGVhc2UzMS1tYWludAorNzk4MzkgNzc3NGQ2MGE4OWE5MjhlNWM2MTFjOTdkMGYxNzA4Y2RlNWY1MWNhMyBweTNrCis3OTg0MCA2OTZjYjU0OTZhMGI4NmQyZGM5MDJmYTcxMDRkYWQ5N2I4M2VjNmUyIHJlbGVhc2UzMS1tYWludAorNzk4NDEgYzY3MzM5ZTM3MWE5YjI1ZDFkMzkzYjM1MWJkZjQ0ZjE0OGEwNTEyNyBweTNrCis3OTg0MyBjOGNmYjFkMDc0MjljYTExMWEyOTNiZjUyMmM1NGRlZmJjOTQ1NjZiIGxlZ2FjeS10cnVuaworNzk4NDQgYjg4ODQyZjY1MzRkZTQ4ZTE2YzEzZWExY2IwMTY2OWZmODE0NTlkYiBsZWdhY3ktdHJ1bmsKKzc5ODQ1IGI2MTA4ZjcyMGY2OTgzM2EzNGNiNjg5YmZhYmYxMmMxOGIwYTdjYTcgcHkzaworNzk4NDYgZjE5NGEzY2VlZmFhYzAwZDFkMjFlNzE5MTA0NWI4ZWEwNjI3Y2U2NiByZWxlYXNlMjYtbWFpbnQKKzc5ODQ3IDJmMjg4MzJkYzM2YzNiMDFhODdjZTIyNmE4NjYxNjM2YzhmMjRiNDEgcmVsZWFzZTMxLW1haW50Cis3OTg0OCBhNzNkNjA0NTFiNDkwYzZhMWE3MmZmYjFiZTc0ZmViMmY5YWEyYTU4IGxlZ2FjeS10cnVuaworNzk4NDkgMjBhNTliYWRhZmExYzIyMTRjYTZjYjliZWFhYThhZTAyMGRiNGVkOCBweTNrCis3OTg1MCAzY2U0YWFjMjA5MzU3NzYwMzVmMDdhMzIyYWM1ZTg0ZDg3MDY0ODA4IHJlbGVhc2UyNi1tYWludAorNzk4NTEgZDUxYTJjN2NjODExYTEyYTg1MjRlMzE0NjUwYTRiMThkOTYwY2NjNiByZWxlYXNlMzEtbWFpbnQKKzc5ODUyIDViMGYxZDViZDU1YTk3YzAwNmJlZDEzMDE1NDc3ZGVjYjI1OTBiMzYgbGVnYWN5LXRydW5rCis3OTg1MyBiYmNjNTRhY2JkOGEyZDkwNTRhN2NiNzcxOTBjZWE1YzM1YTEwNTJlIHB5M2sKKzc5ODU0IDMzMjdkZjMyYzExN2NhYzJiMWYyNTU1MTRiNWY1ODViMDMzNDY3OTYgcmVsZWFzZTI2LW1haW50Cis3OTg1NSA2M2FmNDk2YjE0OTM5NDczZmU2NjcwZDFhMzJkZGVlODA0NjVkOWJhIHJlbGVhc2UzMS1tYWludAorNzk4NTYgZjRlYzQwNzNiZDJlNTk2ODBkMWU1NTk2NmYwYzMwNGE3NGRkNTE5ZiBsZWdhY3ktdHJ1bmsKKzc5ODU3IGNlOTc5YjY0YjIzYTc5MGJhNDE2ZTI2NDUyMmFhMzk2NWRkMjBlYzggcHkzaworNzk4NTggYTMxZjgwZDVkMWExNmViZjRkNzcxODU0MjFjYTAzM2M3NzFlMzYzMCBsZWdhY3ktdHJ1bmsKKzc5ODU5IDAxYzFhYTNhNDlhN2NkMWY1NWY0MmM3ZTYwYTVmNzJiNmFlZGM1YzEgcmVsZWFzZTI2LW1haW50Cis3OTg2MCA1NjliODU5YWRlMjA3NzMwMmU2ZDU5YmZlYjAxYmU4ZTBjZmFiNDY2IHB5M2sKKzc5ODYxIDgyNzNmODk5NGE4ODgwYWYzYTg3MWI0ZjMyZGYzN2E4ZmE1YjhhY2QgcmVsZWFzZTMxLW1haW50Cis3OTg2MiA5YzQ4YWI3MjhjZTBkNGYzMTU3YjhkYTlhZDEyODc2YWYyMTEwZTU4IGxlZ2FjeS10cnVuaworNzk4NjMgMmI0ZmNmYzM1ZjEyMjNlMGE1NjM0YTA1MjIxZWMwOGUxZjI1NjUyZiBweTNrLWppdAorNzk4NjQgNzEyOTcwYjAxOWY3MGNiMjExYzcwMzk5ZGQxMGY1ZTA3NzEzMDBhNCBweTNrCis3OTg2NSA2YzFhZGU5ZWExZTQ0NTRkNmYzYTE2MjNhZDk0Nzk2ODNiOGVhNjg0IHB5M2staml0Cis3OTg2NiA5YmE4YzZlNTJmYTBkZGZiN2Y0M2FiMmY4MDAzZGMyMzkxMTAzZjQ2IGxlZ2FjeS10cnVuaworNzk4NjcgYmUwNDRiOGMzNDNhMzVmNTkzNTYxODM2NTkzMjgyYjhkMWEzOTdhOSBsZWdhY3ktdHJ1bmsKKzc5ODY4IGJhNWVjNzU2MDkzMzM3ZTMxMTQ0YmIyMWMxYWNmNmMwNmVmMTUzZTEgcHkzaworNzk4NjkgZWVjMmRiMDlhNmMxMjM5MWYzYjI1ZTI5OTU0NGE0N2M1MDc0ZGM2MCByZWxlYXNlMjYtbWFpbnQKKzc5ODcwIDgxZDkwY2VlZTNiZGZhN2ZkNWM2ZDIxNTk4YjdlZTg1OWMzMTg3NGYgcmVsZWFzZTMxLW1haW50Cis3OTg3MSA4OTJkYjE4Yzc4MTU0ODIwYjQxZjAwZGIwY2Q0MDU1NDY2OWJlZjQ2IGxlZ2FjeS10cnVuaworNzk4NzIgMWE2ZjNkMzZiYmQ5NjFiMDQ2NDk2NzEzZjdlNTY5MGFhODg4YTU0NiByZWxlYXNlMjYtbWFpbnQKKzc5ODczIDgyYWYxMTNlMDIwYjk3YWY3NzQ1MGQ4MWI5ODU0YTY3NzQ2NTU3NzEgcHkzaworNzk4NzQgZTNjZjk3N2UyZTY0NjdlNTlkZWUyMTdjNzU5ZTBiNzlhMjVhNzczMiByZWxlYXNlMzEtbWFpbnQKKzc5ODc1IDhkOGY3ZTA4MmVmNmE4NGNlMTIwNDA4NzA3YThjNjc2NGU0ZDA4OWIgbGVnYWN5LXRydW5rCis3OTg3NiA5Y2U1MzE2MWMzYTlkZGRhZjIzMjBiZjRhNWM3Y2E5M2RhOTFhODk1IGxlZ2FjeS10cnVuaworNzk4NzcgZmI2Y2Q4YWQ4ZjY5ZTZiMGEwMWY2ZTEzZTc1OTg0ZmE2YmI2ZTQ3ZSBsZWdhY3ktdHJ1bmsKKzc5ODc4IGMwOTU3ZGFkYTVjMjdkZjYyZjQzZmJlOGEwNzQ5ZDdhN2YyZWU0ZDAgbGVnYWN5LXRydW5rCis3OTg3OSBkNzk1OTliMjFlODExNWNmOTY3YTMyZTkzNjFlMGZiZDZkMGNkMmVmIGxlZ2FjeS10cnVuaworNzk4ODAgYzllNGUxMmU5Y2I2ZTA2ZDU3M2Q5ZTc2ZTQ4OTUyMmE2ZDA2ODgwNCBsZWdhY3ktdHJ1bmsKKzc5ODgxIGYzNjlkYjBkNTg0NTY1OTQyNTdjMzMwMzgwMTI0NjdhYmU3YTBhODAgcHkzaworNzk4ODIgMTBmMWU2M2IyYjM3NDgzODEwYzU0MTk2OWM5MWE5NzBmNTUyNTU0YyBweTNrCis3OTg4MyBiNjE5YWJjZTAyNjk3NzZiMWEzMmQwNmY2Y2U5N2I1NGYwNzZiOTJiIHJlbGVhc2UyNi1tYWludAorNzk4ODQgODVlZDc0MGJlMzIzZDcxZmJjOTBmMWVlZThjMzEzMmViNzk2OTQ0YyBweTNrCis3OTg4NSBkMGE3NGI2NTA1ZDNjN2RlNTA5OWE2OTUyNTU0OGViM2IwYjE3MThhIGxlZ2FjeS10cnVuaworNzk4ODYgMWM5YmVmZGU4Mzg1ZTgzNzgxZDc1N2UyMzVkMmE1YTUyY2QzOTQ0ZiBweTNrCis3OTg4NyA3ZTU1YjIxYzY2NThiNWUzYTA4NDQxNjFhNmVjMGNiYTNlYzJlZWM4IHJlbGVhc2UyNi1tYWludAorNzk4ODggZGRiNzMyNDM5NjdiYjJhYzQ4YzhmODdlMmYxMDdmMDA0ZTU4MzAyZSBsZWdhY3ktdHJ1bmsKKzc5ODg5IGU4YWE5YTdkYWYwMzI4NWEyNjgzYzliYzk2OTI2MTI4YzE3NjdkZWYgcmVsZWFzZTMxLW1haW50Cis3OTg5MCAyMGRhZDIwMDU4ZTQyOTc4NTkwYWI3YWU1ODNjZTBkNTBkOWVlM2FjIGxlZ2FjeS10cnVuaworNzk4OTEgYThlOTBjZWNjNjllMTU4MjdhOWM1Mzg2NTZjZjk2ZDc2MWMwNjk0MSByZWxlYXNlMzEtbWFpbnQKKzc5ODkyIGMzMWM0M2Q2YWQ3OTI5ODllMWQzYzkzYTMxODVjMDNhZmY3N2ZiNjUgbGVnYWN5LXRydW5rCis3OTg5NCA3YjAwNDU0YmJmZTBhNjE2MGI5NmE4MGVlMDQyOTRmY2JiMzBkOWQwIGxlZ2FjeS10cnVuaworNzk4OTUgMjVjM2IzYWJmM2U3YzhiNTNkOTU4MGEzOGM5Nzc1OWI3MmRhZjBkNyBsZWdhY3ktdHJ1bmsKKzc5ODk2IGNiMGI4NDAwZTdjNGY5Y2M1OTYzZGVkZjY3ZWE2MDQ0NTUzYmQ3ZjAgbGVnYWN5LXRydW5rCis3OTg5NyAzOGIyNDI0Zjg1ZThhYzBkODNkMzA5MWRjZmJjNjlkNWRlZTJlODA1IHJlbGVhc2UyNi1tYWludAorNzk4OTggYTM5YmYzOGYyZTBjMTc3NTg2OTM2ZjJhZWJiNTM3NzViZmE4NmFjZCBsZWdhY3ktdHJ1bmsKKzc5ODk5IDJlOGQyZDdjNDNjMGI1OGVjZmI4NjhkYzM3NDM1YmM3ZWQyNTE5M2UgbGVnYWN5LXRydW5rCis3OTkwMCA3M2U1ZTNlYWRkODkzZTAwOTg1ZmY4Y2IwNzkxOGI5N2Y2NTBhNzE2IGxlZ2FjeS10cnVuaworNzk5MDEgYWMwNzhhOGMzZTFhZjA5ZDNlZWFkY2M5MWY0MDA4Y2NjZTM0NDYxMiBweTNrCis3OTkwMiA3NjYwYzUzZDU3MTlmZTczNGVlM2Y5ZTMxNTk1MTdiM2MxNTFkMDIyIGxlZ2FjeS10cnVuaworNzk5MDMgODIyN2I2NGU4ZDc4OGUyMmQ4Y2FiMThhMTg4ZjQxZDRmMjZkMmE5YSBsZWdhY3ktdHJ1bmsKKzc5OTA0IGI4OTk4MTI4ZGUwOGI1NGYxNmM1OTcxNmIwOWU0Yzk3NzZjNjI4MWUgcHkzay1jZGVjaW1hbAorNzk5MDUgZTI0NDRmMjg3OWI0MzViNzg3YjMwNDg0NjBlNzQ0MmYyZmU3N2I0ZCBweTNrLWNkZWNpbWFsCis3OTkwNiA4ZTVjNzFjNzZlOGZhMTJmMjkyZWFiYThjNDliZDg2ZGVhOGNlOTdmIHB5M2sKKzc5OTA3IDZmMTk1OWY2NmQ2OTBhMzczMWMxYTg3YmNjOGE2MzE0MDE5NThhYWMgbGVnYWN5LXRydW5rCis3OTkwOCAyNGNlNGEwMDg5YmUzMjljMWNmOTlmNTNiYjVjZDMwY2FjMzcwMjcyIGxlZ2FjeS10cnVuaworNzk5MDkgN2NiZmYwYjFlYjVkMTg3YTYyYjIyMjVkYjM0OGNiNmJkNDliNzM0MSBweTNrLWNkZWNpbWFsCis3OTkxMCBhMTYyOGJkOTdiYjY4NTRmOTM1YTQyYmY4MmQyZjkzNjI0MWZhNzM0IGxlZ2FjeS10cnVuaworNzk5MTIgYTc5MmI5Y2IwZDdhYWJhMWRkZTAwMTQ3M2RlNjlhYmM5ZDFlNDI3OSBweTNrCis3OTkxMyAyNGQ3ZjU1NDAwZDNhMWFiOTQ4MDhmZjg1NGZhNTllMWU5ZWM5YTdhIHJlbGVhc2UyNi1tYWludAorNzk5MTQgODM3ZjNiYjE1NzVmYjg4ZmNkMTk4ZTQ3YTU2MGVlMTU3MzdkYTE0ZCByZWxlYXNlMzEtbWFpbnQKKzc5OTE1IDQ5OTE5YjMxZmYyMDA3NjZjZjI5NmEwNThlODc4MTEyMjg3ODY3ZjcgbGVnYWN5LXRydW5rCis3OTkxOCAzNWE5ZGEwMzk2NjMwMzFlMGVlMjU3Y2ExMWM5Zjc5YWQ4NzRmMmM2IGxlZ2FjeS10cnVuaworNzk5MTkgYTVlZDAzNzczZTRkZWI3NWNlYzdhZDVkOWM3N2UyOTZlNzA1M2M3OCByZWxlYXNlMjYtbWFpbnQKKzc5OTIwIGE1YjdkY2I5YWY4ZmEyODU3ZDI5ZDc3ZTY5YWFkZDIzNmM5ZGNiOGYgbGVnYWN5LXRydW5rCis3OTkyMSAzZWMxOTMxZmQyNTY0YjU5ODg0Y2I3ZWY1YmI5NjRkMTU3NGZjOThhIHJlbGVhc2UzMS1tYWludAorNzk5MjIgNDY0ZjY2OTYyMGZhZDY1MTc1MjgzNGUzYWU1YWQzYjczMWU0MmY4NiBweTNrCis3OTkyMyA1ZTAzOGZkMmMxNDMyODVmYjQ4ZjhiZGZiN2FkODU5ZmNlMDZhYmQxIGxlZ2FjeS10cnVuaworNzk5MjQgYzAwYjA3MThmZDUzM2E3MjBlOTFiNjBiNTE3NjA2MGViYzY3Y2E0NyBsZWdhY3ktdHJ1bmsKKzc5OTI1IDdhNGQwMjZiNjM5MDAyNDM0ZjViZjk5NTU2YzY3ZDgzMjkwM2E0YTYgbGVnYWN5LXRydW5rCis3OTkyNiBlZDI2MTYzMDcwZjU4YzFlZTg3YzQzNDFmYzdiYTVkN2RlYmVlMDhlIGxlZ2FjeS10cnVuaworNzk5MjcgM2FlNzA3OGQ0Mjc4YjJlN2U1ZGI4N2NmZDQ5MGNiZGE2ZDg4MTIzMSBsZWdhY3ktdHJ1bmsKKzc5OTI4IDYxNTUwYTEzMDJiMDdhNzMxNDM2YTg0YjJkODZlYjJiYWIzYjJmYjAgbGVnYWN5LXRydW5rCis3OTkyOSA0Y2MxNzU4ZGNkZjc4YzI3MmY2OTlkMWVlNDkyNmVhZjUyMzY4ZjZmIGxlZ2FjeS10cnVuaworNzk5MzAgMmJhZjFjZWU3MWYyYjY3MDg0YWJjZTE3NWQ2NmYwNWQ5NWY5ZGEwNSBsZWdhY3ktdHJ1bmsKKzc5OTMxIDgwNTUxMjMyOWM3NTM0YzQzNGZhZTAzYTA4Nzc2ZGE1ZjRlMDY4MzggcHkzaworNzk5MzIgNTVmZDRlOTg3YjIwZTA3MGIyYTIyOWRmOWIwMmYwNTgxYWFiZWJiOSBsZWdhY3ktdHJ1bmsKKzc5OTMzIDhjNmU0YjdhZDE1OGJlYTI5ODc3MjdkZWJiOWRhMWVlMmI3ODdmNjkgcHkzaworNzk5MzQgMDU5MmU3ODQxNzc3NzRmOTk5ZmJkYWFjZjFiNDFmNGQ2OGQxM2MxMyBsZWdhY3ktdHJ1bmsKKzc5OTM1IDk3YjU4OGVlNjJmMGZiNDYzZDY1ZmJlZGQxNTdmZjJkOTU2ZTc5NzAgbGVnYWN5LXRydW5rCis3OTkzNiBmMzRjYjUwMWY4ZjdlMzI2MzRjNzkzMTQxZmFkYWM0YTgwYTU3YWM3IGxlZ2FjeS10cnVuaworNzk5MzcgNTcwZDlhYzg0ZDc3N2E5OTRkZmUxZGZlZTA4Y2I5MTVkOTliNjc3YyBsZWdhY3ktdHJ1bmsKKzc5OTM4IDczMDFkYTQ5MWQ1YmI1YjQ2YmM4NTA4ZDlhM2FjZjFhZmExYTE0NzUgbGVnYWN5LXRydW5rCis3OTkzOSAzNDgwOWNmZDg2MDE2ODUyZWI5OWVjNjc4MzMwNWExN2EwODVlZjlmIGxlZ2FjeS10cnVuaworNzk5NDAgNWY4NzgyYWEwZjhjMjhhMzRiYzdiMDA5OGFkNmFlYjkwMzI0ZjM0NiByZWxlYXNlMjYtbWFpbnQKKzc5OTQxIDQ0MTY4MjI0YWM2MTA4MDdhYWUyODgzNmU4NGNkNGJlZmUxZmFlNGUgbGVnYWN5LXRydW5rCis3OTk0MiA4Zjg5ZWY5MDkwMDliNTFhNTQ2ODUzMDFkZGE1N2NhNDZiMDEzZTViIGxlZ2FjeS10cnVuaworNzk5NDMgZDAwN2Y1ZTVlMWYwMTlhMjgwMWMxNTYyMWYzNmZkMDk3ZGM2N2UxYSBsZWdhY3ktdHJ1bmsKKzc5OTQ0IGNmN2M5YmEyZGU2ZTk0MzRiZDVjNjk0YmFiNDdmMDM3MjczYzAxNDQgbGVnYWN5LXRydW5rCis3OTk0NSA0ZmVjMmU1ZTMzOThhY2JkOTQ0ODdjOWMxMzdjZDcwNDJmZThkOTViIGxlZ2FjeS10cnVuaworNzk5NDYgZTBlMzU1YWU5OWIyNjI2ZWM2MDM5Mjg1ZmEyYWQ0ZmE0N2I4NmQwYSBweTNrCis3OTk0NyAwMDYxZTllMzI5YzA1NmEwMDM0N2RlZDliZjM0MmM2ZTg3ODgxYTU3IGxlZ2FjeS10cnVuaworNzk5NDggNzkxMjM2NmI0OGQ4YjA2ZDE3ZjhjNDVjNDkzYjgwN2M3NGI2NjVkMyBweTNrCis3OTk0OSA5OTI2ZTEyYmY0ODUwNjRkMWViYWM4NDVmOWI2NzM3NzM3ZTU0YmMzIGxlZ2FjeS10cnVuaworNzk5NTAgZTE1OTNlMWU2NTJlZWM4N2I1NTQ1NDNhNjE2YzNiYTdjZTU1ZjFlOSByZWxlYXNlMjYtbWFpbnQKKzc5OTUxIDY5YzM3MjAzZmZjMWQ3OTA2MTc1OGM4MWNmMmJiNDAxOGFhNTJkNTYgbGVnYWN5LXRydW5rCis3OTk1MiBmMjQ0ZmVlOTg5YTk4MWNlYmQwYWRkZGEyMWMzNTBiMTdlZmI5NzZhIGxlZ2FjeS10cnVuaworNzk5NTMgODRhYWQ2NzA0NjBlNTA3NzlkZTIxMDk3NGQyODYzZWI2NDk2MTY3OCBweTNrCis3OTk1NCA5MDI4MDMzZTZmY2MzZDQ4MjcxMGMzMTUwMjFhMGMxNzM0N2E2ZTkzIGxlZ2FjeS10cnVuaworNzk5NTUgZjQ3MDU3NjM3ODdiNTg5ZDBjZWJmNjkwYWIzYTM1YThmMWRmNjgzMiBweTNrCis3OTk1NiBhNjVmOTFiYmMyZmIyOTViOWFmMDlkZWUwNDc5ODdkYmQ0OWI3YjE3IHB5M2sKKzc5OTU3IDMwYzgwMDIyODc0ZTdjOTA1NGU0MzAxMDFmMWFkYjdjYmUxMzgzNjIgcHkzaworNzk5NTggNjZhZDI2N2E3M2JmNjJhMGM5MWE0NzY3MzEwOTU4YWI1NTEzNjk4ZCBweTNrCis3OTk1OSBkMzk5NTUyMTZjMDdhMmNmZDllZjQyYWNlNzRlYzkxMzg1YzNhZDRhIHJlbGVhc2UyNi1tYWludAorNzk5NjAgYzJlMWRlM2YxMWZjMWIyNzZhYmQyMjU3NTQ5MTgzNTMzYWE3ODMwYyBweTNrCis3OTk2MSAwMjdkNTc1YzY4OWMxMDIwOWI0MmZhYTBiYjdhMjFhMmViMjUyMDkzIHJlbGVhc2UzMS1tYWludAorNzk5NjIgYjRhMTU1ZTRkMzEyOTJkYzBhMjhlZjE4ZGE4NDIxMzlkY2I1Yjk2MiBsZWdhY3ktdHJ1bmsKKzc5OTYzIDhlZDk5NmRjMGU1MjA5YmFhNmNlNTZkYjE4MzkwODZkMDBhZWE1ZWUgbGVnYWN5LXRydW5rCis3OTk2NCA5ZjljYjFjNTdmMmE3ZGNkMzcxYmE4NzMyYjdiZDNlYWRmMDhjNTVkIHB5M2sKKzc5OTY1IGM0MTQ3ODQ3M2VhZWFlNTJmZDhlOTQ2NGE3NDE0YTJkMmRmZTRiMWQgcHkzaworNzk5NjYgYTg0ZGRkOGRlOWQxZGJhMDJiM2IxYzkzNDVjNzcyMTk2ZTQ5OGUwNiBweTNrCis3OTk2NyBkZDQzZTBjOTMxNzVjYTY0YjFlYmIwZGFkNzAwMTA2OTJjODk2ZTExIHB5M2sKKzc5OTY4IDRhZDk1MmE2YWY5NTcxZDE0N2QwYWRjMGU2ZjMxNjg2YWY1ODZjYjUgcHkzaworNzk5NjkgYjRmNjBkZjMxYjE0MTJlZWYzNjE0OWVlNGRjNTZiZjc2ZjhkMTI5YiBweTNrCis3OTk3MCBlMzUxNTc5MTM3ZjNlNDI0YzBiNzBhODEzZjVkNGVhMmQ4MTNkYjNlIHB5M2sKKzc5OTcxIGZkM2NhZWE5MmNkOWY5MWVjOGRiYTQ3YTRmNzAxN2FjODVjOTIwNjAgcHkzaworNzk5NzIgY2I2ZjJjODlmNDM3MmNjMzY2ZDM2ZDc2ODE2OTJlMmFlNzg4ZTc2NyBweTNrCis3OTk3MyAwOTNlMmI3MTU2NDU3NDkxOTE3N2RkYThkOThmNWUxZjlhNTJmOTExIHB5M2sKKzc5OTc0IGQ2NTQzNzQ5MjQyNjE5NzA4MjI0OTg0NWZmOGYxMzkxMGJkODg4MzAgcHkzaworNzk5NzUgZjVjNGZjMGQzMzczMzZkYzM2YTU0MmRmZTExNDc3NzY4YTFlNGUwMCBweTNrCis3OTk3NiAxYTYyYmVlZDhkMTVlZjhkYWVmNDU5ZmY4NzE1ZTEyNmQ3ZGIwZTIyIHB5M2sKKzc5OTc3IDNiNjg4ZGExOGY1M2UzOTUxYTFjNmRlZTllMGFlZmYzNDQ4NjY4OGYgbGVnYWN5LXRydW5rCis3OTk3OCA3NWY5MjA5ZjNmYjk5MGY5OTA3OTkyZjg0YmIzM2U5OGQ0NGYxMmUzIHB5M2sKKzc5OTc5IGFjMDYxZWYxNDg3ZTQ3YjY5N2IzYmEyMjM5NDM5ODZmZDdmYzQ0YTcgbGVnYWN5LXRydW5rCis3OTk4MCA5ZGUyNjFjZjViYzI5OTZjNjk1MmQ2ZmE4MzhmNjJmZDY4Yjg3YmIxIHB5M2sKKzc5OTgxIGFmYmJjOTgzZTBiZDA0MTI5NTRhNWM1YmMzYjI5MDZiYjE5MWNjZDEgcHkzaworNzk5ODIgZDAzZjVhY2I0Yjg3ZWY2ZTVmMTgzZGY1ODRlNjE1MzlhZjYyYmE3ZSBsZWdhY3ktdHJ1bmsKKzc5OTgzIDYxMGI2ODVlMDUyNWJkNmM0MTc0MGZkMDg5NjdmYTkxYjFlNGJjZWMgcHkzaworNzk5ODQgYTI5MjkxY2U0ZmNlM2MxZDg0MmRmMzJkODlkMDFmNjUzMjI3MzBhNSByZWxlYXNlMjYtbWFpbnQKKzc5OTg1IGVkZWIwN2M0MTFhZjI5NDc1YzBmNDUyMjIwM2ViYTg1ZmEzM2Y5OTggcmVsZWFzZTMxLW1haW50Cis3OTk4NiBlNDc1Yjc3MWRkNGMwZjk4ZDE0ZmMzMTY4MGU2ZjZjMmYyYTdjZGRhIGxlZ2FjeS10cnVuaworNzk5ODcgMmFlNWY2MGUyN2M5OTU2ZGFlZGM2MDExMDJlNDQ0YTRlMWRiNjM4OCBsZWdhY3ktdHJ1bmsKKzc5OTg4IDU2ODBiYTJkYzljMjZlZWNlYjY0NzAzZTRjZjlhMDhhODIwYzMyZjggbGVnYWN5LXRydW5rCis3OTk4OSBiYWUzNzkwM2Y3OTc1ZDY3NzhjYTNjNTI0ZWFiMWZkYjY0OTk5MzUzIHJlbGVhc2UyNi1tYWludAorNzk5OTAgYWQyZmYxYzM2YjFhYzE2Y2U4Zjg0YWE5MjY1MGZiNGNhNWI1OWFhNyBweTNrCis3OTk5MSBkZTUxNTE0MGI1ZmJlNGM0YjBjYmVhOWIzMDg2NDM5YmI3Y2Q1NmY4IHJlbGVhc2UzMS1tYWludAorNzk5OTIgZmVkYjFmOTMyMmRmM2MzZmExMTBhZDc5YzNkNGUzYWEyNmIyNjE1MCBweTNrCis3OTk5MyA4MWQwZWE2ZDJkYTM3YTMzOTFlODE5ZTZmNjdiYzRhOGE4YzJhZjYyIHJlbGVhc2UzMS1tYWludAorNzk5OTQgZTY5NzJmMWM5ZDZkMDE2NzE1YzljNDFiZjhjZTBkZmU5OWY4YzQ1MSBsZWdhY3ktdHJ1bmsKKzc5OTk1IDYzMTQ0ZjE0NTRkMjAwZjkxN2IxMTBmMWVmNGQ4YTBkY2JiM2NkYTUgbGVnYWN5LXRydW5rCis3OTk5NiA0MmU2MDU3Y2YyOGZkN2M5M2UzMTg4ZWYwODQxMzFkZGRhNWRhNGQ4IHB5M2sKKzc5OTk3IDg2MGZjZWRhMmQ4OTQwYjU0MDc3NjE4OGRlZWM0ZWU3OWJhM2M0ODAgcHkzaworNzk5OTggNGYxMmRjYjljZTZmMTE3N2Q5N2ZkMmQyN2YyODMxMjM4YjZlN2YwNyByZWxlYXNlMzEtbWFpbnQKKzc5OTk5IDgxMDU5MzkwODUyNzc3NDA0NzAwZDUyNTU4MzM0YjAzNjZhMDg3NWUgcHkzaworODAwMDAgOThhMTVmYzM4YjhiZjMxZTdmNzhmN2Q3ZmEzN2NlYTllOTdjZjBjYSBsZWdhY3ktdHJ1bmsKKzgwMDAxIDExNjNjZDhjMzk1NmRiMzIzMWU5YTEzNGUwOTE2MmUzYzQ5YjM4YTIgcmVsZWFzZTI2LW1haW50Cis4MDAwMiA5MWViY2ZmNWJiMjRjMGM4YjQ0NzkzODVkZjYxM2ZjMDVmOWZlMmZlIHB5M2sKKzgwMDAzIDU1NzY2NTRlNGI5MWE1NWM5Y2Y5MDMwMDg1ODBkNmE5ZDFiZmJiOGQgcmVsZWFzZTMxLW1haW50Cis4MDAwNCA3MTNmMWY2YmYzMzliZWY3ZmYzNDRkMWExYWE2NTIyYTc3Yjc5YTE3IGxlZ2FjeS10cnVuaworODAwMDUgOWQxMDM5MDQ4NDk4YTg4ZWJlMTU1NzYwMmQwNTYyYWExMzc2ZjJiZiByZWxlYXNlMjYtbWFpbnQKKzgwMDA2IGI4MWQ4M2E4OTlmMzY3OWZkYWQ3ODU1Y2UxNjA3NmIwYjU1ZDkxMzggcHkzaworODAwMDcgNTdiYmZjZThiMjc4ODhmNzY1NzI4NDliYWJlZGU5NjJlYjlkNTg3OSByZWxlYXNlMzEtbWFpbnQKKzgwMDA4IGEyZjViM2IxOWViMjdlZTkxZjYwNTMwYmIwNzM1MzBjOWE2M2M4NDkgcHkzaworODAwMDkgMTk1MDcwZTg1Y2UxNTIwN2U3NjEyMGU4NTNhMDBkZjE3ODA2NDJlNSBsZWdhY3ktdHJ1bmsKKzgwMDEwIGYxYzAzNmRlMTliN2QxNjU1MzE4Zjk2YTI2ZTE3MGI0NmUxYjIxNzUgcHkzaworODAwMTEgODk3NTJjMDNmMzQyY2U2NDcxZGI2MTM1OGNlOWI5NWQxNzhkZGE0ZSByZWxlYXNlMjYtbWFpbnQKKzgwMDEyIDc3YzQ5ZTczNTI0OTc5YWFkNDBjZTAzMTAyOTc0MTVjNDliMjNkNDIgcmVsZWFzZTMxLW1haW50Cis4MDAxMyBkNDUwN2Y2MTUzMWRjYTRhODY1M2Q4MmViZGU0ZGI0NWJmYTNmZGY3IGxlZ2FjeS10cnVuaworODAwMTQgYjUzNmE4YTk2ZmE5YTJkNzcyMWQ1MWMyZDVjMWRlNjQwZDU4OGQ0OCBsZWdhY3ktdHJ1bmsKKzgwMDE1IDA5MTU4ODk0YTNiMDVmMmIzZWVlZTMwMjQ5YWZjODMwMGE2YTMyODIgbGVnYWN5LXRydW5rCis4MDAxNiBkNDg2NzA1ODkyYWI2ZTFiNjJiYzBlY2YwOTIzNTA2NDIwMWI0NWViIHB5M2sKKzgwMDE3IDBhMWNhMGQ3NDRhNDI2OWM1MzZlYzg2MzAzZWRmOGQzNmJiYmM1ZjggbGVnYWN5LXRydW5rCis4MDAxOSAxYTkwZmUzN2I1OWQ3MzZjMzRjOTkyZjk0OWJhZjIzZjk1ZDJlOWYzIHB5M2sKKzgwMDIwIDYwYTdlNThhMTBkYWRiZjRlNjViOTdlYjQzMThhNzg0YzY1OTk5NzQgcHkzaworODAwMjEgNTIzNzcyMzVkMDU1MjExMGNmZDMwNDJhMTQ2NGM2MDJhNzY2MTVjYiByZWxlYXNlMzEtbWFpbnQKKzgwMDIyIDYzYjU4MTI0YTU1NGEzNmYxYTdjM2MwM2ZkNTZkNDA0N2E1MWRhYTggbGVnYWN5LXRydW5rCis4MDAyMyA3YTM5MGViNTBkZjEzNDMyMzJiNjc1ZjBiMDdiNzY5MjlkMjZkMGI0IHB5M2sKKzgwMDI0IDY1MWVkZmQyZGIzODg4MmY4NWQ4ODkwZDU4Y2I5MDRkZTVhN2JmOWYgbGVnYWN5LXRydW5rCis4MDAyNiA1ZThlNmU3ZWVkYjIxNGM1MTIxZjc5OWE3MGYwOTU0YWI3MWMwOTI1IGxlZ2FjeS10cnVuaworODAwMjcgYThiZWI2MTQ5MjJmOTAyYzk2NDkzODhlZTYwNDQ2NmYwZWFiMjM4ZiBweTNrCis4MDAyOCAyNTE3MzIwOTI2MDEzNTRmMmZjOWUyYWExMTQ0N2JiZDllYjViNzk3IHJlbGVhc2UzMS1tYWludAorODAwMjkgMDE1ZThmN2Y1MjY0ZjRkMTExNDJkMjZkNTdhMDYyZmIyZDBlZjQzZiByZWxlYXNlMjYtbWFpbnQKKzgwMDMwIDQ3YTU3ZGY2OTg5NmZjZjBmNTc3OGQ0MzRlY2ZhOGUyZWQxYWQ0MTYgbGVnYWN5LXRydW5rCis4MDAzMSA3OTk0MjY5YWQzYTFmYTc4ZGE0OWM2MDA1M2Q1NzcxNTdiOGIyNGU2IHB5M2sKKzgwMDMyIGI4ZjI5N2NkZmFkZWYxZmRlNGU2YzgwOTFlY2I5ZGVhOGY3MjI2ZGMgcmVsZWFzZTMxLW1haW50Cis4MDAzMyBkZjJlOWU4ZDQyOGVjZmRiMzlkZTNiYWVhZmU2NjAzYzM0MzJkNjRmIHB5M2staXNzdWU0OTcwCis4MDAzNCBiOTJiNTdmZmIzMWUxNjhlZjUyMTdhZTE5ZmFkMjQyNTY1OGFkOTA3IHB5M2staXNzdWU0OTcwCis4MDAzNSA3Njk4ZDFhMTBiMDFjMDIzY2RlNjQ0ZjI5NzcyY2RiZTNmMzA2ZDA2IGxlZ2FjeS10cnVuaworODAwMzYgN2JjZWU3MTcwZDdiYzM3MjBkOTM3OTQyY2EwMzdjMDFkZmM4MGE1MSBweTNrCis4MDAzNyA2ZmZlNmY4Y2EwOTE2NDYzODQyOWFiM2ZlMmUxNDQwNzM5ZWFmMzc3IHB5M2staXNzdWU0OTcwCis4MDAzOCBhNWM4ODZlYTRmNmYzMTljYzM4M2Q4ZDlkNzA2MTkyZGJmYTVmMWI2IHJlbGVhc2UyNi1tYWludAorODAwMzkgZDZkZWUzYWQyNTliNTZiZWRjN2U4MjNkYTAwM2ZlMjk2Y2MyMTZiMSByZWxlYXNlMzEtbWFpbnQKKzgwMDQwIGQ0ZTIxMDMyM2Y3MTM3NDAyNjZjODY1ZmJlYzc2YTM3MzAxYjczNjkgcHkzaworODAwNDEgMzQxYTZiZGNjZDJlNzJhMzg4Y2U3NmI1ZjRkMmFlY2VmOTdjYjMxMiByZWxlYXNlMzEtbWFpbnQKKzgwMDQyIGE5MjEzZjkxYWIxNjk4MThiN2Y5NWQxYTg5MzE4MjMxOGMxZDQzMzEgcHkzay1pc3N1ZTQ5NzAKKzgwMDQzIDA4MjRmMjY4NjFiYWJjM2YyMTJhOWQzNmIyNzEzMDYxZTU4OWYyZGYgcHkzay1pc3N1ZTQ5NzAKKzgwMDQ0IDcwMmI2Yzk5ZTc1N2M3MTA2NDFkNDg4MDUwM2UzZDIxZTYxYzg3NTAgcHkzaworODAwNDUgN2UwY2U1ZjYzYTNiY2E0OWFkMzExZmU4MTExMDM1YWNlNmM4NzljNyBweTNrLWlzc3VlNDk3MAorODAwNDYgYjRjNjUzNDMyY2I2NzRjNjY5MjI2ZjczNWFkMDk0ZDUxYzQ3NDRhNSByZWxlYXNlMzEtbWFpbnQKKzgwMDQ3IDFkZDRlZmRlZmZmMTU4NzYzYjU3NmE3NTRjMmNiZGQzZmM3MTk3ZGQgcHkzay1pc3N1ZTQ5NzAKKzgwMDQ4IGI5NWJhMGNjMWI3ZTUxMTkzZThhZWUyODRhNWEzN2FkMGRiNmI2NzQgcHkzay1pc3N1ZTQ5NzAKKzgwMDQ5IDVjOTlmZGI3ZGE3Mzc1ZDMwNjA5MjNmYjFlNGJlYTAxNWQ0MGRkNTMgcHkzay1pc3N1ZTQ5NzAKKzgwMDUwIGNiODc0NWZhNjU4ODQyOTFkMjBlNTU4ZmYwZDJhNzMzNDdmMTdlOTkgcHkzay1pc3N1ZTQ5NzAKKzgwMDUxIDM2YjAwNWJjMDg4ZmY1MmFhYWFjZmU2YzE5N2JjMTYxOGU4NjRmYWEgcHkzay1pc3N1ZTQ5NzAKKzgwMDUyIGYxYTJmM2I2YmZjNjQ4NTNmNzFiYmM4MjNlYTNmY2ZmMDgyNzZmMzMgcHkzay1pc3N1ZTQ5NzAKKzgwMDU0IDViNmZlN2QzNTk4YmNlMjJhYzUxMmM4NDMzZjRlZGNjNGJkNThkNmQgcHkzay1pc3N1ZTQ5NzAKKzgwMDU1IGU5ODRmOWUxNTY2NmNlNmQzMmVlYTEzYzExMDNmMGU5MjVkNTIxZjYgcHkzay1pc3N1ZTQ5NzAKKzgwMDU2IDUxN2NjNGQ1OWUxMmUyNDE4NThiOTE5NmVmYjZiZjQyZmE1NTY0NjYgcHkzay1pc3N1ZTQ5NzAKKzgwMDU3IDk5ZTljOGQ2OTBhYjk0ODA3MTNjYTc1ZGIwOWQ0MmZkNjg4NTFjOTUgcHkzay1pc3N1ZTQ5NzAKKzgwMDU4IDI4NTUzNTY0ZjFjNjZhNDYwNzJiZTdmMDdlNzRkYjUxNjdlZTkwYTUgcHkzay1pc3N1ZTQ5NzAKKzgwMDU5IGZkN2ExM2YwZWJiZGRjNDBhODZiODMwYThmZTQzMjVmNjNlZmM0NjMgcHkzay1pc3N1ZTQ5NzAKKzgwMDYwIDg2OTNmYzA2YWM4ZWM4ZTFkY2ZiMjg1NmI3YzBjNWJkNjI1OTQzNDggbGVnYWN5LXRydW5rCis4MDA2MSA3MzViZWQ2YzhlMzYxZDg0NzE4ZjFiNmU5NjViYWYzMzI2MWU2Nzg3IHB5M2sKKzgwMDYyIDY0OTNhZTcyNzkxZDM3YmNmMTdjMDJhMzllNDU4MDkyODM1M2NjZGEgbGVnYWN5LXRydW5rCis4MDA2MyA0NTBjNjkyMTA1ODFlOTRjZWQ4OGExYWJhZjlhMmEzZTc3MjM0Y2Q1IHJlbGVhc2UyNi1tYWludAorODAwNjQgNmJiZjA3YTNlMDFiNWMwODI1YThkMTg4YzMyNmVlOTc0NzY5OGZjMiBsZWdhY3ktdHJ1bmsKKzgwMDY1IGJhZTc5NzY1MTYwZDIyMGQ2MTI5NmZlMTY5Mzk3NzMyNDc2MzcyMWMgbGVnYWN5LXRydW5rCis4MDA2NiA2MmQxMTc4NTIwNGY0MDg1NmYyYzNlY2ZmMjhhNWVlNWE3ZDkwZTkyIHB5M2sKKzgwMDY3IDM2NGYxYWMzMjI2NGVmN2Q0NGRhYTUxOTllMDAwMDg1ZDZlMjNjNjkgbGVnYWN5LXRydW5rCis4MDA2OCAyMTI2N2JmMDcyMGUwMTY2MWI3M2UxMGI4MTc0MDlhNmI3ZTZmZWJlIGxlZ2FjeS10cnVuaworODAwNjkgZmE5MzAwZmNiMDA0MDg3ZTI4ZTA3NTM1NGM2YzA1N2RjNGM1ZjcyYiBsZWdhY3ktdHJ1bmsKKzgwMDcwIDYxMDJkODY4NmFhZWRhNzlmNjBkN2EwNjRhMTQ5ZWMzOTY2MDNkZmQgbGVnYWN5LXRydW5rCis4MDA3MSAwMWQxZmQ3NzVkMTZiNTY5ZjJjZmJmMGIxOTY0Yjc2ZDVkZDY1YjJkIHB5M2sKKzgwMDcyIDIyMTYzZDhjYWYzZTMzY2JlNWRhOWNmZjY3ZGQyYmIzNmQyMjJhZDIgcHkzay1pc3N1ZTQ5NzAKKzgwMDczIDkwNjljYTUxZTYxNDgyODM2YTUzNjc4NTMyYzYxM2VjZTE2MDRhMzkgcHkzay1pc3N1ZTQ5NzAKKzgwMDc0IGQ0NDNkODVmNjJjMTc3ZDY1MTE4ZGQ4ODJmNDA5MTQ2NmRmZDJlOWQgcHkzay1pc3N1ZTQ5NzAKKzgwMDc1IGNhMTFjODMwZjVjYzlkYWNkZmQ1OTNhMDBmMTQ0NmZhOGZmNWFlNmMgcHkzaworODAwNzYgYjEyNzZmY2RjM2JkNzUwMjBiMDI0MDUxYjhiMGY2NjU1Y2Y5NmFjZSBweTNrLWlzc3VlNDk3MAorODAwNzggY2RiY2E3YzM0MzFkMjZmMTg1NjhiOGQ3MjJkZDJlZmIxYTE3ZmNlNSBweTNrCis4MDA3OSBkMzUxZTE1ZmVlMjhmMDlkZGQ5NjY4MTA2ZmU5YWVhYmJjZDMwZTdiIHJlbGVhc2UzMS1tYWludAorODAwODAgYjQwNDM2YmNmNGIyYjQ2ZDUzNjNjMTQ5M2RkMTU4ODJhZDlkYmZlMSBsZWdhY3ktdHJ1bmsKKzgwMDgxIGM1YTRkOWQ3MmY5ODIxOTIzNmUyNTkxZTI4NTMxM2UxN2YxMjdkY2EgbGVnYWN5LXRydW5rCis4MDA4MiA3ZTg2ZjQ0MjEyZDY1NWE1NGIyNTRkNzA4ZWU0MjBhNjBjYTFjMDczIGxlZ2FjeS10cnVuaworODAwODMgMTRmMzEwYTZlNDkyODZjN2FlZjk1NzQxYjJjZDlkYzg2YzU3MmYyNSBweTNrCis4MDA4NCA0ODVlMzRlYzFhMWE4Yjk2MzZlYzhlZTRlMjZkOTg4NDQzNGNhODQ0IGxlZ2FjeS10cnVuaworODAwODUgNzY0OTQ2Mzk5MzUyZGYwY2NiNzlhZDdjODJmZjkzYzAyNGZmM2E1ZSBsZWdhY3ktdHJ1bmsKKzgwMDg2IDQyMjk2NjJlZGU4NzJkYmVjMDI3ZDViYzI1NDI5ZGI5YWY3MmI1ZjMgbGVnYWN5LXRydW5rCis4MDA4OCAzYTQ0NzNiZWVhZjUyMzk1ZWRkNTUyYzY3ZGQ5ODMzMjAyYzg5MjBiIGxlZ2FjeS10cnVuaworODAwODkgZjRiZDNiMmNiMDAwZWIzMjU3OWFiMDE0NzQwM2MzNWFkZTdmMjU2ZiBzaWduYWxmZC1pc3N1ZTg0MDcKKzgwMDkwIDVlODUxYjI5ZWQ5NWIxODdkMjQxZjJhMGU4MDQyYWZmNDU2NjEyMzAgc2lnbmFsZmQtaXNzdWU4NDA3Cis4MDA5MSBjMWQxZjAwMGI0MDRlNjUxZGVmZGFiZGI2ZTZkOTc4YzAyZTlhOTU5IHNpZ25hbGZkLWlzc3VlODQwNworODAwOTIgNzNkNzhmZWY5MWQ3MGZhMmZlMjZlYzc5MTMwODY3MmUzZDZhYjA5ZCBweTNrCis4MDA5MyA1ZmE0MDJhNDZmNWE3ZjdlMzYwNjhiNTMyNmNmZjBiZjc2MTk5NjZjIHJlbGVhc2UzMS1tYWludAorODAwOTggMzI0MDE2NzE4NjIxODA4N2Y1MDAzZmQ1MDc3YjE1ZWFhYmQ0MzMyMiBsZWdhY3ktdHJ1bmsKKzgwMTAwIGY5OGJkODVhZWJiMGY1MzcxODc1OGQ1MWU5M2NjY2Y3MmJiZTM5MGYgcHkzay1qaXQKKzgwMTAxIDdiOWUzMjhmNzUzMzIxZDBiOTdmZTc0YmNlYTNlNGE3NjdlMTg5OTIgbGVnYWN5LXRydW5rCis4MDEwMiA1MWI4NTUxNmQ3ZjkzYTgzZDIzYTRiMDg0NGM5MjA4NzA4ZTViMjNkIHB5M2sKKzgwMTAzIDM1YWI1Y2JkN2U3OTBjMDIzZTU4OTI1OTAzYmY1NTY1ZjVmMjEyYjYgcmVsZWFzZTMxLW1haW50Cis4MDEwNCA4MjBiN2UwYTZmMzhiMWI1NDE0Y2UwYjkyZWYxODRmZDQyZDc0NTU5IHJlbGVhc2UzMS1tYWludAorODAxMDUgMTM3YjQyNGUyZjc4NGJkOWRiODQ1NjU1YTcyZDU0MDUwMWMzMDEyMCBweTNrCis4MDEwNiA4MTI5Nzk3NWQyNTNlOWNmMzdiZTRmZmJkMGRiNGRjYWIzZDA2YjU1IHB5M2sKKzgwMTA3IGFmYjI1YzJkMDU2MTk0Y2RmY2VkOGU0ZjBlNDkxMTk0ZWZmY2JhY2QgcmVsZWFzZTMxLW1haW50Cis4MDEwOCAwMDU1MTBhYzA5OTViNmZmYWMyMDgwMDE5NzIxNDAyYWJiNzBkYjZlIHB5M2sKKzgwMTA5IDg3ZDEyMGI5ZWZmMmFlMzZmYjQyYmY2ZWE3NjYxNDEyMjE0ZTc2NmEgcHkzaworODAxMTAgNTQ3ZjMwYTBkNGIxZWQ2NTY4ZTI1ZGVjOTYzZjM2MmVmMzNmYzk3MyByZWxlYXNlMzEtbWFpbnQKKzgwMTExIDRjYmIwZmRlYmY3MzdjYWRiNDBhY2VmOTJlYmIwMmQ3NjcwNTM1NDAgcHkzaworODAxMTIgOTUxNzhlMTdlOTYxMGNkODA0MTM4NmJhMGNjZTgwMjhiYjdmMTRiZiBweTNrCis4MDExMyBiZGFhMjg5ZDlmMTk5ZDhlMWU2Zjk0ZTNmNjM1NzdjODJiMzQ3ZmMxIHJlbGVhc2UzMS1tYWludAorODAxMTQgMDQ0MmU3YTQxOGNlYmZjMzk0N2Q3ZDNmNTk3Y2UxMzhjZDNkMWNmMiBweTNrCis4MDExNSAxMTY0MGMxYTQ2Mjg4YTg2ZTBlNDgwNDMwZDA0NWE2NThjMGY2OGEzIHB5M2sKKzgwMTE2IDE1YjA5Y2NmYWM3Y2ZkZWVmNmM0NWM0YzljNDQ4NGEwYjM0Y2I3NWQgcHkzaworODAxMTcgNjMzNWNmMzQ1YWZhZTgxM2IyYzViMGY1MDQwMjA1NmRiODFjZTIzMiByZWxlYXNlMzEtbWFpbnQKKzgwMTE4IDQ0YTc1MDdmNmRiNTQyN2Y1N2RiOTU1ZWRhMGExNzFhMmI3NjI1ZGIgcmVsZWFzZTMxLW1haW50Cis4MDExOSBjYzEwYTE1Mjc1MjFkMTA2YjhlYTNhOTc5ZDRmYTIzOTcyZWYwZjUwIHJlbGVhc2UzMS1tYWludAorODAxMjAgNDVhZWRjYWU5YzQ3OWMyMDY2NjA0YWRhNjljZTg2NmQ4MzY0NGFlMCBsZWdhY3ktdHJ1bmsKKzgwMTIxIDhhYjViYmFlNWVmZTllODQ5ZjA4ODVjYzE0MzQxZjNkNjFiMzI3NDUgbGVnYWN5LXRydW5rCis4MDEyMiA4MWJiZDU2NzBlYzM5ZWM3MjcyMWNlZjUzMGJiZGQ2ZmE1ZDllMTc5IHB5M2sKKzgwMTIzIDYzYjgxNWNjNmY0YjFmZDliMDE4ZTJiOTIyYWVlMDNiZGQ1NWY1ZDYgbGVnYWN5LXRydW5rCis4MDEyNCAzNjk2ZDE3YTEwYjNhNDUyODFlZDBhZDkyMDJjNzc5ZTY2MWY0MTJmIGxlZ2FjeS10cnVuaworODAxMjUgYTc0OTFkNDdkNDU0NmZkYzJiZjhlMDZlZjQzYmRmMDk4OWNhMjE4MiBweTNrCis4MDEyNiBjZTYyNGNjYTIwMmFlOTE0ZjI4ODlmNzkzOWJiNGNmODJkYWVhM2NiIGxlZ2FjeS10cnVuaworODAxMjcgNDYwYTk4NGE5ZWQ1NzA3ZDJmYTM0N2E3YmI2NGQ1NDk0NjI3ODdhYSByZWxlYXNlMjYtbWFpbnQKKzgwMTI4IDc3MzQwOGNhNWVlNjMzZmZkYWMwYzlmZGYwMDFiYjRlYjdlZGFhNGUgcHkzaworODAxMjkgNzg0YTAyMjY2NGUzYTJjMTliMjUzNjc5ZDQzNjIxOWQ3NDdiZDJiNiBsZWdhY3ktdHJ1bmsKKzgwMTMwIDBhMDFhM2VhMTQwYTk3ZTA0ODJkYTNmOGJmNGY4Mzg3NWZmYWNiODMgcHkzaworODAxMzEgNjhmZDcwYTllNzdhZmRjZTdlZTljNjczMjA2ZjI0MWE2ZTQyMjllNyByZWxlYXNlMjYtbWFpbnQKKzgwMTMzIDVlMWRiYzNhZTc2Nzk3Yjc3NzYwODcwNTFiNzNjMzhmNTM3MjgxM2YgcmVsZWFzZTMxLW1haW50Cis4MDEzNCAxYTMzMDRjZTlhMmU3YWZhNmFkZTNkY2UwYTBkMTlhYjM3ZTAyNGQxIHJlbGVhc2UzMS1tYWludAorODAxMzUgZGM3NjViY2EyNGFkZDg0ZmI1ZGU1OTUwMTFlY2Y5Y2U4N2NhOWFjNiBweTNrCis4MDEzNiBlNTM5MGZlZGNiNmIxNjJjM2RkY2FlMjE5ZjVjNzUwMzIxNjRhNGMyIHJlbGVhc2UzMS1tYWludAorODAxMzcgN2I2OWU2MzBkMjM3NzkwYjU2ODVmOWYyMDgzMDRmOGY0Nzk3NDI2MyBweTNrCis4MDEzOCBjNTMyYWZiMGZhODkyODAyZTEzZmZjZmZlOWI1NDNkNGU0ODE2OWUxIHB5M2sKKzgwMTQwIDA0NmY5N2VkNTY3OTRlZmRlNzUyZDhkYjgzYTI3NTg0YWU0NmIzOGEgcHkzaworODAxNDEgMGUzNmNjMGQ2YWIwMjAzMzY5OTIxMzk1YWExMTYyZTIyZDZlZWRmYiBweTNrCis4MDE0MiA3MzRkZDJlZGExY2M0Y2E0YmE2MDEzYWY1ZjY5NjRhNzVhYzgzZGQ3IHB5M2staml0Cis4MDE0MyA3MzIxYzdkNjQyYWRkYTk5NTgzMzI3Yzc2YjBlNDZmNzljZDJkMWMwIHB5M2sKKzgwMTQ0IDI1ZTM1ZTM4MzhjNzc1OWZkN2Y3YzY4YjI3Y2RiMWVhNGUwZTg5YzUgbGVnYWN5LXRydW5rCis4MDE0NiA3YjA2NTY5MjljZGI5MjQ1MjUwYmI0Y2QzMDU0MWQ4MDczZjIxZDYwIGxlZ2FjeS10cnVuaworODAxNDcgMjkzOGJmODk5ODYzODk1YTRkMmEyYzg5YzRiYmJkN2U3NzI4ZTc3MSByZWxlYXNlMjYtbWFpbnQKKzgwMTQ4IDRmMTIyMGYzZTJjN2RiOGEyNjc1MWE0NGJhMGFiMWM0MDkxNmMxMzIgcHkzaworODAxNDkgNGQwMjA4NjYxYjFmNzM4N2E0YzlkNGQ1YzJlMTc4ZmY1MDFiNThmOSByZWxlYXNlMzEtbWFpbnQKKzgwMTUwIDM4NGRkNDQ5YTRlZTg4MmViOTAwYWNlOGNkZWQzMzdlYzYwYWI4ZjkgbGVnYWN5LXRydW5rCis4MDE1MSA3NDYyZTc1MmYwZmEyOGJhYmRjOTA5OTUxODhmOTgwNjA0NDBhMDEwIGxlZ2FjeS10cnVuaworODAxNTIgMzNkNDc5YTM4NjY2YWM1OTVmM2RkYmIxZDEyM2MyMzE5MDE5MDAxMyBsZWdhY3ktdHJ1bmsKKzgwMTUzIGYyZTJiMTk2ZGI5MjJjMjc4ZDc1MDEwMjVkMmU3MzRkZmJiNzQzZDEgcHkzaworODAxNTQgZTVmNmRlMThiNzE1NmU1YzE0MjhjMDA2ZDUyMGI3Mzg5OGFiNmUzMSBweTNrCis4MDE1NSBjYzM4MmYzOWIzOThjZjk5ODFmMTgwODJkZTNjZmRlZDNjNzkyN2YyIGxlZ2FjeS10cnVuaworODAxNTYgZDdkNWM3NjU0NWZiMzdmNWMwNWVkNDBkY2NiOTdmNGJmNTcxOGFmYSBsZWdhY3ktdHJ1bmsKKzgwMTU3IGJhYzk5MjI5ZGEyZGNhOTRiNjNjZmViYWJkNmZlOTFlNGE5MmRlN2YgcHkzaworODAxNTggOWFjZTU1YjI5ZjdlOWNlMGJiNmQyM2IzNDUyNmEwZTVkNTdiMjU3NSBweTNrCis4MDE1OSBlYjMwZTY2MmZkNmFjMTI3NzNiYTMzZWViYzI5YmExMDkwNzU4NmZmIHB5M2sKKzgwMTYwIGY3MzA3MTJkOTdiOGRkYzJiNjJlNjM2MWQ4ZDFlZTNmMjRlYWE3MTQgcmVsZWFzZTMxLW1haW50Cis4MDE2MSBkNDE5ZTczNzMzNzAyMTY1YmM1MzZmZWFlMDMxN2RiN2IxZjZlOTkyIHB5M2sKKzgwMTYyIDMxNmJlYzNmMThlYzkxNTEwZGNlMzc3MDEzNzBkYmE0YzI2YTMzYjEgcmVsZWFzZTMxLW1haW50Cis4MDE2MyAwZjM3YWZiOGE5ZjJjMGU5ZjU1MDZhM2RkOTlhYzUwNGQxYTdlM2JhIHB5M2sKKzgwMTY0IGQzZWFiNDU5NzM5NTFiOGMwNmVmMDJiOWU4MmUwMGUxNDU2YmQ3NWIgcmVsZWFzZTMxLW1haW50Cis4MDE2NiA3YzkwYWMxOTRlNDA4MmQ2MDMzMjhjMWRjZTk2ZDdhYTgwMDhiMmI0IGxlZ2FjeS10cnVuaworODAxNjcgZTA4N2I1ZDNkMTkxYzIxMDU4N2M3MzBjOTkyNTA1ZDk5OTQzMjZjMSBweTNrCis4MDE2OCBlYTQyYWY5NjhkOWQwNTVhMmM5ODQ5NWUyY2U1ODBkZmRkMmE4ZmIxIHJlbGVhc2UyNi1tYWludAorODAxNjkgOGVmYmNjZTA3NTdkZjYwNDdjMTg5NmZiYTE0NDM3ZmU1M2Q4N2Q0MSByZWxlYXNlMjYtbWFpbnQKKzgwMTcwIDdlMjcwZGNmNGJkNTkwYmI5ZjUwNDk4YjJmZWUyMDM1M2Y2NDgyODIgcHkzaworODAxNzEgMGMwZDgxOWVkYjlkY2Y2OTdjY2YyMzA4YTFiZWU1YmM1YTgxNDg1NiBsZWdhY3ktdHJ1bmsKKzgwMTcyIGEwN2Y2MDgyNWUxYWI5YTFiZjEwMjg5MWRmOGQwZDhkYjcwYjkzZDIgbGVnYWN5LXRydW5rCis4MDE3MyBhN2U2OWE1ZjIzMzc4NDYxMGUwNzg3OWM1NTRiMDliNWQxMTZmN2Q2IHJlbGVhc2UyNi1tYWludAorODAxNzQgNmNiZTg2NDU3MTdkM2U5OWRkMmE1NjgzMWI0ZGI5N2FjNzZjMWM3YSByZWxlYXNlMjYtbWFpbnQKKzgwMTc1IDY1NGUxY2M5YjRmZjU2YThmNWU1YTQ5YjJiN2JlYzc4YWM1Y2ZhZTAgcmVsZWFzZTMxLW1haW50Cis4MDE3NiBmYThhMDNkZmMyZDFjYjZjNjM2ZWI2MTJmYzcwMjU1YmRhYzlhYzhjIHB5M2sKKzgwMTc3IDEzZDg2ZmM2OTk0MDgxYmVhOTExNmMwYjgzOTZiZWRmMDhmNjAyMjMgcmVsZWFzZTMxLW1haW50Cis4MDE3OCAyZjU0NzU2YWViMTE2NmM3ZjBiMTg1MDA5YzRlMTNjYjBhNzQ5YmFhIGxlZ2FjeS10cnVuaworODAxNzkgMjI3MzdhOTliZjhjNDQ0YmM0YWZmM2ZiYjk0NjkyMmE4ZmQ3NThkNiBsZWdhY3ktdHJ1bmsKKzgwMTgwIDZjYjFjNDgwNGY5YzhiMWVjZjcyOTU1YzU0NWU2ZTRkOGNjNjFmN2UgcmVsZWFzZTI2LW1haW50Cis4MDE4MSBmZTZiNmMxODliYjQxNTNkNWNhYmEwZDE1ZGM3NTI2YmM1NGQ3Zjg5IHB5M2sKKzgwMTgyIDFmM2QyZTYxMmI0NGFiNzdlMTgxYjQxMzAxOTI5OTlkMzgwYjc1NmUgcHkzaworODAxODMgZmIzZTQwMGMyY2RhNDA4NTkyNDk1YjkyYWQ2MzBmMjdmYTI4NDNhOCByZWxlYXNlMzEtbWFpbnQKKzgwMTg0IDQ1MDVlYjU3YjRjYTdkZjgwMTk0MGRkMGNlOTcyZGZkYzFiYTkxNjQgcmVsZWFzZTI2LW1haW50Cis4MDE4NSBiZWRkNmVlMDNlNjA0ZTc1NjljNmY4MGQ2ODZjMjQ0YjI2MjM2ZTYxIHB5M2sKKzgwMTg2IGY3NjJjNmE1NGJmY2M3NmM2YzUyZTk2OWE3MGZlYzU1MjIyY2E0YjUgcmVsZWFzZTMxLW1haW50Cis4MDE4NyBhOTZmZDBlODc0YjQ5OGE0ZTY0ODI3ZTBhMWRlNjJlMmIwNTdhMmIzIGxlZ2FjeS10cnVuaworODAxODggYmNhNTc0Mzc2MTI3MmRkMWVhYjMyNTg2MWJkZGMwZWFkYjNiOTQyNSByZWxlYXNlMjYtbWFpbnQKKzgwMTg5IDcyNjdlMGFjZTMzYzE3NDI1MGE3ZmM1NmZjNjk1NGZmYTVlMWFhYWIgbGVnYWN5LXRydW5rCis4MDE5MCAwNDNmMTQzMDRkZWQwNDczNTcwMmMxZTQ5MjMyZDlhMjM2OGRmNDhhIHB5M2sKKzgwMTkxIDJjZmIxMGE2YzJiNWQ3MGI1M2ZkNzVkNmFmMDQxNDU2Y2U3MzViMzkgcHkzaworODAxOTIgOWQzNWFmZDg4MjFmMDA3NWE4YjQzN2Y5NjQzYjMzOGZkZGUwZGE2YyByZWxlYXNlMzEtbWFpbnQKKzgwMTkzIGE1MmNiOTkxZjU0YzFiMjc1Y2I5ODIyY2I2MDg5MjI3ZTU1ZGVhMjggcmVsZWFzZTI2LW1haW50Cis4MDE5NCA3NjY0OWVkNDVjNjM3YmFmOTRlNDkxNDExNDlkNzZmODdhZDU5ODEyIGxlZ2FjeS10cnVuaworODAxOTUgMDY0NGNhM2ZlMzBhMDRlZjY2YzMwYmQ0Nzc1Mjg2OWZlOTlhYjE3OSBweTNrCis4MDE5NiA0Nzc0ZDU5ZWVmN2IzNzYyMTNjOGVmOTE5ZjE0MWYwZmIxMWUzY2JmIHB5M2sKKzgwMTk3IDI4ZmMzMTY4OGI3YzEwMzFmMjU2YTE3NGRhNzBjZjBhMTI3ZGE3ZTEgcmVsZWFzZTMxLW1haW50Cis4MDE5OCA5YWFjMWQzZDg3M2QxODBlYjQ0ZGQ5YWU2MDU4ZTcwODg4MjkyZjVkIHB5M2sKKzgwMTk5IDQ4NWMzZjA5YTA5YjQ4ZjhhM2U5OTkyMjYwNjg3ZWYwNmE1YzI3ZjMgcmVsZWFzZTMxLW1haW50Cis4MDIwMCA5Mzg2ZTNkZDU3MDBjNzA4MWMxYzcwMzFhMDBjMjY0ZjYxOWVjYmI3IHB5M2sKKzgwMjAxIDE4YTE5NTYzM2I1OTllZGMxZjEwYzY2MWRjZGU3NDQ3MzgyZDQ0ZjIgcmVsZWFzZTMxLW1haW50Cis4MDIwMiA4ZjVjNDgwZjZkNmY1OTUxNWY4ZjgwYWRiNmRmMWJkZGMyYzNkNzg2IGxlZ2FjeS10cnVuaworODAyMDMgY2Y1NzU2ZWM2ZWQ3ZDdmNDJiNGY1OGNhYzI0OTEwNzQ3ZmJhODFjNSByZWxlYXNlMjYtbWFpbnQKKzgwMjA0IGFhNzA3ZjEzYzQwMjhhMjc0MTAxYWRmZTU0MmM4NDQ3ZTM0MDJhN2YgcmVsZWFzZTMxLW1haW50Cis4MDIwNSBhNzI3Nzk2NzJmMTU5ZjMxYzAxOWIyMjU5NmJlMDAyODMyNDk1Y2FhIHB5M2sKKzgwMjA2IGNmODA2OThmMjc1NjgyOGFhYTRkYTM5YzM5MjE5ZWVlYmYyZmQ3ZDUgcHkzaworODAyMDcgYjg3NTAyMWNkOTkzNzAyMTAwZDRkOWY2ZTJmYTQ1MWY0MTQ5Mzk5OSBweTNrCis4MDIwOCAyZGViNzhiYzVkMzg1OTIxMzI3M2ZkYTg3YWVlNzgxY2NjNDUxOTAxIHJlbGVhc2UyNi1tYWludAorODAyMDkgNmUyZTJiNjI2ODVlZDdhOWMwNzBjYzZmMzUyOTUxNzY2MTRhYzkxMCByZWxlYXNlMjYtbWFpbnQKKzgwMjEwIDQxZTJmMDU0ZDUzOTAxY2E4MjM5MzA5ZTVlNjFmN2UyYTMzMGZhZDYgcmVsZWFzZTI2LW1haW50Cis4MDIxMSA3YTU2NGQ3NGZkNGE4YTM3ODkxOWRlNWI1YWNmZDk5MWM2YTQwZmE2IHB5M2sKKzgwMjEyIDc4OTYxMmNkMDk3MDVmZDI3MWQ1NzJhYTU0MjQ3OWYzNGU3OTg2NDEgcHkzaworODAyMTMgODM2ODJlN2Q1OWE2NDQzOTFlNjBiODM0Zjg5MjJhYjQ1NThiN2U1MSByZWxlYXNlMjYtbWFpbnQKKzgwMjE0IGNlNjA1ZTk1MDAwODA2Y2UyNzU0NDQyYjIwM2I4NzkwNWMxNTFmNTAgcmVsZWFzZTI2LW1haW50Cis4MDIxNSA0MDkyZTQ1NjZkYjNmZjI2MTljMjAyMjY3NDJmMmU5MzgyMmNlMjgyIGxlZ2FjeS10cnVuaworODAyMTYgN2Y5MjYzMmY5MTJkNmM3YTM0NjFiNjUxNTYzY2MwNDY4NWE1MWY0ZSByZWxlYXNlMjYtbWFpbnQKKzgwMjE3IGI1MTRmODMxMWYyODU1ZDVkNWU1NmI4ZTA0YzNmOWQ4ZWRjYTZjNGYgcHkzaworODAyMTggYmNmYjZiYWRmZjg4NDFiYzBlNGNjMDBkMmE2MTk5YmRlZmU5MjcyYyBsZWdhY3ktdHJ1bmsKKzgwMjE5IDcxODYwY2RiNDg4NjkxZTYwMTQ3ZDM5N2YxMDY5NDczZDU1MWM3NGUgcHkzaworODAyMjAgMWYwMmI0M2UwOTA4OTI0N2NiZGFiZDAzNjUwNDZkMjI2ZWQxNDU4YiByZWxlYXNlMzEtbWFpbnQKKzgwMjIxIDJmMzExZGFiMDY5NzM1ODBiMzU1ODJlMTRhMjc1YTViY2U3NGE4MmIgbGVnYWN5LXRydW5rCis4MDIyMiA5OGIyY2QxMGFiMDVmMDFkMmE2Y2VlMmE3N2VmZTY3NzExMDM4ZjQzIHJlbGVhc2UyNi1tYWludAorODAyMjMgZjc3ZTM3YWZjODcwYTQzOGNkYzcwMzI3YzA0MTA0YjFhNmJlNWNlYiByZWxlYXNlMjYtbWFpbnQKKzgwMjI0IDdhZDZlYTk3ZDQ0MDIzMTU4NjcwMWEwNWE4MTEwYTY0NTViYTk3M2MgcHkzaworODAyMjUgMzAxZmJlOGJmYWQxODU5ZTE3NWNmMDFlMDdlYzg5ZjY0YWMwYTAxNSByZWxlYXNlMzEtbWFpbnQKKzgwMjI2IDMyMjg1MzEzODk2Yzg0MDEwMmY5ZTMxY2VlNGYxMzFjMWQzYjU5YmIgbGVnYWN5LXRydW5rCis4MDIyNyA3ZmVmODc5NmY3NzcwNDJkN2I4MmI1ZDgzZDU3ZWI5NmM5M2ExMzA0IHJlbGVhc2UyNi1tYWludAorODAyMjggMzliNTYxYzUzZTlhZDdiYmY2MWMwYThhY2IwOGM5YTUzZDM2ZGM2ZSBweTNrCis4MDIyOSBjMTNmODI1ZmRlYWI3NmIyNDkwZDc0MjQ1MDk0N2ViMGZhNjk4YzZmIHJlbGVhc2UzMS1tYWludAorODAyMzAgYmUxN2JkYTVhNjU4ZTJhYjFiOTk1YTM2Y2QyZmIwZTljMTBkMWFmYSBweTNrCis4MDIzMSAzNTk5NTRjZjBjY2RhOWQwZTJmYzA2MDg1ZWQ4MGY2NjU5YTAwZTIxIHJlbGVhc2UzMS1tYWludAorODAyMzIgNTkyN2ZkZjVkNDhjNWFlZWUxN2EyODJkMGM1Y2JiMjMxYTMyZDJkMiBsZWdhY3ktdHJ1bmsKKzgwMjMzIDhjOTgyOGMxNTA0MDlmMjdmMTFlYTNmMjBiNjU5NzNjYzY1NzFjNGIgcHkzaworODAyMzQgYmY4ZDU0MDJhYmZmMjlmNTQ2Y2QyMzUyZjJmZDg5NjI4MTk5YjFlMSByZWxlYXNlMjYtbWFpbnQKKzgwMjM1IDFmYjYwODE0MjA0MDRmNWRhZWI3NTlkNmVjZGM2ZmYxOGRkYzU4MTAgcmVsZWFzZTMxLW1haW50Cis4MDIzNiA1ZjVlZTk0ZjE5MjYzZGY3ZTU2MDk4YmM3M2MyYjUzMDA2ZGUzYjdjIGxlZ2FjeS10cnVuaworODAyMzcgYzIzN2JmM2QwNDNjYWFkMGJiYzUwMDkxMzc0YmU5NDVhZDI4YTUzNyByZWxlYXNlMjYtbWFpbnQKKzgwMjM4IGVmNzNhYzcxZTI5NTAyZjZkY2VmZjNhMzY5NDE3Yjk0ZGJlNWVhYTQgbGVnYWN5LXRydW5rCis4MDIzOSBlMGZjYTNlN2NlYjk0YmRjNTc0MTFmNjcxMzllNzU5YTM5MWVhNmIxIHJlbGVhc2UyNi1tYWludAorODAyNDAgNjIwM2Y0NzE2NTg1ZjJlZTU4Y2ZjZjU1N2NiOGM2ZTkzOThjNzE2NyBweTNrCis4MDI0MSA4ZDA4ZmRjOTdhYTRjNTMzY2VmYThiMDg0ZGQ2OGM2M2Q4ZWMxNWU1IHJlbGVhc2UzMS1tYWludAorODAyNDIgZGM3M2VlMmE4YjllYzZiMGJiNTc4YTBlMDY4ZDFiZTlmZDE3ZDMyMyBsZWdhY3ktdHJ1bmsKKzgwMjQzIDcyNWJlOGY5NDE4YjgzZTQyNGUzY2M0NTNjZmNlYjk4MGViNWRiMDggbGVnYWN5LXRydW5rCis4MDI0NCA4MmRlMGI0ODhmMmRkNzMxY2Q2MDA1NTkwMmI3ZTVjYWQ2ZDZkZTg1IHB5M2sKKzgwMjQ1IGIwMTgzMTlhNjE1YjM1MjMwYzZlYzUwNGI5ZTk0Mjg0MjllNDcyMzYgcmVsZWFzZTMxLW1haW50Cis4MDI0NiBmMjczMmNjYzEyYjQ3MGQ0OTRmMmE4ZWQ5MTU3NDdmZjI2YmRiMmExIHB5M2sKKzgwMjQ3IDM5NzM4OTgwNTZiNjBmY2I2YTgwMjIxY2UyNGFmZjcwZjQ1ZTNhMDAgcmVsZWFzZTMxLW1haW50Cis4MDI0OCA3NjM4MjIzZjJlMDJlOTUxMjM3OGFmODgwYTY2ZDA1MDQ1OWFkY2M5IHB5M2sKKzgwMjQ5IDhkZTI4NWNhZGIyNDAzMzA1ZDJhYWFjYjAxYWE2MzgxZjExMTQyMWIgcmVsZWFzZTMxLW1haW50Cis4MDI1MCBhZTI3ODE5MjJhNmRlNTcxNWY5NTI0ZTc4YmMwZmJmMDJmY2U3NmQzIHJlbGVhc2UzMS1tYWludAorODAyNTEgY2VhMzhlZjYwNzAwZWYxYjhhZjdkMmJjZGI2MGE5ZWUzZjY4MjA3NSBweTNrCis4MDI1MiA4Mjc2M2IyMDBhNzkzNzk1NjA4Zjg3MDc4NzkxNWI0ZDQ3ZjgxZjJmIHJlbGVhc2UzMS1tYWludAorODAyNTMgZGE4NzA0OTkzMDAxNmZiNTIwNzU0NDY2MzBiMzk4OTdjMTM4MGQ5ZiBweTNrCis4MDI1NCBiYjhmZTc5ZGM1Y2IzNTJmYTRhYTMwYTg0N2MzZWM1MmIzYjM1MTA2IHJlbGVhc2UyNi1tYWludAorODAyNTUgN2QzNDMyYjA3ZWExYTYyZGZhODI3YzMzNTA4NDM0OTllZTBkMmYxOCByZWxlYXNlMzEtbWFpbnQKKzgwMjU2IGJlMTBmNGZhYWYxMmNhMTQwYjZmMWY4OTNiMjlkYjNiZjhjZDRiNjYgcHkzaworODAyNTcgYzJmZGRkYjJiNGE1NWFmZmY1YTIzNWRkYTEyMjAwNmVjYzE0YjczMCByZWxlYXNlMzEtbWFpbnQKKzgwMjU4IDQwYTNhNjMzYzU2NDg0ZmQ2OGYxNTBkYzdhMGQxMWMzODRjZmRiZDMgcmVsZWFzZTI2LW1haW50Cis4MDI1OSAzODc0MjhmYTY5ZmNkYjBlNTJkMDExZWIzMmY5NThmYTEyMWVjYzUyIHB5M2sKKzgwMjYwIGU3NzNlMjRiMTRlNmJmZTc1NWYzMWY1MzM4YTNlYmZlZmY1ZGVmYjAgcmVsZWFzZTMxLW1haW50Cis4MDI2MSA3Y2ZhNzk3NWFiMGUxOWUwMjM2M2NlMDU5YmYxYmE0NzA1MmVmZGE0IHB5M2sKKzgwMjYyIDdjYTEyNzJmNDNhMzRhZTNhYWMzODI5NmE5NmFhMjA3Mzg4ZDQxYzYgcmVsZWFzZTMxLW1haW50Cis4MDI2MyA3M2E2MTY1ZDAwMmJkNDY0NGU2OTM1MmJlNzQyZDVmZDRkM2IzNDg3IHB5M2sKKzgwMjY0IGQwNzEyMDFmMjYxMmQ2N2VmMzA3MjgwY2MyMzY3NmQzZDI0OGUwODIgcmVsZWFzZTMxLW1haW50Cis4MDI2NSA2ZWNhN2ZiZDUzOWVkZjEwZmJiMDkzY2Y3MjRjYjQ1MDE4Y2JkNTFkIGxlZ2FjeS10cnVuaworODAyNjYgYWUyNzJkMjEyYTlkYWNhZmQ2ZDkxNGQ0OTNmZTBmMDZkZWNkOGMzMCBweTNrCis4MDI2NyA0ZTVjNmIyOWQ5Mjk1ZmU3MTk3ZjAxOWNiY2U3YzMyNTYxMzVkZWU5IHJlbGVhc2UyNi1tYWludAorODAyNjkgMWZkMjcwOWVkM2ZkYjllMDEzMTc0Mjc0OThjZjU2NDUyMmMwYWZmNSByZWxlYXNlMzEtbWFpbnQKKzgwMjcwIGY4OGVhMWI0ZmRiZTdjOTY5OThhYjJmNzg3OWEzMjYxMDViZjY4YjMgbGVnYWN5LXRydW5rCis4MDI3MSBlMzE3ZTg0ZThhMWFhMWE5ZGI5OGQ0MjM0MWEwYTIyM2FhNGUzMDMxIHJlbGVhc2UyNi1tYWludAorODAyNzIgMDcwMzVkZTA1ZDRiZDRmY2IwMjgyNTJjMTJiMjBlNDMxYjE3NTRjMCBweTNrCis4MDI3MyAwZjAxYmQ2MjA4NGVmYTZhNWVlMWE4YTQxNTUwZWU2YzY3MzlmNzY1IHB5M2sKKzgwMjc0IDZkYTcxN2JmZTQyNTc4NGVlZjE0ZjZiNTNmNWNlMTg5OGE3NjUxZDAgbGVnYWN5LXRydW5rCis4MDI3NSA1MDZmYWRkYzhhOWU3MmY4OTNiZjVjZGJiY2Y0MmU4Nzg1N2Q0ODMyIHB5M2sKKzgwMjc2IDU3ZDA5Nzk1MDk2ODczNmI0NDk0ZmMyNGNhNWFkNzIzYzcxNzNiMzIgcHkzaworODAyNzcgN2M4ZWIyYmE5MTI5OGI5ZWY2ODA0MjkzOWY3NGRhNTUzZTQ5MTA3ZCBsZWdhY3ktdHJ1bmsKKzgwMjc4IGQxZDIwOWYyYzgwMzlkODdjMDZkZTBlNTkxODEwMTFlODc2MmFmZmYgcHkzaworODAyNzkgZDdmZWZmYTc4ZmEwMTY3NDk1ZmRiNWY0ODAyMDZlNmY4ZjYxMTUwMCBsZWdhY3ktdHJ1bmsKKzgwMjgwIGQwOWY4NDI1OGU1MjJkZGY3YzI3MWVjNDhkNTNkZWZlNGM1MzkyYmUgcHkzaworODAyODEgYTIyZjJhZTg1NjQ1MjUxODVlNDhmZmRlMjMwM2IyOTNjNDZiNjAwOSByZWxlYXNlMjYtbWFpbnQKKzgwMjgyIDRkZGNhN2ZkMzYzOTE5MDA4ZWU1NmJkZjg1ZDY5ZmEyZTM4MjdjMmUgbGVnYWN5LXRydW5rCis4MDI4NiBiZDQ1ZTAxMTA5OTAxNGVhZWJhNmEzN2JkY2M0OGRjNjdhNmY0ZjZlIHB5M2sKKzgwMjg3IDI1OWVmZTViOTYxYjFkY2ZmZDQzNDFkYWQxYThiZjA0ZmM4OTdjYzkgcmVsZWFzZTMxLW1haW50Cis4MDI4OCA4NmQwOGNiNmJhNWMxYTRkZjM3MTQxMzUyMjVlMmQ2M2M0ODk5YWZmIGxlZ2FjeS10cnVuaworODAyODkgMTlhOWE0NTdhNDdhYzYwMzE1OWQxNjNhNDQzY2MyZjAzNDk4MWVmOSBweTNrCis4MDI5MCA4YjM2ZjcxNzUyMzg2YjlkNjc1ZmQ1MWRjMjg4ZDhmMTBlMmRjYjkyIHB5M2sKKzgwMjkxIGFmMjdjNWE5ZmViODE0ODZjZTUxMGMxMWMyYjZhZDA4MDVkZDllZjggcHkzaworODAyOTIgOGIzNDQ1ZGZhNzE4ZWNmMTdlOTg2MzhiOGM5MDViMDFiMzU1ZjcxMiByZWxlYXNlMzEtbWFpbnQKKzgwMjkzIGYzNGZiMTUxMGNiYzUwNTU2YmY5YzNiOTliN2M5NTBkZTE5ZmVkZDggcHkzaworODAyOTQgY2NlMGE1YjIwMTVlMjQ5ZTE3MjkxYmIxYmRiZTRlNWUxNGJkNTBhNyByZWxlYXNlMzEtbWFpbnQKKzgwMjk1IGY0MDQ3YjVhMGY1NGJkNTNmNTU4ZGFiY2YxZjgwYzI4OGFkZjU5NGEgcmVsZWFzZTI2LW1haW50Cis4MDI5NiA0NzNhMGY2Nzg4MDYxMjYyYTNjMTk4OGE1NzllMWE4NzkyMjRlZjE4IHB5M2sKKzgwMjk3IGQ5NWFjZTUyOGQ2NTcyNmUyNjIxZTE0NTI1ODRhMTQ4ZDg2ODg5NGMgcmVsZWFzZTMxLW1haW50Cis4MDI5OCBmNWFmYWRiNzQ1ZGExYTMxZDMwZmM5NzlmNDljYWNjMzEzNjI4N2ZjIGxlZ2FjeS10cnVuaworODAyOTkgMWI0M2VlMWVlM2Q4ODUyNWQxYWI4YmJjNzBiOTg1M2E3YWE3YmQ5ZiBweTNrCis4MDMwMCBhMmE0ZDlkYzc4ODRmNGVmNDlhOTY2YWQwZTg3ZDZlYWNiZDQxYjBlIHB5M2sKKzgwMzAxIDcwMzljNjA0NGFiNjUzNGZhYjE3NWZkZGFmNGM5NmZmOTg5ZTM0MmMgbGVnYWN5LXRydW5rCis4MDMwMiA5YjkyZTc2NzExMzU4NTcxOGJkYmQ3MDQ1YmU3NWMwNTNiMWE1YjZkIHB5M2sKKzgwMzAzIDhlMmE3ODg0OTI5ZGEyZDFmNzk2MjU2N2RkOTE3YTgxNzIwMWE4N2IgcHkzaworODAzMDQgOTVjY2FmYzE0NDc1ODE2MTVjN2E3ZjYyZmI3OWY0NWU2OWJmNWI1ZCBweTNrLWNkZWNpbWFsCis4MDMwNSA4YTkxY2IzNmUwOTRjY2M4OTdhMzg4NzViYTMzNDA3YWM3OGUyZGQ0IHB5M2stY2RlY2ltYWwKKzgwMzA2IDJkYjA2ZmFlOGMyZWFkNjU0ZmI5ZjY2ZDZlMGExMDA5ZTBmMjgxYTYgbGVnYWN5LXRydW5rCis4MDMwNyA5NDI1NDIzMWFhNmFmOTk0N2Y1ODFmZWFhMzIzMDMzMDMyZTUxZTgxIHJlbGVhc2UyNi1tYWludAorODAzMDggODE5ZDgxMzQ3NTIyOGU3MmMwNzQyZGM1ZmFiNzc5MDBhNWRmYWZiYSByZWxlYXNlMjYtbWFpbnQKKzgwMzA5IGMyOTA1YjBlZjFkMjRkNGNkOWU3ZTM3MWMwODNlYjlhYzViNzRiYzkgcHkzaworODAzMTAgMGE3YTI1YmJiMzRmNzJiNGViNmNiMDM2NTc0NGFmMzVkYmY0YzhiNiByZWxlYXNlMzEtbWFpbnQKKzgwMzExIDZkODM2YjEwZTM3MDk4NmU5MDE4MDhmMzdlNTdhNzI3M2EwNTg2MGUgcHkzaworODAzMTIgYTU1ODI3YjBlYzNiYjk1MzQ1MzczYmU2MzZiZGE0OTQ0YjRlZmJmMyBweTNrCis4MDMxNCBjOTFmYjUwNmYwOGRmMDk0NWNiZjk4Yzk1YWVjMjk5MTA1OGUxYjVjIGxlZ2FjeS10cnVuaworODAzMTUgYzFkOGEwMDU1ZmRhNmU0MGEzZjZmNzIzZTBkNzYwZWJlNDAxNTU1YyBsZWdhY3ktdHJ1bmsKKzgwMzE2IDlkODZmMDcwMWQ5Yzk4ODdmNjY3OGM5YWUwMGE2OWQ3MjRiZTg5NWQgcmVsZWFzZTI2LW1haW50Cis4MDMxNyBmMzZhMGViZWIxNjM5MTU3ZmQ3OWZmNzZiYmI4NDdlOTVhOGEwY2YwIHB5M2sKKzgwMzE4IGEwYjhhZjFiZTU2MGJkYWQ2MDc1ZWM0ZWEwM2NlM2YyMDE3OTE2Y2QgcmVsZWFzZTMxLW1haW50Cis4MDMyMCA5YmEwMzc4M2VjZTNjYjQ1ZGFkZmM0ZWMyN2JiOGMzNzhkYWRkMDhkIGxlZ2FjeS10cnVuaworODAzMjEgOGU0MjQ3NDExNzU0MjQyYzM2NDFmZWZhMTI3OTU0ZTVkNzY1NjQ1NSBweTNrCis4MDMyMiA4YTViMmQwNjI5OGQ3ZjcwZWI0M2JlOGI4MjI3OTM1NjliY2JlNGFjIGxlZ2FjeS10cnVuaworODAzMjMgYTNjZTI3NWJmMDk1NzNiNjIxNTRlZDExNmJmZWNiNzgyZTQxNmU1NyBweTNrCis4MDMyNCA4ODhjNzVhMWJlNTUyMTliZjM3MDM4YzUxMmU2MmZhZDY5ZjdiNTIwIHB5M2sKKzgwMzI1IDc2OGNlMTA3OTlmMmQ4NTNjNGU0ZjAxNjE2NzFiYzdmNzgwY2RmNmEgbGVnYWN5LXRydW5rCis4MDMyNiA5MmE2MzNhMzBhY2I2Y2ExMjUyNjdjMjg3ZmNlMmUzY2NkNGJkNWZlIHB5M2sKKzgwMzI3IDY3YjgxYzMyODRmOWIwODVmMmY2NmEyMmM4ZDEwYzhiN2I1MjQwNDkgcHkzaworODAzMjggMWMxMDViMzcwNzQ2MDUzMDUyZTAyNDkxNWNiMDA0YzFkYWVjOTMyMyBweTNrCis4MDMyOSBlMDkxZDk3ZDUwZDU4MzA0ZGJlNDUwMjQ5YzM3N2Q2OWVjMDBhOThiIHB5M2sKKzgwMzMwIDA3Mzc5ZmU3NWM1NzA3ZmRmMDZkNjVlZjNlNDg1NTQ2NjJjMmNlMDAgcmVsZWFzZTI2LW1haW50Cis4MDMzMSA1N2FhMzEwMTJjYTUxY2MzZGE4MzVjYjg5ZWY2M2Q0MTNmNzFmYmEwIHB5M2sKKzgwMzMyIDkyNjY5OTY1Yzk5NzE5NGMyY2Q5OWQxMWI1YzYzY2QwZTkzNGFiYjAgcmVsZWFzZTMxLW1haW50Cis4MDMzMyBiMTljNjE2ZDViNGFkOGVmMTA4MzI4ODM0MmNlOWI3Y2U1YmE4ZDkyIHB5M2sKKzgwMzM0IDdkNDlmMDIxYzg0MjA5M2IwY2Q4MmYxZDQ1OTZhOGU4MGNhMWQ3N2EgcHkzaworODAzMzUgOWY0ZjY3MGIxNDhjYmE2MTY0Y2I1MGFjMDQ0MDMyZWY2ZmRhZWRmYSBweTNrCis4MDMzNiAyYjA5ZDgyMWJjZTFlODk3YjlmNjA5NzY3Mzk0MzEzNjA4M2E0NzIzIGxlZ2FjeS10cnVuaworODAzMzcgY2FkNGUwOWYwMmExMzMwN2RiMDNkODk5MTYwODc1YjE5MmI4Yjk1NSBweTNrCis4MDMzOCA0YjAxZTgwZDZjMWZmNjhmZmQ2MWNkZDU0ODQ3M2M0NmFmNDc2MWE5IHJlbGVhc2UyNi1tYWludAorODAzMzkgYjM4NzVkMWIzODQ3MzkzM2U4MGIwMjQ4N2E4MzViYThiYzY4MzEyMCByZWxlYXNlMzEtbWFpbnQKKzgwMzQwIDE4NmJjM2I4MGY1NzEyMjlhZDUzZWVmMDk5MDQyNDI1YjZlN2QzZjIgcmVsZWFzZTI2LW1haW50Cis4MDM0MSA5NGI2NDk0MGRhYzQ2NGM3YzNjNjMxOTg0ZTJhMWViNGUwMWI2ZTg0IHJlbGVhc2UzMS1tYWludAorODAzNDIgNTRmMTUwMjAyODhhNDZjNmZlNjMwODZjMzM5MDQ3NzU0ZmYyMDZkNCBweTNrCis4MDM0MyAyMzQwOTU5NTEzNzA3MWNhZDNlNzFkYjMzYmNlODc3OWYwN2JiZWMzIHB5M2sKKzgwMzQ0IDVjNjI1YTA0OGY5YTU2YmIzYjI5NmM0NmMxZjViMDA4ZjFhNzk5ZWEgcHkzay1jZGVjaW1hbAorODAzNDYgMTA0ZThjODAxZTVkMzgxOWM0ZTFjODc4ZGZhMmU5YWZmNTUyYmY2MSBweTNrCis4MDM0NyBjNDQ5ODE3ZjRiNTRkZDQ5NGRkM2M0YTM1NTNmYzlhYjFhYjA2ZTUxIHJlbGVhc2UzMS1tYWludAorODAzNDggNmI3ZTIwMDAwZjk3NjY3N2E2NzViOTBkMzM2ZmIxMThkY2U2YTEyMSBweTNrLWNkZWNpbWFsCis4MDM0OSAzZjI3NzNhZTg0NDhhZDIyOTE3NGUzOWFkMzNmM2Y3YzlkNTlkOWFkIHB5M2sKKzgwMzUwIDU0NzgwMDQyZDFlN2Q3NDM1NjdlNzdiNmJkYzI4MzUyZjBiY2U3NmEgbGVnYWN5LXRydW5rCis4MDM1MSA4YzA1MTdmNTBjNGU5NDkyMDM1MGU4ZGFjOGY1YTUyYzZiMjVkZjhhIHJlbGVhc2UzMS1tYWludAorODAzNTIgZGUzOTQ1MTAxYTZlMDBiNjFjNTE5MTgxZjRhMDdhMDc5ZDQzYjkyNCByZWxlYXNlMjYtbWFpbnQKKzgwMzUzIDdmYzI0YjRlNWZlZGM4ZTRiODA0NjMyYzIyMmIxMjNhYmVlODkwM2YgcHkzaworODAzNTQgODg5OWY0MDgwNDNjNDc3NTUwMTJjYjJhMmU2Yzk2NGNhYWI0MzJlMCByZWxlYXNlMzEtbWFpbnQKKzgwMzU1IDNkNzM3ZjJhYjkwMTQwZDAwODM5Y2Y0MTA5Y2VhMThjYjliY2Y0MDUgbGVnYWN5LXRydW5rCis4MDM1NiAyYzNkN2JkNzE2MzY0OGEwOTMwYjhiMTk1NjQ4Zjc1MGE3ZWQ5YzQ3IHB5M2stY2RlY2ltYWwKKzgwMzU3IDczNmNmNzUxZmY0ZjVhNTczZTJjMTEzZGMyZTM1ZDEzYThiNDA2ZDEgbGVnYWN5LXRydW5rCis4MDM1OCAwZTY0YmEzMjI5MmJhNTdmMmIyYWU4Y2VmNTRmZTc2ZjNkMzIwOWE2IHJlbGVhc2UyNi1tYWludAorODAzNTkgYjNkMjBkNDQ2NjM4OTgyZTVmNjgzZTEwZGRmMDM0NmY5MjBkOGM2OCBweTNrCis4MDM2MCBkYjcxNmE3NGI1MTdmYzVkOTJmMjVjMzA0ZjIxMWY5MGU3MjdmODE5IHJlbGVhc2UzMS1tYWludAorODAzNjEgZGQxOGNjY2I1NWIwOGQ5ZTk5Y2IzYjBmODNkMWM3ODcyMjA4NmU5MiBweTNrCis4MDM2MiA5ZGM4NjRlZjY0MjVkNWVlODJmODQyNjliOGM3OWM0NjJkMWJhYzY2IGxlZ2FjeS10cnVuaworODAzNjMgOTE3ZDZhNzRmZDRmM2E0ODRiNDE5YjI5NjIxZDUxODdmMzZmOWQxNSByZWxlYXNlMzEtbWFpbnQKKzgwMzY0IDg3Yzk4ZmI3NzhiNGZkMDJjZmNkZWFhMDJiMWM1ZjNiOThlNTUyZjQgcHkzaworODAzNjUgNWI3MjZjNjAxZTIyMTYxYTZhMGNiNjNkNzg1NGVjMmQ1MzhkYzkyZSByZWxlYXNlMjYtbWFpbnQKKzgwMzY2IDNhOGE2MTg0ZjQwYTU0ZWQ3ZWQ5OGQ5MGE4Y2M4ZmE0ZTNjMzE4OTcgcHkzaworODAzNjcgMjY5MDJkOWJlMDMzYzZjMDJhODk1NzRkMDc3YmE0NzFkZjljNGQ3YyByZWxlYXNlMzEtbWFpbnQKKzgwMzY4IGMwMTNhNzE4MjliZjIzZmM3NzEzZWI4OWFmMTY5YmNjMWFjN2ZmNTYgcHkzaworODAzNjkgNGFkOTA0NjAyNDYxYmEwY2M5MTQ0N2ExZTNkYTcxYTIwODdlN2I3YSBweTNrCis4MDM3MCA1OWFkMjQ0ZmUyOTQyOTAwNTI3OTA1ZTIxZTM2Yzk2NTU0NDA5MTcxIHB5M2sKKzgwMzcxIDg3ZDk4ODIzNWM1MThlNzJmZWMxZmE4YWEwNjFjMzFjYmJmNmFiMDMgcmVsZWFzZTMxLW1haW50Cis4MDM3MiAzMWQyOGYwNGI4MjM1NTk2YmRiMjc0YzdjYmNiMTc3NjE1ZWNkNTRjIHJlbGVhc2UzMS1tYWludAorODAzNzMgODhjN2RkM2Q3NTc5YjZjYjhiOGZiYTYyNTIxY2M1NmUzNzA1MzUxYiBweTNrLWNkZWNpbWFsCis4MDM3NCA2NmM5YTk1OWMwN2VmZTE2MDRhZGYxYmFhNjUzOTgwYmViNzQyMjE3IGxlZ2FjeS10cnVuaworODAzNzUgYjY2ZmE3NzcwYmJkZmNmY2RjYjE3MzE4ODkxN2IxNTgzODg4OThhOCBsZWdhY3ktdHJ1bmsKKzgwMzc2IDk2MTkwYjViM2Y2ZGI4OGVlMzRjNDFmNzRhMDg1NTM3NTI3MjhkMDkgcHkzay1jZGVjaW1hbAorODAzNzcgNTg5NjNhNzY1NDcxZDdmMThmYTNjNjMwYjY1Njk4NmQyZTlmYzY2ZiBhc3luY29yZS10ZXN0cy1pc3N1ZTg0OTAKKzgwMzc4IGY2MzJhMzg2MWQxMjU1YjZhNDAzM2JiNzI5NDdiZmM3NTQ4N2IwNzYgcmVsZWFzZTI2LW1haW50Cis4MDM3OSBiNDVkZGEwYjUzOGZhYWJlMWY1NTRmOGI3MmY2MjQwYzUzOTA4ZWFjIHB5M2sKKzgwMzgwIDRiN2YzYWUyMmM4ZmRmOGY5MzIzMGZlMDgxMzI3ZDcyNWIyYTRkNDMgcmVsZWFzZTMxLW1haW50Cis4MDM4MSBjNGI1MzQzMzczNWEyZjg4NWY3Y2RiM2U4MWJkZjVlMjU2ZjRjZTA0IHJlbGVhc2UzMS1tYWludAorODAzODIgZDJmYWQ0MjEwZGQ1ZmI1YjQyODg4ZDRjYjdlYmM2YWY4OTBiZmFmYiBweTNrCis4MDM4MyAxNDliYWRmNzNiY2FkMTYzMjhlMTE2N2MxOWUxMDk1ZWEzOGQxYzAwIHJlbGVhc2UzMS1tYWludAorODAzODQgMmZlNDczOGVlYjIzNjE5ZTk4Y2U4ZjAwMDE0ZTI0YjllZGRlMjdhYiBweTNrCis4MDM4NSBiMDVkMDI1YmMwZGY2YWMwYmM3NWEyZTBiZWQ4MTEzZTM1ZGFiYzYyIHJlbGVhc2UzMS1tYWludAorODAzODYgYmExMmY5MjEzNGJhNDkxOTVlMDFlNTQ2ZjlhN2VjNjFiZTIyYWI2NSBhc3luY29yZS10ZXN0cy1pc3N1ZTg0OTAKKzgwMzg4IGE4ZTA5M2EyNDA5NDkyNDliMTRkMGMxMzkzYTMwNjJiZjk5MDNiYWQgbGVnYWN5LXRydW5rCis4MDM4OSBlZGM3ZjMzMDUxMDUwZTRmMzc2YTg4YjFmMWQxMjdiYmM3MWIzNzU0IHJlbGVhc2UyNi1tYWludAorODAzOTAgNDczODAxYWU5ZThlZDc4OTMwNTNhYTFkNDMxNWUyNWRiYjA1ODRmMyBweTNrCis4MDM5MSA1NDUyNmVlYzhiYzZlNjQ3MDY2MWU4YmNkOGIyNTZkODkyZGIyZjJlIHJlbGVhc2UzMS1tYWludAorODAzOTIgYzlhMzJlZGQyYmE3Yzg5NDI2MTU2YWU1ODI2NTQ2YzFhY2QyNDgwNCBsZWdhY3ktdHJ1bmsKKzgwMzkzIDhkZDEyNDEyMzgwMTBjODUwNmRkNzFkMDI5Mjg5NTg1NmYyMWU0ZDggcHkzay1qaXQKKzgwMzk0IDFkMThkNzNmMjliNTNkMTc5YTY1MDllOWRmMTY5MTMxNmQzMDU1NjEgcHkzaworODAzOTUgOTIyOGM2YWM2Y2M2NzhlM2I4NmU2Mjk3Mzc5OTlhYzQ0YzkwZWFiZSBweTNrLWNkZWNpbWFsCis4MDM5NiA1YTUyNGM2ZDRlODM1MjM0Njk5NDE1OTg2NDkxODllZmI0NDZhMWY5IGxlZ2FjeS10cnVuaworODAzOTcgM2RkNjA2MzUzYWI0M2I5NjAzYzE1MGZlYjFlZWRiZmZjNjI4Y2E2ZCBsZWdhY3ktdHJ1bmsKKzgwMzk4IDA1MmQ0ODUxNWM3NjJmZTc3YzMzN2Q0ODg3MjM3MTNkNDI1NWJiZmIgcHkzay1jZGVjaW1hbAorODAzOTkgYjRlZDE3MjdkZjc0Y2MwY2MzYzBhMWMyNjU4ODk3N2E5MGY2ZjNjZSBweTNrLWNkZWNpbWFsCis4MDQwMSA1NjI5Njc4ODFkYzUyNWRlYmMyYTAxYmZhNDdkM2NlM2NmMGRiZWIzIHB5M2sKKzgwNDAyIGU2NTY0ZGEwMTcxOGE1YjI1ZmQ0OTcxOWVmYzhmNzI4NjJiZmMyMDMgcHkzaworODA0MDMgZDJjNTEyZDBlY2I2MmEzNDhjMmU5YjIzNjczM2RjY2FlMjNjZTgyZiByZWxlYXNlMzEtbWFpbnQKKzgwNDA0IDg2ZmFkYWViY2Y2NmQzYTAxMDc3MDI2OWYzZDJhYThkYWJkYjFmZjYgcHkzaworODA0MDUgYzZiNGY0ZjJiOWE4YjcwNDA2YjdlMDkzNDg1YzU3NTVmMWRlZTc0ZSByZWxlYXNlMzEtbWFpbnQKKzgwNDA4IDIyNTgyNTBjMWZiYjNlN2MxNWYyYjM1NTc5NTI3Y2ZkMmFhOTgzMmUgcHkzaworODA0MDkgZDQyNmJiZmQ1YmQ3OTJlYjkxODNmNTNiNzM4NzQ0N2RhN2U2MzM2NiBweTNrCis4MDQxMCBmZmY4MWQ3MjYyOGUzZmZhMTBiNWY4NDAyZTViMDAxYzJmYzNiOWIxIHJlbGVhc2UzMS1tYWludAorODA0MTEgZTc2MDZjMTU0MWY4YjQ5ZjIwYmEwOTU4ZWVjMDNiN2UwNjMyNDRlOSBsZWdhY3ktdHJ1bmsKKzgwNDEyIGEwNTllYTk2NmI4Y2ZkMTU3OGYyZTM0ZTExMDM1MGI4MTNiNjNiNzMgbGVnYWN5LXRydW5rCis4MDQxMyA4NDI4ZWFhMmQzYWQxMDFjYTNiMjRmYzVlNGZmNmIxYjIyMGRlNDFmIHB5M2sKKzgwNDE0IDgxZWYxZTg0NTJmYjA1OWQ5MTVhYjc1MWFkNTA1M2E5ZWUzMzkzZWEgcmVsZWFzZTMxLW1haW50Cis4MDQxNSA2MTJlODZhYjA1ZjEzMWI2YTAwMjk3ODhhNzNkNjk1Zjk4MTA1MGNhIGFzeW5jb3JlLXRlc3RzLWlzc3VlODQ5MAorODA0MTYgNTJjZDdlMDQwZmVmMGQxNjJiODc3MDdiNGFmYjdiZTk0ZGU3ZTM1NiBweTNrCis4MDQxNyA2MTBhOGVmYTg4ZGI2NTYxYjM3OGI3MjFmM2Q3ZGY5Yzc4ZDdlZjc5IHJlbGVhc2UzMS1tYWludAorODA0MTkgMGVjMTZkODMxOTkwNTg0ZmIzMjdlMGE4ODU5YzgyNDZjMDM3NDcyZSByZWxlYXNlMjYtbWFpbnQKKzgwNDIwIGZjOTc3ODRlNWNjMjFmMjllNTY2YjYxY2IxMzBjNzg3Y2IxNTBlNzIgcmVsZWFzZTMxLW1haW50Cis4MDQyMSBkYzhjOGQ1NDUwNGUxODQzNTczODBhY2YxNWVjNTg3YTMxYWIyY2MwIHB5M2sKKzgwNDIyIDY3YTYwNDgyOWM5NzBjN2JiNjFhYTQ5ODQyMTJhNDE2NWZiZGQ0OGIgcmVsZWFzZTMxLW1haW50Cis4MDQyMyAyYzMxZGFjNjk0ZmYwNDNjOGE3YzhjZTUxMzcwNDUxMWUwMmY3ODlmIGxlZ2FjeS10cnVuaworODA0MjQgZTc5YTZjODAyOTM0MTg5ZjY5YTc3M2ZiYjQzNWQyY2RhZjVlMjUzZiBweTNrCis4MDQyNSA3NGU0OWZiNWJhMTJiMmUzYWMzOWI4ZWI0Njg5YzQyMzFmZGNjNTdmIHJlbGVhc2UyNi1tYWludAorODA0MjYgODFhYTAwMjg0YmQyMTE5MDBjZWYwYzkwNjlmNjUxZjcyNWY1YjRiYSBweTNrCis4MDQyNyA1NGU1YWIyOWIzMGJmZjQzNjBmMmJmOTc1YjkxMDc0ZmYzZTU2MGFkIHJlbGVhc2UzMS1tYWludAorODA0MjggZDdjNzgzZWY0NTQ4NmZlYjg0Nzg5MGI0NzY3YTQ1NGE2MmM4NGM1YiBsZWdhY3ktdHJ1bmsKKzgwNDI5IDc2OTE4OTllMTg1ZjI3NzEzNjBlNmY2N2RiYzZlOThjNzkwMDMwOGIgcHkzaworODA0MzAgOTVjNWUwOTRiMzgwNjRkNTRlM2NlZTYyNDQ5MTYwZDdiMGI5ZTEwZiByZWxlYXNlMzEtbWFpbnQKKzgwNDMxIDA2OGEyZTcxNTdhY2VjYmQ2YzMxOTJiMjA4YWQ0Y2IwZmMxN2FjOWIgcmVsZWFzZTI2LW1haW50Cis4MDQzMiBjYTBjYmFjN2I4OTgxY2RmMGFhMzExYWM2ZTk4OGRkNWUzYjdmZDA4IGxlZ2FjeS10cnVuaworODA0MzMgNTg3ZGYwZDc0Nzg1MzNhOGQwOWZkOGJjZDA1NTMzYjlkYWYzMDRhNSBsZWdhY3ktdHJ1bmsKKzgwNDM0IDY3MmFkZmM1ZGI0Nzk5YmJjNzQ4MzY1YmQ4MjQ1Y2YwZjFkNDM2MGUgbGVnYWN5LXRydW5rCis4MDQzNSA2NWQ2YzdiYzVkNWE0NjQ3YjdiNmMwYzQ0NmEzZDA2Mjg0MzNhYzA3IHJlbGVhc2UyNi1tYWludAorODA0MzYgODA4MTBkODIzMThmZDA3M2E0OWYyMDQ2MDgxYThmZjg5YzA2NGI2ZSBweTNrCis4MDQzNyBkODFlZmYxMThkODE4ZWY2MWY4MjNkOWFjOTY1YWNhODMzMDI4ODA5IHJlbGVhc2UzMS1tYWludAorODA0MzggNWU2OTUxOWM0ZTM3ZGIyZTE4YjYwNDQ0Njc2NjY2M2E5NTg1MGU1NSByZWxlYXNlMjYtbWFpbnQKKzgwNDM5IDNiODM0MWQwNTIxNmVjODhmOTU4YTZkNmNiODc3NTlkYWYwZTViYzcgbGVnYWN5LXRydW5rCis4MDQ0MCAyYTc2OGVhMDYwMjMwZTVjODRhODE0ZThiMTk2Yjc4OWFlMjQ5NzAwIHJlbGVhc2UyNi1tYWludAorODA0NDEgNjQ0NjFmNjhhMTBlMDFhYmZhYjFmNTJkNzMzYzkyNzVlYmJjZjg2MSBweTNrCis4MDQ0MiA5MWY5MTY4YWFkZDBlMzNmNDgyYmM5NTNiNjFiNTNmMzkxYzI0YWEzIHJlbGVhc2UzMS1tYWludAorODA0NDMgZjRmZTUzZjg2NjI3NTY1MmVjMTg2NjFhOWMzYmNjZDEyMjg5OGFlZCBsZWdhY3ktdHJ1bmsKKzgwNDQ0IGU5ZDg4OGMwOGJmOGExNmE2N2NkNDFmNWZjODNkMGI4ZTBlNjc3MTUgcHkzaworODA0NDUgYzM5YWNiYjYzZWMzZjUxYzlkY2YzYWUwMTljYTE3MzJiN2M2MzVkMCBsZWdhY3ktdHJ1bmsKKzgwNDQ2IDI0ZmY4NzQwZTQ4MTBiYzc2MjVlYThmNjk3MTJhNDhlMDExNzE1NjQgcmVsZWFzZTI2LW1haW50Cis4MDQ0NyAzYTlhMjJkN2IyMmU4MTI2ZWMzY2JlOTUxNDI4Y2YwNTI5OTAwNTE5IHB5M2sKKzgwNDQ4IDdiZDM4NDcyZWEyMTIyNTEwM2VmNGYxMTg3YzIwNDk2YzI5MDdmY2UgcmVsZWFzZTMxLW1haW50Cis4MDQ0OSBlNGMxZWJjYjQ2MDQ4ZTE3ZmNmMzdhOWE2ZGFiOGFiZTJiMDIwMjUwIHB5M2sKKzgwNDUwIDc5MTI4ZWZlOGE5OTNhMWM2N2E1NTcxMDc0MmJjMGQ2YWIzNzI4MzIgcHkzaworODA0NTEgYTA5ZDdmNDE0Y2QxNWMxNjI3ZDYxMTI2MzlhZWEyMmYzZTY1ZTA2MSBsZWdhY3ktdHJ1bmsKKzgwNDUyIDc2YTA1MmVlZGVlNjdmNDE5NWMxYmVkMjNmOGFlODllNzg5ZWNlYzggbGVnYWN5LXRydW5rCis4MDQ1MyBjZTQ5MTZjYTA2ZGQwMzdjYTEyMjAxZTU4YjkzNmZkZGZkNDE3YTcyIHJlbGVhc2UyNi1tYWludAorODA0NTQgYTUxYWQ4ZjA5YjZmN2YxNmYxNDkxMzQ0NTNjNDM2YTY4NTZjNGNmZSBweTNrCis4MDQ1NSA1ZWQzNGYzZjZjMzU1MWMyNTI1YmE5MTI2NzllMzI1OGM2OTg5ODU1IHJlbGVhc2UzMS1tYWludAorODA0NTYgYTkxOTYxMTlkMzM1YjJlMGMyMWNmMzE2NWEwMDhlMGFiZWU2MDc3OSBweTNrCis4MDQ1NyAwZmY4YWRkZTYwOWNmOWUxNzdlOGQ1MGFiYmYwMjFlNmE0ZjFjNTE1IHJlbGVhc2UzMS1tYWludAorODA0NTggNmFmZjliMGEyODhkNWY0NTUwNDQyMDZhMjU2ODIxYWU5MjQ0MGM0NiBsZWdhY3ktdHJ1bmsKKzgwNDU5IDdlMjIyOTg3NzQ1OWZlMzUyMjU4M2NlMjhmOTIyZmQ5ZDc2Nzk1MjkgcHkzaworODA0NjAgZDVlY2U0OGUxNjA2ZGZlZTYyYjA2OThlNzJmMjI3MDYwMDQ4OTI5ZiBsZWdhY3ktdHJ1bmsKKzgwNDYxIDkyMGYzNDEwNmMzNDRjNmY5MmUwN2U4MzU1OWQ0NWI1NzdlYmY2MDMgbGVnYWN5LXRydW5rCis4MDQ2MiA0Njk4OWNjYzY1Mjk1OWNkZmZmN2MxY2U2N2Y5M2JiY2NmYmYwMDZmIHJlbGVhc2UyNi1tYWludAorODA0NjMgMGY4N2JlNjMzM2RhMzcwMDhmZTExMmI2NzZhYTdlYzY2ODFjYzJmZiBweTNrCis4MDQ2NCBkMDUzYmIzZDc4NDJjYmExZmM0NTIzMDJjOTMzNjBhYWQ3ZjM5OWZlIHJlbGVhc2UzMS1tYWludAorODA0NjUgZWFmNTYyZjU4MDdkZTE5MWQ0MTE3M2E4YTUxYjc1MzY1MWFlMTZmMyBsZWdhY3ktdHJ1bmsKKzgwNDY2IDA2MzIyYWJhODRmYWY1NzdiMjI1ZTZlYzc0ZGYzNjExNzU4Nzg3NDQgbGVnYWN5LXRydW5rCis4MDQ2NyA5ODA4ZGI5Nzk4NTQxMTQ5MGE1MTU2MDA2NmFhNWE2YzBmZDllNjE5IGxlZ2FjeS10cnVuaworODA0NjggYmViY2MyMjRjN2MyYzNiZTcyOTc3ODhjZjM0NDVmZWYyM2Y1ZDgwYiBsZWdhY3ktdHJ1bmsKKzgwNDY5IDVlMmQ2MTc1MWQ5ODA5ZjMyNTVhYmQ1MDYxYTM1Y2ZmZjBhNDgxZmEgbGVnYWN5LXRydW5rCis4MDQ3MCAwMzYzYzY5N2UwZGEzMDgwOGM4MDkxYWFlYTRmMzFmZDMyYWUxZjU3IGxlZ2FjeS10cnVuaworODA0NzEgYzJmZmQyMGQ2Y2Y4OTZlOWZjMGE2NGNjYzIwY2U5ZGQ5N2RmODk0YSByZWxlYXNlMjYtbWFpbnQKKzgwNDcyIGVkZTE2YTI3OTJiNGM4NTk3MzNmZTM3YTk0ZDg5OWY3MGYyYzBkZTEgcHkzaworODA0NzMgMDNmMzFmN2U3NjI3NmFkYjkzMjQ0NzhhNTAzZDUxMDRiNGU2YzEyYSByZWxlYXNlMzEtbWFpbnQKKzgwNDc0IGQyM2Y2MjZhNzM3OTkxYWEyNDhiYjE1MDBjZTRiZTdmYzg5Yzg4ZWEgcHkzaworODA0NzUgZmUwYzQ3ZGQ1Zjg0ZjE0MGE2NzdiN2FmMGE5OTY4NDQ2ZTBiMTVmZSBweTNrCis4MDQ3NiA2ZmIzODQ3ZDM5ZWYzOWEwNTc4NTJmYzFjYzFhMmI1MmQ5ZmM0OTEwIGxlZ2FjeS10cnVuaworODA0NzcgYzM2YzgzNmZmNDY1MTI2NWNlMzRhZWJjZWQ3YzYzOTAxYmM4ZTZiZSBweTNrCis4MDQ3OCBiOWYyMTAyYWQ1ZjAyNjg1ZjZjZTZmM2Q0YTdmNGQ0NDhiMmYzMTM3IHB5M2sKKzgwNDc5IGVkZmQwZTFiOTc1NGQ3ZTVkNTkyMTdjNzRlMDJmNjVlNDQ1ODMwNWYgcHkzaworODA0ODAgNWFjMGFhZTI4ZjRjMDIyZGUyYTdiYmZlOWVkZDUxOTNmMTc4NTgyZSBsZWdhY3ktdHJ1bmsKKzgwNDgxIDk2Y2E1MGNiMjYxMzU5M2FmYjIzZDdlYTgxYjFkNTlhMTU2YmYwODggcHkzaworODA0ODIgZDgwNGRkOTU3MzdjM2FmM2UxZThkZTZiYzU3YWYwMjcxZTMyODU2MSByZWxlYXNlMjYtbWFpbnQKKzgwNDgzIGMxZmI3ZDVlZTQzNzNiOTRhOTExY2QzZGIwODRkMjRmZDBhZDg4OWMgcHkzaworODA0ODQgNWYxOTYyMjIwNzkyODgwOWNiYjY0NzI3NzM2NTFhMDNkMDJhOTU2NiBsZWdhY3ktdHJ1bmsKKzgwNDg1IGU5ODI2NmM1MWEwZTA4ZTFhZWRjMTFkZThkNWU4NGQyNTJiNDc4ZWYgcHkzaworODA0ODYgZWE0M2Y3ZjZlODRjZjk1ZjdjOTQ1N2JjYmExMWU4MzNiYWJkYTRjNCByZWxlYXNlMjYtbWFpbnQKKzgwNDg3IGY1MjNlNDBkZjljNTY4ZjdiZDc0MWNiZmM2ZDk3ZjFlZWRmMDljNjQgcHkzaworODA0ODggYzAyMTQ0YjFjOThjYTBhMWYyNTc2YmQ0ZGU4ZWZiNjY3OGM2NjdjOCByZWxlYXNlMjYtbWFpbnQKKzgwNDg5IDY1NDhjMjM2NzZhNjg3YWEyZGVjYTNmZjFmZWRlM2EyODU1OTk1ZTQgcHkzaworODA0OTAgZWYwYTg5ODFjMzcwMzFjMGQ1ZjQwODU3YTk5YzJlZjk1YmRlNWYwMiByZWxlYXNlMzEtbWFpbnQKKzgwNDkxIDkxNjUyMzJlNmQxYWU0NGM3MDNjNmM3MWM1ODYwMDFlMjMwMmNiMDIgcmVsZWFzZTMxLW1haW50Cis4MDQ5MiA4YzcxNzkxMjU4MDMyNGU3ZmQxMTM1YTliNjI3M2U0MzYwMDQ5ZjRiIGxlZ2FjeS10cnVuaworODA0OTMgMmEwMzBjMWNlOTcyZDU4NzAzNzAzYTk2ZjY0ZDg2MzViYWY2Y2JlMSBweTNrCis4MDQ5NCBiNzE4MjYyNDlmYmUxM2M3YTM0ZGZjMWRhNGU1ZjBlZmFmNzNiYzk0IHJlbGVhc2UzMS1tYWludAorODA0OTUgYWE2ODU0YTZmNmQxZDA4NGFlMGI1ZjdmNjE0NWI4NGJkZWM1YTJmNCByZWxlYXNlMzEtbWFpbnQKKzgwNDk2IGQyYTRlOTZiNTRhNmNmZTU3OWNkNDI1MTM2MGMxMjNhMThmODk0ZTMgbGVnYWN5LXRydW5rCis4MDQ5NyBhYjhmZTk0NzczMjM0M2QyZTQ3N2JhNTY2NWU0ZGRmNGIzYmQyNWNlIHB5M2sKKzgwNTAxIGVmZDcwNTUzYTA5ODkyMzJmZjFmNmI0N2JkZjNiNTNjMDBmNTdjNmYgcHkzaworODA1MDIgYzAzYTNjNmE0NTYyNjBiNmY4YzA1NWQ5ZjQxZDE0YTk1Y2Q4ODg5YyBweTNrCis4MDUwMyBkNjNiYjM1ZGUyZjAwYWEzODNiMGUzYTRiNGM5OWMyMzE4NDk4MjAxIGxlZ2FjeS10cnVuaworODA1MDQgMDQ4ZjZhOTJiZGUzYTZiOGQ3NTNiMGMxYTFjODQ1ZTk0YTg3MzM1MSByZWxlYXNlMjYtbWFpbnQKKzgwNTA1IDEwZGFmNjM0ZTI0ZjQ4MjY5OGFjZjc5NGU3NDZlZGVkMzM5NjY0NWMgcHkzaworODA1MDYgY2YyMDRhNzM3ODNkODVkYmMwNGRiNGJjOGU1OWIxZWFlNDU2N2IzNyByZWxlYXNlMzEtbWFpbnQKKzgwNTA3IDdmYzIxMWRmM2Q1YjIwNTA0YTRkYWIyMmRmOWYxZTY4NWUyMjhhY2IgbGVnYWN5LXRydW5rCis4MDUwOCA4NjAwNzM1MDVhY2EzMjlkNDBiYzlmYTBlYmUxMTQzMGRhYjAzYjlkIHJlbGVhc2UyNi1tYWludAorODA1MDkgM2ZlOGNmNzg3MzUzMDM3NDg0ZjNkNmNkMTBkNmIwYTk1NmZhYTU2ZCBweTNrCis4MDUxMCBiODc3ZDJkMDRjMTQ2NzViMTIwZTg0ZmRiNDcxN2JiYjAwNmQ2MjU5IHJlbGVhc2UzMS1tYWludAorODA1MTIgMzA5MDM1YzIyZGNkY2NmYjZiY2RlYzZiMDYyNWFkNWYzZmIwZjQ4MSBsZWdhY3ktdHJ1bmsKKzgwNTE1IDNiMjQ0ZWIyMGZhMTNiMThmMTUxM2E0YTcwMWJjZmUzZmRmMDk4ODIgcHkzaworODA1MTYgZDU1OTBhOTg3Y2IwNmUwYzIxNDEzNDczNWM5NTg0MjNhNjQ0YzlmYSByZWxlYXNlMzEtbWFpbnQKKzgwNTE3IGRkNDY2NDk0NTQ2ZGRlMzcyNmFjNWQ4NGZjMmQ2ZGQ0ZDRkZWEwMjkgcHkzaworODA1MTggMTFjOWFkYWVmOTZiMGJjMzYxYWQ5NWFjNmM4YmQwNzhjNjM5NTBiNCByZWxlYXNlMzEtbWFpbnQKKzgwNTE5IDE1NzFmMDlmNGEyNzc1ZGQzODZhNjRlMDQ0NjYyMWVlMjFkZjczZTcgbGVnYWN5LXRydW5rCis4MDUyMCA3ODRjZmJhYTIyOWYxNjBjZGI2YTBmZmFlOTkzNmY2ZmQ2NDM1YmU4IHB5M2sKKzgwNTIxIDgzYjkzMDM2ZWMzZDdjNjViZGEzOTY3YzM0NDdjNzc2MTM1MTVlN2EgcHkzaworODA1MjIgMThiMmRiYmJjNWIyNTIzNzI1YzAyYThiMWUwMGRkMmUyZmRlYmU3YyBsZWdhY3ktdHJ1bmsKKzgwNTIzIGMwN2QyZTVhY2Y2NWMxZjM2YWVkNjgwNGJlYjUxNzE1MDllNGMwMjggcmVsZWFzZTI2LW1haW50Cis4MDUyNCAyMmRlNmM3MWNkYjQxNTIxNmVkZjdmM2YzMzQ4YjFkYzFjMTZiNTU0IHB5M2sKKzgwNTI1IDQ2YWFlNDA2NzQyZDlmMTYzZmJjYjRiNGMzZGZjMjdkNTEwOGEzNTMgcmVsZWFzZTMxLW1haW50Cis4MDUyNiA3MTIzMDE1MDY3MzBkNzQyMTNmMGQ0ZDQyZDBjODUzODUzMzZlZDAxIGxlZ2FjeS10cnVuaworODA1MjcgNmRhOWVhZmIxZGFhZGJlZGJjMDMwZDE3NWNjZTBhNmIwNDE0NjFhZSByZWxlYXNlMjYtbWFpbnQKKzgwNTI4IGUyNWM3OGE4MmEwODNiOGZiOTk2ZTFlNTE4ZWNiMjU5NmUyNWVmM2MgcHkzaworODA1MjkgZDQ0N2M2MGZiNGQ4ODZjNGNkNzczZThhYzUwMzM4ZjI0NWExNTEwNyBsZWdhY3ktdHJ1bmsKKzgwNTMwIDFlMWIyMzUxY2YxMmZiNDU4MmM5MzdlYTJjN2ZlOTk4YzRlZTljMzYgcmVsZWFzZTMxLW1haW50Cis4MDUzMSBmZmU5OWY1MjJkODYzYmNhOWE0MWJhZDk3NjJmYzJhZTVjNDA0MWM3IHJlbGVhc2UyNi1tYWludAorODA1MzIgZDYyNzA4YWUyNmE1NTM2YzBhMDU3Nzc1MzNlZDIzMzJhYjAyMmZiNCBweTNrCis4MDUzMyBjODY5NDA4ZDRkM2VkZGMxODQwOTY0ZjE3YTIwMzdiZDViYjRjYzY0IHJlbGVhc2UzMS1tYWludAorODA1MzQgNjFhZTY2NGRlNTZiYTA1YTE3NDk2MjU2MDc2YmY5YThlMDAyMjczOCBsZWdhY3ktdHJ1bmsKKzgwNTM1IDk2OWVmNWViODBjNDM1MzI3MzcwNzY0YmE4ZDkwMmQwNTgwZTY5NmEgcmVsZWFzZTI2LW1haW50Cis4MDUzNiBmMTBhMzc4NzhkODQyZDI3MjE5YWVmNmYxYTE1ZTQyNDIxMWJhNmMwIHB5M2sKKzgwNTM3IDcxMTUyY2U3MDFlYTVkNDJmODY3NzViOGZhODVhNDlhMmIwMWFjMTYgcmVsZWFzZTMxLW1haW50Cis4MDUzOCA1YzM4MmJmYzAxNWE2NjRkYjk4ZThmZDE3Njc2MjYwNWZkODJmNDViIHJlbGVhc2UyNi1tYWludAorODA1MzkgNmE5MGRjOTY3ZmVkMDBjMTM3NmI4MDFiZDFkYmVkODJkNjNhYmIzZSByZWxlYXNlMzEtbWFpbnQKKzgwNTQwIDQ0OGVmOTAwMDgxY2UyYzg4NmMzODZmODdjOWY5M2FjYjg1MDRhN2YgbGVnYWN5LXRydW5rCis4MDU0MSBlZWY0Yjk1NGQ2NDQzOTBlNDdmYTliMmMyNWQzY2FjOGRiN2M0ZTNhIHJlbGVhc2UyNi1tYWludAorODA1NDIgY2FmZWY3NDU0ZGY5ZWNhZTY5Y2IxZTM5ZjUzYWMzY2YyZDZhYmZjYyBweTNrCis4MDU0MyAxNjRiM2FjYWQ5ZGFjYTEzZTAwZjlkMDllMmIyOGE3ZWUzZDJkNWRjIHJlbGVhc2UzMS1tYWludAorODA1NDQgYWRjMDc5N2JhOTIxMmYzMWVkZDcxNzJmOTg4Y2FiZDNlMzk0NTc3YSBsZWdhY3ktdHJ1bmsKKzgwNTQ1IDM2OTFkNzViMDYyNjM4NDE2NGVkODMzMjEyNjg3NTQwMjdiNWNlMzAgcHkzaworODA1NDYgNmVjYjNjODNmZTgxYmYwNTYyMWQxZWRlMzQ0NDllNzQyZDM4MzljOCBsZWdhY3ktdHJ1bmsKKzgwNTQ3IDE3Y2MyZjUzMjU2MzEzYWI5ZDUzNDhlMDAyYjg4YjE3ZGQwMTMxZmQgbGVnYWN5LXRydW5rCis4MDU0OCBjY2IxZDVlZjA0ZDZhOTIyY2RmM2M1ODc5YzE1NzQ2MzIzMWE3Zjg5IGxlZ2FjeS10cnVuaworODA1NDkgYWU2ZjU4NjViMzg2MDQxZDFkOGIwZjRhMzQ4YTdkM2I2MGY0ZjEzNiBsZWdhY3ktdHJ1bmsKKzgwNTUwIDFhYjI0OTQxYzk5NmFmZTk3MDllZTQ3NGNiMjFkMTFmOGVhZDY4ZGEgcHkzaworODA1NTEgM2I2OTc5MDU1ZjVhZTE4OTQ3NTNiNTE5NTc0OThhZjNjYThhMzVmMSBweTNrCis4MDU1MiA2ZDlkODU0NTg2MWVlYTRiNGY5M2U2MTIzOGVhYmE5NDljMmE4NjVhIGxlZ2FjeS10cnVuaworODA1NTMgMTM3OTE2NTQzZWZhZTc4ODI2YTUzZjBkNDMyOTkyMTc5NzRhNWNiYiBsZWdhY3ktdHJ1bmsKKzgwNTU0IGM3YTU4MjJiZjI5NDg3MzYzOGUyNzkxZmQ1NDMzMTg2MWQzMTAxYTkgbGVnYWN5LXRydW5rCis4MDU1NSAwN2NlNWFmMzE3ZWUyYjNiZTI5NmM4MWY0MTM2NGRiOWZkNzExOGQzIGxlZ2FjeS10cnVuaworODA1NTYgZmIxMGVmMGVmYTIzNTUyYmU3ZWZkYjkzMjc5NjBjNmU2MGVlNWQ3NyBsZWdhY3ktdHJ1bmsKKzgwNTU3IGZkM2FiZjgyYWM5NjA1Y2EyOGFjYzhhMDUxZmQzMzIzZmUyZDJlODMgbGVnYWN5LXRydW5rCis4MDU1OCAzMTZiNTcwMTdkMGYyNTc0YzIwMGI5ZmQwNDcxOGJjZWFhYjJmZmY2IHJlbGVhc2UyNi1tYWludAorODA1NTkgOGM2NDY5NjdiYTZiN2YzOTQ4NDFlNjMwNmY2NzQ1OGNmZjMyYjk3ZSBweTNrCis4MDU2MCA4Mjc5MjBjNTQ2YWY1ODA0ZjY1N2NiMmQzMmNkZjlhMGQ0YzhhOWM5IHJlbGVhc2UzMS1tYWludAorODA1NjEgNGE2OWQzMmExN2I5MDc2ZTcyNjA4N2M3MmQzOTE2YzU0MmQxMzM1MiBsZWdhY3ktdHJ1bmsKKzgwNTYyIDQ1NzIxYjljYTIyMDQxNDQ1NDVlNzkwNTBjNmVlMGE5ZTBhZDBkMTMgcHkzaworODA1NjMgODFkNzAzM2Q5NWEzNWU0M2E4MDExYmU4NzEzN2M2MjRkNGE5YWEyMSByZWxlYXNlMjYtbWFpbnQKKzgwNTY0IGI4OGFhMTNjZWFmMjU0MWE0NmFkMTQ4NzQ5ODc0NWZlOGUzZjYzMzYgbGVnYWN5LXRydW5rCis4MDU2NSA5NjdmN2JjMmRjYzg2MzU0MWYxMmQ3NmEzYWUzYjkwNGJjZDcyYTEwIGxlZ2FjeS10cnVuaworODA1NjYgODJkNDg3MjQxMzA2N2I5NjA0NDkzMWY1NGQ2MjBlNTIyYjdkNTA0MCBsZWdhY3ktdHJ1bmsKKzgwNTY3IGIwZjM0MmFiNTA5NTE4YTZjMDI1NmFiMWQ1NjA4M2ViODZjMjRlZTMgcmVsZWFzZTMxLW1haW50Cis4MDU2OCBmMDkwYmQ3MmFjZDgyYTYxMDQxMTlhZjYwZWEwOGY0ODk3MDczZmEwIGxlZ2FjeS10cnVuaworODA1NjkgMGRjMjExNWY2YmJlYWRmMDg3MjIyZDNiNTkyZGMzZTdhZDJlZTlkMiBsZWdhY3ktdHJ1bmsKKzgwNTcwIGJhZWZkN2I0MjVmMTc4MWNiNTE5ZWMzOTU5NzUyOGIyMGI2OGM2ZWEgbGVnYWN5LXRydW5rCis4MDU3MSAzYTA0ODQyMDAwMzQzOGY1NzZkMjA4NzhiMjIwOTZlYjIyZDQxNjUxIGxlZ2FjeS10cnVuaworODA1NzQgZTg0YTRjZGU3OWM3Y2EwYjYxM2IyYjQ3MzQ2ODhiOWY1MWQwYjcwNCBsZWdhY3ktdHJ1bmsKKzgwNTc1IGVjNzcxNWVhMmM3NTEyYmVkYzIyMzQ1NTI2OGMwMjc3NmYyYmI0ZDAgcmVsZWFzZTI2LW1haW50Cis4MDU3NiA2NWJlMWU2NzhlNjNlMjY4YzdmNmQwMzQxMjkwNzhjZmI2YjU3YTk1IHB5M2sKKzgwNTc3IGQ3NGVkN2UyMWU2MjkxYTlmZmVjOWEwYWQxOThhMjFiMDhkZWU0MDggcmVsZWFzZTMxLW1haW50Cis4MDU3OCA1MWUzMGI5MTZmYzQ5N2NmZWJhZWNlYTVkNjllYTdjZDdiODE5YmM4IGxlZ2FjeS10cnVuaworODA1NzkgMjIwZDQ3NjdmYTk3ODFiYmQ1Njk3OWVhZDE3ODMyM2RlZGRhMjE4OSBsZWdhY3ktdHJ1bmsKKzgwNTgwIDBiNWM0OGM3NjIyNDNlN2ZhYzU5NTdhMWJlYWQ3ZmJjYzU3NGE5YjUgbGVnYWN5LXRydW5rCis4MDU4MSBjOWU0MGNlZGM4YmMyNWZlZmNkOTZmMWJhZDhiYzc5ODc3MWY2NzM1IGxlZ2FjeS10cnVuaworODA1ODIgZmYxYTU5M2Y4ZDIzYzFmNzc4ODJjZGRhM2NlZWNkNDQxNTUyMTdmMyBweTNrCis4MDU4MyA1NzU0OGNjZTFlYTA1YWI2MTQ0NGE2N2Q0ZTNjNDg4ODdiZjhkZTQ2IGxlZ2FjeS10cnVuaworODA1ODQgMWUxY2M2NzJlYmRkMjc2NWYzYThmZDlmODFhYWU4ZDc5MGEyNTNlYSByZWxlYXNlMjYtbWFpbnQKKzgwNTg1IDA0YTE4ZTU5Y2MyYzQwNGQwMmQ0M2YwMzAyOTM0NGQyNTgzNDFmODMgcHkzaworODA1ODYgY2Q4OGY1ZmUyZDA2NTIzMDBkOTM4M2JlODZlMjg4NGM4ZGZkYTQ2MyByZWxlYXNlMzEtbWFpbnQKKzgwNTg3IGZkN2VjNjA3ZTEwMWE1OTQzYzJkNDlhMTcxOThlZjRhMzlmYzhlNzAgcHkzaworODA1ODggNjk1MGVhYjUxZmZlNjE3ZGEwMTM0Mjg3YzNhOGM1ZDA1MzBkOTMxYyByZWxlYXNlMzEtbWFpbnQKKzgwNTg5IGE0Mzc3NjU1M2FiNTMwNzgzY2I0Y2RjMTY3NzllZmNkNWU4ZjRiY2UgcHkzaworODA1OTAgMDVmZTEzN2I3ZWZmMDM1Njg2OGM1OTAwYzNhZDEwMzg0ODNlNDhmYSByZWxlYXNlMzEtbWFpbnQKKzgwNTkxIDcyMTY5MmVkNGE3Y2E5OWU5ZDk5ZGRlN2ExMWQ3Mzk3NmM5ODdiZTEgbGVnYWN5LXRydW5rCis4MDU5MiA5N2NlNmNlNmEyODk0OGJjNmY0NTVjODgzYmI2ZjZhMzU3MTFmNWY4IGxlZ2FjeS10cnVuaworODA1OTMgMGY2NWZiZTY2ZTNhM2JmOWE2OGFjNDg5MzY4YzYxOTYwODdhYzc0NCByZWxlYXNlMjYtbWFpbnQKKzgwNTk0IDU5YjJhZGI1MmIxNmIxODkzMjM0NjRkMjBmMjdkM2JmYzc1MzRjOTAgcHkzaworODA1OTUgZTdmMDVkYjVmM2IwMzI3NDQ2OGM4ZmVhZmJjNjYyMjJjMjNiYmIzNCByZWxlYXNlMzEtbWFpbnQKKzgwNTk2IDgwN2ZjYWM0ZjE3YjUzYTQ2YTYzYTFiMjNjMDUyMWEyZmRkZGM4OTUgbGVnYWN5LXRydW5rCis4MDU5NyBlYTgzYTYxZjY0MzBlMWE1ZTNiN2E2MGZlMzdmZTg4ZjVmMDIzOGQxIHJlbGVhc2UyNi1tYWludAorODA1OTggMGYzZjhiOWViNmZmOGRiMWRhOTc2MGM4OGVhZjM5ZDIyN2E4YzdiOSBweTNrCis4MDU5OSAxZDJiMzIyYzQ2YmUzNDVkMGZmYTdiMWI4ZTJjNzg0ODBmZTkzNmIwIHJlbGVhc2UzMS1tYWludAorODA2MDAgNDkzYmI0NTg1ZTM4MGYwOTkwYTVhMDUxNDczMmU4ZTg0OWM1YjZmNSBweTNrCis4MDYwMSBkOWFmYTVkMTIxZWE3YjY4OTU3OWIzMjZmOWNiYWEyYmE3YTViMDhmIHJlbGVhc2UzMS1tYWludAorODA2MDIgOTRlM2U5ODlhZTIzZjdkYzRiNzcyN2ExNzExN2I3OGViOTFkZGM1MiByZWxlYXNlMjYtbWFpbnQKKzgwNjAzIDE4NWRlMzFjOGE2YzlhOTQ2ZWIyOThkNDkyYjk1MTEwMmVjZmQ3NzYgcHkzaworODA2MDQgMDA3MzE5YTljODg4Y2ZkNjUwMGQzOTcxNWU0MmVmYjI5Y2UwZWQ2YSByZWxlYXNlMzEtbWFpbnQKKzgwNjA1IDVmODgzMDkzNWQ3NDQ0OTQyNmM4ZTQzM2EwMDk0M2JhN2JiODU2Y2QgbGVnYWN5LXRydW5rCis4MDYwNiA1OTNhMjI1NTAyNzU3ZDM5ZjU1ODNhNTE3YjdmYjAzNTlmNzE2ODViIGxlZ2FjeS10cnVuaworODA2MDcgMmQ1YzM0NWYzNGI5OWNjODczYWI4ZDliZDVmYjVjZDE3YzQwNjI4MSBsZWdhY3ktdHJ1bmsKKzgwNjA4IDAxYmRkNTNmNzQ4OTllZDhhNDE3MzY5NWExN2IzOThlNGUxMDg4ZjIgbGVnYWN5LXRydW5rCis4MDYwOSA4NDAwOTEzZmNjNTU1ZDY2NGEyZGYxNzE4NWRlZGEzYTcyM2I5YzdjIGxlZ2FjeS10cnVuaworODA2MTAgMzQzMWUxMzM5MTNjOWNmODRlOWM3NmYwN2Y2N2ZlNThiNWRkMWEwZCBsZWdhY3ktdHJ1bmsKKzgwNjExIDQ4NmZlODJiYWZiODRmNzg1ZmY4NTJiZDBjMTVmZTVkNjIxZjgwNjQgcmVsZWFzZTI2LW1haW50Cis4MDYxMiA3NzgxMjFiMjM4OGIzZDE1ZmQ3OTgyMjk4MDM5ZWYyOGJjZmFjMTYxIHB5M2sKKzgwNjEzIGU5MThiODRlZjk2OGNjODkwNTVmZjIyYWNjMDFiZjdmOTgyYzY1MjggcmVsZWFzZTMxLW1haW50Cis4MDYxNCA0YjU3MDE5MTUwYThiM2RjZWZjZWE3YzI2YjI1NTQ0ZTlhYjAyOTNhIHB5M2sKKzgwNjE1IDc3ZGRiOGQzYzQzMzU0ZDVlM2E5MDNjMDZmMDhjNTZlZTdlMTJkYmIgcmVsZWFzZTMxLW1haW50Cis4MDYxNiA0ZDk2MzRiODQ0OWJiOGQ0ODQzYTExMTgyNDIwMjM1YmRkYTJhZDU2IGxlZ2FjeS10cnVuaworODA2MTcgNmNkYTYwMWY0YzU4NTZmYTYyMjVhYmMxOWM3YWI3OTgwOGVhMDM1NCByZWxlYXNlMjYtbWFpbnQKKzgwNjE4IDllNTA1NzIwMTVhZDViMTkxNTU3NjhjYTc4ZWYwNTFkNDY4MTk1Y2UgcHkzaworODA2MTkgNDA1MjM3YjExMTA0MjUzODQxMDg1Yzc1M2M1YTM1ODY2NTVmYTQ2ZCByZWxlYXNlMzEtbWFpbnQKKzgwNjIwIGVjNmU5ZTBlMzE2ZDI4OWNkNTlkMjQwYjQ4MmY1YTczODRjYWI5OWUgbGVnYWN5LXRydW5rCis4MDYyMyA0N2ZjNmZlNWU0NTRmY2QxOGQ5NjM3YWMzZGM3OGFlODg3OTY1MTgwIHJlbGVhc2UyNi1tYWludAorODA2MjQgZmM4MjJhZjExYmJjNjhiNjgxYWFhYWM5ZDRmMDU0MGRkOGM0NDM3NyBweTNrCis4MDYyNSBkNjZkYjFiMjJkMTA5ODk0OTZhOTFiYzdjYjIwYTAxOTczZjBiNDY3IHJlbGVhc2UzMS1tYWludAorODA2MjYgNGRkZmI1ZGQ0YmI3OTRiYTYwZTg1NmVlYmMwYzg0ZTQ1YzQxOTZjYyBweTNrCis4MDYyNyBjNDgyYjQxYWU4NTU0ZmE0YzM3YzExMzM1YjNlMDhkMjIxYzY2MTlkIGxlZ2FjeS10cnVuaworODA2MjggMDZlMDExMGIwODIwOGI5MWNkYjRhM2ViMTIyMGE1ZTYwNmI5MjRlYSByZWxlYXNlMjYtbWFpbnQKKzgwNjI5IGY2MjcwMDI3ZTQ5OWYxOTZiMDBkNWM5ODM2ZThiZmJkZWM0YjNmYzYgcHkzaworODA2MzAgYWNlMzQ1Mzc3ODAwMGNjMDNkYjU2NWNmMjU0YTI4NTM0MGRhZjNmOCByZWxlYXNlMzEtbWFpbnQKKzgwNjMxIGM5MDg4MTkyN2JhZGE2ZDkwOWFjNWQ0ZmQyNWY1YWFkNzE3ODZlYjIgbGVnYWN5LXRydW5rCis4MDYzMiBiNmIzZTRmNzc3Yzk2ZTZiMzVhNzcyMjk0ZWM1OGFhMTQzZWQ5YzgwIHJlbGVhc2UyNi1tYWludAorODA2MzMgOWNjNjkzZjlhNWRlMDNkN2E2YWZkNGJlYTYzMWNjY2Q0M2Q4NmQyYSBweTNrCis4MDYzNCBmMzJiOGEzYWU5ZDYwMjk0ZTMxMGViZGQyODg0NGFkZjc2ZmY0NTkzIHJlbGVhc2UzMS1tYWludAorODA2NDAgMzZhNDE3OTgxMGYwYjY3MGZlNDc4MGM4OTE5ZDQ5MTQwZjIyMGNmYSBweTNrCis4MDY0MSA2OTkwNDliM2M3ZDcxM2YzODlmOGZiZDgzN2E5YzJmOGJkNWEyZGIxIHJlbGVhc2UzMS1tYWludAorODA2NDIgMmQyYTg1OGZlM2UxOTRjZjlkMDkzZmMzN2NiNTVjMTUwNGM5N2JmOSBsZWdhY3ktdHJ1bmsKKzgwNjQzIDdlMzYxYTZhMmFjODIyZTc1MTM5NjE4YjUyZjA3MWUzN2RhY2Q4YmIgbGVnYWN5LXRydW5rCis4MDY0NCBmZTVhMDA2YWY1MmJkZTcyY2YyODQwMWRmMjMxMjI1ZWU3ZmZjMWFjIGxlZ2FjeS10cnVuaworODA2NDUgOWZjZWNlNDA1ZTI5NTExZGI0OGNmNGY2ZDdmNDc3NWFmNDBiMjA5ZSBsZWdhY3ktdHJ1bmsKKzgwNjQ2IDVhNDg4NjViYmMxZTZiMDNjZDY5NTM0ZWZlNmE5NGQwZTFiYzcxOGUgbGVnYWN5LXRydW5rCis4MDY0NyBjMmUwYjkzZjg2OWY0MWNjNWE0NTU2Y2ZmMWYwYTVkOTk4NWJjZGM2IGxlZ2FjeS10cnVuaworODA2NDggYmZkMjU0MWQ4ZWM1YTM1MDk4MDIyOWExNDk2OGU2OTg0ZGYwNmEyNCBweTNrCis4MDY0OSAxMDIwNmNiMjNjODAyMWJmYjkzMzEzNmNhNzU5NjlkODRmNDcyODgwIGxlZ2FjeS10cnVuaworODA2NTAgNjIxZDJlOTg0ZDE4NzZkMDhkZGU2YmIwYjE4ODM3M2JkMmNlNmE2OSByZWxlYXNlMjYtbWFpbnQKKzgwNjUxIDJkM2FiYThjZjZhMzQ4YzY3YTI4OGJhNWIwZDE1NTYxMWIyMjNlYzcgbGVnYWN5LXRydW5rCis4MDY1MiAyYmRiOGViZmM0YTk1MjNkNTk1MWNkYzFiZTc1MDU3NTE5NWNkZjFiIGxlZ2FjeS10cnVuaworODA2NTMgMWI4OTQ1OTQ0OTBmYmUzOWYwZjJlNmQ2ZmQ1Zjg3MDllY2JiNjU4YiBsZWdhY3ktdHJ1bmsKKzgwNjU0IDdhMzVlMGI4YWUwOGM1YjUyNzQ0OGMxNTVhMDM2ZDY2YmQ1NTM2YmQgcmVsZWFzZTI2LW1haW50Cis4MDY1NSBlNDdhZWE4NmY3MTQzMzRlZmFhMTIwNGVkMTE1ZWEyYmYzZWVkZDNjIHB5M2sKKzgwNjU2IDA5MWQ5NzdjNGQzNzQzY2Q5NDdjMjExMDFkN2EyMGI0ZjI3MTVmZWEgcmVsZWFzZTMxLW1haW50Cis4MDY1NyBiYzYyMzBjNjZjMTQxZTBhYmJlMjExMzAwYzcwOTY3ZmQ0YzJmYzJmIGxlZ2FjeS10cnVuaworODA2NTggMDBhYzQ2ODhjZGNkMGYzZDMzZTI2OGYyMTIzNGNkNTA0N2MzYzk0OSByZWxlYXNlMjYtbWFpbnQKKzgwNjU5IDdhOWQxNzJhMTVlOTA5ZTFkNDNmNGIwNmM5NTg1NThlZGE1MGIxMjYgcHkzaworODA2NjAgYWY4MTA0MzFiZGFjOWYzMmE1ZDVjNWY1NTI2YWQzNGU1YjI2MDlhMSByZWxlYXNlMzEtbWFpbnQKKzgwNjYxIDU5MWRlNmM5ZmZlOTQ3NDhmNTRiZjE3NTNmYjE0OWZjZTk2YjExMGIgcHkzaworODA2NjIgNTFjZDUzZDNmNjAwYmZjNTU0NTQwOWMzNjcxNGU4Y2VmZDg1ZGUyOSByZWxlYXNlMzEtbWFpbnQKKzgwNjYzIDc3NDIzMDA3ODkyNmVmN2Y2ZTQzZDExOTFjMzI1MTg4NzNlOWI0Y2UgcHkzaworODA2NjQgYjI1ZTRiYTRhZjYxNmU5MzNhOTBlZjk3Njk1OTE0N2Y0YjE4MDI2MiByZWxlYXNlMzEtbWFpbnQKKzgwNjY1IDhmYzk4N2NhYzkxM2YyY2RhZDQ4MjRmYWE0NmRkMTk4Y2E1YWE0MzggbGVnYWN5LXRydW5rCis4MDY2NiAzZTQ1MTM5NDdjNTdiZjNiZGUxNzEzZTY3NjJkZTMzZGZhZjlhYjljIHB5M2sKKzgwNjY5IDNjNGNkN2RkZjFkMDE3NDY2NGIwZTg2MDU4MzdhMDU1NTU3YTE3MzMgbGVnYWN5LXRydW5rCis4MDY3MCAzZWI2ZWFkOTlhNjFhZDEyODBlMjg1ODQ0NDUyZjJhNTg1NDE1MWIyIHJlbGVhc2UyNi1tYWludAorODA2NzEgYzkwNjBjMWMxZjkwNTQyNjhkYmM4MjBkMjQ1OGIyMjk5NmMxOGI5ZCBweTNrCis4MDY3MiA4ZTM0ZDU5YmFkZjk4ZjdkNjJmYmM5Yjk0MmE4YjVkMjNhYWIxZWFlIHJlbGVhc2UzMS1tYWludAorODA2NzQgYWI2NDIzNzlkZGMwMjk0NTZhMmFjODAxZTBhNGVlMWYzOTY2MWRmMiBsZWdhY3ktdHJ1bmsKKzgwNjc1IGFiZmM3ZWQzNTVlNGUxMTJlZmJmMzE1YTQxZGI5Y2RjOTcwMDk1NDUgbGVnYWN5LXRydW5rCis4MDY3NiA1YjZhN2YyYTA1YzZkMTZkMjU5MTQ5Y2UzOWI0ZTMwMDI1MmQ2YTFjIHJlbGVhc2UyNi1tYWludAorODA2NzcgNTVlMGVjY2M3ZjQ2ZjM0N2RmNDAwZjNhNDgyMjFlNjcyN2E0ZTcwMiBweTNrCis4MDY3OCA1MmEzYWI1ZThlOGNmNjU5ZDcwMDliMWFkZTYxMmM2YmM2ZWYzNjZjIHJlbGVhc2UzMS1tYWludAorODA2ODEgM2ViYWMwZTQ2MGUwMzllMzk4NGM2OTQwODM3ZGY1N2Q2ZmMxNGJmZSBsZWdhY3ktdHJ1bmsKKzgwNjgyIDI0NWU0MzNkNjBlYjVkYzUzZTExZDNmMWJmNWY4YTg0ZjQ0NWIxNWQgcmVsZWFzZTI2LW1haW50Cis4MDY4MyAxOTMwNGQ4MjNjODc0N2MwOTdhNDVhMTA3MDBiYzAwNTdiNzg5NjNkIHB5M2sKKzgwNjg0IDgyZGEyOTBmZjcyMjNlNmJiYWQxNjNjNTY5ODJjNmVkZGU2MjE4MmQgbGVnYWN5LXRydW5rCis4MDY4NSAyZGI0YjMwMGE0MjA4NTY0MmM1NWQ4NzVmYjliZTI2MGRjMWM4ZmFkIGxlZ2FjeS10cnVuaworODA2ODYgNThiZTNhZjEzMGUyNmE5ZWI5NGUzNDg3YmY1NTVhMDA3N2U2NGFhNCBsZWdhY3ktdHJ1bmsKKzgwNjg3IGY4OWJhMTBmOTczNDk1OTllNzBiYjkwYzJhNzFmZjljYTk5YzJmOWYgc2lnbmFsZmQtaXNzdWU4NDA3Cis4MDY4OCBlMjhmZWRmMzYzNTk2OTRkMzA5ODc2NGQzMDc5ZDcyODk4MTIzNmZhIHB5M2sKKzgwNjg5IDIxMzU1ZGFhZjIzYTQ2ZGI5NzZjMjkxNDI4NmZiNjgzNzFhMDhmMTkgcmVsZWFzZTMxLW1haW50Cis4MDY5MCA3YjMwN2EzMDI3NDQ3NThkMjBlMjAyMjEwMmZiMDM0NjVhMjczYzgwIGxlZ2FjeS10cnVuaworODA2OTEgZjBlMjFhYzc5NWY0NzVjMzg5NjhkMzU2ZTA3ODJjMGI0OGFmZDE1NyByZWxlYXNlMjYtbWFpbnQKKzgwNjkyIGZkYTFkZGFlMDQ5YzY3NmVhMTQ0NmVlNWNiZDhkYjg4ZDQwZjA0ZDkgcHkzaworODA2OTMgNDY4NTcwOWZhYjNlMTM3NzA2NTExNzBhZWJkMWYwZWRhNTM0ZmY5MiByZWxlYXNlMzEtbWFpbnQKKzgwNjk0IDlmNGNhMDA2MTBlMzM4YjEwYzRjYWQ0OThlZjY3YjIwOTE3MWE0YWUgcHkzaworODA2OTUgZmQyNmViOWZiMGY5MmE0YTM5YTk0MmExYjQ3YjM0M2Y4ZjY2NDFiZCBsZWdhY3ktdHJ1bmsKKzgwNjk2IDk0YjUyZTVjYmUyOTQzYmViNGRhNTYxMzI4NmNlOWQwZDgwYjA5YWQgcmVsZWFzZTI2LW1haW50Cis4MDY5NyBhYmYyMjAxZGMzN2NiZWYxYzA0MThhZjk2MDcxZjRmYTAzZTNlZTZhIHB5M2sKKzgwNjk4IDIxMzY5ZDE4OWQ5ZTQ3OWY0MzBmMzYyODk1M2MyOGVjMDYzMDNmNGUgbGVnYWN5LXRydW5rCis4MDY5OSA3ZDk4ZTBlYTlkYjM1NGUzMDkzY2U1ZTc3MzU1NTY5OTc4YjE1MmY3IHB5M2sKKzgwNzAwIGQ5NWRmMjYyMmY5ZjViNzc0Nzk3ODhmOGRhYmI2MDIzNTk0MDRjNzggbGVnYWN5LXRydW5rCis4MDcwMSBiMWRkNzcxNTQ1ZTIxMjdlM2Q5ZmQ3MDQxOGRmNDhhY2UxM2MzN2U0IHJlbGVhc2UyNi1tYWludAorODA3MDIgNDMxMjY3NjI2YTAzNWNlNGU5Mjg5OGE2YjQ0YzM2MmRjNWRlMWY1ZiByZWxlYXNlMzEtbWFpbnQKKzgwNzAzIGNmMDM2MWMwMjU1MWQwOWUyYTBmYzY1NmJmMjVhNTgyZDczZmM5MWEgcHkzaworODA3MDQgYjNjM2IxMjQ2MGQ0ODExMDkxZWYwY2QxNGE4MTJlOGNmYzhkYmYyYSBsZWdhY3ktdHJ1bmsKKzgwNzA1IDhiNzUzMjk5MjQ2NDJlYjk5ZTA1NjA0MTdkYmQyMjE3ZmZiZTZkZDQgcHkzaworODA3MDYgYzYyYjFkMDI1NTFhZTI4NjQxNmE2M2E5NGE1NjNlN2Q2ZjdmNjMzZCByZWxlYXNlMjYtbWFpbnQKKzgwNzA3IGE3NzQ2N2JjYWRlMGI3ODNhOTgxNTBiYTA2MTVjOTNlYTE5MTZlMTggcmVsZWFzZTMxLW1haW50Cis4MDcwOCAwM2MzMjA5MmQyNjY4MjgxYzJiYWNiZGIwODQwMjViMzI3ZjM0NWMwIGxlZ2FjeS10cnVuaworODA3MDkgNjJiOWE3NDMxMDQ3ZjZlOTlkMDcyOTY0YjQ0YWMzYjExMGJhOTM4MyBweTNrCis4MDcxMCBkMDYyYjhlNzkwNTIxZTEzZjdmOTNhOTZmMjczZjdmYjc2NWI1YzhiIGxlZ2FjeS10cnVuaworODA3MTEgYjdmY2IyYWY4Y2I0MDhkZTY3YWJlODUxZTAwMDhkMzk2Njk2NDA3ZCByZWxlYXNlMzEtbWFpbnQKKzgwNzEyIDU2ZDgzMWU2ZjUwODgxYWRkZGU4NTI0YzdiYmEwMDI2MmI2MDA5OTkgbGVnYWN5LXRydW5rCis4MDcxMyA0NzY3YzY2NmIyNWIwOGIzYmY1OWI0ZGExZmU3Njc0MWE1NzM2MjdmIHJlbGVhc2UyNi1tYWludAorODA3MTQgNWQ0YTU2NTU1NzVmMmM0YzZkYTRlZTZhY2FmMDNiOTJhMzFmMTliYiBweTNrCis4MDcxNSAzZWQyOGYyODQ2NmY2MDZhMTZhZDI0Zjg4ODFmNjU5NzQwZGZlMGM3IHJlbGVhc2UzMS1tYWludAorODA3MTYgZjk5MmNlZDMyYzIwNTc4YTI5MzAxY2ZmZTIzMjY4MzVjZDgzMGViMiBsZWdhY3ktdHJ1bmsKKzgwNzE3IGQ5MmZmNzA4MWIyMDM5ZDZjYzg1NTljMWIyMzNiMGJlZTE1Yzc0OWQgcmVsZWFzZTI2LW1haW50Cis4MDcxOCBmMDI1NWVmNGRiZWJkMWYyMzhlZDU5MWJmMDc2ZGMzYTk0OWE3YmMzIHB5M2sKKzgwNzE5IDdhYWY1OWQ4ZWYwYmZiYjRhZGJkOWE0ZmMzNGMzMzI1ZmNjNjI0OWIgcmVsZWFzZTMxLW1haW50Cis4MDcyMCA5YjQzOGJiMDZkNGQ2MjNlMmUyMzU4YzU2Nzc2YmIyOTBhZjYyZjExIGxlZ2FjeS10cnVuaworODA3MjEgZmUzYmYzOTlhMTljMTI2NzM3ZWI0NTgyNGE5MjQ1N2EyYWY4YzllOCByZWxlYXNlMjYtbWFpbnQKKzgwNzIyIDgxY2VmNWI3NGYxYTdhZTU5ODM3ZTJiOWM3OGUwZTAzNDE1NzkxNTkgcHkzaworODA3MjMgY2EwMWFiZDhhZDg3MTZmYzM3MTYyYzQwYTI4YThhOGI4NDU1ZGM3ZSByZWxlYXNlMzEtbWFpbnQKKzgwNzI0IDRmZDNhYjVmYTcxZDYwNmFlN2UyODAzMTI5Mjk4ZGU3YmVhZjMyZjAgcHkzaworODA3MjYgNjg1MGFhNzg2YzE4NzY3ZTdhM2QyNGQzZTkyZDM2ZDljNTViOGU5MyBweTNrCis4MDcyNyA1MTJkNjFhNjkyZTRlYjM3ZWQ1NzNmYjdjMDkxMDdiMTU4NGE0NzE5IHB5M2sKKzgwNzI4IDEzOGJiNWM5MzA3NDdmYWViNjRlNDgzZTM3ZjIwNWQ0YTRkYzQ2NWQgcHkzaworODA3MjkgMThjYzA1ZTgyNzUyMjcxZTY2NGI1M2ZiZTYwNDUxNmQ1NDViZGE5YyByZWxlYXNlMzEtbWFpbnQKKzgwNzMwIGU5OTEwZDE5MzIxNDZlMGE1MzkyMTM0ZGYwNjQwYjI4NmVjOTEzNTIgcHkzay1qaXQKKzgwNzMxIDE4MWNkMTQ5MmNiMGM3NWJhOTdkYjMyMDE5ZmJiODEzNzMxMzhhMjEgbGVnYWN5LXRydW5rCis4MDczMiBhMTE4OTA1MjcyMjk5ZmI1ZTZhMjAwNzM0OWEwYWFmNzA0NjY0ZDFkIGxlZ2FjeS10cnVuaworODA3MzMgMDJlMTg3YmFhZjUxNGQ3Yjk2MmMzYTA0ZTRhYzMxOWE5NzdlY2Q1MSBsZWdhY3ktdHJ1bmsKKzgwNzM0IDBjZjgwYjcwZjgzOGEwMzgxYTMyY2Y3YjU1ZjM2NDg0NWQwMzRkYzcgbGVnYWN5LXRydW5rCis4MDczNSA5ODJlZWM5YThjMjg4NTNhZmQ1ZTRkOGY5ODk0MDcwZThkNThmZWM3IGxlZ2FjeS10cnVuaworODA3MzYgZWI0NzBiODVlNjdhZmE2NWZhM2JkMzAwMjM3OWYxNDFkM2RlZGFjNiBsZWdhY3ktdHJ1bmsKKzgwNzM3IDdlZTU2MmNjZWE4MDJjMTM2OTg3ZjFiMmY5MGE5OWQyZDk5NDQ5N2EgbGVnYWN5LXRydW5rCis4MDczOCA2MzY1OTFmNGMyMTYyYTkxMDAwMzJmZjAwYWZmNDg5ZGRjMWMyNmQ4IGxlZ2FjeS10cnVuaworODA3MzkgODE0MjQ1M2RiODBjYTAwMWI1MTc4ZGZkNjNjZDNjZWQ2MzVjMWQ4MiBsZWdhY3ktdHJ1bmsKKzgwNzQwIDdjNjJlNzJkODU2YjI5MjMyN2ViZDI4OWEwMmFlZmUwZjc5YzcwYmEgcHkzaworODA3NDEgZjY1NjllMzRiZDI4MWFhMWUyMWViMTE3OTM4MjVjZDEyMzRlNDA5YiBsZWdhY3ktdHJ1bmsKKzgwNzQyIDc2OTVmNmE3ZTNhM2I2NDI2MmY3MmY5OWU1MzM4Mzc0ZjdiNjMxM2MgbGVnYWN5LXRydW5rCis4MDc0MyA2NmZiY2EyODdhMDExODQyYzEwMWI2NjJmMjQ5MjQyYTZiZGYxNTQwIGxlZ2FjeS10cnVuaworODA3NDQgM2M3NjgzZDZhM2M0NzEzNjRlMjk4MzY1NmUyZTg1NTJlNTg3YjIzZiBsZWdhY3ktdHJ1bmsKKzgwNzQ1IDg1ZDY5M2U1ZjIyOTNiYjQxYTE1MmYxMjQxZTE1MjViMzMyNWFmZGYgbGVnYWN5LXRydW5rCis4MDc0NiA1NWE1OTNjYzMyODAzYmM3NGRiYmZhZjNjNjlhNDE1MWFkNjYwODg4IGxlZ2FjeS10cnVuaworODA3NDcgY2QzM2Q2Y2QyMTAxOTU2NDMzOTUyYWZkMzJjMjZkNWI3YmIzZDg4MSBsZWdhY3ktdHJ1bmsKKzgwNzQ4IGUwZWUwOTUxZTk1M2YxNTFjZjNmYzA4YzdhMDlmNzUyNDVkNTUzOTIgbGVnYWN5LXRydW5rCis4MDc0OSA1ZWMxNTVlYzdkYjI3MGE0ZTUwZWZiYTg5YjA1Y2Q4MWQyYzI1NDlkIGxlZ2FjeS10cnVuaworODA3NTAgZDE3NmFhNDczMjg3NTY3OGY0ZGVlZDQ4YzhkMDVhMGY1NzExOGViZCBweTNrCis4MDc1MSBhNTE1MzdlNzA0YTliNDQ0ZTZjZTU5ODRjODAyY2M4OTViYzZlZTE2IHB5M2sKKzgwNzUyIGI3NjBmNmZmODllYWIyN2EyNGNiNTBlNWJmZWM1ZTRlYjRjOTllYzkgbGVnYWN5LXRydW5rCis4MDc1MyBjMGVhMDc5MjU0MDAyODRmZjQ5YzFlZTcxNGU5ZGMyNTNhZjU2YTllIGxlZ2FjeS10cnVuaworODA3NTQgZWNjMzJlMmY0NjU2NmU1ZGVjOWY2OWI0ODIyNTMyZjUxOTQwMGIxYyByZWxlYXNlMjYtbWFpbnQKKzgwNzU1IDE4MzM0ZjIzZjY4NmZjMjU4OTY0MDI0ZDcwYjljMTQ2NjdlN2U2NTAgcHkzaworODA3NTYgMTE0Mzk3MmYwNGJiZDU3Nzg4MGYxYzNiYjIwMmMwMTQ0MTIzMWM2ZSByZWxlYXNlMzEtbWFpbnQKKzgwNzU3IDFiNGI1MDZhYTA0Mjc2OWY5MGFmYTExYTFmMzQ2NmYwNDU0MzZkZmEgcHkzaworODA3NTggZjU1MGVkODkzOThmNThlNTFhZDk1ZTJlNTI0ZTc5MmZjN2RhYzRjZSBsZWdhY3ktdHJ1bmsKKzgwNzU5IDZmNDY2OGI5N2Q2ODQwMzU0MzliZGYzOGY1OTE5NDM3NGJjMWUxNjIgbGVnYWN5LXRydW5rCis4MDc2MCBjNzQyOTlkZTgwMWFiYTM1YjM2MjA5NDk1MjA3Y2RkODUzOTg4NjEzIHB5M2sKKzgwNzYxIGYzODRlMTFjMWJiNWY2OGE4NzdkOGE5NTNkN2VkN2IzZGU5ZmUzNDMgbGVnYWN5LXRydW5rCis4MDc2MiAzOTA3ZDUyNjQ4YTBmMjU2MTMzNWU3MGViODEwOGU4N2Q4MDgxMWIyIGxlZ2FjeS10cnVuaworODA3NjMgYWRjMmViZGE3NjM2YWFmYmRjNzUwMWNiMDc2Yzc3Njk1ODgzN2EzYiByZWxlYXNlMjYtbWFpbnQKKzgwNzY0IDBhNGNhODkyYTU5ZTVlOTI5ODE5MTNmNzY4MDU5ZTgwNWFlOTA2MTYgcHkzaworODA3NjUgOWJhNmZjZWM0ZjE0OWUxN2EyMjEyNzU0ZTVjOTM5NGI2MTRlMDcyYSByZWxlYXNlMzEtbWFpbnQKKzgwNzY2IGQ5MjI4MDUxNzMwNTM3MWMwNTJiZjEyZTRkYjY3Y2FkZDdlMGQyN2MgbGVnYWN5LXRydW5rCis4MDc2NyA4YzliNzg1YjE4NDlkMDZiM2Q3YWRkZGM0NTAxODhkNmQyZjZhNjNiIHB5M2sKKzgwNzcxIGQ0OWYxMzEwZTIzZjkwMmFkOGFlMzdlOGQ1NzUwNDdlNGQ2MDdjM2UgcHkzaworODA3NzIgNmU0YmZjZjIwODBjNzE2MTY2YWNlNDdhYmIyZGRmOTQ0ZGM5OTU2YiBweTNrCis4MDc3MyBjZjQ4NTM1MTMyZTBkYzA3ZWQwZTNiN2IwMmIyNTI3NDlhN2UyYzcyIHB5M2sKKzgwNzc0IGUwMTA1ZmQ1MjAzMjkxN2UzMDA1OTVmMzYwNWU1YWZkNWQzMmY2OTYgcmVsZWFzZTMxLW1haW50Cis4MDc3NSBkNzRhYzdjY2E2MDc3MGExMTJkYWEzZDJlNzg2NWIzMzA2YWM2NzhiIHB5M2sKKzgwNzc2IDEzNGE2M2FmMjJhOWE1OGE4NjU2YzI4MWU3M2VhN2Y5MWEyYTU5NmYgcmVsZWFzZTMxLW1haW50Cis4MDc3NyBiYjUxZTRiYmZmOGMyOGIyMjNjZGUwMTE4ZTI5NTAwYTQwZjJhNjQ0IGxlZ2FjeS10cnVuaworODA3NzggZGQ2MGRlMmZhZTNjZjZkM2FkYTJjNmQ4NTEyOTQ0NDYwY2E4OTgxNyBweTNrCis4MDc3OSA0MzgwZTA0MzQzZWU5ODVhN2E5OWEwNjk3ZjI2ODYwZDQ4YTdiNTg0IHJlbGVhc2UyNi1tYWludAorODA3ODEgYjdhZTNhNmIxZDg0YjI3NDBhNzI2NDNhN2ZkNmIzYTVhYjdkYzllZSBweTNrCis4MDc4MiBmNDQxMWEzY2RmMTM5YmFjNzc5ZTJiZWRkMWQ3NjcwMTlmODEyZjc4IGxlZ2FjeS10cnVuaworODA3ODMgMzFhMzJlNGUwMjU2ZmY5YjEzYjE1NGM4YjVhYWZhNGZiMDFkODMwYyBweTNrCis4MDc4NCBkYzY4NTIwOTg4YTdmOWI5NmEyNTAwNDNiN2VkZjY4OWJjMGQyY2I3IGxlZ2FjeS10cnVuaworODA3ODUgODEzZGFlZTk0ZjczODNmMWVhMTM0YTFmZDFlZTU3ZmQ1ODFlOThmYiByZWxlYXNlMjYtbWFpbnQKKzgwNzg2IGZiYjVjZDM0NWI0MmU5MWRjMjNmZDM5NjcxZjM4YjFlZWEyNmI2Y2EgcHkzaworODA3ODcgN2IyOTk0MDRlNzgxMGNkNmI5NjY5OTI4ZGYyNDk0Y2ZiN2Q5N2U1YSBsZWdhY3ktdHJ1bmsKKzgwNzg4IGYwNWEyOTg5Mzc5ZWM5YTZiMzM1M2MyNmU4Mzg3MGQ4NzI0YjljODcgcmVsZWFzZTMxLW1haW50Cis4MDc4OSA2ZGI5YmE0MmU0Njg3MjM4MGUwOWJmNzU0YTBhNWU2ODYxYzkwYjQ0IGxlZ2FjeS10cnVuaworODA3OTAgMzUyMjFjMDE1OGI1YTcyZmQxNGYyM2M2ZTU5MGE1MmU5OTRkMjIxMSBweTNrCis4MDc5MSBjY2FkZTU3NzI2NzQ2NDM3NTc3ODhkZTQzZGFkMjk1YTVkNWUwMWRkIHJlbGVhc2UyNi1tYWludAorODA3OTIgNTBhNGVjMzczNjFkMDBkZTQwYjE4OGZkN2Q4N2JjODliMjcwOTVmZSByZWxlYXNlMzEtbWFpbnQKKzgwNzkzIGI2MDhlMmVkOWY3NTg5MWJiZmRmNDc1MmFkMDNjOGM0ZTYzZjY5MTEgbGVnYWN5LXRydW5rCis4MDc5NCA0YjY4ZDZjOGNkNTJjNGUwNmY3YTdkNThlNWNiNTc0YzJlNjllN2E1IGxlZ2FjeS10cnVuaworODA3OTUgMzU5MzJhMjRiZTg1MDljZDliNjI3YjdlZDhlNmUwYTUzZDExMTA5YSBweTNrCis4MDc5NiBkNGFhMzU5MDc4MDg3NjJkZWQwOThmOGUxZTQ4NWVmYmRjZGZlMTU5IGxlZ2FjeS10cnVuaworODA3OTcgNjI3ZjExNDQwYjg5ZTYyMjViYjQ4Nzk4ZTkwZjJlODkzMGMwMGI1MiByZWxlYXNlMjYtbWFpbnQKKzgwNzk4IDc0ODNlY2I2MjFlMGY2MGJkODgxYzdlMDM1MTg0NTk5YTQ5YWQ3ZWIgcHkzaworODA3OTkgOGVlODBjMmY5OTI2NzljN2JlZWJkMmIyMDE1NDFhMWFiNGI3NmFlYiByZWxlYXNlMzEtbWFpbnQKKzgwODAwIDU3NWU5MzhhOGNhNTI1YjIzZTgwY2ZkODM4MGJiNWRjNTU4NDY1NmQgbGVnYWN5LXRydW5rCis4MDgwMSAxODlhMmRlM2UwMzQ1ZjA0NGU1ODA0MDI3ODhiYWYyOGQzYjlhODgwIHJlbGVhc2UyNi1tYWludAorODA4MDIgMzNhYzEwOWRlMGNjMmQyMDA0YTRiMDlhNGY0YjZkNmQ0NWI5ZjM2NSBsZWdhY3ktdHJ1bmsKKzgwODAzIDgwZDA1NjMwMjYzYWRkMjU4ZWUzYTc1ZTJmYTM4MDJjNTc4OWRhMTcgcHkzaworODA4MDQgZjY3ODViY2U1NGI1MzMyZGU1ZTU2Zjc5MTYzMmM1NjkzMDllNzg2YiBsZWdhY3ktdHJ1bmsKKzgwODA1IDFmNzUwNmYyMzc3MTZmYTA4NWEyYTRhYmViYzBjNGFhM2YwNDU5ZGQgcHkzaworODA4MDYgOTBmNGI2MmQ0NzU5ZDA0OGE1Mzg3NjQyNjcyYzU1MWI3NTNjMTBlZiBweTNrCis4MDgwNyA2ODk5MTM5MzAxYzllODdjMzkwYzBlZWMyNzMwM2ZmMDQzOGJjZjE5IGxlZ2FjeS10cnVuaworODA4MDggM2I1OGYyNDQxY2M4N2ZkZDZiNmNhNmI1ZjMyNDVlN2IyNDRkZjg1NyBsZWdhY3ktdHJ1bmsKKzgwODA5IDk0NTM4YjA0NGNiZWZhYjBlOTQ2N2UyYmQ3MTkzYTU2YTc3ZDkzZmIgbGVnYWN5LXRydW5rCis4MDgxMCBmOTVjMjU5YjgwYjNjZTVhZDU1OWY5Zjg0NmUxNzYyYmM2NTM4MDMxIGxlZ2FjeS10cnVuaworODA4MTEgN2JlODEyOWVlMGZkMjFkZDE4OTkwNTBhNDk5NTE4OTVkOTllZTA0NCBsZWdhY3ktdHJ1bmsKKzgwODEyIDQ3YTI3MDBjMDBiNDlkODY1ZDFjZDI5NGQ5NmM5MjIzM2Y5MDBjZjEgbGVnYWN5LXRydW5rCis4MDgxMyA1Y2VhMjcyNzVhZjEyNTgyYjA3OGMzMzk2YjMyM2U2YzhhN2RjMmM2IGxlZ2FjeS10cnVuaworODA4MTQgMmQ4ZmE3NGY5MjYzZTQwMDEyOWRiNTNjNDE0MjRlMDk1ODVjYWU5NiBsZWdhY3ktdHJ1bmsKKzgwODE1IGZmZjQzOWYwODlmZTU1YWI1NGI4YzczOTRmZTIxYjk0MDU5ZjQ2MzIgbGVnYWN5LXRydW5rCis4MDgxNiA2ZmI2ZmE4MDIyMjFlN2Y1ODRhM2RiZjZiOWQyNGNkODE4NThlMTBiIGxlZ2FjeS10cnVuaworODA4MTcgODQ1YzZkODAwMzAyNDQ2Y2E4M2I4NGYwYjBjYjUwNzgwZTcxNjYwNSBsZWdhY3ktdHJ1bmsKKzgwODE4IDc3Yjc4NjA3NjAwZTUyNGQyZTg2N2RkNTRkOGI2NDU1MGY0YmExMmEgbGVnYWN5LXRydW5rCis4MDgxOSAzZmU0YzM0Zjc4YzAyOWY3OGU4ZTMzMzlkY2YxY2M4OTA5MjUyM2ZmIGxlZ2FjeS10cnVuaworODA4MjAgOTVjNDAwYjlkNzRjYTM3YTZmYzcyN2M5MDhmYTAwYjMyYTgwN2NiZiBsZWdhY3ktdHJ1bmsKKzgwODIxIDBkMTQ4MjdiY2MwZGZhOWVlMjBkMzJkODhjNDUxZDg5Yzg5Y2VkOTMgbGVnYWN5LXRydW5rCis4MDgyMiA4ZTNiNWZiYzFlNDFiZjFiM2Y3MDZhNDM5YWNhNjY1MzVmYjQ3OTk3IGxlZ2FjeS10cnVuaworODA4MjMgMDM3OGY2ZTM0NmYwMzI1OTg3MDY3NzUwNmE3ZWRhYTJiYmE0OWRmMiBsZWdhY3ktdHJ1bmsKKzgwODI0IDg4NDY2ZWYxZjBjZGU2ODE4MDhiZDMyMzc2NGI0NDliYmFhOWNlYWQgcHkzaworODA4MjUgOGJmMzQ1OTRiNjZmMzE1M2I5ODBlODZiODQ5MDk4MTE4MDBiOWQ5MSByZWxlYXNlMzEtbWFpbnQKKzgwODI2IGYzMzA5MDQyYTBiMzFiZWUxNmMyM2Q5OTMzNTI5N2I5YjZlZGJjZWIgbGVnYWN5LXRydW5rCis4MDgyNyAwM2JhNjBkMWU0OTJhMzk4NDU1NzAxMDZlMjkyYjNmNWNiNGU3ZTU0IHJlbGVhc2UyNi1tYWludAorODA4MjggOTQ0OTM4YWJiMjZjZTA2MDlmMDQzMGQ4NDM2NmUzM2Q5M2QxMmNjZSBweTNrCis4MDgyOSBmNGNlYjRhZTAyNDdkYmEzMjYyMjgxMWY3MzViYmFlNzczMGExMDQyIHJlbGVhc2UzMS1tYWludAorODA4MzAgMjZiODFjNGU1ZmJhNDdlNGM2NjgwM2MzYTg5NjU5NTU2NDllNDI1MSBsZWdhY3ktdHJ1bmsKKzgwODMxIGYwZmE5NDRiMTVjMGNmMWY4NzA2MGRhZjNmOTI3N2IyMDJlNThlYjYgcmVsZWFzZTI2LW1haW50Cis4MDgzMiA5YmVhMzdhODUwODg0Y2RkMjI3OTFjOTRhMDQwZjJmZGMzZDJkYmEwIGxlZ2FjeS10cnVuaworODA4MzMgYzQyNDI5OWIzODg0YjQwYzc2YTkwZmI3YjU3N2YwN2Y2YTIzMGNjMSBweTNrCis4MDgzNCA4YjVkZGUyYzMxZmIzZjY2NjA1ZjNjOTU2YzkxYmY0NDBmNmFhYmEzIHB5M2sKKzgwODM1IDc4ZTdmYzAxYzUxYWM1ODM1ZjRkNTNiM2YxZTExNmMyYzI5ZDgyNDAgcmVsZWFzZTMxLW1haW50Cis4MDgzNiA1ZGNhMGEzZmI5OTNjNDA1ZWUzYTVhZGEyZmJmMzk3MmQwMGUyZTUyIHB5M2sKKzgwODM3IGUzZTQ2NmY1M2Y5ZWYwYTE0MjJkZTY2NzlkZGE0ZTI3NzIwMzEzNzEgbGVnYWN5LXRydW5rCis4MDgzOCA5OTVlYjk2Y2FlNjg2YmVmMzU3NzhmMGU0Yjk1YWFmMjk3ODVhMjVmIHJlbGVhc2UyNi1tYWludAorODA4MzkgYjMwM2MzNTI1NGRlNDEzMTdkOWM4NzA0NDgxY2IzODc3YTFhNzZjMiBsZWdhY3ktdHJ1bmsKKzgwODQwIDY1NThkOTZhZGUwM2FkMzM4NmI5NWYyNDRiMmRlYjhjNWRkNWRhNjAgcHkzaworODA4NDEgMmYzMTMwMDhhNDFkNDVmMmE2ZWNmZjY0YWM2MzJiZDVlNWEyZGU4NCByZWxlYXNlMzEtbWFpbnQKKzgwODQyIDYzZDViOWQzOGIxNzZmYTRiMTM1N2EwMTFkZDYzY2Y5NmIyNDAxZjcgcHkzaworODA4NDMgOGFmZDZmMjhhY2E5ZDIyYWU5YmVlNjJhNTI5MDczYTZiNWIyZTI5OCBsZWdhY3ktdHJ1bmsKKzgwODQ0IGYxMWQ0ZDJiNDRiNjdkNGExYTcyNDA5MTZkZjM5MjM1OGEwZTA2MzUgbGVnYWN5LXRydW5rCis4MDg0NSBlMTE0NmIyNWY3NzMyMjQ4NjQzM2M4NzY3ZGRlMjNhYmVmMGExZmUwIGxlZ2FjeS10cnVuaworODA4NDYgMWNmYjIyOTg0NGE3OGM1NDIyMjYyN2YxNzlkNmRlMzE0MzE3NTEwOCBweTNrCis4MDg0NyBlNTAzYmI4YjNmNjE1YjM2ZjM3MjcyYWQ3M2UwOTg4MWIzNTM5MzU1IHJlbGVhc2UyNi1tYWludAorODA4NDggZGMyYWFjNjI0ZmY4ZjliNjM2YmVlZmQzNDEwYmMwYzI3MzFiM2RlNSByZWxlYXNlMzEtbWFpbnQKKzgwODQ5IDAxNmRiYWIzNTFmMmUxM2U2ZDBjNmY2MzJlZTIyYWM3OTM3NDlmMTAgbGVnYWN5LXRydW5rCis4MDg1MCA4NWNjM2VkYzdkNDZlNDI2NDRiY2U4YmI1NzQxZGEyNmRhMzU2MTI2IHJlbGVhc2UyNi1tYWludAorODA4NTEgYWE3ZTZiOWNhYjZkNDkyZGM2ZjcwZjhhMTQyNWZlODYxNmJiMWE4NSBweTNrCis4MDg1MiBlMjE4MDNjNGYxZWVmNWY4OTI2YmVmNmU2NWU0OWVjZjE4M2I2NTcyIGxlZ2FjeS10cnVuaworODA4NTMgZDJhNDQwMDU3OGE1YzczZWQ2ZTdlNmYzYWYyMjMyZmQ2MGU5N2EzNSByZWxlYXNlMzEtbWFpbnQKKzgwODU0IDg5NDJlOTYyODZkYzY0MTc3ZWViMmVjZDIzM2VmMTc1NWZiY2RhMGMgbGVnYWN5LXRydW5rCis4MDg1NSA4YjY0MTU5NzkyYmJiMWY3MTY4YjE2YmEwZWRjNjUwY2Y0ZDBhMzU0IHB5M2sKKzgwODU2IDViNTVkYzk1NTRmY2JkNzdlMDdkMWJlYjYzZmZkMTkxZTEyZjZlNDAgcmVsZWFzZTMxLW1haW50Cis4MDg1NyAwZWQxZWJlNWJjMmZjOTNjZjBmMDIxMzIwMmUxNDM2YjFmNjYzNjJiIGxlZ2FjeS10cnVuaworODA4NTggZTRhMGJhMjUxYzRhNGZkZDA1ODVlZDQ2YmE3ZjgyZGE4ZTRkMWQwNiByZWxlYXNlMjYtbWFpbnQKKzgwODU5IGI5MmVmOGViY2NiOTc2MGI0YWU0OTZmZTU5N2VmOGNhMDEwOGY1YWYgcHkzaworODA4NjAgMzlhMmJlNDEyN2RkNDQyMjVjYWUyNTg4ZDc0ODIwZWUxYjY3ZGIxZSByZWxlYXNlMzEtbWFpbnQKKzgwODYxIDNjYmNjMjc0NTk3MjkyZDFjNDRjNzdhNGQwMTMyOGI4Mjg2MjA4ZDMgc2lnbmFsZmQtaXNzdWU4NDA3Cis4MDg2MiA5OTY1ZWY4MjVjN2Y3YjJkODU5MGRjYTMyNmQ2YjQ5ZWIyODU2ZDBiIHNpZ25hbGZkLWlzc3VlODQwNworODA4NjMgMmQ4YTNiYjhmYjYwOGE3M2EyNzBiZTU1YjFjOGRhMzQ2Zjc3ZGU3MCBzaWduYWxmZC1pc3N1ZTg0MDcKKzgwODY0IDNkYTY3Mzg4Yjk2YTM3ZDE2MWU1YTU1YTc5MDdiOTRmNjQ2M2QyYjUgc2lnbmFsZmQtaXNzdWU4NDA3Cis4MDg2NiA2MjU0YzAyOGM2M2QyNDAwZWZkMWE5MzM2M2FmNjZiYWI3NTA1NGQzIGxlZ2FjeS10cnVuaworODA4NjcgZWE3MDAxYzNmMDAwZmY2OTEzNzk0MzRiNWNlMDA1NGU5Y2FlY2EwZCByZWxlYXNlMjYtbWFpbnQKKzgwODY4IDIxNjZiNjNiNmZkZjg2ZjZiOWZkMThmODMyMjFhYzYxZTA3YTA1ZjggcmVsZWFzZTMxLW1haW50Cis4MDg2OSBiNGIzMjJiMmU5OGI5OTAxNjk0YmJlZDllNjJjZDY1NWYzNGUyY2JjIGxlZ2FjeS10cnVuaworODA4NzAgMzQ2YzRjMmUzODZlNzQzNWM1ZGFkZGU2MTIyYTUzYTJjNjU2MTBiMSBsZWdhY3ktdHJ1bmsKKzgwODcxIGNlYmUyODU3MDAwNjkwZWYyMWIyNWU0MmMyMGE0NTdhMDIzMzE4NTIgcHkzaworODA4NzIgNGNkY2ZmMGU5YTM2ZWQ4ZGVhYTI3NjUzZGFjMGM5YzBjMmU5ZjEzNiBsZWdhY3ktdHJ1bmsKKzgwODczIDZiMjdhOTVjMmM1MjI4MTRhNmU5MWYzYTNiMmNhZTQwZmYyNzNjMTUgbGVnYWN5LXRydW5rCis4MDg3NCBlNGU1NDg2ZWNjYmUwZTYzNzJiNDhkMzE0MDk4ZTdhYjI3ZjI4YTM0IGxlZ2FjeS10cnVuaworODA4NzUgY2M5MjUwMmRlNGM5NTExNDRiMmNlN2JmZjQ0OTJkOTY5MjQ1MzI4ZCBsZWdhY3ktdHJ1bmsKKzgwODc2IDNiNDkwOTYzZjkyYzg3NDg2M2NjMTcxMmZmYzEzMTE4N2JmZjE4MWQgcHkzaworODA4NzcgMjk3ZTIzMzI4YzZjNjk1ODBiYTgxOGI3ODViMDZkMDFkYzdjZjgzZCBzaWduYWxmZC1pc3N1ZTg0MDcKKzgwODc4IDU0ZWZhZjZkMmY4OTJhOTVhNjc4MjE2ZTIxODRiNzBjNDRiOWUxYzggcmVsZWFzZTI2LW1haW50Cis4MDg3OSAwYTgzOTY5YjZmMzVkYjE2ZWIyYjZjODkyOWU0NGFhZWM2N2RkMzQ1IHJlbGVhc2UzMS1tYWludAorODA4ODAgOWFmOTYwZmJhY2NjNWU0ZTUxYTc2YjhlMzU0ZTNhMGNjYzljZGM1MCBsZWdhY3ktdHJ1bmsKKzgwODgxIDUzZjliODQ4ODJhMDU2OTU0MDdkNWFiZWU0Mjc2YTlmNjdlNWVjYWUgcHkzaworODA4ODIgYWIwYjI4NTVjOWU0MjkxM2EyZDVlMTZiYzY3YWMzOWUwMDVkYTU2OCBsZWdhY3ktdHJ1bmsKKzgwODgzIGFkZTgyOTNiYTQ4N2ExOTRiNDY4MTVhNGM3ZGFlZjU3MDc3MjBkNzAgcHkzaworODA4ODQgMmQzYWUxMmFkMDkzNjhkYzcwNTk5YmQzMjBjOTMzNWVlNDEyODJlNiBweTNrLWppdAorODA4ODUgN2U1YmRmNTlhNDg3MTM2MGU1YzA0ZGIxYTE2MGNjN2EwOTk3OTliOCBweTNrCis4MDg4NiA2OTNmNzRjNDJlNWVmOWRiM2E2YzI5N2QyOWU0OGY0MzBkYjMxMjFiIHJlbGVhc2UzMS1tYWludAorODA4ODcgOWQ3NmFmOTVjMTY2ZGE5MjdjZDhiMjM5ZmEwZGZkYjkwNjIyOWY1ZiBweTNrCis4MDg4OCA4YWQxYzc0ZDU5MDk3MzE1NTQwMWE2YTE0NmQ3ZjdjNzIxYWJmZDg5IHB5M2sKKzgwODg5IDJhYTYwNTE2OGYxMTJlMTAzNjk5NjFkNmNkODNkY2M3MGFiMWQyOWEgcHkzaworODA4OTAgZjE4MmUwOTIyZGM3NDc2ZjM2NWQ3ZGJkMWQ1NDEwYjUzMTg5NDQ2YyBweTNrCis4MDg5MSBmNDIzMDc2NWRkYmIxNzhkZjU4MDQ0MjQyYWQ3ZjAwYjE5MDE2NWVhIHB5M2sKKzgwODkyIDU0OGZhOGVkYjdmMGZiNzk4MzkyMjAwNWI4ODliZjYyYjQ0YzI0MTUgcHkzaworODA4OTMgNWFiNGI0ZWZjZjYxZjM3ZDUyZTE2M2IzYmUyMjg1OGVlZGI5ZDQ3NSBweTNrCis4MDg5NCBhMWM5YTkxMjYwZDkxYTNhZjVkODAwYzY2N2VjZTAzMjE3M2NiMTExIGxlZ2FjeS10cnVuaworODA4OTUgYTQ5MjU2YjIyNjk1N2EzMDkzZjE3ZWJkZTc2OTczNjcxYjMxNTU0NCBhc3luY29yZS10ZXN0cy1pc3N1ZTg0OTAKKzgwODk2IGIwYjdiYTI2YmU2YzE5MTc4MTIxMGEwMzI0OWUxZjQ4MzQ0OGM1MjQgbGVnYWN5LXRydW5rCis4MDg5NyA1ZmIzOTc3ZmIzNDFlMzdiYzk5NDc0YzUxOWNlNzJkZjQzMDVmNDE3IHB5M2sKKzgwODk4IDgzYzVmMjdhZjU3YzkyY2UwNDM3ZDY5MDRkMDY3ZDk4ZTNmZWRmZGQgcmVsZWFzZTI2LW1haW50Cis4MDg5OSBjYTc3ZWQ3Mzk4MjcwMTlmMjJlMTNkMDQ5Mzc0YzlhYzAzNzIwZjk1IHJlbGVhc2UzMS1tYWludAorODA5MDAgMGIwOTcxZGFmNThjMDA3MDcyNDkwNWQ4MzUzOTlhN2Y1MDE3OGZhNCBweTNrCis4MDkwMSBkNjE1MTQ4ODcyNmY4YWU3NjQ2NTAzMzBhZmY0NmZlNmU0YWViZmYxIHJlbGVhc2UzMS1tYWludAorODA5MDIgNTI2MDEwNGRiOTlkNzQzNDA2YjE1NTY1YTJjZTViYjQ4ZTA2MDYzYyBweTNrCis4MDkwMyAwNjllN2VmYTY0NWI1MTA3NjVlZTUwYjc2Zjc3M2RmYjc3YTQzODdlIHJlbGVhc2UzMS1tYWludAorODA5MDQgNTk4MWIyZGExMzFhMTI3MzQwNGRhZDJlYTdjZGQxODU5MDEwMjVmZiBweTNrCis4MDkwNSA0MjdjNzUwMGIyYjcwYzlmYzlmNTI0NjVlY2NjZTRiYTI5NGM1YWJlIHB5M2sKKzgwOTA2IDI0NTllZTZhYzdjN2FhZTAyZTA4ZTYwOTEwYWVjY2U2MTRjNGE5MzUgcmVsZWFzZTMxLW1haW50Cis4MDkwNyAxNjMyMTgzNDE1NmEwNDBlODI3MDY4YTExZDI4NmUyMDhhNDg3ZjU4IGxlZ2FjeS10cnVuaworODA5MDggNWM5MDk0NzkyZDFhY2NmNDA5ZWFlNDg3NmRiOTlhNzZjOGYzYzE3MCBsZWdhY3ktdHJ1bmsKKzgwOTA5IDQ5MGQxYzIwMzZlOTYzNTYxZTY4YzU1ODQ5OTExYjg5MGQxZmE0NjYgcmVsZWFzZTI2LW1haW50Cis4MDkxMCBmZTdlNTZmOTg2Y2Q0NTBmZTI0YzUzNGZkZTE4ZDE0NTA0MTJkY2YzIHB5M2sKKzgwOTExIGUzYTNlZDYxNGM3ZTA5ZTMzMjZhN2IyMDY4NDhmZWQ2YzA5NzA0NGIgcmVsZWFzZTMxLW1haW50Cis4MDkxMiA2MWM0Y2E5NGEzNjY4MjhkMmRkYjY1YWM1NDZjODFjNDAyODliMjlhIHNpZ2ludGVycnVwdC1yZXNldC1pc3N1ZTgzNTQKKzgwOTEzIGUwNDZhZGIxMDQ3OTdmNDNkNDY1NzgzMmY1YzdlNWM5NjdhNGRiNDggc2lnaW50ZXJydXB0LXJlc2V0LWlzc3VlODM1NAorODA5MTQgZTI5OTQyZWEyZmRmODQxZjE0ZTlhN2ExNzMxNzM0MzRmOTliOTQ0YiBzaWduYWxmZC1pc3N1ZTg0MDcKKzgwOTE1IDE5YmVlOGVhNDhkOGFiNTdiNTI5NzM0NDMxYWI4MTAzZGVkZjZkYjUgbGVnYWN5LXRydW5rCis4MDkxNiBkMDJiMzE3M2MzYzViOTIxMGMyYzEyZTg2MTdhODhhYzQ2MTc4NmU4IGxlZ2FjeS10cnVuaworODA5MTcgMzUzMjhmMDY5MjFjZTljZjU5MDA2YTM0N2ZhYzUzZjlkMWEyM2Y2MSByZWxlYXNlMjYtbWFpbnQKKzgwOTE4IDVhMzhlN2UxNmJmOGNiOTE4ODRkM2UyOGJjYmRlZjBkMzJkNjExNTIgbGVnYWN5LXRydW5rCis4MDkxOSBmYWNjNjkxNzU5YTFjMzE5NjliNWJiNDMzNWFmZGMwMWJkZDJiMmZmIHB5M2sKKzgwOTIwIDc5NjdiYzdiMDE4ZDRhZTYxODVjYmE4YWUyMTUwY2I4YTBhMjM1YWUgbGVnYWN5LXRydW5rCis4MDkyMSA5ZGFiZmMxOWQxYWM0ZmY4ZjRlYzljZTE0ZmE5ZDBlYWEyOGI2Mjg3IHB5M2sKKzgwOTIzIGY3MzdkNmNiYjA0NTYxZmEzOTI3ZGQ1MmU5NzE4OGNjMjI4MjNhNmIgcHkzaworODA5MjQgZjUwZDVjYTQ2OTBjYjY3OTkyNDJhY2Q0MjQyZGZlYmY3ZjM5NGZjOSByZWxlYXNlMzEtbWFpbnQKKzgwOTI1IDcxYWEwOThhMDgyZTI2MjM5ZTlmYzFkNzk1NmE4NTExNWRkZDM0MGYgcHkzaworODA5MjYgYjYwMjY3NmNhZGNkODViNWE5ODI3NDIzNmM0MGI2YzQ4M2E5MGYxMiBsZWdhY3ktdHJ1bmsKKzgwOTI3IGYxODk4MTkwNDUwNzlmOGFjMjBmMmU4NmQ5MjFlZjVlMzc4Y2NlMmYgcmVsZWFzZTI2LW1haW50Cis4MDkyOCBiY2IwY2Y5MjQ2OTNiZjA1YmVkMjQzYTZmNThlNjMyYzcwOWYyOGRlIHB5M2sKKzgwOTI5IDM2ODM3MWZhN2Y1YzM2N2Q0NDU4ZTJhMTRiNjdiZTJhZjIyYWQ4OTkgcmVsZWFzZTMxLW1haW50Cis4MDkzMCA4Mzk5NTM1ODBiNmRmY2M1ZTIyOWRkOTc1NWZmODZhNDE0MmE5YTBjIGFzeW5jb3JlLXRlc3RzLWlzc3VlODQ5MAorODA5MzEgNjU0NjFhNzA1NDk2N2Q4OTJhNTRlYmMyYTA4MDFjOTg4ZTBhZTdlZSByZWxlYXNlMzEtbWFpbnQKKzgwOTMyIDI2ZWRhYjk4OWQyZjg4NTU0ZmI4NjI0ZTZiOWY2YWE2ZDI1ODEzYmYgbGVnYWN5LXRydW5rCis4MDkzMyBmNThiOWRlY2UyNWViOGJkZTk5NDIxYjRmZTMxMThiNWJiMmYwOTg5IHB5M2sKKzgwOTM0IDlmZTU2MmEyZjBlMzE0NWQ4M2EyYjUwNDJmOGU5YjQ0YWYzYmJjOTUgbGVnYWN5LXRydW5rCis4MDkzNSBlOTJmYjk1ZjIzMTc4MmUwNzFiODQxY2Q1YzQ2ODRkZGJjZmI4ZGI4IHJlbGVhc2UyNi1tYWludAorODA5MzYgYjRmYWY5OWM2NDJmNzUxMDY0ZGYxNjA5YmJjYzRhNzk2ZDU3YmUwOCBweTNrCis4MDkzOCA4MjU4OTM3ZTEzOWMyMjYzZDc3YThhZTkxYmU5YTVjOThlOGM0OWQ3IHB5M2sKKzgwOTM5IDQ4ZDc5NTkxNjdkZWY3ZGJlOWE5ZjU2MTNlMzBmMGE1OTQ2MjRkMWMgbGVnYWN5LXRydW5rCis4MDk0MCAyM2JkNjFjN2RiYmNkNTU2OTg2YjMzYTQ0YjQwOTJkOTk1NzRhYjE3IHB5M2sKKzgwOTQxIGM3ZDA2Nzg5NTJkM2RiOGM3OTFmNjcyZmI2ODM1NTg3ZTI1MGVkMmEgc2lnaW50ZXJydXB0LXJlc2V0LWlzc3VlODM1NAorODA5NDIgMGUzOTgyYWUyODFkODIzNzVkNzJhYTIzOGRhOTdmYWYyMzM4MTVjNiBzaWdpbnRlcnJ1cHQtcmVzZXQtaXNzdWU4MzU0Cis4MDk0MyBjODY3ZDk5MWU5MWYwZDIyNDUxY2RkMzNhMjZjYzY1YmMzOTM1OWZhIHNpZ2ludGVycnVwdC1yZXNldC1pc3N1ZTgzNTQKKzgwOTQ0IGQ2ZGEzODE5NzdjZTUxNmU0YjQxNjdkNGM2YjJjMDcxZjhlZjE3NGEgc2lnaW50ZXJydXB0LXJlc2V0LWlzc3VlODM1NAorODA5NDUgYTkwMzcyMjQ5ZmQzNWRmNjY2NDM3MmFkMzBkMDA3Y2M1YWRiMzIxNiBzaWdpbnRlcnJ1cHQtcmVzZXQtaXNzdWU4MzU0Cis4MDk0NiBjYmRkMDEzZGFmNmQ2MTRkYzIyZjQ5YmM0Mzc3NWYzYzkyZjgwNDFlIGxlZ2FjeS10cnVuaworODA5NDcgZTJiY2NkMzcyY2Q2M2JiYzZlNGNkMzk0YzJiMjk5Mjk1OTM1NTkzYiBweTNrCis4MDk0OCA4NWFjMjdmYTkxM2ZiYWFlMmU3YTAwMDYxY2EwZmIyMDYzODE3MjQ0IHB5M2sKKzgwOTQ5IDA3YTQ3YTUxNDU0ODdhYjc3ODRiYTkxMzg3YmM5YmY5MmQ1MDQwNmIgcHkzaworODA5NTAgYTc3NDM3YmRlMzFhZjMxYzdlNGI5Yjc5MmM0ZmVhZWFkYjM4MGYxMyBweTNrCis4MDk1MSAxYWJiM2QzZTNlOGRmNTJmNmZkYWVlOGE0NWQxNzc3MmM1ODMwMmUxIGxlZ2FjeS10cnVuaworODA5NTIgY2JhMWQyMWVhYjNkMmNkZTgyZGI5MTY2NDkzNGYwNTQwOTlhNGQwYyBsZWdhY3ktdHJ1bmsKKzgwOTUzIDc0YWUwZWI5MzJkZWFkYWYzZTJlM2U1NTQyZDYwZWE3NGFiZmU1NWQgbGVnYWN5LXRydW5rCis4MDk1NCA1M2Q3NjIzMGZhMTg2ZjU2YmQ3YThmY2YxNWY4YWU3NTRhZmJiNTU0IHJlbGVhc2UyNi1tYWludAorODA5NTUgN2U2ZjFlODBiM2M2NTY3ZTcwYTBkNjdkOGVjZDJhYWU3ZDY5YjVjNSBweTNrCis4MDk1NiA0NjQ0Y2ZmMjUyNWJlMGRlN2UxM2IzOWI0MDI5ODc3NzUxZDI0NGFlIHJlbGVhc2UzMS1tYWludAorODA5NTcgZjg1MWU3YjZlMGQ1YzVkMGE5MTk2YzFmNTRiOWYzOTFmMjJkNzA3YSBsZWdhY3ktdHJ1bmsKKzgwOTU4IGJlZGU4NTA3ZjBhY2Q0YzhhY2ZmYWFkYzQyMGNmMGM1ZjNhNWE5NTggcmVsZWFzZTI2LW1haW50Cis4MDk1OSBkYjEzMzZjYzg1MWMyYTg1ZGIwY2YxYjYyNDNkYTk3MTcxZWU3Y2VlIHB5M2sKKzgwOTYwIDMyNGY4OTg4NmExY2I2ZGEzMmJlMjE5MWQxZDEyYmRjZGVkNWZlZDcgcmVsZWFzZTMxLW1haW50Cis4MDk2MSBkMDZlZjMwYTQ0MWVkYjViYWQ1N2QyYWNmOTBkNGViYWQyYmY0ZDQwIGxlZ2FjeS10cnVuaworODA5NjIgYjdhMGYwMjFmZjdkOTczNTg3ODhmZDQ2OTJhNzVkMzIwMjdjN2ZhYyBweTNrCis4MDk2MyBjMTQyM2IwYTkzMjkzNjc2NDUzNDhkZDliMzg1MzY5MWM4MTdjYmY4IGxlZ2FjeS10cnVuaworODA5NjQgNGY3ZTUwODlmYzk3YWU3YWY4M2ZlZTkyZWRmODAzYTVkZDk5YWMyMyBsZWdhY3ktdHJ1bmsKKzgwOTY1IGFmZTI1OTIzNTRkOTdiYzUxYWU0ZDk3MTcxNDNkYjE1MzRlODEyNGMgbGVnYWN5LXRydW5rCis4MDk2NiA0YTk0MGQ5OWVjODRiMWIyYWJiYWFhMGM5MjQ0MjdhMzJiMDNkZjVjIGxlZ2FjeS10cnVuaworODA5NjcgOTMwMzk1YjJkZTkwMzZiMGU3MjdkODI0MDEwZWY1ZjVhMmY3ZmU3MyBsZWdhY3ktdHJ1bmsKKzgwOTY4IDNmYWU3Y2I0OTIwOTViMTI5MWU2MTI5MDA1MTg0YmJmZmU1MWE1MzggcHkzaworODA5NjkgYzVmZGU0YTQyY2IwYTVlMTU3YTZjMWNmZmZiNzUwNDdmNWQ5Mjg2YSBsZWdhY3ktdHJ1bmsKKzgwOTcwIGY2MTRkYmVjMmY0Zjc5MmQ3ZDI3ZDc4Y2M1NzJmZGQ5MzFkMTBlMGMgbGVnYWN5LXRydW5rCis4MDk3MSAyMjdmYTdkYjUwZGVkMDNhODU0NjdiMDE1M2RiMTFlMjMyMzVmNjExIHB5M2sKKzgwOTcyIDBkOTczMmY2MDc3NjkyOTM0ZGNkNDg5MDgwNTVkMWM5OTM3MDMxNmQgcmVsZWFzZTMxLW1haW50Cis4MDk3MyBiMTBjM2EyNGQyZjlkYjhmZDQxZDhjY2Q1NDQzNGRjYTMzODU0NDU2IHB5M2sKKzgwOTc0IDYzZDZmNWZlZGJmMzE0NTY1YjI5Yzc4YjQwYzhhZDMyM2EwYjA5N2YgbGVnYWN5LXRydW5rCis4MDk3NSAxN2QyMWU5ZTYzMjAxMzNmYzJlOTIyNjA1ODMwYmE0OGU4OGJkMWNmIHB5M2sKKzgwOTc2IGI5NGMxMzNkYjQ1MTY2MmJhZDI5MzBlMTZlNTM0MzVlMTc0YjQyNzEgbGVnYWN5LXRydW5rCis4MDk3NyAwMjcwMTUxMWI3NTk2YzAwMThlZDQ1ZDcxNmUyNWIzMTAxZDlmNGU4IGxlZ2FjeS10cnVuaworODA5NzggMzNjYjViOTkyZDM5MmVhZjA0M2VlYmM4NmQ5NjA1NjVjZjZkOTQyNyBzaWdpbnRlcnJ1cHQtcmVzZXQtaXNzdWU4MzU0Cis4MDk3OSBiN2YwMmM2NzBiZDdjNGY4NmIyNzllMDUxM2EyMmNkN2E0ZjNmMjI5IHB5M2sKKzgwOTgwIDcwM2Y4YjExYjI1MGJkZjM3NDRjZjdmOTkyNjUwM2RkMjAyOTVhYWEgbGVnYWN5LXRydW5rCis4MDk4MSA5ZjQ2N2M2MmQ5NTQwOGU0MTJjOThjMmIwMjJlYzdjMmQyMzcyODIzIHB5M2sKKzgwOTgyIDI4NTIyMGYyNGNjOGYzYTNlZTUyNjFkNzMwZTQ0MGZiM2NiOTg0MjAgbGVnYWN5LXRydW5rCis4MDk4MyA0Nzg0NzFjY2Y3ZmQxOWVjNjNhOTAzMWYyNWU2YWNkZTU5ZTZmZjE0IHB5M2sKKzgwOTg0IGJlMWFkZjNjOGEzMzJjNWFmMmIzODRhNDc5YmZiMjNkNzRmM2ZhZWIgcmVsZWFzZTMxLW1haW50Cis4MDk4NSBlMjYzYWMyYmU0ZmQ0MjA2ODI4NGQwODg0ZmI2M2NkNDQ4ZDVjZThjIGxlZ2FjeS10cnVuaworODA5ODYgMmY3YWI5MjIxMjFhNDBiNzFjYWQ2ZGE4YzZiNTRlYTI2YWIzY2M0OCBsZWdhY3ktdHJ1bmsKKzgwOTg3IDMyOTNkYTgzZGYxZTMwODZiODJlMDdhZTM1MDVhNjI3ZWEzZTBiZjAgbGVnYWN5LXRydW5rCis4MDk4OCBlNDM1ODg4Yjg4MjVlNTdmMjY2NzFlNGY2NDdmYWM1NTQwZjc0NGE2IHJlbGVhc2UzMS1tYWludAorODA5ODkgY2FmYjYyMjVkZWQ4NmU2ZDIxZWUzOThiYTg5NmJjZjZmZjRlYjEzMCBweTNrCis4MDk5MCA3NDMzNTVlM2VmNGFiMTFiYzJkMzUxYzA2YzgxMDVlMTc5MDYwZjA3IGxlZ2FjeS10cnVuaworODA5OTEgOGZmOGYwYTUyNmRkMDdiNzQyOWNlZmE1NjIzNDY2ZjEwNThkMGIzNSBsZWdhY3ktdHJ1bmsKKzgwOTkyIGYyY2IzYWY1NTYyZmJkOTA0YmI2MTUyYjY5ZjE0MWMzNjgwMWExOTIgcHkzaworODA5OTMgZGNjZGZiZTU3N2JhNTcyZDY2NDYwNzlmYzY3NzQ1ZTRkNjMzMzk1NCBweTNrCis4MDk5NCAyNGVjNzI1OTQxOTY1YTkxZmUzMTIxZDQzNTc2ZWVlNTA0NTM2MjMxIHJlbGVhc2UyNi1tYWludAorODA5OTUgMzFiOTQxMmNhZDAxYmQwM2ZjNWYyNzc1ZjFhMTAyM2NlYTIxMzk2OCByZWxlYXNlMzEtbWFpbnQKKzgwOTk2IGYyMTk0ZTY4ODgxZWJmNDM3NjE5YWMwYmY5NTA5ZjQ3OGZhZDdhMGUgbGVnYWN5LXRydW5rCis4MDk5NyBkNmRmNzQ5NzgwYzU0NzkzYzc1ZjQ0MzcxNDkxYzZiMGJiNDVmZDAzIGxlZ2FjeS10cnVuaworODA5OTggNmJiOTg5MWQ0Mjc1YmQ0MmE2OWIzZDkwM2QxM2I2ODc1NDNjOTE1ZCBsZWdhY3ktdHJ1bmsKKzgwOTk5IDg4Y2Y1NzZmOWNlZWEyNWYxZjc5ZmJiMjlkODBiYmZhY2ZmZDJlNmUgcHkzaworODEwMDAgZjBmNDExOGM3NmU5OTBmNmZhYTNhM2E2YzNkZGUxNTE2NTdiZGI1NyBsZWdhY3ktdHJ1bmsKKzgxMDAxIGYxOTFkNWY4MGViMDQxYmFkZTU1NDI2MTdmZTU3NWJkOWRjZjU0M2IgcHkzaworODEwMDIgYmVkMDQ0OTIzOThkZWQ2MDYzNmY1YTIxYTg2ODk4NTlhY2ZmYmIyYyBsZWdhY3ktdHJ1bmsKKzgxMDAzIDY2M2IzOWQ0YTdlZjdkNjc4N2IyZWJiZWE4MDBiMTlkZjJhMTcxM2IgcHkzaworODEwMDQgNGRhN2ZiYTMzNzBmY2EwZTg5OTQxODlmMTI4YzVmYjRlZTY4Y2RlOSBsZWdhY3ktdHJ1bmsKKzgxMDA1IGZjYjIxZDJjZWI3M2IyOTMzOTE0NTA3NWZmNDhjY2M0MWExYjZmY2UgcHkzaworODEwMDYgYWI5YWU1Njc2YWRhZTcyNTFmNWRhMTJkYjk2ZTRkNzQ0ZTE5MDA2OSBweTNrCis4MTAwNyA0MzVhODM1NWRhYjZiZWZjNDcxNDFkYzIxNmMxMGRiMGYyYjFlY2E2IGxlZ2FjeS10cnVuaworODEwMDggNmZhOGUxMzgxYjQ5OTNiMTUzNjBmMWQ4ZThkMjVmOWU4NDk2MDRlOSBsZWdhY3ktdHJ1bmsKKzgxMDA5IDExN2I0YjgxYjg2NDAyZmYyOTlkNzg4ZjYzMmJlOWZjNGEwNjRiYjEgcHkzaworODEwMTAgMmU5YmM2MWMxYzFlYzcxODhjZmRlNmE4MTc5MjE2OGNlMWMwNGIyMSBweTNrCis4MTAxMSBmYjcxOTA0OTA0NGZjYzhhZDc5MTNkMmZmMzQ2NzBmNTgwNDNlZDhjIHJlbGVhc2UyNi1tYWludAorODEwMTIgMmM5ZTA5NWQ1MmYwMGRkNjNiM2E5ZDc3MTcyNDNlOWQ0OGVmNGQ4MSBsZWdhY3ktdHJ1bmsKKzgxMDEzIDUwZmEzZjRjODI5YjM0MWI2YWFiMDAyOTQ1ZmE5ZDRiMmM1OTk3MTMgbGVnYWN5LXRydW5rCis4MTAxNCBkZDFjOGZmMmU5OTAzMDgxNzQwMDljYzVlZGNjMGNlOTJjNzU5YjhiIHB5M2sKKzgxMDE1IDExMzliNWQ5OTZiMDA0MTQ5MmIwYzA0Zjc4ZmY2MGU4NDE5ZDZmODUgcmVsZWFzZTMxLW1haW50Cis4MTAxNiBiOTY2ZDU4MzVkM2IxMTBhZTM1MWVlYWE5ZDFiMzUyM2Y2MjNlZDU4IHB5M2sKKzgxMDE3IGQzMTVhNzlmMWVjY2VlNTQ1MmNiYjE1YTQ3OTJkMjY4NmIyNThmYmMgcHkzaworODEwMTggNjc3NTExZWRmMDVjNzgzYTllYzkzZTNjMWYwZmVkYjhhMDQxM2RhNSByZWxlYXNlMzEtbWFpbnQKKzgxMDE5IDAzNzUzMzE2ZjgxZjdiMTM3ZmQ1ODlmYjZjYTE1MDEyMzI2OWMyMTQgcHkzaworODEwMjAgNmEyZDBjYzdkNjA0OWNhNGUwMWZkNWZiZmVkMDEyYWRmZWQwM2M1ZiBsZWdhY3ktdHJ1bmsKKzgxMDIxIDMwM2RiMjI2MTE1ZGQ2Y2RmMDkxYjAyYmEyNzIyOWU3MjA2ODQ4M2YgcHkzaworODEwMjIgNzI0ZTg3NWIxOTQxYzU3ZjFiMjFkNzQ2OWMwZjlhNTY1OGFiZDUyYSBsZWdhY3ktdHJ1bmsKKzgxMDIzIDIyOTRiY2Y0MGU1MTk1N2QxODBkYTFmNTRkNjNjNmNlMmM5ZTllNjQgcHkzaworODEwMjQgM2RjMjVkMDI0YTUxYzM0YjVmZmM0NjQyMDk0YzBhNTljMWM4MjFlZiBweTNrCis4MTAyNSBmOGMxOWM1ZjVkZDI0ODNhMDE0NWQ2OTEyYjlhYzI4ZTMzZjNmNmJlIHJlbGVhc2UzMS1tYWludAorODEwMjYgZDY5OGZiMDU2YTQ1OWM5YTJlNDBjYzI2NDRhNDQxN2M5NjFhNGY3OCBsZWdhY3ktdHJ1bmsKKzgxMDI3IGI2ZTAzY2E4YTIwNmRlZjMzMTYyOTkwOGQ4NTE5OTkyNDA5YTk4ZGEgcmVsZWFzZTI2LW1haW50Cis4MTAyOCAxOWFhYzg0YWMxZGFkZWJhZjhiN2Q2YTExMGI4Yjg1ZGFlOGZhOWI3IHB5M2sKKzgxMDI5IGZkMjUwMzAyMjNiMDcwMjcwMDJlN2Q2NTk1NmU0ODAzY2M3MDZiN2EgbGVnYWN5LXRydW5rCis4MTAzMCA4NGJhZjYyNThjM2JmMzg1Mzk3NTJiYjNjOTBlMWUwZWQ3ZGJlMTUxIGxlZ2FjeS10cnVuaworODEwMzEgZTM4MzM1ZDRkZjkxZGU2NDI3YzlhMjFiNTQxZmNlNGY4MmQ5NTY1YyByZWxlYXNlMjYtbWFpbnQKKzgxMDMyIGNhYjE0YmUwYWRhMTU5ZGE5ZjdkOTRjNWVlN2M1NmU2MWUxNTdiYzYgcHkzaworODEwMzMgZjE5NzQwN2JkYmEyZjdkNjQ0OTIyZWY3OTM4OGQ1YzhiNGFjODU4YSByZWxlYXNlMzEtbWFpbnQKKzgxMDM1IDVlYTBmNTg1OGI3MjJhMTJhN2U5YTkxNTkyOGIxNTNmZjQ4MWFiNjcgbGVnYWN5LXRydW5rCis4MTAzNiBiYzBjZWE1ODQ0Nzg0N2YyM2QxYjQyNjA0ZmRiYzUwMzQyMDY3N2ZjIGxlZ2FjeS10cnVuaworODEwMzcgNWNhZDEwYjI3N2E0NzgzMTM3ZTgyODZiYjMxNDNiYTk5MGU1ZGQzNiBsZWdhY3ktdHJ1bmsKKzgxMDM4IDY5Y2U2YzkzN2Q2ZWM5ZWU0Zjg3YTg2OGQ2ODUwYWYxNWQ4NzY4NzkgbGVnYWN5LXRydW5rCis4MTAzOSA0M2QwMTY5ZGY5NDNmYTAzMzVlN2NmZmYxMjBmNzVlZmFkNTMwMGQ5IGxlZ2FjeS10cnVuaworODEwNDAgMzEzZjg1NTg2ZWY4ZWI4MzU0YTAxZDE1NDQ5OWUwNDM3MjcxMWZkMiBsZWdhY3ktdHJ1bmsKKzgxMDQxIDY3ZGMwYTk4YjhmNmZjOTI1ZGQ3M2U3N2MwMDE5ZDFkYTc1NzVjY2IgcHkzaworODEwNDIgZmM0NmU0MzcyMjdkNjI5MWQxMWY4OWZkNTAxMjk0MWQzOGE1MzE1MCBsZWdhY3ktdHJ1bmsKKzgxMDQzIDVlYjBlNTQ1MTYxMjQ3Y2ZlNmZlZDIwN2JjY2UxZTNkN2U0M2YyODIgbGVnYWN5LXRydW5rCis4MTA0NCBmYjE5ZWM1Nzg4NTMzMzljNjAwMGE0ZWY4YTYyZWY4Y2FjY2RjYWMyIHB5M2sKKzgxMDQ1IDQ4OGRiZTI2MmY2ODFkNGExOGU5MTgyMTZiZWQzNzY1MTE1ZjI4ODMgbGVnYWN5LXRydW5rCis4MTA0NiA3ZjVhNTcxYjFlY2I4YTI4ODA3MmQ4ZWRlN2I5MGFlNDFhNTQwNmJlIHJlbGVhc2UyNi1tYWludAorODEwNDcgMjBhZTgzODIxZWYwNTM3MjkyZGYxZjBhYjlkY2EwMTQ0ZjkwZGE1ZiBweTNrCis4MTA0OCA4YzQ5OWNiMzcyM2E0YjA5ZTUzYzJmM2JkYTIzOGFkNWZkN2U2NmRlIHJlbGVhc2UzMS1tYWludAorODEwNDkgNzM2ZDZjZTliNjBiYWE5MzRkZDRiYWQ4Y2Q0ZjRkNTM3ZWUyMDU0YSBsZWdhY3ktdHJ1bmsKKzgxMDUzIDk0NTczOGUxODcyNjM5MTRmZWI0MzlmMjJhZDAwNWJiNGZmOTdmNWEgbGVnYWN5LXRydW5rCis4MTA1NSA2YThkZmZmNmQyNDFiNTAwMTJiOTA3NTM4MDY1OWRiNTMzYWZkOTRmIGxlZ2FjeS10cnVuaworODEwNTYgZTY0Nzk4YjM2ZWE0ZGVmMDZhNjcyYWY3NzE0YWI5NDVhOGEyZDRhMSBweTNrCis4MTA1NyBkYTZjZjhmM2Q4YzJlYzg2ZDI1OTgyOGYzYjI3NjY5NTJjYTg3YWJlIHB5M2sKKzgxMDU4IGYwMjViNmIwZmUwZjZmOWJkYWRiM2ZmZGJhZTRhNzVmMDcxY2E3MGQgcmVsZWFzZTMxLW1haW50Cis4MTA1OSAzMTQ4ZDcwNTI4YjYwNjcxNjVjNzA2NzRlYWU5NzNjMzdjOWFmMzg1IGxlZ2FjeS10cnVuaworODEwNjAgZTc2MjllZmM1NWQwMDdlNTI0N2Y2OWQwNDczYThlYWU5YTQyNjQ2NSByZWxlYXNlMjYtbWFpbnQKKzgxMDYxIDBmODUwN2Y1NDk0MjllMGMyYTQ3MmM5NzdlMjU3OTM2NDMyMDI5MDQgcHkzaworODEwNjIgYmJlOWY5OGEwYzAyMGNlZGU2NjdmZWEzZDkxODZmZThmN2NlZDg3ZSBweTNrLWppdAorODEwNjMgODI5YTg2ZTExYmQ3ZTE0ZTkwZGJkNjRiNGI3YzMxODQ4MzNmZmUzYSBweTNrCis4MTA2NCBmMTM1OGFhMzNhNmUyMzRmZDE3NWQ0YzY3NzkwYTdlOWYwNmFkODdkIHB5M2sKKzgxMDY1IGNiZmQyN2RiOGRjMjc4MDdmNjk5N2JjY2Q4NWJhMjg3ZjM0NWFiZWYgbGVnYWN5LXRydW5rCis4MTA2NiBmYzllMjE1OTY5ZDgzNmEyYWYzMGUxOTYxZThhNjM3MDBiOGFjY2UyIGxlZ2FjeS10cnVuaworODEwNjcgNWFiMDQ0Mzg1NmNhYjhhMmU1MzQ0NzA0NjY1ZGJmZjgxZGI0Njc3YiBsZWdhY3ktdHJ1bmsKKzgxMDY4IGQ2MDRmYWI3NDlkZDc0MDNiZDhkNDIzYWYzMjNjZTYzODBlNzRiMmIgcHkzay1qaXQKKzgxMDY5IGM3NTUxMmE4NWZkMWFlYzNiYTMzZWU3ZTYxNjNjYWI0N2EyMjZhZjMgcHkzay1qaXQKKzgxMDcwIGI2NmViYjc3NzU2OGIwZTllMjBhYTU3OWJjMWQ3MmVmNmYwYTM0MjUgbGVnYWN5LXRydW5rCis4MTA3MSBiYTBmZTAyNGU4OWZkNGNhNTU1NmUzMTVkOWQ5NTVkZTQ4NGFhNjc4IHB5M2sKKzgxMDcyIDQ1NDA4Y2I0YjcyMzJiOWYyNGQ5Y2NjYjIzNDEwNDFkNDM5YjEzNTggbGVnYWN5LXRydW5rCis4MTA3MyA2NDlkNjcxMGE4MWZmNzU2ODUzMDY0ZGMzOWFjZmFkOGFiMzM3MzliIGxlZ2FjeS10cnVuaworODEwNzQgZjgwZTkzNTgyYjdmZTZkZTgzM2VlM2M0ZmJjZDRkZWYxODc1NmE2ZSBweTNrCis4MTA3NSAwMDIyMGViZWVkMGE4ZjI0YjRjZDdkMDM1NjM1YWJhZDRmMGFiZjY2IHB5M2sKKzgxMDc2IDhhYzBmMGRiNWY1OTc1ZmVjYTdlZTQ3YmNlMTE4YWE4ZDMzMTllOWYgcHkzaworODEwNzcgZjE1ZDZmMWEyZmEzMGVkODNkN2MyMzVlNmQ3NjNjMzc0YWY0NGNmYyBsZWdhY3ktdHJ1bmsKKzgxMDc4IDFmNjlmMjgxOWQzMTM1N2Q0ZWRlYmIyNjdlZTNlZmI0NDllZjM5NDIgcHkzaworODEwNzkgYzBkZDMzYTVhZGJlNmM1YTJhMDgyNjQzMjFkMzliODA4MmNiZjBhOSBsZWdhY3ktdHJ1bmsKKzgxMDgwIDBhYzExZGI1ZmM5NmU0NzA1MzlkMmVjYzVlMmNmZWQ1OWNlYzI4NDggcmVsZWFzZTI2LW1haW50Cis4MTA4MSAwMTE5NDBiYWVmYjBiZTkxMzU4MjAxMjA2Y2Y0NjI2NDgyZjkyMTE1IHB5M2sKKzgxMDgyIGZiNjJlM2E5ZDg4NmZmYmFhMWM0NzNmYjg4MTUwMjlhMDg4NTMzNzAgcmVsZWFzZTMxLW1haW50Cis4MTA4MyA5YzMyMWFhZWVmMTI2MDg2YTM4MjdjMjNlMzQ2ZjVlYzMwZmYyNjU2IHB5M2sKKzgxMDg0IDgxYTNhMzIyNmNmNWRkNDViNGQ3MmIxOWE4ZGYzMWFlYTI2M2QxNDMgcHkzaworODEwODUgOWRmZWQ4ZGQxYzZkOTg5NTQzYTQyNGM0MDhiYjk5NmJhN2VjOGM4MSBweTNrCis4MTA4NiAzNTNmNDBlZWQxYmM2ZDRlY2Q3ZmYwZTI1Nzg1YWU2ZmRmMTQ5YmUwIHB5M2staml0Cis4MTA4NyA0ZmQ3ZmVhNTllNWIyYmNmMzcwYTY1Mjk5YzE0YjZiYjQyY2Q5N2Q2IGxlZ2FjeS10cnVuaworODEwODggM2U2Y2E0YjAzYzc5YTRkNGY1NmVhZjY5MGFkYmZhMjhhMTk0OTMyMCBsZWdhY3ktdHJ1bmsKKzgxMDg5IDgxMWZjNjMxOTBhN2NkMWE3MmQ3ZmY1ZTdiODE2YWRiZDRkZjgyMGYgcmVsZWFzZTI2LW1haW50Cis4MTA5MCBkZmY2ZmMzODg4YzYyZTk4ZTljNGNlMDFlNTc1OTkwN2UwNDdlNmZiIHB5M2sKKzgxMDkxIDg2ODAxZDFkOTAzODZiYWIwNmFlZWE5NzJiZGZjOGEyZDEzN2Y1YTcgcmVsZWFzZTMxLW1haW50Cis4MTA5MiAzMGY0YmJiYWRlMGI3MTE3YjUzNzkxYzg1MDVjYmIxZGQ1ZjIzMGUyIHB5M2staml0Cis4MTA5MyA0OTU5YjZmNWJjODZjZGM1MDdkOGRhNjQxMDk4NjNhZjliZWMyYzg2IHB5M2staml0Cis4MTA5NCA1ZTM5MzRhMzFjOGRjMDI4ODViYmQ4YTI5OGY0YjFiZGMxOGY0Y2Q4IGxlZ2FjeS10cnVuaworODEwOTUgYWYyZjg0ZTY2MjUzN2MzOWY1MGI4YmFiODRjZmQwN2JkNzhhOWY1ZiByZWxlYXNlMjYtbWFpbnQKKzgxMDk2IDU0ZGMxMDk4OGYxNTRjMGRlZmU2YWFmNjYzMzFlNjliNzhjYTc4ZTEgcHkzaworODEwOTcgZWY0ZGUwNTNkNTc3Zjg1ZmU4YWZmOThjNzNmOGM0NjZlMzhlZDAwYSByZWxlYXNlMzEtbWFpbnQKKzgxMDk4IDNhOGNhNjdhZTQzMTFiMDQ5ZDFmOTk4YzU2OTAwODE0MWJlZThjZTUgbGVnYWN5LXRydW5rCis4MTA5OSAyYTcwYzgwMzQ5YjBlZDBhMDJlYjAwYjc3NTYxMjliMTAxYzJiZjQzIHJlbGVhc2UyNi1tYWludAorODExMDAgNDhkOTY2NGM0N2EzZjU4NzMxMzE2OGYxNTc4YjRmMjliOTkxOWY5MiBweTNrCis4MTEwMSA0YjEwZWY4YTAyNGNlZmEzMzA3N2UxYzM0ODRjMmU1OWEzZjA1Y2QyIHJlbGVhc2UzMS1tYWludAorODExMDIgMjFhODFjN2FhNGJjNTBmNzhhMzAwNzgxMzFlYmE4YThlZWUxMzgyMCBsZWdhY3ktdHJ1bmsKKzgxMTAzIGI5ZDRhZGY4YjE3ZTlmZjBhYmJkNTcxZDc5MzI1MjVmZmQxNWI4ZTQgcHkzaworODExMDQgNGI4OTYzY2Y4MGIyODZkNjhlNTE4ZWE2NDYwYjdmYzQyZWIzNjU1NSBsZWdhY3ktdHJ1bmsKKzgxMTA1IGI3NjA0ZWEyZjQ3ZTdmNWUwN2FlOWYxNzA2MGFhMTBmN2NiZjQ3YTQgbGVnYWN5LXRydW5rCis4MTEwNiA3M2YzYjg4NTE3NWRiMzdlMDFhMDk2MTU3NDcyZGFhMmRkNjA2ZmY2IGxlZ2FjeS10cnVuaworODExMDcgNzczNzE0ZTVlYWFlYzk2MzAxZDFjZDliZWIyNmExZjM5ZDBjYTIwYiBweTNrCis4MTEwOCAyZGRjZDMwNTMzZjcyZmQ2MDc2Nzg0ZjY5YWEwOGExODg1OWZkZWEwIGxlZ2FjeS10cnVuaworODExMDkgNmY0Nzk2MGI1NjQ3ODlkY2Y4ZTgxODNhNTI1NjI2ZTg2NWFiYThjYyBweTNrCis4MTExMCBlZmFmNjJjMmNmNzU5OWI0OGNmM2RhZWYyODc3NGIzNjQyMzZjODdkIHB5M2staml0Cis4MTExMiA1ZGViZWNiNDgyODJkYWEwNDg4Y2I3MTAwZWFiMjU3ODNmZGFjODNjIHB5M2stY2RlY2ltYWwKKzgxMTE0IGI2NDY0MDE0Y2FhMDc2NzZiY2Y5Y2MzYmMwODNlMTJkODViYjc3YjcgbGVnYWN5LXRydW5rCis4MTExNSBlMTgzNmE3YjZiNmU3NjljOTY4MzIxMTM1NmI5YWY1NzRjZjIzNmY4IGxlZ2FjeS10cnVuaworODExMTYgMWIzZWJlZDhiNmM2NTJhNWU2YmFkODRlY2Q4ODllM2MyNWFkMjM5MiBweTNrCis4MTExNyAwMTNkNzZhYTg5NTFjMmM0ODYyZTdkMWE0YzRlMmYxOWY1Mjc3MTgyIHJlbGVhc2UyNi1tYWludAorODExMTggMzMwMjczZWM2MDI4MzlhYmViNzgyNDMxMGY0YjI1ZDA2NDFhNjQzNiByZWxlYXNlMzEtbWFpbnQKKzgxMTIyIGMxYmE4ODE2YjE4N2U5MzU2NWY3MjhjYzQ1ODZiMzljYTgyZjljYWIgcHkzay1qaXQKKzgxMTI1IDllYzdhY2YwYTAwNTg3MGZlODg5NmUwM2Q5MmI4ODk1ZDc2YzBjOGUgbGVnYWN5LXRydW5rCis4MTEyNiBiNTU0ZWVhMjYxMGNjOGQ3MDJlNjMzMjM3NDQxMDZmNGQ1MzMxNzdhIGxlZ2FjeS10cnVuaworODExMjcgOTFmNDYyYjkwNGIxZmQyODY4ZGUxMjZkMzc4OGVhNjViOTM0NTU4YSBweTNrCis4MTEyOCAzNGE2ODZmYmZmZWI5ZTVhNjViMzNhOTEwMmU1Mzg0Zjc5MWNiMjFiIHJlbGVhc2UyNi1tYWludAorODExMjkgMTAzNWE4ZmQ3ZGZiOTU3MTFjNzU0NThmMzAwZDAyMDYzZmQ0M2RjMyByZWxlYXNlMzEtbWFpbnQKKzgxMTMwIDA2YzZkM2E2N2MxN2IxZjg3OWJmYzE2YTRlOGZhZGU1ODQ0ZTY2NDAgbGVnYWN5LXRydW5rCis4MTEzMSAyYzI5Y2Q1NjY4Yzc3Mjg1MmU2M2ZiYWQxNmQyNTFhZjdiYjQ3Y2RlIHJlbGVhc2UyNi1tYWludAorODExMzIgZTU1NjMyYWE2OGU5NzQyZWQ0ZWVkOWZkZGQyNWQ5MWYwODVlZjNiNiBweTNrCis4MTEzMyA5MGE5YTM0ZTVlYjUyM2MzZWFlMmZjNjBlMTRkNjA3ODNmMzlmZjMyIHJlbGVhc2UzMS1tYWludAorODExMzQgODQxMGY4M2ZkMTU5ZjZlZTUwODcwYmU5ZjI0MjQxZDg3ZDkyOTVjMyBweTNrCis4MTEzNSA2OGJjMzU3NzVkMzEzNDAxNzU4MTIzMTE2MGVjMGQxYmJlMzhmYzA2IGxlZ2FjeS10cnVuaworODExMzYgYzgwNmVkZjhkNzM0MGVmZjFiMmZiNjc1NDM4ZmRiZDFmMWJhZjM0NCBweTNrCis4MTEzNyBlYmE0OTQ3OGFhZDk2NTE3NmFhMGZhMzE1NDY2MzgxZThiNTFlNTkwIGxlZ2FjeS10cnVuaworODExMzggNDMxYTE1MWUxMDJkNTI2Y2U4MmNlZDUzNGZiY2IyZTg1NTBhODFmOSBweTNrCis4MTEzOSA1MzYxZjZkZDEzOTk2MzljN2ZmYTEwYjM4YjU2MzViZmRkYjZmYmZmIHJlbGVhc2UyNi1tYWludAorODExNDAgZWU1OTZkYTg2MmY4MjdlNmU5OWM4NWYzYjlhYzRkZjQyMjJjMGFiOCBsZWdhY3ktdHJ1bmsKKzgxMTQxIDZjYmQ0YmNhMDk3YTBhZmQzOWM4YjVkMGY3ODRkZjVkNDY5NDNjODggbGVnYWN5LXRydW5rCis4MTE0MiAxNjk4YzU1YjJhZjk0YmNlNTQwODU0YjA4NzUzZTVjYjNjMzFkNWNkIHB5M2sKKzgxMTQ0IDkzNzkwODQ3MTc0YTc0N2FkNGMzZmUzZTdmZWQzNTdmODYwMWUyMTkgcHkzay1qaXQKKzgxMTQ1IDA2MzY0ZGFkOGRkZDE1YTRmMDQxZTdhNmU3ZWNlMWQwZDJmNTA1ZGIgbGVnYWN5LXRydW5rCis4MTE0NiBlNGYyNjk2MTVhMjVjY2UzMTIwMjYzMDUzZjEwNjZhODFlMjBmMTZmIHB5M2sKKzgxMTQ3IGIzODZlYjgzNDc1ZjQ5ZjY3YWYzZGM3Y2VjZDhkZjQyZjg5MTMzYjYgcmVsZWFzZTI2LW1haW50Cis4MTE0OCBkYTNmYTg4MWE4MDAzOTA1MjBiZmZlNjk5ZGIxNDRhM2Q2YWM4ZTYxIHB5M2staml0Cis4MTE0OSBlMDk2YWFlNTM1YjliNWJhOTNhN2NiNzMxYzI4M2NiZjFiZmI0YjVmIGxlZ2FjeS10cnVuaworODExNTAgMmZhNzNiMjliMzA1OTc1MDdiNmZkMDY4ZGYzMmZhYzI4YTMzOGI1NCBsZWdhY3ktdHJ1bmsKKzgxMTUxIGNiOWUwOWYzZmE4ZWVjM2M5YTQ1YmE0NmVmYmQzZDhkNzIwNDJkZDAgbGVnYWN5LXRydW5rCis4MTE1MiAzMWNmMWIxMjUzMGE5ZDBhZWUzYzI1ZGM4MzI5OWRjOTgwZjc0MmViIGxlZ2FjeS10cnVuaworODExNTMgYWU0YmI2NzAxMDc4ZTBlM2JjNDU3ODRiOTA0YTRlMDZlNTY0NGI2MyBweTNrCis4MTE1NCBjYTQ5NmJmYWNkMWJlNWI3ZTA1NDNhMGFmOGE0ZWYxOWYwNzZlNzFkIGxlZ2FjeS10cnVuaworODExNTUgY2NmMWNhNzNjMGU5Nzg5ZTVlNjg0ODM5YzY0ZjRkMTU4YjNkMGE1MyBweTNrCis4MTE1NiA5ZTViNzNlYTZhN2NlMWZhMWM3NjQ1NzRiZDg0MjFlZjNlMWZiMTViIHB5M2sKKzgxMTU3IDlmNjJmNTg2NWI0NDFlYjgwOTkwYTcyMTI5ODNhOTMyYTQzYzFmOTEgcmVsZWFzZTMxLW1haW50Cis4MTE1OCAyNjIyNzk2YWVjYTk0ZWEyZmI2NGVmM2UxMTg0NTVlMDU3N2M4OGYxIHJlbGVhc2UyNi1tYWludAorODExNTkgNThhNTZhYmEwZWIyYzJlMjRiNTNlYTlhNTFkNmZmNWU0YTM4MzJhZiByZWxlYXNlMzEtbWFpbnQKKzgxMTYwIGE2YTY3YjczNGQ4YjM2MDNiYzYyNTU5MzcxZThjNGUxN2ZmNWUyY2EgcmVsZWFzZTMxLW1haW50Cis4MTE2MyA3NDJmMTliNDcwMjA0Yjg1YmZkYjM0ZjhmOGMwMWJlMDNlNzk2NDEyIGxlZ2FjeS10cnVuaworODExNjQgMGNiMGZhZDUxNGYzNzUyMWM2NmEzYTc5YTVjN2YwMDg1NzhmYjU3ZCByZWxlYXNlMjYtbWFpbnQKKzgxMTY1IDNiMjQ3YWY2Y2VlNzkyZGNjYzQ0NmVjNmM1NGI1YjIwZTEwZDk5ZDIgcHkzaworODExNjYgMjUyZmU1YzRjZDUzZjg2ZGQ2OWFiNGIyMTE5YTUxN2RmZWI5OWE5YyBsZWdhY3ktdHJ1bmsKKzgxMTY3IGVhZjgxYTEzMGFkNmM0NDk5Y2UyZDA4Y2Q0MWYzMWVlYTBkZTU2NTYgcmVsZWFzZTI2LW1haW50Cis4MTE2OCA5ZWUyMjhkMDg5ZWRkMjhmODZhY2VmYzhjMDljNTUwZmVmMTFjYzMwIHB5M2sKKzgxMTY5IDJiMGFmNjlhZWY5N2QyMjhlY2Y3MmMyYThkMzE3N2IxNGYwYTU4ZDggcmVsZWFzZTMxLW1haW50Cis4MTE3MCBhYjMxYjAwOWExZWUyOTM0YjBiNmU4ZjE1Y2I3YjZkODgxNGE1NzU3IHB5M2sKKzgxMTcxIDljMWEyYmQ1MTUyOGMzYTdkNTUyYzAwNTIzZTM1ZGIyYzg4MGI4MDMgcmVsZWFzZTMxLW1haW50Cis4MTE3MyAzMDlkOWNmODQ4MDg1MGU0ZjhlYWIzOWVmOTlhMjkzODdmY2Y1OGJjIHJlbGVhc2UzMS1tYWludAorODExNzQgNTlmZjdkODEyYWUzNDJmNjUxNGUwM2QxN2Q0NTFhY2FjNDgzOWQzMCBweTNrLWppdAorODExNzUgMjM2OWQ0ZjE4OWU0MmM2Nzc0NDE1NTAzOWJmMDk3NDM5MDViMzRmMiByZWxlYXNlMzEtbWFpbnQKKzgxMTc2IDExNGM0YTQyZmMxZDAzMDczYTNkZmVhMWUzMzQ5YWE5YzgyMDkyN2MgcHkzay1qaXQKKzgxMTc3IGE4MTRlN2U3MjkwMGZhZjQ4ZmQ4OGYxMDcxYTJkYTU1YjRiNmVkZTUgcHkzay1qaXQKKzgxMTc4IGZkZTliNDM1NDVmYmFmODNjMTE2YTk2MWU1NDI5YTZhNjAwMDk3MmQgcHkzay1qaXQKKzgxMTc5IGU2YmZlOTNiNjViYmRhMjQzZjUzMzJkMGZkOWMyY2JmNzQzNDQ2NTggbGVnYWN5LXRydW5rCis4MTE4MCAwZDAyOGQzNTkwZGEwM2Q4OTU3ZjhhNTNjYmJlYjg4M2VlZThmYmU5IHJlbGVhc2UyNi1tYWludAorODExODEgZmE5MDJmOGUwZGIwZWRmODBhNjZiZjM3YWY0NmExYjc4YjUzODM0YiBweTNrCis4MTE4MiAwZTM3YTk1Y2RjZmI1YzczZjc3NmRmMDhkNzVmZTUyM2IzYjkxZmZjIHJlbGVhc2UzMS1tYWludAorODExODMgNzcyMDM2YTZmN2VmMDI4NzljM2M1ZWYyN2ZjZTZkNDcwZGM1YjQxNSBweTNrCis4MTE4NCAzNjNlZmZiNWY3MjdmODg2NGQ0MGQxN2U5NDQ0MTIxYzBhYWZhMzRjIHJlbGVhc2UzMS1tYWludAorODExODUgZWRlZjg4ZjZmMWFiNjExMjc1NzE2ODZlY2ZkMzkwYzAwNzM0NzM1NSBsZWdhY3ktdHJ1bmsKKzgxMTg2IDA1YTJhYjI3MWI2NWY0ODM2ZDk2MzI0YzIyYWRmMDY3M2QzZGM4N2UgcmVsZWFzZTI2LW1haW50Cis4MTE4NyA5OGMxNjEwNDAwMDJjNTI5MzhiYWFhOGFmNjBmNzhhYmU4MmU4ZDk5IHJlbGVhc2UyNi1tYWludAorODExODggZDk3MmQwNTJlZTIyMTdhYjM4ZGYwODUxNTUyZTBlYTM2YjI1M2RiOCBweTNrCis4MTE4OSBjNGUxMWIwYzdlZTUxODNiZGRjMjJjMmFjYTRmYTdmNzc2Y2NjMzIyIHJlbGVhc2UzMS1tYWludAorODExOTAgNDdiNGRhODZiOWI5ZjVkMGYyODhkMGM0MjgzMDJlMGFjZjUxNDE5MCBweTNrCis4MTE5MSBlYTU2ODVkOTk0MGEzYjk5NThiM2UwNDc1MmEwODE1NTgxNGZhMzIzIHJlbGVhc2UzMS1tYWludAorODExOTIgYmI5YWUxMjYzM2E5OWE4NGFiMGRjY2ViMTVlNjVhNTk3MDExMzYzOCBweTNrCis4MTE5MyBmM2VhN2NkNzM1ZWNlNzQxNjIyYTg5MTI3M2EzYzBhOTg4MmJlODNlIHJlbGVhc2UzMS1tYWludAorODExOTQgYjViYTdlYTQyNDZiMmNlNmYxMmY4MzdiOWQxNTkxNzE5NTk1M2UyNyBweTNrCis4MTE5NSBlOTA5NjAxZTAyMTk5ZDI0MDU4NzZiOWUxNWZjNWY4MGU3YTI3Mjk3IHJlbGVhc2UzMS1tYWludAorODExOTYgMWUxNDliNTBhY2E2MThiMzdjYzk5Yjc4N2RkZTMzYTQwNTU2NDI0YSBweTNrCis4MTE5NyA5MzExOTE4YzA2NDlkYzk4NjkzMDMzMzg1MTdmYjM3YmM5ZTY3MjVmIHB5M2sKKzgxMTk4IDA0MmU2YTM5NmE4NjQ0NzJlMmVjMDJhYTVhOThhNGM5NGRjNzA4ODYgcHkzaworODExOTkgZGNmNDcxMTcxNThmMDEyODE5OTg4MmY1MzRmNTljMTg2ZDViN2Q3OCBweTNrCis4MTIwMCBkMmU2NzU0Y2JiZDVlNzQ0NzY3N2RiYWVkYTQ4MGZmNTUwNmUzZmU5IGxlZ2FjeS10cnVuaworODEyMDEgZTRkZWRmNTRjNDFlMjQxMjg5OWJhN2IwMTcwY2RmYmYzYzM5NWQ5NSBweTNrCis4MTIwMiA5YWRlM2U2MjM3MTBmMDQ4ZGU5ZWJjZWZkNzVkMDY5ZmU1OGQ5YTZjIHJlbGVhc2UzMS1tYWludAorODEyMDMgZWYwZjYzNGFkNWZhZmQ3YjU2ODlmOWZkYTNkMzcwNDk0YmY5MDgzMyByZWxlYXNlMjYtbWFpbnQKKzgxMjA0IDk5MzgzZjFiYzE3YzhmNTE1NWE2MDhhZjE0ODcxZWZhNzcwZjYxMGYgcHkzaworODEyMDUgYTBhNTM1OWY4ZDEzNjlmMmY1YWQzZDNhM2U2ODg1OGI4ZDdmMDBlMCBsZWdhY3ktdHJ1bmsKKzgxMjA2IDE4Njg5MGQ3ZmU3MjQzNjFhYThhMzViODAyY2FiMDFlZTk3YWNmZTkgcmVsZWFzZTI2LW1haW50Cis4MTIwNyBjYzliODI4MGUzZjVmZDBhZmQ4YjM4OWY3OTE5MmE3NTIzODIxMGMzIHB5M2sKKzgxMjA4IDc5NzBjNDk5MDE0NDI3YzQ2MmNkNTQyZDQzODQ4YTg2ZjNmMDA0N2MgcmVsZWFzZTMxLW1haW50Cis4MTIwOSA1NDY4ZjNhZWU0YWUxYjExMjBjMWNkZjRhMzIwOTliYjE5OGI1Y2Q2IHB5M2sKKzgxMjEwIGY1OWYzYzczNzM0ZGIzNjU2MDAyY2Q3OGVlOTc0MDcyZjdjMmU1NWQgbGVnYWN5LXRydW5rCis4MTIxMSA3NzlkYmM1MGYxZjg4ZGVmNzI5MzNlM2JjMDk1MWVmYjIyNjc2NjRmIHB5M2sKKzgxMjEyIDkyZDFjODgxOTA3MWZjMmIxYTgyOTAwZTQ4Njk2OGIyYmNiMTc3N2YgcHkzay1jZGVjaW1hbAorODEyMTMgNDY1MmZlMGMzYjg5NzRhZmQwODY5MDE1ZTljZGEzMjAwYWNiZjJjNSBsZWdhY3ktdHJ1bmsKKzgxMjE0IGVjMTk5MTllMjdjZmU2OTA0ZDdjNjk0ODBjYmVkYTNhZDcyMjE5ZjEgcHkzaworODEyMTUgN2YwNTNlMjViMzM1MmQ0YTZjOGQ1ZjNlZTMzOWZjYzVkYjRjYTNlMSBweTNrCis4MTIxNiAzNzhiMWNkODQ3MmVlZmIxZGQwYTA2NjhhMWFlOTI5NzYzMWRkMTQxIHJlbGVhc2UyNi1tYWludAorODEyMTcgOWU0Mzg1ZGIzNzBlZDg3YmJhYjI4MGRiNmQ3ODQxODkzODZiZmYyMiByZWxlYXNlMzEtbWFpbnQKKzgxMjE4IDY5OTBjNmRiN2MzOTk0Yzg4NDRkNDZlNjYyNDA0MGY4MDc4ZWVjNjggcHkzaworODEyMTkgNGM5NThlNDg5M2JhNjlmODE5YTZiZWU3MmYxMzE2YzAwYWE3ZmU0MSBweTNrCis4MTIyMCAxZDRkYmZhOGVkNGYyYWY1YmRkZTBlNGE2NDQyNDdjMmE1MzdkYzZhIGxlZ2FjeS10cnVuaworODEyMjEgY2YyNmYwMTE0OTZlZDJiZTNkOGJmMmIzMDQ3MmE0NGIwZmViMTQ0ZiByZWxlYXNlMjYtbWFpbnQKKzgxMjIyIDgwMDIxNDhjMWExYjdkYTBmOTBjOWM3YjU3ZWE0YTEzMjhmZjA1M2QgcHkzaworODEyMjMgY2E5ZDJmMGE4YjhhY2FhMTFiNWM5ZDQ2OTcyMDY2YzJiNGZjMjI0NiByZWxlYXNlMzEtbWFpbnQKKzgxMjI0IGYzNmUwZTJkYWY0MzJlNmZjMzk0YTIyZWFiM2Q4MGQ4ZTM5YmI0MjAgbGVnYWN5LXRydW5rCis4MTIyNSBmMzUwYWNiY2U3OTBmMWU0YzJjN2JhZDFiYmYxYWZlNDU4YWFlZTc4IHJlbGVhc2UyNi1tYWludAorODEyMjYgZjVjNjQ1NWMxNDNjNjc1NDczYTlhN2U3NTcwMmI0ODQyYzE1ZmZjNCBweTNrCis4MTIyNyA2ODg2ZWU5Y2I3MmM5MDhkYWQ5YmM3YjM2MmMwZDZkMTI0NWIyM2I2IHJlbGVhc2UzMS1tYWludAorODEyMjggZDA4ZGE0NTQ0ZTMxMjE0OGRjMWMzMWJhODNiMDY1Yjc4NDA4NDM1NSByZWxlYXNlMzEtbWFpbnQKKzgxMjI5IGVmMjJkYzA2NWUwZTExYjQzYjlhZmVmMTk5OGI0YzMzM2IxMzBkMTUgbGVnYWN5LXRydW5rCis4MTIzMCBlNTc2NTBhNGNhODFhNjQ3MGUzZGZhZTA0MWZkY2MzZDI3YmM2ODkyIHJlbGVhc2UyNi1tYWludAorODEyMzEgOTY3ODI2ZGQ1ZmM2YzEzMTg0YTg2YmMyMmJjYTM4YThkY2Q2MmVmMSBweTNrCis4MTIzMiA4NDRiZDdiODQyMWI3M2MzYWJjMWI5ZDYxMDI0ODMyNWZhYWI0YmExIHJlbGVhc2UzMS1tYWludAorODEyMzMgNGJiMDNjYzFkNDIxZjZjZTU4ODM2NWFmOTc5OTg1NDIxZWYyZmRiOCBweTNrCis4MTIzNCBiMjlhYjRlNzY3MzYyZWI0ZGNhNzYxNzJkMGE3MmJhMDJmODgzYmFiIHB5M2sKKzgxMjM1IDJjYTQ2MjZkOWM5MzAzNDhlNjUyMmU3MjM1NDYyYmJiY2RhMTMxOGMgcHkzaworODEyMzYgZTIwYTY3N2FmMDAwNDgxOWNmMDg0YzI0M2ExNzk5MDIwNmEyMGFiOSBweTNrCis4MTIzNyAwOGFiYmRjOTliZTY4ZGU3NDJjOWRkNjUwMmQxMjVjYjNhN2Y0ZjkzIHB5M2sKKzgxMjM4IGI0Y2ZjYTVjNDI4ZTUyMTQ3YWViMDA2NDVjMDRjMjg0MThiZGI1ZWUgcmVsZWFzZTMxLW1haW50Cis4MTIzOSBhMDllYjNkNTlmZjdmNjFlZjBjYTY0MWRiMmYzZWE4ODQ2ZDEzMGM3IHB5M2sKKzgxMjQwIGY4Mzc2MTIwMDdkYzlhYjc3NzcwNzkxODUzNzAzN2EzY2RkMTRlYjMgcmVsZWFzZTMxLW1haW50Cis4MTI0MSA4YTAwNzlkOGQxY2VmNDM5M2RjY2JmNzA5NDE5NDhjOWRkN2Q3Y2RkIGxlZ2FjeS10cnVuaworODEyNDIgN2E3YWU0NzZkZjRmZTA0MjUwNWJlOWQ4YTY1NzE0YmFiNjI5YjMwNiBweTNrCis4MTI0MyBjMTc3ODNhZWRjYjg4YWJhZjlkM2EzM2MxMWYzZjBlN2FiYmNiNTRjIHJlbGVhc2UyNi1tYWludAorODEyNDQgOGI2NDAxYWUxMjYyNzgxMjRkNjBhNzcyMTE5NTVmMjlhMDhmYmYyNCByZWxlYXNlMzEtbWFpbnQKKzgxMjQ1IDNmMWE2YjBiNzkwYzdkYzU4NWU0M2RhYjYyODUwZTE5YzIwYjJlMGEgbGVnYWN5LXRydW5rCis4MTI0NiA0ZDI3ZTg4MDcyNGFiZDFlMThiYjQ2NTYxMTA3ZDcyMTBiNmQ1MzNmIHB5M2sKKzgxMjQ3IGJjMDBlNDYzYTk1YmY1ZWRkYTI2MGI1YWU1Njc2YTcxM2M4MWM2MDMgcHkzaworODEyNDggYTMzYmVlMTRhYmM1MWIyMDkzMjdjMGE5NTdkZmQ2YjhiZDJiMDIzOSByZWxlYXNlMzEtbWFpbnQKKzgxMjQ5IGRkZGQxYmM3ZTgzOTE3MGUyNjdiOGJmNDY5NjIzZWQxM2E1NDQ4Y2IgcHkzaworODEyNTAgODk0YzhlNDIwNzRhOTNiMWVlMDVjNmRlZmY5OTM3MzlhYmU5OTgyYiBweTNrCis4MTI1MSA1NTY5NjFmNGYxNmRhNzEyYzgzZDM4OTJiMGYxZmE2OGVjMmJhOTRjIHB5M2sKKzgxMjUyIGYzZjk1ZWQ4Mjc0NGRiMDJlNWExMjQyOWU3MWU3Zjk3NzgyZGMyZGYgcHkzaworODEyNTMgMzFjZWUyY2Y3YzM3NmFhMzNlYzEyOTA1OTAxODg2NTkyZWJlYzkwOCBweTNrCis4MTI1NCBjYTgxNjQ2ZGQyOWNiZTcyYzYyZDRiNTEyNmEwNjg3NjQ2OThhNzIxIHJlbGVhc2UzMS1tYWludAorODEyNTUgZDI5Mzk5MTAwOTczODIwMjM5NzA3NTQ2N2ZlOTRlMDhhMGYwZTgyNiBsZWdhY3ktdHJ1bmsKKzgxMjU2IGQxMmI2NWE3OTgyNGYwMGM4ZWY1NTUwZGFjOGI2MWYzMjNkZmUwNGEgcmVsZWFzZTI2LW1haW50Cis4MTI1NyBjODZlZWI3MzMzMTZiYTM0ZWZmYjgwYTdkMmUzMTVlNGU1YmFlYmMwIHB5M2sKKzgxMjU4IDkzYTI1MTY5ODdlMDAyMjExODdhOGExOWUwOTk0NmMxZWIzYzc2ZDEgcHkzaworODEyNTkgMGIwNGM1Y2E1NzdkMTZkNDc3MzQxMWIzZWVjODJkNTZkMDhjNjU1YiBsZWdhY3ktdHJ1bmsKKzgxMjYwIDc2NjQzYzI4NmI5ZjA1MTk2ZGIwM2Q4ODUxNzk2ZmFkYjcyMTEzNjAgcmVsZWFzZTMxLW1haW50Cis4MTI2MSBiNWYyYzQ0MjFhMzE4NmJlZWU0NTYxMDc2NjIzOTNiNjk1Y2NjMTc5IGxlZ2FjeS10cnVuaworODEyNjIgMDk5MzI2NTM1NjFiOWRlNDdkZmYyNGJmNDk2MzkyYTc0MzA1NzIyZCByZWxlYXNlMjYtbWFpbnQKKzgxMjYzIGVjNTk1ZmYyNTdlMDY0MDFhNTIzYjA0MmE3MDk5ZDIwZDM5NzZkNmMgcHkzaworODEyNjQgZmY0YTk2OGNhN2JiZTc2ZTcyOTYyOWUzNWQ5MGM4YTM5ODQ2ZGJlZSByZWxlYXNlMzEtbWFpbnQKKzgxMjY1IGM5ODFmMGM4Njc4YjQ5ODc1Zjk2Zjc1MmE3ZGZlNTk5Mjc2MDRjOWYgbGVnYWN5LXRydW5rCis4MTI2NiAzOWViOTFhNWY5ZGNhODM2YmYyYWViYTEzZjlkODEyYmE2MTlhZDQ0IHB5M2sKKzgxMjY3IGQ2Y2IyZjEwZTY1ZWY4NzM0OTI4ZmM2YWNhNjBlYTc4MTk0NGI2NTkgcHkzaworODEyNjggYjlhMGYyNmZhMmM5NjMzN2QxMTk3YmQwNjg1ZTE5NGE3MzE0MDFkNCByZWxlYXNlMzEtbWFpbnQKKzgxMjY5IDdmNjRmYWQxNzdkZDZjNmNiOWMxNGU0M2FhOGIyZGEyNmU5MmM2OWQgcHkzaworODEyNzAgZjAxYWIxYjEzZDBhZTc3YTMyNDA3ZTE4ZTAzOGE1NGEyMjRiYTYwMCBweTNrCis4MTI3MSA4NDAzZjUwNmQ5ZTU0YTQ3NzhiZWFkYmQ4NDM4YmJlZWE5NjM5ZmU4IHB5M2sKKzgxMjcyIGRlN2M4NTgwZjllYmU2NjAzMjA5Njg0OWU3MjYwMjRhZDQ2NGViMDEgcHkzaworODEyNzMgYmYxNGI5NjM4YzczYTVlOWE4ZTAyMzJhYjQxN2U4MWRjN2Y4YWM1MCBweTNrCis4MTI3NCA1ZGJkMmMyOWIwZTk2ZWJlMDNkNmI4ZTE4MjJkYTUyYTVhMTFiNzM4IHJlbGVhc2UzMS1tYWludAorODEyNzUgZjBmY2Q2OTE4N2NkMjZkMDc3NmM5NDQ5Y2JiZTJjZjIyYjljNGFlYyBsZWdhY3ktdHJ1bmsKKzgxMjc2IGRlYzg4NzAyYzliYzczNmQzMzQ1YThhNzE0MGE5YTYzNGViYTRjYjcgcHkzaworODEyNzcgMTc1N2JiZWJmNzVhZGIxNjFmMGRjYWI5Mjk4Y2MwYzYwYzkzNDM4ZiByZWxlYXNlMjYtbWFpbnQKKzgxMjc4IDgyZGJmOTNmNzYwZjRlODgwMWViNjVmYmFkMjMzZTA5MTkzNzI5NTIgcmVsZWFzZTMxLW1haW50Cis4MTI3OSBlNzQ2Njg1NDQ1ZGVlYjEwMzViOWI1NThjZWVjMDU3OWY2YWQ5MzU4IGxlZ2FjeS10cnVuaworODEyODAgNjY2NjA3Y2U0YWRhOWRiY2I5NGY1ZGNkMmI3MWZlMDM1ZjZjMWQ1YyByZWxlYXNlMjYtbWFpbnQKKzgxMjgxIDQ1NWQzZmJiMTRlY2I3NWFjYzI2ZGUwNGMzODgwZTg1NmE0NDA5MTkgcHkzaworODEyODIgODcxYmZhMWZkYTU5MGQxMmI3M2M1ZmY3ZmMzZWI5MjhmNzBhYmU1NSByZWxlYXNlMzEtbWFpbnQKKzgxMjgzIGYxZTM3YThmYjJkMTJiODk5YTZhMDE2NDBiNTZhMTVmZWNlOWYzMjMgcHkzaworODEyODQgMWU1MmJlZDg3N2MxNzdmNjQ1ODgzYjA2YjFmMjNjMDlmYzFlZmJjZCByZWxlYXNlMzEtbWFpbnQKKzgxMjg1IDhkYTA4OGQ2YTk1YjJmMWVkNzhlM2M5MzVlYjcxNDU2MGJmNjEyYWMgbGVnYWN5LXRydW5rCis4MTI4NiA2YjM4OTI2YTVmY2RjNGViN2FhNzM3ZTBmYmVmOTJkOTc2MGU0YWY5IGxlZ2FjeS10cnVuaworODEyODcgODBkYzU3MDE3N2M2NjhhNjJiMTI2MjU2OTE3NjMxNWVhZGZkOGYzZSByZWxlYXNlMjYtbWFpbnQKKzgxMjg4IDE5NzUxMWM0Yjc1YTk3YTNjMDRhNjdiMWFlOTQzZjc3NjY4MjIxYzIgcHkzaworODEyODkgZWQwYTY5ZDY2YzExMzUwOGI3NmZmZjBiNWEzMjQ4OWZjNWZiOTliOCByZWxlYXNlMzEtbWFpbnQKKzgxMjkwIGJlYzgxOGE3NjkwMmEyZjRlYmZlYzg1NTJlOTNiY2JjOTNhODMzYWYgcHkzaworODEyOTEgY2Y3NGVjM2UxZjgyNjgyODMyY2VlNmYyMTQ1ZjJmMTE5MmZmNDk1MCBweTNrCis4MTI5MiA2MTNiNjNmNThiZWJmMjk4NGNmZWUyZDQ5MWUzZDRjMzE4ZjNhOGZjIHB5M2sKKzgxMjkzIDg1OWI4MzhlY2YzZGI2NWVmY2I3ZGQ5MWU3NzY3Y2JlMTg0YWE0OTAgcHkzay1qaXQKKzgxMjk0IGQ3ZDgwNDZmN2E1MmZmNjQ0OWM0YjhiZTQ3NTYxZmVkY2Y2Y2ZiZWYgbGVnYWN5LXRydW5rCis4MTI5NSBlOGVkYWJkNTQxOWIzZTM0NmI3OTU3NDhhYWI3MjdkNWY2N2RhYzViIHNzbG9wdHMtNDg3MAorODEyOTYgYjc1ZTYyZmNhZTgxYTcyNzNiMWQ3MmVlNjAzMmI3ZmQ5YTk1YWZkOSBzc2xvcHRzLTQ4NzAKKzgxMjk3IDI4NTkwZDViNmI4YjA4NjdlODU4NjY4M2RjYTAyMDYzMzhiN2IwMzMgc3Nsb3B0cy00ODcwCis4MTI5OCBmMjQ3MTQ2ZjhhOTU5ZWZjNzIyOWM3MGMxNGViNDdjN2Y3NWY1Y2U0IHJlbGVhc2UyNi1tYWludAorODEyOTkgMjZkNzYwNTIwM2RjYzIwNzMwOWM4NjUzMGNjNzk0NmNiZmU4YWI1ZiBweTNrCis4MTMwMCAxNWZhNTlmYzE0OWRiY2NhOTllNDYwNGNmYzViZjljNTI1NWQ0NTc5IHJlbGVhc2UzMS1tYWludAorODEzMDEgNWYzMTM1MGFmYjYwOThhZDdiNWM2YjNlN2I1ZjM4MzIyNTQwNWExNiBzc2xvcHRzLTQ4NzAKKzgxMzAyIDYzOTEwNTVlZmNhMGRiOTYwY2UwNmMwNmQ4YzRiZmM1NDI1MzNjMGQgcmVsZWFzZTI2LW1haW50Cis4MTMwMyAxMDY1ZDFjNTMzMDlhZWM0Y2VhZDU2ZjI5NWZkNWNiOGY0YWRhZTUwIHJlbGVhc2UyNi1tYWludAorODEzMDQgZjE0ZjQyZjMyOTIyZTNlYzk5Zjg3MzY5MTgzMDA2ODhmZjA2MDYwZCByZWxlYXNlMjYtbWFpbnQKKzgxMzA1IGM5ZWQwYzNmNmRjZGQ3YjFkZjY0ZWY2NTllNjlkNjc4ZjI4YjhjYTggcmVsZWFzZTI2LW1haW50Cis4MTMwNiBjOTlmY2EwM2ZhMzc4ZTI3ZWQ4NzQ3NGI1OTA5MzA5OTkyYmMwYmVmIHJlbGVhc2UyNi1tYWludAorODEzMDcgMThmNjJhN2E3ZGJhODIzN2I2YmViNWQ0MDllYTIzODQyZTUwYzViMCByZWxlYXNlMjYtbWFpbnQKKzgxMzA4IGY3NmY4MTA0NGQ0MDgzZDUzYThmOWZhYzY5YzgyNGMwODAwZGQ0NjEgcmVsZWFzZTI2LW1haW50Cis4MTMwOSBlZjcyZjE1ODY0YTk5OGY1MjdjYWY0N2ViOTdmY2JjYWE4NzNiZTA2IHJlbGVhc2UyNi1tYWludAorODEzMTAgMDUyNjk1NzNkMjE3MmYwYzQ0NTVmNjc3Y2FkYjRmNTI5OGIwNjQ0MCByZWxlYXNlMjYtbWFpbnQKKzgxMzExIGMxYzFlOGM4ZGM5Y2QxYWQ3NDcyZjlmOWU3ZjRmMDE2ZjEzNjc5ZWUgcmVsZWFzZTI2LW1haW50Cis4MTMxMiA2ODQxYjJhMTZhNTFkNWE1OTUyMzFkOWEwMGZkMzVmMDEyMmY0MDQxIHJlbGVhc2UyNi1tYWludAorODEzMTMgY2UzODA5YjgzNDczNjgwOWM1YjhmZTliYjYwNmEwZThkZGEyMGFkMiByZWxlYXNlMjYtbWFpbnQKKzgxMzE0IDdmYzQ4YWQxNjA4N2VmM2NjMjYwNTgxNTgxODk1MmNkNzA4NjE4OTQgcHkzaworODEzMTUgN2YxNWE2MDA2MTYyN2RmOWJjNTcxNGMwMjk5Y2Q1NDkzNGQ2MzQ0ZCByZWxlYXNlMjYtbWFpbnQKKzgxMzE2IGFhNzc3ZDQzZjIyZjVlOTQ2MmI1ZWI5ZDMzNjUzMDhlY2E5NmU2YjUgcmVsZWFzZTI2LW1haW50Cis4MTMxNyBjOGQxNjZlYzU0MzAxZGYzNzQyZWU4ZDM4NTg3YmIwYjYwYTM0NzQ4IHJlbGVhc2UyNi1tYWludAorODEzMTggNzVkNzM5NjU1NmZkZTgzMzAxN2ExMDYyYWVlMjhmZWNlZWIzODFkMyBsZWdhY3ktdHJ1bmsKKzgxMzE5IDk0MmIzYzE2OGYxNWRhZjU4YjY0NmI0ODllMTUxODBkMGNlMDBjMjUgcHkzaworODEzMjAgMTUwNGNjNWExNWExYzRlMzNmN2MzYmMwMDM4ZWI4MTg1M2NlYTY3NiBweTNrCis4MTMyMSA4NDY4NjZhYTBlYjY2ZmY3YWY5Y2Q4NmQ2OWI0ZjVhNWJkZTFlN2U5IHB5M2sKKzgxMzIyIDk5OTk5NzRmZjUwNjk1YmQ1ZjAzZmU4NWI5NjNjYzc3MjIxNDYwMGUgcHkzaworODEzMjMgN2JhODUxZDFiNDZlYzRmNDBkMDBlMWM3Yzg1N2Y3YTc5YzUyMjYwNCBweTNrCis4MTMyNCA4OWNlMmY2ZDRiMjQxNzRiZmEyY2RhNjIzNTljYmMwZGIzNTk3ZTE2IHB5M2sKKzgxMzI1IDdkY2QxYTI2OTc5N2JiMGRhM2YwZWRjZjM3ZTMyMjVmYTlhMDg4YzEgcHkzaworODEzMjYgODFkNzhkZDI3M2IwOWYwZDY4Mzc4ODg2OWM2NmVjYjdlMjkyMTJkZCByZWxlYXNlMzEtbWFpbnQKKzgxMzI3IDhiNzY2ZWM2OTY4NWQ0ZjZjZmEzOWQ5M2ZhNzVjZWEyNmJhMjk3ZDggcmVsZWFzZTI2LW1haW50Cis4MTMyOCA5YTIzMzA5ZGZhYTMxOTk0MTVjZjZmNzBkNTQzNGY2YmVlZWM0ZWUwIHJlbGVhc2UyNi1tYWludAorODEzMjkgYjZkMmEyN2MzZTNiNDQyZTQ4MjcyNWI4NTU5Y2YzMzA1Y2Q4ZmIzOCByZWxlYXNlMjYtbWFpbnQKKzgxMzMwIDA4M2Y2ODZhYWYxNWE0ZDk5NTZlYjdlZWZiZWNkODQ0ODJjOTFmN2EgcmVsZWFzZTI2LW1haW50Cis4MTMzMSBmMzdlY2Y0YThmZjEwYWU4ZTAzY2RmZWExYmI1ZGE0NmM5ZTg5MjRlIHJlbGVhc2UyNi1tYWludAorODEzMzIgNzdlYjFmYjU5Yzc4MDdlYThkZWZlYzBhOWRmYzcwZDY3MzBmOGM4NCByZWxlYXNlMjYtbWFpbnQKKzgxMzMzIDNkMGFlOGVmMDA0NDYyOGNlMzlmZTU3YThlYmI2NDlmYWE5ZDBiZWUgcmVsZWFzZTI2LW1haW50Cis4MTMzNCAyOGJiZDMxY2JjYWI2ZDY5NjE5MDIyM2MzM2QzOTM3MTU5NzQyMDNhIHJlbGVhc2UyNi1tYWludAorODEzMzUgZjVhYWU4NWI2ODY0ZTY5NGY1YTA1NWNlZTMwY2M4YzUxMTBiNGQ1ZiByZWxlYXNlMjYtbWFpbnQKKzgxMzM2IDdmMTBhZWNiMDYzMjJiMzNiYjI1ZTBmNTAxOGQ0YmY2YThiZGZhNzcgcmVsZWFzZTI2LW1haW50Cis4MTMzNyBhZTRjOTMxYTcxZjA2OTY5NTc3MjYyYThhNTU4ZmU5MTJhMTVkNTY2IHJlbGVhc2UyNi1tYWludAorODEzMzggMWEzNGRlMDQyOTcyODcwN2JmYjBlODBiZWMyNWVjMDQ0MDc3Zjg2OSByZWxlYXNlMjYtbWFpbnQKKzgxMzM5IGQxZjI2NWNlYTcwYjc0MzZhOWMwNThjZmFlMGEzMjhlMzNlZGUzYzggcmVsZWFzZTI2LW1haW50Cis4MTM0MCBhNzJiYzU0ZWM3MWRmODYxYmFjYzEzODk1MDBiZWNlMGJjNzNkMmM0IHJlbGVhc2UyNi1tYWludAorODEzNDEgNmFlMDczMzI2ZTdmYjgyNDVmODE0NDk4ZGUxZDBjMTA5ZjYxNDU0OSByZWxlYXNlMjYtbWFpbnQKKzgxMzQyIGY0OTBkMTU4MTk4YWRlZWUxNTJiZjhkMjliNGFjODY4YTJmOThiYTUgcmVsZWFzZTI2LW1haW50Cis4MTM0MyBiZjRlODNkZTRlYTUyOThhOGVlODE4NDU5ZTZkY2NlMzkxNGYzOTMzIHJlbGVhc2UyNi1tYWludAorODEzNDQgMDc0MTBhZWU3ZmMwZWFmOGM1YjU5NzlmODU2NzE4OTMxMWRkMjQxMCByZWxlYXNlMjYtbWFpbnQKKzgxMzQ1IDM0ZThiZmViMGI5ODc5ZDExYjdmMzBmZTZmMTExYTlkNTFjZWE5YTcgcmVsZWFzZTI2LW1haW50Cis4MTM0NiA1OTA2YTBmY2M4MjZiNTFmMjhkYzMzZWU3MmZhOThmZjJlYWNlNjFlIHB5M2stY2RlY2ltYWwKKzgxMzQ3IDhmNmU2N2Y2OTNmZjVlMzZjN2U4NDgxNTc2NTE2Njc1NTAzM2QxZTUgcHkzay1jZGVjaW1hbAorODEzNDggNjViNTYxZjM5Njc5M2M0ZDA5YTExNmQ2MTcxNjE0OTI4YTU2YTY3NyBweTNrLWNkZWNpbWFsCis4MTM0OSBlMDIzYWQzZTJjYWNjYjI1Mjc5YTQ0YzFmOTMxYTAxOWMwNzY4ZTY3IHB5M2stY2RlY2ltYWwKKzgxMzUwIDhjNmY5ODE2OTllODI1YWMwZWE1Y2JkYTA3MWVlZGM4ZGJjYjNmNTggbGVnYWN5LXRydW5rCis4MTM1MSA2ODUyNWVmMzZiNjY4YzM1N2UwNWY4ZjZhYTJkMDgxZjQ5ZTNiNmM0IHJlbGVhc2UyNi1tYWludAorODEzNTIgNGJmYjAwY2UxMmI4NTllOTVkMTQyNWQ0NmQ1ZTFkMDM1NGZhZTNlNiBweTNrCis4MTM1MyA0OWQ3ZGU5ZDdiMWFhMDE4MjVjMjAwM2MyNjk3MzY2NjIyODViODUyIHJlbGVhc2UzMS1tYWludAorODEzNTQgMjBhMzU2ZWViMGY3MDEwM2RlYjE1MWI0ZDMzZDI1YTRhYjNlYjBkNyBsZWdhY3ktdHJ1bmsKKzgxMzU1IDIxYmI5M2UwOTg4YzQxYjgxYjAzNThiZDA3N2IwYzU3YWJhNWE3MmMgcmVsZWFzZTI2LW1haW50Cis4MTM1NiA1YmY0YTg2MzNjNThiODU1YjBmOGM3M2UzN2RlNzY2ZTUwYTQ3NzczIHB5M2sKKzgxMzU3IGVhZWE4MDhiN2ZiODY3MWE4ODRkMWZlMmRkMTdhMmNmY2ZmOGM0MmMgcmVsZWFzZTMxLW1haW50Cis4MTM1OCBiN2Y3MWY2MDQzN2I1OTZjNTVhZGFkMDBjMjhhM2E0YjJjNjAwOTgxIHB5M2sKKzgxMzU5IDBjYWZjMjBlNTYzNzYzNDY1Y2MwNmRmMWEwZTRkN2UzZDYyZjZlOTkgcHkzaworODEzNjAgZTY4ZTAyOGQwOTFlODM1NDBkMTk0MGU5NDAxNTQ1YmU1MTllYTg5MSBweTNrCis4MTM2MSBlNWZkZTdhZDFiN2NjNjk0MDIzODMwNjZiNjk0ZmM1MDJhODZjZTBmIHB5M2sKKzgxMzYyIGNjZGIwOWY3OWEwMzg1NTVjYWU0ZTE5MTQyZDc2MWZkMDgyNjNjMTcgcmVsZWFzZTMxLW1haW50Cis4MTM2MyBiYTUwODg4Y2MwMzkxNGZkMDAxNDAxMjg1ZDhkZDA4OGM1YTE3MjY5IHJlbGVhc2UzMS1tYWludAorODEzNjQgZGVlZDVmY2U4MmQ2MDY5ZjA1MWFkMTczNWYyYzZhYmQzOGM3MzJhZSBweTNrCis4MTM2NSBjMWM3NzY3NGRiYzhjMjlkMTdkZGE4OWQ5MTNmNWViMWJiOGNhMjc3IHB5M2sKKzgxMzY2IDI0OGE5MTVlMzVlZjAxNjFkYjdlMmJjMWM4ZWIzYzVkNGVjMDY0YjYgcHkzaworODEzNjcgMjNlZThhYTg1N2VlMzZiOTk3ZDBhZmM3Y2FhMmE4NmI0ZjJhZGQ5ZSBweTNrCis4MTM2OCA4MmE0NDgzZDljNGE5NDI3YTJmNDI0NWQ2MDgxZGYyMjgxYTViNDNlIHB5M2sKKzgxMzY5IDFmM2U3ODEyNjEyYjhiYTEyNmFlMmE4ZWJjZTFiZjdjMjU0MTdiMzAgcmVsZWFzZTMxLW1haW50Cis4MTM3MCA3NDNjMjA3ZGMyYjQyMDU2OTY5YjhmNWRjZWJhOWJjMWExYTI0NDdhIHB5M2sKKzgxMzcxIDAyMWY1ZWM1ZDJkNGZlMzdkMTBmZGYyNTFhM2IxNWE5YjEwZWYzNzMgbGVnYWN5LXRydW5rCis4MTM3MiAxOGRjZDkwM2M1NWUxNWIyNDUzZGE4NGMzNTNkOGEwNjZiYjgwMDM0IHB5M2sKKzgxMzczIGRhOTQxNTA3ZWQ5M2M0NGM0MDNjNjExZjA4MGNkNjc3NTMzMTk5NWQgcmVsZWFzZTMxLW1haW50Cis4MTM3NCBiODRmOGQxYTA1MjJjNmY5Mjk0ZmYyNzkwMjhmN2Q4YmYyMTdmYTA3IHJlbGVhc2UyNi1tYWludAorODEzNzUgNTAzYWZjNjJkNjMyZTE3OGY4NmZjYjYxMTQxNDA0ZTE4MGNiNTliZiBweTNrCis4MTM3NiBmZDcyYWYwMDYwYzg1NDBhZWNkOTU0MGM0OTQ2ZjMyN2U3NjQwOWU3IHJlbGVhc2UzMS1tYWludAorODEzNzcgNWQ2Yjc2ODkwZjE3Zjg4MGZlZGVlMGEwMDRlODJjNjUwN2MyYTNkZCBsZWdhY3ktdHJ1bmsKKzgxMzc4IDEyOTQyN2I1ZTkxNDFhZThkYzYyOGMyZDFmNWYwMjMxNzk2YjkwMjIgcHkzaworODEzNzkgNGQ4M2JhNWQwYWY1YjQ1ODE4MDhmMDgxMDVjOWNmOGIwMWQ2MTQwZCByZWxlYXNlMjYtbWFpbnQKKzgxMzgwIDYyYzBlNWYxNDEzOGY2OTYxMGYyMWFiZTgwZjU5NGUwZGE1YzRiNDAgbGVnYWN5LXRydW5rCis4MTM4MSA1NWUyMzY4ZjcyZjI3NGU2ZTkzMGFhZTUyNGEyYjVmY2ZmMGM3Y2I1IHJlbGVhc2UyNi1tYWludAorODEzODIgZDkzYmQ1MjU0NzNjNWY2ODc4MWJhZTI0N2JiOTU2YzIxNzUxN2E0NiByZWxlYXNlMjYtbWFpbnQKKzgxMzgzIDMyNzFhZjAzNWQwMTc4Y2RjNTVmOWE5YjNkN2U5ZDk5ZDYyY2M4MzQgcmVsZWFzZTMxLW1haW50Cis4MTM4NCBmMmQzYmY5ZGE5YTgxNTRhNmJkZDJjYzk0ODk4MDNlMmRiN2E0NWRhIHJlbGVhc2UzMS1tYWludAorODEzODUgNmZlMjYwYmMwOTg3ZGMyYzNjZGVmNWYwODBiZTBhNzFiOTQ5YThjYiBsZWdhY3ktdHJ1bmsKKzgxMzg2IGIzYjI2NWZiYWFiZGY5ZWFiNDJjNGRhNjA0NDE4YzEwN2M5YTJkODUgcmVsZWFzZTI2LW1haW50Cis4MTM4NyAxZTZiNDM1ZThlYjZhNTI4MWJlYWQ3NjBhMTQ2NjU5MDYxY2E5NTBhIHB5M2sKKzgxMzg4IDlkZDUyMmY3YzBkZTIxY2NjYmQxNjRlZWQ3ZDAyNmVlYTkzMTc5MGIgcmVsZWFzZTMxLW1haW50Cis4MTM5MCA3ZDRlZTBkYzg3NjQ0MDE3ZWZkNTMwNzQ3OWVhOTIwY2QyZGQwMWZmIHB5M2stY2RlY2ltYWwKKzgxMzkxIDRmOWRiMzVhNDA4NjFkYjdmNzc1NTM4NTZkMTExOWI3YTE2Y2U2YmQgcHkzay1jZGVjaW1hbAorODEzOTIgNWVlNDdmMGIyNmIwMmEwN2MzN2RiNTYwMDQ1MDBkY2M0Y2U1ODQ3OSBweTNrCis4MTM5MyAyMjI4YzI1Y2NlM2U3MmZlYjM4NjY4YWMyOGY1YzBjMzJiZTU1Y2I3IHB5M2sKKzgxMzk0IDM3MDMyYjJhNTkyZGIwMjM0YWYxNjYwNGIwMDBkMTY0MzgyMjEwNjkgcmVsZWFzZTMxLW1haW50Cis4MTM5NSAzODcxOWYxMTYxOWJjZDg5MTVmNWQyMmFkNDlhZTFlMGVhNGViMmVjIHJlbGVhc2UyNi1tYWludAorODEzOTYgZTNkYWFjMDY2YjkyZTc4ZTJiZjE4Y2VmZjk0YmZmOGNmYmJhMGFmMyByZWxlYXNlMzEtbWFpbnQKKzgxMzk3IGQ2MDE2ZmE1OGRmNmI1Y2UxZjM3YTU5ZjYxM2Q5NTc2OWY0MzdjMGUgcHkzaworODEzOTggYzI5MTdhYzVkNTI2ZGM0ZDNmNjJiZDYxZDNhYTgwODU4OTQzOTA4MCBsZWdhY3ktdHJ1bmsKKzgxMzk5IDNmMDhkOThjOGZhNWYwNzE2MzM1YzE2ZDQwYmRiM2YzMjk0ZmQyY2MgcmVsZWFzZTI2LW1haW50Cis4MTQwMCA3OTU3NjJiNWUwZDZlNmIzN2VkZThlMWJhN2ZiZjkyM2EwZjZkNDE1IHB5M2sKKzgxNDAxIDlkYjhjNDE0OTIxZjcwMjZkZDM0YmU2MDk4OGQyZTliMzhkODQ4ODUgcmVsZWFzZTMxLW1haW50Cis4MTQwMiBlMTk0MGRkYjNmNTY1YTYzOTRmYTVkNmE3YzYxYTEwNDE1ZTQwYTAwIGxlZ2FjeS10cnVuaworODE0MDMgNDQxNDkxNTcyZmNlM2FkOGRjOTBlMmI1NDhlYzU4ODhkMmM1YzU1ZiBweTNrCis4MTQwNCBiMDcyYjlmYjBmZDJkZWNiZTA0ZjEzYmI0YWFjYjQyYWQwYjhjYjlmIGxlZ2FjeS10cnVuaworODE0MDUgZjEzOGQxYmFjZmM0Mjg4MDY2NDIwMDE0OTliYzcxNmQzM2RiNDA2YiByZWxlYXNlMjYtbWFpbnQKKzgxNDA2IGRlNjFhNjk3MTJkYWQ3YzQ1YWZjYTNmMjcyZDFkZWU0ZmJjMmZjOTkgcHkzaworODE0MDcgNmNhMmU2YjNiZjMxNzc5ZTZlMDU3NjcwNjY4MzhlZmZkYjY1NTM0MyByZWxlYXNlMzEtbWFpbnQKKzgxNDA4IDczNDE2YjFiYmNkNWJjYWFmZjIyN2I1NjY1NDE2YjZmYjMyMjc4NmYgcmVsZWFzZTMxLW1haW50Cis4MTQwOSAzZDY0ZDFhZmU2Nzc5YTczMDRiMGRiZGNlNTJhMWJjMjM4MjQ4NjNhIHJlbGVhc2UyNi1tYWludAorODE0MTAgZTFmNGZjNjNkMmIzZDJiZTRhZjE3ZGY1NTU2YmZhZmI5YTYxN2M3OSBweTNrCis4MTQxMSA1MDZlOWJlODYxMzkzODRlNWVkYjA3YjA4NGY2ZWVhZWEwZDBmZmM0IHJlbGVhc2UyNi1tYWludAorODE0MTIgZTlhMDQyYTI1MTk3MTM4ZjZlMjMwOGY3ZjRiYWY2YTY2YzIyMGI0MCByZWxlYXNlMzEtbWFpbnQKKzgxNDEzIDk0NmNjNWVlMjk1MTEwZjM0NWQ1M2ZmNjJmN2NmOWZlY2Y2NzZkMjggcmVsZWFzZTI2LW1haW50Cis4MTQxNCAwZjA5NjgyOWZjOTBiOGIzNWQ5MzM1ODc3YzBmNTAwYWQxODI4MTQzIGxlZ2FjeS10cnVuaworODE0MTUgZmYzYzY3NjYxM2FkYjE3MGFmODBhMWEzMjU1NjMxMWU4YzFhZDlhMCBsZWdhY3ktdHJ1bmsKKzgxNDE2IDg1NDJiNzdhMjhlYTk2NTg2YzAwODFkNjVhM2M0YzUyYzgwZGJlN2UgcmVsZWFzZTI2LW1haW50Cis4MTQxNyBiMDI1MGZmYTIyNjc3NWRlZmIzNWVkYmUzOTBjODg3YTcwMmJmZTA2IHB5M2sKKzgxNDE4IGZmZjI5ZDNlN2EzOTIxNWIxN2RiODk3MzBhNjEwY2VmMGI2NDEyMGYgcHkzaworODE0MTkgMWIwNDY3NjYxZWY1YTkwZjQxZjg2ZjUyMDBhMjhiNGVjNmIxMzQyZiBsZWdhY3ktdHJ1bmsKKzgxNDIwIGZiZmMzNTM2NDdlM2MxYjM1ZjhmYTI5MWM1MTM0NTdlMGY2MDVkMzMgcmVsZWFzZTI2LW1haW50Cis4MTQyMSAyOWI1NmMzOGEwMzNkY2RhMTBjNzYxZWU0Y2IxMzFkMzNkODkxOWFlIHB5M2sKKzgxNDIyIGFiYzNmNWExY2M1ZThjYWNhZDM1ZDE1YmE1Y2UzY2VjNzNhNWM2Y2EgcmVsZWFzZTMxLW1haW50Cis4MTQyMyAwNmIwOTM3NmNjNWIwNDJjZTBkMTYxYjMwMzQ0YTVkOGNjMzRlNTUzIHJlbGVhc2UzMS1tYWludAorODE0MjQgZWNhOThiZGM4YTE0ZjQwYjIzMmEzODRlMmUxOWJiOWQ5NTJhNzZlMCBweTNrCis4MTQyNSAyM2UzODE5MmFmOTY0ODgzZmRkNmUxYjQ2Yzk2MjQzNGE2ZWQ2NTg4IHJlbGVhc2UyNi1tYWludAorODE0MjYgMzE2M2RhMjJkNTg1MDJhY2M3ZGNiMzJjMDg1ZGUzODAzMDM2Mzk0YiByZWxlYXNlMzEtbWFpbnQKKzgxNDI3IDhiMmQ5ZDEwMWM4NWE0OTY2ZmIyOTM1YTRlNzFhOTllMDkyNDY4NGUgcHkzaworODE0MjggNjk4NWM2YjlkOTc4ZTU3MTNhMzUwMTkwMDkwMTRkYWExNmYxNjNiZCBsZWdhY3ktdHJ1bmsKKzgxNDI5IGIxNGYzOWQwZjIwYTJkYWU1NGY0OTM3YTMzNmEyYTYyNzQ2ODRlZGEgbGVnYWN5LXRydW5rCis4MTQzMCA2YTA4ZWViNGIzMjIzOTI5NzU0YWU3ZWY1MDcxZDZiY2YyYzFmY2Y2IHJlbGVhc2UzMS1tYWludAorODE0MzEgZmViZDljMjg4ZTc2ZjgwYmM5M2FmODIxOTdkOGQ0MTNjYzU3MWMzYyBsZWdhY3ktdHJ1bmsKKzgxNDMyIGYwNWQyOTk2Nzc2ZTBlZjRmMzY4M2ZlMjFmZmE1NGJjY2JjNTE3MzMgbGVnYWN5LXRydW5rCis4MTQzMyAxMWQ1ODUxNjAzM2Y3ZDU0MzI5ZTBhNmU2MTI4ZDFiMmUyZjU0Y2Y0IGxlZ2FjeS10cnVuaworODE0MzQgNWQ2NzQ5NzBhY2Q5YTA2OGNiNzFjNTJiN2I0YTIwZWY4YmJlM2NmYSByZWxlYXNlMjYtbWFpbnQKKzgxNDM1IDQ5NWViZTA0ZDQ3OThjYmMwZjY4NmFkYzg0NzgyNWQ5MjBjY2NjNTMgcHkzaworODE0MzYgNmVmN2NmYjFmOGY0ODMxYzBiMDA1ZWMzMmQ1MmI2ZGU0NGM4Yzg4MCByZWxlYXNlMzEtbWFpbnQKKzgxNDM3IDhjOGQ0MGNlNWNhMTVhNDQ0Y2ZmOWM2ZTEzMTVkNjBmOGJjNjdlMDMgbGVnYWN5LXRydW5rCis4MTQzOCBmMzg5NTYzZmYzNzIzZTYyNjVjYmYwNWQ3ODM3ZDNlYTkxNTQxODQ5IHB5M2sKKzgxNDM5IGUyMGVhZTNiNWZlNDU0MGE3NmEzMDRjYWU5ZDUxZWE0NWM5OTdhOGMgcmVsZWFzZTI2LW1haW50Cis4MTQ0MCBjMGRiZmI2YTdkNTY3MzAzYzdiYmUzOGE0N2Q5ZmUxYjU0MjVhMTFiIGxlZ2FjeS10cnVuaworODE0NDEgM2E2ZTk2MzdjMzNkZDliZTMwNzU5OTFkNWZlM2Y3NjdjYTlhZGNjYiByZWxlYXNlMjYtbWFpbnQKKzgxNDQyIGE5Y2FkNWFlNDA1ZDhkMmE5NWY4Y2FhMWNhYzM5Zjk1YjFmMjk1MGQgcHkzaworODE0NDMgNzJmYTAwYWMzOGJlM2UwZGQ4NmFlNzg2MDgzNzZhOTJjZDhkYTFhNiBsZWdhY3ktdHJ1bmsKKzgxNDQ0IDUyNDk1Y2NmNjFjYzg4ZGVlNzM1ZjJiYzE1ZDY3NDFmZjBjYzNhN2IgcmVsZWFzZTMxLW1haW50Cis4MTQ0NSA5NTQxM2ViZDQwODEzNjM4ODNlMjViMjQxZGY4NDQ5NWIwNzBhOWIyIHJlbGVhc2UyNi1tYWludAorODE0NDYgMmQwYjA5OGY2Y2I3Zjk4NzA0MjdhY2U5MzM0ODM1MzE3NmQ1MTdmNCBweTNrCis4MTQ0NyAxOTRmNDg4YjhhZDFhNzdiNDVlYjg5Y2M0ZThhYzgxNGIwZGNiNWUyIHJlbGVhc2UzMS1tYWludAorODE0NDggMWFjY2E5YzQ1NTYyYjhlZjQ3YWY4Y2FmNjA2NGVlYzY3YzEzNjljMSByZWxlYXNlMzEtbWFpbnQKKzgxNDUwIDBlMjZjYjk3NmM0ZDkwYmJkZDM4YTc5MjI5NzQ2NDc5MGI2ZGRiNDMgbGVnYWN5LXRydW5rCis4MTQ1MSAwZjUyOGVlMTVlZjcyMDYwYjcxMzYxMWNhNDY2MzFkNzQ4ODkxM2FjIHJlbGVhc2UyNi1tYWludAorODE0NTIgMDIyYzkzZWQxYjhlOGY0YmQ2OGE0NGY2N2RhODIzNzkxMjM5NDhmZSBweTNrCis4MTQ1MyA1NWU4MTljYjUzNjEwMzU5MjVjODJkNjRmMzY3NDRhYTk0NDdhNzQ0IHJlbGVhc2UzMS1tYWludAorODE0NTQgYzZkZmMzZGQyZDVkZjRhMWZiMzFkNGE5OWY0ZjFhYjA2MWQ0MzE2NyBsZWdhY3ktdHJ1bmsKKzgxNDU1IDJlYTkwOTIwY2MxMGQzYTE5ODFkM2NiNDFlNjQ0YmE3MzA4YTM5YjUgcHkzaworODE0NTYgMTRkMjNiZGRmNzkzMzM0YWU2OWZmOTMxMzM1OTBlYjdkNDBlOTQ0YiByZWxlYXNlMjYtbWFpbnQKKzgxNDU3IDgxNWJhMzg3MmY4NTA0Nzg2ODgwZjUyMGUyMDBkMTkwYjJmMzA4YzQgcHkzaworODE0NTggODBiZTcyMTg3NjdiNzEyYjc2MDZjNjJiZmFlZTBjYWFlOGZmNzVhNyBweTNrLWppdAorODE0NTkgOTllOWVkMjE0YWFkZTZkYzAzYWI0MzI5Y2NhMzNhMjBmOTdjZjY1MyBsZWdhY3ktdHJ1bmsKKzgxNDYwIDJhMzg5NzM0ZDU3MDIwYjkyNjBmZWE3NjVhN2RlOWNiM2ZmNGExYWEgcmVsZWFzZTI2LW1haW50Cis4MTQ2MSAxYWYyNzM1MGY0MWJjNmZjYTdlNWE0NmYwNDY5MDAzMzU1ZTE5NWQ5IHB5M2sKKzgxNDYyIDg0NmRiY2Y5NzBhYmVhNWM4NWUzMzc0OTM4MTY2ZmY5MDUwNjkxZGQgcmVsZWFzZTMxLW1haW50Cis4MTQ2MyBiNzM5ZDMwMzRlYzc1MTI1ODY2NTE0OWE4MTZkNmNlZjE1MzI5ODJkIGxlZ2FjeS10cnVuaworODE0NjQgOWEwMjM5YzBlYTNiNDFjZGRiOWQwYzkyZWU0MDJiYzdjZmJlY2QxYyByZWxlYXNlMjYtbWFpbnQKKzgxNDY1IDBhNjQ3ZDA4ZTY4NWZhZjBiOTc3ODYwYzczZDZlMmZlOWRhMzVhMDkgbGVnYWN5LXRydW5rCis4MTQ2NiBmMjA1ZDY2MDU2Zjg5ZGQ5Y2ZmNjUyOTIzOTQyZjMxMTY5MTIzNTZjIGxlZ2FjeS10cnVuaworODE0NjcgNzU1YTFiYzU2MzI2ZWUwNWE3YjNkNTBlYjRjMjgzZWY0MTU2ODc5OCByZWxlYXNlMjYtbWFpbnQKKzgxNDY4IGQ2YTg4OTY5NzE3ZjU1YmM4ZGZmNzBjOTBiZWJkN2I4ZDkzMzNlNzMgbGVnYWN5LXRydW5rCis4MTQ2OSA2M2I1NzhkODMzZWU3YWQ5M2UyOGEzZjdjNTc4YTk2ZGIxOGZjNzNjIHJlbGVhc2UyNi1tYWludAorODE0NzAgMzU2YTZmYzllNTc4NWMzZjY3NjU0NjJiMTk5NGY2NzMwMzMxYjU5OCBweTNrCis4MTQ3MSBiZjgyYzFkMDRlMDZjZGFiZmNkYjkyMjgxNWIxNGJkNDEyYmViZDE5IGxlZ2FjeS10cnVuaworODE0NzIgOTcyNmMyMTczODg1ODJlMWFiYmVlNjE2YjEzYWQzMDBjMzMzM2I3ZiBsZWdhY3ktdHJ1bmsKKzgxNDczIGFiMDgyZTM4N2RkNWNlMjk1ODNlY2YxNjc1ZjJjOTUwY2IzN2FlYzggcmVsZWFzZTI2LW1haW50Cis4MTQ3NCA4MzBjZDg5YjAxZThmMDRmNWUxMjNlZmViNjczOTJjNjQ0NDFmNzQ1IHB5M2sKKzgxNDc1IGNkNDkzNjY5MTE2M2ZkYzI5YTQ0NGVhZjI0NDViYTNkNTRlN2YyOWYgcmVsZWFzZTMxLW1haW50Cis4MTQ3NiA2ZmVlMjZjODlmNmU0YjJhNzYyOTA2NmUzMDQ5Mzc0Yzg2YWVkZTUyIHB5M2sKKzgxNDc3IDZkYzllYzg4NTQ2MzkxYzczMTgxOGFiYzY3ZTcxZTdkNjExMDAxOTAgcmVsZWFzZTI2LW1haW50Cis4MTQ3OSBlZTc2ZjBhMDY1YzI0YzlmY2MyOWQ0ZWEzZDJlNzkxNWJkOWI3ODQ3IGxlZ2FjeS10cnVuaworODE0ODAgMWUwNmE2YzMxMjM0MWEzMWZlZGY4NmE3MDJiZjRmMzg4OTE0MmZjNSByZWxlYXNlMzEtbWFpbnQKKzgxNDgxIDY5MjA3ZjgwMWIzMTY2NDU0M2JhNDkxYjZhY2ZiZjAxMmJiNzlhMzMgcHkzaworODE0ODIgNGU0OTUyNjM2MTEzNDViNzg0MGYxZWFiOWUyYmM0N2IzNGY1YjdjYyByZWxlYXNlMjYtbWFpbnQKKzgxNDgzIDU0YjUxYWJiNjk1MTI0ZGNlNzEyNjQwZjA3OWJkMDk3Mjc3ZDhiMWIgcmVsZWFzZTMxLW1haW50Cis4MTQ4NCAxZThjOTIzMTY0NjM0NzRlNmFiYTVmNTY2NzNkMTgyMzUzNWEzYmM0IGxlZ2FjeS10cnVuaworODE0ODUgYjBkZWUzMmExYzZiMDk1ZGZhYTkzN2E5NzNkMzhiNjM3NGEwNDhkMiBweTNrCis4MTQ4NiAwYmM4ZmZlNmJhOWFjODVkZmY4NWUxMjJlMjhkNDc1ZDRiMTQzZTRlIHB5M2sKKzgxNDg3IGEwYTZlOGJmYWFmNzJhMDkzOTFhNTE4YzJiZGQwN2RjYThlNTZjNWUgcmVsZWFzZTI2LW1haW50Cis4MTQ4OCBkY2EzY2IxOWRiZGQ0NzEyNWE3YWE5YTA2MjJhN2Q1MzQ1NjdlMjA2IHJlbGVhc2UyNi1tYWludAorODE0ODkgMjFmYTA5ZjI1MGUzMDA2Y2RjMGJjNTI4NTlkZDUzM2IwMTVlNTc1OSBsZWdhY3ktdHJ1bmsKKzgxNDkwIDQwY2FkNzU5YTM1NTQ3NTVjZGU3OTg4ZmRlMDE1MTYzYjk1MDlmMWEgbGVnYWN5LXRydW5rCis4MTQ5MSA3NzUwNTc5YzM3NWRhMWQ5Mjg4OTQ2OGMwNzBlYmFmMjBjYTIzMzE4IHB5M2sKKzgxNDkyIGU2NGVhMTYxOTgyMGMwYjlhM2ZkNTUwZTQ5MTU5MWMxYzQ4NmUzMjYgbGVnYWN5LXRydW5rCis4MTQ5MyAwMzYwMTdmMmU3NGM2YTQ2ZTQ5ZTI2Yjc2ZTEzODAzZTQ4NGQxMWM5IHB5M2sKKzgxNDk0IDJmMjRhMmVmNzMzMWM2MmVkZjE2MDkyNTIyMWQzNDEzYzc1Y2IzMjYgcmVsZWFzZTI2LW1haW50Cis4MTQ5NSA4YWQ2MTc4MDUzNWVmYjRhZGY4NDBmNzc3ZGY5MDY4ODdkM2IyMmViIHB5M2sKKzgxNDk4IGIwMzhmZGE1OTNmNmQ1OGUxZTk1MzY1ZjFlOWRkMGMzZDM1YTI2YzAgcHkzaworODE0OTkgYzU2ZmI2M2M2NDhmNDk4MzI2OTRjNDExNDk3ZGNjZTJmNmJiYzQxZCBsZWdhY3ktdHJ1bmsKKzgxNTAwIGViZGE2ODAzZjhkNWMzZTFhNzY3ZWNjZTExMWNmNTBmMzM4ZjU2ZDIgbGVnYWN5LXRydW5rCis4MTUwMSA5MGQ2MzE0Njg0ZDQzYmU0NWU1OWIyYjNlOGI2MDc0MWY5MjY5YTVlIGxlZ2FjeS10cnVuaworODE1MDIgZTNiNTMzOGJlMDU4ODkxYmQ5NTJmZmRmNjc5MjE2NmM1Mjg0MjIyNCBsZWdhY3ktdHJ1bmsKKzgxNTAzIDRiZTIxYTA4ZGQ3MDcxNmU2OGNjNjQzNjVjZmYzZWU1ZDNhODM2YzggcmVsZWFzZTI2LW1haW50Cis4MTUwNCBiZjA0ZWFmMWFmNzQ4YTgzYmQ3NDJlZmIwNDkzNDJiYWRmOTJhOTk4IHB5M2sKKzgxNTA1IDYxNDQ3NjBlODM1MGQ0YzNiMDg3ZDlmMTYzOGU1MzMzMDYxNDgzZWQgcmVsZWFzZTMxLW1haW50Cis4MTUwNiA1ODQ5MTkxMTE4MmNlMTNjMjEwN2E5ODk3ZjU3YzAzYjMzOTNhODEwIGxlZ2FjeS10cnVuaworODE1MDggZjkwMzY4Yzg3YjMzZTY4NTI5ZWExMGJmYzcxN2M0ZjRhNGQwZjJiNSBweTNrLWppdAorODE1MDkgYThlYWI2NzAzMjY2NjRjYmFhOGNkYjE4MzQ0N2E4ZjFkZmVmZWNiMyBsZWdhY3ktdHJ1bmsKKzgxNTEwIDY5M2UyYmVmNGVlM2JjODIwNGIzNWQ3NzM3ZWU3NGJmNzJmM2MxYzMgcmVsZWFzZTI2LW1haW50Cis4MTUxMSA3ZjQxZDc1YWQ0MzVkMmQ4MzZkZmM3YzhkYTBkMWMxZDdlMzQ2M2FjIHB5M2sKKzgxNTEyIGI3M2JlYmRmZTUyNTljMmFiN2MzOWE4ZDc3MzUzYjNhMTBjN2YxNmIgbGVnYWN5LXRydW5rCis4MTUxMyA3MDMyODdhOTk5MzkxNzBmYzAzMTJjMzI3ZmI3MjZjM2M2MThlY2I1IHB5M2sKKzgxNTE0IDRlMDA5MTRlYzQ0N2JiYmZmNTc1ODQxYjAxZjUwZTViZWRiZWU5YTIgcHkzaworODE1MTUgNWJjNGZjZjA0MTQzZDZjNWQyOTkyNGIzZGFiNDRlODQwOTQ4NmZlMiByZWxlYXNlMzEtbWFpbnQKKzgxNTE2IGNlMjYxNzIzYjM1NjJiYWJhOGQyODJiNDVhYWRlOGU5ZmM1MWZiZGUgbGVnYWN5LXRydW5rCis4MTUxNyA3ODE5YmE3N2U0NWMwMDA2M2M2YWUzMDk4ZDI3MTEzYzRjMjM1NGQyIGxlZ2FjeS10cnVuaworODE1MTggMjI5N2NkNTdkOTQ1ZjJmYTljNGI2ODc5YjM4YzFjNzYwNGMzOWU5OCBsZWdhY3ktdHJ1bmsKKzgxNTE5IDIyY2FkZjI2NGFlNTIxN2YyMzllNGViMzk2ZDMzY2FlNjg2YmFjYzggcHkzaworODE1MjAgMTMyMTJkNzRjZTAwOGU5MDg0ZTljZjE5ZjMwNDYyOWU5YWZhYzcxNSByZWxlYXNlMjYtbWFpbnQKKzgxNTIxIDU0YjQ4OGNiZDM3ZTM5MTQxYTZmYTE2ODMwYzM1YTY0OWJhNWNiNGYgbGVnYWN5LXRydW5rCis4MTUyMiA3NjFhYzk3MDNhOTZjMTQxZjE3MzMwYTEyNDg4ODg1ZTM0YTJlMmM2IHB5M2sKKzgxNTIzIGU4YTkzOTNhMDc0OGQ1ZDUwNDI5MGUwZDY5OTI0NGEyMDY1OGQ0NjUgcmVsZWFzZTI2LW1haW50Cis4MTUyNCBkMDljOWE5MzdlMTBiZjZhNzEyZmE5Y2E4ZjJhMGRhOWU0NzI5MmJjIHJlbGVhc2UzMS1tYWludAorODE1MjUgOGFjM2Q1Mjc3NDVjNGUzYWE3ZDg5NmY5MTE2MGExOWVjZGYxODkxMCBsZWdhY3ktdHJ1bmsKKzgxNTI2IDQ3MDgwMDgwYWI2MTliNTcxMjQ5ODAyODUxYWFkMmFiM2EzNThjZDAgcHkzaworODE1MjcgNDRmNDIyMmQ5MWJkNzBmMWQwODkxZDcxM2FmNWNjOTUwMmExODY3YSBsZWdhY3ktdHJ1bmsKKzgxNTI4IDZkZmYzZDkyMTJhODY1YzIxMjgzYTE5ZTdiY2QxYTA3YWY4ZmEzMWYgcHkzaworODE1MjkgNTVkYzllZjE1YWIxYTI0NWY0NDMwZDBkMjdhYjUzNmYzZTk5NzdkNyByZWxlYXNlMjYtbWFpbnQKKzgxNTMwIDgyYzI0MjZmN2YzZTlhMDdhZjkyMTQzNGFjM2UzM2Q4NGZmYWZlODQgcmVsZWFzZTMxLW1haW50Cis4MTUzMSBmMTMzN2ZlNmI3Yjc3OWVjMjMwNTExMzRlZjM1NDI5MjdmYWM4ZTQ0IGxlZ2FjeS10cnVuaworODE1MzIgZTRhZjcwMmQ2MWI3ZDNjYWQ3N2IxNTUwNzczYTJmZDI2MjNiOTJjNCBweTNrCis4MTUzMyA0YzJkNmUxYjg5MGVkNmNjNDM2YWM5OTlhYWM1MjZmYjFjZGUyN2RjIHB5M2sKKzgxNTM0IDkzYzVlNjI0MTMwOTY2ODA5MjQ5OGM5MjlkM2E0OTk0NmNmYTliNmEgcmVsZWFzZTMxLW1haW50Cis4MTUzNSAwODBlNTUwOTE2ZWRjZDlhODRhNmNkNWUwMWJkZjE1Y2QyZmE4OWNjIHB5M2sKKzgxNTM2IGY3ODhhZmY1NzJkMTFjOTU5ODI0NWM5N2MyNjRiZjE4YzZlOGQ1OTAgcmVsZWFzZTMxLW1haW50Cis4MTUzNyBiZDVmNWRmN2VkNzg5NGM3YWFiZTlhM2Y0YTZkY2U0ZDQ4NDNkM2QzIGxlZ2FjeS10cnVuaworODE1MzggNmEzYzJmMDk0YmJhZDdjN2JhMjg2MzMwYTFlY2Q0MWYwMTlhM2UwZCBweTNrCis4MTUzOSA4ZGJiZDkwZWVkYTg2ZTdjNmExMjVhZWFkYjg2ZDRlOTFlNzhkYmZhIHJlbGVhc2UyNi1tYWludAorODE1NDAgOWY3OWNiOThkNTVmNDRlZGFhOTkxMzY2NzM4MmY5MjBjNGNjNmM3YyByZWxlYXNlMjYtbWFpbnQKKzgxNTQxIDgxYTU4MGQ5NDdlZjRlOGFjODhmOTZiZTIwMDc3NDg0M2MzYzg5NjggcHkzaworODE1NDIgMTliM2U0ODUzYzc0MzIyYzBkN2E5OGRmYTc4OGQ0ZGRmMGI5YWE2NCByZWxlYXNlMzEtbWFpbnQKKzgxNTQzIDQ5ZDQ5Nzc5MDYwN2Y5MmVhZmE0ZmM3OGI3NWQyZmJjOWY0YWQ4YzggbGVnYWN5LXRydW5rCis4MTU0NCA3MDJkMjYxZjNhMjlhYmRlMWI4NzU1YzJlMzA0ZWY0NmY4MDUzMmE5IHJlbGVhc2UyNi1tYWludAorODE1NDUgOWFlYzZhZDUzYTFiOTc0YWJmMTA0ZjM0ZmExOWZjODQ4ZmQ4ZDZkZiBweTNrCis4MTU0NiA5YjhiMTQwM2Y4ZGRhODU0MDg2MDY0NWM4ZmQxNWQ5NzQ1YTIwMzY4IHJlbGVhc2UzMS1tYWludAorODE1NDcgNGY5ODJlOTRhZTE2YWFiZjIwNGQ1ZGIyMzZhN2RhY2FkZjFhZWUwNiBweTNrCis4MTU0OCA4MzI4YzVjMzI3MmMzNTEwNDIwOWVlMjRhZDQ0YjA5NTQ4MzE1OWRhIHB5M2sKKzgxNTQ5IDYwMjcwM2QwNTYwYWY1M2EwZGZjZWVjZTM5NGE4ZjAwYmNhZTZiMDAgcmVsZWFzZTMxLW1haW50Cis4MTU1MCBmZDk5NDY3YWI0ZDU5NjUwMmVkM2Q2NjdmNTk1YmZkMzMzMzI4MTRkIHB5M2sKKzgxNTUxIDU2YTU0OTM2ZGExZGJkNDkyZTFiNjI2NmU2NzI3ODY1NjUyOTFhZDUgbGVnYWN5LXRydW5rCis4MTU1MiBjNGY3Mzk3NWE0NDBhOTJkZTE4MDg1N2QxZWYwNGVkZjdlZDdhNGNiIHJlbGVhc2UyNi1tYWludAorODE1NTMgZTNhZDFiOGM0NTIxMjhmZDZiZTQwODk5ZTY3NzU5ZTk2MzYyNWUzMyBweTNrCis4MTU1NCA4MTgwYWJiZDA3Y2IyZTYwYWZhYzI1YTM4ZDk2ZWM0N2JiYWU0MThmIHJlbGVhc2UzMS1tYWludAorODE1NTUgNDc0NWUxM2FhOWU0MzY0MjlhNzljYjQ1YTkzN2FhMzc3ZGRiZmM2ZCBsZWdhY3ktdHJ1bmsKKzgxNTU2IDdjZmJmZmE2YTMwYjI4MmJhNGVkNjRlNTc2MWY2OWUzYTU2MDQ2ZjkgcHkzaworODE1NTcgYzQyZmZiM2Q2M2FmYzc4YTE1ZDRlNzBkMmJiMzI2NGUwNmJhYzFhMCBweTNrCis4MTU1OCAzZjRkMmE4MTgxMGM1Y2M3Y2IxM2U1NjFkNzI1YjYzNDljNWUxNjNjIHJlbGVhc2UzMS1tYWludAorODE1NTkgMTMwN2Q5Nzg3ODlmZWZjM2RhYjExMTA2MGI4NGFhM2JkZGU0MWMyZSBsZWdhY3ktdHJ1bmsKKzgxNTYwIDdmMzEyZjYwZmRiMDUxOGQ1NTVkOWM4ZTBlMzliZTY4ZDRiYzA5YTIgcHkzaworODE1NjEgMDE0ODI3MDA0MzRkOGEwOWEzZTM2MjMzYzc3ODkyYjdjZTM2Y2UyMiBsZWdhY3ktdHJ1bmsKKzgxNTYyIDU1NWZmNThjYjdjYjhhN2FlMzQxMjhmNDU2YjJlZjM1M2EwZjQzZTcgbGVnYWN5LXRydW5rCis4MTU2MyBkZGEwZTFhZGQ4YjMxMjZiMTNmNjFjY2FhYzRiMDYzZTBlOTYzYzg0IGxlZ2FjeS10cnVuaworODE1NjQgYzI3ZWFkNTFjN2RjNjMyMzE5YWIzNWEzYzQ5NmYyMTFmNWQxZDYzNiBweTNrCis4MTU2NSBjZmQyMTVkOTQ5OWMzZWExZmU1MzIxOWIyNDliOTUzZTA2YWY2ODNkIHB5M2sKKzgxNTY2IDMxMWEyNTNiNThiNzVkMTBiZDA0ZjMwYzAxZGRhMjMwMGIwNjRiZTIgbGVnYWN5LXRydW5rCis4MTU2NyA5NmE3YTNjYzU4OTdlYjQwOGNjZDQ5NDMzNmMyOTIyODgwZDFhNzFhIGxlZ2FjeS10cnVuaworODE1NjggNmI4OWRlMzZhNzRmYzI5MGZhYWEwYWI4YmQ1MGM0YzU5N2JhYjM5MCBweTNrCis4MTU2OSAwY2NmMGZkYzU5NjY1MmUxMzFiODY4MzVlOGZkYzUzMTM3OGM3NDY3IHJlbGVhc2UyNi1tYWludAorODE1NzAgNGIxNDJmN2IzODEyZDA5OWNiODY0MzA1Y2VhMzYxZWJhOWRkZGZhMSByZWxlYXNlMzEtbWFpbnQKKzgxNTcxIDVjY2M3MWRjYjVkZWE0NDE3ZGI4NWI5NDk4NmQxYjkwMDcwZGIwNWQgbGVnYWN5LXRydW5rCis4MTU3MiBjOWJlY2NiNjNlYTkwOWE0M2MwMzdkZjIyYTMwZjRiZGFhOGMxMmZhIHB5M2sKKzgxNTczIGY1MDFiZTYzODg3OGExNWIyZmNiYzUxMzU5MWY5OWZkNzM4OTJhNjMgcmVsZWFzZTI2LW1haW50Cis4MTU3NCAyNWYyYTBmMGU5ZGViZDMwOGEyMjFiOWJhYWE5NzIyNzVhZTliYWM4IHJlbGVhc2UzMS1tYWludAorODE1NzUgNWNjM2EwYzE0ODAyZWJiYTA1MDYwYWEyNzQ1NDFlMzIzOTEwNmE3OSBweTNrCis4MTU3NiA3ZmU5Yjc5MDA1NGJhZGI4NjU0ZTE4OWE3M2RkMmZkYzBiODU1ODhkIHJlbGVhc2UzMS1tYWludAorODE1NzggOTUyNmE5MDhhMjU4ZGI4NjZiYTY1ZTcyOGNhZjkwMDQyY2JjMDAwZSBsZWdhY3ktdHJ1bmsKKzgxNTc5IDFhNTkyOGIyNTkzYzkwZjc2OGNjMzEzMzRlN2I4YTk3M2M3YjRmY2EgbGVnYWN5LXRydW5rCis4MTU4MCBiZDljYjI0YmE2OGI0MmQ1MzBmYjljNzE5ZjQ2OWViOGQ0YTM1YWMxIHJlbGVhc2UyNi1tYWludAorODE1ODEgNjIxOTQxNTU3ODk4MzZlYzkyNTYxNTU4YjBjMWFlNjQ1ZmUwNDQ1NiBweTNrCis4MTU4MiA3Yzk0Nzc2OGI0MzVkOTM4OTk5NmRkNWFjZjNmOGY4ZTMyZDcyZDY0IGxlZ2FjeS10cnVuaworODE1ODMgZjEyYjAxZTY4ZjY0NGZjMjBkZDk4YjliNDQ5ZGFiMjg2ODEyNDZiNyBweTNrCis4MTU4NCBiNjk3ZTIxZDFlNzg2N2Y5MjJhMjk1ZGM2ZDNmY2JlMzJjYzk3OWZjIGxlZ2FjeS10cnVuaworODE1ODUgZjAwMDc1NGM4OTQzZTE4MDY5MDM0ODgxOWYwNWYwYmJlZWM4ZTE0MiBweTNrCis4MTU4NiA0NDE1NTk5YjcwMTE2ZmU0OTE0OWVjZjY0NGExNmVjMjBjZDc1ZDc4IGxlZ2FjeS10cnVuaworODE1ODcgMmNmYjE4ZjFjMjkzM2NkNTA5YTVhNGE0MGYwYjczNmIwZTJiZjU3MiBsZWdhY3ktdHJ1bmsKKzgxNTg4IDMwOGVkZjExYzdjZmY2ODUyYTYxNDE3YzIwNTQ1MTkxZjMzMzQyNzAgcHkzaworODE1ODkgOWEwNGJkYzQ4MDg5ODNmMmYxN2FhOTU5NmMxNDViOTExYTFiOWQ2MSByZWxlYXNlMzEtbWFpbnQKKzgxNTkwIDg1MmQ1ZWE2MjVlNzQ5NTIzMjU0YWQ4NjBkYTYyNmUyMWM1Zjg5NzQgcHkzaworODE1OTEgNDlhYjVkYmM0ZmFjOWM0M2I0YjQzNDM0MjY4MjFmOGUyYTUyYmFjZSByZWxlYXNlMzEtbWFpbnQKKzgxNTkzIGQ1Yzc5ZDg5YjM5M2FmZTZmNmNmNmZmNmFlZTlhNDgxNzBlMGJhN2QgbGVnYWN5LXRydW5rCis4MTU5NCAyYjU4N2U3ZjAyOTliOWY4ZDYxMTkwYTE5NGEwODc4NTRkYzczMjI3IGxlZ2FjeS10cnVuaworODE1OTUgYjc5OWY4NjJmYjIxOGI0MmJjN2M3NGMyNTJiOTQyMTllYTQ1NTY3MSBweTNrCis4MTU5NiAzMjJiZjRmZjRkM2Q2ZWZhNTQ0OGMyYmE5OWEzOTQyOWNlZmJkNmVjIHJlbGVhc2UyNi1tYWludAorODE1OTcgYTkxNzQ3MzM2ZWFlNjAyNGY2NjM4NjE4MGM3NGMzZTk0ZThkMzdiYiByZWxlYXNlMzEtbWFpbnQKKzgxNTk4IDAzNzJiNGM3YjlmNGY2YTI3ZjNkYWU4NzIxZGQ0ZWQ0MjYzMTkzNjcgbGVnYWN5LXRydW5rCis4MTU5OSAxNjQxOTNhZGU0YmFmMGU3NDY1MzFmZWU2YmFmZTNmZmY2YzRhYTBlIHJlbGVhc2UyNi1tYWludAorODE2MDAgNjNlNzhmY2Y3Zjk0YWNlNjYxYzA3NDdlODk1M2ZjZjIyYjcyNzAyNyBweTNrCis4MTYwMSBhN2E5YjU4ZDFjMTg2NzUyODA3YWNiM2E4M2JhNGJlZjNhNjc5ZjA5IHJlbGVhc2UzMS1tYWludAorODE2MDIgNmU3MWVjYTYyNzhjYjU3NTgzMTkyYjg4YTkwYTdjOWI2OWQxYzhlOSBsZWdhY3ktdHJ1bmsKKzgxNjAzIDVkNDNiOTY2MzZjODg4N2ZjY2NiYTIyOWFmZjRiZjU3OTczYmRiMzAgcmVsZWFzZTI2LW1haW50Cis4MTYwNCAwNDcwZGM2M2QxMmE5ODAzYmVjYjA2MjBiNzg3ZmEzMTk2OTJiZmM3IHB5M2sKKzgxNjA1IDlmYTVlZDRjYTBiYjViNDhjYTBlM2E3Y2ViNWZjZGU5MWE3ZjQ1Y2QgcmVsZWFzZTMxLW1haW50Cis4MTYwNiBlZDc5ZGEzYTU5MWM0YTgwOWI4NjI0ODMwZWNiYWU4ZDZlMzEyOTc0IGxlZ2FjeS10cnVuaworODE2MDcgNmI3YWY1YTI1ZDJlOGQyYTNjMDQ4YzVlZmM2OGY3YjUzOWZmMjZkOSBweTNrCis4MTYwOCAwNWQ2YjI1ZGQxOTcxNWFiODU4N2U4ZTdiN2I4OTY3NTc5NmZiNDliIGxlZ2FjeS10cnVuaworODE2MDkgOWE0YjAyYmFhN2M0MzEzMGU4ZTJiMGJmYWM1NzM1ZGE1ZmVkMzQ3ZCBweTNrCis4MTYxMCAzZWRmYWQyNTQ5YzYxNzhkYTEzNDc0OGM4OTNkN2ZiZTNkZDgxNGM3IGxlZ2FjeS10cnVuaworODE2MTEgNTgzMzc5NTA2MWM1ZDk3MDg1ZTk1OGM3MzQ2ZjFhYzQ3NzU4MGI0ZiBweTNrCis4MTYxMiBlNzY2YzBkODZjZmY5ZDFlNWJhNmUzYTU3Y2NkZDE4MWQwZmJhNTAzIHB5M2sKKzgxNjEzIDY2YjNlZGE2MjgzZmVhYzZhOWE0MDMxZjNlMDNjZDU5NzJlOGI0M2EgcHkzaworODE2MTggMzI0MmEwZDIyZGU2MzhhYjcyZGQ0MTlmOWE0YTJkMmM5ZWQ3NDRmYiByZWxlYXNlMjYtbWFpbnQKKzgxNjE5IGNhYzAwY2JiZTc3MDk0MzM5YmExYWJjMTkzZWRmMWJkMmUyYzkzMGUgcmVsZWFzZTMxLW1haW50Cis4MTYyMCBiMWIzMTc3NTg2NzY1MzJjNjUyZTNmYmMwYmI3MGRlNjE2MzVhOTAxIHJlbGVhc2UzMS1tYWludAorODE2MjEgNzk0NTA0NWMzYTc1OTIwNWUyNWUxNTdhYjYwNzliZTk1MWM3YWI3MCBsZWdhY3ktdHJ1bmsKKzgxNjIyIGM5NjM0NzhiOTA5MmRlY2VmNDEzY2Y2MGE5OTI5MGQ2YTlkMWEzNjMgcmVsZWFzZTI2LW1haW50Cis4MTYyMyA4ZTIxYzY4MzFjN2ZhNmIzZjlkYmRjYmVmNTEzNjE5MTFmMGJkN2E1IHB5M2sKKzgxNjI0IDhhMTNmNzczYTk3NjM5ZTk4ZmM3ZGVhMTdkODU3NjIyZDE2Yjc0YWIgcmVsZWFzZTMxLW1haW50Cis4MTYyNSAzZTY0MjVjMjIxZWNmYzVhNWUwNjAwOGZhM2QzZWEyZTU4YjgyMzgwIHB5M2sKKzgxNjI2IGViYjkxMzBhYjBjNDU4ZmFhMDZlZjUzMTQ5NDlkNjE2N2NmNzViOWIgcmVsZWFzZTI2LW1haW50Cis4MTYyNyA1N2I5MDM1MDM3MmY4YzAyNmY2YzZlNTgwYWVhMGFkYjQ5Mzk4YWM0IHJlbGVhc2UyNi1tYWludAorODE2MjggNzE0NjUzZGQ0YWFkYWQ0NTNjY2FiOWJhY2RlYzExZWUwODNjMzdlMiBweTNrCis4MTYyOSBkYzI3NjhjOTk4ZGUxMjUwYWViZWFmY2ZkY2MyYzM0MzcwYTVkMjJiIHJlbGVhc2UzMS1tYWludAorODE2MzAgNjYxMDlkMGU0ZTZkZjFkZWE0YjdmOThjMGExMWIzYWVhMmYxYTU4NSBweTNrCis4MTYzMSBlYmQ2NWVjNTRkN2U5YmVmNWQ2ZDVhMjhjZDdhMGFjNTIyNjUwMjllIHJlbGVhc2UzMS1tYWludAorODE2MzIgNjJjYTU0MGQ4YjZlNjE1MWFkMTJlOTU5ODIwOWI3MDA0ZjdlOWVkOCBweTNrCis4MTYzMyA5ZjkyY2JhYTUzOWQ2YTQzYzU4MjI5NTgzY2NmYmNhYjNmZWIyZjcxIHJlbGVhc2UzMS1tYWludAorODE2MzQgZjgxMjcxYzE4ZWIwMWFkYzY1OTliOTE2NDhmODFlZmE2MWI0NzhlMCBsZWdhY3ktdHJ1bmsKKzgxNjM1IDUzZWU0NzMyMmRkMmEyYzJhMzQ4MjZiMWM0MzUwNDk2MTc2NzRiYzIgbGVnYWN5LXRydW5rCis4MTYzNiBkNjliMWEyZDliZjBlZjEwNDgxZTM0N2Y4ZjMxZmJmMDk0NmFhN2U0IGxlZ2FjeS10cnVuaworODE2MzcgZDQyNjBkY2FmYzdmYjYyYjUzNzAzYmM0NDgwYWIwYjJiMTRmMmZhZSByZWxlYXNlMjYtbWFpbnQKKzgxNjM4IDljMGMyN2E5YjcxYzc5Y2YyMTE2ZmU2Yzk3MzRmMzhjMmMxYmJhNjAgcHkzaworODE2MzkgMTA5Nzc3MDhkYjJlYWFiM2VjOTU0ZDlmMGMwNzFiYTYzODc0MjRkOSByZWxlYXNlMzEtbWFpbnQKKzgxNjQwIDg5OGViYjI5OTBkZmE1OWYxOWE3ZmM3OWEyMGU2OWJlYmY3YjRiNzkgbGVnYWN5LXRydW5rCis4MTY0MSAyZGU3MTIzM2I2OWIwZDIwMTZlYzZhYjZjYzg1NzE1NjQ1YWVlOTk5IHJlbGVhc2UyNi1tYWludAorODE2NDIgZTRjYmJiYjc4NjNiOTJkYjliYTY3M2Q5ZWNjMWJmNzI5ZTcwMmI0ZCBweTNrCis4MTY0MyBjZmUxMzg2MDBmNjRjNGM3YjE1ZTFlMWFjODBiMjdlY2Y0N2YzNjhiIHJlbGVhc2UzMS1tYWludAorODE2NDQgYTAzYjk1NjgzNTljNTVkZGVjMjk3YTNkZmVjNGVlZTQ5ODFlNDkwMSByZWxlYXNlMjYtbWFpbnQKKzgxNjQ1IDhlMjk0ZGYwZTM4MmE0NmIxYWUwNjJlMWU4MjFjOGI0ZGJjNmYzN2QgbGVnYWN5LXRydW5rCis4MTY0NiA3YjExMjZiNWJlMmQ2ZjBkMTQ1MzAzOTBkMDczYTNlNzFiN2EwMzFlIHJlbGVhc2UyNi1tYWludAorODE2NDcgMzc5ZWUyMTIxNTNlMDNmOGFmMGY2MGNjNmZiNjdkYmM3YWNmNTI2YyBweTNrCis4MTY0OCBkMjBkYjNlZTg0NTc1NWY1ZTY3YjUwY2E2OWViNjY1YzI5N2RmYWVlIHJlbGVhc2UzMS1tYWludAorODE2NDkgYmQ0N2NkMWY5YmMyZThiY2MyNjMwOTgwOWFkZWE1MGIxY2JjMmFiMiBsZWdhY3ktdHJ1bmsKKzgxNjUwIDM0YTYzN2JmZDRiZTc4YjllNDYxZDRmMzMzYzQwY2NlODdlODFmNmUgcHkzaworODE2NTEgZWE0M2I0MDY0NTBmOTRmYzI2YmVlZTU3ZThmMjNjMWY3NjRkYmFmMCBsZWdhY3ktdHJ1bmsKKzgxNjUyIDNiODA3MDkxMzE2OTQ5NmY4YWIzY2UwNTQ5MGE0OTcyNTQyYzc1Y2YgbGVnYWN5LXRydW5rCis4MTY1MyBiNDdjNGNmMjVmMDIyZDc1OTA2MDQxZTMzODZhODgyNjdjOGU3ZTg5IHJlbGVhc2UyNi1tYWludAorODE2NTQgYzNhZGI5MWNhNTg5NDcwOTllYmZkOGYxMTVkMjM1MzkwNDZkNDJhYyBweTNrCis4MTY1NSBkZmY1ZjA5YjVhODYwMTgyZGNmNmNhNzMyZjQxYTU1NTA0NjVlNDUyIHJlbGVhc2UzMS1tYWludAorODE2NTYgOTdlZGYwZWEwM2Y5YjE0ZTJhNDlkNDhhNmFhMTVjYTgwY2YzMzJlNiBweTNrCis4MTY1NyBkZmJkMzQ1ZjUzZjAzYTU4NWU3YzA0MjI2NWQ3MGJkM2M1ZjAyMzQ3IHJlbGVhc2UzMS1tYWludAorODE2NTggNmIwNzI5NGIxMzUyMGUyZGY1NjU2ZDNkMGJkMTI1YzU2N2VkYjJjYiBsZWdhY3ktdHJ1bmsKKzgxNjU5IGRkMzc4Yjg4NWI5NDAzNjU0MGYyYzk1OTUwMWFhZTc0MmU5Zjk1YjQgcmVsZWFzZTI2LW1haW50Cis4MTY2MCBiYjYzZWFlZmM1YTY4ZDc4ZmRkNWFhODIyYjJlNjJjOTRjOGI0YjcyIHB5M2sKKzgxNjYxIDgzM2RlNzk4ODVlNGZjOTJjNjg0MGY4YTEyZjdiZmQ2ZjE5MjUyNWYgcmVsZWFzZTMxLW1haW50Cis4MTY2MiBmNmU5MDE4MjY4NmJjNjE1ZDQ3ZWU4NDk2YzhkOTA5ODExMTNkODc5IGxlZ2FjeS10cnVuaworODE2NjMgMjkxYjBiYjYzZmI3NmJhZDg0MDAzMTFhYzU3NTcyMTg3OGY4ODU5ZSBsZWdhY3ktdHJ1bmsKKzgxNjY0IGVkOTgzYjExNmE3ZGUwMGFkNzFiMmY1NzBjNGNjNzk3NTQ5MGQxMjEgcmVsZWFzZTI2LW1haW50Cis4MTY2NSA4YmJkNGViNGVmYzQxZTNjMzc3N2MzNWIyM2RlYWQxYTM4MzRmZDM3IHB5M2sKKzgxNjY2IGNlYTVlZjY4MmJkZDRjNjgzNTUwYTBiOTJhOWRmZDcwZDdiNWNiNGMgcmVsZWFzZTMxLW1haW50Cis4MTY2NyA5YWY2MDBhNjYxMTU3MDEwODlmYzc1Y2Q2Y2NmMDQ4NWNjNWY4Zjc3IGxlZ2FjeS10cnVuaworODE2NjggYWUxMWY1NmFkNWQ3NDdkYWYyMDcxYjdiZjczMGZiNmQ3NGU5NDk3YiByZWxlYXNlMjYtbWFpbnQKKzgxNjY5IDFiNGMzMDc0MmEyNGEzYzY3OWU4MGI1MjhkOTBlM2UyODJiYjI5Y2IgbGVnYWN5LXRydW5rCis4MTY3MCBiZmJmMmQ2NTBmMjY5MzRkNzI4OTlkZGVkZmM4ZTFmZDMyYTNhMjEzIHB5M2sKKzgxNjcxIDA1MzRjZTAxYmE1MDI5YjNmNTQ2MWJhNTNmYTRlMjI0NmIzNjNmY2MgcmVsZWFzZTMxLW1haW50Cis4MTY3MiA4ODI1YTdlNmE1ZjAxZTY5N2QzNjFlZmE1NDU5ZWIyMWJjNzU5NTZkIGxlZ2FjeS10cnVuaworODE2NzMgMzc5N2VlNTdkM2Q2ZTM4NWJlYTc0MTQ2M2VkNzI2ZjgzYjJiOGY2MSBweTNrCis4MTY3NCAxNmZiZGYxMGQxMDAxOGZjY2RjODNmMTMwNTNkZTY5MTIxYzM0NWZhIHJlbGVhc2UyNi1tYWludAorODE2NzUgM2QxMWJhNzk4OWRmMGI1MDhlYzkwZjZhZDg1MzkwMGI2MzdlMDMxMyBsZWdhY3ktdHJ1bmsKKzgxNjc2IDVlMjhhM2RmZGVlZjNmNGYxYzY3NDI1YWZkNjQ0OGFkYzA5ZWNiZjQgcmVsZWFzZTI2LW1haW50Cis4MTY3NyAyNWI0MTYzZmZlM2ZkMmU2OWQ3NWJlZTgwMjdjNGE0MzBiZTZjMDE1IHJlbGVhc2UzMS1tYWludAorODE2NzggMzhkZGVjY2YwMmE5NDIyN2M1MmVmNGZkN2M5NzkwMGZlNDJjNTMyMCBsZWdhY3ktdHJ1bmsKKzgxNjc5IDExYWNjNTdmNTgwNGNhYmMwYzA4NGRjZmY2NWQwMTA1ZGFlNTM5MjkgbGVnYWN5LXRydW5rCis4MTY4MCA2ZTEyMGQ5MzExMmVjYTQyZjdmNDc5NjUwYmQ4OTBiMzU4NTVlNzNhIGxlZ2FjeS10cnVuaworODE2ODEgNTMyZTllNmFjODI1ZjFjZmIzNmFmNzQ2M2ZkOGI3ZmI4ZDdiNWYxNCBsZWdhY3ktdHJ1bmsKKzgxNjgyIDI2ODAzMTY4Y2U4YTc0NzJkZjVhZGFjOTNhODkwMzhhZWQ4YTkwODIgcHkzaworODE2ODMgY2I0ZmEzZTRiOGQ1NzY4MDE5YTY5NTRmNzM1ZmFiNDViOWQxZGFmNCBsZWdhY3ktdHJ1bmsKKzgxNjg0IGRkNjYzNjgyMTdjMTYyNmUzMWY0YmViZDg0M2JjOWFlZDgzZGExMDggbGVnYWN5LXRydW5rCis4MTY4NSAyMmMwZTIyOGQ1YTdjMTJmNjM0MzYzMWEzMDRhYmQ4YjY5NGJiYjFmIHB5M2sKKzgxNjg2IGJmMjEwM2EyMmUwMDc4ZTZhM2Q0YTVkMmIzYTkxNGJkMzBmOWUzNGUgcmVsZWFzZTMxLW1haW50Cis4MTY4NyAzYjY3ZmEzNTg1ZjA3YzU1MDdlOTE1YjYwMzgxNzVkYmNjNjllZjQ2IGxlZ2FjeS10cnVuaworODE2ODggOWZhNTU5MDI1OWY0NjRiMGQ1NGFkYWE0OTU0ZmE1ODQ5ZDQ4NGYzMiByZWxlYXNlMjYtbWFpbnQKKzgxNjg5IDA3N2QyOTM4NDM5OTE4ZDYzYWNkMDFmNDIxZDNjOTk1ODliYjZkMDYgcHkzaworODE2OTAgN2I1OWIxZjYzM2NiNGUyNjhhMmZkMDhiNjkyNzM3YTNmMTQ4OGJhNSByZWxlYXNlMzEtbWFpbnQKKzgxNjkxIGVhY2JlNzc0ZjAyOWU0ZDg5ZTdmYTQ3N2FjOWI0M2U1MThjNDYwYTIgbGVnYWN5LXRydW5rCis4MTY5MiA0MTk5MDFlNjVkZDIxOWRhNjhlZWYwYmFmYTQ5NjY2N2JmODIzM2NkIGxlZ2FjeS10cnVuaworODE2OTMgODI0NTY4M2U2ZWM2MTBjYmU5MGY3M2E5YTQ4OWEwM2QzNTM4ZTA5NSByZWxlYXNlMjYtbWFpbnQKKzgxNjk0IDEwOWE5OGY5ZmNkZGQzNGJiYTk2ZWRjZjUwNWUyYmM5YWFhODhjY2MgcHkzaworODE2OTUgY2QxOTJkMWZjZDY3NjNiMWMzYzVkMWJhMDdjNzNiODI0NmM2NjA0YyBweTNrCis4MTY5NiA4NDk4OGJiOTFmYmY2Mzk5YjhhYzYyZjJjYmQ4NjBhNDYyNDRlNzdmIHJlbGVhc2UzMS1tYWludAorODE2OTcgYzE2MGFmMDljNWIwMTY1ZWYzZDEyZGQ3NTEzMTlmMDdhMzkxNzg1OSBsZWdhY3ktdHJ1bmsKKzgxNjk4IDJiMjViNTBlYWVhZGQ1NTg5YzU5OTdhYzRiNzI4MjgzYTUzMjIzN2QgcHkzaworODE2OTkgMGM3NzY0YWE2OTRhMTg2YTQxMDVkNDliYTRkOTBkYWY1MDg2MzA5MSBweTNrCis4MTcwMCA0YzBiMmJiZGQ4MmQxNzA0N2E4YzFmNTkyODEwYTZhOGZhYzQ0M2UxIGxlZ2FjeS10cnVuaworODE3MDEgYTgwYzFiOTY0YTZmZTk2ZmI5ZmJiODZkN2RkMDBhZDdlZjU1ZjM2NyBsZWdhY3ktdHJ1bmsKKzgxNzAyIGJiYWY2MDYyZjI0MTQzNmM5YzA4ODAzODE5YTA1NDg1NmY0NzYzYTkgcmVsZWFzZTI2LW1haW50Cis4MTcwMyBmMjE0ZTFiZjAzMWQyOTc3NTlkMjcxZmRmMThjMjZlZjhhMDMzZTczIHB5M2sKKzgxNzA0IDUyZTkyZTc3YjMxMTRkNDdmOTMxNzI3MzMwNDAyZjA4OGNmODAzYmYgcmVsZWFzZTMxLW1haW50Cis4MTcwNSA3MzQ0NDhlODU2YWE3YzZjZWEwMTBiYzE1MWE4YmRlNzViZTM0YWM2IGxlZ2FjeS10cnVuaworODE3MDYgMDkxNzZkMGJkZTM4NDllMGQxZTllMzk5ZjhiMjM5MzNmYWZmODYzNSBsZWdhY3ktdHJ1bmsKKzgxNzA3IGQ3NTQxYTQ5MGNiZDg0MjM1ZGVlN2RlMjFhYmI3NDk2NWIxYzM1ZTIgbGVnYWN5LXRydW5rCis4MTcwOCA5YmI1YzIyZWYxMzQyM2M1ZjIyYzQyNmUxODU5YjFlZjdhOWZkMjVkIHB5M2sKKzgxNzA5IDVjZGYyNjU3NmU4ZWExZmQ0MDQxNzRhOWUzYjc5YTM0NjQyYjVjMmIgbGVnYWN5LXRydW5rCis4MTcxMCAxNDJjYjZmNjBmZDdlOTUxYzUyYzc1MzdkNmRlZTYyMDQ0NWY0ZmZjIGxlZ2FjeS10cnVuaworODE3MTEgMjNlZDgzNzYxNWFhYjQ5ZTEwNWUwOTM2MTAxNjI4M2I2MjYyZmRkMiBweTNrCis4MTcxMiBkZGE5YmVlNWM4NGEwMDBkMDhjMTljOWJhNjBkNzZlZDAxODQ1MTIxIGxlZ2FjeS10cnVuaworODE3MTMgNjA2MTNlODFmYjFlODUyZDEzYmM3ZWE3MjlmZTA3ZTU2NGFiZDY5NiBweTNrCis4MTcxNCA1OTA5ZTFmNzZiZTc0MGQ2MmMyYTA4NDRlMDdhNzBlN2M5MGI4ODJlIHB5M2stY2RlY2ltYWwKKzgxNzE1IDJiNTcwMmQ4OGYyNzVlOGZhMDc5YmY3ZWUyOGZhYjdhZDg0MGEzZjUgcHkzay1jZGVjaW1hbAorODE3MTYgYzg4NjQ4Mjc3MTM4ZjFiYzViNmMwYmM1MGYyOWQ0MDEzNjY5YTJhMSBweTNrLWNkZWNpbWFsCis4MTcxNyA2YjUwMTNmZWE4MWJiZjBlZjU0Nzg4MWJmMDNjMDExZGFiYjE0ZDliIHB5M2stY2RlY2ltYWwKKzgxNzE4IDYxZjU0NmU4NjFjMTJmNzYxN2I5OGZjZmU1OGU1MzZiYzkwMWY0ZjYgcHkzay1jZGVjaW1hbAorODE3MTkgMDgyOWY2MDIwODBiOWRiNzcyZTlmNGMyZDY3MWNmMzhlMmZlM2ZkOSBweTNrLWNkZWNpbWFsCis4MTcyMCA2ZjFmMDVjNzI1YjdjMGY1NzdhMWQ2YmVhM2ZhYmZkMDUyYjk1ZTgyIHB5M2stY2RlY2ltYWwKKzgxNzIxIDFmZDM2NWQzNjk1OTYyZjMxYzlhMmU0NjhlOTNkYTBmMTExMDhhMTAgcHkzay1jZGVjaW1hbAorODE3MjIgYTQwOWE1YWI4M2JiY2IyYzc4ZTVjM2Q5NTdiZTVhYjczODYxNWZkMSBweTNrLWNkZWNpbWFsCis4MTcyMyBhNTYxMDU0MDFkNTI2ZDQyMzdkZDFiZjNmZWE4YmJhZDk0ODllYTA3IHB5M2stY2RlY2ltYWwKKzgxNzI0IDA5YzA1YWQ0NWI1ZjBiZGY3MTg5MWMwYjgwYzk5Y2ZmNzFlNjhlOTcgbGVnYWN5LXRydW5rCis4MTcyNSAwOWMwNmNhMjdmN2Y4NDZjZWQzODM2MGE5YzZiNWVhY2ZhNTJkOTE2IHB5M2sKKzgxNzI2IDQzZTlhM2U2MTc5NmU2ZDhkMDAyZDYxMmMyMzdlMzZkMmY1ODYxY2IgcHkzay1jZGVjaW1hbAorODE3MjcgY2I1MGRiOTQxMmM3MDRjOGU3N2E0NDAxNWQxNGJkYTViYTNlY2M5OCBweTNrLWNkZWNpbWFsCis4MTcyOCBiZTU4ODE0ZTI1ZDc4NTE1MmQ4ZGNiMjhmOWIxNjQyMTgyYmVkMTFlIGxlZ2FjeS10cnVuaworODE3MjkgM2E1NzFmZDhjM2JlYTBiMWEwYWQzMTY5ZTU2YTU3YThmMDY3OTA3ZiBweTNrLWNkZWNpbWFsCis4MTczMCBlYzE3NGY0MmYxNWJkOTBkZGYyZDE1NmFkMTdhZGUwZjNhYzEwZWM1IHB5M2sKKzgxNzMxIDBlM2VjNDE4ODQ1YWRjNzU1NzhjZjlkMWJiN2Q4MmZhMWI1NWNiNTUgcHkzaworODE3MzIgYWE1Y2U4NjE1YzRmYzcwNTI2ZWNkNDkxZGFlZjg1NWFjZWI5MWUyYSBweTNrLWNkZWNpbWFsCis4MTczMyAyZjI4MmY4ZjkzODg0OGQzMjEwZmMzYmIyNTBiNWIxMTZlNmE0YTBjIHB5M2stY2RlY2ltYWwKKzgxNzM0IDc2Y2Y0YWNmN2I0M2YyZDYyNjIzYzU1OTIwMGMxZjg2ZDdlMjhlYjMgcHkzay1jZGVjaW1hbAorODE3MzUgOTg2YmEwZWMyYzU1ZjM1MDU1ZTBjOWFmYTE1OGNlMWZjNjUzMTU4ZCBsZWdhY3ktdHJ1bmsKKzgxNzM2IDhmYTRhNWU1YWY1NTJkZjc4ZDhlNDNlZDgzMGViZTAwYjE5NTZlMWYgbGVnYWN5LXRydW5rCis4MTczNyAwNmJkNGE0NDgzOWQ5NmQ1NDYwYWEyMzQ0MmI2NTg3YjY3MTViMGY0IHB5M2sKKzgxNzM4IDcyZGMwZWYzOTRhY2JiNDY0ZWJmYWNiMGQ1YjE4OGEyNjAwMjRhMTMgcmVsZWFzZTI2LW1haW50Cis4MTczOSBmODZjNmE2ZTE3NDQxNDgyMjM2OGQxZTMyYzViNTBhNjRhYzJjNTIxIGxlZ2FjeS10cnVuaworODE3NDAgNjdjMzNjYjk2MjJkYThlYzQyNjU0NmYwY2Y1NDY5MzQ1NGM4MGMzOCBsZWdhY3ktdHJ1bmsKKzgxNzQxIGUxMmQ4N2M0NTU5MTk4ZTE2ZWM2ZDEyMDAzYTI2OTMxZWJiMTRkYjAgcmVsZWFzZTI2LW1haW50Cis4MTc0MiAxYzMwZjllYjQwYjgyNjA3MmJkOTY2NDc2Zjg4YzU5YTEzZjk2ZGNmIHB5M2sKKzgxNzQzIDkxMjUxN2NjZGIzZmQ2ZmI4NjY0NmVhYjBlNTIwODBlNDgwNjVhNGEgcHkzaworODE3NDQgMzcyMWQ0ZTViMmVlZDM3NDhkZDBkYzI0OWU4OTk0OWEzMGI5Mjg0MyBsZWdhY3ktdHJ1bmsKKzgxNzQ1IDM2NjJkMmI1YWZhYWVkZGI1ZGRkYzZjODg4OTc5MGZmNGY1YWQ3NGQgcmVsZWFzZTI2LW1haW50Cis4MTc0NiBkMGQwNTdiNWQzNjEzMjg1YTgyYjc4ZWU4NzQzODNlYzhjNGVjOTRlIHB5M2sKKzgxNzQ3IDhiODcwMTU1MTI1MzlhMDViZDBjNzg3ZjU5ODY5M2RjYWYzZDAxOWYgbGVnYWN5LXRydW5rCis4MTc0OCBjZTkyMDk4MTFjMGFhY2ZhMTUwM2M4MGVhM2JkZjRiOWZjMjFhYjE1IHB5M2sKKzgxNzQ5IDRhMTE1MjI5ODBiN2I4ZTUzNjgwZWI5Y2Y1ZDkwZDhhNzgyMTdiYjUgbGVnYWN5LXRydW5rCis4MTc1MCBhZjJiZGU3MmNlNjFhMmMzMjczMDg0NjQwMTIzYTQ3ODU3Y2IwNmE2IHJlbGVhc2UyNi1tYWludAorODE3NTEgNWUxYjNiNjM0ZDUzNDY0OTJiN2U3ZGYwZDVmNDhjYjFkYWNiZjJjNCBweTNrCis4MTc1MiA2MTBiYTk5YjhkMGRhM2QwMmJlZjFhYTZmMjcyN2QyMzcyMTk2ZTY5IGxlZ2FjeS10cnVuaworODE3NTMgMmQyYjM4MjRlMzlhNTEwNDMxZDYwZmQwYzdiNDc4YTYyODQ5ZGZmMyBsZWdhY3ktdHJ1bmsKKzgxNzU0IDNkNGYxYzI1OWQyZDBhYjA0MWQ4NTU4M2I3OGFjOGU5M2IxYTk1MmMgcHkzaworODE3NTUgOWMzMDkxMDI0YmM4NDg2ZDYzNDJiMWNlYzA2OGEwMGFhMjQzOThhMSBweTNrCis4MTc1NiBjYTI2M2QyMDA1ZTc2MTFlNWM2NDRhMDg0ODY5Y2FlYjgxYTE0ZWU5IGxlZ2FjeS10cnVuaworODE3NTcgMGE0YjMzZTRlZTIzNjM2NTIyNzQ2ZmEzZDIyOTQwMTdjYTM4YmM2YiBweTNrCis4MTc1OCA1MDMyZjFkNWExZTE1YzE4MzU5MWM0NTE3YzdlNDQ2OGZjOTA0MGI4IGxlZ2FjeS10cnVuaworODE3NTkgYzFjYWVlMzI1NDRmYjc5Zjc0ZmM4ZjBjODYyZGE0ZWRhMTZiNDU0NSBsZWdhY3ktdHJ1bmsKKzgxNzYwIDFkOWI3ZDA1MmJjYzVmNTcyMjEwNGI3MzY4NDhjZjQyYjQ0ZGIzMzIgbGVnYWN5LXRydW5rCis4MTc2MSA3NDJkMzI5ZGZkZmQ5NWNmMDA1M2I1MjQ2MzQzNWFiMjEwYThmNmMwIGxlZ2FjeS10cnVuaworODE3NjIgZGE3YThmZjc2NDk5NzZjYWU0ZjljMWYwZWU3Yjc0OTBkOGQyYjc4MSBweTNrCis4MTc2MyBkNzg3MmRkYjRiOTgwODA4YWY1OGIwMzZkMzNmMTM1NzJkNzhlOTU5IGxlZ2FjeS10cnVuaworODE3NjQgY2RjN2NhOGRiOGQ2YWI0NDk2MGRlY2UyMzRmOTZlZThiMjUxZTc3ZSBsZWdhY3ktdHJ1bmsKKzgxNzY1IGUwZGUzMzc2N2MyOThjZGM5ZjAxNTZjNjk3YzkzYzVmNTI2OWI4NWQgcHkzaworODE3NjYgMTQxMGFjNjBhNzU0MTIxZjkwMGIzZTA2YTk4ZTcxZDc5YjYwMGRjYyBweTNrCis4MTc2NyAzZTBiYzBlMTdmNTYwZWQ0ZDcyZmRmYTliYmY4NDA5ZTRiZjNhZWQ3IGxlZ2FjeS10cnVuaworODE3NjggMjZiYjUzOGVmNmVhNTgzMzMxMzUxMzAwNTFiZDJjMmI3ODdlNzg0NyBweTNrCis4MTc2OSBlMWNhZWQ2OTU0NDgxZmNlNjFkMmNmY2Q2MmQ4ZGNjNWExNjQ3MTE5IGxlZ2FjeS10cnVuaworODE3NzAgNGRmZDkxNzQyZWI5YmJlMjFiMzNhMWQxYmU4Mjc0MThjYmQzMzBlMCBsZWdhY3ktdHJ1bmsKKzgxNzcxIGQxM2RlYzE0NjhiODc0ODljMDZiNDQ1NjRhZjUyZDI4NWE3NDBiYmMgcHkzaworODE3NzIgY2Q4ZWUwMTk5ODlkMTc1NTdmNjZlOGFhNTBiODRhMWE5ZWEyYjIzMCBsZWdhY3ktdHJ1bmsKKzgxNzczIGZkZGEzZjQ2MTQyZTRmOTdiMTQ2NGExYWI1OGU5MDc0NzI1ZDA2ZGEgbGVnYWN5LXRydW5rCis4MTc3NCAwZTdjN2YxOGNkMjRiMDNlY2QyZmNjOGRjMTkwM2EwZDUyNDA1MGYyIGxlZ2FjeS10cnVuaworODE3NzUgMzgxYzVlZWI1MTEwMzhkMDkxZDhlMDgwOGM0Yjg1MDg3ZWQyZjY4NCBsZWdhY3ktdHJ1bmsKKzgxNzc2IDZhMjhlZjI5YjExMDM5NDQzNTFlMmRkYzEzMGFkMGJlMjlmNzcxZmEgbGVnYWN5LXRydW5rCis4MTc3NyA1ODliNjExZDdiNGZhMjhjNzIyN2I0NjQ4MTc0NTI4ZTFmYjJhNTFiIGxlZ2FjeS10cnVuaworODE3NzggMzAxYjc4Y2M5OTliMjliZjFhNGM0YTZkNTk2MTg1NWNjN2VjYWUzNyBweTNrCis4MTc3OSA2OGZkMjI1OTVkYjU3NzYwOTIzOThlZWM0MTUzNTAyZmE0MTQ3NjIzIHB5M2sKKzgxNzgwIGM0ZDRkZGFjZjlhNTk2ODZhMDdiNWFiOGI4OTM4MmViOTA4Y2JiNTUgcHkzaworODE3ODEgODQ5NjUwNTA3MDUyZTZmNDZlNDdkY2UxYmQ3MTMzN2M0NzM1NWIxNSBweTNrCis4MTc4MiA0NzVjYmRlMWVkMTlhN2Y0MGUyNDAyOTRmNDJkYTVhNjcyOWU4MTU4IHB5M2sKKzgxNzgzIDZhMWQ2ZDhjYmM1MjEzYTY0OTQyOTdjMjVhNGI2YjAzNjkyZjY5YjEgcmVsZWFzZTMxLW1haW50Cis4MTc4NCAzMTQzMzk2YTk0ZjFlZTM1ZWI2ZjYyMmVlMmI3YzgwNzM2NDJiMzA3IHB5M2stY2RlY2ltYWwKKzgxNzg1IDQ5NWJiNzNiMWNmMWYzYTU2NjYyZmZlMmZkZTgzZTNmNjNmN2I1NWQgcHkzay1jZGVjaW1hbAorODE3ODYgNDNhM2YyYWNjOTRlYzJlMTYwZTAwOGY1MTlmYWNlOTY2NGFkZDQ0OSBweTNrLWNkZWNpbWFsCis4MTc4NyAzMDM4ZWFjNDJmN2RjN2U0ZGQwODliNTBhN2Q4MTBkMWU0NmZlZGIxIHB5M2stY2RlY2ltYWwKKzgxNzg4IGY2ZGFmNTMwZjg5ZWE2M2RjNmU2MTQwNzI5OGFhNzM3YWU2M2RlYmYgbGVnYWN5LXRydW5rCis4MTc4OSBlZDBjYTM4OTIxYzc2NzUzMTUzNjg5Y2FjNGVmNTQyMzFlNGQ4ODdlIHJlbGVhc2UyNi1tYWludAorODE3OTAgZGY4ZGM4ZDFkNTcxYzZkMDA1MWMxNmU2YTEwZjllYjVlYjY2YTExOSBweTNrCis4MTc5MSA3MzRmZWQ1NjEzYWVmYTk0Y2YzNGI5MGFlOWU1OWE5MGRjZDUwZmM1IHJlbGVhc2UzMS1tYWludAorODE3OTIgOWQ0OWI3NDQwNzhjNjVkZjdhMTY5MmRjMGRlOGU1NGI3ZjYwMmE3YyBweTNrCis4MTc5MyBjZWYzNzRiMTRmNWJlZTUzNTA3MjAyMGE5NDFkNDBmY2JhOWYwN2QzIHJlbGVhc2UzMS1tYWludAorODE3OTQgYzNmMmVkNGQ4ZTY1ZWNlYTQxZGVkYjJhYTUyZDYzZmM1NzQ3NmU1MSBweTNrCis4MTc5NSBjMzJiMDM4ZTAwMjJlNmUzNDNlMzVjYjY3NzI3NmY3YTIyZmJmMGQ4IHJlbGVhc2UzMS1tYWludAorODE3OTYgZWQyNmVhNzg1MzZiYTNiOWI3OWU0NDYyNjNmMTdjZGYxMGMzZDc4OSBweTNrLWNkZWNpbWFsCis4MTc5NyBmZjhlYzk0YmVhZWFkOGU3MjMxNzUzNjAwNjliNmUzMTFmMjFjYzQzIHB5M2stY2RlY2ltYWwKKzgxNzk4IGIxYjdhZjUxODNlMzViY2QzNzlmNmEyYTYzZGY1NWE0YzJlM2Q4MDUgcHkzay1jZGVjaW1hbAorODE3OTkgNzM2ZmEzNmVhODFlMjAyZGI5OTE5ZDIxOWVhMmQ2ZjhmYTFhYWE0NCBweTNrLWNkZWNpbWFsCis4MTgwMCBhMjJkODk4ODg5OTUwMWI2Mzk3NTg3ZWIyZWU5MmZiZTUyOTAyOTYxIHB5M2stY2RlY2ltYWwKKzgxODAxIDZlOGRjYjhlOWU2YmZiOTg1MTMwM2IxZjExNmE1MWQ5ZmQ3MzJiMTggbGVnYWN5LXRydW5rCis4MTgwMiAyZDc0MzBkZWRlYzM4MzYzZWFmMDAzMDg0Y2FlMWRhNjA3YmEwMTA1IHB5M2stY2RlY2ltYWwKKzgxODAzIGZlMmEwZTFlYzk1ZGNmOTAxZjlkNGViZGVmNTJhYmMwNTEwNzE1YjkgcHkzay1jZGVjaW1hbAorODE4MDQgMGVmYTFhZDhiYjc1MDZhYjE1NzIyOTA0MWVkZjNhY2RkMmZjMTZiNyBweTNrLWNkZWNpbWFsCis4MTgwNSBiMTFjYzFmMWE2OThjNTA5YTE1ODg4NjljNmFiYjZjNjEzZTEwNDAwIHB5M2stY2RlY2ltYWwKKzgxODA2IDBkOTM0NzkzNGNjNWI0YTkyYWEyNjU0ZTYwNTYwNDQ3NTVhMDQ5ZWEgcHkzaworODE4MDcgNjAwYzIzMTI3MjA3ZDgyMDY1NzY4ODliNWVhMmI1ZTEwYmM4NmQzYSBweTNrCis4MTgwOCBmZDhmY2NiMmVlOTA4Y2Q0ZmQ3MGJiN2IxYzAwZTAwNzNlYzJhM2I1IHJlbGVhc2UzMS1tYWludAorODE4MDkgMWExMDE2ZmEwNzIzMDBmYTY5NzlmY2MwZmNkMDc4ZGZjZGFiNjJkNSBweTNrCis4MTgxMCBlOTMyZGM4ODg1MTdiMWY4N2YzNmM5MWYzNGI5MzRiYTU3MTQyZDJiIHJlbGVhc2UzMS1tYWludAorODE4MTEgOWNlNTU2M2VlY2ZiNzk0MGRlZTk2OTgyMjBmMDA1NzI1NDNjYmNjZiBweTNrCis4MTgxMiA2MzQyZDE0NjdhNGQ0NDhkMjhmYTczNGFkOGUzMGZhMWMxM2VmYTdhIHJlbGVhc2UzMS1tYWludAorODE4MTMgYTIxNDVhMDZhNzI2OGYyMDMwOTA5YjQxNjdmZGEyYWUzZGI3YWYwNSBsZWdhY3ktdHJ1bmsKKzgxODE0IDk1Y2MxZTZkMDI0Njk0YWE1ZmJiZWY4NzFiNzQ0OWZjMzk1ZjliNmMgcHkzaworODE4MTUgNTM4MTk2Y2Y5MWZmNzgyOTEzNmRlYjMzNDUwNDczYTMyYzBkMjRlYyByZWxlYXNlMjYtbWFpbnQKKzgxODE2IDJmNjFlM2ExNDZiMWNkY2U0MTFiOTU2NzQ0NTA3Yzk0ZmQ1OGJkZjIgcHkzaworODE4MTcgZjVjZTVlMWJiMjNhMjEzNmNkOGZkMDMyOWI4ZmE3NTk5MzExY2UxMSBsZWdhY3ktdHJ1bmsKKzgxODE4IGYyYzRkZDIyY2E2MWEyMTA3NWRhZjgzMjQyNGE2ZWMxMjczMmY0YzEgcHkzaworODE4MTkgODIyMjgwY2VlMDRiNTI3ZjhjMjhhZTdlODVjMjM1YjU1YTcwYmNjZSByZWxlYXNlMjYtbWFpbnQKKzgxODIwIDI2ZmFjNzRlYmFiMzI5ZTFkMWM3YTRkZWJmNjgzMjFhYmFkZjRhYTIgbGVnYWN5LXRydW5rCis4MTgyMSBmZWNkOGZiN2JiZWY1ZGIwNzdlZDc5OTgzYjY3ZDc0NDNkZWY3ZTRlIHB5M2sKKzgxODIyIGI0NGEyZmU1MzFlZjUxZmE3ODUwNjNkMTMwY2Y4NWU5OTliZjEwMmMgcmVsZWFzZTI2LW1haW50Cis4MTgyMyBkMzc5N2U5ZGZkMmMxOTc1ODdjMGQyNjgxNjc3NDlkOTQyYzk1MDNhIHB5M2sKKzgxODI0IGRkZGI5OGVmM2JlNWVmOTA2NmQ1NjEzZTZlMjc2MzA1OGVlZGI3ZWMgbGVnYWN5LXRydW5rCis4MTgyNSBlNWYwYjI3YmMxNzgzNzk4YzY1ZThmYjRlNTcxZjg1ZWYyMTI4NTcxIGxlZ2FjeS10cnVuaworODE4MjYgODI1ZjY1NDQ1YTBhMDFlZjFhNzUwYWVkZmNhNTI1ZTZmNmFkOTZhMyBweTNrCis4MTgyNyA1YzZlNzVhOGQ2MWQ1NWU2M2ZjNzkzMzdlZmRjN2JkODY2ZTU3ZmM5IHB5M2sKKzgxODI4IDNlODYyNTQwMzliOTA5NmZhNDg4NjRlZjEwMWQ5MTU3NTdiMjQ2YzcgcmVsZWFzZTI2LW1haW50Cis4MTgyOSAyNzE4MTU4YzU4ZDAwZmZjNzhiYjRjYWZlOTA2MzkxNmQwMWU4NGE4IHB5M2sKKzgxODMwIGEzNjBlMTE0ODY2YjU1NGQ4ZmYxYjFhZGM1YWM0YzgzOWQzYmNiNDAgcHkzaworODE4MzEgNGY2MTMzMmFmMzVlNjlmYmIxNGVjYjhjNzA1OGEyZGRiMjg0OWU0NSBweTNrCis4MTgzMiBiOTUxODYwNmNkZGNlOTFkMWFlOTcwMzNiYzYxNDVkNTczMzU3ZmZmIHB5M2sKKzgxODMzIGQyMjY0ZjlhYzYxZWNmZDZjZjA4MzMzZjJkYjNmMjczNWYwMDQ0ZmMgcmVsZWFzZTMxLW1haW50Cis4MTgzNCAzNWI0YzM1NmYyNGE2MjgxMmJmODkwZWJlYzZlZWExMzk4OThmMGViIGxlZ2FjeS10cnVuaworODE4MzUgMTE2NmZiN2VmYjA3YTZlNTU0ZTk1YzMzNjY0MTlmZTNkNzZmNWU5ZCBweTNrCis4MTgzNiBkNWVjMjQzY2FhMTIyNGFmYjc2NGMyNDRiZjRjMDQ5Njk5MTE1OWM5IHJlbGVhc2UyNi1tYWludAorODE4MzcgYjVhZjVjOTMxMzViMjRmMzQxNDVkNjZhNzk3NGEwNmYwNDk1Y2ZhOCByZWxlYXNlMzEtbWFpbnQKKzgxODM4IDY1MDlmOWEzY2RlNWFlMjdlMDQ1N2VhMjc3YmY3OTU4Zjg1Y2E3YTQgcHkzaworODE4MzkgOWY3YjhiMzJiMDc0YWE5MWQzMTM1MjEyMGE0NjkxOTgxYTcwOTkwZCByZWxlYXNlMzEtbWFpbnQKKzgxODQwIGEwNmFkNzM4MzU1MjNmMjQ4NmYwMzZiNTAxNjM1YWViNGFiYWE1NjQgcHkzaworODE4NDEgZDI4MWVkNTlmZjBiZTRmMjQwMmY0ZjE2OTUyMTRmNjdjMTA1OTgwNyBweTNrCis4MTg0MiA3Y2NjNTU4MTE0MTMxZjA5YjE2ZWNkZDFlNmRhYmZhZGVkYjU5ZDEyIHJlbGVhc2UzMS1tYWludAorODE4NDMgZDkyNzA4Y2YxYzFmYTMzNjRiNTY0MTA5MzYyNWU3ZWU1NGNmYTJhNiBweTNrCis4MTg0NCBhMjVhZDljNGFjZTAwMThmODUyYmI0Mzc0ZWMxNTVlODgzM2E4OWVhIHB5M2sKKzgxODQ1IGQ0N2ZlNDEzNGU3ZDExYmY0MDM2MTA3YzgyZTY1YjdmMzE2NTI0NzMgcmVsZWFzZTMxLW1haW50Cis4MTg0NiBmODNmMjAxYjEyNzYwODRkYTczY2FlNWVmN2U5ODI4YzRiNDI2OTJjIHJlbGVhc2UzMS1tYWludAorODE4NDcgMTk2NmMxYmM5MDQ4ZTRlZWQxYTIwMTBhNWQwZTIyZjkyNjY5OTNhNCBsZWdhY3ktdHJ1bmsKKzgxODQ4IDI3ZDliY2M3ZTY2MWVjYmQ3ZmE3ZWI5ODVjY2NlZWNiODc4ZDk4NDAgcmVsZWFzZTI2LW1haW50Cis4MTg0OSAyY2ZlMTViM2NkZjU1MmMwNzZjNWI2MTJhYjUxMzk1YTgzMjM1MGQ4IHB5M2sKKzgxODUwIGIyYzE5OTU2MzNiZGM4NWViYzBlZGNjZmE3MGNiM2M5ZGUzYmM5MDAgcmVsZWFzZTMxLW1haW50Cis4MTg1MSBkMzJiMGU4MGZhYWNkMWQwNzcyNTM1NjYzOGU0YTc4MmIzNDk5NWQ2IHB5M2sKKzgxODUyIDZmMzg1NTAzODkxOWI2MjJiOTk0Yjg3MWIyOTU0ZWI4MGVjNzcwZGYgcmVsZWFzZTMxLW1haW50Cis4MTg1MyA4NjRhYzdiM2MzZDZjZWYzY2Y1YTJhNjI4MDZhZjU1NDFjY2Y5NjQwIGxlZ2FjeS10cnVuaworODE4NTQgZDcxMTNjYWNkNDI4YjYxYjVkOGEzZDU5N2Q0NmQ3NTI0NmYwYTI0YyBweTNrCis4MTg1NSA2ZTY4NjZjZWMzN2VhMmMwMDdjYzkyNzYwMzk2ODllNmM5YWJmMjFjIHJlbGVhc2UzMS1tYWludAorODE4NTYgOTZhNTEzMzgyNWQyMzY2ODgxODE3ZDc4YWQ3ZTdkY2MzNjQ2Mzk5MCBweTNrCis4MTg1NyBjNjA0MDJmYzA2NmYxMGMwM2E2NWVjMDg2OGU2MTdlNTAyNGJiOWJiIHB5M2sKKzgxODU4IGI2ZWUyMDViOTQ5OGJkMGZlNzNmYTE5ZjM4MjFlZTNkNjM1M2UxYTAgcmVsZWFzZTMxLW1haW50Cis4MTg1OSBmMWFhZGJlYmM1NzcyOTEyMzEyMjhmZGY2MmU4MzkyMTI3NmZlZDc3IGxlZ2FjeS10cnVuaworODE4NjAgYmEyZjJkMDg1MDRiMDUwMDZmMTc1YjQ1ODE0NjZkMzQ1MDgzMTExMyBsZWdhY3ktdHJ1bmsKKzgxODYxIGMxMTQ1ZTY2OGQ3MjA4NjQ0ODhkZGNlMDAxOTViZGFjNTU5NTczOGEgcmVsZWFzZTI2LW1haW50Cis4MTg2MiA4NjVlMzRjZDdlNWI3NjkyOTdjYWRhZTA3MGMwZjFlMjBkODM5Y2Y4IHB5M2sKKzgxODYzIDMzNzUyMzlkNDM3MGUyZTY2ZDg3ZGI0Njg4M2Q2MjEyYTcyZTYxMTEgcmVsZWFzZTMxLW1haW50Cis4MTg2NCAzMjljMTI5ZTA3YjY4YWYyNjI3OWQ0OGU5Y2NmZDhjOGM4ZWU4ODk4IGxlZ2FjeS10cnVuaworODE4NjUgOGY1OGI5ZTU5NjY4OGQ0MmU2NjdhY2U2NGVjZDNjMGFmODMzZGEzNCBweTNrCis4MTg2NiBhMmVhMWEyMzE4NmIwODc2NzAxNjgwODEzOTYxNWZlNmFlNDkxN2FkIHJlbGVhc2UyNi1tYWludAorODE4NjcgZjMzZTQ2NGE5YTYwYWE5ZjA0OTc4YzZjZjBmNTU3ZmVjMDhkNjBlNyByZWxlYXNlMzEtbWFpbnQKKzgxODY4IDViZjczMzZlYTBhYWQ4OWJkMjQ4MjIwYzI5ODRkOTFkNzUxN2UyZWQgbGVnYWN5LXRydW5rCis4MTg2OSA3N2MwY2E2OWQ1MTg0ZDg5MjJjNWUxN2JjNzU1NTYzYWU2Y2JmNzEwIHB5M2sKKzgxODcwIDE0MjlhYzZiZWJjM2Y4ZDlhN2FkMTcwZDkxMjI3NTI0NTRiZjg2MzcgcmVsZWFzZTMxLW1haW50Cis4MTg3MSBkZGI0N2ZkNjEyYTY3MDFiMzdkNWNmMzU2NGUwZWFiMDBkMzU4NGNhIHB5M2sKKzgxODcyIGUwODcxNjI1NzNhY2M2NzY5MjZmMmU4ZmJkYmIxN2I0ZGQyYmI3NzggcmVsZWFzZTMxLW1haW50Cis4MTg3MyBmZTVlZDcwMjgzZWZlNjA5NDFhN2VhYzM1NDg0MTRlMzM5MWQyMDU4IHB5M2sKKzgxODc0IDhjZmEwZGMzOGFhNzQyYjk4MDM5MTg0YTI2YzUwZmJmYzFlZWJjYmMgcHkzaworODE4NzUgZmY1MGQ0NWUwNjE4MTM1MzJkM2Y2MDc2NDg5N2M2Nzk5ZDhjZmMyYSBweTNrCis4MTg3NiBjZDEwMjQyODFiNzMyYmI4NDhlMDliMWVmMDRlNmU0ZmRiNmIwNjE0IGxlZ2FjeS10cnVuaworODE4NzcgZjI5NDQ3M2Q4NzkzMTVmYjMyNmI3NjhlN2RlNDY4ODEzNTJmM2QxZSBweTNrCis4MTg3OCA3ZjU0MGZlNzc1ZmNjZTM1ZGI3ZDM2ZWI4NjVmNTk2ODRjYmRiNGJkIGxlZ2FjeS10cnVuaworODE4NzkgNWZlNGFkNWI1YWI5ZWI3MmEyZmQ4MzA0YWRmZGE3MmY5ZDJmMmEyZSBweTNrCis4MTg4MCBkYmU3YWU2NjZjZTIyOWQ2OTRlOGE5NjcwOTE3MTg0NjczYjhiMDI4IGxlZ2FjeS10cnVuaworODE4ODEgMGQxNjZlNTc4ODRkZjQxN2RhODE4ZjE3YWYwOThjYjc2NTJlNDc0YSBsZWdhY3ktdHJ1bmsKKzgxODgyIGE4ODcyYjY1MDU3NzZhNjRkMGYyNjhkMDQ3ZmY2ZGVjNGY3NjM3MTMgbGVnYWN5LXRydW5rCis4MTg4MyA3MmY3NzQ5MDM3NzIwMTZjZmM3NDM2ZjE3NGIzYmZjYjQ4YTNlZjZmIHB5M2sKKzgxODg0IDllMTJjNjQ5ZDMxMjc1ZjJjMWM3OTRjMWZhM2I0Yjc5NGJjZDc4ODQgcmVsZWFzZTMxLW1haW50Cis4MTg4NSBhZWI0N2QzMGZiYTRlMzhkYTFlOGYxMjIxZTRkMDYyMDQyMzcxZTFlIHB5M2sKKzgxODg2IDA3Njc2M2M2NjdmOTU2NWI4ZTI4MjkxZWVmYTdjNDdjZTRmYjNjNTQgcmVsZWFzZTMxLW1haW50Cis4MTg4NyA4YzNhMjIyZmE2ZDE1OGY1ZmJhZWJhM2M2M2Y1MzQ5MWQ3MWE2ZWVmIHJlbGVhc2UyNi1tYWludAorODE4ODggNGM5OWRhOGMxZTgwZTdmZWNiM2M4NTczZTY3YjIwZDdjOThlZTg3MCBsZWdhY3ktdHJ1bmsKKzgxODg5IDdlZjQ2YTYxZGM5N2ViNzUyZjQ4MDg2OWRlOGQ3MzE1ZmJhYjNkOTUgbGVnYWN5LXRydW5rCis4MTg5MCAzNDIwZGZjNTU5YmJiODNmNDRmNmJhYjcyYzk5MTRhMTFlODY1NmRlIHJlbGVhc2UyNi1tYWludAorODE4OTEgODMxOWNhMGQ1NDM0OTMxMGM1ZWQ3NjYyZDBkN2JlYzVjZjRmODQ2NiBweTNrCis4MTg5MiA0NDY3YzRjMWQzOGVjZmZmYWVjMGYyMjY1MWM1ODM5ZDk1NzAxZTI1IHJlbGVhc2UzMS1tYWludAorODE4OTMgMjY2ODUzMTFkMzEzMjQxMGE0NzcxZDNiNTNjYzlmMTIwZjFlZDg2ZiBweTNrCis4MTg5NCA0YzNiZTc0Y2E1MDEyN2YwNjM4YjY4ZmRlMThjMDU4NGM0ZTc0ZjUxIHB5M2sKKzgxODk1IDNiYTFiNWI0YzEwODg1MDA4NGMxYmRlNDFjOTc0NGFiZWMzMjcxMWEgcHkzaworODE4OTYgZWJjNGU4OTY5MjRlMmE4YzRlMDA3MzZmMDAyYmI0MDdmZjZmNWM1ZCBweTNrCis4MTg5NyA2YWRjODNkOTk5ZDBlNDUyZDAzNjZiOWE0ZDEwYjc4NmQ2ZGQyYzQyIHB5M2sKKzgxODk4IDZmZjg4ZGNhODEzMzk4N2MxNzgxMWRiMTdmZjA4MDYxN2Y5ZWQyMjggcHkzaworODE4OTkgY2Q1OTZhOGY5MWYzNzg2MThjY2I1MTlhMjgwMWI1OThkNzFlYThhYSBsZWdhY3ktdHJ1bmsKKzgxOTAwIGIwOTFhN2U0Mjg1ZjkzY2I1ZmEzZGYzMDE0YWY2MGQ4MzljODZlMTYgcmVsZWFzZTI2LW1haW50Cis4MTkwMSAyYThlZTExZTNlMThhM2Q0NDcxMmE0OTE1NDZjMjA0ZDhiNzBlZDc5IHB5M2sKKzgxOTAyIDczZDgyYjBiNmRlZTRkYTVjZTlkZDVhODg0ZGNkMmQ2YjVhMmU3MDcgcHkzaworODE5MDMgNTBjMjM5MTc0OTc2MTkzOWVmMmExZTM2YzVhOWEyOTFkMjNiZjFmNyByZWxlYXNlMzEtbWFpbnQKKzgxOTA0IDdkYjdmODQ0MjQxNGZjNGI4N2FlMjlmNmIwMTY3NDJkZTc4NDg4NmQgbGVnYWN5LXRydW5rCis4MTkwNSA5ZGFjNTgxNjNiNzk5OWFjNTMwOTdhNzdmNzlhMjhiYzMyNzE1OWI0IHB5M2sKKzgxOTA2IDY2MTUxOWZlYzNiODY4OGZjNzUwODVhN2IxOWFiMDM0Y2I2ZjM1ODEgbGVnYWN5LXRydW5rCis4MTkwNyA5ODI0NTQ2NGI2NjU0YTA1ZGE4NTQyMjNhYTkxYzJhMmI1NDBhNGZlIGxlZ2FjeS10cnVuaworODE5MDggNzU3NjI2MGQxYjY1NDE1MDA1ODJmMmU5ZDIzYzA3Mjg0YTA3MTAzMiBweTNrCis4MTkwOSAyMmMwNDVkMWJjOGNjZjkzY2YyYTQzMDFiNDBhMTI3MjI0OWQ3NGVmIHJlbGVhc2UyNi1tYWludAorODE5MTAgOGQ1ZGQyMjc2NjgwNTY0ZjczNjUwZTE2NGY3OWY4YWJhMGYzMWQ0YiByZWxlYXNlMzEtbWFpbnQKKzgxOTExIDg4YWVjNTEyNDE4NWRmZTQxODIxZWY4MTU1OTBhN2IyMzMzYjU4Y2IgcHkzaworODE5MTIgNDRkYzk4NTAyYWMzMjNhNWNkYzkxNTdhZGE5NmNiMTk5YTg2Mzg2MyBweTNrCis4MTkxMyBhNjUzZTMwNjEwOGY1MzQzYWNiZTZiODY2NGU2MTAzZmMzYjYyNmM3IHJlbGVhc2UzMS1tYWludAorODE5MTQgYmQ4YTFmZDRjMzE2ZjIwZGVjNTNmZjkxODVhMTZjZDNhYmM5YmFlYiBweTNrCis4MTkxNSBjOGJjMmQ4ZTlhZTFjZmM2YjkwNDFmZWY3MGE3YjcxMDEwMjdmOWUxIHJlbGVhc2UzMS1tYWludAorODE5MTYgZjUyYWVmZGFiMTgyMGU2OGEyZTY1MjNmYzZkZWQwNDgzZDE4ZWQzYyBweTNrCis4MTkxNyAyYjJmNTUzZjFjZTYxMTA1ODQwNGYxYzYzYTIxNWJmYzMwYWY4YWJlIHJlbGVhc2UzMS1tYWludAorODE5MTggZjYwYWFmOTliODM2YmY2ZWVlMTgxNjk5N2M0MDg2NmExZTc2NWQ1NiBweTNrCis4MTkxOSBhMjU1MWIzMGYwNDk2NDk4NTNkNDE4MTg0ZDI5NzZjMmJjMzIwODcwIGxlZ2FjeS10cnVuaworODE5MTkgZmU2YmUwNDI2ZTBkMzUzZGI4NGVjODY5YTViMDJkYmJhNmMzZDRhNSByZWxlYXNlMjYtbWFpbnQKKzgxOTIwIDAxNjdmOTE3MjFhODRjNjE4ZmUyM2E5Y2M1NjRmMDU4YWQyOWIwNDUgcHkzaworODE5MjEgODYyNDU4MjgwOWY5YzcyZDRlMzQ3ZGM1YTVjZjljODMwMmEwYjg4ZSByZWxlYXNlMzEtbWFpbnQKKzgxOTIyIGQ5MjgyMDY1ZjVjOWViYzI0ZmRlYzcwMzM1ZGNlYjA2YjhjZTJhMzcgcmVsZWFzZTMxLW1haW50Cis4MTkyMyAxMzdkYTdjZTVlOGVkMWJiN2FmNGY3NDY2ZjU1OGNjOGExNDU2OTM1IHB5M2sKKzgxOTI0IDcyMTY5ZmZlMzJhMDJjZTFkZWY3NGRmN2EzMDMwYWE2NDQ1ZmE2YzUgcmVsZWFzZTMxLW1haW50Cis4MTkyNSA2ZWFhNzliZTA0NDlmZDA0ZjZkZGE3YjAwYWEyMTg1NzlkOTM0ZWNjIHB5M2sKKzgxOTI2IDEwMzE5MjE3YWY0NDMwZGY0ZmVlZDVjMWU3ZTFlYjYyNmNhNTM2NDIgcmVsZWFzZTMxLW1haW50Cis4MTkyNyAzMDIyOTA0Zjk5NzExYmI5N2UyNzFjOWYwMDAyMWY1Y2ZlY2YyMjg4IHB5M2sKKzgxOTI4IDgxNjlmMzNmMjI2ODhmMjRhMmE0NmI2ZGYzZTljYTQ4YmEwMGM0YjEgcmVsZWFzZTMxLW1haW50Cis4MTkyOSA0NDRjMDI1ZTI5OGRhMzY5NmVmMDkwYjhhNWI0MmFhOGIzNDhhN2ZjIHB5M2sKKzgxOTMwIGU4MGRhYjNlOTA5ZjdiMzNiOTEzY2JiYmRkZDI2NzJlZjE2NTBkODYgcHkzaworODE5MzEgYTEwYTdjZTk3ZjQ1YTdiNDg1YTY0N2Y5MTEwNzE4Mjk4YTdiZWViZiBsZWdhY3ktdHJ1bmsKKzgxOTMyIDg0ZGFiMjliZGVhNzBhMzkyMzE4NDM4YzkxNzY2ZWJlOTQ5YTY5ZGQgbGVnYWN5LXRydW5rCis4MTkzMyBjMmI5MjM4MzRkZWE3NWRlYWU1YTM2OWNjNjNkZThiYWI2MzBmOWNiIGxlZ2FjeS10cnVuaworODE5MzQgNjFkNGNjNjc4MTY1NWRlOTk5YzZiOGU4MTc1NzkzOGRlZDlkYmM5OCByZWxlYXNlMjYtbWFpbnQKKzgxOTM1IDgwMTEwZmQ0MzE5MTE5MjkxOTg2OTU4NjRlOWQ1MzE0ZDMyMjk5MWIgcmVsZWFzZTI2LW1haW50Cis4MTkzNiA2Y2U3ZWJjZjkzNThkZTVmOTU2MzI1MWFlM2JiOWNkOWExNTdjOTYxIHB5M2sKKzgxOTM3IDUyZWIwYzA5M2I2ODg3YjlkZTg2NWFiYzY4YWU1NzVhMDg5ZGZjYTYgcHkzaworODE5MzggYTQ5MGFhMzAzZDhhZGRmYjgzMDIwOTVjN2MwODYwNDcxMTAzNTQ0ZSBweTNrCis4MTkzOSA0ZTlkZDZkODAwNjM4MGRkYmY1ZDllOThiNTU1MzFhZmFiNTQ4YmYzIGxlZ2FjeS10cnVuaworODE5NDAgMzFmMDFjODgxYzQ2MGYzNmMwNjlhYjMzZmI1N2FlZjAyODEwYmNhYSBsZWdhY3ktdHJ1bmsKKzgxOTQxIGFjYTEzYTVkNjE0NGQzOGI2ODYyNmE4ODk5YjZlYTJhNmFiZWI1MTggbGVnYWN5LXRydW5rCis4MTk0MiA0MWVkNThlZDVjOTNiYWMxZDY4ZTU5NjNhNGNjZmE5NjVlOWQyY2FhIGxlZ2FjeS10cnVuaworODE5NDMgOGYyN2I2MWE0MGZhOTkwNTMzMWE3MzAzOWM4ODA1NzBiZmMzNWE3ZiByZWxlYXNlMjYtbWFpbnQKKzgxOTQ0IDYwNmJhZDU4NDM0NDY0ZDMxY2EwMGI5YWU5MzE3OTBhZDAwZjJiNzMgcHkzaworODE5NDUgZGI1NTE2N2ZhNWU3OTg4OGU3N2RiNDc3NGM5NTdlODc5YWQ1ZTI5ZiBsZWdhY3ktdHJ1bmsKKzgxOTQ2IDUxNjAwNDhkNTM2MTcxMTBjMTgzYjNmOGU5MDZiNDExOGVjN2M2NzIgcHkzaworODE5NDcgYmQ4NmJiYTVlZDMzYTAxZWIzMzU5NWJhOWI2YTEzMzk1M2I3Y2Y2MSBweTNrCis4MTk0OCBlNTVmYWQzZDVhZTQ4NGM0MWNkMTcyZThhYTlhODNjMjQ0ZDI3ZDM3IHB5M2sKKzgxOTQ5IDk1NTBlZGExYzA5NjRlNjRjYjZkNzYxZTgzMWY1Y2M0ZmViNTU2YmIgcHkzaworODE5NTAgOWIzMzNiZjA4ZDQ1Zjc1YzBiNjkxYzAwYTgzNWI3ZTgzZmJkZDVlYSBweTNrCis4MTk1MSA0NGNhYzVjNTY1YjdmMDk5OTMzNjc1ZWU5YWM2ODQ0NTA5ZmNjMjMzIHB5M2sKKzgxOTUyIGQwNjU3N2RiNzI3ODUyYzUwYmJhNDI5NmQ5ZDM4MmMwYmQ3MzdkNjQgcHkzaworODE5NTMgNzNlNTM1NGY5MmU3MTQyOGFjYzEzMThiOGU4ZDQ0NzU3OTI0MmU5ZSBsZWdhY3ktdHJ1bmsKKzgxOTU0IGUwYzRkYWRkZmM1NDY5Y2VkMDc3OTBkMWI3NzkwNzU2OWQzZGYwZTYgcHkzaworODE5NTUgYjkwZTMzNWE2MDlhOTc5MWM1ZDk2MDI2Yzg0ZGU1ZjUwNDlmOTkyOSBweTNrCis4MTk1NiA4YmMwYmYyMjAxNGQ4MzFhODQ0YjUwZDI4NWQ5Zjg3YmY2M2RiZDFjIHB5M2sKKzgxOTU3IDBhNTVhZGU2ZDg1NzgxYzM4YzgyMGJmNzZiMjI2NjAzNTk3NjgxZDQgbGVnYWN5LXRydW5rCis4MTk1OCAwYjJlMGI2ODM5YTI3MzViYzhmMjFjOWFmZjkzZDBmZjNmMTEyZDY4IHB5M2sKKzgxOTU5IGIwMGM3MzY1NTVkZTcwZTNjZDJlYWE0N2MwMmFjNDdiMjU2N2M5MGIgcmVsZWFzZTI2LW1haW50Cis4MTk2MCAwZjVkMTE0ZWZmMDE0NDJhM2IyMTBjZGZmZWNjOGNjZTg3MjNmYzBhIHJlbGVhc2UzMS1tYWludAorODE5NjEgZTU4NWIyNDMxYzRhNTQ2OWQ1YjQ5OGI2MmE4MGNlYThkNTdhYjNmNSBweTNrCis4MTk2MiA1Mjk1YjRkYmYzNTVhODRkNjkxMDg0ODdlMTU3NzU3NTU3ZTEwOTcwIHJlbGVhc2UzMS1tYWludAorODE5NjMgYjllY2RjZWMwZmYwZDhiZGMxZjg4ZTQzZGQyNTBkY2JiMjZmMzE2YSBsZWdhY3ktdHJ1bmsKKzgxOTY0IDhmMTM3YTVjNDEzY2EzMTYyN2U5Zjc5ZmRlZTc5ZTMwNTI2NDZhOGQgbGVnYWN5LXRydW5rCis4MTk2NSA3YWM2MTQ4ZTZhN2Y4NGE2YmRlZTRhZTY5NWE3MjJjMzQwMDIwZjM5IHB5M2sKKzgxOTY2IDRlYWMxMzVhMzNhZmQ2OTRkMzcwMzg1MmU0M2RkZWJjZjhhOTZiYTMgcmVsZWFzZTMxLW1haW50Cis4MTk2NyBjZmYwYTkyMzE0MGJlOGVjOGI3ODhmYjhhZmU2ZTZjMTE3Y2EwYTNjIGxlZ2FjeS10cnVuaworODE5NjggZDA2NGU4OTM0ZjRkMGNjZTA0Yzk1Y2E1YTgwZjkwZTU4MWZhNWE0OCBweTNrCis4MTk2OSAyZTUyZmJjYWFhNzNiZGRjMjMxMTgxNTI1MjlkNTEwZTFhYjNjNTQwIGxlZ2FjeS10cnVuaworODE5NzAgMTM4M2I4NGIxN2FjZjc2Y2U1MWY1NzMwMGExNzExOTkyNGI5MzQ1YSBweTNrCis4MTk3MSBmODJkOTZiOWYwM2VkYWFhZGVjYjQ1ZWI0YWUxNTMyN2RkZmMxMjM3IGxlZ2FjeS10cnVuaworODE5NzIgYjA4NGMwYTkzNGE3ZTk2MzgxNzQ5ZDhmNWY3Y2FjYjA2ZTVkYWJmZSBweTNrCis4MTk3MyBiMzJhMjgxNmY2ZTljNzg0NDM5M2JkZjUxMmQ5ODc0Y2UyYmRlYzUzIHB5M2sKKzgxOTc0IDA4NDBhMjgzYWY1ZjlhYjYyZWRhZWNiNzE5ZDhlZmQ4Mzk5MmQ0ZjggcHkzaworODE5NzUgOWNiOTAxNjliMjVhODYzZGY3MmRmOGY1ZjU4ZTc1MjFiYTZlNTAxMiByZWxlYXNlMzEtbWFpbnQKKzgxOTc2IDk5YjgwYzI4OGZhYzQ1ZWVkMGY4MjNlNjcyZWU2Yjc1YzVkNWUyMjUgcHkzay1jZGVjaW1hbAorODE5NzcgOTJiOGI2Nzg0NGUxMDE3ZDY2ZTY5ZjgzZTY3OGE4NmIzYTQ4MDA4OCBweTNrLWNkZWNpbWFsCis4MTk3OCA4NjdiOTc2ZTM0OWRhZDIzOTk3YTg3ODE1NTAwYjEzZGFmZTdlYzFiIHB5M2stY2RlY2ltYWwKKzgxOTc5IDA3MjNlZTE5NTQ3Yjk1NjE1YzA2ZGMxMTU0NTdjNzJjM2IwNWFhNTIgcHkzay1jZGVjaW1hbAorODE5ODAgZDc4YjE1ODA4NzEwYTdkNjc1ZDhiYWY5NDEyMjM4ZTAxZmFjZjEzOSBweTNrLWNkZWNpbWFsCis4MTk4MSBiNzhhOTE4YjdhMGVjNjRiZTg5YzJjOGRhY2RmMGZhOTVhYWMxNmQ1IHB5M2sKKzgxOTg0IDliZTYwYzE4NTAzMmE2NWUyMmE1OTYxODk0ODJiNDc3MjdjN2QwMWUgbGVnYWN5LXRydW5rCis4MTk4OCBlZjVkZTU2ZjI0YzY0Y2RlMDYwNGIzZjcxMTQ1ZjMzN2IyMjI1ZjAxIHB5M2sKKzgxOTg5IDYyM2I3MzgxMTZkMjQyZjBiYmNiZmJkYzVkNTkxNmU3YTMyMGYzM2MgcHkzaworODE5OTAgOTViNWNhMjQ2OGNjNjBhMmNkMjQ2NGIzZTMzNzk5NWQyMWY0NzFjNiBweTNrCis4MTk5MSBhNTdkNTljY2NiOGZhNWNlYjJhM2EyM2QzMTU3OTgxM2UwMWE2MzMxIGxlZ2FjeS10cnVuaworODE5OTIgNmY5YjBjMjQwMTkxZGY3M2MyZjEwNTdiMTk2MjE2YjYwZTkyZGQwZiBsZWdhY3ktdHJ1bmsKKzgxOTkzIDhmM2ZjYzIzOTc4MWI3NjRjMzUxM2IxYWZmYWEwZGY4YjA4ZTMxY2IgcmVsZWFzZTI2LW1haW50Cis4MTk5NCAwZWJjNzJlMzY2YTFkOTZmYjhlOGNjNjk1NWY3Mjg4YTllODRjY2FkIHB5M2sKKzgxOTk1IDdhYzBmNjdlYmJiYTg5NGJjZDliMGI2NWZhOTNhNjM2N2I2ZmI1ODYgcmVsZWFzZTMxLW1haW50Cis4MTk5NiA5MWJiNTcyYjc1NmUwNmQ0NzZkNmJkYTAwYjA0ZmM4ZTk4MDYzMzU2IHJlbGVhc2UzMS1tYWludAorODE5OTcgM2VhNjZlM2ExMjlhNGY5N2IzYjdjNmM0ODVlNzI3ZGQ0NWNjMDQ4OCBweTNrLWNkZWNpbWFsCis4MTk5OSBlNDNhYjUyYjU3YjIzNDM5ZTk4OGVjZjM0YjRkNzVlOGE1MGM1MjNiIHB5M2sKKzgyMDAwIDMyYzRmZmY0NDVhZDJjZmZmMDk3YWM4ZmU0ZjMzOWE1MzI1MGYxODMgcHkzaworODIwMDEgNDlkZDU5OTE1MGNhNzE1YzIxZTBhNzlhYWNhZDY5YzZmZTkxNjQ1YSBweTNrCis4MjAwMiBmYTg5NzczMjRlZDg2NzBhYjBhZTE3ZjU5YzJmMTkzMjU0YWMzNzhhIHJlbGVhc2UzMS1tYWludAorODIwMDMgZjE5YWU1Y2VjOGNlNzlmMTYwNWY5M2JiMWI1ZjU2M2Q4YWI4MGIzYiBweTNrCis4MjAwNCAzNTRiNzUxZTQ2ZDYxY2I3MWY1OTQwYjAwODg2MjQ4YWFlYTc1ZGQ2IHB5M2sKKzgyMDA1IDM1NmQwZWE4ZWEzNDdmMGQ3ZDBhZGFhNzY1MTZhMjVlNmM2Yzk5ZjAgcHkzaworODIwMDYgMjQ2NmFmZWQ2ZjVlY2U2OWUxNTNiYTYzZDcyZWFkN2U4YzBlMzUxMSBweTNrLWNkZWNpbWFsCis4MjAwNyBiODQ4ODczOTg3OWVjOThhNTAxMzNlMTc4ZGU3NGI0MGRmOGUyYzJmIHJlbGVhc2UyNi1tYWludAorODIwMDggODE4NTVjZWRjMTU2ZjU5OGNiNjkzOGQ3ZDhhZTU4NWI1MWUwNzc2OCBweTNrCis4MjAwOSA0OGY1ODU5NzYwZWY0YTNiYjI4NWY2YjdlNmY4M2U3OTE1NDMzNTU2IHJlbGVhc2UzMS1tYWludAorODIwMTAgOGE4N2M1YWZhZGRhYmUzMTU4NjYxMGNkNjk1ZmE0ODFiZTExMDc0ZSByZWxlYXNlMjYtbWFpbnQKKzgyMDExIDU4NDEzNjc2YmVmYjY0YmMzMDk0N2E3ZTkyNGJmYjVlY2EyZDNjNTIgcHkzaworODIwMTIgMjJlYTY5NmFhNzdhYzYzZTUzZDIyYjZjZGQ0NDM0OTFjMzAxNGVlYyByZWxlYXNlMzEtbWFpbnQKKzgyMDEzIDdiYzgxZjg1MzVlYTQxNjA0YjRmZDlhOTc4OTUwODZkY2IzNDczYzcgcmVsZWFzZTI2LW1haW50Cis4MjAxNCBhZGI4YzgxY2MzOWE0NGYxMzAyZjQ4OTI1NmI0NjNiYWNiOWZmNTI3IHB5M2sKKzgyMDE1IDlkYzg0YzQyNGU0MTM2NTdhZjg3ZjM4NzkxNmNkNDc1YjQ2ZWVmMGQgcHkzaworODIwMTYgNDIyYTE4M2UwYmJkY2M3MmE4MDY1ZDM4MWU5NjRiNTc4ZDc4MGMzMyByZWxlYXNlMzEtbWFpbnQKKzgyMDE3IDAwMzBhNzQ3MDY2NjAxMTZiZGIyZDNjYzA1NGU5N2YwZGRlNGJiMmUgcmVsZWFzZTI2LW1haW50Cis4MjAxOCA4NGZlZmJmMWQ2YzA4MGIyYjE1MTMxYzJmODRlYjk0OTYyNTBlNmUzIGxlZ2FjeS10cnVuaworODIwMTkgZTc1MzU2MmNjMDIzYzAzZjFhYWEzNTA4MjRiMDU1Y2NlZTExNGJjOCByZWxlYXNlMzEtbWFpbnQKKzgyMDIwIGM0MWNiNDg0ZjA5MDZjZTBmNmMzNzY1MzlkYTczNmU0MzVlMGMxMmEgcmVsZWFzZTI2LW1haW50Cis4MjAyMSBkMzBmNmM1OWY4MTA3NTc2OTFmNTNhZTBkOWFkOTA3YjU3Mjc5MTcxIHB5M2staml0Cis4MjAyMiBkMzM3N2ViZDNlZTU0ZmZkNzdmYWFiZjI1MTBhNmEyMWMwYTYwMzg2IHB5M2sKKzgyMDIzIGI0MjM3NzAzYTBjYzUxNDExZmVlYWYwNzljYzQ5ZmQzMWRiNjhlNDEgcmVsZWFzZTMxLW1haW50Cis4MjAyNCA4MTEzNWNjZjVmNTVlM2UyMGRmNmZhOWQ1MGUzNzVlNzI3MzlhNWFhIHB5M2stZHRvYQorODIwMjUgNTVlMjRjMjQzZTJmMWE4N2NiOWMwNGFhZjMwNmNhYjM5YjcyNzQ2NiBweTNrLWR0b2EKKzgyMDI2IGM2ODQ1ZTgzMDg2ZjVmODMxNTg5Nzg0ZmQyZDQ5MDljMTljNmFlZjEgbGVnYWN5LXRydW5rCis4MjAyNyBkYTNjNDc5NGQ2ZGQ2YzUxOTk3NmY5ODRlY2ZhNmM5NzZmMmExODZiIHJlbGVhc2UyNi1tYWludAorODIwMjggMzQ2Y2UyNTVhNTJmZWYxZGVlMWM2YWYxYmM0MmQ3ODVkMmNiMDVjNCBweTNrCis4MjAyOSBlNGQ1MDY0MGYwNzc3YzQ3ODZmNjE0M2JiY2Q0N2JjYTAxMDM5NmM4IHJlbGVhc2UzMS1tYWludAorODIwMzAgNzM1NzgyYTI3NWY1MGE4NTRjN2I1MThiNmRjNTkxMmUzNjdkYmZiZSBweTNrLWppdAorODIwMzEgZjM0MTM1NTNmOGY1ZWExYTI2OTJiZGQ3Njg3NTcyOTY2MmY0NGJhNyBweTNrLWR0b2EKKzgyMDMyIDg1NjI3Njk1MmUwODYzOTdhNTA1N2QyNjdkNGI1MjI0ZDNjYTUxOWMgcHkzay1kdG9hCis4MjAzMyBiY2MwYTk5N2YzMjFmY2FlMWQ0ZTE0MTE3NWNlZGY2NTZmYjEzNjcwIHJlbGVhc2UzMS1tYWludAorODIwMzQgNmQzYjA1YTQyOWI1YWNhNWUyZjUwZmM0NDE5YWU2ODBjY2E3N2JlNSBweTNrCis4MjAzNSAyZGQxZmU3MDQ3ZmZkOWZkNzY2YWZiZjVhZmIyMTY4ODYyNGZhOTIwIHB5M2sKKzgyMDM2IDFiMDhhNTQxNTUxYWFkODY3ZWM1OWY4YjRjYWFiMzJlNGZkYWQ5MDEgcmVsZWFzZTMxLW1haW50Cis4MjAzNyAyODNkOTQ3MmRmNGVkM2I3YTViZjgwMDRmNGYxZDZlMWI4MzAwOTVmIHB5M2sKKzgyMDM4IDgwN2NkZWE0NzgxN2JiZTc4MmU3ODY3MTRhMTJkODlmOGQxYWM5MjggcHkzaworODIwMzkgMDE3ZTYwYWU2MDVmNGJlMWUyMTM2NTJhZTAxNTM5MDk1YjVmMmU0NSBsZWdhY3ktdHJ1bmsKKzgyMDQwIGY1ODg5ZjJhYzM5YmIzOGUyMjY5MDUxZDMyNTYwOWQzYmY5OGYzNDUgcmVsZWFzZTI2LW1haW50Cis4MjA0MSAyYmIwYTI3YTNlMzVjNDI3Y2EwZmZiMzcyNTg5MzhhNzFkYjhlNGY4IHB5M2sKKzgyMDQyIDhjYzBlMWM5YmE2ZDYwOWZiOGE1MzViNzNkMDdhMzgyNWNjMWFiZTggcmVsZWFzZTMxLW1haW50Cis4MjA0MyBjYjQ5OTdiNmFhOGJlNjk4YjlmYTg5MzlkMTVhYWUyZjdjYTU2YjNmIHB5M2sKKzgyMDQ0IDJjYzA5ZjA2OTUwYjA0ODI1ZTIzNzZlM2UxMGFmODM1NDU1NTI3N2EgcmVsZWFzZTMxLW1haW50Cis4MjA0NSA0ZDI1NjM5YTNiMTRiZDZiY2UyZDhmYzQ4MGUwMGE2YTFlZGQ5M2VjIHB5M2sKKzgyMDQ2IGIxZDZjY2FkOGVhZDY2NjY0ZjA2YjBiOTc4OWI0ODBkMDdhYWI0ZTIgcmVsZWFzZTMxLW1haW50Cis4MjA0NyA4NGVkMzQ0NmEyOWExYjgzMGY2YmFlN2QwYWYzNjBkNTdhMTljNTIwIGxlZ2FjeS10cnVuaworODIwNDggMTc2NGUwYmU0ODRjNmM4MmY0MDBjOWEyNmIzNWE4MjUzN2Q1ZGE5ZCByZWxlYXNlMjYtbWFpbnQKKzgyMDQ5IDJmZTA4MDJjNDJjNzQ1ZGNlNzJjNWZlMDc4MDVmMWYzMGI2MjMwN2IgcHkzaworODIwNTAgYzJlNzNkODQ0ZDgyMmJkMzJlODRkZGJhYTkzMGQ5YjU4YmI2NmVjOCByZWxlYXNlMzEtbWFpbnQKKzgyMDUxIGM0OGRkYzk2ZjQ1NGFlMjhiNDJmYjg2NTdiYmU1YzU3MTVmZTVkOGMgcHkzaworODIwNTIgNmJmZGNkMjVlZWE3MGRmMDNlM2NiMTMyNmRlOGMzMDBhYTE0ODY1MiByZWxlYXNlMzEtbWFpbnQKKzgyMDUzIDVjMGQ4YzI4NGMzMmRjOGU3YTAyNjkzZjI5MmQ4YmUwZTYxODc1ZDcgcHkzaworODIwNTQgNmE5OTkwZWY0YTZmNWU5NzMyYTM5OGIxZGFiMjdkODMzOTFjMzBjYSByZWxlYXNlMzEtbWFpbnQKKzgyMDU1IDQ2YWI1ZTRkYmE2YmFjN2QxZTdiYjIwZGJjZmUwMDA1ZTI4YTY2M2IgcHkzaworODIwNTYgMWRhNzczM2U4ZjI0NzMxYTBiODhkYmQ2OTA3ODA0Y2EwMmExMWRjMyBsZWdhY3ktdHJ1bmsKKzgyMDU3IGYzZGQ5MzA2NjViZDE3OTM2MzA4ODEzMzA0YTJjNDA4NGM1YmIwOTEgcHkzaworODIwNTggZGExYWFmYTU1YWUwMjM5ZWU1MjZmZWM4NGE0YzQwNDI2NmExMzFjZCByZWxlYXNlMzEtbWFpbnQKKzgyMDU5IDkwN2Y1NjQ0NzZiZTY2OWViZWFlZDQxOGVmZWFkMmViZTYwYmZjYWMgcHkzaworODIwNjAgNTljNjBhNTliMjdhNTdlN2M0ZTE2MmI2YmVkMjY0ZGYwMmM2ZmRiNiByZWxlYXNlMzEtbWFpbnQKKzgyMDYxIDlkNGQ0YWMwYTdiZmU4MTE3NGFmNGQwMTE1ZWNmZDBkNGE2YWMxOTAgcHkzaworODIwNjIgMDc0NDliMzY3OTM1N2RiMmVlYTk2YTgzMDJkZjg3YzAzY2JhNWI1YyByZWxlYXNlMzEtbWFpbnQKKzgyMDYzIGZhODMwMzcxYzcyNDE3NGZiYTFiNTNhMDk5MWYwYTNkNTE4ZDIxMDYgcmVsZWFzZTMxLW1haW50Cis4MjA2OCA0ZDY5YmRiNzFjOWFkNTFjZGM2ODY5NjQ1MjZjMjU2ZGJmMjc4ZDNkIHB5M2sKKzgyMDY5IDQ2MzU2MjY3Y2U4ZmJiNTlkOWIwNjc1Mjg4NTdkYTgxMDJmYWQ1YTYgcmVsZWFzZTMxLW1haW50Cis4MjA3MCBlNWY1MDA4ZmQ1NmQ1MGY0OTgwM2I1ZTVkYjJmODliYjcwYjkyODM3IHB5M2sKKzgyMDcxIGJmOTRlYjhmYWY2MjUzN2ZkNzQ0NmJlNDNkODljOWIyMmIzNTM1ZTYgcHkzaworODIwNzIgZWEyNTEyOWI5NGZlZWM1MDA5ODQ4MmM0ZWZhODI1ZWQ3MWQ1MzY1NiByZWxlYXNlMzEtbWFpbnQKKzgyMDczIDkwY2MyNjY3OThhMjRmYzUwYzE1Yjc2MjFjMWIzNDg0ODkyMDExNjQgcHkzaworODIwNzQgYzU0ZGQ1NzZkZDA1NTQ4MmYxY2MxNzMwNDRjZTdlZDBkNThkNjM2MSByZWxlYXNlMzEtbWFpbnQKKzgyMDc1IGRhNTU4NDYxZDlhOTRiYjdlZTllNzlmY2MyYmMwZTI0ZmU4YWU3MDggbGVnYWN5LXRydW5rCis4MjA3NiBlZjhhMmFiMjZlOWZlZmVmYjM5ZjU3ZjlmYzMyMGFmOGZiOTRjOTgxIHB5M2sKKzgyMDc3IDFmMGUwNzgxZjczZTQ2MWIxYTU5OTBiMTViMWViNTlmODlmMzk4MTkgcmVsZWFzZTI2LW1haW50Cis4MjA3OCA1ZGU1MmViMjUyZGE3MDZkYTNmNjk1NGQ1MGUxZTg0YTdjMTNjMGY5IHJlbGVhc2UzMS1tYWludAorODIwNzkgZGQ3MDA1MTQ1ZjZlNjVmMjM2ZWFiNWYyMDg1ODc5OTNiMmIzZDNjYiBweTNrLWR0b2EKKzgyMDgwIDE4YmNmNmMyZDFlMzdiMjgxODE0ZjQ0NDA1OTRkOGJiN2ViZDM1YTggcHkzay1kdG9hCis4MjA4MSBmNjc2N2RkZTliMjk4OWI4N2ZmMDYzMTY2MGM3YTc5Njg2YTRlMjVjIHB5M2stZHRvYQorODIwODIgYjRhNWE4NjllMWM1OWQ4YWYzNTk5OWEyNjZlOGVkYmM4OGE2NzdmYyBweTNrLWR0b2EKKzgyMDg0IDNhZmM3ZDhhNDQ1YWE1YWM5NWYyMTdjNTM4N2M2Mzc5YjVjNTc1NWQgcHkzaworODIwODUgMGRhNGM3ZDFmM2VmMjMzZTVhMzQzZTY0ZmQ1YzI5NDlkZGQ1NzczZSByZWxlYXNlMzEtbWFpbnQKKzgyMDg2IGI5MDE5ZjBkZDg5ZDNlMTc2OTEyNTJkMTI4ZjEwYTgzNWYxMGJkYWUgcHkzay1kdG9hCis4MjA4NyA0MjliMzI5YTAzZjgzMzRhNjI4Y2FkY2YyZTNhNjMzZDEwMGYyYTQ5IHB5M2stZHRvYQorODIwODggMzQzMDA1YzRhNGUzZjVlMWUxZGEwNjk5OTYyNjcyYWM2ZjcyMjE0NCBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwODkgNDQ2YTk2Njg1OGYxNDgxZTcwNDdiZjAyN2VjMjc2ZTQ1YjcyMmVmYSBweTNrCis4MjA5MCBjNGY1YzczNGRhNmU0YzEzN2FkMDYyNjkzM2EwMDg3NmM1OTg0OGMyIHB5M2sKKzgyMDkxIDVhMjhjNmNiNDc1MjdiOWQ0Nzc5M2ZlYmQ4ZmFlMDhkNzM0OTM1MzUgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMDkyIDA2OTUzNWU1MGE5ZTRmZGQ0ZGYwZGI2YmRlNmZmOTEyNTVmNTljYzUgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMDkzIDQ2NmMxNjJjNzMwYzIwY2Q0ZGM3NmQzNGRkYWFiZTRmMmY5YTY3MzMgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMDk0IDg5YTQyZTA3MTNkZGI5ZWViMDlkZjUwMTMwYjNhYmJjYjk4NDlmZTIgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMDk1IGVkMDc3NDBjNzY2N2FmZjllOWE3MGZhNTUxYzA1MzExZTc5OWM5ZGUgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMDk2IDg4MGJkZTVhYjdjNTQzNDUzMWNkNGQzMjY3OGJjN2U3ZmI0NjAyMGQgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMDk3IGFjNWY1NTM3YzczYjZkZTQ3NTRjZTkxNGUwY2I3ZDE4ZDI5NDBmNWUgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMDk4IDgwZDQ4MDA3NzQzMzllZWI1MmJmNjlhZDZjNzYzYWZlOGY2YmU3NjYgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMDk5IGY3M2ZhMzVmNmYwNWRlNDViNWRhNjgxZGYwOTM1MzNlNGM5NDA2NTQgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTAwIDM1ZjgwMTUyNjI3OGQ0YTRkMjY4YTI2ZGY3YzY4Y2NiMDFmYjQ4ZTkgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTAxIDVjZmUwNWYyYTRlOWM1NmFjMGNhMzYyMDM4NTU1ZDUwMzJjZjlmMmQgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTAyIGNlYzFiNTU4NDUxN2IwOTc1MjdlMzRjODI1OTVkNjk3NDkzMmY1ZDcgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTAzIDgwNjEzZGNmODA5MTBkNmQwYmFlMzk3Mjk1M2UwMDUzNzFjYjE4MDcgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTA0IDQ4M2YzNjJiOGVjMzA0MzgzMmE2MTE3ZjQ0NWE1MDNlODY1YTk3MDAgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTA1IDMwNjMzNmExY2UyOTExNzBhZTM4MDQzNjRlNGZmZTE2ZmZiYmM3YTYgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTA2IGE1NmZhYTZiOGZhMDJmZDY2NDljMTE5ZTY1ZTViZjlmNjdlMThiNmIgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTA3IDE5OTFhOWFhZmY1ZTM5ODUxNTIyN2UyMzU0NTZjNjJlMjA3M2U2M2EgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTA4IGI2MTQ2NDdhMzQwMDUyYjcxNzNlMDEzNDVlMjZkYmE1YWI1NmE4YTkgcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTA5IGViYWMyZWI3MjU1YjY1NTNiMWU3M2Q3ZGQ4YmE1OTlhNjA4NDg4YjggcHkzay1zaWduYWxmZC1pc3N1ZTg0MDcKKzgyMTEyIDkzODk2YTA5NDZjMmVmNTg0YTk3YzUzZGYwNTk0ODg2M2E3MjJiMDcgbGVnYWN5LXRydW5rCis4MjExMyA1Yzg0ZmNjMWQ5MDZlYWVjOWI1ZmQ0MDAzNWQ3YjUxOTIzMTlmMGNjIHB5M2sKKzgyMTE0IDZkOTc0NmNkOTM1YzYwZDdmNTk3NzRmNTJlMjRkODAwOGY4YmVhZTUgcHkzaworODIxMTUgNjU0ZTUzZTc1Y2QyYjAyY2FjMzgwMDcxMTcyMWU3NzFkMGI5ZTU1MyBweTNrCis4MjExNyBlZTM1ZjcxNTY3NjEyYjFlNTk3OGQ1Y2FmMmJlNDA5MjNmYzRlNTdmIGxlZ2FjeS10cnVuaworODIxMTggYzkxNTM4YzFhN2U2YzA3Nzg4MDhkOTk4NThjNTc3MzAyMTE5NDc3MSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMTkgNmFjZGRiNWZlOGUyMWJlNmRhYzA4OTU4ZDczMDI1OWJmODg3YTA0MiBweTNrCis4MjEyMCBiZGVmNDU0ZjcyMTJhOGJhYmUwMGRmNmM5ZDkxYzU3NzM5ZWU1M2M4IGxlZ2FjeS10cnVuaworODIxMjEgOTIzNzM1MTM3MDMwZjJjNGM5MDcxMjliMTM3ZDE3ODEzMWJlODQ5NiBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMjIgM2YwOWNjMzhlOTdlMzBjZTMzNDFkYTM1YTJhMjc5MDg1ZTFhM2Y5YiBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMjMgOTY1YTQ0YzJiMjk3YjliNmNlMmM4NzQwZWIxODEwM2ZkYTk2ZGRhNCBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMjQgNTNkM2QwNjhiZjRjNGI5ZTcyMGRlYThlNWYxYTc4YThhMjE4NWNjYSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMjUgOTg2M2JjODYzMGEzOWRkNzNhYTZlN2Q2OGJmNWRlZjI2ODM2YmI3NyBweTNrCis4MjEyNiBjZTIxZWI1YzE3YTVmMzAzY2MyNzliMDU0YzQwNGY3ZjcwMjg1YWRhIGxlZ2FjeS10cnVuaworODIxMjcgZDAxNGQxZjY1ODIzMTk1YzExYWZjMzFhMmVhNjdkYjJlYzVmZGU5YSBsZWdhY3ktdHJ1bmsKKzgyMTI4IGRkODgwNTdiMjdiMWNkOWY1YmU5YmRmMWFhNDI1YmFkZGExYjM5ODkgcHkzaworODIxMjkgZjNkNDVjNDQzYjEzNzllMThiZjdkOGI2ODcyZmQyMGE3Mjc2ODcxNyByZWxlYXNlMzEtbWFpbnQKKzgyMTMwIDFhODZkODQ1ZmJjNmYzOTRhZGQ2YTQyMGMyN2Y5OGE4MjUwYmNiNWQgbGVnYWN5LXRydW5rCis4MjEzMSA3M2Y4ZmFjYTI5MGJmZWI2NDBjY2ZiZTQxZWI2ODZjMDI1MjU5ZWY3IHB5M2sKKzgyMTMyIGExMDFkMDczYTVjZDFmYmM0NTRmY2I1YzJmMDU1NWQ1NjY1ZTljZDUgcmVsZWFzZTI2LW1haW50Cis4MjEzMyAxYWY5NTY3NDU4OGQxZDNhZTJjYTg4NWVkMDMyMTYwZjg5NWUyYjgzIHJlbGVhc2UzMS1tYWludAorODIxMzYgNTgxNzM5NWEwNDhlNWZmMTRmYzg1MTQ3NzA2ZWZiZjYwNWY1MDdmYSBsZWdhY3ktdHJ1bmsKKzgyMTM3IDEzZTViMGIyMDcxYTJhNDIwNjdmYjAzZmFjYzkzMTQwOWZhNmJhNTAgbGVnYWN5LXRydW5rCis4MjEzOCA3ZTRjZDcwM2ExOGI3MzMzZTg4N2I1NWM5NTcxMDQwOTIxYzcyOWQ5IHB5M2sKKzgyMTM5IDFmMTBjOTEyYzEyN2ZjMzBkZjlmZTYzMjIxNmNkZmYwNThmOTFkZmMgbGVnYWN5LXRydW5rCis4MjE0MCBkYWE5MTg4OGRhNTJhMzk2NjM1OTRkNDFiMGJmMzc4MTlhMjkyMGI3IHJlbGVhc2UzMS1tYWludAorODIxNDEgZjI2OGMyYWUwODM1ZjQyNGIzYjA3ZGRlOWM5NGNjNTQxN2MzZTAyMiByZWxlYXNlMzEtbWFpbnQKKzgyMTQyIGFmNzUxYTFkNmY0NDk0N2EyNDE0M2FlYzU1YTRhNzA3NzkyMzhhZTggbGVnYWN5LXRydW5rCis4MjE0NiAwY2Q5OWY4YzMwZTEzOTAwMDhhOTVlMTQwYzY0YzI5NjQ4OTA0YjhmIHB5M2sKKzgyMTQ3IDBhZmQ3NjBlN2M3NjUzMWIwZGZkNDFhYjMwMDU1YTE0NDhmMjBkYzQgcmVsZWFzZTMxLW1haW50Cis4MjE0OCAwYjdhY2RiZDAyZWIzNDM4NDI5NjhjNzg1OWMzYjJmMzdjNWFmYTg5IHB5M2sKKzgyMTQ5IDVhMzI1ZTBmMWZkMDEzNTdmODRiNThiNWVlZTE1MzY0YzQzNjdhYjIgbGVnYWN5LXRydW5rCis4MjE1MCA2ZTVkMjFlMjIzZDIyNDg0MTZmNjhlZWQwZDRkYWU5Y2JlYjNlODNhIGxlZ2FjeS10cnVuaworODIxNTIgNTZlZDY4YzIxNWE3MWZmOTdhNDJmZjU5NjhmNTY5NTIyYWIzYzAxMSBweTNrCis4MjE1MyA1ZDMyYjZhZmI1MmVlZWQ5MjY0ZDUyNjA1MjM3ZDYzMTE1NDM3ZWZkIHJlbGVhc2UzMS1tYWludAorODIxNTUgMTA4Zjk0ZDUzZWRiZTJhMWQwYWI4MzBiMDkyYjRiMTc0YzNhYjg5OCBsZWdhY3ktdHJ1bmsKKzgyMTU2IGQ5ZmNiYTRjYzE0NTQ1YTlhODRlNGZkZjc5ZjgwYjAzMzJhNGVhN2IgcHkzaworODIxNTcgZjkxOGQzNWVjNTZiODUyODkwMzk0OWU2MGZiMDMwMTk5N2EwMWE0OCBsZWdhY3ktdHJ1bmsKKzgyMTU4IDM3NmU4MWY5ZWJiMWQzOTFmN2M5YmEwYzZkMTU1NzZkOTc0ZGI5NjEgcmVsZWFzZTI2LW1haW50Cis4MjE1OSA5MDYwNjNjZTcxMTk2NTk1OWM5OWRiNDViZjg1MTBhZDkzZjY3NDg3IHB5M2sKKzgyMTYwIDE4NjM1Y2JkNjZlMGEzM2FkNDI5ZTU1NDFhN2ZmNzA5N2EyZmY0NjggbGVnYWN5LXRydW5rCis4MjE2MSBmNzhmY2IxYjIzZjViOGUwMDEwM2RjMTZlMDgwMmI1MWFlMDA3ZjNjIGxlZ2FjeS10cnVuaworODIxNjIgMWM2OTVjMGFhZmZiNDhjMmQyMjZjNWFhN2YyZTA0NjBmYmM2NTFhYSBweTNrCis4MjE2MyA0ZTI0ZGZlZGY4MGM1MWU1MDA5YWFiOTY0MmFlYTY4ODYxYTY2NDcwIHB5M2sKKzgyMTY0IGExMjA2YTY5ZTc3YTUzYjkwY2JkNjZjYTA0ZDQ5MmFmMmQxZTBhM2QgcmVsZWFzZTMxLW1haW50Cis4MjE2NSA1M2ExNTJiNDAwYTdlNWJjNjNjM2U3MjhkOTgyNDJlYTEyYjFhNmIwIGxlZ2FjeS10cnVuaworODIxNjYgZjE3YTJjMWUyOTE5MjhjNDYzNzE2ZTAwNDcxN2M4ZDY5YjllYjJjMiBweTNrCis4MjE2NyA0ZGQ4Y2ZmNmI3YmViMWY2ZjEwM2M0Y2NlNmUwOGQwNDZiODgwYzE2IGxlZ2FjeS10cnVuaworODIxNjggZDE1YmU4YjVjN2NhZDk2ZDRmYmYzZDA2YmQxYWE5MGQ1MGQ2YWEwZiBweTNrCis4MjE2OSBlOWZiMDQyZTQ2ZmI1MDAwNWY3N2VhMTY0MzNlNGY0MTg1ZWY0MmRjIGxlZ2FjeS10cnVuaworODIxNzAgODgzNmQyNzE2NzBiNmJiODY0ZjFhYjNjNDRkNjUyYTk5MjI2ODM3OSByZWxlYXNlMjYtbWFpbnQKKzgyMTcxIGViOTVhZjBhOTljYmIxYmEwYWJmNWRhNWE0MTk2Zjk1NTZiM2QzNmUgcHkzaworODIxNzIgMjkwN2NlOGJmYmI2MDI3NjE3YjlmYTQwOWZiNjIwNGRiYjhjNjY2ZCByZWxlYXNlMzEtbWFpbnQKKzgyMTc3IGNhNGYyZTk4NjliNjc1MmZjZDljYmFiMTEyYjExZDkyNmQ3N2M2YzkgbGVnYWN5LXRydW5rCis4MjE3OCA0MjZlZjljMzc5MTZmYWZkM2I4YjVkYTQ2Njk3MjEwZTliMjlmNmUyIHJlbGVhc2UyNi1tYWludAorODIxNzkgMDc0ODU5ZWNkYzE4NzMyMmRhOTYyMzY3ZWYwZDdhZWVkYjUxMjcwYSByZWxlYXNlMjYtbWFpbnQKKzgyMTgwIDc2YmM2YjU3NzM3M2NmNTRkZmVkZDFiMTBiMmY3NGQ0OTM1ODNjN2YgcHkzaworODIxODEgYzhkNWQxMjA1ZmU4MzBhNWIxZDZhNDIwNjAxYjYxYmFiZWQwY2ExNiBweTNrCis4MjE4MiAwZTQ2MzdlYTIwZDAwMTNhNTcwZGM5MTIwNjhkYzc0Mzg1MWMzODgwIHJlbGVhc2UzMS1tYWludAorODIxODMgNjZlZjlhNzdjOGFmZDVjYzE4NTJhNjc2MjJhYWUzMmU4MWFlYWMwNSBsZWdhY3ktdHJ1bmsKKzgyMTg0IDNjZjM1MjMxZjdkM2VkMzc1YTFhOTlkZmQ4NWI2ZmYwYmM2NjZhZjYgcHkzaworODIxODUgM2FmZTM2MWVmY2YzOGJmODg2NjVlYTcxMjMxNzQwYWY3YzE3N2Y1YSBweTNrCis4MjE4NiBjZjc5NzQxZjdhMjNmYzU1ZmU1MDM3YTc1YmFjZjNhNGVjMWMyNzdjIHB5M2sKKzgyMTg3IDk1ZDIwMzVhMTY0YjliMDVlMDU0MGQ2NmE4MzY1N2MxNGM1MTE0ZGMgcmVsZWFzZTMxLW1haW50Cis4MjE4OCA1ZjQ1NjkyNDg5ZGExZmQzNTYxZDA2MzljNjgwNGYzZDEwZGE3ZWRmIGxlZ2FjeS10cnVuaworODIxODkgY2IxYWI4ZTkxNTgxMDcwODdlMDFjM2Y5ZWEyZmU4ODVlNTNjM2U3OSBsZWdhY3ktdHJ1bmsKKzgyMTkwIDYxZmM4NGJjNGIxNDYyNjVkMGNjOWJkOTQ0NzM2OTNhZTFkY2UxMjcgcHkzaworODIxOTEgYjE3ZmNkZDM4YTViNDAyYTBhMDExOWJjYjYwYzEyMzcwOTExODI1MyBsZWdhY3ktdHJ1bmsKKzgyMTkyIDBkNDI0NTQxMmQwYjUzM2I1NTk5NWVkYTJhODM0NmYwM2QyODQxMzggcmVsZWFzZTI2LW1haW50Cis4MjE5MyBjNTUxNTdlMDNhYjk0M2Y5OGJiMmE0ZjQ2OTg2ODI1ZWY2YmFmZjgwIHB5M2sKKzgyMTk0IDQ1YmFhNDI5ZmM0OWNjZDk5MTViNmQzMjA0NTUzMTZlYWM5NWEyN2QgcHkzaworODIxOTUgM2Q2ZjBhMjA1MGUyOTI2ZjcwOTNkYTJiMWNlOTUxMjZiZGZjNTU4ZCByZWxlYXNlMzEtbWFpbnQKKzgyMjAwIDVkNTM4ZDFlNzA5OGQ5NmFhMWIxOWFjNTUxMDM2NzdkYTFiYWUwNjYgcHkzaworODIyMDEgYTM5YjUyZWUwYjFkNGQ5MmVhYjYyYWE5OWRmYWVjOTAzYmQ4Zjg0NyByZWxlYXNlMzEtbWFpbnQKKzgyMjAyIDg5Mzk3MDE0MTYwODJhMjliZTUxOTRmMGY1NWQwZjUxNWU2ZjYzNDMgcHkzaworODIyMDMgMzQ3NDRhNzYxNDNhOGU2NTZlMWI2MWE3Yzk0ZjNkM2Q2ODIzM2MxMCByZWxlYXNlMzEtbWFpbnQKKzgyMjA0IDIxZTg2ZGQzMjhmMTU3ZWM1ZmM3MzExZjc1MTlkNWQzYjNkOTcyODEgcHkzaworODIyMDUgYjhiMGExNWY4YTdjYTRlODQzMWJhOWEwYTUzZWIzODRmMmZkMzAyMCByZWxlYXNlMzEtbWFpbnQKKzgyMjA2IGJiNjIyMmE0ZWQyNDI2ZTljN2JlY2M5ODc1ZjFjMDk1YjBlMWZiYjIgcHkzaworODIyMDcgMTNiMmE1OTJjMTg2ODNlMmZkZmUwNDc2YTA4MTNiNWFkMGFiYTAwMCByZWxlYXNlMzEtbWFpbnQKKzgyMjA4IGJjYzBlODI1ZmFhMGNhODBlOTMzYTczODRkZWE4ZmM5NDkyOWMwZTEgcHkzaworODIyMDkgYzRkZDVhODg5ZWNkZmI2ODNmZDk2NTg2ZWVjNmMyZGE1MGIzOTk3NiByZWxlYXNlMzEtbWFpbnQKKzgyMjEwIDQ2YjQ4N2U0YTc1YjhjMzlmMDg4MGZkM2M5Yzg2ODNhNGM2M2U5MjIgbGVnYWN5LXRydW5rCis4MjIxMSA1NzExNWFiMDZiMjc4MDA2MTM2ZGEzOWVmNGRiNzdiNGE5MjViZjM2IHB5M2sKKzgyMjEyIDU5OGU4ZGMxOGI4M2U4OWQ2YjcwMmM5NDI1YTFmZDBhYmI5Y2I5NjIgcmVsZWFzZTI2LW1haW50Cis4MjIxMyBlZjY0MmUyNDA0N2FiNjgxNTY0OGYzYzllMmRjNzliMTExZTdiYTM1IHJlbGVhc2UzMS1tYWludAorODIyMTQgNGUwOTllNTAwNGExZTgyNWNjMjQ0ZjExMzcxMTZhNmE1NzhkNmE1NyBweTNrCis4MjIxNSBkOTZhY2M0MWM1OWYyZjQ3N2Q0YWRhNTFiNGVkYzIyOGQ0ZGRhM2Y4IHJlbGVhc2UzMS1tYWludAorODIyMjAgNjlmZGY2OGUwYjViNDYwNDExNTJiMjFiMGMwOGViOTQ3YTVlMDcxNSBweTNrCis4MjIyMSBiYTU1ODQ0YmY1YzAzMTRiNjk1NTNmMWJiNzM3YjI2ZWI5NDc2YzhjIGxlZ2FjeS10cnVuaworODIyMjIgODNjYTBlYTllZjFmYjIxNmNhZmNmNTBlNWU2YWJiZTBkZjZhNjRkMCByZWxlYXNlMjYtbWFpbnQKKzgyMjIzIDFjNWMxNDZkZTY0MjVkMDBlMDlkMGFjODM1YjlmMGQ5ZDVlNWY4MjMgcHkzaworODIyMjQgMGM4NzQ5MDc2N2JmMWM1MTY3OTI2MzZjYzdhZTIxNzRmODA2YzkwMSByZWxlYXNlMzEtbWFpbnQKKzgyMjI1IGI2NjNjZjZiYmU4YjM3MWNiYzRiMTA2ZDhmYWU5NjE3NDkyNmQ5NTMgbGVnYWN5LXRydW5rCis4MjIyNiAwOWViMzYyNmQyYWFlODExZDZlNDNiMzBlY2VlMzkzM2QzN2E1NzhiIHB5M2sKKzgyMjI3IDNkMzEwOGFjMjJiMmM2ZTU2ODU1MTk3MDZhNjhkYTUwOTIxYjljZjcgbGVnYWN5LXRydW5rCis4MjIyOCAyY2QyMjI1N2E4NmQ3YjgwNjlhNjMwZTRhNjA0ZDA2ZTllNWRjZTlkIHB5M2sKKzgyMjI5IGEzNGZkNmY4MTY1MTc5YmZhMzUyZmRmMWUxYThiYmU4MDA0N2I5ZjAgbGVnYWN5LXRydW5rCis4MjIzMCBlMjQ5OTBkMDU0NGZmZmY5ZjI0YTY3NmFjYTUwYWM1YTlhMTFmMTQxIHB5M2sKKzgyMjMxIGYyMzJjNTY5ZDIyNWQ3YzE0NzBkMjZjNmMwMWE1YWQ3YTVjOGNlYTEgcHkzaworODIyMzIgYzUxYmYzMTUzZjJjYTg5YjQwYTg4YjYwNGIyOGMwYWYxMzRmMzJiYyBweTNrCis4MjIzMyAxYmEwYWIwMmUzYjg1NzA3MzQxYWFmZjEyMjM3ZGVmZDMyN2NiMmY5IGxlZ2FjeS10cnVuaworODIyMzQgY2I2ZDliZDU1OWVmZDNhZDMzNmU1OTQ4NTVjZWExYTlmNDRlZWE4ZCBweTNrCis4MjIzNSBhNDU2YjAwYzNiNzUzYmRkOTY1ZWU3ODU4MTdiYzAwYTU3NWI0NzcwIHJlbGVhc2UzMS1tYWludAorODIyMzYgN2RjY2U2YTI4MWNlMmJmNmE1ZDQ3ZTg5OTlmMGU5MzQyMGNkNzJkZiBsZWdhY3ktdHJ1bmsKKzgyMjM3IDE1MmI0NDY0MmIyYzQxN2ViNmFlMmFiMDI0ZDNmZTZmZmNmZTQzMTggcmVsZWFzZTI2LW1haW50Cis4MjIzOCA0YWZlZjJlNDBiNjMzMjQ5YmQ2MGMzNjU2YjRlZTUzZjY2YWVhMWRlIHB5M2sKKzgyMjM5IDIxNTUyYTQ4ZWJkMTk2OGRiOTE1OGM0OTVmZTQ5YmU1NzcwYTUzMjQgcmVsZWFzZTMxLW1haW50Cis4MjI0MiAyZjZmZWQ2MDYxM2UxMmM4ZTkyMTEzMzQwZWM2YWM1YzFiMGY0N2NhIGxlZ2FjeS10cnVuaworODIyNDMgN2IwNGQ5YTY5OGFlZTY3NmMyYjA1OGRiZTliYTI1NDc2M2YxM2Y1NiByZWxlYXNlMjYtbWFpbnQKKzgyMjQ0IGQxNzEyNzZlZDc2ZGE3MjMzNGI3ODAwNjJmZDJhZmRkMTVlM2QyMjAgcHkzaworODIyNDUgMWRjYWU1MmM0OTVjODQ2YzFjZmNkNmQ4ZGI5ZDExMzJiNDQ1NDk3NCByZWxlYXNlMzEtbWFpbnQKKzgyMjQ2IDI5ZTUwOTc5M2QzYzQ4MThhOGYwYzU3MGJmNjk1ZDkwNTM1NWE0OGIgbGVnYWN5LXRydW5rCis4MjI0NyBhZGFmZWU5NTg5ZTQ0MjlhZGFiMDdmZjJjY2E1MWZmMGJkMzBjYzEyIHB5M2sKKzgyMjQ4IGVkODliMWFhZGM5M2QyZDFkYTc5MDg5MzU1ODkzODNhNDBkNDcyOWYgbGVnYWN5LXRydW5rCis4MjI0OSBjOTEyYjViMjRjOGYyZDFiMjRhNzA3NDVmMzI2YTE4NGM3MDljMzliIHJlbGVhc2UyNi1tYWludAorODIyNTAgMDE0ZTdjMDBkYzI4MDU4MzFmMmVmMjRmMTQ2OTlhZDI1YmUxYzdlNSByZWxlYXNlMjYtbWFpbnQKKzgyMjUxIDM5NmViNjYwZWU5YjQwYmQ5ZWYyNTg1MmY1MDIzMDdlZmU2ZjNiZTAgbGVnYWN5LXRydW5rCis4MjI1MiAzNTJkZGEwNzcwN2JmOTI4ZDNkYjllOWNlNGM4ZDhmMWNiZDhmZDIxIHB5M2sKKzgyMjUzIGEzOWNlYjZjZWRlMzE1ZDgzMzU4MjMzNzdkMmFiMzI1YTIwNDk2YzYgcmVsZWFzZTMxLW1haW50Cis4MjI1NCA0NTZkNmM1ZDI2ZGM2ZTZlNWVmNjU5Njc1MDFhMjBkNjU4YWYzNGNkIHJlbGVhc2UyNi1tYWludAorODIyNTUgN2ZkM2Y2ZWFmNjQ5NWMzMDdkZWI0NTk2ODMzMDg3YzFlYWJjZGMyMyBweTNrCis4MjI1NiA3MDY2ODhmZTQ1OTM1NjczZjk1MzQ0OGI3OGE3YjIyY2ZjYzMxNWY3IHJlbGVhc2UzMS1tYWludAorODIyNTcgNWZiM2YxYTc0NzI2YTZiODNkOWFhYjRkYzA3M2Y4MWZlMTIxNWI3MyByZWxlYXNlMjYtbWFpbnQKKzgyMjU4IGY2ZDVlYTc2OTI3Mjc5NjM0MzE4MzAyOWU0MmY5NjQyNjdmYzAzODAgcmVsZWFzZTMxLW1haW50Cis4MjI1OSBlNDc1Mzg1NWVjMDFiYmU1MTYxNDcyMjdiNTE3ZjdmODY1MWE1OTM1IHB5M2sKKzgyMjYyIDZlYTZkODUxNTBiMTJiODFiNzkzNDhhOTEzOGU0NmE4YTk5ZjhhNDQgcHkzaworODIyNjMgNTQ3ZTY1ZGI0ZDM4ODJlZmViOTkzMzdkY2MyNGZkOWU1ZDJmOTg0OCBweTNrCis4MjI2NCA2YjQ1NDM3N2FmZmVkNThmNzc3ZDUwNjBjZGJkOGFhNTNhYzgzNTI2IGxlZ2FjeS10cnVuaworODIyNjUgODE1Mjg0YzlkNzE5MTU0ZGEzNzkzMjBhMTFhZGE5ZGYwMTE5M2M0YiBsZWdhY3ktdHJ1bmsKKzgyMjY2IDY3NmE0ODBlZmMwOGNiZGE0Y2U4NTdiOTUxNzhlYjg5MjdhYzJmNDMgbGVnYWN5LXRydW5rCis4MjI2NyBmNzliZTc5ODEzMGYyYjFjZmM4NWIyZmJmODkxYWU2ODNkYTZkOGE2IGxlZ2FjeS10cnVuaworODIyNjggZWUxZWQ4MGQ3OTYzMzkxNzk1Y2MyNTE1N2I0ZTMyODYwZGY4MDA2YiByZWxlYXNlMzEtbWFpbnQKKzgyMjY5IDFhM2Q4ZWMwYzVmYThhYjY1ZGVlMTU1NGI0M2Q5ODcwMDY2NTY2YTggcHkzaworODIyNzAgNWIzOGI1MjM0ZGVkYjcyYWRjNzQ2ZDUyNjg0NGFkNzUxZDM2YzAwZiBweTNrCis4MjI3MSAwMjg0MmVjZDhlNWI5NGFkYThiYWMzYmQ2MjI5M2FmYzU3ZWQ3ZjdlIGxlZ2FjeS10cnVuaworODIyNzIgYTNkZDM5ZTM2YzlkZjE5YzYwMGZmNWY4MWE5ZmNkM2QyZDQzZDdiOCBsZWdhY3ktdHJ1bmsKKzgyMjczIGYxMTc0ZTc5ZjdmNDNlNzU5N2Y2YjczYzUxMzNmYTAzMTE0NDlhMDAgcHkzaworODIyNzQgZDNjNzVjMmY0NmJlMjZiYmM2OWVmMDlmYzJmNjgxYWIxYjM0ZjY5MSByZWxlYXNlMjYtbWFpbnQKKzgyMjc1IDAyMDQ0NTczZWVlYzFlYWEzM2MzYWE0NjczMGI4ZjU5ZjQzY2EwNzQgcmVsZWFzZTMxLW1haW50Cis4MjI3NiA2YjAzMTI0OTM3NTU5ZTcwOWI0ZDgyZWExYTdkYThjYjFkOTY3M2RiIGxlZ2FjeS10cnVuaworODIyNzcgYzUwNTYzODI0MDk0NDQ5YTc4MDI5NTRkOTY1NzJhNzk0YWE3YTRiZiByZWxlYXNlMjYtbWFpbnQKKzgyMjc4IGM4OGY3NjAwYmIxN2JhZTcwODU4MTZlMDQ0ZWI0MWMzZDZjN2FkOWIgcHkzaworODIyNzkgZjUwNWRmMDNhN2Q3Y2JmNzM5NjEyZDcyNDdkYWQxOWFhNDE1YTdhNyByZWxlYXNlMzEtbWFpbnQKKzgyMjgwIGIwNGNlZjU1ZmRmNDNjYzZjMjI4YzNhNjE1OWIwMWZjOGRjNjg4YjUgcmVsZWFzZTI2LW1haW50Cis4MjI4MSA3ZDkyODAyOWJjMGU5ZjM2MDY3ZTdjMGQ3ZmI1YjllMzM3N2EzYTg2IHB5M2sKKzgyMjgyIGVlZTI1NzkyODMwMDFhOTgwNDk1NjhmMmVkNGI3N2NkZjFkNDMyYzUgcmVsZWFzZTMxLW1haW50Cis4MjI4MyBkY2Y5YmNkOWExZTA4MTA0N2RkZjNmMDNiMmY5ZTIwZjhiOWYzZmY3IHB5M2sKKzgyMjg0IGExODMyM2ZiYWY5NThmYTQ3YTE1MzAwNDNlMTEwMTJkYzdlMjFmNWIgbGVnYWN5LXRydW5rCis4MjI4NSBkZWVkMTU2ZDMzZDgwNmYwZGRjMzY4YmQ3NDBkOTgxMjBjNTI0Mjc1IHJlbGVhc2UyNi1tYWludAorODIyODYgMGJlMjQzOWJiY2Q4MDE4NWZlY2UyMWZhMzBkM2ViZTk1MWYzMDBiYSBweTNrCis4MjI4NyBlNjQ3NDZlMDJlNDEwMTAwZjI2ZTJiOGExMmUxN2NmMDc1NDhhYjllIHJlbGVhc2UzMS1tYWludAorODIyODggMjgxODI4M2MxNDlhMmY0N2JlMzgwYmQyZDk4OGY2Y2Y0ZDM1MDFiNCBweTNrCis4MjI4OSA5MzNhMzU1NmY1NjMzNTg4ZmIxMmIzNjg4ZDlmMWM3ZjNlZDAyOGM5IHB5M2sKKzgyMjkwIGVjMGZkNWE2YmI0NTZmNzg3ZTA0MjdlYjBiNTFjZWZhYmM3OTE2MjcgcHkzaworODIyOTEgY2I2ZjNhNDQxYWMyZGUxNmUxZWRmZDZkYWNjNjgxZWE0ZjljZjA1NCBweTNrCis4MjI5MiAyZjM1MDFmOGQ0NTZmZGZkNDBjZGEwYmMyOTA3MjlhZGE0M2E2NjkxIHB5M2sKKzgyMjkzIDM1OGQ4NmE1NzJmYjE4OWEyNDM1MDllODY1OTVmZWE0MTc2NmI4YzcgcHkzaworODIyOTQgY2JkNTEzOWU4ZmU0ODk3NWNkYmE5ZDMyNTJjOWQ3M2I2YTg2NGZlNCBweTNrCis4MjI5NSAwODk3M2U2MDhhMmE0NDBmNWU3NWFkNmJkYWQ5NGIzNmU4YmExYzBlIHB5M2sKKzgyMjk2IDA1NTU4ODRlOTg2MjM0YjgzMjA5M2E3MzllZWI3MDYxNDdjMWNiYzIgcHkzaworODIyOTcgODIwZjNiNmNiNTUxMTg3NDk3NzFmZDNjYTlkYjI0NGIyZmNlMmVlOCBweTNrCis4MjI5OCA1MDRjNDk5ZThjOTU4MmQ1YjE3ZGI2NmE3MzFiMjY2MDgyNWUzMjEyIHB5M2sKKzgyMjk5IDlmMjI5NDg3NDkxMGNlZGRiYjFmZTVmYWE2MTczZTUwYWI5ZDEzNTggcHkzaworODIzMDAgOGE3Y2NiOTYxODE0NTkxZjliYjg3ODY0N2Q5NGMxZjU2MDBhMmVkZCBweTNrCis4MjMwMSA4ZGY2MTkyNTkwNTY0ZTY1ZTY3YTY0ZmMwNjFhMmQyM2ZhMjk2OTIyIHB5M2sKKzgyMzAyIDMyNjUxZWU3NzllZDAwY2YxNzIwNzVlMWFlM2ExNTAwOTc3YWEzNGIgcHkzaworODIzMDMgMzY3MGM2NmVlMTQ5YTVjMzgzOTk2YjkyNzMxZDkwNDhjZWJkNWQ1NCBsZWdhY3ktdHJ1bmsKKzgyMzA0IDFkMTc5N2FmNDYyMjBiNTcyMDUyZDEwYTFlYmExNjM0NGY5MGY1MDQgcHkzaworODIzMDUgYWEyNjJjNWIxOGI1MzI2ZGJhMTJjZjJiZTg5MzM4ZDhiYjlkNjhjNCBweTNrCis4MjMwNiA5MzUwNzVkMzM1ZmU4YmU3YmJiOGVlMzc1ZDg2Y2Y1YTI0ZjMzOTlkIHB5M2sKKzgyMzA3IDQ2ZmVjNzdmOTVlOGQxNWVkMDI0NzY5MjZmY2FjYmQ1NjhkNTRhMmUgcHkzaworODIzMDggNmVjODI1YzliM2I1MDFmMmFjMTI4ODMyZGI3M2YyZjRkODRlN2I2ZSBweTNrCis4MjMwOSAyZTM3NjAzY2EwNGRhMjZiNDEzNzE1YmQ4OWRjMmU4NTJiMGY1MmMwIHB5M2sKKzgyMzEwIDRhYTViOTU4OWM0MjEyMDkyMzgyYzFhM2Q5NjdmNGIyMTU1NTE4NDEgcHkzaworODIzMTEgYTg1N2RkNDA3OTY0ODJmYWY0MmI4MTZhYTM5ZGIyODVhZTExZTgxYyBweTNrCis4MjMxMiAyYmMwODAwMGE4NTcyN2UxMGVhOTQ4MzQxZDA0M2E1YWRjYTM5MmVhIHB5M2sKKzgyMzEzIGRkMzBiYzVkMTg0ZTkxNDZhYThlNDViNGZiMjc0Zjg5YTcxZTM5ZjcgcHkzaworODIzMTQgNDg5M2U0MDA5ZjU2NzEyNDhiODZiMGQxOWY3NGM5ODkxYzM4ZGI3YyBweTNrCis4MjMxNSA5ZjY5OWU1MTRhNjJjMjdlNTI4NjgzZmVjZDEwNDliYjMxY2JkNDkwIHB5M2sKKzgyMzE2IGE5Y2VkNDIzZGFjZTc1YTI3MzJhNTgxMDNjYTBmODFkOTBjODI3MGYgcHkzaworODIzMTcgNDdlMjlhNWMzZGRmZmYyNTBkZTM2M2M1MzE5ZGM1OTRhZjk2NGRmYSBsZWdhY3ktdHJ1bmsKKzgyMzE4IDNiZGNkZWNlYTU2MTBlMjZmNzUzNGZhOTYyMTY2ZmE5ZDg5YzcyOTEgcHkzaworODIzMjAgYjA3YjJjOTU0YTgwNzdmNGM5YWQzZmM0ODkzMTRlZDg1NzRmMmNhMSBweTNrCis4MjMyMSBkN2UzNDIzYzlkYTgyMDFiYjRiMmFkM2UyM2U5MjQ0MzBhZDAzYWUzIHB5M2sKKzgyMzIyIGU0MmJlNmU2YWMyZDczNjQyZDNmMDJhOWYzYTFmZWZkZDljMTczMjAgbGVnYWN5LXRydW5rCis4MjMyMyBmZDFhMTEyOTNlNjJlMWNiNGJjMjAxNzliODQ2NDk5ZDk0MGQ1YWNlIHJlbGVhc2UyNi1tYWludAorODIzMjQgOWYwMTg4ZTRmODFhODg2MjcwOTRmZTFiYTNlNjNiOGU0OThmYTIzMCBsZWdhY3ktdHJ1bmsKKzgyMzI1IDIwMDNiNzBhOWJhZGRiNjUxMGU4ZmU5OTE0YjRhOWRkMTE1MjAyMDEgcmVsZWFzZTI2LW1haW50Cis4MjMyNiBlYWM2NGE0NjEwZjEyMjYyYjZiNTViMTQzYjQ4ZGFmNDdlMzA4ZjE2IHB5M2sKKzgyMzI3IGI4ZDM2NWRhMTc5ODk0MWI3NTMxMjVlZDJiYjU4Zjk1MWMzYTJlNGIgcmVsZWFzZTMxLW1haW50Cis4MjMyOCAyOGY5YTAwMGEzNzlkNGM1ZTEwOGFmNTk4ZjExMDNlOGZiZGYwNTE1IHB5M2sKKzgyMzI5IDNjZDE2YWM1MTg3NzE1M2ViMmZkODY1MWNlZDUxMzZmMTBiZmI2MDQgcmVsZWFzZTMxLW1haW50Cis4MjMzMCBjMGE0OWI2YTZmYjExZDg4MDY4MDk2YTg5ZGU5ZDg4MDk1YmNkODU5IGxlZ2FjeS10cnVuaworODIzMzEgZjgxNmI5OTFlNWIzMWNhNzcyMWU4YzI3MTBlOTQ1ZDM3ZGUzOWFmMiBweTNrCis4MjMzMiA4ODI3NjE3YTA3ZGM5MWY2ZTJkNjQzNjg1ZDcyMmM5NDU2YjZkYjI0IGxlZ2FjeS10cnVuaworODIzMzMgZDcxNDExYTBhNDczMTZhZWIzOGMxZWM5YThkMTQwMzY3Y2Y2ZjAxOCBweTNrCis4MjMzNCAyZGNmNDdiNTk0M2Y0ZWU0ZjVkOTMxNjliNjExMGUxZWM1NGE2YTQzIGxlZ2FjeS10cnVuaworODIzMzUgMzdjZTVhZGFlOGI5Yjg4ZTk3NGE1ZDlhOTg2YzljYjBkOTVjZGNmMCByZWxlYXNlMjYtbWFpbnQKKzgyMzM2IDc0NjU3OWE5ZWFkNzA1Y2U3ZmNkZGFkNTg4YzUzYTFhZDczYTA2ZDAgcHkzaworODIzMzcgMjViNzIyMWRkYTY5MWJjNWFiMzRlNWFhZTk1NWU3MTRmOWVkZjFlMCByZWxlYXNlMzEtbWFpbnQKKzgyMzM4IDNjYjNjZTdkY2FiODUwZjhmMTVjZGI3ZGZmYmUyNTdhYzVjMDdjMDAgbGVnYWN5LXRydW5rCis4MjM0MCAwMjkwNGM2ZWU1MDI5NzYxMTNkMmE2YTk0NTEzNGU4N2E2YzM5ZjQ0IGxlZ2FjeS10cnVuaworODIzNDEgMjUyMGI4MThkYTA1MjE5M2Q4ZmEwZjczNTBhODZjYTQzMDM1Nzc3ZCBsZWdhY3ktdHJ1bmsKKzgyMzQyIGM4YmRiMzJiMDRhYWFjYWFiMmM5OTlkZDI1YjcxODQ2NzYxNjM3ODEgcHkzaworODIzNDMgNjhiNjcwZjM2MTRlOTBiNDFkZGZiYmE3ZGMxMjhkNTk1NTgwMjQ5NSBweTNrCis4MjM0NCBjZTAzMjUyNzZkMmFmYWYyNDAzODFiMjJkNDI3OTYxMmRjOTBlYjM5IHJlbGVhc2UzMS1tYWludAorODIzNDUgOWNhOTUyNGQzZTU3OGE0MWFkNTg0MmIyZDUyYzk2N2UwNDM4Mzc1OCBsZWdhY3ktdHJ1bmsKKzgyMzQ2IDY5ZjZkMjEzMDI4MTI0YzczMDk5NWY3ZWI5YzU3NTE0MzkzNmZjYjIgcHkzaworODIzNDcgYjgxN2U3MTY1MTZlZGYwM2JmODYzNWQ3NjQ2MTUyNzlkYjgwYWFkOCBweTNrCis4MjM0OSA5NWY4YjI1ZTUzY2UwOWU0ZWU4MTMxZGIzYjU4NTEzZjU3NDQ1OGI4IHB5M2sKKzgyMzUxIDJjZjRjYTFlZDZkNmNkNmYzYWVkZDA2ZGE3ODVmNzczZTkwZmMwNmIgcHkzaworODIzNTIgYWNkODY0ODg2NWFhYzVlMWYzY2U3Njg3Y2RiNjVhZjM5Njg3NDBhMiByZWxlYXNlMzEtbWFpbnQKKzgyMzU0IGRmYmRiOThjOTJlN2YxYjdmM2Y2ZDc3M2M2YmU1YTdlZDE2MmJiZGIgcHkzaworODIzNTUgMGUxNmRkZDQ0MTU3OGViZGZjY2Q3OTEwMWY1ZWE1ZDIwMTI0ODVhYSByZWxlYXNlMzEtbWFpbnQKKzgyMzU2IDJhOGM2OGJhMDAwYmE0ZjIwNzVkOWY2OTNkYzg5NzEwODE1NjY0NjkgbGVnYWN5LXRydW5rCis4MjM1NyBlYmZiNmJjMDgyZDkyZWQ5YTQ5OTRjMDE0NzkzZGE3NTk4MzU3MThjIHB5M2sKKzgyMzU4IGE0ZTFjNTZiZTUzMmNlNThmNTUwYWZjZGQ0YjBkYWNmYWZhYjUxYzggcHkzaworODIzNTkgMmY5MDUxZmU2YWQ5YzY1MTUyMGY0YTFhNmUzMmZkNDNhZDNjOTFlMyBweTNrCis4MjM2MCBmZTQ0ODI4ZWE3ZWRkZTFkZWI1NzY5MTQ5ZjU0MTllZGQ2ZTI5N2YzIHB5M2sKKzgyMzYxIGM1MTkyOTIzM2UxOTU0OWYxMDQwMjEzZTFlZDU3NjkyNDJhZTY5ODcgcmVsZWFzZTI2LW1haW50Cis4MjM2MyAxNGY5NGMwMWEwMDJhNTgxMTk3ZDNlODg5NGNjMThmY2M1ZGUwMDlmIGxlZ2FjeS10cnVuaworODIzNjQgZjdiNTQzNTI3NzFkMmNmYmI3YzIwODQ5NmRmZjE1ZWM1NTk3ZTNmZiByZWxlYXNlMjYtbWFpbnQKKzgyMzY1IGI3MmMzM2Y0OTZhYzhlMWQ3NTc3MzA2OTVlOTI5ODYyMjA4ZmQ2MzggcHkzaworODIzNjcgNzE5OWZmMzg2ZjllYzdjZjJjOWFiYmNhYTg2MDJiN2MxMDgyN2VmNiBsZWdhY3ktdHJ1bmsKKzgyMzY4IDJmOGQxNzYyNmNkZmY0NGQ1Y2NhMDFlODNhNmJiMzA1YzhhNTc4OGYgbGVnYWN5LXRydW5rCis4MjM2OSAxN2YxN2RjNmQ0OGJjNGViOWY4MGFhMDQ1MTZhNjQ0NzJlZjgyMjAzIHJlbGVhc2UyNi1tYWludAorODIzNzAgMDcxMzFmMDhjM2RlMTk1YzAzODM1OTFjMzQ1YjRhYTMyM2VlMWMwYiBweTNrCis4MjM3MSAyOTY0MjQzNzQ4MzYxNjU2ZDkwMTA2ODY3MDM1ODZiYzk0YTZmMGJmIHB5M2sKKzgyMzczIDllMjkxYWMwN2M1YmNmNTcyNTBmNTNlZDQ1YzZmYTkwZTM2ZmM0NWYgcHkzaworODIzNzQgMGZlOTc5MzI2NDJlNzdiYTdlNDJkNDM1OWRhNzMxZTc3MzkwMjNiMCByZWxlYXNlMzEtbWFpbnQKKzgyMzc1IDUwNzI1OTBiNGRmZGM0ZjAzZTcwMmUwNTNlM2QxYzY3OWRkYzdhOGEgcHkzaworODIzNzYgMjkwYmQwYzE1MGE2NDU4ZDgxNzJhMTQwOTE5N2VmMTQ5OGJmNTY4ZSBweTNrCis4MjM3NyAxNTgxNjZlZjZmMDZkMDE0ZmRlMDg5OTVkZmFlN2M3Zjg1NTYyMmU3IHB5M2sKKzgyMzc4IGE5MmFjNzU3MDExODNhYTE1ZmUyOTQ2NjhhMjRhYzI4ZTE1MDFiYjEgcmVsZWFzZTMxLW1haW50Cis4MjM3OSBiNWRmYTMzOTQ5OWMyODQ0MTRjNjA0NzU2YWY1MWI1OWRkN2M3YTZkIGxlZ2FjeS10cnVuaworODIzODAgYjg4ZGE0Zjc3ZjY4NmM3NWQzNDExMTA3MDRmZjJhNGQzNjRjMTQwZCByZWxlYXNlMjYtbWFpbnQKKzgyMzgxIGZjYWU5NTlhMmZhYjUyZjQwNmU3ZTcyMWI1Y2RhNmY0NmViZTNiOTUgcHkzaworODIzODIgMzIxZWRiYTVmNzk1YmY2YTAwZmVkNmE2YjYxNWJmYzhlMjc1ZTQ1ZCByZWxlYXNlMzEtbWFpbnQKKzgyMzgzIDI1ZmJmMDIzMTAyZDliOTBjNjdlNDhhNDJjNGU0NmYxNmIwMTE2NzYgcHkzaworODIzODQgZTZiYjk5MGFjOWY2ODcwMjA0YmNjNjAyMTAyOGJmYTc2YTZiYzJkOCBweTNrCis4MjM4NiA0ZmNlMjVhYmZkZDgyZmJkMDUxYmIxMjRjNjA3OWQ4YjM4NjNhNjA2IHB5M2sKKzgyMzg3IDE2ZDg4ZWNhM2MzM2ExOWRmMjVkZDY1ZjMyMmRiMjBhMjE4ZjYxYmEgcHkzaworODIzODkgZDM0Y2UwZGU5NDFjYTg5YTRjMzNkNTkzYzU1MWZiZTg2YzllZjBkMiByZWxlYXNlMzEtbWFpbnQKKzgyMzkwIGU2ZjFiM2QxMDQwYTQ3NWEwNDc2NTIxYmFiZjE1ZWU0Mjg5YjMzNDggcmVsZWFzZTMxLW1haW50Cis4MjM5MSAyYmM1NGRhNGI4MmMxYWI0YzI5ZTQ3MGQ3MmE2ZmY2ODliYmZiZTZhIHB5M2sKKzgyMzkyIDMwODQzYmUyZTExYTI2YzM0NTFlMTYwMTRjM2E3NTQxYjg5NTZmOGQgcHkzaworODIzOTMgMDQzZWYwNGY2NGQyMmM3YjY5OTg4MzRkYmE2MDEzZWYyYzY0M2EzOSBweTNrCis4MjM5NCAzMGUxZDhkMDgxMDU3ODBmMzNmMmFjNGZiZjFiYTczYWRjYWE5OWMwIHB5M2sKKzgyMzk5IDlkY2M5M2ZlNzUyODJlZGY4ZDJkODJmN2E0ODExOWI1NzFjZDVhYWUgbGVnYWN5LXRydW5rCis4MjQwMCBjNWFmZTk1NTI3NzkzYzgyODg0NmIzODZhZTQwODNmMGU5MmE5ZWIwIGxlZ2FjeS10cnVuaworODI0MDEgOWY1NDMwZTQ3NzcwMDdlM2U3M2NiNTA1ZTcyYzU0NjU0ZGMzYjhhOCByZWxlYXNlMjYtbWFpbnQKKzgyNDAyIDAxYzk1ODFjN2UzZjQ5NGRjMGYwMzIzY2MxMDU3ZWI4YmMwOWQxYmIgcHkzaworODI0MDMgZTljOGE5NjU4NGQ0MzRlMTA2MjNjZjRlMzBjMWI5ZjBiZmU4NGIwNyBsZWdhY3ktdHJ1bmsKKzgyNDA0IDc2YmMyNTVkMjlmZGY0ZTNiZTcwZTA2ODc3ZmQwNWUzODI3NWJiMWQgbGVnYWN5LXRydW5rCis4MjQwNSBkYjZmZDQwNWU1OTRmZDZjMzI5ODI2MzQ1MDM3MWYxNTlhOGZhODYxIHB5M2sKKzgyNDA2IDgxNmNkODU4ZDMzMWE4ZDUwNjY0MzljYzZlZTg3MzlhZTk3MDFmM2QgcmVsZWFzZTI2LW1haW50Cis4MjQwNyAzZTg3OGUyNjliMDllZTViMWQwNDYxYWVkNGY0ZjdjYzQ4YTczOGIwIHB5M2sKKzgyNDA4IDNhOTNhMDZlNWUzMGNkZmE4OTRiNzU3ZWZlZmIzN2Q3NzI3YWNhYjYgcmVsZWFzZTMxLW1haW50Cis4MjQwOSBiMDQ2MTZiZTdmMTRkNzA2MDQ0N2YwMzNkNDg2NjM0ZDI0NGQ5OTUwIGxlZ2FjeS10cnVuaworODI0MTAgY2U4MTQyMmVlMzViMzEwNThlODgwNGZjY2VkYTg1OTVkZWE5Nzc3MyBweTNrCis4MjQxMyBlMGQ1YTRhNDkxMTJhMjhlMTFkMDc5OTc4OTdhMDc0MTYxODUyMmI4IHB5M2sKKzgyNDE1IDhiOGYzNjk5NDFjMWVkYjQyODkwNmQ1Mjc5YmZlMzM0NmNjM2YwZjggbGVnYWN5LXRydW5rCis4MjQxNiAzMTg1YjA1NWY5Mzc2NmQyYWNmNGZiODNlYTg3MWIwNTRlOWM2ZjhhIHB5M2sKKzgyNDE3IGE4OWEzZDkyZjhhZWFkZmI4MjVjNTQzNjZkYzkyZjNhOTU0OTJlNzQgcHkzaworODI0MTggYTlhMjY3YTgxZGFjNDIzYWQ1OGJkNjQ1YTBlMGRhZDNiZWVkMjZkNyByZWxlYXNlMjYtbWFpbnQKKzgyNDIwIGM1M2UxMzVhMDhiNjkwYTkwNDU3MjdlYzM5NzdiNWQwMGRhMjA5NTUgbGVnYWN5LXRydW5rCis4MjQyMSBhOTI3MTliNDllNWViYWU4NWYwM2JiN2EzYTlhYTdjNzVmZjA4NDAxIHJlbGVhc2UyNi1tYWludAorODI0MjIgZmExMWQyYjRmOThhMmVlYjExNjFlNjdmMzhiZGVlN2E5MDcwYjQ2MyBweTNrCis4MjQyMyAxM2MwNmE2ZjQ2NzY3NmU2ZGQ5MzBlMzVhYzg4Mjg5ZTRiNGRiODMwIHJlbGVhc2UzMS1tYWludAorODI0MjkgNDNmMDZjYTM2YWIzMGQxNjhhMGNmMDdkYmFlYjQzNmRlZWEwOTNmMSBsZWdhY3ktdHJ1bmsKKzgyNDMwIGZlOTU1M2E2Zjc5OGQ3MTE5Mzg2YmU2NmU5MmQ1ZmI0NDBmOGQyY2QgcHkzaworODI0MzEgNmQwZGVkYjNhMjRlYzA3Njc0NDdlMWI5OTliYmUxZmJiNDMyNjZjMSByZWxlYXNlMjYtbWFpbnQKKzgyNDMzIGJhOWNmMGRmMjFiMDA5OTA3MmYxYTNhYzgwNzQzZmU5YmU2YmQwZWQgbGVnYWN5LXRydW5rCis4MjQzNCBmZWY2MzQ4YzJkZDZjZjIxYjUxMzdmMThhOTc1ZTI2MzFmN2U3NzhjIHB5M2sKKzgyNDM3IDRiMGM4ODI3NWYzYjY0MjU4NTM5NDQxMTg0ZTljMzY2OWFmOTg5ZjQgcHkzaworODI0MzggMzUzNzBkNzIzNmM5YzZhZTYyYjY0MjA1MDU4OGQ4MmEwOThjNzZjZiBweTNrCis4MjQzOSAxNzg2NjI4ZWE2ZmY2NDEwZGI5MDNlZjI0ZWYxMjRlZDU4NjZlNzlhIGxlZ2FjeS10cnVuaworODI0NDAgZTE3YjFjYjFiNjFjOWNjNjNmNjBmYzFlYzljMDljNGE3MDA3YjI4NSBweTNrCis4MjQ0MSBmNDMwYTg5MTk2YzlhZmVmM2RlZjc4YTI5NzVkM2E5MmUyNDFlOTU4IGxlZ2FjeS10cnVuaworODI0NDIgMzMwNGRjNTZkZGE0NDA3ZjhjYzY1Mjg4NzA4ZDg4OWFmYjY3YTQ3NSBweTNrCis4MjQ0MyBiM2JmYWJjMDQ0N2M1MThhN2Y4YjZiNTNlZTgwM2U5MWFiMDJhZDIzIHB5M2sKKzgyNDQ0IDM2YWJkNzU1NGJhZDhjY2EyNzY3MzZkZGY0ZjRjM2I2MWQ1ZTI0MmQgcmVsZWFzZTI2LW1haW50Cis4MjQ0NSA4YTY4OWYyOTc5NzBjOTVjNDA2OWNhOWY5MTA2YWY2ZTI2OTk3OTM4IHJlbGVhc2UzMS1tYWludAorODI0NDYgZWY2Nzk4YTk5ZWFkMmViNjcwMzNhOTc4N2I4M2YyOThmMzQ0NGI1NiBsZWdhY3ktdHJ1bmsKKzgyNDQ3IGI1NDBhNjEyZjYwMTcwMTVlYmM1OTVlNjBlMzQ0YWZlYTljNzBiYTcgbGVnYWN5LXRydW5rCis4MjQ0OCA3ZjE0OTZlNDExMjQ3MzhkZWY0YTY3OGZmYmY2ZWFjMWFiNmQ2ZDM1IHB5M2sKKzgyNDQ5IGU4MzRjNWQzYTlhMzNlMzA0NTg2ZjA5MWIxMTlhMTkwNThiYjVkYjcgcmVsZWFzZTI2LW1haW50Cis4MjQ1MCBhZWM0MjIxMTFjZGVhMzU3MzdmMDliOWNmMDNmMzAxYjA3YTZmOGEwIHJlbGVhc2UzMS1tYWludAorODI0NTEgZjFiYTRlNmQ2YzEyMzE3MzQyMWRmYzMwYThhOWE3MDBiMzY5OWE4OSByZWxlYXNlMjYtbWFpbnQKKzgyNDUyIDYxYWQ2ODk0ZWQ2YWE3NmMwYTM5OTdjODVlOWRhOGE5NzcxNWY1YjAgcHkzaworODI0NTMgY2I3ODAwYzY0OTEyM2NjNzQzMGFlMzEyYWE2NjJmYjVhNTlmYWY2ZCByZWxlYXNlMzEtbWFpbnQKKzgyNDU1IGRlMTZhOTE1YmQyYWM3ZDU4N2QyMGMzMzcwNmExNjY1OGMzNTAyMDQgbGVnYWN5LXRydW5rCis4MjQ1NiA1MjliMjE3NTMzOWJmMDYxNTc3OWZmMmNiODRlN2MzOTcwN2EzODhjIHB5M2sKKzgyNDU3IDQzYzA0NzExYWFjYmNiYWI1MjRhZGVjZmVhODRkY2RjNTU5MzI5MDMgbGVnYWN5LXRydW5rCis4MjQ1OCAzMTQ0M2NmNGRlZjJmMmMxYjU2NGM0YjdlODE2ZDRlYjQ4OTZlZTg4IHJlbGVhc2UyNi1tYWludAorODI0NTkgZmExNmFjYjJmZmRkNjE4NWE2M2FkYmRkOWJjZjEzN2FjNjcyZTZkZSBsZWdhY3ktdHJ1bmsKKzgyNDYwIGM3MmZkOGEyYWUwMWQwNjZiMGZhOGU4Y2RjY2JmYWZjYTcxYTM0YjYgcmVsZWFzZTI2LW1haW50Cis4MjQ2MSAxZWIzNmYxNjljOTcyOGZmYzcwMzczOWY0MGJhNGI0YzZmNmJmNmM4IGxlZ2FjeS10cnVuaworODI0NjIgZDNmYTE5OWI0YTE3NDY2ZDlkMzU2ZWFhNmU1MmViZDRlYzM4ZjM5OCBweTNrCis4MjQ2MyA4YmY2ZDhiZWFmZTFkNTRlOGM3MDEzZjY2M2U4Yzg3NjZlYzU5NjIxIHJlbGVhc2UzMS1tYWludAorODI0NjQgZjI3MWUxZDBlOWM0NDI0OTU0YjFjOGY3NmE0YjdiZDdjMmE0ZjZhZSBweTNrCis4MjQ2NSBkODMxZmMwYzI2MzQyYzMzY2Q3NTNiNDAyNGMxNWE3NzY0OThmMzUwIHB5M2sKKzgyNDY2IGI4YjExZDQzNDk0MDYxZDQyZjRmNmExOTEwYmJiNmI4NjM5ZjhjZGMgbGVnYWN5LXRydW5rCis4MjQ2NyBiMGJlODlmNzBmZjliNzZlZGMwZGI0MWNhMjA4ZDkxY2Y2ZjcwYjM2IHB5M2sKKzgyNDY4IDk5MDBhOTk4YjQ2MGNlZDAwYzVmMjQyZDI4ZDJhOGUzZGU5YTY3MWMgcHkzaworODI0NjkgOWRjNWYzODVmNDk0MmM0Nzk1ZGNkNGVjMDZhZTdjM2MxNjIxMTllYiByZWxlYXNlMzEtbWFpbnQKKzgyNDcwIDRkZTEzZmVhZWEwMTgwNWUxNDgxYzgxNTA2ZGFiNzNiNTIzZmExYmEgcmVsZWFzZTI2LW1haW50Cis4MjQ3MSBlYmUxYjNmZjhkMzAyMTgxODVhNDU3ZWIwMTIzOTc1Mzc1YWJhNDY0IHB5M2sKKzgyNDcyIDYxY2I5NDEwYTg0MjRiNTA4NTEzNzE5YTQyZmMyYWU0Y2QwMjFiOGUgcHkzaworODI0NzMgNGQzYjRmMzQxOTJiMjM5ZTg3ZDhiYTA3NzM2NjIwMTU2ODI5Y2M0MSBsZWdhY3ktdHJ1bmsKKzgyNDc0IDMyMzk2ZTgwMDQ4ZjlhODcwNmIxNmFlNjFiZDgyOWQ4OWQzMTlmMDYgbGVnYWN5LXRydW5rCis4MjQ3NSA2OTc1NmNkZjUzN2I0ZmEzN2RjYTlkN2M4ZjBmMzk5MzhhMjQ4ZTBiIGxlZ2FjeS10cnVuaworODI0NzYgOGUyMGZmYzYxOTg2NzNjYWFmZGM3MjAxYWI5YmZmNjgwOTU2ZmE5NyBsZWdhY3ktdHJ1bmsKKzgyNDc3IGNjNGJkNzY2ZmUxMDlhNTcyMWQ2NTFhYWUzNjU2NzA3YjM5MjIwZWIgcmVsZWFzZTI2LW1haW50Cis4MjQ3OCBjNTg1NWRkZGYwZTFmYWJhZTk4MWE3NWVkNGE5MzQ2NTA5MmI4OTljIHB5M2sKKzgyNDc5IDU2MTNkMmUxZDc3OTUyN2VhYjhjNGU4ZWQ3YTI2OGQyZTA4NGIwY2UgcmVsZWFzZTMxLW1haW50Cis4MjQ4MCBhYWU3MzgxYWMwYjJkMGE1YzQ5OGViNTJlMzNkN2M5NzQzNDI3MWM2IHB5M2sKKzgyNDgxIGQ5N2MyNDUyMzMyMTBjNzliYjY0OTk3YmRlOTFhYjQ3OGM5ODY2ODMgcHkzaworODI0ODIgMmFhYjk1N2JmNjFmZWM2NWFhY2JhZGU1YTVlN2ZmNmUyMDlkYjBlOCBsZWdhY3ktdHJ1bmsKKzgyNDgzIDZjZmU3YjkwNDY0OWEwNzNjMjBjODM2NDZjMDQ0ZmRmZGI1NjE3N2IgbGVnYWN5LXRydW5rCis4MjQ4NCA1ZDgzNGZjZGY5ODBjZGZhMWZhZDA0YmJlYzEzYmUzNDg5MzVmOGRmIHB5M2sKKzgyNDg1IDIzM2M4ZGFiOGZmYTlmNzEwNTI5YjA2NzFmYTUwZWZlZmQ1NjQzMGQgcHkzaworODI0ODYgYWM4MjNlNzE2ZDU3MTdlOGNjYzBlMTAyZjE2N2EzZGI4Njc0Y2YxNyByZWxlYXNlMjYtbWFpbnQKKzgyNDg3IGJiMjExYTJkZGFiZDVmMGI4NjJjYjhjZTJiZjc1ODRkNWEwZmY0MDUgcHkzaworODI0ODggNTVlZGY3OWFkODI3N2YzOTljNDdkMDllMzE0NTNlNjJlNDdmNjMyNyBweTNrCis4MjQ4OSBkMzVmOGU1YjQxOTdhOGQ3YTE1MDRmZjQ3NGRmMmY5ZThkMTUxMzAxIGxlZ2FjeS10cnVuaworODI0OTAgNDBmMTliMGJmYTYxYTU2YjQxNDBkMWNmNjVhYzAyZWI2Y2M3ZDEwNSBsZWdhY3ktdHJ1bmsKKzgyNDkxIDZhY2IyNTM1NmQyZjFhNjlkZjE0NDgxZDRmNGQ4NTVhMTk5NDkyN2UgbGVnYWN5LXRydW5rCis4MjQ5MiBiZThlMWE2ZWJmN2FiZTc1YTM4MTRjNDJkMzI5MDNiODliZWNmODg2IGxlZ2FjeS10cnVuaworODI0OTMgNGNhNWQwYWVhNDFkMzYwOWNmNDY2YmZlODM1OTExMmZmZjI1YTc2MyBsZWdhY3ktdHJ1bmsKKzgyNDk0IDhiYjkzMjg4ZGI2ZDY4ZTljMThhODVjYWI5NWVkYjJlMDNkMTUyYjUgcmVsZWFzZTI2LW1haW50Cis4MjQ5NSAyOTExNmIyZmNmZmU5MjgxMzcxNjRlMjc1ODU4ZmIzYzY5MDZkZGQ3IHB5M2sKKzgyNDk2IDcxODQ0MjFmODNiNTY0ZmFiNTlmZTJmYjMwYjQyMjc2NmFhMDJjNDAgcmVsZWFzZTMxLW1haW50Cis4MjQ5NyBiM2I5MTJkNDUzYTU4MmU0MWRmZmZlNzFhOTE0ZTFjZmRlN2JiNGY3IGxlZ2FjeS10cnVuaworODI0OTggOTljODRhNTFmNTc2NWJiZWJiZmY3NTA4ZmFmYzVmNGUwMWE1NDBhZSBsZWdhY3ktdHJ1bmsKKzgyNDk5IDJkNWY1MTUwZGNlMjRkYTdjYjY4NmJlY2NlZTAyYjI5NzU1ODNhMDcgbGVnYWN5LXRydW5rCis4MjUwMCA4MGM4YjQzNDEzMTJhMzM5YTAwZjM3NjMxYzM4NTUwMDc4NzhkN2NkIGxlZ2FjeS10cnVuaworODI1MDEgNTRmZGNjMGY0YmFjZjM3NDg0ZGJiY2NmMmQ3YWVlYzJiYzgyYTcxOCBsZWdhY3ktdHJ1bmsKKzgyNTAyIDIxNDU1OTNkMTA4ZGU2MmViZjc3MDk4N2E0YWMyYTU3ZDI2OGM5ZDEgbGVnYWN5LXRydW5rCis4MjUwMyA3ZjdkODIzNDAyYzY5YWU2MjMyYWUyNjA5M2NkNDgyYTRmMzU3ZjNiIHJlbGVhc2UyNy1tYWludAorODI1MDQgM2Y0NmY4YTlkYjU0OTUxOTMzOWZiOWQ1OThiNGJiMGZjZmRhYmQyMyBsZWdhY3ktdHJ1bmsKKzgyNTA2IDc2ZDkwODQzZGJhNjEzYzUwMTM4MWY1NjM1YjVhZWQ2YWY0NDFkZjYgcmVsZWFzZTI3LW1haW50Cis4MjUwNyAzNmQwMWMwMTdiOWJlZWY5MTdmNWJiZTQ4MDc4NTEyZTBlN2Y0OGQwIHB5M2sKKzgyNTA4IDE5NGI2ZTYyYmU5NTBkMGNjOThlYTVjYmE1ZWMyMzY1NmQwNTBiMzEgcmVsZWFzZTI3LW1haW50Cis4MjUxMCAyNjI1MjlkMWMzMTVjZDE5ZTlkNjVkMTA0MWRiZTdlNDJkYzlmOThhIHB5M2sKKzgyNTExIDJhZWU4MjllZGZlMjgwMjI4YmNmOThhOWJkZmUzYTJkZTFiOWI5ZDYgcmVsZWFzZTMxLW1haW50Cis4MjUxMiBkNzZkMGVlYjIzY2FiODQzYWJjNjM3YWE5NDIzYWYwZjRmZjIxYzY2IHJlbGVhc2UzMS1tYWludAorODI1MTMgOTc2YWE0YThiY2YzMDdhYmI1MmVjMDBlMzMxMmM5YTJiMTJiZTg4ZCByZWxlYXNlMjctbWFpbnQKKzgyNTE0IGU0MmJhZjY3OGQxNDQwMDYyMDIyYWFlOThlODZkNzYzZjJlOWFhNGUgcHkzaworODI1MTUgZmU0NmE4ZGJhZjY4Y2E3NDRkZjZhYWQ5MTY2YzkzZTU4YTY2ZjMxOSBweTNrCis4MjUxNiAxNzg0NTVhMmYxYWE1YmJkOTYwMGEwYWYxZjY1YjI5ZWNkMDJmZDhmIHB5M2sKKzgyNTE3IDMxYTY4NTRmNzgxMzk5MTlmOTIxZTRiYzg2NmE4OTM4NGVlYTcyNGQgcHkzaworODI1MTggMzRkODI3MjQ5Y2UwYmMyOThmYjllM2QyYzBjODJjZjdhNWJhZGMxNyBweTNrCis4MjUxOSBmYTcxNTEyYTc0ZjkxNGQ2OTc2MGU5MDM3YjgwZmIxYWRmYmMzNDZmIHB5M2sKKzgyNTIwIDZjM2M1NDNlZGU4YzQ5N2VlZWY0ZjcyYzBlN2MwMGIyYTkzZGY5NDcgcHkzaworODI1MjEgMjY3NGQzYmRkYjE4MWU4ZTMzYzY3YzBjNzVhYmE3NjVmNWNkMmY4OCBweTNrCis4MjUyMiAzNGYwMTViY2E1NGVkYjMzMzkxNjRmNzYzNzY3YzZhMGE0OGZiZDE5IHB5M2sKKzgyNTIzIDMyNjgyYjI1M2ZmYzgxN2UxNmRhOWE2ZTEyMTVhZjNhZmVjODAxY2IgcHkzaworODI1MjQgNGMzMGE2ZjQwZTY4NGU2Mzg1MzgzZDk3ZmU3Y2I1ZGZkZmQ0ZjEyZSBweTNrCis4MjUyNiA0YjkzNDgwM2NkMzQxNDI0MzE0ZGFkODcwYzJmOGZjMGQ4NmY2MjM1IHB5M2sKKzgyNTI3IDEzNTU3NTk0ZTIwYjdhZDA4NjQ3NDkxMDFiY2NmOGMzNzUyYWU0ODYgcHkzaworODI1MjggYjY3ZjcyMDk5OGE4ODAxYThhZDhiNzRjYmFhODNlMmFmYjA3ODFkNSByZWxlYXNlMzEtbWFpbnQKKzgyNTI5IDBmNjU0OGE4Njc2OGIzMjgxMDYzMjFiODg0ODkzY2VkMzY4NDBhMmYgcmVsZWFzZTI3LW1haW50Cis4MjUzMiBlY2Q3MWI2MTI3ZTQyNjc4ZGMxYTJiMWY1NzFmNjQxY2VkMGEyOGMzIHJlbGVhc2UyNy1tYWludAorODI1MzMgMzQzOTAzMTE4Y2I1YmI2NzFlMTY5YzQ1MWJlYzQ5OWM2ZmE1MGU3NSBweTNrCis4MjUzNCAxMjRhNzZhZTdhNzBlNzU3MGQ5NDIzZWQ3YTY1ZjZkNDk0OWI5YzRmIHJlbGVhc2UyNi1tYWludAorODI1MzUgZjA2OTFiNGEzODNiODJhZWU4NTNhMTNhZjczOTk2NGZhZTg1ZGMzOCBweTNrCis4MjUzNiAzZmNlNmNkYjQ3MzM3NzExNjk1MzgzMTkzYjQ3NGRmOTRlYzdhOGM1IHJlbGVhc2UzMS1tYWludAorODI1MzcgMWVhZjRiYmU0YjFjMWMxOGI5MWNlY2U5ZDk5YzQ2NjhiYTRmM2Q4YiBweTNrCis4MjUzOCA2MWNhY2VjY2Y4MDU4MTM1M2I4NGQ3M2MwZGFhMTA5OTE2YTFhYmUxIHB5M2sKKzgyNTM5IDE4MjgyMDM5YzVjOWMwMDZkYzVmZDVmM2YwNjIxZmExMTBiMzFkOTYgcmVsZWFzZTMxLW1haW50Cis4MjU0MCA5MzkzMjYxOTk2Y2VlMjMwYzY1Mjg1YWRkN2UzMGZhNWY3YTkwNmM2IHB5M2sKKzgyNTQxIDllMzU0ZWEzODJjY2U3Y2IwMGNlZjViZTJiZWRlMGNmOTljMzlmMzEgcHkzaworODI1NDIgNzY3YjRjNTdhZWE0ZDliZDdhNDBmNmZmM2E5YzU2YThjMDk2ZDZkOCBweTNrCis4MjU0MyAzODMwMzllZjI2YTBlMDllNTE2MGY2YTk0ODRjMjdlZDE5MDM0MmI1IHJlbGVhc2UyNy1tYWludAorODI1NDQgM2FlOTEzYTljZGE5MGVhM2UyNWQ5NzlkMjc1NDRmOTI0MTY2MWYwNiByZWxlYXNlMzEtbWFpbnQKKzgyNTQ1IGE2M2Y2YmFiYTZiNTRkZTk4Nzg4OTM0Y2QzOGZkMWQxMTBlZjI5MWMgcmVsZWFzZTI3LW1haW50Cis4MjU0NiBiZTY2MmQxMjQzODU5ZWQ0MzdjMDg2OWI2NmQzYjc5NzlhYmY4MWM5IHJlbGVhc2UyNi1tYWludAorODI1NDcgMzYxNDMxYzRkMzQ0YzQ0YWNmNmU2ZWRjZTA3ZTIwMDQ3NjBiZjU1OCBweTNrCis4MjU0OCA3Y2U2ZTM2NGUxMTgzMDY3ZTdjYTgzNzlmYWQyNjgxZjQ2M2E5MmNhIHJlbGVhc2UyNy1tYWludAorODI1NDkgM2IxNTQ4NjYwOGYwNWJlY2QxNGM3NjA1NGM1ZDk5YmE0NTQ4MjY4YSByZWxlYXNlMzEtbWFpbnQKKzgyNTUwIGIwNzQzZDUyYjZhMzE3YjI5MWY3NTNkNWViYjczNTdhYzFkODUyZjYgcHkzaworODI1NTEgMzQzY2Y1YTA4ZmYwMGYwNzIzN2MxOTA5NWYzNGIxOTRlNzZjNDJjMiBweTNrCis4MjU1MiBjNmYxNmI4Y2I4NThkYjk1OGIxODRiZDZkNDUyMjIxMGE3ZmEwNTZiIHB5M2sKKzgyNTUzIGQyODMwMDkxMjM3Y2VhM2NjMjM1YTZkMDUxZmUwMzJjMzEwMTQwZWMgcHkzaworODI1NTQgNjkyYjc5ODljZDkyMDM2OTA1MGU3NWJiNmFkMGI1NWIzY2JlY2VjZCByZWxlYXNlMzEtbWFpbnQKKzgyNTU1IGZiMzYwYzA3OTA1OTc2YjFkMGU3NzZmY2M2ZDY5YTYyOTE3NDgyYjQgcHkzaworODI1NTYgM2FhMjI0Mjg1ODJhMzhhMjcxYjllYWVlNmMzNGExYzMyN2UxZmYwMCByZWxlYXNlMzEtbWFpbnQKKzgyNTU3IDgzN2UzY2QzZDA4MzQ2MzNkZWIxOWZmM2VkYTllNjE2MWJmNWYxZTkgcHkzaworODI1NTggZDg4MGMxMTQzMTc1NjdiYzg5OWNlZTY4NGU4YjM1N2FmYjNmZGUxOSBweTNrCis4MjU1OSBjMWEyM2E1NDBhMjlkZjYyNmM4ZDU0N2Y4YTgxMGM5NDhkMTZhNTFmIHB5M2sKKzgyNTYwIGZlNTIxN2E4YWZmYmRjMGY0YWM3NjgwNzRkOWFhZjJjYjY2ZTkxMjggcHkzaworODI1NjEgNDZhYmRlMDcxZmZmY2UwMTMyY2QzYzg3NzljYjA5ZjZlYzBkMmE1ZSBweTNrCis4MjU2MyBhMWM0NTYzMTdiN2MzYTIzNjhlNmU4MmIzYTFkNzdlZDBlYzMxZjAyIHJlbGVhc2UyNy1tYWludAorODI1NjcgN2ZmZDJhNDQ5NDJjZjY1NjI3OGQwNGZkOWQyNjdiMWVmNzQ5YWU2NyBweTNrCis4MjU3MCBkY2MyZThiZjY0Y2ZmNjFmZGJjOTg3NzY1OTI2YTRhNTY2YTUzZjM3IHB5M2sKKzgyNTcxIDAxNDUwMTIwYzBkZDE4ZDQ4N2IxZDNiNGQ1ZDhkNDIzMDhmYTY1MzkgcmVsZWFzZTI3LW1haW50Cis4MjU3MiBlMWY0OGViMDE0YzcwNDZhZWUxNmZmOWNlMGNkNTZmNzA2ODE0MjgyIHJlbGVhc2UzMS1tYWludAorODI1NzMgY2Y0ZjdmOThmMTllNzJiYzFjYjZmMWVjYjg0MTRhMTE3N2Q5ZDhmNyBweTNrCis4MjU3NCBlODRkNTE2NDQxNDQ2MGEzNmZmZjc4MGMyN2Y3MzI0ODU5NjEyYjY3IHJlbGVhc2UyNy1tYWludAorODI1NzUgYzgxZmMxZmZlOTQ2NzAzYzc5MWVmYmZjMGZkMWVjMGNjM2M5NmYwMCByZWxlYXNlMzEtbWFpbnQKKzgyNTc2IDcyNjQ4M2Q5N2I1YzA5MzZmODBmZWZjZDg2NzIwM2Y5NWQyN2NmNjcgcHkzaworODI1NzcgYTdjOGI0YTY2NzhiZjEwMjEzMDBlYTcwNmQzZjg5MTA0MmNiMTc3NyBweTNrCis4MjU3OCAzNmQ1ZTJmNWQ2MDA0Mzk1NGExNTVkMDQ2ZTMxOTcyYWU1NWY5YWRjIHB5M2sKKzgyNTc5IDhlZDdkMTExYjJjOTdmZWQ2MGU2YWM0Mjg0MWZlMDUyM2RkMjU0NzYgcmVsZWFzZTMxLW1haW50Cis4MjU4MSA3MDU4NjlkMWJkZjBmZGEyMTFmMDk5YzFkNDI1OTY1MmY0YWQzZjUwIHJlbGVhc2UyNy1tYWludAorODI1ODUgNDAwMWQ0NThmMGIyMGNjN2YzYTE0ZGJkOGNlYWM5YzM3ZTA4Yjc4MyBweTNrCis4MjU4NiBlZTllZTJmOWZlYjljY2ZjMGI2N2JiMTZmMTBmMWMyN2MwMjg5ODA4IHJlbGVhc2UyNy1tYWludAorODI1ODcgOWQ1ZmU5MzYxZGUyMWRlNjhjYmZmMzdiOTYzYzJhYjkyM2M4ZTZlMyBweTNrCis4MjU4OCA2ODBiZjZiOGFiODI0MGE5NmVlZTliNDNjNGYxZTBmMzU1N2I4YjE3IHJlbGVhc2UyNy1tYWludAorODI1ODkgNmVjNTcyMmEwN2E1ZjJhYmU4YTc2Y2ZkNzc5MDM2ZThlYzE2YThiOSBweTNrCis4MjU5MSBiNmZlZTU1ZmFhMWJiYmM4MDg2YjZiOTJmOWY3OGQwN2E5ZTRjNjY5IHB5M2sKKzgyNTkyIDNiNzNmYjgwODA3YWExYmMyZmUwZjk4ZDgxOGJlYTM0MjZkZWFjNGYgcmVsZWFzZTI3LW1haW50Cis4MjU5MyA4N2NkYWZlM2JkNmM3MGEzNjJjYmRmMjllZWU5NGJkMTBmNDEyYmFkIHB5M2sKKzgyNTk0IDhiYmYyNGU1MWNjZmFhZGEzZDcyZjkwYTRmYmNhNDZkNGZmZTJiZjQgcHkzaworODI1OTUgNTA5N2IxYjQ5NjAxMmUxZTM0MGY5ZGI2NjBmZDVlMGZkZjkzODExZCBweTNrCis4MjU5NiBhMDdlZjVlYWI5MGJiMjViMTA0ZTY1ODVkYWEwZjFiNzZmMzMzOTQzIHJlbGVhc2UyNy1tYWludAorODI1OTcgNGQyOTFhZDA3ODkxNDlmYzExZDAxNjI1NWFmYWViOTgwNTc5MGIxZSBweTNrCis4MjU5OCAzZGMyMTkwNzM4NzU3NGU3MzhhYzdmMjNlNDNjYTVjOGUxZDQ5YTFkIHJlbGVhc2UzMS1tYWludAorODI1OTkgOTE0NTdiMjAxNGU0MGI2MTkxNjIwZTllNzUxZWNiMjRhY2NiYzU2OSBweTNrCis4MjYwMCA4NzBiNmI0NTVlZjA1ZDFiNTNhMzMwOTM4ZjgwYmM3NjY1NTkzY2U1IHB5M2sKKzgyNjAxIDFmMjgxNGViNGQxZGQxYjFhNjcxNDMzOGQ4M2ZlMTFhNmU3MzRlYTMgcHkzaworODI2MDIgODY4OTA0NDZhNDdiY2Y1Mjg0YmRmZjNhMmRhMTkxYmUyNjEwNTA1ZCByZWxlYXNlMzEtbWFpbnQKKzgyNjAzIDM5YzdkNTRmMjg0OGMwZDFmYTJlMzAwOGY3NGJlOWY1MDg2ZDllMjYgcmVsZWFzZTI3LW1haW50Cis4MjYwNCAxZjM3ZDA4MmE5YWFmODAzN2UwM2Y2YjMwNWRjNzhlZDEwOWNiZWJiIHB5M2sKKzgyNjA3IGYxYTQxNDdiM2MwMjNjY2VhN2M2ZGY4ZmNjNjEzMGE5ZDM5MDcxNDUgcHkzaworODI2MDggMjM5OWUwNDUxZDBkZWM4NjYwMWYzNGMxZmJiY2UzMWVlMjhhMGFiNyByZWxlYXNlMjctbWFpbnQKKzgyNjA5IGQzNmRjMzdjNjdmODg3MDYzZWRlZmEzNzE0YzA4MGZjZmE5NjQwMGQgcmVsZWFzZTI2LW1haW50Cis4MjYwOSA3NGIwZWI3NjVhNTA0OWIyNTNlMWNjMzUxZGE4ZmYzOWUzMDgyYzY2IHJlbGVhc2UyNy1tYWludAorODI2MDkgMDcyOGIyOTVmNTNiZDZhM2Q3MGY1ZjVjNzI1YTg1NWI4ZjNhZjIyOSBweTNrCis4MjYxMCAyMDJmMzFkNDAzODljZTNmNjU5ZmIxNTYzMDhlODJjZWUwMDM4MDdkIHB5M2sKKzgyNjExIDA2MThjNjIzMWExZjE5MjcxNjU5OWNkNjAyZmY0YmEwMDIyMmZlOWYgcHkzay1kdG9hCis4MjYxMiBlMTJhZWNkYzMzMmM3ODc3OTZkZjI5MzAzY2ZmNjFjZjExZDc1Yjg1IHB5M2stZHRvYQorODI2MTMgNGZlNDkzZDk5ZGNjMWMyMTdiY2M1MjdiMGYzNjNmYmMwMGRlZGRjYyByZWxlYXNlMzEtbWFpbnQKKzgyNjE0IDcwYjAzODhmOWQzZjUyNTY1YTg1ODkwY2FhYzNmYjk0NGUzMGUyYTQgcHkzay1kdG9hCis4MjYxNSAzZWE2ZjY5ZGIyNDI2MTk4MjRiMDhiYTgyMmI3ZmRlZTIwY2QyZjkxIHB5M2sKKzgyNjE3IDU4MTJkZDQ0ODA3YWY5NjUxN2VmMmYzYWY4MTFjMWFkNGQ3YzgzYTMgcHkzaworODI2MTggZDJiMTY4OWEzMzgxZWM2NTJkN2M0ZWM4NTIzYzkyNzZhYjQ4ZGZhZiByZWxlYXNlMzEtbWFpbnQKKzgyNjIwIDA1NjJmMmUwNTI4ZDEyZGJkMmUyNTRhZjA0ZDQyMGJmZDA5OTg2NGQgcmVsZWFzZTI3LW1haW50Cis4MjYyMSA0M2FiYTA5ZTg5NDY5MzZlZDUzZTJiYWI4MmFiNjhkZWI5OGEyMWI4IHJlbGVhc2UzMS1tYWludAorODI2MjMgOTEyYWIyZmI0M2Y1OGIwMTI5ODgzOTM0YWJkYmY0NjdkMDc3MGExYyByZWxlYXNlMjctbWFpbnQKKzgyNjI0IGY2NDFiZDU0NmRlNDEyOGNkNzljZTc5MzIwN2QyMzAwYjRlZjg3MDAgcHkzaworODI2MjUgZTY1NTg0OWU3OWM2YzgyYTlkNDk3Yjc4YzA2YjA0MzFhYjM5MjUxZiBweTNrCis4MjYyNiA4NzU1NWY0NWNkNmJlNTg2N2Q4MmQ5ODI2Njk0ZTJhNGViYmRjN2RhIHB5M2sKKzgyNjI4IDc0YjJjYmRhOWJkYTQ0N2Y5OTc4MzgxMjM1NTkzOTkxNTgxMzcwZDkgcHkzaworODI2MjkgY2NmOGU2MDIwY2YzNGI1ZjVlYzg4ZGQ1ZjI2OGIxMzM3NDZhZjEwZCBweTNrCis4MjYzMCBmNjI2NmM0NTkxNTYzMDZjOWJhYmQ1ZmQ4ZjMyZDc3NmMzZDEwYzBhIHB5M2sKKzgyNjMxIGU3ZGE5NjhlM2U1YTBkYTY0YmFkOWRlZDlmNGFmNWEyMDQ2ODgzNDEgcmVsZWFzZTI3LW1haW50Cis4MjYzMiA1ZjNlMTg2YmVmMGYwODM1M2I3MmFkMzk0MDk5YTFjYjJjNGY2NjVlIHB5M2sKKzgyNjMzIDM0ZTNkYmQ0N2U0ZmEzZWQwYjZmNjU0YTJjZWQ0MTM5Y2Q3YTUzMWMgcHkzaworODI2MzQgOTQ2NDY0ZmQ2OTIxMGQ3MGI0YWM1ZGRmNjc5ZTI3OWZhYWZiNWVlMiByZWxlYXNlMjctbWFpbnQKKzgyNjM1IDU1M2YxMGIwMzdkOWVlMjMzYmQ1MWFjMGM4MzkxOWNjN2E1ZjhjNWIgcmVsZWFzZTI3LW1haW50Cis4MjYzNiAzODRmNzNhMTA0ZTk0ZTEwZDc5ZTljMTkzZTdmZDBlMmYyYzg0ODg0IHB5M2sKKzgyNjM3IDM4MmRjYjBjNjA3M2ExNDY4YmY0NzBiMjJmNzJjZmUwNzRlZTY0OTQgcHkzaworODI2MzggNTVhMDI0ZjUxNTI0YmZkMDM3MTg4ZDYxZjhhZWViYmYyMzIxZjVhNCByZWxlYXNlMzEtbWFpbnQKKzgyNjM5IDhjNmIzZGM2NTJmYjkyMzIyYThkMzRmNmE2MzU0MWIzZTNkMzI2NDkgcmVsZWFzZTMxLW1haW50Cis4MjY0MCBhMDA4MmE3NGQxMjVhMmU4NWY4Y2QwNWE1M2IxNjEwNjZiYWRiNTU2IHJlbGVhc2UyNy1tYWludAorODI2NDIgMDQwNjc5MDg3ZDAzNTJiNTY1MTNjZTUyOTQyM2MyOTIwYzIyNjYxOSBweTNrCis4MjY0NCBjYTA1MzcxY2ZmMTBhMmY5ZDBmMmEwM2I1MTM4NDQ4NDg4Njg3MWEwIHB5M2sKKzgyNjQ1IGY4NDVlZDFkODlkNWJiOGMwMzBhOGExNzEwY2Q4MGI1MWEyYjU4MWIgcmVsZWFzZTMxLW1haW50Cis4MjY0NiBjYTBhMzMwMWE3ZWExYmFhYmFmNWMwMmRjNjUzYjI3ZmI4OWZiMzRhIHB5M2sKKzgyNjQ3IDEwZTZhNTQzMGI3OTQ0YjZiZWJmMTUzZTFkNmZhYTNhNDA1YjgwOTAgcHkzaworODI2NDggYzczMDViYTg0NjE5N2I5MzViZmVkYTA1ZDk0OGVjODVmNjJhMTE5NiByZWxlYXNlMjctbWFpbnQKKzgyNjQ5IGQxNTZmN2IzOWMzYzM0MzIzZmFmOTQ3YjlmYmYyMDM2ZjgxODY1NzEgcHkzaworODI2NTAgNWJjN2RiZDMxZDFiNDk0NmMzOTVkYzYzMjBjZDRlYTFlNjMwZWJjNCBweTNrCis4MjY1MSBiMDQ0NjI1MzIyZTMxNmM2NDg0YTUzMjYxZGZkYjNlYjRhZmUwYWYyIHJlbGVhc2UzMS1tYWludAorODI2NTIgYTYzMThkYWZiOGViNWMyZDgxOWZkNzA4MjJkYmViNWU1ZmY3MGZlZiByZWxlYXNlMjctbWFpbnQKKzgyNjUzIDNkOGE3ZjcwMWNiMWMyNTM3ZjU4MWExNzgwYTEyNmVmZjY1NTJkNjkgcmVsZWFzZTI2LW1haW50Cis4MjY1NCAwOWY1ZmQwMTNjMGJlMmZlN2JiMGY0OTQ2NGFlMzFlNzI2NjM0YTk3IHB5M2sKKzgyNjU1IDk3NTJiODVjMDExOTJmZTgzOGRhZWQwZWZhYmE1MjcwNmQwMjZjNTEgcmVsZWFzZTMxLW1haW50Cis4MjY1NiA2ZWRjM2UyYTdkYTRhYWRhZmFjZTQ1NjliMGZjN2JiYjM1NTQ0M2IyIHJlbGVhc2UyNy1tYWludAorODI2NTcgOTc0ZjhkOGJjMGQ0NGQxNWQ4YjhkZjUzODUyZWJiYThjZTdkODYwYyByZWxlYXNlMjYtbWFpbnQKKzgyNjU4IGM4YmVjZjYwNmEwYWFjMDk2YmY4NWY0OTZkNjhiOTYzODI4Njc0Y2EgcmVsZWFzZTI3LW1haW50Cis4MjY1OSA3MzBiNzI4ZTVhZWZiNTZjY2ZjNGU5YzJjYzkzNGMyYWQ4NjM4MDU5IHB5M2sKKzgyNjYxIDdhMjE2YmMyYmVkNjUwYjk3MDViNjg4YThjMGI2OGUyNzQzY2Q2ZDkgcHkzaworODI2NjIgMzUyOGM0ZTc4MGJmMDdiOGY5MDJhY2U3NTM3MGQ3Njc4NTdjMGZiZiBweTNrCis4MjY2MyBlNGJkYTRhNTIwY2E3NTI5MmExNzE2MGI1NTQ5ZDNkNjM0MDMwY2ViIHB5M2sKKzgyNjY0IGZmMmQxYjJjZGM2OTEzOWYzMmRlNzg0NzEzZDFiZGYwNWQyOGUyMzEgaW1wb3J0X3VuaWNvZGUKKzgyNjY1IGM2N2Y5OGFkYjhmMzYxY2IxOTM2NzZjOGY1MWM5MTU2ZTkyN2FiMGMgaW1wb3J0X3VuaWNvZGUKKzgyNjY2IDViNjMxODUzNzJkMWYzN2FhNzFkNmYxMmJjYjM0NjczNzdjYzk3YzMgaW1wb3J0X3VuaWNvZGUKKzgyNjY3IDE2ZTM0OGYxNjVmODVkMzRkNmViOGI5NzQ5NTQyZjRkY2UxZWZmYjggaW1wb3J0X3VuaWNvZGUKKzgyNjY4IDQ0YmQ0YWQxZjZkNDJmYWIyMDQ0NTA2NDQ4NTAwZDIzNzAzN2VkM2YgaW1wb3J0X3VuaWNvZGUKKzgyNjY5IDViNmYwM2YzOTFkYWZlMjQ2MGEwYTM5OTg1ODNiNTYyOTdkZTczMTEgaW1wb3J0X3VuaWNvZGUKKzgyNjcwIGU5NjI3OWFjNmQxNDY4YTM0ZDFhN2Y0MzI3MDc1MzhlMGI0MjgxNjAgaW1wb3J0X3VuaWNvZGUKKzgyNjcxIGE5N2Y3NTAzZTUwYzQwNTZmZTMwYmE1ZjQzNDkyNTIwY2RkYzIxYzggaW1wb3J0X3VuaWNvZGUKKzgyNjcyIDYwZmM5NDQ2YWEyZTAzNTM3NmRmYTA3MTEzY2VhNmZmZDZjOTMxY2QgaW1wb3J0X3VuaWNvZGUKKzgyNjczIGMzMGQ4NDgwN2M2MmQwOTVlODRkZGE1ZmQzMjc1MGJkYWEzZWIzNzkgaW1wb3J0X3VuaWNvZGUKKzgyNjc0IGRmZTI2MDIzMWM0OWMxNDI5OGFlMTNiNTE0ZGFlMzA1OGY0NjBhYWYgaW1wb3J0X3VuaWNvZGUKKzgyNjc1IDBjZDk0MTZhMWMxZTY3YjdmNDA5ZTZmMzMzYTdkYjYxMjI1ZGIxNTkgaW1wb3J0X3VuaWNvZGUKKzgyNjc2IGY3MzViYjJiMDZkZTE4NTk4ZGMzMDhhMTk0NDgyMTIzYjMyNjUxYWYgaW1wb3J0X3VuaWNvZGUKKzgyNjc3IGJlYmNiNmFiMDlhNTY1YjEzNzZkZTFhNzBiZDg1OWE1NTFhZjZkMmQgaW1wb3J0X3VuaWNvZGUKKzgyNjc4IGM4NzJlNGZhYTFlNzQyMzkxZWJlMDcyNWZjODMzMzZlZGNiODE5NzAgaW1wb3J0X3VuaWNvZGUKKzgyNjc5IDE0ZGE3YzNlOTIyMzJiMTRjMzhkN2YwMGY1MWE3YzcwYzhhMmUwZGIgaW1wb3J0X3VuaWNvZGUKKzgyNjgwIDA5NTJlMmRmM2M0ZDFiOTg0Y2MwZWRkYjc2NWQ5OGIyMmZiMjgyMjQgaW1wb3J0X3VuaWNvZGUKKzgyNjgxIDc2ZjM2Y2ExMDYxZjQ0ZmE1YTdiOTEzYjY5MjQyNGYzNzk0MWFlZTMgaW1wb3J0X3VuaWNvZGUKKzgyNjgyIDIyYjkzODhkN2MwZWY5MGE3ZTY2MTRjZWU0MDRiZjA1ZDU5ZmVhYzAgaW1wb3J0X3VuaWNvZGUKKzgyNjgzIGU0MjMzZTljODQ2MTIyNjUxZGFjODE1YmU4NDIxNzY0MGM3OTJjNzUgaW1wb3J0X3VuaWNvZGUKKzgyNjg0IGU3NjZmN2JjYjJkNTVjMzQ3NzRkYTMyYmU1Y2Y5YjhlY2EzZGEzNjEgaW1wb3J0X3VuaWNvZGUKKzgyNjg1IDVjYTQxZGVlYmQwZmZhMmVlZjg2MzBkZGE3YjhmY2RkMGY0ZTRmNzUgaW1wb3J0X3VuaWNvZGUKKzgyNjg2IDJlOWZjNTMyZDFkMWJkOWJjODFiMDViOTQ5OTBhMDQxMzlkZTJjNWYgaW1wb3J0X3VuaWNvZGUKKzgyNjg3IGUxZDg2Y2YyY2ZlNDRiZTA5NDUzZjFlYTE5OGJlMGI5MTgyYzRlZmEgaW1wb3J0X3VuaWNvZGUKKzgyNjg4IGUwZmI0OWVjOTQ1Y2NhNTcyNDI5NDY3YTA2ODk1MzYzMzU4YmUyMDcgaW1wb3J0X3VuaWNvZGUKKzgyNjg5IGEyYzdmMjA2MGU1YmRiZDg3Y2ZiYWZkNTQ3NzlmYzU5ZjRiNjNjODUgaW1wb3J0X3VuaWNvZGUKKzgyNjkwIDFjMWZkOTVlMTNiNDJlYmVmYmMyNjgxZjAzMTg3NmUyNDQyNTU4ZTEgaW1wb3J0X3VuaWNvZGUKKzgyNjkxIDBhMzBiNTZjYTNhYzlkZTFiMTVjOGEzNjZmZDBkYzE2ZWViMjA5YWQgaW1wb3J0X3VuaWNvZGUKKzgyNjkyIDM2MGUxYTA4ZTUzYjk0ODBhYTVkY2IzOGUwOTllZGRiYzI5NjNmZjIgaW1wb3J0X3VuaWNvZGUKKzgyNjkzIDYwZmJmYWE3ZDkzZGZkYjE5ZDRkYjEzZjkzMmEyYzFkMDUzZWMzNGUgaW1wb3J0X3VuaWNvZGUKKzgyNjk0IDk1MGI0NzU0YmJlMmFiZmMwYzUwMWJiZjFmNjBiOTI1M2E1ODExOTQgaW1wb3J0X3VuaWNvZGUKKzgyNjk1IGZmZWI4NTEyOGM3ZTg0ODMzMTY5NmI2ZTE0YjIzYTRlYTdmOThlYTkgaW1wb3J0X3VuaWNvZGUKKzgyNjk2IDAxZTRlM2QzNzc0ZDYwNDVjMjk5MjM1ODRjMDhmN2U4NDUyMjg0YzUgaW1wb3J0X3VuaWNvZGUKKzgyNjk3IGU4MWVkM2FkMDY5ZDlhYzJlNWVhOWNjZjg5M2E1ODBhZmQ5MDNjODAgaW1wb3J0X3VuaWNvZGUKKzgyNjk4IDFhZGMyM2RjZTk3MTdjNDg0MDEwMGFkMmUzMzkyZTRjNjM2M2JhMzMgaW1wb3J0X3VuaWNvZGUKKzgyNjk5IDE3N2E4MmVjZmY2NzEwNmFiYmM0YzY3NTY1YzBmNTFjYmU2MDAyNTMgaW1wb3J0X3VuaWNvZGUKKzgyNzAwIDgyNDk3ZjFjMWM1NDE1MjgzYWFjYmViYTAzYjNhY2E3MzRmMDc4MDkgaW1wb3J0X3VuaWNvZGUKKzgyNzAxIDkwY2E0NWQ2NTZjMmQ2NTcwNTVhZTU2N2JmZDVjYjAzNTI0OWY4ZDkgaW1wb3J0X3VuaWNvZGUKKzgyNzAyIDMwYmJjMTg2MGZiYjJlN2JkMDY2NjljNDY2YWU3NzQ4NzRhN2ZkNjIgaW1wb3J0X3VuaWNvZGUKKzgyNzAzIDg2NWQxOGFmZGExNTEwOTkzYmNlYjRkYTIwNmEwNTQyNmY2YzViODcgaW1wb3J0X3VuaWNvZGUKKzgyNzA0IDdhZjIyOWVhMmU2NjVhOWVjMWFlYTZmNzcxYzVlMGYwZGZmZWVlZjQgaW1wb3J0X3VuaWNvZGUKKzgyNzA1IGEyOWNjMzg1MDAyOWY1N2U3MjIzMWFhM2QzNmM2YjNhOWNjODQ4YzggaW1wb3J0X3VuaWNvZGUKKzgyNzA2IGE0MjFiNGI0NWFhNjYyMGYyZDFhNDUxZjViMWY4MmY3MGFmNjhlNjQgaW1wb3J0X3VuaWNvZGUKKzgyNzA3IGE3YmI4NGY4NDk4YTFmNmJjNTViY2QxYzJkYTNjNmUxYjA1NTM3MmIgaW1wb3J0X3VuaWNvZGUKKzgyNzA4IGFmN2VjMTY5MTA0N2JjYzMyYTA2MjU3MDhmYjEyZWUzNTkxZmI5ZDggaW1wb3J0X3VuaWNvZGUKKzgyNzA5IDY4YjBlNzJlZjRmMjIxZDBiNWU2YTNiZWE3NTJhNGJjYzg5NjZhZDggaW1wb3J0X3VuaWNvZGUKKzgyNzEwIDhlNzBhNWVjMWFjYTYyOTU0OGU5YzI3ZjExNzMwNWRmOWM4OWNlZTQgaW1wb3J0X3VuaWNvZGUKKzgyNzExIDZkY2E5MzcwMmU2YmQwMmRkYzdlYWI0MmNhMWI5N2I4MTc3MGNmZTggaW1wb3J0X3VuaWNvZGUKKzgyNzEyIDc2YzM1ZDhhMjZhMDEyMGQ4ZDBiNzkzODI0ZjlkODk4ZTBlY2EzZDkgaW1wb3J0X3VuaWNvZGUKKzgyNzEzIGE3Y2Y5MDNiMTdkY2IxZTI1NmY3Mjc3ZWQ1OGU2YzViMjhiZGU0ODAgaW1wb3J0X3VuaWNvZGUKKzgyNzE0IDc4ZTZhNmZiZDM2MjFiZDhmNzEwMzQ5NzMyMWY0ODU3NzFhMjlmOGMgaW1wb3J0X3VuaWNvZGUKKzgyNzE1IGFiMTdiMGMyMmJhMWQyNGUwNTRkYjkzOTRkNTBjZmY3MWI5NjJlMGMgaW1wb3J0X3VuaWNvZGUKKzgyNzE2IDA5NWIyOTcyYzQ0ZjExMjM2YzBlMjkzMDNjMjM3ZDAwNGVkOWM1MGUgaW1wb3J0X3VuaWNvZGUKKzgyNzE3IDM2ZjZlZDA2NTFlMTM0MGViZjgxZTQ5ZDUwYjkyMjBmOWYxZTRjOWEgaW1wb3J0X3VuaWNvZGUKKzgyNzE4IDg1MmU0YTc1ZTE1NjkwNGFlNDdkZjliZjViZWRmZjZkNWM0NmYxNzUgaW1wb3J0X3VuaWNvZGUKKzgyNzE5IGYwZWY4M2Q5MTM1NDViZGUzMDljNGI0YTAwZmRjMDgxMzRiMmNlYTggaW1wb3J0X3VuaWNvZGUKKzgyNzIwIGVjYmE4ZmE1Yzc0M2VlMGEyMzk2NTU5MTY4OTIwMmE1ODlkNjEzNzAgaW1wb3J0X3VuaWNvZGUKKzgyNzIxIDhkY2Y4NDFmMWJkNDA1ZmVjYmVmYjA0NmFkNGI0MjUzMzE4NjUwYjAgaW1wb3J0X3VuaWNvZGUKKzgyNzIyIGJjMGI0YzkxOGRkYjRhN2QzZTg5MmNlNDk4NGNlNzk1MGEwMzA0ZGUgaW1wb3J0X3VuaWNvZGUKKzgyNzIzIDBlNzgyYTZlNmJiNzZlM2VkYTc2YTdhZDJmY2YwOGFiZTVlYWRmNzEgcHkzaworODI3MjQgYzdmMzYxNzAyOGE4Mzk5MTdiNTEyY2E1YmE1N2JmYjg2ZGU4ZDJkMiBweTNrCis4MjcyNSBhMjE3NzI2MmY2YjdlNWE3NDRmNzQyYjQwZGI3N2VkOTEzMDhjZGE1IHJlbGVhc2UyNy1tYWludAorODI3MjYgMDhlZWU4OWFmN2I5OWQxM2EwNTk4ZGY1OTI3NzhlOWE5NjIzMjhhMyByZWxlYXNlMjYtbWFpbnQKKzgyNzI3IDhjNjE0YmM3NjZiNDUzOTlmMzExZGUwYjMyZWFlMjgxODA2YTBhNjEgcmVsZWFzZTI2LW1haW50Cis4MjcyOCAwZDEyMjAxNzVmMjllZDAxZjAwOTY2ZDVjYWE2Y2E5ZDQ3YzI3MmMzIHJlbGVhc2UyNi1tYWludAorODI3MjkgOGFhYWYwMWZjZjAzZWNhNDQxYWI4NGU5ZjM4ZDNiMWUwYTBhZmU2YyByZWxlYXNlMjYtbWFpbnQKKzgyNzMwIGYzYmZkZmYyMTQ2YWE0ZTEwMzIzYTUwZmNjNGE5N2Y5OWNlMzczYjEgcHkzaworODI3MzEgY2ZjZjZmNjNlMGI0YWMwNWI1MmEwOTE1MTBlNWNkNWZlYTZhMWZmNSBweTNrCis4MjczMiA1ODVjNzBkYzFlYWE0ZjdlZWZiZmZiMWE3ZmIzMWQyZTA3Mzg5ZGM3IHJlbGVhc2UyNy1tYWludAorODI3MzMgZGIyOTNmZDc1MjhiOTRjMDE3Y2RjMmMwNmI1NWQzNzM3ZjdhMzY2ZiByZWxlYXNlMzEtbWFpbnQKKzgyNzM0IDUyM2FmZmQ0ZDQ3MjkzNzA5MDdjZWYzNTlkMGM1NDlkZjFjMzkyYjMgcmVsZWFzZTI3LW1haW50Cis4MjczNSA0M2EwZmMxODRhNTgxNzQ5MTJlYWExNGNjZWJmZDdhZjViZmYzZGUyIHB5M2sKKzgyNzM2IDQ3ZDQ5YjQwNjIwM2EwZjJhOTdmMTVlMWUwNjhhMjhmMzc2NDA1NGEgcmVsZWFzZTI3LW1haW50Cis4MjczNyBlMGRlZGQyZGNmYTgxZTAxMWE5NjcxZDVkNmNmZDA3YzBjNGJkNzBiIHB5M2sKKzgyNzM4IDdlOTRjMDNiYjg0ZTE1M2VjMWYxMWU0YTdkYTBjMjQ3MzAxNDZlNGEgcmVsZWFzZTI3LW1haW50Cis4MjczOSAxMGMwNjMwZjFjMTQzYTU2NzUzYzNjNDBmNWYwMGY4ZWYyOWM1ZmQ5IHB5M2sKKzgyNzQwIDA4OWZkNzEwZGNhODg0OTE1OWUzZWNjNTE1M2JhMjc3YWY4NTRkNTMgcmVsZWFzZTI2LW1haW50Cis4Mjc0MSA3ZDlhYjM1ZTQzYmM2NmFmOWM0MmQ5ZWQ3ODhiZGVkMzAyNjc5YTU0IHB5M2sKKzgyNzQyIDgxNWFlN2YzNzMyYmVlYmQxYTZlMWNhMzEyYTZhNWViMzBmMjJmMTQgcmVsZWFzZTI3LW1haW50Cis4Mjc0MyA1YWU3ZGY2YzkzZWQ5OWI0YmIxNTdhY2U4NjU2MGIzYTg5ZDMyZjYzIHB5M2sKKzgyNzQ0IGUzZjgzZjU2ZGQzY2RlOTM2YzdkMTkwZmYzODk4N2YxOWNiODhhZGUgcHkzaworODI3NDUgZTk3Y2RkNWM1ZTRmYzk5MTU2OTJiODFjNjZlZTMzOTJiNDBmNWIwMyBweTNrCis4Mjc0NiA5MmE5ZGM2NjhjOTUyOWYwMThhNjIwYjQ3MDdiYzA5Y2UxODYxNmMwIHB5M2sKKzgyNzQ3IGQ0MWEzMWY1YmY4MmY2MjRhZjIxOWY5NjlhN2U1NmNhNTM1NTk5NTMgcmVsZWFzZTI3LW1haW50Cis4Mjc0OCA0ZWZmOWMzNWM1NGE3YmI5ODU0ZmUxYjYzMTM0YTVlYzUyZTdhYmZlIHB5M2sKKzgyNzQ5IGZiYTllOTFlODhkY2RmMGM3NDkzNDZiZjY2ZDEwNDE0ZTY1OWZmN2QgcHkzaworODI3NTAgYzcwZDUwZDIxZjg1MWE2YTU3MTQwNjk5ZWYyZGE5ZTdiYWIzY2Y1NCBweTNrCis4Mjc1MSBkZTFiOWZjM2UxZTcyMjBmNDMyZjYwN2I1OGE0NjEzZmFhMWU1NjdmIHJlbGVhc2UzMS1tYWludAorODI3NTIgOGVhNjBhZTE0OTY4ZjM2OWEyOWMzNDIyODk1ZDY5NWM1ODUxNzMyMCByZWxlYXNlMzEtbWFpbnQKKzgyNzUzIGJkMTljNzE3OGYyNDJjMzg0MTQxZjYyMmEzMzA3YWNhMDYxYjE3ZGIgcHkzaworODI3NTQgZjQ3ODFhYTgyYjM3NTBiMWQ0ODlkNjBjMzFiNzZhNDljMzllMDNlMiByZWxlYXNlMzEtbWFpbnQKKzgyNzU1IDUwMjViYTA1NTNiNjMyOWViMTU4ZDQzZWMxNmMyNThjNTlmOTI2ZGQgcmVsZWFzZTMxLW1haW50Cis4Mjc1NiA2MzYxM2M0ZjYzMTdmMDZhMDUxNjVhM2U3MjZmNjEwZDM1MTA4MjA2IHJlbGVhc2UzMS1tYWludAorODI3NTcgNGQyMjJlZTJhMWM4NTQ3NmRjMGQ2Y2VkNWY4MmNmOTFjMGEzZjgyNCBweTNrCis4Mjc1OCA3YjU3Mjg5ZWJlMGQ0ZWY5OTFmNTVmZjFjOTdjOTA0MzgzZTUzY2IxIHB5M2sKKzgyNzU5IDk4M2UyYzBiZjhkY2RlY2RhOTliZjkxMjA3NjFmMjg1YTBjM2M5NTAgcHkzaworODI3NjAgMzVjNTlkMTFhZTEzODMyNzkzYjMwOGI0MWM3NGM5OTVlODRmYTk0NSBweTNrCis4Mjc2MSBiY2I3OWUxYWEwMGY3ZjQ0ZDA4YjZjNzg1NjdhNTUxMzgyZjYzMmY5IHB5M2sKKzgyNzYyIDMzZGU5Y2FmNzA5MDAwMDIyYTk3MmJiYmJkYTUwNmIxMmIwM2I4MDkgcHkzaworODI3NjMgMjU0ZWY1MjA1MTI4YWM2ZDYwMjkxYjZlMjlhNWQwMGM1M2FkNjUzYyBweTNrCis4Mjc2NCA5NDM3ODQ3MGFlMWM5MDc4M2YyMmU3ODg1OTg3MThjM2Q0N2E4MGJjIHB5M2sKKzgyNzY1IGZmMWE4MDM3NjQ4YzRiYzljNTQ4NzU4NzQ5NTA3YTcxYTUxNjAwMGEgcmVsZWFzZTI3LW1haW50Cis4Mjc2NiA4YmUyYjllNDg3MTg3YmRjMjg1N2JmYjgyODE0ZGU4NTgxNmZiOGIxIHB5M2sKKzgyNzY3IGFhYzA5MmVhZjlkMTgyZDE1NmJjMmQ3YTIwMGM5MzZmYTI2ZWJjMTcgcHkzaworODI3NjggMGZiZGMzZmEwMjRiZTU4ZThmMWIxZDg4ODdlZjhkOGU4ZDQ1YjAzYiByZWxlYXNlMzEtbWFpbnQKKzgyNzY5IGRhYjI4NmQyYmE4MmZmYWJjOTkyYTJjMTdkNmJjNzgwYzlkNzI5YTcgcmVsZWFzZTI3LW1haW50Cis4Mjc3MCA0OTg2MWRmYjI3MDE4MDIxMTE1ZjBhMjEwM2UyMzYwYzBiMjE0MmFjIHJlbGVhc2UyNi1tYWludAorODI3NzEgZWQzYmM3YTk2ZmZiNGJhMzdkM2I2MDM5MDI2ZWExYTc2MmU2MDBhMiBweTNrCis4Mjc3MiBhY2Q2Y2NjY2U4MzdiOTM1MTYxMDY0NjE2NmU2ZWRhNzM4MWViNzAyIHJlbGVhc2UzMS1tYWludAorODI3NzMgNDI5ZDBjN2NkYjg1NmRjNTliMjNhMTliZWIxODJjMTcxMjc3YWJiMSByZWxlYXNlMjctbWFpbnQKKzgyNzc0IGFjZWY1ZDY2MDgzMzAwOThjNjZmM2UxY2E4NmI0M2U4YjlhZWY0YzkgcmVsZWFzZTI2LW1haW50Cis4Mjc3NSAwM2Y3M2M0NmY4OWM3Y2E3NDJjODllNWVmNGIwM2RmOWNhYTMxMTUzIHJlbGVhc2UyNy1tYWludAorODI3NzYgMDMwMzZhZmNhNTQ5MWEwMTQ0OTcxNjhlMmIyYTk2MjQyZThjZWU3NyByZWxlYXNlMzEtbWFpbnQKKzgyNzc3IDVlNjBjN2RiMGY1MTBlZGJhMzE2ZmRhOWE4ZmM1YmNlZGYyODIzNmUgcHkzaworODI3NzggMjg3NTVlYjUzZjM4OTQ2MGVkYjBiMmUyYTJkNGZlNmQwNjI2Mjc1NiByZWxlYXNlMjctbWFpbnQKKzgyNzgwIGI1OGI0YWE0NjljNGY4MTc4ZjcyZWZiZjJhM2U3NTQxZmM5ZmZjNWYgcHkzaworODI3ODEgMTYzNjEyNGU1ZmZlZWI2Y2MxMTIyOTUxYWI0YTMzM2Y5ZmQ3MTBjMCByZWxlYXNlMzEtbWFpbnQKKzgyNzgyIDdlMDljNjRkNGE2NGNlMGQyNjQ3MWMyNzlkMDVhNDg2YWE0ZmQwNGEgcmVsZWFzZTI3LW1haW50Cis4Mjc4MyBmNzU1ZDFhYjgwNzQ2ZGI2Y2E1MGVhZjEzMGE2OTNmZTQ2MjU1Mzc1IHJlbGVhc2UyNi1tYWludAorODI3ODQgNTBmNGYxMTNiYmMzZjczMWZiZjAzMjEwZDI5YWNiNWNjMTljNTk5NSBweTNrCis4Mjc4NSBhOTllOGFkYWMwODFkZmNhMjViZjM4ZjVjMWIwYTJiMWUzNDMwNWQ1IHB5M2sKKzgyNzg2IDM2N2Q2MWU2YTcwZjA2OGYxNzViNzQ5OTU4YmZhNWYzOWY1OTg2ZDAgcmVsZWFzZTMxLW1haW50Cis4Mjc4NyA1NTUzM2Q1ODI4YjAzMWE2YWFiNjJmOWU4YzgwNTFkNTI1NWM4YWU2IHJlbGVhc2UyNy1tYWludAorODI3ODggZjBkZDAzYmY2YmM1ZmMwNzdkN2E1NTAxM2RhMDYyNTA0MjM1ZDAyMCByZWxlYXNlMjYtbWFpbnQKKzgyNzg5IDVkYjJlMDdjNDQ1MWZjMmIzOTEyMjkwZTcyYjA0ZmY2YjM2NGFlZDggcHkzaworODI3OTAgYmEwZjZlMTdlYjIyM2MwM2JkYTNhNmFlYmZhZTcwODBlMWIzZjJhOCBweTNrCis4Mjc5MSAwYjA3MWUxZWZkNDE0ZjBiZDQxOWQ4NTkyNWJiZTZmOGI3YTdiZDQzIHJlbGVhc2UyNy1tYWludAorODI3OTIgODFkMDU1N2RmNjQ3YmZmNWQ2MzgyZGY0ZDVmYzBiODQ4Y2FlM2I3OSByZWxlYXNlMzEtbWFpbnQKKzgyNzkzIGY5N2JlNTgwZDhjMTZlYjBmOWFiNjE1MDhmNmFlOTE0ZGMzZDE3YTkgcmVsZWFzZTI3LW1haW50Cis4Mjc5NCBiOTE1MTYyNDI3YWI0ZjZlNzQ5NzY5NDY4NTFlMWY5YWZkMmU5ZDU0IHJlbGVhc2UyNy1tYWludAorODI3OTUgNDI0ZTNmY2ZkM2FkMTFlMDUxNzU0NTQ4OThhMDJiMzY4OTBkMjg3OSByZWxlYXNlMzEtbWFpbnQKKzgyNzk2IGNlOTM1ZTcxYmQwN2U1MThlMmM3N2M0MTliMDE4MDBiY2Y5NTYyNWMgcHkzaworODI3OTcgNDcwN2VkZTRkMTRmZjE0ZTcxYjIzNTQ4OTE1MDMwOWQyMDA3ZjgzZCByZWxlYXNlMjYtbWFpbnQKKzgyNzk4IGM4Yjc3ZWZlOGI1NmU5NzM3NzNlZmY3YzEwZjJhMzhiNzhjMGUzZTAgcHkzaworODI3OTkgMGU2ZmJmNTE4ODUzZmViZmZkNzczY2U0ZjAwZGMzMzBjYTAwZmZkYSBweTNrCis4MjgwMCBlZGFiNTAxZjlkZjhlZmUxODIyMjU2YTFhNGZhNTJlM2Y2ZGI1NjY3IHJlbGVhc2UzMS1tYWludAorODI4MDEgMjk3ZjJjMjhmMTgyOTMzOWY0YThiMWYzYzBkMDhiZGM5ZjkxN2M3NyBweTNrCis4MjgwMiBkNWQ1MTJiODY1YTc1ZDNkYjI0NTgyZjcwYTA2OTUwZWUzOWJkNGYyIHJlbGVhc2UyNy1tYWludAorODI4MDMgNTAxMmZmYWUxOGZhYzZiOTJjYzM3ZWExM2YwNTQ2ZDIwZTVjYTQ2YSByZWxlYXNlMjctbWFpbnQKKzgyODA0IDkwYmYwNjMxYmZiOGVlODcwZGVjN2RiOWFhYTQ5ZDZiYmE4ZGQ4MjQgcHkzaworODI4MDUgNGNiMGU4N2MwN2NhMzZhMWYwZGYxNTkwNDRiNTg0NTRjYTliMmU5MSBweTNrCis4MjgwNiA2MTJlMTI2MzE1MTFiMjI0ZDNiNGQxODA0MGVmYTY4MTAzNzA2ZjcyIHB5M2sKKzgyODA3IGQwOTBmNjI1NGM0NTNkY2U3ZDc0ZGZiMDhlNzc2YzllMmZmNTZjOWUgcmVsZWFzZTI3LW1haW50Cis4MjgwOCAzNjVlZWFiNGEzNTAyNjBhZjdlMTA3NjEyYThmMjY2MGZmYWFlMzE5IHJlbGVhc2UzMS1tYWludAorODI4MDkgZmNmYTdiYmUxODVlYWZjMGE5YjE1N2M2MjlmMTI1YTExYmQ4NDNkZiByZWxlYXNlMzEtbWFpbnQKKzgyODEwIDdmNTc3NTM5NWQzMjhiMGMyMGRmMWNhMGM0MTdlNGEyZjUzODJhZWYgaW1wb3J0X3VuaWNvZGUKKzgyODExIGJlMTNmZjM3NTVlOWZhYjcxNjMxY2M4ZTg3NDNlYmM1NDk2ZDcwNGYgaW1wb3J0X3VuaWNvZGUKKzgyODEyIDgxZjBmMGQ1M2QxMDg0ZTYxNzJhZTI2MDNkZTUwN2VlNzg1NmVkMTIgaW1wb3J0X3VuaWNvZGUKKzgyODEzIGQxMzkxNGVjZDM3MGZmYmI0OTgxMmY1ZWZjN2I2YmEzODQ2NThmM2UgaW1wb3J0X3VuaWNvZGUKKzgyODE0IDE4OWZhOTJkMTVkYzU5NzgyOWU3NWYwNGRiMWQ5ODZiZjM2ZDE5YWMgcHkzaworODI4MTUgYjE0MzhkMjZjMTY3Yjg2MjFkZThjMjI4OWU3MDQxZWNiYTFmMjUxYiByZWxlYXNlMjctbWFpbnQKKzgyODE2IGEzNTJiOTE1NmNlZWNiMjc4ODQ5ODU5OTAzY2QwZDVlNGU1ZDg4N2YgcmVsZWFzZTMxLW1haW50Cis4MjgxNyAwZjRiN2MwN2QxYjM3YjUyMTFjN2MyMzVmMTA5MzQyMGViYzZmNGJjIHB5M2sKKzgyODE4IDUzZTdhZThjYTAzOTE0OGNkNGExMjU2NjhkZDcxYzI4ZjM3YzYzMzQgcHkzaworODI4MTkgZWFjY2YxYTFjYjkwM2I0ZGQ2ODIzZTIxMWY4OTkxNDBhOWZjYzAxZiBweTNrCis4MjgyMCA0YzExZTQxNDBjZWQxZmEzODhkNzRkNmFiZDk0ZmVhMDg4NDQzOTk4IHB5M2sKKzgyODIxIDA2YjM4OTFhNjM5NTM0YmI0ZTQzNTJiY2M3MTJmMTUwMGQ4NzFhZGMgcHkzaworODI4MjIgMWNmNDNjNmU2NTY2YjM2MjlmZjMyYzNiMjg3NDdiYmIxZTdmNmJmNiBweTNrCis4MjgyMyAxMTI5ZDRkZmVlZDZmZTFkMWJmZThjMmRjOTFhN2E5YWRjYjAxNzcwIHJlbGVhc2UyNy1tYWludAorODI4MjQgNDMyOTA4ZDUyMWNlZmVlYjk1NzUyZGJjZjRkNjk4ZTBmMGFiZjE2MCByZWxlYXNlMzEtbWFpbnQKKzgyODI1IDMyZDhiMjJiMGU3YzVlNjI5MGQwZjRlN2NjOTQ3MDdlZjVkNjI5YmIgcHkzaworODI4MjYgNWNhMjJhMWJlM2NkMjE2OGUzMTRhNDk3YmZkOThhMjM0ZmI3MjgxNSBpbXBvcnRfdW5pY29kZQorODI4MjcgMTk0Mzg0YjUzODBlNTI0MzhkMmFiYjRhYTA3MzYwYmE1NzQxMDJmNyBpbXBvcnRfdW5pY29kZQorODI4MjggNGRkOTg1MmRhZTliM2U3MGViOTk0MWEwYWZjZDM0YjdkMDYwZWY4MCBweTNrCis4MjgyOSA3Mzc1MTllZjE2MmU2ZWYyNzY2YTZlYmIxNDZiMDdkNGU2Zjg0MDZiIHJlbGVhc2UzMS1tYWludAorODI4MzAgYWIxMDJhMjI2MDM4M2IxMmRjNTczOTRjMDU1NjgzMGM4ZjY1NjQwOCBweTNrCis4MjgzMSAzZjM3ZTNjY2MxMzEzODc4N2VjYjg3YTM2NzFjMjZlMDljOTgyN2QxIHB5M2sKKzgyODMyIDY1NzZmZDRjMGQyZTMxMThkNDk0ZDBlZGYwZWIyNDExNDQ3YjA5ZjIgcHkzaworODI4MzMgNDliODNiZmNmYThmYmJhM2ZmOTZkNmI1MzZjNzM4ZDg2MmU4ZmViMSByZWxlYXNlMzEtbWFpbnQKKzgyODM0IDg0OWY2ZTIyMGFhMGQyMzEwZjhhNjMzMjYwNTAxMTBiYzkxYzQzMTQgcHkzaworODI4MzUgMzBmNjk1ZWM5NDliZDIyNTUzOGQ0OGExZGNjMzdlZTBiZTI4ZGQ5YSBweTNrCis4MjgzNiA4ZTQyYzdhNWRhYjhkOGZiNjRkYTEwZDJhMDBkZTFjNjhiYzQyMjU2IHJlbGVhc2UzMS1tYWludAorODI4MzcgZjViMThmMjY4ZjU3ZDhlOTYwMmVjZWYyNjBjZDA1YTFiMDFkZTI1NSBweTNrCis4MjgzOCAwYmI0ZGFkODE2MTRiNzlmMjI2ZmQzMmVmZjM4Y2ExMDZjZmZhNGNkIHB5M2sKKzgyODM5IDY2NGEyMGY0YTgzNmM3ODIyY2RiNTYxOTUwZWU5MjYyNjcxNDU0YTcgcHkzaworODI4NDAgN2VhYmE0MTNmZGE0YjhmMjU3NjAyYTA1NmY5MmIxNWUxY2EwYzM5NyByZWxlYXNlMjctbWFpbnQKKzgyODQxIDk0ZjUyOTc2NGMzODczYzY1MWVkNDUxODFlODBiMjY4YmIzNWUxODcgcmVsZWFzZTMxLW1haW50Cis4Mjg0MiBmY2Q0MTIzYWVkOTM0NmM2NzlmZjhlOGVhZTYwZDc2NGNiYjNkY2FjIHB5M2sKKzgyODQzIDYwZmRmMTQ3MDMyY2YxNWY5Nzk2OTFkN2I2Mjg0MzMzNGY2MGQ0MjEgcHkzaworODI4NDQgNjRjYWE3NDhhMjhlYWM5MWQ1YTA1NmViZGViYmVmOTA1MGUxODNmNSByZWxlYXNlMzEtbWFpbnQKKzgyODQ1IDRlZjYzOWY0ZDgxMDBiNDI5MGNkNTVhYzk2Mzk5MTExYTJkZGI2NzUgcmVsZWFzZTI3LW1haW50Cis4Mjg0NiAxZjk5ODIzZjRmYWU3OGExZDc1ZTljOTYyYTdhNWJiODYwMTFmYzQ0IHJlbGVhc2UzMS1tYWludAorODI4NDcgNWIzNTIxMzNjNDUyMWM5ZTgyOGIzMmVhMzljMGJjZTlhOWFkNWJiMSByZWxlYXNlMzEtbWFpbnQKKzgyODQ4IGI5ZWRkZjNjMWU5MGExZTY4OWE2MmNjNjJlYmYwNTBiOWFmNGNhYjYgcHkzaworODI4NDkgZWRmZDdlYTQ4ZWRiMjVlZDZmYzkxYjg0MDgwMGUxMTM3MzdlZjkxMyBweTNrCis4Mjg1MCBiNTc0OWRkOGM0MjFiYjFkMDgyNDY1MjY5MmNhZjZhZmE2OGJkMDNjIHB5M2sKKzgyODUxIGRhZWE5NzhhNDhhZTg5NGY3NjMxOWFjZTU1NzQ4MjVmNjJhYTU3ZjMgcmVsZWFzZTMxLW1haW50Cis4Mjg1MiBhZDUxYWI4YjY0YmQwM2U5MTFlMTcyZTk4NTIzOTEzOTc1MGEzMzE5IHJlbGVhc2UyNy1tYWludAorODI4NTMgNGZkNWJhMzVkZjZlNTY5NTE4MGQwMjg5YmE1MTgyMjgxMGU4YzhhOCByZWxlYXNlMjctbWFpbnQKKzgyODU0IDk4YTRlOTZmMWY2NzQwMWNlNmQ5YTYxN2QyYzM0YTQwYzViYjFhYzAgcmVsZWFzZTI3LW1haW50Cis4Mjg1NiAzMWEzZDc2ZjM4MzUxOWZlNmI1NDY4NTRlYTE2YzUyYmE1MDYxNzRlIHB5M2sKKzgyODU3IDJjNzU3OWUwNGFkMjE0NTVmYWZlZmFlZTQyODE4Y2YzYzg5ZjU0YTEgcHkzaworODI4NTggZWY2N2U3NDgxMjQ0Nzc1ZDU4ZGU5NWJiYmNkMjk4Mzc3NTBmYjgwNSByZWxlYXNlMzEtbWFpbnQKKzgyODU5IGFlZGI1M2Q4YzJiOGNkNTQ3MjFhOTY1MmYyNjkzNTg5NTlkNzUwZGMgcmVsZWFzZTMxLW1haW50Cis4Mjg2MCA2N2VkYzQyNGU5N2I4MmNkZWY4NTQ2NzA2OTZiMDk3MTAyMTY1ODgzIHJlbGVhc2UzMS1tYWludAorODI4NjEgZTYwN2ZlMTVmMmQ2OTQyNWY0NThhNmFkOTRlYTU5ZmNmZDg5ZmIzMCBpbXBvcnRfdW5pY29kZQorODI4NjIgMWUzNjdhZmVmZDdlMGU5OTQxMzJlYjRkMTIwNjdlYWE4MDlmOWNjZCBpbXBvcnRfdW5pY29kZQorODI4NjMgYTVmYjcwN2NhYmRlZWJkODZlOTk1MTRkOWQ2NzBkZmU1Njg0NTJjNiBpbXBvcnRfdW5pY29kZQorODI4NjQgZDQ5M2ExYjQ0NTdlOWE5MTFmNTcxMjVkNGQ5MTk0MDhiNTk1YjlkNSBpbXBvcnRfdW5pY29kZQorODI4NjUgMjBiYjZmZDBiZDljMzVmNWI1MDhmNTYxZDliODQ1OWVjNmViMGU0YiBpbXBvcnRfdW5pY29kZQorODI4NjYgMzMxZTM3ZTA1MmNmM2JjNTNiNzViODBhNjczMTY2MTFmYTY5ZWM4OSBpbXBvcnRfdW5pY29kZQorODI4NjcgM2M5YjM4NDRmOTc4ODExMGNlNzAyYzRkYTQwOGRmMzNiZTUxNmYxZiBpbXBvcnRfdW5pY29kZQorODI4NjggMDkxNmU4NTg1YWNiMmQ5ZTdkOTJhMzg5NGIzMGMxY2IyOWRjMjQ1OCBpbXBvcnRfdW5pY29kZQorODI4NjkgN2YwZGFiYjdmZDhkZDYxMjZhNTk0ZGM2ZTg2ZWIwZGUyN2IxNTc1MyBpbXBvcnRfdW5pY29kZQorODI4NzAgNWIxYjdmNTU3NGMwMDFiYjhhODI3Y2ZkZTA0NDA2MGI1MjY0NzJmNiByZWxlYXNlMjctbWFpbnQKKzgyODcxIDg2MzU1MjNlZjVjNjM5NTUwYTc2ZmM0NGIzZmFkYjUyNWRiZjYyZWUgcHkzaworODI4NzIgZDRmNjdiODY0OTI4OGE0YjUwOGFlMjVhZmZlNGFjMDNmNjhiMGZkNSBweTNrCis4Mjg3MyBhZDk1ZTIzMTI5Yzc2Y2IyNmQ5MGI1Mzk4YTAwNDYwZTU2MDFmNDY2IHB5M2sKKzgyODc0IGQzMGI5ZGZmYjg2ZDQxMDc1M2QzZmY4NmFmMzZjYjJlNmQ5ZTJiZmIgcHkzaworODI4NzUgNzcwMjMyOTJmYzYxNGJjYTk1NGNiODE3YmYwZDhmYjcwYWFlOTY0OSByZWxlYXNlMjctbWFpbnQKKzgyODc2IDE4YmRjNDNjZTVlZDI4ZTVkZTFmMzRhYzEyYzFjZmU2ZWQ4ODQyZmEgcmVsZWFzZTI3LW1haW50Cis4Mjg3NyA3ZDdlNjNlYjNiNTMwMTg0NTRkYzQ1M2JlYmEwYWY4NjFjZjY3MjM1IHJlbGVhc2UyNy1tYWludAorODI4NzggNzdkZmUyYTc3NWQxOTk5MGMzZjNiN2NkN2EzNzdlMGQ0NjNhZWVkZCByZWxlYXNlMjYtbWFpbnQKKzgyODc5IGViMDA3NWU2MDcyNWI5ZjEzMjNjY2EzZjkzNzM3ZmM3ZTcxOTJjZjMgcHkzaworODI4ODAgNDEzNjBmODAzOWFiZmIzNDYyNjJlOGE0ZTAyMmRmMjFiYzNhOGY1MyByZWxlYXNlMzEtbWFpbnQKKzgyODgxIGQ3NGRlMDUwYzQ0NWRiZTllY2E4M2E1OTYxYzJhZTU5NDJiNDNjNTEgcHkzaworODI4ODIgNGI0NTY3ODBjOGQ4YWY0MjlhZDlmYzMyMGFlM2U1OGI3MjFmYWZhZSByZWxlYXNlMzEtbWFpbnQKKzgyODgzIDYxNDFjYjJlMjZlMTQ3MDAzOWJjMGI0MjAzNjMyMmQyM2M1NDcyODcgcmVsZWFzZTI3LW1haW50Cis4Mjg4NCAwZjI0MzE0MDEwMjEyNzcxOTYzZTU5ZmE5YTZlYWNkZmU3YjMwMzZkIHJlbGVhc2UyNi1tYWludAorODI4ODUgYzBlMDc1NmUwOTk2NjM0ZWVkNWRjOWNjYWIwMzQzODA1ZGEyZTlkNCBweTNrCis4Mjg4NiAzODA1ZmZlOGZmMzgzMTVlYjZlMjIyNTAwZWRlNDE3ZjZkMzY0OThhIHJlbGVhc2UzMS1tYWludAorODI4ODcgNmM3NjNkNjMxZGJhMDU5NDc2N2UyY2Q3MmY1ZWZjZDA3N2UyOGY3MCBweTNrCis4Mjg4OCAyYjY4YTg0NDE0NTg3MmZmYWZlNTFjMjgzMzk2Y2E2YzFjOTEyODA3IHJlbGVhc2UzMS1tYWludAorODI4ODkgZDRmNjFiMzZjY2U2ZTZlNzAwMjdhOWVjMjVlMGIyNzFiZDY3YzVlNiByZWxlYXNlMjctbWFpbnQKKzgyODkwIDlmMWQ5YWVmMzc0Yzc3ZDk5OWFkZDJkZmYzMjBjZDc5MzMzMTA1ZWIgcHkzaworODI4OTEgMGY4M2NhMTIwNzUyOTBiYjA1ZDM2NGNlMjAxNTU0Mzc3MDhiYThmZiByZWxlYXNlMzEtbWFpbnQKKzgyODkyIDk2NzU3YzY5MGIwNWYyZGY0YmNlOWViNjljNzFmY2E0ZDAxMWEyYzIgcmVsZWFzZTI3LW1haW50Cis4Mjg5MyBjNzA4Yzk0NmZmM2U0M2U3ZGNjZmE5MDc2OGZmODFiOGVkZGRkMzA2IHJlbGVhc2UyNi1tYWludAorODI4OTUgYTFmN2RlYTM2MjE5NmI2YjFhYmM0NDUwYmM3YTc0MGZkNDhkZDAzOCBweTNrCis4Mjg5NiBhMjk3M2U3MDUwNTdhNzFjMDA3Y2M2YzUzZDJmMDY0YjZhZWQ5ZTQ5IHJlbGVhc2UzMS1tYWludAorODI4OTcgMGIyOTFlMmZmMDBmYzkxYTk3ZTgwYjUwNTBlNjZhNWFiYjlkZGU0MiByZWxlYXNlMjctbWFpbnQKKzgyODk4IDYzMzNkM2E3ZTVjNzM5ZTk1NTcxNzlkMTI1MDYzZmQ5ZDk2ODAzMzAgcmVsZWFzZTI2LW1haW50Cis4Mjg5OSA0NjkyNzgxMDI3OTA4N2EzMzhhYzEyNWY0Mzc0NTUwZTgwNDA2NzkzIHB5M2sKKzgyOTAwIDRmZTI4YTQ5MWE2MzA4OTNlYTVhNmM5ZGJhMjhjYmU2YTg4NTE3NTcgcmVsZWFzZTMxLW1haW50Cis4MjkwMSBjNzQ1ZGY5NDYyZTY3N2VkODEyZWU4NmY2MmI4MDIyMzcwZjdlNGJkIGltcG9ydF91bmljb2RlCis4MjkwMiBhZDI2M2NjMzg2YTU0MjIzMmJiMmVlZGNmMzY0NGExMWVhYWEwMTQ4IGltcG9ydF91bmljb2RlCis4MjkwMyBmZWNmZjA0ZDBhYjEzYjBlODljNjNiODcxNmFhY2Q1MmJkZGIxNDU1IGltcG9ydF91bmljb2RlCis4MjkwNCA3Y2RmYWNlMWFiMDk2MjZlZDFlNGFhNmNiNmE1NjVmNmI5M2YwODllIGltcG9ydF91bmljb2RlCis4MjkwNSA3MzBjOGI5MDdkN2RjYzg3OTFlZjZlMzQwMGJiOWI2YTM3NWE4MTEwIGltcG9ydF91bmljb2RlCis4MjkwNiBmZjlkZGMxNjFlZTNkMDY5N2JhMWMxZTk4ZmE2MjhlOTJmZGM4YmRmIGltcG9ydF91bmljb2RlCis4MjkwNyA3YjcxYjZkYzc0NDRlMGExY2NiYzA0ZTM1YjUxZTY1MDM4M2RiNTI3IGltcG9ydF91bmljb2RlCis4MjkwOCA4OWY5N2ExMjEzY2Q5YjA0NzU4NDExN2M4MjhhOGNmYzRjOGU3YjkzIGltcG9ydF91bmljb2RlCis4MjkxMCAyMDI2ZWE0NDI4ODk5YzkzYTdlZTM2MjA3YWQ4OTRjYTBlYjJiMTQ0IHB5M2sKKzgyOTEyIDBiNzUzYTNmZTRiMGUxNzllNDVmOTc4ZTAyZjFmYjQ2ZWFiYTFiMjkgcmVsZWFzZTMxLW1haW50Cis4MjkxMyA1ZmZmYWM5YWM3ZDZjMjY5NTZmNzlkOTEzY2EzNjJmMmU1ZGVjZGYwIGltcG9ydF91bmljb2RlCis4MjkxNSAxZjI3YTA1YzZjMzFkNGExMzE1MmQzYzM5ZjdmNzU5YzdkNDQ2MWFhIHB5M2sKKzgyOTE2IDI0ZjdmYTI1ODFlNmYxZDRkMmUwZmExMWQzNWIyYjU0ZDhhYzJlNDIgcmVsZWFzZTMxLW1haW50Cis4MjkxNyBlNzAzMTk4M2U2ZmRmM2M1NDg1MzdkN2M4ZjljMjE1ZjUwYmY1MzMzIHJlbGVhc2UyNy1tYWludAorODI5MTggZTJlYzVmYmM2Y2YxMzdjYzY0Y2EwYzNhNTliODAwZGQ5NDcwMGE5MiBweTNrCis4MjkxOSBhMGI5NTM3N2FhYWQ4ZDZlOWJkYmUxNDBjMzRmYmRjYWJlOTM0Yzg3IHB5M2sKKzgyOTIwIDdjYmY4YzRlMjcyNzkxZmQ3OGIxMzIzYzNhMWRjZjA0YzU3ZDgwODggcmVsZWFzZTMxLW1haW50Cis4MjkyMSA4NGZmNDE3OTRkM2YyYjQ4ZGEyNmU4ODYyZWVlZmRlMTdmOTMzZGZhIHB5M2sKKzgyOTIyIDNjNzMwMTBiZDBiMGNmN2YyZDgyNWJhOWIyZDJlZTRjYmMzNDU0MGQgcHkzaworODI5MjMgN2EwMGNhNGI5NTkyYjg1YTY1ZWUyMTA1ZDIzODNlMDg3ZDllNDkxYSByZWxlYXNlMzEtbWFpbnQKKzgyOTI0IDAxNzExZjYwZmZmY2ZjZDQyMWZmMTE5YjVlNmUyMmFkNjNiNTZlYWMgcmVsZWFzZTI3LW1haW50Cis4MjkyNSA0YzQ1YTMyYzNjYzk5OGVlNTIyZDI4NGMzNzE0MWQzYzJiMWIzODkyIHJlbGVhc2UyNi1tYWludAorODI5MjYgZWFmMDRhM2Y0NTFhMmRiYjAxZmY0NmQxZDljMGQ5ZDE3YWM2NmY0NCBweTNrLWNkZWNpbWFsCis4MjkyNyBjNzQxYTFmMjI5NzY5OGI5Njc4ZmVjMGUwZjA1YzFlYjMyYjAzMzhkIHB5M2sKKzgyOTI4IGZhOGYzODgzNDI4NzhlMjY5OGI0NWM1N2ZjNGRkZGU3YzJiOTBiYmQgcmVsZWFzZTMxLW1haW50Cis4MjkyOSBlMDViNjQ2ZDZiOTg1MDFmODEzN2U4Y2FkYTM2MzNhMDczMzRjOTdmIHJlbGVhc2UyNy1tYWludAorODI5MzAgYjIyODkzYmUwOGM3MWUxNzNmNjY4Mzg2NjU3OWFhNjk5NWNkZjBlNiByZWxlYXNlMjYtbWFpbnQKKzgyOTMxIGNmNGI4MzNhNDdkZTg1YWVjNDc1ODAwNDRmZTVkNmViYTUyZDY3YzIgcHkzaworODI5MzIgZjI4MzMwODgxZGI0NGU4MDUyM2I3NDA4ZTNmYzFhZTQ1ZWVlNzdkZCByZWxlYXNlMzEtbWFpbnQKKzgyOTMzIDkwNWZhNTcxOTQwMzBlYzU2YjAyYzI5YjM0MWUxYWUwNWEyZGY5ZWMgcmVsZWFzZTI3LW1haW50Cis4MjkzNCAyYTc5YjcyM2FiZGNmOTUyZTEyMzliMGQ5NTQyMDkxODcwMDAzODI3IHB5M2sKKzgyOTM1IDhjNDQwY2Y5MDc3NmQyZDQ3MzhjNzY5YTVkZjVmNTU0OWZjOTdhZTAgcmVsZWFzZTI3LW1haW50Cis4MjkzNiA5ZTYxOWYxNmY2NmFhNDI0YzRmODE2OTk0MjUyMjZiNTZhMGUwZDViIHJlbGVhc2UzMS1tYWludAorODI5MzcgM2M3OGIzY2ZkNDYyY2Y0OGFiYmRiOGM0YWIwZGU2Yjk0ZmRmMWI4YSBweTNrCis4MjkzOCBhYmY2OWQ0MDI4ODNiN2IzZGUyYzNjOWE5MjdlODM1NmYyNGFkZmM1IHJlbGVhc2UzMS1tYWludAorODI5MzkgZDFkODEyNDZiMjI5OTZlM2Y1NjgxN2U2ZDUwNjUxOWFiZDgzNTY2ZSByZWxlYXNlMjctbWFpbnQKKzgyOTQwIDFlMjFkOTRlMDVmNDYyOTM0NmVkMGRlZjJiMzZlNmRiODMxZTZjMGYgcmVsZWFzZTI3LW1haW50Cis4Mjk0MSAyNjgzMzMzNzU1ZjM2MmI2YjU0N2EwMDQyM2JjOTVmYjkxYTc0MDExIHB5M2sKKzgyOTQyIDY4MDM2ZjJiNWFjOGQ5ZjUzODkzMGM1MDJjZWRhYjMwNmU4NmQzZjAgcmVsZWFzZTMxLW1haW50Cis4Mjk0MyBiMWRjNjBiM2M3YWViYzI0NzBiMmNiNGNkMzk5OGY3NDRlOTczZjE0IHB5M2sKKzgyOTQ0IGRiMmRjY2EyNDA2OTQ3MjdiYjA5MWY5NGE3YjkyZjA1MzgxYWQzYTkgcmVsZWFzZTMxLW1haW50Cis4Mjk0NSAxOTE5MTU1OWVjMDJjNWRmYjJmZTlkNzIwYzE1MzRkNmQ3NmY5MzY2IHJlbGVhc2UyNy1tYWludAorODI5NDYgYzE2YjNmNmFjNTExYjYyNDczZDc5YjI0YzM2NDU5ZjBjN2JiZDRkZiByZWxlYXNlMjYtbWFpbnQKKzgyOTQ3IDIxMWUzMThkMjNlZmE4ZjZjZGEyOWYyZDI1MjU4YmMwMWM3NTlmYmMgcHkzaworODI5NDggZGIzYWQ2ZWMwYTRiMTZkOTdlMmMyMWIzMTNmZmU0YzkxNzkyODYyOSByZWxlYXNlMzEtbWFpbnQKKzgyOTQ5IDk3ODY4M2ZkZTgyMDM3NDE3ZDgxODQ0NTIwZjJkODdiMWRhMGViYzcgcHkzaworODI5NTEgNmRjM2QyMjI4M2ZmNTRmYzRiNjFmMGZhOWQyZDRlZWVjNTUyMjU4OSBweTNrCis4Mjk1MiAxNmU4NjJhNWI2ZjI2ZGVkOTg3YzA4N2EzOGJlZTM0NmFiMDkzYzFiIHB5M2sKKzgyOTUzIDRiZjAzMzc3NTg0ZGIwNzY0OWI4ZGUzNWU2ZWQyNmQ1M2E1OWVhOTAgcmVsZWFzZTI3LW1haW50Cis4Mjk1NCA0MWFiMTYxZDQ3YTdiZjQ1ZGM1OGI0Nzk2MTc2ODIwZTJkYWFiNTQxIHB5M2sKKzgyOTU1IDdlNDUxY2U5MGMxYTYyNDRhM2I0ZTliMDE4YTY5MjExZTA5MWQ2NDAgcmVsZWFzZTMxLW1haW50Cis4Mjk1NiAwZDkxODEyZjYyNjA5Njg3ZjBiMjNkYTM5MjJjNTFkNzZiZGU0YTAzIHJlbGVhc2UzMS1tYWludAorODI5NTcgMzFkZjZmOGU5ZjFkNGQwNDlkOWIyYjk2YWU4ZGI4Nzc0N2I5NmM0MCBweTNrCis4Mjk1OCA2N2Y4ZjA1Y2Q0MGRjMGUyNjFlYzJhYmVmMGQ3OGIxNDViNjNiY2Y2IHB5M2sKKzgyOTU5IGNjZDNlNTQ1NjJmYTdhMGQ2NTNjZmU3MDhhMTgwODllYTMyNjI3MDEgcHkzaworODI5NjAgYTRkYWU3ZTJkZjdlNjY2M2YwZDNjZmJiYTNhY2VjODUzZjBiOTU1MiBweTNrCis4Mjk2MSA0ODM1MTA2ZWNlMGM1MzI0YTIwYzYyMjZmNjFkOTljODAzNGQ5ZmZlIHB5M2sKKzgyOTYyIGE2NWM5OWY5NDg5MDA5NWIwY2NhNGEzMDIyNmVlNWMzNzE1NjI0OWMgcHkzaworODI5NjMgYmI3ZmMwOGY3MjNlYzdkYjdmYjFkZjllZjYzNjhjYjc4NmE0MThlYiByZWxlYXNlMzEtbWFpbnQKKzgyOTY0IDJmOTU1YmY5MzAzN2I2ZDY4Y2JiODRiMmQ0YzEzODZkYjgzNDIwMDkgcHkzaworODI5NjUgMjUyMTZhN2UyMzRkNmFhMzg1Y2IzYTI0ZmQyYTEyMzY5MDRjYWE0ZSBweTNrCis4Mjk2NiBkMzU3ODJhYzIxZjg2MWY5Njk5OTZkZDdkZDgxZTZjYjk0MTQ5YzJiIHB5M2sKKzgyOTY3IGI3OTQyOTE1NDgwZjc4YmE1Mzk2YWE5NDk2NDE2MTI5MGU3N2M5MDggcHkzaworODI5NjggYzkwMDIxZmQxZmJmYWZmYmZiZGI0ZjMzZDE0ZjQ3NWRiZTZjMzg5NCByZWxlYXNlMzEtbWFpbnQKKzgyOTY5IGM5NmE3MjJiZTFkYmMxYzRlMGQwYmI0NDZkMDc1NTNlMzRiYjJiZDIgcmVsZWFzZTI3LW1haW50Cis4Mjk3MCBiOWM5ODlhMmZhZDMxMzc3Y2IyNTkwNDllMzdiYjRiNmFlNGM4Y2VkIHJlbGVhc2UyNi1tYWludAorODI5NzEgYWEwYjU2ZGQxNGFmN2I4YjVkNDNhZTBmNGRjNDA0ODNkNjQ2ZWRiYiBweTNrCis4Mjk3MiBhZDY2ZWZmOTgwMGJiYzJjZjI0NjcyNmFhYmRkM2NmNjdiZmZkYmJhIHJlbGVhc2UzMS1tYWludAorODI5NzMgMzU0NTQ2ODQ2YzI5N2FlM2UxMzI5OGM5NTMzNzk0ZDJiZDY5ODVkOSByZWxlYXNlMjctbWFpbnQKKzgyOTc0IDNmZGQ5YjQzMDI0YzYyMWYxMmZjMjY5MmI4YzVjMGNlYjg2Y2EyNGMgcmVsZWFzZTI2LW1haW50Cis4Mjk3NSA3ZjMxM2VkOWU4OGYzMjQzOWEwZTRkM2IxNWM5ZWEzOGExMTYxYWZiIHJlbGVhc2UyNi1tYWludAorODI5NzcgYTExMjE0MDlmOTZiMjBkZWZhYTRmNDc1MTJmMTk0NTBiZWUyNmI0MSByZWxlYXNlMjctbWFpbnQKKzgyOTc4IDczZGRiOGIyYjU3NDdlOGMzMmIzYTE2ZDQyZTVkZjNiNmJiNjUxMDEgcHkzaworODI5NzkgNWNmZjA1OGQ2Y2VkNWMxNTliMWFmZGZhMzg5MjNjNjI3NDU1YjNjZSByZWxlYXNlMzEtbWFpbnQKKzgyOTgwIDNmYTYwNTY4OGQwMzVhNTQ1YjYwMjAxM2JiMGMwYzE2ZTc1ODIxMWIgcmVsZWFzZTI3LW1haW50Cis4Mjk4MSBlMWJjMmM4OTM1ZDIwYTdlOGY3MDJkMTllNzhmMjMwYWFiMmExNGUxIHJlbGVhc2UyNy1tYWludAorODI5ODIgMWM2NmY3MmY2YmM5M2IxZGI0M2MwMzUzZWNjYTQyMDhkMzA0NjRmMyByZWxlYXNlMjYtbWFpbnQKKzgyOTgzIGYyNDE1OTJlY2U0ZWJlNWRlYTkzMDA1Nzc1MDg5ZWY2OTI3MmI5YzcgcHkzaworODI5ODQgNzQyZmRmN2Y2NTQwMDU2MjZmZTc3YzcxYmZjZTViMjllY2M0NjMzZCByZWxlYXNlMjYtbWFpbnQKKzgyOTg1IDg3MmIzNGNiMjY4ODUxNDQyZTQxOTMzODAxZmU2NjQzOWRjNmE0NWMgcHkzaworODI5ODYgYjJmMTM4NWEyMzVlMGQ4OTg2ZTI5NzRkYzBhZTczNDlkYjAwMmIwMSBweTNrLWNkZWNpbWFsCis4Mjk4NyAzMzM3YTI5NTVlMTE5MjdiM2RmYTdhZTg4ZDc0YTk1N2E5MDAwZTFmIHB5M2stY2RlY2ltYWwKKzgyOTg4IDE2OTM0N2Y5ZDRjNGYyNWRiMDdjOWZkODRmZDM3NDk3MWU2YzE0MjMgcHkzay1jZGVjaW1hbAorODI5OTUgOWM3NjZjZDIxMWRiMGVhYTYyN2E1ODFiMTAxMzI4ZDA4ZDhkYTA0MSBweTNrCis4Mjk5NyBhMTRhNzg2OTJjN2ExNTgwZWE3OTk1NTUzNjAyZjYwYmMyZTdkZjc0IHB5M2sKKzgyOTk4IGMwZDhmZTI1ZTI2NmVjODY2MWYzNGY2ZTk3OWQ0Njc0YjAwNTI0ZTcgcHkzay1jZGVjaW1hbAorODI5OTkgMWUyNjFjY2U0MTE2NDVhMzZiNTdjODdmNDg0OGY1ZmUyYmUyNTg3NyByZWxlYXNlMzEtbWFpbnQKKzgzMDAwIDQ1ZWQwY2YyYzM4NmE2ZmJjOTdlNjA2ZjQyMDQzNmFjMjkxOWEwZTIgcmVsZWFzZTI2LW1haW50Cis4MzAwMSBjMTYyMDIyMGE0M2QyOGY3NzAwODIzMDlmODQ1ZjRlMjY3NjUyNGY5IHJlbGVhc2UyNy1tYWludAorODMwMDUgY2JkNmY1ZDI0YWY5MDYxZWEyYWJhYWViZTJiMTEyYzA2NDNiZWE5NiBweTNrCis4MzAwNiA5MDU3ZWEwMTQ0NjE3ZjI4NjQxMGVlZDI4NjI2YzZlNTgzNzM1NWViIHB5M2sKKzgzMDA3IDc1YWY0YTI3YTA3MDk3MWEwM2ViNGRiYzM4YmU3YTZiYjQ2YjFhMWQgcmVsZWFzZTI3LW1haW50Cis4MzAwOCBkMGJhM2I4YjBkNDgyYjExZWZmOTZkODhkYzY4MjM1ZDdkYjc2ODg5IHJlbGVhc2UyNi1tYWludAorODMwMDkgYmZkYjVmMDhjMGY4MWZiNTJjOWVkZWM5NWZiZDBhMTU5YWJiYjQ5NCBweTNrCis4MzAxMCAxNWVkZDVmYmJjYWUxZDNiYzE4ZDA5Njc1OTE3M2Y1ODc3Y2QyOTVhIHJlbGVhc2UzMS1tYWludAorODMwMTEgZmVlNDk5NDYyMGZiZjk4NTFhYzEzZDg3MDZmYzFjMWUxY2JlZjE4MCBweTNrCis4MzAxMiBmNGViMWM2YTM0ZWY0MzBhZDBlYmViMmY2YjFlMWU1Y2IyZDZlNmIwIHJlbGVhc2UzMS1tYWludAorODMwMTMgNzA3OWM2MDc4MTRjYWFiNGMwYjE4M2E2NTNjN2JhNTg2MTBkN2M1MCByZWxlYXNlMjctbWFpbnQKKzgzMDE2IDViNDY4Njg3NzY4Y2Q1MThhYjgyYzY3MTA3ZmUzMDY4YjNjYTZlYTMgcHkzaworODMwMTcgNzA5MjVkM2MwMjc5NDdmNjk5MzY5ODIyM2M4NGExNDJiMzg3MTk4NyByZWxlYXNlMzEtbWFpbnQKKzgzMDE4IDJmMWE4MzZmMGZhYzFhMjNmMGRiNTE5ZjdjOGQxOTU3ODhkNzJkMTQgcmVsZWFzZTI3LW1haW50Cis4MzAyNSAyMGU1NmVjY2RmNTIyNjM4NmFlNDFjZWMzMmVkZjA0NjhiYWIyMjk1IHB5M2sKKzgzMDI2IDRiNDBiZjkxZWJlYjMyNmU1OTc4NDgwNzhlMDU0YWI4MDc5ZmEyYTAgcmVsZWFzZTMxLW1haW50Cis4MzAyNyBiYjY4ZTUzNDU0YjZkNjRjNmQzNjBiMzIzMjBmYzgyNTU5ZTZmYmMyIHJlbGVhc2UyNy1tYWludAorODMwMzAgMzY3NTI5ZGMzNGQxMWYxMjUzNGYyYjMwMzVjYjI5NmFlYjVmYjQzZSBweTNrCis4MzAzMSBlNWNkYjEyNzY4Y2I0YWI5YmE5NDBjNzFjZjE0MzkzMWRkMzBkOTZmIHJlbGVhc2UyNy1tYWludAorODMwMzIgN2I1ZDE1MjdjMGNlOGEzMDkwNjU2ODVlZWFlOTNmZWFjODIwZWMwNyByZWxlYXNlMjYtbWFpbnQKKzgzMDMzIDUyMGJmNGQxY2I2NjUxNmI5MTA3NDZiYThiMTY3NzA1NjcyMGI2NjAgcmVsZWFzZTMxLW1haW50Cis4MzAzNSA0NTQ1ZmY1MDYxYjdhN2EyMjQzYmZjNjFjM2E4M2ExNmYwYmExNDdkIHB5M2sKKzgzMDM3IDlkYmJlNmU3YjY2OGMxNTg0NmQ3YzlmYjM1YTZlMDRiMzY2ZGFjNTUgcmVsZWFzZTMxLW1haW50Cis4MzA0NSAxZjRlZDcxYjY4ZTIyNDZlNWRkNjFlZTVhZjJiOGVhMzMxM2JlNmZjIHJlbGVhc2UyNy1tYWludAorODMwNDYgMzA1OTAyYjNjMWEwMDlmYmNkZTE3NDdhNTNhZGVmZDYxNzc1ZmQ1MyBweTNrCis4MzA1MyAyOWEzZWRhODk5OTUzZGMyYjMxNTY4ZDBlYzY3MjU5OTYxNjBlMzUxIHB5M2sKKzgzMDU0IGVlMDFmNTQ4MWM2ODBjOTBjYzNjZDE2ZDYwZjg4OWQ3Yjc5NjJjMTggcmVsZWFzZTMxLW1haW50Cis4MzA1OSAzZTYwOWJmNDYyZmYzMTFjYzMwNmQwOGU0MTY1OGU4OTViYTY3NDYzIHB5M2sKKzgzMDYyIDFjNDQxZTM5ZGJlNDZkODgwZjdmMTdmYTE2MDg0ZWIwNjcwZjAzNjUgcGVwLTAzODQKKzgzMDYzIDg4NTIwZmI0NWJmMmVkNGEzYjc5YTYzZDQ3ZGMwM2YwM2E2NTQ3MzEgcGVwLTAzODQKKzgzMDY1IDU5MTI0OWQ5ODM4M2FjNjM0MWRkYmMxNzYzOTQzOWQ4ODdkNmNmYmUgcHkzaworODMwNjYgMTZlZGQ0ZmJhNmE1YzJkNmJlMDQwZjFhOTZlYTIyYzVjNzhjN2JlMiBweTNrCis4MzA2NyAyYWQ4ZThjZTQ2YzZiOGY4ZTY5ZjM2OWE5MDYzNDk5NDRmZGQ0NjU1IHB5M2sKKzgzMDY5IDVhNjk4YTE1MmYzMDIzNWQwNDk5NDgzNTRkOTFhYTI1NWQ2MDdlYjEgcmVsZWFzZTMxLW1haW50Cis4MzA3MCA3MjFlNzI4YWMwNjBmMGE0MGJkMDFmOWViYzJiNjQ5NmU3YzliNGJlIHJlbGVhc2UyNy1tYWludAorODMwNzEgNTM1Y2FiMWE4YzAwNDk2ZTNjZjU4NzNkMWYzMTMwNDVhNzE2ZWQ2NiByZWxlYXNlMjctbWFpbnQKKzgzMDcyIDM3ZDg0ODkxYzY3MWEyZDE3YjQ1YWRlNDUyNmFmOTQ4NjE5YTZiN2UgcHkzaworODMwNzMgOGVmOTU3YzM4MWZkYTcyNzA5MWVhZDBlZjQzMTIwMTJmNWYxZjk2YyBweTNrCis4MzA3NCBmYWE1ZjAxN2ZlYTVkODlmOTNiNzU5NjI3ZTZhNDJjNjVhYWY3ZGFmIHJlbGVhc2UzMS1tYWludAorODMwNzUgZTYwZmRiMzQ4YmRjNjExMGFiMGVkNzhlMzAxY2UxZDBmODY0OTg0NyBweTNrCis4MzA3NiBjNDgzZjk0OTc4NzJiNjMyMWE5ZDVhYmVjYTgyZmYzOTQ1MGVlMjhmIHJlbGVhc2UzMS1tYWludAorODMwNzcgYmZmZDM5OWI3NjRjNmRkNjdkODM1MzkzODMwMGRhODJhZGViMjRkZiByZWxlYXNlMjctbWFpbnQKKzgzMDc4IDc2ZTA3OTIyNTA3OWM2ZjUzOTBmM2RjZDk0YWZjMmU2ZmIxMGRhYTYgcHkzaworODMwNzkgOTk2ZWU5ZTAzODE2NzA3NWU3ZTEzNWRhMjk1MThhYzllNWJmOTM3ZiByZWxlYXNlMjctbWFpbnQKKzgzMDgwIDNhOTNmZDJlYmI0MGNlYzJiZjZhMWM1NmI5YWY1Y2NiYWI3NTg3YWMgcHkzaworODMwODEgYzBjZjdkNzAwMWUyMzIwYzJiODI3Yjg2NzUwOTI1ZmM0ZDc5OGY5ZSByZWxlYXNlMzEtbWFpbnQKKzgzMDgyIDVjZTNjMDY0NDhhNzhlZjQ2ZjFlZmUyNWFhMjY5MDA3OTYxYjI3ODEgcmVsZWFzZTI3LW1haW50Cis4MzA4MyBiZGMwNjlhMWE3MjFiMjhhZDIxODQ5MjMyYmQ1NDI2ZGRhODcxNTA2IHJlbGVhc2UyNi1tYWludAorODMwODQgMTgzYzU2MjVlMDBiZGY2OGQwNDg3ZjY3NmViNmNiYWQ5MjAzYmEwZCByZWxlYXNlMzEtbWFpbnQKKzgzMDg1IDFjZTg0YzYxZjNiMTM2MDAxMzlhMTIxNmEzYmYwYTk2NDQ5YTM5NDIgcmVsZWFzZTI3LW1haW50Cis4MzA4NiBlMjY3ZWU5NzYwYmQxNGE4YjQyNzBlMTJhZjk4MmM5NDFmYTdhNjdkIHJlbGVhc2UyNi1tYWludAorODMwODggMTAyNzRhN2JjNTM3NzYxZmRiZjgyNjMwZTFhMzY5NDgxODg4YTg2OSBweTNrCis4MzA4OSBlNjM4M2M4MWRhNDFjYTA1NmI1Y2Y2MTdkMTllZGM5YmIzMzI3ZTFkIHB5M2sKKzgzMDkwIGY1MjNiMzk4NTJlNzQ2MGNmNzdkOTUwZTZmYjQ4NmU5NzI4ZGRkNmQgcHkzaworODMwOTEgMDQ4M2I4ZThiYzU5ZjE3Yzc4MWI1NDk3Yjc5OTdhZjgxYzNjYzYxZiBweTNrCis4MzA5MiAyODU1ZDYzNjMxOTI5ZmY1NTc0ZGIzZjE0ZDlhM2FlNDlmOWRiZjk3IHB5M2sKKzgzMDkzIGVjNDJiNzI4MjY0ZGI2Y2Q0ZDY4MGZmMTRhMGU3MTFkODJhOGNjOWEgcmVsZWFzZTMxLW1haW50Cis4MzA5NCAyNzg2ZDYyY2M3OWMzOGE3YTAxODQ4NzE1ODJjZTUxNDQ2NjcwZWE1IHB5M2sKKzgzMDk1IDc2NGVjOWJiZjAxM2ExZjAxMTBhNzNlMDMzYTdjMGU5NjA0OGZhNGEgcHkzaworODMwOTYgODcyM2MxZGQxZDI1YzFhODRiZDlmMmU4Y2QwNjY1OTEzMGU3MjM0NCBweTNrCis4MzA5NyAxZjhmY2JiNjM5NmJjNjllNmM5MjAwYjU5YmYyNzI2YWZkMGEyNmEwIHJlbGVhc2UzMS1tYWludAorODMwOTggOTdiODQxYjNiMGI0N2JjNjkyMmM5MTBjMWMwNjMwNzE0NjgzNjk0MyByZWxlYXNlMjctbWFpbnQKKzgzMDk5IDA2MGRlMDYwZjAzZmYwYjZkOTZiZWE3YTIxZDVmMjEyZWNhOGMwYTIgcHkzaworODMxMDAgNjg2MTljMzcyZWYwMTNmOWRiZThkYTMxZGUzYWNhNDFmMTM3MmFkYyBweTNrCis4MzEwMSA1ODBjNzg5Yjc4NWQ1ZDczOTYwOTcxMWIxMmZhMzc1N2E4MDE3ZTFhIHB5M2sKKzgzMTAyIDM4M2U4NDYzZjU2YzAwMDRiNTVjYTFiYmNlMTEyNjEyOTkzNDk4NjkgcHkzaworODMxMDMgMGYyYjBmMzc3NjQyNDZlYzE0MjgyM2I2NDYyZDJmMDk4Nzc2YmVjYSBweTNrCis4MzEwNCAyMjdkZWUyNzg2MzhhN2Y3OGUyMTUyYmMyYTcwNWE4ZjAyYzMxYjgwIHJlbGVhc2UzMS1tYWludAorODMxMDUgMzJmYWNiZWRmZDBlYmM0ZWEzNjIyODVkNDYyYWJmMmNkZjIzOTQ5ZCByZWxlYXNlMjctbWFpbnQKKzgzMTA2IDQ4MjcxNzk2MDI1N2EwOTBkMTMwYWFjMjhhNmE3NzUxNzYzMWIyMGYgcHkzaworODMxMDcgZTQzNzk1MzQyNWQ3MDU0MzI3Zjc2ZTI4ZjdlYTQ4YThjYzU1YzcwYiBweTNrCis4MzEwOCBhZjkzNDEzMjRkM2Q4MmUxODM4NmE4MGYwYWZjYTc3NDUwZDNiNTljIHB5M2sKKzgzMTA5IDcxZjFjMGJlOGFhNzc2NTQ4ZWMzMzM0Zjg0YWE2MDBjZjNjMzNkYzkgcHkzaworODMxMTAgZGIzN2FmMDdkNGMyNzEyMDg0YTZmYWNhZTM0ZWIzNGNkYWM3NGMxZiByZWxlYXNlMjYtbWFpbnQKKzgzMTExIGY5OTcwMzkxZWVhYjI4YzJhNmYxYzRlMTRlYTc2YmMyMGM1YWE5OTAgcHkzaworODMxMTIgYWZkYjUzMzIzMDY1OWE0MjdhMzZiMmY2NWIzN2JjZTNiMWY4ZjAwOSBweTNrCis4MzExMyBlNzczODg0NTc3YTUzMzRiNzcxYWNhMjBkNTcxNjcwODdlNDZlZjdkIHJlbGVhc2UzMS1tYWludAorODMxMTQgODk5MzFjODM2ODU3NGE4YjQ2NDJlMjdmYzY0OTcwYTkxNGI1NWNiNiByZWxlYXNlMjctbWFpbnQKKzgzMTE1IDRlZDYwYzRiYzhiNjAxNjliYmI0M2E2ZWY1MjA0ZDc2ZTlhM2JmNWIgcHkzaworODMxMTYgOGZhNDI0YWVjZDBkYjhlNmFlNzEwN2VlOWM2NWJlZmZjYzZjMmQ1ZSBweTNrCis4MzExNyBkYzJhN2MzNDRiYWFmZWExMGJhMGQ5MTBiY2YxMTE0ZmU2YTY0ZmZmIHJlbGVhc2UyNy1tYWludAorODMxMTggOTM1NzgwYzYyYzU5NTc3MDA5ZGFkMDBhNWFmYTFlNzlmOGE2YjUxZCByZWxlYXNlMzEtbWFpbnQKKzgzMTE5IGVkMzI4ZTY3MmFjZTFhM2Q4YTc4OThiYTJjNjI1MGE3Yzk2MDliMzYgcmVsZWFzZTI2LW1haW50Cis4MzEyMCA1YWE3MjY0MTRmOGYwOGQ0NjYwNWE1YzRjY2EwOWY5M2UyYzg3Yjk1IHB5M2sKKzgzMTIxIGIwYWY2M2FhMDllYWNhYmU1NjY5OTRiN2M0YzM1MGRiNDRlMzcxYTkgcmVsZWFzZTMxLW1haW50Cis4MzEyMiA4MDcyZGZkOTdlMWRkZjM3ZmQwY2RmYTk5OTk3ZDM4MThkMDc5MDhiIHJlbGVhc2UyNy1tYWludAorODMxMjMgYzM4NjZjZDkxYWUwMGU1ZGRjMjNmZWNhNzI4MTNhMTkwMTY1MmIxNSByZWxlYXNlMjctbWFpbnQKKzgzMTI0IGZmNjQ0OTY0MzE0MmUyNGNkMmQwYzUwZjM1ZTZhNjAxYzE3OGM5NDEgcmVsZWFzZTI3LW1haW50Cis4MzEyNSAzM2U0YTQ3YTZhZDEwZGI1NTMzMDNjYzJiMzM4ZDE3MTg0OThlODg0IHB5M2sKKzgzMTI2IGQ4OTZmM2Y5NGE0ZGYyMjg4ZjU2ZTYwNzUxNWUwMzNkZDJhNjkxZDcgcmVsZWFzZTI2LW1haW50Cis4MzEyNyA0Y2NiYzI5YzdmMTEzMjlhNzA5NzdkYmJkNWFiMTM3NmI5YWMyM2I2IHB5M2sKKzgzMTI4IDNmMjQ1YmU1OTMzOWJmZmIxYzhkMTZjMWJjOWM0Yjg0ZjQzNjYxMDYgcmVsZWFzZTI2LW1haW50Cis4MzEzMyBhZDVmMjc5M2Y3YWRmMDhmNjVlODgwNTFlMWI1MmFmMDllNGY5NDcwIHB5M2sKKzgzMTM0IGY4MTI2MzY3YTJkZWRkZGEyNmMzNjNlNDdmZTUzYmVmMDlkMjNmZmMgcmVsZWFzZTMxLW1haW50Cis4MzEzNSAzZTY1OTI1ODFkMGY1YTgyMjY0NTY2YmY1ZjViMGNmMWJiODc4MGUzIHJlbGVhc2UyNy1tYWludAorODMxMzYgNTM0M2VhN2MxOTg2MzQ5Yjk3ZDZlZTdkZDZlZjA2MzgwZWRjYmQ3ZCByZWxlYXNlMjYtbWFpbnQKKzgzMTM5IGExNmI1YmJkZjE5YjQyODJhNDU1NGQzOGQ2ZDhjMDM2YTQzYzUxMGQgcHkzaworODMxNDAgOWVjYmE4YTEwMTI1NTFhNjRmOTk1ZTdhZWZlNTg2ODU2NGUwZjRkYSBweTNrCis4MzE0MSAyYzU2ZjRhYjM2ZjI2YTRiM2M4NTA0MWNjNmYxNmE4NTdkZTJkZWExIHB5M2sKKzgzMTQyIDJkZDI5OWU3YTZkYmQzNzE1OTk0MDZlOWY0ZGM0OTA2N2NjMmZlNDQgcmVsZWFzZTI3LW1haW50Cis4MzE0MyBlZjliMzlkZjU5MzY4MDYyYjQ3NzcxZmUzZmIwMDlkMjYzMWJmZGJmIHJlbGVhc2UzMS1tYWludAorODMxNDQgYjE5ZjhhNDkyOWQ1YjNiOGI1NDk2ZmY4Mzg1MTljMmFhMjQ0Mjg2YSByZWxlYXNlMzEtbWFpbnQKKzgzMTQ1IGZkYjBjZmRjY2Y4NTgyNWYyODBhODM1ZTM2M2M5NjAwODQ1ZjhhNDkgcmVsZWFzZTI3LW1haW50Cis4MzE0NiBkODZjMTg1NjhlODk3NTc0YTVhMTJmZTBiMjgwZjYxZDZlZGM1MzEyIHJlbGVhc2UzMS1tYWludAorODMxNDcgZDMzZWJiM2VmMGIxMDdkODc1YTI5NzY4MzNlNGExYWJiMjhhYzhhZiByZWxlYXNlMjYtbWFpbnQKKzgzMTQ4IDkwNGIzYTE2MTZmMzdjMzgyNTlkODM4ODNmMzA1N2RjZWEwMmM5NjMgcmVsZWFzZTMxLW1haW50Cis4MzE0OSA5ZTMwM2Q2NzE1Y2U4OWFhNjZjNTM5MDc5ZGFjYjc5ODI5OWIyMzg0IHB5M2sKKzgzMTUwIDllY2JkZWZjOTg0OWFiOTA5YTAzYmM2MmJlOWRlNWVmYjRiYjYzOWUgcHkzaworODMxNTEgNTEzZTQ5OGIyMjNjMmE2ZDA3MWJlMjlhNzkzZjM2YWVlMjIxMmVjMCBweTNrCis4MzE1MiAxMGNlMDQxNDAwOTY4ODRjMjUxYTI0MTIwYmE1MmEzZmQyYTU0ZmU2IHB5M2sKKzgzMTUzIGZlOGEyY2U5MTRlYThjZGFhYzI3YTU4ZTllZGM5OWIwM2VhZTM2ZmMgcmVsZWFzZTI3LW1haW50Cis4MzE1NCBmZGI3MWQ2YzE4MjI0ZjgxMGUyYzhmYmM0Yzg3Y2YzYWZiNjExZTYzIHB5M2sKKzgzMTU1IGVlY2MwMThhYWMzZWRkZDdiZmM4MDk1NzJmNGU1ODhlZWQ3YmRmNGUgcmVsZWFzZTI3LW1haW50Cis4MzE1NiA1NWY0NWU5MDY3NGQ2YzA1NWVhY2ZmZDhiNzQ0YjgxNjJmMmZiYTFlIHB5M2sKKzgzMTU3IGY2YjkyODA4YjliMzQzNTZlNDMyM2FkYzgwNTBhNWRkOGU2YWM3NTkgcHkzaworODMxNTggNzRiMTZmNDM5ZTA3YmEwNDFhZWViNDNiOGRhMDIwMTc1MzIwMDVkYyByZWxlYXNlMjctbWFpbnQKKzgzMTU5IDRkM2RlMTZkMDJjYzI4OGVmOGNiZDhmNGRmOTRkZGUzOWJmYTlhOGEgcmVsZWFzZTMxLW1haW50Cis4MzE2MCBjM2JlMjBjMzkwYTI3MDk4YjAyYmUzOGNiMTkzNDE0ZDQ5YThlMjZmIHB5M2sKKzgzMTYxIDJjZWQxY2NkMzVlYTQwZWM5OGExNTU2ZTRlZWYwMjE1MWE3MTE1ZGMgcHkzaworODMxNjIgNmE5OWQ5MWJlMGY4YmNiODk4MmIxOWRmMWI1NTNjODY3MjU3YjMxNiBweTNrCis4MzE2MyA3YTQxZTBjNDg4NTUwYzMwM2ZmNjU0MGUxOGM4NDAwMGI4ZTI3NjBmIHB5M2sKKzgzMTY0IGNjYjIxOTljMTZiYTBlZTIxMzRiZGFlMDliNzY2NGUzYjdjMmE0YjEgcmVsZWFzZTI3LW1haW50Cis4MzE2NiBmOWEwMDdhZmQ0MGYzNzJmOGRlYWFkZWI1MjhjMmM5NTJjZjM4MzFmIHB5M2sKKzgzMTY4IDM1YzE0NTYyMzQ4MDJlMTE4MWVjODRhNDczNDBmOGM1YjVkMjdhYzYgcHkzaworODMxNjkgM2U5YjkyY2ZjYWNjNTFmN2I0NDRhMjk1ZTQ4NDY2NTBiMjU0NjAyYiBweTNrCis4MzE3MCAwOTcwNTc3MDA5ZTA1NzE3ZDBjNWMwMzZiNzhlOGM3YjAxM2M1YmU3IHB5M2sKKzgzMTcxIGFkZWZkNWMwMjM1ZGZiMzQxODI5ODdlYTJlOTJmYjRmNmM1NTE3M2IgcHkzaworODMxNzMgYmMwMzQ3NmNlOTAxOWIwM2EyNTczNDViNTdiNGU2YWZmMzRmMDY3YSBweTNrCis4MzE3NCAwYjg0MDk0YjE1MTU4Y2U2NDNhZDQzOTA2YmRkMzQzYmE5OGU5NDY0IHJlbGVhc2UyNy1tYWludAorODMxNzUgMzM1NTM1NmYxYzc0ZDQ0OGJhNWU1MDM2MjZhZTI5NmNkZGI0YTIxYyByZWxlYXNlMjctbWFpbnQKKzgzMTc2IDU1MjI0MzMxNTBlMWQ5OGNiMTVlMGE5YWQ5OTc3MjIzMDVjNWYyZmYgcmVsZWFzZTI3LW1haW50Cis4MzE3NyBmOWI4NjBlZjI0YmFkOTIxMjk4NjUwNDFhMTgwY2YzNjFiY2UxNjY1IHB5M2sKKzgzMTc4IGUxYzNhZGZhNTc0NGRmNzMyZGJmNTE0NDUyZGJjZmI5YjkzZTJiZmEgcmVsZWFzZTMxLW1haW50Cis4MzE3OSBkZmUwMDk1ZmNhYjBmNmY1YzhjYzdjZDc0NzFhNzI1ZDE5NzdhOTZmIHJlbGVhc2UyNy1tYWludAorODMxODEgMmRmNzMzOTUxYmFiNDdjMzU3NzAxNTAxMmY3MjBjMWZjMTU1Yzc3MSBweTNrCis4MzE4MiBmMjE0YWQwOWMzODQyZDEwNTQ0NjAyNjE5YmRiZTg5M2I1YThiNzcyIHB5M2sKKzgzMTgzIGUyZDYyYjVhODczMDExZTZkOWU2ZmExZmY3ZmIwOWQyM2FhNGU1MDAgcHkzaworODMxODQgZTkxOGFmZDM1MDg2ODg0MmQ5NWRhMDI5ZDBiODcyNDMzZTlhYmQ2NyBweTNrCis4MzE4NSBmZDliNDIxY2RiYWY1NWM1NGM3YTE1NGM3ZDBmOTE4Zjk3ZjY5ODExIHJlbGVhc2UzMS1tYWludAorODMxODYgNWI1YmNmNGI5ZmIwMjFhNmUwMTIxZGU0N2IzODU1ZmYwODQ0MzVkYSBweTNrCis4MzE4NyBjM2Y1ODMzZGI4NDMxY2RlZTNhNWIxMjQzN2U2OWU0Yzk3YzViZmJhIHJlbGVhc2UyNy1tYWludAorODMxODggNjg1ZDM5MThmMmE1ZTFiYzk0NDE3YmZiNTk5N2JiNWQyNmYzYmY1ZCBweTNrCis4MzE4OSBiNWYzZjc0MjMzMTg2NzE5NGQwMDhiZDA0YjUxZDNjYzE5ZWQ5Mjk5IHJlbGVhc2UzMS1tYWludAorODMxOTAgMWNkNDU0ZGE0OTI4YjNlY2E2NTI0ZmY3NTNhYTE3NDI5YzRkODJhZSByZWxlYXNlMjctbWFpbnQKKzgzMTkxIDgwMzI1MGY1YzRjMjY4ZjQ0M2JlMjdhY2YzNDVhNTIyMWU4YWM0N2UgcHkzaworODMxOTIgMTZmNWNmYjE2YzZhY2MyOTZjNGFlMjQ3NTUwZWEzNTdjMzgxNmFlNiByZWxlYXNlMjctbWFpbnQKKzgzMTkzIDQzZGMxMjk4OTJhZGRiYTBhZTAxOGM3MmJkNzFkOWY0ZThiYmFhOTMgcmVsZWFzZTMxLW1haW50Cis4MzE5NCBlNGFiMGZiYmJjOTQ2MGVjYjA3MGQ1YjNmNzY5YTc3YWMzYzI5ZjE3IHJlbGVhc2UyNi1tYWludAorODMxOTUgNGE3YjM5NWVkYjY5ZDc2ZGRjMTI3OGNmMTgzZGIyOWMyOWE5Y2RkYSBweTNrCis4MzE5NiA1ZWRjZTE0YjYyODc3MzI2ZjAwYWZkZmNhNDM0YmQyNDk1MWNhYWZmIHB5M2sKKzgzMTk3IGFjN2ViNmVhZWY2ODg3N2NmODIwYWVmZWFmNTgzNmU4MTNjMjNjMTYgcHkzaworODMxOTggNzRmZDdlODBiMWJlNDIzNjg4YTVlNjY0ZTNhMzA4YmQxZGVmMDQ4OCByZWxlYXNlMjctbWFpbnQKKzgzMTk5IDVkNDVjNjUxMzQ4YmUzYjhmMmY1OWJmNjIxOGE2ZjU2MmJjNGM0OGYgcmVsZWFzZTI2LW1haW50Cis4MzIwMCAzMTVjMmI1MjRjNTllOTU5NjExNGM0NWQyZmYwN2Y2OGI2ODlhMmVlIHJlbGVhc2UyNi1tYWludAorODMyMDEgMzA2ODMzZWYxMTlkMWNiNWU5Y2FiNTE1YTkwMTg5NTlkZWNkNjBiOCBweTNrCis4MzIwMiBiYjllZWY4ZDFhYzZhNGZjNThkM2Y1YWQ5NDg1ZWUyYTZlMjJkZGU4IHB5M2sKKzgzMjA0IDhlOGNiMTY4YTA4OWY3NDZhYTE3MDAwNGQ0YjNmOTRkZGI2OGZjZjAgcmVsZWFzZTI3LW1haW50Cis4MzIwNSBlMGJjYjk3MDM0NDJkYWQ4ODRlNDNkOTcxZTVjMzM3ODg0ZWI1YTkwIHJlbGVhc2UyNy1tYWludAorODMyMDYgNmQzMWI2MDM3MmM0ODM3Y2ZmMWM2ZDIyNjE0MTY2OGYyZDkyODZkZiByZWxlYXNlMjctbWFpbnQKKzgzMjA3IDE3NDNkZmVlYjliMDNkNmI3YjU5ODRhM2EwNDk3ZDExOTRlOWUyYWQgcmVsZWFzZTI3LW1haW50Cis4MzIwOCBlYTNiNTM1MTM2ZTdmODUzMjllNGNmZGU1MTM4NzU0OGJhMDE4NDkwIHJlbGVhc2UyNy1tYWludAorODMyMDkgOWJjYmMzNDM3NzhmM2NkYmI5MjgwZDJiZDBlYjhhMzI0ZTNjMmZlNSBweTNrCis4MzIxMCAzMTE5YzRkNzI3NmIxNWVkZDYxODk5ZjhkOGVhYTIxMDIyM2EzMzg1IHJlbGVhc2UzMS1tYWludAorODMyMTEgMGJiNDdjNTFlOTMzZjg2OGVlM2I0YWY4MDY2M2FiOTdkNTRmNDA3MyByZWxlYXNlMjctbWFpbnQKKzgzMjEyIGFhMTlhN2NjMWJmMzUyYmJkZTg2M2Y5YWUxYmM2YWE0NjA1Nzg2YmQgcHkzaworODMyMTMgNzllMzc2ODI0YjM4OGE3NmIyZDcyZDM0NjFiNTExNDlhNjUzZDhhZiBweTNrCis4MzIxNCAwMTMyZTRlZTllN2YyNDFjMDMwYzU2NWJhYTRlNjliYTU5OTYzNGYyIHB5M2sKKzgzMjE1IGQ1NWQyMWMzOTZjNWNkMjE5YmMyMzI0NTlkN2UxZmM1YjMwNTBmZDcgcHkzaworODMyMTYgYmU2ZDAxNGRmOTU2MGE5ZGU1ZGU3NGQ5ZWI0YWQ3NmNhNTM4ZGY3ZCBweTNrCis4MzIxNyA1MTQ2NmQ2NzcyMmUwNjEwMTFiZDEyNjJiMTRkYWRkMTI4NWI5MzAyIHB5M2sKKzgzMjE4IDNkOTk2OTY2ODlmOWIyYWQ5MWJlYjJkMDQ1MmJkNjcxYWQ2Y2QwZTAgcHkzaworODMyMTkgZTJlMzJhODY5ODEwZGY4ZjdjMWFmMTU2ZTkwY2U4MGVkNmUyNjg1NiBweTNrCis4MzIyMCBlNWEyZjUwZmVlNjRlMTIzM2E3MjhkZTY1N2FkZGNmYTg4NDM3ZjNhIHB5M2sKKzgzMjIxIDA3MTYwOTA2MGYwNTVhZjkzNjFhNWVhMzcyMTdhZjNkNmJhZWRkNTIgcmVsZWFzZTI3LW1haW50Cis4MzIyMiA1MmJjMTk0MDVjMGYzMzIzYTNkNWI1MjAwYjkyZTBmMDMzNGZjMjM3IHB5M2sKKzgzMjIzIDA1NGYzMjc5ZTNjY2U5NTYwYjM5NTY0NTFlMDJhYTViMzI4ODMzNjggcHkzaworODMyMjQgZWUzN2JjYjhmMDNlNzIyZWVmOWY3ZWU4OTg0N2Q0NGM0MTc1MGMxZCBweTNrCis4MzIyNSAwNTY0MzYwNjUyOTBmNzJiNWRmN2QzMGI3MGYzZjdlMGZjYTAyYmJmIHJlbGVhc2UzMS1tYWludAorODMyMjYgYTI3NDY4YWY1ZWMyZGI1YmE2NDM0ZDljNzVmNDZiNTU1NzRiMGI0NyBweTNrCis4MzIyNyAwNTQwZTY3ZDc5MjQxZjc5MjU5ZmNkYTEzZDg4ZTRlMmY0OTllMDNkIHB5M2sKKzgzMjI5IGY2ZDNiZjRmYWE5YTdiNTg1N2Q4M2QzYjE1ZjBlZWRlMjFhNDA3MGUgcHkzaworODMyMzAgZjIwZmY5OWEyNDI3NWYyZGZkMzAyNWExZDIzOTVlMjE5ZWJmZjVlYiBweTNrCis4MzIzMSA4MzQ3MTVmYWYxNjVhNTAwYmU5NjFlNGMyMDNhYzRkY2Y5OWY2MTE1IHB5M2sKKzgzMjMyIGM1NWZhZjQ3NDU5ZTJlYjc3M2U3NGNmM2IzYmZmMGM0OThmNjM0OTYgcHkzaworODMyMzQgMTI1MGIwNjhmMzE3MDFkOWFhY2EyYzdmM2VjYThhNmUyNjMxNjYzYiBweTNrCis4MzIzNSA5NGIzOTAzZGUxMDc2YjJiMzI1Njc1ZjU5OWQ1MTg2ZTJlNDM3YjQ4IHB5M2sKKzgzMjM2IDkxY2JiNTVlMjBiZTU0ZmEyNTliZGRkYmNmOTQ0ZDdjY2U2NDg0MGMgcHkzaworODMyMzcgMTYxODliN2RhM2I2MmY0NmY3ZTZiNmE2ZjUyOGZmZGEzZjRlMjAwMiBweTNrCis4MzIzOCBmNDM1YjdiOTg2OTA5N2M3ZGQzNjdiZjAwNmYwZTIyM2VkMmI0Y2JjIHB5M2sKKzgzMjM5IDI5YWI1MzZjZmVmNjdmMjlkNjhhMTVkMTE3ZGNmN2UwZGM3NDFkZmUgcHkzaworODMyNDAgOTAyMTMxYjMxOTIyN2Q4MThhN2UyODRlMTcxNDU1ZTk1MTY3NDA0YyByZWxlYXNlMzEtbWFpbnQKKzgzMjQxIGI3NWNhMjVhMTQwYmFjYzdlZmJlNGIzYzllYjEwNmEzNTBkNzlkZTIgcmVsZWFzZTI3LW1haW50Cis4MzI0MiA4OWQ3OGI2NjdkMDdiZTU0MTIwNTZiMmEwNDY2MGE0ZGFkMTljNDY2IHJlbGVhc2UyNi1tYWludAorODMyNDMgNGFlMGUxM2U5NDY2M2ViNzIzZWRlZmVmODE1ZGVhOTM5ZGExNDVhZSBpbXBvcnRfdW5pY29kZQorODMyNDQgOTcwN2M4NTUxNDhmNjhlNGRkZTEyNmJjMjE1NjEzODIyNDhhMmE1NiBpbXBvcnRfdW5pY29kZQorODMyNDUgOGE3OWNhYTRmNDczMjcxZGVkN2JkMDJjYjdkYTFkN2FkY2Q3MDA1ZCBpbXBvcnRfdW5pY29kZQorODMyNDYgMjdjNmE5NDg4OTQ4ZmRkNTc3N2MzNjZmMjNhMGRkZmFkZmYyOTJjNCBpbXBvcnRfdW5pY29kZQorODMyNDcgYTE1ZTEwZDFjZGMwZGZmNzhlMDg3NDc1NTczZjdkNDc1OWU3N2ZlNyBpbXBvcnRfdW5pY29kZQorODMyNDggOWE3NGM3NWRkODI1MjVmYjFhNDNmZmUwNWQwYWMzYzY0NGNjNjNhOSBpbXBvcnRfdW5pY29kZQorODMyNDkgZWQwOTAxMTZiNzM0ZjdjMzdlMjA2YjlhYzg1NmRlYWY2MjY4NzE5YyBpbXBvcnRfdW5pY29kZQorODMyNTAgNjIxOTk1OTEwOTM5MmUwZTU5NTMxM2ZmMDJlMjEwYjNkMDAxOGUzZiBpbXBvcnRfdW5pY29kZQorODMyNTEgMDk4MzU2ZjVjODQ2MWQzNGRiZTE3YTk0MWEyYzcxNGIwMmViZWY1OCByZWxlYXNlMjctbWFpbnQKKzgzMjUyIDMyNmIxNWQ4YzM0MTM2NTg3NTM5NGE5N2VkOGM5NjE2ODUyMDgwYjYgaW1wb3J0X3VuaWNvZGUKKzgzMjUzIGRlM2ZmZjQyNzJjODRiOGY0MDI0Y2FjNWY5ZTczMzk5ZDVkOWQxMzggaW1wb3J0X3VuaWNvZGUKKzgzMjU0IDgwN2JlZWZhZDUxYzRiZTU2N2QzYWNmZWJkNGM1M2VlN2M1OGU5YTcgaW1wb3J0X3VuaWNvZGUKKzgzMjU1IDA2MzM4MTU3YjRmNzA4M2UwYjhkZDM3NDcwNTY0ZGI0ZmI0MWUzM2MgaW1wb3J0X3VuaWNvZGUKKzgzMjU2IDA0ZTQ5MjVlNWE4Y2Q2Y2E5MTBkMzFhODIyODQwZDU2ZWNmZWU2NWIgaW1wb3J0X3VuaWNvZGUKKzgzMjU3IGRjNWRhMDIxMzZlOTg5ODJjMDJjOGU1MGI1NjZjNWQzNjc3NmE4ZjEgaW1wb3J0X3VuaWNvZGUKKzgzMjU4IGE0ZTBiN2FmNGJhNDRiMDIwNTdlZDg0MTAzMDA2ZGFhYWM1N2VmYTIgaW1wb3J0X3VuaWNvZGUKKzgzMjU5IGE5NjZjM2Q0M2E3ZWFhNjExMjQwZTlmOGM1MTZjODE2YjUyZjQyZGYgcHkzaworODMyNjAgY2IxOGJjOGRkNDY5M2E4NGNmZjRkYTllN2ZjOGI4MTMzNmZjNzVlYiBweTNrCis4MzI2MSAwYTE3NDhlMTNkZTk2ZGM1NTdjNWVhZGMwMTczMjg0NDNlMWMzNTk5IHB5M2sKKzgzMjYyIDBmNmExZTQ3NmQzMTBjYWVmMDQzMDI1YTM0OGU2ZWY4ODczZTJhMzcgcHkzaworODMyNjMgNDg1NTdkYjBlZWVhMThmODkyNTM3MWQ1YTQ1NDUyMDc0NmIzMTU1ZiBweTNrCis4MzI2NCAyNDk3NWFhZDQyNjgwOWE4YjA0YzJjNzdlY2VjNTIyMGQ0ZTZhYmY5IHB5M2sKKzgzMjY1IDcxMTFiNzk3ZWMxMTVmYzM0YTRjZmJlOWQ1ZGRmODI0MTUwYjk0YmYgcHkzaworODMyNjYgYzViZmUxODYwYTVkODBlMGRlZGY3ZjIzYzM3Yjc4NzkwMjc5ZTU5OCBweTNrCis4MzI2NyAyOTQxMjNhZWQ0NmI2NTEwZGUzZTY4OTdmNTFjN2VlMzRhMzZkMWZlIHJlbGVhc2UyNy1tYWludAorODMyNjggOTcwNGI5ZDgxMGU1YjcxZWI3NTk0NjhjZThhODk2MWNlNDQzMzhmYyBweTNrCis4MzI2OSA4NDA2MzNkMzcyYmNkYWVhZWIyZDgyYTBjZTQ4MDk1NGFlOWE3MzJjIHB5M2sKKzgzMjcwIGVmZDk3YTAzOTM3NDlhNWY1ZTg4NmM1ZTdkZDViYTczNWUyMmMzODYgcHkzaworODMyNzEgMDM3NmU2NDM1ZjU3YzEyZDQ1ZTE2ODA1M2JiNjExMmRmYzMxNDhiZCBweTNrCis4MzI3MiAxYzVmNjBmMzgxYjI2NGFjZDZmNzE0NGYwNzc2MzY4N2NkNTMxYjA0IHB5M2sKKzgzMjc0IGFkOThiNTI1YjU4N2M2NmFkNmFmYmU2MjIxMjZjYjQ2ZGFjMjA4ZWQgcHkzaworODMyNzUgNDBkNmE3YzE1ODM2YTJmMTY3NDJhMGU0ZjViNjVlOWEyYzJlNjg3NCBweTNrCis4MzI3NiBhMWUyYWY2NTM3ZGZmZjIyNDFkMDQzNGM2YTY0NjUzYmFkZGZlMDdlIHJlbGVhc2UyNy1tYWludAorODMyNzcgNDM4MGZiMjI2YjExMjcwNWJmNWVkNTNkMzE2Y2Y3MjhhZTA3NzQwOSBweTNrCis4MzI3OCA1NzliMzM5YWIxNWY1NjZiYjVlNDRmZmJhMDBkNTE4OTkzZjY5ZjllIHJlbGVhc2UzMS1tYWludAorODMyNzkgMjk4Yzk2OWY1NjViOTY1YmY3YzFiYjFkOWFiMDczNjY4NWFjYzY2NyByZWxlYXNlMjctbWFpbnQKKzgzMjgxIGE3Y2MwOGI0YmEyNjlkOWE3NGE4YTQ4YmExY2I3ZGRjMjgzMDE5NzAgcHkzaworODMyODIgYWJiYjQ5YWQxZmMzMzMwNjllMjQyNTU4ZWUyYWJhZGIwZGM4MmQzMSByZWxlYXNlMjctbWFpbnQKKzgzMjgzIDM4MTE4MGE4ZjQ0NzEyYmMxMzQ0MDVkNjFlZDI0MWRiMGJmNzY2OTcgcHkzaworODMyODQgOTM0YjA5MGRmZWM4MGVkNGI3Y2U0YjZiMGE3MTc0ZjhmYWZjYzFhNCBweTNrCis4MzI4NSBmZTRiYjdjYjFmZTg3YjJjMTAyZmZmMWIyN2RmZWNiNTIwMjdhMzUwIHB5M2sKKzgzMjg2IDJjOWE4ZTYxMTJiMzk5MjAxMTY4NTQxYmNlZWE1NWRhNWU1NzZiYWIgcHkzaworODMyODcgNDZkMmVjNzhlZjc5NTc2Y2E1YjljNjM1NzRjODEzYjU1OTI5MDg2NCBweTNrCis4MzI4OCBiY2Y5M2UzNzY2ZThlNDAzYmUzMGExODc1NzUwN2Q5NWJmOTk5NzJiIHB5M2sKKzgzMjg5IDc4YTNkYjJmN2UwZjE3MTBlZTkxYjkyYmJhNjJhNWMxY2ZhYjA1NjUgcHkzaworODMyOTAgMjBjYzkzMTc5Njk1ODZkOWZkYmQwMTA0ODZmZDVhYzQ2OTNmYWIwNSBpbXBvcnRfdW5pY29kZQorODMyOTEgYzNiNjczYjk0NjEyM2Y5MzUzMmEwMmI5NTQwMDdjMTgzMzlhZDkxYSBweTNrCis4MzI5MiBiODAzY2MyZDZhNWNiZjc3ZDFhNGFjN2MwN2Q3MGJiMjI0ZjQ5NjU0IHB5M2sKKzgzMjkzIDY3MGQ0Y2JmMTQ2NDUyMmFiNTQwNmVmYzE2MTA3MDNkNzAwN2M5ZTIgcHkzaworODMyOTQgNzg3MWFhZjExMWEyNWQyOTkwMTY5NGMxYjg1YjdlZDNmMjYxN2NjZiBweTNrCis4MzI5NSAxMDAyYzNkYzkwZDFhNWE3YjI5MjA3NjVkNDdhZjI2MjhkMWUzZTJiIGltcG9ydF91bmljb2RlCis4MzI5NiA0NjcwMTk1ODhmY2M3YjIzNmRkM2VmZjk2ZGQ3OTI5ZGIxMjYyYTc2IHB5M2sKKzgzMjk3IDA4Yjk0M2ExYTkzNDRkM2M4MGMwNjI0MzQwMzBiNWYzZWRlODlkM2QgaW1wb3J0X3VuaWNvZGUKKzgzMjk4IGM3ZGM1YzdiN2FmMTk1Zjc0YzY2NmE2MDYwNDA3MjQ0YTllYTViN2MgaW1wb3J0X3VuaWNvZGUKKzgzMjk5IDNlNzQ4NzNmMjFlYTU5YTNiZTIzNzQ5MmUyNTcxYWFjYzAzOTRiY2YgaW1wb3J0X3VuaWNvZGUKKzgzMzAwIDhjZjZkMjY0NDk3NTdmMjRlNzlkYTViYjRkY2YwMjQ5YjBjNjJkZjAgaW1wb3J0X3VuaWNvZGUKKzgzMzAxIDY1ZWUwYmM5NzQ3NWYxMzJkNWY2NzFhNmU0MDk0NWUwOWE0Nzk5YTYgaW1wb3J0X3VuaWNvZGUKKzgzMzAyIGQ2ZWJlZGNkNmVjNGU4ZTU0ODVmMDFkYTY2YjhkNzUwNzgwMzM3ZGQgaW1wb3J0X3VuaWNvZGUKKzgzMzAzIDUxMDVjMTJjMzFiMjdkOWIyODc5MjI4NDkyZDU0NTYyZjQxZWZjNzMgaW1wb3J0X3VuaWNvZGUKKzgzMzA0IDg4MmZkODU1ZjEwMmI0MzkyZWYxM2Q5ZjQwZjY4ODMxOTUwNGU1YTAgaW1wb3J0X3VuaWNvZGUKKzgzMzA1IDg4YWRiNjRhN2FmZDliZTdiZTJjNmMxMjc0NGUwMTI1MDIwMTc0YzkgaW1wb3J0X3VuaWNvZGUKKzgzMzA2IDAwNDk2MTgwMWQxODY1NjI2NmFjNWM1N2JlMjMwNzMxNDY1OWIxY2IgcmVsZWFzZTI3LW1haW50Cis4MzMwNyA4NDVjZWYyZWIxZDdjN2U3MzFjNjUyYjUxOTFmOWRkMjgxZGExN2U3IHB5M2sKKzgzMzA4IDdjNGE3NzYwNDAyNzczMmY2MDA0NzZmODM1ZjRlMmFiNjcxNTQ4NGMgcHkzaworODMzMTIgNjYxZTRiZjg1YzU4ODVkMmRjMDIwYjZhMDhhYjc0YzdmMjViMzExYyByZWxlYXNlMzEtbWFpbnQKKzgzMzEzIGMyZWEwNTE2MWM5MzA5N2M0MjBmNGQ1ZDA4YjI4NGE0YmNjMmQzZDEgcHkzaworODMzMTQgNTg5NDU5MGU5YzhkNWZhYmJiYjcwYjJhMDY2NDkyN2EzMjU0ZDhjOSByZWxlYXNlMjYtbWFpbnQKKzgzMzE1IGMzYjEzNjI2NjUzODhhYzllMDA4ZDlkZDMyNjI4NzBkZDk4NTJiZDYgcHkzaworODMzMTYgMzJkOTRmMzE2ZGE5ODQ3ZmZlMjZiNGNiMjI3NDNjYzI1M2YyM2M0NSBweTNrCis4MzMxNyA3YWE5NzU3NzcyMDIzZGIxNDQ2NDNjZGRkNDg2ZmJiYjQ1NTAzZTEzIHB5M2sKKzgzMzE4IDZiMjNhYTMwMDAzMjFkNzljZDE5OWFkNmU3YzE4YTc5ZTRiNzAzNmEgcHkzaworODMzMTkgZTE3YjE2MDBmNDQwNmI2ZWUxOWYwMmVjZGNjMDhmNGFiODhhMjc2ZCBweTNrCis4MzMyMCA1NTBiMzhjYWY1YzFmYzdiZmFhMDAwMWJlNjc0OGQzOWE0ZDg5MDQwIHB5M2sKKzgzMzIxIDhiNDI2OTNlOTViOGMzNzgzYjUyOWFiYjk4YjNjNWYxYzg3N2QxZDkgcHkzaworODMzMjIgZjU3NGEwNzE4ODZkZDdjNGFjNGViODRkNmYyZTNlYjRhYmU5N2QyMCBweTNrCis4MzMyMyA3OTAzNTNiZWNmOGNlY2I5YzU1MTJiNGU2YTEyNzBmODczYzY3NTgyIHB5M2sKKzgzMzI0IDU3ZWEwMDUxNmVkZWE5NTYxOTMxNDk0YTliMjA0MjQwZjVmMmYzMTcgcHkzaworODMzMjUgNmY4ZGVmZDAxN2Q3MzZlNzA1MzJhMWUwNWU1YjFiOWVhMGE1NGQzOSBweTNrCis4MzMyNiA2ZTEzZWFkMzg5NTYwNDg4MTEyZTZjYjFhYTNkZTA1YTM4MDJjY2YwIHB5M2sKKzgzMzI3IGE0NWIzOGRjZGYxNmNhMDA2N2RhZjI5Njg4MmZkMjJmYWQxYzJhMTYgcHkzaworODMzMjggNzQ1NTFjMGI1MTNiNmM5ODMyMDhiYmJiYWVjM2EyOTExYTZiYWJkZCBweTNrCis4MzMyOSBmYjZhMTM4MDdhYzk1YWUzMWFiNTU5OTBlNWUwNTE5M2VkZWM1ZDJlIHB5M2sKKzgzMzMwIGZjODE1ZjNiMjc4MTI3NGM4ZjhmOWFmMTU0YTkxNGI4OWU4OTk2MTYgcmVsZWFzZTMxLW1haW50Cis4MzMzMiAxYjUwZTYyN2M2M2FjZTVmMDIzODhkYTAyOWIxMDQ2ZDc2Y2E0ODYwIGltcG9ydF91bmljb2RlCis4MzMzMyAxOWZmMzYwMzI3ZTc4MzgyMWFiZWExZjk2OGFkZTAxMmJhNjNlYWQ1IGltcG9ydF91bmljb2RlCis4MzMzNSAwNDNjYWFjNmM4NzU5MzEzYThiZjM3NGQyNmZiMjg0MjBmNzc4NmViIHB5M2sKKzgzMzM2IDI5ZTYwY2U2M2FlNWJlMDZlMWU3ZTNhODYwZDgxMzljOTRhYWNhMTYgcHkzaworODMzMzcgZTQ4NmQxOWYyYjBiODFjM2I5MDYyOWRlNDU0OTk5OGU0NzU0MzUxYSBweTNrCis4MzMzOCA4YTgwMWEzYWNhMzQ5OWExYWEwYzI0MTI4NDE5ZDkzMGFkYzhlOWIyIHB5M2sKKzgzMzM5IDQzZDE0YmJkNmViMTE3ODQyYjdiZjFmNjczYjc0Y2RjZDlmMmMyOTkgcHkzaworODMzNDAgZGVkNThlNDQ5ZGEzMzJlNmY1NjFmM2FiNDZjZTBkMjFiYTNmZGFjNCBpbXBvcnRfdW5pY29kZQorODMzNDEgMTI1ZjU0YTcwYWI4ZmJlOGZmZjUyODliN2E3NWEyNTYwN2QxOTIzOSBweTNrCis4MzM0MiA1OTQ3YjFiYjBmZWNkYzE3ZTUxM2ZjN2Q0ZThkM2MyNzYyOTU1ZGI3IHB5M2sKKzgzMzQzIGIzN2I3ODM0NzU3NDkyZDAwOWI5OWNmMGNhNGQ0MmQyMTUzZDdmYWMgcHkzaworODMzNDUgZmNlNzhhMjA4ZGIyNzBiMDNjYzg5NTU0ODU5ODMxNzYyZmVmNDk2MyBweTNrCis4MzM0OCAwOWNhNDY0OTA3MDdlZjlkZTQzZTVjZDUwOWQzZGU5NGQ3ZmJhOTRjIHB5M2sKKzgzMzQ5IGE2YjcxOGU4MTQ0ODBjZmM2YjMxZTNhZDIzZjBiNjg0ZGVhMWVhMzggcHkzaworODMzNTAgYzU1ODc2YTZmYTNjYzAwMGE5M2FlZmVkZGI2ZTM2ZjVjMDI3MDQ5OCBweTNrCis4MzM1MSBiMTJkZGE2MmU5M2JiOTRhYzBhM2UwODBjNDRiNDYzOGI1ZWQ4OWZjIHB5M2sKKzgzMzUyIGUwMWQyNmEzNDY4OTljOGFjNTc5ZTQ5MDk5ZDdhYjJiZTliZDcxYmUgcHkzaworODMzNTMgNGRhM2M1NzAzNDNiYjExZTA5YjUxNmEzYWIxMzRmYTgwMGYwNzhhYyBweTNrCis4MzM1NCAyNWY2ZDU3MGU3YzE2MTI2MTNmN2YyMTgwNjM0NGE0MTNiMjMxYTA5IHJlbGVhc2UyNy1tYWludAorODMzNTUgYmU2MWM4MDhiNTI4OTZmMmUyYWJmODVhY2I5N2ZkZjJhNjI5NTAxZCBweTNrCis4MzM1NiBlMjUwZTg4NTI0ZDViMDliMmRjYmUyMDIxYzMzNTc5MmU3YjYzYTIxIHB5M2sKKzgzMzU3IDhiZGJkMzJjMmViYmRkNmEwMmJiY2QxZTIzN2ZhMDI2N2QzMmQyY2UgcHkzaworODMzNTggZjljYzA5ZGFjZWRhZGQ0YzUyYjkxZGEyNjBmMzBlNzJmZmIzYTJmOSBweTNrCis4MzM1OSBhYjg5ZDBmNTJhN2YzMGI3YjYwOWU3NGY5NjA3ODQ5NjdmYTdkNmU2IHB5M2sKKzgzMzYwIDllYjRiYTQ1YTZiMjg2YjZjNTYxMmM1MmU1NGExMDIwOTY0MTU2MjIgcHkzaworODMzNjEgZTIzN2IxNWMyYmU5OTQyNDM2MmM1YTk0NTE1NzMwNzg1OThlZDg5OCBweTNrCis4MzM2MiA2ZWM2Njg2MjJkNjRkOWNhMzAzZmUwNTVkYTkyYzhlMzgyMzkxZWZjIHB5M2sKKzgzMzYzIDZlZWVkMzUyNjYzNDI3NDc4MDUyYTcxNGUzMzE4N2EyN2E0N2JkNGEgaW1wb3J0X3VuaWNvZGUKKzgzMzY0IGIyNDg0MWMzMDliZTU0NjgxNTExY2E0NzMwYzQ5OTY2OTYxYjhjN2IgaW1wb3J0X3VuaWNvZGUKKzgzMzY1IDE4YjI3MzRmN2YzOGNjNWVlYjI5NmUwNzBkNDk5YWUzMGI0ZWE5OTEgcmVsZWFzZTI3LW1haW50Cis4MzM2NiAyNjNmYWRhMjU2NWRhMjMzYzIxZDY0ZDVjODVjN2Q0N2E4OGJhNjBlIHB5M2sKKzgzMzY3IDI2NTY1ZWJkNWUzMmVlN2Q0MTY1NTkwYTIxMDJmZTJmMzE3NDM5YjggaW1wb3J0X3VuaWNvZGUKKzgzMzY4IDZmNWJhNzEzMTZlNzE2MWI3N2ZmZmVmYzM5N2JjZTMxYTcxYTI3NTYgcHkzaworODMzNjkgYWY2OTJlZTkwZjY4MzgwNTZlOGZmOWM5MmViMTQ3MzliMWI4YTM1MiBweTNrCis4MzM3MCAyOGYzN2EyYjQ0NGJmMzU0YzdhZTc0YzcyOWYwZTA0MTcyMWFiZGNhIHB5M2sKKzgzMzcxIGUyYTlmNjMzZDYxMjZmYWZmYzc0MjI5ZjVjNTMxM2YwNGRmNzdmYjUgcHkzaworODMzNzIgMWNlOWQ0ZmIxM2MyNjUyMDIwOWJhN2FiNzM5M2Y0OWNkMzY4NjMzNyBweTNrCis4MzM3MyA2NWFmN2JlNjE0YTQ4MThjOGY0NGEzM2E4YjM5MmM0OTcyYjEyNzdiIHB5M2sKKzgzMzc0IDViMjRkMWUxODI2OTlkMTFmYTgzODUzMzk3MjRkNjM5M2NmNDQxODcgcHkzaworODMzNzUgMjFkOGM0MmMwYjEwNzgwMDk2OGQwY2NhZTU5OGViYWYyMTMzODMyZCBweTNrCis4MzM3NiAyODEyYmZkODRiNTAwMGE1YWM1N2ZlMjNlMzM5OTkyMGE4ZDYzZGViIHB5M2sKKzgzMzc3IDM4NzA0M2QyMDgwYjUzZmQ4M2ExOTc5MjE2MjNjNzg2N2E1ZmZkNDMgcmVsZWFzZTI2LW1haW50Cis4MzM3OSBmMjljMzE5ZmY1Njc5YTNmNjQxZTQ4OGYxNjkxNWQ2OTExOWMxOWZhIHJlbGVhc2UyNi1tYWludAorODMzODAgNDYwM2E1YzQ2NzVhNDMyMDI1NTUwODg3OTM5YmYwNmJkNGQ1MTM3OCBweTNrCis4MzM4MSBlODA1NzdkNTZhOGZjNDgzZDAyYmRkNDJlZDk4YzdmOGZkNzAyOTk1IHJlbGVhc2UyNy1tYWludAorODMzODIgZGNiMTZkNzAzNjUzOGExZDM3ZTAwYTgyYTE3MDFiNDYxNDQ4ZmNhOSByZWxlYXNlMjYtbWFpbnQKKzgzMzgzIGVkZGE3NTk2YzgzMTI3OTVmYjI5NWMxMzFmNzcyY2UwOTUxMzNmYzMgcmVsZWFzZTMxLW1haW50Cis4MzM4NCA3OGJjYWZmMGRkMmIwMmFjYmJiN2JjMThhNmZjNTcxYzg4NzZkMjcwIHB5M2sKKzgzMzg1IGRhZDA4NWM4ZGUwOTliMWI2OTc1MDJkMjI5ZTkyYWNkYjhjMDdkMjcgcHkzaworODMzODYgNmRlNzBkNDliOTE2NWFkODVmNjcxZmI1ODFhNDE2NTk4YWFlMmQxYiBweTNrCis4MzM4NyA5NzBiN2NkNTI0NTNiNWVhMzdjZGIzMTJlOGQ3NzBiYTQ3NGZhNWJlIHB5M2sKKzgzMzg4IDczNDQ0MjdlODdkZmNiMzU5ZTg0MjAxYTUyNDEzZjU1M2Q1MWIxOGMgcHkzaworODMzODkgNmJmMjkyZTkwNmMyYzIzZWIxMDRhMGRmNDE0OGFlOWI5NGU3OTM2MyBweTNrCis4MzM5MCAzYzRiZDg2MTMzODNlNGQ2MTUwMzk4ZGEzOTliMzA4NDQ3M2NjNWRlIHB5M2sKKzgzMzkxIDU0MTBlMTE2N2Y3ZDNjNTM1NjQ4NDY4NWYwYmRhNDlhMmM1MzAwMjkgcHkzaworODMzOTIgNmVmMzJkMjA4ZmNjNGY0ZTc1YzlhMmYzMTc1YmFjYTJmNDkwNmUzMiByZWxlYXNlMjctbWFpbnQKKzgzMzkzIDMxZjRjNGI2YzQ0NTAzMzA2ZjNhNDNmMTRjN2EyZmNhNmNhNGFhYTggcHkzaworODMzOTQgYTRhZDEwOTc1Nzc2YzU4ZTlmNWU0NTcxZDcxYzViMjk3NWU3NDFkMyBweTNrCis4MzM5NSA2NmNiMTVjNjJkYjQyZTZkNzUwYWU2ZTljYTZlNzViMmEyOWYxZWY4IHB5M2sKKzgzMzk2IGYyZjc5NjE5ZjZhNDk0NzA1YTgyMDRlMTdlZGY0OWIxNWFhNjIwYTUgcHkzaworODMzOTcgNWVlM2UyNzEyZDdkY2ZiZjdhMjM4ZGUyODNkZDNhYzM4N2ZkMmFjYSBweTNrCis4MzM5OCBjYjIzMWI3OTY5M2U0NmRmZWZlMmFmYjAxNzJhMzgzYTk1OTVkMTQ4IHB5M2sKKzgzMzk5IDZkMzVkNmU1ODU2MjFmZjNlNmYxZDY0Mzg0YjA4NTQwZGRhYjNhNzYgcHkzaworODM0MDAgODk3ZmQ1MTA1MWJiNmYyNmFlYTBiYzllZWExMDVhYzg4ZGUzYmMwMCBweTNrCis4MzQwMSAzOThmYTdiNzc1M2FlMGE2Njg2OWU5NjIyYTZjODY0Yzk4ZDZmMDg3IHJlbGVhc2UzMS1tYWludAorODM0MDIgNTFhYWQ1MDljMjBmMTUxNTk1NTFhZDhiZDM2NjNiMDc3YTk4YzgyOCByZWxlYXNlMjctbWFpbnQKKzgzNDAzIDFmMDI3MWMwMzZlMTY4ZmU0YWIyMDQwYzAxOTI5YWY5ZmU3MTg2NjkgcHkzaworODM0MDQgY2MyZjg2NGJhYzljZWUzYjhjODdhOWIzNDQ0YmU2MTdkZjMyMjJhMyBweTNrCis4MzQwNSAxMzViOTkxZDY1YjYwZTY4NzUxYjA1ZDUzN2I2NjgwZjRmY2I5OTM0IHB5M2sKKzgzNDA2IGNmOTg5YTM0Yzc3ZTMwMzliYTA1NzU1YjUyMDFhODUyM2E2MzdiZTggcHkzaworODM0MDcgODhjM2RiNmY0NzllNDNiOWM4NzhkNTVlNmNmNjNlZGJmOTA5MWY2YSBweTNrCis4MzQwOCAyMjk5M2QyN2ZjOGRlZTRjYmUwYTJmMzkzNTE4MWUxYjIxNjE4Yzk1IHB5M2sKKzgzNDA5IDBiZTU1MDQyMTNkMzgwZjBmYmJjYWI5NDYxZDAzYmUxOGY4NWI4MjcgcmVsZWFzZTMxLW1haW50Cis4MzQxMCBlMzE2NWVlYWE3MDBjNThkMWE2MDI5ZjBkMTkxMDg3MjhkYjgzOGUzIHJlbGVhc2UyNy1tYWludAorODM0MTEgNzQ1OTlkMzk1NGUyOGQ0YzlmNzQ2MTkzZTM1NzhkYjc2NWY3M2M4MSBweTNrCis4MzQxMiAwZmU1NWMyODZlZGZkNDcyNjRjOTdiOGIwMGM5NzA3NmY5MGEwNTgzIHJlbGVhc2UyNy1tYWludAorODM0MTMgNzY2MDVjZmM0Y2YzODNiYzhlYmZmZjMwNjFjYzAzZmFhNjllMWJmOCByZWxlYXNlMzEtbWFpbnQKKzgzNDE0IDYyNWMyMWRkZTEzODBmODFmNTRkNGEyZjI2YzBmZmI4MjYxZDllNDYgcmVsZWFzZTI2LW1haW50Cis4MzQxNSBjODNiYTU1MTUxYjFmMzBkMmNlZDU5ODNiNzRlZDA5NDAyNjUxYTk4IHB5M2sKKzgzNDE2IDMwMjAyYzAwMTQwMTU0ZDUzZDQ1YjNjNzY2NDIyN2Q4Mzk1OGNiMzQgcmVsZWFzZTMxLW1haW50Cis4MzQxNyBlZjc1ZWNkMGUxYTdiMzJhOTU0MGM0MjJlNmMyZjY2M2RhNWM4ZTU1IHB5M2sKKzgzNDE4IGNjMzM1MDhlODBjZDc4MTkyOTdiOWExZGFlN2EzNDExNWZmZWMyYjMgcmVsZWFzZTI3LW1haW50Cis4MzQxOSA3MWZjOTJiODhiMTliODAxZTg5ODliMzhkMWViZTg2YTZhMzcwNTJkIHJlbGVhc2UyNy1tYWludAorODM0MjAgMDFjYmQ5MzIwMjY0NDhhNzUxMDVjZmUwNWRhMDk2ODZlNWJmMzZkYSByZWxlYXNlMjYtbWFpbnQKKzgzNDIxIDg0MzYzYzc0N2MyMTIwYWE0MmI0OGExYmEwNGIxN2UwODkyYmUyYjYgcmVsZWFzZTI3LW1haW50Cis4MzQyMiA5ZWUxOTZhN2Y5YTJhMzJiZTQ0Zjg3NjExZWQ1N2EyZDJjMDY1ODI4IHJlbGVhc2UzMS1tYWludAorODM0MjMgZGJjOGRhODEzNjMwZTYxMGYwZmU1MDg4NTQ2ZmZlZTAyMTY5ZGIyMyByZWxlYXNlMzEtbWFpbnQKKzgzNDI0IDlkZTA3YzU1ZmRkYTI3NjllZGM1Nzk4NWZjOTk3NzY4MmY3MWUwMjMgcmVsZWFzZTI3LW1haW50Cis4MzQyNSBiYzY2ZTE1NjZhMTkyODQ3MmFiZjJhY2UxODg4YjAyMmY5MDMyNzA5IHJlbGVhc2UzMS1tYWludAorODM0MjYgYmY1YzYzMGRhYWY3NTJkMjY4NDMzYmQ4MjNhMjczYTkwNDgxNTE0YiByZWxlYXNlMjctbWFpbnQKKzgzNDI3IDkzYjNhZTYzZDJmMzEzODg0MTdmYmY2NDA5YzQxZjVkOTFmMTM2ZDEgcmVsZWFzZTMxLW1haW50Cis4MzQyOCAxMGMxYjYxNDFkNTM1YzVkZWJiNjBhMTNlZmY1ZDIwOGZhOTUzNzgxIHJlbGVhc2UzMS1tYWludAorODM0MjkgOWYyZmJlZTQyMGRhYzJhMWRjZDMzMjBiMWY4ZmQ3ODk4OWZmYjk2OCByZWxlYXNlMjctbWFpbnQKKzgzNDMwIDBkY2FlNDU1ZWMwNzZkYmQzOGY1ZTlmN2IwNDlkNWNiNTZlYmVkMGIgcmVsZWFzZTMxLW1haW50Cis4MzQzMSBiYTM0Mjc5NjIzMDYzN2E4ZjdlNDMyZjhjY2QxNWM1NTgwM2I4ODNlIHB5M2sKKzgzNDMyIDY2MWUwYjBiNDBiZjFmM2NjOGQwNWM4Y2FiZTVmYTEzNTYwODgwNTYgcmVsZWFzZTI3LW1haW50Cis4MzQzMyAyMGM3MjQ0YmNhNzgwMzc2NWUwZTY3NWE0NmI4MjRiMzFlMjViNGI1IHJlbGVhc2UzMS1tYWludAorODM0MzQgYjQ5MjAxNDg0ZjdmZTVmM2EwNDVkNzNmN2RlYmYzOWEwZjJkYTg3OSByZWxlYXNlMjctbWFpbnQKKzgzNDM1IDkxODAyODQwZjBmNzgzZjFkZDU1NDQ1ZTVkY2MzOTlkNDVkYzNmZDkgcmVsZWFzZTMxLW1haW50Cis4MzQzNiAzNDk5ZWQ2Y2JkMDc3Y2Q1NmM0NmQyNTUzNTUxNzAzMGUyZmFjNjBjIHJlbGVhc2UyNy1tYWludAorODM0MzcgNDkwM2U3NTc3NDU0ODU4YTU3MTRlYzkzOTRiNjFmYzQwODU1ZjUxNCByZWxlYXNlMzEtbWFpbnQKKzgzNDM4IDQ2YjE0YTI5NTBkMDBlYjc2NTM2M2FjMDFhYzg5ZDM5MzU3NDQ5MTggcmVsZWFzZTMxLW1haW50Cis4MzQzOSA0ZjY3OTEwNGNiODZiZGU2NDNjMTliNzMwYzlhMmZjNGQ0NmJlNzg5IHJlbGVhc2UyNy1tYWludAorODM0NDAgNDA0YTlhYzFhOWEyYjdlZTNmYjY1ZTVkYTEwOGMxYTQzYjRkNjM0YiBweTNrCis4MzQ0MSAzYzBmZmUzOTU1N2RlZTU1ZGFkNGVmOGVkZDcyZDk2ZThjOWQwZTFiIHJlbGVhc2UzMS1tYWludAorODM0NDIgYThjZmVmODg0MDhmM2M0NTVjZTQzNGE3OWJiMTNlZTk5M2NiNmQwNCByZWxlYXNlMjctbWFpbnQKKzgzNDQzIDcyMDc5OGExZWU3MTkyMmZhYTczNGFiYTVkY2NkNzdmN2RjMTY3MjAgcmVsZWFzZTI2LW1haW50Cis4MzQ0NCA3NjViZmQ4ZWM5Njg5OGNkNTNkOTQ2N2FmNjk5MjE1NmFhNWE2YjNmIHB5M2sKKzgzNDQ1IDVhZjM2MWFkYWFlOWZkZGJhYzdmNDBiMDhhZTM4ZDJlNGNlMzRjMzggcmVsZWFzZTMxLW1haW50Cis4MzQ0NiA3NWIzZWRkYTNjMmJkOTUzOGRiNjk3ZjM1YmI4MmUxNTNiNWZhYjBjIHJlbGVhc2UyNy1tYWludAorODM0NDcgMTQ2ZmVmMDI0OWY5ZmZjMTBkZjg3OTc2Njg2MDE4M2NmMWVkNWJlNCByZWxlYXNlMzEtbWFpbnQKKzgzNDQ4IDQxNWVhMmMzY2ZlOGE5YzBmMDgzMjIxMmEyY2ZlM2Q1NGVlYzVhZTAgcmVsZWFzZTMxLW1haW50Cis4MzQ0OSA0YTAwMmRhN2ZiZmIzZDk2NjFiNjhiMjJlNGNhMGIzM2ZiZjBlYTRjIHJlbGVhc2UyNy1tYWludAorODM0NTAgM2Q3ODIzZTY4OTdiNzYxMjAwNDUzN2IyNDc2ZjZiMmM3ODIzZDc5ZSByZWxlYXNlMjctbWFpbnQKKzgzNDUxIDJjYTg0MmRjYmUxMWU4NDRmMDFjYTJjYzE0ZWVmNzE3MmFjNTJlMGYgcmVsZWFzZTMxLW1haW50Cis4MzQ1MiA0NzNhODA2OGY2YzU0YTQyNzM1OTNmZGYxMWIwOWFmYmMzODc3YTUxIHJlbGVhc2UyNy1tYWludAorODM0NTMgYmVhYjJmYjI5NmNjZGI2ODEwNjcwNjIwZDJkMWNmNjhiZDNkZDdlZiByZWxlYXNlMzEtbWFpbnQKKzgzNDU0IDAxZDljYTgyZmQ0ZTRlZTMwM2VmZWJkYzhiOGEzODAzZmUzY2VjOWEgcmVsZWFzZTMxLW1haW50Cis4MzQ1NSBhYWQ1NzY2YmYzNmZjNmNjZDk4ZjI3ZGY5MzZmNTAzN2FhOWI4ODlhIHJlbGVhc2UzMS1tYWludAorODM0NTYgYzcwNmY4Njc5ZGZjZTNmNGE1N2NmOTFlN2IxOGY4ZmNiZTIxNzhhZiBweTNrCis4MzQ1NyA4YzEwNDViOTJiNmYxOWQyN2Q3ZDliODA3YTVjZTdhMmEwYWRhNjhhIHJlbGVhc2UyNy1tYWludAorODM0NTggZjA0ZjQyMTM0YTkyMTc0ZmQwMzg2M2U3MDRjZTVkZWQxNDU4MTNjZiByZWxlYXNlMzEtbWFpbnQKKzgzNDU5IDJiYzFmYzJkOGNjMDlkNzM0ZDViOGE0YmU3MmRhMGQ1ZmQ4ZmMzMTIgcmVsZWFzZTI3LW1haW50Cis4MzQ2MCA2OWY4N2Y5ZDMzZTcyMjBiNmJlYjE2OTVmYzgyNWUwNjRiNzI3NmViIHJlbGVhc2UzMS1tYWludAorODM0NjEgYmY2ODIyNWRkMmJjZTZkNWQ5NTcxZDNiOWEzODM4YWY2NTA2YzE2YyByZWxlYXNlMjctbWFpbnQKKzgzNDYyIDllYTVkYjU2N2JkZDhiZmY5MjgwNzY5OWU0MGRhYWIzZDA0ZTM1MTUgcmVsZWFzZTI3LW1haW50Cis4MzQ2MyBjNDMyYWRhYzExNmFkNzE0ODgyYzNiMjZmY2ViMjRiMTZkNDBlYWE5IHJlbGVhc2UzMS1tYWludAorODM0NjQgOTNkMTI0YTgxOTVjYzQ4YTViOWUyY2IzNDhlYWFlMTA5YWRlMDhmYiByZWxlYXNlMjYtbWFpbnQKKzgzNDY1IDlmMWVlY2JjYzM2NjIwZGUxNTgzMzNlODQ1ODg3N2E1YmQ3MTBjY2IgcmVsZWFzZTMxLW1haW50Cis4MzQ2NiAxOThiMmNkM2E2ZDFiODdiOGFjMmI5MzFhMWU4MTdmNWViNDAyMDZjIHJlbGVhc2UyNy1tYWludAorODM0NjcgMzk1ZWNhZTYwMmNiMTAxZTZkZDg2NTVlMDRiNjMzNWZmYjhlOTA0MCByZWxlYXNlMzEtbWFpbnQKKzgzNDY4IDViN2UzNWFhMWYxZDE3M2E4ZmQwZWM1M2RlZWQ1YjMxMzY3ZGE4NzAgcmVsZWFzZTMxLW1haW50Cis4MzQ2OSBjYjUyMjI1NzJmY2Q5M2ViNWIyNmVkNWViODYxOGE4YTk0OWQwOWY5IHJlbGVhc2UyNy1tYWludAorODM0NzAgY2QxMWUxYTFmZDg5YmMxNTZlNDNjMDc3YjMyMWJkOGM0YWI1MTk3ZCByZWxlYXNlMzEtbWFpbnQKKzgzNDcxIGYzNTQxNDY0MmRmZmEzMzViMjdiNzY4NDU0ZjBjYjhmOTU3MjhlNWEgcmVsZWFzZTI3LW1haW50Cis4MzQ3MiAyMjhhMGVmMjNhN2IyZTU0YWE0Mjg3Y2I2NjJkYWIwNGNhOTQwM2I3IHJlbGVhc2UzMS1tYWludAorODM0NzMgOTJmOTY4ZDg3NGI4NmU4MWRlZTZjMWI0OTM1MjA5ZjhlMDUzMDU0ZiByZWxlYXNlMjctbWFpbnQKKzgzNDc0IGY0NmRjZDhhMzExMzVhODMwYTZkYTkyOTg3OWRiMWE5YzNmMjNiZTcgcmVsZWFzZTMxLW1haW50Cis4MzQ3NSAyNzU0NGZiMGY3ZjE0ODU5MDQ5NDQ3MGEzZWFiOGRlMWYyYzM5MDgyIHJlbGVhc2UyNy1tYWludAorODM0NzYgMTMxMmU1OTRlYmU3ODQ4ZTY3NTA3YjBiYzJjNjc0MmQ1MWVlNjUzZCByZWxlYXNlMzEtbWFpbnQKKzgzNDc3IDliZjdhMGY0MmVhYzM5ZjUzOTYyOTE2Njk5NzU0OTYwOWU2ODMyNjIgcmVsZWFzZTI3LW1haW50Cis4MzQ3OCA2YWVhNzA5MjhhNmFjNmQ0OTY2Yzk2ZDQ0YzZhZDUzMTFkZjIzNTBjIHJlbGVhc2UzMS1tYWludAorODM0NzkgMWFiZGJjZmFhMDg5ZDA4MGIxMzZlYmFmZGQ1Njg5NDQ1YTg5ZmU3YSBweTNrCis4MzQ4MCBmMzZhMDQwNzhiZmRiZmViMjY0ZDc5MzMyMTU2ZDAzNWVlMDM4ZTQ1IHJlbGVhc2UyNy1tYWludAorODM0ODEgZWJkNGIyOGY0NmEwZjI5YmJmOWRlNTg3OGM2OGQyNjBiM2MxZDY4NCByZWxlYXNlMzEtbWFpbnQKKzgzNDgyIDBkZDQ4MDAzOGE4ODcyYzg3MmQ3ZWE5MTE4MWRmMzUyYmY0NDRkNDQgcmVsZWFzZTI3LW1haW50Cis4MzQ4MyBkMTViNDNjMjcyZmJiNmQ2NDdkY2JkODE3NjVmOTQyOGFjNTQyNmJkIHJlbGVhc2UyNy1tYWludAorODM0ODQgOTUwMWNkNjQwYzhlODdlMmVjZjExNzY5MjI3MGJjZGE2OGM5NWQ5YiByZWxlYXNlMzEtbWFpbnQKKzgzNDg1IDhmOGJhNGJmYmZhNTA2NDc2NGJjMmZjNDYyZmVmNjViMzFkNDU3ODUgcmVsZWFzZTI2LW1haW50Cis4MzQ4NiA3NDM0MDY3NDliMmQ3MDVjYzM5MWQxNDFlODhkZmRmNTE4NWMxMjYxIHJlbGVhc2UyNy1tYWludAorODM0ODcgZThmYzlhOWUxOTkxYTA3OTk3ODUxNTY0MmNkMzZiYzZhNTJhNmQ3NCByZWxlYXNlMjYtbWFpbnQKKzgzNDg4IGRlNmRlZjc5MzI2YzkzNjY3NmYxZGRhYzUxMWU4YWY4YWIzZjMxMTUgcHkzaworODM0ODkgMmE0YjJmZWM4Mjc3YzdiOGY1ZmI1YzMyMjA4ZTYzMDJjY2MyOTNlNiByZWxlYXNlMjYtbWFpbnQKKzgzNDkwIDJjMjUzZjZlMDJlN2Y5MjU0MDk1YzliZTM3Y2Y4MjllN2UzY2EyMTEgcmVsZWFzZTI2LW1haW50Cis4MzQ5MSAzODgxMjk0OGM1MzIxMTE3N2M5OTkxZDc4Y2U4ODY1MWJkNWZmZGFhIHJlbGVhc2UyNi1tYWludAorODM0OTIgOTdjYjFkZDg1NjZlYjIzNWNjZTY5NzUyZWM3ODU1NjE5NWQ2NmJmZCByZWxlYXNlMjYtbWFpbnQKKzgzNDkzIDVmZDA5ZTQxMGQzNmJmMzYwZWExZTIxNWI0MjQ4NzU2YTY0OTAxZmYgcmVsZWFzZTI2LW1haW50Cis4MzQ5NCBiN2Q1Y2JiZWExODBjZmZkYjQwOGJjOTNkMjBhZTlkMGQxNzY2OGZhIHB5M2sKKzgzNDk1IDYxYWQ4MWE3NzRjNTUwNjNmYjEyOWVjZTlkZjI4NzQ3ZTE5MzgwMDMgcmVsZWFzZTI2LW1haW50Cis4MzQ5NiA5Yzc1YTk0MTg3YzczZjZhNzg5NDU4NjAwMjQwNDBhYzI3YjU3MzJjIHJlbGVhc2UyNi1tYWludAorODM0OTcgMGRiNjVjNjUxMGRhYTU2OGYwZWUxYjM5NmE5MDc5MGMwNTlhYzAxYiByZWxlYXNlMjYtbWFpbnQKKzgzNDk4IDMxNzRkNWJhNDZlMzhmMWI4MDFlYmEwYjYzMzM1MTBjMDUxODc4MDAgcmVsZWFzZTI2LW1haW50Cis4MzQ5OSBiYzEwYTQ0MjcyZGZjN2VmOGZlYTllN2IwNjI5MmEwZjZhNzVlNGUwIHJlbGVhc2UyNy1tYWludAorODM1MDAgZmRiZmNmOWRhMmM3MTBjYmZiY2E4OGVhZWIyMTRmMzM5NzM3MDk2NyByZWxlYXNlMjYtbWFpbnQKKzgzNTAxIDhhZGEzNWU5ZjQ1ZDBmMTM3ZWE1M2MyNDBkZTM3ZjE5ZTQ0MGQ3MWYgcHkzaworODM1MDIgMmMzNjc1MDE2MTQ1MWRkNTAyYzMxMjc5ZDM0M2FkMGQwMjJjMTJiMiByZWxlYXNlMjYtbWFpbnQKKzgzNTAzIGU0OGVmNzEzMWNmYmM3ZjQ0MDQwZDY1MjY4MjU1MzE2MTcxZWZmNmIgcmVsZWFzZTMxLW1haW50Cis4MzUwNCBjOTY2MzEzMjM5MGRjZGM2NmJlNDA5ZWFmYzkwNmQ2YmM2YTY0MmFhIHJlbGVhc2UyNy1tYWludAorODM1MDUgMGFhYzdiODc3MWUxN2ZlM2E4MmI5NzUxNGZiZjg4MzU1MGExOGRhMyByZWxlYXNlMjYtbWFpbnQKKzgzNTA2IDhhMTQ5YTlmOWRhZjY1NzE2NDUwMDZlYjRlMzQzYzY2MDhkNzZjMjIgcHkzaworODM1MDcgMmU5N2FlYmFkZTRkZGJjZjM2ZTM2NDE5Nzg4Y2ZlOGNlYTlkMzlhNCByZWxlYXNlMzEtbWFpbnQKKzgzNTA4IDYzYjIzNDllZjc5MGQ0ZjQ2YjdjMGU0OGZkNzQyZDU0ZTA0MDM2M2EgcmVsZWFzZTI3LW1haW50Cis4MzUwOSA3MmM4ZmFiOTExNmViMDhiYjFjMjgzZjRhOTQyZTI1MGU5MWNmOTRmIHJlbGVhc2UyNy1tYWludAorODM1MTAgZGU5ZjM1M2VlODY1ZDllNTg1YjE2MmQ2M2IxNjUyM2M2MzBhMTc1MyByZWxlYXNlMjYtbWFpbnQKKzgzNTExIDM3ZDNjZDhjMTBmYjQ1MTE5N2U1NGU3YmRlZmNlZDdmZDA1Y2NhMjYgcmVsZWFzZTI2LW1haW50Cis4MzUxMiA3NTFjNmRkNzFiNWVkNTVkNDk1Y2U0MDc1MTQxZTEwOTJmMjAwN2Q4IHJlbGVhc2UyNi1tYWludAorODM1MTMgZWI2Zjk5MjU0MzEzNzM4ZGRjNzhlZjAyOGVlYTdlYmE2NmZhMzEyNCBweTNrCis4MzUxNCAxODVlM2Y3MjY2ZTkwZDc0M2EzOTcxZjVhOGQzN2FmZDBhN2M3YWYyIHJlbGVhc2UyNi1tYWludAorODM1MTUgMzAwODZhYTMzMTIzNTEyYWMzNGVmNGNiOWQ4ZDAwY2RjNTdiODBiMiByZWxlYXNlMjYtbWFpbnQKKzgzNTE2IGQ4ZGJmMjQwMGQ4YTIxYzllNGVhYWI0ODU5OWJhOTg4OTdlODE1ZTUgcHkzaworODM1MTcgOGEyYTgyYmI3MWM4MjI0N2UxZGYwODcyN2IxYjFjNmRjZmM4MWIwOCByZWxlYXNlMjYtbWFpbnQKKzgzNTE4IDJkYzBiNzEzMWM3MjEwODBhZDkxNjljNjk4NDAzZmY3ODQwNmM5MjYgcmVsZWFzZTI2LW1haW50Cis4MzUxOSAwN2M4NGI5ODE0MDE0ODYyZDAzZGE2MDQxYTA2ODA0ZTNkZWQyYzI0IHJlbGVhc2UyNi1tYWludAorODM1MjAgZmQ0YjA3YWI3OTc2OTk2NDAwNjUwMTBkYzNkZWI5ZmE5YjE3YzAxYiByZWxlYXNlMjYtbWFpbnQKKzgzNTIxIDM5ZTE0ZGY3NjVlNDMxYjlhNzhmYTQ3NTNhM2MzNzJkMTk2YTgzM2UgcHkzaworODM1MjIgOTA0ZWY0YmJmZjVlNTY0YmY0MTZkMDY1MGFmOTdlN2U4ZDcwYjI1NCByZWxlYXNlMzEtbWFpbnQKKzgzNTIzIGI2MTQ0ZGFhNDMzOWExOGFiMTBlNmUxZmY2MmQ2NDNlMmNhOTRhNDggcHkzaworODM1MjQgNjFkMzQ4MWViYTc0MWQ3NTcyNzdlMjdiNTc0MmJiYTczMjAzNGI5MSBweTNrCis4MzUyNSA3N2JiYjA1ZDMxMGU2M2RkZTZkZGM1YWM2YTMwNjYwOWUzZGE4YWU0IHB5M2sKKzgzNTI2IDkyNDZhYWRmY2Q3ODljMjNmMTMzOWFkNWEwMWY0YWFkYTY3M2Q1MmMgcHkzaworODM1MjcgZWI3OTA0OTVjNmE0NTAyYzlhMGViMTU2NWNiNjkwZDgyNDRlNTFjZiBweTNrCis4MzUyOCBhMzQ5ZmFkNTA3YTIyNDU4MTVlNTJiZDk3ZmJlZDliYjBjZjgyM2UxIHB5M2sKKzgzNTI5IDE2NDBlZmE3ZmYyOWM5MjRiODg3OGZjZmJkMTljOTQ4ZmExMDY3YTUgcHkzaworODM1MzAgYjA4ZDM1MDYyMDg4NWYwMmZhZjI0OTI1MDcyZmQ3MGU1ODM4ZTM3OSByZWxlYXNlMzEtbWFpbnQKKzgzNTMxIDg1Y2RhZjVmM2NkYzNlMTRjMDgxZTlmMjc5ODc0ODZlODVkOGE3NGUgcHkzaworODM1MzIgYTMxNDljOTMxNjU2NTZlOGY5NTAwNTM1OTkwOGZlMmNiMzU4ZjY0YiByZWxlYXNlMjYtbWFpbnQKKzgzNTMzIDZiYWViYTU0ZmQyNGJkNzFiYWUwMDU1OTBhMWZhYmEwMWJjZDBjNGIgcmVsZWFzZTI3LW1haW50Cis4MzUzNCAzMDY4ZTAwYTMyMDc2OGE1YzAyNDNmYzM0ZjVjNjM4OWNlZGRmNzkwIHJlbGVhc2UzMS1tYWludAorODM1MzUgM2JlMjQ2NGMwYzM5NDZkYzIyODU3ZDJjZTM5YWViYjg1ODhhNzVkNCByZWxlYXNlMjYtbWFpbnQKKzgzNTM2IGQ3ZjMwODVkMWIwM2U0MmZkNzZhODM1ZDA2OWQxZTUzOTZlOTk2OGUgcHkzaworODM1MzcgN2MzYjg0OWQxODFhZTJkOTgxMTU2MjQ5Y2I1ZjVmZWM2MDAwOTA5ZCByZWxlYXNlMjYtbWFpbnQKKzgzNTM4IDUxNmY5ZTM0YWYyMDk2ZGEwOWY2MzkzNWRlOTY4MDRjYzdjZDIyMTIgcHkzaworODM1MzkgY2E2MzJiYWQ2ZDYwY2I0NmE1YmMxMzI4Y2NiNzljYTBmNjA2M2NhYSByZWxlYXNlMjYtbWFpbnQKKzgzNTQwIGRiYTk5ODI4ZDkxYzNlOGVlMTk3N2QxMWM4MjhiZGYyMTM0NWM3YTMgcmVsZWFzZTI2LW1haW50Cis4MzU0MSA2NTM2MTUwZGQ0ZjQyODY1ZDI4NDQ3NzFmYWQyY2QyZjI5YzZjMjA1IHJlbGVhc2UyNi1tYWludAorODM1NDIgNThjMjJkMzBmNzQ5MzY0NzdiYTBiZDZkOWM4NzRkNzdkMzk3MzMxZiBweTNrCis4MzU0MyA2NzI0OTNmZmQ3NTNmOTljZWZhOTY1NzU5NzFkYWI2OTQxYjdmNDhjIHB5M2sKKzgzNTQ0IGNlY2M2ZDJhNWI0OWNiY2M0NGQ5N2EwNWQ3N2FhYjdiNGVmMzFlNjYgcmVsZWFzZTMxLW1haW50Cis4MzU0NSBiNmM1ZmNjY2I2ZGU1ZDU3ZGY5ZDUyODJlNTdhMmE1YzYyM2E5NTYwIHJlbGVhc2UyNy1tYWludAorODM1NDYgNzIwMmM5YTIwNTY2NjI5ZGFkNmQxNjc5NDMzNDhhZjlmOWU5YjgwMCBweTNrCis4MzU0NyAwYmYzNmNkZDgzMzQ1NDI1MTBjNWVkY2ZjYWM2MzkzNDJmZWQ2YjhlIHB5M2sKKzgzNTQ4IDZlM2MyMDkzYmIyMTA4NGMwMWRjYTQyZGZiZjU4YzIzNWQ1ODFlN2MgcHkzaworODM1NDkgZjhjZTY0YTk2Yzg5NjAyYTVmMGI5NWU5MDlhYjhhMmFkZTRiYTNjMyByZWxlYXNlMjYtbWFpbnQKKzgzNTUwIGEyNGM5YTc0MDFmNDUzNTE3ZTM1NmFjMDEwZWQ3MjUxMjgwMTBiYjEgcHkzaworODM1NTEgNjk5ZmNkYWY5OTgxMmNhOTFhYzkyNGI3NWRhNTYzYWE3NWU0ZjQ1OSBweTNrCis4MzU1MiAzMDdlMWNlZTRhNTgxMGY0MGViNGEzNzFhOTljMjgyZmUyNWJlMGU4IHB5M2sKKzgzNTUzIDdmNjhmODU1NDNkNGY5MWE3ZTIyNGE0YjY3MWYxN2ZiN2IyY2M0YTkgcHkzaworODM1NTQgN2YwNzEwODdkODIwZDk5MmRiMTZhN2IxNTAwN2UwYWNjZWQ0M2EwMCBweTNrCis4MzU1NSA2MmQ4Y2ZjY2QxOGI0NGY1NmU5NmM5NzYzMmFiY2QyN2I3NTk4YWIzIHB5M2sKKzgzNTU3IDUxMTAyYWJkZWM1MDIxMmYwNTY3NzEzNDJjYjFhNTU3Y2MxZTRhMmMgcmVsZWFzZTI2LW1haW50Cis4MzU1OCBiNGY2MTQ3MTc4ZTVjMmY3OTI3MmI0MjI0ZTg4Y2UxOWYwNzAwZDk1IHB5M2sKKzgzNTU5IGFmZjhkN2JjYTNmMzMzZmE5OTY1NDZlOWVjNTE5ZjY1ZjVjYmMwZmUgcmVsZWFzZTI2LW1haW50Cis4MzU2MCA0ODc0ZWZkMWY2NTdhMzZmNzcwZDRhYjkwZGNiMzRhYWY2NjQxMGFmIHB5M2sKKzgzNTYxIDdlYmY1ZjkwMTFiMTkwZDJlODM5NDRhNmVkOTU1NzkzY2M4MGZhZjMgcHkzaworODM1NjIgYjRiODlkMWI0MmNkNDQ1YmE1YjE0NmFmMDgzYjk2N2RiYzg2MjAyMSByZWxlYXNlMjYtbWFpbnQKKzgzNTYzIGJiMmRjZjEyMDNjNGM0NzBmNDFhNDhkMmM3NWIxMmIzZDM5ZjA4MzEgcHkzaworODM1NjQgYWMyOWY3MGM2MWRiYTM0NDZjNzViZGUyYjIwN2U4OTY0NzVlMDU1MCByZWxlYXNlMjYtbWFpbnQKKzgzNTY1IDQyZTE5YzE0YjE0OTJhNWM5YTYzMzMzYzVhODkxNmFjZWQ0YjYxNjUgcHkzaworODM1NjYgNDdiYTkwNWE3ZTg3ZGM2MWI3ODg4NTQ5MmFiZDc4Y2Y0MDY5MTQ0ZSBweTNrCis4MzU2NyBkMGJiODBlODFiMzlhNjNjNDYzZDNjNjc0ZTBjYzI2MjAwMzE3YmUxIHJlbGVhc2UyNy1tYWludAorODM1NjggMzdiYTQ3MjMyMDI3YTYwMjk5NGFmMTFiYTU1ZjBlMzQxYmRjY2E5OSByZWxlYXNlMjctbWFpbnQKKzgzNTY5IGZmNmZhYmYyNWNlZjQ5NTdjOTNlNzlhNDJmZTBiY2E2Y2ViZmJkOTQgcHkzaworODM1NzAgZGYzNzhlNDRiYTlhZDNlZjg0ZTAyNWQyZTkwOGRiNTIxOWFlMjVmNiByZWxlYXNlMjYtbWFpbnQKKzgzNTcxIDIzNjM5M2M1NTRmNzE0OTBkZWNjNmYyY2FmZmMzMTM5N2Y1NjBiZWQgcHkzaworODM1NzIgNzk1ODhkNDg2N2JjYjI0NzVkNjI2ODFhNzI0ZTI5NTEzNjkwOTA0YSByZWxlYXNlMjYtbWFpbnQKKzgzNTczIGRjOTQxMzQxODZjODc1M2M2YzBlNTM2YzM5MjY3ZmU1ZmFhMzFjZjkgcmVsZWFzZTI2LW1haW50Cis4MzU3NCA4ODE2ZjRlOWY3MTJjZjNiN2YxOWFiZDE0Yzk2Y2IzYTFlY2RhMjRkIHB5M2sKKzgzNTc1IDcwYTZhNzI3ZWNkNzMyOTM1Mzg1YTViYjlkZmQ4OWEyMzkyMDdiODUgcHkzaworODM1NzYgNjQ5NDc2YzY2M2ZjZjYxMGU1NmRjZDQ1MjIyZGFhYWIwOWY1NWEzOSByZWxlYXNlMjYtbWFpbnQKKzgzNTc3IGNjMzM2NjkyYmFiOTA1NDc1YjljNzVlNWUzYjJmMmExNTA1OTFjOWMgcmVsZWFzZTI2LW1haW50Cis4MzU3OCA5NTk0MDBhZTA1YjA0NmM2MGVkODkzYWZjZmExZTYwYzNhY2RiMmNiIHJlbGVhc2UyNi1tYWludAorODM1NzkgMzE5YzlmOWRjNDU2MTk0NmRjZDViYjQ4YTFkMzM5MDQ4ZmFhMTk5OSByZWxlYXNlMjYtbWFpbnQKKzgzNTgwIDNkMDExYzJlYzIzN2NkOTM1NThlYWJlZjdjMGFmOTI3YjZlMzE2MzMgcHkzaworODM1ODEgM2FmNmNhZTVlMDI2YmJhNzNjZDY0NTZmYmExMmU2YTA3YjJmZTJhOSByZWxlYXNlMjYtbWFpbnQKKzgzNTgyIGQ2YWMzZDA5Yjc5ZDRhNzdlZDc1NzMzZjZiN2IwZDJmYjM3ZjQ0N2QgcmVsZWFzZTI2LW1haW50Cis4MzU4MyBiODVjZjg1YjdlZGJjNTRlNTE1NTkyODY5YzUzYjdjZTFmZjgzOTYwIHJlbGVhc2UyNi1tYWludAorODM1ODQgY2VhNmVkN2EwYWExMWEwZjg0OTc4OTc0MTFjNGJlY2VjM2ZlODkwNiBweTNrCis4MzU4NSA0ZGZiOGE2MWU2OWZkMDM4ZjM4MmU4MGNjNDAxZDdmNzA4MmFjYmQ2IHJlbGVhc2UyNi1tYWludAorODM1ODYgNzZlMWM1ZjMxOTMxZjBmZTA3OWI2ZTQ1MzA5ZDBhYmVhOGFiYjc4OSByZWxlYXNlMjYtbWFpbnQKKzgzNTg3IGU5NzFjMTA0YTVjMjFlM2QzNzQ4MGZiODRkYzI1NzgxM2RmMGViM2IgcmVsZWFzZTI3LW1haW50Cis4MzU4OCBmZDI0OTc1MGNiYWU1YTRlNjAwNDg1OGI5OThhMTgxNGZjYTk5ZDUyIHJlbGVhc2UyNi1tYWludAorODM1ODkgNmY4MWQ2ZjlhNmQxYzRhN2RjZGQzNTgyNTVjZjY0Y2Y0OGM5M2JiZiByZWxlYXNlMjctbWFpbnQKKzgzNTkwIDY3MzBjZjlkNjI3YTVkYWU4MWI0OTc1YWFlMjEzY2EzY2ExODgxZWUgcmVsZWFzZTI3LW1haW50Cis4MzU5MSA3NDQ5ZDA0MjEzYzZlNDFlN2E3NDQzNjk5M2EwMzcyMzYwNDEyOWMwIHJlbGVhc2UyNy1tYWludAorODM1OTIgMjE2MjBkOWIwODQ4MGNlM2FkYzM2NmRhZTY4MmI3OWFjYjc4ZDg2NyByZWxlYXNlMjYtbWFpbnQKKzgzNTkzIDU5NTY3NmU0NjZjMGQ0MzBjMGVhMjEwZTdmZGRkMDdjOGZmYmJlZTAgcmVsZWFzZTI3LW1haW50Cis4MzU5NCBhOWNkMjU1MGZmNDBhY2ViMGQ3NjRmMmQwMjQwOWE2NWRiNThjY2VkIHJlbGVhc2UyNi1tYWludAorODM1OTUgMTNkMmJhY2M1NmE0MTU0NTJkN2YxMDI5YjI1ZGUyMTBkYzg4M2M4MCByZWxlYXNlMjctbWFpbnQKKzgzNTk2IGYzZmVmMjBhNjZkZDA4YmQyYmVkYTEwYTQwNTI4NTJiMDQ1ZjlkMGYgcmVsZWFzZTI2LW1haW50Cis4MzU5NyAyOWQzNGU0ZDBhOWEzNjdhZTgwNDMyODVlZjdlODA0N2MyOGU4Y2RkIHJlbGVhc2UyNi1tYWludAorODM1OTggNjFiNjliZjFlZWJkY2UxMWFmY2IzMGEwN2M4ZDgwMWZjNGJhMjQ5MSByZWxlYXNlMjctbWFpbnQKKzgzNTk5IGYyZDgzYTEzNzAzZmE5ZmMxNTIwMGE4ZDU5NzNiYWU4YzY3ZjM2M2QgcHkzaworODM2MDAgNWM0Y2RmMzNjMTMyNWE3MDU2ZTc4ODBkOWU1NzdjZDZlYTM1YmM3NyByZWxlYXNlMjctbWFpbnQKKzgzNjAxIDEyYzkxZjRiYjQxNDQ5YWJhYzZhZGFmZmMyZDZjOGRkMGJkN2VhNmQgcmVsZWFzZTI2LW1haW50Cis4MzYwMiA2M2ZiOGRiYmZkYTI1ZTQyOTRiOWEzZmJkZTRiZWRjZDJkZDcwYjQ4IHJlbGVhc2UyNi1tYWludAorODM2MDMgNDQzODk2ZjMyNGNlMjBmYTY5NjA2ODc3MDg2YzAzZmNlYjgwMDI5MCByZWxlYXNlMjYtbWFpbnQKKzgzNjA0IGEyZjAxMzAyMWUxZGRiMWJmZjA4NTYzMTE5OTQ1NzRjMTVlMzJlODcgcmVsZWFzZTI2LW1haW50Cis4MzYwNSAzN2QzOTlhYThjMTZmZGE2NzVlOTJjNjQ1Nzc4ZmE1NTE1ZDAyMTc0IHB5M2sKKzgzNjA2IGZkMjBlYmExZjIwMTFkNjMwNDJkMzNiOWE0Y2VlZmRmMjg2YWViYTkgcHkzaworODM2MDcgNDc1MGE4YThiNGNmNDE3NDVmMjNiMDk1YjFlOTBmYjMyZTdhODM3YyBweTNrCis4MzYwOCA2Mzg0MTBhMjkwNDY4MWNiMDgyNjllODY5YmJmZDg3NDE4Y2Y2YWZiIHB5M2sKKzgzNjA5IDdhNDdjNGQzMGY2ZTFiM2Y0NmViZDBiNDRmODcxZDAxNzEwM2Y4OTkgcHkzaworODM2MTAgZDQ4NWM2ODBjNjVmYWM5MzczZDA5MzJlYTljZmZiNmIxNmU2MmNmMiBweTNrCis4MzYxMSA5NTJhOGRlNWNhNjVhMTc3ZDk0ZmZlNGRiYTYzZGM5OTMyMjk5Mzg3IHB5M2sKKzgzNjEyIDU5M2Q2NDE3ZWRmMTA3OWYyYzNlNTM1MDJmNjA1N2U2MjQ0OWVjNmMgcHkzaworODM2MTMgMjAyNDJhZjI0M2QyMGUyMzA3N2NiZDQzNWE4YmFhMjNlN2FhNjFjMSBweTNrCis4MzYxNCAyZDAzZDZjNGM4MjljMjkwZDkwNTE0ZjFmNWZlZTc0YWUyM2Q1Nzk0IHB5M2sKKzgzNjE1IDQ0ODJhNDI4ODVmNzVhNTE2MWRkNmVhY2QwNTIyYTJkODQxZTJhMTggcHkzaworODM2MTYgMjlmMjBlZjEwNzU1YTBhYTI0YTBhMTE0YWY4YzkwMjYzOWU5MzU3NiBweTNrCis4MzYxNyA2MDE1YjZlYzgxZjJjNzcwM2NjMWIyMWRiMjhmMDcwNTA3N2M1MDFjIHB5M2sKKzgzNjE4IDAzMWU2YjM0OGE4ZThhZjlkM2IxM2U0YzM2ZDg1NjQ3MWU1YWM1YjQgcHkzaworODM2MTkgNzYyZDg5ZmFjZWFhYWFjNjk4MTY1YjQ3NTc1OGFhZjZiNTY2YmE4MyByZWxlYXNlMjYtbWFpbnQKKzgzNjIwIDQ1NDBiNmY0MjhkMzYzNDc0ODQ2OGIzNzFmMjJhODcwODk4YTc0NjMgcmVsZWFzZTI2LW1haW50Cis4MzYyMSBkNTc1NTJhYmYxODBlNThkZDI0MGM1ODY1ODU0M2JmNWQ5NjVjNDFiIHJlbGVhc2UyNi1tYWludAorODM2MjIgYjkyZjBjNDlmMGU4ZjljYTY1NjViM2JhYjUxOWRmM2IzMDVmMDMzNiByZWxlYXNlMjYtbWFpbnQKKzgzNjIzIDY4Y2ZjODRlNGRiMWM4NmMyOTQ5OWZjZGQ5Y2RiMzRkZjZhODYwMTcgcmVsZWFzZTI2LW1haW50Cis4MzYyNCA0YzBiMzdkODY5Y2FmODc4NmI4ZTgxMzhlODNlYjE2MGM2MDc0ZjUwIHJlbGVhc2UyNi1tYWludAorODM2MjUgYTY5MzRhMWJmYTNiMGZjNjA1MWUxOTNlYTAwYzVkMTM2NTU3NWJjMSByZWxlYXNlMjYtbWFpbnQKKzgzNjI2IDY1N2FlODc3YzBiZjIwMDA2MGNhZTFiODAwZmUzNTQ4ZDNlNDRmMmEgcmVsZWFzZTI2LW1haW50Cis4MzYyNyA4Yzc5OTA5YTdlZTdhNjFmOTNlN2MxMjc2MzhmY2IzMGQ3YWNkY2M5IHJlbGVhc2UyNi1tYWludAorODM2MjggNGRmNzJmZWIzOWQ5MDU4MWNjZGE1ZmQxMDcwNjM2NjBkYTNhYWM1MiByZWxlYXNlMjYtbWFpbnQKKzgzNjI5IGVmMTE5ZGJiZTg4NzY2MTU1YzhhNGU0YjdkNTk1YzYwZGQxZjNmMTcgcmVsZWFzZTI2LW1haW50Cis4MzYzMCBhODhjYjgwMDUxMTBmNTczZGJiYzkwNmNmMWQxYjhjM2JlOGM5ZDI4IHJlbGVhc2UyNi1tYWludAorODM2MzEgYjFlMDQzZGU5YzVhNTg0MDE0YmNhNTgyNmFjZWZjNWY5M2FkYjk4NyByZWxlYXNlMjYtbWFpbnQKKzgzNjMyIDVjZjY3OWJlM2RmYzRlYThmM2ZmODZkYzI1ZDE3NDBiYmJjZmZiMWMgcmVsZWFzZTI2LW1haW50Cis4MzYzMyA2ZmZmMGZmZmY4NWI0ZWZiZjBkZjMzNTMyMDBkNzllODJhZjMzOWI1IHJlbGVhc2UyNi1tYWludAorODM2MzQgMmFjYTM0NDYwZmRiNDA5Y2Y1YzExYzMyMGIzMTIxNDEwM2Q5ZDRiMCByZWxlYXNlMjYtbWFpbnQKKzgzNjM1IDNlZmI0NTgxNzkwYTMxYzc3ODYyMGQ0OTY0NThjZDVhNGEyNGYzZmEgcmVsZWFzZTI2LW1haW50Cis4MzYzNiA2YTZjMTNhN2YwMzAzOGEwZGM4NGQzYmU2NjE0MjVmZjUwNmY1MzEzIHB5M2sKKzgzNjM3IDMwYTgwMGQ3ZWFjY2FhYTcxODc2MGZiMTIyOGU1Zjg3NDc0N2VjNjcgcmVsZWFzZTI2LW1haW50Cis4MzYzOCBlN2U3YzU2NzE4YWYyNmY1NTYwNjYyZGRjMTAxM2I4N2JmMzQ4MTU5IHJlbGVhc2UyNi1tYWludAorODM2MzkgMTk5NjQ5NDRjYzAxM2U3YzFmNTFkZTdjNzM1MDZiMmRlOWRkNTU1YiByZWxlYXNlMjYtbWFpbnQKKzgzNjQwIDg2ZDExOWU5NGRhM2EwNmJjMDJiZTc2YmM5NzdiNGZlN2M0NjRkMzIgcmVsZWFzZTI2LW1haW50Cis4MzY0MSA2M2YzODM3OWU0ZWRhMGI2NzYxZDUwOGFjY2EzYmU3ZDVhYmNjM2ZhIHJlbGVhc2UyNi1tYWludAorODM2NDIgN2I1ODRhMTNiYzk2NWFiYmJmNjk2MzM4Y2IzY2ZjNzdjNjM5MzFkZSByZWxlYXNlMjYtbWFpbnQKKzgzNjQzIGYzMDYwZTZmYjcxNzU4NWRhNDZmY2I2MmRiMjFlYmU2NzhlMTVjYjMgcmVsZWFzZTI3LW1haW50Cis4MzY0NCAxOGM4YzUwMDQxMDllZDcyOGQ4OGUwODI5ZWU2N2U2NjQ3OTgxNTZmIHB5M2sKKzgzNjQ1IDY5NDU0MTZjOGQwNDVjNjhhZWFmYzg2NDJhYmViN2FhZTBmZTIwYWEgcmVsZWFzZTMxLW1haW50Cis4MzY0NiA1MTc4NTljYjBlOTIwMDIzZDVhYWMwOTMzYjM0NTFiOTBhZTJiYWEyIHJlbGVhc2UyNy1tYWludAorODM2NDcgYzgyYjZlZmZiNjk1MzFhNWYzYzg4ZmNjY2M3YTk5MjUxYmM1ZTZjZiByZWxlYXNlMjYtbWFpbnQKKzgzNjQ4IGNkZjZhM2E1MDQwNzQ2ZDMxMGE1MjRmZGI4NWVjMGZlNWQwZTU4NWIgcmVsZWFzZTI2LW1haW50Cis4MzY0OSAxMjg4YTI1OTMyODc2ZjYzNDVkMjdhYTc4NmExNTk2ODgxZGFhZWU0IHB5M2sKKzgzNjUwIDU3MTA1ZTg3NTYwNGZlZmJhZGUxMzc2NjdiZGM1Mzc1YzRkNTEwNTkgcmVsZWFzZTI2LW1haW50Cis4MzY1MSBlYmM5MDUxN2I4ZDk2YmZmODJhMTdkMDNkNTJiZThiYzA4Nzg3MTg1IHJlbGVhc2UyNi1tYWludAorODM2NTIgZTFlZjUyNjMzMzUwZGY2NDM2NGM3MmI4YjNjNDE0ZDA5NjZiOGQ2OSByZWxlYXNlMjYtbWFpbnQKKzgzNjUzIGY4NjRmZmI4ZjJlZGVmNjg2Yzc3NmU3NTliNzg2MzU1ZDg2OTM0M2YgcmVsZWFzZTI2LW1haW50Cis4MzY1NCBkMjY1ZjkxYzM4N2QyZmE4NDA4ODU5NDJmNGM5NTA3NWZlNjZkNTAzIHJlbGVhc2UyNi1tYWludAorODM2NTUgYTc5MzdkYTYyNTkxYzI1ZThjYTcwMTk0N2E3YTA2YzM5YjUwMGFhMCByZWxlYXNlMjYtbWFpbnQKKzgzNjU2IDQ4YzU5ZTkwNTUzMjUxZTdmNTg0MjBhYmMwYjM3YTU2YzcyZTRkYjggcmVsZWFzZTI2LW1haW50Cis4MzY1NyA3Y2VlMWI5NjA5ZTQ3ZGUwM2ZmMDgxNTQ0NDRmOTExMzBmMmY3YzdhIHJlbGVhc2UyNi1tYWludAorODM2NTggYjIwNjY2NzhkOTM3Y2Y5OTBmZWY1ZTg4MGVlNTgyOTAzYjZjZWIwNiByZWxlYXNlMjYtbWFpbnQKKzgzNjU5IGUyMTBlZDYzYjA0ZTQyMzhjODIxNzE4ZjZmMTU5MDBmMmNmODNjZDMgcHkzaworODM2NjAgM2RjZmUyOWQ5Y2E1NDQ3YzBmODZkNDAyOTZkNjg1MDFlZjhlZjk1YyBweTNrCis4MzY2MSBhM2Y2NDUzODFkNjFjZTJlMWZhZTYyYjQxMDU0MjM1NjMzNjk2YjAyIHJlbGVhc2UyNy1tYWludAorODM2NjIgZjljNGYwOTlhMjRkZGRmNzc0OTU5MTgxZWNmYzg2NGUyMjdlYTNhOSByZWxlYXNlMzEtbWFpbnQKKzgzNjYzIDY2NjAxZmI5MGQzZGY2NDQ4YjA3ZmE4MTRmZjk1MzQxM2ZiNzdmOTggcHkzaworODM2NjQgNzFhZTUyM2ViYTViYWRkZjdiODFhOGJjYThiNzczMGUwNWM2NGViZCByZWxlYXNlMjctbWFpbnQKKzgzNjY1IDQ1ZGJhMjJhNzRmYzlhMzllODE4YmFhMDNjNjQ4ZTZmZjBlNzI0NGUgcmVsZWFzZTMxLW1haW50Cis4MzY2NiA5ZDlhODNiMjUwNDU3ODFmZWJlN2QwYWNmMTE3Mzc3NThmMDBiOWY2IHJlbGVhc2UyNy1tYWludAorODM2NjcgYWYzNjU1ZjJmMjQ4YzNkMzQ0ZjIxZWY3NWEwOGRhNDQwMzJiOTI3NyBweTNrCis4MzY2OCAzM2U5YmUyZmE0ZDIzOTFlNzUwYTNhNmMyYzJhZmU5OGM4NzJkNTVhIHJlbGVhc2UzMS1tYWludAorODM2NjkgNjNlMWQwZGM0NGVlMDdhMTZmNjk2ZWE4NzhjZTRmNTU5MmEyZmUxZSByZWxlYXNlMjctbWFpbnQKKzgzNjcwIDMzZDJmNDI0NTU2MTAzMzZiZTI3YjRhYzAxOWNmMjkxZTM1MDczNGYgcHkzaworODM2NzEgZGMyMGRmOWM5YmE5NWYwYWM2Nzk0ODY3ZmM1MjdjZjI1MGZkNDAyMSByZWxlYXNlMzEtbWFpbnQKKzgzNjcyIDAzYWEwNWViZDliYzViYmU5OTRiNDFjYzdlNGJmY2U2ODAyNzJiYTQgcmVsZWFzZTI3LW1haW50Cis4MzY3MyA3MWM0MzE1ZDQ5ZjI3ZjIxODFmYmE4MWRmYmUyZmNmNjgyYjFjNDNhIHB5M2sKKzgzNjc0IGZmNDQ1NmRkNGE3OGNhNGQzYWEzMTZjNDFkNTgwMDJjZTAyMjJjMDIgcmVsZWFzZTMxLW1haW50Cis4MzY3NSAyODUwYmQ5MTkyNzcwZDRiMWQ2Mjg3ZGM4ZTI5YTczN2U4YWUwMjg0IHB5M2sKKzgzNjc2IDIzYzA4OWRjNWNmZjBlOTA3NDBlNmY5NTgyNWQyZWQ3NzJiZjcxZjcgcmVsZWFzZTI3LW1haW50Cis4MzY3NyBkNmIzMzZkZDY0NTc3NmZlMTBmNDY4OTY5NjZmMGJhZDVlMGNlMjlhIHB5M2sKKzgzNjc4IDlkNjhlNzg0NWU0MjA1MDk1MGY0MzEyNWI5ZmVjOTMxNTEwZDEzYzIgcHkzaworODM2NzkgYzRiYmRhMmQ0YzQ5ODY1ZDI2ZWIzOWY5Y2U4ZDk3NzBiNGI1NzkwYSByZWxlYXNlMzEtbWFpbnQKKzgzNjgwIDA0MjBmNTQ3ZjNiZjI0MTEwNjFjNjgxZDM4MDUyNmNjZmNlODBjM2YgcmVsZWFzZTI3LW1haW50Cis4MzY4MSAzOThhMjVjZDYxMmRkYWFlZDVjZTlmZWMwNDgxOTI1MzUzNDBjZTI5IHB5M2sKKzgzNjgyIDk3MTllNWU4YThhZjkyZWJlOGUxNzQxNWMwOWVhYjBiOTU5MWRmNjUgcmVsZWFzZTMxLW1haW50Cis4MzY4MyBiMzNjODBmN2FiMTc2NmI1Yzc3MDAyOGVlNGVkZjIxODgwN2U5MjNkIHB5M2sKKzgzNjg0IGYyODM4ZWIxYmIxZWY5MGFmOTU3MDdkYWU4NmNkMWQ0YTY0MDZmY2MgcmVsZWFzZTMxLW1haW50Cis4MzY4NSA4YTllOTc2MTI3YWIxMzk3NmY3MTIzZjAyNGQxNzY4YmQwMTY1ZjZjIHJlbGVhc2UyNy1tYWludAorODM2ODYgMzc3NWJmODI5OWIzMTM1NmZiOGM3OWJmMjEzMmNhMjA1MWE1YWNhYiByZWxlYXNlMjYtbWFpbnQKKzgzNjg3IGY0M2Y2ZDE3MzA3NmU5YWI1YTdlNjc1NjUzODdiNGUxNDAzNDlmZTYgcmVsZWFzZTI2LW1haW50Cis4MzY4OCBjZjlmZWEyMmMzYTllMTYxZjljMmFjZTYyNDFjMjQzMmZmNDhiMzNhIHJlbGVhc2UyNi1tYWludAorODM2ODkgZDY4NmYzMDMzMTc0YTkzMDI1ZWJlZjQwNjk4OTI1OTE5MmExZDcyOSByZWxlYXNlMzEtbWFpbnQKKzgzNjkwIDIwZDczZmVjOWY2MjMwMWRkMjQzZGFkYjNmMDNhY2UyOGRhMDY1MGEgcHkzaworODM2OTEgYzFkYzllNzk4NmEyYThlMTA3MGVjN2JlZTc0ODUyMGZlYmVmMzgyZSByZWxlYXNlMjYtbWFpbnQKKzgzNjkyIDVhNzNkZDE1YmUwODRiZTVkODEyMmVmMmE4MmRlZmQ3Y2I2OTc4Y2QgcmVsZWFzZTI2LW1haW50Cis4MzY5NCAyMWE5Yzk0MDExMGQyNjVlM2Q2MzU2YzdmYjg3MzcyODM1YzllMmEwIHJlbGVhc2UzMS1tYWludAorODM2OTUgZmNhM2M5ZmI1YTFiNjNjMjQ1NzE1ODNkMzY2YzhiZDVlMWZjNzY1NCByZWxlYXNlMjctbWFpbnQKKzgzNjk2IGJmNjk1MDk2MjZmZjk1NGExY2NiMjEyNDhlNGM2Nzk1NDAzMjI1NjAgcHkzaworODM2OTcgNmU3OTVlYzM4ZTgwMDgyODUwYzJjOWJhMTYxYmRhODdhNmNlNzQ1NiByZWxlYXNlMzEtbWFpbnQKKzgzNjk4IGFmMzllMjU1ZmVhZDA1NmFkMzAxMmJiYzc2ZDQ2MDQ1MzNiNTA3YTUgcHkzaworODM2OTkgZjBlY2E3NGYwMGUxNGIyZGYyMjU4YTk4MjcwNzZlZDRlYTY5MTZjMCBweTNrCis4MzcwMCAxNDg5ZjM5OWFiYTFlNzFlMDZhMWZmNDM2ZDYxYjYzOTI4NDQwMWFkIHJlbGVhc2UyNy1tYWludAorODM3MDEgZjRjOWY2ZjFmZTc2YTYyZTNhNmIwYjc4NzZjNmM2MmMwMjhlODE5MyBweTNrCis4MzcwMiA5MTViMDI4Yjk1NGQ3NWMzYWQ4M2FhOTI2NGUzM2U4ZjNlMmRlYWQ3IHJlbGVhc2UzMS1tYWludAorODM3MDMgNTgzMzQzNTc4NzMyZTJlYjM0ZDgzZWM5NGMwYWJmMDQ4ZmFlZmYzOCByZWxlYXNlMjctbWFpbnQKKzgzNzA0IGIzZmRkNDQ1ZTAzNzlkNzMxNDQ1ZTUyZGNjZjg1N2ZhOWM5MDI2MGQgcmVsZWFzZTI2LW1haW50Cis4MzcwNSA4OTg5M2EwMDIyNzNlZWM1NTllMjM3ZTdhOWY2ZjY4MDM5NTY3NjgzIHB5M2sKKzgzNzA2IGJhNzM1MzE0NzUwNzc3ODZjZjhmY2NhYmRhMTU2YWRkMmEwZjI4Y2IgcmVsZWFzZTMxLW1haW50Cis4MzcwNyA0YzRkOGFkZTlkYmFhMTZjNTMzYTFmNjkyYWQ4MDJkMGI1Y2Q3ZDk3IHB5M2sKKzgzNzA4IGY1OTg0MjNhNDYyMTY5ZjczMTIwMGRkZGQyNjhmNDE4MTQ1YTM5OGIgcHkzaworODM3MDkgZTY4ODYzNTk3MDYxM2Y1MWIyNTY4NzY1Mzg2M2ViMjQxMDQyOTVmMSBweTNrCis4MzcxMCA3NzE5Y2M3ZWNmNDU0NmFhZDJmMDNiOGE3ZjNkZTdkNWQ2MzcxOGZlIHJlbGVhc2UzMS1tYWludAorODM3MTEgZTVmMTI1OGNmYzU4OTVmMTA2OThmMWJlNGYwODM3ZDkwMGNiNWQwMyByZWxlYXNlMjctbWFpbnQKKzgzNzEyIDZjMTJiMTcxNzkyZTI1MGY4ZTc1YmRmNDBmZGVmNDdlN2YxNWM4ZWQgcHkzaworODM3MTMgNTkzMTExMmVhYmU3N2ZkMTA4N2YxZmM2YWQ3M2QzNDNhM2QyYzc5NCBweTNrCis4MzcxNCA3MTZlNjAxNTcwZGExYzUxOWE0OTI0OGY2MzA0MmYzZTQyYjZiMmFiIHB5M2sKKzgzNzE1IDQ4NWMwNTRjOWFhMTY1MTUwY2M0YTBkZjBjZjQyMTIwYzk3MTQzZTMgcHkzaworODM3MTYgNzA0MmZhNTM5ZTdjODE1NGNiYmMwMGRiYmU5NmU1OGQ4MTllZTRmMSByZWxlYXNlMzEtbWFpbnQKKzgzNzE3IGM1YTI4Mjc5N2Q1ZTM1MmVkZDAzMDhiZjFmNDY4NDNiYzVmMGZlYzAgcmVsZWFzZTI3LW1haW50Cis4MzcxOCAwZTQ1MjlkNzMzYWM0MWExY2QzYzMxZjQ4OTRmYmYyNGI1ZDJjOTA5IHJlbGVhc2UyNi1tYWludAorODM3MTkgNTc2Yjc2NTg0NGFmOTJkYTUzMzZjYTE1ZDQ5NzcxZjk4MTNmNTljOSBweTNrCis4MzcyMCBiMzk4NDZiYzdiYTU1NjdlM2Y0YTdiZGUzYTZhNDM3YjgzZGQ2ZWY2IHJlbGVhc2UyNi1tYWludAorODM3MjEgY2IzNGNkNjMwMDAwMjAwYTM5Y2ZkMjZjZDU5NjE4NWY1ZGIxYTA4MiByZWxlYXNlMjYtbWFpbnQKKzgzNzIyIGZkN2Y3M2UxMjU2ODAwYzcwNzE2YmU2NGE5NTgxNDU3M2Y3OGI4NjAgcHkzaworODM3MjMgODMwNDNjMTUyNTY2ODFlNmVhNWNlODVmZDBlNGMzMjY1Njg1ZmFhMCByZWxlYXNlMzEtbWFpbnQKKzgzNzI0IDlkZTU2YzQzMTdjOTQzZTBhOTBhMzFmMDQ0MTI0MTQzMmMwNWJkMTcgcmVsZWFzZTMxLW1haW50Cis4MzcyNSBiNGE1MzMyZDJiY2FjY2E4MjJlZmM2N2YzMTVlOTIzMmE2NGE5ODA2IHJlbGVhc2UyNy1tYWludAorODM3MjYgMmQ4OGNhNjRhOTBiYzFkMThlNzhhYWVkY2ZiYTMwM2FjOTIwNmRlMiBweTNrCis4MzcyNyA4MjgyMjdhMDA1Mzg5OGJhZTQyN2EzMjI1ZDljOTBiZDI4ZTExNzA1IHB5M2sKKzgzNzI4IDM1ZmVlOTIxMWYzYjU4NWM5ZGE1NTkwZjkzYWExOTJmZGNmMzE1OTYgcmVsZWFzZTI3LW1haW50Cis4MzcyOSA4ZjRmNDY4ZmUyOWUwOGFmYzYxYmQ0ZWE2MTk5ODRiMzZkNmE3NmIxIHB5M2sKKzgzNzMwIDljNzA0NmZkNGQ2NjcyMDk3YmMwNTA5ZDQ3ZmQ2YWIzYzhlYjI2NjMgcmVsZWFzZTMxLW1haW50Cis4MzczMSBjYTdlZDk0MWJjYjkzNDQxM2VkYzRjMzQ2OTNhYTYzNDFkMWFkZGRlIHB5M2sKKzgzNzMyIGNhNmQ2ZWQyM2IyMzhiNzk2NzNiMDRiYTRmNDg2NzRjYTEyYTJlNTkgcHkzaworODM3MzMgOTVmZDRmYzI3YjliYjVlY2M5MjQyNWU4ZjIyNTgzZDM0OGVmMzNmMiByZWxlYXNlMzEtbWFpbnQKKzgzNzM0IDU2YWI5ZTExMWMxYzBmNWI3Mzk5YTc2YTEyMWRhNzc4MjgyYjE0YzkgcmVsZWFzZTI3LW1haW50Cis4MzczNSAzNDc0ZGRmMWViZmU0YTM4NDFiM2U5Y2FlMGMzMzc1YTNjNTkyM2Y5IHB5M2sKKzgzNzM2IGVhZmUwN2Q0MGViNzM1OWUwN2IxOTQwZTljOWZjNjhjMzMyZDk5ZmIgcHkzaworODM3MzcgYzE1YWNkMWU5MTZiMzUwNGY0N2IwMDgxZThmMTE0NmU4ZDVkY2NmNSByZWxlYXNlMjctbWFpbnQKKzgzNzM4IGExODVjYWVkZjMyY2ZlZGRiODQxOGQxZjE5MzFkNzMwMWQyZjk5ZmMgcmVsZWFzZTI2LW1haW50Cis4MzczOSAzNWJkNTdkM2QyMzJjZGJkMzYxZDdkNzkxZmE2YTc0NzljYzkwYzYzIHJlbGVhc2UyNy1tYWludAorODM3NDEgODEwMDAxNzkzOWY0OTljN2Y4NTZhMzU3ODdmNDAyMGVjOWZjMjcyMiBweTNrCis4Mzc0MiA2MzM5YTdiMzI0NWNjYzNlZmFmZTY3MjEzNjU5ZmYyZjMxZTgxYTc3IHB5M2sKKzgzNzQzIDY3NjUyYTdmMGFlZTIzNzg3YTJkYTExMWJhYjkyMTJmM2VlZTAwY2UgcmVsZWFzZTI2LW1haW50Cis4Mzc0NCBjMTY4MDNiYmQ3OTBkNzMyYTk5ODVlOTM4OGM4ODMwZjgzYWUxYWM4IHB5M2sKKzgzNzQ1IDcyZjAwNjcwNGZiZGM4MTQ1MmY0NTcyYWUwMzJjZWFhZjE3MjdkY2EgcHkzaworODM3NDYgMzg0ZDIxODlhOTZhOTAxZjY5YTFlNjYwMWJlNGQ0YzNiNDJiZmFiZiByZWxlYXNlMjctbWFpbnQKKzgzNzQ3IDI5MjI2YzA4ZTU0N2Q4ODgwYTQ0Y2UzOGI1NjFmNjZjNjliNmQ2MzkgcHkzaworODM3NDggYTAzNzM5YWY5ZDM4NWViMmI1ZjkyMWE1NzJmODBjZTc5Mjk1NmQ1ZSByZWxlYXNlMzEtbWFpbnQKKzgzNzQ5IGZjYjdlMzU5MjRlNjM0ZmNlYjMxZDJiODI0NmRkNjliODU4NjdmOTEgcmVsZWFzZTI3LW1haW50Cis4Mzc1MCBiYjJhMzE1ZDZhMDM1MDAyZDEzYTk5MjNhNDJiODNmYWYxZmI5MWE5IHB5M2sKKzgzNzUxIGY4MDZmYjNkMWYyNzc2MzliNzU4NWMyOTkzM2NhOWFjMWFmODFiNmMgcHkzaworODM3NTIgODhjZjlhMGVkMTE4MTNmNTk4NjA5YjQ1YWE3ZDFkOWI5NWJjYWI4YiBweTNrCis4Mzc1MyA2YjI4Yjg4ZjZjNGU4ODVmNGM4ZjEyZmFhZGNjNGUzMjIyMGE1ZjMwIHJlbGVhc2UzMS1tYWludAorODM3NTQgYjkwNmU5ZTVmMmE3ZmE5Mzg0MGI1YzZlNTE0NGQyOWUzZTExY2E1NyByZWxlYXNlMjctbWFpbnQKKzgzNzU1IDc2Zjg0MDJjYTdmMzU0MGVmMDMyNGNmZmViOGExZjhkZDcxNWM3OWMgcHkzaworODM3NTYgZmE2MzE0YjE0MWRjNDJkMjdhNzkwNThkYThlZTc0OTdlM2U3MmY5YiByZWxlYXNlMzEtbWFpbnQKKzgzNzU3IDBmOGE0ZmNmZGQxZTU5NGMzZTA0NGE2ZjU5Njc5Y2U2YTM3Y2MwNmIgcmVsZWFzZTI3LW1haW50Cis4Mzc1OCBiMDYyMjJmMTU1ZmY1ZWQ1YjM1YTY3MGU1ODM1YTUyZmZlMzI3YTMxIHB5M2sKKzgzNzU5IGFkMjkyZmNlNzlmOWVjYjM2MmZmMGZiNDNmZmMxZjc4NGU3MTJjNzUgcHkzaworODM3NjAgMmMxMDUxMGExYWVmYzU1NTVkY2NhMTNmMGE5YmNkZDExMDRiZDMzZCByZWxlYXNlMjctbWFpbnQKKzgzNzYxIGJiMjYwOGY3M2ViN2M2ZDM0ODJmOGQ5NGNjZmQzNzZmMDk3YjQwZjkgcmVsZWFzZTMxLW1haW50Cis4Mzc2MiBmN2JkMjhiM2M2ODM5NGQxZDZjOWMwMzk5OGFiMDUwZmU0NDE1ODRhIHB5M2sKKzgzNzYzIDhjZTY5MDk2OTZkNDJmMTc2MjgxOTk4Yzg0ZTEzMDA1ZGE4ZmFjMzMgcHkzaworODM3NjQgZDE0ZTFlNzI0OGJhM2Y2ZmFlYzkwYTBiNjA2ODIwMGI0MGY1MmQyMyByZWxlYXNlMzEtbWFpbnQKKzgzNzY1IDMwNzVhN2U4NWMxODgxNDM2ZWQ1NjgyMDA0NWMwZjg0NmM5YmY2MDYgcmVsZWFzZTI3LW1haW50Cis4Mzc2NiA3Njg2NGFjNWI2N2QwMTI2M2RlZjgxZDI3MGUyMDY0YjAxMjkwYmI2IHJlbGVhc2UzMS1tYWludAorODM3NjcgMDZiYmRkYTEzMmYzNTQ5NThjYWU3NTg4NTA2NjllNzQ3NDU0MzkyYSBweTNrCis4Mzc2OCA0M2U2YmY4NmMzN2YyYzMwNDhkNGU0MDU2YmY1ZDZlYzc5YjI3ZTBmIHB5M2sKKzgzNzY5IDA4YWVkMDBmYmVjMzM5YTBkN2YzYzFmZjU1MTczOWUzNGEwMmUzNDAgcmVsZWFzZTI3LW1haW50Cis4Mzc3MCAyNjBhYmU5Y2VmYWMyOGEyMzhjMmE4OGNmYThlZmQ5ZDU4MGZiMTQwIHB5M2sKKzgzNzcxIDdiY2Y2MjU1ZGUyZmZmM2QyYjk5MWU1ZjcwMzk3OGVhMGE0OWYwZmMgcHkzaworODM3NzIgMzk0ZTQ4YzUxNmM0YTNiMTIzNjZlYjg3N2I5ZDA4OTJhOGM0NDg3MiByZWxlYXNlMzEtbWFpbnQKKzgzNzczIDQwYjQ4Mzc4MzNhOGI1MzJmZjM3NDU4YTdhYTUyMTJlZmQwNmUwMGMgcmVsZWFzZTI3LW1haW50Cis4Mzc3NCA5ZDFjNjVmODMyM2VmYzJkZWYyMjMzZjY1NTkyM2ZjMGUzNzlmNDZiIHB5M2sKKzgzNzc1IDA2MzI3OWM2ZmMxNjBlMGFkMzkzYmUxYzhmNWMwZDIwNWU4YTJjM2EgcHkzaworODM3NzYgYmNjYzg0ZTA0YTJjYWU3MzA5NGE0ZDNjOGIwZmE4MTRlZWY0OTcyMyBweTNrCis4Mzc3NyBlYzMyMTdhOWU1MjE2ZGZiMmVmM2Q3MmUyMGEwNTNlZjEwYTliMzhkIHB5M2sKKzgzNzc4IDc2MDg1MzJmOTMzYTQ2ZWFmNDJlZjA3YjhkNjQwNzVmYzYzYmI3YTAgcHkzaworODM3NzkgMjc1YWNmY2NjY2NiMDhiNTc1OTNmYzU3Y2ViNDQ0MTllNDM4YmYzOSBweTNrCis4Mzc4MCA5YjgwMmI2YjQzOTUwOWQzYWVlYjc1NGIxYjlkODY3ZjBjODQ2NTU2IHB5M2sKKzgzNzgxIGYyN2IyN2M4MmQ4ZmY0OGJiM2FkYzUwNTUyM2ZhMDU1NzllZWViY2IgcmVsZWFzZTMxLW1haW50Cis4Mzc4MiA3MTc1ZDE4MDVjYzBkZjYwYWVjMWM0NjdmOWRlZjM2NDFmODlkODJiIHJlbGVhc2UyNy1tYWludAorODM3ODMgMGVkNjY1ZThhMTE1NDI5YmZjZjVhZDIzZGI2ZDQ2MjUzOGQ3MWFhOCBweTNrCis4Mzc4NCAyODEzNmFmMDBjY2FiNmQ0N2M5Y2ViYjE1ZWViYWUzZjM5MTY1NjQ0IHB5M2sKKzgzNzg1IDRlMzI1ODg5NDg4OWZiZGFhZWYyYzA1YTQ5ZTIxYzM3MzJmYzJlNzcgcHkzaworODM3ODYgYzZkODkyNmM5OWRmNTg1MGI3MzI1NGZjMGJkNzZiYzRlYzRmZjAxNCByZWxlYXNlMzEtbWFpbnQKKzgzNzg3IDg3ZjMzMzAzODAzNWU3OGMxZjkwOWE5NGYyOTBiNmNmNjBmNjJkM2UgcmVsZWFzZTI3LW1haW50Cis4Mzc5MiBjMWQ3ZjdmZTQ3YTA1NzA3MDdlNTY5NjRiMTFlMDY3MTQ0ZjQzMDIzIHB5M2sKKzgzNzkzIGZiMDZmYWIxNmEzZmU2MDViOTJhMzlmZDAyMTJhOWNjZjgwZmY3NmMgcmVsZWFzZTMxLW1haW50Cis4Mzc5NCBhZThjMjVmOTRhZGY0ZDM1MTlkZGU4ZDE4ODE0NzFlMWM2MTI1Yjg0IHJlbGVhc2UyNy1tYWludAorODM3OTUgZDk1ZmJjNGFlZTdjM2I4ZTYxMjIxYTdjOTlmOTkxODExMTcwNGY0MyBweTNrCis4Mzc5NiA5ZDNiYTBkNjY1YTY1MDhjNDE3YjUzNThkNmVkYjNhOGVkZTFjMGMxIHJlbGVhc2UzMS1tYWludAorODM4MDIgMjRiM2RlZDUxODI1NGMzYWY3YjMzNzJjNzI5MTY4YWFhMDM4YmY0ZSBweTNrCis4MzgwNCA0ZWZlZDYyZWFjM2E4NmMxZWRmNjI0NTUxZGUyNmJmMzE1OTg3YmEzIHB5M2sKKzgzODA1IDYwM2MzNTUwOGIzNjNkYzNiYmU1Y2VlNzdmODE2ZWM4MDQwZGQwODAgcmVsZWFzZTMxLW1haW50Cis4MzgwNiA3MDk5ZWMwYmNiZDJjOTkyOGIyNjA4ZGQxNzk5ZmNjN2YyZjc3MmFhIHJlbGVhc2UyNy1tYWludAorODM4MDcgMTU4MzljYTQzZDk2YTM1ZTNmMTg5ZjE1NmE0NjEyNjlhMmI2ZGM1ZiByZWxlYXNlMzEtbWFpbnQKKzgzODA4IGJiZTIyMjNlMzc1MDZhMDRiNTZiODg4ODU0OTRlZWRjNTJjMjNiYTQgcHkzaworODM4MDkgNGJjZDUzNjE3YTY1NmJlZDczNTBhNjgzOGE0YjYxNmM3MDQyYzg2YyBweTNrCis4MzgxMCAyOGZlZjllN2MzYmI3MzJmMWYxNjA5NjhhMGU2ZDUzOTg4MGE5MDUyIHJlbGVhc2UzMS1tYWludAorODM4MTIgOTI0NzM4YWFiNzBmZGQ2OWRlZDE1MGEyOTZiYzk3NjEzMWI4YmVlNSBweTNrLWR0b2EKKzgzODEzIDhjMjEwZTYxY2E3NzU0MTBmNzJmODRkYTEzZTY4YzYxYzY5YjZhNjkgcHkzay1kdG9hCis4MzgxNCBiZmZkMWUyODU0YjNkMzZiMTUzNTg4ODk3NzAwNzNkNzUxMGYxMTE2IHB5M2stZHRvYQorODM4MTUgYTBiZGNkZDBmMDg2NDM3YzgzMWNmYjE4MjQwN2U4NWE0ZTk3ZGE3MiByZWxlYXNlMjctbWFpbnQKKzgzODE2IGU0MWNhNjY3MmY4MjJlMDk2Y2U2ZTY5ODVkZDIwYzM2YzU1MGNjOGEgcHkzaworODM4MTcgZjRkOTJjNmQ0ZDQyYTUzZDA2MGE3M2U4M2FiZjliM2JmZDBmMTgzOCByZWxlYXNlMzEtbWFpbnQKKzgzODE4IGJmMzM1OWI3ZWQyZWQ1YTdiNzliYzI4NDU2YWUzMGJiNDQyNWYzZGUgcHkzaworODM4MTkgZTYxYTA5NGI0ODE4ZDQ1OTMxN2ZlM2M2MjBiNWNlZGVhZjUyZTlmNyByZWxlYXNlMzEtbWFpbnQKKzgzODIwIDRiMjRiN2E0MjBjOTI3ZmU1MmFmMDJkMzRhYzAwNDlkZTE3NDEyN2QgcmVsZWFzZTI3LW1haW50Cis4MzgyMSAwMTc4NzU2M2UyY2IzNDRmZTkzNDE3M2E0MDdiZTVjOWIyMjc2ZmI0IHB5M2stZHRvYQorODM4MjIgMDM3MGMxMWZkMjFkZjNkNGE5NDRmNzBhYmRmZjMyZGIwMzQ2MjVkZSBweTNrCis4MzgyMyBiNmZlYjY3YTA1ZjFmMTZmYWI3YjNlNTFmYjZjNzVjZTRhZjJkN2JhIHJlbGVhc2UzMS1tYWludAorODM4MjQgZTE2NTYwNTg1ZTM1YzZiMzY0ZTMzZmU2MDMxNGYxMDk5NGI5OTVkMCByZWxlYXNlMjctbWFpbnQKKzgzODI1IDVlYTcwN2QyY2FhODhlOWZmMzFiNjUzNGUxZmZlZTgwYmQ4MmFmNjkgaW1wb3J0X3VuaWNvZGUKKzgzODI2IGJlMTU5ZjNkYjVkNmFlMGRlMzE2MmRiZDI1MGQ3YjY0MjZhZjFiMjggaW1wb3J0X3VuaWNvZGUKKzgzODI4IDEwODZkYWQ1MGM3NDgwOTIwZDgzMGUxZWM1ODU3NmY3NWYzN2E0NTkgcHkzaworODM4MjkgNmIyMTg5ZDhlOGM0NGQyZjQyMjBiYTFjYmNmNTZkY2NlYzYxN2Y5NiBweTNrCis4MzgzMCBiNGY1NDYzOWI3YjE5NWNmOWI3ODA1MTk4N2FiZGIyYmZiYjQ0MTdkIHB5M2sKKzgzODMxIDk4M2YxMTBhMjI0ZTJhNDVlYjU5ODNmOWY3NWYwZGUzOGVmZGViYjEgcmVsZWFzZTMxLW1haW50Cis4MzgzMiBjYzVhMjQ2YjJkYTFiYjgyZThmMTdmNDQ2OGQ2ODEzZGI0OTEwZWIyIHJlbGVhc2UyNy1tYWludAorODM4MzMgNzVlYmU2Y2M4MDgzMzUxYTU1ZmIxZTc2OTNjZmIyZmQ3NTRkOTMzOCBweTNrCis4MzgzNCBjNTJmNWRmNTA0NDg4OTc1ZDlhZDlhMmE5MzBlNjE4NmFjZTQ1M2M2IHB5M2sKKzgzODM1IDg2ODNhZWE0YjcyZWY4ZGM3OTkxYWIzZDhmODQxNTcwODFmZGNjNzkgcHkzaworODM4MzYgZTEzZWE4M2UyZWRiM2RlMjJlNzJkZTUzNzRlMjc2MWVhZmE0NWJjNyByZWxlYXNlMjctbWFpbnQKKzgzODM3IDQwZDExYjgxMzlkYTUwYjA0N2ZlYjJmNWY4MTkwYTk1NjJmNGZkNWYgcHkzaworODM4MzggNTE1ZTBkNzA1NTQzZmU1NzU5N2U3YTI5NDQwZTZlNjlkZTE5OWFmOSBweTNrCis4MzgzOSAwOGUwNWQ0MjRkOTdhNjI5MzAzOGRkNWVhM2ZkODBjYzU0MDAwZDhlIHB5M2sKKzgzODQwIDYwYWM0MWFlN2YzMTIwZDA1NmNkNjBkOWJiMTQ5M2Q0NDM2YjUxNDAgcmVsZWFzZTI3LW1haW50Cis4Mzg0MSBiOWQxOTgwMjE3NDU4OTQyODc2ZTI3NzFlNGZjZmZkMDgzZDI2MjVjIHB5M2sKKzgzODQyIGRmMjU4OTE1ZjUyZmNiNGFhZjM2Y2YwYjU5NmQ3ZDkxNzE5OGY4N2QgcmVsZWFzZTMxLW1haW50Cis4Mzg0MyA1ZTdmMTVmMmMwYmU2Y2NlYjFmMzlhYTM0NWEyYmY4MDYxNGRkOWJjIHJlbGVhc2UyNy1tYWludAorODM4NDUgOGIzNzk2Y2MzMDllOGY5ODA1OWViMmNiNDZmZThjYzY5YmFiNmE4NyBweTNrCis4Mzg0NiBjYzBlZTZiYjVlOWI4NzFlZGZkMTkyOGIwNWE3NzE5ODQ2NDRkNjYwIHB5M2sKKzgzODQ3IGZlZmZjMWEyNTk5YzczZTc1OWMwZTg1MTE2NDU3NDEwOTJiZDRiNGMgcmVsZWFzZTI3LW1haW50Cis4Mzg0OCA3NmJhNDFiNzdmNTM4OTM5NTI4NDlmNzEzNjFlOWQ2YTMyODJjN2M5IHJlbGVhc2UyNy1tYWludAorODM4NDkgNDQ2MTlhNTY2YjZiNjM2MTNmOWJhOWYwYzBkMjAwYjgxZjdhYTA4OCByZWxlYXNlMzEtbWFpbnQKKzgzODUwIGZhODYyMjI2NTYwOTEyMDcxZjY1N2MzZDYyYjc3NGQ5YTk4YTU2NzUgcmVsZWFzZTMxLW1haW50Cis4Mzg1MSA1N2U2MzFmMDg4ZDczNjA1NDMyODQ3YjNhNDRmOTEzMTg4NWYwYjU0IHB5M2sKKzgzODU0IDRjYTQ5N2Y0ODE5Y2ZkYWQ4MjY3MDFiYmE2N2QxZTNlNTFhYzJlN2YgcHkzaworODM4NTUgNzdjNmY2MGExYjI0MGI1MDlkZGNjYjRhMjllMGNhMzZlZTVmZDdmNyByZWxlYXNlMzEtbWFpbnQKKzgzODU2IDU1YzcwZTc5YzY4ODg2N2MxMWQ3Mjg4Y2YwNDQwMmFkNjIzNjU5ZTggcmVsZWFzZTI3LW1haW50Cis4Mzg1OCA1NTM5NzUzM2RhNTE4YTAzYmI0M2M4YTNiMmQ1MzdmMTAyODI4ZjQ0IHJlbGVhc2UyNy1tYWludAorODM4NTkgZWI1YWE5MWYwZTE2ZjZkZGIxNDc0OTkzN2U0MjhiZTdmNjNlZGZlMyBweTNrCis4Mzg2MCA3ZDQ0MjVlMzA4ZjdiODUyNjZlYmIyMDNhOGY0NjIzNmU0ZDU4ZmFkIHB5M2sKKzgzODYxIDFiZDM1MzQxMzZhMDM2NDM1NzNlYTliZDQ0N2Q1YTY5ODU0ODVmNzggcHkzaworODM4NjIgMWFkNTkyMmFlYzQ1M2U0NzAzMTdmMWYwYWYxYTc0MDI3NzlkY2YwZCBweTNrCis4Mzg2MyBkMjI4MDY4MThmZTNhNTNkYjQwM2UyYjIyMTQyZmQ2MTRlZmRjYTZmIHB5M2sKKzgzODY0IGVhM2EyZDFiZGVkMmEwNWI1ZGQwNzMzNWRkZjFiY2QzZmFkM2ZjMjAgcHkzaworODM4NjUgOGQ2YjRmZmMwNTEyYWE0NzE3MThhYzVjMjY5YzU1Mjc1OGU2MGI2ZiBpbXBvcnRfdW5pY29kZQorODM4NjYgMDIxMzUxNTk1ZmFjMzZiMjE3ZmQyMmFlMTY4OWQ2MjcxNWE2ZjhlZiBpbXBvcnRfdW5pY29kZQorODM4NjcgMGRhM2I1OWMzZDM4MDYxN2NiNWI2YmY1NDg1NWFmOTMwZmRkOWMxMiBpbXBvcnRfdW5pY29kZQorODM4NjggZjgxMmI3OTY0MTE5OWEwZTk2ZDkwZWU3ZmY5YzljZjQ5MzM0YjkxYSBpbXBvcnRfdW5pY29kZQorODM4NjkgM2Y4Y2VmODM3ZjA3M2MyYmMzNzc5NzA1MWIyYTVmZGI5NmVmMTRjZCBweTNrCis4Mzg3MCAxMGM5NWMwZjM0ZDM1NWJlOWY1ZDY5N2U5ODc0NTM5YjJjOGM2ZWZkIHB5M2sKKzgzODcxIDUyMzU0Y2IyOTY0NDkyNmExOTU5ZGQyYTJiNDI0MTQ5YWQyOGJiY2YgcHkzaworODM4NzIgOWM0NDViYWQzNWIwODZkMDQxNzMxMzBhNWY5ODRjNWI4MzQ4NWNmNyBweTNrCis4Mzg3MyA3ZjVlMTE1ZDc2ZGZhZDNmNjQ4ODUzY2QyZjE3YWVmYzJhZjRkYjg2IHJlbGVhc2UyNy1tYWludAorODM4NzQgYTEzYmRiMmI4Mzk4ZmJmMTkxZDMyMTJjYzIyMWQ5ODk3YzE5OTRiYyBweTNrCis4Mzg3NSA4Y2UxZGYzNTI4Yjc2ZmNiMmFlZTJiNzBlZTcwZTlhYTllMjk0NDhjIHB5M2sKKzgzODc2IGM3OTk1ZTliYzJlMzZkOWYxYTIxNjcxNTAyYzU3MGNmZmU3M2JkYWEgcHkzaworODM4NzcgOGI5M2NmMzNiOTg3Yzg3NzlkZWNmNTgwMWJhMTVjNTFhZWE5Nzg2ZCBweTNrCis4Mzg3OCA2ODhlZGJiYmU2NTgxNzVlNmI4ZmUzODA1N2U3ZmE3YzYwYmYxOThmIHB5M2sKKzgzODc5IDVlM2M2MWNiNzAxNDFkMzYzMGQzZWUwYmQyMjZkZDgyZjMwZDIwODMgcmVsZWFzZTI3LW1haW50Cis4Mzg4MCA5NDY4ZDEzMDQyODQyNWQyNjUyMTkwODJjNGZlOWVkZmE2ZTkyMDFhIHB5M2sKKzgzODgxIDNhZTk1ZjIwNzYwNjM0NGY0MjNiNTVlZmIyOGI1ODgyN2Y2MWFlYzQgcmVsZWFzZTMxLW1haW50Cis4Mzg4MiA3YjdlYmY1NTg4OTQ4NTQ3MzhjNDE4MzRkMTM0ZTVkMjlkYWY4NzdhIHB5M2sKKzgzODgzIDAwMTUyOWQ2NDdmZTQ5ZGFhZDE0MDFmZjMyMzU1M2ZkNWU4YmQ2NTIgcmVsZWFzZTMxLW1haW50Cis4Mzg4NSAzYTRiZTlkMjVhNWY4MzA2MGNkMjdkODFlOTY3ZGUyNzI4YTI4MDY4IHB5M2sKKzgzODg2IDVhZTM5MGFjNmM2MWQ4YWU5YTZkOTdhNDQ3MGQ4NWE3OTU4NzUzMDMgcHkzaworODM4ODcgNWMwZDVkZTU2ZmRmOWFhYmU4OTUwMTdkODVmZWU2MDFmZTFlNzkyOSBweTNrCis4Mzg4OCBkZTA4MDk3NzJkN2U3MDNlMGQwOTExODY2OWE0MWYxOTFmYzYzZmNlIHB5M2sKKzgzODg5IDhiYTA5Y2RiNmZjNDhiMmFkZjBlYzZiYzc2YzE4MjFlODkzYThjZjcgcHkzaworODM4OTAgNzk1ZWIxMjQwM2I5NDQyMGRiNDg4YzQwMzhmNmRkZWVkMmE0MjY2YSBweTNrCis4Mzg5MSBkZmJiZTdiMzBlOTAxYjM2ZmE0NTE4NDg5YjM5NzY5NzI3YTE2YjhkIHB5M2sKKzgzODkyIGUxNjA3OWM2YTQ4ZjU4M2NkMzY4ZDhmNGYwODA2ZmZjZjc4MTZlZDggcHkzaworODM4OTMgZjE2MjdjZmNjODkwNTBiNmY3NTM2OWE5ZjQzMWQ1NjNkOWRlZGEwYyByZWxlYXNlMjctbWFpbnQKKzgzODk0IGMzOGYzYjk2OWI0YWU1MDQ0NGNkYjViNjZjNzBiZmIzN2U5NzMzNjcgcHkzaworODM4OTUgN2RjMzdhZTE3NWZjZDU3MDdlNzRlNjBhNTFlMDY0Y2ZmOTc0OWQyYyBweTNrCis4Mzg5NyA2ZmIwMzEwMzdmMjliNTBiYjk0ZDE3MDIzMDljZmE3MjMyYjlhYTY2IHB5M2stZHRvYQorODM4OTggMzU1ZDcyNzM3MzY0ZmJkZDg1OTllOGYzMzczYTQ4OGNmNTI3M2JmYyBweTNrLWR0b2EKKzgzOTAwIDcyZDA1MDRlNjQ4OTYwNDI0ZmIyY2I1MWRjYjhkZmI3OTFiZDRiYjggcHkzaworODM5MDEgYzg5YWQ2ZjljZGRjMTgyMjNjZTRjNzE1ODRjZWNhNDkxOTlkMTI5ZSBweTNrCis4MzkwMiA5NTExN2FhYjlhODZkZjcyZDJmMTliYzFkMWZhODY3ZDU0N2EwZmEzIHJlbGVhc2UyNy1tYWludAorODM5MDMgNTAzODhhODNlYzNmN2UwYjJjOTQ2YmMyYjJlNDRmOGM5ODRjYWJiYyByZWxlYXNlMzEtbWFpbnQKKzgzOTA0IDUwZjhmNTI0N2M4MTBhZWI4MDE4ZTRjYTM3YTQ0ZTA1YjY3OTI2YzkgcmVsZWFzZTMxLW1haW50Cis4MzkwNSAwYWU3MDZhNzFhM2E1MGRjMWQxNWI5NWQwZTk1NTRiZDAyMjE3Yjg2IHJlbGVhc2UyNy1tYWludAorODM5MDYgYTU2ZDhhODBiODgzOWU1NTk3ZGZkMzA1YTc2NDIxYTYzODliMzExOSByZWxlYXNlMjctbWFpbnQKKzgzOTA3IDQ2ZDQ4ZDcxNTQ0MmZjYmI4MDJlZWQzOTc1NmZkMzIwOTI5ZmI4MmMgcmVsZWFzZTI3LW1haW50Cis4MzkwOCA2MDA3NmYyOGMwMjNhYzZlYWEyODg1ODIzOWQ4YmY3ZTljYmYzNjBkIHB5M2sKKzgzOTA5IGMyZTFkYjMwZjc1NjJmYWNlNTBkYTFhNTQ4ZGY3ZDU2ZGIwZjcwNGMgcmVsZWFzZTI3LW1haW50Cis4MzkxMCAzMGNjMjdlYjM1NGFjZjUxYzQ2YmRlMmYyNzEwNTE0Y2U2YjhmMWNiIGJidGVzdAorODM5MTEgOTg1MzY1OGE4MzU1YmJmYjhlNDM4ODMyNTViMTIwMTIyMDRlNzk4NCBiYnRlc3QKKzgzOTEzIDI5YWY5YWJjNzZjYWRhMTUzZmFjNzE4NjJmOTAzNGFmMmI0ODUxYWEgcmVsZWFzZTI2LW1haW50Cis4MzkxNCBiMTg5MmI3ZjE5NjZmNGVjOGI5MzA3ZmZjNDk5MTBlNTEzZjE2ZjFkIHJlbGVhc2UyNi1tYWludAorODM5MTUgNGM1MjNlMWVmMTBmMmI3MjFmNjA3NGMyYmZjNjEzNDEyY2QzZWY4MyByZWxlYXNlMjYtbWFpbnQKKzgzOTE2IGMzOTEyYWFjMWI3M2Y2MGY5YjZjZTk3N2JjMGU5ZGRmMjZmOTdmOGQgcmVsZWFzZTI3LW1haW50Cis4MzkxNyA2Y2QyOTJjOWMyOTYwZTgwOTc1MmM1ODAxMWI5YWM0YzYzNWE1ZmMxIHJlbGVhc2UyNy1tYWludAorODM5MTggMzcxNTY5MDdmMzU5Y2I5ZGE1YTg5YTJjOWFlZTY2ODg1MDAzYjE0NCBweTNrCis4MzkxOSAxMDliZGU1ZTQxYjk0NGVmM2FkZTk4YWM2MTQ4ZjZiYzI2ZTRhNThjIHJlbGVhc2UzMS1tYWludAorODM5MjAgYjY1ZGNlNTkwMmEyODQ3YmZjNTM5YTc1ZDQ0MmZkYzQ5ZGY2MGFhYiByZWxlYXNlMjctbWFpbnQKKzgzOTIxIGZmOTYxNGVkZjNhMDU0NmZjNmYxNWI5ZjJjMDU1ODBmZTZiNDM2MjkgcHkzaworODM5MjIgMTRmYjY3ZTdmYTA0NjhjMTA3YjZkMTE4NWQ4NDMwMTM5N2ZiM2MyOCByZWxlYXNlMzEtbWFpbnQKKzgzOTIzIGZhNDg1ZGNlYTYxM2U5MTVhMzllMTQ5MTU4MjRiYmMzMWVmYzMyNTYgcmVsZWFzZTI3LW1haW50Cis4MzkyNCBiY2VhMzVhMmQyZDJiZDk1ZTEwNWQ4ZThiMTJjMWQ1MDQyMWRhMjc0IHJlbGVhc2UyNy1tYWludAorODM5MjUgMTlhZjA4Mjg3Y2M3OTI5M2YxNjE0OTU1OWI4NTE5ODdjYjk0YjFkMCByZWxlYXNlMjctbWFpbnQKKzgzOTI2IGFkNmM4ZTIyODcxMmU0Yzk0MWM5ZmE4Y2E1MjFlZDg0NDUyNjRlNmYgcmVsZWFzZTMxLW1haW50Cis4MzkyNyBjMmRiMjdhYTZiZjI1MDBiYWNiYmM4ZjUzOWM1ZTQwMGYzYzAzNjljIHB5M2sKKzgzOTI4IDEzMjJlZjNjNGE2YzgyOTJlODBkOTlhY2VhZWQ0YTQ2ZGNkYTZhNzcgcmVsZWFzZTI3LW1haW50Cis4MzkyOSBkZWExZDI2OGUzNGVkNjdmMTMyY2Q5YjA1ODFkMWQyYTZiNWJhMzU2IHJlbGVhc2UzMS1tYWludAorODM5MzAgOWUwMDNhMjYyMDkzM2M5ODZiYjVmMTM4MGExYTc4Yjc1MTliZjVmYiByZWxlYXNlMjctbWFpbnQKKzgzOTMxIDRmNzZjZTY5YWVkMGRjMjc0NDRiZDM0NWI5ODA3MTM5NWUzMmI2MWMgcmVsZWFzZTI3LW1haW50Cis4MzkzMiAzOTA5MmY4NmIwYWYzMmRlYTVjMGIwOTUwYjFiYTAyY2VlMzkxMzNlIHB5M2sKKzgzOTMzIGEzODUzYmZhMjUxODE2ZGQ1NzFlNGI2YzVkOGJlMjc4YzE1NWQwNzYgcHkzaworODM5MzQgM2Q2YTAyZjBhMmQ4YTdhZTM3NzdjMDVlYjk4ZTZiMTE0ZDUzNjIwOSBpbXBvcnRfdW5pY29kZQorODM5MzUgN2U1MjVlMTI1YjcxNWUzOWExNjZmM2FiZTdhYWU5YTdkMzRjYjM5MCBpbXBvcnRfdW5pY29kZQorODM5MzYgN2RkNWY1Y2ZhMTc5NDY3Njc5MzU0YjJiNDAwNTc0NDI5MjdjMDk3MSBweTNrCis4MzkzNyAwYTFhZDliMTE0OTYyMjU1ZDIzMDUwZTkwNDEyMmRkZDYzMTY3OTRkIHB5M2sKKzgzOTM4IDJjYjU4MTc0YWE3ZGEwNzJjNTlkNTUzMWI0ZTZjMDliZTU2NGUzYmYgcmVsZWFzZTMxLW1haW50Cis4MzkzOSAyOWUyMGJkYjJiMTFhYjBjZTE0NjczNjY5ZjJhM2JkNWQyMjYxZGY1IHB5M2sKKzgzOTQwIDQwNTU2YWU0MjRiNzM3OWY0ZTRhNjEyZjJjOWRjMjdkOGU5MTgwMDQgcmVsZWFzZTI2LW1haW50Cis4Mzk0MyA2ODk2OWI5ZGMzYjA2MDA1NmNkZGE2ZGJmMDUyOGQzNWYyYzMyOTlkIHB5M2sKKzgzOTQ0IDczNjQ5NDA2NzJmMDA0NDcxM2VlYTQ4YWMzZmM0NzMxN2VhNzExZjkgcHkzaworODM5NDUgOTMwYjI4MDNjNzE2NmIyMjNjZTE3MGZhZWY0YzQ4MWFhNmNjZDY4ZSByZWxlYXNlMzEtbWFpbnQKKzgzOTQ2IGMzZmY2ZTkxMDA2OGIyZmU4NzdkNTBkZTVjOGQwZmJhZWY3Zjg5MDYgcmVsZWFzZTI3LW1haW50Cis4Mzk0NyA1NjA2NmE1ODI1Y2EyMGJjZDUyNzRjNGFkNjliODVlNDAxOTI3NWZjIHB5M2sKKzgzOTQ4IDc2ZDQ2M2M5OTAwNjM5NmRjNDE1MTIzMzgxYTFlYjI4ZjNlYTM2NGEgcHkzaworODM5NDkgOTEwOGU3ZGNkN2Q4MDVlN2JjZDA4ZGIxZGQ2YzYxNWEwNmE3NzZjMCBweTNrCis4Mzk1MCBhMWRlNDYzOTU2NGU1YWYxZDllMmY3NDJkY2JkODU5YzBkNDM4MWMwIHJlbGVhc2UyNy1tYWludAorODM5NTEgZjIyZTk1MDU1MWFkMmI4OWMwNDhjNDVkODBiYTViYjA3YmRmNTgyNiBweTNrCis4Mzk1MiAzZmE4ZjQxYTExMDNjOThjYWYyNjk0YmNhN2VlYTYyMTEwY2M2ZjMxIHJlbGVhc2UzMS1tYWludAorODM5NTMgZDFiMDM1ZTI0MzcyYmUwMTdkZmRkNGRkMjRkMGIxMzZkNDc0OTY1ZiByZWxlYXNlMzEtbWFpbnQKKzgzOTU0IDNkYmJjZDM0ZDQ5NGUyNThiMGM5ZmU1NDBkYjViZjI5OTA1ZTNlYzggcmVsZWFzZTI3LW1haW50Cis4Mzk1NiA4NDk5YWU1ZDk3MTk2YTcyYTViODc0YjNjYmY5MGE4M2RhNGU3MzU5IHJlbGVhc2UzMS1tYWludAorODM5NTcgYWIyZDk0OTMxYjBjMTA1ZmE1M2M2MDIzOWZjYjM5YjgxZGVkNDNjYiByZWxlYXNlMjctbWFpbnQKKzgzOTU4IDU5ZGIzNjNmYTU5NDVjMTc5MDc4NTRiZmQwMDIyY2Q2NGM3YmExODcgcmVsZWFzZTI3LW1haW50Cis4Mzk1OSBmZDQ2MDZlZmM3MDBhYmIyNTc4ZGJmODg2MDIwMTVmZTk5MjVhZmM4IHB5M2sKKzgzOTYwIGY3ZDhhYTEwYzNlZmE3NjhhNzVjMTYwYTA0ODFiYjZmNDRiMGY5OTIgcHkzaworODM5NjEgZWQ2NmIyNDE3MWFmMTJlOGI3NTY1YmY5ZTllMGM1ZjRhZjlhYWE4NyByZWxlYXNlMjctbWFpbnQKKzgzOTYyIDY4YzQ4ZjhhYTU1NTM4MjM0ZmQ1YmE2Y2UzMmJmZTkyNzkzMmYyZGYgcmVsZWFzZTMxLW1haW50Cis4Mzk2NCA1MzQzZjU3MTRmZWVjNTFhZDNjZmUxYTdhNWE2ODQwZTIwYzYyMjc1IHJlbGVhc2UyNi1tYWludAorODM5NjUgYmU4M2QyOTNhMWU5YWY5ZTY3Yzg3MDUyZjJkOWNlOGEwMTFhYmRlYyByZWxlYXNlMjYtbWFpbnQKKzgzOTY2IDAwNTcyMWU1MGUwYmExNGZiMzhiYjI1MDVmMTgxMTE0MTAxZmUyZWEgcHkzaworODM5NjcgNjRiNWM2ZjI5NjAxY2Q4OWU0ZmNkZmE3NzIyODI1MmNkOTZiYTRjMSByZWxlYXNlMjYtbWFpbnQKKzgzOTY4IGNiNDYxYTkxNDRkYjAzNTQzYzY1NTJlZGQwMDNlMmFmOGRjMzRkNjMgcmVsZWFzZTMxLW1haW50Cis4Mzk2OSBkMmI3MjExODViZmEyY2QxMjc0NDQ4ZjJhYjY5NjBlNjJiOTFmYmViIHJlbGVhc2UyNi1tYWludAorODM5NzAgNGE1YWQ5MThmN2FmNDU0NGI5MWYxODczZWRiZjM0YmQxZGMwMDMyMCByZWxlYXNlMjYtbWFpbnQKKzgzOTcxIDg3YjJkYTg0MDI1MmU3YWJhZmM4ZjkyNzYxMWU5ZDZmY2Y1YmI2ZmEgcHkzaworODM5NzIgMDNlODg0ZmFjNGRiYTI1MjkwYjc4YmU2MDQ0NWZmODE0YWRiODQyMyBweTNrCis4Mzk3MyAyZGQ5NjRkYWQxNjg1NGYyNzE1ZWU4NzkxM2YyNTRiZjg3ZGEzODlhIHB5M2sKKzgzOTc0IGE0NDljZTFmMzg1YjczNDUwNmNmMDMyNzk3NWExMjI5NzQ0Yzc0N2YgcHkzaworODM5NzUgYWE4OWNiYjdiYzIxOWJlYTExOGMxNDU0YTVkYWQxYWY5MTNiYzU1MCBweTNrCis4Mzk3NiBmYTJkOTcyMGE2NmNiMTBmNjExMDQxNzE5MTMyMDdkNGRkZmFlYjk0IHB5M2sKKzgzOTc3IGQ2ZjhlODZhMWJlYzIyYzNhZmNiNTM0OGQ3NTM1MTMyMTkyY2FiMTIgcHkzaworODM5NzggNzU1NWIwMDM1YTc3NzQxMWQ4NGQxOTZjOGQyZDE1NmRkOGIwZDZmYSBweTNrCis4Mzk3OSAyN2I1NTNjZGQ4NWI2NDZhYjlkNGNjYjhiNGIxOTdkOTljMTZlMjBjIHB5M2sKKzgzOTgwIGYxZDkyMmQ4MjBjYWFjYWFiNGQ2NzhiZjg2YWQ4YjQwZDNlZTNkZGEgcHkzaworODM5ODEgOTEzYWE4YTQzMDRjNTc0YjJlZDIyMmNiYzNiYzY1NzQ5MzUxMjhjNyBweTNrCis4Mzk4MiAzYTgwZTY3YTBkMzcyNWE4YmU3ZDFjZDNlZWViM2E4NTA2NmI1ZDUzIHB5M2sKKzgzOTgzIGFhOWM4ZTgyYzQzNTc2YmYxNzVmN2FiYWJhN2ExMzQwY2FkN2Q2ZGEgcHkzaworODM5ODQgZDRiNjcwYWE2ZDZiODNkYzY3M2VkYzlhN2Y5MmU0MjQ5NjI1OGMwNiByZWxlYXNlMzEtbWFpbnQKKzgzOTg1IDA2ODI5MWQ0NGZkN2Y4YTFhNWMwZTU0YzViMGMzOGJhMDk1NTc0MzkgcmVsZWFzZTI3LW1haW50Cis4Mzk4NiBlNTRiYWViYmQ2ZmYwMTA0Mzc1MmNiZGRlNTI0ZjdmNDVlMTU3MGJiIHB5M2sKKzgzOTg3IDI5MWM5YWZhYjEyY2UwNWQ4ZGIyYzVmZTdjZTJjOTk1MWZiOGZmYmYgcHkzaworODM5ODggNDc0MmU3YWVhMmY1OWNjZjYyZDgwOTgxYmRlMjU3OTE0MmQzODVjNSBweTNrCis4Mzk4OSA3YmU1OTE2MzMzZGZkYTZmMDc3ZDliMzM0MmQ1YzMxM2U4ZmJiMWQ4IHB5M2sKKzgzOTkwIDUwYzBkYmFlYWEwNDgwMTE2OTdmMzdkZGQ3NGE4YTliNDIxMGE2YjkgcHkzaworODM5OTEgYWI2OTQ2OTcyYjdmZGJiZDQ4ZmY5ZGIwMGUwYzRlMzZhMmZiMDY2MyBweTNrCis4Mzk5MiBkODY4NmM2ZTZiNWViZDZkMzIyZTA0NWYwNzQ1ZThmY2E1OWM4NGU5IHJlbGVhc2UyNi1tYWludAorODM5OTMgM2FmNTk3ZjEyMzJhZjY4YTE1ZDA5YzUzYjBhYjI0M2FmYTYyNWNiYyBweTNrCis4Mzk5NCBkNTRkYTkyNDhlZDlmZmFmNjVmNjUxY2E3MTk4OGNkY2IxMzBjZDgyIHJlbGVhc2UzMS1tYWludAorODM5OTUgNzA2MzRjM2UwMzEwN2ExZGRhZjMyNjFkZGU5MWQyMWU0YzA5OTNkYyByZWxlYXNlMzEtbWFpbnQKKzgzOTk2IGY3NjM5ZGNkZmZjMzZkYmE0ZGIyMTE4YTA0Y2I4YmZmMzEwNWFhMDggcmVsZWFzZTI3LW1haW50Cis4Mzk5NyA5NDIzMmEwYzQ1YWUzNDg2NWUwZTliZWNiNGRjYzE2YTc0YjUxODJlIHJlbGVhc2UyNy1tYWludAorODM5OTggY2JhMmE5NjExMTcwMTQ3NzI4MDUxYzY4MTRkZWM1MjhlMzA0MTlmZCBweTNrCis4Mzk5OSAxYjU1YjcxYzdjMjEwZWFhNGVjNTdmMWZlY2JlOTExOWFhMTk4ZDAwIHB5M2sKKzg0MDAwIGY4YjRlYmU5YzQxYjlkOWQ2ZTg3M2NmMzYxNTlmOGIyOTAxNzQ2NzEgcHkzaworODQwMDEgMzhkMmI2NGFiN2MxNWZiNzViZjc4YmYzNzQ3N2IwY2JmODA3ODc4ZSBweTNrCis4NDAwMiBkNDYwMGVlNWU4MmYwZTk3MTY0ZTMwN2Q3OTU3ZjYzZTg4NmQzMjIzIHJlbGVhc2UzMS1tYWludAorODQwMDMgNDk0YTFiOTU0NTY5NmI1YjcyNmQxZTE2ZjU4ZmMzN2YyZGQyZThhNSByZWxlYXNlMjctbWFpbnQKKzg0MDA0IDk3MTI0OWM3NGU4MDVkOGI3NmZkNzg3OWNlNzczMDVhMzg2MmJlOGQgcmVsZWFzZTI3LW1haW50Cis4NDAwNSA5ODE1NTVlOTk4NmUzMjk0YzQyMTQ2ZTUyMzlhYjk2MGZlN2M3YWU1IHB5M2sKKzg0MDA2IGFlZDRkN2YxMjgyMWQ3MTFhMGMwYzUyYTM4ZDk1YjY5NjExNzVjNDYgcHkzaworODQwMDcgMDYzYzk5ZDgwMzJjNTE4NzUyMzNiYzk4NWViMDg1ZTllOTRjYjhjNiBweTNrCis4NDAwOCA3OTRlYjQwYmVmM2E2NTU0YTg5OWMwNjc1YzllOWY1ZmRlZWU4MWMzIHB5M2sKKzg0MDA5IDJkN2JiYTFjZjNiYzU3NTI5MjNjYWI0MDYwNGUwNjM4ZDQ4ZmVhM2EgcHkzaworODQwMTAgMjkzZTMzMmI4YjRiMDVhNjk3MjJjZTk2MzdjNTkzODczZWQ4Mzk5MyByZWxlYXNlMzEtbWFpbnQKKzg0MDExIDg1YWRmZTU3ODc3YjFjOTU1OTUwOGRmOGRiMmZkMjZkYmIxMTA1NTMgcHkzaworODQwMTIgOTUzMDEwYzBiMTY4N2ZmOWY0NjU5MTZlOGZlZjdmYmRhZWNkOGU0ZSBweTNrCis4NDAxMyBhNjU5MmZjZjc1ZTc3ZWY0NGE2OTZjODRjM2NmYzM2NjY4MmYwZmY4IHB5M2sKKzg0MDE0IGUwMTM4NTA4NjBmYWYxMzViNzc5MWUyMTllNWI4ZjE2YTE2YjhhMjAgcmVsZWFzZTI3LW1haW50Cis4NDAxNSAyYjBkZjllMWY2OWVjOWU2MTQ1Y2EyYjAyY2M4ZWYwZTEwNjliMjE3IHB5M2sKKzg0MDE2IGYxZDE4ZjRkNjE2M2I1OWFmMzJhZmNiMjRkOTZhYjA0NjQzNjFjYjYgcHkzaworODQwMTcgOTRiMjkwYWJiYWZiYWE1M2I0OGExMTk3ZDM0YzMwMTI4MTY2NmE3MiBweTNrCis4NDAxOCBhNGZkMzdhMWJmMzc0MzVkOGY1MDFhNDk3Yzg5OWE5NDlkZWYzYjQ0IHB5M2sKKzg0MDE5IDEyZmU0Yzg4ZjllNjY3NGRhYmFmODA0ZDlkZTJlYzhjOWRmNDIzN2IgcHkzaworODQwMjAgMjc3MTFiMGNkMWYwM2I1NGEzYjc1ZmFhY2I3MjQwZGQ4MjkyMTBjZiBweTNrCis4NDAyMSAyODU0NGQ2NjhlZDBkZmI0NjU3ZjQxM2E4MTM3N2MzYzkzMjZmZWJhIHB5M2sKKzg0MDIyIGVmNzU5NTUxMzhkMjI3NTllNmUzMzc1YmI1ZmMzZjEwMjIwYzE4MzUgcHkzaworODQwMjMgMGFhYzQwYzc3NDQ0MzQyODEzZmIyMGViNDIxZWU1M2MwNzlmODJmOSBweTNrCis4NDAyNCBiN2FiNzdmZDI3YjcwNzMwMzAxMDU0NGEzYzVlM2MzMzNmMGNhYzQ4IHB5M2sKKzg0MDI1IDJjNmQxM2M0MDUxOGJlYTIzNmMxN2NkMzVkMmZmZDkxNzJiOTNjZGUgcHkzaworODQwMjYgYjcyMjBlNDI5YWJiNDc0ODAxMTE0MTZhYjIxODgyMzg1Y2JjYzAwMiBweTNrCis4NDAyNyA5YmQwODI3MDE3NzY3MzY1YjY1NmEwNGY4ZjRjODMzYjAwZTVlOTJmIHJlbGVhc2UzMS1tYWludAorODQwMjggNDViMjRhZGZkMDY0OWYwODhiNzIxYWMxMDIwMjAzMTgzNGRlNTAyMiBweTNrCis4NDAyOSBhYjY3MGU0MTRjMjY5ZTdiNGRiYzk5N2FlNTU1MjJiMzQyZTcwYzAzIHJlbGVhc2UyNy1tYWludAorODQwMzAgZDM2MDMxMWYwZTUyNDc2YWUxN2RiMGQwYjRiNWE1MzIwZjM4Zjg1NyBweTNrCis4NDAzMSA1ZjMzNjUzZTM4MzdlZWUwMDZhMTEzYTAzODkyMDMxZDYzYTJkYjlkIHJlbGVhc2UyNi1tYWludAorODQwMzIgM2E3OWFhMmM0NTQ5ZmUzNTM4M2ViNTNlYTA2NTBlODU4ODFlMGU1MyBweTNrCis4NDAzMyBmMjkyM2ExNzUxZDgyNTQ2YmJmYmMyZDM4NzI0ZjUxZDI4OWVmMDAzIHJlbGVhc2UzMS1tYWludAorODQwMzQgMGU3MjE4MzA2N2VlN2ZlOTgwYjYxZjg2OWI5ZThjN2U3ZTAwOTkzZiByZWxlYXNlMjctbWFpbnQKKzg0MDM1IGM2OGYyNzEzNDJkMDY1ZGYzOTExYjYzNTUxZjU2ODkxZWI1NWNjNWQgcHkzaworODQwMzYgMzdjNDg3OTBkMDhlMGRmOWJjMTRkN2ZhODM0M2E4MjU3MzJiMGJmMyBweTNrCis4NDAzNyA2NTZmZTYyOTJmOWY2ZTliNzZhYTEzNzIyZjI5NTBhNWZkZDUyOWRiIHJlbGVhc2UzMS1tYWludAorODQwMzggYjFmOTkzMzVjNjc3NGU3YjVlNGMxMDlkNGQwYTQzMGNkY2VhZTJkYSBweTNrCis4NDAzOSBhZmFlOTk5NzgyMjY5ZjM0N2VjY2IyZTM0ZDFkZTliZDI5ZDljOTAyIHB5M2sKKzg0MDQwIDFlN2RjZmMwNDA2MTliOGFkYTVkYTllYTI3NTVkMjBkNzU2YjIzYzcgcmVsZWFzZTMxLW1haW50Cis4NDA0MyAzYTFiNWIxYzA2OWIyYTQ2NTMwYTMzM2ZiNTYyZmU2ZDU3ZDQ4NTI1IHB5M2sKKzg0MDQ0IDk1Y2U4ZGEzN2U3ODdmZTVjYmE1ZjdjZGM3ZmM2ZDE5MjY1Yzc2ZTYgcmVsZWFzZTMxLW1haW50Cis4NDA0NSBkOGQwYWJlNjFlODNlN2EwMDhhYjdkYThmNTUwYThiOGU3ZjJhMTg1IHB5M2sKKzg0MDQ2IDA1YmE4ODI5MmQ0YzVkOWNjNjdjMGU3YmE2NDBjMjYwNWY3MDE5ODIgcmVsZWFzZTI3LW1haW50Cis4NDA0NyBkNjY3YmE5M2YwMmFjODg3MTdhMTllNzMwODg3NDg4MjE4YzY2ZjQ0IHB5M2sKKzg0MDQ4IDIwM2IxOGQ1YzYyNmRmYTk2MzkwODEzYmE3NDAyZjk1OTJiNWIxYzMgcmVsZWFzZTI3LW1haW50Cis4NDA0OSA3NTM4MDQ5ZWZkZTg5Y2IxNmI1ZWUzYzZlMTM0ZTA4NDU4NDczN2MzIHJlbGVhc2UzMS1tYWludAorODQwNTAgMzUzNDM1MWM4MzAwMTQxYTMzN2NhNmNkNDVkNzQ1NDlmMDhlMTE5MiBweTNrCis4NDA1MSA4ZGI1YmQ3MDFhYjM2MGZhMDJkMWQ4MzY0NWMwZWZlMDZkNzgzMzkxIHJlbGVhc2UzMS1tYWludAorODQwNTIgMDE1ZjA1MTI5N2M1MjM5YWQzOTM2MGQ2NjQ1NjJjNjBhNTAyMjA1NCByZWxlYXNlMjctbWFpbnQKKzg0MDUzIGMyMzNjODRiZjQwM2I0Y2IwNGNmODJiNTNmZTljMTA4OTkyMmY5ZDggcmVsZWFzZTI3LW1haW50Cis4NDA1NCA4ZDBhYjU1NWExNjAwZGNkMjY3NWMxZDA1NDNkYTVmNzgwNjdjNjJjIHB5M2sKKzg0MDU1IDI2NmYzYTg3N2Y2NGM4Y2U2NjcyMjkxYThlMjAxYmRhN2FmYTZiZmQgcmVsZWFzZTI3LW1haW50Cis4NDA1NiA2ZGZjN2RhMTc5MTQzNDQwMmNjMGI4ZWEwOWNjNjk0YjllOTQ2MDg0IHB5M2sKKzg0MDU3IDJiMzZmMjljMzNmYzZlNDdhM2UxNjY2ZGNhY2Q1NjFkNDEzYTAyZDIgcHkzaworODQwNTggOTRkMWRhZDU1OTU1MzQ3NTVkODAwODFhZjY5YjEyYTAzYzgwYzhmNiBweTNrCis4NDA1OSA2NGZiMGJkNTVkM2NkZDRiZmEzMmFmMGM0MWRlMDcyMGEwMjU3OTQ3IHB5M2sKKzg0MDYwIDhlMDk5MWJhMjlmNDU3M2RhYjMwNjhmNTVlYmQxY2Y1N2MyOGQ3ZDUgcHkzaworODQwNjEgZjg4Y2RkOWE0NGVhNmMxN2UxOWU4ZjU5MjU0YmRlNGJmMmZlOTA1YSByZWxlYXNlMzEtbWFpbnQKKzg0MDYyIDhmMmYwNThiN2Q4OTEyMmMyNzg3NGFmYTA2OWIwNWNlN2ZhZmY5ZDcgcHkzaworODQwNjMgNTY3ZDAwOTIwZWQ2MzY2Y2JiYTc0YjE4ZTk4Yzc2OWE0ZmU3MDIyMCBweTNrCis4NDA2NCA3YTFhZGJlYzBkYjg3NjU3YjgyMmI5YjNiNWQwYzg3YTc4YTRkNTJiIHJlbGVhc2UzMS1tYWludAorODQwNjUgYjlkZDQ2N2QwNTc0MTg5MTYxYTJiMDVmNmZkMTQzZGY1MTIxN2RjOSBweTNrCis4NDA2NiA5OTY2MmRiOWRjNDE5ODZkYWQ0YTA3MWVmNjYwYTEwYWYyMWFmZWFmIHJlbGVhc2UyNy1tYWludAorODQwNjcgODI3YTYzM2U2OGNkM2U0NGQ1NGFlNDk1MmM4YzU3ZjA0ZGVjNmFjNyBweTNrCis4NDA2OCA2ZmIxMDEzZTMwNzlhYTAzZjMxNTkwNzFjMGI4MmEzOWFjZDViNWMzIHB5M2sKKzg0MDY5IDAwODc1Y2MzNGQxNzUxMjdhNjJmNjcwNGE4ZWUxNDM3MDE0NjAxOTMgcHkzaworODQwNzAgOTAyOGYyM2RiNzRiZTQxZWNmZTc3NjExMzMxNGEzZTdhZTAwMDlmOCBweTNrCis4NDA3MiBlNzgzYzdkNWFlMzY0NjQ4YmFjZWMyZDFlYjNmYTUxZmIxMjUzYTAwIHB5M2sKKzg0MDczIDdhNTQ4NDhkNDkyOTQ4Zjc4NzFkZTc5ZDhjYTBmYzdlNmMwYmYxZjggcmVsZWFzZTMxLW1haW50Cis4NDA3NCA5ODY4NmIxMDMxNGU5OGQwMWY5YzgxMDY2NTdjMmM2ZGRiZmIwZWRjIHB5M2sKKzg0MDc1IGRlNDZlNDI1MDQzMWM2YjY0YjE5YmY4ZWE1NDE3YWFjNjllNDc5MjggcmVsZWFzZTMxLW1haW50Cis4NDA3NiAyMGZkZDI0ZGQ5YWFmMjRkM2E0ZTNjMGZhZjQyNzA3OGVlNmQ5ZjU1IHB5M2sKKzg0MDc3IDc5ZDU3MmVhMTdkZjQzMmQyMDM1ZjI5YzNhNGMxNjAzODlmMDkxZTggcmVsZWFzZTMxLW1haW50Cis4NDA3OCA2ZThmNTg3ODg0OWM4ZTZkMzllMDczNjFkNzFhMGQwNzEwZDA0NDJiIHB5M2sKKzg0MDc5IGQxNTg4MDhkYmQ1YTI2OTlhODVjM2I1ZjM2NDExOWNlMzc2MTU2N2MgcmVsZWFzZTMxLW1haW50Cis4NDA4MCA2NzNjNGU4YTAxYzQ3YmJmOTQ1NjcyZWRhODk0Y2MyNzc0ODYxZWNiIHB5M2sKKzg0MDgxIGIwOWY5M2ZlMjlmYmY4MDU3MmJiM2Y0YmY5NjYxNThkMjk0YmY4ODcgcHkzaworODQwODIgYTkyN2E1OWNlZTA2YzU3YzhmOTM5NzVkMDhlMzRhZGFlNjg2YWE4NiBweTNrCis4NDA4MyAxODM5OGY5OWZjNTVmZDI3ZmRjMzYxNDMzZDI1MTRkMGI5NDczMjQ0IHB5M2sKKzg0MDg0IDEzNDI3NmVlZDI4MDg4YTQyNzMzZTM3MWMxMWZhYjBkYzBiYmIyYzEgcHkzaworODQwODUgZTllMGEwMGNjZmIzNTFhYTRiN2MwNDFmNTE3MjM1YzYzNmI0ZTBkZSBweTNrCis4NDA4NiA4NWFlNDQyZmY4YTVkMzUzNTg3MmUwNWY0YWU2ZmI4NzMzYjg0OGEyIHB5M2sKKzg0MDg3IDhjYzhjZTdjMzkwOTQxMWExYmQ2NmY5ZTIwNzM0ZDM4ODM2MjI3NWYgcmVsZWFzZTI3LW1haW50Cis4NDA4OCBmMDk4ZTFjOGJjNTk3NjY4ZTQ1YjcyMGNjZDRmMmNlOGY1MmIyOTJjIHB5M2sKKzg0MDg5IDkyZjc4NzcwODhhZmU0Njk3OWNlOWViMGVjMjE5NjFlYjgwYzQxNTUgcHkzaworODQwOTAgYmYxOGRkNzBjMTgwMzA0NjI2NTgyY2VhMjE4M2JmYWI4YWMxNjBkZiByZWxlYXNlMzEtbWFpbnQKKzg0MDkxIGI0ZDg4ZjllZjNmOTkyMzRkMTUzMmM0NjY1MTExZDc2ZGQ2ZTFjMDMgcmVsZWFzZTI3LW1haW50Cis4NDA5MiA5MWQ0YzdiMWJjMjVmODkyOWYxMmZlZjc5MDViYjVlYjQzNTVkMTRjIHB5M2sKKzg0MDkzIDRiMjNlMjY5YzRkOTlhNjg0YzYwOTZhNjg3ZjZhNTI2MDMzZjc4MzkgcmVsZWFzZTI2LW1haW50Cis4NDA5NCA1ZDliZGY1YWEwN2JmZDQ4ZTc4YjM3YjkyZGE0ZjRkZDUzNDVlNDU1IHB5M2sKKzg0MDk1IGZjODliOGRlZmYxZTFjY2Q1ZGJkOGEyOTNjM2VmOGQxOTA3ODY2MzQgcHkzaworODQwOTYgYWFlM2UwYzUxMGZmZTUwNjgxZWRhN2IxYzU0OTY0YTc4NDAwZmJmMyBweTNrCis4NDA5NyBkNTJmOWM4ZmU1ZDYwOWI0NTY3NGVlZmQyYjBiNjkxMGM2ZDViNWFjIHB5M2sKKzg0MDk4IDcxNWM0NGI2MGVmMzczNmU0M2FmNDY2OWU1M2Q3OGRkMmE5OTliNDYgcHkzaworODQwOTkgYTIzM2JlNjhkMzJlYThjOWYzMDIwNDdmY2Y3N2RjYjVjZmUwZDkzOSBweTNrCis4NDEwMCBlNDQzMmVmYzg4YjlmOGEyNDE2NTJiODU0NjJmNjJmMGEyNjU1M2IyIHJlbGVhc2UyNy1tYWludAorODQxMDEgOTA3ZjczZTIyN2E2YjllMWZlODA0MGZjZjBjNjI4YmY2MTg2OGIxMSByZWxlYXNlMjYtbWFpbnQKKzg0MTAyIDg5OTRkOGQ2MTBkNDQ5OWU4MDUwYjMzMDc3NDc3MWY1MjM5YjM0NzMgcmVsZWFzZTI3LW1haW50Cis4NDEwMyA5ZmU3NGViMDI4YWIwMWY5YzMwMWJmMDI3NDcxZjI1N2RkOTU3YTlmIHJlbGVhc2UyNi1tYWludAorODQxMDQgZGVlMzBjNDY3MzllYmQxYzg5ZmE2NjFlNzVkYmUzM2RkYmI0MmM2NyByZWxlYXNlMzEtbWFpbnQKKzg0MTA1IGRjMzJhN2Q5ZGE4MDI5ZmM0NzkzMTlkODU4ZmE2NTVjZDQzMmY5ZmUgcHkzaworODQxMDYgZTNkZjM0NTQ0ZGI5MDg5ZjM3NmIxOTA2ZThjNGY4MjgzMWU3MjNhYyBweTNrCis4NDEwNyA0MDg1Y2M1NjBlOWVhNTMyODg3MmQyZjRhNDdlYjRlZTgyMWZkZDczIHJlbGVhc2UzMS1tYWludAorODQxMDggNzU2ZjhiMzk4MjMwYjNhOWRlNmNlZGNjOWVmOGQ1Yzc3YzY3NDIyNyByZWxlYXNlMjctbWFpbnQKKzg0MTA5IGJlMGFhMWQxMzg0Y2Y2MmE4NmY4NTU1MDkxOTVlOWRmMWJmOTJiNjkgcHkzaworODQxMTAgMWQ4M2Q5MmVmZmU4MTEwNGFhODBiOGU2Yzk5MDZjNjQwNDM5YjFkYyByZWxlYXNlMjctbWFpbnQKKzg0MTExIGIwODllZDU3NmIxMzI1YjVjZmNiZmY0NTM0MzU5NjNmMGQ1YTdlNTAgcHkzaworODQxMTIgNzdiMDUyYzY0ZWJiYzJlMjc4MWEzNTU2MDA0MWRlNGZlNzRlYmZjMSBweTNrCis4NDExMyA0NzI1MDgyYzI4MmYwM2ZlNWFmZTlkMWE5OGQ0NWIwOWNhOWQ4YmUwIHB5M2sKKzg0MTE0IDE3ZDViMDMwZTg3Nzk5MDJkODJmNzZlZDMyYTY5ZDhkNWU3MTEzMWEgcmVsZWFzZTI2LW1haW50Cis4NDExNSA0ZGYwZDJhMTNhYTE0ZjEzZmJmYTJhOGRkYWU5Y2MxMDI0MWU3ZjA5IHJlbGVhc2UzMS1tYWludAorODQxMTYgNDFjNjA4N2YyZTZkYWU4ZjE0MjkzZjhlYWVlMjNjNTA1ZWUxZmY4ZiByZWxlYXNlMjYtbWFpbnQKKzg0MTE3IDgwNTllNmI2MjQ2MzYwOGY3M2ZlMDg3YjViYzVhYmZkZmQwZjRmMGYgcmVsZWFzZTI2LW1haW50Cis4NDExOCBlMTg5ZGM4ZmQ2NjE1NGVmNDZkOWNkMjI1ODRkNTY2NjliNTQ0Y2EzIHJlbGVhc2UyNi1tYWludAorODQxMTkgOTUyZDY1MGEwYWZkNzY5Y2Q2MmZlNDlkYzBlYWViZGEyN2JkNjE3YiByZWxlYXNlMjYtbWFpbnQKKzg0MTIwIGI2NjJhMzlmMDgyM2VhOTRmMzVlOTUzOGU0NWNjMDI3MGRhZThjNGUgcHkzaworODQxMjEgMGM4YmZkMjg1ZWY5NDI4MTcwZjI3ZDlkMjE4YTlkZDU2ODhiYWM5ZCBweTNrCis4NDEyMiAwNWM0YmFhODc1NDljM2Q1ZTJlZDBmOTQ0ZjE2NzY1YWM5MWQ4MWVkIHB5M2sKKzg0MTIzIDA0OThkNjhkYWQ1ZDM3OTFjMmRkNDZhMDU5N2UyY2U2ZGFjNDljMzcgcHkzaworODQxMjQgYjkxMDU5ZTU5ZDBkYzIyNTNlOGI5N2FkOGU1ZjIzZWY2NDA4ZDA2MyBweTNrCis4NDEyNSA3NDViZDYzOWVkNGRjZDZhY2M4YmFhMmRkZjAzMjM2NWYyNGFlNGFkIHB5M2sKKzg0MTI2IDBhZGE3Y2UyNGRlMmNkNDkxN2E4YjhjNmY2YzNhN2I4MDNkNDQ2YTkgcHkzaworODQxMjcgOTdmNDdlYWMwOWRiNGFkZTg3YWFlYmNiMTQzZDkyMThkNDIxMTI2YSByZWxlYXNlMjctbWFpbnQKKzg0MTI4IDYwYTQ3NzdhNzNhMDYyZmY1NzdiYThkYjYyZDQ4MWVlODA4ZDZjNDYgcmVsZWFzZTMxLW1haW50Cis4NDEyOSAyNzY3OGZmMGNkYTE0NGQxYTAzOTBkYWEzMjMwOGY4ZjAwZmZmZWU0IHB5M2sKKzg0MTMwIDZjYjc3NmU1NzI5NmJhM2YxYzc1NGU1NzVmODVhM2I4ZDkwZDViNzcgcHkzaworODQxMzEgNDU0OGY0YWIxOWNlZTNjNDNmZmE5ZGVjMDExYjA3MDljZWNkZTUwZCBweTNrCis4NDEzMiA3N2JmNTgyOTZjODcwNTlmNmM0NjQ5ZTYyMjgwMzNmNGY5YTU1ZDE1IHB5M2sKKzg0MTMzIGIyYTlhNTljMmQ1NzJiZmEyNDkwODhjNzQ1NjcyMTFlNGNjYmE0OWQgcHkzaworODQxMzQgYTA0OWUyMjBmMDMwOTYwNmQ4NDcwNDA2YjYwNzM0YzYzOWIwZTY5MSBweTNrCis4NDEzNSA2Y2M2NTU0MTZkNjM5YmZlMjgyNjMzYjUwZGRmZWQ4MDAxZDIwNzBlIHJlbGVhc2UyNy1tYWludAorODQxMzYgMjRlMDY4MzNiNWIzYjcyN2RiYjAwMDZjYjUzYmMzZDBlZGQzNWYzMSByZWxlYXNlMzEtbWFpbnQKKzg0MTM3IDlkZDc2MzQyM2E1NjZkZGM2OGEyZDA4ZWQ4MGM1ZjkyNmU5NWQwOGIgcHkzaworODQxMzggNWZjZTAxYTUxYWE1ZTUxNTQ1OWMxZmJjYzMyZmI1MWUzNzViMzU5ZiBweTNrCis4NDEzOSA0YmM5ZGZkOTVjODA3NTZiNjdhMWY1YWYxYTg5OThhYTIzOGJhM2Y1IHB5M2sKKzg0MTQwIDIxMmExNmY5MDZhNjcyNWM4MTg5YjZiNmE5ODVlOWFkZGFhM2QwZGEgcHkzaworODQxNDEgNmZkOTZjMDFiNDM3MTI2ZDkwNjYzMDliOWM0NDU3MWEzNTc0ZjUxZiBweTNrCis4NDE0MiA5OTBhNzY2ZmY5ODMzNTYwZDcwOGYyM2ZmZDY0ZDkwMTZmMmFiMTNkIHB5M2sKKzg0MTQzIGNhMmE4NTllOWJmNjM1MTBjMGVjM2U4YzdhOTA3NjFmODFkZmI1YjMgcHkzaworODQxNDQgY2FlZWJmNzQ5N2MzOGQ1N2Q3MzUxODk0NzE0NzNkOTdhMzJmY2U4NyBweTNrCis4NDE0NSAyN2UxNzYxNjkzM2VmODlmMmMxMThjN2VhODNiZmZlMzdlNTZhYzk5IHB5M2sKKzg0MTQ2IGVlM2RjZGZlMmY4NzM2NWY1YjAzMzk2YTVjYWUzMzVjNmZjODJkMjQgcHkzaworODQxNDcgNzkyNWJiZGZjODA1ZjAxMzc3MzE1NTE5ODFhMjIxZTMzOTA1MmY2OCBweTNrCis4NDE0OCA2ZWQzODEzNTVkMGQ0NDhhMDMxZDQ2YjJlZjUxOTFlZDEwM2RhMTBjIHJlbGVhc2UyNy1tYWludAorODQxNDkgMzVlNjdhZjgwNmU1MDNkNDA2ZDE4NmRkZjI2MWQ3YzM3ZGM3YWY0MSBweTNrCis4NDE1MCBiNjI0Yzc0MTdhZDRlNmU5MWJiYzM5YjcwMzFjM2VlMDlhMmFmNDAzIHB5M2sKKzg0MTUxIDJhNGNlZWJkZmNmYjI1OGVkNmVkYWZiNWFkZDM2Mzc4ZDkwNzAwZDAgcmVsZWFzZTMxLW1haW50Cis4NDE1MiBmZWJhZWExYTY4NzFlZmZkODM3OTQxODBmZTMyNjc5NzMzZWFhOTdkIHJlbGVhc2UyNi1tYWludAorODQxNTMgMzllMWQzODI2ZjRlYTBlZjM5MWNjYjE5ZDNmZDRmODRlOTRiOTAxNCBweTNrCis4NDE1NCBmM2Q1ODM3ZTMxYjc4NmMzYzRiMzY5YTllMzkwMWJhOTViODkxZDFjIHB5M2sKKzg0MTU1IDNmYTBhOTU1MzQwMjRkODk2MDk4MGFkMDc5OThmY2E1NjY4M2JjYmUgcHkzaworODQxNTYgZmRhOWQxZmU3ZjA2Yjc2ZDJiNDU2NTRmMDQ0YWYzOTU0OGExYmUwNCBweTNrCis4NDE1NyA1MWE3Nzg0NjI5YmJhZDg0ZGE4YzJlN2IzMzlkNDJkYmU0YzYwOTExIHB5M2sKKzg0MTU4IDM1YzUzZTdlMjI4MGRjN2E5ODA2YzYwYjg3NWNiZDQ4ZWIyNDIxOGIgcmVsZWFzZTMxLW1haW50Cis4NDE1OSA5YTU0OTQwYTMzMmVlNjkxNzdlZWY3OTU5ZjgyNTJjMTI4MTI4NDBjIHB5M2sKKzg0MTYwIGY3ODMyNzg3OTBjYTYzOTM5MjMzYTEyYjU0NmRhMGNjZjA1ODI3YTggcmVsZWFzZTMxLW1haW50Cis4NDE2MSBhMDE5OTJlMjE5YzA5MDMzOTc2YjY4YmI4M2I0OGZjYTJhNzFmYTJkIHJlbGVhc2UzMS1tYWludAorODQxNjIgMmIzMjMxMmRjYWIxNTA2YWU5ZWJmNzg1Y2E2NWFlYjRkMmVjY2VkNSBweTNrCis4NDE2MyA2ODZiMThiZmZiODY0ZmFlODNiM2FkZTg3MzQ2NTEyMjcxMzU4YTM3IHB5M2sKKzg0MTY0IGZjNzk0YWRkNTU5ZDVhYWI3NDRjZDdkNjQ0ZDI0NDM2MzFhMDBlNTAgcHkzaworODQxNjUgNDk0MzA3OGM5MGM5YWQ0ODVmMjdkZTBlZTZlZDUxYTFhMjlhZGM1MyBweTNrCis4NDE2NiA3MTQwMGNlMGM3MjFkMTU3MDhlMDQ1ZjZlMTY3YWQwNjdhMzhjMmM4IHB5M2sKKzg0MTY3IGJkZDc2YWQzYmM3NmIwMTE2MDBhYjYzYWU4N2I2YzdmOTUxMjhhNjIgcHkzaworODQxNjggZWU3NjVhNjdjMGIxMWIxOTU0MmM1NjM1ZDcxMzFkOTE5OWEyYzc5YyBweTNrCis4NDE3MCAwZWQ3NmM3Yjk4NDc0YmQ2NDVlYzNiMTQ4OWM2MzlkOGE3MGE3ZTBhIHB5M2sKKzg0MTcxIGE4ZDhkZTIzY2I3Nzg1YzQwNzJhZDkxY2U1MTA2MmIwYzg3NGJkNmYgcHkzaworODQxNzIgYzcwOTM1MTQ1OGE2NmFmNjk5N2VkODU0MDJhZjQ1MTI3ZTYwY2QwYyBweTNrCis4NDE3MyBjMTMwZjQzMmYyNGEwMzliZjZiZWZmZGU4MTMwY2NkYjMwMzk3MDExIHB5M2sKKzg0MTc0IGNhNTU3OTQ4YTVjZjY3YjUyMDY0NDU3NjMyZDhkMzliNzE0MDJkY2IgcmVsZWFzZTI3LW1haW50Cis4NDE3NSA2Y2RhNWZkMGEzY2YyM2ZjMzk1ZmFkYTBhY2QwM2ZjOTNjNmVhOWIxIHJlbGVhc2UzMS1tYWludAorODQxNzYgYjg3MTI0NGQ3Zjc5Nzg5MGY3MGQ1NGMwZmJiMmI0NDUzMWE3ODNhZCBweTNrCis4NDE3NyA4Zjk3YzY0YjIzMzM2MjE2MGM0YjczNzU4NDhjM2NlZWY1YmFjMTUwIHB5M2sKKzg0MTc4IDc0OWMyMmZmYTM2ZWM3NTc3YmQ4MTM1Yzg0MTMzYThhM2FkYjU4NWIgcmVsZWFzZTI3LW1haW50Cis4NDE3OSBjMzcwODY2ZjMwYTc1YWE5ZmFjNjI2MzcyOWY4NDQ5ZmM0NzVkNDc2IHB5M2sKKzg0MTgwIGRmOTYxMDY0ZjgxMWNmY2QxOWQ5NDNjNzM0MDRlNzQ4MTdmYWJlZTYgcHkzaworODQxODEgMjNhNTk4YzAxOTExZjIwNDIwNWE0ZWQ3MTQwNmMyZTI3NWViMDUxNyBweTNrCis4NDE4MiA2ODdjYzg1NGNiNGJmZGY5YjQ5OGEzMDUzZGQ1ZTI1OTVlYjdhZjY4IHB5M2sKKzg0MTgzIGU2N2UwN2NiNTE3MWNkODk1Mjk4MjhhYjU3M2ViNTk4MzQ0YmQxYTkgcHkzaworODQxODQgMDVhM2RmZGEwNGZmYzZhMzI1Zjg5NjMxMzhmZTVhMTgxYzllN2U4YiBweTNrCis4NDE4NSA3OTBkNDg3ODg4NzRjNTE4MTIyNDhhOTVhMWVlMWU3NTdkNzdiMjVmIHB5M2sKKzg0MTg2IDgwZjk4YWYxN2RlZjg4M2RhNDM1Yzc3ZWJlODQ0MDc5M2YzMTIyNDMgcHkzaworODQxODcgMjI4ZTZmMDAxYWUxM2IxNDExZDkxYmYxNWM5MjRlYzRkN2U2OWU3MSBweTNrCis4NDE4OCA5YWRlYTk0NTU3NTM5ZTRjYzVjNmJkZmI2NjM3YWVhNWEyZTA0YWUxIHB5M2sKKzg0MTg5IGVhMGRlY2QyYWNmYjYyZDdiMDBkOTE3NTM3ZDQyNzZiNjc2MGFkMGUgcHkzaworODQxOTAgNGY4MzFkNDUxMjVmMGU1OTFiNjdjMmUyZjllZjA4NzkyYWU5MTY4YSByZWxlYXNlMzEtbWFpbnQKKzg0MTkxIDY1ZmUwNTliOTdiZjMzODkyOGIyZWY5OGZhZWE4MDA0OTIzNjdlNjcgcHkzaworODQxOTIgYWMxMmQ5NDhhODk1NzY0MjJlODE2ZWRhZmFmYzFhNWNmOWFjYjQxYSByZWxlYXNlMjctbWFpbnQKKzg0MTkzIGE5ZTc4ZjZmNjk0ZTY1YTk4YTYyNzljNTc5YTc0MzBmMzA3NDNhMmMgcHkzaworODQxOTQgMmNiMjY2M2UzMzY4OTBmNThlNjczMjBkZjg1YjRhN2FkMWRhNTAzZSBweTNrCis4NDE5NSBhYjg0YTBjN2Q2M2M2MGY2Y2Q1NDc0ZWYxZWE0Y2VhNGI4OTFmOTE4IHB5M2sKKzg0MTk2IGY2NzIzZDU1ZGU0YjZjZTcxMTE4Zjk0MjUyZTY5MDgwMWM1MWZhYzAgcmVsZWFzZTMxLW1haW50Cis4NDE5NyBkMGU5ZmViZmEwMGFjNzFhZjA5NjhmOWYyNDA4YjEwYWQyZDljZjk4IHJlbGVhc2UzMS1tYWludAorODQxOTggODU3ODA2MTQ3ZWU3MzQxZDZiNjM0ZGQ3ZGEwOWQzNzYwZTI0ZmE3ZSByZWxlYXNlMjctbWFpbnQKKzg0MTk5IGYyNDMwNTg1OTYzYzU4NDVlZTIxMWYzNGJhYjg3ZjZkMDhiMDAxODggcHkzaworODQyMDAgZjg3MTJhMDdiMGIxMTMyMTZjMThmYmQzOGY5YTI5MDQ1YzAzNjczZiBweTNrCis4NDIwMSAwODJlYWZhMDg4MDI3MjFmYTczNzI1YjhkZjc1MWNmMTg5Njg1N2FkIHB5M2sKKzg0MjAyIGY2NWJiZmJiODIzZmZjMWFmNDBlZDFmZTMwYTc3MTYwNDRkNjEzZjEgcHkzaworODQyMDMgMzhjZTk0N2MyOGZiNDAxNjEzYjE4ZDc0Mjk0ODQ1NDZlY2I3ZjE2OSBweTNrCis4NDIwNCA5MTU1ZGI2NTljMjBmZmYxZjcxZGI3N2I1NGIwN2Y4ODMxOTQxNWQwIHB5M2sKKzg0MjA1IGE0ZWM3YTZhNjg5NWU0ZTQ2Yjg4NGM3NWQ4NTg3NTAwMWQ3ODIwODQgcHkzaworODQyMDYgNWQzY2ExYzAxOGFlNDM0MTBlMDNkMTIwYTg1Y2JmNWJkZTEwMzZmYyBweTNrCis4NDIwNyAwNTJmNDJkMDIyMmZkOWY1OTAzNjdjZGQ2ZGQ3OTU4MmU4YmIzYTY2IHJlbGVhc2UyNy1tYWludAorODQyMDggNjYxNDNjMjM2ODRkYTNiZjU0ZjRjODljZWZkZGU4ZmYwZGQzYjEwOCBweTNrCis4NDIwOSA1ZmQyNmY0NTI2MDAwYWYzZWI5NTRiM2NjYjQwYWEzOWU2NDY2OGU3IHB5M2sKKzg0MjEwIGFmNGE5MWM5NDA3MTdiOTE2ZTQ2OTQ2OWNlMGQ3YWExNTc1NDRkMDkgcHkzaworODQyMTEgODhlODQzY2UxMTYwZTgyMGEzNGYzZTMwOWM2OWZmZDY0OWJiNjI4YiByZWxlYXNlMzEtbWFpbnQKKzg0MjEyIGJhNmZkZThhM2E5OTdkNTZkYWUwMmI3NzViODBlMDRiZTA5ODI4YjEgcmVsZWFzZTI3LW1haW50Cis4NDIxMiA4YzZjNzJiNmYxZWQwYTYxMDU1OWIwZjhjODNjNmIzYmMzNzc1NmZmIHB5M2sKKzg0MjEzIDU0YzljODZhZDEwNGIyN2FhNDY2NGJjYTk4ZGE1NTkyMmE5ZDVlNTkgcmVsZWFzZTMxLW1haW50Cis4NDIxNCBjMThlZWI5NjkxMDJmMjRhZDk2YWRlMzE2YjE0YmJmZGM2M2EzNDY0IHB5M2sKKzg0MjE1IDM4Y2VlYWUwZDFmMDc5NmYwMjE2MGYwMDM2ZjAzZDc1NWNkNjA3OGUgcmVsZWFzZTMxLW1haW50Cis4NDIxNyA1NDlhNDBjYTIwNzRkNzIzODg1NGQzMjkwMjk2YzlhMDMwNTlhYTkzIHJlbGVhc2UyNy1tYWludAorODQyMTggMzUyOGJhN2I0MzA1Y2E3NWJmN2EwNmMxY2QzMWExNmE1ZjE0YzM0OSBweTNrCis4NDIxOSBmMmM3ZTRiMWQ4MDQ1YzEyMzUxOGI3ZDZhZmRkMzA2MTQzMTQ2NWJkIHJlbGVhc2UzMS1tYWludAorODQyMjAgMzlkYWMwYTg4OTZhMjc4NmJhMTVjZTQ0NGNiMjc0ODUwYjM3NDk4YiByZWxlYXNlMzEtbWFpbnQKKzg0MjIxIDMwYTBkY2Y1YTNkOGE1ODFiNWVlMTI0ODQ3MjUwNThmOTY1ODgzZmYgcHkzaworODQyMjIgNWEyOTlkNzg1OTg3ODM2MTY3ZTIwNDZlZTgyOWEyMDEwNGIxYThkNSBweTNrCis4NDIyMyA4N2Q0NjhhZTNjM2MyY2Y3MTRlN2I4YTE4NWE0ZTU1YWU3NTY1ZGJhIHB5M2sKKzg0MjI0IGQ0ZTIwZjlmMTI3YTlmNGZkZTY5ZGRiNDVjNmE3NjQ3OWI5OGZkMTkgcHkzaworODQyMjUgYWI2M2M0NTc4YjFiZDE0NDE0YmVmYzgxMTA0YzM5NzRjNmRmNDdlNCBweTNrCis4NDIyNiA2NWNlOTkyMzY4OTc4NjU4NDY2MzExYzFmYWQ0NmEyMWE5ZmJiMzA0IHB5M2sKKzg0MjI3IGYzZGI1MDRjZGZiMWYzZjU1Mzg3OTFhNTRlYjc4MDQzYzhjYTE3ZDkgcHkzaworODQyMjggODM5N2YyZTAwN2ViYzI0ZTRlYWE0ZDcxYmQ2NGYyMzU3ZTNmM2Y4NiBweTNrCis4NDIyOSBmYTdkMWQ1ZDJhZmI2MDE1YTk3MzBhZmZmMzlmYjdhZGJmYTdmMzMwIHB5M2sKKzg0MjMwIDdkMmJkODk1NWVkYjgzYjA5NDg5MjhlOGI0ZDNmNjUzNTNjYWY5OWMgcmVsZWFzZTI3LW1haW50Cis4NDIzMSAwYzNkNzYzZjM4ZjE0MmE3ODVlYWJlNzcwOGJkODg1OWEzYmYwNzQ1IHB5M2sKKzg0MjMyIDlkNTkxNmFiNjBlMGYzMjQxMTE3YzllYjFjMTIwOTJmNGQzNDE5MzIgcmVsZWFzZTI3LW1haW50Cis4NDIzMyA5OTY2MDRjZGU0MWY1ZmU4MGNkNjg0ZWM5MWNmZDM3ODFlOTkwOTBjIHJlbGVhc2UyNy1tYWludAorODQyMzQgYWJjZjk1NzdkNWRiM2ZjNTU0ZDA0OTczYzUyZGUwZTIxZjkzOTk0NyBweTNrCis4NDIzNSAxZWZlODIzZTFmMTg4NWU3ZDBkMTdiYmM0MmE0Y2Y4YWVkZWI5YTMwIHJlbGVhc2UyNy1tYWludAorODQyMzYgYzRmNWQ5OGVlODdiMDNiMWU4ZjU3MjhhNjkwNGJlYmFmODQ5OWJmYSBweTNrCis4NDIzNyA0OTdhN2UyODRlNGRjOGUwMDM0MWRhMGNlNmY2MGU1NmQwOGJlNWM2IHB5M2sKKzg0MjM4IDJmM2FjODM0YjUzNjM0ZWViYTU4MDhmNTBhNTQzZDA5MGM2MGRiNWYgcHkzaworODQyMzkgYjE4YzgwYzY4NzU0MDBiZmE5YWM1MzE0YjE0OTEyNWVkZmJjNTVmYyBweTNrCis4NDI0MCBkZmQwMjI5NzQ4ZWZkNGMxYTY1YmFkOTFiNzlhZTZlZGJhNDA4ZGFjIHJlbGVhc2UyNy1tYWludAorODQyNDEgOTdhNWZiMWM5NmNlYjNlMTg1ZTQ4NDI0N2I5NTAxZTQ5MTlkNzdkZSByZWxlYXNlMzEtbWFpbnQKKzg0MjQyIDhlMTg0YThiYjAwZTY0OTc0MWEyNDYzYjg5MDdlYzY0NGIzZGZjZjkgcHkzaworODQyNDMgNDYxYTIwYWI0MzNmZWU0YjdiN2MwYzYyNWYxODllY2FmNTBkNmU0OCBweTNrCis4NDI0NCAzMDJmZTI1Y2Q2YjExODhmMmJiZDVmMDQ4ZDVkYjNmODdlMDE3OTU3IHB5M2sKKzg0MjQ1IDEwZGY5Mzg3MmNhNzMwNDIwMjc1YWI1Yjc4Mzg4NTk3MWNiMWRlY2IgcmVsZWFzZTI3LW1haW50Cis4NDI0NiBmNWRlZTMwY2NkMzlmZDUwZDg0OTRkOTA0NTY4YTViNDkzMDhkOWQwIHJlbGVhc2UzMS1tYWludAorODQyNDcgZjlhYjljOTJkYjhkYjI0ZGU2YzVlNWU5NDM1YTEwNDFjZjdlMmY0NiBweTNrCis4NDI0OCBhYWNiMTUyOTFkNTQ2MTBjZTMxYjc1ZjA4NGVmMjk4YjAyZTJjOTc1IHB5M2sKKzg0MjQ5IGEzNGJlMDNmNzA5YTM0OWI2MTFmMjNiOWQ2ZGNkNWExYTAzNjc2NGMgcHkzaworODQyNTIgMDFiMGE2Y2IxM2Q0M2M5ZWEzNWY1MmUwYzRlNTQ5MzUxMTNjODUyYyBweTNrCis4NDI1MyA2ZTBmZTFiODNmZjA5NTZkNWFjNTY1NDA5NzRhYmUzZDg0YThlOWFlIHJlbGVhc2UzMS1tYWludAorODQyNTQgOWM0ZTg1Nzg1ZDRlNGM1ZTk0MDY4Y2QyZTY4ODQyZGNlZjhmMzRlOCByZWxlYXNlMjctbWFpbnQKKzg0MjU1IDAxMzBlNTc0ZjViZTVhMzg3MjdkMzRlZDBjMGI4ZTUzM2YwMTM5MTQgcmVsZWFzZTI3LW1haW50Cis4NDI1NiA3ZmYzZmE0Mjk3MjE4M2E1YmEyMmQ0NWJhOTk5MDRkNGFlYzk1OGVkIHB5M2sKKzg0MjU3IGE1YTU4NzIwNTBlMzAzODRkZjg2Nzk5NzgzN2ExNjM4NWY3ZGE1MzUgcHkzaworODQyNTggYjAxN2E0ZWY3Njk0ZmFlYTkzY2Q0YzBiMDUyOGZlZTBjNzEyNTdiYyBweTNrCis4NDI1OSA0YWNmYTNmZTZhNWViNTJjMTUyYmVhZWRjYzZkN2Q2MmYzZTljZDE1IHJlbGVhc2UyNy1tYWludAorODQyNTkgZTQ5YzUzZjc1MzVjMDhkNTE3NmE4MTgzZjgwOWFlNjc4YzRjYThlYyBweTNrCis4NDI2MCBlODE5MDZlOTJmOTlhZWRlNjY0MGE2NTBmYzc0NTZkZjg3MWVjNzI5IHJlbGVhc2UyNy1tYWludAorODQyNjAgNmFiNjU2NzY1YmNhMzg3Zjc1ZDI2YWI3NGY4ZmFmYmJlOTBiMWY0YSBweTNrCis4NDI2MSAzNTMwNGMyZmU5ZTBiYjg4MTMxYTA1YmEzMGE2OGQwODM5OTUyYzQ1IHB5M2sKKzg0MjYyIGU5MTg0OWNkMDY2ODlkZGUzMTc1ZjEyYmQwMmY5YjQzNmM1NDg0ZjkgcHkzaworODQyNjMgZjJlOTFlMDhjMWM1N2YwYWUwM2FmZjg1ZGI4MzQ3ZjBjMjBkOGQzMSBweTNrCis4NDI2NCAzYWNkODZmOGM1NTI0NzNhYjliNjI2YTk5NDE0Y2I0YjIwYjEyYjAzIHB5M2sKKzg0MjY1IDFjODgzNGYzY2RiOTYzODc3YzcyNDQxYWM5Mjc5NDExODRjNzVmYjMgcHkzaworODQyNjYgNTk0OGU0OGZiZDg4MGNkMTRlZTRkOTg0MjBhY2U5M2Q3ZGMyOWRkZiByZWxlYXNlMjctbWFpbnQKKzg0MjY3IDhmNWZhZjU2OTZlN2FmMmUxMTgxMzdlMTViNGI2NTljYmM5ODgzODQgcHkzaworODQyNjggMDJlMmQ5ZWFiNzMwMTk5YzViYWE5NDYxOTAyYjMwMjZkYzY2ZjVhMCBweTNrCis4NDI2OSA3MTZkM2QxMDJjMGFhMTI2ZDU5MWE1OGQyOTRlMWMwZWU5MjNhYTUxIHJlbGVhc2UzMS1tYWludAorODQyNzAgYTQxMmNlZWVmMGYxZWViYWM3ZmU3ZWVhN2Q4ZDVjNWRhOGRiODVjMiBweTNrCis4NDI3MSBjZjM5OWRlMTJiNTQyN2Q3YWJmYmQ5NDRhMWNjYjNjZDVlNWZkZDQ4IHB5M2sKKzg0Mjc3IDdlMWUzNDNiNzA4YjE4MmY3ODc1YzQ3MDM3NTNmY2Q0YjM2YzI1ODMgcHkzaworODQyNzggYWEyNWI4Njc3Y2MzZjc5ZDRiNTM1NGY4YmNhY2QxY2ExMGZmZDg4NyBweTNrCis4NDI3OSA1MWEyNGE5MTU0MDg1OTNiODlmZDEwY2ZhMzI5YTYyYjM1NGNjYjY3IHB5M2sKKzg0MjgwIGI1MzVjZGU5MzI3MzgzZjgxZGYwMmVlYjBkMDhiZjcxNmJkYzVhOGEgcmVsZWFzZTI3LW1haW50Cis4NDI4MSAxYTA4NTk2MjM4ODJmNzFkZWVmMTZmNThmZGYwMDQ2MjE3NjhlMDgxIHB5M2sKKzg0MjgyIDQyYzcwZjE3YzJmZWRlNjExNjEwODU2OGE3NWIwZWVjMDhiM2M3M2EgcmVsZWFzZTI3LW1haW50Cis4NDI4MiA5ZDRkYzU4NTVjNTE1YjgwNDUyOTNmMWI0MGE2ZGRjOWNiMTE2MzAxIHB5M2sKKzg0MjgzIGJhNTM2YWM3YWI0ZTRkYjAyODk5NmViZTliY2M1MTIxNTlkMmRiZGEgcHkzaworODQyODQgZTc5YmE1NTU5MjJhMTY4N2JiNzE5ZGJmN2RiOTI4NzhjYzgxMmQyOSBweTNrCis4NDI4NSA3NmU5Y2Y4NDU2NzYwMmI5MGE3YzRhNzcwNzY1OGZlYjI0NDRlYWViIHJlbGVhc2UzMS1tYWludAorODQyODYgYjk1ZWMxNzFmNTAzNjQzYzdjOTZkMmNiYTIxNGVjMGEwYmNhOGRkNiByZWxlYXNlMjctbWFpbnQKKzg0Mjg3IGVmYWE0N2U5MmE4ZTg3ZTAzMzMzMjg2OTU4MmVlNDlmMGFmMmUzMmIgcHkzaworODQyODggNzg5NWM0NTUzYmY1NDQ5MDY3YzUwZmVmZDg5MDRjNzc4MmNlMTE3YiBweTNrCis4NDI4OSA5MGJmMjI0MzU1MmQzMzQzYTY1ODM2ZjVjNjU3YzQ5MmY3Mjc1MmJkIHB5M2sKKzg0MjkwIGUyYmNlMWM1OTZiZWIzYTllY2U3YWEzZjhhN2YxYjdiNDcwMGNiNzQgcmVsZWFzZTMxLW1haW50Cis4NDI5MSBlNzE2YWEyMDk0ZmE4ZDk2Y2IzNzVkMDY0MzYxYTY5ZTUzYmM0ZWQ2IHJlbGVhc2UyNy1tYWludAorODQyOTIgOWY4NzcxZTA5MDUyNzdmOGIzYzI3OTkxMTNhMDYyZmRhNDE2NDk5NSByZWxlYXNlMjYtbWFpbnQKKzg0MjkzIDZkYjc4MzViMGE5NWFmYzFkNGYwYWU5ZjE3Mzk0OGI4NTRlN2JhMGUgcmVsZWFzZTI2LW1haW50Cis4NDI5NCAyZGU5ZDQ0NTcwODIxMjNkOTAwOWE3ZjI1ZDBkOTRjY2Y2NWI3MjUzIHB5M2sKKzg0Mjk1IGMxYTgzZjJjNzA4NzU3ZGRkMmNmMmIyMWFiMDlhNTEwNWFkMGZlYzkgcHkzaworODQyOTYgZDRhMWY5MTQyZjdhOWQ0NzdlYTc4NDJmZWQwYWM2M2Y4MjFmNGE4MiByZWxlYXNlMjctbWFpbnQKKzg0Mjk4IGRiMjkzNjBjYWQwZmFjM2E2NDk5M2I5ODg2ZjE0ZGY3YTE3YTJiYzIgcmVsZWFzZTI2LW1haW50Cis4NDI5OSA0YjEyOTZiMjYyY2E0YmVhZmM1YWM1N2NlYzgyNDk3N2M2NDQ4ODU2IHB5M2sKKzg0MzAwIGY5MWYyOWVmNGVlN2I1ZjVlY2ZiYzkwNWUyN2Q5YWZhOWEwMDk5N2QgcmVsZWFzZTI3LW1haW50Cis4NDMwMSBjMWM0ZjhmODUwNzBkYTRkN2I2OWFlMzZlOWUwMTIxYzkwNWUxNWZlIHB5M2sKKzg0MzAyIDhmZTM2ZTJiOGVkMTNjMjIyMmZkMWQ1YjdkN2U5ZGEwOWVhMTk4YTEgcmVsZWFzZTMxLW1haW50Cis4NDMwMyA4MGE0ODE0ZWNmNWQ2NTIxZDYxY2U2MDBiNmFhNWI2ZDY5OGRhMWMyIHB5M2sKKzg0MzA0IGJlNzZiMzdmZTdmZDg0MDlkM2QyZjI3ZjI4MmU5YjQxZWMzZDgxZmMgcHkzaworODQzMDUgNjE4MGY0NTY0NzE0ZGIxMzNlY2ZkMjUzN2EwZDZkZWYzZDhlNjExMiByZWxlYXNlMjctbWFpbnQKKzg0MzA2IGY2NWU5YzE1OGMwNDA2MjNhOTY3YmU1M2IwNGVjNjQyZjQ3NmRhZGUgcHkzaworODQzMDcgODY3Njk5YzliNjNmZjU4NDVlYzAyZjE3NDRlM2U3NmRmZDcxODUxMiBweTNrCis4NDMwOCAxNDg4Y2QxMDNkN2I4MjE0ZjdhMTEwMzAwNzQwZmVmNmZjMzVhZDVlIHB5M2sKKzg0MzA5IDFlMjNjM2IyZTIzMjU5YTkwYTkzYmY0YmNmNTU1NjBjNWQwY2JkZmMgcHkzaworODQzMTAgODdiZGY1M2ZmNGJiZmNhNDI5OTY1MzBhN2YwZTlhODViNTQzMzFjOCBweTNrCis4NDMxMSBmNmIzZTY0Yjc2MjA2NzgwMjg2YmIyNWYzNWI0ZTMwZDZlOTZmM2JmIHJlbGVhc2UyNy1tYWludAorODQzMTIgMDUzZmY2NWJlNTRjYjM2M2M1YTI4NDgxNTZmYTIzY2I3NDI3MDBiOSByZWxlYXNlMzEtbWFpbnQKKzg0MzEzIDJjY2QwNDNhYWQ1YzEwOTBhYzU5NGIzYzk2YTkyNzQxNDcxZTJkYzAgcHkzaworODQzMTQgODcwMzdkODM4MGJmNGEzOWVmMTM3ZjFmNDA4ODQwYjkwZDY5NjNhNiBweTNrCis4NDMxNSAzYWM5YTM3ZTQyOWJhNjI3OTFhZmEyNmJlZmYyYTQ5ZTYwMzM2ODM3IHB5M2sKKzg0MzE2IDk0YzBmOTc5MTdkZGM2OTI4MTc4ZmY3MmQwYzIxZWJhZjA3NWE4ZGUgcHkzaworODQzMTcgMDQ4MmIzMGNhNDY2MjkzZWU4MmNiYzM1NmMyMjVjODU5M2M3NjkwZCBweTNrCis4NDMxOSBhZWZiYTg5OWVhZWViNDI0N2ExYWYyZjJhYmQxMTM5YWRjNzQ1YjQyIHB5M2sKKzg0MzIwIDgzMzAzNDZiNWM1ZmE4YjZmZWI5NGRlYzg0OWZmYTcxMGQxODJhMmMgcHkzaworODQzMjEgZWJmYjk0ZjJjYmMzNTY0Yzg5MmM1ZGM4NmEzOGE4YjA5M2Q1NTI0OSByZWxlYXNlMjctbWFpbnQKKzg0MzIyIDE5MDM3NTQ0NTI0MTk4NmEzYTg0N2M4YTRkNzhlODE0ZWQ1NGEwYWQgcmVsZWFzZTMxLW1haW50Cis4NDMyMyA2NTUyMDU1NjI2OTUwMWUzOWZkYWRiODMwZjI3NGRjZGZlMjZjZThkIHB5M2sKKzg0MzI0IDc5MTVkMjY2ZWUyYjI1ZGNhNDY1ZjcwNDY1MmQzNGUxOTIxYzAxNTIgcmVsZWFzZTI3LW1haW50Cis4NDMyNSBlZDgzZDU0NjMxNWQyZTBhM2FiM2UwNjA1ZmEwNTM2MzZkODlhYzNlIHJlbGVhc2UzMS1tYWludAorODQzMjYgMzI1ZDAxNmMxOWY3MWY4NDc0MzkyZGNkNzA2YjY3ZjlhMjY4NTdhMCBweTNrCis4NDMyNyA5ZDRhZmQ4ZTg2MjExNTRjMWY4ZTY5NWI2MDJmOTRmNWM0MTAzYjdkIHB5M2sKKzg0MzI4IGRlYmMyODQyYjRiMWJmOTRjODQ2MDgxODIyMGU0MTA1MTliYjAyMzEgcGVwLTAzODQKKzg0MzI5IDAxMTJmMDY0Y2VkZmFiMmFmODg3NWE1ODlhMGM1Y2YxYjQ3NzkxOTIgcHkzaworODQzMzAgZDBiNDYwYTQ3ZjdmZmE1OGRmOThkNWM2MTA0MjFlMGU3NTJkMWZmMyBwZXAtMDM4NAorODQzMzEgMDkzYTA5NWFhNzRjNjQ4OTk5NjY0YjhmNjdmMDg5YmVkODg0YjQyZiBwZXAtMDM4NAorODQzMzIgMWFiYTczMzlmYTZjMmI4OGU1MzVlYTFmMWNhZjQ5NTBiODZjZjg4OCBweTNrCis4NDMzMyBjYjFmNWQwNTQ1MTBlNDdhNGNiMzA2OTM2ZjIxYTNiNTVhNjE1MmQ5IHB5M2sKKzg0MzM0IDM0ZGZlZTU5MGEzMDcxYjFlZmZkNDA0YzYxZWIyYzJhYjI1MzExYjAgcGVwLTAzODQKKzg0MzM1IGQ3MTYyMjA3MzE4ZjY3Y2IwOGFiNDhmOTJlODdjNzM5YWI0ODEyOGUgcGVwLTAzODQKKzg0MzM2IDMzYzRjY2FmYzRmNTM4YTEyY2Q2ZGFkMmM3M2I4YzI4YWY1OWU2OGUgcGVwLTAzODQKKzg0MzM3IDlmYWMxOTcwZDM4MDZmMjNiNTgyN2MzZGFjNTJiNTQ2Yzc2YmU3MGMgcHkzaworODQzMzggNzhlNDAzMTZlMDIzNDZhZmM2NzdmOWQzNWFhNDc4OTAxNWExMDM3MSBweTNrCis4NDMzOSBlYWFlMGRmNmQwNjMwZTE1MjQ2NTFiYzBjNmZlZDNmY2NkZjMyYjY4IHB5M2sKKzg0MzQxIDVkYzA2YTA1OTYzMGFkYzM2ZmNlYmFjODFkNTlkM2JmNTJmYzAxNTYgcHkzaworODQzNDQgMDI2NWQ1ZjdiZDA3MjE2NmEyYjgzYWI5NDY5M2M4ODY1YTNkMTc4OSBweTNrCis4NDM0NSA0Yzk3OGNkMzY0MGZjOWU3YzQ0Nzk0Yjk2NGJjNTg0ZjM4YWNmZGY1IHJlbGVhc2UzMS1tYWludAorODQzNDYgYjJlOGRjZDE1MDQwMzQxZmNmNzYxOGQyMWEwNjBlZjUxODQ3NGY2NiByZWxlYXNlMjctbWFpbnQKKzg0MzQ3IDhmNmU0MWMzYTIxOGE5OGYwMDI2ZjUxMzNjMWY5YWVmODcwZjVjZGUgcHkzaworODQzNDggNWM4OWY5NTcxYmE1NDkwZWM0NjUyMWZiNzI5ODBjMTFiMTIxZDNjMyByZWxlYXNlMzEtbWFpbnQKKzg0MzQ5IDNlMjBhYmQ3ZGVmNmUzNjAwOGJhZDVhNDBiYTc5MzBkOWNjOWE0ZWQgcmVsZWFzZTI3LW1haW50Cis4NDM1MCA0YmIzMTdlYjQ5NmEwODc1N2EyYmNmZGM4YjU1YjIzM2Y5ZGQzNTg2IHJlbGVhc2UyNy1tYWludAorODQzNTEgOWNiYTk5MDY4YzU0YWE5ZmU4ZWNjZWZiOGIxYjQ1NmM2YjQwZjViNiBweTNrCis4NDM1MiA5Mjk3OTc0NjA0ZmZkYjMxOWE5ZTZkOWYxMTg0YWUyNGVjNjFiYWY2IHB5M2sKKzg0MzUzIDkxNWRhOWYyZGExOTllOGI1NGE0ZDU0ZGEwZWZiZjgwODg4NWFlMWIgcHkzaworODQzNTUgODBkMmU3ZDFkN2Q1MzRmYTQ2NTkxMmNhYjRhYzQwMWY0MDliNjA2NyBweTNrCis4NDM1NiA5YzUxZjM4MzY1NjMyYTFiN2I3ODVhMjc4ZDUxNGIyODE2ZWEwZjBhIHB5M2sKKzg0MzU3IDcyNjcwNWQwMmFkZDIxZTZkMmMxYmM1NTA3YWYzZDM2YzE0NGNjNDAgcHkzaworODQzNTggZWZlOWY2YzhhMzFkNGZjODBkNTM3MWViZjg4ZDA1Y2VmYjNiMGY1NiByZWxlYXNlMzEtbWFpbnQKKzg0MzU5IDhhZDU5YjUyM2ZkOGEwNjQyNmY1NDBkNWQzNjE3MmJlMWNmNTFlZDUgcHkzaworODQzNjAgZTFkY2RjYjUyMDFkNDg0ZjhhMGU1YWNiMzg1NjFmZjg0ZTM4ZTIzOSBweTNrCis4NDM2MSAyOTQxMDFmNzdjYmVjYTRhMWE3OTE0NzM0ZGYwYmU4NjA2YjRmNjU5IHJlbGVhc2UzMS1tYWludAorODQzNjIgZTZiNDU2ZjkzNDQ3YTEwMDVjYWIxZjQ2Njg1YjUzZmZkM2MyZGY5NiBweTNrCis4NDM2MyAwNDBlZTk0YTkzNTBlYTI0Mzc4MDIwNTBhMjNiMzk4YjIyOTdlYWUxIHB5M2sKKzg0MzY0IGZlNzIxNGJjNmQ2NmIzMzlmZjFmZjMxYTFmYzZiMWU5ZDM3NzliZjkgcHkzaworODQzNjUgYTQ5MmYxYWMwNTc1NDc5ZTZiOGVkYTcwZWQ3MTU3ZDA3ZjAxMzZiOSByZWxlYXNlMzEtbWFpbnQKKzg0MzY2IDUzNzBkODFhNWYyZDJiMzAwNGVjODM1ZTJjYzZjOWNjYjkwNjQ3YjIgcHkzaworODQzNjcgMGE3ODRmNmFjYWU3NjgyNGNhYWEzNDU2YjE2YmNhYTJlNzZmNDdhMiByZWxlYXNlMzEtbWFpbnQKKzg0MzY4IGY5MjA0M2M3ZmY5ODQwZTM4YmQ2MjJhY2ExZDUxYTQ5YTE3NDM0MTQgcmVsZWFzZTI3LW1haW50Cis4NDM2OSBlYTg5M2RiMjNlNzM4YzYwODhjNTA0MTQzN2ZlZTFiNGE1NDkxYTBlIHJlbGVhc2UyNy1tYWludAorODQzNjkgNDc0MzczOGNjYWZlMTdhYzllNWEzY2U2ZDM0MzFkODFkODg3OGIwZSBweTNrCis4NDM3MCA4NDg4MzYwN2UyMWE0YjFhZmVhZTQ4YmU4MTYyNTk2MDQxZjQ5MmMxIHB5M2sKKzg0MzcyIDdiMmQwZDc3ZTRhYzZlNTQ3NzNhZTk4Njk5MGM0MjRmNGQwNjNhNTMgcHkzaworODQzNzMgODAzODkyOTMzM2E5Yzc4MjliNTcwMGQwODVmZTJmMWQxZjkxMWJjNSBweTNrCis4NDM3NCAwOGY3YWUxMGNjNzkyYWVhYjA4ZTk2ZDQyY2VjNTFlOGJjOWZiN2E4IHB5M2sKKzg0Mzc2IGNhOGY4YzZjYzJiMWIyODE3ZTE0NGM3NzBjZmY2MzI5Njk2OTczZmYgcHkzaworODQzNzcgYWMzN2EyOGRkYzhmNDliNGE5YjRhN2VhODY3YmRhNWY4MDlkN2JjYyByZWxlYXNlMzEtbWFpbnQKKzg0Mzc4IDE1NzBmNmU5YTY4NzQ1OWViN2VlZjRlMTlkMjZhNDEyZGFmN2RjODkgcHkzaworODQzNzkgZDUwM2Y3YTQ1NDU2NmI5NDhiYjFjNzZkM2Y1YmFmZTU4YWU0ZmJmNSBweTNrCis4NDM4MCA2MjkzMGNiMDVlZDhiOGExNDRhZTIyZTM1YjBiMDg2ZjkyNTRhZTQ5IHB5M2sKKzg0MzgxIDAzMjY4YmY5YTI1NjRmODRmY2YxYzg1OTI4MzEwMDhlZjcwMzJmYzAgcHkzaworODQzODIgNGYyOTA1ZWE3ODA5NjczZjA0NTJmMzJmOWQxZDJiZTVmOThjMWE4NiByZWxlYXNlMjctbWFpbnQKKzg0MzgzIGEwZTc1NmQ5MmQ2MDA2MTBmOWJiODE5YzVhM2RkODYzMDM3M2JkNGMgcHkzaworODQzODQgOGMyMTYwYjVjODFhZjdhODgyMGVmNjRjOWM2MThiZmIzMzBkNTI4MCBweTNrCis4NDM4NSA5Y2E4M2M2NGY3N2FlMTU1OTI2ZDJmMGE2OTU0ODZlMzJhYmQ4YjI3IHJlbGVhc2UzMS1tYWludAorODQzODYgMmU1NzYxNWU2MWYwZjFhY2E2ZTUxNzg2OGE2YjU1Y2FiMWZhMmM5NiByZWxlYXNlMzEtbWFpbnQKKzg0Mzg3IDlmZDMyNmFmNjJkNDVjOGRjMmFjNjkwMzIyOTJjYWFkYjgxYmYwNWQgcHkzaworODQzODggNDk4MGIzZTllODRhMTgxNDliNmJmYjcwZGM4YzY3MzM4YzEzYTkzOCBweTNrCis4NDM4OSA3ZTlhYmQ1M2I5Mjk4ZTcwZmY2ZTRhY2YwNjhiN2RlMjJmZTBlNjc4IHB5M2sKKzg0MzkwIDI5NzNkYWE0NzI0YjFlZDZhZjNkOWViZmI5NGVjNWE5MjE5NTRjNGYgcmVsZWFzZTMxLW1haW50Cis4NDM5MSBkMjQ4NzBkMDBjNDI1OWY4MGM3NzY0Y2YzOTM2YjIwYjYyMmQ2MmIzIHB5M2sKKzg0MzkyIGIzYjhkMDhmOWQwNmVjZmJkODM2M2I0YmIyODViMGIwNjI1NTA2YTcgcmVsZWFzZTMxLW1haW50Cis4NDM5MyBkYTE5ZDAyYWFhYWEzZDZmYjc4ZTBlOThhM2FiOGZmODk5NTBjN2JkIHJlbGVhc2UyNy1tYWludAorODQzOTQgNWEzMTAxZjU1OGVkZGUzNDNhY2M0NDM5YWRkMGU0MDllNTgyNGI5MSBweTNrCis4NDM5NSA0MTM0OTgxNzQ2OTc2OGY3ZjJjMjhhYjBjZGZmMjU0ZDlmZmYzZTM4IHJlbGVhc2UyNy1tYWludAorODQzOTYgM2QxYzcyNjJhYTE0ZGNjMzg3OGRhNjQyOTE3NWE1YTFkMTg5Mjc5ZiByZWxlYXNlMzEtbWFpbnQKKzg0Mzk3IDk0NDIzMjUyMTYyNGJiNzhjYjEwMWY4M2ZjOWUzMmJiODFhMjE1OTkgcHkzaworODQzOTggZDg1MGMzN2I2NmI2ZjZmZDMwNzVhNTZkMDI5Nzc4ZDJlM2MwNDhkMiByZWxlYXNlMzEtbWFpbnQKKzg0Mzk5IDA2MWUyNzAzMmU2MTkzNjMyZmRjZmE4ZjVkOTIxZGU2MzNiMDY2YWMgcmVsZWFzZTI3LW1haW50Cis4NDQwMCAyZGMxN2RjYzk3MzQ2OWYyOWZmYWYzZTMyZTAzZjllYmVkMTUyZWM3IHB5M2sKKzg0NDAxIGRlNDIwN2M5YjljMTI4ZDgyNjM4ZTZjODg3MDc3ZGU5MGM1MTdlN2MgcHkzaworODQ0MDIgMzA0NWViOTQwNTk3YmMyYzQ0YjI0NWU0ZTc0NmNlYjQ3ZDA3NTFmMiByZWxlYXNlMjctbWFpbnQKKzg0NDAzIGZhOGI1N2Y5ODdjNWYxNWI4NDU5NDYzNWUwN2QyYWFhM2Y5MDM0NTIgcHkzaworODQ0MDQgZDY2ODA3YzUwMzhiZmI2NmY0ZjMzMzU4MGM4YTdmOTZiZTIwNDFlZiByZWxlYXNlMzEtbWFpbnQKKzg0NDA1IDZiYTAzMzIyYmMyMzNiYmRkMjgzNWNhNjY4NWRjODc0OThkMzhmMTEgcHkzaworODQ0MDYgMDYzYjU1NGQzMTUzZjM2ZjZlZTQ3YzZjNDFiNWQwZTAxNTZlZjE2ZiBweTNrCis4NDQwNyA0ZDhhMjVhNGQxZjYwODA1ZDgyNGMxNDA3ZGIwMDYyZWFkNDRhZTZlIHB5M2sKKzg0NDA4IDkyNWU5MTEzZjBhYWVmZjEzYjYzZGVhN2Y4ZTgyZTQwMmRlMmU0NmIgcHkzaworODQ0MDkgN2EzOTViY2VhYzkxYWYzNjBkMzNiNTgzMzk5NDRhMzcxYzg3NzUyOCBweTNrCis4NDQxMCA0NTQ3YjE0OTExNjkwMzdjMGRmNTQyODJmNmE0NTA0M2UzYzNmMDJhIHJlbGVhc2UzMS1tYWludAorODQ0MTEgZmE0ZDc4YjllM2EyYTZiODRiODQ1OGVhZDcyZDU3Zjc0NDExZjE1OSByZWxlYXNlMjctbWFpbnQKKzg0NDEyIDYxOWFmYzgxYzk3MzFlMTVkNWUxZGIyZjhiNTU1M2JiYTJlMzQ2NDcgcmVsZWFzZTI3LW1haW50Cis4NDQxMyBmYTk0OTUzMTZjYTkwMGQxOTE3NjE3NGQxNmJkMDBkNjI3YjdhMWM0IHJlbGVhc2UzMS1tYWludAorODQ0MTQgYTNiNjQxOTI5NmU1ODRiZjdiZGE1MjkwMTJjNTE1ODQ5ZDc5N2Y3MSBweTNrCis4NDQxNSAyNWVkYjZmNDM4YjkyNmQ5OWM5MWQ3ZTkzYWJiMzRhMWQwN2MyNDVmIHB5M2sKKzg0NDE2IDUzOGFlNjIyNGE1ZWI1ZWZlZDk4ZjdhNThmZjk5ZjZkMDljYzEzMDYgaW1wb3J0X3VuaWNvZGUKKzg0NDE3IGQ3OTIxNmZjMjFjZTc1MTE5Y2I5N2ExYjUzZGIxNjZmNDQwYzZkNzEgaW1wb3J0X3VuaWNvZGUKKzg0NDE4IDgyZWFjM2MyYzY5N2RmMGExMGJiMmYwZjY2YTJiNGU3YjI1ODdlODUgaW1wb3J0X3VuaWNvZGUKKzg0NDE5IGVkM2Q4NjFjNDkwY2EyZmM3MDQzZGQ3MTk0MmVjNTRmZTU5MTc2MjcgaW1wb3J0X3VuaWNvZGUKKzg0NDIwIGEzOWJhN2FjYmUyODcwNGEyODIxNTk0OTcyMWJlNjZkZDZmZjkzNWEgaW1wb3J0X3VuaWNvZGUKKzg0NDIxIGU2NjBlN2JkNzk5ZDcwZmNhN2E3MmZhMzRkOGY0Y2Q4MjNlODIxNmIgaW1wb3J0X3VuaWNvZGUKKzg0NDIyIDgwNjQxYzdhNmY0ZjljMjRmZmVmZWNhYzA3Njg0NzE5YTBkYjRhYjEgaW1wb3J0X3VuaWNvZGUKKzg0NDIzIDNkNzg1MmI4NjEyODRkOWM2NzE3YTVlZWI4NTA5NDYwZjU0ZGExNmUgaW1wb3J0X3VuaWNvZGUKKzg0NDI0IGIyMWZkOTRmNGZiMzdiMzM4MTg2MzhmY2NmMTAzMTIwNTlmOTQ3MzUgaW1wb3J0X3VuaWNvZGUKKzg0NDI1IGYwZDBhMDcwZjEyOGYyYjcwZmFmZDhhMzUxN2ZhZWY0ZjRhNWJjMWYgcmVsZWFzZTMxLW1haW50Cis4NDQyNiA5M2Q2YWQ4NTIzNTM0MWRmYzIxN2NkOGU0ZDdhYTdlNjc1MWY0ZTMyIHJlbGVhc2UyNy1tYWludAorODQ0MjcgODIyMTFiMTg1MGQ0ZGEyYmMzZDcwMmYxNmE0ODU4Mjk1ZTQwY2RjMyByZWxlYXNlMjctbWFpbnQKKzg0NDI4IGRjYjJhYTQxY2Q3ODBhMDAzY2Q3ZDEwZWQyZmI1NWI2YjEyNTliMmIgcmVsZWFzZTMxLW1haW50Cis4NDQyOSBhMGQ4ZGUwNGMzYTgyODUyYmI4NzdmYTcwMjRkZjY1MTdiNmI4YmUwIHB5M2sKKzg0NDMwIDFmMDRiMDA3NmZkODE1ZTM5NGQ3YmM0YmY3ZjBmNmFiMGFiODYyZjggcHkzaworODQ0MzEgYTdjYWRkN2IzNGI1MjZmMDI3NTdkMzQ5YWEzNjlkYTUzZmEwNDU1MyBweTNrCis4NDQzMiA0N2I5M2NkYTkxZGY1YjJiZDJjOTdkNzA0ZTAyYTYyNWY4YmM2ZGZhIHB5M2sKKzg0NDM0IDgxYTlhYzczZDYxOTYzMjlmYjIwZWQwOGMwMTRlMWQ5NDk5M2ZmNTUgcHkzaworODQ0MzUgMDI2MGUwNGQyY2ZjODI5ODkyYjgyMTg4NTdlOTZhY2M0OWQyZTYxYiBweTNrCis4NDQzNiAxMWZjNzk4YThiNDMyNzIyZTA5ZjZiYTBiNDc4Mzk2YTk0Y2MxMTE5IHB5M2sKKzg0NDM3IGJkNzQzNWE4NzA4YjYzN2VmMmZhMmI4YmZkNzM1ZDU0ZGJiMDlmZDEgcHkzaworODQ0MzggNTVkYjYwZmNhYjU0MjQyNzBiNWUxNWVmNWY1NWIwYmM2NmY2MWEwZCBweTNrCis4NDQzOSBiOGNmYmJmZTE4MzkwNjdlNzVlMmU3M2UxMDgxYWI0NTU3MzAyYzAyIHB5M2sKKzg0NDQwIGQxYzZiMWFiNWJhNzg1NDA4MTcyNGVhNWQ2ZWM5OGExNzc1YjExMTEgcHkzaworODQ0NDEgOGI5NGYxNWNiNjUwYmExYWFkZWIyNTkyMDBmNzM2Y2IxYTBmNmJhOCByZWxlYXNlMzEtbWFpbnQKKzg0NDQyIDRhZDdlZmQ5MDliY2U5NGJjMmZhMWVlYzMyMzY0MTM0NGQ0MDY2YTYgcmVsZWFzZTI3LW1haW50Cis4NDQ0MyAxNmNlZmRmZWQ2ODIwZDJjNTY0NzYyMTk4ZTE0OGRhYzI5YmRiNGQyIHJlbGVhc2UyNy1tYWludAorODQ0NDQgMTZkOGE0ZTk0ZGQwODcyNDk2MjJhZjliM2RlYTg1ZjU1YzYwNWVjOCBweTNrCis4NDQ0NSAzM2NmYWEzMmM4ZTgwZTc1ZWM1OGJlOWRiMjViMjE4NjJhYzhjZWRmIHJlbGVhc2UyNy1tYWludAorODQ0NDYgOGRiZDMxNmJlYmRmOTg3MjUxZGNhMjJmZTJiNjA0NzRjMDllMmNiMCByZWxlYXNlMjctbWFpbnQKKzg0NDQ3IGQ1NmIzY2FmYjFlNjU1ZWZiODFjODU2ODg0NDllZGIyZTYwOTc5N2QgcHkzaworODQ0NDggYjY1ZDAzNzFhNzMxNThiNGI5NmU2MTdmMjgwODkwM2ZjNTk2MGUyZSBweTNrCis4NDQ0OSBiOGVlODA4NjNkNjNmYWI4MDdmZDdjMzlmNTlhOWNjY2JlYmEzYzU1IHB5M2sKKzg0NDUwIDdkMTc1MmQ2MjA1MGM5YTMzNjBmZTg0OTI2ZWIwOWMzYmNjMmZjOWYgcHkzaworODQ0NTEgNjMzMTY2ZDRmYzEyYWQ5MmE3ZDhjMWM3OWU4ZjNhYjdkMWVmMDRkNCByZWxlYXNlMzEtbWFpbnQKKzg0NDUyIDgzYTZmZmYzZjY4MzM0ZmQ3Y2JkYTRjMzE3ODFjMTAyNTExMzZkNWIgcHkzaworODQ0NTMgMTI3MDQ1MWY0NjA0OWQ3YTlkOTE2NmVjM2JjMDNiZDBiMTk0YWU4MyByZWxlYXNlMzEtbWFpbnQKKzg0NDU0IDM1Njk5ZjM4N2RhNmU3ZDJkNmRkNjc2YjE4YzY0ZWMwYTcyOTI0YTcgcmVsZWFzZTI3LW1haW50Cis4NDQ1NSA5OGYzMzdhNjk1N2MxM2M5MDhlZGEwYjllZDRkNzNlOTUyYjU4Yjg2IHB5M2sKKzg0NDU2IDcyNjQwZTcxMTM0NDE4YTcwMDY1YTc1NjM0YmMxZGU5ODQ3ZGE4NmUgcHkzaworODQ0NTggNWUzM2IyN2M3MWE4NjE3MjE5NzU5MzRlOGJmZTNjMDc1ZGYxNmIzZiBweTNrCis4NDQ1OSAyMDI3NDdkYWUzY2ZhZWI0ZDY4YjA4MTgxMTI0ZTAwMjYzMzQ4MWZmIHB5M2sKKzg0NDYyIGJhODdjYWVlY2I5MTRmN2IxODM2Njc0NDhjOTcwYTY4MzY3NWQ3NzcgcHkzaworODQ0NjMgYjdjYjI3NzczZTcyOTFmNWYwNjQ1MGI2YTAzNTZlMmUyZTZjMDVjMyByZWxlYXNlMzEtbWFpbnQKKzg0NDY0IDcwMDE5YzVjZjM1ZjhlYzdjYjNmZTI5MmMzN2M4ZGUzNjVkODdiOWEgcHkzaworODQ0NjUgOTg4NzE4ZTlmOTNkMTVlMmE5MzdhNmUxYzg2YzBkYjQyZmQ3ZmJjNiByZWxlYXNlMzEtbWFpbnQKKzg0NDY3IDA2ZTVmZDQ5NTllOGExZTQwNDA1ZjBkMmY3YjJjYjUwN2MwOTRlMDcgcHkzaworODQ0NjggMWY0NzIwNmQ1NzdmMDdhY2UzZDIxY2QxNTdhZWE0ZDIwMDhhNjk1NyBweTNrCis4NDQ2OSBmOGJhOTU1OGFkYmY5MTViYTJmOTIzNzAxNDJkMjhiYzViNDM5YjYyIHB5M2sKKzg0NDcwIDNmNzc2NGM0MGMwYmZiOTUyYTk1NWQ3N2M2MGE5NjllMGY2NDZiZTMgcHkzaworODQ0NzEgZGJjOTU3NjJjZjU4NjM1YzY1ZDE3MTVkMTE4ZWI3YjRhNzI2YTUwMiBweTNrCis4NDQ3MiA1MjRiNDQ0YTgwOTUwOTVhNmQ5Y2JhYzFiZTIwZTQ0MGQ1NTUzZGJmIHB5M2sKKzg0NDczIGU5MmFkYTY0MmRiZGZkYjcxN2QzM2M4YWIzOWRiZTc3YTEyMzllZGIgcmVsZWFzZTMxLW1haW50Cis4NDQ3NCA4OTVhZWI0NTk1YzJmNzBlNmFkNTA2MTdiNGZiYjJiYTFiMTk1ZTUwIHJlbGVhc2UyNy1tYWludAorODQ0NzUgNDcyZGNmNTBjYTcxYzg3ZmM4MzFiOTk5N2ZmYjc1NTAyZmJmZjJjMiBweTNrCis4NDQ3NiA1MzMwNWJhZWY1ODhkODU3Y2UxMGIwNjIyYzIxOGUzYzM0YTU1YzdmIHB5M2sKKzg0NDc3IDQwNTJkM2UyODY1YmY4YTFhZjQ3YWI0NzkxN2MwMGM5OTExODFjYWQgcHkzaworODQ0NzggNWU1NWU5NWQ1Yzc3NGI0ZmMyYzEyMzc1MTNmZDY1OWQyMjNkOWY0ZiBweTNrCis4NDQ3OSA2OGZkNDMwODU5YTQ5YzNhODM3ZTFlOGExMTc5NmE1NTExYzhhMjZhIHB5M2sKKzg0NDgwIGVhNmQwODJhOWNmODA4NjdjYzFiMzIwZjFmZjI1YWIxMDE5NzhkZjMgcHkzaworODQ0ODEgNDBlYjU5ZTJmMmQzNTA2ZmRlN2RhNWE3NWY5ZTIyNTkwOGEyNjE4OCBweTNrCis4NDQ4MiBlNWFlMDNlZjdmYzEzYzg1NzJlNjM0NGEzODQ3NDg2MWRhZmVhOTExIHB5M2sKKzg0NDgzIGRlOGQzZDc5MWU2YTdmNDFjYjg1YzNlODA5NmIwYWIwMDc2MmQ2YWUgcHkzaworODQ0ODQgMDMyNTRmYzgzOTAxMTYzZDNjNDkzYzRmNDBjN2QwNTgwZGQ3NjM2OCBweTNrCis4NDQ4NSBlOWNkMTVkNTM5ZTFhM2ZlZGEwMDVjYmI5ZWNiM2ZlZTI5NDVlMjcyIHB5M2sKKzg0NDg2IGIyYjI2MmM1ZGFhODYzMDczYTAwYzJiMGZmNDQ5YTA5MWVlNzIwMTYgcHkzaworODQ0ODcgYjcwZDMzZWVmZDk2MGU0ZDBjMmQ2YzM0OGJlMmQ1NjdmMjU5YjkyZSBweTNrCis4NDQ4OCAwMGM2OTU3Yzc3MTkwYjI5MWJkYmFjM2JhMzRmYzBhZTA5YjcwZTZmIHB5M2sKKzg0NDg5IDkwZWI0Yzk3M2Y1MmFmZjUxYTVmYTlmMTM1MjIzYjY0M2M4OTZjNzYgcHkzaworODQ0OTAgMGFmOTRlZTk5YTQ4NGJkYzI1MjFiM2QyYmE3MTE5NzQxZTU4NzQzMCByZWxlYXNlMzEtbWFpbnQKKzg0NDkxIDkxOTdiYWU2MTlhYTQwYjI1OTgyYTU0NGQ0MmNlMzQ3NDY4MWQ2YTggcmVsZWFzZTI3LW1haW50Cis4NDQ5MiBlZDQ1YTI2ZjY2NjRkYTcxOTg2MjM0YWJkZDU1MGQyNjIxYzcyNmQ3IHB5M2sKKzg0NDkzIDQzMzE5ZTI5MmQ2NGJhMTlhOTI4MDcyN2FmNzgyZGMzNmEwNWEzMGEgcmVsZWFzZTMxLW1haW50Cis4NDQ5NCA1OGI4MTAxZWFjMjM4ZTYwNTNhZDE4MjVhMTk2ZDNiZjY0ODBiNDlhIHJlbGVhc2UyNy1tYWludAorODQ0OTUgMGY2ZWU1OWMyYTc2M2E4MmE3NWFlZGU1OTUxM2I0MTk4OTdhM2VjOCBweTNrCis4NDQ5NiBkYWJjMTE1MTE2YmQ3NDhkMjExZWQ4M2ZmMGI5ZjIxODUwNzllNTVmIHB5M2sKKzg0NDk3IGQyYjhmMTEwMzIxMjRiYmIyNzIzY2Y3MjIyMzU2OWRjNmVmNTA5OTYgcHkzaworODQ0OTggZjk5NGU2ZmQwNjgwNjIxNDI0MjkyNmY2ODNlZDgwM2U2M2UzYzgwZiByZWxlYXNlMzEtbWFpbnQKKzg0NDk5IDhlY2UyOWM4YmJhMjhlZDVhNmUyNDFjNGQwZThiZTRkMTQ3MmRiMDggcmVsZWFzZTI3LW1haW50Cis4NDUwMCAxYjVlZTZlODQ1Y2RmMDE3MzdkODk1NmY5ZTc3ZjM2ZjVjOTI1NzA1IHB5M2sKKzg0NTAxIDcyNTIzMTIxMTI3MzI3YzAyMjA5NmQzMGU3YjI4YTRhNWE4OTQ5NWQgcHkzaworODQ1MDIgY2U1NDZhMWI5ZmVjMWY2MGJlZGIzZjMxNDZkMDZmMDk4ODA1Y2Q3ZCBweTNrCis4NDUwMyBhNDE1Y2Y5NGM3ZGE3ZjM1OGJjNDk1ZWY4YWU1ZDYzMTE2NmM4YjI3IHJlbGVhc2UzMS1tYWludAorODQ1MDQgNTk5N2FlMmVhYjM3MTkxNzg3NGI3M2QyNmEzMTMzYzdjM2EwYjI2MiBweTNrCis4NDUwNSBjM2FkODgzYjk0MGJlNGVlYWI3NTJiMGVhYmRlZjZkZjYwMDljMDA1IHB5M2sKKzg0NTA2IDc4ZWE0NDIyZGY0YzJjOGQ4MTNiZDM3YzU2MDc3MDU5ODBiZjZjYmQgcHkzaworODQ1MDcgMjNjZjU0MTg2ZjU2NTMyMDY5Y2Y4MzkzNzc0OWU4YThjODY5MDRhOSByZWxlYXNlMzEtbWFpbnQKKzg0NTA4IDk4MDgzZjg3NjQ1NTQ3MjYyZDk4MTYyN2M4YjA2NDFjZWRhZmMzNjIgcmVsZWFzZTI3LW1haW50Cis4NDUwOSA5NzIwODM2YWEzY2I4OTMxNTZkNDRjMzc3NjlhZDU3NGM5NTA4N2M3IHB5M2sKKzg0NTEwIDYxYzQ0NzkzMjM4ZDE3MTRlY2QwZjY5ZmRkNTFhOTA4YTI0ZmMyZjAgcHkzaworODQ1MTEgYjMyY2JmYTk2NzM5NGUzMzkyZWM0NGIwMWY1N2E4Mzg1YmJiYmViNyBweTNrCis4NDUxMiBjNzhlYjAxNmQxYzUxNDg2ZGE2MTFmNDA3OTU2NjFmNzE1ZDY3NzVlIHB5M2sKKzg0NTEzIGM0YjM0YjJhNWNjMGVlZWI1NzI1YWFkN2MwMDM3NzdkYzMwMTVkN2QgcHkzaworODQ1MTQgMGIwYmQ4MTAyODkxYmI5M2U2ZWFiZjYwNTUwYjYzYzYwMzc4NTEyNiBweTNrCis4NDUxNSA3YTM0ZGVmMzVkZTc0YmQ3MmZiNjVjMWFlY2UzYzI4Yjg2ZTA1NGNhIHB5M2sKKzg0NTE2IDNjMzY4NDlmMDYzOTdiNWExZjQ2MjA0Y2QzNTQ1NGI5MTFjNjczNWYgcHkzaworODQ1MTcgYThkNTRlODAyM2YyMWE2MmYzYjM2YmEzODJmMDRkYmJkYWMzNTc5YyBweTNrCis4NDUxOCA4YmIxNjJiMDE5MjZmNWFmOThiZjQ5OWJlYTNlNjg4NTFkOGRmODk2IHB5M2sKKzg0NTE5IDI2M2IxMDc3YWI5NzViM2RlZTA5ZTY2MDMyZWM2MGU5ODkzYzAyYzUgcHkzaworODQ1MjAgMGQ4NjE0MDc1NWYwZDQ5NTM5M2U4ZjY2MTAxNTVmZjliZGVlYThmZiBweTNrCis4NDUyMiA1NmRjMmE1YWYyMGExYWVkYmVlZTQ5MDljYWJkNmYwMTVkNTQ3OWYzIHB5M2sKKzg0NTIzIDYyMDk4NzUxZGE2N2I1ZWVmOWJiODViMjE1NzEyMmEyMmRjMDcxNGQgcHkzaworODQ1MjQgMTYxMTkxMjkzMjRkNDFmYWYzNDQ3YTM2OTMwMThmMDUzMjUyZWQ3NSBweTNrCis4NDUyNSA3ZDliNGUwMThjNjJlOTIzZGNlOTUyZWU2OGUwMGVmMmVhYjkxOWMwIHB5M2sKKzg0NTI4IDc4YzRkZGE3Y2RjNjM3MzdmYTI0ODdlMTUyNTFkZjFlOTVhMmI4YzAgcHkzaworODQ1MjkgNTEwNDhmNjI3NmNlODRhM2M5OTE5NTk0MWQwNTBmYmEyYzBlZmVkMyBweTNrCis4NDUzMCBkYzU4OTJmNzNlMDM2ZGY4NDYwY2RlYzAyY2Q3YTFjYmEyYzA1MmVkIHB5M2sKKzg0NTMxIDRmN2I1NmI3ODcyNTI1NjE3YzU2YjdiZmM4NDk3ZjJlMzBkMjFhNzEgcHkzaworODQ1MzIgYTc1ZTk4OTM3NTQyYmM1MzIzNDMyOWQwNmM0MjE1N2U3ZWUwY2M2NiBweTNrCis4NDUzMyBiMGFiODMyZjg5MjEyODE4ODJlNGUyMTdmYzBkMzMwOWEwOGZlNTMzIHB5M2sKKzg0NTM0IDc4MTRkYzlmMzFhMjVjOTM3N2VjNjZjNTNlMzE5YzI1YTY2NDFiNDIgcHkzaworODQ1MzUgN2UwZDg2NmNhODcxNDgyNGNiMmE5ZjhlNTRlZWJjODU5ODM4ZTc2OCBweTNrCis4NDUzNyA3YTdiNTMxYmNiNjRkMTI1ZGQzYmIwMWY0YjcwMzFhNzAwNDU5OGE1IHB5M2sKKzg0NTM4IDc4ODc5NzFkZGE0ODNiY2JmZjIxOWYxZWJhNTlkMzBmMGVlNDlmMWQgcHkzaworODQ1MzkgMjEzOTE2MDI4N2ExMWEyZDA2ZWFhYjE2MjJlYTkzMGUzMTExNTY0ZiBweTNrCis4NDU0MCA1NmQ0MzczY2VjYjczYzhiNDUxMjZiYTdiMDQ1YjNjN2IzZjk0YjBiIHB5M2sKKzg0NTQxIDFkMGQzM2MwNTE1ZWU4YmM2ZmZlNjc0ZDlhMWMyZWY2OWM5MTA1M2IgcHkzaworODQ1NDIgNWM5OWY4YzkwZTY2NDE2NTRhMzNkMzc3ZWYyMGJhMzNkODc4OTE5YSBweTNrCis4NDU0MyBjMzQ4OTI1NzViYzBlNGFmMTExMDA1MTAwMGY5NzZhMWNiNDMxMGNlIHJlbGVhc2UzMS1tYWludAorODQ1NDQgODdhYTYyYmQxNzE1NmU5ZTI4OGFkYzAyMThkNzNhZmFmYzMzMzU3YiBweTNrCis4NDU0NSA4ZWY2OGViZWMwZTFlMmU2YjE2OGZjMTI3ZjY3OGI1Y2E0OTdkODFmIHB5M2sKKzg0NTQ2IDY5Y2IwOWYyNjQyNDBjYTNjMzAzMTc2MGRmM2ExMzRkNjBmMjQ1NTAgcHkzaworODQ1NDcgZTU1OGFjNDI1YTUxODViZjFiNTYwODMxMTYyNGQwOTU2ZWYxMjYyNCBweTNrCis4NDU0OCAwNzEyMjVhZjY0YTNkNzA1NmIwZDUzNDZhMDBkZTk3YWMxMjhlMzY1IHB5M2sKKzg0NTQ5IDY1N2Y3OTUxOTliOWU3ZTM0OTEyN2VmZmMyZmZlMjk3NjM1ZTRmZDMgcHkzaworODQ1NTAgNjMyNGQyMzk2M2E3MTkwNDVjNTM0ZmNiMTEzYTQxZmQ2MmYyN2U5MiBweTNrCis4NDU1MSBkMzg5Mzc0NzFmODk4NGFjOTYwNWE5ZTU3YmFmYjIyYzcxZGM2MTcyIHB5M2sKKzg0NTUyIDM5YWFhMmE3ZmQ0YmY2ZWEyNTY1ZTQzY2QxNTgyYjQxNmIzM2RjZTYgcHkzaworODQ1NTMgMWQzNzRlNWJhMmYxMzJlYjk5YjdkNTVjNmRjNDExY2UyZWU3ZjYwOSBweTNrCis4NDU1NCA0OTQ0MWU4OGNjYzE0YWQ0OGZmYzFjMjFhMzY0ZDExNjFiNzY5NThlIHB5M2sKKzg0NTU1IGQ5MzljODBjNjY2YmQzNzM4YjQwNzc5OWUyNzZkNWZhYzQ4ZjMxMTEgcHkzaworODQ1NTYgMDYyYWI1MTQ3NDg3NDU5N2NlYjY1ZTEzYTM4NDQ3M2E5YTFhNzc3MiBweTNrCis4NDU1NyAwNDdhOWQ3Y2EyNDFkYzFiOGNmZjZiYmFjOGQwOTNmYjhjNDhkY2VmIHJlbGVhc2UzMS1tYWludAorODQ1NTggMmMyYTM4ZTBjZjMwNzY1NTFjYWM4NTc3ZDE2ZGVhZjRiMWI5YTMzMyByZWxlYXNlMjctbWFpbnQKKzg0NTU5IDliZGM1OTAxMjA3YjhjZDgwZjczYzc1ZGM3Y2M1ZWM3YmZiYTQyYTIgcHkzaworODQ1NjAgNGExNDU1ZDM2OGZmNWZmYWRjODE0ZjdlOWQ2YWJmNTVkNzNhMTJiMyByZWxlYXNlMjctbWFpbnQKKzg0NTYxIGY2ZGZkNmM1NjNlMTE1OGE0ODZjNmYzYTY0ZWRkYTUyZTdiOGY4YmUgcHkzaworODQ1NjIgMjE0MDU4MTJmMzEyNzBjZmZhNDYwZDdkYzQzNTU0ZWFiOGNjYWE1ZiBweTNrCis4NDU2MyAwYzBmMWQwZWI3N2U5ODBmNzBmYjQzZWNkODNkODY3MGJkNDU2ODU1IHB5M2sKKzg0NTY0IDU0MTMzODc5NTk1MDcxMTlhMTFmNjk5ZmI2NDg5YjNmZDE5MGVmMzkgcHkzaworODQ1NjUgZWYxNmI0Yjc5ZDU0N2Y2Mjk4OWYyMGE4ZTRjNGU0Yzk4Mzk5NjZlYSBweTNrCis4NDU2NiA2YThiNWE2MThlN2FlZjBjNGY0NmFlMjQ2MzQwMDBiZTZjYWVhY2EyIHB5M2sKKzg0NTY3IGIzMDYxMDViZjgzZGZhMjY1ZWZjMDI1YWNmOGE3ZTIxN2FiOTM5NzYgcHkzaworODQ1NjggMTI0N2ZhNzUxNzcyMWFkY2E3ZTUzNTQxYWIxNzM3MTBlY2E5YWNjYSBweTNrCis4NDU2OSBmYWFhYjVhNjU3ZWI1NDliMjE3ZGRiMGQ0YjJiM2IwMDljMTAxYTI2IHJlbGVhc2UzMS1tYWludAorODQ1NjkgMTY5MmMwYjYwMzE3NjQxNTYyNzNmMjA5Mzc3M2FlNzgzYjk1ODczZSByZWxlYXNlMjctbWFpbnQKKzg0NTY5IGNkOTE4YWM3YmQ1NTRjODk2ZjU5M2I5NmJiNTk1NGQyZmEyY2U0ODQgcHkzaworODQ1NzAgNTRiNzk2NGRkN2E5NWUzMDkwMjEwMjY2NTdmYmVmMGQzN2IzYzI4NiBweTNrCis4NDU3MSA1Njc4NzU5YTgwMDlhNzA3ZDg1NmI1MTkyNjU5ZDNmYWM3YmFjNjBjIHB5M2sKKzg0NTcyIDUzY2Q4ZWNkY2U4YWU2NzFhYjU5NjIzN2ZmNmQyYWY3OTU1NTliMjcgcmVsZWFzZTI3LW1haW50Cis4NDU3MyBiMzJmZGE5ZjcyZmY5NWQxNGQxZTBjYWNlZWEwZTFlNjQ2ZTQ5YmZkIHB5M2sKKzg0NTc0IDY1NjQyZjA4NWM1NWM5NDVhOWJiMDUzMGE0OTBiMjkyMGQ0MThlY2MgcHkzaworODQ1NzUgMTFiYTYzOTdlM2E0ZmU0NzQ3YWUxMTU2YTA3YzE4NmY4ZDEyNzE0YyBweTNrCis4NDU3NiBjMmY4NDE4YTBlMTQ2MTM5MWRmNjEyYzVmZDIzODg3MzIzNDdlMmM2IHB5M2sKKzg0NTc3IGUwN2M0NDgzYWQzYjZmYjE1MTVkNzdjODkwY2MyZDkxMGU4NWQ2NDAgcHkzaworODQ1NzggOWNlZDdmMmYyMGIzZjFkNzNhYzczYzE5ZGMxOTEwNThlNmYyZGRmZCBweTNrCis4NDU3OSA5NGUxZjIzNmM4OGQ3NzkzZjZiYjE3YzRjYzllMzJmMzA1N2QzNDJiIHB5M2sKKzg0NTgwIDZiYTIwYjkwMzlhZTY5OTAyOGY5ODI0MGY5MWEzYTQ4YTA2ODYxNzggcHkzaworODQ1ODEgZTgzYWYxNDFkZmZkYWE4ZjU1YTI3ZWMxNmM0NDAyMzk2ZmE4NThjMyBweTNrCis4NDU4MiAxYTFlNzI1NGQ5NjU1NjdmYTRkMWU2YWMxZGUxNWQyM2Y4YjExOTA4IHB5M2sKKzg0NTgzIGU0ZGUyMTc2Zjk4ZTMwZjRjNGU4YjBhYzdiNWM0MjU5YTBiZmY4ZjAgcmVsZWFzZTI3LW1haW50Cis4NDU4NCA0YWM4YWU3ZTgwMjJjNDRlY2NlNzFlYjkwMWUxZGYzMDY5YTFhZTY5IHB5M2sKKzg0NTg1IGFkZmExZTQ4ODczNGUyY2NlNTcyYjhjMjUxNTQ4ZGRlOTljODYxYTQgcmVsZWFzZTI3LW1haW50Cis4NDU4NiBjMjE5OTE3NWFkYThkZTgxZjJjZTFmYWNhNWJkYTY1ZmM4OTMyMWMxIHJlbGVhc2UzMS1tYWludAorODQ1ODcgNjA5NWVhOWRjZmY0MDA5NTAyMGNlZDgzNTI2NDU5YWU4NTM4YjZjMCBweTNrCis4NDU4OCAxYzIyYzFlNDUzZDRhMWNjZTc4NTM4NGM4Mzc4ZGYxMGQyZTFhMjQ0IHB5M2sKKzg0NTg5IDg0YzI0ZGIxMzY3N2M3NDAyMTBhZjJhNDZjODMzNzRlMWI1YThhOGYgcHkzaworODQ1OTAgM2U1YTg5Mzc2ZGY1NDQwNGZjZjUxZjA5NDU5YjA1NGMwNGQyNTRlYSByZWxlYXNlMzEtbWFpbnQKKzg0NTkxIDc0MzJlNTA4ZWI2NmE5ZTBjOGFkYzQ0NjZlNWEwMjVhNzhmN2NjODcgcmVsZWFzZTI3LW1haW50Cis4NDU5MiA0YTNkZGI4NjJhNzJjYWZkZjVhYTgzMWIwZTVlMGZmMThmODExOGQ1IHB5M2sKKzg0NTkzIDVkZDFlNTk0ZDkxOTVlYjUxMjkwODUxYTAxYTNhOGQxNzkwMTgxMWQgcmVsZWFzZTMxLW1haW50Cis4NDU5NCA0YjY4ZDQ3MzQ4YTRkYWI3ODU0NTYyMjkwODdhMDY2MjQ3NzljNGE2IHJlbGVhc2UyNy1tYWludAorODQ1OTUgNzcwYzNlYzA1Njg1NmI0NDg0YmIzNDYyNzgyMzk0ZTQyZDNjM2E1MCBweTNrCis4NDU5NiA4OWZlNTE3OWFlYzVmMDBjNTgyZjk5MTkzOWFhMDE0OTFmZGZkNzRlIHB5M2sKKzg0NTk3IDkxYzdmNDRlNGJlYTlkY2FmYTE4M2E0MmViY2Q2MDNiMDMyOGVlY2MgcHkzaworODQ1OTggYjJmN2NmOWM2Nzc2MzU5ZjI3NTE2MGZhZDE1M2Q1ODhlMjE3MzE3ZiBweTNrCis4NDU5OSA2M2NlZWYwNDUzZjQwNmFiZDIwZjljNGY1ZjIyMTljN2ViMzg0MmI1IHB5M2sKKzg0NjAwIDI0MDBmNTVlYTMxMjUzMDg4ODg4NWUwY2Y4Y2Y4OWMwMjAyNWZhNjIgcmVsZWFzZTMxLW1haW50Cis4NDYwMSA1ZDczYjAzNjU3M2I3ODdmNTAyMDE1NmE2ZGQwMzVmYTU2ODI4NGVlIHB5M2sKKzg0NjAyIGQ2ZDRiODQ2NGI4Y2Y2ZWIxMDI4NGRlMTVhZjliYmMwMTM2YzEyNmMgcHkzaworODQ2MDMgYWY0MTRiMjlkNDY3ODcxM2MyNGY5M2RiYjFhYTk3Zjk4Nzg4MzUxYSByZWxlYXNlMjctbWFpbnQKKzg0NjA0IGVmMGEwN2Q1NGRjMTdkMzBiODQ5NTA2MjE2ZDQ0MmQyMWZmYWUxYjYgcHkzaworODQ2MDUgNGM2NGU2ODhmNjY1ZWZkNjI1MDQ3MTE0Zjg3NjQ3MDQ3M2Q5MDU0MSByZWxlYXNlMzEtbWFpbnQKKzg0NjA2IGQwMDhmNDA2ZGM5OGM5ZDFjM2I3ZGRkNGQ2NTFjNjllNTE0YzY2NjggcmVsZWFzZTI3LW1haW50Cis4NDYwNyBjMmQ2ZjBjZjkyNmEyZjNlM2ZhMDBhMTY2MTJkOTkwZDNlMWE1YjVkIHB5M2sKKzg0NjA4IDk2MGRlMDEwMDgxYjc2MzEwM2E5NTc0YWQwYTAyZGI4OGQ4MDA1OTkgcHkzaworODQ2MDkgMzg0YWVlNjI3M2U4MDViNjk2ZjAzM2E1ZWZlZGQ0MmQ2OWM4NWYzZCByZWxlYXNlMzEtbWFpbnQKKzg0NjEwIDAzYTZmNzgzOWQ2ZDM1MzJmZWU2YmMzODEzMTE2NjEyM2E3ZjJlYjggcmVsZWFzZTI3LW1haW50Cis4NDYxMSA1NThmMzM4ZTEzMjA4MTE3N2VjNmIwYmUzNWE5NzY3YzQyOTI3YWFjIHB5M2sKKzg0NjEyIGUwNjIzYjZiNDNiNjM3YTMyMTA1YzI5MmY4ZDI0YWZkZTljOGY2OWUgcmVsZWFzZTMxLW1haW50Cis4NDYxMyBiYWYxYTQ4MmI1N2Q3NjZmN2M1ZTY1Nzk1MTU2NTQ1OTRhMTE0YjA3IHJlbGVhc2UyNy1tYWludAorODQ2MTQgODkyM2UxNDkzYTM0NDkzNmVjYjdhOGM5NzMwNzNkZjM1NGY4ZDUxMiBweTNrCis4NDYxNSBkMjdkNGJkNDg4ZGM4Mzk0NjRlZTBjNTJlMDI0ZTZiOGVhMWU0NTU0IHJlbGVhc2UzMS1tYWludAorODQ2MTYgMGZkYTgyYjFiZmJiYzUzOGRhNjY5OWJlNWNjNDJkMTdjN2FjY2Y0ZSByZWxlYXNlMjctbWFpbnQKKzg0NjE3IGQ1MzMxNzEyYjUwOWQ1N2Y0MjVlMWEwZDc0MDRjOTE3NTRjNTllMDAgcHkzaworODQ2MTkgNzlhMTRkMzY4NTQwMWMzNTE5ZDg5MTg1YWRjZWE2ZmIwNzZjY2E1ZiBweTNrCis4NDYyMCBlM2VkZDJmOWJiNmFjMzA2YzE2NGIxYzAzNTc4ZDRhZTYyMGUxMDhmIHB5M2sKKzg0NjIxIGU2MGVmMTc1NjFkY2VjNDI2YjIyMWVhMmIyMmMwOTJjYzFmM2UxMmIgcmVsZWFzZTI3LW1haW50Cis4NDYyMiBhMGI0YjJkZmQ5ZDVhODEzY2M0NTA5Yzc0MDIxYzJlM2QxZWMyMTRmIHJlbGVhc2UyNy1tYWludAorODQ2MjMgODUxNjcyNDk4ZmU1MzRkYjZlNjU1N2JmMTE5NWExNjM2MGJhYzgwZCBweTNrCis4NDYyNCBjNDdmZjNhNTNhNGE1MWFhZTAwNmYzYTdhYjI2ZjNlZjhiMWRiYTY3IHJlbGVhc2UzMS1tYWludAorODQ2MjUgNTc1ODQ0NDI3YTk1Y2ZjMTQxNGZmMDA0NmRhODQ5YWQ2NzMyNGM4NiByZWxlYXNlMjctbWFpbnQKKzg0NjI2IGFhNjZkZjc3MmUyMzc4NDdhMzM5ZTFhM2VkZTQ2ZjkxNWJhODRhYjQgcmVsZWFzZTI3LW1haW50Cis4NDYyNyBmOGY2NmViY2Q1YjFlYjcxYTNjODJhZmIxZWFiNjk5MWVhYzVjNzBkIHJlbGVhc2UyNy1tYWludAorODQ2MjggZGM1OTg2ZDBlNWE0NDMxNmMyNzJjNzgzYWQxYTNhYjRjYWVjZGYzMCByZWxlYXNlMzEtbWFpbnQKKzg0NjI5IGE0Y2ZkNWI1ZGY5NjY5NzUzMWM5ZTg1MzhmOGZlYjY2NzBiMjg0MjUgcHkzaworODQ2MzAgNDViMjNmM2Y3ZjZiOWVjY2Q0NGVkMjM5NTk4NmVlMGZkNDg3M2NhMiByZWxlYXNlMzEtbWFpbnQKKzg0NjMxIDI5N2Y2NmNiMzc2NDRhNDUyNzA4NzQ5YTQwMzY2MmFkOGQ3ODBlMWIgcHkzaworODQ2MzIgYjE4NjVjYTdiNjVjMTQ2Y2UwZmM1YTJiZTRlMWEyYmMzZDkyZTM1NyBweTNrCis4NDYzMyA3YzJlYjViNmNjNThjNjRiYmUwNzExNmQ4Zjk4NWUyZDY5YTdiZTMxIHB5M2sKKzg0NjM0IDg2MjdjM2VjOTcxMTI2ZjQwOTQ3OTFiZThkNTNmMGQ2NTFjYTg3NTMgcHkzaworODQ2MzUgYTJhZWRkYzE5YjY2YjVjMzhlNTIxOWFjMzFiNmU2ZTllMTI3YjhkMSBweTNrCis4NDYzNiBiMWNmM2Y3ZjMwNGNmMDg0ZGY0ZTE5OWUwMjJjZjdkZDdhM2E1MDk4IHB5M2sKKzg0NjM3IDEzMjIyNjZmOTYxMTVhZDUyN2MwNGVlNjExMGExZmJhNWJmM2M3MDEgcmVsZWFzZTI3LW1haW50Cis4NDYzOCA0NDFlOTRjZTQwODcxNmZhZDY3NWRkMDJhMTVhYzNmYjQ4OWI0MWQwIHB5M2sKKzg0NjM5IGNhZjBiNGIwNTY5ZWFkMDcyMjdiNjE0MjA3ZjJjYjhkMjU4NDk4MWEgcHkzaworODQ2NDAgYTU4YmY2NjcyNWY4NmYwYzBmODg0ZGJkYWNiMjcxN2Q1ZWFmYTFmYyBweTNrCis4NDY0MSBmOGM4OTZhZDc4N2Y4ZDA4YjM3MjVlNjRiNzFhZWIwMDUyNmI5ZmQ4IHB5M2sKKzg0NjQyIDJjNTQ3MjEwZjhjOWY5MmFlMWZhZGI3MjcwYzc3YjE2ZWMxYzI0OGEgcHkzaworODQ2NDMgNDYyZTBiZTNiNmM0NmY2ZjdmZTZiOTBhZTkxMTI1NzEyZDM3OGNiMiBweTNrCis4NDY0NCBjODg1NTBjYTBmYWZiNjRhZTU5OWNhZDA2NDA1M2E4ZTZjZjU4ZjRkIHB5M2sKKzg0NjQ1IDYzNjE5YjQyNWVjYWEzOTE0ZmZhNmNlOWQzOWNiMGVlNzFmY2MyMTkgcHkzaworODQ2NDYgZmVhODZjNWUzMzg1ODkwYTUzZTM0MGExNzBkNWExZjg0OWYwZDcxNiBweTNrCis4NDY0NyA3MWIyNjRlMWJiNzE2NDQ3NzkxMWIxOGM1ZDVlNmM2NThmZGYwZThiIHB5M2sKKzg0NjQ4IDk2NTllOGM0MDA3OWIyOWYyNmU1YmRkNDJiNzRlMjE4ZGJkZTdhMWIgcHkzaworODQ2NDkgYmE1NDA5NmI3YTQyODkwZWZhYjliOTE5Y2JkMGI3Njc2NjA0MTBiOCBweTNrCis4NDY1MCAzOGNhNjM1MTgwODVmNTc0ZTQwMTMyMDRjZDUyODM0MTc4NDYwODY3IHB5M2sKKzg0NjUxIGE1MWY0NjdmNWUxZTgwYjAwYTU5NDNiNDM1Njc2NjdiODMzMTdkZGQgcmVsZWFzZTMxLW1haW50Cis4NDY1MiBkMTNjMmY5MGMxNjlhYTc2YTJmMDY3NDQ3OTdjY2Q5OWE5NDQ4Mjg3IHJlbGVhc2UyNy1tYWludAorODQ2NTMgMDI3ZjgxNTc5YjRhMGFjMDFmNTYyZTVkYTY3MjU3YzE0YWE4MjU3OCBweTNrCis4NDY1NCBkNDkyNzE1NGI3N2I4ZjIzNjEwZGYxOWUxNDE2Y2JhYjY5OTM2ODU2IHJlbGVhc2UzMS1tYWludAorODQ2NTUgZmM3NmU4YzYxN2RjNDdjNzc5ZDBjMzk0OTc4YjI4YWIxZTI1MzJmMiBweTNrCis4NDY1NiBhZTQ3MDc5NDljYjI0NjA5MWZiYjYyZTYxOTA0ODNkNjIyNWU2ZjJiIHJlbGVhc2UzMS1tYWludAorODQ2NTcgMWI3ZWE0M2U1Yzc5NjdiNTUzNmU0Y2UzN2NlYzA5YWE1NDZiNTZiOSBweTNrCis4NDY1OCA2ZjE0ZjAyMzU5ZTgwYWIzOGZjZDI3NDVkYmMyN2FkMTZhNDBhMTU1IHB5M2sKKzg0NjU5IDg0MjE3YjJkOGMwYzA2Y2Q2OThmYTYwYzUyNmVlNDQyODdmZDlmMmUgcHkzaworODQ2NjAgYmVlNjgzY2FlNzFmYzc5ZGU5MGY4YjY4NmU0NjZkZWFmNzQ3MTBhMSByZWxlYXNlMzEtbWFpbnQKKzg0NjYxIGYxMjA3ZDlhOWIwN2MxMzZjYzkxMjJjMzFkODIxMmE3YzNkNzAwYzIgcmVsZWFzZTI3LW1haW50Cis4NDY2MiAyZGE1ZWNkMjI0ZmZlN2ZlNzQ5Y2M3YWYzYzBmNDYyOWI5NWUwZTZlIHJlbGVhc2UyNy1tYWludAorODQ2NjMgNWFiYWNkMzUxNDg1MWRhMjc0YTFkYTdhY2VlOGE1YjcxMmIxN2NiYSByZWxlYXNlMjctbWFpbnQKKzg0NjY0IGIzMDQzMzZlMGUzNWI0NzhkNTBkOWMxN2FiYjZiZGUzNGJiNWRlNTUgcHkzaworODQ2NjUgZWRkMDU2YzRhNDBkMjIyNTYwZDY5MTIyZWQ3MWRhODVhZmJiYTU1ZCByZWxlYXNlMjctbWFpbnQKKzg0NjY2IGI4ZTUxMjVlNmZiZDczNmIxNDM5MTM5ZWE0MTAzZWU2ZDRjNDc2ODMgcHkzaworODQ2NjcgNDU3YWE4ZGE0OTBhODc3ZmVhYzA1MmFmMDQ0MzZkNDcxMDA0ZDYyNyByZWxlYXNlMjctbWFpbnQKKzg0NjY4IGMyMGRlOTZhNDM1YWM2MDk1MDRlMjI3OTllMDZlYTk1NmQ2YjE0MjcgcmVsZWFzZTMxLW1haW50Cis4NDY2OSA5ZmFhODBkMDExMWYxZjMyZWViNDczZGE5ZTVkNTFlYjIyOWQyMWZkIHB5M2sKKzg0NjcwIGIzMTRhZGM5YmNkZWVhZGQwMWVhMzMwYjBhYzM3YmYyOTdmODhjNTMgcmVsZWFzZTMxLW1haW50Cis4NDY3MSAyZWVhODlkMDkzZTIxNDIxMDhhYWIwNzQwZjMwNzUwYWQ0NTg4MGVlIHB5M2sKKzg0NjcyIGM2NjY5ZjRiZjhjNTRlZGM1NTNjY2JjYzMxN2M2OGQwYWUzOGE5MGEgcHkzaworODQ2NzMgZDBmOWFmY2IwNjE5ZWViMDhlMjc1ZDU0YmY4MDUzODI4ZjY2YzAzMSBweTNrCis4NDY3NCAzNzhlMTU3YWMwMjVmYzk5YWVlYTk0YjYzMzI0ODlkNWFiNWVkOTk3IHB5M2sKKzg0Njc1IGI0M2Q2M2JmMGY3OGYxMDQ1NDNhNjhmMjk4OTFkZGEzZjdiODRlMzggcmVsZWFzZTMxLW1haW50Cis4NDY3NiAyMWFlNDA0NmU0NzEwMWQ5MmM2M2FkYmY4YzQ3ZWE2NWIxOWNjMTk4IHJlbGVhc2UyNy1tYWludAorODQ2NzcgN2UyY2ViNWQyOGUzMzkzMmZlMjE1NTY3MDg4NTBlNjE3ZjQ1N2YxNyBweTNrCis4NDY3OCAzOTBhY2Y1MTM0ZTk0YWE0YzIyYmQ2YzM4Mzc5ZDIxNWZlNTdlOGU4IHJlbGVhc2UzMS1tYWludAorODQ2NzkgNWM0YmU2M2NhYjRhMjJlMTkwNDhmNWY4YzNlYTIxODRjMmUzMDkxOCBweTNrCis4NDY4MCA5MzM5NzM4Zjg1MDRmODgzNzIwOWZkMmQ1Njk3YjIzNzY0YzQ1MmUyIHB5M2sKKzg0NjgxIDE2YTQyZDVmMjIwOWMzY2ExMzllYjg0ZTI3YTBjMzA0ZjYzMGFlNjcgcHkzaworODQ2ODIgOWYwZDY5Y2FlZDNiMmRlMTY4NThmYzA4ZmM1ODc3ZDc2ZDgyNzBkOCByZWxlYXNlMzEtbWFpbnQKKzg0NjgzIGUyNzAzMGUwY2NlZGE4ZTg4Nzk5ODdiODkzOTdhNjViMjY0NjA2MzggcmVsZWFzZTI3LW1haW50Cis4NDY4NCBjYWVjYjZlYmM4M2MyYTU2YTBmYzhhYzBiZDU2OTQ3YjIzMGQwMDlkIHB5M2sKKzg0Njg1IDI1Y2MyMjZkYzliZDRhYjBlMjRlNDgyNDZhZDczOWZmMDJjNDgyMjEgcHkzaworODQ2ODYgMjUyODk1ZDQ5MTU3MGQ1YTI3NDUyODA5YjU4MjcxN2JlNDA5YjI0ZCBweTNrCis4NDY4NyA5OTlkN2QyMTJmMTc5MmUwNGNkZjNhOGZjNjliMTE4MjU2MzY1MTNmIHB5M2sKKzg0Njg4IDU4MzA3OWRlMzdlMTM5MGE4MjM4ZDMxNDUxNmQyZTZiNTMwZTU0NjUgcHkzaworODQ2ODkgOTI2NTc1MmExYzgzZDlhNTE5ZDFiMTIwODkzODQ3ZWNmNWU2YzQxYyBweTNrCis4NDY5MCBlODI3YjliOGE3YjRhNWVlYTJjY2JhY2JlMGRhMGRhYWE1MDFkNTdhIHB5M2sKKzg0NjkxIDExNjdlMzkzYWE0ZDZhNGVlMGFhMzhjNzYzYzhhNjk5OTAzMTBkMjQgcmVsZWFzZTI3LW1haW50Cis4NDY5MiA2YWNjYzJjNjVjYjg0NzgwMWViN2RjMjQ3MTBlZDM5ZDBhODcyY2E4IHB5M2sKKzg0NjkzIDU2ODQ0YjcxNmNkNzU2MGFjMTAwMmZkNzBjMTYxMmU2MzRjNzZiNGQgcHkzaworODQ2OTQgNTg2YTQxMWNhYzdjNzBmODg4NmM4Yzc1MGNjZjliYjI3NDEyMGM4YiBweTNrCis4NDY5NSA0NzBhNTM2MDU3MGNjMDFlN2U1OWVlNDJkMmIzZDk1OGE4NjAwYTZmIHB5M2sKKzg0Njk2IGE2MDhmZTFlODZmMDA4MjI0NDdhMGRiNTRmNTMxMzk4MjA0MzA2YmQgcHkzaworODQ2OTcgZjMxZTBjN2MwMmUzMzNkNzkyMGUyMzNhNjg2NmY4Mjk5ZjRhMDBiMyBweTNrCis4NDY5OCBlMDgwZjExZmNhMTliMGRkMjBmYTlkMDc4NGJlMWRmYjRjNmIxNGIyIHB5M2sKKzg0Njk5IDE3NjQ3OTZlOWVjYTJkMzU1ZTRkZjdjMGNjZDMyYTZkNTg0OTIxOTUgcHkzaworODQ3MDAgZmU0N2VhODk3MmViZTZiYTNmODhiNjI1NmFjOTFkNzlhNWQ1NzNiMCBweTNrCis4NDcwMSA4ODdlZjM5OTc2ZDM5ZGQ4NWFmZDg0MTEyMWQyMjVlZGIyZTI2MzhhIHB5M2sKKzg0NzAyIGVmYzk5YTIwN2JiZTdkMmQ2MjhlYjY2NjIzNmIxY2JmYWE2NTkzN2QgcmVsZWFzZTMxLW1haW50Cis4NDcwMyAyMGEyMTUzYjBkZGE4OTVkNGIwYTRjMWJhZGEwZGM1NGE2NTNkNWZiIHB5M2sKKzg0NzA0IDFjZmFkNTVkZTViZDY2MGEyY2M3Mjk2ZWQ2MWVkZjNjZDU2ZjEyZTggcHkzaworODQ3MDUgNWM5YzA0YzI5YjJjMGJmYThjZWFlN2JkMzczZjIzYjQyNGRjNmUxNCBweTNrCis4NDcwNiBlYzkyYTlmZDc3ODA2ZjBhNzkxM2JlNzA5Mzg2YmRkNDRmNDI3OWJlIHB5M2sKKzg0NzA3IGY3MmZkMmNkYTM0NDJmNTk1MDQyYzQ0YTQwN2YwZWY3Mjc2Yjk2NzEgcHkzaworODQ3MDggY2I5MTMwN2Y3MDcyZWJhYzk0ZTZhYmUxOTkxODY3MDBhZTgzZmFlMyByZWxlYXNlMjctbWFpbnQKKzg0NzA5IGUwYTdiNjk2ODU1ZjQwYzk0OTMyZTk4N2NhNTQ1MTZjNjhiYzcyMmIgcmVsZWFzZTI3LW1haW50Cis4NDcwOSA1MjFlYjdmZWU2N2E3ODFjYWI1ZWQxZjUzOGRjYWM5N2JhNTc5NGQyIHB5M2sKKzg0NzEwIDFiZTg3NGNlNGVhZWYzMDQ0MjRjZThlY2YzOGE5ZDk3NmIyZmRhZGIgcHkzaworODQ3MTEgN2NmM2JmMDE1MGE0ZDVjNjAyNGNjNzA0NmQzNzdkMGQ1ZTJhOGU1NiBweTNrCis4NDcxMiAwMDQyNTIwOWM0NmVlMjU1N2E3NmFmYjhlYmNkMGQ2YzM2NDlkNmQwIHJlbGVhc2UzMS1tYWludAorODQ3MTMgNmViNGFmYmU3N2U4NTQ4MGMzNzEwODRmMWZiMjg3YTc5N2Q0OGVlYSByZWxlYXNlMjctbWFpbnQKKzg0NzE0IGQ5MDVjOTRmOWFlMWQxYWVkYzYyNzM0MTYxNWYxZWZmOWE5MDc0YTQgcHkzaworODQ3MTUgOGY4MWVkOGFjYmIwMjQ0NGVhNzQxYTY2NWU2NDhhNDNmY2E4YjQ0OCByZWxlYXNlMzEtbWFpbnQKKzg0NzE2IDYwMWEwZGVmZDE1YmIyYjk5MmFmMTQxMGY1Y2M3YTMxZGZmZDAwMDMgcmVsZWFzZTMxLW1haW50Cis4NDcxNyA3YzhmMzQ1OWQ5YWY4YTc2YzMyMTY0NzZiZWViODYzMDUwNjk0NmY3IHB5M2sKKzg0NzE4IDE3YThmNzA0ZjA3ZDg5NDJiNTdiNTJhZDI1NTI2MDE1NmZlNDBjYjcgcmVsZWFzZTMxLW1haW50Cis4NDcxOSBmZDY3MzdhYTg4ZGM0NmRmYTNjZTc5YTQzNjRhNzM1MWU2N2NiNzQyIHB5M2sKKzg0NzIwIDUzMzg1OGEyOTg5YTJmYjhkN2Q2OGEwMWEwMzgzOGVlMDM1YTEyMzIgcmVsZWFzZTMxLW1haW50Cis4NDcyMSBjNGU3MjMzZjU0OGRiZGU4ZmViNjY3M2VhNDM5NTk5YzM5M2UyYmZmIHJlbGVhc2UyNy1tYWludAorODQ3MjIgYjAwNzAwMWZjYTcxMGM1YzA2MGVlMTMzYWFlOGNjZTRjYjg5MDQzZiByZWxlYXNlMjctbWFpbnQKKzg0NzIzIGEzNTEwODYxMDVjNTNjZTE0MzNmNjZkNDdiZDkwM2U1ZjcyNjQ2ZTAgcmVsZWFzZTMxLW1haW50Cis4NDcyNCA1ZjNhNjQ1NjRjNTFhMTI4NjFiMGFlMWYxZGZlYjQxNDg4ZjM2MTkzIHB5M2sKKzg0NzI1IDU2NzE0ZTljNjNlZmI4NGM5YzU3MmRlZTk0NTYwYmExMzgyYWVkNTMgcmVsZWFzZTI3LW1haW50Cis4NDcyNiBjMzViNDJhOGRhM2ZiODZkODcyMTQ4MjA0ZjVkYTQ0ZTUyN2U5NjIzIHB5M2sKKzg0NzI3IGYzYjFlZWExMWNlMTk1YmIzN2MxOTQ2ZTFkOWQ2ZmEyMjEwNmVhYmIgcHkzaworODQ3MjggZjQzMjBlMTI0YjFmYjFmYjcwNWU4YjEzZTFjNDM3ZjBkODZjYzQyOCBweTNrCis4NDcyOSBiMGM5YTgyZTBlYzVhMzM3ZWE2NGYwMjliMmFkMzcyMWIzODFmMGJkIHJlbGVhc2UzMS1tYWludAorODQ3MzAgODUyYmIwNTIxNTZhODEwOWM4MWI1MTBlMDJmYjI5OTQ3MGNlMjBjMyBweTNrCis4NDczMSBlZDQzZWJkYTM1ZjJlNWRmMzk4NjRkYzM5NWI3Y2YzOGEyZjdhMmNmIHB5M2sKKzg0NzMyIDYzOTM5YWZhZjk4NGI0YTc5MGNmZWQ0YzUwN2VjMzgwN2EwNGVjYjcgcmVsZWFzZTMxLW1haW50Cis4NDczMyBlZjZmMDM5NzFmYjM0ODcwY2QxOWMwMjU3OWM5Y2QwNDkxOWUyMDg1IHJlbGVhc2UzMS1tYWludAorODQ3MzUgMzgwOGUzNzlmYzNjZTkzYTc3ODY5NGZhOTNiMjhiMWRiYmM0NDVmYSBweTNrCis4NDczNiAzNzc0ZjRkZWY3NTRmMWY4YTZiNWE5YWQ5MzEwMjk3ODVmMTVjNzJmIHJlbGVhc2UzMS1tYWludAorODQ3MzcgZmI5MGYyZmYxNzY0YjljZTgyNjk5NmVlYThkNmE5ZDllYTcxNjJhNCBweTNrCis4NDczOCA2N2VkNmQ0ZjcwYjFhNjZmYjkyNmZhYWFkNmE3YmIyNWY4YjBiMDYzIHJlbGVhc2UzMS1tYWludAorODQ3MzkgN2FjMGU2MDdjNGQ2NjJhM2JkNjQ3YzUyNzczZWMzN2MwZjM0ODQxOCByZWxlYXNlMjctbWFpbnQKKzg0NzQwIGQyZTU4MTk4OTMzYmU0OGJmMWI5ZmQxYmFlODE4MzExNmRiMjU3NTggcmVsZWFzZTI3LW1haW50Cis4NDc0MSA4ODY5YjFiODU0MzQ4YzQwOTZmY2VhZGNlMzg3N2U3Mzk0NDg5YWJmIHB5M2sKKzg0NzQyIDYzYmRhNzg5ZDczYjYzZjdhYTgzZTczNmUyMzQwOGY3OTFhNmY1NWMgcmVsZWFzZTMxLW1haW50Cis4NDc0MyBmYTk1MTBjNzk2NDgxYTBkOTQ2NTg5ODdkMzQ4MTk3MzRjZjU0Y2IxIHB5M2sKKzg0NzQ0IGI3ZTI0NGYzNGNjODBkMDNiNzUxYTY3MjU1MWE4NDFjMmQ4MmZlODcgcHkzaworODQ3NDUgNzZiOGRhZGEwNmNiZTZhOTMyNTAwYjg2NDk2NjcwM2QyYmUwODQwNiByZWxlYXNlMzEtbWFpbnQKKzg0NzQ2IDRiOWM4NTI2ZWE0Y2I3MGNlNDgwODA4ZjJhNjNiYzUzNDYwYWNlOTYgcmVsZWFzZTI3LW1haW50Cis4NDc0NyA2ZDI4MmI1OGQ5MGFhMmZkMzZhODEzMDk4NjU1OGQ2NzI5OWQ0ZTdjIHB5M2sKKzg0NzQ4IDJiYjRkZDJhZDViNTA3MDdhOGE5ZTE0MjFlMzIyZTQ2MmViOGY1OGMgcHkzaworODQ3NDkgN2FiNTkyMzNlODNmNjliNWIzNzFmZjcxMTg4OTE2MjA5Y2U5NWJhMiBweTNrCis4NDc1MCA5MjEwMjk1MDdhZDdkNDRjNDc1OWM5MDYwYmY5ZjNlM2Q1YzAzZmJjIHB5M2sKKzg0NzUxIGMxYjcwOTA3NmJmNjNhMWQxYjc1MjIyOWE2Nzk1MTVhN2I4NTk0N2MgcHkzaworODQ3NTIgOWNkYmE2ODY0ZWI2MGNhMmE1OTM0NDkxZDE5NWM5NTk4ZDk3MTY1OSBweTNrCis4NDc1MyBhM2VlODc3ZmVkODliNWVkMzdjY2I5OGQzMGM4NWQxZWVkMTEwZjUxIHB5M2sKKzg0NzU0IGIxODZhZmEzNzBlNmQxMDU1ZTUxY2ZiZGMyMTQ2ZTI1M2I2NDY3ZDEgcHkzaworODQ3NTUgY2ZhMTE5YzNlNDNjZmU4NzJkZDU1M2Q1MDUzOGJhNTIwNTI5NTU0MCBweTNrCis4NDc1NiBlZTk2N2YxYzczMWI3ZDAzNmZmMDQzMTVkMDUwMmNiZjg4NjE1MDI0IHB5M2sKKzg0NzU3IDBkZTgxNjQ3NTUzYmEwNGFiNzE0MTczNmU0YWYzMTc1MjBjOTFlNDggcmVsZWFzZTI3LW1haW50Cis4NDc1OCA5MDY0ZmM1N2QzZmE5MDdkMTEwMWZmNjEzMWJiYTUwNDlhYWRlYzZiIHJlbGVhc2UzMS1tYWludAorODQ3NTkgMWU4OWI1ZWUwMmY4NWVmOWIyNzA4Y2E0NDZhOWExNjQxODU2NjYwNiBweTNrCis4NDc2MCA1ODRiMWVkYTExNDE0NzYzYjBhZmFkMGI1YWIzODI5NWMzNjZjOTMwIHB5M2sKKzg0NzYxIDMxNGQ0MTZmNGQyM2UyOGM2NTZkZDU3NzAxZTk5NDMyNmE2YjU1MGIgcmVsZWFzZTMxLW1haW50Cis4NDc2MiBiMWU3NjZjNzlhMzY3NzQ5YzliZTNlYWZiNzIxY2VkNTUyODYyZGI5IHB5M2sKKzg0NzYzIGFkZDY2NDkyNGFlOTkxMWMwNGQ3ZjFmYzM5NTQ4YzdjM2UxYWY2NDYgcHkzaworODQ3NjQgYjBkMjZlOGQ4YTMzMGFhNTY0MjAzN2JiMTg5YTU3NGRlMmM1Y2FiYSByZWxlYXNlMjctbWFpbnQKKzg0NzY1IDJmODM3MDUzOGZmYmIxN2MzYWNhZDllNjRjZGJkMTBlYWVhODNjYzUgcHkzaworODQ3NjYgMjhlNmE0MWM1YmEwYjA0MmRjOGZkYjkwOTg2M2RhNTY4NzJiYmE2MyByZWxlYXNlMjctbWFpbnQKKzg0NzY3IDgyZGI4MGI2MGI4N2JiYWJmM2FkZjU4N2FlNDY1OGRkNzYyMTMxYjYgcmVsZWFzZTMxLW1haW50Cis4NDc2OCBkMGZjMzU3ODc0Njc0Njk0MzJjNDFlZDcyYjgyN2NkNzc3Yzk2NTllIHJlbGVhc2UyNy1tYWludAorODQ3NjkgMWU5MjJkNzFjZTRiZjZhMTg5NzNmNTMzN2Y4NmMzNGVmNzU4YWYxZCByZWxlYXNlMzEtbWFpbnQKKzg0NzcwIGJiYThmYTg4ZDE5YTIxYjkzODI5ZjVlZGMzYTE5NjE2NTg2N2M4NzQgcmVsZWFzZTI3LW1haW50Cis4NDc3MSBhNTlhZTkzODkxMzE5MzY1ODA2YWMwOWM1YzQ3MThiYzE4ZTAxYjIzIHJlbGVhc2UyNy1tYWludAorODQ3NzIgMjc0YTBiZjQ2ODcxZWYzYTU5MWYyYjkzYTMxM2VmYzgyMDY5ZGQzYiByZWxlYXNlMjctbWFpbnQKKzg0NzczIDQ0MTk5YWE4OTMyYjdkMTRkMDNhMGUwMzE4YTliODA1YTkwZGJiZDIgcmVsZWFzZTI3LW1haW50Cis4NDc3NCA1NTdlMjUzN2M5YWUyMzUzOGQ5ZGRiNGVhMWViNDliZGM0NTlkZmU4IHB5M2sKKzg0Nzc2IDMzMGQ3OWZjYjNkM2Q1ODYyOGY4Y2VhYjM1NTgxNTNjOTY1NGE0YWQgcHkzaworODQ3NzcgMGYzYjhmOTI4ZWMxM2Q4ZjkxZWM0OTBlNWI1MjRmZTkwYmE3ZmFhYyByZWxlYXNlMjctbWFpbnQKKzg0Nzc4IDNkMjJlZTY1ZTQwNzVhOWIzNmIzNzFjMmE0MzgxNTMzMWU0NWI0NjggcmVsZWFzZTI3LW1haW50Cis4NDc3OSAyYWQ4ZDdjYmNlYWJiMDE3MjA1OTEyODJmMTM1Nzc1YjQ1ZTViYmU4IHJlbGVhc2UyNy1tYWludAorODQ3ODAgZWExMjFmODczMWE3OGJiNTU1Y2E0MjUwYmFlZDRlZmQwYzhjZjNmMyBweTNrCis4NDc4MSA2ZmYwZWYxZmNiM2NkOThlNTFiMzM1ODc0YTg2ODJhYWU4ZWFhNGRmIHB5M2sKKzg0NzgyIDIwNWZmMmIwMmM3NzEyMGVlMjBiMTc3ZGMzYjc2OGJlNzQ2NDdmNjggcmVsZWFzZTI3LW1haW50Cis4NDc4MyA3ZGJmYzdlZjM5ZjJiNjM2ZDMwYTg3NjQ1MTMxM2Q5NzdjMThkODM5IHJlbGVhc2UzMS1tYWludAorODQ3ODQgNTU3MzU1ZTQ2YmE2MTlkZTUzNzYyZjc1MzBlYmQ0ZWQ3ZjllYTVjZiBweTNrCis4NDc4NSA3N2M4OWM4OWY2MGUxMTIyODlmZTc5YzQzZDk3YmVlMjU3YmJiOWU1IHB5M2sKKzg0Nzg2IDJkMDg0YWQ0NjhkYmQwMGM5ODkwY2E4MTQ5NjAyNzdkZjdlMmUzMzkgcHkzaworODQ3ODcgODIzNGQyNmIxM2MxOWVmNTY5ZDA0ODE4MThiYzBmZDA5NTNmYzk0NCByZWxlYXNlMjctbWFpbnQKKzg0Nzg4IDkxYTAwYjZiMTI4YmVkMGQwNGVjODNlNzk1ZmNhMmUwYjM2ZmE0ZDEgcHkzaworODQ3ODkgZWE4NDgzZjllNTVhYTY2MDkzMzIwYzJmMTQyMmE4NjU0Y2MwMTk4NyBweTNrCis4NDc5MCA5ZjU1ZmFhYTMxOTNhY2M2NzI0MmMzMjJlOWM2MzNlNDc4N2M3NmM2IHB5M2sKKzg0NzkxIGUyZGVjOWMwZDEzY2ZjYWJjMTA3YWM4NGJjNDNkOGZjYzkyYjExMzUgcHkzaworODQ3OTIgY2ZhZjBmN2VlMGMyYzkyZWMzMTA3YmQyYmRkNjI2Y2I1ZTE0N2YxOCBweTNrCis4NDc5MyBhNjBkZWVjYWMyNDI0ZWZkMGEzZWQwNGJjM2E1MDNjMDljOTg5ZDIyIHJlbGVhc2UyNy1tYWludAorODQ3OTQgM2EyOTYzYjZmNDQzZTg1MDE5MDhmYzcxY2YwMDgwM2JhNDU4MTk4OSBweTNrCis4NDc5NSBmYmU1ZDA4YTk4NjYxMzk5YmY2NTcxZTkyZThiYzllNjc3YTdlYTMwIHB5M2sKKzg0Nzk2IDY5ZWQ1ZWNiNTAyNmFkZGNiNTIyMzczZTdhZjVhZmI2ZmM2YTZmMWUgcHkzaworODQ3OTcgNDRlNDNiZWQ2NzRhNTRlNTkxMzg0MTg4MTFlMjQxNDgwYTllZjYxMyBweTNrCis4NDc5OCBlNWYwZmY3ZDdhMDZlZTkwYjNjNmRiOTkzYTlkYTVhZTFjYTgyYzhkIHB5M2sKKzg0Nzk5IDRhNGZiZTAyMjdhYTQ5NTI1ZmJhYTJiNWUzZDVkMDY2ZWFhZjM3YjMgcHkzaworODQ4MDAgMmQ4ZTQwODU5MzUxMmVjYzBkNWQwMTg1MGE4NjEzZTI4N2Q3NDJkOCByZWxlYXNlMjctbWFpbnQKKzg0ODAxIDIwYzQ1Y2RhZDljZjFlOGQ0MWU2YzVjOTIwNzZiOGFjNTEyMWFmOGMgcmVsZWFzZTMxLW1haW50Cis4NDgwMiBiMjc0YTkwYThlMmJkZmUwOWEwYTAwNTQzYzhjMzlkMDMwZWIxMzZiIHJlbGVhc2UyNy1tYWludAorODQ4MDMgYTQyZGI4ZjU0YmExNzA2ZDMxOGFkNzZlNWJiZmU3M2NhNDJlODExZiBweTNrCis4NDgwNCAxMjNmMzUxNGI0NWI1MjdiZjI2MjEwNzU1NzFlNDczNTJkYmIxNTdkIHJlbGVhc2UzMS1tYWludAorODQ4MDUgZGI5ZTYyYzI2NWZmNTBlNTkzY2IyZTQ2N2NkZjY1N2RjMmJlZGUxYiByZWxlYXNlMjctbWFpbnQKKzg0ODA2IDdmOTlhYzUzMDE0YTU0MjgxZjk5YmVkMWM5MmRlMmY0NzIxNTQ4MWEgcmVsZWFzZTI3LW1haW50Cis4NDgwNyAwZTk2ZjlmYTg0YTI0YTY5ZjVhMWNhYTRjODEzNGVmZmNhZmUyZTkzIHB5M2sKKzg0ODA4IGZlNWY5Y2M0MDc2ZWJiNzk2YmU3ZGFmYzljNWJlNDA4YTZlNTA1MmEgcmVsZWFzZTI3LW1haW50Cis4NDgwOSA4MGQxYzc3MzRkZjI1N2U0N2E5YzYxYmI4NGFhMTg4OTQ0N2Q5YTM4IHJlbGVhc2UzMS1tYWludAorODQ4MTAgMGUyOWFlNTFkOWJjNmFlMDNhOTdmMjQ2MTM0ZmFjZjA3Y2MxODU2OSBweTNrCis4NDgxMSA5MDVlZTllM2RhNmRlMDcxYTgxZDU3NWJjYTk2YjhhNTQ5ZTU3YzhlIHJlbGVhc2UzMS1tYWludAorODQ4MTIgZWRlZDBjYWVlNjIxMzMxMDAyZTlhZTU4YmRiZmRkZDAyYzljN2Q3OSByZWxlYXNlMjctbWFpbnQKKzg0ODEzIDUzNDg1M2JhOGNkMzZhYjVmMmNlZWM4YWM3ZTg2NWVkNWE5MWZhZjggcHkzaworODQ4MTQgMmJmMmE3YTRlMTdkNjQ1MmJlNzQwNTY2Njk2YzIwNjdjYjMwOTRmNyBweTNrCis4NDgxNSBkN2FlMWI5ZjEwYWI3YjY4MDMzZDg4NzZlOGQ2MjZiNTExNjNkZTQzIHJlbGVhc2UzMS1tYWludAorODQ4MTYgMmI5ZGVhMmEyZmZmZDYyOTEzMTZjNGFkOGExOWRkOTg2NDhhZDcwYiByZWxlYXNlMjctbWFpbnQKKzg0ODE3IDA3MWJkOGYzNTM1YWMwZGZjZWI0MDRhMjYzODBkNDk3OWJmMTI5ZDggcmVsZWFzZTMxLW1haW50Cis4NDgxOCAzOTc3ZGMzNDlhZTc5NDMwYTA3YjVlOTYwNGQzY2Y1YjFlMzc2NjRiIHB5M2sKKzg0ODE5IDkxNTFkNWZhYWUzZDZhODcyNGE1Yjc1YmQ3MjE2NWJiNjUzOWVmZWQgcHkzaworODQ4MjAgYjgxZThlM2ZhNWJiZTY3NmRiZGEwODRmY2VjOWJhYTBlMDQ4M2U5ZCBweTNrCis4NDgyMSBmNjQzZDUzYzUxYmQ4YjE3MmNlYjE5ODhlYmQ4YTUwNzc0MGJiMTlhIHB5M2sKKzg0ODIyIGU2MzNlM2E2YjI1NTY4ZmEwZWRiMzk1NDEyNzllZDM5ZDkzYjBjMGYgcHkzaworODQ4MjMgYjY5NTFiMDUyMTdiMjFhYWM2ODc3MGIzY2UzZjYyZjc2ZjQ1M2IzYSBweTNrCis4NDgyNCAzNTg0OGEzYjdkOGE1YWZiZDJhZDgyNTBiZjg2NGNjYzM0ZDU1MmNhIHJlbGVhc2UzMS1tYWludAorODQ4MjUgN2VmNWM2YmU3MjMyOTdmZjc3MjZkYzQzZDIwNzQyYWNhNGE4MTM4NiBweTNrCis4NDgyNiA5YWZmYjRkNmU5N2UyZDJlYWVlM2U3NWUwZjQyNTY0ZDE0NWYwYTM3IHB5M2sKKzg0ODI3IGM3NzlkZTY0NDA1YTkwM2Q0MThhZmMzMTdjYTY2NzBlM2YxNzljNmQgcHkzaworODQ4MjggZDg4ZmRmNWM1YjM3NjQyZTE0YjlmZDhmYzM4MGNlNWQzOGU0MGUyZSBweTNrCis4NDgyOSBiZWQ5NTBjYmQwYzAxZTUzMGRiNjkxYzBjNmJmMmJmNzgwNTgzYTQwIHB5M2sKKzg0ODMwIDViMDE4N2MwZDAwMjQ4MTJjZGMyMGYzY2RlODQ3Nzc2YTlhMWI1YjggcHkzaworODQ4MzEgYmNlOTc5M2ZiNTQ1MGVkOTFiNTVhYTQxZGRmZjc5Y2M1ZmVhOWJmMiByZWxlYXNlMjctbWFpbnQKKzg0ODMyIGE5N2QxMmU1NDY1Zjc5NTI5NzRkNGQwZWM4MDliYjBlMDUyODFiZTMgcmVsZWFzZTMxLW1haW50Cis4NDgzMyA2MWRmYzc5NjU3ZDczN2QyYzA3MmNlY2MwZmFlMDJkMWQyMGFlM2ZjIHJlbGVhc2UzMS1tYWludAorODQ4MzQgYzBkMzE2Nzc3M2E5NzMyMzhiYTY4ZDc5OWExYTIwNjA0MTYzMjBhYyByZWxlYXNlMjctbWFpbnQKKzg0ODM1IGJlYjlkMTc2NTAzZTQ2MmE0NTNiYTdmOTdlZjk3MmNlNjM5ZTFhYjMgcmVsZWFzZTI3LW1haW50Cis4NDgzNiBhZDYzZjk2NjkyM2M0MTAzNDE2M2FhYmYwYWZjODBjNzI2NjVmOGQ4IHB5M2sKKzg0ODM3IDNlZGMyNjM4MGU0OTZhYjBmM2I4NmFiYjI3Y2I1ZjY1MDQ4ZWFhZGEgcmVsZWFzZTMxLW1haW50Cis4NDgzOCAxZGViZmY0MmVhNDZkMTEzZWMwMGUwMmUxY2E0MDA2NDI5MWNiYTcyIHB5M2sKKzg0ODM5IGYyZWMwMTE1ZjhiMjAzZTUxZDQ3ODM1YzBjOTNhZTNhMzBlNzc1NmEgcHkzaworODQ4NDAgYTE2YjY3ZDRmMzAzMTZkMTBjYmM0MTMxZjZjM2ZlYWQyODRiZjg1YSBweTNrCis4NDg0MSBiNTc3NGIyN2IzZGJkOWFlZDJmODgxNDg3MDI1ZWZjYTM0OGRjNjkwIHB5M2sKKzg0ODQzIDk4NTA3MmNkMzFkMDNiODJmYmM4YjU0NTk3YTcxZThlNTkxNjBmMjEgcHkzaworODQ4NDQgZDY1N2U4YTYwMTI2NjQ5Y2Y5NTM2YzM2MmM0ZGZlYzg3MzczNWYzNCBweTNrCis4NDg0NiBkMTc3MWI0Y2QwY2JhODMyYWI3YTE0NDczNjY4ODUzODg2NzRlNWM3IHJlbGVhc2UyNy1tYWludAorODQ4NDcgMWJlOTUwZGNiYjFhNWY4MWFlY2YyYmI0ZmVhNGNhNTgzYTFkZDcyYyBweTNrCis4NDg0OCAyMzI0MTY3ZWMwMWQzYWEyMGY2MzUzMWU1YzQzOTY4OTlkZmQ1YzIwIHJlbGVhc2UzMS1tYWludAorODQ4NDkgM2YwMDA0NzM2ZDI4MzljYTQ0NjQ0MGM0YjBlNGMyN2U3N2NhOGY3YyBweTNrCis4NDg1MSBmZDVjNGNmZWQ3Y2QwYzNhZGIwYjM3YTViNjNkYmMzNDA5YmM2NzIxIHB5M2sKKzg0ODUyIGExNzdkZGRlNDVkMWI3NGExNjc3OWViZWU2ZGY0ZWUyMjE2MGZmZDQgcHkzaworODQ4NTYgNTc2MWY4ZTM1MmVjMjFmZGQ2ZTc2M2Q4ZDAyYzA2ZmY1NTgzMGQ4NyBweTNrCis4NDg1NyA2ODlhODEzZjRhZmMwZGQ5ZDk2NmJkMDg3M2M2ZmZkNGU1MGEwNWZhIHB5M2sKKzg0ODU4IGE4ODY5YWY1ZDVkMGNhNjc1MjY5ZWY1MWVmNGJlMTlmMWQ2ZGQ5MjYgcmVsZWFzZTI3LW1haW50Cis4NDg1OCA4MjU4OWE4ODllMDcwZmY3NzcxMWM3ZmNlNjdhNzFlMDI0ZWUwZWEwIHB5M2sKKzg0ODU5IGM0MzhmOTYzNDZlOTBmMWFiZWRmN2IzMTQxYWJkOTcxZWRhNTg5NjMgcmVsZWFzZTI3LW1haW50Cis4NDg1OSBlM2MzYzMwZjE0MDk4MDg4YTRkMWY5OGJlNWFhOGI3ZmQzOWNkOGExIHB5M2sKKzg0ODYwIGZhNDdhZjczYTY5MWUwMDZiZjcxMDVkN2U2NTQxMTM1NDc4MjYxYzEgcmVsZWFzZTI3LW1haW50Cis4NDg2MSBjYTM1NDJhZGVlMGRhZWJjMmNhZDZhNjQ3ZjY5YmNkZTE4ODZkMDQyIHB5M2sKKzg0ODYyIGUwNjQxZGJkYzhmNjJhN2U5YWI2Mzc1NWVhODQ3MzZiNmMxN2IzZjkgcmVsZWFzZTI3LW1haW50Cis4NDg2MyBlMzlhZDVkYzExY2ZlNGQ3NDAwNjNiMTk3ZGE5M2FjNzJjMjhhODE4IHJlbGVhc2UzMS1tYWludAorODQ4NjQgZGM0MjJkYWE1ZGFkZDBiZmM1NDI4Nzg0NDJkYTUxZGRjZTc3NDVjMCBweTNrCis4NDg2NSBhNDMxYzQ4YWQ0MmIxYTE5ODMxYWE1YzFkNDVhNGM4OTk2ZTRhODE3IHB5M2sKKzg0ODY2IGY3N2NiOGQ3NmU5OTE1N2E0MDIwM2E0NGRlYjZmNTFiMjdkYWRkNjIgcHkzaworODQ4NjcgY2QyZWY3NTI4NzM2NWI2ZTlhNTU0Y2UyY2NkNmNkOTI1MTc0OGZkYyBweTNrCis4NDg2OCA5MzhkODQyNTdkMTEwMjYwZGNjMTI2NjY1NmNhODFkN2MwYzZiNDljIHJlbGVhc2UyNy1tYWludAorODQ4NjkgYzg3ZWQ2ZjU4YjgzMDk4ODFmMTE0MjAwZTg3ZTFiNWNkMjVmMjk3MCBweTNrCis4NDg3MCBkZjM5YjBiYzQxMDY3M2I1ODE2ODJjNmVjMWU0OTNiMTc2ZWIyNzk5IHB5M2sKKzg0ODcxIDAwNjQ5MGYwZTcxZmQ2NmVjNTFkM2E0ZDQ0YzIxZjMxNmRiZmFiYjggcHkzaworODQ4NzIgMDFkYmI4Mjc3MTc4ODk2MjVmYWE1MDc4ZjY4MTJlNzdlOWM2NmIzZSByZWxlYXNlMzEtbWFpbnQKKzg0ODczIDE1MTgxNzE3NzUxNDljN2NhZGIxYzUzMzJhYzM0NWRiNDE4NDEyNGEgcmVsZWFzZTI3LW1haW50Cis4NDg3NCBkMDYwNDc0ZTBlMjQ1ODU2NDFkYTQ4ZmZmYWVjOTlmNmJhMWRkMzdmIHB5M2sKKzg0ODc1IDJmMjgwNzI3YTMwN2Y2ZWQ5NmM3MGNmNDg1ZWU1NjE3NjJjMTY4OTcgcHkzaworODQ4NzYgMjg2N2FlOTAyZmEzMTQ3MzY0NjQzZmJhYjgwZjVhNGIyY2I4YjUwMSBweTNrCis4NDg3NyBkMzkwNDAwZDcxZjdiOTZlYzIzMWE0YzFmODI2ODI4NzZmNmEzNjJjIHJlbGVhc2UyNy1tYWludAorODQ4NzggYjQ5YWVlMzg3NzliYzBhOWRiMjY3MTU4Y2RjMzM0ZWJmOTkxZTYwZCBweTNrCis4NDg3OSA0YWEyYTIwYWMzMzViZjA1YTVhZDVmNWUyOWU4Y2QzMDgwZGVjY2Q1IHJlbGVhc2UyNy1tYWludAorODQ4ODAgMjllYWQ1NGMwNWFkODc3YWMxYWY4NWExMGQ4NGY4YWU5ZTI4ZTEzYSByZWxlYXNlMzEtbWFpbnQKKzg0ODgxIDJkYzFkMTg3ZWUwNGFlM2VkM2QxZGFmNzc0OWQxNjE5ZjhjNDAwOTMgcmVsZWFzZTI3LW1haW50Cis4NDg4MiA0NDlkMTA0ZTE4MzYyNzNhZWFlNWQ4Yjc2MGNlMTNlZDY4NWU0MmI0IHB5M2sKKzg0ODgzIDQ5ODFjZjBhOWNhNGNmOWUxNzdlOTNlN2EyNzNjNmM4MmEwNTZlMDQgcHkzaworODQ4ODQgNzc0MjVmMmQ3ZDc2NTk3NTc2NDkwODMzODE1ODlmNTExMzFhOGE2ZSByZWxlYXNlMzEtbWFpbnQKKzg0ODg1IDA0YjQ1ZDQ1MTA1OWY1MGYxZWZhZjMwM2Y2ZDk4N2Q3MzUyOGI2OWYgcmVsZWFzZTI3LW1haW50Cis4NDg4NiA5MjkxYWEzZDhkMzU3MjM3NzUyYjRiNDllM2JjYmU0ZjJlZjI2YzFiIHJlbGVhc2UzMS1tYWludAorODQ4ODcgZjNkY2IzMTRjM2UzMDJlNTU0MjJmODZjNDZlYzc2YTNhZTYwNmExNyBweTNrCis4NDg4OCA3MWI5NTk0MmMzYTQ5Yjg4OTIyZjkxODg4NjMwYjZjYmI4Y2MzNmVkIHB5M2sKKzg0ODg5IDlkYzg0NTIyNDQ4NjEyOTgxMjg5YTI1N2ViY2NjM2ExOTY0MTRhNTYgcHkzaworODQ4OTAgYjY5ODQyYjUwZTI2Mzg4MjhmMWIzNGIzNDZjODVjYTIyODhiM2I3OSByZWxlYXNlMjctbWFpbnQKKzg0ODkxIDY1ZjVlMmMzZjJkZDE5MTk4MGZmYTZkM2ZmYzk5ZGVkZTU3NDUwMmIgcmVsZWFzZTMxLW1haW50Cis4NDg5MiA5MjU4ODk4NmI3OGJkMjhhZGIzZDAyYzk0ODVmZTFmOTlhNDcwODkwIHB5M2sKKzg0ODkzIGU1Mjk0Y2EyN2FiZTJkMTIzMDQwYTNlM2QzOTZjN2RjZTE5OGIzYjQgcHkzaworODQ4OTQgZjdhNzZmYzk3YjIyMGRmMzI1OWM0ZDJlMTMzMDZhOWViMTMyMjRkNiByZWxlYXNlMzEtbWFpbnQKKzg0ODk1IDQ1MTEzOTMyMmExMzExOTVkNzAwMzFiYjMxNDEzMWI5MDdkY2I3ODQgcHkzaworODQ4OTYgY2Q1YjlhNzBhNjg1YmI3MzM5ODMzOWJkZTE4Y2MwODM2OWVhOTZkOCByZWxlYXNlMjctbWFpbnQKKzg0ODk3IDUwMWFlOTRlNWJmNjE1ODQwZGJjZjAyZWNmZDdiZWM2NTIzYjQyMjcgcHkzaworODQ4OTggNDRjODljNTk5M2M4M2ExODk3N2QzNmM4ZGUwYTIxMjQ1OWIxNjQ4NyByZWxlYXNlMjctbWFpbnQKKzg0ODk5IDBhY2U5ZWVmMTIwYmUxZjFmMWE0OTU0MmMwYTIzNzdkMmQ4ZDc2ODYgcHkzaworODQ5MDAgYTQ4ZTAzMWQ4MTc4ZmI4MGNhMGE5ZWMzMzZmY2FhZDE1YTc5YWIwMiByZWxlYXNlMzEtbWFpbnQKKzg0OTAxIDc4NWE5NmZjZDM0MGRmMmQ1OTRmYTUxN2FjNDFlMGFmNGVlYTFlZTUgcmVsZWFzZTI3LW1haW50Cis4NDkwMiBiMjllODU1NjAxNWNiNzMxMGExODU4NzBlNmZjOWFlMjIxMTQyNDE3IHB5M2sKKzg0OTAzIGEwNTQzMzA2MDk0MTE4NmUxOTk0YWFkYjA2ZWFhNjk1ZWQ5ODViYTAgcHkzaworODQ5MDQgNTM0YWY5MWYzODQ1NDA2MmZlMjZkYzcxNzgyZmRlZWQ2M2YzZGNmMCByZWxlYXNlMjctbWFpbnQKKzg0OTA1IDkzM2Q0YjViN2YzZDY4Yjc4NDU1YjkxOWE1YmJkM2ZjNzRmOTYwNWQgcHkzaworODQ5MDYgNzYwNTFlYjA3NDIyYzc4OGYzNWQzMmM5OGEyMjAwNzRlYWQ1ZDdkYyBweTNrCis4NDkwNyA4ZGZiZjY2ZjM2OWNmNWEyZTdhYTU2MmU3ZDg0ODhlMTc5ZTc5MzRiIHB5M2sKKzg0OTA4IGRkMzA4MGI4MGRkYTkxOTQ1NTdkY2YyMzRhNzliOTQxYmE3YmFkMzAgcHkzaworODQ5MDkgNDM3NGIxZWFlYWQxNzc2ZjViOTJkNjhiZDI4NjQ3MjFkODg2NGI5ZSBweTNrCis4NDkxMCAxN2VjOWVkNTAxMzNiOGJhZWRkYTYwZTI4MzIzYzY3NjRkYTE0NjIzIHB5M2sKKzg0OTExIDAzNjU4NTM4MmRlMTliYjk3ZjE1MTBjMDJhNzExNmY1ZjU2YTQwYTcgcHkzaworODQ5MTIgNGY0YmRkZGFjMjViMjNiNjUzMjRiNmRiMzdkODk0N2M5Njc3YmViNCBweTNrCis4NDkxMyA3NmZkNjhiYmExYTg4NWE0NWYwNzQ3MWRhYmJmYWZkNjJkZjgyZTI2IHB5M2sKKzg0OTE0IDhlNDI4YjhlN2Q4MTU4NmUyM2I1ZjkyZjljYTliMThkYWYxNGY0NDkgcHkzaworODQ5MTUgNmM3Nzc1N2QwODgxMTVhMDFjZGQyOTMxZjAwMmQ3MDY4N2EyZTMwMiBweTNrCis4NDkxNiBiNTU3MjUzNTk4YjFmOWNkMzgwMjAzM2IwMWY5ZDdiZTNlNzA0MTg4IHB5M2sKKzg0OTE3IGVjMDI4MDY3MDQ5ZGE2N2M3NTFkMjc5ODU4ZGI3MWQ3YmY2ZDQwZDYgcHkzaworODQ5MTggMmNkZGY4NzhlMzk1NTUzYjZmYWU5Nzk5NzIzOGExZTk1NDVkNGU2MiBweTNrCis4NDkxOSBjZjg4MTcxNDk5YjVhNzg1MGJlZWU3YWViZGE0MmZlZWRjMTU2NDUzIHB5M2sKKzg0OTIwIDNhNGFmYWE5NmFjMzMyM2MwZGM0NTczMTMxOTFmYWIwNGU1NzdlNmIgcHkzaworODQ5MjEgNDg2YzJkNmE3NTQ2NWQwMWY2MTZiYTE2YWM4YTUwZDZhYzdiMjlkNSBweTNrCis4NDkyMiBhODhkZmYyN2JlMWY3YjJlYjA5ZDA5ODA0YmY0ZDlmYTE0OWIyNDk3IHB5M2sKKzg0OTIzIGYzNWJkMDhjMTJhZWYyYzQ2YjRkYjc5YThjZmE3ZmRlOWJhZmMzOTkgcmVsZWFzZTMxLW1haW50Cis4NDkyNCA2YmQyNzZmNWQxYmNlNzk5Njc1ZjhjODExZjFiODI3OTgzZTJiMGQzIHJlbGVhc2UyNy1tYWludAorODQ5MjUgOTZkYjY0MDY3NGNiN2FhYTUzZWYwOTQxZDk2Mjc3ZjU0OTI5YmUyMCBweTNrCis4NDkyNiAzY2FjZTEyODlkZTQ4OGJhY2Y2MjBiYTE0ZWQ0NGM4NzVmNTE5NGI2IHB5M2sKKzg0OTI3IDM4YjBkNWQwZGQzMGU1MGE3MzAzZTRmNDNkNjVlZmRiMWNlZmFhNDUgcHkzaworODQ5MjggMGQwZjFkYjYzNDMxM2YzNjMxM2UxNGI5OWEzYjUyY2I2OGY4ZDg1YiBweTNrCis4NDkyOSAwMGU0Y2UzMWQ0MDQwZDVjMzRiNjU3ZGQxNzljZWE1OTY1NjgyM2QxIHB5M2sKKzg0OTMwIGE2YWY5YzdjOGU2N2U4ZTQ2Yzc5NzgwOWI4MTNjNzY4NTBhYzg4ZTggcHkzaworODQ5MzEgODYxYzM1Y2VmN2FhOWU1MjI2ZDRjYzJlYjFlOWViNTI5YTFjOTg0OCBweTNrCis4NDkzMiAyYzczZTZjZTZhNzU2ODQ2OGM3MzgzNmExYzcyNjNjZWJiMTY2ODIyIHJlbGVhc2UyNy1tYWludAorODQ5MzMgYmYwMTFlMzBmYzA3NjI3YjUyOGFiOGNmMTViODU0ZDQ5NzhhNmRkMSBweTNrCis4NDkzNCA0N2IxMGU0YTUxZDdlOGQ0YzBkZmY3NjRlNDhlYzJmYTc2NzNiYmU3IHJlbGVhc2UzMS1tYWludAorODQ5MzUgMzY0ZDZlZjdjY2FlNGNjMjQxNzdlZTQ1OGQ3ZDNjOTk5YzNkNDdjYSByZWxlYXNlMjctbWFpbnQKKzg0OTM2IGU5MDQyNzk4NDQ0MmNmNWI5ODliZGIzMDRjMGE1ZTMzZmFkMTVlNTcgcHkzaworODQ5MzcgNjAzNjc5ZDg1MzI5MzA4OTJhMmQ4ODdmMDU2ZjA4ODk0N2VlNjg5OSBweTNrCis4NDkzOCA3ZDQ1ZjUzOWRiOTdjODExZjJjNTc1ZjBlNmE0OTExMzdlNDBiYTUxIHB5M2sKKzg0OTM5IGIxZWM0OGI3ZmZkZmZlYjUyYWZkZjJiMjc1ZTg2NTJlZTc2MTMzYTIgcmVsZWFzZTI3LW1haW50Cis4NDk0MCBkOGJiOThlNDJjMmZmY2EzOGU4ZmE3YzY4ZmYzZTE1YWRjZGZjNTQ5IHJlbGVhc2UzMS1tYWludAorODQ5NDEgZjhjZTlmMzU5ZjNhNjRmOTFkZDI1YzZlZjExYTNhODM5NjBmZTVlNiBweTNrCis4NDk0MiBhMGUwY2I4OTNlMzFlMzIwY2FlYzc4MWFiNWVjMmQ3ODZjZWQzYzFkIHJlbGVhc2UyNy1tYWludAorODQ5NDMgMzM1OWQyZTBhOTY3MTcwOWJmZDYwY2UzZDAyNmQ3N2I0NWM1YmJlYSByZWxlYXNlMzEtbWFpbnQKKzg0OTQ0IGU1OWExODgyNThiMzQ4ODM4ZmY3ZDYyNDRjMDhmM2QwYjI1OTNlMzQgcHkzaworODQ5NDUgZDZkNjU1ZmRkZjIyYWNlY2RjNjljMTVjM2ViMzdjMmYyNTU3YjZkOCBweTNrCis4NDk0NiA0ODg5YTgxNmVlYzE2OWQ4YWE5NWRjZDJlYWI3NjMzZjU2MzgwYjE2IHB5M2sKKzg0OTQ3IGIxZjUxMzRiMDA0OWJkNjhlYWQ5OTVkNTg1YzJjYTMxZjNmYzk1YWUgcmVsZWFzZTMxLW1haW50Cis4NDk0OCA0ZWMxMjExNTZlZTllZjQ5MjcwZmY0MWQ1YzgzYzJiYzk4NGI4ZjBlIHJlbGVhc2UyNy1tYWludAorODQ5NDkgYTRlZThhNWM2ODQzNzI0NDVkODYwZWJhZjMwNTAzMzY4ZDU0YmY2MiBweTNrCis4NDk1MCA5YWQ2OWZjNGFlZjc1ZDFjMzAxZjg1ZTQwN2NhZDk4ZDg2NGQ5MGRmIHB5M2sKKzg0OTUxIDhjZWViNTlmNDU1MGFmNTFkYTQ3NDUwOGY2OGU5YTFmYmE3MjMxNjIgcmVsZWFzZTI3LW1haW50Cis4NDk1MiAwOGJkMWEwOGM2MmY3NWU0ZDYzOTNhZWRmNTM1MzE4MDQyN2NlYTVjIHB5M2sKKzg0OTUzIDJiOTMyNzc3NzgzMmEyNDRhZjIxZmY3MmFhZTg1ZDBjOTQwMzBkYjggcHkzaworODQ5NTQgOWUyMjE2NDIwY2Q3OTViMjliMzc4Zjg2NmEzMGE4OTZhYWVmMmE1YyByZWxlYXNlMzEtbWFpbnQKKzg0OTU1IGM1Mzc3MGIxNTQ2ZGFkNGI5Mjk5NTljZTM1M2M3MzIyOTJjOTYxZTMgcmVsZWFzZTI3LW1haW50Cis4NDk1NiBjOWVkYmNlM2ZjYWQ4YzZjZDJkNTQzMTAyYTFiZTcwYmNmYTE1NWM0IHB5M2sKKzg0OTU3IGUxYzhlYjM5MDUwNzAyOGE5MTAyMGQ2YjY5NzYyNDNiNTlhMTAyMmMgcHkzaworODQ5NTggMDVhNWY3MWMxYTc4ZjdkY2Q4ZDk5NDYwMzIxMDAzNGY2MmVhMmIyYyByZWxlYXNlMjctbWFpbnQKKzg0OTU5IDgyMDhhNDMxOTFlMjljOTI0NzAwYTkwODhiOGNjZTFjOTgwMTI5ZDYgcmVsZWFzZTMxLW1haW50Cis4NDk2MCA4YWM3MGIxMmNhNjFmYWUyMTQ4NzQwNjc0M2UxYTMyYjhmNDdmNzY2IHJlbGVhc2UzMS1tYWludAorODQ5NjEgYjNkMGRlYWY1MGU1MjMyYzZkOWJlYzc1YjQwNmQ1YmVkYjJjMzljYyBweTNrCis4NDk2MiBkNWZlMDQwZjRhNDhhMjc4MGZlMzMxMmQ5MzgxOGQ1ODgwMDgzNTgyIHB5M2sKKzg0OTYzIDZiOWY4OGRkYjRjZWU5MTQ5YTFjZmQ1Zjc5MDNmN2I0MTM4OTNmNzggcHkzaworODQ5NjQgZjJjZWVhYWFjOTM4MGI1NDIzZTJjNTNkM2Q5NjUxYTJhZjA1YWYxOSByZWxlYXNlMjctbWFpbnQKKzg0OTY1IGViY2Q4MTE1NThkNjdkNjA0NjdhMjI1MDBjYWYxMmJhZTI0ZGJmNmQgcHkzaworODQ5NjYgMzQ3NGNlZTljNzU4YTg2ZTk0MjdlMzFlMWY1NzM3Y2ZmZDViZmQyMSBweTNrCis4NDk2NyBkNTAwMWQ2Yzc3MzY4ZWZiZGFlZjMzNjI5YjE5MjI1NjMyMWM1MDcyIHB5M2sKKzg0OTY4IGY3MDNhNjQzZTZjZTA3YjhjMTk1OGZlMGE3NGQ4MWY2MjAzMWYxNWYgcHkzaworODQ5NjkgMjI1YTZkMWNmODExZjcwYTc0ODMyMTE4ZGJlNDE2NWE5NDk4M2UwMiBweTNrCis4NDk3MCA5ZWE1MDRkNDVlZWFhN2UxYmY0MjhmOGE2NDI5ZGJiY2FmMDU3OWM3IHB5M2sKKzg0OTcxIDk2ZTdlZTIzMmFiZjExZTJkY2I4M2FjMTdhOGU5NjY0ZTlkOGViMzMgcHkzaworODQ5NzIgZGZkNTU4NGViMWFjYjU5OWJkNDJiZWU0YTgyMjRjYmY5ZTk0YzYxNSByZWxlYXNlMjctbWFpbnQKKzg0OTczIGE2NzZhYzA2ZWFjYzA4N2Q2ODFjZDM3MDY3NzFjYWU4ZTIwODA4NWQgcHkzaworODQ5NzQgZmY5MmNjMzU2YzM1ODMxMzRhMmM1MzVkZjRlOGU2MTJkNmU4YTc1ZiBweTNrCis4NDk3NSBlZTE1Mjg1MmM5NGRmOTQ2NzQyZjY5MGZlNjJmYWFkOWFlYmI0ODY5IHJlbGVhc2UyNy1tYWludAorODQ5NzYgZjRhMWM3OTZiYzk4NzQ1M2U1NjhmNjJjNWJhNGI1ZWMyY2M2YTdjYyBweTNrCis4NDk3NyA2MzNjNmIxMWE1YTllNzg1MWFmOTcxMzY2ZmFjOTMxMmFjMjRmNTlkIHB5M2sKKzg0OTc4IGQ1NjBlZWNlMDg1N2YwNmMzZDBkNTNkOGJlNjg2Y2Q1MGZjMTllOGQgcHkzaworODQ5NzkgZTMxNDkyZjQ0MGM5ZThlNTFhOWJlMmI1YzNlMWIwN2YzNDA0Yzg2MyBweTNrCis4NDk4MCBhMGVjYjhlMmQ3NjllN2EzYzI2YWZmZWNhNTVjMDhlZTkwM2VkYzVkIHB5M2sKKzg0OTgxIDUxZDhmZmZjZDI2MGU4MGFhMjVkNTMxMTgwMDYyZjM3ZmNjNTg0MmQgcmVsZWFzZTMxLW1haW50Cis4NDk4MiAyMGYzNDVmYzAzNjExNGI5NGY1Zjk5ZmFlNDc2NDVjZjllODI5YTQyIHJlbGVhc2UyNy1tYWludAorODQ5ODMgZDA4OGZhYTM1NDU2ZWFmYjdlNjI1NDUzMjJkYjQxOWU0ZjhiYWY5MyBweTNrCis4NDk4NCAyZTViZGUzODNhNWM3NGFhMThmMmU0NGNhZjYwMWEzZGZkMmE5MmE2IHB5M2sKKzg0OTg1IDBjNzdkMDBmNGY4MjRlMjg4YjRiODE0OGJmZTE3ZmZkYzkyYjM2YWIgcHkzaworODQ5ODYgYWIzZDkyZmVhOWZkYTVlNWJmOWRlN2U3NTJlMDkyYWYyMTQ4MzE1MSByZWxlYXNlMzEtbWFpbnQKKzg0OTg3IDFkZWJjY2ZiY2JjOWE4ZWVkMDhhMzk1MDZjMGMwNjc3NzBiZGU4MTggcHkzaworODQ5ODggMjhkNDFkMzRhMmU2MTU1OTA1NTQ4ZDUzYjM2NjJhMzNkOWMyYjM5MyBweTNrCis4NDk4OSA3YWNhNDU4NDYxYWIyNzFlNzAzZmY4YmUxNTRjMzg2OTE4MjA0OGNiIHB5M2sKKzg0OTkwIDc5NTJjZmFiYmI4ODc1Zjk4NzRlNzYyN2RmNGFiZWE4YWVlOTdlODEgcmVsZWFzZTMxLW1haW50Cis4NDk5MSA4N2FmZTQ3NDI5YzU2ZDE3ZjQ5NTQ1NTBiZTcyODVjZDZlZmMyYTQ0IHB5M2sKKzg0OTkyIGFhNTZlYmI4ZmU5NDczNGEzMmYxMDljYzBlYTg1MGQ5ZTUxYzc4NjcgcHkzaworODQ5OTMgMjYwZGM3ZGUxZTg3YmU5YjVhYjdmZTNhY2EyZjFmYzgyMDRjOTk2NyBweTNrCis4NDk5NCAwMDcyMjhkMGU1Njk4NDYzMWU4ODAwZTc2YjgxOWUxZThiNjgyN2YwIHB5M2sKKzg0OTk1IDIzNTA0NGIzOWE5MjExYTU2YmI0ZDRjOTZjZGVlNzk4ZTE5YmViMzAgcmVsZWFzZTMxLW1haW50Cis4NDk5NiAxMmUwZGZmZWY3YmQyNDgyNWJiM2JkNzkzNWUzNDQ3NjZlMDdlMzc5IHJlbGVhc2UyNy1tYWludAorODQ5OTcgZjZhMGViNzMwYTliNzg0YmMwYjQ3ZjNjYTVkYzhkZDAyM2Q3OTVmNiBweTNrCis4NDk5OCA4Y2M0YmU2NDhhYjQ5MDZkZGI0ZDZjMWI2NWE2MTY4MTBkNzFiZTRhIHJlbGVhc2UyNy1tYWludAorODQ5OTkgMjYwZGMzNmMyYzg2MWVmN2JjY2E4OWVkNGU4Mjg1NzgwY2JiMWMyMCBweTNrCis4NTAwMCBiOTQ1M2Q1MDRmOGNhNGFlZmEyODVkZjRkMTNiMjRmY2YwOTRiZjJkIHB5M2sKKzg1MDAxIGIyNzhkOTNmOTU4ZWVjMTg0MzgzMDEwMDEyZWVmZTM4NGYwZTgyMDQgcmVsZWFzZTMxLW1haW50Cis4NTAwMiBlNWI3MDc5MzU2NmVkZGE1ZWU0YWVjZTUzNDcxMDI4NTYwMmU2NzdjIHJlbGVhc2UyNy1tYWludAorODUwMDMgYzllMjk5MjQ5MzIzODI1ZjYzYmJlZThhMDg4NzI1ZmMyMjIxYjZiNiBweTNrCis4NTAwNCA5Nzc0YzExZTAzZjZiMGI4ZDg1MzJiMTIwNTcxN2MwMmQ3MWU0MzU5IHJlbGVhc2UyNy1tYWludAorODUwMDUgNGNkMGVkZjBiMzU2MTk3MGRmYmE1YmQwYmViOTJiMzQzZjZmZDkzNSBweTNrCis4NTAwNiBjOWIwOGM1OGYwNjMwYjkxYzliM2Y4ODJhNTgzODk2YzJlMmEzM2MyIHJlbGVhc2UyNy1tYWludAorODUwMDggMGI0OGM2Zjg2NzFmZDRlMzBjMTk4YmVkY2Q1NTYyNGRiYzZhOGZkMCBweTNrCis4NTAwOSBjNTJmNzVjM2ZiYTJkODY0OThhMDUzOTZmMzJhNzkxMWMxYjBmOGI3IHJlbGVhc2UyNy1tYWludAorODUwMTAgNjUxMTE2NWU0ODMwZDhmZjY4NDZkNDc5OTVkYjdmMWIyZTM0YzEyNiByZWxlYXNlMjctbWFpbnQKKzg1MDExIGJjN2Q4ODA4ZjE5NWM5ZDI1MTQ3YzdhZjAzNDBmODNlOTEwMDJiNzMgcHkzaworODUwMTIgMjY1ZjcwMTc3NzJiODcxMTJmMDY1NjFlN2I1MWIzNjdiZWZkMjE5ZSByZWxlYXNlMjctbWFpbnQKKzg1MDEyIDQzZmQ5ZTJiNWU3ZDFmYzNjYmM0Y2ZjYzcxMTAxNmQ3ZjE3MmNkMDkgcHkzaworODUwMTMgNjNiYTdhNGU3YzEwMjIzMWFmNjczMWE1NGY2ODBkMjg3NTE5ZTVlMiByZWxlYXNlMjctbWFpbnQKKzg1MDEzIDQwOWQ2Yzc2YzMwN2U0MzBjZjIyNGZjOGU2ZTYxNzQ3ODE3NmExMGQgcHkzaworODUwMTUgNDAzYWYzNWY0OTQ4N2I5NGU2ODExMGNjNzczZTM1MzlkMTUwN2MyNyBweTNrCis4NTAxNiA2YzY4ZGJmOTMyZDA2ODRmMGUzZTg3NGVkNzVhMWNjMzU0NjhhZGM1IHJlbGVhc2UyNy1tYWludAorODUwMTcgYWM4YWEyMjVjNDE3NWFmZGFjYTMyODdhNmU2ZGQzMDNkY2RlZTY5NyByZWxlYXNlMjctbWFpbnQKKzg1MDE3IDI4ZThmZmIyYWNjYjY5ODQ1YjExZGJlOWU5MDcyNDUzOWQxODhhNWEgcHkzaworODUwMTggMjZkZmU0NGM5ZmFhNDU5ZjBkMGU3ZTAzMmQ5MTE4ZTE2ZWMyOGNlZCBweTNrCis4NTAyMCAwNWM1OGIzZDZkMzk0MWFhZDMxYzNhZTQ2MTRkNzViOWZhYjU1MTkyIHJlbGVhc2UyNy1tYWludAorODUwMjIgN2FjMzBkNThiMWQyMTZkODNhNTQzMDY0YTRhNGYyMGI3YTNiMzc2ZCByZWxlYXNlMjctbWFpbnQKKzg1MDI1IDJmYzczZDdjNzYyMmQyMDZlZTlmMzE5ZDQxZjFmYTBhOTgzNmQ5ZTMgcHkzaworODUwMjYgODg4MTI2MGQxZDE0ZmJkOWQxYWQxZDhmNGZkODZlM2ViMDNlZWQ0ZSByZWxlYXNlMzEtbWFpbnQKKzg1MDI3IDNmMGZmYzgxOTllYWZjZjAzMTFlOWM1MjBmY2Y5Y2IzMjhjY2NhYzkgcmVsZWFzZTI3LW1haW50Cis4NTAyOCBmZDVlNTEwMzUzMzViMzhiOWQwZGI0MzMxMWVhODhjZjk2NDM4MThhIHB5M2sKKzg1MDI5IGU5MzhlY2M1NTAwNTQ4YmE5NDU2NWRhNzgyMjA4ZjhmZTc3MTFjMTcgcmVsZWFzZTI3LW1haW50Cis4NTAyOSA1MmVmYjEwNDRkZTU5MzRmOTczMTk1NDU5OWFlNjAyZjg4MGZiYmVhIHB5M2sKKzg1MDMxIGZmNWQzZTVjNGJiNTk1ODgwYmUzNzhmMTg5ZGRkNjkwMzM5ODg4ZTAgcHkzaworODUwMzIgYWVkMDRiM2YwZmUzODIyZmY1Mzc0YWNhMjFhYWVlODhmZDYwMmUyYyBweTNrCis4NTAzMyA2YjQ5ZWExMWIxNTc3OTBiMTZmNjI2ZGQ3MmJhYWE5MzNiMDdmN2MyIHB5M2sKKzg1MDM0IDVhN2JiODVhNWQ5OWMzNTYzN2JjNDQzODM2NWFjZTY1ZTIzMGY4YWMgcmVsZWFzZTMxLW1haW50Cis4NTAzNSAxZGMyYjUwZDM0NGY4NWU2M2M5YjRjMTUwZDQwNTVjOTAwYmFhYWMxIHJlbGVhc2UyNy1tYWludAorODUwMzYgN2JkYTBhNjMyYjBkNDU1YzU0OTRlMTJlN2JkZWIyNDk3NTM1YTgwMSByZWxlYXNlMjctbWFpbnQKKzg1MDM3IDRkM2ZiY2Y2Zjk2YTBlODIzODg4N2Q1NjRlNTdkOGU5MjQ2ZjhiMTYgcmVsZWFzZTMxLW1haW50Cis4NTAzOCBjZTRhMjJmYzljYzQ0MWM5NTMyMDNhZTRlOTZhYjU0NThiMTI4MDAxIHB5M2stdHRrLWRlYnVnLW9uLXhwNQorODUwNDMgM2Q0OTBjM2EwMTllMjEwYjYzNGVmYmI3YTExMDRkODhhOTk2ZWUxMyBweTNrCis4NTA0NCBmNzZlZjFmNDYyNjYzNzA2NDA0Y2NhN2MxMmNjNmY5NDg0N2IyYjA0IHB5M2stdHRrLWRlYnVnLW9uLXhwNQorODUwNDUgN2RmYTk5MDBmOGM3ODg1Y2ZjY2M5YzBhYTlhMTQ5NmQ0ZGY0NDRhYSByZWxlYXNlMzEtbWFpbnQKKzg1MDQ2IGUxMmJhNDJmODYxZmM3ZWIwNTBjYzg0MjMwZTQxZDczODgzNWRlN2IgcmVsZWFzZTMxLW1haW50Cis4NTA0NyBlMzgyZmY3NDE3OTAyNjJlOWNiNGQ5ZjM3NWMxNmEwYTM3YWVmN2E1IHB5M2sKKzg1MDQ4IGM4ZGM0YjVlNTRmYmQ0ZTE0Y2Y1NjU1MmM3Yjk2OWRiZDc4ZTRhNDQgcHkzaworODUwNDkgM2Y0MjczZDMwYjM4NTI1MTFhMzYwMjFkNTY2ODFjM2YzNmI5ZDc2NiByZWxlYXNlMjctbWFpbnQtdHRrLWRlYnVnLW9uLXhwNQorODUwNTAgMDk4MTIzYTdhMDNjYjdiMWE1YzEyYjdhNGFiOTJhN2Q5ZTQ2YjZiMSByZWxlYXNlMjctbWFpbnQKKzg1MDUxIDRjNDhlYmExMjEyM2VlNTY3OTFjYjhmMDc0YTRiMzA3MDg1NDNmYmIgcmVsZWFzZTI3LW1haW50Cis4NTA1MiA2OTRjYjVkODY1MjUxNTBjYzFlZjM0NjRlNmQxYzA4OTQ2ZWQ1ZWY1IHJlbGVhc2UyNy1tYWludC10dGstZGVidWctb24teHA1Cis4NTA1MyBhNGIzOTk4YTdhZDQyZGE2MTAwM2ZlNTdlMDk0NzVlNjhhMmZhZWVjIHB5M2stdHRrLWRlYnVnLW9uLXhwNQorODUwNTQgZmFmZTg0MmUzMjAwY2I4YWQ1NzQ5MjhiMWY4MzUwYTcxM2VmMTM3ZiBweTNrCis4NTA1NSA0ZTVkMjAxZmYyOTQwMWIwNTg5N2ZlNTk5YjUzZGRjMzAxOWRlMTdjIHB5M2sKKzg1MDU2IDM1M2YwYzJiYWY3N2QyZGQ1ZjkwOTQ1NWNlYzY1YWVhMTI3MzlmYmMgcHkzay10dGstZGVidWctb24teHA1Cis4NTA1NyBjZWEzN2ZiMDNkYzBmNDlmZGZjY2M3ODE3NjM5OTdjNTQ1NTliMzMwIHJlbGVhc2UyNy1tYWludC10dGstZGVidWctb24teHA1Cis4NTA1OCA0NWY1NmUzMGFmYTU3NWYzMjJkMTM3NTMzMDRmNDRmNTRiNGRkN2JmIHJlbGVhc2UyNy1tYWludC10dGstZGVidWctb24teHA1Cis4NTA1OSA5NTIzZGJlMGI2NDk5ZTlhMTBmYjZiYzMxZTZkNWY4YTg4NjhjZGYzIHB5M2sKKzg1MDYwIGUwNjI4ODQ3NjVkNjVhZGY4NDkxZWYyOGQ3MzQ1M2U5OTc1OTRiY2IgcmVsZWFzZTI3LW1haW50Cis4NTA2MSAwNWNlNTg1ZjY0YzQ4OGE4OWE2MDE0ZGQ2MzdlNTViN2I3NTFkZTAyIHJlbGVhc2UzMS1tYWludAorODUwNjIgZTMzMmNkOTVmNDE0YWEwODljZGViZDhiNGJjNWNkNDRkYmJlY2FlZSBweTNrCis4NTA2MyA5ZGExM2U1NjBhM2E5NmRkNTRiM2MxZWFlZmYyYmJlZTUxOWFmMjU2IHJlbGVhc2UzMS1tYWludAorODUwNjQgYWZiMmYxNDRiOThjMjM2NTVhOGVkOGJhMTYxYzQ4ODkzOGZhYmU2NyByZWxlYXNlMjctbWFpbnQKKzg1MDY1IDQzYjc5ZDgwZjVhZWNlYWJhMzA3Y2FkOTg5NTc0N2EyMzI5YjRiMTggcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDY2IDdkOWJhZjY0OWYyZDhkN2RkMjQxN2Y5Y2E5NmI1NDhjNzVkNDUzNzEgcHkzaworODUwNjcgNjRlNDExN2Y3ODg3NTRhZmYwNDIzZGMwOTBhMGI4ZTA4YTEwY2ZlZSByZWxlYXNlMzEtbWFpbnQKKzg1MDY4IGQxYmVlN2NmNmMyZjJhZTVkZTU1YTlhOTFkNjhlNWZlMTY5MjUwOTYgcmVsZWFzZTI3LW1haW50Cis4NTA2OSBmYWQ3OGU4NmQxNmVjZDM1YmJiNTliYjdjZmRiNjhiMmU2YTE0NjcyIHJlbGVhc2UyNy1tYWludAorODUwNzAgZGQ5NGFjMmE0MmIxN2VmYWNkNTExZDc1NGMyNDNmOGQ0Zjk5YjUyYSBweTNrCis4NTA3MSA3ZTI3NWE0Y2Y5NDEwZDQyOTBkYmJjNGNkNDc4NGUxOWExYjY4ZmNkIHB5M2sKKzg1MDcyIGEwOGU0Mjc4OWU2ZDUxZDIyNDYzNTJkYWQ0OGZiYWU3ODgxZWM2ODkgcHkzaworODUwNzMgNDcyYTZlZWMxOTZhYmZjMTRkZDUwNDM4OWUzY2IzMjBlNWZkNmEyNCBweTNrCis4NTA3NCAwZjhjMmViODlmNDZkNWMwZmFiNzNiODcyZTkyZmNkMWFhMTQwZjk4IHB5M2sKKzg1MDc1IGRjMzgzMzk4NDczNGIyNDkzZWRmMjFjMjE4ZmI2YjYzMjZhMWI1ZDggcHkzaworODUwNzYgNmM4YWRjMjAwZWUwMmYxZDNhMDI0ZjQzMWI5ZWZkYjNiODI2NzdkNSByZWxlYXNlMzEtbWFpbnQKKzg1MDc3IDZjMWYxMGUwNzQ1NTY0MDdjYTk0Mzc2NWMzYjMzOWU0YzhiNGZjNmQgcHkzaworODUwNzggZmI3ZWUwZjJjNmY0YTA0N2E3MDFhMWJmNTA1ZTAzZDBmYjNmMzQxNiBweTNrCis4NTA3OSBjMTg0MjNmNGI5Njg4Yzg5YTA5ZmU2NDBhZTk1OWNmNTBkYjg1ZDNhIHJlbGVhc2UzMS1tYWludAorODUwODAgZDEyZDU1MGViZjM0NTVhYjg5MDFmZjRhNTE5ZmVmMDE5Yzk3NWI2YSBweTNrCis4NTA4MSA1NTIyYzZiMmFmODcyY2UxMGI0NDAxODk1NTBmZDk1MjFiMDJkZGRjIHJlbGVhc2UzMS1tYWludAorODUwODIgNGNmNzdkMTkzZjU3ZjVlMDc2YjFhMTk5NTVlYWJiZGVlN2ViYmQzNCBweTNrCis4NTA4MyBkYzQ1NTU2NDZlODA3ZDgyNmYyNjUwZDg5ZGU4OWQ2ODhiOTBkMjdhIHJlbGVhc2UzMS1tYWludAorODUwODQgMDZmNWUxOTA4NTVhM2ZkNzcyODQ4ODkwZGQyYzhiOTI0MTM4N2U3MCBweTNrCis4NTA4NSBjODY5ZWEwN2NkOWQyNjhjOWU2ZWM4M2ZhYzIyZTA4MmIwMjY5YmI2IHJlbGVhc2UzMS1tYWludAorODUwODYgYjNjN2U1MTYyN2ZkYzY5OTBiZGE2YWE2NTBkNmQwMTEyOWU1NDNmMiBweTNrCis4NTA4NyA3YmIwNTEzY2QwYjgyODkyZWIyNTdjZmU3ZDMwNjgzN2U0YzJmNDFmIHB5M2sKKzg1MDg4IDczNDg1Y2JkNmM5ZWI2ZWM0ZTAwYTA1YjY3MjY0MDhhMjQ3ZGQ1MzggcHkzaworODUwODkgNTlkZmIyMTM4M2Y4YmY5ZjZkMTZmZWE4ZTI5NTU5MjQ0YTU1ZGJmNCByZWxlYXNlMzEtbWFpbnQKKzg1MDkwIDBlZTIxMTNhNGZkZTYyMzY2ZGI2NzM3MjljYzUzNzUwNjAzOWY5MzkgcHkzaworODUwOTEgNzc4Y2I4ZTZjNjM4MzA0MDM0MWFlNDc3NmEwY2RmMWNjY2M5NDg1ZiByZWxlYXNlMzEtbWFpbnQKKzg1MDkyIGUxMmIxMDQzNTUzMDhkYmY3MjVhOTVkNWYzZTkyMzY1ODI1MjlhNGMgcmVsZWFzZTI3LW1haW50Cis4NTA5MyA3YzdkMWQ5NmUyYzMzNDE0YmQ0OWIxMWJlMDA1MjE0OWU4MDhmOWU5IHB5M2sKKzg1MDk0IGM2MjBmZTg3YzcwM2IwOTBmYzdlYTBmZDk0NzI5ZjI5N2YwYWM3M2UgcHkzaworODUwOTUgYWM4ZDljYWMzMDMzNWUzYTIzYzgxZmJlYWE4ZDQ4YzQ4MzUxZWVlNCBweTNrCis4NTA5NiAxOTFlZDJhZDU5OTdjMWZjNTZmYTIzNjkzNWU1OTU4N2I4Y2YyMzVmIHB5M2sKKzg1MDk3IDk2MWY1MzU0ZWI1NDFmNDQ1MGU1MGY0NTE4ZGEwNDMxNzhhYmFiM2IgcHkzaworODUwOTggODAwYWRkYzk4NTcxOWZlZTQxNjdmNzM3ZmRhNGE4MmY4NzAwNjY3MSBweTNrLWlzc3VlOTk3OAorODUwOTkgM2ZiNTgzYzhlOTdlN2Y2NDkwMjlkYzYwZTg2MTdhYzNhMGZmYTA2OSBweTNrLWlzc3VlOTk3OAorODUxMDAgZjRkMDQ3NDkxY2I0MmE4M2YyYTY5NjI3MGVkMzg3ODVjZmIxNDQ2YyBweTNrCis4NTEwMSA5NDEwOTBlZDk2ZGY0ZjA3YWY3ODYxODM1OWJmYWU4OWNmZjRlYWI4IHB5M2sKKzg1MTAyIDY0MzRjZGNlNzE1Mjg1MjNhOWQyZGQxMTNlMTQ0Mzc3YmQ1OTYzNWIgcmVsZWFzZTMxLW1haW50Cis4NTEwMyAwYjRiZjZjZGUxMWRlZTBkNDU2NGRiZDI3Y2Q2ZmFkMmYwMGE0MDRlIHJlbGVhc2UyNy1tYWludAorODUxMDQgMWQxNWI1NjdhNzRiMjgzZWIzZDZmOGI5OGQ5OGNjYzI1MGI0YmFjNSBweTNrLWlzc3VlOTk3OAorODUxMDUgYWY5ZGVlMTI3ZTNjMmI1ZDA2YTdiYTM5YmZlN2MzMzkyMzc2MjkzMiBweTNrLWlzc3VlOTk3OAorODUxMDYgYzRjNmQ4NDJkODJhMDE4NzI1OTBkMDJhMzVmZWQzYzZlNDQ2NjE5NiBweTNrLWlzc3VlOTk3OAorODUxMDcgMzRhYmUzNjkxOWU1M2E0YTIyYzQxYzFmZDA1OTY4MzJjNjI4ODQ2MyBweTNrLWlzc3VlOTk3OAorODUxMDggMTQ3MjU4YTBhZGY4NWNjNGJjNmFjYjlkZGJlY2VmNzJlYTA4MWRjMSBweTNrLWlzc3VlOTk3OAorODUxMDkgMjVlOGI3ODI3YzdkZjM5NmI0YWI0YWYxYmIyZGNlMTcwOTllYTU3MSBweTNrCis4NTExMCBhNDMwZjhmZWM0YTBmYzRkYWM4Yzk2YzdkODc0YTcyNWI1YWNkOTVkIHJlbGVhc2UyNy1tYWludAorODUxMTEgMDA3N2VlMzAxMzRjNmIzZDRkN2IxZjA2OTJiYjA5ZWZiOTI4NTA1MCBweTNrCis4NTExMyA2ZGRjZjc0MjgyMjdhMjI0ODUxZDc0YjZhZDIxZTkzMDM4ZGQwYTYwIHB5M2sKKzg1MTE0IDU5MzZlYzNjNGVjMDI3ZmY5M2ZkMGJhNmNmMDUwNzQ0ODU0ZWI5MDEgcHkzaworODUxMTUgMDFiOTZmNzhmYjcwYjdiZWFiOGY3ZTIxMmI4MWM0ZmQ2ODIwY2MxMiBweTNrCis4NTExNiAxYWRkOGU1ZjMxOTg1MThiMzIzZTc3ZjJhZmNjNDlkZWE5ZDQ0M2ViIHB5M2sKKzg1MTE3IDc0NmU5MTUwMTE5YWRiNzA4MjE2MDQ0YjEwMjQ3M2ZmMmI2NGRlOGIgcHkzaworODUxMTggZTcxMGU3OTJlZjJlNzZiNDkxZmY2MDRjOWNjYTBhY2M5MWZlMTcwYiBweTNrCis4NTExOSBlZjE2ODY4OGFmMGE5NmY4MTVkZDI3MWIzMTYyM2EyOWZiNWZiZjg3IHB5M2sKKzg1MTIwIGE5MzQ5ZmQzZDBmN2JjYWVhMTU2MGFmYTRjNWNkODkzMzAxZjA4YzYgcHkzaworODUxMjEgZWE0NzIzYWFjNDc4ZjRiZDQ0OThiMTJhM2UyYTc4YWFjN2UyNzJhOCBweTNrCis4NTEyMiA0MDMzZjgzYzJkZjE4ZDk4ZmEyNzZlZjM1N2FhMjNiOWNhYzA5ZTA3IHJlbGVhc2UyNy1tYWludC10dGstZGVidWctb24teHA1Cis4NTEyMyA5ZmUxZGNlMmJmYTQ0NTA2Mjk4MjIwYjViMjgzM2YyOWFhNzFjYzczIHJlbGVhc2UyNy1tYWludC10dGstZGVidWctb24teHA1Cis4NTEyNCBkOTU3M2UzNjI0ZWMxMjIxZWY5ZDlkZWUxYTZmODljNTdjZmU2ZGZlIHJlbGVhc2UyNy1tYWludC10dGstZGVidWctb24teHA1Cis4NTEyNSA3YWRkNDViY2M5YzY3MmMzODQzMjYwYzkzNDcxOGYyNmVhN2JjYzBiIHB5M2sKKzg1MTI2IGQ3ODdlZjlhY2I3MjRlOGM1OTc0OTc0ZTBhN2M2Y2RkNjQxMzhiZDUgcmVsZWFzZTMxLW1haW50Cis4NTEyNyBiOTlmNTI3ZTBkNzdjNzAzM2VjMWRlNzk4YzM1OGQ2MTcyZDU5ODljIHJlbGVhc2UyNy1tYWludAorODUxMzAgOWYyN2Q3MmJmNWRmODkzMDhiZjQwYzY4MmE2MTllODljZGE5MzhhOSBweTNrCis4NTEzMiAyODJjNzdkYjNkMzg5YmQ3MzQxYjRiZDZhOGM1YzA4NTgwOWQ1ZTdmIHB5M2sKKzg1MTMzIGNiMmZiYjVlNjQwOTY0ZTdmN2RlNmRmMGZjN2U0NDk3N2ExYTkxZDYgcmVsZWFzZTMxLW1haW50Cis4NTEzNSAwNGY1M2NhNDE1OTZlZTgwMTAzOTMyMzA3NTgxMjYxZWRmNDVhZmFlIHB5M2sKKzg1MTM2IDg3ZjRiMzI5MDVkZjEwNTBlZjBhYzg2NWY1ODRiNGRhZjUzMjA5NGMgcmVsZWFzZTI3LW1haW50Cis4NTEzNyA1OTc4MDRiNDExMjU5YjhjMGY1NjU4NDlhNjQ5NGNlMWM2ZjdhM2FlIHB5M2sKKzg1MTM4IGRhZWNlN2EyMzRkYzkxYTgxOTA2NDM0NTMwOThiMGFkNTE2ZmRlYjMgcmVsZWFzZTI3LW1haW50Cis4NTEzOSA1OWRlMjI1YTE5Y2Y4YWM1NDdhMGNkYmI0OWE5ZmQ3YzJlMDY4NTI1IHJlbGVhc2UzMS1tYWludAorODUxNDAgYTlhMzBjZmI4OWE1ZDM0YmY4NmY3MDE3MDYyY2ZiYTk1MTU4OWY3MyBweTNrCis4NTE0MSA2ZjEzM2U4N2E0ZjhiMWVlZTA4MDlhZDU1YWVmZDU4MzQwNzBlMzg3IHJlbGVhc2UzMS1tYWludAorODUxNDIgMTVjMzY3MWMxNzgzMmQ5YWY5YjE3ZWUxOTg2OWZmZmE5OGM2NTIxMSBweTNrCis4NTE0MyA5YjVlNmE1N2FiMTA1NDI5MWU3N2NlNTEwOGUzMTE5YmY5NmQ2MWIxIHJlbGVhc2UzMS1tYWludAorODUxNDQgMmY2ODMxY2QyNDFlZDcyOTE3NDk4YjBkOWI1YWQxMGEyY2M4YjU0ZCByZWxlYXNlMjctbWFpbnQKKzg1MTQ1IDA2MjJkNGQwOGFmMDI1ZjI1MWI2ZmZlNmJlNWRjMGNiM2QxYzRiYjQgcmVsZWFzZTI3LW1haW50Cis4NTE0NiAyZTY4NDBjMGMxMjY2YjQ2MDZlODU0NTg2ZjdmMmIyOTEwZDRlNGJjIHB5M2sKKzg1MTUzIDk1MjU4YTZhMDY4M2U2YTU0OTVjZDBkMTU0YmZmZWVjZDMwYWZlOWMgcHkzaworODUxNTQgMzQwZDFiZjU5NTFlMTA4YjNmZDAwMzk5ZTUwZWMxM2UxNjIyMjg4NyBweTNrCis4NTE1NSA0NzFkYmQ5MDZhYWQwMTFkMjRkZDhiMjRkMzJmNGIzM2Y4MDFhOWNjIHJlbGVhc2UyNy1tYWludAorODUxNTYgOTFlNjIzODkwYjk0YzFkZTA0MmY2NzAwODQ1NGJkMzMwODIyNWZjNCBweTNrCis4NTE1NyBkZTQxOGQ5ZGQ3MzMxYjYzMjgyNWQzOGZjNjc4NzE5MWE4ODExMGE5IHJlbGVhc2UzMS1tYWludAorODUxNTggY2U0NzVkMzViNTBmYzYzNmU1MmEwNTVlZjUyNzk5MDI1MDU5MDMwZSByZWxlYXNlMjctbWFpbnQKKzg1MTY5IDdjMGYxODM3ZThjYmUyNWQ0N2IzODE3NWNhMzM2MGYzZjZhMjAxODYgcHkzaworODUxNzAgYmViZTVlMzU2NjFlMjA3NmVhN2ExMWE0Mjg2Mzk0ZjA1ZWQ0ZGZhZiByZWxlYXNlMzEtbWFpbnQKKzg1MTcxIGE3NDhiZmNiNjk3MzNjZDlmZDBlOTM4Nzg1N2IzNDYyZDkzYzBlMGMgcmVsZWFzZTI3LW1haW50Cis4NTE3MiBkZTdjZGI3MjYzNTAyYjc0Nzc4NjRjOWRhYjBlNzBjZTJjMDVhYmVmIHB5M2sKKzg1MTczIDBjYzNmZjgwMjBhZTY1Yzk2Y2QzYmNkMzU3YWVjMjhlOTBiZjVmMjMgcHkzaworODUxNzQgNDI4MzE0ZWViMmM3NjNiOWNjYjg3YzMwZDY0N2E1N2Y0YjhiYWRjYiBweTNrCis4NTE3NSBiYjVlMThhOWJkZTNhZTIyN2MzZjFkMDJiZmFmZDYzOWIzM2Y3OTRiIHB5M2sKKzg1MTc2IDhkZTUzNWRlZjEyMjJlNGI3NjVmMDI5NDhjZDMxZDQxMGMxNDUxMGEgcHkzaworODUxNzcgOTA0ODgwN2JlODNhYmI5OTkwM2U1NzM4MDg0MTBiYjUwMjU4ZjhmYiBweTNrCis4NTE3OCBjOTkwZWI5YjYwYTllNDc5YjFlZjU4NzNiZmI0Yzk5ZTI0MGZmOTNmIHB5M2sKKzg1MTc5IGVmNWM1NzIxN2IyMDNlYTc1MGNiOGY0YmY1NTUxZmNmMTI1MTJmODEgcHkzaworODUxODAgMTIxMmU1MDBhNTg1MGU5NDQ0MTEzNGFmMDVkMWY1ZDUxZGFjZmQ2MCByZWxlYXNlMzEtbWFpbnQKKzg1MTgxIGYzYTcwZDk5ZDdlMGZiNWNhNWI2ZDA1MTJmNDdjODdiZjgwZDkyOGYgcmVsZWFzZTI3LW1haW50Cis4NTE4MiAwNzBhOGY2NjQyMjBlNmM1MzhlNThhZDc0ZGNkMzQ4YjU2MmIzMThhIHB5M2sKKzg1MTgzIDM5NGUyNTM4MmE1OTIzNmI3ZDU0OGI0YWMzYzA5ZWZiYzFiNTFkMzEgcmVsZWFzZTMxLW1haW50Cis4NTE5MyBkZWMwODc4OWE5YjQyMzNmNzMzZWYzYjE1YjhkZTk3YzY4MjJhZTk0IHB5M2sKKzg1MTk0IDBmODcwODViMjkwZjQwNjBmYTgwZDlhZmQ0ZWQ2YjlhM2UyMThmODIgcmVsZWFzZTI3LW1haW50Cis4NTE5NSBiOWUyNmIwYzQ2MTc5ODc5NWFjZjRjYWZlNTMyNGRmYTc0NzhhMGE4IHJlbGVhc2UzMS1tYWludAorODUxOTYgOWJiZDQ0OTg2NThlZTM3MTJjMWEzNTI4YjYzZTBiYTk4NjRmNjQwZSBwZXAtMzgyCis4NTE5NyAzYmIzZWU2ZTYwZTBhODIyMTliODkyNmQ2YWQ5YTNkZTliYmEyYzZmIHB5M2sKKzg1MTk4IGJhOGNkMjAwN2QyOTIyZjU0ZWNkMDU1Y2Y1NjljMzBkMjE5OGVlZDAgcmVsZWFzZTMxLW1haW50Cis4NTE5OSAxMzlkZDRjZmI4MGY1NzhkNjUzYzczYmFhNWIzMGFmNTRlODM1OGQ5IHB5M2sKKzg1MjAwIGY3YzkxMDdmN2FiZGUyZjUwN2FhZjc5OWM1YzAyMWU0MGUzNjIxZTQgcmVsZWFzZTMxLW1haW50Cis4NTIwMSBkMWUwY2Y4MThhZDI5OWZmZTY0NWFiZTlhMTJiOGNmZmY1MGZmMWM5IHJlbGVhc2UyNy1tYWludAorODUyMDIgMmMyYmExYjMwODIzZjIwOGQ2MGEzOTQ5MDA1NzNmYmU3ZDAyZmYxNCBweTNrCis4NTIwMyA5NDVhNTVkNGU3M2VmODI1MTQwNzNhZmI2M2E5YmQzODVkYWY5ZGU0IHJlbGVhc2UzMS1tYWludAorODUyMDQgZjExZGM5NDA0ZDExODYxYzJjMTFmZDQ1MDI4NzY3MGNmOWRhY2I0OSByZWxlYXNlMjctbWFpbnQKKzg1MjA1IGFkNDFmYmYzM2UzYjk4ZDRkN2IyNjg1MzE0ODc2MGY0NzQ2ZjdjOWQgcHkzaworODUyMDYgMzJjMzJiNzBhYTMzYmIzNDA2YzIwYzhiNDI4NzcxNjI3MTNmOGY5NyByZWxlYXNlMzEtbWFpbnQKKzg1MjA3IGUxZjZjZTgzNmZjNTMxN2ZhMzkwNWRjZGM4NDM4NjdlYzUzZWIxNTAgcmVsZWFzZTI3LW1haW50Cis4NTIwOCA5ZWI5ZTNmNjZlM2FkOGZlYWZmZGQ1Zjc1NmY2ODhjZTA2ZjgwNzNhIHB5M2sKKzg1MjA5IDhiZDBhMDYzY2ViOWNlN2E5MTQxMWViMDM1ZDJkZmYzZmM1MTZjZjEgcHkzaworODUyMTAgYjc3ZTkxNDQ1ZDliNzFmMWE0NDE5YjZmOWIzMjZlZTQxZTM0OTJkNSByZWxlYXNlMzEtbWFpbnQKKzg1MjExIGIzMzRlYWFkYjUwOGNlZTI0ZmVhZTEzNTliYTE2NzYyOTg3ZjE1NmQgcHkzaworODUyMTIgNmFmN2I0MTAyZDc3ZGNhMTMzOTc5MTE2ODEyNmVkYzQzZGM3ZTdlYyByZWxlYXNlMzEtbWFpbnQKKzg1MjEzIDM2MzNkOGZlNTU1MDZhOWEzZDg3MTVkZWJlNzUwYWE0MTY0YzlkYzEgcmVsZWFzZTI3LW1haW50Cis4NTIxNSBkMTYxZjhjOTY0ZWI4YWI2YWRlNGM1NGY0YjcyNTM1Yzk4OGE0YWM0IHB5M2sKKzg1MjIwIGMyOGZkZWVlYTc4NjA4ODg5OTU4YTllMjQ2NDRkZWZhNTAxNDJlOGQgcHkzaworODUyMjEgNWYyMGY3ZjE1ZWRmNzA0NWQ5YmYzZTgyYTY2ZGMwYmQ4MWNjMjZiNSBweTNrCis4NTIyMiA4ZmU4YjI4MTM1NmMzZGIzYjg1MzFlMTE2ZTg2ZWQwYWM2MzM5MDYxIHB5M2sKKzg1MjIzIDc1M2JmMjNlNDVjNWJlOGMyMzdkYTJiYmY1NGU0MGE4YjYzYTZhMTUgcHkzaworODUyMjQgYjA2NWIxOTQwY2JkOWZhM2NlNjYzNDZmZjYzYmU5MzA1NzYwOGFiNCByZWxlYXNlMzEtbWFpbnQKKzg1MjI1IDEyYzZkYTVhY2Q3MzA2N2M5MWQxNmM4MzdjNWU0OWQ2ZmZmYmM2M2UgcmVsZWFzZTI3LW1haW50Cis4NTIyNiAwOTgxNmZjOWNkZTU1N2QxMTZlYjJhNmMzOTg1MmU4OTU2NGM2YWM1IHB5M2sKKzg1MjI4IGZiODI4NDBmMGU3MGJlY2Y3NWExMmEwOWZhOGZlY2JjMTdkYWIxN2QgcHkzaworODUyMjkgOTk4ODkwY2ZmMjA1ZjMyNDVmN2RmMGYzNjQ3ZDVjNWQwM2MzNDZjNCBweTNrCis4NTIzMiAzZDQyNTBjY2NjZTkxODI2NWM3YTRkNTBlYWZhYTRhZDdhMTJlMjE4IHB5M2sKKzg1MjMzIDc3NjA5NWFhMDU4ZDFlMTA5M2E0MjgxYzZjZmIzNjM1Mjk0MGQ3MGQgcmVsZWFzZTMxLW1haW50Cis4NTIzNCBjNmRkYmZiN2FiNDM4MTk1NGY2YWIwYjYwY2I2NGFiM2MwNDI4ZGQ3IHJlbGVhc2UyNy1tYWludAorODUyMzUgNzliYjdjYWU2OWJlY2I5NjRlMDE4ZDc2YzgwY2RmNzE5MTBjNWQ2MSBweTNrCis4NTIzNiA3NTllNWQyNzViZWIzOTlhMWNiMmIyZDdkNjg4MTIzYzJhYjkwMjYzIHB5M2sKKzg1MjM3IDY0Y2EwMWVjMTcxNWZiMzZlMTgzNzM2MmQ3MjU3OTAwZDUxNDAzNTUgcmVsZWFzZTMxLW1haW50Cis4NTIzOCBjZDczOTE3ZjI0NzgzODY2ZWZlZjRjMTA5ZGEyZDI4MDE4MDZlMmQ5IHJlbGVhc2UyNy1tYWludAorODUyMzkgMWM0MTc4MTFlNTA4Zjk5ZTg1YjFkYzQwZTRjNTY0YmRmOGI2ZWQ4YyBweTNrCis4NTI0MCA4YmNiZGQ2NzMwYTc1NzM4Y2QwNTFkMzlhNjRmZDgwZTU2NDYyMDRlIHB5M2sKKzg1MjQxIDdhMGI0MWYxYzczYjg1MmFmNGNmNWQwOTExN2VlNmM0OThmMzhjZWUgcmVsZWFzZTMxLW1haW50Cis4NTI0MiBlZWRiZTVlYTQ0Y2IyMTU5M2RhYjNiY2RmMzE2MTc4NjBmODg4MDc3IHJlbGVhc2UzMS1tYWludAorODUyNDMgZWI3ZDY5ZDg5NjUwMWNiOTZlMTY0YTBjOTIxMTcyZTQ4YjBjOWM4NiByZWxlYXNlMzEtbWFpbnQKKzg1MjQ0IGE2OGY4NzYzNTU1YjIxNGVmNzM1MjljOTI3NzIxMTIzYWFlMGY5ODUgcmVsZWFzZTMxLW1haW50Cis4NTI0NSA1MzcwZDRmMDg2NDgwOWNlZTFlM2VmNjI5Zjc1ODBkYTgxZTU5ZDc4IHJlbGVhc2UzMS1tYWludAorODUyNDYgYTRjOTc0NmNiMDNjNWE1YmE4NDJiYWRjYmQ4MGM4YmFiODc0NGU0ZSByZWxlYXNlMzEtbWFpbnQKKzg1MjQ3IGJmZWU1NDc4MWJhMWY5M2U0ZDkwZGNmNmVmZjA3ZjE3ZGYzYTVlZTQgcmVsZWFzZTMxLW1haW50Cis4NTI0OCBjOTg3OWIzNDAyZTRhYjcyZDJkMzliNDVkYjVhYTIzZTNkY2Y2ZWE2IHJlbGVhc2UzMS1tYWludAorODUyNDkgZWI4ZTEzNzg0ZGU3Mzg0YzU5ZmRiZTQ3NmFlMzljYjAyYTEyMDU2ZSByZWxlYXNlMzEtbWFpbnQKKzg1MjUwIGI5YTc1ZGQ3NDIwZDA1NjZiNzMyMjU4NzJhNzQ1ZGI2OWI4NzcxYmYgcmVsZWFzZTMxLW1haW50Cis4NTI1MSA5MGUxNzM1ZGY0ZDk2MmNlZTAwYzQ4NjExY2EwYWVmZThlNThlYjA0IHJlbGVhc2UzMS1tYWludAorODUyNTIgMmRlODMyM2JkNGViYTJhYTM1M2NkYjFmZDY4MGExOTNhNzQzOWE0YSByZWxlYXNlMzEtbWFpbnQKKzg1MjUzIGEwNDc5MzQwZjAzNTJmMmFlNjNiYjM2ZmQ4ZDY0ZjYxNjlkOTQ3MDUgcHkzaworODUyNTQgZjAwNDQwYWY5NDEzNzhkYWI0NGQ0ZTFkMDc0YmJiYzBjNTM2MDkyYSByZWxlYXNlMzEtbWFpbnQKKzg1MjU1IDA0NGNjOGE5ZjE5Y2ZhMWI3N2ZhZDBiOGVhMzYxZjlmZWE1NDRkMTAgcmVsZWFzZTMxLW1haW50Cis4NTI1NiA2ZjlkMTVmY2NmYTRhY2YxYWZhMzcwZjIxZmIzY2ZkZmFiMjNhNzY4IHJlbGVhc2UzMS1tYWludAorODUyNTcgYzYxYzAyYWMyMDk5ZmJmNzg2NGVmZmNiZWI0NDA2N2M5M2RiZDIyMiByZWxlYXNlMzEtbWFpbnQKKzg1MjU4IDY5NTlhZGJhM2I2YTVkMjI3ZGI4OTE5ODFiMjk4YjA4Y2M5ZmQ5ZWMgcmVsZWFzZTMxLW1haW50Cis4NTI1OSBhNWM2M2IzYTk2YTlhOGYyMjQyYzNkMjA5NzMzYjNhZTg0ODIzZjRiIHJlbGVhc2UzMS1tYWludAorODUyNjAgMjgzMDYyNDRhZmEwZjQ1ODljMWM1OWVkNzQ0MDM4YjgyZGRiNDkzYiByZWxlYXNlMzEtbWFpbnQKKzg1MjYxIDY0OTg5YjAzMzk4Y2EyZjhmYjY2ODg0ZjIxOWRhOWQ5M2FhNzBmODMgcmVsZWFzZTI3LW1haW50Cis4NTI2MiBmZjczNGYyMjViNDdlOTY4OWJkMmRkMTA1ODVlNzAyYzY0NDhkMDIzIHJlbGVhc2UyNy1tYWludAorODUyNjMgY2FiNDU4NjM4ZTRkYjU0N2UwZGY2M2Q0MDc5NWYyY2Y5ZDJlODgyOSByZWxlYXNlMzEtbWFpbnQKKzg1MjY0IGJhYTk4YmE4NWZkNDExODljMGE5NWMxNTBmZmQ0NTVjZWRkZmM3NjEgcmVsZWFzZTI3LW1haW50Cis4NTI2NSAyYzExNWJmNTJjZmY5Y2U1ZmJmYzIzMGNjNGRiMGFmNTY3NGVjZGE5IHJlbGVhc2UyNy1tYWludAorODUyNjYgMjg1NjUxYTE1MzU1ZWNkZTQwNTk4OTk0YWY5NWI0MmRjMjA3OGQyNCByZWxlYXNlMjctbWFpbnQKKzg1MjY3IGNlMjAyMTUyZTIxYTExNDNlNmU5YmVhY2FmODAyZmViN2UxOWNlZjAgcmVsZWFzZTI3LW1haW50Cis4NTI2OCA1MzZkODY1MGRhM2RmMGQ5NjdkYzk3NzhlMzM0M2FiMmFjOTg5NmNhIHJlbGVhc2UyNy1tYWludAorODUyNjkgZTllMjQxYTkzZjllZTMwY2VmOTM4MTA2MjNhZmQ3YTgwZDliOTJjYyByZWxlYXNlMjctbWFpbnQKKzg1MjcwIDc4Mzk2ZWY0ZDgxY2Q2Yjc1M2NhNTgzNzNhOGNlZmE0OGY1M2YwYmQgcmVsZWFzZTI3LW1haW50Cis4NTI3MSAxYTBlMDY2OTc3OWNjYWY2ZDgyNzA4ODEwNzU2MTNiYWYyMWU2ZGY5IHJlbGVhc2UyNy1tYWludAorODUyNzIgNTIxZWFjMzFhODkzYTk4YTBkNWFmMzQ0NmU4MzViMGRmZjQ3YzRiNSBweTNrCis4NTI3MyAxY2ZkM2IxMjQ4OWRhZTk0YTFmNjRhNzk3ZmM2MDJjOTlkN2IwYjU0IHB5M2sKKzg1Mjc0IDlhZmVkNzBkM2FjYTFjNjM3OGFlMmMzNGQzYTVkZGNmZjc5YTc3Y2EgcHkzaworODUyNzYgZGY4NDRiYjY3MjlhNGJjNjYxOGJhZGUyYzYwYmQ4YTU4ZTkwZDc1ZSBweTNrCis4NTI3NyA5MjU3ZjA4M2ZjZmYyMmY0M2ZjYTk4ZWQwYzdhZjk3NmRiM2ZlNGM0IHJlbGVhc2UzMS1tYWludAorODUyNzggMDE5MjA1NWJjYzNiZTkxNTkwNzYxNzdmYjU4MjczMThkMGNjMDNhZCByZWxlYXNlMjctbWFpbnQKKzg1Mjc5IGQ2NzI3NTNhMDNmMDA4Y2U5YjI4NGFkOWJlNDdkMDMwYzE4NDdiM2IgcmVsZWFzZTMxLW1haW50Cis4NTI4MCA3MDE4MjYxZjJhYzFkYTExMTBlNTc3NmY2MzBmN2QwY2RhZTQzOGJkIHJlbGVhc2UyNy1tYWludAorODUyODEgMmQ5OWVkYzRmMTBkZmIwY2ZkYTRhMjZhN2ZjMWMwZDBiNDJlNThjOCByZWxlYXNlMzEtbWFpbnQKKzg1MjgyIDViNTVlOGE5YzEwNzFkMzY0NDk0NDgzODJiY2Y1NWZiOGNiN2ZiY2YgcmVsZWFzZTI3LW1haW50Cis4NTI4NyAwNjZmYjNmYWY2ZDUzOTJmMmVmMzIyMzMwOGQ4ZTMxMGU1NzE4NjRiIHB5M2sKKzg1Mjg4IDg2MjlmN2Q4YjVlMzM3YjBhMDk3YWY4MDc3OTI1Mzc5ZDcwNDY4OTcgcHkzaworODUyODkgZDBjZTNlYjExYjI4NmFiNTQ5OTk5MmQxZWI4YjMyZGYwNWY5MzMyYSBweTNrCis4NTI5MCA0ZGE1NWM0OTM0MzU3MDAxNWE0OTQ4ZjBkYzFlM2E5MzM1Mzc2YjA1IHB5M2sKKzg1MjkxIGI4ZTc4Y2ZjOTRlYmE2YWU0NjI1ZTk3YjI5NTY2NDE4YTIzYTQ4NTIgcHkzaworODUyOTIgMzJkY2NjZGM3M2Y4ZjZmZGU4NWY4YTU4M2NhZWQ0NDk4ZDc4NmQxMSByZWxlYXNlMjctbWFpbnQKKzg1MjkzIDdjMTAzMWQzODIzY2M0ZGI0NDU5Mjg3ZDM4NDUwNDBhYTQxNjhjNzcgcmVsZWFzZTMxLW1haW50Cis4NTI5NSA2MmM1OGRjOTEyZTgxNjU1NGI4NzhjZjc2ZGNmYzFmZGNhYjA2YTdmIHB5M2sKKzg1Mjk2IGYyMzdmZGU5MjVmYTdkZDRlODc3MjJkNzY4MmIzOWFlYjAwYTViYjQgcHkzaworODUyOTcgYzFlOTU0MmI2Yzc0YWE2M2YwOGE2YTQ0ZGE3YzgzYTZjOGM2NjQ5YyBweTNrCis4NTI5OCBlM2FlNWIwMGJhMTVlZWU3YjY1YjQwY2EwOTJiNTQwNTQ5ZDkyZjMxIHB5M2sKKzg1Mjk5IGE2MmM0ZDVjZGY2Yzc0MzgxNzBlYzYyM2NhYzg1ZmVmMjFmMjQzMTEgcHkzaworODUzMDAgYjI0NTdlYjgzNGFlMDlkMjg0NjI4ODM3OWVjYmYzNzE1OTllODUzYyByZWxlYXNlMzEtbWFpbnQKKzg1MzAxIGRmYjM0ZTVmZTA2NjE5YTg1YzJkODhjYjBlMDcxOTc2OWI0OWZjZGQgcmVsZWFzZTI3LW1haW50Cis4NTMwMiAwNzFmMWY3YWY1MjIzYjg4YjIxZWYzYzZhNmQyYzFkYmUxMTcwNDc2IHB5M2sKKzg1MzA0IDM5MDE0ZjBhYmMzMjgyOTViM2I3ODBjNzYxMjc5MDc0OTg3ODVlNWQgcHkzaworODUzMDUgNzg3OWE4ZWM3Zjc5YTkzMjNjY2M1MGFlZjU0MGU4ZmY0ZjY2YmI5MCBweTNrCis4NTMwNiAxZjM5MTlhZjhhNTM2ZDE4ZWVkNDc1NDhjMDViMmU4NjkwMThjMTg0IHB5M2sKKzg1MzA3IDIxNDdjYzE1MjIyNzE1NDExOTAwY2MyNTI1NzUzN2MyZDdiOGUwMGQgcHkzaworODUzMDggOGZkNWQwNjQ2MmU2YjhkNWYxNjE4NjllN2M3Yzc0ZWM5NDUwMTQ0OCBweTNrCis4NTMwOSBlNGJkZDA3Y2UwYzYyNjkzOGNjZDk5MzZmZjIzZjE1OWZlZGExOGQ1IHB5M2sKKzg1MzEwIDFjNDc3NGI0ZTk4YTQ2MmNjZDAwMjBiMDVjZGFhOTAzZDIzNzVlYjcgcHkzaworODUzMTEgNzdhNmEyNDllMjRlOGU2MmVlZjVmMzVmMGViMGIxMmI2Njc0NGYyMSBweTNrCis4NTMxMiBmYTZlNTAyMDhkOTMwOTVhNDhmYjI2YmYzNWZlOGZmNDE1NmI5NTBkIHJlbGVhc2UyNy1tYWludAorODUzMTMgMzlhMGI5NDNlM2UxZjE3ZjEyMmYxZGVjODAxZjA2NWVmZTdkNTI3ZiByZWxlYXNlMzEtbWFpbnQKKzg1MzE0IDg4NGM3MWNkOGRjNjk1YTkyYjE2YzMxMzg3NzkyYWFmYzEyYzNkMWEgcHkzaworODUzMTUgYTE0ZTA3NGZhNDJmYzU1MmMyNDlkYzY3YjEyNzc1MjQ0NGNlYjUzZiBweTNrCis4NTMxNiBjNDExNTUyY2RjN2NkM2JlODlmNjEyMzUxNTcyZjYwMWMzY2I2ZWExIHB5M2sKKzg1MzE3IDhjNTc2MDJlYTFiMzBjMmFhMjFlZGJjN2VkY2ExZTIyZjA4YzdmZDkgcmVsZWFzZTMxLW1haW50Cis4NTMxOCBhY2RiMzIwMDVjMGFjMzBmYWMyODVmODM5NDlhZGE4MTY1Mjk2MWEwIHJlbGVhc2UyNy1tYWludAorODUzMTkgNmEyZjhmNjkyZjA0OGNjODllODI0YzI5ZTgyZGQ0ZWZjMDMwNjI2YyByZWxlYXNlMjctbWFpbnQKKzg1MzIwIGE5OTY0YTRkM2MyOWYwNjFmZWMxOTBlMWRlYzI5MDI0OTE2ZjZkYWMgcmVsZWFzZTI3LW1haW50Cis4NTMyMSA0Yzk4ZWVmZjM3ZTdmM2MzMmVhOTYwMGE3NzY5MWU1YTAzNTBmMGIwIHB5M2sKKzg1MzIyIDFhMDQxZjM2NDkxNmJiM2QzYWIxYjM4NmJhNDA1YzY2OGEwNzFlY2EgcHkzaworODUzMjMgNDk4NzM0NGNlZTIwMDEyOGVhYTI3NWY5MGI4ZDk2OWY3ZGJlNTNiMCBweTNrCis4NTMyNCBiMWZiMDUzOWJmOThiY2I0NDk2NDljMjEwYjgyNDczY2UxMjkwYzA1IHB5M2sKKzg1MzI1IGRiZTAyZTkxNmFlY2NmNGJlODU3NWQ1MDE4YTVmNzE1OGU1ODljNTkgcHkzaworODUzMjYgNTY5M2RlZGU5YTNhMDg0MDJhNzBlZjAxZDExNzhjOWRiZjczZWUyNiBweTNrCis4NTMyNyA5YzAyNjE4M2Q4MmE0ZWE5MDQxODlkYzAyZWY0M2JjMjZiMWI3YThjIHB5M2sKKzg1MzI4IGFlZGRiMTg3ZmNiZWJhNTZlMzdjNDcwMzE4ZjdkNDIzMzEyN2IyN2YgcHkzaworODUzMjkgMGJiYzNiYjAwZmM0ZWJkYmVjN2U0MThjOTg4NDgxNGJmZTc3OWY4YyByZWxlYXNlMzEtbWFpbnQKKzg1MzMwIDUxNTc1YmRjNTQyMDZmZWFmODFhMDg1YTdlMDVkNzQ1OWQwNTNiZTUgcmVsZWFzZTI3LW1haW50Cis4NTMzNSA0MmQ2YzI2MmM5NDY2NzA1N2VjNDI1YmRiMmJiZGJmNmM5ZjMwNTAwIHJlbGVhc2UyNy1tYWludAorODUzMzYgMGM0ODg0ZGI1M2UwNDkwMjVjZmQ1NjZmNWJjNjkyMzg0MGNjMzNjZSBweTNrCis4NTMzNyA2NTQzZmE0YjE0NTgxNTIzNGJiMmI5Zjc3MTZjMTUxYzJhYTdhZWVlIHJlbGVhc2UzMS1tYWludAorODUzMzggN2UwMWQ2OTY0ZDVkN2UwYWIwNzdhY2JlNzIwY2Q2YWFmYjQ1OTcxZiByZWxlYXNlMzEtbWFpbnQKKzg1MzM5IDJkMTY0YjFhZWI3OWI3ZGUzMWNkZTRjMjk1ZWIwMTI3ODI1YmUxZjYgcHkzaworODUzNDAgYTdhYjA0OGM2ODQ1ZDhlOTNjM2FjY2FiYTJmN2QwYzI3MzFmODg4MSBweTNrCis4NTM0MSBlN2M5YTg1ZmU5NjNiNThkZTBmNjg0ZDZhMzlkM2RjMzk1ZDY0NDJlIHBlcC0zODIKKzg1MzQyIGNmMmM1ODNiMmNiZWJmMThiZGFiNDkxMDFmMWU1MzJhZmZiNzNmNjkgcHkzaworODUzNDMgODEwYjU0MGFlNjUwZjc2ZGMwMmJlOGFkMTBmNWRjODVkMjI2OGRlMyByZWxlYXNlMzEtbWFpbnQKKzg1MzQ0IDBmNmZiYTY1YmNkZTdkMjkxNDkwZjgwYmQ2YjUyNjQ3MmI4NjVkMmUgcmVsZWFzZTI3LW1haW50Cis4NTM0NSBiNjI4OTllZDdmYjdkNWIzNzYyZjE4YTZkMDRlNzExZWFmYzIxOWFkIHB5M2sKKzg1MzQ2IGQ0NzVjOTQ1NDZiZWQ2NTRlOTVlODMzZWYzYzQ1ODZlYjE5MmZkMzcgcmVsZWFzZTMxLW1haW50Cis4NTM0NyBmZGViMGRjYjlhM2ZkMGQxOWY0NjNiZGEyYTFmNjY4ZTU2N2I4M2VjIHB5M2sKKzg1MzQ4IDJmYTlkNzM0NWFjN2ZhM2M5NDgxMzYxMTMyZDRhZjQ2NDUxNmVkOTQgcmVsZWFzZTMxLW1haW50Cis4NTM0OSA1MWQzMDRlYzZjMTFiNTk3NGY3NGVkNTg4YTVhODI2MmQ0YjkzMWQ4IHB5M2sKKzg1MzUwIGE5YTQ1NjI0Y2VkZjFkZTMyNDU1Y2QyZTI2ZTg2ODIwOTNhZjhiOTYgcmVsZWFzZTI3LW1haW50Cis4NTM1MSAyMzEzNGUxNjczZDcxYmE5YmQwZjQ0ODcwZTM3YTgxYzZmNmI5OGNhIHJlbGVhc2UzMS1tYWludAorODUzNTIgZWQ1ZTU5OGRhMTUwZWY2YjkwNTZhMDcyNzMwYTRiNDkzYThiMzNiYiBweTNrCis4NTM1MyAyNWQwNzg3MzljMmE0ZWQ4Mzg1ZGQ2YWQxNmU3MWU3Mzk2ZDBiMTQwIHB5M2sKKzg1MzU0IGMwMTllOTc3ZjIyMmMzMGJkMzZlYTMwMDcxMmE4NzUxNTQzNDNhNjIgcHkzaworODUzNTUgZWYyMWY4Yzk5ZmIzNDA1MmNlZDM2YmViZTI4ZjlkNGM1ZGVhNjVlMiBweTNrCis4NTM1NyBkYTAxMmQ5YTJjMjNkMTQ0ZTM5OWQyZTAxYTU1YjhhODNhZDk0NTczIHB5M2sKKzg1MzU4IGFkMTViODkxMDZkZTNiZTA1ZTBmMDM5NmIwNjdhODdjZWRmZTBlMDEgcmVsZWFzZTI3LW1haW50Cis4NTM1OSA0NTE4YjJjMmQ2MTRmMTM4MTdkOGU4NzVmOTUwMzMyY2E1YTcxOGVmIHB5M2sKKzg1MzYwIGNkYzk1ZmRkZGI3YjJiYTlkYWEwMzI3Y2FhNWZlOWMxZjhiY2YyZGUgcmVsZWFzZTI3LW1haW50Cis4NTM2MSA1ZWRlMTVlMTI0NTgxNjk5MDkzZWNjNDUyMDZmYTBiN2Y1ZDNmMDBhIHJlbGVhc2UyNy1tYWludAorODUzNjEgZDUwYmZiN2FiNTdjOTI2YmYwN2ZhYmI5OGNiNzhhYWMwNjA4MzhiNyBweTNrCis4NTM2MiA0NzU4MzA0MjRjMWU4MTg2MDU5OTQ1M2IzMDlhOTc0ZTZlM2ZjYWM2IHB5M2stdHRrLWRlYnVnLW9uLXhwNQorODUzNjMgNWFhZWZhOTc1MmFjYjQ5YTgwN2FkY2VjYTM1ZDIwODViYTM0MTM2NiBweTNrLXR0ay1kZWJ1Zy1vbi14cDUKKzg1MzY0IDYyYzE0ZWQ2YjhhMGE2MjRhOWEwNTliOGEwNDRkYTdiOGY1YWM1N2QgaXNzdWU5MDAzCis4NTM2NSAyNjc2YWY2NTUxNGQ0ZDk3YTlmYTJiOGI3NDQyODMxMTBmZmY1ODNlIGlzc3VlOTAwMworODUzNjYgZDQ5MDlhMDU2ZDRlNzgwM2JlOGEwOTIxZTE4MTdhYjJlNWQ4OWYwMyByZWxlYXNlMjctbWFpbnQKKzg1MzY3IDQxYTlmOTUxZWJlYTVlMWFjNmNlZTYzMTFkZmNkNzM0NTg4NTcyNzAgaXNzdWU5MDAzCis4NTM2OCAwYWRiNjQ0MDU4MWVlMWQ1YTZmM2E2ZWE0NDFmY2M1ZTk2NzljZDY3IGlzc3VlOTQzNworODUzNjkgZjdmNzA1MjkzMTBmODRiOTEzYzkyYzgxNDZkZmZlYWY3YzdiZWQzMCBpc3N1ZTk0MzcKKzg1MzcwIDlkNmQ4MzA2M2VjMjJiZGM0MjNkNDExYWVjMDAwYjM4ZDkzZmNlYzYgcHkzaworODUzNzEgY2JkZTgxZWY0YWY3YzAyZWM4NGU4YTg4YzBkMmUzMjQxYWVkNGNjZSBweTNrCis4NTM3MiAxOGI3MjU5Y2Q5MmQ4MzhlZjY5ZmRjZGE3NjgzN2IzYzhkNWZlNmQ1IHB5M2sKKzg1MzczIDk3ZjgwZDBhMWQ1NjM4YTNhMWYzZTcyZmZhNDRmMDZlNTQ0MDdlYjggcGVwLTM4MgorODUzNzQgNjY5YzM3Mjg3NTBiMTc1NmZiZGI4YTI5ZWFkMTYyYmMzOWUxYzAxMyBwZXAtMzgyCis4NTM3NSA1ZmExMjVhZTA3YTY0MTcyMzhhMGY1ZDc0MDFlY2M4YWUxNzFmYTQyIHB5M2sKKzg1Mzc2IGYzMjAwYmU0ZWFhMDk4NGQ4MTMzYjUzYTdlYTBmMDY4YzMyNDE1YmEgcmVsZWFzZTMxLW1haW50Cis4NTM3NyBmYWE0ZTIyYWFiYTdlNGIzNmVmOTNmYTBjZTYxYjBmMGRjYTMzMTNiIHJlbGVhc2UyNy1tYWludAorODUzNzggOGNmMWFmZjE4NTljNjI2M2E3NWEwMGVlZmM0ODEyYjVmOGVhYWZiMCBwZXAtMzgyCis4NTM3OSA2ZDkxOGQ5MTBhOTY4N2Y5OGU5OGU0YjIzOTQ3OTdjYTNjZjY3MTdiIHBlcC0zODIKKzg1MzgyIGQyNDkyOGMyODAwMTkxOGI0ZGM2ZWMzZTEzMWVjOTI1ZTY1ZjAxYTQgcHkzaworODUzODMgOWM3MjNhZmE0NGRhYmI0MjE4MTlhN2M3NDQyZTY4ZjRjMjhkZTRiZCBweTNrCis4NTM4NCA0NjEzZTE0NDkwMDA2ODI0M2ZjMGQ4MjhlZGI3YzFlMTE5NzYzY2NkIHB5M2sKKzg1Mzg1IDllMTQ3YzM0OTEyNmM2ZTgxZDYxNGM1MGI3OTZiM2RmNzQwYWRkNmEgcHkzaworODUzODYgZGVkNjFlMjZiODQxNGY0N2FkZDZjYTc0OTlhMWY0NDM2OWQ1ZDcwNyBweTNrCis4NTM4NyBhODE3MjA1ZDI1NGE5Zjc5ZmU3ZmRlYzIzZTNjMmViNDVhYTk2NjZjIHB5M2sKKzg1Mzg5IDM5YjM4Y2ExYWMwNGJkMWI1MWFjYjFlOTVmMWI1YmZkMTRkM2VjODggcHkzaworODUzOTAgMmZmYmZiYzBkM2NiMTZjNjE3ZTJjODlhNjQ2Yzk0NmFmMWYwZTM5ZSByZWxlYXNlMjctbWFpbnQKKzg1MzkxIDYxNzMxZWM5YTA0ODFlNTcxNjA2ODAxOTQ2MWYzZWI5OTdhZjExYmQgcmVsZWFzZTMxLW1haW50Cis4NTM5MiBlMmFhM2IxZDA4YmNiYzEwYWY0M2RiMGYyY2UzMzZlMGIyODdhOTU1IHB5M2sKKzg1MzkzIDc5MDk0MzY0MDhlMmVlMDhjNGExYjEyYTc5YTZiMjBmYjI4YTc2MjYgcmVsZWFzZTI3LW1haW50Cis4NTM5NCAzZThkMjg4ODZhZDY2MGQ5YzM5NGIxNDJmMmFhOGZiOGVhYWIzM2U2IHJlbGVhc2UzMS1tYWludAorODUzOTUgZjJmNTJiNDBjMWYyOGQyODA0ZWE0NjBlMGMxNGYyY2Y3ZGEwOGU1YiBweTNrCis4NTM5NiBkN2E3MWYxZDFlMzQxYzJhOWNkMWMzMmQ0NWE5ZTZhYjM3MTA3ZjBiIHJlbGVhc2UzMS1tYWludAorODUzOTcgMjE5NTdiM2IwYWNhMDkzMzQxYzA2MjYyNWI1M2U1NGViNWM3NzNlYyByZWxlYXNlMjctbWFpbnQKKzg1Mzk4IDc1YmViNjc2MmUzYjAyMzY3OWQyMGZiNmRlZTliM2QxODdkM2MyNDQgcHkzaworODUzOTkgYzA5MDhjZWJmMTg0MTBmYzcwZDhjZTNkOTJhZTE2NGY0OGE3NDU3MyByZWxlYXNlMjctbWFpbnQKKzg1NDAwIGQwZjYwYmViMjhmMjNmMjMwNDc5YjJkYTIzZmU5ODIzNTI1YTU3ZWQgcHkzaworODU0MDEgZWFkNTM2NGM0YTU5YTczM2E0YWUwZGQyNmJhNmJmMjUyMDZiODczOSBweTNrCis4NTQwMiBmMjljZTBjYzFkNGNlNmI2Y2QwZGUyMGEzMDU5YTJjMTBiNDdhNzJiIHB5M2sKKzg1NDAzIDc1MjA2ZGY4ZTU4YzYwMjg1MGQwZWY5ZmQ2YzFiNjY4YmExNDZiMTcgcHkzaworODU0MDQgMmNlNjQ5NjBkNDkwZGI2ZGZhNDczYmYzZDZkNWMwZDg1ZmY3MTVhNiBweTNrCis4NTQwNSAyMGY0NjNhNDU4NGQ3YzQyZTAzODZhOGYxMDA2YTM4ZWU5OTAzZmFjIHJlbGVhc2UyNy1tYWludAorODU0MDYgMjQ2ZDNkZmNlN2IxMDNkMGQ1N2YyNGQxOWVlMTBlOTA1NmI3YzlmYSByZWxlYXNlMzEtbWFpbnQKKzg1NDA3IDIzZWMwYmUwN2UyMGVkZGY4OTljNGM1MTQ3N2VjODM2NzQ1YjBhMzcgcHkzaworODU0MDggMTIzMjdiOWQzMzI1MTk4MWE1ODEzMWE2MDFlNTI1ODlhYjA2ZWYwYSBweTNrCis4NTQwOSBjYjZlOWIwM2QwYzMyMGM4NmIzZWQ2ZmQ5MTdmM2IxMWVmY2ZhNTA1IHB5M2sKKzg1NDEwIGExNTY3ODkzNzgzZjIzMmRlMGEzNjhiZjY1ZjliN2VmYjIxNjYyMzcgcHkzaworODU0MTEgYmY1Y2ZlOWEwYmI1ZTUxZTgyOTUxM2I2NDU3NDEwZDQ1MWUxNDY2ZSBweTNrCis4NTQxMiBkMDJkNmJiMDI1Mzg1MjUzOTZmYjI3MDBjYTMxNjgyY2E5OWFlYTc1IHB5M2sKKzg1NDEzIGU1MTdjM2Y1NjA5MTg0YjFhMzdlZGY0ODQxNTkwZmI0NThmNWE5MjIgcHkzaworODU0MTQgNWVmNzZiYzE3MWFkNmQ3ZDg4NGJiZTRhN2FlZjVjNDk3MDMxYWFhMSBweTNrCis4NTQxNSAzNzIxMzQzOGUyMWZhZmZmZTcxY2Y3MGVhYjdkNzIxZTY5NDVkOTBkIHB5M2sKKzg1NDE2IDQwZWNiNGQwMGYyNWFiOWIxNDZlYmU5MmUwMjE1MjlkYTg2NjIwYzkgcGVwLTM4MgorODU0MTcgYzQ4YzA5ZTY5M2U2YzkxOGU0OGQyMTkxZGVjYzVjMGEwOTA2OTEzNyBweTNrCis4NTQxOCBmYTkwNTcwMDc3NTU1MWY0NzUwNjk0NjQ1NjhjOWZmNWEyN2QwMTdlIHB5M2sKKzg1NDE5IDBkMTZkNTBjNTdhMGYyMzQyY2UyODU3YWEwMDgwODVkMGFhYmU0OWEgcHkzaworODU0MjAgMTg3NWJmZWQ1Njg5YjlkMDI5MjliNjhkZmE5ZmE4YmNhZjkyMTE1MSBweTNrCis4NTQyMSAzNjE5YzEyMTQwMDdkM2Q1ZTNkMDdkMjM1N2Y2N2IyMmFkMjQzMmY3IHJlbGVhc2UzMS1tYWludAorODU0MjIgZWVhZWRjYmUyODFkNTg0NGZiMzVhM2QwMzRhMzAzMGNlNGY4ZWYyMiBweTNrCis4NTQyMyA2ODk5YTljYTVmMzUzNWRiMzQ5MmFiZGEwMWY2YzQ4ZjE1ODNkZTc0IHB5M2sKKzg1NDI0IDhiMTkyNTAyYTRhOWFkNzg4MzkwNjk2Y2RhMzdjMjZmMTNjNmI3ODggcmVsZWFzZTMxLW1haW50Cis4NTQyNSA2MTBjMjViNWNmYTI4OWJmNzU0Njc4YjZkMzQ2ZmM2NTA5M2Y5YjI2IHJlbGVhc2UyNy1tYWludAorODU0MjYgYTFlZGRjNjRiNzUwNDljOTc4ODEwNWE5M2UxZTM3NDdiYWU1OTk1MCBwZXAtMDM4NAorODU0MjkgMTk2MGY1OGFmNzg1ZDRhNzBhZGJmYzA0MTkyZTc4MmI4MTZiZjE5NSBweTNrCis4NTQzMCBhNzVmZDMxZGRhYmJlZWNiMDM4YWVjNmJmNGI0YjVjNzFiZDc2YzliIHB5M2sKKzg1NDMxIDAwZDEzYjJmODFhM2MzMWExMjM4ODVmZmYwYmJiNzg0NmJjYTY1YjEgcmVsZWFzZTMxLW1haW50Cis4NTQzMiA2MWMzNTQ3MmE0ZjgxYTQyMjc3NzFjMWY4MGRiNzBhODNlMTVhYzY2IHB5M2sKKzg1NDMzIDY0NzRhZGRkMjgzOGI3Njk3N2ZkYjg1YmZjNjIzNzAwY2IzNDdiM2UgcmVsZWFzZTI3LW1haW50Cis4NTQzNCBmMmY3YjcwZmM1ZWJlNGY5MGFhNDM1MDg0YjkxZmM5NGUxZDdjNjMxIHJlbGVhc2UyNy1tYWludAorODU0MzUgMzMzNWVkY2U0OGEzNTQ2NDliMmE4YThiYzhkY2NiYmFhNzIwNTE1NSBweTNrCis4NTQzNiBhNGE2ZDgyM2ZmODk1MTY2MjJmMTUyM2U0ZDE5NmE5OTkwYmNkZDJkIHB5M2sKKzg1NDM3IDQ3NTU3NDQ3MjRmMjBiYWQ0Nzc5NmI1Y2Q3NjdmYTA2NzY5ZWIxNjAgcmVsZWFzZTMxLW1haW50Cis4NTQzOCAxZjIyNWQ2Njk0MWE5MjMwMjY1MjIxYzgwMjAzNmVhODQxYzJiN2I1IHJlbGVhc2UzMS1tYWludAorODU0MzkgZTc2ZjU1NDE1OGE4NWJlYTNhZjUxZDlkOGY3NzZlNzg0OTY4OWJkZiByZWxlYXNlMjctbWFpbnQKKzg1NDQwIGU5ZWEwOTc4N2EzNWNmOTNjZjUzNWY5NjY0OWRmYWMxMjZiMGVmZDQgcHkzaworODU0NDEgNGM1NzA2YmMyZjQzMDUxZmM2OGJmNjQyZTAxN2ExZDRiZjZkMGVlMSBweTNrCis4NTQ0MiA0OWRmNzc4ODg5ZTZmYWNjZTM5NmUwZDFiY2NjZTY3MjlhNTlhMTM4IHB5M2sKKzg1NDQzIGE0NjcxMWRlOTI5MTIwNzJiZDE4NzhjYWNkNzFiZmRhYWExNTVkMDYgcHkzaworODU0NDQgNzhhMTJiODI5YTlhYTllNzdjNGJhZjljMzQyMDE2YTI1ZDYxNmJkNiBweTNrCis4NTQ0NSAxZTcyYWJmMDczYzU2ZjVlMzEwMzEyMDJlYmQ4M2UzNmM4NDYwMzM4IHJlbGVhc2UzMS1tYWludAorODU0NDYgZWJlMTRjY2JhMWI3YjUxYTg0YjE4YjlhMDY5NDI3YzVmOGNjMmZiYSByZWxlYXNlMjctbWFpbnQKKzg1NDQ3IDZmZDQ5ZDA1MjEzNDVkYWQxZmM4MmU5NjM1N2JhYzVjYTc2NTNlNDUgcmVsZWFzZTI3LW1haW50Cis4NTQ0OCBmYTI3ZGQxMjk4ZmU1Nzc2NTA4NzJkY2QxNjRmNmVhYTE0MDJkNGNjIHJlbGVhc2UyNy1tYWludAorODU0NDkgMmYzZTBlZWNjNzYyNzdiZjUzYzE3NzBhNDYyNzg5ZWUwZDU2ZmQ5YyByZWxlYXNlMjctbWFpbnQKKzg1NDUwIGNjYzQyNGM5NjY0MjZiZDE1MjIyMDJmMjA5NGYyOTJmZWIwYTQ5NGUgcHkzaworODU0NTEgYjVjZTA2YmJiMDZmZTIxMzAzMTA3MjkyNDVlMzVkYzk2MjE5ZjBkMSBweTNrCis4NTQ1MiBlYTJmZTk1ODFjMmQ4ZjBhMjAzN2ZhMWFiMGY4NDkzMjEyMmZlNmU1IHB5M2sKKzg1NDUzIDMwYjNkN2M1MjUzZDU4OGViNTA3MDY5MDVlZTkxOTIyOTRlZDI3NjYgcHkzaworODU0NTQgMzYxMWVhNDJiNzkyZGMxM2M1NTQ4Yzk2OGI1ZDM3OGZlMjk5MzU5ZCBweTNrCis4NTQ1NSBiYTY1ODFlY2I2ZjFlZTdhNDgzMjM1NGI3ODg5YjBkMmY5NDJkODZjIHB5M2sKKzg1NDU2IGZkMDQ0Y2RhOTdkODM3MGZjZTMzYTEzOTA4ZWJjMDYwYjgwZjkxNTggcHkzaworODU0NTcgNmFiMGY5MjE5NjYwYjg4MmVmZDRkZjY0YzkzMTYxNWM4ZjU4MWJjYiBweTNrCis4NTQ1OCBiZWFlNzZlZDVlYmZlM2Y4ZTNjMDZiYzg2NmFkMGU2Y2RmOWI0YmVkIHB5M2sKKzg1NDU5IDdkNzk2ODgxNTZkYjVmZGJjOTAwZDhjNzcwNzJlNjE3YjQ5MWUyNDcgcHkzaworODU0NjAgZGMyMDBjZjJmNTY1OGFjMTA1ZGVmNTJkNjkzYWU3NzUyZDk2NWQ5MCBweTNrCis4NTQ2MSAyZjE3OWEzY2IyMDY2MGEzMmNjZjgxNWU3ZjQ0YjE1Y2M1MzFkYTNlIHB5M2sKKzg1NDYyIDgyY2RlOGI3MzcyODIzMTkxYzk5OGQ0MDBjNDdmYmEyM2VkN2Y3ZDEgcHkzaworODU0NjMgNGE4ZTBkODk3NTViNjRjMmU5MDM1MzJlYmZiNjExOWI1ZWMwNWQ2YSBweTNrCis4NTQ2NCA2N2EyMTg1NzBmNGE0ZTE2YjA0NWEzNTgzNjgxYzEwNjFhMGVlYTNkIHB5M2sKKzg1NDY1IDY2MGFmZGFlYjJkNmU2MDcyM2VhZGNiNjU3NGZhMDVhYWFhOGJkZmYgcHkzaworODU0NjYgMjg1M2NhZDljYmMwMjQzMDBlMDU3YjAwNGFhNTZkODQ4ODcwYWUxNyBweTNrCis4NTQ2NyBlMmM5OGM2MGRkNjRkMGE1ZDIxMDRkNzNmY2I1ODZhMjQxMGUxNzQzIHB5M2sKKzg1NDY4IGI2NTIwNjEyOWI1Yzk0YzY4NmQxNDc1YTkzMDkxMjg4ZGRjNTQ0YjcgcHkzaworODU0NjkgOTk1YzMzZTIyNjNiMWM5MTBhYWI0MWFmNGYxYTFlYmFmN2NiODg3OSBweTNrCis4NTQ3MCBhNWVlYWQxNDFjYjQ2MzU2ZjVlYmNkZDlkMmU0Y2I1MTg4ODNhODkzIHJlbGVhc2UyNy1tYWludAorODU0NzEgNmE4NDg5NTU0MDE5ODJjMjZkNmZjZGFhOTU3MjI3MzY2NGIzZmE4YiByZWxlYXNlMjctbWFpbnQKKzg1NDcyIDcxZTc2ZDAzZmM2N2YyNTA3NzRhY2JmYWZmYmVkZjRjNDQ0ZjZhZjQgcHkzaworODU0NzMgZDdmOTA3MzU3ZGE3ZTk1MGNiY2RjNDE5ODdjMDU4ZjFiN2NjNjlmYiByZWxlYXNlMzEtbWFpbnQKKzg1NDc0IDgxM2I1MWE2YTQxNzk5N2Q1NWMxODU3OTRjZmY0YzFlYWZlMmE5NGMgcmVsZWFzZTI3LW1haW50Cis4NTQ3NSA5ODJjOGVjNzNhZTM3ZTBlZDZkNTQ5NzNlYmEzZjcwYmY2MzllYzhjIHB5M2sKKzg1NDc2IDNkOWVmMDk4ZGFmMmUzNmZjYmM2ZDIyZjdhOTU2YWI2NzNiMDEzMGQgcHkzaworODU0NzcgYTI3ZmMwZmYzNjc4YjAwOTY2MzQwNzY1MGYyOWVhNGYyMTczNGYwMSBweTNrCis4NTQ3OSAwOGE5YzA0NjAwNGRkMTFhOTRhZjlmMWVjMzEyMmZhZDQyOGRiNmZlIHJlbGVhc2UyNy1tYWludAorODU0ODAgMTI0NDJhYzNmN2RkYmJhM2NiZTk4MDRhOTMyODkwNTRlOWJkZWM0NCBweTNrCis4NTQ4MSAxOTBmMjQ3ZWRiOWVlYmNmMzBkZmZiMmFmZDE0OTk3ZWViMGJjNzFiIHB5M2sKKzg1NDgyIGFkNDBjMGEzZTIyMTU2YTFlM2M1Y2NmNTJkODhkOGJlYjU2MDNhZDIgcHkzaworODU0ODMgYjgzZjBhNjY3ZTdjZWIyZWVkMWMwZDM2ZDhhNGIwNzRkYTgzNmY5NSByZWxlYXNlMzEtbWFpbnQKKzg1NDg0IDA3YjZiYjc2ZWU0MzkyM2M1NTZmZDAwOTcxNWYwYzNhNTVkNTljM2YgcmVsZWFzZTI3LW1haW50Cis4NTQ4NSAwNzhlMmU0N2U1MmIwNmFmZTEyZDE4MTk5OTllZWZkYTIxNjdlNjMyIHB5M2sKKzg1NDg2IGI4ODZiZjYwMjUxM2I0ZjdlOTdlMTU3MTVmZjQwM2Q1Y2I4N2M3ZTcgcHkzaworODU0ODcgOTBjMmI2NTQ5MGM3NTMyMzE2YWQwZDcxNWQzYTY3MzY5YzUzYzE0NCBweTNrCis4NTQ4OCA4MGQzYTM3NDk5YjFiMmIyMDlhNmVkODU3OWY2NzZiMDU1NDc0ZTM3IHJlbGVhc2UzMS1tYWludAorODU0ODkgMDY3ZThiMjAwMGRkMDU3OTJlZjA0M2E2MDY3NmU1ZjVmNWNlMjNiMyBweTNrCis4NTQ5MCAzZTc5MTM0YzY1MzU3YTc2MmRhMjVmYWUxMDZlNTFlZjNhYTQwMGViIHB5M2sKKzg1NDkxIDFhNjAxM2VlOTc0YjA4NzdiOTRhMTMzYzYwYmQzMjkyYzQ3OGNjN2QgcmVsZWFzZTMxLW1haW50Cis4NTQ5MiAyNTNhMjY4Nzg1ODU3NDhmYmU4YmY2NTgxMjcwYWVjODY0NzY2ODhlIHB5M2sKKzg1NDkzIGI3ZWNkOTQ0YjdjZWIyYWQxYzdmY2JlMTA4MmEyYmE3YjBiZmIyOTggcmVsZWFzZTMxLW1haW50Cis4NTQ5NCBkNTJkNWQzNTlkYjMxMDAxMGVmNzVkNWFiNWE3ZjI1ZDViZWUyODI2IHJlbGVhc2UyNy1tYWludAorODU0OTUgMDUyYzE5OWFlMTlhOWIwOWI4MzI0OWQ2MmExNzUyOTQ2YTBiYmFmNiBweTNrCis4NTQ5NiBmM2RhOGNkNzQxMTM3OGI2ZDA5ZDUwNjg4NTA3YjE5Yzg1MzBkMmUwIHJlbGVhc2UyNy1tYWludAorODU0OTcgNDY5NTZhMjVjMjY0MWJmZTdiYzhjNWFjM2VjNTZiMTg4OTk4ODcwNiBweTNrCis4NTQ5OCA2Mjk2NjMyYWQyY2JlNjVmNzAzMWJiZTFjZTZmZjFjMjMzMjJiYWZjIHJlbGVhc2UzMS1tYWludAorODU0OTkgNDI2OTI2N2U2ZTU3ZGEyNDMyNWRkNzZiMzYyMDM0MWFhZmIyOTg0OCByZWxlYXNlMjctbWFpbnQKKzg1NTAwIDZjZjIyM2VjYWE2ZjBkYzUzMjdjNWMxOTI2ZTMxNWY4NzE2MDQxNzIgcHkzaworODU1MDEgY2ViMTI3MDNjNmRiYTMzMDI2MTVlYzBlZTE2ZDY3NzY2MjU4Yjk4NCByZWxlYXNlMjctbWFpbnQKKzg1NTAyIDI3YzA1MTI0NzIzM2E2ZTI0YjM2YjE3NjNlNTFiNjE0Y2RhYmZlMjUgcHkzaworODU1MDMgNGQ1ZjBjNDQ4N2ViOWZmYjM2NWU5MzMyZDc1YTRkZWQzM2JiYzU5NiBweTNrCis4NTUwNCAxNzgyZGE0NDBmYjFlNDQ2Zjc3OGRkN2U0MzI1YWI1Yzg2Njk5OWE3IHJlbGVhc2UzMS1tYWludAorODU1MDUgZmVhOGYyMWIxOTlkNzRkN2I0MDhkYTk1ZTdkNTM1YTkwZjA2YjI1NyByZWxlYXNlMjctbWFpbnQKKzg1NTA5IDdkMWU0NTNiMTIwYjZlNjJiOWE1MDYxYWFmNjI0YmNjYTg3OTBmY2EgcmVsZWFzZTI3LW1haW50Cis4NTUxMCA4OWE4YmY1MzI1Y2QxNWZlYTllMzBlZThmYTkzNzhlODNmNjc0ZGU1IHB5M2sKKzg1NTExIDVlMTU3NjA1MDc0OWJlYmExOGIxYzI5Y2EzODQ3ZTU4NDllMmQ4ZmUgcmVsZWFzZTMxLW1haW50Cis4NTUxMiAxNzgwNjg0YWUzYWQ5N2MwZmJlNmNhM2FhYzcxZjA3OTE2YjA1NDEwIHB5M2sKKzg1NTEzIGMzZjJjNWQzNWFmYWZjZDg5Zjc4MGVkZjEwZDgzYTk5MDI1YTQ0MzcgcmVsZWFzZTMxLW1haW50Cis4NTUxNCBlNTEyMzcyZjc0OTQ2ZDZmOGEzYjYwNTg2ODBiZjMyNTExYTZlYTY4IHB5M2sKKzg1NTE1IGNjMWQ4YTJkYjM0ODZlNDEyODM3YTA5Yjk1ZDJjOTA0YTQ0MDBiYTYgcHkzaworODU1MTYgZjYzZDc0NzYyMmJkNTE3MzQ3ZjFlYWZlMDEyYTEyYWI5ZWYyYTU3MCBweTNrCis4NTUxNyA0NTNmZDgxODJjMmY5NmU5ZTBlMTdjM2YzM2NkZjcyZDUwMmVhMmJmIHB5M2sKKzg1NTE4IGJiMzAzOTNkMWVhMTg5YWQzY2I2N2I5NTRlN2Y3Mzc4MDIzODlmNzMgcHkzaworODU1MTkgMTU3NzUxY2M0Y2Q1MTg4MzcwMGU5OTM2ZjIyOTdjOWNkNmI1MmRlZiBweTNrCis4NTUyMCBlNzczYTFmMjNkNDMzOTNlN2JiZjdhMzJmNzRiNDE1MDc5YmY2MDMxIHB5M2sKKzg1NTIxIDljNzNmZTNmNDdlMjY5MDYwOTkzZDM1YTc3YzNjNTA0YzliODRkOTYgcHkzaworODU1MjIgNmEzNjViOWEyMmJhOWMzYjAxZGU1MDg3YjA2ZDJhMmE1NWExMTgzZiBweTNrCis4NTUyMyA1MjAyNWMzNTQxZDg4OGZkMTliMDQ3NWQ0YmU5MmQxYWRmZDBiNTU3IHB5M2sKKzg1NTI0IDFmNWEyOGJhNzQ3N2QwMmEzYjgxNTIwMjlhMjk5MWE4Y2U2MDNjOWYgcHkzaworODU1MjUgODhiZGVmNTM2MGFmMDNhY2VmZmViN2NmMTc4NTlhOTBlYzcwM2E3OSBweTNrCis4NTUyNiAzMjBkMGZhMjE2NThkMWRmNzQxODk2YjQ3MzUyMzYwNWIxOTYxOTk0IHB5M2sKKzg1NTI3IDRlYmMwMzA4ZjRiMTJlZTNmOGI1OGQ5YmM4YWVkZDllNmM2YTM3NGMgcHkzaworODU1MjggMGI1MGQ4NzA2MTM0NDYzNGE3MTEzMjkyZmZlMzkxMjMwZmE3NGIxMSBweTNrCis4NTUyOSA4MGZlMDY2YzEzNWE5MDQ3NjgxYjVlNDcxYzM1NDUzZjFiOGU1ODczIHJlbGVhc2UyNy1tYWludAorODU1MzAgNDE4NjhjYTUyNzQ0YzhlZDJmM2E3ZTBkNDU0Zjc0NjA3MmJlYTE0MSBweTNrCis4NTUzMSA1NjMzYWY1OTAwNTcwMmI5NTMxMDA1NmQxYTVlNGZhNGJmZTYxODdmIHB5M2sKKzg1NTMyIDhmNmFiYTIzZmIyYWJjNzViZTllYjJjMGNjZTk0YmYxMmRkZDU4YmMgcHkzaworODU1MzMgMTA0MzU4YjVkNGQxNDQ2ZGJjMDVhYmUwZWZiYzhjZGIyM2UxNTQwOCBweTNrCis4NTUzNCBkYzI1YzUwYTdjMTE2MDY4ODQ5MTJkMDJiNTAxMTM2YmQwODAwNWRkIHB5M2sKKzg1NTM1IDZiODMxNDM3NmRlMmVlYjRlNDU2ZWUwNzQ1Zjg1ZTJmMTYxMDVmZmQgcHkzaworODU1MzYgOTJlYTU2YjUyZDhmNzMxNGJjNTdhYTk3YzE4NTJhODE4ZmQzMDI5OCBweTNrCis4NTUzNyA5NzEyNTg2ZmE0MmY1ZjlmZWEwZTM3MTA1NTdlODFjOGI4MzhkN2JlIHB5M2sKKzg1NTM4IGFjODY4MDY4NWZkZWFhM2U3N2Y4MDg1ZGY1NDY3NTg1M2VlNjY4YzYgcHkzaworODU1MzkgZDgzODRmY2UzYzczYjlkYWFmNDZhN2JjZDUxNTBmMThlMGY5NmVkMSBweTNrCis4NTU0MCA3OGQ1Mzg1OTM5NWE0NDYyZTczZjZlYzY3MzVjNTYzMTM1MmI1MWQ4IHB5M2sKKzg1NTQxIGYzM2JiODUwNzg5ZWE4NTJlZDM4NjY0NTU0NmE4ZGQyNTk4NDkzNDUgcHkzaworODU1NDIgN2RlMzY1YzE5ODZiYWJhYjZkYzk4ZWU3YjE3N2YzNGUyNjQ0ZDE3YiBweTNrCis4NTU0MyA2ZjRjZjczMDMyZmM5YjhmYzg0NmIyYWEyYjQxNmEyNzE2MmUzMmQ2IHB5M2sKKzg1NTQ0IDkzNDdiMGE4NWNhZjU4NmFjMGVkMTZlZDM4YzM1ZjU5YTFhMTg4MGUgcmVsZWFzZTI3LW1haW50Cis4NTU0NSBlZWM0OTk4NDdkZjdiYjlkODM4NGJiYWRiODQyYTNkMTg4NjYzMzdhIHJlbGVhc2UyNy1tYWludAorODU1NDYgYjcxYWFmNGU3ZDhkOTAxYmFmZjA2Y2NkMTU1NTkxYWRjYWIzZjUyZCBweTNrCis4NTU0NyAwZTJjYmMzMWZjOTI1ZTI5NjIyZTg0ZmJmZjM0MjRjODA2YmEwMGE5IHB5M2sKKzg1NTQ4IDM5NGMwMGI0YzkxOTRjZmQ3MjZlYTMyYjMxMjgyMWY4NzQ2ZjkzMGYgcHkzaworODU1NDkgODQ0ZWQ2ZGRkYzAzMWVmZTk2NGUzNWRjYmI4ZDUyOWMyMGZmYTRmZSBweTNrCis4NTU1MCAzNDhmMzM2OTY0MDIxNTUwMTQ5OWM3ZjJlYTgwNTlhZjkxZjk3MGMyIHB5M2sKKzg1NTUyIDkwMDUyODg5Y2UzZGUzM2MxYWUwYTA5YjRkMDRmYjNjMTJiY2U4NmEgcHkzaworODU1NTMgMjkyYjFkZjAxYmFkODdjN2MzZDcxNzVmNmE2NzgzMWY3NDgxOWJjYSBweTNrCis4NTU1NCAzYzQyMjViZjg3YjQxMjY2MzQ1Njg4M2FiOGQ1ZTNkNWY2ZTc4ZmY0IHB5M2sKKzg1NTU1IDJiMTdiZTYyYzc0ZmNjODAzNTIzMTQxNzYwMGRhZjc0ZjkyMzdmNWMgcHkzaworODU1NTYgZDQzOTBiNmJmN2VjOGUxNmYyZTQxMGUzOTU1NzEyZjA2MWQ1NzMyMiByZWxlYXNlMjctbWFpbnQKKzg1NTU3IGRkZjJlYWQyNmFhYTQ1ZWE2OWUwOGYxMWYxMzFmMTkzZTVjZDczYzggcmVsZWFzZTMxLW1haW50Cis4NTU1OCA0ZDZjNjNjNjU1NTBjMjM2OTk0ODI2ODJjNDc0NmFiNjdjYmVjZGFiIHJlbGVhc2UyNy1tYWludAorODU1NTkgOTMyZjk3YmZiZGMwYzUwNDlmZWFmYzgyMWE4YWIxNDZkMTQxN2QxMiBweTNrCis4NTU2MCBmY2RjMmZhZTUwYzA4MWFjOWI3MDNkY2FjOTU3ZjlmYjAzMzRkMGVkIHB5M2sKKzg1NTYxIGY5OGMzZTJmZDA1NTAzMzEyNDUyZTEwYThiNWM3NzYwNTFjM2IzODEgcHkzaworODU1NjIgZmQ1YzgzZjc2NDQ3NTBiZDI0YWFmZjBjYzJiZTg4NzZiMzE3OTNlYiBweTNrCis4NTU2MyAzNjE4ZDlkNzkwMmQzY2I0NDhiMjUxN2IwZmQ0ODBkNDA4YWIxNWZmIHJlbGVhc2UzMS1tYWludAorODU1NjQgMGJkMGU4N2E2ODUxNTQyMjQ2ZGE1YTdlM2ZlNTlmNzM1ZDI5MjY1OCByZWxlYXNlMjctbWFpbnQKKzg1NTY1IGY5MTg0ZTdjZDI1Y2UxMzA3NTIwNGRhNzhkZjQzYjgxNzJmNzZmYzggcHkzaworODU1NjYgZGQwODY3YmQ5NTU3OTBkOGM4NjM1OTY3MTRkM2Q0ZjJjOTU4MjMwNSBweTNrCis4NTU2NyAwOWVmZmZlNzAwMzA3MDE4ZWZlMWIxNjdlMGVmNmQzZmY0YzY3ZTBkIHB5M2sKKzg1NTY4IDc2Yzg4OGZkMjM4MGRmMjZiODAzMjZmMWY2NjViOTg5Mjk1YjExM2YgcHkzaworODU1NjkgNTVlZDVjNTI0NDI4Y2EyMjg2NGRiNjRkOGIwNWY2NTQ2OGI1ZGI1ZCBweTNrCis4NTU3MCA5ZWQ2OGRkNmI3MWZmNzIzMzliN2JhOTdjYTVkMjQ3NDc1ZTNlZTljIHB5M2sKKzg1NTcxIDYwMzk4NDUwOTM0MzAyYzEwNmViOTM0Mjk5YThiNDY1YzEyNWI1NDAgcHkzaworODU1NzIgNjg2YTJhOTFmODI2MDgwZWU4ZTVjMzJiOWJmN2YwOTU1ZjI3NmVhZCBweTNrCis4NTU3MyAzZjJlMTQ1YzRhMDJlNjYyMGZjYzg1NTA2Y2Q2MmZkZjI1NDM1YWQzIHB5M2sKKzg1NTc0IDUxODFjM2JmODk3MGUxN2JlMTNkMjEzNDQ2YTEwYmI2M2M4ZTQ2ZGEgcmVsZWFzZTI3LW1haW50Cis4NTU3NSBhNDQyZWNiNzA4NDFmMmRkN2M1NWEwOTU0NzU5YzZjNjRmYTVmNjM2IHJlbGVhc2UyNy1tYWludAorODU1NzYgMGJhNTBkNDg1ZjA3MjY4YTM0N2U1MDVhNmZhZDdjZDNkMmE1YmY4ZSBweTNrCis4NTU3NyBiNGJkZDQyOGViMmIxZjIzOWEzMjQ0MjNiNDE3YWI1NGQzYTYwMjVmIHB5M2sKKzg1NTc4IGI3NDlkYzRjMzc0YzE2N2ViYTEyOGM5YTk2MjUyNWRiMWIyNmZkZTUgcHkzaworODU1NzkgZTFkYzk4NjFiNDNmMzljMTEyMjdkNmIzZDAxMTFlNTI2OGYyMzg0OCBweTNrCis4NTU4MCA2ZGNiYTkzZDYyNjIwMmFjMDU5ZTBkYTAxZTE4MWJlZjMyYjY1ZDE0IHB5M2sKKzg1NTgxIGRmMGUzNDhlNzE3NjJlOWE1ODQ1Y2RiZjgwZmJkNmE5YzQ5NWIzNDYgcHkzaworODU1ODIgMzc5NGM5YjUwODI0ZmQ3YjVmODM4NDZlZjg3OTljMDYyMWViYzI2NiBweTNrCis4NTU4MyBiYTg2ZjM0ZjA4ZGE2YmNhMWE4OGFjOTZlN2Y4NWJmMzgyYzI3YjA4IHB5M2sKKzg1NTg0IDkzMDZmZjFjM2Q0NmY3ZDE3YmYxYjBjNjMxN2QwYjAzNTIyZDk0YmIgcHkzaworODU1ODUgMzQwMzU5ZDgwY2EwNTZhMjBjZjUyNDU5MTdjMGYwMjkxMjFmZjY0OSBweTNrCis4NTU4NiA0NDNhYjJjYmFiY2JjYWRhZGY4OTkwYTllYTdlNmM4MGEwZmFlODhjIHB5M2sKKzg1NTg3IDAyODMwNTUzZGJkMTk5Mjk3Nzc5MzJhNjAwNDBlZTg3NzY4MmY3MjkgcHkzaworODU1ODggZmQ1MTM1Y2JkOTI4ZGYzMzBlMzk3ZTI2ODhlNzk5NWM4NThiNTNkYiBweTNrCis4NTU4OSA2MDg3YjFmNmNhOWI3NGViODJjY2I1MDZmMzgwMmY1NjlkYmVlMmM5IHB5M2sKKzg1NTkwIDZiMjY2ODg3M2YzMGQyOTFjMDk2NjNmZTFmYTM2NjNkNTBjZTExMzUgcHkzaworODU1OTEgNDM1NzViMDk2OWVkMDYzYzA5Zjc0NGRhODFjMGMzNjJjYzg4ODkyMiBweTNrCis4NTU5MiA2ZWNlNjI5NDQ1YjYwYjM1MTViNjJhN2Y0YjM4ZDJhMjA3MDkyNDM4IHJlbGVhc2UyNy1tYWludAorODU1OTMgMWJmNzY3ZjI4ZGI0ZGY2MjM0ZTIyMDBiY2M4ZTc3NmJiMDdkY2RhZCByZWxlYXNlMzEtbWFpbnQKKzg1NTk0IDA1MDVlYmE2MjM0NzJmY2VmYmZjMWI2MzkxY2Q3MWQzNjE0OWRlODkgcHkzaworODU1OTUgYzk5Y2Y5MTAyNDc2YzQ5YzU1MDVkM2Y5N2U0YjcxM2I4ZWZkY2ZhOCBweTNrCis4NTU5NiBlYWJjNWM1M2YxMzRlYWNjYzUxYjcwNTE0OWM5YzFlZDNhZDMzMGE5IHB5M2sKKzg1NTk3IDI4ODBlNzJhNDY0YmQxYzFhODg1MWVmNTllODJkMDMwZmNjOTkwZjQgcHkzaworODU1OTggNmU1NTk3OTNlNDUwY2VlMzU2NTMyNjY4MDg1YWIwM2JlY2IyOGJmMCBweTNrCis4NTU5OSAxNTg1OTc0MGFhZTZjMmQ3MDJjNWM3OWM0ZTliMWE4ODBhZDlkZjZmIHJlbGVhc2UzMS1tYWludAorODU2MDAgNzAyNTI3OGM1YTQxYThiNmM4NTkzNDFmZDQ3MzFjMGE0YTIxNjhhMCByZWxlYXNlMjctbWFpbnQKKzg1NjAxIGY2MjE2YzVmMDY4MDNhZTViZDllNWY5NjM3M2NkZmZhY2UxZmMzMmUgcmVsZWFzZTI3LW1haW50Cis4NTYwMiAxNWUzYWQwY2EzNjQ4YjlmOTcwY2ZlZmVkNmRiY2U4MmY2MTA3YzVkIHJlbGVhc2UyNy1tYWludAorODU2MDMgY2FhMTdhMDMzMTc2YjI5ZTg2NjRlNjFmMTA1MjU3MGUzYTdmZTIzOSByZWxlYXNlMjctbWFpbnQKKzg1NjA0IDA4ODQwMjQ2OTAxNmJhNTFmOWI1YmFlMGE4MzhhOTc0NjcwOGYwNzQgcHkzaworODU2MDUgOTMxZjIzOTA4Mjk2NmZmY2M5ZGY2OTNjNDRkYzBkM2NjNjE1YzgyOCByZWxlYXNlMjctbWFpbnQKKzg1NjA2IDg3MzNjNjkwM2ZjY2EyNmRmZmJmMDlhYWNkNDI2MTYyMzg1OWNjOTggcHkzaworODU2MDcgYmU2MGM5NjBhYzA5YTQwZTA0MjUxMDAwOTdmMzRjMmZiYjEzMWExMCBweTNrCis4NTYwOCAyZTg1MDQ3MTE5ZDIxYmFmZjkxNDc4YzVkNjkwNmIwMmFmMWRlOTkyIHB5M2sKKzg1NjA5IDViMmFmMzViOGI0YjYwNmEyYzBiMGI1YTczMGFkMzAxNGVkNDY1NTkgcHkzaworODU2MTAgZDI1MzQ2YzBiOWQwOGQ2MmJhYzNiZmI2MGMyMjdlNDNiZmEyNzU1MyBweTNrCis4NTYxMSAzYjVlZDg0OTBhYjJjMmEzMmEwNmNjNTAwOWFlOWViN2YwOTg0Mjg3IHB5M2sKKzg1NjEyIDY5NzQxZDRiOGE2MDAzOWQwNWRhNGIzMDk5ZDBlYjEyYzc5MTNmMDUgcHkzaworODU2MTMgOTZkN2U3ODc0ZjhjNDYyNjUxZTkzMWMxMzRmMTEyZDc2OTk4YzhjYyBweTNrCis4NTYxNCA5NjZlYzMxYjgzNDJjNzYyMDg4M2IyODc1NTQ0ODU1NWE3MjZhODE4IHB5M2sKKzg1NjE1IDVkYTgzN2ZjZjY3NTkzYWVhNTQ3MjQ3ODkyOGQ0MjRjOGYzMmJmNDAgcHkzaworODU2MTYgNDczYjkyMWUzYTFmM2I2ZDE1ZWY3OTY2NjgyNjI2NDZhNGFiNGI4YyBweTNrCis4NTYxNyA3ZGRmNjBjODg5NmFhMDQxODk5NjFjYmIzNTEyODkwNjc3Y2YxMmRiIHB5M2sKKzg1NjE4IGE0ZGQzODM5MTJkODk4ZGJkYmE2NTg3OWFiODNhN2U0MGY0YWQ5YmMgcHkzaworODU2MTkgYTkwNDdjZTFlODFkYWMyNzBjMmNkOWVjZTA3OGYwMzBhYTgxZTcwOSBweTNrCis4NTYyMCAxOWNhNzBiNDYzYzU5OTJjYmFmN2ViYjdhZTUzMjVhOGVhYzAwNzU2IHB5M2sKKzg1NjIxIGFhMmU0NjM3ZjZjZTk3MTY0MmE0NzgxZWM5MWE0MWVjMzliOWNkOGQgcHkzaworODU2MjIgNTczN2FkNzFlOWUxOWU5NDZlMmM1MGI2YjYzMDVlMzQ2NTk1NjUwZiBweTNrCis4NTYyMyA4N2RjZWJlNzhkNjdjYTJiMjc4MWI2OGIzZTc1OTI5M2UxMWM1MTg2IHJlbGVhc2UyNS1tYWludAorODU2MjQgMDk5OWUzYTQ0NzM1YmU2MWU1ZWMxNmEwMWJhMmQ5NzUxMjk2ODQwNiBweTNrCis4NTYyNSBkNjk5NzA4ZGMyYzE5MDRiYzkzMGVjYzU4MThmODgzNGViNzE0YjY5IHJlbGVhc2UyNS1tYWludAorODU2MjYgNWEyZDM0NDliNTc1ZTNhMTA1N2ExZGJiZGIwMGU1NTE5MGQxNzA1NCBweTNrCis4NTYyNyAwNjYwOGNjMjVmYjIwNGNhZTQ3NjBlNWUzMzgwM2QwMDg1MTJhMTBjIHB5M2sKKzg1NjI4IGNlNGQ4MTAyNTdiNDRkOGI1YWQ2ZWFlOTI4YzliNTE1ZDA1YjI5YjAgcmVsZWFzZTI1LW1haW50Cis4NTYyOSBjYTk2OTA5MmY0NWE2Y2RiODkyMTEzYmEyZDM5MWE2ZDBiZGY2ZmFhIHB5M2sKKzg1NjMwIDMxMWQ3YWJiZmJlMzAwYTFjYmNhNGJmMjAzYmE2OTViZjhmYWNlMTkgcHkzaworODU2MzEgYmIyMTM1OWU4OGI5NDY0ZTI2ODFkOTc4Zjk5ZTgzYzI4M2FjYzhkZCBweTNrCis4NTYzMiAzMTc1MGM3MjdhZTMwNTBjMDAxYzgwMjI3MzVlNmU2ZjE1OTcxZWUwIHJlbGVhc2UyNy1tYWludAorODU2MzMgYmNiMjYwZDY4YjE1OGFhZWQzMGJiYTUyNzIxZGE0YzUxNWRmYmRlZCBweTNrCis4NTYzNCA4N2U1YjU5MzhjNjVmMGNhYzQzMDhjNTg4ZTIxMmQ2NWFhNzNmZTg0IHJlbGVhc2UzMS1tYWludAorODU2MzUgNDIyYTRmYjBhNDkxMjQ0ZDU0MzQwOTBiN2E2MDIxNGU0ZDA2ZWRhZSBweTNrCis4NTYzNiAwNzNlMWJlNzZiNDc0MzU4OTRlNmZkZDg3YTlmZWEwZWFiMTRmMDlkIHB5M2sKKzg1NjM3IDliMjI1MGZiODBkOGI1YmI0YjkwMTA1MmVlYzI0YThkMjE3ODQwMmIgcmVsZWFzZTI3LW1haW50Cis4NTYzOCA5ZTQ1ZmM4MDUyODhhNzdjODRhMjUyM2I5NGI3YTVlYWU3ZmQzNGE2IHB5M2sKKzg1NjM5IDY4NDQwMjcyNTRmYWU2YjFiZjk2YWUyN2RiYWQzNmJkMzRiMWNkZjAgcHkzaworODU2NDAgMTg2YWYwNTFkMDRmMjEwYjFjN2UwNmU4OTNkNGU4ZGNlYmU3NmY1MCByZWxlYXNlMjctbWFpbnQKKzg1NjQxIDk5NGI4Nzk5ZjI4ZDY4YTVlNGI5MGMyYTgyODQ4NzEyYTk3NzVhYmMgcHkzaworODU2NDIgMjFkZDcxOTM4YTQ0NzJkMjQ2ZTU4Mzg1MDY1MGI3NmJjMzkwYjAyNSBweTNrCis4NTY0MyA3NGQ4MWEzYTBkNTY1YTE4Nzg1OWRkNmE5YzMwMGNlNTdjZmJhYzk2IHB5M2sKKzg1NjQ0IDA1ZDdiMTk5MWZmNzJlNzRmMTUyNmE4YTFlYzc1NTM3NjczNjMzNTQgcmVsZWFzZTMxLW1haW50Cis4NTY0NSBiNDJmOTQ5NjQ4YmFjNTdmZGMwMDExOWIzYjc1OTdhNzUxZTc5NDE0IHB5M2sKKzg1NjQ2IDYzM2RlNTdmYjczYWUxMTYzMjI0MDk3NzQwZDFhNDIxMjRmMGZmOTEgcHkzaworODU2NDcgM2M5YWZhOTJmOGZkYzY1MzJiMTE4Njc5ODAwMmMwMDQ5NzJiMTcwNSByZWxlYXNlMjctbWFpbnQKKzg1NjQ4IDYyM2RlYWU3NzMyNDM2N2Q1MTZhYTRlMWYyZDQyZDUyODYyOWQwNzIgcmVsZWFzZTMxLW1haW50Cis4NTY0OSAzOWEyYzNiMTBhN2IxZmVmYWZmNGY3YjI2MzNkNDBiNzEwYmY5NzNiIHB5M2sKKzg1NjUwIDlhYzNmZTJjYTQ5ZWI1ZWZhYjg0M2JjODU1ZDEwZmQzNTlhZGU2OTMgcmVsZWFzZTI3LW1haW50Cis4NTY1MSBlZmQzNjk5ODFiOGRkNTYxY2I2YWJjN2NhMjUzZWY5ZmM2ZTlhNzM1IHJlbGVhc2UzMS1tYWludAorODU2NTIgMzhhZDU3ZGI4OGFjNGJlMmY1MmM3MDc1MWFhNGIzMTA4YmU1NzE2OCBweTNrCis4NTY1MyAyNDRjYmNiNjdkY2Q4N2UxMWI2MzYzNDcwYjJiODdmYjZmNTFhY2Y4IHB5M2sKKzg1NjU0IDM5Y2RjYzdkM2UyMGQ1NDRlYWE4YTVjNGFhM2Q2OTA2ODY4ZThmN2IgcHkzaworODU2NTUgMDIzYjQxMzc2MjkwYTEyMWM3N2EyNGI3MDE0NzBjYWU3MGExYjIzZiBweTNrCis4NTY1NiAzYTQ3ZmJjYjI5YjEyMDUwODdjOWUzY2E5YjAyNTU2YTdkZGU3ZTY2IHB5M2sKKzg1NjU3IDdhZjQwNmYyMTlhNGU2MWI0OThhZGM3MWY1YWEyN2ZjZmNiOWFlMzEgcHkzaworODU2NTggZDU4Y2UzZmZiMWNiNjk3ZjFlZWRiNGE1M2VhM2IxMTI3NmJkOGVlMSByZWxlYXNlMjctbWFpbnQKKzg1NjU5IGIwMjI4YWY2ZGIxMTgwYTE3MWM3ZGUxMjA1N2FkOTM2NjA1M2FkYzIgcHkzaworODU2NjAgOTVlM2FlZWJiNWFiY2Q4MWU0ODE3NWI0ZmYwZDIyOTk1ZGUxNWUyNiBweTNrCis4NTY2MSBkMWRlZjdiMmFiZDJmNTliNDMyNTRiYTMyNDA5NzQ2MmYxZGIyMGZiIHB5M2sKKzg1NjYyIGIyYTljYTJiNjFhMjQxYjBlZDhmZDc4MDg4MTEzMDA4ZTM0Mjc0YTAgcHkzaworODU2NjMgYzE0N2Y5MTBhZjcwMDg2ZmQ2M2RlYWUwZTNmNjIwYjkxNjNiNDBkOCBweTNrCis4NTY2NCBlODk2OWZiODIyZmMyYTI3OWFlMzRiZTczZjhlMWUxNWM0NTNhM2QwIHB5M2sKKzg1NjY1IGY4ZmMyZDAzZDdlNDJhMTJlOTJlYzI3NDg2MzQ3NTA5MmVhZDhlN2QgcHkzaworODU2NjYgZTc1ODA2NTJhZmI4ZTZjZTZhMzk1YWRmZWZmYzUxNTYzNDcyYmNlYyByZWxlYXNlMzEtbWFpbnQKKzg1NjY3IGEzMTY1ODEyOTAwODA3NDBmN2I2MzIwY2Q1NzMzNDM4MWIyNjc2YjkgcmVsZWFzZTI3LW1haW50Cis4NTY2OCBiMWNhN2Q1YTljNzRkNzBjYWMxNDRkNDI5ZDcxMmY3OGI3NzMxNTRkIHB5M2sKKzg1NjY5IGIxYmRhMWVjOTk1ZmExMDM2ZGUwOWZhYTMzYzM1NTBiMmY0MzZmNDcgcHkzaworODU2NzAgZTBjY2I1ZjUwZTBjNzkwNjM3ZWUzMTE1Mjc3MDUwNDM4MDAzNzFiYiBweTNrCis4NTY3MSAxNmVhZDgzZjc5Y2M5OWNlMTQxN2IzZjA0ODNhOGExZWI0ZWRlMWY1IHB5M2sKKzg1NjcyIDk2YTY5NzYyYjQ4MTYxNjc4MTYwNzM4ZjQzOTBiNDAyMmI0M2ZiYTQgcmVsZWFzZTMxLW1haW50Cis4NTY3MyA3YWExNGNhYzZmNGQwMjczOWVjZGI0YjVkMzA1ZDY4MWQ1OTM4MTY3IHJlbGVhc2UyNy1tYWludAorODU2NzQgZWI4ODM3ZWZkODRjNWIxZWRhYWZjYmU5MDQ1ZTc0MTVmZDk3NmY5MiBweTNrCis4NTY3NSAzNTFkNzk0ZDMyZjQ0MzI5YzEwNzM3M2UxZGFlYzg2MjUzMGVlZDIzIHB5M2sKKzg1Njc2IGFhMjAzZDQ3OGJiODEwZjZkZTJiNjEwMmZlNDE1OWE0MjExNjIwZmMgcmVsZWFzZTMxLW1haW50Cis4NTY3NyBkMzk3YjAyNjMxYjU0N2Q5NGM2N2I0YjkxMzg0ZTk1ZTZkMTMwZjA5IHJlbGVhc2UyNy1tYWludAorODU2NzggYmVhMTRmMDBkM2UwMTAwNzI3ZmY3YzBmODg4NTFkNzYzZTA2N2NhMyBweTNrCis4NTY3OSBiMGE4ZmNkYTA2NTQ3ZDZkMzRlMzM0NzIyODI1OWMyNTEwMzRlMmZlIHB5M2sKKzg1NjgwIGNlOWY1Y2UzM2FkMmEwZjVkMDNjZDA4YWFhNzgzNTgzNjFkMmY4NGIgcHkzaworODU2ODEgYTRjMTBhNDRkOWFlMTFiZWM5Yzk5OTQyNmU4NzQ0Njk2ZWNhMWNlNSBweTNrCis4NTY4MiAxN2M5NmFhZjkzYzg3ZDEwN2EzYTMwNTc5ODQ5Zjk0OWIzNGFmYmU3IHB5M2sKKzg1NjgzIDViMDY5ODkyZTQxM2E5ZTExNWFiYTk2MDQ5NDg4OWNmZGJjMmQ5NDMgcHkzaworODU2ODQgOGYwNjI1OTU0ZmZhM2NkZDcxMTYyMzljNWNjOThhMDY2YWYzNzI2NyBweTNrCis4NTY4NSBjZGZkMTk4YTZmMWRlMzEzNjY5OTVlYzZkODUwZmE2ODkwOGRhNmNiIHB5M2sKKzg1Njg2IDc1MmU0YjVjNjRlOTVjYWM0MTYyNjQxZGM0MzcxNjQwYTU2NWViYzEgcHkzaworODU2ODcgYzcyNzU3MDMzZDQ0Zjg1M2QwZjY0YjU5YTI4MGYyYjA2MDg1NGU3YSBweTNrCis4NTY4OCA2OGJkNzVjNjlkYjE1MGZmZGNjYjIwMzdkNDJmZGYzZjQxZGQ1ZDQxIHB5M2sKKzg1Njg5IDNjMzM2MzQ4YTJlOTg2ZmU0Nzc5YzE1M2Y3ODc0YzQ1OTg3MTFmMTggcHkzaworODU2OTAgMzcyYzk4MDdkNzVkOTcxNGU2MDY0M2I5MGFmMGExYThiMGQ5NjE4MyBweTNrCis4NTY5MSA3N2MxM2M5YzZlNTllMzllOTY4YzRiNGVmZmI2M2Y3MThlMzUzNThhIHB5M2sKKzg1NjkyIDUxOTU5ZjM5YTdmYjEzNmE1ZWYyOTM2OGJiNzM4MzExYjg2NWZlN2QgcHkzaworODU2OTMgYjBiYTdlZWI5OGE1NWU5NDQyYjFkMDUxOWQ4M2JhZmRmZWEwZWRmYiByZWxlYXNlMzEtbWFpbnQKKzg1Njk0IDJmN2UwMTY5NDkyNjc1ODY2NWIxNjliNGM4OWQzZjFjYmZlNTMyODIgcmVsZWFzZTI3LW1haW50Cis4NTY5NSA4NmYwMDYxMmNiZDYwZTllMTY1NDBlODI0YmJkZDY0NTFmMTczNDE0IHB5M2sKKzg1Njk2IGVjZmY0MWUwNjhlNmZlOTFlMzBkMWJhNDg4ZGZmZGJiYjFkNDJjMjIgcHkzaworODU2OTcgODJiMDgzYzk2YTM5ZmJmNzEzMDljYTgzYjcyYzNlMmYyODJlNWMzNyBweTNrCis4NTY5OCAyNDZjMDhjODI1YTEwNTg4ZDgwNmFjZWIxMmQ4YzE0MmM4YTkyNTE2IHB5M2sKKzg1Njk5IDUwMzYwMGJiMjVlYWE4OThmZTI2YjhmNzYzOGFiYmQ2ZjJlMmI3ZWMgcHkzaworODU3MDAgM2ZhZmY3ZTUxZjQwZGVlZDBkNDZmYjlmMmUxMmVkMTJkZmFiNTM1OCBweTNrCis4NTcwMSAxNWU0MTU1MmRjYmQ3Y2MwMzIxNjY2YzQyMmU5MTM3MDJkNzM0NjlmIHB5M2sKKzg1NzAyIGJiMzMzOTczZGUzOGJjMzM5MDgyNmQwNWYxYjcxYjljM2YyZWM0OGYgcHkzaworODU3MDMgMjdjZTk5ZmMyNTI3MDE0NzVlOWY5OTA4MWE0YmY4MGJhY2Y3NGVhMiBwZXAtMzgyCis4NTcwNCAxYTkwNTM5MWUzZWQ2ZWQ0MjhiN2I2YjUzOTc2NjYxOTVmYzNiNjJhIHB5M2sKKzg1NzA1IDg5MTIxOTI5ODJjYzgzNzgxOTMyOWEzZmY4NTEwOThjZDJhNDAxY2EgcHkzaworODU3MDYgNjYyOGY4NmRiMmI2Yjc4OTAyYWNiYjUyNjY5MDU1MWY1NTlmZDJkYiBwZXAtMzgyCis4NTcwNyAxZWMyYmZhNTRjYWJiOWJiNjM0NzhiNWJiNjE5YzlmZWUzMzNmYjc5IHBlcC0zODIKKzg1NzA4IDAyNjM1YmFlYWQ1ZjVhYjVhNzMxNmNhYTZlMGFiMTQzMjZkNTI0ZjYgcGVwLTM4MgorODU3MDkgZTJiYTEyNDlhMmY1NjM2NjAyMmI5Njg3OTFhOGZhNTUzYzZjODVjMiBweTNrCis4NTcxMCBkNjA3YjYzMTMwNWRjMGE3MDIwOGRhODI0NWFkMGZkNWNhYTExOTJlIHBlcC0zODIKKzg1NzExIDRkNTVmMGIwOTBkNTgwZDgyZjViZDU3OGMwNjhmZDJiMTlmNzMxYTkgcGVwLTM4MgorODU3MTIgMTMwM2NlYWY0NDFhOWM5M2Y4MmUzZDQ0MjAwZWUyOTI3MTI2MjE1OSBwZXAtMzgyCis4NTcxMyBiNDdlNGVlMTU0MDMyY2U4YjQ0YzhhYWUyMDg1ZWI0YTA4OTE4MGE5IHBlcC0zODIKKzg1NzE0IDcwZDJiNGFlZGMwOWVhNDdmMDE0ZWEyMjFmZTE2ZjNiNjg1OWNiOWUgcGVwLTM4MgorODU3MTUgNTllOWI1OGRkYWY4NDhkM2FlMGQwODYxZGExNDYzYTg3NmFlYTZhZCBwZXAtMzgyCis4NTcxNiA0MmI4NGQzMTg4ZDEwZWZiMjI2YjViODJlYjJmMzEwMDc4YWZiOWZmIHJlbGVhc2UzMS1tYWludAorODU3MTcgNGYwZGRkYWY4MmQ2YTc0NzdlNDRjNTZjNDMxZTc1ZDUwMzEzMjk3MSByZWxlYXNlMjctbWFpbnQKKzg1NzE4IDc3MTdmOGM0NWZjYzM3ZmY3MDUyMzFhYjI2YTQ4ODBmMjMxM2FiYmYgcGVwLTM4MgorODU3MTkgNmU4ZDJlMmQ4ZDgyOGY3Mzk4OWQ3NTNkNmU1YWIyYzI3Y2NlZmRiOCBwZXAtMzgyCis4NTcyMCBlM2U2YWE2MzNmMzNiNGU5NjdmNzAzZmQ1N2JmNWYyMTA0Y2MyMDIyIHB5M2sKKzg1NzIxIDcwNzJhNWIyODFkMzdlNWM5NzJhN2FlODE3MjI1YWQ3OGE0YWNhZjIgcGVwLTM4MgorODU3MjIgYjUwMjU1NjljYmQ0MDZjYmFlOTRiOTM3YzY5YWVkOWU0YmZlYzBhMiByZWxlYXNlMjctbWFpbnQKKzg1NzIzIDhlNjBkN2E5NjE0MjI3MmZmMTcxYmU3YzA2Y2ViZWU2YjFjNmFkYmEgcmVsZWFzZTMxLW1haW50Cis4NTcyNCBhZDg5MjM3NjBkNWMwZGE3NDIzODU5OTQ3ODY2NzA1MzI4NDg4MTI5IHB5M2sKKzg1NzI1IDA1MTFjODY4YTRlMzhhNGM0MGJhNWY5NTgzYjUzZjU1NjUyZWRjOTIgcHkzaworODU3MjYgYjZhZDQwMTM3N2ZjNTliY2E5MTkwY2MxNTNhMTdhM2UyMWZmYTI3ZCByZWxlYXNlMzEtbWFpbnQKKzg1NzI3IDFmMGFiNzI5YzYzMjUzNWI0ZTIwNzMwOGRjOTMwMTE3MWE3ZjgyYjIgcmVsZWFzZTI3LW1haW50Cis4NTcyOCAwNDA5MGFiMzUzMWU0MzIzZTE0Mzg5OWRmNGVmZjRiYmU1YWRlOGYwIHB5M2sKKzg1NzI5IGM0N2VmMTgwYmUzOWQ2YzRlZTFhNGU5M2NiNGJhOGI2MDg3MDFjODcgcHkzaworODU3MzAgZTExYWMzMDE5OWIxMGFjMzU3OWJlNjYzZjgxNTRjMzRiZTMyODNiYyBweTNrCis4NTczMSAzNGJlYWI5NTk1OTU5YWRlZWQ0NzgzNzZhY2M5YzEzM2I1ZTI0NzZkIHB5M2sKKzg1NzMyIDAzNjc3MGRkOTA5NjdjYTJkOTQ2ZjU4ZDQ0MWY2NTVhMmU4ZDUzNWMgcHkzaworODU3MzMgOTYyZTFmNGM5YzAwM2I0ODI3MjdiZDQ1NDQ0MDNmYzAwM2JkYmE3OSBweTNrCis4NTczNCAwODY1MTljMWU3ZDI5YTgyNDc2NzljZTZkY2ZlZTRlOWJmNDMzMmJhIHB5M2sKKzg1NzM1IGQzYjYxZGM3MzJlZmYyNTcxZjE0M2FlMzNkYzMzZGFmMTlkMDQ3NDMgcHkzaworODU3MzYgYTY2MWI0MjRlZDQ3YTliZjQzMzdkMzA5Y2VmZTA1NGNlZjc4NDZiZCByZWxlYXNlMjctbWFpbnQKKzg1NzM2IGE4ZWZmMzlhZWIwOTk1YThjMzJiZDBkYjk2MGVkYzBmMTEwZTUzM2UgcHkzaworODU3MzcgY2Y2MzRhMzk3YmVjODFhNDJhODNkNzZmNWQ1ZThlMDZkYjI3ZDIxMiBpc3N1ZTQzODgKKzg1NzM4IGQ0ZDUzYjRkYjk2ZWQzODg5YWU1ZDY5NjYzNTA5ODhjZjhhNTY4NTggaXNzdWU0Mzg4Cis4NTczOSA1MmNiZjQ1OWRhOGJjZmFhZmJjN2RiYTZmNmNkZmMxMmVlZGRkMzQ3IGlzc3VlNDM4OAorODU3NDAgZWRjZmM0Yzg5ZjMwNDAxNTUyNzdkNDIwYTFiOGYyMDQ5MzU0NjUwMCBpc3N1ZTQzODgKKzg1NzQxIDU5YWFjMDc0NWVjNzViOGM1YjJhOTIyOTRmZDZlOTM5ODFkYTg4NDYgcHkzay1zdGF0LW9uLXdpbmRvd3MKKzg1NzQyIDNiYWVjZDRlMGMxMmExM2NhNjFmZWVmMGUxNTYzYzgwOWI1Nzk0MmQgcHkzaworODU3NDMgNmRjZjYxNDQ3YzMzZjY4MWYxNDY2YTM3NjIwZTQzMDkwNjkwNTY1OSByZWxlYXNlMjctbWFpbnQKKzg1NzQ0IDE2MThjYjE1YjViOTg0NDAwZDhhZThhMjkyMDRmMmJlNjRhMjNlNzMgcHkzaworODU3NDUgZTg1MGJiOTMwYzg0MmYxYjVjNWQzZTZlY2ViNTE1OTlhOWI2Nzk0NSByZWxlYXNlMjctbWFpbnQKKzg1NzQ2IDVjZjFlNmU2MWM2YzM3NWFlYThmYTJjOTBiYTg1YTBjMGVkNjExYzUgcmVsZWFzZTMxLW1haW50Cis4NTc0NyA1MGRkODZmNmYyNGFkNGI4NzhkN2I4MjlhMDM5YjNhNTNhMGEzMzBjIHB5M2stc3RhdC1vbi13aW5kb3dzCis4NTc0OCAzMDE2YTZhNGE2ODBiODRhM2MwZTRkMjA2MjAxMWQ3MjU0MDlhNGJjIGlzc3VlNDM4OAorODU3NDkgNjQzYTA3Y2M5ZDdmYjg5Mzk4MWU3NGI0YWQ5ODg3MmZiNDBjOTA3NCBpc3N1ZTQzODgKKzg1NzUwIGU1M2M4MGIwMTYzMzMyODdlZjMxNmYxYzNiY2Q2MWJjODRiYjY3YjIgaXNzdWU0Mzg4Cis4NTc1MSBkN2NlMzdiOWJjZWQyMDM2ZjFlNzA2YTk3YzY4NjIzNWEwZjM5NjUzIGlzc3VlNDM4OAorODU3NTIgMmYxYTU1MDY3OTMxMTUxNzVkZTdkNDRmYmZmNzUwN2Q3ZjI4NDE3MyBpc3N1ZTQzODgKKzg1NzUzIGY4ZmMyNGExZjlhNmMyZGJiNjY1YTUzYTFlNjRhNzQ1YzViZGU2YjAgaXNzdWU0Mzg4Cis4NTc1NCBlY2ZjMGRkMTVkNTdmMGQ5YThhZjc2MjE4Y2I5MDhkZTM1OTgyYWE0IGlzc3VlNDM4OAorODU3NTUgZTcxMWI4NTg2MTdiZTcyY2M2NjQxOTkyOWY5YWJmMjU1ODg3Yzg5MiBweTNrCis4NTc1NiA5ODU4OWQwZjExMDEyYWM2M2Y4YTlkZTlhZjdhNDczNDhjNjRhMWY2IHB5M2sKKzg1NzU3IGM1Zjk3YjA1NDE1ODU4MjVjNjZkYzBhNDNiOGZjZTQ0NmQzMmVjZTAgcHkzaworODU3NTggODBjMDQ2OWY5ODU5N2Y4MWU2YzM4NjFlODg1YjZlMTJhMDRlYzA3YyByZWxlYXNlMjctbWFpbnQKKzg1NzU5IDhlNmI3YWIxZTFhMTQwN2Q2ZjA5Y2NmZTgxZjgzODlhYjJlNDYxM2QgcmVsZWFzZTMxLW1haW50Cis4NTc2MCBjYmUwMjI0NzAxNDcxYzQ3MjlmNDcxNjIxYjUxZWMyMjQ0MzRkM2Q4IGlzc3VlNDM4OAorODU3NjEgMzkzNjZiYTVmMWMxMDc0YjdkM2FkMTkzNTQyYjYzNTk0YTU0Yjg0MSBweTNrCis4NTc2MiBiZWMxNmE1ZTBjZGFjMWVmMzhlZTY2NDRjYjg5NzFhMTk1M2NjYTViIHB5M2sKKzg1NzYzIGFiZGE4MjQwYTY0MDVkYmU5YTllMzk3ODk4YzQ5NjZlZjFiMjNkMzcgcHkzaworODU3NjQgYWVjYjU2YzNmNGViNWU3MmYzY2VhOTM3NjkzZjk5OTg0OGU5ZDk0ZiBpc3N1ZTQzODgKKzg1NzY1IDQ1MDc5YWQxZTI2MDA5YWNjMGY1NzI0NDBjYWMyMmFiMGE3NzQ5NTAgcHkzaworODU3NjYgMzgxNmViMTI4NmMwY2U1OTU4YmVhOTVjYmI2ODkxMjJiZjYzNDBjYSBweTNrCis4NTc2NyAyZTE5ZDFmNGI2MTJlYzg5M2RmMGY4NmU2ODBmYTQ5Yjg4MWJlYjgzIHB5M2sKKzg1NzY4IDcxN2FhY2ZkMmRjZDY4MzZjYTk4ZmU3ZmRkNGNiZDk4MDViMmU2ZDUgcHkzaworODU3NjkgZThkNWFkMGMyZjViY2IxZTA0Y2I4M2Q2NzU2ZTMwN2M3ODQ2Y2UyNCBweTNrCis4NTc3MCBhMmJiNTBmZmRmZjNkNGY5ZjQxMjdhMjM0Mzc0ZmNhZjdkYzA1YjRjIHB5M2sKKzg1NzcxIDJmOTRkNjhjMjczMTI3NzdhODM0ZDZiNzNkYzdjMjliNzMxM2EwNmQgcHkzaworODU3NzIgMGI1YmZiYTdhOTA3ZTZiOWEwMTAwYWUzNGY1Y2QzZjg0ZmQ2NjRjZSBweTNrCis4NTc3MyBjYWE1NmNmZjJmYjNhNzhlYWMyYjM0ZmQ3ODNjN2RkMTdkY2RlNGI3IHB5M2sKKzg1Nzc0IDA4MDE0NWQzYmJmNzY4MWE2MTU3ODU5N2ZkOWQ4ZDljNTAzMmE3ODcgcHkzaworODU3NzUgZTQ1M2U1YWIyMDdjYTQyM2MzMjU3YmI5NGFiMDgxYmNlNjc3ZjM5MCBweTNrCis4NTc3NiAyNDQwOTA0Mzg2MjNlMTFmMTJjNDM3NGVlNzgwZDc2NjgyNWI3NmZkIHJlbGVhc2UyNy1tYWludAorODU3NzcgZTc5YzU3NjdiZDA1ZDA2ZjM5M2NmYjYxMGE0ODY2YTQ1YmMyMjI4MSBweTNrCis4NTc3OCAwMmMxNjI2ZmY2MGZlMmEwZTljNTY1NTk4MmMwNGJjYTk2YWUzOGUwIHB5M2sKKzg1Nzc5IDI3MmI4ZmY2MGJhNGMwODQzZTA3ODFjNmJlYzliNDEzYzM2ZGY1YjQgcmVsZWFzZTMxLW1haW50Cis4NTc4MCA4Nzg3ZjRiYjRiMjE2MDUxOTg5YWM1NWRiNGE3MzY3YjJkODQ2MmNkIHJlbGVhc2UyNy1tYWludAorODU3ODIgYmQxYjMxYzM3NDEwYmMwM2FjODUxMTFjNWQxMGY1Mjc4MDg2ZmI0MCBpc3N1ZTU2MzkKKzg1NzgzIDZlNGVlYTc1NDNiYzM2ODk0ZDUxYThiMzNiYzZlZWIyNDRjOTZkZTYgaXNzdWU1NjM5Cis4NTc4NCA3YjU0NjI5NTFhYzliNTExZTc5Y2ExMmEyZTdmOWJhZDViOTZkOTdlIHJlbGVhc2UyNy1tYWludAorODU3ODUgZjk4NDQ2OWRlMGJiNmQzZGNkMWI2ZjUzZmM2ZjVlNDNkMjRiMjBiNiBweTNrCis4NTc4NiA4NTI1NTQ0OTY4ZjNhNTk2NGZiZTJmMDU4ZWRmN2Q5YmM1ODQxZDY2IHB5M2sKKzg1Nzg3IDEyZWIyNDQ2MzYxMDk0MTdjOTQ2NjM0MWJiNmYyNmNjNjJmMjcxOGQgcHkzaworODU3ODggYzZhMGViN2Y3M2JmY2ZkNzE2ZjhhYjI5YWNiNjllYTIwNWU2NWY3OCBweTNrCis4NTc4OSA0NmJiYmRjZDc3N2Y1NWI2YmMyNWUwNjFiMjU3ZDUyYWUzNzJiNTliIHB5M2sKKzg1NzkwIGZlMzU1N2RiZWY4OTI1MjM1Mjc0MDE1ZGFhZGI3MjgyOGRiMmViZmYgcmVsZWFzZTI3LW1haW50Cis4NTc5MSAzMWEwYWI3YWMyZDViNTUyN2NiYTVhZGI5YWIyYWUzNDMyODYyMDc0IHJlbGVhc2UyNy1tYWludAorODU3OTIgZWEwZjgzY2Y3ZTk5NTk2MzIyNjcyMDE3NDA4NDMyOWM2NmNjZTZlYSBweTNrCis4NTc5MyA4NDZjMGUxMzQyZDBiYTFhZWQ1MWFjMDE4NzIzZTExNmEyNjk0NDZlIHB5M2sKKzg1Nzk0IDE0MzhkNmI2NzA1MjY1MGY4MjYxNTBkZDViNzJhZTIwYzZhYmFhOGMgcHkzaworODU3OTUgMDZkZmFlYjU4YmRlMDFjMzY4ZjNkMTVlZjUxOTQ4Y2NhZmQwMjQ4MCByZWxlYXNlMzEtbWFpbnQKKzg1Nzk2IDg1OGFmNjBiMmRiYmNkOWJjYzRjNmZmMDA1NTEwOTc0N2RjYzI5YjggcHkzaworODU3OTcgZDk4NWJhOTgxMWU5OGVhNTgwYzEzYWY3NWY1YTc4ZWQ5NDc2MTg0NSBweTNrCis4NTc5OCA5OTEyZDYxY2RmMzRjMmIwOTIwMGM0MGIyOTVhZWM1YTcyYmY4ZGMzIHB5M2sKKzg1Nzk5IGNkODBkMDVmMmZkNjdkYjYxNjAwOGFjNjdmMDhjMWI2ZWQwZWJkM2YgcHkzaworODU4MDAgNWI2ZTEzYjZiNDczYjVmZGMyZmY1MGQ1OTkwYzJmZmM1NWJiODNhZCBweTNrCis4NTgwMSAzODM1YmNiZmIyOWMwYzZiMzEwMjY1YjBiNGQxMjQ4MmFjYzAyMGJmIHB5M2sKKzg1ODAyIDkwMmY1NzdlN2Y5NDk1OWIwNTczOTE3NjZjMGUxNGEzYTE2Yjg4OGYgcmVsZWFzZTMxLW1haW50Cis4NTgwMyBiZThhZTZiMTc1MzlkMjk5NWMwNmNhNjkwZmNmMWYyZTUwMjUwMGQ1IHB5M2sKKzg1ODA0IDhkN2YxODMzMmRiN2RkNDE5NGRiNzFmMWIzZjExNGM5NTc1YjYxNjAgcHkzaworODU4MDUgMWEwOGY0YTllYWZkYzQzZWFmM2RhYjYzZWVhY2NiY2JlZGE1M2QyMyBweTNrCis4NTgwNiBhMzBlNzU4MjBiOGRlZWY3MTAxYjIxY2U3ZWQ3NmMzYTc4ZDUyYzkzIHB5M2sKKzg1ODA3IDc5MjAwNWRlMjc3Yzg2YThhNDgxOWVlNGNmZWQwMmNmY2ZhNzMxYmUgcHkzaworODU4MDggZTk5NmM2MWU0N2M3YjM5Mzk1NjE1ZTliODY5Y2QyMzc4NTJjZjFhZiBweTNrCis4NTgwOSAwOTgxNzdhY2Y3M2YyMDg2MDgxYmIxN2FhMjMxMzMxOWIzODI0MTVlIHB5M2sKKzg1ODEwIGI5ZGNmZGZmY2I2MjBjNTI3MjRhMWRkYmVkMGU5YmY1MDVkYWQwMzUgcHkzaworODU4MTEgZWJmNjc0MWE4ZDZlMzc5ZGM3MTBmOWE5MDg3ZGMyMjRkNDcyZDVlYyBweTNrCis4NTgxMiBhOTRmYjhkYjlmMWE1MGY2MWIwY2FmNTRhNzc3NDA5ZGU4NjY2OGZiIHJlbGVhc2UyNy1tYWludAorODU4MTMgZGI1YWJkODFkYzk0ZWQ2YTY4ZDgwN2Q4OTJhMjU2OTkyOTkyMDcxYiByZWxlYXNlMzEtbWFpbnQKKzg1ODE0IDE4OTg5YWQ0NDYzNmFkNzVlZjE4NTg1MDZhZTk0ZTg4Y2FkYjM1YTYgcHkzaworODU4MTUgNTM2MzllNTdiYTQwOTIzYWYzNWM0MzNiMGRhMzZmMGNlMTYyOWQ3MCByZWxlYXNlMzEtbWFpbnQKKzg1ODE2IGE0YTI3MjQwZmUwOTM0YjgwOWI3MzhhYjcyOWNhY2YxNjllYWRjZTMgcmVsZWFzZTI3LW1haW50Cis4NTgxNyBmMTQ4Zjg2NGIxNjhiMDg3ZTg5MjczODA2ZDI3N2VlMWQ4NThjYTU4IHB5M2sKKzg1ODE4IGIxNzJkNzUzN2I5OWI1NDA0Yzk2ODk2OGViM2MxM2ViOThkODY4NzEgcHkzaworODU4MTkgNWI1MzZjOTBjYTM2ZGVmYjMwZjY3ODU4YmZhZjdkY2M0YjQzZjQ1MyByZWxlYXNlMjctbWFpbnQKKzg1ODIwIGE4MjA3MmNhMDZiYWEwNTFkM2MwMDFiMTlhMGRkZDU5ZTY3ZmQ4YWQgcHkzaworODU4MjEgYzVhZWJmZmM5ZmFjNDY1ZmE4MjA1Yzg3MzY2MjkzMDAzZTBiZWQ1ZSByZWxlYXNlMzEtbWFpbnQKKzg1ODIyIGNjZjJmZjA4ODY2YjliZTZjMmFkNWM2OTAyMGIxMmE0ZTAxNTIxYTMgcHkzaworODU4MjMgYjRlMzcwYzhlN2NhZjQzMjEyNTFhOGU4MmM3MDg2OWRmMDQ1MzE0NCBweTNrCis4NTgyNCAzOWI5ZTlkZTM3MmIyMDEwMzBmNTVlZmJiMGU2NTFlMTJlMTFlNzZkIHB5M2sKKzg1ODI1IDVhMDU0NTRlNTY1ZmE3OGYzNTA3NjM4Y2IzZGExZmVhY2JkNTQ0ZjAgcHkzaworODU4MjYgMTkwOGExNDZlOTYxZGMzOWY4MGIwZDk0OGRmOTVmMzkyNjBmNDA3ZCBweTNrCis4NTgyNyBkYjVhNTA4MGY5YjhhMGVlMWViNmQ0ZGQ5YTY4MmE5MzgwM2Q0YzkyIHB5M2sKKzg1ODI4IGNiNjQxOGY0ZDYwYjljZjY0OWIwMzQ0NjA0OGVlZjM0NTdhYjg1OTAgcHkzaworODU4MjkgNGUzNjA2NTI4M2NmMmM2Zjc2ZDc1Y2YxMzZhYzMyNjc3OTg2NDZlYSBweTNrCis4NTgzMCAxNTk1MzBmMGU0MDZhODY0ZTI0NDU5NzgxMTZkZTFhMDA1ZDU4NjQ2IHB5M2sKKzg1ODMxIDY2MGQ1ZjMyNDgyZWY0ODk0M2EwNmVjODc4YTBhNzQ2M2JkZGVjODEgcGVwLTAzODQKKzg1ODMyIGY1NzBkYTlhNDNmODZlMGNiMWJiNzZjMDc4MjJlNzg0OTY0YjVhYjQgcmVsZWFzZTI3LW1haW50Cis4NTgzMyA0NGQ4MTkyMmE4OGYzNWRiYmVjMjVkODZjMmVmNjUzZTc2NTQxZDhjIHB5M2sKKzg1ODM0IDVjMWNlNWMzNjBkYTIxZmRlM2YwYjBlZGIzN2Y0MGNjZTE2N2EyOTEgcHkzaworODU4MzUgM2E5YzNlYzVlOWQyY2ZmYjBjZmJhNjQ1ODc1ZGVhYTA5ZGRjYjc3YiBweTNrCis4NTgzNiAyMzUyZTVlNDQwNTNlOTViYjY4NmJmYjc2ODkxOGMyZTE2MGQwMDRjIHB5M2sKKzg1ODM3IDBmMDdkMmRiZjgyMGI4OTQ5MjUwYzRlOTBhMWE0MWI2MWRmMmZkNTggcHkzaworODU4MzggNGU5MmNkZWZlNGM3NDM3ZmY5MmE4ZjEyZTNiYzY2Mzk1OWJhNmE4ZSBweTNrCis4NTgzOSBkN2QzMjNkZTM1ZTc2ZDI4MDkyOTI2ZWVlNzE5OWM1MDM3OWJmYzY3IHB5M2sKKzg1ODQwIDlkM2ViYTAzZmQyNWQxZDdlZWE0Yzg1ZjdkNDYwMzFkYjA3NDA4ODggcHkzaworODU4NDEgY2VlYmIzZjQ1ZjlmYzYyMzg5ZDM4ZmFhYWYyYmFkNGYzOTEyMjk0NSByZWxlYXNlMjctbWFpbnQKKzg1ODQyIDc3MmI1NWYwMjgzNWRlNjc2OGNiMzhmMThiY2ViNjBhN2M4NDJkYjUgcmVsZWFzZTMxLW1haW50Cis4NTg0MyBkMzUxMDBjYzZjNmIxYjQ5MDM1MzU5NTYyYjVhMzZjZDlmOThhMWMwIHB5M2sKKzg1ODQ0IGU1NWEwMGNmNjc4YTdlOTcxZGNiMWNmMDEzZmEwM2E3YzVhNWYxYTggcHkzaworODU4NDUgYjljN2JkY2FhMDMxZDg5MjE2NTRjNjI4ZGRlNmNkM2MwNzViODNjYyBweTNrCis4NTg0NiBlNTE1ZDEyNDE4NTg2ZTUxMzNkYzRiNTk3YzcwNDIwYzQ3NTY5YTY0IHB5M2sKKzg1ODQ3IDMyYzRlOGU5NWNhM2NiNWJmODhkZGRkMzk1ZDRlZWYwZGFjNjJlMzcgcmVsZWFzZTMxLW1haW50Cis4NTg0OCA4NDE4OTJlMjcxZjdmODUxNDFiYWJiZDA2NjliMTIzZDg4ZjYyNWRjIHB5M2sKKzg1ODQ5IGE5Yzc5YTlkMmQ5MWQwOWZhMjg0Y2U0ZjQ5Yjc0NGExZjEyNjNiOTMgcHkzaworODU4NTAgOWRhNWUwNGIwNzkzYjk5MjZmMTAxYThkMDMxMjFmYTY4N2EwODgyNCBweTNrCis4NTg1MSAxMTg3MTU2YTFmMzJjMTE2ZDdiYTRhOWRhNTIzMTRlYjEzZGZiMWY2IHB5M2sKKzg1ODUyIGM4OTJlNDU0N2ZlZGNjOTYyNjVkZmYxYTNhYjZiZDFkOTQzYzk4MzQgcHkzaworODU4NTMgMjlhZjE4MWRlMmYyZDg4ZjM5YTMyMTMxM2RjMWI5Yjg5ZGYzMjA0NSBweTNrCis4NTg1NCBiYTFjNzNlMTZjOGIxZjkzYThhYTVmOTQzMGI1YTFlMzBlM2QxNTdkIHJlbGVhc2UyNy1tYWludAorODU4NTUgZmY2ZmEyMGJkYWY4ZGVjY2M1ZDg0YTYwYmY5NGM1NTYzNmI4N2VlYiBweTNrCis4NTg1NiA5ZTRhMjgwOWU1NWNlMGYwNzQ0M2U2MjgzMzMxMDY5YTVjZTQ4YTViIHB5M2sKKzg1ODU3IDRiNTQyMjE3ZTkzZWQwMTdmNWVlYjE5YzJlY2JmNTdhOGJhMjdlYjcgcHkzaworODU4NTggYmY1ZGE2MzYwNTNhYjk5MjZkYzdhZGJhNjUwYjdhOTY5ZjBjZTRmMCBweTNrCis4NTg1OSA2OTM4ZDdhZDYwZTQxYWU1MDljYWI0Yjk1NDIzYzBhYjQ4Y2Y0NWMxIHJlbGVhc2UzMS1tYWludAorODU4NjAgZGYwMjA5MzU4OGQ2YmMyYTFlZDg4ODBmNWI0ZWIwYTk0NWMwODRhNSByZWxlYXNlMjctbWFpbnQKKzg1ODYxIDRkY2EzZjBlMGZjMDQ2N2Q3N2NiY2U5Yjg2MjllNTU4M2Y2YzI2ZmYgcHkzaworODU4NjIgZTllM2ZlNGM5ZTMwMGU1YWNjMjE1NzM5ZDRhMGJkNzhkYzczMzNiMCByZWxlYXNlMzEtbWFpbnQKKzg1ODYzIGViYjgyZjAxZGJlMjYxMDljNGY0ZGExZGIwYzM1YzE5YzQ1ODEzMjIgcmVsZWFzZTI3LW1haW50Cis4NTg2NCA1OWFiZGI5Mjc4ZjcyMDMyNDM3M2NhMmViMWZmODMwNTA0Y2ExOGNmIHB5M2sKKzg1ODY1IDBkNTBhOTExZDc0ZmU2MmFjMGM2OTViYWU4NTRmZWVlZjlkZDNmMTIgcmVsZWFzZTMxLW1haW50Cis4NTg2NiBhZjA2ZjA5NzJkOTdhNzY4N2M2YTFmMmNmOWY4MDI3MzQ5NjNiMzliIHJlbGVhc2UyNy1tYWludAorODU4NjcgMDUxYWE0MjdkZmVkZmY1OWQyZDI5MDI1NTAxNTRjMjc0MjM3NmExZCBweTNrCis4NTg2OCAyMTRiOTA1MTg0MWVhODllOTdkOTEzMzQwYzg2MmE1MjJjM2Q0ZjdhIHB5M2sKKzg1ODY5IGFkZDFiYzA1ZTQyNjZkYmI5ZDA4NGVkMmQ2OTM4ZjI4ZTI1N2VhYTggcmVsZWFzZTMxLW1haW50Cis4NTg3MCBmNWUzZGU4N2IxNGJmMDQwNzkwYjUxYjA1MmQ1MzhlMDFhNDFhODA0IHJlbGVhc2UyNy1tYWludAorODU4NzEgNjRkZTE3NDZjZDZlMzk2MzIwYTJjOGMxZTE1ZTFmMzk3MzU2NTIyNiByZWxlYXNlMjctbWFpbnQKKzg1ODcyIDNlNzhlZGU4ZmQyMTI0N2I3YWJlYjA3ZDRlYTNiN2EyOWQ0ZTc4NjUgcmVsZWFzZTI3LW1haW50Cis4NTg3MyBlNDQyNWQ2OGRhZGYyYzM4NjQ3NTk4NDBlZjBjNzM3OWNiOGE3N2YzIHJlbGVhc2UzMS1tYWludAorODU4NzQgYTI4MTk4OWEyMThiMGMxZDVlOWZjNTVlNzQzNTU3OWQ3YWNmNThhOCBweTNrCis4NTg3NSAzZmY5OTA4OWMwMmUzMDQ5MTZiYmNjZGRmM2E1YTJjMGQ2NWE4OTAwIHB5M2sKKzg1ODc2IDZkZmY1ODFkMzBmMzgxZmMwOGUzNWQ3NGNkZDg5MDcxNzg3NTkzZWMgcHkzaworODU4NzcgZTVmMjY5ZGQzMThiODdlYTE3ZTYxZTllZTk3MjU3NDA2YjlmMTJhNCBweTNrCis4NTg3OCA1YTg4MmY3ODllYzFlN2Q1OGFiZjFkMGMzOGZkNGEzYTBiZTkwOWQxIHB5M2sKKzg1ODc5IDViMTYzZjJhNjAyYmVjYTMxODIxYjhmZWRhNmU3Mzc2ZmY4NWY3OWMgcHkzaworODU4ODAgN2FkMzVhY2IyMGIwZDQ5OGMyMjAzNTdlZjIwZjg5YjJmYTRhZDBjMiBweTNrCis4NTg4MSAyMTEwZDI2OWE4NmVjMDBlZDM0NWIzZTAwYWY1MGI4NTgzNGMzYjUzIHB5M2sKKzg1ODgyIDczMTIzM2Y5MDQ4NjlkOWY1OTdjNTMzNThjYmYyMGEyNzdkNGRiNDEgaXNzdWUxMDIwOQorODU4ODMgYjljYTEwMmE3NmQwMzM0MzQ0NDlmYjc3ZTM0MTM0ODhiOTNmY2I2NiBpc3N1ZTEwMjA5Cis4NTg4NCA2NmI0NGNjYTI5YmI4MzMwNTA0MmU5MzVjZGMwZTQyZWQ5OTQ0MDg1IGlzc3VlMTAyMDkKKzg1ODg2IGQwN2I5YjBjYWFlZjFlNGE5NGE4Y2E2MGNlOTE4NTFmYTIxOGQ3ZTIgaXNzdWUxMDIwOQorODU4ODcgM2Y3ZDAzNDI5NDkxODZlNTEzMjZkODFjOTY2NmFiNGNiODlhOWE4YyBpc3N1ZTEwMjA5Cis4NTg4OCA2ZjMxZjBhZjUzNTc2NTAwYTU1MjA4YWNiNzNlZmFjZmIwMDNkZWFlIHB5M2sKKzg1ODg5IDViOGU2ODhlYTVhZWRkOWNkNWI5NTA2ZmYwNGVmZWQwYWMxMTVjYmMgcHkzaworODU4OTAgMTVlYWNiNGM1NDIyODMyMWYzODk2MTNiMGQ3MDMxZDU5MmJkZmQ2YyBpc3N1ZTEwMjA5Cis4NTg5MSBkYzA2YWVkOWI5ODQ1ZjBjYzY5Nzg0ZjM0MTg5OTY2ZjkxNDQ5M2ZjIHB5M2sKKzg1ODkyIDUzODNhZThkYjNjZGQxYjVlMDE5NTQ1ZTkyOGYwZTE3ZjI2ZmZkMDUgcmVsZWFzZTI3LW1haW50Cis4NTg5MyAxYzExNGQzOWFlNTI2MmFjNTNkZmI4NTNiZDY0MjhiNzI3MWI5YjdlIHB5M2sKKzg1ODk0IDY5OGQzMGI0NTExNmNiYzQwZDk2ZWRlNTZjMTE5NWRiMWYwZDI2YjcgcHkzaworODU4OTUgNjEzYzdiNTk2ZmU3ODEyZGU4N2I0MDE3ZmU1YzE3ZWJjYWVhZjA2NyBweTNrCis4NTg5NiAxYjdhMDM4NWM2NWY3YWI4ODk3NzMxMzgyZjE1OTMwYmVlN2QyNjI2IHB5M2sKKzg1ODk3IDcwZWJkYmQ3OWEwMmQwODNjZmI4YmI2MTE4Mzk4MGEzNWMyZGI5NmMgcHkzaworODU4OTggYzZkODY0MzlhYTkxODQ1MTg1NDFmOWUwMWRlOTA1NjRiMzZhZDYyYyByZWxlYXNlMzEtbWFpbnQKKzg1ODk5IDQxYTMwMTQwOTI1YmUxMzUyNmU0YjQ4MDAwNWY0Mjc2YTEyZWUzMDAgcHkzaworODU5MDIgYTU2YTJhODAzY2Q3OGVmOTQxN2U5ZDAwNmU0OWJjOTNkZTM3NDcxYSBweTNrCis4NTkwMyBiNjZkZWQ0YmZmMjEzN2NiMmM0YTFhZmU1NmRkOThjYTFlNWFhMzlkIHB5M2sKKzg1OTA0IDZhYzE4NTc2ZThmYTk5NmVhYmZlOGYwZmUxYjdjMjVlYjExZGVmMDggcHkzaworODU5MDUgNjRjZWU4ZDExZjJlOGI4YjY1ZTZlY2JkNzM2MGYxZjdiYTJjN2E1MiByZWxlYXNlMjctbWFpbnQKKzg1OTA2IGU4Yzg0MDBjYWE5OWNhNTdmOWNiZjM2MjM5YmI4YzY5MDJlOGQ5NDkgcmVsZWFzZTMxLW1haW50Cis4NTkwNyA0YWYxNGY5YWE5NzA1NjViMjA0MTJjODI1NzNlNzgzMWM2MjY5OWE5IHB5M2sKKzg1OTA4IDVlNzIwZjlkMWU2YzE5ZDdmYzNlMzMxMGQ5NTJmNTYwMGUzMGEyNWIgcHkzaworODU5MDkgOGM1YTEwMWE2MzU0NTgzNzAzNWVjYjVlNTUxYjUxYWViNmM3M2IyZSBweTNrCis4NTkxMCA4YThmMmFhOWRiMGY5OTBkNWJhNzMzZWUyOGVhNWMzZWY0N2Q3M2JlIHB5M2sKKzg1OTExIDcyMmIyYTRmYWUwZDE5NmY2M2M2MzEwZDdlMGEwZTQ1ZWYwYThiZWMgcHkzaworODU5MTMgNGQyM2RlNGY0MTAyM2M3OTNjYjY2NjhkZTlhZGFkYjg3ZTRmOTg5MyByZWxlYXNlMjctbWFpbnQKKzg1OTE0IDA4NjBiZTljODM0MzNhNjNmOTljN2Y0YmFjNjY2MjBlNGQxNmY5NjYgcHkzaworODU5MTUgMTZiOTI5NzFjMmQ0NDBjMmVmZGFiNTcyZThhOTZiMjkzM2ZhMjI0YyByZWxlYXNlMjctbWFpbnQKKzg1OTE2IDA1MGYwZjdiZTExZTI2MjI0OTkwMTFjMGFlNWY1MDZmODZlNzc4MzEgcHkzaworODU5MTcgZjM0OTg4OGZhZTY0MzljMGJiY2JiMjI3NmRmOWM0MWUyZTA2ZGU4MyByZWxlYXNlMjctbWFpbnQKKzg1OTIwIGNmZjc4ZmZiOTMyYTI3NmZjZDMwZGEzNDgzMzI3YzE4NTI5MjFlZjEgcHkzaworODU5MjEgMGI1ZTZmN2VkZjZlNjJhZmNmOGZlODQ1MTJhZjJkOWMzN2MxYjBhZCBweTNrCis4NTkyMiA4ZTYzMzhjZTA4NDY2NGJlYWM3ZjVlMmU2YTI4ODFiMzQ0YmMzMDBlIHB5M2sKKzg1OTIzIDRhN2EzZTUxY2QyOWEwMjY4YWM3NTFmOTQ4MTlkMzU1MmFjNjAzNGUgcHkzaworODU5MjQgZDE0NzI2ZjRiNDEwN2I1NmUxODhiOGE4MWZhNjcyZDJlYmY3Y2IyNyBweTNrCis4NTkyNSBjZjFkMjczMjFjNzgyMTcyOGE3ZGMwMmZlMTczOTgwNGUzM2M4Zjk1IHB5M2sKKzg1OTI2IDQwNDI3NzYwZTE2Mjk0YWE5NDc0NDYzYWUyNTcwZDU5NGQ0OGIxNGMgcHkzaworODU5MjcgMzcyZDZhZmYxNWJlOGM2NGU2ZTI4OTMyNDE4MmU4OTlhNzE3ZWYxNiBweTNrCis4NTkyOCA4ZmExMzJhM2FmYjViZTlmYTVmOTEzNTNmNmI2ZTc4NGExMGJjYmFmIHJlbGVhc2UzMS1tYWludAorODU5MjkgNWMxM2NkMGY5OWI0NWU0NTk2YThiOGQ4NzNkYWU0MGY1NTE2YzA5MCByZWxlYXNlMjctbWFpbnQKKzg1OTMwIDE1MzJjYTIxYjkyMDU4Njc2NGQ1ZWQxM2NhZTk4OTljOGJiZmM1ZTIgcHkzaworODU5MzEgNjFhOWFlNTIyZGNjYTZiNDk2MDI0OTllODhkYzEzODJmY2RkMWJhMiBweTNrCis4NTkzMiBmM2ExZWFjNjM1Zjk4YzdjZWQ3NGI2MjAxMmQ5MmQwZDllMDJlMDY2IHJlbGVhc2UzMS1tYWludAorODU5MzMgZjhkMzQ0ODQ5NTk2ZTE1MTZhNGJhYjQxODRlZmNmZGZjZGE0YmNhNSByZWxlYXNlMjctbWFpbnQKKzg1OTM0IGE0ZmQzZGM3NDI5OTcwNzY3YTk2MWNlMDIwNzFhZjY2MTkyMGQxMjYgcHkzaworODU5MzUgOGIzMmU0ZjZiZDk5ZDJmYjNkNWE0MmVjNjJiYmY0NjAyOTIyODA5MiBweTNrCis4NTkzNiBiMTgyNzViMTE3ZDIxMGI0MTE4ZDU4M2UwMTU1MDI3MDQxMDk0MGMxIHB5M2sKKzg1OTM3IGEwNjI2Zjk3MjdlMGYyZDA4YTI5NTMzOTc3MjY1ZmEyMDlkODczOGUgcHkzaworODU5MzggNzY1ZDQyMWQ5NDNjNzM1MTRmMGZhODM0YjdlNDlkODYyMjEwNzFhYiBweTNrCis4NTkzOSAxZDU1Y2MyODRkNGFiNWFmZTM3NGJkYWQzZDkyMDA5YTlhODAyOWU4IHB5M2sKKzg1OTQwIDJjMmVjZWQ2MzVmNjBkMGEzYjc3OTk5MDRkNmQ2ODdlYTY4NjMyYzIgcHkzaworODU5NDEgZWI1MGM0OGQ5Y2I0OTA4YWE0YzU1ZGFiM2ZkY2RiNWYzYTJlZTU4MCByZWxlYXNlMzEtbWFpbnQKKzg1OTQyIDNkYTIzZGViNmU5YTUxOWViNmY5ODU3ZGFhMmFjZTM0NTA2MTA3YzMgcHkzaworODU5NDMgZDE2MTcxNGU3YzkyOGM0ZTMzYTM3ZjhlMDI1ZWY0ZWE4ZTY3NGI3YiBweTNrCis4NTk0NCA1NTZmNTkxNjY1NDk5YzI0MjExNDk2N2MwN2ZjODM4YWQ1NzM2YTJlIHB5M2sKKzg1OTQ1IGJlZGVkNDdiYjE3ZjhiMGUzZTA2ZDc3NzQ2NDc4ZTk3NjQzZGZkN2MgcHkzaworODU5NDYgOTI2ZThiNmI2YzlkNmY3ODNhZGYzZjFmN2FlOTJlN2I4MzNhOGZiYyBweTNrCis4NTk0NyBlNzI3Y2YzNTQ3MjAxMDgzMzJmZGNkMDJkY2JmOTNhMzhiODc5OTNkIHB5M2sKKzg1OTQ4IDUzODZmMWY0MjhhMTVlYWI1OGU3Y2IzNjM2MmM2N2I0Mjg1ZmQxYzAgcHkzaworODU5NDkgZjI0YTUzZWRlOWVkOGU4NGNiYzkxNGFjM2FhZTk5ZTk0NDFlNzdhZiBweTNrCis4NTk1MCAxYzAyMGJjZDUwY2Q3ZWI0NTBkZGE2NDMyNWY5YWVlMTFiYjc0MDkwIHB5M2sKKzg1OTUxIDVjMDEzZWMyNzMyN2RkYWY5MTY5M2U5Njk4YmI5YTdjYWM1ZGMyMTEgcHkzaworODU5NTIgZTM4ZDJkMTczMDg1ZmYyODVlYzQ2OWFlNjUwYmVmY2NiMzM1N2NkYSBweTNrCis4NTk1MyA0MGFjNDVhMDkyYjc3ZDRhMTdjMTlmNjQ2MzAyOTY5Y2QxODRmN2Q4IHB5M2sKKzg1OTU0IGM4NWY1MzM5MDY4YTExYjliMTUxMTY1MWE1YTY5NWRjZWFhMTQwOWEgcHkzaworODU5NTUgNjRlZjYxZDlmZmRjNDE0MWNhMjEyMWZlMWJjMmFjMjgzMWM1N2UxNCBweTNrCis4NTk1NiAzY2NjNmFiNTQ2YzNiMTIwNjM3MmEyYWE5Mjk4YmViYjBhODdlYTI2IHB5M2sKKzg1OTU3IDNmZGJjNmE0YjBkMGY3ZDgxMDI0NzExNDVhYmU4YzYxZGQ5ZDc2ZTQgcHkzaworODU5NTggMTg4MzAyOWM3YjhhNzQ5NDE2ZjI0N2NhN2VkYmQ3ZmY2MTRlNzgxNyBweTNrCis4NTk1OSBiYWFkNTJlNzhkY2IzY2EyZjBhN2IxZDg5M2VhMzFkZDA4Y2VlZmNlIHB5M2sKKzg1OTYwIDBmNzY1YzMzZjRkZTI3M2Y4Nzc2NWJkNjM0MjcwMTFiYjU3MjRmMTcgcHkzaworODU5NjEgM2IyMTBkMDQ4ZjVkYWM0OWNkZDE4ODVmZGUwNjczODhkOWQyZjI3ZSBweTNrCis4NTk2MiA5OGNlY2EyNTE5ODhlMmVkMzhhOTZiMjg4ZmNkYTM2MzdlODY2YzJhIHB5M2sKKzg1OTYzIDliNjZhOWYxMzdiNmMwOTg4MGMzYjU1MjEyZmI5YTdhMTI2MTFjNTcgcHkzaworODU5NjQgNjAzMDEwYWY4MGNmMzY3ZjAyMTA1MWZmMmRlNmE4ZDdmMjBlN2RkNCBweTNrCis4NTk2NiA2NGE5N2M0ZWJhZGNmNDk0YjliZjEzYzc4ZDk4NTJlODM4NzVlZjExIHJlbGVhc2UyNy1tYWludAorODU5NjcgMTgyY2IzZjgyYjBiNjU3ODNiZWNkNzA0MjgxZTE0MzFlNjczNWI1YiBweTNrCis4NTk2OCA0ODBlNDU4MjhkNGIxOTEyMGNhZWFlYjlhMzQxOGI3OWYxZDJhNmI3IHJlbGVhc2UzMS1tYWludAorODU5NjkgMGEyZWMxNzRmYmNkNjI4YzEyM2Q2ODk3N2JkMGM1NzViNzdjMTE2NSByZWxlYXNlMjctbWFpbnQKKzg1OTcwIDkwYmM3MWQ2YmVkZmExNzI2M2RhOThiNmFjZWQ3YzA4NWRkNzFhNGEgcHkzaworODU5NzEgMzIyN2I2ZjIwNGNjNGIyNjBjZGY3ZjU4NGQxMjY1MTYwMTA4Njk5ZCBweTNrCis4NTk3MiBhYmJkOWQyNmFlNmM2NGVlNDgzNTNiZGZjNmY1OWNlYjNjNzljMzI3IHBlcC0wMzg0Cis4NTk3MyBlYTdiMjYwMGZkYzU5OGFmMzVlMGQ0MmVhNDQyOTk0OTMzZDYyMjZmIHBlcC0wMzg0Cis4NTk3NSA3MTA5NjhhMmUxNjNiOGQ5NzI0YzQ2ZGIxZjJlNGI1NWE0M2MxNGZhIHB5M2sKKzg1OTc2IDkzNTZkNzY1ZDc4ZTNkMWIwOThmYzMwMTdlM2JkNGE1OGFkYzlhNjYgcGVwLTAzODQKKzg1OTc3IGY5NzIxYThmODdiZDhiZDNkODNkYWJlNTg5OWE2YTdhMjE3NTBkODAgcHkzaworODU5NzggZWY2ZGFkNzUxN2M1YzU0Zjk4NzBhNGJlZjI5NmFlZDNkZTE3NjZiZiBweTNrCis4NTk3OSBlNmFmMTQ2YmIzOGI4ODYwYzQ3MGQ5ZGY0MGE4Mjg2YTE3ZGJmZTRjIHB5M2sKKzg1OTgwIGVhMTQ5NzdhMzZkZWY4OGFiZGQ1ZjVlMGNiNzIyN2Q2MmEzMGQ5MGMgcHkzaworODU5ODEgYjAzNzc5ZjAwNzM5ZDRjNmM5NGU4ZDAyNTdmMDI2MDA4NjYwMmJkNiByZWxlYXNlMzEtbWFpbnQKKzg1OTgyIDgxOWIxZTA1MzVkMTkwYTZkNTQ4NTBmNjlmODNiNzUyZDIxNjY0ODYgcHkzaworODU5ODMgYjcxODBhZmEwZGZmMmY3OGU3NWUwYmQ3ZDFkMDFhOGMxZGZiMDgyNiBweTNrCis4NTk4NCAzNmVhNzE5MDJmYzhkMWM5ODJhYTIxY2E3ODZiYjAwZTk0ZTM5ZjFmIHB5M2sKKzg1OTg1IDM4NTZjNjFiNWM4YmJiZWQzZDM1ZGY3MjE4MjRlOWY0ZTNhMDIyZmQgcmVsZWFzZTI3LW1haW50Cis4NTk4NiBiMDFmYzNhNDJkMzVmYjhiZDlkNGE5NjQzOTIwOThjZjJhMWQ1MTAwIHJlbGVhc2UzMS1tYWludAorODU5ODcgNzJhMmQ0ZDk0MDAzMmQyNTViZTRhOTU4OGM4YzNmOTZiNmNlNzFhNSBweTNrCis4NTk4OCBkNjk4MjA1NTQzYmQ3MTk2MDk1ZjU5YzNiYzVhNDkxOWJkOTE5MzhiIHJlbGVhc2UzMS1tYWludAorODU5ODkgZTIwM2VkMDcxZmNhYjQzNzFjYWMzYTRkMDY0MmU2YmI4MjQ4N2Q3OSByZWxlYXNlMjctbWFpbnQKKzg1OTkwIGI5NDM5NjVmYzQyYmM5MWY3MGYzZDJmODhlZDY3MzI5N2UwYWEzMzYgcHkzaworODU5OTEgOGQ4MjQzNDgzMjI4YzAzZmRlOWM4NTZiMTRmZWMyOTJhN2FhYTljZCByZWxlYXNlMzEtbWFpbnQKKzg1OTkyIDI0YjE4Y2Q0ZDVmMzU0OTcyNGFkYmJmZDczYmMyZDVlYmRkOWFhMmYgcHkzaworODU5OTMgNDJhZDRhZTZkOGVlYmI2YjI0MGE5NzVkMmYxYTA2NDJlOTYzZjNiNSBweTNrCis4NTk5NCA2MjRlODMxY2U3MDAyOTFmZThlMTNjZDI2NjU4YmMzN2IyZTI2ZDMyIHB5M2sKKzg1OTk1IGNlNTNmZWE3Zjk1NzNmOGFmZThiNjY1OGJkOGY5MDdmN2FlZWQ2MDAgcHkzaworODU5OTYgNWI2MjcwMzVhOTIyZjdhNDEyMTU1ODgzMzliNTJlZmZiYTY4OTE5NiBweTNrCis4NTk5NyA5MjUxYmEyNzJmMmNhMzNmMDhhYmM1MWE4ZThhNTI2ZWQ2ODZmYzg2IHB5M2sKKzg1OTk4IDBiYzJiMDY0MDZmOGJlM2EzMTYxMjRlODM2M2FiM2E5MmU5MTQ2MWEgcHkzaworODU5OTkgMTk1NGM4ZTMxY2IzOGE4OWQ2N2IzMTVjNDY2MzM2YTkwZWU1OTJiMCBweTNrCis4NjAwMCBmMTgyNTE4ZjNmNDI4Y2NjZWYzNzhjOTc1ZjQ0MjQxMWZhMjRlNDVhIHB5M2sKKzg2MDAxIDcxZjRmM2IxYzMzNTZlZWM1YzhjYzVlMTZkMmRjZTBiM2ZmYTYxZjcgcmVsZWFzZTMxLW1haW50Cis4NjAwMiA5ZjEwOTY4ZjUxMWQ3M2YxYmFjM2Y5Mzc0NzM2NDk4YTZmZDVjYzkxIHJlbGVhc2UyNy1tYWludAorODYwMDMgNzM2ZjNhMTBkMTczMzEwMzI3NWVhOTAwNWE1ZjAxZGQxNDI0MzdkMiBweTNrCis4NjAwNCAwNmUyMTUwMDExOWEyOWNlZjA3MWZlNjdiODhjMmYyYTkxZDE4ZmQzIHJlbGVhc2UzMS1tYWludAorODYwMDUgNzMyZmZhODZjNzk4YTlhZTZiYzI5ZTdiODMzYWNlMmMyNGE3OGE2NSByZWxlYXNlMjctbWFpbnQKKzg2MDA2IDIxMTg1ODcyM2I4Y2E5NGI1N2ViZDYzNjY4MTg4ZTAwZDBiOWI5ZDEgcHkzaworODYwMDcgMmUxYWQ3MTIxZTI5N2YxNzZhYWRhMmQ2MWY0NGFhMGEwODUzNjMxYSByZWxlYXNlMjctbWFpbnQKKzg2MDA4IDQ1OWU5NWI2OTMxYmU0M2EzMjAzZGUxNTRhZjQ2OTk1OGI0ODlmYzkgcHkzaworODYwMDkgODc3MDljNmU1NjkwNTczN2IxMDk5ZTE2YmM4Y2Y2ZmI2MTk0NmViMCBweTNrCis4NjAxMCA5MGJjMGM1ZDcyMmY3NzRjNTQ4OGFkZDZmNWM3NTJjODk1NmQ4OGVkIHJlbGVhc2UzMS1tYWludAorODYwMTEgMzA1ZTkzZmQ1YjZkNGFlZGI2ZjM1ZDdjZTFmMzZmNjI5ODI1NzhlYyByZWxlYXNlMjctbWFpbnQKKzg2MDEyIDNhNzU1OWJhOGViNTkyMDM2YTJhY2UwZDE4MzZkYmQwMTJjNWRlNzkgcHkzaworODYwMTMgNDlhMzFhZTAzNDhhNThjMTRhM2RlMjExZTFlZWM4ODE1N2UyMmFjNyBweTNrCis4NjAxNCA2MTJhYmIxZTc2NzYyMWM3YjZiMjdmZGM3MTA0MTA5NDFmNjZjNWI4IHB5M2sKKzg2MDE1IDhiZTA4NzYxZGRjMGJlNTdmNDU0ZGZkYjMzMDYwMTc3OTBlOTlkNjggcHkzaworODYwMTYgOTdmMzJiYTVmZjg1NGE2YWJkMmVmOTM3Y2M3OTlkNTI5NjVkNDc3NyBweTNrCis4NjAxNyAwZWU4NmZkOTAyZjFlZjM1YmRlYTY0YTM5YzM1YjlhNjlmZWFmNjRkIHB5M2sKKzg2MDE4IDBlYzMxNzBmYWE5NWU1ODJlNWYwYTk2NTE3MGE5MzQxYzI3NzUwNWQgcHkzaworODYwMTkgYWY5ZjllZmNiYjlkYjY0ZDY1YTNmNDNkM2E1MDVmZjI3MjM2N2Q0ZSBweTNrCis4NjAyMCAwODVkZTk2MDNiNjI5ZmYyMTQ1MGUwYTYwMmZiOWU4ZGQxNjkwYTRmIHJlbGVhc2UzMS1tYWludAorODYwMjEgNzYwOGRjYWY3ODZkZGRkYmZiMGRmMDdkMzc2N2JmZjQyMDlhMDUxZCByZWxlYXNlMjctbWFpbnQKKzg2MDIyIDk0YzVhZDk4MWMxYjdmNjFhMzUwYzE0YWY2NDA4NzYwZjAxZTAxZDAgcHkzaworODYwMjMgYjQ4MTk4MzhlYjViNzNmMjE0MTRkYTk0YzE3Zjk0YjEwZjkzOTVmMSBweTNrCis4NjAyNCAyMTg3MmMyNGEyNWI5MDljYjQ0ODIyMmE0ODJkNDUyZmQ1ZWMyODcxIHJlbGVhc2UzMS1tYWludAorODYwMjUgOWUyOTFiZTQ4OWNmNTUxNGZiNDI3MWI0YjIxZmY2MmQ5MzMxMzlmMSByZWxlYXNlMjctbWFpbnQKKzg2MDI2IGZjODY1ODYxOWJkZjQ5ZGVhM2NhNDE5ZmFhN2UzZTBiNTcxODlhZDIgcmVsZWFzZTMxLW1haW50Cis4NjAyNyBkOGQzMzY0OGQxYjJjN2U4YmEyOTQ3ZjY2N2VjNThlN2RhZTkxMmJhIHJlbGVhc2UyNy1tYWludAorODYwMjggYzk4MjA3MzE4ODNkOWJkNGZmNGIwYTBiOTFhYTMzNTkxNGZkNjM0NSByZWxlYXNlMzEtbWFpbnQKKzg2MDI5IGYzYWZhMTBjZTc3NzE5ZTNiYmRjMDJhODE3Y2RlMzY2MTMwZmJkODMgcmVsZWFzZTI3LW1haW50Cis4NjAzMCAxMzFlN2NjOWU0MTZjZDYxODgxZjkwM2IzY2JjMWNhNmMyOGE2ZGY5IHJlbGVhc2UyNy1tYWludAorODYwMzEgMzJjMTkxYTVjMWNmOTQ5NWJkYTBmYzQ2ODgxY2I0MjJmNTc3OGY3MyByZWxlYXNlMjctbWFpbnQKKzg2MDMyIGI4OWIwYzdmMzcwOTRhMGI3MzNhMDk2YWQ0YTQ4NTk2NDgzZjM5ZTkgcmVsZWFzZTMxLW1haW50Cis4NjAzMyBhZTA2YzA0OGRlMjQ3MjgwNDMxOGU4ZWI1MDYwZDEzNGJiZjBmOWZhIHJlbGVhc2UyNy1tYWludAorODYwMzQgMzIxN2IxMGY4NDEzYThhZDc5OGNhNzA5NjkzNjAzZTM0Y2NhOWUxMCBweTNrCis4NjAzNSA5YjgxNDI5NjIwZjRiNzc0NWVlYjNkYzJkYjZmYmQyNjlkZDg0YWQ2IHB5M2sKKzg2MDM2IDQxMjdhYjFmNjMzOGMyYzgwZTQzNTY3NDI2ODhjNTdiN2Y1ZjVjMzIgcHkzaworODYwMzcgOTdkZjVkZGU5ZjgxYmE2ZDRlMjdiYTRlMTY4MmVkYWZmZmYyMTgzMyBweTNrCis4NjAzOCBhNjgzMGNjODIyYWFiZTMzM2Q5NTI4NjdmZjk2NzY5ZmYwNDQ5NzlhIHJlbGVhc2UzMS1tYWludAorODYwMzkgMTQwZDQ3MWIwNjFhNTNkMTcyZjllNDJhNjIwMzYxYjcxMTRmMzczMyByZWxlYXNlMjctbWFpbnQKKzg2MDQwIDc1YWMxM2ZlN2RhMDNiYmNhNGMzM2U5MTBiOWViMmIwZDJjYjM3MzAgcHkzaworODYwNDEgNmZhNDhmYTJhODY1NjhjOTU4MzUyMzJmYjc5MGUzNjUwNDFjZTNjMCByZWxlYXNlMjctbWFpbnQKKzg2MDQyIDk0NDMyZTRjZGRjZjYyNDFjOTMwM2QwODc4NjhmZDY0MzQ0ZGEyMjIgcHkzaworODYwNDMgNWM1YjdhOWJhYzA1YzY0NTljZThkOTI0OGE2MTQ3ZjE2YWRmNDEyYiByZWxlYXNlMjctbWFpbnQKKzg2MDQ0IDQ5Nzk2NGNmOWU1OGU2MGJhYjdmYjFkYTk4MTk5NDFjNTA1NWE3MDEgcmVsZWFzZTMxLW1haW50Cis4NjA0NSA1YmRjMGQ2YzY5MzkzM2JjODNkOTJmMGQyNjUxNGE5ODQzY2VmZDE5IHB5M2sKKzg2MDQ2IDU3NTc5NDI1OTNhMGViYjUwNzlmYTIxNmMxMzA2ZjdlNDI4MGJkNGMgcHkzaworODYwNDcgZGUxZTVlZWE3ZTc1ZDEwNWJlMDhhYzRiYmYyYzIwMDkwZTFmMzNmNyBweTNrCis4NjA0OCA3MTllYmNiOTM0ZjNkYzQ0MDE1NTY2NjhjMWFlNWMwNzYwNmY5MmE2IHB5M2sKKzg2MDQ5IGJjNmNjZTRhYjNjNjM2NzcwMGY5ZDZhZDJhNDhhZDllMjlkOWIwNmUgcHkzaworODYwNTAgMDAwNWExODFkMTBiYmI5NGZhMGUxMjJkZmI5Mzk2MzllNDE2NzM5OCBweTNrCis4NjA1MSBlYTJjMmZjMDE5ZDY1YzQxM2JlMWI2MmZmZWQzYzE0MzVhZGQ4MTc4IHB5M2sKKzg2MDUyIDQxZDVkM2Q3ZGEyMThmOWEyNGU3MDM5ZWJjNmY0ZTJhZjI2ZDM1ZTggcmVsZWFzZTMxLW1haW50Cis4NjA1MyAwYTk0OTIzNzgzYTQ3ZDQwMTk4ZTQyNTE3MzZlNmY4NGI2OTU0ODgxIHJlbGVhc2UyNy1tYWludAorODYwNTQgNDNhY2M5NTQzNDE2YjQ1YjA1MGJmYTg3ZWEzYzc3OTk3MzhkMDkyNSBweTNrCis4NjA1NSA5MTAzYWE5YjI3MDRjOWI1OWNjMzBlYjhjNTZmMjdjZjg3ODdhMjkyIHB5M2sKKzg2MDU2IDA1OTlkMjE4ODgzN2VjNDIxZjA5NTZkZjk3ZmNmZmJlYmM5MmFmOGMgcGVwLTAzODQKKzg2MDU3IGZlZGRiOWE4M2FlZjFjNmFjNjgxNTNjNDgxNDY3ZTFiNWQxNzkyMjYgcGVwLTAzODQKKzg2MDU4IDA4OTJiMmMzNjM2ZDllMGMyOGMzMGViNzZmMzFmN2YwODQ5M2FiMjEgcGVwLTAzODQKKzg2MDU5IDk3YjlkNDA4ODkxNGUzODRiMWIyM2EzMWViMWVjZmJmMDQzOGRlNDIgcGVwLTAzODQKKzg2MDYwIDEyNDMzZTk4OWQ5YzkwMTllNzNkM2FhZjEzY2QwY2RjMzYyNjMyYzcgcGVwLTAzODQKKzg2MDYxIDM5MzNhYjZmNmY3YWM5M2Q5ZTc4ODlmNWY3YWIyNDllYTBhNjI1YWQgcHkzaworODYwNjIgNTNiNTFmNWU5NWM0Y2NiYTM1NWM1NTIxN2FkMTJkOTU5YTcwYzA1NyBweTNrCis4NjA2MyBkMGYxY2ExYTgxMzkxY2QzMzI0ZGFiOThhMmU4MGU0ZmRjMzgzOTdhIHB5M2sKKzg2MDY0IGI2NDI0NDFkYTFlYTU5MGZiMjcwY2M0MjM5YWYzMWIzNWMwNTU0ZDUgcHkzaworODYwNjUgZWFhNTA3MjUxMjJiNjZjNTkyZTMzZjM0ODFjMzlkNGI5MmQyZTNiOSBweTNrCis4NjA2NiBhMmNlODIxOGUwMjkyZGNkYmM5MzE3M2FmZDdlN2EzYjRmY2ViOTYzIHB5M2sKKzg2MDY3IDY0NzA1NjYxOTZiM2QzNWQ1Mzg3ZjYwMTk2Yzk4ODc1ZjdhZjhiYWQgcHkzaworODYwNjggMGEzYWU0YTI1NWRlM2FiNzU1MDVlMWZjODRkMDAyOWUxM2MxNTY4NCByZWxlYXNlMzEtbWFpbnQKKzg2MDY5IGZiMTJlZWIxZTdhOWJhMjE4ZWE5ZWU1ZmNlNWZhOWYwOTc5OTVkYWEgcmVsZWFzZTI3LW1haW50Cis4NjA3MCBkMGIyMGE2NTIxZDIxNDZlZDU4N2JiNDlkMjEyY2I1ZjBjMzEwNWFhIHJlbGVhc2UyNy1tYWludAorODYwNzEgYjVlMWU2ZjMxNDM3ZjJjNzU2YzY1NWQ4N2FiN2EyNDU5ODQ0YjIwOCBweTNrCis4NjA3MiBjODI0ODc1MTNlNzY5MDZhYjQwNzAyMWM5ZWI4MTA4NmI3OTgyMTk0IHJlbGVhc2UzMS1tYWludAorODYwNzMgZmYyYzVjOWMwNzliYTA2YzNlOWE3NzM0Mzc2NWM4MTFmZTczOGY2MiBweTNrCis4NjA3NCA3ZGMxMzZhMDEwMTM3MDY2YjJhOGY5MTVlMTVlOTMzMjdlNjlhNmE5IHJlbGVhc2UzMS1tYWludAorODYwNzUgNDUxYzliYjc1MTU5ZTQyYWZkOTIxZjg1NTk2Zjg3Yzg5NzUwMTg0NiBweTNrCis4NjA3NiA3MjBkNDVhNmUzMTY5ZDZiNTVjNjJmZDk1MGZlZDZiNzQ1ZTY4YjRmIHJlbGVhc2UyNy1tYWludAorODYwNzcgZmUyZDE5YjJhNWM2ZDJkZjhmOGIwYTUyYWQ4ZjU2OWFmOTQ2ZGFlMyBweTNrCis4NjA3OCBiYTJhZTA5N2Y1Njc1MzEyYjA5ZTFkYWEzYmM2ZGZhMDU2ZGNlNjhlIHJlbGVhc2UzMS1tYWludAorODYwNzkgMjA2ZGVkOTQzNTM0ZDM2YjY1ZjQxMGIzZGM5MDhjYWExOTliODU2ZiByZWxlYXNlMjctbWFpbnQKKzg2MDgwIDhlNjU4NDlmNzFmNTA5MzhlNmRmZmM2M2U2MjNjMjI5Yjc3Y2VmMWQgcHkzaworODYwODEgYmVlZGM3ODU2ZjViMTM5Mjk5Yzc2MGJmNGE5MDk4MDk2ZTBkMGQ3MSBweTNrCis4NjA4MiA5ZDExMzNjMTg2M2U0YzA2NmMxNDgxYjRkNTlkNzdjZmQ4YjI2NjQxIHJlbGVhc2UzMS1tYWludAorODYwODMgOWRiODU3OTYwNDAyNzIzNWZkNjdhMzU5OGM2NDY2MjEyYjZhNDA0OCByZWxlYXNlMjctbWFpbnQKKzg2MDg0IGYwMzAwNTg0YzgyNDQ0YzhiYmZhOTNmZWE3YTYxODMwMTcwZDk5ZTAgcmVsZWFzZTI3LW1haW50Cis4NjA4NSBlNWRiMzJmNGY0Y2Q2ODJhMjdmODM3YjU3Y2YzNWE2ZmE4NGQwZTkwIHJlbGVhc2UzMS1tYWludAorODYwODYgZTcxYzJlMWRhZjU3MGJmYmRjNGNhOTdiZWIwYmYzZTVhODhlNTQ3YSBweTNrCis4NjA4NyA0OTNhMmQ0MDdjOTQ0NjgwNjFmZmRiNzIyMjZkNWU0MDM5ZDU0MDEwIHJlbGVhc2UyNy1tYWludAorODYwODggNDNkMmQ1YWZiZjczOGI1OTE0MzNmMDg4NTVlZTQzMGE0Yzg4NWIwZiByZWxlYXNlMzEtbWFpbnQKKzg2MDg5IDdjNThmYWYyMmU5ZjJlYzU3Nzk4ODRjZmI4YTA4YjRjMWQ5ZGY3ZTIgcHkzaworODYwOTAgY2I5ZTEwMDM0ZTRhNjVlYzI3MWRlZTBjMDMzMzQyY2FiN2M0NTUxMyBweTNrCis4NjA5MSA4NDg5MTI3ODliNzk0YWI0MDVlYTkyNmJlMjRlMjY4ODJiNjA2ODI1IHJlbGVhc2UyNy1tYWludAorODYwOTIgZDhhYjM1ZWM0ODZlOTA4NjYzYmY4OGVlMDU0ZDAwNWExMjM5YWVlNCBweTNrCis4NjA5MyA1OTUyYjkzN2FiOWEyOGIyMjI1ZDNjOThjNmJlZmEzZWQwZjhkYWQ1IHJlbGVhc2UyNy1tYWludAorODYwOTQgYjNjMDk4YzNhODI2NjlmMjE5NGUzYjM5YmYxMzBjNjI3MjBmNWM5YyBweTNrCis4NjA5NSA2MjFmM2U5YWNlZGRjNWU3OGQ2OGY4ODkyNWFlNjNiOWUyNTkwYTk5IHB5M2sKKzg2MDk2IDM1MjBmZWE1ZTkyMmViN2EzMTA3YmI1NWZiMTdmM2ZjYWY4NjcxMjEgcHkzaworODYwOTcgNTIwODRlYTYzYzQyMTIxYTk3YTQ1ODliMTJmYjA4YWQ1NzI3MTVjMiBweTNrCis4NjA5OCBjNzkxZDAyNjEwMDYyNGI0MzExNjMzMTFjNDA4NmMyOGQ1ZWIwOGEyIHB5M2sKKzg2MDk5IDUzOGY0NGIzMmIwYThkYjk5MDY3YTI0NmMxMDY3OWU0ZjM0NzM5MTcgcHkzaworODYxMDAgZmY4MTY4ODlhYTYxZmM2MjI3YWU4NWRhODlmMDQzZDk4ZDRkNzAzNiBweTNrCis4NjEwMSA5YzdhZDBlZDY2Y2JlY2FkYjU2YWJkNWZkNmZlZjUyZTZhOTc2YTUzIHB5M2sKKzg2MTAyIGJlMWQ3ZjYxOWZjMGYwMDYxZjg2ZjE1ZWU3NGYyODI5YWYwNDY3MmIgcHkzaworODYxMDMgOGUxOWZmOTY0Y2M4ZGExNjIwYjU4N2U3ODIzYjczNzMwYjg2MGRmYSBweTNrCis4NjEwNCA0ZWE5NGM1ZjZkMTAyNTI1NGQ5NzkzZWU1YmVlYjA1NzQ5ZDk5ZTNjIHJlbGVhc2UyNy1tYWludAorODYxMDUgODg5ZmQ4ZWNiZmY0MjQ0OWRhNTNmYWQ2NGJlYjEzN2UwM2U3MjQxNiBweTNrCis4NjEwNiBhMzdkNmQ4MWY0YjFlOWQ1YjhhMDRkN2E5MDY2NDk0MzYyNDdhN2IxIHJlbGVhc2UyNy1tYWludAorODYxMDcgYTYzOTU5ZWVjOGZmNGFkZGJiODk0OTY0ZDMwMGJmOThlNzJjNTBjMyBweTNrCis4NjEwOCBiMzQ2YzhkMzNlNTYwMWVjN2EwOWI5NWI4YjlmNjQxYTM2NjI4YzhlIHJlbGVhc2UzMS1tYWludAorODYxMDkgZGViMjNjYmFiNWFiNjIzNTM5NTZlNjA4MzkyYjBjZTZhM2MxNzAyYyByZWxlYXNlMjctbWFpbnQKKzg2MTExIGZmNmYzOWIzYzM4ZTQ2YmQ1YTUyNGI0NjQ2Nzg2Y2NkZTFlMGFlOTkgcHkzaworODYxMTIgNTczZGIyYWYyZGRhNzRmMjMzN2RjYWU0N2RkMWNiOTlhZmYxZTViNiByZWxlYXNlMjctbWFpbnQKKzg2MTEzIGYzYjcxODgxNzFjMDJjYjVjZDdhN2Y3OTYyNzQ5OTRlZWRjMTNmM2IgcHkzaworODYxMTQgMzY4NzJhMGVkOTQzMzVkODA4MDAxYTIwMzUxZjEyNTNmY2RmMDNjMCBweTNrCis4NjExNSBkN2VkZDE1YmEwZjJhYzEwNGYzNmM3M2U2N2E2NjQ4ZGRlM2NkMGY5IHJlbGVhc2UyNy1tYWludAorODYxMTYgMTU3Njc5MDJiNTQ1ZmM3YmM0MmJiM2ExYThiNTk2YjgxOGNkYjRlYSBweTNrCis4NjExNyA0OWYxOGE5NTMzY2RlMjYyMDhlMDdlNWJlZTE3OTZiZjAxZTE5MjBhIHB5M2sKKzg2MTE4IGVkZjQwNmVhYjFkYjdmYTJlMDM5YTRhNTZmNmEzMTU5MjI0N2I3ZTcgcHkzaworODYxMTkgNmVlZDBmYzE4ODE4YzEwYTY1MzZmOTI2ZjViN2RhMmZjODMzYWMyMiByZWxlYXNlMzEtbWFpbnQKKzg2MTIwIDRjY2QwNjhjYmEwYzliMDIyNmIxMWU3MjJhZDM2ZGI0ZTljNmZlYTAgcmVsZWFzZTMxLW1haW50Cis4NjEyMiBmNGY3OTU1NmE1MjJlMDRmMDYzOGZhOTM4YmM2MWUxZTYxMzg5MzUzIHJlbGVhc2UzMS1tYWludAorODYxMjMgMDA0ZDVmMTY1NzM4ZGVjYzBjZjJjY2MzODFmNjMzYzQwZmNjMDQ1ZSByZWxlYXNlMjctbWFpbnQKKzg2MTI0IGEyODU4NDNlOTU4YTRjM2E3N2MzMzUxYzIwYWJhZDM0NDNlYmRiOTEgcmVsZWFzZTI3LW1haW50Cis4NjEyNSA0NTc3OTJhZmRlY2Q2MTBiZmJiZTJmZGMwOTk3OTRlNTNkM2QwM2Y0IHB5M2sKKzg2MTI2IDIzYjQ5Njc4NDAxZjE4MTcwYWQxZDQzZjQwZWM4OTIwMzUzY2MxZmEgcmVsZWFzZTI3LW1haW50Cis4NjEyNyA1M2ZiOTkxNjMyN2UwZmViZDU0ODA4N2U3MGQ1NDQyNjJhNjE2MmM2IHB5M2sKKzg2MTI4IDEwOTUzODcxNmM1OTFkMTYzMGU4OWY3ZGZlOTVjZTk0ZGIyYzJjMTIgcHkzaworODYxMjkgMGNlMGY4ZWJkZDI5ODUyMjM4MjMyMzdkNTE5ODdkNDYxYTc3ZmQ5ZCBweTNrCis4NjEzMCAxOTEwNjdmNDlmY2EwNTUyZjI2NmU2YmM5NjcxNjhlZDdjNTM0NTY4IHB5M2sKKzg2MTMxIGY5ODBmOTQ0YmUxOTM1NDI2ZDRmNGRmMTRjNTY2OTVlNmZkYTA0NDQgcmVsZWFzZTI3LW1haW50Cis4NjEzMiA2ODM0MWY5YzU5MzczZmJlODZiZWIyZWM1ZjZkZDk3ODJiZmUwZGNmIHJlbGVhc2UzMS1tYWludAorODYxMzMgMjY5NzMyNmQ0YTc3ZDNlYzg3YTkzNTk5MDI1MjI0NDgwNWExY2Q1OCBweTNrCis4NjEzNCBhOWRiYzg3YTNmZjRhY2E3NDc2MjY0MjY2NWExNDJlZTdhZWFjYWIxIHB5M2sKKzg2MTM1IDZkMjBkZGU5NjA5YzkxZTdlZjZiMzAyMDFhMzA3OTJlMzc1MmQyZWMgcHkzaworODYxMzYgYjk2ZWRiMDJlZjYzMGY3MTlmZTlkNjYzYTRiMmRmMDU2OWFlMjUxOCByZWxlYXNlMjctbWFpbnQKKzg2MTM3IDJkNDIyZjEwMDIyZmYwNzE0NzdiNGFmNTFiMTg2ZmJkYzY3YjI4NDggcHkzaworODYxMzkgNThlNTRmNTYzZGU3Y2YzZDQyYTYwYWNmMjBkYjQ2MGE1NDk5YzI3MyBweTNrCis4NjE0MCA4YTRlMjYzNzk2YTNlNWZmNTk1MjI2ZThjYTE2NTgzZTgxNTMxY2UyIHB5M2sKKzg2MTQxIGI4YzIwNmU1ZWQ0NGFjZmQzYzcyZWUyN2VmM2JiOTM1MzgyNWM0MWYgcHkzaworODYxNDIgOGVmMzI5NTVhMzQ5NGU5YzZjNGY5Y2FiZTgxMjBlMmY0ZjljOWRkMyBweTNrCis4NjE0MyA1YjA2NWNmNjBkZGUxMmEwNjlmOGZmYWRlM2UwYjQ2ZDc1NDE1NmNlIHB5M2sKKzg2MTQ0IGYyNTUwMTJiMzQ2YmM5NGExNjA1OTVkODAwYWI3YjFhM2M0NzMxZWQgcHkzaworODYxNDUgNjcwODVmMjAyMTQyOTEyMmZhMTJlZGFiN2YyMjhhMWQ5MzcyZDBlZCByZWxlYXNlMzEtbWFpbnQKKzg2MTQ2IDE0MmQ1MzkwYWM1YzZhMDJhYWIyZjljNDIzNjhlM2VjOWEzNTk3MTQgcHkzaworODYxNDcgNGQxYWIyZDI1YmFmNmQ4ZWM0YmI5NWJmYTg0MWE4MGE0MWVmOThkYyBweTNrCis4NjE0OCBkYzMwMzgyYmE4OWExMzA3Yzg0MGM1ZDljYmE5YTMwM2U5YmRiOTMwIHB5M2sKKzg2MTQ5IGYyOWY2MmMzNTdlMTRjOTVmZDI0NmE4M2M4NjA2NzAzNWQ3ODc4MjkgcHkzaworODYxNTAgODFiMGU4OWUzZGYzY2Q5NDNhZmY0MWVjNWQ3Yjc4MTQ5YzJkNGUzMSBweTNrCis4NjE1MSA4YTVmMDg3M2Q3MzgwMjE5ODViYTZlODI0NDk1NTU5ZTIxNGJkYjIxIHB5M2sKKzg2MTUyIDhkNjU5YTU0NzljYTg0ODkzYTM5ZmZhODQwMTk4ZDU2MzVkNWNiMDYgcmVsZWFzZTMxLW1haW50Cis4NjE1MyA0NjI0MWEzNWI1ZmM1MDdjM2RmMjY2ODZlOTE4NDc5YzcyNGYyOGQ1IHB5M2sKKzg2MTU0IDI5OTczNWU1ZmQ3ZjkxMTRjMzNhYmUyZTUyNzU4NGE3MWE0NDBhYjYgcmVsZWFzZTI3LW1haW50Cis4NjE1NSBjOTY3MzE0ZWY2MWU3M2YyZTc2YzRlZGZiNDEwZmNhYjdkNmVhMjQzIHJlbGVhc2UzMS1tYWludAorODYxNTggNzFhYzUyM2E2YjEyMzg0MjIzZTg3YjQ2ODQxM2E5NDc1YjMwZjJkNSByZWxlYXNlMjctbWFpbnQKKzg2MTU5IGUxYjYxYjA1MmM2NmJkM2Y0YTA5ODEzMmI0MTAyNjA2NjIxNTY0YjAgcHkzaworODYxNjAgMWU0ZDQ2YTYxZmJlZWVlYjNlYjQ1MDkwZjk4ZWE2YjdlYzg2YTMxMyByZWxlYXNlMzEtbWFpbnQKKzg2MTYxIDg0NGVjZTM3Mzc2NDE0Y2QzZjU4NmEyZmQxOTA1Njk3YTg5Mjc1MWYgcHkzay10dGstZGVidWctb24teHA1Cis4NjE2MyA3YzVkMWRjZTM5ZmFhYTZjMGMzNzAwYTBkOTM2NTI4NDdiZWVkMjc4IHB5M2sKKzg2MTY0IDUyMzFhNWEzN2E3YWNmZTg2NzNiMTI0MThhNjU0ZjkzM2ZjNWJmZDYgcmVsZWFzZTMxLW1haW50Cis4NjE2NSBiZWJhMmRlMjAwZGQxNjVlMmEzM2M0ZTUxOWZmOTg3ZjQxNzQ3YjQyIHB5M2sKKzg2MTY2IDZlMDdjN2U0YzdjY2E5NDg1NjVhZjA5ODY3ZGJkMGZlYzExNDI0NTQgcmVsZWFzZTI3LW1haW50Cis4NjE2NyBjYzdhODhlMDg4OTkzOWFhNjIwZTI0NzA3MWRiNmQ1M2QyYWYwMjQ3IHB5M2sKKzg2MTY4IGZmNjU4NWEyYTI0MzJjMWFhMWNmNDhlMTUxNGFkNTdlN2ZjZjYzM2QgcHkzaworODYxNjkgNjYzMWU1ZjZkMmNlZTQyMmUzMmNhMGM3ZGJjNzdmZjZkNjAyYzY2MCBweTNrCis4NjE3MCAwNWVlZDlmMGNlMDE1NTI2MDhlYWIwZDY5YzAyZjNjNmU1N2YyZjJlIHB5M2sKKzg2MTcxIDQyOTRlMmMwMDI0NTQwMDFkNDc0Zjk5NjRkOTFlNDY4NzhjMmJhYWUgcmVsZWFzZTMxLW1haW50Cis4NjE3MiAxZjQ1YmZiOTg0NzM3MDE3YzJmODc0YzY0YjIwMmRiYzBhMmYwOTg4IHJlbGVhc2UyNy1tYWludAorODYxNzMgZGRmMDAwYWVmNWIwN2E0NGVjNGRmYjk4YzM5OWNjOTUxNzY4MGRiZiBweTNrCis4NjE3NCAzMjkyY2MyMjJkNWNkODYxMzNkZGVkYTU0NWU4OWUzMzI0MGFkNWNmIHB5M2sKKzg2MTc1IDI3MGI1MDI5NmVhOWZiMGVkMDc1Yjg3MzFmZDQyZDYzMWM5NTExOTEgcHkzaworODYxNzYgZWE1YWVmMzJhMTdmMTczNmM5NjRlNDVhZDYwNWE0OWNhMDFkZWQ4OSByZWxlYXNlMzEtbWFpbnQKKzg2MTc3IDRiYjljOTc0ZjUxOTg3NmM3MDA0OGE2MTM2YjE0YTliZTZkZWZiZWIgcHkzaworODYxNzggNGVlNjgyZmJlYzMwZGJiMTQ2NDJiZTJiYzA2NTA3ODU1ODRhZmQ0YyByZWxlYXNlMjctbWFpbnQKKzg2MTc5IDYyYjNhMGE5OWIxOWU0YTZkNTY3ZWQzODk5Y2Q4YTg2ZDIwM2E1YTkgcHkzaworODYxODAgMmQ1ZGJkZTY0YTM1OGIyNjk5MzQ1NjQ5MTE4MmUyM2I4MWJmMTYwNCByZWxlYXNlMjctbWFpbnQKKzg2MTgxIDQ4ZTU1NDllMmMyNTg5ZjNkYmIxYzBlNTEyOGE2MmM1OWM5NDdmNzggcmVsZWFzZTI3LW1haW50Cis4NjE4MiA3YWI3MmJhMzhmZTAyZTEyYjE0ZDhiMTc4OTAwOWNkZTlhMGJiNDZmIHJlbGVhc2UzMS1tYWludAorODYxODMgYjgzNmYwNDc1OWNkMzYzM2ZhZjYyZmY1OGM5NGM1NmYyMDU1MzE5OSByZWxlYXNlMzEtbWFpbnQKKzg2MTg0IDk0N2I1YWNjNjRiZDkyN2U0ZDA2NzYyODBiMDhjYmE2YTkzNzQ3ZDYgcmVsZWFzZTI3LW1haW50Cis4NjE4NSA2ZTFhZTMyM2ZkZTYyNmI2MmZjYWIyZGFmMmQ2MWUxZTdhNWYxYzRkIHB5M2sKKzg2MTg2IDQzMGQ1MGUzYWM1MzFhNGYzOGIxMjBjYThhN2Y3M2E4N2E4NzhiZmYgcmVsZWFzZTI3LW1haW50Cis4NjE4NyA4Y2Y4YmI1ZGM1Zjg2ZWEyYzAxMWM5NDA5ZTY2ZTAwNGY1Njc0NWM3IHB5M2sKKzg2MTg4IGVjOWRkOTczNTMyZjNjMDQ4MjkwN2FkNGRhMjM1YzIzN2NjNzUyMjggcmVsZWFzZTMxLW1haW50Cis4NjE4OSBiYjY2YTRmNWViYzJhYmE4NTU5YjAxMzg1OGE5NjNhMjg5YzI5ZmJiIHJlbGVhc2UyNy1tYWludAorODYxOTAgMWNlNjllZTY5ZThlYzAxODU0MjQ4YzcxMGQyNWJmNDg1MjA4MTU3OCByZWxlYXNlMjctbWFpbnQKKzg2MTkxIDRjMWM0OGIzYWY2NjI2YjYwNjgwNWQxZGY2YWYzMjQyY2E2YmMwM2QgcHkzaworODYxOTIgNzliM2ZjNjgxY2IwOTQ4NmI0YTFiZjIxODIxNGE4M2IwYmI3YmZiYiBweTNrCis4NjE5MyAyZDA1ZTlmZGI1OTdmMDJkY2MxOTQ0ZmMyN2UwOWQ5OWZhZjQ1YmQ2IHJlbGVhc2UzMS1tYWludAorODYxOTQgN2QyODA4N2ZiYWYzYTlhNjk3ZjQ3Mjg3MDU3MjU4Yjc0MDAzMWEyNyByZWxlYXNlMjctbWFpbnQKKzg2MTk1IGIwMjQ5ZDA4MzllZGFiMTIzZTgzNDZjMTE2YmNiOTE1NWQ3ZjFmODAgcHkzaworODYxOTYgMTI0M2VjNjc5YzI5OGJhNjRlZjJmNTYxNGQyMWUwOGVhNmQ3MjJmYiByZWxlYXNlMzEtbWFpbnQKKzg2MTk3IDYyZmYxMTY0NDMzOTFkMGUzZDk5NWI0M2I3ZGM0NjYxZGIxNGRhMTYgcmVsZWFzZTI3LW1haW50Cis4NjE5OCAxODg5NmQ1ODAyOTBhY2EzMDZlOWM4ZWQyYWEyMjgzNDRlNjQwYmRmIHB5M2sKKzg2MTk5IGM1MDBiNDEzOGY3YjljMTE3OWE4MGQ5ZWJkOGUzMDE3N2Q0ODkyZTQgcmVsZWFzZTI3LW1haW50Cis4NjIwMCA2MjA4NTczM2Y3ZGZiOWVjMmFhMjJiY2Y0MjBkOTc2N2M0Zjg4M2M1IHJlbGVhc2UyNy1tYWludAorODYyMDEgYjI1NGM2NTA3YzM1ZDI3NDA4OTRlYjJjMzI1ZDFkNjI1NDBhNDAzNyBweTNrCis4NjIwMiAyNTlhOWJlYzIzMjZjNjkxYWZmY2U2MTdkZGQyNmVlOThlYTQwNzU2IHB5M2sKKzg2MjAzIGVkMzViMTFlYmVjNjhjZTdmNWQ2MDg5N2E4YTNhMzE0MTlmZDAyZTYgcmVsZWFzZTI3LW1haW50Cis4NjIwNCAyYTMzMmU3MTU3NjYzODZlZGM4ZmNjYWIxMjk3N2IwZDFhNzU0YzYzIHB5M2sKKzg2MjA1IGUyMTNlNDY1YTJkYzg1NTJjOThlNWM1NzdhMzk3YjI1ZjU4Mzc1MmUgcHkzaworODYyMDYgZWRmOGM0YjAwMDQxZTA5NThhMzgzYzkwNjg0Nzc3ZmQ5MjZhOTE4OCByZWxlYXNlMjctbWFpbnQKKzg2MjA3IGZlODk2MmZjMGUxMTk5M2RkYzQwNTE1OWEyNWVjMmNjN2I5ZjhkM2IgcHkzaworODYyMDggMjM5ZmZlZTVlZGFlNTI5NDQ2YWMzNGMzZmNhZjFlM2I5YzQ3ZTI5YyByZWxlYXNlMjctbWFpbnQKKzg2MjA5IDViMjExZGM5NjhkZmM3YmM5YTlmZjNlZTNkYWZkY2YyMWYyYmVlY2YgcHkzaworODYyMTAgZDMxZWFlYzg4M2ViM2ViYjcxMDhhY2FiYjZiZjVlNGQ1ODEwNDJlYyBweTNrCis4NjIxMSA0OWIwZDQyMzAyM2VkNzRmYTMwYzhiZDU5NzMzMTZiNmFlMzFlMWE0IHB5M2sKKzg2MjEyIGMzN2JlZjhkY2VhMmNiNTkwZDEwNWNiOTU2NGFhYjY2NDY5MGVlZTYgcmVsZWFzZTI3LW1haW50Cis4NjIxMyBlZGVmYzVkMmIzZDc0ZTlmYjU3MzRkNDQwZGIxYmY4MjA0ZTVkMzI5IHB5M2sKKzg2MjE0IGQzM2Q2MmFiOTFjY2FjZjZlMzc5M2E5MTU4ODJiMDcxYjkxMzM2ZjEgcHkzaworODYyMTUgNzNjYTZkZmIyMmFhMTUxMzgyMDM4OTEyZTA4MGU2NmM0YzE2YjE4NiByZWxlYXNlMzEtbWFpbnQKKzg2MjE2IDE4NWFiN2M0Yjk0NjkxYTg4ZWZmNzIzNTEyZGRjMTM0NjlkMjc1ZjUgcmVsZWFzZTI3LW1haW50Cis4NjIxNyAzODVkMjM5YmNiZmE3ODA2NjZiMTU0NzNiM2Q1OTVjNzdiZmU1MjY0IHB5M2sKKzg2MjE4IDgyMjIxNDEwNTYyYjNkYjA4Y2YxZDkzMGNmYWNkYjc0NWM3Mzg0MTEgcHkzaworODYyMTkgNDU4YjA1YWJmOTg3M2Q5YTc2ZTJiYzNlN2Q0OWQ0YjgyM2E4YzAyNiBweTNrCis4NjIyMCA1NzFkMzE3YjRjZDVmMmYzZTY1MzE5ODRiOWExNTI0ZmVlMWRhOGFjIHB5M2sKKzg2MjIxIDVkZWQyNWUwNmE5YWZiYWMyZmE5MGRkNWVkNDQwZmEzNzA5Y2UxZTcgcHkzaworODYyMjIgZjkwZWQzN2FlMTZmMGE0NDJmNDk5ZWEwNjFjOWM4NDcxM2MyMDM5NSBweTNrCis4NjIyMyAzYmY4Njc4NWNkOWM1ZTM3OTFiNTUyYmRkMTFjOTQ5NGVjMGY1NjFkIHB5M2sKKzg2MjI0IDEwZTA1ODA4OTVlZDQ1ODA0MjBhOGEzMWUzMjUyMmMyOGUxNzEzZGYgcHkzaworODYyMjUgZmRkMzY4MWIxNDM5OTY0MzI0OWViMzRlNzFlM2Y2NjExZDBjODE1MiByZWxlYXNlMjctbWFpbnQKKzg2MjI2IGUzZmQxMjA1YjEwNTVlNTg1NmU5MTU5OGQ2OTMzMDVhNjY3MjhmZDAgcHkzaworODYyMjcgMzIwN2Q5ZjRkMDBhZWQzMmU4MGQ1N2Y4MzIwNTViMDg5ZGVmN2NiMyByZWxlYXNlMjctbWFpbnQKKzg2MjI4IGEwOTBiZjcxNmE2ODczNTY3OWMxYTRmZDBhMzgzODQ2MTQ1MWM0ZmQgcHkzaworODYyMjkgOWQ3M2Y5ODI3YzlmNGE1ZjliM2NiNDNkYWY1YzNkODAxNzVmNTAzMSBweTNrCis4NjIzMCA1M2VjMzhkMzE5ODhhMWQyZDU5MTEyMGJkMTRhZWNlMmYwMzkzYjViIHJlbGVhc2UzMS1tYWludAorODYyMzEgODkxMWY0NzVhZDNkMmZmM2NkY2QxNjI1MDJiY2MxZmU4NTQxN2E3MyByZWxlYXNlMzEtbWFpbnQKKzg2MjMyIDk2ZGJiMGMxNjhiNjc5NTMxMzdlNTA4Y2NiOTFlZTc5ZTUyNDlmOTIgcmVsZWFzZTI3LW1haW50Cis4NjIzMyBhY2IwYTNjYzFlMThjNzA5ZDViNjMyYjIyMWMwNGI2ODM2ODRjMTI1IHJlbGVhc2UyNy1tYWludAorODYyMzQgOWY4NjIxMWYwYTQyNzNiYzkwMWI4NjU1ZWM1YTU2OTAwYTJmNzVjOCBweTNrCis4NjIzNSAyMjIzYWZlM2VhYmE5NDgwNDk3MTlmN2Y1NDYxMDliZTA0NjAxNjQwIHB5M2sKKzg2MjM2IDk2ZjMwZmQ1NGUwZmVhNmZiZGFlM2Y5N2M0MjI5MTUzNWE3YjVlODggcHkzaworODYyMzcgZjVkZDRhNTRkNzliNTE1ZjlmYTI5N2Q1OTkzYzg3NWQxZWI3NmU0MCByZWxlYXNlMzEtbWFpbnQKKzg2MjM4IGExN2IyMWMyN2EzMzg0NzQ5MjczZTc4NTViMzQ5NWY2YmVkZDg5ZGMgcmVsZWFzZTI3LW1haW50Cis4NjIzOSA1ZDg0ZjFiNzNkNTEwMjgyZDU1OTQzNmY0MzExM2YzZjcxNDk5NmVmIHB5M2sKKzg2MjQwIGZmMDcyYWE3MGMxZGE3NGE5MWMxNWVkMDgxZmM4MjYwYzEwYjhmMjIgcHkzaworODYyNDEgY2NkOTlkNTQ3OWRjZTc5MTdhOTU4NWQwYWY3MDQ0NzA0MmI5ZGQ5NCBweTNrCis4NjI0MiBkNDNiZjMwZmFmNmViODUwMDdlZWVmNzhiOWRmZDRjZjEwMzFmNGFhIHJlbGVhc2UzMS1tYWludAorODYyNDMgNjM2ZmVkOGU3OGQ2M2Y2MmFmMTgyMGI2MWViNmY4MzlkZmZlZjAwNyByZWxlYXNlMjctbWFpbnQKKzg2MjQ0IGI1NjQ4ZTEwYzIzYTdkYzFhODJkY2RjMjhiZTljNTdjMjI5ZmM1ZTYgcHkzaworODYyNDUgMmI3ZWIwZTg2ZDA3Y2RmYzVjYTUxZTM1ZWNmMDUyYTEwZWJkZWZmMCByZWxlYXNlMzEtbWFpbnQKKzg2MjQ2IGRmMzQ5OTFjN2QwZTk1YWI3Y2QwYTg0OTYzM2FiMTc0MDYyNzMyOWEgcmVsZWFzZTI3LW1haW50Cis4NjI0NyBmYzQ4Mzc1MDc5YTZhZTY5YTBlNzU3M2M0YzE2Yzc4MDA2YTcyY2JkIHB5M2sKKzg2MjQ4IDY4ZjhhOTViNTBjN2ZhZTI2YzNlYzIwODEwYTc5YTc0NDVmNjlkMTcgcHkzaworODYyNDkgNTExNWQ0YTJkODk4MjQ2MDNkMGUxODdhMzdhMGUxMzg0YjNkNzAxOCBweTNrCis4NjI1MCA3Y2I4MDQzNTgxYjU3ZmVmZjgzNzc0NGNhOTUzYzU2N2QwNThiMmZhIHJlbGVhc2UzMS1tYWludAorODYyNTEgMzA0NWFkYTM5MjY5MTU3NjI3YjEyZmYyMGZhNzRmMzA5NTBlZTg2YyByZWxlYXNlMjctbWFpbnQKKzg2MjUyIDZkZGM1NzYzNGRlNTZlZDMzMWE2YjU4YWMxYTJlZmI3ODA5NmM4MmMgcHkzaworODYyNTMgYmEwYWVjNjdiOTlhMGE4ZTNmYWU2Zjg2YzBmYzFhZWUxOTEwNDIzNyBweTNrCis4NjI1NCA4ODM4YzU2YjY5NTI1MWQyNjE2NjgyMmNmM2QxNTE5ZjE5YWY2ZTlhIHJlbGVhc2UyNy1tYWludAorODYyNTUgM2JmNDJkOTEwZGI4Yjg3ODc0YmE1MGUzYmQ0YjRiMTYwOGU2NTE3NCByZWxlYXNlMjctbWFpbnQKKzg2MjU2IGZmMTI1NzEyOGM3NTBlN2Q2OTRlMzFlNWM5ZjQ3NDZmNzI0ODY3YmYgcHkzaworODYyNjAgZjQ1N2M0NmY5MDk4MzZjOWMxZmUxOGIyOGExYTRiOGMzYTlkMTZjMiBweTNrCis4NjI2MiBlODUwMjU2N2VmYWY0OWUzZmFiZGFhOTcyZDMxZWRlMTJmNTYwYmJlIHB5M2sKKzg2MjYzIGJlNTQ2OTgwOGNlOWI4NzYzYTcyNjQyNmY5NmQ1ZmIzZTgwOGI2MzEgcHkzaworODYyNjQgMzgyNmFkY2E3YTNiZjRjYTQxODg3MDdmMzQxY2E1OWM4MDA3NzNjMSByZWxlYXNlMjctbWFpbnQKKzg2MjY1IDRmZWI1MWY2ZmQ3NmJkOWFhYzJkNDg5ZjE0NDg4M2FkYjAzZThkOGQgcmVsZWFzZTI3LW1haW50Cis4NjI2NyAwNzNiMDdiM2JkYWVjZDU5ZTEzNjQzZWMxM2I5MjRmYTA3M2JhNjhjIHJlbGVhc2UzMS1tYWludAorODYyNjggZGI2NTc0M2QwNjJmYzVhZjIxYzg2NDFmMDVlODNhZmRjMzQzN2RmZCBweTNrCis4NjI2OSA3NjJiOTQ0NTAzNjc1ZTQ3NTVhM2ZiNzIzOGRiOTZmNzMxMDdkNjdmIHJlbGVhc2UzMS1tYWludAorODYyNzAgZjBjN2UyYjExMjczOWYzZGQ4NWViNTJiODE4YzVkYWNjZDcwOGVlZiByZWxlYXNlMjctbWFpbnQKKzg2MjcxIDQzNDhjOWI2YTcyZDZkOTRiNTUxNzZkY2IwZWZkOTQ0YThiNTAwNjggcHkzaworODYyNzIgNzdiOGM5NWYwYzFiNTNjMDE5YTNiNDBkNjI0ZTQ4OTEyZTQ3OWQ2OCByZWxlYXNlMzEtbWFpbnQKKzg2MjczIDk3Yjk1YWUyMzQ4YjJhYTczMjBjZGMxNTg3ODA5MTAzMzQ3NjAwNjkgcmVsZWFzZTI3LW1haW50Cis4NjI3NCA3YTlkYmE4OWE3Y2U4NDZiNDliMzgyMGZlNDE4YjZjMjZiMmM0MjIwIHB5M2sKKzg2Mjc1IDEwYmRkYTI0MjY1NDU1MGY5YTNkODk2MzUzMDBmMjI2MTgzZGRkYmUgcHkzaworODYyNzYgYWYwNGFhZTE5M2ZmZjY1OWU2N2FiMzc2OTMyNTJiZDVkOGZkODA1MiBweTNrCis4NjI3NyA3MDQyNWZkNDc4NTY1MGJhZDRjN2Y3ZGQ1YTVmNWMxYzZmM2Q2OGQ3IHB5M2sKKzg2Mjc4IDJjYzNkNjJmMDY4MDg5OTNmNDU1YThhYzkyNzRiM2VjMGI4ZTMyNzYgcmVsZWFzZTMxLW1haW50Cis4NjI3OSAxNDk5ZGI5OWM0Y2RjZjJkZjMyMjY0Njc5YTA1M2IzMDM0M2E5YmViIHJlbGVhc2UyNy1tYWludAorODYyODAgMjg2NDI0ZTc1Y2Q5MjRlMWEyMTYyYjUwMmFkYTRmODE5YTE2M2FhMCByZWxlYXNlMjctbWFpbnQKKzg2MjgxIDM3ZjQzZGU2NWQxMGU5ZjgyZjc2MzE4OTA3YjA2ODJiZTc2ZTI3MjkgcHkzaworODYyODIgZDAzNjMyYzM2OGQzNzI4NWYxYzZiOWUwYTVmZTQyMTdjYWQ0YTAwOSBweTNrCis4NjI4MyA2MWJiZDRiNzU4NzRlMjA4NGMzNmU4MzRhYTAzNDZmOTNlN2MzNzVhIHB5M2sKKzg2Mjg0IGY2YjhmMzM2ZTAwYWEzNzY3ODkzZmFhZGZmNWQ4MjM2MGRjNTJkZjcgcHkzaworODYyODUgYjYwM2QyNDhkNGFkOTExMGQwZmRlYWZiNWYxODk3NDVhNTk2NWVkMSBweTNrCis4NjI4NiBiMWMwNmZhNDhjYzRiMDkzOTkxYWI0NWIxZjBmMDE0YjVmYWRlOWZiIHB5M2sKKzg2Mjg3IDMyODk5MmIwZWE3OWFmNGU4NzQ0ODE0YTYyMWMxZWRiMjIwNDEwYWIgcmVsZWFzZTMxLW1haW50Cis4NjI4OCBkY2YxN2ZhODQ4MjE3NmU3NmU1OTIxOTBhNzMwZTBiZDBmMTY5YmIyIHJlbGVhc2UyNy1tYWludAorODYyODkgMzk3OWUwY2MzM2MxMzMyMGRiMDQ4ZWMxYzA0ZDA5ZGYyYTgzODNiMiBweTNrCis4NjI5MCBhZDY0OTBhNTZkMTU4YjliNmZkMGVmMGNjNGY0Mzc3YmNmYWVlNWI0IHJlbGVhc2UzMS1tYWludAorODYyOTEgNzQ1ZDBmMTZkZjc2YThiMDEwYWI3MTY4ODVmNDBhZjczNDZkMjcwMiByZWxlYXNlMzEtbWFpbnQKKzg2MjkyIDZlODQzMjExNjY0ZDcyMTY5YTU3N2YzM2M4NmYzMmMwYzdmNWRjOWIgcmVsZWFzZTI3LW1haW50Cis4NjI5MyBlNDllYmJkMmM0OTYxZWQyYTdjZTc4YWMyNGE2MjI5Y2UxNDEzNWRmIHB5M2sKKzg2Mjk0IGMwOGY3ZDZhMDIzMTY5ZWI5MWI2OTE3NDg2NTMwYWMyMjI0YTZiMGIgcmVsZWFzZTMxLW1haW50Cis4NjI5NSA1Mzg0ZTRlNDYzNzRkYWQ1YmJjYTI2YzNhNDlkOWU3NDUyNjE4OTM3IHJlbGVhc2UyNy1tYWludAorODYyOTYgMDU0M2MwMmU5NDFjMTAyNGM2MzMzMGI0N2NkMmVhOTVmYTdmYjA0MCBweTNrCis4NjI5NyAyMjYyZjZjNDRlYmNhNjY5MzRhZjQ0MmJjMjhhNjU5MGY0NjljNDRmIHJlbGVhc2UzMS1tYWludAorODYyOTggOGYwOWVlZGNkNzBhMGE4OTNlODczZmY1NGVkODAxOGZiMTY3OTM4MyByZWxlYXNlMjctbWFpbnQKKzg2Mjk5IGZkY2FhYzBlMDEwYTAzNTk5MTc3MGRkOTcyOTQzODg4M2NmNzJmMzIgcHkzaworODYzMDAgMzM1NDIzZDczNmE3ZmY0M2IxZjdmYmUxMWQwZWI4NzAzNTkzZTJlMiBweTNrCis4NjMwMSBlOGYxZWY1ZmQ0MjM4Mzk2N2I1MzIzODRmZTIxZjZkMGI1MjQyZjYyIHB5M2sKKzg2MzAyIDQxOGRjYjFjNDVmN2ZiODAxZGY1OGQ2MDA1MzFkN2E5MWQ3Njg3ZWEgcHkzaworODYzMDMgODA0NzNhZDY5N2FjMzA2NzU5N2VjZjAwOGQzNGNmMjY2YTJkNzE0YSBweTNrCis4NjMwNCA4MTU0ZGI4YTE1OTMzZGI1ZDI2MDFlODZiNjJmZjM5ZDY3ZTZlOTE1IHB5M2sKKzg2MzA1IGY4MjA4YzMzOTc4ZjhmNGY3ZmQzNTdjNGEwZDVmODYwMmU1ZWZhMTAgcHkzaworODYzMDYgODhkMDRmMDE0M2M3Mjc2ZWZhYjdmMDhlOTYxYmRiMzk4NzljNWY4NyBweTNrLWNkZWNpbWFsCis4NjMwNyA4NTVhMTBlZmIxMGEyOWFmZTFkMjk0YmZjZjg5ZDE3NTgyZmViYTYyIHB5M2sKKzg2MzA4IDc2YmM3MThmZTdjOTJhOWU3MzFhM2I2ODY3OGU1MDdhNzk4NzAyMzcgcHkzaworODYzMDkgM2RiMTdhNDk0ZGM5NGQyNTU2ZTlmYjM0YmYxNDdiYjVmM2Y3NWEwYSBweTNrCis4NjMxMCAzYzFiZmU1NGNkMjA5NmExODZmZGE3NTRhYzhhOWFjODk3OWY4ZmE5IHB5M2sKKzg2MzExIDZkMTI5NGFkZmFmNDQwOWMwNzhmYTkzZjQ1MzZmZWRjM2JiMzBhYzcgcmVsZWFzZTMxLW1haW50Cis4NjMxMiA5NmM4MGY0MmJjZTZjYjk3YzEwYzQyYTBjMGMxODBkZWQ3YzczNGY1IHJlbGVhc2UzMS1tYWludAorODYzMTMgZDU1YjdkMGJjOTczN2ZjMDZmMTRkYzE3ZTYwNDE3ZGFkNTczNTlhMCBweTNrCis4NjMxNCAwNzQ1MzNhNzU5NjJlMGEyMGQwYzYxZDYwMWRiN2ZlOTRiNWUxY2VkIHJlbGVhc2UyNy1tYWludAorODYzMTUgMWZmYmQ2NzUzYTE1NDM3YWQ0MDVkZmNkY2Q0ZjBmODdkMmIxMWUxYyBweTNrCis4NjMxNiAyOTQ4ZDVmYjFlYmViNWY5OGExOTBjOTNiZjc3Mzg3ZTQ0MDBiNmVlIHB5M2sKKzg2MzE3IDJkNjgyNDg4NDQzNWI3YjczYjYyODZjYmZiNDA5NmUxYjExZGIxNDEgcmVsZWFzZTI3LW1haW50Cis4NjMxOCBhOGFhY2RiNDUyMGUxNmU4YzFmOWQ1YTIxYWRjZWJmMzU1ZGQ1YjBmIHB5M2stY2RlY2ltYWwKKzg2MzE5IGIwZGUwY2U4YTcyNjRiNDhkYjgzMGI5Y2RkNTZhMjZmMWRmMmU1MjcgcHkzay1jZGVjaW1hbAorODYzMjAgODM3OGViODA3NzQ2YmIxZTI3YzZjMzI5YmZiODM3ZTQwYjFiNDU2OSBweTNrLWNkZWNpbWFsCis4NjMyMSAxNjk4YjBmNjQwYjY0ZTVlMjQwMzBiMmQ2MWRkYWZjYTg2MzUzOGVjIHB5M2stY2RlY2ltYWwKKzg2MzIyIGNhMmI5MzdlMWE4ZDEyNjVlZjNjNjkxZjkxMTU5OWRkMGNlZGY3YTIgcHkzay1jZGVjaW1hbAorODYzMjMgMmIxZjg0YTRhZDMzYzE1ZjVkYTJmOGVkZjAzNDgyNGIyYjA3NTA0YSBweTNrLWNkZWNpbWFsCis4NjMyNCAwNzAzNjgxNzViMjQ5YzU3NGU1NTY5NTZmNGIxM2VhZDA3NTI3NTg3IHB5M2sKKzg2MzI1IDNiZDczMTEzZTgxMDdhZTVhMGU3MTBhNGMxZTE2NDg1YjcyYWE4ZjIgcHkzay1jZGVjaW1hbAorODYzMjYgNDI3MDgwZjJhYWI1ZWQzNWEzZjIzMTZmOTNiOTc5MmVjYTQ5ZWRjNiBweTNrCis4NjMyNyAzZjEwMzRiNDM0NzgzYzQwMjBjNzA1Y2VkYzc5MDMwMWYzNWIwMWVjIHB5M2sKKzg2MzI4IGYzYzUzMzg1N2ZhYmJiNzk2ZDMzYzdjMzg3MTY1NjI3YTcxYTdlMzMgcmVsZWFzZTMxLW1haW50Cis4NjMyOSAwYWQ2YTBkMDE0OWFhODJhMjUyMGQxNDMxMTgxMjNiMTM0NzcxMjQ3IHJlbGVhc2UyNy1tYWludAorODYzMzAgZDZkNzFkNGQ2YjY1MDZiNzU4MmM3NGM0ZTg4ZTMxMmUxYzg5MTczOCBweTNrLWNkZWNpbWFsCis4NjMzMSAxOGNiYWJhNjFmYTU2NDQzYjIwM2IxNzI0OGE4OGY0ZmQ0ZGEwZThkIHB5M2stY2RlY2ltYWwKKzg2MzMyIDAwYmMzYWY4OWI3Y2RhMTU2NGQzYTFlZDNmNmI1NzYxZWNkMmQwYjAgcHkzaworODYzMzMgOGFiMWRlMDgxM2IzYmY3NDYzNGY2OGZhNzk0ODBmN2UwMjgxZDA1MyBweTNrCis4NjMzNCA3ODgwM2NmMTRhOTRhZmIzYzg0ZDMyMjk2OTZiY2U0ZWZkMGFiMDY4IHB5M2stY2RlY2ltYWwKKzg2MzM1IGFkNjQ4ZjJiNWUwMDA1ZGYyYTYzNDJmMjczYzZlYzA0NjRmODJhYjcgcHkzay1jZGVjaW1hbAorODYzMzYgNDRjZDA0MGRkYTU2NjYyNWE5NTUxOGQzZjE5M2ZkMThjZjY0ZTdmYSBweTNrLWNkZWNpbWFsCis4NjMzNyA0MjhiNjEyY2IwNzZkODM4ODdkNTQzN2Q1NmUxZmM0OTk4MjU2NzA2IHB5M2stY2RlY2ltYWwKKzg2MzM4IGJhYjdlNzAzZTNlYTlkMTE0NzJiMzA0YzI0YTg1YmIwNzUyNjU2NGMgcHkzaworODYzMzkgNTZiNmNjY2ExZDRjYjVjN2U1NWE2NjQ3M2U2MmFiMDI4Mzg3YzcwZSBweTNrCis4NjM0MCA5MDA4MTFmNjcwNWQ3NWU0NDMyMDNlNmM1MTcwNTE0Yjk3YmRiMDcxIHB5M2sKKzg2MzQxIDFiNWY0N2UyZTBmMDMwZjE0YTgxNWY2OTcxZmI5ZDc4MzM2MjAzNmIgcHkzaworODYzNDIgNmEyYjkxMTdkNDc3Yjc2MGNhMmQwZmI0Y2QzYmJkOTBmMTQ5NGFhZSBweTNrCis4NjM0MyA3NmExYzVlODgzNTJmNzNkMmNhZjc0NmVlZTUwMTJlNWQ2Y2Y0ZmYzIHB5M2sKKzg2MzQ0IGZjM2IxMmViZmI5YTJiNDNjM2RiMWU1YWRhNDgxYTNhNmJkNDQwYzAgcHkzaworODYzNDUgNzVlMDJmZGJkMzNlNmNjYjIzOTNjZGZkYjlkNWFhNjBjMWM3YTZhZiBweTNrCis4NjM0NiAzMDYzMzljMzE3NTg2NTYxMDM4OTY2ZDk1YjRmZTQxNTMxMmM2NDY4IHB5M2sKKzg2MzQ3IDMyM2Q0M2U4OTUzYWY5MWM5NTRlOTZhYTc0OTgxZmI3ZGYyOWM4NTIgcHkzaworODYzNDggOWE2NmZlYjA3YTBhYzEyYWE2YWRjMGY4MDI4MjVkYzUxNWQ3M2M5OSBweTNrCis4NjM0OSBiMzQ3YjVjZDQxMTI2OTgzNjI0YjcxOTY3NjYxNzI0MWRmZGQ1NjVmIHJlbGVhc2UyNy1tYWludAorODYzNTAgNjQwYTA4ZWM4ZmEyOTRjNmRkYjE4NDgxNGJhYzg2NTEyYTA5YzhhNiBweTNrCis4NjM1MSBiNmRhOTc5MzBmNjMxZmFjYTk5NTJjMzRmNWEyNjEzNjJkNGVlMmRkIHB5M2sKKzg2MzUyIGI0OTM4YzM0YjgwMzYwY2M3YjE0NDI0ZTNiMjMxMjViMGE2ZjY5M2MgcmVsZWFzZTI3LW1haW50Cis4NjM1MyA0NDhhYjc1MTZjMGEwNmQ2YTg5MmIxYWM1Y2JhMTk1NjgwZWI2YmJjIHB5M2sKKzg2MzU0IDY0NmRmZGM0OGNhODZmMTI5MjEwNWFlZmRjY2RmNzM0NjZhZjMxNTQgcHkzaworODYzNTUgMTk0ZjMwZGM0NzAzNDU5NDE1ZDlmYzQ1ZDdkZTBkYTgxYTVjMTAzMyBweTNrCis4NjM1NiA5NGQwY2NiNjNiNDY0Y2NmZjYwMjRhNzQ3NThjYTM1MjcyYjcyZmZkIHB5M2sKKzg2MzU3IDc0ZmE2M2FhYjNmZDZjNzk3ZDBlZGIyNjI2NmVkMzU5OWE4ZjEzZTAgcHkzaworODYzNTggNmYyYTkyMWQ5NzIwMzE1ODk1N2Y0ZGUxNmVkOWNhYTkzZjE4MGExNyByZWxlYXNlMzEtbWFpbnQKKzg2MzU5IDQwZWIwYzlhM2Y5MjNmOTk0ZTgzYzhiNTRlNWJjMWQwM2JmZWIwZjYgcmVsZWFzZTI3LW1haW50Cis4NjM2MCA4NjE4ZGY2ZWNhZGQ5YjY2NjkwNzdjZjYwOWQzNmU3ZGZhMjBlYzBlIHB5M2stY2RlY2ltYWwKKzg2MzYxIGZlOWNmNTM1MTE5MDI3YjdmMWE3ZTFhNDViYjdlZGI4NzQwY2UyYTQgcHkzay1jZGVjaW1hbAorODYzNjIgNzM2NzJlNDQ1Y2M5MTMyM2ExNzA2MzczMDNiYzA5ZjFkYmVhY2I0NSBweTNrLWNkZWNpbWFsCis4NjM2MyA3YTg0MGI2ZDJmMjI0OTc1YzllNzc3ZjM3ZGIwOWRmY2M4MzFkM2E3IHB5M2stY2RlY2ltYWwKKzg2MzY0IDYwMDA1OTE0ZGZjNzYwYTgyMzA5M2Y2MDFjOTA0MDQ1MmY1N2Q4ZTAgcHkzaworODYzNjUgOWMwOTg1N2JkYTBiNDlkMDNmOGQwZDg3NTFiZmM5MWVhMWRhMDgzMCBweTNrCis4NjM2NiBhZjI2YmMwOTQ5NWUzY2UxNGJmNTI5YmQxNTZjNGE5YTBhOWIzNzQxIHB5M2sKKzg2MzY3IDMxMmFkOGY5OGZlMzcxN2U1YThhODdiZWFkYWQyNjA4ZGY4Y2U0YzggcHkzay1jZGVjaW1hbAorODYzNjggZTMzZjE2Y2E5ZWNmZGY2NjdmNGJmNWY0Zjg1ZjNmNTFhY2ZmMjFlYiBweTNrLWNkZWNpbWFsCis4NjM2OSBlZWViYjYyMmZkMDhmODUwMjI1MGYwMzEyZWY5NDA0ODEzOGM1ZTU0IHB5M2sKKzg2MzcwIDBhYThhZjc5MzU5ZDViNTBjNTk0MGNhMWQ4ZmUyNmZkMGE2ZDRhNWMgcHkzaworODYzNzEgOGY1ZDJiNTI3NjM0YThjMWYyZTMyMmNhNDZjMzAwMDQxMDg1OTVmNiBweTNrCis4NjM3MiBiYjllNDdjOTkxYjQxODJmY2IyYzAzOTEwZjU2NWMzMjM0YjZmYjE2IHB5M2sKKzg2MzczIDY1MzY0YzQ0ZTI5NThlOGVlYzdkODczYzhmYjBmMmNkY2NjNmYyZDIgcmVsZWFzZTMxLW1haW50Cis4NjM3NCBkMGZjMTA2NjE3ZTJhNzA1NzQ4MTg0OWI2NWIzNjE4MDkyYmUwYThiIHB5M2sKKzg2Mzc1IGM0ZGNiZTUxYzJlMzM4Y2U1YmI3ZTY5OGEwYjM0YzIxYjU1MjQ0ZDUgcHkzaworODYzNzYgOWZhNTI0NzhiMzJiOWZhN2Y5Y2FhMjE4Yjk0ODNiZTA0NDM5YTRlZiBweTNrCis4NjM3NyA1NTdiYmY2YjNkNzBhYzgyMTlmYTZjMDA1NjliZmQ2NjNjMzcyZTMxIHB5M2sKKzg2Mzc4IDJkZDUxOWU1OTljYzIzZDdmNWFiYzlhYjE5NWFkOGUyOTQxYmI4YWUgcHkzaworODYzNzkgNDkxOTY0MjZlZDJmMTQzMjI1ODU1MDkwZmI2YTBjZTZlNjk4ZjU0YiBweTNrLWNkZWNpbWFsCis4NjM4MCAxNmE0NmI2ZTcwNTQ0YTE0OTk2MzBkMWJkNjY0ZTFjOGYxMmNhYzdhIHB5M2sKKzg2MzgxIGYwMDUwMmY1N2IyOGFlODBkODRmMmU5Y2I2NGVhMzI0M2I3YTY4MTYgcmVsZWFzZTMxLW1haW50Cis4NjM4MiA2YTI4MWYwNDBiYjEzNGYyMmM1YTE4M2VkZjlmZWJjODIyMDdlYmMxIHJlbGVhc2UyNy1tYWludAorODYzODMgNTc0MjhlMzEyM2FjYzM0MWM2NjUzZmVlNzI3NzQxZTgyZWM2NjAyMCBweTNrCis4NjM4NCAxYjE2YmQyYmY2YzdkMGNhYmNjMzU4MWUzYzc0ODI4NzkwZGFhYjAwIHJlbGVhc2UzMS1tYWludAorODYzODUgYWU5MjZlY2NkZDBlZDBjYTkwMjQxZDliZjQxNTJjNmI3ZWMxNGMwNCByZWxlYXNlMjctbWFpbnQKKzg2Mzg2IDE4MTdhMTZkMWVhYjZhOTYwZGU3N2JiZTY3YjYyNmY0ODNkYWU1MjUgcmVsZWFzZTMxLW1haW50Cis4NjM4OCBlYjRhMzQ3Yjk4YzE2Y2RjM2IxZjE5YTM0MzljZjhmM2U5NjQ4ZmVkIHB5M2sKKzg2Mzg5IDE4MTdiNzA4OGQ4ZGZlZDFkMDBkNmYzZDIzYTMzZDcwMTZhZGI3ZTMgcmVsZWFzZTI3LW1haW50Cis4NjM5MCBmOTNmYWJkYjg3YWI0MTgzMTFlZTUwZjAzYmExYzc4NTNlZGUzZGJlIHB5M2sKKzg2MzkxIGUwMjc1OGU1NTJlOTI1Nzg4ZWQ3ZjRjMGZlNWU3NjAyMWExZjc5ZmEgcHkzaworODYzOTIgOTYxYzllODgyMWRkNWRiNTVjNWZkNzIyNjAxNTQ3MTUzMzI4ODFhYiByZWxlYXNlMzEtbWFpbnQKKzg2MzkzIGE1YjM5ZDg5ZGNjYjcwNjBlODk0NTY3MzkyMGI4YjA2NDQ1OGEzMjggcmVsZWFzZTI3LW1haW50Cis4NjM5NSAwNmY3NmVmMjdmODZjMDRiMjVhYjE3ODRlZmM5ZGM5Y2YwODk3NDc4IHB5M2sKKzg2Mzk2IGRlYTRmNzY0MTk0MGZlM2Q5YTMzODIwZjI0NjIxMWM5MzkwZGE2MzYgcmVsZWFzZTMxLW1haW50Cis4NjM5NyA3NGE1ODk0Yjk1MTM0ZjA4OWVmNTM1MjU5YWMyY2ZiMzZjM2JiNWRmIHJlbGVhc2UyNy1tYWludAorODYzOTggOGU2YTFjZDFmNDJiZjNmNzIwMGUxYTRhMjE1ODhhNzM0MjA3M2MxNyByZWxlYXNlMzEtbWFpbnQKKzg2Mzk5IDdjZWMwZGQzOTFkNjlmNzM2ZTNiNmZlNTNlZWU2NTg3NmYwYjBjYjkgcHkzaworODY0MDEgMzFiMWFhMzAzMDZjNTYzZDA2NDkyZGEwOTVlY2QwNjhjNTYyY2VlOCByZWxlYXNlMzEtbWFpbnQKKzg2NDAyIGU1NDZmNzYwNWNmMTIzMGFiMGQzMzM0NjVlYjU0NDY4NjhhZjM2YzUgcHkzaworODY0MDMgYzVlMDQ5ZmQ4MTcwYzhhNGFjYjMxMTE0ZGFmMzVhNmExYTA4OTgyMSBweTNrCis4NjQwNCBhYWZjZDVlMGZhZjFiZjllYzhjODAwYTEzODRiYjRlZWE4ODEyZGY0IHB5M2sKKzg2NDA1IDY3ZWIzZjUzZGVlYjkyOWM4MzdlNTVkOGQ0YTNhYzIyNjZiY2VkMGQgcmVsZWFzZTMxLW1haW50Cis4NjQwNiA1YjllYzVhY2RhYzQyNzRhZDQ0ZDZhZjgwYWFkNWE4ZTVkYTJmYTM2IHBlcC0zMTUxCis4NjQwNyA3NzkzNzdmMzA3N2Q5ZTA2MWU2NGY3YjljNGQ0ZWI2Zjg2MjBhMGQ0IHBlcC0zMTUxCis4NjQwOCA3MjNlZDFiNzc4NzFiYTIxZTU0NjU0ZGY2ZGVhNjQyMTZmNzFhYzU1IHBlcC0zMTUxCis4NjQwOSBiNTIyYWJmZDJmZGU3MDA0NGMyMDM3ODc3ODM4MGM3ZWU4ODgxNWQzIHB5M2sKKzg2NDEwIDk4YmQzY2ExZWQ4NjM2Zjk2YjUxM2JhNDc0NDFiZGI3ZGI0NTBlYTUgcHkzaworODY0MTEgYzY5YWEwNzI4MmE4OGFlODJjYTY3OGRmYjUyNzhiNDIwNmI0N2Q5ZSByZWxlYXNlMzEtbWFpbnQKKzg2NDEyIDEyZGE1ZmI4MTEzNDAxOGZmODhlNzMwZDI2MzQwYmY4ZTkyMTRmM2IgcmVsZWFzZTI3LW1haW50Cis4NjQxMyA1NTcyYjg2OTY3ZmY3NmU2YjI4ZDUxZjEyMjYxOTQ5Y2ZkYTYwOGVhIHB5M2sKKzg2NDE0IDg1N2Q5ZmU2MDE2OTgyNjNjM2RjYjQ2MTNkNDliNjhjMmM2MWNiMTMgcHkzaworODY0MTUgMTY2YzdiZTcyZTc4YTY2MjU2ZGYxMDUzYjdhNWE2MjA1YjMxM2M2YyByZWxlYXNlMzEtbWFpbnQKKzg2NDE2IGRmMmViZGRjMjhjNjMyYjIyZjJiZjg0ZWNmMjcwOTliYTZjNWNmMmUgcmVsZWFzZTI3LW1haW50Cis4NjQxNyBjM2Q4NWQyYWUxYzg3YTNmOTY5ZWM5YTg3MzllY2NhN2E4NWM3YmM2IHB5M2sKKzg2NDE4IDFhNjUyOTBlNmQwMzYwNWMwNjExNzk5ZmQwMzFkYmZjMWU2ZDRhMGQgcmVsZWFzZTI3LW1haW50Cis4NjQxOSA1MDMwN2E3OTU0MjQ1MjAzODY4ZTYzMDA0MjVhNjNiOTkwNzRiY2Y0IHB5M2sKKzg2NDIwIDBhMWE0YzQ0NDM4MTY4MWRlZGJiNDE5MmQxZTYxMzVhNGRhNGE4OGIgcmVsZWFzZTMxLW1haW50Cis4NjQyMSBiZTUwYzkxZTZkYTUzZjQxY2M1OTRmZDY0MDgxMDFjYzg1YWE4NzZhIHJlbGVhc2UyNy1tYWludAorODY0MjIgNjJhYjM5ZWZlMWM0YjQ5NTZhOTc4YTBjZDhiMDgwOTJlYjYyOWRmMCBweTNrCis4NjQyMyBlYzQyMTEyYzIxMDA5YmEzZTcwMmM5NzhkODc2MzY0YjM3ZmZlMTE2IHJlbGVhc2UzMS1tYWludAorODY0MjQgOGViMWM5ZTgxODdiZDg1MDQxNDVkZjFiMGE0OTQ0OGFhOTViOGY2ZiBweTNrCis4NjQyNSBjOWQzZTEyYmNkNDJlNmU5YThmNWU1Njc4Mzk1NzBlNTMxNjJjNWQ1IHB5M2sKKzg2NDI3IDA1MDllY2RmZjhhZTdjOTU4NTIyM2UxODQ5YzUzNGU4NzFhZjM0YWQgcHkzaworODY0MjggNTZmYjFlNzc2NzQ4NjE4NDJiNzM0MjhmYzFmYzEwNzc3ZWM5MTI2NyBweTNrCis4NjQyOSAwMzI5NjMxNmE4OTIzMWM2OGVmNmJhYWJkOGY3YjQ4YjcwYmFjYzViIHB5M2sKKzg2NDMwIDBhMjdjOWRiOWFjNzkzMzFhMmViNmQ4OGRlNzdiMzQ2YmE0YmZjOWQgcHkzaworODY0MzEgOGQ2NTE2OTQ5YTcxZDA3NTg1NWNlOTJhNmI5NmU1OTU0MmY0MjQ2OSBweTNrCis4NjQzMiAxMjYxMDJiYTc0OGY4ZjNmMmQ2ZGJhMzdlNTg2YTlmNmY0ZjMzOTMxIHJlbGVhc2UyNy1tYWludAorODY0MzMgNmFhNzc4M2VhMGU5ZTZhM2RjNWU1YTllNTk3ZWJlODUzOTQ4MzMzZSByZWxlYXNlMzEtbWFpbnQKKzg2NDM0IGQyZWY4OGU3MWI0YWM5Zjc0NGVjOTE3ZjkyNjQ1YzBkMWMwOGM4NjYgcmVsZWFzZTI3LW1haW50Cis4NjQzNSBlMmVmNDdiYzI4MWQ0OTgzMmY0NmFjNDk0NGJhYzc5M2NhMzg2Nzk4IHB5M2sKKzg2NDM2IGNlNDEyN2VjNWVlYjdkYWZkZWIwYzAyNjUxNTRlZjAxZmNmZTdiYmIgcmVsZWFzZTI3LW1haW50Cis4NjQzNyBmNmU4MTNiNDhhZjNkYWNhZTdiNjJkMjJiOTA4ZWRjNGQwODVhMjg3IHJlbGVhc2UyNy1tYWludAorODY0MzggM2Q1NDhiNzFkMDgyODFjZTU4MjczNGNmMjdmZjAxOTMxMWZhY2MwZCBweTNrCis4NjQzOSBjMjFhZWYzZmY1ZTJmMzdjNmVlMWUwNDdiYWY3MzE5YTM1ODRhNmI1IHJlbGVhc2UzMS1tYWludAorODY0NDAgY2EwZWRhNDAwMjE0ODE0MjZiMGFhMDEzZGE4MTdhMTc5YmU3N2UwMyByZWxlYXNlMjctbWFpbnQKKzg2NDQxIDVhY2UxZGEzMjc1ZTllODBmZTNmMTYwM2I5ZmM5NjdlMTI4YTQxOTUgcHkzaworODY0NDIgMDMyNDYyNDc5ZTBiZDMyYWZlNjc4NzQxYzQzOGFhNWQ3Y2RhYjI2MiBweTNrCis4NjQ0MyA1ZmQ5MTdkNDFjOWMyZDM3ZGRkM2Y4OWQ4ZGQ5ZjUxZGRiOTE2YzA5IHB5M2sKKzg2NDQ0IGNhYmM3NjExNTQ3ODQ5OWY0NDBkZTdkZDgyMmYwZWNhNGFlN2ZhNjUgcHkzaworODY0NDUgYTgzZDk4ODhhMGQ5YWJhMDdkMDQ2YWZiZmJhOWFhMTYxMDUwMDM4NiBweTNrCis4NjQ0NiBkMTJiOTkzNjI5YTE2NzgxOWEzYTliODRjM2MzMDEyMThmM2Q5NWY2IHB5M2sKKzg2NDQ3IDZiZGQzMmNiNTVhOWEyZjBmYzg0YTgyM2U3NTM3ZjAwZDgyOGNlMGQgcmVsZWFzZTMxLW1haW50Cis4NjQ0OCA0YzRmZTcxMzljNjhlMjFiYmZhNDgyMTM0ZjU0MzU4YTM2ZGQ2NGIwIHB5M2sKKzg2NDQ5IGIxMWE4NGRlNDQ5MjVkY2I5NjI3ZTFjYzEyNTliMDc2MTc2YTY2YzggcHkzaworODY0NTAgYzZiMmY0MTc4MzBlYWI0NTY1ZDhiYmU3ODUzMTM2NTBhOGI2YzY2NCBweTNrCis4NjQ1MSBkOTJhNWI4NTBmNWU1NjgwOGJlZGMwMTcyMzkwNmVkNjRjNWU2ZTJlIHB5M2sKKzg2NDUyIGQ5ZTZiOGE3NzA3MDUyYmQ0MDllZDQ2Zjg3NDY3NTZlZjUzNTlkMTIgcHkzaworODY0NTMgZDE4ZTlkNzFmMzY5ZDgyMTFmNmFjODcyNTJjNmQzMjExZjliZDA5ZiByZWxlYXNlMzEtbWFpbnQKKzg2NDU0IGQ1ZWU5NmU3YWNlYmIzZmI1MjBhYjM4MzgxOWE0ZmQxMGM2YTQ1N2IgcmVsZWFzZTMxLW1haW50Cis4NjQ1NSA2M2Q5ZjAwZmVhMDczMGMxYzQzN2E1MGY2NGE0MmI3NzkyYmRjYmZiIHJlbGVhc2UyNy1tYWludAorODY0NTYgNGQ0NWE0YWYzMmE5NmY3MThjMTNmNzkyNzQyZTI2MzAxMzNiYzNhYSByZWxlYXNlMjctbWFpbnQKKzg2NDU5IDUwMjJlNWI3M2FkMTk3YzE2Njc2NWNlN2MwYTIwNDY1YTU0MWMzNzIgcmVsZWFzZTI3LW1haW50Cis4NjQ2MCBjZTM4OGZiMWJlMDFmOTIxOWI1Zjg0MDY2Yzk5NTMxZTFjMzRkMjIzIHJlbGVhc2UzMS1tYWludAorODY0NjEgMGYzOTgxODhjN2Y2MDYxMDAyNDliZDBmOTNjNGJlNTQ1NmE4OTMyNyByZWxlYXNlMzEtbWFpbnQKKzg2NDYyIGI3ZDAyYWU0NWQxNTM1MTc0OGM4NGY1ODhjYWZkOWYyZTgwYjBkZWYgcmVsZWFzZTI3LW1haW50Cis4NjQ2MyBmY2FiZTQ3ZmUxZGU1MDRmMDNlYmNmNmVhY2Q0MzI5N2FiOTc2YzcwIHB5M2sKKzg2NDY1IDI0ZmM4Yzg1MmQxM2E0NzY1NjUxYmU3Njg4NjIyOGI3OWNlNTgyYzUgcmVsZWFzZTMxLW1haW50Cis4NjQ2NiBiNDVlYWJjN2MwMDQ2YzUxN2M0MTRiMWQ5YjBhZDc4ODQ3MDZkN2EwIHJlbGVhc2UyNy1tYWludAorODY0NjcgYmEwMTQ1NDNlZDJjMjM1YzY2NGZlYTRhMmE3NTdjYzk1MTBlOTQ2MSBweTNrCis4NjQ2OCA2ODMzMjcxMzczNjUxNDY5ODI3OWRiMjE0YmU2MzgwZTRhMDhjMWFhIHB5M2stY2RlY2ltYWwKKzg2NDY5IDYyODk1OWZiNDBjMzM5YTY5MjFmZWI2Mzc0NjUzMjY5NjUyODZjYTcgcHkzay1jZGVjaW1hbAorODY0NzAgZTQ1ZDBiYjc4MGRjYjNjZjIwYWFmZDIyZDExNDdjZWYzZjUwZmI3NSBweTNrLWNkZWNpbWFsCis4NjQ3MSBmNzIzYWExNTdhODJkOTc2NzI4OWU4NjI1NDY4ZjJjNDk4ZTZiM2M5IHB5M2stY2RlY2ltYWwKKzg2NDcyIGRhMDNjNjUwNTI0MGVhZWJlMjE5MGY4MDU0YjlhYTk1ZDYzYmU2NjggcHkzay1jZGVjaW1hbAorODY0NzMgNjljOTEzMWFhMzIyNGU3NjdkOGQ3NjIxNmQ5ZjI0N2IwYjVhZTkyNyBweTNrLWNkZWNpbWFsCis4NjQ3NCAzMzU4MjcxMGUwMTQxZmVjMDRhOWM2YjhjMzZiYmJmMzgzOGYyNDY2IHJlbGVhc2UzMS1tYWludAorODY0NzcgOThjOGU3OTNjMGIzZGNjZWZhNGU1YmUwYmYxODZiNGFiOGI0ZDA5ZSBweTNrLWNkZWNpbWFsCis4NjQ3OCAwZGY2YWM2MjI3MmJhOTVkMjJiM2U1YzgyNzc2ZTE3NjA0OGQyZjNjIHB5M2sKKzg2NDc5IDRiOGNlZDVmZWZiNzQ2YjM4MzNiNjg5ZGRiNzlmNmM1N2EzOTdhYjIgcHkzaworODY0ODAgMzQ2MjdkY2EyMTk2ZWQ4YzMyMzYzYTllYWEwZTkwOGNhNzBmYmQwZCBweTNrCis4NjQ4MSA1MmZlNjAyMTZlODkzMjMyMjE3YWRiOTczODFkMmMyYzI5ODEyMGQwIHJlbGVhc2UzMS1tYWludAorODY0ODQgYWU2NjEwY2E5MGExOWNmNjgzMTljMTBmNTUyNDljYzk4OTBjM2VmNyBweTNrCis4NjQ4NSA1NWFiYzA5NjVlOWQ3NjVkMzAzMzZhY2EyOWIyMGFkYjVhZGQwZjMyIHB5M2sKKzg2NDg2IGJiMTIzNzRjOGRjNmU3YWMxNTEwMGYwMDczNzAzNTc2MTUxYmRkNDkgcHkzaworODY0ODcgYzRmZTRiMTMwMGQ1Nzg5NTMxNTBkZGYxYjczYTRmYzI3NjljM2FhMCBweTNrCis4NjQ4OCBlZjFkYjdmNWM4YTlmMjEwNTViM2YzODk3Y2JkYmViNDlhZjQ3ZjBjIHB5M2sKKzg2NDg5IGZmNmIyYmY3NWQ4MTI2NzFhZGNiNzU5ZTA1OWJkMTM5MThjNjZhMmQgcmVsZWFzZTMxLW1haW50Cis4NjQ5MCA0Njc5ZmJkZmM4MTdmNjZiMTVhNjMwY2I0NmRkMWNmMWU5MDNkZTIyIHJlbGVhc2UyNy1tYWludAorODY0OTEgNTg2YTkyY2Y0Y2M3ZjQ3MzU4YWI5OThjOTQ5ZDA2MmVmNzUyYzk4ZSBweTNrCis4NjQ5MiBjOWZiMzBmZDFmMGE1Y2FmZDIyZTI2YWE0YTE5MWZkMzA3MmRlODcwIHB5M2sKKzg2NDkzIDBkMWI2NjIzMDI0N2M1NWNlMjhiYWYwNDM0ODAxMDBmOWE0NzA0ZjMgcHkzaworODY0OTUgNTJiZjc5ZmQ2ZDZjNmY0YjZhNjI5YjMyYTI0ODhjZWNmMmMyZTQ1ZiBweTNrLWNkZWNpbWFsCis4NjQ5NiBkNTRjOGYxNmM1MWMyYmY1ZmZmNDJmMjI1M2MyODM0ZWUyYTVhNGYwIHB5M2stY2RlY2ltYWwKKzg2NDk3IGJkNjhjZWY0ZjFlZTA5ODhkZTM5OWRkZGM4MzNiNjlkMzI4MmM3NjkgcHkzay1jZGVjaW1hbAorODY0OTggNzgyNmQ5MDdiNzY1YmQzZTI2NjgxNDM0ZDcyYTZlZGI0N2VlNTExZCBweTNrCis4NjQ5OSBkOGNjOTVkN2RlNjJhMWZiZTVlYmZlNjdhNTM1ZDMwYjA1NzdmMDgzIHB5M2sKKzg2NTAwIDc1YTgyZmUyNzRhN2M4NmZlN2E1NjYyYWUyMzQ4MDAyMTQ3YmE5MTYgcHkzaworODY1MDEgMzc5MDI5NzE0ZTI0NTk4OTcxMDZhMjM1NjZjYjgwODVjZDg3ZTAzYSBweTNrCis4NjUwMiA5NGJiY2VjZDk1ODI1N2RiMGExZDIzMDVmMzcwNWYwNjg0MmMxZWVkIHJlbGVhc2UzMS1tYWludAorODY1MDMgNTJlNTE5OWI2NTEzM2UwNTYzY2IwMWMyNzE0NWRhNDAyNDE0YWExMyByZWxlYXNlMjctbWFpbnQKKzg2NTA0IGI0MTQwNGEzZjdkNDE5YjFhZjI0YzRjNDg3NmM4YzY2NDRiMWYzNjUgcHkzaworODY1MDUgNjZlOGQzNWQ3MWZkZWFmYjc4MWE5Mjk1N2UxYTEwYmQzY2Y4MzljNyByZWxlYXNlMzEtbWFpbnQKKzg2NTA2IGNkYzM5ZjZiZWJmMTBiYmRmNzU1MmRlMTI2YTI0NmU5MjA0Njk2NjMgcHkzaworODY1MDcgYWYxM2ZiNmZiM2RmN2U0YTZkOWY1YmRiNjE5YmRmYWNiZDkyZGI0NCBweTNrCis4NjUwOCAxNWJkNTBlZTJjNGMzZTk4NjhhY2M5YzZjNjUzMDFiZWFmMTQ0YmZmIHB5M2sKKzg2NTA5IDgwNWMyOGRkNjdiM2UyMWIwNzcyODFlNGM5YjUyNjM5ZjQ4Zjc3ZDYgcHkzaworODY1MTAgNDgzYmJlYmM1N2JmZmI1ZjY5NDIxZmRmYTRhYzJhYjY3OWU3MjJiNCBweTNrCis4NjUxMSBmOWZiOTJlYTQ4NTAyOTI4MDc4NDdmMDFhODVlY2JiMzQ2NzQ5OTNkIHB5M2sKKzg2NTEyIGUxMDVlNmFjODUzNjUxNGQ2OTM2MzhjYTNhY2U0OWNhNjU0NDUyMGQgcmVsZWFzZTI3LW1haW50Cis4NjUxMyAyN2UzMmQ1MjAwNTU2MDg5NzUyNTM5NmRlNjZlZTIxNjIxZTBhY2JjIHB5M2sKKzg2NTE0IDViYzQ2M2IwNGM4MzMzZDMxZjc0YTZmMzUwODI1ZWM1N2U5NjFlNTYgcHkzaworODY1MTUgMDE5NDIxYTg5ZWY1OWRjMGIxNmZhNjkzZDQ4ZGMwZTRmYzUxYjE0OSByZWxlYXNlMzEtbWFpbnQKKzg2NTE2IDhiNmZhZWEzMDU3MzQwZDU2ZmVmOWU1NGRjODc5YmRiOTViNDVkYzMgcHkzaworODY1MTcgMjk3ODE2MGY0OTE0OTViYjEzNTJhMGEwMGQyMGRhYmFmNDExNjZlNCBweTNrCis4NjUxOCA4MmIxNjFmYTI4MTg0MTI0ZDk2N2VjZWJiY2IxMzk1YjU3MDEyZTJlIHB5M2stY2RlY2ltYWwKKzg2NTE5IGYwZGRjOTFiYWVjMDRhNDcyOWZiNGM3ZTM0NTg3MzU4YjE4YmY3MDcgcHkzay1jZGVjaW1hbAorODY1MjAgYmIyNzY5Mzg5YzUzMTQ3M2UwZTljOGMxNDdmZDlkYmM2MmE5MWZmOSBweTNrCis4NjUyMSAzNzhkNGY0ZTljYjUwZDhmZDIyNzk0ZGRiMmM0OTllYTQ0ZTA3MjUyIHB5M2sKKzg2NTIyIGZiN2RkZjFkMzU5NDAyOTI3MDNlNzAxZGU4NjdhNWMxZjUwMTg0NjQgcmVsZWFzZTMxLW1haW50Cis4NjUyMyA5MzJhM2ZmYTRlNTYxMWVlOTcwNmEyYjE2YjFmN2E0MWUyYTZlYTZjIHB5M2sKKzg2NTI0IGEwMTliYjRmZmI1MGU1NTc1NjlkOWEyYTZlZThiMWNlNWE0NDFjOWUgcmVsZWFzZTMxLW1haW50Cis4NjUyNSAxZGFhNDBiNDEyMTE3MjY4ZTRkMjA0MjVlMGJhN2ViZjkwNmUxNjlkIHB5M2sKKzg2NTI2IGFlMzE1YTdmNjJkMjc4MTFmM2QzNzkxMWEzYzE3MDEwOWRjYzU5MTcgcHkzaworODY1MjcgNjdhYjc0MDJlMGRlY2RlYjNhZjQzMzJlNmUxNjI3YTc2ZGY1NjEzNSByZWxlYXNlMzEtbWFpbnQKKzg2NTI4IDI3YzU0NTNhMTQ3ZjUxMWNjMjhlMzg5MDc0MmQ1YTQzMWIzYjk2MDYgcHkzaworODY1MjkgYjg0MjBlNzY3NjM4ZTU2MjZlNDk1Mzk2NjhlZmUwMjU5MGQ3ZDYzNSByZWxlYXNlMzEtbWFpbnQKKzg2NTMwIDBjY2E3M2IwYTViZjAwODc3N2VmOTQ1OTYxMjAzZmYwNGVkYWIxM2MgcHkzaworODY1MzMgYTFkYTgyNDNiNjNlNmFjMjdkMDI2NzdkMDRkOWU1ODE1YjUyYWVjYSBweTNrCis4NjUzNCA0MjAzMDE0MDA0MDNmMGUyMzlhN2E3NzI5YzY0N2VhOTdmNjk3NTg0IHJlbGVhc2UzMS1tYWludAorODY1MzUgZTk4M2ViMjIyOWRmZGEwZTdjY2MxNDA3Y2I1ZGY1ZTA2NjM4ZWFmZCBweTNrCis4NjUzNiA0YjNhNTUwMjAwMmQyMTg5MDBmZTk3MTQxZTY2OTFmY2NmOWQ1ZTQyIHJlbGVhc2UyNy1tYWludAorODY1MzcgZDljODkwNzIwNDRlNDhkNzViZDQ4OTFhOTY0MTUxNWI4NWFiN2ZlMCBweTNrCis4NjUzOCBlMzczNDRhOGYwYzkxYzM5NDEyNzI3YmFmZDU2ODk3NDdiNDhjMzEwIHB5M2sKKzg2NTM5IDM1MDg5OGUwOTVhYTZmYmNmMDVlZjliYjhkYzY0MzQ2MTg4MGNkNDUgcmVsZWFzZTMxLW1haW50Cis4NjU0MCBiOWJlNDVmNDMzYjkyZGI4NTMwMGUwMzkzMjBkMDQ5MzkyZTJjMzA4IHB5M2sKKzg2NTQxIDUxZjcyYzVmZTI4ZTRiZjFhYzg2YzgwOWNkNDE5NjhiMjc0Zjc4ZmIgcmVsZWFzZTMxLW1haW50Cis4NjU0MiBkNGY1ZTI3ZWQxODZiNmRiMzZhZGVjN2JiYmRkMGM4OGYyMTFiMzFhIHB5M2sKKzg2NTQzIDQ1NzJkMjhkYmFjNzMzYTNkNzExZmE0N2RiYWMzOWY4MWFhNDk3NmIgcmVsZWFzZTMxLW1haW50Cis4NjU0NCBjZGRjYmUzYmY1N2EyZTgzNzk3Y2NkNTQyMTY3ODQxNjYyMmUxOGE2IHB5M2sKKzg2NTQ1IGM2NGVkNmRhNDhiOWFiMzhiNTkyNjM4M2QwMGYwNWFjYjIwNDdhMzkgcHkzaworODY1NDYgZDIyYWE1YWU3NzYyNWY3NjllNzlkOTY2MDU5NjRhMDM2MjQ0NTc0YyByZWxlYXNlMzEtbWFpbnQKKzg2NTQ3IDVlZDM3YzJjMDU3NDFkZWU5YWIxMGY2OThiYTU2MjQ0MmFjZGJiZWUgcHkzaworODY1NDggZTlhYzNmMzExMTk5NTc4MWZiOTU2MWFiNWIxYmNmMGNkODk2YTFkMCBweTNrCis4NjU0OSA4NGEzMDVlMmU1NDg4OTMxNzRjNmE1MzBiMDM5MTAzOGVjNGY0MzgwIHB5M2sKKzg2NTUwIDRiNGM3MjEzMmFiNmViMmIzNWNkYmE5YWVlOWU3YzNhYWQwMTI2NmQgcHkzaworODY1NTEgZTUzMGZjNzY4MmJmMjk2NGJhNjk1MDQzMWI4NzQ0ZmZiZGFlYjEyNCBweTNrCis4NjU1MiA0MDk3MGU4OWU2MGFiYTM5ZjQ3NTI1NDM1MzNlNjA3MTkzYzgwZGMwIHB5M2sKKzg2NTUzIDgyNWU0ODBjOTMwZGExMDMxZWM3OTE3ZDA5YzQ0ZjAxMjM5YWIyYjYgcHkzaworODY1NTQgZjA3OTY0MzkxNWI1M2U5Y2YwMThmNjM4M2FmOTM4ODdiOGY3YzkyZiByZWxlYXNlMjctbWFpbnQKKzg2NTU1IDI0NWY2Y2EzYjIzMzBmZWI0YTI3ODFiZGM0Mjc2MGIyYTkxOGRjNTQgcHkzaworODY1NTYgNTNkZDcwMGEzNWI2ZjJmZTY3NzAwNzk4NDExMWVkZWMyMWVhZDZlNyByZWxlYXNlMjctbWFpbnQKKzg2NTU3IGRkYjNiYzhlNjk5MGRmNGYxYTYxNTY0ZDFmYWJiZjMzMTcyMzRmZTMgcmVsZWFzZTMxLW1haW50Cis4NjU1OCAxOWI3MTFhNzdlZmYxYjQzN2Q2NjQ2NGIwMGZlYzkwOTQ4MWFiYzJiIHJlbGVhc2UyNy1tYWludAorODY1NTkgMmRkNTM5MjVmMDA3MWRkNjVlOGUxMzMwN2M0ODIwMWQ3MmQyNTFlYyByZWxlYXNlMjctbWFpbnQKKzg2NTYwIDVkNTVjNWJiOGFiMWM0MDU0ZDc2NDA2MjFhZjFlZTQyZWU0MjVmOGUgcmVsZWFzZTMxLW1haW50Cis4NjU2MSBiNDZiY2U4N2QyYWYwMWU0NTg5ODI0ZDlmZjkyZDMzOTE3ODJjYTdkIHB5M2sKKzg2NTYyIGRlYmM3NjY0MTkxMjJhZjYwOGE3NmE1NzA4ODUwYTk5NDFiZmY2OGYgcHkzaworODY1NjQgNDBiMGM2OWJiMmJkNzUwNmY1OGRlOGM5ZTkwMGMzMDkxNzJjYTAyMSBweTNrCis4NjU2NSBjMjBhZGU2M2YzZGJjYTFiOGEyNzgyNGZiZWM2MDYxMTdjN2NiNjU4IHB5M2sKKzg2NTY2IDRlZDYxMDFmOGFiMjU1NTQzY2I3NWNmY2MwMzVkOWNmNzY2OTRiNDkgcHkzaworODY1NjcgN2YzMmM1ZjU2ZDFhMTE4ZDdlMDM3MDI5M2Y1ZGEyZjVhYzQwODk3MiBweTNrCis4NjU2OCBhMTkzNmZhNjM1ODBkNjJjOTMxZjUyMzA0OTg1Mjg5ODk5ZjE4NWU3IHJlbGVhc2UzMS1tYWludAorODY1NjkgNTllNTZiODJlNmNiMmNmYjU5NTMyOTdlNWIxMjVhMWRkMzg3OTIzZSByZWxlYXNlMjctbWFpbnQKKzg2NTcwIDRlMmRhNTI3ZjViMWRiMWFmZTE4NDgxY2E2ZjVhYTM2Y2VmNGE1MGYgcHkzaworODY1NzEgYWVmOGYxODUwZDI0ZDcwZGJlMjIxOTdiZTA3NTNkOTMxOTE2ODZmZiBweTNrCis4NjU3MiA3OGEzODBkNTdmZWExOTRhYzMyNGRmOTg1YmFhOWE3MDFmYTU4YTQzIHB5M2sKKzg2NTczIDUxZTFjYmRkOGZkMjg1NmRmZWEzYjY0ODBlNGNjN2I1OGEzYzNlYmQgcHkzaworODY1NzQgMmFlNGVlZDRhM2IzNzg3ZTg0OWFmYzhmY2Q2YzZmMDQ1Nzg1N2E3MSBweTNrCis4NjU3NSA4MzhmNjk0OGRlYjhiNmY4MDU2OGZkODllNzEwMGYyZTEzNmJhYjIwIHB5M2sKKzg2NTc2IDNkMmY1NWNjZDY2MGVjNjE1MzVhYjY0Y2RkM2ZhNmIxNzhkOTdjYmEgcHkzaworODY1NzcgODBiNDhhM2EyNDczNGM1Mzg4ZjE4ODFiYTc1OGUxMjUxY2I5NzJlMiBweTNrCis4NjU3OCBkNTcxODFhY2FmOGM0M2Q2NDNhMzhlZmRiMTQ3OWE3MjdjYzMyNzM4IHB5M2sKKzg2NTc5IDFlZjQ2NTFmZWVmODliODAyYWNkNzNlNTNjMzkwYjEyYmQ1YTEzODYgcHkzaworODY1ODAgNDFkNThiZWMzZTA4YjQ1YTM4MDI0NDUzM2VkOTllODU2YTc3OWM4NCBweTNrCis4NjU4MSA0ZTUxMmE5NDliNjBjMDQ4MDE1NzQ3YzU4NDI5NmY5ODRlYWFlOTYwIHJlbGVhc2UzMS1tYWludAorODY1ODIgYTdjMjIxMDdhZWNkMDQ1NzJiZjA0YzM4NGNjMGVmMTYwODYwNDk4MSByZWxlYXNlMjctbWFpbnQKKzg2NTgzIDY2ZDQwYjZhMmJiMWFkODBkYmY4ZDQ1MmM2NjUyZTU5Yzk4NGVlNTYgcHkzaworODY1ODQgM2EwZTcwMDBkYzhmOWQ3MDhhYTVlYWI1MTYxZDY0N2I3MTFiZmMzZSBweTNrCis4NjU4NSBlYTgzNTVjZGRkOWY4MTk3YmY4NTc4NzIzMDRjNWI3MjIwNTkzMWI0IHB5M2sKKzg2NTg2IGJjOWRjN2U3ZjM3M2RhYzZkNTUxNmNiODI0ZGI0OWI2MzA4OGU1MTkgcmVsZWFzZTI3LW1haW50Cis4NjU4NyAzYzliMWMwNWJhOWVjNTdiZDRjMWE5YzM5N2JjODkyYzlmMDRiNjgxIHB5M2sKKzg2NTg4IDdjZGJkYmYzNDgwYjhmMDJiOWQwOTdmOGEwZGU1YTI1NmQwODJiZDggcmVsZWFzZTMxLW1haW50Cis4NjU4OSBjNDA0YzJhMzQ2YTU4NDRiNWE5NThkYjAyZTM2NzAwYzQwNzBmNzNmIHJlbGVhc2UyNy1tYWludAorODY1OTAgNjMxZDg0NGJiYzQ1OTMyZDU4OGY1NGI2N2I5NGJmZGU2ZDUzNzM4YiByZWxlYXNlMjctbWFpbnQKKzg2NTkxIDk2NWY4NTllNjBhZmY5MTc2OGVmNmQ2MzE3Y2Y5Y2I3M2JjNzA4MzYgcmVsZWFzZTI3LW1haW50Cis4NjU5MiA1MDc1MTgyMmY2MjIzMDY2NWFhMWZjNDliMjdjMzVmYWIwNjgyMjBhIHB5M2sKKzg2NTkzIGMwNmVkMjVlNjliODMzMjdkNWI1YzlkYWI1OGM0Y2MxMmM3NjNjNGEgcHkzaworODY1OTQgNGYyOWFhOGY5ZjU0YjFhMjVkNjliNDBmZWU5MWYyOGI5YzUzMDRmNCBweTNrCis4NjU5NSA0M2U1MGJiOTIzYTk2ZWVhYTU4ZTE5Yzk5MGY5NDY1NDFlOWZmNTI2IHB5M2sKKzg2NTk2IDlmZTc2YzI2ZWE5ZmU3YmYzYmViMzRmZGQxMjk5Y2IxODBlYzZlYTggcHkzaworODY1OTcgZGVkZjcxOWIyNmEzNzRkMjkyNGEyYjAwYTZkMzdiMjRkYTllYzYyOSBwZXAtMDM4NAorODY1OTggMTI5M2Y4MTljZTM2NjIyZTRhYzM3NjU4MzM0ZDViMjA1YzM0OTg5NCBweTNrCis4NjU5OSA1M2JlMWE2N2U5NjRhZWNjMzkzOTRhYjRhMGZmMzI4ODE1Y2ViZTg4IHBlcC0wMzg0Cis4NjYwMCAxM2EyYTVkZTFiN2Y2ZWJjNTUzMDZjNTZjOTE1OTQwOTE5ODliZWNiIHBlcC0wMzg0Cis4NjYwMSA4NmUzZjYzMjRlNjUwMjM1MGUxZTFiY2M2NDQzOTRhNGZkMGEwZmYyIHB5M2sKKzg2NjAyIDQ0YjMxMjE5YWVjZDMzMmViZDJjZWIyYzliZTIyNjQ4MGRlN2M5NTMgcmVsZWFzZTI3LW1haW50Cis4NjYwMyA2NzFlNmJkMTgxMTQzZDI4NDZkYWMxMjgwNWEwMDFiZGMzZGNjYWJjIHB5M2sKKzg2NjA0IGI2ZDdjNWI2ZjFmMjAxM2IwMTQxZjVjNWIyZWRiZjE3YzFhM2RiYzcgcmVsZWFzZTMxLW1haW50Cis4NjYwNSBmNWRiNTM3ODM5MjJkMjc2Nzc3ODM5ODhmMmI5YWM3YjRlZjcwMDM5IHB5M2sKKzg2NjA2IGVlZDQyZDI4MzU2MjJkZjhhYTQ5NDUwYjU2N2Y0OWI2ZTA5YmRhM2MgcmVsZWFzZTMxLW1haW50Cis4NjYwNyA2ZWFiZjhjMWE3NWM3ZTUyMzJjZGFkZmIyYjVmMTg4MjQxOGYwNThiIHB5M2sKKzg2NjA4IDlmZWM2YWJjYTdkNzY3NjIyNjJlZmQ2NGE2ODg0YmVhYzBmNDVlNWIgcHkzaworODY2MDkgNGFlMmQwMTFhODBiYTVjZWI0YTQ1M2RhZGQ2MmRlYzY5Y2MxODJiNiByZWxlYXNlMjctbWFpbnQKKzg2NjEwIDU5MzA3YWE3ZDJmZTY3YTA4MWFlNGVmNzEzMzcxN2M0ZDgzYTJhMmQgcHkzaworODY2MTEgNDMzNTY5M2RmMjU5NzlkOWJmODc1MjBiYTA3N2UxYjliNTYyYmNkNCBweTNrCis4NjYxMiAxY2RjOWMxYzQzMGU4NWM1YjY1M2FkMTI2M2Q0MWY4MTdmNDEwZjNmIHJlbGVhc2UzMS1tYWludAorODY2MTMgN2FlYzIzODY4Mjg3N2IzOWIyYzQ2Mjg0MzIzZDc0OGRhYTc3YzM2OCByZWxlYXNlMjctbWFpbnQKKzg2NjE0IDEwYTFjMzk5ODY0ZTQ2M2JkMDc0MTdiMjNlMDNhZTg1ZmVhNmRjNjAgcHkzaworODY2MTUgY2ZkNTM4MzExYjZmYTYwZmJjOTM1ODM2YTRlYTQwN2Q5ZTUxOTg2YyByZWxlYXNlMzEtbWFpbnQKKzg2NjE2IDQ4ZmRjMmQ4Zjg5NmVjNzRkNTA3OTI2Mjk4NzZmOTc4OWZmNjYwNDQgcmVsZWFzZTI3LW1haW50Cis4NjYxNyA3YWYxOWU5OWQyZjg1ZWI5N2NlMGRkM2M3NDcyNzAyNDU5MDU1NmM5IHB5M2sKKzg2NjE4IDIzOGNhYWY2ODUyYjczM2VmMDUwZDE2NjlhZjk4NzdhNzJkMTMxZGMgcHkzaworODY2MTkgYWRkN2U5NzIxZjgwOTQ3MTM2MWViNGFiNGEzYzU3OTgwMThhNTFkZSBweTNrCis4NjYyMCBlMDEyMzc4MzFhZDJmYWQ2OWM1ZmRiZDEyNGI5MDcxZjIwZDhkNTAxIHB5M2sKKzg2NjIxIDM5OGIyMTgyMWQxYjRhMDBhNDQ3ZjJjMzI2YjJjZWEyYjA0NDVjMjUgcHkzaworODY2MjIgMjU3NTEyYjk3ZjgyM2QzZTcwMGFmYWJiODc5YmYwMGY5MGRkNTc2MiBweTNrCis4NjYyMyAxYjQ0OGZkN2UxYTI0OGM0OTMyMTU3YWYxNDJhOGYyN2YxYTZkNTkwIHB5M2sKKzg2NjI0IGFjZDk2MjgyNDgxOTE0ODllMDYzMWI4YWIzOWRhNTc3NTZhYmZjNWIgcHkzaworODY2MjUgNDU5YTY5MDI1ZDljMTZiZGI5YTg0MjYwMzIyMjg5YjYyODk4NzU0MSBweTNrCis4NjYyNiA2MjE4MmFiYzExNmFiYWM1NWU4ZmZkNzZiM2M0ZDE2YTJjYTBiNzIzIHB5M2sKKzg2NjI3IDA3Y2FkYzJjNjQzODI5OWZlM2M0ZTJkYWExYmU2Yjg2OTVkOWNmM2IgcmVsZWFzZTMxLW1haW50Cis4NjYyOCA4MzdhZDU4NTRmYzkzYjQwYzUxNDI5MmQwZmJiZjY5MjNjMDNlNTE4IHJlbGVhc2UyNy1tYWludAorODY2MjkgMmJlYjI1MzY5Mjg5NzUyNjc0MzQyYzBlYTg3NWQ3OTljMGZjZTUyMSByZWxlYXNlMzEtbWFpbnQKKzg2NjMwIDVjMDZkM2QxYjljOTBkNTAzOGY3ZWIyZWQzYThjYmJjOGM5MTk2ZjAgcHkzaworODY2MzEgNTQ0YjQ1M2U2MGE1OGVlYzBlNmE0MjgzNGQ3MDZjYTAzYmUxYzg2MiBweTNrCis4NjYzMiAyMDY4MjU1YjRkYTAwYTE4ZmM2Y2JiNmFmYzhjYmIxZTkwNWU1ODQ2IHB5M2sKKzg2NjMzIGZkZmM2ZGNhODA0ODNiM2QxM2ZjZTVjY2I2ZGMxOTI0MGU0NzNkNTIgcHkzaworODY2MzQgZDI5YTY3YzI2NjAwYzc2ODM0YjkwYzYxNzhmNmY1YjJjODI1M2IwOSBweTNrCis4NjYzNSA5YTBjMjQwMWM2YTZlMWYwMWJjZTc5NTIxMzBmZDU1MzE5NjYxMzhlIHB5M2sKKzg2NjM2IGY1NDc2OGE1ZTJmNTVkYzZlMWU3NzkyMDIwNTQ3NGJhMDA0MzA3NDggcHkzaworODY2MzcgNjE0Yzg0NjcwYzYzZDM1YTBmMjdhODg4ZDg2OTg1MzkwNDkzZmU3ZCByZWxlYXNlMjctbWFpbnQKKzg2NjM4IGMxM2Y4OTgwY2E3ZmRmYjM4YzQ1YjQwNmY4YTkzMzk1YTg3OTRkYjMgcHkzaworODY2MzkgZjhjZWI2YWZkN2E5MWFhYzlhNzk3OTkxNTliOWI2ZGNmNDM5NTMyMiBweTNrCis4NjY0MCA5NzE3MTUzZDU1OGQwNDllNGMzNTIxNTVlOTllODcxZGM3MThjNmZiIHB5M2sKKzg2NjQxIDYxZDFlYzMwN2JiMGRiNDkxZWI2Y2JiMWIyMGUyYWI3ZTgxNjljNzYgcHkzaworODY2NDIgMzIyYWEzZTgyNzY4YmUzYmM3YzI4NmE4N2I1ZTE4YmY1YjczNzQyMCBweTNrCis4NjY0MyAxNzlkYzRjMzQ3MGYzY2Y3NmRmYjljOThjMjc5MTEwN2JjYTU0NzQzIHJlbGVhc2UzMS1tYWludAorODY2NDQgOTQzYTg2NDk5MDBkZmY5ODU1MWVjMjI1NTU0ZmY2ZWE4OWEzYTI4NSByZWxlYXNlMjctbWFpbnQKKzg2NjQ1IGVlZDMyODhkZWQ4OTVmYjJkODllNGFjNGU5OTViNTIwZGViN2RlODkgcHkzaworODY2NDYgYTc4NDQ1N2UwMDBlNWMzYzk4NTc5NjUyMzQ0ODJiNmM4YWVmZTI3OCBweTNrCis4NjY0NyAxZWY4ZTlhNzVmZWYzYzcyMjMwNWY2NDhiN2I0ODRlZTY0NDgxMGIxIHB5M2sKKzg2NjQ4IDIyYmNkYWMxODFiY2E5MTFiZTgwMWFjNmE0NWQxNGY0NDRkZTZkNDAgcHkzaworODY2NDkgMWVjMDU4MGQ5ZDlkN2I2Nzg5ZjI5ZGI4ODEyOGNkNWRmNzFlMzdlMCBweTNrCis4NjY1MCA1YmE4YmZjZTdlYzFkNmRjMDYxMzViNDk3MWZmYjAwZDIyYzVkMGMyIHB5M2sKKzg2NjUxIDhiYTE2YWFiZDU2NDZiNzI4NjU4OGUxOWFkYWEwZGU0ZDA2YmRhMTUgcHkzaworODY2NTIgNDg1ZGNmZmM4OGI0NWUxNjg1ZWMxY2ZjNjg3Y2U2NGNkMDM1YjM3NSByZWxlYXNlMzEtbWFpbnQKKzg2NjUzIGY0N2ZjZDViNTAxZGVjMWE4MmRiM2Y4ZTQ0NDU0OTRhNmI3ZGY1NGQgcmVsZWFzZTI3LW1haW50Cis4NjY1NCA3YjE0ZjFmZjYwMmJiNTA4ZGQ1NTQ5YTk3NDE0ZTcxYjMyOTlhOTc2IHB5M2sKKzg2NjU1IGFkZDhhMDNkZGVlNmUzNWQ0NzZjNWU2Njk2ODJiYzQ0ZjgzNWJiZTQgcHkzaworODY2NTYgMDdhNDg3MGY2MGEwN2YwZjUzY2Q1ZTBmMTdmNDg1MWIzMjU3MjY5NiByZWxlYXNlMzEtbWFpbnQKKzg2NjU3IGEwODE2MjVkZDZjNjI3ZWIzNTQ3ZmY2NTA1MGQ3NGUyZGYwOGJhMGEgcmVsZWFzZTI3LW1haW50Cis4NjY1OCBmZmMzNzJjOGNmYTBjNzYzZTNjNDVmMzMyYjRkMWY4MDg4MTMyYWIyIHJlbGVhc2UzMS1tYWludAorODY2NTkgNWQxMTJjNzg3ZDZlOTRmMGQxN2ZiNDg3ZDIzMmNkOWQxNmRiYjJiMiByZWxlYXNlMjctbWFpbnQKKzg2NjYwIGYwMmYzYjMzZGQ4ZjkxZjQyYjFjNzAzMDMwMmE4MjU1OGIwZDQ1ZDQgcHkzaworODY2NjEgNWFiZmMxY2MyMmQxMWYzYzhjYTFiNmEwOGJjYzcyN2FiZDdlNTJmYiBweTNrCis4NjY2MiA2NmUwZjVjNjUxNTg2ODllM2NhNjFkZWVlZTUwZjY5NGUyMGYzNDQ4IHB5M2sKKzg2NjYzIGM1Y2ExYTliMWZkZjVmMmM0ZjdhZGZhOGM4ZTFlZjgzZDRlODU5ZTcgcmVsZWFzZTMxLW1haW50Cis4NjY2NCAwYjI3MTZmOGFmYjU5MDRkNDI4MjliNDk5YjE3YjdmNTViZTBhMjY3IHJlbGVhc2UyNy1tYWludAorODY2NjUgMGVmZDQyNTg5ZjE3MWUzODE4YTg4MWU5MDZhNmM4N2FhMmIyYzljMCBweTNrCis4NjY2NiBkYzZhMjdiZjg1OTI4Y2E3NWUzYmFhYmI0MGZiMTU0MzZiYzhlN2NiIHJlbGVhc2UzMS1tYWludAorODY2NjcgOWExOTA2OGJhOGIxMGUxMTNjNDRlMTQ4OWU2Y2Q2NDgyMTA0NzBjZiByZWxlYXNlMjctbWFpbnQKKzg2NjY4IDEwMmRiMGNmZmU1MWY2Y2M0YzllZjA3ZGRmM2Q0OGZmMGYyZmE1NjEgcHkzaworODY2NjkgM2U5NWYwODkyMzdhOWUyNzk5N2QyMWZkYzBjMmQxOTM5Mjk3MDAyYiBweTNrCis4NjY3MCAwODEzYzJhY2Y3NDE1NTE5NGRjMGQwMDlkYTY4YmZjYjhiNzQzMzNhIHB5M2sKKzg2NjcxIGFkYTY3ZGU2NDkxOTk3MWNhYjliYzIyNjJjMDczZGY1MjAwYWM5N2QgcHkzaworODY2NzIgNTM4MmNhOTVjM2Y2YzMxNmQ4ZmRiZjk2YzkwMjMwNTk0N2RlYzJlZCByZWxlYXNlMzEtbWFpbnQKKzg2NjczIGQ2YjZmOTlmNWFmOWUwMTUxYTIyODQzMWZkMWViNGNlYmE0NDJmOGIgcmVsZWFzZTI3LW1haW50Cis4NjY3NCBhYTY0ZDRmMWE3OTU2MTUzNWNhZjViMTY3MjczODU0MTM0YzY4Y2E3IHJlbGVhc2UzMS1tYWludAorODY2NzUgMmZmNzU4MzE1ZmExMGM1Yjg4NmRjNmVhZjI0OGVlNjZlM2Y1M2FjMiByZWxlYXNlMjctbWFpbnQKKzg2Njc2IDdiNzA1MTI4MjdjZjM5NGQyOWU4YjVhYzFhZDY0OWM3NDkwNjU0NDEgcHkzaworODY2NzcgMGE5ZmQ1Yzk0ZGMzNTk1ODlkNGNhMTIyYThiNGZjODEyNjg2ZDVlZSByZWxlYXNlMzEtbWFpbnQKKzg2Njc4IDRjMmIyYmU3MTQ1N2Y3NTBiYmM2Yzc2Nzk3MzRhMTBiYjAxMTMyZDQgcmVsZWFzZTI3LW1haW50Cis4NjY3OSBjNmI3ZGYxYmRmNTBlNDhiNjBkZDdmZDI0NDY3ZTc0ZWM3YTQ2MzhmIHB5M2sKKzg2NjgwIDdlZTU5MGFlYjJiMzQyMTI0ZWViMzZkYjA0MjFlMTI0OWEyNTZmZjAgcmVsZWFzZTMxLW1haW50Cis4NjY4MSBkOTc3NDEyMWE2ZGZkYTdmNWU5MGI5NDVmN2Y3MzQwYmVjNmY4M2RmIHB5M2sKKzg2NjgyIDZmMjVjYWMyODM2ZWFkNzk2MzllYjg0ZTVhYzEzOWJkMTA0NGRlYTIgcmVsZWFzZTMxLW1haW50Cis4NjY4MyA0ZjM1ODY2ZmQ4Y2IxMmVhODVlZmVjNjA2ZGRiZTYzZjY2OTY0YzgxIHJlbGVhc2UyNy1tYWludAorODY2ODQgZjE1MGI2Nzg1NDhlZGYwOWM5ODJkYWUxMWQ3ODgyY2M3ZDA4M2I5OCBweTNrCis4NjY4NSAzMzYyNTg5YzBjMDJhYmUyMDc1YmRmYmI5NWFiNGI1ZTUyOWFkMWZjIHJlbGVhc2UzMS1tYWludAorODY2ODYgZTBlY2NmYTlhZDZiYTBhMDRiZGM3ZDRiMjRjOWUyNWE4YTA3ODdmNyByZWxlYXNlMjctbWFpbnQKKzg2Njg3IDgyYWM3NTNiZjYyYTlhMGQ5MDA0NzZiZTYxMjZkOGFiYzM1ZmViNDMgcHkzay1jZGVjaW1hbAorODY2ODggZTg4NDAzMzFmNzc4ZTc3ZGJlMGRlNTk5NmIyZDlhOWU3MWIyYzk1ZiBweTNrLWNkZWNpbWFsCis4NjY4OSBhYTRkZWFmMzQ0ZDE5OTAyNmU3YzJkY2MyYzJjNWE1MzRiNDZmMGZkIHB5M2sKKzg2NjkwIGRjYWQ3MDZiMzhmYzQ4YjhkZWFhZGFmZjJiOTZmZTU2MzVmZGY3YjAgcHkzaworODY2OTEgMGM2NjgxNDZiMTI2YTZmZDQyYTE1MDAyYmFlOGQzYzkzNThkZDZkYyByZWxlYXNlMzEtbWFpbnQKKzg2NjkyIDhkY2IxNzc4MWU4MzI0ZmYwYWMyNTYzMWExMGFhZGZmZGEyMjA5YmIgcmVsZWFzZTI3LW1haW50Cis4NjY5MyAxMjdmNTE2OGE3NzRmOWNkZWY1NWY0NjA4MWE3NTA1NWE5ZTYzZjM5IHB5M2sKKzg2Njk0IDk4ZTFkZGQ1MDViYzI5YWZhNGE4ZmM0ZTgxODBhMmE2YTlkMTkwNTUgcHkzaworODY2OTUgNThhYzUxNjBkMWI3YmJiY2U3OGQxNTFkZWMwZWRmYjVhNmI2ZGQzOSByZWxlYXNlMzEtbWFpbnQKKzg2Njk2IDNmNjIzNTBlZGQyZTkzNjQ2N2UzNzBkNDUyMTYzNjZiNDNhYTE2NTQgcmVsZWFzZTI3LW1haW50Cis4NjY5NyA0MDEwOTMwMTgyODU0NGYwNDNhMTQ2ODAwZmE3ZjdlNTBiY2M3ODhmIHB5M2sKKzg2Njk4IGNjOWM1MWY5NTI0ZjlkZmUxYjMyMTZhOTQ0ZTY2MzA1ZDljNTllYjkgcmVsZWFzZTMxLW1haW50Cis4NjY5OSAyYzM3MDA2NWMxYjRkZTkxNTFmMDM4NDRlNTk4NWJjMDIwNDY2ZDA3IHB5M2sKKzg2NzAwIDI2MGZmMzc5MTE1YzdiN2M0NWU5ZTBlNmUzYjgxMzgxMzE3NDEwNDEgcHkzaworODY3MDEgZGNiNjBiZjI2ZGNlOThhNjBlMTg3Y2I0ODZlMDY2YTBjZjA3MTk0YyBweTNrCis4NjcwMiA1YTY5YTU4OWM2ZjA4Njk3ZWRlNWRlM2UzMzE5NWExNDg1NTc4MGU3IHB5M2sKKzg2NzAzIGE3Mzk4ODNlZTZjNTYwNjE3ZmM3NDNhYTY2NWNlYTVlNTVkZWE5NDYgcmVsZWFzZTMxLW1haW50Cis4NjcwNCA5NTIyODJhNTA0N2ZjMjFmZmFiMjI4NTFiMDQ1NzE3YWNmZWU1YWNiIHJlbGVhc2UyNy1tYWludAorODY3MDUgMzMwM2FiZTI5ZDBiMzhkMjI2OGExOWU0OWFlNTRkOTNjNzQ3ZTJiZiBweTNrCis4NjcwNiBhNGI3YTQxZGFiZDk0YzgzNjExNWFiNzA4MzkwNWUwZDc2ZWJlOTBiIHJlbGVhc2UyNy1tYWludAorODY3MDcgNjNmMTE0YjA5Y2FmYTkyMGY0MDA0ZWJiMzYwMjdmZWZhMGI2MzRhYSByZWxlYXNlMzEtbWFpbnQKKzg2NzA4IDBjZTU3OTUxYWVjNjJhOTIzMTE0MzJlMzc1NmMyODk3ZWQ0YTFjN2YgcHkzaworODY3MTAgYzg2ZjE3MTA0NjdlN2E1ZDRhYzg4NjFhOWMyMWQ4Nzc4OWM2ZmM3YiBweTNrLXVybGxpYgorODY3MTEgNmNhMjg5MGJhYjY3OGRmYjViMDNjYTMxODhmOTZhZjdkYTVlOGU3ZSBweTNrLXVybGxpYgorODY3MTIgMGY4YzUyZWM5ZjdmMTVjMWUxM2RkZjcxOWYxOTBiZTllMDJjNWJmOCBweTNrLXVybGxpYgorODY3MTMgOWFkZjM5N2Y1NmU3YjQzYzdkYTk3MTc2ZWFkZDAxOWNmN2Q2NzNiYSBweTNrCis4NjcxNCA4YjRhNTMxYWQzNTJhNDQ4YjhkN2Y5YTkzYTNhOTQxMWZjZmU1YmZiIGRtYWxjb2xtLWFzdC1vcHRpbWl6YXRpb24tYnJhbmNoCis4NjcxNSAxYWU1MWQxM2MyNWI5MjM1NjA2ODkzZDE4MzdiZDM2ZmEyZjVmZDY4IGRtYWxjb2xtLWFzdC1vcHRpbWl6YXRpb24tYnJhbmNoCis4NjcxNiBiZTBmNGQ4YmZjZWFhY2E1NjQyN2ExZTIxMWFkYjQ2MjI1NjY1NGRmIGRtYWxjb2xtLWFzdC1vcHRpbWl6YXRpb24tYnJhbmNoCis4NjcxNyA5ZjIzYzVmNDg1NmMwMjQ0ZTg3OTM2NDgwNjkzZjViMTYyMTEyYzMyIHB5M2sKKzg2NzE4IGJhYjljMjA3ZTFjZjhhZDE2ZDIzMjQ0ZDBkYTJjMTQzZTdkZWI0OTEgcmVsZWFzZTMxLW1haW50Cis4NjcxOSAxNDA0YWIwNzZiNThmNDRjNjIzYzZmMWJhYmFmOTVhMjFiMmQ3ZTRmIHJlbGVhc2UyNy1tYWludAorODY3MjAgNDM2ZGFmMDk1ZTg5NjhlNWNlYWM0ZjkxYWRjYWVjNThiOWRiYjdlNyBweTNrCis4NjcyMSAwODI4ODE0ZTAzYWRkYjgyMGE3NTRkYmE0MjQ0MTNiYzVhMjkzNTQ5IGRtYWxjb2xtLWFzdC1vcHRpbWl6YXRpb24tYnJhbmNoCis4NjcyMiA2MWY5ZDNiZjIzNGNmMGY5MGRmOTJiMzllN2ZiZDg2Y2JjNGNhZjVlIGRtYWxjb2xtLWFzdC1vcHRpbWl6YXRpb24tYnJhbmNoCis4NjcyMyAwOTI0ZjQwYmI2ZGM1MWM1YmNmNjYyNDhmZmViMmE0YzQ3NzVjN2NhIGRtYWxjb2xtLWFzdC1vcHRpbWl6YXRpb24tYnJhbmNoCis4NjcyNCA0MjU4ZTI4Y2Y0NDA2MGFlNDNkOWIzOTgwYmViYjBmYTYyOWQwYzJjIGRtYWxjb2xtLWFzdC1vcHRpbWl6YXRpb24tYnJhbmNoCis4NjcyNSA2NTJiYWYyM2MzNjg2ZTUyMGFlZDNkMGU3Yjc3YzZlNWE0YTI0NDNmIHB5M2sKKzg2NzI2IDI4ODllZDczNDFlMDdlOWZmOTRjYTE1Yzc5MzYyYTE0ODY4NTlhNzEgcmVsZWFzZTI3LW1haW50Cis4NjcyNyAwYTFiYWE2MTkxNzFhZjMyNDg2OWVjYmNiNmM3MTQ0MDI5ODc1OWVjIHB5M2sKKzg2NzI4IGYzYTYxZGFmYmY2YmFkODhmMTVmODFkN2Y1MzAzYTU1ZDQ3NDE4YzMgcmVsZWFzZTI3LW1haW50Cis4NjcyOSA0ZmVkMDA2NTk4MzE0MWJhMDJhYzA2NDYyNGJjYjY3ZDFiYjNjNDlmIHB5M2sKKzg2NzMwIDgzYjA1MTdkMGZjNWUwMmYxZTllYmI1NjA2MjE3OGQ0OGM3MGZkN2YgcHkzaworODY3MzEgYTc2M2VkM2Q2ZThjYWE4N2FjMTdhYjgyMDBlOTM3ZGU1Y2U5MjNmMSBweTNrCis4NjczMiA4MmRhMmFiY2U3MjIwYzM0NjMwYzVmOWM5MGYzMzI3MTFhNDQ0NGZmIHB5M2sKKzg2NzMzIDljZDEwMzY0NTVlN2Q2Mjg1YjRjMWZiMzQzZDMyMWIxZTZjNDc3MzkgcHkzaworODY3MzQgMzk1YWM2ZTMxOWE4OTU5YjMyMTE3ZjE1YTBjY2EzNzZlYjA4ODM5YSBweTNrCis4NjczNSAyNmY4MGY3MjRiNGZmMTY5MDA2NTcxYTVmM2Y0MGEwZWVlYjM2N2FjIHJlbGVhc2UzMS1tYWludAorODY3MzYgMjUzMmM0YmMwMzczYTE2OGNjZDhlNjc3OWM4YWZiYmU3NTcyNTEyMiByZWxlYXNlMjctbWFpbnQKKzg2NzM3IGQ2ZThiN2UyNTBjNjVhYzM3ZTkzOWRkODc3Yzc1MDBhNGE3MGI0ZjAgcHkzaworODY3MzggYjczODEyNjkwYzZlNjU4ZmJjOTlmZDdkY2QwNGQzZjdmODdkOWQxZiByZWxlYXNlMzEtbWFpbnQKKzg2NzM5IDI4NzcyNjViZGIwMWNhMTVhYjE1ZmY2YTcwYjViNDU4ZTg3M2UxNmEgcmVsZWFzZTI3LW1haW50Cis4Njc0MCA5OGNhNjU1MzIzYzA1Y2IzZDFhYTczMjZkOGYzNzlhNmEzNTI3ODRiIGRtYWxjb2xtLWFzdC1vcHRpbWl6YXRpb24tYnJhbmNoCis4Njc0MSA0ZGQ3ZWIyZDk4NTZjZWYzZmU0MTYyZTY3NDJiM2I5OWJkODlmNDAwIGRtYWxjb2xtLWFzdC1vcHRpbWl6YXRpb24tYnJhbmNoCis4Njc0MiA4NThlODZkYjQ0MmY1YWQ4MWFjYjQ0OTM4ODE4YTczYjQ0MzY0NWQ1IGRtYWxjb2xtLWFzdC1vcHRpbWl6YXRpb24tYnJhbmNoCis4Njc0MyBjZWFkMDRiM2M1ZWQxM2YyZjViM2JkYzRmZjFmYjg5OTc3NDJkMzAwIHB5M2sKKzg2NzQ0IDBjYjI2NTI2NDE5ZDg4YjdhNDZkNTM1ZWUzN2E1NzE2Nzc4ZWEyZmYgcHkzaworODY3NDUgYzU0YzQxMWQzZGE3YTE0YjZiM2U4OWUwMjU5NDFmMmRkNjI4NjQwNCBweTNrCis4Njc0NiAwM2Q5MzM5NDhiZjNlYWE4Yzc5YzY0OWRlYmQ1NmNiYjZjZjU5NTE2IHB5M2sKKzg2NzQ3IDY3ODgyMTA1ZGQ2NTU4YmNiNTBjM2YyNzcyNWFjOTcxN2NiOGU2ZTMgcHkzaworODY3NDggNGQzOTUyYTIxZTI1NzYwYTI5YTBjNjhjNzUzMzI4ZWI0NjE0NWU5NCBweTNrLXVybGxpYgorODY3NDkgYWU4MmM3NzA3NjljYWQ1NWYxZjIwNjk1OGRiODdjNTNmNWU3ZmQ0NCBweTNrLXVybGxpYgorODY3NTAgMTE3OGUyNTQ1ZGNiNWM2ODJhMjA2NWM1MmIzYWI1YzQ5ODJmOWVjNCBweTNrCis4Njc1MSBlZGVkNjkxNDk3Yjc0OGMzY2ViOGVkZTBjMWIxNjdkYzcyOGRhNTVmIHB5M2sKKzg2NzUyIGYzZGY5M2UyNjI2NzVhYzViOWNlOGQ3NzFmODA2ZTg5NzdmNWViNjQgcmVsZWFzZTMxLW1haW50Cis4Njc1MyAwZGE0MmNkMDE1NzY1NWRmY2ViMGNlMjExMDU4NzhhYmZkMWY5Y2U1IHJlbGVhc2UzMS1tYWludAorODY3NTYgNDU3YzdlNzA0ZWMyOTljMzlmNjE1MjdkZmI2NmVhMDVkMmQxZWU5MiBweTNrLWNkZWNpbWFsCis4Njc1NyAyZDZjZGM4MTg1Y2FlNTc1Y2ZkMjNkZmFiM2VkMTBlODM0OTU4YTBiIHB5M2stc3RhdC1vbi13aW5kb3dzLXYyCis4Njc1OCAxNDBkOGE2NTc3MDU0MzNhODM0NWVjODRjM2NmYjVkMjU1M2QxN2NjIHB5M2sKKzg2NzU5IDA2ZDIzMDI2ZjkwNDU2OWI3ZWUxNThmMmViY2FmZWI3ODA0MTk5ODUgcHkzaworODY3NjAgZjU5ZGJmMjhlMTJjM2Y2YjljYzhhOWE0NDZiMjBjODJkYzM4NTc2NSByZWxlYXNlMjctbWFpbnQKKzg2NzYxIGU0OGVkMmVmNmQ1ZmZiMzkyZDFiZDc4YjkwMzYyNjgyZDk3Y2JmNWEgcmVsZWFzZTI3LW1haW50Cis4Njc2MiA3YWI0ZmRhNzcwMzEyNzY1NTMxMjRiOGIwZDlmMjgwYjdkYjk0NWE5IHJlbGVhc2UyNy1tYWludAorODY3NjMgMTkyMzIwMjBlNDkxZDc4ZWYxYjA2YTNkN2E5M2VjNzk2NzUxMGUxNyByZWxlYXNlMjctbWFpbnQKKzg2NzY0IDhjZTlhZTVhMTU0MjdiMDdkZGZjMGEzYTE0YTYwNjRhZWYyNjVmY2YgcmVsZWFzZTI3LW1haW50Cis4Njc2NSA2YzM1YWJjN2QwZDIxOTJlMzIxMzlkMjFiYmY5NzI1ZDg3OTllMThlIHJlbGVhc2UyNy1tYWludAorODY3NjYgNDVhYjU1ZmEzZGMwZGY5NTgxNjRiYzAxNDQ4N2IwMGEzN2ZmMDA0MiByZWxlYXNlMjctbWFpbnQKKzg2NzY3IDc3NzcxYjA4NWVjYTc1ZDRiNzcwNThhM2M0OWRmZGU2NDFjMjY5MTkgcmVsZWFzZTI3LW1haW50Cis4Njc2OCBhODAzZmQ4NDFmZDE3YzNjNDM1OGYyOGQwYjFmNjJiYjU4ZGNjODZkIHJlbGVhc2UyNy1tYWludAorODY3NjkgZDZjNTc1MDE1M2JiMTE4NjQ0YmUxMDY5NTlhYTE1NTI3Y2JhZjEzOSByZWxlYXNlMjctbWFpbnQKKzg2NzcwIDM3YjM3YjZhODk3MmJkNmYwNTY4ZDkxZjk1ODhiZTZlYTA3ZjI1NmIgcmVsZWFzZTI3LW1haW50Cis4Njc3MSAyOTU1ZjMzNzk2OWU4MTY0NGYxMDdjYzJlNzg2MTlkMjBmNjA0NTk4IHJlbGVhc2UyNy1tYWludAorODY3NzIgZTEwZjYxOGM5NjdhYzI5M2M2YjJhMTZlNTg0YTEwODZkYmQ1OTY1ZSByZWxlYXNlMjctbWFpbnQKKzg2NzczIDgzNWMxNzYyMzlkMDI1N2IyZTY5NjYwMjE5MTE1ZGVjY2U0MGQxNzUgcmVsZWFzZTI3LW1haW50Cis4Njc3NCBmYjJhYTQ1YTFiMjJlM2IxYjVmMzM0Mzg0NmExZmUwYzUzMTI5YWIyIHJlbGVhc2UyNy1tYWludAorODY3NzUgOGI2YTllY2JlOTg5YzBiNGMwYjdiZGY4YmE1ZjlkZTU3NWY1OTRiZiByZWxlYXNlMjctbWFpbnQKKzg2Nzc2IDJlNTgxMjZkYmFkMDg3MDNiZTJmMzNjMzhhODdjNDFkZTZiNTZjZTcgcmVsZWFzZTI3LW1haW50Cis4Njc3NyA0MTM2NTE1Y2RmYWNkZmM3ODQ0OThhMmJiN2MxNGQzYWI4MjQ3YmEyIHJlbGVhc2UyNy1tYWludAorODY3NzggN2MwZWI4ZDU2MTQ2YjlhZWFmMzk3YzRlN2MwZDRmYjdmMDE2MGExNiByZWxlYXNlMjctbWFpbnQKKzg2Nzc5IDcxYjc3MTUxOTMzM2EwNGIxMjMzZDFiYTVhZmRmMjY2ODQ3Mzk1YTUgcmVsZWFzZTI3LW1haW50Cis4Njc4MCBhMzcyZmM0ODYyODE2Njc0MTY4NDQyODExNTIwZGEyOWRjN2ExNzYxIHJlbGVhc2UzMS1tYWludAorODY3ODEgNDVlNDkyNjllMGQ4ZWYxZGQyODIyM2Y2NDlhMmVhZTdiYTY5MTIzYiByZWxlYXNlMzEtbWFpbnQKKzg2NzgyIGU3NTkzZmViNWFkNWMzZmIyMmI3NDg4MTA5ZjdiNzdjM2UzMDUxMWUgcmVsZWFzZTMxLW1haW50Cis4Njc4MyBhOWYwZWM2MDRjOGFkMDg4MGJkYTE5N2QxZGIxOWU5YTU5YmVjMDIwIHJlbGVhc2UzMS1tYWludAorODY3ODQgMDVlZTZmOGMwMjYwYWE1YmUxZTVhMWY0Zjc2ODkxNDRkNWU5ZmJkYyByZWxlYXNlMzEtbWFpbnQKKzg2Nzg1IDM5YjVhZjc3M2U3NTk2YWI3NzcxOWFmMTNkMDY1Njk0N2Y1OWRmMjcgcmVsZWFzZTI3LW1haW50Cis4Njc4NiA5YmVhZDkwOWQ4ZWZlZGVjN2Y0MDYzNGQ2MDM2OWJlNTRmYjY4ZGI3IHJlbGVhc2UzMS1tYWludAorODY3ODcgOWIzNDRiZTFiZTlhN2U5YjkwMjU0ZWI0YWQyYmVjODA3NTlhYmVlNiByZWxlYXNlMzEtbWFpbnQKKzg2Nzg4IDNlZTZkMDM4YWY5YjQ2ZTgwOTM0ZmU5NzBjZWUwZTY3NzEyNjdlMmYgcmVsZWFzZTMxLW1haW50Cis4Njc4OSA3MjgxOTM3YjJkNjViM2Q1OGJjN2NiZDU4OWI0MzczOTQ0YzVlZmZiIHJlbGVhc2UzMS1tYWludAorODY3OTAgOWQ2ZTI0NjVmNTkyNTQ2NGZiMDk0ZGVlNWUxOGVhMmQ2ZWQxZDgyOSByZWxlYXNlMjctbWFpbnQKKzg2NzkxIDRlYTFjNmE0ZTkyZDBmYjk5NmI0NDk4MmUxNjgxZWY3ZGE3MTJiZDIgcHkzaworODY3OTIgMmMxNjcyODE2MmZkZGJlYjZiMmZjYjJmOWZhMjI4NzdmZjFmMjZhMSByZWxlYXNlMjctbWFpbnQKKzg2NzkzIDAwMDBiYmFiMDhiNDQ3Njg0NmMwMjFlNDU5NzkyMWZkMDY1MmUzZjQgcmVsZWFzZTMxLW1haW50Cis4Njc5NCBiMGU5N2RiZDk4Yjg0MzhlMWM2ZTgxNzYyYjQ0M2M0ODk1YjRhZjBiIHB5M2sKKzg2Nzk1IGZhMDE3YmNhZWUxMDAwM2IyMzg4YTFkZjMyNDE3ZmVhZWI4NjY1YTkgcHkzaworODY3OTYgNTA4NGNlOTQ4NDM3ODU5ZDUxYTI2NzYxNTA0NjcxYThjYzBiYzNlNCByZWxlYXNlMzEtbWFpbnQKKzg2Nzk3IDQ2ZmVhZWM3MjliZGM2N2JmYjIwNDkxZmRhY2Q2NjI5ZjRhNzBmOWEgcHkzaworODY3OTggZmI1YzQ1ZDM4ZTJhZjUxNTBkYjI1OGMyZjU0MzM4NjkwMGQzOWI5MiBweTNrCis4Njc5OSBhYzUyMDdkZDhkOWEzMzQ2NjNmNzg3NDg4Njk4YTU0ZTNhNzc1OWNmIHB5M2sKKzg2ODAwIGFjZWI0NTE2YThkNDRhMmQ1MGFlNWM1NmU2NDNhMGNiYWUzMTVkMjEgcHkzaworODY4MDEgYmY1ZjQxNzRiOGMyZDU4ODhhMDhiNGNjNmI2MzljZWQ1YjFlMDI3YSBweTNrCis4NjgwMyAyMzFiMGJiYzFmOTA0NjRjNWRkMzIyODc5ZWY4YWIwMmRiN2M3YmFhIHB5M2stc3RhdC1vbi13aW5kb3dzCis4NjgwNCAzMjk4NDJkZjA2YTEwYTNmNjkxNWIzYzEyMGVkZmNhMDE1MTk4ZjU1IHB5M2sKKzg2ODA1IDBlMWRkNDU0OGFhMTdjMWIwOGJmN2VkOGVhMjI4ZjFlZDY2NjI4OGQgcHkzay1zdGF0LW9uLXdpbmRvd3MKKzg2ODA2IDEzMmE5NGVjMGNlODBkNmVlNjVhNzdlZTY1MDRiM2RiYWVmMDVkZTUgcmVsZWFzZTI3LW1haW50Cis4NjgwNyA0Mjc5ZTQxN2IyYTAyNGIwY2I0YmU4MDJkMTEyMDlkMmFkOWUyMDMyIHJlbGVhc2UzMS1tYWludAorODY4MDggZmFkZjc0YzBjNTA0M2Q5Nzk4ZWIzOGE2MDJkYTY3NjBhZTIzZGU1YiBweTNrCis4NjgwOSA3ODZlZTExZTBjODQxYTBiNTNlNjE0NzEwMmRiZWQ1MzlhZGI5ODRhIHB5M2stc3RhdC1vbi13aW5kb3dzCis4NjgxMCBjN2EzNDJhNzk4ZTc3MTM3NzkwMDQ2Zjk4Y2UxOTljMTkyYTcyYjRkIHJlbGVhc2UzMS1tYWludAorODY4MTEgNzQ5YjFlNzEzOTFjYWUzNjIyZTQyODA1ZjM2N2IyZjZkZDFiZmUwOSBweTNrLXN0YXQtb24td2luZG93cworODY4MTIgYzgxNjNjMmExYjZmNGRlMTQxNjYwZTNmYjM5MWM5OTJhNzI3M2U4ZCByZWxlYXNlMjctbWFpbnQKKzg2ODEzIGM4MmNhM2JlYjRkZjE1ZTk1MzJkYzEzNzVmMzlmZGJjNmRiYTk4MjcgcmVsZWFzZTI3LW1haW50Cis4NjgxNCA5ZmVmZjE3N2Y0NGQxMjY5YWUyM2Q2MzY5MGNiNjMxMWMwZWY4Yjc2IHJlbGVhc2UyNy1tYWludAorODY4MTUgYWQ3OWY5YjNhMDIxOTcwYWYwZWVkNGUyYzdmNDFmZDM3OTdkMzQ1OSByZWxlYXNlMzEtbWFpbnQKKzg2ODE2IGYyMjIyNWE5ZDcyMDgyYWY2NmE5MzMzMDgyYTAxMWUzYjRkZjJkN2UgcmVsZWFzZTMxLW1haW50Cis4NjgxNyBlYTRlYzZkZTljZWZlMDlhODZkOGIzMjRhMmM4ZDBkODQ2MjgwZjZkIHB5M2stc3RhdC1vbi13aW5kb3dzCis4NjgxOCBhYmJjNThhMDZlNDNkNDhkOWVmM2Y4YjU0ZTZlZjY0OWQ3NTM0NDQzIHB5M2stc3RhdC1vbi13aW5kb3dzCis4NjgxOSA5NmNhOTlkZmVmZDhlZTcxYjQwM2RhOTZkYjliZWQ2ZDZlYmU2NGVkIHB5M2sKKzg2ODIwIDg2YTY1MzlkMmMyNTM1ZGVlYzUxOTQ3ZTQ5ZDZiZjM4MjE4N2Q0NWQgcHkzay1zdGF0LW9uLXdpbmRvd3MKKzg2ODIxIDBiNjM0MDczMDkxM2M0Y2M1NTc1OTZlNmQ4MjFlZTYyYmQ0YTU1YzQgcmVsZWFzZTMxLW1haW50Cis4NjgyMiBiNGJmZGM1MmFkNTEwNmIxNzRhOWRjMTY3M2VmYzhjOGUzMzQ3Y2M3IHJlbGVhc2UyNy1tYWludAorODY4MjMgY2NmMjYzM2I5NWRkODlmNWMxZWYxNTg5NjQzNTE0OWJkY2I2OTRjOSBweTNrCis4NjgyNCA2MzM0MWRkMzYwYWY1ZjcwMzg3MDJiZjZkOTE0ZmMwN2RkOTBhMWE4IHB5M2sKKzg2ODI1IGZlZTk4YjYwNDEzOWM3ZjViYTgxM2FhNzcyODZmZTRjZmI5ZjJkYzUgcHkzaworODY4MjggNTk2MjM5ZGEzZGI3OWRlZDBjNTgyYWQ4ODRmYTZhNTVkZTg1ODBlOCBweTNrCis4NjgyOSBkM2JhZDQxYWQ3MDE3Nzc4ODg0NTQxZGUyNzM0MjlkYjRkOGFkOTIzIHB5M2sKKzg2ODMwIDU4YzJhYzYwY2NiOWRhYjRkMjVlN2UyZTkwZGRlMjc2OWJkYjQ5N2YgcmVsZWFzZTMxLW1haW50Cis4NjgzMSA4MmFkZTIxM2E2NmRmOTJmYjc0Mzc5MjExN2Y1ZjBkYmQwYmY2ZmQ3IHJlbGVhc2UyNy1tYWludAorODY4MzIgNTM5NWY5NjU4OGQ0ZjAxOTlkMzI5Y2I3OWViMTA5NjQ4ZGM0ZWY1ZSByZWxlYXNlMjctbWFpbnQKKzg2ODMzIDdlMzhmOGZiYmFkZGFiOGExNmE2NjVhNDk0YWZlY2ZjZDUwZGYzZTggcmVsZWFzZTI3LW1haW50Cis4NjgzNCBhNGY3NTc3M2MwMDYwY2VlMzhiMGJiNjUxYTdhYmE2ZjU2YjBlOTk2IHJlbGVhc2UzMS1tYWludAorODY4MzUgZGMyNmU0YTdkMmU2MGQwNTIzZTYxMDIyMWM1NTk3MTVlODI5OGU0NiByZWxlYXNlMzEtbWFpbnQKKzg2ODM2IDYzYWIzOWQxMTg2MGUxNTYyODMwNDAzMmRiMzdiYjVhOWZjZTFhMmQgcmVsZWFzZTMxLW1haW50Cis4NjgzNyA4NzM3ZmIxN2Y0NDQwMWEwYTJlOTdkNTRjOWFlNTBkNWZjNGNjNzM1IHB5M2sKKzg2ODM4IGEyN2ZiMWU2ZTA5ZDQ0ZTRmMTFkNzdmNDk3MjE2NzQ0YmRhZDJlYWEgcHkzaworODY4MzkgNDFjZDA5MmJlOTNhYTQwNjQ0YmM4ODVjNzkzZjc1NDNjNDFkOWM5YyBweTNrCis4Njg0MCBmOTUxMjc0YWYzYzdmNTdjZjA4NDNkMGRmNWI5ZDc4NGNmYjFhYmNiIHJlbGVhc2UzMS1tYWludAorODY4NDEgNzJmMGJlYTA1NDU3NzkwMDg0YmY4Mjc4YWJhMDZlOWYwMmY1ZjhiNCByZWxlYXNlMjctbWFpbnQKKzg2ODQyIDFiNzdmMmViMTYwNjc4NjZhOGI5MjVlOWZkZWUzZmI4MzM5MDViNGQgcHkzaworODY4NDMgMGYwYzZiODc5Nzk2YmVlNzdlYTNiNzVjZjAyZGFmMjNiMjMzODlmZCBweTNrCis4Njg0NCBkMGExNmY5ZjM3NDFmZDNjOTM0Y2ZmZDM5NDkwNzYxZjc1NmNkYzg2IHB5M2sKKzg2ODQ1IDUzODE4ZTRjNGZjYTU2NDg4NDA3ZDljY2IyZjhjOGMxYmE2NWY2NjEgcHkzaworODY4NDYgNWJlM2VmYjQ3YmZkNTgzNjg3ODZiNTJlMzFjMGE0NTgzNzZlNmJlYSByZWxlYXNlMjctbWFpbnQKKzg2ODQ3IGUwYTUyNTIwMmM3N2NjNjc5NzU1ZmY4MWVlMzUzNTJlMWViYmRhNjQgcmVsZWFzZTMxLW1haW50Cis4Njg0OCBjNGFhYzhlNjk4ODg2NWI0MGVmN2E4ZjcxNzg2YmFkODg3NWQ1N2Y3IHJlbGVhc2UyNy1tYWludAorODY4NTAgMjdlZTQyYjBmYWY2Y2NiMDdlMzBiMjFkOWQ2ZjY0YjdjZTc4MGM3MCBkbWFsY29sbS1hc3Qtb3B0aW1pemF0aW9uLWJyYW5jaAorODY4NTEgNzJmZjQzNTMyMjE0ODBiNjNkNjgxODUzYjJjODAyYmQwZWY5NGY4MSBwZXAtMDM4NAorODY4NTIgZDI0YWEzYjFlZTI4MTY5NzQ0OThmZTMxMzM1YTZkOTAwNjI3NmVjZCBwZXAtMDM4NAorODY4NTQgMDNkMGQxODY3MTNiNGZlNDk3Y2NlODRkMGE4MzE3MzE0MjVjOTNlMCBweTNrCis4Njg1NSBiZGQ1Nzg0MWY1ZTJmNDZmOGMwZDZhMDJkNDI3MDhlYzU3NDQ0N2I0IHB5M2sKKzg2ODU2IDkzY2Q0ZGU4ZWUwYjA0YTEzMDJmYWNiODBmZmJkNDI2MjZkOGIwNTYgcHkzaworODY4NTcgNjllYzc3NTI2MTgwZmJlOTBlMGIyNDZkMmI4NjM3Yzc4Y2RmZmQwYSBweTNrCis4Njg1OSAxNmUzYzk1YmM0NmM1YTRlY2JlMjk3NjYzNWMxYTdmOGZlYjU2YWVjIHJlbGVhc2UzMS1tYWludAorODY4NjAgN2E1ZjI2NTQ4ZTFjMjg1MzBjODc0YWMxMjg2MWI5M2ZmNzU4YTQxNyByZWxlYXNlMjctbWFpbnQKKzg2ODYxIGU1ZmNiNDIyNmI0MmE2NzM2ZjQzZGYzMTQ3MGVlNzk0NGVlOGFiNDAgcHkzaworODY4NjIgMmUwZDkwMDlhYjZiOWUxYzcxZTFmOTZlNzJkOWQzZjMwMmIyOWRlYSByZWxlYXNlMzEtbWFpbnQKKzg2ODYzIDhmZDEzYzVkMzg4MjM5NzQ0MWI5NzA3NmE3MzRmMDFhYjkzZGY2Y2QgcmVsZWFzZTI3LW1haW50Cis4Njg2NCBlODEyZGIzNDRhNjVkNTUyYWMwMjAwZTU0ZTc3ZTFmOGYyNGZjY2FjIHB5M2sKKzg2ODY1IGVhZDUzMDcwM2I5YmU1Y2I4OWZhNGMyMzFmZTdmZTkzY2YzNTdhNjcgcmVsZWFzZTI3LW1haW50Cis4Njg2NiA2NjdkMjgzNDQwMTcxOWRhMmZhNDM5NWQ5N2EyOGRlMzk2NGRhOWY1IHJlbGVhc2UzMS1tYWludAorODY4NjcgY2Q2ZDBjYWZmZWYyNGJlMDZkMmVjODgwNmI2YzIwOTA4ZjMwZGFjNSBweTNrCis4Njg2OCBiMGZmMzMzZWMzZGExYmQ2MzI2YTE1NDdhMTcyYTA4NDZmODQzNWZlIHB5M2sKKzg2ODY5IGU4OWFhOTE0NzYyNGNhNjM5YjlhY2UzYjNhNTgwMDIxN2M2MTZlNmQgcHkzaworODY4NzAgZTczOTJmZmVlMDcxYTc2YWMwZWNiNTE4MDUxYzI1MjIyMjA4M2YxMyBweTNrCis4Njg3MSA2Y2E4OTIyZGFmYjUzYjU5ZDhlNzk3ZGVmZjdkZmFjZjQ1Zjk0MmIzIHBlcC0zODIKKzg2ODcyIDBjY2E5NjYxNTM5NTFiOTYzYmYxOWY1MWEwODA4YjFhMzhkY2UyYzAgcmVsZWFzZTMxLW1haW50Cis4Njg3MyBkZTZlNzljNWIxZWQ0NDNmZjhkNTRiMmZmYmY4NjdkODQyODRkY2M3IHJlbGVhc2UyNy1tYWludAorODY4NzQgNjc5OWQ1NGRiMzc4MTJhYmYxMGExZDJlMjA4Mzk1ZmE3ODUwM2Y0YyBweTNrCis4Njg3NSBlMzJhMzAwYWNhYzJmYzg2YzdkM2M0M2VlM2QxNDg0NzEyODFhY2M4IHB5M2sKKzg2ODc2IDllOWE3MDliMzg5ZWNhZTM2YjE0NmY5MDc4OTExYjFlZjY5MTc2ZTIgcmVsZWFzZTMxLW1haW50Cis4Njg3NyBlZDRiZmI3NWQyOGQ4ODA2NDVjODM0NTc5YWY1YjZmYTgwYTdmZjNhIHJlbGVhc2UyNy1tYWludAorODY4NzggMzEyYjI5MTZjZmQ0NWQ4YmYzMTFiZGJhMjYyOTNmYTg4NDk1ODYwYyBweTNrCis4Njg3OSAzMmU2NzVkYWEwZTUxYmZlMmY1NGQzNzJjY2JkZTJjNGI3YzNlYWU2IHB5M2sKKzg2ODgwIGYxNmJmNGNhZTVkNzM3ZmFmNDM2ZjBlMWVmZGNiNWY0NGRkNDcxYmYgcHkzaworODY4ODEgMjhiNjdiNTcwZjJiZjlhNTliZTQzNTJkYjE0Y2ZhMjI1NWRlZDQzMiBweTNrCis4Njg4MiBiNDA1YTdmMGFlZDcxYjhkYTU5MWJmZmUwZDdlMjBkZWYwNGI5YjM5IHB5M2sKKzg2ODgzIDgzMDRiZDc2NWJjZjc3ZjgzN2Y1MTY5YTg4YjVkNzQ0YjVlMmQwMzIgcHkzaworODY4ODQgNzI0OTIwYTAxNWY3MDFhMjFkZDdlMzI5YTQ4ZjU0ZTEzZDFkZTFhOSBweTNrCis4Njg4NSBlZGE4ZGEzYTc1YjNjNjI0NzAxNDM2OWRlZDU4OTBhZjIwOWZjNzliIHJlbGVhc2UyNy1tYWludAorODY4ODYgZGViOWYyZDM3YjYzYmQxMzFhYTk0ODg2OGFkZTNmZGU0OGM0ZTQwOSByZWxlYXNlMzEtbWFpbnQKKzg2ODg3IGZkNmU1NjUzYjMxMDI1MDYyZmI3YmE2MzljYzIyOTg2ZjJmYjAxZjggcHkzaworODY4ODggMTgzOTllNjIwYjQxMTBjZDQ5NmNjOTdlYTNlYTljOGVjYWMwNTAzMiBweTNrCis4Njg4OSBlNDQ0MTBlNTkyOGVlMzExNGM2NThkZjY3Y2QxODBlNWI1MDExNWQ5IHB5M2sKKzg2ODkwIGI4MGY1YmYyNmU5ODdiOGQ1NTBhNTMzZGM4ODQyNzU0NGFmMjkxNjEgcHkzaworODY4OTEgZjc5OTI4YWRhYjU3OWYzY2YxYWJmOGZkY2JlYjdhZmU3YzRiY2U0ZiBweTNrCis4Njg5MiA3ZWEwMmYzMWMyNTJjYmViNDNlN2ViYWNlNDkyMTYxMGE1Y2JlODRlIHB5M2sKKzg2ODkzIDJmNmQwZjM2MWFiOTJjOTdjNzk3NmU0MGE2NzEwNWIwYTQzMTc0ZDYgcHkzaworODY4OTQgMzQwMzY5ZmIyZTcwZWY0OTkxNzZjOGEzNGFhYjMzNzY2NTE0OWRhMyByZWxlYXNlMzEtbWFpbnQKKzg2ODk1IDc0NjdhMWMxMWFlYjQ2NTQ0NjU4OGFiNmNmODI2MTExMWQ3MTZmOTMgcHkzaworODY4OTYgNjU2ZDI0ZDE5NzQ5YjBiMmZhYzNkOWFkN2NhN2U4ZDJkYTE3N2E1MyBweTNrCis4Njg5NyBkNjEwMDc0OTcwZDc5ZTNmNTU3YjI3ZDFjNmI1Yzk4N2FjMzJhMDJkIHJlbGVhc2UyNy1tYWludAorODY4OTggMDRlOGJkOWExYWJhZTM3OTk4OWQ1MzFjODJjODQyZDQ1ODVjMDBjZSByZWxlYXNlMjctbWFpbnQKKzg2ODk5IDdmZDJjN2RiZGRhNjgzOGJkZjhjYjU4YjkwYmQwMjZkNmEzYTBiYTggcmVsZWFzZTMxLW1haW50Cis4NjkwMCAyOTg0YjU3ZDY3ZGE0OTNiODk5YjNkMzIwNTUxZGRmYjQ0ZDJmOTFmIHJlbGVhc2UyNy1tYWludAorODY5MDEgMmIyZmM0MjYyMTcwMWY4OTY5NTQyMzEyOTQ5YTc3MDhjOGZkOWZjYiBweTNrCis4NjkwMiAxMTU1MmVhNmE5NDRjM2IzMzY5MDdiMWEwMDlkNWQ5ZTAzNjIzNjNkIHB5M2sKKzg2OTAzIDY5M2Y3NDMwYzNjYTUwODA3YjMwNTBjNzE2MGY3YzM1YTk4NGFmOWEgcHkzaworODY5MDUgZmVlM2EyZjI0M2U4ZTdmMmIwMWQ5ZjEwNDQ3ZjE2MmFiM2ZhMzczYyBweTNrCis4NjkwNiAwOTIzZDliM2RlNmVhODIyYzI5ZDUxYTJmMTMxOGViNDZlYjRlZTBiIHB5M2sKKzg2OTA3IDVjYjUzZjA5NGMxYTg4ZDBjMWVjNThkZTE4MThjZmU3ODA5OTMyNzAgcHkzaworODY5MDggOTE4NGEzOTA5ZGUwYzk5MzkyZGJlYjM3NGU0NTQzMjkzZDUyOTQ0YiBweTNrCis4NjkwOSA4Yjk1ZWEzMTcyNWIzZWU4MWVhMjY4YzcxNTA5NDhkOGQ2NWNkNDZlIHB5M2sKKzg2OTEwIDM4YmVjOTBmZDhhYjYwM2Q4ZmY4ODkxOTQ4ZWQ5YjljYzkwODhjN2YgcHkzaworODY5MTEgMDBjOGNkZjUzOTM2YjM1YWJjMjFhZjAxNDNmMjkzOGRkOTMzNGM2OCBweTNrCis4NjkxMiAxNDg5NmYxMzEzZGIwOWZmNGNhZjM1MTBmZjVmMGNhN2IwYjQzMGE5IHB5M2sKKzg2OTEzIGZmN2M1OTM3NzkwMzAwYTYyYzE1ZGI4ZDY0NjIxYzM5YjFiNjdiMDkgcHkzaworODY5MTQgNzE4MDk4NWMxYzIyM2QzMzIwZDliMjY2MjY3YWM0ZTIyZTVhYjg3OSBweTNrCis4NjkxNSBlNWMyOGQ2NzY5Y2ZkMTcxNmYyNzMxZTNkYmMxYWE5NTk3Yjk4NzVjIHB5M2sKKzg2OTE2IDJiYWFkOGJkMGI0ZmM4NjVmMmQ4ZDRiZTI5YzQyMzYwZDA4MTk1ZDMgcHkzaworODY5MTcgMzcwMDJlNGZmNjc3MmZiZmVjOTFjNjE2Yzg1M2QzYzMwNGExZWJkZSBweTNrCis4NjkxOCA1ZGEwOTNiNDljMmEyZDM0MjM2OGMyOTY3ZTUwZGY5MTEwNzRmYmM0IHB5M2sKKzg2OTE5IDEzYzcxYzhjNWMwZjg1ZWQxNWMzMmQ5MDUzNjU2MjllZjA4YmUxMTEgcHkzaworODY5MjAgNGUxOGI5YmUyNWE0MDhlMWI4ZDNlNjc1NmRmYTYzZDI5YmUyNzc2MCBweTNrCis4NjkyMSBjZDg4NzY3YjhkMGM5ZmYxNDkxMmNmNWIwOTAwNThiNzM1OWZlNDE0IHB5M2sKKzg2OTIyIDQzOTY1NTgwYzU1NmRiOTQ1NGJmNzAxNDA4NjhkZmE3ZGIyOTYzYjQgcHkzaworODY5MjMgYzViNTQ4ZmQwYzhjODI2MTMyYzI1N2NjNGMwYzQ2Mjc0Y2MwYjJhNyBweTNrCis4NjkyNCBiOTMxN2E5YTNkM2FiNzQ3ZjYzZWZjMTkxOTY4ZWExMzFjZjcxNzQyIHB5M2sKKzg2OTI1IGUzMWE0OTcyMDg0YWY1MjY5NTI3ZmMxMGQwNmU4M2Y3NzgzZTAyODAgcHkzaworODY5MjYgMDc4ZTVjN2IzMTU5ZjBjYmZmMGU2Nzc0NzNkMTQ5ZGVhMzVjOWFhYiByZWxlYXNlMzEtbWFpbnQKKzg2OTI3IGU3ODQ0YjdmNmVkNDllYjgyZTQ4OTMyODc0MzVhNDEwYzg4YTg1N2UgcmVsZWFzZTI3LW1haW50Cis4NjkyOCAwOWVkNDExYTEwOTA2MjhlNmMzNzcwOTM0ODIzNGJkNjM5ZGNjOTdhIHB5M2sKKzg2OTI5IDkwYjZjYmYyYjExYjYxM2NiYWJiMjgyN2VlYzI3MjYxMzhlMmEyZjAgcHkzaworODY5MzAgODljZGEwODMzYmE2MDM5MWMxNjIxMzc5NDBkNDhmY2VjMjMyNmFkNyBweTNrCis4NjkzMSAwZGRmYTViY2ZiZDM3MDNhN2YyOTVhZjY2NmRlN2IwMzRlN2JiMjAwIHB5M2sKKzg2OTMyIGQyZWE3MTFhYjEwN2M1YjQ4NjkwMTg0ZmMyZjg1MmM2ZDQzZjhhNDUgcHkzaworODY5MzMgZGM3MzQ3MjkzNWM1OGRjOTI2MTNmOGFjNDQ3ZGIyY2Q5NWJhODA1OCBweTNrCis4NjkzNCA3ZTQ4MzM3NjRjODhjMDAzN2ExZjlkZmY3ZDRkYWY3MDYzNjQ0NGRmIHB5M2sKKzg2OTM1IDlhMjA1ODMwOWMxYWE2MDdkMjNjMTY4OWUwMmFhNzNlMGM0NGQxMWMgcHkzaworODY5MzYgYjhiYmMwZmM2MTkxODhjNDJlMWVlNDAzMzJhYmQyNzJjNzYzNGExOCBweTNrCis4NjkzNyBlMzM5ZmNhNmU1MWExMDE2ZjE4ODU3MDZkYTQwOTQ0NTFhMzRlN2MxIHB5M2sKKzg2OTM4IGEzNjMwZGQ5MjIxODBiMjE5ZmIzMWZiMzhhY2Q0MmJjMzljNmM0NzAgcmVsZWFzZTMxLW1haW50Cis4NjkzOSA0NWFmNWEwNjhjYzdmNDA2YWY4MWYzNmU5NWExNTk4ZGVjYzNiMTc1IHJlbGVhc2UyNy1tYWludAorODY5NDAgMWFkZDhjZWY3NTI3ZmU5YTZmZjY0OTEyOTMxNzkxYWI3MjAzMTA4NiBweTNrCis4Njk0MSA1ZjI0MTI4NDNiYjkxZTZkMWRmMjkzZThhYjE4YjEwNzRkOTA2ZDRlIHJlbGVhc2UzMS1tYWludAorODY5NDIgODYyOWMyYTIzNGRiMDM2ZDNkYjg0NjkwYjg0ZDZhZDFkNzI5Mzk4MSByZWxlYXNlMjctbWFpbnQKKzg2OTQzIGRlZTIwMTU1ZmQ2NTc0OGQ4ZmMyN2I0YmQ4MjUyZjQyNzk2MGY0MDYgcHkzaworODY5NDQgMThkODlhMzBmYWJmOTkzMzY5MWY0Njg4ZWUyNDE0Y2Q4YjFiYTU2NCBweTNrCis4Njk0NSBlMTFmN2U2NjIzNjkxMDZkMmEwN2IwM2UwYWM3OGY4ZTlkYTJlNTYzIHB5M2sKKzg2OTQ2IDk5NmY4NGU1MDViZTM1MmRkMDk0NWJjMDNkY2JlYTRhMWRkNDVmNWUgcHkzaworODY5NDcgYmY0OTVkZGUyMGUzOTMyZGE5YjcyY2IyOTZlN2JlYTBhNWIzNzFmZCBweTNrCis4Njk0OCAxMDk4ZmFiODVlNDcyNzM2YTg4YWY1M2NhNzdkNTdjOWMxMzg3NmJlIHB5M2sKKzg2OTQ5IGY5MDU4MmM2Y2I1ZmY2YjcyMzUxYmMyOGJkZTQ3N2FhNmU0Njk4YWYgcHkzaworODY5NTAgNjRjNjQyYmI3ZmY3OWFlNmIyNTFlYmVlMmU1ZWY0YjAwNTBiYjVhMyBweTNrCis4Njk1MSBlMDIwMjFmYmZlMjJiNWM1M2JiYjlhZWI4ZDc3M2JlYTZiYWQ2OWYxIHB5M2sKKzg2OTUyIDFjYmZlZmZlYTE5Zjc2N2RhNmEzMmExZWE5NzZmOWQwMzM5NmY2N2UgcHkzaworODY5NTMgNmU0OWFmMmUwODkxMDlmYzhhMjg2ZGQ3MTNkZTZmNjQ1MTdlOTgzMyBweTNrCis4Njk1NCBkN2RlMzFhZTk1YTQ0N2NjNTBiN2QxMzVhNTMxNTBhYTFkYjIyYzExIHB5M2sKKzg2OTU1IGQ3ZmExN2E0NjY5ZGI4NWFhYmQxNTA5NjFiMzk2YTc2ZDMyOTYyOWIgcHkzaworODY5NTYgYzYxNGY3ODY3NWQ0YTcwMTI0MzY0OGE0NTg4NjA1YTk2NjM5NGFkMiBweTNrCis4Njk1NyAwOWQyM2ZiMGQ0MjhlZGQ0MDQxMjY4YTRjMGNlM2RkZmM1MzliOWM1IHB5M2sKKzg2OTU4IGEwY2Y2NGE1MjkxZTc1YTMxY2UyM2JiOWQ5ZmRiYzZkMTIyNmVkM2MgcHkzaworODY5NTkgNzg1MWJmYjFiZDczMzlmODYwZWRiM2IxNjc4OTY1M2Q4YjMzYjg5ZSBweTNrCis4Njk2MCA3Njg1NGU0NWM0NjUyNzBmMmQwMDE4MDYxNTA2Y2ZhMDQ4ZTA5Mzg2IHB5M2sKKzg2OTYxIDhiZjkwYjg3MTBkMDM3ODI3YzkxNDE2M2Q1MDk2NDFlYjkwOGVhMWMgcHkzaworODY5NjIgYTVhM2FlOWJlMWZiMDM5NTI4Njg0YmJjMjI4OWZlZDI2ZDQxOGM2MiBweTNrCis4Njk2MyAxMDc1NjFjNThkZTEwNDM1MzE1YzNhZDFjOGYyZDVjN2M4Mzk3OTU0IHB5M2sKKzg2OTY0IDQ4YzI4YzI4MWQ1N2FmZmU0Njk3MWNmOWM5N2NlYWExMTgwZDBjMDEgcHkzaworODY5NjUgMzgzNTNiYTQwOGExZDg0MjZkYTc1ZjA1MTg4OGU0YTIwMjBjODZjZSBweTNrCis4Njk2NiA1NzdhMjVkNjU1YzRhYWZjMTg3ZWM0MDg5MDVmYzM0Nzg5ZjhhZTQ3IHB5M2sKKzg2OTY3IDgxZjRkMWZkZjU3MzQxMzJlZDMwM2E2MjkxMmQ0ZjAyYWJlYjE4MTMgcHkzaworODY5NjggN2MxYjRjYTQ1ZGI2ZGQ5ZTBjMjU4Yjk2MWRjNTFkMjUzN2QzNTA0MyBweTNrCis4Njk2OSA5NGZhNTNiNThlZTUzNDhlZmYxNWNhYzZkZDliMmQ0ZTVkZDg5ZDMzIHB5M2sKKzg2OTcwIDc4MjE2MjYzNDI1ZDE1ODFlOWZmOGVmYjdiOTk3OGE0Y2E1MDcwM2YgcHkzaworODY5NzEgNGE1OTk5MDIzMTBkYjhhNGQ5OWRjODZiMDhiMDFhNTU1NDQxZjEzNCBweTNrCis4Njk3MiA1YjY4Njc1ZDcyNjljNmE1YzA0OWRiZTM3YzJlNjFkMjQ4ODRhYjIwIHJlbGVhc2UzMS1tYWludAorODY5NzMgZmRiMzUyMzFlYmUyNTlmNTJlMjgzMThiMTFkOWFiOTFjZTEzZjkzYSByZWxlYXNlMjctbWFpbnQKKzg2OTc0IGZlMmE1NmExYmE3NDQzNGNjMDExYjViNzA4ZjVlMGZiMmMzZDllODQgcHkzaworODY5NzUgZmFhZDE3OTdmYzkyY2Q2MWVlNTdlOTMyMjZiMzA1OTlmZDg5OWNjMyBweTNrCis4Njk3NiA1ZmRhNTE5ODM0ZGY4NTJiOGU0ZjY2M2I3NTI2YmFiNjY2ODE1Y2Y3IHB5M2sKKzg2OTc3IGFlMTAyODJlN2Y0ZWM3ZjJkNzJjNDY1YzM1YjIyMTRjNzkzNjA2NjkgcHkzaworODY5NzggMzAxZDIzZDZkZDliNmVkODAzMzg2NDBkYWU3MWU4NTg0Mjg5NGUwYSByZWxlYXNlMjctbWFpbnQKKzg2OTc5IDUyM2E2ZmM1M2E3MDVjNDVjZmMyODk5YTM5MDY4NWQ2ZDZiYThlMjIgcHkzaworODY5ODAgYjMwMDQ4NjYzYjdiZmU2MWU3YjUyZGUwYmE5ODMxMGNhY2IzNzAyZiBweTNrCis4Njk4MSAzZDJiZmQyMGMyZjRkOTJkZjU0YmFkNzVmNTJlNDYzNTQwNjczOGIwIHB5M2sKKzg2OTgyIDMyMTRlMjMxYTFjNDU5M2U1ZmIzMGJjOWRiZGIzYTBkYjJlOGI1MTkgcGVwLTAzODQKKzg2OTgzIDIyZjBjZjFhMjcxMWIyNDQ3MTgwMTFmNjc2MzNkZDRkOGUwODNmNGYgcHkzaworODY5ODQgZjc0ZjVhMDgzYjZmNzg1N2I3Zjc1NGNiZDBkYWEyYjRhODVhOTliNCBweTNrCis4Njk4NSA4M2FkMDBhM2E0ODkxODE2NTJkNGJmMmVkNWJhZGMzYWJjNDI2ZWRkIHB5M2sKKzg2OTg2IGIwMzQ4MzI0MTRmNzg3ODA2ZDJhYTUzYThmOGM3NjFhNWI5MjVhMzMgcHkzaworODY5ODcgNjY1ZjBmYzZkZGQ3YmYzOGRmNTAxMTE5MTlkMzdmNmU1MjMzN2ZhOCByZWxlYXNlMzEtbWFpbnQKKzg2OTg4IDdjZTkwMDFkN2E3NzFkMjQ0ZjQyOWNmYTI1NGZhMmVkZTI4YTU3MWEgcmVsZWFzZTMxLW1haW50Cis4Njk4OSAzMTgyYzYwODdlNTJlZTEwZjZhZTE0ZDdmYzQ4MzA4NzQxNjhjNjBmIHBlcC0wMzg0Cis4Njk5MCA1NTZkZjA4N2RlNGZjMTMyZTlkZDQwNmQwODRiOWRlMzIyYjViYjkxIHJlbGVhc2UyNy1tYWludAorODY5OTEgZTc1NmVjOGY0MTQzYmI5YTNmMTQ4M2M0YzMyMjYwNjcyMmIyNjA3ZiBwZXAtMDM4NAorODY5OTIgNWE3MjNiN2FlZmI3MGY3MjhjY2VmM2Q1MjM1M2JjNWFhNDExMTZiMyByZWxlYXNlMjctbWFpbnQKKzg2OTkzIDRjOTg0NDczMjkyNTczMzliOTU5ZDE3YjJlM2ZiMDhjZjI1ZWM4MjQgcHkzaworODY5OTQgYmQzYmE4OTk0MmUzMTZkMzVjYTlhMjIxYzUyZTY0OTBiN2RmOGQwOCBwZXAtMDM4NAorODY5OTUgZjg5NWEyMjIxZmUxM2IwMDlmZGI1YmUwMjk1YjFjNmQyYmY5M2E2ZiBwZXAtMDM4NAorODY5OTYgM2RmZWM4ZjE0ZTczMmU3YmQ2ZTAzNWU2NmI0NWYyMDJhYzE5ZDhiNSBweTNrCis4Njk5NyAzZDlhODZiOGNjOTgwNDZmMGQ3NDU2NDc5ODI5NDEwZTM4NmJlNmIzIHB5M2sKKzg2OTk4IDYyYjYxYWJkMDJiOGQ3MDk1Mzk3Njg3OGVkNWNlMmMyMTU3OTE0ZmMgcHkzaworODY5OTkgMTQ4NjQxNmM4NmQ5N2Q4MjE4MTA3MzliYmZhY2ZkOGUzY2JhN2NkNiBweTNrCis4NzAwMCA2YjAzNDkxZWUxNzFiNDliZjE3MGUzMzJjMWRlZWU2MTkwZTYwZTRiIHB5M2sKKzg3MDAxIDRjZGFmYjAyYjIwZTE1NzQ1MmFmNDY5N2FmZDhjZDdkYzQ3YzgzOTYgcHkzaworODcwMDIgNWVjNGVkNTE4ZWY4ZmQ4NDljOTMzOTZiYzBiYTFmNTFhNmVlMjE1NCBweTNrCis4NzAwMyBhNmU5NDlhNmZmYzljOWYxZDcyNWY1OGYwOTgwMTE3YjE3YmE1NjBiIHB5M2sKKzg3MDA0IGQ2MTgzYmNlYmRkZTY4MmU5NDMyMDY2MGFhYzE4ZWMyZGU5ODk2M2UgcHkzaworODcwMDUgZDI5YjU1YWMxNjMxOTM4MDYwZjk0MjRiNGExNGY4OTQyZDhhZDk4OSByZWxlYXNlMjctbWFpbnQKKzg3MDA2IDdjMjNhNjhmYTNkZTg2YTM3ZGU5OTFmNmExNmJiYTY5NDZiMmQ2N2EgcmVsZWFzZTMxLW1haW50Cis4NzAwNyA3YjZhZjU2ZWU3NGQwODQ3MGQwYzExMjg1YjZjM2YxNWMwZTljNzdiIHB5M2sKKzg3MDA4IGEyZmFiZTIyNGU4NzM2MzIxMzgzMTg3ZTJiODgyZThjMzg4YmE4NGEgcHkzaworODcwMDkgYTkwNzExMGRmMjVhMDg5Nzg5YmUwYjg3YzUzMTdiZjc0YWYxODhlMiBweTNrCis4NzAxMCBiMzdkYTYwYzkwNzJhMTYzMDBlNWVlMTMzZDMzOTZiNmVhNzA0YjYzIHB5M2sKKzg3MDExIDU2ZWVkOGY0MDdiZjk0NjlhNGRkMjZmZGExNGY4YmE0YjAzNGM0ODMgcHkzaworODcwMTIgMWQzNTMxYWFjZWEwZTEwOTVkZmU1NjQ2MTM3NGZkNzJhZTYyNTAwYyBweTNrCis4NzAxMyA0ZGY4YjQzNDJlNzAyNDNmNzk1MTYxMDRhNjRiM2U5MTk3ZjQ4YjgzIHB5M2sKKzg3MDE0IGIxZTc4OTYzMWRiYzQyMWQzYmI2NDc1Y2IyY2EyOGVlMDFhNzU5MWUgcHkzaworODcwMTUgNTFkMjhhMGQxYzMyZThkOGJmYTVhMjQ3ODVkYzQ0MDM5Y2M3Njg3NyByZWxlYXNlMzEtbWFpbnQKKzg3MDE2IDNhYWYzN2MyNGRiOGZhNzc4NmVlZGFjYzRhNWQ3N2QyYTMzZTNmNzMgcmVsZWFzZTI3LW1haW50Cis4NzAxNyAyZTFmY2YyOGM5MTQ1Y2Y2NzBhYzhlZTdlZDhlMzRkYTY0ZDAzYWU0IHB5M2sKKzg3MDE4IDg5M2IwOTg5MjllN2VmZWU0Zjc1M2I1ZGFlOTA4NTgzNWQzYjc1MjYgcHkzaworODcwMTkgNzEzYzZiNmNhNWNlMjJlYTNjZWRhODBkZDFjZDRhYmVmYjdhMDc3NSBweTNrCis4NzAyMCA4YjAyZjdmOTQ3NWIyYTM3NDg5YTE3MmNkOGVlZmMzMzliNmY3N2Y3IHB5M2sKKzg3MDIxIGYzNWE2ZDdlMzI1ZmY1MzJjYjM5NjU1N2E2MzZlZjI1NjRmM2UxMWUgcHkzaworODcwMjIgNDhjNDA3MDk0MTdiOWM2MGRjNGJkY2ZiN2MwZDM3NTEyODE2YjNmNCBweTNrCis4NzAyMyBmODJlZWE0NzgxZjE1NjNhMzU4MjE5OGQ3ZDMwMjMzZjBlYTkwZWM0IHB5M2sKKzg3MDI0IDcyMTRkYzViZmY1Y2ZiNzk4OTE1NDU3MzczNDQ4YzFmYTM0NWFlYjYgcHkzaworODcwMjUgYzI1NzhhNjg4NzlkOWM1YjdlYjhjZjkzM2MyNzMxYzdhM2Q4Y2ZmMSBweTNrCis4NzAyNiAyOTZlNmY4NWY1NmQ0MTYzMDFhN2Y1OTViN2RiODZmNWM5ODMxZmJkIHB5M2sKKzg3MDI3IGQ1ODJkYWJiMzBmODViNzcwZjAyZmQ3MzlkMGU0YTEyN2RkOWI1OWUgcHkzaworODcwMjggNDg0NTBmMDU5NzBiOTAwODE0MWM3NjM2ZjIzM2ZkMjA3ZTM1Mjc1MSBweTNrCis4NzAyOSA4Y2FiY2Y0ZjkwMzM4YjVhOWE1MDU1ODg3Mjg4Y2U2ZDIzMThiMTA2IHB5M2sKKzg3MDMwIGJlZGU4M2UyMDg1MzRjMmRhZmFkZGJmMmY2M2VhM2RhOWQ2NDE0MjEgcHkzaworODcwMzEgZGU3ZjI4YTY0MGU1YTY5Y2I2Y2JlYzM0ZjczZDg2Y2ViYjYyNDY0NCBweTNrCis4NzAzMiA1NzNhNjcyNzYyMTcxZjA0ZDIxNjBkNDIxNWIyY2E4YzUzMDg2NTRlIHB5M2sKKzg3MDMzIGE4ZjM4NDc2MTlmNGRiMjQ4N2ZiYzZiNzYzNDAxNjYxMzllZjdlOGIgcmVsZWFzZTI3LW1haW50Cis4NzAzNCA5YjYwMzYxMWY2ZDRjNmQ0YWE0OWZmMzZlNzZmNDk2ZjBmYjBmYjI0IHJlbGVhc2UzMS1tYWludAorODcwMzUgMjk0ODA2Y2FjOGM1NGJlNTNiYmQ1ZjVlOGYwNDQ3YTVkMjI3Y2Q0MyByZWxlYXNlMzEtbWFpbnQKKzg3MDM2IGRkYzZjNDdiZjgyNWUzOThlMGY0YWQ1MWUwNGExMzkwMTQ4ZGQzYzkgcHkzaworODcwMzcgZjE0ZjYxOWQ3MDUwMDI3NTkwNDVlMDI2NDRhM2RlYWJiNjM5YTJkNSByZWxlYXNlMzEtbWFpbnQKKzg3MDM4IGIzMmQxOWViNDMzOGVjMTU2ZmRlODQyNWI0NTYyYTA5NjAzMjRmMTMgcHkzaworODcwMzkgZmQ2MzhjYTc0NjM0YWExN2ZjMzgyODdkNDY1NjVhMWE5MTNhMWE3NSBweTNrCis4NzA0MCBhZTNmYTc4MWVlZjJlNDAzNWZjMjFhYzg5MjBlM2NkZGU1NGE2MzY2IHB5M2sKKzg3MDQxIGYxYmUzNDkyMzRjM2U0ZGY0M2QwY2YzYmM1OTc5ZTViMDQyYmY5ZmUgcHkzaworODcwNDIgY2I2ZDVkMTUxYmI0MjFhMzYwNjA2YzdmMDgxOTM5OWJmYjkwZjJlMyBweTNrCis4NzA0MyBmMmE0YWRlMzZhMWVhODEzMDU0YzkyYTU2YTI3YmQ3ZmVlMDZlYjZhIHB5M2sKKzg3MDQ0IGI1NWYzZDYzOWNkODZmOTU0N2Q1NjgzY2VkY2Q4MTY3Y2E5MGI2ZmQgcHkzaworODcwNDUgYzJjYTg2N2NkZDFhMjA3ODcwMTBlMDMzZGI0ODMwZTRiZDM2MDQ0MyBweTNrCis4NzA0NiA1ZWViZTRhZDBkODc4ZDUxNDA3ZGFlZmFmYzhjMGQ3OTI0YzgyOTQ4IHJlbGVhc2UzMS1tYWludAorODcwNDcgMGZkNmFlMGE4NTY3ZGExODkxZmU1YWU0ZDBkYTk0NTM1ZDk5NDY0OSBweTNrCis4NzA0OCA5ODMyZTk2ZTczMGE5MDU0ZTIwN2RlMjlhNTQ1YzY1NTdmYTAyZGFmIHB5M2sKKzg3MDUwIDc1NzExZDE3NDNjY2U2ODdmNjliYWM4OTUzZmM5NTIzODBhMDZjZWUgcHkzaworODcwNTEgNGU2MjkyN2EyYmRhOTU5OTQ3NzA2NmQ1OWI2Nzk1MzRkNzczMDgyMCBweTNrCis4NzA1MiA3NzlhMjNhMDhkOGNlZWYwNzNmOTY4YWEyN2UwMzg3Mjc3YmFkODYzIHB5M2sKKzg3MDUzIDMzOWRkNjIyZGU1YTU4MzI0ODQxNDY3MDQ1OWQ5Mjk5OTRmMWU5YWQgcmVsZWFzZTMxLW1haW50Cis4NzA1NCBiYTcwOWFkM2ZmNGNhNjljZjZjZTg0MTdjNjlhMTAxYTExYWI1MTQ3IHB5M2sKKzg3MDU1IDA0Y2VjMmUxY2E0MWE4NzRjYjg1OWY2MjhmOGU0ZGNiNjk0M2Y1NTcgcmVsZWFzZTI3LW1haW50Cis4NzA1NiAxODI3YThhYzliMThlOWM4NDZjNjg1NjRlNTUzOTJlOGJkODI0NzdmIHB5M2sKKzg3MDU3IDNmZWU4OGU2NDQyYTNkYTI1ZjlmNWRhZmE2OTFkNDk3M2ZjZjdjZjkgcHkzaworODcwNTggZGZlODZkYTI3ZTY4YzM4ZTY4NDhhYTRjNDIyZTVlYjMxZjIyMzU0OSBweTNrCis4NzA1OSA2ODI1YjJjZDliODFjMzhiZGYyOTA4NmViOGRlMzA3MDEzNTgwODA0IHB5M2sKKzg3MDYwIDNkMWJjYjU0YTgyYjY2Y2Y0ZWZiYTUyMTJhZjA1ZGZhNDY0OTM1OGEgcHkzaworODcwNjEgYjdmMDhhMGFlYTI4ODY1MTJkOTFhMmU3YzJmNDg0ZmM4NjNjNzhlYSByZWxlYXNlMjctbWFpbnQKKzg3MDYyIDExMDk0YjUyODhmOTg5N2UyM2FjNTc1ODZkMzc2ZTc5Zjk0MGFiNDkgcHkzaworODcwNjMgNTZmNDJlMTg0YTE5NmU5ODcwODQ2Y2YwNmQ4MDE2Y2ZiMzc0YTYwNiBweTNrCis4NzA2NCAyZjVjZDE4NjliMWE1ZjZjMWMzYzIxYjllMWM5NjFmMWY1MDVkNGVhIHB5M2sKKzg3MDY1IGVjNzlhYWY4YzBiZmMyYzBmM2YzZjk1OWM5NTUyOWQ5MmIzYmYzYjYgcHkzaworODcwNjYgODM1OGRjMTNhNTc0ODViMDg5OGU2Y2Y0YjcxYTFmMzZkNjQ2ZjU0MSBweTNrCis4NzA2NyAxY2NiYmRkYmVhODgxZTdiZTY4MzJhMjNmNmFiNDE3NWExY2I4ZmFkIHB5M2sKKzg3MDY4IDgzOTU1ZTQ2MWM0YmE3MzVhYWZiMzZjNDg2NTYzYzM0MmE2NjQ1Y2IgcHkzaworODcwNjkgNmZiNTY0MDRiNmJiMjNlZDUyNWFkZGRhNjJjZTRhY2I2OGYyMmVkZCBweTNrCis4NzA3MCA0ZDBiZmMzMDM3MjQ2NDkzMmU0OTJlZTU3MmZiMmZkNTRhYTc0ZjBkIHB5M2sKKzg3MDcxIGMzOGRhNGM1NDE4NGU4ZjA3YWY3Zjk5MzhmNGJjNjM0NzRjZjcyNTQgcHkzaworODcwNzIgMDczMTc2ZjAzODEzZjBlNGRhMzMzZjY5YmMwODA2N2JhZDFmNDk4MiBweTNrCis4NzA3MyA2OWE1MGJhNDRlNjViN2Y5Y2E2ZmQ1NjFlNTcxNzBiMDc0NDE3NDBiIHB5M2sKKzg3MDc0IDI4NWUwY2ZiZjkwZjMxMzg5ZjJiOTA5ZTk1MDViNmZiYjlmNzM5MDIgcHkzaworODcwNzUgNWMzYWM4Nzk1ZTljNGQ0MzczMzY1MmU3YTQxNGI3Y2EwMmFmOTIxYyBweTNrCis4NzA3NiA2ODFhOGU4OWM2NWM4MjM4YWRhZTZlNGFlN2VlNjYwNDQyZGM3MDhmIHB5M2sKKzg3MDc3IGIzNjdiNTMyYTgyMzM5YTRjNDMxMDQxY2UyODQ0ZjMzMDljODUyOWYgcHkzaworODcwNzggY2IzY2ViY2ViYTUwZmQyYWE3ZDgxNDVkMzY1NzYwN2FhZjRjMDg0ZSBweTNrCis4NzA3OSBiOGVlZDdhNTZhOGNlZTU0M2Q1MDVkMTZhNzE4NzBmOThmYTMwN2RiIHB5M2sKKzg3MDgwIDU5Zjk3MmIxZDU2NzAxZjE1ZmQ2YWQ4ZTJhNDMyNDg0NDk0MGQ3NzEgcHkzaworODcwODEgNTk3YzMwNjlhZmQzOTkxNzQ3MDEwYjI3ODViNzc1ZDgxNjJiMDllMCBweTNrCis4NzA4MiAzZjI0MjQ0YjEwZmQ4OGQ2ZmMzNGNiMjU4Nzg1N2Y4NzBkNjJjYzI0IHB5M2sKKzg3MDgzIDgxNzA1NTU0MTZhYzQ0ODgyM2UzOTgxNzQxNDBmOGI4OTIxYWIyMGUgcHkzaworODcwODQgNWYyODZiYTAxMzk2ZTczMzhlODcxZTU1ZTAwNmJmNTMxZWRjN2ZlYyBweTNrCis4NzA4NSA0OTY1YmU5MGZlMTk5YTgzMzcyZDY2MzUzOTkyNDAyZjZmZGVmNmVhIHB5M2sKKzg3MDg2IDkwMmRiNDcyMjU5NGMyZjkwNTVlNTcyZTNkNTI2NzI1NjU1OTczOTcgcHkzaworODcwODcgOTA3OWVjZDQzM2EyMjU4OTQ1NmE4NWE4OTAzODA1MDUxOWExN2ViMSBweTNrCis4NzA4OCBiNjM1Y2VhOTQxOTU3ODBjODcxNmUyMzY0NzlhZjMxOWJjYzI2MjUzIHB5M2sKKzg3MDg5IGY0NDhkZDZiNjdkYmMwZmU1NjkwMTVjZTZiZTUwNjRkYmM4YzNkNzkgcHkzaworODcwOTMgMDYyOTA3ZjY4NWFjNGU3MWZlNzE3YmEwYjE5M2FiYjQ2ZThmY2MxZiBweTNrCis4NzA5NCAyM2ZmNGEwYzM3NWIzMzMyYTk3ZTU3OTgwNThiYzM3MzRkZWZjYTAxIHB5M2sKKzg3MDk1IDFlNGE2ZTU1NzZhZjRlNDcwMmJhZGM4ZTBmYTdjZmFlNWZlMWFkNzYgcmVsZWFzZTMxLW1haW50Cis4NzA5NiAyNmVkZmIyN2EwY2U4ZTk0M2M1ZGM4ZDU2MDU1Y2RmNDc3NmM3M2JlIHJlbGVhc2UyNy1tYWludAorODcwOTcgMGFlMDdjYWFiNTA2ZmVmMTQ4MTE5YTFjNWQyY2U2OTAyYTA4ZDUyNyByZWxlYXNlMzEtbWFpbnQKKzg3MDk4IDI2YzY1OTM1NzFmMWZhZTdkMDIzNDNmMzYyZGIzZThhMDlmYjUzMDIgcmVsZWFzZTI3LW1haW50Cis4NzA5OSBlMTE1YjJiZmE5ZDdjNjUzOWQwZDgxZjZiNTVhM2VmNTI2ZWRjZjNjIHJlbGVhc2UzMS1tYWludAorODcxMDAgMTVhNzU3MGUzZmZkMDNkMjc2ZTBhYWRlYzIyNDgxOTc4M2UyNjZkZiByZWxlYXNlMjctbWFpbnQKKzg3MTAxIDMwZWFjYTQ3MzVjYjhjOGU2MWI1ZjkyZmJiYThlZDRhNGVmY2UyMTQgcHkzaworODcxMDIgYzQ4OThjZWY0NzE1ZjA4ZmU3M2JjMjdjNjkzYzRlYmYzNWY4MGRiYSBweTNrCis4NzEwMyAyN2Q2YWE0ZjE4MTExZjUyMzg4NDIwZWNmNTc3MGMzMzQ0ZWEwOTYxIHB5M2sKKzg3MTA0IDI1MTNkODkyYjI1NDE4YjVkMGFhMmFiZTU1M2JlOTM4NTU3NWMyMmMgcHkzaworODcxMDUgODY4ZDU2YWMxYzU5MDY2MjhmM2U4MTIyZDBlYzEzZWYzYTQ4ZWE5MyBweTNrCis4NzEwNiBjMjM0OWI2YmZmYWYyYTQ5ZDNhZjQzYjZmN2Y4MWRmOGZhNWU0YWZjIHB5M2sKKzg3MTA3IDRhOTRjMmRiZjllODRhNDUxZWZjNjZiYTM1YTRmNjcyNDUxZjBkMTUgcHkzaworODcxMDggODdmMjNjNzk0OWVlODEwOTMzZjk0MTdmYzVjOTQ2MmExOTVlZjdkZSBweTNrCis4NzEwOSBhMWYzNmI5MzczYmJhZjE5MWY1MWE4MzI5YzhlYjg0YTBkNmM3MGRhIHB5M2sKKzg3MTEwIDM5MDA5ODQxNDcxYjU5N2EzYjJiNzhlN2Y1ZTNmMDgzZTk5M2EyYTQgcHkzaworODcxMTEgNmVmMWFlYWU0MmJlYjZlYzg1MWVkZmIwMzFjYzIwNWM5ODExMTMyMCByZWxlYXNlMjctbWFpbnQKKzg3MTEyIDExZmM2YzM4MDhiNjQwNDdlYmVjMjRiMzI0MTU2YjdjMmNjNzFkOTAgcHkzaworODcxMTMgMmZiMWVjNWM3MzVlYjIwMzdhZmRkMTU2YmUwMTQ1ZjI0MGZjYmY0ZiBweTNrCis4NzExNCAxMjFlZDg0OGM2NzBiMmI1MmU2ZTI2ZGI4MzIxYmRmNDA3NTkxNzk5IHB5M2sKKzg3MTE1IDM5NmQ5ZmE0ZmEyNDMyYWZmODhmNWU0ZTdkZmE2Nzk2ZWM3ZTk1ZjQgcHkzaworODcxMTYgYWIxMzU1MzcwMmY1NWMyNWUxYjNiNjdiOWM5NTg0MGFlNGNlMmZhYyBweTNrCis4NzExNyA0MTdmOGNjY2QyMDg5YTY5OTg1NGY5OWJjY2JhMTk4MjMzM2MwMDYwIHB5M2sKKzg3MTE4IDUwZGU5ZjFhNmQ1NDcwM2U0OTk4YTc3NTQ4MDUwYjIxYjE4NzQ3NzggcHkzaworODcxMTkgNzg4OTg0YjdkYTZmMmVlZjE4MDQ5ZjA4OWM1MjRlZjg5OTAyOGNhYiBweTNrCis4NzEyMCBiZGVkMDY3ZjkxZThkZDhiNTdjYjZiNjMxZDg2MzYzMThjOWRmMzU0IHJlbGVhc2UzMS1tYWludAorODcxMjEgNzVjYWI2Y2Q5N2M2MzUyM2E0MzliMTIxOTUyN2ZiNWY0MzUxMmViYiByZWxlYXNlMjctbWFpbnQKKzg3MTIyIDc4NmZiZWQ3OGQ1N2Q3NzcyNTBjMjYwZTU3NDg4MDgzNDQ1NDZkOWQgcmVsZWFzZTI3LW1haW50Cis4NzEyMyBhYTMwYjE2ZDA3YmM0NTRmZmI2MjU1NjhhMWU0YTAxODE5YmYwM2E1IHJlbGVhc2UyNi1tYWludAorODcxMjQgZjRmNTZlZmEyODcwMjAxY2ZjZDUzNWUwNTM0YTc2OGI4NmU4NzkyNyBweTNrCis4NzEyNSA5ZTcyYjZkMGY0OGJhM2Y5MjU3YmZlNjJiYjc3NjI2MTY1MmIyNjczIHB5M2sKKzg3MTI2IDA4MjFlZjEyMmQ1MzFkY2UxYTc5M2YyNmZmNzZkMTQ5ZjQ4MWVjZjQgcHkzaworODcxMjcgYTQ2ZTE5ZTg2NjgwMTY1MzM5NjExYWFhZGU0N2IzMGIxZTA3NzJmMCBweTNrCis4NzEyOCBjNzE4Y2I3ODZhZWI1ZmM1ODAyOTdlZWNkZjIwNzJmMjg2NTVlZTg4IHB5M2sKKzg3MTI5IDMyNGQ5M2Q2ODUzMzFkZjZhZjk4Y2E4NGUzZjk3Zjk0ZGYwODJjNDMgcHkzaworODcxMzAgZDk0ZDM2NWQ3Y2U1ZWM2ZmIwNWU4Mjc0MDYwNDY2OTFlYTUwNmNmYiBweTNrCis4NzEzMSA1MjIwMTIyZTNlOWJjN2QzOWZlYTczNmQ5YzllNmJlMDk3ZjNiMzU1IHB5M2sKKzg3MTMyIDdiN2Y2ZWY0Zjk5YzdmZjYxMjQwMTUzZWY3YmM1Zjg2ZjM5OGRjNzAgcHkzaworODcxMzMgOTVhNzNlNGIyY2ViM2UwMjlmODZlM2E5MTRjYWVjNDNiOWM5Y2U2OCBweTNrCis4NzEzNCA0YzdlMzJlNTkyODg1N2Y4MDZiMTM0MWFkMmFmYmEwZjg5YWM4NzY2IHB5M2sKKzg3MTM1IDExMzkyNWI3OWI5N2IwM2M2ZWViNzRhYmViN2NhNDMwM2MyODIwMGIgcHkzaworODcxMzYgZDU3NTkxYmRmNjFlOGU5ODM2NTRlZGJkMjVjOWYzYjgwY2MxZmQ2YyBweTNrCis4NzEzNyA1MGQxNzBiYjcxYzc1MzE4NjE0NjdjY2M1NzVkMDRiOTY4MjNkNGU0IHB5M2sKKzg3MTM4IGI4NDI2MWJkNmQ0YTRlNmViMGJhNzc0MjE0ZDE0MmY0Y2FiYzUzYWQgcmVsZWFzZTI3LW1haW50Cis4NzEzOSBlMDA3MmJkZGQyZDU1NzAwYTM4Y2ZhYmVmNjdkYTk4YWE5NGJhZDBiIHJlbGVhc2UzMS1tYWludAorODcxNDAgOGQ0ZmVlZGVhYWVkMzQ1YTRmZjQ1YTMxMDVkMWY1MTI3NTVjMmI1NCBweTNrCis4NzE0MSAxNjliZjAxYmI1MDdlMDc4OTRhYTNkODMwM2RhMGZjNGQzOGUzN2FiIHB5M2sKKzg3MTQyIDIxZGY4MTU1Yzc3MGYzY2ZhNjY2OTQ0MDAxMmM5YTkxYzIyMTQwZmUgcmVsZWFzZTI3LW1haW50Cis4NzE0MyBmOGJlYTk5NjA0NjIxMThiYjYxYjMzZDBkNzM0N2JiNmJlOWRjYzIzIHJlbGVhc2UyNy1tYWludAorODcxNDQgODAwNTYzYWMwNTdlZGFlM2U2ZTI1MWU1ZTNiYzAzYTg4ZDljOWM5YiByZWxlYXNlMzEtbWFpbnQKKzg3MTQ1IGQyODEyNmViZDYwZDAyZGE5NzIyMzQ1ZDEyM2JjNjExNTY5MmY1YjYgcHkzaworODcxNDYgNmU5ZjM5N2JiYTAyNWUyYWIzZWUyMDZiMmM1NmU4MWFkY2I2MTg4MCBweTNrCis4NzE0NyBjNTM3YmQzN2Y1MDhhZjEzYzIxMjhmNDJkNTIxZWEyNTYwZWZhMjk4IHB5M2sKKzg3MTQ4IDFiNjU5YTAwNTcwYmRiNGI3ZGIwYTZlMzJmY2QwOTZjZGIzYmRjNTYgcHkzaworODcxNDkgNzQwMzAyYmIzYWRmYjM4NGI2NzY0NmI0MTY4YjlkYjQ3OWQ4MmU5OSBweTNrCis4NzE1MCBiYmNlNDJmNmRkN2RiYmYyNmE5NjEyZDMyMmVmNjNiM2JkZjI1NjgwIHB5M2sKKzg3MTUxIDNjNTg5Y2E0MWQzYTNkMWIxNjE1YTI2NjRjZWM4MzQwYmY4MzgzOTUgcHkzaworODcxNTIgMTQ4NmQzMTcxYzY4Njc4YWY1N2IxNjk1OTY3Zjc4NDJjMDQ5NmEyZiBweTNrCis4NzE1MyAzOGRjNDEzOTg1NGM4Y2I4YWI2YzdmYTQ4ZjQ5NjYxMzQ5NWM2NTdmIHB5M2sKKzg3MTU0IDljYjJlY2JiMWYwY2E5Yjc2ZTQyZjkyZWIyNTM3ZjI2NjgzYzllMzYgcHkzaworODcxNTUgOGMyNTRiNjRhNDM4MDRjZDI5MWY1Y2FiOWYzMzI3MTA3MTM0MDk1NSBweTNrCis4NzE1NiA4ZGUzMzU2Mjg1NWZhZjljYjk2YWM2M2Y4ZGY0MzM5Y2M4MTY4YzMwIHB5M2sKKzg3MTU3IGM4NmRjMmJkM2FlODEzMTNlNDdmYWM5M2YyMmFhNzRkM2ZhNmZkMjggcHkzaworODcxNTggNzRmZTczYzEwNjExZDIzZDFlMzhiNjM1NTlkZTVjYTA5OWI5ZDhjYiBweTNrCis4NzE1OSA3MzhlYWVlZDBiMWEyNDcyOWQxNjAyOWVkNmQ0N2YzNDZlMWQzNDhkIHB5M2sKKzg3MTYwIDRmODQ5NzIwYmY0MTM3MzBmNmRiY2U3YjIzY2U4M2Y0NWYxNzE1ZDAgcHkzaworODcxNjEgMDEzM2I4Y2I3ZDgwNmQzN2UzNTczM2Q3YjQ5ZTk2NTA2YzQ1ODhmNiBweTNrCis4NzE2MiAzMzBhOTg1MjM5NmRmODhlZmQ2Y2U5MmU1Y2MyOWMzODMwOTZjZGViIHJlbGVhc2UyNy1tYWludAorODcxNjMgNzI1M2JlOTZhMTllYmYxNjg4YTZlYmM3ZjQ4MDQzZWUyZTQ4YmU2NiByZWxlYXNlMzEtbWFpbnQKKzg3MTY0IGZhNTViMDNiZTU3NDAyZTE4OTRmNGRmYzYzOTFmNDc0ZmIzOTY2MDkgcmVsZWFzZTI3LW1haW50Cis4NzE2NSAwNGVkOWRiYzZlMDUxYzMwOWQ2OWU4YjhjMThiZDEwYzNkY2FmMGJkIHJlbGVhc2UzMS1tYWludAorODcxNjYgNzE0YjhlMWVmNzI2M2UyODA5YzlhZDlhNTNmMDU5OGIwODNhYTUxZCByZWxlYXNlMjctbWFpbnQKKzg3MTY3IGFjM2M1NTI3MWZkZDQyYTAxYzEzZTY0YmYzYWY2YzI4YmVjYmE3MWYgcmVsZWFzZTI3LW1haW50Cis4NzE2OCBhYTk5ZGM4ZjcwNWRmYmE5MmQ1NWZhYjY2NDgxZjRiYzBiYjdkYWY0IHJlbGVhc2UyNy1tYWludAorODcxNjkgMjA3ZWE5YTA1MDYyZjI0MmE3Mjc2MTUwMTZiMzRkOWQ5ZWI1MzU2MSByZWxlYXNlMjctbWFpbnQKKzg3MTcxIGQ2YzcwMmQ0MGZmYjJkZThlMWJmNDI3NTYyZjUwYzUxNzU1MGE3MmEgcHkzaworODcxNzIgMzUzMDc5YWY0ZjUyNzVjOTExOWQyM2ExNWE0OGMzMjRkNzE0ZDk2NSBweTNrCis4NzE3MyA3MDQzNmI0NmU0MzRkMmQ5MmU4NjQ4NzQ5NzFhMzNhZjBhNTRhZDRmIHB5M2sKKzg3MTc0IGIxYmRlZjU2OTY2ZWUxMzQ5ZmI2OTEzOGIxMTQzNjE0NjM1ODI1N2QgcHkzaworODcxNzUgOGQzOGM2YTI3MTgxYzFkMTU3ZDg2MDAxN2IzOTU0M2VmNjA2YTc1YyBweTNrCis4NzE3NiBhODExZjdjMTBlODI1MGZiNGUzNDQ4MWMxNjA0MTU2Y2YyMThjOGRlIHB5M2sKKzg3MTc3IGYyMmQ5MTMzMmRiOTRmNmEzZjYwYWRkMjhhOGZlODQzNDA2NGJlNDUgcHkzaworODcxNzggMzA2ZDg4YTMyMzU3MjNkMzUzZDVkMTI3Zjg1MzBkNmQ5NzZhMmVlNSByZWxlYXNlMzEtbWFpbnQKKzg3MTc5IGI5N2Q4NDNkNjQ1NjI5NmVhMTM3NDE4YTk1ZGJmOTY5ZGZlZmM2ZDcgcHkzaworODcxODAgMjYzYzk5OGIyZjQ1OWM4NzE1NjFlMjdkNDUwOWEzMmM0ZGMyMmY3MiBweTNrCis4NzE4MSAzYjYyODU1NGUxYWExNWUzZjgyY2E3NjFhNWZkOGNhM2FlMWUxMGMyIHB5M2sKKzg3MTgyIDYxMmRkNWYyYWFiMzFhNzZkYmU4YWU4OTFlM2I0MjUyODk2MWQ3NmQgcHkzaworODcxODMgY2UyODc3Njg3MzcwMDZlNTA5YjEwOWFjOTY0ZGE4MTcyYWU5MGViNyBweTNrCis4NzE4NCA1M2JkZjFjODE0ODZiY2VkYTFmNDU4OGY1ZGFiYjA5NjY5YmQ5YzA1IHB5M2sKKzg3MTg1IDJjZjdiYjJiYmZiOGVlZjdiNjk0MjRhNmY2MDQyNjA3NTk1Nzg3OTYgcHkzaworODcxODYgOTk5YjFhYTI0Njc4M2FlZjkwZTI2NzVhOGYzNzJhYjUwYWI4ZjFiZSBweTNrCis4NzE4NyAxNTUzMWNiZTNmNTVmZDNlY2YxZjBlNDczNGM5OGNjMDAyYTYwNDFhIHJlbGVhc2UzMS1tYWludAorODcxODggMGVhZGQxYjJkMjU4YzgwNDYyMjA3Yjk5NzM0YmMxZDYyYjM5Yzc4ZSBweTNrCis4NzE4OSA1YmZhNDM2YTI4N2JmMDQwNDcwYjJlNzhmZGFiN2VmZDMzMTVmOTQyIHB5M2sKKzg3MTkwIDdhY2EzMmEyODkwZWYyMDRhNjg4ZjA5YmU0YzUyMzhhYWM2MDA4ODkgcHkzaworODcxOTEgNjZkOWUzODgxNzYxMDIyYTI3N2E5ZGU4MjM0YWI0NTVkNTkwZTY5NiBweTNrCis4NzE5MiBkMDJlNzZkYWNlNWJmMTFlMzEzNzU3NTJlZjI0ZTg5MjhmMGUzNzE5IHB5M2sKKzg3MTkzIDU1NGYyNmNlMzNlMTk5OWNjZjkyNmMwYmJkNzJkODhhY2RhMjIyNTcgcHkzaworODcxOTQgMzI0MmZkMTc3MTY2NGViMDc0ZjA2NzhiMjUwYjU5ZWIzNGExY2I5MCBweTNrCis4NzE5NSBiNzQwNTFjYWQ3MTc4MjM3MDdlYTA0NzNhMGE4MGFkODgxYjFhYmIyIHJlbGVhc2UzMS1tYWludAorODcxOTYgYTkxYjMxNjhmY2UyOTgxZWJlMWY1NzMyNmI3MWVhNWJkZDE2NTZhMCByZWxlYXNlMjctbWFpbnQKKzg3MTk3IGNmZTdjYTFhN2JhYjI0NWY1OWNiZGZiMzM2MzVkYzM4MDY0MWY5MjIgcHkzaworODcxOTggZjMxMzBjMmM0NmY1YTRlZTQzYTFkM2RkMGM2YmViNWRiNmNiYTE4YSBweTNrCis4NzE5OSA5OWVjYTYyZDY5MTk5NGI2ODA2ZDllNDVlZDc2YmQ2YTJjYzg1ODk5IHJlbGVhc2UzMS1tYWludAorODcyMDAgODA4MTc2MmViNmQxYWVjMWFlNjA5NTE4NjhmODhkY2Y2YzJhYWE1NCByZWxlYXNlMzEtbWFpbnQKKzg3MjAxIDEwZWU0ZjMyYjkxYzQwMmM4NDdhMGY0NTU1NWE1MzcyMzNkZTBiMDMgcHkzaworODcyMDIgYjdjZmI1ZjBmYzU1YjM2NjM2NzA5Y2MxMDlkNzE1N2U5ZDZiNDdiZiBweTNrCis4NzIwMyBlZDJhYzIxMDg0ZjRkOTkzNjQyNTUxYTQzYTVjOGZjZWZhM2JlNzBiIHB5M2sKKzg3MjA0IDI4NzJmNDZlODE5NzBkNGEwNGM4ZTVjM2JiMGNlYjQzN2MyZDc4YzYgcHkzaworODcyMDUgNDcwODhlNWNiNDAxMzFmZWMzNGUzY2VhYTJjOGI2YzU3MmViMjIzZiBweTNrCis4NzIwNiBlYWI4ZjkxZjU3NTRkZDg3ZWQ4YmY3ZjY4ZGMyMTYwYzU5NDQ0NGRiIHB5M2sKKzg3MjA3IGRlMDVkODQ2Nzk1ZTRiNzc2MWEyMzJmMzczMDA5Y2Q2MjFlNmI1NGQgcHkzaworODcyMDggZmEzZDA3ODcyOTkzNDExMTBlNzE1MzNkYjNlOGNiZTZkMDY2ZjNiYiBweTNrCis4NzIwOSAwNjIwNmYwMDFiY2Q0YzcyMWUzMGJiMjZiMmE4M2U4ZmMxNDIzN2FkIHB5M2sKKzg3MjEwIGJjODgwOWIzZTRiZTdmNWYxYWYxODMzYmE1MDU0NjdhMzllMTI2N2MgcHkzaworODcyMTIgZjdlOWVhOGM2MWEwMjc3NzUzY2YyNjA2YzM3ZjAxYzFlNjU2M2JkMCBweTNrCis4NzIxMyA2NjhjNDIxOGFlMjZlNzM2ZmQyZjFkNzU1ZDA5YzMxMTdjM2YzNDRmIHB5M2sKKzg3MjE0IDRmODFiNWQzNTZjY2Q0NWY0ZmM5ZWVhY2JmN2JkMTU1YWI0NTZiZTMgcHkzaworODcyMTUgNzk0ZjU0YmI5NzEzODBjNDQzOGQ5ODU0MWI2YzdlYzJjNWFkNGViYSBweTNrCis4NzIxNiBmOGNmOTczMTRhZWVhZTM2MGY0Zjk5ZjI3NGFmNjE4MGNhN2QzN2JmIHB5M2sKKzg3MjE3IGMyODc3MTE3N2ZjNDA1ZmQwMmVhMzQ1YWE5NWIwYzQyNWEwYWZlZGIgcHkzaworODcyMTggMTkxMTYxOTFkNTJkOGFiM2Q5ZWZhNmJmZDU4NzI1NTI4ZTQ5MmU0NCByZWxlYXNlMzEtbWFpbnQKKzg3MjE5IGJhZjBkMTg5ZWQwNzM0Yjc0ZjJkMTQzM2U1ZTM5MDU0MDg4MzBkYjkgcmVsZWFzZTI3LW1haW50Cis4NzIyMCAxNmI2YWU3NWRlOTQ2ODIwM2NmMGUzODg4MjczNTcwMjliMTE4N2FhIHJlbGVhc2UyNy1tYWludAorODcyMjEgMTBiZmQzYzEyOWRhZTI3MWJhZDY3NmQ3NjJkZGVjZjRlNWYyZWIyZiBweTNrCis4NzIyMiAyNjJiYTBhYjRlMjFlZjFlNzljNjAyYzM2NmU4MDA4MDhmYTE1NzE0IHB5M2sKKzg3MjIzIDdmOGNkY2ZiYjA4ZTE4MzVmZGQ0MWQ4NzBkMWYzYzBlOWVhNWUyODcgcmVsZWFzZTMxLW1haW50Cis4NzIyNCBhYzhkYTU1Nzg0OTNjNGQ0YjAwOWI1OWViYTVmYmFkN2MwN2IzYzQ3IHJlbGVhc2UyNy1tYWludAorODcyMjUgYjA4NGI1MGU0YWE2ZGM5MTgzZGMwZTgyNzY0ODdkOTU3Njg4YjgyZCBweTNrCis4NzIyNiA3MWZiMDMyNzRhODljYzNhNjk3OWNjMTRkNzY3M2M3YTYxNTExNTRlIHJlbGVhc2UzMS1tYWludAorODcyMjcgOWFjODY5OWQ4OGQ2MWRiMzFkZGQ0ZWUzYjVhZGRlNDQ5NTMxM2FmZCByZWxlYXNlMjctbWFpbnQKKzg3MjI4IDZmNDZhZmM1MTQzNGNhODkxMDk2NzlhMWE4ZjI1NTIyYmIwYzY1YjkgcHkzaworODcyMjkgNTliNDNkYzM0MTU4NTI5YmEyMDhkZWRlYmRkNzNmZGNlMzgxYTc0ZCBweTNrCis4NzIzMCBkYTIwZTdhMDFmYTYzYTZkOGFiMzRmMjEwZGExMjhjZTQ0MTU2NGVlIHB5M2sKKzg3MjMxIDY5Yjg1OTY0ZWM4ODgzODAwOTE5NzlhMTc1ODA2N2IwNGZmMzc2NzAgcmVsZWFzZTMxLW1haW50Cis4NzIzMiA4Y2NmNThiMGE1ZGE3NzYwMDZkN2ZjOThkOWU2OTc1YzgyMjY1YTc4IHJlbGVhc2UyNy1tYWludAorODcyMzMgNzY3NDIwODA4YTYyYWVmYTMxYjRjYWFkMWY2MzAxNGE1ZWI3ZmMwYSBweTNrCis4NzIzNCAwNzJlZTNmNzQzYzIxZjM3NzBjY2YxM2FkNDhlMTBhMTgwNDgwNjNmIHJlbGVhc2UyNy1tYWludAorODcyMzUgYjA2NmJkMGI2NGU3Y2Y2ODQyZjg4ZDk4NmZjOWMyOWQ3YzM1MmI0MyByZWxlYXNlMzEtbWFpbnQKKzg3MjM2IDEyMzgxZjE5ZTJhZGZjOGYxNjg1MGU5YzY1YzZjYTY3MTY3MDI4YzEgcHkzaworODcyMzcgMzExMGQ0YTQ4ODc4YjRkNTE3YzIwMzAyNGI3NmEwYzY3Yzg3ZmM0MCByZWxlYXNlMzEtbWFpbnQKKzg3MjM4IGYzYWQ1MmY2NmI4YTQyYTU3OTM5MzJjNzIyZDA0OWY4OWMyNmVkYzggcHkzaworODcyMzkgNmFmYmU0NjEyZDQ5NDNiZjdkZDNiNWQ0ODViN2I0ZTI3OGM1NTk5NCByZWxlYXNlMzEtbWFpbnQKKzg3MjQwIDc5YTJiNmExMjgwNTExZGZiZjNiODg1ZmEwMGFlODY3MDg0MDgwMTEgcmVsZWFzZTI3LW1haW50Cis4NzI0MSBkMThmNDMxM2IxOTdlNTZiMmIyMjFkNDM4MTY4MjgzYjNjZGYwYmE4IHB5M2sKKzg3MjQyIDc4M2YzMTFjYTg2OTNjZWUwMzJkZmRkNDc5ZGE1ZTYxYjA1MWRhNWUgcmVsZWFzZTMxLW1haW50Cis4NzI0MyA4ZDcxNzFiM2NkZDY5YTczODc4ZWFjMDk0MDg5ZDBlN2ViMzRkZDUwIHJlbGVhc2UyNy1tYWludAorODcyNDUgZTE1NjUxOWExYzYwMzc0NGY3MTcyZWVjN2Q3Nzg0NDllMmNkODkxNSBweTNrCis4NzI0NiAzOGFhYTcyYzAxMzFhOTU2OTI4MDE2NjE1MzIwMDcxODkwMDVmMmY4IHB5M2sKKzg3MjQ3IGQ2Y2NiZDNmNWI0NTUxY2U0ZmUyZDNkMGYwMzRhNzZlOTY3MmRmZjYgcHkzaworODcyNDggNDBmNTQzNjM2ODQ2Yzc4YjZjMGJjNjE0OTZiZjYxODQyMWUxYTMwMiBweTNrCis4NzI0OSBmOWQwOTU1OTZlYTk2NDAxZGQ5MjA5MmE1OGY5ZTlhOTQwM2U3MDVhIHJlbGVhc2UzMS1tYWludAorODcyNTAgZDcwOWQxMTRjZGUzYzA1YzRhMDc0NTZkY2NiY2QyNWFiNWNhMGM0NiByZWxlYXNlMjctbWFpbnQKKzg3MjUxIDUzMWY0MjNiMDE5ZDMxZjUxZTBhZGM0OWE2ODBkYmExOWZiZTI2NmEgcHkzaworODcyNTIgN2MzNzE1YjEwY2RkNDViZTJiZWY2YjIwMjhkMzA5ZGM0N2IxNWViZSByZWxlYXNlMzEtbWFpbnQKKzg3MjU1IDRlZTQwODZkZDFiNzQwNWQwYmMyODg4ODk3NDYxZDZmNTdjZDFkYWEgcmVsZWFzZTI3LW1haW50Cis4NzI1NiBhNjE1NDQ3NzhmYTc0MWM5ODU1ZjkxNWE3YmNhNzZlOTQ0ODNhMjgzIHB5M2sKKzg3MjU4IDFjMDI3YTA4M2E2ZTkwYjdiMzlmYjcxZDc2MjdiN2RkODZhMWRkMGEgcHkzaworODcyNjAgOGU3MDFiZmZlNmUyYzBiMmUzN2E4MTlkZTJmMDdjM2NlYWRlNzgwZCBweTNrCis4NzI2MSAxNzg1OGFiMmNkOTJhNDgwOTg2NDljMDQ1YjQ1OGNmNjcyOTRhZDZiIHB5M2sKKzg3MjYyIGNmYjdmNjMyMmZiYmJhYWJmZGQ5ZWI3ZDkyM2UwY2JhMGUyM2M3MGUgcHkzaworODcyNjMgNzlhOTBmYTA3OWE4YmYxODAyN2QxNTI3ZmUxNmJiYzQ4ODkxYTk0ZiBweTNrCis4NzI2NCBhYTQyOGFhOWI2OGIyYTcyMjc3NTYxNzVjMjAxMjQ3NmI0YTc0ODk4IHB5M2sKKzg3MjY1IDQwMTI1Y2RkYWZiOTA1MjlkMTJlZDA1ZDkxZmIzNDNkYTk5NmFiNWQgcHkzaworODcyNjYgYTk2YTJiY2NkZjhhMjdhMTIzYzY3NzZlYzIxMzI2OWViZmE4MzJlMiBweTNrCis4NzI2NyAwMTlhZDlmMzJjMTNlOGFiYWEyNzBkZjExMDg1Y2RlZWU0Mzc1ZWUwIHB5M2sKKzg3MjY4IDQ3MTYzMDg0MDQyNjNlYjE5YzUyY2UyOTZhOGE0NjgwMDYxNTE5Y2EgcHkzaworODcyNjkgYWZlNWY2YjFjNzY2Nzc3MWMxYTgyOGQ5NzdiMmVmYTg0NzZjZTAxZCBweTNrCis4NzI3MCAyM2RkYmQ4MzU5NTBiODljMTk4ZDY2MDk1ODIxMmUzZTUwZGYyOTUxIHB5M2sKKzg3MjcxIGEwZmNhZDkwNzBhZDFjN2M5YmMxMjJjNDZhZWJiMWFkNDY4YTU0MjQgcHkzaworODcyNzIgNmRhMzdjMzRmOGEzMDMyNDBlOGJkYmY1MWExN2IxZWJiY2JhYTNhMSBweTNrCis4NzI3MyBiNTgwOTI3ODcyMTM3NzQ0YjE5YWNmOGYyZjNiOTYzY2JlZmJhZWQyIHB5M2sKKzg3Mjc0IDRkY2VjMTQ2Yjk5ZDQ2ZWVlNDVjNDUxN2M4NGQzYmE1YzkwN2YwMzggcHkzaworODcyNzUgYTI4ZTg3MjExMTdjMjZjNDc4NjM3ZjdkY2ZkOTE2NWI2MjlmZWRlNCBweTNrCis4NzI3NiA5YTJlNTZkMTE0NmRmMjgzMGM5ZjY3ODRmYWJiYTQ0NThkNDY2ODU4IHB5M2sKKzg3Mjc3IDJkMjk5N2YxOWU5MGM1OTg2YTRiMjg5Njc4NDQ5NzQ5OGY4NmE1ZTYgcHkzaworODcyNzggMjYxMzE4M2VjMDI1MWIwYzg3YWYzYTBiODY4ZmM5NDM4ODUzZmNkNSByZWxlYXNlMzEtbWFpbnQKKzg3Mjc5IDViNDQwNTkyNDdkYjYyYmE4OGY1ZDc1YzMwY2YzMDlkNmY5YzVhNWQgcmVsZWFzZTI3LW1haW50Cis4NzI4MCAwMGY3ZjUxY2U4YmE1OTQ3YjEyMjU1OWY2NmExNzc1ZThhZmU2NDgyIHB5M2sKKzg3MjgxIGZmMDdhMDZmNmQ2NWQwYTMwMTY3ZTkxZmIyNjdhMjc5MGE0YzliZmYgcmVsZWFzZTMxLW1haW50Cis4NzI4MiAzYjVjYzY2MzhmM2QxMGQ0ODE2NWQ0MGJmNDMxYWQxZmUwZjhiNjEzIHJlbGVhc2UyNy1tYWludAorODcyODMgNWVjMmMyYmZhZGVkNTIzMTBkYjEyZjJhYzA4ODM1OTc3MGJkMDU3OSBweTNrCis4NzI4NCA5Y2MxOTc4ZWM5ZDQ5OGM0OTEyMzNmN2E1ZGMxZjRlNmVlMDA5Y2VkIHB5M2sKKzg3Mjg1IDliMTU5NGMxNTQ0YjdlY2M4NzQzNDY2ZTcxYzA3NDIzMTYzMzEzYTUgcmVsZWFzZTMxLW1haW50Cis4NzI4NyA4MGUzYWQ1YTYzMWQ1NzUzYTMwZDcwZGI5ZmMzYjIxNzZjMjkyNDNmIHJlbGVhc2UyNy1tYWludAorODcyODggNGFlMmMyMTExNmYxZGYzZGRhOGRjMzA2MGY5NGVhYjc4M2VhZDA5OCBweTNrCis4NzI4OSA3ZjU0OTkwOGJmNTAzMmE5ZmE0MDJkN2M4MmFkNmQxY2U2ZGZjYzlmIHB5M2sKKzg3MjkwIGE1MWE0ZjVlODdlNDllMjNiMDg2NTU2MGFjYWRiNTllMjUzYmI1MWMgcmVsZWFzZTMxLW1haW50Cis4NzI5MSA1Njk5OTQ5NWE5YmFjNWJiNDViNTcyNzM0MTI4N2MxMWU2MTJlZDcxIHJlbGVhc2UyNy1tYWludAorODcyOTIgYjc1MGM0NWE3NzJjZThiZDk2MWUxNTYzYjdhNDUwNDM2NjhmMjY2NCBweTNrCis4NzI5MyBmNTljZGE1N2E3ZmE4MzM5NDA4MmU3MGZhNWRlOWQzN2JkMWViNjRhIHB5M2sKKzg3Mjk0IGFkOWI1YzVkMjgzMWY0YmQwMjVlYzE2ZTZjNGYzNDlkYzQwZjliYWUgcHkzaworODcyOTUgZDJkNTI2ZGIyNzczNmFjYmJlNDBhODdkMjhjMWIzZjMxNWY5NWNhYiBweTNrCis4NzI5NiBjYTdhNWQxMjdkNTdjZGQ0YWU2MzYxNTllYzg1NzZlMDA5Y2NlMTlhIHB5M2sKKzg3Mjk3IGVjZDI4ZTg0YzQ0YjBmNGM0ZTc3Yzk2YjUyOTcwZGE4ODBhZmQ0NDggcHkzaworODcyOTggOWMxZmNlZGVmMmMxOWQ1ZjVmOTljNzExYzBhZWM2MTYxNDFiNDU4OCBweTNrCis4NzI5OSAzZGU2Y2Q5MDI2MjRjN2I5MDhmMGUwYmFmMGE1ODRlN2Q3MmMyZDUzIHB5M2sKKzg3MzAwIDNmMTc1MmQ0MjUzYmIxM2ZkOWExOWFmNTNhMTA3NWJkMTliZDZhNTkgcHkzaworODczMDEgMWFhNGU1Y2E5MTc0MjE3NDM3ZTE5ZGNhOTU2ODU0ZmUxNmM5YTkxZSBweTNrCis4NzMwMiBkZTViOTBkYWFiYjQyZTEyMTQ3Yjk5MzEwNjg1NzNiYzFmZDVjMjlmIHB5M2sKKzg3MzAzIGUwOGMyMGE2N2Y2NDdmZWFkODc4ZjMyMzdkODcxMDI3NjU4OWI1NmIgcHkzaworODczMDQgYTYxODI4N2VhZmQ2NThiMTlmOGIwZTY4ODE3NjNiMTMxNTFmMDIyNiBweTNrCis4NzMwNSAwMDM3ZDY1ZGViZDhkOThjOWU0MTI3ZTdhMDA5ZmFmZjMwYTlhMjIwIHJlbGVhc2UzMS1tYWludAorODczMDYgN2U4ZWI2MzRmMGE5MWM1NDdlODdlZjI3NGIyMDkyYmNmZDAwYzBlMSBweTNrCis4NzMwNyAyYWEwNTBhNDRhYTgxZjQ2NTBhNzVlZDcwYTMxZGIzMGMxOGNmYjdjIHJlbGVhc2UzMS1tYWludAorODczMDggNTllMjMwMjk3YmZmYWRkZDRkMzZkM2VjOTliZjBiYWNiYjYyOWI0YyByZWxlYXNlMjctbWFpbnQKKzg3MzEwIGQ4NGVjODU2MDBiMWE5ODA0ZDZiNTRlOTUyZDU4MDVjNjlkMDgyNjYgcmVsZWFzZTI3LW1haW50Cis4NzMxMSBmZDcyNjE0YjkwMzIxMDFhNTdhNDNhNGIwMGY3OTMwZDc5MTI4MTg3IHJlbGVhc2UyNy1tYWludAorODczMTIgNGMwNjE5YjgzMmUxYmNlM2UyNzZjM2NiMGZhMjRmN2U0NzJhNDQ4OSBweTNrCis4NzMxMyBkOWI0NDI2NDc5YWM2MTc4ZWU3YmU1ZjdiMDIwYWUwM2FlMjgzZWM3IHJlbGVhc2UzMS1tYWludAorODczMTQgYzY4ODNlYzQ4ODgwNDJiM2Y4MzAyZDgxMDZlY2JlM2E4ZGE1OWFmNyByZWxlYXNlMjctbWFpbnQKKzg3MzE1IDViOTJmYjAyZTgzYmM1ZmM5Yjg3MDViN2I2ZjA3YzBlMjBhMTE3ZmMgcHkzaworODczMTYgYWI2NTAwMzM0NmMxMWExNTFjNTJiMGQ3YzJhNDg3MDI5ODAyNzJhZSBweTNrCis4NzMxNyA0MzZiYmM3ZjBhYTY4YWE3NTY1OTVhMDY1NmEyY2Q0ZDA4ZGYwN2U4IHB5M2sKKzg3MzE4IGRjMzI3ODhmMGU0ZTMyNThiYmQ5OWU1NGY3ZDVhMTZkOTBmOTNjN2QgcmVsZWFzZTMxLW1haW50Cis4NzMxOSBmYzJmMGM4NmI0OTdjYjkzOGQ1NGJkMGNiY2EwODZmNTVlODNlZWE0IHJlbGVhc2UzMS1tYWludAorODczMjAgMmM0MjlkOGM1ZWUyMDJhMzcyMzgwM2Q2Mzc3Y2ZmNTg0NmI2MGQxMSByZWxlYXNlMjctbWFpbnQKKzg3MzIxIDg1YzJmZTMxYjExZWMwOTg0NmRlY2VkYmM4NWQzZDY2ODdkZTc0OGYgcmVsZWFzZTMxLW1haW50Cis4NzMyMiA0ZDJiNDI4ZDc4ODIyNThhNDFhNDc0YjhmYjNmMjc2MWMwMGZiMmEyIHJlbGVhc2UyNy1tYWludAorODczMjMgZTlkOTI0ZmUzN2UwM2EzMDVlNmE2ZWNlMmI1NjhkMmZjZjU4Y2QzNSBweTNrCis4NzMyNCBlYThmOTRjZTgyOTMyNjk2ZGUyZWNlYzM2ZjJkMmFjZDU1MGYwM2U3IHB5M2sKKzg3MzI1IGFlZDJiYmFmYTU1MGU5ZGZkZjQxZDMyMjg1N2YwMjRiNzViNGM3NmQgcmVsZWFzZTMxLW1haW50Cis4NzMyNiAyMzkxY2UzNWFkNjk3ZjJiMjY0MzcwNjNkZWY5ZDg1YTk1ODYxNmRjIHJlbGVhc2UyNy1tYWludAorODczMjcgOWJmZDZhYmYwMWNhMjljZGU0ZmJlZWM5MGY4ZTI0ODc5N2FhN2Y3NyBweTNrCis4NzMyOCAwNzRjMjE3MTRhMDI3OGU0ODI5MzQ5NWMzOTk0NDFlMDU1ZTQyMTJiIHB5M2sKKzg3MzI5IDBjMmE3ZTU3ODVjODYxMTJjY2RhYTVlMjk4YmM2MmQxMTk5ODI5OTcgcHkzaworODczMzAgN2E1NWI4MDhlNDkxYzEwMjc2NjIwMTE1NDI0YTI2ZDllMjJjZTczMyByZWxlYXNlMzEtbWFpbnQKKzg3MzMxIDY5YjNhMTUxYWVjNTc0MzIxOTNkMzZlZWI5ZmYzNGNlMzliZThlNTUgcmVsZWFzZTI3LW1haW50Cis4NzMzNyAwNzExM2QxZWY4ZTUxYTUyZmQ1NDdkZGE2NzEwZjE1YTYzMjAzODI5IHB5M2sKKzg3MzM4IDYxOTM1YzhkYzA5ZTBkYjVjOTY2MjY1ZGZiODA5NDQ1N2Y1YTVlNzUgcHkzaworODczMzkgMDE2YjQyNWYwY2QwY2U0NGViMzRmYzM3NTYzZGZmMGM5YmJmMjI0YiBweTNrCis4NzM0MCBiNmQzZmU3MDgwMmYzMjkwZDYzYWRiNWI5OGZjYTdiNGU0MDcxZmRjIHB5M2sKKzg3MzQxIDVhNmExY2EyNGUwNGNmYWExNWY3NzEzYmI3NzQxM2I5ZjUxMzk0ZDUgcHkzaworODczNDIgYzcwYWEwMTFjMDU5ODVlNDYyZWJkZDQ2ZmUxOWY0MjBjNDZjYWY1YiByZWxlYXNlMzEtbWFpbnQKKzg3MzQzIDM0MWI5M2Q4MzE1NzFkODQ4YWNhZTZkYjE4M2U3NGRhZWUwYjY0MjMgcmVsZWFzZTI3LW1haW50Cis4NzM0NCAyMmRiNGQyZjY1NTQ5ODk5OWRhNTI4ZWZjM2NiMzlkMDQ1YTI1YjA3IHB5M2sKKzg3MzQ1IDA1NTBhMjQ0N2MxZTYzMWEwMzlhNzQ4Y2Y5Y2U5N2I2MDc5YmE0OWEgcHkzaworODczNDYgM2EyOTUzZTIxZjc4NTczNDY4N2YxZDdjOTUzOGEyMWNlZjNlNTQ2YyBweTNrCis4NzM0OCA1YmJmNWI2ZDM2NTgwNTI1YzQ3YTVjN2JiNzNhMWUwY2E3MmI4NzI1IHB5M2sKKzg3MzQ5IGFjOGM2YzdjMGNiMzU2NzU0ZDlhOTQxNzVkZjA0OTc0MWY3OTVkZWEgcmVsZWFzZTI3LW1haW50Cis4NzM1MCA4OTIyMzYxMzdkYjk2MTgxMmI0OWVhOWNmY2Y1YzBlMWIxNTk4ZWU5IHB5M2sKKzg3MzUxIDQzYmM1OTIyZjI5OTA2NDVjNTEzNWZlNjNlNjA2MmY5MTY5ZTdlMmQgcHkzaworODczNTIgNjFiYzg2MjY2N2U2ZTNkOWYzYjEzYTU1MWM0MjE1MmMwM2RjYjlkNyBweTNrCis4NzM1MyAyNmMwZjc2OWU5YjQ3MWQxYjkwYjc3NTlhNmJiN2I1OWYwZDc1YTExIHB5M2sKKzg3MzU0IDI4NzE3ZGU0YzU2MmNjM2E5ZDFhZjNkOTc2N2Y2YzA4ZWQ5NGY1NGIgcHkzaworODczNTUgNDA5YmEyNTA4NzEyMjg4NGVhMDY2ZjhlMjM3NWYxYmMzYjk2Nzk4MiBweTNrCis4NzM1NiBhNWVkNGExMjQzMGFhN2IxZGY4N2QzYzU4NTBlYzA4N2RiMTQzYWUzIHB5M2sKKzg3MzU3IDg4NGIxNGVkOGY1NDNkZDc2YTEwNzQ1NThjOGE2YjE0N2MzNzJhZWUgcmVsZWFzZTMxLW1haW50Cis4NzM1OCA2OGE0MmI5NDRmZTM5OGFhNmI0OTQ0YmNjOWMwZDIyNTA3NDlkMGRlIHJlbGVhc2UyNy1tYWludAorODczNTkgY2QyN2MzYzQ0MjM0YWZlZTVhNTQyYjE4Y2Y0Yjc3OGE5ODM4Y2E0ZCBweTNrCis4NzM2MCBhMGE5OTVlMGU2NDAxOWY2YzBiODYxNTI5OTk5ZmE4OGY1MmQxNmEwIHB5M2sKKzg3MzYxIDc4YzE1MjI4OGY1M2E4ZmQzM2MzZjZlNDQzNjllZTJjOTgwYjRkOTcgcHkzaworODczNjIgNGMwNDI2MjYxMTQ4MzFmNzFkZDcwY2QyNDNiZTU0Yzg3MjIwOGJiMSBweTNrCis4NzM2MyBiZjM2ZDZiZGRlNjBiNGFmMDUwYjNlNWQ5YTRjYmE3YzIwNWVjNWNhIHB5M2sKKzg3MzY0IDljZjE1MTJmODgxMmMyMDAxZTBlNzUxZDZmOTJjZGM1YTIwZmY2YWUgcHkzaworODczNjUgYzdhMDUzN2M3ZjNjMjg2NzA4ZTVmYjI0ZGJiYjk5ZWI3M2Q4MjI4NiBweTNrCis4NzM2NiBhMDY2NDdmZjVkOTgxOGUxZmQxOWY1MDA2YzU0OTAyMDk5NGNlNzk1IHB5M2sKKzg3MzY3IGU2NWNkMjFkNWY3MzE0ZWU3YTUxMDg0NDFjYTk2NDdhNDViYWJmZTAgcHkzaworODczNjggZmU3YThhMWJkZjNkNmJjNzIxMDMwMjYyNjJlYWFmNzYzMzg3NjVhZCBweTNrCis4NzM2OSA3MmY1MzZkMTA3NTBmNGI4ZjE0ZDNmYzQ0Y2JiMzFmOTAwNGZjZWFiIHJlbGVhc2UyNy1tYWludAorODczNzAgNmZlOTRmYzAyZmM3NThkMzBlZDc0ZTVjODExM2UyZjY3NWM5MTJjZiByZWxlYXNlMzEtbWFpbnQKKzg3MzcxIDdhYzAzZWMzYjI3OGI5NWQ5NWIzNTliNmFjMDk3MjdiZmFhMWMwYWEgcHkzaworODczNzIgOGFkYjc1YzY5MzA0NzI4NzRiYTEzNTYxMGYzNmIyNWYyNDA0NjRmYiBweTNrCis4NzM3MyAwYjk0NjM1ZWQyZjZmYTg5MzkzMzljNDI2Mjg0NDBhMzM2MzY2NDE1IHB5M2sKKzg3Mzc0IDQ0MDEwMDM5YmRkZmE2OTlkNDhhZmFkNzVhNzVmNjgwYzM1YWI1YjkgcHkzaworODczNzUgMzgxNTU2MzY5Y2FmNmEyZWYzNGRlM2IzYmE5MDc5MTZhY2I2NWJiMyByZWxlYXNlMzEtbWFpbnQKKzg3Mzc2IDVmNDlkM2NiMTk0Zjk3MGQ1MTE5OWQxYzM5ZjMzOWU2ZGRlMGY4YjggcmVsZWFzZTI3LW1haW50Cis4NzM3NyA3MzY5NjRmNzA4ZGVjMjM4ZmM1MWEwNzNmMGNhOWFkZTA0NTAzOGIyIHB5M2sKKzg3Mzc4IDI5ZGI5N2MxNzZjOWNkOWQwMTUwMWEyZmEyNDc0YmY0YTk4Njg3M2MgcHkzaworODczNzkgNTE1ZGUyMjc3MDAxODRkMTNlNzRkMTlhNmE5YjcwZTU4YjU2YzJkMyByZWxlYXNlMzEtbWFpbnQKKzg3MzgwIDdhNDg1OTBhZmQ5MmU0YmY4ZjJhODFjNThlZDg0OThjNDdkYzg0MWQgcmVsZWFzZTI3LW1haW50Cis4NzM4MSBjMmQ1Y2QwMzJiYzkxNjFmOTQyNWJjOTQxYjljYWQyNGVjZGE2OTk2IHB5M2sKKzg3MzgyIDNjMTgyZjcxZDRjOWM1NjYwN2VhYWZlN2M0YjY1NTdhMGZmZTM5N2UgcmVsZWFzZTMxLW1haW50Cis4NzM4MyA5NjUzMTRmMTJmNzE5ZGI5YzNlZmE1MjIwYWY2NGZiZWQ0YjUxZmMwIHJlbGVhc2UyNy1tYWludAorODczODQgOTM4NWM1MzZmNDU0ODAyNzk3MTJlZGFjODZiYmQ2M2I4ODc2Mjg1NiBweTNrCis4NzM4NSBlZTliZGFjZDNjYjYxMDA5OTk3OWI5YzcwYmJlMWRkZjc2MTEyMzMwIHJlbGVhc2UzMS1tYWludAorODczODYgMGFmOTRmOTc2ZDUwMThmZDJjNWIwNmJjZjViODQ5NGY5MzEyODZkYiByZWxlYXNlMjctbWFpbnQKKzg3Mzg3IGRhZTUxNzZkN2I3ZjMwMGMyMmUxYjAwZDYxOTI4YmE0MjdjNDlhYWUgcmVsZWFzZTMxLW1haW50Cis4NzM4OCBkMTZhZGQ1NmRhYzAzNGI5ZWNjZGEwYzhjYTY3YmVlZjlkMTA0YjE2IHJlbGVhc2UyNy1tYWludAorODczODkgNTUyYmFjNzU1OGU3NzkyYjBiNDFiMTdlNjhmOTgwN2Q5ZTViYTQ1MiBweTNrCis4NzM5MCA0ZTIyMjAyZTYyZjgzY2QxMjMwYTJhMGMzZDNkZDE4MzI3YzIwOTg3IHB5M2sKKzg3MzkxIDlmYjg5ZmFhNTk1ODMzYTIwMDQ5ZDM3M2M1ZDJiOTRmYmNlY2MzYzMgcHkzaworODczOTIgNGUyYjg2MGU2NTdjOWFiYjQyZGJjMzVjMjQzN2U3NjIyNTA2NjJjMCBweTNrCis4NzM5MyBlNThmYTk4M2E5NGVmOGNmYzBhYjI1MWViOTZlZmEyMDE5NDFlZGNkIHB5M2sKKzg3Mzk0IDRmYWZlOTdkMGFkYmE2ZjA0MDMyOTIyZDUwZTA0N2VjMzBhZWJjNDMgcHkzaworODczOTUgNWI4MDI2ZmFhMGE3M2Q2MTc5MTU3NmY3YjVmNDdlYzg1MDEwNjJlZSBweTNrCis4NzM5NiAxM2I0YTBmNTJjMmMyY2JmNGRkNmQ2ZDMyZmNhZmZjNDI4Y2I2NTc1IHB5M2sKKzg3Mzk3IDdjMzBkMGYxMDI4YzRkMzc1NDZiNjUxODk1NTA2YmYyZTM4YjUzOGYgcHkzaworODczOTggNDdjYzQ4OTY1ZTUyNTM0OGJmZGJjNDRhYTkwY2MyZTRjMmZjYzE5MSBweTNrCis4NzM5OSA2ZjU2YjI0N2E3Y2QyODIzM2NiMDg3NTdmYTI4NGMzODAxZDMzN2Y5IHB5M2sKKzg3NDAwIGUzYWY1ZjNhNzkwNGMwZDUzNDNlYzk2MzNlYTY2ZTdhY2ZkMjNhNjYgcHkzaworODc0MDEgOWIyNjI0ODgzMGY2NWNhNjFkZThkNzYyYTFiZmZiYzk3NjBhNmJmYiBweTNrCis4NzQwMiBmYzk2YmQxOGJkYzYxYzU4OTI0MjAzMDAxNmRiMTA2YTA4YTQzMjg1IHB5M2sKKzg3NDAzIDZkNTYyN2EwNjY3NzhkZGQ5YjFlYjY2NTM3NmRkMmVjNGJhMjVlN2MgcHkzaworODc0MDUgM2Q4NmNkOWZjNTM0YWVmYWFmNTczNmNiZDQzYWVmOTg2YTg5Yzk0NSByZWxlYXNlMjctbWFpbnQKKzg3NDA2IDBjNGFmYzVmNTkzOGUyN2JlOTUwMjEzYjlhNTliYzkyZmVjNGRiYzUgcmVsZWFzZTI3LW1haW50Cis4NzQwNyA0N2RiZjNlYzFhZDdkODI5ZDE2ZDM4NDM4OGMyOWFiMzE3ZjNkNDJkIHJlbGVhc2UyNy1tYWludAorODc0MDggMjQ4OTRmYTdjNThjNTBjNWJmYTY4Yjc5N2U2OTIzZDEzZjVkMDE5MyBweTNrCis4NzQwOSA1MTc5NGFkYTY4MTBhZjQ5OGQ1NzIxYzQzNTZkMjZhMzA0YjI4MTdkIHJlbGVhc2UyNy1tYWludAorODc0MTAgMjJhMGVhN2Q5NzRlYjZkMjM2YmFhYTM5NDQ2MTQwZmFhOTdjOTAyOSByZWxlYXNlMzEtbWFpbnQKKzg3NDExIGY1NjdhNmM4NTkzNjQ1ZDg3NzY3MzRmMzViMzIzZWFlOGI2YzNiMzQgcHkzaworODc0MTIgZmNhYTk4N2NjZWEwMjA2MjdjNGYwZjc5NzY1NjcyMmYxYWZlMDU2MSByZWxlYXNlMzEtbWFpbnQKKzg3NDEzIDM2NzE5OGI3MzNjZGJiNDI2NmZhMTQxMzhmYmM4MDM2YjYzYTEwMjQgcmVsZWFzZTI3LW1haW50Cis4NzQxNCBiMTY4YjJjYzFiMjFkMmUyNDNhOGE2Y2U5MTE3ZWI2NWM2M2EzM2RmIHJlbGVhc2UyNy1tYWludAorODc0MTUgODE1YjY5MTc1NWZhMGJmYzI0NGIzNTI1NTkyMWQyNjVlN2Y0M2ZmOCBweTNrCis4NzQxNiA4Njg1NzExNTg2ZDQzMWVjNmJkNWQzNWMwN2YwMTRjYWNmMGFlNmI0IHJlbGVhc2UzMS1tYWludAorODc0MTcgNTY0YTQxNjY2ZWY2ZjRiMTYyNWM3NmRmNTJkNjFhMWVhYTNhMTk0OSByZWxlYXNlMjctbWFpbnQKKzg3NDE4IDhiNTNmMjU2MTU5YWEzYWFiODQwYWQ4ZDMzZTQzMmEyZjYyOTE1YTYgcHkzaworODc0MTkgNTJkMjljNzE1OGZlMjA3OTJhMzMxNDk2NzY0NWU3NzQ5MDMwNWIxZSByZWxlYXNlMzEtbWFpbnQKKzg3NDIwIGNkMWRlZTU1YWNlODRlZTY5Yzk2YWVjMTRjYjllMzU5OWQwNDY0ZjAgcmVsZWFzZTI3LW1haW50Cis4NzQyMSAyMDRiZjQzM2QzNjZhMzA3ZTQ2ZDlmYmNjMjk1M2Y3ZTJjM2RjMmQ5IHB5M2sKKzg3NDIyIDA5OGM5N2U5NWQ5MzE5ZjVjNzZlYjM4ZDZiODVlZDE0MjkzNjRlMDAgcmVsZWFzZTMxLW1haW50Cis4NzQyMyAwZGFmMzkxYTFmMWRmODY4ZDcwMGY0OWQ3N2ZlYmFkOWQzYmEwYzIxIHJlbGVhc2UyNy1tYWludAorODc0MjQgZDVjOGNlM2E3MGQ0ODk4ZDVmOWJmZjdlNDc2YjA4ZjJmMjA1ZTBmMyBweTNrCis4NzQyNSAyZjJkZTZjYzYyYzc4MDQ0ZDE2MDg0ODgxNTg4MWZiYzQyMGRlNWFhIHB5M2sKKzg3NDI2IDU3MmY3M2ZmMjhjMjIyZmU0MDJlZmNjOWM4NzA1OTVmYTM1MWM2ZjggcHkzaworODc0MjcgYTg0MjA0ZjExNmY4YjY3ZjRlMmMwOWE4YzdmZGM4MDFjYzgzMTI5OCBweTNrCis4NzQyOCA1Y2Y4NTU1ZTViZTU1YWUxMjQ2YTNlOTA1NTEwZjM5YWFjM2E1NzM0IHJlbGVhc2UzMS1tYWludAorODc0MjkgNTk1ZjI1ODgwNmVmZjBhZGJjYjVhNDU5MTY5MzQzODQ4ZGQxMTRmOCByZWxlYXNlMjctbWFpbnQKKzg3NDMwIDQzOGE0Njk4MDA0YWRkNTQ4NmNmN2JjNGJjZGM4ZDQyODM0ZWE0YTkgcHkzaworODc0MzEgNTYxZWE2NDAxODhiMzQ0ZDYwNGVjMGEyZGQxMzgwYWM0MTAyNThmNCByZWxlYXNlMzEtbWFpbnQKKzg3NDMyIDNmOTA1MWQ4NjYwMzI5MTkyNmFmZDBjMGZiM2UwMTQwNGEwNjc5NDEgcmVsZWFzZTI3LW1haW50Cis4NzQzMyA4ZTdkNGMzOTc0NTg3Y2QzNWI0NTk4YzIyNjM0MGNjMDM2YTY2NTQ3IHB5M2sKKzg3NDM0IDUzYTQxYTExNzQxMWJiYjBmMDE1OWJmM2ViYTJjZDVlYWFiYjBhZWEgcmVsZWFzZTMxLW1haW50Cis4NzQzNSBjNjNhY2U1YTUzNDZiYjBhOWIxNTIxMzcyMDkwNTAzMmE0Yzc2MDVmIHB5M2sKKzg3NDM2IGE4MmRmMjA5ODU4YTY0ZGZlMTFjZTE5Nzk2NmYxZDVmZTFiNDZkMzYgcHkzaworODc0MzcgNmZmNTBjZWY5ODRlZTU1OWIyOTk3N2Y0NDNhMjNmN2JmNTYwZGI5NyBweTNrCis4NzQzOCA5MjUwMmIzNjc0Y2JlYzc4Y2Y4MmIyMzBhZmRjYWZjNjFlNjMyM2ZlIHB5M2sKKzg3NDM5IDZmNDgzNDJlOWUzZGY2OWIyZTc2ZjE5Y2U2YjA0MjFmNTE0YjQ2NWUgcHkzaworODc0NDAgOTlkMTQ2M2VkYjU2YzFlZDc1ZWM4NTFjZDJmYzBjNjE3ZTRiNTlmZiBweTNrCis4NzQ0MSA4OWE0MTZmZDdjMjk3MDdiZDQxZmY4NDVhNzljMWVkNzZiMDZkYjQ0IHB5M2sKKzg3NDQyIDZhNjIzYTc2NzA2MjJjNzJjM2Q1NGQ4NjNkMmQ2ZDljNThlOTg3NjcgcHkzaworODc0NDMgZTIxOWZiNDEzNGUzYmQ3ZDZjODI3NzI1MzBiMzZmOTY0MWE4OTJjMSBweTNrCis4NzQ0NCA0ZGMyNDhhYzI2NGY1ODkwNDE4ZjMyNmE5MjVhMTJiOWRiZmU0YTFhIHJlbGVhc2UzMS1tYWludAorODc0NDUgY2YxOGQ5ZTUxYjlkNjAwNDMzYTNhN2JkZTNlZmYzZGU5MjVkYWIyMiBweTNrCis4NzQ0NiAzNmFjM2Q5ZDc0YzE1MDUyOWExY2NhNmU1NGE0MWVkOTJhMjVmNGNlIHB5M2sKKzg3NDQ3IDgzYmNkYWQyNTMzNWY4YjIxOGFhMTA1ZWI5YzM1NGQ5NDY5MjBhZTkgcHkzaworODc0NDggMTIxYmEwNGYwZmJiMTAxYWJiMzk3YWFiZTA0ZjZjZTllOGE2MmQ1YyBweTNrCis4NzQ0OSAyMTkyYmI5NWY1NGIwZGFlMWUzZjg5NTgwZGY4Y2U2ZDljYzMxODdjIHJlbGVhc2UzMS1tYWludAorODc0NTAgOTNmNTYxOTRjZjViODJjMzNiZTIzN2IwZjBiNDMyMzY4NmE0MTJhMCByZWxlYXNlMjctbWFpbnQKKzg3NDUxIDc2NTc5NmEzNGFiZTE4OGQwNDU5MzUyNmU2ZGFlNjY4MDNkODk0NTIgcHkzaworODc0NTIgODE5ODJhY2VkODZiYzk1YzczNWUwYmJmZTg3MjY4NzI4MTY2ZjQ1YyByZWxlYXNlMzEtbWFpbnQKKzg3NDUzIGI1ZDAzY2ViOGQ3OTA3OGUzOTNiN2E0MGMwNDdiNzg0MjE2NTgzZGEgcmVsZWFzZTI3LW1haW50Cis4NzQ1NCBkNGUwZGE3NjE4OGI2MDI2N2FiYTU4ZGM4M2QxZjNhZGFjM2JmYzlmIHB5M2sKKzg3NDU1IDNiNjE1ZWU3ODdiMGYwNjdlNDdkNGY3NTE1M2IyMTNlNTgzMzgwZTQgcHkzaworODc0NTYgYzM0YWM5ZjlkZTgzMTdkMzYyNmQ2OWMzZTE0NTVmMDM4NTIyNmIwOSByZWxlYXNlMzEtbWFpbnQKKzg3NDU3IDVjMDgyZjE5N2RkZjc3M2VkOWViMmExOTEwODc2ODU3MGRlOWM0M2EgcmVsZWFzZTI3LW1haW50Cis4NzQ1OCBmZGI4YjAyYzFlNjViMzUyM2ZiYmNlOGFiYTIwY2I0MjEyZjMzMWJjIHB5M2sKKzg3NDU5IGUxYmYzYzFjOTU2MTM0MjVhZGRlODVkOTdiNzM0ZWZiOWFkMmExZGIgcHkzaworODc0NjAgY2FmODlhNmExN2E3ZTg0YmEwZjRiYTJhMTRiMGZhYTMyYzQwNzBiZCBweTNrCis4NzQ2MSBjZWYyODE3ZWExNTcyNWU5NGYwOTI3NzVhMTQ5MGQ3MDU1NzA2NzI0IHB5M2sKKzg3NDYyIGQ1ZmFhOWZmZGYyYTkzMzg0ZTIyZGY4YzIyOTljNDNhMDY4Yzg0YTEgcHkzaworODc0NjMgMDk2NzMxNjIwZmYyYWVhY2NiNTQyM2U3Mzk3Y2VmMDM0NTRmMmE3MiBweTNrCis4NzQ2NCBjMzdkNmRiMDJjODRkMDNkYzY2MjYwZDNiZmJkOTUxMDY0NjQ1MmVkIHJlbGVhc2UyNy1tYWludAorODc0NjUgZDJjMjhhMzdmNzYzMDY3NTA0NDIwZTVhODg5MDkwNzAwZGQ3ZGMyNiByZWxlYXNlMzEtbWFpbnQKKzg3NDY2IDg5YWUyYzNiMDg1Y2MxYjM5N2I2MmMwOGVlZWRmNjdjMmMyZGE3MjggcHkzaworODc0NjcgNTEzMjQxNTRmODkzZjdiNTVlMTE5YmEwOGU1ODI5MWEzM2I4YjdkOCBweTNrCis4NzQ2OCAxYzU2MGY0YjVlNWI0OWQwNGUyY2NjMjJjYmU1NTkxMDRlNzA2NTg2IHB5M2sKKzg3NDY5IDk2OGRiM2U1YjFkODAwMDhmZTY2MjcwYzY2ODc4M2FmYTYzOGZiYmIgcHkzaworODc0NzAgNjE4NzY2MWNkYzA4OGJjMmIyMDE2NjBlMzdjZDlhZWM5ZTI3M2YxYiBweTNrCis4NzQ3MSAzOWNlYTk4MDkwNWQzZDJjMzFlYTczNTY5MjYwZDQyODhkMWI2Yjg0IHB5M2sKKzg3NDcyIDJlOTY3MGQ2NzAxNzMxZTVjZmNiMzA4NmY2YzJmZGFiMTM2NmRmMmMgcHkzaworODc0NzMgYzUxMGMxNTA1Y2U3MjM0ZWIwMzlmNTAzZWExZDY2OWEzYzliMTY1ZSBweTNrCis4NzQ3NCA1NzAxYTgwODQwMDE5MTdmNmZhMmZjMTZhYzllNzdlYjQ3NDE1ZWZjIHB5M2sKKzg3NDc1IDg0YzFkMjY3OTcwNzhmZjhmMDA5MjE3MGRhNzM2MjNkZjdlZTE0ODQgcHkzaworODc0NzYgMmQ4MmNkZjYyYjJjZGUyZmQ1ODUzNmNhNTc3MDQyYTU3ODQ3NDZjOSBweTNrCis4NzQ3NyA2YzhhMWMxMTc2MWI0ODkxMjQyOGQ1ZWEyZGQ2NGQxNTkyYTRjMDM1IHB5M2sKKzg3NDc4IDhlOWE0N2RiMzkzY2VmYmUzODM0YTQ5MmNkODY4N2NiYmU4ZjRhZTggcHkzaworODc0NzkgZWQ4ZGY1YTkwY2YxOTYyNTA1OGQyMmQ5MzZkMWQxNDRmOWQ5NjI0MCBweTNrCis4NzQ4MCA5NTAzYjA2NjI1MmRkYjE3OTliMzhhMjEyOTljNjE4MDFiZjRiMzI5IHJlbGVhc2UzMS1tYWludAorODc0ODEgZDUxYWZlNDdkZTczMmE0MGJlNWQxNTlmNzRmMzllMzEwMmNlYTcwZSByZWxlYXNlMjctbWFpbnQKKzg3NDgyIGZhNGRlNjZjN2RlZWIzYzdjOGZlM2JkMTk3NGUzOTA5ZDdjYzQzNDYgcHkzaworODc0ODMgYzU2NmM0MTMxNDM5ZjE3NzhmMzE1MzBiOWExMGRkZjc0NzFkYjk3MSBweTNrCis4NzQ4NCBhNjdiNDJiZmY0NzE4NjI3ZmZlMzEzMDk1NDVkZDAyNjFmMWMwZWZjIHB5M2stZnV0dXJlcy1vbi13aW5kb3dzCis4NzQ4NSAzOGQ2Njk4MDE4N2UyODQ2NDViMDgxZTZiMWYyYjE5Yjg4ZmVjZDg1IHB5M2sKKzg3NDg2IDY3OGQ4MzM2ZjRjM2RjNjZlMzU3M2MyODU3ZGE5NDkwNTZlNTY3OWIgcHkzaworODc0ODcgMWIyMTYwYWQ0YzZlNGE2YjkxNzYyYjQwZGJhZGE5MmYxN2I2OWQ4MCByZWxlYXNlMzEtbWFpbnQKKzg3NDg4IDQ4OGVkNTUwYjdmODg4Y2VmOGViMDViZDUxNzkzNDFlMTQyNTlhY2YgcmVsZWFzZTI3LW1haW50Cis4NzQ4OSA0YjkyNmExM2RjNTQyOGZhYWZjYmRlMWY3MGJlYzJlOWNjMjY2ZTZmIHB5M2sKKzg3NDkwIGEwMTUzM2IwMWI5YzliYzE2OGZlN2QxMDc1MDM2OTM3N2UzNmI0ZDkgcmVsZWFzZTMxLW1haW50Cis4NzQ5MSBkNWJiYzY1YmMyYjNlMDFhMzRlYWRiM2M2ODU5MDcwZDYyMGE0YmE1IHJlbGVhc2UyNy1tYWludAorODc0OTIgYzE3YTQ5OTcyMjQ0MTQ3NDg2YTc5NWZiY2RjMmVjYzc1Y2RmNmIwYyBweTNrCis4NzQ5MyBiZjA5ZWNmNjhhMTk5OTg2MWI3MWVhMTQyNjhiN2Q0NGY5ZDBjMzE2IHB5M2sKKzg3NDk0IDRkMjBhZWE2MDVjNWZiNDQwMGMzYjdiMTI2NzBiYjBjYjZlMTY2NmQgcmVsZWFzZTMxLW1haW50Cis4NzQ5NSBmYmJlZmNkNmExYTY5NWFkZmI2ZTBjYjQ3YTkzNGZkZTFmNGM0YzgwIHJlbGVhc2UyNy1tYWludAorODc0OTYgZjRiYTU0ZTBiYTc3NDUwNjMyNTY4MzE5OGM4ZWM4NTAxODA5NGJhMiBweTNrCis4NzQ5NyBjMmFlOTBhY2M5MDg4NTY2NjA4OWQ0YzVkNGUxMjc1MTY4NDMwMzgzIHB5M2sKKzg3NDk4IDEwOGJjMTI2OTMwZjdmOGYxMmVlYmNmNGJkNGMxMDllNzEyZTY2NzggcHkzaworODc0OTkgZTIwYTY0MzZhOTI3MGY4YWU3ZjUwYjI1ZDFjZTBlNDYyMGM4NzZkZiByZWxlYXNlMzEtbWFpbnQKKzg3NTAwIGRkNmQxZWNiZWI1NmQzY2EzMzJhZTJkOTIxMWM2YzQ2ZjRlMzBlMTIgcmVsZWFzZTI3LW1haW50Cis4NzUwMSBiY2Q2YTY1YjhiMjIzZTU1YTI5OTUzMjc1MzA5ZWExZmRkZDFkNmM5IHB5M2sKKzg3NTAyIDQ0MmYxZGEwMWE4OTgyZDRhZWM0N2ZkZjVmMjkwNGEyZjk0NDhjYWIgcmVsZWFzZTMxLW1haW50Cis4NzUwMyBkNGQzYzg5YWIzODhmMGM5NTFlZjQ4MjNhMzkyZmYyMjM0ZjIxM2I3IHJlbGVhc2UyNy1tYWludAorODc1MDQgOTNlOTViMmUxYTFhMjNiM2IxYjViZTljZWY2MmUwM2MzYTZlYTM4NSBweTNrCis4NzUwNSA0YmI3ZjdiMTUxZmVhOTQ5OGNiNTI2NzE5NzJiYzdjNzdkMzRjMTgzIHB5M2sKKzg3NTA2IDY2ZDg0NDZhMDE5YmU3Njc5OTQ0Y2MzYzkwNzZhZDk4YWY2NjI5YTUgcHkzaworODc1MDcgZjYxMTk2NDUzYzc4MWU3MDZmZWNiMThkZWIwNzk5Mjk3MWMyNGFkZSBweTNrCis4NzUwOCAyMmMxMmE1ZDhlZDMwNTE1NTI3MDU5YmM2OWMwNmQ3YTczNzZhNDkzIHB5M2sKKzg3NTA5IDVkYWUwNGQ0OWUxNWM5OWRlODU5Y2MyNTI4ZTIzN2MxOTFmNWZlZTggcmVsZWFzZTMxLW1haW50Cis4NzUxMCBjNjk0Njg1Yjc1ZTI0M2ExY2FhN2IyYjAxODhiNDNhNjZlM2JhYjkwIHJlbGVhc2UyNy1tYWludAorODc1MTIgNjY0NzA1ZGJmZTYyOTllMTlkMzAxM2I0NzJlZDA1OTE3NDI2NDBhMSBweTNrCis4NzUxMyBlZmRjNWQwZDgxYjcyMWMyOGNhNjNlODczYWQ0NjM1Y2VjZTllNjYwIHB5M2sKKzg3NTE0IGJiZjc1MWZkZjQyMDY3N2M1NGJkYzIzNDZlZmRiNmM3NzlkMmRlZGMgcHkzaworODc1MTUgMmQwOWFmNGMxMzdjOWM2ZjNjZjRiMTU1M2ZmZjVjNDcwNjQyODQwOCByZWxlYXNlMjctbWFpbnQKKzg3NTE2IDg5NTQ5NTM1ZDk3NTg3NDIzMGUyYjk5NWZlM2MxNWEyYzExMWQ4M2UgcHkzaworODc1MTcgNmYxOTYyMmRkMzQyYjRkOTJmMGM3ZTdiNTgwZjBjOWVjOGMxNmIyMCBweTNrCis4NzUxOCBmYzgzNGIzMjNmMjY3ZGQ0NGRmZTlhZTdlZjkxOTdkMjc4YmU1YWFmIHB5M2sKKzg3NTE5IDU2MDVmNjkyMGI2MzhlNDA4ZTliY2M1YmZiNTQyYmE0MDc1ZGVlYmEgcHkzaworODc1MjAgMzA1YWY2ZjVjYWJmOTRlYjQyYjk1NzA5NmJlMTI2Y2E5YTEyNDg4ZCBweTNrCis4NzUyMSA1MzIwOWQwMGQzYWIxOTJlNDY1YzM0NTc0YmE0ZDFlYjkzYzM2OGMwIHB5M2sKKzg3NTIyIDAwMDQwMTNhZTk4NGE5YzQxNTMwMzJlM2JiZTAwZTc4MGIzNmE2MjggcHkzaworODc1MjMgMTA5ZGVmYzFhOGNmYjJlMmIyZjQyMDczZDNkYTYwNjBlODAxMTIwZSBweTNrCis4NzUyNCAzYTQ4MTZjMzZkZjdmZWNkNzk2OTRlZmMyMWNkZjE4ZDk0M2Y4YzFmIHB5M2sKKzg3NTI1IGUwYzUyYzBlODU4NjIzMzBjZjIzMzVkNjZiZjRmN2YxYTM3OWE1NWYgcHkzaworODc1MjYgN2Q1NTFkNWVmNGZjZjQ2OThlZDYyY2E4ODUzYjc2YTk3MDk4OTlhZCBweTNrCis4NzUyNyBjZDZlMzQzZTI3OGU4YzI0YjEwOGE5MmNjNTA0YTY1ZDU4ODZjMTFjIHB5M2sKKzg3NTI4IDYxNDQ4Y2RjMGZhOGMwZjViMmUzMjdhODM4OTExMGViNzVjNmE5MDkgcHkzaworODc1MjkgZWY5MzUzMWQwYWM0N2M5MjFmZWYyOWU4YzA3NDlkNGM1NDM2M2UyNyBweTNrCis4NzUzMCAyZTI0NzZmYjgzZWZmOTBlZDdjZWYwNTNjYTI1MTI3NzQ0N2QwNTY3IHB5M2sKKzg3NTMxIDRhNzczOWM1Mjc0YjhhNWI4MmZmZDY0MTM4MTkxOTFiYzA0ZWY5YTMgcHkzaworODc1MzIgODgwNTg2YjhkMGQwMTU3YmFmNGQ5ZWQ2YjU1MDMwMmNlNDRlOGNmMyBweTNrCis4NzUzMyAwMTcxNGVmZGM2Y2YxMjA5NGNkNzBlNTQ4Zjg4MjdlNzM5NDk5OGNiIHB5M2sKKzg3NTM0IDhmY2I4ZjI2NTVhNTkyNDA4NTNjZjE2ZWZjOGZhNTFhZjIyYTc3OTUgcHkzaworODc1MzUgMTRmZDBkZmIxNmZmYzM2MjY5YTZhZDkzYjgyMjZkN2M5Mjc2NDM4ZCBweTNrCis4NzUzNiBmNTA5MTI5ODM0NjE3Yzk2MWFjMzc2NDNkZjcxYTM1YTI1MThiZjRhIHB5M2sKKzg3NTM3IGI5MDFkYTU2MWNkMTQwNzBmYmM3NjY0MjM1MmMwNDM4ZjM4MGVmYWEgcHkzaworODc1MzggYThiZTA1NjczZjM0Mzc3ZjBmNDEwNDk4ZmViOGI4YzEwNWMxYzhjOCBweTNrCis4NzUzOSA1YWE0MzNhMjc3ZjkzN2ZjNzhjYTJjZWUwMjdjNmVjNmJmOThhZmUzIHB5M2sKKzg3NTQwIGE0ZWMyMGNjOTA2NjY4MjFiMTY1YTk2ZGU2ODMwYzk1MjdiY2YzYjIgcmVsZWFzZTMxLW1haW50Cis4NzU0MSA1NGYxZDU2NTE1NTU3NGE3NzNiMzMxNTY0Mzc5MmM4MjI0ZTcwZDljIHJlbGVhc2UyNy1tYWludAorODc1NDIgMThiY2VlODU2OWJiMzdhNDRlMmJjYzllODUyMDM3YzBiYTI0OWY5OSBweTNrCis4NzU0MyBjYzc4YTZiZWZiZjJmMWY2ZWVhNGI1ODBmMjhhMTU5ZDdhODRkNjRjIHJlbGVhc2UyNy1tYWludAorODc1NDQgMDVjY2NkNDI1N2EyMmE4Nzg0MjkzN2ZjMjljN2ZmYWYxNzVjMzY2ZCByZWxlYXNlMjctbWFpbnQKKzg3NTQ1IDM1NDZjZTFhYTM1NWJjNjc0MTllNjViZDU0YTFmMmFhN2M0Nzc4NjUgcmVsZWFzZTMxLW1haW50Cis4NzU0NiA1MmE4NjE3NDYxMjk3YmI5NTk0NmM3ZjliYWU2OGEwNzA0YTFlMWZjIHJlbGVhc2UyNi1tYWludAorODc1NDcgNmNjZGIxZTAxNjExNTc0ZDFiZTAzZTlmZTUyMWI0ZWZhM2QyZjJhMyBweTNrCis4NzU0OCA2OTQ2MGM4MDU3MzdiZTgzNTFmNWNlYjJlNTBlYWY1NWViN2ViNDAxIHB5M2sKKzg3NTQ5IGI3YmU2NTJkYWY2ZWUzMjIyMDdiM2E0MGNhYmVkZTgxZGZhMDVjN2UgcHkzaworODc1NTAgNzdkZWRhYTM2ZDNhY2I4YWZjMzFjMzY1YjIxODdiOWJiOTNiY2FlYyBweTNrCis4NzU1MSA3NDFiOTNiYzY4YTViZWJlOGQ3MWVkYjQyOTBmNDY3MzA3Y2YyN2FiIHJlbGVhc2UzMS1tYWludAorODc1NTIgOTU1OWUxMTUyNTk1Yjk1ZGQyZDQxNzMyZjY1YjRlYTI1ODQzMjRmOSByZWxlYXNlMjctbWFpbnQKKzg3NTUzIDBkOTdiYjk5NDI1ZGVjYTFmYWNiZjkwNTI5MDhjY2FkYTA4M2YxZmQgcHkzaworODc1NTQgNWJiYzFkYzQ1OWE1ODFmNjc2ZDk1ODNiMjRlNmMyZDljNjcxZTViMiByZWxlYXNlMzEtbWFpbnQKKzg3NTU1IDFkZjIwMjFjN2MzYzQ3ZDJmYmFkMDhhY2JkNTAyYmJiNzBhOWJlYjIgcmVsZWFzZTI3LW1haW50Cis4NzU1NiAyNDk4OGY5Zjg1MGIxYzNlYTAxNmIxNjI0NzY4ZmI0ZjJlNjQ0YzEzIHB5M2sKKzg3NTU3IGZhNTk4OGY3YzhiZDI1NzA2NDhjNTRhMjA4NjA5ZjgzNGY3N2IwNTggcHkzaworODc1NTggMmE3NzNiZWY0MGMyMTE3NDNlMDRjNjViZmZmZWVkOGVjYWI3MWQzMSBweTNrCis4NzU1OSA2MDMyM2EwZTgwZDdjMWZmYTJiMzJmZTI0ZTNkY2QzYTJkODVmNmUwIHB5M2sKKzg3NTYwIDM3YTkxNWJkZjgyN2JhNTE0MjU2ZWViYjJkOGViYTI2MTJlMDc4YTMgcHkzaworODc1NjEgNDI3ZjlmMTU1MDQ4NWU4NDQyOGE4ZWZiOGQ3ZDUwOTUwNDJlNzliZiBweTNrCis4NzU2MiAyYjQwZTRjNzc3NzU1MzcyNmU3MjJkYzVjOGQyOGViZjk4NWFlMmUyIHB5M2sKKzg3NTYzIGIwZmFmN2E0NTIzOTUxMTQzNDAwZTc2MzhjNWFlY2U5YzZlOWVmMjIgcHkzaworODc1NjQgOGI1ZWViNWY0NTQ2NjRiYzdkNmRiNjgzNjcxMDcyZWI0M2M4ZjM0YiBweTNrCis4NzU2NSBlMmU1OWNiNGY1MGNiMmMyOWMwMDI3MTAxNjdhMmE0MjQxMGUwMmYxIHJlbGVhc2UzMS1tYWludAorODc1NjYgMDBiYjA0MDZiZmVkOTQwMWFhY2E0ZmZiZDM3OGVjM2IyNTIyZjZjYSByZWxlYXNlMjctbWFpbnQKKzg3NTY3IGFiNjFiYWIzMjFjMTAxMTk2NzAyMTdhYTFmNzkzYjBmODllZjA5MTMgcHkzaworODc1NjggN2U3MTZiOWE0MDNkMTQ5NDlkZjJhNGU5NWVkNjdiMjdmNjNiYTkxZiByZWxlYXNlMjctbWFpbnQKKzg3NTY5IGYwNjk3Y2E4YWQ0NzZkZDg4YWYzNmEyNjkyYjIxOGIyMmQ3MDU1NGYgcHkzaworODc1NzAgMmU1OTJhNGU2OGFiOGY2MDcxNDQ4YzBlYjg5NzMzODU1YWMwNDE0MyByZWxlYXNlMzEtbWFpbnQKKzg3NTcxIDJlMWRiYjI1MmYyNTc4MTlhMDEyOTNkNDdlNGRmY2Y4MmI1NTBhNjYgcHkzaworODc1NzMgMTBiODM2NjgzN2Q4MGRlNzM1YTFiYzIxMTQ5NDJlYjFkMWIzMjBjNiBweTNrCis4NzU3NCA0MWQ1YjZjYTE5MjNlZjlmNGI3MDc4YmYxMTM2OTllZTRiN2Y2ZmM5IHJlbGVhc2UzMS1tYWludAorODc1NzUgZThlNjRlYjRjYTRjZjU3ZjQ4ZGNlMTM2OTJhYTQ3YWYxMTgxOGE4ZiBweTNrCis4NzU3NiA5MTM4NjM0YjhiZDE0NjAyZGQyNWZhYWM1YWFhNGZjOGU3M2FhZjgzIHJlbGVhc2UzMS1tYWludAorODc1NzcgNGM4M2EyOWE3MTJmOTE1ZGE0ZjlmYmFlMjEzNzg4YmQzZTYwZmY0OCBweTNrCis4NzU3OSA4N2U2YmRiMzczZDEzZDU1Zjk4ZTZhMTBhMDM5OGI3NzJjNjM0N2E5IHB5M2sKKzg3NTgwIDE2MzE5ZjliZTk3YzRlYjlhMTVhZTMwODEzYTRkMWZkYzI5NWZjNzcgcHkzaworODc1ODEgNTRlZjUyZjk3MWE1MTk3ZjNjZTZhMDIxYTgzMDRlZGExYWJhYzNlOCBweTNrCis4NzU4MiA2M2JmODRjZmQ4YTYxNGViODU2MDAxMmM1OTBkYzRjOGZkNDQwZDI5IHB5M2sKKzg3NTgzIGYwYjU2YTM4YTUyNDNiZTAxN2MzZmZhOGNkMWFlZTNlNGRiNTg5MGQgcHkzaworODc1ODQgNDRlYjA5YTU1MzkzZjA3YmU5YTRiOWI4MWZiM2IzNzQ1NTIyMjcxYiBweTNrCis4NzU4NSBmMzdmOTZmY2U3Yjk0ZGE3ZjMzNzI5ZDVjZjc2NjRjOTJlYWY5M2Q5IHB5M2sKKzg3NTg2IGZkYjZiZDFkNTM1NGNlODM2ZTQ3MTQ5YzQwMGExNjg0NjI5OGJhNjYgcHkzaworODc1ODcgOGM3ZGYwMzU2MDM2MDIwZmVkZGEwNjg1Y2I5ZjNhMGYyY2NiMTliYiBweTNrCis4NzU4OCBjYWNmZmYzNDlkNDhkNzMyY2IwZmQ4YTk0MjJmZDQzOTVkOGRhZWNiIHB5M2sKKzg3NTg5IDBkZmI4Mzk3YTk3M2JhZTZiMTZkMWE3ZjFiNjk1NjY0OWIyMTE0MmEgcHkzaworODc1OTAgNzAyMDM3YzAzOWZmMDEzOTQ5NDRkZWJiZmMzZjNhMmNkY2I3MmYxMyBweTNrCis4NzU5MSBjNzJlZTZlM2I3ZGY4YmI5ZDE4Y2JmNDBmYTJkZjA0MzE1NzE0NDI5IHJlbGVhc2UzMS1tYWludAorODc1OTIgYTEzYjg2NjNmZWJhYzc3ZWRlNTQzM2NmNDQxNmNkN2RjNTgzYzAyNSByZWxlYXNlMjctbWFpbnQKKzg3NTkzIDU1MTAwNjNiMzlkNDAxZTBlOGY5OWMwOTM3MDQ0ZGEyOWZlYjJkYjQgcHkzaworODc1OTQgM2ZlNjZmYzIyMTdiMzAxYTliZTRlNjgwZDUwNzY2YTRjMzgyYjIzNSBweTNrCis4NzU5NSBiNjhmMzg3ZmJiNDhhOGJlNDUzYTFlMzgyNjVkYzhmNzAyMWIzZjA2IHB5M2sKKzg3NTk2IDg3NTcyMWRhNzQ2ZDM1YjdjYjk2MTZlYmZmNTYxOWY2NDI2MWJiZjkgcmVsZWFzZTMxLW1haW50Cis4NzU5NyA1M2RiMjkwZTQ2ZWY5M2I4OGRjZThjZTZjZWYzNTk2M2I4ZWI5NzY4IHJlbGVhc2UyNy1tYWludAorODc1OTggOGY5MjRjYWYyZTVlOThkYzk4NGNiYjUxMzU5ZGFmYTg2Nzg1OTFhMCBweTNrCis4NzU5OSBlY2EyNWYxZGVhZTczMTgzMGJiZWMyNDUzZGJlOGYxZmIxM2RlMjcwIHJlbGVhc2UzMS1tYWludAorODc2MDAgNTAwZWIzZDA4OTdmNDkxM2RhODhjYTIyMGY3ZmNjYmQwZGM0MTRjYiByZWxlYXNlMjctbWFpbnQKKzg3NjAxIDNiYzc0NjE2YzlmZmMzMTlhMjIzZTdkOTZiODJhMzI2YzZmNzYzMTYgcHkzaworODc2MDMgZmE4NTUwMjEzYmNmZGRlNzIzMmNmYTM0Njk1NzI4MjQxNmEzNzE1MCBweTNrCis4NzYwNCAzMzU0M2I0ZTBlNWQ2MTUwNTg4MDViZjU2NzRkODc2ZjY1OTU3ZDNkIHB5M2sKKzg3NjA2IGNkOGM5YjY3ZjAzMzg1MjY2NDMzMDU1N2MxNzc2NDU5OWYzMDk1Y2UgcHkzaworODc2MDcgNWRiYTY3Y2E2Y2NmYjU1YzAxN2U4YTY2MWY2NTY2NmFkYmNiZWY3ZSBweTNrCis4NzYwOCA3YmIzN2E0Y2Q3Y2Y3NTllZDAxNzU2ZDBkODc2NjQ1MDEyYTE1M2NiIHJlbGVhc2UyNy1tYWludAorODc2MDkgNWRiODk4NTNjYWNlMTk2ODA3YzAxZmZjNjMxYTg4MWNmYWRmNzRiMiByZWxlYXNlMzEtbWFpbnQKKzg3NjEwIDkwMGJhMDdlNDgyNGI4ZTA4ZWM5NmMzNWFmMTYxOWI2MjI3YjNlMzAgcHkzaworODc2MTEgY2NlZDBhN2NlYjQzZTgwNDE1N2FjMWY0MTRmNzI5M2QzODQyNTIwMSBweTNrCis4NzYxMiA0MTVhNzkyZTEyNDkzYjhjMjFiYWFlY2Q3N2Q1NThlNGQ5ODhlYTJiIHB5M2sKKzg3NjEzIGE5YWE1ZTRlYjhjM2FlNTVmOTBkMTYxZWRjOGFiNTU2ZWRkYTFkMjggcmVsZWFzZTI3LW1haW50Cis4NzYxNSBmOGMyZDg5MGZkMTA1NGI5ZDM1ZGNjYThlMDkyYjNjNDUyNjA1M2EzIHB5M2sKKzg3NjE2IDhkYmY4NTVjOTBlZGFjNzgxOTY5ZWVhNDYwNTFiNzcwZTQyMDE1ZmUgcHkzay1jZGVjaW1hbAorODc2MTcgNTc4NTdhNjBmYTk3ODViZWUwNDkyYzM1YjhiM2FjNGUwNzRmYzExZSBweTNrLWNkZWNpbWFsCis4NzYxOCBkZDQ5NDU1ZDhhOGM5MTc3NzI3YmU5YzVjYzhhZGM0MDY2OWJiNmZlIHB5M2stY2RlY2ltYWwKKzg3NjE5IDZhZjllODAwMDMzMjk3OGE0YTNkOGQ2YjgwZjQxZjEwNDc4MTVhMmMgcHkzay1jZGVjaW1hbAorODc2MjAgYTZjZDg0Y2E3YjJhNzk2NTBmNDQyZTA3ZGJjZDUyOGI1ZjI1Mzk3OSBweTNrLWNkZWNpbWFsCis4NzYyMSBhZWU0NTQ0MDBlZDcxN2I4MjdiZmVhZTUzOGYzMzc2Njc4M2QyODc0IHB5M2stY2RlY2ltYWwKKzg3NjIyIDRhYTY2ZTUxNDg4ZjM5NDVhZGJmN2YxZmY1MmNiYWRiOTA0ZDZlMmEgcHkzay1jZGVjaW1hbAorODc2MjMgMGIyZWE5MDMwMGMwYzliZmZlYTUxNTEzMjk2MTU5ZmQwYWJjMzhhNyBweTNrLWNkZWNpbWFsCis4NzYyNCBkMmNhNWIzMTA0YWEzY2I5N2MxNGQ3MDVjMjM3YmRkY2Y3MDkyZDVkIHB5M2stY2RlY2ltYWwKKzg3NjI1IGQzOTNlYzUzNmNhOWQ1ZDNlYTMyMDEyMjM3ZDE5NDg2OTA2MjlkMDggcHkzay1jZGVjaW1hbAorODc2MjYgM2ZlYWRhNzIyMzNjNDczNGU3MmM5NDIzN2YyYjRlNDQ0ODc3ZjMxMCByZWxlYXNlMjctbWFpbnQKKzg3NjI3IGRjNjI0NWJmZTU2NjFhZjk2ZmM5MjZjNjFiZjFkOTg3NjYzMzVmMzcgcHkzaworODc2MjggNzQzNmRhZWM5NDIxMGUyNTFmYjhhNjkwMjUyZGNkOWRhNTJjOWFjZCBweTNrCis4NzYyOSA0NDk2ZGViMjYyNjVkYTM2MDdlMDg2YWM1MDMzZTY4NGI4YWFlYjIyIHB5M2stY2RlY2ltYWwKKzg3NjMwIDc5OGFhM2ZlMDM0N2I1OWQ5OWJjMDg3ZWEzNTE4MzQ3ZDFmNDdlNDcgcHkzay1jZGVjaW1hbAorODc2MzEgMjFlNGYxYWEyNDMwYzJmYzU5OTZhMzdjNjcwYTRhMWFlZjZjMzk2NiBweTNrLWNkZWNpbWFsCis4NzYzMiAwZmMyNDkzYTM4NjNkN2UyZDE1MzMwODE2MjQ0ZjYyMWI3MGYyZmQ0IHB5M2stY2RlY2ltYWwKKzg3NjMzIDVkMzZmMGE1Mzc4M2FkZTQwYmQxYmU3NTYzYzQyMzQxYzE1MWE5ZDAgcHkzay1jZGVjaW1hbAorODc2MzQgZTcwYzkzNjEyZDdmY2JkMmJjOTlmMWZmMWY2MzNjYTNmYzQ3NjVkNCBweTNrLWNkZWNpbWFsCis4NzYzNSBkNDRiYTc1MjEwM2YyM2I3YWE3ODI5YTlhOGIzNjc2MTViY2RkNjJhIHB5M2stY2RlY2ltYWwKKzg3NjM2IDE2ZTg4NmE3NmM1YTU5YzQ5OGNlYTlhNzA0Yjg4MzFmNmZmNjZmYzMgcHkzay1jZGVjaW1hbAorODc2MzcgZmU3MjNiOGQ3YzVmZTMwOTdhZmM4OWU3YWVkNWRkNzVmYzJkZDYwOSBweTNrLWNkZWNpbWFsCis4NzYzOCA2NDAxNDkxM2ViODgwOWI4NWZkYjZjOWUyNzI5Y2FkMGM0YjlhMmNlIHB5M2sKKzg3NjM5IGIzNDQzNzdmZGQ4ZGI1NmI0MDEwOWQ4MTU3NTk5ZDIyNjI5MjRjZmQgcHkzaworODc2NDAgMzM2NWM3YjY0ODkzN2RmZTUyZDBhNTZlY2M5Mjc4M2RkZjk0ZDFlNiByZWxlYXNlMjctbWFpbnQKKzg3NjQxIDhmMzNiNTAyMTgzYmYwMzk0ODEyZWQ1MWNhYmZhM2QxYTA4MTdiMDUgcmVsZWFzZTMxLW1haW50Cis4NzY0MiBmZjEyNjFhMTQ1NzMzYTQ2ZGJmYzBiMTRlMDkxNzMzODJmOWQyNTQzIHB5M2sKKzg3NjQzIDllYTEyZTg2ZDU2NTIyN2YzZjY5ZjI5YTlkNTM1NDM3NmNmYmYxZWEgcmVsZWFzZTI3LW1haW50Cis4NzY0NCAxNTJhMDk4NWIxMzhiNzkxOGQxN2Q3YzhjZTViNGUzMmFkZmRmYTU5IHJlbGVhc2UyNy1tYWludAorODc2NDUgMGFmYzQxMzljYzcwMjkxYzRhMWYzMDI0Mzg3NDM0YWQ2MjVlYTc4ZiByZWxlYXNlMjctbWFpbnQKKzg3NjQ2IDBjYWUyMWRlOTkyMTM4ZjRkNTVhNjRmNjJiYzk3NDI0YTRmOGVjOTkgcHkzaworODc2NDcgMDA3MWExNzM0NjkwOTkwN2FhNmM1MDJkNzAwMzA3MGUzOWJkYmExZiBweTNrLWNkZWNpbWFsCis4NzY0OCA2YzQ2M2IwN2RiZGI3MmFjNTRkNDEwZGY5MjRkZWFlMjA4NTczMWNhIHB5M2sKKzg3NjQ5IGRiYjZmYjJjNWI5ZDdlNmEwOTljOGFmOTJmMDViNGMyY2I3N2QwMjggcmVsZWFzZTMxLW1haW50Cis4NzY1MCBlYjk1NGM3NjU1MjFhYTcyN2Q0MjY0Zjc0MjBlM2ZjOWJkNDQ5YjRjIHJlbGVhc2UyNy1tYWludAorODc2NTEgYTVhZTNhMTdkNWZiMTgxNDE1ZmMzMmM1ZjQ0YmFlZmZhNmEzZDRlZSBweTNrCis4NzY1MiBlMGU0ZWZiNjMzNTRjZGI2ZjQ2NmNlNTA2MzIyODNhZWNjMzdmZTdiIHB5M2stZnV0dXJlcy1vbi13aW5kb3dzCis4NzY1MyAyNTZmNzk0YzJjYzAyODQ0NDBiZjVlY2M3NjIwZjMzODcwZTAyZmQ5IHB5M2sKKzg3NjU0IDU4MWU2NzI0NzhmN2VhNGExZjMyNzJiZTdlYTgwNmU4MjkyNWViMjggcHkzaworODc2NTUgYzRkNjdmYTkwOWRjZDJkYTE5ZDFjNDFlZjA1NmEyMDc2NjJiYjQ4MCBweTNrCis4NzY1NiBiMDIwZGY5ZWUzODE2Y2IwYTkzNjRlNDBjNGVhN2FiODUwMjNhMGI3IHB5M2sKKzg3NjU3IGQzOWVmYTU0ZGVhZjA0OTMwOTk4ZTQwMjkxNzI4ZTJmZjcxNGNiZjAgcHkzaworODc2NTggNDI2MGUzMDI1MmViMmJiN2Q1NWViNDgzZGJlNTUyOGQ2NjliYzU3YiByZWxlYXNlMzEtbWFpbnQKKzg3NjU5IDczMGIxYWYwOTIzODc0ODNkMDcyODg4MWZhODlmMDZkZDZmNmIzOGEgcmVsZWFzZTI3LW1haW50Cis4NzY2MCAwNGFhNWJlNzA2YWMwMTc3MTFhMWFhOTViMWE5ZjUzNDI0M2ZhMGQzIHJlbGVhc2UzMS1tYWludAorODc2NjEgYTVkYWExNDAwMWE4ZWViYTRhZDAyOTdiNjY3ZWU1OTYyYTA1OGY4YiBweTNrLWZ1dHVyZXMtb24td2luZG93cworODc2NjIgZjg5ZTM3Y2Q2YzY1NzcxNjhkY2IzZjAyNTMwNjdjMjI2ZGJlM2FiNCByZWxlYXNlMzEtbWFpbnQKKzg3NjYzIDg4ZTVhZTViN2RjMjZhMDFjNjViYWU5NTIzMjgxZDc5YzVjMTNiZDQgcmVsZWFzZTI3LW1haW50Cis4NzY2NCBlMjg4NjhjZjk4MjU4OWM3NWUxN2QwZDQwZGUzYTI5OGM3YTgzN2IxIHJlbGVhc2UyNi1tYWludAorODc2NjUgNzQ2MTQzZWMxZjYwZGExMjk1NGE3ZWE2NzFmOTE1MzZmNDAyOTJhMCBweTNrCis4NzY2NiA0YWY5ODdlYzAzM2EwZDA2ZTEzMTk5Zjg5YTUyZWZlYWFlY2ExMGFlIHB5M2sKKzg3NjY3IDI4NTM4ZjJlMGNjMjQ3ZjNmNWY4OWE0NzA4ZmE0ZmZhZjQ5Mzg0ZDEgcHkzaworODc2NjggZDhlZDBjYzllMzM4MmMyNjk0Y2NkMGY0ZWEzMTJhY2YzYjVhMTViZiByZWxlYXNlMzEtbWFpbnQKKzg3NjY5IDkzYjdjMDAwOGIwODVlMDdhMjk0NDRmODk2MWE5ZjJmN2YyYzEwYjcgcmVsZWFzZTI3LW1haW50Cis4NzY3MCA3M2IyNDQ3NmNhM2JhYWY3MDdlNzc2M2I3YmZkN2Y3MjI1MGZkNTMzIHB5M2stZnV0dXJlcy1vbi13aW5kb3dzCis4NzY3MSBhMDQ4ZDBjZjJhZDFkODIxMDc4NDk1Y2UzOTcwMmJiNDQ3M2RhYTk1IHB5M2sKKzg3NjcyIDUzODRlNzIwZjI4ZmQxOTgzNjBkY2Q2NmU5ODU2ZmIxM2U5YmQ3N2EgcHkzaworODc2NzMgNDM5YmY5NjgwYmVmMjY2MDNjOGY0YTc3MTkyOTE4YWUzNzM3ZTIwNiBweTNrCis4NzY3NSBlOGJjYzdkYmFiN2RjMjBjMzM5ZjM4MzEzZjhhNDRjNGRhNTQzY2ViIHJlbGVhc2UzMS1tYWludAorODc2NzYgYzg5OGRkMjE1YmEwNjY1NzRmN2FlNDhlMTlhNzZmODgzNWZmNTYzYSByZWxlYXNlMjctbWFpbnQKKzg3Njc3IGZhNTlhYzExNjQ4NDBkZTljMThiNDkyY2NhMzQzNjZkODI2NjgzOWIgcHkzaworODc2NzggNTc3NmY0MjRkODU3ODEyZDcxZmFiZDY3MTU4NjEzN2QyMjIzZTMyMCBweTNrCis4NzY3OSAyODExOTA2MWY3ZDAxMTg4ZGU0MjU4MTE5ZjYzMDQwZmQ4ZmM4N2NhIHB5M2sKKzg3NjgwIDgwNjAwYzBjMzNiNzhiMWRjODVkNzFlOGEyZGEwMjIwNGMyNzRhNGIgcHkzaworODc2ODEgZjViMTA1YzlmNDZiZjZmMmFiYzM3Y2UxNGE2N2NlNWMyZWIwM2JmYSBweTNrCis4NzY4MiBiYTE2ZmY4NmQ0ZjZjZDE1OTZkYTI2MGJkM2IzYTE3ODliZmRkNWQ0IHB5M2sKKzg3NjgzIGRiYTliOWM3YTJkYjc2Zjg0NzcwYWMyMTNmNmQ5Mzg2YWE2NTQxMDMgcHkzaworODc2ODQgNmNiN2VkN2I2Njk3ZTUzNTJhM2ZmNGVlNDQxYzA0NTdlOGVjMTllOCBweTNrCis4NzY4NSA5NDg2OTI3MTJmZDcxMGQ0YzMxMThmMTIwYTJiZWViYmVhOTk2YTA5IHB5M2sKKzg3Njg2IDkzMWQyMzIwZjU2YTA3YjQ3MWRkNDYzMzg0ZjAzNTc2MGQ2OTc1NjcgcHkzaworODc2ODcgNGM0NmY2NjMyZGRmOTc3NjRiZWQwNDJlNDcwYzhhOWIwOTgzMGU4ZiBweTNrCis4NzY4OCA3NzQ4M2YzZTQ5MWE3OTM2MGMwMDlkYmM0Y2Q0NTZjYWZlM2VhYWExIHB5M2sKKzg3Njg5IGM0MTdkODA1NzY4Mjc0MDk3Y2QzNWM5YjBmMDAxZjNhYjBjOGNiZjMgcHkzaworODc2OTAgNzQ3YzU1YTk0Y2IwZTVlNTE4ZGZlNjY4NmM2YTIxN2ZiMWY2YWNmNyByZWxlYXNlMzEtbWFpbnQKKzg3NjkxIDZiN2Q5ZjFjMmNlNTFhODRjZjBhMjMyNjhkYzRhZjgwODQ3MDFmOWUgcHkzaworODc2OTIgMjQ1MzU5MzgyYjBmYWQzZTQzMjhjN2JkYjUwZGM1MzBhZGJhNmVjZCByZWxlYXNlMjctbWFpbnQKKzg3NjkzIGZlYjIzZTI0ZGNiNWM3MGYzMzExMDc5OWNmNzI5NmEyZDQxYTc2ZDAgcmVsZWFzZTMxLW1haW50Cis4NzY5NCBhMzNlMWYwMjA5MWY4ZmExNWU3YjgyYjA3NGViMmM5NTk0NDllOTAzIHJlbGVhc2UyNy1tYWludAorODc2OTUgYTY2YTZlNDI1MzhmZTQwOTEzZjY1NjNkMmJjZWQ0YWZlN2E5NzJmNSBweTNrCis4NzY5NiBlOWE1MWQ0NjM1NzkyNDQzMTU2M2E3YTYyZTA5NDhlMzZjMzRiOWRhIHJlbGVhc2UzMS1tYWludAorODc2OTcgYTQ3NmViMDg3ZWU5NzY4MzMxZTgzYTM1MjQ4MDQ4MzU1NzU5N2FiYyByZWxlYXNlMjctbWFpbnQKKzg3Njk4IDhhYzRiY2NhOGUzMTYxZjJlZmI3YmRhZWNjMTdlNzlmMjQ0YmIxYWUgcHkzaworODc2OTkgOWFjZWQ1YWVkMTFhZjVhZTE3YmM3ZjQ0NGI1YjhjMzY2ZDdjZTcyMiByZWxlYXNlMzEtbWFpbnQKKzg3NzAwIGIwYjQ0MTRjMGJkYzIxZGU0MzY1MjQ3ODg4MDg3ZGQ3MzExZjYwOWQgcmVsZWFzZTI3LW1haW50Cis4NzcwMSA3OGRlM2E3ZmI4OTYzNGUyOTZiYzI1NzRhNWQyYTU0MTFlM2JiMmU2IHJlbGVhc2UyNy1tYWludAorODc3MDIgMjc1ZmI5ODQ5NDkxZmUxNWE3ZjIwYmMxYmI3YzZlYzI2M2Y0ZTI5ZiByZWxlYXNlMzEtbWFpbnQKKzg3NzAzIGY0OThlYTk3OGM2ZmUwZWRjOWRhNWVhODhlOTljNDBmOGI5OGU0NDIgcHkzaworODc3MDQgNjExNTY3ZWM0ZDdiNzE1Y2I4MDY4YzAwOTI0MmZkYjhkNzM0NDFiNyBweTNrCis4NzcwNSA4YzE4OTkyZDM3NTBhYzIzZGFiNzkwMWM2NmM1MTdjMTg0YWRiZjUxIHB5M2sKKzg3NzA2IGY2MGE4OTlhMjA0ZTViMjhlZGNjNmVlYjQxMzc3YjdjM2Q0YjIxZjMgcmVsZWFzZTMxLW1haW50Cis4NzcwNyA0MDk0YmMxM2FjZmNjNDEzMGYzYzI0OTYzODE0MzE4MTNkNjI4ZGM5IHJlbGVhc2UyNy1tYWludAorODc3MDggOWY0OWVlNTIzOTc1NjEwOTgwMmVlNzQzMmY2MDdlNTBmZDEyMDg4ZSByZWxlYXNlMzEtbWFpbnQKKzg3NzA5IDViY2YxMDhhM2Y1ZGZmMjdkYTIxMDc4OGVjMzNiNjllNTViMDJiYzAgcmVsZWFzZTI3LW1haW50Cis4NzcxMCA2ZTVhYWRhNGZkZDVmMTc2ODg2MmJlYjRiZjcwNTEzZTQyNWEwNWFjIHB5M2sKKzg3NzExIDUwMTE4NzBlYzg2YmQ0ZjE4YjI1NDRiZTRiNmEyNjUzN2I1MmFhMjEgcHkzaworODc3MTIgYTdjNDk5MjY2YTlmZTAyNTFiNmU3MThmOGY4YWFjZGRmZTM0ODljYSBweTNrCis4NzcxMyA4ZjUwOWM1MjYwYTk4YWMzOThlYWU4NTgyZjEzNTdmMTZkYjFlYTIxIHB5M2sKKzg3NzE0IDg5MzI3M2Q3OTNjNmVmNTFjNTUyOWM4MGUyYjc4MmI5MjQwMzIwMzUgcHkzaworODc3MTUgNzMxZGVjNGU3NTEzODE2NGFkOWM4YjNkZGQwYTgxMDMwMmQ2Mzg2NCByZWxlYXNlMjctbWFpbnQKKzg3NzE2IDlhZDg5NjQyNmY3OTY0MTgwMTNiYWYzNTlhZWE0ZjgwY2ZjZWVmNzMgcHkzaworODc3MTcgNzBiZWEyZGFkZWY4YTcxNGQyYjNhN2QzZmNmNjU2NGUwZDdmNmI5NCBweTNrCis4NzcxOCA4Yjg0OGQzYzZhZDAxNDQ1MDg5OWZlY2QwZjhjZTJhNDcxYzE1Y2RjIHB5M2sKKzg3NzE5IGQzNmUzNDVhMWEzY2VjYmU5ZGRmOGY2NjAwMGZkMGYxMmMzNGIzNzkgcHkzaworODc3MjAgZjBlYjM0NDhjZTM4NDU5MjkzNDA3YzNmYTBjOTQ0MjhkNzlkODljMSBweTNrCis4NzcyMSA5Y2Q4M2M2NThiYTQ2MjBiZjMyMzM4YmM2ZmE5NjdmYjE0YWRkMmY3IHB5M2sKKzg3NzIyIDM3NGRjOTEwZGIzM2FkNjhjMDczODg5ZjdhOTU2ZGQ0OGNlZDA3ZTcgcHkzaworODc3MjMgMThkYmMzYmExNmMwZWFmZDgwYzY3MmYzNzhhNjdjNDdmMmZlYjEzZCByZWxlYXNlMjctbWFpbnQKKzg3NzI0IGMwMDdjM2RiYmQzZmJkOWVlM2JkNWI4NGNjNmM3NmZlZjFlOTZiODYgcmVsZWFzZTMxLW1haW50Cis4NzcyNiBhZDJmMzQzODBhYWM4Njc4NDc0YmQ2NTNjZTEzOTZiY2ViZGM2YzVjIHJlbGVhc2UzMS1tYWludAorODc3MjcgM2UxYzNkMmE4Njg5MDcwNWYxMzcyNzY5MDQ1YWQ2YTliYmQzNDQ2MiByZWxlYXNlMjctbWFpbnQKKzg3NzI4IGY3OGU3ZGIxZDVlODY0ZWNlNzk5ZDllN2UxOTU3OTczNjExYTEyZTYgcHkzaworODc3MjkgNDU0OTQyNmVlNGQ2NTJlYmM4NWRiZmNhYzBkMjAzNjUwMTMwNjhjNSBweTNrCis4NzczMCBmNGE4MDhmNWE2NmQxY2VkZGNlNDQzNTE4MzcwMzhjN2ZlNmNmMGMwIHB5M2sKKzg3NzMxIGE3ZDE1ZGY3ZDY3ZDNmMGYxMTMxZmU0OGMwOGViZGVkOGQwN2Y1Y2IgcHkzaworODc3MzIgOThjOGFhMjM3ZmMxY2MxMzk4ZTJkOGQ1NzAxZDg1MTYwMTRhZWRiYiBweTNrCis4NzczMyAzYmY0ZDlmMTY2MGE0YzFkY2VhNTM1Yjk0NDRlNjQ5MmNkNjkyNDNlIHB5M2sKKzg3NzM0IGNkMjc5ODIwODdlYWM0YmIyNDE4ZTU5MzBiYjVhNzAwYzdjMzBiZWUgcHkzaworODc3MzUgOGFhOGRjYTQ2Njg0YjU0ZmJjZGRlZTU3OWRmN2ExZTY4ZmJiYTY5MSBweTNrCis4NzczNiAxZTYyYTBjZWUwOTIyYzNmOWZiODM3YzUxOWY4YTM5MzM4ZTNhMzdhIHB5M2sKKzg3NzM3IDY0MmM4ODA2ODMwZjVmYjQyMDI0MTAxZDFhODE3MjllYmQ2ODdjNzEgcHkzaworODc3MzggMjAwNDNkYTc4NzI2YTM5NGEyYjJiNmQyYTMwNTBmNjJhNTg1MWIwMyBweTNrCis4NzczOSA2MjllYjNiNjk5MDlmMWNjYjZmMWUwYWFkZWQzZmE0OWI1MDRhYTZkIHB5M2sKKzg3NzQwIDM0NzhkMDA3ZGYyMzcyMmRmOWZkMzdmYjJlN2Y0NWNlMDY0Y2I1N2IgcHkzaworODc3NDEgYTNiN2MyOTA3NTRhMGExNTIzODFhOGNhODEzY2JlZjk3NDg5NmE0MCByZWxlYXNlMzEtbWFpbnQKKzg3NzQyIGE2YmM0OTdiMTk2MjQzY2VkOGUzMjAxMTEwMWE5YzVjNGU3ZDgzNzAgcmVsZWFzZTI3LW1haW50Cis4Nzc0MyA3YzVjMzdiOTYyODE2Yjc4NzU0ZTkwNWNhOWRmZDNlYjc1OTE3ZjczIHJlbGVhc2UyNy1tYWludAorODc3NDQgOGFmNmU4ZmMwMjA1YmNjYzY1ODAyN2QxZWYzNzkzY2U3NjI2OGJjYiBweTNrCis4Nzc0NSA0NTU3ZDQ5NWE0ODQ2YzNlNTIyNWY1ZmQ1YTBjNmE1NDhhOTllMjQ1IHJlbGVhc2UzMS1tYWludAorODc3NDYgMDgxOTIyNjVkMTcyYzRjMTA4OTc0N2I2YzA4MTI5MjNkMjQ3M2M4ZSBweTNrCis4Nzc0NyBjMGZlZjhhMTQ0ZmFkOThkZThlZDZhZTBkMjkwZDM1MjQwNWIxMzJjIHB5M2sKKzg3NzQ4IGVmY2IxNGY5NGU3NjkxM2JkZmMxNjEzZTc2OTg3MjhhZjM5MjYxOGEgcHkzaworODc3NDkgZGQzZjI4ZmZkMDI5MDg5ZDA4ZDFmMTZmMzUyOGY2Y2QwYjU4OTg0NCBweTNrCis4Nzc1MCA0OTc4OWE1MmE5NzYyNDQ0MzM2ZDQ4MmMyOGViMzY5MDZjMzY5Y2I4IHB5M2sKKzg3NzUxIDBlZmZiMTc1Yzk4MTliOTQ0MmUyNTBjNjRjY2M5ODVlNzFlNzQwM2EgcmVsZWFzZTMxLW1haW50Cis4Nzc1MiA4NWZiZDc3NTUzNGViN2Q4MDgzNmFjOGJmNTRjOTk1ODExZDVlMWRlIHJlbGVhc2UyNy1tYWludAorODc3NTMgYTBkNGVkYThkYTBhZjBmZThjMDQxNjY2OTQyYzIxYTVlZmFlMmZhMCBweTNrCis4Nzc1NCA0Y2M0N2E5MDgzZTM4OTk5NmZmYWQ0ZTliNmIzOTYyOGJiMmYxNjgyIHB5M2sKKzg3NzU1IDRhODJiZTQ3YTk0ODFiMWMwM2JiOTUxYWU4ZThjNjhjNWU5YTAxZTIgcHkzaworODc3NTYgZGU4NjJkYzBjY2NhZjY5MTIxZTFlOGU3NDg0Njk0MzBlMGYwMGU0YiBweTNrCis4Nzc1NyAyOTYxYWY4MGQ1NDU1OGI2N2VjNGIzNWM3NjNmN2YzMGRkYmJjYTE0IHB5M2sKKzg3NzU4IDUwNjBhOTJhODU5N2U1MGVlZTM5OGExN2MwZTQ5NThkNTQzYmM5ZGYgcHkzaworODc3NTkgZTkzNDhkNjhjZmNkMDAwOGU5ZDg4NTY4NjkyMDE0MTYxMDJiMjQyNCBweTNrCis4Nzc2MCBjMDQyNWI1ZWRlNDdhZDZmMmE3ZDExYjQyMDM1MTZmZGRmZDA3M2U3IHB5M2sKKzg3NzYxIGE0NGJhZGY5ZTAwZjYzZDNkYzVkZjllOWQ3MDYxMDE1YmU1ZmM0ZGQgcHkzaworODc3NjIgYmM1N2ZkZDg5NTYyYjE3MjMxOTg3MDBkMThhNGFhMDk0MDE3MDJmZiBweTNrCis4Nzc2MyA3OTljZDE1MjMxMTE3ZjkzMzk5MDA1M2EwZDZmYmQ0MTNiYzE3ZmU0IHJlbGVhc2UzMS1tYWludAorODc3NjQgYjc0MjZiZTZiYmI0Y2ExZjM4ZmFjYTc5MTVjZTJkODgzNzE0NWZlZiByZWxlYXNlMjctbWFpbnQKKzg3NzY1IDc0NTIyNWFlMjllZjA4MWJmZWQ2MGUxYjc1NmE1ZDFlZjM1YTRjMjIgcHkzaworODc3NjYgOTEyZmQyMGRlMGUwNzIwY2IwNDRmZTQ3ZWJlMzBmMjdjYzkzNmYyYyBweTNrCis4Nzc2NyAxMzIzNzRkNTM3ZTRkMTBkNzZkNmZmZTc2OGYzZTg0MmNiNDMxODhmIHB5M2sKKzg3NzY4IGVkMDI1OTIzMDYxMTJhMGNlMmQ3MDIzMjgxODg4MzcwNzM1NDhlM2QgcHkzaworODc3NjkgYmRiNTdmNDYzYzg1ZmI1NGYzZjlkMmQxMmUwZjc0NzczZjRlOTdlNyBweTNrCis4Nzc3MCA0YmYzYTVhMDQxMjA5Mzc5Zjc3YWQ3NzFhOTAzNTNkNDg0NDU4YWE1IHJlbGVhc2UzMS1tYWludAorODc3NzEgMDc2Mjg5OGZkODAyODZlODdmZjlkYWExZDAyNjlkMjlkMWVlMDNjNCBweTNrCis4Nzc3MiA4ZjUzYTRlODk2MzEzYzU2ZGZlNzVmMjE0ODVlNmI1OGNjODA1OTMwIHB5M2sKKzg3NzczIGRlMzg3OTRkMTc0OTg5YTM5ZWQ1ZWYyMTg2NWYyNjlhOWNjZDlkMTEgcHkzaworODc3NzQgZjA2YzI3OGI0ZjIxMjNlYmJlZjdmYzFhNDRkOTFkNDEwYTg1ZTNlNyBweTNrCis4Nzc3NSA1OGI3ODQ1NTNjYTRmNWE4NDJlZjJlOGQyYzkxNGFiNzIzMDc5ZmExIHB5M2sKKzg3Nzc2IDkyZjYxYTY5MmUzOTQxMzFhZGIzNWEzMGQ0NjZhOTljZDA5NzE4MzYgcHkzaworODc3NzcgNTEwZjdlMjllNzI4MTdlZTFmNmFkODk0OGMxZGJiYmYzNmE1NGY1ZCBweTNrCis4Nzc3OCAyMGUzYWYxZDUzMGE4ZmIzOTkyYzczYzFkNjkyZjQ3NThiNzNhOTg5IHB5M2sKKzg3Nzc5IGNmOWUxZjc0NjRkYzU4ZWNlOWE3NzJkZGVmYWM2Mzk5MDhmOTMwN2IgcHkzaworODc3ODAgOTJmMmQ3ZDI4ZmVlZGIzMjBkNmE1YTFlZTQ0ZjFmYmZmODg4ZmU0NyBweTNrCis4Nzc4MSAzNGQ4OTE1ODBmMzhkNDU2ZjAyMzUwMDY4NDZjOGJiYzQzNDc1MWNmIHB5M2sKKzg3NzgyIDI0N2I3YmE2ZmZhZDQ0ODkxODkwN2I0YjdkMDExNGRkY2E2YTgyMmQgcHkzaworODc3ODMgOGM0NDhhNDI3N2EwZDRmYjlhNjVjYTVjZjhiODY3ZjQ4NmFlNjkwNiBweTNrCis4Nzc4NCBhYmI2ODZhNWExZGZjZDZjMDJmZjQ1N2EzZjIyNzIyYWNiYjU4YjRlIHB5M2sKKzg3Nzg1IGM5YjQ4NGYyYTBiNzA3NDk1N2VjMjY4NTliMTU5OWM3YzUyNTVmMzUgcmVsZWFzZTMxLW1haW50Cis4Nzc4NiA3MWUxYTk5NjE4MzYxOWEzYTI2MjMwNWI0OGZjZGUzYzFlYTRkZmQzIHB5M2sKKzg3Nzg3IDNkODI0YjUxMzdkZGIxMzNkZmU1N2E1ODZmNTcwYTA2NTM2ZGVhZjMgcHkzaworODc3ODggZDgyNGU5Y2ZiZWU4NmRmMGE1YjM1MTlhMmZlNmZiNzZlMzcyNzI3MCBweTNrCis4Nzc4OSBhMzI4OGE0ZTJlYWQ5YWQxMDM3NmQzYmNhNDFmMjNmYzI1NTlmZjBmIHB5M2sKKzg3NzkwIDE0MjI4ODA4OWMxYTQ2NTZhMWEyZDk2MmQ5YzhlYjhlM2YxZjIyMTIgcHkzaworODc3OTEgNWQ2NjY4NTQ4NDI4NDJmOTFjYWFhMzU5YzIxOGU3MmJhMzFlMDM3MSBweTNrCis4Nzc5MiBjY2JjODQyMjJmZGE1OGEzNjA2Y2NmYjk0OWNjMWQyNDdiNWY0MjljIHB5M2sKKzg3NzkzIDE3NzRkNmEyZjViZmVmOGYxZTZiNDE0NTliMTU0ODg2Y2Y3NWYzOWYgcmVsZWFzZTMxLW1haW50Cis4Nzc5NCAyNjgzNmU0N2RmYjkxYzQ3MWI2YTE5MWY1NmQ1ZDg0YzRlNGI2YjExIHJlbGVhc2UyNy1tYWludAorODc3OTUgZDJhNjQ2MTJkMjM1YjZlZjI0MmVkOWFjM2ZlM2Q3YjI3ZDUyODBkMiBweTNrCis4Nzc5NiA2NGMyNDUzMTNjZmY5ZmRkNDZlNTRkY2QzYzViMzk5ODI0NGY0MDE5IHB5M2sKKzg3Nzk3IGE0Y2ZiMjc4MjQxNjRhZmQxY2NiMjU1YzcyNzAwOGE0YTAxZDRhYTQgcHkzaworODc3OTggNTkxOTIyMjk5YWNjMTExOGFkMDMzYTdhYjg4NDFmZmYxNjk3ODA3ZiByZWxlYXNlMzEtbWFpbnQKKzg3Nzk5IGIzMzJlNzNiNTU2NzA3YzRhMTA4OGIwMDg5ZDAzZTY3MTYyYzhjMTUgcmVsZWFzZTI3LW1haW50Cis4NzgwMCA3ZTdmYzk0ZmQwZDQxNGZiZWMyMzNlN2EyNGI1MjY2YjZmYmYzMzk4IHJlbGVhc2UzMS1tYWludAorODc4MDEgNDE5Y2EwODlkMzY1ZjMwMTRhNGUwMmI1MGE5NGVmMzBmNzY1ZDcyMSByZWxlYXNlMjctbWFpbnQKKzg3ODAyIDZhMWQwODA2MjNkNzdiODI1YzFkZTc3Mjk5ZjM4NjgzM2I2YzM1ZDAgcHkzaworODc4MDMgNzIyMjY5Nzk2NGZjNzQ0Mzk5YzhlZTExOGJiMzk0OGFkMTVkZDFkYSByZWxlYXNlMzEtbWFpbnQKKzg3ODA0IGM3ZmQ5YjZhYTAwMmVlMzAxY2UzZmY5ZThlN2MxNmYyZWVkYTBiZmIgcmVsZWFzZTI3LW1haW50Cis4NzgwNSA4YTMwMmEwOWVlODNhNzY5MDVlZWQyZTA1N2ZmZmU4YjkwYTZiMDMyIHB5M2sKKzg3ODA2IDAyMGRhOWI4N2RhYTg5MTMzNGJiNzg0MzhhMTA0ZjBhYWQzZWQ3MjcgcHkzaworODc4MDcgMWQ0ZGM5ZGYyNDk2NzI4MjM1NmZiOTY4ZWE0ODQwMGQ2NzI0NmM4NCBweTNrCis4NzgwOCAwMWIyNTMzMzFhODZlMDY4MGI3ZDRiN2ZiNGE2ODgyM2E4NzI5YjQ2IHB5M2sKKzg3ODEwIDdiYTVmNTdjNzRlNTc2MjhjYTQxY2Y1NWY2MzBkOTQyY2ZiMTkxYjkgcHkzaworODc4MTEgN2U1Nzc3ZTFmMGZkYTNmMTM2YzljMTQ2ZTkzMGJjMmRiYjMwYTI5ZiBweTNrCis4NzgxMiAxMmNjODEwNjJkNGE4NGY2NzBiOGJhODgzZDQ2ZTg5M2EwMjU5YzgzIHB5M2sKKzg3ODEzIDQzYzhjMWJkZDk0ZmQ4YWVmZTk4ODVlMzIxYzExZjg2MTA3NGFkZDcgcHkzaworODc4MjAgODNkM2Q1ZTA2ODdlZmU0ZDExODg3ZTBiZWFkMzliYjdhMTQ1YmI0YSBweTNrCis4NzgyMSAyZWU2YjQ0NGM5M2RlZTQ4NTAxMTYwNjAzNGI5ZDc5YTA0MGMwZjEwIHB5M2sKKzg3ODIyIDUyNjBmZDEyYzc2M2RkZDNjOWQzMjNmNWQzMTM0OTUzNDEyYjM0NjkgcHkzaworODc4MjMgMGIwYTJiNmMzYWQ5ODM1NzdiODQyNzJkZDViNmJjNDc4ZTk5YTY4YyBweTNrCis4NzgyNCAwOTMzYzM3NTNhNzEyYjlmOGFmMmQyM2U0MGFlMGRkYTFmOGFjMjU0IHB5M2sKKzg3ODI1IDE0MjcwZmU4NGRjNzcxZjlkZGY4Njc1ZGRhOWIwMDgzNjRkNDEwY2IgcHkzaworODc4MjYgM2VhMjgwOTk3MDAxZDQyM2FhNGE4ZjA0ZmRkODZjOTBlYTk0NGE4NyBweTNrCis4NzgyNyAzNzc4MTU5ODVjYWYwZDAzYzNlMzY4YjliNDkwM2E0YzNjZTA5YWU5IHB5M2sKKzg3ODI4IDVmOGViOWU3YWNkYzA2NWFlM2EwMDZlMTc5MWZlZWM3OTI2NTgzZDYgcHkzaworODc4MjkgMTIwNzRmM2FiODA5NWY5MWE0NzM2OGFiYWQ3MWQxZjZmYWZjNWExMiBweTNrCis4NzgzMCBkZjlhMDYxNjAwNGQ5MmU5N2Y4NzFhOGE5NWRlMzk3ZDBkOTBmNTlhIHB5M2sKKzg3ODMxIDEzM2RlZTgyYTAwOTYxNmUxYzBkY2NmYTVkYmE4ZjkyYjE3MzM4OTMgcHkzaworODc4MzIgM2U3NWNmM2Y2MzU1NTY3ZGRhODZmMGE2NjdmYTc3NzJhZDZlOThmZCBweTNrCis4NzgzMyA2NjU4N2U5MGZkZmI2MjdmODhhYjFhYzdhMjlmMzEwNGRhMmE4ZmQ0IHB5M2sKKzg3ODM0IGY1OTUwZGYwM2NlMjEwYzUwY2NkOTY1MWVhNGMwNjZjYmJkOTQ5MzIgcHkzaworODc4MzUgNmE1NzExOTY1NTcxYWIyMDZiNTQ5ZWY0ZjAwNjM2NjkwZDQ2MTcxNSBweTNrCis4NzgzNiA1NGZhNjIxNjU4NTMzNWIyM2FjNTRkYzNiZWZmYWRlYjY1YjQwZTQxIHJlbGVhc2UzMS1tYWludAorODc4MzcgMGRlMTkwNWE3NjFmODdhZDgyMzQ1YzY2ZjRhZTMyY2NiMzU3ZWY4OSByZWxlYXNlMjctbWFpbnQKKzg3ODM4IDA4MGEwZTk2YjQ4MmIxM2MwODg3Y2UyZWI2MjlhNzA3NzdhNDRkYjYgcHkzaworODc4MzkgYjBiNzljMzczNGFjZGZhZjlmZjQzZTc1ZmUzOWE5MDBlNmVkMjg3OSBweTNrCis4Nzg0MCBjYWQxODExZDllMTNlOWZlODE1ZDE0Nzg3OGVlYzMwNjA0N2ZhYzFlIHB5M2sKKzg3ODQxIDM5N2I5OWY1OTEyZTc2YjZjNTc1MTFmZjk4N2Q1MTkzOWJmNzMzZGUgcmVsZWFzZTMxLW1haW50Cis4Nzg0MiA2MzFlODMwMDE2YzBlNzRmNWQ5MzRhZDM1ZjA3ZmI0YTdjYjhiNTM1IHJlbGVhc2UyNy1tYWludAorODc4NDMgMzE0NjU5NjhhZTI2MzVjNjVmNzA3ZWU4MjVmZDFkMTQyYWQyMTY0ZCBweTNrCis4Nzg0NCBjNmI4YzViNTY0YThjNDQ4NjI2N2IyODliNTM5MmIzNTQxMjVkNzFkIHB5M2sKKzg3ODQ1IDg3NTdjZDY1OTI5MTk0YTRiNGM4MGFjMGNmM2QwOGY4NjY1OGZiYWYgcHkzaworODc4NDYgMjUzZDkxZTRmNjcyOTE0NDI1Njg5NmYwY2MwNjk2YzUxNWVjMjU0MCBweTNrCis4Nzg0NyAzYjc5ZWM4M2NlMjE2NjZmNGI1MDY1YTc3NWM4OTkxZDRlYWYzOWMwIHB5M2sKKzg3ODQ4IGU0ODA2MDQ3NjdjNGQzMTM3ODIyNzgyNjA5MjA1YmVjNDQxNTdkY2EgcHkzaworODc4NDkgMTU5NjdiN2YwNThmMWI3ODJhOWQwYjYxZmZhYjRhYjIxZWI5YTQ4YSBweTNrCis4Nzg1MCAwZTFmNGRmNDc4ZjY2OGE3NGRiMTdkZDViN2U1NWJmNzU1MGNjYTQ0IHB5M2sKKzg3ODUzIDY0OTJhNzEzODg3ZThkOTM1MGNkMDYzZThjNGRjYzM5MzFmNWEwMjQgcHkzaworODc4NTYgZGM5YTU2ZGRhNDI4N2Y3NzYwODY2NDMxZDJiMjFhNjk4NDIyMmFkNyBweTNrCis4Nzg1NyA5MGNiYTZhNjcyZjBlOWJkN2MzYjZhNTRiZjVjYjk5YzY2MjhmNmY5IHJlbGVhc2UzMS1tYWludAorODc4NTggZDY1NjZhNzBjYWEwYTg0YjRmMjE3YTJhN2U3ZjIwNDYzNzU2Nzg5NCBweTNrCis4Nzg1OSA4MjM5ZWM2ZjM5ZTYyNTUxMDg5N2U5MzdlOWRmZTU1ZGMwZmNmYmIzIHB5M2sKKzg3ODYwIGMwM2Y2NGM3MWIwNWFjZTBlY2JjNWQyZTc2N2ZlNmNiMjhmNTA5YzggcHkzaworODc4NjEgMDkzMjNjOTExMDlkMmZjZTFlNTcwNTUzODQwNDc2NWViZTU1ZTRkNiBweTNrCis4Nzg2MiBjNmQ0NTM0NTYyZjQwYTEyNzJkY2NjZTgxMWQzYTY1MjJhYjYwZTcyIHB5M2sKKzg3ODYzIGYxMmRhNTNiOGQ2ODMwNTY3ZWI1YmU3ODI5Y2RiOWNmZDE1NDdiYzIgcHkzaworODc4NjQgYWJlMjAxZGZkM2RjZTJmYjcxMTg4OWVjZGFkZDZkNjQzY2UzZWRhNCByZWxlYXNlMzEtbWFpbnQKKzg3ODY1IDA3NTk3NGE5MGMzMWIwYzdlZTA1ZTI2ZDgyNjUzZDU0NTgyNDEwOWIgcHkzaworODc4NjYgNGQxOTI3MDkxYjM5Zjc5ZmEwNGIwNTIzMGJiMjkwMmE5ZmE5ZmUyMSByZWxlYXNlMjctbWFpbnQKKzg3ODY3IGVhMGI5NGQ0NzU0ZDc1NWJlZmE0ODc1NmU4MGFjMjFjZDM2ZmJlM2YgcHkzaworODc4NjggMjA1MTdhYTNhMzU4OWFjNjA4OWE4ZjgxYWIxMGQxZTc1OTJkYjJiOSBweTNrCis4Nzg2OSA3MjYzYmQ5MGUxMTBkNDY2YTQ0ZDJjOGYxMmFhNzRkM2EwNDJjNTQzIHB5M2sKKzg3ODcwIDNlZDNjN2M2YjYwNWQ3ODA3MGUwYmExNTI5M2Q0MjQ3YzNlNTQxNzUgcHkzaworODc4NzEgMWY3MWM0M2FkN2UzMzhmZjMwZTVmNzNlMDkzYWZiOGJiZWNjNWU5MiBweTNrCis4Nzg3MiA2MTU3NzhiZTk4ZTk5NTI1ZTdkZmUyNzEyMGNkZTBmMjE1ODkzOTNkIHJlbGVhc2UyNy1tYWludAorODc4NzMgOGJiZmYxYzI0YTMxMmEwYmY3MzM4NDM4ZWI5NjdkM2JkNjJhMGIyNCBweTNrCis4Nzg3NCA5NjZiODdmMjM5NWNjOWM3MmI2OWYzZGE5NGExOWNmNTliMDdmZWU5IHJlbGVhc2UzMS1tYWludAorODc4NzUgYWRjN2UxNjcxZDhjMzk1YTJiODg4NTYzMGUyNDRhOGQ4ZTcxYzNmZiByZWxlYXNlMjctbWFpbnQKKzg3ODc2IDlmMTNkYzQzOWRjNTFjNjk1NWQyMmZiYWUyZWFhYzg0NTI3ZDhhMmEgcHkzaworODc4NzcgMTljMDUwNTFiZjFhMDJkMjBmOGQyMTBiZTYwNTUyNzlhZDQ5MDYwOCBweTNrCis4Nzg3OCA5YjJlNjBhZTRmZWY5N2RiMzBkNzM3MmZhMWM2ZWYyZTVhYWEzNjJlIHJlbGVhc2UyNy1tYWludAorODc4NzkgN2VjMjE2NTNhNGQxZTU3MmU2N2U4NWMzNDk0Zjk2ZGViZDdmNDlkZiByZWxlYXNlMjctbWFpbnQKKzg3ODgwIDk1MzAxYTQyODUyZjU0MjVlOWFlMTBkOWE4MWJjYWYxMTk0MTI4ZjMgcmVsZWFzZTI3LW1haW50Cis4Nzg4MSAyZTc0MzY5YjRmNDA2MGFjNjc3OWM2MjhmM2VjMGVjM2JjY2M4ZjFhIHJlbGVhc2UzMS1tYWludAorODc4ODIgMGM5NGM2ODFmYzUzMjBkYzI4MDg4MTMyMzQ4N2Q0NmI5YTBjNDFiOSByZWxlYXNlMjctbWFpbnQKKzg3ODgzIGU0ZDA3YTZmN2FiZmMxNjYxOWZhNTg5MzExY2NjYzlhYjVmZTZhOGYgcmVsZWFzZTI3LW1haW50Cis4Nzg4NCA1YWI5NjM2NGU3NjE5MDBkNDUzMmE3MWU3OGQ5NDJjNGRmOTBiYmI2IHJlbGVhc2UzMS1tYWludAorODc4ODUgZGU3NjJiMDFjMzY2NGI0OTQ3Y2EzODIzNWViOWI1NjFhMjA5OWUzYSByZWxlYXNlMzEtbWFpbnQKKzg3ODg2IDU4YTFiN2U4ZTc1MzIzNjlkMGZjNWY5OWViYzEzZjdmMWQ2NjNmMzQgcmVsZWFzZTI3LW1haW50Cis4Nzg4NyA1Zjc3OTA3YjAwNDFlN2UxMmE5MTRmZjliYmY1NmY1NDkzN2NiMTEzIHJlbGVhc2UzMS1tYWludAorODc4ODggNGFkNjE5NmYzMGE1YjIyMDhhZmE3NjkyZTg5N2QzMmU0YWI1NDBhNiByZWxlYXNlMjctbWFpbnQKKzg3ODg5IGUxYjgwZTM5ZTQwZjMwYzMyNzUwYTJiMjkxNzZmMDVmN2M1N2ZmNTIgcmVsZWFzZTI3LW1haW50Cis4Nzg5MCBiMzNiZjY2NGM0OGFhNDk1ZThlYjk3MjM3YmIyYjc2MjBlZGI0YTMxIHB5M2sKKzg3ODkxIDE1NzFjYzA3MmZjMmFlMzA4ZTc5OTkzNDc2ZDJiZGFmODRhYTE3NTUgcHkzaworODc4OTIgNjgxZDA1NDJiYmJkMDdlNjQyODllMzljNzA1MzczOWQwNmYzYmQwOCByZWxlYXNlMjctbWFpbnQKKzg3ODkzIGZmYjJjMjRiY2I2MjZkZDhlMTJlOGYzMzQ5YTA5YTI5OTFjOTM0MDQgcmVsZWFzZTMxLW1haW50Cis4Nzg5NCA0YmQyOTZjNDk1MjZmNjM1MDM1NjFiMjRiNzcyYzYxNDBjYjUzYzU4IHJlbGVhc2UyNy1tYWludAorODc4OTUgYTIyZDYxYmU0ODQyYjQwYzc0NTQ3OWYwOWRiYTNlOWRjOWU0MjBhOCBweTNrCis4Nzg5NiBmZTZmY2FmN2JiMTdkYTRmZjA1OTU0Y2FjNmI5N2YxNTczNTIzMzU1IHB5M2sKKzg3ODk3IGY4YzY4MzE4NGFmZmRiN2ZmZmJiY2I1YmZlNDE5MmQ1OTNjNDhmODkgcHkzaworODc4OTggOTc0YjI3YzlkODQ5ZGY0YzlkNWEyMzE2Njk4YmRmZmY0MDU4ODg4YSBweTNrCis4Nzg5OSAxYTM3ZjRiYTFmOTIwMTgzZmU4MjE2NzJhNDczZjE4M2E4N2QzZGQ3IHB5M2sKKzg3OTAwIGMyYzRhOTk0NDU5NmY0YzEzNmUwNDg3ZGQzZDNlZTNjZjg3M2ZiNzEgcHkzaworODc5MDEgYzRhNTI1MjZlNzdmYTY0MjE2ZGIzNGJjMDM3Y2I4NzdiOWIyMzQ2ZiBweTNrCis4NzkwMiBiNWE3OWI1Y2EyMDM3MmE2MDE3YjRhYWJhZjVmNzE0ZjkzY2FjNWZhIHB5M2sKKzg3OTAzIDNjMTJhYjllMjE0ZTllY2Q1MTQwZTIxMjI0MzdiMmI5ODI2NzUwYjQgcHkzaworODc5MDQgZWEzYWM2MmVmZTY3Y2Q0Y2RmN2ZhMjc1YzhiMGY0N2ZmMzRiNWMzNiBweTNrCis4NzkwNSBhMmIxNjFmMTc1MjUyZmRlN2QxNGZiY2ZlY2QxZTk3ZjAwNTFmODNlIHJlbGVhc2UzMS1tYWludAorODc5MDYgNTY3ZDk2MWJlMDgzYzU3NGVhNjM0ZDkxNWMwZDE5MWRiZWM4YjBlNCBweTNrCis4NzkwNyBlYzU4ODkwOTc1ZjFkMmYwY2JmYzlhYmZlYmYxNmRiZWIyMGNiZjY4IHB5M2sKKzg3OTA4IDk4NTVjOGNjY2IzNmMwZTA0YWQxOTU0ZDIwZTc3ZWE0OGM3YzA2ZmEgcHkzaworODc5MDkgZGI3YTMyZDkwY2Y0YTJkOTM1OGI3MGNmMzRlOWQ2Y2Q0ZmUzM2M4NCByZWxlYXNlMjctbWFpbnQKKzg3OTEwIDNlNmRlODg1MWYyMzEwMTY1Zjc5ZDFlYjM0MGJkMDVkNjIxMWQ5N2YgcHkzaworODc5MTEgMTQ1MDUyMWI5ZDkzZjRhYzBlNWVhYTYyZGYxMWNmZDhhMzEwN2ExMCBweTNrCis4NzkxMiBlMGE2NmFhMzQyN2E2OTY5YjNjYTgzMTFkMGJiODM3NWRkNGVhMjQ2IHB5M2sKKzg3OTEzIGU0N2Q4ZDk1NWJkNjEwODNkZjE5YzMxZGJiMzZiMjA2OTM4NDgwYzMgcmVsZWFzZTMxLW1haW50Cis4NzkxNCBhZTk5NGJkNDY2MTc4YzkyZTg5M2ZkNDQzNWZkMGFjM2FkNjhmZTliIHB5M2sKKzg3OTE1IDY1YWRkN2E0MGY3MDIyZjI5YzQ5MDViMzYwMWQxMjgyOWYyYjZiNDcgcHkzaworODc5MTYgZWRmMzAxYWYyNjE2MTNhZGQwYjczOWQzOTVjNzFiNjU1YWY4NjkxNyBweTNrCis4NzkxNyBhYzZjYzE0MDRlMTUwNTc0NDBlY2VhODA2YzdmYTAwN2Y5N2U1ODAwIHB5M2sKKzg3OTE4IDFjNjVhYjQ0ZDM2NzFiM2Q0OGZjYTQxYjYyN2ExNTQ1ZTE3MGJhMTQgcmVsZWFzZTI3LW1haW50Cis4NzkxOSBkNzA1MjJjYzlkNGZlN2E2NDJlMWQ1NzNmMTk3YmQ3MGMwMWMxNGMzIHB5M2sKKzg3OTIwIGFkMGViNTdlYjJiNWI4NzZkOTdhMDczNTFlNTlkMmE4YmYxMTE5Y2QgcHkzaworODc5MjEgYzBmM2FjMTkzOTJiNjE5MzQzOGY4ZmVmY2M0MTViZTA1OGMxMDYyNyBweTNrCis4NzkyMiBiMTZiMGQ3NTRmYzkzYTU3ZWFjNmQ5MTAxNmYwZThmZWI4NmNkMTI2IHB5M2sKKzg3OTI0IGQ1NzM5NzEzMTEyNDJhZTg4MmJjMGFiOWUwNTk1NjA4NDY3ZTJiM2QgcHkzaworODc5MjUgZGI4ZDE1OTMzMTIxYzI3ZmI2MGVmN2Q5ZmE0YjQxYzI4MmU5ZjIwOSBweTNrCis4NzkyNiA3OGZmMDhjY2QxOGI3ZmRiYTlkMWZjOTFlYjQ0NGUyNTA3ZGYwM2Y0IHB5M2sKKzg3OTI3IDc1MTM3MmI3OWVkNjkyNWE3NzE0YzQ1NWQyZjY3YjM1YmQyMzFiNzcgcmVsZWFzZTMxLW1haW50Cis4NzkyOCAyMDk2OTgyMWJiNjE0YTNhYjk3NjI1MmRlMzA3OTI4MjcyOThkMjk1IHJlbGVhc2UyNy1tYWludAorODc5MjkgN2I1MTU5NGExNWRlZDE1OGQ0YmIyNzQzODVlZWJjMmM5ZjM2ZTg2ZSBweTNrLWNkZWNpbWFsCis4NzkzMCBlZDZkMDUzZWViYTVlYjY3MmU4ODlkYzg4OTUzYTM2YzgxMGEyNDg1IHB5M2stY2RlY2ltYWwKKzg3OTMxIDlmYTA3ZTdjZGYzODYyYWY1MDdmMzM5NWZlZWI1YTMwMjI0YzFiMGUgcHkzay1jZGVjaW1hbAorODc5MzIgNGI0NjljODdkN2UyZWE4MTMzNTIyNDM5ZmUxMWI5MjQ3OGMzODQ3MiBweTNrLWNkZWNpbWFsCis4NzkzMyA4MzA5NTJhNzFkMjE3N2Q4MWE0YWRlZmEzM2I2NmM3OWZiNDU5NDFkIHB5M2stY2RlY2ltYWwKKzg3OTM0IDA0OGFkMDcxN2E0NTIyOWFmMzBiNzhiYzk3ZGE0YTA4NGI5NzMzYWQgcmVsZWFzZTMxLW1haW50Cis4NzkzNSBmODI3ZjcwM2VmNjVjMGU0MDNjMmVhOGNkNTg5ZDIyZDdkMzZhZTJlIHJlbGVhc2UyNy1tYWludAorODc5MzYgYTNjMzc5NThhMjA5NDhkYzU4YTFkMjBlMzc5NDcxZWY1NGMzNDRiNSBweTNrLWNkZWNpbWFsCis4NzkzNyA3MDdmODkyN2Q2NjMwNjBiN2MyZWM3ZDZhMTJlMjJjZmEyOTIxNjdmIHB5M2stY2RlY2ltYWwKKzg3OTM4IDIyNDRhYzZjMmE5YmZiZmQzZmM2ZDMxOGU0MzA2ZTUzMTZmYTVkOGMgcHkzaworODc5MzkgNTRjODY0NDQ1M2Y5MTM0ZGMxYjg1ZGVjNWYyYTcwZTFkMzk1NGYwOCBweTNrCis4Nzk0MCBjMGI5NWNkYWY0NjBhMmE4MjMzZmFhZmY5MDc4NjQwZjI4ZTI4ZmZmIHB5M2sKKzg3OTQxIGNiNzU0YTU4MmIzNDBjNTkwMTljNGQ0MzA0MzA3ODJlN2VhZTdlZWIgcHkzaworODc5NDIgMjU4MWExN2IyOWFmMDMzMTkyMjViMDNiODdiMDA0M2IxZGViZTA0YiBweTNrCis4Nzk0MyBkZjM0YmIwODY5YmM4NTJkNGI0ZmQwN2NlMjY3YjFjYTc3MDQ0NTMxIHB5M2sKKzg3OTQ0IGVjOTZiNWI1NzIzYmNmNDMyNjc1MDEyNDVjNDdjOThiZTljZjc0MTkgcmVsZWFzZTI3LW1haW50Cis4Nzk0NSAxYjFhNjQyOTcxNDk3YWQwY2U1ODBkNjcxYWY4MzE3N2ZjNjI5ZmNhIHJlbGVhc2UyNy1tYWludAorODc5NDYgN2YwZDBjOWEyZDcyOTM5OWMyZjI4Y2MzOTAyOGNjNTI5MGZjYWQ2NiBweTNrCis4Nzk0NyAyNjljZjQ2YzA5YWY1YjgzMzdiOTAyMTdiMjI2OTAyNDY0YWIyOWI0IHB5M2sKKzg3OTQ4IGZlZjUyMWY0NWFmM2E5MGE2OGI2NzQwOTcxNTMzZDUxYTc4MzdkZDEgcHkzaworODc5NDkgNDliMGIyYmMwZTgzMzFiZGY5ZTQyMGJkYWYzMmY4MWJkZjFiNmQ4ZiBweTNrCis4Nzk1MCA0MzUwNzIxZGVlNTUzZjNjYzYxNWZmYjQ2NDNlNzJkMjExYzIwYWU1IHJlbGVhc2UyNy1tYWludAorODc5NTEgNjAwOTM4OGNhNWEyM2ZmY2FiNzYyMTViZjNmOWJhMWM5OGEyMWMxMSByZWxlYXNlMzEtbWFpbnQKKzg3OTUyIDc0YmY5M2JlNTY3MTAyZDExOGY0MzQyODMzNGZjYTk1ZTMxNDdhMmUgcHkzaworODc5NTMgNjAxYmNiNmZmNzUyZDc1YzcwMmYxYmNlYjI0ODBkMTcwM2I2YTdmMSBweTNrCis4Nzk1NCAyMzZlMTFiYTE4YzU3Mzk2ZDU3MmU0YjgyZTRhNTcxZWY4ZjkzNmYzIHB5M2sKKzg3OTU1IDJlYTFjZmRmOTI5YmVlMDkzODZlNTYzYzBjMjQxMTQwNDA3MDU2ZjAgcmVsZWFzZTMxLW1haW50Cis4Nzk1NiBkZGFhMTdjMDk4ZDkzZGVkYzY3Y2I3NmFmNjA3ZjgyMzU1OTQxYWUzIHJlbGVhc2UyNy1tYWludAorODc5NTcgOTE0NDY4MTdjYzNlOGU3M2ZjZTQwYTc5M2Q3NTBkYzI2MGU1MDhmYiBweTNrCis4Nzk1OCBhNTAyMTQ5NjZkMjQ4MmVhNmVlYWUyN2Y2ZWNiMmEwNzRiMTZjMGY3IHB5M2sKKzg3OTU5IDc3ZmUzZjE2MDg3YWY5ZjFjNzM1ZTYxYThhZWQxMDE0ZGU2ZGVhM2YgcmVsZWFzZTMxLW1haW50Cis4Nzk2MCBhZWNjYmQxNjk3MGY4ZjY1YTIyZjZhNTdlZjA5OGVlMzBlOGQ5NDJjIHB5M2sKKzg3OTYxIGUxNTI2MGE0NGU0NDc4ZmE0NmRmNzBjMmVjNzkyMGIwM2RhYTNhZmYgcmVsZWFzZTI3LW1haW50Cis4Nzk2MiA1MDQ4YjI3MjAwZDc0YTEwNzVjZmU1Y2JlM2UwNzVlNTJlZWVhZWEwIHJlbGVhc2UyNy1tYWludAorODc5NjMgNmNjNTI3N2Y1ZTdhYTMzMzUyMWVjNzQ1NmZlMTViM2U2YWVmN2FmMCByZWxlYXNlMzEtbWFpbnQKKzg3OTY0IGFjMGViNWRmMmMwNWJlYzE4ZTNhOTc3YzJjOWMyMDhhNThhYzZkMDkgcmVsZWFzZTI3LW1haW50Cis4Nzk2NSBkMTIwMjE4ZDgwYWI0M2I0YzdlZTkyYTI1YmFhZjNmZWJkM2YyMWQ3IHJlbGVhc2UzMS1tYWludAorODc5NjYgM2VlYWVjZjAwNWMxNGQzOGM0ZjdkMjA1YTM1OWRiMWVmNjljNDMyYyBweTNrCis4Nzk2NyA2ZGNkNDkxNTA2ZWQ1MDUzMzE4ODQ3MmE1OTU5YjNkODJiN2UxNDJjIHJlbGVhc2UzMS1tYWludAorODc5NjggYjliNTUxZWQwODU4ZDJiN2RiMTQzM2IwMzFlODE1ZDQ0MjEyNzAyOCBweTNrCis4Nzk2OSA0NWEzOTFjZGM2OGFjMjhkY2QzZDRhYmY4YTJhMGYyMzY5ZmEzZjFhIHB5M2sKKzg3OTcwIDRhYmZiNzY3MGVhZGRhOTA3YmQ2MWUyMmUxNTIxOTcwMjMzNjIxZjggcmVsZWFzZTMxLW1haW50Cis4Nzk3MSA0MWJkYzAzMmU3MWFjZDdmNDQ1NTU0YTUxMWVhYTlmNWNiMDY2MDZmIHB5M2sKKzg3OTcyIGUxY2MzNTcyODQ4MWVlZGQ0Yjc1M2U2MGFiNzFhZjAyZTczOTA5ZTkgcHkzaworODc5NzMgNGU4NmQ2OTViYTk4YTU4MjI5ZGU0ODJlMzUyZDBiNjgzZjk2ZTFhMiBweTNrCis4Nzk3NCBjNjY5YTY5NzZiZjhjZjJiN2E3NDczNjEwNWU1NTJlYjRhYjAyNWVmIHB5M2sKKzg3OTc1IGNjYmQ2NTg3ZjhlZDVjODcyMmQwNDcyMjViYTNjMDFlMTY3MGJkYmYgcHkzaworODc5NzggZjkxNmMyYWEyMzhmZThhMjBjZTY1OGEyYjlmYWEwODVhZDAzNDY5YyBweTNrCis4Nzk3OSBlZmRmMjU2MTdiN2NkNDI3ZWE0N2I4OTRiZWMzYjhhYzJhZTllNTQ5IHJlbGVhc2UzMS1tYWludAorODc5ODAgZTEyNWQ5MmY3NDM4ZTEyZmZmOGYzY2QzZGM2NTk4YzczYzE4MDUwMSBweTNrCis4Nzk4MSA4NzE5ZGQ3MTIzODRkYjU5NjlhNTI5M2VkMmE0ZGMxOTczZTQzZmNjIHB5M2sKKzg3OTgyIDEwZDY3ZGI2Nzk0MjBmNGU3NTM3OTVjYjQyNjE5NWE0NmRlZDBmYmMgcHkzaworODc5ODMgY2JkYzhiMWU2YmQzOWNhMWM1YTliNGMwYzc5NjkxNjNjMDNiYjdlZiBweTNrCis4Nzk4NCA0ZWFlMzNmMzc5N2M1ZDFjZDIyZTY5ZDQ5ODQxZmViN2NmZTg3NzM5IHB5M2sKKzg3OTg1IDI1ZDUzZTQ0OTdkODUyN2Q4OWUyNjAwYjdkODVkNzlmMGQ5YTEzZWUgcmVsZWFzZTI3LW1haW50Cis4Nzk4NiAyZjA4OTRjMDJiZjJiODhjYTAyMmYxOWEzZTkyZGNlOGVmODJiODA3IHB5M2sKKzg3OTg4IDdjYmI1ZjNiNjk1NGI5YWMyZjI1YjI5OGE1MWE2YjAwNGI2NGZhNWYgcHkzaworODc5ODkgN2Q2NThiNDliM2UxNGU5YjE2M2VjMmIzYmMxNmQ5NDkxZDE0NTAxMCBweTNrCis4Nzk5MCAzYWM5YjdjZjc2MTRjZGUwMmY1YWRhMDUzNDViMzAzYjg1NmFiNzcwIHB5M2sKKzg3OTkxIDYwOGYzYTYxNThhOGM4MTMzNzg5MDc1MzIxNjFlYjE1NTU4MTlhOGIgcHkzaworODc5OTIgNDc0YjJjZTA3OTRmZmFmZmNhZTRlMzZkYzUxZmQ5NTFmNDU1YTFiNyByZWxlYXNlMjctbWFpbnQKKzg3OTkzIDAzNTNiMTYxM2FhODE0YmM2YzkzZTI0NDllMjIzNDliZTEyODhhNDAgcHkzaworODc5OTQgZjE5ODI0YWFiMzljODBiZDQ2Y2VjY2Y5ODliYTE2MDNjZmE4YzYxZCByZWxlYXNlMzEtbWFpbnQKKzg3OTk1IDI0NGEyNzQ3NzM5NmQ0YTI5ODA0YTRiZmJhYWUxMDY4YzM3MmY5YjEgcmVsZWFzZTMxLW1haW50Cis4Nzk5NiBmNmU5YWM0Yjg4MTM2YjM4ZDk0N2MxZTYwMTVmZmEyOTFhZjE2YWVhIHB5M2sKKzg3OTk3IDdmODg4OGI0ZmRmY2FmZTlhM2QwMGU4MjIxOWE2NWM5ZTFmZTczN2MgcHkzaworODc5OTggZDg2NDMyOGE3NGU0MTQyYWEyODZmODIyYzRiODI3ZDFiNzBjZDkzMCBweTNrCis4Nzk5OSA5NmZmZTRhMzExZGQ0ZDVmMDU0OGMzYmQwNWQ0ZTMzYmVlNGNmMzZlIHB5M2sKKzg4MDAwIDM1OTNiMGQ5Y2FhNzRjOTA0OGIwOWQ4NGUwMTlkNDE3NWYwMGMwMjYgcHkzaworODgwMDEgZmViZTA0YTZkNDg2NGRkODhhODgyZjE3ZjMzZjAxMDJiNDdmOTYyMyBweTNrCis4ODAwMiA0NDMwZTRkNjM1OTQ3YTJhMTRiZDU4YjM2NDQ0MjI1ODgxYTViMjE4IHJlbGVhc2UzMS1tYWludAorODgwMDMgMThhYjhlMGU2NzAyNWJjMzM5YmI0MmRkYmYzYmUwNDg5MzIyMjlhNiBweTNrCis4ODAwNCAyYWZjZGY2OGEzODkxZjc5NTJiYTFjOGUzMzMzNGQzNzliNjQ1MDFlIHB5M2sKKzg4MDA1IGIwNGRhNTQ0ZTEzYmJmNTQzZDdmY2RmMmZjYjQ0MDA1NmQ2ODM2MTkgcHkzaworODgwMDYgNDg0NTQ3NjVkOGUwY2U2NTUwYTA0YzRkNTNhYjM3YTI4YTk3Yzg2OCBweTNrCis4ODAwNyA5MTFkMGE3NDYwOWUyMTgwMjBkM2RmZTJlZDBhMTg0YzA1MGM1NTA4IHB5M2sKKzg4MDA4IDdiMmQ3Y2VkYWZiMGExMTYyZjBkMjViZmM4ZmI2MGNkZjU3MGMzZTUgcHkzaworODgwMDkgMGI0Yzk5NTI5OWRkY2VkZDE1MjdhMmNlY2UyYjkwN2EyNmVmYjEyNiBweTNrCis4ODAxMCA0ZGM1NTAzNzMxZmVhMTc2N2NkNmNhZThlZDlhOGMwZjNhZTM5ZGU0IHJlbGVhc2UzMS1tYWludAorODgwMTEgMjkzMDM5M2YwYmJiOTFkYTVjNGU2MDQ1NWE1ZTZkYWU0MWI4M2FhMSBweTNrCis4ODAxMiBhZTA5OTQ1ODMzNDUxYmI4Y2I1YzczMTllZjFhZTc5ZjkyZjJlOTk4IHB5M2sKKzg4MDEzIGMwYzU5NGFlZjg0MjM1ZTcwMGEyZjMyYWM2ZjQ5MjlkYmJiYzQzYTEgcHkzaworODgwMTQgMzk2OWE2Y2ExNmFmMjkxNzZjNDg2NTI4M2I4NmYyZTA4ZGU1ZDI5ZCBweTNrCis4ODAxNSAzZjk5YzM2ZDAwYjhhZDVmMjdjNTY5ZWMwMTg2NzJjMTYyNzU3MTVmIHB5M2sKKzg4MDE2IDkzYjdjMDU4MGM0MzQ2OWJmYmExN2NmNTExODg0NWQ4YzE0YTM0MmUgcHkzaworODgwMTcgZjEzMGJlMDFkMjMwMGQ5OTQzMmYzYmFlY2NlZjFmNGJhZjc5MTIzMCBweTNrCis4ODAxOCBiZWVhYjBmYTQxZTVlYWZmNjk2YWFlNTlmMjMyYzZiNDdlMDAzNzJjIHB5M2sKKzg4MDE5IGIwMzc0N2FkYTQ0ZDZhODAyNTEzNjEyYTJhNDk5MDdlMmI3Mzc2MTQgcmVsZWFzZTMxLW1haW50Cis4ODAyMCBlZjA3NzdhZjk5NzhlZTJiMjdmNDRiOTg5ZjZhY2ZlZjZmNGMwNWIyIHJlbGVhc2UyNy1tYWludAorODgwMjEgYjhmOTdkOGNkNDg1ZjI3YWQzNWMzM2RiZGE4NGFkMDRmMjBlYjAyMiBweTNrCis4ODAyMiAzYzMxNjIzNmVhYmQyYWVkNzdkYjU5ZGQwNmY5NzQ4ZGU5MjE2NGE0IHB5M2sKKzg4MDIzIDQxZDg3NGVjYmQ4MWZiNDY2MTdmNzhkYjAxNWE1NGUwZmZlODc5YWUgcmVsZWFzZTMxLW1haW50Cis4ODAyNCA3YWNiODM5ZjM2MTMyZWI0OGFjNmU4MGYwNjVhZTM3Y2E5N2JiN2ViIHJlbGVhc2UyNy1tYWludAorODgwMjYgOGRkY2FlMmI2NGI0NzFmZDNlZWE3MDI0OWMyMmFmNzM0MmQyMmUxYSBweTNrCis4ODAyOCA0YTIwZTNjYTI1ZTlhZDc4MTQzNGNmODFmNWFjMzRmNDYwODU4ZGYzIHB5M2sKKzg4MDMyIDkwNzZlNDIyMGZhNGYwZDM3MGU3MDc0ZWUyMDI3YmJlMDFkZWY5NTkgcHkzaworODgwMzMgZTg0ZDVlZmE2ZDc1NGIxM2U0NjdkYzliODQwODY4ODVmM2MyYWU4NSBweTNrCis4ODAzNSBhYjlkYzQyNTQ3YzA5OGUzNDc4NjRmNmEyMDViNGE1OTY2ZGJkZTExIHB5M2sKKzg4MDM2IDg2NWQ1YjI0YmYyOGNhNDFiNTM2YmVmYzMyNjQwN2MwM2U3NGE0ZDUgcHkzaworODgwMzcgZmUxMDIzYWY2YjU5NjlkNGM1MTRjNDJlOTFlY2ZjZWZjMTJiZTZhYSByZWxlYXNlMzEtbWFpbnQKKzg4MDM4IGFkYTcwMmMwNGQxNGMzNzRiZWY2MWY2MmYxZGJiZDU2NDEwZGM2OGEgcmVsZWFzZTI3LW1haW50Cis4ODAzOSA0MmVmYzExYWI3ODJkMGQxZDAyYzU4Zjg3YzYyZDE1OWM3YmU5OTlhIHB5M2sKKzg4MDQwIDg1NjVlNzIzYjRhMGVhM2RhYTE0YjUzNWVhMjQ1YWU3NDFjY2ZjZGYgcHkzaworODgwNDEgZmMxZDE1OTE3ODk1NWZjMjE5NmIxZDgyOTQ4YWI4ZGIxNDk0ZDNjYyBweTNrCis4ODA0MiBiMTEwNGI0MjUxMzRjNmU5ZGQxNjM4YmE0YmRjNDZjYzY4YzA2NTFhIHB5M2sKKzg4MDQzIDlmMjgyY2ZhODlhMjE4NmE1ZTk2YjNmMzVlNTMzNzk3NTc4ZjFmNjAgcHkzaworODgwNDQgYjdhOTdmMTFiNDFiMzc2ZDk0MWFiNDRkMzNiMWJmNDhhNGNhMDJmNSBweTNrCis4ODA0NiBjOTFkZTMyNjgzNWU5NzhmZDk1ZmU5ZTU2MGJkMDU2OTUzNTM2NWJlIHJlbGVhc2UyNy1tYWludAorODgwNDcgMWY2ZTA0NWU4YTY5YmFiNWM1NWNmNmUyZThiZGJmNjZiNzdhMDMyYiBweTNrCis4ODA0OCBkNjcwNDgyYTU4MjExNzVmOWNmOTExNzIzZGQwNTQzNWIxZDIxMzQ4IHB5M2sKKzg4MDQ5IDQ1ZGE4MzMyNzYzNWZkYmNkNWM0ODQ1M2ExMjhiY2IxNTFhZGYwZTMgcHkzaworODgwNTAgMmNmNjdjNmFhNmVlNjhmMGFiZTgwN2E2NTNkMjFkZWFkMGVmMWQxZiBweTNrCis4ODA1MSAzODQ3MzdhNzQwODBlM2UxNzRiNWU4NWM4ZmI2NTBkNTY1N2E3NjI1IHB5M2sKKzg4MDUyIDQ3MjRiOTRjNTc0NTY4YjYyMzhiZDc1MDUzMWExMjk4YmQ2OGI0ZDggcHkzaworODgwNTMgMzY4ZTkxMDMxODgwMjAwYjA4NGYzZjYxNmQ4ZjFlMmNiZGZmYzYyYiBweTNrCis4ODA1NCBhZWVmYTIyMWJiZTY1MjgwNWYwZjUyZjg0NjE0M2ZhYTM5MTk1MDNiIHB5M2sKKzg4MDU1IDY5MWJjMmMyZmMyMmQ1NWVjZGQ1NWYyYTA0YWM2YmViNmFkYmU2N2QgcHkzaworODgwNTYgNTI1YWVhYTNkNTNmMjlmZTUwYTQ5NjVkNzg3MmYxN2ZkMmM2N2FmZSBweTNrCis4ODA1NyBmYWVjMWI1YTk2ZGI3NDRkNzZiOTliMWUxMmM4NTZkMGE3NmY4MDVmIHB5M2sKKzg4MDU4IDM2OTEwODUxYTcxNWNmYjVmNTU0ZWUzMjI0NjBkNzEzZmE0YWY3MDAgcHkzaworODgwNjIgN2IzMWJlYjg4Y2RiMmYxOTY4MzA0ZTAyOGNkNDg5YzBjZGZhZWNjMyByZWxlYXNlMzEtbWFpbnQKKzg4MDYzIDM2NzRkY2I0MWE5NGYzMGMwNzBlOWVmY2RhYWI5NTk4OWRmZDcwMGMgcHkzaworODgwNjQgZGQ4N2IwZWZjZGQ4MzRhMmU1YmM0NTkxMDQxYWY2MjQ3NTE2MWNhZCByZWxlYXNlMjctbWFpbnQKKzg4MDY1IGM1OWNlYTIxODU0NzY3MzVkMGI3ZGVjNzM1YTk5YjgxZjU5NWYwZmMgcmVsZWFzZTMxLW1haW50Cis4ODA2NiBkZjhiNmEyYmRkZGQ3MmY4ZDQwYTgyNjQzMDExMWE5YTZlYWFhZGQzIHB5M2sKKzg4MDY3IDgxMWI0ZmI4ZjBjYzY5MjAxYTRiMTc5ZDBjZjI3MWI4YjBhYzVkNDMgcmVsZWFzZTMxLW1haW50Cis4ODA2OCAxZjZkMTQxOGNjMTgzMTY3YmJkYWY2YmMwYjZhMGM1ZmU4MGI5Yjc2IHJlbGVhc2UyNy1tYWludAorODgwNjkgYTc4YzZkMGMzZjY5Y2Q5Zjc2M2IyMTdhMGMzMzMzNGVkMTQ3Y2MzMCBweTNrCis4ODA3MCA2ZThlMGZlMTgyMDVmMDBhMjUyNjllMWI4NzI4MmQ5ZTM3MjY3ZGZkIHJlbGVhc2UyNy1tYWludAorODgwNzEgYjk0OGRiZDFmYWMxYjRiN2M2YjQxMWMxYWZjNjExYTVjNjhhMjhjZCByZWxlYXNlMzEtbWFpbnQKKzg4MDcyIGNhY2MzNWExZTBjM2QxNTlkZTgzMTQ5NDljNmQ0N2Y0ZmY3YjgwYjAgcHkzaworODgwNzMgZDM1YTI0YTk0NzE3OGQ0OTNlNDM3Y2FhZDJjYTA2MTUwNTdlMTJiNSBweTNrCis4ODA3NCA0ZDI3NWM1ODIxNGIzMTMyOTFkMjlkYTNhOGI1MmNjNDQxZmZlN2RhIHB5M2sKKzg4MDc1IGVkZTI2MGE1M2ZiNTBhODdhOWZmNGUyY2IyNzNhZDhiZDkwNTU1NDYgcHkzaworODgwNzYgMjk1ZmY1NWEyNjVlN2I4NzE0ZmIxMDUwZDM3NjkzY2Y5ODE0ZTU2ZiBweTNrCis4ODA3NyA5YTAwZGUyNTBlMWU0OTgyYzJjZDIxMjAwMjE2YzkzMmFjMmU4NWNlIHB5M2sKKzg4MDc4IDg5NjI4ZjNlY2RjYmI3YjlhZmQxMzQwZDVlNzdlZjAwMzE5ZjljNDQgcHkzaworODgwNzkgNDE1MTczZjg3ZjQ1ZDgyMWRjMTMyOTk5MGM0ZTI4NWE2NTIxODZmMiBweTNrCis4ODA4MCA2ZTY4MjY1Mzg5NzQzYjEzZWJkNWFhM2IzYTliMDkzYzM4NGM3ZDc0IHB5M2sKKzg4MDgxIGZkOGU4MGZjMmQ5NDM2NGVkNGU5NDI2MjdkNDI1M2RmOTgwMmY2NjUgcmVsZWFzZTMxLW1haW50Cis4ODA4MiA2MTAxNjI5ODEwZTAwZGQyNTE2MzczZGNjZWFiMDg4NzczM2VhOWFkIHJlbGVhc2UyNy1tYWludAorODgwODMgOTllYWI1ZWRmOTlkZWM3MmZjN2QwMzk3NjAyN2RjNTgzYjJkNjI0YSBweTNrCis4ODA4NCA1N2JkMGQ4NjRjYjAzN2ExNDdjYzFlMTBmZDQ3NzRlMGU3NGJlNGQ5IHB5M2sKKzg4MDg1IGY1YTNiNjM5N2E1MzhkODEwMjI5YzM2YzRmOTE0NDA5MmNkYmYwMGEgcHkzaworODgwODggZWQ4ZjA1OGRjNjRiMDc1Y2Y1NmUyNzk2ODMwMjE2ZjU0ZGFhMjUzYiByZWxlYXNlMzEtbWFpbnQKKzg4MDg5IDUyZTgwMjkxNGNmODk2MjBjOGVhNzg2NjYyMjMyYzRkNDRkZDFhYzMgcmVsZWFzZTI3LW1haW50Cis4ODA5MCAyZDQyZjY0YjI4ZmRlZjIxY2I4YTU5OTMxMGM2NDU5YzRhNGUyZmJmIHJlbGVhc2UyNy1tYWludAorODgwOTEgMzRkNDg4NDhkNDFiYzgxMWIzNjIyZmNjYWZkMmQxZjdiZmM3Y2JiNyByZWxlYXNlMzEtbWFpbnQKKzg4MDkyIGY0NDFjNmUzYTc2OTEyOWMxMTgwNGM3ZWU4MzQ3ZWZhMjU3NTUyMzAgcHkzaworODgwOTMgNGUwYmNlYzgwOWRkODA5NGI5OWYxZjUxNzI3ZDAwZDQyNzZhNmVhMCBweTNrCis4ODA5NCA3NjFlOWFkMTY1ZWYxZmMxOWJkM2Y1ZWMzZmQ0ZTI4ODBiMWUzZjdkIHB5M2sKKzg4MDk3IGZjNWQwMmFlNTJkZDZiZDgyNzUyMDNkNTcyZmY1NDg1MDZmNzUzOTUgcHkzaworODgwOTggMmZkZTVhYmZiNWYxYjdmYmEwZjE3OWRjMzJkMzg0MzIyNTY2Y2MwYSByZWxlYXNlMzEtbWFpbnQKKzg4MDk5IGVhYzU0NTdmZjE5NWIwOGVmNzU0NDA5OWIzMWM1NGMzYjIzM2VkNmYgcmVsZWFzZTI3LW1haW50Cis4ODEwMCA0OTZlYTUwMjhjMDFhYzVkNzI4MjE3NTM0MTFmZDcwNDM1YmMzYjY5IHB5M2sKKzg4MTAxIDM4MjRiZWYzNzZjYzdmZWFjZjMwODgwOWQ0MmQ3ODg0MTgyYjcxYTcgcHkzaworODgxMDIgMTA5YWYwMzlmNDRmMGQ1OTY2MjcyYWE1NmQzMWExMDYxY2QzYjg3NCBweTNrCis4ODEwMyBjYzg5NzU3MjRmOWE4YmY0OGE1YjNlZTQyMmEwNjk0Mjk1ZDQwNzE2IHB5M2sKKzg4MTA0IGQ3MDU4Zjc0YmQwNGI0ZmE2ZmQ1YThmNmQ3Y2MzZDllNDc3ZjYzNzkgcHkzaworODgxMDUgNDFjNTFmNWNmNWQ5OTQ4MDA2MmQ1MDA3MDIxNzgwMGJlMDgxNjhiYiBweTNrCis4ODEwNiBhN2FhODM3M2I1ZmNiNTIwNGE3MWY4OTZiOGQxYTExMmIwNTEwOWVmIHB5M2sKKzg4MTA3IDNjMWM4ZDQyNjk2NjMwMWFiZWVlMzg3MTdmOTJkMTVkN2Y4ZTUyZGUgcHkzaworODgxMDggOTkxNDcwYmUwMzQwYmUwYzZiYWRkNmYwMmZjMDIyNGU5YzZiMmE1MiBweTNrCis4ODEwOSBkZTkyNTM2MWViYTUxMTY3NjlkY2UzNWUxNmYyYWY5NGRiZTBiYWM0IHB5M2sKKzg4MTExIDkxYWJlODU1MDcyYTM2NmQyZDg4MThjMDUwMjg3NzMzNmQ2ZGQzYzMgcHkzaworODgxMTIgMDdlMWViMjQ0ZGY4OGIzNjgwMGYyYmE2ODdhMjgyMmU2NzNjNjQ4MiByZWxlYXNlMzEtbWFpbnQKKzg4MTEzIDAyZWMxOTk3ZDc1ZTg3Y2M1Yjk4ZjM4YjE0ZGE2ODc3ZTMzMjBmOWQgcmVsZWFzZTI3LW1haW50Cis4ODExNCBjMzU0MDBjMzYzMDRlODk3YTg0MGU0OGIyMjlmMzVjNzNhZmM1YTM4IHB5M2sKKzg4MTE1IGE5MjVlYTRlMTA1ZjgxNGZmYWZjOWZkOWYzMTRiOTFmYmYzNzRkZTMgcHkzaworODgxMTYgYjg4MGM4MjI3YzAyNzJjMmQyMTljMWI3NjlmYTQwMzExYWE4MWUyMCByZWxlYXNlMjctbWFpbnQKKzg4MTE3IDIzM2NjNzQwMjc0YjcxMjZiNDdmYWU3ODk1YjQ0YTAyNGY1NGIzYWUgcHkzaworODgxMTggZTRlNGJmYzA5ZTE4ZGIzY2ZjYzQ5YTViMGIyOTZlYjkwNGM3ZjBlYiBweTNrCis4ODExOSA2YjhiNmU1YWVjMGE1ZjQ0OGQ2ODUxYTRiY2Q5M2QxMDkyNWQ0NDgyIHB5M2sKKzg4MTIwIDdmN2MyYWFiODYxYzExYTg0MGY0NGJhNDFmMzY4ZGZmMDI5NDhhNWYgcHkzaworODgxMjEgZGE0NGJiMGNkNGU5OTJkODc2ODE5ZmY3N2EyZTFkMjNkNGYwYzYyNSBweTNrCis4ODEyMiBmYmViZjBmMDYwNTc5ODA5YjNmYjIzZTExZjg2Yjc2MTdiZDkxZWU3IHB5M2sKKzg4MTI1IDNiM2M1MzYzMDYzN2E1YTNiNzQ4ZGFhMjFhOWJiZTlmNTBiMmUyYWQgcHkzaworODgxMjYgYWVmNDgyNDIwZTk2Y2NiYTM4ZmU4MDcyOWRiNGU4ZmI4YTZhMzkxNiBweTNrCis4ODEyNyBjZTQwNzU0YTg0MmEzZGI1MWMxYzYyNDg1MDE3Mjg0ZTEyNTNkNDdkIHB5M2sKKzg4MTI4IDNkMzNmNDFlODE4ZGJmMWNlNmFjOGQwMWYwYWI2YzlmYjg1YTI3YjIgcHkzaworODgxMjkgOTNlOThkNDBmMmE1YTU0OTlkMTJkMjMyZDBiNTQwYjM1OGRkZWU0YiBweTNrCis4ODEzMCA1ZTcwZWVlODZjNjEzMGIxYmQyMTc2YTUzMDI4YjA2ODdjMWJlN2VmIHB5M2sKKzg4MTMxIGM4Mzk2ZDI3ZjU2ZThkNjU5ZWQ5MjgzNGY0M2U4NTMyNjZjYWUyZjMgcHkzaworODgxMzIgZjM2NTM4YmE5MGE4ZmEzMGEwZWM4MTkzOWY5ODg2MzI0OWFhNDg4MiByZWxlYXNlMzEtbWFpbnQKKzg4MTMzIGRmOTFhMDE4ZGUzYWI1MDU4Y2NhMDYxM2U2ZTNhMzIyNjVlYTZmYWMgcmVsZWFzZTI3LW1haW50Cis4ODEzNCBmYjY2OGFhYTJmYTRmMGQ3NWNhOGE4ODU1YjVmODBhOGY4ODVhNTg5IHB5M2sKKzg4MTM1IGU0ZTMyYzRmZjYyNjI3YTNlNWMwYjY0MTZkOTIzYmIwZTk0NWVkODYgcHkzaworODgxMzYgY2MyMTYyNzA4YmY2MmI1YmY3NWFjMTQwMGFhYTZhNzFhMDE4ZTk0YyBweTNrCis4ODEzNyA4ZTBiNjE3YzZjMjIxNmQzNDlkODE4OTRmMDM2Y2U0ZDM4NGJiNDRhIHB5M2sKKzg4MTM4IDE2NDgwMTFjNjVkYTlhMGMyNmRiYmY0NjdkNDE1YTY0ZGU5NDBkYWUgcmVsZWFzZTMxLW1haW50Cis4ODEzOSAyNDE2MWNmNDA1ZjRjMjIzNzQzMGI3ZmU5NmEwOTc4NTdkNGFhZWQyIHJlbGVhc2UzMS1tYWludAorODgxMzkgZGU4ZGI3YWFmN2EyOTYwNTdhZTI2MTI1Yjk5NjE4Yzk2MWI0ZmVmNiByZWxlYXNlMjctbWFpbnQKKzg4MTM5IGM0MDgxN2M5NTUxNGIxNDcxZGIyNjcwZTM0NzQ3NDhlYzg0MzkwYmEgcHkzaworODgxNDAgYjk2ODA1M2FmYWQwZGM1MWU4YjA4N2U1OWZmMTFlNTk0OTg2MzgxYyBweTNrCis4ODE0MSA3ODhiMDFiNWE3NGVhMTdjNjBmNzdkNmIyZDFlOWZhODBmNWI1NzhlIHB5M2sKKzg4MTQyIDMwYzkxMzQyYjZhZTYzNjViNzMzYjEzMzYwNzIxZGQ5NGIwNzJkNzcgcHkzaworODgxNDMgYjNjYWRmNWNmNzQyNmM1YjI3ODIwZTRmNzc4OTc5MGJkYzViMDAxMCBweTNrCis4ODE0NCAwODY3M2U1ZjU0OWEyN2NjNzE1ODFlNjc5OWVmN2QwZDZhYmY2YzEzIHB5M2sKKzg4MTQ1IGJhYTkyMmI0NjIzN2RiMmIyOWEyODQwMzE0ZGQwNmMzNzFlMTM5NTYgcHkzaworODgxNDYgNGY3ZjM5OTUxOTRhMWM4YjAzZDQzODYzMWJkNjhhY2E0ZTEzODEwZSBweTNrCis4ODE0NyA0YzRhYmZiODg0ZmI0OGZlMTVjY2Q2YWM2ZWJhNTllZThmZDUyZDIzIHB5M2sKKzg4MTQ4IGJjZjAzMGY3M2VlZWI0MTU3Y2Q5ZGY4ZjIzNTBhN2VkNTBiMzdmMzkgcmVsZWFzZTMxLW1haW50Cis4ODE0OSBiOGMwY2EzNTk3OWEyY2RlOGMxZjg3ZmZlNDI1MGQzZDg3NGQ1NmRlIHB5M2sKKzg4MTUwIDQzMWRkY2RiNDMxMDZhZDliNmJlYjM4YTY0YjZkOWYzMGZkMTA2YjcgcHkzaworODgxNTEgZmMyYWRlODhhYjQxNzlmYjhjMWVkMzk4OWVhY2FkNzBhMDAwYzU2YiBweTNrCis4ODE1MiBkMWMwNjMwNmMxOWJlODJiZTM5YjI0YmI2ZmNmNmQ1ZWJjOTFiMzU5IHB5M2sKKzg4MTUzIGEwYTVjNWQ5YWE0ZmRmMWYxNjQ0MjdkMDFmOWEyYzcwNjc3YmZiYzEgcHkzaworODgxNTQgM2JiMjFkZjY0YWE1MTIwMTVlYjRiYzQ2OTE4ZTU5YjFjZDRjZWEwMCBweTNrCis4ODE1NSA0MDYzZTUyNjk4MmYyNmJhMDJjMjYzYTJiZTdkZWJjODhlYTY2NTRkIHB5M2sKKzg4MTU2IDZmNDBiNDcwOWU5YTUyZmQ4ZWNhNjRhMTdiYzBiNDEyZTMyN2VjNzAgcHkzaworODgxNTcgNWE2NWVjMjg3NzEzNzQ1OTZmMmVlNGNmYjAyMzllYzMyNjZjYzIzYiBweTNrCis4ODE1OCBkZDI3ZGY4ZDE0ZWZjMTk3ZmViMTc5OTg4OTU5YTUyOTMwYmRhNWY5IHB5M2sKKzg4MTU5IDJkZTY5OWU1ZjhmMzFhNTMyMWUyMDc4MTgxMmRjNDE4YzY0M2M5ZGMgcHkzaworODgxNjAgOTBhMmQ5YjcwMmJjYmFhZmJhOWNhZDc3NzIxNmFiYTFkNWU3ZWNmYSBweTNrCis4ODE2MSBmM2JmZWIyZmJjZmIwNmQ1ZjNiZWIyODAxNGNmNDk5Y2RhMWRkNGNjIHB5M2sKKzg4MTYyIDAzZTJhODc1NTcwOTBhYTUyYmEwMjhiNGRiYjY2YmY3NDNlMjM1ZmQgcHkzaworODgxNjMgYzE3NWY1ZGZmMzk2MDRiZDkwN2U0NTI4ZTdiNGNkODQwZmM0ZDc1YyBweTNrCis4ODE2NCA4MjVlYmFkZWJmOWJhMjkyMTg1ZWQ2ZWRkMzQ4YjM1MzM3MjQwNmM3IHB5M2sKKzg4MTY1IDFlM2YxNjliOWU0NmFlNGUxYmE4MzEyMjkxOTJiYzVjYWNjNmRiZjUgcHkzaworODgxNjYgNzA5MTliYWQ3NDU4NDFkMDI2NmM3YWJmYjdjMWVlNmEyMzg0ODZlMyBweTNrCis4ODE2OSA3ZjlhOThmNzY2ZDc1YzliNTk0NDg5MDJjZGY1NDkxY2Q0NWJhYWRjIHJlbGVhc2UyNy1tYWludAorODgxNzAgNDczZTQzNjgzOWVlNjM5MWUyYzU3MDY2ZTFjZDUxZGViOWMzZWU3YSBweTNrCis4ODE3MSA4YTMwYTJjYjRiOWUzNDcyZDg5MmRiYTM2ZDhkZDBkOTBiYTI1ZThmIHB5M2sKKzg4MTcyIDU5OGMxOTVlNTJmMzYwODZmZTkzOTAyOGRjZTcxYzQ4ZmZmMTIzMjIgcHkzaworODgxNzMgM2I5M2QwMDk5Y2VkMDdjN2E1Y2JkNGFhOGE5ZWFkZDAzNzg5ODRlOSByZWxlYXNlMzEtbWFpbnQKKzg4MTc0IGIwMjI1OTU3ZTAwNjU5OTVmYjIxYTc4YTJhMzAzMTYzYTA0MDg1MTkgcHkzaworODgxNzUgOTNhNDFkZjhjNzM3OGNmYWI2Zjc2ODg1NmM5OGUyZmJkMmNjYWFmMSByZWxlYXNlMjctbWFpbnQKKzg4MTc2IDBiNTI5OGU3YjJkNTQwNWJkNzIzNzllZDY2YjM2ODMyODg5ODg3MWMgcHkzaworODgxNzcgZWI0YmEwM2Q3YzRkZjMyMzIyM2M3NmJiYzYxZDJjODFjMWM1NDJiYiByZWxlYXNlMzEtbWFpbnQKKzg4MTc4IDBkNmVjY2YwMGI1YmQ2N2QxYzIwOTllY2ZiN2UzODA5MzcwOTY0MjMgcHkzaworODgxNzkgNzEyODEwMTdjNDNmYzQzZmZiMTc3ZDJhZDgxZjA1ZTZjZTNmYTFiMyBweTNrCis4ODE4MCBmYWUxOWU1NTE3YjY1YmUyYmYzMDczZDMzNzUwMzgxNzIwZDYwZTNlIHB5M2sKKzg4MTgxIDAzMjIwZWQ0OGJjYWUwZGUwZmNjZGNiYzBhZDhjNjhhNWIwY2Q4NzkgcHkzaworODgxODIgYzJiZDY5MjA3OGQyMGU3M2FlNDE5NmQyZTQ4MWUyY2NiODc0YjQ4ZSBweTNrCis4ODE4MyAzMmM4OTY2ODhjOTFkMDY4YTg2M2I3NjNkMmUzNzc4MzVkYzRiYzkwIHB5M2sKKzg4MTg0IDA4ZjMyZDExYjdlZmJhMjU0NTVkYzBkNjk5NzJkOTc2ZjA2YjljZmMgcHkzaworODgxODUgODlhM2Y2YzEyZjAyMTJkZDYxZmY1YWUwMDljMjNhMjZmZWZkMzc5MiBweTNrCis4ODE4NiA3NTdhOWIxODM2YjE5ZjJiNjdmNmFmYjZiMTNkYWE2ZmQwOTQwOTk3IHB5M2sKKzg4MTg3IDAwNzUzZDA0YmJiZmIzM2Q1ODVhMWQxNjdiYjlkZDAwYWUwMmVkZDYgcHkzaworODgxODggM2NhYmNlMGI2Y2FmY2FjYzkwMThmYTVkZmFmY2EzZTBiYzJiODA0YyBweTNrCis4ODE4OSAyMTk3NTRlOWMzOWMyZmEwNjI4MDQwYzlmMmE3NWEyMzNiNjkyMzhlIHRlc3Rfc3VicHJvY2Vzc18xMDgyNgorODgxOTAgNzA1NzgwYmE5ZTNhMDUzYjVjOGM1MmIzNzZkYzQ3OWQxY2NjZmJmZCB0ZXN0X3N1YnByb2Nlc3NfMTA4MjYKKzg4MTkxIDc3NmMzYzI5NGJiNzM1YzQ4OWMwNDZiODhmODg3NWMwZTRmNGE3YWUgcHkzaworODgxOTIgZjYzOTJjNGNlNjE5ODc3NzdkZjdmYzkzNGZhMGI4OWU1YjNlYjRjNCByZWxlYXNlMjctbWFpbnQKKzg4MTkzIDMyZmMxY2FmZmIxNzAyNmZhODVhN2ZjMjJlNWQxMGE1NmQ1ZTliNTQgdGVzdF9zdWJwcm9jZXNzXzEwODI2Cis4ODE5NCA4MmI3ZjUzYzJhY2Q0YTkzYTdkYjNjNmU0NDIwMmM3NGM5OGVhMGYzIHRlc3Rfc3VicHJvY2Vzc18xMDgyNgorODgxOTYgZjk4YWQ2NTA5MDI5NWE1NDQyNGQ1YjU5ZTIzNjY3MGM0OTMxODcyYSBweTNrCis4ODE5NyA2NWIwOTdhZWRhODAxM2NhNzcyN2M1OTlhODAzMzQzZWY4NDAwNzBiIHB5M2sKKzg4MTk4IDdiMzBkOWNmYTBkOWU1MTg4NGI1NGYyNGFkYWJjZWQ1MjBkZGE1ZjUgcHkzaworODgxOTkgNDg3MThiMTljMGRjMDgyZTBhZTIwMWJkZGM3MTgwZGY4YzdmZWZmYSBweTNrCis4ODIwMCBiZGY5ODY0ZmQyNzYwODUzMDNhOWExNjBmZDRkOTY5NDdkNTNiMWM4IHB5M2sKKzg4MjAxIDFmMjE1ZmRhMjM4MzhjZTM3NTg3NzgxZDlhZjFmZDExMzdhZTg5MDEgcHkzaworODgyMDIgYTY3NWE0NDY4NjIwODQzOTc4ODVkMTdhMzA2MThiMDNmM2JkNGYyMyByZWxlYXNlMjctbWFpbnQKKzg4MjAzIDFkM2JlN2IwMWQ4NDVlYTY0ZWMwZjkzNDBkMmRmODQyZGYxN2EwNDUgcHkzaworODgyMDQgOGVhYTMyNzk3ZjkyZTI5MmU5NDVkMGMwZGU5MzhlOTIwNGNkMjY3MCBweTNrCis4ODIwNSBhYzQ3ZDExYThjYTI0ZDQ2MWY2MGE0NzliY2UwZjcxNjI5YjQ2Y2E2IHJlbGVhc2UzMS1tYWludAorODgyMDYgNDRjMWI1NmQ3Nzg3ZDcxNTIyMzI5NjQzN2VjNDM2MTk1ODg1NzlkOCByZWxlYXNlMjctbWFpbnQKKzg4MjA3IDgwNTYxNzZjMDUzZjA1ZmMxMTdlZDlhNTI2NTI5OTllNDlkMWYwNDMgcHkzaworODgyMDggMjc5YTBjOTU5ZjdkYWVmMGI5YzI2MTNlZTM5ZGQyNTE3ZmUwOWEyZSByZWxlYXNlMzEtbWFpbnQKKzg4MjA5IDU5MWQ1NGZmZTk2OWQ3NDY3Y2RjMTAxOGI4ODQ3YWQwYWQwOWFjYTkgcHkzaworODgyMTAgZjgyYTA0Y2IxNTBhMmMwNjhmMTU5YzllMzlkNzIwY2EzMDYxYWNjOCBweTNrCis4ODIxMSBiMGFiMzM1MjJkZGE5ZjgzY2JhZTE0M2RjOTlkMDdhM2FjMjIwOTliIHB5M2sKKzg4MjEyIDBlMzBkNDEzYjllOTdmNDZjY2E5ODBkNzY0ZGE4N2ZjNTI4ZTNkNzcgcHkzaworODgyMTMgYmFjMjk2NjgwY2Y4NDY3YmNkMmQ5MTdiNmE5YzZkYWQ5ZDJiOTljZCBweTNrCis4ODIxNCBiMjJjYzc1NjNiMjg4MjMxMWJkOWFkZWE0NmUzOTc4ZDMxODQ0NjNhIHJlbGVhc2UyNy1tYWludAorODgyMTQgZmMyYWI3Y2RkY2YwMDU4YTUxZjkxNTJmOGYxOWMwMzBlMDNkYWZmNiBweTNrCis4ODIxNSBkZDczMjg2NzI5NjgzMWUwM2ExNzgyMjAxZmNiMzBkNDhjMTc5NTJlIHB5M2sKKzg4MjIwIGQyMWNiNmE3YTE0ZWU5YWMzM2EwMzI3Y2EyYTkyZDYyNjQ2NWJmOGYgcHkzaworODgyMjEgZTc5NTkzMDlmNTljNjViNGVhMjg2MzZkN2IyMzg5Y2FlMjNkNzQ0YSBweTNrCis4ODIyMiBlNDA2NDNhM2MzMWRmZmYzYWJhNzZlZmM2NWY3ODY1ZGJkZmE2ZTE2IHB5M2sKKzg4MjIzIDdjN2VlNGUxMTg1MGQwNzdmNzU1NzZmYWY1N2I4NWNlN2Y4NGNmOWUgcHkzaworODgyMjQgMmRiNjE3ZTkwY2EwYzEyMGQzYzNhZjcwZjAyYmNmNzBiYWRhOGM2OSB0ZXN0X3N1YnByb2Nlc3NfMTA4MjYKKzg4MjI2IDNlZjg2NTMyN2Q3YjA1ODBlYzBiMDIxNGExMmM4YmQ1OTk1OGRlNDkgcHkzaworODgyMjggODUyMTg2ZTVhZTJhYzY5ZTIxZDA0MjEzMDI0OTgxNjdjNjA3MWRmNCBweTNrCis4ODIyOSBjZjc1MDBmMDgwZmQzYWM2M2U0MzBjNjRmOTM3MjkxNTQ4MWMyY2RjIHJlbGVhc2UzMS1tYWludAorODgyMzAgZDdjZDFiNjI2MDhiOTgzMWM1NDFmNDQwYTYwYTJiMzk2ZjUyOTczYSBweTNrCis4ODIzMSAwODVlMGRkNjM3OTZiODBkM2Y4ZGVlN2Y5MGVkNzNkYWZkOWIwOTY2IHB5M2sKKzg4MjMyIDVjNTE3MjRiZjQxMTE2YTA4MzJiMGMzMzc2ZGJmYThkMjEyYjQzNzEgcHkzaworODgyMzMgYmUxMWU1NjUzZmRhOTc1NGZlY2I0MTRiNDE2OGYzNGU3MjhjYTE3YyByZWxlYXNlMzEtbWFpbnQKKzg4MjM0IDY0NzEzZTMxNjgzZjhiNzFlMjRiNzljZjk4N2RiOWMwMzFkNTU4MTYgcHkzaworODgyMzUgMzM0ODEyYmE1ODc0MjJiZGM0Yjg5MGY3OWJkMzRjMTc4NWM1M2U3NCBweTNrCis4ODIzNiA2YTFmYjk0NjQ3Y2I0ZGRmYzhjZmE5ZGQ2N2Q4OGYzODc0MDc2MzM1IHB5M2sKKzg4MjM3IDJhYWQ3MDdlZGE2Mjc4YTJhM2M2NjU2OTA2NWVkNDE0YWIzMDMxMzggcmVsZWFzZTMxLW1haW50Cis4ODIzOCBmMTJmZTY4NWU0NGQyOGRjOTczYzYxMmQ2ZWViYWQ2NjAwMzAzYTY0IHJlbGVhc2UyNy1tYWludAorODgyMzkgNzkxZjUyZmJlNWUwNjBhZmJkZTQ1OWQ5MGNjYzc3YzkyODQ0NzUyNiBweTNrCis4ODI0MCA1ZjFhZDY1YTFiODRjNzc3ZmQ1MzQxMzkwMjVlMDc2NTQ1YmRhOTA2IHB5M2sKKzg4MjQxIDNjNzc3MmZmZmJhZDM0YTI2MzAyY2QzMzEyNDZkYjk1NWU0NDVlNTQgcmVsZWFzZTMxLW1haW50Cis4ODI0MiBjNjkwNjA5OTk1YTYyNzYyNzM3M2Q2NGZjOGFmZDc3OTNjZTQwZDFjIHJlbGVhc2UzMS1tYWludAorODgyNDMgYjBlZmI2ZjBmZTk0MzI2M2Y3NjVlMzAwYWRlMDExYzBkOGRhZjMyNiByZWxlYXNlMjctbWFpbnQKKzg4MjQ0IDBjNjA0ZTY1NDI5ZTMyYjgyMzQ3ZDk3MzE0MTg1NzVkZmUyODg0ZjMgcHkzaworODgyNDUgNDZmMDdkYzQzN2ZmYmQ3OTI1YTUzMWZlZWU0ODg3OTBkYzNmN2VlMyBweTNrCis4ODI0NiA4YTE5ZjYwMjljZTU5N2UyOTc0YTJlNGJiZjA3NWIzODQ1MDljOWFiIHB5M2sKKzg4MjQ3IGM4MjU4OGNhM2E3OTA5ZGNhN2Q2ZjkwMTA5M2NjYjRjOWY5MzkyODEgcHkzaworODgyNDggZDNiNGZhMmRkNzI4OGVjNzAxMTUyZjc3MDc3NTFmMjRmMDBkZDY1MSByZWxlYXNlMjctbWFpbnQKKzg4MjUxIDJjOTM3MmExYzY4NWI1YjkwZTRiY2FhNTU1YjA4NmZhNjFlMTEyMGMgcHkzaworODgyNTIgZGM1MDFlZmEwNWI0MTI1YmM1ZTViZTYzY2U5MzliZjIxYzNmNTcxMCBweTNrCis4ODI1NiAzNmVlYjI4MmNkODQ0ZWE4OTBkMjE4N2YzZjFhNDQzMGQ3MTc5MzdiIHB5M2sKKzg4MjU4IGJmYTU4MzVlMTBmMGU3MTg1YWQ3NDY0OGI5MWQ2MDdkNmQzN2I4ODEgcHkzaworODgyNTkgNTk1YzJiNTY2ODFlYmI3NmRkYTg2ZjcwMzFiYjkwODUyYTI2YjExMSBweTNrCis4ODI2MSBkZmJkOTU2OGY0OWNiZTkwMTczYjY2M2RmMDE2NmNlYjAxNWRkNDA2IHB5M2sKKzg4MjYzIDJiZWY3YWI2MjU2YjQyMTI0NDQ1OWRjYWNmYWFiNTNlY2E2MGJkOGQgcHkzaworODgyNjQgOTNjNDA4MWRmZDE5NWNiZGIwN2JlOGZlMTgyNWMzMjFkYzBhNjAwNCBweTNrCis4ODI2NSAyNjU3NGIwMjcwNDJjODgwMzFhNzhhNzY5ZWY4YjViNjcwMWIxZWU0IHB5M2sKKzg4MjY2IGFjZjNlMjRkZDBkMGRmZDFlMjBjOTA3ZDY5NmQzZGE5NjVhOGY1NmYgcHkzaworODgyNjcgN2MzZGFmYmVlOWQwYjZiMWMxMTIxNWE1MmMxNjljNzY4M2QwY2NiZSBweTNrCis4ODI2OCBlODI1MDE4MTJhZTNkMzE2NTYzNWQ5N2Y2Zjk3YTlmOGYxZGNmNzBmIHJlbGVhc2UyNy1tYWludAorODgyNjkgYTlkZGRmYmFiMjQxNzljMGI2OWViMDgzMTFjZDZlN2FlMTk1YjQ2ZSByZWxlYXNlMzEtbWFpbnQKKzg4MjcwIDE4MjA3YjlkOWE2MGY4MTU2MjBiZTU2ZTA1Y2EwZjVjOTc2OGQzMjQgcmVsZWFzZTI3LW1haW50Cis4ODI3MSAwZjBjNWY5YWNlOWYzYmI0YjUyMGJjNGY0NGQ5NDNlZGU5Yzc1OGIwIHB5M2sKKzg4MjcyIGRlNjc5MmJkZDk2NTkzYmQ1MWUyMTBiODc5NzkyMjEyYTZhMTg4MDAgcHkzaworODgyNzMgMDg2YzJiY2Q4ZDc0ZTZiNDQ3NDY4Zjc0NjM1ZmFlMjY0YWI2YmVmZSBweTNrCis4ODI3NCA0YTI3MjIyNWMzZGU3MWU2MWEwNzE4NWU0NDAzYjkyNGJmMGI4ODZhIHB5M2sKKzg4Mjc1IGJjMDlkYjgyYTVkMGY1NDM2OTEwZTUxMGY4Nzg3MjYwMDExM2EzNzQgcHkzaworODgyNzYgMDJlZmRiOWUwOWU5MGVjMjU5MDAzOTQ2ZDRmNDRmY2MxOWJhMTM4MiBweTNrCis4ODI4MCA0Zjk0ODczODQ2YTNmYTVmZjk0ZWMyYjU3OWFmOTk1M2IyMzUwYzQwIHB5M2sKKzg4MjgxIDBhOWY2ODBhMmNmMDVjM2JhZWM0YzY5YTRkNjdjMGRjZDE5OTBiNTkgcHkzaworODgyODIgOTg3ZTY2MTVhMDc5NmFkOTAwNGZjMWMzYWEwOTAxNDZiZWE1YjQwYyByZWxlYXNlMzEtbWFpbnQKKzg4MjgzIGE2ZGYzYzNlMzc0MjM2MTI0ZmY5Njg5MGM3NjM0NjJkMWMyN2E1YmMgcmVsZWFzZTI3LW1haW50Cis4ODI4NCAzMWY0MGJlOTIyNTI0YzYyOTNlZDc3MDY2MmU1NzBiMGIwMjYyZjE1IHB5M2sKKzg4Mjg1IDhmYTczYTA4ODVjOTVlOGUxNmY1ZGE3MDJlYWQwMjQyY2Y3YWMzYTcgcmVsZWFzZTMxLW1haW50Cis4ODI4NiBjYTkwOTQzOGNmOWY4OTFiZjA3NDc0NDRlNGZmZTYzOWViMDIzZjI0IHJlbGVhc2UyNy1tYWludAorODgyOTkgNzNjNDk1NzlhNDg3YzRiZDFiNzU4ZDhjNWNlMjg4ZjE0YTE0MzQ4MyBweTNrCis4ODMwMCA5MDBmYzFlZTQ0ODdlZmUxODc4MDA2MTBmODYzYzU2MGI0MzNmZGVmIHJlbGVhc2UzMS1tYWludAorODgzMDEgOTQ0YWRmN2VkYTJlYmIxZWE2MTE0YjUxNmJmNmExMmU5YjkxYjFkYSBweTNrCis4ODMwMiA5ZTY1OTUxMjY2YTIwNTEyOTUwMTU3ZWVlYTZkZGI4OTllY2JiZjk3IHB5M2sKKzg4MzE4IGFhODczMDA0Y2VhODBkZTdhZGZiZmIxNWMyNmU5MzAwYzlmNjhjOWIgcmVsZWFzZTI3LW1haW50Cis4ODMxOSA3NzNjYjMzMmNjNjNiNmM2YTdjNTUzNGMyODA2MWM0OTg1ODQwZTM5IHJlbGVhc2UzMS1tYWludAorODgzMjAgZDMzOTAzZWIzMzg4NTQxZmFlZDdjNDNhOTE3NWQxMDg0YjA4ZjNkZiByZWxlYXNlMjctbWFpbnQKKzg4MzIxIDE3ZDZmMTY1ZWFlOTdmOWI0ZWM2Y2Q3MWYxOWU1YjhjYWMwOGE1M2UgcmVsZWFzZTMxLW1haW50Cis4ODMyMiA1YmU3MDExMzkwODljZjhmODRmNTkyMjQ0MmU0ZGUzMjUyODgyNTg4IHB5M2sKKzg4MzIzIDhlOTk2OTQxOGRiZWJjYjhiYmY0NDlhNjU2ZjQzOWEzODQ2ZWQ5NDcgcmVsZWFzZTMxLW1haW50Cis4ODMyNCBiMjE3ODY0MTliYjgzM2RiMTM2NzAxMDI0Mzk1MzFjMWVkNTgwMWEyIHJlbGVhc2UzMS1tYWludAorODgzMjUgNzgyYmY1ZjM3YWNiMDZmZWQ2ZjA0YmQxZGMzZjFmZTc2ZWJjMzk3YiByZWxlYXNlMzEtbWFpbnQKKzg4MzI2IDJlM2M1ODQxYTBhNjY0MGVlNzY0NDFhNjYwNjhkMTdkOTYwYjMwNjAgcmVsZWFzZTMxLW1haW50Cis4ODMyNyBhMWQxYmZjMzgzZWZjZjZlMWQ3M2U4NGI4NjUzYzA4NWY4MTUxNzFiIHJlbGVhc2UzMS1tYWludAorODgzMjggNjI3MDk0NjExNWQwODQ1YzVmOTliZDM1N2M2Y2IyZjgyOGQ4N2E3MiByZWxlYXNlMjctbWFpbnQKKzg4MzI5IDAzODY0M2QzOWZjMTU2ZGYzYjM2MmZhZWE1NTBiYjUyYzJmYzAwMWIgcHkzaworODgzMzAgNDUwNjQ5NTY1ODYzMWJlYjkyZjBjNjE2OGU3ZmM3YjRiYzkwYjFhYSBweTNrCis4ODMzMSA4Y2MxMDI3OWFjN2RkNmU0Njc1MzkzZWM4M2I4YWMxMDNjMDg0MjlhIHB5M2sKKzg4MzMyIGU1NjY4YWRjMWVkOWU2YWJhMDZkZjY5ODVhZjUzOWY4MjA1OGQ2NTIgcHkzaworODgzMzMgMDc3NDZiZTBiYmFkNDdlNjZjMTU4MGMyYTMxYzAxMjE4ODdmMmEwOCBweTNrCis4ODMzNCAwYmJhNTMzYzA5NTlmNjI1NDAwZDVlZTc3ODIyODVkY2UwZmQxOGQ4IHB5M2sKKzg4MzM1IGY5MDJmYzc3OTNlMTJiNDhiNjAxMzhjMjg2ZTVhY2MzZDlkZGE4MTMgcmVsZWFzZTMxLW1haW50Cis4ODMzNiBmMjJjOTlkYjhhNDY1NmZmNTYwYzljNmYyN2NkZGJlZmI3MjNhYWJlIHJlbGVhc2UyNy1tYWludAorODgzMzcgY2U4ZGI0ODVlMjZlNDM1NjhhZDM4ZTYzYzhlNGI2ODY5ZTllNWQxNCBweTNrCis4ODMzOCBkYzU2YzgyNzFmYTg1MWZjNzBkNDlhYzcxNjdlYzgyZDgxNzViZjIyIHJlbGVhc2UyNy1tYWludAorODgzMzkgNDM1NTIxMmZlMmM0MzAzMTFhODJiMDhiOTIzMzA1ZmUyZGExMWQwNyByZWxlYXNlMzEtbWFpbnQKKzg4MzQwIGNjZmI1YmE1MGE0NGU5YzFjMDc0ZWRiMTQyZjgxNzQyZGQyMDU2MmIgcHkzaworODgzNDEgNWE1MDQ4NWEzNzVmMTFjOGUxNjBlODliMjUwNTc0NTAzNzlmODNhNSBweTNrCis4ODM0MiBiYzY4NWFkYmFhMTVjZTE2MmQ0NjFjYzEyNjUzNzg4MmZkZWQzZGY1IHB5M2sKKzg4MzQzIDQ2MGYyZjFjNWVjODNmYmMwZGQ2ZDk4MTZhMTZhZWI0ODA4MjhhZTIgcHkzaworODgzNDQgYmIzZjZkM2NjMGIzYzM3ZGRmMWRiOWY4MzRiODk1ZTRkM2IwZTNhZiBweTNrCis4ODM0NSA1MjY3ZTUyNjNlNDc3ZDRmZjg2NjU2MDdhYTU4MjhjYmJiMmJmYWRjIHB5M2sKKzg4MzQ2IDM5YjVmYzZjNzkyZDRiNTk2OWRjODhlMDFlMTlhOTY3ODJiY2Y1YzEgcHkzaworODgzNDcgODhkNjljMmY5ZWZhMzIzMzVlMzRkZjQwOTRhZjc2NjdlNWM0YWZhZiBweTNrCis4ODM0OCA5YjMzZDY1Y2RhZTRhZWI2NWNjMjhiODJkMzBkMTljNjBmNDQ1ZTA1IHB5M2sKKzg4MzQ5IDhkMjU5MjU5MTBiMTBiNTU2ZGM4ZjE5Y2Q5ZjdiNDBmMzIzOGYyNWUgcHkzaworODgzNTAgMGRhNjhlMmU0ZDc4MGI2OGJkNWZhZjdiM2Q3MWIwMDRkODZhMjNlOCBweTNrCis4ODM1MSBhY2E5MWM1NWYzOGQ0NTBmZmZkZTc1ZTI0YWY1ZGRjYTU3ZmFhYmMzIHB5M2sKKzg4MzUyIGFiYWIyYzUzZjU4ZmQzMzc0MDZiNGJhMDFmMDQ2YWVmYzMzNmEyYjQgcHkzaworODgzNTMgNDA1YTQ0YzZkY2VkYjQ1N2MzZDM5ZDQwNDM5OWRmYzVjOTI1ODAwMiByZWxlYXNlMjctbWFpbnQKKzg4MzU0IGI1ZTM2YTU0OWMyNTM3OTFlYTQ5YzM5Y2JiYTQ4MmIzYTY3OTk0OWYgcmVsZWFzZTMxLW1haW50Cis4ODM1NSA4ZTIwOTg2YjNkNmU5YjhkZGNjNmE1ZjI0Y2ExNWYzMTNlOGJhOTA3IHB5M2sKKzg4MzU2IDUxNmI5ZGI2YWZlNGFmNDhjOTkxNjc0YzBiZDA0ZTkxNTdkODgxNzIgcHkzaworODgzNTcgMzk0Y2IwMjI0N2ZjMzZiOTE2N2MwNjIwYjQ5MjQ1MmQ1Mjk1Y2ZhMyBweTNrCis4ODM1OCBiN2IxZGNlM2U3N2YyOTY1M2VmZWQxM2U0ZTEwYTE3NjIwZWY0ZmNmIHB5M2sKKzg4MzU5IGQ2MWViZmNlMThlZDNhZTEyYjhkZGVkNzRkYWMyNTFmY2VhNjVjNTMgcHkzaworODgzNjAgMTUxOGI5MzVkZTEwZTcwNzMwNTkxOGJmYmQ2MGU2YTliNzA4NTk1ZiBweTNrCis4ODM2MSBiNTcwMmIyMGI0NzYwZTU5MWJkNDA3NjcwNmZjOTAzMmViZjM4MGNmIHB5M2sKKzg4MzYyIGI0YzdkMjAzYzNkMTQzMGNjYjc1NTFkNDJjOWM5ZDJmNGYzN2NkODggcHkzaworODgzNjMgM2I5ZDdiODQ1NjE4MzkyODBkODhlYzExMTIzZTZkNzE4M2YxY2FjOCBweTNrCis4ODM2NCAwOWYwN2M3ZGMzZGMyNWRlMTU4OWMzMDQ0YmNkNjU4Yjc4MDUwNzY3IHB5M2sKKzg4MzY1IDNlMDIxMzY2ZTUxZmFjNjJhYTU0ZWNiOWM4MWQ3ZjVhMjdkNzE3NzMgcHkzaworODgzNjYgZjFmYWVjNDkzNTBkY2RhNmU4OWNhZDIwYzhmMTkzZDFkZTBiYTc0OCBweTNrCis4ODM2NyBiY2U3NTg5MzlkNzk5M2JjMDNhODE3ZjVhZTkxNGFiY2RkODk2ZjFmIHB5M2sKKzg4MzY4IDFkOWM1YTJhYTY5NGU3ZjJlNTI1YWViNGUxZDQ1MjQxZTdjNmQ4YjggcHkzaworODgzNjkgMjYxMzY3ZTllNmMxYzhhMWNkNmIwMmM4MWQ0MzA0N2MzZDBmZjI1MCBweTNrCis4ODM3MCAzNDExY2M3ZjY0ZGY2NjljNGEwMmJiZDg2ZGUzZTY5MGUzY2RiZTEzIHB5M2sKKzg4MzcxIDlmZGZjMDVlZmJiNWJmY2Y3YzdhNTU0ZjE3OTY5NDgwOTVmYzUwOGMgcHkzaworODgzNzIgOTQ2ZWNlMjZhNDhmM2JmZTlhZDhkNWMxNDJiZmEyNTVmMzdiNGQ5YyByZWxlYXNlMzEtbWFpbnQKKzg4MzczIDY4ZDYxN2RkMzBjZDM5MTk4ZWVmZGIwMDA2MTFjOGZhMjMyY2VlY2YgcmVsZWFzZTI3LW1haW50Cis4ODM3NCA3YzcxYjBhNWEyOTAxNGI5NjAwZjYwM2M4OWRkODg0NWYxZTViMzQ3IHB5M2sKKzg4Mzc1IGU5ZmI2ZDUwNDU5YWY1YzVkYWU1OWI1MTBhYjE1OWUxYzkwOGQ5OWEgcHkzaworODgzNzYgYmI3NTdmYWNiZmE2MTEyMDM2ZDY1YzU0ZmZmYzI5MTE2ZjVlY2ZlNSByZWxlYXNlMjctbWFpbnQKKzg4Mzc3IDU3NDJjNzkwODZhODc5ODA0NzZhM2QwNjU0ZDhlMWZkN2FlY2QxZTIgcHkzaworODgzNzggZjUyZTM1Yzc1ZTMzYzZmOGRkMTdkN2I4N2Y4ZDA3ZTFiNTdmZjdkMCByZWxlYXNlMzEtbWFpbnQKKzg4MzgxIGQ2OTY2ZDliNzYwOWZjYzczMWIzZjk4Zjk2ODQwYjQzMjkzNzFkMzEgcHkzaworODgzODIgZGNmMTc5MWNiMTc2N2E1MTY4NzQ4OTNiZWUwYTRiYjMwZWM4YTcxYyBweTNrCis4ODM4MyAwNzFkMjVhZmFkYWE4OTZlOTcxY2VjYWYzM2E2YzY3Mzc0ZTA5ZmEyIHB5M2sKKzg4Mzg0IDY0M2FjOTQ2ZWZmNDlmNDc1NWExYTEyYTI2NjY0NzlkYWMzODY4Y2EgcHkzaworODgzODUgMTQ2ZTgxZTRlNTFlNGE5NTQ3NWY3MTI5MGM0MTAyN2Y4Y2VhZjA3MiBweTNrCis4ODM4NiBmNWI4ODljMzZmOTkwYTZkZjhiMDE5NWUxYWFhOTFhMGM2MmYyNmE5IHB5M2sKKzg4Mzg3IDVkZmUwYzQyZmZlOGQ0MjI5ZGRjNWYxMmU1ZWE4YzViM2RmZjIwMDQgcHkzaworODgzODggNTZlNjE3YzJiNWU4M2VjMTcwYWE3MTE1YTNjNDg5OGE4ZjkxYzBlYyBweTNrCis4ODM4OSA3MmI0MmRjMDQxZjNmZjU4NzZiMmM1NTk2NGNlYmM3NmVjYjc2NGRmIHB5M2sKKzg4MzkwIDAzN2YxNmIwMmNhNTUyYzZmZDZjODkyZmZiNmQ2MDg1MWI1ZDBmNDAgcmVsZWFzZTMxLW1haW50Cis4ODM5MSAyYjQ4MjJiN2M0MjRlYzU5ODM3YmU2MTA2NWJkODFlYmYzOGMzYjc3IHJlbGVhc2UyNy1tYWludAorODgzOTIgZDFiNWQ4MDRkMmE1NDUyNzEzNzcxODI4MDI5ZDhiNTc2MjYwNmM2OSByZWxlYXNlMzEtbWFpbnQKKzg4MzkzIDgwODRjNjY4YjYzNzczNTU1ODRmODIxMGM4MmIzOWM0Y2NlZDJmODkgcmVsZWFzZTMxLW1haW50Cis4ODM5NCBiNDA5ZDdlY2I2NjU3NDI2MjQ2ZDk0MWE4MzhjMWM5ZmNjNzFhZjRiIHB5M2sKKzg4Mzk1IDEyYWNhZjdhNDk1NWRkYTUwYjMzOGEwODVlMWUzM2Q3YjJlZDBmOGQgcHkzaworODgzOTYgNGQyYTU4OTE4ZGYxNTg3NjJmYzU1ZTBlMTg3MjhiNDQ0OTE5MzU1ZiBweTNrCis4ODM5NyA4OWQ1MmVmZmMzMGFhN2QzOWMyN2FjMGQ4NTliZjRiZTZjZThiMTNkIHJlbGVhc2UyNy1tYWludAorODgzOTggZDliNzEzZTk1ZjM5ZTkwZDNhNWExNzEzMGI1YWU4YTY0NTFkNjY2NSByZWxlYXNlMjctbWFpbnQKKzg4Mzk5IDAyYjg4MTMyNmY2ZWQ4MmMwZTA5NjliNzViNWE2MmNmODZiNmUwOWUgcHkzaworODg0MDAgMjBkODI4NzNhYTk3N2E5ZjU2ZjE4YWIwMGM1MzYzNDBkY2E2ZTFkOSBweTNrCis4ODQwMSAwNmE2NTdkMWEzYWMxOTlmNWQ0MGEyYTQ0OTc1YmMzNmEzYjU3MDgyIHB5M2sKKzg4NDAyIGMzMTBkMjk0ZmRkZTBmYjA3Njk2NzM2Y2ZlY2E1ZTM5Njc5NDc0ZTkgcHkzaworODg0MDMgMmNiZTlkMDU4ZjdlOTJiMWRiNGM4NWQwYTI3MzU5YTNkYjFiYThhMCBweTNrCis4ODQwNCAxMTE1NzdiZjViYTg5NjZmN2JjYTk4ZWQ3OWNmZTEzNTkwYWVhMzQ2IHJlbGVhc2UzMS1tYWludAorODg0MDUgMTFjNjdhNjA4NGM4ZWQ0ZjJmMzExMWFhZDE5ZTJhZTA1MDM2NmRkOCByZWxlYXNlMjctbWFpbnQKKzg4NDA2IGJiYWY5MzA0YTBkMDRhMGNjNDI1OGYyNTczNTFlMDgxZDIwODQ4MzAgcmVsZWFzZTI3LW1haW50Cis4ODQwNyBmM2NlNGFiYmFhZjg1ZThmYjNkZWIwNThlMjBhYjVjNjM0NGZjZjdmIHB5M2sKKzg4NDA4IDg4M2EwMjNlYjk0MzNkNjJmMDI3M2M2YTcwNmZhOWNlNTFmMzFhMDkgcmVsZWFzZTI3LW1haW50Cis4ODQwOSA3ZDMyMDgyMGY0NjJkZDgzYjUzZjc0MjJhZTRkNmY0Y2ZkNTQ5OTEwIHJlbGVhc2UzMS1tYWludAorODg0MTAgYmE5NWMwYmRkOGE4ZDc4MzQ5ZTEwOTZkNDg0YTI2MjBiZjg0ZGY3NiByZWxlYXNlMjctbWFpbnQKKzg4NDExIDEwNjYwM2NhNTNjMzdjMGQ1YTgyMmYwODFiNDBlMWM5YzUyYjJiMTYgcHkzaworODg0MTIgNmE1NDMxMTZiZjE3NDc1YzIyOGU3NjA0ZjA1NzY4ZTc4MjE2YTIxOSBweTNrCis4ODQxMyAxOGMxZjUyODk2NTAxYzdlZTEzYjAzODQ1NGEzOWFjYjQ1YTg3OTc5IHB5M2sKKzg4NDE0IDkzZGY5NWU0MDNkMWE0ODYxNTFmM2U0YTkxZDVkMzYwNjc0NTJhZWEgcHkzaworODg0MTggYjQ1ZjRmMzlmMjA0ZDg2NWM5MmRmYzA3YjBkMzIzNGFhOTA1N2VmMCByZWxlYXNlMzEtbWFpbnQKKzg4NDE5IDA4ODU1MTRkODk3YzBjNGI3Y2JlMmFjZTNlNDI0ZjhmZDljNGFkYjcgcmVsZWFzZTI3LW1haW50Cis4ODQyMCA1YmFhYzE4NmYwYzI4YmVjNWEzMzgwZWMyMDZlNDI2ZTIzMGYzYTM0IHB5M2sKKzg4NDIxIDAzZWM2MWUxMzQ2MGIyNzFhYTVmNzlkYzY0ZDRhOTI5OTc4MmIwYTggcHkzaworODg0MjIgZDFkOWQ3ZTAwYjRhNWExOTg4ODIxMTlmZDEzOGQyNmNkOTdjNWRmNiByZWxlYXNlMjctbWFpbnQKKzg4NDIzIGQ4MDMxYmEzOGUxNmQzZWRjOGFjM2JiNWFiZGFkYzZhNzQ0MjU1MzYgcHkzaworODg0MjQgNDNhZjllMzZiZGQ1OGEyYmE3OGQ2YjBkZTJhZDQ3MGJjZmI0ZjNhYiBweTNrCis4ODQyNSAyZWUyYzc2MDgyYzhjNmFlZjVlNjI1NTYyMGRhNzY3MTMxNjVhYjBlIHJlbGVhc2UzMS1tYWludAorODg0MjYgOWZmM2I2Njk1NDhmODMyYTkyOWQ4YWJhYjQ1MTZiMTJmMDRmNTdiZiBweTNrCis4ODQyNyA3YTg5ZjRhNzNkMWFmZDY2NDQ5ZGZmN2QwYjU3MzFjNzZkZGU0MjIwIHJlbGVhc2UyNy1tYWludAorODg0MjggNWU3ZGQ2NTdmOWViNzUxZjNiMTRlNmViNTkwMDYzOGY1MjAyZWFhMyByZWxlYXNlMzEtbWFpbnQKKzg4NDI5IDkwN2YzODc5MjM1YThkNGFlYTYxMDI4YTI4YThlN2MzNGZjMDFmZjQgcmVsZWFzZTI3LW1haW50Cis4ODQzMCBhZDJmOGM2ODZlMDg1NWE3MjJkMzAwNzM1OWQyMzFkYTA1MWUyNjI3IHB5M2sKKzg4NDMxIDM5Y2YyMGQ1YWQ0YzVlYTU1MzdhOWYxY2MzMDVjNTNkZDg5ZWM5MzIgcHkzaworODg0MzIgNmQzOWRhZWRlZGQ1NTM2ZTc5ZmM1NmQ3MzI1ZjE1YzkzNWQ1M2VlYyBweTNrCis4ODQzNCA2YzFjYTlkZWI0MmE5NTI4NmJiMjdlYjU1YjZjYTRjNDJlNWNhNDhlIHB5M2sKKzg4NDM1IDE1YThlMjJjNDEwMWRlZGE5NWFlYWFhZDAxODE2Mzc3M2M5MWU2NjIgcHkzaworODg0MzYgMjJkOTRmNTViMGM3MDM0MmFiODdkZjk2YmY3OWFjYTc3ZjI3ZmQ0ZiByZWxlYXNlMjctbWFpbnQKKzg4NDM4IDkyZGViZGY5ODFjNWYzNDQzZTg3N2Y1OGI0ODYxMTU3YjdjZDI4NjQgcHkzaworODg0MzkgNmNhYjlhOTk0MTA1MDM1NDBmZTIxZGRiOTIwN2RmMzBhZWQ3MjAyYSBweTNrCis4ODQ0MCA1YWYwMzU1ODlhYTc3NzJlZmZkMDQyN2M2NzRjMjllOWUyNjc2YTY3IHB5M2sKKzg4NDQxIDVlMzc2NjkxNzJjOGQyNzgzNGRhZjg2OGU2ZGYyOGNjZDgxYTMwODEgcHkzaworODg0NDIgMTAxYmM2Njk1MWM3Y2E0ZTYzOWJkZTg2OWFmNDE1YzM0N2NmZmI5MyBweTNrCis4ODQ0MyA3ODhlYWZhZWY3ZGM0ODIwZGI3OGNiNDlhNTdhMGFkZjYzZmM1MGNlIHB5M2sKKzg4NDQ0IDU5MDBkOTQ4ZmU1N2E0Mzk5ZGMyZmZlYzNiYTEyNjRiMjE3ZDRlMTYgcHkzaworODg0NDUgNDk2YWM0ZDFhOWFiYjk2NWM5ZTExOWUyNDRlNjNjN2RiMTZkMTg0OCBweTNrCis4ODQ0NiBhMjIyYTAxNWUyOGQ4YWU5YWYzODk5MjU4ZGM2YzE1YzNkNDBhZGQwIHJlbGVhc2UzMi1tYWludAorODg0NDcgNjYzODFjZWM2YzczMjVjMzA2MDY3MzRkZDM3NjY1ZGQxMDRkNjVlYiBweTNrCis4ODQ0OCAyMDM5NDUwNjBiYWZmMjA2YTZhNzdjODZiYWFkODg3MDFhZDQ0Zjc4IHB5M2sKKzg4NDQ5IDBmNTJjZmM5MWZhZWMwODk5Nzc1NDg3YzJmZGIwNDQ1ZDMwY2VjZjEgcHkzaworODg0NTAgNDQxOTA3YzA4MTRlNWM3MWU4Y2U0NDkzNjQ5OGJmYWI3MzBlZDdiZiByZWxlYXNlMzItbWFpbnQKKzg4NDUxIGE4M2NjOTYxYzQzYTJkMzI2OWJkYTRlNzNjZWI5ODk5MWFjMzQyMTkgcHkzaworODg0NTIgMzVjMGUzN2ZlOTUwMTIzZjBiY2VjNWM1OTRmNTU0NWI5ZTZmNmY4OSByZWxlYXNlMjctbWFpbnQKKzg4NDUzIGFlYzk1MjdmNjIyMzI3Njk5NjcyMTk1OGQ4YzFjMzU2MmQ5YTVhNjkgcmVsZWFzZTI3LW1haW50Cis4ODQ1NSBiZjg2NDM5NWQxYzg4YjFjMzJjMmFmOTVhODhhODQ2ODE2NThiNDgzIHJlbGVhc2UzMi1tYWludAorODg0NTYgN2IwMTFjZjY0ZjkwNmMyMmZhOGNhZTRjY2ViNzU4NGE4ZDg0YzI1NSBweTNrCis4ODQ1NyAzNzFmMDRlMWJkM2Y4YjNlOTJiY2MyZGU2OGI2OWQ0N2I0N2ViMGQ1IHJlbGVhc2UzMi1tYWludAorODg0NTggNzkwMmY1YmUyYzkwNmJmMGI3NmFhNDM3ZDU3MDZkYWM3YmMxNGFkNSByZWxlYXNlMzItbWFpbnQKKzg4NDU5IDk4MzYzMDc5NzMzOGUyZGY3YjBhZWJlMGYzM2I0MWNiNmZmYmY1YzQgcHkzaworODg0NjAgNTFhMDgwYmFjYjI1MDhkNTQ2MGJhYzAzZDAxYjBjZDdlNDI0MGJkMSBweTNrCis4ODQ2MSBkYTVkZDNlMjNjODcwMjUyMDg5YzBjNGRmM2RjOTRkMjJmZjhkYWZiIHJlbGVhc2UzMi1tYWludAorODg0NjIgNmMxZTA1YTRiNTQxZjFlMjAxYWYzNDllZTQxODE1NGNiNTkzY2JkYiByZWxlYXNlMzItbWFpbnQKKzg4NDYzIDI3ZWEzYWUzNjJjZDUxZmY2YTJiYjAyZGIxNzQyMjlmODNkM2FhMmQgcHkzaworODg0NjQgOTU0Y2Q1ZGI1MWRjMzVlZjQzYjhmNDM5NDVjZGQyZmE4ODFmNWVmMCBweTNrCis4ODQ2NSA5ZjgxNDZmNDVlYWU4N2M5Mjg5NTM4MmEwY2NkMDA2N2ZmYTVmMDg1IHB5M2sKKzg4NDY2IGExZjM1YzIxYTcxMmMxMTg1ZjVjMGEzMjNiNTBiYzM2ODM5ZDUxZTkgcHkzaworODg0NjcgNjE0ZTMyOTAwZWY3ZGI4NmM2YTBjOGRlMWMwODczOThkNTI2NWY2ZSBweTNrCis4ODQ2OCBlYjhmYzFjZTFjODFlYjgzZmE3NmUyNjE5Yjk3YWFiYTliZTJhNTAyIHJlbGVhc2UzMi1tYWludAorODg0NjkgNDgyNTg3MTgwMjU1YTUxYjA5MjE2NDVlZTY4NDFlMzZiNDgxMDRhNiByZWxlYXNlMzItbWFpbnQKKzg4NDcwIGIxN2JiYTFjNzMwM2NlN2U1OWRmYmMyNzhmNjRlNTU3OTY3MzJmNDAgcHkzaworODg0NzEgNDUwZjhkNTFkZGE4NjliM2YzNTgyOWVjMjU1NmExY2FiZjc0OTYxNSByZWxlYXNlMzItbWFpbnQKKzg4NDcyIGZmODZhMTc5YmMxM2NhNzEzNTM3MGI1NzNhMmZlNWUzNjM4NTk4ZDcgcmVsZWFzZTMyLW1haW50Cis4ODQ3MyAxODUzOTg5Zjc0ZTc2YWI0NzVjYjI2NDU0NjdiY2I5YTg4MzA4YTIwIHJlbGVhc2UzMi1tYWludAorODg0NzQgMTU4ZDZkZWYyZWY4N2YzMTI5YWUwZDQxYzZmZDIwNmExYmRhMzU3MiBweTNrCis4ODQ3NSBhMDM2YzMwYWI1YWU0YWM5ZDcwNWJmZTdmNjRhZTNkNjE2NTBjOTkzIHB5M2sKKzg4NDc2IGFiMTY2NGIyOThmY2RiMWY4ZTk2YzliM2Y0MGFjOTdlZjkxNjBkZTEgcHkzaworODg0NzcgMDBhNGZmYTcyZGJlM2QxZWExZDJkNDZmMzUyNjk1MTA0NzkwNzJlNyByZWxlYXNlMzItbWFpbnQKKzg4NDc4IGJiODU3ZDljMzA3MTIwYzVkZmEyMjI0NDYxY2I0NTljNzc3NWZkMjYgcHkzaworODg0NzkgMjg0MDI2ZTAwMzQyZDRhZWUzMjkwYzgwZGVkMmIxYTYxN2U0YmI0ZSByZWxlYXNlMjctbWFpbnQKKzg4NDgwIDJiOGU2YTIxYWVhYTE5NTRiMzlkYmZhZTMyMWY5YTQzZjI4MTllYWIgcHkzaworODg0ODEgZWYyOGFhZDNiYmFlMGY1N2YyNjRhMGFiZGU1ZDU0YThiNjE3ZGE3MSBweTNrCis4ODQ4MiBiNGMxNWQ4NzA5NGQ5ZWE1MTdkZmRmY2RkNDVkYzU4ZThhNzEwYTg5IGlzc3VlMTAyNzYtc25vd2xlb3BhcmQKKzg4NDgzIDIzZGUzYWE3MjIzMDZkMmJmZmViMGZlY2ExNDU3NWIxMWNhMTkzNzcgaXNzdWUxMDI3Ni1zbm93bGVvcGFyZAorODg0ODQgZjVlOWMxN2I4NWFkMDZiMTdiZDVkMzFjZjg4MTViMGZkNTM3MzEwZSBweTNrCis4ODQ4NSBjNjA2MGVmNWM0MDUxNDZjZWQyMmJlYTQ4ZGRiMjQ4OWU4OTVmZjRmIHJlbGVhc2UzMi1tYWludAorODg0ODYgNDFjNTI4MDMzMGZkNjI0MmQ3MWUzZjBhOTIyMWU3NzI4NjExNTIyYiBweTNrCis4ODQ4NyA0Mjk1ZTA5NWFkNGZiOGU5MmJjZjYxZTYwYTUwNmU5ZGY0NGE0MWRiIHJlbGVhc2UzMi1tYWludAorODg0ODggYjU1ODY5NTk4NjgzZmE5YjViN2UwNDkxMzJhOTAzNGQwNzMyNmU3YyByZWxlYXNlMjctbWFpbnQKKzg4NDkwIDc4NjYwNzE0ZjE3YTM1NTdmOGI1ZTQxN2ZhYmJhMjJjNzQzZWVkZTAgcHkzaworODg0OTEgNjdlYzI2Y2M0YjRmN2UzMWQzYzNjZDQ4NGJmYzcyNzc3NWNkNzdiOSBweTNrCis4ODQ5MiBjZTIwYWM0MWUzMWZkOTQwNDA0Y2QwOGM2ZjgzMmQ5ODYyMDZkZDQwIHB5M2sKKzg4NDkzIGZlZDc2OGI3MTEzNjE4M2Y2ZTI0MjU2NmY4MGFmYWVhNDNkYjdlOGQgcHkzaworODg0OTQgN2Y4NWZiYzE2Y2FlZGQwODM4MjgyZjgxY2RiOThkNjU3NDEwY2UzYiBweTNrCis4ODQ5NSA0NzNkMjMzYTA0NzgxZGZmMzc5MjczOWY5NzhkMzQ0MDA2OGVhNjdhIHJlbGVhc2UzMi1tYWludAorODg0OTYgYWUxODZiM2IyYzU1NmUxY2IzMmIzYzFlOTg2N2EwZDVmZTM4MzIzNSBweTNrCis4ODQ5NyAxOWRmNDc4MzliY2FiNTVmN2Y2MzE5MzZhMTE2OGI0ZDNkOTFjYmNlIHJlbGVhc2UzMi1tYWludAorODg0OTggZWEyNjBkMzkzY2RlZTNjM2UzNjE0Zjk1N2RlYjcyZGJkNzdmYjA3MCBweTNrCis4ODQ5OSBjOTBlMGU1YjBkMjU0NzEwNTFlMmFlNmMxMzJmNDU0Zjc0M2JkYWZlIHJlbGVhc2UzMi1tYWludAorODg1MDAgMzcyYjJlZjBmZjM3YjZhMWFhMTJlNDMwY2IyZGVjOTk5YjY0NzkzYyBweTNrCis4ODUwMSAyNDMzOWJmMGM3ZTY2YTdlYTFlY2EyYTUyYzI0ZjI4ZmNhZDRmZWY1IHB5M2sKKzg4NTAyIDMwNDExYWYzNGVlYmZhZmE3NTVmZTMzOGZmMzhlNTQyZDM3MDJhNWUgcmVsZWFzZTMyLW1haW50Cis4ODUwMyA1Y2U0OTkxODBkMjQ1ZjgwYjY2YTA1N2U4ZGVjYjJhMzM1YWQxZGM1IHB5M2sKKzg4NTA0IDk4MDY5Nzc2OTg2NjIwNWQwOWQzMDAyMDFmZjg1MjU3NzA0ODdjM2YgcmVsZWFzZTMyLW1haW50Cis4ODUwNSAyNDdhMjgxMDkzMmFhNTVjMTI1YzU2MTA2NWMyOTI3NDM0YzQwOTU1IHB5M2sKKzg4NTA2IGE3NTE1YTk0ZmRiNWI1MDU4OWIyM2YxMjFmNjBlZDRhOGRlZjZjMWMgcHkzaworODg1MDcgZTJmOTZiZDI5MjUyZTYyMWJiOWUxNTYzZmJiYjBlY2E4MjMxZGU1MyBweTNrCis4ODUwOCA2NDgyZGQxYzExZWQxYzFhZmI5OWQyMzRlMjgzMGYzNGM5ZjM0Nzg2IHB5M2sKKzg4NTA5IDE2ZWU0MmRlMGZhYjkyZjE5MGM4Y2NhMjc0Yzk0ZWQ0NmI0OTFkMWQgcmVsZWFzZTMyLW1haW50Cis4ODUxMCAyYjU0YmU2NTUxNjk4YTcxODU2YTUyZTVjMWFhZDEyMmM4ODQzMzM1IHJlbGVhc2UzMi1tYWludAorODg1MTEgMzI3YTVhNzhhMjU3Y2ZlMjdhY2Q5MDFjNjVlMDg0YmE3MTk2MThkOSBpc3N1ZTEwMjc2LXNub3dsZW9wYXJkCis4ODUxMiAyZjhlYzc3ZDMyY2Q0NzE4YWFjNzQxNTU1M2JmNzQ1ZDU4MzBhYmEzIHB5M2sKKzg4NTEzIDA1ODZjNjk5ZDQ2N2E2NGMzZTIzZGQ4NzZkMmQzNjJlNjMzZDg5MGQgcHkzaworODg1MTQgNjI5OTQ2NjI2NzZhN2JlNzkwZTBkY2NjNjMyODE4Yjc4OGY2YmYyMSBweTNrCis4ODUxNSAwZTlmM2JiNjNkMDBiN2FhNTBkZGJiMWU1NzY4YTA4ODFlMjJkZDZlIHJlbGVhc2UzMi1tYWludAorODg1MTYgMmY4OWNiYmVjMGI0ODRkMTFiOTY0MTA1ZDBkYzMyNDk2ZmFmMjhhOCBweTNrCis4ODUxNyAwODc0Njk4YjEyMDFkZjljMmVjOTVkMDlkZTgxMDg4ZDVkYzkxODkyIHB5M2sKKzg4NTE4IGVjM2MwNjc2MTg1NmRkNjMwYTk1ZTM5OTMxNjlhZmI3ODhlZTdlYzMgcHkzaworODg1MTkgYWMwZDhlMjFhNDdkZWI1NWVhYzkyNzQ5NGEyMzhjMTg2MmQ3MDA0MyByZWxlYXNlMzItbWFpbnQKKzg4NTIwIDQ0Y2M5ZWY0MzEyN2Y4YjZkOWI1ZmE0MWZjZjdhNjEzOTdiYTdkYmEgcHkzaworODg1MjEgZjJlZGFmNjJkODIzZmI2NmZlNzlmNGRiZjFiZmY3MzgzMjIxZTA4MCBweTNrCis4ODUyMiA3ZjhkYTEwYmZjZWZjZjM3ZWRjYTc5YThiYWRlNzhmYmQyMWIyY2QwIHB5M2sKKzg4NTIzIDE2NWQwMTVhMmJhZjA3ZjMzN2QwZjU2MmQzMmRjNWYyYmJmMGM2MjggcmVsZWFzZTMyLW1haW50Cis4ODUyNCAwM2Y3YWZiYzE2MDg0OGQ0ZTE3YjY2MGQzZGVmNTdkNzI5NGZiZDE5IHB5M2sKKzg4NTI1IGM4YzU3ZTc2NjQyODUzMWRmNjhiYWExY2Y1N2ZiNzY2YmY3MDkyNmQgcHkzaworODg1MjYgNzQ4NjFhNDJhNmU2YTI4OWMzYWI1Yjc3MTliZjBjZjRmMGI3NTAyMyBweTNrCis4ODUyNyBiYTFhZWIzNjIxODIxZjIyMjEyOTE0ZjU1ZDg3MThkNjU0YzUxZjZhIHJlbGVhc2UzMi1tYWludAorODg1MjggMDM1ZWZkYWY4MjI5Yzc5YzQyMGQxMDQ2MWIwNjhkZTRjNzY0Y2ZlMCBweTNrCis4ODUyOSAyMzI1ZmUzNmFhMzQ1NjYzZTk0ZWZkZjI0NjJkMDYxN2ZmZTRmNzY5IHB5M2sKKzg4NTMwIDVhOWQ5MGQ0Zjg5ZWI4MGYxMzQzYmNmMzg1Yjc3ZTg1MTVmZWE4NmQgcmVsZWFzZTMyLW1haW50Cis4ODUzMSBhYmExNmE1NjgzZDM2ODVlZWUxZDYxYWE3NDU2M2NiNmMxODBlY2FiIHB5M2sKKzg4NTMyIDMyMzg2ZmE2N2ExMmE3NjkxNzMzN2EzYzNiODM4NDI4NjdiMTk5ZDMgcmVsZWFzZTMyLW1haW50Cis4ODUzMyBjZjkxNzZmMmE2MjA1YWRjNGYzNDA0YjZlOTI2NmQyYTJjN2NhYjg1IHJlbGVhc2UzMi1tYWludAorODg1MzQgYTFjZmU4MTVkOTdhYWQwYWY0OTJlZWY1ZThlMjI5NjU5YzUxMzIyNyBweTNrCis4ODUzNSA1YTI5OGFmYWNiOTU1NDc1N2I3ZDEyMWFlOTBjMTY3Y2ZmZTI1NTcyIHB5M2sKKzg4NTM3IGRlNWMzYTM5YWRlNzI0ZGI0MjY1YjI4ZjBmNjAwZmMzNzg1YmE2Y2MgcmVsZWFzZTI3LW1haW50Cis4ODUzOCBlOGRmZTYwMmVmYTFjZGVhOThmYzVjZTFhODhhNTUwZDZlNGRkN2E3IHJlbGVhc2UzMi1tYWludAorODg1MzkgOTg2MWRjMTE4MzIyMmZlMGJiNTliZmFlZWIxMzEzMDkxMzBiMmNkZiBweTNrCis4ODU0MCA4YmE3NjUzMjgwMzA2YTQzZjA5Mjg2ZTY5MzliZWJiZmEyY2ZjNGIwIHB5M2sKKzg4NTQxIDczMjZmMDY0ZDgzYWZlYTUyMGNhNjYzYzhmMzNmYmFlZGM5YTk4NTQgcHkzaworODg1NDIgNjA5ZjJiODIzMzUwZTQyYzI2NjRlYmIwMThjYzg1MmE2ODc2OTQyMCBweTNrCis4ODU0MyBiZjg5MDZjZTEwNGI1MDNkYzhiMjg1YjZiMzQxZDAzY2QzNDNmMWUxIHJlbGVhc2UzMi1tYWludAorODg1NDUgZmQ2ZWM1ZTA4NGEyYzdlNmUxZDM1ZTYxNGZkNzY0NzQ5MDA4NzZkYiByZWxlYXNlMzItbWFpbnQKKzg4NTQ2IGRiN2VmMzRlZWRhZjViZWI5Y2Q5MjVhNjNhMGM0YzE3MzI0Nzg0YTEgcHkzaworODg1NDcgM2U0ZDk1OWY4ZTEyZWRmZWUyZWE1ZjVkMDcxN2Q4ZWU1MzMyOGQ5MyBweTNrCis4ODU0OCBmZWFiMjMwYmQwZGRlNDBhNTk5ZjA0M2U3Y2M1MmFkZjlhNmM5Zjc0IHJlbGVhc2UzMi1tYWludAorODg1NDkgY2MzYzNhNDM4Mzk4ZGRhZjA5YTcyZmU0YjQxYzY3OTc2MTk1ODZjYSByZWxlYXNlMzItbWFpbnQKKzg4NTUwIDU3MGM1OTM5YmMwM2U3MjI4YjkyMDQwNTdmNmY5OGVhN2Y2M2M1NDcgcmVsZWFzZTI3LW1haW50Cis4ODU1MSBjYmNiMjZhOWQyYmRkZDkyMDRjYjk0MGYxZjYyZmIzYzg0NmNhMzE1IHB5M2sKKzg4NTUyIDQ1NzM5Y2E2M2ViMzQ1YjAwYTFhYjEwMTA5ODkyN2UzMzRlMmY2NDUgcmVsZWFzZTMyLW1haW50Cis4ODU1MyAyMzZjNGRjNmYwZTdkN2JiODI2NDdjNmQ4MzNlY2ViZDBlYmE0YThlIHB5M2sKKzg4NTU0IGM4YzBlNDI5NDRhMTY5N2E2OTljM2FkMmE5ODMwOGFkMDExMGQ2NmQgcHkzaworODg1NTUgMzY0ZTRjMTA2Mjk3ZWFmYWU2ZjI0YWJiOWM0MTcyNWViYzYzZDYxYiByZWxlYXNlMzItbWFpbnQKKzg4NTU2IGIyNDVkNjliNGYwYWQ0ZTdhZjg2OTBhM2Y1ZDk3NWYyZjczZTZjZTEgcmVsZWFzZTMxLW1haW50Cis4ODU1NyBjNzk2NjVmYjI2N2FhMzc0NzBjZDIzNjVkMTcyZDljN2RlMDJkNjIyIHJlbGVhc2UzMS1tYWludAorODg1NTggNjE0YThjN2I5NTI1YWQwNjI4YTJkNjRiYTFlMDBkNzkwOTUyNGQxNiBweTNrCis4ODU1OSA5MjYyOWNjYWFlNzY0NmU1NGIyYzUwMzI3ZGFkY2RjZTVmNDZkOWI4IHJlbGVhc2UzMS1tYWludAorODg1NjAgNTg1ZGIwNjgwNjllZDYxNmVlZDQ0ZjI1MzM3NTVlNDkxYzIxMmM1YSByZWxlYXNlMzEtbWFpbnQKKzg4NTYxIGVmZjJlOGYxNWJlZDA4ZjI2NWEwYWQzMGVlM2FmNTJiOGE4NTU2MDEgcmVsZWFzZTMxLW1haW50Cis4ODU2MiA1YjM1YmJiZTMyZTcwYWI2NzBkYWI0MTkzN2I0OTQzNjNiODUyMmZmIHJlbGVhc2UzMS1tYWludAorODg1NjMgZTNjNjg0MTVhMzJkMTAwYzZkZTMyY2ZiOTI3MzQ5N2U0NDZiZmViMCByZWxlYXNlMzEtbWFpbnQKKzg4NTY0IGQzNTY2NDk1MDRmOWY0NzZhNzFlNGIxYjU5MjJhZTMyNWJlODI0ZWEgcmVsZWFzZTI3LW1haW50Cis4ODU2NSA4ZWVlZTlkNmQzMmI5MTMxZmMyMWRkNzlkYjUxOGU2MTZkZmVkYWMzIHJlbGVhc2UyNy1tYWludAorODg1NjYgYzdjNzZjZmJkYjRlMDE5ZTc5ZjY2MmUzNmIxNjE3YzU1NTExOTM1MyByZWxlYXNlMjctbWFpbnQKKzg4NTY3IDNlNWYyZTJhODRhYmU0ZThkMTM0ZGM3YzY1NGI3MmRhZDllZDY2NmQgcHkzaworODg1NjggMjI2ZjAwMWE3MDFmZjM0YWZiNWYwZTg4ZWM1NTg1OGE4NTVjOWE4MCByZWxlYXNlMjctbWFpbnQKKzg4NTY5IDM0YWUzMTYzMThlZjQ1NGY5YzIzOTNkMmUzYjdkNjAwYWY3ZjAzOTMgcmVsZWFzZTI3LW1haW50Cis4ODU3MCA3MjBhMmY0NGNiZjJjY2EwZjc0YzNkM2U1OWI1NjgzY2U5ZjUwMmY0IHJlbGVhc2UyNy1tYWludAorODg1NzEgNzhkYjNkMGM2ZGI3MmExYjZkMTlmMDk4MTZiNDY2OWIyOGU4ZDE2ZCByZWxlYXNlMjctbWFpbnQKKzg4NTcyIGIzNTZiODcxYmY2N2QyYjUwZmUzMGJlODdkNTA2Mjg0M2FkZTZhYjUgcmVsZWFzZTI3LW1haW50Cis4ODU3MyAwMWM5NmIzNzU4NmRkNjdjNDlkZmU3ZDZjODFhOWIxMTQyMzNmZTM1IHJlbGVhc2UzMS1tYWludAorODg1NzQgMDM1MjY3ODEyODJhZTI1OGJiNmQ0ZDE5NWRkNzhmNTM3YmVjZWI0MyBweTNrCis4ODU3NSA3NDBhYjkyN2JmODk4YmRjY2M2ZjE0ZTk1MGUzYTE0ZGQ3OGI5M2M0IHB5M2sKKzg4NTc2IGIxN2EwNjQ5MjliMDRjOGY3NmEzZTY5MmMwMmEwYjlhODViMGYxYTMgcHkzaworODg1NzcgOWZmN2JjMzYxMDYwNDMzOGRlZmFkMWFhMmUzYTNiZjRhN2YwNzhlZiBweTNrCis4ODU3OCBlYjVlZDNkYTY4NjIzNGEwMTU4YjRlMWIyNDVmZDdlYmVjOWViNDk4IHB5M2sKKzg4NTc5IDE3NjJkNzllYWI2NWY1ZmMzYjYyOTdiNTU5MzQ3NzQyOTNkZTBiNzEgcHkzaworODg1ODAgN2ZkODBjNjFkZGFhM2Y4MGViMjRhZTRmMjYxMzJmYmEwYWY3OGFiYiBweTNrCis4ODU4MSBkM2Y5M2ExMmQ2YTkxNWVlNDIzMDEzMDAwOTZlNzFiYTc5NjRkZjBiIHB5M2sKKzg4NTgyIDYzNmIyYjU1MjA3M2QxZjBiODJiZWJhMGEwZWQ0NTdlYjQ3MjQ2ZTggcmVsZWFzZTMyLW1haW50Cis4ODU4MyBmZDQwMTEwZDVkODczN2Y4YWQ3YTIyNDkyMmM5MjA5ZDM0ZjY3YTdiIHJlbGVhc2UyNy1tYWludAorODg1ODQgYmQyNTJjMTJkYTFkODgzYzQxZDNiYjYwYTI4ZjFhMWEzZDM4NjNhYSBweTNrCis4ODU4NSBmNGIxYTY1Nzk1NDE3YjRiYmU4ZWQ4OTQ3YjllY2IxODJkMmFkYTNkIHB5M2sKKzg4NTg2IGJlNmMzOGQxODE3YjMwMjBiNzYwNDAwYWEyZjVhZWY3MTdhOWM5MjMgcHkzaworODg1ODcgMzZjMWI2OGIwNTg2NWZiOWZhMTg5YjViOWUwZDFmODgwODhhMzJiZCBweTNrCis4ODU4OCAxOWQwN2ZhNDIwMDRiMTI0MWVmNjkzMWE4YjIxZmY4MDNiY2ZmZjA5IHB5M2sKKzg4NTg5IDg0MmZlZTZhZTBlNTAzMDg5MGVkZjVkNzA5M2JlNWI4OWE1Mzg2ZGQgcHkzaworODg2MDIgN2FiNTY5YjE4Yzk4Zjg4NGFiYTVlNWNiNTI3NTFmZjYzZmE5YWE3NCBweTNrCis4ODYwMyA4YzViODExNDg0YmMyZDJlZTEzNDZhM2RhNTQ2NTJjZTgzNDkyMGUyIHB5M2sKKzg4NjA0IDEyY2E0NzdjNDM3OGMxNzU4ZDA5OTk1MTZlMDliNDQ5MWNmMGFkNzMgcHkzaworODg2MDUgYjdlODVmZDBkMWM5MmRiOWZmOWIyZDA3ZTdlYTdmZjBmYmI2MTk4NSByZWxlYXNlMzItbWFpbnQKKzg4NjA2IDE4NjM2Yjg3MWQwMTc0MjI5OWNmYTgwZDM5ODU5ZmRjMWZiZThkNzYgcmVsZWFzZTI3LW1haW50Cis4ODYwNyA0YjYwNTIzMjBlOTgzYWQ3OThkNDFkMzBjNDk2ZmQ5YzE3MjEyNDA3IHB5M2sKKzg4NjA4IGEwMzgzNDI4NzJhMzRjNTRkNzA5M2E3NDY4MzhjMWVhZmE2NDFjMTcgcHkzaworODg2MDkgYTllYjAwODdiNjAyMTQzYmQ2NTlmYjFkYTk1YTA3N2YyNDM4MGEzZSBweTNrCis4ODYxMCA3ODU5MzNiYTQ4YWM2YjA0NzYxZTUwZjQyMDliYzYwODAxNDZlNGUyIHB5M2sKKzg4NjExIDY2ZWQ3MWE2ZTI5YThmMWJmMzliYmEzZjY4YjI2ZjBmYTYyMDg0NGUgcmVsZWFzZTMyLW1haW50Cis4ODYxMiA2NzViNDhjNGM4OGExYmI3MWU4YmFiNTFlZGQwNzM4YzRmMWQxNjE3IHJlbGVhc2UyNy1tYWludAorODg2MTMgNzA2YmU2ZWU5NjY4YjQ2NDQwNWJkYjY1YjZkODM1OTcxZmQ1YTkzMyBweTNrCis4ODYxNCA2ZjEyYWFkZmZjOWZiOTFkM2UxMzlkYWVhNjU2NTcyYjgzYjczZGEyIHJlbGVhc2UzMi1tYWludAorODg2MTUgOGIzZWY3MTliY2VkMmRhYThmODQwYjAxOTE0MmM2YjNlNTA0OWMyNiByZWxlYXNlMzEtbWFpbnQKKzg4NjE2IGRiNDZlZGEyMGZkMDI5ZmI3MDEyMDk0YzRhNDA1YjQxMzE3YzhlNGMgcHkzaworODg2MTcgYTc0OTI0ZWVhODYxYTlkZTk2MWY1N2QzZWU3ZDA2NjNmMjFkOTk0YiByZWxlYXNlMjctbWFpbnQKKzg4NjE4IGY3MWFjYzRiMjM0MTAyYjY3NTc5YmVkMmMxMzdlMGYwMmU2N2U2NWEgcHkzaworODg2MTkgODc0MjVkYzIzZjI2ZTVkZWYxY2UyYzZhMDJlM2IwMzNlZDMwMjJmMiBweTNrCis4ODYyMCBkMjE5MDA1MTE2NzVjZWE0OWE5MGM3YWNiYjAyYTFlZTVlZmM1ZDMwIHB5M2sKKzg4NjIxIDI3OTYxZGNhODMzMzAyYzFmMjE1ZjBjOTY1N2YwODJlOTI5YmMxMzQgcHkzaworODg2MjIgMTdkMWM2Y2VkZTdlZDNiY2NlMjUyMTUzYWVkYWE4MWIyODRkMDZjOCBweTNrCis4ODYyMyA1OWY5ZWQxMmYxN2E0ZWZlZjQzMTgzMDQ1ODVkMTYwMmVhYWQxY2ZmIHJlbGVhc2UzMi1tYWludAorODg2MjQgM2QzYmE0NTJmOGFkZWM1MzNjZDMyODYxYmM3Zjc5N2EzMzE4MjliMyBweTNrCis4ODYyNSBhYWFmN2I1OGUyMDkwYzJlYjY1MDg2Y2VkMzQzNGIwYTZjN2MwMDkzIHB5M2sKKzg4NjI2IDI2N2RiZDZjOThjMzE5MzAxZTk1YzcwMWNiYzFhODcwNmVhMjQ1MjMgcHkzaworODg2MjcgNTNhNDVmYjcwNzg2ZmEzZGNlZDEzMWQ3NmY5MzdhNGQ0ZTY4ZmQ0NSBweTNrCis4ODYyOCA3M2M1YWJiNDEyOTZkNjk5NzRmNmIyMzFiMTM5OWQwMmFiMGFkZThlIHB5M2sKKzg4NjI5IDJhMTlmMDI1Yjk3NGFhNWJkZTMzM2Q4YzE4YjA1MGU0OWZjMWExYzggcHkzaworODg2MzAgYTg2N2YwMmQ4ZjhkN2Y2YjJkOWMwZWU1MTcxZWUzZDlkMDdhNDE4MSBweTNrCis4ODYzMSA2NTRjOWYxM2NmZTllMTA3MmY0ZmJiMTIwYTU2ZDU1YzAyYzgzY2UxIHB5M2sKKzg4NjMyIGY0NTU1ZDM0ZjM0MGEzMDliMTAyYjAzMTE2Mzc4NjdmYjFhMDQ5YmMgcHkzaworODg2MzMgYjMyMjZhZDlhMzk4ZGY5ZGZiNmY1OTA3MjI3M2IwY2YxNzliYWU2YSBweTNrCis4ODYzNCBiYThlMzAyYjYyNmMwMDhkMWQzMWYzOWY4OTZlZWM3YWNmYTgxNzMyIHJlbGVhc2UzMi1tYWludAorODg2MzUgYzZkMzAzYjk5YzgyYWFmMjhhOGNmMTgxZjc5MmUyYTQ0ZjQxNmM0YiBwZXAtMzE1MQorODg2MzYgNGRkOTNkMGY1ZDFlMDc4ZGU3MzE0NzliMjMyOTJlYTMwNTlmNzE0ZiBweTNrCis4ODYzNyA2ODA4ZDVkYmExZWMxM2YwZmE5ODhiYTkyNWU4MWRmZDVkY2I0NjRkIHBlcC0zMTUxCis4ODYzOCA5ZWIyMDJlNjMyMGU0YWRjOTdlZGM5YzI4OWY2NzE5M2YwNWRhYjJkIGVtcHR5Cis4ODYzOSA0MDkyMjk2YTNkOGRhNWIxZjFhMDYyZmFjMjM0YTE0YWI3YTg1MWI1IHB5M2sKKzg4NjQwIDdmYTg2YTkxOTU2NzJjOGQ4ODg0ZWI3NjA0MmRjZTAzMjI1YjM0YTEgcHkzaworODg2NDEgNjBhNWI0YjIzNTVkZTVmNzM2NjY1N2M4M2ZjYjVkMjdmMTkxNGMyMyByZWxlYXNlMzEtbWFpbnQKKzg4NjQyIDBiNTk2ZmY2ZDQ2OTc1N2UyNzMyMDE3MGMzZjY4ZTJhMWE4OWYxZWUgcmVsZWFzZTI3LW1haW50Cis4ODY0MyA3M2RhZjkxYzYxNWM1M2NjNzhiNWQ0OWM4NjQwYzVhYWVjM2JiYjllIHB5M2sKKzg4NjQ0IDc2NDFmZTA4OWRhMWRhZDdjYWYzZjA5MzI4ZGQ0YTkwMGQ2NzNjM2EgcmVsZWFzZTMyLW1haW50Cis4ODY0NCA5MDdkNWIyZWQ1YTE5ZjVlMjNkNjE1ZDJiMjE0YmUyMWFhMGZiMjhiIHB5M2sKKzg4NjQ1IDU3MTdkZDIxNjZlZTA1ODQ2MjUyZmVkZWY3ZDhkNDk4NTQ1MjMzNDkgcmVsZWFzZTMyLW1haW50Cis4ODY0NSA3ZWVhMmE1NzRkZmM4NGM3MDkxODA5NDUzODhjOGRkZDYzM2JiNWMxIHB5M2sKKzg4NjQ2IDc2NGI5OWVlOGM4MTA5ZjQwY2Y4ZjAyNjNkMTYyMzZiZGJjZjFmNWUgcmVsZWFzZTMyLW1haW50Cis4ODY0NiBjODZmOTAzNDBjZDdkMjI3MmQ2N2ViMWM5MGY0MTVlM2VhYWM3NTNhIHB5M2sKKzg4NjQ3IDA3YWZmYTAzMzhiYWQyOTQxMDUxYTNlYzg2OWNlYjRlZjRmZjIwZTkgcHkzaworODg2NDggMzFkNGIwNGNiNWIwNTY3ZDJlZDRhZjc3M2QxODhmODQ1ZmNhZWRlMyByZWxlYXNlMzEtbWFpbnQKKzg4NjQ5IDk3ZDA1MGMzMTcyZjllMmVkYzgyYjI5MjI4ZGJkNjg5MWZjZDJiYTAgcmVsZWFzZTI3LW1haW50Cis4ODY1MCAyNzZkZTliMjkzMDMwYzEwNGRlYjdjNjc1ZTNhZjY5OTY5YTk4NzQyIHB5M2sKKzg4NjUxIDM3NGYwYjIyZTRhNGM1YjFiZTQwZDA2MWQ1Zjg0NjliYTFkNTRiMmQgcmVsZWFzZTMyLW1haW50Cis4ODY1MiAwOTEyOWFhZmI5NTM2YmRjZmJmZDdhNDRjM2JjMmUxZDAyOTcyZTM1IHB5M2sKKzg4NjUzIGZlZDJjNmQ0OWYxOTgwMDZlNTRiMzc5MWE0OTVmN2JiYWNiZTA4OWEgcHkzaworODg2NTQgOTc5ZGE4ZjEzOWRkM2Q2ZTIxOWYwYmFiZmY0NzZmOTVjY2U2YTUyMSByZWxlYXNlMzItbWFpbnQKKzg4NjU0IDZhOGZhMmU5YjEwNTVjYWQ3Y2MyMTgzOTkwM2Y5ZjM5ODNjMzU3ODAgcHkzaworODg2NTUgY2QxNDc4Mjg4NmNhYTI4NTAzYmIzNTZmNWIzYzM3YTQxZTIxMWI0MSByZWxlYXNlMzItbWFpbnQKKzg4NjU2IDcyMmFlZWI1N2VhYmJkZmY5YmY1MWI0Zjg0M2VhMWZjNDBmZWQwMTkgcHkzaworODg2NTggMTAyNTZiZDY4Nzg3OTE1ZjhmM2ZmZDU5NDYxMWQ2NzAwNjkwMjdlMiBweTNrCis4ODY1OSA1OWY3NGFhZDk3MDMxZjE5ZGVhZGNlOGY4NjkwNDVhZGZkOTg0NzkwIHJlbGVhc2UzMi1tYWludAorODg2NjAgYzc3YjI1YWRmZWMyM2M0MTQxYTUxY2RlMWE4NTkzOTVkOTMxMGMxNSBweTNrCis4ODY2MiBhNTgxMjljZGQzNjU3MzI0YTJlZjA4ODRkNDlmZGM0ZGJmYjRjNTE2IHJlbGVhc2UyNy1tYWludAorODg2NjMgODY4N2ExYjczNTE2Y2M1MjAzMWM3NzA5ODJkOTJkOTJmYmU0ZGJkYyBweTNrCis4ODY2NCAxOTA5YzEyZWYwNmM3YzFjMmUyMjQyNjI5YzNiODJkMWQ3NzQ0ODc1IHB5M2sKKzg4NjY1IDZjZWMwOTEwMjBhMmM5OTY5YWM4YWEyOTdkYWYyZjM2ZGVkNDlmZDQgcmVsZWFzZTMyLW1haW50Cis4ODY2NiA3NDJkNzNhOTk0MjU3NGI1MTMwYzk0ZGUxZjNhMjg2YzFlMjI3MGNiIHJlbGVhc2UyNy1tYWludAorODg2NjggNjUwZDE0ODIwYmQ4YzY2ZGY0YTBiYWE1ZDFkZGFlM2Q0MDg3NWIwZiBweTNrCis4ODY2OSBhOTU2NTkyNWJhNzA2MWQ2MzcxODQwNjRkNzhmYjUyZjhkYzgyYjIzIHJlbGVhc2UyNy1tYWludAorODg2NzAgYTViNWZkYTY2ODljNjUzZDg1ZDZmNDdlN2UwYTQ2ZDRlMjFkMWIzZCByZWxlYXNlMzItbWFpbnQKKzg4NjcxIDJmMDdkMzc1Y2U2ZWVjYWI0NzFlNWQ4ZWJiODg5MTA2ZjE2OWRhMTAgcHkzaworODg2NzIgNDU2NTBlYjM0Njg1MTE3YTdiODZmNzU2ZmIxMjZkY2IyZjNmZDUxMSByZWxlYXNlMzItbWFpbnQKKzg4NjczIDIxNDM2ZTQ4MTYxZmMzMTcwMjAxMDAxY2NhYmE3YTU1YjM5ZGI1NzUgcmVsZWFzZTI3LW1haW50Cis4ODY3NCBkYzg2MjZlMDg1NzdkNmIxZmQxMmU0MGZkNTljOWU1MjMwMDhkNmEzIHJlbGVhc2UyNy1tYWludAorODg2NzUgNzI4ZmJjMjYzNTljMTA3ZmY3NTVjZTViYjZiOWIzYjA4MGYxYmVmMSBwZXAtMzE1MQorODg2NzkgY2JkMDYwODEwM2Y2MTA2ZWZhMWQ2NTIzZDllMGVhYjk5NGRjYTE0ZiBweTNrCis4ODY4MCBiN2Q2MmJjMDE5OTg4OTIxMmJkY2Q0MGQ1ZDA0YTNjYTk4OGQzNDVmIHB5M2sKKzg4NjgyIDJkZGNhNTVlMDk4ZGRhMmIxYTY4NTZhMzU5ZTE5Zjc4ZDk4NWM2ODggcHkzaworODg2ODMgYmJkZGFjNWMxOGQzOTgwZTc2NThhMDliZDRmZTg1NDE3OThjMzUzYyBweTNrCis4ODY4NCA3YzZiMjFkYjAwZTNlM2YxNTVkMmI4YTkxZDEyY2QyODQ4MjA4NzRlIHB5M2sKKzg4Njg1IGEyZDYxMTE3YzJkMjY0OWY5MDkwZjY4OWFhODVjNTU3NWE2ZDczMzkgcHkzaworODg2ODYgMTBiODM4ZjZlNWExYTk0YmE3M2ExZDNjNjVjOTUwY2RkOGQ1ZGIzMyBweTNrCis4ODY4NyBmZGYzMmZhMGY0NDBlNzFlNTBkMGZmYzM1MjI5ZDZhMTRjN2QyYTQyIHJlbGVhc2UzMi1tYWludAorODg2ODggYjI5NGZmNzU3MzM2NWNkZGNjYThhMjdjMTY0OWZkMThkMTk5NDQ4YyBwZXAtMzgyCis4ODY4OSBmOGE3N2ZkNjc1ZjVhM2NlMDUxZWU0MDRjN2I1NmRiMWM3MmViZjFkIHJlbGVhc2UzMS1tYWludAorODg2OTAgNDQ3MzRkMzc1MzkzMTU0OGFjNGE4ZWQ5MjgyYjAzNDliOGI2MDE1MiByZWxlYXNlMzEtbWFpbnQKKzg4NjkxIDI2MTFjYmQ3NWM0Zjk3MWNmNmZiZjZiMzM3Mjc5OTY2N2I1OTUwMzAgcHkzaworODg2OTIgYTM2NjA5NmI5NWFkMmE2YjVmOGE4NmI0YTkwOGQyMjg3MWI4Y2RjOSByZWxlYXNlMzItbWFpbnQKKzg4NjkzIDE3OTczMDBmODdiOTk4NjViNjY1ODFjZWRhYTg0NzZkMjQ1ODc1MWYgcmVsZWFzZTI3LW1haW50Cis4ODY5NCA5YWNjOTAyMWYxMWUzMDIxODM2Yzg5Y2U4MjU4M2JiZjhlZjk3YTkzIHBlcC0zODIKKzg4Njk2IDhlMDdmYzk0ODY4MDY4NDkwNWYyNmVjYTRlNjJjYjhmYmRhZWQ2NDggcHkzaworODg2OTcgOWI3MjU0NjcwY2U5ZGEwMDI3NTNjYTAwYzI0OGVhYmY1ZGRmM2ZhZSBweTNrCis4ODY5OCA3MmYzMGY4ZWYzMzFlOWI1ZjUxNDBlOGYzMWVhN2RjYmViOTAwMGEyIHJlbGVhc2UzMi1tYWludAorODg2OTkgYjgyYzNlNTkzZGI2NTU1ZmI4MTY1ODE2YmM3YTI5Y2ExYjIyN2M0NiBweTNrCis4ODcwMCAxZDE5ODUxOGNiODc1YzM5ZTUzYWVlM2FmN2Q1NGE2NmZjMTJkM2YzIHB5M2sKKzg4NzAxIDVkYzM0OTNlMDdhOWYyYTgzMGU3OWFiMzA4MWMwNjQ5MDMwYzNkMTYgcmVsZWFzZTMyLW1haW50Cis4ODcwMiBkYTk1NDQwZDkyYjM2YjAwODIxODcxMTE1ZDMzYjBjNTEwOGMxMWYzIHB5M2sKKzg4NzAzIDczYTQ5OWYwZWFmMWIwYWVmMjg0NGE2MWExOWMxMzQwOTk3ZjhkN2MgcHkzaworODg3MDQgODdkZTAxN2RhNGJmN2NiM2Q2MDI3NjUxN2QyMTgzMGIzYWU5ZTBkNyBweTNrCis4ODcwNSA3MjkwYjhmM2M5ZmI5OTg0NjY5ZDA4MDdlOTg0YmVjNzEzNTEzZjAzIHB5M2sKKzg4NzA2IDMzZTc2OGQyM2IxNmE1NzEwZTRmNTIyYTYyMDhlOTJiY2MyZDNjZTkgcHkzaworODg3MDcgNmYxMTdkMjdhZDFjNWU2MzIzOWRkNTJjMzI1NjJkODI0MjVhZjg2NyBweTNrCis4ODcwOCBjN2E5MzYzNjIyODE5ZjNlYWI3NzJjNzgwNDM0YjIzNDcxZmUwYjI1IHB5M2sKKzg4NzA5IDM3OGVlMzI4YjYwZTBiMTYzNmFhMjQ3NTdiZWExYTE1ZjkyODFhZTQgcHkzaworODg3MTAgYTFkYmU1M2YzNzk4NDVmZjYzNjcwOWIwOGFiNDU2MzM3Yzg2NWM5MyBweTNrCis4ODcxMSA0ZGFjNDc2OWVhMjQ4YWFjYzgzMDc3ZTU3YTY0ZDJjMTM0MWMyM2FhIHB5M2sKKzg4NzEyIDZiMTJkMmI2OGYyNTMzM2RkNWFmZmU2ZTNlOGY0NmI1NWNkNDI0MjQgcHkzaworODg3MTcgMGRjNmE5MGRlZTIxOTEyMmFiZjU2NmFjODU4YWVhNjVjNDMwMDgyZiBweTNrCis4ODcxOCA2YzhlYzVmOGI5ZTUxYmNlMTU0ZTExOGVmYTkxZjcxYjAwOTZlYmQwIHJlbGVhc2UzMi1tYWludAorODg3MTkgYTRlN2ZiZWQ3NTNjNzMxYTU1MjY3Y2U3MTAwOWE4MGQ4MjcwNGQ0YSBweTNrCis4ODcyMCA3MzhmZWVjOWNlZDAxZmMzMTM4OTJkYjNiMTA1ODlmYjYwMjViODdhIHB5M2sKKzg4NzIxIDIwYTVhMDhjM2I2Y2E5ZDhhNDA4Njk3Yjk1NzY3MGQ1ZTNkNjI5YzAgcHkzaworODg3MjIgMjA4YTUyOTBmZDM4ZWM4YzRmZTEzOGU3OWU4MjNkMDE4NzQzZWNjNiBweTNrCis4ODcyMyBhMTcyNzA2M2E3ZGZlYjBkMmE2M2E2YjFhMjlmNDZmZWMzMmIwNTgyIHJlbGVhc2UzMi1tYWludAorODg3MjQgZjUzOThmYjgxNDI4OWIyNGE4YjA1ZmFlZDM0NGY3ZjkwYjc3NTZkNyBweTNrCis4ODcyNSAyZmNlOWM3NDJjZGVhYjRkZWQxMTE1MmVjYmRkOTA2N2UxMGVmMGUyIHJlbGVhc2UzMS1tYWludAorODg3MjYgZGRjMGJiNmE3YjdjNzJjN2FiYjdiMWM0ODBkZWE4ZmQ5MThkYjljZSBweTNrCis4ODcyNyA1OGNiMGZlMDZkYWEzNjUxOTUzNTUxYmU1YjExYjE0NTAxNTQ3YjAwIHJlbGVhc2UzMi1tYWludAorODg3MjggOTY1YWI5OTExZmNkMGVmMTRhZmUwZGE5ZjgzNTU1YzY4OTc4ZTdkMCByZWxlYXNlMjctbWFpbnQKKzg4NzI5IGYyMDQ2ZGZjYTczMTEzNjcyZDU5YjUwNDZmZjg2YjBiMDNiNDFkMDkgcHkzaworODg3MzAgYjUyODFmNWZhZGU0ZGQ1NjdmMWYxZDU2ZmFjOWNlN2Q1N2ViOWY5OSBweTNrCis4ODczMSBiYzllZmJiZTYzY2YzZWIzYTNiN2MxYjkyNDZjNTQ0ZjZmYTVmZWIyIHJlbGVhc2UzMi1tYWludAorODg3MzIgYTgzODk0NjhlNjUxMzdjNTA2NWY3MDJjODQ2YjljMGU1NjFlNTk3MiByZWxlYXNlMjctbWFpbnQKKzg4NzMzIDA4ODA0YWVhMDhmMWM0OGExNmM4NDlkYTEyNzA3ZTUxYTg3ZDg2ZDkgcHkzaworODg3MzQgMmY1Zjc1NWIyNjg3OGNiMGZiMzVjMGM1OTA3M2FhZjE4ZWJlMzY4MyBweTNrCis4ODczNSBkMmI1YmRlNWMxZmE0Yzk0YTc0N2M2NzAxNjNkNmFjNzAxZjk2MDk2IHB5M2sKKzg4NzM5IDFhMDViYzM2YTMzNDBhNGU2YjU5NjE1Mzg1NDNmMTBlOWJmOGNmN2EgcmVsZWFzZTMyLW1haW50Cis4ODc0MCAzZjcwYzU0ZDg2ZDg5YWRjZjdhNzQ1MjAyNTk2N2E4ZjcwYmUyOWNmIHB5M2sKKzg4NzQxIGUyZGZjOGYyNGQzZjZlYTgzODYzZDJlMzJjMGMzMDNlMDI2YWFhZmQgcmVsZWFzZTI3LW1haW50Cis4ODc0MiA5M2ZkMTY2NzA3NzRhMjc3YjkxNzM5MDQyNmI4NGMyOGFiNzk2YzdhIHB5M2sKKzg4NzQ0IGU3NDIwOWI5YjJmNTI4OGY5MzdkNmUzNDExYTJjZjEwYTg2NDZiMDQgcHkzaworODg3NDUgZTdiNmFkYmE1NzFhYTkzYTQ0MTQ1ZjBlYmY3YjViYmEyZTM4NTkzMSBweTNrCis4ODc0NiA1MGIzOGU0YjAyMzEyNjdiOTE3NTVjNGQxYTAwNzIwZjM4MTk1MjY4IHB5M2sKKzg4NzQ3IDBlNzE4MGU0YzNjZGI5NDg0MThiYzE3YjU3NGQxZmY2NTE0MjlmNGQgcHkzaworODg3NTIgODVhMzRhMzE2OTY5Mjc4NTkzZDQ1NGE4NmVmNDNhMmY3NmMyZDc2YyBweTNrLWNkZWNpbWFsCmRpZmYgLS1naXQgYS9NaXNjL3ZhbGdyaW5kLXB5dGhvbi5zdXBwIGIvTWlzYy92YWxncmluZC1weXRob24uc3VwcAppbmRleCBhNjYzMDViLi44MWEwN2M5IDEwMDY0NAotLS0gYS9NaXNjL3ZhbGdyaW5kLXB5dGhvbi5zdXBwCisrKyBiL01pc2MvdmFsZ3JpbmQtcHl0aG9uLnN1cHAKQEAgLTEzNyw2ICsxMzcsMTggQEAKICMjI30KICMjIwogIyMjeworIyMjICAgQUREUkVTU19JTl9SQU5HRS9Vc2Ugb2YgdW5pbml0aWFsaXNlZCB2YWx1ZSBvZiBzaXplIDgKKyMjIyAgIE1lbWNoZWNrOkFkZHI4CisjIyMgICBmdW46UHlPYmplY3RfRnJlZQorIyMjfQorIyMjCisjIyN7CisjIyMgICBBRERSRVNTX0lOX1JBTkdFL1VzZSBvZiB1bmluaXRpYWxpc2VkIHZhbHVlIG9mIHNpemUgOAorIyMjICAgTWVtY2hlY2s6VmFsdWU4CisjIyMgICBmdW46UHlPYmplY3RfRnJlZQorIyMjfQorIyMjCisjIyN7CiAjIyMgICBBRERSRVNTX0lOX1JBTkdFL0NvbmRpdGlvbmFsIGp1bXAgb3IgbW92ZSBkZXBlbmRzIG9uIHVuaW5pdGlhbGlzZWQgdmFsdWUKICMjIyAgIE1lbWNoZWNrOkNvbmQKICMjIyAgIGZ1bjpQeU9iamVjdF9GcmVlCkBAIC0xNTUsNiArMTY3LDE4IEBACiAjIyN9CiAjIyMKICMjI3sKKyMjIyAgIEFERFJFU1NfSU5fUkFOR0UvVXNlIG9mIHVuaW5pdGlhbGlzZWQgdmFsdWUgb2Ygc2l6ZSA4CisjIyMgICBNZW1jaGVjazpBZGRyOAorIyMjICAgZnVuOlB5T2JqZWN0X1JlYWxsb2MKKyMjI30KKyMjIworIyMjeworIyMjICAgQUREUkVTU19JTl9SQU5HRS9Vc2Ugb2YgdW5pbml0aWFsaXNlZCB2YWx1ZSBvZiBzaXplIDgKKyMjIyAgIE1lbWNoZWNrOlZhbHVlOAorIyMjICAgZnVuOlB5T2JqZWN0X1JlYWxsb2MKKyMjI30KKyMjIworIyMjewogIyMjICAgQUREUkVTU19JTl9SQU5HRS9Db25kaXRpb25hbCBqdW1wIG9yIG1vdmUgZGVwZW5kcyBvbiB1bmluaXRpYWxpc2VkIHZhbHVlCiAjIyMgICBNZW1jaGVjazpDb25kCiAjIyMgICBmdW46UHlPYmplY3RfUmVhbGxvYwpAQCAtMjg2LDYgKzMxMCwzOCBAQAogIyMjICAgZnVuOk1ENV9VcGRhdGUKICMjI30KIAorIyBGZWRvcmEncyBwYWNrYWdlICJvcGVuc3NsLTEuMC4xLTAuMS5iZXRhMi5mYzE3Lng4Nl82NCIgb24geDg2XzY0CisjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTQxNzEKK3sKKyAgIG9wZW5zc2wgMS4wLjEgcHJuZyAxCisgICBNZW1jaGVjazpDb25kCisgICBmdW46YmNtcAorICAgZnVuOmZpcHNfZ2V0X2VudHJvcHkKKyAgIGZ1bjpGSVBTX2RyYmdfaW5zdGFudGlhdGUKKyAgIGZ1bjpSQU5EX2luaXRfZmlwcworICAgZnVuOk9QRU5TU0xfaW5pdF9saWJyYXJ5CisgICBmdW46U1NMX2xpYnJhcnlfaW5pdAorICAgZnVuOmluaXRfaGFzaGxpYgorfQorCit7CisgICBvcGVuc3NsIDEuMC4xIHBybmcgMgorICAgTWVtY2hlY2s6Q29uZAorICAgZnVuOmZpcHNfZ2V0X2VudHJvcHkKKyAgIGZ1bjpGSVBTX2RyYmdfaW5zdGFudGlhdGUKKyAgIGZ1bjpSQU5EX2luaXRfZmlwcworICAgZnVuOk9QRU5TU0xfaW5pdF9saWJyYXJ5CisgICBmdW46U1NMX2xpYnJhcnlfaW5pdAorICAgZnVuOmluaXRfaGFzaGxpYgorfQorCit7CisgICBvcGVuc3NsIDEuMC4xIHBybmcgMworICAgTWVtY2hlY2s6VmFsdWU4CisgICBmdW46X3g4Nl82NF9BRVNfZW5jcnlwdF9jb21wYWN0CisgICBmdW46QUVTX2VuY3J5cHQKK30KKwogIwogIyBBbGwgb2YgdGhlc2UgcHJvYmxlbXMgY29tZSBmcm9tIHVzaW5nIHRlc3Rfc29ja2V0X3NzbAogIwpAQCAtMzg4LDQgKzQ0NCwyOCBAQAogICAgZnVuOlNIQTFfVXBkYXRlCiB9CiAKK3sKKyAgIHRlc3RfYnVmZmVyX25vbl9kZWJ1ZworICAgTWVtY2hlY2s6QWRkcjQKKyAgIGZ1bjpQeVVuaWNvZGVVQ1MyX0ZTQ29udmVydGVyCit9CisKK3sKKyAgIHRlc3RfYnVmZmVyX25vbl9kZWJ1ZworICAgTWVtY2hlY2s6QWRkcjQKKyAgIGZ1bjpQeVVuaWNvZGVfRlNDb252ZXJ0ZXIKK30KKworIyBBZGRpdGlvbmFsIHN1cHByZXNzaW9ucyBmb3IgdGhlIHVuaWZpZWQgZGVjaW1hbCB0ZXN0czoKK3sKKyAgIHRlc3RfZGVjaW1hbAorICAgTWVtY2hlY2s6QWRkcjQKKyAgIGZ1bjpQeVVuaWNvZGVVQ1MyX0ZTQ29udmVydGVyCit9CisKK3sKKyAgIHRlc3RfZGVjaW1hbDIKKyAgIE1lbWNoZWNrOkFkZHI0CisgICBmdW46UHlVbmljb2RlX0ZTQ29udmVydGVyCit9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvU2V0dXAuZGlzdCBiL01vZHVsZXMvU2V0dXAuZGlzdAppbmRleCA5MjY5ZGRmLi5mNDVkZTVjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL1NldHVwLmRpc3QKKysrIGIvTW9kdWxlcy9TZXR1cC5kaXN0CkBAIC0xMjcsNiArMTI3LDkgQEAKICMgYnVpbHRpbiBtb2R1bGUgYXZvaWRzIHNvbWUgYm9vdHN0cmFwcGluZyBwcm9ibGVtcyBhbmQgcmVkdWNlcyBvdmVyaGVhZC4KIHppcGltcG9ydCB6aXBpbXBvcnQuYwogCisjIGZhdWx0aGFuZGxlciBtb2R1bGUKK2ZhdWx0aGFuZGxlciBmYXVsdGhhbmRsZXIuYworCiAjIFRoZSByZXN0IG9mIHRoZSBtb2R1bGVzIGxpc3RlZCBpbiB0aGlzIGZpbGUgYXJlIGFsbCBjb21tZW50ZWQgb3V0IGJ5CiAjIGRlZmF1bHQuICBVc3VhbGx5IHRoZXkgY2FuIGJlIGRldGVjdGVkIGFuZCBidWlsdCBhcyBkeW5hbWljYWxseQogIyBsb2FkZWQgbW9kdWxlcyBieSB0aGUgbmV3IHNldHVwLnB5IHNjcmlwdCBhZGRlZCBpbiBQeXRob24gMi4xLiAgSWYKQEAgLTIwNyw3ICsyMTAsNyBAQAogIwogIyBGaXJzdCwgbG9vayBhdCBTZXR1cC5jb25maWc7IGNvbmZpZ3VyZSBtYXkgaGF2ZSBzZXQgdGhpcyBmb3IgeW91LgogCi0jY3J5cHQgY3J5cHRtb2R1bGUuYyAjIC1sY3J5cHQJIyBjcnlwdCgzKTsgbmVlZHMgLWxjcnlwdCBvbiBzb21lIHN5c3RlbXMKKyNfY3J5cHQgX2NyeXB0bW9kdWxlLmMgIyAtbGNyeXB0CSMgY3J5cHQoMyk7IG5lZWRzIC1sY3J5cHQgb24gc29tZSBzeXN0ZW1zCiAKIAogIyBTb21lIG1vcmUgVU5JWCBkZXBlbmRlbnQgbW9kdWxlcyAtLSBvZmYgYnkgZGVmYXVsdCwgc2luY2UgdGhlc2UKQEAgLTIzMSwxNSArMjM0LDE0IEBACiAjIHN5c3RlbSBkb2VzIG5vdCBoYXZlIHRoZSBPcGVuU1NMIGxpYnMgY29udGFpbmluZyBhbiBvcHRpbWl6ZWQgdmVyc2lvbi4KIAogIyBUaGUgX21kNSBtb2R1bGUgaW1wbGVtZW50cyB0aGUgUlNBIERhdGEgU2VjdXJpdHksIEluYy4gTUQ1Ci0jIE1lc3NhZ2UtRGlnZXN0IEFsZ29yaXRobSwgZGVzY3JpYmVkIGluIFJGQyAxMzIxLiAgVGhlIG5lY2Vzc2FyeSBmaWxlcwotIyBtZDUuYyBhbmQgbWQ1LmggYXJlIGluY2x1ZGVkIGhlcmUuCisjIE1lc3NhZ2UtRGlnZXN0IEFsZ29yaXRobSwgZGVzY3JpYmVkIGluIFJGQyAxMzIxLgogCi0jX21kNSBtZDVtb2R1bGUuYyBtZDUuYworI19tZDUgbWQ1bW9kdWxlLmMKIAogCiAjIFRoZSBfc2hhIG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBTSEEgY2hlY2tzdW0gYWxnb3JpdGhtcy4KICMgKE5JU1QncyBTZWN1cmUgSGFzaCBBbGdvcml0aG1zLikKLSNfc2hhIHNoYW1vZHVsZS5jCisjX3NoYTEgc2hhMW1vZHVsZS5jCiAjX3NoYTI1NiBzaGEyNTZtb2R1bGUuYwogI19zaGE1MTIgc2hhNTEybW9kdWxlLmMKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmlzZWN0bW9kdWxlLmMgYi9Nb2R1bGVzL19iaXNlY3Rtb2R1bGUuYwppbmRleCBlYWUyOTc4Li5mYWNhOGNmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19iaXNlY3Rtb2R1bGUuYworKysgYi9Nb2R1bGVzL19iaXNlY3Rtb2R1bGUuYwpAQCAtOTAsNyArOTAsOSBAQAogICAgICAgICBpZiAoUHlMaXN0X0luc2VydChsaXN0LCBpbmRleCwgaXRlbSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChsaXN0LCAiaW5zZXJ0IiwgIm5PIiwgaW5kZXgsIGl0ZW0pOworICAgICAgICBfUHlfSURFTlRJRklFUihpbnNlcnQpOworCisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQobGlzdCwgJlB5SWRfaW5zZXJ0LCAibk8iLCBpbmRleCwgaXRlbSk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKQEAgLTE5Myw3ICsxOTUsOCBAQAogICAgICAgICBpZiAoUHlMaXN0X0luc2VydChsaXN0LCBpbmRleCwgaXRlbSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChsaXN0LCAiaW5zZXJ0IiwgIm5PIiwgaW5kZXgsIGl0ZW0pOworICAgICAgICBfUHlfSURFTlRJRklFUihpbnNlcnQpOworICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGxpc3QsICZQeUlkX2luc2VydCwgIm5PIiwgaW5kZXgsIGl0ZW0pOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19iejJtb2R1bGUuYyBiL01vZHVsZXMvX2J6Mm1vZHVsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlZWU1YTIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19iejJtb2R1bGUuYwpAQCAtMCwwICsxLDYwNyBAQAorLyogX2J6MiAtIExvdy1sZXZlbCBQeXRob24gaW50ZXJmYWNlIHRvIGxpYmJ6aXAyLiAqLworCisjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorCisjaWZkZWYgV0lUSF9USFJFQUQKKyNpbmNsdWRlICJweXRocmVhZC5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxiemxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKworI2lmbmRlZiBCWl9DT05GSUdfRVJST1IKKyNkZWZpbmUgQloyX2J6Q29tcHJlc3MgYnpDb21wcmVzcworI2RlZmluZSBCWjJfYnpDb21wcmVzc0luaXQgYnpDb21wcmVzc0luaXQKKyNkZWZpbmUgQloyX2J6Q29tcHJlc3NFbmQgYnpDb21wcmVzc0VuZAorI2RlZmluZSBCWjJfYnpEZWNvbXByZXNzIGJ6RGVjb21wcmVzcworI2RlZmluZSBCWjJfYnpEZWNvbXByZXNzSW5pdCBiekRlY29tcHJlc3NJbml0CisjZGVmaW5lIEJaMl9iekRlY29tcHJlc3NFbmQgYnpEZWNvbXByZXNzRW5kCisjZW5kaWYgIC8qICEgQlpfQ09ORklHX0VSUk9SICovCisKKworI2lmZGVmIFdJVEhfVEhSRUFECisjZGVmaW5lIEFDUVVJUkVfTE9DSyhvYmopIGRvIHsgXAorICAgIGlmICghUHlUaHJlYWRfYWNxdWlyZV9sb2NrKChvYmopLT5sb2NrLCAwKSkgeyBcCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMgXAorICAgICAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2soKG9iaiktPmxvY2ssIDEpOyBcCisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTIFwKKyAgICB9IH0gd2hpbGUgKDApCisjZGVmaW5lIFJFTEVBU0VfTE9DSyhvYmopIFB5VGhyZWFkX3JlbGVhc2VfbG9jaygob2JqKS0+bG9jaykKKyNlbHNlCisjZGVmaW5lIEFDUVVJUkVfTE9DSyhvYmopCisjZGVmaW5lIFJFTEVBU0VfTE9DSyhvYmopCisjZW5kaWYKKworI2RlZmluZSBNSU4oWCwgWSkgKCgoWCkgPCAoWSkpID8gKFgpIDogKFkpKQorCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgYnpfc3RyZWFtIGJ6czsKKyAgICBpbnQgZmx1c2hlZDsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOworI2VuZGlmCit9IEJaMkNvbXByZXNzb3I7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgYnpfc3RyZWFtIGJ6czsKKyAgICBjaGFyIGVvZjsgICAgICAgICAgIC8qIFRfQk9PTCBleHBlY3RzIGEgY2hhciAqLworICAgIFB5T2JqZWN0ICp1bnVzZWRfZGF0YTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOworI2VuZGlmCit9IEJaMkRlY29tcHJlc3NvcjsKKworCisvKiBIZWxwZXIgZnVuY3Rpb25zLiAqLworCitzdGF0aWMgaW50CitjYXRjaF9iejJfZXJyb3IoaW50IGJ6ZXJyb3IpCit7CisgICAgc3dpdGNoKGJ6ZXJyb3IpIHsKKyAgICAgICAgY2FzZSBCWl9PSzoKKyAgICAgICAgY2FzZSBCWl9SVU5fT0s6CisgICAgICAgIGNhc2UgQlpfRkxVU0hfT0s6CisgICAgICAgIGNhc2UgQlpfRklOSVNIX09LOgorICAgICAgICBjYXNlIEJaX1NUUkVBTV9FTkQ6CisgICAgICAgICAgICByZXR1cm4gMDsKKworI2lmZGVmIEJaX0NPTkZJR19FUlJPUgorICAgICAgICBjYXNlIEJaX0NPTkZJR19FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGliYnppcDIgd2FzIG5vdCBjb21waWxlZCBjb3JyZWN0bHkiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworI2VuZGlmCisgICAgICAgIGNhc2UgQlpfUEFSQU1fRVJST1I6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZXJuYWwgZXJyb3IgLSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgcGFyYW1ldGVycyBwYXNzZWQgdG8gbGliYnppcDIiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIEJaX01FTV9FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBCWl9EQVRBX0VSUk9SOgorICAgICAgICBjYXNlIEJaX0RBVEFfRVJST1JfTUFHSUM6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwgIkludmFsaWQgZGF0YSBzdHJlYW0iKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIEJaX0lPX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsICJVbmtub3duIEkvTyBlcnJvciIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgQlpfVU5FWFBFQ1RFRF9FT0Y6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfRU9GRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlIGxvZ2ljYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmQtb2Ytc3RyZWFtIHdhcyBkZXRlY3RlZCIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgQlpfU0VRVUVOQ0VfRVJST1I6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlcm5hbCBlcnJvciAtICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBzZXF1ZW5jZSBvZiBjb21tYW5kcyBzZW50IHRvIGxpYmJ6aXAyIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JT0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJVbnJlY29nbml6ZWQgZXJyb3IgZnJvbSBsaWJiemlwMjogJWQiLCBiemVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgIH0KK30KKworI2lmIEJVRlNJWiA8IDgxOTIKKyNkZWZpbmUgU01BTExDSFVOSyA4MTkyCisjZWxzZQorI2RlZmluZSBTTUFMTENIVU5LIEJVRlNJWgorI2VuZGlmCisKK3N0YXRpYyBpbnQKK2dyb3dfYnVmZmVyKFB5T2JqZWN0ICoqYnVmKQoreworICAgIC8qIEV4cGFuZCB0aGUgYnVmZmVyIGJ5IGFuIGFtb3VudCBwcm9wb3J0aW9uYWwgdG8gdGhlIGN1cnJlbnQgc2l6ZSwKKyAgICAgICBnaXZpbmcgdXMgYW1vcnRpemVkIGxpbmVhci10aW1lIGJlaGF2aW9yLiBVc2UgYSBsZXNzLXRoYW4tZG91YmxlCisgICAgICAgZ3Jvd3RoIGZhY3RvciB0byBhdm9pZCBleGNlc3NpdmUgYWxsb2NhdGlvbi4gKi8KKyAgICBzaXplX3Qgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoKmJ1Zik7CisgICAgc2l6ZV90IG5ld19zaXplID0gc2l6ZSArIChzaXplID4+IDMpICsgNjsKKyAgICBpZiAobmV3X3NpemUgPiBzaXplKSB7CisgICAgICAgIHJldHVybiBfUHlCeXRlc19SZXNpemUoYnVmLCBuZXdfc2l6ZSk7CisgICAgfSBlbHNlIHsgIC8qIG92ZXJmbG93ICovCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0byBhbGxvY2F0ZSBidWZmZXIgLSBvdXRwdXQgdG9vIGxhcmdlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9Cit9CisKKworLyogQloyQ29tcHJlc3NvciBjbGFzcy4gKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbXByZXNzKEJaMkNvbXByZXNzb3IgKmMsIGNoYXIgKmRhdGEsIHNpemVfdCBsZW4sIGludCBhY3Rpb24pCit7CisgICAgc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgU01BTExDSFVOSyk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGMtPmJ6cy5uZXh0X2luID0gZGF0YTsKKyAgICBjLT5ienMuYXZhaWxfaW4gPSAwOworICAgIGMtPmJ6cy5uZXh0X291dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgYy0+YnpzLmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KTsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGNoYXIgKnRoaXNfb3V0OworICAgICAgICBpbnQgYnplcnJvcjsKKworICAgICAgICAvKiBPbiBhIDY0LWJpdCBzeXN0ZW0sIGxlbiBtaWdodCBub3QgZml0IGluIGF2YWlsX2luIChhbiB1bnNpZ25lZCBpbnQpLgorICAgICAgICAgICBEbyBjb21wcmVzc2lvbiBpbiBjaHVua3Mgb2Ygbm8gbW9yZSB0aGFuIFVJTlRfTUFYIGJ5dGVzIGVhY2guICovCisgICAgICAgIGlmIChjLT5ienMuYXZhaWxfaW4gPT0gMCAmJiBsZW4gPiAwKSB7CisgICAgICAgICAgICBjLT5ienMuYXZhaWxfaW4gPSBNSU4obGVuLCBVSU5UX01BWCk7CisgICAgICAgICAgICBsZW4gLT0gYy0+YnpzLmF2YWlsX2luOworICAgICAgICB9CisKKyAgICAgICAgLyogSW4gcmVndWxhciBjb21wcmVzc2lvbiBtb2RlLCBzdG9wIHdoZW4gaW5wdXQgZGF0YSBpcyBleGhhdXN0ZWQuICovCisgICAgICAgIGlmIChhY3Rpb24gPT0gQlpfUlVOICYmIGMtPmJ6cy5hdmFpbF9pbiA9PSAwKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKGMtPmJ6cy5hdmFpbF9vdXQgPT0gMCkgeworICAgICAgICAgICAgc2l6ZV90IGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpIC0gZGF0YV9zaXplOworICAgICAgICAgICAgaWYgKGJ1ZmZlcl9sZWZ0ID09IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoZ3Jvd19idWZmZXIoJnJlc3VsdCkgPCAwKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIGMtPmJ6cy5uZXh0X291dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkgKyBkYXRhX3NpemU7CisgICAgICAgICAgICAgICAgYnVmZmVyX2xlZnQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgLSBkYXRhX3NpemU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjLT5ienMuYXZhaWxfb3V0ID0gTUlOKGJ1ZmZlcl9sZWZ0LCBVSU5UX01BWCk7CisgICAgICAgIH0KKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHRoaXNfb3V0ID0gYy0+YnpzLm5leHRfb3V0OworICAgICAgICBiemVycm9yID0gQloyX2J6Q29tcHJlc3MoJmMtPmJ6cywgYWN0aW9uKTsKKyAgICAgICAgZGF0YV9zaXplICs9IGMtPmJ6cy5uZXh0X291dCAtIHRoaXNfb3V0OworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAoY2F0Y2hfYnoyX2Vycm9yKGJ6ZXJyb3IpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICAvKiBJbiBmbHVzaGluZyBtb2RlLCBzdG9wIHdoZW4gYWxsIGJ1ZmZlcmVkIGRhdGEgaGFzIGJlZW4gZmx1c2hlZC4gKi8KKyAgICAgICAgaWYgKGFjdGlvbiA9PSBCWl9GSU5JU0ggJiYgYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChkYXRhX3NpemUgIT0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpKQorICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIGRhdGFfc2l6ZSkgPCAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICByZXR1cm4gcmVzdWx0OworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihCWjJDb21wcmVzc29yX2NvbXByZXNzX19kb2NfXywKKyJjb21wcmVzcyhkYXRhKSAtPiBieXRlc1xuIgorIlxuIgorIlByb3ZpZGUgZGF0YSB0byB0aGUgY29tcHJlc3NvciBvYmplY3QuIFJldHVybnMgYSBjaHVuayBvZlxuIgorImNvbXByZXNzZWQgZGF0YSBpZiBwb3NzaWJsZSwgb3IgYicnIG90aGVyd2lzZS5cbiIKKyJcbiIKKyJXaGVuIHlvdSBoYXZlIGZpbmlzaGVkIHByb3ZpZGluZyBkYXRhIHRvIHRoZSBjb21wcmVzc29yLCBjYWxsIHRoZVxuIgorImZsdXNoKCkgbWV0aG9kIHRvIGZpbmlzaCB0aGUgY29tcHJlc3Npb24gcHJvY2Vzcy5cbiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorQloyQ29tcHJlc3Nvcl9jb21wcmVzcyhCWjJDb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9idWZmZXIgYnVmZmVyOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kjpjb21wcmVzcyIsICZidWZmZXIpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKKyAgICBpZiAoc2VsZi0+Zmx1c2hlZCkKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJDb21wcmVzc29yIGhhcyBiZWVuIGZsdXNoZWQiKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IGNvbXByZXNzKHNlbGYsIGJ1ZmZlci5idWYsIGJ1ZmZlci5sZW4sIEJaX1JVTik7CisgICAgUkVMRUFTRV9MT0NLKHNlbGYpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUHlEb2NfU1RSVkFSKEJaMkNvbXByZXNzb3JfZmx1c2hfX2RvY19fLAorImZsdXNoKCkgLT4gYnl0ZXNcbiIKKyJcbiIKKyJGaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MuIFJldHVybnMgdGhlIGNvbXByZXNzZWQgZGF0YSBsZWZ0XG4iCisiaW4gaW50ZXJuYWwgYnVmZmVycy5cbiIKKyJcbiIKKyJUaGUgY29tcHJlc3NvciBvYmplY3QgbWF5IG5vdCBiZSB1c2VkIGFmdGVyIHRoaXMgbWV0aG9kIGlzIGNhbGxlZC5cbiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorQloyQ29tcHJlc3Nvcl9mbHVzaChCWjJDb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisgICAgQUNRVUlSRV9MT0NLKHNlbGYpOworICAgIGlmIChzZWxmLT5mbHVzaGVkKQorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIlJlcGVhdGVkIGNhbGwgdG8gZmx1c2goKSIpOworICAgIGVsc2UgeworICAgICAgICBzZWxmLT5mbHVzaGVkID0gMTsKKyAgICAgICAgcmVzdWx0ID0gY29tcHJlc3Moc2VsZiwgTlVMTCwgMCwgQlpfRklOSVNIKTsKKyAgICB9CisgICAgUkVMRUFTRV9MT0NLKHNlbGYpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbnQKK0JaMkNvbXByZXNzb3JfaW5pdChCWjJDb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgY29tcHJlc3NsZXZlbCA9IDk7CisgICAgaW50IGJ6ZXJyb3I7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOkJaMkNvbXByZXNzb3IiLCAmY29tcHJlc3NsZXZlbCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoISgxIDw9IGNvbXByZXNzbGV2ZWwgJiYgY29tcHJlc3NsZXZlbCA8PSA5KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjb21wcmVzc2xldmVsIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA5Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgaWYgKHNlbGYtPmxvY2sgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsICJVbmFibGUgdG8gYWxsb2NhdGUgbG9jayIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorI2VuZGlmCisKKyAgICBiemVycm9yID0gQloyX2J6Q29tcHJlc3NJbml0KCZzZWxmLT5ienMsIGNvbXByZXNzbGV2ZWwsIDAsIDApOworICAgIGlmIChjYXRjaF9iejJfZXJyb3IoYnplcnJvcikpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXR1cm4gMDsKKworZXJyb3I6CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7CisgICAgc2VsZi0+bG9jayA9IE5VTEw7CisjZW5kaWYKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyB2b2lkCitCWjJDb21wcmVzc29yX2RlYWxsb2MoQloyQ29tcHJlc3NvciAqc2VsZikKK3sKKyAgICBCWjJfYnpDb21wcmVzc0VuZCgmc2VsZi0+YnpzKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmLT5sb2NrICE9IE5VTEwpCisgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKKyNlbmRpZgorICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBCWjJDb21wcmVzc29yX21ldGhvZHNbXSA9IHsKKyAgICB7ImNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKUJaMkNvbXByZXNzb3JfY29tcHJlc3MsIE1FVEhfVkFSQVJHUywKKyAgICAgQloyQ29tcHJlc3Nvcl9jb21wcmVzc19fZG9jX199LAorICAgIHsiZmx1c2giLCAgICAoUHlDRnVuY3Rpb24pQloyQ29tcHJlc3Nvcl9mbHVzaCwgICAgTUVUSF9OT0FSR1MsCisgICAgIEJaMkNvbXByZXNzb3JfZmx1c2hfX2RvY19ffSwKKyAgICB7TlVMTH0KK307CisKK1B5RG9jX1NUUlZBUihCWjJDb21wcmVzc29yX19kb2NfXywKKyJCWjJDb21wcmVzc29yKGNvbXByZXNzbGV2ZWw9OSlcbiIKKyJcbiIKKyJDcmVhdGUgYSBjb21wcmVzc29yIG9iamVjdCBmb3IgY29tcHJlc3NpbmcgZGF0YSBpbmNyZW1lbnRhbGx5LlxuIgorIlxuIgorImNvbXByZXNzbGV2ZWwsIGlmIGdpdmVuLCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgOS5cbiIKKyJcbiIKKyJGb3Igb25lLXNob3QgY29tcHJlc3Npb24sIHVzZSB0aGUgY29tcHJlc3MoKSBmdW5jdGlvbiBpbnN0ZWFkLlxuIik7CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgQloyQ29tcHJlc3Nvcl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfYnoyLkJaMkNvbXByZXNzb3IiLCAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoQloyQ29tcHJlc3NvciksICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0cnVjdG9yKUJaMkNvbXByZXNzb3JfZGVhbGxvYywgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgQloyQ29tcHJlc3Nvcl9fZG9jX18sICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBCWjJDb21wcmVzc29yX21ldGhvZHMsICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYylCWjJDb21wcmVzc29yX2luaXQsICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworCisvKiBCWjJEZWNvbXByZXNzb3IgY2xhc3MuICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNvbXByZXNzKEJaMkRlY29tcHJlc3NvciAqZCwgY2hhciAqZGF0YSwgc2l6ZV90IGxlbikKK3sKKyAgICBzaXplX3QgZGF0YV9zaXplID0gMDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBTTUFMTENIVU5LKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgZC0+YnpzLm5leHRfaW4gPSBkYXRhOworICAgIC8qIE9uIGEgNjQtYml0IHN5c3RlbSwgbGVuIG1pZ2h0IG5vdCBmaXQgaW4gYXZhaWxfaW4gKGFuIHVuc2lnbmVkIGludCkuCisgICAgICAgRG8gZGVjb21wcmVzc2lvbiBpbiBjaHVua3Mgb2Ygbm8gbW9yZSB0aGFuIFVJTlRfTUFYIGJ5dGVzIGVhY2guICovCisgICAgZC0+YnpzLmF2YWlsX2luID0gTUlOKGxlbiwgVUlOVF9NQVgpOworICAgIGxlbiAtPSBkLT5ienMuYXZhaWxfaW47CisgICAgZC0+YnpzLm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICBkLT5ienMuYXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpOworICAgIGZvciAoOzspIHsKKyAgICAgICAgY2hhciAqdGhpc19vdXQ7CisgICAgICAgIGludCBiemVycm9yOworCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgdGhpc19vdXQgPSBkLT5ienMubmV4dF9vdXQ7CisgICAgICAgIGJ6ZXJyb3IgPSBCWjJfYnpEZWNvbXByZXNzKCZkLT5ienMpOworICAgICAgICBkYXRhX3NpemUgKz0gZC0+YnpzLm5leHRfb3V0IC0gdGhpc19vdXQ7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIGlmIChjYXRjaF9iejJfZXJyb3IoYnplcnJvcikpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7CisgICAgICAgICAgICBkLT5lb2YgPSAxOworICAgICAgICAgICAgbGVuICs9IGQtPmJ6cy5hdmFpbF9pbjsKKyAgICAgICAgICAgIGlmIChsZW4gPiAwKSB7IC8qIFNhdmUgbGVmdG92ZXIgaW5wdXQgdG8gdW51c2VkX2RhdGEgKi8KKyAgICAgICAgICAgICAgICBQeV9DTEVBUihkLT51bnVzZWRfZGF0YSk7CisgICAgICAgICAgICAgICAgZC0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGQtPmJ6cy5uZXh0X2luLCBsZW4pOworICAgICAgICAgICAgICAgIGlmIChkLT51bnVzZWRfZGF0YSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGQtPmJ6cy5hdmFpbF9pbiA9PSAwKSB7CisgICAgICAgICAgICBpZiAobGVuID09IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkLT5ienMuYXZhaWxfaW4gPSBNSU4obGVuLCBVSU5UX01BWCk7CisgICAgICAgICAgICBsZW4gLT0gZC0+YnpzLmF2YWlsX2luOworICAgICAgICB9CisgICAgICAgIGlmIChkLT5ienMuYXZhaWxfb3V0ID09IDApIHsKKyAgICAgICAgICAgIHNpemVfdCBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKKyAgICAgICAgICAgIGlmIChidWZmZXJfbGVmdCA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBkLT5ienMubmV4dF9vdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOworICAgICAgICAgICAgICAgIGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpIC0gZGF0YV9zaXplOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZC0+YnpzLmF2YWlsX291dCA9IE1JTihidWZmZXJfbGVmdCwgVUlOVF9NQVgpOworICAgICAgICB9CisgICAgfQorICAgIGlmIChkYXRhX3NpemUgIT0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpKQorICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIGRhdGFfc2l6ZSkgPCAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICByZXR1cm4gcmVzdWx0OworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihCWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX18sCisiZGVjb21wcmVzcyhkYXRhKSAtPiBieXRlc1xuIgorIlxuIgorIlByb3ZpZGUgZGF0YSB0byB0aGUgZGVjb21wcmVzc29yIG9iamVjdC4gUmV0dXJucyBhIGNodW5rIG9mXG4iCisiZGVjb21wcmVzc2VkIGRhdGEgaWYgcG9zc2libGUsIG9yIGInJyBvdGhlcndpc2UuXG4iCisiXG4iCisiQXR0ZW1wdGluZyB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0gaXMgcmVhY2hlZFxuIgorInJhaXNlcyBhbiBFT0ZFcnJvci4gQW55IGRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgc3RyZWFtXG4iCisiaXMgaWdub3JlZCBhbmQgc2F2ZWQgaW4gdGhlIHVudXNlZF9kYXRhIGF0dHJpYnV0ZS5cbiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3MoQloyRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9idWZmZXIgYnVmZmVyOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjpkZWNvbXByZXNzIiwgJmJ1ZmZlcikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQUNRVUlSRV9MT0NLKHNlbGYpOworICAgIGlmIChzZWxmLT5lb2YpCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19FT0ZFcnJvciwgIkVuZCBvZiBzdHJlYW0gYWxyZWFkeSByZWFjaGVkIik7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBkZWNvbXByZXNzKHNlbGYsIGJ1ZmZlci5idWYsIGJ1ZmZlci5sZW4pOworICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbnQKK0JaMkRlY29tcHJlc3Nvcl9pbml0KEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IGJ6ZXJyb3I7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpCWjJEZWNvbXByZXNzb3IiKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworICAgIGlmIChzZWxmLT5sb2NrID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLCAiVW5hYmxlIHRvIGFsbG9jYXRlIGxvY2siKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyNlbmRpZgorCisgICAgc2VsZi0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKKyAgICBpZiAoc2VsZi0+dW51c2VkX2RhdGEgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGJ6ZXJyb3IgPSBCWjJfYnpEZWNvbXByZXNzSW5pdCgmc2VsZi0+YnpzLCAwLCAwKTsKKyAgICBpZiAoY2F0Y2hfYnoyX2Vycm9yKGJ6ZXJyb3IpKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgcmV0dXJuIDA7CisKK2Vycm9yOgorICAgIFB5X0NMRUFSKHNlbGYtPnVudXNlZF9kYXRhKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKKyAgICBzZWxmLT5sb2NrID0gTlVMTDsKKyNlbmRpZgorICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIHZvaWQKK0JaMkRlY29tcHJlc3Nvcl9kZWFsbG9jKEJaMkRlY29tcHJlc3NvciAqc2VsZikKK3sKKyAgICBCWjJfYnpEZWNvbXByZXNzRW5kKCZzZWxmLT5ienMpOworICAgIFB5X0NMRUFSKHNlbGYtPnVudXNlZF9kYXRhKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmLT5sb2NrICE9IE5VTEwpCisgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKKyNlbmRpZgorICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBCWjJEZWNvbXByZXNzb3JfbWV0aG9kc1tdID0geworICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbilCWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTLAorICAgICBCWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX199LAorICAgIHtOVUxMfQorfTsKKworUHlEb2NfU1RSVkFSKEJaMkRlY29tcHJlc3Nvcl9lb2ZfX2RvY19fLAorIlRydWUgaWYgdGhlIGVuZC1vZi1zdHJlYW0gbWFya2VyIGhhcyBiZWVuIHJlYWNoZWQuIik7CisKK1B5RG9jX1NUUlZBUihCWjJEZWNvbXByZXNzb3JfdW51c2VkX2RhdGFfX2RvY19fLAorIkRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgY29tcHJlc3NlZCBzdHJlYW0uIik7CisKK3N0YXRpYyBQeU1lbWJlckRlZiBCWjJEZWNvbXByZXNzb3JfbWVtYmVyc1tdID0geworICAgIHsiZW9mIiwgVF9CT09MLCBvZmZzZXRvZihCWjJEZWNvbXByZXNzb3IsIGVvZiksCisgICAgIFJFQURPTkxZLCBCWjJEZWNvbXByZXNzb3JfZW9mX19kb2NfX30sCisgICAgeyJ1bnVzZWRfZGF0YSIsIFRfT0JKRUNUX0VYLCBvZmZzZXRvZihCWjJEZWNvbXByZXNzb3IsIHVudXNlZF9kYXRhKSwKKyAgICAgUkVBRE9OTFksIEJaMkRlY29tcHJlc3Nvcl91bnVzZWRfZGF0YV9fZG9jX199LAorICAgIHtOVUxMfQorfTsKKworUHlEb2NfU1RSVkFSKEJaMkRlY29tcHJlc3Nvcl9fZG9jX18sCisiQloyRGVjb21wcmVzc29yKClcbiIKKyJcbiIKKyJDcmVhdGUgYSBkZWNvbXByZXNzb3Igb2JqZWN0IGZvciBkZWNvbXByZXNzaW5nIGRhdGEgaW5jcmVtZW50YWxseS5cbiIKKyJcbiIKKyJGb3Igb25lLXNob3QgZGVjb21wcmVzc2lvbiwgdXNlIHRoZSBkZWNvbXByZXNzKCkgZnVuY3Rpb24gaW5zdGVhZC5cbiIpOworCitzdGF0aWMgUHlUeXBlT2JqZWN0IEJaMkRlY29tcHJlc3Nvcl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfYnoyLkJaMkRlY29tcHJlc3NvciIsICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoQloyRGVjb21wcmVzc29yKSwgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0cnVjdG9yKUJaMkRlY29tcHJlc3Nvcl9kZWFsbG9jLC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgQloyRGVjb21wcmVzc29yX19kb2NfXywgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBCWjJEZWNvbXByZXNzb3JfbWV0aG9kcywgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgQloyRGVjb21wcmVzc29yX21lbWJlcnMsICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYylCWjJEZWNvbXByZXNzb3JfaW5pdCwgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworCisvKiBNb2R1bGUgaW5pdGlhbGl6YXRpb24uICovCisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX2J6Mm1vZHVsZSA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgIl9iejIiLAorICAgIE5VTEwsCisgICAgLTEsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMCit9OworCitQeU1PRElOSVRfRlVOQworUHlJbml0X19iejIodm9pZCkKK3sKKyAgICBQeU9iamVjdCAqbTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJkJaMkNvbXByZXNzb3JfVHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZCWjJEZWNvbXByZXNzb3JfVHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJl9iejJtb2R1bGUpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfSU5DUkVGKCZCWjJDb21wcmVzc29yX1R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQloyQ29tcHJlc3NvciIsIChQeU9iamVjdCAqKSZCWjJDb21wcmVzc29yX1R5cGUpOworCisgICAgUHlfSU5DUkVGKCZCWjJEZWNvbXByZXNzb3JfVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJCWjJEZWNvbXByZXNzb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmQloyRGVjb21wcmVzc29yX1R5cGUpOworCisgICAgcmV0dXJuIG07Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYyBiL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jCmluZGV4IGViNzQwZjkuLjQwMDM3YjEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jCkBAIC0zOCw2ICszOCwxMCBAQAogI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKKyNpZmRlZiBNU19XSU5ET1dTCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2VuZGlmCisKIC8qIC0tLSBSZWdpc3RyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiBQeURvY19TVFJWQVIocmVnaXN0ZXJfX2RvY19fLApAQCAtMTYyLDcgKzE2Niw2IEBACiBlc2NhcGVfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLAogICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKIHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciAqaGV4ZGlnaXRzID0gIjAxMjM0NTY3ODlhYmNkZWYiOwogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgUHlfc3NpemVfdCBzaXplOwogICAgIFB5X3NzaXplX3QgbmV3c2l6ZTsKQEAgLTE3NCwxMiArMTc3LDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoc3RyKTsKLSAgICBuZXdzaXplID0gNCpzaXplOwotICAgIGlmIChuZXdzaXplID4gUFlfU1NJWkVfVF9NQVggfHwgbmV3c2l6ZSAvIDQgIT0gc2l6ZSkgeworICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLyA0KSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgInN0cmluZyBpcyB0b28gbGFyZ2UgdG8gZW5jb2RlIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgbmV3c2l6ZSA9IDQqc2l6ZTsKICAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuZXdzaXplKTsKIAogICAgIGlmICh2ID09IE5VTEwpIHsKQEAgLTIwNSw4ICsyMDgsOCBAQAogICAgICAgICAgICAgZWxzZSBpZiAoYyA8ICcgJyB8fCBjID49IDB4N2YpIHsKICAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICAgICAqcCsrID0gJ3gnOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGMgJiAweGYwKSA+PiA0XTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2MgJiAweGZdOworICAgICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGMgJiAweGYwKSA+PiA0XTsKKyAgICAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2MgJiAweGZdOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICpwKysgPSBjOwpAQCAtMjM2LDggKzIzOSwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5X0lOQ1JFRihvYmopOwotICAgICAgICByZXR1cm4gY29kZWNfdHVwbGUob2JqLCBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKSk7CisgICAgICAgIHJldHVybiBjb2RlY190dXBsZShvYmosIFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaikpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcihvYmosIChjb25zdCB2b2lkICoqKSZkYXRhLCAmc2l6ZSkpCkBAIC01ODgsNyArNTkzLDcgQEAKICAgICByZXR1cm4gY29kZWNfdHVwbGUodW5pY29kZSwgcGJ1Zi5sZW4pOwogfQogCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiBkZWZpbmVkKEhBVkVfVVNBQkxFX1dDSEFSX1QpCisjaWZkZWYgSEFWRV9NQkNTCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBtYmNzX2RlY29kZShQeU9iamVjdCAqc2VsZiwKQEAgLTYxMyw3ICs2MTgsMzIgQEAKICAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOwogfQogCi0jZW5kaWYgLyogTVNfV0lORE9XUyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2NvZGVfcGFnZV9kZWNvZGUoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X2J1ZmZlciBwYnVmOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGZpbmFsID0gMDsKKyAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gTlVMTDsKKyAgICBpbnQgY29kZV9wYWdlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSp8emk6Y29kZV9wYWdlX2RlY29kZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZjb2RlX3BhZ2UsICZwYnVmLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBjb25zdW1lZCA9IHBidWYubGVuOworCisgICAgZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVDb2RlUGFnZVN0YXRlZnVsKGNvZGVfcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGJ1Zi5idWYsIHBidWYubGVuLCBlcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsID8gTlVMTCA6ICZjb25zdW1lZCk7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7CisgICAgaWYgKGRlY29kZWQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGNvbnN1bWVkKTsKK30KKworI2VuZGlmIC8qIEhBVkVfTUJDUyAqLwogCiAvKiAtLS0gRW5jb2RlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNjQ1LDE3ICs2NzUsMzEgQEAKICAgICBQeU9iamVjdCAqb2JqOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZGF0YTsKLSAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgUHlfc3NpemVfdCBsZW4sIHNpemU7CisKKyAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICJ1bmljb2RlX2ludGVybmFsIGNvZGVjIGhhcyBiZWVuIGRlcHJlY2F0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgMSkpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dW5pY29kZV9pbnRlcm5hbF9lbmNvZGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmb2JqLCAmZXJyb3JzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKLSAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9BU19EQVRBKG9iaik7Ci0gICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0RBVEFfU0laRShvYmopOwotICAgICAgICByZXR1cm4gY29kZWNfdHVwbGUoUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShkYXRhLCBzaXplKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShvYmopKTsKKyAgICAgICAgUHlfVU5JQ09ERSAqdTsKKworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgdSA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKG9iaiwgJmxlbik7CisgICAgICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKFB5X1VOSUNPREUpKQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHNpemUgPSBsZW4gKiBzaXplb2YoUHlfVU5JQ09ERSk7CisgICAgICAgIHJldHVybiBjb2RlY190dXBsZShQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKil1LCBzaXplKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaikpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcihvYmosIChjb25zdCB2b2lkICoqKSZkYXRhLCAmc2l6ZSkpCkBAIC02NzYsMTQgKzcyMCwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZVVURjcoUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGNyhzdHIsIDAsIDAsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtNzAwLDEyICs3NDIsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVVVEY4KFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHN0ciwgInV0Zi04IiwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC03MzAsMTMgKzc3MiwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZVVURjE2KFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVvcmRlciksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsIGJ5dGVvcmRlciksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtNzUzLDEzICs3OTQsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVVVEYxNihQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSksCi0gICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsIC0xKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC03NzYsMTMgKzgxNiwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZVVURjE2KFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsxKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgKzEpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTgwNywxMyArODQ2LDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlVVRGMzIoUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZW9yZGVyKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYzMihzdHIsIGVycm9ycywgYnl0ZW9yZGVyKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC04MzAsMTMgKzg2OCwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZVVURjMyKFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xKSwKLSAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYzMihzdHIsIGVycm9ycywgLTEpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTg1MywxMyArODkwLDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlVVRGMzIoUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKzEpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCArMSksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtODc2LDExICs5MTIsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVVbmljb2RlRXNjYXBlKFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyhzdHIpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTg5NywxMiArOTM0LDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2FwZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZyhzdHIpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTkxOSwxMyArOTU2LDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlTGF0aW4xKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyhzdHIsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtOTQyLDEzICs5NzgsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVBU0NJSSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhzdHIsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtOTY4LDE0ICsxMDAzLDEyIEBACiAgICAgICAgIG1hcHBpbmcgPSBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVDaGFybWFwKHN0ciwgbWFwcGluZywgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC05ODksNyArMTAyMiw3IEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwKG1hcCk7CiB9CiAKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoSEFWRV9VU0FCTEVfV0NIQVJfVCkKKyNpZmRlZiBIQVZFX01CQ1MKIAogc3RhdGljIFB5T2JqZWN0ICoKIG1iY3NfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLApAQCAtMTAwMywxOCArMTAzNiw0MiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZU1CQ1MoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCBzdHIsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQogCi0jZW5kaWYgLyogTVNfV0lORE9XUyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2NvZGVfcGFnZV9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpzdHIsICp2OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGNvZGVfcGFnZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU98ejpjb2RlX3BhZ2VfZW5jb2RlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvZGVfcGFnZSwgJnN0ciwgJmVycm9ycykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CisgICAgUHlfREVDUkVGKHN0cik7CisgICAgcmV0dXJuIHY7Cit9CisKKyNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KIAogLyogLS0tIEVycm9yIGhhbmRsZXIgcmVnaXN0cnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTExMDEsOSArMTE1OCwxMSBAQAogICAgIHsiY2hhcm1hcF9kZWNvZGUiLCAgICAgICAgICBjaGFybWFwX2RlY29kZSwgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJjaGFybWFwX2J1aWxkIiwgICAgICAgICAgIGNoYXJtYXBfYnVpbGQsICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7InJlYWRidWZmZXJfZW5jb2RlIiwgICAgICAgcmVhZGJ1ZmZlcl9lbmNvZGUsICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChIQVZFX1VTQUJMRV9XQ0hBUl9UKQorI2lmZGVmIEhBVkVfTUJDUwogICAgIHsibWJjc19lbmNvZGUiLCAgICAgICAgICAgICBtYmNzX2VuY29kZSwgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJtYmNzX2RlY29kZSIsICAgICAgICAgICAgIG1iY3NfZGVjb2RlLCAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImNvZGVfcGFnZV9lbmNvZGUiLCAgICAgICAgY29kZV9wYWdlX2VuY29kZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAorICAgIHsiY29kZV9wYWdlX2RlY29kZSIsICAgICAgICBjb2RlX3BhZ2VfZGVjb2RlLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAjZW5kaWYKICAgICB7InJlZ2lzdGVyX2Vycm9yIiwgICAgICAgICAgcmVnaXN0ZXJfZXJyb3IsICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsCiAgICAgICAgIHJlZ2lzdGVyX2Vycm9yX19kb2NfX30sCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jIGIvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYwppbmRleCA1NGMxMzQzLi4zNGExYTkwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMKQEAgLTQxMywxMCArNDEzLDkgQEAKIHN0YXRpYyBpbnQKIF9kZXF1ZV9yb3RhdGUoZGVxdWVvYmplY3QgKmRlcXVlLCBQeV9zc2l6ZV90IG4pCiB7Ci0gICAgUHlfc3NpemVfdCBpLCBsZW49ZGVxdWUtPmxlbiwgaGFsZmxlbj0obGVuKzEpPj4xOwotICAgIFB5T2JqZWN0ICppdGVtLCAqcnY7CisgICAgUHlfc3NpemVfdCBtLCBsZW49ZGVxdWUtPmxlbiwgaGFsZmxlbj1sZW4+PjE7CiAKLSAgICBpZiAobGVuID09IDApCisgICAgaWYgKGxlbiA8PSAxKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAobiA+IGhhbGZsZW4gfHwgbiA8IC1oYWxmbGVuKSB7CiAgICAgICAgIG4gJT0gbGVuOwpAQCAtNDI1LDI0ICs0MjQsNzkgQEAKICAgICAgICAgZWxzZSBpZiAobiA8IC1oYWxmbGVuKQogICAgICAgICAgICAgbiArPSBsZW47CiAgICAgfQorICAgIGFzc2VydChsZW4gPiAxKTsKKyAgICBhc3NlcnQoLWhhbGZsZW4gPD0gbiAmJiBuIDw9IGhhbGZsZW4pOwogCi0gICAgZm9yIChpPTAgOyBpPG4gOyBpKyspIHsKLSAgICAgICAgaXRlbSA9IGRlcXVlX3BvcChkZXF1ZSwgTlVMTCk7Ci0gICAgICAgIGFzc2VydCAoaXRlbSAhPSBOVUxMKTsKLSAgICAgICAgcnYgPSBkZXF1ZV9hcHBlbmRsZWZ0KGRlcXVlLCBpdGVtKTsKLSAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwotICAgICAgICBpZiAocnYgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgUHlfREVDUkVGKHJ2KTsKKyAgICBkZXF1ZS0+c3RhdGUrKzsKKyAgICB3aGlsZSAobiA+IDApIHsKKyAgICAgICAgaWYgKGRlcXVlLT5sZWZ0aW5kZXggPT0gMCkgeworICAgICAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jayhOVUxMLCBkZXF1ZS0+bGVmdGJsb2NrLCBsZW4pOworICAgICAgICAgICAgaWYgKGIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jay0+bGVmdGxpbmsgPT0gTlVMTCk7CisgICAgICAgICAgICBkZXF1ZS0+bGVmdGJsb2NrLT5sZWZ0bGluayA9IGI7CisgICAgICAgICAgICBkZXF1ZS0+bGVmdGJsb2NrID0gYjsKKyAgICAgICAgICAgIGRlcXVlLT5sZWZ0aW5kZXggPSBCTE9DS0xFTjsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRpbmRleCA+IDApOworCisgICAgICAgIG0gPSBuOworICAgICAgICBpZiAobSA+IGRlcXVlLT5yaWdodGluZGV4ICsgMSkKKyAgICAgICAgICAgIG0gPSBkZXF1ZS0+cmlnaHRpbmRleCArIDE7CisgICAgICAgIGlmIChtID4gZGVxdWUtPmxlZnRpbmRleCkKKyAgICAgICAgICAgIG0gPSBkZXF1ZS0+bGVmdGluZGV4OworICAgICAgICBhc3NlcnQgKG0gPiAwICYmIG0gPD0gbGVuKTsKKyAgICAgICAgbWVtY3B5KCZkZXF1ZS0+bGVmdGJsb2NrLT5kYXRhW2RlcXVlLT5sZWZ0aW5kZXggLSBtXSwKKyAgICAgICAgICAgICAgICZkZXF1ZS0+cmlnaHRibG9jay0+ZGF0YVtkZXF1ZS0+cmlnaHRpbmRleCArIDEgLSBtXSwKKyAgICAgICAgICAgICAgIG0gKiBzaXplb2YoUHlPYmplY3QgKikpOworICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCAtPSBtOworICAgICAgICBkZXF1ZS0+bGVmdGluZGV4IC09IG07CisgICAgICAgIG4gLT0gbTsKKworICAgICAgICBpZiAoZGVxdWUtPnJpZ2h0aW5kZXggPT0gLTEpIHsKKyAgICAgICAgICAgIGJsb2NrICpwcmV2YmxvY2sgPSBkZXF1ZS0+cmlnaHRibG9jay0+bGVmdGxpbms7CisgICAgICAgICAgICBhc3NlcnQoZGVxdWUtPnJpZ2h0YmxvY2sgIT0gTlVMTCk7CisgICAgICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jayAhPSBkZXF1ZS0+cmlnaHRibG9jayk7CisgICAgICAgICAgICBmcmVlYmxvY2soZGVxdWUtPnJpZ2h0YmxvY2spOworICAgICAgICAgICAgcHJldmJsb2NrLT5yaWdodGxpbmsgPSBOVUxMOworICAgICAgICAgICAgZGVxdWUtPnJpZ2h0YmxvY2sgPSBwcmV2YmxvY2s7CisgICAgICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IEJMT0NLTEVOIC0gMTsKKyAgICAgICAgfQogICAgIH0KLSAgICBmb3IgKGk9MCA7IGk+biA7IGktLSkgewotICAgICAgICBpdGVtID0gZGVxdWVfcG9wbGVmdChkZXF1ZSwgTlVMTCk7Ci0gICAgICAgIGFzc2VydCAoaXRlbSAhPSBOVUxMKTsKLSAgICAgICAgcnYgPSBkZXF1ZV9hcHBlbmQoZGVxdWUsIGl0ZW0pOwotICAgICAgICBQeV9ERUNSRUYoaXRlbSk7Ci0gICAgICAgIGlmIChydiA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBQeV9ERUNSRUYocnYpOworICAgIHdoaWxlIChuIDwgMCkgeworICAgICAgICBpZiAoZGVxdWUtPnJpZ2h0aW5kZXggPT0gQkxPQ0tMRU4gLSAxKSB7CisgICAgICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKGRlcXVlLT5yaWdodGJsb2NrLCBOVUxMLCBsZW4pOworICAgICAgICAgICAgaWYgKGIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBhc3NlcnQoZGVxdWUtPnJpZ2h0YmxvY2stPnJpZ2h0bGluayA9PSBOVUxMKTsKKyAgICAgICAgICAgIGRlcXVlLT5yaWdodGJsb2NrLT5yaWdodGxpbmsgPSBiOworICAgICAgICAgICAgZGVxdWUtPnJpZ2h0YmxvY2sgPSBiOworICAgICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXggPSAtMTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQgKGRlcXVlLT5yaWdodGluZGV4IDwgQkxPQ0tMRU4gLSAxKTsKKworICAgICAgICBtID0gLW47CisgICAgICAgIGlmIChtID4gQkxPQ0tMRU4gLSBkZXF1ZS0+bGVmdGluZGV4KQorICAgICAgICAgICAgbSA9IEJMT0NLTEVOIC0gZGVxdWUtPmxlZnRpbmRleDsKKyAgICAgICAgaWYgKG0gPiBCTE9DS0xFTiAtIDEgLSBkZXF1ZS0+cmlnaHRpbmRleCkKKyAgICAgICAgICAgIG0gPSBCTE9DS0xFTiAtIDEgLSBkZXF1ZS0+cmlnaHRpbmRleDsKKyAgICAgICAgYXNzZXJ0IChtID4gMCAmJiBtIDw9IGxlbik7CisgICAgICAgIG1lbWNweSgmZGVxdWUtPnJpZ2h0YmxvY2stPmRhdGFbZGVxdWUtPnJpZ2h0aW5kZXggKyAxXSwKKyAgICAgICAgICAgICAgICZkZXF1ZS0+bGVmdGJsb2NrLT5kYXRhW2RlcXVlLT5sZWZ0aW5kZXhdLAorICAgICAgICAgICAgICAgbSAqIHNpemVvZihQeU9iamVjdCAqKSk7CisgICAgICAgIGRlcXVlLT5sZWZ0aW5kZXggKz0gbTsKKyAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXggKz0gbTsKKyAgICAgICAgbiArPSBtOworCisgICAgICAgIGlmIChkZXF1ZS0+bGVmdGluZGV4ID09IEJMT0NLTEVOKSB7CisgICAgICAgICAgICBibG9jayAqbmV4dGJsb2NrID0gZGVxdWUtPmxlZnRibG9jay0+cmlnaHRsaW5rOworICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgIT0gZGVxdWUtPnJpZ2h0YmxvY2spOworICAgICAgICAgICAgZnJlZWJsb2NrKGRlcXVlLT5sZWZ0YmxvY2spOworICAgICAgICAgICAgYXNzZXJ0KG5leHRibG9jayAhPSBOVUxMKTsKKyAgICAgICAgICAgIG5leHRibG9jay0+bGVmdGxpbmsgPSBOVUxMOworICAgICAgICAgICAgZGVxdWUtPmxlZnRibG9jayA9IG5leHRibG9jazsKKyAgICAgICAgICAgIGRlcXVlLT5sZWZ0aW5kZXggPSAwOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiAwOwogfQpAQCAtNTg4LDcgKzY0Miw3IEBACiBQeURvY19TVFJWQVIocmVtb3ZlX2RvYywKICJELnJlbW92ZSh2YWx1ZSkgLS0gcmVtb3ZlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdmFsdWUuIik7CiAKLXN0YXRpYyBpbnQKK3N0YXRpYyB2b2lkCiBkZXF1ZV9jbGVhcihkZXF1ZW9iamVjdCAqZGVxdWUpCiB7CiAgICAgUHlPYmplY3QgKml0ZW07CkBAIC02MDEsNyArNjU1LDYgQEAKICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jayA9PSBkZXF1ZS0+cmlnaHRibG9jayAmJgogICAgICAgICAgICBkZXF1ZS0+bGVmdGluZGV4IC0gMSA9PSBkZXF1ZS0+cmlnaHRpbmRleCAmJgogICAgICAgICAgICBkZXF1ZS0+bGVuID09IDApOwotICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNzA0LDEwICs3NTcsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlX2NsZWFybWV0aG9kKGRlcXVlb2JqZWN0ICpkZXF1ZSkKIHsKLSAgICBpbnQgcnY7Ci0KLSAgICBydiA9IGRlcXVlX2NsZWFyKGRlcXVlKTsKLSAgICBhc3NlcnQgKHJ2ICE9IC0xKTsKKyAgICBkZXF1ZV9jbGVhcihkZXF1ZSk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTc2Nyw4ICs4MTcsOSBAQAogZGVxdWVfcmVkdWNlKGRlcXVlb2JqZWN0ICpkZXF1ZSkKIHsKICAgICBQeU9iamVjdCAqZGljdCwgKnJlc3VsdCwgKmFzbGlzdDsKKyAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CiAKLSAgICBkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QgKilkZXF1ZSwgIl9fZGljdF9fIik7CisgICAgZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopZGVxdWUsICZQeUlkX19fZGljdF9fKTsKICAgICBpZiAoZGljdCA9PSBOVUxMKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGFzbGlzdCA9IFB5U2VxdWVuY2VfTGlzdCgoUHlPYmplY3QgKilkZXF1ZSk7CkBAIC04MzIsOCArODgzLDcgQEAKIAogICAgIGlmICghUHlPYmplY3RfVHlwZUNoZWNrKHYsICZkZXF1ZV90eXBlKSB8fAogICAgICAgICAhUHlPYmplY3RfVHlwZUNoZWNrKHcsICZkZXF1ZV90eXBlKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAKICAgICAvKiBTaG9ydGN1dHMgKi8KQEAgLTExNDEsNiArMTE5MSwzNSBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVpdGVyX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeV9zc2l6ZV90IGksIGluZGV4PTA7CisgICAgUHlPYmplY3QgKmRlcXVlOworICAgIGRlcXVlaXRlcm9iamVjdCAqaXQ7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIXxuIiwgJmRlcXVlX3R5cGUsICZkZXF1ZSwgJmluZGV4KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KHR5cGUgPT0gJmRlcXVlaXRlcl90eXBlKTsKKworICAgIGl0ID0gKGRlcXVlaXRlcm9iamVjdCopZGVxdWVfaXRlcigoZGVxdWVvYmplY3QgKilkZXF1ZSk7CisgICAgaWYgKCFpdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogY29uc3VtZSBpdGVtcyBmcm9tIHRoZSBxdWV1ZSAqLworICAgIGZvcihpPTA7IGk8aW5kZXg7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IGRlcXVlaXRlcl9uZXh0KGl0KTsKKyAgICAgICAgaWYgKGl0ZW0pIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpdC0+Y291bnRlcikgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gKFB5T2JqZWN0KilpdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlaXRlcl9sZW4oZGVxdWVpdGVyb2JqZWN0ICppdCkKIHsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGl0LT5jb3VudGVyKTsKQEAgLTExNDgsMTQgKzEyMjcsMjEgQEAKIAogUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywgIlByaXZhdGUgbWV0aG9kIHJldHVybmluZyBhbiBlc3RpbWF0ZSBvZiBsZW4obGlzdChpdCkpLiIpOwogCitzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVpdGVyX3JlZHVjZShkZXF1ZWl0ZXJvYmplY3QgKml0KQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9uKSIsIFB5X1RZUEUoaXQpLCBpdC0+ZGVxdWUsIGl0LT5kZXF1ZS0+bGVuIC0gaXQtPmNvdW50ZXIpOworfQorCiBzdGF0aWMgUHlNZXRob2REZWYgZGVxdWVpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilkZXF1ZWl0ZXJfbGVuLCBNRVRIX05PQVJHUywgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pZGVxdWVpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IGRlcXVlaXRlcl90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJkZXF1ZV9pdGVyYXRvciIsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgICJfY29sbGVjdGlvbnMuX2RlcXVlX2l0ZXJhdG9yIiwgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KICAgICBzaXplb2YoZGVxdWVpdGVyb2JqZWN0KSwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCkBAIC0xMTgzLDYgKzEyNjksMTYgQEAKICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWRlcXVlaXRlcl9uZXh0LCAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgZGVxdWVpdGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIGRlcXVlaXRlcl9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgMCwKIH07CiAKQEAgLTEyMzYsOSArMTMzMiwzOCBAQAogICAgIHJldHVybiBpdGVtOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVyZXZpdGVyX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeV9zc2l6ZV90IGksIGluZGV4PTA7CisgICAgUHlPYmplY3QgKmRlcXVlOworICAgIGRlcXVlaXRlcm9iamVjdCAqaXQ7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIXxuIiwgJmRlcXVlX3R5cGUsICZkZXF1ZSwgJmluZGV4KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KHR5cGUgPT0gJmRlcXVlcmV2aXRlcl90eXBlKTsKKworICAgIGl0ID0gKGRlcXVlaXRlcm9iamVjdCopZGVxdWVfcmV2aXRlcigoZGVxdWVvYmplY3QgKilkZXF1ZSk7CisgICAgaWYgKCFpdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogY29uc3VtZSBpdGVtcyBmcm9tIHRoZSBxdWV1ZSAqLworICAgIGZvcihpPTA7IGk8aW5kZXg7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IGRlcXVlcmV2aXRlcl9uZXh0KGl0KTsKKyAgICAgICAgaWYgKGl0ZW0pIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpdC0+Y291bnRlcikgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gKFB5T2JqZWN0KilpdDsKK30KKwogc3RhdGljIFB5VHlwZU9iamVjdCBkZXF1ZXJldml0ZXJfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiZGVxdWVfcmV2ZXJzZV9pdGVyYXRvciIsICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICAiX2NvbGxlY3Rpb25zLl9kZXF1ZV9yZXZlcnNlX2l0ZXJhdG9yIiwgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKGRlcXVlaXRlcm9iamVjdCksICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwpAQCAtMTI2Niw2ICsxMzkxLDE2IEBACiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylkZXF1ZXJldml0ZXJfbmV4dCwgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIGRlcXVlaXRlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBkZXF1ZXJldml0ZXJfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIDAsCiB9OwogCkBAIC0xMzU0LDEzICsxNDg5LDE1IEBACiAgICAgUHlPYmplY3QgKml0ZW1zOwogICAgIFB5T2JqZWN0ICppdGVyOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIoaXRlbXMpOworCiAgICAgaWYgKGRkLT5kZWZhdWx0X2ZhY3RvcnkgPT0gTlVMTCB8fCBkZC0+ZGVmYXVsdF9mYWN0b3J5ID09IFB5X05vbmUpCiAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKICAgICBlbHNlCiAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgZGQtPmRlZmF1bHRfZmFjdG9yeSk7CiAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaXRlbXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKWRkLCAiaXRlbXMiLCAiKCkiKTsKKyAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopZGQsICZQeUlkX2l0ZW1zLCAiKCkiKTsKICAgICBpZiAoaXRlbXMgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTU3MywxMiArMTcxMCw4IEBACiAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG1hcHBpbmcpKSB7CiAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICBrZXkgPSBQeUl0ZXJfTmV4dChpdCk7Ci0gICAgICAgICAgICBpZiAoa2V5ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BJdGVyYXRpb24pKQotICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBvbGR2YWwgPSBQeURpY3RfR2V0SXRlbShtYXBwaW5nLCBrZXkpOwogICAgICAgICAgICAgaWYgKG9sZHZhbCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKG1hcHBpbmcsIGtleSwgb25lKSA9PSAtMSkKQEAgLTE1OTYsMTIgKzE3MjksOCBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICBrZXkgPSBQeUl0ZXJfTmV4dChpdCk7Ci0gICAgICAgICAgICBpZiAoa2V5ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BJdGVyYXRpb24pKQotICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBvbGR2YWwgPSBQeU9iamVjdF9HZXRJdGVtKG1hcHBpbmcsIGtleSk7CiAgICAgICAgICAgICBpZiAob2xkdmFsID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkgfHwgIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQpAQCAtMTY3OCw5ICsxODA3LDEzIEBACiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZkZXF1ZWl0ZXJfdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoJmRlcXVlaXRlcl90eXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9kZXF1ZV9pdGVyYXRvciIsIChQeU9iamVjdCAqKSZkZXF1ZWl0ZXJfdHlwZSk7CiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZkZXF1ZXJldml0ZXJfdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoJmRlcXVlcmV2aXRlcl90eXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9kZXF1ZV9yZXZlcnNlX2l0ZXJhdG9yIiwgKFB5T2JqZWN0ICopJmRlcXVlcmV2aXRlcl90eXBlKTsKIAogICAgIHJldHVybiBtOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jcnlwdG1vZHVsZS5jIGIvTW9kdWxlcy9fY3J5cHRtb2R1bGUuYwpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBNb2R1bGVzL2NyeXB0bW9kdWxlLmMKcmVuYW1lIHRvIE1vZHVsZXMvX2NyeXB0bW9kdWxlLmMKaW5kZXggZDVhNDJmZi4uNTEwMDc4OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jcnlwdG1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2NyeXB0bW9kdWxlLmMKQEAgLTQ1LDcgKzQ1LDcgQEAKIAogc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBjcnlwdG1vZHVsZSA9IHsKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgImNyeXB0IiwKKyAgICAiX2NyeXB0IiwKICAgICBOVUxMLAogICAgIC0xLAogICAgIGNyeXB0X21ldGhvZHMsCkBAIC01Niw3ICs1Niw3IEBACiB9OwogCiBQeU1PRElOSVRfRlVOQwotUHlJbml0X2NyeXB0KHZvaWQpCitQeUluaXRfX2NyeXB0KHZvaWQpCiB7CiAgICAgcmV0dXJuIFB5TW9kdWxlX0NyZWF0ZSgmY3J5cHRtb2R1bGUpOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3N2LmMgYi9Nb2R1bGVzL19jc3YuYwppbmRleCA4OGQ0Zjk3Li40OGE1Y2Y4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jc3YuYworKysgYi9Nb2R1bGVzL19jc3YuYwpAQCAtMTMsMTIgKzEzLDQwIEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAKLSNkZWZpbmUgSVNfQkFTRVNUUklORyhvKSBcCi0gICAgUHlVbmljb2RlX0NoZWNrKG8pCiAKLXN0YXRpYyBQeU9iamVjdCAqZXJyb3Jfb2JqOyAgICAgLyogQ1NWIGV4Y2VwdGlvbiAqLwotc3RhdGljIFB5T2JqZWN0ICpkaWFsZWN0czsgICAgICAvKiBEaWFsZWN0IHJlZ2lzdHJ5ICovCi1zdGF0aWMgbG9uZyBmaWVsZF9saW1pdCA9IDEyOCAqIDEwMjQ7ICAgLyogbWF4IHBhcnNlZCBmaWVsZCBzaXplICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3QgKmVycm9yX29iajsgICAvKiBDU1YgZXhjZXB0aW9uICovCisgICAgUHlPYmplY3QgKmRpYWxlY3RzOyAgIC8qIERpYWxlY3QgcmVnaXN0cnkgKi8KKyAgICBsb25nIGZpZWxkX2xpbWl0OyAgIC8qIG1heCBwYXJzZWQgZmllbGQgc2l6ZSAqLworfSBfY3N2c3RhdGU7CisKKyNkZWZpbmUgX2NzdnN0YXRlKG8pICgoX2NzdnN0YXRlICopUHlNb2R1bGVfR2V0U3RhdGUobykpCisKK3N0YXRpYyBpbnQKK19jc3ZfY2xlYXIoUHlPYmplY3QgKm0pCit7CisgICAgUHlfQ0xFQVIoX2NzdnN0YXRlKG0pLT5lcnJvcl9vYmopOworICAgIFB5X0NMRUFSKF9jc3ZzdGF0ZShtKS0+ZGlhbGVjdHMpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitfY3N2X3RyYXZlcnNlKFB5T2JqZWN0ICptLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChfY3N2c3RhdGUobSktPmVycm9yX29iaik7CisgICAgUHlfVklTSVQoX2NzdnN0YXRlKG0pLT5kaWFsZWN0cyk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitfY3N2X2ZyZWUodm9pZCAqbSkKK3sKKyAgIF9jc3ZfY2xlYXIoKFB5T2JqZWN0ICopbSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX2Nzdm1vZHVsZTsKKworI2RlZmluZSBfY3N2c3RhdGVfZ2xvYmFsICgoX2NzdnN0YXRlICopUHlNb2R1bGVfR2V0U3RhdGUoUHlTdGF0ZV9GaW5kTW9kdWxlKCZfY3N2bW9kdWxlKSkpCiAKIHR5cGVkZWYgZW51bSB7CiAgICAgU1RBUlRfUkVDT1JELCBTVEFSVF9GSUVMRCwgRVNDQVBFRF9DSEFSLCBJTl9GSUVMRCwKQEAgLTQ3LDkgKzc1LDkgQEAKICAgICBQeU9iamVjdF9IRUFECiAKICAgICBpbnQgZG91YmxlcXVvdGU7ICAgICAgICAgICAgLyogaXMgIiByZXByZXNlbnRlZCBieSAiIj8gKi8KLSAgICBQeV9VTklDT0RFIGRlbGltaXRlcjsgICAgICAgLyogZmllbGQgc2VwYXJhdG9yICovCi0gICAgUHlfVU5JQ09ERSBxdW90ZWNoYXI7ICAgICAgIC8qIHF1b3RlIGNoYXJhY3RlciAqLwotICAgIFB5X1VOSUNPREUgZXNjYXBlY2hhcjsgICAgICAvKiBlc2NhcGUgY2hhcmFjdGVyICovCisgICAgUHlfVUNTNCBkZWxpbWl0ZXI7ICAgICAgIC8qIGZpZWxkIHNlcGFyYXRvciAqLworICAgIFB5X1VDUzQgcXVvdGVjaGFyOyAgICAgICAvKiBxdW90ZSBjaGFyYWN0ZXIgKi8KKyAgICBQeV9VQ1M0IGVzY2FwZWNoYXI7ICAgICAgLyogZXNjYXBlIGNoYXJhY3RlciAqLwogICAgIGludCBza2lwaW5pdGlhbHNwYWNlOyAgICAgICAvKiBpZ25vcmUgc3BhY2VzIGZvbGxvd2luZyBkZWxpbWl0ZXI/ICovCiAgICAgUHlPYmplY3QgKmxpbmV0ZXJtaW5hdG9yOyAvKiBzdHJpbmcgdG8gd3JpdGUgYmV0d2VlbiByZWNvcmRzICovCiAgICAgaW50IHF1b3Rpbmc7ICAgICAgICAgICAgICAgIC8qIHN0eWxlIG9mIHF1b3RpbmcgdG8gd3JpdGUgKi8KQEAgLTY4LDcgKzk2LDcgQEAKIAogICAgIFB5T2JqZWN0ICpmaWVsZHM7ICAgICAgICAgICAvKiBmaWVsZCBsaXN0IGZvciBjdXJyZW50IHJlY29yZCAqLwogICAgIFBhcnNlclN0YXRlIHN0YXRlOyAgICAgICAgICAvKiBjdXJyZW50IENTViBwYXJzZSBzdGF0ZSAqLwotICAgIFB5X1VOSUNPREUgKmZpZWxkOyAgICAgICAgICAvKiBidWlsZCBjdXJyZW50IGZpZWxkIGluIGhlcmUgKi8KKyAgICBQeV9VQ1M0ICpmaWVsZDsgICAgICAgICAgICAgLyogdGVtcG9yYXJ5IGJ1ZmZlciAqLwogICAgIFB5X3NzaXplX3QgZmllbGRfc2l6ZTsgICAgICAvKiBzaXplIG9mIGFsbG9jYXRlZCBidWZmZXIgKi8KICAgICBQeV9zc2l6ZV90IGZpZWxkX2xlbjsgICAgICAgLyogbGVuZ3RoIG9mIGN1cnJlbnQgZmllbGQgKi8KICAgICBpbnQgbnVtZXJpY19maWVsZDsgICAgICAgICAgLyogdHJlYXQgZmllbGQgYXMgbnVtZXJpYyAqLwpAQCAtODYsNyArMTE0LDcgQEAKIAogICAgIERpYWxlY3RPYmogKmRpYWxlY3Q7ICAgIC8qIHBhcnNpbmcgZGlhbGVjdCAqLwogCi0gICAgUHlfVU5JQ09ERSAqcmVjOyAgICAgICAgICAgIC8qIGJ1ZmZlciBmb3IgcGFyc2VyLmpvaW4gKi8KKyAgICBQeV9VQ1M0ICpyZWM7ICAgICAgICAgICAgLyogYnVmZmVyIGZvciBwYXJzZXIuam9pbiAqLwogICAgIFB5X3NzaXplX3QgcmVjX3NpemU7ICAgICAgICAvKiBzaXplIG9mIGFsbG9jYXRlZCByZWNvcmQgKi8KICAgICBQeV9zc2l6ZV90IHJlY19sZW47ICAgICAgICAgLyogbGVuZ3RoIG9mIHJlY29yZCAqLwogICAgIGludCBudW1fZmllbGRzOyAgICAgICAgICAgICAvKiBudW1iZXIgb2YgZmllbGRzIGluIHJlY29yZCAqLwpAQCAtMTAzLDEwICsxMzEsMTAgQEAKIHsKICAgICBQeU9iamVjdCAqZGlhbGVjdF9vYmo7CiAKLSAgICBkaWFsZWN0X29iaiA9IFB5RGljdF9HZXRJdGVtKGRpYWxlY3RzLCBuYW1lX29iaik7CisgICAgZGlhbGVjdF9vYmogPSBQeURpY3RfR2V0SXRlbShfY3N2c3RhdGVfZ2xvYmFsLT5kaWFsZWN0cywgbmFtZV9vYmopOwogICAgIGlmIChkaWFsZWN0X29iaiA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosICJ1bmtub3duIGRpYWxlY3QiKTsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosICJ1bmtub3duIGRpYWxlY3QiKTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICBQeV9JTkNSRUYoZGlhbGVjdF9vYmopOwpAQCAtMTIxLDE0ICsxNDksMTQgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWdldF9udWxsY2hhcl9hc19Ob25lKFB5X1VOSUNPREUgYykKK2dldF9udWxsY2hhcl9hc19Ob25lKFB5X1VDUzQgYykKIHsKICAgICBpZiAoYyA9PSAnXDAnKSB7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgoUHlfVU5JQ09ERSAqKSZjLCAxKTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT3JkaW5hbChjKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTIwMywyNSArMjMxLDI0IEBACiB9CiAKIHN0YXRpYyBpbnQKLV9zZXRfY2hhcihjb25zdCBjaGFyICpuYW1lLCBQeV9VTklDT0RFICp0YXJnZXQsIFB5T2JqZWN0ICpzcmMsIFB5X1VOSUNPREUgZGZsdCkKK19zZXRfY2hhcihjb25zdCBjaGFyICpuYW1lLCBQeV9VQ1M0ICp0YXJnZXQsIFB5T2JqZWN0ICpzcmMsIFB5X1VDUzQgZGZsdCkKIHsKICAgICBpZiAoc3JjID09IE5VTEwpCiAgICAgICAgICp0YXJnZXQgPSBkZmx0OwogICAgIGVsc2UgewogICAgICAgICAqdGFyZ2V0ID0gJ1wwJzsKICAgICAgICAgaWYgKHNyYyAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICpidWY7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICAgICAgICAgIGJ1ZiA9IFB5VW5pY29kZV9Bc1VuaWNvZGUoc3JjKTsKLSAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HZXRTaXplKHNyYyk7Ci0gICAgICAgICAgICBpZiAoYnVmID09IE5VTEwgfHwgbGVuID4gMSkgeworICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dldExlbmd0aChzcmMpOworICAgICAgICAgICAgaWYgKGxlbiA+IDEpIHsKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAiXCIlc1wiIG11c3QgYmUgYW4gMS1jaGFyYWN0ZXIgc3RyaW5nIiwKICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogUHlVbmljb2RlX1JFQURZKCkgaXMgY2FsbGVkIGluIFB5VW5pY29kZV9HZXRMZW5ndGgoKSAqLwogICAgICAgICAgICAgaWYgKGxlbiA+IDApCi0gICAgICAgICAgICAgICAgKnRhcmdldCA9IGJ1ZlswXTsKKyAgICAgICAgICAgICAgICAqdGFyZ2V0ID0gUHlVbmljb2RlX1JFQURfQ0hBUihzcmMsIDApOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtMjM1LDEyICsyNjIsMTQgQEAKICAgICBlbHNlIHsKICAgICAgICAgaWYgKHNyYyA9PSBQeV9Ob25lKQogICAgICAgICAgICAgKnRhcmdldCA9IE5VTEw7Ci0gICAgICAgIGVsc2UgaWYgKCFJU19CQVNFU1RSSU5HKHNyYykpIHsKKyAgICAgICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhzcmMpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJcIiVzXCIgbXVzdCBiZSBhIHN0cmluZyIsIG5hbWUpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzcmMpID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIFB5X1hERUNSRUYoKnRhcmdldCk7CiAgICAgICAgICAgICBQeV9JTkNSRUYoc3JjKTsKICAgICAgICAgICAgICp0YXJnZXQgPSBzcmM7CkBAIC0zMjksNyArMzU4LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoZGlhbGVjdCAhPSBOVUxMKSB7Ci0gICAgICAgIGlmIChJU19CQVNFU1RSSU5HKGRpYWxlY3QpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soZGlhbGVjdCkpIHsKICAgICAgICAgICAgIGRpYWxlY3QgPSBnZXRfZGlhbGVjdF9mcm9tX3JlZ2lzdHJ5KGRpYWxlY3QpOwogICAgICAgICAgICAgaWYgKGRpYWxlY3QgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTUwMiw3ICs1MzEsOCBAQAogewogICAgIFB5T2JqZWN0ICpmaWVsZDsKIAotICAgIGZpZWxkID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHNlbGYtPmZpZWxkLCBzZWxmLT5maWVsZF9sZW4pOworICAgIGZpZWxkID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgc2VsZi0+ZmllbGQsIHNlbGYtPmZpZWxkX2xlbik7CiAgICAgaWYgKGZpZWxkID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBzZWxmLT5maWVsZF9sZW4gPSAwOwpAQCAtNTExLDExICs1NDEsOSBAQAogCiAgICAgICAgIHNlbGYtPm51bWVyaWNfZmllbGQgPSAwOwogICAgICAgICB0bXAgPSBQeU51bWJlcl9GbG9hdChmaWVsZCk7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGZpZWxkKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYoZmllbGQpOworICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGZpZWxkID0gdG1wOwogICAgIH0KICAgICBQeUxpc3RfQXBwZW5kKHNlbGYtPmZpZWxkcywgZmllbGQpOwpAQCAtNTMwLDE2ICs1NTgsMTYgQEAKICAgICAgICAgc2VsZi0+ZmllbGRfc2l6ZSA9IDQwOTY7CiAgICAgICAgIGlmIChzZWxmLT5maWVsZCAhPSBOVUxMKQogICAgICAgICAgICAgUHlNZW1fRnJlZShzZWxmLT5maWVsZCk7Ci0gICAgICAgIHNlbGYtPmZpZWxkID0gUHlNZW1fTmV3KFB5X1VOSUNPREUsIHNlbGYtPmZpZWxkX3NpemUpOworICAgICAgICBzZWxmLT5maWVsZCA9IFB5TWVtX05ldyhQeV9VQ1M0LCBzZWxmLT5maWVsZF9zaXplKTsKICAgICB9CiAgICAgZWxzZSB7CisgICAgICAgIFB5X1VDUzQgKmZpZWxkID0gc2VsZi0+ZmllbGQ7CiAgICAgICAgIGlmIChzZWxmLT5maWVsZF9zaXplID4gUFlfU1NJWkVfVF9NQVggLyAyKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgc2VsZi0+ZmllbGRfc2l6ZSAqPSAyOwotICAgICAgICBzZWxmLT5maWVsZCA9IFB5TWVtX1Jlc2l6ZShzZWxmLT5maWVsZCwgUHlfVU5JQ09ERSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZmllbGRfc2l6ZSk7CisgICAgICAgIHNlbGYtPmZpZWxkID0gUHlNZW1fUmVzaXplKGZpZWxkLCBQeV9VQ1M0LCBzZWxmLT5maWVsZF9zaXplKTsKICAgICB9CiAgICAgaWYgKHNlbGYtPmZpZWxkID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTU0OSwxMSArNTc3LDExIEBACiB9CiAKIHN0YXRpYyBpbnQKLXBhcnNlX2FkZF9jaGFyKFJlYWRlck9iaiAqc2VsZiwgUHlfVU5JQ09ERSBjKQorcGFyc2VfYWRkX2NoYXIoUmVhZGVyT2JqICpzZWxmLCBQeV9VQ1M0IGMpCiB7Ci0gICAgaWYgKHNlbGYtPmZpZWxkX2xlbiA+PSBmaWVsZF9saW1pdCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoZXJyb3Jfb2JqLCAiZmllbGQgbGFyZ2VyIHRoYW4gZmllbGQgbGltaXQgKCVsZCkiLAotICAgICAgICAgICAgICAgICAgICAgZmllbGRfbGltaXQpOworICAgIGlmIChzZWxmLT5maWVsZF9sZW4gPj0gX2NzdnN0YXRlX2dsb2JhbC0+ZmllbGRfbGltaXQpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwgImZpZWxkIGxhcmdlciB0aGFuIGZpZWxkIGxpbWl0ICglbGQpIiwKKyAgICAgICAgICAgICAgICAgICAgIF9jc3ZzdGF0ZV9nbG9iYWwtPmZpZWxkX2xpbWl0KTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAoc2VsZi0+ZmllbGRfbGVuID09IHNlbGYtPmZpZWxkX3NpemUgJiYgIXBhcnNlX2dyb3dfYnVmZihzZWxmKSkKQEAgLTU2Myw3ICs1OTEsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1wYXJzZV9wcm9jZXNzX2NoYXIoUmVhZGVyT2JqICpzZWxmLCBQeV9VTklDT0RFIGMpCitwYXJzZV9wcm9jZXNzX2NoYXIoUmVhZGVyT2JqICpzZWxmLCBQeV9VQ1M0IGMpCiB7CiAgICAgRGlhbGVjdE9iaiAqZGlhbGVjdCA9IHNlbGYtPmRpYWxlY3Q7CiAKQEAgLTcxMCw3ICs3MzgsNyBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLyogaWxsZWdhbCAqLwotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KGVycm9yX29iaiwgIiclYycgZXhwZWN0ZWQgYWZ0ZXIgJyVjJyIsCisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLCAiJyVjJyBleHBlY3RlZCBhZnRlciAnJWMnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFsZWN0LT5kZWxpbWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbGVjdC0+cXVvdGVjaGFyKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTcyMyw3ICs3NTEsNyBAQAogICAgICAgICBlbHNlIGlmIChjID09ICdcMCcpCiAgICAgICAgICAgICBzZWxmLT5zdGF0ZSA9IFNUQVJUX1JFQ09SRDsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoZXJyb3Jfb2JqLCAibmV3LWxpbmUgY2hhcmFjdGVyIHNlZW4gaW4gdW5xdW90ZWQgZmllbGQgLSBkbyB5b3UgbmVlZCB0byBvcGVuIHRoZSBmaWxlIGluIHVuaXZlcnNhbC1uZXdsaW5lIG1vZGU/Iik7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLCAibmV3LWxpbmUgY2hhcmFjdGVyIHNlZW4gaW4gdW5xdW90ZWQgZmllbGQgLSBkbyB5b3UgbmVlZCB0byBvcGVuIHRoZSBmaWxlIGluIHVuaXZlcnNhbC1uZXdsaW5lIG1vZGU/Iik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC03NDgsMTAgKzc3NiwxMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFJlYWRlcl9pdGVybmV4dChSZWFkZXJPYmogKnNlbGYpCiB7Ci0gICAgUHlPYmplY3QgKmxpbmVvYmo7CiAgICAgUHlPYmplY3QgKmZpZWxkcyA9IE5VTEw7Ci0gICAgUHlfVU5JQ09ERSAqbGluZSwgYzsKLSAgICBQeV9zc2l6ZV90IGxpbmVsZW47CisgICAgUHlfVUNTNCBjOworICAgIFB5X3NzaXplX3QgcG9zLCBsaW5lbGVuOworICAgIHVuc2lnbmVkIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlPYmplY3QgKmxpbmVvYmo7CiAKICAgICBpZiAocGFyc2VfcmVzZXQoc2VsZikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTc2MiwxNCArNzkyLDE1IEBACiAgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkgJiYgKHNlbGYtPmZpZWxkX2xlbiAhPSAwIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0YXRlID09IElOX1FVT1RFRF9GSUVMRCkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2VsZi0+ZGlhbGVjdC0+c3RyaWN0KQotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoZXJyb3Jfb2JqLCAidW5leHBlY3RlZCBlbmQgb2YgZGF0YSIpOworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgZW5kIG9mIGRhdGEiKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChwYXJzZV9zYXZlX2ZpZWxkKHNlbGYpID49IDApCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sobGluZW9iaikpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosCisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVyYXRvciBzaG91bGQgcmV0dXJuIHN0cmluZ3MsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICUuMjAwcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIihkaWQgeW91IG9wZW4gdGhlIGZpbGUgaW4gdGV4dCBtb2RlPykiLApAQCAtNzc4LDE4ICs4MDksMjAgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5lb2JqKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgICsrc2VsZi0+bGluZV9udW07Ci0gICAgICAgIGxpbmUgPSBQeVVuaWNvZGVfQXNVbmljb2RlKGxpbmVvYmopOwotICAgICAgICBsaW5lbGVuID0gUHlVbmljb2RlX0dldFNpemUobGluZW9iaik7Ci0gICAgICAgIGlmIChsaW5lID09IE5VTEwgfHwgbGluZWxlbiA8IDApIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShsaW5lb2JqKSA9PSAtMSkgewogICAgICAgICAgICAgUHlfREVDUkVGKGxpbmVvYmopOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KKyAgICAgICAgKytzZWxmLT5saW5lX251bTsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGxpbmVvYmopOworICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEobGluZW9iaik7CisgICAgICAgIHBvcyA9IDA7CisgICAgICAgIGxpbmVsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChsaW5lb2JqKTsKICAgICAgICAgd2hpbGUgKGxpbmVsZW4tLSkgewotICAgICAgICAgICAgYyA9ICpsaW5lKys7CisgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKTsKICAgICAgICAgICAgIGlmIChjID09ICdcMCcpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGluZW9iaik7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KGVycm9yX29iaiwKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZSBjb250YWlucyBOVUxMIGJ5dGUiKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgICAgIH0KQEAgLTc5Nyw2ICs4MzAsNyBAQAogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5lb2JqKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBvcysrOwogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihsaW5lb2JqKTsKICAgICAgICAgaWYgKHBhcnNlX3Byb2Nlc3NfY2hhcihzZWxmLCAwKSA8IDApCkBAIC05NTMsMTMgKzk4NywxMyBAQAogICogcmVjb3JkIGxlbmd0aC4KICAqLwogc3RhdGljIFB5X3NzaXplX3QKLWpvaW5fYXBwZW5kX2RhdGEoV3JpdGVyT2JqICpzZWxmLCBQeV9VTklDT0RFICpmaWVsZCwgaW50IHF1b3RlX2VtcHR5LAotICAgICAgICAgICAgICAgICBpbnQgKnF1b3RlZCwgaW50IGNvcHlfcGhhc2UpCitqb2luX2FwcGVuZF9kYXRhKFdyaXRlck9iaiAqc2VsZiwgdW5zaWduZWQgaW50IGZpZWxkX2tpbmQsIHZvaWQgKmZpZWxkX2RhdGEsCisgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZmllbGRfbGVuLCBpbnQgcXVvdGVfZW1wdHksIGludCAqcXVvdGVkLAorICAgICAgICAgICAgICAgICBpbnQgY29weV9waGFzZSkKIHsKICAgICBEaWFsZWN0T2JqICpkaWFsZWN0ID0gc2VsZi0+ZGlhbGVjdDsKICAgICBpbnQgaTsKICAgICBQeV9zc2l6ZV90IHJlY19sZW47Ci0gICAgUHlfVU5JQ09ERSAqbGluZXRlcm07CiAKICNkZWZpbmUgQUREQ0goYykgXAogICAgIGRvIHtcCkBAIC05NjgsMTAgKzEwMDIsNiBAQAogICAgICAgICByZWNfbGVuKys7XAogICAgIH0gd2hpbGUoMCkKIAotICAgIGxpbmV0ZXJtID0gUHlVbmljb2RlX0FzVW5pY29kZShkaWFsZWN0LT5saW5ldGVybWluYXRvcik7Ci0gICAgaWYgKGxpbmV0ZXJtID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLQogICAgIHJlY19sZW4gPSBzZWxmLT5yZWNfbGVuOwogCiAgICAgLyogSWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGZpZWxkIHdlIG5lZWQgYSBmaWVsZCBzZXBhcmF0b3IgKi8KQEAgLTk4NCwxNyArMTAxNCwxNiBAQAogCiAgICAgLyogQ29weS9jb3VudCBmaWVsZCBkYXRhICovCiAgICAgLyogSWYgZmllbGQgaXMgbnVsbCBqdXN0IHBhc3Mgb3ZlciAqLwotICAgIGZvciAoaSA9IDA7IGZpZWxkOyBpKyspIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjID0gZmllbGRbaV07CisgICAgZm9yIChpID0gMDsgZmllbGRfZGF0YSAmJiAoaSA8IGZpZWxkX2xlbik7IGkrKykgeworICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChmaWVsZF9raW5kLCBmaWVsZF9kYXRhLCBpKTsKICAgICAgICAgaW50IHdhbnRfZXNjYXBlID0gMDsKIAotICAgICAgICBpZiAoYyA9PSAnXDAnKQotICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgaWYgKGMgPT0gZGlhbGVjdC0+ZGVsaW1pdGVyIHx8CiAgICAgICAgICAgICBjID09IGRpYWxlY3QtPmVzY2FwZWNoYXIgfHwKICAgICAgICAgICAgIGMgPT0gZGlhbGVjdC0+cXVvdGVjaGFyICB8fAotICAgICAgICAgICAgUHlfVU5JQ09ERV9zdHJjaHIobGluZXRlcm0sIGMpKSB7CisgICAgICAgICAgICBQeVVuaWNvZGVfRmluZENoYXIoCisgICAgICAgICAgICAgICAgZGlhbGVjdC0+bGluZXRlcm1pbmF0b3IsIGMsIDAsCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoZGlhbGVjdC0+bGluZXRlcm1pbmF0b3IpLCAxKSA+PSAwKSB7CiAgICAgICAgICAgICBpZiAoZGlhbGVjdC0+cXVvdGluZyA9PSBRVU9URV9OT05FKQogICAgICAgICAgICAgICAgIHdhbnRfZXNjYXBlID0gMTsKICAgICAgICAgICAgIGVsc2UgewpAQCAtMTAwOSw3ICsxMDM4LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh3YW50X2VzY2FwZSkgewogICAgICAgICAgICAgICAgIGlmICghZGlhbGVjdC0+ZXNjYXBlY2hhcikgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoZXJyb3Jfb2JqLAorICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZWQgdG8gZXNjYXBlLCBidXQgbm8gZXNjYXBlY2hhciBzZXQiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgIH0KQEAgLTEwMjUsNyArMTA1NCw3IEBACiAgICAgICovCiAgICAgaWYgKGkgPT0gMCAmJiBxdW90ZV9lbXB0eSkgewogICAgICAgICBpZiAoZGlhbGVjdC0+cXVvdGluZyA9PSBRVU9URV9OT05FKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoZXJyb3Jfb2JqLAorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwKICAgICAgICAgICAgICAgICAic2luZ2xlIGVtcHR5IGZpZWxkIHJlY29yZCBtdXN0IGJlIHF1b3RlZCIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC0xMDU3LDE0ICsxMDg2LDEzIEBACiAgICAgICAgICAgICBzZWxmLT5yZWNfc2l6ZSA9IChyZWNfbGVuIC8gTUVNX0lOQ1IgKyAxKSAqIE1FTV9JTkNSOwogICAgICAgICAgICAgaWYgKHNlbGYtPnJlYyAhPSBOVUxMKQogICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUoc2VsZi0+cmVjKTsKLSAgICAgICAgICAgIHNlbGYtPnJlYyA9IFB5TWVtX05ldyhQeV9VTklDT0RFLCBzZWxmLT5yZWNfc2l6ZSk7CisgICAgICAgICAgICBzZWxmLT5yZWMgPSBQeU1lbV9OZXcoUHlfVUNTNCwgc2VsZi0+cmVjX3NpemUpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlfVU5JQ09ERSogb2xkX3JlYyA9IHNlbGYtPnJlYzsKKyAgICAgICAgICAgIFB5X1VDUzQqIG9sZF9yZWMgPSBzZWxmLT5yZWM7CiAKICAgICAgICAgICAgIHNlbGYtPnJlY19zaXplID0gKHJlY19sZW4gLyBNRU1fSU5DUiArIDEpICogTUVNX0lOQ1I7Ci0gICAgICAgICAgICBzZWxmLT5yZWMgPSBQeU1lbV9SZXNpemUoc2VsZi0+cmVjLCBQeV9VTklDT0RFLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnJlY19zaXplKTsKKyAgICAgICAgICAgIHNlbGYtPnJlYyA9IFB5TWVtX1Jlc2l6ZShvbGRfcmVjLCBQeV9VQ1M0LCBzZWxmLT5yZWNfc2l6ZSk7CiAgICAgICAgICAgICBpZiAoc2VsZi0+cmVjID09IE5VTEwpCiAgICAgICAgICAgICAgICAgUHlNZW1fRnJlZShvbGRfcmVjKTsKICAgICAgICAgfQpAQCAtMTA3NywxMSArMTEwNSwyMiBAQAogfQogCiBzdGF0aWMgaW50Ci1qb2luX2FwcGVuZChXcml0ZXJPYmogKnNlbGYsIFB5X1VOSUNPREUgKmZpZWxkLCBpbnQgKnF1b3RlZCwgaW50IHF1b3RlX2VtcHR5KQoram9pbl9hcHBlbmQoV3JpdGVyT2JqICpzZWxmLCBQeU9iamVjdCAqZmllbGQsIGludCAqcXVvdGVkLCBpbnQgcXVvdGVfZW1wdHkpCiB7CisgICAgdW5zaWduZWQgaW50IGZpZWxkX2tpbmQgPSAtMTsKKyAgICB2b2lkICpmaWVsZF9kYXRhID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGZpZWxkX2xlbiA9IDA7CiAgICAgUHlfc3NpemVfdCByZWNfbGVuOwogCi0gICAgcmVjX2xlbiA9IGpvaW5fYXBwZW5kX2RhdGEoc2VsZiwgZmllbGQsIHF1b3RlX2VtcHR5LCBxdW90ZWQsIDApOworICAgIGlmIChmaWVsZCAhPSBOVUxMKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoZmllbGQpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGZpZWxkX2tpbmQgPSBQeVVuaWNvZGVfS0lORChmaWVsZCk7CisgICAgICAgIGZpZWxkX2RhdGEgPSBQeVVuaWNvZGVfREFUQShmaWVsZCk7CisgICAgICAgIGZpZWxkX2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGZpZWxkKTsKKyAgICB9CisgICAgcmVjX2xlbiA9IGpvaW5fYXBwZW5kX2RhdGEoc2VsZiwgZmllbGRfa2luZCwgZmllbGRfZGF0YSwgZmllbGRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlX2VtcHR5LCBxdW90ZWQsIDApOwogICAgIGlmIChyZWNfbGVuIDwgMCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTEwODksNyArMTEyOCw4IEBACiAgICAgaWYgKCFqb2luX2NoZWNrX3JlY19zaXplKHNlbGYsIHJlY19sZW4pKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHNlbGYtPnJlY19sZW4gPSBqb2luX2FwcGVuZF9kYXRhKHNlbGYsIGZpZWxkLCBxdW90ZV9lbXB0eSwgcXVvdGVkLCAxKTsKKyAgICBzZWxmLT5yZWNfbGVuID0gam9pbl9hcHBlbmRfZGF0YShzZWxmLCBmaWVsZF9raW5kLCBmaWVsZF9kYXRhLCBmaWVsZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVfZW1wdHksIHF1b3RlZCwgMSk7CiAgICAgc2VsZi0+bnVtX2ZpZWxkcysrOwogCiAgICAgcmV0dXJuIDE7CkBAIC0xMDk4LDEwICsxMTM4LDExIEBACiBzdGF0aWMgaW50CiBqb2luX2FwcGVuZF9saW5ldGVybWluYXRvcihXcml0ZXJPYmogKnNlbGYpCiB7Ci0gICAgUHlfc3NpemVfdCB0ZXJtaW5hdG9yX2xlbjsKLSAgICBQeV9VTklDT0RFICp0ZXJtaW5hdG9yOworICAgIFB5X3NzaXplX3QgdGVybWluYXRvcl9sZW4sIGk7CisgICAgdW5zaWduZWQgaW50IHRlcm1fa2luZDsKKyAgICB2b2lkICp0ZXJtX2RhdGE7CiAKLSAgICB0ZXJtaW5hdG9yX2xlbiA9IFB5VW5pY29kZV9HZXRTaXplKHNlbGYtPmRpYWxlY3QtPmxpbmV0ZXJtaW5hdG9yKTsKKyAgICB0ZXJtaW5hdG9yX2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYtPmRpYWxlY3QtPmxpbmV0ZXJtaW5hdG9yKTsKICAgICBpZiAodGVybWluYXRvcl9sZW4gPT0gLTEpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMTA5LDExICsxMTUwLDEwIEBACiAgICAgaWYgKCFqb2luX2NoZWNrX3JlY19zaXplKHNlbGYsIHNlbGYtPnJlY19sZW4gKyB0ZXJtaW5hdG9yX2xlbikpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgdGVybWluYXRvciA9IFB5VW5pY29kZV9Bc1VuaWNvZGUoc2VsZi0+ZGlhbGVjdC0+bGluZXRlcm1pbmF0b3IpOwotICAgIGlmICh0ZXJtaW5hdG9yID09IE5VTEwpCi0gICAgICAgIHJldHVybiAwOwotICAgIG1lbW1vdmUoc2VsZi0+cmVjICsgc2VsZi0+cmVjX2xlbiwgdGVybWluYXRvciwKLSAgICAgICAgc2l6ZW9mKFB5X1VOSUNPREUpKnRlcm1pbmF0b3JfbGVuKTsKKyAgICB0ZXJtX2tpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmLT5kaWFsZWN0LT5saW5ldGVybWluYXRvcik7CisgICAgdGVybV9kYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZi0+ZGlhbGVjdC0+bGluZXRlcm1pbmF0b3IpOworICAgIGZvciAoaSA9IDA7IGkgPCB0ZXJtaW5hdG9yX2xlbjsgaSsrKQorICAgICAgICBzZWxmLT5yZWNbc2VsZi0+cmVjX2xlbiArIGldID0gUHlVbmljb2RlX1JFQUQodGVybV9raW5kLCB0ZXJtX2RhdGEsIGkpOwogICAgIHNlbGYtPnJlY19sZW4gKz0gdGVybWluYXRvcl9sZW47CiAKICAgICByZXR1cm4gMTsKQEAgLTExMzAsOSArMTE3MCwxMCBAQAogewogICAgIERpYWxlY3RPYmogKmRpYWxlY3QgPSBzZWxmLT5kaWFsZWN0OwogICAgIFB5X3NzaXplX3QgbGVuLCBpOworICAgIFB5T2JqZWN0ICpsaW5lLCAqcmVzdWx0OwogCiAgICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKHNlcSkpCi0gICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoZXJyb3Jfb2JqLCAic2VxdWVuY2UgZXhwZWN0ZWQiKTsKKyAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosICJzZXF1ZW5jZSBleHBlY3RlZCIpOwogCiAgICAgbGVuID0gUHlTZXF1ZW5jZV9MZW5ndGgoc2VxKTsKICAgICBpZiAobGVuIDwgMCkKQEAgLTExNjMsMTQgKzEyMDQsMTEgQEAKICAgICAgICAgfQogCiAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soZmllbGQpKSB7Ci0gICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoZmllbGQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3RlZCwgbGVuID09IDEpOworICAgICAgICAgICAgYXBwZW5kX29rID0gam9pbl9hcHBlbmQoc2VsZiwgZmllbGQsICZxdW90ZWQsIGxlbiA9PSAxKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihmaWVsZCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoZmllbGQgPT0gUHlfTm9uZSkgewotICAgICAgICAgICAgYXBwZW5kX29rID0gam9pbl9hcHBlbmQoc2VsZiwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICZxdW90ZWQsIGxlbiA9PSAxKTsKKyAgICAgICAgICAgIGFwcGVuZF9vayA9IGpvaW5fYXBwZW5kKHNlbGYsIE5VTEwsICZxdW90ZWQsIGxlbiA9PSAxKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihmaWVsZCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC0xMTgwLDkgKzEyMTgsNyBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGZpZWxkKTsKICAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGFwcGVuZF9vayA9IGpvaW5fYXBwZW5kKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3RlZCwgbGVuID09IDEpOworICAgICAgICAgICAgYXBwZW5kX29rID0gam9pbl9hcHBlbmQoc2VsZiwgc3RyLCAmcXVvdGVkLCBsZW4gPT0gMSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWFwcGVuZF9vaykKQEAgLTExOTQsOSArMTIzMCwxMyBAQAogICAgIGlmICgham9pbl9hcHBlbmRfbGluZXRlcm1pbmF0b3Ioc2VsZikpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT53cml0ZWxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKHUjKSIsIHNlbGYtPnJlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnJlY19sZW4pOworICAgIGxpbmUgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopIHNlbGYtPnJlYywgc2VsZi0+cmVjX2xlbik7CisgICAgaWYgKGxpbmUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzZWxmLT53cml0ZWxpbmUsIGxpbmUsIE5VTEwpOworICAgIFB5X0RFQ1JFRihsaW5lKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBQeURvY19TVFJWQVIoY3N2X3dyaXRlcm93c19kb2MsCkBAIC0xMzIwLDYgKzEzNjAsNyBAQAogewogICAgIFB5T2JqZWN0ICogb3V0cHV0X2ZpbGUsICogZGlhbGVjdCA9IE5VTEw7CiAgICAgV3JpdGVyT2JqICogc2VsZiA9IFB5T2JqZWN0X0dDX05ldyhXcml0ZXJPYmosICZXcml0ZXJfVHlwZSk7CisgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOwogCiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzMzYsNyArMTM3Nyw3IEBACiAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHNlbGYtPndyaXRlbGluZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob3V0cHV0X2ZpbGUsICJ3cml0ZSIpOworICAgIHNlbGYtPndyaXRlbGluZSA9IF9QeU9iamVjdF9HZXRBdHRySWQob3V0cHV0X2ZpbGUsICZQeUlkX3dyaXRlKTsKICAgICBpZiAoc2VsZi0+d3JpdGVsaW5lID09IE5VTEwgfHwgIVB5Q2FsbGFibGVfQ2hlY2soc2VsZi0+d3JpdGVsaW5lKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IDEgbXVzdCBoYXZlIGEgXCJ3cml0ZVwiIG1ldGhvZCIpOwpAQCAtMTM1OCw3ICsxMzk5LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBjc3ZfbGlzdF9kaWFsZWN0cyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gUHlEaWN0X0tleXMoZGlhbGVjdHMpOworICAgIHJldHVybiBQeURpY3RfS2V5cyhfY3N2c3RhdGVfZ2xvYmFsLT5kaWFsZWN0cyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMzY5LDE1ICsxNDEwLDE3IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICIiLCAxLCAyLCAmbmFtZV9vYmosICZkaWFsZWN0X29iaikpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghSVNfQkFTRVNUUklORyhuYW1lX29iaikpIHsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhuYW1lX29iaikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJkaWFsZWN0IG5hbWUgbXVzdCBiZSBhIHN0cmluZyBvciB1bmljb2RlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAiZGlhbGVjdCBuYW1lIG11c3QgYmUgYSBzdHJpbmciKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobmFtZV9vYmopID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBkaWFsZWN0ID0gX2NhbGxfZGlhbGVjdChkaWFsZWN0X29iaiwga3dhcmdzKTsKICAgICBpZiAoZGlhbGVjdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW0oZGlhbGVjdHMsIG5hbWVfb2JqLCBkaWFsZWN0KSA8IDApIHsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW0oX2NzdnN0YXRlX2dsb2JhbC0+ZGlhbGVjdHMsIG5hbWVfb2JqLCBkaWFsZWN0KSA8IDApIHsKICAgICAgICAgUHlfREVDUkVGKGRpYWxlY3QpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xMzg5LDggKzE0MzIsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGNzdl91bnJlZ2lzdGVyX2RpYWxlY3QoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWVfb2JqKQogewotICAgIGlmIChQeURpY3RfRGVsSXRlbShkaWFsZWN0cywgbmFtZV9vYmopIDwgMCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosICJ1bmtub3duIGRpYWxlY3QiKTsKKyAgICBpZiAoUHlEaWN0X0RlbEl0ZW0oX2NzdnN0YXRlX2dsb2JhbC0+ZGlhbGVjdHMsIG5hbWVfb2JqKSA8IDApCisgICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLCAidW5rbm93biBkaWFsZWN0Iik7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQpAQCAtMTQwNSw3ICsxNDQ4LDcgQEAKIGNzdl9maWVsZF9zaXplX2xpbWl0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpuZXdfbGltaXQgPSBOVUxMOwotICAgIGxvbmcgb2xkX2xpbWl0ID0gZmllbGRfbGltaXQ7CisgICAgbG9uZyBvbGRfbGltaXQgPSBfY3N2c3RhdGVfZ2xvYmFsLT5maWVsZF9saW1pdDsKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImZpZWxkX3NpemVfbGltaXQiLCAwLCAxLCAmbmV3X2xpbWl0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNDE1LDkgKzE0NTgsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJsaW1pdCBtdXN0IGJlIGFuIGludGVnZXIiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGZpZWxkX2xpbWl0ID0gUHlMb25nX0FzTG9uZyhuZXdfbGltaXQpOwotICAgICAgICBpZiAoZmllbGRfbGltaXQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgZmllbGRfbGltaXQgPSBvbGRfbGltaXQ7CisgICAgICAgIF9jc3ZzdGF0ZV9nbG9iYWwtPmZpZWxkX2xpbWl0ID0gUHlMb25nX0FzTG9uZyhuZXdfbGltaXQpOworICAgICAgICBpZiAoX2NzdnN0YXRlX2dsb2JhbC0+ZmllbGRfbGltaXQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgX2NzdnN0YXRlX2dsb2JhbC0+ZmllbGRfbGltaXQgPSBvbGRfbGltaXQ7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KQEAgLTE1NTYsMTcgKzE1OTksMTYgQEAKICAgICB7IE5VTEwsIE5VTEwgfQogfTsKIAotCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF9jc3Ztb2R1bGUgPSB7CiAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAogICAgICJfY3N2IiwKICAgICBjc3ZfbW9kdWxlX2RvYywKLSAgICAtMSwKKyAgICBzaXplb2YoX2NzdnN0YXRlKSwKICAgICBjc3ZfbWV0aG9kcywKICAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMCisgICAgX2Nzdl90cmF2ZXJzZSwKKyAgICBfY3N2X2NsZWFyLAorICAgIF9jc3ZfZnJlZQogfTsKIAogUHlNT0RJTklUX0ZVTkMKQEAgLTE1OTQsMTEgKzE2MzYsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTU9EVUxFX1ZFUlNJT04pID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIC8qIFNldCB0aGUgZmllbGQgbGltaXQgKi8KKyAgICBfY3N2c3RhdGUobW9kdWxlKS0+ZmllbGRfbGltaXQgPSAxMjggKiAxMDI0OworICAgIC8qIERvIEkgc3RpbGwgbmVlZCB0byBhZGQgdGhpcyB2YXIgdG8gdGhlIE1vZHVsZSBEaWN0PyAqLworCiAgICAgLyogQWRkIF9kaWFsZWN0cyBkaWN0aW9uYXJ5ICovCi0gICAgZGlhbGVjdHMgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKGRpYWxlY3RzID09IE5VTEwpCisgICAgX2NzdnN0YXRlKG1vZHVsZSktPmRpYWxlY3RzID0gUHlEaWN0X05ldygpOworICAgIGlmIChfY3N2c3RhdGUobW9kdWxlKS0+ZGlhbGVjdHMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtb2R1bGUsICJfZGlhbGVjdHMiLCBkaWFsZWN0cykpCisgICAgUHlfSU5DUkVGKF9jc3ZzdGF0ZShtb2R1bGUpLT5kaWFsZWN0cyk7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtb2R1bGUsICJfZGlhbGVjdHMiLCBfY3N2c3RhdGUobW9kdWxlKS0+ZGlhbGVjdHMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIEFkZCBxdW90ZSBzdHlsZXMgaW50byBkaWN0aW9uYXJ5ICovCkBAIC0xNjE0LDkgKzE2NjEsMTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBBZGQgdGhlIENTViBleGNlcHRpb24gb2JqZWN0IHRvIHRoZSBtb2R1bGUuICovCi0gICAgZXJyb3Jfb2JqID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJfY3N2LkVycm9yIiwgTlVMTCwgTlVMTCk7Ci0gICAgaWYgKGVycm9yX29iaiA9PSBOVUxMKQorICAgIF9jc3ZzdGF0ZShtb2R1bGUpLT5lcnJvcl9vYmogPSBQeUVycl9OZXdFeGNlcHRpb24oIl9jc3YuRXJyb3IiLCBOVUxMLCBOVUxMKTsKKyAgICBpZiAoX2NzdnN0YXRlKG1vZHVsZSktPmVycm9yX29iaiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobW9kdWxlLCAiRXJyb3IiLCBlcnJvcl9vYmopOworICAgIFB5X0lOQ1JFRihfY3N2c3RhdGUobW9kdWxlKS0+ZXJyb3Jfb2JqKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobW9kdWxlLCAiRXJyb3IiLCBfY3N2c3RhdGUobW9kdWxlKS0+ZXJyb3Jfb2JqKTsKICAgICByZXR1cm4gbW9kdWxlOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYyBiL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMKaW5kZXggZTRlMjM3ZS4uYzE5NTY5NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jCkBAIC0xMTQyLDYgKzExNDIsOCBAQAogV0NoYXJBcnJheV9zZXRfdmFsdWUoQ0RhdGFPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKICAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IDA7CisgICAgUHlfVU5JQ09ERSAqd3N0cjsKKyAgICBQeV9zc2l6ZV90IGxlbjsKIAogICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCkBAIC0xMTU1LDcgKzExNTcsMTEgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0gZWxzZQogICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIGlmICgodW5zaWduZWQpUHlVbmljb2RlX0dFVF9TSVpFKHZhbHVlKSA+IHNlbGYtPmJfc2l6ZS9zaXplb2Yod2NoYXJfdCkpIHsKKworICAgIHdzdHIgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh2YWx1ZSwgJmxlbik7CisgICAgaWYgKHdzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICgodW5zaWduZWQpbGVuID4gc2VsZi0+Yl9zaXplL3NpemVvZih3Y2hhcl90KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgdG9vIGxvbmciKTsKICAgICAgICAgcmVzdWx0ID0gLTE7CkBAIC0xODQzLDExICsxODQ5LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2socHJvdG8pKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp2ID0gX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nKHByb3RvLCBOVUxMKTsKLSAgICAgICAgaWYgKCF2KQorICAgICAgICBwcm90b19zdHIgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShwcm90bywgJnByb3RvX2xlbik7CisgICAgICAgIGlmICghcHJvdG9fc3RyKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgcHJvdG9fc3RyID0gUHlCeXRlc19BU19TVFJJTkcodik7Ci0gICAgICAgIHByb3RvX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUodik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICJjbGFzcyBtdXN0IGRlZmluZSBhICdfdHlwZV8nIHN0cmluZyBhdHRyaWJ1dGUiKTsKQEAgLTM2OTcsOCArMzcwMSwxMCBAQAogICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh0dXAsIGluZGV4LCB2KTsKICAgICAgICAgICAgIGluZGV4Kys7CiAgICAgICAgIH0gZWxzZSBpZiAoYml0ICYgb3V0bWFzaykgeworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19jdHlwZXNfZnJvbV9vdXRwYXJhbV9fKTsKKwogICAgICAgICAgICAgdiA9IFB5VHVwbGVfR0VUX0lURU0oY2FsbGFyZ3MsIGkpOwotICAgICAgICAgICAgdiA9IFB5T2JqZWN0X0NhbGxNZXRob2QodiwgIl9fY3R5cGVzX2Zyb21fb3V0cGFyYW1fXyIsIE5VTEwpOworICAgICAgICAgICAgdiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodiwgJlB5SWRfX19jdHlwZXNfZnJvbV9vdXRwYXJhbV9fLCBOVUxMKTsKICAgICAgICAgICAgIGlmICh2ID09IE5VTEwgfHwgbnVtcmV0dmFscyA9PSAxKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGNhbGxhcmdzKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdjsKQEAgLTQyNjUsNyArNDI3MSw3IEBACiAgICAgICAgICAgICB3Y2hhcl90ICpkZXN0OwogCiAgICAgICAgICAgICBpZiAoc2xpY2VsZW4gPD0gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIDApOworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfTmV3KDAsIDApOwogICAgICAgICAgICAgaWYgKHN0ZXAgPT0gMSkgewogICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHB0ciArIHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWNlbGVuKTsKQEAgLTQ2MTUsMzggKzQ2MjEsMjAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBTaW1wbGVfcmVwcihDRGF0YU9iamVjdCAqc2VsZikKIHsKLSAgICBQeU9iamVjdCAqdmFsLCAqbmFtZSwgKmFyZ3MsICpyZXN1bHQ7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpmb3JtYXQ7CisgICAgUHlPYmplY3QgKnZhbCwgKnJlc3VsdDsKIAogICAgIGlmIChQeV9UWVBFKHNlbGYpLT50cF9iYXNlICE9ICZTaW1wbGVfVHlwZSkgewogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjwlcyBvYmplY3QgYXQgJXA+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSwgc2VsZik7CiAgICAgfQogCi0gICAgaWYgKGZvcm1hdCA9PSBOVUxMKSB7Ci0gICAgICAgIGZvcm1hdCA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCIlcyglcikiKTsKLSAgICAgICAgaWYgKGZvcm1hdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCiAgICAgdmFsID0gU2ltcGxlX2dldF92YWx1ZShzZWxmKTsKICAgICBpZiAodmFsID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKFB5X1RZUEUoc2VsZiktPnRwX25hbWUpOwotICAgIGlmIChuYW1lID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHZhbCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMiwgbmFtZSwgdmFsKTsKLSAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKCVSKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSwgdmFsKTsKICAgICBQeV9ERUNSRUYodmFsKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gb3JtYXQoZm9ybWF0LCBhcmdzKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDk1OCw3ICs0OTQ2LDcgQEAKICAgICAgICAgICAgIHdjaGFyX3QgKmRlc3Q7CiAKICAgICAgICAgICAgIGlmIChsZW4gPD0gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIDApOworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfTmV3KDAsIDApOwogICAgICAgICAgICAgaWYgKHN0ZXAgPT0gMSkgewogICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHB0ciArIHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYyBiL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCmluZGV4IDBkNDU3OGMuLmQ4ZTFmMzAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCkBAIC02NTgsMTMgKzY1OCw2IEBACiAKICNpZmRlZiBDVFlQRVNfVU5JQ09ERQogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgewotI2lmIFB5X1VOSUNPREVfU0laRSA9PSBTSVpFT0ZfV0NIQVJfVAotICAgICAgICBwYS0+ZmZpX3R5cGUgPSAmZmZpX3R5cGVfcG9pbnRlcjsKLSAgICAgICAgcGEtPnZhbHVlLnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopOwotICAgICAgICBQeV9JTkNSRUYob2JqKTsKLSAgICAgICAgcGEtPmtlZXAgPSBvYmo7Ci0gICAgICAgIHJldHVybiAwOwotI2Vsc2UKICAgICAgICAgcGEtPmZmaV90eXBlID0gJmZmaV90eXBlX3BvaW50ZXI7CiAgICAgICAgIHBhLT52YWx1ZS5wID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcob2JqLCBOVUxMKTsKICAgICAgICAgaWYgKHBhLT52YWx1ZS5wID09IE5VTEwpCkBAIC02NzUsNyArNjY4LDYgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKLSNlbmRpZgogICAgIH0KICNlbmRpZgogCkBAIC05NTIsOSArOTQ0LDkgQEAKICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgUHlVbmljb2RlX0FwcGVuZEFuZERlbCgmcywgUHlVbmljb2RlX0Zyb21TdHJpbmcoIj8/PyIpKTsKLSAgICAgICAgaWYgKHMgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQorICAgIGlmIChzID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgUHlFcnJfU2V0T2JqZWN0KGV4Y19jbGFzcywgcyk7CiBlcnJvcjoKICAgICBQeV9YREVDUkVGKHRwKTsKQEAgLTE2OTUsMTMgKzE2ODcsMTUgQEAKICAgICBQeU9iamVjdCAqc3RhdGU7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqdG1wOworICAgIF9QeV9JREVOVElGSUVSKF9fbmV3X18pOworICAgIF9QeV9JREVOVElGSUVSKF9fc2V0c3RhdGVfXyk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PIiwgJnR5cCwgJnN0YXRlKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh0eXAsICJfX25ld19fIiwgIk8iLCB0eXApOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodHlwLCAmUHlJZF9fX25ld19fLCAiTyIsIHR5cCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHJlc3VsdCwgIl9fc2V0c3RhdGVfXyIsICJPIiwgc3RhdGUpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmVzdWx0LCAmUHlJZF9fX3NldHN0YXRlX18sICJPIiwgc3RhdGUpOwogICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMgYi9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMKaW5kZXggOWRhODkwZC4uZjZmOGU0MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYwpAQCAtOSw3ICs5LDYgQEAKIAogI2RlZmluZSBDVFlQRVNfQ0ZJRUxEX0NBUFNVTEVfTkFNRV9QWU1FTSAiX2N0eXBlcy9jZmllbGQuYyBweW1lbSIKIAotI2lmIFB5X1VOSUNPREVfU0laRSAhPSBTSVpFT0ZfV0NIQVJfVAogc3RhdGljIHZvaWQgcHltZW1fZGVzdHJ1Y3RvcihQeU9iamVjdCAqcHRyKQogewogICAgIHZvaWQgKnAgPSBQeUNhcHN1bGVfR2V0UG9pbnRlcihwdHIsIENUWVBFU19DRklFTERfQ0FQU1VMRV9OQU1FX1BZTUVNKTsKQEAgLTE3LDcgKzE2LDYgQEAKICAgICAgICAgUHlNZW1fRnJlZShwKTsKICAgICB9CiB9Ci0jZW5kaWYKIAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtNTIsNyArNTAsNyBAQAogewogICAgIENGaWVsZE9iamVjdCAqc2VsZjsKICAgICBQeU9iamVjdCAqcHJvdG87Ci0gICAgUHlfc3NpemVfdCBzaXplLCBhbGlnbiwgbGVuZ3RoOworICAgIFB5X3NzaXplX3Qgc2l6ZSwgYWxpZ247CiAgICAgU0VURlVOQyBzZXRmdW5jID0gTlVMTDsKICAgICBHRVRGVU5DIGdldGZ1bmMgPSBOVUxMOwogICAgIFN0Z0RpY3RPYmplY3QgKmRpY3Q7CkBAIC0xMDYsNyArMTA0LDYgQEAKICAgICB9CiAKICAgICBzaXplID0gZGljdC0+c2l6ZTsKLSAgICBsZW5ndGggPSBkaWN0LT5sZW5ndGg7CiAgICAgcHJvdG8gPSBkZXNjOwogCiAgICAgLyogIEZpZWxkIGRlc2NyaXB0b3JzIGZvciAnY19jaGFyICogbicgYXJlIGJlIHNjcGVjaWFsIGNhc2VkIHRvCkBAIC0xMjE0LDM3ICsxMjExLDMwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogVV9nZXQodm9pZCAqcHRyLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICBQeV9VTklDT0RFICpwOworICAgIHdjaGFyX3QgKnA7CiAKICAgICBzaXplIC89IHNpemVvZih3Y2hhcl90KTsgLyogd2UgY291bnQgY2hhcmFjdGVyIHVuaXRzIGhlcmUsIG5vdCBieXRlcyAqLwogCi0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcigod2NoYXJfdCAqKXB0ciwgc2l6ZSk7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIC8qIFdlIG5lZWQgJ3Jlc3VsdCcgdG8gYmUgYWJsZSB0byBjb3VudCB0aGUgY2hhcmFjdGVycyB3aXRoIHdjc2xlbiwKICAgICAgICBzaW5jZSBwdHIgbWF5IG5vdCBiZSBOVUwgdGVybWluYXRlZC4gIElmIHRoZSBsZW5ndGggaXMgc21hbGxlciAoaWYKICAgICAgICBpdCB3YXMgYWN0dWFsbHkgTlVMIHRlcm1pbmF0ZWQsIHdlIGNvbnN0cnVjdCBhIG5ldyBvbmUgYW5kIHRocm93CiAgICAgICAgYXdheSB0aGUgcmVzdWx0LgogICAgICovCiAgICAgLyogY2hvcCBvZmYgYXQgdGhlIGZpcnN0IE5VTCBjaGFyYWN0ZXIsIGlmIGFueS4gKi8KLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KTsKLSAgICBmb3IgKGxlbiA9IDA7IGxlbiA8IHNpemU7ICsrbGVuKQorICAgIHAgPSAod2NoYXJfdCopcHRyOworICAgIGZvciAobGVuID0gMDsgbGVuIDwgc2l6ZTsgKytsZW4pIHsKICAgICAgICAgaWYgKCFwW2xlbl0pCiAgICAgICAgICAgICBicmVhazsKLQotICAgIGlmIChsZW4gPCBzaXplKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpvYiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoKHdjaGFyX3QgKilwdHIsIGxlbik7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICByZXR1cm4gb2I7CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7CisKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcigod2NoYXJfdCAqKXB0ciwgbGVuKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIFVfc2V0KHZvaWQgKnB0ciwgUHlPYmplY3QgKnZhbHVlLCBQeV9zc2l6ZV90IGxlbmd0aCkKIHsKKyAgICBQeV9VTklDT0RFICp3c3RyOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKIAogICAgIC8qIEl0J3MgZWFzaWVyIHRvIGNhbGN1bGF0ZSBpbiBjaGFyYWN0ZXJzIHRoYW4gaW4gYnl0ZXMgKi8KQEAgLTEyNTcsNyArMTI0NywxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UKICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHZhbHVlKTsKKworICAgIHdzdHIgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh2YWx1ZSwgJnNpemUpOworICAgIGlmICh3c3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzaXplID4gbGVuZ3RoKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgInN0cmluZyB0b28gbG9uZyAoJXpkLCBtYXhpbXVtIGxlbmd0aCAlemQpIiwKQEAgLTEzNzcsNiArMTM3MCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogWl9zZXQodm9pZCAqcHRyLCBQeU9iamVjdCAqdmFsdWUsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKKyAgICBQeU9iamVjdCAqa2VlcDsKKyAgICB3Y2hhcl90ICpidWZmZXI7CisKICAgICBpZiAodmFsdWUgPT0gUHlfTm9uZSkgewogICAgICAgICAqKHdjaGFyX3QgKiopcHRyID0gTlVMTDsKICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKQEAgLTEzOTYsMzcgKzEzOTIsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICJ1bmljb2RlIHN0cmluZyBvciBpbnRlZ2VyIGFkZHJlc3MgZXhwZWN0ZWQgaW5zdGVhZCBvZiAlcyBpbnN0YW5jZSIsCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0gZWxzZQotICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwotI2lmIFB5X1VOSUNPREVfU0laRSA9PSBTSVpFT0ZfV0NIQVJfVAotICAgIC8qIFdlIGNhbiBjb3B5IGRpcmVjdGx5LiAgSG0sIGFyZSB1bmljb2RlIG9iamVjdHMgYWx3YXlzIE5VTAotICAgICAgIHRlcm1pbmF0ZWQgaW4gUHl0aG9uLCBpbnRlcm5hbGx5PwotICAgICAqLwotICAgICood2NoYXJfdCAqKilwdHIgPSAod2NoYXJfdCAqKSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOwotI2Vsc2UKLSAgICB7Ci0gICAgICAgIC8qIFdlIG11c3QgY3JlYXRlIGEgd2NoYXJfdCogYnVmZmVyIGZyb20gdGhlIHVuaWNvZGUgb2JqZWN0LAotICAgICAgICAgICBhbmQga2VlcCBpdCBhbGl2ZSAqLwotICAgICAgICBQeU9iamVjdCAqa2VlcDsKLSAgICAgICAgd2NoYXJfdCAqYnVmZmVyOwotCi0gICAgICAgIGJ1ZmZlciA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHZhbHVlLCBOVUxMKTsKLSAgICAgICAgaWYgKCFidWZmZXIpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBrZWVwID0gUHlDYXBzdWxlX05ldyhidWZmZXIsIENUWVBFU19DRklFTERfQ0FQU1VMRV9OQU1FX1BZTUVNLCBweW1lbV9kZXN0cnVjdG9yKTsKLSAgICAgICAgaWYgKCFrZWVwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgUHlNZW1fRnJlZShidWZmZXIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgKih3Y2hhcl90ICoqKXB0ciA9ICh3Y2hhcl90ICopYnVmZmVyOwotICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICByZXR1cm4ga2VlcDsKICAgICB9Ci0jZW5kaWYKKworICAgIC8qIFdlIG11c3QgY3JlYXRlIGEgd2NoYXJfdCogYnVmZmVyIGZyb20gdGhlIHVuaWNvZGUgb2JqZWN0LAorICAgICAgIGFuZCBrZWVwIGl0IGFsaXZlICovCisgICAgYnVmZmVyID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcodmFsdWUsIE5VTEwpOworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBrZWVwID0gUHlDYXBzdWxlX05ldyhidWZmZXIsIENUWVBFU19DRklFTERfQ0FQU1VMRV9OQU1FX1BZTUVNLCBweW1lbV9kZXN0cnVjdG9yKTsKKyAgICBpZiAoIWtlZXApIHsKKyAgICAgICAgUHlNZW1fRnJlZShidWZmZXIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgKih3Y2hhcl90ICoqKXB0ciA9IGJ1ZmZlcjsKKyAgICByZXR1cm4ga2VlcDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE0NzEsMTMgKzE0NTAsMTYgQEAKIAogICAgIC8qIGNyZWF0ZSBhIEJTVFIgZnJvbSB2YWx1ZSAqLwogICAgIGlmICh2YWx1ZSkgewotICAgICAgICBQeV9zc2l6ZV90IHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUodmFsdWUpOworICAgICAgICB3Y2hhcl90KiB3dmFsdWU7CisgICAgICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICAgICAgd3ZhbHVlID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUodmFsdWUsICZzaXplKTsKKyAgICAgICAgaWYgKHd2YWx1ZSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICgodW5zaWduZWQpIHNpemUgIT0gc2l6ZSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJTdHJpbmcgdG9vIGxvbmcgZm9yIEJTVFIiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGJzdHIgPSBTeXNBbGxvY1N0cmluZ0xlbihQeVVuaWNvZGVfQVNfVU5JQ09ERSh2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQpc2l6ZSk7CisgICAgICAgIGJzdHIgPSBTeXNBbGxvY1N0cmluZ0xlbih3dmFsdWUsICh1bnNpZ25lZClzaXplKTsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICB9IGVsc2UKICAgICAgICAgYnN0ciA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpLmRpZmYgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpLmRpZmYKaW5kZXggN2FmYTBlZC4uMzU3ZDBlZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS5kaWZmCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkuZGlmZgpAQCAtMSw3NCArMSwxNCBAQAotZGlmZiAtdXJOIGxpYmZmaS5vcmlnL2NvbmZpZ3VyZSBsaWJmZmkvY29uZmlndXJlCi0tLS0gbGliZmZpLm9yaWcvY29uZmlndXJlCTIwMTAtMDMtMTkgMTg6Mjk6NTQuNTg4NDk5ODYyICswMTAwCi0rKysgbGliZmZpL2NvbmZpZ3VyZQkyMDEwLTAzLTE5IDE4OjMyOjA5LjExMzQ5OTQ3OSArMDEwMAotQEAgLTExMjI4LDYgKzExMjI4LDkgQEAKLSAgIGk/ODYtKi1zb2xhcmlzMi4xWzAtOV0qKQotIAlUQVJHRVQ9WDg2XzY0OyBUQVJHRVRESVI9eDg2Ci0gCTs7Ci0rICBpKjg2LSotbnRvLXFueCopCi0rICAgICAgICBUQVJHRVQ9WDg2OyBUQVJHRVRESVI9eDg2Ci0rICAgICAgICA7OwotICAgaT84Ni0qLSopCi0gCVRBUkdFVD1YODY7IFRBUkdFVERJUj14ODYKLSAJOzsKLUBAIC0xMTI0NSwxMiArMTEyNDgsMTIgQEAKLSAJOzsKLSAKLSAgIG1pcHMtc2dpLWlyaXg1LiogfCBtaXBzLXNnaS1pcml4Ni4qKQotLQlUQVJHRVQ9TUlQUzsgVEFSR0VURElSPW1pcHMKLSsJVEFSR0VUPU1JUFNfSVJJWDsgVEFSR0VURElSPW1pcHMKLSAJOzsKLSAgIG1pcHMqLSotbGludXgqKQotIAkjIFN1cHBvcnQgMTI4LWJpdCBsb25nIGRvdWJsZSBmb3IgTmV3QUJJLgotIAlIQVZFX0xPTkdfRE9VQkxFPSdkZWZpbmVkKF9fbWlwczY0KScKLS0JVEFSR0VUPU1JUFM7IFRBUkdFVERJUj1taXBzCi0rCVRBUkdFVD1NSVBTX0lSSVg7IFRBUkdFVERJUj1taXBzCi0gCTs7Ci0gCi0gICBwb3dlcnBjKi0qLWxpbnV4KiB8IHBvd2VycGMtKi1zeXN2KikKLUBAIC0xMTMwNyw3ICsxMTMxMCw3IEBACi0gICBhc19mbl9lcnJvciAiXCJsaWJmZmkgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byAkaG9zdC5cIiIgIiRMSU5FTk8iIDUKLSBmaQotIAotLSBpZiB0ZXN0IHgkVEFSR0VUID0geE1JUFM7IHRoZW4KLSsgaWYgZXhwciB4JFRBUkdFVCA6ICd4TUlQUycgPiAvZGV2L251bGw7IHRoZW4KLSAgIE1JUFNfVFJVRT0KLSAgIE1JUFNfRkFMU0U9JyMnCi0gZWxzZQotQEAgLTEyNDIyLDYgKzEyNDI1LDEyIEBACi0gYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIGluY2x1ZGUvTWFrZWZpbGUgaW5jbHVkZS9mZmkuaCBNYWtlZmlsZSB0ZXN0c3VpdGUvTWFrZWZpbGUgbWFuL01ha2VmaWxlIGxpYmZmaS5wYyIKLSAKLSAKLSthY19jb25maWdfbGlua3M9IiRhY19jb25maWdfbGlua3MgaW5jbHVkZS9mZmlfY29tbW9uLmg6aW5jbHVkZS9mZmlfY29tbW9uLmgiCi0rCi0rCi0rYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIGZmaWNvbmZpZy5weSIKLSsKLSsKLSBjYXQgPmNvbmZjYWNoZSA8PFxfQUNFT0YKLSAjIFRoaXMgZmlsZSBpcyBhIHNoZWxsIHNjcmlwdCB0aGF0IGNhY2hlcyB0aGUgcmVzdWx0cyBvZiBjb25maWd1cmUKLSAjIHRlc3RzIHJ1biBvbiB0aGlzIHN5c3RlbSBzbyB0aGV5IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBjb25maWd1cmUKLUBAIC0xMzUyMSw2ICsxMzUzMCw4IEBACi0gICAgICJ0ZXN0c3VpdGUvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgdGVzdHN1aXRlL01ha2VmaWxlIiA7OwotICAgICAibWFuL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIG1hbi9NYWtlZmlsZSIgOzsKLSAgICAgImxpYmZmaS5wYyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBsaWJmZmkucGMiIDs7Ci0rICAgICJpbmNsdWRlL2ZmaV9jb21tb24uaCIpIENPTkZJR19MSU5LUz0iJENPTkZJR19MSU5LUyBpbmNsdWRlL2ZmaV9jb21tb24uaDppbmNsdWRlL2ZmaV9jb21tb24uaCIgOzsKLSsgICAgImZmaWNvbmZpZy5weSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBmZmljb25maWcucHkiIDs7Ci0gCi0gICAqKSBhc19mbl9lcnJvciAiaW52YWxpZCBhcmd1bWVudDogXGAkYWNfY29uZmlnX3RhcmdldCciICIkTElORU5PIiA1OzsKLSAgIGVzYWMKLWRpZmYgLXVyTiBsaWJmZmkub3JpZy9jb25maWd1cmUuYWMgbGliZmZpL2NvbmZpZ3VyZS5hYwotLS0tIGxpYmZmaS5vcmlnL2NvbmZpZ3VyZS5hYwkyMDEwLTAzLTE5IDE4OjI3OjQ0Ljk4ODQ5ODU4NSArMDEwMAotKysrIGxpYmZmaS9jb25maWd1cmUuYWMJMjAxMC0wMy0xOSAxODozMToyOS4yNTI1MDUxNzggKzAxMDAKKy0tLSBsaWJmZmkub3JpZy9jb25maWd1cmUuYWMJMjAxMi0wNC0xMiAwNToxMDo1MS4wMDAwMDAwMDAgKzAyMDAKKysrKyBsaWJmZmkvY29uZmlndXJlLmFjCTIwMTItMDYtMjYgMTU6NDI6NDIuNDc3NDk4OTM4ICswMjAwCiBAQCAtMSw0ICsxLDcgQEAKICBkbmwgUHJvY2VzcyB0aGlzIHdpdGggYXV0b2NvbmYgdG8gY3JlYXRlIGNvbmZpZ3VyZQogKyMKICsjIGZpbGUgZnJvbSBsaWJmZmkgLSBzbGlnaHRseSBwYXRjaGVkIGZvciBjdHlwZXMKICsjCiAgCi0gQUNfUFJFUkVRKDIuNjMpCisgQUNfUFJFUkVRKDIuNjgpCiAgCi1AQCAtOTEsNiArOTQsOSBAQAorQEAgLTExNCw2ICsxMTcsOSBAQAogICAgaT84Ni0qLXNvbGFyaXMyLjFbWzAtOV1dKikKICAJVEFSR0VUPVg4Nl82NDsgVEFSR0VURElSPXg4NgogIAk7OwpAQCAtNzYsMjQgKzE2LDI0IEBACiArICAgICAgICBUQVJHRVQ9WDg2OyBUQVJHRVRESVI9eDg2CiArICAgICAgICA7OwogICAgaT84Ni0qLSopCi0gCVRBUkdFVD1YODY7IFRBUkdFVERJUj14ODYKKyAJVEFSR0VUPVg4Nl82NDsgVEFSR0VURElSPXg4NgogIAk7OwotQEAgLTEwOCwxMiArMTE0LDEyIEBACitAQCAtMTMxLDEyICsxMzcsMTIgQEAKICAJOzsKICAKLSAgIG1pcHMtc2dpLWlyaXg1LiogfCBtaXBzLXNnaS1pcml4Ni4qKQorICAgbWlwcy1zZ2ktaXJpeDUuKiB8IG1pcHMtc2dpLWlyaXg2LiogfCBtaXBzKi0qLXJ0ZW1zKikKIC0JVEFSR0VUPU1JUFM7IFRBUkdFVERJUj1taXBzCiArCVRBUkdFVD1NSVBTX0lSSVg7IFRBUkdFVERJUj1taXBzCiAgCTs7Ci0gICBtaXBzKi0qLWxpbnV4KikKKyAgIG1pcHMqLSotbGludXgqIHwgbWlwcyotKi1vcGVuYnNkKikKICAJIyBTdXBwb3J0IDEyOC1iaXQgbG9uZyBkb3VibGUgZm9yIE5ld0FCSS4KICAJSEFWRV9MT05HX0RPVUJMRT0nZGVmaW5lZChfX21pcHM2NCknCiAtCVRBUkdFVD1NSVBTOyBUQVJHRVRESVI9bWlwcwogKwlUQVJHRVQ9TUlQU19JUklYOyBUQVJHRVRESVI9bWlwcwogIAk7OwogIAotICAgcG93ZXJwYyotKi1saW51eCogfCBwb3dlcnBjLSotc3lzdiopCi1AQCAtMTcwLDcgKzE3Niw3IEBACisgICBtb3hpZS0qLSopCitAQCAtMjEyLDcgKzIxOCw3IEBACiAgICBBQ19NU0dfRVJST1IoWyJsaWJmZmkgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byAkaG9zdC4iXSkKICBmaQogIApAQCAtMTAyLDcgKzQyLDcgQEAKICBBTV9DT05ESVRJT05BTChTUEFSQywgdGVzdCB4JFRBUkdFVCA9IHhTUEFSQykKICBBTV9DT05ESVRJT05BTChYODYsIHRlc3QgeCRUQVJHRVQgPSB4WDg2KQogIEFNX0NPTkRJVElPTkFMKFg4Nl9GUkVFQlNELCB0ZXN0IHgkVEFSR0VUID0geFg4Nl9GUkVFQlNEKQotQEAgLTQwMSw0ICs0MDcsOCBAQAorQEAgLTQ5OSw0ICs1MDUsOCBAQAogIAogIEFDX0NPTkZJR19GSUxFUyhpbmNsdWRlL01ha2VmaWxlIGluY2x1ZGUvZmZpLmggTWFrZWZpbGUgdGVzdHN1aXRlL01ha2VmaWxlIG1hbi9NYWtlZmlsZSBsaWJmZmkucGMpCiAgCkBAIC0xMTEsMyArNTEsNzAgQEAKICtBQ19DT05GSUdfRklMRVMoZmZpY29uZmlnLnB5KQogKwogIEFDX09VVFBVVAorLS0tIGxpYmZmaS0zLjAuMTEvZmZpY29uZmlnLnB5LmluCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKysgbGliZmZpL2ZmaWNvbmZpZy5weS5pbgkyMDEyLTAzLTE1IDAxOjA0OjI3LjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSwzNSBAQAorK2ZmaV9zb3VyY2VzID0gIiIiCisrc3JjL3ByZXBfY2lmLmMKKytzcmMvY2xvc3VyZXMuYworK3NyYy9kbG1hbGxvYy5jCisrIiIiLnNwbGl0KCkKKysKKytmZmlfcGxhdGZvcm1zID0geworKyAgICAnTUlQU19JUklYJzogWydzcmMvbWlwcy9mZmkuYycsICdzcmMvbWlwcy9vMzIuUycsICdzcmMvbWlwcy9uMzIuUyddLAorKyAgICAnTUlQU19MSU5VWCc6IFsnc3JjL21pcHMvZmZpLmMnLCAnc3JjL21pcHMvbzMyLlMnXSwKKysgICAgJ1g4Nic6IFsnc3JjL3g4Ni9mZmkuYycsICdzcmMveDg2L3N5c3YuUyddLAorKyAgICAnWDg2X0ZSRUVCU0QnOiBbJ3NyYy94ODYvZmZpLmMnLCAnc3JjL3g4Ni9mcmVlYnNkLlMnXSwKKysgICAgJ1g4Nl9XSU4zMic6IFsnc3JjL3g4Ni9mZmkuYycsICdzcmMveDg2L3dpbjMyLlMnXSwKKysgICAgJ1NQQVJDJzogWydzcmMvc3BhcmMvZmZpLmMnLCAnc3JjL3NwYXJjL3Y4LlMnLCAnc3JjL3NwYXJjL3Y5LlMnXSwKKysgICAgJ0FMUEhBJzogWydzcmMvYWxwaGEvZmZpLmMnLCAnc3JjL2FscGhhL29zZi5TJ10sCisrICAgICdJQTY0JzogWydzcmMvaWE2NC9mZmkuYycsICdzcmMvaWE2NC91bml4LlMnXSwKKysgICAgJ00zMlInOiBbJ3NyYy9tMzJyL3N5c3YuUycsICdzcmMvbTMyci9mZmkuYyddLAorKyAgICAnTTY4Syc6IFsnc3JjL202OGsvZmZpLmMnLCAnc3JjL202OGsvc3lzdi5TJ10sCisrICAgICdQT1dFUlBDJzogWydzcmMvcG93ZXJwYy9mZmkuYycsICdzcmMvcG93ZXJwYy9zeXN2LlMnLCAnc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUycsICdzcmMvcG93ZXJwYy9saW51eDY0LlMnLCAnc3JjL3Bvd2VycGMvbGludXg2NF9jbG9zdXJlLlMnXSwKKysgICAgJ1BPV0VSUENfQUlYJzogWydzcmMvcG93ZXJwYy9mZmkuYycsICdzcmMvcG93ZXJwYy9haXguUycsICdzcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TJ10sCisrICAgICdQT1dFUlBDX0ZSRUVCU0QnOiBbJ3NyYy9wb3dlcnBjL2ZmaS5jJywgJ3NyYy9wb3dlcnBjL3N5c3YuUycsICdzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TJ10sCisrICAgICdBUk0nOiBbJ3NyYy9hcm0vc3lzdi5TJywgJ3NyYy9hcm0vZmZpLmMnXSwKKysgICAgJ0xJQkZGSV9DUklTJzogWydzcmMvY3Jpcy9zeXN2LlMnLCAnc3JjL2NyaXMvZmZpLmMnXSwKKysgICAgJ0ZSVic6IFsnc3JjL2Zydi9lYWJpLlMnLCAnc3JjL2Zydi9mZmkuYyddLAorKyAgICAnUzM5MCc6IFsnc3JjL3MzOTAvc3lzdi5TJywgJ3NyYy9zMzkwL2ZmaS5jJ10sCisrICAgICdYODZfNjQnOiBbJ3NyYy94ODYvZmZpNjQuYycsICdzcmMveDg2L3VuaXg2NC5TJywgJ3NyYy94ODYvZmZpLmMnLCAnc3JjL3g4Ni9zeXN2LlMnXSwKKysgICAgJ1NIJzogWydzcmMvc2gvc3lzdi5TJywgJ3NyYy9zaC9mZmkuYyddLAorKyAgICAnU0g2NCc6IFsnc3JjL3NoNjQvc3lzdi5TJywgJ3NyYy9zaDY0L2ZmaS5jJ10sCisrICAgICdQQSc6IFsnc3JjL3BhL2xpbnV4LlMnLCAnc3JjL3BhL2ZmaS5jJ10sCisrICAgICdQQV9MSU5VWCc6IFsnc3JjL3BhL2xpbnV4LlMnLCAnc3JjL3BhL2ZmaS5jJ10sCisrICAgICdQQV9IUFVYJzogWydzcmMvcGEvaHB1eDMyLlMnLCAnc3JjL3BhL2ZmaS5jJ10sCisrfQorKworK2ZmaV9zb3VyY2VzICs9IGZmaV9wbGF0Zm9ybXNbJ0BUQVJHRVRAJ10KKysKKytmZmlfY2ZsYWdzID0gJ0BDRkxBR1NAJworZGlmZiAtdXJOIGxpYmZmaS0zLjAuMTEvc3JjL2RsbWFsbG9jLmMgbGliZmZpL3NyYy9kbG1hbGxvYy5jCistLS0gbGliZmZpLTMuMC4xMS9zcmMvZGxtYWxsb2MuYwkyMDEyLTA0LTEyIDA0OjQ2OjA2LjAwMDAwMDAwMCArMDIwMAorKysrIGxpYmZmaS9zcmMvZGxtYWxsb2MuYwkyMDEyLTA2LTI2IDE1OjE1OjU4Ljk0OTU0NzQ2MSArMDIwMAorQEAgLTQ1Nyw2ICs0NTcsMTEgQEAKKyAjZGVmaW5lIExBQ0tTX0VSUk5PX0gKKyAjZGVmaW5lIE1BTExPQ19GQUlMVVJFX0FDVElPTgorICNkZWZpbmUgTU1BUF9DTEVBUlMgMCAvKiBXSU5DRSBhbmQgc29tZSBvdGhlcnMgYXBwYXJlbnRseSBkb24ndCBjbGVhciAqLworKyNlbGlmICFkZWZpbmVkIF9HTlVfU09VUkNFCisrLyogbXJlbWFwKCkgb24gTGludXggcmVxdWlyZXMgdGhpcyB2aWEgc3lzL21tYW4uaAorKyAqIFNlZSByb3VuZHVwIGlzc3VlIDEwMzA5CisrICovCisrI2RlZmluZSBfR05VX1NPVVJDRSAxCisgI2VuZGlmICAvKiBXSU4zMiAqLworIAorICNpZmRlZiBfX09TMl9fCitkaWZmIC11ck4gbGliZmZpLTMuMC4xMS9zcmMvc3BhcmMvdjguUyBsaWJmZmkvc3JjL3NwYXJjL3Y4LlMKKy0tLSBsaWJmZmktMy4wLjExL3NyYy9zcGFyYy92OC5TCTIwMTItMDQtMTIgMDQ6NDY6MDYuMDAwMDAwMDAwICswMjAwCisrKysgbGliZmZpL3NyYy9zcGFyYy92OC5TCTIwMTEtMDMtMTMgMDU6MTU6MDQuMDAwMDAwMDAwICswMTAwCitAQCAtMjEzLDYgKzIxMywxMCBAQAorIAliZSxhCWRvbmUxCisgCSBsZGQJWyVmcC04XSwgJWkwCisgCisrCWNtcAklbzAsIEZGSV9UWVBFX1VJTlQ2NAorKwliZSxhCWRvbmUxCisrCSBsZGQJWyVmcC04XSwgJWkwCisrCisgCWxkCVslZnAtOF0sICVpMAorIGRvbmUxOgorIAlqbXAJJWk3KzgKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvQ2hhbmdlTG9nIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9DaGFuZ2VMb2cKaW5kZXggMDBiYTdlZi4uZjQxNDhhOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9DaGFuZ2VMb2cKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9DaGFuZ2VMb2cKQEAgLTEsOCArMSw5MTEgQEAKKzIwMTItMDQtMTEgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiBBZGQgbmV3IHNjcmlwdC4KKwkqIE1ha2VmaWxlLmluOiBSZWJ1aWx0LgorCisyMDEyLTA0LTExICBaYWNoYXJ5IFdhbGRvd3NraSAgPHp3YWxkb3dza2lAZ21haWwuY29tPgorCisJKiBnZW5lcmF0ZS1pb3Mtc291cmNlLWFuZC1oZWFkZXJzLnB5LAorCWxpYmZmaS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBTdXBwb3J0IGEgTWFjIHN0YXRpYyBsaWJyYXJ5IHZpYQorCVhjb2RlLiBTZXQgaU9TIGNvbXBhdGliaWxpdHkgdG8gNC4wLiAgTW92ZSBpT1MgdHJhbXBvbGluZQorCWdlbmVyYXRpb24gaW50byBhbiBYY29kZSAicnVuIHNjcmlwdCIgcGhhc2UuICBJbmNsdWRlIGJvdGggYXMKKwlYY29kZSBidWlsZCBzY3JpcHRzLiBEb24ndCBhbHdheXMgcmVnZW5lcmF0ZSBjb25maWcgZmlsZXMuCisKKzIwMTItMDQtMTAgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jIChmZmlfcHJlcF9hcmdzKTogQWRkIG1pc3Npbmcgc2VtaWNvbG9uLgorCisyMDEyLTA0LTA2ICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIE1ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogQWRkIG5ldyBpT1MveGNvZGUgZmlsZXMuCisJKiBNYWtlZmlsZS5pbjogUmVidWlsdC4KKworMjAxMi0wNC0wNiAgTWlrZSBMZXdpcyAgPG1pa2VsaWtlc3BpZUBnbWFpbC5jb20+CisKKwkqIGdlbmVyYXRlLWlvcy1zb3VyY2UtYW5kLWhlYWRlcnMucHk6IE5ldyBmaWxlLgorCSogbGliZmZpLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IE5ldyBmaWxlLgorCSogUkVBRE1FOiBVcGRhdGUgaW5zdHJ1Y3Rpb25zIG9uIGJ1aWxkaW5nIGlPUyBiaW5hcnkuCisJKiBidWlsZC1pb3Muc2g6IERlbGV0ZS4KKworMjAxMi0wNC0wNiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgorCisJKiBtNC9saWJ0b29sLm00IChfTFRfRU5BQkxFX0xPQ0spOiBTdXBwb3J0IHgzMi4KKworMjAxMi0wNC0wNiAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBzcmMveDg2L2ZmaTY0LmMgKFVJTlQxMjgpOiBEZWZpbmUgZGlmZmVyZW50bHkgZm9yIEludGVsIGFuZCBHTlUKKwljb21waWxlcnMsIHRoZW4gdXNlIGl0LgorCisyMDEyLTA0LTA2ICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIHRlc3RzdWl0ZS9NYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6IEFkZCBtaXNzaW5nIHRlc3QgY2FzZXMuCisJKiB0ZXN0c3VpdGUvTWFrZWZpbGUuaW46IFJlYnVpbHQuCisKKzIwMTItMDQtMDUgIFphY2hhcnkgV2FsZG93c2tpICA8endhbGRvd3NraUBnbWFpbC5jb20+CisKKwkqIGluY2x1ZGUvZmZpLmguaW46IEFkZCBtaXNzaW5nIHRyYW1wb2xpbmUgdGFibGUgZmllbGRzLgorCSogc3JjL2FybS9zeXN2LlM6IEZpeCBFTlRSWSBkZWZpbml0aW9uLCBhbmQgd3JhcCBzeW1ib2wgcmVmZXJlbmNlcworCWluIENOQU1FLgorCSogc3JjL3g4Ni9mZmkuYzogV3JhcCBXaW5kb3dzIHNwZWNpZmljIGNvZGUgaW4gaWZkZWZzLgorCisyMDEyLTA0LTAyICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHNyYy94ODYvd2luMzIuUyAoZmZpX2NhbGxfd2luMzIpOiBTaWduL3plcm8gZXh0ZW5kIHRoZSByZXR1cm4KKwl2YWx1ZSBpbiB0aGUgSW50ZWwgdmVyc2lvbiBhcyBpcyBhbHJlYWR5IGRvbmUgZm9yIHRoZSBBVCZUIHZlcnNpb24uCisJKGZmaV9jbG9zdXJlX1NZU1YpOiBMaWtld2lzZS4KKwkoZmZpX2Nsb3N1cmVfcmF3X1NZU1YpOiBMaWtld2lzZS4KKwkoZmZpX2Nsb3N1cmVfU1REQ0FMTCk6IExpa2V3aXNlLgorCisyMDEyLTAzLTI5ICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHNyYy94ODYvd2luMzIuUyAoZmZpX2Nsb3N1cmVfcmF3X1RISVNDQUxMKTogVW5pZnkgdGhlIGZyYW1lCisJZ2VuZXJhdGlvbiwgZml4IHRoZSBFTkRQIGxhYmVsIGFuZCByZW1vdmUgdGhlIHN1cnBsdXMgdGhpcmQgYXJnCisJZnJvbSB0aGUgJ2xlYScgaW5zbi4KKworMjAxMi0wMy0yOSAgUGV0ZXIgUm9zaW4gIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiBzcmMveDg2L3dpbjMyLlMgKGZmaV9jbG9zdXJlX3Jhd19TWVNWKTogTWFrZSB0aGUgJ3N0dWJyYXcnIGxhYmVsCisJdmlzaWJsZSBvdXRzaWRlIHRoZSBQUk9DLCBzbyB0aGF0IGZmaV9jbG9zdXJlX3Jhd19USElTQ0FMTCBjYW4gc2VlCisJaXQuICBBbHNvIGluc3RydWN0IHRoZSBhc3NlbWJsZXIgdG8gYWRkIGEgZnJhbWUgdG8gdGhlIGZ1bmN0aW9uLgorCisyMDEyLTAzLTIzICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIE1ha2VmaWxlLmFtIChBTV9DUFBGTEFHUyk6IEFkZCAtREZGSV9CVUlMRElORy4KKwkqIE1ha2VmaWxlLmluOiBSZWJ1aWx0LgorCSogaW5jbHVkZS9mZmkuaC5pbiBbTVNWQ106IEFkZCBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZGVjb3JhdGlvbnMKKwl0byBhbGwgZGF0YSBleHBvcnRzLCB3aGVuIGNvbXBpbGluZyBsaWJmZmkgY2xpZW50cyB1c2luZyBNU1ZDLgorCisyMDEyLTAzLTI5ICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHNyYy94ODYvZmZpdGFyZ2V0LmggKGZmaV9hYmkpOiBBZGQgbmV3IEFCSSBGRklfTVNfQ0RFQ0wgYW5kCisJbWFrZSBpdCB0aGUgZGVmYXVsdCBmb3IgTVNWQy4KKwkoRkZJX1RZUEVfTVNfU1RSVUNUKTogTmV3IHN0cnVjdHVyZSByZXR1cm4gY29udmVudGlvbi4KKwkqIHNyYy94ODYvZmZpLmMgKGZmaV9wcmVwX2NpZl9tYWNoZGVwKTogVHdlYWsgdGhlIHN0cnVjdHVyZQorCXJldHVybiBjb252ZW50aW9uIGZvciBGRklfTVNfQ0RFQ0wgdG8gYmUgRkZJX1RZUEVfTVNfU1RSVUNUCisJaW5zdGVhZCBvZiBhbiBvcmRpbmFyeSBGRklfVFlQRV9TVFJVQ1QuCisJKGZmaV9wcmVwX2FyZ3MpOiBUcmVhdCBGRklfVFlQRV9NU19TVFJVQ1QgYXMgRkZJX1RZUEVfU1RSVUNULgorCShmZmlfY2FsbCk6IExpa2V3aXNlLgorCShmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YpOiBMaWtld2lzZS4KKwkoZmZpX3Jhd19jYWxsKTogTGlrZXdpc2UuCisJKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogVHJlYXQgRkZJX01TX0NERUNMIGFzIEZGSV9TWVNWLgorCSogc3JjL3g4Ni93aW4zMi5TIChmZmlfY2xvc3VyZV9TWVNWKTogRm9yIEZGSV9UWVBFX01TX1NUUlVDVCwKKwlyZXR1cm4gYSBwb2ludGVyIHRvIHRoZSByZXN1bHQgc3RydWN0dXJlIGluIGVheCBhbmQgZG9uJ3QgcG9wCisJdGhhdCBwb2ludGVyIGZyb20gdGhlIHN0YWNrLCB0aGUgY2FsbGVyIHRha2VzIGNhcmUgb2YgaXQuCisJKGZmaV9jYWxsX3dpbjMyKTogVHJlYXQgRkZJX1RZUEVfTVNfU1RSVUNUIGFzIEZGSV9UWVBFX1NUUlVDVC4KKwkoZmZpX2Nsb3N1cmVfcmF3X1NZU1YpOiBMaWtld2lzZS4KKworMjAxMi0wMy0yMiAgUGV0ZXIgUm9zaW4gIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV9zdGRjYWxsLmMgW01TVkNdOiBBZGQgaW5saW5lCisJYXNzZW1ibHkgdmVyc2lvbiB3aXRoIEludGVsIHN5bnRheC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbG9zdXJlX3RoaXNjYWxsLmMgW01TVkNdOiBMaWtld2lzZS4KKworMjAxMi0wMy0yMyAgUGV0ZXIgUm9zaW4gIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmZpdGVzdC5oOiBQcm92aWRlIGFic3RyYXRpb24gb2YKKwlfX2F0dHJpYnV0ZV9fKChmYXN0Y2FsbCkpIGluIHRoZSBmb3JtIG9mIGEgX19GQVNUQ0FMTF9fCisJZGVmaW5lLiAgRGVmaW5lIGl0IHRvIF9fZmFzdGNhbGwgZm9yIE1TVkMuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMxX3dpbjMyLmM6IFVzZSB0aGUgYWJvdmUuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMyX3dpbjMyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzM193aW4zMi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJsZW4yX3dpbjMyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDFfd2luMzIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ml93aW4zMi5jOiBMaWtld2lzZS4KKworMjAxMi0wMy0yMiAgUGV0ZXIgUm9zaW4gIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiBzcmMveDg2L3dpbjMyLlMgW01TVkNdIChmZmlfY2xvc3VyZV9USElTQ0FMTCk6IFJlbW92ZSB0aGUgbWFudWFsCisJZnJhbWUgb24gZnVuY3Rpb24gZW50cnksIE1BU00gYWRkcyBvbmUgYXV0b21hdGljYWxseS4KKworMjAxMi0wMy0yMiAgUGV0ZXIgUm9zaW4gIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmZpdGVzdC5oIFtNU1ZDXTogQWRkIGtsdWRnZSBmb3IgbWlzc2luZworCWJpdHMgaW4gdGhlIE1TVkMgaGVhZGVycy4KKworMjAxMi0wMy0yMiAgUGV0ZXIgUm9zaW4gIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzEyYnl0ZS5jOiBBZGp1c3QgdG8gdGhlIEM4OSBzdHlsZQorCXdpdGggbm8gZGVjbGFyYXRpb25zIGFmdGVyIHN0YXRlbWVudHMuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE2Ynl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMThieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xOWJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzFfMWJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzIwYnl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjBieXRlMS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjRieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yYnl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM18xYnl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM2J5dGUxLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzRfMWJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzRieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc181XzFfYnl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNWJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzY0Ynl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNl8xX2J5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzZieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183XzFfYnl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfN2J5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzhieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTEuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzlieXRlMi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fZG91YmxlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9mbG9hdC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdDIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3BvaW50ZXIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQxNi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDMyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50NjQuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQxNi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDMyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50NjQuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RibHNfc3RydWN0LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19wb2ludGVyX3N0YWNrLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Vycl9iYWRfdHlwZWRlZi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9odWdlX3N0cnVjdC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxMC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Mi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0My5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ni5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ny5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9sYXJnZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9sYXJnZTIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X21lZGl1bTIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QxX3dpbjMyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ml93aW4zMi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QzLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDQuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0NS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q2LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDcuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0OC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q5LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3Rlc3RjbG9zdXJlLmM6IExpa2V3aXNlLgorCisyMDEyLTAzLTA2ICBDaHVuZy1MaW4gVGFuZyAgPGNsdGFuZ0Bjb2Rlc291cmNlcnkuY29tPgorCisJKiBzcmMvYXJtL2ZmaS5jIChmZmlfY2FsbCk6IEFkZCBfX0FSTV9FQUJJX18gZ3VhcmQgYXJvdW5kIGNhbGwgdG8KKwlmZmlfY2FsbF9WRlAoKS4KKwkoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBBZGQgX19BUk1fRUFCSV9fIGd1YXJkIGFyb3VuZCB1c2Ugb2YKKwlmZmlfY2xvc3VyZV9WRlAuCisJKiBzcmMvYXJtL3N5c3YuUzogQWRkIF9fQVJNX0VBQklfXyBndWFyZCBhcm91bmQgVkZQIGNvZGUuCisKKzIwMTItMDMtMjEgIFBldGVyIFJvc2luCSA8cGVkYUBseXNhdG9yLmxpdS5zZT4KKworCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zsb2F0X3ZhLmMgKGZsb2F0X3ZhX2ZuKTogVXNlICVmIHdoZW4KKwlwcmludGluZyBkb3VibGVzICglbGYgaXMgZm9yIGxvbmcgZG91YmxlcykuCisJKG1haW4pOiBMaWtld2lzZS4KKworMjAxMi0wMy0yMSAgUGV0ZXIgUm9zaW4gIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiB0ZXN0c3VpdGUvbGliL3RhcmdldC1saWJwYXRoLmV4cCBbKi0qLWN5Z3dpbiosICotKi1taW5ndypdCisJKHNldF9sZF9saWJyYXJ5X3BhdGhfZW52X3ZhcnMpOiBBZGQgdGhlIGxpYnJhcnkgc2VhcmNoIGRpciB0byBQQVRICisJKGFuZCBzYXZlIFBBVEggZm9yIGxhdGVyKS4KKwkocmVzdG9yZV9sZF9saWJyYXJ5X3BhdGhfZW52X3ZhcnMpOiBSZXN0b3JlIFBBVEguCisKKzIwMTItMDMtMjAgIFBldGVyIFJvc2luICA8cGVkYUBseXNhdG9yLmxpdS5zZT4KKworCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmxlbjJfd2luMzIuYyAobWFpbik6IFJlbW92ZSBidWcuCisJKiBzcmMveDg2L3dpbjMyLlMgW01TVkNdIChmZmlfY2xvc3VyZV9TWVNWKTogTWFrZSB0aGUgJ3N0dWInIGxhYmVsCisJdmlzaWJsZSBvdXRzaWRlIHRoZSBQUk9DLCBzbyB0aGF0IGZmaV9jbG9zdXJlX1RISVNDQUxMIGNhbiBzZWUgaXQuCisKKzIwMTItMDMtMTkgIEFsYW4gSG91cmloYW5lICA8YWxhbmhAZmFpcmxpdGUuY28udWs+CisKKwkqIHNyYy9tNjhrL2ZmaS5jOiBBZGQgTUlOVCBzdXBwb3J0LgorCSogc3JjL202OGsvc3lzdi5TOiBEaXR0by4KKworMjAxMi0wMy0xOSAgY2hlbm5hbSAgPGNzaXRAYXh3YXkuY29tPgorCisJKiBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRml4IEFJWCBjbG9zdXJlCisJc3VwcG9ydC4KKworMjAxMi0wNC0wMiAgUGV0ZXIgQmVyZ25lciAgPGJlcmduZXJAdm5ldC5pYm0uY29tPgorCisJKiBzcmMvcG93ZXJwYy9mZmkuYyAoZmZpX3ByZXBfYXJnc19TWVNWKTogRGVjbGFyZSBkb3VibGVfdG1wLgorCVNpbGVuY2UgY2FzdGluZyBwb2ludGVyIHRvIGludGVnZXIgb2YgZGlmZmVyZW50IHNpemUgd2FybmluZy4KKwlEZWxldGUgZ290byB0byBwcmV2aW91c2x5IGRlbGV0ZWQgbGFiZWwuCisJKGZmaV9jYWxsKTogU2lsZW5jZSBwb3NzaWJseSB1bmRlZmluZWQgd2FybmluZy4KKwkoZmZpX2Nsb3N1cmVfaGVscGVyX1NZU1YpOiBEZWNsYXJlIHZhcmlhYmxlIHR5cGUuCisKKzIwMTItMDMtMTMgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgorCisJKiBzcmMvc2gvZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRG9uJ3QgQVNTRVJUIEFCSSB0ZXN0LAorCWp1c3QgcmV0dXJuIEZGSV9CQURfQUJJIHdoZW4gdGhpbmdzIGFyZSB3cm9uZy4KKwkqIHNyYy9zaDY0L2ZmaS5jIChmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IERpdHRvLgorCisyMDEyLTAzLTA5ICBEYXZpZCBFZGVsc29obiAgPGRqZS5nY2NAZ21haWwuY29tPgorCisJKiBzcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TIChmZmlfY2xvc3VyZV9BU00pOiBBZGp1c3QgZm9yIERhcndpbjY0CisJY2hhbmdlIHRvIHJldHVybiB2YWx1ZSBvZiBmZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOIGFuZCBsb2FkIHR5cGUKKwlmcm9tIHJldHVybiB0eXBlLgorCisyMDEyLTAzLTAzICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CisKKwkqIHNyYy94ODYvZmZpNjQuYyAoZmZpX2NhbGwpOiBDYXN0IHRoZSByZXR1cm4gdmFsdWUgdG8gdW5zaWduZWQKKwlsb25nLgorCShmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IENhc3QgdG8gNjRiaXQgYWRkcmVzcyBpbiB0cmFtcG9saW5lLgorCShmZmlfY2xvc3VyZV91bml4NjRfaW5uZXIpOiBDYXN0IHJldHVybiBwb2ludGVyIHRvIHVuc2lnbmVkIGxvbmcKKwlmaXJzdC4KKworCSogc3JjL3g4Ni9mZml0YXJnZXQuaCAoRkZJX1NJWkVPRl9BUkcpOiBEZWZpbmVkIHRvIDggZm9yIHgzMi4KKwkoZmZpX2FyZyk6IFNldCB0byB1bnNpZ25lZCBsb25nIGxvbmcgZm9yIHgzMi4KKwkoZmZpX3NhcmcpOiBTZXQgdG8gbG9uZyBsb25nIGZvciB4MzIuCisKKzIwMTItMDMtMDMgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KKworCSogc3JjL3ByZXBfY2lmLmMgKGZmaV9wcmVwX2NpZl9jb3JlKTogUHJvcGVybHkgY2hlY2sgYmFkIEFCSS4KKworMjAxMi0wMy0wMyAgQW5kb25pIE1vcmFsZXMgQWxhc3RydWV5ICA8eWxhdHV5YUBnbWFpbC5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzogQWRkIC1uby11bmRlZmluZWQgZm9yIGJvdGggMzItIGFuZCA2NC1iaXQgeDg2CisJd2luZG93cy1saWtlIGhvc3RzLgorCSogY29uZmlndXJlOiBSZWJ1aWx0LgorCisyMDEyLTAyLTI3ICBNaWthZWwgUGV0dGVyc3NvbiAgPG1pa3BlQGl0LnV1LnNlPgorCisJUFIgbGliZmZpLzUyMjIzCisJKiBNYWtlZmlsZS5hbSAoRkxBR1NfVE9fUEFTUyk6IERlZmluZS4KKwkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgorCisyMDEyLTAyLTIzICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIHNyYy8qL2ZmaXRhcmdldC5oOiBFbnN1cmUgdGhhdCB1c2VycyBuZXZlciBpbmNsdWRlIGZmaXRhcmdldC5oCisJZGlyZWN0bHkuCisKKzIwMTItMDItMjMgIEthaSBUaWV0eiAgPGt0aWV0ekByZWRoYXQuY29tPgorCisJUFIgbGliZmZpLzUyMjIxCisJKiBzcmMveDg2L2ZmaS5jIChmZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEwpOiBOZXcKKwlwcm90b3R5cGUuCisJKGZmaV9wcmVwX3Jhd19jbG9zdXJlX2xvYyk6IFVzZSBmZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEwgZm9yCisJdGhpc2NhbGwtY29udmVudGlvbi4KKwkoZmZpX3Jhd19jYWxsKTogVXNlIGZmaV9wcmVwX2FyZ3NfcmF3LgorCSogc3JjL3g4Ni93aW4zMi5TIChmZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEwpOiBBZGQKKwlpbXBsZW1lbnRhdGlvbiBmb3Igc3R1Yi4KKworMjAxMi0wMi0xMCAgS2FpIFRpZXR6ICA8a3RpZXR6QHJlZGhhdC5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYyAoQU1fTFRMREZMQUdTKTogQWRkIC1uby11bmRlZmluZSBmb3IgeDY0CisJd2luZG93cyB0YXJnZXQuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgorCisyMDEyLTAyLTA4ICBLYWkgVGlldHogIDxrdGlldHpAcmVkaGF0LmNvbT4KKworCSogc3JjL3ByZXBfY2lmLmMgKGZmaV9wcmVwX2NpZik6IEFsbG93IGZvciBYODZfV0lOMzIKKwlhbHNvIEZGSV9USElTQ0FMTC4KKwkqIHNyYy94ODYvZmZpLmMgKGZmaV9jbG9zdXJlX1RISVNDQUxMKTogQWRkIHByb3RvdHlwZS4KKwkoRkZJX0lOSVRfVFJBTVBPTElORV9USElTQ0FMTCk6IE5ldyB0cmFtcG9saW5lIGNvZGUuCisJKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogQWRkIEZGSV9USElTQ0FMTCBzdXBwb3J0LgorCSogc3JjL3g4Ni9mZml0YXJnZXQuaCAoRkZJX1RSQU1QT0xJTkVfU0laRSk6IEFkanVzdCBzaXplLgorCSogc3JjL3g4Ni93aW4zMi5TIChmZmlfY2xvc3VyZV9USElTQ0FMTCk6IE5ldyBjbG9zdXJlIGNvZGUKKwlmb3IgdGhpc2NhbGwtY2FsbGluZyBjb252ZW50aW9uLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfdGhpc2NhbGwuYzogTmV3IHRlc3QuCisKKzIwMTItMDEtMjggIEthaSBUaWV0eiAgPGt0aWV0ekByZWRoYXQuY29tPgorCisJKiBzcmMvbGliZmZpL3NyYy94ODYvZmZpLmMgKGZmaV9jYWxsX3dpbjMyKTogQWRkIG5ldworCWFyZ3VtZW50IHRvIHByb3RvdHlwZSBmb3Igc3BlY2lmeSBjYWxsaW5nLWNvbnZlbnRpb24uCisJKGZmaV9jYWxsKTogQWRkIHN1cHBvcnQgZm9yIHN0ZGNhbGwvdGhpc2NhbGwgY29udmVudGlvbi4KKwkoZmZpX3ByZXBfYXJncyk6IExpa2V3aXNlLgorCShmZmlfcmF3X2NhbGwpOiBMaWtld2lzZS4KKwkqIHNyYy94ODYvZmZpdGFyZ2V0LmggKGZmaV9hYmkpOiBBZGQgRkZJX1RISVNDQUxMIGFuZAorCUZGSV9GQVNUQ0FMTC4KKwkqIHNyYy94ODYvd2luMzIuUyAoX2ZmaV9jYWxsX3dpbjMyKTogQWRkIHN1cHBvcnQgZm9yCisJZmFzdGNhbGwvdGhpc2NhbGwgY2FsbGluZy1jb252ZW50aW9uIGNhbGxzLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzMV93aW4zMi5jOiBOZXcgdGVzdC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczJfd2luMzIuYzogTmV3IHRlc3QuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMzX3dpbjMyLmM6IE5ldyB0ZXN0LgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmxlbjJfd2luMzIuYzogTmV3IHRlc3QuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvbWFueTJfd2luMzIuYzogTmV3IHRlc3QuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MV93aW4zMi5jOiBOZXcgdGVzdC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyX3dpbjMyLmM6IE5ldyB0ZXN0LgorCisyMDEyLTAxLTIzICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgorCisJKiBzcmMvYWxwaGEvZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogQ2hlY2sgZm9yIGJhZCBBQkkuCisKKzIwMTItMDEtMjMgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKwkgICAgQ2hyaXMgWW91bmcgIDxjZHlvdW5nQG50bHdvcmxkLmNvbT4KKworCSogY29uZmlndXJlLmFjOiBBZGQgQW1pZ2Egc3VwcG9ydC4KKwkqIGNvbmZpZ3VyZTogUmVidWlsdC4KKworMjAxMi0wMS0yMyAgRG1pdHJ5IE5hZGV6aGluICA8ZG1pdHJ5Lm5hZGV6aGluQGdtYWlsLmNvbT4KKworCSogaW5jbHVkZS9mZmlfY29tbW9uLmggKExJS0VMWSwgVU5MSUtFTFkpOiBGaXggZGVmaW5pdGlvbnMuCisKKzIwMTItMDEtMjMgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGxpbnV4LW02OGsub3JnPgorCisJKiBzcmMvbTY4ay9zeXN2LlMgKGZmaV9jYWxsX1NZU1YpOiBQcm9wZXJseSB0ZXN0IGZvciBwbGFpbgorCW1jNjgwMDAuICBUZXN0IGZvciBfX0hBVkVfNjg4ODFfXyBpbiBhZGRpdGlvbiB0byBfX01DNjg4ODFfXy4KKworMjAxMi0wMS0xOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CisKKwlQUiBydGwtb3B0aW1pemF0aW9uLzQ4NDk2CisJKiBzcmMvaWE2NC9mZmkuYyAoZmZpX2NhbGwpOiBGaXggdXAgYWxpYXNpbmcgdmlvbGF0aW9ucy4KKworMjAxMi0wMS0wOSAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwkqIGNvbmZpZ3VyZS5hYyAoaT84Ni0qLSopOiBTZXQgVEFSR0VUIHRvIFg4Nl82NC4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKworMjAxMS0xMi0wNyAgQW5kcmV3IFBpbnNraSAgPGFwaW5za2lAY2F2aXVtLmNvbT4KKworCVBSIGxpYmZmaS81MDA1MQorCSogc3JjL21pcHMvbjMyLlM6IEFkZCAiLnNldCBtaXBzNCIuCisKKzIwMTEtMTEtMjEgIEFuZHJlYXMgVG9ibGVyICA8YW5kcmVhc3RAZmd6bmV0LmNoPgorCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisKKzIwMTEtMTEtMTIgIERhdmlkIEdpbGJlcnQgPGRhdmlkLmdpbGJlcnRAbGluYXJvLm9yZz4KKworCSogZG9jL2xpYmZmaS50ZXhpLCBpbmNsdWRlL2ZmaS5oLmluLCBpbmNsdWRlL2ZmaV9jb21tb24uaCwKKwltYW4vTWFrZWZpbGUuYW0sIG1hbi9mZmkuMywgbWFuL2ZmaV9wcmVwX2NpZi4zLAorCW1hbi9mZmlfcHJlcF9jaWZfdmFyLjMsIHNyYy9hcm0vZmZpLmMsIHNyYy9hcm0vZmZpdGFyZ2V0LmgsCisJc3JjL2NyaXMvZmZpLmMsIHNyYy9wcmVwX2NpZi5jLAorCXRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmMsCisJdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlX3ZhLmMsCisJdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zsb2F0X3ZhLmM6IE1hbnkgY2hhbmdlcyB0byBzdXBwb3J0IHZhcmlhZGljCisJZnVuY3Rpb24gY2FsbHMuCisKKzIwMTEtMTEtMTIgIEt5bGUgTW9mZmV0dCA8S3lsZS5ELk1vZmZldHRAYm9laW5nLmNvbT4KKworCSogc3JjL3Bvd2VycGMvZmZpLmMsIHNyYy9wb3dlcnBjL2ZmaXRhcmdldC5oLAorCXNyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMsIHNyYy9wb3dlcnBjL3N5c3YuUzogTWFueSBjaGFuZ2VzIGZvcgorCXNvZnRmbG9hdCBwb3dlcnBjIHZhcmlhbnRzLgorCisyMDExLTExLTEyICBQZXRyIFNhbGluZ2VyIDxQZXRyLlNhbGluZ2VyQHNlem5hbS5jej4KKworCSogY29uZmlndXJlLmFjIChGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFKTogRml4IGtmcmVlYnNkIHN1cHBvcnQuCisJKiBjb25maWd1cmU6IFJlYnVpbHQuCisKKzIwMTEtMTEtMTIgIFRpbW90aHkgV2FsbCAgPHR3YWxsQHVzZXJzLnNmLm5ldD4KKworCSogc3JjL2FybS9mZmkuYyAoZmZpX3ByZXBfYXJncywgZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWKTogTWF4CisJYWxpZ25tZW50IG9mIDQgZm9yIHdpbmNlIG9uIEFSTS4KKworMjAxMS0xMS0xMiAgS3lsZSBNb2ZmZXR0IDxLeWxlLkQuTW9mZmV0dEBib2VpbmcuY29tPgorCSAgICBBbnRob255IEdyZWVuIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogc3JjL3BwYy9zeXN2LlMsIHNyYy9wcGMvZmZpLmM6IFJlbW92ZSB1c2Ugb2YgcHBjIHN0cmluZworCWluc3RydWN0aW9ucyAobm90IGF2YWlsYWJsZSBvbiBzb21lIGNvcmVzLCBsaWtlIHRoZSBQUEM0NDApLgorCisyMDExLTExLTEyICBLaW11cmEgV2F0YXJ1ICA8a2ltdXJhd0BpLm5pZnR5LmpwPgorCisJKiBtNC9heF9lbmFibGVfYnVpbGRkaXI6IENoYW5nZSBmcm9tIHN0cmluZyBjb21wYXJpc29uIHRvIG51bWVyaWMKKwljb21wYXJpc29uIGZvciB3YyBvdXRwdXQuCisJKiBjb25maWd1cmUuYWM6IEVuYWJsZSBGRklfTU1BUF9FWEVDX1dSSVQgZm9yIGRhcndpbjExIGFrYSBNYWMgT1MKKwlYIDEwLjcuCisJKiBjb25maWd1cmU6IFJlYnVpbHQuCisKKzIwMTEtMTEtMTIgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogTWFrZWZpbGUuYW0gKEFNX0NDQVNGTEFHUyk6IEFkZCAtZyBvcHRpb24gdG8gYnVpbGQgYXNzZW1ibHkKKwlmaWxlcyB3aXRoIGRlYnVnIGluZm8uCisJKiBNYWtlZmlsZS5pbjogUmVidWlsdC4KKworMjAxMS0xMS0xMiAgSmFzcGVyIExpZXZpc3NlIEFkcmlhYW5zZSA8amFzcGVyQG9wZW5ic2Qub3JnPgorCisJKiBSRUFETUU6IFVwZGF0ZSBsaXN0IG9mIHN1cHBvcnRlZCBPcGVuQlNEIHN5c3RlbXMuCisKKzIwMTEtMTEtMTIgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogbGlidG9vbC12ZXJzaW9uOiBVcGRhdGUuCisJKiBNYWtlZmlsZS5hbSAobm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTKTogQWRkIHNyYy9kZWJ1Zy5jIGlmCisJRkZJX0RFQlVHLgorCShsaWJmZmlfbGFfU09VUkNFUyk6IFJlbW92ZSBzcmMvZGVidWcuYworCShFWFRSQV9ESVNUKTogQWRkIHNyYy9kZWJ1Zy5jCisJKiBNYWtlZmlsZS5pbjogUmVidWlsdC4KKwkqIFJFQURNRTogVXBkYXRlIGZvciAzLjAuMTEuCisKKzIwMTEtMTEtMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYyAoR0NDX0FTX0NGSV9QU0VVRE9fT1ApOiBVc2UgaXQgaW5zdGVhZCBvZiBpbmxpbmUgY2hlY2suCisJKiBjb25maWd1cmUsIGFjbG9jYWwubTQ6IFJlYnVpbGQuCisKKzIwMTEtMDktMDQgIElhaW4gU2FuZG9lICA8aWFpbnNAZ2NjLmdudS5vcmc+CisKKwlQUiBsaWJmZmkvNDk1OTQKKwkqIHNyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlMgKHN0dWJzKTogTWFrZSB0aGUgc3R1YiBiaW5kaW5nCisJaGVscGVyIHJlZmVyZW5jZSB0cmFjayB0aGUgYXJjaGl0ZWN0dXJlIHBvaW50ZXIgc2l6ZS4KKworMjAxMS0wOC0yNSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CisKKwkqIHNyYy9hcm0vZmZpLmMgKEZGSV9JTklUX1RSQU1QT0xJTkUpOiBSZW1vdmUgaGFyZC1jb2RlZCBhc3NlbWJseQorCWluc3RydWN0aW9ucy4KKwkqIHNyYy9hcm0vc3lzdi5TIChmZmlfYXJtX3RyYW1wb2xpbmUpOiBQdXQgdGhlbSBoZXJlIGluc3RlYWQuCisKKzIwMTEtMDctMTEgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgorCisgICAgICAgICogc3JjL2FybS9mZmkuYyAoRkZJX0lOSVRfVFJBTVBPTElORSk6IENsZWFyIGljYWNoZS4KKworMjAxMS0wNi0yOSAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmM6IE1vdmUgUFIgbnVtYmVyIHRvIGNvbW1lbnQuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGVfdmEuYzogTGlrZXdpc2UuCisKKzIwMTEtMDYtMjkgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJUFIgbGliZmZpLzQ2NjYwCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RvdWJsZV92YS5jOiB4ZmFpbCBkZy1vdXRwdXQgb24KKwltaXBzLXNnaS1pcml4NiouCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGVfdmEuYzogTGlrZXdpc2UuCisKKzIwMTEtMDYtMTQgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvaHVnZV9zdHJ1Y3QuYyAodGVzdF9sYXJnZV9mbik6IFVzZSBQUkl1OCwKKwlQUklkOCBpbnN0ZWFkIG9mICVoaHUsICVoaGQuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmZpdGVzdC5oIFtfX2FscGhhX18gJiYgX19vc2ZfX10gKFBSSWQ4LAorCVBSSXU4KTogRGVmaW5lLgorCVtfX3NnaV9fXSAoUFJJZDgsIFBSSXU4KTogRGVmaW5lLgorCisyMDExLTA0LTI5ICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCSogc3JjL2FscGhhL29zZi5TIChVQV9TSSwgRkRFX0VOQ09ESU5HLCBGREVfRU5DT0RFLCBGREVfQVJBTkdFKToKKwlEZWZpbmUuCisJVXNlIHRoZW0gdG8gaGFuZGxlIEVMRiB2cy4gRUNPRkYgZGlmZmVyZW5jZXMuCisJW19fb3NmX19dIChfR0xPQkFMX19GX2ZmaV9jYWxsX29zZik6IERlZmluZS4KKworMjAxMS0wMy0zMCAgVGltb3RoeSBXYWxsICA8dHdhbGxAdXNlcnMuc2YubmV0PgorCisJKiBzcmMvcG93ZXJwYy9kYXJ3aW4uUzogRml4IHVua25vd24gRkRFIGVuY29kaW5nLgorCSogc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUzogZGl0dG8uCisKKzIwMTEtMDItMjUgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogc3JjL3Bvd2VycGMvZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogQWxsb3cgZm9yIG1vcmUKKwkzMi1iaXQgQUJJcy4KKworMjAxMS0wMi0xNSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBtNC9heF9jY19tYXhvcHQubTQ6IERvbid0IC1tYWxpZ24tZG91YmxlIG9yIHVzZSAtZmZhc3QtbWF0aC4KKwkqIGNvbmZpZ3VyZTogUmVidWlsdC4KKworMjAxMS0wMi0xMyAgUmFsZiBXaWxkZW5odWVzICA8UmFsZi5XaWxkZW5odWVzQGdteC5kZT4KKworCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorCisyMDExLTAyLTEzICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIGluY2x1ZGUvZmZpX2NvbW1vbi5oIChVTkxJS0VMWSwgTElLRUxZKTogRGVmaW5lLgorCSogc3JjL3g4Ni9mZmk2NC5jIChVTkxJS0VMWSwgTElLRUxZKTogUmVtb3ZlIGRlZmluaXRpb24uCisJKiBzcmMvcHJlcF9jaWYuYyAoVU5MSUtFTFksIExJS0VMWSk6IFJlbW92ZSBkZWZpbml0aW9uLgorCisJKiBzcmMvcHJlcF9jaWYuYyAoaW5pdGlhbGl6ZV9hZ2dyZWdhdGUpOiBDb252ZXJ0IGFzc2VydGlvbiBpbnRvCisJRkZJX0JBRF9UWVBFREVGIHJldHVybi4gIEluaXRpYWxpemUgYXJnIHNpemUgYW5kIGFsaWdubWVudCB0byAwLgorCisJKiBzcmMvcGEvZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRG9uJ3QgQVNTRVJUIEFCSSB0ZXN0LAorCWp1c3QgcmV0dXJuIEZGSV9CQURfQUJJIHdoZW4gdGhpbmdzIGFyZSB3cm9uZy4KKwkqIHNyYy9hcm0vZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRGl0dG8uCisJKiBzcmMvcG93ZXJwYy9mZmkuYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBEaXR0by4KKwkqIHNyYy9taXBzL2ZmaS5jIChmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IERpdHRvLgorCSogc3JjL2lhNjQvZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRGl0dG8uCisJKiBzcmMvYXZyMzIvZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRGl0dG8uCisKKzIwMTEtMDItMTEgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogc3JjL3NwYXJjL2ZmaS5jIChmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IERvbid0IEFTU0VSVCBBQkkgdGVzdCwKKwlqdXN0IHJldHVybiBGRklfQkFEX0FCSSB3aGVuIHRoaW5ncyBhcmUgd3JvbmcuCisKKzIwMTItMDItMTEgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CisKKwkqIHNyYy9zcGFyYy92OS5TIChTVEFDS0ZSQU1FKTogQnVtcCB0byAxNzYuCisKKzIwMTEtMDItMDkgIFN0dWFydCBTaGVsdG9uICA8c3Jjc2hlbHRvbkBnbWFpbC5jb20+CisKKwlodHRwOi8vYnVncy5nZW50b28ub3JnL3Nob3dfYnVnLmNnaT9pZD0yODY5MTEKKwkqIHNyYy9taXBzL2ZmaXRhcmdldC5oOiBDbGVhbiB1cCBlcnJvciBtZXNzYWdlcy4KKwkqIHNyYy9qYXZhX3Jhd19hcGkuYyAoZmZpX2phdmFfdHJhbnNsYXRlX2FyZ3MpOiBDYXN0IHJhdyBhcmcgdG8KKwlmZmlfcmF3Ki4KKwkqIGluY2x1ZGUvZmZpLmguaW46IEFkZCBwcmFnbWEgZm9yIFNHSSBjb21waWxlci4KKworMjAxMS0wMi0wOSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBjb25maWd1cmUuYWM6IEFkZCBwb3dlcnBjNjQtKi1kYXJ3aW4qIHN1cHBvcnQuCisKKzIwMTEtMDItMDkgIEFudGhvbnkgR3JlZW4gPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBSRUFETUU6IE1lbnRpb24gSW50ZXJpeC4KKworMjAxMS0wMi0wOSAgSm9uYXRoYW4gQ2FsbGVuICA8YWJjZEBnZW50b28ub3JnPgorCisJKiBjb25maWd1cmUuYWM6IEFkZCBJbnRlcml4IHRvIHdpbjMyL2N5Z3dpbi9taW5ndyBjYXNlLgorCSogY29uZmlndXJlOiBEaXR0by4KKwkqIHNyYy9jbG9zdXJlcy5jOiBUcmVhdCBJbnRlcml4IGxpa2UgQ3lnd2luLCBpbnN0ZWFkIG9mIGFzIGEKKwlnZW5lcmljIHdpbjMyLgorCisyMDExLTAyLTA5ICBBbnRob255IEdyZWVuIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Vycl9iYWRfdHlwZWRlZi5jOiBSZW1vdmUgeGZhaWwuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZXJyX2JhZF9hYmkuYzogUmVtb3ZlIHhmYWlsLgorCSogc3JjL3g4Ni9mZmk2NC5jIChVTkxJS0VMWSwgTElLRUxZKTogRGVmaW5lLgorCShmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IENoZWNrIGZvciBiYWQgQUJJLgorCSogc3JjL3ByZXBfY2lmLmMgKFVOTElLRUxZLCBMSUtFTFkpOiBEZWZpbmUuCisJKGluaXRpYWxpemVfYWdncmVnYXRlKTogQ2hlY2sgZm9yIGJhZCB0eXBlcy4KKworMjAxMS0wMi0wOSAgTGFuZG9uIEZ1bGxlciA8bGFuZG9uZkBwbGF1c2libGUuY29vcD4KKworCSogTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiBBZGQgYnVpbGQtaW9zLnNoLCBzcmMvYXJtL2dlbnRyYW1wLnNoLAorCXNyYy9hcm0vdHJhbXBvbGluZS5TLgorCShub2Rpc3RfbGliZmZpX2xhX1NPVVJDRVMpOiBBZGQgc3JjL2FyYy90cmFtcG9saW5lLlMuCisJKiBjb25maWd1cmUuYWMgKEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUpOiBEZWZpbmUuCisJKiBzcmMvYXJtL2ZmaS5jIChmZmlfdHJhbXBvbGluZV90YWJsZSkKKwkoZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZV9wYWdlLCBmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeSkKKwkoRkZJX1RSQU1QT0xJTkVfQ09ERUxPQ19DT05GSUcsIEZGSV9UUkFNUE9MSU5FX0NPTkZJR19QQUdFX09GRlNFVCkKKwkoRkZJX1RSQU1QT0xJTkVfQ09VTlQsIGZmaV90cmFtcG9saW5lX2xvY2ssIGZmaV90cmFtcG9saW5lX3RhYmxlcykKKwkoZmZpX3RyYW1wb2xpbmVfdGFibGVfYWxsb2MsIGZmaV9jbG9zdXJlX2FsbG9jLCBmZmlfY2xvc3VyZV9mcmVlKToKKwlEZWZpbmUgZm9yIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgY2FzZSAoaU9TKS4KKwkoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBIYW5kbCBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFIGNhc2UKKwlzZXBhcmF0ZWx5LgorCSogc3JjL2FybS9zeXN2LlM6IEhhbmRsZSBBcHBsZSBpT1MgaG9zdC4KKwkqIHNyYy9jbG9zdXJlcy5jOiBIYW5kbGUgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSBjYXNlLgorCSogYnVpbGQtaW9zLnNoOiBOZXcgZmlsZS4KKwkqIGZmaWNvbmZpZy5oLmluLCBjb25maWd1cmUsIE1ha2VmaWxlLmluOiBSZWJ1aWx0LgorCSogUkVBRE1FOiBNZW50aW9uIEFSTSBpT1MuCisKKzIwMTEtMDItMDggIE9yZW4gSGVsZCAgPG9yZW5oZUBpbC5pYm0uY29tPgorCisJKiBzcmMvZGxtYWxsb2MuYyAoX1NUUlVDVF9NQUxMSU5GTyk6IERlZmluZSBpbiBvcmRlciB0byBhdm9pZAorCXJlZGVmaW5pdGlvbiBvZiBtYWxsaW5mbyBvbiBIUC1VWC4KKworMjAxMS0wMi0wOCAgR2lubiBDaGVuICA8Z2lubi5jaGVuQG9yYWNsZS5jb20+CisKKwkqIHNyYy9zcGFyYy9mZmkuYyAoZmZpX2NhbGwpOiBNYWtlIGNvbXBhdGlibGUgd2l0aCBTb2xhcmlzIFN0dWRpbworCWFnZ3JlZ2F0ZSByZXR1cm4gQUJJLiAgRmx1c2ggY2FjaGUuCisJKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRmx1c2ggY2FjaGUuCisKKzIwMTEtMDItMTEgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCUZyb20gVG9tIEhvbmVybWFubiA8dG9tLmhvbmVybWFubkBvcmFjbGUuY29tPjoKKwkqIHNyYy9wb3dlcnBjL2FpeC5TIChmZmlfY2FsbF9BSVgpOiBTdXBwb3J0IGZvciB4bGMgdG9vbGNoYWluIG9uCisJQUlYLiAgRGVjbGFyZSAuZmZpX3ByZXBfYXJncy4gIEluc2VydCBub3BzIGFmdGVyIGJyYW5jaAorCWluc3RydWN0aW9ucyBzbyB0aGF0IHRoZSBBSVggbGlua2VyIGNhbiBpbnNlcnQgVE9DIHJlbG9hZAorCWluc3RydWN0aW9ucy4KKwkqIHNyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlM6IERlY2xhcmUgLmZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4uCisKKzIwMTEtMDItMDggIEVkICA8ZWRAa2R0Yy5uZXQ+CisKKwkqIHNyYy9wb3dlcnBjL2FzbS5oOiBGaXggZ3JhbW1hciBuaXQgaW4gY29tbWVudC4KKworMjAxMS0wMi0wOCAgVWxpIExpbmsgIDx1bC5tY2FtYWZpYUBsaW5raXR1cC5kZT4KKworCSogaW5jbHVkZS9mZmkuaC5pbiAoRkZJXzY0X0JJVF9NQVgpOiBEZWZpbmUgYW5kIHVzZS4KKworMjAxMS0wMi0wOSAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwlQUiBsaWJmZmkvNDY2NjEKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfcG9pbnRlci5jIChtYWluKTogQ2FzdCB2b2lkICogdG8KKwl1aW50cHRyX3QgZmlyc3QuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXJfc3RhY2suYyAobWFpbik6IExpa2V3aXNlLgorCisyMDExLTAyLTA4ICBSYWZhZWwgQXZpbGEgZGUgRXNwaW5kb2xhICA8cmVzcGluZG9sYUBtb3ppbGxhLmNvbT4KKworCSogY29uZmlndXJlLmFjOiBGaXggeDg2IHRlc3QgZm9yIHBjIHJlbGF0ZWQgcmVsb2NzLgorCSogY29uZmlndXJlOiBSZWJ1aWx0LgorCisyMDExLTAyLTA3ICBKb2VsIFNoZXJyaWxsIDxqb2VsLnNoZXJyaWxsQG9hcmNvcnAuY29tPgorCisJKiBsaWJmZmkvc3JjL202OGsvZmZpLmM6IEFkZCBSVEVNUyBzdXBwb3J0IGZvciBjYWNoZSBmbHVzaGluZy4KKwlIYW5kbGUgY2FzZSB3aGVuIENQVSB2YXJpYW50IGRvZXMgbm90IGhhdmUgbG9uZyBkb3VibGUgc3VwcG9ydC4KKwkqIGxpYmZmaS9zcmMvbTY4ay9zeXN2LlM6IEFkZCBzdXBwb3J0IGZvciBtYzY4MDAwLCBDb2xkZmlyZSwKKwlhbmQgY29yZXMgd2l0aCBzb2Z0IGZsb2F0aW5nIHBvaW50LgorCisyMDExLTAyLTA3ICBKb2VsIFNoZXJyaWxsIDxqb2VsLnNoZXJyaWxsQG9hcmNvcnAuY29tPgorCisJKiBjb25maWd1cmUuYWM6IEFkZCBtaXBzKi0qLXJ0ZW1zKiBzdXBwb3J0LgorCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorCSogc3JjL21pcHMvZmZpdGFyZ2V0Lmg6IEVuc3VyZSBuZWVkZWQgY29uc3RhbnRzIGFyZSBhdmFpbGFibGUKKwlmb3IgdGFyZ2V0cyB3aGljaCBkbyBub3QgaGF2ZSBzZ2lkZWZzLmguCisKKzIwMTEtMDEtMjYgIERhdmUgS29ybiAgPGRhdmUua29ybi5jeWd3aW5AZ21haWwuY29tPgorCisJUFIgdGFyZ2V0LzQwMTI1CisJKiBjb25maWd1cmUuYWMgKEFNX0xUTERGTEFHUyk6IEFkZCAtYmluZGlyIG9wdGlvbiBmb3Igd2luZG93cyBETExzLgorCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorCisyMDEwLTEyLTE4ICBJYWluIFNhbmRvZSAgPGlhaW5zQGdjYy5nbnUub3JnPgorCisJUFIgbGliZmZpLzI5MTUyCisJUFIgbGliZmZpLzQyMzc4CisJKiBzcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TOiBQcm92aWRlIERhcndpbjY0IGltcGxlbWVudGF0aW9uLAorCXVwZGF0ZSBjb21tZW50cy4KKwkqIHNyYy9wb3dlcnBjL2ZmaXRhcmdldC5oIChQT1dFUlBDX0RBUldJTjY0KTogTmV3LAorCShGRklfVFJBTVBPTElORV9TSVpFKTogVXBkYXRlIGZvciBEYXJ3aW42NC4KKwkqIHNyYy9wb3dlcnBjL2Rhcndpbi5TOiBQcm92aWRlIERhcndpbjY0IGltcGxlbWVudGF0aW9uLAorCXVwZGF0ZSBjb21tZW50cy4KKwkqIHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYzogTGlrZXdpc2UuCisKKzIwMTAtMTItMDYgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJKiBjb25maWd1cmUuYWMgKGxpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3ApOiBVc2UgZG91YmxlCisJYmFja3NsYXNoZXMuCisJKGxpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wKTogTGlrZXdpc2UuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisKKzIwMTAtMTItMDMgIENodW5nLUxpbiBUYW5nICA8Y2x0YW5nQGNvZGVzb3VyY2VyeS5jb20+CisKKwkqIHNyYy9hcm0vc3lzdi5TIChmZmlfY2xvc3VyZV9TWVNWKTogQWRkIFVOV0lORCB0byAucGFkIGRpcmVjdGl2ZS4KKwkoZmZpX2Nsb3N1cmVfVkZQKTogU2FtZS4KKwkoZmZpX2NhbGxfVkZQKTogTW92ZSBkb3duIHRvIGJlZm9yZSBmZmlfY2xvc3VyZV9WRlAuIEFkZCAnLmZwdSB2ZnAnCisJZGlyZWN0aXZlLgorCisyMDEwLTEyLTAxICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2ZmaXRlc3QuaCBbX19zZ2ldIChQUklkNjQsIFBSSXU2NCk6IERlZmluZS4KKwkoUFJJdVBUUik6IERlZmluZS4KKworMjAxMC0xMS0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KKwkgICAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwkqIHNyYy94ODYvc3lzdi5TIChGREVfRU5DT0RJTkcsIEZERV9FTkNPREUpOiBEZWZpbmUuCisJKC5laF9mcmFtZSk6IFVzZSBGREVfRU5DT0RJTkcuCisJKC5MQVNGREUxLCAuTEFTRkRFMiwgTEFTRkRFMyk6IFNpbXBsaWZ5IHdpdGggRkRFX0VOQ09ERS4KKworMjAxMC0xMS0yMiAgSmFjZWsgQ2FiYW4gPGphY2VrQGNvZGV3ZWF2ZXJzLmNvbT4KKworCSogY29uZmlndXJlLmFjOiBDaGVjayBmb3Igc3ltYm9sIHVuZGVyc2NvcmVzIG9uIG1pbmd3LXc2NC4KKwkqIGNvbmZpZ3VyZTogUmVidWlsdC4KKwkqIHNyYy94ODYvd2luNjQuUzogQ29ycmVjdGx5IGFjY2VzcyBleHRlcm4gc3ltYm9scyBpbiByZXNwZWN0IHRvCisJdW5kZXJzY29yZXMuCisKKzIwMTAtMTEtMTUgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJKiB0ZXN0c3VpdGUvbGliL2xpYmZmaS1kZy5leHA6IFJlbmFtZSAuLi4KKwkqIHRlc3RzdWl0ZS9saWIvbGliZmZpLmV4cDogLi4uIHRvIHRoaXMuCisJKiBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2NhbGwuZXhwOiBEb24ndCBsb2FkIGxpYmZmaS1kZy5leHAuCisJKiBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5zcGVjaWFsL3NwZWNpYWwuZXhwOiBMaWtld2lzZS4KKworMjAxMC0xMC0yOCAgQ2h1bmctTGluIFRhbmcgIDxjbHRhbmdAY29kZXNvdXJjZXJ5LmNvbT4KKworCSogc3JjL2FybS9mZmkuYyAoZmZpX3ByZXBfYXJncyk6IEFkZCBWRlAgcmVnaXN0ZXIgYXJndW1lbnQgaGFuZGxpbmcKKwljb2RlLCBuZXcgcGFyYW1ldGVyLCBhbmQgcmV0dXJuIHZhbHVlLiBVcGRhdGUgY29tbWVudHMuCisJKGZmaV9wcmVwX2NpZl9tYWNoZGVwKTogQWRkIGNhc2UgZm9yIFZGUCBzdHJ1Y3QgcmV0dXJuIHZhbHVlcy4gQWRkCisJY2FsbCB0byBsYXlvdXRfdmZwX2FyZ3MoKS4KKwkoZmZpX2NhbGxfU1lTVik6IFVwZGF0ZSBkZWNsYXJhdGlvbi4KKwkoZmZpX2NhbGxfVkZQKTogTmV3IGRlY2xhcmF0aW9uLgorCShmZmlfY2FsbCk6IEFkZCBWRlAgc3RydWN0IHJldHVybiBjb25kaXRpb25zLiBDYWxsIGZmaV9jYWxsX1ZGUCgpCisJd2hlbiBBQkkgaXMgRkZJX1ZGUC4KKwkoZmZpX2Nsb3N1cmVfVkZQKTogTmV3IGRlY2xhcmF0aW9uLgorCShmZmlfY2xvc3VyZV9TWVNWX2lubmVyKTogQWRkIG5ldyB2ZnBfYXJncyBwYXJhbWV0ZXIsIHVwZGF0ZSBjYWxsIHRvCisJZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWKCkuCisJKGZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTVik6IFVwZGF0ZSBwYXJhbWV0ZXJzLiBBZGQgVkZQIGFyZ3VtZW50CisJY2FzZSBoYW5kbGluZy4KKwkoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBQYXNzIGZmaV9jbG9zdXJlX1ZGUCB0byB0cmFtcG9saW5lCisJY29uc3RydWN0aW9uIHVuZGVyIFZGUCBoYXJkLWZsb2F0LgorCShyZWNfdmZwX3R5cGVfcCk6IE5ldyBmdW5jdGlvbi4KKwkodmZwX3R5cGVfcCk6IFNhbWUuCisJKHBsYWNlX3ZmcF9hcmcpOiBTYW1lLgorCShsYXlvdXRfdmZwX2FyZ3MpOiBTYW1lLgorCSogc3JjL2FybS9mZml0YXJnZXQuaCAoZmZpX2FiaSk6IEFkZCBGRklfVkZQLiBEZWZpbmUgRkZJX0RFRkFVTFRfQUJJCisJYmFzZWQgb24gX19BUk1fUENTX1ZGUC4KKwkoRkZJX0VYVFJBX0NJRl9GSUVMRFMpOiBEZWZpbmUgZm9yIGFkZGluZyBWRlAgaGFyZC1mbG9hdCBzcGVjaWZpYworCWZpZWxkcy4KKwkoRkZJX1RZUEVfU1RSVUNUX1ZGUF9GTE9BVCk6IERlZmluZSBpbnRlcm5hbGx5IHVzZWQgdHlwZSBjb2RlLgorCShGRklfVFlQRV9TVFJVQ1RfVkZQX0RPVUJMRSk6IFNhbWUuCisJKiBzcmMvYXJtL3N5c3YuUyAoZmZpX2NhbGxfU1lTVik6IENoYW5nZSBjYWxsIG9mIGZmaV9wcmVwX2FyZ3MoKSB0bworCWRpcmVjdCBjYWxsLiBNb3ZlIGZ1bmN0aW9uIHBvaW50ZXIgbG9hZCB1cHdhcmRzLgorCShmZmlfY2FsbF9WRlApOiBOZXcgZnVuY3Rpb24uCisJKGZmaV9jbG9zdXJlX1ZGUCk6IFNhbWUuCisKKwkqIHRlc3RzdWl0ZS9saWIvbGliZmZpLWRnLmV4cCAoY2hlY2stZmxhZ3MpOiBOZXcgZnVuY3Rpb24uCisJKGRnLXNraXAtaWYpOiBOZXcgZnVuY3Rpb24uCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RvdWJsZV92YS5jOiBTa2lwIGlmIHRhcmdldCBpcyBhcm0qLSotKgorCWFuZCBjb21waWxlciBvcHRpb25zIGluY2x1ZGUgLW1mbG9hdC1hYmk9aGFyZC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jOiBTYW1lLgorCisyMDEwLTEwLTAxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKworCVBSIGxpYmZmaS80NTY3NworCSogc3JjL3g4Ni9mZmk2NC5jIChmZmlfcHJlcF9jaWZfbWFjaGRlcCk6IEVuc3VyZSBjaWYtPmJ5dGVzIGlzCisJYSBtdWx0aXBsZSBvZiA4LgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL21hbnkyLmM6IE5ldyB0ZXN0LgorCisyMDEwLTA4LTIwICBNYXJrIFdpZWxhYXJkICA8bWp3QHJlZGhhdC5jb20+CisKKwkqIHNyYy9jbG9zdXJlcy5jIChvcGVuX3RlbXBfZXhlY19maWxlX21udCk6IENoZWNrIGlmIGdldG1udGVudF9yCisJcmV0dXJucyBOVUxMLgorCisyMDEwLTA4LTA5ICBBbmRyZWFzIFRvYmxlciAgPGFuZHJlYXN0QGZnem5ldC5jaD4KKworCSogY29uZmlndXJlLmFjOiBBZGQgdGFyZ2V0IHBvd2VycGM2NC0qLWZyZWVic2QqLgorCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0LmM6IFBhc3MKKwktbWxvbmctZG91YmxlLTEyOCBvbmx5IHRvIGxpbnV4IHRhcmdldHMuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2h1Z2Vfc3RydWN0LmM6IExpa2V3aXNlLgorCisyMDEwLTA4LTA1ICBEYW4gV2l0dGUgIDxkd2l0dGVAbW96aWxsYS5jb20+CisKKyAgICAgICAgKiBNYWtlZmlsZS5hbTogUGFzcyBGRklfREVCVUcgZGVmaW5lIHRvIG1zdmNjLnNoIGZvciBsaW5raW5nIHRvIHRoZQorICAgICAgICBkZWJ1ZyBDUlQgd2hlbiAtLWVuYWJsZS1kZWJ1ZyBpcyBnaXZlbi4KKyAgICAgICAgKiBjb25maWd1cmUuYWM6IERlZmluZSBpdC4KKyAgICAgICAgKiBtc3ZjYy5zaDogVHJhbnNsYXRlIC1nIGFuZCAtREZGSV9ERUJVRyBhcHByb3ByaWF0ZWx5LgorCisyMDEwLTA4LTA0ICBEYW4gV2l0dGUgIDxkd2l0dGVAbW96aWxsYS5jb20+CisKKwkqIHNyYy94ODYvZmZpdGFyZ2V0Lmg6IEFkZCBYODZfQU5ZIGRlZmluZSBmb3IgYWxsIHg4Ni94ODZfNjQKKwlwbGF0Zm9ybXMuCisJKiBzcmMveDg2L2ZmaS5jOiBSZW1vdmUgcmVkdW5kYW50IGlmZGVmIGNoZWNrcy4KKwkqIHNyYy9wcmVwX2NpZi5jOiBQdXNoIHN0YWNrIHNwYWNlIGNvbXB1dGF0aW9uIGludG8gc3JjL3g4Ni9mZmkuYworCWZvciBYODZfQU5ZIHNvIHJldHVybiB2YWx1ZSBzcGFjZSBkb2Vzbid0IGdldCBhZGRlZCB0d2ljZS4KKworMjAxMC0wOC0wMyAgTmVpbCBSYXNoYnJvb2tlIDxuZWlsQHBhcmt3YXljYy5jby51az4KKworCSogbXN2Y2Muc2g6IERvbid0IHBhc3MgLXNhZmVzZWggdG8gbWw2NCBiZWNhdXNlIGJlaGF2aW9yIGlzIGJ1Z2d5LgorCisyMDEwLTA3LTIyICBEYW4gV2l0dGUgIDxkd2l0dGVAbW96aWxsYS5jb20+CisKKwkqIHNyYy8qL2ZmaXRhcmdldC5oOiBNYWtlIEZGSV9MQVNUX0FCSSBvbmUgcGFzdCB0aGUgbGFzdCB2YWxpZCBBQkkuCisJKiBzcmMvcHJlcF9jaWYuYzogRml4IEFCSSBhc3NlcnRpb24uCisgICAgICAgICogc3JjL2NyaXMvZmZpLmM6IERpdHRvLgorCisyMDEwLTA3LTEwICBFdmFuIFBob2VuaXggIDxldmFuQGZhbGxpbmdzbm93Lm5ldD4KKworCSogc3JjL2Nsb3N1cmVzLmMgKHNlbGludXhfZW5hYmxlZF9jaGVjayk6IEZpeCBzdHJuY21wIHVzYWdlIGJ1Zy4KKworMjAxMC0wNy0wNyAgRGFuIEhvcsOhayA8ZGFuQGRhbm55LmN6PgorCisJKiBpbmNsdWRlL2ZmaS5oLmluOiBQcm90ZWN0ICNkZWZpbmUgd2l0aCAjaWZuZGVmLgorCSogc3JjL3Bvd2VycGMvZmZpdGFyZ2V0Lmg6IERpdHRvLgorCSogc3JjL3MzOTAvZmZpdGFyZ2V0Lmg6IERpdHRvLgorCSogc3JjL3NwYXJjL2ZmaXRhcmdldC5oOiBEaXR0by4KKworMjAxMC0wNy0wNyAgIE5laWwgUm9iZXJ0cyA8bmVpbEBsaW51eC5pbnRlbC5jb20+CisKKwkqIHNyYy94ODYvc3lzdi5TIChmZmlfY2FsbF9TWVNWKTogQWxpZ24gdGhlIHN0YWNrIHBvaW50ZXIgdG8KKwkxNi1ieXRlcy4KKworMjAxMC0wNy0wMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CisKKwkqIE1ha2VmaWxlLmFtIChBTV9NQUtFRkxBR1MpOiBQYXNzIGFsc28gbWFuZGlyIHRvIHN1Ym1ha2VzLgorCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGVkLgorCisyMDEwLTA1LTE5ICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCSogY29uZmlndXJlLmFjIChsaWJmZmlfY3ZfYXNfeDg2X3BjcmVsKTogQ2hlY2sgZm9yIGlsbGVnYWwgaW4gYXMKKwlvdXRwdXQsIHRvby4KKwkobGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcCk6IENoZWNrIGZvciAuYXNjaWkuCisJKGxpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wKTogQ2hlY2sgZm9yIC5zdHJpbmcuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisJKiBmZmljb25maWcuaC5pbjogUmVnZW5lcmF0ZS4KKwkqIHNyYy94ODYvc3lzdi5TICguZWhfZnJhbWUpOiBVc2UgLmFzY2lpLCAuc3RyaW5nIG9yIGVycm9yLgorCisyMDEwLTA1LTExICBEYW4gV2l0dGUgIDxkd2l0dGVAbW96aWxsYS5jb20+CisKKwkqIGRvYy9saWJmZmkudGV4OiBEb2N1bWVudCBwcmV2aW91cyBjaGFuZ2UuCisKKzIwMTAtMDUtMTEgIE1ha290byBLYXRvIDxtX2thdG9AZ2EyLnNvLW5ldC5uZS5qcD4KKworCSogc3JjL3g4Ni9mZmkuYyAoZmZpX2NhbGwpOiBEb24ndCBjb3B5IHN0cnVjdHMgcGFzc2VkIGJ5IHZhbHVlLgorCisyMDEwLTA1LTA1ICBNaWNoYWVsIEtvaGxlciA8bWljaGFlbGtvaGxlckBsaXZlLmNvbT4KKworCSogc3JjL2RsbWFsbG9jLmMgKGRsZnJlZSk6IEZpeCBzcGVsbGluZy4KKwkqIHNyYy9pYTY0L2ZmaS5jIChmZmlfcHJlcF9jaWZfbWFjaGRlcCk6IERpdHRvLgorCSogY29uZmlndXJlLmFjOiBEaXR0by4KKwkqIGNvbmZpZ3VyZTogUmVidWlsdC4KKworMjAxMC0wNC0xMyAgRGFuIFdpdHRlICA8ZHdpdHRlQG1vemlsbGEuY29tPgorCisJKiBtc3ZjYy5zaDogQnVpbGQgd2l0aCAtVzMgaW5zdGVhZCBvZiAtV2FsbC4KKwkqIHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYzogUmVtb3ZlIGJ1aWxkIHdhcm5pbmdzLgorCSogc3JjL3g4Ni9mZmkuYzogRGl0dG8uCisJKiBzcmMveDg2L2ZmaXRhcmdldC5oOiBEaXR0by4KKworMjAxMC0wNC0xMiAgRGFuIFdpdHRlICA8ZHdpdHRlQG1vemlsbGEuY29tPgorCSAgICBXYWx0ZXIgTWVpbmwgPHd1bm9AbHN2dy5kZT4KKworCSogY29uZmlndXJlLmFjOiBBZGQgT1MvMiBzdXBwb3J0LgorCSogY29uZmlndXJlOiBSZWJ1aWx0LgorCSogc3JjL2Nsb3N1cmVzLmM6IERpdHRvLgorCSogc3JjL2RsbWFsbG9jLmM6IERpdHRvLgorCSogc3JjL3g4Ni93aW4zMi5TOiBEaXR0by4KKworMjAxMC0wNC0wNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CisKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX2FiaS5jOiBSZW1vdmUgdW51c2VkIGFyZ3MgdmFyaWFibGUuCisKKzIwMTAtMDQtMDIgIFJhbGYgV2lsZGVuaHVlcyAgPFJhbGYuV2lsZGVuaHVlc0BnbXguZGU+CisKKwkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgorCSogYWNsb2NhbC5tNDogUmVnZW5lcmF0ZS4KKwkqIGluY2x1ZGUvTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCisJKiBtYW4vTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCisJKiB0ZXN0c3VpdGUvTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCisKKzIwMTAtMDMtMzAgIERhbiBXaXR0ZSAgPGR3aXR0ZUBtb3ppbGxhLmNvbT4KKworCSogbXN2Y2Muc2g6IERpc2FibGUgYnVpbGQgd2FybmluZ3MuCisJKiBSRUFETUUgKHRlc3RlZCk6IENsYXJpZnkgd2luZG93cyBidWlsZCBwcm9jZWR1cmUuCisKKzIwMTAtMDMtMTUgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJKiBjb25maWd1cmUuYWMgKGxpYmZmaV9jdl9hc194ODZfNjRfdW53aW5kX3NlY3Rpb25fdHlwZSk6IE5ldyB0ZXN0LgorCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorCSogZmZpY29uZmlnLmguaW46IFJlZ2VuZXJhdGUuCisJKiBsaWJmZmkvc3JjL3g4Ni91bml4NjQuUyAoLmVoX2ZyYW1lKQorCVtIQVZFX0FTX1g4Nl82NF9VTldJTkRfU0VDVElPTl9UWVBFXTogVXNlIEB1bndpbmQgc2VjdGlvbiB0eXBlLgorCiAyMDEwLTAzLTE0ICBNYXR0aGlhcyBLbG9zZSAgPGRva29AdWJ1bnR1LmNvbT4KIAogCSogc3JjL3g4Ni9mZmk2NC5jOiBGaXggdHlwbyBpbiBjb21tZW50LgogCSogc3JjL3g4Ni9mZmkuYzogVXNlIC8qIC4uLiAqLyBjb21tZW50IHN0eWxlLgogCisyMDEwLTAyLTI0ICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCSogZG9jL2xpYmZmaS50ZXhpIChUaGUgQ2xvc3VyZSBBUEkpOiBGaXggdHlwby4KKwkqIGRvYy9saWJmZmkuaW5mbzogUmVtb3ZlLgorCisyMDEwLTAyLTE1ICBNYXR0aGlhcyBLbG9zZSAgPGRva29AdWJ1bnR1LmNvbT4KKworCSogc3JjL2FybS9zeXN2LlMgKF9fQVJNX0FSQ0hfXyk6IERlZmluZSBmb3IgcHJvY2Vzc29yCisJX19BUk1fQVJDSF83RU1fXy4KKworMjAxMC0wMS0xNSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQHJlZGhhdC5jb20+CisKKwkqIFJFQURNRTogQWRkIG5vdGVzIG9uIGJ1aWxkaW5nIHdpdGggTWljcm9zb2Z0IFZpc3VhbCBDKysuCisKKzIwMTAtMDEtMTUgIERhbmllbCBXaXR0ZSAgPGR3aXR0ZUBtb3ppbGxhLmNvbT4KKworCSogbXN2Y2Muc2g6IE5ldyBmaWxlLgorCisJKiBzcmMveDg2L3dpbjMyLlM6IFBvcnQgYXNzZW1ibHkgcm91dGluZXMgdG8gTVNWQyBhbmQgI2lmZGVmLgorCSogc3JjL3g4Ni9mZmkuYzogVHdlYWsgZnVuY3Rpb24gZGVjbGFyYXRpb24gYW5kIHJlbW92ZSBleGNlc3MKKwlwYXJlbnMuCisJKiBpbmNsdWRlL2ZmaS5oLmluOiBBZGQgX19kZWNsc3BlYyhhbGlnbig4KSkgdG8gdHlwZWRlZiBzdHJ1Y3QKKwlmZmlfY2xvc3VyZS4KKworCSogc3JjL3g4Ni9mZmkuYzogTWVyZ2UgZmZpX2NhbGxfU1lTViBhbmQgZmZpX2NhbGxfU1REQ0FMTCBpbnRvIG5ldworCWZ1bmN0aW9uIGZmaV9jYWxsX3dpbjMyIG9uIFg4Nl9XSU4zMi4KKwkqIHNyYy94ODYvd2luMzIuUyAoZmZpX2NhbGxfU1lTVik6IFJlbmFtZSB0byBmZmlfY2FsbF93aW4zMi4KKwkoZmZpX2NhbGxfU1REQ0FMTCk6IFJlbW92ZS4KKworCSogc3JjL3ByZXBfY2lmLmMgKGZmaV9wcmVwX2NpZik6IE1vdmUgc3RhY2sgc3BhY2UgYWxsb2NhdGlvbiBjb2RlCisJdG8gZmZpX3ByZXBfY2lmX21hY2hkZXAgZm9yIHg4Ni4KKwkqIHNyYy94ODYvZmZpLmMgKGZmaV9wcmVwX2NpZl9tYWNoZGVwKTogVG8gaGVyZS4KKworMjAxMC0wMS0xNSAgT2xpdmVyIEtpZGRsZSAgPG9raWRkbGVAeWFob28uY28udWs+CisKKwkqIHNyYy94ODYvZmZpdGFyZ2V0LmggKGZmaV9hYmkpOiBDaGVjayBmb3IgX19pMzg2IGFuZCBfX2FtZDY0IGZvcgorCVN1biBTdHVkaW8gY29tcGlsZXIgY29tcGF0aWJpbGl0eS4KKworMjAxMC0wMS0xMiAgQ29ucmFkIElyd2luIDxjb25yYWQuaXJ3aW5AZ21haWwuY29tPgorCisJKiBkb2MvbGliZmZpLnRleGk6IEFkZCBjbG9zdXJlIGV4YW1wbGUuCisKIDIwMTAtMDEtMDcgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgogCiAJUFIgbGliZmZpLzQwNzAxCkBAIC0xNDgsNiArMTA1MSwxMyBAQAogCSogc3JjL3BhL2ZmaS5jIChmZmlfY2xvc3VyZV9pbm5lcl9wYTMyKTogSGFuZGxlIEZGSV9UWVBFX0xPTkdET1VCTEUKIAl0eXBlIG9uIEhQLVVYLgogCisyMDEyLTAyLTEzICBLYWkgVGlldHogIDxrdGlldHpAcmVkaGF0LmNvbT4KKworCVBSIGxpYmZmaS81MjIyMQorCSogc3JjL3g4Ni9mZmkuYyAoZmZpX3ByZXBfcmF3X2Nsb3N1cmVfbG9jKTogQWRkIHRoaXNjYWxsCisJc3VwcG9ydCBmb3IgWDg2X1dJTjMyLgorCShGRklfSU5JVF9UUkFNUE9MSU5FX1RISVNDQUxMKTogRml4IGRpc3BsYWNlbWVudC4KKwogMjAwOS0xMi0xMSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KIAogCSogc3JjL3NwYXJjL2ZmaS5jIChmZmlfY2xvc3VyZV9zcGFyY19pbm5lcl92OSk6IFByb3Blcmx5IGFsaWduICdsb25nCkBAIC0zMjIsNiArMTIzMiwxMSBAQAogCSogbWFuL01ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgogCSogdGVzdHN1aXRlL01ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgogCisyMDExLTA4LTIyICBKYXNwZXIgTGlldmlzc2UgQWRyaWFhbnNlIDxqYXNwZXJAb3BlbmJzZC5vcmc+CisKKwkqIGNvbmZpZ3VyZS5hYzogQWRkIE9wZW5CU0QvaHBwYSBhbmQgT3BlbkJTRC9wb3dlcnBjIHN1cHBvcnQuCisJKiBjb25maWd1cmU6IFJlYnVpbHQuCisKIDIwMDktMDctMzAgIFJhbGYgV2lsZGVuaHVlcyAgPFJhbGYuV2lsZGVuaHVlc0BnbXguZGU+CiAKIAkqIGNvbmZpZ3VyZS5hYyAoX0FDX0FSR19WQVJfUFJFQ0lPVVMpOiBVc2UgbTRfcmVuYW1lX2ZvcmNlLgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9DaGFuZ2VMb2cubGliZmZpIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9DaGFuZ2VMb2cubGliZmZpCmluZGV4IDUyNzJmMzMuLmYzZWU4YjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvQ2hhbmdlTG9nLmxpYmZmaQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0NoYW5nZUxvZy5saWJmZmkKQEAgLTEsMzUgKzEsNiBAQAotMjAxMC0wMS0xNSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQHJlZGhhdC5jb20+CisyMDExLTAyLTA4ICBBbmRyZWFzIFRvYmxlciAgPGFuZHJlYXN0QGZnem5ldC5jaD4KIAotCSogUkVBRE1FOiBBZGQgbm90ZXMgb24gYnVpbGRpbmcgd2l0aCBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLQotMjAxMC0wMS0xNSAgRGFuaWVsIFdpdHRlICA8ZHdpdHRlQG1vemlsbGEuY29tPgotCi0JKiBtc3ZjYy5zaDogTmV3IGZpbGUuCi0KLQkqIHNyYy94ODYvd2luMzIuUzogUG9ydCBhc3NlbWJseSByb3V0aW5lcyB0byBNU1ZDIGFuZCAjaWZkZWYuCi0JKiBzcmMveDg2L2ZmaS5jOiBUd2VhayBmdW5jdGlvbiBkZWNsYXJhdGlvbiBhbmQgcmVtb3ZlIGV4Y2VzcwotCXBhcmVucy4KLQkqIGluY2x1ZGUvZmZpLmguaW46IEFkZCBfX2RlY2xzcGVjKGFsaWduKDgpKSB0byB0eXBlZGVmIHN0cnVjdAotCWZmaV9jbG9zdXJlLgotCi0JKiBzcmMveDg2L2ZmaS5jOiBNZXJnZSBmZmlfY2FsbF9TWVNWIGFuZCBmZmlfY2FsbF9TVERDQUxMIGludG8gbmV3Ci0JZnVuY3Rpb24gZmZpX2NhbGxfd2luMzIgb24gWDg2X1dJTjMyLgotCSogc3JjL3g4Ni93aW4zMi5TIChmZmlfY2FsbF9TWVNWKTogUmVuYW1lIHRvIGZmaV9jYWxsX3dpbjMyLgotCShmZmlfY2FsbF9TVERDQUxMKTogUmVtb3ZlLgotCi0JKiBzcmMvcHJlcF9jaWYuYyAoZmZpX3ByZXBfY2lmKTogTW92ZSBzdGFjayBzcGFjZSBhbGxvY2F0aW9uIGNvZGUKLQl0byBmZmlfcHJlcF9jaWZfbWFjaGRlcCBmb3IgeDg2LgotCSogc3JjL3g4Ni9mZmkuYyAoZmZpX3ByZXBfY2lmX21hY2hkZXApOiBUbyBoZXJlLgotCi0yMDEwLTAxLTE1ICBPbGl2ZXIgS2lkZGxlICA8b2tpZGRsZUB5YWhvby5jby51az4KLQotCSogc3JjL3g4Ni9mZml0YXJnZXQuaCAoZmZpX2FiaSk6IENoZWNrIGZvciBfX2kzODYgYW5kIF9fYW1kNjQgZm9yCi0JU3VuIFN0dWRpbyBjb21waWxlciBjb21wYXRpYmlsaXR5LiAKLQotMjAxMC0wMS0xMiAgQ29ucmFkIElyd2luIDxjb25yYWQuaXJ3aW5AZ21haWwuY29tPgotCi0JKiBkb2MvbGliZmZpLnRleGk6IEFkZCBjbG9zdXJlIGV4YW1wbGUuCi0JKiBkb2MvbGliZmZpLmluZm86IFJlYnVpbHQuCisJKiB0ZXN0c3VpdGUvbGliL2xpYmZmaS5leHA6IFR3ZWFrIGZvciBzdGFuZC1hbG9uZSBtb2RlLgogCiAyMDA5LTEyLTI1ICBTYW11bGkgU3VvbWluZW4gIDxzc3VvbWluZW5AZ2VudG9vLm9yZz4KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9MSUNFTlNFIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9MSUNFTlNFCmluZGV4IGVjMmZkNjkuLmFhNjAzNDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvTElDRU5TRQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0xJQ0VOU0UKQEAgLTEsNCArMSw0IEBACi1saWJmZmkgLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwOSAgQW50aG9ueSBHcmVlbiwgUmVkIEhhdCwgSW5jIGFuZCBvdGhlcnMuICAKK2xpYmZmaSAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDEyICBBbnRob255IEdyZWVuLCBSZWQgSGF0LCBJbmMgYW5kIG90aGVycy4KIFNlZSBzb3VyY2UgZmlsZXMgZm9yIGRldGFpbHMuCiAKIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtOSw4ICs5LDggQEAKIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogCi1UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQoraW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAKIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvTWFrZWZpbGUuYW0gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL01ha2VmaWxlLmFtCmluZGV4IGY0N2RkMWEuLjRhODU1ZDcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvTWFrZWZpbGUuYW0KKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9NYWtlZmlsZS5hbQpAQCAtMTAsMjkgKzEwLDMyIEBACiAJc3JjL2F2cjMyL2ZmaS5jIHNyYy9hdnIzMi9zeXN2LlMgc3JjL2F2cjMyL2ZmaXRhcmdldC5oIFwKIAlzcmMvY3Jpcy9mZmkuYyBzcmMvY3Jpcy9zeXN2LlMgc3JjL2NyaXMvZmZpdGFyZ2V0LmggXAogCXNyYy9pYTY0L2ZmaS5jIHNyYy9pYTY0L2ZmaXRhcmdldC5oIHNyYy9pYTY0L2lhNjRfZmxhZ3MuaCBcCi0Jc3JjL2lhNjQvdW5peC5TIFwKLQlzcmMvbWlwcy9mZmkuYyBzcmMvbWlwcy9uMzIuUyBzcmMvbWlwcy9vMzIuUyBcCi0Jc3JjL21pcHMvZmZpdGFyZ2V0LmggXAotCXNyYy9tMzJyL2ZmaS5jIHNyYy9tMzJyL3N5c3YuUyBzcmMvbTMyci9mZml0YXJnZXQuaCBcCi0Jc3JjL202OGsvZmZpLmMgc3JjL202OGsvc3lzdi5TIHNyYy9tNjhrL2ZmaXRhcmdldC5oIFwKLQlzcmMvcG93ZXJwYy9mZmkuYyBzcmMvcG93ZXJwYy9zeXN2LlMgXAorCXNyYy9pYTY0L3VuaXguUyBzcmMvbWlwcy9mZmkuYyBzcmMvbWlwcy9uMzIuUyBzcmMvbWlwcy9vMzIuUyBcCisJc3JjL21pcHMvZmZpdGFyZ2V0Lmggc3JjL20zMnIvZmZpLmMgc3JjL20zMnIvc3lzdi5TIFwKKwlzcmMvbTMyci9mZml0YXJnZXQuaCBzcmMvbTY4ay9mZmkuYyBzcmMvbTY4ay9zeXN2LlMgXAorCXNyYy9tNjhrL2ZmaXRhcmdldC5oIHNyYy9wb3dlcnBjL2ZmaS5jIHNyYy9wb3dlcnBjL3N5c3YuUyBcCiAJc3JjL3Bvd2VycGMvbGludXg2NC5TIHNyYy9wb3dlcnBjL2xpbnV4NjRfY2xvc3VyZS5TIFwKLQlzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TIHNyYy9wb3dlcnBjL2FzbS5oIFwKLQlzcmMvcG93ZXJwYy9haXguUyBzcmMvcG93ZXJwYy9kYXJ3aW4uUyBcCi0Jc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUuUyBzcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TIFwKLQlzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMgc3JjL3Bvd2VycGMvZmZpdGFyZ2V0LmggXAotCXNyYy9zMzkwL2ZmaS5jIHNyYy9zMzkwL3N5c3YuUyBzcmMvczM5MC9mZml0YXJnZXQuaCBcCi0Jc3JjL3NoL2ZmaS5jIHNyYy9zaC9zeXN2LlMgc3JjL3NoL2ZmaXRhcmdldC5oIFwKLQlzcmMvc2g2NC9mZmkuYyBzcmMvc2g2NC9zeXN2LlMgc3JjL3NoNjQvZmZpdGFyZ2V0LmggXAotCXNyYy9zcGFyYy92OC5TIHNyYy9zcGFyYy92OS5TIHNyYy9zcGFyYy9mZml0YXJnZXQuaCBcCi0Jc3JjL3NwYXJjL2ZmaS5jIHNyYy94ODYvZGFyd2luNjQuUyBcCi0Jc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3N5c3YuUyBzcmMveDg2L3dpbjMyLlMgc3JjL3g4Ni93aW42NC5TIFwKLQlzcmMveDg2L2Rhcndpbi5TIHNyYy94ODYvZnJlZWJzZC5TIFwKLQlzcmMveDg2L2ZmaTY0LmMgc3JjL3g4Ni91bml4NjQuUyBzcmMveDg2L2ZmaXRhcmdldC5oIFwKLQlzcmMvcGEvZmZpdGFyZ2V0Lmggc3JjL3BhL2ZmaS5jIHNyYy9wYS9saW51eC5TIHNyYy9wYS9ocHV4MzIuUyBcCi0Jc3JjL2Zydi9mZmkuYyBzcmMvZnJ2L2VhYmkuUyBzcmMvZnJ2L2ZmaXRhcmdldC5oIHNyYy9kbG1hbGxvYy5jIFwKLQlsaWJ0b29sLXZlcnNpb24gQ2hhbmdlTG9nLmxpYmZmaSBtNC9saWJ0b29sLm00IFwKLQltNC9sdH5vYnNvbGV0ZS5tNCBtNC9sdG9wdGlvbnMubTQgbTQvbHRzdWdhci5tNCBtNC9sdHZlcnNpb24ubTQKKwlzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TIHNyYy9wb3dlcnBjL2FzbS5oIHNyYy9wb3dlcnBjL2FpeC5TIFwKKwlzcmMvcG93ZXJwYy9kYXJ3aW4uUyBzcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TIFwKKwlzcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TIHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYyBcCisJc3JjL3Bvd2VycGMvZmZpdGFyZ2V0Lmggc3JjL3MzOTAvZmZpLmMgc3JjL3MzOTAvc3lzdi5TIFwKKwlzcmMvczM5MC9mZml0YXJnZXQuaCBzcmMvc2gvZmZpLmMgc3JjL3NoL3N5c3YuUwlcCisJc3JjL3NoL2ZmaXRhcmdldC5oIHNyYy9zaDY0L2ZmaS5jIHNyYy9zaDY0L3N5c3YuUyBcCisJc3JjL3NoNjQvZmZpdGFyZ2V0Lmggc3JjL3NwYXJjL3Y4LlMgc3JjL3NwYXJjL3Y5LlMgXAorCXNyYy9zcGFyYy9mZml0YXJnZXQuaCBzcmMvc3BhcmMvZmZpLmMgc3JjL3g4Ni9kYXJ3aW42NC5TIFwKKwlzcmMveDg2L2ZmaS5jIHNyYy94ODYvc3lzdi5TIHNyYy94ODYvd2luMzIuUyBzcmMveDg2L2Rhcndpbi5TIFwKKwlzcmMveDg2L3dpbjY0LlMgc3JjL3g4Ni9mcmVlYnNkLlMgc3JjL3g4Ni9mZmk2NC5jIFwKKwlzcmMveDg2L3VuaXg2NC5TIHNyYy94ODYvZmZpdGFyZ2V0Lmggc3JjL3BhL2ZmaXRhcmdldC5oCVwKKwlzcmMvcGEvZmZpLmMgc3JjL3BhL2xpbnV4LlMgc3JjL3BhL2hwdXgzMi5TIHNyYy9mcnYvZmZpLmMgXAorCXNyYy9mcnYvZWFiaS5TIHNyYy9mcnYvZmZpdGFyZ2V0Lmggc3JjL2RsbWFsbG9jLmMgXAorCXNyYy9tb3hpZS9mZmkuYyBzcmMvbW94aWUvZWFiaS5TIGxpYnRvb2wtdmVyc2lvbiBcCisJQ2hhbmdlTG9nLmxpYmZmaSBtNC9saWJ0b29sLm00IG00L2x0fm9ic29sZXRlLm00IFwKKwltNC9sdG9wdGlvbnMubTQgbTQvbHRzdWdhci5tNCBtNC9sdHZlcnNpb24ubTQgXAorCW00L2x0dmVyc2lvbi5tNCBzcmMvYXJtL2dlbnRyYW1wLnNoIHNyYy9kZWJ1Zy5jIFwKKwltc3ZjYy5zaCBnZW5lcmF0ZS1pb3Mtc291cmNlLWFuZC1oZWFkZXJzLnB5IFwKKwlnZW5lcmF0ZS1vc3gtc291cmNlLWFuZC1oZWFkZXJzLnB5IFwKKyAgICAgICAgbGliZmZpLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogXAorCXNyYy9hcm0vdHJhbXBvbGluZS5TCiAKIGluZm9fVEVYSU5GT1MgPSBkb2MvbGliZmZpLnRleGkKIApAQCAtNjksNiArNzIsNyBAQAogCSJleGVjX3ByZWZpeD0kKGV4ZWNfcHJlZml4KSIgXAogCSJpbmZvZGlyPSQoaW5mb2RpcikiIFwKIAkibGliZGlyPSQobGliZGlyKSIgXAorCSJtYW5kaXI9JChtYW5kaXIpIiBcCiAJInByZWZpeD0kKHByZWZpeCkiIFwKIAkiQVI9JChBUikiIFwKIAkiQVM9JChBUykiIFwKQEAgLTg2LDcgKzkwLDcgQEAKIGxpYl9MVExJQlJBUklFUyA9IGxpYmZmaS5sYQogbm9pbnN0X0xUTElCUkFSSUVTID0gbGliZmZpX2NvbnZlbmllbmNlLmxhCiAKLWxpYmZmaV9sYV9TT1VSQ0VTID0gc3JjL2RlYnVnLmMgc3JjL3ByZXBfY2lmLmMgc3JjL3R5cGVzLmMgXAorbGliZmZpX2xhX1NPVVJDRVMgPSBzcmMvcHJlcF9jaWYuYyBzcmMvdHlwZXMuYyBcCiAJCXNyYy9yYXdfYXBpLmMgc3JjL2phdmFfcmF3X2FwaS5jIHNyYy9jbG9zdXJlcy5jCiAKIHBrZ2NvbmZpZ2RpciA9ICQobGliZGlyKS9wa2djb25maWcKQEAgLTk0LDYgKzk4LDEwIEBACiAKIG5vZGlzdF9saWJmZmlfbGFfU09VUkNFUyA9CiAKK2lmIEZGSV9ERUJVRworbm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTICs9IHNyYy9kZWJ1Zy5jCitlbmRpZgorCiBpZiBNSVBTCiBub2Rpc3RfbGliZmZpX2xhX1NPVVJDRVMgKz0gc3JjL21pcHMvZmZpLmMgc3JjL21pcHMvbzMyLlMgc3JjL21pcHMvbjMyLlMKIGVuZGlmCkBAIC0xNDEsNiArMTQ5LDkgQEAKIGVuZGlmCiBpZiBBUk0KIG5vZGlzdF9saWJmZmlfbGFfU09VUkNFUyArPSBzcmMvYXJtL3N5c3YuUyBzcmMvYXJtL2ZmaS5jCitpZiBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFCitub2Rpc3RfbGliZmZpX2xhX1NPVVJDRVMgKz0gc3JjL2FybS90cmFtcG9saW5lLlMKK2VuZGlmCiBlbmRpZgogaWYgQVZSMzIKIG5vZGlzdF9saWJmZmlfbGFfU09VUkNFUyArPSBzcmMvYXZyMzIvc3lzdi5TIHNyYy9hdnIzMi9mZmkuYwpAQCAtMTUxLDYgKzE2Miw5IEBACiBpZiBGUlYKIG5vZGlzdF9saWJmZmlfbGFfU09VUkNFUyArPSBzcmMvZnJ2L2VhYmkuUyBzcmMvZnJ2L2ZmaS5jCiBlbmRpZgoraWYgTU9YSUUKK25vZGlzdF9saWJmZmlfbGFfU09VUkNFUyArPSBzcmMvbW94aWUvZWFiaS5TIHNyYy9tb3hpZS9mZmkuYworZW5kaWYKIGlmIFMzOTAKIG5vZGlzdF9saWJmZmlfbGFfU09VUkNFUyArPSBzcmMvczM5MC9zeXN2LlMgc3JjL3MzOTAvZmZpLmMKIGVuZGlmCkBAIC0xNzMsMTIgKzE4NywxNyBAQAogbGliZmZpX2NvbnZlbmllbmNlX2xhX1NPVVJDRVMgPSAkKGxpYmZmaV9sYV9TT1VSQ0VTKQogbm9kaXN0X2xpYmZmaV9jb252ZW5pZW5jZV9sYV9TT1VSQ0VTID0gJChub2Rpc3RfbGliZmZpX2xhX1NPVVJDRVMpCiAKLUFNX0NGTEFHUyA9IC1XYWxsIC1nIC1mZXhjZXB0aW9ucworQU1fQ0ZMQUdTID0gLWcKK2lmIEZGSV9ERUJVRworIyBCdWlsZCBkZWJ1Zy4gRGVmaW5lIEZGSV9ERUJVRyBvbiB0aGUgY29tbWFuZGxpbmUgc28gdGhhdCwgd2hlbiBidWlsZGluZyB3aXRoCisjIE1TVkMsIGl0IGNhbiBsaW5rIGFnYWluc3QgdGhlIGRlYnVnIENSVC4KK0FNX0NGTEFHUyArPSAtREZGSV9ERUJVRworZW5kaWYKIAogbGliZmZpX2xhX0xERkxBR1MgPSAtdmVyc2lvbi1pbmZvIGBncmVwIC12ICdeXCMnICQoc3JjZGlyKS9saWJ0b29sLXZlcnNpb25gICQoTFRMREZMQUdTKSAkKEFNX0xUTERGTEFHUykKIAotQU1fQ1BQRkxBR1MgPSAtSS4gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUgLUlpbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKS9zcmMKLUFNX0NDQVNGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpCitBTV9DUFBGTEFHUyA9IC1JLiAtSSQodG9wX3NyY2RpcikvaW5jbHVkZSAtSWluY2x1ZGUgLUkkKHRvcF9zcmNkaXIpL3NyYyAtREZGSV9CVUlMRElORworQU1fQ0NBU0ZMQUdTID0gJChBTV9DUFBGTEFHUykgLWcKIAogIyBObyBpbnN0YWxsLWh0bWwgb3IgaW5zdGFsbC1wZGYgc3VwcG9ydCBpbiBhdXRvbWFrZSB5ZXQKIC5QSE9OWTogaW5zdGFsbC1odG1sIGluc3RhbGwtcGRmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL01ha2VmaWxlLmluIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9NYWtlZmlsZS5pbgppbmRleCA0OWFmY2MxLi40M2VkODU2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL01ha2VmaWxlLmluCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvTWFrZWZpbGUuaW4KQEAgLTEsOSArMSw5IEBACi0jIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjExIGZyb20gTWFrZWZpbGUuYW0uCisjIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjExLjMgZnJvbSBNYWtlZmlsZS5hbS4KICMgQGNvbmZpZ3VyZV9pbnB1dEAKIAogIyBDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsCi0jIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSMgSW5jLgorIyAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgogIyBUaGlzIE1ha2VmaWxlLmluIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgpAQCAtMzYsMzggKzM2LDQ1IEBACiBidWlsZF90cmlwbGV0ID0gQGJ1aWxkQAogaG9zdF90cmlwbGV0ID0gQGhvc3RACiB0YXJnZXRfdHJpcGxldCA9IEB0YXJnZXRACi1ATUlQU19UUlVFQGFtX19hcHBlbmRfMSA9IHNyYy9taXBzL2ZmaS5jIHNyYy9taXBzL28zMi5TIHNyYy9taXBzL24zMi5TCi1AWDg2X1RSVUVAYW1fX2FwcGVuZF8yID0gc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3N5c3YuUwotQFg4Nl9GUkVFQlNEX1RSVUVAYW1fX2FwcGVuZF8zID0gc3JjL3g4Ni9mZmkuYyBzcmMveDg2L2ZyZWVic2QuUwotQFg4Nl9XSU4zMl9UUlVFQGFtX19hcHBlbmRfNCA9IHNyYy94ODYvZmZpLmMgc3JjL3g4Ni93aW4zMi5TCi1AWDg2X1dJTjY0X1RSVUVAYW1fX2FwcGVuZF81ID0gc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3dpbjY0LlMKLUBYODZfREFSV0lOX1RSVUVAYW1fX2FwcGVuZF82ID0gc3JjL3g4Ni9mZmkuYyBzcmMveDg2L2Rhcndpbi5TIHNyYy94ODYvZmZpNjQuYyBzcmMveDg2L2RhcndpbjY0LlMKLUBTUEFSQ19UUlVFQGFtX19hcHBlbmRfNyA9IHNyYy9zcGFyYy9mZmkuYyBzcmMvc3BhcmMvdjguUyBzcmMvc3BhcmMvdjkuUwotQEFMUEhBX1RSVUVAYW1fX2FwcGVuZF84ID0gc3JjL2FscGhhL2ZmaS5jIHNyYy9hbHBoYS9vc2YuUwotQElBNjRfVFJVRUBhbV9fYXBwZW5kXzkgPSBzcmMvaWE2NC9mZmkuYyBzcmMvaWE2NC91bml4LlMKLUBNMzJSX1RSVUVAYW1fX2FwcGVuZF8xMCA9IHNyYy9tMzJyL3N5c3YuUyBzcmMvbTMyci9mZmkuYwotQE02OEtfVFJVRUBhbV9fYXBwZW5kXzExID0gc3JjL202OGsvZmZpLmMgc3JjL202OGsvc3lzdi5TCi1AUE9XRVJQQ19UUlVFQGFtX19hcHBlbmRfMTIgPSBzcmMvcG93ZXJwYy9mZmkuYyBzcmMvcG93ZXJwYy9zeXN2LlMgc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUyBzcmMvcG93ZXJwYy9saW51eDY0LlMgc3JjL3Bvd2VycGMvbGludXg2NF9jbG9zdXJlLlMKLUBQT1dFUlBDX0FJWF9UUlVFQGFtX19hcHBlbmRfMTMgPSBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMgc3JjL3Bvd2VycGMvYWl4LlMgc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUuUwotQFBPV0VSUENfREFSV0lOX1RSVUVAYW1fX2FwcGVuZF8xNCA9IHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYyBzcmMvcG93ZXJwYy9kYXJ3aW4uUyBzcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TCi1AUE9XRVJQQ19GUkVFQlNEX1RSVUVAYW1fX2FwcGVuZF8xNSA9IHNyYy9wb3dlcnBjL2ZmaS5jIHNyYy9wb3dlcnBjL3N5c3YuUyBzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TCi1AQVJNX1RSVUVAYW1fX2FwcGVuZF8xNiA9IHNyYy9hcm0vc3lzdi5TIHNyYy9hcm0vZmZpLmMKLUBBVlIzMl9UUlVFQGFtX19hcHBlbmRfMTcgPSBzcmMvYXZyMzIvc3lzdi5TIHNyYy9hdnIzMi9mZmkuYwotQExJQkZGSV9DUklTX1RSVUVAYW1fX2FwcGVuZF8xOCA9IHNyYy9jcmlzL3N5c3YuUyBzcmMvY3Jpcy9mZmkuYwotQEZSVl9UUlVFQGFtX19hcHBlbmRfMTkgPSBzcmMvZnJ2L2VhYmkuUyBzcmMvZnJ2L2ZmaS5jCi1AUzM5MF9UUlVFQGFtX19hcHBlbmRfMjAgPSBzcmMvczM5MC9zeXN2LlMgc3JjL3MzOTAvZmZpLmMKLUBYODZfNjRfVFJVRUBhbV9fYXBwZW5kXzIxID0gc3JjL3g4Ni9mZmk2NC5jIHNyYy94ODYvdW5peDY0LlMgc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3N5c3YuUwotQFNIX1RSVUVAYW1fX2FwcGVuZF8yMiA9IHNyYy9zaC9zeXN2LlMgc3JjL3NoL2ZmaS5jCi1AU0g2NF9UUlVFQGFtX19hcHBlbmRfMjMgPSBzcmMvc2g2NC9zeXN2LlMgc3JjL3NoNjQvZmZpLmMKLUBQQV9MSU5VWF9UUlVFQGFtX19hcHBlbmRfMjQgPSBzcmMvcGEvbGludXguUyBzcmMvcGEvZmZpLmMKLUBQQV9IUFVYX1RSVUVAYW1fX2FwcGVuZF8yNSA9IHNyYy9wYS9ocHV4MzIuUyBzcmMvcGEvZmZpLmMKK0BGRklfREVCVUdfVFJVRUBhbV9fYXBwZW5kXzEgPSBzcmMvZGVidWcuYworQE1JUFNfVFJVRUBhbV9fYXBwZW5kXzIgPSBzcmMvbWlwcy9mZmkuYyBzcmMvbWlwcy9vMzIuUyBzcmMvbWlwcy9uMzIuUworQFg4Nl9UUlVFQGFtX19hcHBlbmRfMyA9IHNyYy94ODYvZmZpLmMgc3JjL3g4Ni9zeXN2LlMKK0BYODZfRlJFRUJTRF9UUlVFQGFtX19hcHBlbmRfNCA9IHNyYy94ODYvZmZpLmMgc3JjL3g4Ni9mcmVlYnNkLlMKK0BYODZfV0lOMzJfVFJVRUBhbV9fYXBwZW5kXzUgPSBzcmMveDg2L2ZmaS5jIHNyYy94ODYvd2luMzIuUworQFg4Nl9XSU42NF9UUlVFQGFtX19hcHBlbmRfNiA9IHNyYy94ODYvZmZpLmMgc3JjL3g4Ni93aW42NC5TCitAWDg2X0RBUldJTl9UUlVFQGFtX19hcHBlbmRfNyA9IHNyYy94ODYvZmZpLmMgc3JjL3g4Ni9kYXJ3aW4uUyBzcmMveDg2L2ZmaTY0LmMgc3JjL3g4Ni9kYXJ3aW42NC5TCitAU1BBUkNfVFJVRUBhbV9fYXBwZW5kXzggPSBzcmMvc3BhcmMvZmZpLmMgc3JjL3NwYXJjL3Y4LlMgc3JjL3NwYXJjL3Y5LlMKK0BBTFBIQV9UUlVFQGFtX19hcHBlbmRfOSA9IHNyYy9hbHBoYS9mZmkuYyBzcmMvYWxwaGEvb3NmLlMKK0BJQTY0X1RSVUVAYW1fX2FwcGVuZF8xMCA9IHNyYy9pYTY0L2ZmaS5jIHNyYy9pYTY0L3VuaXguUworQE0zMlJfVFJVRUBhbV9fYXBwZW5kXzExID0gc3JjL20zMnIvc3lzdi5TIHNyYy9tMzJyL2ZmaS5jCitATTY4S19UUlVFQGFtX19hcHBlbmRfMTIgPSBzcmMvbTY4ay9mZmkuYyBzcmMvbTY4ay9zeXN2LlMKK0BQT1dFUlBDX1RSVUVAYW1fX2FwcGVuZF8xMyA9IHNyYy9wb3dlcnBjL2ZmaS5jIHNyYy9wb3dlcnBjL3N5c3YuUyBzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TIHNyYy9wb3dlcnBjL2xpbnV4NjQuUyBzcmMvcG93ZXJwYy9saW51eDY0X2Nsb3N1cmUuUworQFBPV0VSUENfQUlYX1RSVUVAYW1fX2FwcGVuZF8xNCA9IHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYyBzcmMvcG93ZXJwYy9haXguUyBzcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TCitAUE9XRVJQQ19EQVJXSU5fVFJVRUBhbV9fYXBwZW5kXzE1ID0gc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jIHNyYy9wb3dlcnBjL2Rhcndpbi5TIHNyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlMKK0BQT1dFUlBDX0ZSRUVCU0RfVFJVRUBhbV9fYXBwZW5kXzE2ID0gc3JjL3Bvd2VycGMvZmZpLmMgc3JjL3Bvd2VycGMvc3lzdi5TIHNyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMKK0BBUk1fVFJVRUBhbV9fYXBwZW5kXzE3ID0gc3JjL2FybS9zeXN2LlMgc3JjL2FybS9mZmkuYworQEFSTV9UUlVFQEBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFX1RSVUVAYW1fX2FwcGVuZF8xOCA9IHNyYy9hcm0vdHJhbXBvbGluZS5TCitAQVZSMzJfVFJVRUBhbV9fYXBwZW5kXzE5ID0gc3JjL2F2cjMyL3N5c3YuUyBzcmMvYXZyMzIvZmZpLmMKK0BMSUJGRklfQ1JJU19UUlVFQGFtX19hcHBlbmRfMjAgPSBzcmMvY3Jpcy9zeXN2LlMgc3JjL2NyaXMvZmZpLmMKK0BGUlZfVFJVRUBhbV9fYXBwZW5kXzIxID0gc3JjL2Zydi9lYWJpLlMgc3JjL2Zydi9mZmkuYworQE1PWElFX1RSVUVAYW1fX2FwcGVuZF8yMiA9IHNyYy9tb3hpZS9lYWJpLlMgc3JjL21veGllL2ZmaS5jCitAUzM5MF9UUlVFQGFtX19hcHBlbmRfMjMgPSBzcmMvczM5MC9zeXN2LlMgc3JjL3MzOTAvZmZpLmMKK0BYODZfNjRfVFJVRUBhbV9fYXBwZW5kXzI0ID0gc3JjL3g4Ni9mZmk2NC5jIHNyYy94ODYvdW5peDY0LlMgc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3N5c3YuUworQFNIX1RSVUVAYW1fX2FwcGVuZF8yNSA9IHNyYy9zaC9zeXN2LlMgc3JjL3NoL2ZmaS5jCitAU0g2NF9UUlVFQGFtX19hcHBlbmRfMjYgPSBzcmMvc2g2NC9zeXN2LlMgc3JjL3NoNjQvZmZpLmMKK0BQQV9MSU5VWF9UUlVFQGFtX19hcHBlbmRfMjcgPSBzcmMvcGEvbGludXguUyBzcmMvcGEvZmZpLmMKK0BQQV9IUFVYX1RSVUVAYW1fX2FwcGVuZF8yOCA9IHNyYy9wYS9ocHV4MzIuUyBzcmMvcGEvZmZpLmMKKyMgQnVpbGQgZGVidWcuIERlZmluZSBGRklfREVCVUcgb24gdGhlIGNvbW1hbmRsaW5lIHNvIHRoYXQsIHdoZW4gYnVpbGRpbmcgd2l0aAorIyBNU1ZDLCBpdCBjYW4gbGluayBhZ2FpbnN0IHRoZSBkZWJ1ZyBDUlQuCitARkZJX0RFQlVHX1RSVUVAYW1fX2FwcGVuZF8yOSA9IC1ERkZJX0RFQlVHCiBzdWJkaXIgPSAuCiBESVNUX0NPTU1PTiA9IFJFQURNRSAkKGFtX19jb25maWd1cmVfZGVwcykgJChzcmNkaXIpL01ha2VmaWxlLmFtIFwKIAkkKHNyY2RpcikvTWFrZWZpbGUuaW4gJChzcmNkaXIpL2RvYy9zdGFtcC12dGkgXAogCSQoc3JjZGlyKS9kb2MvdmVyc2lvbi50ZXhpICQoc3JjZGlyKS9mZmljb25maWcuaC5pbiBcCi0JJChzcmNkaXIpL2xpYmZmaS5wYy5pbiAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZSBDaGFuZ2VMb2cgXAotCWNvbXBpbGUgY29uZmlnLmd1ZXNzIGNvbmZpZy5zdWIgZGVwY29tcCBpbnN0YWxsLXNoIGx0bWFpbi5zaCBcCi0JbWRhdGUtc2ggbWlzc2luZyB0ZXhpbmZvLnRleAorCSQoc3JjZGlyKS9mZmljb25maWcucHkuaW4gJChzcmNkaXIpL2xpYmZmaS5wYy5pbiBcCisJJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUgQ2hhbmdlTG9nIGNvbXBpbGUgY29uZmlnLmd1ZXNzIFwKKwljb25maWcuc3ViIGRlcGNvbXAgaW5zdGFsbC1zaCBsdG1haW4uc2ggbWRhdGUtc2ggbWlzc2luZyBcCisJdGV4aW5mby50ZXgKIEFDTE9DQUxfTTQgPSAkKHRvcF9zcmNkaXIpL2FjbG9jYWwubTQKIGFtX19hY2xvY2FsX200X2RlcHMgPSAkKHRvcF9zcmNkaXIpL2FjaW5jbHVkZS5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKQEAgLTc3LDcgKzg0LDcgQEAKICBjb25maWd1cmUubGluZW5vIGNvbmZpZy5zdGF0dXMubGluZW5vCiBta2luc3RhbGxkaXJzID0gJChpbnN0YWxsX3NoKSAtZAogQ09ORklHX0hFQURFUiA9IGZmaWNvbmZpZy5oCi1DT05GSUdfQ0xFQU5fRklMRVMgPSBsaWJmZmkucGMKK0NPTkZJR19DTEVBTl9GSUxFUyA9IGxpYmZmaS5wYyBmZmljb25maWcucHkKIENPTkZJR19DTEVBTl9WUEFUSF9GSUxFUyA9CiBhbV9fdnBhdGhfYWRqX3NldHVwID0gc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3N8LnwufGcnYDsKIGFtX192cGF0aF9hZGogPSBjYXNlICQkcCBpbiBcCkBAIC0xMDAsNTEgKzEwNyw2MCBAQAogYW1fX2Jhc2VfbGlzdCA9IFwKICAgc2VkICckJCFOOyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjskJCFOO3MvXG4vIC9nJyB8IFwKICAgc2VkICckJCFOOyQkIU47JCQhTjskJCFOO3MvXG4vIC9nJworYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpciA9IHsgXAorICB0ZXN0IC16ICIkJGZpbGVzIiBcCisgICAgfHwgeyB0ZXN0ICEgLWQgIiQkZGlyIiAmJiB0ZXN0ICEgLWYgIiQkZGlyIiAmJiB0ZXN0ICEgLXIgIiQkZGlyIjsgfSBcCisgICAgfHwgeyBlY2hvICIgKCBjZCAnJCRkaXInICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAorICAgICAgICAgJChhbV9fY2QpICIkJGRpciIgJiYgcm0gLWYgJCRmaWxlczsgfTsgXAorICB9CiBhbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQobGliZGlyKSIgIiQoREVTVERJUikkKGluZm9kaXIpIiBcCiAJIiQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikiCiBMVExJQlJBUklFUyA9ICQobGliX0xUTElCUkFSSUVTKSAkKG5vaW5zdF9MVExJQlJBUklFUykKIGxpYmZmaV9sYV9MSUJBREQgPQogYW1fX2RpcnN0YW1wID0gJChhbV9fbGVhZGluZ19kb3QpZGlyc3RhbXAKLWFtX2xpYmZmaV9sYV9PQkpFQ1RTID0gc3JjL2RlYnVnLmxvIHNyYy9wcmVwX2NpZi5sbyBzcmMvdHlwZXMubG8gXAotCXNyYy9yYXdfYXBpLmxvIHNyYy9qYXZhX3Jhd19hcGkubG8gc3JjL2Nsb3N1cmVzLmxvCi1ATUlQU19UUlVFQGFtX19vYmplY3RzXzEgPSBzcmMvbWlwcy9mZmkubG8gc3JjL21pcHMvbzMyLmxvIFwKK2FtX2xpYmZmaV9sYV9PQkpFQ1RTID0gc3JjL3ByZXBfY2lmLmxvIHNyYy90eXBlcy5sbyBzcmMvcmF3X2FwaS5sbyBcCisJc3JjL2phdmFfcmF3X2FwaS5sbyBzcmMvY2xvc3VyZXMubG8KK0BGRklfREVCVUdfVFJVRUBhbV9fb2JqZWN0c18xID0gc3JjL2RlYnVnLmxvCitATUlQU19UUlVFQGFtX19vYmplY3RzXzIgPSBzcmMvbWlwcy9mZmkubG8gc3JjL21pcHMvbzMyLmxvIFwKIEBNSVBTX1RSVUVACXNyYy9taXBzL24zMi5sbwotQFg4Nl9UUlVFQGFtX19vYmplY3RzXzIgPSBzcmMveDg2L2ZmaS5sbyBzcmMveDg2L3N5c3YubG8KLUBYODZfRlJFRUJTRF9UUlVFQGFtX19vYmplY3RzXzMgPSBzcmMveDg2L2ZmaS5sbyBzcmMveDg2L2ZyZWVic2QubG8KLUBYODZfV0lOMzJfVFJVRUBhbV9fb2JqZWN0c180ID0gc3JjL3g4Ni9mZmkubG8gc3JjL3g4Ni93aW4zMi5sbwotQFg4Nl9XSU42NF9UUlVFQGFtX19vYmplY3RzXzUgPSBzcmMveDg2L2ZmaS5sbyBzcmMveDg2L3dpbjY0LmxvCi1AWDg2X0RBUldJTl9UUlVFQGFtX19vYmplY3RzXzYgPSBzcmMveDg2L2ZmaS5sbyBzcmMveDg2L2Rhcndpbi5sbyBcCitAWDg2X1RSVUVAYW1fX29iamVjdHNfMyA9IHNyYy94ODYvZmZpLmxvIHNyYy94ODYvc3lzdi5sbworQFg4Nl9GUkVFQlNEX1RSVUVAYW1fX29iamVjdHNfNCA9IHNyYy94ODYvZmZpLmxvIHNyYy94ODYvZnJlZWJzZC5sbworQFg4Nl9XSU4zMl9UUlVFQGFtX19vYmplY3RzXzUgPSBzcmMveDg2L2ZmaS5sbyBzcmMveDg2L3dpbjMyLmxvCitAWDg2X1dJTjY0X1RSVUVAYW1fX29iamVjdHNfNiA9IHNyYy94ODYvZmZpLmxvIHNyYy94ODYvd2luNjQubG8KK0BYODZfREFSV0lOX1RSVUVAYW1fX29iamVjdHNfNyA9IHNyYy94ODYvZmZpLmxvIHNyYy94ODYvZGFyd2luLmxvIFwKIEBYODZfREFSV0lOX1RSVUVACXNyYy94ODYvZmZpNjQubG8gc3JjL3g4Ni9kYXJ3aW42NC5sbwotQFNQQVJDX1RSVUVAYW1fX29iamVjdHNfNyA9IHNyYy9zcGFyYy9mZmkubG8gc3JjL3NwYXJjL3Y4LmxvIFwKK0BTUEFSQ19UUlVFQGFtX19vYmplY3RzXzggPSBzcmMvc3BhcmMvZmZpLmxvIHNyYy9zcGFyYy92OC5sbyBcCiBAU1BBUkNfVFJVRUAJc3JjL3NwYXJjL3Y5LmxvCi1AQUxQSEFfVFJVRUBhbV9fb2JqZWN0c184ID0gc3JjL2FscGhhL2ZmaS5sbyBzcmMvYWxwaGEvb3NmLmxvCi1ASUE2NF9UUlVFQGFtX19vYmplY3RzXzkgPSBzcmMvaWE2NC9mZmkubG8gc3JjL2lhNjQvdW5peC5sbwotQE0zMlJfVFJVRUBhbV9fb2JqZWN0c18xMCA9IHNyYy9tMzJyL3N5c3YubG8gc3JjL20zMnIvZmZpLmxvCi1ATTY4S19UUlVFQGFtX19vYmplY3RzXzExID0gc3JjL202OGsvZmZpLmxvIHNyYy9tNjhrL3N5c3YubG8KLUBQT1dFUlBDX1RSVUVAYW1fX29iamVjdHNfMTIgPSBzcmMvcG93ZXJwYy9mZmkubG8gc3JjL3Bvd2VycGMvc3lzdi5sbyBcCitAQUxQSEFfVFJVRUBhbV9fb2JqZWN0c185ID0gc3JjL2FscGhhL2ZmaS5sbyBzcmMvYWxwaGEvb3NmLmxvCitASUE2NF9UUlVFQGFtX19vYmplY3RzXzEwID0gc3JjL2lhNjQvZmZpLmxvIHNyYy9pYTY0L3VuaXgubG8KK0BNMzJSX1RSVUVAYW1fX29iamVjdHNfMTEgPSBzcmMvbTMyci9zeXN2LmxvIHNyYy9tMzJyL2ZmaS5sbworQE02OEtfVFJVRUBhbV9fb2JqZWN0c18xMiA9IHNyYy9tNjhrL2ZmaS5sbyBzcmMvbTY4ay9zeXN2LmxvCitAUE9XRVJQQ19UUlVFQGFtX19vYmplY3RzXzEzID0gc3JjL3Bvd2VycGMvZmZpLmxvIHNyYy9wb3dlcnBjL3N5c3YubG8gXAogQFBPV0VSUENfVFJVRUAJc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUubG8gXAogQFBPV0VSUENfVFJVRUAJc3JjL3Bvd2VycGMvbGludXg2NC5sbyBcCiBAUE9XRVJQQ19UUlVFQAlzcmMvcG93ZXJwYy9saW51eDY0X2Nsb3N1cmUubG8KLUBQT1dFUlBDX0FJWF9UUlVFQGFtX19vYmplY3RzXzEzID0gc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5sbyBcCitAUE9XRVJQQ19BSVhfVFJVRUBhbV9fb2JqZWN0c18xNCA9IHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4ubG8gXAogQFBPV0VSUENfQUlYX1RSVUVACXNyYy9wb3dlcnBjL2FpeC5sbyBcCiBAUE9XRVJQQ19BSVhfVFJVRUAJc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUubG8KLUBQT1dFUlBDX0RBUldJTl9UUlVFQGFtX19vYmplY3RzXzE0ID0gc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5sbyBcCitAUE9XRVJQQ19EQVJXSU5fVFJVRUBhbV9fb2JqZWN0c18xNSA9IHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4ubG8gXAogQFBPV0VSUENfREFSV0lOX1RSVUVACXNyYy9wb3dlcnBjL2Rhcndpbi5sbyBcCiBAUE9XRVJQQ19EQVJXSU5fVFJVRUAJc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUubG8KLUBQT1dFUlBDX0ZSRUVCU0RfVFJVRUBhbV9fb2JqZWN0c18xNSA9IHNyYy9wb3dlcnBjL2ZmaS5sbyBcCitAUE9XRVJQQ19GUkVFQlNEX1RSVUVAYW1fX29iamVjdHNfMTYgPSBzcmMvcG93ZXJwYy9mZmkubG8gXAogQFBPV0VSUENfRlJFRUJTRF9UUlVFQAlzcmMvcG93ZXJwYy9zeXN2LmxvIFwKIEBQT1dFUlBDX0ZSRUVCU0RfVFJVRUAJc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUubG8KLUBBUk1fVFJVRUBhbV9fb2JqZWN0c18xNiA9IHNyYy9hcm0vc3lzdi5sbyBzcmMvYXJtL2ZmaS5sbwotQEFWUjMyX1RSVUVAYW1fX29iamVjdHNfMTcgPSBzcmMvYXZyMzIvc3lzdi5sbyBzcmMvYXZyMzIvZmZpLmxvCi1ATElCRkZJX0NSSVNfVFJVRUBhbV9fb2JqZWN0c18xOCA9IHNyYy9jcmlzL3N5c3YubG8gc3JjL2NyaXMvZmZpLmxvCi1ARlJWX1RSVUVAYW1fX29iamVjdHNfMTkgPSBzcmMvZnJ2L2VhYmkubG8gc3JjL2Zydi9mZmkubG8KLUBTMzkwX1RSVUVAYW1fX29iamVjdHNfMjAgPSBzcmMvczM5MC9zeXN2LmxvIHNyYy9zMzkwL2ZmaS5sbwotQFg4Nl82NF9UUlVFQGFtX19vYmplY3RzXzIxID0gc3JjL3g4Ni9mZmk2NC5sbyBzcmMveDg2L3VuaXg2NC5sbyBcCitAQVJNX1RSVUVAYW1fX29iamVjdHNfMTcgPSBzcmMvYXJtL3N5c3YubG8gc3JjL2FybS9mZmkubG8KK0BBUk1fVFJVRUBARkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRV9UUlVFQGFtX19vYmplY3RzXzE4ID0gc3JjL2FybS90cmFtcG9saW5lLmxvCitAQVZSMzJfVFJVRUBhbV9fb2JqZWN0c18xOSA9IHNyYy9hdnIzMi9zeXN2LmxvIHNyYy9hdnIzMi9mZmkubG8KK0BMSUJGRklfQ1JJU19UUlVFQGFtX19vYmplY3RzXzIwID0gc3JjL2NyaXMvc3lzdi5sbyBzcmMvY3Jpcy9mZmkubG8KK0BGUlZfVFJVRUBhbV9fb2JqZWN0c18yMSA9IHNyYy9mcnYvZWFiaS5sbyBzcmMvZnJ2L2ZmaS5sbworQE1PWElFX1RSVUVAYW1fX29iamVjdHNfMjIgPSBzcmMvbW94aWUvZWFiaS5sbyBzcmMvbW94aWUvZmZpLmxvCitAUzM5MF9UUlVFQGFtX19vYmplY3RzXzIzID0gc3JjL3MzOTAvc3lzdi5sbyBzcmMvczM5MC9mZmkubG8KK0BYODZfNjRfVFJVRUBhbV9fb2JqZWN0c18yNCA9IHNyYy94ODYvZmZpNjQubG8gc3JjL3g4Ni91bml4NjQubG8gXAogQFg4Nl82NF9UUlVFQAlzcmMveDg2L2ZmaS5sbyBzcmMveDg2L3N5c3YubG8KLUBTSF9UUlVFQGFtX19vYmplY3RzXzIyID0gc3JjL3NoL3N5c3YubG8gc3JjL3NoL2ZmaS5sbwotQFNINjRfVFJVRUBhbV9fb2JqZWN0c18yMyA9IHNyYy9zaDY0L3N5c3YubG8gc3JjL3NoNjQvZmZpLmxvCi1AUEFfTElOVVhfVFJVRUBhbV9fb2JqZWN0c18yNCA9IHNyYy9wYS9saW51eC5sbyBzcmMvcGEvZmZpLmxvCi1AUEFfSFBVWF9UUlVFQGFtX19vYmplY3RzXzI1ID0gc3JjL3BhL2hwdXgzMi5sbyBzcmMvcGEvZmZpLmxvCitAU0hfVFJVRUBhbV9fb2JqZWN0c18yNSA9IHNyYy9zaC9zeXN2LmxvIHNyYy9zaC9mZmkubG8KK0BTSDY0X1RSVUVAYW1fX29iamVjdHNfMjYgPSBzcmMvc2g2NC9zeXN2LmxvIHNyYy9zaDY0L2ZmaS5sbworQFBBX0xJTlVYX1RSVUVAYW1fX29iamVjdHNfMjcgPSBzcmMvcGEvbGludXgubG8gc3JjL3BhL2ZmaS5sbworQFBBX0hQVVhfVFJVRUBhbV9fb2JqZWN0c18yOCA9IHNyYy9wYS9ocHV4MzIubG8gc3JjL3BhL2ZmaS5sbwogbm9kaXN0X2xpYmZmaV9sYV9PQkpFQ1RTID0gJChhbV9fb2JqZWN0c18xKSAkKGFtX19vYmplY3RzXzIpIFwKIAkkKGFtX19vYmplY3RzXzMpICQoYW1fX29iamVjdHNfNCkgJChhbV9fb2JqZWN0c181KSBcCiAJJChhbV9fb2JqZWN0c182KSAkKGFtX19vYmplY3RzXzcpICQoYW1fX29iamVjdHNfOCkgXApAQCAtMTUzLDE3ICsxNjksMTggQEAKIAkkKGFtX19vYmplY3RzXzE1KSAkKGFtX19vYmplY3RzXzE2KSAkKGFtX19vYmplY3RzXzE3KSBcCiAJJChhbV9fb2JqZWN0c18xOCkgJChhbV9fb2JqZWN0c18xOSkgJChhbV9fb2JqZWN0c18yMCkgXAogCSQoYW1fX29iamVjdHNfMjEpICQoYW1fX29iamVjdHNfMjIpICQoYW1fX29iamVjdHNfMjMpIFwKLQkkKGFtX19vYmplY3RzXzI0KSAkKGFtX19vYmplY3RzXzI1KQorCSQoYW1fX29iamVjdHNfMjQpICQoYW1fX29iamVjdHNfMjUpICQoYW1fX29iamVjdHNfMjYpIFwKKwkkKGFtX19vYmplY3RzXzI3KSAkKGFtX19vYmplY3RzXzI4KQogbGliZmZpX2xhX09CSkVDVFMgPSAkKGFtX2xpYmZmaV9sYV9PQkpFQ1RTKSBcCiAJJChub2Rpc3RfbGliZmZpX2xhX09CSkVDVFMpCiBsaWJmZmlfbGFfTElOSyA9ICQoTElCVE9PTCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpIFwKIAkkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgJChDQ0xEKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpIFwKIAkkKGxpYmZmaV9sYV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACiBsaWJmZmlfY29udmVuaWVuY2VfbGFfTElCQUREID0KLWFtX19vYmplY3RzXzI2ID0gc3JjL2RlYnVnLmxvIHNyYy9wcmVwX2NpZi5sbyBzcmMvdHlwZXMubG8gXAotCXNyYy9yYXdfYXBpLmxvIHNyYy9qYXZhX3Jhd19hcGkubG8gc3JjL2Nsb3N1cmVzLmxvCi1hbV9saWJmZmlfY29udmVuaWVuY2VfbGFfT0JKRUNUUyA9ICQoYW1fX29iamVjdHNfMjYpCi1hbV9fb2JqZWN0c18yNyA9ICQoYW1fX29iamVjdHNfMSkgJChhbV9fb2JqZWN0c18yKSAkKGFtX19vYmplY3RzXzMpIFwKK2FtX19vYmplY3RzXzI5ID0gc3JjL3ByZXBfY2lmLmxvIHNyYy90eXBlcy5sbyBzcmMvcmF3X2FwaS5sbyBcCisJc3JjL2phdmFfcmF3X2FwaS5sbyBzcmMvY2xvc3VyZXMubG8KK2FtX2xpYmZmaV9jb252ZW5pZW5jZV9sYV9PQkpFQ1RTID0gJChhbV9fb2JqZWN0c18yOSkKK2FtX19vYmplY3RzXzMwID0gJChhbV9fb2JqZWN0c18xKSAkKGFtX19vYmplY3RzXzIpICQoYW1fX29iamVjdHNfMykgXAogCSQoYW1fX29iamVjdHNfNCkgJChhbV9fb2JqZWN0c181KSAkKGFtX19vYmplY3RzXzYpIFwKIAkkKGFtX19vYmplY3RzXzcpICQoYW1fX29iamVjdHNfOCkgJChhbV9fb2JqZWN0c185KSBcCiAJJChhbV9fb2JqZWN0c18xMCkgJChhbV9fb2JqZWN0c18xMSkgJChhbV9fb2JqZWN0c18xMikgXApAQCAtMTcxLDggKzE4OCw5IEBACiAJJChhbV9fb2JqZWN0c18xNikgJChhbV9fb2JqZWN0c18xNykgJChhbV9fb2JqZWN0c18xOCkgXAogCSQoYW1fX29iamVjdHNfMTkpICQoYW1fX29iamVjdHNfMjApICQoYW1fX29iamVjdHNfMjEpIFwKIAkkKGFtX19vYmplY3RzXzIyKSAkKGFtX19vYmplY3RzXzIzKSAkKGFtX19vYmplY3RzXzI0KSBcCi0JJChhbV9fb2JqZWN0c18yNSkKLW5vZGlzdF9saWJmZmlfY29udmVuaWVuY2VfbGFfT0JKRUNUUyA9ICQoYW1fX29iamVjdHNfMjcpCisJJChhbV9fb2JqZWN0c18yNSkgJChhbV9fb2JqZWN0c18yNikgJChhbV9fb2JqZWN0c18yNykgXAorCSQoYW1fX29iamVjdHNfMjgpCitub2Rpc3RfbGliZmZpX2NvbnZlbmllbmNlX2xhX09CSkVDVFMgPSAkKGFtX19vYmplY3RzXzMwKQogbGliZmZpX2NvbnZlbmllbmNlX2xhX09CSkVDVFMgPSAkKGFtX2xpYmZmaV9jb252ZW5pZW5jZV9sYV9PQkpFQ1RTKSBcCiAJJChub2Rpc3RfbGliZmZpX2NvbnZlbmllbmNlX2xhX09CSkVDVFMpCiBERUZBVUxUX0lOQ0xVREVTID0gLUkuQGFtX19pc3JjQApAQCAtMjI5LDkgKzI0NywxMSBAQAogZGlzdGRpciA9ICQoUEFDS0FHRSktJChWRVJTSU9OKQogdG9wX2Rpc3RkaXIgPSAkKGRpc3RkaXIpCiBhbV9fcmVtb3ZlX2Rpc3RkaXIgPSBcCi0gIHsgdGVzdCAhIC1kICIkKGRpc3RkaXIpIiBcCi0gICAgfHwgeyBmaW5kICIkKGRpc3RkaXIpIiAtdHlwZSBkICEgLXBlcm0gLTIwMCAtZXhlYyBjaG1vZCB1K3cge30gJzsnIFwKLSAgICAgICAgICYmIHJtIC1mciAiJChkaXN0ZGlyKSI7IH07IH0KKyAgaWYgdGVzdCAtZCAiJChkaXN0ZGlyKSI7IHRoZW4gXAorICAgIGZpbmQgIiQoZGlzdGRpcikiIC10eXBlIGQgISAtcGVybSAtMjAwIC1leGVjIGNobW9kIHUrdyB7fSAnOycgXAorICAgICAgJiYgcm0gLXJmICIkKGRpc3RkaXIpIiBcCisgICAgICB8fCB7IHNsZWVwIDUgJiYgcm0gLXJmICIkKGRpc3RkaXIpIjsgfTsgXAorICBlbHNlIDo7IGZpCiBhbV9fcmVsYXRpdml6ZSA9IFwKICAgZGlyMD1gcHdkYDsgXAogICBzZWRfZmlyc3Q9J3MsXlwoW14vXSpcKS8uKiQkLFwxLCc7IFwKQEAgLTI2MCw2ICsyODAsOCBAQAogRElTVF9BUkNISVZFUyA9ICQoZGlzdGRpcikudGFyLmd6CiBHWklQX0VOViA9IC0tYmVzdAogZGlzdHVuaW5zdGFsbGNoZWNrX2xpc3RmaWxlcyA9IGZpbmQgLiAtdHlwZSBmIC1wcmludAorYW1fX2Rpc3R1bmluc3RhbGxjaGVja19saXN0ZmlsZXMgPSAkKGRpc3R1bmluc3RhbGxjaGVja19saXN0ZmlsZXMpIFwKKyAgfCBzZWQgJ3N8XlwuL3wkKHByZWZpeCkvfCcgfCBncmVwIC12ICckKGluZm9kaXIpL2RpciQkJwogZGlzdGNsZWFuY2hlY2tfbGlzdGZpbGVzID0gZmluZCAuIC10eXBlIGYgLXByaW50CiBBQ0xPQ0FMID0gQEFDTE9DQUxACiBBTExPQ0EgPSBAQUxMT0NBQApAQCAtMjgyLDYgKzMwNCw3IEBACiBDWUdQQVRIX1cgPSBAQ1lHUEFUSF9XQAogREVGUyA9IEBERUZTQAogREVQRElSID0gQERFUERJUkAKK0RMTFRPT0wgPSBARExMVE9PTEAKIERTWU1VVElMID0gQERTWU1VVElMQAogRFVNUEJJTiA9IEBEVU1QQklOQAogRUNIT19DID0gQEVDSE9fQ0AKQEAgLTI4OSw2ICszMTIsNyBAQAogRUNIT19UID0gQEVDSE9fVEAKIEVHUkVQID0gQEVHUkVQQAogRVhFRVhUID0gQEVYRUVYVEAKK0ZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgPSBARkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRUAKIEZHUkVQID0gQEZHUkVQQAogR1JFUCA9IEBHUkVQQAogSEFWRV9MT05HX0RPVUJMRSA9IEBIQVZFX0xPTkdfRE9VQkxFQApAQCAtMzA3LDYgKzMzMSw3IEBACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKK01BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKIE1LRElSX1AgPSBATUtESVJfUEAKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKQEAgLTMxOSw2ICszNDQsNyBAQAogUEFDS0FHRV9OQU1FID0gQFBBQ0tBR0VfTkFNRUAKIFBBQ0tBR0VfU1RSSU5HID0gQFBBQ0tBR0VfU1RSSU5HQAogUEFDS0FHRV9UQVJOQU1FID0gQFBBQ0tBR0VfVEFSTkFNRUAKK1BBQ0tBR0VfVVJMID0gQFBBQ0tBR0VfVVJMQAogUEFDS0FHRV9WRVJTSU9OID0gQFBBQ0tBR0VfVkVSU0lPTkAKIFBBVEhfU0VQQVJBVE9SID0gQFBBVEhfU0VQQVJBVE9SQAogUkFOTElCID0gQFJBTkxJQkAKQEAgLTMzMyw2ICszNTksNyBAQAogYWJzX3NyY2RpciA9IEBhYnNfc3JjZGlyQAogYWJzX3RvcF9idWlsZGRpciA9IEBhYnNfdG9wX2J1aWxkZGlyQAogYWJzX3RvcF9zcmNkaXIgPSBAYWJzX3RvcF9zcmNkaXJACithY19jdF9BUiA9IEBhY19jdF9BUkAKIGFjX2N0X0NDID0gQGFjX2N0X0NDQAogYWNfY3RfRFVNUEJJTiA9IEBhY19jdF9EVU1QQklOQAogYW1fX2luY2x1ZGUgPSBAYW1fX2luY2x1ZGVACkBAIC0zNjUsNyArMzkyLDYgQEAKIGxpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKIGxvY2FsZWRpciA9IEBsb2NhbGVkaXJACiBsb2NhbHN0YXRlZGlyID0gQGxvY2Fsc3RhdGVkaXJACi1sdF9FQ0hPID0gQGx0X0VDSE9ACiBtYW5kaXIgPSBAbWFuZGlyQAogbWtkaXJfcCA9IEBta2Rpcl9wQAogb2xkaW5jbHVkZWRpciA9IEBvbGRpbmNsdWRlZGlyQApAQCAtMzk1LDI5ICs0MjEsMzIgQEAKIAlzcmMvYXZyMzIvZmZpLmMgc3JjL2F2cjMyL3N5c3YuUyBzcmMvYXZyMzIvZmZpdGFyZ2V0LmggXAogCXNyYy9jcmlzL2ZmaS5jIHNyYy9jcmlzL3N5c3YuUyBzcmMvY3Jpcy9mZml0YXJnZXQuaCBcCiAJc3JjL2lhNjQvZmZpLmMgc3JjL2lhNjQvZmZpdGFyZ2V0Lmggc3JjL2lhNjQvaWE2NF9mbGFncy5oIFwKLQlzcmMvaWE2NC91bml4LlMgXAotCXNyYy9taXBzL2ZmaS5jIHNyYy9taXBzL24zMi5TIHNyYy9taXBzL28zMi5TIFwKLQlzcmMvbWlwcy9mZml0YXJnZXQuaCBcCi0Jc3JjL20zMnIvZmZpLmMgc3JjL20zMnIvc3lzdi5TIHNyYy9tMzJyL2ZmaXRhcmdldC5oIFwKLQlzcmMvbTY4ay9mZmkuYyBzcmMvbTY4ay9zeXN2LlMgc3JjL202OGsvZmZpdGFyZ2V0LmggXAotCXNyYy9wb3dlcnBjL2ZmaS5jIHNyYy9wb3dlcnBjL3N5c3YuUyBcCisJc3JjL2lhNjQvdW5peC5TIHNyYy9taXBzL2ZmaS5jIHNyYy9taXBzL24zMi5TIHNyYy9taXBzL28zMi5TIFwKKwlzcmMvbWlwcy9mZml0YXJnZXQuaCBzcmMvbTMyci9mZmkuYyBzcmMvbTMyci9zeXN2LlMgXAorCXNyYy9tMzJyL2ZmaXRhcmdldC5oIHNyYy9tNjhrL2ZmaS5jIHNyYy9tNjhrL3N5c3YuUyBcCisJc3JjL202OGsvZmZpdGFyZ2V0Lmggc3JjL3Bvd2VycGMvZmZpLmMgc3JjL3Bvd2VycGMvc3lzdi5TIFwKIAlzcmMvcG93ZXJwYy9saW51eDY0LlMgc3JjL3Bvd2VycGMvbGludXg2NF9jbG9zdXJlLlMgXAotCXNyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMgc3JjL3Bvd2VycGMvYXNtLmggXAotCXNyYy9wb3dlcnBjL2FpeC5TIHNyYy9wb3dlcnBjL2Rhcndpbi5TIFwKLQlzcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TIHNyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlMgXAotCXNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYyBzcmMvcG93ZXJwYy9mZml0YXJnZXQuaCBcCi0Jc3JjL3MzOTAvZmZpLmMgc3JjL3MzOTAvc3lzdi5TIHNyYy9zMzkwL2ZmaXRhcmdldC5oIFwKLQlzcmMvc2gvZmZpLmMgc3JjL3NoL3N5c3YuUyBzcmMvc2gvZmZpdGFyZ2V0LmggXAotCXNyYy9zaDY0L2ZmaS5jIHNyYy9zaDY0L3N5c3YuUyBzcmMvc2g2NC9mZml0YXJnZXQuaCBcCi0Jc3JjL3NwYXJjL3Y4LlMgc3JjL3NwYXJjL3Y5LlMgc3JjL3NwYXJjL2ZmaXRhcmdldC5oIFwKLQlzcmMvc3BhcmMvZmZpLmMgc3JjL3g4Ni9kYXJ3aW42NC5TIFwKLQlzcmMveDg2L2ZmaS5jIHNyYy94ODYvc3lzdi5TIHNyYy94ODYvd2luMzIuUyBzcmMveDg2L3dpbjY0LlMgXAotCXNyYy94ODYvZGFyd2luLlMgc3JjL3g4Ni9mcmVlYnNkLlMgXAotCXNyYy94ODYvZmZpNjQuYyBzcmMveDg2L3VuaXg2NC5TIHNyYy94ODYvZmZpdGFyZ2V0LmggXAotCXNyYy9wYS9mZml0YXJnZXQuaCBzcmMvcGEvZmZpLmMgc3JjL3BhL2xpbnV4LlMgc3JjL3BhL2hwdXgzMi5TIFwKLQlzcmMvZnJ2L2ZmaS5jIHNyYy9mcnYvZWFiaS5TIHNyYy9mcnYvZmZpdGFyZ2V0Lmggc3JjL2RsbWFsbG9jLmMgXAotCWxpYnRvb2wtdmVyc2lvbiBDaGFuZ2VMb2cubGliZmZpIG00L2xpYnRvb2wubTQgXAotCW00L2x0fm9ic29sZXRlLm00IG00L2x0b3B0aW9ucy5tNCBtNC9sdHN1Z2FyLm00IG00L2x0dmVyc2lvbi5tNAorCXNyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMgc3JjL3Bvd2VycGMvYXNtLmggc3JjL3Bvd2VycGMvYWl4LlMgXAorCXNyYy9wb3dlcnBjL2Rhcndpbi5TIHNyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMgXAorCXNyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlMgc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jIFwKKwlzcmMvcG93ZXJwYy9mZml0YXJnZXQuaCBzcmMvczM5MC9mZmkuYyBzcmMvczM5MC9zeXN2LlMgXAorCXNyYy9zMzkwL2ZmaXRhcmdldC5oIHNyYy9zaC9mZmkuYyBzcmMvc2gvc3lzdi5TCVwKKwlzcmMvc2gvZmZpdGFyZ2V0Lmggc3JjL3NoNjQvZmZpLmMgc3JjL3NoNjQvc3lzdi5TIFwKKwlzcmMvc2g2NC9mZml0YXJnZXQuaCBzcmMvc3BhcmMvdjguUyBzcmMvc3BhcmMvdjkuUyBcCisJc3JjL3NwYXJjL2ZmaXRhcmdldC5oIHNyYy9zcGFyYy9mZmkuYyBzcmMveDg2L2RhcndpbjY0LlMgXAorCXNyYy94ODYvZmZpLmMgc3JjL3g4Ni9zeXN2LlMgc3JjL3g4Ni93aW4zMi5TIHNyYy94ODYvZGFyd2luLlMgXAorCXNyYy94ODYvd2luNjQuUyBzcmMveDg2L2ZyZWVic2QuUyBzcmMveDg2L2ZmaTY0LmMgXAorCXNyYy94ODYvdW5peDY0LlMgc3JjL3g4Ni9mZml0YXJnZXQuaCBzcmMvcGEvZmZpdGFyZ2V0LmgJXAorCXNyYy9wYS9mZmkuYyBzcmMvcGEvbGludXguUyBzcmMvcGEvaHB1eDMyLlMgc3JjL2Zydi9mZmkuYyBcCisJc3JjL2Zydi9lYWJpLlMgc3JjL2Zydi9mZml0YXJnZXQuaCBzcmMvZGxtYWxsb2MuYyBcCisJc3JjL21veGllL2ZmaS5jIHNyYy9tb3hpZS9lYWJpLlMgbGlidG9vbC12ZXJzaW9uIFwKKwlDaGFuZ2VMb2cubGliZmZpIG00L2xpYnRvb2wubTQgbTQvbHR+b2Jzb2xldGUubTQgXAorCW00L2x0b3B0aW9ucy5tNCBtNC9sdHN1Z2FyLm00IG00L2x0dmVyc2lvbi5tNCBcCisJbTQvbHR2ZXJzaW9uLm00IHNyYy9hcm0vZ2VudHJhbXAuc2ggc3JjL2RlYnVnLmMgXAorCW1zdmNjLnNoIGdlbmVyYXRlLWlvcy1zb3VyY2UtYW5kLWhlYWRlcnMucHkgXAorCWdlbmVyYXRlLW9zeC1zb3VyY2UtYW5kLWhlYWRlcnMucHkgXAorICAgICAgICBsaWJmZmkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBcCisJc3JjL2FybS90cmFtcG9saW5lLlMKIAogaW5mb19URVhJTkZPUyA9IGRvYy9saWJmZmkudGV4aQogCkBAIC00NDgsNiArNDc3LDcgQEAKIAkiZXhlY19wcmVmaXg9JChleGVjX3ByZWZpeCkiIFwKIAkiaW5mb2Rpcj0kKGluZm9kaXIpIiBcCiAJImxpYmRpcj0kKGxpYmRpcikiIFwKKwkibWFuZGlyPSQobWFuZGlyKSIgXAogCSJwcmVmaXg9JChwcmVmaXgpIiBcCiAJIkFSPSQoQVIpIiBcCiAJIkFTPSQoQVMpIiBcCkBAIC00NjIsNyArNDkyLDcgQEAKIEFDTE9DQUxfQU1GTEFHUyA9ICQoQUNMT0NBTF9BTUZMQUdTKSAtSSBtNAogbGliX0xUTElCUkFSSUVTID0gbGliZmZpLmxhCiBub2luc3RfTFRMSUJSQVJJRVMgPSBsaWJmZmlfY29udmVuaWVuY2UubGEKLWxpYmZmaV9sYV9TT1VSQ0VTID0gc3JjL2RlYnVnLmMgc3JjL3ByZXBfY2lmLmMgc3JjL3R5cGVzLmMgXAorbGliZmZpX2xhX1NPVVJDRVMgPSBzcmMvcHJlcF9jaWYuYyBzcmMvdHlwZXMuYyBcCiAJCXNyYy9yYXdfYXBpLmMgc3JjL2phdmFfcmF3X2FwaS5jIHNyYy9jbG9zdXJlcy5jCiAKIHBrZ2NvbmZpZ2RpciA9ICQobGliZGlyKS9wa2djb25maWcKQEAgLTQ3NSwxOSArNTA1LDIwIEBACiAJJChhbV9fYXBwZW5kXzE1KSAkKGFtX19hcHBlbmRfMTYpICQoYW1fX2FwcGVuZF8xNykgXAogCSQoYW1fX2FwcGVuZF8xOCkgJChhbV9fYXBwZW5kXzE5KSAkKGFtX19hcHBlbmRfMjApIFwKIAkkKGFtX19hcHBlbmRfMjEpICQoYW1fX2FwcGVuZF8yMikgJChhbV9fYXBwZW5kXzIzKSBcCi0JJChhbV9fYXBwZW5kXzI0KSAkKGFtX19hcHBlbmRfMjUpCisJJChhbV9fYXBwZW5kXzI0KSAkKGFtX19hcHBlbmRfMjUpICQoYW1fX2FwcGVuZF8yNikgXAorCSQoYW1fX2FwcGVuZF8yNykgJChhbV9fYXBwZW5kXzI4KQogbGliZmZpX2NvbnZlbmllbmNlX2xhX1NPVVJDRVMgPSAkKGxpYmZmaV9sYV9TT1VSQ0VTKQogbm9kaXN0X2xpYmZmaV9jb252ZW5pZW5jZV9sYV9TT1VSQ0VTID0gJChub2Rpc3RfbGliZmZpX2xhX1NPVVJDRVMpCi1BTV9DRkxBR1MgPSAtV2FsbCAtZyAtZmV4Y2VwdGlvbnMKLWxpYmZmaV9sYV9MREZMQUdTID0gLXZlcnNpb24taW5mbyBgZ3JlcCAtdiAnXlwjJyAkKHNyY2RpcikvbGlidG9vbC12ZXJzaW9uYCAkKEFNX0xUTERGTEFHUykKLUFNX0NQUEZMQUdTID0gLUkuIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlIC1JaW5jbHVkZSAtSSQodG9wX3NyY2Rpcikvc3JjCi1BTV9DQ0FTRkxBR1MgPSAkKEFNX0NQUEZMQUdTKQorQU1fQ0ZMQUdTID0gLWcgJChhbV9fYXBwZW5kXzI5KQorbGliZmZpX2xhX0xERkxBR1MgPSAtdmVyc2lvbi1pbmZvIGBncmVwIC12ICdeXCMnICQoc3JjZGlyKS9saWJ0b29sLXZlcnNpb25gICQoTFRMREZMQUdTKSAkKEFNX0xUTERGTEFHUykKK0FNX0NQUEZMQUdTID0gLUkuIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlIC1JaW5jbHVkZSAtSSQodG9wX3NyY2Rpcikvc3JjIC1ERkZJX0JVSUxESU5HCitBTV9DQ0FTRkxBR1MgPSAkKEFNX0NQUEZMQUdTKSAtZwogYWxsOiBmZmljb25maWcuaAogCSQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFsbC1yZWN1cnNpdmUKIAogLlNVRkZJWEVTOgogLlNVRkZJWEVTOiAuUyAuYyAuZHZpIC5sbyAubyAub2JqIC5wcwotYW0tLXJlZnJlc2g6CithbS0tcmVmcmVzaDogTWFrZWZpbGUKIAlAOgogJChzcmNkaXIpL01ha2VmaWxlLmluOiBATUFJTlRBSU5FUl9NT0RFX1RSVUVAICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAgJChhbV9fY29uZmlndXJlX2RlcHMpCiAJQGZvciBkZXAgaW4gJD87IGRvIFwKQEAgLTUyMywxMCArNTU0LDggQEAKICQoYW1fX2FjbG9jYWxfbTRfZGVwcyk6CiAKIGZmaWNvbmZpZy5oOiBzdGFtcC1oMQotCUBpZiB0ZXN0ICEgLWYgJEA7IHRoZW4gXAotCSAgcm0gLWYgc3RhbXAtaDE7IFwKLQkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIHN0YW1wLWgxOyBcCi0JZWxzZSA6OyBmaQorCUBpZiB0ZXN0ICEgLWYgJEA7IHRoZW4gcm0gLWYgc3RhbXAtaDE7IGVsc2UgOjsgZmkKKwlAaWYgdGVzdCAhIC1mICRAOyB0aGVuICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIHN0YW1wLWgxOyBlbHNlIDo7IGZpCiAKIHN0YW1wLWgxOiAkKHNyY2RpcikvZmZpY29uZmlnLmguaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKIAlAcm0gLWYgc3RhbXAtaDEKQEAgLTU0MCw2ICs1NjksOCBAQAogCS1ybSAtZiBmZmljb25maWcuaCBzdGFtcC1oMQogbGliZmZpLnBjOiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKHNyY2RpcikvbGliZmZpLnBjLmluCiAJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkQAorZmZpY29uZmlnLnB5OiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKHNyY2RpcikvZmZpY29uZmlnLnB5LmluCisJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkQAogaW5zdGFsbC1saWJMVExJQlJBUklFUzogJChsaWJfTFRMSUJSQVJJRVMpCiAJQCQoTk9STUFMX0lOU1RBTEwpCiAJdGVzdCAteiAiJChsaWJkaXIpIiB8fCAkKE1LRElSX1ApICIkKERFU1RESVIpJChsaWJkaXIpIgpAQCAtNTg2LDEyICs2MTcsMTIgQEAKIHNyYy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApOgogCUAkKE1LRElSX1ApIHNyYy8kKERFUERJUikKIAlAOiA+IHNyYy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCi1zcmMvZGVidWcubG86IHNyYy8kKGFtX19kaXJzdGFtcCkgc3JjLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIHNyYy9wcmVwX2NpZi5sbzogc3JjLyQoYW1fX2RpcnN0YW1wKSBzcmMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogc3JjL3R5cGVzLmxvOiBzcmMvJChhbV9fZGlyc3RhbXApIHNyYy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiBzcmMvcmF3X2FwaS5sbzogc3JjLyQoYW1fX2RpcnN0YW1wKSBzcmMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogc3JjL2phdmFfcmF3X2FwaS5sbzogc3JjLyQoYW1fX2RpcnN0YW1wKSBzcmMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogc3JjL2Nsb3N1cmVzLmxvOiBzcmMvJChhbV9fZGlyc3RhbXApIHNyYy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCitzcmMvZGVidWcubG86IHNyYy8kKGFtX19kaXJzdGFtcCkgc3JjLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIHNyYy9taXBzLyQoYW1fX2RpcnN0YW1wKToKIAlAJChNS0RJUl9QKSBzcmMvbWlwcwogCUA6ID4gc3JjL21pcHMvJChhbV9fZGlyc3RhbXApCkBAIC03MTQsNiArNzQ1LDggQEAKIAlzcmMvYXJtLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIHNyYy9hcm0vZmZpLmxvOiBzcmMvYXJtLyQoYW1fX2RpcnN0YW1wKSBcCiAJc3JjL2FybS8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCitzcmMvYXJtL3RyYW1wb2xpbmUubG86IHNyYy9hcm0vJChhbV9fZGlyc3RhbXApIFwKKwlzcmMvYXJtLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIHNyYy9hdnIzMi8kKGFtX19kaXJzdGFtcCk6CiAJQCQoTUtESVJfUCkgc3JjL2F2cjMyCiAJQDogPiBzcmMvYXZyMzIvJChhbV9fZGlyc3RhbXApCkBAIC03NDQsNiArNzc3LDE2IEBACiAJc3JjL2Zydi8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiBzcmMvZnJ2L2ZmaS5sbzogc3JjL2Zydi8kKGFtX19kaXJzdGFtcCkgXAogCXNyYy9mcnYvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorc3JjL21veGllLyQoYW1fX2RpcnN0YW1wKToKKwlAJChNS0RJUl9QKSBzcmMvbW94aWUKKwlAOiA+IHNyYy9tb3hpZS8kKGFtX19kaXJzdGFtcCkKK3NyYy9tb3hpZS8kKERFUERJUikvJChhbV9fZGlyc3RhbXApOgorCUAkKE1LRElSX1ApIHNyYy9tb3hpZS8kKERFUERJUikKKwlAOiA+IHNyYy9tb3hpZS8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCitzcmMvbW94aWUvZWFiaS5sbzogc3JjL21veGllLyQoYW1fX2RpcnN0YW1wKSBcCisJc3JjL21veGllLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKK3NyYy9tb3hpZS9mZmkubG86IHNyYy9tb3hpZS8kKGFtX19kaXJzdGFtcCkgXAorCXNyYy9tb3hpZS8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiBzcmMvczM5MC8kKGFtX19kaXJzdGFtcCk6CiAJQCQoTUtESVJfUCkgc3JjL3MzOTAKIAlAOiA+IHNyYy9zMzkwLyQoYW1fX2RpcnN0YW1wKQpAQCAtNzg2LDkgKzgyOSw5IEBACiBzcmMvcGEvZmZpLmxvOiBzcmMvcGEvJChhbV9fZGlyc3RhbXApIHNyYy9wYS8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiBzcmMvcGEvaHB1eDMyLmxvOiBzcmMvcGEvJChhbV9fZGlyc3RhbXApIFwKIAlzcmMvcGEvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQotbGliZmZpLmxhOiAkKGxpYmZmaV9sYV9PQkpFQ1RTKSAkKGxpYmZmaV9sYV9ERVBFTkRFTkNJRVMpIAorbGliZmZpLmxhOiAkKGxpYmZmaV9sYV9PQkpFQ1RTKSAkKGxpYmZmaV9sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZmZpX2xhX0RFUEVOREVOQ0lFUykgCiAJJChsaWJmZmlfbGFfTElOSykgLXJwYXRoICQobGliZGlyKSAkKGxpYmZmaV9sYV9PQkpFQ1RTKSAkKGxpYmZmaV9sYV9MSUJBREQpICQoTElCUykKLWxpYmZmaV9jb252ZW5pZW5jZS5sYTogJChsaWJmZmlfY29udmVuaWVuY2VfbGFfT0JKRUNUUykgJChsaWJmZmlfY29udmVuaWVuY2VfbGFfREVQRU5ERU5DSUVTKSAKK2xpYmZmaV9jb252ZW5pZW5jZS5sYTogJChsaWJmZmlfY29udmVuaWVuY2VfbGFfT0JKRUNUUykgJChsaWJmZmlfY29udmVuaWVuY2VfbGFfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYmZmaV9jb252ZW5pZW5jZV9sYV9ERVBFTkRFTkNJRVMpIAogCSQoTElOSykgICQobGliZmZpX2NvbnZlbmllbmNlX2xhX09CSkVDVFMpICQobGliZmZpX2NvbnZlbmllbmNlX2xhX0xJQkFERCkgJChMSUJTKQogCiBtb3N0bHljbGVhbi1jb21waWxlOgpAQCAtODAxLDYgKzg0NCw4IEBACiAJLXJtIC1mIHNyYy9hcm0vZmZpLmxvCiAJLXJtIC1mIHNyYy9hcm0vc3lzdi4kKE9CSkVYVCkKIAktcm0gLWYgc3JjL2FybS9zeXN2LmxvCisJLXJtIC1mIHNyYy9hcm0vdHJhbXBvbGluZS4kKE9CSkVYVCkKKwktcm0gLWYgc3JjL2FybS90cmFtcG9saW5lLmxvCiAJLXJtIC1mIHNyYy9hdnIzMi9mZmkuJChPQkpFWFQpCiAJLXJtIC1mIHNyYy9hdnIzMi9mZmkubG8KIAktcm0gLWYgc3JjL2F2cjMyL3N5c3YuJChPQkpFWFQpCkBAIC04MzcsNiArODgyLDEwIEBACiAJLXJtIC1mIHNyYy9taXBzL24zMi5sbwogCS1ybSAtZiBzcmMvbWlwcy9vMzIuJChPQkpFWFQpCiAJLXJtIC1mIHNyYy9taXBzL28zMi5sbworCS1ybSAtZiBzcmMvbW94aWUvZWFiaS4kKE9CSkVYVCkKKwktcm0gLWYgc3JjL21veGllL2VhYmkubG8KKwktcm0gLWYgc3JjL21veGllL2ZmaS4kKE9CSkVYVCkKKwktcm0gLWYgc3JjL21veGllL2ZmaS5sbwogCS1ybSAtZiBzcmMvcGEvZmZpLiQoT0JKRVhUKQogCS1ybSAtZiBzcmMvcGEvZmZpLmxvCiAJLXJtIC1mIHNyYy9wYS9ocHV4MzIuJChPQkpFWFQpCkBAIC05MTksNiArOTY4LDcgQEAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvYWxwaGEvJChERVBESVIpL29zZi5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9hcm0vJChERVBESVIpL2ZmaS5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9hcm0vJChERVBESVIpL3N5c3YuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvYXJtLyQoREVQRElSKS90cmFtcG9saW5lLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL2F2cjMyLyQoREVQRElSKS9mZmkuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvYXZyMzIvJChERVBESVIpL3N5c3YuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvY3Jpcy8kKERFUERJUikvZmZpLlBsb0BhbV9fcXVvdGVACkBAIC05MzQsNiArOTg0LDggQEAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvbWlwcy8kKERFUERJUikvZmZpLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL21pcHMvJChERVBESVIpL24zMi5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9taXBzLyQoREVQRElSKS9vMzIuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvbW94aWUvJChERVBESVIpL2VhYmkuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvbW94aWUvJChERVBESVIpL2ZmaS5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9wYS8kKERFUERJUikvZmZpLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL3BhLyQoREVQRElSKS9ocHV4MzIuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvcGEvJChERVBESVIpL2xpbnV4LlBsb0BhbV9fcXVvdGVACkBAIC0xMDI5LDYgKzEwODEsNyBAQAogCS1ybSAtcmYgc3JjL20zMnIvLmxpYnMgc3JjL20zMnIvX2xpYnMKIAktcm0gLXJmIHNyYy9tNjhrLy5saWJzIHNyYy9tNjhrL19saWJzCiAJLXJtIC1yZiBzcmMvbWlwcy8ubGlicyBzcmMvbWlwcy9fbGlicworCS1ybSAtcmYgc3JjL21veGllLy5saWJzIHNyYy9tb3hpZS9fbGlicwogCS1ybSAtcmYgc3JjL3BhLy5saWJzIHNyYy9wYS9fbGlicwogCS1ybSAtcmYgc3JjL3Bvd2VycGMvLmxpYnMgc3JjL3Bvd2VycGMvX2xpYnMKIAktcm0gLXJmIHNyYy9zMzkwLy5saWJzIHNyYy9zMzkwL19saWJzCkBAIC0xMjIxLDkgKzEyNzQsNyBAQAogCUAkKE5PUk1BTF9VTklOU1RBTEwpCiAJQGxpc3Q9JyQocGtnY29uZmlnX0RBVEEpJzsgdGVzdCAtbiAiJChwa2djb25maWdkaXIpIiB8fCBsaXN0PTsgXAogCWZpbGVzPWBmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gJCRwOyBkb25lIHwgc2VkIC1lICdzfF4uKi98fCdgOyBcCi0JdGVzdCAtbiAiJCRmaWxlcyIgfHwgZXhpdCAwOyBcCi0JZWNobyAiICggY2QgJyQoREVTVERJUikkKHBrZ2NvbmZpZ2RpciknICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAotCWNkICIkKERFU1RESVIpJChwa2djb25maWdkaXIpIiAmJiBybSAtZiAkJGZpbGVzCisJZGlyPSckKERFU1RESVIpJChwa2djb25maWdkaXIpJzsgJChhbV9fdW5pbnN0YWxsX2ZpbGVzX2Zyb21fZGlyKQogCiAjIFRoaXMgZGlyZWN0b3J5J3Mgc3ViZGlyZWN0b3JpZXMgYXJlIG1vc3RseSBpbmRlcGVuZGVudDsgeW91IGNhbiBjZAogIyBpbnRvIHRoZW0gYW5kIHJ1biBgbWFrZScgd2l0aG91dCBnb2luZyB0aHJvdWdoIHRoaXMgTWFrZWZpbGUuCkBAIC0xMjMyLDcgKzEyODMsNyBAQAogIyAgICAgKHdoaWNoIHdpbGwgY2F1c2UgdGhlIE1ha2VmaWxlcyB0byBiZSByZWdlbmVyYXRlZCB3aGVuIHlvdSBydW4gYG1ha2UnKTsKICMgKDIpIG90aGVyd2lzZSwgcGFzcyB0aGUgZGVzaXJlZCB2YWx1ZXMgb24gdGhlIGBtYWtlJyBjb21tYW5kIGxpbmUuCiAkKFJFQ1VSU0lWRV9UQVJHRVRTKToKLQlAZmFpbGNvbT0nZXhpdCAxJzsgXAorCUBmYWlsPSBmYWlsY29tPSdleGl0IDEnOyBcCiAJZm9yIGYgaW4geCAkJE1BS0VGTEFHUzsgZG8gXAogCSAgY2FzZSAkJGYgaW4gXAogCSAgICAqPSogfCAtLVsha10qKTs7IFwKQEAgLTEyNTcsNyArMTMwOCw3IEBACiAJZmk7IHRlc3QgLXogIiQkZmFpbCIKIAogJChSRUNVUlNJVkVfQ0xFQU5fVEFSR0VUUyk6Ci0JQGZhaWxjb209J2V4aXQgMSc7IFwKKwlAZmFpbD0gZmFpbGNvbT0nZXhpdCAxJzsgXAogCWZvciBmIGluIHggJCRNQUtFRkxBR1M7IGRvIFwKIAkgIGNhc2UgJCRmIGluIFwKIAkgICAgKj0qIHwgLS1bIWtdKik7OyBcCkBAIC0xNDI0LDcgKzE0NzUsOCBAQAogCSAgdG9wX2Rpc3RkaXI9IiQodG9wX2Rpc3RkaXIpIiBkaXN0ZGlyPSIkKGRpc3RkaXIpIiBcCiAJICBkaXN0LWluZm8KIAktdGVzdCAtbiAiJChhbV9fc2tpcF9tb2RlX2ZpeCkiIFwKLQl8fCBmaW5kICIkKGRpc3RkaXIpIiAtdHlwZSBkICEgLXBlcm0gLTc3NyAtZXhlYyBjaG1vZCBhK3J3eCB7fSBcOyAtbyBcCisJfHwgZmluZCAiJChkaXN0ZGlyKSIgLXR5cGUgZCAhIC1wZXJtIC03NTUgXAorCQktZXhlYyBjaG1vZCB1K3J3eCxnbytyeCB7fSBcOyAtbyBcCiAJICAhIC10eXBlIGQgISAtcGVybSAtNDQ0IC1saW5rcyAxIC1leGVjIGNobW9kIGErciB7fSBcOyAtbyBcCiAJICAhIC10eXBlIGQgISAtcGVybSAtNDAwIC1leGVjIGNobW9kIGErciB7fSBcOyAtbyBcCiAJICAhIC10eXBlIGQgISAtcGVybSAtNDQ0IC1leGVjICQoaW5zdGFsbF9zaCkgLWMgLW0gYStyIHt9IHt9IFw7IFwKQEAgLTE0MzQsNyArMTQ4NiwxMSBAQAogCSQoYW1fX3JlbW92ZV9kaXN0ZGlyKQogCiBkaXN0LWJ6aXAyOiBkaXN0ZGlyCi0JdGFyZGlyPSQoZGlzdGRpcikgJiYgJChhbV9fdGFyKSB8IGJ6aXAyIC05IC1jID4kKGRpc3RkaXIpLnRhci5iejIKKwl0YXJkaXI9JChkaXN0ZGlyKSAmJiAkKGFtX190YXIpIHwgQlpJUDI9JCR7QlpJUDItLTl9IGJ6aXAyIC1jID4kKGRpc3RkaXIpLnRhci5iejIKKwkkKGFtX19yZW1vdmVfZGlzdGRpcikKKworZGlzdC1semlwOiBkaXN0ZGlyCisJdGFyZGlyPSQoZGlzdGRpcikgJiYgJChhbV9fdGFyKSB8IGx6aXAgLWMgJCR7TFpJUF9PUFQtLTl9ID4kKGRpc3RkaXIpLnRhci5segogCSQoYW1fX3JlbW92ZV9kaXN0ZGlyKQogCiBkaXN0LWx6bWE6IGRpc3RkaXIKQEAgLTE0NDIsNyArMTQ5OCw3IEBACiAJJChhbV9fcmVtb3ZlX2Rpc3RkaXIpCiAKIGRpc3QteHo6IGRpc3RkaXIKLQl0YXJkaXI9JChkaXN0ZGlyKSAmJiAkKGFtX190YXIpIHwgeHogLWMgPiQoZGlzdGRpcikudGFyLnh6CisJdGFyZGlyPSQoZGlzdGRpcikgJiYgJChhbV9fdGFyKSB8IFhaX09QVD0kJHtYWl9PUFQtLWV9IHh6IC1jID4kKGRpc3RkaXIpLnRhci54egogCSQoYW1fX3JlbW92ZV9kaXN0ZGlyKQogCiBkaXN0LXRhclo6IGRpc3RkaXIKQEAgLTE0NjgsMTcgKzE1MjQsMTkgQEAKIGRpc3RjaGVjazogZGlzdAogCWNhc2UgJyQoRElTVF9BUkNISVZFUyknIGluIFwKIAkqLnRhci5neiopIFwKLQkgIEdaSVA9JChHWklQX0VOVikgZ3VuemlwIC1jICQoZGlzdGRpcikudGFyLmd6IHwgJChhbV9fdW50YXIpIDs7XAorCSAgR1pJUD0kKEdaSVBfRU5WKSBnemlwIC1kYyAkKGRpc3RkaXIpLnRhci5neiB8ICQoYW1fX3VudGFyKSA7O1wKIAkqLnRhci5iejIqKSBcCi0JICBidW56aXAyIC1jICQoZGlzdGRpcikudGFyLmJ6MiB8ICQoYW1fX3VudGFyKSA7O1wKKwkgIGJ6aXAyIC1kYyAkKGRpc3RkaXIpLnRhci5iejIgfCAkKGFtX191bnRhcikgOztcCiAJKi50YXIubHptYSopIFwKLQkgIHVubHptYSAtYyAkKGRpc3RkaXIpLnRhci5sem1hIHwgJChhbV9fdW50YXIpIDs7XAorCSAgbHptYSAtZGMgJChkaXN0ZGlyKS50YXIubHptYSB8ICQoYW1fX3VudGFyKSA7O1wKKwkqLnRhci5seiopIFwKKwkgIGx6aXAgLWRjICQoZGlzdGRpcikudGFyLmx6IHwgJChhbV9fdW50YXIpIDs7XAogCSoudGFyLnh6KikgXAogCSAgeHogLWRjICQoZGlzdGRpcikudGFyLnh6IHwgJChhbV9fdW50YXIpIDs7XAogCSoudGFyLloqKSBcCiAJICB1bmNvbXByZXNzIC1jICQoZGlzdGRpcikudGFyLlogfCAkKGFtX191bnRhcikgOztcCiAJKi5zaGFyLmd6KikgXAotCSAgR1pJUD0kKEdaSVBfRU5WKSBndW56aXAgLWMgJChkaXN0ZGlyKS5zaGFyLmd6IHwgdW5zaGFyIDs7XAorCSAgR1pJUD0kKEdaSVBfRU5WKSBnemlwIC1kYyAkKGRpc3RkaXIpLnNoYXIuZ3ogfCB1bnNoYXIgOztcCiAJKi56aXAqKSBcCiAJICB1bnppcCAkKGRpc3RkaXIpLnppcCA7O1wKIAllc2FjCkBAIC0xNDkyLDYgKzE1NTAsNyBAQAogCSAgJiYgYW1fX2N3ZD1gcHdkYCBcCiAJICAmJiAkKGFtX19jZCkgJChkaXN0ZGlyKS9fYnVpbGQgXAogCSAgJiYgLi4vY29uZmlndXJlIC0tc3JjZGlyPS4uIC0tcHJlZml4PSIkJGRjX2luc3RhbGxfYmFzZSIgXAorCSAgICAkKEFNX0RJU1RDSEVDS19DT05GSUdVUkVfRkxBR1MpIFwKIAkgICAgJChESVNUQ0hFQ0tfQ09ORklHVVJFX0ZMQUdTKSBcCiAJICAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBcCiAJICAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBkdmkgXApAQCAtMTUyMCw4ICsxNTc5LDE2IEBACiAJICBsaXN0PSckKERJU1RfQVJDSElWRVMpJzsgZm9yIGkgaW4gJCRsaXN0OyBkbyBlY2hvICQkaTsgZG9uZSkgfCBcCiAJICBzZWQgLWUgMWggLWUgMXMvLi89L2cgLWUgMXAgLWUgMXggLWUgJyQkcCcgLWUgJyQkeCcKIGRpc3R1bmluc3RhbGxjaGVjazoKLQlAJChhbV9fY2QpICckKGRpc3R1bmluc3RhbGxjaGVja19kaXIpJyBcCi0JJiYgdGVzdCBgJChkaXN0dW5pbnN0YWxsY2hlY2tfbGlzdGZpbGVzKSB8IHdjIC1sYCAtbGUgMSBcCisJQHRlc3QgLW4gJyQoZGlzdHVuaW5zdGFsbGNoZWNrX2RpciknIHx8IHsgXAorCSAgZWNobyAnRVJST1I6IHRyeWluZyB0byBydW4gJEAgd2l0aCBhbiBlbXB0eScgXAorCSAgICAgICAnJCQoZGlzdHVuaW5zdGFsbGNoZWNrX2RpciknID4mMjsgXAorCSAgZXhpdCAxOyBcCisJfTsgXAorCSQoYW1fX2NkKSAnJChkaXN0dW5pbnN0YWxsY2hlY2tfZGlyKScgfHwgeyBcCisJICBlY2hvICdFUlJPUjogY2Fubm90IGNoZGlyIGludG8gJChkaXN0dW5pbnN0YWxsY2hlY2tfZGlyKScgPiYyOyBcCisJICBleGl0IDE7IFwKKwl9OyBcCisJdGVzdCBgJChhbV9fZGlzdHVuaW5zdGFsbGNoZWNrX2xpc3RmaWxlcykgfCB3YyAtbGAgLWVxIDAgXAogCSAgIHx8IHsgZWNobyAiRVJST1I6IGZpbGVzIGxlZnQgYWZ0ZXIgdW5pbnN0YWxsOiIgOyBcCiAJICAgICAgICBpZiB0ZXN0IC1uICIkKERFU1RESVIpIjsgdGhlbiBcCiAJICAgICAgICAgIGVjaG8gIiAgKGNoZWNrIERFU1RESVIgc3VwcG9ydCkiOyBcCkBAIC0xNTU1LDEwICsxNjIyLDE1IEBACiAKIGluc3RhbGxjaGVjazogaW5zdGFsbGNoZWNrLXJlY3Vyc2l2ZQogaW5zdGFsbC1zdHJpcDoKLQkkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAotCSAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCi0JICBgdGVzdCAteiAnJChTVFJJUCknIHx8IFwKLQkgICAgZWNobyAiSU5TVEFMTF9QUk9HUkFNX0VOVj1TVFJJUFBST0c9JyQoU1RSSVApJyJgIGluc3RhbGwKKwlpZiB0ZXN0IC16ICckKFNUUklQKSc7IHRoZW4gXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICAgaW5zdGFsbDsgXAorCWVsc2UgXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICJJTlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknIiBpbnN0YWxsOyBcCisJZmkKIG1vc3RseWNsZWFuLWdlbmVyaWM6CiAKIGNsZWFuLWdlbmVyaWM6CkBAIC0xNTg3LDYgKzE2NTksOCBAQAogCS1ybSAtZiBzcmMvbTY4ay8kKGFtX19kaXJzdGFtcCkKIAktcm0gLWYgc3JjL21pcHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogCS1ybSAtZiBzcmMvbWlwcy8kKGFtX19kaXJzdGFtcCkKKwktcm0gLWYgc3JjL21veGllLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKKwktcm0gLWYgc3JjL21veGllLyQoYW1fX2RpcnN0YW1wKQogCS1ybSAtZiBzcmMvcGEvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogCS1ybSAtZiBzcmMvcGEvJChhbV9fZGlyc3RhbXApCiAJLXJtIC1mIHNyYy9wb3dlcnBjLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKQEAgLTE2MTIsNyArMTY4Niw3IEBACiAKIGRpc3RjbGVhbjogZGlzdGNsZWFuLXJlY3Vyc2l2ZQogCS1ybSAtZiAkKGFtX19DT05GSUdfRElTVENMRUFOX0ZJTEVTKQotCS1ybSAtcmYgc3JjLyQoREVQRElSKSBzcmMvYWxwaGEvJChERVBESVIpIHNyYy9hcm0vJChERVBESVIpIHNyYy9hdnIzMi8kKERFUERJUikgc3JjL2NyaXMvJChERVBESVIpIHNyYy9mcnYvJChERVBESVIpIHNyYy9pYTY0LyQoREVQRElSKSBzcmMvbTMyci8kKERFUERJUikgc3JjL202OGsvJChERVBESVIpIHNyYy9taXBzLyQoREVQRElSKSBzcmMvcGEvJChERVBESVIpIHNyYy9wb3dlcnBjLyQoREVQRElSKSBzcmMvczM5MC8kKERFUERJUikgc3JjL3NoLyQoREVQRElSKSBzcmMvc2g2NC8kKERFUERJUikgc3JjL3NwYXJjLyQoREVQRElSKSBzcmMveDg2LyQoREVQRElSKQorCS1ybSAtcmYgc3JjLyQoREVQRElSKSBzcmMvYWxwaGEvJChERVBESVIpIHNyYy9hcm0vJChERVBESVIpIHNyYy9hdnIzMi8kKERFUERJUikgc3JjL2NyaXMvJChERVBESVIpIHNyYy9mcnYvJChERVBESVIpIHNyYy9pYTY0LyQoREVQRElSKSBzcmMvbTMyci8kKERFUERJUikgc3JjL202OGsvJChERVBESVIpIHNyYy9taXBzLyQoREVQRElSKSBzcmMvbW94aWUvJChERVBESVIpIHNyYy9wYS8kKERFUERJUikgc3JjL3Bvd2VycGMvJChERVBESVIpIHNyYy9zMzkwLyQoREVQRElSKSBzcmMvc2gvJChERVBESVIpIHNyYy9zaDY0LyQoREVQRElSKSBzcmMvc3BhcmMvJChERVBESVIpIHNyYy94ODYvJChERVBESVIpCiAJLXJtIC1mIE1ha2VmaWxlCiBkaXN0Y2xlYW4tYW06IGNsZWFuLWFtIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIFwKIAlkaXN0Y2xlYW4taGRyIGRpc3RjbGVhbi1saWJ0b29sIGRpc3RjbGVhbi10YWdzCkBAIC0xNjU0LDEzICsxNzI4LDE0IEBACiAJZm9yIHAgaW4gJCRsaXN0OyBkbyBcCiAJICBpZiB0ZXN0IC1mICIkJHAiIHx8IHRlc3QgLWQgIiQkcCI7IHRoZW4gZD07IGVsc2UgZD0iJChzcmNkaXIpLyI7IGZpOyBcCiAJICAkKGFtX19zdHJpcF9kaXIpIFwKLQkgIGlmIHRlc3QgLWQgIiQkZCQkcCI7IHRoZW4gXAorCSAgZDI9JCRkJCRwOyBcCisJICBpZiB0ZXN0IC1kICIkJGQyIjsgdGhlbiBcCiAJICAgIGVjaG8gIiAkKE1LRElSX1ApICckKERFU1RESVIpJChodG1sZGlyKS8kJGYnIjsgXAogCSAgICAkKE1LRElSX1ApICIkKERFU1RESVIpJChodG1sZGlyKS8kJGYiIHx8IGV4aXQgMTsgXAotCSAgICBlY2hvICIgJChJTlNUQUxMX0RBVEEpICckJGQkJHAnLyogJyQoREVTVERJUikkKGh0bWxkaXIpLyQkZiciOyBcCi0JICAgICQoSU5TVEFMTF9EQVRBKSAiJCRkJCRwIi8qICIkKERFU1RESVIpJChodG1sZGlyKS8kJGYiIHx8IGV4aXQgJCQ/OyBcCisJICAgIGVjaG8gIiAkKElOU1RBTExfREFUQSkgJyQkZDInLyogJyQoREVTVERJUikkKGh0bWxkaXIpLyQkZiciOyBcCisJICAgICQoSU5TVEFMTF9EQVRBKSAiJCRkMiIvKiAiJChERVNURElSKSQoaHRtbGRpcikvJCRmIiB8fCBleGl0ICQkPzsgXAogCSAgZWxzZSBcCi0JICAgIGxpc3QyPSIkJGxpc3QyICQkZCQkcCI7IFwKKwkgICAgbGlzdDI9IiQkbGlzdDIgJCRkMiI7IFwKIAkgIGZpOyBcCiAJZG9uZTsgXAogCXRlc3QgLXogIiQkbGlzdDIiIHx8IHsgZWNobyAiJCRsaXN0MiIgfCAkKGFtX19iYXNlX2xpc3QpIHwgXApAQCAtMTY5Miw4ICsxNzY3LDEzIEBACiAJICBlY2hvICIgJChJTlNUQUxMX0RBVEEpICQkZmlsZXMgJyQoREVTVERJUikkKGluZm9kaXIpJyI7IFwKIAkgICQoSU5TVEFMTF9EQVRBKSAkJGZpbGVzICIkKERFU1RESVIpJChpbmZvZGlyKSIgfHwgZXhpdCAkJD87IGRvbmUKIAlAJChQT1NUX0lOU1RBTEwpCi0JQGlmIChpbnN0YWxsLWluZm8gLS12ZXJzaW9uICYmIFwKLQkgICAgIGluc3RhbGwtaW5mbyAtLXZlcnNpb24gMj4mMSB8IHNlZCAxcSB8IGdyZXAgLWkgLXYgZGViaWFuKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gXAorCUBhbV9fcnVuX2luc3RhbGxpbmZvPXllczsgXAorCWNhc2UgJCRBTV9VUERBVEVfSU5GT19ESVIgaW4gXAorCSAgbnxub3xOTykgYW1fX3J1bl9pbnN0YWxsaW5mbz1ubzs7IFwKKwkgICopIChpbnN0YWxsLWluZm8gLS12ZXJzaW9uKSA+L2Rldi9udWxsIDI+JjEgXAorCSAgICAgICB8fCBhbV9fcnVuX2luc3RhbGxpbmZvPW5vOzsgXAorCWVzYWM7IFwKKwlpZiB0ZXN0ICQkYW1fX3J1bl9pbnN0YWxsaW5mbyA9IHllczsgdGhlbiBcCiAJICBsaXN0PSckKElORk9fREVQUyknOyB0ZXN0IC1uICIkKGluZm9kaXIpIiB8fCBsaXN0PTsgXAogCSAgZm9yIGZpbGUgaW4gJCRsaXN0OyBkbyBcCiAJICAgIHJlbGZpbGU9YGVjaG8gIiQkZmlsZSIgfCBzZWQgJ3N8Xi4qL3x8J2A7IFwKQEAgLTE3MzIsNyArMTgxMiw3IEBACiBtYWludGFpbmVyLWNsZWFuOiBtYWludGFpbmVyLWNsZWFuLXJlY3Vyc2l2ZQogCS1ybSAtZiAkKGFtX19DT05GSUdfRElTVENMRUFOX0ZJTEVTKQogCS1ybSAtcmYgJCh0b3Bfc3JjZGlyKS9hdXRvbTR0ZS5jYWNoZQotCS1ybSAtcmYgc3JjLyQoREVQRElSKSBzcmMvYWxwaGEvJChERVBESVIpIHNyYy9hcm0vJChERVBESVIpIHNyYy9hdnIzMi8kKERFUERJUikgc3JjL2NyaXMvJChERVBESVIpIHNyYy9mcnYvJChERVBESVIpIHNyYy9pYTY0LyQoREVQRElSKSBzcmMvbTMyci8kKERFUERJUikgc3JjL202OGsvJChERVBESVIpIHNyYy9taXBzLyQoREVQRElSKSBzcmMvcGEvJChERVBESVIpIHNyYy9wb3dlcnBjLyQoREVQRElSKSBzcmMvczM5MC8kKERFUERJUikgc3JjL3NoLyQoREVQRElSKSBzcmMvc2g2NC8kKERFUERJUikgc3JjL3NwYXJjLyQoREVQRElSKSBzcmMveDg2LyQoREVQRElSKQorCS1ybSAtcmYgc3JjLyQoREVQRElSKSBzcmMvYWxwaGEvJChERVBESVIpIHNyYy9hcm0vJChERVBESVIpIHNyYy9hdnIzMi8kKERFUERJUikgc3JjL2NyaXMvJChERVBESVIpIHNyYy9mcnYvJChERVBESVIpIHNyYy9pYTY0LyQoREVQRElSKSBzcmMvbTMyci8kKERFUERJUikgc3JjL202OGsvJChERVBESVIpIHNyYy9taXBzLyQoREVQRElSKSBzcmMvbW94aWUvJChERVBESVIpIHNyYy9wYS8kKERFUERJUikgc3JjL3Bvd2VycGMvJChERVBESVIpIHNyYy9zMzkwLyQoREVQRElSKSBzcmMvc2gvJChERVBESVIpIHNyYy9zaDY0LyQoREVQRElSKSBzcmMvc3BhcmMvJChERVBESVIpIHNyYy94ODYvJChERVBESVIpCiAJLXJtIC1mIE1ha2VmaWxlCiBtYWludGFpbmVyLWNsZWFuLWFtOiBkaXN0Y2xlYW4tYW0gbWFpbnRhaW5lci1jbGVhbi1hbWluZm8gXAogCW1haW50YWluZXItY2xlYW4tZ2VuZXJpYyBtYWludGFpbmVyLWNsZWFuLXZ0aQpAQCAtMTc2MSwyNCArMTg0MSwyNCBAQAogCWFsbCBhbGwtYW0gYW0tLXJlZnJlc2ggY2hlY2sgY2hlY2stYW0gY2xlYW4gY2xlYW4tYW1pbmZvIFwKIAljbGVhbi1nZW5lcmljIGNsZWFuLWxpYkxUTElCUkFSSUVTIGNsZWFuLWxpYnRvb2wgXAogCWNsZWFuLW5vaW5zdExUTElCUkFSSUVTIGN0YWdzIGN0YWdzLXJlY3Vyc2l2ZSBkaXN0IGRpc3QtYWxsIFwKLQlkaXN0LWJ6aXAyIGRpc3QtZ3ppcCBkaXN0LWluZm8gZGlzdC1sem1hIGRpc3Qtc2hhciBkaXN0LXRhclogXAotCWRpc3QteHogZGlzdC16aXAgZGlzdGNoZWNrIGRpc3RjbGVhbiBkaXN0Y2xlYW4tY29tcGlsZSBcCi0JZGlzdGNsZWFuLWdlbmVyaWMgZGlzdGNsZWFuLWhkciBkaXN0Y2xlYW4tbGlidG9vbCBcCi0JZGlzdGNsZWFuLXRhZ3MgZGlzdGNsZWFuY2hlY2sgZGlzdGRpciBkaXN0dW5pbnN0YWxsY2hlY2sgZHZpIFwKLQlkdmktYW0gaHRtbCBodG1sLWFtIGluZm8gaW5mby1hbSBpbnN0YWxsIGluc3RhbGwtYW0gXAotCWluc3RhbGwtZGF0YSBpbnN0YWxsLWRhdGEtYW0gaW5zdGFsbC1kdmkgaW5zdGFsbC1kdmktYW0gXAotCWluc3RhbGwtZXhlYyBpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1odG1sIGluc3RhbGwtaHRtbC1hbSBcCi0JaW5zdGFsbC1pbmZvIGluc3RhbGwtaW5mby1hbSBpbnN0YWxsLWxpYkxUTElCUkFSSUVTIFwKLQlpbnN0YWxsLW1hbiBpbnN0YWxsLXBkZiBpbnN0YWxsLXBkZi1hbSBpbnN0YWxsLXBrZ2NvbmZpZ0RBVEEgXAotCWluc3RhbGwtcHMgaW5zdGFsbC1wcy1hbSBpbnN0YWxsLXN0cmlwIGluc3RhbGxjaGVjayBcCi0JaW5zdGFsbGNoZWNrLWFtIGluc3RhbGxkaXJzIGluc3RhbGxkaXJzLWFtIG1haW50YWluZXItY2xlYW4gXAotCW1haW50YWluZXItY2xlYW4tYW1pbmZvIG1haW50YWluZXItY2xlYW4tZ2VuZXJpYyBcCi0JbWFpbnRhaW5lci1jbGVhbi12dGkgbW9zdGx5Y2xlYW4gbW9zdGx5Y2xlYW4tYW1pbmZvIFwKLQltb3N0bHljbGVhbi1jb21waWxlIG1vc3RseWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4tbGlidG9vbCBcCi0JbW9zdGx5Y2xlYW4tdnRpIHBkZiBwZGYtYW0gcHMgcHMtYW0gdGFncyB0YWdzLXJlY3Vyc2l2ZSBcCi0JdW5pbnN0YWxsIHVuaW5zdGFsbC1hbSB1bmluc3RhbGwtZHZpLWFtIHVuaW5zdGFsbC1odG1sLWFtIFwKLQl1bmluc3RhbGwtaW5mby1hbSB1bmluc3RhbGwtbGliTFRMSUJSQVJJRVMgdW5pbnN0YWxsLXBkZi1hbSBcCi0JdW5pbnN0YWxsLXBrZ2NvbmZpZ0RBVEEgdW5pbnN0YWxsLXBzLWFtCisJZGlzdC1iemlwMiBkaXN0LWd6aXAgZGlzdC1pbmZvIGRpc3QtbHppcCBkaXN0LWx6bWEgZGlzdC1zaGFyIFwKKwlkaXN0LXRhclogZGlzdC14eiBkaXN0LXppcCBkaXN0Y2hlY2sgZGlzdGNsZWFuIFwKKwlkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYyBkaXN0Y2xlYW4taGRyIFwKKwlkaXN0Y2xlYW4tbGlidG9vbCBkaXN0Y2xlYW4tdGFncyBkaXN0Y2xlYW5jaGVjayBkaXN0ZGlyIFwKKwlkaXN0dW5pbnN0YWxsY2hlY2sgZHZpIGR2aS1hbSBodG1sIGh0bWwtYW0gaW5mbyBpbmZvLWFtIFwKKwlpbnN0YWxsIGluc3RhbGwtYW0gaW5zdGFsbC1kYXRhIGluc3RhbGwtZGF0YS1hbSBpbnN0YWxsLWR2aSBcCisJaW5zdGFsbC1kdmktYW0gaW5zdGFsbC1leGVjIGluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWh0bWwgXAorCWluc3RhbGwtaHRtbC1hbSBpbnN0YWxsLWluZm8gaW5zdGFsbC1pbmZvLWFtIFwKKwlpbnN0YWxsLWxpYkxUTElCUkFSSUVTIGluc3RhbGwtbWFuIGluc3RhbGwtcGRmIGluc3RhbGwtcGRmLWFtIFwKKwlpbnN0YWxsLXBrZ2NvbmZpZ0RBVEEgaW5zdGFsbC1wcyBpbnN0YWxsLXBzLWFtIGluc3RhbGwtc3RyaXAgXAorCWluc3RhbGxjaGVjayBpbnN0YWxsY2hlY2stYW0gaW5zdGFsbGRpcnMgaW5zdGFsbGRpcnMtYW0gXAorCW1haW50YWluZXItY2xlYW4gbWFpbnRhaW5lci1jbGVhbi1hbWluZm8gXAorCW1haW50YWluZXItY2xlYW4tZ2VuZXJpYyBtYWludGFpbmVyLWNsZWFuLXZ0aSBtb3N0bHljbGVhbiBcCisJbW9zdGx5Y2xlYW4tYW1pbmZvIG1vc3RseWNsZWFuLWNvbXBpbGUgbW9zdGx5Y2xlYW4tZ2VuZXJpYyBcCisJbW9zdGx5Y2xlYW4tbGlidG9vbCBtb3N0bHljbGVhbi12dGkgcGRmIHBkZi1hbSBwcyBwcy1hbSB0YWdzIFwKKwl0YWdzLXJlY3Vyc2l2ZSB1bmluc3RhbGwgdW5pbnN0YWxsLWFtIHVuaW5zdGFsbC1kdmktYW0gXAorCXVuaW5zdGFsbC1odG1sLWFtIHVuaW5zdGFsbC1pbmZvLWFtIHVuaW5zdGFsbC1saWJMVExJQlJBUklFUyBcCisJdW5pbnN0YWxsLXBkZi1hbSB1bmluc3RhbGwtcGtnY29uZmlnREFUQSB1bmluc3RhbGwtcHMtYW0KIAogCiAjIE5vIGluc3RhbGwtaHRtbCBvciBpbnN0YWxsLXBkZiBzdXBwb3J0IGluIGF1dG9tYWtlIHlldApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9SRUFETUUgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL1JFQURNRQppbmRleCAxNjdkZTQyLi5iY2M3MTc4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL1JFQURNRQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL1JFQURNRQpAQCAtMSw3ICsxLDcgQEAKIFN0YXR1cwogPT09PT09CiAKLWxpYmZmaS0zLjAuMTAgd2FzIHJlbGVhc2VkIG9uIFhYWFhYWFhYWFgsIDIwMTAuIENoZWNrIHRoZSBsaWJmZmkgd2ViCitsaWJmZmktMy4wLjExIHdhcyByZWxlYXNlZCBvbiBBcHJpbCAxMSwgMjAxMi4gIENoZWNrIHRoZSBsaWJmZmkgd2ViCiBwYWdlIGZvciB1cGRhdGVzOiA8VVJMOmh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9saWJmZmkvPi4KIAogCkBAIC00Myw3ICs0Myw3IEBACiBGb3Igc3BlY2lmaWMgY29uZmlndXJhdGlvbiBkZXRhaWxzIGFuZCB0ZXN0aW5nIHN0YXR1cywgcGxlYXNlCiByZWZlciB0byB0aGUgd2lraSBwYWdlIGhlcmU6CiAKLSBodHRwOi8vd3d3Lm1veGllbG9naWMub3JnL3dpa2kvaW5kZXgucGhwP3RpdGxlPUxpYmZmaV8zLjAuMTAKKyBodHRwOi8vd3d3Lm1veGllbG9naWMub3JnL3dpa2kvaW5kZXgucGhwP3RpdGxlPUxpYmZmaV8zLjAuMTEKIAogQXQgdGhlIHRpbWUgb2YgcmVsZWFzZSwgdGhlIGZvbGxvd2luZyBiYXNpYyBjb25maWd1cmF0aW9ucyBoYXZlIGJlZW4KIHRlc3RlZDoKQEAgLTU0LDEyICs1NCwxNyBAQAogfCBBbHBoYSAgICAgICAgfCBMaW51eCAgICAgICAgICAgIHwKIHwgQWxwaGEgICAgICAgIHwgVHJ1NjQgICAgICAgICAgICB8CiB8IEFSTSAgICAgICAgICB8IExpbnV4ICAgICAgICAgICAgfAorfCBBUk0gICAgICAgICAgfCBpT1MgICAgICAgICAgICAgIHwKIHwgQVZSMzIgICAgICAgIHwgTGludXggICAgICAgICAgICB8CiB8IEhQUEEgICAgICAgICB8IEhQVVggICAgICAgICAgICAgfAogfCBJQS02NCAgICAgICAgfCBMaW51eCAgICAgICAgICAgIHwKK3wgTTY4SyAgICAgICAgIHwgRnJlZU1pTlQgICAgICAgICB8Cit8IE02OEsgICAgICAgICB8IFJURU1TICAgICAgICAgICAgfAogfCBNSVBTICAgICAgICAgfCBJUklYICAgICAgICAgICAgIHwKIHwgTUlQUyAgICAgICAgIHwgTGludXggICAgICAgICAgICB8Cit8IE1JUFMgICAgICAgICB8IFJURU1TICAgICAgICAgICAgfAogfCBNSVBTNjQgICAgICAgfCBMaW51eCAgICAgICAgICAgIHwKK3wgUG93ZXJQQyAgICAgIHwgQU1JR0EgICAgICAgICAgICB8CiB8IFBvd2VyUEMgICAgICB8IExpbnV4ICAgICAgICAgICAgfAogfCBQb3dlclBDICAgICAgfCBNYWMgT1NYICAgICAgICAgIHwKIHwgUG93ZXJQQyAgICAgIHwgRnJlZUJTRCAgICAgICAgICB8CkBAIC03MSwxNSArNzYsMTggQEAKIHwgU1BBUkM2NCAgICAgIHwgTGludXggICAgICAgICAgICB8CiB8IFNQQVJDNjQgICAgICB8IEZyZWVCU0QgICAgICAgICAgfAogfCBYODYgICAgICAgICAgfCBGcmVlQlNEICAgICAgICAgIHwKK3wgWDg2ICAgICAgICAgIHwgSW50ZXJpeCAgICAgICAgICB8CiB8IFg4NiAgICAgICAgICB8IGtGcmVlQlNEICAgICAgICAgfAogfCBYODYgICAgICAgICAgfCBMaW51eCAgICAgICAgICAgIHwKIHwgWDg2ICAgICAgICAgIHwgTWFjIE9TWCAgICAgICAgICB8CiB8IFg4NiAgICAgICAgICB8IE9wZW5CU0QgICAgICAgICAgfAorfCBYODYgICAgICAgICAgfCBPUy8yICAgICAgICAgICAgIHwKIHwgWDg2ICAgICAgICAgIHwgU29sYXJpcyAgICAgICAgICB8CiB8IFg4NiAgICAgICAgICB8IFdpbmRvd3MvQ3lnd2luICAgfAogfCBYODYgICAgICAgICAgfCBXaW5kb3dzL01pbmdXICAgIHwKIHwgWDg2LTY0ICAgICAgIHwgRnJlZUJTRCAgICAgICAgICB8CiB8IFg4Ni02NCAgICAgICB8IExpbnV4ICAgICAgICAgICAgfAorfCBYODYtNjQgICAgICAgfCBMaW51eC94MzIgICAgICAgIHwKIHwgWDg2LTY0ICAgICAgIHwgT3BlbkJTRCAgICAgICAgICB8CiB8IFg4Ni02NCAgICAgICB8IFdpbmRvd3MvTWluZ1cgICAgfAogfC0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLXwKQEAgLTExMyw5ICsxMjEsMTYgQEAKIE1pY3Jvc29mdCdzIFZpc3VhbCBDKysgY29tcGlsZXIuICBJbiB0aGlzIGNhc2UsIHVzZSB0aGUgbXN2Y2Muc2gKIHdyYXBwZXIgc2NyaXB0IGR1cmluZyBjb25maWd1cmF0aW9uIGxpa2Ugc286CiAKLXBhdGgvdG8vY29uZmlndXJlIC0tZW5hYmxlLXNoYXJlZCAtLWVuYWJsZS1zdGF0aWMgXAotCUNDPXBhdGgvdG8vbXN2Y2Muc2ggTEQ9bGluayBcCi0JQ1BQPVwiY2wgLW5vbG9nbyAtRVBcIgorcGF0aC90by9jb25maWd1cmUgQ0M9cGF0aC90by9tc3ZjYy5zaCBMRD1saW5rIENQUD1cImNsIC1ub2xvZ28gLUVQXCIKKworRm9yIDY0LWJpdCBXaW5kb3dzIGJ1aWxkcywgdXNlIENDPSJwYXRoL3RvL21zdmNjLnNoIC1tNjQiLgorWW91IG1heSBhbHNvIG5lZWQgdG8gc3BlY2lmeSAtLWJ1aWxkIGFwcHJvcHJpYXRlbHkuIFdoZW4gYnVpbGRpbmcgd2l0aCBNU1ZDCit1bmRlciBhIE1pbmdXIGVudmlyb25tZW50LCB5b3UgbWF5IG5lZWQgdG8gcmVtb3ZlIHRoZSBsaW5lIGluIGNvbmZpZ3VyZQordGhhdCBzZXRzICdmaXhfc3JjZmlsZV9wYXRoJyB0byBhICdjeWdwYXRoJyBjb21tYW5kLiAoJ2N5Z3BhdGgnIGlzIG5vdAorcHJlc2VudCBpbiBNaW5nVywgYW5kIGlzIG5vdCByZXF1aXJlZCB3aGVuIHVzaW5nIE1pbmdXLXN0eWxlIHBhdGhzLikKKworRm9yIGlPUyBidWlsZHMsIHJ1biBnZW5lcmF0ZS1pb3Mtc291cmNlLWFuZC1oZWFkZXJzLnB5IGFuZCB0aGVuCitsaWJmZmkueGNvZGVwcm9qIHNob3VsZCB3b3JrLgogCiBDb25maWd1cmUgaGFzIG1hbnkgb3RoZXIgb3B0aW9ucy4gVXNlICJjb25maWd1cmUgLS1oZWxwIiB0byBzZWUgdGhlbSBhbGwuCiAKQEAgLTEzMywxMSArMTQ4LDMwIEBACiAKIFNlZSB0aGUgQ2hhbmdlTG9nIGZpbGVzIGZvciBkZXRhaWxzLgogCi0zLjAuMTAgPz8/LT8/LT8/Ci0gICAgICAgIEZpeCB0aGUgTjY0IGJ1aWxkIG9uIG1pcHMtc2dpLWlyaXg2LjUuCi0JVGVzdHN1aXRlIGZpeGVzIGZvciBUcnU2NCBVbml4LgorMy4wLjExIEFwci0xMS0xMgorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdmFyaWFkaWMgZnVuY3Rpb25zIChmZmlfcHJlcF9jaWZfdmFyKS4KKwlBZGQgTGludXgveDMyIHN1cHBvcnQuCisJQWRkIHRoaXNjYWxsLCBmYXN0Y2FsbCBhbmQgTVNWQyBjZGVjbCBzdXBwb3J0IG9uIFdpbmRvd3MuCisgICAgICAgIEFkZCBBbWlnYSBhbmQgbmV3ZXIgTWFjT1Mgc3VwcG9ydC4KKwlBZGQgbTY4ayBGcmVlTWlOVCBzdXBwb3J0LgorCUludGVncmF0aW9uIHdpdGggaU9TJyB4Y29kZSBidWlsZCB0b29scy4KKwlGaXggT2N0ZW9uIGFuZCBNQzY4ODgxIHN1cHBvcnQuCisJRml4IGNvZGUgcGVzc2ltaXphdGlvbnMuCisgICAgICAgIExvdHMgb2YgYnVpbGQgZml4ZXMuCisKKzMuMC4xMCBBdWctMjMtMTEKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEFwcGxlJ3MgaU9TLgorCUFkZCBzdXBwb3J0IGZvciBBUk0gVkZQIEFCSS4KKyAgICAgICAgQWRkIFJURU1TIHN1cHBvcnQgZm9yIE1JUFMgYW5kIE02OEsuCisJRml4IGluc3RydWN0aW9uIGNhY2hlIGNsZWFyaW5nIHByb2JsZW1zIG9uCisJICBBUk0gYW5kIFNQQVJDLgorCUZpeCB0aGUgTjY0IGJ1aWxkIG9uIG1pcHMtc2dpLWlyaXg2LjUuCiAJRW5hYmxlIGJ1aWxkcyB3aXRoIE1pY3Jvc29mdCdzIGNvbXBpbGVyLgotCUVuYWJsZSB4ODYgYnVpbGRzIHdpdGggU3VuJ3MgY29tcGlsZXIuCisJRW5hYmxlIHg4NiBidWlsZHMgd2l0aCBPcmFjbGUncyBTb2xhcmlzIGNvbXBpbGVyLgorCUZpeCBzdXBwb3J0IGZvciBjYWxsaW5nIGNvZGUgY29tcGlsZWQgd2l0aCBPcmFjbGUncyBTcGFyYworCSAgU29sYXJpcyBjb21waWxlci4KKwlUZXN0c3VpdGUgZml4ZXMgZm9yIFRydTY0IFVuaXguCisJQWRkaXRpb25hbCBwbGF0Zm9ybSBzdXBwb3J0LgogCiAzLjAuOSBEZWMtMzEtMDkKICAgICAgICAgQWRkIEFWUjMyIGFuZCB3aW42NCBwb3J0cy4gIEFkZCBBUk0gc29mdGZwIHN1cHBvcnQuCkBAIC0yNjcsNyArMzAxLDcgQEAKIEF1dGhvcnMgJiBDcmVkaXRzCiA9PT09PT09PT09PT09PT09PQogCi1saWJmZmkgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBBbnRob255IEdyZWVuIDxncmVlbkByZWRoYXQuY29tPi4KK2xpYmZmaSB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGJ5IEFudGhvbnkgR3JlZW4gPGdyZWVuQG1veGllbG9naWMuY29tPi4KIAogVGhlIGRldmVsb3BlcnMgb2YgdGhlIEdOVSBDb21waWxlciBDb2xsZWN0aW9uIHByb2plY3QgaGF2ZSBtYWRlCiBpbm51bWVyYWJsZSB2YWx1YWJsZSBjb250cmlidXRpb25zLiAgU2VlIHRoZSBDaGFuZ2VMb2cgZmlsZSBmb3IKQEAgLTMxOCw1ICszNTIsNiBAQAogVGhlIGxpc3QgYWJvdmUgaXMgYWxtb3N0IGNlcnRhaW5seSBpbmNvbXBsZXRlIGFuZCBpbmFjY3VyYXRlLiAgSSdtCiBoYXBweSB0byBtYWtlIGNvcnJlY3Rpb25zIG9yIGFkZGl0aW9ucyB1cG9uIHJlcXVlc3QuCiAKLUlmIHlvdSBoYXZlIGEgcHJvYmxlbSwgb3IgaGF2ZSBmb3VuZCBhIGJ1ZywgcGxlYXNlIHNlbmQgYSBub3RlIHRvCi1ncmVlbkByZWRoYXQuY29tLgorSWYgeW91IGhhdmUgYSBwcm9ibGVtLCBvciBoYXZlIGZvdW5kIGEgYnVnLCBwbGVhc2Ugc2VuZCBhIG5vdGUgdG8gdGhlCithdXRob3IgYXQgZ3JlZW5AbW94aWVsb2dpYy5jb20sIG9yIHRoZSBwcm9qZWN0IG1haWxpbmcgbGlzdCBhdAorbGliZmZpLWRpc2N1c3NAc291cmNld2FyZS5vcmcuCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2FjbG9jYWwubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2FjbG9jYWwubTQKaW5kZXggYzhlNTI2Zi4uZDMzM2ZmMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9hY2xvY2FsLm00CisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvYWNsb2NhbC5tNApAQCAtMSw3ICsxLDggQEAKLSMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgYWNsb2NhbCAxLjExLjEgLSotIEF1dG9jb25mIC0qLQorIyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBhY2xvY2FsIDEuMTEuMyAtKi0gQXV0b2NvbmYgLSotCiAKICMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LAotIyAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisjIEluYy4KICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgpAQCAtMTMsMTggKzE0LDgzOSBAQAogCiBtNF9pZm5kZWYoW0FDX0FVVE9DT05GX1ZFUlNJT05dLAogICBbbTRfY29weShbbTRfUEFDS0FHRV9WRVJTSU9OXSwgW0FDX0FVVE9DT05GX1ZFUlNJT05dKV0pZG5sCi1tNF9pZihtNF9kZWZuKFtBQ19BVVRPQ09ORl9WRVJTSU9OXSksIFsyLjY1XSwsCi1bbTRfd2FybmluZyhbdGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgZm9yIGF1dG9jb25mIDIuNjUuCittNF9pZihtNF9kZWZuKFtBQ19BVVRPQ09ORl9WRVJTSU9OXSksIFsyLjY4XSwsCitbbTRfd2FybmluZyhbdGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgZm9yIGF1dG9jb25mIDIuNjguCiBZb3UgaGF2ZSBhbm90aGVyIHZlcnNpb24gb2YgYXV0b2NvbmYuICBJdCBtYXkgd29yaywgYnV0IGlzIG5vdCBndWFyYW50ZWVkIHRvLgogSWYgeW91IGhhdmUgcHJvYmxlbXMsIHlvdSBtYXkgbmVlZCB0byByZWdlbmVyYXRlIHRoZSBidWlsZCBzeXN0ZW0gZW50aXJlbHkuCiBUbyBkbyBzbywgdXNlIHRoZSBwcm9jZWR1cmUgZG9jdW1lbnRlZCBieSB0aGUgcGFja2FnZSwgdHlwaWNhbGx5IGBhdXRvcmVjb25mJy5dKV0pCiAKLSMgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgbHRkbC5tNCAtIENvbmZpZ3VyZSBsdGRsIGZvciB0aGUgdGFyZ2V0IHN5c3RlbS4gLSotQXV0b2NvbmYtKi0KKyMKKyMgICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwNiwgMjAwNywgMjAwOCwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBXcml0dGVuIGJ5IFRob21hcyBUYW5uZXIsIDE5OTkKKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKKyMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCAxOCBMVERMX0lOSVQKKworIyBMVF9DT05GSUdfTFRETF9ESVIoRElSRUNUT1JZLCBbTFRETC1NT0RFXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERJUkVDVE9SWSBjb250YWlucyB0aGUgbGlibHRkbCBzb3VyY2VzLiAgSXQgaXMgb2theSB0byBjYWxsIHRoaXMKKyMgZnVuY3Rpb24gbXVsdGlwbGUgdGltZXMsIGFzIGxvbmcgYXMgdGhlIHNhbWUgRElSRUNUT1JZIGlzIGFsd2F5cyBnaXZlbi4KK0FDX0RFRlVOKFtMVF9DT05GSUdfTFRETF9ESVJdLAorW0FDX0JFRk9SRShbJDBdLCBbTFRETF9JTklUXSkKK18kMCgkKikKK10pIyBMVF9DT05GSUdfTFRETF9ESVIKKworIyBXZSBicmVhayB0aGlzIG91dCBpbnRvIGEgc2VwYXJhdGUgbWFjcm8sIHNvIHRoYXQgd2UgY2FuIGNhbGwgaXQgc2FmZWx5CisjIGludGVybmFsbHkgd2l0aG91dCBiZWluZyBjYXVnaHQgYWNjaWRlbnRhbGx5IGJ5IHRoZSBzZWQgc2NhbiBpbiBsaWJ0b29saXplLgorbTRfZGVmdW4oW19MVF9DT05GSUdfTFRETF9ESVJdLAorW2RubCByZW1vdmUgdHJhaWxpbmcgc2xhc2hlcworbTRfcHVzaGRlZihbX0FSR19ESVJdLCBtNF9icGF0c3Vic3QoWyQxXSwgWy8qJF0pKQorbTRfY2FzZShfTFRETF9ESVIsCisJW10sIFtkbmwgb25seSBzZXQgbHRfbHRkbF9kaXIgaWYgX0FSR19ESVIgaXMgbm90IHNpbXBseSBgLicKKwkgICAgIG00X2lmKF9BUkdfRElSLCBbLl0sCisJICAgICAgICAgICAgIFtdLAorCQkgW200X2RlZmluZShbX0xURExfRElSXSwgX0FSR19ESVIpCisJICAgICAgICAgIF9MVF9TSEVMTF9JTklUKFtsdF9sdGRsX2Rpcj0nXV9BUkdfRElSWyddKV0pXSwKKyAgICBbbTRfaWYoX0FSR19ESVIsIF9MVERMX0RJUiwKKwkgICAgW10sCisJW200X2ZhdGFsKFttdWx0aXBsZSBsaWJsdGRsIGRpcmVjdG9yaWVzOiBgXV9MVERMX0RJUlsnLCBgXV9BUkdfRElSWyddKV0pXSkKK200X3BvcGRlZihbX0FSR19ESVJdKQorXSkjIF9MVF9DT05GSUdfTFRETF9ESVIKKworIyBJbml0aWFsaXNlOgorbTRfZGVmaW5lKFtfTFRETF9ESVJdLCBbXSkKKworCisjIF9MVF9CVUlMRF9QUkVGSVgKKyMgLS0tLS0tLS0tLS0tLS0tLQorIyBJZiBBdXRvY29uZiBpcyBuZXcgZW5vdWdoLCBleHBhbmQgdG8gYCR7dG9wX2J1aWxkX3ByZWZpeH0nLCBvdGhlcndpc2UKKyMgdG8gYCR7dG9wX2J1aWxkZGlyfS8nLgorbTRfZGVmaW5lKFtfTFRfQlVJTERfUFJFRklYXSwKK1ttNF9pZmRlZihbQUNfQVVUT0NPTkZfVkVSU0lPTl0sCisgICBbbTRfaWYobTRfdmVyc2lvbl9jb21wYXJlKG00X2RlZm4oW0FDX0FVVE9DT05GX1ZFUlNJT05dKSwgWzIuNjJdKSwKKwkgIFstMV0sIFttNF9pZmRlZihbX0FDX0hBVkVfVE9QX0JVSUxEX1BSRUZJWF0sCisJCQkgIFske3RvcF9idWlsZF9wcmVmaXh9XSwKKwkJCSAgWyR7dG9wX2J1aWxkZGlyfS9dKV0sCisJICBbJHt0b3BfYnVpbGRfcHJlZml4fV0pXSwKKyAgIFske3RvcF9idWlsZGRpcn0vXSlbXWRubAorXSkKKworCisjIExURExfQ09OVkVOSUVOQ0UKKyMgLS0tLS0tLS0tLS0tLS0tLQorIyBzZXRzIExJQkxUREwgdG8gdGhlIGxpbmsgZmxhZ3MgZm9yIHRoZSBsaWJsdGRsIGNvbnZlbmllbmNlIGxpYnJhcnkgYW5kCisjIExURExJTkNMIHRvIHRoZSBpbmNsdWRlIGZsYWdzIGZvciB0aGUgbGlibHRkbCBoZWFkZXIgYW5kIGFkZHMKKyMgLS1lbmFibGUtbHRkbC1jb252ZW5pZW5jZSB0byB0aGUgY29uZmlndXJlIGFyZ3VtZW50cy4gIE5vdGUgdGhhdAorIyBBQ19DT05GSUdfU1VCRElSUyBpcyBub3QgY2FsbGVkIGhlcmUuICBMSUJMVERMIHdpbGwgYmUgcHJlZml4ZWQgd2l0aAorIyAnJHt0b3BfYnVpbGRfcHJlZml4fScgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2Ugd2l0aCAnJHt0b3BfYnVpbGRkaXJ9LycsCisjIGFuZCBMVERMSU5DTCB3aWxsIGJlIHByZWZpeGVkIHdpdGggJyR7dG9wX3NyY2Rpcn0vJyAobm90ZSB0aGUgc2luZ2xlCisjIHF1b3RlcyEpLiAgSWYgeW91ciBwYWNrYWdlIGlzIG5vdCBmbGF0IGFuZCB5b3UncmUgbm90IHVzaW5nIGF1dG9tYWtlLAorIyBkZWZpbmUgdG9wX2J1aWxkX3ByZWZpeCwgdG9wX2J1aWxkZGlyLCBhbmQgdG9wX3NyY2RpciBhcHByb3ByaWF0ZWx5CisjIGluIHlvdXIgTWFrZWZpbGVzLgorQUNfREVGVU4oW0xURExfQ09OVkVOSUVOQ0VdLAorW0FDX0JFRk9SRShbJDBdLCBbTFRETF9JTklUXSlkbmwKK2RubCBBbHRob3VnaCB0aGUgYXJndW1lbnQgaXMgZGVwcmVjYXRlZCBhbmQgbm8gbG9uZ2VyIGRvY3VtZW50ZWQsCitkbmwgTFRETF9DT05WRU5JRU5DRSB1c2VkIHRvIHRha2UgYSBESVJFQ1RPUlkgb3JndW1lbnQsIGlmIHdlIGhhdmUgb25lCitkbmwgaGVyZSBtYWtlIHN1cmUgaXQgaXMgdGhlIHNhbWUgYXMgYW55IG90aGVyIGRlY2xhcmF0aW9uIG9mIGxpYmx0ZGwncworZG5sIGxvY2F0aW9uISAgVGhpcyBhbHNvIGVuc3VyZXMgbHRfbHRkbF9kaXIgaXMgc2V0IHdoZW4gY29uZmlndXJlLmFjIGlzCitkbmwgbm90IHlldCB1c2luZyBhbiBleHBsaWNpdCBMVF9DT05GSUdfTFRETF9ESVIuCittNF9pZnZhbChbJDFdLCBbX0xUX0NPTkZJR19MVERMX0RJUihbJDFdKV0pZG5sCitfJDAoKQorXSkjIExURExfQ09OVkVOSUVOQ0UKKworIyBBQ19MSUJMVERMX0NPTlZFTklFTkNFIGFjY2VwdGVkIGEgZGlyZWN0b3J5IGFyZ3VtZW50IGluIG9sZGVyIGxpYnRvb2xzLAorIyBub3cgd2UgaGF2ZSBMVF9DT05GSUdfTFRETF9ESVI6CitBVV9ERUZVTihbQUNfTElCTFRETF9DT05WRU5JRU5DRV0sCitbX0xUX0NPTkZJR19MVERMX0RJUihbbTRfZGVmYXVsdChbJDFdLCBbbGlibHRkbF0pXSkKK19MVERMX0NPTlZFTklFTkNFXSkKKworZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MSUJMVERMX0NPTlZFTklFTkNFXSwgW10pCisKKworIyBfTFRETF9DT05WRU5JRU5DRQorIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBDb2RlIHNoYXJlZCBieSBMVERMX0NPTlZFTklFTkNFIGFuZCBMVERMX0lOSVQoW2NvbnZlbmllbmNlXSkuCittNF9kZWZ1bihbX0xURExfQ09OVkVOSUVOQ0VdLAorW2Nhc2UgJGVuYWJsZV9sdGRsX2NvbnZlbmllbmNlIGluCisgIG5vKSBBQ19NU0dfRVJST1IoW3RoaXMgcGFja2FnZSBuZWVkcyBhIGNvbnZlbmllbmNlIGxpYmx0ZGxdKSA7OworICAiIikgZW5hYmxlX2x0ZGxfY29udmVuaWVuY2U9eWVzCisgICAgICBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzIC0tZW5hYmxlLWx0ZGwtY29udmVuaWVuY2UiIDs7Citlc2FjCitMSUJMVERMPSdfTFRfQlVJTERfUFJFRklYJyIke2x0X2x0ZGxfZGlyKyRsdF9sdGRsX2Rpci99bGlibHRkbGMubGEiCitMVERMREVQUz0kTElCTFRETAorTFRETElOQ0w9Jy1JJHt0b3Bfc3JjZGlyfSciJHtsdF9sdGRsX2RpcisvJGx0X2x0ZGxfZGlyfSIKKworQUNfU1VCU1QoW0xJQkxURExdKQorQUNfU1VCU1QoW0xURExERVBTXSkKK0FDX1NVQlNUKFtMVERMSU5DTF0pCisKKyMgRm9yIGJhY2t3YXJkcyBub24tZ2V0dGV4dCBjb25zaXN0ZW50IGNvbXBhdGliaWxpdHkuLi4KK0lOQ0xUREw9IiRMVERMSU5DTCIKK0FDX1NVQlNUKFtJTkNMVERMXSkKK10pIyBfTFRETF9DT05WRU5JRU5DRQorCisKKyMgTFRETF9JTlNUQUxMQUJMRQorIyAtLS0tLS0tLS0tLS0tLS0tCisjIHNldHMgTElCTFRETCB0byB0aGUgbGluayBmbGFncyBmb3IgdGhlIGxpYmx0ZGwgaW5zdGFsbGFibGUgbGlicmFyeQorIyBhbmQgTFRETElOQ0wgdG8gdGhlIGluY2x1ZGUgZmxhZ3MgZm9yIHRoZSBsaWJsdGRsIGhlYWRlciBhbmQgYWRkcworIyAtLWVuYWJsZS1sdGRsLWluc3RhbGwgdG8gdGhlIGNvbmZpZ3VyZSBhcmd1bWVudHMuICBOb3RlIHRoYXQKKyMgQUNfQ09ORklHX1NVQkRJUlMgaXMgbm90IGNhbGxlZCBmcm9tIGhlcmUuICBJZiBhbiBpbnN0YWxsZWQgbGlibHRkbAorIyBpcyBub3QgZm91bmQsIExJQkxUREwgd2lsbCBiZSBwcmVmaXhlZCB3aXRoICcke3RvcF9idWlsZF9wcmVmaXh9JyBpZgorIyBhdmFpbGFibGUsIG90aGVyd2lzZSB3aXRoICcke3RvcF9idWlsZGRpcn0vJywgYW5kIExURExJTkNMIHdpbGwgYmUKKyMgcHJlZml4ZWQgd2l0aCAnJHt0b3Bfc3JjZGlyfS8nIChub3RlIHRoZSBzaW5nbGUgcXVvdGVzISkuICBJZiB5b3VyCisjIHBhY2thZ2UgaXMgbm90IGZsYXQgYW5kIHlvdSdyZSBub3QgdXNpbmcgYXV0b21ha2UsIGRlZmluZSB0b3BfYnVpbGRfcHJlZml4LAorIyB0b3BfYnVpbGRkaXIsIGFuZCB0b3Bfc3JjZGlyIGFwcHJvcHJpYXRlbHkgaW4geW91ciBNYWtlZmlsZXMuCisjIEluIHRoZSBmdXR1cmUsIHRoaXMgbWFjcm8gbWF5IGhhdmUgdG8gYmUgY2FsbGVkIGFmdGVyIExUX0lOSVQuCitBQ19ERUZVTihbTFRETF9JTlNUQUxMQUJMRV0sCitbQUNfQkVGT1JFKFskMF0sIFtMVERMX0lOSVRdKWRubAorZG5sIEFsdGhvdWdoIHRoZSBhcmd1bWVudCBpcyBkZXByZWNhdGVkIGFuZCBubyBsb25nZXIgZG9jdW1lbnRlZCwKK2RubCBMVERMX0lOU1RBTExBQkxFIHVzZWQgdG8gdGFrZSBhIERJUkVDVE9SWSBvcmd1bWVudCwgaWYgd2UgaGF2ZSBvbmUKK2RubCBoZXJlIG1ha2Ugc3VyZSBpdCBpcyB0aGUgc2FtZSBhcyBhbnkgb3RoZXIgZGVjbGFyYXRpb24gb2YgbGlibHRkbCdzCitkbmwgbG9jYXRpb24hICBUaGlzIGFsc28gZW5zdXJlcyBsdF9sdGRsX2RpciBpcyBzZXQgd2hlbiBjb25maWd1cmUuYWMgaXMKK2RubCBub3QgeWV0IHVzaW5nIGFuIGV4cGxpY2l0IExUX0NPTkZJR19MVERMX0RJUi4KK200X2lmdmFsKFskMV0sIFtfTFRfQ09ORklHX0xURExfRElSKFskMV0pXSlkbmwKK18kMCgpCitdKSMgTFRETF9JTlNUQUxMQUJMRQorCisjIEFDX0xJQkxURExfSU5TVEFMTEFCTEUgYWNjZXB0ZWQgYSBkaXJlY3RvcnkgYXJndW1lbnQgaW4gb2xkZXIgbGlidG9vbHMsCisjIG5vdyB3ZSBoYXZlIExUX0NPTkZJR19MVERMX0RJUjoKK0FVX0RFRlVOKFtBQ19MSUJMVERMX0lOU1RBTExBQkxFXSwKK1tfTFRfQ09ORklHX0xURExfRElSKFttNF9kZWZhdWx0KFskMV0sIFtsaWJsdGRsXSldKQorX0xURExfSU5TVEFMTEFCTEVdKQorCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xJQkxURExfSU5TVEFMTEFCTEVdLCBbXSkKKworCisjIF9MVERMX0lOU1RBTExBQkxFCisjIC0tLS0tLS0tLS0tLS0tLS0tCisjIENvZGUgc2hhcmVkIGJ5IExURExfSU5TVEFMTEFCTEUgYW5kIExURExfSU5JVChbaW5zdGFsbGFibGVdKS4KK200X2RlZnVuKFtfTFRETF9JTlNUQUxMQUJMRV0sCitbaWYgdGVzdCAtZiAkcHJlZml4L2xpYi9saWJsdGRsLmxhOyB0aGVuCisgIGx0X3NhdmVfTERGTEFHUz0iJExERkxBR1MiCisgIExERkxBR1M9Ii1MJHByZWZpeC9saWIgJExERkxBR1MiCisgIEFDX0NIRUNLX0xJQihbbHRkbF0sIFtsdF9kbGluaXRdLCBbbHRfbGliX2x0ZGw9eWVzXSkKKyAgTERGTEFHUz0iJGx0X3NhdmVfTERGTEFHUyIKKyAgaWYgdGVzdCB4IiR7bHRfbGliX2x0ZGwtbm99IiA9IHh5ZXM7IHRoZW4KKyAgICBpZiB0ZXN0IHgiJGVuYWJsZV9sdGRsX2luc3RhbGwiICE9IHh5ZXM7IHRoZW4KKyAgICAgICMgRG9uJ3Qgb3ZlcndyaXRlICRwcmVmaXgvbGliL2xpYmx0ZGwubGEgd2l0aG91dCAtLWVuYWJsZS1sdGRsLWluc3RhbGwKKyAgICAgIEFDX01TR19XQVJOKFtub3Qgb3ZlcndyaXRpbmcgbGlibHRkbCBhdCAkcHJlZml4LCBmb3JjZSB3aXRoIGAtLWVuYWJsZS1sdGRsLWluc3RhbGwnXSkKKyAgICAgIGVuYWJsZV9sdGRsX2luc3RhbGw9bm8KKyAgICBmaQorICBlbGlmIHRlc3QgeCIkZW5hYmxlX2x0ZGxfaW5zdGFsbCIgPSB4bm87IHRoZW4KKyAgICBBQ19NU0dfV0FSTihbbGlibHRkbCBub3QgaW5zdGFsbGVkLCBidXQgaW5zdGFsbGF0aW9uIGRpc2FibGVkXSkKKyAgZmkKK2ZpCisKKyMgSWYgY29uZmlndXJlLmFjIGRlY2xhcmVkIGFuIGluc3RhbGxhYmxlIGx0ZGwsIGFuZCB0aGUgdXNlciBkaWRuJ3Qgb3ZlcnJpZGUKKyMgd2l0aCAtLWRpc2FibGUtbHRkbC1pbnN0YWxsLCB3ZSB3aWxsIGluc3RhbGwgdGhlIHNoaXBwZWQgbGlibHRkbC4KK2Nhc2UgJGVuYWJsZV9sdGRsX2luc3RhbGwgaW4KKyAgbm8pIGFjX2NvbmZpZ3VyZV9hcmdzPSIkYWNfY29uZmlndXJlX2FyZ3MgLS1lbmFibGUtbHRkbC1pbnN0YWxsPW5vIgorICAgICAgTElCTFRETD0iLWxsdGRsIgorICAgICAgTFRETERFUFM9CisgICAgICBMVERMSU5DTD0KKyAgICAgIDs7CisgICopICBlbmFibGVfbHRkbF9pbnN0YWxsPXllcworICAgICAgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyAtLWVuYWJsZS1sdGRsLWluc3RhbGwiCisgICAgICBMSUJMVERMPSdfTFRfQlVJTERfUFJFRklYJyIke2x0X2x0ZGxfZGlyKyRsdF9sdGRsX2Rpci99bGlibHRkbC5sYSIKKyAgICAgIExURExERVBTPSRMSUJMVERMCisgICAgICBMVERMSU5DTD0nLUkke3RvcF9zcmNkaXJ9JyIke2x0X2x0ZGxfZGlyKy8kbHRfbHRkbF9kaXJ9IgorICAgICAgOzsKK2VzYWMKKworQUNfU1VCU1QoW0xJQkxURExdKQorQUNfU1VCU1QoW0xURExERVBTXSkKK0FDX1NVQlNUKFtMVERMSU5DTF0pCisKKyMgRm9yIGJhY2t3YXJkcyBub24tZ2V0dGV4dCBjb25zaXN0ZW50IGNvbXBhdGliaWxpdHkuLi4KK0lOQ0xUREw9IiRMVERMSU5DTCIKK0FDX1NVQlNUKFtJTkNMVERMXSkKK10pIyBMVERMX0lOU1RBTExBQkxFCisKKworIyBfTFRETF9NT0RFX0RJU1BBVENICisjIC0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbX0xURExfTU9ERV9ESVNQQVRDSF0sCitbZG5sIElmIF9MVERMX0RJUiBpcyBgLicsIHRoZW4gd2UgYXJlIGNvbmZpZ3VyaW5nIGxpYmx0ZGwgaXRzZWxmOgorbTRfaWYoX0xURExfRElSLCBbXSwKKwlbXSwKKyAgICBkbmwgaWYgX0xURExfTU9ERSB3YXMgbm90IHNldCBhbHJlYWR5LCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBgc3VicHJvamVjdCc6CisgICAgW200X2Nhc2UobTRfZGVmYXVsdChfTFRETF9NT0RFLCBbc3VicHJvamVjdF0pLAorCSAgW3N1YnByb2plY3RdLCBbQUNfQ09ORklHX1NVQkRJUlMoX0xURExfRElSKQorCQkJICBfTFRfU0hFTExfSU5JVChbbHRfZGxvcGVuX2Rpcj0iJGx0X2x0ZGxfZGlyIl0pXSwKKwkgIFtub25yZWN1cnNpdmVdLCBbX0xUX1NIRUxMX0lOSVQoW2x0X2Rsb3Blbl9kaXI9IiRsdF9sdGRsX2RpciI7IGx0X2xpYm9ial9wcmVmaXg9IiRsdF9sdGRsX2Rpci8iXSldLAorCSAgW3JlY3Vyc2l2ZV0sIFtdLAorCVttNF9mYXRhbChbdW5rbm93biBsaWJsdGRsIG1vZGU6IF1fTFRETF9NT0RFKV0pXSlkbmwKK2RubCBCZSBjYXJlZnVsIG5vdCB0byBleHBhbmQgdHdpY2U6CittNF9kZWZpbmUoWyQwXSwgW10pCitdKSMgX0xURExfTU9ERV9ESVNQQVRDSAorCisKKyMgX0xUX0xJQk9CSihNT0RVTEVfTkFNRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgTGlrZSBBQ19MSUJPQkosIGV4Y2VwdCB0aGF0IE1PRFVMRV9OQU1FIGdvZXMgaW50byBfTFRfTElCT0JKUyBpbnN0ZWFkCisjIG9mIGludG8gTElCT0JKUy4KK0FDX0RFRlVOKFtfTFRfTElCT0JKXSwgWworICBtNF9wYXR0ZXJuX2FsbG93KFteX0xUX0xJQk9CSlMkXSkKKyAgX0xUX0xJQk9CSlM9IiRfTFRfTElCT0JKUyAkMS4kYWNfb2JqZXh0IgorXSkjIF9MVF9MSUJPQkpTCisKKworIyBMVERMX0lOSVQoW09QVElPTlNdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDbGllbnRzIG9mIGxpYmx0ZGwgY2FuIHVzZSB0aGlzIG1hY3JvIHRvIGFsbG93IHRoZSBpbnN0YWxsZXIgdG8KKyMgY2hvb3NlIGJldHdlZW4gYSBzaGlwcGVkIGNvcHkgb2YgdGhlIGx0ZGwgc291cmNlcyBvciBhIHByZWluc3RhbGxlZAorIyB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LiAgSWYgdGhlIHNoaXBwZWQgbHRkbCBzb3VyY2VzIGFyZSBub3QgaW4gYQorIyBzdWJkaXJlY3RvcnkgbmFtZWQgbGlibHRkbCwgdGhlIGRpcmVjdG9yeSBuYW1lIG11c3QgYmUgZ2l2ZW4gYnkKKyMgTFRfQ09ORklHX0xURExfRElSLgorQUNfREVGVU4oW0xURExfSU5JVF0sCitbZG5sIFBhcnNlIE9QVElPTlMKK19MVF9TRVRfT1BUSU9OUyhbJDBdLCBbJDFdKQorCitkbmwgV2UgbmVlZCB0byBrZWVwIG91ciBvd24gbGlzdCBvZiBsaWJvYmpzIHNlcGFyYXRlIGZyb20gb3VyIHBhcmVudCBwcm9qZWN0LAorZG5sIGFuZCB0aGUgZWFzaWVzdCB3YXkgdG8gZG8gdGhhdCBpcyByZWRlZmluZSB0aGUgQUNfTElCT0JKcyBtYWNybyB3aGlsZQorZG5sIHdlIGxvb2sgZm9yIG91ciBvd24gTElCT0JKcy4KK200X3B1c2hkZWYoW0FDX0xJQk9CSl0sIG00X2RlZm4oW19MVF9MSUJPQkpdKSkKK200X3B1c2hkZWYoW0FDX0xJQlNPVVJDRVNdKQorCitkbmwgSWYgbm90IG90aGVyd2lzZSBkZWZpbmVkLCBkZWZhdWx0IHRvIHRoZSAxLjUueCBjb21wYXRpYmxlIHN1YnByb2plY3QgbW9kZToKK200X2lmKF9MVERMX01PREUsIFtdLAorICAgICAgICBbbTRfZGVmaW5lKFtfTFRETF9NT0RFXSwgbTRfZGVmYXVsdChbJDJdLCBbc3VicHJvamVjdF0pKQorICAgICAgICBtNF9pZihbLTFdLCBbbTRfYnJlZ2V4cChfTFRETF9NT0RFLCBbXChzdWJwcm9qZWN0XHxcKG5vblwpP3JlY3Vyc2l2ZVwpXSldLAorICAgICAgICAgICAgICAgIFttNF9mYXRhbChbdW5rbm93biBsaWJsdGRsIG1vZGU6IF1fTFRETF9NT0RFKV0pXSkKKworQUNfQVJHX1dJVEgoW2luY2x1ZGVkX2x0ZGxdLAorICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWluY2x1ZGVkLWx0ZGxdLAorICAgICAgICAgICAgICAgICAgICBbdXNlIHRoZSBHTlUgbHRkbCBzb3VyY2VzIGluY2x1ZGVkIGhlcmVdKV0pCisKK2lmIHRlc3QgIngkd2l0aF9pbmNsdWRlZF9sdGRsIiAhPSB4eWVzOyB0aGVuCisgICMgV2UgYXJlIG5vdCBiZWluZyBmb3JjZWQgdG8gdXNlIHRoZSBpbmNsdWRlZCBsaWJsdGRsIHNvdXJjZXMsIHNvCisgICMgZGVjaWRlIHdoZXRoZXIgdGhlcmUgaXMgYSB1c2VmdWwgaW5zdGFsbGVkIHZlcnNpb24gd2UgY2FuIHVzZS4KKyAgQUNfQ0hFQ0tfSEVBREVSKFtsdGRsLmhdLAorICAgICAgW0FDX0NIRUNLX0RFQ0woW2x0X2RsaW50ZXJmYWNlX3JlZ2lzdGVyXSwKKwkgICBbQUNfQ0hFQ0tfTElCKFtsdGRsXSwgW2x0X2RsYWR2aXNlX3ByZWxvYWRdLAorCSAgICAgICBbd2l0aF9pbmNsdWRlZF9sdGRsPW5vXSwKKwkgICAgICAgW3dpdGhfaW5jbHVkZWRfbHRkbD15ZXNdKV0sCisJICAgW3dpdGhfaW5jbHVkZWRfbHRkbD15ZXNdLAorCSAgIFtBQ19JTkNMVURFU19ERUZBVUxUCisJICAgICNpbmNsdWRlIDxsdGRsLmg+XSldLAorICAgICAgW3dpdGhfaW5jbHVkZWRfbHRkbD15ZXNdLAorICAgICAgW0FDX0lOQ0xVREVTX0RFRkFVTFRdCisgICkKK2ZpCisKK2RubCBJZiBuZWl0aGVyIExUX0NPTkZJR19MVERMX0RJUiwgTFRETF9DT05WRU5JRU5DRSBub3IgTFRETF9JTlNUQUxMQUJMRQorZG5sIHdhcyBjYWxsZWQgeWV0LCB0aGVuIGZvciBvbGQgdGltZXMnIHNha2UsIHdlIGFzc3VtZSBsaWJsdGRsIGlzIGluIGFuCitkbmwgZXBvbnltb3VzIGRpcmVjdG9yeToKK0FDX1BST1ZJREVfSUZFTFNFKFtMVF9DT05GSUdfTFRETF9ESVJdLCBbXSwgW19MVF9DT05GSUdfTFRETF9ESVIoW2xpYmx0ZGxdKV0pCisKK0FDX0FSR19XSVRIKFtsdGRsX2luY2x1ZGVdLAorICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWx0ZGwtaW5jbHVkZT1ESVJdLAorICAgICAgICAgICAgICAgICAgICBbdXNlIHRoZSBsdGRsIGhlYWRlcnMgaW5zdGFsbGVkIGluIERJUl0pXSkKKworaWYgdGVzdCAtbiAiJHdpdGhfbHRkbF9pbmNsdWRlIjsgdGhlbgorICBpZiB0ZXN0IC1mICIkd2l0aF9sdGRsX2luY2x1ZGUvbHRkbC5oIjsgdGhlbiA6CisgIGVsc2UKKyAgICBBQ19NU0dfRVJST1IoW2ludmFsaWQgbHRkbCBpbmNsdWRlIGRpcmVjdG9yeTogYCR3aXRoX2x0ZGxfaW5jbHVkZSddKQorICBmaQorZWxzZQorICB3aXRoX2x0ZGxfaW5jbHVkZT1ubworZmkKKworQUNfQVJHX1dJVEgoW2x0ZGxfbGliXSwKKyAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1sdGRsLWxpYj1ESVJdLAorICAgICAgICAgICAgICAgICAgICBbdXNlIHRoZSBsaWJsdGRsLmxhIGluc3RhbGxlZCBpbiBESVJdKV0pCisKK2lmIHRlc3QgLW4gIiR3aXRoX2x0ZGxfbGliIjsgdGhlbgorICBpZiB0ZXN0IC1mICIkd2l0aF9sdGRsX2xpYi9saWJsdGRsLmxhIjsgdGhlbiA6CisgIGVsc2UKKyAgICBBQ19NU0dfRVJST1IoW2ludmFsaWQgbHRkbCBsaWJyYXJ5IGRpcmVjdG9yeTogYCR3aXRoX2x0ZGxfbGliJ10pCisgIGZpCitlbHNlCisgIHdpdGhfbHRkbF9saWI9bm8KK2ZpCisKK2Nhc2UgLCR3aXRoX2luY2x1ZGVkX2x0ZGwsJHdpdGhfbHRkbF9pbmNsdWRlLCR3aXRoX2x0ZGxfbGliLCBpbgorICAseWVzLG5vLG5vLCkKKwltNF9jYXNlKG00X2RlZmF1bHQoX0xURExfVFlQRSwgW2NvbnZlbmllbmNlXSksCisJICAgIFtjb252ZW5pZW5jZV0sIFtfTFRETF9DT05WRU5JRU5DRV0sCisJICAgIFtpbnN0YWxsYWJsZV0sIFtfTFRETF9JTlNUQUxMQUJMRV0sCisJICBbbTRfZmF0YWwoW3Vua25vd24gbGlibHRkbCBidWlsZCB0eXBlOiBdX0xURExfVFlQRSldKQorCTs7CisgICxubyxubyxubywpCisJIyBJZiB0aGUgaW5jbHVkZWQgbHRkbCBpcyBub3QgdG8gYmUgdXNlZCwgdGhlbiB1c2UgdGhlCisJIyBwcmVpbnN0YWxsZWQgbGlibHRkbCB3ZSBmb3VuZC4KKwlBQ19ERUZJTkUoW0hBVkVfTFRETF0sIFsxXSwKKwkgIFtEZWZpbmUgdGhpcyBpZiBhIG1vZGVybiBsaWJsdGRsIGlzIGFscmVhZHkgaW5zdGFsbGVkXSkKKwlMSUJMVERMPS1sbHRkbAorCUxURExERVBTPQorCUxURExJTkNMPQorCTs7CisgICxubyosbm8sKikKKwlBQ19NU0dfRVJST1IoW2AtLXdpdGgtbHRkbC1pbmNsdWRlJyBhbmQgYC0td2l0aC1sdGRsLWxpYicgb3B0aW9ucyBtdXN0IGJlIHVzZWQgdG9nZXRoZXJdKQorCTs7CisgICopCXdpdGhfaW5jbHVkZWRfbHRkbD1ubworCUxJQkxUREw9Ii1MJHdpdGhfbHRkbF9saWIgLWxsdGRsIgorCUxURExERVBTPQorCUxURExJTkNMPSItSSR3aXRoX2x0ZGxfaW5jbHVkZSIKKwk7OworZXNhYworSU5DTFRETD0iJExURExJTkNMIgorCisjIFJlcG9ydCBvdXIgZGVjaXNpb24uLi4KK0FDX01TR19DSEVDS0lORyhbd2hlcmUgdG8gZmluZCBsaWJsdGRsIGhlYWRlcnNdKQorQUNfTVNHX1JFU1VMVChbJExURExJTkNMXSkKK0FDX01TR19DSEVDS0lORyhbd2hlcmUgdG8gZmluZCBsaWJsdGRsIGxpYnJhcnldKQorQUNfTVNHX1JFU1VMVChbJExJQkxURExdKQorCitfTFRETF9TRVRVUAorCitkbmwgcmVzdG9yZSBhdXRvY29uZiBkZWZpbml0aW9uLgorbTRfcG9wZGVmKFtBQ19MSUJPQkpdKQorbTRfcG9wZGVmKFtBQ19MSUJTT1VSQ0VTXSkKKworQUNfQ09ORklHX0NPTU1BTkRTX1BSRShbCisgICAgX2x0ZGxfbGlib2Jqcz0KKyAgICBfbHRkbF9sdGxpYm9ianM9CisgICAgaWYgdGVzdCAtbiAiJF9MVF9MSUJPQkpTIjsgdGhlbgorICAgICAgIyBSZW1vdmUgdGhlIGV4dGVuc2lvbi4KKyAgICAgIF9sdF9zZWRfZHJvcF9vYmpleHQ9J3MvXC5vJC8vO3MvXC5vYmokLy8nCisgICAgICBmb3IgaSBpbiBgZm9yIGkgaW4gJF9MVF9MSUJPQkpTOyBkbyBlY2hvICIkaSI7IGRvbmUgfCBzZWQgIiRfbHRfc2VkX2Ryb3Bfb2JqZXh0IiB8IHNvcnQgLXVgOyBkbworICAgICAgICBfbHRkbF9saWJvYmpzPSIkX2x0ZGxfbGlib2JqcyAkbHRfbGlib2JqX3ByZWZpeCRpLiRhY19vYmpleHQiCisgICAgICAgIF9sdGRsX2x0bGlib2Jqcz0iJF9sdGRsX2x0bGlib2JqcyAkbHRfbGlib2JqX3ByZWZpeCRpLmxvIgorICAgICAgZG9uZQorICAgIGZpCisgICAgQUNfU1VCU1QoW2x0ZGxfTElCT0JKU10sIFskX2x0ZGxfbGlib2Jqc10pCisgICAgQUNfU1VCU1QoW2x0ZGxfTFRMSUJPQkpTXSwgWyRfbHRkbF9sdGxpYm9ianNdKQorXSkKKworIyBPbmx5IGV4cGFuZCBvbmNlOgorbTRfZGVmaW5lKFtMVERMX0lOSVRdKQorXSkjIExURExfSU5JVAorCisjIE9sZCBuYW1lczoKK0FVX0RFRlVOKFtBQ19MSUJfTFRETF0sIFtMVERMX0lOSVQoJEApXSkKK0FVX0RFRlVOKFtBQ19XSVRIX0xURExdLCBbTFRETF9JTklUKCRAKV0pCitBVV9ERUZVTihbTFRfV0lUSF9MVERMXSwgW0xURExfSU5JVCgkQCldKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MSUJfTFRETF0sIFtdKQorZG5sIEFDX0RFRlVOKFtBQ19XSVRIX0xURExdLCBbXSkKK2RubCBBQ19ERUZVTihbTFRfV0lUSF9MVERMXSwgW10pCisKKworIyBfTFRETF9TRVRVUAorIyAtLS0tLS0tLS0tLQorIyBQZXJmb3JtIGFsbCB0aGUgY2hlY2tzIG5lY2Vzc2FyeSBmb3IgY29tcGlsYXRpb24gb2YgdGhlIGx0ZGwgb2JqZWN0cworIyAgLS0gaW5jbHVkaW5nIGNvbXBpbGVyIGNoZWNrcyBhbmQgaGVhZGVyIGNoZWNrcy4gIFRoaXMgaXMgYSBwdWJsaWMKKyMgaW50ZXJmYWNlICBtYWlubHkgZm9yIHRoZSBiZW5lZml0IG9mIGxpYmx0ZGwncyBvd24gY29uZmlndXJlLmFjLCBtb3N0CisjIG90aGVyIHVzZXJzIHNob3VsZCBjYWxsIExURExfSU5JVCBpbnN0ZWFkLgorQUNfREVGVU4oW19MVERMX1NFVFVQXSwKK1tBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSlkbmwKK0FDX1JFUVVJUkUoW0xUX1NZU19NT0RVTEVfRVhUXSlkbmwKK0FDX1JFUVVJUkUoW0xUX1NZU19NT0RVTEVfUEFUSF0pZG5sCitBQ19SRVFVSVJFKFtMVF9TWVNfRExTRUFSQ0hfUEFUSF0pZG5sCitBQ19SRVFVSVJFKFtMVF9MSUJfRExMT0FEXSlkbmwKK0FDX1JFUVVJUkUoW0xUX1NZU19TWU1CT0xfVVNDT1JFXSlkbmwKK0FDX1JFUVVJUkUoW0xUX0ZVTkNfRExTWU1fVVNDT1JFXSlkbmwKK0FDX1JFUVVJUkUoW0xUX1NZU19ETE9QRU5fREVQTElCU10pZG5sCitBQ19SRVFVSVJFKFtnbF9GVU5DX0FSR1pdKWRubAorCittNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfT0JKRElSXSlkbmwKK200X3JlcXVpcmUoW19MVF9IRUFERVJfRExGQ05dKWRubAorbTRfcmVxdWlyZShbX0xUX0NIRUNLX0RMUFJFT1BFTl0pZG5sCittNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAorCitkbmwgRG9uJ3QgcmVxdWlyZSB0aGlzLCBvciBpdCB3aWxsIGJlIGV4cGFuZGVkIGVhcmxpZXIgdGhhbiB0aGUgY29kZQorZG5sIHRoYXQgc2V0cyB0aGUgdmFyaWFibGVzIGl0IHJlbGllcyBvbjoKK19MVF9FTkFCTEVfSU5TVEFMTAorCitkbmwgX0xURExfTU9ERSBzcGVjaWZpYyBjb2RlIG11c3QgYmUgY2FsbGVkIGF0IGxlYXN0IG9uY2U6CitfTFRETF9NT0RFX0RJU1BBVENICisKKyMgSW4gb3JkZXIgdGhhdCBsdGRsLmMgY2FuIGNvbXBpbGUsIGZpbmQgb3V0IHRoZSBmaXJzdCBBQ19DT05GSUdfSEVBREVSUworIyB0aGUgdXNlciB1c2VkLiAgVGhpcyBpcyBzbyB0aGF0IGx0ZGwuaCBjYW4gcGljayB1cCB0aGUgcGFyZW50IHByb2plY3RzCisjIGNvbmZpZy5oIGZpbGUsIFRoZSBmaXJzdCBmaWxlIGluIEFDX0NPTkZJR19IRUFERVJTIG11c3QgY29udGFpbiB0aGUKKyMgZGVmaW5pdGlvbnMgcmVxdWlyZWQgYnkgbHRkbC5jLgorIyBGSVhNRTogUmVtb3ZlIHVzZSBvZiB1bmRvY3VtZW50ZWQgQUNfTElTVF9IRUFERVJTICgyLjU5IGNvbXBhdGliaWxpdHkpLgorQUNfQ09ORklHX0NPTU1BTkRTX1BSRShbZG5sCittNF9wYXR0ZXJuX2FsbG93KFteTFRfQ09ORklHX0gkXSlkbmwKK200X2lmc2V0KFtBSF9IRUFERVJdLAorICAgIFtMVF9DT05GSUdfSD1BSF9IRUFERVJdLAorICAgIFttNF9pZnNldChbQUNfTElTVF9IRUFERVJTXSwKKwkgICAgW0xUX0NPTkZJR19IPWBlY2hvICJBQ19MSVNUX0hFQURFUlMiIHwgJFNFRCAncyxeW1sgICAgICBdXSosLDtzLFtbIDpdXS4qJCwsJ2BdLAorCVtdKV0pXSkKK0FDX1NVQlNUKFtMVF9DT05GSUdfSF0pCisKK0FDX0NIRUNLX0hFQURFUlMoW3VuaXN0ZC5oIGRsLmggc3lzL2RsLmggZGxkLmggbWFjaC1vL2R5bGQuaCBkaXJlbnQuaF0sCisJW10sIFtdLCBbQUNfSU5DTFVERVNfREVGQVVMVF0pCisKK0FDX0NIRUNLX0ZVTkNTKFtjbG9zZWRpciBvcGVuZGlyIHJlYWRkaXJdLCBbXSwgW0FDX0xJQk9CSihbbHRfX2RpcmVudF0pXSkKK0FDX0NIRUNLX0ZVTkNTKFtzdHJsY2F0IHN0cmxjcHldLCBbXSwgW0FDX0xJQk9CSihbbHRfX3N0cmxdKV0pCisKK200X3BhdHRlcm5fYWxsb3coW0xUX0xJQkVYVF0pZG5sCitBQ19ERUZJTkVfVU5RVU9URUQoW0xUX0xJQkVYVF0sWyIkbGliZXh0Il0sW1RoZSBhcmNoaXZlIGV4dGVuc2lvbl0pCisKK25hbWU9CitldmFsICJsdF9saWJwcmVmaXg9XCIkbGlibmFtZV9zcGVjXCIiCittNF9wYXR0ZXJuX2FsbG93KFtMVF9MSUJQUkVGSVhdKWRubAorQUNfREVGSU5FX1VOUVVPVEVEKFtMVF9MSUJQUkVGSVhdLFsiJGx0X2xpYnByZWZpeCJdLFtUaGUgYXJjaGl2ZSBwcmVmaXhdKQorCituYW1lPWx0ZGwKK2V2YWwgIkxURExPUEVOPVwiJGxpYm5hbWVfc3BlY1wiIgorQUNfU1VCU1QoW0xURExPUEVOXSkKK10pIyBfTFRETF9TRVRVUAorCisKKyMgX0xUX0VOQUJMRV9JTlNUQUxMCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtfTFRfRU5BQkxFX0lOU1RBTExdLAorW0FDX0FSR19FTkFCTEUoW2x0ZGwtaW5zdGFsbF0sCisgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1sdGRsLWluc3RhbGxdLCBbaW5zdGFsbCBsaWJsdGRsXSldKQorCitjYXNlICwke2VuYWJsZV9sdGRsX2luc3RhbGx9LCR7ZW5hYmxlX2x0ZGxfY29udmVuaWVuY2V9IGluCisgICp5ZXMqKSA7OworICAqKSBlbmFibGVfbHRkbF9jb252ZW5pZW5jZT15ZXMgOzsKK2VzYWMKKworbTRfaWZkZWYoW0FNX0NPTkRJVElPTkFMXSwKK1tBTV9DT05ESVRJT05BTChJTlNUQUxMX0xUREwsIHRlc3QgeCIke2VuYWJsZV9sdGRsX2luc3RhbGwtbm99IiAhPSB4bm8pCisgQU1fQ09ORElUSU9OQUwoQ09OVkVOSUVOQ0VfTFRETCwgdGVzdCB4IiR7ZW5hYmxlX2x0ZGxfY29udmVuaWVuY2Utbm99IiAhPSB4bm8pXSkKK10pIyBfTFRfRU5BQkxFX0lOU1RBTEwKKworCisjIExUX1NZU19ETE9QRU5fREVQTElCUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtMVF9TWVNfRExPUEVOX0RFUExJQlNdLAorW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIGRlcGxpYnMgYXJlIGxvYWRlZCBieSBkbG9wZW5dLAorICBbbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzXSwKKyAgWyMgUE9SVE1FIGRvZXMgeW91ciBzeXN0ZW0gYXV0b21hdGljYWxseSBsb2FkIGRlcGxpYnMgZm9yIGRsb3Blbj8KKyAgIyBvciBpdHMgbG9naWNhbCBlcXVpdmFsZW50IChlLmcuIHNobF9sb2FkIGZvciBIUC1VWCA8IDExKQorICAjIEZvciBub3csIHdlIGp1c3QgY2F0Y2ggT1NlcyB3ZSBrbm93IHNvbWV0aGluZyBhYm91dCAtLSBpbiB0aGUKKyAgIyBmdXR1cmUsIHdlJ2xsIHRyeSB0ZXN0IHRoaXMgcHJvZ3JhbW1hdGljYWxseS4KKyAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXVua25vd24KKyAgY2FzZSAkaG9zdF9vcyBpbgorICBhaXgzKnxhaXg0LjEuKnxhaXg0LjIuKikKKyAgICAjIFVua25vd24gd2hldGhlciB0aGlzIGlzIHRydWUgZm9yIHRoZXNlIHZlcnNpb25zIG9mIEFJWCwgYnV0CisgICAgIyB3ZSB3YW50IHRoaXMgYGNhc2UnIGhlcmUgdG8gZXhwbGljaXRseSBjYXRjaCB0aG9zZSB2ZXJzaW9ucy4KKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9dW5rbm93bgorICAgIDs7CisgIGFpeFtbNC05XV0qKQorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBhbWlnYW9zKikKKyAgICBjYXNlICRob3N0X2NwdSBpbgorICAgIHBvd2VycGMpCisgICAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9bm8KKyAgICAgIDs7CisgICAgZXNhYworICAgIDs7CisgIGRhcndpbiopCisgICAgIyBBc3N1bWluZyB0aGUgdXNlciBoYXMgaW5zdGFsbGVkIGEgbGliZGwgZnJvbSBzb21ld2hlcmUsIHRoaXMgaXMgdHJ1ZQorICAgICMgSWYgeW91IGFyZSBsb29raW5nIGZvciBvbmUgaHR0cDovL3d3dy5vcGVuZGFyd2luLm9yZy9wcm9qZWN0cy9kbGNvbXBhdAorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIGdudSogfCBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCisgICAgIyBHTlUgYW5kIGl0cyB2YXJpYW50cywgdXNpbmcgZ251IGxkLnNvIChHbGliYykKKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9eWVzCisgICAgOzsKKyAgaHB1eDEwKnxocHV4MTEqKQorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBpbnRlcml4KikKKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9eWVzCisgICAgOzsKKyAgaXJpeFtbMTIzNDVdXSp8aXJpeDYuW1swMV1dKikKKyAgICAjIENhdGNoIGFsbCB2ZXJzaW9ucyBvZiBJUklYIGJlZm9yZSA2LjIsIGFuZCBpbmRpY2F0ZSB0aGF0IHdlIGRvbid0CisgICAgIyBrbm93IGhvdyBpdCB3b3JrZWQgZm9yIGFueSBvZiB0aG9zZSB2ZXJzaW9ucy4KKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9dW5rbm93bgorICAgIDs7CisgIGlyaXgqKQorICAgICMgVGhlIGNhc2UgYWJvdmUgY2F0Y2hlcyBhbnl0aGluZyBiZWZvcmUgNi4yLCBhbmQgaXQncyBrbm93biB0aGF0CisgICAgIyBhdCA2LjIgYW5kIGxhdGVyIGRsb3BlbiBkb2VzIGxvYWQgZGVwbGlicy4KKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9eWVzCisgICAgOzsKKyAgbmV0YnNkKiB8IG5ldGJzZGVsZiotZ251KQorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBvcGVuYnNkKikKKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9eWVzCisgICAgOzsKKyAgb3NmW1sxMjM0XV0qKQorICAgICMgZGxvcGVuIGRpZCBsb2FkIGRlcGxpYnMgKGF0IGxlYXN0IGF0IDQueCksIGJ1dCB1bnRpbCB0aGUgNS54IHNlcmllcywKKyAgICAjIGl0IGRpZCAqbm90KiB1c2UgYW4gUlBBVEggaW4gYSBzaGFyZWQgbGlicmFyeSB0byBmaW5kIG9iamVjdHMgdGhlCisgICAgIyBsaWJyYXJ5IGRlcGVuZHMgb24sIHNvIHdlIGV4cGxpY2l0bHkgc2F5IGBubycuCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPW5vCisgICAgOzsKKyAgb3NmNS4wfG9zZjUuMGF8b3NmNS4xKQorICAgICMgZGxvcGVuICpkb2VzKiBsb2FkIGRlcGxpYnMgYW5kIHdpdGggdGhlIHJpZ2h0IGxvYWRlciBwYXRjaCBhcHBsaWVkCisgICAgIyBpdCBldmVuIHVzZXMgUlBBVEggaW4gYSBzaGFyZWQgbGlicmFyeSB0byBzZWFyY2ggZm9yIHNoYXJlZCBvYmplY3RzCisgICAgIyB0aGF0IHRoZSBsaWJyYXJ5IGRlcGVuZHMgb24sIGJ1dCB0aGVyZSdzIG5vIGVhc3kgd2F5IHRvIGtub3cgaWYgdGhhdAorICAgICMgcGF0Y2ggaXMgaW5zdGFsbGVkLiAgU2luY2UgdGhpcyBpcyB0aGUgY2FzZSwgYWxsIHdlIGNhbiByZWFsbHkKKyAgICAjIHNheSBpcyB1bmtub3duIC0tIGl0IGRlcGVuZHMgb24gdGhlIHBhdGNoIGJlaW5nIGluc3RhbGxlZC4gIElmCisgICAgIyBpdCBpcywgdGhpcyBjaGFuZ2VzIHRvIGB5ZXMnLiAgV2l0aG91dCBpdCwgaXQgd291bGQgYmUgYG5vJy4KKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9dW5rbm93bgorICAgIDs7CisgIG9zZiopCisgICAgIyB0aGUgdHdvIGNhc2VzIGFib3ZlIHNob3VsZCBjYXRjaCBhbGwgdmVyc2lvbnMgb2Ygb3NmIDw9IDUuMS4gIFJlYWQKKyAgICAjIHRoZSBjb21tZW50cyBhYm92ZSBmb3Igd2hhdCB3ZSBrbm93IGFib3V0IHRoZW0uCisgICAgIyBBdCA+IDUuMSwgZGVwbGlicyBhcmUgbG9hZGVkICphbmQqIGFueSBSUEFUSCBpbiBhIHNoYXJlZCBsaWJyYXJ5CisgICAgIyBpcyB1c2VkIHRvIGZpbmQgdGhlbSBzbyB3ZSBjYW4gZmluYWxseSBzYXkgYHllcycuCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIHFueCopCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIHNvbGFyaXMqKQorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqIHwgc3lzdjQqdXcyKikKKyAgICBsaWJsdGRsX2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBlc2FjCisgIF0pCitpZiB0ZXN0ICIkbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzIiAhPSB5ZXM7IHRoZW4KKyBBQ19ERUZJTkUoW0xURExfRExPUEVOX0RFUExJQlNdLCBbMV0sCisgICAgW0RlZmluZSBpZiB0aGUgT1MgbmVlZHMgaGVscCB0byBsb2FkIGRlcGVuZGVudCBsaWJyYXJpZXMgZm9yIGRsb3BlbigpLl0pCitmaQorXSkjIExUX1NZU19ETE9QRU5fREVQTElCUworCisjIE9sZCBuYW1lOgorQVVfQUxJQVMoW0FDX0xURExfU1lTX0RMT1BFTl9ERVBMSUJTXSwgW0xUX1NZU19ETE9QRU5fREVQTElCU10pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xURExfU1lTX0RMT1BFTl9ERVBMSUJTXSwgW10pCisKKworIyBMVF9TWVNfTU9EVUxFX0VYVAorIyAtLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0xUX1NZU19NT0RVTEVfRVhUXSwKK1ttNF9yZXF1aXJlKFtfTFRfU1lTX0RZTkFNSUNfTElOS0VSXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKFt3aGljaCBleHRlbnNpb24gaXMgdXNlZCBmb3IgcnVudGltZSBsb2FkYWJsZSBtb2R1bGVzXSwKKyAgW2xpYmx0ZGxfY3Zfc2hsaWJleHRdLAorWworbW9kdWxlPXllcworZXZhbCBsaWJsdGRsX2N2X3NobGliZXh0PSRzaHJleHRfY21kcworbW9kdWxlPW5vCitldmFsIGxpYmx0ZGxfY3Zfc2hyZXh0PSRzaHJleHRfY21kcworICBdKQoraWYgdGVzdCAtbiAiJGxpYmx0ZGxfY3Zfc2hsaWJleHQiOyB0aGVuCisgIG00X3BhdHRlcm5fYWxsb3coW0xUX01PRFVMRV9FWFRdKWRubAorICBBQ19ERUZJTkVfVU5RVU9URUQoW0xUX01PRFVMRV9FWFRdLCBbIiRsaWJsdGRsX2N2X3NobGliZXh0Il0sCisgICAgW0RlZmluZSB0byB0aGUgZXh0ZW5zaW9uIHVzZWQgZm9yIHJ1bnRpbWUgbG9hZGFibGUgbW9kdWxlcywgc2F5LCAiLnNvIi5dKQorZmkKK2lmIHRlc3QgIiRsaWJsdGRsX2N2X3NocmV4dCIgIT0gIiRsaWJsdGRsX2N2X3NobGliZXh0IjsgdGhlbgorICBtNF9wYXR0ZXJuX2FsbG93KFtMVF9TSEFSRURfRVhUXSlkbmwKKyAgQUNfREVGSU5FX1VOUVVPVEVEKFtMVF9TSEFSRURfRVhUXSwgWyIkbGlibHRkbF9jdl9zaHJleHQiXSwKKyAgICBbRGVmaW5lIHRvIHRoZSBzaGFyZWQgbGlicmFyeSBzdWZmaXgsIHNheSwgIi5keWxpYiIuXSkKK2ZpCitdKSMgTFRfU1lTX01PRFVMRV9FWFQKKworIyBPbGQgbmFtZToKK0FVX0FMSUFTKFtBQ19MVERMX1NITElCRVhUXSwgW0xUX1NZU19NT0RVTEVfRVhUXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTFRETF9TSExJQkVYVF0sIFtdKQorCisKKyMgTFRfU1lTX01PRFVMRV9QQVRICisjIC0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0xUX1NZU19NT0RVTEVfUEFUSF0sCitbbTRfcmVxdWlyZShbX0xUX1NZU19EWU5BTUlDX0xJTktFUl0pZG5sCitBQ19DQUNIRV9DSEVDSyhbd2hpY2ggdmFyaWFibGUgc3BlY2lmaWVzIHJ1bi10aW1lIG1vZHVsZSBzZWFyY2ggcGF0aF0sCisgIFtsdF9jdl9tb2R1bGVfcGF0aF92YXJdLCBbbHRfY3ZfbW9kdWxlX3BhdGhfdmFyPSIkc2hsaWJwYXRoX3ZhciJdKQoraWYgdGVzdCAtbiAiJGx0X2N2X21vZHVsZV9wYXRoX3ZhciI7IHRoZW4KKyAgbTRfcGF0dGVybl9hbGxvdyhbTFRfTU9EVUxFX1BBVEhfVkFSXSlkbmwKKyAgQUNfREVGSU5FX1VOUVVPVEVEKFtMVF9NT0RVTEVfUEFUSF9WQVJdLCBbIiRsdF9jdl9tb2R1bGVfcGF0aF92YXIiXSwKKyAgICBbRGVmaW5lIHRvIHRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0aGF0IGRldGVybWluZXMgdGhlIHJ1bi10aW1lIG1vZHVsZSBzZWFyY2ggcGF0aC5dKQorZmkKK10pIyBMVF9TWVNfTU9EVUxFX1BBVEgKKworIyBPbGQgbmFtZToKK0FVX0FMSUFTKFtBQ19MVERMX1NITElCUEFUSF0sIFtMVF9TWVNfTU9EVUxFX1BBVEhdKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MVERMX1NITElCUEFUSF0sIFtdKQorCisKKyMgTFRfU1lTX0RMU0VBUkNIX1BBVEgKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtMVF9TWVNfRExTRUFSQ0hfUEFUSF0sCitbbTRfcmVxdWlyZShbX0xUX1NZU19EWU5BTUlDX0xJTktFUl0pZG5sCitBQ19DQUNIRV9DSEVDSyhbZm9yIHRoZSBkZWZhdWx0IGxpYnJhcnkgc2VhcmNoIHBhdGhdLAorICBbbHRfY3Zfc3lzX2Rsc2VhcmNoX3BhdGhdLAorICBbbHRfY3Zfc3lzX2Rsc2VhcmNoX3BhdGg9IiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYyJdKQoraWYgdGVzdCAtbiAiJGx0X2N2X3N5c19kbHNlYXJjaF9wYXRoIjsgdGhlbgorICBzeXNfZGxzZWFyY2hfcGF0aD0KKyAgZm9yIGRpciBpbiAkbHRfY3Zfc3lzX2Rsc2VhcmNoX3BhdGg7IGRvCisgICAgaWYgdGVzdCAteiAiJHN5c19kbHNlYXJjaF9wYXRoIjsgdGhlbgorICAgICAgc3lzX2Rsc2VhcmNoX3BhdGg9IiRkaXIiCisgICAgZWxzZQorICAgICAgc3lzX2Rsc2VhcmNoX3BhdGg9IiRzeXNfZGxzZWFyY2hfcGF0aCRQQVRIX1NFUEFSQVRPUiRkaXIiCisgICAgZmkKKyAgZG9uZQorICBtNF9wYXR0ZXJuX2FsbG93KFtMVF9ETFNFQVJDSF9QQVRIXSlkbmwKKyAgQUNfREVGSU5FX1VOUVVPVEVEKFtMVF9ETFNFQVJDSF9QQVRIXSwgWyIkc3lzX2Rsc2VhcmNoX3BhdGgiXSwKKyAgICBbRGVmaW5lIHRvIHRoZSBzeXN0ZW0gZGVmYXVsdCBsaWJyYXJ5IHNlYXJjaCBwYXRoLl0pCitmaQorXSkjIExUX1NZU19ETFNFQVJDSF9QQVRICisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfTFRETF9TWVNTRUFSQ0hQQVRIXSwgW0xUX1NZU19ETFNFQVJDSF9QQVRIXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTFRETF9TWVNTRUFSQ0hQQVRIXSwgW10pCisKKworIyBfTFRfQ0hFQ0tfRExQUkVPUEVOCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZnVuKFtfTFRfQ0hFQ0tfRExQUkVPUEVOXSwKK1ttNF9yZXF1aXJlKFtfTFRfQ01EX0dMT0JBTF9TWU1CT0xTXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIGxpYnRvb2wgc3VwcG9ydHMgLWRsb3Blbi8tZGxwcmVvcGVuXSwKKyAgW2xpYmx0ZGxfY3ZfcHJlbG9hZGVkX3N5bWJvbHNdLAorICBbaWYgdGVzdCAtbiAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiOyB0aGVuCisgICAgbGlibHRkbF9jdl9wcmVsb2FkZWRfc3ltYm9scz15ZXMKKyAgZWxzZQorICAgIGxpYmx0ZGxfY3ZfcHJlbG9hZGVkX3N5bWJvbHM9bm8KKyAgZmkKKyAgXSkKK2lmIHRlc3QgeCIkbGlibHRkbF9jdl9wcmVsb2FkZWRfc3ltYm9scyIgPSB4eWVzOyB0aGVuCisgIEFDX0RFRklORShbSEFWRV9QUkVMT0FERURfU1lNQk9MU10sIFsxXSwKKyAgICBbRGVmaW5lIGlmIGxpYnRvb2wgY2FuIGV4dHJhY3Qgc3ltYm9sIGxpc3RzIGZyb20gb2JqZWN0IGZpbGVzLl0pCitmaQorXSkjIF9MVF9DSEVDS19ETFBSRU9QRU4KKworCisjIExUX0xJQl9ETExPQUQKKyMgLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0xUX0xJQl9ETExPQURdLAorW200X3BhdHRlcm5fYWxsb3coW15MVF9ETExPQURFUlMkXSkKK0xUX0RMTE9BREVSUz0KK0FDX1NVQlNUKFtMVF9ETExPQURFUlNdKQorCitBQ19MQU5HX1BVU0goW0NdKQorCitMSUJBRERfRExPUEVOPQorQUNfU0VBUkNIX0xJQlMoW2Rsb3Blbl0sIFtkbF0sCisJW0FDX0RFRklORShbSEFWRV9MSUJETF0sIFsxXSwKKwkJICAgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgbGliZGwgbGlicmFyeSBvciBlcXVpdmFsZW50Ll0pCisJaWYgdGVzdCAiJGFjX2N2X3NlYXJjaF9kbG9wZW4iICE9ICJub25lIHJlcXVpcmVkIiA7IHRoZW4KKwkgIExJQkFERF9ETE9QRU49Ii1sZGwiCisJZmkKKwlsaWJsdGRsX2N2X2xpYl9kbF9kbG9wZW49InllcyIKKwlMVF9ETExPQURFUlM9IiRMVF9ETExPQURFUlMgJHtsdF9kbG9wZW5fZGlyKyRsdF9kbG9wZW5fZGlyL31kbG9wZW4ubGEiXSwKKyAgICBbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyNpZiBIQVZFX0RMRkNOX0gKKyMgIGluY2x1ZGUgPGRsZmNuLmg+CisjZW5kaWYKKyAgICBdXSwgW1tkbG9wZW4oMCwgMCk7XV0pXSwKKwkgICAgW0FDX0RFRklORShbSEFWRV9MSUJETF0sIFsxXSwKKwkJICAgICAgIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGxpYmRsIGxpYnJhcnkgb3IgZXF1aXZhbGVudC5dKQorCSAgICBsaWJsdGRsX2N2X2Z1bmNfZGxvcGVuPSJ5ZXMiCisJICAgIExUX0RMTE9BREVSUz0iJExUX0RMTE9BREVSUyAke2x0X2Rsb3Blbl9kaXIrJGx0X2Rsb3Blbl9kaXIvfWRsb3Blbi5sYSJdLAorCVtBQ19DSEVDS19MSUIoW3N2bGRdLCBbZGxvcGVuXSwKKwkJW0FDX0RFRklORShbSEFWRV9MSUJETF0sIFsxXSwKKwkJCSBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBsaWJkbCBsaWJyYXJ5IG9yIGVxdWl2YWxlbnQuXSkKKwkgICAgICAgIExJQkFERF9ETE9QRU49Ii1sc3ZsZCIgbGlibHRkbF9jdl9mdW5jX2Rsb3Blbj0ieWVzIgorCQlMVF9ETExPQURFUlM9IiRMVF9ETExPQURFUlMgJHtsdF9kbG9wZW5fZGlyKyRsdF9kbG9wZW5fZGlyL31kbG9wZW4ubGEiXSldKV0pCitpZiB0ZXN0IHgiJGxpYmx0ZGxfY3ZfZnVuY19kbG9wZW4iID0geHllcyB8fCB0ZXN0IHgiJGxpYmx0ZGxfY3ZfbGliX2RsX2Rsb3BlbiIgPSB4eWVzCit0aGVuCisgIGx0X3NhdmVfTElCUz0iJExJQlMiCisgIExJQlM9IiRMSUJTICRMSUJBRERfRExPUEVOIgorICBBQ19DSEVDS19GVU5DUyhbZGxlcnJvcl0pCisgIExJQlM9IiRsdF9zYXZlX0xJQlMiCitmaQorQUNfU1VCU1QoW0xJQkFERF9ETE9QRU5dKQorCitMSUJBRERfU0hMX0xPQUQ9CitBQ19DSEVDS19GVU5DKFtzaGxfbG9hZF0sCisJW0FDX0RFRklORShbSEFWRV9TSExfTE9BRF0sIFsxXSwKKwkJICAgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc2hsX2xvYWQgZnVuY3Rpb24uXSkKKwlMVF9ETExPQURFUlM9IiRMVF9ETExPQURFUlMgJHtsdF9kbG9wZW5fZGlyKyRsdF9kbG9wZW5fZGlyL31zaGxfbG9hZC5sYSJdLAorICAgIFtBQ19DSEVDS19MSUIoW2RsZF0sIFtzaGxfbG9hZF0sCisJICAgIFtBQ19ERUZJTkUoW0hBVkVfU0hMX0xPQURdLCBbMV0sCisJCSAgICAgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzaGxfbG9hZCBmdW5jdGlvbi5dKQorCSAgICBMVF9ETExPQURFUlM9IiRMVF9ETExPQURFUlMgJHtsdF9kbG9wZW5fZGlyKyRsdF9kbG9wZW5fZGlyL31zaGxfbG9hZC5sYSIKKwkgICAgTElCQUREX1NITF9MT0FEPSItbGRsZCJdKV0pCitBQ19TVUJTVChbTElCQUREX1NITF9MT0FEXSkKKworY2FzZSAkaG9zdF9vcyBpbgorZGFyd2luW1sxNTY3XV0uKikKKyMgV2Ugb25seSB3YW50IHRoaXMgZm9yIHByZS1NYWMgT1MgWCAxMC40LgorICBBQ19DSEVDS19GVU5DKFtfZHlsZF9mdW5jX2xvb2t1cF0sCisJW0FDX0RFRklORShbSEFWRV9EWUxEXSwgWzFdLAorCQkgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBfZHlsZF9mdW5jX2xvb2t1cCBmdW5jdGlvbi5dKQorCUxUX0RMTE9BREVSUz0iJExUX0RMTE9BREVSUyAke2x0X2Rsb3Blbl9kaXIrJGx0X2Rsb3Blbl9kaXIvfWR5bGQubGEiXSkKKyAgOzsKK2Jlb3MqKQorICBMVF9ETExPQURFUlM9IiRMVF9ETExPQURFUlMgJHtsdF9kbG9wZW5fZGlyKyRsdF9kbG9wZW5fZGlyL31sb2FkX2FkZF9vbi5sYSIKKyAgOzsKK2N5Z3dpbiogfCBtaW5ndyogfCBvczIqIHwgcHczMiopCisgIEFDX0NIRUNLX0RFQ0xTKFtjeWd3aW5fY29udl9wYXRoXSwgW10sIFtdLCBbWyNpbmNsdWRlIDxzeXMvY3lnd2luLmg+XV0pCisgIExUX0RMTE9BREVSUz0iJExUX0RMTE9BREVSUyAke2x0X2Rsb3Blbl9kaXIrJGx0X2Rsb3Blbl9kaXIvfWxvYWRsaWJyYXJ5LmxhIgorICA7OworZXNhYworCitBQ19DSEVDS19MSUIoW2RsZF0sIFtkbGRfbGlua10sCisJW0FDX0RFRklORShbSEFWRV9ETERdLCBbMV0sCisJCSAgIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIEdOVSBkbGQgbGlicmFyeS5dKQorCQlMVF9ETExPQURFUlM9IiRMVF9ETExPQURFUlMgJHtsdF9kbG9wZW5fZGlyKyRsdF9kbG9wZW5fZGlyL31kbGRfbGluay5sYSJdKQorQUNfU1VCU1QoW0xJQkFERF9ETERfTElOS10pCisKK200X3BhdHRlcm5fYWxsb3coW15MVF9ETFBSRU9QRU4kXSkKK0xUX0RMUFJFT1BFTj0KK2lmIHRlc3QgLW4gIiRMVF9ETExPQURFUlMiCit0aGVuCisgIGZvciBsdF9sb2FkZXIgaW4gJExUX0RMTE9BREVSUzsgZG8KKyAgICBMVF9ETFBSRU9QRU49IiRMVF9ETFBSRU9QRU4tZGxwcmVvcGVuICRsdF9sb2FkZXIgIgorICBkb25lCisgIEFDX0RFRklORShbSEFWRV9MSUJETExPQURFUl0sIFsxXSwKKyAgICAgICAgICAgIFtEZWZpbmUgaWYgbGliZGxsb2FkZXIgd2lsbCBiZSBidWlsdCBvbiB0aGlzIHBsYXRmb3JtXSkKK2ZpCitBQ19TVUJTVChbTFRfRExQUkVPUEVOXSkKKworZG5sIFRoaXMgaXNuJ3QgdXNlZCBhbnltb3JlLCBidXQgc2V0IGl0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQorTElCQUREX0RMPSIkTElCQUREX0RMT1BFTiAkTElCQUREX1NITF9MT0FEIgorQUNfU1VCU1QoW0xJQkFERF9ETF0pCisKK0FDX0xBTkdfUE9QCitdKSMgTFRfTElCX0RMTE9BRAorCisjIE9sZCBuYW1lOgorQVVfQUxJQVMoW0FDX0xURExfRExMSUJdLCBbTFRfTElCX0RMTE9BRF0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xURExfRExMSUJdLCBbXSkKKworCisjIExUX1NZU19TWU1CT0xfVVNDT1JFCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGRvZXMgdGhlIGNvbXBpbGVyIHByZWZpeCBnbG9iYWwgc3ltYm9scyB3aXRoIGFuIHVuZGVyc2NvcmU/CitBQ19ERUZVTihbTFRfU1lTX1NZTUJPTF9VU0NPUkVdLAorW200X3JlcXVpcmUoW19MVF9DTURfR0xPQkFMX1NZTUJPTFNdKWRubAorQUNfQ0FDSEVfQ0hFQ0soW2ZvciBfIHByZWZpeCBpbiBjb21waWxlZCBzeW1ib2xzXSwKKyAgW2x0X2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZV0sCisgIFtsdF9jdl9zeXNfc3ltYm9sX3VuZGVyc2NvcmU9bm8KKyAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKK3ZvaWQgbm1fdGVzdF9mdW5jKCl7fQoraW50IG1haW4oKXtubV90ZXN0X2Z1bmM7cmV0dXJuIDA7fQorX0xUX0VPRgorICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorICAgICMgTm93IHRyeSB0byBncmFiIHRoZSBzeW1ib2xzLgorICAgIGFjX25saXN0PWNvbmZ0ZXN0Lm5tCisgICAgaWYgQUNfVFJZX0VWQUwoTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcPiAkYWNfbmxpc3QpICYmIHRlc3QgLXMgIiRhY19ubGlzdCI7IHRoZW4KKyAgICAgICMgU2VlIHdoZXRoZXIgdGhlIHN5bWJvbHMgaGF2ZSBhIGxlYWRpbmcgdW5kZXJzY29yZS4KKyAgICAgIGlmIGdyZXAgJ14uIF9ubV90ZXN0X2Z1bmMnICIkYWNfbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgbHRfY3Zfc3lzX3N5bWJvbF91bmRlcnNjb3JlPXllcworICAgICAgZWxzZQorICAgICAgICBpZiBncmVwICdeLiBubV90ZXN0X2Z1bmMgJyAiJGFjX25saXN0IiA+L2Rldi9udWxsOyB0aGVuCisJICA6CisgICAgICAgIGVsc2UKKwkgIGVjaG8gImNvbmZpZ3VyZTogY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRhY19ubGlzdCIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgICBmaQorICAgICAgZmkKKyAgICBlbHNlCisgICAgICBlY2hvICJjb25maWd1cmU6IGNhbm5vdCBydW4gJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICBmaQorICBlbHNlCisgICAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgY2F0IGNvbmZ0ZXN0LmMgPiZBU19NRVNTQUdFX0xPR19GRAorICBmaQorICBybSAtcmYgY29uZnRlc3QqCisgIF0pCisgIHN5c19zeW1ib2xfdW5kZXJzY29yZT0kbHRfY3Zfc3lzX3N5bWJvbF91bmRlcnNjb3JlCisgIEFDX1NVQlNUKFtzeXNfc3ltYm9sX3VuZGVyc2NvcmVdKQorXSkjIExUX1NZU19TWU1CT0xfVVNDT1JFCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfTFRETF9TWU1CT0xfVVNDT1JFXSwgW0xUX1NZU19TWU1CT0xfVVNDT1JFXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTFRETF9TWU1CT0xfVVNDT1JFXSwgW10pCisKKworIyBMVF9GVU5DX0RMU1lNX1VTQ09SRQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0xUX0ZVTkNfRExTWU1fVVNDT1JFXSwKK1tBQ19SRVFVSVJFKFtMVF9TWVNfU1lNQk9MX1VTQ09SRV0pZG5sCitpZiB0ZXN0IHgiJGx0X2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZSIgPSB4eWVzOyB0aGVuCisgIGlmIHRlc3QgeCIkbGlibHRkbF9jdl9mdW5jX2Rsb3BlbiIgPSB4eWVzIHx8CisgICAgIHRlc3QgeCIkbGlibHRkbF9jdl9saWJfZGxfZGxvcGVuIiA9IHh5ZXMgOyB0aGVuCisJQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgd2UgaGF2ZSB0byBhZGQgYW4gdW5kZXJzY29yZSBmb3IgZGxzeW1dLAorCSAgW2xpYmx0ZGxfY3ZfbmVlZF91c2NvcmVdLAorCSAgW2xpYmx0ZGxfY3ZfbmVlZF91c2NvcmU9dW5rbm93bgorICAgICAgICAgIHNhdmVfTElCUz0iJExJQlMiCisgICAgICAgICAgTElCUz0iJExJQlMgJExJQkFERF9ETE9QRU4iCisJICBfTFRfVFJZX0RMT1BFTl9TRUxGKAorCSAgICBbbGlibHRkbF9jdl9uZWVkX3VzY29yZT1ub10sIFtsaWJsdGRsX2N2X25lZWRfdXNjb3JlPXllc10sCisJICAgIFtdLAkJCQkgW2xpYmx0ZGxfY3ZfbmVlZF91c2NvcmU9Y3Jvc3NdKQorCSAgTElCUz0iJHNhdmVfTElCUyIKKwldKQorICBmaQorZmkKKworaWYgdGVzdCB4IiRsaWJsdGRsX2N2X25lZWRfdXNjb3JlIiA9IHh5ZXM7IHRoZW4KKyAgQUNfREVGSU5FKFtORUVEX1VTQ09SRV0sIFsxXSwKKyAgICBbRGVmaW5lIGlmIGRsc3ltKCkgcmVxdWlyZXMgYSBsZWFkaW5nIHVuZGVyc2NvcmUgaW4gc3ltYm9sIG5hbWVzLl0pCitmaQorXSkjIExUX0ZVTkNfRExTWU1fVVNDT1JFCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfTFRETF9ETFNZTV9VU0NPUkVdLCBbTFRfRlVOQ19ETFNZTV9VU0NPUkVdKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MVERMX0RMU1lNX1VTQ09SRV0sIFtdKQorCisjIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4KICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCisjIHNlcmlhbCAxCisKICMgQU1fQVVUT01BS0VfVkVSU0lPTihWRVJTSU9OKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEF1dG9tYWtlIFguWSB0cmFjZXMgdGhpcyBtYWNybyB0byBlbnN1cmUgYWNsb2NhbC5tNCBoYXMgYmVlbgpAQCAtMzQsNyArODU2LDcgQEAKIFthbV9fYXBpX3ZlcnNpb249JzEuMTEnCiBkbmwgU29tZSB1c2VycyBmaW5kIEFNX0FVVE9NQUtFX1ZFUlNJT04gYW5kIG1pc3Rha2UgaXQgZm9yIGEgd2F5IHRvCiBkbmwgcmVxdWlyZSBzb21lIG1pbmltdW0gdmVyc2lvbi4gIFBvaW50IHRoZW0gdG8gdGhlIHJpZ2h0IG1hY3JvLgotbTRfaWYoWyQxXSwgWzEuMTEuMV0sIFtdLAorbTRfaWYoWyQxXSwgWzEuMTEuM10sIFtdLAogICAgICAgW0FDX0ZBVEFMKFtEbyBub3QgY2FsbCAkMCwgdXNlIEFNX0lOSVRfQVVUT01BS0UoWyQxXSkuXSldKWRubAogXSkKIApAQCAtNTAsNyArODcyLDcgQEAKICMgQ2FsbCBBTV9BVVRPTUFLRV9WRVJTSU9OIGFuZCBBTV9BVVRPTUFLRV9WRVJTSU9OIHNvIHRoZXkgY2FuIGJlIHRyYWNlZC4KICMgVGhpcyBmdW5jdGlvbiBpcyBBQ19SRVFVSVJFZCBieSBBTV9JTklUX0FVVE9NQUtFLgogQUNfREVGVU4oW0FNX1NFVF9DVVJSRU5UX0FVVE9NQUtFX1ZFUlNJT05dLAotW0FNX0FVVE9NQUtFX1ZFUlNJT04oWzEuMTEuMV0pZG5sCitbQU1fQVVUT01BS0VfVkVSU0lPTihbMS4xMS4zXSlkbmwKIG00X2lmbmRlZihbQUNfQVVUT0NPTkZfVkVSU0lPTl0sCiAgIFttNF9jb3B5KFttNF9QQUNLQUdFX1ZFUlNJT05dLCBbQUNfQVVUT0NPTkZfVkVSU0lPTl0pXSlkbmwKIF9BTV9BVVRPQ09ORl9WRVJTSU9OKG00X2RlZm4oW0FDX0FVVE9DT05GX1ZFUlNJT05dKSldKQpAQCAtNzksMTIgKzkwMSwxNCBAQAogCiAjIEFNX0FVWF9ESVJfRVhQQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCiAKLSMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAzLCAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAzLCAyMDA1LCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKKyMgc2VyaWFsIDEKKwogIyBGb3IgcHJvamVjdHMgdXNpbmcgQUNfQ09ORklHX0FVWF9ESVIoW2Zvb10pLCBBdXRvY29uZiBzZXRzCiAjICRhY19hdXhfZGlyIHRvIGAkc3JjZGlyL2ZvbycuICBJbiBvdGhlciBwcm9qZWN0cywgaXQgaXMgc2V0IHRvCiAjIGAkc3JjZGlyJywgYCRzcmNkaXIvLi4nLCBvciBgJHNyY2Rpci8uLi8uLicuCkBAIC0xNjYsMTQgKzk5MCwxNCBAQAogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuXV0pCiBmaV0pXSkKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDkKLSMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOSwKKyMgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCi0jIHNlcmlhbCAxMAorIyBzZXJpYWwgMTIKIAogIyBUaGVyZSBhcmUgYSBmZXcgZGlydHkgaGFja3MgYmVsb3cgdG8gYXZvaWQgbGV0dGluZyBgQUNfUFJPR19DQycgYmUKICMgd3JpdHRlbiBpbiBjbGVhciwgaW4gd2hpY2ggY2FzZSBhdXRvbWFrZSwgd2hlbiByZWFkaW5nIGFjbG9jYWwubTQsCkBAIC0yMTMsNiArMTAzNyw3IEBACiAgICMgaW5zdGFuY2UgaXQgd2FzIHJlcG9ydGVkIHRoYXQgb24gSFAtVVggdGhlIGdjYyB0ZXN0IHdpbGwgZW5kIHVwCiAgICMgbWFraW5nIGEgZHVtbXkgZmlsZSBuYW1lZCBgRCcgLS0gYmVjYXVzZSBgLU1EJyBtZWFucyBgcHV0IHRoZSBvdXRwdXQKICAgIyBpbiBEJy4KKyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcgogICBta2RpciBjb25mdGVzdC5kaXIKICAgIyBDb3B5IGRlcGNvbXAgdG8gc3ViZGlyIGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIHdvbid0IGZpbmQgaXQgaWYgd2UncmUKICAgIyB1c2luZyBhIHJlbGF0aXZlIGRpcmVjdG9yeS4KQEAgLTI3Nyw3ICsxMTAyLDcgQEAKIAlicmVhawogICAgICAgZmkKICAgICAgIDs7Ci0gICAgbXN2aXN1YWxjcHAgfCBtc3ZjbXN5cykKKyAgICBtc3ZjNyB8IG1zdmM3bXN5cyB8IG1zdmlzdWFsY3BwIHwgbXN2Y21zeXMpCiAgICAgICAjIFRoaXMgY29tcGlsZXIgd29uJ3QgZ3JvayBgLWMgLW8nLCBidXQgYWxzbywgdGhlIG1pbnVzbyB0ZXN0IGhhcwogICAgICAgIyBub3QgcnVuIHlldC4gIFRoZXNlIGRlcG1vZGVzIGFyZSBsYXRlIGVub3VnaCBpbiB0aGUgZ2FtZSwgYW5kCiAgICAgICAjIHNvIHdlYWsgdGhhdCB0aGVpciBmdW5jdGlvbmluZyBzaG91bGQgbm90IGJlIGltcGFjdGVkLgpAQCAtMzQyLDEwICsxMTY3LDEzIEBACiBpZiB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm87IHRoZW4KICAgYW1fZGVwY29tcD0iJGFjX2F1eF9kaXIvZGVwY29tcCIKICAgQU1ERVBCQUNLU0xBU0g9J1wnCisgIGFtX19ub2RlcD0nX25vJwogZmkKIEFNX0NPTkRJVElPTkFMKFtBTURFUF0sIFt0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm9dKQogQUNfU1VCU1QoW0FNREVQQkFDS1NMQVNIXSlkbmwKIF9BTV9TVUJTVF9OT1RNQUtFKFtBTURFUEJBQ0tTTEFTSF0pZG5sCitBQ19TVUJTVChbYW1fX25vZGVwXSlkbmwKK19BTV9TVUJTVF9OT1RNQUtFKFthbV9fbm9kZXBdKWRubAogXSkKIAogIyBHZW5lcmF0ZSBjb2RlIHRvIHNldCB1cCBkZXBlbmRlbmN5IHRyYWNraW5nLiAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQpAQCAtNTY3LDEyICsxMzk1LDE1IEBACiBkb25lCiBlY2hvICJ0aW1lc3RhbXAgZm9yICRfYW1fYXJnIiA+YEFTX0RJUk5BTUUoWyIkX2FtX2FyZyJdKWAvc3RhbXAtaFtdJF9hbV9zdGFtcF9jb3VudF0pCiAKLSMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAzLCAyMDA1LCAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAzLCAyMDA1LCAyMDA4LCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyMgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKKyMgc2VyaWFsIDEKKwogIyBBTV9QUk9HX0lOU1RBTExfU0gKICMgLS0tLS0tLS0tLS0tLS0tLS0tCiAjIERlZmluZSAkaW5zdGFsbF9zaC4KQEAgLTYxMiw4ICsxNDQzLDggQEAKICMgQWRkIC0tZW5hYmxlLW1haW50YWluZXItbW9kZSBvcHRpb24gdG8gY29uZmlndXJlLiAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KICMgRnJvbSBKaW0gTWV5ZXJpbmcKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTgsIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDgKLSMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5OCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwOCwKKyMgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKQEAgLTYzMyw3ICsxNDY0LDcgQEAKICAgICAgICBbZGlzYWJsZV0sIFttNF9kZWZpbmUoW2FtX21haW50YWluZXJfb3RoZXJdLCBbZW5hYmxlXSldLAogICAgICAgIFttNF9kZWZpbmUoW2FtX21haW50YWluZXJfb3RoZXJdLCBbZW5hYmxlXSkKICAgICAgICAgbTRfd2Fybihbc3ludGF4XSwgW3VuZXhwZWN0ZWQgYXJndW1lbnQgdG8gQU1AJnRAX01BSU5UQUlORVJfTU9ERTogJDFdKV0pCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gYW1fbWFpbnRhaW5lcl9vdGhlciBtYWludGFpbmVyLXNwZWNpZmljIHBvcnRpb25zIG9mIE1ha2VmaWxlc10pCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIG1haW50YWluZXItc3BlY2lmaWMgcG9ydGlvbnMgb2YgTWFrZWZpbGVzXSkKICAgZG5sIG1haW50YWluZXItbW9kZSdzIGRlZmF1bHQgaXMgJ2Rpc2FibGUnIHVubGVzcyAnZW5hYmxlJyBpcyBwYXNzZWQKICAgQUNfQVJHX0VOQUJMRShbbWFpbnRhaW5lci1tb2RlXSwKIFsgIC0tXVthbV9tYWludGFpbmVyX290aGVyXVstbWFpbnRhaW5lci1tb2RlICBhbV9tYWludGFpbmVyX290aGVyIG1ha2UgcnVsZXMgYW5kIGRlcGVuZGVuY2llcyBub3QgdXNlZnVsCkBAIC03NzksMTIgKzE2MTAsMTUgQEAKIGZpCiBdKQogCi0jIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisjIEluYy4KICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCisjIHNlcmlhbCAxCisKICMgQU1fUFJPR19NS0RJUl9QCiAjIC0tLS0tLS0tLS0tLS0tLQogIyBDaGVjayBmb3IgYG1rZGlyIC1wJy4KQEAgLTgwNywxMyArMTY0MSwxNCBAQAogCiAjIEhlbHBlciBmdW5jdGlvbnMgZm9yIG9wdGlvbiBoYW5kbGluZy4gICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCiAKLSMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA1LCAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA1LCAyMDA4LCAyMDEwIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKLSMgc2VyaWFsIDQKKyMgc2VyaWFsIDUKIAogIyBfQU1fTUFOR0xFX09QVElPTihOQU1FKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtODIxLDEzICsxNjU2LDEzIEBACiBbW19BTV9PUFRJT05fXW00X2JwYXRzdWJzdCgkMSwgW1teYS16QS1aMC05X11dLCBbX10pXSkKIAogIyBfQU1fU0VUX09QVElPTihOQU1FKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgU2V0IG9wdGlvbiBOQU1FLiAgUHJlc2VudGx5IHRoYXQgb25seSBtZWFucyBkZWZpbmluZyBhIGZsYWcgZm9yIHRoaXMgb3B0aW9uLgogQUNfREVGVU4oW19BTV9TRVRfT1BUSU9OXSwKIFttNF9kZWZpbmUoX0FNX01BTkdMRV9PUFRJT04oWyQxXSksIDEpXSkKIAogIyBfQU1fU0VUX09QVElPTlMoT1BUSU9OUykKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgT1BUSU9OUyBpcyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIEF1dG9tYWtlIG9wdGlvbnMuCiBBQ19ERUZVTihbX0FNX1NFVF9PUFRJT05TXSwKIFttNF9mb3JlYWNoX3coW19BTV9PcHRpb25dLCBbJDFdLCBbX0FNX1NFVF9PUFRJT04oX0FNX09wdGlvbildKV0pCkBAIC05MDMsMTIgKzE3MzgsMTQgQEAKIGZpCiBBQ19NU0dfUkVTVUxUKHllcyldKQogCi0jIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMywgMjAwNSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMywgMjAwNSwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCisjIHNlcmlhbCAxCisKICMgQU1fUFJPR19JTlNUQUxMX1NUUklQCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBPbmUgaXNzdWUgd2l0aCB2ZW5kb3IgYGluc3RhbGwnIChldmVuIEdOVSkgaXMgdGhhdCB5b3UgY2FuJ3QKQEAgLTkzMSwxMyArMTc2OCwxMyBAQAogSU5TVEFMTF9TVFJJUF9QUk9HUkFNPSJcJChpbnN0YWxsX3NoKSAtYyAtcyIKIEFDX1NVQlNUKFtJTlNUQUxMX1NUUklQX1BST0dSQU1dKV0pCiAKLSMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKLSMgc2VyaWFsIDIKKyMgc2VyaWFsIDMKIAogIyBfQU1fU1VCU1RfTk9UTUFLRShWQVJJQUJMRSkKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC05NDYsMTMgKzE3ODMsMTMgQEAKIEFDX0RFRlVOKFtfQU1fU1VCU1RfTk9UTUFLRV0pCiAKICMgQU1fU1VCU1RfTk9UTUFLRShWQVJJQUJMRSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFB1YmxpYyBzaXN0ZXIgb2YgX0FNX1NVQlNUX05PVE1BS0UuCiBBQ19ERUZVTihbQU1fU1VCU1RfTk9UTUFLRV0sIFtfQU1fU1VCU1RfTk9UTUFLRSgkQCldKQogCiAjIENoZWNrIGhvdyB0byBjcmVhdGUgYSB0YXJiYWxsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCiAKLSMgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LApAQCAtOTc0LDEwICsxODExLDExIEBACiAjIGEgdGFyYmFsbCByZWFkIGZyb20gc3RkaW4uCiAjICAgICAkKGFtX191bnRhcikgPCByZXN1bHQudGFyCiBBQ19ERUZVTihbX0FNX1BST0dfVEFSXSwKLVsjIEFsd2F5cyBkZWZpbmUgQU1UQVIgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCi1BTV9NSVNTSU5HX1BST0coW0FNVEFSXSwgW3Rhcl0pCitbIyBBbHdheXMgZGVmaW5lIEFNVEFSIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAgWWVzLCBpdCdzIHN0aWxsIHVzZWQKKyMgaW4gdGhlIHdpbGQgOi0oICBXZSBzaG91bGQgZmluZCBhIHByb3BlciB3YXkgdG8gZGVwcmVjYXRlIGl0IC4uLgorQUNfU1VCU1QoW0FNVEFSXSwgWyckJHtUQVItdGFyfSddKQogbTRfaWYoWyQxXSwgW3Y3XSwKLSAgICAgW2FtX190YXI9JyR7QU1UQVJ9IGNob2YgLSAiJCR0YXJkaXIiJzsgYW1fX3VudGFyPScke0FNVEFSfSB4ZiAtJ10sCisgICAgIFthbV9fdGFyPSckJHtUQVItdGFyfSBjaG9mIC0gIiQkdGFyZGlyIicgYW1fX3VudGFyPSckJHtUQVItdGFyfSB4ZiAtJ10sCiAgICAgIFttNF9jYXNlKFskMV0sIFt1c3Rhcl0sLCBbcGF4XSwsCiAgICAgICAgICAgICAgIFttNF9mYXRhbChbVW5rbm93biB0YXIgZm9ybWF0XSldKQogQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gY3JlYXRlIGEgJDEgdGFyIGFyY2hpdmVdKQpAQCAtMTA0Niw2ICsxODg0LDE2IEBACiBBQ19TVUJTVChbYW1fX3VudGFyXSkKIF0pICMgX0FNX1BST0dfVEFSCiAKK200X2luY2x1ZGUoW200L2FzbWNmaS5tNF0pCittNF9pbmNsdWRlKFttNC9heF9hcHBlbmRfZmxhZy5tNF0pCittNF9pbmNsdWRlKFttNC9heF9jY19tYXhvcHQubTRdKQorbTRfaW5jbHVkZShbbTQvYXhfY2ZsYWdzX3dhcm5fYWxsLm00XSkKK200X2luY2x1ZGUoW200L2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5tNF0pCittNF9pbmNsdWRlKFttNC9heF9jb21waWxlcl92ZW5kb3IubTRdKQorbTRfaW5jbHVkZShbbTQvYXhfY29uZmlndXJlX2FyZ3MubTRdKQorbTRfaW5jbHVkZShbbTQvYXhfZW5hYmxlX2J1aWxkZGlyLm00XSkKK200X2luY2x1ZGUoW200L2F4X2djY19hcmNoZmxhZy5tNF0pCittNF9pbmNsdWRlKFttNC9heF9nY2NfeDg2X2NwdWlkLm00XSkKIG00X2luY2x1ZGUoW200L2xpYnRvb2wubTRdKQogbTRfaW5jbHVkZShbbTQvbHRvcHRpb25zLm00XSkKIG00X2luY2x1ZGUoW200L2x0c3VnYXIubTRdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb21waWxlIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb21waWxlCmluZGV4IDFiMWQyMzIuLmMwMDk2YTcgMTAwNzU1Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29tcGlsZQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbXBpbGUKQEAgLTEsOSArMSwxMCBAQAogIyEgL2Jpbi9zaAogIyBXcmFwcGVyIGZvciBjb21waWxlcnMgd2hpY2ggZG8gbm90IHVuZGVyc3RhbmQgYC1jIC1vJy4KIAotc2NyaXB0dmVyc2lvbj0yMDA1LTA1LTE0LjIyCitzY3JpcHR2ZXJzaW9uPTIwMDktMTAtMDYuMjA7ICMgVVRDCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwLCAyMDAzLCAyMDA0LCAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDkgIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgogIyBXcml0dGVuIGJ5IFRvbSBUcm9tZXkgPHRyb21leUBjeWdudXMuY29tPi4KICMKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTE3LDggKzE4LDcgQEAKICMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICMKICMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogCiAjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKICMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCkBAIC0xMDMsMTMgKzEwMywxMyBAQAogZmkKIAogIyBOYW1lIG9mIGZpbGUgd2UgZXhwZWN0IGNvbXBpbGVyIHRvIGNyZWF0ZS4KLWNvZmlsZT1gZWNobyAiJGNmaWxlIiB8IHNlZCAtZSAnc3xeLiovfHwnIC1lICdzL1wuYyQvLm8vJ2AKK2NvZmlsZT1gZWNobyAiJGNmaWxlIiB8IHNlZCAnc3xeLipbXFwvXXx8OyBzfF5bYS16QS1aXTp8fDsgcy9cLmMkLy5vLydgCiAKICMgQ3JlYXRlIHRoZSBsb2NrIGRpcmVjdG9yeS4KLSMgTm90ZTogdXNlIGBbLy4tXScgaGVyZSB0byBlbnN1cmUgdGhhdCB3ZSBkb24ndCB1c2UgdGhlIHNhbWUgbmFtZQorIyBOb3RlOiB1c2UgYFsvXFw6Li1dJyBoZXJlIHRvIGVuc3VyZSB0aGF0IHdlIGRvbid0IHVzZSB0aGUgc2FtZSBuYW1lCiAjIHRoYXQgd2UgYXJlIHVzaW5nIGZvciB0aGUgLm8gZmlsZS4gIEFsc28sIGJhc2UgdGhlIG5hbWUgb24gdGhlIGV4cGVjdGVkCiAjIG9iamVjdCBmaWxlIG5hbWUsIHNpbmNlIHRoYXQgaXMgd2hhdCBtYXR0ZXJzIHdpdGggYSBwYXJhbGxlbCBidWlsZC4KLWxvY2tkaXI9YGVjaG8gIiRjb2ZpbGUiIHwgc2VkIC1lICdzfFsvLi1dfF98ZydgLmQKK2xvY2tkaXI9YGVjaG8gIiRjb2ZpbGUiIHwgc2VkIC1lICdzfFsvXFw6Li1dfF98ZydgLmQKIHdoaWxlIHRydWU7IGRvCiAgIGlmIG1rZGlyICIkbG9ja2RpciIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgICAgYnJlYWsKQEAgLTEyNCw5ICsxMjQsOSBAQAogcmV0PSQ/CiAKIGlmIHRlc3QgLWYgIiRjb2ZpbGUiOyB0aGVuCi0gIG12ICIkY29maWxlIiAiJG9maWxlIgorICB0ZXN0ICIkY29maWxlIiA9ICIkb2ZpbGUiIHx8IG12ICIkY29maWxlIiAiJG9maWxlIgogZWxpZiB0ZXN0IC1mICIke2NvZmlsZX1iaiI7IHRoZW4KLSAgbXYgIiR7Y29maWxlfWJqIiAiJG9maWxlIgorICB0ZXN0ICIke2NvZmlsZX1iaiIgPSAiJG9maWxlIiB8fCBtdiAiJHtjb2ZpbGV9YmoiICIkb2ZpbGUiCiBmaQogCiBybWRpciAiJGxvY2tkaXIiCkBAIC0xMzgsNSArMTM4LDYgQEAKICMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQogIyB0aW1lLXN0YW1wLXN0YXJ0OiAic2NyaXB0dmVyc2lvbj0iCiAjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAyZC4lMDJIIgotIyB0aW1lLXN0YW1wLWVuZDogIiQiCisjIHRpbWUtc3RhbXAtdGltZS16b25lOiAiVVRDIgorIyB0aW1lLXN0YW1wLWVuZDogIjsgIyBVVEMiCiAjIEVuZDoKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlnLmd1ZXNzIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWcuZ3Vlc3MKaW5kZXggZDUzZTMwOS4uYjAyNTY1YyAxMDA3NTUKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWcuZ3Vlc3MKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWcuZ3Vlc3MKQEAgLTEsMTAgKzEsMTAgQEAKICMhIC9iaW4vc2gKICMgQXR0ZW1wdCB0byBndWVzcyBhIGNhbm9uaWNhbCBzeXN0ZW0gbmFtZS4KICMgICBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksCi0jICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOQotIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsCisjICAgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAotdGltZXN0YW1wPScyMDA5LTExLTE5JwordGltZXN0YW1wPScyMDExLTA2LTAzJwogCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CiAjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC01Niw4ICs1Niw5IEBACiBHTlUgY29uZmlnLmd1ZXNzICgkdGltZXN0YW1wKQogCiBPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgUGVyIEJvdGhuZXIuCi1Db3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsCi0yMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLAorMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlCitTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCiB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCkBAIC0xODAsNyArMTgxLDcgQEAKIAkJZmkKIAkJOzsKIAkgICAgKikKLQkgICAgICAgIG9zPW5ldGJzZAorCQlvcz1uZXRic2QKIAkJOzsKIAllc2FjCiAJIyBUaGUgT1MgcmVsZWFzZQpAQCAtMjIzLDcgKzIyNCw3IEBACiAJCVVOQU1FX1JFTEVBU0U9YC91c3Ivc2Jpbi9zaXplciAtdiB8IGF3ayAne3ByaW50ICQzfSdgCiAJCTs7CiAJKjUuKikKLQkgICAgICAgIFVOQU1FX1JFTEVBU0U9YC91c3Ivc2Jpbi9zaXplciAtdiB8IGF3ayAne3ByaW50ICQ0fSdgCisJCVVOQU1FX1JFTEVBU0U9YC91c3Ivc2Jpbi9zaXplciAtdiB8IGF3ayAne3ByaW50ICQ0fSdgCiAJCTs7CiAJZXNhYwogCSMgQWNjb3JkaW5nIHRvIENvbXBhcSwgL3Vzci9zYmluL3BzcmluZm8gaGFzIGJlZW4gYXZhaWxhYmxlIG9uCkBAIC0yNjksNyArMjcwLDEwIEBACiAJIyBBIFhuLm4gdmVyc2lvbiBpcyBhbiB1bnJlbGVhc2VkIGV4cGVyaW1lbnRhbCBiYXNlbGV2ZWwuCiAJIyAxLjIgdXNlcyAiMS4yIiBmb3IgdW5hbWUgLXIuCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LWRlYy1vc2ZgZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL15bUFZUWF0vLycgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidgCi0JZXhpdCA7OworCSMgUmVzZXQgRVhJVCB0cmFwIGJlZm9yZSBleGl0aW5nIHRvIGF2b2lkIHNwdXJpb3VzIG5vbi16ZXJvIGV4aXQgY29kZS4KKwlleGl0Y29kZT0kPworCXRyYXAgJycgMAorCWV4aXQgJGV4aXRjb2RlIDs7CiAgICAgQWxwaGFcICo6V2luZG93c19OVCo6KikKIAkjIEhvdyBkbyB3ZSBrbm93IGl0J3MgSW50ZXJpeCByYXRoZXIgdGhhbiB0aGUgZ2VuZXJpYyBQT1NJWCBzdWJzeXN0ZW0/CiAJIyBTaG91bGQgd2UgY2hhbmdlIFVOQU1FX01BQ0hJTkUgYmFzZWQgb24gdGhlIG91dHB1dCBvZiB1bmFtZSBpbnN0ZWFkCkBAIC0yOTUsNyArMjk5LDcgQEAKIAllY2hvIHMzOTAtaWJtLXp2bW9lCiAJZXhpdCA7OwogICAgICo6T1M0MDA6KjoqKQotICAgICAgICBlY2hvIHBvd2VycGMtaWJtLW9zNDAwCisJZWNobyBwb3dlcnBjLWlibS1vczQwMAogCWV4aXQgOzsKICAgICBhcm06UklTQyo6MS5bMDEyXSo6Knxhcm06cmlzY2l4OjEuWzAxMl0qOiopCiAJZWNobyBhcm0tYWNvcm4tcmlzY2l4JHtVTkFNRV9SRUxFQVNFfQpAQCAtMzMzLDYgKzMzNyw5IEBACiAgICAgc3VuNCo6U3VuT1M6NS4qOiogfCB0YWRwb2xlKjpTdW5PUzo1Lio6KikKIAllY2hvIHNwYXJjLXN1bi1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAogCWV4aXQgOzsKKyAgICBpODZwYzpBdXJvcmFVWDo1Lio6KiB8IGk4NnhlbjpBdXJvcmFVWDo1Lio6KikKKwllY2hvIGkzODYtcGMtYXVyb3JhdXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OwogICAgIGk4NnBjOlN1bk9TOjUuKjoqIHwgaTg2eGVuOlN1bk9TOjUuKjoqKQogCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKIAlTVU5fQVJDSD0iaTM4NiIKQEAgLTM5MSwyMyArMzk4LDIzIEBACiAgICAgIyBNaU5ULiAgQnV0IE1pTlQgaXMgZG93bndhcmQgY29tcGF0aWJsZSB0byBUT1MsIHNvIHRoaXMgc2hvdWxkCiAgICAgIyBiZSBubyBwcm9ibGVtLgogICAgIGF0YXJpc3RbZV06Kk1pTlQ6KjoqIHwgYXRhcmlzdFtlXToqbWludDoqOiogfCBhdGFyaXN0W2VdOipUT1M6KjoqKQotICAgICAgICBlY2hvIG02OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KKwllY2hvIG02OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7CiAgICAgYXRhcmkqOipNaU5UOio6KiB8IGF0YXJpKjoqbWludDoqOiogfCBhdGFyaXN0W2VdOipUT1M6KjoqKQogCWVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQotICAgICAgICBleGl0IDs7CisJZXhpdCA7OwogICAgICpmYWxjb24qOipNaU5UOio6KiB8ICpmYWxjb24qOiptaW50Oio6KiB8ICpmYWxjb24qOipUT1M6KjoqKQotICAgICAgICBlY2hvIG02OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KKwllY2hvIG02OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7CiAgICAgbWlsYW4qOipNaU5UOio6KiB8IG1pbGFuKjoqbWludDoqOiogfCAqbWlsYW4qOipUT1M6KjoqKQotICAgICAgICBlY2hvIG02OGstbWlsYW4tbWludCR7VU5BTUVfUkVMRUFTRX0KLSAgICAgICAgZXhpdCA7OworCWVjaG8gbTY4ay1taWxhbi1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKICAgICBoYWRlcyo6Kk1pTlQ6KjoqIHwgaGFkZXMqOiptaW50Oio6KiB8ICpoYWRlcyo6KlRPUzoqOiopCi0gICAgICAgIGVjaG8gbTY4ay1oYWRlcy1taW50JHtVTkFNRV9SRUxFQVNFfQotICAgICAgICBleGl0IDs7CisJZWNobyBtNjhrLWhhZGVzLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OwogICAgICo6Kk1pTlQ6KjoqIHwgKjoqbWludDoqOiogfCAqOipUT1M6KjoqKQotICAgICAgICBlY2hvIG02OGstdW5rbm93bi1taW50JHtVTkFNRV9SRUxFQVNFfQotICAgICAgICBleGl0IDs7CisJZWNobyBtNjhrLXVua25vd24tbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CiAgICAgbTY4azptYWNodGVuOio6KikKIAllY2hvIG02OGstYXBwbGUtbWFjaHRlbiR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7CkBAIC00NzcsOCArNDg0LDggQEAKIAllY2hvIG04OGstbW90b3JvbGEtc3lzdjMKIAlleGl0IDs7CiAgICAgQVZpaU9OOmRndXg6KjoqKQotICAgICAgICAjIERHL1VYIHJldHVybnMgQVZpaU9OIGZvciBhbGwgYXJjaGl0ZWN0dXJlcwotICAgICAgICBVTkFNRV9QUk9DRVNTT1I9YC91c3IvYmluL3VuYW1lIC1wYAorCSMgREcvVVggcmV0dXJucyBBVmlpT04gZm9yIGFsbCBhcmNoaXRlY3R1cmVzCisJVU5BTUVfUFJPQ0VTU09SPWAvdXNyL2Jpbi91bmFtZSAtcGAKIAlpZiBbICRVTkFNRV9QUk9DRVNTT1IgPSBtYzg4MTAwIF0gfHwgWyAkVU5BTUVfUFJPQ0VTU09SID0gbWM4ODExMCBdCiAJdGhlbgogCSAgICBpZiBbICR7VEFSR0VUX0JJTkFSWV9JTlRFUkZBQ0V9eCA9IG04OGtkZ3V4ZWxmeCBdIHx8IFwKQEAgLTQ5MSw3ICs0OTgsNyBAQAogCWVsc2UKIAkgICAgZWNobyBpNTg2LWRnLWRndXgke1VOQU1FX1JFTEVBU0V9CiAJZmkKLSAJZXhpdCA7OworCWV4aXQgOzsKICAgICBNODgqOkRvbHBoaW5PUzoqOiopCSMgRG9scGhpbk9TIChTVlIzKQogCWVjaG8gbTg4ay1kb2xwaGluLXN5c3YzCiAJZXhpdCA7OwpAQCAtNTQ4LDcgKzU1NSw3IEBACiAJCWVjaG8gcnM2MDAwLWlibS1haXgzLjIKIAlmaQogCWV4aXQgOzsKLSAgICAqOkFJWDoqOls0NTZdKQorICAgICo6QUlYOio6WzQ1NjddKQogCUlCTV9DUFVfSUQ9YC91c3Ivc2Jpbi9sc2RldiAtQyAtYyBwcm9jZXNzb3IgLVMgYXZhaWxhYmxlIHwgc2VkIDFxIHwgYXdrICd7IHByaW50ICQxIH0nYAogCWlmIC91c3Ivc2Jpbi9sc2F0dHIgLUVsICR7SUJNX0NQVV9JRH0gfCBncmVwICcgUE9XRVInID4vZGV2L251bGwgMj4mMTsgdGhlbgogCQlJQk1fQVJDSD1yczYwMDAKQEAgLTU5MSw1MiArNTk4LDUyIEBACiAJICAgIDkwMDAvWzY3OF1bMC05XVswLTldKQogCQlpZiBbIC14IC91c3IvYmluL2dldGNvbmYgXTsgdGhlbgogCQkgICAgc2NfY3B1X3ZlcnNpb249YC91c3IvYmluL2dldGNvbmYgU0NfQ1BVX1ZFUlNJT04gMj4vZGV2L251bGxgCi0gICAgICAgICAgICAgICAgICAgIHNjX2tlcm5lbF9iaXRzPWAvdXNyL2Jpbi9nZXRjb25mIFNDX0tFUk5FTF9CSVRTIDI+L2Rldi9udWxsYAotICAgICAgICAgICAgICAgICAgICBjYXNlICIke3NjX2NwdV92ZXJzaW9ufSIgaW4KLSAgICAgICAgICAgICAgICAgICAgICA1MjMpIEhQX0FSQ0g9ImhwcGExLjAiIDs7ICMgQ1BVX1BBX1JJU0MxXzAKLSAgICAgICAgICAgICAgICAgICAgICA1MjgpIEhQX0FSQ0g9ImhwcGExLjEiIDs7ICMgQ1BVX1BBX1JJU0MxXzEKLSAgICAgICAgICAgICAgICAgICAgICA1MzIpICAgICAgICAgICAgICAgICAgICAgICMgQ1BVX1BBX1JJU0MyXzAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIiR7c2Nfa2VybmVsX2JpdHN9IiBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAzMikgSFBfQVJDSD0iaHBwYTIuMG4iIDs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDY0KSBIUF9BUkNIPSJocHBhMi4wdyIgOzsKKwkJICAgIHNjX2tlcm5lbF9iaXRzPWAvdXNyL2Jpbi9nZXRjb25mIFNDX0tFUk5FTF9CSVRTIDI+L2Rldi9udWxsYAorCQkgICAgY2FzZSAiJHtzY19jcHVfdmVyc2lvbn0iIGluCisJCSAgICAgIDUyMykgSFBfQVJDSD0iaHBwYTEuMCIgOzsgIyBDUFVfUEFfUklTQzFfMAorCQkgICAgICA1MjgpIEhQX0FSQ0g9ImhwcGExLjEiIDs7ICMgQ1BVX1BBX1JJU0MxXzEKKwkJICAgICAgNTMyKSAgICAgICAgICAgICAgICAgICAgICAjIENQVV9QQV9SSVNDMl8wCisJCQljYXNlICIke3NjX2tlcm5lbF9iaXRzfSIgaW4KKwkJCSAgMzIpIEhQX0FSQ0g9ImhwcGEyLjBuIiA7OworCQkJICA2NCkgSFBfQVJDSD0iaHBwYTIuMHciIDs7CiAJCQkgICcnKSBIUF9BUkNIPSJocHBhMi4wIiA7OyAgICMgSFAtVVggMTAuMjAKLSAgICAgICAgICAgICAgICAgICAgICAgIGVzYWMgOzsKLSAgICAgICAgICAgICAgICAgICAgZXNhYworCQkJZXNhYyA7OworCQkgICAgZXNhYwogCQlmaQogCQlpZiBbICIke0hQX0FSQ0h9IiA9ICIiIF07IHRoZW4KIAkJICAgIGV2YWwgJHNldF9jY19mb3JfYnVpbGQKLQkJICAgIHNlZCAncy9eICAgICAgICAgICAgICAvLycgPDwgRU9GID4kZHVtbXkuYworCQkgICAgc2VkICdzL14JCS8vJyA8PCBFT0YgPiRkdW1teS5jCiAKLSAgICAgICAgICAgICAgI2RlZmluZSBfSFBVWF9TT1VSQ0UKLSAgICAgICAgICAgICAgI2luY2x1ZGUgPHN0ZGxpYi5oPgotICAgICAgICAgICAgICAjaW5jbHVkZSA8dW5pc3RkLmg+CisJCSNkZWZpbmUgX0hQVVhfU09VUkNFCisJCSNpbmNsdWRlIDxzdGRsaWIuaD4KKwkJI2luY2x1ZGUgPHVuaXN0ZC5oPgogCi0gICAgICAgICAgICAgIGludCBtYWluICgpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgI2lmIGRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKQotICAgICAgICAgICAgICAgICAgbG9uZyBiaXRzID0gc3lzY29uZihfU0NfS0VSTkVMX0JJVFMpOwotICAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgICAgICAgIGxvbmcgY3B1ICA9IHN5c2NvbmYgKF9TQ19DUFVfVkVSU0lPTik7CisJCWludCBtYWluICgpCisJCXsKKwkJI2lmIGRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKQorCQkgICAgbG9uZyBiaXRzID0gc3lzY29uZihfU0NfS0VSTkVMX0JJVFMpOworCQkjZW5kaWYKKwkJICAgIGxvbmcgY3B1ICA9IHN5c2NvbmYgKF9TQ19DUFVfVkVSU0lPTik7CiAKLSAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY3B1KQotICAgICAgICAgICAgICAJewotICAgICAgICAgICAgICAJY2FzZSBDUFVfUEFfUklTQzFfMDogcHV0cyAoImhwcGExLjAiKTsgYnJlYWs7Ci0gICAgICAgICAgICAgIAljYXNlIENQVV9QQV9SSVNDMV8xOiBwdXRzICgiaHBwYTEuMSIpOyBicmVhazsKLSAgICAgICAgICAgICAgCWNhc2UgQ1BVX1BBX1JJU0MyXzA6Ci0gICAgICAgICAgICAgICNpZiBkZWZpbmVkKF9TQ19LRVJORUxfQklUUykKLSAgICAgICAgICAgICAgCSAgICBzd2l0Y2ggKGJpdHMpCi0gICAgICAgICAgICAgIAkJewotICAgICAgICAgICAgICAJCWNhc2UgNjQ6IHB1dHMgKCJocHBhMi4wdyIpOyBicmVhazsKLSAgICAgICAgICAgICAgCQljYXNlIDMyOiBwdXRzICgiaHBwYTIuMG4iKTsgYnJlYWs7Ci0gICAgICAgICAgICAgIAkJZGVmYXVsdDogcHV0cyAoImhwcGEyLjAiKTsgYnJlYWs7Ci0gICAgICAgICAgICAgIAkJfSBicmVhazsKLSAgICAgICAgICAgICAgI2Vsc2UgIC8qICFkZWZpbmVkKF9TQ19LRVJORUxfQklUUykgKi8KLSAgICAgICAgICAgICAgCSAgICBwdXRzICgiaHBwYTIuMCIpOyBicmVhazsKLSAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgIAlkZWZhdWx0OiBwdXRzICgiaHBwYTEuMCIpOyBicmVhazsKLSAgICAgICAgICAgICAgCX0KLSAgICAgICAgICAgICAgICAgIGV4aXQgKDApOwotICAgICAgICAgICAgICB9CisJCSAgICBzd2l0Y2ggKGNwdSkKKwkJCXsKKwkJCWNhc2UgQ1BVX1BBX1JJU0MxXzA6IHB1dHMgKCJocHBhMS4wIik7IGJyZWFrOworCQkJY2FzZSBDUFVfUEFfUklTQzFfMTogcHV0cyAoImhwcGExLjEiKTsgYnJlYWs7CisJCQljYXNlIENQVV9QQV9SSVNDMl8wOgorCQkjaWYgZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpCisJCQkgICAgc3dpdGNoIChiaXRzKQorCQkJCXsKKwkJCQljYXNlIDY0OiBwdXRzICgiaHBwYTIuMHciKTsgYnJlYWs7CisJCQkJY2FzZSAzMjogcHV0cyAoImhwcGEyLjBuIik7IGJyZWFrOworCQkJCWRlZmF1bHQ6IHB1dHMgKCJocHBhMi4wIik7IGJyZWFrOworCQkJCX0gYnJlYWs7CisJCSNlbHNlICAvKiAhZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpICovCisJCQkgICAgcHV0cyAoImhwcGEyLjAiKTsgYnJlYWs7CisJCSNlbmRpZgorCQkJZGVmYXVsdDogcHV0cyAoImhwcGExLjAiKTsgYnJlYWs7CisJCQl9CisJCSAgICBleGl0ICgwKTsKKwkJfQogRU9GCiAJCSAgICAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAyPi9kZXYvbnVsbCkgJiYgSFBfQVJDSD1gJGR1bW15YAogCQkgICAgdGVzdCAteiAiJEhQX0FSQ0giICYmIEhQX0FSQ0g9aHBwYQpAQCAtNzI3LDIyICs3MzQsMjIgQEAKIAlleGl0IDs7CiAgICAgQzEqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMSo6KikKIAllY2hvIGMxLWNvbnZleC1ic2QKLSAgICAgICAgZXhpdCA7OworCWV4aXQgOzsKICAgICBDMio6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMyKjoqKQogCWlmIGdldHN5c2luZm8gLWYgc2NhbGFyX2FjYwogCXRoZW4gZWNobyBjMzItY29udmV4LWJzZAogCWVsc2UgZWNobyBjMi1jb252ZXgtYnNkCiAJZmkKLSAgICAgICAgZXhpdCA7OworCWV4aXQgOzsKICAgICBDMzQqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMzQqOiopCiAJZWNobyBjMzQtY29udmV4LWJzZAotICAgICAgICBleGl0IDs7CisJZXhpdCA7OwogICAgIEMzOCo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMzOCo6KikKIAllY2hvIGMzOC1jb252ZXgtYnNkCi0gICAgICAgIGV4aXQgOzsKKwlleGl0IDs7CiAgICAgQzQqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDNCo6KikKIAllY2hvIGM0LWNvbnZleC1ic2QKLSAgICAgICAgZXhpdCA7OworCWV4aXQgOzsKICAgICBDUkFZKlktTVA6KjoqOiopCiAJZWNobyB5bXAtY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKIAlleGl0IDs7CkBAIC03NjYsMTQgKzc3MywxNCBAQAogCWV4aXQgOzsKICAgICBGMzBbMDFdOlVOSVhfU3lzdGVtX1Y6KjoqIHwgRjcwMDpVTklYX1N5c3RlbV9WOio6KikKIAlGVUpJVFNVX1BST0M9YHVuYW1lIC1tIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonYAotICAgICAgICBGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCi0gICAgICAgIEZVSklUU1VfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvIC9fLydgCi0gICAgICAgIGVjaG8gIiR7RlVKSVRTVV9QUk9DfS1mdWppdHN1LSR7RlVKSVRTVV9TWVN9JHtGVUpJVFNVX1JFTH0iCi0gICAgICAgIGV4aXQgOzsKKwlGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCisJRlVKSVRTVV9SRUw9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy8gL18vJ2AKKwllY2hvICIke0ZVSklUU1VfUFJPQ30tZnVqaXRzdS0ke0ZVSklUU1VfU1lTfSR7RlVKSVRTVV9SRUx9IgorCWV4aXQgOzsKICAgICA1MDAwOlVOSVhfU3lzdGVtX1Y6NC4qOiopCi0gICAgICAgIEZVSklUU1VfU1lTPWB1bmFtZSAtcCB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyB8IHNlZCAtZSAncy9cLy8vJ2AKLSAgICAgICAgRlVKSVRTVV9SRUw9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyB8IHNlZCAtZSAncy8gL18vJ2AKLSAgICAgICAgZWNobyAic3BhcmMtZnVqaXRzdS0ke0ZVSklUU1VfU1lTfSR7RlVKSVRTVV9SRUx9IgorCUZVSklUU1VfU1lTPWB1bmFtZSAtcCB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyB8IHNlZCAtZSAncy9cLy8vJ2AKKwlGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzLyAvXy8nYAorCWVjaG8gInNwYXJjLWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVMfSIKIAlleGl0IDs7CiAgICAgaSo4NjpCU0QvMzg2Oio6KiB8IGkqODY6QlNEL09TOio6KiB8ICo6QXNjZW5kXCBFbWJlZGRlZC9PUzoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWJzZGkke1VOQU1FX1JFTEVBU0V9CkBAIC04MDEsMTQgKzgwOCwxNCBAQAogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1taW5ndzMyCiAJZXhpdCA7OwogICAgIGkqOndpbmRvd3MzMio6KikKLSAgICAJIyB1bmFtZSAtbSBpbmNsdWRlcyAiLXBjIiBvbiB0aGlzIHN5c3RlbS4KLSAgICAJZWNobyAke1VOQU1FX01BQ0hJTkV9LW1pbmd3MzIKKwkjIHVuYW1lIC1tIGluY2x1ZGVzICItcGMiIG9uIHRoaXMgc3lzdGVtLgorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1taW5ndzMyCiAJZXhpdCA7OwogICAgIGkqOlBXKjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1wdzMyCiAJZXhpdCA7OwogICAgICo6SW50ZXJpeCo6KikKLSAgICAJY2FzZSAke1VOQU1FX01BQ0hJTkV9IGluCisJY2FzZSAke1VOQU1FX01BQ0hJTkV9IGluCiAJICAgIHg4NikKIAkJZWNobyBpNTg2LXBjLWludGVyaXgke1VOQU1FX1JFTEVBU0V9CiAJCWV4aXQgOzsKQEAgLTg2Myw3ICs4NzAsNyBAQAogCSAgRVY2KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjYgOzsKIAkgIEVWNjcpICBVTkFNRV9NQUNISU5FPWFscGhhZXY2NyA7OwogCSAgRVY2OCopIFVOQU1FX01BQ0hJTkU9YWxwaGFldjY4IDs7Ci0gICAgICAgIGVzYWMKKwllc2FjCiAJb2JqZHVtcCAtLXByaXZhdGUtaGVhZGVycyAvYmluL3NoIHwgZ3JlcCAtcSBsZC5zby4xCiAJaWYgdGVzdCAiJD8iID0gMCA7IHRoZW4gTElCQz0ibGliYzEiIDsgZWxzZSBMSUJDPSIiIDsgZmkKIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUke0xJQkN9CkBAIC04NzUsNyArODgyLDEzIEBACiAJdGhlbgogCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKIAllbHNlCi0JICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudWVhYmkKKwkgICAgaWYgZWNobyBfX0FSTV9QQ1NfVkZQIHwgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsIFwKKwkJfCBncmVwIC1xIF9fQVJNX1BDU19WRlAKKwkgICAgdGhlbgorCQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnVlYWJpCisJICAgIGVsc2UKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251ZWFiaWhmCisJICAgIGZpCiAJZmkKIAlleGl0IDs7CiAgICAgYXZyMzIqOkxpbnV4Oio6KikKQEAgLTg4OCw3ICs5MDEsNyBAQAogCWVjaG8gY3Jpc3YzMi1heGlzLWxpbnV4LWdudQogCWV4aXQgOzsKICAgICBmcnY6TGludXg6KjoqKQotICAgIAllY2hvIGZydi11bmtub3duLWxpbnV4LWdudQorCWVjaG8gZnJ2LXVua25vd24tbGludXgtZ251CiAJZXhpdCA7OwogICAgIGkqODY6TGludXg6KjoqKQogCUxJQkM9Z251CkBAIC05NTYsNyArOTY5LDcgQEAKIAllY2hvICR7VU5BTUVfTUFDSElORX0taWJtLWxpbnV4CiAJZXhpdCA7OwogICAgIHNoNjQqOkxpbnV4Oio6KikKLSAgICAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CiAJZXhpdCA7OwogICAgIHNoKjpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CkBAIC05NjQsNiArOTc3LDkgQEAKICAgICBzcGFyYzpMaW51eDoqOiogfCBzcGFyYzY0OkxpbnV4Oio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7CisgICAgdGlsZSo6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKICAgICB2YXg6TGludXg6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtbGludXgtZ251CiAJZXhpdCA7OwpAQCAtOTcxLDcgKzk4Nyw3IEBACiAJZWNobyB4ODZfNjQtdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7CiAgICAgeHRlbnNhKjpMaW51eDoqOiopCi0gICAgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQogCWV4aXQgOzsKICAgICBpKjg2OkRZTklYL3B0eDo0KjoqKQogCSMgcHR4IDQuMCBkb2VzIHVuYW1lIC1zIGNvcnJlY3RseSwgd2l0aCBEWU5JWC9wdHggaW4gdGhlcmUuCkBAIC05ODAsMTEgKzk5NiwxMSBAQAogCWVjaG8gaTM4Ni1zZXF1ZW50LXN5c3Y0CiAJZXhpdCA7OwogICAgIGkqODY6VU5JWF9TVjo0LjJNUDoyLiopCi0gICAgICAgICMgVW5peHdhcmUgaXMgYW4gb2Zmc2hvb3Qgb2YgU1ZSNCwgYnV0IGl0IGhhcyBpdHMgb3duIHZlcnNpb24KLSAgICAgICAgIyBudW1iZXIgc2VyaWVzIHN0YXJ0aW5nIHdpdGggMi4uLgotICAgICAgICAjIEkgYW0gbm90IHBvc2l0aXZlIHRoYXQgb3RoZXIgU1ZSNCBzeXN0ZW1zIHdvbid0IG1hdGNoIHRoaXMsCisJIyBVbml4d2FyZSBpcyBhbiBvZmZzaG9vdCBvZiBTVlI0LCBidXQgaXQgaGFzIGl0cyBvd24gdmVyc2lvbgorCSMgbnVtYmVyIHNlcmllcyBzdGFydGluZyB3aXRoIDIuLi4KKwkjIEkgYW0gbm90IHBvc2l0aXZlIHRoYXQgb3RoZXIgU1ZSNCBzeXN0ZW1zIHdvbid0IG1hdGNoIHRoaXMsCiAJIyBJIGp1c3QgaGF2ZSB0byBob3BlLiAgLS0gcm1zLgotICAgICAgICAjIFVzZSBzeXN2NC4ydXcuLi4gc28gdGhhdCBzeXN2NCogbWF0Y2hlcyBpdC4KKwkjIFVzZSBzeXN2NC4ydXcuLi4gc28gdGhhdCBzeXN2NCogbWF0Y2hlcyBpdC4KIAllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lzdjQuMnV3JHtVTkFNRV9WRVJTSU9OfQogCWV4aXQgOzsKICAgICBpKjg2Ok9TLzI6KjoqKQpAQCAtMTAxNiw3ICsxMDMyLDcgQEAKIAlmaQogCWV4aXQgOzsKICAgICBpKjg2Oio6NTpbNjc4XSopCi0gICAgCSMgVW5peFdhcmUgNy54LCBPcGVuVU5JWCBhbmQgT3BlblNlcnZlciA2LgorCSMgVW5peFdhcmUgNy54LCBPcGVuVU5JWCBhbmQgT3BlblNlcnZlciA2LgogCWNhc2UgYC9iaW4vdW5hbWUgLVggfCBncmVwICJeTWFjaGluZSJgIGluCiAJICAgICo0ODYqKQkgICAgIFVOQU1FX01BQ0hJTkU9aTQ4NiA7OwogCSAgICAqUGVudGl1bSkJICAgICBVTkFNRV9NQUNISU5FPWk1ODYgOzsKQEAgLTEwNDQsMTMgKzEwNjAsMTMgQEAKIAlleGl0IDs7CiAgICAgcGM6KjoqOiopCiAJIyBMZWZ0IGhlcmUgZm9yIGNvbXBhdGliaWxpdHk6Ci0gICAgICAgICMgdW5hbWUgLW0gcHJpbnRzIGZvciBESkdQUCBhbHdheXMgJ3BjJywgYnV0IGl0IHByaW50cyBub3RoaW5nIGFib3V0Ci0gICAgICAgICMgdGhlIHByb2Nlc3Nvciwgc28gd2UgcGxheSBzYWZlIGJ5IGFzc3VtaW5nIGk1ODYuCisJIyB1bmFtZSAtbSBwcmludHMgZm9yIERKR1BQIGFsd2F5cyAncGMnLCBidXQgaXQgcHJpbnRzIG5vdGhpbmcgYWJvdXQKKwkjIHRoZSBwcm9jZXNzb3IsIHNvIHdlIHBsYXkgc2FmZSBieSBhc3N1bWluZyBpNTg2LgogCSMgTm90ZTogd2hhdGV2ZXIgdGhpcyBpcywgaXQgTVVTVCBiZSB0aGUgc2FtZSBhcyB3aGF0IGNvbmZpZy5zdWIKIAkjIHByaW50cyBmb3IgdGhlICJkamdwcCIgaG9zdCwgb3IgZWxzZSBHREIgY29uZmlndXJ5IHdpbGwgZGVjaWRlIHRoYXQKIAkjIHRoaXMgaXMgYSBjcm9zcy1idWlsZC4KIAllY2hvIGk1ODYtcGMtbXNkb3NkamdwcAotICAgICAgICBleGl0IDs7CisJZXhpdCA7OwogICAgIEludGVsOk1hY2g6Myo6KikKIAllY2hvIGkzODYtcGMtbWFjaDMKIAlleGl0IDs7CkBAIC0xMDg1LDggKzExMDEsOCBAQAogCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dyZXAgZW50aXVtID4vZGV2L251bGwgXAogCSAgJiYgeyBlY2hvIGk1ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0gOzsKICAgICAzWzM0XT8/Oio6NC4wOiogfCAzWzM0XT8/LCo6Kjo0LjA6KikKLSAgICAgICAgL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IGdyZXAgODYgPi9kZXYvbnVsbCBcCi0gICAgICAgICAgJiYgeyBlY2hvIGk0ODYtbmNyLXN5c3Y0OyBleGl0OyB9IDs7CisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IGdyZXAgODYgPi9kZXYvbnVsbCBcCisJICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQ7IGV4aXQ7IH0gOzsKICAgICBOQ1IqOio6NC4yOiogfCBNUFJBUyo6Kjo0LjI6KikKIAlPU19SRUw9Jy4zJwogCXRlc3QgLXIgL2V0Yy8ucmVsaWQgXApAQCAtMTEyOSwxMCArMTE0NSwxMCBAQAogCQllY2hvIG5zMzJrLXNuaS1zeXN2CiAJZmkKIAlleGl0IDs7Ci0gICAgUEVOVElVTToqOjQuMCo6KikgIyBVbmlzeXMgYENsZWFyUGF0aCBITVAgSVggNDAwMCcgU1ZSNC9NUCBlZmZvcnQKLSAgICAgICAgICAgICAgICAgICAgICAjIHNheXMgPFJpY2hhcmQuTS5CYXJ0ZWxAY2NNYWlsLkNlbnN1cy5HT1Y+Ci0gICAgICAgIGVjaG8gaTU4Ni11bmlzeXMtc3lzdjQKLSAgICAgICAgZXhpdCA7OworICAgIFBFTlRJVU06Kjo0LjAqOiopCSMgVW5pc3lzIGBDbGVhclBhdGggSE1QIElYIDQwMDAnIFNWUjQvTVAgZWZmb3J0CisJCQkjIHNheXMgPFJpY2hhcmQuTS5CYXJ0ZWxAY2NNYWlsLkNlbnN1cy5HT1Y+CisJZWNobyBpNTg2LXVuaXN5cy1zeXN2NAorCWV4aXQgOzsKICAgICAqOlVOSVhfU3lzdGVtX1Y6NCo6RlRYKikKIAkjIEZyb20gR2VyYWxkIEhld2VzIDxoZXdlc0BvcGVubWFya2V0LmNvbT4uCiAJIyBIb3cgYWJvdXQgZGlmZmVyZW50aWF0aW5nIGJldHdlZW4gc3RyYXR1cyBhcmNoaXRlY3R1cmVzPyAtZGptCkBAIC0xMTU4LDExICsxMTc0LDExIEBACiAJZXhpdCA7OwogICAgIFJbMzRdMDAwOipTeXN0ZW1fVio6KjoqIHwgUjQwMDA6VU5JWF9TWVNWOio6KiB8IFIqMDAwOlVOSVhfU1Y6KjoqKQogCWlmIFsgLWQgL3Vzci9uZWMgXTsgdGhlbgotCSAgICAgICAgZWNobyBtaXBzLW5lYy1zeXN2JHtVTkFNRV9SRUxFQVNFfQorCQllY2hvIG1pcHMtbmVjLXN5c3Yke1VOQU1FX1JFTEVBU0V9CiAJZWxzZQotCSAgICAgICAgZWNobyBtaXBzLXVua25vd24tc3lzdiR7VU5BTUVfUkVMRUFTRX0KKwkJZWNobyBtaXBzLXVua25vd24tc3lzdiR7VU5BTUVfUkVMRUFTRX0KIAlmaQotICAgICAgICBleGl0IDs7CisJZXhpdCA7OwogICAgIEJlQm94OkJlT1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBoYXJkd2FyZSBtYWRlIGJ5IEJlLCBQUEMgb25seS4KIAllY2hvIHBvd2VycGMtYmUtYmVvcwogCWV4aXQgOzsKQEAgLTEyMjcsNiArMTI0Myw5IEBACiAgICAgKjpRTlg6Kjo0KikKIAllY2hvIGkzODYtcGMtcW54CiAJZXhpdCA7OworICAgIE5FTy0/Ok5PTlNUT1BfS0VSTkVMOio6KikKKwllY2hvIG5lby10YW5kZW0tbnNrJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKICAgICBOU0UtPzpOT05TVE9QX0tFUk5FTDoqOiopCiAJZWNobyBuc2UtdGFuZGVtLW5zayR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7CkBAIC0xMjcyLDEzICsxMjkxLDEzIEBACiAJZWNobyBwZHAxMC11bmtub3duLWl0cwogCWV4aXQgOzsKICAgICBTRUk6KjoqOlNFSVVYKQotICAgICAgICBlY2hvIG1pcHMtc2VpLXNlaXV4JHtVTkFNRV9SRUxFQVNFfQorCWVjaG8gbWlwcy1zZWktc2VpdXgke1VOQU1FX1JFTEVBU0V9CiAJZXhpdCA7OwogICAgICo6RHJhZ29uRmx5Oio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1kcmFnb25mbHlgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgCiAJZXhpdCA7OwogICAgICo6KlZNUzoqOiopCi0gICAgCVVOQU1FX01BQ0hJTkU9YCh1bmFtZSAtcCkgMj4vZGV2L251bGxgCisJVU5BTUVfTUFDSElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKIAljYXNlICIke1VOQU1FX01BQ0hJTkV9IiBpbgogCSAgICBBKikgZWNobyBhbHBoYS1kZWMtdm1zIDsgZXhpdCA7OwogCSAgICBJKikgZWNobyBpYTY0LWRlYy12bXMgOyBleGl0IDs7CkBAIC0xMzE4LDExICsxMzM3LDExIEBACiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CiAgIHByaW50ZiAoIm02OGstc29ueS1uZXdzb3Mlc1xuIiwKICNpZmRlZiBORVdTT1M0Ci0gICAgICAgICAgIjQiCisJIjQiCiAjZWxzZQotCSAgIiIKKwkiIgogI2VuZGlmCi0gICAgICAgICApOyBleGl0ICgwKTsKKwkpOyBleGl0ICgwKTsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlnLnN1YiBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlnLnN1YgppbmRleCAxN2M5MTQ1Li43ODE3NmE0IDEwMDc1NQotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZy5zdWIKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWcuc3ViCkBAIC0xLDEwICsxLDEwIEBACiAjISAvYmluL3NoCiAjIENvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBzdWJyb3V0aW5lIHNjcmlwdC4KICMgICBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksCi0jICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOQotIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsCisjICAgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAotdGltZXN0YW1wPScyMDA5LTExLTA3JwordGltZXN0YW1wPScyMDExLTEwLTI5JwogCiAjIFRoaXMgZmlsZSBpcyAoaW4gcHJpbmNpcGxlKSBjb21tb24gdG8gQUxMIEdOVSBzb2Z0d2FyZS4KICMgVGhlIHByZXNlbmNlIG9mIGEgbWFjaGluZSBpbiB0aGlzIGZpbGUgc3VnZ2VzdHMgdGhhdCBTT01FIEdOVSBzb2Z0d2FyZQpAQCAtNzUsOCArNzUsOSBAQAogdmVyc2lvbj0iXAogR05VIGNvbmZpZy5zdWIgKCR0aW1lc3RhbXApCiAKLUNvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwKLTIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsCisyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUKK1NvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiIKQEAgLTEyMyw4ICsxMjQsOSBAQAogIyBIZXJlIHdlIG11c3QgcmVjb2duaXplIGFsbCB0aGUgdmFsaWQgS0VSTkVMLU9TIGNvbWJpbmF0aW9ucy4KIG1heWJlX29zPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMi8nYAogY2FzZSAkbWF5YmVfb3MgaW4KLSAgbnRvLXFueCogfCBsaW51eC1nbnUqIHwgbGludXgtZGlldGxpYmMgfCBsaW51eC1uZXdsaWIqIHwgbGludXgtdWNsaWJjKiB8IFwKLSAgdWNsaW51eC11Y2xpYmMqIHwgdWNsaW51eC1nbnUqIHwga2ZyZWVic2QqLWdudSogfCBrbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgXAorICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBsaW51eC1hbmRyb2lkKiB8IGxpbnV4LWRpZXRsaWJjIHwgbGludXgtbmV3bGliKiB8IFwKKyAgbGludXgtdWNsaWJjKiB8IHVjbGludXgtdWNsaWJjKiB8IHVjbGludXgtZ251KiB8IGtmcmVlYnNkKi1nbnUqIHwgXAorICBrbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgXAogICBrb3BlbnNvbGFyaXMqLWdudSogfCBcCiAgIHN0b3JtLWNoYW9zKiB8IG9zMi1lbXgqIHwgcnRtay1ub3ZhKikKICAgICBvcz0tJG1heWJlX29zCkBAIC0xNTYsOCArMTU4LDggQEAKIAkJb3M9CiAJCWJhc2ljX21hY2hpbmU9JDEKIAkJOzsKLSAgICAgICAgLWJsdWVnZW5lKikKLQkgICAgICAgIG9zPS1jbmsKKwktYmx1ZWdlbmUqKQorCQlvcz0tY25rCiAJCTs7CiAJLXNpbSB8IC1jaXNjbyB8IC1va2kgfCAtd2VjIHwgLXdpbmJvbmQpCiAJCW9zPQpAQCAtMTczLDEwICsxNzUsMTAgQEAKIAkJb3M9LWNob3J1c29zCiAJCWJhc2ljX21hY2hpbmU9JDEKIAkJOzsKLSAJLWNob3J1c3JkYikKLSAJCW9zPS1jaG9ydXNyZGIKKwktY2hvcnVzcmRiKQorCQlvcz0tY2hvcnVzcmRiCiAJCWJhc2ljX21hY2hpbmU9JDEKLSAJCTs7CisJCTs7CiAJLWhpdXgqKQogCQlvcz0taGl1eHdlMgogCQk7OwpAQCAtMjQ5LDEzICsyNTEsMTcgQEAKIAl8IGFscGhhNjQgfCBhbHBoYTY0ZXZbNC04XSB8IGFscGhhNjRldjU2IHwgYWxwaGE2NGV2Nls3OF0gfCBhbHBoYTY0cGNhNVs2N10gXAogCXwgYW0zM18yLjAgXAogCXwgYXJjIHwgYXJtIHwgYXJtW2JsXWUgfCBhcm1lW2xiXSB8IGFybXZbMjM0NV0gfCBhcm12WzM0NV1bbGJdIHwgYXZyIHwgYXZyMzIgXAorICAgICAgICB8IGJlMzIgfCBiZTY0IFwKIAl8IGJmaW4gXAogCXwgYzR4IHwgY2xpcHBlciBcCiAJfCBkMTB2IHwgZDMwdiB8IGRseCB8IGRzcDE2eHggXAorCXwgZXBpcGhhbnkgXAogCXwgZmlkbyB8IGZyMzAgfCBmcnYgXAogCXwgaDgzMDAgfCBoODUwMCB8IGhwcGEgfCBocHBhMS5bMDFdIHwgaHBwYTIuMCB8IGhwcGEyLjBbbnddIHwgaHBwYTY0IFwKKwl8IGhleGFnb24gXAogCXwgaTM3MCB8IGk4NjAgfCBpOTYwIHwgaWE2NCBcCiAJfCBpcDJrIHwgaXEyMDAwIFwKKwl8IGxlMzIgfCBsZTY0IFwKIAl8IGxtMzIgXAogCXwgbTMyYyB8IG0zMnIgfCBtMzJybGUgfCBtNjgwMDAgfCBtNjhrIHwgbTg4ayBcCiAJfCBtYXhxIHwgbWIgfCBtaWNyb2JsYXplIHwgbWNvcmUgfCBtZXAgfCBtZXRhZyBcCkBAIC0yODEsMjcgKzI4NywzOCBAQAogCXwgbW94aWUgXAogCXwgbXQgXAogCXwgbXNwNDMwIFwKKwl8IG5kczMyIHwgbmRzMzJsZSB8IG5kczMyYmUgXAogCXwgbmlvcyB8IG5pb3MyIFwKIAl8IG5zMTZrIHwgbnMzMmsgXAorCXwgb3BlbjggXAogCXwgb3IzMiBcCiAJfCBwZHAxMCB8IHBkcDExIHwgcGogfCBwamwgXAotCXwgcG93ZXJwYyB8IHBvd2VycGM2NCB8IHBvd2VycGM2NGxlIHwgcG93ZXJwY2xlIHwgcHBjYmUgXAorCXwgcG93ZXJwYyB8IHBvd2VycGM2NCB8IHBvd2VycGM2NGxlIHwgcG93ZXJwY2xlIFwKIAl8IHB5cmFtaWQgXAotCXwgcnggXAorCXwgcmw3OCB8IHJ4IFwKIAl8IHNjb3JlIFwKIAl8IHNoIHwgc2hbMTIzNF0gfCBzaFsyNF1hIHwgc2hbMjRdYWViIHwgc2hbMjNdZSB8IHNoWzM0XWViIHwgc2hlYiB8IHNoYmUgfCBzaGxlIHwgc2hbMTIzNF1sZSB8IHNoM2VsZSBcCiAJfCBzaDY0IHwgc2g2NGxlIFwKIAl8IHNwYXJjIHwgc3BhcmM2NCB8IHNwYXJjNjRiIHwgc3BhcmM2NHYgfCBzcGFyYzg2eCB8IHNwYXJjbGV0IHwgc3BhcmNsaXRlIFwKIAl8IHNwYXJjdjggfCBzcGFyY3Y5IHwgc3BhcmN2OWIgfCBzcGFyY3Y5diBcCi0JfCBzcHUgfCBzdHJvbmdhcm0gXAotCXwgdGFob2UgfCB0aHVtYiB8IHRpYzR4IHwgdGljODAgfCB0cm9uIFwKKwl8IHNwdSBcCisJfCB0YWhvZSB8IHRpYzR4IHwgdGljNTR4IHwgdGljNTV4IHwgdGljNnggfCB0aWM4MCB8IHRyb24gXAogCXwgdWJpY29tMzIgXAotCXwgdjg1MCB8IHY4NTBlIFwKKwl8IHY4NTAgfCB2ODUwZSB8IHY4NTBlMSB8IHY4NTBlMiB8IHY4NTBlcyB8IHY4NTBlMnYzIFwKIAl8IHdlMzJrIFwKLQl8IHg4NiB8IHhjMTZ4IHwgeHNjYWxlIHwgeHNjYWxlZVtibF0gfCB4c3Rvcm15MTYgfCB4dGVuc2EgXAorCXwgeDg2IHwgeGMxNnggfCB4c3Rvcm15MTYgfCB4dGVuc2EgXAogCXwgejhrIHwgejgwKQogCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KIAkJOzsKKwljNTR4KQorCQliYXNpY19tYWNoaW5lPXRpYzU0eC11bmtub3duCisJCTs7CisJYzU1eCkKKwkJYmFzaWNfbWFjaGluZT10aWM1NXgtdW5rbm93bgorCQk7OworCWM2eCkKKwkJYmFzaWNfbWFjaGluZT10aWM2eC11bmtub3duCisJCTs7CiAJbTY4MTEgfCBtNjhoYzExIHwgbTY4MTIgfCBtNjhoYzEyIHwgcGljb2NoaXApCiAJCSMgTW90b3JvbGEgNjhIQzExLzEyLgogCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KQEAgLTMxMyw2ICszMzAsMTggQEAKIAkJYmFzaWNfbWFjaGluZT1tdC11bmtub3duCiAJCTs7CiAKKwlzdHJvbmdhcm0gfCB0aHVtYiB8IHhzY2FsZSkKKwkJYmFzaWNfbWFjaGluZT1hcm0tdW5rbm93bgorCQk7OworCisJeHNjYWxlZWIpCisJCWJhc2ljX21hY2hpbmU9YXJtZWItdW5rbm93bgorCQk7OworCisJeHNjYWxlZWwpCisJCWJhc2ljX21hY2hpbmU9YXJtZWwtdW5rbm93bgorCQk7OworCiAJIyBXZSB1c2UgYHBjJyByYXRoZXIgdGhhbiBgdW5rbm93bicKIAkjIGJlY2F1c2UgKDEpIHRoYXQncyB3aGF0IHRoZXkgbm9ybWFsbHkgYXJlLCBhbmQKIAkjICgyKSB0aGUgd29yZCAidW5rbm93biIgdGVuZHMgdG8gY29uZnVzZSBiZWdpbm5pbmcgdXNlcnMuCkBAIC0zMzIsMTYgKzM2MSwxOSBAQAogCXwgYWxwaGFwY2E1WzY3XS0qIHwgYWxwaGE2NHBjYTVbNjddLSogfCBhcmMtKiBcCiAJfCBhcm0tKiAgfCBhcm1iZS0qIHwgYXJtbGUtKiB8IGFybWViLSogfCBhcm12Ki0qIFwKIAl8IGF2ci0qIHwgYXZyMzItKiBcCisJfCBiZTMyLSogfCBiZTY0LSogXAogCXwgYmZpbi0qIHwgYnMyMDAwLSogXAotCXwgY1sxMjNdKiB8IGMzMC0qIHwgW2NqdF05MC0qIHwgYzR4LSogfCBjNTR4LSogfCBjNTV4LSogfCBjNngtKiBcCisJfCBjWzEyM10qIHwgYzMwLSogfCBbY2p0XTkwLSogfCBjNHgtKiBcCiAJfCBjbGlwcGVyLSogfCBjcmF5bnYtKiB8IGN5ZHJhLSogXAogCXwgZDEwdi0qIHwgZDMwdi0qIHwgZGx4LSogXAogCXwgZWx4c2ktKiBcCiAJfCBmMzBbMDFdLSogfCBmNzAwLSogfCBmaWRvLSogfCBmcjMwLSogfCBmcnYtKiB8IGZ4ODAtKiBcCiAJfCBoODMwMC0qIHwgaDg1MDAtKiBcCiAJfCBocHBhLSogfCBocHBhMS5bMDFdLSogfCBocHBhMi4wLSogfCBocHBhMi4wW253XS0qIHwgaHBwYTY0LSogXAorCXwgaGV4YWdvbi0qIFwKIAl8IGkqODYtKiB8IGk4NjAtKiB8IGk5NjAtKiB8IGlhNjQtKiBcCiAJfCBpcDJrLSogfCBpcTIwMDAtKiBcCisJfCBsZTMyLSogfCBsZTY0LSogXAogCXwgbG0zMi0qIFwKIAl8IG0zMmMtKiB8IG0zMnItKiB8IG0zMnJsZS0qIFwKIAl8IG02ODAwMC0qIHwgbTY4MFswMTIzNDZdMC0qIHwgbTY4MzYwLSogfCBtNjgzPzItKiB8IG02OGstKiBcCkBAIC0zNjcsMjUgKzM5OSwyOSBAQAogCXwgbW1peC0qIFwKIAl8IG10LSogXAogCXwgbXNwNDMwLSogXAorCXwgbmRzMzItKiB8IG5kczMybGUtKiB8IG5kczMyYmUtKiBcCiAJfCBuaW9zLSogfCBuaW9zMi0qIFwKIAl8IG5vbmUtKiB8IG5wMS0qIHwgbnMxNmstKiB8IG5zMzJrLSogXAorCXwgb3BlbjgtKiBcCiAJfCBvcmlvbi0qIFwKIAl8IHBkcDEwLSogfCBwZHAxMS0qIHwgcGotKiB8IHBqbC0qIHwgcG4tKiB8IHBvd2VyLSogXAotCXwgcG93ZXJwYy0qIHwgcG93ZXJwYzY0LSogfCBwb3dlcnBjNjRsZS0qIHwgcG93ZXJwY2xlLSogfCBwcGNiZS0qIFwKKwl8IHBvd2VycGMtKiB8IHBvd2VycGM2NC0qIHwgcG93ZXJwYzY0bGUtKiB8IHBvd2VycGNsZS0qIFwKIAl8IHB5cmFtaWQtKiBcCi0JfCByb21wLSogfCByczYwMDAtKiB8IHJ4LSogXAorCXwgcmw3OC0qIHwgcm9tcC0qIHwgcnM2MDAwLSogfCByeC0qIFwKIAl8IHNoLSogfCBzaFsxMjM0XS0qIHwgc2hbMjRdYS0qIHwgc2hbMjRdYWViLSogfCBzaFsyM11lLSogfCBzaFszNF1lYi0qIHwgc2hlYi0qIHwgc2hiZS0qIFwKIAl8IHNobGUtKiB8IHNoWzEyMzRdbGUtKiB8IHNoM2VsZS0qIHwgc2g2NC0qIHwgc2g2NGxlLSogXAogCXwgc3BhcmMtKiB8IHNwYXJjNjQtKiB8IHNwYXJjNjRiLSogfCBzcGFyYzY0di0qIHwgc3BhcmM4NngtKiB8IHNwYXJjbGV0LSogXAogCXwgc3BhcmNsaXRlLSogXAotCXwgc3BhcmN2OC0qIHwgc3BhcmN2OS0qIHwgc3BhcmN2OWItKiB8IHNwYXJjdjl2LSogfCBzdHJvbmdhcm0tKiB8IHN2MS0qIHwgc3g/LSogXAotCXwgdGFob2UtKiB8IHRodW1iLSogXAotCXwgdGljMzAtKiB8IHRpYzR4LSogfCB0aWM1NHgtKiB8IHRpYzU1eC0qIHwgdGljNngtKiB8IHRpYzgwLSogfCB0aWxlLSogXAorCXwgc3BhcmN2OC0qIHwgc3BhcmN2OS0qIHwgc3BhcmN2OWItKiB8IHNwYXJjdjl2LSogfCBzdjEtKiB8IHN4Py0qIFwKKwl8IHRhaG9lLSogXAorCXwgdGljMzAtKiB8IHRpYzR4LSogfCB0aWM1NHgtKiB8IHRpYzU1eC0qIHwgdGljNngtKiB8IHRpYzgwLSogXAorCXwgdGlsZSotKiBcCiAJfCB0cm9uLSogXAogCXwgdWJpY29tMzItKiBcCi0JfCB2ODUwLSogfCB2ODUwZS0qIHwgdmF4LSogXAorCXwgdjg1MC0qIHwgdjg1MGUtKiB8IHY4NTBlMS0qIHwgdjg1MGVzLSogfCB2ODUwZTItKiB8IHY4NTBlMnYzLSogXAorCXwgdmF4LSogXAogCXwgd2UzMmstKiBcCi0JfCB4ODYtKiB8IHg4Nl82NC0qIHwgeGMxNngtKiB8IHhwczEwMC0qIHwgeHNjYWxlLSogfCB4c2NhbGVlW2JsXS0qIFwKKwl8IHg4Ni0qIHwgeDg2XzY0LSogfCB4YzE2eC0qIHwgeHBzMTAwLSogXAogCXwgeHN0b3JteTE2LSogfCB4dGVuc2EqLSogXAogCXwgeW1wLSogXAogCXwgejhrLSogfCB6ODAtKikKQEAgLTQxMCw3ICs0NDYsNyBAQAogCQliYXNpY19tYWNoaW5lPWEyOWstYW1kCiAJCW9zPS11ZGkKIAkJOzsKLSAgICAJYWJhY3VzKQorCWFiYWN1cykKIAkJYmFzaWNfbWFjaGluZT1hYmFjdXMtdW5rbm93bgogCQk7OwogCWFkb2JlNjhrKQpAQCAtNDgwLDExICs1MTYsMjAgQEAKIAkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWlibQogCQlvcz0tY25rCiAJCTs7CisJYzU0eC0qKQorCQliYXNpY19tYWNoaW5lPXRpYzU0eC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWM1NXgtKikKKwkJYmFzaWNfbWFjaGluZT10aWM1NXgtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwljNngtKikKKwkJYmFzaWNfbWFjaGluZT10aWM2eC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OwogCWM5MCkKIAkJYmFzaWNfbWFjaGluZT1jOTAtY3JheQogCQlvcz0tdW5pY29zCiAJCTs7Ci0gICAgICAgIGNlZ2NjKQorCWNlZ2NjKQogCQliYXNpY19tYWNoaW5lPWFybS11bmtub3duCiAJCW9zPS1jZWdjYwogCQk7OwpAQCAtNTE2LDcgKzU2MSw3IEBACiAJCWJhc2ljX21hY2hpbmU9Y3JheW52LWNyYXkKIAkJb3M9LXVuaWNvc21wCiAJCTs7Ci0JY3IxNikKKwljcjE2IHwgY3IxNi0qKQogCQliYXNpY19tYWNoaW5lPWNyMTYtdW5rbm93bgogCQlvcz0tZWxmCiAJCTs7CkBAIC03MzIsNyArNzc3LDcgQEAKIAkJYmFzaWNfbWFjaGluZT1uczMyay11dGVrCiAJCW9zPS1zeXN2CiAJCTs7Ci0gICAgICAgIG1pY3JvYmxhemUpCisJbWljcm9ibGF6ZSkKIAkJYmFzaWNfbWFjaGluZT1taWNyb2JsYXplLXhpbGlueAogCQk7OwogCW1pbmd3MzIpCkBAIC03NzUsNiArODIwLDEwIEBACiAJCWJhc2ljX21hY2hpbmU9aTM3MC1pYm0KIAkJb3M9LW12cwogCQk7OworCW5hY2wpCisJCWJhc2ljX21hY2hpbmU9bGUzMi11bmtub3duCisJCW9zPS1uYWNsCisJCTs7CiAJbmNyMzAwMCkKIAkJYmFzaWNfbWFjaGluZT1pNDg2LW5jcgogCQlvcz0tc3lzdjQKQEAgLTgzOSw2ICs4ODgsMTIgQEAKIAlucDEpCiAJCWJhc2ljX21hY2hpbmU9bnAxLWdvdWxkCiAJCTs7CisJbmVvLXRhbmRlbSkKKwkJYmFzaWNfbWFjaGluZT1uZW8tdGFuZGVtCisJCTs7CisJbnNlLXRhbmRlbSkKKwkJYmFzaWNfbWFjaGluZT1uc2UtdGFuZGVtCisJCTs7CiAJbnNyLXRhbmRlbSkKIAkJYmFzaWNfbWFjaGluZT1uc3ItdGFuZGVtCiAJCTs7CkBAIC05MjEsOSArOTc2LDEwIEBACiAJCTs7CiAJcG93ZXIpCWJhc2ljX21hY2hpbmU9cG93ZXItaWJtCiAJCTs7Ci0JcHBjKQliYXNpY19tYWNoaW5lPXBvd2VycGMtdW5rbm93bgorCXBwYyB8IHBwY2JlKQliYXNpY19tYWNoaW5lPXBvd2VycGMtdW5rbm93bgogCQk7OwotCXBwYy0qKQliYXNpY19tYWNoaW5lPXBvd2VycGMtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwlwcGMtKiB8IHBwY2JlLSopCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYy1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAogCQk7OwogCXBwY2xlIHwgcG93ZXJwY2xpdHRsZSB8IHBwYy1sZSB8IHBvd2VycGMtbGl0dGxlKQogCQliYXNpY19tYWNoaW5lPXBvd2VycGNsZS11bmtub3duCkBAIC0xMDE3LDYgKzEwNzMsOSBAQAogCQliYXNpY19tYWNoaW5lPWk4NjAtc3RyYXR1cwogCQlvcz0tc3lzdjQKIAkJOzsKKwlzdHJvbmdhcm0tKiB8IHRodW1iLSopCisJCWJhc2ljX21hY2hpbmU9YXJtLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CiAJc3VuMikKIAkJYmFzaWNfbWFjaGluZT1tNjgwMDAtc3VuCiAJCTs7CkBAIC0xMDczLDIwICsxMTMyLDggQEAKIAkJYmFzaWNfbWFjaGluZT10OTAtY3JheQogCQlvcz0tdW5pY29zCiAJCTs7Ci0JdGljNTR4IHwgYzU0eCopCi0JCWJhc2ljX21hY2hpbmU9dGljNTR4LXVua25vd24KLQkJb3M9LWNvZmYKLQkJOzsKLQl0aWM1NXggfCBjNTV4KikKLQkJYmFzaWNfbWFjaGluZT10aWM1NXgtdW5rbm93bgotCQlvcz0tY29mZgotCQk7OwotCXRpYzZ4IHwgYzZ4KikKLQkJYmFzaWNfbWFjaGluZT10aWM2eC11bmtub3duCi0JCW9zPS1jb2ZmCi0JCTs7CiAJdGlsZSopCi0JCWJhc2ljX21hY2hpbmU9dGlsZS11bmtub3duCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgogCQlvcz0tbGludXgtZ251CiAJCTs7CiAJdHgzOSkKQEAgLTExNTYsNiArMTIwMyw5IEBACiAJeHBzIHwgeHBzMTAwKQogCQliYXNpY19tYWNoaW5lPXhwczEwMC1ob25leXdlbGwKIAkJOzsKKwl4c2NhbGUtKiB8IHhzY2FsZWVbYmxdLSopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXnhzY2FsZS9hcm0vJ2AKKwkJOzsKIAl5bXApCiAJCWJhc2ljX21hY2hpbmU9eW1wLWNyYXkKIAkJb3M9LXVuaWNvcwpAQCAtMTI1Myw5ICsxMzAzLDEyIEBACiBpZiBbIHgiJG9zIiAhPSB4IiIgXQogdGhlbgogY2FzZSAkb3MgaW4KLSAgICAgICAgIyBGaXJzdCBtYXRjaCBzb21lIHN5c3RlbSB0eXBlIGFsaWFzZXMKLSAgICAgICAgIyB0aGF0IG1pZ2h0IGdldCBjb25mdXNlZCB3aXRoIHZhbGlkIHN5c3RlbSB0eXBlcy4KKwkjIEZpcnN0IG1hdGNoIHNvbWUgc3lzdGVtIHR5cGUgYWxpYXNlcworCSMgdGhhdCBtaWdodCBnZXQgY29uZnVzZWQgd2l0aCB2YWxpZCBzeXN0ZW0gdHlwZXMuCiAJIyAtc29sYXJpcyogaXMgYSBiYXNpYyBzeXN0ZW0gdHlwZSwgd2l0aCB0aGlzIG9uZSBleGNlcHRpb24uCisJLWF1cm9yYXV4KQorCQlvcz0tYXVyb3JhdXgKKwkJOzsKIAktc29sYXJpczEgfCAtc29sYXJpczEuKikKIAkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfHNvbGFyaXMxfHN1bm9zNHwnYAogCQk7OwpAQCAtMTI3Nyw4ICsxMzMwLDggQEAKIAkjIC1zeXN2KiBpcyBub3QgaGVyZSBiZWNhdXNlIGl0IGNvbWVzIGxhdGVyLCBhZnRlciBzeXN2cjQuCiAJLWdudSogfCAtYnNkKiB8IC1tYWNoKiB8IC1taW5peCogfCAtZ2VuaXgqIHwgLXVsdHJpeCogfCAtaXJpeCogXAogCSAgICAgIHwgLSp2bXMqIHwgLXNjbyogfCAtZXNpeCogfCAtaXNjKiB8IC1haXgqIHwgLWNuayogfCAtc3Vub3MgfCAtc3Vub3NbMzRdKlwKLQkgICAgICB8IC1ocHV4KiB8IC11bm9zKiB8IC1vc2YqIHwgLWx1bmEqIHwgLWRndXgqIHwgLXNvbGFyaXMqIHwgLXN5bSogXAotCSAgICAgIHwgLWtvcGVuc29sYXJpcyogXAorCSAgICAgIHwgLWhwdXgqIHwgLXVub3MqIHwgLW9zZiogfCAtbHVuYSogfCAtZGd1eCogfCAtYXVyb3JhdXgqIHwgLXNvbGFyaXMqIFwKKwkgICAgICB8IC1zeW0qIHwgLWtvcGVuc29sYXJpcyogXAogCSAgICAgIHwgLWFtaWdhb3MqIHwgLWFtaWdhZG9zKiB8IC1tc2RvcyogfCAtbmV3c29zKiB8IC11bmljb3MqIHwgLWFvZiogXAogCSAgICAgIHwgLWFvcyogfCAtYXJvcyogXAogCSAgICAgIHwgLW5pbmR5KiB8IC12eHNpbSogfCAtdnh3b3JrcyogfCAtZWJtb24qIHwgLWhtcyogfCAtbXZzKiBcCkBAIC0xMjkxLDcgKzEzNDQsOCBAQAogCSAgICAgIHwgLXVkaSogfCAtZWFiaSogfCAtbGl0ZXMqIHwgLWllZWUqIHwgLWdvMzIqIHwgLWF1eCogXAogCSAgICAgIHwgLWNob3J1c29zKiB8IC1jaG9ydXNyZGIqIHwgLWNlZ2NjKiBcCiAJICAgICAgfCAtY3lnd2luKiB8IC1wZSogfCAtcHNvcyogfCAtbW9zcyogfCAtcHJvZWxmKiB8IC1ydGVtcyogXAotCSAgICAgIHwgLW1pbmd3MzIqIHwgLWxpbnV4LWdudSogfCAtbGludXgtbmV3bGliKiB8IC1saW51eC11Y2xpYmMqIFwKKwkgICAgICB8IC1taW5ndzMyKiB8IC1saW51eC1nbnUqIHwgLWxpbnV4LWFuZHJvaWQqIFwKKwkgICAgICB8IC1saW51eC1uZXdsaWIqIHwgLWxpbnV4LXVjbGliYyogXAogCSAgICAgIHwgLXV4cHYqIHwgLWJlb3MqIHwgLW1wZWl4KiB8IC11ZGsqIFwKIAkgICAgICB8IC1pbnRlcml4KiB8IC11d2luKiB8IC1ta3MqIHwgLXJoYXBzb2R5KiB8IC1kYXJ3aW4qIHwgLW9wZW5lZCogXAogCSAgICAgIHwgLW9wZW5zdGVwKiB8IC1vc2tpdCogfCAtY29uaXgqIHwgLXB3MzIqIHwgLW5vbnN0b3B1eCogXApAQCAtMTMzOCw3ICsxMzkyLDcgQEAKIAktb3BlbmVkKikKIAkJb3M9LW9wZW5lZGl0aW9uCiAJCTs7Ci0gICAgICAgIC1vczQwMCopCisJLW9zNDAwKikKIAkJb3M9LW9zNDAwCiAJCTs7CiAJLXdpbmNlKikKQEAgLTEzODcsNyArMTQ0MSw3IEBACiAJLXNpbml4KikKIAkJb3M9LXN5c3Y0CiAJCTs7Ci0gICAgICAgIC10cGYqKQorCS10cGYqKQogCQlvcz0tdHBmCiAJCTs7CiAJLXRyaXRvbiopCkBAIC0xNDMyLDYgKzE0ODYsOCBAQAogCS1kaWNvcyopCiAJCW9zPS1kaWNvcwogCQk7OworCS1uYWNsKikKKwkJOzsKIAktbm9uZSkKIAkJOzsKIAkqKQpAQCAtMTQ1NCwxMCArMTUxMCwxMCBAQAogIyBzeXN0ZW0sIGFuZCB3ZSdsbCBuZXZlciBnZXQgdG8gdGhpcyBwb2ludC4KIAogY2FzZSAkYmFzaWNfbWFjaGluZSBpbgotICAgICAgICBzY29yZS0qKQorCXNjb3JlLSopCiAJCW9zPS1lbGYKIAkJOzsKLSAgICAgICAgc3B1LSopCisJc3B1LSopCiAJCW9zPS1lbGYKIAkJOzsKIAkqLWFjb3JuKQpAQCAtMTQ2OSw4ICsxNTI1LDE3IEBACiAJYXJtKi1zZW1pKQogCQlvcz0tYW91dAogCQk7OwotICAgICAgICBjNHgtKiB8IHRpYzR4LSopCi0gICAgICAgIAlvcz0tY29mZgorCWM0eC0qIHwgdGljNHgtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWM1NHgtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWM1NXgtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWM2eC0qKQorCQlvcz0tY29mZgogCQk7OwogCSMgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIHRoZSAqLWRlYyBlbnRyeS4KIAlwZHAxMC0qKQpAQCAtMTQ5Nyw3ICsxNTYyLDcgQEAKIAltNjgqLWNpc2NvKQogCQlvcz0tYW91dAogCQk7OwotICAgICAgICBtZXAtKikKKwltZXAtKikKIAkJb3M9LWVsZgogCQk7OwogCW1pcHMqLWNpc2NvKQpAQCAtMTUyNCw3ICsxNTg5LDcgQEAKIAkqLWlibSkKIAkJb3M9LWFpeAogCQk7OwotICAgIAkqLWtudXRoKQorCSota251dGgpCiAJCW9zPS1tbWl4d2FyZQogCQk7OwogCSotd2VjKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWd1cmUgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZ3VyZQppbmRleCBjNWM3MGIxLi41YWFjZjliIDEwMDc1NQotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZ3VyZQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZ3VyZQpAQCAtMSwxMyArMSwxMyBAQAogIyEgL2Jpbi9zaAogIyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLgotIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjUgZm9yIGxpYmZmaSAzLjAuMTByYzAuCisjIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OCBmb3IgbGliZmZpIDMuMC4xMS4KICMKLSMgUmVwb3J0IGJ1Z3MgdG8gPGh0dHA6Ly9nY2MuZ251Lm9yZy9idWdzLmh0bWw+LgorIyBSZXBvcnQgYnVncyB0byA8aHR0cDovL2dpdGh1Yi5jb20vYXRncmVlbi9saWJmZmkvaXNzdWVzPi4KICMKICMKICMgQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLAotIyAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSMgSW5jLgorIyAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgogIwogIwogIyBUaGlzIGNvbmZpZ3VyZSBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgpAQCAtOTEsNiArOTEsNyBAQAogSUZTPSIgIiIJJGFzX25sIgogCiAjIEZpbmQgd2hvIHdlIGFyZS4gIExvb2sgaW4gdGhlIHBhdGggaWYgd2UgY29udGFpbiBubyBkaXJlY3Rvcnkgc2VwYXJhdG9yLgorYXNfbXlzZWxmPQogY2FzZSAkMCBpbiAjKCgKICAgKltcXC9dKiApIGFzX215c2VsZj0kMCA7OwogICAqKSBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCkBAIC0xNzMsNiArMTc0LDE0IEBACiAgIGFzX2xpbmVub18yPSI7YXNfc3VnZ2VzdGVkPSRhc19zdWdnZXN0ZWQkTElORU5PO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkIiBhc19saW5lbm9fMmE9XCRMSU5FTk8KICAgZXZhbCAndGVzdCBcInhcJGFzX2xpbmVub18xJ1wkYXNfcnVuJ1wiICE9IFwieFwkYXNfbGluZW5vXzInXCRhc19ydW4nXCIgJiYKICAgdGVzdCBcInhcYGV4cHIgXCRhc19saW5lbm9fMSdcJGFzX3J1bicgKyAxXGBcIiA9IFwieFwkYXNfbGluZW5vXzInXCRhc19ydW4nXCInIHx8IGV4aXQgMQorCisgIHRlc3QgLW4gXCJcJHtaU0hfVkVSU0lPTitzZXR9XCR7QkFTSF9WRVJTSU9OK3NldH1cIiB8fCAoCisgICAgRUNITz0nXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwnCisgICAgRUNITz1cJEVDSE9cJEVDSE9cJEVDSE9cJEVDSE9cJEVDSE8KKyAgICBFQ0hPPVwkRUNIT1wkRUNIT1wkRUNIT1wkRUNIT1wkRUNIT1wkRUNITworICAgIFBBVEg9L2VtcHR5IEZQQVRIPS9lbXB0eTsgZXhwb3J0IFBBVEggRlBBVEgKKyAgICB0ZXN0IFwiWFxgcHJpbnRmICVzIFwkRUNIT1xgXCIgPSBcIlhcJEVDSE9cIiBcXAorICAgICAgfHwgdGVzdCBcIlhcYHByaW50IC1yIC0tIFwkRUNIT1xgXCIgPSBcIlhcJEVDSE9cIiApIHx8IGV4aXQgMQogdGVzdCBcJCgoIDEgKyAxICkpID0gMiB8fCBleGl0IDEiCiAgIGlmIChldmFsICIkYXNfcmVxdWlyZWQiKSAyPi9kZXYvbnVsbDsgdGhlbiA6CiAgIGFzX2hhdmVfcmVxdWlyZWQ9eWVzCkBAIC0yMTYsMTEgKzIyNSwxOCBAQAogICAjIFdlIGNhbm5vdCB5ZXQgYXNzdW1lIGEgZGVjZW50IHNoZWxsLCBzbyB3ZSBoYXZlIHRvIHByb3ZpZGUgYQogCSMgbmV1dHJhbGl6YXRpb24gdmFsdWUgZm9yIHNoZWxscyB3aXRob3V0IHVuc2V0OyBhbmQgdGhpcyBhbHNvCiAJIyB3b3JrcyBhcm91bmQgc2hlbGxzIHRoYXQgY2Fubm90IHVuc2V0IG5vbmV4aXN0ZW50IHZhcmlhYmxlcy4KKwkjIFByZXNlcnZlIC12IGFuZCAteCB0byB0aGUgcmVwbGFjZW1lbnQgc2hlbGwuCiAJQkFTSF9FTlY9L2Rldi9udWxsCiAJRU5WPS9kZXYvbnVsbAogCSh1bnNldCBCQVNIX0VOVikgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IEJBU0hfRU5WIEVOVgogCWV4cG9ydCBDT05GSUdfU0hFTEwKLQlleGVjICIkQ09ORklHX1NIRUxMIiAiJGFzX215c2VsZiIgJHsxKyIkQCJ9CisJY2FzZSAkLSBpbiAjICgoKCgKKwkgICp2KngqIHwgKngqdiogKSBhc19vcHRzPS12eCA7OworCSAgKnYqICkgYXNfb3B0cz0tdiA7OworCSAgKngqICkgYXNfb3B0cz0teCA7OworCSAgKiApIGFzX29wdHM9IDs7CisJZXNhYworCWV4ZWMgIiRDT05GSUdfU0hFTEwiICRhc19vcHRzICIkYXNfbXlzZWxmIiAkezErIiRAIn0KIGZpCiAKICAgICBpZiB0ZXN0IHgkYXNfaGF2ZV9yZXF1aXJlZCA9IHhubzsgdGhlbiA6CkBAIC0yMzEsOCArMjQ3LDggQEAKICAgICAkYXNfZWNobyAiJDA6IGJlIHVwZ3JhZGVkIHRvIHpzaCA0LjMuNCBvciBsYXRlci4iCiAgIGVsc2UKICAgICAkYXNfZWNobyAiJDA6IFBsZWFzZSB0ZWxsIGJ1Zy1hdXRvY29uZkBnbnUub3JnIGFuZAotJDA6IGh0dHA6Ly9nY2MuZ251Lm9yZy9idWdzLmh0bWwgYWJvdXQgeW91ciBzeXN0ZW0sCi0kMDogaW5jbHVkaW5nIGFueSBlcnJvciBwb3NzaWJseSBvdXRwdXQgYmVmb3JlIHRoaXMKKyQwOiBodHRwOi8vZ2l0aHViLmNvbS9hdGdyZWVuL2xpYmZmaS9pc3N1ZXMgYWJvdXQgeW91cgorJDA6IHN5c3RlbSwgaW5jbHVkaW5nIGFueSBlcnJvciBwb3NzaWJseSBvdXRwdXQgYmVmb3JlIHRoaXMKICQwOiBtZXNzYWdlLiBUaGVuIGluc3RhbGwgYSBtb2Rlcm4gc2hlbGwsIG9yIG1hbnVhbGx5IHJ1bgogJDA6IHRoZSBzY3JpcHQgdW5kZXIgc3VjaCBhIHNoZWxsIGlmIHlvdSBkbyBoYXZlIG9uZS4iCiAgIGZpCkBAIC0zMTksNyArMzM1LDcgQEAKICAgICAgIHRlc3QgLWQgIiRhc19kaXIiICYmIGJyZWFrCiAgICAgZG9uZQogICAgIHRlc3QgLXogIiRhc19kaXJzIiB8fCBldmFsICJta2RpciAkYXNfZGlycyIKLSAgfSB8fCB0ZXN0IC1kICIkYXNfZGlyIiB8fCBhc19mbl9lcnJvciAiY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgJGFzX2RpciIKKyAgfSB8fCB0ZXN0IC1kICIkYXNfZGlyIiB8fCBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgJGFzX2RpciIKIAogCiB9ICMgYXNfZm5fbWtkaXJfcApAQCAtMzU5LDE5ICszNzUsMTkgQEAKIGZpICMgYXNfZm5fYXJpdGgKIAogCi0jIGFzX2ZuX2Vycm9yIEVSUk9SIFtMSU5FTk8gTE9HX0ZEXQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgYXNfZm5fZXJyb3IgU1RBVFVTIEVSUk9SIFtMSU5FTk8gTE9HX0ZEXQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIE91dHB1dCAiYGJhc2VuYW1lICQwYDogZXJyb3I6IEVSUk9SIiB0byBzdGRlcnIuIElmIExJTkVOTyBhbmQgTE9HX0ZEIGFyZQogIyBwcm92aWRlZCwgYWxzbyBvdXRwdXQgdGhlIGVycm9yIHRvIExPR19GRCwgcmVmZXJlbmNpbmcgTElORU5PLiBUaGVuIGV4aXQgdGhlCi0jIHNjcmlwdCB3aXRoIHN0YXR1cyAkPywgdXNpbmcgMSBpZiB0aGF0IHdhcyAwLgorIyBzY3JpcHQgd2l0aCBTVEFUVVMsIHVzaW5nIDEgaWYgdGhhdCB3YXMgMC4KIGFzX2ZuX2Vycm9yICgpCiB7Ci0gIGFzX3N0YXR1cz0kPzsgdGVzdCAkYXNfc3RhdHVzIC1lcSAwICYmIGFzX3N0YXR1cz0xCi0gIGlmIHRlc3QgIiQzIjsgdGhlbgotICAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDIifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogJDEiID4mJDMKKyAgYXNfc3RhdHVzPSQxOyB0ZXN0ICRhc19zdGF0dXMgLWVxIDAgJiYgYXNfc3RhdHVzPTEKKyAgaWYgdGVzdCAiJDQiOyB0aGVuCisgICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMyJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiAkMiIgPiYkNAogICBmaQotICAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogJDEiID4mMgorICAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogJDIiID4mMgogICBhc19mbl9leGl0ICRhc19zdGF0dXMKIH0gIyBhc19mbl9lcnJvcgogCkBAIC01MjgsMTYxICs1NDQsMTQgQEAKICMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLgogYXNfdHJfc2g9ImV2YWwgc2VkICd5JSorJXBwJTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyIKIAotCi0KLSMgQ2hlY2sgdGhhdCB3ZSBhcmUgcnVubmluZyB1bmRlciB0aGUgY29ycmVjdCBzaGVsbC4KIFNIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9CiAKLWNhc2UgWCRsdF9FQ0hPIGluCi1YKi0tZmFsbGJhY2stZWNobykKLSAgIyBSZW1vdmUgb25lIGxldmVsIG9mIHF1b3RhdGlvbiAod2hpY2ggd2FzIHJlcXVpcmVkIGZvciBNYWtlKS4KLSAgRUNITz1gZWNobyAiJGx0X0VDSE8iIHwgc2VkICdzLFxcXFxcJFxcJDAsJyQwJywnYAotICA7OwotZXNhYwotCi1FQ0hPPSR7bHRfRUNITy1lY2hvfQotaWYgdGVzdCAiWCQxIiA9IFgtLW5vLXJlZXhlYzsgdGhlbgotICAjIERpc2NhcmQgdGhlIC0tbm8tcmVleGVjIGZsYWcsIGFuZCBjb250aW51ZS4KLSAgc2hpZnQKLWVsaWYgdGVzdCAiWCQxIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KLSAgIyBBdm9pZCBpbmxpbmUgZG9jdW1lbnQgaGVyZSwgaXQgbWF5IGJlIGxlZnQgb3ZlcgotICA6Ci1lbGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyA7IHRoZW4KLSAgIyBZaXBwZWUsICRFQ0hPIHdvcmtzIQotICA6Ci1lbHNlCi0gICMgUmVzdGFydCB1bmRlciB0aGUgY29ycmVjdCBzaGVsbC4KLSAgZXhlYyAkU0hFTEwgIiQwIiAtLW5vLXJlZXhlYyAkezErIiRAIn0KLWZpCi0KLWlmIHRlc3QgIlgkMSIgPSBYLS1mYWxsYmFjay1lY2hvOyB0aGVuCi0gICMgdXNlZCBhcyBmYWxsYmFjayBlY2hvCi0gIHNoaWZ0Ci0gIGNhdCA8PF9MVF9FT0YKLSQqCi1fTFRfRU9GCi0gIGV4aXQgMAotZmkKLQotIyBUaGUgSFAtVVgga3NoIGFuZCBQT1NJWCBzaGVsbCBwcmludCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBzdGRvdXQKLSMgaWYgQ0RQQVRIIGlzIHNldC4KLSh1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBDRFBBVEgKLQotaWYgdGVzdCAteiAiJGx0X0VDSE8iOyB0aGVuCi0gIGlmIHRlc3QgIlgke2VjaG9fdGVzdF9zdHJpbmcrc2V0fSIgIT0gWHNldDsgdGhlbgotICAgICMgZmluZCBhIHN0cmluZyBhcyBsYXJnZSBhcyBwb3NzaWJsZSwgYXMgbG9uZyBhcyB0aGUgc2hlbGwgY2FuIGNvcGUgd2l0aCBpdAotICAgIGZvciBjbWQgaW4gJ3NlZCA1MHEgIiQwIicgJ3NlZCAyMHEgIiQwIicgJ3NlZCAxMHEgIiQwIicgJ3NlZCAycSAiJDAiJyAnZWNobyB0ZXN0JzsgZG8KLSAgICAgICMgZXhwZWN0ZWQgc2l6ZXM6IGxlc3MgdGhhbiAyS2IsIDFLYiwgNTEyIGJ5dGVzLCAxNiBieXRlcywgLi4uCi0gICAgICBpZiB7IGVjaG9fdGVzdF9zdHJpbmc9YGV2YWwgJGNtZGA7IH0gMj4vZGV2L251bGwgJiYKLQkgeyB0ZXN0ICJYJGVjaG9fdGVzdF9zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IH0gMj4vZGV2L251bGwKLSAgICAgIHRoZW4KLSAgICAgICAgYnJlYWsKLSAgICAgIGZpCi0gICAgZG9uZQotICBmaQotCi0gIGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgotICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWB7ICRFQ0hPICIkZWNob190ZXN0X3N0cmluZyI7IH0gMj4vZGV2L251bGxgICYmCi0gICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotICAgIDoKLSAgZWxzZQotICAgICMgVGhlIFNvbGFyaXMsIEFJWCwgYW5kIERpZ2l0YWwgVW5peCBkZWZhdWx0IGVjaG8gcHJvZ3JhbXMgdW5xdW90ZQotICAgICMgYmFja3NsYXNoZXMuICBUaGlzIG1ha2VzIGl0IGltcG9zc2libGUgdG8gcXVvdGUgYmFja3NsYXNoZXMgdXNpbmcKLSAgICAjICAgZWNobyAiJHNvbWV0aGluZyIgfCBzZWQgJ3MvXFwvXFxcXC9nJwotICAgICMKLSAgICAjIFNvLCBmaXJzdCB3ZSBsb29rIGZvciBhIHdvcmtpbmcgZWNobyBpbiB0aGUgdXNlcidzIFBBVEguCi0KLSAgICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKLSAgICBmb3IgZGlyIGluICRQQVRIIC91c3IvdWNiOyBkbwotICAgICAgSUZTPSIkbHRfc2F2ZV9pZnMiCi0gICAgICBpZiAodGVzdCAtZiAkZGlyL2VjaG8gfHwgdGVzdCAtZiAkZGlyL2VjaG8kYWNfZXhlZXh0KSAmJgotICAgICAgICAgdGVzdCAiWGAoJGRpci9lY2hvICdcdCcpIDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgotICAgICAgICAgZWNob190ZXN0aW5nX3N0cmluZz1gKCRkaXIvZWNobyAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKLSAgICAgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotICAgICAgICBFQ0hPPSIkZGlyL2VjaG8iCi0gICAgICAgIGJyZWFrCi0gICAgICBmaQotICAgIGRvbmUKLSAgICBJRlM9IiRsdF9zYXZlX2lmcyIKLQotICAgIGlmIHRlc3QgIlgkRUNITyIgPSBYZWNobzsgdGhlbgotICAgICAgIyBXZSBkaWRuJ3QgZmluZCBhIGJldHRlciBlY2hvLCBzbyBsb29rIGZvciBhbHRlcm5hdGl2ZXMuCi0gICAgICBpZiB0ZXN0ICJYYHsgcHJpbnQgLXIgJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKLSAgICAgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YHsgcHJpbnQgLXIgIiRlY2hvX3Rlc3Rfc3RyaW5nIjsgfSAyPi9kZXYvbnVsbGAgJiYKLSAgICAgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotICAgICAgICAjIFRoaXMgc2hlbGwgaGFzIGEgYnVpbHRpbiBwcmludCAtciB0aGF0IGRvZXMgdGhlIHRyaWNrLgotICAgICAgICBFQ0hPPSdwcmludCAtcicKLSAgICAgIGVsaWYgeyB0ZXN0IC1mIC9iaW4va3NoIHx8IHRlc3QgLWYgL2Jpbi9rc2gkYWNfZXhlZXh0OyB9ICYmCi0JICAgdGVzdCAiWCRDT05GSUdfU0hFTEwiICE9IFgvYmluL2tzaDsgdGhlbgotICAgICAgICAjIElmIHdlIGhhdmUga3NoLCB0cnkgcnVubmluZyBjb25maWd1cmUgYWdhaW4gd2l0aCBpdC4KLSAgICAgICAgT1JJR0lOQUxfQ09ORklHX1NIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9Ci0gICAgICAgIGV4cG9ydCBPUklHSU5BTF9DT05GSUdfU0hFTEwKLSAgICAgICAgQ09ORklHX1NIRUxMPS9iaW4va3NoCi0gICAgICAgIGV4cG9ydCBDT05GSUdfU0hFTEwKLSAgICAgICAgZXhlYyAkQ09ORklHX1NIRUxMICIkMCIgLS1uby1yZWV4ZWMgJHsxKyIkQCJ9Ci0gICAgICBlbHNlCi0gICAgICAgICMgVHJ5IHVzaW5nIHByaW50Zi4KLSAgICAgICAgRUNITz0ncHJpbnRmICVzXG4nCi0gICAgICAgIGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgotCSAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YHsgJEVDSE8gIiRlY2hvX3Rlc3Rfc3RyaW5nIjsgfSAyPi9kZXYvbnVsbGAgJiYKLQkgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLQkgICMgQ29vbCwgcHJpbnRmIHdvcmtzCi0JICA6Ci0gICAgICAgIGVsaWYgZWNob190ZXN0aW5nX3N0cmluZz1gKCRPUklHSU5BTF9DT05GSUdfU0hFTEwgIiQwIiAtLWZhbGxiYWNrLWVjaG8gJ1x0JykgMj4vZGV2L251bGxgICYmCi0JICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gJ1hcdCcgJiYKLQkgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkT1JJR0lOQUxfQ09ORklHX1NIRUxMICIkMCIgLS1mYWxsYmFjay1lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgotCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0JICBDT05GSUdfU0hFTEw9JE9SSUdJTkFMX0NPTkZJR19TSEVMTAotCSAgZXhwb3J0IENPTkZJR19TSEVMTAotCSAgU0hFTEw9IiRDT05GSUdfU0hFTEwiCi0JICBleHBvcnQgU0hFTEwKLQkgIEVDSE89IiRDT05GSUdfU0hFTEwgJDAgLS1mYWxsYmFjay1lY2hvIgotICAgICAgICBlbGlmIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkQ09ORklHX1NIRUxMICIkMCIgLS1mYWxsYmFjay1lY2hvICdcdCcpIDI+L2Rldi9udWxsYCAmJgotCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICdYXHQnICYmCi0JICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJENPTkZJR19TSEVMTCAiJDAiIC0tZmFsbGJhY2stZWNobyAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKLQkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotCSAgRUNITz0iJENPTkZJR19TSEVMTCAkMCAtLWZhbGxiYWNrLWVjaG8iCi0gICAgICAgIGVsc2UKLQkgICMgbWF5YmUgd2l0aCBhIHNtYWxsZXIgc3RyaW5nLi4uCi0JICBwcmV2PToKLQotCSAgZm9yIGNtZCBpbiAnZWNobyB0ZXN0JyAnc2VkIDJxICIkMCInICdzZWQgMTBxICIkMCInICdzZWQgMjBxICIkMCInICdzZWQgNTBxICIkMCInOyBkbwotCSAgICBpZiB7IHRlc3QgIlgkZWNob190ZXN0X3N0cmluZyIgPSAiWGBldmFsICRjbWRgIjsgfSAyPi9kZXYvbnVsbAotCSAgICB0aGVuCi0JICAgICAgYnJlYWsKLQkgICAgZmkKLQkgICAgcHJldj0iJGNtZCIKLQkgIGRvbmUKLQotCSAgaWYgdGVzdCAiJHByZXYiICE9ICdzZWQgNTBxICIkMCInOyB0aGVuCi0JICAgIGVjaG9fdGVzdF9zdHJpbmc9YGV2YWwgJHByZXZgCi0JICAgIGV4cG9ydCBlY2hvX3Rlc3Rfc3RyaW5nCi0JICAgIGV4ZWMgJHtPUklHSU5BTF9DT05GSUdfU0hFTEwtJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH19ICIkMCIgJHsxKyIkQCJ9Ci0JICBlbHNlCi0JICAgICMgT29wcy4gIFdlIGxvc3QgY29tcGxldGVseSwgc28ganVzdCBzdGljayB3aXRoIGVjaG8uCi0JICAgIEVDSE89ZWNobwotCSAgZmkKLSAgICAgICAgZmkKLSAgICAgIGZpCi0gICAgZmkKLSAgZmkKLWZpCi0KLSMgQ29weSBlY2hvIGFuZCBxdW90ZSB0aGUgY29weSBzdWl0YWJseSBmb3IgcGFzc2luZyB0byBsaWJ0b29sIGZyb20KLSMgdGhlIE1ha2VmaWxlLCBpbnN0ZWFkIG9mIHF1b3RpbmcgdGhlIG9yaWdpbmFsLCB3aGljaCBpcyB1c2VkIGxhdGVyLgotbHRfRUNITz0kRUNITwotaWYgdGVzdCAiWCRsdF9FQ0hPIiA9ICJYJENPTkZJR19TSEVMTCAkMCAtLWZhbGxiYWNrLWVjaG8iOyB0aGVuCi0gICBsdF9FQ0hPPSIkQ09ORklHX1NIRUxMIFxcXCRcJDAgLS1mYWxsYmFjay1lY2hvIgotZmkKLQotCi0KIAogdGVzdCAtbiAiJERKRElSIiB8fCBleGVjIDc8JjAgPC9kZXYvbnVsbAogZXhlYyA2PiYxCiAKICMgTmFtZSBvZiB0aGUgaG9zdC4KLSMgaG9zdG5hbWUgb24gc29tZSBzeXN0ZW1zIChTVlIzLjIsIExpbnV4KSByZXR1cm5zIGEgYm9ndXMgZXhpdCBzdGF0dXMsCisjIGhvc3RuYW1lIG9uIHNvbWUgc3lzdGVtcyAoU1ZSMy4yLCBvbGQgR05VL0xpbnV4KSByZXR1cm5zIGEgYm9ndXMgZXhpdCBzdGF0dXMsCiAjIHNvIHVuYW1lIGdldHMgcnVuIHRvby4KIGFjX2hvc3RuYW1lPWAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYAogCkBAIC03MDEsOSArNTcwLDkgQEAKICMgSWRlbnRpdHkgb2YgdGhpcyBwYWNrYWdlLgogUEFDS0FHRV9OQU1FPSdsaWJmZmknCiBQQUNLQUdFX1RBUk5BTUU9J2xpYmZmaScKLVBBQ0tBR0VfVkVSU0lPTj0nMy4wLjEwcmMwJwotUEFDS0FHRV9TVFJJTkc9J2xpYmZmaSAzLjAuMTByYzAnCi1QQUNLQUdFX0JVR1JFUE9SVD0naHR0cDovL2djYy5nbnUub3JnL2J1Z3MuaHRtbCcKK1BBQ0tBR0VfVkVSU0lPTj0nMy4wLjExJworUEFDS0FHRV9TVFJJTkc9J2xpYmZmaSAzLjAuMTEnCitQQUNLQUdFX0JVR1JFUE9SVD0naHR0cDovL2dpdGh1Yi5jb20vYXRncmVlbi9saWJmZmkvaXNzdWVzJwogUEFDS0FHRV9VUkw9JycKIAogIyBGYWN0b3JpbmcgZGVmYXVsdCBoZWFkZXJzIGZvciBtb3N0IHRlc3RzLgpAQCAtNzQ4LDggKzYxNywxNCBAQAogTElCT0JKUwogdG9vbGV4ZWNsaWJkaXIKIHRvb2xleGVjZGlyCitGRklfREVCVUdfRkFMU0UKK0ZGSV9ERUJVR19UUlVFCiBUQVJHRVRESVIKIFRBUkdFVAorRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRQorRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRV9GQUxTRQorRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRV9UUlVFCitzeXNfc3ltYm9sX3VuZGVyc2NvcmUKIEhBVkVfTE9OR19ET1VCTEUKIEFMTE9DQQogUEE2NF9IUFVYX0ZBTFNFCkBAIC03ODIsNiArNjU3LDggQEAKIFBPV0VSUENfQUlYX1RSVUUKIFBPV0VSUENfRkFMU0UKIFBPV0VSUENfVFJVRQorTU9YSUVfRkFMU0UKK01PWElFX1RSVUUKIE02OEtfRkFMU0UKIE02OEtfVFJVRQogTTMyUl9GQUxTRQpAQCAtODExLDE1ICs2ODgsMTggQEAKIE1BSU5UCiBNQUlOVEFJTkVSX01PREVfRkFMU0UKIE1BSU5UQUlORVJfTU9ERV9UUlVFCitQUlRESUFHCiBDUFAKIE9UT09MNjQKIE9UT09MCiBMSVBPCiBOTUVESVQKIERTWU1VVElMCi1sdF9FQ0hPCitNQU5JRkVTVF9UT09MCiBSQU5MSUIKK2FjX2N0X0FSCiBBUgorRExMVE9PTAogT0JKRFVNUAogTE5fUwogTk0KQEAgLTgzOSw2ICs3MTksNyBAQAogYW1fX2Zhc3RkZXBDQ19GQUxTRQogYW1fX2Zhc3RkZXBDQ19UUlVFCiBDQ0RFUE1PREUKK2FtX19ub2RlcAogQU1ERVBCQUNLU0xBU0gKIEFNREVQX0ZBTFNFCiBBTURFUF9UUlVFCkBAIC04NzUsNiArNzU2LDcgQEAKIElOU1RBTExfREFUQQogSU5TVEFMTF9TQ1JJUFQKIElOU1RBTExfUFJPR1JBTQorYXhfZW5hYmxlX2J1aWxkZGlyX3NlZAogdGFyZ2V0X29zCiB0YXJnZXRfdmVuZG9yCiB0YXJnZXRfY3B1CkBAIC05MjgsMTMgKzgxMCwxNyBAQAogYWNfc3Vic3RfZmlsZXM9JycKIGFjX3VzZXJfb3B0cz0nCiBlbmFibGVfb3B0aW9uX2NoZWNraW5nCitlbmFibGVfYnVpbGRkaXIKIGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nCiBlbmFibGVfc2hhcmVkCiBlbmFibGVfc3RhdGljCiB3aXRoX3BpYwogZW5hYmxlX2Zhc3RfaW5zdGFsbAogd2l0aF9nbnVfbGQKK3dpdGhfc3lzcm9vdAogZW5hYmxlX2xpYnRvb2xfbG9jaworZW5hYmxlX3BvcnRhYmxlX2JpbmFyeQord2l0aF9nY2NfYXJjaAogZW5hYmxlX21haW50YWluZXJfbW9kZQogZW5hYmxlX2RlYnVnCiBlbmFibGVfc3RydWN0cwpAQCAtMTAxMCw4ICs4OTYsOSBAQAogICBmaQogCiAgIGNhc2UgJGFjX29wdGlvbiBpbgotICAqPSopCWFjX29wdGFyZz1gZXhwciAiWCRhY19vcHRpb24iIDogJ1tePV0qPVwoLipcKSdgIDs7Ci0gICopCWFjX29wdGFyZz15ZXMgOzsKKyAgKj0/KikgYWNfb3B0YXJnPWBleHByICJYJGFjX29wdGlvbiIgOiAnW149XSo9XCguKlwpJ2AgOzsKKyAgKj0pICAgYWNfb3B0YXJnPSA7OworICAqKSAgICBhY19vcHRhcmc9eWVzIDs7CiAgIGVzYWMKIAogICAjIEFjY2VwdCB0aGUgaW1wb3J0YW50IEN5Z251cyBjb25maWd1cmUgb3B0aW9ucywgc28gd2UgY2FuIGRpYWdub3NlIHR5cG9zLgpAQCAtMTA1Niw3ICs5NDMsNyBAQAogICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSpkaXNhYmxlLVwoLipcKSdgCiAgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgogICAgIGV4cHIgIngkYWNfdXNlcm9wdCIgOiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCi0gICAgICBhc19mbl9lcnJvciAiaW52YWxpZCBmZWF0dXJlIG5hbWU6ICRhY191c2Vyb3B0IgorICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfdXNlcm9wdCIKICAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQKICAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgCiAgICAgY2FzZSAkYWNfdXNlcl9vcHRzIGluCkBAIC0xMDgyLDcgKzk2OSw3IEBACiAgICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKmVuYWJsZS1cKFtePV0qXCknYAogICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KICAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgotICAgICAgYXNfZm5fZXJyb3IgImludmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfdXNlcm9wdCIKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIGZlYXR1cmUgbmFtZTogJGFjX3VzZXJvcHQiCiAgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CiAgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAogICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbgpAQCAtMTI4Niw3ICsxMTczLDcgQEAKICAgICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qd2l0aC1cKFtePV0qXCknYAogICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KICAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgotICAgICAgYXNfZm5fZXJyb3IgImludmFsaWQgcGFja2FnZSBuYW1lOiAkYWNfdXNlcm9wdCIKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHBhY2thZ2UgbmFtZTogJGFjX3VzZXJvcHQiCiAgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CiAgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAogICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbgpAQCAtMTMwMiw3ICsxMTg5LDcgQEAKICAgICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qd2l0aG91dC1cKC4qXCknYAogICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KICAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgotICAgICAgYXNfZm5fZXJyb3IgImludmFsaWQgcGFja2FnZSBuYW1lOiAkYWNfdXNlcm9wdCIKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHBhY2thZ2UgbmFtZTogJGFjX3VzZXJvcHQiCiAgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CiAgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAogICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbgpAQCAtMTMzMiw4ICsxMjE5LDggQEAKICAgfCAtLXgtbGlicmFyPSogfCAtLXgtbGlicmE9KiB8IC0teC1saWJyPSogfCAtLXgtbGliPSogfCAtLXgtbGk9KiB8IC0teC1sPSopCiAgICAgeF9saWJyYXJpZXM9JGFjX29wdGFyZyA7OwogCi0gIC0qKSBhc19mbl9lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbjogXGAkYWNfb3B0aW9uJwotVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCisgIC0qKSBhc19mbl9lcnJvciAkPyAidW5yZWNvZ25pemVkIG9wdGlvbjogXGAkYWNfb3B0aW9uJworVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiIKICAgICA7OwogCiAgICo9KikKQEAgLTEzNDEsNyArMTIyOCw3IEBACiAgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgogICAgIGNhc2UgJGFjX2VudnZhciBpbiAjKAogICAgICAgJycgfCBbMC05XSogfCAqWyFfJGFzX2NyX2FsbnVtXSogKQotICAgICAgYXNfZm5fZXJyb3IgImludmFsaWQgdmFyaWFibGUgbmFtZTogXGAkYWNfZW52dmFyJyIgOzsKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhcmlhYmxlIG5hbWU6IFxgJGFjX2VudnZhciciIDs7CiAgICAgZXNhYwogICAgIGV2YWwgJGFjX2VudnZhcj1cJGFjX29wdGFyZwogICAgIGV4cG9ydCAkYWNfZW52dmFyIDs7CkBAIC0xMzUxLDcgKzEyMzgsNyBAQAogICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHlvdSBzaG91bGQgdXNlIC0tYnVpbGQsIC0taG9zdCwgLS10YXJnZXQiID4mMgogICAgIGV4cHIgIngkYWNfb3B0aW9uIiA6ICIuKlteLS5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgogICAgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogaW52YWxpZCBob3N0IHR5cGU6ICRhY19vcHRpb24iID4mMgotICAgIDogJHtidWlsZF9hbGlhcz0kYWNfb3B0aW9ufSAke2hvc3RfYWxpYXM9JGFjX29wdGlvbn0gJHt0YXJnZXRfYWxpYXM9JGFjX29wdGlvbn0KKyAgICA6ICIke2J1aWxkX2FsaWFzPSRhY19vcHRpb259ICR7aG9zdF9hbGlhcz0kYWNfb3B0aW9ufSAke3RhcmdldF9hbGlhcz0kYWNfb3B0aW9ufSIKICAgICA7OwogCiAgIGVzYWMKQEAgLTEzNTksMTMgKzEyNDYsMTMgQEAKIAogaWYgdGVzdCAtbiAiJGFjX3ByZXYiOyB0aGVuCiAgIGFjX29wdGlvbj0tLWBlY2hvICRhY19wcmV2IHwgc2VkICdzL18vLS9nJ2AKLSAgYXNfZm5fZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgdG8gJGFjX29wdGlvbiIKKyAgYXNfZm5fZXJyb3IgJD8gIm1pc3NpbmcgYXJndW1lbnQgdG8gJGFjX29wdGlvbiIKIGZpCiAKIGlmIHRlc3QgLW4gIiRhY191bnJlY29nbml6ZWRfb3B0cyI7IHRoZW4KICAgY2FzZSAkZW5hYmxlX29wdGlvbl9jaGVja2luZyBpbgogICAgIG5vKSA7OwotICAgIGZhdGFsKSBhc19mbl9lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgOzsKKyAgICBmYXRhbCkgYXNfZm5fZXJyb3IgJD8gInVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiIDs7CiAgICAgKikgICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiID4mMiA7OwogICBlc2FjCiBmaQpAQCAtMTM4OCw3ICsxMjc1LDcgQEAKICAgICBbXFwvJF0qIHwgPzpbXFwvXSogKSAgY29udGludWU7OwogICAgIE5PTkUgfCAnJyApIGNhc2UgJGFjX3ZhciBpbiAqcHJlZml4ICkgY29udGludWU7OyBlc2FjOzsKICAgZXNhYwotICBhc19mbl9lcnJvciAiZXhwZWN0ZWQgYW4gYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgZm9yIC0tJGFjX3ZhcjogJGFjX3ZhbCIKKyAgYXNfZm5fZXJyb3IgJD8gImV4cGVjdGVkIGFuIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIGZvciAtLSRhY192YXI6ICRhY192YWwiCiBkb25lCiAKICMgVGhlcmUgbWlnaHQgYmUgcGVvcGxlIHdobyBkZXBlbmQgb24gdGhlIG9sZCBicm9rZW4gYmVoYXZpb3I6IGAkaG9zdCcKQEAgLTE0MDIsOCArMTI4OSw4IEBACiBpZiB0ZXN0ICJ4JGhvc3RfYWxpYXMiICE9IHg7IHRoZW4KICAgaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgPSB4OyB0aGVuCiAgICAgY3Jvc3NfY29tcGlsaW5nPW1heWJlCi0gICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogSWYgeW91IHdhbnRlZCB0byBzZXQgdGhlIC0tYnVpbGQgdHlwZSwgZG9uJ3QgdXNlIC0taG9zdC4KLSAgICBJZiBhIGNyb3NzIGNvbXBpbGVyIGlzIGRldGVjdGVkIHRoZW4gY3Jvc3MgY29tcGlsZSBtb2RlIHdpbGwgYmUgdXNlZC4iID4mMgorICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IGlmIHlvdSB3YW50ZWQgdG8gc2V0IHRoZSAtLWJ1aWxkIHR5cGUsIGRvbid0IHVzZSAtLWhvc3QuCisgICAgSWYgYSBjcm9zcyBjb21waWxlciBpcyBkZXRlY3RlZCB0aGVuIGNyb3NzIGNvbXBpbGUgbW9kZSB3aWxsIGJlIHVzZWQiID4mMgogICBlbGlmIHRlc3QgIngkYnVpbGRfYWxpYXMiICE9ICJ4JGhvc3RfYWxpYXMiOyB0aGVuCiAgICAgY3Jvc3NfY29tcGlsaW5nPXllcwogICBmaQpAQCAtMTQxOCw5ICsxMzA1LDkgQEAKIGFjX3B3ZD1gcHdkYCAmJiB0ZXN0IC1uICIkYWNfcHdkIiAmJgogYWNfbHNfZGk9YGxzIC1kaSAuYCAmJgogYWNfcHdkX2xzX2RpPWBjZCAiJGFjX3B3ZCIgJiYgbHMgLWRpIC5gIHx8Ci0gIGFzX2ZuX2Vycm9yICJ3b3JraW5nIGRpcmVjdG9yeSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCIKKyAgYXNfZm5fZXJyb3IgJD8gIndvcmtpbmcgZGlyZWN0b3J5IGNhbm5vdCBiZSBkZXRlcm1pbmVkIgogdGVzdCAiWCRhY19sc19kaSIgPSAiWCRhY19wd2RfbHNfZGkiIHx8Ci0gIGFzX2ZuX2Vycm9yICJwd2QgZG9lcyBub3QgcmVwb3J0IG5hbWUgb2Ygd29ya2luZyBkaXJlY3RvcnkiCisgIGFzX2ZuX2Vycm9yICQ/ICJwd2QgZG9lcyBub3QgcmVwb3J0IG5hbWUgb2Ygd29ya2luZyBkaXJlY3RvcnkiCiAKIAogIyBGaW5kIHRoZSBzb3VyY2UgZmlsZXMsIGlmIGxvY2F0aW9uIHdhcyBub3Qgc3BlY2lmaWVkLgpAQCAtMTQ1OSwxMSArMTM0NiwxMSBAQAogZmkKIGlmIHRlc3QgISAtciAiJHNyY2Rpci8kYWNfdW5pcXVlX2ZpbGUiOyB0aGVuCiAgIHRlc3QgIiRhY19zcmNkaXJfZGVmYXVsdGVkIiA9IHllcyAmJiBzcmNkaXI9IiRhY19jb25mZGlyIG9yIC4uIgotICBhc19mbl9lcnJvciAiY2Fubm90IGZpbmQgc291cmNlcyAoJGFjX3VuaXF1ZV9maWxlKSBpbiAkc3JjZGlyIgorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGZpbmQgc291cmNlcyAoJGFjX3VuaXF1ZV9maWxlKSBpbiAkc3JjZGlyIgogZmkKIGFjX21zZz0ic291cmNlcyBhcmUgaW4gJHNyY2RpciwgYnV0IFxgY2QgJHNyY2RpcicgZG9lcyBub3Qgd29yayIKIGFjX2Fic19jb25mZGlyPWAoCi0JY2QgIiRzcmNkaXIiICYmIHRlc3QgLXIgIi4vJGFjX3VuaXF1ZV9maWxlIiB8fCBhc19mbl9lcnJvciAiJGFjX21zZyIKKwljZCAiJHNyY2RpciIgJiYgdGVzdCAtciAiLi8kYWNfdW5pcXVlX2ZpbGUiIHx8IGFzX2ZuX2Vycm9yICQ/ICIkYWNfbXNnIgogCXB3ZClgCiAjIFdoZW4gYnVpbGRpbmcgaW4gcGxhY2UsIHNldCBzcmNkaXI9LgogaWYgdGVzdCAiJGFjX2Fic19jb25mZGlyIiA9ICIkYWNfcHdkIjsgdGhlbgpAQCAtMTQ4OSw3ICsxMzc2LDcgQEAKICAgIyBPbWl0IHNvbWUgaW50ZXJuYWwgb3Igb2Jzb2xldGUgb3B0aW9ucyB0byBtYWtlIHRoZSBsaXN0IGxlc3MgaW1wb3NpbmcuCiAgICMgVGhpcyBtZXNzYWdlIGlzIHRvbyBsb25nIHRvIGJlIGEgc3RyaW5nIGluIHRoZSBBL1VYIDMuMSBzaC4KICAgY2F0IDw8X0FDRU9GCi1cYGNvbmZpZ3VyZScgY29uZmlndXJlcyBsaWJmZmkgMy4wLjEwcmMwIHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KK1xgY29uZmlndXJlJyBjb25maWd1cmVzIGxpYmZmaSAzLjAuMTEgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1zLgogCiBVc2FnZTogJDAgW09QVElPTl0uLi4gW1ZBUj1WQUxVRV0uLi4KIApAQCAtMTUwMyw3ICsxMzkwLDcgQEAKICAgICAgIC0taGVscD1zaG9ydCAgICAgICAgZGlzcGxheSBvcHRpb25zIHNwZWNpZmljIHRvIHRoaXMgcGFja2FnZQogICAgICAgLS1oZWxwPXJlY3Vyc2l2ZSAgICBkaXNwbGF5IHRoZSBzaG9ydCBoZWxwIG9mIGFsbCB0aGUgaW5jbHVkZWQgcGFja2FnZXMKICAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAgZGlzcGxheSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0Ci0gIC1xLCAtLXF1aWV0LCAtLXNpbGVudCAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5nLi4uJyBtZXNzYWdlcworICAtcSwgLS1xdWlldCwgLS1zaWxlbnQgICBkbyBub3QgcHJpbnQgXGBjaGVja2luZyAuLi4nIG1lc3NhZ2VzCiAgICAgICAtLWNhY2hlLWZpbGU9RklMRSAgIGNhY2hlIHRlc3QgcmVzdWx0cyBpbiBGSUxFIFtkaXNhYmxlZF0KICAgLUMsIC0tY29uZmlnLWNhY2hlICAgICAgYWxpYXMgZm9yIFxgLS1jYWNoZS1maWxlPWNvbmZpZy5jYWNoZScKICAgLW4sIC0tbm8tY3JlYXRlICAgICAgICAgZG8gbm90IGNyZWF0ZSBvdXRwdXQgZmlsZXMKQEAgLTE1NjAsNyArMTQ0Nyw3IEBACiAKIGlmIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiOyB0aGVuCiAgIGNhc2UgJGFjX2luaXRfaGVscCBpbgotICAgICBzaG9ydCB8IHJlY3Vyc2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24gb2YgbGliZmZpIDMuMC4xMHJjMDoiOzsKKyAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIGxpYmZmaSAzLjAuMTE6Ijs7CiAgICBlc2FjCiAgIGNhdCA8PFxfQUNFT0YKIApAQCAtMTU2OCw2ICsxNDU1LDggQEAKICAgLS1kaXNhYmxlLW9wdGlvbi1jaGVja2luZyAgaWdub3JlIHVucmVjb2duaXplZCAtLWVuYWJsZS8tLXdpdGggb3B0aW9ucwogICAtLWRpc2FibGUtRkVBVFVSRSAgICAgICBkbyBub3QgaW5jbHVkZSBGRUFUVVJFIChzYW1lIGFzIC0tZW5hYmxlLUZFQVRVUkU9bm8pCiAgIC0tZW5hYmxlLUZFQVRVUkVbPUFSR10gIGluY2x1ZGUgRkVBVFVSRSBbQVJHPXllc10KKyAgLS1kaXNhYmxlLWJ1aWxkZGlyICAgICAgZGlzYWJsZSBhdXRvbWF0aWMgYnVpbGQgaW4gc3ViZGlyIG9mIHNvdXJjZXMKKwogICAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZyAgc3BlZWRzIHVwIG9uZS10aW1lIGJ1aWxkCiAgIC0tZW5hYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgICBkbyBub3QgcmVqZWN0IHNsb3cgZGVwZW5kZW5jeSBleHRyYWN0b3JzCiAgIC0tZW5hYmxlLXNoYXJlZFs9UEtHU10gIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMgW2RlZmF1bHQ9eWVzXQpAQCAtMTU3NSw2ICsxNDY0LDkgQEAKICAgLS1lbmFibGUtZmFzdC1pbnN0YWxsWz1QS0dTXQogICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6ZSBmb3IgZmFzdCBpbnN0YWxsYXRpb24gW2RlZmF1bHQ9eWVzXQogICAtLWRpc2FibGUtbGlidG9vbC1sb2NrICBhdm9pZCBsb2NraW5nIChtaWdodCBicmVhayBwYXJhbGxlbCBidWlsZHMpCisgIC0tZW5hYmxlLXBvcnRhYmxlLWJpbmFyeQorICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlIGNvbXBpbGVyIG9wdGltaXphdGlvbnMgdGhhdCB3b3VsZCBwcm9kdWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVucG9ydGFibGUgYmluYXJpZXMKICAgLS1lbmFibGUtbWFpbnRhaW5lci1tb2RlICBlbmFibGUgbWFrZSBydWxlcyBhbmQgZGVwZW5kZW5jaWVzIG5vdCB1c2VmdWwKIAkJCSAgKGFuZCBzb21ldGltZXMgY29uZnVzaW5nKSB0byB0aGUgY2FzdWFsIGluc3RhbGxlcgogICAtLWVuYWJsZS1kZWJ1ZyAgICAgICAgICBkZWJ1Z2dpbmcgbW9kZQpAQCAtMTU4NSw5ICsxNDc3LDEzIEBACiBPcHRpb25hbCBQYWNrYWdlczoKICAgLS13aXRoLVBBQ0tBR0VbPUFSR10gICAgdXNlIFBBQ0tBR0UgW0FSRz15ZXNdCiAgIC0td2l0aG91dC1QQUNLQUdFICAgICAgIGRvIG5vdCB1c2UgUEFDS0FHRSAoc2FtZSBhcyAtLXdpdGgtUEFDS0FHRT1ubykKLSAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgIC0td2l0aC1waWNbPVBLR1NdICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQogICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQogICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCisgIC0td2l0aC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCisgIC0td2l0aC1nY2MtYXJjaD08YXJjaD4gIHVzZSBhcmNoaXRlY3R1cmUgPGFyY2g+IGZvciBnY2MgLW1hcmNoLy1tdHVuZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiBndWVzc2luZwogCiBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCkBAIC0xNjA0LDcgKzE1MDAsNyBAQAogVXNlIHRoZXNlIHZhcmlhYmxlcyB0byBvdmVycmlkZSB0aGUgY2hvaWNlcyBtYWRlIGJ5IGBjb25maWd1cmUnIG9yIHRvIGhlbHAKIGl0IHRvIGZpbmQgbGlicmFyaWVzIGFuZCBwcm9ncmFtcyB3aXRoIG5vbnN0YW5kYXJkIG5hbWVzL2xvY2F0aW9ucy4KIAotUmVwb3J0IGJ1Z3MgdG8gPGh0dHA6Ly9nY2MuZ251Lm9yZy9idWdzLmh0bWw+LgorUmVwb3J0IGJ1Z3MgdG8gPGh0dHA6Ly9naXRodWIuY29tL2F0Z3JlZW4vbGliZmZpL2lzc3Vlcz4uCiBfQUNFT0YKIGFjX3N0YXR1cz0kPwogZmkKQEAgLTE2NjcsMTAgKzE1NjMsMTAgQEAKIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiICYmIGV4aXQgJGFjX3N0YXR1cwogaWYgJGFjX2luaXRfdmVyc2lvbjsgdGhlbgogICBjYXQgPDxcX0FDRU9GCi1saWJmZmkgY29uZmlndXJlIDMuMC4xMHJjMAotZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY1CitsaWJmZmkgY29uZmlndXJlIDMuMC4xMQorZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4CiAKLUNvcHlyaWdodCAoQykgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK0NvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIFRoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuCiBfQUNFT0YKQEAgLTE3MTQsNyArMTYxMCw3IEBACiAKIAlhY19yZXR2YWw9MQogZmkKLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQgYXNfbGluZW5vO30KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCiAgIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAogCiB9ICMgYWNfZm5fY190cnlfY29tcGlsZQpAQCAtMTc2MCw3ICsxNjU2LDcgQEAKICAgIyBpbnRlcmZlcmUgd2l0aCB0aGUgbmV4dCBsaW5rIGNvbW1hbmQ7IGFsc28gZGVsZXRlIGEgZGlyZWN0b3J5IHRoYXQgaXMKICAgIyBsZWZ0IGJlaGluZCBieSBBcHBsZSdzIGNvbXBpbGVyLiAgV2UgZG8gdGhpcyBiZWZvcmUgZXhlY3V0aW5nIHRoZSBhY3Rpb25zLgogICBybSAtcmYgY29uZnRlc3QuZFNZTSBjb25mdGVzdF9pcGE4X2NvbmZ0ZXN0Lm9vCi0gIGV2YWwgJGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07IHVuc2V0IGFzX2xpbmVubzt9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubwogICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKIAogfSAjIGFjX2ZuX2NfdHJ5X2xpbmsKQEAgLTE3NzQsNyArMTY3MCw3IEBACiAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2OyB9Ci1pZiB7IGFzX3Zhcj0kMzsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0fVwiID0gc2V0IjsgfTsgdGhlbiA6CitpZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTc5Miw3ICsxNjg4LDcgQEAKIGV2YWwgYWNfcmVzPVwkJDMKIAkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQogJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQotICBldmFsICRhc19saW5lbm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBhc19saW5lbm89OyB1bnNldCBhc19saW5lbm87fQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KIAogfSAjIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUKIApAQCAtMTgxNyw3ICsxNzEzLDcgQEAKICAgICBtdiAtZiBjb25mdGVzdC5lcjEgY29uZnRlc3QuZXJyCiAgIGZpCiAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ID4vZGV2L251bGwgJiYgeworICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ID4gY29uZnRlc3QuaSAmJiB7CiAJIHRlc3QgLXogIiRhY19jX3ByZXByb2Nfd2Fybl9mbGFnJGFjX2Nfd2Vycm9yX2ZsYWciIHx8CiAJIHRlc3QgISAtcyBjb25mdGVzdC5lcnIKICAgICAgICB9OyB0aGVuIDoKQEAgLTE4MjgsNyArMTcyNCw3IEBACiAKICAgICBhY19yZXR2YWw9MQogZmkKLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQgYXNfbGluZW5vO30KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCiAgIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAogCiB9ICMgYWNfZm5fY190cnlfY3BwCkBAIC0xODcwLDcgKzE3NjYsNyBAQAogICAgICAgIGFjX3JldHZhbD0kYWNfc3RhdHVzCiBmaQogICBybSAtcmYgY29uZnRlc3QuZFNZTSBjb25mdGVzdF9pcGE4X2NvbmZ0ZXN0Lm9vCi0gIGV2YWwgJGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07IHVuc2V0IGFzX2xpbmVubzt9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubwogICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKIAogfSAjIGFjX2ZuX2NfdHJ5X3J1bgpAQCAtMTg4Myw3ICsxNzc5LDcgQEAKICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkMiIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+JjY7IH0KLWlmIHsgYXNfdmFyPSQzOyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoKK2lmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC0xOTM4LDcgKzE4MzQsNyBAQAogZXZhbCBhY19yZXM9XCQkMwogCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiAkYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9Ci0gIGV2YWwgJGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07IHVuc2V0IGFzX2xpbmVubzt9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubwogCiB9ICMgYWNfZm5fY19jaGVja19mdW5jCiAKQEAgLTE5NTAsMTAgKzE4NDYsMTAgQEAKIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgKCkKIHsKICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawotICBpZiB7IGFzX3Zhcj0kMzsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0fVwiID0gc2V0IjsgfTsgdGhlbiA6CisgIGlmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkMiIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+JjY7IH0KLWlmIHsgYXNfdmFyPSQzOyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoKK2lmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZmkKIGV2YWwgYWNfcmVzPVwkJDMKQEAgLTE5ODksNyArMTg4NSw3IEBACiBlbHNlCiAgIGFjX2hlYWRlcl9wcmVwcm9jPW5vCiBmaQotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfaGVhZGVyX3ByZXByb2MiID4mNQogJGFzX2VjaG8gIiRhY19oZWFkZXJfcHJlcHJvYyIgPiY2OyB9CiAKQEAgLTIwMTIsMTcgKzE5MDgsMTUgQEAKICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICQyOiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5vdCBCZSBDb21waWxlZFwiIiA+JjI7fQogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJDI6IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4mNQogJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4mMjt9Ci0oIGNhdCA8PFxfQVNCT1gKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMjIFJlcG9ydCB0aGlzIHRvIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWdzLmh0bWwgIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLV9BU0JPWAorKCAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBSZXBvcnQgdGhpcyB0byBodHRwOi8vZ2l0aHViLmNvbS9hdGdyZWVuL2xpYmZmaS9pc3N1ZXMgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIyIKICAgICAgKSB8IHNlZCAicy9eLyRhc19tZTogV0FSTklORzogICAgIC8iID4mMgogICAgIDs7CiBlc2FjCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICQyIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsgfQotaWYgeyBhc192YXI9JDM7IGV2YWwgInRlc3QgXCJcJHskYXNfdmFyK3NldH1cIiA9IHNldCI7IH07IHRoZW4gOgoraWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGV2YWwgIiQzPVwkYWNfaGVhZGVyX2NvbXBpbGVyIgpAQCAtMjAzMSwxMCArMTkyNSw2NCBAQAogCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiAkYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CiBmaQotICBldmFsICRhc19saW5lbm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBhc19saW5lbm89OyB1bnNldCBhc19saW5lbm87fQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KIAogfSAjIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwKIAorIyBhY19mbl9jX2NoZWNrX3R5cGUgTElORU5PIFRZUEUgVkFSIElOQ0xVREVTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdHMgd2hldGhlciBUWVBFIGV4aXN0cyBhZnRlciBoYXZpbmcgaW5jbHVkZWQgSU5DTFVERVMsIHNldHRpbmcgY2FjaGUKKyMgdmFyaWFibGUgVkFSIGFjY29yZGluZ2x5LgorYWNfZm5fY19jaGVja190eXBlICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2OyB9CitpZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgZXZhbCAiJDM9bm8iCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyQ0CitpbnQKK21haW4gKCkKK3sKK2lmIChzaXplb2YgKCQyKSkKKwkgcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJDQKK2ludAorbWFpbiAoKQoreworaWYgKHNpemVvZiAoKCQyKSkpCisJICAgIHJldHVybiAwOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgZXZhbCAiJDM9eWVzIgorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2V2YWwgYWNfcmVzPVwkJDMKKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KKworfSAjIGFjX2ZuX2NfY2hlY2tfdHlwZQorCiAjIGFjX2ZuX2NfY29tcHV0ZV9pbnQgTElORU5PIEVYUFIgVkFSIElOQ0xVREVTCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFRyaWVzIHRvIGZpbmQgdGhlIGNvbXBpbGUtdGltZSB2YWx1ZSBvZiBFWFBSIGluIGEgcHJvZ3JhbSB0aGF0IGluY2x1ZGVzCkBAIC0yMjA4LDcgKzIxNTYsNyBAQAogcm0gLWYgY29uZnRlc3QudmFsCiAKICAgZmkKLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQgYXNfbGluZW5vO30KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCiAgIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAogCiB9ICMgYWNfZm5fY19jb21wdXRlX2ludApAQCAtMjIxNiw4ICsyMTY0LDggQEAKIFRoaXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlCiBydW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtlLgogCi1JdCB3YXMgY3JlYXRlZCBieSBsaWJmZmkgJGFzX21lIDMuMC4xMHJjMCwgd2hpY2ggd2FzCi1nZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjUuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKK0l0IHdhcyBjcmVhdGVkIGJ5IGxpYmZmaSAkYXNfbWUgMy4wLjExLCB3aGljaCB3YXMKK2dlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OC4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcwogCiAgICQgJDAgJEAKIApAQCAtMjMyNywxMSArMjI3NSw5IEBACiAgIHsKICAgICBlY2hvCiAKLSAgICBjYXQgPDxcX0FTQk9YCi0jIyAtLS0tLS0tLS0tLS0tLS0tICMjCisgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKICMjIENhY2hlIHZhcmlhYmxlcy4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKLV9BU0JPWAorIyMgLS0tLS0tLS0tLS0tLS0tLSAjIyIKICAgICBlY2hvCiAgICAgIyBUaGUgZm9sbG93aW5nIHdheSBvZiB3cml0aW5nIHRoZSBjYWNoZSBtaXNoYW5kbGVzIG5ld2xpbmVzIGluIHZhbHVlcywKICgKQEAgLTIzNjUsMTEgKzIzMTEsOSBAQAogKQogICAgIGVjaG8KIAotICAgIGNhdCA8PFxfQVNCT1gKLSMjIC0tLS0tLS0tLS0tLS0tLS0tICMjCisgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tLS0tLS0tICMjCiAjIyBPdXRwdXQgdmFyaWFibGVzLiAjIwotIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKLV9BU0JPWAorIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMiCiAgICAgZWNobwogICAgIGZvciBhY192YXIgaW4gJGFjX3N1YnN0X3ZhcnMKICAgICBkbwpAQCAtMjM4MiwxMSArMjMyNiw5IEBACiAgICAgZWNobwogCiAgICAgaWYgdGVzdCAtbiAiJGFjX3N1YnN0X2ZpbGVzIjsgdGhlbgotICAgICAgY2F0IDw8XF9BU0JPWAotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworICAgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKICMjIEZpbGUgc3Vic3RpdHV0aW9ucy4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLV9BU0JPWAorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLSAjIyIKICAgICAgIGVjaG8KICAgICAgIGZvciBhY192YXIgaW4gJGFjX3N1YnN0X2ZpbGVzCiAgICAgICBkbwpAQCAtMjQwMCwxMSArMjM0Miw5IEBACiAgICAgZmkKIAogICAgIGlmIHRlc3QgLXMgY29uZmRlZnMuaDsgdGhlbgotICAgICAgY2F0IDw8XF9BU0JPWAotIyMgLS0tLS0tLS0tLS0gIyMKKyAgICAgICRhc19lY2hvICIjIyAtLS0tLS0tLS0tLSAjIwogIyMgY29uZmRlZnMuaC4gIyMKLSMjIC0tLS0tLS0tLS0tICMjCi1fQVNCT1gKKyMjIC0tLS0tLS0tLS0tICMjIgogICAgICAgZWNobwogICAgICAgY2F0IGNvbmZkZWZzLmgKICAgICAgIGVjaG8KQEAgLTI0NTksNyArMjM5OSwxMiBAQAogYWNfc2l0ZV9maWxlMT1OT05FCiBhY19zaXRlX2ZpbGUyPU5PTkUKIGlmIHRlc3QgLW4gIiRDT05GSUdfU0lURSI7IHRoZW4KLSAgYWNfc2l0ZV9maWxlMT0kQ09ORklHX1NJVEUKKyAgIyBXZSBkbyBub3Qgd2FudCBhIFBBVEggc2VhcmNoIGZvciBjb25maWcuc2l0ZS4KKyAgY2FzZSAkQ09ORklHX1NJVEUgaW4gIygoCisgICAgLSopICBhY19zaXRlX2ZpbGUxPS4vJENPTkZJR19TSVRFOzsKKyAgICAqLyopIGFjX3NpdGVfZmlsZTE9JENPTkZJR19TSVRFOzsKKyAgICAqKSAgIGFjX3NpdGVfZmlsZTE9Li8kQ09ORklHX1NJVEU7OworICBlc2FjCiBlbGlmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgogICBhY19zaXRlX2ZpbGUxPSRwcmVmaXgvc2hhcmUvY29uZmlnLnNpdGUKICAgYWNfc2l0ZV9maWxlMj0kcHJlZml4L2V0Yy9jb25maWcuc2l0ZQpAQCAtMjQ3NCw3ICsyNDE5LDExIEBACiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUiID4mNQogJGFzX2VjaG8gIiRhc19tZTogbG9hZGluZyBzaXRlIHNjcmlwdCAkYWNfc2l0ZV9maWxlIiA+JjY7fQogICAgIHNlZCAncy9eL3wgLycgIiRhY19zaXRlX2ZpbGUiID4mNQotICAgIC4gIiRhY19zaXRlX2ZpbGUiCisgICAgLiAiJGFjX3NpdGVfZmlsZSIgXAorICAgICAgfHwgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciAkPyAiZmFpbGVkIHRvIGxvYWQgc2l0ZSBzY3JpcHQgJGFjX3NpdGVfZmlsZQorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KICAgZmkKIGRvbmUKIApAQCAtMjU1MCw3ICsyNDk5LDcgQEAKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogY2hhbmdlcyBpbiB0aGUgZW52aXJvbm1lbnQgY2FuIGNvbXByb21pc2UgdGhlIGJ1aWxkIiA+JjUKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBjaGFuZ2VzIGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVpbGQiID4mMjt9Ci0gIGFzX2ZuX2Vycm9yICJydW4gXGBtYWtlIGRpc3RjbGVhbicgYW5kL29yIFxgcm0gJGNhY2hlX2ZpbGUnIGFuZCBzdGFydCBvdmVyIiAiJExJTkVOTyIgNQorICBhc19mbl9lcnJvciAkPyAicnVuIFxgbWFrZSBkaXN0Y2xlYW4nIGFuZC9vciBcYHJtICRjYWNoZV9maWxlJyBhbmQgc3RhcnQgb3ZlciIgIiRMSU5FTk8iIDUKIGZpCiAjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwogIyMgTWFpbiBib2R5IG9mIHNjcmlwdC4gIyMKQEAgLTI1NjgsMTYgKzI1MTcsMjIgQEAKIAogYWNfYXV4X2Rpcj0KIGZvciBhY19kaXIgaW4gIiRzcmNkaXIiICIkc3JjZGlyLy4uIiAiJHNyY2Rpci8uLi8uLiI7IGRvCi0gIGZvciBhY190IGluIGluc3RhbGwtc2ggaW5zdGFsbC5zaCBzaHRvb2w7IGRvCi0gICAgaWYgdGVzdCAtZiAiJGFjX2Rpci8kYWNfdCI7IHRoZW4KLSAgICAgIGFjX2F1eF9kaXI9JGFjX2RpcgotICAgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvJGFjX3QgLWMiCi0gICAgICBicmVhayAyCi0gICAgZmkKLSAgZG9uZQorICBpZiB0ZXN0IC1mICIkYWNfZGlyL2luc3RhbGwtc2giOyB0aGVuCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC1zaCAtYyIKKyAgICBicmVhaworICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvaW5zdGFsbC5zaCI7IHRoZW4KKyAgICBhY19hdXhfZGlyPSRhY19kaXIKKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxsLnNoIC1jIgorICAgIGJyZWFrCisgIGVsaWYgdGVzdCAtZiAiJGFjX2Rpci9zaHRvb2wiOyB0aGVuCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvc2h0b29sIGluc3RhbGwgLWMiCisgICAgYnJlYWsKKyAgZmkKIGRvbmUKIGlmIHRlc3QgLXogIiRhY19hdXhfZGlyIjsgdGhlbgotICBhc19mbl9lcnJvciAiY2Fubm90IGZpbmQgaW5zdGFsbC1zaCwgaW5zdGFsbC5zaCwgb3Igc2h0b29sIGluIFwiJHNyY2RpclwiIFwiJHNyY2Rpci8uLlwiIFwiJHNyY2Rpci8uLi8uLlwiIiAiJExJTkVOTyIgNQorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGZpbmQgaW5zdGFsbC1zaCwgaW5zdGFsbC5zaCwgb3Igc2h0b29sIGluIFwiJHNyY2RpclwiIFwiJHNyY2Rpci8uLlwiIFwiJHNyY2Rpci8uLi8uLlwiIiAiJExJTkVOTyIgNQogZmkKIAogIyBUaGVzZSB0aHJlZSB2YXJpYWJsZXMgYXJlIHVuZG9jdW1lbnRlZCBhbmQgdW5zdXBwb3J0ZWQsCkBAIC0yNTkxLDI3ICsyNTQ2LDI3IEBACiAKICMgTWFrZSBzdXJlIHdlIGNhbiBydW4gY29uZmlnLnN1Yi4KICRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgc3VuNCA+L2Rldi9udWxsIDI+JjEgfHwKLSAgYXNfZm5fZXJyb3IgImNhbm5vdCBydW4gJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICIkTElORU5PIiA1CisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgcnVuICRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAiJExJTkVOTyIgNQogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2J1aWxkK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfYnVpbGQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhY19idWlsZF9hbGlhcz0kYnVpbGRfYWxpYXMKIHRlc3QgIngkYWNfYnVpbGRfYWxpYXMiID0geCAmJgogICBhY19idWlsZF9hbGlhcz1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiYAogdGVzdCAieCRhY19idWlsZF9hbGlhcyIgPSB4ICYmCi0gIGFzX2ZuX2Vycm9yICJjYW5ub3QgZ3Vlc3MgYnVpbGQgdHlwZTsgeW91IG11c3Qgc3BlY2lmeSBvbmUiICIkTElORU5PIiA1CisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZ3Vlc3MgYnVpbGQgdHlwZTsgeW91IG11c3Qgc3BlY2lmeSBvbmUiICIkTElORU5PIiA1CiBhY19jdl9idWlsZD1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAkYWNfYnVpbGRfYWxpYXNgIHx8Ci0gIGFzX2ZuX2Vycm9yICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkYWNfYnVpbGRfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQorICBhc19mbl9lcnJvciAkPyAiJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIgJGFjX2J1aWxkX2FsaWFzIGZhaWxlZCIgIiRMSU5FTk8iIDUKIAogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfYnVpbGQiID4mNQogJGFzX2VjaG8gIiRhY19jdl9idWlsZCIgPiY2OyB9CiBjYXNlICRhY19jdl9idWlsZCBpbgogKi0qLSopIDs7Ci0qKSBhc19mbl9lcnJvciAiaW52YWxpZCB2YWx1ZSBvZiBjYW5vbmljYWwgYnVpbGQiICIkTElORU5PIiA1OzsKKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBidWlsZCIgIiRMSU5FTk8iIDU7OwogZXNhYwogYnVpbGQ9JGFjX2N2X2J1aWxkCiBhY19zYXZlX0lGUz0kSUZTOyBJRlM9Jy0nCkBAIC0yNjI5LDE0ICsyNTg0LDE0IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2hvc3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9ob3N0Kzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAieCRob3N0X2FsaWFzIiA9IHg7IHRoZW4KICAgYWNfY3ZfaG9zdD0kYWNfY3ZfYnVpbGQKIGVsc2UKICAgYWNfY3ZfaG9zdD1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAkaG9zdF9hbGlhc2AgfHwKLSAgICBhc19mbl9lcnJvciAiJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIgJGhvc3RfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQorICAgIGFzX2ZuX2Vycm9yICQ/ICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkaG9zdF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1CiBmaQogCiBmaQpAQCAtMjY0NCw3ICsyNTk5LDcgQEAKICRhc19lY2hvICIkYWNfY3ZfaG9zdCIgPiY2OyB9CiBjYXNlICRhY19jdl9ob3N0IGluCiAqLSotKikgOzsKLSopIGFzX2ZuX2Vycm9yICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBob3N0IiAiJExJTkVOTyIgNTs7CisqKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB2YWx1ZSBvZiBjYW5vbmljYWwgaG9zdCIgIiRMSU5FTk8iIDU7OwogZXNhYwogaG9zdD0kYWNfY3ZfaG9zdAogYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSctJwpAQCAtMjY2MiwxNCArMjYxNywxNCBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHRhcmdldCBzeXN0ZW0gdHlwZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB0YXJnZXQgc3lzdGVtIHR5cGUuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfdGFyZ2V0K3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfdGFyZ2V0Kzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAieCR0YXJnZXRfYWxpYXMiID0geDsgdGhlbgogICBhY19jdl90YXJnZXQ9JGFjX2N2X2hvc3QKIGVsc2UKICAgYWNfY3ZfdGFyZ2V0PWAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICR0YXJnZXRfYWxpYXNgIHx8Ci0gICAgYXNfZm5fZXJyb3IgIiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViICR0YXJnZXRfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQorICAgIGFzX2ZuX2Vycm9yICQ/ICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkdGFyZ2V0X2FsaWFzIGZhaWxlZCIgIiRMSU5FTk8iIDUKIGZpCiAKIGZpCkBAIC0yNjc3LDcgKzI2MzIsNyBAQAogJGFzX2VjaG8gIiRhY19jdl90YXJnZXQiID4mNjsgfQogY2FzZSAkYWNfY3ZfdGFyZ2V0IGluCiAqLSotKikgOzsKLSopIGFzX2ZuX2Vycm9yICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCB0YXJnZXQiICIkTElORU5PIiA1OzsKKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCB0YXJnZXQiICIkTElORU5PIiA1OzsKIGVzYWMKIHRhcmdldD0kYWNfY3ZfdGFyZ2V0CiBhY19zYXZlX0lGUz0kSUZTOyBJRlM9Jy0nCkBAIC0yNzA0LDYgKzI2NTksMTEwIEBACiAKIC4gJHtzcmNkaXJ9L2NvbmZpZ3VyZS5ob3N0CiAKKworICAgIyBbJF1AIGlzIHVuc2FibGUgaW4gMi42MCsgYnV0IGVhcmxpZXIgYXV0b2NvbmYgaGFkIG5vIGFjX2NvbmZpZ3VyZV9hcmdzCisgICBpZiB0ZXN0ICIke2FjX2NvbmZpZ3VyZV9hcmdzK3NldH0iICE9ICJzZXQiIDsgdGhlbgorICAgICAgYWNfY29uZmlndXJlX2FyZ3M9CisgICAgICBmb3IgYWNfYXJnIGluICR7MSsiJEAifTsgZG8KKyAgICAgICAgIGFjX2NvbmZpZ3VyZV9hcmdzPSIkYWNfY29uZmlndXJlX2FyZ3MgJyRhY19hcmcnIgorICAgICAgZG9uZQorICAgZmkKKworIyBleHBhbmQgJGFjX2F1eF9kaXIgdG8gYW4gYWJzb2x1dGUgcGF0aAorYW1fYXV4X2Rpcj1gY2QgJGFjX2F1eF9kaXIgJiYgcHdkYAorCisKK2F4X2VuYWJsZV9idWlsZGRpcj0iLiIKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1idWlsZGRpciB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9idWlsZGRpcitzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX2J1aWxkZGlyOyBheF9lbmFibGVfYnVpbGRkaXI9IiRlbmFibGV2YWwiCitlbHNlCisgIGF4X2VuYWJsZV9idWlsZGRpcj0iYXV0byIKK2ZpCisKK2lmIHRlc3QgIi4kYWNfc3JjZGlyX2RlZmF1bHRlZCIgIT0gIi5ubyIgOyB0aGVuCitpZiB0ZXN0ICIuJHNyY2RpciIgPSAiLi4iIDsgdGhlbgorICBpZiB0ZXN0IC1mIGNvbmZpZy5zdGF0dXMgOyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiB0b3BsZXZlbCBzcmNkaXIgYWxyZWFkeSBjb25maWd1cmVkLi4uIHNraXBwaW5nIHN1YmRpciBidWlsZCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiB0b3BsZXZlbCBzcmNkaXIgYWxyZWFkeSBjb25maWd1cmVkLi4uIHNraXBwaW5nIHN1YmRpciBidWlsZCIgPiY2O30KKyAgZWxzZQorICAgIHRlc3QgIi4kYXhfZW5hYmxlX2J1aWxkZGlyIiA9ICIuIiAgJiYgYXhfZW5hYmxlX2J1aWxkZGlyPSIuIgorICAgIHRlc3QgIi4kYXhfZW5hYmxlX2J1aWxkZGlyIiA9ICIubm8iICAmJiBheF9lbmFibGVfYnVpbGRkaXI9Ii4iCisgICAgdGVzdCAiLiRUQVJHRVQiID0gIi4iICYmIFRBUkdFVD0iJHRhcmdldCIKKyAgICB0ZXN0ICIuJGF4X2VuYWJsZV9idWlsZGRpciIgPSAiLmF1dG8iICYmIGF4X2VuYWJsZV9idWlsZGRpcj0iJFRBUkdFVCIKKyAgICBpZiB0ZXN0ICIuJGF4X2VuYWJsZV9idWlsZGRpciIgIT0gIi4uIiA7IHRoZW4gICAgIyB3ZSBrbm93IHdoZXJlIHRvIGdvIGFuZAorICAgICAgYXNfZGlyPSRheF9lbmFibGVfYnVpbGRkaXI7IGFzX2ZuX21rZGlyX3AKKyAgICAgIGVjaG8gX18uJGF4X2VuYWJsZV9idWlsZGRpci5fXyA+ICRheF9lbmFibGVfYnVpbGRkaXIvY29uZnRlc3QudG1wCisgICAgICBjZCAkYXhfZW5hYmxlX2J1aWxkZGlyCisgICAgICBpZiBncmVwIF9fLiRheF9lbmFibGVfYnVpbGRkaXIuX18gY29uZnRlc3QudG1wID4vZGV2L251bGwgMj4vZGV2L251bGwgOyB0aGVuCisgICAgICAgIHJtIGNvbmZ0ZXN0LnRtcAorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogY29udGludWUgY29uZmlndXJlIGluIGRlZmF1bHQgYnVpbGRkaXIgXCIuLyRheF9lbmFibGVfYnVpbGRkaXJcIiIgPiY1CiskYXNfZWNobyAiY29udGludWUgY29uZmlndXJlIGluIGRlZmF1bHQgYnVpbGRkaXIgXCIuLyRheF9lbmFibGVfYnVpbGRkaXJcIiIgPiY2OyB9CisgICAgICBlbHNlCisgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY2hhbmdlIHRvIGRlZmF1bHQgYnVpbGRkaXIgXCIuLyRheF9lbmFibGVfYnVpbGRkaXJcIiIgIiRMSU5FTk8iIDUKKyAgICAgIGZpCisgICAgICBzcmNkaXI9YGVjaG8gIiRheF9lbmFibGVfYnVpbGRkaXIiIHwKKyAgICAgICAgICAgICAgc2VkIC1lICdzLF5cLi8sLDtzLFteL10kLCYvLDtzLFteL10qLywuLi8sZztzLFsvXSQsLDsnYAorICAgICAgIyBnb2luZyB0byByZXN0YXJ0IGZyb20gc3ViZGlyZWN0b3J5IGxvY2F0aW9uCisgICAgICB0ZXN0IC1mICRzcmNkaXIvY29uZmlnLmxvZyAgICYmIG12ICRzcmNkaXIvY29uZmlnLmxvZyAgIC4KKyAgICAgIHRlc3QgLWYgJHNyY2Rpci9jb25mZGVmcy5oICAgJiYgbXYgJHNyY2Rpci9jb25mZGVmcy5oICAgLgorICAgICAgdGVzdCAtZiAkc3JjZGlyL2NvbmZ0ZXN0LmxvZyAmJiBtdiAkc3JjZGlyL2NvbmZ0ZXN0LmxvZyAuCisgICAgICB0ZXN0IC1mICRzcmNkaXIvJGNhY2hlX2ZpbGUgICYmIG12ICRzcmNkaXIvJGNhY2hlX2ZpbGUgIC4KKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAuLi4uZXhlYyAkU0hFTEwgJHNyY2Rpci8kMCBcIi0tc3JjZGlyPSRzcmNkaXJcIiBcIi0tZW5hYmxlLWJ1aWxkZGlyPSRheF9lbmFibGVfYnVpbGRkaXJcIiAkezErXCIkQFwifSIgPiY1CiskYXNfZWNobyAiLi4uLmV4ZWMgJFNIRUxMICRzcmNkaXIvJDAgXCItLXNyY2Rpcj0kc3JjZGlyXCIgXCItLWVuYWJsZS1idWlsZGRpcj0kYXhfZW5hYmxlX2J1aWxkZGlyXCIgJHsxK1wiJEBcIn0iID4mNjsgfQorICAgICAgY2FzZSAiJDAiIGluICMgcmVzdGFydAorICAgICAgIC9cXCopIGV2YWwgJFNIRUxMICInJDAnIiAiJy0tc3JjZGlyPSRzcmNkaXInIiAiJy0tZW5hYmxlLWJ1aWxkZGlyPSRheF9lbmFibGVfYnVpbGRkaXInIiAkYWNfY29uZmlndXJlX2FyZ3MgOzsKKyAgICAgICAqKSBldmFsICRTSEVMTCAiJyRzcmNkaXIvJDAnIiAiJy0tc3JjZGlyPSRzcmNkaXInIiAiJy0tZW5hYmxlLWJ1aWxkZGlyPSRheF9lbmFibGVfYnVpbGRkaXInIiAkYWNfY29uZmlndXJlX2FyZ3MgOzsKKyAgICAgIGVzYWMgOyBleGl0ICQ/CisgICAgZmkKKyAgZmkKK2ZpIGZpCit0ZXN0ICIuJGF4X2VuYWJsZV9idWlsZGRpciIgPSAiLmF1dG8iICYmIGF4X2VuYWJsZV9idWlsZGRpcj0iLiIKKyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZ3NlZCBzZWQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGdzZWQgc2VkOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9heF9lbmFibGVfYnVpbGRkaXJfc2VkKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkYXhfZW5hYmxlX2J1aWxkZGlyX3NlZCBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9heF9lbmFibGVfYnVpbGRkaXJfc2VkPSIkYXhfZW5hYmxlX2J1aWxkZGlyX3NlZCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfYXhfZW5hYmxlX2J1aWxkZGlyX3NlZD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9heF9lbmFibGVfYnVpbGRkaXJfc2VkIiAmJiBhY19jdl9wYXRoX2F4X2VuYWJsZV9idWlsZGRpcl9zZWQ9InNlZCIKKyAgOzsKK2VzYWMKK2ZpCitheF9lbmFibGVfYnVpbGRkaXJfc2VkPSRhY19jdl9wYXRoX2F4X2VuYWJsZV9idWlsZGRpcl9zZWQKK2lmIHRlc3QgLW4gIiRheF9lbmFibGVfYnVpbGRkaXJfc2VkIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGF4X2VuYWJsZV9idWlsZGRpcl9zZWQiID4mNQorJGFzX2VjaG8gIiRheF9lbmFibGVfYnVpbGRkaXJfc2VkIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2F4X2VuYWJsZV9idWlsZGRpcl9hdXhkaXI9IiRhbV9hdXhfZGlyIgorYWNfY29uZmlnX2NvbW1hbmRzPSIkYWNfY29uZmlnX2NvbW1hbmRzIGJ1aWxkaXIiCisKKwogYW1fX2FwaV92ZXJzaW9uPScxLjExJwogCiAjIEZpbmQgYSBnb29kIGluc3RhbGwgcHJvZ3JhbS4gIFdlIHByZWZlciBhIEMgcHJvZ3JhbSAoZmFzdGVyKSwKQEAgLTI3MjMsNyArMjc4Miw3IEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhIEJTRC1jb21wYXRpYmxlIGluc3RhbGwiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbC4uLiAiID4mNjsgfQogaWYgdGVzdCAteiAiJElOU1RBTEwiOyB0aGVuCi1pZiB0ZXN0ICIke2FjX2N2X3BhdGhfaW5zdGFsbCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3BhdGhfaW5zdGFsbCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKQEAgLTI4MTAsMTEgKzI4NjksMTEgQEAKICcKIGNhc2UgYHB3ZGAgaW4KICAgKltcXFwiXCNcJFwmXCdcYCRhbV9sZl0qKQotICAgIGFzX2ZuX2Vycm9yICJ1bnNhZmUgYWJzb2x1dGUgd29ya2luZyBkaXJlY3RvcnkgbmFtZSIgIiRMSU5FTk8iIDU7OworICAgIGFzX2ZuX2Vycm9yICQ/ICJ1bnNhZmUgYWJzb2x1dGUgd29ya2luZyBkaXJlY3RvcnkgbmFtZSIgIiRMSU5FTk8iIDU7OwogZXNhYwogY2FzZSAkc3JjZGlyIGluCiAgICpbXFxcIlwjXCRcJlwnXGAkYW1fbGZcIFwJXSopCi0gICAgYXNfZm5fZXJyb3IgInVuc2FmZSBzcmNkaXIgdmFsdWU6IFxgJHNyY2RpciciICIkTElORU5PIiA1OzsKKyAgICBhc19mbl9lcnJvciAkPyAidW5zYWZlIHNyY2RpciB2YWx1ZTogXGAkc3JjZGlyJyIgIiRMSU5FTk8iIDU7OwogZXNhYwogCiAjIERvIGBzZXQnIGluIGEgc3Vic2hlbGwgc28gd2UgZG9uJ3QgY2xvYmJlciB0aGUgY3VycmVudCBzaGVsbCdzCkBAIC0yODM2LDcgKzI4OTUsNyBAQAogICAgICAgIyBpZiwgZm9yIGluc3RhbmNlLCBDT05GSUdfU0hFTEwgaXMgYmFzaCBhbmQgaXQgaW5oZXJpdHMgYQogICAgICAgIyBicm9rZW4gbHMgYWxpYXMgZnJvbSB0aGUgZW52aXJvbm1lbnQuICBUaGlzIGhhcyBhY3R1YWxseQogICAgICAgIyBoYXBwZW5lZC4gIFN1Y2ggYSBzeXN0ZW0gY291bGQgbm90IGJlIGNvbnNpZGVyZWQgInNhbmUiLgotICAgICAgYXNfZm5fZXJyb3IgImxzIC10IGFwcGVhcnMgdG8gZmFpbC4gIE1ha2Ugc3VyZSB0aGVyZSBpcyBub3QgYSBicm9rZW4KKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJscyAtdCBhcHBlYXJzIHRvIGZhaWwuICBNYWtlIHN1cmUgdGhlcmUgaXMgbm90IGEgYnJva2VuCiBhbGlhcyBpbiB5b3VyIGVudmlyb25tZW50IiAiJExJTkVOTyIgNQogICAgZmkKIApAQCAtMjg0Niw3ICsyOTA1LDcgQEAKICAgICMgT2suCiAgICA6CiBlbHNlCi0gICBhc19mbl9lcnJvciAibmV3bHkgY3JlYXRlZCBmaWxlIGlzIG9sZGVyIHRoYW4gZGlzdHJpYnV0ZWQgZmlsZXMhCisgICBhc19mbl9lcnJvciAkPyAibmV3bHkgY3JlYXRlZCBmaWxlIGlzIG9sZGVyIHRoYW4gZGlzdHJpYnV0ZWQgZmlsZXMhCiBDaGVjayB5b3VyIHN5c3RlbSBjbG9jayIgIiRMSU5FTk8iIDUKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKQEAgLTI4NjEsOSArMjkyMCw2IEBACiBhY19zY3JpcHQ9J3MvW1xcJF0vJiYvZztzLztzLHgseCwkLy8nCiBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPWAkYXNfZWNobyAiJHByb2dyYW1fdHJhbnNmb3JtX25hbWUiIHwgc2VkICIkYWNfc2NyaXB0ImAKIAotIyBleHBhbmQgJGFjX2F1eF9kaXIgdG8gYW4gYWJzb2x1dGUgcGF0aAotYW1fYXV4X2Rpcj1gY2QgJGFjX2F1eF9kaXIgJiYgcHdkYAotCiBpZiB0ZXN0IHgiJHtNSVNTSU5HK3NldH0iICE9IHhzZXQ7IHRoZW4KICAgY2FzZSAkYW1fYXV4X2RpciBpbgogICAqXCAqIHwgKlwJKikKQEAgLTI5MDAsNyArMjk1Niw3IEBACiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfU1RSSVArc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX1NUUklQKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJFNUUklQIjsgdGhlbgpAQCAtMjk0MCw3ICsyOTk2LDcgQEAKIHNldCBkdW1teSBzdHJpcDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfU1RSSVArc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X1NUUklQKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X1NUUklQIjsgdGhlbgpAQCAtMjk5Myw3ICszMDQ5LDcgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGEgdGhyZWFkLXNhZmUgbWtkaXIgLXAiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGEgdGhyZWFkLXNhZmUgbWtkaXIgLXAuLi4gIiA+JjY7IH0KIGlmIHRlc3QgLXogIiRNS0RJUl9QIjsgdGhlbgotICBpZiB0ZXN0ICIke2FjX2N2X3BhdGhfbWtkaXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBpZiAke2FjX2N2X3BhdGhfbWtkaXIrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCkBAIC0zMDQ0LDcgKzMxMDAsNyBAQAogc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BV0src2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX0FXSys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRBV0siOyB0aGVuCkBAIC0zMDg0LDcgKzMxNDAsNyBAQAogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0cyBcJChNQUtFKS4uLiAiID4mNjsgfQogc2V0IHggJHtNQUtFLW1ha2V9CiBhY19tYWtlPWAkYXNfZWNobyAiJDIiIHwgc2VkICdzLysvcC9nOyBzL1teYS16QS1aMC05X10vXy9nJ2AKLWlmIHsgYXNfdmFyPWFjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldDsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0fVwiID0gc2V0IjsgfTsgdGhlbiA6CitpZiBldmFsIFwke2FjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCA+Y29uZnRlc3QubWFrZSA8PFxfQUNFT0YKQEAgLTMwOTIsNyArMzE0OCw3IEBACiBhbGw6CiAJQGVjaG8gJ0BAQCUlJT0kKE1BS0UpPUBAQCUlJScKIF9BQ0VPRgotIyBHTlUgbWFrZSBzb21ldGltZXMgcHJpbnRzICJtYWtlWzFdOiBFbnRlcmluZy4uLiIsIHdoaWNoIHdvdWxkIGNvbmZ1c2UgdXMuCisjIEdOVSBtYWtlIHNvbWV0aW1lcyBwcmludHMgIm1ha2VbMV06IEVudGVyaW5nIC4uLiIsIHdoaWNoIHdvdWxkIGNvbmZ1c2UgdXMuCiBjYXNlIGAke01BS0UtbWFrZX0gLWYgY29uZnRlc3QubWFrZSAyPi9kZXYvbnVsbGAgaW4KICAgKkBAQCUlJT0/Kj1AQEAlJSUqKQogICAgIGV2YWwgYWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0PXllczs7CkBAIC0zMTI2LDcgKzMxODIsNyBAQAogICBhbV9faXNyYz0nIC1JJChzcmNkaXIpJwogICAjIHRlc3QgdG8gc2VlIGlmIHNyY2RpciBhbHJlYWR5IGNvbmZpZ3VyZWQKICAgaWYgdGVzdCAtZiAkc3JjZGlyL2NvbmZpZy5zdGF0dXM7IHRoZW4KLSAgICBhc19mbl9lcnJvciAic291cmNlIGRpcmVjdG9yeSBhbHJlYWR5IGNvbmZpZ3VyZWQ7IHJ1biBcIm1ha2UgZGlzdGNsZWFuXCIgdGhlcmUgZmlyc3QiICIkTElORU5PIiA1CisgICAgYXNfZm5fZXJyb3IgJD8gInNvdXJjZSBkaXJlY3RvcnkgYWxyZWFkeSBjb25maWd1cmVkOyBydW4gXCJtYWtlIGRpc3RjbGVhblwiIHRoZXJlIGZpcnN0IiAiJExJTkVOTyIgNQogICBmaQogZmkKIApAQCAtMzE0Miw3ICszMTk4LDcgQEAKIAogIyBEZWZpbmUgdGhlIGlkZW50aXR5IG9mIHRoZSBwYWNrYWdlLgogIFBBQ0tBR0U9J2xpYmZmaScKLSBWRVJTSU9OPSczLjAuMTByYzAnCisgVkVSU0lPTj0nMy4wLjExJwogCiAKIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKQEAgLTMxNzIsMTEgKzMyMjgsMTEgQEAKIAogIyBXZSBuZWVkIGF3ayBmb3IgdGhlICJjaGVjayIgdGFyZ2V0LiAgVGhlIHN5c3RlbSAiYXdrIiBpcyBiYWQgb24KICMgc29tZSBwbGF0Zm9ybXMuCi0jIEFsd2F5cyBkZWZpbmUgQU1UQVIgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCisjIEFsd2F5cyBkZWZpbmUgQU1UQVIgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuICBZZXMsIGl0J3Mgc3RpbGwgdXNlZAorIyBpbiB0aGUgd2lsZCA6LSggIFdlIHNob3VsZCBmaW5kIGEgcHJvcGVyIHdheSB0byBkZXByZWNhdGUgaXQgLi4uCitBTVRBUj0nJCR7VEFSLXRhcn0nCiAKLUFNVEFSPSR7QU1UQVItIiR7YW1fbWlzc2luZ19ydW59dGFyIn0KLQotYW1fX3Rhcj0nJHtBTVRBUn0gY2hvZiAtICIkJHRhcmRpciInOyBhbV9fdW50YXI9JyR7QU1UQVJ9IHhmIC0nCithbV9fdGFyPSckJHtUQVItdGFyfSBjaG9mIC0gIiQkdGFyZGlyIicgYW1fX3VudGFyPSckJHtUQVItdGFyfSB4ZiAtJwogCiAKIApAQCAtMzE4Nyw5ICszMjQzLDEyIEBACiAjIFdlIG11c3QgZm9yY2UgQ0MgdG8gL25vdC8gYmUgcHJlY2lvdXMgdmFyaWFibGVzOyBvdGhlcndpc2UKICMgdGhlIHdyb25nLCBub24tbXVsdGlsaWItYWRqdXN0ZWQgdmFsdWUgd2lsbCBiZSB1c2VkIGluIG11bHRpbGlicy4KICMgQXMgYSBzaWRlIGVmZmVjdCwgd2UgaGF2ZSB0byBzdWJzdCBDRkxBR1Mgb3Vyc2VsdmVzLgorIyBBbHNvIHNhdmUgYW5kIHJlc3RvcmUgQ0ZMQUdTLCBzaW5jZSBBQ19QUk9HX0NDIHdpbGwgY29tZSB1cCB3aXRoCisjIGRlZmF1bHRzIG9mIGl0cyBvd24gaWYgbm9uZSBhcmUgcHJvdmlkZWQuCiAKIAogCitzYXZlX0NGTEFHUz0kQ0ZMQUdTCiBhY19leHQ9YwogYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKIGFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKQEAgLTMyMDAsNyArMzI1OSw3IEBACiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1nY2M7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KQEAgLTMyNDAsNyArMzI5OSw3IEBACiBzZXQgZHVtbXkgZ2NjOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9DQytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfQ0MrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCkBAIC0zMjkzLDcgKzMzNTIsNyBAQAogc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9Y2M7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KQEAgLTMzMzMsNyArMzM5Miw3IEBACiBzZXQgZHVtbXkgY2M7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KQEAgLTMzOTIsNyArMzQ1MSw3IEBACiBzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KQEAgLTM0MzYsNyArMzQ5NSw3IEBACiBzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0NDK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9DQys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KQEAgLTM0OTAsOCArMzU0OSw4IEBACiAKIHRlc3QgLXogIiRDQyIgJiYgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciAibm8gYWNjZXB0YWJsZSBDIGNvbXBpbGVyIGZvdW5kIGluIFwkUEFUSAotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iICIkTElORU5PIiA1OyB9Cithc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBDIGNvbXBpbGVyIGZvdW5kIGluIFwkUEFUSAorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KIAogIyBQcm92aWRlIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXBpbGVyLgogJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgdmVyc2lvbiIgPiY1CkBAIC0zNjA1LDkgKzM2NjQsOCBAQAogCiB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLXsgYXNfZm5fc2V0X3N0YXR1cyA3NwotYXNfZm5fZXJyb3IgIkMgY29tcGlsZXIgY2Fubm90IGNyZWF0ZSBleGVjdXRhYmxlcwotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iICIkTElORU5PIiA1OyB9OyB9Cithc19mbl9lcnJvciA3NyAiQyBjb21waWxlciBjYW5ub3QgY3JlYXRlIGV4ZWN1dGFibGVzCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogZWxzZQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKICRhc19lY2hvICJ5ZXMiID4mNjsgfQpAQCAtMzY0OSw4ICszNzA3LDggQEAKIGVsc2UKICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciAiY2Fubm90IGNvbXB1dGUgc3VmZml4IG9mIGV4ZWN1dGFibGVzOiBjYW5ub3QgY29tcGlsZSBhbmQgbGluawotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iICIkTElORU5PIiA1OyB9Cithc19mbl9lcnJvciAkPyAiY2Fubm90IGNvbXB1dGUgc3VmZml4IG9mIGV4ZWN1dGFibGVzOiBjYW5ub3QgY29tcGlsZSBhbmQgbGluaworU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KIGZpCiBybSAtZiBjb25mdGVzdCBjb25mdGVzdCRhY19jdl9leGVleHQKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZXhlZXh0IiA+JjUKQEAgLTM3MDcsOSArMzc2NSw5IEBACiAgICAgZWxzZQogCXsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQogJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQotYXNfZm5fZXJyb3IgImNhbm5vdCBydW4gQyBjb21waWxlZCBwcm9ncmFtcy4KK2FzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgcnVuIEMgY29tcGlsZWQgcHJvZ3JhbXMuCiBJZiB5b3UgbWVhbnQgdG8gY3Jvc3MgY29tcGlsZSwgdXNlIFxgLS1ob3N0Jy4KLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiAiJExJTkVOTyIgNTsgfQorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KICAgICBmaQogICBmaQogZmkKQEAgLTM3MjAsNyArMzc3OCw3IEBACiBhY19jbGVhbl9maWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3VmZml4IG9mIG9iamVjdCBmaWxlcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3Igc3VmZml4IG9mIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9vYmpleHQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9vYmpleHQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC0zNzYwLDggKzM4MTgsOCBAQAogCiB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yICJjYW5ub3QgY29tcHV0ZSBzdWZmaXggb2Ygb2JqZWN0IGZpbGVzOiBjYW5ub3QgY29tcGlsZQotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iICIkTElORU5PIiA1OyB9Cithc19mbl9lcnJvciAkPyAiY2Fubm90IGNvbXB1dGUgc3VmZml4IG9mIG9iamVjdCBmaWxlczogY2Fubm90IGNvbXBpbGUKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CiBmaQogcm0gLWYgY29uZnRlc3QuJGFjX2N2X29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiBmaQpAQCAtMzc3MSw3ICszODI5LDcgQEAKIGFjX29iamV4dD0kT0JKRVhUCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxlciIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyB0aGUgR05VIEMgY29tcGlsZXIuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfY19jb21waWxlcl9nbnUrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9jX2NvbXBpbGVyX2dudSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTM4MDgsNyArMzg2Niw3IEBACiBhY19zYXZlX0NGTEFHUz0kQ0ZMQUdTCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgJENDIGFjY2VwdHMgLWciID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAkQ0MgYWNjZXB0cyAtZy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2NjX2crc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2NjX2crOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhY19zYXZlX2Nfd2Vycm9yX2ZsYWc9JGFjX2Nfd2Vycm9yX2ZsYWcKQEAgLTM4ODYsNyArMzk0NCw3IEBACiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJENDIG9wdGlvbiB0byBhY2NlcHQgSVNPIEM4OSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJENDIG9wdGlvbiB0byBhY2NlcHQgSVNPIEM4OS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2NjX2M4OStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfY2NfYzg5Kzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgYWNfY3ZfcHJvZ19jY19jODk9bm8KQEAgLTQwMzIsNiArNDA5MCw3IEBACiBpZiB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm87IHRoZW4KICAgYW1fZGVwY29tcD0iJGFjX2F1eF9kaXIvZGVwY29tcCIKICAgQU1ERVBCQUNLU0xBU0g9J1wnCisgIGFtX19ub2RlcD0nX25vJwogZmkKICBpZiB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm87IHRoZW4KICAgQU1ERVBfVFJVRT0KQEAgLTQwNDcsNyArNDEwNiw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZGVwZW5kZW5jeSBzdHlsZSBvZiAkZGVwY2MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZGVwZW5kZW5jeSBzdHlsZSBvZiAkZGVwY2MuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YW1fY3ZfQ0NfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthbV9jdl9DQ19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLXogIiRBTURFUF9UUlVFIiAmJiB0ZXN0IC1mICIkYW1fZGVwY29tcCI7IHRoZW4KQEAgLTQwNTYsNiArNDExNSw3IEBACiAgICMgaW5zdGFuY2UgaXQgd2FzIHJlcG9ydGVkIHRoYXQgb24gSFAtVVggdGhlIGdjYyB0ZXN0IHdpbGwgZW5kIHVwCiAgICMgbWFraW5nIGEgZHVtbXkgZmlsZSBuYW1lZCBgRCcgLS0gYmVjYXVzZSBgLU1EJyBtZWFucyBgcHV0IHRoZSBvdXRwdXQKICAgIyBpbiBEJy4KKyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcgogICBta2RpciBjb25mdGVzdC5kaXIKICAgIyBDb3B5IGRlcGNvbXAgdG8gc3ViZGlyIGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIHdvbid0IGZpbmQgaXQgaWYgd2UncmUKICAgIyB1c2luZyBhIHJlbGF0aXZlIGRpcmVjdG9yeS4KQEAgLTQxMTUsNyArNDE3NSw3IEBACiAJYnJlYWsKICAgICAgIGZpCiAgICAgICA7OwotICAgIG1zdmlzdWFsY3BwIHwgbXN2Y21zeXMpCisgICAgbXN2YzcgfCBtc3ZjN21zeXMgfCBtc3Zpc3VhbGNwcCB8IG1zdmNtc3lzKQogICAgICAgIyBUaGlzIGNvbXBpbGVyIHdvbid0IGdyb2sgYC1jIC1vJywgYnV0IGFsc28sIHRoZSBtaW51c28gdGVzdCBoYXMKICAgICAgICMgbm90IHJ1biB5ZXQuICBUaGVzZSBkZXBtb2RlcyBhcmUgbGF0ZSBlbm91Z2ggaW4gdGhlIGdhbWUsIGFuZAogICAgICAgIyBzbyB3ZWFrIHRoYXQgdGhlaXIgZnVuY3Rpb25pbmcgc2hvdWxkIG5vdCBiZSBpbXBhY3RlZC4KQEAgLTQxNzAsNiArNDIzMCw3IEBACiBmaQogCiAKK0NGTEFHUz0kc2F2ZV9DRkxBR1MKIAogCiAKQEAgLTQxODYsNyArNDI0Nyw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZGVwZW5kZW5jeSBzdHlsZSBvZiAkZGVwY2MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZGVwZW5kZW5jeSBzdHlsZSBvZiAkZGVwY2MuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YW1fY3ZfQ0NBU19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FtX2N2X0NDQVNfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGUrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC16ICIkQU1ERVBfVFJVRSIgJiYgdGVzdCAtZiAiJGFtX2RlcGNvbXAiOyB0aGVuCkBAIC00MTk1LDYgKzQyNTYsNyBAQAogICAjIGluc3RhbmNlIGl0IHdhcyByZXBvcnRlZCB0aGF0IG9uIEhQLVVYIHRoZSBnY2MgdGVzdCB3aWxsIGVuZCB1cAogICAjIG1ha2luZyBhIGR1bW15IGZpbGUgbmFtZWQgYEQnIC0tIGJlY2F1c2UgYC1NRCcgbWVhbnMgYHB1dCB0aGUgb3V0cHV0CiAgICMgaW4gRCcuCisgIHJtIC1yZiBjb25mdGVzdC5kaXIKICAgbWtkaXIgY29uZnRlc3QuZGlyCiAgICMgQ29weSBkZXBjb21wIHRvIHN1YmRpciBiZWNhdXNlIG90aGVyd2lzZSB3ZSB3b24ndCBmaW5kIGl0IGlmIHdlJ3JlCiAgICMgdXNpbmcgYSByZWxhdGl2ZSBkaXJlY3RvcnkuCkBAIC00MjUyLDcgKzQzMTQsNyBAQAogCWJyZWFrCiAgICAgICBmaQogICAgICAgOzsKLSAgICBtc3Zpc3VhbGNwcCB8IG1zdmNtc3lzKQorICAgIG1zdmM3IHwgbXN2Yzdtc3lzIHwgbXN2aXN1YWxjcHAgfCBtc3ZjbXN5cykKICAgICAgICMgVGhpcyBjb21waWxlciB3b24ndCBncm9rIGAtYyAtbycsIGJ1dCBhbHNvLCB0aGUgbWludXNvIHRlc3QgaGFzCiAgICAgICAjIG5vdCBydW4geWV0LiAgVGhlc2UgZGVwbW9kZXMgYXJlIGxhdGUgZW5vdWdoIGluIHRoZSBnYW1lLCBhbmQKICAgICAgICMgc28gd2VhayB0aGF0IHRoZWlyIGZ1bmN0aW9uaW5nIHNob3VsZCBub3QgYmUgaW1wYWN0ZWQuCkBAIC00MzE2LDcgKzQzNzgsNyBAQAogZmkKIHNldCBkdW1teSAkQ0M7IGFjX2NjPWAkYXNfZWNobyAiJDIiIHwKIAkJICAgICAgc2VkICdzL1teYS16QS1aMC05X10vXy9nO3MvXlswLTldL18vJ2AKLWlmIHsgYXNfdmFyPWFjX2N2X3Byb2dfY2NfJHthY19jY31fY19vOyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoKK2lmIGV2YWwgXCR7YWNfY3ZfcHJvZ19jY18ke2FjX2NjfV9jX28rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC00NDQxLDggKzQ1MDMsOCBAQAogCiAKIAotbWFjcm9fdmVyc2lvbj0nMi4yLjYnCi1tYWNyb19yZXZpc2lvbj0nMS4zMDEyJworbWFjcm9fdmVyc2lvbj0nMi40LjInCittYWNyb19yZXZpc2lvbj0nMS4zMzM3JwogCiAKIApAQCAtNDQ1OCw5ICs0NTIwLDc4IEBACiAKIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgogCisjIEJhY2tzbGFzaGlmeSBtZXRhY2hhcmFjdGVycyB0aGF0IGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluCisjIGRvdWJsZS1xdW90ZWQgc3RyaW5ncy4KK3NlZF9xdW90ZV9zdWJzdD0ncy9cKFsiYCRcXF1cKS9cXFwxL2cnCisKKyMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgorZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woWyJgXFxdXCkvXFxcMS9nJworCisjIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2hlbGwgdmFyaWFibGUgaW4gYQorIyBkb3VibGVfcXVvdGVfc3Vic3QnZWQgc3RyaW5nLgorZGVsYXlfdmFyaWFibGVfc3Vic3Q9J3MvXFxcXFxcXFxcXFwkL1xcXFxcXCQvZycKKworIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGRlbGF5IGV4cGFuc2lvbiBvZiBhbiBlc2NhcGVkIHNpbmdsZSBxdW90ZS4KK2RlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdD0ncy8nXCcnLydcJ1xcXFxcXFwnXCcnL2cnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0byBhdm9pZCBhY2NpZGVudGFsIGdsb2JiaW5nIGluIGV2YWxlZCBleHByZXNzaW9ucworbm9fZ2xvYl9zdWJzdD0ncy9cKi9cXFwqL2cnCisKK0VDSE89J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwnCitFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KK0VDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KKyMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgoraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICBFQ0hPPSdwcmludCAtciAtLScKK2VsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgIEVDSE89J3ByaW50ZiAlc1xuJworZWxzZQorICAjIFVzZSB0aGlzIGZ1bmN0aW9uIGFzIGEgZmFsbGJhY2sgdGhhdCBhbHdheXMgd29ya3MuCisgIGZ1bmNfZmFsbGJhY2tfZWNobyAoKQorICB7CisgICAgZXZhbCAnY2F0IDw8X0xURUNIT19FT0YKKyQxCitfTFRFQ0hPX0VPRicKKyAgfQorICBFQ0hPPSdmdW5jX2ZhbGxiYWNrX2VjaG8nCitmaQorCisjIGZ1bmNfZWNob19hbGwgYXJnLi4uCisjIEludm9rZSAkRUNITyB3aXRoIGFsbCBhcmdzLCBzcGFjZS1zZXBhcmF0ZWQuCitmdW5jX2VjaG9fYWxsICgpCit7CisgICAgJEVDSE8gIiIKK30KKworY2FzZSAiJEVDSE8iIGluCisgIHByaW50ZiopIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBwcmludGYiID4mNQorJGFzX2VjaG8gInByaW50ZiIgPiY2OyB9IDs7CisgIHByaW50KikgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHByaW50IC1yIiA+JjUKKyRhc19lY2hvICJwcmludCAtciIgPiY2OyB9IDs7CisgICopIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBjYXQiID4mNQorJGFzX2VjaG8gImNhdCIgPiY2OyB9IDs7Citlc2FjCisKKworCisKKworCisKKworCisKKworCisKKwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYSBzZWQgdGhhdCBkb2VzIG5vdCB0cnVuY2F0ZSBvdXRwdXQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGEgc2VkIHRoYXQgZG9lcyBub3QgdHJ1bmNhdGUgb3V0cHV0Li4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3BhdGhfU0VEK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcGF0aF9TRUQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICAgICAgICAgICAgYWNfc2NyaXB0PXMvYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEvYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiLwpAQCAtNDUxNSw3ICs0NjQ2LDcgQEAKICAgZG9uZQogSUZTPSRhc19zYXZlX0lGUwogICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9TRUQiOyB0aGVuCi0gICAgYXNfZm5fZXJyb3IgIm5vIGFjY2VwdGFibGUgc2VkIGNvdWxkIGJlIGZvdW5kIGluIFwkUEFUSCIgIiRMSU5FTk8iIDUKKyAgICBhc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBzZWQgY291bGQgYmUgZm91bmQgaW4gXCRQQVRIIiAiJExJTkVOTyIgNQogICBmaQogZWxzZQogICBhY19jdl9wYXRoX1NFRD0kU0VECkBAIC00NTQyLDcgKzQ2NzMsNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBncmVwIHRoYXQgaGFuZGxlcyBsb25nIGxpbmVzIGFuZCAtZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZ3JlcCB0aGF0IGhhbmRsZXMgbG9uZyBsaW5lcyBhbmQgLWUuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9HUkVQK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcGF0aF9HUkVQKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAteiAiJEdSRVAiOyB0aGVuCkBAIC00NTkxLDcgKzQ3MjIsNyBAQAogICBkb25lCiBJRlM9JGFzX3NhdmVfSUZTCiAgIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX0dSRVAiOyB0aGVuCi0gICAgYXNfZm5fZXJyb3IgIm5vIGFjY2VwdGFibGUgZ3JlcCBjb3VsZCBiZSBmb3VuZCBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4iICIkTElORU5PIiA1CisgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgZ3JlcCBjb3VsZCBiZSBmb3VuZCBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4iICIkTElORU5PIiA1CiAgIGZpCiBlbHNlCiAgIGFjX2N2X3BhdGhfR1JFUD0kR1JFUApAQCAtNDYwNSw3ICs0NzM2LDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZWdyZXAiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGVncmVwLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3BhdGhfRUdSRVArc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wYXRoX0VHUkVQKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgZWNobyBhIHwgJEdSRVAgLUUgJyhhfGIpJyA+L2Rldi9udWxsIDI+JjEKQEAgLTQ2NTcsNyArNDc4OCw3IEBACiAgIGRvbmUKIElGUz0kYXNfc2F2ZV9JRlMKICAgaWYgdGVzdCAteiAiJGFjX2N2X3BhdGhfRUdSRVAiOyB0aGVuCi0gICAgYXNfZm5fZXJyb3IgIm5vIGFjY2VwdGFibGUgZWdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluIiAiJExJTkVOTyIgNQorICAgIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIGVncmVwIGNvdWxkIGJlIGZvdW5kIGluICRQQVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2JpbiIgIiRMSU5FTk8iIDUKICAgZmkKIGVsc2UKICAgYWNfY3ZfcGF0aF9FR1JFUD0kRUdSRVAKQEAgLTQ2NzIsNyArNDgwMyw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGZncmVwIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBmZ3JlcC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wYXRoX0ZHUkVQK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcGF0aF9GR1JFUCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIGVjaG8gJ2FiKmMnIHwgJEdSRVAgLUYgJ2FiKmMnID4vZGV2L251bGwgMj4mMQpAQCAtNDcyNCw3ICs0ODU1LDcgQEAKICAgZG9uZQogSUZTPSRhc19zYXZlX0lGUwogICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9GR1JFUCI7IHRoZW4KLSAgICBhc19mbl9lcnJvciAibm8gYWNjZXB0YWJsZSBmZ3JlcCBjb3VsZCBiZSBmb3VuZCBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4iICIkTElORU5PIiA1CisgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgZmdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluIiAiJExJTkVOTyIgNQogICBmaQogZWxzZQogICBhY19jdl9wYXRoX0ZHUkVQPSRGR1JFUApAQCAtNDgwMyw3ICs0OTM0LDcgQEAKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igbm9uLUdOVSBsZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3Igbm9uLUdOVSBsZC4uLiAiID4mNjsgfQogZmkKLWlmIHRlc3QgIiR7bHRfY3ZfcGF0aF9MRCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X3BhdGhfTEQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC16ICIkTEQiOyB0aGVuCkBAIC00ODQwLDEwICs0OTcxLDEwIEBACiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiAkYXNfZWNobyAibm8iID4mNjsgfQogZmkKLXRlc3QgLXogIiRMRCIgJiYgYXNfZm5fZXJyb3IgIm5vIGFjY2VwdGFibGUgbGQgZm91bmQgaW4gXCRQQVRIIiAiJExJTkVOTyIgNQordGVzdCAteiAiJExEIiAmJiBhc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBsZCBmb3VuZCBpbiBcJFBBVEgiICIkTElORU5PIiA1CiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmIHRoZSBsaW5rZXIgKCRMRCkgaXMgR05VIGxkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGlmIHRoZSBsaW5rZXIgKCRMRCkgaXMgR05VIGxkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X3Byb2dfZ251X2xkK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfcHJvZ19nbnVfbGQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICAjIEknZCByYXRoZXIgdXNlIC0tdmVyc2lvbiBoZXJlLCBidXQgYXBwYXJlbnRseSBzb21lIEdOVSBsZHMgb25seSBhY2NlcHQgLXYuCkBAIC00ODcwLDcgKzUwMDEsNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBCU0QtIG9yIE1TLWNvbXBhdGlibGUgbmFtZSBsaXN0ZXIgKG5tKSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgQlNELSBvciBNUy1jb21wYXRpYmxlIG5hbWUgbGlzdGVyIChubSkuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfcGF0aF9OTStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X3BhdGhfTk0rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkTk0iOyB0aGVuCkBAIC00OTIzLDE0ICs1MDU0LDE3IEBACiAgIE5NPSIkbHRfY3ZfcGF0aF9OTSIKIGVsc2UKICAgIyBEaWRuJ3QgZmluZCBhbnkgQlNEIGNvbXBhdGlibGUgbmFtZSBsaXN0ZXIsIGxvb2sgZm9yIGR1bXBiaW4uCi0gIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgZm9yIGFjX3Byb2cgaW4gImR1bXBiaW4gLXN5bWJvbHMiICJsaW5rIC1kdW1wIC1zeW1ib2xzIgorICBpZiB0ZXN0IC1uICIkRFVNUEJJTiI7IHRoZW4gOgorICAgICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorICBlbHNlCisgICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICBmb3IgYWNfcHJvZyBpbiBkdW1wYmluICJsaW5rIC1kdW1wIgogICBkbwogICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19EVU1QQklOK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19EVU1QQklOKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJERVTVBCSU4iOyB0aGVuCkBAIC00OTY4LDEzICs1MTAyLDEzIEBACiBmaQogaWYgdGVzdCAteiAiJERVTVBCSU4iOyB0aGVuCiAgIGFjX2N0X0RVTVBCSU49JERVTVBCSU4KLSAgZm9yIGFjX3Byb2cgaW4gImR1bXBiaW4gLXN5bWJvbHMiICJsaW5rIC1kdW1wIC1zeW1ib2xzIgorICBmb3IgYWNfcHJvZyBpbiBkdW1wYmluICJsaW5rIC1kdW1wIgogZG8KICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RVTVBCSU4rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X0RVTVBCSU4rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfRFVNUEJJTiI7IHRoZW4KQEAgLTUwMjMsNiArNTE1NywxNSBAQAogICBmaQogZmkKIAorICAgIGNhc2UgYCREVU1QQklOIC1zeW1ib2xzIC9kZXYvbnVsbCAyPiYxIHwgc2VkICcxcSdgIGluCisgICAgKkNPRkYqKQorICAgICAgRFVNUEJJTj0iJERVTVBCSU4gLXN5bWJvbHMiCisgICAgICA7OworICAgICopCisgICAgICBEVU1QQklOPToKKyAgICAgIDs7CisgICAgZXNhYworICBmaQogCiAgIGlmIHRlc3QgIiREVU1QQklOIiAhPSAiOiI7IHRoZW4KICAgICBOTT0iJERVTVBCSU4iCkBAIC01MDM3LDE4ICs1MTgwLDE4IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgdGhlIG5hbWUgbGlzdGVyICgkTk0pIGludGVyZmFjZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB0aGUgbmFtZSBsaXN0ZXIgKCROTSkgaW50ZXJmYWNlLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X25tX2ludGVyZmFjZStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X25tX2ludGVyZmFjZSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGx0X2N2X25tX2ludGVyZmFjZT0iQlNEIG5tIgogICBlY2hvICJpbnQgc29tZV92YXJpYWJsZSA9IDA7IiA+IGNvbmZ0ZXN0LiRhY19leHQKLSAgKGV2YWwgZWNobyAiXCJcJGFzX21lOjUwNDU6ICRhY19jb21waWxlXCIiID4mNSkKKyAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86ICRhY19jb21waWxlXCIiID4mNSkKICAgKGV2YWwgIiRhY19jb21waWxlIiAyPmNvbmZ0ZXN0LmVycikKICAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSAgKGV2YWwgZWNobyAiXCJcJGFzX21lOjUwNDg6ICROTSBcXFwiY29uZnRlc3QuJGFjX29iamV4dFxcXCJcIiIgPiY1KQorICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJE5NIFxcXCJjb25mdGVzdC4kYWNfb2JqZXh0XFxcIlwiIiA+JjUpCiAgIChldmFsICIkTk0gXCJjb25mdGVzdC4kYWNfb2JqZXh0XCIiIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0KQogICBjYXQgY29uZnRlc3QuZXJyID4mNQotICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6NTA1MTogb3V0cHV0XCIiID4mNSkKKyAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86IG91dHB1dFwiIiA+JjUpCiAgIGNhdCBjb25mdGVzdC5vdXQgPiY1CiAgIGlmICRHUkVQICdFeHRlcm5hbC4qc29tZV92YXJpYWJsZScgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCiAgICAgbHRfY3Zfbm1faW50ZXJmYWNlPSJNUyBkdW1wYmluIgpAQCAtNTA3Miw3ICs1MjE1LDcgQEAKICMgZmluZCB0aGUgbWF4aW11bSBsZW5ndGggb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB0aGUgbWF4aW11bSBsZW5ndGggb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB0aGUgbWF4aW11bSBsZW5ndGggb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9zeXNfbWF4X2NtZF9sZW4rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9zeXNfbWF4X2NtZF9sZW4rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICAgIGk9MApAQCAtNTEwNSw2ICs1MjQ4LDExIEBACiAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTgxOTI7CiAgICAgOzsKIAorICBtaW50KikKKyAgICAjIE9uIE1pTlQgdGhpcyBjYW4gdGFrZSBhIGxvbmcgdGltZSBhbmQgcnVuIG91dCBvZiBtZW1vcnkuCisgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTgxOTI7CisgICAgOzsKKwogICBhbWlnYW9zKikKICAgICAjIE9uIEFtaWdhT1Mgd2l0aCBwZGtzaCwgdGhpcyB0ZXN0IHRha2VzIGhvdXJzLCBsaXRlcmFsbHkuCiAgICAgIyBTbyB3ZSBqdXN0IHB1bnQgYW5kIHVzZSBhIG1pbmltdW0gbGluZSBsZW5ndGggb2YgODE5Mi4KQEAgLTUxMzAsNiArNTI3OCwxMSBAQAogICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj0xOTY2MDgKICAgICA7OwogCisgIG9zMiopCisgICAgIyBUaGUgdGVzdCB0YWtlcyBhIGxvbmcgdGltZSBvbiBPUy8yLgorICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj04MTkyCisgICAgOzsKKwogICBvc2YqKQogICAgICMgRHIuIEhhbnMgRWtrZWhhcmQgUGxlc3NlciByZXBvcnRzIHNlZWluZyBhIGtlcm5lbCBwYW5pYyBydW5uaW5nIGNvbmZpZ3VyZQogICAgICMgZHVlIHRvIHRoaXMgdGVzdCB3aGVuIGV4ZWNfZGlzYWJsZV9hcmdfbGltaXQgaXMgMSBvbiBUcnU2NC4gSXQgaXMgbm90CkBAIC01MTY5LDggKzUzMjIsOCBAQAogICAgICAgIyBJZiB0ZXN0IGlzIG5vdCBhIHNoZWxsIGJ1aWx0LWluLCB3ZSdsbCBwcm9iYWJseSBlbmQgdXAgY29tcHV0aW5nIGEKICAgICAgICMgbWF4aW11bSBsZW5ndGggdGhhdCBpcyBvbmx5IGhhbGYgb2YgdGhlIGFjdHVhbCBtYXhpbXVtIGxlbmd0aCwgYnV0CiAgICAgICAjIHdlIGNhbid0IHRlbGwuCi0gICAgICB3aGlsZSB7IHRlc3QgIlgiYCRTSEVMTCAkMCAtLWZhbGxiYWNrLWVjaG8gIlgkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIiAyPi9kZXYvbnVsbGAgXAotCSAgICAgICAgID0gIlhYJHRlc3RzdHJpbmckdGVzdHN0cmluZyI7IH0gPi9kZXYvbnVsbCAyPiYxICYmCisgICAgICB3aGlsZSB7IHRlc3QgIlgiYGVudiBlY2hvICIkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIiAyPi9kZXYvbnVsbGAgXAorCSAgICAgICAgID0gIlgkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIjsgfSA+L2Rldi9udWxsIDI+JjEgJiYKIAkgICAgICB0ZXN0ICRpICE9IDE3ICMgMS8yIE1CIHNob3VsZCBiZSBlbm91Z2gKICAgICAgIGRvCiAgICAgICAgIGk9YGV4cHIgJGkgKyAxYApAQCAtNTIxMiw4ICs1MzY1LDggQEAKICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCiB4c2lfc2hlbGw9bm8KICggX2x0X2R1bW15PSJhL2IvYyIKLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSAgICAgID0gYyxhL2IsLCBcCisgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisgICAgICA9IGMsYS9iLGIvYywgXAogICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAogICAmJiB4c2lfc2hlbGw9eWVzCkBAIC01MjYyLDkgKzU0MTUsODMgQEAKIAogCiAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQoraWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkaG9zdCBpbgorICAqLSotbWluZ3cqICkKKyAgICBjYXNlICRidWlsZCBpbgorICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgICAgICAgIDs7CisgICAgICAqLSotY3lnd2luKiApCisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorICAgICAgICA7OworICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKyAgICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKKyAgKi0qLWN5Z3dpbiogKQorICAgIGNhc2UgJGJ1aWxkIGluCisgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKyAgICAgICAgOzsKKyAgICAgICotKi1jeWd3aW4qICkKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisgICAgICAgIDs7CisgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorICAgICAgICA7OworICAgIGVzYWMKKyAgICA7OworICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorICAgIDs7Citlc2FjCisKK2ZpCisKK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1CiskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQorCisKKworCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9CitpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCitsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKK2Nhc2UgJGhvc3QgaW4KKyAgKi0qLW1pbmd3KiApCisgICAgY2FzZSAkYnVpbGQgaW4KKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICAgICAgICA7OworICAgIGVzYWMKKyAgICA7OworZXNhYworCitmaQorCit0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQorJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KKworCisKKworCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgbHRfY3ZfbGRfcmVsb2FkX2ZsYWc9Jy1yJwpAQCAtNTI3OCw2ICs1NTA1LDExIEBACiBlc2FjCiByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCiBjYXNlICRob3N0X29zIGluCisgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisgICAgZmkKKyAgICA7OwogICBkYXJ3aW4qKQogICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCkBAIC01MzAwLDcgKzU1MzIsNyBAQAogc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9b2JqZHVtcDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfT0JKRFVNUCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfT0JKRFVNUCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRPQkpEVU1QIjsgdGhlbgpAQCAtNTM0MCw3ICs1NTcyLDcgQEAKIHNldCBkdW1teSBvYmpkdW1wOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9PQkpEVU1QK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9PQkpEVU1QKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X09CSkRVTVAiOyB0aGVuCkBAIC01Mzk5LDcgKzU2MzEsNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byByZWNvZ25pemUgZGVwZW5kZW50IGxpYnJhcmllcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcmVjb2duaXplIGRlcGVuZGVudCBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckTUFHSUNfQ01EJwpAQCAtNTQ0MSwxNiArNTY3MywxOCBAQAogICAjIEJhc2UgTVNZUy9NaW5HVyBkbyBub3QgcHJvdmlkZSB0aGUgJ2ZpbGUnIGNvbW1hbmQgbmVlZGVkIGJ5CiAgICMgZnVuY193aW4zMl9saWJpZCBzaGVsbCBmdW5jdGlvbiwgc28gdXNlIGEgd2Vha2VyIHRlc3QgYmFzZWQgb24gJ29iamR1bXAnLAogICAjIHVubGVzcyB3ZSBmaW5kICdmaWxlJywgZm9yIGV4YW1wbGUgYmVjYXVzZSB3ZSBhcmUgY3Jvc3MtY29tcGlsaW5nLgotICBpZiAoIGZpbGUgLyApID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAjIGZ1bmNfd2luMzJfbGliaWQgYXNzdW1lcyBCU0Qgbm0sIHNvIGRpc2FsbG93IGl0IGlmIHVzaW5nIE1TIGR1bXBiaW4uCisgIGlmICggdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiQlNEIG5tIiAmJiBmaWxlIC8gKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwogICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwogICBlbHNlCi0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCiAgIGZpCiAgIDs7CiAKLWNlZ2NjKQorY2VnY2MqKQogICAjIHVzZSB0aGUgd2Vha2VyIHRlc3QgYmFzZWQgb24gJ29iamR1bXAnLiBTZWUgbWluZ3cqLgogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZS1hcm0tLipsaXR0bGUoLiphcmNoaXRlY3R1cmU6IGFybSk/JwogICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCkBAIC01NDgwLDYgKzU3MTQsMTAgQEAKICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKICAgOzsKIAoraGFpa3UqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCiBocHV4MTAuMjAqIHwgaHB1eDExKikKICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9L3Vzci9iaW4vZmlsZQogICBjYXNlICRob3N0X2NwdSBpbgpAQCAtNTQ4OCwxMSArNTcyNiwxMSBAQAogICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS91c3IvbGliL2hwdXgzMi9saWJjLnNvCiAgICAgOzsKICAgaHBwYSo2NCopCi0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbMC05XVswLTldWzAtOV18RUxGLVswLTldWzAtOV0pIHNoYXJlZCBvYmplY3QgZmlsZSAtIFBBLVJJU0MgWzAtOV0uWzAtOV0nCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbMC05XVswLTldWzAtOV18RUxGWyAtXVswLTldWzAtOV0pKC1iaXQpPyggW0xNXVNCKT8gc2hhcmVkIG9iamVjdCggZmlsZSk/WywgLV0qIFBBLVJJU0MgWzAtOV1cLlswLTldJwogICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS91c3IvbGliL3BhMjBfNjQvbGliYy5zbAogICAgIDs7CiAgICopCi0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbMC05XVswLTldWzAtOV18UEEtUklTQ1swLTldLlswLTldKSBzaGFyZWQgbGlicmFyeScKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1swLTldWzAtOV1bMC05XXxQQS1SSVNDWzAtOV1cLlswLTldKSBzaGFyZWQgbGlicmFyeScKICAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9saWJjLnNsCiAgICAgOzsKICAgZXNhYwpAQCAtNTUxMywxMiArNTc1MSwxMiBAQAogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogICA7OwogCi0jIFRoaXMgbXVzdCBiZSBMaW51eCBFTEYuCi1saW51eCogfCBrKmJzZCotZ251KQorIyBUaGlzIG11c3QgYmUgZ2xpYmMvRUxGLgorbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogICA7OwogCi1uZXRic2QqKQorbmV0YnNkKiB8IG5ldGJzZGVsZiotZ251KQogICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPiAvZGV2L251bGw7IHRoZW4KICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hfcGF0dGVybiAvbGliW14vXSsoXC5zb1wuWzAtOV0rXC5bMC05XSt8X3BpY1wuYSkkJwogICBlbHNlCkBAIC01NTk1LDYgKzU4MzMsMjEgQEAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQorCitmaWxlX21hZ2ljX2dsb2I9Cit3YW50X25vY2FzZWdsb2I9bm8KK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgbWluZ3cqIHwgcHczMiopCisgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworICAgIGVsc2UKKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCisgICAgZmkKKyAgICA7OworICBlc2FjCitmaQorCiBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAogdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCkBAIC01NjEwLDEyICs1ODYzLDE2NiBAQAogCiAKIAorCisKKworCisKKworCisKKworCiBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAoraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1CiskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCisgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAoraWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1CiskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKyAgICBETExUT09MPSJmYWxzZSIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisgIGZpCitlbHNlCisgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCitmaQorCit0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisKKworCisKKworCisKKworCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CitpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCisKK2Nhc2UgJGhvc3Rfb3MgaW4KK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgorICAqLS1pZGVudGlmeS1zdHJpY3QqKQorICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorICAgIDs7CisgICopCisgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisgICAgOzsKKyAgZXNhYworICA7OworKikKKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKyAgOzsKK2VzYWMKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQorJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9CitzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKworCisKKworCisKKworCitpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgIGZvciBhY19wcm9nIGluIGFyCisgIGRvCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJEFSIjsgdGhlbgpAQCAtNTYyOCw3ICs2MDM1LDcgQEAKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgogICBmaQpAQCAtNTY0OCwxNCArNjA1NSwxOCBAQAogZmkKIAogCisgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworICBkb25lCiBmaQotaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCitpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCiAgIGFjX2N0X0FSPSRBUgotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgorICBmb3IgYWNfcHJvZyBpbiBhcgorZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRhY19jdF9BUiI7IHRoZW4KQEAgLTU2NjgsNyArNjA3OSw3IEBACiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCiAgIGZpCkBAIC01Njg3LDYgKzYwOTgsMTAgQEAKICRhc19lY2hvICJubyIgPiY2OyB9CiBmaQogCisKKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhaworZG9uZQorCiAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgogICAgIEFSPSJmYWxzZSIKICAgZWxzZQpAQCAtNTY5OCwxMiArNjExMywxMCBAQAogZXNhYwogICAgIEFSPSRhY19jdF9BUgogICBmaQotZWxzZQotICBBUj0iJGFjX2N2X3Byb2dfQVIiCiBmaQogCi10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorOiAke0FSPWFyfQorOiAke0FSX0ZMQUdTPWNydX0KIAogCiAKQEAgLTU3MTUsMTIgKzYxMjgsNzAgQEAKIAogCiAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisgICAgICAgIGZpCisgICAgICBmaQorICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CiskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQorCitpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KK2Vsc2UKKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCitmaQorCisKKworCisKKworCiBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCiAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfU1RSSVArc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX1NUUklQKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJFNUUklQIjsgdGhlbgpAQCAtNTc2MCw3ICs2MjMxLDcgQEAKIHNldCBkdW1teSBzdHJpcDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfU1RSSVArc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X1NUUklQKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X1NUUklQIjsgdGhlbgpAQCAtNTgxOSw3ICs2MjkwLDcgQEAKIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXJhbmxpYjsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfUkFOTElCK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19SQU5MSUIrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgpAQCAtNTg1OSw3ICs2MzMwLDcgQEAKIHNldCBkdW1teSByYW5saWI7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X1JBTkxJQitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfUkFOTElCKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X1JBTkxJQiI7IHRoZW4KQEAgLTU5MjEsMTUgKzYzOTIsMjcgQEAKIGlmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCiAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgb3BlbmJzZCopCi0gICAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9IiRvbGRfcG9zdGluc3RhbGxfY21kc35cJFJBTkxJQiAtdCBcJG9sZGxpYiIKKyAgICBvbGRfcG9zdGluc3RhbGxfY21kcz0iJG9sZF9wb3N0aW5zdGFsbF9jbWRzflwkUkFOTElCIC10IFwkdG9vbF9vbGRsaWIiCiAgICAgOzsKICAgKikKLSAgICBvbGRfcG9zdGluc3RhbGxfY21kcz0iJG9sZF9wb3N0aW5zdGFsbF9jbWRzflwkUkFOTElCIFwkb2xkbGliIgorICAgIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSIkb2xkX3Bvc3RpbnN0YWxsX2NtZHN+XCRSQU5MSUIgXCR0b29sX29sZGxpYiIKICAgICA7OwogICBlc2FjCi0gIG9sZF9hcmNoaXZlX2NtZHM9IiRvbGRfYXJjaGl2ZV9jbWRzflwkUkFOTElCIFwkb2xkbGliIgorICBvbGRfYXJjaGl2ZV9jbWRzPSIkb2xkX2FyY2hpdmVfY21kc35cJFJBTkxJQiBcJHRvb2xfb2xkbGliIgogZmkKIAorY2FzZSAkaG9zdF9vcyBpbgorICBkYXJ3aW4qKQorICAgIGxvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbj15ZXMgOzsKKyAgKikKKyAgICBsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb249bm8gOzsKK2VzYWMKKworCisKKworCisKIAogCiAKQEAgLTU5NzYsNyArNjQ1OSw3IEBACiAjIENoZWNrIGZvciBjb21tYW5kIHRvIGdyYWIgdGhlIHJhdyBzeW1ib2wgbmFtZSBmb2xsb3dlZCBieSBDIHN5bWJvbCBmcm9tIG5tLgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBjb21tYW5kIHRvIHBhcnNlICROTSBvdXRwdXQgZnJvbSAkY29tcGlsZXIgb2JqZWN0IiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGNvbW1hbmQgdG8gcGFyc2UgJE5NIG91dHB1dCBmcm9tICRjb21waWxlciBvYmplY3QuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogCkBAIC02MDM3LDggKzY1MjAsOCBAQAogbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKIAogIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCiAKICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgogb3B0X2NyPQpAQCAtNjA2Miw2ICs2NTQ1LDcgQEAKICAgICAjIHdoaWNoIHN0YXJ0IHdpdGggQCBvciA/LgogICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRBV0sgJyJcCiAiICAgICB7bGFzdF9zZWN0aW9uPXNlY3Rpb247IHNlY3Rpb249XCQgM307IlwKKyIgICAgIC9eQ09GRiBTWU1CT0wgVEFCTEUve2ZvcihpIGluIGhpZGUpIGRlbGV0ZSBoaWRlW2ldfTsiXAogIiAgICAgL1NlY3Rpb24gbGVuZ3RoIC4qI3JlbG9jcy4qKHBpY2sgYW55KS97aGlkZVtsYXN0X3NlY3Rpb25dPTF9OyJcCiAiICAgICBcJCAwIX4vRXh0ZXJuYWwgKlx8L3tuZXh0fTsiXAogIiAgICAgLyAwKyBVTkRFRiAve25leHR9OyAvIFVOREVGIFwoW158XVwpKigpL3tuZXh0fTsiXApAQCAtNjA3NCw2ICs2NTU4LDcgQEAKICAgZWxzZQogICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCiAgIGZpCisgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKIAogICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KICAgcGlwZV93b3Jrcz1ubwpAQCAtNjA5OSw4ICs2NTg0LDggQEAKICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgogICAgICMgTm93IHRyeSB0byBncmFiIHRoZSBzeW1ib2xzLgogICAgIG5saXN0PWNvbmZ0ZXN0Lm5tCi0gICAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJE5NIGNvbmZ0ZXN0LiRhY19vYmpleHQgXHwgJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXD4gJG5saXN0XCIiOyB9ID4mNQotICAoZXZhbCAkTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcPiAkbmxpc3QpIDI+JjUKKyAgICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIFw+ICRubGlzdFwiIjsgfSA+JjUKKyAgKGV2YWwgJE5NIGNvbmZ0ZXN0LiRhY19vYmpleHQgXHwgIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiBcPiAkbmxpc3QpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CiAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgIiRubGlzdCI7IHRoZW4KQEAgLTYxMTUsNiArNjYwMCwxOCBAQAogICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisjZWxzZQorIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewogI2VuZGlmCkBAIC02MTI2LDcgKzY2MjMsNyBAQAogCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CiAKIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLWNvbnN0IHN0cnVjdCB7CitMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgewogICBjb25zdCBjaGFyICpuYW1lOwogICB2b2lkICAgICAgICphZGRyZXNzOwogfQpAQCAtNjE1Miw4ICs2NjQ5LDggQEAKIF9MVF9FT0YKIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCiAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCisJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCiAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCiAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKQEAgLTYxNjMsOCArNjY2MCw4IEBACiAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogCSAgICBwaXBlX3dvcmtzPXllcwogCSAgZmkKLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKIAllbHNlCiAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKIAlmaQpAQCAtNjIwMSw2ICs2Njk4LDEyIEBACiAkYXNfZWNobyAib2siID4mNjsgfQogZmkKIAorIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCitpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCitmaQogCiAKIApAQCAtNjIyMyw2ICs2NzI2LDQ4IEBACiAKIAogCisKKworCisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLXN5c3Jvb3Qgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3aXRoX3N5c3Jvb3Q7CitlbHNlCisgIHdpdGhfc3lzcm9vdD1ubworZmkKKworCitsdF9zeXNyb290PQorY2FzZSAke3dpdGhfc3lzcm9vdH0gaW4gIygKKyB5ZXMpCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorICAgZmkKKyAgIDs7ICMoCisgLyopCisgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisgICA7OyAjKAorIG5vfCcnKQorICAgOzsgIygKKyAqKQorICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9zeXNyb290fSIgPiY1CiskYXNfZWNobyAiJHt3aXRoX3N5c3Jvb3R9IiA+JjY7IH0KKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQorICAgOzsKK2VzYWMKKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CiskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorCisKKworCisKICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1saWJ0b29sLWxvY2sgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfbGlidG9vbF9sb2NrK3NldH0iID0gc2V0OyB0aGVuIDoKICAgZW5hYmxldmFsPSRlbmFibGVfbGlidG9vbF9sb2NrOwpAQCAtNjI1NCw3ICs2Nzk5LDcgQEAKICAgOzsKICotKi1pcml4NiopCiAgICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KLSAgZWNobyAnI2xpbmUgNjI1NyAiY29uZmlndXJlIicgPiBjb25mdGVzdC4kYWNfZXh0CisgIGVjaG8gJyNsaW5lICckTElORU5PJyAiY29uZmlndXJlIicgPiBjb25mdGVzdC4kYWNfZXh0CiAgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQogICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogICBhY19zdGF0dXM9JD8KQEAgLTYzNDgsNyArNjg5Myw3IEBACiAgIENGTEFHUz0iJENGTEFHUyAtYmVsZiIKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIG5lZWRzIC1iZWxmIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgbmVlZHMgLWJlbGYuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfY2NfbmVlZHNfYmVsZitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X2NjX25lZWRzX2JlbGYrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhY19leHQ9YwpAQCAtNjM4OSw3ICs2OTM0LDcgQEAKICAgICBDRkxBR1M9IiRTQVZFX0NGTEFHUyIKICAgZmkKICAgOzsKLXNwYXJjKi0qc29sYXJpcyopCisqLSpzb2xhcmlzKikKICAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgogICBlY2hvICdpbnQgaTsnID4gY29uZnRlc3QuJGFjX2V4dAogICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKQEAgLTY0MDAsNyArNjk0NSwyMCBAQAogICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3Qub2AgaW4KICAgICAqNjQtYml0KikKICAgICAgIGNhc2UgJGx0X2N2X3Byb2dfZ251X2xkIGluCi0gICAgICB5ZXMqKSBMRD0iJHtMRC1sZH0gLW0gZWxmNjRfc3BhcmMiIDs7CisgICAgICB5ZXMqKQorICAgICAgICBjYXNlICRob3N0IGluCisgICAgICAgIGk/ODYtKi1zb2xhcmlzKikKKyAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX3g4Nl82NCIKKyAgICAgICAgICA7OworICAgICAgICBzcGFyYyotKi1zb2xhcmlzKikKKyAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmNjRfc3BhcmMiCisgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICAjIEdOVSBsZCAyLjIxIGludHJvZHVjZWQgX3NvbDIgZW11bGF0aW9ucy4gIFVzZSB0aGVtIGlmIGF2YWlsYWJsZS4KKyAgICAgICAgaWYgJHtMRC1sZH0gLVYgfCBncmVwIF9zb2wyID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgICAgIExEPSIke0xELWxkfV9zb2wyIgorICAgICAgICBmaQorICAgICAgICA7OwogICAgICAgKikKIAlpZiAke0xELWxkfSAtNjQgLXIgLW8gY29uZnRlc3QyLm8gY29uZnRlc3QubyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KIAkgIExEPSIke0xELWxkfSAtNjQiCkBAIC02NDE2LDYgKzY5NzQsMTIzIEBACiAKIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgogCitpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCitNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQorJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgorICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IG10OyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCithY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQorJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCisgICAgTUFOSUZFU1RfVE9PTD0iOiIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCisgIGZpCitlbHNlCisgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCitmaQorCit0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9CitpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubworICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1CisgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKyAgZmkKKyAgcm0gLWYgY29uZnRlc3QqCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQorJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQoraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKyAgTUFOSUZFU1RfVE9PTD06CitmaQorCisKKworCisKIAogICBjYXNlICRob3N0X29zIGluCiAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKQEAgLTY0MjQsNyArNzA5OSw3IEBACiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kc3ltdXRpbDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfRFNZTVVUSUwrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX0RTWU1VVElMKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJERTWU1VVElMIjsgdGhlbgpAQCAtNjQ2NCw3ICs3MTM5LDcgQEAKIHNldCBkdW1teSBkc3ltdXRpbDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRFNZTVVUSUwrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X0RTWU1VVElMKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X0RTWU1VVElMIjsgdGhlbgpAQCAtNjUxNiw3ICs3MTkxLDcgQEAKIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW5tZWRpdDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfTk1FRElUK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19OTUVESVQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkTk1FRElUIjsgdGhlbgpAQCAtNjU1Niw3ICs3MjMxLDcgQEAKIHNldCBkdW1teSBubWVkaXQ7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X05NRURJVCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfTk1FRElUKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X05NRURJVCI7IHRoZW4KQEAgLTY2MDgsNyArNzI4Myw3IEBACiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1saXBvOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19MSVBPK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19MSVBPKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJExJUE8iOyB0aGVuCkBAIC02NjQ4LDcgKzczMjMsNyBAQAogc2V0IGR1bW15IGxpcG87IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0xJUE8rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X0xJUE8rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfTElQTyI7IHRoZW4KQEAgLTY3MDAsNyArNzM3NSw3IEBACiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1vdG9vbDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfT1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX09UT09MKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJE9UT09MIjsgdGhlbgpAQCAtNjc0MCw3ICs3NDE1LDcgQEAKIHNldCBkdW1teSBvdG9vbDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfT1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X09UT09MKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X09UT09MIjsgdGhlbgpAQCAtNjc5Miw3ICs3NDY3LDcgQEAKIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW90b29sNjQ7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX09UT09MNjQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX09UT09MNjQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkT1RPT0w2NCI7IHRoZW4KQEAgLTY4MzIsNyArNzUwNyw3IEBACiBzZXQgZHVtbXkgb3Rvb2w2NDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfT1RPT0w2NCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfT1RPT0w2NCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRhY19jdF9PVE9PTDY0IjsgdGhlbgpAQCAtNjkwNyw3ICs3NTgyLDcgQEAKIAogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC1zaW5nbGVfbW9kdWxlIGxpbmtlciBmbGFnIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAtc2luZ2xlX21vZHVsZSBsaW5rZXIgZmxhZy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGx0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2Q9bm8KQEAgLTY5MjMsNyArNzU5OCwxMyBAQAogCSRMVENDICRMVENGTEFHUyAkTERGTEFHUyAtbyBsaWJjb25mdGVzdC5keWxpYiBcCiAJICAtZHluYW1pY2xpYiAtV2wsLXNpbmdsZV9tb2R1bGUgY29uZnRlc3QuYyAyPmNvbmZ0ZXN0LmVycgogICAgICAgICBfbHRfcmVzdWx0PSQ/Ci0JaWYgdGVzdCAtZiBsaWJjb25mdGVzdC5keWxpYiAmJiB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyICYmIHRlc3QgJF9sdF9yZXN1bHQgPSAwOyB0aGVuCisJIyBJZiB0aGVyZSBpcyBhIG5vbi1lbXB0eSBlcnJvciBsb2csIGFuZCAic2luZ2xlX21vZHVsZSIKKwkjIGFwcGVhcnMgaW4gaXQsIGFzc3VtZSB0aGUgZmxhZyBjYXVzZWQgYSBsaW5rZXIgd2FybmluZworICAgICAgICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVyciAmJiAkR1JFUCBzaW5nbGVfbW9kdWxlIGNvbmZ0ZXN0LmVycjsgdGhlbgorCSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKwkjIE90aGVyd2lzZSwgaWYgdGhlIG91dHB1dCB3YXMgY3JlYXRlZCB3aXRoIGEgMCBleGl0IGNvZGUgZnJvbQorCSMgdGhlIGNvbXBpbGVyLCBpdCB3b3JrZWQuCisJZWxpZiB0ZXN0IC1mIGxpYmNvbmZ0ZXN0LmR5bGliICYmIHRlc3QgJF9sdF9yZXN1bHQgLWVxIDA7IHRoZW4KIAkgIGx0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2Q9eWVzCiAJZWxzZQogCSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKQEAgLTY5MzQsOSArNzYxNSwxMCBAQAogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCIgPiY1CiAkYXNfZWNobyAiJGx0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2QiID4mNjsgfQorCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLWV4cG9ydGVkX3N5bWJvbHNfbGlzdCBsaW5rZXIgZmxhZyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgLWV4cG9ydGVkX3N5bWJvbHNfbGlzdCBsaW5rZXIgZmxhZy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3QrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3Q9bm8KQEAgLTY5NjYsNiArNzY0OCw0MSBAQAogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0IiA+JjUKICRhc19lY2hvICIkbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0IiA+JjY7IH0KKworICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC1mb3JjZV9sb2FkIGxpbmtlciBmbGFnIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAtZm9yY2VfbG9hZCBsaW5rZXIgZmxhZy4uLiAiID4mNjsgfQoraWYgJHtsdF9jdl9sZF9mb3JjZV9sb2FkKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgbHRfY3ZfbGRfZm9yY2VfbG9hZD1ubworICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCitpbnQgZm9yY2VkX2xvYWRlZCgpIHsgcmV0dXJuIDI7fQorX0xUX0VPRgorICAgICAgZWNobyAiJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyIgPiY1CisgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKKyAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKKyAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1CisgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQorICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCitpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorX0xUX0VPRgorICAgICAgZWNobyAiJExUQ0MgJExUQ0ZMQUdTICRMREZMQUdTIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgLVdsLC1mb3JjZV9sb2FkLC4vbGliY29uZnRlc3QuYSIgPiY1CisgICAgICAkTFRDQyAkTFRDRkxBR1MgJExERkxBR1MgLW8gY29uZnRlc3QgY29uZnRlc3QuYyAtV2wsLWZvcmNlX2xvYWQsLi9saWJjb25mdGVzdC5hIDI+Y29uZnRlc3QuZXJyCisgICAgICBfbHRfcmVzdWx0PSQ/CisgICAgICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVyciAmJiAkR1JFUCBmb3JjZV9sb2FkIGNvbmZ0ZXN0LmVycjsgdGhlbgorCWNhdCBjb25mdGVzdC5lcnIgPiY1CisgICAgICBlbGlmIHRlc3QgLWYgY29uZnRlc3QgJiYgdGVzdCAkX2x0X3Jlc3VsdCAtZXEgMCAmJiAkR1JFUCBmb3JjZWRfbG9hZCBjb25mdGVzdCA+L2Rldi9udWxsIDI+JjEgOyB0aGVuCisJbHRfY3ZfbGRfZm9yY2VfbG9hZD15ZXMKKyAgICAgIGVsc2UKKwljYXQgY29uZnRlc3QuZXJyID4mNQorICAgICAgZmkKKyAgICAgICAgcm0gLWYgY29uZnRlc3QuZXJyIGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QgY29uZnRlc3QuYworICAgICAgICBybSAtcmYgY29uZnRlc3QuZFNZTQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9sZF9mb3JjZV9sb2FkIiA+JjUKKyRhc19lY2hvICIkbHRfY3ZfbGRfZm9yY2VfbG9hZCIgPiY2OyB9CiAgICAgY2FzZSAkaG9zdF9vcyBpbgogICAgIHJoYXBzb2R5KiB8IGRhcndpbjEuWzAxMl0pCiAgICAgICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHt3bH0tdW5kZWZpbmVkICR7d2x9c3VwcHJlc3MnIDs7CkBAIC02OTkzLDcgKzc3MTAsNyBAQAogICAgIGVsc2UKICAgICAgIF9sdF9kYXJfZXhwb3J0X3N5bXM9J34kTk1FRElUIC1zICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW0gJHtsaWJ9JwogICAgIGZpCi0gICAgaWYgdGVzdCAiJERTWU1VVElMIiAhPSAiOiI7IHRoZW4KKyAgICBpZiB0ZXN0ICIkRFNZTVVUSUwiICE9ICI6IiAmJiB0ZXN0ICIkbHRfY3ZfbGRfZm9yY2VfbG9hZCIgPSAibm8iOyB0aGVuCiAgICAgICBfbHRfZHN5bXV0aWw9J34kRFNZTVVUSUwgJGxpYiB8fCA6JwogICAgIGVsc2UKICAgICAgIF9sdF9kc3ltdXRpbD0KQEAgLTcwMTMsNyArNzczMCw3IEBACiAgIENQUD0KIGZpCiBpZiB0ZXN0IC16ICIkQ1BQIjsgdGhlbgotICBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ1BQK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgaWYgJHthY19jdl9wcm9nX0NQUCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgICAgICAjIERvdWJsZSBxdW90ZXMgYmVjYXVzZSBDUFAgbmVlZHMgdG8gYmUgZXhwYW5kZWQKQEAgLTcwNDMsNyArNzc2MCw3IEBACiAgICMgQnJva2VuOiBmYWlscyBvbiB2YWxpZCBpbnB1dC4KIGNvbnRpbnVlCiBmaQotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKIAogICAjIE9LLCB3b3JrcyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uZXhpc3RlbnQgaGVhZGVycwogICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgpAQCAtNzA1OSwxMSArNzc3NiwxMSBAQAogYWNfcHJlcHJvY19vaz06CiBicmVhawogZmkKLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CiAKIGRvbmUKICMgQmVjYXVzZSBvZiBgYnJlYWsnLCBfQUNfUFJFUFJPQ19JRkVMU0UncyBjbGVhbmluZyBjb2RlIHdhcyBza2lwcGVkLgotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmkgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKIGlmICRhY19wcmVwcm9jX29rOyB0aGVuIDoKICAgYnJlYWsKIGZpCkBAIC03MTAyLDcgKzc4MTksNyBAQAogICAjIEJyb2tlbjogZmFpbHMgb24gdmFsaWQgaW5wdXQuCiBjb250aW51ZQogZmkKLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CiAKICAgIyBPSywgd29ya3Mgb24gc2FuZSBjYXNlcy4gIE5vdyBjaGVjayB3aGV0aGVyIG5vbmV4aXN0ZW50IGhlYWRlcnMKICAgIyBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGhvdy4KQEAgLTcxMTgsMTggKzc4MzUsMTggQEAKIGFjX3ByZXByb2Nfb2s9OgogYnJlYWsKIGZpCi1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAogCiBkb25lCiAjIEJlY2F1c2Ugb2YgYGJyZWFrJywgX0FDX1BSRVBST0NfSUZFTFNFJ3MgY2xlYW5pbmcgY29kZSB3YXMgc2tpcHBlZC4KLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5pIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CiBpZiAkYWNfcHJlcHJvY19vazsgdGhlbiA6CiAKIGVsc2UKICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciAiQyBwcmVwcm9jZXNzb3IgXCIkQ1BQXCIgZmFpbHMgc2FuaXR5IGNoZWNrCi1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgIiRMSU5FTk8iIDU7IH0KK2FzX2ZuX2Vycm9yICQ/ICJDIHByZXByb2Nlc3NvciBcIiRDUFBcIiBmYWlscyBzYW5pdHkgY2hlY2sKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CiBmaQogCiBhY19leHQ9YwpAQCAtNzE0MSw3ICs3ODU4LDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3RkYytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2hlYWRlcl9zdGRjKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtNzI1OCw4ICs3OTc1LDcgQEAKICAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAogYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAiJExJTkVOTyIgIiRhY19oZWFkZXIiICIkYXNfYWNfSGVhZGVyIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQKICIKLWV2YWwgYXNfdmFsPVwkJGFzX2FjX0hlYWRlcgotICAgaWYgdGVzdCAieCRhc192YWwiID0geCIieWVzOyB0aGVuIDoKK2lmIGV2YWwgdGVzdCBcInhcJCIkYXNfYWNfSGVhZGVyIlwiID0geCJ5ZXMiOyB0aGVuIDoKICAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgogI2RlZmluZSBgJGFzX2VjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCiBfQUNFT0YKQEAgLTcyNzMsNyArNzk4OSw3IEBACiBkbyA6CiAgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8iICJkbGZjbi5oIiAiYWNfY3ZfaGVhZGVyX2RsZmNuX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdAogIgotaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfZGxmY25faCIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfZGxmY25faCIgPSB4eWVzOyB0aGVuIDoKICAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgogI2RlZmluZSBIQVZFX0RMRkNOX0ggMQogX0FDRU9GCkBAIC03Mjg0LDYgKzgwMDAsOCBAQAogCiAKIAorCisKICMgU2V0IG9wdGlvbnMKIAogCkBAIC03MzU5LDcgKzgwNzcsMjIgQEAKIAogIyBDaGVjayB3aGV0aGVyIC0td2l0aC1waWMgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHt3aXRoX3BpYytzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIHdpdGh2YWw9JHdpdGhfcGljOyBwaWNfbW9kZT0iJHdpdGh2YWwiCisgIHdpdGh2YWw9JHdpdGhfcGljOyBsdF9wPSR7UEFDS0FHRS1kZWZhdWx0fQorICAgIGNhc2UgJHdpdGh2YWwgaW4KKyAgICB5ZXN8bm8pIHBpY19tb2RlPSR3aXRodmFsIDs7CisgICAgKikKKyAgICAgIHBpY19tb2RlPWRlZmF1bHQKKyAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KKyAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgorICAgICAgZm9yIGx0X3BrZyBpbiAkd2l0aHZhbDsgZG8KKwlJRlM9IiRsdF9zYXZlX2lmcyIKKwlpZiB0ZXN0ICJYJGx0X3BrZyIgPSAiWCRsdF9wIjsgdGhlbgorCSAgcGljX21vZGU9eWVzCisJZmkKKyAgICAgIGRvbmUKKyAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgICAgOzsKKyAgICBlc2FjCiBlbHNlCiAgIHBpY19tb2RlPWRlZmF1bHQKIGZpCkBAIC03NDM2LDYgKzgxNjksMTEgQEAKIAogCiAKKworCisKKworCiB0ZXN0IC16ICIkTE5fUyIgJiYgTE5fUz0ibG4gLXMiCiAKIApAQCAtNzQ1Nyw3ICs4MTk1LDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igb2JqZGlyIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBvYmpkaXIuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3Zfb2JqZGlyK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3Zfb2JqZGlyKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgcm0gLWYgLmxpYnMgMj4vZGV2L251bGwKQEAgLTc0ODUsMTkgKzgyMjMsNiBAQAogCiAKIAotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCiBjYXNlICRob3N0X29zIGluCiBhaXgzKikKICAgIyBBSVggc29tZXRpbWVzIGhhcyBwcm9ibGVtcyB3aXRoIHRoZSBHQ0MgY29sbGVjdDIgcHJvZ3JhbS4gIEZvciBzb21lCkBAIC03NTEwLDIzICs4MjM1LDYgQEAKICAgOzsKIGVzYWMKIAotIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgaGVscHMgdXMgZG8gcm9idXN0IHF1b3RpbmcuICBJdCBiYWNrc2xhc2hpZmllcwotIyBtZXRhY2hhcmFjdGVycyB0aGF0IGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluIGRvdWJsZS1xdW90ZWQgc3RyaW5ncy4KLXNlZF9xdW90ZV9zdWJzdD0ncy9cKFsiYCRcXF1cKS9cXFwxL2cnCi0KLSMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgotZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woWyJgXFxdXCkvXFxcMS9nJwotCi0jIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2hlbGwgdmFyaWFibGUgaW4gYQotIyBkb3VibGVfcXVvdGVfc3Vic3QnZWQgc3RyaW5nLgotZGVsYXlfdmFyaWFibGVfc3Vic3Q9J3MvXFxcXFxcXFxcXFwkL1xcXFxcXCQvZycKLQotIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGRlbGF5IGV4cGFuc2lvbiBvZiBhbiBlc2NhcGVkIHNpbmdsZSBxdW90ZS4KLWRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdD0ncy8nXCcnLydcJ1xcXFxcXFwnXCcnL2cnCi0KLSMgU2VkIHN1YnN0aXR1dGlvbiB0byBhdm9pZCBhY2NpZGVudGFsIGdsb2JiaW5nIGluIGV2YWxlZCBleHByZXNzaW9ucwotbm9fZ2xvYl9zdWJzdD0ncy9cKi9cXFwqL2cnCi0KICMgR2xvYmFsIHZhcmlhYmxlczoKIG9maWxlPWxpYnRvb2wKIGNhbl9idWlsZF9zaGFyZWQ9eWVzCkBAIC03NTU1LDcgKzgyNjMsNyBAQAogICAgICopIGJyZWFrOzsKICAgZXNhYwogZG9uZQotY2NfYmFzZW5hbWU9YCRFQ0hPICJYJGNjX3RlbXAiIHwgJFhzZWQgLWUgJ3MlLiovJSUnIC1lICJzJV4kaG9zdF9hbGlhcy0lJSJgCitjY19iYXNlbmFtZT1gJEVDSE8gIiRjY190ZW1wIiB8ICRTRUQgInMlLiovJSU7IHMlXiRob3N0X2FsaWFzLSUlImAKIAogCiAjIE9ubHkgcGVyZm9ybSB0aGUgY2hlY2sgZm9yIGZpbGUsIGlmIHRoZSBjaGVjayBtZXRob2QgcmVxdWlyZXMgaXQKQEAgLTc1NjUsNyArODI3Myw3IEBACiAgIGlmIHRlc3QgIiRmaWxlX21hZ2ljX2NtZCIgPSAnJE1BR0lDX0NNRCc7IHRoZW4KICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAke2FjX3Rvb2xfcHJlZml4fWZpbGUiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICR7YWNfdG9vbF9wcmVmaXh9ZmlsZS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9wYXRoX01BR0lDX0NNRCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X3BhdGhfTUFHSUNfQ01EKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2FzZSAkTUFHSUNfQ01EIGluCkBAIC03NjMxLDcgKzgzMzksNyBAQAogICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZmlsZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZmlsZS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9wYXRoX01BR0lDX0NNRCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X3BhdGhfTUFHSUNfQ01EKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2FzZSAkTUFHSUNfQ01EIGluCkBAIC03NzY0LDExICs4NDcyLDE2IEBACiBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0KIAogaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9JyAtZm5vLWJ1aWx0aW4nCisgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgIG52Y2MqKQorICAgIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPScgLVhjb21waWxlciAtZm5vLWJ1aWx0aW4nIDs7CisgICopCisgICAgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9JyAtZm5vLWJ1aWx0aW4nIDs7CisgIGVzYWMKIAogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRjb21waWxlciBzdXBwb3J0cyAtZm5vLXJ0dGkgLWZuby1leGNlcHRpb25zIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGlmICRjb21waWxlciBzdXBwb3J0cyAtZm5vLXJ0dGkgLWZuby1leGNlcHRpb25zLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcnR0aV9leGNlcHRpb25zK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9ydHRpX2V4Y2VwdGlvbnMrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9wcm9nX2NvbXBpbGVyX3J0dGlfZXhjZXB0aW9ucz1ubwpAQCAtNzc4NCwxNSArODQ5NywxNSBAQAogICAgLWUgJ3M6LipGTEFHU31cezAsMVx9IDomJGx0X2NvbXBpbGVyX2ZsYWcgOjsgdCcgXAogICAgLWUgJ3M6IFteIF0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAogICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKLSAgIChldmFsIGVjaG8gIlwiXCRhc19tZTo3Nzg3OiAkbHRfY29tcGlsZVwiIiA+JjUpCisgICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJGx0X2NvbXBpbGVcIiIgPiY1KQogICAgKGV2YWwgIiRsdF9jb21waWxlIiAyPmNvbmZ0ZXN0LmVycikKICAgIGFjX3N0YXR1cz0kPwogICAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSAgIGVjaG8gIiRhc19tZTo3NzkxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgIGlmIChleGl0ICRhY19zdGF0dXMpICYmIHRlc3QgLXMgIiRhY19vdXRmaWxlIjsgdGhlbgogICAgICAjIFRoZSBjb21waWxlciBjYW4gb25seSB3YXJuIGFuZCBpZ25vcmUgdGhlIG9wdGlvbiBpZiBub3QgcmVjb2duaXplZAogICAgICAjIFNvIHNheSBubyBpZiB0aGVyZSBhcmUgd2FybmluZ3Mgb3RoZXIgdGhhbiB0aGUgdXN1YWwgb3V0cHV0LgotICAgICAkRUNITyAiWCRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+Y29uZnRlc3QuZXhwCisgICAgICRFQ0hPICIkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRTRUQgJy9eJC9kJyA+Y29uZnRlc3QuZXhwCiAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMgogICAgICBpZiB0ZXN0ICEgLXMgY29uZnRlc3QuZXIyIHx8IGRpZmYgY29uZnRlc3QuZXhwIGNvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgbHRfY3ZfcHJvZ19jb21waWxlcl9ydHRpX2V4Y2VwdGlvbnM9eWVzCkBAIC03ODIxLDggKzg1MzQsNiBAQAogbHRfcHJvZ19jb21waWxlcl9waWM9CiBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KIAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQogCiAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKQEAgLTc4NzAsNiArODU4MSwxMiBAQAogICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1mbm8tY29tbW9uJwogICAgICAgOzsKIAorICAgIGhhaWt1KikKKyAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IGZvciBIYWlrdS4KKyAgICAgICMgVGhlICItc3RhdGljIiBmbGFnIGV4aXN0cywgYnV0IGlzIGJyb2tlbi4KKyAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQorICAgICAgOzsKKwogICAgIGhwdXgqKQogICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIDY0LWJpdCBQQSBIUC1VWCwgYnV0IG5vdCBmb3IgMzItYml0CiAgICAgICAjIFBBIEhQLVVYLiAgT24gSUE2NCBIUC1VWCwgUElDIGlzIHRoZSBkZWZhdWx0IGJ1dCB0aGUgcGljIGZsYWcKQEAgLTc5MTIsNiArODYyOSwxNSBAQAogICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1mUElDJwogICAgICAgOzsKICAgICBlc2FjCisKKyAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgIG52Y2MqKSAjIEN1ZGEgQ29tcGlsZXIgRHJpdmVyIDIuMgorICAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVhsaW5rZXIgJworICAgICAgaWYgdGVzdCAtbiAiJGx0X3Byb2dfY29tcGlsZXJfcGljIjsgdGhlbgorICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iLVhjb21waWxlciAkbHRfcHJvZ19jb21waWxlcl9waWMiCisgICAgICBmaQorICAgICAgOzsKKyAgICBlc2FjCiAgIGVsc2UKICAgICAjIFBPUlRNRSBDaGVjayBmb3IgZmxhZyB0byBwYXNzIGxpbmtlciBmbGFncyB0aHJvdWdoIHRoZSBzeXN0ZW0gY29tcGlsZXIuCiAgICAgY2FzZSAkaG9zdF9vcyBpbgpAQCAtNzk1Myw3ICs4Njc5LDcgQEAKICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctbm9uX3NoYXJlZCcKICAgICAgIDs7CiAKLSAgICBsaW51eCogfCBrKmJzZCotZ251KQorICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCiAgICAgICAjIG9sZCBJbnRlbCBmb3IgeDg2XzY0IHdoaWNoIHN0aWxsIHN1cHBvcnRlZCAtS1BJQy4KICAgICAgIGVjYyopCkBAIC03OTc0LDcgKzg3MDAsMTMgQEAKIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCiAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwogCTs7Ci0gICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KikKKyAgICAgIG5hZ2ZvciopCisJIyBOQUcgRm9ydHJhbiBjb21waWxlcgorCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisJOzsKKyAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQogCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCkBAIC03OTg2LDI1ICs4NzE4LDQwIEBACiAgICAgICAgICMgQWxsIEFscGhhIGNvZGUgaXMgUElDLgogICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLW5vbl9zaGFyZWQnCiAgICAgICAgIDs7Ci0gICAgICB4bCopCi0JIyBJQk0gWEwgQyA4LjAvRm9ydHJhbiAxMC4xIG9uIFBQQworICAgICAgeGwqIHwgYmd4bCogfCBiZ2YqIHwgbXBpeGwqKQorCSMgSUJNIFhMIEMgOC4wL0ZvcnRyYW4gMTAuMSwgMTEuMSBvbiBQUEMgYW5kIEJsdWVHZW5lCiAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLXFwaWMnCiAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1xc3RhdGljbGluaycKIAk7OwogICAgICAgKikKIAljYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KKwkqU3VuXCBDZXJlc1wgRm9ydHJhbiogfCAqU3VuKkZvcnRyYW4qXCBbMS03XS4qIHwgKlN1bipGb3J0cmFuKlwgOC5bMC0zXSopCisJICAjIFN1biBGb3J0cmFuIDguMyBwYXNzZXMgYWxsIHVucmVjb2duaXplZCBmbGFncyB0byB0aGUgbGlua2VyCisJICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisJICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisJICBsdF9wcm9nX2NvbXBpbGVyX3dsPScnCisJICA7OworCSpTdW5cIEYqIHwgKlN1bipGb3J0cmFuKikKKwkgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKKwkgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKwkgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICcKKwkgIDs7CiAJKlN1blwgQyopCiAJICAjIFN1biBDIDUuOQogCSAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwogCSAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwogCSAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKIAkgIDs7Ci0JKlN1blwgRiopCi0JICAjIFN1biBGb3J0cmFuIDguMyBwYXNzZXMgYWxsIHVucmVjb2duaXplZCBmbGFncyB0byB0aGUgbGlua2VyCi0JICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisgICAgICAgICpJbnRlbCpcIFtDRl0qQ29tcGlsZXIqKQorCSAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKKwkgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctZlBJQycKKwkgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctc3RhdGljJworCSAgOzsKKwkqUG9ydGxhbmRcIEdyb3VwKikKKwkgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCisJICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLWZwaWMnCiAJICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0JICBsdF9wcm9nX2NvbXBpbGVyX3dsPScnCiAJICA7OwogCWVzYWMKIAk7OwpAQCAtODAzNiw3ICs4NzgzLDcgQEAKICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCiAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CiAgICAgICAqKQogCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKQEAgLTgwOTMsMTMgKzg4NDAsMTcgQEAKICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgogICAgIDs7CiBlc2FjCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQogCi0KLQotCi0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCiAKICMKICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KQEAgLTgxMDcsNyArODg1OCw3IEBACiBpZiB0ZXN0IC1uICIkbHRfcHJvZ19jb21waWxlcl9waWMiOyB0aGVuCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJGNvbXBpbGVyIFBJQyBmbGFnICRsdF9wcm9nX2NvbXBpbGVyX3BpYyB3b3JrcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBpZiAkY29tcGlsZXIgUElDIGZsYWcgJGx0X3Byb2dfY29tcGlsZXJfcGljIHdvcmtzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljX3dvcmtzK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWNfd29ya3MrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY193b3Jrcz1ubwpAQCAtODEyMywxNSArODg3NCwxNSBAQAogICAgLWUgJ3M6LipGTEFHU31cezAsMVx9IDomJGx0X2NvbXBpbGVyX2ZsYWcgOjsgdCcgXAogICAgLWUgJ3M6IFteIF0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAogICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKLSAgIChldmFsIGVjaG8gIlwiXCRhc19tZTo4MTI2OiAkbHRfY29tcGlsZVwiIiA+JjUpCisgICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJGx0X2NvbXBpbGVcIiIgPiY1KQogICAgKGV2YWwgIiRsdF9jb21waWxlIiAyPmNvbmZ0ZXN0LmVycikKICAgIGFjX3N0YXR1cz0kPwogICAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSAgIGVjaG8gIiRhc19tZTo4MTMwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgIGlmIChleGl0ICRhY19zdGF0dXMpICYmIHRlc3QgLXMgIiRhY19vdXRmaWxlIjsgdGhlbgogICAgICAjIFRoZSBjb21waWxlciBjYW4gb25seSB3YXJuIGFuZCBpZ25vcmUgdGhlIG9wdGlvbiBpZiBub3QgcmVjb2duaXplZAogICAgICAjIFNvIHNheSBubyBpZiB0aGVyZSBhcmUgd2FybmluZ3Mgb3RoZXIgdGhhbiB0aGUgdXN1YWwgb3V0cHV0LgotICAgICAkRUNITyAiWCRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+Y29uZnRlc3QuZXhwCisgICAgICRFQ0hPICIkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRTRUQgJy9eJC9kJyA+Y29uZnRlc3QuZXhwCiAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMgogICAgICBpZiB0ZXN0ICEgLXMgY29uZnRlc3QuZXIyIHx8IGRpZmYgY29uZnRlc3QuZXhwIGNvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfd29ya3M9eWVzCkBAIC04MTYwLDEzICs4OTExLDE4IEBACiAKIAogCisKKworCisKKwogIwogIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgogIwogd2w9JGx0X3Byb2dfY29tcGlsZXJfd2wgZXZhbCBsdF90bXBfc3RhdGljX2ZsYWc9XCIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWNcIgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkY29tcGlsZXIgc3RhdGljIGZsYWcgJGx0X3RtcF9zdGF0aWNfZmxhZyB3b3JrcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBpZiAkY29tcGlsZXIgc3RhdGljIGZsYWcgJGx0X3RtcF9zdGF0aWNfZmxhZyB3b3Jrcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3N0YXRpY193b3JrcytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfc3RhdGljX3dvcmtzKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgbHRfY3ZfcHJvZ19jb21waWxlcl9zdGF0aWNfd29ya3M9bm8KQEAgLTgxNzksNyArODkzNSw3IEBACiAgICAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCiAgICAgICAgIyBBcHBlbmQgYW55IGVycm9ycyB0byB0aGUgY29uZmlnLmxvZy4KICAgICAgICBjYXQgY29uZnRlc3QuZXJyIDE+JjUKLSAgICAgICAkRUNITyAiWCRfbHRfbGlua2VyX2JvaWxlcnBsYXRlIiB8ICRYc2VkIC1lICcvXiQvZCcgPiBjb25mdGVzdC5leHAKKyAgICAgICAkRUNITyAiJF9sdF9saW5rZXJfYm9pbGVycGxhdGUiIHwgJFNFRCAnL14kL2QnID4gY29uZnRlc3QuZXhwCiAgICAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIyCiAgICAgICAgaWYgZGlmZiBjb25mdGVzdC5leHAgY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KICAgICAgICAgIGx0X2N2X3Byb2dfY29tcGlsZXJfc3RhdGljX3dvcmtzPXllcwpAQCAtODIwOSw3ICs4OTY1LDcgQEAKIAogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRjb21waWxlciBzdXBwb3J0cyAtYyAtbyBmaWxlLiRhY19vYmpleHQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1jIC1vIGZpbGUuJGFjX29iamV4dC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfY19vKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgbHRfY3ZfcHJvZ19jb21waWxlcl9jX289bm8KQEAgLTgyMjgsMTYgKzg5ODQsMTYgQEAKICAgIC1lICdzOi4qRkxBR1N9XHswLDFcfSA6JiRsdF9jb21waWxlcl9mbGFnIDo7IHQnIFwKICAgIC1lICdzOiBbXiBdKmNvbmZ0ZXN0XC46ICRsdF9jb21waWxlcl9mbGFnJjo7IHQnIFwKICAgIC1lICdzOiQ6ICRsdF9jb21waWxlcl9mbGFnOidgCi0gICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6ODIzMTogJGx0X2NvbXBpbGVcIiIgPiY1KQorICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86ICRsdF9jb21waWxlXCIiID4mNSkKICAgIChldmFsICIkbHRfY29tcGlsZSIgMj5vdXQvY29uZnRlc3QuZXJyKQogICAgYWNfc3RhdHVzPSQ/CiAgICBjYXQgb3V0L2NvbmZ0ZXN0LmVyciA+JjUKLSAgIGVjaG8gIiRhc19tZTo4MjM1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgIGlmIChleGl0ICRhY19zdGF0dXMpICYmIHRlc3QgLXMgb3V0L2NvbmZ0ZXN0Mi4kYWNfb2JqZXh0CiAgICB0aGVuCiAgICAgICMgVGhlIGNvbXBpbGVyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCiAgICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncwotICAgICAkRUNITyAiWCRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+IG91dC9jb25mdGVzdC5leHAKKyAgICAgJEVDSE8gIiRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFNFRCAnL14kL2QnID4gb3V0L2NvbmZ0ZXN0LmV4cAogICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgb3V0L2NvbmZ0ZXN0LmVyciA+b3V0L2NvbmZ0ZXN0LmVyMgogICAgICBpZiB0ZXN0ICEgLXMgb3V0L2NvbmZ0ZXN0LmVyMiB8fCBkaWZmIG91dC9jb25mdGVzdC5leHAgb3V0L2NvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgbHRfY3ZfcHJvZ19jb21waWxlcl9jX289eWVzCkBAIC04MjY0LDcgKzkwMjAsNyBAQAogCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1jIC1vIGZpbGUuJGFjX29iamV4dCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBpZiAkY29tcGlsZXIgc3VwcG9ydHMgLWMgLW8gZmlsZS4kYWNfb2JqZXh0Li4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfY19vK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9jX28rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz1ubwpAQCAtODI4MywxNiArOTAzOSwxNiBAQAogICAgLWUgJ3M6LipGTEFHU31cezAsMVx9IDomJGx0X2NvbXBpbGVyX2ZsYWcgOjsgdCcgXAogICAgLWUgJ3M6IFteIF0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAogICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKLSAgIChldmFsIGVjaG8gIlwiXCRhc19tZTo4Mjg2OiAkbHRfY29tcGlsZVwiIiA+JjUpCisgICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJGx0X2NvbXBpbGVcIiIgPiY1KQogICAgKGV2YWwgIiRsdF9jb21waWxlIiAyPm91dC9jb25mdGVzdC5lcnIpCiAgICBhY19zdGF0dXM9JD8KICAgIGNhdCBvdXQvY29uZnRlc3QuZXJyID4mNQotICAgZWNobyAiJGFzX21lOjgyOTA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAgaWYgKGV4aXQgJGFjX3N0YXR1cykgJiYgdGVzdCAtcyBvdXQvY29uZnRlc3QyLiRhY19vYmpleHQKICAgIHRoZW4KICAgICAgIyBUaGUgY29tcGlsZXIgY2FuIG9ubHkgd2FybiBhbmQgaWdub3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKICAgICAgIyBTbyBzYXkgbm8gaWYgdGhlcmUgYXJlIHdhcm5pbmdzCi0gICAgICRFQ0hPICJYJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID4gb3V0L2NvbmZ0ZXN0LmV4cAorICAgICAkRUNITyAiJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkU0VEICcvXiQvZCcgPiBvdXQvY29uZnRlc3QuZXhwCiAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBvdXQvY29uZnRlc3QuZXJyID5vdXQvY29uZnRlc3QuZXIyCiAgICAgIGlmIHRlc3QgISAtcyBvdXQvY29uZnRlc3QuZXIyIHx8IGRpZmYgb3V0L2NvbmZ0ZXN0LmV4cCBvdXQvY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KICAgICAgICBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz15ZXMKQEAgLTgzNTgsNyArOTExNCw2IEBACiAgIGhhcmRjb2RlX2RpcmVjdD1ubwogICBoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGU9bm8KICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0KICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0KICAgaGFyZGNvZGVfbWludXNfTD1ubwogICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPXVuc3VwcG9ydGVkCkBAIC04NDAyLDEwICs5MTU3LDM5IEBACiAgIG9wZW5ic2QqKQogICAgIHdpdGhfZ251X2xkPW5vCiAgICAgOzsKKyAgbGludXgqIHwgaypic2QqLWdudSB8IGdudSopCisgICAgbGlua19hbGxfZGVwbGlicz1ubworICAgIDs7CiAgIGVzYWMKIAogICBsZF9zaGxpYnM9eWVzCisKKyAgIyBPbiBzb21lIHRhcmdldHMsIEdOVSBsZCBpcyBjb21wYXRpYmxlIGVub3VnaCB3aXRoIHRoZSBuYXRpdmUgbGlua2VyCisgICMgdGhhdCB3ZSdyZSBiZXR0ZXIgb2ZmIHVzaW5nIHRoZSBuYXRpdmUgaW50ZXJmYWNlIGZvciBib3RoLgorICBsdF91c2VfZ251X2xkX2ludGVyZmFjZT1ubwogICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgYWl4KikKKwkjIFRoZSBBSVggcG9ydCBvZiBHTlUgbGQgaGFzIGFsd2F5cyBhc3BpcmVkIHRvIGNvbXBhdGliaWxpdHkKKwkjIHdpdGggdGhlIG5hdGl2ZSBsaW5rZXIuICBIb3dldmVyLCBhcyB0aGUgd2FybmluZyBpbiB0aGUgR05VIGxkCisJIyBibG9jayBzYXlzLCB2ZXJzaW9ucyBiZWZvcmUgMi4xOS41KiBjb3VsZG4ndCByZWFsbHkgY3JlYXRlIHdvcmtpbmcKKwkjIHNoYXJlZCBsaWJyYXJpZXMsIHJlZ2FyZGxlc3Mgb2YgdGhlIGludGVyZmFjZSB1c2VkLgorCWNhc2UgYCRMRCAtdiAyPiYxYCBpbgorCSAgKlwgXChHTlVcIEJpbnV0aWxzXClcIDIuMTkuNSopIDs7CisJICAqXCBcKEdOVVwgQmludXRpbHNcKVwgMi5bMi05XSopIDs7CisJICAqXCBcKEdOVVwgQmludXRpbHNcKVwgWzMtOV0qKSA7OworCSAgKikKKwkgICAgbHRfdXNlX2dudV9sZF9pbnRlcmZhY2U9eWVzCisJICAgIDs7CisJZXNhYworCTs7CisgICAgICAqKQorCWx0X3VzZV9nbnVfbGRfaW50ZXJmYWNlPXllcworCTs7CisgICAgZXNhYworICBmaQorCisgIGlmIHRlc3QgIiRsdF91c2VfZ251X2xkX2ludGVyZmFjZSIgPSB5ZXM7IHRoZW4KICAgICAjIElmIGFyY2hpdmVfY21kcyBydW5zIExELCBub3QgQ0MsIHdsYXJjIHNob3VsZCBiZSBlbXB0eQogICAgIHdsYXJjPScke3dsfScKIApAQCAtODQyMyw2ICs5MjA3LDcgQEAKICAgICBmaQogICAgIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz1ubwogICAgIGNhc2UgYCRMRCAtdiAyPiYxYCBpbgorICAgICAgKkdOVVwgZ29sZCopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsKICAgICAgICpcIFswMV0uKiB8ICpcIDIuWzAtOV0uKiB8ICpcIDIuMTAuKikgOzsgIyBjYXRjaCB2ZXJzaW9ucyA8IDIuMTEKICAgICAgICpcIDIuMTEuOTMuMC4yXCAqKSBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9eWVzIDs7ICMgUkg3LjMgLi4uCiAgICAgICAqXCAyLjExLjkyLjAuMTJcICopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsgIyBNYW5kcmFrZSA4LjIgLi4uCkBAIC04NDM4LDExICs5MjIzLDEyIEBACiAJbGRfc2hsaWJzPW5vCiAJY2F0IDw8X0xUX0VPRiAxPiYyCiAKLSoqKiBXYXJuaW5nOiB0aGUgR05VIGxpbmtlciwgYXQgbGVhc3QgdXAgdG8gcmVsZWFzZSAyLjkuMSwgaXMgcmVwb3J0ZWQKKyoqKiBXYXJuaW5nOiB0aGUgR05VIGxpbmtlciwgYXQgbGVhc3QgdXAgdG8gcmVsZWFzZSAyLjE5LCBpcyByZXBvcnRlZAogKioqIHRvIGJlIHVuYWJsZSB0byByZWxpYWJseSBjcmVhdGUgc2hhcmVkIGxpYnJhcmllcyBvbiBBSVguCiAqKiogVGhlcmVmb3JlLCBsaWJ0b29sIGlzIGRpc2FibGluZyBzaGFyZWQgbGlicmFyaWVzIHN1cHBvcnQuICBJZiB5b3UKLSoqKiByZWFsbHkgY2FyZSBmb3Igc2hhcmVkIGxpYnJhcmllcywgeW91IG1heSB3YW50IHRvIG1vZGlmeSB5b3VyIFBBVEgKLSoqKiBzbyB0aGF0IGEgbm9uLUdOVSBsaW5rZXIgaXMgZm91bmQsIGFuZCB0aGVuIHJlc3RhcnQuCisqKiogcmVhbGx5IGNhcmUgZm9yIHNoYXJlZCBsaWJyYXJpZXMsIHlvdSBtYXkgd2FudCB0byBpbnN0YWxsIGJpbnV0aWxzCisqKiogMi4yMCBvciBhYm92ZSwgb3IgbW9kaWZ5IHlvdXIgUEFUSCBzbyB0aGF0IGEgbm9uLUdOVSBsaW5rZXIgaXMgZm91bmQuCisqKiogWW91IHdpbGwgdGhlbiBuZWVkIHRvIHJlc3RhcnQgdGhlIGNvbmZpZ3VyYXRpb24gcHJvY2Vzcy4KIAogX0xUX0VPRgogICAgICAgZmkKQEAgLTg0NzgsMTAgKzkyNjQsMTIgQEAKICAgICAgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCApIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAogICAgICAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKKyAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCiAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKIAogICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwpAQCAtODQ5OSw2ICs5Mjg3LDExIEBACiAgICAgICBmaQogICAgICAgOzsKIAorICAgIGhhaWt1KikKKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICBsaW5rX2FsbF9kZXBsaWJzPXllcworICAgICAgOzsKKwogICAgIGludGVyaXhbMy05XSopCiAgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8KICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KQEAgLTg1MTQsNyArOTMwNyw3IEBACiAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdzZWQgInMsXixfLCIgJGV4cG9ydF9zeW1ib2xzID4kb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWgsJHNvbmFtZSAke3dsfS0tcmV0YWluLXN5bWJvbHMtZmlsZSwkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bSAke3dsfS0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJwogICAgICAgOzsKIAotICAgIGdudSogfCBsaW51eCogfCB0cGYqIHwgaypic2QqLWdudSkKKyAgICBnbnUqIHwgbGludXgqIHwgdHBmKiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKICAgICAgIHRtcF9kaWV0PW5vCiAgICAgICBpZiB0ZXN0ICIkaG9zdF9vcyIgPSBsaW51eC1kaWV0bGliYzsgdGhlbgogCWNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC04NTI0LDE1ICs5MzE3LDE2IEBACiAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkRUdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbCBcCiAJICYmIHRlc3QgIiR0bXBfZGlldCIgPSBubwogICAgICAgdGhlbgotCXRtcF9hZGRmbGFnPQorCXRtcF9hZGRmbGFnPScgJHBpY19mbGFnJwogCXRtcF9zaGFyZWRmbGFnPSctc2hhcmVkJwogCWNhc2UgJGNjX2Jhc2VuYW1lLCRob3N0X2NwdSBpbgogICAgICAgICBwZ2NjKikJCQkJIyBQb3J0bGFuZCBHcm91cCBDIGNvbXBpbGVyCi0JICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJwogCSAgdG1wX2FkZGZsYWc9JyAkcGljX2ZsYWcnCiAJICA7OwotCXBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KikJIyBQb3J0bGFuZCBHcm91cCBmNzcgYW5kIGY5MCBjb21waWxlcnMKLQkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKwkJCQkJIyBQb3J0bGFuZCBHcm91cCBmNzcgYW5kIGY5MCBjb21waWxlcnMKKwkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIHRtcF9hZGRmbGFnPScgJHBpY19mbGFnIC1Nbm9tYWluJyA7OwogCWVjYyosaWE2NCogfCBpY2MqLGlhNjQqKQkjIEludGVsIEMgY29tcGlsZXIgb24gaWE2NAogCSAgdG1wX2FkZGZsYWc9JyAtaV9keW5hbWljJyA7OwpAQCAtODU0MywxMyArOTMzNywxNyBAQAogCWxmOTUqKQkJCQkjIExhaGV5IEZvcnRyYW4gOC4xCiAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0KIAkgIHRtcF9zaGFyZWRmbGFnPSctLXNoYXJlZCcgOzsKLQl4bFtjQ10qKQkJCSMgSUJNIFhMIEMgOC4wIG9uIFBQQyAoZGVhbCB3aXRoIHhsZiBiZWxvdykKKwl4bFtjQ10qIHwgYmd4bFtjQ10qIHwgbXBpeGxbY0NdKikgIyBJQk0gWEwgQyA4LjAgb24gUFBDIChkZWFsIHdpdGggeGxmIGJlbG93KQogCSAgdG1wX3NoYXJlZGZsYWc9Jy1xbWtzaHJvYmonCiAJICB0bXBfYWRkZmxhZz0gOzsKKwludmNjKikJIyBDdWRhIENvbXBpbGVyIERyaXZlciAyLjIKKwkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIGNvbXBpbGVyX25lZWRzX29iamVjdD15ZXMKKwkgIDs7CiAJZXNhYwogCWNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgogCSpTdW5cIEMqKQkJCSMgU3VuIEMgNS45Ci0JICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHt3bH0tLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHt3bH0tLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIGNvbXBpbGVyX25lZWRzX29iamVjdD15ZXMKIAkgIHRtcF9zaGFyZWRmbGFnPSctRycgOzsKIAkqU3VuXCBGKikJCQkjIFN1biBGb3J0cmFuIDguMwpAQCAtODU2NSwxNyArOTM2MywxNiBAQAogICAgICAgICBmaQogCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KLQl4bGYqKQorCXhsZiogfCBiZ2YqIHwgYmd4bGYqIHwgbXBpeGxmKikKIAkgICMgSUJNIFhMIEZvcnRyYW4gMTAuMSBvbiBQUEMgY2Fubm90IGNyZWF0ZSBzaGFyZWQgbGlicyBpdHNlbGYKIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwotCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLQkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwotCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCiAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCiAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CiAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgogCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKIAkgIGZpCiAJICA7OwogCWVzYWMKQEAgLTg1ODQsMTMgKzkzODEsMTMgQEAKICAgICAgIGZpCiAgICAgICA7OwogCi0gICAgbmV0YnNkKikKKyAgICBuZXRic2QqIHwgbmV0YnNkZWxmKi1nbnUpCiAgICAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPi9kZXYvbnVsbDsgdGhlbgogCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKIAl3bGFyYz0KICAgICAgIGVsc2UKLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGZpCiAgICAgICA7OwogCkBAIC04NjA4LDggKzk0MDUsOCBAQAogCiBfTFRfRU9GCiAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlsZF9zaGxpYnM9bm8KICAgICAgIGZpCkBAIC04NjU1LDggKzk0NTIsOCBAQAogCiAgICAgKikKICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlsZF9zaGxpYnM9bm8KICAgICAgIGZpCkBAIC04Njk2LDggKzk0OTMsMTAgQEAKICAgICAgIGVsc2UKIAkjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KIAkjIC1DIG1lYW5zIGRlbWFuZ2xlIHRvIEFJWCBubSwgYnV0IG1lYW5zIGRvbid0IGRlbWFuZ2xlIHdpdGggR05VIG5tCisJIyBBbHNvLCBBSVggbm0gdHJlYXRzIHdlYWsgZGVmaW5lZCBzeW1ib2xzIGxpa2Ugb3RoZXIgZ2xvYmFsCisJIyBkZWZpbmVkIHN5bWJvbHMsIHdoZXJlYXMgR05VIG5tIG1hcmtzIHRoZW0gYXMgIlciLgogCWlmICROTSAtViAyPiYxIHwgJEdSRVAgJ0dOVScgPiAvZGV2L251bGw7IHRoZW4KLQkgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpKSAmJiAoc3Vic3RyKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCisJICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gLUJwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSB8fCAoXCQgMiA9PSAiVyIpKSAmJiAoc3Vic3RyKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAJZWxzZQogCSAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NIC1CQ3BnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpKSAmJiAoc3Vic3RyKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAJZmkKQEAgLTg3NTksNiArOTU1OCw3IEBACiAJaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCiAJICBzaGFyZWRfZmxhZz0iJHNoYXJlZF9mbGFnICInJHt3bH0tRycKIAlmaQorCWxpbmtfYWxsX2RlcGxpYnM9bm8KICAgICAgIGVsc2UKIAkjIG5vdCB1c2luZyBnY2MKIAlpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgpAQCAtODc4NCw3ICs5NTg0LDEzIEBACiAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorZWxzZQorICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIAogaW50CkBAIC04Nzk3LDI1ICs5NjAzLDMyIEBACiBfQUNFT0YKIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKIAotbHRfYWl4X2xpYnBhdGhfc2VkPScKLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0JL14wLyB7Ci0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotCSAgICBwCi0JfQotICAgIH0nCi1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi1maQorICBsdF9haXhfbGlicGF0aF9zZWQ9JworICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworCSAgL14wLyB7CisJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKwkgICAgICBwCisJICB9CisgICAgICB9JworICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisgIGZpCiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKyAgZmkKKworZmkKKworICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCitmaQogCiAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuICRFQ0hPICJYJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgfCAkWHNlZDsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgogICAgICAgZWxzZQogCWlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCiAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKQEAgLTg4MjQsNyArOTYzNywxMyBAQAogCWVsc2UKIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorZWxzZQorICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIAogaW50CkBAIC04ODM3LDMwICs5NjU2LDQyIEBACiBfQUNFT0YKIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKIAotbHRfYWl4X2xpYnBhdGhfc2VkPScKLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0JL14wLyB7Ci0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotCSAgICBwCi0JfQotICAgIH0nCi1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi1maQorICBsdF9haXhfbGlicGF0aF9zZWQ9JworICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworCSAgL14wLyB7CisJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKwkgICAgICBwCisJICB9CisgICAgICB9JworICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisgIGZpCiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKyAgZmkKKworZmkKKworICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCitmaQogCiAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAogCSAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgogCSAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1iZXJub3RvaycKIAkgIGFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tYmVyb2snCi0JICAjIEV4cG9ydGVkIHN5bWJvbHMgY2FuIGJlIHB1bGxlZCBpbnRvIHNoYXJlZCBvYmplY3RzIGZyb20gYXJjaGl2ZXMKLQkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSckY29udmVuaWVuY2UnCisJICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisJICAgICMgV2Ugb25seSB1c2UgdGhpcyBjb2RlIGZvciBHTlUgbGRzIHRoYXQgc3VwcG9ydCAtLXdob2xlLWFyY2hpdmUuCisJICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScke3dsfS0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIGVsc2UKKwkgICAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCisJICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSckY29udmVuaWVuY2UnCisJICBmaQogCSAgYXJjaGl2ZV9jbWRzX25lZWRfbGM9eWVzCiAJICAjIFRoaXMgaXMgc2ltaWxhciB0byBob3cgQUlYIHRyYWRpdGlvbmFsbHkgYnVpbGRzIGl0cyBzaGFyZWQgbGlicmFyaWVzLgogCSAgYXJjaGl2ZV9leHBzeW1fY21kcz0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICR7d2x9LWJub2VudHJ5ICRjb21waWxlcl9mbGFncyAke3dsfS1iRTokZXhwb3J0X3N5bWJvbHMke2FsbG93X3VuZGVmaW5lZF9mbGFnfX4kQVIgJEFSX0ZMQUdTICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lJHJlbGVhc2UuYSAkb3V0cHV0X29iamRpci8kc29uYW1lJwpAQCAtODg5MiwyMCArOTcyMyw2NCBAQAogICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0gICAgICBsaWJleHQ9bGliCi0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYCRFQ0hPICJYJGRlcGxpYnMiIHwgJFhzZWQgLWUgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICBjbCopCisJIyBOYXRpdmUgTVNWQworCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCisJZmlsZV9saXN0X3NwZWM9J0AnCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKwlsaWJleHQ9bGliCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisJc2hyZXh0X2NtZHM9Ii5kbGwiCisJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKwkgIGVsc2UKKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKwkgIGZpfgorCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorCSAgbGlua25hbWVzPScKKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCisJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKwlleGNsdWRlX2V4cHN5bXM9J19OVUxMX0lNUE9SVF9ERVNDUklQVE9SfF9JTVBPUlRfREVTQ1JJUFRPUl8uKicKKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisJIyBEb24ndCB1c2UgcmFubGliCisJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisJICAgICouZXhlfCouRVhFKSA7OworCSAgICAqKQorCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorCSAgICAgIDs7CisJICBlc2FjfgorCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisJICBmaScKKwk7OworICAgICAgKikKKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKwlsaWJleHQ9bGliCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisJc2hyZXh0X2NtZHM9Ii5kbGwiCisJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisJOzsKKyAgICAgIGVzYWMKICAgICAgIDs7CiAKICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQpAQCAtODkxNSw3ICs5NzkwLDEyIEBACiAgIGhhcmRjb2RlX2RpcmVjdD1ubwogICBoYXJkY29kZV9hdXRvbWF0aWM9eWVzCiAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9dW5zdXBwb3J0ZWQKLSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JycKKyAgaWYgdGVzdCAiJGx0X2N2X2xkX2ZvcmNlX2xvYWQiID0gInllcyI7IHRoZW4KKyAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlICR7d2x9LWZvcmNlX2xvYWQsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAnCisKKyAgZWxzZQorICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScnCisgIGZpCiAgIGxpbmtfYWxsX2RlcGxpYnM9eWVzCiAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPSIkX2x0X2Rhcl9hbGxvd191bmRlZmluZWQiCiAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC04OTIzLDcgKzk4MDMsNyBAQAogICAgICAqKSBfbHRfZGFyX2Nhbl9zaGFyZWQ9JEdDQyA7OwogICBlc2FjCiAgIGlmIHRlc3QgIiRfbHRfZGFyX2Nhbl9zaGFyZWQiID0gInllcyI7IHRoZW4KLSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1lY2hvCisgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9ZnVuY19lY2hvX2FsbAogICAgIGFyY2hpdmVfY21kcz0iXCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJF9sdF9kYXJfc2luZ2xlX21vZCR7X2x0X2RzeW11dGlsfSIKICAgICBtb2R1bGVfY21kcz0iXCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJHtfbHRfZHN5bXV0aWx9IgogICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9InNlZCAncyxeLF8sJyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJHtfbHRfZGFyX3NpbmdsZV9tb2R9JHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKQEAgLTg5NDEsMTAgKzk4MjEsNiBAQAogICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwogICAgICAgOzsKIAotICAgIGZyZWVic2QxKikKLSAgICAgIGxkX3NobGlicz1ubwotICAgICAgOzsKLQogICAgICMgRnJlZUJTRCAyLjIuWzAxMl0gYWxsb3dzIHVzIHRvIGluY2x1ZGUgYysrcnQwLm8gdG8gZ2V0IEMrKyBjb25zdHJ1Y3RvcgogICAgICMgc3VwcG9ydC4gIEZ1dHVyZSB2ZXJzaW9ucyBkbyB0aGlzIGF1dG9tYXRpY2FsbHksIGJ1dCBhbiBleHBsaWNpdCBjKytydDAubwogICAgICMgZG9lcyBub3QgYnJlYWsgYW55dGhpbmcsIGFuZCBoZWxwcyBzaWduaWZpY2FudGx5IChhdCB0aGUgY29zdCBvZiBhIGxpdHRsZQpAQCAtODk1Nyw3ICs5ODMzLDcgQEAKICAgICAgIDs7CiAKICAgICAjIFVuZm9ydHVuYXRlbHksIG9sZGVyIHZlcnNpb25zIG9mIEZyZWVCU0QgMiBkbyBub3QgaGF2ZSB0aGlzIGZlYXR1cmUuCi0gICAgZnJlZWJzZDIqKQorICAgIGZyZWVic2QyLiopCiAgICAgICBhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCiAgICAgICBoYXJkY29kZV9taW51c19MPXllcwpAQCAtODk2Niw3ICs5ODQyLDcgQEAKIAogICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCiAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCiAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCkBAIC04OTc0LDcgKzk4NTAsNyBAQAogCiAgICAgaHB1eDkqKQogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgIGVsc2UKIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgZmkKQEAgLTg5ODksMTQgKzk4NjUsMTMgQEAKICAgICAgIDs7CiAKICAgICBocHV4MTAqKQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgLWEgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBlbHNlCiAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogICAgICAgZmkKICAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgogCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9JytiICRsaWJkaXInCiAJaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06CiAJaGFyZGNvZGVfZGlyZWN0PXllcwogCWhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZT15ZXMKQEAgLTkwMDgsMTYgKzk4ODMsMTYgQEAKICAgICAgIDs7CiAKICAgICBocHV4MTEqKQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgLWEgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCiAJY2FzZSAkaG9zdF9jcHUgaW4KIAlocHBhKjY0KikKIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCWlhNjQqKQotCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAkqKQotCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJZXNhYwogICAgICAgZWxzZQpAQCAtOTAyOSw3ICs5OTA0LDQ2IEBACiAJICBhcmNoaXZlX2NtZHM9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJKikKLQkgIGFyY2hpdmVfY21kcz0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisKKwkgICMgT2xkZXIgdmVyc2lvbnMgb2YgdGhlIDExLjAwIGNvbXBpbGVyIGRvIG5vdCB1bmRlcnN0YW5kIC1iIHlldAorCSAgIyAoSFA5MjQ1My0wMSBBLjExLjAxLjIwIGRvZXNuJ3QsIEhQOTI0NTMtMDEgQi4xMS5YLjM1MTc1LTM1MTc2LkdQIGRvZXMpCisJICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRDQyB1bmRlcnN0YW5kcyAtYiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBpZiAkQ0MgdW5kZXJzdGFuZHMgLWIuLi4gIiA+JjY7IH0KK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9fYis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGx0X2N2X3Byb2dfY29tcGlsZXJfX2I9bm8KKyAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisgICBMREZMQUdTPSIkTERGTEFHUyAtYiIKKyAgIGVjaG8gIiRsdF9zaW1wbGVfbGlua190ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAorICAgaWYgKGV2YWwgJGFjX2xpbmsgMj5jb25mdGVzdC5lcnIpICYmIHRlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0OyB0aGVuCisgICAgICMgVGhlIGxpbmtlciBjYW4gb25seSB3YXJuIGFuZCBpZ25vcmUgdGhlIG9wdGlvbiBpZiBub3QgcmVjb2duaXplZAorICAgICAjIFNvIHNheSBubyBpZiB0aGVyZSBhcmUgd2FybmluZ3MKKyAgICAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICAgICAjIEFwcGVuZCBhbnkgZXJyb3JzIHRvIHRoZSBjb25maWcubG9nLgorICAgICAgIGNhdCBjb25mdGVzdC5lcnIgMT4mNQorICAgICAgICRFQ0hPICIkX2x0X2xpbmtlcl9ib2lsZXJwbGF0ZSIgfCAkU0VEICcvXiQvZCcgPiBjb25mdGVzdC5leHAKKyAgICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjIKKyAgICAgICBpZiBkaWZmIGNvbmZ0ZXN0LmV4cCBjb25mdGVzdC5lcjIgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgbHRfY3ZfcHJvZ19jb21waWxlcl9fYj15ZXMKKyAgICAgICBmaQorICAgICBlbHNlCisgICAgICAgbHRfY3ZfcHJvZ19jb21waWxlcl9fYj15ZXMKKyAgICAgZmkKKyAgIGZpCisgICAkUk0gLXIgY29uZnRlc3QqCisgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX19iIiA+JjUKKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9fYiIgPiY2OyB9CisKK2lmIHRlc3QgeCIkbHRfY3ZfcHJvZ19jb21waWxlcl9fYiIgPSB4eWVzOyB0aGVuCisgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKK2Vsc2UKKyAgICBhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCitmaQorCiAJICA7OwogCWVzYWMKICAgICAgIGZpCkBAIC05MDU3LDI2ICs5OTcxLDM5IEBACiAKICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAogCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9CitpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwotaW50IGZvbyh2b2lkKSB7fQoraW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQogX0FDRU9GCiBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0KKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCitlbHNlCisgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQorCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCWZpCiAgICAgICBlbHNlCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAgICAgICBmaQogICAgICAgYXJjaGl2ZV9jbWRzX25lZWRfbGM9J25vJwogICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwpAQCAtOTA4NSw3ICsxMDAxMiw3IEBACiAgICAgICBsaW5rX2FsbF9kZXBsaWJzPXllcwogICAgICAgOzsKIAotICAgIG5ldGJzZCopCisgICAgbmV0YnNkKiB8IG5ldGJzZGVsZiotZ251KQogICAgICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4vZGV2L251bGw7IHRoZW4KIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnICAjIGEub3V0CiAgICAgICBlbHNlCkBAIC05MTM4LDE3ICsxMDA2NSwxNyBAQAogICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwogICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICBhcmNoaXZlX2NtZHM9JyRFQ0hPICJMSUJSQVJZICRsaWJuYW1lIElOSVRJTlNUQU5DRSIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gIkRFU0NSSVBUSU9OIFwiJGxpYm5hbWVcIiIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPIERBVEEgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPICIgU0lOR0xFIE5PTlNIQVJFRCIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPIEVYUE9SVFMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVteGV4cCAkbGlib2JqcyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JENDIC1aZGxsIC1aY3J0ZGxsIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKKyAgICAgIGFyY2hpdmVfY21kcz0nJEVDSE8gIkxJQlJBUlkgJGxpYm5hbWUgSU5JVElOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwiIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZWNobyBEQVRBID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lY2hvICIgU0lOR0xFIE5PTlNIQVJFRCIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVjaG8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZW14ZXhwICRsaWJvYmpzID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJwogICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0nZW14aW1wIC1vICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmEgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJwogICAgICAgOzsKIAogICAgIG9zZjMqKQogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgICAgICBlbHNlCiAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgICAgICBmaQogICAgICAgYXJjaGl2ZV9jbWRzX25lZWRfbGM9J25vJwogICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwpAQCAtOTE1OCwxMyArMTAwODUsMTMgQEAKICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwogICAgICAgZWxzZQogCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2ZvciBpIGluIGBjYXQgJGV4cG9ydF9zeW1ib2xzYDsgZG8gcHJpbnRmICIlcyAlc1xcbiIgLWV4cG9ydGVkX3N5bWJvbCAiXCRpIiA+PiAkbGliLmV4cDsgZG9uZTsgcHJpbnRmICIlc1xcbiIgIi1oaWRkZW4iPj4gJGxpYi5leHB+Ci0JJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICRjb21waWxlcl9mbGFncyAkbGlib2JqcyAkZGVwbGlicyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4kUk0gJGxpYi5leHAnCisJJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICRjb21waWxlcl9mbGFncyAkbGlib2JqcyAkZGVwbGlicyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4kUk0gJGxpYi5leHAnCiAKIAkjIEJvdGggYyBhbmQgY3h4IGNvbXBpbGVyIHN1cHBvcnQgLXJwYXRoIGRpcmVjdGx5CiAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLXJwYXRoICRsaWJkaXInCkBAIC05MTc3LDkgKzEwMTA0LDkgQEAKICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAJd2xhcmM9JyR7d2x9JwotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwogICAgICAgZWxzZQogCWNhc2UgYCRDQyAtViAyPiYxYCBpbgogCSoiQ29tcGlsZXJzIDUuMCIqKQpAQCAtOTM2Nyw0NCArMTAyOTQsNTAgQEAKICAgICAgICMgdG8gbGQsIGRvbid0IGFkZCAtbGMgYmVmb3JlIC1sZ2NjLgogICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIC1sYyBzaG91bGQgYmUgZXhwbGljaXRseSBsaW5rZWQgaW4iID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAtbGMgc2hvdWxkIGJlIGV4cGxpY2l0bHkgbGlua2VkIGluLi4uICIgPiY2OyB9Ci0gICAgICAkUk0gY29uZnRlc3QqCi0gICAgICBlY2hvICIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKK2lmICR7bHRfY3ZfYXJjaGl2ZV9jbWRzX25lZWRfbGMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICAkUk0gY29uZnRlc3QqCisJZWNobyAiJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0CiAKLSAgICAgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQorCWlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQogICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogICBhY19zdGF0dXM9JD8KICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gMj5jb25mdGVzdC5lcnI7IHRoZW4KLSAgICAgICAgc29uYW1lPWNvbmZ0ZXN0Ci0gICAgICAgIGxpYj1jb25mdGVzdAotICAgICAgICBsaWJvYmpzPWNvbmZ0ZXN0LiRhY19vYmpleHQKLSAgICAgICAgZGVwbGlicz0KLSAgICAgICAgd2w9JGx0X3Byb2dfY29tcGlsZXJfd2wKLQlwaWNfZmxhZz0kbHRfcHJvZ19jb21waWxlcl9waWMKLSAgICAgICAgY29tcGlsZXJfZmxhZ3M9LXYKLSAgICAgICAgbGlua2VyX2ZsYWdzPS12Ci0gICAgICAgIHZlcnN0cmluZz0KLSAgICAgICAgb3V0cHV0X29iamRpcj0uCi0gICAgICAgIGxpYm5hbWU9Y29uZnRlc3QKLSAgICAgICAgbHRfc2F2ZV9hbGxvd191bmRlZmluZWRfZmxhZz0kYWxsb3dfdW5kZWZpbmVkX2ZsYWcKLSAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Ci0gICAgICAgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhcmNoaXZlX2NtZHMgMlw+XCYxIFx8ICRHUkVQIFwiIC1sYyBcIiBcPi9kZXYvbnVsbCAyXD5cJjFcIiI7IH0gPiY1CisJICBzb25hbWU9Y29uZnRlc3QKKwkgIGxpYj1jb25mdGVzdAorCSAgbGlib2Jqcz1jb25mdGVzdC4kYWNfb2JqZXh0CisJICBkZXBsaWJzPQorCSAgd2w9JGx0X3Byb2dfY29tcGlsZXJfd2wKKwkgIHBpY19mbGFnPSRsdF9wcm9nX2NvbXBpbGVyX3BpYworCSAgY29tcGlsZXJfZmxhZ3M9LXYKKwkgIGxpbmtlcl9mbGFncz0tdgorCSAgdmVyc3RyaW5nPQorCSAgb3V0cHV0X29iamRpcj0uCisJICBsaWJuYW1lPWNvbmZ0ZXN0CisJICBsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnPSRhbGxvd191bmRlZmluZWRfZmxhZworCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9CisJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYXJjaGl2ZV9jbWRzIDJcPlwmMSBcfCAkR1JFUCBcIiAtbGMgXCIgXD4vZGV2L251bGwgMlw+XCYxXCIiOyB9ID4mNQogICAoZXZhbCAkYXJjaGl2ZV9jbWRzIDJcPlwmMSBcfCAkR1JFUCBcIiAtbGMgXCIgXD4vZGV2L251bGwgMlw+XCYxKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotICAgICAgICB0aGVuCi0JICBhcmNoaXZlX2NtZHNfbmVlZF9sYz1ubwotICAgICAgICBlbHNlCi0JICBhcmNoaXZlX2NtZHNfbmVlZF9sYz15ZXMKLSAgICAgICAgZmkKLSAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWcKLSAgICAgIGVsc2UKLSAgICAgICAgY2F0IGNvbmZ0ZXN0LmVyciAxPiY1Ci0gICAgICBmaQotICAgICAgJFJNIGNvbmZ0ZXN0KgotICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhcmNoaXZlX2NtZHNfbmVlZF9sYyIgPiY1Ci0kYXNfZWNobyAiJGFyY2hpdmVfY21kc19uZWVkX2xjIiA+JjY7IH0KKwkgIHRoZW4KKwkgICAgbHRfY3ZfYXJjaGl2ZV9jbWRzX25lZWRfbGM9bm8KKwkgIGVsc2UKKwkgICAgbHRfY3ZfYXJjaGl2ZV9jbWRzX25lZWRfbGM9eWVzCisJICBmaQorCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWcKKwllbHNlCisJICBjYXQgY29uZnRlc3QuZXJyIDE+JjUKKwlmaQorCSRSTSBjb25mdGVzdCoKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJjaGl2ZV9jbWRzX25lZWRfbGMiID4mNQorJGFzX2VjaG8gIiRsdF9jdl9hcmNoaXZlX2NtZHNfbmVlZF9sYyIgPiY2OyB9CisgICAgICBhcmNoaXZlX2NtZHNfbmVlZF9sYz0kbHRfY3ZfYXJjaGl2ZV9jbWRzX25lZWRfbGMKICAgICAgIDs7CiAgICAgZXNhYwogICBmaQpAQCAtOTU2MiwxMSArMTA0OTUsNiBAQAogCiAKIAotCi0KLQotCi0KICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBkeW5hbWljIGxpbmtlciBjaGFyYWN0ZXJpc3RpY3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZHluYW1pYyBsaW5rZXIgY2hhcmFjdGVyaXN0aWNzLi4uICIgPiY2OyB9CiAKQEAgLTk1NzUsMTYgKzEwNTAzLDIzIEBACiAgICAgZGFyd2luKikgbHRfYXdrX2FyZz0iL15saWJyYXJpZXM6LywvTFIvIiA7OwogICAgICopIGx0X2F3a19hcmc9Ii9ebGlicmFyaWVzOi8iIDs7CiAgIGVzYWMKLSAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJENDIC1wcmludC1zZWFyY2gtZGlycyB8IGF3ayAkbHRfYXdrX2FyZyB8ICRTRUQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgInMsPS8sLyxnImAKLSAgaWYgJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7JyA+L2Rldi9udWxsIDsgdGhlbgorICBjYXNlICRob3N0X29zIGluCisgICAgbWluZ3cqIHwgY2VnY2MqKSBsdF9zZWRfc3RyaXBfZXE9InMsPVwoW0EtWmEtel06XCksXDEsZyIgOzsKKyAgICAqKSBsdF9zZWRfc3RyaXBfZXE9InMsPS8sLyxnIiA7OworICBlc2FjCisgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRDQyAtcHJpbnQtc2VhcmNoLWRpcnMgfCBhd2sgJGx0X2F3a19hcmcgfCAkU0VEIC1lICJzL15saWJyYXJpZXM6Ly8iIC1lICRsdF9zZWRfc3RyaXBfZXFgCisgIGNhc2UgJGx0X3NlYXJjaF9wYXRoX3NwZWMgaW4KKyAgKlw7KikKICAgICAjIGlmIHRoZSBwYXRoIGNvbnRhaW5zICI7IiB0aGVuIHdlIGFzc3VtZSBpdCB0byBiZSB0aGUgc2VwYXJhdG9yCiAgICAgIyBvdGhlcndpc2UgZGVmYXVsdCB0byB0aGUgc3RhbmRhcmQgcGF0aCBzZXBhcmF0b3IgKGkuZS4gIjoiKSAtIGl0IGlzCiAgICAgIyBhc3N1bWVkIHRoYXQgbm8gcGFydCBvZiBhIG5vcm1hbCBwYXRobmFtZSBjb250YWlucyAiOyIgYnV0IHRoYXQgc2hvdWxkCiAgICAgIyBva2F5IGluIHRoZSByZWFsIHdvcmxkIHdoZXJlICI7IiBpbiBkaXJwYXRocyBpcyBpdHNlbGYgcHJvYmxlbWF0aWMuCi0gICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotICBlbHNlCi0gICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotICBmaQorICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICdzLzsvIC9nJ2AKKyAgICA7OworICAqKQorICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorICAgIDs7CisgIGVzYWMKICAgIyBPaywgbm93IHdlIGhhdmUgdGhlIHBhdGgsIHNlcGFyYXRlZCBieSBzcGFjZXMsIHdlIGNhbiBzdGVwIHRocm91Z2ggaXQKICAgIyBhbmQgYWRkIG11bHRpbGliIGRpciBpZiBuZWNlc3NhcnkuCiAgIGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPQpAQCAtOTU5Nyw3ICsxMDUzMiw3IEBACiAJbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWM9IiRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyAkbHRfc3lzX3BhdGgiCiAgICAgZmkKICAgZG9uZQotICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMgfCBhd2sgJworICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjIiB8IGF3ayAnCiBCRUdJTiB7UlM9IiAiOyBGUz0iL3xcbiI7fSB7CiAgIGx0X2Zvbz0iIjsKICAgbHRfY291bnQ9MDsKQEAgLTk2MTcsNyArMTA1NTIsMTMgQEAKICAgaWYgKGx0X2ZvbyAhPSAiIikgeyBsdF9mcmVxW2x0X2Zvb10rKzsgfQogICBpZiAobHRfZnJlcVtsdF9mb29dID09IDEpIHsgcHJpbnQgbHRfZm9vOyB9CiB9J2AKLSAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAkbHRfc2VhcmNoX3BhdGhfc3BlY2AKKyAgIyBBV0sgcHJvZ3JhbSBhYm92ZSBlcnJvbmVvdXNseSBwcmVwZW5kcyAnLycgdG8gQzovZG9zL3BhdGhzCisgICMgZm9yIHRoZXNlIGhvc3RzLgorICBjYXNlICRob3N0X29zIGluCisgICAgbWluZ3cqIHwgY2VnY2MqKSBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHxcCisgICAgICAkU0VEICdzLC9cKFtBLVphLXpdOlwpLFwxLGcnYCA7OworICBlc2FjCisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRsdF9OTDJTUGAKIGVsc2UKICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvbGliIC91c3IvbGliIC91c3IvbG9jYWwvbGliIgogZmkKQEAgLTk2NDMsNyArMTA1ODQsNyBAQAogCiBjYXNlICRob3N0X29zIGluCiBhaXgzKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICRsaWJuYW1lLmEnCiAgIHNobGlicGF0aF92YXI9TElCUEFUSAogCkBAIC05NjUyLDcgKzEwNTkzLDcgQEAKICAgOzsKIAogYWl4WzQtOV0qKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKQEAgLTk3MDUsNyArMTA2NDYsNyBAQAogICBtNjhrKQogICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuaXhsaWJyYXJ5ICRsaWJuYW1lLmEnCiAgICAgIyBDcmVhdGUgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSBlbnRyaWVzIGluIC9zeXMvbGlicy4KLSAgICBmaW5pc2hfZXZhbD0nZm9yIGxpYiBpbiBgbHMgJGxpYmRpci8qLml4bGlicmFyeSAyPi9kZXYvbnVsbGA7IGRvIGxpYm5hbWU9YCRFQ0hPICJYJGxpYiIgfCAkWHNlZCAtZSAnXCcncyVeLiovXChbXi9dKlwpXC5peGxpYnJhcnkkJVwxJSdcJydgOyB0ZXN0ICRSTSAvc3lzL2xpYnMvJHtsaWJuYW1lfV9peGxpYnJhcnkuYTsgJHNob3cgImNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEiOyBjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIHx8IGV4aXQgMTsgZG9uZScKKyAgICBmaW5pc2hfZXZhbD0nZm9yIGxpYiBpbiBgbHMgJGxpYmRpci8qLml4bGlicmFyeSAyPi9kZXYvbnVsbGA7IGRvIGxpYm5hbWU9YGZ1bmNfZWNob19hbGwgIiRsaWIiIHwgJFNFRCAnXCcncyVeLiovXChbXi9dKlwpXC5peGxpYnJhcnkkJVwxJSdcJydgOyB0ZXN0ICRSTSAvc3lzL2xpYnMvJHtsaWJuYW1lfV9peGxpYnJhcnkuYTsgJHNob3cgImNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEiOyBjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIHx8IGV4aXQgMTsgZG9uZScKICAgICA7OwogICBlc2FjCiAgIDs7CkBAIC05NzE3LDcgKzEwNjU4LDcgQEAKICAgOzsKIAogYnNkaVs0NV0qKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCiAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCkBAIC05NzM2LDggKzEwNjc3LDkgQEAKICAgbmVlZF92ZXJzaW9uPW5vCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogCi0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisgIHllcywqKQorICAgICMgZ2NjCiAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCiAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CkBAIC05NzU4LDM2ICsxMDcwMCw4MyBAQAogICAgIGN5Z3dpbiopCiAgICAgICAjIEN5Z3dpbiBETExzIHVzZSAnY3lnJyBwcmVmaXggcmF0aGVyIHRoYW4gJ2xpYicKICAgICAgIHNvbmFtZV9zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvY3lnLydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIgL2xpYi93MzJhcGkgL2xpYiAvdXNyL2xvY2FsL2xpYiIKKworICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIC91c3IvbGliL3czMmFwaSIKICAgICAgIDs7CiAgICAgbWluZ3cqIHwgY2VnY2MqKQogICAgICAgIyBNaW5HVyBETExzIHVzZSB0cmFkaXRpb25hbCAnbGliJyBwcmVmaXgKICAgICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJENDIC1wcmludC1zZWFyY2gtZGlycyB8ICRHUkVQICJebGlicmFyaWVzOiIgfCAkU0VEIC1lICJzL15saWJyYXJpZXM6Ly8iIC1lICJzLD0vLC8sZyJgCi0gICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KLSAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSCBwcmludGVkIGJ5Ci0gICAgICAgICMgbWluZ3cgZ2NjLCBidXQgd2UgYXJlIHJ1bm5pbmcgb24gQ3lnd2luLiBHY2MgcHJpbnRzIGl0cyBzZWFyY2gKLSAgICAgICAgIyBwYXRoIHdpdGggOyBzZXBhcmF0b3JzLCBhbmQgd2l0aCBkcml2ZSBsZXR0ZXJzLiBXZSBjYW4gaGFuZGxlIHRoZQotICAgICAgICAjIGRyaXZlIGxldHRlcnMgKGN5Z3dpbiBmaWxldXRpbHMgdW5kZXJzdGFuZHMgdGhlbSksIHNvIGxlYXZlIHRoZW0sCi0gICAgICAgICMgZXNwZWNpYWxseSBhcyB3ZSBtaWdodCBwYXNzIGZpbGVzIGZvdW5kIHRoZXJlIHRvIGEgbWluZ3cgb2JqZHVtcCwKLSAgICAgICAgIyB3aGljaCB3b3VsZG4ndCB1bmRlcnN0YW5kIGEgY3lnd2luaWZpZWQgcGF0aC4gQWhoLgotICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotICAgICAgZWxzZQotICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotICAgICAgZmkKICAgICAgIDs7CiAgICAgcHczMiopCiAgICAgICAjIHB3MzIgRExMcyB1c2UgJ3B3JyBwcmVmaXggcmF0aGVyIHRoYW4gJ2xpYicKICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKICAgICAgIDs7CiAgICAgZXNhYworICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgOzsKKworICAqLGNsKikKKyAgICAjIE5hdGl2ZSBNU1ZDCisgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisKKyAgICBjYXNlICRidWlsZF9vcyBpbgorICAgIG1pbmd3KikKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKyAgICAgIElGUz0nOycKKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKyAgICAgIGRvCisgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKyAgICAgIGRvbmUKKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisgICAgICA7OworICAgIGN5Z3dpbiopCisgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKyAgICAgIDs7CisgICAgKikKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorICAgICAgZWxzZQorICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisgICAgICBmaQorICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisgICAgICA7OworICAgIGVzYWMKKworICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKyAgICAgICAkUk0gXCRkbHBhdGgnCisgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKICAgICA7OwogCiAgICopCisgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCiAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKICAgICA7OwogICBlc2FjCi0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCiAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgogICBzaGxpYnBhdGhfdmFyPVBBVEgKICAgOzsKQEAgLTk4MDgsNyArMTA3OTcsNyBAQAogICA7OwogCiBkZ3V4KikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCkBAIC05ODE2LDEwICsxMDgwNSw2IEBACiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIDs7CiAKLWZyZWVic2QxKikKLSAgZHluYW1pY19saW5rZXI9bm8KLSAgOzsKLQogZnJlZWJzZCogfCBkcmFnb25mbHkqKQogICAjIERyYWdvbkZseSBkb2VzIG5vdCBoYXZlIGFvdXQuICBXaGVuL2lmIHRoZXkgaW1wbGVtZW50IGEgbmV3CiAgICMgdmVyc2lvbmluZyBtZWNoYW5pc20sIGFkanVzdCB0aGlzLgpAQCAtOTgyNyw3ICsxMDgxMiw3IEBACiAgICAgb2JqZm9ybWF0PWAvdXNyL2Jpbi9vYmpmb3JtYXRgCiAgIGVsc2UKICAgICBjYXNlICRob3N0X29zIGluCi0gICAgZnJlZWJzZFsxMjNdKikgb2JqZm9ybWF0PWFvdXQgOzsKKyAgICBmcmVlYnNkWzIzXS4qKSBvYmpmb3JtYXQ9YW91dCA7OwogICAgICopIG9iamZvcm1hdD1lbGYgOzsKICAgICBlc2FjCiAgIGZpCkBAIC05ODQ1LDcgKzEwODMwLDcgQEAKICAgZXNhYwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBjYXNlICRob3N0X29zIGluCi0gIGZyZWVic2QyKikKKyAgZnJlZWJzZDIuKikKICAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCiAgICAgOzsKICAgZnJlZWJzZDMuWzAxXSogfCBmcmVlYnNkZWxmMy5bMDFdKikKQEAgLTk4NjUsMTIgKzEwODUwLDI2IEBACiAgIDs7CiAKIGdudSopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR7bWFqb3J9ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JwogICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICA7OworCitoYWlrdSopCisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgcnVudGltZV9sb2FkZXIiCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0ke21ham9yfSAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogICA7OwogCkBAIC05OTE2LDEyICsxMDkxNSwxNCBAQAogICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgICAgOzsKICAgZXNhYwotICAjIEhQLVVYIHJ1bnMgKnJlYWxseSogc2xvd2x5IHVubGVzcyBzaGFyZWQgbGlicmFyaWVzIGFyZSBtb2RlIDU1NS4KKyAgIyBIUC1VWCBydW5zICpyZWFsbHkqIHNsb3dseSB1bmxlc3Mgc2hhcmVkIGxpYnJhcmllcyBhcmUgbW9kZSA1NTUsIC4uLgogICBwb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA1NTUgJGxpYicKKyAgIyBvciBmYWlscyBvdXRyaWdodCwgc28gb3ZlcnJpZGUgYXRvbWljYWxseToKKyAgaW5zdGFsbF9vdmVycmlkZV9tb2RlPTU1NQogICA7OwogCiBpbnRlcml4WzMtOV0qKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCkBAIC05OTM3LDcgKzEwOTM4LDcgQEAKICAgICBub25zdG9wdXgqKSB2ZXJzaW9uX3R5cGU9bm9uc3RvcHV4IDs7CiAgICAgKikKIAlpZiB0ZXN0ICIkbHRfY3ZfcHJvZ19nbnVfbGQiID0geWVzOyB0aGVuCi0JCXZlcnNpb25fdHlwZT1saW51eAorCQl2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAJZWxzZQogCQl2ZXJzaW9uX3R5cGU9aXJpeAogCWZpIDs7CkBAIC05OTc0LDkgKzEwOTc1LDkgQEAKICAgZHluYW1pY19saW5rZXI9bm8KICAgOzsKIAotIyBUaGlzIG11c3QgYmUgTGludXggRUxGLgotbGludXgqIHwgaypic2QqLWdudSkKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisjIFRoaXMgbXVzdCBiZSBnbGliYy9FTEYuCitsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKQEAgLTk5ODQsMTIgKzEwOTg1LDE3IEBACiAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnIC1uICRsaWJkaXInCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworCiAgICMgU29tZSBiaW51dGlscyBsZCBhcmUgcGF0Y2hlZCB0byBzZXQgRFRfUlVOUEFUSAotICBzYXZlX0xERkxBR1M9JExERkxBR1MKLSAgc2F2ZV9saWJkaXI9JGxpYmRpcgotICBldmFsICJsaWJkaXI9L2Zvbzsgd2w9XCIkbHRfcHJvZ19jb21waWxlcl93bFwiOyBcCi0gICAgICAgTERGTEFHUz1cIlwkTERGTEFHUyAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgIGlmICR7bHRfY3Zfc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgbHRfY3Zfc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgICAgc2F2ZV9MREZMQUdTPSRMREZMQUdTCisgICAgc2F2ZV9saWJkaXI9JGxpYmRpcgorICAgIGV2YWwgImxpYmRpcj0vZm9vOyB3bD1cIiRsdF9wcm9nX2NvbXBpbGVyX3dsXCI7IFwKKwkgTERGTEFHUz1cIlwkTERGTEFHUyAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgorICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIAogaW50CkBAIC0xMDAwMiwyNiArMTEwMDgsMjcgQEAKIF9BQ0VPRgogaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogICBpZiAgKCRPQkpEVU1QIC1wIGNvbmZ0ZXN0JGFjX2V4ZWV4dCkgMj4vZGV2L251bGwgfCBncmVwICJSVU5QQVRILiokbGliZGlyIiA+L2Rldi9udWxsOyB0aGVuIDoKLSAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICBsdF9jdl9zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCiBmaQogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gIExERkxBR1M9JHNhdmVfTERGTEFHUwotICBsaWJkaXI9JHNhdmVfbGliZGlyCisgICAgTERGTEFHUz0kc2F2ZV9MREZMQUdTCisgICAgbGliZGlyPSRzYXZlX2xpYmRpcgorCitmaQorCisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD0kbHRfY3Zfc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoCiAKICAgIyBUaGlzIGltcGxpZXMgbm8gZmFzdF9pbnN0YWxsLCB3aGljaCBpcyB1bmFjY2VwdGFibGUuCiAgICMgU29tZSByZXdvcmsgd2lsbCBiZSBuZWVkZWQgdG8gYWxsb3cgZm9yIGZhc3RfaW5zdGFsbAogICAjIGJlZm9yZSB0aGlzIGNhbiBiZSBlbmFibGVkLgogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAKLSAgIyBBZGQgQUJJLXNwZWNpZmljIGRpcmVjdG9yaWVzIHRvIHRoZSBzeXN0ZW0gbGlicmFyeSBwYXRoLgotICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL2xpYjY0IC91c3IvbGliNjQgL2xpYiAvdXNyL2xpYiIKLQogICAjIEFwcGVuZCBsZC5zby5jb25mIGNvbnRlbnRzIHRvIHRoZSBzZWFyY2ggcGF0aAogICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgotICAgIGx0X2xkX2V4dHJhPWBhd2sgJy9eaW5jbHVkZSAvIHsgc3lzdGVtKHNwcmludGYoImNkIC9ldGM7IGNhdCAlcyAyPi9kZXYvbnVsbCIsIFwkMikpOyBza2lwID0gMTsgfSB7IGlmICghc2tpcCkgcHJpbnQgXCQwOyBza2lwID0gMDsgfScgPCAvZXRjL2xkLnNvLmNvbmYgfCAkU0VEIC1lICdzLyMuKi8vOy9eWwkgXSpod2NhcFsJIF0vZDtzL1s6LAldLyAvZztzLz1bXj1dKiQvLztzLz1bXj0gXSogLyAvZzsvXiQvZCcgfCB0ciAnXG4nICcgJ2AKLSAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjICRsdF9sZF9leHRyYSIKKyAgICBsdF9sZF9leHRyYT1gYXdrICcvXmluY2x1ZGUgLyB7IHN5c3RlbShzcHJpbnRmKCJjZCAvZXRjOyBjYXQgJXMgMj4vZGV2L251bGwiLCBcJDIpKTsgc2tpcCA9IDE7IH0geyBpZiAoIXNraXApIHByaW50IFwkMDsgc2tpcCA9IDA7IH0nIDwgL2V0Yy9sZC5zby5jb25mIHwgJFNFRCAtZSAncy8jLiovLzsvXlsJIF0qaHdjYXBbCSBdL2Q7cy9bOiwJXS8gL2c7cy89W149XSokLy87cy89W149IF0qIC8gL2c7cy8iLy9nOy9eJC9kJyB8IHRyICdcbicgJyAnYAorICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvbGliIC91c3IvbGliICRsdF9sZF9leHRyYSIKICAgZmkKIAogICAjIFdlIHVzZWQgdG8gdGVzdCBmb3IgL2xpYi9sZC5zby4xIGFuZCBkaXNhYmxlIHNoYXJlZCBsaWJyYXJpZXMgb24KQEAgLTEwMDMzLDYgKzExMDQwLDE4IEBACiAgIGR5bmFtaWNfbGlua2VyPSdHTlUvTGludXggbGQuc28nCiAgIDs7CiAKK25ldGJzZGVsZiotZ251KQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICBkeW5hbWljX2xpbmtlcj0nTmV0QlNEIGxkLmVsZl9zbycKKyAgOzsKKwogbmV0YnNkKikKICAgdmVyc2lvbl90eXBlPXN1bm9zCiAgIG5lZWRfbGliX3ByZWZpeD1ubwpAQCAtMTAwNTIsNyArMTEwNzEsNyBAQAogICA7OwogCiBuZXdzb3M2KQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwpAQCAtMTAxMjEsNyArMTExNDAsNyBAQAogICA7OwogCiBzb2xhcmlzKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKQEAgLTEwMTQ2LDcgKzExMTY1LDcgQEAKICAgOzsKIAogc3lzdjQgfCBzeXN2NC4zKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCiAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICkBAIC0xMDE3MCw3ICsxMTE4OSw3IEBACiAKIHN5c3Y0Kk1QKikKICAgaWYgdGVzdCAtZCAvdXNyL25lYyA7dGhlbgotICAgIHZlcnNpb25fdHlwZT1saW51eAorICAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kdmVyc3VmZml4ICRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwogICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSR7c2hhcmVkX2V4dH0uJG1ham9yJwogICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICkBAIC0xMDIwMSw3ICsxMTIyMCw3IEBACiAKIHRwZiopCiAgICMgVFBGIGlzIGEgY3Jvc3MtdGFyZ2V0IG9ubHkuICBQcmVmZXJyZWQgY3Jvc3MtaG9zdCA9IEdOVS9MaW51eC4KLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKQEAgLTEwMjExLDcgKzExMjMwLDcgQEAKICAgOzsKIAogdXRzNCopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwogICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSApAQCAtMTAzMjMsNiArMTEzNDIsMTEgQEAKIAogCiAKKworCisKKworCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGhhcmRjb2RlIGxpYnJhcnkgcGF0aHMgaW50byBwcm9ncmFtcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gaGFyZGNvZGUgbGlicmFyeSBwYXRocyBpbnRvIHByb2dyYW1zLi4uICIgPiY2OyB9CiBoYXJkY29kZV9hY3Rpb249CkBAIC0xMDM5NSw3ICsxMTQxOSw3IEBACiAgICMgaWYgbGliZGwgaXMgaW5zdGFsbGVkIHdlIG5lZWQgdG8gbGluayBhZ2FpbnN0IGl0CiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbGRsLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2xpYl9kbF9kbG9wZW4rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9saWJfZGxfZGxvcGVuKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwpAQCAtMTA0MjksNyArMTE0NTMsNyBAQAogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2RsX2Rsb3BlbiIgPiY1CiAkYXNfZWNobyAiJGFjX2N2X2xpYl9kbF9kbG9wZW4iID4mNjsgfQotaWYgdGVzdCAieCRhY19jdl9saWJfZGxfZGxvcGVuIiA9IHgiInllczsgdGhlbiA6CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9kbF9kbG9wZW4iID0geHllczsgdGhlbiA6CiAgIGx0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbCIKIGVsc2UKIApAQCAtMTA0NDMsMTIgKzExNDY3LDEyIEBACiAKICAgKikKICAgICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJzaGxfbG9hZCIgImFjX2N2X2Z1bmNfc2hsX2xvYWQiCi1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfc2hsX2xvYWQiID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19zaGxfbG9hZCIgPSB4eWVzOyB0aGVuIDoKICAgbHRfY3ZfZGxvcGVuPSJzaGxfbG9hZCIKIGVsc2UKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc2hsX2xvYWQgaW4gLWxkbGQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHNobF9sb2FkIGluIC1sZGxkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2xpYl9kbGRfc2hsX2xvYWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9saWJfZGxkX3NobF9sb2FkKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwpAQCAtMTA0ODIsMTYgKzExNTA2LDE2IEBACiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfZGxkX3NobF9sb2FkIiA+JjUKICRhc19lY2hvICIkYWNfY3ZfbGliX2RsZF9zaGxfbG9hZCIgPiY2OyB9Ci1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9kbGRfc2hsX2xvYWQiID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfbGliX2RsZF9zaGxfbG9hZCIgPSB4eWVzOyB0aGVuIDoKICAgbHRfY3ZfZGxvcGVuPSJzaGxfbG9hZCIgbHRfY3ZfZGxvcGVuX2xpYnM9Ii1sZGxkIgogZWxzZQogICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJkbG9wZW4iICJhY19jdl9mdW5jX2Rsb3BlbiIKLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19kbG9wZW4iID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19kbG9wZW4iID0geHllczsgdGhlbiA6CiAgIGx0X2N2X2Rsb3Blbj0iZGxvcGVuIgogZWxzZQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBkbG9wZW4gaW4gLWxkbCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfbGliX2RsX2Rsb3BlbitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2xpYl9kbF9kbG9wZW4rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCkBAIC0xMDUyNSwxMiArMTE1NDksMTIgQEAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9kbF9kbG9wZW4iID4mNQogJGFzX2VjaG8gIiRhY19jdl9saWJfZGxfZGxvcGVuIiA+JjY7IH0KLWlmIHRlc3QgIngkYWNfY3ZfbGliX2RsX2Rsb3BlbiIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9saWJfZGxfZGxvcGVuIiA9IHh5ZXM7IHRoZW4gOgogICBsdF9jdl9kbG9wZW49ImRsb3BlbiIgbHRfY3ZfZGxvcGVuX2xpYnM9Ii1sZGwiCiBlbHNlCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbHN2bGQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbHN2bGQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfbGliX3N2bGRfZGxvcGVuK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfbGliX3N2bGRfZGxvcGVuKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwpAQCAtMTA1NjQsMTIgKzExNTg4LDEyIEBACiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfc3ZsZF9kbG9wZW4iID4mNQogJGFzX2VjaG8gIiRhY19jdl9saWJfc3ZsZF9kbG9wZW4iID4mNjsgfQotaWYgdGVzdCAieCRhY19jdl9saWJfc3ZsZF9kbG9wZW4iID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfbGliX3N2bGRfZGxvcGVuIiA9IHh5ZXM7IHRoZW4gOgogICBsdF9jdl9kbG9wZW49ImRsb3BlbiIgbHRfY3ZfZGxvcGVuX2xpYnM9Ii1sc3ZsZCIKIGVsc2UKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGxkX2xpbmsgaW4gLWxkbGQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRsZF9saW5rIGluIC1sZGxkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2xpYl9kbGRfZGxkX2xpbmsrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9saWJfZGxkX2RsZF9saW5rKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwpAQCAtMTA2MDMsNyArMTE2MjcsNyBAQAogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2RsZF9kbGRfbGluayIgPiY1CiAkYXNfZWNobyAiJGFjX2N2X2xpYl9kbGRfZGxkX2xpbmsiID4mNjsgfQotaWYgdGVzdCAieCRhY19jdl9saWJfZGxkX2RsZF9saW5rIiA9IHgiInllczsgdGhlbiA6CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9kbGRfZGxkX2xpbmsiID0geHllczsgdGhlbiA6CiAgIGx0X2N2X2Rsb3Blbj0iZGxkX2xpbmsiIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsZCIKIGZpCiAKQEAgLTEwNjQ0LDcgKzExNjY4LDcgQEAKIAogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBhIHByb2dyYW0gY2FuIGRsb3BlbiBpdHNlbGYiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBhIHByb2dyYW0gY2FuIGRsb3BlbiBpdHNlbGYuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfZGxvcGVuX3NlbGYrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9kbG9wZW5fc2VsZis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIAkgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKQEAgLTEwNjUzLDcgKzExNjc3LDcgQEAKICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgogICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotI2xpbmUgMTA2NTYgImNvbmZpZ3VyZSIKKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaWYgSEFWRV9ETEZDTl9ICkBAIC0xMDY5NCw3ICsxMTcxOCwxMyBAQAogIyAgZW5kaWYKICNlbmRpZgogCi12b2lkIGZub3JkKCkgeyBpbnQgaT00Mjt9CisvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyNlbmRpZgorCitpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KIGludCBtYWluICgpCiB7CiAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwpAQCAtMTA3MDMsNyArMTE3MzMsMTEgQEAKICAgaWYgKHNlbGYpCiAgICAgewogICAgICAgaWYgKGRsc3ltIChzZWxmLCJmbm9yZCIpKSAgICAgICBzdGF0dXMgPSAkbHRfZGxub191c2NvcmU7Ci0gICAgICBlbHNlIGlmIChkbHN5bSggc2VsZiwiX2Zub3JkIikpIHN0YXR1cyA9ICRsdF9kbG5lZWRfdXNjb3JlOworICAgICAgZWxzZQorICAgICAgICB7CisJICBpZiAoZGxzeW0oIHNlbGYsIl9mbm9yZCIpKSAgc3RhdHVzID0gJGx0X2RsbmVlZF91c2NvcmU7CisgICAgICAgICAgZWxzZSBwdXRzIChkbGVycm9yICgpKTsKKwl9CiAgICAgICAvKiBkbGNsb3NlIChzZWxmKTsgKi8KICAgICB9CiAgIGVsc2UKQEAgLTEwNzQwLDcgKzExNzc0LDcgQEAKICAgICAgIHdsPSRsdF9wcm9nX2NvbXBpbGVyX3dsIGV2YWwgTERGTEFHUz1cIlwkTERGTEFHUyAkbHRfcHJvZ19jb21waWxlcl9zdGF0aWNcIgogICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGEgc3RhdGljYWxseSBsaW5rZWQgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZiIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGEgc3RhdGljYWxseSBsaW5rZWQgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZi4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9kbG9wZW5fc2VsZl9zdGF0aWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9kbG9wZW5fc2VsZl9zdGF0aWMrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICAJICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CkBAIC0xMDc0OSw3ICsxMTc4Myw3IEBACiAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLSNsaW5lIDEwNzUyICJjb25maWd1cmUiCisjbGluZSAkTElORU5PICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2lmIEhBVkVfRExGQ05fSApAQCAtMTA3OTAsNyArMTE4MjQsMTMgQEAKICMgIGVuZGlmCiAjZW5kaWYKIAotdm9pZCBmbm9yZCgpIHsgaW50IGk9NDI7fQorLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCitpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisjZW5kaWYKKworaW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CiBpbnQgbWFpbiAoKQogewogICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKQEAgLTEwNzk5LDcgKzExODM5LDExIEBACiAgIGlmIChzZWxmKQogICAgIHsKICAgICAgIGlmIChkbHN5bSAoc2VsZiwiZm5vcmQiKSkgICAgICAgc3RhdHVzID0gJGx0X2Rsbm9fdXNjb3JlOwotICAgICAgZWxzZSBpZiAoZGxzeW0oIHNlbGYsIl9mbm9yZCIpKSBzdGF0dXMgPSAkbHRfZGxuZWVkX3VzY29yZTsKKyAgICAgIGVsc2UKKyAgICAgICAgeworCSAgaWYgKGRsc3ltKCBzZWxmLCJfZm5vcmQiKSkgIHN0YXR1cyA9ICRsdF9kbG5lZWRfdXNjb3JlOworICAgICAgICAgIGVsc2UgcHV0cyAoZGxlcnJvciAoKSk7CisJfQogICAgICAgLyogZGxjbG9zZSAoc2VsZik7ICovCiAgICAgfQogICBlbHNlCkBAIC0xMDk2OCw2ICsxMjAxMiw4IEBACiAKIAogCisKKwogICAgICAgICBhY19jb25maWdfY29tbWFuZHM9IiRhY19jb25maWdfY29tbWFuZHMgbGlidG9vbCIKIAogCkBAIC0xMDk3OCw2ICsxMjAyNCw5NzcgQEAKIAogCiAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgdmVuZG9yIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBDIGNvbXBpbGVyIHZlbmRvci4uLiAiID4mNjsgfQoraWYgJHtheF9jdl9jX2NvbXBpbGVyX3ZlbmRvcis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgICMgbm90ZTogZG9uJ3QgY2hlY2sgZm9yIGdjYyBmaXJzdCBzaW5jZSBzb21lIG90aGVyIGNvbXBpbGVycyBkZWZpbmUgX19HTlVDX18KKyAgdmVuZG9ycz0iaW50ZWw6ICAgICBfX0lDQyxfX0VDQyxfX0lOVEVMX0NPTVBJTEVSCisgICAgICAgICAgIGlibTogICAgICAgX194bGNfXyxfX3hsQ19fLF9fSUJNQ19fLF9fSUJNQ1BQX18KKyAgICAgICAgICAgcGF0aHNjYWxlOiBfX1BBVEhDQ19fLF9fUEFUSFNDQUxFX18KKyAgICAgICAgICAgY2xhbmc6ICAgICBfX2NsYW5nX18KKyAgICAgICAgICAgZ251OiAgICAgICBfX0dOVUNfXworICAgICAgICAgICBzdW46ICAgICAgIF9fU1VOUFJPX0MsX19TVU5QUk9fQ0MKKyAgICAgICAgICAgaHA6ICAgICAgICBfX0hQX2NjLF9fSFBfYUNDCisgICAgICAgICAgIGRlYzogICAgICAgX19ERUNDLF9fREVDQ1hYLF9fREVDQ19WRVIsX19ERUNDWFhfVkVSCisgICAgICAgICAgIGJvcmxhbmQ6ICAgX19CT1JMQU5EQ19fLF9fVFVSQk9DX18KKyAgICAgICAgICAgY29tZWF1OiAgICBfX0NPTU9fXworICAgICAgICAgICBjcmF5OiAgICAgIF9DUkFZQworICAgICAgICAgICBrYWk6ICAgICAgIF9fS0NDCisgICAgICAgICAgIGxjYzogICAgICAgX19MQ0NfXworICAgICAgICAgICBzZ2k6ICAgICAgIF9fc2dpLHNnaQorICAgICAgICAgICBtaWNyb3NvZnQ6IF9NU0NfVkVSCisgICAgICAgICAgIG1ldHJvd2Vya3M6IF9fTVdFUktTX18KKyAgICAgICAgICAgd2F0Y29tOiAgICBfX1dBVENPTUNfXworICAgICAgICAgICBwb3J0bGFuZDogIF9fUEdJCisgICAgICAgICAgIHVua25vd246ICAgVU5LTk9XTiIKKyAgZm9yIHZlbnRlc3QgaW4gJHZlbmRvcnM7IGRvCisgICAgY2FzZSAkdmVudGVzdCBpbgorICAgICAgKjopIHZlbmRvcj0kdmVudGVzdDsgY29udGludWUgOzsKKyAgICAgICopICB2ZW5jcHA9ImRlZmluZWQoImBlY2hvICR2ZW50ZXN0IHwgc2VkICdzLywvKSB8fCBkZWZpbmVkKC9nJ2AiKSIgOzsKKyAgICBlc2FjCisgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICAgICAgI2lmICEoJHZlbmNwcCkKKyAgICAgICAgdGhpc2lzYW5lcnJvcjsKKyAgICAgICNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYnJlYWsKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgZG9uZQorICBheF9jdl9jX2NvbXBpbGVyX3ZlbmRvcj1gZWNobyAkdmVuZG9yIHwgY3V0IC1kOiAtZjFgCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGF4X2N2X2NfY29tcGlsZXJfdmVuZG9yIiA+JjUKKyRhc19lY2hvICIkYXhfY3ZfY19jb21waWxlcl92ZW5kb3IiID4mNjsgfQorCisKKworCisKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXBvcnRhYmxlLWJpbmFyeSB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9wb3J0YWJsZV9iaW5hcnkrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9wb3J0YWJsZV9iaW5hcnk7IGFjeF9tYXhvcHRfcG9ydGFibGU9JHdpdGh2YWwKK2Vsc2UKKyAgYWN4X21heG9wdF9wb3J0YWJsZT1ubworZmkKKworCisjIFRyeSB0byBkZXRlcm1pbmUgImdvb2QiIG5hdGl2ZSBjb21waWxlciBmbGFncyBpZiBub25lIHNwZWNpZmllZCB2aWEgQ0ZMQUdTCitpZiB0ZXN0ICIkYWNfdGVzdF9DRkxBR1MiICE9ICJzZXQiOyB0aGVuCisgIENGTEFHUz0iIgorICBjYXNlICRheF9jdl9jX2NvbXBpbGVyX3ZlbmRvciBpbgorICAgIGRlYykgQ0ZMQUdTPSItbmV3YyAtdzAgLU81IC1hbnNpX2FsaWFzIC1hbnNpX2FyZ3MgLWZwX3Jlb3JkZXIgLXR1bmUgaG9zdCIKKwkgaWYgdGVzdCAieCRhY3hfbWF4b3B0X3BvcnRhYmxlIiA9IHhubzsgdGhlbgorICAgICAgICAgICBDRkxBR1M9IiRDRkxBR1MgLWFyY2ggaG9zdCIKKyAgICAgICAgIGZpOzsKKworICAgIHN1bikgQ0ZMQUdTPSItbmF0aXZlIC1mYXN0IC14TzUgLWRhbGlnbiIKKwkgaWYgdGVzdCAieCRhY3hfbWF4b3B0X3BvcnRhYmxlIiA9IHh5ZXM7IHRoZW4KKwkgICBDRkxBR1M9IiRDRkxBR1MgLXhhcmNoPWdlbmVyaWMiCisgICAgICAgICBmaTs7CisKKyAgICBocCkgIENGTEFHUz0iK09hbGwgK09wdHJzX2Fuc2kgK0RTbmF0aXZlIgorCSBpZiB0ZXN0ICJ4JGFjeF9tYXhvcHRfcG9ydGFibGUiID0geHllczsgdGhlbgorCSAgIENGTEFHUz0iJENGTEFHUyArREFwb3J0YWJsZSIKKwkgZmk7OworCisgICAgaWJtKSBpZiB0ZXN0ICJ4JGFjeF9tYXhvcHRfcG9ydGFibGUiID0geG5vOyB0aGVuCisgICAgICAgICAgIHhsY19vcHQ9Ii1xYXJjaD1hdXRvIC1xdHVuZT1hdXRvIgorCSBlbHNlCisgICAgICAgICAgIHhsY19vcHQ9Ii1xdHVuZT1hdXRvIgorCSBmaQorICAgICAgICAgYXNfQ0FDSEVWQVI9YCRhc19lY2hvICJheF9jdl9jaGVja19jZmxhZ3NfXyR4bGNfb3B0IiB8ICRhc190cl9zaGAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgJHhsY19vcHQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgJHhsY19vcHQuLi4gIiA+JjY7IH0KK2lmIGV2YWwgXCR7JGFzX0NBQ0hFVkFSKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICBheF9jaGVja19zYXZlX2ZsYWdzPSRDRkxBR1MKKyAgQ0ZMQUdTPSIkQ0ZMQUdTICAkeGxjX29wdCIKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGV2YWwgIiRhc19DQUNIRVZBUj15ZXMiCitlbHNlCisgIGV2YWwgIiRhc19DQUNIRVZBUj1ubyIKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgQ0ZMQUdTPSRheF9jaGVja19zYXZlX2ZsYWdzCitmaQorZXZhbCBhY19yZXM9XCQkYXNfQ0FDSEVWQVIKKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQoraWYgdGVzdCB4ImBldmFsICdhc192YWw9JHsnJGFzX0NBQ0hFVkFSJ307JGFzX2VjaG8gIiRhc192YWwiJ2AiID0geHllczsgdGhlbiA6CisgIENGTEFHUz0iLU8zIC1xYW5zaWFsaWFzIC13ICR4bGNfb3B0IgorZWxzZQorICBDRkxBR1M9Ii1PMyAtcWFuc2lhbGlhcyAtdyIKKyAgICAgICAgICAgICAgICBlY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgWW91IHNlZW0gdG8gaGF2ZSB0aGUgSUJNICBDIGNvbXBpbGVyLiAgSXQgaXMgICAgICAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogIHJlY29tbWVuZGVkIGZvciBiZXN0IHBlcmZvcm1hbmNlIHRoYXQgeW91IHVzZTogICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgICBDRkxBR1M9LU8zIC1xYXJjaD14eHggLXF0dW5lPXh4eCAtcWFuc2lhbGlhcyAtdyAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogICAgICAgICAgICAgICAgICAgICAgXl5eICAgICAgICBeXl4gICAgICAgICAgICAgICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICB3aGVyZSB4eHggaXMgcHdyMiwgcHdyMywgNjA0LCBvciB3aGF0ZXZlciBraW5kIG9mICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgQ1BVIHlvdSBoYXZlLiAgKFNldCB0aGUgQ0ZMQUdTIGVudmlyb25tZW50IHZhci4gICAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogIGFuZCByZS1ydW4gY29uZmlndXJlLikgIEZvciBtb3JlIGluZm8sIG1hbiBjYy4gICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCitmaQorCisgICAgICAgICA7OworCisgICAgaW50ZWwpIENGTEFHUz0iLU8zIC1hbnNpX2FsaWFzIgorCWlmIHRlc3QgIngkYWN4X21heG9wdF9wb3J0YWJsZSIgPSB4bm87IHRoZW4KKwkgIGljY19hcmNoZmxhZz11bmtub3duCisJICBpY2NfZmxhZ3M9IiIKKwkgIGNhc2UgJGhvc3RfY3B1IGluCisJICAgIGk2ODYqfHg4Nl82NCopCisgICAgICAgICAgICAgICMgaWNjIGFjY2VwdHMgZ2NjIGFzc2VtYmx5IHN5bnRheCwgc28gdGhlc2Ugc2hvdWxkIHdvcms6CisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgeDg2IGNwdWlkIDAgb3V0cHV0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB4ODYgY3B1aWQgMCBvdXRwdXQuLi4gIiA+JjY7IH0KK2lmICR7YXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBheF9jdl9nY2NfeDg2X2NwdWlkXzA9dW5rbm93bgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworCisgICAgIGludCBvcCA9IDAsIGVheCwgZWJ4LCBlY3gsIGVkeDsKKyAgICAgRklMRSAqZjsKKyAgICAgIF9fYXNtX18oImNwdWlkIgorICAgICAgICA6ICI9YSIgKGVheCksICI9YiIgKGVieCksICI9YyIgKGVjeCksICI9ZCIgKGVkeCkKKyAgICAgICAgOiAiYSIgKG9wKSk7CisgICAgIGYgPSBmb3BlbigiY29uZnRlc3RfY3B1aWQiLCAidyIpOyBpZiAoIWYpIHJldHVybiAxOworICAgICBmcHJpbnRmKGYsICIleDoleDoleDoleFxuIiwgZWF4LCBlYngsIGVjeCwgZWR4KTsKKyAgICAgZmNsb3NlKGYpOworICAgICByZXR1cm4gMDsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wPWBjYXQgY29uZnRlc3RfY3B1aWRgOyBybSAtZiBjb25mdGVzdF9jcHVpZAorZWxzZQorICBheF9jdl9nY2NfeDg2X2NwdWlkXzA9dW5rbm93bjsgcm0gLWYgY29uZnRlc3RfY3B1aWQKK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRheF9jdl9nY2NfeDg2X2NwdWlkXzAiID4mNQorJGFzX2VjaG8gIiRheF9jdl9nY2NfeDg2X2NwdWlkXzAiID4mNjsgfQorYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCisKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB4ODYgY3B1aWQgMSBvdXRwdXQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHg4NiBjcHVpZCAxIG91dHB1dC4uLiAiID4mNjsgfQoraWYgJHtheF9jdl9nY2NfeDg2X2NwdWlkXzErOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGF4X2N2X2djY194ODZfY3B1aWRfMT11bmtub3duCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CisKKyAgICAgaW50IG9wID0gMSwgZWF4LCBlYngsIGVjeCwgZWR4OworICAgICBGSUxFICpmOworICAgICAgX19hc21fXygiY3B1aWQiCisgICAgICAgIDogIj1hIiAoZWF4KSwgIj1iIiAoZWJ4KSwgIj1jIiAoZWN4KSwgIj1kIiAoZWR4KQorICAgICAgICA6ICJhIiAob3ApKTsKKyAgICAgZiA9IGZvcGVuKCJjb25mdGVzdF9jcHVpZCIsICJ3Iik7IGlmICghZikgcmV0dXJuIDE7CisgICAgIGZwcmludGYoZiwgIiV4OiV4OiV4OiV4XG4iLCBlYXgsIGVieCwgZWN4LCBlZHgpOworICAgICBmY2xvc2UoZik7CisgICAgIHJldHVybiAwOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBheF9jdl9nY2NfeDg2X2NwdWlkXzE9YGNhdCBjb25mdGVzdF9jcHVpZGA7IHJtIC1mIGNvbmZ0ZXN0X2NwdWlkCitlbHNlCisgIGF4X2N2X2djY194ODZfY3B1aWRfMT11bmtub3duOyBybSAtZiBjb25mdGVzdF9jcHVpZAorZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGF4X2N2X2djY194ODZfY3B1aWRfMSIgPiY1CiskYXNfZWNobyAiJGF4X2N2X2djY194ODZfY3B1aWRfMSIgPiY2OyB9CithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKKworCSAgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMCBpbiAjIHNlZSBBWF9HQ0NfQVJDSEZMQUcKKyAgICAgICAgICAgICAgICAqOjc1NmU2NTQ3Oio6KikgIyBJbnRlbAorICAgICAgICAgICAgICAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xIGluCisgICAgICAgICAgICAgICAgICAgICo2YT86KlsyMzRdOio6KnwqNls3ODliXT86KjoqOiopIGljY19mbGFncz0iLXhLIjs7CisgICAgICAgICAgICAgICAgICAgICpmM1szNDddOio6KjoqfCpmNDEzNDc6KjoqOiopIGljY19mbGFncz0iLXhQIC14TiAteFcgLXhLIjs7CisgICAgICAgICAgICAgICAgICAgICpmPz86KjoqOiopIGljY19mbGFncz0iLXhOIC14VyAteEsiOzsKKyAgICAgICAgICAgICAgICAgIGVzYWMgOzsKKyAgICAgICAgICAgICAgZXNhYyA7OworICAgICAgICAgIGVzYWMKKyAgICAgICAgICBpZiB0ZXN0ICJ4JGljY19mbGFncyIgIT0geDsgdGhlbgorICAgICAgICAgICAgZm9yIGZsYWcgaW4gJGljY19mbGFnczsgZG8KKyAgICAgICAgICAgICAgYXNfQ0FDSEVWQVI9YCRhc19lY2hvICJheF9jdl9jaGVja19jZmxhZ3NfXyRmbGFnIiB8ICRhc190cl9zaGAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgJGZsYWciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgJGZsYWcuLi4gIiA+JjY7IH0KK2lmIGV2YWwgXCR7JGFzX0NBQ0hFVkFSKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICBheF9jaGVja19zYXZlX2ZsYWdzPSRDRkxBR1MKKyAgQ0ZMQUdTPSIkQ0ZMQUdTICAkZmxhZyIKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGV2YWwgIiRhc19DQUNIRVZBUj15ZXMiCitlbHNlCisgIGV2YWwgIiRhc19DQUNIRVZBUj1ubyIKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgQ0ZMQUdTPSRheF9jaGVja19zYXZlX2ZsYWdzCitmaQorZXZhbCBhY19yZXM9XCQkYXNfQ0FDSEVWQVIKKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQoraWYgdGVzdCB4ImBldmFsICdhc192YWw9JHsnJGFzX0NBQ0hFVkFSJ307JGFzX2VjaG8gIiRhc192YWwiJ2AiID0geHllczsgdGhlbiA6CisgIGljY19hcmNoZmxhZz0kZmxhZzsgYnJlYWsKK2Vsc2UKKyAgOgorZmkKKworICAgICAgICAgICAgZG9uZQorICAgICAgICAgIGZpCisgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgaWNjIGFyY2hpdGVjdHVyZSBmbGFnIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBpY2MgYXJjaGl0ZWN0dXJlIGZsYWcuLi4gIiA+JjY7IH0KKwkgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaWNjX2FyY2hmbGFnIiA+JjUKKyRhc19lY2hvICIkaWNjX2FyY2hmbGFnIiA+JjY7IH0KKyAgICAgICAgICBpZiB0ZXN0ICJ4JGljY19hcmNoZmxhZyIgIT0geHVua25vd247IHRoZW4KKyAgICAgICAgICAgIENGTEFHUz0iJENGTEFHUyAkaWNjX2FyY2hmbGFnIgorICAgICAgICAgIGZpCisgICAgICAgIGZpCisJOzsKKworICAgIGdudSkKKyAgICAgIyBkZWZhdWx0IG9wdGltaXphdGlvbiBmbGFncyBmb3IgZ2NjIG9uIGFsbCBzeXN0ZW1zCisgICAgIENGTEFHUz0iLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIgorCisgICAgICMgLW1hbGlnbi1kb3VibGUgZm9yIHg4NiBzeXN0ZW1zCisgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgLW1hbGlnbi1kb3VibGUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgLW1hbGlnbi1kb3VibGUuLi4gIiA+JjY7IH0KK2lmICR7YXhfY3ZfY2hlY2tfY2ZsYWdzX19fbWFsaWduX2RvdWJsZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKKyAgYXhfY2hlY2tfc2F2ZV9mbGFncz0kQ0ZMQUdTCisgIENGTEFHUz0iJENGTEFHUyAgLW1hbGlnbi1kb3VibGUiCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBheF9jdl9jaGVja19jZmxhZ3NfX19tYWxpZ25fZG91YmxlPXllcworZWxzZQorICBheF9jdl9jaGVja19jZmxhZ3NfX19tYWxpZ25fZG91YmxlPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgIENGTEFHUz0kYXhfY2hlY2tfc2F2ZV9mbGFncworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYXhfY3ZfY2hlY2tfY2ZsYWdzX19fbWFsaWduX2RvdWJsZSIgPiY1CiskYXNfZWNobyAiJGF4X2N2X2NoZWNrX2NmbGFnc19fX21hbGlnbl9kb3VibGUiID4mNjsgfQoraWYgdGVzdCB4IiRheF9jdl9jaGVja19jZmxhZ3NfX19tYWxpZ25fZG91YmxlIiA9IHh5ZXM7IHRoZW4gOgorICBDRkxBR1M9IiRDRkxBR1MgLW1hbGlnbi1kb3VibGUiCitlbHNlCisgIDoKK2ZpCisKKworICAgICAjICAtZnN0cmljdC1hbGlhc2luZyBmb3IgZ2NjLTIuOTUrCisgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgLWZzdHJpY3QtYWxpYXNpbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgLWZzdHJpY3QtYWxpYXNpbmcuLi4gIiA+JjY7IH0KK2lmICR7YXhfY3ZfY2hlY2tfY2ZsYWdzX19fZnN0cmljdF9hbGlhc2luZys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKKyAgYXhfY2hlY2tfc2F2ZV9mbGFncz0kQ0ZMQUdTCisgIENGTEFHUz0iJENGTEFHUyAgLWZzdHJpY3QtYWxpYXNpbmciCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBheF9jdl9jaGVja19jZmxhZ3NfX19mc3RyaWN0X2FsaWFzaW5nPXllcworZWxzZQorICBheF9jdl9jaGVja19jZmxhZ3NfX19mc3RyaWN0X2FsaWFzaW5nPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgIENGTEFHUz0kYXhfY2hlY2tfc2F2ZV9mbGFncworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYXhfY3ZfY2hlY2tfY2ZsYWdzX19fZnN0cmljdF9hbGlhc2luZyIgPiY1CiskYXNfZWNobyAiJGF4X2N2X2NoZWNrX2NmbGFnc19fX2ZzdHJpY3RfYWxpYXNpbmciID4mNjsgfQoraWYgdGVzdCB4IiRheF9jdl9jaGVja19jZmxhZ3NfX19mc3RyaWN0X2FsaWFzaW5nIiA9IHh5ZXM7IHRoZW4gOgorICBDRkxBR1M9IiRDRkxBR1MgLWZzdHJpY3QtYWxpYXNpbmciCitlbHNlCisgIDoKK2ZpCisKKworICAgICAjIG5vdGUgdGhhdCB3ZSBlbmFibGUgInVuc2FmZSIgZnAgb3B0aW1pemF0aW9uIHdpdGggb3RoZXIgY29tcGlsZXJzLCB0b28KKyAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAtZmZhc3QtbWF0aCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAtZmZhc3QtbWF0aC4uLiAiID4mNjsgfQoraWYgJHtheF9jdl9jaGVja19jZmxhZ3NfX19mZmFzdF9tYXRoKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICBheF9jaGVja19zYXZlX2ZsYWdzPSRDRkxBR1MKKyAgQ0ZMQUdTPSIkQ0ZMQUdTICAtZmZhc3QtbWF0aCIKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGF4X2N2X2NoZWNrX2NmbGFnc19fX2ZmYXN0X21hdGg9eWVzCitlbHNlCisgIGF4X2N2X2NoZWNrX2NmbGFnc19fX2ZmYXN0X21hdGg9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgQ0ZMQUdTPSRheF9jaGVja19zYXZlX2ZsYWdzCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRheF9jdl9jaGVja19jZmxhZ3NfX19mZmFzdF9tYXRoIiA+JjUKKyRhc19lY2hvICIkYXhfY3ZfY2hlY2tfY2ZsYWdzX19fZmZhc3RfbWF0aCIgPiY2OyB9CitpZiB0ZXN0IHgiJGF4X2N2X2NoZWNrX2NmbGFnc19fX2ZmYXN0X21hdGgiID0geHllczsgdGhlbiA6CisgIENGTEFHUz0iJENGTEFHUyAtZmZhc3QtbWF0aCIKK2Vsc2UKKyAgOgorZmkKKworCisKKworCisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtZ2NjLWFyY2ggd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2djY19hcmNoK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgd2l0aHZhbD0kd2l0aF9nY2NfYXJjaDsgYXhfZ2NjX2FyY2g9JHdpdGh2YWwKK2Vsc2UKKyAgYXhfZ2NjX2FyY2g9eWVzCitmaQorCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGdjYyBhcmNoaXRlY3R1cmUgZmxhZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZ2NjIGFyY2hpdGVjdHVyZSBmbGFnLi4uICIgPiY2OyB9Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogIiA+JjUKKyRhc19lY2hvICIiID4mNjsgfQoraWYgJHtheF9jdl9nY2NfYXJjaGZsYWcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCitheF9jdl9nY2NfYXJjaGZsYWc9InVua25vd24iCisKK2lmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisKK2lmIHRlc3QgIngkYXhfZ2NjX2FyY2giID0geHllczsgdGhlbgorYXhfZ2NjX2FyY2g9IiIKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0gbm87IHRoZW4KK2Nhc2UgJGhvc3RfY3B1IGluCisgIGlbMzQ1Nl04Nip8eDg2XzY0KikgIyB1c2UgY3B1aWQgY29kZXMsIGluIHBhcnQgZnJvbSB4ODZpbmZvLTEuNyBieSBELiBKb25lcworCithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHg4NiBjcHVpZCAwIG91dHB1dCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgeDg2IGNwdWlkIDAgb3V0cHV0Li4uICIgPiY2OyB9CitpZiAke2F4X2N2X2djY194ODZfY3B1aWRfMCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wPXVua25vd24KK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKKworICAgICBpbnQgb3AgPSAwLCBlYXgsIGVieCwgZWN4LCBlZHg7CisgICAgIEZJTEUgKmY7CisgICAgICBfX2FzbV9fKCJjcHVpZCIKKyAgICAgICAgOiAiPWEiIChlYXgpLCAiPWIiIChlYngpLCAiPWMiIChlY3gpLCAiPWQiIChlZHgpCisgICAgICAgIDogImEiIChvcCkpOworICAgICBmID0gZm9wZW4oImNvbmZ0ZXN0X2NwdWlkIiwgInciKTsgaWYgKCFmKSByZXR1cm4gMTsKKyAgICAgZnByaW50ZihmLCAiJXg6JXg6JXg6JXhcbiIsIGVheCwgZWJ4LCBlY3gsIGVkeCk7CisgICAgIGZjbG9zZShmKTsKKyAgICAgcmV0dXJuIDA7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CisgIGF4X2N2X2djY194ODZfY3B1aWRfMD1gY2F0IGNvbmZ0ZXN0X2NwdWlkYDsgcm0gLWYgY29uZnRlc3RfY3B1aWQKK2Vsc2UKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wPXVua25vd247IHJtIC1mIGNvbmZ0ZXN0X2NwdWlkCitmaQorcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wIiA+JjUKKyRhc19lY2hvICIkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wIiA+JjY7IH0KK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgeDg2IGNwdWlkIDEgb3V0cHV0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB4ODYgY3B1aWQgMSBvdXRwdXQuLi4gIiA+JjY7IH0KK2lmICR7YXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBheF9jdl9nY2NfeDg2X2NwdWlkXzE9dW5rbm93bgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworCisgICAgIGludCBvcCA9IDEsIGVheCwgZWJ4LCBlY3gsIGVkeDsKKyAgICAgRklMRSAqZjsKKyAgICAgIF9fYXNtX18oImNwdWlkIgorICAgICAgICA6ICI9YSIgKGVheCksICI9YiIgKGVieCksICI9YyIgKGVjeCksICI9ZCIgKGVkeCkKKyAgICAgICAgOiAiYSIgKG9wKSk7CisgICAgIGYgPSBmb3BlbigiY29uZnRlc3RfY3B1aWQiLCAidyIpOyBpZiAoIWYpIHJldHVybiAxOworICAgICBmcHJpbnRmKGYsICIleDoleDoleDoleFxuIiwgZWF4LCBlYngsIGVjeCwgZWR4KTsKKyAgICAgZmNsb3NlKGYpOworICAgICByZXR1cm4gMDsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xPWBjYXQgY29uZnRlc3RfY3B1aWRgOyBybSAtZiBjb25mdGVzdF9jcHVpZAorZWxzZQorICBheF9jdl9nY2NfeDg2X2NwdWlkXzE9dW5rbm93bjsgcm0gLWYgY29uZnRlc3RfY3B1aWQKK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRheF9jdl9nY2NfeDg2X2NwdWlkXzEiID4mNQorJGFzX2VjaG8gIiRheF9jdl9nY2NfeDg2X2NwdWlkXzEiID4mNjsgfQorYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCisKKyAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wIGluCisgICAgICAgKjo3NTZlNjU0NzoqOiopICMgSW50ZWwKKyAgICAgICAgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzEgaW4KKwkgICAgKjVbNDhdPzoqOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW0tbW14IHBlbnRpdW0iIDs7CisJICAgICo1Pz86KjoqOiopIGF4X2djY19hcmNoPXBlbnRpdW0gOzsKKwkgICAgKjZbMzQ1Nl0/Oio6KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bTIgcGVudGl1bXBybyIgOzsKKwkgICAgKjZhPzoqWzAxXToqOiopIGF4X2djY19hcmNoPSJwZW50aXVtMiBwZW50aXVtcHJvIiA7OworCSAgICAqNmE/OipbMjM0XToqOiopIGF4X2djY19hcmNoPSJwZW50aXVtMyBwZW50aXVtcHJvIiA7OworCSAgICAqNls5ZF0/Oio6KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bS1tIHBlbnRpdW0zIHBlbnRpdW1wcm8iIDs7CisJICAgICo2Wzc4Yl0/Oio6KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bTMgcGVudGl1bXBybyIgOzsKKwkgICAgKjY/PzoqOio6KikgYXhfZ2NjX2FyY2g9cGVudGl1bXBybyA7OworICAgICAgICAgICAgKmYzWzM0N106KjoqOip8KmY0MTM0NzoqOio6KikKKwkJY2FzZSAkaG9zdF9jcHUgaW4KKyAgICAgICAgICAgICAgICAgIHg4Nl82NCopIGF4X2djY19hcmNoPSJub2NvbmEgcGVudGl1bTQgcGVudGl1bXBybyIgOzsKKyAgICAgICAgICAgICAgICAgICopIGF4X2djY19hcmNoPSJwcmVzY290dCBwZW50aXVtNCBwZW50aXVtcHJvIiA7OworICAgICAgICAgICAgICAgIGVzYWMgOzsKKyAgICAgICAgICAgICpmPz86KjoqOiopIGF4X2djY19hcmNoPSJwZW50aXVtNCBwZW50aXVtcHJvIjs7CisgICAgICAgICAgZXNhYyA7OworICAgICAgICo6Njg3NDc1NDE6KjoqKSAjIEFNRAorICAgICAgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMSBpbgorCSAgICAqNVs2N10/Oio6KjoqKSBheF9nY2NfYXJjaD1rNiA7OworCSAgICAqNVs4ZF0/Oio6KjoqKSBheF9nY2NfYXJjaD0iazYtMiBrNiIgOzsKKwkgICAgKjVbOV0/Oio6KjoqKSBheF9nY2NfYXJjaD0iazYtMyBrNiIgOzsKKwkgICAgKjYwPzoqOio6KikgYXhfZ2NjX2FyY2g9azcgOzsKKwkgICAgKjZbMTJdPzoqOio6KikgYXhfZ2NjX2FyY2g9ImF0aGxvbiBrNyIgOzsKKwkgICAgKjZbMzRdPzoqOio6KikgYXhfZ2NjX2FyY2g9ImF0aGxvbi10YmlyZCBrNyIgOzsKKwkgICAgKjY3PzoqOio6KikgYXhfZ2NjX2FyY2g9ImF0aGxvbi00IGF0aGxvbiBrNyIgOzsKKwkgICAgKjZbNjhhXT86KjoqOiopCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgeDg2IGNwdWlkIDB4ODAwMDAwMDYgb3V0cHV0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB4ODYgY3B1aWQgMHg4MDAwMDAwNiBvdXRwdXQuLi4gIiA+JjY7IH0KK2lmICR7YXhfY3ZfZ2NjX3g4Nl9jcHVpZF8weDgwMDAwMDA2Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBheF9jdl9nY2NfeDg2X2NwdWlkXzB4ODAwMDAwMDY9dW5rbm93bgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworCisgICAgIGludCBvcCA9IDB4ODAwMDAwMDYsIGVheCwgZWJ4LCBlY3gsIGVkeDsKKyAgICAgRklMRSAqZjsKKyAgICAgIF9fYXNtX18oImNwdWlkIgorICAgICAgICA6ICI9YSIgKGVheCksICI9YiIgKGVieCksICI9YyIgKGVjeCksICI9ZCIgKGVkeCkKKyAgICAgICAgOiAiYSIgKG9wKSk7CisgICAgIGYgPSBmb3BlbigiY29uZnRlc3RfY3B1aWQiLCAidyIpOyBpZiAoIWYpIHJldHVybiAxOworICAgICBmcHJpbnRmKGYsICIleDoleDoleDoleFxuIiwgZWF4LCBlYngsIGVjeCwgZWR4KTsKKyAgICAgZmNsb3NlKGYpOworICAgICByZXR1cm4gMDsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8weDgwMDAwMDA2PWBjYXQgY29uZnRlc3RfY3B1aWRgOyBybSAtZiBjb25mdGVzdF9jcHVpZAorZWxzZQorICBheF9jdl9nY2NfeDg2X2NwdWlkXzB4ODAwMDAwMDY9dW5rbm93bjsgcm0gLWYgY29uZnRlc3RfY3B1aWQKK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRheF9jdl9nY2NfeDg2X2NwdWlkXzB4ODAwMDAwMDYiID4mNQorJGFzX2VjaG8gIiRheF9jdl9nY2NfeDg2X2NwdWlkXzB4ODAwMDAwMDYiID4mNjsgfQorYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCisgIyBMMiBjYWNoZSBzaXplCisJICAgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMHg4MDAwMDAwNiBpbgorICAgICAgICAgICAgICAgICAqOio6KlsxLTlhLWZdPz8/Pz8/OiopICMgKEwyID0gZWN4ID4+IDE2KSA+PSAyNTYKKwkJCWF4X2djY19hcmNoPSJhdGhsb24teHAgYXRobG9uLTQgYXRobG9uIGs3IiA7OworICAgICAgICAgICAgICAgICAqKSBheF9nY2NfYXJjaD0iYXRobG9uLTQgYXRobG9uIGs3IiA7OworCSAgICAgICBlc2FjIDs7CisJICAgICpmWzRjZWY4Yl0/Oio6KjoqKSBheF9nY2NfYXJjaD0iYXRobG9uNjQgazgiIDs7CisJICAgICpmNT86KjoqOiopIGF4X2djY19hcmNoPSJvcHRlcm9uIGs4IiA7OworCSAgICAqZjc/Oio6KjoqKSBheF9nY2NfYXJjaD0iYXRobG9uLWZ4IG9wdGVyb24gazgiIDs7CisJICAgICpmPz86KjoqOiopIGF4X2djY19hcmNoPSJrOCIgOzsKKyAgICAgICAgICBlc2FjIDs7CisJKjo3NDZlNjU0MzoqOiopICMgSURUCisJICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xIGluCisJICAgICAqNTQ/Oio6KjoqKSBheF9nY2NfYXJjaD13aW5jaGlwLWM2IDs7CisJICAgICAqNTg/Oio6KjoqKSBheF9nY2NfYXJjaD13aW5jaGlwMiA7OworCSAgICAgKjZbNzhdPzoqOio6KikgYXhfZ2NjX2FyY2g9YzMgOzsKKwkgICAgICo2OT86KjoqOiopIGF4X2djY19hcmNoPSJjMy0yIGMzIiA7OworCSAgIGVzYWMgOzsKKyAgICAgZXNhYworICAgICBpZiB0ZXN0IHgiJGF4X2djY19hcmNoIiA9IHg7IHRoZW4gIyBmYWxsYmFjaworCWNhc2UgJGhvc3RfY3B1IGluCisJICBpNTg2KikgYXhfZ2NjX2FyY2g9cGVudGl1bSA7OworCSAgaTY4NiopIGF4X2djY19hcmNoPXBlbnRpdW1wcm8gOzsKKyAgICAgICAgZXNhYworICAgICBmaQorICAgICA7OworCisgIHNwYXJjKikKKyAgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJwcnRkaWFnIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBwcnRkaWFnOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9QUlRESUFHKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkUFJURElBRyBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9QUlRESUFHPSIkUFJURElBRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2FzX2R1bW15PSIkUEFUSDovdXNyL3BsYXRmb3JtL2B1bmFtZSAtaWAvc2Jpbi86L3Vzci9wbGF0Zm9ybS9gdW5hbWUgLW1gL3NiaW4vIgorZm9yIGFzX2RpciBpbiAkYXNfZHVtbXkKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfUFJURElBRz0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9QUlRESUFHIiAmJiBhY19jdl9wYXRoX1BSVERJQUc9InBydGRpYWciCisgIDs7Citlc2FjCitmaQorUFJURElBRz0kYWNfY3ZfcGF0aF9QUlRESUFHCitpZiB0ZXN0IC1uICIkUFJURElBRyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRQUlRESUFHIiA+JjUKKyRhc19lY2hvICIkUFJURElBRyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgICAgIGNwdXR5cGU9YCgoKGdyZXAgY3B1IC9wcm9jL2NwdWluZm8gfCBjdXQgLWQ6IC1mMikgOyAoJFBSVERJQUcgLXYgfGdyZXAgLWkgc3BhcmMpIDsgZ3JlcCAtaSBjcHUgL3Zhci9ydW4vZG1lc2cuYm9vdCApIHwgaGVhZCAtbiAxKSAyPiAvZGV2L251bGxgCisgICAgIGNwdXR5cGU9YGVjaG8gIiRjcHV0eXBlIiB8IHRyIC1kICcgLScgfHRyICRhc19jcl9MRVRURVJTICRhc19jcl9sZXR0ZXJzYAorICAgICBjYXNlICRjcHV0eXBlIGluCisgICAgICAgICAqdWx0cmFzcGFyY2l2KikgYXhfZ2NjX2FyY2g9InVsdHJhc3BhcmM0IHVsdHJhc3BhcmMzIHVsdHJhc3BhcmMgdjkiIDs7CisgICAgICAgICAqdWx0cmFzcGFyY2lpaSopIGF4X2djY19hcmNoPSJ1bHRyYXNwYXJjMyB1bHRyYXNwYXJjIHY5IiA7OworICAgICAgICAgKnVsdHJhc3BhcmMqKSBheF9nY2NfYXJjaD0idWx0cmFzcGFyYyB2OSIgOzsKKyAgICAgICAgICpzdXBlcnNwYXJjKnwqdG1zMzkwejVbMDVdKikgYXhfZ2NjX2FyY2g9InN1cGVyc3BhcmMgdjgiIDs7CisgICAgICAgICAqaHlwZXJzcGFyYyp8KnJ0NjJbMDU2XSopIGF4X2djY19hcmNoPSJoeXBlcnNwYXJjIHY4IiA7OworICAgICAgICAgKmN5cHJlc3MqKSBheF9nY2NfYXJjaD1jeXByZXNzIDs7CisgICAgIGVzYWMgOzsKKworICBhbHBoYWV2NSkgYXhfZ2NjX2FyY2g9ZXY1IDs7CisgIGFscGhhZXY1NikgYXhfZ2NjX2FyY2g9ZXY1NiA7OworICBhbHBoYXBjYTU2KSBheF9nY2NfYXJjaD0icGNhNTYgZXY1NiIgOzsKKyAgYWxwaGFwY2E1NykgYXhfZ2NjX2FyY2g9InBjYTU3IHBjYTU2IGV2NTYiIDs7CisgIGFscGhhZXY2KSBheF9nY2NfYXJjaD1ldjYgOzsKKyAgYWxwaGFldjY3KSBheF9nY2NfYXJjaD1ldjY3IDs7CisgIGFscGhhZXY2OCkgYXhfZ2NjX2FyY2g9ImV2NjggZXY2NyIgOzsKKyAgYWxwaGFldjY5KSBheF9nY2NfYXJjaD0iZXY2OSBldjY4IGV2NjciIDs7CisgIGFscGhhZXY3KSBheF9nY2NfYXJjaD0iZXY3IGV2NjkgZXY2OCBldjY3IiA7OworICBhbHBoYWV2NzkpIGF4X2djY19hcmNoPSJldjc5IGV2NyBldjY5IGV2NjggZXY2NyIgOzsKKworICBwb3dlcnBjKikKKyAgICAgY3B1dHlwZT1gKChncmVwIGNwdSAvcHJvYy9jcHVpbmZvIHwgaGVhZCAtbiAxIHwgY3V0IC1kOiAtZjIgfCBjdXQgLWQsIC1mMSB8IHNlZCAncy8gLy9nJykgOyAvdXNyL2Jpbi9tYWNoaW5lIDsgL2Jpbi9tYWNoaW5lOyBncmVwIENQVSAvdmFyL3J1bi9kbWVzZy5ib290IHwgaGVhZCAtbiAxIHwgY3V0IC1kIiAiIC1mMikgMj4gL2Rldi9udWxsYAorICAgICBjcHV0eXBlPWBlY2hvICRjcHV0eXBlIHwgc2VkIC1lICdzL3BwYy8vZztzLyAqLy9nJ2AKKyAgICAgY2FzZSAkY3B1dHlwZSBpbgorICAgICAgICo3NTAqKSBheF9nY2NfYXJjaD0iNzUwIEczIiA7OworICAgICAgICo3NDBbMC05XSopIGF4X2djY19hcmNoPSIkY3B1dHlwZSA3NDAwIEc0IiA7OworICAgICAgICo3NFs0LTVdWzAtOV0qKSBheF9nY2NfYXJjaD0iJGNwdXR5cGUgNzQ1MCBHNCIgOzsKKyAgICAgICAqNzRbMC05XVswLTldKikgYXhfZ2NjX2FyY2g9IiRjcHV0eXBlIEc0IiA7OworICAgICAgICo5NzAqKSBheF9nY2NfYXJjaD0iOTcwIEc1IHBvd2VyNCI7OworICAgICAgICpQT1dFUjQqfCpwb3dlcjQqfCpncSopIGF4X2djY19hcmNoPSJwb3dlcjQgOTcwIjs7CisgICAgICAgKlBPV0VSNSp8KnBvd2VyNSp8KmdyKnwqZ3MqKSBheF9nY2NfYXJjaD0icG93ZXI1IHBvd2VyNCA5NzAiOzsKKyAgICAgICA2MDNldnw4MjQwKSBheF9nY2NfYXJjaD0iJGNwdXR5cGUgNjAzZSA2MDMiOzsKKyAgICAgICAqKSBheF9nY2NfYXJjaD0kY3B1dHlwZSA7OworICAgICBlc2FjCisgICAgIGF4X2djY19hcmNoPSIkYXhfZ2NjX2FyY2ggcG93ZXJwYyIKKyAgICAgOzsKK2VzYWMKK2ZpICMgbm90IGNyb3NzLWNvbXBpbGluZworZmkgIyBndWVzcyBhcmNoCisKK2lmIHRlc3QgIngkYXhfZ2NjX2FyY2giICE9IHggLWEgIngkYXhfZ2NjX2FyY2giICE9IHhubzsgdGhlbgorZm9yIGFyY2ggaW4gJGF4X2djY19hcmNoOyBkbworICBpZiB0ZXN0ICJ4JGFjeF9tYXhvcHRfcG9ydGFibGUiID0geHllczsgdGhlbiAjIGlmIHdlIHJlcXVpcmUgcG9ydGFibGUgY29kZQorICAgIGZsYWdzPSItbXR1bmU9JGFyY2giCisgICAgIyAtbWNwdT0kYXJjaCBhbmQgbSRhcmNoIGdlbmVyYXRlIG5vbnBvcnRhYmxlIGNvZGUgb24gZXZlcnkgYXJjaCBleGNlcHQKKyAgICAjIHg4Ni4gIEFuZCBzb21lIG90aGVyIGFyY2hlcyAoZS5nLiBBbHBoYSkgZG9uJ3QgYWNjZXB0IC1tdHVuZS4gIEdycnIuCisgICAgY2FzZSAkaG9zdF9jcHUgaW4gaSo4Nnx4ODZfNjQqKSBmbGFncz0iJGZsYWdzIC1tY3B1PSRhcmNoIC1tJGFyY2giOzsgZXNhYworICBlbHNlCisgICAgZmxhZ3M9Ii1tYXJjaD0kYXJjaCAtbWNwdT0kYXJjaCAtbSRhcmNoIgorICBmaQorICBmb3IgZmxhZyBpbiAkZmxhZ3M7IGRvCisgICAgYXNfQ0FDSEVWQVI9YCRhc19lY2hvICJheF9jdl9jaGVja19jZmxhZ3NfXyRmbGFnIiB8ICRhc190cl9zaGAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgJGZsYWciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgJGZsYWcuLi4gIiA+JjY7IH0KK2lmIGV2YWwgXCR7JGFzX0NBQ0hFVkFSKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICBheF9jaGVja19zYXZlX2ZsYWdzPSRDRkxBR1MKKyAgQ0ZMQUdTPSIkQ0ZMQUdTICAkZmxhZyIKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGV2YWwgIiRhc19DQUNIRVZBUj15ZXMiCitlbHNlCisgIGV2YWwgIiRhc19DQUNIRVZBUj1ubyIKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgQ0ZMQUdTPSRheF9jaGVja19zYXZlX2ZsYWdzCitmaQorZXZhbCBhY19yZXM9XCQkYXNfQ0FDSEVWQVIKKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQoraWYgdGVzdCB4ImBldmFsICdhc192YWw9JHsnJGFzX0NBQ0hFVkFSJ307JGFzX2VjaG8gIiRhc192YWwiJ2AiID0geHllczsgdGhlbiA6CisgIGF4X2N2X2djY19hcmNoZmxhZz0kZmxhZzsgYnJlYWsKK2Vsc2UKKyAgOgorZmkKKworICBkb25lCisgIHRlc3QgIngkYXhfY3ZfZ2NjX2FyY2hmbGFnIiA9IHh1bmtub3duIHx8IGJyZWFrCitkb25lCitmaQorCitmaSAjICRHQ0M9eWVzCisKK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGdjYyBhcmNoaXRlY3R1cmUgZmxhZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZ2NjIGFyY2hpdGVjdHVyZSBmbGFnLi4uICIgPiY2OyB9Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGF4X2N2X2djY19hcmNoZmxhZyIgPiY1CiskYXNfZWNobyAiJGF4X2N2X2djY19hcmNoZmxhZyIgPiY2OyB9CitpZiB0ZXN0ICJ4JGF4X2N2X2djY19hcmNoZmxhZyIgPSB4dW5rbm93bjsgdGhlbgorICA6CitlbHNlCisgIENGTEFHUz0iJENGTEFHUyAkYXhfY3ZfZ2NjX2FyY2hmbGFnIgorZmkKKworICAgICA7OworICBlc2FjCisKKyAgaWYgdGVzdCAteiAiJENGTEFHUyI7IHRoZW4KKwllY2hvICIiCisJZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCisgICAgICAgIGVjaG8gIiogV0FSTklORzogRG9uJ3Qga25vdyB0aGUgYmVzdCBDRkxBR1MgZm9yIHRoaXMgc3lzdGVtICAqIgorICAgICAgICBlY2hvICIqIFVzZSAuL2NvbmZpZ3VyZSBDRkxBR1M9Li4uIHRvIHNwZWNpZnkgeW91ciBvd24gZmxhZ3MgKiIKKwllY2hvICIqIChvdGhlcndpc2UsIGEgZGVmYXVsdCBvZiBDRkxBR1M9LU8zIHdpbGwgYmUgdXNlZCkgICAgKiIKKwllY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKKwllY2hvICIiCisgICAgICAgIENGTEFHUz0iLU8zIgorICBmaQorCisgIGFzX0NBQ0hFVkFSPWAkYXNfZWNobyAiYXhfY3ZfY2hlY2tfY2ZsYWdzX18kQ0ZMQUdTIiB8ICRhc190cl9zaGAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgJENGTEFHUyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAkQ0ZMQUdTLi4uICIgPiY2OyB9CitpZiBldmFsIFwkeyRhc19DQUNIRVZBUis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKKyAgYXhfY2hlY2tfc2F2ZV9mbGFncz0kQ0ZMQUdTCisgIENGTEFHUz0iJENGTEFHUyAgJENGTEFHUyIKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGV2YWwgIiRhc19DQUNIRVZBUj15ZXMiCitlbHNlCisgIGV2YWwgIiRhc19DQUNIRVZBUj1ubyIKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgQ0ZMQUdTPSRheF9jaGVja19zYXZlX2ZsYWdzCitmaQorZXZhbCBhY19yZXM9XCQkYXNfQ0FDSEVWQVIKKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQoraWYgdGVzdCB4ImBldmFsICdhc192YWw9JHsnJGFzX0NBQ0hFVkFSJ307JGFzX2VjaG8gIiRhc192YWwiJ2AiID0geHllczsgdGhlbiA6CisgIDoKK2Vsc2UKKworCWVjaG8gIiIKKyAgICAgICAgZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCisgICAgICAgIGVjaG8gIiogV0FSTklORzogVGhlIGd1ZXNzZWQgQ0ZMQUdTIGRvbid0IHNlZW0gdG8gd29yayB3aXRoICAqIgorICAgICAgICBlY2hvICIqIHlvdXIgY29tcGlsZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiIKKyAgICAgICAgZWNobyAiKiBVc2UgLi9jb25maWd1cmUgQ0ZMQUdTPS4uLiB0byBzcGVjaWZ5IHlvdXIgb3duIGZsYWdzICoiCisgICAgICAgIGVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgorICAgICAgICBlY2hvICIiCisgICAgICAgIENGTEFHUz0iIgorCitmaQorCisKK2ZpCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBDRkxBR1MgZm9yIG1heGltdW0gd2FybmluZ3MiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgQ0ZMQUdTIGZvciBtYXhpbXVtIHdhcm5pbmdzLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2NmbGFnc193YXJuX2FsbCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2N2X2NmbGFnc193YXJuX2FsbD0ibm8sIHVua25vd24iCithY19zYXZlX0NGTEFHUz0iJENGTEFHUyIKK2ZvciBhY19hcmcgaW4gIi13YXJuIGFsbCAgJSAtd2FybiBhbGwiICAgICAgIi1wZWRhbnRpYyAgJSAtV2FsbCIgICAgICAgICAgIi14c3RyY29uc3QgJSAtdiIgICAgICAgICAgICAgIi1zdGQxICAgICAgJSAtdmVyYm9zZSAtdzAgLXdhcm5wcm90b3MiICAgICItcWxhbmdsdmw9YW5zaSAlIC1xc3JjbXNnIC1xaW5mbz1hbGw6bm9wcHQ6bm9wcGM6bm9vYnM6bm9jbmQiICAgICItYW5zaSAtYW5zaUUgJSAtZnVsbHdhcm4iICAgICIrRVNsaXQgICAgICUgK3cxIiAgICAgICAgICAgICItWGMgICAgICAgICUgLXB2Y3RsLGZ1bGxtc2ciICAgICItaCBjb25mb3JtICUgLWggbXNnbGV2ZWwgMiIgICAgIworZG8gQ0ZMQUdTPSIkYWNfc2F2ZV9DRkxBR1MgImBlY2hvICRhY19hcmcgfCBzZWQgLWUgJ3MsJSUuKiwsJyAtZSAncywlLCwnYAorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2NmbGFnc193YXJuX2FsbD1gZWNobyAkYWNfYXJnIHwgc2VkIC1lICdzLC4qJSAqLCwnYCA7IGJyZWFrCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Citkb25lCitDRkxBR1M9IiRhY19zYXZlX0NGTEFHUyIKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsIiA+JjY7IH0KK2Nhc2UgIi4kYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsIiBpbgorICAgICAub2t8Lm9rLCopICA7OworICAgLnwubm98Lm5vLCopICA7OworICAgKikgaWYgJHtDRkxBR1MrOn0gZmFsc2U7IHRoZW4gOgorICBjYXNlICIgJENGTEFHUyAiIGluCisgICAgKiIgJGFjX2N2X2NmbGFnc193YXJuX2FsbCAiKikKKyAgICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiA6IENGTEFHUyBhbHJlYWR5IGNvbnRhaW5zIFwkYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsIjsgfSA+JjUKKyAgKDogQ0ZMQUdTIGFscmVhZHkgY29udGFpbnMgJGFjX2N2X2NmbGFnc193YXJuX2FsbCkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKyAgICAgIDs7CisgICAgKikKKyAgICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiA6IENGTEFHUz1cIlwkQ0ZMQUdTIFwkYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsXCIiOyB9ID4mNQorICAoOiBDRkxBR1M9IiRDRkxBR1MgJGFjX2N2X2NmbGFnc193YXJuX2FsbCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisgICAgICBDRkxBR1M9IiRDRkxBR1MgJGFjX2N2X2NmbGFnc193YXJuX2FsbCIKKyAgICAgIDs7CisgICBlc2FjCitlbHNlCisgIENGTEFHUz0iJGFjX2N2X2NmbGFnc193YXJuX2FsbCIKK2ZpCisgOzsKK2VzYWMKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCisKK2lmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgorICBDRkxBR1M9IiRDRkxBR1MgLWZleGNlcHRpb25zIgorZmkKKwogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdG8gZW5hYmxlIG1haW50YWluZXItc3BlY2lmaWMgcG9ydGlvbnMgb2YgTWFrZWZpbGVzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdG8gZW5hYmxlIG1haW50YWluZXItc3BlY2lmaWMgcG9ydGlvbnMgb2YgTWFrZWZpbGVzLi4uICIgPiY2OyB9CkBAIC0xMTAwNSw3ICsxMzAyMiw3IEBACiBmb3IgYWNfaGVhZGVyIGluIHN5cy9tbWFuLmgKIGRvIDoKICAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgInN5cy9tbWFuLmgiICJhY19jdl9oZWFkZXJfc3lzX21tYW5faCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3lzX21tYW5faCIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3lzX21tYW5faCIgPSB4eWVzOyB0aGVuIDoKICAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgogI2RlZmluZSBIQVZFX1NZU19NTUFOX0ggMQogX0FDRU9GCkBAIC0xMTAxNyw3ICsxMzAzNCw3IEBACiBmb3IgYWNfZnVuYyBpbiBtbWFwCiBkbyA6CiAgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm1tYXAiICJhY19jdl9mdW5jX21tYXAiCi1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbW1hcCIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9mdW5jX21tYXAiID0geHllczsgdGhlbiA6CiAgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKICNkZWZpbmUgSEFWRV9NTUFQIDEKIF9BQ0VPRgpAQCAtMTEwMjcsNyArMTMwNDQsNyBAQAogCiAKIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJzeXMvbW1hbi5oIiAiYWNfY3ZfaGVhZGVyX3N5c19tbWFuX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N5c19tbWFuX2giID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N5c19tbWFuX2giID0geHllczsgdGhlbiA6CiAgIGxpYmZmaV9oZWFkZXJfc3lzX21tYW5faD15ZXMKIGVsc2UKICAgbGliZmZpX2hlYWRlcl9zeXNfbW1hbl9oPW5vCkBAIC0xMTAzNSw3ICsxMzA1Miw3IEBACiAKIAogYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAibW1hcCIgImFjX2N2X2Z1bmNfbW1hcCIKLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19tbWFwIiA9IHgiInllczsgdGhlbiA6CitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbW1hcCIgPSB4eWVzOyB0aGVuIDoKICAgbGliZmZpX2Z1bmNfbW1hcD15ZXMKIGVsc2UKICAgbGliZmZpX2Z1bmNfbW1hcD1ubwpAQCAtMTEwNDksNyArMTMwNjYsNyBAQAogZWxzZQogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHJlYWQtb25seSBtbWFwIG9mIGEgcGxhaW4gZmlsZSB3b3JrcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHJlYWQtb25seSBtbWFwIG9mIGEgcGxhaW4gZmlsZSB3b3Jrcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9mdW5jX21tYXBfZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2Z1bmNfbW1hcF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgIyBBZGQgYSBzeXN0ZW0gdG8gdGhpcyBibGFja2xpc3QgaWYKQEAgLTExMDY4LDcgKzEzMDg1LDcgQEAKICRhc19lY2hvICIkYWNfY3ZfZnVuY19tbWFwX2ZpbGUiID4mNjsgfQogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIG1tYXAgZnJvbSAvZGV2L3plcm8gd29ya3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBtbWFwIGZyb20gL2Rldi96ZXJvIHdvcmtzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2Z1bmNfbW1hcF9kZXZfemVybytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2Z1bmNfbW1hcF9kZXZfemVybys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgICMgQWRkIGEgc3lzdGVtIHRvIHRoaXMgYmxhY2tsaXN0IGlmIGl0IGhhcyBtbWFwKCkgYnV0IC9kZXYvemVybwpAQCAtMTEwOTQsNyArMTMxMTEsNyBAQAogICAgIyBVbmxpa2UgL2Rldi96ZXJvLCB0aGUgTUFQX0FOT04oWU1PVVMpIGRlZmluZXMgY2FuIGJlIHByb2JlZCBmb3IuCiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBNQVBfQU5PTihZTU9VUykiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIE1BUF9BTk9OKFlNT1VTKS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9kZWNsX21hcF9hbm9uK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfZGVjbF9tYXBfYW5vbis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTExMTMwLDcgKzEzMTQ3LDcgQEAKICAgIGVsc2UKICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIG1tYXAgd2l0aCBNQVBfQU5PTihZTU9VUykgd29ya3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBtbWFwIHdpdGggTUFQX0FOT04oWU1PVVMpIHdvcmtzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2Z1bmNfbW1hcF9hbm9uK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfZnVuY19tbWFwX2Fub24rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICAjIEFkZCBhIHN5c3RlbSB0byB0aGlzIGJsYWNrbGlzdCBpZiBpdCBoYXMgbW1hcCgpIGFuZCBNQVBfQU5PTiBvcgpAQCAtMTExODAsNyArMTMxOTcsNyBAQAogY2FzZSAiJGhvc3QiIGluCiAgIGFscGhhKi0qLSopCiAJVEFSR0VUPUFMUEhBOyBUQVJHRVRESVI9YWxwaGE7Ci0JIyBTdXBwb3J0IDEyOC1iaXQgbG9uZyBkb3VibGUsIGNoYW5nYWJsZSB2aWEgY29tbWFuZC1saW5lIHN3aXRjaC4KKwkjIFN1cHBvcnQgMTI4LWJpdCBsb25nIGRvdWJsZSwgY2hhbmdlYWJsZSB2aWEgY29tbWFuZC1saW5lIHN3aXRjaC4KIAlIQVZFX0xPTkdfRE9VQkxFPSdkZWZpbmVkKF9fTE9OR19ET1VCTEVfMTI4X18pJwogCTs7CiAKQEAgLTExMjA4LDcgKzEzMjI1LDcgQEAKIAlUQVJHRVQ9RlJWOyBUQVJHRVRESVI9ZnJ2CiAJOzsKIAotICBocHBhKi0qLWxpbnV4KiB8IHBhcmlzYyotKi1saW51eCopCisgIGhwcGEqLSotbGludXgqIHwgcGFyaXNjKi0qLWxpbnV4KiB8IGhwcGEqLSotb3BlbmJzZCopCiAJVEFSR0VUPVBBX0xJTlVYOyBUQVJHRVRESVI9cGEKIAk7OwogICBocHBhKjY0LSotaHB1eCopCkBAIC0xMTIyMSwxMCArMTMyMzgsMTcgQEAKICAgaT84Ni0qLWZyZWVic2QqIHwgaT84Ni0qLW9wZW5ic2QqKQogCVRBUkdFVD1YODZfRlJFRUJTRDsgVEFSR0VURElSPXg4NgogCTs7Ci0gIGk/ODYtd2luMzIqIHwgaT84Ni0qLWN5Z3dpbiogfCBpPzg2LSotbWluZ3cqKQorICBpPzg2LXdpbjMyKiB8IGk/ODYtKi1jeWd3aW4qIHwgaT84Ni0qLW1pbmd3KiB8IGk/ODYtKi1vczIqIHwgaT84Ni0qLWludGVyaXgqKQogCVRBUkdFVD1YODZfV0lOMzI7IFRBUkdFVERJUj14ODYKLQkjIEFsbCBtaW5ndy9jeWd3aW4vd2luMzIgYnVpbGRzIHJlcXVpcmUgdGhpcyBmb3Igc2hhcmVkbGliCi0JQU1fTFRMREZMQUdTPSItbm8tdW5kZWZpbmVkIgorCSMgQWxsIG1pbmd3L2N5Z3dpbi93aW4zMiBidWlsZHMgcmVxdWlyZSAtbm8tdW5kZWZpbmVkIGZvciBzaGFyZWRsaWIuCisJIyBXZSBtdXN0IGFsc28gY2hlY2sgd2l0aF9jcm9zc19ob3N0IHRvIGRlY2lkZSBpZiB0aGlzIGlzIGEgbmF0aXZlCisJIyBvciBjcm9zcy1idWlsZCBhbmQgc2VsZWN0IHdoZXJlIHRvIGluc3RhbGwgZGxscyBhcHByb3ByaWF0ZWx5LgorCWlmIHRlc3QgLW4gIiR3aXRoX2Nyb3NzX2hvc3QiICYmCisJICAgdGVzdCB4IiR3aXRoX2Nyb3NzX2hvc3QiICE9IHgibm8iOyB0aGVuCisJICBBTV9MVExERkxBR1M9Jy1uby11bmRlZmluZWQgLWJpbmRpciAiJCh0b29sZXhlY2xpYmRpcikiJzsKKwllbHNlCisJICBBTV9MVExERkxBR1M9Jy1uby11bmRlZmluZWQgLWJpbmRpciAiJChiaW5kaXIpIic7CisJZmkKIAk7OwogICBpPzg2LSotZGFyd2luKikKIAlUQVJHRVQ9WDg2X0RBUldJTjsgVEFSR0VURElSPXg4NgpAQCAtMTEyMzYsNyArMTMyNjAsNyBAQAogICAgICAgICBUQVJHRVQ9WDg2OyBUQVJHRVRESVI9eDg2CiAgICAgICAgIDs7CiAgIGk/ODYtKi0qKQotCVRBUkdFVD1YODY7IFRBUkdFVERJUj14ODYKKwlUQVJHRVQ9WDg2XzY0OyBUQVJHRVRESVI9eDg2CiAJOzsKIAogICBpYTY0Ki0qLSopCkBAIC0xMTI1MSwzMCArMTMyNzUsNDAgQEAKIAlUQVJHRVQ9TTY4SzsgVEFSR0VURElSPW02OGsKIAk7OwogCi0gIG1pcHMtc2dpLWlyaXg1LiogfCBtaXBzLXNnaS1pcml4Ni4qKQorICBtaXBzLXNnaS1pcml4NS4qIHwgbWlwcy1zZ2ktaXJpeDYuKiB8IG1pcHMqLSotcnRlbXMqKQogCVRBUkdFVD1NSVBTX0lSSVg7IFRBUkdFVERJUj1taXBzCiAJOzsKLSAgbWlwcyotKi1saW51eCopCisgIG1pcHMqLSotbGludXgqIHwgbWlwcyotKi1vcGVuYnNkKikKIAkjIFN1cHBvcnQgMTI4LWJpdCBsb25nIGRvdWJsZSBmb3IgTmV3QUJJLgogCUhBVkVfTE9OR19ET1VCTEU9J2RlZmluZWQoX19taXBzNjQpJwogCVRBUkdFVD1NSVBTX0lSSVg7IFRBUkdFVERJUj1taXBzCiAJOzsKIAorICBtb3hpZS0qLSopCisgICAgICAgIFRBUkdFVD1NT1hJRTsgVEFSR0VURElSPW1veGllCisJOzsKKwogICBwb3dlcnBjKi0qLWxpbnV4KiB8IHBvd2VycGMtKi1zeXN2KikKIAlUQVJHRVQ9UE9XRVJQQzsgVEFSR0VURElSPXBvd2VycGMKIAk7OworICBwb3dlcnBjLSotYW1pZ2FvcyopCisJVEFSR0VUPVBPV0VSUEM7IFRBUkdFVERJUj1wb3dlcnBjCisJOzsKICAgcG93ZXJwYy0qLWJlb3MqKQogCVRBUkdFVD1QT1dFUlBDOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7Ci0gIHBvd2VycGMtKi1kYXJ3aW4qKQorICBwb3dlcnBjLSotZGFyd2luKiB8IHBvd2VycGM2NC0qLWRhcndpbiopCiAJVEFSR0VUPVBPV0VSUENfREFSV0lOOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7CiAgIHBvd2VycGMtKi1haXgqIHwgcnM2MDAwLSotYWl4KikKIAlUQVJHRVQ9UE9XRVJQQ19BSVg7IFRBUkdFVERJUj1wb3dlcnBjCiAJOzsKLSAgcG93ZXJwYy0qLWZyZWVic2QqKQorICBwb3dlcnBjLSotZnJlZWJzZCogfCBwb3dlcnBjLSotb3BlbmJzZCopCiAJVEFSR0VUPVBPV0VSUENfRlJFRUJTRDsgVEFSR0VURElSPXBvd2VycGMKIAk7OworICBwb3dlcnBjNjQtKi1mcmVlYnNkKikKKwlUQVJHRVQ9UE9XRVJQQzsgVEFSR0VURElSPXBvd2VycGMKKwk7OwogICBwb3dlcnBjKi0qLXJ0ZW1zKikKIAlUQVJHRVQ9UE9XRVJQQzsgVEFSR0VURElSPXBvd2VycGMKIAk7OwpAQCAtMTEzMDAsNiArMTMzMzQsMTUgQEAKIAogICB4ODZfNjQtKi1jeWd3aW4qIHwgeDg2XzY0LSotbWluZ3cqKQogCVRBUkdFVD1YODZfV0lONjQ7IFRBUkdFVERJUj14ODYKKwkjIEFsbCBtaW5ndy9jeWd3aW4vd2luMzIgYnVpbGRzIHJlcXVpcmUgLW5vLXVuZGVmaW5lZCBmb3Igc2hhcmVkbGliLgorCSMgV2UgbXVzdCBhbHNvIGNoZWNrIHdpdGhfY3Jvc3NfaG9zdCB0byBkZWNpZGUgaWYgdGhpcyBpcyBhIG5hdGl2ZQorCSMgb3IgY3Jvc3MtYnVpbGQgYW5kIHNlbGVjdCB3aGVyZSB0byBpbnN0YWxsIGRsbHMgYXBwcm9wcmlhdGVseS4KKwlpZiB0ZXN0IC1uICIkd2l0aF9jcm9zc19ob3N0IiAmJgorCSAgIHRlc3QgeCIkd2l0aF9jcm9zc19ob3N0IiAhPSB4Im5vIjsgdGhlbgorCSAgQU1fTFRMREZMQUdTPSctbm8tdW5kZWZpbmVkIC1iaW5kaXIgIiQodG9vbGV4ZWNsaWJkaXIpIic7CisJZWxzZQorCSAgQU1fTFRMREZMQUdTPSctbm8tdW5kZWZpbmVkIC1iaW5kaXIgIiQoYmluZGlyKSInOworCWZpCiAJOzsKIAogICB4ODZfNjQtKi0qKQpAQCAtMTEzMTEsNyArMTMzNTQsNyBAQAogCiAKIGlmIHRlc3QgJFRBUkdFVERJUiA9IHVua25vd247IHRoZW4KLSAgYXNfZm5fZXJyb3IgIlwibGliZmZpIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gJGhvc3QuXCIiICIkTElORU5PIiA1CisgIGFzX2ZuX2Vycm9yICQ/ICJcImxpYmZmaSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvICRob3N0LlwiIiAiJExJTkVOTyIgNQogZmkKIAogIGlmIGV4cHIgeCRUQVJHRVQgOiAneE1JUFMnID4gL2Rldi9udWxsOyB0aGVuCkBAIC0xMTQwMiw2ICsxMzQ0NSwxNCBAQAogICBNNjhLX0ZBTFNFPQogZmkKIAorIGlmIHRlc3QgeCRUQVJHRVQgPSB4TU9YSUU7IHRoZW4KKyAgTU9YSUVfVFJVRT0KKyAgTU9YSUVfRkFMU0U9JyMnCitlbHNlCisgIE1PWElFX1RSVUU9JyMnCisgIE1PWElFX0ZBTFNFPQorZmkKKwogIGlmIHRlc3QgeCRUQVJHRVQgPSB4UE9XRVJQQzsgdGhlbgogICBQT1dFUlBDX1RSVUU9CiAgIFBPV0VSUENfRkFMU0U9JyMnCkBAIC0xMTUyNSw3ICsxMzU3Niw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX3N0ZGMrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9oZWFkZXJfc3RkYys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTExNjM4LDcgKzEzNjg5LDcgQEAKIGZvciBhY19mdW5jIGluIG1lbWNweQogZG8gOgogICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJtZW1jcHkiICJhY19jdl9mdW5jX21lbWNweSIKLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19tZW1jcHkiID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19tZW1jcHkiID0geHllczsgdGhlbiA6CiAgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKICNkZWZpbmUgSEFWRV9NRU1DUFkgMQogX0FDRU9GCkBAIC0xMTY0NiwxMSArMTM2OTcsMjIgQEAKIGZpCiBkb25lCiAKK2FjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInNpemVfdCIgImFjX2N2X3R5cGVfc2l6ZV90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfc2l6ZV90IiA9IHh5ZXM7IHRoZW4gOgorCitlbHNlCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgc2l6ZV90IHVuc2lnbmVkIGludAorX0FDRU9GCisKK2ZpCisKICMgVGhlIFVsdHJpeCA0LjIgbWlwcyBidWlsdGluIGFsbG9jYSBkZWNsYXJlZCBieSBhbGxvY2EuaCBvbmx5IHdvcmtzCiAjIGZvciBjb25zdGFudCBhcmd1bWVudHMuICBVc2VsZXNzIQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igd29ya2luZyBhbGxvY2EuaCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3Igd29ya2luZyBhbGxvY2EuaC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl93b3JraW5nX2FsbG9jYV9oK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3Zfd29ya2luZ19hbGxvY2FfaCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTExNjgzLDcgKzEzNzQ1LDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYWxsb2NhIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBhbGxvY2EuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfZnVuY19hbGxvY2Ffd29ya3Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9mdW5jX2FsbG9jYV93b3Jrcys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTExNzAyLDcgKzEzNzY0LDcgQEAKICAjcHJhZ21hIGFsbG9jYQogIyAgIGVsc2UKICMgICAgaWZuZGVmIGFsbG9jYSAvKiBwcmVkZWZpbmVkIGJ5IEhQIGNjICtPbGliY2FsbHMgKi8KLWNoYXIgKmFsbG9jYSAoKTsKK3ZvaWQgKmFsbG9jYSAoc2l6ZV90KTsKICMgICAgZW5kaWYKICMgICBlbmRpZgogIyAgZW5kaWYKQEAgLTExNzQ2LDcgKzEzODA4LDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIFxgYWxsb2NhLmMnIG5lZWRzIENyYXkgaG9va3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBcYGFsbG9jYS5jJyBuZWVkcyBDcmF5IGhvb2tzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X29zX2NyYXkrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9vc19jcmF5Kzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTE3NzMsOCArMTM4MzUsNyBAQAogICBmb3IgYWNfZnVuYyBpbiBfZ2V0YjY3IEdFVEI2NyBnZXRiNjc7IGRvCiAgICAgYXNfYWNfdmFyPWAkYXNfZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCiBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICIkYWNfZnVuYyIgIiRhc19hY192YXIiCi1ldmFsIGFzX3ZhbD1cJCRhc19hY192YXIKLSAgIGlmIHRlc3QgIngkYXNfdmFsIiA9IHgiInllczsgdGhlbiA6CitpZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX3ZhciJcIiA9IHgieWVzIjsgdGhlbiA6CiAKIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKICNkZWZpbmUgQ1JBWV9TVEFDS1NFR19FTkQgJGFjX2Z1bmMKQEAgLTExNzg4LDcgKzEzODQ5LDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzdGFjayBkaXJlY3Rpb24gZm9yIEMgYWxsb2NhIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHN0YWNrIGRpcmVjdGlvbiBmb3IgQyBhbGxvY2EuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfY19zdGFja19kaXJlY3Rpb24rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9jX3N0YWNrX2RpcmVjdGlvbis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKQEAgLTExODQzLDcgKzEzOTA0LDcgQEAKICMgVGhpcyBidWcgaXMgSFAgU1IgbnVtYmVyIDg2MDYyMjMzNjQuCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHNpemUgb2YgZG91YmxlIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHNpemUgb2YgZG91YmxlLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3NpemVvZl9kb3VibGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9zaXplb2ZfZG91YmxlKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgYWNfZm5fY19jb21wdXRlX2ludCAiJExJTkVOTyIgIihsb25nIGludCkgKHNpemVvZiAoZG91YmxlKSkiICJhY19jdl9zaXplb2ZfZG91YmxlIiAgICAgICAgIiRhY19pbmNsdWRlc19kZWZhdWx0IjsgdGhlbiA6CkBAIC0xMTg1Miw5ICsxMzkxMyw4IEBACiAgIGlmIHRlc3QgIiRhY19jdl90eXBlX2RvdWJsZSIgPSB5ZXM7IHRoZW4KICAgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci17IGFzX2ZuX3NldF9zdGF0dXMgNzcKLWFzX2ZuX2Vycm9yICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKGRvdWJsZSkKLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiAiJExJTkVOTyIgNTsgfTsgfQorYXNfZm5fZXJyb3IgNzcgImNhbm5vdCBjb21wdXRlIHNpemVvZiAoZG91YmxlKQorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KICAgIGVsc2UKICAgICAgYWNfY3Zfc2l6ZW9mX2RvdWJsZT0wCiAgICBmaQpAQCAtMTE4NzcsNyArMTM5MzcsNyBAQAogIyBUaGlzIGJ1ZyBpcyBIUCBTUiBudW1iZXIgODYwNjIyMzM2NC4KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiBsb25nIGRvdWJsZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBzaXplIG9mIGxvbmcgZG91YmxlLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3NpemVvZl9sb25nX2RvdWJsZStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3NpemVvZl9sb25nX2RvdWJsZSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIGFjX2ZuX2NfY29tcHV0ZV9pbnQgIiRMSU5FTk8iICIobG9uZyBpbnQpIChzaXplb2YgKGxvbmcgZG91YmxlKSkiICJhY19jdl9zaXplb2ZfbG9uZ19kb3VibGUiICAgICAgICAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiOyB0aGVuIDoKQEAgLTExODg2LDkgKzEzOTQ2LDggQEAKICAgaWYgdGVzdCAiJGFjX2N2X3R5cGVfbG9uZ19kb3VibGUiID0geWVzOyB0aGVuCiAgICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQogJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQoteyBhc19mbl9zZXRfc3RhdHVzIDc3Ci1hc19mbl9lcnJvciAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mIChsb25nIGRvdWJsZSkKLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiAiJExJTkVOTyIgNTsgfTsgfQorYXNfZm5fZXJyb3IgNzcgImNhbm5vdCBjb21wdXRlIHNpemVvZiAobG9uZyBkb3VibGUpCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogICAgZWxzZQogICAgICBhY19jdl9zaXplb2ZfbG9uZ19kb3VibGU9MAogICAgZmkKQEAgLTExOTIyLDcgKzEzOTgxLDcgQEAKIAogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBieXRlIG9yZGVyaW5nIGlzIGJpZ2VuZGlhbiIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGJ5dGUgb3JkZXJpbmcgaXMgYmlnZW5kaWFuLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2NfYmlnZW5kaWFuK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfY19iaWdlbmRpYW4rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhY19jdl9jX2JpZ2VuZGlhbj11bmtub3duCkBAIC0xMjE0MCwxOCArMTQxOTksMTggQEAKIAogICAgICA7OyAjKAogICAgKikKLSAgICAgYXNfZm5fZXJyb3IgInVua25vd24gZW5kaWFubmVzcworICAgICBhc19mbl9lcnJvciAkPyAidW5rbm93biBlbmRpYW5uZXNzCiAgcHJlc2V0dGluZyBhY19jdl9jX2JpZ2VuZGlhbj1ubyAob3IgeWVzKSB3aWxsIGhlbHAiICIkTElORU5PIiA1IDs7CiAgZXNhYwogCiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYXNzZW1ibGVyIC5jZmkgcHNldWRvLW9wIHN1cHBvcnQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgYXNzZW1ibGVyIC5jZmkgcHNldWRvLW9wIHN1cHBvcnQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bGliZmZpX2N2X2FzX2NmaV9wc2V1ZG9fb3Arc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtnY2NfY3ZfYXNfY2ZpX3BzZXVkb19vcCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAKLSAgICBsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcD11bmtub3duCisgICAgZ2NjX2N2X2FzX2NmaV9wc2V1ZG9fb3A9dW5rbm93bgogICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIGFzbSAoIi5jZmlfc3RhcnRwcm9jXG5cdC5jZmlfZW5kcHJvYyIpOwpAQCAtMTIxNjQsMjUgKzE0MjIzLDI2IEBACiB9CiBfQUNFT0YKIGlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSAgbGliZmZpX2N2X2FzX2NmaV9wc2V1ZG9fb3A9eWVzCisgIGdjY19jdl9hc19jZmlfcHNldWRvX29wPXllcwogZWxzZQotICBsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcD1ubworICBnY2NfY3ZfYXNfY2ZpX3BzZXVkb19vcD1ubwogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogCiBmaQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcCIgPiY1Ci0kYXNfZWNobyAiJGxpYmZmaV9jdl9hc19jZmlfcHNldWRvX29wIiA+JjY7IH0KLWlmIHRlc3QgIngkbGliZmZpX2N2X2FzX2NmaV9wc2V1ZG9fb3AiID0geHllczsgdGhlbgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnY2NfY3ZfYXNfY2ZpX3BzZXVkb19vcCIgPiY1CiskYXNfZWNobyAiJGdjY19jdl9hc19jZmlfcHNldWRvX29wIiA+JjY7IH0KKyBpZiB0ZXN0ICJ4JGdjY19jdl9hc19jZmlfcHNldWRvX29wIiA9IHh5ZXM7IHRoZW4KIAogJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9BU19DRklfUFNFVURPX09QIDEiID4+Y29uZmRlZnMuaAogCi1maQorIGZpCisKIAogaWYgdGVzdCB4JFRBUkdFVCA9IHhTUEFSQzsgdGhlbgogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYXNzZW1ibGVyIGFuZCBsaW5rZXIgc3VwcG9ydCB1bmFsaWduZWQgcGMgcmVsYXRlZCByZWxvY3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgYXNzZW1ibGVyIGFuZCBsaW5rZXIgc3VwcG9ydCB1bmFsaWduZWQgcGMgcmVsYXRlZCByZWxvY3MuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bGliZmZpX2N2X2FzX3NwYXJjX3VhX3BjcmVsK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bGliZmZpX2N2X2FzX3NwYXJjX3VhX3BjcmVsKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKIApAQCAtMTIyMjEsNyArMTQyODEsNyBAQAogCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhc3NlbWJsZXIgLnJlZ2lzdGVyIHBzZXVkby1vcCBzdXBwb3J0IiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGFzc2VtYmxlciAucmVnaXN0ZXIgcHNldWRvLW9wIHN1cHBvcnQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bGliZmZpX2N2X2FzX3JlZ2lzdGVyX3BzZXVkb19vcCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2xpYmZmaV9jdl9hc19yZWdpc3Rlcl9wc2V1ZG9fb3ArOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogCkBAIC0xMjI1OCwxNCArMTQzMTgsMTQgQEAKIGlmIHRlc3QgeCRUQVJHRVQgPSB4WDg2IHx8IHRlc3QgeCRUQVJHRVQgPSB4WDg2X1dJTjMyIHx8IHRlc3QgeCRUQVJHRVQgPSB4WDg2XzY0OyB0aGVuCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhc3NlbWJsZXIgc3VwcG9ydHMgcGMgcmVsYXRlZCByZWxvY3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgYXNzZW1ibGVyIHN1cHBvcnRzIHBjIHJlbGF0ZWQgcmVsb2NzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2xpYmZmaV9jdl9hc194ODZfcGNyZWwrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsaWJmZmlfY3ZfYXNfeDg2X3BjcmVsKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKIAotCWxpYmZmaV9jdl9hc194ODZfcGNyZWw9eWVzCisJbGliZmZpX2N2X2FzX3g4Nl9wY3JlbD1ubwogCWVjaG8gJy50ZXh0OyBmb286IG5vcDsgLmRhdGE7IC5sb25nIGZvby0uOyAudGV4dCcgPiBjb25mdGVzdC5zCi0JaWYgJENDICRDRkxBR1MgLWMgY29uZnRlc3QucyAyPiYxIHwgZ3JlcCAtaSB3YXJuaW5nID4gL2Rldi9udWxsOyB0aGVuCi0JICAgIGxpYmZmaV9jdl9hc194ODZfcGNyZWw9bm8KKwlpZiAkQ0MgJENGTEFHUyAtYyBjb25mdGVzdC5zID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KKwkgICAgbGliZmZpX2N2X2FzX3g4Nl9wY3JlbD15ZXMKIAlmaQogCiBmaQpAQCAtMTIyNzYsNzcgKzE0MzM2LDI0NCBAQAogJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9BU19YODZfUENSRUwgMSIgPj5jb25mZGVmcy5oCiAKICAgICBmaQorCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhc3NlbWJsZXIgLmFzY2lpIHBzZXVkby1vcCBzdXBwb3J0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGFzc2VtYmxlciAuYXNjaWkgcHNldWRvLW9wIHN1cHBvcnQuLi4gIiA+JjY7IH0KK2lmICR7bGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKKyAgICAgICBsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wPXVua25vd24KKyAgICAgICAjIENoZWNrIGlmIHdlIGhhdmUgLmFzY2lpCisgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworYXNtICgiLmFzY2lpIFxcInN0cmluZ1xcIiIpOworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wPXllcworZWxzZQorICBsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGxpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3AiID4mNQorJGFzX2VjaG8gIiRsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wIiA+JjY7IH0KKyAgICBpZiB0ZXN0ICJ4JGxpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3AiID0geHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0FTX0FTQ0lJX1BTRVVET19PUCAxIiA+PmNvbmZkZWZzLmgKKworICAgIGZpCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGFzc2VtYmxlciAuc3RyaW5nIHBzZXVkby1vcCBzdXBwb3J0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGFzc2VtYmxlciAuc3RyaW5nIHBzZXVkby1vcCBzdXBwb3J0Li4uICIgPiY2OyB9CitpZiAke2xpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICAgICAgIGxpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wPXVua25vd24KKyAgICAgICAjIENoZWNrIGlmIHdlIGhhdmUgLnN0cmluZworICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KK2FzbSAoIi5zdHJpbmcgXFwic3RyaW5nXFwiIik7CitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGxpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wPXllcworZWxzZQorICBsaWJmZmlfY3ZfYXNfc3RyaW5nX3BzZXVkb19vcD1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsaWJmZmlfY3ZfYXNfc3RyaW5nX3BzZXVkb19vcCIgPiY1CiskYXNfZWNobyAiJGxpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wIiA+JjY7IH0KKyAgICBpZiB0ZXN0ICJ4JGxpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wIiA9IHh5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9BU19TVFJJTkdfUFNFVURPX09QIDEiID4+Y29uZmRlZnMuaAorCisgICAgZmkKIGZpCiAKK2lmIHRlc3QgeCRUQVJHRVQgPSB4WDg2X1dJTjY0OyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgXyBwcmVmaXggaW4gY29tcGlsZWQgc3ltYm9scyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgXyBwcmVmaXggaW4gY29tcGlsZWQgc3ltYm9scy4uLiAiID4mNjsgfQoraWYgJHtsdF9jdl9zeXNfc3ltYm9sX3VuZGVyc2NvcmUrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBsdF9jdl9zeXNfc3ltYm9sX3VuZGVyc2NvcmU9bm8KKyAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKK3ZvaWQgbm1fdGVzdF9mdW5jKCl7fQoraW50IG1haW4oKXtubV90ZXN0X2Z1bmM7cmV0dXJuIDA7fQorX0xUX0VPRgorICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgICAgIyBOb3cgdHJ5IHRvIGdyYWIgdGhlIHN5bWJvbHMuCisgICAgYWNfbmxpc3Q9Y29uZnRlc3Qubm0KKyAgICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcPiAkYWNfbmxpc3RcIiI7IH0gPiY1CisgIChldmFsICROTSBjb25mdGVzdC4kYWNfb2JqZXh0IFx8ICRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFw+ICRhY19ubGlzdCkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyAiJGFjX25saXN0IjsgdGhlbgorICAgICAgIyBTZWUgd2hldGhlciB0aGUgc3ltYm9scyBoYXZlIGEgbGVhZGluZyB1bmRlcnNjb3JlLgorICAgICAgaWYgZ3JlcCAnXi4gX25tX3Rlc3RfZnVuYycgIiRhY19ubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICBsdF9jdl9zeXNfc3ltYm9sX3VuZGVyc2NvcmU9eWVzCisgICAgICBlbHNlCisgICAgICAgIGlmIGdyZXAgJ14uIG5tX3Rlc3RfZnVuYyAnICIkYWNfbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKwkgIDoKKyAgICAgICAgZWxzZQorCSAgZWNobyAiY29uZmlndXJlOiBjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJGFjX25saXN0IiA+JjUKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZWxzZQorICAgICAgZWNobyAiY29uZmlndXJlOiBjYW5ub3QgcnVuICRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiA+JjUKKyAgICBmaQorICBlbHNlCisgICAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgICBjYXQgY29uZnRlc3QuYyA+JjUKKyAgZmkKKyAgcm0gLXJmIGNvbmZ0ZXN0KgorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zeXNfc3ltYm9sX3VuZGVyc2NvcmUiID4mNQorJGFzX2VjaG8gIiRsdF9jdl9zeXNfc3ltYm9sX3VuZGVyc2NvcmUiID4mNjsgfQorICBzeXNfc3ltYm9sX3VuZGVyc2NvcmU9JGx0X2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZQorCisKKyAgICBpZiB0ZXN0ICJ4JHN5c19zeW1ib2xfdW5kZXJzY29yZSIgPSB4eWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIFNZTUJPTF9VTkRFUlNDT1JFIDEiID4+Y29uZmRlZnMuaAorCisgICAgZmkKK2ZpCisKKworRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRT0wCiBjYXNlICIkdGFyZ2V0IiBpbgotICAgICAqLWFwcGxlLWRhcndpbjEwKiB8ICotKi1mcmVlYnNkKiB8ICotKi1vcGVuYnNkKiB8ICotcGMtc29sYXJpcyopCisgICAgICphcm0qLWFwcGxlLWRhcndpbiopCisgICAgICAgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRT0xCisKKyRhc19lY2hvICIjZGVmaW5lIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgMSIgPj5jb25mZGVmcy5oCisKKyAgICAgOzsKKyAgICAgKi1hcHBsZS1kYXJ3aW4xWzEwXSogfCAqLSotZnJlZWJzZCogfCAqLSota2ZyZWVic2QqIHwgKi0qLW9wZW5ic2QqIHwgKi1wYy1zb2xhcmlzKikKIAogJGFzX2VjaG8gIiNkZWZpbmUgRkZJX01NQVBfRVhFQ19XUklUIDEiID4+Y29uZmRlZnMuaAogCiAgICAgIDs7CiBlc2FjCisgaWYgdGVzdCB4JEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgPSB4MTsgdGhlbgorICBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFX1RSVUU9CisgIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVfRkFMU0U9JyMnCitlbHNlCisgIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVfVFJVRT0nIycKKyAgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRV9GQUxTRT0KK2ZpCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAuZWhfZnJhbWUgc2VjdGlvbiBzaG91bGQgYmUgcmVhZC1vbmx5IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgLmVoX2ZyYW1lIHNlY3Rpb24gc2hvdWxkIGJlIHJlYWQtb25seS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsaWJmZmlfY3Zfcm9fZWhfZnJhbWUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorCisKK2lmIHRlc3QgeCRUQVJHRVQgPSB4WDg2XzY0OyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhc3NlbWJsZXIgc3VwcG9ydHMgdW53aW5kIHNlY3Rpb24gdHlwZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBhc3NlbWJsZXIgc3VwcG9ydHMgdW53aW5kIHNlY3Rpb24gdHlwZS4uLiAiID4mNjsgfQoraWYgJHtsaWJmZmlfY3ZfYXNfeDg2XzY0X3Vud2luZF9zZWN0aW9uX3R5cGUrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogCi0JbGliZmZpX2N2X3JvX2VoX2ZyYW1lPW5vCi0JZWNobyAnZXh0ZXJuIHZvaWQgZm9vICh2b2lkKTsgdm9pZCBiYXIgKHZvaWQpIHsgZm9vICgpOyBmb28gKCk7IH0nID4gY29uZnRlc3QuYwotCWlmICRDQyAkQ0ZMQUdTIC1TIC1mcGljIC1mZXhjZXB0aW9ucyAtbyBjb25mdGVzdC5zIGNvbmZ0ZXN0LmMgPiAvZGV2L251bGwgMj4mMTsgdGhlbgotCSAgICBpZiBncmVwICcuc2VjdGlvbi4qZWhfZnJhbWUuKiJhIicgY29uZnRlc3QucyA+IC9kZXYvbnVsbDsgdGhlbgotCQlsaWJmZmlfY3Zfcm9fZWhfZnJhbWU9eWVzCi0JICAgIGVsaWYgZ3JlcCAnLnNlY3Rpb24uKmVoX2ZyYW1lLiojYWxsb2MnIGNvbmZ0ZXN0LmMgXAotCQkgfCBncmVwIC12ICcjd3JpdGUnID4gL2Rldi9udWxsOyB0aGVuCi0JCWxpYmZmaV9jdl9yb19laF9mcmFtZT15ZXMKLQkgICAgZmkKKwlsaWJmZmlfY3ZfYXNfeDg2XzY0X3Vud2luZF9zZWN0aW9uX3R5cGU9eWVzCisJZWNobyAnLnNlY3Rpb24gLmVoX2ZyYW1lLCJhIixAdW53aW5kJyA+IGNvbmZ0ZXN0LnMKKwlpZiAkQ0MgJENGTEFHUyAtYyBjb25mdGVzdC5zIDI+JjEgfCBncmVwIC1pIHdhcm5pbmcgPiAvZGV2L251bGw7IHRoZW4KKwkgICAgbGliZmZpX2N2X2FzX3g4Nl82NF91bndpbmRfc2VjdGlvbl90eXBlPW5vCiAJZmkKLQlybSAtZiBjb25mdGVzdC4qCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGxpYmZmaV9jdl9hc194ODZfNjRfdW53aW5kX3NlY3Rpb25fdHlwZSIgPiY1CiskYXNfZWNobyAiJGxpYmZmaV9jdl9hc194ODZfNjRfdW53aW5kX3NlY3Rpb25fdHlwZSIgPiY2OyB9CisgICAgaWYgdGVzdCAieCRsaWJmZmlfY3ZfYXNfeDg2XzY0X3Vud2luZF9zZWN0aW9uX3R5cGUiID0geHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0FTX1g4Nl82NF9VTldJTkRfU0VDVElPTl9UWVBFIDEiID4+Y29uZmRlZnMuaAorCisgICAgZmkKK2ZpCisKK2lmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgLmVoX2ZyYW1lIHNlY3Rpb24gc2hvdWxkIGJlIHJlYWQtb25seSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIC5laF9mcmFtZSBzZWN0aW9uIHNob3VsZCBiZSByZWFkLW9ubHkuLi4gIiA+JjY7IH0KK2lmICR7bGliZmZpX2N2X3JvX2VoX2ZyYW1lKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICAJbGliZmZpX2N2X3JvX2VoX2ZyYW1lPW5vCisgIAllY2hvICdleHRlcm4gdm9pZCBmb28gKHZvaWQpOyB2b2lkIGJhciAodm9pZCkgeyBmb28gKCk7IGZvbyAoKTsgfScgPiBjb25mdGVzdC5jCisgIAlpZiAkQ0MgJENGTEFHUyAtUyAtZnBpYyAtZmV4Y2VwdGlvbnMgLW8gY29uZnRlc3QucyBjb25mdGVzdC5jID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgCSAgICBpZiBncmVwICcuc2VjdGlvbi4qZWhfZnJhbWUuKiJhIicgY29uZnRlc3QucyA+IC9kZXYvbnVsbDsgdGhlbgorICAJCWxpYmZmaV9jdl9yb19laF9mcmFtZT15ZXMKKyAgCSAgICBlbGlmIGdyZXAgJy5zZWN0aW9uLiplaF9mcmFtZS4qI2FsbG9jJyBjb25mdGVzdC5jIFwKKyAgCQkgfCBncmVwIC12ICcjd3JpdGUnID4gL2Rldi9udWxsOyB0aGVuCisgIAkJbGliZmZpX2N2X3JvX2VoX2ZyYW1lPXllcworICAJICAgIGZpCisgIAlmaQorICAJcm0gLWYgY29uZnRlc3QuKgogCiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsaWJmZmlfY3Zfcm9fZWhfZnJhbWUiID4mNQogJGFzX2VjaG8gIiRsaWJmZmlfY3Zfcm9fZWhfZnJhbWUiID4mNjsgfQotaWYgdGVzdCAieCRsaWJmZmlfY3Zfcm9fZWhfZnJhbWUiID0geHllczsgdGhlbgorICBpZiB0ZXN0ICJ4JGxpYmZmaV9jdl9yb19laF9mcmFtZSIgPSB4eWVzOyB0aGVuCiAKICRhc19lY2hvICIjZGVmaW5lIEhBVkVfUk9fRUhfRlJBTUUgMSIgPj5jb25mZGVmcy5oCiAKIAogJGFzX2VjaG8gIiNkZWZpbmUgRUhfRlJBTUVfRkxBR1MgXCJhXCIiID4+Y29uZmRlZnMuaAogCi1lbHNlCisgIGVsc2UKIAogJGFzX2VjaG8gIiNkZWZpbmUgRUhfRlJBTUVfRkxBR1MgXCJhd1wiIiA+PmNvbmZkZWZzLmgKIAotZmkKKyAgZmkKIAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eShcImhpZGRlblwiKSkpIiA+JjUKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eShcImhpZGRlblwiKSkpIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KFwiaGlkZGVuXCIpKSkuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2xpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGUrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogCi0JZWNobyAnaW50IF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKSBmb28gKHZvaWQpIHsgcmV0dXJuIDE7IH0nID4gY29uZnRlc3QuYwotCWxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGU9bm8KLQlpZiB7IGFjX3RyeT0nJHtDQy1jY30gLVdlcnJvciAtUyBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0LnMgMT4mNScKKyAgCWVjaG8gJ2ludCBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSkgZm9vICh2b2lkKSB7IHJldHVybiAxICA7IH0nID4gY29uZnRlc3QuYworICAJbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZT1ubworICAJaWYgeyBhY190cnk9JyR7Q0MtY2N9IC1XZXJyb3IgLVMgY29uZnRlc3QuYyAtbyBjb25mdGVzdC5zIDE+JjUnCiAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY190cnlcIiI7IH0gPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CiAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB9OyB0aGVuCi0JICAgIGlmIGdyZXAgJ1wuaGlkZGVuLipmb28nIGNvbmZ0ZXN0LnMgPi9kZXYvbnVsbDsgdGhlbgotCQlsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlPXllcwotCSAgICBmaQotCWZpCi0Jcm0gLWYgY29uZnRlc3QuKgorICAJICAgIGlmIGdyZXAgJ1wuaGlkZGVuLipmb28nIGNvbmZ0ZXN0LnMgPi9kZXYvbnVsbDsgdGhlbgorICAJCWxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGU9eWVzCisgIAkgICAgZmkKKyAgCWZpCisgIAlybSAtZiBjb25mdGVzdC4qCiAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGUiID4mNQogJGFzX2VjaG8gIiRsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlIiA+JjY7IH0KLWlmIHRlc3QgJGxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGUgPSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCAkbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZSA9IHllczsgdGhlbgogCiAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0hJRERFTl9WSVNJQklMSVRZX0FUVFJJQlVURSAxIiA+PmNvbmZkZWZzLmgKIAorICBmaQogZmkKIAogCkBAIC0xMjM2NSw2ICsxNDU5MiwxNCBAQAogICBmaQogZmkKIAorIGlmIHRlc3QgIiRlbmFibGVfZGVidWciID0gInllcyI7IHRoZW4KKyAgRkZJX0RFQlVHX1RSVUU9CisgIEZGSV9ERUJVR19GQUxTRT0nIycKK2Vsc2UKKyAgRkZJX0RFQlVHX1RSVUU9JyMnCisgIEZGSV9ERUJVR19GQUxTRT0KK2ZpCisKIAogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXN0cnVjdHMgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfc3RydWN0cytzZXR9IiA9IHNldDsgdGhlbiA6CkBAIC0xMjM5NiwyMSArMTQ2MzEsMjUgQEAKIGZpCiAKIAotaWYgdGVzdCAtbiAiJHdpdGhfY3Jvc3NfaG9zdCIgJiYKLSAgIHRlc3QgeCIkd2l0aF9jcm9zc19ob3N0IiAhPSB4Im5vIjsgdGhlbgotICB0b29sZXhlY2Rpcj0nJChleGVjX3ByZWZpeCkvJCh0YXJnZXRfYWxpYXMpJwotICB0b29sZXhlY2xpYmRpcj0nJCh0b29sZXhlY2RpcikvbGliJwotZWxzZQotICB0b29sZXhlY2Rpcj0nJChsaWJkaXIpL2djYy1saWIvJCh0YXJnZXRfYWxpYXMpJwotICB0b29sZXhlY2xpYmRpcj0nJChsaWJkaXIpJworIyBUaGVzZSB2YXJpYWJsZXMgYXJlIG9ubHkgZXZlciB1c2VkIHdoZW4gd2UgY3Jvc3MtYnVpbGQgdG8gWDg2X1dJTjMyLgorIyBBbmQgd2Ugb25seSBzdXBwb3J0IHRoaXMgd2l0aCBHQ0MsIHNvLi4uCitpZiB0ZXN0IHgiJEdDQyIgIT0geCJubyI7IHRoZW4KKyAgaWYgdGVzdCAtbiAiJHdpdGhfY3Jvc3NfaG9zdCIgJiYKKyAgICAgdGVzdCB4IiR3aXRoX2Nyb3NzX2hvc3QiICE9IHgibm8iOyB0aGVuCisgICAgdG9vbGV4ZWNkaXI9JyQoZXhlY19wcmVmaXgpLyQodGFyZ2V0X2FsaWFzKScKKyAgICB0b29sZXhlY2xpYmRpcj0nJCh0b29sZXhlY2RpcikvbGliJworICBlbHNlCisgICAgdG9vbGV4ZWNkaXI9JyQobGliZGlyKS9nY2MtbGliLyQodGFyZ2V0X2FsaWFzKScKKyAgICB0b29sZXhlY2xpYmRpcj0nJChsaWJkaXIpJworICBmaQorICBtdWx0aV9vc19kaXJlY3Rvcnk9YCRDQyAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5YAorICBjYXNlICRtdWx0aV9vc19kaXJlY3RvcnkgaW4KKyAgICAuKSA7OyAjIEF2b2lkIHRyYWlsaW5nIC8uCisgICAgKikgdG9vbGV4ZWNsaWJkaXI9JHRvb2xleGVjbGliZGlyLyRtdWx0aV9vc19kaXJlY3RvcnkgOzsKKyAgZXNhYworCisKIGZpCi1tdWx0aV9vc19kaXJlY3Rvcnk9YCRDQyAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5YAotY2FzZSAkbXVsdGlfb3NfZGlyZWN0b3J5IGluCi0gIC4pIDs7ICMgQXZvaWQgdHJhaWxpbmcgLy4KLSAgKikgdG9vbGV4ZWNsaWJkaXI9JHRvb2xleGVjbGliZGlyLyRtdWx0aV9vc19kaXJlY3RvcnkgOzsKLWVzYWMKLQotCiAKIGlmIHRlc3QgIiR7bXVsdGlsaWJ9IiA9ICJ5ZXMiOyB0aGVuCiAgIG11bHRpbGliX2FyZz0iLS1lbmFibGUtbXVsdGlsaWIiCkBAIC0xMjQ5OSwxMCArMTQ3MzgsMjEgQEAKICAgICAgOmVuZCcgPj5jb25mY2FjaGUKIGlmIGRpZmYgIiRjYWNoZV9maWxlIiBjb25mY2FjaGUgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDo7IGVsc2UKICAgaWYgdGVzdCAtdyAiJGNhY2hlX2ZpbGUiOyB0aGVuCi0gICAgdGVzdCAieCRjYWNoZV9maWxlIiAhPSAieC9kZXYvbnVsbCIgJiYKKyAgICBpZiB0ZXN0ICJ4JGNhY2hlX2ZpbGUiICE9ICJ4L2Rldi9udWxsIjsgdGhlbgogICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiB1cGRhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiB1cGRhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30KLSAgICBjYXQgY29uZmNhY2hlID4kY2FjaGVfZmlsZQorICAgICAgaWYgdGVzdCAhIC1mICIkY2FjaGVfZmlsZSIgfHwgdGVzdCAtaCAiJGNhY2hlX2ZpbGUiOyB0aGVuCisJY2F0IGNvbmZjYWNoZSA+IiRjYWNoZV9maWxlIgorICAgICAgZWxzZQorICAgICAgICBjYXNlICRjYWNoZV9maWxlIGluICMoCisgICAgICAgICovKiB8ID86KikKKwkgIG12IC1mIGNvbmZjYWNoZSAiJGNhY2hlX2ZpbGUiJCQgJiYKKwkgIG12IC1mICIkY2FjaGVfZmlsZSIkJCAiJGNhY2hlX2ZpbGUiIDs7ICMoCisgICAgICAgICopCisJICBtdiAtZiBjb25mY2FjaGUgIiRjYWNoZV9maWxlIiA7OworCWVzYWMKKyAgICAgIGZpCisgICAgZmkKICAgZWxzZQogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogbm90IHVwZGF0aW5nIHVud3JpdGFibGUgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQogJGFzX2VjaG8gIiRhc19tZTogbm90IHVwZGF0aW5nIHVud3JpdGFibGUgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9CkBAIC0xMjUxOCw2ICsxNDc2OCw3IEBACiAKIGFjX2xpYm9ianM9CiBhY19sdGxpYm9ianM9CitVPQogZm9yIGFjX2kgaW4gOiAkTElCT0JKUzsgZG8gdGVzdCAieCRhY19pIiA9IHg6ICYmIGNvbnRpbnVlCiAgICMgMS4gUmVtb3ZlIHRoZSBleHRlbnNpb24sIGFuZCAkVSBpZiBhbHJlYWR5IGluc3RhbGxlZC4KICAgYWNfc2NyaXB0PSdzL1wkVVwuLy4vO3MvXC5vJC8vO3MvXC5vYmokLy8nCkBAIC0xMjU0MSwxMzIgKzE0NzkyLDE0NCBAQAogZmkKIAogaWYgdGVzdCAteiAiJHtBTURFUF9UUlVFfSIgJiYgdGVzdCAteiAiJHtBTURFUF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIkFNREVQXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIkFNREVQXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHthbV9fZmFzdGRlcENDX1RSVUV9IiAmJiB0ZXN0IC16ICIke2FtX19mYXN0ZGVwQ0NfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJhbV9fZmFzdGRlcENDXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcImFtX19mYXN0ZGVwQ0NcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke2FtX19mYXN0ZGVwQ0NBU19UUlVFfSIgJiYgdGVzdCAteiAiJHthbV9fZmFzdGRlcENDQVNfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJhbV9fZmFzdGRlcENDQVNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiYW1fX2Zhc3RkZXBDQ0FTXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtNQUlOVEFJTkVSX01PREVfVFJVRX0iICYmIHRlc3QgLXogIiR7TUFJTlRBSU5FUl9NT0RFX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiTUFJTlRBSU5FUl9NT0RFXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIk1BSU5UQUlORVJfTU9ERVwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7VEVTVFNVQkRJUl9UUlVFfSIgJiYgdGVzdCAteiAiJHtURVNUU1VCRElSX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiVEVTVFNVQkRJUlwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJURVNUU1VCRElSXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtNSVBTX1RSVUV9IiAmJiB0ZXN0IC16ICIke01JUFNfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJNSVBTXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIk1JUFNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1NQQVJDX1RSVUV9IiAmJiB0ZXN0IC16ICIke1NQQVJDX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiU1BBUkNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiU1BBUkNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1g4Nl9UUlVFfSIgJiYgdGVzdCAteiAiJHtYODZfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJYODZcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiWDg2XCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtYODZfRlJFRUJTRF9UUlVFfSIgJiYgdGVzdCAteiAiJHtYODZfRlJFRUJTRF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlg4Nl9GUkVFQlNEXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlg4Nl9GUkVFQlNEXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtYODZfV0lOMzJfVFJVRX0iICYmIHRlc3QgLXogIiR7WDg2X1dJTjMyX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiWDg2X1dJTjMyXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlg4Nl9XSU4zMlwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7WDg2X1dJTjY0X1RSVUV9IiAmJiB0ZXN0IC16ICIke1g4Nl9XSU42NF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlg4Nl9XSU42NFwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJYODZfV0lONjRcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1g4Nl9EQVJXSU5fVFJVRX0iICYmIHRlc3QgLXogIiR7WDg2X0RBUldJTl9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlg4Nl9EQVJXSU5cIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiWDg2X0RBUldJTlwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7QUxQSEFfVFJVRX0iICYmIHRlc3QgLXogIiR7QUxQSEFfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJBTFBIQVwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJBTFBIQVwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7SUE2NF9UUlVFfSIgJiYgdGVzdCAteiAiJHtJQTY0X0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiSUE2NFwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJJQTY0XCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtNMzJSX1RSVUV9IiAmJiB0ZXN0IC16ICIke00zMlJfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJNMzJSXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIk0zMlJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke002OEtfVFJVRX0iICYmIHRlc3QgLXogIiR7TTY4S19GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIk02OEtcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiTTY4S1wiIHdhcyBuZXZlciBkZWZpbmVkLgorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQorZmkKK2lmIHRlc3QgLXogIiR7TU9YSUVfVFJVRX0iICYmIHRlc3QgLXogIiR7TU9YSUVfRkFMU0V9IjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJNT1hJRVwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7UE9XRVJQQ19UUlVFfSIgJiYgdGVzdCAteiAiJHtQT1dFUlBDX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiUE9XRVJQQ1wiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJQT1dFUlBDXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtQT1dFUlBDX0FJWF9UUlVFfSIgJiYgdGVzdCAteiAiJHtQT1dFUlBDX0FJWF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlBPV0VSUENfQUlYXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlBPV0VSUENfQUlYXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtQT1dFUlBDX0RBUldJTl9UUlVFfSIgJiYgdGVzdCAteiAiJHtQT1dFUlBDX0RBUldJTl9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlBPV0VSUENfREFSV0lOXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlBPV0VSUENfREFSV0lOXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtQT1dFUlBDX0ZSRUVCU0RfVFJVRX0iICYmIHRlc3QgLXogIiR7UE9XRVJQQ19GUkVFQlNEX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiUE9XRVJQQ19GUkVFQlNEXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlBPV0VSUENfRlJFRUJTRFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7QVJNX1RSVUV9IiAmJiB0ZXN0IC16ICIke0FSTV9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIkFSTVwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJBUk1cIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke0FWUjMyX1RSVUV9IiAmJiB0ZXN0IC16ICIke0FWUjMyX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiQVZSMzJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiQVZSMzJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke0xJQkZGSV9DUklTX1RSVUV9IiAmJiB0ZXN0IC16ICIke0xJQkZGSV9DUklTX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiTElCRkZJX0NSSVNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiTElCRkZJX0NSSVNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke0ZSVl9UUlVFfSIgJiYgdGVzdCAteiAiJHtGUlZfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJGUlZcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiRlJWXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtTMzkwX1RSVUV9IiAmJiB0ZXN0IC16ICIke1MzOTBfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJTMzkwXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlMzOTBcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1g4Nl82NF9UUlVFfSIgJiYgdGVzdCAteiAiJHtYODZfNjRfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJYODZfNjRcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiWDg2XzY0XCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtTSF9UUlVFfSIgJiYgdGVzdCAteiAiJHtTSF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlNIXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlNIXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtTSDY0X1RSVUV9IiAmJiB0ZXN0IC16ICIke1NINjRfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJTSDY0XCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlNINjRcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1BBX0xJTlVYX1RSVUV9IiAmJiB0ZXN0IC16ICIke1BBX0xJTlVYX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiUEFfTElOVVhcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiUEFfTElOVVhcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1BBX0hQVVhfVFJVRX0iICYmIHRlc3QgLXogIiR7UEFfSFBVWF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlBBX0hQVVhcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiUEFfSFBVWFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7UEE2NF9IUFVYX1RSVUV9IiAmJiB0ZXN0IC16ICIke1BBNjRfSFBVWF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlBBNjRfSFBVWFwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJQQTY0X0hQVVhcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiAKK2lmIHRlc3QgLXogIiR7RkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRV9UUlVFfSIgJiYgdGVzdCAteiAiJHtGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFX0ZBTFNFfSI7IHRoZW4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRVwiIHdhcyBuZXZlciBkZWZpbmVkLgorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQorZmkKK2lmIHRlc3QgLXogIiR7RkZJX0RFQlVHX1RSVUV9IiAmJiB0ZXN0IC16ICIke0ZGSV9ERUJVR19GQUxTRX0iOyB0aGVuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIkZGSV9ERUJVR1wiIHdhcyBuZXZlciBkZWZpbmVkLgorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQorZmkKIAotOiAke0NPTkZJR19TVEFUVVM9Li9jb25maWcuc3RhdHVzfQorOiAiJHtDT05GSUdfU1RBVFVTPS4vY29uZmlnLnN0YXR1c30iCiBhY193cml0ZV9mYWlsPTAKIGFjX2NsZWFuX2ZpbGVzX3NhdmU9JGFjX2NsZWFuX2ZpbGVzCiBhY19jbGVhbl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVzICRDT05GSUdfU1RBVFVTIgpAQCAtMTI3NjcsNiArMTUwMzAsNyBAQAogSUZTPSIgIiIJJGFzX25sIgogCiAjIEZpbmQgd2hvIHdlIGFyZS4gIExvb2sgaW4gdGhlIHBhdGggaWYgd2UgY29udGFpbiBubyBkaXJlY3Rvcnkgc2VwYXJhdG9yLgorYXNfbXlzZWxmPQogY2FzZSAkMCBpbiAjKCgKICAgKltcXC9dKiApIGFzX215c2VsZj0kMCA7OwogICAqKSBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCkBAIC0xMjgxMiwxOSArMTUwNzYsMTkgQEAKICh1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBDRFBBVEgKIAogCi0jIGFzX2ZuX2Vycm9yIEVSUk9SIFtMSU5FTk8gTE9HX0ZEXQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgYXNfZm5fZXJyb3IgU1RBVFVTIEVSUk9SIFtMSU5FTk8gTE9HX0ZEXQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIE91dHB1dCAiYGJhc2VuYW1lICQwYDogZXJyb3I6IEVSUk9SIiB0byBzdGRlcnIuIElmIExJTkVOTyBhbmQgTE9HX0ZEIGFyZQogIyBwcm92aWRlZCwgYWxzbyBvdXRwdXQgdGhlIGVycm9yIHRvIExPR19GRCwgcmVmZXJlbmNpbmcgTElORU5PLiBUaGVuIGV4aXQgdGhlCi0jIHNjcmlwdCB3aXRoIHN0YXR1cyAkPywgdXNpbmcgMSBpZiB0aGF0IHdhcyAwLgorIyBzY3JpcHQgd2l0aCBTVEFUVVMsIHVzaW5nIDEgaWYgdGhhdCB3YXMgMC4KIGFzX2ZuX2Vycm9yICgpCiB7Ci0gIGFzX3N0YXR1cz0kPzsgdGVzdCAkYXNfc3RhdHVzIC1lcSAwICYmIGFzX3N0YXR1cz0xCi0gIGlmIHRlc3QgIiQzIjsgdGhlbgotICAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDIifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogJDEiID4mJDMKKyAgYXNfc3RhdHVzPSQxOyB0ZXN0ICRhc19zdGF0dXMgLWVxIDAgJiYgYXNfc3RhdHVzPTEKKyAgaWYgdGVzdCAiJDQiOyB0aGVuCisgICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMyJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiAkMiIgPiYkNAogICBmaQotICAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogJDEiID4mMgorICAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogJDIiID4mMgogICBhc19mbl9leGl0ICRhc19zdGF0dXMKIH0gIyBhc19mbl9lcnJvcgogCkBAIC0xMzAyMCw3ICsxNTI4NCw3IEBACiAgICAgICB0ZXN0IC1kICIkYXNfZGlyIiAmJiBicmVhawogICAgIGRvbmUKICAgICB0ZXN0IC16ICIkYXNfZGlycyIgfHwgZXZhbCAibWtkaXIgJGFzX2RpcnMiCi0gIH0gfHwgdGVzdCAtZCAiJGFzX2RpciIgfHwgYXNfZm5fZXJyb3IgImNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5ICRhc19kaXIiCisgIH0gfHwgdGVzdCAtZCAiJGFzX2RpciIgfHwgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5ICRhc19kaXIiCiAKIAogfSAjIGFzX2ZuX21rZGlyX3AKQEAgLTEzMDczLDggKzE1MzM3LDggQEAKICMgcmVwb3J0IGFjdHVhbCBpbnB1dCB2YWx1ZXMgb2YgQ09ORklHX0ZJTEVTIGV0Yy4gaW5zdGVhZCBvZiB0aGVpcgogIyB2YWx1ZXMgYWZ0ZXIgb3B0aW9ucyBoYW5kbGluZy4KIGFjX2xvZz0iCi1UaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IGxpYmZmaSAkYXNfbWUgMy4wLjEwcmMwLCB3aGljaCB3YXMKLWdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42NS4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcworVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSBsaWJmZmkgJGFzX21lIDMuMC4xMSwgd2hpY2ggd2FzCitnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjguICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICBDT05GSUdfRklMRVMgICAgPSAkQ09ORklHX0ZJTEVTCiAgIENPTkZJR19IRUFERVJTICA9ICRDT05GSUdfSEVBREVSUwpAQCAtMTMxMzcsMTcgKzE1NDAxLDE3IEBACiBDb25maWd1cmF0aW9uIGNvbW1hbmRzOgogJGNvbmZpZ19jb21tYW5kcwogCi1SZXBvcnQgYnVncyB0byA8aHR0cDovL2djYy5nbnUub3JnL2J1Z3MuaHRtbD4uIgorUmVwb3J0IGJ1Z3MgdG8gPGh0dHA6Ly9naXRodWIuY29tL2F0Z3JlZW4vbGliZmZpL2lzc3Vlcz4uIgogCiBfQUNFT0YKIGNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQogYWNfY3NfY29uZmlnPSJgJGFzX2VjaG8gIiRhY19jb25maWd1cmVfYXJncyIgfCBzZWQgJ3MvXiAvLzsgcy9bXFwiIlxgXCRdL1xcXFwmL2cnYCIKIGFjX2NzX3ZlcnNpb249IlxcCi1saWJmZmkgY29uZmlnLnN0YXR1cyAzLjAuMTByYzAKLWNvbmZpZ3VyZWQgYnkgJDAsIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42NSwKK2xpYmZmaSBjb25maWcuc3RhdHVzIDMuMC4xMQorY29uZmlndXJlZCBieSAkMCwgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4LAogICB3aXRoIG9wdGlvbnMgXFwiXCRhY19jc19jb25maWdcXCIKIAotQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogVGhpcyBjb25maWcuc3RhdHVzIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuIgogCkBAIC0xMzE2NSwxMSArMTU0MjksMTYgQEAKIHdoaWxlIHRlc3QgJCMgIT0gMAogZG8KICAgY2FzZSAkMSBpbgotICAtLSo9KikKKyAgLS0qPT8qKQogICAgIGFjX29wdGlvbj1gZXhwciAiWCQxIiA6ICdYXChbXj1dKlwpPSdgCiAgICAgYWNfb3B0YXJnPWBleHByICJYJDEiIDogJ1hbXj1dKj1cKC4qXCknYAogICAgIGFjX3NoaWZ0PToKICAgICA7OworICAtLSo9KQorICAgIGFjX29wdGlvbj1gZXhwciAiWCQxIiA6ICdYXChbXj1dKlwpPSdgCisgICAgYWNfb3B0YXJnPQorICAgIGFjX3NoaWZ0PToKKyAgICA7OwogICAqKQogICAgIGFjX29wdGlvbj0kMQogICAgIGFjX29wdGFyZz0kMgpAQCAtMTMxOTEsNiArMTU0NjAsNyBAQAogICAgICRhY19zaGlmdAogICAgIGNhc2UgJGFjX29wdGFyZyBpbgogICAgICpcJyopIGFjX29wdGFyZz1gJGFzX2VjaG8gIiRhY19vcHRhcmciIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7CisgICAgJycpIGFzX2ZuX2Vycm9yICQ/ICJtaXNzaW5nIGZpbGUgYXJndW1lbnQiIDs7CiAgICAgZXNhYwogICAgIGFzX2ZuX2FwcGVuZCBDT05GSUdfRklMRVMgIiAnJGFjX29wdGFyZyciCiAgICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZTs7CkBAIC0xMzIwMyw3ICsxNTQ3Myw3IEBACiAgICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZTs7CiAgIC0taGUgfCAtLWgpCiAgICAgIyBDb25mbGljdCBiZXR3ZWVuIC0taGVscCBhbmQgLS1oZWFkZXIKLSAgICBhc19mbl9lcnJvciAiYW1iaWd1b3VzIG9wdGlvbjogXGAkMScKKyAgICBhc19mbl9lcnJvciAkPyAiYW1iaWd1b3VzIG9wdGlvbjogXGAkMScKIFRyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIjs7CiAgIC0taGVscCB8IC0taGVsIHwgLWggKQogICAgICRhc19lY2hvICIkYWNfY3NfdXNhZ2UiOyBleGl0IDs7CkBAIC0xMzIxMiw3ICsxNTQ4Miw3IEBACiAgICAgYWNfY3Nfc2lsZW50PTogOzsKIAogICAjIFRoaXMgaXMgYW4gZXJyb3IuCi0gIC0qKSBhc19mbl9lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbjogXGAkMScKKyAgLSopIGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0aW9uOiBcYCQxJwogVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iIDs7CiAKICAgKikgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ190YXJnZXRzICIgJDEiCkBAIC0xMzI1Niw2ICsxNTUyNiwxNCBAQAogIwogIyBJTklULUNPTU1BTkRTCiAjCitheF9lbmFibGVfYnVpbGRkaXJfc3JjZGlyPSIkc3JjZGlyIiAgICAgICAgICAgICAgICAgICAgIyAkc3JjZGlyCitheF9lbmFibGVfYnVpbGRkaXJfaG9zdD0iJEhPU1QiICAgICAgICAgICAgICAgICAgICAgICAgIyAkSE9TVCAvICRob3N0CitheF9lbmFibGVfYnVpbGRkaXJfdmVyc2lvbj0iJFZFUlNJT04iICAgICAgICAgICAgICAgICAgIyAkVkVSU0lPTgorYXhfZW5hYmxlX2J1aWxkZGlyX3BhY2thZ2U9IiRQQUNLQUdFIiAgICAgICAgICAgICAgICAgICMgJFBBQ0tBR0UKK2F4X2VuYWJsZV9idWlsZGRpcl9hdXhkaXI9IiRheF9lbmFibGVfYnVpbGRkaXJfYXV4ZGlyIiAjICRBVVgKK2F4X2VuYWJsZV9idWlsZGRpcl9zZWQ9IiRheF9lbmFibGVfYnVpbGRkaXJfc2VkIiAgICAgICAjICRTRUQKK2F4X2VuYWJsZV9idWlsZGRpcj0iJGF4X2VuYWJsZV9idWlsZGRpciIgICAgICAgICAgICAgICAjICRTVUIKKwogQU1ERVBfVFJVRT0iJEFNREVQX1RSVUUiIGFjX2F1eF9kaXI9IiRhY19hdXhfZGlyIgogCiAKQEAgLTEzMjY2LDEzMSArMTU1NDQsMTU0IEBACiBzZWRfcXVvdGVfc3Vic3Q9JyRzZWRfcXVvdGVfc3Vic3QnCiBkb3VibGVfcXVvdGVfc3Vic3Q9JyRkb3VibGVfcXVvdGVfc3Vic3QnCiBkZWxheV92YXJpYWJsZV9zdWJzdD0nJGRlbGF5X3ZhcmlhYmxlX3N1YnN0JwotbWFjcm9fdmVyc2lvbj0nYCRFQ0hPICJYJG1hY3JvX3ZlcnNpb24iIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW1hY3JvX3JldmlzaW9uPSdgJEVDSE8gIlgkbWFjcm9fcmV2aXNpb24iIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWVuYWJsZV9zaGFyZWQ9J2AkRUNITyAiWCRlbmFibGVfc2hhcmVkIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1lbmFibGVfc3RhdGljPSdgJEVDSE8gIlgkZW5hYmxlX3N0YXRpYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotcGljX21vZGU9J2AkRUNITyAiWCRwaWNfbW9kZSIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZW5hYmxlX2Zhc3RfaW5zdGFsbD0nYCRFQ0hPICJYJGVuYWJsZV9mYXN0X2luc3RhbGwiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhvc3RfYWxpYXM9J2AkRUNITyAiWCRob3N0X2FsaWFzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1ob3N0PSdgJEVDSE8gIlgkaG9zdCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaG9zdF9vcz0nYCRFQ0hPICJYJGhvc3Rfb3MiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWJ1aWxkX2FsaWFzPSdgJEVDSE8gIlgkYnVpbGRfYWxpYXMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWJ1aWxkPSdgJEVDSE8gIlgkYnVpbGQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWJ1aWxkX29zPSdgJEVDSE8gIlgkYnVpbGRfb3MiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLVNFRD0nYCRFQ0hPICJYJFNFRCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotWHNlZD0nYCRFQ0hPICJYJFhzZWQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUdSRVA9J2AkRUNITyAiWCRHUkVQIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1FR1JFUD0nYCRFQ0hPICJYJEVHUkVQIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1GR1JFUD0nYCRFQ0hPICJYJEZHUkVQIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1MRD0nYCRFQ0hPICJYJExEIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1OTT0nYCRFQ0hPICJYJE5NIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1MTl9TPSdgJEVDSE8gIlgkTE5fUyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbWF4X2NtZF9sZW49J2AkRUNITyAiWCRtYXhfY21kX2xlbiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotYWNfb2JqZXh0PSdgJEVDSE8gIlgkYWNfb2JqZXh0IiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1leGVleHQ9J2AkRUNITyAiWCRleGVleHQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X3Vuc2V0PSdgJEVDSE8gIlgkbHRfdW5zZXQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X1NQMk5MPSdgJEVDSE8gIlgkbHRfU1AyTkwiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X05MMlNQPSdgJEVDSE8gIlgkbHRfTkwyU1AiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXJlbG9hZF9mbGFnPSdgJEVDSE8gIlgkcmVsb2FkX2ZsYWciIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXJlbG9hZF9jbWRzPSdgJEVDSE8gIlgkcmVsb2FkX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLU9CSkRVTVA9J2AkRUNITyAiWCRPQkpEVU1QIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1kZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICJYJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1maWxlX21hZ2ljX2NtZD0nYCRFQ0hPICJYJGZpbGVfbWFnaWNfY21kIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1BUj0nYCRFQ0hPICJYJEFSIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1BUl9GTEFHUz0nYCRFQ0hPICJYJEFSX0ZMQUdTIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1TVFJJUD0nYCRFQ0hPICJYJFNUUklQIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1SQU5MSUI9J2AkRUNITyAiWCRSQU5MSUIiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIlgkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW9sZF9wb3N0dW5pbnN0YWxsX2NtZHM9J2AkRUNITyAiWCRvbGRfcG9zdHVuaW5zdGFsbF9jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1vbGRfYXJjaGl2ZV9jbWRzPSdgJEVDSE8gIlgkb2xkX2FyY2hpdmVfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQ0M9J2AkRUNITyAiWCRDQyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQ0ZMQUdTPSdgJEVDSE8gIlgkQ0ZMQUdTIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1jb21waWxlcj0nYCRFQ0hPICJYJGNvbXBpbGVyIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1HQ0M9J2AkRUNITyAiWCRHQ0MiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiWCRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICJYJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICJYJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIlgkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotb2JqZGlyPSdgJEVDSE8gIlgkb2JqZGlyIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1TSEVMTD0nYCRFQ0hPICJYJFNIRUxMIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1FQ0hPPSdgJEVDSE8gIlgkRUNITyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotTUFHSUNfQ01EPSdgJEVDSE8gIlgkTUFHSUNfQ01EIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICJYJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIlgkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiWCRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiWCRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiWCRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbmVlZF9sb2Nrcz0nYCRFQ0hPICJYJG5lZWRfbG9ja3MiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLURTWU1VVElMPSdgJEVDSE8gIlgkRFNZTVVUSUwiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLU5NRURJVD0nYCRFQ0hPICJYJE5NRURJVCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotTElQTz0nYCRFQ0hPICJYJExJUE8iIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLU9UT09MPSdgJEVDSE8gIlgkT1RPT0wiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLU9UT09MNjQ9J2AkRUNITyAiWCRPVE9PTDY0IiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1saWJleHQ9J2AkRUNITyAiWCRsaWJleHQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXNocmV4dF9jbWRzPSdgJEVDSE8gIlgkc2hyZXh0X2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWV4dHJhY3RfZXhwc3ltc19jbWRzPSdgJEVDSE8gIlgkZXh0cmFjdF9leHBzeW1zX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWFyY2hpdmVfY21kc19uZWVkX2xjPSdgJEVDSE8gIlgkYXJjaGl2ZV9jbWRzX25lZWRfbGMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9J2AkRUNITyAiWCRlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1leHBvcnRfZHluYW1pY19mbGFnX3NwZWM9J2AkRUNITyAiWCRleHBvcnRfZHluYW1pY19mbGFnX3NwZWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSdgJEVDSE8gIlgkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWNvbXBpbGVyX25lZWRzX29iamVjdD0nYCRFQ0hPICJYJGNvbXBpbGVyX25lZWRzX29iamVjdCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0nYCRFQ0hPICJYJG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzPSdgJEVDSE8gIlgkb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWFyY2hpdmVfY21kcz0nYCRFQ0hPICJYJGFyY2hpdmVfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotYXJjaGl2ZV9leHBzeW1fY21kcz0nYCRFQ0hPICJYJGFyY2hpdmVfZXhwc3ltX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW1vZHVsZV9jbWRzPSdgJEVDSE8gIlgkbW9kdWxlX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW1vZHVsZV9leHBzeW1fY21kcz0nYCRFQ0hPICJYJG1vZHVsZV9leHBzeW1fY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotd2l0aF9nbnVfbGQ9J2AkRUNITyAiWCR3aXRoX2dudV9sZCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotYWxsb3dfdW5kZWZpbmVkX2ZsYWc9J2AkRUNITyAiWCRhbGxvd191bmRlZmluZWRfZmxhZyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbm9fdW5kZWZpbmVkX2ZsYWc9J2AkRUNITyAiWCRub191bmRlZmluZWRfZmxhZyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nYCRFQ0hPICJYJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9J2AkRUNITyAiWCRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSdgJEVDSE8gIlgkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaGFyZGNvZGVfZGlyZWN0PSdgJEVDSE8gIlgkaGFyZGNvZGVfZGlyZWN0IiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1oYXJkY29kZV9kaXJlY3RfYWJzb2x1dGU9J2AkRUNITyAiWCRoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhhcmRjb2RlX21pbnVzX0w9J2AkRUNITyAiWCRoYXJkY29kZV9taW51c19MIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1oYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIlgkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIlgkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1pbmhlcml0X3JwYXRoPSdgJEVDSE8gIlgkaW5oZXJpdF9ycGF0aCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICJYJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiWCRmaXhfc3JjZmlsZV9wYXRoIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1hbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiWCRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiWCRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1leGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiWCRleGNsdWRlX2V4cHN5bXMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICJYJGluY2x1ZGVfZXhwc3ltcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotcHJlbGlua19jbWRzPSdgJEVDSE8gIlgkcHJlbGlua19jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICJYJGZpbGVfbGlzdF9zcGVjIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi12YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICJYJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1uZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiWCRuZWVkX2xpYl9wcmVmaXgiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW5lZWRfdmVyc2lvbj0nYCRFQ0hPICJYJG5lZWRfdmVyc2lvbiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotdmVyc2lvbl90eXBlPSdgJEVDSE8gIlgkdmVyc2lvbl90eXBlIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1ydW5wYXRoX3Zhcj0nYCRFQ0hPICJYJHJ1bnBhdGhfdmFyIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIlgkc2hsaWJwYXRoX3ZhciIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPSdgJEVDSE8gIlgkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1saWJuYW1lX3NwZWM9J2AkRUNITyAiWCRsaWJuYW1lX3NwZWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWxpYnJhcnlfbmFtZXNfc3BlYz0nYCRFQ0hPICJYJGxpYnJhcnlfbmFtZXNfc3BlYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotc29uYW1lX3NwZWM9J2AkRUNITyAiWCRzb25hbWVfc3BlYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICJYJHBvc3RpbnN0YWxsX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXBvc3R1bmluc3RhbGxfY21kcz0nYCRFQ0hPICJYJHBvc3R1bmluc3RhbGxfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZmluaXNoX2NtZHM9J2AkRUNITyAiWCRmaW5pc2hfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZmluaXNoX2V2YWw9J2AkRUNITyAiWCRmaW5pc2hfZXZhbCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaGFyZGNvZGVfaW50b19saWJzPSdgJEVDSE8gIlgkaGFyZGNvZGVfaW50b19saWJzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1zeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9J2AkRUNITyAiWCRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSdgJEVDSE8gIlgkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhhcmRjb2RlX2FjdGlvbj0nYCRFQ0hPICJYJGhhcmRjb2RlX2FjdGlvbiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZW5hYmxlX2Rsb3Blbj0nYCRFQ0hPICJYJGVuYWJsZV9kbG9wZW4iIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWVuYWJsZV9kbG9wZW5fc2VsZj0nYCRFQ0hPICJYJGVuYWJsZV9kbG9wZW5fc2VsZiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYz0nYCRFQ0hPICJYJGVuYWJsZV9kbG9wZW5fc2VsZl9zdGF0aWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW9sZF9zdHJpcGxpYj0nYCRFQ0hPICJYJG9sZF9zdHJpcGxpYiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotc3RyaXBsaWI9J2AkRUNITyAiWCRzdHJpcGxpYiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbWFjcm9fdmVyc2lvbj0nYCRFQ0hPICIkbWFjcm9fdmVyc2lvbiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCittYWNyb19yZXZpc2lvbj0nYCRFQ0hPICIkbWFjcm9fcmV2aXNpb24iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZW5hYmxlX3NoYXJlZD0nYCRFQ0hPICIkZW5hYmxlX3NoYXJlZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitlbmFibGVfc3RhdGljPSdgJEVDSE8gIiRlbmFibGVfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3BpY19tb2RlPSdgJEVDSE8gIiRwaWNfbW9kZSIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitlbmFibGVfZmFzdF9pbnN0YWxsPSdgJEVDSE8gIiRlbmFibGVfZmFzdF9pbnN0YWxsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK1NIRUxMPSdgJEVDSE8gIiRTSEVMTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitFQ0hPPSdgJEVDSE8gIiRFQ0hPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK1BBVEhfU0VQQVJBVE9SPSdgJEVDSE8gIiRQQVRIX1NFUEFSQVRPUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitob3N0X2FsaWFzPSdgJEVDSE8gIiRob3N0X2FsaWFzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2hvc3Q9J2AkRUNITyAiJGhvc3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaG9zdF9vcz0nYCRFQ0hPICIkaG9zdF9vcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitidWlsZF9hbGlhcz0nYCRFQ0hPICIkYnVpbGRfYWxpYXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworYnVpbGQ9J2AkRUNITyAiJGJ1aWxkIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2J1aWxkX29zPSdgJEVDSE8gIiRidWlsZF9vcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitTRUQ9J2AkRUNITyAiJFNFRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitYc2VkPSdgJEVDSE8gIiRYc2VkIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0dSRVA9J2AkRUNITyAiJEdSRVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworRUdSRVA9J2AkRUNITyAiJEVHUkVQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0ZHUkVQPSdgJEVDSE8gIiRGR1JFUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitMRD0nYCRFQ0hPICIkTEQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworTk09J2AkRUNITyAiJE5NIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0xOX1M9J2AkRUNITyAiJExOX1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbWF4X2NtZF9sZW49J2AkRUNITyAiJG1heF9jbWRfbGVuIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2FjX29iamV4dD0nYCRFQ0hPICIkYWNfb2JqZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2V4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCityZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK09CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2ZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCit3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK1NUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworb2xkX3Bvc3R1bmluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3R1bmluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitvbGRfYXJjaGl2ZV9jbWRzPSdgJEVDSE8gIiRvbGRfYXJjaGl2ZV9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2xvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbj0nYCRFQ0hPICIkbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0NDPSdgJEVDSE8gIiRDQyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitDRkxBR1M9J2AkRUNITyAiJENGTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitjb21waWxlcj0nYCRFQ0hPICIkY29tcGlsZXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworR0NDPSdgJEVDSE8gIiRHQ0MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0RTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK09UT09MPSdgJEVDSE8gIiRPVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitPVE9PTDY0PSdgJEVDSE8gIiRPVE9PTDY0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2xpYmV4dD0nYCRFQ0hPICIkbGliZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3NocmV4dF9jbWRzPSdgJEVDSE8gIiRzaHJleHRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitleHRyYWN0X2V4cHN5bXNfY21kcz0nYCRFQ0hPICIkZXh0cmFjdF9leHBzeW1zX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworYXJjaGl2ZV9jbWRzX25lZWRfbGM9J2AkRUNITyAiJGFyY2hpdmVfY21kc19uZWVkX2xjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2VuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9J2AkRUNITyAiJGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjPSdgJEVDSE8gIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJword2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9J2AkRUNITyAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2NvbXBpbGVyX25lZWRzX29iamVjdD0nYCRFQ0hPICIkY29tcGlsZXJfbmVlZHNfb2JqZWN0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK29sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J2AkRUNITyAiJG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHM9J2AkRUNITyAiJG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2FyY2hpdmVfY21kcz0nYCRFQ0hPICIkYXJjaGl2ZV9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2FyY2hpdmVfZXhwc3ltX2NtZHM9J2AkRUNITyAiJGFyY2hpdmVfZXhwc3ltX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbW9kdWxlX2NtZHM9J2AkRUNITyAiJG1vZHVsZV9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK21vZHVsZV9leHBzeW1fY21kcz0nYCRFQ0hPICIkbW9kdWxlX2V4cHN5bV9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3dpdGhfZ251X2xkPSdgJEVDSE8gIiR3aXRoX2dudV9sZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCithbGxvd191bmRlZmluZWRfZmxhZz0nYCRFQ0hPICIkYWxsb3dfdW5kZWZpbmVkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbm9fdW5kZWZpbmVkX2ZsYWc9J2AkRUNITyAiJG5vX3VuZGVmaW5lZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9J2AkRUNITyAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0nYCRFQ0hPICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitoYXJkY29kZV9kaXJlY3Q9J2AkRUNITyAiJGhhcmRjb2RlX2RpcmVjdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGU9J2AkRUNITyAiJGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitoYXJkY29kZV9taW51c19MPSdgJEVDSE8gIiRoYXJkY29kZV9taW51c19MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2hhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2Fsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2V4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwordmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK25lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK25lZWRfdmVyc2lvbj0nYCRFQ0hPICIkbmVlZF92ZXJzaW9uIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3ZlcnNpb25fdHlwZT0nYCRFQ0hPICIkdmVyc2lvbl90eXBlIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3J1bnBhdGhfdmFyPSdgJEVDSE8gIiRydW5wYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitzaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRzaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD0nYCRFQ0hPICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2xpYm5hbWVfc3BlYz0nYCRFQ0hPICIkbGlibmFtZV9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2xpYnJhcnlfbmFtZXNfc3BlYz0nYCRFQ0hPICIkbGlicmFyeV9uYW1lc19zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3NvbmFtZV9zcGVjPSdgJEVDSE8gIiRzb25hbWVfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitpbnN0YWxsX292ZXJyaWRlX21vZGU9J2AkRUNITyAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitwb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRwb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3Bvc3R1bmluc3RhbGxfY21kcz0nYCRFQ0hPICIkcG9zdHVuaW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2ZpbmlzaF9jbWRzPSdgJEVDSE8gIiRmaW5pc2hfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitmaW5pc2hfZXZhbD0nYCRFQ0hPICIkZmluaXNoX2V2YWwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaGFyZGNvZGVfaW50b19saWJzPSdgJEVDSE8gIiRoYXJkY29kZV9pbnRvX2xpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSdgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9J2AkRUNITyAiJHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2hhcmRjb2RlX2FjdGlvbj0nYCRFQ0hPICIkaGFyZGNvZGVfYWN0aW9uIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2VuYWJsZV9kbG9wZW49J2AkRUNITyAiJGVuYWJsZV9kbG9wZW4iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZW5hYmxlX2Rsb3Blbl9zZWxmPSdgJEVDSE8gIiRlbmFibGVfZGxvcGVuX3NlbGYiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYz0nYCRFQ0hPICIkZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitvbGRfc3RyaXBsaWI9J2AkRUNITyAiJG9sZF9zdHJpcGxpYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitzdHJpcGxpYj0nYCRFQ0hPICIkc3RyaXBsaWIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogCiBMVENDPSckTFRDQycKIExUQ0ZMQUdTPSckTFRDRkxBR1MnCiBjb21waWxlcj0nJGNvbXBpbGVyX0RFRkFVTFQnCiAKKyMgQSBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgd2hlbiB0aGVyZSBpcyBubyBwcmludCBidWlsdGluIG9yIHByaW50Zi4KK2Z1bmNfZmFsbGJhY2tfZWNobyAoKQoreworICBldmFsICdjYXQgPDxfTFRFQ0hPX0VPRgorXCQxCitfTFRFQ0hPX0VPRicKK30KKwogIyBRdW90ZSBldmFsZWQgc3RyaW5ncy4KLWZvciB2YXIgaW4gU0VEIFwKK2ZvciB2YXIgaW4gU0hFTEwgXAorRUNITyBcCitQQVRIX1NFUEFSQVRPUiBcCitTRUQgXAogR1JFUCBcCiBFR1JFUCBcCiBGR1JFUCBcCkBAIC0xMzQwMyw4ICsxNTcwNCwxMyBAQAogT0JKRFVNUCBcCiBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCiBmaWxlX21hZ2ljX2NtZCBcCitmaWxlX21hZ2ljX2dsb2IgXAord2FudF9ub2Nhc2VnbG9iIFwKK0RMTFRPT0wgXAorc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAogQVIgXAogQVJfRkxBR1MgXAorYXJjaGl2ZXJfbGlzdF9zcGVjIFwKIFNUUklQIFwKIFJBTkxJQiBcCiBDQyBcCkBAIC0xMzQxNCwxNCArMTU3MjAsMTQgQEAKIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAotU0hFTEwgXAotRUNITyBcCitubV9maWxlX2xpc3Rfc3BlYyBcCiBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCi1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKK2x0X3Byb2dfY29tcGlsZXJfd2wgXAogbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAogbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAogbmVlZF9sb2NrcyBcCitNQU5JRkVTVF9UT09MIFwKIERTWU1VVElMIFwKIE5NRURJVCBcCiBMSVBPIFwKQEAgLTEzNDM1LDkgKzE1NzQxLDcgQEAKIGFsbG93X3VuZGVmaW5lZF9mbGFnIFwKIG5vX3VuZGVmaW5lZF9mbGFnIFwKIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAotaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCiBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLWZpeF9zcmNmaWxlX3BhdGggXAogZXhjbHVkZV9leHBzeW1zIFwKIGluY2x1ZGVfZXhwc3ltcyBcCiBmaWxlX2xpc3Rfc3BlYyBcCkBAIC0xMzQ0NSwxMiArMTU3NDksMTMgQEAKIGxpYm5hbWVfc3BlYyBcCiBsaWJyYXJ5X25hbWVzX3NwZWMgXAogc29uYW1lX3NwZWMgXAoraW5zdGFsbF9vdmVycmlkZV9tb2RlIFwKIGZpbmlzaF9ldmFsIFwKIG9sZF9zdHJpcGxpYiBcCiBzdHJpcGxpYjsgZG8KLSAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPICJYXFxcXFwkXCR2YXIiXGAgaW4KKyAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPIFxcXFwiIlxcXFxcJFwkdmFyIlxcXFwiXGAgaW4KICAgICAqW1xcXFxcXFxgXFwiXFxcJF0qKQotICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJYXFxcJFwkdmFyXFwiIHwgXFxcJFhzZWQgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgorICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKICAgICAgIDs7CiAgICAgKikKICAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFwkXCR2YXJcXFxcXFwiIgpAQCAtMTM0NzIsMTQgKzE1Nzc3LDE1IEBACiBtb2R1bGVfZXhwc3ltX2NtZHMgXAogZXhwb3J0X3N5bWJvbHNfY21kcyBcCiBwcmVsaW5rX2NtZHMgXAorcG9zdGxpbmtfY21kcyBcCiBwb3N0aW5zdGFsbF9jbWRzIFwKIHBvc3R1bmluc3RhbGxfY21kcyBcCiBmaW5pc2hfY21kcyBcCiBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgXAogc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM7IGRvCi0gICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyAiWFxcXFxcJFwkdmFyIlxgIGluCisgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCiAgICAgKltcXFxcXFxcYFxcIlxcXCRdKikKLSAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiWFxcXCRcJHZhclxcIiB8IFxcXCRYc2VkIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKKyAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiXFxcJFwkdmFyXFwiIHwgXFxcJFNFRCAtZSBcXCJcXFwkZG91YmxlX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJGRlbGF5X3ZhcmlhYmxlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCiAgICAgICA7OwogICAgICopCiAgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcJFwkdmFyXFxcXFxcIiIKQEAgLTEzNDg3LDEyICsxNTc5Myw2IEBACiAgICAgZXNhYwogZG9uZQogCi0jIEZpeC11cCBmYWxsYmFjayBlY2hvIGlmIGl0IHdhcyBtYW5nbGVkIGJ5IHRoZSBhYm92ZSBxdW90aW5nIHJ1bGVzLgotY2FzZSBcJGx0X0VDSE8gaW4KLSonXFxcJDAgLS1mYWxsYmFjay1lY2hvIicpICBsdF9FQ0hPPVxgXCRFQ0hPICJYXCRsdF9FQ0hPIiB8IFwkWHNlZCAtZSAncy9cXFxcXFxcXFxcXFxcXFwkMCAtLWZhbGxiYWNrLWVjaG8iXCQvXCQwIC0tZmFsbGJhY2stZWNobyIvJ1xgCi0gIDs7Ci1lc2FjCi0KIGFjX2F1eF9kaXI9JyRhY19hdXhfZGlyJwogeHNpX3NoZWxsPSckeHNpX3NoZWxsJwogbHRfc2hlbGxfYXBwZW5kPSckbHRfc2hlbGxfYXBwZW5kJwpAQCAtMTM1MjMsNiArMTU4MjMsNyBAQAogZG8KICAgY2FzZSAkYWNfY29uZmlnX3RhcmdldCBpbgogICAgICJmZmljb25maWcuaCIpIENPTkZJR19IRUFERVJTPSIkQ09ORklHX0hFQURFUlMgZmZpY29uZmlnLmgiIDs7CisgICAgImJ1aWxkaXIiKSBDT05GSUdfQ09NTUFORFM9IiRDT05GSUdfQ09NTUFORFMgYnVpbGRpciIgOzsKICAgICAiZGVwZmlsZXMiKSBDT05GSUdfQ09NTUFORFM9IiRDT05GSUdfQ09NTUFORFMgZGVwZmlsZXMiIDs7CiAgICAgImxpYnRvb2wiKSBDT05GSUdfQ09NTUFORFM9IiRDT05GSUdfQ09NTUFORFMgbGlidG9vbCIgOzsKICAgICAiaW5jbHVkZSIpIENPTkZJR19DT01NQU5EUz0iJENPTkZJR19DT01NQU5EUyBpbmNsdWRlIiA7OwpAQCAtMTM1MzcsNyArMTU4MzgsNyBAQAogICAgICJpbmNsdWRlL2ZmaV9jb21tb24uaCIpIENPTkZJR19MSU5LUz0iJENPTkZJR19MSU5LUyBpbmNsdWRlL2ZmaV9jb21tb24uaDppbmNsdWRlL2ZmaV9jb21tb24uaCIgOzsKICAgICAiZmZpY29uZmlnLnB5IikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGZmaWNvbmZpZy5weSIgOzsKIAotICAqKSBhc19mbl9lcnJvciAiaW52YWxpZCBhcmd1bWVudDogXGAkYWNfY29uZmlnX3RhcmdldCciICIkTElORU5PIiA1OzsKKyAgKikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgYXJndW1lbnQ6IFxgJGFjX2NvbmZpZ190YXJnZXQnIiAiJExJTkVOTyIgNTs7CiAgIGVzYWMKIGRvbmUKIApAQCAtMTM1NjEsOSArMTU4NjIsMTAgQEAKICMgYWZ0ZXIgaXRzIGNyZWF0aW9uIGJ1dCBiZWZvcmUgaXRzIG5hbWUgaGFzIGJlZW4gYXNzaWduZWQgdG8gYCR0bXAnLgogJGRlYnVnIHx8CiB7Ci0gIHRtcD0KKyAgdG1wPSBhY190bXA9CiAgIHRyYXAgJ2V4aXRfc3RhdHVzPSQ/Ci0gIHsgdGVzdCAteiAiJHRtcCIgfHwgdGVzdCAhIC1kICIkdG1wIiB8fCBybSAtZnIgIiR0bXAiOyB9ICYmIGV4aXQgJGV4aXRfc3RhdHVzCisgIDogIiR7YWNfdG1wOj0kdG1wfSIKKyAgeyB0ZXN0ICEgLWQgIiRhY190bXAiIHx8IHJtIC1mciAiJGFjX3RtcCI7IH0gJiYgZXhpdCAkZXhpdF9zdGF0dXMKICcgMAogICB0cmFwICdhc19mbl9leGl0IDEnIDEgMiAxMyAxNQogfQpAQCAtMTM1NzEsMTIgKzE1ODczLDEzIEBACiAKIHsKICAgdG1wPWAodW1hc2sgMDc3ICYmIG1rdGVtcCAtZCAiLi9jb25mWFhYWFhYIikgMj4vZGV2L251bGxgICYmCi0gIHRlc3QgLW4gIiR0bXAiICYmIHRlc3QgLWQgIiR0bXAiCisgIHRlc3QgLWQgIiR0bXAiCiB9ICB8fAogewogICB0bXA9Li9jb25mJCQtJFJBTkRPTQogICAodW1hc2sgMDc3ICYmIG1rZGlyICIkdG1wIikKLX0gfHwgYXNfZm5fZXJyb3IgImNhbm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGluIC4iICIkTElORU5PIiA1Cit9IHx8IGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBpbiAuIiAiJExJTkVOTyIgNQorYWNfdG1wPSR0bXAKIAogIyBTZXQgdXAgdGhlIHNjcmlwdHMgZm9yIENPTkZJR19GSUxFUyBzZWN0aW9uLgogIyBObyBuZWVkIHRvIGdlbmVyYXRlIHRoZW0gaWYgdGhlcmUgYXJlIG5vIENPTkZJR19GSUxFUy4KQEAgLTEzNTkzLDEyICsxNTg5NiwxMiBAQAogZmkKIGFjX2NzX2F3a19jcj1gJEFXSyAnQkVHSU4geyBwcmludCAiYVxyYiIgfScgPC9kZXYvbnVsbCAyPi9kZXYvbnVsbGAKIGlmIHRlc3QgIiRhY19jc19hd2tfY3IiID0gImEke2FjX2NyfWIiOyB0aGVuCi0gIGFjX2NzX2F3a19jcj0nXHInCisgIGFjX2NzX2F3a19jcj0nXFxyJwogZWxzZQogICBhY19jc19hd2tfY3I9JGFjX2NyCiBmaQogCi1lY2hvICdCRUdJTiB7JyA+IiR0bXAvc3ViczEuYXdrIiAmJgorZWNobyAnQkVHSU4geycgPiIkYWNfdG1wL3N1YnMxLmF3ayIgJiYKIF9BQ0VPRgogCiAKQEAgLTEzNjA3LDE4ICsxNTkxMCwxOCBAQAogICBlY2hvICIkYWNfc3Vic3RfdmFycyIgfCBzZWQgJ3MvLiovJiEkJiRhY19kZWxpbS8nICYmCiAgIGVjaG8gIl9BQ0VPRiIKIH0gPmNvbmYkJHN1YnMuc2ggfHwKLSAgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBtYWtlICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQotYWNfZGVsaW1fbnVtPWBlY2hvICIkYWNfc3Vic3RfdmFycyIgfCBncmVwIC1jICckJ2AKKyAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBtYWtlICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQorYWNfZGVsaW1fbnVtPWBlY2hvICIkYWNfc3Vic3RfdmFycyIgfCBncmVwIC1jICdeJ2AKIGFjX2RlbGltPSclIV8hIyAnCiBmb3IgYWNfbGFzdF90cnkgaW4gZmFsc2UgZmFsc2UgZmFsc2UgZmFsc2UgZmFsc2UgOjsgZG8KICAgLiAuL2NvbmYkJHN1YnMuc2ggfHwKLSAgICBhc19mbl9lcnJvciAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1CisgICAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBtYWtlICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQogCiAgIGFjX2RlbGltX249YHNlZCAtbiAicy8uKiRhY19kZWxpbVwkL1gvcCIgY29uZiQkc3Vicy5hd2sgfCBncmVwIC1jIFhgCiAgIGlmIHRlc3QgJGFjX2RlbGltX24gPSAkYWNfZGVsaW1fbnVtOyB0aGVuCiAgICAgYnJlYWsKICAgZWxpZiAkYWNfbGFzdF90cnk7IHRoZW4KLSAgICBhc19mbl9lcnJvciAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1CisgICAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBtYWtlICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQogICBlbHNlCiAgICAgYWNfZGVsaW09IiRhY19kZWxpbSEkYWNfZGVsaW0gXyRhY19kZWxpbSEhICIKICAgZmkKQEAgLTEzNjI2LDcgKzE1OTI5LDcgQEAKIHJtIC1mIGNvbmYkJHN1YnMuc2gKIAogY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCi1jYXQgPj4iXCR0bXAvc3ViczEuYXdrIiA8PFxcX0FDQVdLICYmCitjYXQgPj4iXCRhY190bXAvc3ViczEuYXdrIiA8PFxcX0FDQVdLICYmCiBfQUNFT0YKIHNlZCAtbiAnCiBoCkBAIC0xMzY3NCw3ICsxNTk3Nyw3IEBACiBybSAtZiBjb25mJCRzdWJzLmF3awogY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCiBfQUNBV0sKLWNhdCA+PiJcJHRtcC9zdWJzMS5hd2siIDw8X0FDQVdLICYmCitjYXQgPj4iXCRhY190bXAvc3ViczEuYXdrIiA8PF9BQ0FXSyAmJgogICBmb3IgKGtleSBpbiBTKSBTX2lzX3NldFtrZXldID0gMQogICBGUyA9ICIHIgogCkBAIC0xMzcwNiwyMSArMTYwMDksMjkgQEAKICAgc2VkICJzLyRhY19jclwkLy87IHMvJGFjX2NyLyRhY19jc19hd2tfY3IvZyIKIGVsc2UKICAgY2F0Ci1maSA8ICIkdG1wL3N1YnMxLmF3ayIgPiAiJHRtcC9zdWJzLmF3ayIgXAotICB8fCBhc19mbl9lcnJvciAiY291bGQgbm90IHNldHVwIGNvbmZpZyBmaWxlcyBtYWNoaW5lcnkiICIkTElORU5PIiA1CitmaSA8ICIkYWNfdG1wL3N1YnMxLmF3ayIgPiAiJGFjX3RtcC9zdWJzLmF3ayIgXAorICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IHNldHVwIGNvbmZpZyBmaWxlcyBtYWNoaW5lcnkiICIkTElORU5PIiA1CiBfQUNFT0YKIAotIyBWUEFUSCBtYXkgY2F1c2UgdHJvdWJsZSB3aXRoIHNvbWUgbWFrZXMsIHNvIHdlIHJlbW92ZSAkKHNyY2RpciksCi0jICR7c3JjZGlyfSBhbmQgQHNyY2RpckAgZnJvbSBWUEFUSCBpZiBzcmNkaXIgaXMgIi4iLCBzdHJpcCBsZWFkaW5nIGFuZAorIyBWUEFUSCBtYXkgY2F1c2UgdHJvdWJsZSB3aXRoIHNvbWUgbWFrZXMsIHNvIHdlIHJlbW92ZSBzb2xlICQoc3JjZGlyKSwKKyMgJHtzcmNkaXJ9IGFuZCBAc3JjZGlyQCBlbnRyaWVzIGZyb20gVlBBVEggaWYgc3JjZGlyIGlzICIuIiwgc3RyaXAgbGVhZGluZyBhbmQKICMgdHJhaWxpbmcgY29sb25zIGFuZCB0aGVuIHJlbW92ZSB0aGUgd2hvbGUgbGluZSBpZiBWUEFUSCBiZWNvbWVzIGVtcHR5CiAjIChhY3R1YWxseSB3ZSBsZWF2ZSBhbiBlbXB0eSBsaW5lIHRvIHByZXNlcnZlIGxpbmUgbnVtYmVycykuCiBpZiB0ZXN0ICJ4JHNyY2RpciIgPSB4LjsgdGhlbgotICBhY192cHN1Yj0nL15bCSBdKlZQQVRIWwkgXSo9L3sKLXMvOipcJChzcmNkaXIpOiovOi8KLXMvOipcJHtzcmNkaXJ9OiovOi8KLXMvOipAc3JjZGlyQDoqLzovCi1zL15cKFtePV0qPVsJIF0qXCk6Ki9cMS8KKyAgYWNfdnBzdWI9Jy9eWwkgXSpWUEFUSFsJIF0qPVsJIF0qL3sKK2gKK3MvLy8KK3MvXi86Lworcy9bCSBdKiQvOi8KK3MvOlwkKHNyY2Rpcik6LzovZworcy86XCR7c3JjZGlyfTovOi9nCitzLzpAc3JjZGlyQDovOi9nCitzL146Ki8vCiBzLzoqJC8vCit4CitzL1woPVsJIF0qXCkuKi9cMS8KK0cKK3MvXG4vLwogcy9eW149XSo9WwkgXSokLy8KIH0nCiBmaQpAQCAtMTM3MzIsNyArMTYwNDMsNyBAQAogIyBObyBuZWVkIHRvIGdlbmVyYXRlIHRoZW0gaWYgdGhlcmUgYXJlIG5vIENPTkZJR19IRUFERVJTLgogIyBUaGlzIGhhcHBlbnMgZm9yIGluc3RhbmNlIHdpdGggYC4vY29uZmlnLnN0YXR1cyBNYWtlZmlsZScuCiBpZiB0ZXN0IC1uICIkQ09ORklHX0hFQURFUlMiOyB0aGVuCi1jYXQgPiIkdG1wL2RlZmluZXMuYXdrIiA8PFxfQUNBV0sgfHwKK2NhdCA+IiRhY190bXAvZGVmaW5lcy5hd2siIDw8XF9BQ0FXSyB8fAogQkVHSU4gewogX0FDRU9GCiAKQEAgLTEzNzQ0LDExICsxNjA1NSwxMSBAQAogIyBoYW5kbGluZyBvZiBsb25nIGxpbmVzLgogYWNfZGVsaW09JyUhXyEjICcKIGZvciBhY19sYXN0X3RyeSBpbiBmYWxzZSBmYWxzZSA6OyBkbwotICBhY190PWBzZWQgLW4gIi8kYWNfZGVsaW0vcCIgY29uZmRlZnMuaGAKLSAgaWYgdGVzdCAteiAiJGFjX3QiOyB0aGVuCisgIGFjX3R0PWBzZWQgLW4gIi8kYWNfZGVsaW0vcCIgY29uZmRlZnMuaGAKKyAgaWYgdGVzdCAteiAiJGFjX3R0IjsgdGhlbgogICAgIGJyZWFrCiAgIGVsaWYgJGFjX2xhc3RfdHJ5OyB0aGVuCi0gICAgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBtYWtlICRDT05GSUdfSEVBREVSUyIgIiRMSU5FTk8iIDUKKyAgICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IG1ha2UgJENPTkZJR19IRUFERVJTIiAiJExJTkVOTyIgNQogICBlbHNlCiAgICAgYWNfZGVsaW09IiRhY19kZWxpbSEkYWNfZGVsaW0gXyRhY19kZWxpbSEhICIKICAgZmkKQEAgLTEzODMzLDcgKzE2MTQ0LDcgQEAKIF9BQ0FXSwogX0FDRU9GCiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCi0gIGFzX2ZuX2Vycm9yICJjb3VsZCBub3Qgc2V0dXAgY29uZmlnIGhlYWRlcnMgbWFjaGluZXJ5IiAiJExJTkVOTyIgNQorICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IHNldHVwIGNvbmZpZyBoZWFkZXJzIG1hY2hpbmVyeSIgIiRMSU5FTk8iIDUKIGZpICMgdGVzdCAtbiAiJENPTkZJR19IRUFERVJTIgogCiAKQEAgLTEzODQ2LDcgKzE2MTU3LDcgQEAKICAgZXNhYwogICBjYXNlICRhY19tb2RlJGFjX3RhZyBpbgogICA6W0ZITF0qOiopOzsKLSAgOkwqIHwgOkMqOiopIGFzX2ZuX2Vycm9yICJpbnZhbGlkIHRhZyBcYCRhY190YWcnIiAiJExJTkVOTyIgNTs7CisgIDpMKiB8IDpDKjoqKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB0YWcgXGAkYWNfdGFnJyIgIiRMSU5FTk8iIDU7OwogICA6W0ZIXS0pIGFjX3RhZz0tOi07OwogICA6W0ZIXSopIGFjX3RhZz0kYWNfdGFnOiRhY190YWcuaW47OwogICBlc2FjCkBAIC0xMzg2NSw3ICsxNjE3Niw3IEBACiAgICAgZm9yIGFjX2YKICAgICBkbwogICAgICAgY2FzZSAkYWNfZiBpbgotICAgICAgLSkgYWNfZj0iJHRtcC9zdGRpbiI7OworICAgICAgLSkgYWNfZj0iJGFjX3RtcC9zdGRpbiI7OwogICAgICAgKikgIyBMb29rIGZvciB0aGUgZmlsZSBmaXJzdCBpbiB0aGUgYnVpbGQgdHJlZSwgdGhlbiBpbiB0aGUgc291cmNlIHRyZWUKIAkgIyAoaWYgdGhlIHBhdGggaXMgbm90IGFic29sdXRlKS4gIFRoZSBhYnNvbHV0ZSBwYXRoIGNhbm5vdCBiZSBET1Mtc3R5bGUsCiAJICMgYmVjYXVzZSAkYWNfZiBjYW5ub3QgY29udGFpbiBgOicuCkBAIC0xMzg3NCw3ICsxNjE4NSw3IEBACiAJICAgW1xcLyRdKikgZmFsc2U7OwogCSAgICopIHRlc3QgLWYgIiRzcmNkaXIvJGFjX2YiICYmIGFjX2Y9IiRzcmNkaXIvJGFjX2YiOzsKIAkgICBlc2FjIHx8Ci0JICAgYXNfZm5fZXJyb3IgImNhbm5vdCBmaW5kIGlucHV0IGZpbGU6IFxgJGFjX2YnIiAiJExJTkVOTyIgNTs7CisJICAgYXNfZm5fZXJyb3IgMSAiY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogXGAkYWNfZiciICIkTElORU5PIiA1OzsKICAgICAgIGVzYWMKICAgICAgIGNhc2UgJGFjX2YgaW4gKlwnKikgYWNfZj1gJGFzX2VjaG8gIiRhY19mIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7IGVzYWMKICAgICAgIGFzX2ZuX2FwcGVuZCBhY19maWxlX2lucHV0cyAiICckYWNfZiciCkBAIC0xMzkwMCw4ICsxNjIxMSw4IEBACiAgICAgZXNhYwogCiAgICAgY2FzZSAkYWNfdGFnIGluCi0gICAgKjotOiogfCAqOi0pIGNhdCA+IiR0bXAvc3RkaW4iIFwKLSAgICAgIHx8IGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNSA7OworICAgICo6LToqIHwgKjotKSBjYXQgPiIkYWNfdG1wL3N0ZGluIiBcCisgICAgICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUgOzsKICAgICBlc2FjCiAgICAgOzsKICAgZXNhYwpAQCAtMTQwMzcsMjMgKzE2MzQ4LDI0IEBACiBzJkBNS0RJUl9QQCYkYWNfTUtESVJfUCY7dCB0CiAkYWNfZGF0YXJvb3RkaXJfaGFjawogIgotZXZhbCBzZWQgXCJcJGFjX3NlZF9leHRyYVwiICIkYWNfZmlsZV9pbnB1dHMiIHwgJEFXSyAtZiAiJHRtcC9zdWJzLmF3ayIgPiR0bXAvb3V0IFwKLSAgfHwgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CitldmFsIHNlZCBcIlwkYWNfc2VkX2V4dHJhXCIgIiRhY19maWxlX2lucHV0cyIgfCAkQVdLIC1mICIkYWNfdG1wL3N1YnMuYXdrIiBcCisgID4kYWNfdG1wL291dCB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKIAogdGVzdCAteiAiJGFjX2RhdGFyb290ZGlyX2hhY2skYWNfZGF0YXJvb3RkaXJfc2VlbiIgJiYKLSAgeyBhY19vdXQ9YHNlZCAtbiAnL1wke2RhdGFyb290ZGlyfS9wJyAiJHRtcC9vdXQiYDsgdGVzdCAtbiAiJGFjX291dCI7IH0gJiYKLSAgeyBhY19vdXQ9YHNlZCAtbiAnL15bCSBdKmRhdGFyb290ZGlyWwkgXSo6Kj0vcCcgIiR0bXAvb3V0ImA7IHRlc3QgLXogIiRhY19vdXQiOyB9ICYmCisgIHsgYWNfb3V0PWBzZWQgLW4gJy9cJHtkYXRhcm9vdGRpcn0vcCcgIiRhY190bXAvb3V0ImA7IHRlc3QgLW4gIiRhY19vdXQiOyB9ICYmCisgIHsgYWNfb3V0PWBzZWQgLW4gJy9eWwkgXSpkYXRhcm9vdGRpclsJIF0qOio9L3AnIFwKKyAgICAgICIkYWNfdG1wL291dCJgOyB0ZXN0IC16ICIkYWNfb3V0IjsgfSAmJgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICRhY19maWxlIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YXJpYWJsZSBcYGRhdGFyb290ZGlyJwotd2hpY2ggc2VlbXMgdG8gYmUgdW5kZWZpbmVkLiAgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkLiIgPiY1Cit3aGljaCBzZWVtcyB0byBiZSB1bmRlZmluZWQuICBQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGRlZmluZWQiID4mNQogJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2ZpbGUgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIHZhcmlhYmxlIFxgZGF0YXJvb3RkaXInCi13aGljaCBzZWVtcyB0byBiZSB1bmRlZmluZWQuICBQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGRlZmluZWQuIiA+JjI7fQord2hpY2ggc2VlbXMgdG8gYmUgdW5kZWZpbmVkLiAgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkIiA+JjI7fQogCi0gIHJtIC1mICIkdG1wL3N0ZGluIgorICBybSAtZiAiJGFjX3RtcC9zdGRpbiIKICAgY2FzZSAkYWNfZmlsZSBpbgotICAtKSBjYXQgIiR0bXAvb3V0IiAmJiBybSAtZiAiJHRtcC9vdXQiOzsKLSAgKikgcm0gLWYgIiRhY19maWxlIiAmJiBtdiAiJHRtcC9vdXQiICIkYWNfZmlsZSI7OworICAtKSBjYXQgIiRhY190bXAvb3V0IiAmJiBybSAtZiAiJGFjX3RtcC9vdXQiOzsKKyAgKikgcm0gLWYgIiRhY19maWxlIiAmJiBtdiAiJGFjX3RtcC9vdXQiICIkYWNfZmlsZSI7OwogICBlc2FjIFwKLSAgfHwgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CisgIHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQogIDs7CiAgIDpIKQogICAjCkBAIC0xNDA2MiwyMSArMTYzNzQsMjEgQEAKICAgaWYgdGVzdCB4IiRhY19maWxlIiAhPSB4LTsgdGhlbgogICAgIHsKICAgICAgICRhc19lY2hvICIvKiAkY29uZmlndXJlX2lucHV0ICAqLyIgXAotICAgICAgJiYgZXZhbCAnJEFXSyAtZiAiJHRtcC9kZWZpbmVzLmF3ayInICIkYWNfZmlsZV9pbnB1dHMiCi0gICAgfSA+IiR0bXAvY29uZmlnLmgiIFwKLSAgICAgIHx8IGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQotICAgIGlmIGRpZmYgIiRhY19maWxlIiAiJHRtcC9jb25maWcuaCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgICAmJiBldmFsICckQVdLIC1mICIkYWNfdG1wL2RlZmluZXMuYXdrIicgIiRhY19maWxlX2lucHV0cyIKKyAgICB9ID4iJGFjX3RtcC9jb25maWcuaCIgXAorICAgICAgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CisgICAgaWYgZGlmZiAiJGFjX2ZpbGUiICIkYWNfdG1wL2NvbmZpZy5oIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX2ZpbGUgaXMgdW5jaGFuZ2VkIiA+JjUKICRhc19lY2hvICIkYXNfbWU6ICRhY19maWxlIGlzIHVuY2hhbmdlZCIgPiY2O30KICAgICBlbHNlCiAgICAgICBybSAtZiAiJGFjX2ZpbGUiCi0gICAgICBtdiAiJHRtcC9jb25maWcuaCIgIiRhY19maWxlIiBcCi0JfHwgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CisgICAgICBtdiAiJGFjX3RtcC9jb25maWcuaCIgIiRhY19maWxlIiBcCisJfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CiAgICAgZmkKICAgZWxzZQogICAgICRhc19lY2hvICIvKiAkY29uZmlndXJlX2lucHV0ICAqLyIgXAotICAgICAgJiYgZXZhbCAnJEFXSyAtZiAiJHRtcC9kZWZpbmVzLmF3ayInICIkYWNfZmlsZV9pbnB1dHMiIFwKLSAgICAgIHx8IGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgY3JlYXRlIC0iICIkTElORU5PIiA1CisgICAgICAmJiBldmFsICckQVdLIC1mICIkYWNfdG1wL2RlZmluZXMuYXdrIicgIiRhY19maWxlX2lucHV0cyIgXAorICAgICAgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgLSIgIiRMSU5FTk8iIDUKICAgZmkKICMgQ29tcHV0ZSAiJGFjX2ZpbGUiJ3MgaW5kZXggaW4gJGNvbmZpZ19oZWFkZXJzLgogX2FtX2FyZz0iJGFjX2ZpbGUiCkBAIC0xNDEzMCwxOSArMTY0NDIsMTkgQEAKICRhc19lY2hvICIkYXNfbWU6IGxpbmtpbmcgJGFjX3NvdXJjZSB0byAkYWNfZmlsZSIgPiY2O30KIAogICAgIGlmIHRlc3QgISAtciAiJGFjX3NvdXJjZSI7IHRoZW4KLSAgICAgIGFzX2ZuX2Vycm9yICIkYWNfc291cmNlOiBmaWxlIG5vdCBmb3VuZCIgIiRMSU5FTk8iIDUKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICIkYWNfc291cmNlOiBmaWxlIG5vdCBmb3VuZCIgIiRMSU5FTk8iIDUKICAgICBmaQogICAgIHJtIC1mICIkYWNfZmlsZSIKIAogICAgICMgVHJ5IGEgcmVsYXRpdmUgc3ltbGluaywgdGhlbiBhIGhhcmQgbGluaywgdGhlbiBhIGNvcHkuCi0gICAgY2FzZSAkc3JjZGlyIGluCisgICAgY2FzZSAkYWNfc291cmNlIGluCiAgICAgW1xcLyRdKiB8ID86W1xcL10qICkgYWNfcmVsX3NvdXJjZT0kYWNfc291cmNlIDs7CiAJKikgYWNfcmVsX3NvdXJjZT0kYWNfdG9wX2J1aWxkX3ByZWZpeCRhY19zb3VyY2UgOzsKICAgICBlc2FjCiAgICAgbG4gLXMgIiRhY19yZWxfc291cmNlIiAiJGFjX2ZpbGUiIDI+L2Rldi9udWxsIHx8CiAgICAgICBsbiAiJGFjX3NvdXJjZSIgIiRhY19maWxlIiAyPi9kZXYvbnVsbCB8fAogICAgICAgY3AgLXAgIiRhY19zb3VyY2UiICIkYWNfZmlsZSIgfHwKLSAgICAgIGFzX2ZuX2Vycm9yICJjYW5ub3QgbGluayBvciBjb3B5ICRhY19zb3VyY2UgdG8gJGFjX2ZpbGUiICIkTElORU5PIiA1CisgICAgICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGxpbmsgb3IgY29weSAkYWNfc291cmNlIHRvICRhY19maWxlIiAiJExJTkVOTyIgNQogICBmaQogIDs7CiAgIDpDKSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBleGVjdXRpbmcgJGFjX2ZpbGUgY29tbWFuZHMiID4mNQpAQCAtMTQxNTIsNiArMTY0NjQsMTUwIEBACiAKIAogICBjYXNlICRhY19maWxlJGFjX21vZGUgaW4KKyAgICAiYnVpbGRpciI6QykgICBhY190b3Bfc3JjZGlyPSIkYXhfZW5hYmxlX2J1aWxkZGlyX3NyY2RpciIKKyAgaWYgdGVzdCAiLiRheF9lbmFibGVfYnVpbGRkaXIiID0gIi4uIiA7IHRoZW4KKyAgICBpZiB0ZXN0IC1mICIkdG9wX3NyY2Rpci9NYWtlZmlsZSIgOyB0aGVuCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHNraXBwaW5nIHRvcF9zcmNkaXIvTWFrZWZpbGUgLSBsZWZ0IHVudG91Y2hlZCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBza2lwcGluZyB0b3Bfc3JjZGlyL01ha2VmaWxlIC0gbGVmdCB1bnRvdWNoZWQiID4mNjt9CisgICAgZWxzZQorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBza2lwcGluZyB0b3Bfc3JjZGlyL01ha2VmaWxlIC0gbm90IGNyZWF0ZWQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogc2tpcHBpbmcgdG9wX3NyY2Rpci9NYWtlZmlsZSAtIG5vdCBjcmVhdGVkIiA+JjY7fQorICAgIGZpCisgIGVsc2UKKyAgICBpZiB0ZXN0IC1mICIkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSIgOyB0aGVuCisgICAgICBhPWBncmVwICJeVkVSU0lPTiAiICIkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSJgIDsgYj1gZ3JlcCAiXlZFUlNJT04gIiBNYWtlZmlsZWAKKyAgICAgIHRlc3QgIiRhIiAhPSAiJGIiICYmIHJtICIkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSIKKyAgICBmaQorICAgIGlmIHRlc3QgLWYgIiRhY190b3Bfc3JjZGlyL01ha2VmaWxlIiA7IHRoZW4KKwllY2hvICIkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSA6ICRhY190b3Bfc3JjZGlyL01ha2VmaWxlLmluIiA+ICR0bXAvY29uZnRlbXAubWsKKwllY2hvICIJQCBlY2hvICdSRU1PVkVELCwsJyA+XCRAIiA+PiAkdG1wL2NvbmZ0ZW1wLm1rCisgICAgICBldmFsICIke01BS0UtbWFrZX0gLWYgJHRtcC9jb25mdGVtcC5tayAyPi9kZXYvbnVsbCA+L2Rldi9udWxsIgorICAgICAgaWYgZ3JlcCAnXlJFTU9WRUQsLCwnICIkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSIgPi9kZXYvbnVsbAorICAgICAgdGhlbiBybSAkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSA7IGZpCisgICAgICBjcCAkdG1wL2NvbmZ0ZW1wLm1rICRhY190b3Bfc3JjZGlyL21ha2VmaWxlcy5ta34gICAgICAjIyBERUJVR0dJTkcKKyAgICBmaQorICAgIGlmIHRlc3QgISAtZiAiJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUiIDsgdGhlbgorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjcmVhdGUgdG9wX3NyY2Rpci9NYWtlZmlsZSBndWVzc2VkIGZyb20gbG9jYWwgTWFrZWZpbGUiID4mNQorJGFzX2VjaG8gIiRhc19tZTogY3JlYXRlIHRvcF9zcmNkaXIvTWFrZWZpbGUgZ3Vlc3NlZCBmcm9tIGxvY2FsIE1ha2VmaWxlIiA+JjY7fQorICAgICAgeD0nYCcgOyBjYXQgPiR0bXAvY29uZnRlbXAuc2VkIDw8X0VPRgorL15cJC9uCit4CisvXlwkL2JTCit4CisvXFxcXFwkL3tIO2Q7fQore0g7cy8uKi8vO3g7fQorYk0KKzpTCit4CisvXFxcXFwkL3toO2Q7fQore2g7cy8uKi8vO3g7fQorOk0KK3MvXFwoXFxuXFwpCS9cXDEgL2cKKy9eCS9kCisvXlsJIF0qW1xcI10vZAorL15WUEFUSCAqPS9kCitzL15zcmNkaXIgKj0uKi9zcmNkaXIgPSAuLworcy9edG9wX3NyY2RpciAqPS4qL3RvcF9zcmNkaXIgPSAuLworL1s6PV0vIWQKKy9eXFwuL2QKKy8gPSAvYgorLyAuPSAvYgorLzovIWIKK3MvOi4qLzovCitzLyAvICAvZworcy8gXFwoW2Etel1bYS16LV0qW2EtekEtWjAtOV1cXClcXChbIDpdXFwpLyBcXDEgXFwxLWFsbFxcMi9nCitzL15cXChbYS16XVthLXotXSpbYS16QS1aMC05XVxcKVxcKFsgOl1cXCkvXFwxIFxcMS1hbGxcXDIvCitzLyAgLyAvZworL15hbGwgYWxsLWFsbFsgOl0vaVxcCithbGwtY29uZmlndXJlZCA6IGFsbC1hbGwKK3MvIFthLXpBLVowLTktXSotYWxsIFthLXpBLVowLTktXSotYWxsLWFsbC8vZworLy1hbGwtYWxsL2QKK2FcXAorCUAgSE9TVD0iXCQoSE9TVClcIiBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkSE9TVCIgPSAiLiIgJiYgSE9TVD0keCBzaCAkYXhfZW5hYmxlX2J1aWxkZGlyX2F1eGRpci9jb25maWcuZ3Vlc3MgJHggXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyBcJFwkSE9TVCAiIE1ha2VmaWxlIHwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IHVzZT0keCBiYXNlbmFtZSAiXCRcQCIgLWFsbCAkeDsgbj0keCBlY2hvIFwkXCRCVUlMRCB8IHdjIC13ICR4IFxcXFxcXAorCTsgZWNobyAiTUFLRSBcJFwkSE9TVCA6IFwkXCRuICogXCRcQCI7IGlmIHRlc3QgIlwkXCRuIiAtZXEgIjAiIDsgdGhlbiA6IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMuKnwiIE1ha2VmaWxlIHx0YWlsIC0xfCBzZWQgLWUgJ3MvLip8Ly8nICR4IDsgZmkgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEJVSUxEIiA9ICIuIiAmJiBCVUlMRD0iLiIgXFxcXFxcCisJOyB0ZXN0ICJcJFwkdXNlIiA9ICJcJFxAIiAmJiBCVUlMRD0keCBlY2hvICJcJFwkQlVJTEQiIHwgdGFpbCAtMSAkeCBcXFxcXFwKKwk7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyAoY2QgIlwkXCRpIiAmJiB0ZXN0ICEgLWYgY29uZmlndXJlICYmIFwkKE1BS0UpIFwkXCR1c2UpIHx8IGV4aXQ7IGRvbmUKKy9kaXN0LWFsbCAqOi9hXFwKKwlAIEhPU1Q9IlwkKEhPU1QpXCIgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEhPU1QiID0gIi4iICYmIEhPU1Q9JHggc2ggJGF4X2VuYWJsZV9idWlsZGRpcl9hdXhkaXIvY29uZmlnLmd1ZXNzICR4IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgXCRcJEhPU1QgIiBNYWtlZmlsZSB8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyBmb3VuZD0keCBlY2hvIFwkXCRCVUlMRCB8IHdjIC13ICR4IFxcXFxcXAorCTsgZWNobyAiTUFLRSBcJFwkSE9TVCA6IFwkXCRmb3VuZCBcJChQQUNLQUdFKS1cJChWRVJTSU9OKS50YXIuKiIgXFxcXFxcCisJOyBpZiB0ZXN0ICJcJFwkZm91bmQiIC1lcSAiMCIgOyB0aGVuIDogXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyAuKnwiIE1ha2VmaWxlIHx0YWlsIC0xfCBzZWQgLWUgJ3MvLip8Ly8nICR4IFxcXFxcXAorCTsgZmkgOyBmb3IgaSBpbiBcJFwkQlVJTEQgOyBkbyB0ZXN0ICIuXCRcJGkiID0gIi4iICYmIGNvbnRpbnVlIFxcXFxcXAorCTsgZm9yIGYgaW4gXCRcJGkvXCQoUEFDS0FHRSktXCQoVkVSU0lPTikudGFyLiogXFxcXFxcCisJOyBkbyB0ZXN0IC1mICJcJFwkZiIgJiYgbXYgIlwkXCRmIiBcJChQVUIpLiA7IGRvbmUgOyBicmVhayA7IGRvbmUKKy9kaXN0LVthLXpBLVowLTldKi1hbGwgKjovYVxcCisJQCBIT1NUPSJcJChIT1NUKVwiIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRIT1NUIiA9ICIuIiAmJiBIT1NUPSR4IHNoIC4vY29uZmlnLmd1ZXNzICR4IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgXCRcJEhPU1QgIiBNYWtlZmlsZSB8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyBmb3VuZD0keCBlY2hvIFwkXCRCVUlMRCB8IHdjIC13ICR4IFxcXFxcXAorCTsgZWNobyAiTUFLRSBcJFwkSE9TVCA6IFwkXCRmb3VuZCBcJChQQUNLQUdFKS1cJChWRVJTSU9OKS4qIiBcXFxcXFwKKwk7IGlmIHRlc3QgIlwkXCRmb3VuZCIgLWVxICIwIiA7IHRoZW4gOiBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjIC4qfCIgTWFrZWZpbGUgfHRhaWwgLTF8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyBmaSA7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyBmb3IgZiBpbiBcJFwkaS9cJChQQUNLQUdFKS1cJChWRVJTSU9OKS4qIFxcXFxcXAorCTsgZG8gdGVzdCAtZiAiXCRcJGYiICYmIG12ICJcJFwkZiIgXCQoUFVCKS4gOyBkb25lIDsgYnJlYWsgOyBkb25lCisvZGlzdGNsZWFuLWFsbCAqOi9hXFwKKwlAIEhPU1Q9IlwkKEhPU1QpXCIgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEhPU1QiID0gIi4iICYmIEhPU1Q9JHggc2ggJGF4X2VuYWJsZV9idWlsZGRpcl9hdXhkaXIvY29uZmlnLmd1ZXNzICR4IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgLip8IiBNYWtlZmlsZSB8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyB1c2U9JHggYmFzZW5hbWUgIlwkXEAiIC1hbGwgJHg7IG49JHggZWNobyBcJFwkQlVJTEQgfCB3YyAtdyAkeCBcXFxcXFwKKwk7IGVjaG8gIk1BS0UgXCRcJEhPU1QgOiBcJFwkbiAqIFwkXEAgKGFsbCBsb2NhbCBidWlsZHMpIiBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkQlVJTEQiID0gIi4iICYmIEJVSUxEPSIuIiBcXFxcXFwKKwk7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyBlY2hvICIjIHJtIC1yIFwkXCRpIjsgZG9uZSA7IGVjaG8gIiMgKHNsZWVwIDMpIiA7IHNsZWVwIDMgXFxcXFxcCisJOyBmb3IgaSBpbiBcJFwkQlVJTEQgOyBkbyB0ZXN0ICIuXCRcJGkiID0gIi4iICYmIGNvbnRpbnVlIFxcXFxcXAorCTsgZWNobyAiXCRcJGkiIHwgZ3JlcCAiXi8iID4gL2Rldi9udWxsICYmIGNvbnRpbnVlIFxcXFxcXAorCTsgZWNobyAiXCRcJGkiIHwgZ3JlcCAiXi4uLyIgPiAvZGV2L251bGwgJiYgY29udGludWUgXFxcXFxcCisJOyBlY2hvICJybSAtciBcJFwkaSI7IChybSAtciAiXCRcJGkiKSA7IGRvbmUgOyBybSBNYWtlZmlsZQorX0VPRgorICAgICAgY3AgIiR0bXAvY29uZnRlbXAuc2VkIiAiJGFjX3RvcF9zcmNkaXIvbWFrZWZpbGUuc2VkfiIgICAgICAgICAgICAjIyBERUJVR0dJTkcKKyAgICAgICRheF9lbmFibGVfYnVpbGRkaXJfc2VkIC1mICR0bXAvY29uZnRlbXAuc2VkIE1ha2VmaWxlID4kYWNfdG9wX3NyY2Rpci9NYWtlZmlsZQorICAgICAgaWYgdGVzdCAtZiAiJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUubWsiIDsgdGhlbgorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGV4dGVuZCB0b3Bfc3JjZGlyL01ha2VmaWxlIHdpdGggdG9wX3NyY2Rpci9NYWtlZmlsZS5tayIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBleHRlbmQgdG9wX3NyY2Rpci9NYWtlZmlsZSB3aXRoIHRvcF9zcmNkaXIvTWFrZWZpbGUubWsiID4mNjt9CisgICAgICAgIGNhdCAkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZS5tayA+PiRhY190b3Bfc3JjZGlyL01ha2VmaWxlCisgICAgICBmaSA7IHh4eHg9IiMjIyMiCisgICAgICBlY2hvICIkeHh4eCBDT05GSUdVUkFUSU9OUyBGT1IgVE9QTEVWRUwgTUFLRUZJTEU6ICIgPj4kYWNfdG9wX3NyY2Rpci9NYWtlZmlsZQorICAgICAgIyBzYW5pdHkgY2hlY2sKKyAgICAgIGlmIGdyZXAgJ147IGVjaG8gIk1BS0UgJyAkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSA+L2Rldi9udWxsIDsgdGhlbgorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGJ1Z2d5IHNlZCBmb3VuZCAtIGl0IGRlbGV0ZXMgdGFiIGluIFwiYVwiIHRleHQgcGFydHMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogYnVnZ3kgc2VkIGZvdW5kIC0gaXQgZGVsZXRlcyB0YWIgaW4gXCJhXCIgdGV4dCBwYXJ0cyIgPiY2O30KKyAgICAgICAgJGF4X2VuYWJsZV9idWlsZGRpcl9zZWQgLWUgJy9eQCBIT1NUPS9zL14vCS8nIC1lICcvXjsgL3MvXi8JLycgJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUgXAorICAgICAgICAgID4kYWNfdG9wX3NyY2Rpci9NYWtlZmlsZX4KKyAgICAgICAgKHRlc3QgLXMgJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGV+ICYmIG12ICRhY190b3Bfc3JjZGlyL01ha2VmaWxlfiAkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSkgMj4vZGV2L251bGwKKyAgICAgIGZpCisgICAgZWxzZQorICAgICAgeHh4eD0iXFwjXFwjXFwjXFwjIgorICAgICAgIyBlY2hvICIvXiR4eHh4ICokYXhfZW5hYmxlX2J1aWxkZGlyX2hvc3QgL2QiID4kdG1wL2NvbmZ0ZW1wLnNlZAorICAgICAgZWNobyAicyFeJHh4eHggW158XSogfCAqJGF4X2VuYWJsZV9idWlsZGRpciAqXCQhJHh4eHggLi4uLi4uICRheF9lbmFibGVfYnVpbGRkaXIhIiA+JHRtcC9jb25mdGVtcC5zZWQKKyAgICAgICRheF9lbmFibGVfYnVpbGRkaXJfc2VkIC1mICIkdG1wL2NvbmZ0ZW1wLnNlZCIgIiRhY190b3Bfc3JjZGlyL01ha2VmaWxlIiA+JHRtcC9ta2ZpbGUudG1wCisgICAgICAgIGNwICIkdG1wL2NvbmZ0ZW1wLnNlZCIgIiRhY190b3Bfc3JjZGlyL21ha2VmaWxlcy5zZWR+IiAgICAgICAgICMjIERFQlVHR0lORworICAgICAgICBjcCAiJHRtcC9ta2ZpbGUudG1wIiAgICIkYWNfdG9wX3NyY2Rpci9tYWtlZmlsZXMub3V0fiIgICAgICAgICAjIyBERUJVR0dJTkcKKyAgICAgIGlmIGNtcCAtcyAiJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUiICIkdG1wL21rZmlsZS50bXAiIDI+L2Rldi9udWxsIDsgdGhlbgorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGtlZXBpbmcgdG9wX3NyY2Rpci9NYWtlZmlsZSBmcm9tIGVhcmxpZXIgY29uZmlndXJlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGtlZXBpbmcgdG9wX3NyY2Rpci9NYWtlZmlsZSBmcm9tIGVhcmxpZXIgY29uZmlndXJlIiA+JjY7fQorICAgICAgICBybSAiJHRtcC9ta2ZpbGUudG1wIgorICAgICAgZWxzZQorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJldXNpbmcgdG9wX3NyY2Rpci9NYWtlZmlsZSBmcm9tIGVhcmxpZXIgY29uZmlndXJlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IHJldXNpbmcgdG9wX3NyY2Rpci9NYWtlZmlsZSBmcm9tIGVhcmxpZXIgY29uZmlndXJlIiA+JjY7fQorICAgICAgICBtdiAiJHRtcC9ta2ZpbGUudG1wIiAiJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUiCisgICAgICBmaQorICAgIGZpCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBidWlsZCBpbiAkYXhfZW5hYmxlX2J1aWxkZGlyIChIT1NUPSRheF9lbmFibGVfYnVpbGRkaXJfaG9zdCkiID4mNQorJGFzX2VjaG8gIiRhc19tZTogYnVpbGQgaW4gJGF4X2VuYWJsZV9idWlsZGRpciAoSE9TVD0kYXhfZW5hYmxlX2J1aWxkZGlyX2hvc3QpIiA+JjY7fQorICAgIHh4eHg9IiMjIyMiCisgICAgZWNobyAiJHh4eHgiICIkYXhfZW5hYmxlX2J1aWxkZGlyX2hvc3QiICJ8JGF4X2VuYWJsZV9idWlsZGRpciIgPj4kYWNfdG9wX3NyY2Rpci9NYWtlZmlsZQorICBmaQorIDs7CiAgICAgImRlcGZpbGVzIjpDKSB0ZXN0IHgiJEFNREVQX1RSVUUiICE9IHgiIiB8fCB7CiAgICMgQXV0b2NvbmYgMi42MiBxdW90ZXMgLS1maWxlIGFyZ3VtZW50cyBmb3IgZXZhbCwgYnV0IG5vdCB3aGVuIGZpbGVzCiAgICMgYXJlIGxpc3RlZCB3aXRob3V0IC0tZmlsZS4gIExldCdzIHBsYXkgc2FmZSBhbmQgb25seSBlbmFibGUgdGhlIGV2YWwKQEAgLTE0MjY4LDcgKzE2NzI0LDggQEAKICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgogIwogIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUKKyMgICAgICAgICAgICAgICAgIEZvdW5kYXRpb24sIEluYy4KICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CiAjCiAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCkBAIC0xNDMxNiw2ICsxNjc3MywxNSBAQAogIyBXaGV0aGVyIG9yIG5vdCB0byBvcHRpbWl6ZSBmb3IgZmFzdCBpbnN0YWxsYXRpb24uCiBmYXN0X2luc3RhbGw9JGVuYWJsZV9mYXN0X2luc3RhbGwKIAorIyBTaGVsbCB0byB1c2Ugd2hlbiBpbnZva2luZyBzaGVsbCBzY3JpcHRzLgorU0hFTEw9JGx0X1NIRUxMCisKKyMgQW4gZWNobyBwcm9ncmFtIHRoYXQgcHJvdGVjdHMgYmFja3NsYXNoZXMuCitFQ0hPPSRsdF9FQ0hPCisKKyMgVGhlIFBBVEggc2VwYXJhdG9yIGZvciB0aGUgYnVpbGQgc3lzdGVtLgorUEFUSF9TRVBBUkFUT1I9JGx0X1BBVEhfU0VQQVJBVE9SCisKICMgVGhlIGhvc3Qgc3lzdGVtLgogaG9zdF9hbGlhcz0kaG9zdF9hbGlhcwogaG9zdD0kaG9zdApAQCAtMTQzNjUsOSArMTY4MzEsMTEgQEAKICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KIE5MMlNQPSRsdF9sdF9OTDJTUAogCi0jIEhvdyB0byBjcmVhdGUgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMuCi1yZWxvYWRfZmxhZz0kbHRfcmVsb2FkX2ZsYWcKLXJlbG9hZF9jbWRzPSRsdF9yZWxvYWRfY21kcworIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgordG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorCisjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgordG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAogCiAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgogT0JKRFVNUD0kbHRfT0JKRFVNUApAQCAtMTQzNzUsMTMgKzE2ODQzLDMwIEBACiAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgogZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCiAKLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCisjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCiBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKIAorIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisKKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgord2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKworIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KK0RMTFRPT0w9JGx0X0RMTFRPT0wKKworIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgorc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisKICMgVGhlIGFyY2hpdmVyLgogQVI9JGx0X0FSCisKKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCiBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKIAorIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCithcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworCiAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgogU1RSSVA9JGx0X1NUUklQCiAKQEAgLTE0MzkwLDYgKzE2ODc1LDkgQEAKIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSRsdF9vbGRfcG9zdGluc3RhbGxfY21kcwogb2xkX3Bvc3R1bmluc3RhbGxfY21kcz0kbHRfb2xkX3Bvc3R1bmluc3RhbGxfY21kcwogCisjIFdoZXRoZXIgdG8gdXNlIGEgbG9jayBmb3Igb2xkIGFyY2hpdmUgZXh0cmFjdGlvbi4KK2xvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbj0kbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uCisKICMgQSBDIGNvbXBpbGVyLgogTFRDQz0kbHRfQ0MKIApAQCAtMTQ0MDgsMjEgKzE2ODk2LDI0IEBACiAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgogZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CiAKKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCisKKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCitsdF9zeXNyb290PSRsdF9zeXNyb290CisKICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgogb2JqZGlyPSRvYmpkaXIKIAotIyBTaGVsbCB0byB1c2Ugd2hlbiBpbnZva2luZyBzaGVsbCBzY3JpcHRzLgotU0hFTEw9JGx0X1NIRUxMCi0KLSMgQW4gZWNobyBwcm9ncmFtIHRoYXQgZG9lcyBub3QgaW50ZXJwcmV0IGJhY2tzbGFzaGVzLgotRUNITz0kbHRfRUNITwotCiAjIFVzZWQgdG8gZXhhbWluZSBsaWJyYXJpZXMgd2hlbiBmaWxlX21hZ2ljX2NtZCBiZWdpbnMgd2l0aCAiZmlsZSIuCiBNQUdJQ19DTUQ9JE1BR0lDX0NNRAogCiAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwogbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwogCisjIE1hbmlmZXN0IHRvb2wuCitNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisKICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KIERTWU1VVElMPSRsdF9EU1lNVVRJTAogCkBAIC0xNDQ3OSw2ICsxNjk3MCw5IEBACiAjIFRoZSBjb2RlZCBuYW1lIG9mIHRoZSBsaWJyYXJ5LCBpZiBkaWZmZXJlbnQgZnJvbSB0aGUgcmVhbCBuYW1lLgogc29uYW1lX3NwZWM9JGx0X3NvbmFtZV9zcGVjCiAKKyMgUGVybWlzc2lvbiBtb2RlIG92ZXJyaWRlIGZvciBpbnN0YWxsYXRpb24gb2Ygc2hhcmVkIGxpYnJhcmllcy4KK2luc3RhbGxfb3ZlcnJpZGVfbW9kZT0kbHRfaW5zdGFsbF9vdmVycmlkZV9tb2RlCisKICMgQ29tbWFuZCB0byB1c2UgYWZ0ZXIgaW5zdGFsbGF0aW9uIG9mIGEgc2hhcmVkIGFyY2hpdmUuCiBwb3N0aW5zdGFsbF9jbWRzPSRsdF9wb3N0aW5zdGFsbF9jbWRzCiAKQEAgLTE0NTE4LDYgKzE3MDEyLDEwIEBACiAjIFRoZSBsaW5rZXIgdXNlZCB0byBidWlsZCBsaWJyYXJpZXMuCiBMRD0kbHRfTEQKIAorIyBIb3cgdG8gY3JlYXRlIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzLgorcmVsb2FkX2ZsYWc9JGx0X3JlbG9hZF9mbGFnCityZWxvYWRfY21kcz0kbHRfcmVsb2FkX2NtZHMKKwogIyBDb21tYW5kcyB1c2VkIHRvIGJ1aWxkIGFuIG9sZC1zdHlsZSBhcmNoaXZlLgogb2xkX2FyY2hpdmVfY21kcz0kbHRfb2xkX2FyY2hpdmVfY21kcwogCkBAIC0xNDUzMCwxMiArMTcwMjgsMTIgQEAKICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKIAotIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLQogIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCiBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKIAorIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgord2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKwogIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgogbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKIApAQCAtMTQ1ODUsMTAgKzE3MDgzLDYgQEAKICMgVGhpcyBtdXN0IHdvcmsgZXZlbiBpZiBcJGxpYmRpciBkb2VzIG5vdCBleGlzdAogaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0kbHRfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYwogCi0jIElmIGxkIGlzIHVzZWQgd2hlbiBsaW5raW5nLCBmbGFnIHRvIGhhcmRjb2RlIFwkbGliZGlyIGludG8gYSBiaW5hcnkKLSMgZHVyaW5nIGxpbmtpbmcuICBUaGlzIG11c3Qgd29yayBldmVuIGlmIFwkbGliZGlyIGRvZXMgbm90IGV4aXN0LgotaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0kbHRfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZAotCiAjIFdoZXRoZXIgd2UgbmVlZCBhIHNpbmdsZSAiLXJwYXRoIiBmbGFnIHdpdGggYSBzZXBhcmF0ZWQgYXJndW1lbnQuCiBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSRsdF9oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yCiAKQEAgLTE0NjIyLDkgKzE3MTE2LDYgQEAKICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgogbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwogCi0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0KICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgogYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKIApAQCAtMTQ2NDAsNiArMTcxMzEsOSBAQAogIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCiAKKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKwogIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCiBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKIApAQCAtMTQ2NzIsMjEyICsxNzE2NiwxNjkgQEAKICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgogICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQogICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKIAotICBjYXNlICR4c2lfc2hlbGwgaW4KLSAgeWVzKQotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi1mdW5jX2Rpcm5hbWUgKCkKLXsKLSAgY2FzZSAkezF9IGluCi0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0gIGVzYWMKLX0KLQotIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLWZ1bmNfYmFzZW5hbWUgKCkKLXsKLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotfQotCi0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0jIGNhbGw6Ci0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi17Ci0gIGNhc2UgJHsxfSBpbgotICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotICBlc2FjCi0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLX0KLQotIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi1mdW5jX3N0cmlwbmFtZSAoKQotewotICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLX0KLQotIyBmdW5jX29wdF9zcGxpdAotZnVuY19vcHRfc3BsaXQgKCkKLXsKLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci19Ci0KLSMgZnVuY19sbzJvIG9iamVjdAotZnVuY19sbzJvICgpCi17Ci0gIGNhc2UgJHsxfSBpbgotICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0gIGVzYWMKLX0KLQotIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLWZ1bmNfeGZvcm0gKCkKLXsKLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotfQotCi0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi1mdW5jX2FyaXRoICgpCi17Ci0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotfQotCi0jIGZ1bmNfbGVuIHN0cmluZwotIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotZnVuY19sZW4gKCkKLXsKLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Ci19Ci0KLV9MVF9FT0YKLSAgICA7OwotICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotCi0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotZnVuY19kaXJuYW1lICgpCi17Ci0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGRpcm5hbWUiYAotICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0gIGVsc2UKLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0gIGZpCi19Ci0KLSMgZnVuY19iYXNlbmFtZSBmaWxlCi1mdW5jX2Jhc2VuYW1lICgpCi17Ci0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRiYXNlbmFtZSJgCi19CisgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKK2Z1bmNfZGlybmFtZSAoKVwKK3tcCitcICAgIGNhc2UgJHsxfSBpblwKK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorXCAgICBlc2FjXAorfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgogCiAKLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotZnVuY19zdHJpcG5hbWUgKCkKLXsKLSAgY2FzZSAkezJ9IGluCi0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezN9IiBcCi0gICAgICAgICAgIHwgJFhzZWQgLWUgInMlXiR7MX0lJSIgLWUgInMlXFxcXCR7Mn1cJCUlImA7OwotICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHszfSIgXAotICAgICAgICAgICB8ICRYc2VkIC1lICJzJV4kezF9JSUiIC1lICJzJSR7Mn1cJCUlImA7OwotICBlc2FjCi19Ci0KLSMgc2VkIHNjcmlwdHM6Ci1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJwotCi0jIGZ1bmNfb3B0X3NwbGl0Ci1mdW5jX29wdF9zcGxpdCAoKQotewotICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJG15X3NlZF9sb25nX29wdCJgCi0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkbXlfc2VkX2xvbmdfYXJnImAKLX0KLQotIyBmdW5jX2xvMm8gb2JqZWN0Ci1mdW5jX2xvMm8gKCkKLXsKLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkbG8ybyJgCi19Ci0KLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi1mdW5jX3hmb3JtICgpCi17Ci0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgJ3MvXC5bXi5dKiQvLmxvLydgCi19Ci0KLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLWZ1bmNfYXJpdGggKCkKLXsKLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKLX0KLQotIyBmdW5jX2xlbiBzdHJpbmcKLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLWZ1bmNfbGVuICgpCi17Ci0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLX0KLQotX0xUX0VPRgotZXNhYwotCi1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLSAgeWVzKQotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLWZ1bmNfYXBwZW5kICgpCi17Ci0gIGV2YWwgIiQxKz1cJDIiCi19Ci1fTFRfRU9GCi0gICAgOzsKLSAgKikKLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotCi0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi1mdW5jX2FwcGVuZCAoKQotewotICBldmFsICIkMT1cJCQxXCQyIgotfQotCi1fTFRfRU9GCi0gICAgOzsKLSAgZXNhYworICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCitmdW5jX2Jhc2VuYW1lICgpXAore1wKK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CiAKIAotICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAorZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKK3tcCitcICAgIGNhc2UgJHsxfSBpblwKK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorXCAgICBlc2FjXAorXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKIAotICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisKKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCitmdW5jX3N0cmlwbmFtZSAoKVwKK3tcCitcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCitcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCitcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAorXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKworCisgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCit7XAorXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCitcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorCisKKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCitmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKK3tcCitcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAorfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisKKworICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAorZnVuY19sbzJvICgpXAore1wKK1wgICAgY2FzZSAkezF9IGluXAorXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKK1wgICAgZXNhY1wKK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKworCisgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKK2Z1bmNfeGZvcm0gKClcCit7XAorICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorCisKKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAorZnVuY19hcml0aCAoKVwKK3tcCisgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAorfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKworCisgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAorZnVuY19sZW4gKClcCit7XAorICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorCitmaQorCitpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCisgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAorZnVuY19hcHBlbmQgKClcCit7XAorICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKworCisgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCitmdW5jX2FwcGVuZF9xdW90ZWQgKClcCit7XAorXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisKKworICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKK2Vsc2UKKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CitmaQorCitpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KK2ZpCisKKworICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCiAgIGNobW9kICt4ICIkb2ZpbGUiCiAKQEAgLTE0ODk3LDcgKzE3MzQ4LDcgQEAKIGFjX2NsZWFuX2ZpbGVzPSRhY19jbGVhbl9maWxlc19zYXZlCiAKIHRlc3QgJGFjX3dyaXRlX2ZhaWwgPSAwIHx8Ci0gIGFzX2ZuX2Vycm9yICJ3cml0ZSBmYWlsdXJlIGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQorICBhc19mbl9lcnJvciAkPyAid3JpdGUgZmFpbHVyZSBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKIAogCiAjIGNvbmZpZ3VyZSBpcyB3cml0aW5nIHRvIGNvbmZpZy5sb2csIGFuZCB0aGVuIGNhbGxzIGNvbmZpZy5zdGF0dXMuCkBAIC0xNDkxOCw3ICsxNzM2OSw3IEBACiAgIGV4ZWMgNT4+Y29uZmlnLmxvZwogICAjIFVzZSB8fCwgbm90ICYmLCB0byBhdm9pZCBleGl0aW5nIGZyb20gdGhlIGlmIHdpdGggJD8gPSAxLCB3aGljaAogICAjIHdvdWxkIG1ha2UgY29uZmlndXJlIGZhaWwgaWYgdGhpcyBpcyB0aGUgbGFzdCBpbnN0cnVjdGlvbi4KLSAgJGFjX2NzX3N1Y2Nlc3MgfHwgYXNfZm5fZXhpdCAkPworICAkYWNfY3Nfc3VjY2VzcyB8fCBhc19mbl9leGl0IDEKIGZpCiBpZiB0ZXN0IC1uICIkYWNfdW5yZWNvZ25pemVkX29wdHMiICYmIHRlc3QgIiRlbmFibGVfb3B0aW9uX2NoZWNraW5nIiAhPSBubzsgdGhlbgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiID4mNQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWd1cmUuYWMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZ3VyZS5hYwppbmRleCA4N2M2M2UxLi5jMTZiY2I1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZ3VyZS5hYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZ3VyZS5hYwpAQCAtMyw5ICszLDkgQEAKICMgZmlsZSBmcm9tIGxpYmZmaSAtIHNsaWdodGx5IHBhdGNoZWQgZm9yIGN0eXBlcwogIwogCi1BQ19QUkVSRVEoMi42MykKK0FDX1BSRVJFUSgyLjY4KQogCi1BQ19JTklUKFtsaWJmZmldLCBbMy4wLjEwcmMwXSwgW2h0dHA6Ly9nY2MuZ251Lm9yZy9idWdzLmh0bWxdKQorQUNfSU5JVChbbGliZmZpXSwgWzMuMC4xMV0sIFtodHRwOi8vZ2l0aHViLmNvbS9hdGdyZWVuL2xpYmZmaS9pc3N1ZXNdKQogQUNfQ09ORklHX0hFQURFUlMoW2ZmaWNvbmZpZy5oXSkKIAogQUNfQ0FOT05JQ0FMX1NZU1RFTQpAQCAtMTMsMTYgKzEzLDIyIEBACiAKIC4gJHtzcmNkaXJ9L2NvbmZpZ3VyZS5ob3N0CiAKK0FYX0VOQUJMRV9CVUlMRERJUgorCiBBTV9JTklUX0FVVE9NQUtFCiAKICMgVGhlIHNhbWUgYXMgaW4gYm9laG0tZ2MgYW5kIGxpYnN0ZGMrKy4gSGF2ZSB0byBib3Jyb3cgaXQgZnJvbSB0aGVyZS4KICMgV2UgbXVzdCBmb3JjZSBDQyB0byAvbm90LyBiZSBwcmVjaW91cyB2YXJpYWJsZXM7IG90aGVyd2lzZQogIyB0aGUgd3JvbmcsIG5vbi1tdWx0aWxpYi1hZGp1c3RlZCB2YWx1ZSB3aWxsIGJlIHVzZWQgaW4gbXVsdGlsaWJzLgogIyBBcyBhIHNpZGUgZWZmZWN0LCB3ZSBoYXZlIHRvIHN1YnN0IENGTEFHUyBvdXJzZWx2ZXMuCisjIEFsc28gc2F2ZSBhbmQgcmVzdG9yZSBDRkxBR1MsIHNpbmNlIEFDX1BST0dfQ0Mgd2lsbCBjb21lIHVwIHdpdGgKKyMgZGVmYXVsdHMgb2YgaXRzIG93biBpZiBub25lIGFyZSBwcm92aWRlZC4KIAogbTRfcmVuYW1lKFtfQUNfQVJHX1ZBUl9QUkVDSU9VU10sW3JlYWxfUFJFQ0lPVVNdKQogbTRfZGVmaW5lKFtfQUNfQVJHX1ZBUl9QUkVDSU9VU10sW10pCitzYXZlX0NGTEFHUz0kQ0ZMQUdTCiBBQ19QUk9HX0NDCitDRkxBR1M9JHNhdmVfQ0ZMQUdTCiBtNF91bmRlZmluZShbX0FDX0FSR19WQVJfUFJFQ0lPVVNdKQogbTRfcmVuYW1lKFtyZWFsX1BSRUNJT1VTXSxbX0FDX0FSR19WQVJfUFJFQ0lPVVNdKQogCkBAIC0zMyw2ICszOSwxMiBAQAogQUNfUFJPR19MSUJUT09MCiBBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCiAKK0FYX0NDX01BWE9QVAorQVhfQ0ZMQUdTX1dBUk5fQUxMCitpZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KKyAgQ0ZMQUdTPSIkQ0ZMQUdTIC1mZXhjZXB0aW9ucyIKK2ZpCisKIEFNX01BSU5UQUlORVJfTU9ERQogCiBBQ19DSEVDS19IRUFERVJTKHN5cy9tbWFuLmgpCkBAIC00Niw3ICs1OCw3IEBACiBjYXNlICIkaG9zdCIgaW4KICAgYWxwaGEqLSotKikKIAlUQVJHRVQ9QUxQSEE7IFRBUkdFVERJUj1hbHBoYTsKLQkjIFN1cHBvcnQgMTI4LWJpdCBsb25nIGRvdWJsZSwgY2hhbmdhYmxlIHZpYSBjb21tYW5kLWxpbmUgc3dpdGNoLgorCSMgU3VwcG9ydCAxMjgtYml0IGxvbmcgZG91YmxlLCBjaGFuZ2VhYmxlIHZpYSBjb21tYW5kLWxpbmUgc3dpdGNoLgogCUhBVkVfTE9OR19ET1VCTEU9J2RlZmluZWQoX19MT05HX0RPVUJMRV8xMjhfXyknCiAJOzsKIApAQCAtNzQsNyArODYsNyBAQAogCVRBUkdFVD1GUlY7IFRBUkdFVERJUj1mcnYKIAk7OwogCi0gIGhwcGEqLSotbGludXgqIHwgcGFyaXNjKi0qLWxpbnV4KikKKyAgaHBwYSotKi1saW51eCogfCBwYXJpc2MqLSotbGludXgqIHwgaHBwYSotKi1vcGVuYnNkKikKIAlUQVJHRVQ9UEFfTElOVVg7IFRBUkdFVERJUj1wYQogCTs7CiAgIGhwcGEqNjQtKi1ocHV4KikKQEAgLTg3LDEwICs5OSwxNyBAQAogICBpPzg2LSotZnJlZWJzZCogfCBpPzg2LSotb3BlbmJzZCopCiAJVEFSR0VUPVg4Nl9GUkVFQlNEOyBUQVJHRVRESVI9eDg2CiAJOzsKLSAgaT84Ni13aW4zMiogfCBpPzg2LSotY3lnd2luKiB8IGk/ODYtKi1taW5ndyopCisgIGk/ODYtd2luMzIqIHwgaT84Ni0qLWN5Z3dpbiogfCBpPzg2LSotbWluZ3cqIHwgaT84Ni0qLW9zMiogfCBpPzg2LSotaW50ZXJpeCopCiAJVEFSR0VUPVg4Nl9XSU4zMjsgVEFSR0VURElSPXg4NgotCSMgQWxsIG1pbmd3L2N5Z3dpbi93aW4zMiBidWlsZHMgcmVxdWlyZSB0aGlzIGZvciBzaGFyZWRsaWIKLQlBTV9MVExERkxBR1M9Ii1uby11bmRlZmluZWQiCisJIyBBbGwgbWluZ3cvY3lnd2luL3dpbjMyIGJ1aWxkcyByZXF1aXJlIC1uby11bmRlZmluZWQgZm9yIHNoYXJlZGxpYi4KKwkjIFdlIG11c3QgYWxzbyBjaGVjayB3aXRoX2Nyb3NzX2hvc3QgdG8gZGVjaWRlIGlmIHRoaXMgaXMgYSBuYXRpdmUKKwkjIG9yIGNyb3NzLWJ1aWxkIGFuZCBzZWxlY3Qgd2hlcmUgdG8gaW5zdGFsbCBkbGxzIGFwcHJvcHJpYXRlbHkuCisJaWYgdGVzdCAtbiAiJHdpdGhfY3Jvc3NfaG9zdCIgJiYKKwkgICB0ZXN0IHgiJHdpdGhfY3Jvc3NfaG9zdCIgIT0geCJubyI7IHRoZW4KKwkgIEFNX0xUTERGTEFHUz0nLW5vLXVuZGVmaW5lZCAtYmluZGlyICIkKHRvb2xleGVjbGliZGlyKSInOworCWVsc2UKKwkgIEFNX0xUTERGTEFHUz0nLW5vLXVuZGVmaW5lZCAtYmluZGlyICIkKGJpbmRpcikiJzsKKwlmaQogCTs7CiAgIGk/ODYtKi1kYXJ3aW4qKQogCVRBUkdFVD1YODZfREFSV0lOOyBUQVJHRVRESVI9eDg2CkBAIC0xMDIsNyArMTIxLDcgQEAKICAgICAgICAgVEFSR0VUPVg4NjsgVEFSR0VURElSPXg4NgogICAgICAgICA7OwogICBpPzg2LSotKikKLQlUQVJHRVQ9WDg2OyBUQVJHRVRESVI9eDg2CisJVEFSR0VUPVg4Nl82NDsgVEFSR0VURElSPXg4NgogCTs7CiAKICAgaWE2NCotKi0qKQpAQCAtMTE3LDMwICsxMzYsNDAgQEAKIAlUQVJHRVQ9TTY4SzsgVEFSR0VURElSPW02OGsKIAk7OwogCi0gIG1pcHMtc2dpLWlyaXg1LiogfCBtaXBzLXNnaS1pcml4Ni4qKQorICBtaXBzLXNnaS1pcml4NS4qIHwgbWlwcy1zZ2ktaXJpeDYuKiB8IG1pcHMqLSotcnRlbXMqKQogCVRBUkdFVD1NSVBTX0lSSVg7IFRBUkdFVERJUj1taXBzCiAJOzsKLSAgbWlwcyotKi1saW51eCopCisgIG1pcHMqLSotbGludXgqIHwgbWlwcyotKi1vcGVuYnNkKikKIAkjIFN1cHBvcnQgMTI4LWJpdCBsb25nIGRvdWJsZSBmb3IgTmV3QUJJLgogCUhBVkVfTE9OR19ET1VCTEU9J2RlZmluZWQoX19taXBzNjQpJwogCVRBUkdFVD1NSVBTX0lSSVg7IFRBUkdFVERJUj1taXBzCiAJOzsKIAorICBtb3hpZS0qLSopCisgICAgICAgIFRBUkdFVD1NT1hJRTsgVEFSR0VURElSPW1veGllCisJOzsKKwogICBwb3dlcnBjKi0qLWxpbnV4KiB8IHBvd2VycGMtKi1zeXN2KikKIAlUQVJHRVQ9UE9XRVJQQzsgVEFSR0VURElSPXBvd2VycGMKIAk7OworICBwb3dlcnBjLSotYW1pZ2FvcyopCisJVEFSR0VUPVBPV0VSUEM7IFRBUkdFVERJUj1wb3dlcnBjCisJOzsKICAgcG93ZXJwYy0qLWJlb3MqKQogCVRBUkdFVD1QT1dFUlBDOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7Ci0gIHBvd2VycGMtKi1kYXJ3aW4qKQorICBwb3dlcnBjLSotZGFyd2luKiB8IHBvd2VycGM2NC0qLWRhcndpbiopCiAJVEFSR0VUPVBPV0VSUENfREFSV0lOOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7CiAgIHBvd2VycGMtKi1haXgqIHwgcnM2MDAwLSotYWl4KikKIAlUQVJHRVQ9UE9XRVJQQ19BSVg7IFRBUkdFVERJUj1wb3dlcnBjCiAJOzsKLSAgcG93ZXJwYy0qLWZyZWVic2QqKQorICBwb3dlcnBjLSotZnJlZWJzZCogfCBwb3dlcnBjLSotb3BlbmJzZCopCiAJVEFSR0VUPVBPV0VSUENfRlJFRUJTRDsgVEFSR0VURElSPXBvd2VycGMKIAk7OworICBwb3dlcnBjNjQtKi1mcmVlYnNkKikKKwlUQVJHRVQ9UE9XRVJQQzsgVEFSR0VURElSPXBvd2VycGMKKwk7OwogICBwb3dlcnBjKi0qLXJ0ZW1zKikKIAlUQVJHRVQ9UE9XRVJQQzsgVEFSR0VURElSPXBvd2VycGMKIAk7OwpAQCAtMTY2LDYgKzE5NSwxNSBAQAogCiAgIHg4Nl82NC0qLWN5Z3dpbiogfCB4ODZfNjQtKi1taW5ndyopCiAJVEFSR0VUPVg4Nl9XSU42NDsgVEFSR0VURElSPXg4NgorCSMgQWxsIG1pbmd3L2N5Z3dpbi93aW4zMiBidWlsZHMgcmVxdWlyZSAtbm8tdW5kZWZpbmVkIGZvciBzaGFyZWRsaWIuCisJIyBXZSBtdXN0IGFsc28gY2hlY2sgd2l0aF9jcm9zc19ob3N0IHRvIGRlY2lkZSBpZiB0aGlzIGlzIGEgbmF0aXZlCisJIyBvciBjcm9zcy1idWlsZCBhbmQgc2VsZWN0IHdoZXJlIHRvIGluc3RhbGwgZGxscyBhcHByb3ByaWF0ZWx5LgorCWlmIHRlc3QgLW4gIiR3aXRoX2Nyb3NzX2hvc3QiICYmCisJICAgdGVzdCB4IiR3aXRoX2Nyb3NzX2hvc3QiICE9IHgibm8iOyB0aGVuCisJICBBTV9MVExERkxBR1M9Jy1uby11bmRlZmluZWQgLWJpbmRpciAiJCh0b29sZXhlY2xpYmRpcikiJzsKKwllbHNlCisJICBBTV9MVExERkxBR1M9Jy1uby11bmRlZmluZWQgLWJpbmRpciAiJChiaW5kaXIpIic7CisJZmkKIAk7OwogCiAgIHg4Nl82NC0qLSopCkBAIC0xOTEsNiArMjI5LDcgQEAKIEFNX0NPTkRJVElPTkFMKElBNjQsIHRlc3QgeCRUQVJHRVQgPSB4SUE2NCkKIEFNX0NPTkRJVElPTkFMKE0zMlIsIHRlc3QgeCRUQVJHRVQgPSB4TTMyUikKIEFNX0NPTkRJVElPTkFMKE02OEssIHRlc3QgeCRUQVJHRVQgPSB4TTY4SykKK0FNX0NPTkRJVElPTkFMKE1PWElFLCB0ZXN0IHgkVEFSR0VUID0geE1PWElFKQogQU1fQ09ORElUSU9OQUwoUE9XRVJQQywgdGVzdCB4JFRBUkdFVCA9IHhQT1dFUlBDKQogQU1fQ09ORElUSU9OQUwoUE9XRVJQQ19BSVgsIHRlc3QgeCRUQVJHRVQgPSB4UE9XRVJQQ19BSVgpCiBBTV9DT05ESVRJT05BTChQT1dFUlBDX0RBUldJTiwgdGVzdCB4JFRBUkdFVCA9IHhQT1dFUlBDX0RBUldJTikKQEAgLTIyOCwxNyArMjY3LDcgQEAKIAogQUNfQ19CSUdFTkRJQU4KIAotQUNfQ0FDSEVfQ0hFQ0soW2Fzc2VtYmxlciAuY2ZpIHBzZXVkby1vcCBzdXBwb3J0XSwKLSAgICBsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcCwgWwotICAgIGxpYmZmaV9jdl9hc19jZmlfcHNldWRvX29wPXVua25vd24KLSAgICBBQ19UUllfQ09NUElMRShbYXNtICgiLmNmaV9zdGFydHByb2Ncblx0LmNmaV9lbmRwcm9jIik7XSwsCi0JCSAgIFtsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcD15ZXNdLAotCQkgICBbbGliZmZpX2N2X2FzX2NmaV9wc2V1ZG9fb3A9bm9dKQotXSkKLWlmIHRlc3QgIngkbGliZmZpX2N2X2FzX2NmaV9wc2V1ZG9fb3AiID0geHllczsgdGhlbgotICAgIEFDX0RFRklORShIQVZFX0FTX0NGSV9QU0VVRE9fT1AsIDEsCi0JICAgICAgW0RlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyAuY2ZpXyogZGlyZWN0aXZlcy5dKQotZmkKK0dDQ19BU19DRklfUFNFVURPX09QCiAKIGlmIHRlc3QgeCRUQVJHRVQgPSB4U1BBUkM7IHRoZW4KICAgICBBQ19DQUNIRV9DSEVDSyhbYXNzZW1ibGVyIGFuZCBsaW5rZXIgc3VwcG9ydCB1bmFsaWduZWQgcGMgcmVsYXRlZCByZWxvY3NdLApAQCAtMjc0LDY0ICszMDMsMTI0IEBACiBpZiB0ZXN0IHgkVEFSR0VUID0geFg4NiB8fCB0ZXN0IHgkVEFSR0VUID0geFg4Nl9XSU4zMiB8fCB0ZXN0IHgkVEFSR0VUID0geFg4Nl82NDsgdGhlbgogICAgIEFDX0NBQ0hFX0NIRUNLKFthc3NlbWJsZXIgc3VwcG9ydHMgcGMgcmVsYXRlZCByZWxvY3NdLAogCWxpYmZmaV9jdl9hc194ODZfcGNyZWwsIFsKLQlsaWJmZmlfY3ZfYXNfeDg2X3BjcmVsPXllcworCWxpYmZmaV9jdl9hc194ODZfcGNyZWw9bm8KIAllY2hvICcudGV4dDsgZm9vOiBub3A7IC5kYXRhOyAubG9uZyBmb28tLjsgLnRleHQnID4gY29uZnRlc3QucwotCWlmICRDQyAkQ0ZMQUdTIC1jIGNvbmZ0ZXN0LnMgMj4mMSB8IGdyZXAgLWkgd2FybmluZyA+IC9kZXYvbnVsbDsgdGhlbgotCSAgICBsaWJmZmlfY3ZfYXNfeDg2X3BjcmVsPW5vCisJaWYgJENDICRDRkxBR1MgLWMgY29uZnRlc3QucyA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCisJICAgIGxpYmZmaV9jdl9hc194ODZfcGNyZWw9eWVzCiAJZmkKIAldKQogICAgIGlmIHRlc3QgIngkbGliZmZpX2N2X2FzX3g4Nl9wY3JlbCIgPSB4eWVzOyB0aGVuCiAJQUNfREVGSU5FKEhBVkVfQVNfWDg2X1BDUkVMLCAxLAogCQkgIFtEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgUEMgcmVsYXRpdmUgcmVsb2NzLl0pCiAgICAgZmkKKworICAgIEFDX0NBQ0hFX0NIRUNLKFthc3NlbWJsZXIgLmFzY2lpIHBzZXVkby1vcCBzdXBwb3J0XSwKKyAgICAgICBsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wLCBbCisgICAgICAgbGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcD11bmtub3duCisgICAgICAgIyBDaGVjayBpZiB3ZSBoYXZlIC5hc2NpaQorICAgICAgIEFDX1RSWV9DT01QSUxFKFthc20gKCIuYXNjaWkgXFwic3RyaW5nXFwiIik7XSwsCisJCSAgICAgICBbbGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcD15ZXNdLAorCQkgICAgICAgW2xpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3A9bm9dKQorICAgIF0pCisgICAgaWYgdGVzdCAieCRsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wIiA9IHh5ZXM7IHRoZW4KKyAgICAgICBBQ19ERUZJTkUoSEFWRV9BU19BU0NJSV9QU0VVRE9fT1AsIDEsCisJICAgICAgIFtEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgLmFzY2lpLl0pCisgICAgZmkKKworICAgIEFDX0NBQ0hFX0NIRUNLKFthc3NlbWJsZXIgLnN0cmluZyBwc2V1ZG8tb3Agc3VwcG9ydF0sCisgICAgICAgbGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3AsIFsKKyAgICAgICBsaWJmZmlfY3ZfYXNfc3RyaW5nX3BzZXVkb19vcD11bmtub3duCisgICAgICAgIyBDaGVjayBpZiB3ZSBoYXZlIC5zdHJpbmcKKyAgICAgICBBQ19UUllfQ09NUElMRShbYXNtICgiLnN0cmluZyBcXCJzdHJpbmdcXCIiKTtdLCwKKwkJICAgICAgIFtsaWJmZmlfY3ZfYXNfc3RyaW5nX3BzZXVkb19vcD15ZXNdLAorCQkgICAgICAgW2xpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wPW5vXSkKKyAgICBdKQorICAgIGlmIHRlc3QgIngkbGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3AiID0geHllczsgdGhlbgorICAgICAgIEFDX0RFRklORShIQVZFX0FTX1NUUklOR19QU0VVRE9fT1AsIDEsCisJICAgICAgIFtEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgLnN0cmluZy5dKQorICAgIGZpCiBmaQogCitpZiB0ZXN0IHgkVEFSR0VUID0geFg4Nl9XSU42NDsgdGhlbgorICAgIExUX1NZU19TWU1CT0xfVVNDT1JFCisgICAgaWYgdGVzdCAieCRzeXNfc3ltYm9sX3VuZGVyc2NvcmUiID0geHllczsgdGhlbgorICAgICAgICBBQ19ERUZJTkUoU1lNQk9MX1VOREVSU0NPUkUsIDEsIFtEZWZpbmUgaWYgc3ltYm9scyBhcmUgdW5kZXJzY29yZWQuXSkKKyAgICBmaQorZmkKKworCitGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFPTAKIGNhc2UgIiR0YXJnZXQiIGluCi0gICAgICotYXBwbGUtZGFyd2luMTAqIHwgKi0qLWZyZWVic2QqIHwgKi0qLW9wZW5ic2QqIHwgKi1wYy1zb2xhcmlzKikKKyAgICAgKmFybSotYXBwbGUtZGFyd2luKikKKyAgICAgICBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFPTEKKyAgICAgICBBQ19ERUZJTkUoRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSwgMSwKKyAgICAgICAgICAgICAgICAgW0Nhbm5vdCB1c2UgUFJPVF9FWEVDIG9uIHRoaXMgdGFyZ2V0LCBzbywgd2UgcmV2ZXJ0IHRvCisgICAgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmUgbWVhbnNdKQorICAgICA7OworICAgICAqLWFwcGxlLWRhcndpbjFbWzEwXV0qIHwgKi0qLWZyZWVic2QqIHwgKi0qLWtmcmVlYnNkKiB8ICotKi1vcGVuYnNkKiB8ICotcGMtc29sYXJpcyopCiAgICAgICAgQUNfREVGSU5FKEZGSV9NTUFQX0VYRUNfV1JJVCwgMSwKICAgICAgICAgICAgICAgICAgW0Nhbm5vdCB1c2UgbWFsbG9jIG9uIHRoaXMgdGFyZ2V0LCBzbywgd2UgcmV2ZXJ0IHRvCiAgICAgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmUgbWVhbnNdKQogICAgICA7OwogZXNhYworQU1fQ09ORElUSU9OQUwoRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSwgdGVzdCB4JEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgPSB4MSkKK0FDX1NVQlNUKEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUpCiAKLUFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIC5laF9mcmFtZSBzZWN0aW9uIHNob3VsZCBiZSByZWFkLW9ubHldLAotICAgIGxpYmZmaV9jdl9yb19laF9mcmFtZSwgWwotCWxpYmZmaV9jdl9yb19laF9mcmFtZT1ubwotCWVjaG8gJ2V4dGVybiB2b2lkIGZvbyAodm9pZCk7IHZvaWQgYmFyICh2b2lkKSB7IGZvbyAoKTsgZm9vICgpOyB9JyA+IGNvbmZ0ZXN0LmMKLQlpZiAkQ0MgJENGTEFHUyAtUyAtZnBpYyAtZmV4Y2VwdGlvbnMgLW8gY29uZnRlc3QucyBjb25mdGVzdC5jID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KLQkgICAgaWYgZ3JlcCAnLnNlY3Rpb24uKmVoX2ZyYW1lLioiYSInIGNvbmZ0ZXN0LnMgPiAvZGV2L251bGw7IHRoZW4KLQkJbGliZmZpX2N2X3JvX2VoX2ZyYW1lPXllcwotCSAgICBlbGlmIGdyZXAgJy5zZWN0aW9uLiplaF9mcmFtZS4qI2FsbG9jJyBjb25mdGVzdC5jIFwKLQkJIHwgZ3JlcCAtdiAnI3dyaXRlJyA+IC9kZXYvbnVsbDsgdGhlbgotCQlsaWJmZmlfY3Zfcm9fZWhfZnJhbWU9eWVzCi0JICAgIGZpCitpZiB0ZXN0IHgkVEFSR0VUID0geFg4Nl82NDsgdGhlbgorICAgIEFDX0NBQ0hFX0NIRUNLKFthc3NlbWJsZXIgc3VwcG9ydHMgdW53aW5kIHNlY3Rpb24gdHlwZV0sCisJbGliZmZpX2N2X2FzX3g4Nl82NF91bndpbmRfc2VjdGlvbl90eXBlLCBbCisJbGliZmZpX2N2X2FzX3g4Nl82NF91bndpbmRfc2VjdGlvbl90eXBlPXllcworCWVjaG8gJy5zZWN0aW9uIC5laF9mcmFtZSwiYSIsQHVud2luZCcgPiBjb25mdGVzdC5zCisJaWYgJENDICRDRkxBR1MgLWMgY29uZnRlc3QucyAyPiYxIHwgZ3JlcCAtaSB3YXJuaW5nID4gL2Rldi9udWxsOyB0aGVuCisJICAgIGxpYmZmaV9jdl9hc194ODZfNjRfdW53aW5kX3NlY3Rpb25fdHlwZT1ubwogCWZpCi0Jcm0gLWYgY29uZnRlc3QuKgotICAgIF0pCi1pZiB0ZXN0ICJ4JGxpYmZmaV9jdl9yb19laF9mcmFtZSIgPSB4eWVzOyB0aGVuCi0gICAgQUNfREVGSU5FKEhBVkVfUk9fRUhfRlJBTUUsIDEsCi0JICAgICAgW0RlZmluZSBpZiAuZWhfZnJhbWUgc2VjdGlvbnMgc2hvdWxkIGJlIHJlYWQtb25seS5dKQotICAgIEFDX0RFRklORShFSF9GUkFNRV9GTEFHUywgImEiLAotCSAgICAgIFtEZWZpbmUgdG8gdGhlIGZsYWdzIG5lZWRlZCBmb3IgdGhlIC5zZWN0aW9uIC5laF9mcmFtZSBkaXJlY3RpdmUuXSkKLWVsc2UKLSAgICBBQ19ERUZJTkUoRUhfRlJBTUVfRkxBR1MsICJhdyIsCi0JICAgICAgW0RlZmluZSB0byB0aGUgZmxhZ3MgbmVlZGVkIGZvciB0aGUgLnNlY3Rpb24gLmVoX2ZyYW1lIGRpcmVjdGl2ZS5dKQorCV0pCisgICAgaWYgdGVzdCAieCRsaWJmZmlfY3ZfYXNfeDg2XzY0X3Vud2luZF9zZWN0aW9uX3R5cGUiID0geHllczsgdGhlbgorCUFDX0RFRklORShIQVZFX0FTX1g4Nl82NF9VTldJTkRfU0VDVElPTl9UWVBFLCAxLAorCQkgIFtEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgdW53aW5kIHNlY3Rpb24gdHlwZS5dKQorICAgIGZpCiBmaQogCi1BQ19DQUNIRV9DSEVDSyhbZm9yIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSldLAotICAgIGxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGUsIFsKLQllY2hvICdpbnQgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpIGZvbyAodm9pZCkgeyByZXR1cm4gMTsgfScgPiBjb25mdGVzdC5jCi0JbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZT1ubwotCWlmIEFDX1RSWV9DT01NQU5EKCR7Q0MtY2N9IC1XZXJyb3IgLVMgY29uZnRlc3QuYyAtbyBjb25mdGVzdC5zIDE+JkFTX01FU1NBR0VfTE9HX0ZEKTsgdGhlbgotCSAgICBpZiBncmVwICdcLmhpZGRlbi4qZm9vJyBjb25mdGVzdC5zID4vZGV2L251bGw7IHRoZW4KLQkJbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZT15ZXMKLQkgICAgZmkKLQlmaQotCXJtIC1mIGNvbmZ0ZXN0LioKLSAgICBdKQotaWYgdGVzdCAkbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZSA9IHllczsgdGhlbgotICAgIEFDX0RFRklORShIQVZFX0hJRERFTl9WSVNJQklMSVRZX0FUVFJJQlVURSwgMSwKLQkgICAgICBbRGVmaW5lIGlmIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSkgaXMgc3VwcG9ydGVkLl0pCitpZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KKyAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgLmVoX2ZyYW1lIHNlY3Rpb24gc2hvdWxkIGJlIHJlYWQtb25seV0sCisgICAgICBsaWJmZmlfY3Zfcm9fZWhfZnJhbWUsIFsKKyAgCWxpYmZmaV9jdl9yb19laF9mcmFtZT1ubworICAJZWNobyAnZXh0ZXJuIHZvaWQgZm9vICh2b2lkKTsgdm9pZCBiYXIgKHZvaWQpIHsgZm9vICgpOyBmb28gKCk7IH0nID4gY29uZnRlc3QuYworICAJaWYgJENDICRDRkxBR1MgLVMgLWZwaWMgLWZleGNlcHRpb25zIC1vIGNvbmZ0ZXN0LnMgY29uZnRlc3QuYyA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCisgIAkgICAgaWYgZ3JlcCAnLnNlY3Rpb24uKmVoX2ZyYW1lLioiYSInIGNvbmZ0ZXN0LnMgPiAvZGV2L251bGw7IHRoZW4KKyAgCQlsaWJmZmlfY3Zfcm9fZWhfZnJhbWU9eWVzCisgIAkgICAgZWxpZiBncmVwICcuc2VjdGlvbi4qZWhfZnJhbWUuKiNhbGxvYycgY29uZnRlc3QuYyBcCisgIAkJIHwgZ3JlcCAtdiAnI3dyaXRlJyA+IC9kZXYvbnVsbDsgdGhlbgorICAJCWxpYmZmaV9jdl9yb19laF9mcmFtZT15ZXMKKyAgCSAgICBmaQorICAJZmkKKyAgCXJtIC1mIGNvbmZ0ZXN0LioKKyAgICAgIF0pCisgIGlmIHRlc3QgIngkbGliZmZpX2N2X3JvX2VoX2ZyYW1lIiA9IHh5ZXM7IHRoZW4KKyAgICAgIEFDX0RFRklORShIQVZFX1JPX0VIX0ZSQU1FLCAxLAorICAJICAgICAgW0RlZmluZSBpZiAuZWhfZnJhbWUgc2VjdGlvbnMgc2hvdWxkIGJlIHJlYWQtb25seS5dKQorICAgICAgQUNfREVGSU5FKEVIX0ZSQU1FX0ZMQUdTLCAiYSIsCisgIAkgICAgICBbRGVmaW5lIHRvIHRoZSBmbGFncyBuZWVkZWQgZm9yIHRoZSAuc2VjdGlvbiAuZWhfZnJhbWUgZGlyZWN0aXZlLiAgXSkKKyAgZWxzZQorICAgICAgQUNfREVGSU5FKEVIX0ZSQU1FX0ZMQUdTLCAiYXciLAorICAJICAgICAgW0RlZmluZSB0byB0aGUgZmxhZ3MgbmVlZGVkIGZvciB0aGUgLnNlY3Rpb24gLmVoX2ZyYW1lIGRpcmVjdGl2ZS4gIF0pCisgIGZpCisKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpXSwKKyAgICAgIGxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGUsIFsKKyAgCWVjaG8gJ2ludCBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSkgZm9vICh2b2lkKSB7IHJldHVybiAxICA7IH0nID4gY29uZnRlc3QuYworICAJbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZT1ubworICAJaWYgQUNfVFJZX0NPTU1BTkQoJHtDQy1jY30gLVdlcnJvciAtUyBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0LnMgMT4mQVNfTUVTU0FHRV9MT0dfRkQpOyB0aGVuCisgIAkgICAgaWYgZ3JlcCAnXC5oaWRkZW4uKmZvbycgY29uZnRlc3QucyA+L2Rldi9udWxsOyB0aGVuCisgIAkJbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZT15ZXMKKyAgCSAgICBmaQorICAJZmkKKyAgCXJtIC1mIGNvbmZ0ZXN0LioKKyAgICAgIF0pCisgIGlmIHRlc3QgJGxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGUgPSB5ZXM7IHRoZW4KKyAgICAgIEFDX0RFRklORShIQVZFX0hJRERFTl9WSVNJQklMSVRZX0FUVFJJQlVURSwgMSwKKyAgCSAgICAgIFtEZWZpbmUgaWYgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKSBpcyBzdXBwb3J0ZWQuXSkKKyAgZmkKIGZpCiAKIEFIX0JPVFRPTShbCkBAIC0zNjAsNiArNDQ5LDcgQEAKICAgaWYgdGVzdCAiJGVuYWJsZV9kZWJ1ZyIgPSAieWVzIjsgdGhlbgogICAgIEFDX0RFRklORShGRklfREVCVUcsIDEsIFtEZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCBleHRyYSBkZWJ1Z2dpbmcuXSkKICAgZmkpCitBTV9DT05ESVRJT05BTChGRklfREVCVUcsIHRlc3QgIiRlbmFibGVfZGVidWciID0gInllcyIpCiAKIEFDX0FSR19FTkFCTEUoc3RydWN0cywKIFsgIC0tZGlzYWJsZS1zdHJ1Y3RzICAgICAgIG9taXQgY29kZSBmb3Igc3RydWN0IHN1cHBvcnRdLApAQCAtMzc5LDIxICs0NjksMjUgQEAKICAgICBBQ19ERUZJTkUoVVNJTkdfUFVSSUZZLCAxLCBbRGVmaW5lIHRoaXMgaWYgeW91IGFyZSB1c2luZyBQdXJpZnkgYW5kIHdhbnQgdG8gc3VwcHJlc3Mgc3B1cmlvdXMgbWVzc2FnZXMuXSkKICAgZmkpCiAKLWlmIHRlc3QgLW4gIiR3aXRoX2Nyb3NzX2hvc3QiICYmCi0gICB0ZXN0IHgiJHdpdGhfY3Jvc3NfaG9zdCIgIT0geCJubyI7IHRoZW4KLSAgdG9vbGV4ZWNkaXI9JyQoZXhlY19wcmVmaXgpLyQodGFyZ2V0X2FsaWFzKScKLSAgdG9vbGV4ZWNsaWJkaXI9JyQodG9vbGV4ZWNkaXIpL2xpYicKLWVsc2UKLSAgdG9vbGV4ZWNkaXI9JyQobGliZGlyKS9nY2MtbGliLyQodGFyZ2V0X2FsaWFzKScKLSAgdG9vbGV4ZWNsaWJkaXI9JyQobGliZGlyKScKKyMgVGhlc2UgdmFyaWFibGVzIGFyZSBvbmx5IGV2ZXIgdXNlZCB3aGVuIHdlIGNyb3NzLWJ1aWxkIHRvIFg4Nl9XSU4zMi4KKyMgQW5kIHdlIG9ubHkgc3VwcG9ydCB0aGlzIHdpdGggR0NDLCBzby4uLgoraWYgdGVzdCB4IiRHQ0MiICE9IHgibm8iOyB0aGVuCisgIGlmIHRlc3QgLW4gIiR3aXRoX2Nyb3NzX2hvc3QiICYmCisgICAgIHRlc3QgeCIkd2l0aF9jcm9zc19ob3N0IiAhPSB4Im5vIjsgdGhlbgorICAgIHRvb2xleGVjZGlyPSckKGV4ZWNfcHJlZml4KS8kKHRhcmdldF9hbGlhcyknCisgICAgdG9vbGV4ZWNsaWJkaXI9JyQodG9vbGV4ZWNkaXIpL2xpYicKKyAgZWxzZQorICAgIHRvb2xleGVjZGlyPSckKGxpYmRpcikvZ2NjLWxpYi8kKHRhcmdldF9hbGlhcyknCisgICAgdG9vbGV4ZWNsaWJkaXI9JyQobGliZGlyKScKKyAgZmkKKyAgbXVsdGlfb3NfZGlyZWN0b3J5PWAkQ0MgLXByaW50LW11bHRpLW9zLWRpcmVjdG9yeWAKKyAgY2FzZSAkbXVsdGlfb3NfZGlyZWN0b3J5IGluCisgICAgLikgOzsgIyBBdm9pZCB0cmFpbGluZyAvLgorICAgICopIHRvb2xleGVjbGliZGlyPSR0b29sZXhlY2xpYmRpci8kbXVsdGlfb3NfZGlyZWN0b3J5IDs7CisgIGVzYWMKKyAgQUNfU1VCU1QodG9vbGV4ZWNkaXIpCisgIEFDX1NVQlNUKHRvb2xleGVjbGliZGlyKQogZmkKLW11bHRpX29zX2RpcmVjdG9yeT1gJENDIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgCi1jYXNlICRtdWx0aV9vc19kaXJlY3RvcnkgaW4KLSAgLikgOzsgIyBBdm9pZCB0cmFpbGluZyAvLgotICAqKSB0b29sZXhlY2xpYmRpcj0kdG9vbGV4ZWNsaWJkaXIvJG11bHRpX29zX2RpcmVjdG9yeSA7OwotZXNhYwotQUNfU1VCU1QodG9vbGV4ZWNkaXIpCi1BQ19TVUJTVCh0b29sZXhlY2xpYmRpcikKIAogaWYgdGVzdCAiJHttdWx0aWxpYn0iID0gInllcyI7IHRoZW4KICAgbXVsdGlsaWJfYXJnPSItLWVuYWJsZS1tdWx0aWxpYiIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZGVwY29tcCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZGVwY29tcAppbmRleCBjYTVlYTRlLi5kZjhlZWE3IDEwMDc1NQotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RlcGNvbXAKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kZXBjb21wCkBAIC0xLDEwICsxLDEwIEBACiAjISAvYmluL3NoCiAjIGRlcGNvbXAgLSBjb21waWxlIGEgcHJvZ3JhbSBnZW5lcmF0aW5nIGRlcGVuZGVuY2llcyBhcyBzaWRlLWVmZmVjdHMKIAotc2NyaXB0dmVyc2lvbj0yMDA2LTEwLTE1LjE4CitzY3JpcHR2ZXJzaW9uPTIwMDktMDQtMjguMjE7ICMgVVRDCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2IEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDkgRnJlZQorIyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTE3LDkgKzE3LDcgQEAKICMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIAogIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCi0jIDAyMTEwLTEzMDEsIFVTQS4KKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKICMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQogIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKQEAgLTg3LDYgKzg1LDE1IEBACiAgICBkZXBtb2RlPWRhc2htc3Rkb3V0CiBmaQogCitjeWdwYXRoX3U9ImN5Z3BhdGggLXUgLWYgLSIKK2lmIHRlc3QgIiRkZXBtb2RlIiA9IG1zdmNtc3lzOyB0aGVuCisgICAjIFRoaXMgaXMganVzdCBsaWtlIG1zdmlzdWFsY3BwIGJ1dCB3L28gY3lncGF0aCB0cmFuc2xhdGlvbi4KKyAgICMgSnVzdCBjb252ZXJ0IHRoZSBiYWNrc2xhc2gtZXNjYXBlZCBiYWNrc2xhc2hlcyB0byBzaW5nbGUgZm9yd2FyZAorICAgIyBzbGFzaGVzIHRvIHNhdGlzZnkgZGVwZW5kLm00CisgICBjeWdwYXRoX3U9InNlZCBzLFxcXFxcXFxcLC8sZyIKKyAgIGRlcG1vZGU9bXN2aXN1YWxjcHAKK2ZpCisKIGNhc2UgIiRkZXBtb2RlIiBpbgogZ2NjMykKICMjIGdjYyAzIGltcGxlbWVudHMgZGVwZW5kZW5jeSB0cmFja2luZyB0aGF0IGRvZXMgZXhhY3RseSB3aGF0CkBAIC0xOTIsMTQgKzE5OSwxNCBAQAogJyA8ICIkdG1wZGVwZmlsZSIgXAogICAgIHwgc2VkIC1lICdzL14uKlwubzovLycgLWUgJ3MvIy4qJC8vJyAtZSAnL14kLyBkJyB8IFwKICAgICB0ciAnCi0nICcgJyA+PiAkZGVwZmlsZQotICAgIGVjaG8gPj4gJGRlcGZpbGUKKycgJyAnID4+ICIkZGVwZmlsZSIKKyAgICBlY2hvID4+ICIkZGVwZmlsZSIKIAogICAgICMgVGhlIHNlY29uZCBwYXNzIGdlbmVyYXRlcyBhIGR1bW15IGVudHJ5IGZvciBlYWNoIGhlYWRlciBmaWxlLgogICAgIHRyICcgJyAnCiAnIDwgIiR0bXBkZXBmaWxlIiBcCiAgICB8IHNlZCAtZSAncy9eLipcLm86Ly8nIC1lICdzLyMuKiQvLycgLWUgJy9eJC8gZCcgLWUgJ3MvJC86LycgXAotICAgPj4gJGRlcGZpbGUKKyAgID4+ICIkZGVwZmlsZSIKICAgZWxzZQogICAgICMgVGhlIHNvdXJjZWZpbGUgZG9lcyBub3QgY29udGFpbiBhbnkgZGVwZW5kZW5jaWVzLCBzbyBqdXN0CiAgICAgIyBzdG9yZSBhIGR1bW15IGNvbW1lbnQgbGluZSwgdG8gYXZvaWQgZXJyb3JzIHdpdGggdGhlIE1ha2VmaWxlCkBAIC0yMTUsMzQgKzIyMiwzOSBAQAogICAjIGN1cnJlbnQgZGlyZWN0b3J5LiAgQWxzbywgdGhlIEFJWCBjb21waWxlciBwdXRzIGAkb2JqZWN0OicgYXQgdGhlCiAgICMgc3RhcnQgb2YgZWFjaCBsaW5lOyAkb2JqZWN0IGRvZXNuJ3QgaGF2ZSBkaXJlY3RvcnkgaW5mb3JtYXRpb24uCiAgICMgVmVyc2lvbiA2IHVzZXMgdGhlIGRpcmVjdG9yeSBpbiBib3RoIGNhc2VzLgotICBzdHJpcHBlZD1gZWNobyAiJG9iamVjdCIgfCBzZWQgJ3MvXCguKlwpXC4uKiQvXDEvJ2AKLSAgdG1wZGVwZmlsZT0iJHN0cmlwcGVkLnUiCisgIGRpcj1gZWNobyAiJG9iamVjdCIgfCBzZWQgLWUgJ3N8L1teL10qJHwvfCdgCisgIHRlc3QgIngkZGlyIiA9ICJ4JG9iamVjdCIgJiYgZGlyPQorICBiYXNlPWBlY2hvICIkb2JqZWN0IiB8IHNlZCAtZSAnc3xeLiovfHwnIC1lICdzL1wubyQvLycgLWUgJ3MvXC5sbyQvLydgCiAgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgorICAgIHRtcGRlcGZpbGUxPSRkaXIkYmFzZS51CisgICAgdG1wZGVwZmlsZTI9JGJhc2UudQorICAgIHRtcGRlcGZpbGUzPSRkaXIubGlicy8kYmFzZS51CiAgICAgIiRAIiAtV2MsLU0KICAgZWxzZQorICAgIHRtcGRlcGZpbGUxPSRkaXIkYmFzZS51CisgICAgdG1wZGVwZmlsZTI9JGRpciRiYXNlLnUKKyAgICB0bXBkZXBmaWxlMz0kZGlyJGJhc2UudQogICAgICIkQCIgLU0KICAgZmkKICAgc3RhdD0kPwogCi0gIGlmIHRlc3QgLWYgIiR0bXBkZXBmaWxlIjsgdGhlbiA6Ci0gIGVsc2UKLSAgICBzdHJpcHBlZD1gZWNobyAiJHN0cmlwcGVkIiB8IHNlZCAncyxeLiovLCwnYAotICAgIHRtcGRlcGZpbGU9IiRzdHJpcHBlZC51IgotICBmaQotCiAgIGlmIHRlc3QgJHN0YXQgLWVxIDA7IHRoZW4gOgogICBlbHNlCi0gICAgcm0gLWYgIiR0bXBkZXBmaWxlIgorICAgIHJtIC1mICIkdG1wZGVwZmlsZTEiICIkdG1wZGVwZmlsZTIiICIkdG1wZGVwZmlsZTMiCiAgICAgZXhpdCAkc3RhdAogICBmaQogCisgIGZvciB0bXBkZXBmaWxlIGluICIkdG1wZGVwZmlsZTEiICIkdG1wZGVwZmlsZTIiICIkdG1wZGVwZmlsZTMiCisgIGRvCisgICAgdGVzdCAtZiAiJHRtcGRlcGZpbGUiICYmIGJyZWFrCisgIGRvbmUKICAgaWYgdGVzdCAtZiAiJHRtcGRlcGZpbGUiOyB0aGVuCi0gICAgb3V0bmFtZT0iJHN0cmlwcGVkLm8iCiAgICAgIyBFYWNoIGxpbmUgaXMgb2YgdGhlIGZvcm0gYGZvby5vOiBkZXBlbmRlbnQuaCcuCiAgICAgIyBEbyB0d28gcGFzc2VzLCBvbmUgdG8ganVzdCBjaGFuZ2UgdGhlc2UgdG8KICAgICAjIGAkb2JqZWN0OiBkZXBlbmRlbnQuaCcgYW5kIG9uZSB0byBzaW1wbHkgYGRlcGVuZGVudC5oOicuCi0gICAgc2VkIC1lICJzLF4kb3V0bmFtZTosJG9iamVjdCA6LCIgPCAiJHRtcGRlcGZpbGUiID4gIiRkZXBmaWxlIgotICAgIHNlZCAtZSAicyxeJG91dG5hbWU6IFwoLipcKSQsXDE6LCIgPCAiJHRtcGRlcGZpbGUiID4+ICIkZGVwZmlsZSIKKyAgICBzZWQgLWUgInMsXi4qXC5bYS16XSo6LCRvYmplY3Q6LCIgPCAiJHRtcGRlcGZpbGUiID4gIiRkZXBmaWxlIgorICAgICMgVGhhdCdzIGEgdGFiIGFuZCBhIHNwYWNlIGluIHRoZSBbXS4KKyAgICBzZWQgLWUgJ3MsXi4qXC5bYS16XSo6WwkgXSosLCcgLWUgJ3MsJCw6LCcgPCAiJHRtcGRlcGZpbGUiID4+ICIkZGVwZmlsZSIKICAgZWxzZQogICAgICMgVGhlIHNvdXJjZWZpbGUgZG9lcyBub3QgY29udGFpbiBhbnkgZGVwZW5kZW5jaWVzLCBzbyBqdXN0CiAgICAgIyBzdG9yZSBhIGR1bW15IGNvbW1lbnQgbGluZSwgdG8gYXZvaWQgZXJyb3JzIHdpdGggdGhlIE1ha2VmaWxlCkBAIC0zMjMsNyArMzM1LDEyIEBACiAgIGlmIHRlc3QgLWYgIiR0bXBkZXBmaWxlIjsgdGhlbgogICAgIHNlZCAtZSAicyxeLipcLlthLXpdKjosJG9iamVjdDosIiAiJHRtcGRlcGZpbGUiID4gIiRkZXBmaWxlIgogICAgICMgQWRkIGBkZXBlbmRlbnQuaDonIGxpbmVzLgotICAgIHNlZCAtbmUgJzIsJHs7IHMvXiAqLy87IHMvIFxcKiQvLzsgcy8kLzovOyBwO30nICIkdG1wZGVwZmlsZSIgPj4gIiRkZXBmaWxlIgorICAgIHNlZCAtbmUgJzIsJHsKKwkgICAgICAgcy9eICovLworCSAgICAgICBzLyBcXCokLy8KKwkgICAgICAgcy8kLzovCisJICAgICAgIHAKKwkgICAgIH0nICIkdG1wZGVwZmlsZSIgPj4gIiRkZXBmaWxlIgogICBlbHNlCiAgICAgZWNobyAiI2R1bW15IiA+ICIkZGVwZmlsZSIKICAgZmkKQEAgLTM5OSw3ICs0MTYsNyBAQAogCiAgICMgUmVtb3ZlIHRoZSBjYWxsIHRvIExpYnRvb2wuCiAgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgotICAgIHdoaWxlIHRlc3QgJDEgIT0gJy0tbW9kZT1jb21waWxlJzsgZG8KKyAgICB3aGlsZSB0ZXN0ICJYJDEiICE9ICdYLS1tb2RlPWNvbXBpbGUnOyBkbwogICAgICAgc2hpZnQKICAgICBkb25lCiAgICAgc2hpZnQKQEAgLTQ1MCwzMiArNDY3LDM5IEBACiAgICIkQCIgfHwgZXhpdCAkPwogICAjIFJlbW92ZSBhbnkgTGlidG9vbCBjYWxsCiAgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgotICAgIHdoaWxlIHRlc3QgJDEgIT0gJy0tbW9kZT1jb21waWxlJzsgZG8KKyAgICB3aGlsZSB0ZXN0ICJYJDEiICE9ICdYLS1tb2RlPWNvbXBpbGUnOyBkbwogICAgICAgc2hpZnQKICAgICBkb25lCiAgICAgc2hpZnQKICAgZmkKICAgIyBYIG1ha2VkZXBlbmQKICAgc2hpZnQKLSAgY2xlYXJlZD1ubwotICBmb3IgYXJnIGluICIkQCI7IGRvCisgIGNsZWFyZWQ9bm8gZWF0PW5vCisgIGZvciBhcmcKKyAgZG8KICAgICBjYXNlICRjbGVhcmVkIGluCiAgICAgbm8pCiAgICAgICBzZXQgIiI7IHNoaWZ0CiAgICAgICBjbGVhcmVkPXllcyA7OwogICAgIGVzYWMKKyAgICBpZiB0ZXN0ICRlYXQgPSB5ZXM7IHRoZW4KKyAgICAgIGVhdD1ubworICAgICAgY29udGludWUKKyAgICBmaQogICAgIGNhc2UgIiRhcmciIGluCiAgICAgLUQqfC1JKikKICAgICAgIHNldCBmbm9yZCAiJEAiICIkYXJnIjsgc2hpZnQgOzsKICAgICAjIFN0cmlwIGFueSBvcHRpb24gdGhhdCBtYWtlZGVwZW5kIG1heSBub3QgdW5kZXJzdGFuZC4gIFJlbW92ZQogICAgICMgdGhlIG9iamVjdCB0b28sIG90aGVyd2lzZSBtYWtlZGVwZW5kIHdpbGwgcGFyc2UgaXQgYXMgYSBzb3VyY2UgZmlsZS4KKyAgICAtYXJjaCkKKyAgICAgIGVhdD15ZXMgOzsKICAgICAtKnwkb2JqZWN0KQogICAgICAgOzsKICAgICAqKQogICAgICAgc2V0IGZub3JkICIkQCIgIiRhcmciOyBzaGlmdCA7OwogICAgIGVzYWMKICAgZG9uZQotICBvYmpfc3VmZml4PSJgZWNobyAkb2JqZWN0IHwgc2VkICdzL14uKlwuLy4vJ2AiCisgIG9ial9zdWZmaXg9YGVjaG8gIiRvYmplY3QiIHwgc2VkICdzL14uKlwuLy4vJ2AKICAgdG91Y2ggIiR0bXBkZXBmaWxlIgogICAke01BS0VERVBFTkQtbWFrZWRlcGVuZH0gLW8iJG9ial9zdWZmaXgiIC1mIiR0bXBkZXBmaWxlIiAiJEAiCiAgIHJtIC1mICIkZGVwZmlsZSIKQEAgLTQ5NSw3ICs1MTksNyBAQAogCiAgICMgUmVtb3ZlIHRoZSBjYWxsIHRvIExpYnRvb2wuCiAgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgotICAgIHdoaWxlIHRlc3QgJDEgIT0gJy0tbW9kZT1jb21waWxlJzsgZG8KKyAgICB3aGlsZSB0ZXN0ICJYJDEiICE9ICdYLS1tb2RlPWNvbXBpbGUnOyBkbwogICAgICAgc2hpZnQKICAgICBkb25lCiAgICAgc2hpZnQKQEAgLTUzMywxMyArNTU3LDI3IEBACiAKIG1zdmlzdWFsY3BwKQogICAjIEltcG9ydGFudCBub3RlOiBpbiBvcmRlciB0byBzdXBwb3J0IHRoaXMgbW9kZSwgYSBjb21waWxlciAqbXVzdCoKLSAgIyBhbHdheXMgd3JpdGUgdGhlIHByZXByb2Nlc3NlZCBmaWxlIHRvIHN0ZG91dCwgcmVnYXJkbGVzcyBvZiAtbywKLSAgIyBiZWNhdXNlIHdlIG11c3QgdXNlIC1vIHdoZW4gcnVubmluZyBsaWJ0b29sLgorICAjIGFsd2F5cyB3cml0ZSB0aGUgcHJlcHJvY2Vzc2VkIGZpbGUgdG8gc3Rkb3V0LgogICAiJEAiIHx8IGV4aXQgJD8KKworICAjIFJlbW92ZSB0aGUgY2FsbCB0byBMaWJ0b29sLgorICBpZiB0ZXN0ICIkbGlidG9vbCIgPSB5ZXM7IHRoZW4KKyAgICB3aGlsZSB0ZXN0ICJYJDEiICE9ICdYLS1tb2RlPWNvbXBpbGUnOyBkbworICAgICAgc2hpZnQKKyAgICBkb25lCisgICAgc2hpZnQKKyAgZmkKKwogICBJRlM9IiAiCiAgIGZvciBhcmcKICAgZG8KICAgICBjYXNlICIkYXJnIiBpbgorICAgIC1vKQorICAgICAgc2hpZnQKKyAgICAgIDs7CisgICAgJG9iamVjdCkKKyAgICAgIHNoaWZ0CisgICAgICA7OwogICAgICItR20ifCIvR20ifCItR2kifCIvR2kifCItWkkifCIvWkkiKQogCXNldCBmbm9yZCAiJEAiCiAJc2hpZnQKQEAgLTU1MiwxNiArNTkwLDIzIEBACiAJOzsKICAgICBlc2FjCiAgIGRvbmUKLSAgIiRAIiAtRSB8Ci0gIHNlZCAtbiAnL14jbGluZSBbMC05XVswLTldKiAiXChbXiJdKlwpIi8gczo6ZWNobyAiYGN5Z3BhdGggLXUgXFwiXDFcXCJgIjpwJyB8IHNvcnQgfCB1bmlxID4gIiR0bXBkZXBmaWxlIgorICAiJEAiIC1FIDI+L2Rldi9udWxsIHwKKyAgc2VkIC1uICcvXiNsaW5lIFswLTldWzAtOV0qICJcKFteIl0qXCkiLyBzOjpcMTpwJyB8ICRjeWdwYXRoX3UgfCBzb3J0IC11ID4gIiR0bXBkZXBmaWxlIgogICBybSAtZiAiJGRlcGZpbGUiCiAgIGVjaG8gIiRvYmplY3QgOiBcXCIgPiAiJGRlcGZpbGUiCi0gIC4gIiR0bXBkZXBmaWxlIiB8IHNlZCAncyUgJVxcICVnJyB8IHNlZCAtbiAnL15cKC4qXCkkLyBzOjoJXDEgXFw6cCcgPj4gIiRkZXBmaWxlIgorICBzZWQgPCAiJHRtcGRlcGZpbGUiIC1uIC1lICdzJSAlXFwgJWcnIC1lICcvXlwoLipcKSQvIHM6OglcMSBcXDpwJyA+PiAiJGRlcGZpbGUiCiAgIGVjaG8gIgkiID4+ICIkZGVwZmlsZSIKLSAgLiAiJHRtcGRlcGZpbGUiIHwgc2VkICdzJSAlXFwgJWcnIHwgc2VkIC1uICcvXlwoLipcKSQvIHM6OlwxXDo6cCcgPj4gIiRkZXBmaWxlIgorICBzZWQgPCAiJHRtcGRlcGZpbGUiIC1uIC1lICdzJSAlXFwgJWcnIC1lICcvXlwoLipcKSQvIHM6OlwxXDo6cCcgPj4gIiRkZXBmaWxlIgogICBybSAtZiAiJHRtcGRlcGZpbGUiCiAgIDs7CiAKK21zdmNtc3lzKQorICAjIFRoaXMgY2FzZSBleGlzdHMgb25seSB0byBsZXQgZGVwZW5kLm00IGRvIGl0cyB3b3JrLiAgSXQgd29ya3MgYnkKKyAgIyBsb29raW5nIGF0IHRoZSB0ZXh0IG9mIHRoaXMgc2NyaXB0LiAgVGhpcyBjYXNlIHdpbGwgbmV2ZXIgYmUgcnVuLAorICAjIHNpbmNlIGl0IGlzIGNoZWNrZWQgZm9yIGFib3ZlLgorICBleGl0IDEKKyAgOzsKKwogbm9uZSkKICAgZXhlYyAiJEAiCiAgIDs7CkBAIC01ODAsNSArNjI1LDYgQEAKICMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQogIyB0aW1lLXN0YW1wLXN0YXJ0OiAic2NyaXB0dmVyc2lvbj0iCiAjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAyZC4lMDJIIgotIyB0aW1lLXN0YW1wLWVuZDogIiQiCisjIHRpbWUtc3RhbXAtdGltZS16b25lOiAiVVRDIgorIyB0aW1lLXN0YW1wLWVuZDogIjsgIyBVVEMiCiAjIEVuZDoKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL2xpYmZmaS5pbmZvIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2MvbGliZmZpLmluZm8KaW5kZXggODk2YTVlYy4uNDAyZjc2MCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2MvbGliZmZpLmluZm8KKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2MvbGliZmZpLmluZm8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2MvbGliZmZpLnRleGkgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9saWJmZmkudGV4aQppbmRleCA5ZmE1YjE3Li5mMGU2NTE3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9saWJmZmkudGV4aQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9saWJmZmkudGV4aQpAQCAtMTksNyArMTksNyBAQAogVGhpcyBtYW51YWwgaXMgZm9yIExpYmZmaSwgYSBwb3J0YWJsZSBmb3JlaWduLWZ1bmN0aW9uIGludGVyZmFjZQogbGlicmFyeS4KIAotQ29weXJpZ2h0IEBjb3B5cmlnaHR7fSAyMDA4LCAyMDEwIFJlZCBIYXQsIEluYy4KK0NvcHlyaWdodCBAY29weXJpZ2h0e30gMjAwOCwgMjAxMCwgMjAxMSBSZWQgSGF0LCBJbmMuCiAKIEBxdW90YXRpb24KIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhpcyBkb2N1bWVudApAQCAtMTMzLDggKzEzMyw2IEBACiB5b3Ugd2FudC4gIEByZWZ7TXVsdGlwbGUgQUJJc30gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKIEB2YXJ7bmFyZ3N9IGlzIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHRoYXQgdGhpcyBmdW5jdGlvbiBhY2NlcHRzLgotQHNhbXB7bGliZmZpfSBkb2VzIG5vdCB5ZXQgaGFuZGxlIHZhcmFyZ3MgZnVuY3Rpb25zOyBzZWUgQHJlZntNaXNzaW5nCi1GZWF0dXJlc30gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKIEB2YXJ7cnR5cGV9IGlzIGEgcG9pbnRlciB0byBhbiBAY29kZXtmZmlfdHlwZX0gc3RydWN0dXJlIHRoYXQKIGRlc2NyaWJlcyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uLiAgQHhyZWZ7VHlwZXN9LgpAQCAtMTUwLDYgKzE0OCwzMCBAQAogaXMgaW52YWxpZC4KIEBlbmQgZGVmdW4KIAorSWYgdGhlIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBpcyB2YXJpYWRpYyAodmFyYXJncykgdGhlbgorQGNvZGV7ZmZpX3ByZXBfY2lmX3Zhcn0gbXVzdCBiZSB1c2VkIGluc3RlYWQgb2YgQGNvZGV7ZmZpX3ByZXBfY2lmfS4KKworQGZpbmRleCBmZmlfcHJlcF9jaWZfdmFyCitAZGVmdW4gZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWZfdmFyIChmZmlfY2lmICpAdmFye2NpZn0sIGZmaV9hYmkgdmFye2FiaX0sIHVuc2lnbmVkIGludCBAdmFye25maXhlZGFyZ3N9LCB1bnNpZ25lZCBpbnQgdmFye250b3RhbGFyZ3N9LCBmZmlfdHlwZSAqQHZhcntydHlwZX0sIGZmaV90eXBlICoqQHZhcnthcmd0eXBlc30pCitUaGlzIGluaXRpYWxpemVzIEB2YXJ7Y2lmfSBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIHBhcmFtZXRlcnMgZm9yCithIGNhbGwgdG8gYSB2YXJpYWRpYyBmdW5jdGlvbi4gIEluIGdlbmVyYWwgaXQncyBvcGVyYXRpb24gaXMgdGhlCitzYW1lIGFzIGZvciBAY29kZXtmZmlfcHJlcF9jaWZ9IGV4Y2VwdCB0aGF0OgorCitAdmFye25maXhlZGFyZ3N9IGlzIHRoZSBudW1iZXIgb2YgZml4ZWQgYXJndW1lbnRzLCBwcmlvciB0byBhbnkKK3ZhcmlhZGljIGFyZ3VtZW50cy4gIEl0IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uCisKK0B2YXJ7bnRvdGFsYXJnc30gdGhlIHRvdGFsIG51bWJlciBvZiBhcmd1bWVudHMsIGluY2x1ZGluZyB2YXJpYWRpYworYW5kIGZpeGVkIGFyZ3VtZW50cy4KKworTm90ZSB0aGF0LCBkaWZmZXJlbnQgY2lmJ3MgbXVzdCBiZSBwcmVwcGVkIGZvciBjYWxscyB0byB0aGUgc2FtZQorZnVuY3Rpb24gd2hlbiBkaWZmZXJlbnQgbnVtYmVycyBvZiBhcmd1bWVudHMgYXJlIHBhc3NlZC4KKworQWxzbyBub3RlIHRoYXQgYSBjYWxsIHRvIEBjb2Rle2ZmaV9wcmVwX2NpZl92YXJ9IHdpdGgKK0B2YXJ7bmZpeGVkYXJnc309QHZhcntub3RvdGFsYXJnc30gaXMgTk9UIGVxdWl2YWxlbnQgdG8gYSBjYWxsIHRvCitAY29kZXtmZmlfcHJlcF9jaWZ9LgorCitAZW5kIGRlZnVuCisKIAogVG8gY2FsbCBhIGZ1bmN0aW9uIHVzaW5nIGFuIGluaXRpYWxpemVkIEBjb2Rle2ZmaV9jaWZ9LCB1c2UgdGhlCiBAY29kZXtmZmlfY2FsbH0gZnVuY3Rpb246CkBAIC0xNzEsNyArMTkzLDkgQEAKIEB2YXJ7YXZhbHVlc30gaXMgYSB2ZWN0b3Igb2YgQGNvZGV7dm9pZCAqfSBwb2ludGVycyB0aGF0IHBvaW50IHRvIHRoZQogbWVtb3J5IGxvY2F0aW9ucyBob2xkaW5nIHRoZSBhcmd1bWVudCB2YWx1ZXMgZm9yIGEgY2FsbC4gIElmIEB2YXJ7Y2lmfQogZGVjbGFyZXMgdGhhdCB0aGUgZnVuY3Rpb24gaGFzIG5vIGFyZ3VtZW50cyAoaS5lLiwgQHZhcntuYXJnc30gd2FzIDApLAotdGhlbiBAdmFye2F2YWx1ZXN9IGlzIGlnbm9yZWQuCit0aGVuIEB2YXJ7YXZhbHVlc30gaXMgaWdub3JlZC4gIE5vdGUgdGhhdCBhcmd1bWVudCB2YWx1ZXMgbWF5IGJlCittb2RpZmllZCBieSB0aGUgY2FsbGVlIChmb3IgaW5zdGFuY2UsIHN0cnVjdHMgcGFzc2VkIGJ5IHZhbHVlKTsgdGhlCitidXJkZW4gb2YgY29weWluZyBwYXNzLWJ5LXZhbHVlIGFyZ3VtZW50cyBpcyBwbGFjZWQgb24gdGhlIGNhbGxlci4KIEBlbmQgZGVmdW4KIAogCkBAIC00MzgsNyArNDYyLDcgQEAKIGhlYXAuICBNZW1vcnkgbWFuYWdlbWVudCBmb3IgY2xvc3VyZXMgaXMgaGFuZGxlZCBieSBhIHBhaXIgb2YKIGZ1bmN0aW9uczoKIAotQGZpbmRleCBmZmlfY2xvc3VyZV9hbGxvY2EKK0BmaW5kZXggZmZpX2Nsb3N1cmVfYWxsb2MKIEBkZWZ1biB2b2lkICpmZmlfY2xvc3VyZV9hbGxvYyAoc2l6ZV90IEB2YXJ7c2l6ZX0sIHZvaWQgKipAdmFye2NvZGV9KQogQWxsb2NhdGUgYSBjaHVuayBvZiBtZW1vcnkgaG9sZGluZyBAdmFye3NpemV9IGJ5dGVzLiAgVGhpcyByZXR1cm5zIGEKIHBvaW50ZXIgdG8gdGhlIHdyaXRhYmxlIGFkZHJlc3MsIGFuZCBzZXRzICpAdmFye2NvZGV9IHRvIHRoZQpAQCAtNTcwLDkgKzU5NCw3IEBACiAKIEBpdGVtaXplIEBidWxsZXQKIEBpdGVtCi1UaGVyZSBpcyBubyBzdXBwb3J0IGZvciBjYWxsaW5nIHZhcmFyZ3MgZnVuY3Rpb25zLiAgVGhpcyBtYXkgd29yayBvbgotc29tZSBwbGF0Zm9ybXMsIGRlcGVuZGluZyBvbiBob3cgdGhlIEFCSSBpcyBkZWZpbmVkLCBidXQgaXQgaXMgbm90Ci1yZWxpYWJsZS4KK1ZhcmlhZGljIGNsb3N1cmVzLgogCiBAaXRlbQogVGhlcmUgaXMgbm8gc3VwcG9ydCBmb3IgYml0IGZpZWxkcyBpbiBzdHJ1Y3R1cmVzLgpAQCAtNTg5LDYgKzYxMSw4IEBACiBAYyBhbnl0aGluZyBlbHNlPwogQGVuZCBpdGVtaXplCiAKK05vdGUgdGhhdCB2YXJpYWRpYyBzdXBwb3J0IGlzIHZlcnkgbmV3IGFuZCB0ZXN0ZWQgb24gYSByZWxhdGl2ZWx5CitzbWFsbCBudW1iZXIgb2YgcGxhdGZvcm1zLgogCiBAbm9kZSBJbmRleAogQHVubnVtYmVyZWQgSW5kZXgKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL3N0YW1wLXZ0aSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL3N0YW1wLXZ0aQppbmRleCA4MWQwYjc5Li5lMjU5YTEyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9zdGFtcC12dGkKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2Mvc3RhbXAtdnRpCkBAIC0xLDQgKzEsNCBAQAotQHNldCBVUERBVEVEIDE0IEZlYnJ1YXJ5IDIwMDgKLUBzZXQgVVBEQVRFRC1NT05USCBGZWJydWFyeSAyMDA4Ci1Ac2V0IEVESVRJT04gMy4wLjgKLUBzZXQgVkVSU0lPTiAzLjAuOAorQHNldCBVUERBVEVEIDExIEFwcmlsIDIwMTIKK0BzZXQgVVBEQVRFRC1NT05USCBBcHJpbCAyMDEyCitAc2V0IEVESVRJT04gMy4wLjExCitAc2V0IFZFUlNJT04gMy4wLjExCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy92ZXJzaW9uLnRleGkgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy92ZXJzaW9uLnRleGkKaW5kZXggODFkMGI3OS4uZTI1OWExMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2MvdmVyc2lvbi50ZXhpCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL3ZlcnNpb24udGV4aQpAQCAtMSw0ICsxLDQgQEAKLUBzZXQgVVBEQVRFRCAxNCBGZWJydWFyeSAyMDA4Ci1Ac2V0IFVQREFURUQtTU9OVEggRmVicnVhcnkgMjAwOAotQHNldCBFRElUSU9OIDMuMC44Ci1Ac2V0IFZFUlNJT04gMy4wLjgKK0BzZXQgVVBEQVRFRCAxMSBBcHJpbCAyMDEyCitAc2V0IFVQREFURUQtTU9OVEggQXByaWwgMjAxMgorQHNldCBFRElUSU9OIDMuMC4xMQorQHNldCBWRVJTSU9OIDMuMC4xMQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9mZmljb25maWcuaC5pbiBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZmZpY29uZmlnLmguaW4KaW5kZXggZTAzYmJmOS4uMTY4ZWJjMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9mZmljb25maWcuaC5pbgorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2ZmaWNvbmZpZy5oLmluCkBAIC0xNyw2ICsxNyw5IEBACiAvKiBEZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCBleHRyYSBkZWJ1Z2dpbmcuICovCiAjdW5kZWYgRkZJX0RFQlVHCiAKKy8qIENhbm5vdCB1c2UgUFJPVF9FWEVDIG9uIHRoaXMgdGFyZ2V0LCBzbywgd2UgcmV2ZXJ0IHRvIGFsdGVybmF0aXZlIG1lYW5zICovCisjdW5kZWYgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRQorCiAvKiBDYW5ub3QgdXNlIG1hbGxvYyBvbiB0aGlzIHRhcmdldCwgc28sIHdlIHJldmVydCB0byBhbHRlcm5hdGl2ZSBtZWFucyAqLwogI3VuZGVmIEZGSV9NTUFQX0VYRUNfV1JJVAogCkBAIC0zMyw2ICszNiw5IEBACiAgICAqLwogI3VuZGVmIEhBVkVfQUxMT0NBX0gKIAorLyogRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIC5hc2NpaS4gKi8KKyN1bmRlZiBIQVZFX0FTX0FTQ0lJX1BTRVVET19PUAorCiAvKiBEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgLmNmaV8qIGRpcmVjdGl2ZXMuICovCiAjdW5kZWYgSEFWRV9BU19DRklfUFNFVURPX09QCiAKQEAgLTQzLDYgKzQ5LDEyIEBACiAgICAqLwogI3VuZGVmIEhBVkVfQVNfU1BBUkNfVUFfUENSRUwKIAorLyogRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIC5zdHJpbmcuICovCisjdW5kZWYgSEFWRV9BU19TVFJJTkdfUFNFVURPX09QCisKKy8qIERlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyB1bndpbmQgc2VjdGlvbiB0eXBlLiAqLworI3VuZGVmIEhBVkVfQVNfWDg2XzY0X1VOV0lORF9TRUNUSU9OX1RZUEUKKwogLyogRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIFBDIHJlbGF0aXZlIHJlbG9jcy4gKi8KICN1bmRlZiBIQVZFX0FTX1g4Nl9QQ1JFTAogCkBAIC0xNDgsNiArMTYwLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBBTlNJIEMgaGVhZGVyIGZpbGVzLiAqLwogI3VuZGVmIFNURENfSEVBREVSUwogCisvKiBEZWZpbmUgaWYgc3ltYm9scyBhcmUgdW5kZXJzY29yZWQuICovCisjdW5kZWYgU1lNQk9MX1VOREVSU0NPUkUKKwogLyogRGVmaW5lIHRoaXMgaWYgeW91IGFyZSB1c2luZyBQdXJpZnkgYW5kIHdhbnQgdG8gc3VwcHJlc3Mgc3B1cmlvdXMgbWVzc2FnZXMuCiAgICAqLwogI3VuZGVmIFVTSU5HX1BVUklGWQpAQCAtMTY3LDYgKzE4Miw5IEBACiAjIGVuZGlmCiAjZW5kaWYKIAorLyogRGVmaW5lIHRvIGB1bnNpZ25lZCBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAqLworI3VuZGVmIHNpemVfdAorCiAKICNpZmRlZiBIQVZFX0hJRERFTl9WSVNJQklMSVRZX0FUVFJJQlVURQogI2lmZGVmIExJQkZGSV9BU00KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZ2VuZXJhdGUtaW9zLXNvdXJjZS1hbmQtaGVhZGVycy5weSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZ2VuZXJhdGUtaW9zLXNvdXJjZS1hbmQtaGVhZGVycy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmJjYTczCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9nZW5lcmF0ZS1pb3Mtc291cmNlLWFuZC1oZWFkZXJzLnB5CkBAIC0wLDAgKzEsMTYwIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCByZQoraW1wb3J0IG9zCitpbXBvcnQgZXJybm8KK2ltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IHN5cworCitjbGFzcyBQbGF0Zm9ybShvYmplY3QpOgorICAgIHBhc3MKKworc2RrX3JlID0gcmUuY29tcGlsZShyJy4qLXNkayAoW2EtekEtWjAtOS5dKiknKQorCitkZWYgc2RraW5mbyhzZGtuYW1lKToKKyAgICByZXQgPSB7fQorICAgIGZvciBsaW5lIGluIHN1YnByb2Nlc3MuUG9wZW4oWyd4Y29kZWJ1aWxkJywgJy1zZGsnLCBzZGtuYW1lLCAnLXZlcnNpb24nXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuc3Rkb3V0OgorICAgICAgICBrdiA9IGxpbmUuc3RyaXAoKS5zcGxpdCgnOiAnLCAxKQorICAgICAgICBpZiBsZW4oa3YpID09IDI6CisgICAgICAgICAgICBrLHYgPSBrdgorICAgICAgICAgICAgcmV0W2tdID0gdgorICAgIHJldHVybiByZXQKKworc2ltX3Nka19pbmZvID0gc2RraW5mbygnaXBob25lc2ltdWxhdG9yJykKK2RldmljZV9zZGtfaW5mbyA9IHNka2luZm8oJ2lwaG9uZW9zJykKKworZGVmIGxhdGVzdF9zZGtzKCk6CisgICAgbGF0ZXN0X3NpbSA9IE5vbmUKKyAgICBsYXRlc3RfZGV2aWNlID0gTm9uZQorICAgIGZvciBsaW5lIGluIHN1YnByb2Nlc3MuUG9wZW4oWyd4Y29kZWJ1aWxkJywgJy1zaG93c2RrcyddLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5zdGRvdXQ6CisgICAgICAgIG1hdGNoID0gc2RrX3JlLm1hdGNoKGxpbmUpCisgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgaWYgJ1NpbXVsYXRvcicgaW4gbGluZToKKyAgICAgICAgICAgICAgICBsYXRlc3Rfc2ltID0gbWF0Y2guZ3JvdXAoMSkKKyAgICAgICAgICAgIGVsaWYgJ2lPUycgaW4gbGluZToKKyAgICAgICAgICAgICAgICBsYXRlc3RfZGV2aWNlID0gbWF0Y2guZ3JvdXAoMSkKKworICAgIHJldHVybiBsYXRlc3Rfc2ltLCBsYXRlc3RfZGV2aWNlCisKK3NpbV9zZGssIGRldmljZV9zZGsgPSBsYXRlc3Rfc2RrcygpCisKK2NsYXNzIHNpbXVsYXRvcl9wbGF0Zm9ybShQbGF0Zm9ybSk6CisgICAgc2RrPSdpcGhvbmVzaW11bGF0b3InCisgICAgYXJjaCA9ICdpMzg2JworICAgIG5hbWUgPSAnc2ltdWxhdG9yJworICAgIHRyaXBsZSA9ICdpMzg2LWFwcGxlLWRhcndpbjEwJworICAgIHNka3Jvb3QgPSBzaW1fc2RrX2luZm9bJ1BhdGgnXQorCisgICAgcHJlZml4ID0gIiNpZiAhZGVmaW5lZChfX2FybV9fKSAmJiBkZWZpbmVkKF9faTM4Nl9fKVxuXG4iCisgICAgc3VmZml4ID0gIlxuXG4jZW5kaWYiCisKK2NsYXNzIGRldmljZV9wbGF0Zm9ybShQbGF0Zm9ybSk6CisgICAgc2RrPSdpcGhvbmVvcycKKyAgICBuYW1lID0gJ2lvcycKKyAgICBhcmNoID0gJ2FybXY3JworICAgIHRyaXBsZSA9ICdhcm0tYXBwbGUtZGFyd2luMTAnCisgICAgc2Rrcm9vdCA9IGRldmljZV9zZGtfaW5mb1snUGF0aCddCisKKyAgICBwcmVmaXggPSAiI2lmZGVmIF9fYXJtX19cblxuIgorICAgIHN1ZmZpeCA9ICJcblxuI2VuZGlmIgorCisKK2RlZiBtb3ZlX2ZpbGUoc3JjX2RpciwgZHN0X2RpciwgZmlsZW5hbWUsIGZpbGVfc3VmZml4PU5vbmUsIHByZWZpeD0nJywgc3VmZml4PScnKToKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZHN0X2Rpcik6CisgICAgICAgIG9zLm1ha2VkaXJzKGRzdF9kaXIpCisKKyAgICBvdXRfZmlsZW5hbWUgPSBmaWxlbmFtZQorCisgICAgaWYgZmlsZV9zdWZmaXg6CisgICAgICAgIHNwbGl0X25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKQorICAgICAgICBvdXRfZmlsZW5hbWUgPSAgIiVzXyVzJXMiICUgKHNwbGl0X25hbWVbMF0sIGZpbGVfc3VmZml4LCBzcGxpdF9uYW1lWzFdKQorCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzcmNfZGlyLCBmaWxlbmFtZSkpIGFzIGluX2ZpbGU6CisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZHN0X2Rpciwgb3V0X2ZpbGVuYW1lKSwgJ3cnKSBhcyBvdXRfZmlsZToKKyAgICAgICAgICAgIGlmIHByZWZpeDoKKyAgICAgICAgICAgICAgICBvdXRfZmlsZS53cml0ZShwcmVmaXgpCisKKyAgICAgICAgICAgIG91dF9maWxlLndyaXRlKGluX2ZpbGUucmVhZCgpKQorCisgICAgICAgICAgICBpZiBzdWZmaXg6CisgICAgICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUoc3VmZml4KQorCitoZWFkZXJzX3NlZW4gPSBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdChzZXQpCisKK2RlZiBtb3ZlX3NvdXJjZV90cmVlKHNyY19kaXIsIGRlc3RfZGlyLCBkZXN0X2luY2x1ZGVfZGlyLCBhcmNoPU5vbmUsIHByZWZpeD1Ob25lLCBzdWZmaXg9Tm9uZSk6CisgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc3JjX2RpciwgZm9sbG93bGlua3M9VHJ1ZSk6CisgICAgICAgIHJlbHJvb3QgPSBvcy5wYXRoLnJlbHBhdGgocm9vdCxzcmNfZGlyKQorCisgICAgICAgIGRlZiBtb3ZlX2RpcihhcmNoLCBwcmVmaXg9JycsIHN1ZmZpeD0nJywgZmlsZXM9W10pOgorICAgICAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgZmlsZV9zdWZmaXggPSBOb25lCisgICAgICAgICAgICAgICAgaWYgZmlsZS5lbmRzd2l0aCgnLmgnKToKKyAgICAgICAgICAgICAgICAgICAgaWYgZGVzdF9pbmNsdWRlX2RpcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfc3VmZml4ID0gYXJjaAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXJjaDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzX3NlZW5bZmlsZV0uYWRkKGFyY2gpCisgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlX2ZpbGUocm9vdCwgZGVzdF9pbmNsdWRlX2RpciwgZmlsZSwgYXJjaCwgcHJlZml4PXByZWZpeCwgc3VmZml4PXN1ZmZpeCkKKworICAgICAgICAgICAgICAgIGVsaWYgZGVzdF9kaXI6CisgICAgICAgICAgICAgICAgICAgIG91dHJvb3QgPSBvcy5wYXRoLmpvaW4oZGVzdF9kaXIsIHJlbHJvb3QpCisgICAgICAgICAgICAgICAgICAgIG1vdmVfZmlsZShyb290LCBvdXRyb290LCBmaWxlLCBwcmVmaXg9cHJlZml4LCBzdWZmaXg9c3VmZml4KQorCisgICAgICAgIGlmIHJlbHJvb3QgPT0gJy4nOgorICAgICAgICAgICAgbW92ZV9kaXIoYXJjaD1hcmNoLAorICAgICAgICAgICAgICAgICAgICAgZmlsZXM9ZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9cHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgc3VmZml4PXN1ZmZpeCkKKyAgICAgICAgZWxpZiByZWxyb290ID09ICdhcm0nOgorICAgICAgICAgICAgbW92ZV9kaXIoYXJjaD0nYXJtJywKKyAgICAgICAgICAgICAgICAgICAgIHByZWZpeD0iI2lmZGVmIF9fYXJtX19cblxuIiwKKyAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeD0iXG5cbiNlbmRpZiIsCisgICAgICAgICAgICAgICAgICAgICBmaWxlcz1maWxlcykKKyAgICAgICAgZWxpZiByZWxyb290ID09ICd4ODYnOgorICAgICAgICAgICAgbW92ZV9kaXIoYXJjaD0naTM4NicsCisgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9IiNpZiAhZGVmaW5lZChfX2FybV9fKSAmJiBkZWZpbmVkKF9faTM4Nl9fKVxuXG4iLAorICAgICAgICAgICAgICAgICAgICAgc3VmZml4PSJcblxuI2VuZGlmIiwKKyAgICAgICAgICAgICAgICAgICAgIGZpbGVzPWZpbGVzKQorCitkZWYgYnVpbGRfdGFyZ2V0KHBsYXRmb3JtKToKKyAgICBkZWYgeGNydW5fY21kKGNtZCk6CisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ3hjcnVuJywgJy1zZGsnLCBwbGF0Zm9ybS5zZGtyb290LCAnLWZpbmQnLCBjbWRdKS5zdHJpcCgpCisKKyAgICBidWlsZF9kaXIgPSAnYnVpbGRfJyArIHBsYXRmb3JtLm5hbWUKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoYnVpbGRfZGlyKToKKyAgICAgICAgb3MubWFrZWRpcnMoYnVpbGRfZGlyKQorICAgICAgICBlbnYgPSBkaWN0KENDPXhjcnVuX2NtZCgnY2xhbmcnKSwKKyAgICAgICAgICAgICAgICAgICBMRD14Y3J1bl9jbWQoJ2xkJyksCisgICAgICAgICAgICAgICAgICAgQ0ZMQUdTPSctYXJjaCAlcyAtaXN5c3Jvb3QgJXMgLW1pcGhvbmVvcy12ZXJzaW9uLW1pbj00LjAnICUgKHBsYXRmb3JtLmFyY2gsIHBsYXRmb3JtLnNka3Jvb3QpKQorICAgICAgICB3b3JraW5nX2Rpcj1vcy5nZXRjd2QoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5jaGRpcihidWlsZF9kaXIpCisgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWycuLi9jb25maWd1cmUnLCAnLWhvc3QnLCBwbGF0Zm9ybS50cmlwbGVdLCBlbnY9ZW52KQorICAgICAgICAgICAgbW92ZV9zb3VyY2VfdHJlZSgnLicsIE5vbmUsICcuLi9pb3MvaW5jbHVkZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2g9cGxhdGZvcm0uYXJjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4PXBsYXRmb3JtLnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4PXBsYXRmb3JtLnN1ZmZpeCkKKyAgICAgICAgICAgIG1vdmVfc291cmNlX3RyZWUoJy4vaW5jbHVkZScsIE5vbmUsICcuLi9pb3MvaW5jbHVkZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaD1wbGF0Zm9ybS5hcmNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeD1wbGF0Zm9ybS5wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4PXBsYXRmb3JtLnN1ZmZpeCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNoZGlyKHdvcmtpbmdfZGlyKQorCisgICAgICAgIGZvciBoZWFkZXJfbmFtZSwgYXJjaHMgaW4gaGVhZGVyc19zZWVuLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgYmFzZW5hbWUsIHN1ZmZpeCA9IG9zLnBhdGguc3BsaXRleHQoaGVhZGVyX25hbWUpCisKK2RlZiBtYWluKCk6CisgICAgbW92ZV9zb3VyY2VfdHJlZSgnc3JjJywgJ2lvcy9zcmMnLCAnaW9zL2luY2x1ZGUnKQorICAgIG1vdmVfc291cmNlX3RyZWUoJ2luY2x1ZGUnLCBOb25lLCAnaW9zL2luY2x1ZGUnKQorICAgIGJ1aWxkX3RhcmdldChzaW11bGF0b3JfcGxhdGZvcm0pCisgICAgYnVpbGRfdGFyZ2V0KGRldmljZV9wbGF0Zm9ybSkKKworICAgIGZvciBoZWFkZXJfbmFtZSwgYXJjaHMgaW4gaGVhZGVyc19zZWVuLml0ZXJpdGVtcygpOgorICAgICAgICBiYXNlbmFtZSwgc3VmZml4ID0gb3MucGF0aC5zcGxpdGV4dChoZWFkZXJfbmFtZSkKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbignaW9zL2luY2x1ZGUnLCBoZWFkZXJfbmFtZSksICd3JykgYXMgaGVhZGVyOgorICAgICAgICAgICAgZm9yIGFyY2ggaW4gYXJjaHM6CisgICAgICAgICAgICAgICAgaGVhZGVyLndyaXRlKCcjaW5jbHVkZSA8JXNfJXMlcz5cbicgJSAoYmFzZW5hbWUsIGFyY2gsIHN1ZmZpeCkpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2dlbmVyYXRlLW9zeC1zb3VyY2UtYW5kLWhlYWRlcnMucHkgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2dlbmVyYXRlLW9zeC1zb3VyY2UtYW5kLWhlYWRlcnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQzMTNjMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZ2VuZXJhdGUtb3N4LXNvdXJjZS1hbmQtaGVhZGVycy5weQpAQCAtMCwwICsxLDE1MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHJlCitpbXBvcnQgb3MKK2ltcG9ydCBlcnJubworaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgc3lzCisKK2NsYXNzIFBsYXRmb3JtKG9iamVjdCk6CisgICAgcGFzcworCitzZGtfcmUgPSByZS5jb21waWxlKHInLiotc2RrIChbYS16QS1aMC05Ll0qKScpCisKK2RlZiBzZGtpbmZvKHNka25hbWUpOgorICAgIHJldCA9IHt9CisgICAgZm9yIGxpbmUgaW4gc3VicHJvY2Vzcy5Qb3BlbihbJ3hjb2RlYnVpbGQnLCAnLXNkaycsIHNka25hbWUsICctdmVyc2lvbiddLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5zdGRvdXQ6CisgICAgICAgIGt2ID0gbGluZS5zdHJpcCgpLnNwbGl0KCc6ICcsIDEpCisgICAgICAgIGlmIGxlbihrdikgPT0gMjoKKyAgICAgICAgICAgIGssdiA9IGt2CisgICAgICAgICAgICByZXRba10gPSB2CisgICAgcmV0dXJuIHJldAorCitkZXNrdG9wX3Nka19pbmZvID0gc2RraW5mbygnbWFjb3N4JykKKworZGVmIGxhdGVzdF9zZGtzKCk6CisgICAgbGF0ZXN0X2Rlc2t0b3AgPSBOb25lCisgICAgZm9yIGxpbmUgaW4gc3VicHJvY2Vzcy5Qb3BlbihbJ3hjb2RlYnVpbGQnLCAnLXNob3dzZGtzJ10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dDoKKyAgICAgICAgbWF0Y2ggPSBzZGtfcmUubWF0Y2gobGluZSkKKyAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICBpZiAnT1MgWCcgaW4gbGluZToKKyAgICAgICAgICAgICAgICBsYXRlc3RfZGVza3RvcCA9IG1hdGNoLmdyb3VwKDEpCisKKyAgICByZXR1cm4gbGF0ZXN0X2Rlc2t0b3AKKworZGVza3RvcF9zZGsgPSBsYXRlc3Rfc2RrcygpCisKK2NsYXNzIGRlc2t0b3BfcGxhdGZvcm1fMzIoUGxhdGZvcm0pOgorICAgIHNkaz0nbWFjb3N4JworICAgIGFyY2ggPSAnaTM4NicKKyAgICBuYW1lID0gJ21hYzMyJworICAgIHRyaXBsZSA9ICdpMzg2LWFwcGxlLWRhcndpbjEwJworICAgIHNka3Jvb3QgPSBkZXNrdG9wX3Nka19pbmZvWydQYXRoJ10KKworICAgIHByZWZpeCA9ICIjaWYgZGVmaW5lZChfX2kzODZfXykgJiYgIWRlZmluZWQoX194ODZfNjRfXylcblxuIgorICAgIHN1ZmZpeCA9ICJcblxuI2VuZGlmIgorCitjbGFzcyBkZXNrdG9wX3BsYXRmb3JtXzY0KFBsYXRmb3JtKToKKyAgICBzZGs9J21hY29zeCcKKyAgICBhcmNoID0gJ3g4Nl82NCcKKyAgICBuYW1lID0gJ21hYycKKyAgICB0cmlwbGUgPSAneDg2XzY0LWFwcGxlLWRhcndpbjEwJworICAgIHNka3Jvb3QgPSBkZXNrdG9wX3Nka19pbmZvWydQYXRoJ10KKworICAgIHByZWZpeCA9ICIjaWYgIWRlZmluZWQoX19pMzg2X18pICYmIGRlZmluZWQoX194ODZfNjRfXylcblxuIgorICAgIHN1ZmZpeCA9ICJcblxuI2VuZGlmIgorCitkZWYgbW92ZV9maWxlKHNyY19kaXIsIGRzdF9kaXIsIGZpbGVuYW1lLCBmaWxlX3N1ZmZpeD1Ob25lLCBwcmVmaXg9JycsIHN1ZmZpeD0nJyk6CisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRzdF9kaXIpOgorICAgICAgICBvcy5tYWtlZGlycyhkc3RfZGlyKQorCisgICAgb3V0X2ZpbGVuYW1lID0gZmlsZW5hbWUKKworICAgIGlmIGZpbGVfc3VmZml4OgorICAgICAgICBzcGxpdF9uYW1lID0gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSkKKyAgICAgICAgb3V0X2ZpbGVuYW1lID0gICIlc18lcyVzIiAlIChzcGxpdF9uYW1lWzBdLCBmaWxlX3N1ZmZpeCwgc3BsaXRfbmFtZVsxXSkKKworICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc3JjX2RpciwgZmlsZW5hbWUpKSBhcyBpbl9maWxlOgorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGRzdF9kaXIsIG91dF9maWxlbmFtZSksICd3JykgYXMgb3V0X2ZpbGU6CisgICAgICAgICAgICBpZiBwcmVmaXg6CisgICAgICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUocHJlZml4KQorCisgICAgICAgICAgICBvdXRfZmlsZS53cml0ZShpbl9maWxlLnJlYWQoKSkKKworICAgICAgICAgICAgaWYgc3VmZml4OgorICAgICAgICAgICAgICAgIG91dF9maWxlLndyaXRlKHN1ZmZpeCkKKworaGVhZGVyc19zZWVuID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3Qoc2V0KQorCitkZWYgbW92ZV9zb3VyY2VfdHJlZShzcmNfZGlyLCBkZXN0X2RpciwgZGVzdF9pbmNsdWRlX2RpciwgYXJjaD1Ob25lLCBwcmVmaXg9Tm9uZSwgc3VmZml4PU5vbmUpOgorICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHNyY19kaXIsIGZvbGxvd2xpbmtzPVRydWUpOgorICAgICAgICByZWxyb290ID0gb3MucGF0aC5yZWxwYXRoKHJvb3Qsc3JjX2RpcikKKworICAgICAgICBkZWYgbW92ZV9kaXIoYXJjaCwgcHJlZml4PScnLCBzdWZmaXg9JycsIGZpbGVzPVtdKToKKyAgICAgICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgorICAgICAgICAgICAgICAgIGZpbGVfc3VmZml4ID0gTm9uZQorICAgICAgICAgICAgICAgIGlmIGZpbGUuZW5kc3dpdGgoJy5oJyk6CisgICAgICAgICAgICAgICAgICAgIGlmIGRlc3RfaW5jbHVkZV9kaXI6CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3N1ZmZpeCA9IGFyY2gKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFyY2g6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyc19zZWVuW2ZpbGVdLmFkZChhcmNoKQorICAgICAgICAgICAgICAgICAgICAgICAgbW92ZV9maWxlKHJvb3QsIGRlc3RfaW5jbHVkZV9kaXIsIGZpbGUsIGFyY2gsIHByZWZpeD1wcmVmaXgsIHN1ZmZpeD1zdWZmaXgpCisKKyAgICAgICAgICAgICAgICBlbGlmIGRlc3RfZGlyOgorICAgICAgICAgICAgICAgICAgICBvdXRyb290ID0gb3MucGF0aC5qb2luKGRlc3RfZGlyLCByZWxyb290KQorICAgICAgICAgICAgICAgICAgICBtb3ZlX2ZpbGUocm9vdCwgb3V0cm9vdCwgZmlsZSwgcHJlZml4PXByZWZpeCwgc3VmZml4PXN1ZmZpeCkKKworICAgICAgICBpZiByZWxyb290ID09ICcuJzoKKyAgICAgICAgICAgIG1vdmVfZGlyKGFyY2g9YXJjaCwKKyAgICAgICAgICAgICAgICAgICAgIGZpbGVzPWZpbGVzLAorICAgICAgICAgICAgICAgICAgICAgcHJlZml4PXByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeD1zdWZmaXgpCisgICAgICAgIGVsaWYgcmVscm9vdCA9PSAneDg2JzoKKyAgICAgICAgICAgIG1vdmVfZGlyKGFyY2g9J2kzODYnLAorICAgICAgICAgICAgICAgICAgICAgcHJlZml4PSIjaWYgZGVmaW5lZChfX2kzODZfXykgJiYgIWRlZmluZWQoX194ODZfNjRfXylcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeD0iXG5cbiNlbmRpZiIsCisgICAgICAgICAgICAgICAgICAgICBmaWxlcz1maWxlcykKKyAgICAgICAgICAgIG1vdmVfZGlyKGFyY2g9J3g4Nl82NCcsCisgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9IiNpZiAhZGVmaW5lZChfX2kzODZfXykgJiYgZGVmaW5lZChfX3g4Nl82NF9fKVxuXG4iLAorICAgICAgICAgICAgICAgICAgICAgc3VmZml4PSJcblxuI2VuZGlmIiwKKyAgICAgICAgICAgICAgICAgICAgIGZpbGVzPWZpbGVzKQorCitkZWYgYnVpbGRfdGFyZ2V0KHBsYXRmb3JtKToKKyAgICBkZWYgeGNydW5fY21kKGNtZCk6CisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ3hjcnVuJywgJy1zZGsnLCBwbGF0Zm9ybS5zZGtyb290LCAnLWZpbmQnLCBjbWRdKS5zdHJpcCgpCisKKyAgICBidWlsZF9kaXIgPSAnYnVpbGRfJyArIHBsYXRmb3JtLm5hbWUKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoYnVpbGRfZGlyKToKKyAgICAgICAgb3MubWFrZWRpcnMoYnVpbGRfZGlyKQorICAgICAgICBlbnYgPSBkaWN0KENDPXhjcnVuX2NtZCgnY2xhbmcnKSwKKyAgICAgICAgICAgICAgICAgICBMRD14Y3J1bl9jbWQoJ2xkJyksCisgICAgICAgICAgICAgICAgICAgQ0ZMQUdTPSctYXJjaCAlcyAtaXN5c3Jvb3QgJXMgLW1tYWNvc3gtdmVyc2lvbi1taW49MTAuNicgJSAocGxhdGZvcm0uYXJjaCwgcGxhdGZvcm0uc2Rrcm9vdCkpCisgICAgICAgIHdvcmtpbmdfZGlyPW9zLmdldGN3ZCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLmNoZGlyKGJ1aWxkX2RpcikKKyAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbJy4uL2NvbmZpZ3VyZScsICctaG9zdCcsIHBsYXRmb3JtLnRyaXBsZV0sIGVudj1lbnYpCisgICAgICAgICAgICBtb3ZlX3NvdXJjZV90cmVlKCcuJywgTm9uZSwgJy4uL29zeC9pbmNsdWRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaD1wbGF0Zm9ybS5hcmNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9cGxhdGZvcm0ucHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXg9cGxhdGZvcm0uc3VmZml4KQorICAgICAgICAgICAgbW92ZV9zb3VyY2VfdHJlZSgnLi9pbmNsdWRlJywgTm9uZSwgJy4uL29zeC9pbmNsdWRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaD1wbGF0Zm9ybS5hcmNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9cGxhdGZvcm0ucHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXg9cGxhdGZvcm0uc3VmZml4KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2hkaXIod29ya2luZ19kaXIpCisKKyAgICAgICAgZm9yIGhlYWRlcl9uYW1lLCBhcmNocyBpbiBoZWFkZXJzX3NlZW4uaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBiYXNlbmFtZSwgc3VmZml4ID0gb3MucGF0aC5zcGxpdGV4dChoZWFkZXJfbmFtZSkKKworZGVmIG1haW4oKToKKyAgICBtb3ZlX3NvdXJjZV90cmVlKCdzcmMnLCAnb3N4L3NyYycsICdvc3gvaW5jbHVkZScpCisgICAgbW92ZV9zb3VyY2VfdHJlZSgnaW5jbHVkZScsIE5vbmUsICdvc3gvaW5jbHVkZScpCisgICAgYnVpbGRfdGFyZ2V0KGRlc2t0b3BfcGxhdGZvcm1fMzIpCisgICAgYnVpbGRfdGFyZ2V0KGRlc2t0b3BfcGxhdGZvcm1fNjQpCisKKyAgICBmb3IgaGVhZGVyX25hbWUsIGFyY2hzIGluIGhlYWRlcnNfc2Vlbi5pdGVyaXRlbXMoKToKKyAgICAgICAgYmFzZW5hbWUsIHN1ZmZpeCA9IG9zLnBhdGguc3BsaXRleHQoaGVhZGVyX25hbWUpCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oJ29zeC9pbmNsdWRlJywgaGVhZGVyX25hbWUpLCAndycpIGFzIGhlYWRlcjoKKyAgICAgICAgICAgIGZvciBhcmNoIGluIGFyY2hzOgorICAgICAgICAgICAgICAgIGhlYWRlci53cml0ZSgnI2luY2x1ZGUgPCVzXyVzJXM+XG4nICUgKGJhc2VuYW1lLCBhcmNoLCBzdWZmaXgpKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL01ha2VmaWxlLmluIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL01ha2VmaWxlLmluCmluZGV4IDEzNmYzNmMuLjc5ZDQ5M2UgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5jbHVkZS9NYWtlZmlsZS5pbgorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvTWFrZWZpbGUuaW4KQEAgLTEsOSArMSw5IEBACi0jIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjExIGZyb20gTWFrZWZpbGUuYW0uCisjIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjExLjMgZnJvbSBNYWtlZmlsZS5hbS4KICMgQGNvbmZpZ3VyZV9pbnB1dEAKIAogIyBDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsCi0jIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSMgSW5jLgorIyAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgogIyBUaGlzIE1ha2VmaWxlLmluIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgpAQCAtMzcsNyArMzcsNyBAQAogdGFyZ2V0X3RyaXBsZXQgPSBAdGFyZ2V0QAogc3ViZGlyID0gaW5jbHVkZQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChzcmNkaXIpL01ha2VmaWxlLmluIFwKLQkkKHNyY2RpcikvZmZpLmguaW4KKwkkKHNyY2RpcikvZmZpLmguaW4gJChzcmNkaXIpL2ZmaV9jb21tb24uaAogQUNMT0NBTF9NNCA9ICQodG9wX3NyY2RpcikvYWNsb2NhbC5tNAogYW1fX2FjbG9jYWxfbTRfZGVwcyA9ICQodG9wX3NyY2RpcikvYWNpbmNsdWRlLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwpAQCAtNDYsNyArNDYsNyBAQAogbWtpbnN0YWxsZGlycyA9ICQoaW5zdGFsbF9zaCkgLWQKIENPTkZJR19IRUFERVIgPSAkKHRvcF9idWlsZGRpcikvZmZpY29uZmlnLmgKIENPTkZJR19DTEVBTl9GSUxFUyA9IGZmaS5oIGZmaXRhcmdldC5oCi1DT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMgPQorQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTID0gZmZpX2NvbW1vbi5oCiBTT1VSQ0VTID0KIERJU1RfU09VUkNFUyA9CiBhbV9fdnBhdGhfYWRqX3NldHVwID0gc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3N8LnwufGcnYDsKQEAgLTcwLDYgKzcwLDEyIEBACiBhbV9fYmFzZV9saXN0ID0gXAogICBzZWQgJyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjskJCFOOyQkIU47cy9cbi8gL2cnIHwgXAogICBzZWQgJyQkIU47JCQhTjskJCFOOyQkIU47cy9cbi8gL2cnCithbV9fdW5pbnN0YWxsX2ZpbGVzX2Zyb21fZGlyID0geyBcCisgIHRlc3QgLXogIiQkZmlsZXMiIFwKKyAgICB8fCB7IHRlc3QgISAtZCAiJCRkaXIiICYmIHRlc3QgISAtZiAiJCRkaXIiICYmIHRlc3QgISAtciAiJCRkaXIiOyB9IFwKKyAgICB8fCB7IGVjaG8gIiAoIGNkICckJGRpcicgJiYgcm0gLWYiICQkZmlsZXMgIikiOyBcCisgICAgICAgICAkKGFtX19jZCkgIiQkZGlyIiAmJiBybSAtZiAkJGZpbGVzOyB9OyBcCisgIH0KIGFtX19pbnN0YWxsZGlycyA9ICIkKERFU1RESVIpJChpbmNsdWRlc2RpcikiCiBIRUFERVJTID0gJChub2Rpc3RfaW5jbHVkZXNfSEVBREVSUykKIEVUQUdTID0gZXRhZ3MKQEAgLTc4LDYgKzg0LDcgQEAKIEFDTE9DQUwgPSBAQUNMT0NBTEAKIEFMTE9DQSA9IEBBTExPQ0FACiBBTVRBUiA9IEBBTVRBUkAKK0FNX0xUTERGTEFHUyA9IEBBTV9MVExERkxBR1NACiBBTV9SVU5URVNURkxBR1MgPSBAQU1fUlVOVEVTVEZMQUdTQAogQVIgPSBAQVJACiBBVVRPQ09ORiA9IEBBVVRPQ09ORkAKQEAgLTk1LDYgKzEwMiw3IEBACiBDWUdQQVRIX1cgPSBAQ1lHUEFUSF9XQAogREVGUyA9IEBERUZTQAogREVQRElSID0gQERFUERJUkAKK0RMTFRPT0wgPSBARExMVE9PTEAKIERTWU1VVElMID0gQERTWU1VVElMQAogRFVNUEJJTiA9IEBEVU1QQklOQAogRUNIT19DID0gQEVDSE9fQ0AKQEAgLTEwMiw2ICsxMTAsNyBAQAogRUNIT19UID0gQEVDSE9fVEAKIEVHUkVQID0gQEVHUkVQQAogRVhFRVhUID0gQEVYRUVYVEAKK0ZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgPSBARkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRUAKIEZHUkVQID0gQEZHUkVQQAogR1JFUCA9IEBHUkVQQAogSEFWRV9MT05HX0RPVUJMRSA9IEBIQVZFX0xPTkdfRE9VQkxFQApAQCAtMTIwLDYgKzEyOSw3IEBACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKK01BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKIE1LRElSX1AgPSBATUtESVJfUEAKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKQEAgLTEzMiw2ICsxNDIsNyBAQAogUEFDS0FHRV9OQU1FID0gQFBBQ0tBR0VfTkFNRUAKIFBBQ0tBR0VfU1RSSU5HID0gQFBBQ0tBR0VfU1RSSU5HQAogUEFDS0FHRV9UQVJOQU1FID0gQFBBQ0tBR0VfVEFSTkFNRUAKK1BBQ0tBR0VfVVJMID0gQFBBQ0tBR0VfVVJMQAogUEFDS0FHRV9WRVJTSU9OID0gQFBBQ0tBR0VfVkVSU0lPTkAKIFBBVEhfU0VQQVJBVE9SID0gQFBBVEhfU0VQQVJBVE9SQAogUkFOTElCID0gQFJBTkxJQkAKQEAgLTE0Niw2ICsxNTcsNyBAQAogYWJzX3NyY2RpciA9IEBhYnNfc3JjZGlyQAogYWJzX3RvcF9idWlsZGRpciA9IEBhYnNfdG9wX2J1aWxkZGlyQAogYWJzX3RvcF9zcmNkaXIgPSBAYWJzX3RvcF9zcmNkaXJACithY19jdF9BUiA9IEBhY19jdF9BUkAKIGFjX2N0X0NDID0gQGFjX2N0X0NDQAogYWNfY3RfRFVNUEJJTiA9IEBhY19jdF9EVU1QQklOQAogYW1fX2luY2x1ZGUgPSBAYW1fX2luY2x1ZGVACkBAIC0xNzgsNyArMTkwLDYgQEAKIGxpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKIGxvY2FsZWRpciA9IEBsb2NhbGVkaXJACiBsb2NhbHN0YXRlZGlyID0gQGxvY2Fsc3RhdGVkaXJACi1sdF9FQ0hPID0gQGx0X0VDSE9ACiBtYW5kaXIgPSBAbWFuZGlyQAogbWtkaXJfcCA9IEBta2Rpcl9wQAogb2xkaW5jbHVkZWRpciA9IEBvbGRpbmNsdWRlZGlyQApAQCAtMjYzLDkgKzI3NCw3IEBACiAJQCQoTk9STUFMX1VOSU5TVEFMTCkKIAlAbGlzdD0nJChub2Rpc3RfaW5jbHVkZXNfSEVBREVSUyknOyB0ZXN0IC1uICIkKGluY2x1ZGVzZGlyKSIgfHwgbGlzdD07IFwKIAlmaWxlcz1gZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICQkcDsgZG9uZSB8IHNlZCAtZSAnc3xeLiovfHwnYDsgXAotCXRlc3QgLW4gIiQkZmlsZXMiIHx8IGV4aXQgMDsgXAotCWVjaG8gIiAoIGNkICckKERFU1RESVIpJChpbmNsdWRlc2RpciknICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAotCWNkICIkKERFU1RESVIpJChpbmNsdWRlc2RpcikiICYmIHJtIC1mICQkZmlsZXMKKwlkaXI9JyQoREVTVERJUikkKGluY2x1ZGVzZGlyKSc7ICQoYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpcikKIAogSUQ6ICQoSEVBREVSUykgJChTT1VSQ0VTKSAkKExJU1ApICQoVEFHU19GSUxFUykKIAlsaXN0PSckKFNPVVJDRVMpICQoSEVBREVSUykgJChMSVNQKSAkKFRBR1NfRklMRVMpJzsgXApAQCAtMzY2LDEwICszNzUsMTUgQEAKIAogaW5zdGFsbGNoZWNrOiBpbnN0YWxsY2hlY2stYW0KIGluc3RhbGwtc3RyaXA6Ci0JJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKLQkgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAotCSAgYHRlc3QgLXogJyQoU1RSSVApJyB8fCBcCi0JICAgIGVjaG8gIklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciYCBpbnN0YWxsCisJaWYgdGVzdCAteiAnJChTVFJJUCknOyB0aGVuIFwKKwkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCisJICAgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAorCSAgICAgIGluc3RhbGw7IFwKKwllbHNlIFwKKwkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCisJICAgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAorCSAgICAiSU5TVEFMTF9QUk9HUkFNX0VOVj1TVFJJUFBST0c9JyQoU1RSSVApJyIgaW5zdGFsbDsgXAorCWZpCiBtb3N0bHljbGVhbi1nZW5lcmljOgogCiBjbGVhbi1nZW5lcmljOgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL2ZmaS5oLmluIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL2ZmaS5oLmluCmluZGV4IGRmN2QyY2QuLmE1MTU4M2IgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5jbHVkZS9mZmkuaC5pbgorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvZmZpLmguaW4KQEAgLTEsMTYgKzEsMTcgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBsaWJmZmkgQFZFUlNJT05AIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMsIDIwMDcsIDIwMDggIFJlZCBIYXQsIEluYy4KKyAgIGxpYmZmaSBAVkVSU0lPTkAgLSBDb3B5cmlnaHQgKGMpIDIwMTEgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICAgICAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzLCAyMDA3LCAyMDA4IFJlZCBIYXQsIEluYy4KIAotICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0gICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSAgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0gICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSAgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCisgICBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbgorICAgZmlsZXMgKHRoZSBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0CisgICByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwKKyAgIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcworICAgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAgIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAKLSAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi0gICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCisgICBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KIAogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKICAgIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgpAQCAtNTcsNyArNTgsOSBAQAogI2VuZGlmCiAKIC8qIFNwZWNpZnkgd2hpY2ggYXJjaGl0ZWN0dXJlIGxpYmZmaSBpcyBjb25maWd1cmVkIGZvci4gKi8KKyNpZm5kZWYgQFRBUkdFVEAKICNkZWZpbmUgQFRBUkdFVEAKKyNlbmRpZgogCiAvKiAtLS0tIFN5c3RlbSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC03NSwxNSArNzgsMzEgQEAKIC8qIExPTkdfTE9OR19NQVggaXMgbm90IGFsd2F5cyBkZWZpbmVkIChub3QgaWYgU1RSSUNUX0FOU0ksIGZvciBleGFtcGxlKS4KICAgIEJ1dCB3ZSBjYW4gZmluZCBpdCBlaXRoZXIgdW5kZXIgdGhlIGNvcnJlY3QgQU5TSSBuYW1lLCBvciB1bmRlciBHTlUKICAgIEMncyBpbnRlcm5hbCBuYW1lLiAgKi8KKworI2RlZmluZSBGRklfNjRfQklUX01BWCA5MjIzMzcyMDM2ODU0Nzc1ODA3CisKICNpZmRlZiBMT05HX0xPTkdfTUFYCiAjIGRlZmluZSBGRklfTE9OR19MT05HX01BWCBMT05HX0xPTkdfTUFYCiAjZWxzZQogIyBpZmRlZiBMTE9OR19NQVgKICMgIGRlZmluZSBGRklfTE9OR19MT05HX01BWCBMTE9OR19NQVgKKyMgIGlmZGVmIF9BSVg1MiAvKiBvciBuZXdlciBoYXMgQzk5IExMT05HX01BWCAqLworIyAgIHVuZGVmIEZGSV82NF9CSVRfTUFYCisjICAgZGVmaW5lIEZGSV82NF9CSVRfTUFYIDkyMjMzNzIwMzY4NTQ3NzU4MDdMTAorIyAgZW5kaWYgLyogX0FJWDUyIG9yIG5ld2VyICovCiAjIGVsc2UKICMgIGlmZGVmIF9fR05VQ19fCiAjICAgZGVmaW5lIEZGSV9MT05HX0xPTkdfTUFYIF9fTE9OR19MT05HX01BWF9fCiAjICBlbmRpZgorIyAgaWZkZWYgX0FJWCAvKiBBSVggNS4xIGFuZCBlYXJsaWVyIGhhdmUgTE9OR0xPTkdfTUFYICovCisjICAgaWZuZGVmIF9fUFBDNjRfXworIyAgICBpZiBkZWZpbmVkIChfX0lCTUNfXykgfHwgZGVmaW5lZCAoX19JQk1DUFBfXykKKyMgICAgIGRlZmluZSBGRklfTE9OR19MT05HX01BWCBMT05HTE9OR19NQVgKKyMgICAgZW5kaWYKKyMgICBlbmRpZiAvKiBfX1BQQzY0X18gKi8KKyMgICB1bmRlZiAgRkZJXzY0X0JJVF9NQVgKKyMgICBkZWZpbmUgRkZJXzY0X0JJVF9NQVggOTIyMzM3MjAzNjg1NDc3NTgwN0xMCisjICBlbmRpZgogIyBlbmRpZgogI2VuZGlmCiAKQEAgLTEzMCwzOSArMTQ5LDUzIEBACiAjZW5kaWYKIAogI2lmIExPTkdfTUFYID09IDIxNDc0ODM2NDcKLSMgaWYgRkZJX0xPTkdfTE9OR19NQVggIT0gOTIyMzM3MjAzNjg1NDc3NTgwNworIyBpZiBGRklfTE9OR19MT05HX01BWCAhPSBGRklfNjRfQklUX01BWAogICNlcnJvciAibm8gNjQtYml0IGRhdGEgdHlwZSBzdXBwb3J0ZWQiCiAjIGVuZGlmCi0jZWxpZiBMT05HX01BWCAhPSA5MjIzMzcyMDM2ODU0Nzc1ODA3CisjZWxpZiBMT05HX01BWCAhPSBGRklfNjRfQklUX01BWAogICNlcnJvciAibG9uZyBzaXplIG5vdCBzdXBwb3J0ZWQiCiAjZW5kaWYKIAogI2lmIExPTkdfTUFYID09IDIxNDc0ODM2NDcKICMgZGVmaW5lIGZmaV90eXBlX3Vsb25nICAgICAgICBmZmlfdHlwZV91aW50MzIKICMgZGVmaW5lIGZmaV90eXBlX3Nsb25nICAgICAgICBmZmlfdHlwZV9zaW50MzIKLSNlbGlmIExPTkdfTUFYID09IDkyMjMzNzIwMzY4NTQ3NzU4MDcKKyNlbGlmIExPTkdfTUFYID09IEZGSV82NF9CSVRfTUFYCiAjIGRlZmluZSBmZmlfdHlwZV91bG9uZyAgICAgICAgZmZpX3R5cGVfdWludDY0CiAjIGRlZmluZSBmZmlfdHlwZV9zbG9uZyAgICAgICAgZmZpX3R5cGVfc2ludDY0CiAjZWxzZQogICNlcnJvciAibG9uZyBzaXplIG5vdCBzdXBwb3J0ZWQiCiAjZW5kaWYKIAorLyogTmVlZCBtaW5pbWFsIGRlY29yYXRpb25zIGZvciBETExzIHRvIHdvcmtzIG9uIFdpbmRvd3MuICovCisvKiBHQ0MgaGFzIGF1dG9pbXBvcnQgYW5kIGF1dG9leHBvcnQuICBSZWx5IG9uIExpYnRvb2wgdG8gKi8KKy8qIGhlbHAgTVNWQyBleHBvcnQgZnJvbSBhIERMTCwgYnV0IGFsd2F5cyBkZWNsYXJlIGRhdGEgICAqLworLyogdG8gYmUgaW1wb3J0ZWQgZm9yIE1TVkMgY2xpZW50cy4gIFRoaXMgY29zdHMgYW4gZXh0cmEgICovCisvKiBpbmRpcmVjdGlvbiBmb3IgTVNWQyBjbGllbnRzIHVzaW5nIHRoZSBzdGF0aWMgdmVyc2lvbiAgKi8KKy8qIG9mIHRoZSBsaWJyYXJ5LCBidXQgZG9uJ3Qgd29ycnkgYWJvdXQgdGhhdC4gIEJlc2lkZXMsICAqLworLyogYXMgYSB3b3JrYXJvdW5kLCB0aGV5IGNhbiBkZWZpbmUgRkZJX0JVSUxESU5HIGlmIHRoZXkgICovCisvKiAqa25vdyogdGhleSBhcmUgZ29pbmcgdG8gbGluayB3aXRoIHRoZSBzdGF0aWMgbGlicmFyeS4gKi8KKyNpZiBkZWZpbmVkIF9NU0NfVkVSICYmICFkZWZpbmVkIEZGSV9CVUlMRElORworI2RlZmluZSBGRklfRVhURVJOIGV4dGVybiBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyNlbHNlCisjZGVmaW5lIEZGSV9FWFRFUk4gZXh0ZXJuCisjZW5kaWYKKwogLyogVGhlc2UgYXJlIGRlZmluZWQgaW4gdHlwZXMuYyAqLwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3ZvaWQ7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDg7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDg7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDE2OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3NpbnQxNjsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV91aW50MzI7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDMyOwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3VpbnQ2NDsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50NjQ7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfZmxvYXQ7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfZG91YmxlOwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3BvaW50ZXI7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX3ZvaWQ7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX3VpbnQ4OworRkZJX0VYVEVSTiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50ODsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDE2OworRkZJX0VYVEVSTiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50MTY7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX3VpbnQzMjsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDMyOworRkZJX0VYVEVSTiBmZmlfdHlwZSBmZmlfdHlwZV91aW50NjQ7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX3NpbnQ2NDsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfZmxvYXQ7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX2RvdWJsZTsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfcG9pbnRlcjsKIAogI2lmIEBIQVZFX0xPTkdfRE9VQkxFQAotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX2xvbmdkb3VibGU7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX2xvbmdkb3VibGU7CiAjZWxzZQogI2RlZmluZSBmZmlfdHlwZV9sb25nZG91YmxlIGZmaV90eXBlX2RvdWJsZQogI2VuZGlmCkBAIC0xODgsMTIgKzIyMSwyMSBAQAogI2VuZGlmCiB9IGZmaV9jaWY7CiAKKy8qIFVzZWQgaW50ZXJuYWxseSwgYnV0IG92ZXJyaWRkZW4gYnkgc29tZSBhcmNoaXRlY3R1cmVzICovCitmZmlfc3RhdHVzIGZmaV9wcmVwX2NpZl9jb3JlKGZmaV9jaWYgKmNpZiwKKwkJCSAgICAgZmZpX2FiaSBhYmksCisJCQkgICAgIHVuc2lnbmVkIGludCBpc3ZhcmlhZGljLAorCQkJICAgICB1bnNpZ25lZCBpbnQgbmZpeGVkYXJncywKKwkJCSAgICAgdW5zaWduZWQgaW50IG50b3RhbGFyZ3MsCisJCQkgICAgIGZmaV90eXBlICpydHlwZSwKKwkJCSAgICAgZmZpX3R5cGUgKiphdHlwZXMpOworCiAvKiAtLS0tIERlZmluaXRpb25zIGZvciB0aGUgcmF3IEFQSSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaWZuZGVmIEZGSV9TSVpFT0ZfQVJHCiAjIGlmIExPTkdfTUFYID09IDIxNDc0ODM2NDcKICMgIGRlZmluZSBGRklfU0laRU9GX0FSRyAgICAgICAgNAotIyBlbGlmIExPTkdfTUFYID09IDkyMjMzNzIwMzY4NTQ3NzU4MDcKKyMgZWxpZiBMT05HX01BWCA9PSBGRklfNjRfQklUX01BWAogIyAgZGVmaW5lIEZGSV9TSVpFT0ZfQVJHICAgICAgICA4CiAjIGVuZGlmCiAjZW5kaWYKQEAgLTI1NSw3ICsyOTcsMTIgQEAKIF9fZGVjbHNwZWMoYWxpZ24oOCkpCiAjZW5kaWYKIHR5cGVkZWYgc3RydWN0IHsKKyNpZiBARkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRUAKKyAgdm9pZCAqdHJhbXBvbGluZV90YWJsZTsKKyAgdm9pZCAqdHJhbXBvbGluZV90YWJsZV9lbnRyeTsKKyNlbHNlCiAgIGNoYXIgdHJhbXBbRkZJX1RSQU1QT0xJTkVfU0laRV07CisjZW5kaWYKICAgZmZpX2NpZiAgICpjaWY7CiAgIHZvaWQgICAgICgqZnVuKShmZmlfY2lmKix2b2lkKix2b2lkKiosdm9pZCopOwogICB2b2lkICAgICAgKnVzZXJfZGF0YTsKQEAgLTI2Myw2ICszMTAsOSBAQAogfSBmZmlfY2xvc3VyZSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkICg4KSkpOwogI2Vsc2UKIH0gZmZpX2Nsb3N1cmU7CisjIGlmZGVmIF9fc2dpCisjICBwcmFnbWEgcGFjayAwCisjIGVuZGlmCiAjZW5kaWYKIAogdm9pZCAqZmZpX2Nsb3N1cmVfYWxsb2MgKHNpemVfdCBzaXplLCB2b2lkICoqY29kZSk7CkBAIC0yODEsOSArMzMxLDE2IEBACiAJCSAgICAgIHZvaWQgKnVzZXJfZGF0YSwKIAkJICAgICAgdm9pZCpjb2RlbG9jKTsKIAorI2lmZGVmIF9fc2dpCisjIHByYWdtYSBwYWNrIDgKKyNlbmRpZgogdHlwZWRlZiBzdHJ1Y3QgeworI2lmIEBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFQAorICB2b2lkICp0cmFtcG9saW5lX3RhYmxlOworICB2b2lkICp0cmFtcG9saW5lX3RhYmxlX2VudHJ5OworI2Vsc2UKICAgY2hhciB0cmFtcFtGRklfVFJBTVBPTElORV9TSVpFXTsKLQorI2VuZGlmCiAgIGZmaV9jaWYgICAqY2lmOwogCiAjaWYgIUZGSV9OQVRJVkVfUkFXX0FQSQpAQCAtMzAzLDcgKzM2MCwxMiBAQAogfSBmZmlfcmF3X2Nsb3N1cmU7CiAKIHR5cGVkZWYgc3RydWN0IHsKKyNpZiBARkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRUAKKyAgdm9pZCAqdHJhbXBvbGluZV90YWJsZTsKKyAgdm9pZCAqdHJhbXBvbGluZV90YWJsZV9lbnRyeTsKKyNlbHNlCiAgIGNoYXIgdHJhbXBbRkZJX1RSQU1QT0xJTkVfU0laRV07CisjZW5kaWYKIAogICBmZmlfY2lmICAgKmNpZjsKIApAQCAtMzU5LDYgKzQyMSwxMyBAQAogCQkJZmZpX3R5cGUgKnJ0eXBlLAogCQkJZmZpX3R5cGUgKiphdHlwZXMpOwogCitmZmlfc3RhdHVzIGZmaV9wcmVwX2NpZl92YXIoZmZpX2NpZiAqY2lmLAorCQkJICAgIGZmaV9hYmkgYWJpLAorCQkJICAgIHVuc2lnbmVkIGludCBuZml4ZWRhcmdzLAorCQkJICAgIHVuc2lnbmVkIGludCBudG90YWxhcmdzLAorCQkJICAgIGZmaV90eXBlICpydHlwZSwKKwkJCSAgICBmZmlfdHlwZSAqKmF0eXBlcyk7CisKIHZvaWQgZmZpX2NhbGwoZmZpX2NpZiAqY2lmLAogCSAgICAgIHZvaWQgKCpmbikodm9pZCksCiAJICAgICAgdm9pZCAqcnZhbHVlLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL2ZmaV9jb21tb24uaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5jbHVkZS9mZmlfY29tbW9uLmgKaW5kZXggNDJjYWNlOS4uYzE3OWQ2OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL2ZmaV9jb21tb24uaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvZmZpX2NvbW1vbi5oCkBAIC0xLDcgKzEsOCBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaV9jb21tb24uaCAtIENvcHlyaWdodCAoYykgMTk5NiAgUmVkIEhhdCwgSW5jLgotICAgQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jCi0KKyAgIGZmaV9jb21tb24uaCAtIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDA3ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYworICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2ICBSZWQgSGF0LCBJbmMuCisgICAgICAgICAgICAgICAgICAKICAgIENvbW1vbiBpbnRlcm5hbCBkZWZpbml0aW9ucyBhbmQgbWFjcm9zLiBPbmx5IG5lY2Vzc2FyeSBmb3IgYnVpbGRpbmcKICAgIGxpYmZmaS4KICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC03NCw2ICs3NSw4IEBACiAKIC8qIFBlcmZvcm0gbWFjaGluZSBkZXBlbmRlbnQgY2lmIHByb2Nlc3NpbmcgKi8KIGZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmX21hY2hkZXAoZmZpX2NpZiAqY2lmKTsKK2ZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmX21hY2hkZXBfdmFyKGZmaV9jaWYgKmNpZiwKKwkgdW5zaWduZWQgaW50IG5maXhlZGFyZ3MsIHVuc2lnbmVkIGludCBudG90YWxhcmdzKTsKIAogLyogRXh0ZW5kZWQgY2lmLCB1c2VkIGluIGNhbGxiYWNrIGZyb20gYXNzZW1ibHkgcm91dGluZSAqLwogdHlwZWRlZiBzdHJ1Y3QKQEAgLTExMiwxMSArMTE1LDE0IEBACiAKIHR5cGVkZWYgZmxvYXQgRkxPQVQzMjsKIAorI2lmbmRlZiBfX0dOVUNfXworI2RlZmluZSBfX2J1aWx0aW5fZXhwZWN0KHgsIGV4cGVjdGVkX3ZhbHVlKSAoeCkKKyNlbmRpZgorI2RlZmluZSBMSUtFTFkoeCkgICAgX19idWlsdGluX2V4cGVjdCghISh4KSwxKQorI2RlZmluZSBVTkxJS0VMWSh4KSAgX19idWlsdGluX2V4cGVjdCgoeCkhPTAsMCkKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKIAogI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbnN0YWxsLXNoIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbnN0YWxsLXNoCmluZGV4IDZlYmU0NmQuLjY3ODFiOTggMTAwNzU1Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5zdGFsbC1zaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luc3RhbGwtc2gKQEAgLTEsNyArMSw3IEBACiAjIS9iaW4vc2gKICMgaW5zdGFsbCAtIGluc3RhbGwgYSBwcm9ncmFtLCBzY3JpcHQsIG9yIGRhdGFmaWxlCiAKLXNjcmlwdHZlcnNpb249MjAwNC0xMi0xNy4wOQorc2NyaXB0dmVyc2lvbj0yMDA5LTA0LTI4LjIxOyAjIFVUQwogCiAjIFRoaXMgb3JpZ2luYXRlcyBmcm9tIFgxMVI1IChtaXQvdXRpbC9zY3JpcHRzL2luc3RhbGwuc2gpLCB3aGljaCB3YXMKICMgbGF0ZXIgcmVsZWFzZWQgaW4gWDExUjYgKHhjL2NvbmZpZy91dGlsL2luc3RhbGwuc2gpIHdpdGggdGhlCkBAIC0zOSwzOCArMzksNjggQEAKICMgd2hlbiB0aGVyZSBpcyBubyBNYWtlZmlsZS4KICMKICMgVGhpcyBzY3JpcHQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBCU0QgaW5zdGFsbCBzY3JpcHQsIGJ1dCB3YXMgd3JpdHRlbgotIyBmcm9tIHNjcmF0Y2guICBJdCBjYW4gb25seSBpbnN0YWxsIG9uZSBmaWxlIGF0IGEgdGltZSwgYSByZXN0cmljdGlvbgotIyBzaGFyZWQgd2l0aCBtYW55IE9TJ3MgaW5zdGFsbCBwcm9ncmFtcy4KKyMgZnJvbSBzY3JhdGNoLgorCitubD0nCisnCitJRlM9IiAiIgkkbmwiCiAKICMgc2V0IERPSVRQUk9HIHRvIGVjaG8gdG8gdGVzdCB0aGlzIHNjcmlwdAogCiAjIERvbid0IHVzZSA6LSBzaW5jZSA0LjNCU0QgYW5kIGVhcmxpZXIgc2hlbGxzIGRvbid0IGxpa2UgaXQuCi1kb2l0PSIke0RPSVRQUk9HLX0iCitkb2l0PSR7RE9JVFBST0ctfQoraWYgdGVzdCAteiAiJGRvaXQiOyB0aGVuCisgIGRvaXRfZXhlYz1leGVjCitlbHNlCisgIGRvaXRfZXhlYz0kZG9pdAorZmkKIAotIyBwdXQgaW4gYWJzb2x1dGUgcGF0aHMgaWYgeW91IGRvbid0IGhhdmUgdGhlbSBpbiB5b3VyIHBhdGg7IG9yIHVzZSBlbnYuIHZhcnMuCisjIFB1dCBpbiBhYnNvbHV0ZSBmaWxlIG5hbWVzIGlmIHlvdSBkb24ndCBoYXZlIHRoZW0gaW4geW91ciBwYXRoOworIyBvciB1c2UgZW52aXJvbm1lbnQgdmFycy4KIAotbXZwcm9nPSIke01WUFJPRy1tdn0iCi1jcHByb2c9IiR7Q1BQUk9HLWNwfSIKLWNobW9kcHJvZz0iJHtDSE1PRFBST0ctY2htb2R9IgotY2hvd25wcm9nPSIke0NIT1dOUFJPRy1jaG93bn0iCi1jaGdycHByb2c9IiR7Q0hHUlBQUk9HLWNoZ3JwfSIKLXN0cmlwcHJvZz0iJHtTVFJJUFBST0ctc3RyaXB9Igotcm1wcm9nPSIke1JNUFJPRy1ybX0iCi1ta2RpcnByb2c9IiR7TUtESVJQUk9HLW1rZGlyfSIKK2NoZ3JwcHJvZz0ke0NIR1JQUFJPRy1jaGdycH0KK2NobW9kcHJvZz0ke0NITU9EUFJPRy1jaG1vZH0KK2Nob3ducHJvZz0ke0NIT1dOUFJPRy1jaG93bn0KK2NtcHByb2c9JHtDTVBQUk9HLWNtcH0KK2NwcHJvZz0ke0NQUFJPRy1jcH0KK21rZGlycHJvZz0ke01LRElSUFJPRy1ta2Rpcn0KK212cHJvZz0ke01WUFJPRy1tdn0KK3JtcHJvZz0ke1JNUFJPRy1ybX0KK3N0cmlwcHJvZz0ke1NUUklQUFJPRy1zdHJpcH0KIAotY2htb2RjbWQ9IiRjaG1vZHByb2cgMDc1NSIKLWNob3duY21kPQorcG9zaXhfZ2xvYj0nPycKK2luaXRpYWxpemVfcG9zaXhfZ2xvYj0nCisgIHRlc3QgIiRwb3NpeF9nbG9iIiAhPSAiPyIgfHwgeworICAgIGlmIChzZXQgLWYpIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICBwb3NpeF9nbG9iPQorICAgIGVsc2UKKyAgICAgIHBvc2l4X2dsb2I9OgorICAgIGZpCisgIH0KKycKKworcG9zaXhfbWtkaXI9CisKKyMgRGVzaXJlZCBtb2RlIG9mIGluc3RhbGxlZCBmaWxlLgorbW9kZT0wNzU1CisKIGNoZ3JwY21kPQotc3RyaXBjbWQ9CitjaG1vZGNtZD0kY2htb2Rwcm9nCitjaG93bmNtZD0KK212Y21kPSRtdnByb2cKIHJtY21kPSIkcm1wcm9nIC1mIgotbXZjbWQ9IiRtdnByb2ciCitzdHJpcGNtZD0KKwogc3JjPQogZHN0PQogZGlyX2FyZz0KLWRzdGFyZz0KK2RzdF9hcmc9CisKK2NvcHlfb25fY2hhbmdlPWZhbHNlCiBub190YXJnZXRfZGlyZWN0b3J5PQogCi11c2FnZT0iVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFstVF0gU1JDRklMRSBEU1RGSUxFCit1c2FnZT0iXAorVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFstVF0gU1JDRklMRSBEU1RGSUxFCiAgICBvcjogJDAgW09QVElPTl0uLi4gU1JDRklMRVMuLi4gRElSRUNUT1JZCiAgICBvcjogJDAgW09QVElPTl0uLi4gLXQgRElSRUNUT1JZIFNSQ0ZJTEVTLi4uCiAgICBvcjogJDAgW09QVElPTl0uLi4gLWQgRElSRUNUT1JJRVMuLi4KQEAgLTgwLDgxICsxMTAsODYgQEAKIEluIHRoZSA0dGgsIGNyZWF0ZSBESVJFQ1RPUklFUy4KIAogT3B0aW9uczoKLS1jICAgICAgICAgKGlnbm9yZWQpCi0tZCAgICAgICAgIGNyZWF0ZSBkaXJlY3RvcmllcyBpbnN0ZWFkIG9mIGluc3RhbGxpbmcgZmlsZXMuCi0tZyBHUk9VUCAgICRjaGdycHByb2cgaW5zdGFsbGVkIGZpbGVzIHRvIEdST1VQLgotLW0gTU9ERSAgICAkY2htb2Rwcm9nIGluc3RhbGxlZCBmaWxlcyB0byBNT0RFLgotLW8gVVNFUiAgICAkY2hvd25wcm9nIGluc3RhbGxlZCBmaWxlcyB0byBVU0VSLgotLXMgICAgICAgICAkc3RyaXBwcm9nIGluc3RhbGxlZCBmaWxlcy4KLS10IERJUkVDVE9SWSAgaW5zdGFsbCBpbnRvIERJUkVDVE9SWS4KLS1UICAgICAgICAgcmVwb3J0IGFuIGVycm9yIGlmIERTVEZJTEUgaXMgYSBkaXJlY3RvcnkuCi0tLWhlbHAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIGFuZCBleGl0LgotLS12ZXJzaW9uICBkaXNwbGF5IHZlcnNpb24gaW5mbyBhbmQgZXhpdC4KKyAgICAgLS1oZWxwICAgICBkaXNwbGF5IHRoaXMgaGVscCBhbmQgZXhpdC4KKyAgICAgLS12ZXJzaW9uICBkaXNwbGF5IHZlcnNpb24gaW5mbyBhbmQgZXhpdC4KKworICAtYyAgICAgICAgICAgIChpZ25vcmVkKQorICAtQyAgICAgICAgICAgIGluc3RhbGwgb25seSBpZiBkaWZmZXJlbnQgKHByZXNlcnZlIHRoZSBsYXN0IGRhdGEgbW9kaWZpY2F0aW9uIHRpbWUpCisgIC1kICAgICAgICAgICAgY3JlYXRlIGRpcmVjdG9yaWVzIGluc3RlYWQgb2YgaW5zdGFsbGluZyBmaWxlcy4KKyAgLWcgR1JPVVAgICAgICAkY2hncnBwcm9nIGluc3RhbGxlZCBmaWxlcyB0byBHUk9VUC4KKyAgLW0gTU9ERSAgICAgICAkY2htb2Rwcm9nIGluc3RhbGxlZCBmaWxlcyB0byBNT0RFLgorICAtbyBVU0VSICAgICAgICRjaG93bnByb2cgaW5zdGFsbGVkIGZpbGVzIHRvIFVTRVIuCisgIC1zICAgICAgICAgICAgJHN0cmlwcHJvZyBpbnN0YWxsZWQgZmlsZXMuCisgIC10IERJUkVDVE9SWSAgaW5zdGFsbCBpbnRvIERJUkVDVE9SWS4KKyAgLVQgICAgICAgICAgICByZXBvcnQgYW4gZXJyb3IgaWYgRFNURklMRSBpcyBhIGRpcmVjdG9yeS4KIAogRW52aXJvbm1lbnQgdmFyaWFibGVzIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGNvbW1hbmRzOgotICBDSEdSUFBST0cgQ0hNT0RQUk9HIENIT1dOUFJPRyBDUFBST0cgTUtESVJQUk9HIE1WUFJPRyBSTVBST0cgU1RSSVBQUk9HCisgIENIR1JQUFJPRyBDSE1PRFBST0cgQ0hPV05QUk9HIENNUFBST0cgQ1BQUk9HIE1LRElSUFJPRyBNVlBST0cKKyAgUk1QUk9HIFNUUklQUFJPRwogIgogCi13aGlsZSB0ZXN0IC1uICIkMSI7IGRvCit3aGlsZSB0ZXN0ICQjIC1uZSAwOyBkbwogICBjYXNlICQxIGluCi0gICAgLWMpIHNoaWZ0Ci0gICAgICAgIGNvbnRpbnVlOzsKKyAgICAtYykgOzsKIAotICAgIC1kKSBkaXJfYXJnPXRydWUKLSAgICAgICAgc2hpZnQKLSAgICAgICAgY29udGludWU7OworICAgIC1DKSBjb3B5X29uX2NoYW5nZT10cnVlOzsKKworICAgIC1kKSBkaXJfYXJnPXRydWU7OwogCiAgICAgLWcpIGNoZ3JwY21kPSIkY2hncnBwcm9nICQyIgotICAgICAgICBzaGlmdAotICAgICAgICBzaGlmdAotICAgICAgICBjb250aW51ZTs7CisJc2hpZnQ7OwogCi0gICAgLS1oZWxwKSBlY2hvICIkdXNhZ2UiOyBleGl0IDA7OworICAgIC0taGVscCkgZWNobyAiJHVzYWdlIjsgZXhpdCAkPzs7CiAKLSAgICAtbSkgY2htb2RjbWQ9IiRjaG1vZHByb2cgJDIiCi0gICAgICAgIHNoaWZ0Ci0gICAgICAgIHNoaWZ0Ci0gICAgICAgIGNvbnRpbnVlOzsKKyAgICAtbSkgbW9kZT0kMgorCWNhc2UgJG1vZGUgaW4KKwkgIConICcqIHwgKicJJyogfCAqJworJyoJICB8IConKicqIHwgKic/JyogfCAqJ1snKikKKwkgICAgZWNobyAiJDA6IGludmFsaWQgbW9kZTogJG1vZGUiID4mMgorCSAgICBleGl0IDE7OworCWVzYWMKKwlzaGlmdDs7CiAKICAgICAtbykgY2hvd25jbWQ9IiRjaG93bnByb2cgJDIiCi0gICAgICAgIHNoaWZ0Ci0gICAgICAgIHNoaWZ0Ci0gICAgICAgIGNvbnRpbnVlOzsKKwlzaGlmdDs7CiAKLSAgICAtcykgc3RyaXBjbWQ9JHN0cmlwcHJvZwotICAgICAgICBzaGlmdAotICAgICAgICBjb250aW51ZTs7CisgICAgLXMpIHN0cmlwY21kPSRzdHJpcHByb2c7OwogCi0gICAgLXQpIGRzdGFyZz0kMgotCXNoaWZ0Ci0Jc2hpZnQKLQljb250aW51ZTs7CisgICAgLXQpIGRzdF9hcmc9JDIKKwlzaGlmdDs7CiAKLSAgICAtVCkgbm9fdGFyZ2V0X2RpcmVjdG9yeT10cnVlCi0Jc2hpZnQKLQljb250aW51ZTs7CisgICAgLVQpIG5vX3RhcmdldF9kaXJlY3Rvcnk9dHJ1ZTs7CiAKLSAgICAtLXZlcnNpb24pIGVjaG8gIiQwICRzY3JpcHR2ZXJzaW9uIjsgZXhpdCAwOzsKKyAgICAtLXZlcnNpb24pIGVjaG8gIiQwICRzY3JpcHR2ZXJzaW9uIjsgZXhpdCAkPzs7CiAKLSAgICAqKSAgIyBXaGVuIC1kIGlzIHVzZWQsIGFsbCByZW1haW5pbmcgYXJndW1lbnRzIGFyZSBkaXJlY3RvcmllcyB0byBjcmVhdGUuCi0JIyBXaGVuIC10IGlzIHVzZWQsIHRoZSBkZXN0aW5hdGlvbiBpcyBhbHJlYWR5IHNwZWNpZmllZC4KLQl0ZXN0IC1uICIkZGlyX2FyZyRkc3RhcmciICYmIGJyZWFrCi0gICAgICAgICMgT3RoZXJ3aXNlLCB0aGUgbGFzdCBhcmd1bWVudCBpcyB0aGUgZGVzdGluYXRpb24uICBSZW1vdmUgaXQgZnJvbSAkQC4KLQlmb3IgYXJnCi0JZG8KLSAgICAgICAgICBpZiB0ZXN0IC1uICIkZHN0YXJnIjsgdGhlbgotCSAgICAjICRAIGlzIG5vdCBlbXB0eTogaXQgY29udGFpbnMgYXQgbGVhc3QgJGFyZy4KLQkgICAgc2V0IGZub3JkICIkQCIgIiRkc3RhcmciCi0JICAgIHNoaWZ0ICMgZm5vcmQKLQkgIGZpCi0JICBzaGlmdCAjIGFyZwotCSAgZHN0YXJnPSRhcmcKLQlkb25lCisgICAgLS0pCXNoaWZ0CiAJYnJlYWs7OworCisgICAgLSopCWVjaG8gIiQwOiBpbnZhbGlkIG9wdGlvbjogJDEiID4mMgorCWV4aXQgMTs7CisKKyAgICAqKSAgYnJlYWs7OwogICBlc2FjCisgIHNoaWZ0CiBkb25lCiAKLWlmIHRlc3QgLXogIiQxIjsgdGhlbgoraWYgdGVzdCAkIyAtbmUgMCAmJiB0ZXN0IC16ICIkZGlyX2FyZyRkc3RfYXJnIjsgdGhlbgorICAjIFdoZW4gLWQgaXMgdXNlZCwgYWxsIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIGRpcmVjdG9yaWVzIHRvIGNyZWF0ZS4KKyAgIyBXaGVuIC10IGlzIHVzZWQsIHRoZSBkZXN0aW5hdGlvbiBpcyBhbHJlYWR5IHNwZWNpZmllZC4KKyAgIyBPdGhlcndpc2UsIHRoZSBsYXN0IGFyZ3VtZW50IGlzIHRoZSBkZXN0aW5hdGlvbi4gIFJlbW92ZSBpdCBmcm9tICRALgorICBmb3IgYXJnCisgIGRvCisgICAgaWYgdGVzdCAtbiAiJGRzdF9hcmciOyB0aGVuCisgICAgICAjICRAIGlzIG5vdCBlbXB0eTogaXQgY29udGFpbnMgYXQgbGVhc3QgJGFyZy4KKyAgICAgIHNldCBmbm9yZCAiJEAiICIkZHN0X2FyZyIKKyAgICAgIHNoaWZ0ICMgZm5vcmQKKyAgICBmaQorICAgIHNoaWZ0ICMgYXJnCisgICAgZHN0X2FyZz0kYXJnCisgIGRvbmUKK2ZpCisKK2lmIHRlc3QgJCMgLWVxIDA7IHRoZW4KICAgaWYgdGVzdCAteiAiJGRpcl9hcmciOyB0aGVuCiAgICAgZWNobyAiJDA6IG5vIGlucHV0IGZpbGUgc3BlY2lmaWVkLiIgPiYyCiAgICAgZXhpdCAxCkBAIC0xNjQsMjQgKzE5OSw0NyBAQAogICBleGl0IDAKIGZpCiAKK2lmIHRlc3QgLXogIiRkaXJfYXJnIjsgdGhlbgorICB0cmFwICcoZXhpdCAkPyk7IGV4aXQnIDEgMiAxMyAxNQorCisgICMgU2V0IHVtYXNrIHNvIGFzIG5vdCB0byBjcmVhdGUgdGVtcHMgd2l0aCB0b28tZ2VuZXJvdXMgbW9kZXMuCisgICMgSG93ZXZlciwgJ3N0cmlwJyByZXF1aXJlcyBib3RoIHJlYWQgYW5kIHdyaXRlIGFjY2VzcyB0byB0ZW1wcy4KKyAgY2FzZSAkbW9kZSBpbgorICAgICMgT3B0aW1pemUgY29tbW9uIGNhc2VzLgorICAgICo2NDQpIGNwX3VtYXNrPTEzMzs7CisgICAgKjc1NSkgY3BfdW1hc2s9MjI7OworCisgICAgKlswLTddKQorICAgICAgaWYgdGVzdCAteiAiJHN0cmlwY21kIjsgdGhlbgorCXVfcGx1c19ydz0KKyAgICAgIGVsc2UKKwl1X3BsdXNfcnc9JyUgMjAwJworICAgICAgZmkKKyAgICAgIGNwX3VtYXNrPWBleHByICcoJyA3NzcgLSAkbW9kZSAlIDEwMDAgJyknICR1X3BsdXNfcndgOzsKKyAgICAqKQorICAgICAgaWYgdGVzdCAteiAiJHN0cmlwY21kIjsgdGhlbgorCXVfcGx1c19ydz0KKyAgICAgIGVsc2UKKwl1X3BsdXNfcnc9LHUrcncKKyAgICAgIGZpCisgICAgICBjcF91bWFzaz0kbW9kZSR1X3BsdXNfcnc7OworICBlc2FjCitmaQorCiBmb3Igc3JjCiBkbwogICAjIFByb3RlY3QgbmFtZXMgc3RhcnRpbmcgd2l0aCBgLScuCiAgIGNhc2UgJHNyYyBpbgotICAgIC0qKSBzcmM9Li8kc3JjIDs7CisgICAgLSopIHNyYz0uLyRzcmM7OwogICBlc2FjCiAKICAgaWYgdGVzdCAtbiAiJGRpcl9hcmciOyB0aGVuCiAgICAgZHN0PSRzcmMKLSAgICBzcmM9Ci0KLSAgICBpZiB0ZXN0IC1kICIkZHN0IjsgdGhlbgotICAgICAgbWtkaXJjbWQ9OgotICAgICAgY2htb2RjbWQ9Ci0gICAgZWxzZQotICAgICAgbWtkaXJjbWQ9JG1rZGlycHJvZwotICAgIGZpCisgICAgZHN0ZGlyPSRkc3QKKyAgICB0ZXN0IC1kICIkZHN0ZGlyIgorICAgIGRzdGRpcl9zdGF0dXM9JD8KICAgZWxzZQorCiAgICAgIyBXYWl0aW5nIGZvciB0aGlzIHRvIGJlIGRldGVjdGVkIGJ5IHRoZSAiJGNwcHJvZyAkc3JjICRkc3R0bXAiIGNvbW1hbmQKICAgICAjIG1pZ2h0IGNhdXNlIGRpcmVjdG9yaWVzIHRvIGJlIGNyZWF0ZWQsIHdoaWNoIHdvdWxkIGJlIGVzcGVjaWFsbHkgYmFkCiAgICAgIyBpZiAkc3JjIChhbmQgdGh1cyAkZHN0dG1wKSBjb250YWlucyAnKicuCkBAIC0xOTAsNzEgKzI0OCwxOTkgQEAKICAgICAgIGV4aXQgMQogICAgIGZpCiAKLSAgICBpZiB0ZXN0IC16ICIkZHN0YXJnIjsgdGhlbgorICAgIGlmIHRlc3QgLXogIiRkc3RfYXJnIjsgdGhlbgogICAgICAgZWNobyAiJDA6IG5vIGRlc3RpbmF0aW9uIHNwZWNpZmllZC4iID4mMgogICAgICAgZXhpdCAxCiAgICAgZmkKIAotICAgIGRzdD0kZHN0YXJnCisgICAgZHN0PSRkc3RfYXJnCiAgICAgIyBQcm90ZWN0IG5hbWVzIHN0YXJ0aW5nIHdpdGggYC0nLgogICAgIGNhc2UgJGRzdCBpbgotICAgICAgLSopIGRzdD0uLyRkc3QgOzsKKyAgICAgIC0qKSBkc3Q9Li8kZHN0OzsKICAgICBlc2FjCiAKICAgICAjIElmIGRlc3RpbmF0aW9uIGlzIGEgZGlyZWN0b3J5LCBhcHBlbmQgdGhlIGlucHV0IGZpbGVuYW1lOyB3b24ndCB3b3JrCiAgICAgIyBpZiBkb3VibGUgc2xhc2hlcyBhcmVuJ3QgaWdub3JlZC4KICAgICBpZiB0ZXN0IC1kICIkZHN0IjsgdGhlbgogICAgICAgaWYgdGVzdCAtbiAiJG5vX3RhcmdldF9kaXJlY3RvcnkiOyB0aGVuCi0JZWNobyAiJDA6ICRkc3Rhcmc6IElzIGEgZGlyZWN0b3J5IiA+JjIKKwllY2hvICIkMDogJGRzdF9hcmc6IElzIGEgZGlyZWN0b3J5IiA+JjIKIAlleGl0IDEKICAgICAgIGZpCi0gICAgICBkc3Q9JGRzdC9gYmFzZW5hbWUgIiRzcmMiYAorICAgICAgZHN0ZGlyPSRkc3QKKyAgICAgIGRzdD0kZHN0ZGlyL2BiYXNlbmFtZSAiJHNyYyJgCisgICAgICBkc3RkaXJfc3RhdHVzPTAKKyAgICBlbHNlCisgICAgICAjIFByZWZlciBkaXJuYW1lLCBidXQgZmFsbCBiYWNrIG9uIGEgc3Vic3RpdHV0ZSBpZiBkaXJuYW1lIGZhaWxzLgorICAgICAgZHN0ZGlyPWAKKwkoZGlybmFtZSAiJGRzdCIpIDI+L2Rldi9udWxsIHx8CisJZXhwciBYIiRkc3QiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCisJICAgICBYIiRkc3QiIDogJ1hcKC8vXClbXi9dJyBcfCBcCisJICAgICBYIiRkc3QiIDogJ1hcKC8vXCkkJyBcfCBcCisJICAgICBYIiRkc3QiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fAorCWVjaG8gWCIkZHN0IiB8CisJICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97CisJCSAgIHMvL1wxLworCQkgICBxCisJCSB9CisJCSAvXlhcKFwvXC9cKVteL10uKi97CisJCSAgIHMvL1wxLworCQkgICBxCisJCSB9CisJCSAvXlhcKFwvXC9cKSQveworCQkgICBzLy9cMS8KKwkJICAgcQorCQkgfQorCQkgL15YXChcL1wpLioveworCQkgICBzLy9cMS8KKwkJICAgcQorCQkgfQorCQkgcy8uKi8uLzsgcScKKyAgICAgIGAKKworICAgICAgdGVzdCAtZCAiJGRzdGRpciIKKyAgICAgIGRzdGRpcl9zdGF0dXM9JD8KICAgICBmaQogICBmaQogCi0gICMgVGhpcyBzZWQgY29tbWFuZCBlbXVsYXRlcyB0aGUgZGlybmFtZSBjb21tYW5kLgotICBkc3RkaXI9YGVjaG8gIiRkc3QiIHwgc2VkIC1lICdzLC8qJCwsO3MsW14vXSokLCw7cywvKiQsLDtzLF4kLC4sJ2AKKyAgb2Jzb2xldGVfbWtkaXJfdXNlZD1mYWxzZQogCi0gICMgTWFrZSBzdXJlIHRoYXQgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBleGlzdHMuCisgIGlmIHRlc3QgJGRzdGRpcl9zdGF0dXMgIT0gMDsgdGhlbgorICAgIGNhc2UgJHBvc2l4X21rZGlyIGluCisgICAgICAnJykKKwkjIENyZWF0ZSBpbnRlcm1lZGlhdGUgZGlycyB1c2luZyBtb2RlIDc1NSBhcyBtb2RpZmllZCBieSB0aGUgdW1hc2suCisJIyBUaGlzIGlzIGxpa2UgRnJlZUJTRCAnaW5zdGFsbCcgYXMgb2YgMTk5Ny0xMC0yOC4KKwl1bWFzaz1gdW1hc2tgCisJY2FzZSAkc3RyaXBjbWQuJHVtYXNrIGluCisJICAjIE9wdGltaXplIGNvbW1vbiBjYXNlcy4KKwkgICpbMjM2N11bMjM2N10pIG1rZGlyX3VtYXNrPSR1bWFzazs7CisJICAuKjBbMDJdWzAyXSB8IC5bMDJdWzAyXSB8IC5bMDJdKSBta2Rpcl91bWFzaz0yMjs7CiAKLSAgIyBTa2lwIGxvdHMgb2Ygc3RhdCBjYWxscyBpbiB0aGUgdXN1YWwgY2FzZS4KLSAgaWYgdGVzdCAhIC1kICIkZHN0ZGlyIjsgdGhlbgotICAgIGRlZmF1bHRJRlM9JwotCSAnCi0gICAgSUZTPSIke0lGUy0kZGVmYXVsdElGU30iCisJICAqWzAtN10pCisJICAgIG1rZGlyX3VtYXNrPWBleHByICR1bWFzayArIDIyIFwKKwkgICAgICAtICR1bWFzayAlIDEwMCAlIDQwICsgJHVtYXNrICUgMjAgXAorCSAgICAgIC0gJHVtYXNrICUgMTAgJSA0ICsgJHVtYXNrICUgMgorCSAgICBgOzsKKwkgICopIG1rZGlyX3VtYXNrPSR1bWFzayxnby13OzsKKwllc2FjCiAKLSAgICBvSUZTPSRJRlMKLSAgICAjIFNvbWUgc2gncyBjYW4ndCBoYW5kbGUgSUZTPS8gZm9yIHNvbWUgcmVhc29uLgotICAgIElGUz0nJScKLSAgICBzZXQgeCBgZWNobyAiJGRzdGRpciIgfCBzZWQgLWUgJ3NAL0AlQGcnIC1lICdzQF4lQC9AJ2AKLSAgICBzaGlmdAotICAgIElGUz0kb0lGUworCSMgV2l0aCAtZCwgY3JlYXRlIHRoZSBuZXcgZGlyZWN0b3J5IHdpdGggdGhlIHVzZXItc3BlY2lmaWVkIG1vZGUuCisJIyBPdGhlcndpc2UsIHJlbHkgb24gJG1rZGlyX3VtYXNrLgorCWlmIHRlc3QgLW4gIiRkaXJfYXJnIjsgdGhlbgorCSAgbWtkaXJfbW9kZT0tbSRtb2RlCisJZWxzZQorCSAgbWtkaXJfbW9kZT0KKwlmaQogCi0gICAgcGF0aGNvbXA9CisJcG9zaXhfbWtkaXI9ZmFsc2UKKwljYXNlICR1bWFzayBpbgorCSAgKlsxMjM1NjddWzAtN11bMC03XSkKKwkgICAgIyBQT1NJWCBta2RpciAtcCBzZXRzIHUrd3ggYml0cyByZWdhcmRsZXNzIG9mIHVtYXNrLCB3aGljaAorCSAgICAjIGlzIGluY29tcGF0aWJsZSB3aXRoIEZyZWVCU0QgJ2luc3RhbGwnIHdoZW4gKHVtYXNrICYgMzAwKSAhPSAwLgorCSAgICA7OworCSAgKikKKwkgICAgdG1wZGlyPSR7VE1QRElSLS90bXB9L2lucyRSQU5ET00tJCQKKwkgICAgdHJhcCAncmV0PSQ/OyBybWRpciAiJHRtcGRpci9kIiAiJHRtcGRpciIgMj4vZGV2L251bGw7IGV4aXQgJHJldCcgMAogCi0gICAgd2hpbGUgdGVzdCAkIyAtbmUgMCA7IGRvCi0gICAgICBwYXRoY29tcD0kcGF0aGNvbXAkMQorCSAgICBpZiAodW1hc2sgJG1rZGlyX3VtYXNrICYmCisJCWV4ZWMgJG1rZGlycHJvZyAkbWtkaXJfbW9kZSAtcCAtLSAiJHRtcGRpci9kIikgPi9kZXYvbnVsbCAyPiYxCisJICAgIHRoZW4KKwkgICAgICBpZiB0ZXN0IC16ICIkZGlyX2FyZyIgfHwgeworCQkgICAjIENoZWNrIGZvciBQT1NJWCBpbmNvbXBhdGliaWxpdGllcyB3aXRoIC1tLgorCQkgICAjIEhQLVVYIDExLjIzIGFuZCBJUklYIDYuNSBta2RpciAtbSAtcCBzZXRzIGdyb3VwLSBvcgorCQkgICAjIG90aGVyLXdyaXRlYWJsZSBiaXQgb2YgcGFyZW50IGRpcmVjdG9yeSB3aGVuIGl0IHNob3VsZG4ndC4KKwkJICAgIyBGcmVlQlNEIDYuMSBta2RpciAtbSAtcCBzZXRzIG1vZGUgb2YgZXhpc3RpbmcgZGlyZWN0b3J5LgorCQkgICBsc19sZF90bXBkaXI9YGxzIC1sZCAiJHRtcGRpciJgCisJCSAgIGNhc2UgJGxzX2xkX3RtcGRpciBpbgorCQkgICAgIGQ/Pz8/LT9yLSopIGRpZmZlcmVudF9tb2RlPTcwMDs7CisJCSAgICAgZD8/Pz8tPy0tKikgZGlmZmVyZW50X21vZGU9NzU1OzsKKwkJICAgICAqKSBmYWxzZTs7CisJCSAgIGVzYWMgJiYKKwkJICAgJG1rZGlycHJvZyAtbSRkaWZmZXJlbnRfbW9kZSAtcCAtLSAiJHRtcGRpciIgJiYgeworCQkgICAgIGxzX2xkX3RtcGRpcl8xPWBscyAtbGQgIiR0bXBkaXIiYAorCQkgICAgIHRlc3QgIiRsc19sZF90bXBkaXIiID0gIiRsc19sZF90bXBkaXJfMSIKKwkJICAgfQorCQkgfQorCSAgICAgIHRoZW4gcG9zaXhfbWtkaXI9OgorCSAgICAgIGZpCisJICAgICAgcm1kaXIgIiR0bXBkaXIvZCIgIiR0bXBkaXIiCisJICAgIGVsc2UKKwkgICAgICAjIFJlbW92ZSBhbnkgZGlycyBsZWZ0IGJlaGluZCBieSBhbmNpZW50IG1rZGlyIGltcGxlbWVudGF0aW9ucy4KKwkgICAgICBybWRpciAuLyRta2Rpcl9tb2RlIC4vLXAgLi8tLSAyPi9kZXYvbnVsbAorCSAgICBmaQorCSAgICB0cmFwICcnIDA7OworCWVzYWM7OworICAgIGVzYWMKKworICAgIGlmCisgICAgICAkcG9zaXhfbWtkaXIgJiYgKAorCXVtYXNrICRta2Rpcl91bWFzayAmJgorCSRkb2l0X2V4ZWMgJG1rZGlycHJvZyAkbWtkaXJfbW9kZSAtcCAtLSAiJGRzdGRpciIKKyAgICAgICkKKyAgICB0aGVuIDoKKyAgICBlbHNlCisKKyAgICAgICMgVGhlIHVtYXNrIGlzIHJpZGljdWxvdXMsIG9yIG1rZGlyIGRvZXMgbm90IGNvbmZvcm0gdG8gUE9TSVgsCisgICAgICAjIG9yIGl0IGZhaWxlZCBwb3NzaWJseSBkdWUgdG8gYSByYWNlIGNvbmRpdGlvbi4gIENyZWF0ZSB0aGUKKyAgICAgICMgZGlyZWN0b3J5IHRoZSBzbG93IHdheSwgc3RlcCBieSBzdGVwLCBjaGVja2luZyBmb3IgcmFjZXMgYXMgd2UgZ28uCisKKyAgICAgIGNhc2UgJGRzdGRpciBpbgorCS8qKSBwcmVmaXg9Jy8nOzsKKwktKikgcHJlZml4PScuLyc7OworCSopICBwcmVmaXg9Jyc7OworICAgICAgZXNhYworCisgICAgICBldmFsICIkaW5pdGlhbGl6ZV9wb3NpeF9nbG9iIgorCisgICAgICBvSUZTPSRJRlMKKyAgICAgIElGUz0vCisgICAgICAkcG9zaXhfZ2xvYiBzZXQgLWYKKyAgICAgIHNldCBmbm9yZCAkZHN0ZGlyCiAgICAgICBzaGlmdAotICAgICAgaWYgdGVzdCAhIC1kICIkcGF0aGNvbXAiOyB0aGVuCi0gICAgICAgICRta2RpcnByb2cgIiRwYXRoY29tcCIKLQkjIG1rZGlyIGNhbiBmYWlsIHdpdGggYSBgRmlsZSBleGlzdCcgZXJyb3IgaW4gY2FzZSBzZXZlcmFsCi0JIyBpbnN0YWxsLXNoIGFyZSBjcmVhdGluZyB0aGUgZGlyZWN0b3J5IGNvbmN1cnJlbnRseS4gIFRoaXMKLQkjIGlzIE9LLgotCXRlc3QgLWQgIiRwYXRoY29tcCIgfHwgZXhpdAorICAgICAgJHBvc2l4X2dsb2Igc2V0ICtmCisgICAgICBJRlM9JG9JRlMKKworICAgICAgcHJlZml4ZXM9CisKKyAgICAgIGZvciBkCisgICAgICBkbworCXRlc3QgLXogIiRkIiAmJiBjb250aW51ZQorCisJcHJlZml4PSRwcmVmaXgkZAorCWlmIHRlc3QgLWQgIiRwcmVmaXgiOyB0aGVuCisJICBwcmVmaXhlcz0KKwllbHNlCisJICBpZiAkcG9zaXhfbWtkaXI7IHRoZW4KKwkgICAgKHVtYXNrPSRta2Rpcl91bWFzayAmJgorCSAgICAgJGRvaXRfZXhlYyAkbWtkaXJwcm9nICRta2Rpcl9tb2RlIC1wIC0tICIkZHN0ZGlyIikgJiYgYnJlYWsKKwkgICAgIyBEb24ndCBmYWlsIGlmIHR3byBpbnN0YW5jZXMgYXJlIHJ1bm5pbmcgY29uY3VycmVudGx5LgorCSAgICB0ZXN0IC1kICIkcHJlZml4IiB8fCBleGl0IDEKKwkgIGVsc2UKKwkgICAgY2FzZSAkcHJlZml4IGluCisJICAgICAgKlwnKikgcXByZWZpeD1gZWNobyAiJHByZWZpeCIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImA7OworCSAgICAgICopIHFwcmVmaXg9JHByZWZpeDs7CisJICAgIGVzYWMKKwkgICAgcHJlZml4ZXM9IiRwcmVmaXhlcyAnJHFwcmVmaXgnIgorCSAgZmkKKwlmaQorCXByZWZpeD0kcHJlZml4LworICAgICAgZG9uZQorCisgICAgICBpZiB0ZXN0IC1uICIkcHJlZml4ZXMiOyB0aGVuCisJIyBEb24ndCBmYWlsIGlmIHR3byBpbnN0YW5jZXMgYXJlIHJ1bm5pbmcgY29uY3VycmVudGx5LgorCSh1bWFzayAkbWtkaXJfdW1hc2sgJiYKKwkgZXZhbCAiXCRkb2l0X2V4ZWMgXCRta2RpcnByb2cgJHByZWZpeGVzIikgfHwKKwkgIHRlc3QgLWQgIiRkc3RkaXIiIHx8IGV4aXQgMQorCW9ic29sZXRlX21rZGlyX3VzZWQ9dHJ1ZQogICAgICAgZmkKLSAgICAgIHBhdGhjb21wPSRwYXRoY29tcC8KLSAgICBkb25lCisgICAgZmkKICAgZmkKIAogICBpZiB0ZXN0IC1uICIkZGlyX2FyZyI7IHRoZW4KLSAgICAkZG9pdCAkbWtkaXJjbWQgIiRkc3QiIFwKLSAgICAgICYmIHsgdGVzdCAteiAiJGNob3duY21kIiB8fCAkZG9pdCAkY2hvd25jbWQgIiRkc3QiOyB9IFwKLSAgICAgICYmIHsgdGVzdCAteiAiJGNoZ3JwY21kIiB8fCAkZG9pdCAkY2hncnBjbWQgIiRkc3QiOyB9IFwKLSAgICAgICYmIHsgdGVzdCAteiAiJHN0cmlwY21kIiB8fCAkZG9pdCAkc3RyaXBjbWQgIiRkc3QiOyB9IFwKLSAgICAgICYmIHsgdGVzdCAteiAiJGNobW9kY21kIiB8fCAkZG9pdCAkY2htb2RjbWQgIiRkc3QiOyB9Ci0KKyAgICB7IHRlc3QgLXogIiRjaG93bmNtZCIgfHwgJGRvaXQgJGNob3duY21kICIkZHN0IjsgfSAmJgorICAgIHsgdGVzdCAteiAiJGNoZ3JwY21kIiB8fCAkZG9pdCAkY2hncnBjbWQgIiRkc3QiOyB9ICYmCisgICAgeyB0ZXN0ICIkb2Jzb2xldGVfbWtkaXJfdXNlZCRjaG93bmNtZCRjaGdycGNtZCIgPSBmYWxzZSB8fAorICAgICAgdGVzdCAteiAiJGNobW9kY21kIiB8fCAkZG9pdCAkY2htb2RjbWQgJG1vZGUgIiRkc3QiOyB9IHx8IGV4aXQgMQogICBlbHNlCi0gICAgZHN0ZmlsZT1gYmFzZW5hbWUgIiRkc3QiYAogCiAgICAgIyBNYWtlIGEgY291cGxlIG9mIHRlbXAgZmlsZSBuYW1lcyBpbiB0aGUgcHJvcGVyIGRpcmVjdG9yeS4KICAgICBkc3R0bXA9JGRzdGRpci9faW5zdC4kJF8KQEAgLTI2MiwxMCArNDQ4LDkgQEAKIAogICAgICMgVHJhcCB0byBjbGVhbiB1cCB0aG9zZSB0ZW1wIGZpbGVzIGF0IGV4aXQuCiAgICAgdHJhcCAncmV0PSQ/OyBybSAtZiAiJGRzdHRtcCIgIiRybXRtcCIgJiYgZXhpdCAkcmV0JyAwCi0gICAgdHJhcCAnKGV4aXQgJD8pOyBleGl0JyAxIDIgMTMgMTUKIAogICAgICMgQ29weSB0aGUgZmlsZSBuYW1lIHRvIHRoZSB0ZW1wIG5hbWUuCi0gICAgJGRvaXQgJGNwcHJvZyAiJHNyYyIgIiRkc3R0bXAiICYmCisgICAgKHVtYXNrICRjcF91bWFzayAmJiAkZG9pdF9leGVjICRjcHByb2cgIiRzcmMiICIkZHN0dG1wIikgJiYKIAogICAgICMgYW5kIHNldCBhbnkgb3B0aW9uczsgZG8gY2htb2QgbGFzdCB0byBwcmVzZXJ2ZSBzZXR1aWQgYml0cy4KICAgICAjCkBAIC0yNzMsNTEgKzQ1OCw2MyBAQAogICAgICMgaWdub3JlIGVycm9ycyBmcm9tIGFueSBvZiB0aGVzZSwganVzdCBtYWtlIHN1cmUgbm90IHRvIGlnbm9yZQogICAgICMgZXJyb3JzIGZyb20gdGhlIGFib3ZlICIkZG9pdCAkY3Bwcm9nICRzcmMgJGRzdHRtcCIgY29tbWFuZC4KICAgICAjCi0gICAgeyB0ZXN0IC16ICIkY2hvd25jbWQiIHx8ICRkb2l0ICRjaG93bmNtZCAiJGRzdHRtcCI7IH0gXAotICAgICAgJiYgeyB0ZXN0IC16ICIkY2hncnBjbWQiIHx8ICRkb2l0ICRjaGdycGNtZCAiJGRzdHRtcCI7IH0gXAotICAgICAgJiYgeyB0ZXN0IC16ICIkc3RyaXBjbWQiIHx8ICRkb2l0ICRzdHJpcGNtZCAiJGRzdHRtcCI7IH0gXAotICAgICAgJiYgeyB0ZXN0IC16ICIkY2htb2RjbWQiIHx8ICRkb2l0ICRjaG1vZGNtZCAiJGRzdHRtcCI7IH0gJiYKKyAgICB7IHRlc3QgLXogIiRjaG93bmNtZCIgfHwgJGRvaXQgJGNob3duY21kICIkZHN0dG1wIjsgfSAmJgorICAgIHsgdGVzdCAteiAiJGNoZ3JwY21kIiB8fCAkZG9pdCAkY2hncnBjbWQgIiRkc3R0bXAiOyB9ICYmCisgICAgeyB0ZXN0IC16ICIkc3RyaXBjbWQiIHx8ICRkb2l0ICRzdHJpcGNtZCAiJGRzdHRtcCI7IH0gJiYKKyAgICB7IHRlc3QgLXogIiRjaG1vZGNtZCIgfHwgJGRvaXQgJGNobW9kY21kICRtb2RlICIkZHN0dG1wIjsgfSAmJgogCi0gICAgIyBOb3cgcmVuYW1lIHRoZSBmaWxlIHRvIHRoZSByZWFsIGRlc3RpbmF0aW9uLgotICAgIHsgJGRvaXQgJG12Y21kIC1mICIkZHN0dG1wIiAiJGRzdGRpci8kZHN0ZmlsZSIgMj4vZGV2L251bGwgXAotICAgICAgfHwgewotCSAgICMgVGhlIHJlbmFtZSBmYWlsZWQsIHBlcmhhcHMgYmVjYXVzZSBtdiBjYW4ndCByZW5hbWUgc29tZXRoaW5nIGVsc2UKLQkgICAjIHRvIGl0c2VsZiwgb3IgcGVyaGFwcyBiZWNhdXNlIG12IGlzIHNvIGFuY2llbnQgdGhhdCBpdCBkb2VzIG5vdAotCSAgICMgc3VwcG9ydCAtZi4KKyAgICAjIElmIC1DLCBkb24ndCBib3RoZXIgdG8gY29weSBpZiBpdCB3b3VsZG4ndCBjaGFuZ2UgdGhlIGZpbGUuCisgICAgaWYgJGNvcHlfb25fY2hhbmdlICYmCisgICAgICAgb2xkPWBMQ19BTEw9QyBscyAtZGxMICIkZHN0IgkyPi9kZXYvbnVsbGAgJiYKKyAgICAgICBuZXc9YExDX0FMTD1DIGxzIC1kbEwgIiRkc3R0bXAiCTI+L2Rldi9udWxsYCAmJgogCi0JICAgIyBOb3cgcmVtb3ZlIG9yIG1vdmUgYXNpZGUgYW55IG9sZCBmaWxlIGF0IGRlc3RpbmF0aW9uIGxvY2F0aW9uLgotCSAgICMgV2UgdHJ5IHRoaXMgdHdvIHdheXMgc2luY2Ugcm0gY2FuJ3QgdW5saW5rIGl0c2VsZiBvbiBzb21lCi0JICAgIyBzeXN0ZW1zIGFuZCB0aGUgZGVzdGluYXRpb24gZmlsZSBtaWdodCBiZSBidXN5IGZvciBvdGhlcgotCSAgICMgcmVhc29ucy4gIEluIHRoaXMgY2FzZSwgdGhlIGZpbmFsIGNsZWFudXAgbWlnaHQgZmFpbCBidXQgdGhlIG5ldwotCSAgICMgZmlsZSBzaG91bGQgc3RpbGwgaW5zdGFsbCBzdWNjZXNzZnVsbHkuCi0JICAgewotCSAgICAgaWYgdGVzdCAtZiAiJGRzdGRpci8kZHN0ZmlsZSI7IHRoZW4KLQkgICAgICAgJGRvaXQgJHJtY21kIC1mICIkZHN0ZGlyLyRkc3RmaWxlIiAyPi9kZXYvbnVsbCBcCi0JICAgICAgIHx8ICRkb2l0ICRtdmNtZCAtZiAiJGRzdGRpci8kZHN0ZmlsZSIgIiRybXRtcCIgMj4vZGV2L251bGwgXAotCSAgICAgICB8fCB7Ci0JCSBlY2hvICIkMDogY2Fubm90IHVubGluayBvciByZW5hbWUgJGRzdGRpci8kZHN0ZmlsZSIgPiYyCi0JCSAoZXhpdCAxKTsgZXhpdCAxCi0JICAgICAgIH0KLQkgICAgIGVsc2UKLQkgICAgICAgOgotCSAgICAgZmkKLQkgICB9ICYmCisgICAgICAgZXZhbCAiJGluaXRpYWxpemVfcG9zaXhfZ2xvYiIgJiYKKyAgICAgICAkcG9zaXhfZ2xvYiBzZXQgLWYgJiYKKyAgICAgICBzZXQgWCAkb2xkICYmIG9sZD06JDI6JDQ6JDU6JDYgJiYKKyAgICAgICBzZXQgWCAkbmV3ICYmIG5ldz06JDI6JDQ6JDU6JDYgJiYKKyAgICAgICAkcG9zaXhfZ2xvYiBzZXQgK2YgJiYKIAotCSAgICMgTm93IHJlbmFtZSB0aGUgZmlsZSB0byB0aGUgcmVhbCBkZXN0aW5hdGlvbi4KLQkgICAkZG9pdCAkbXZjbWQgIiRkc3R0bXAiICIkZHN0ZGlyLyRkc3RmaWxlIgotCSB9Ci0gICAgfQotICBmaSB8fCB7IChleGl0IDEpOyBleGl0IDE7IH0KKyAgICAgICB0ZXN0ICIkb2xkIiA9ICIkbmV3IiAmJgorICAgICAgICRjbXBwcm9nICIkZHN0IiAiJGRzdHRtcCIgPi9kZXYvbnVsbCAyPiYxCisgICAgdGhlbgorICAgICAgcm0gLWYgIiRkc3R0bXAiCisgICAgZWxzZQorICAgICAgIyBSZW5hbWUgdGhlIGZpbGUgdG8gdGhlIHJlYWwgZGVzdGluYXRpb24uCisgICAgICAkZG9pdCAkbXZjbWQgLWYgIiRkc3R0bXAiICIkZHN0IiAyPi9kZXYvbnVsbCB8fAorCisgICAgICAjIFRoZSByZW5hbWUgZmFpbGVkLCBwZXJoYXBzIGJlY2F1c2UgbXYgY2FuJ3QgcmVuYW1lIHNvbWV0aGluZyBlbHNlCisgICAgICAjIHRvIGl0c2VsZiwgb3IgcGVyaGFwcyBiZWNhdXNlIG12IGlzIHNvIGFuY2llbnQgdGhhdCBpdCBkb2VzIG5vdAorICAgICAgIyBzdXBwb3J0IC1mLgorICAgICAgeworCSMgTm93IHJlbW92ZSBvciBtb3ZlIGFzaWRlIGFueSBvbGQgZmlsZSBhdCBkZXN0aW5hdGlvbiBsb2NhdGlvbi4KKwkjIFdlIHRyeSB0aGlzIHR3byB3YXlzIHNpbmNlIHJtIGNhbid0IHVubGluayBpdHNlbGYgb24gc29tZQorCSMgc3lzdGVtcyBhbmQgdGhlIGRlc3RpbmF0aW9uIGZpbGUgbWlnaHQgYmUgYnVzeSBmb3Igb3RoZXIKKwkjIHJlYXNvbnMuICBJbiB0aGlzIGNhc2UsIHRoZSBmaW5hbCBjbGVhbnVwIG1pZ2h0IGZhaWwgYnV0IHRoZSBuZXcKKwkjIGZpbGUgc2hvdWxkIHN0aWxsIGluc3RhbGwgc3VjY2Vzc2Z1bGx5LgorCXsKKwkgIHRlc3QgISAtZiAiJGRzdCIgfHwKKwkgICRkb2l0ICRybWNtZCAtZiAiJGRzdCIgMj4vZGV2L251bGwgfHwKKwkgIHsgJGRvaXQgJG12Y21kIC1mICIkZHN0IiAiJHJtdG1wIiAyPi9kZXYvbnVsbCAmJgorCSAgICB7ICRkb2l0ICRybWNtZCAtZiAiJHJtdG1wIiAyPi9kZXYvbnVsbDsgOjsgfQorCSAgfSB8fAorCSAgeyBlY2hvICIkMDogY2Fubm90IHVubGluayBvciByZW5hbWUgJGRzdCIgPiYyCisJICAgIChleGl0IDEpOyBleGl0IDEKKwkgIH0KKwl9ICYmCisKKwkjIE5vdyByZW5hbWUgdGhlIGZpbGUgdG8gdGhlIHJlYWwgZGVzdGluYXRpb24uCisJJGRvaXQgJG12Y21kICIkZHN0dG1wIiAiJGRzdCIKKyAgICAgIH0KKyAgICBmaSB8fCBleGl0IDEKKworICAgIHRyYXAgJycgMAorICBmaQogZG9uZQogCi0jIFRoZSBmaW5hbCBsaXR0bGUgdHJpY2sgdG8gImNvcnJlY3RseSIgcGFzcyB0aGUgZXhpdCBzdGF0dXMgdG8gdGhlIGV4aXQgdHJhcC4KLXsKLSAgKGV4aXQgMCk7IGV4aXQgMAotfQotCiAjIExvY2FsIHZhcmlhYmxlczoKICMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQogIyB0aW1lLXN0YW1wLXN0YXJ0OiAic2NyaXB0dmVyc2lvbj0iCiAjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAyZC4lMDJIIgotIyB0aW1lLXN0YW1wLWVuZDogIiQiCisjIHRpbWUtc3RhbXAtdGltZS16b25lOiAiVVRDIgorIyB0aW1lLXN0YW1wLWVuZDogIjsgIyBVVEMiCiAjIEVuZDoKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbGliZmZpLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2xpYmZmaS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4ZTQ5MDIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2xpYmZmaS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsNTk1IEBACisvLyAhJCpVVEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7CisJfTsKKwlvYmplY3RWZXJzaW9uID0gNDY7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKwkJNkM0M0NCREMxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaS5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NCQkQxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaS5jICovOyB9OworCQk2QzQzQ0JERDE1MzRGNzZGMDAxNjIzNjQgLyogc3lzdi5TIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NCQkYxNTM0Rjc2RjAwMTYyMzY0IC8qIHN5c3YuUyAqLzsgfTsKKwkJNkM0M0NCREUxNTM0Rjc2RjAwMTYyMzY0IC8qIHRyYW1wb2xpbmUuUyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQkMwMTUzNEY3NkYwMDE2MjM2NCAvKiB0cmFtcG9saW5lLlMgKi87IH07CisJCTZDNDNDQkU2MTUzNEY3NkYwMDE2MjM2NCAvKiBkYXJ3aW4uUyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQkM5MTUzNEY3NkYwMDE2MjM2NCAvKiBkYXJ3aW4uUyAqLzsgfTsKKwkJNkM0M0NCRTgxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaS5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NCQ0IxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaS5jICovOyB9OworCQk2QzQzQ0JFOTE1MzRGNzZGMDAxNjIzNjQgLyogZmZpNjQuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQkNDMTUzNEY3NkYwMDE2MjM2NCAvKiBmZmk2NC5jICovOyB9OworCQk2QzQzQ0MxRjE1MzRGNzc4MDAxNjIzNjQgLyogZGFyd2luLlMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MwNTE1MzRGNzc4MDAxNjIzNjQgLyogZGFyd2luLlMgKi87IH07CisJCTZDNDNDQzIwMTUzNEY3NzgwMDE2MjM2NCAvKiBkYXJ3aW42NC5TIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMDYxNTM0Rjc3ODAwMTYyMzY0IC8qIGRhcndpbjY0LlMgKi87IH07CisJCTZDNDNDQzIxMTUzNEY3NzgwMDE2MjM2NCAvKiBmZmkuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzA3MTUzNEY3NzgwMDE2MjM2NCAvKiBmZmkuYyAqLzsgfTsKKwkJNkM0M0NDMjIxNTM0Rjc3ODAwMTYyMzY0IC8qIGZmaTY0LmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MwODE1MzRGNzc4MDAxNjIzNjQgLyogZmZpNjQuYyAqLzsgfTsKKwkJNkM0M0NDMkYxNTM0RjdCRTAwMTYyMzY0IC8qIGNsb3N1cmVzLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyODE1MzRGN0JFMDAxNjIzNjQgLyogY2xvc3VyZXMuYyAqLzsgfTsKKwkJNkM0M0NDMzAxNTM0RjdCRTAwMTYyMzY0IC8qIGNsb3N1cmVzLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyODE1MzRGN0JFMDAxNjIzNjQgLyogY2xvc3VyZXMuYyAqLzsgfTsKKwkJNkM0M0NDMzExNTM0RjdCRTAwMTYyMzY0IC8qIGRlYnVnLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyOTE1MzRGN0JFMDAxNjIzNjQgLyogZGVidWcuYyAqLzsgfTsKKwkJNkM0M0NDMzIxNTM0RjdCRTAwMTYyMzY0IC8qIGRlYnVnLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyOTE1MzRGN0JFMDAxNjIzNjQgLyogZGVidWcuYyAqLzsgfTsKKwkJNkM0M0NDMzMxNTM0RjdCRTAwMTYyMzY0IC8qIGRsbWFsbG9jLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyQTE1MzRGN0JFMDAxNjIzNjQgLyogZGxtYWxsb2MuYyAqLzsgfTsKKwkJNkM0M0NDMzQxNTM0RjdCRTAwMTYyMzY0IC8qIGRsbWFsbG9jLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyQTE1MzRGN0JFMDAxNjIzNjQgLyogZGxtYWxsb2MuYyAqLzsgfTsKKwkJNkM0M0NDMzUxNTM0RjdCRTAwMTYyMzY0IC8qIGphdmFfcmF3X2FwaS5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMkIxNTM0RjdCRTAwMTYyMzY0IC8qIGphdmFfcmF3X2FwaS5jICovOyB9OworCQk2QzQzQ0MzNjE1MzRGN0JFMDAxNjIzNjQgLyogamF2YV9yYXdfYXBpLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyQjE1MzRGN0JFMDAxNjIzNjQgLyogamF2YV9yYXdfYXBpLmMgKi87IH07CisJCTZDNDNDQzM3MTUzNEY3QkUwMDE2MjM2NCAvKiBwcmVwX2NpZi5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMkMxNTM0RjdCRTAwMTYyMzY0IC8qIHByZXBfY2lmLmMgKi87IH07CisJCTZDNDNDQzM4MTUzNEY3QkUwMDE2MjM2NCAvKiBwcmVwX2NpZi5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMkMxNTM0RjdCRTAwMTYyMzY0IC8qIHByZXBfY2lmLmMgKi87IH07CisJCTZDNDNDQzM5MTUzNEY3QkUwMDE2MjM2NCAvKiByYXdfYXBpLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyRDE1MzRGN0JFMDAxNjIzNjQgLyogcmF3X2FwaS5jICovOyB9OworCQk2QzQzQ0MzQTE1MzRGN0JFMDAxNjIzNjQgLyogcmF3X2FwaS5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMkQxNTM0RjdCRTAwMTYyMzY0IC8qIHJhd19hcGkuYyAqLzsgfTsKKwkJNkM0M0NDM0IxNTM0RjdCRTAwMTYyMzY0IC8qIHR5cGVzLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyRTE1MzRGN0JFMDAxNjIzNjQgLyogdHlwZXMuYyAqLzsgfTsKKwkJNkM0M0NDM0MxNTM0RjdCRTAwMTYyMzY0IC8qIHR5cGVzLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyRTE1MzRGN0JFMDAxNjIzNjQgLyogdHlwZXMuYyAqLzsgfTsKKwkJNkM0M0NDOTcxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDOEQxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNkM0M0NDOTgxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV9jb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzhFMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfY29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0M5OTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX2kzODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzhGMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfaTM4Ni5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNkM0M0NDOUExNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV94ODZfNjQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzkwMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfeDg2XzY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0M5QjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0M5MTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnLmggKi87IH07CisJCTZDNDNDQzlDMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWdfaTM4Ni5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDOTIxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19pMzg2LmggKi87IH07CisJCTZDNDNDQzlEMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWdfeDg2XzY0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0M5MzE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnX3g4Nl82NC5oICovOyB9OworCQk2QzQzQ0M5RTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0M5NDE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0M5RjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2kzODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzk1MTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXRfaTM4Ni5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNkM0M0NDQTAxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldF94ODZfNjQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzk2MTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXRfeDg2XzY0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0NBRDE1MzUwMzk2MDAxNjIzNjQgLyogZmZpLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0NBMjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0NBRTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2FybXY3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0NBMzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2FybXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0NBRjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2NvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDQTQxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9jb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQ0IwMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfaTM4Ni5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDQTUxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9pMzg2LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0NCMTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0NBNjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnLmggKi87IH07CisJCTZDNDNDQ0IyMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWdfYXJtdjcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQ0E3MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWdfYXJtdjcuaCAqLzsgfTsKKwkJNkM0M0NDQjMxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19pMzg2LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0NBODE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnX2kzODYuaCAqLzsgfTsKKwkJNkM0M0NDQjQxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDQTkxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNkM0M0NDQjUxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9hcm0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQ0FBMTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfYXJtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0NCNjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2FybXY3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0NBQjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2FybXY3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0NCNzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2kzODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQ0FDMTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfaTM4Ni5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKy8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJNkM0M0NCM0QxNTM0RTlEMTAwMTYyMzY0IC8qIGxpYmZmaS5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJmZmkuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNkM0M0NCQkQxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaS5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBhdGggPSBmZmkuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NCQkYxNTM0Rjc2RjAwMTYyMzY0IC8qIHN5c3YuUyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtOyBwYXRoID0gc3lzdi5TOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0JDMDE1MzRGNzZGMDAxNjIzNjQgLyogdHJhbXBvbGluZS5TICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc207IHBhdGggPSB0cmFtcG9saW5lLlM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQkM5MTUzNEY3NkYwMDE2MjM2NCAvKiBkYXJ3aW4uUyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtOyBwYXRoID0gZGFyd2luLlM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQkNCMTUzNEY3NkYwMDE2MjM2NCAvKiBmZmkuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBwYXRoID0gZmZpLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQkNDMTUzNEY3NkYwMDE2MjM2NCAvKiBmZmk2NC5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBhdGggPSBmZmk2NC5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0MwNTE1MzRGNzc4MDAxNjIzNjQgLyogZGFyd2luLlMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmFzbTsgcGF0aCA9IGRhcndpbi5TOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0MwNjE1MzRGNzc4MDAxNjIzNjQgLyogZGFyd2luNjQuUyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtOyBwYXRoID0gZGFyd2luNjQuUzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDMDcxNTM0Rjc3ODAwMTYyMzY0IC8qIGZmaS5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBhdGggPSBmZmkuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDMDgxNTM0Rjc3ODAwMTYyMzY0IC8qIGZmaTY0LmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgcGF0aCA9IGZmaTY0LmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzI4MTUzNEY3QkUwMDE2MjM2NCAvKiBjbG9zdXJlcy5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSBjbG9zdXJlcy5jOyBwYXRoID0gc3JjL2Nsb3N1cmVzLmM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNkM0M0NDMjkxNTM0RjdCRTAwMTYyMzY0IC8qIGRlYnVnLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IGRlYnVnLmM7IHBhdGggPSBzcmMvZGVidWcuYzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk2QzQzQ0MyQTE1MzRGN0JFMDAxNjIzNjQgLyogZGxtYWxsb2MuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gZGxtYWxsb2MuYzsgcGF0aCA9IHNyYy9kbG1hbGxvYy5jOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTZDNDNDQzJCMTUzNEY3QkUwMDE2MjM2NCAvKiBqYXZhX3Jhd19hcGkuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gamF2YV9yYXdfYXBpLmM7IHBhdGggPSBzcmMvamF2YV9yYXdfYXBpLmM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNkM0M0NDMkMxNTM0RjdCRTAwMTYyMzY0IC8qIHByZXBfY2lmLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IHByZXBfY2lmLmM7IHBhdGggPSBzcmMvcHJlcF9jaWYuYzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk2QzQzQ0MyRDE1MzRGN0JFMDAxNjIzNjQgLyogcmF3X2FwaS5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSByYXdfYXBpLmM7IHBhdGggPSBzcmMvcmF3X2FwaS5jOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTZDNDNDQzJFMTUzNEY3QkUwMDE2MjM2NCAvKiB0eXBlcy5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSB0eXBlcy5jOyBwYXRoID0gc3JjL3R5cGVzLmM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNkM0M0NDOEQxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDOEUxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV9jb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpX2NvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0M4RjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX2kzODYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpX2kzODYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDOTAxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV94ODZfNjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpX3g4Nl82NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0M5MTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaWNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0M5MjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnX2kzODYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpY29uZmlnX2kzODYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDOTMxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZ194ODZfNjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpY29uZmlnX3g4Nl82NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0M5NDE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaXRhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0M5NTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2kzODYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpdGFyZ2V0X2kzODYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDOTYxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldF94ODZfNjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpdGFyZ2V0X3g4Nl82NC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBMjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBMzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2FybXY3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaV9hcm12Ny5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBNDE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2NvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmlfY29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQ0E1MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfaTM4Ni5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmlfaTM4Ni5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBNjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaWNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBNzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnX2FybXY3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaWNvbmZpZ19hcm12Ny5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBODE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnX2kzODYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpY29uZmlnX2kzODYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDQTkxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZml0YXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDQUExNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9hcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpdGFyZ2V0X2FybS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBQjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2FybXY3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaXRhcmdldF9hcm12Ny5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBQzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2kzODYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpdGFyZ2V0X2kzODYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZGOTgwQkExNDczODYxMzAwMDhGMTIxIC8qIGxpYmZmaS5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJmZmkuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKy8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk2QzQzQ0IzQTE1MzRFOUQxMDAxNjIzNjQgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQlGNkY5ODBCNzE0NzM4NjEzMDAwOEYxMjEgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYR3JvdXAgc2VjdGlvbiAqLworCQk2QzQzQ0JBRjE1MzRGNzZGMDAxNjIzNjQgLyogaU9TICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2QzQzQ0NBMTE1MzUwMzk2MDAxNjIzNjQgLyogaW5jbHVkZSAqLywKKwkJCQk2QzQzQ0JCQjE1MzRGNzZGMDAxNjIzNjQgLyogc3JjICovLAorCQkJKTsKKwkJCW5hbWUgPSBpT1M7CisJCQlwYXRoID0gaW9zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNkM0M0NCQkIxNTM0Rjc2RjAwMTYyMzY0IC8qIHNyYyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNkM0M0NCQzgxNTM0Rjc2RjAwMTYyMzY0IC8qIHg4NiAqLywKKwkJCQk2QzQzQ0JCQzE1MzRGNzZGMDAxNjIzNjQgLyogYXJtICovLAorCQkJKTsKKwkJCXBhdGggPSBzcmM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk2QzQzQ0JCQzE1MzRGNzZGMDAxNjIzNjQgLyogYXJtICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2QzQzQ0JCRDE1MzRGNzZGMDAxNjIzNjQgLyogZmZpLmMgKi8sCisJCQkJNkM0M0NCQkYxNTM0Rjc2RjAwMTYyMzY0IC8qIHN5c3YuUyAqLywKKwkJCQk2QzQzQ0JDMDE1MzRGNzZGMDAxNjIzNjQgLyogdHJhbXBvbGluZS5TICovLAorCQkJKTsKKwkJCXBhdGggPSBhcm07CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk2QzQzQ0JDODE1MzRGNzZGMDAxNjIzNjQgLyogeDg2ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2QzQzQ0JDOTE1MzRGNzZGMDAxNjIzNjQgLyogZGFyd2luLlMgKi8sCisJCQkJNkM0M0NCQ0IxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaS5jICovLAorCQkJCTZDNDNDQkNDMTUzNEY3NkYwMDE2MjM2NCAvKiBmZmk2NC5jICovLAorCQkJKTsKKwkJCXBhdGggPSB4ODY7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk2QzQzQ0JGMDE1MzRGNzc4MDAxNjIzNjQgLyogT1MgWCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNkM0M0NDOEMxNTM1MDMyNjAwMTYyMzY0IC8qIGluY2x1ZGUgKi8sCisJCQkJNkM0M0NCRkMxNTM0Rjc3ODAwMTYyMzY0IC8qIHNyYyAqLywKKwkJCSk7CisJCQluYW1lID0gIk9TIFgiOworCQkJcGF0aCA9IG9zeDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTZDNDNDQkZDMTUzNEY3NzgwMDE2MjM2NCAvKiBzcmMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTZDNDNDQzA0MTUzNEY3NzgwMDE2MjM2NCAvKiB4ODYgKi8sCisJCQkpOworCQkJcGF0aCA9IHNyYzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTZDNDNDQzA0MTUzNEY3NzgwMDE2MjM2NCAvKiB4ODYgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTZDNDNDQzA1MTUzNEY3NzgwMDE2MjM2NCAvKiBkYXJ3aW4uUyAqLywKKwkJCQk2QzQzQ0MwNjE1MzRGNzc4MDAxNjIzNjQgLyogZGFyd2luNjQuUyAqLywKKwkJCQk2QzQzQ0MwNzE1MzRGNzc4MDAxNjIzNjQgLyogZmZpLmMgKi8sCisJCQkJNkM0M0NDMDgxNTM0Rjc3ODAwMTYyMzY0IC8qIGZmaTY0LmMgKi8sCisJCQkpOworCQkJcGF0aCA9IHg4NjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTZDNDNDQzNEMTUzNEY3QzQwMDE2MjM2NCAvKiBzcmMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTZDNDNDQzI4MTUzNEY3QkUwMDE2MjM2NCAvKiBjbG9zdXJlcy5jICovLAorCQkJCTZDNDNDQzI5MTUzNEY3QkUwMDE2MjM2NCAvKiBkZWJ1Zy5jICovLAorCQkJCTZDNDNDQzJBMTUzNEY3QkUwMDE2MjM2NCAvKiBkbG1hbGxvYy5jICovLAorCQkJCTZDNDNDQzJCMTUzNEY3QkUwMDE2MjM2NCAvKiBqYXZhX3Jhd19hcGkuYyAqLywKKwkJCQk2QzQzQ0MyQzE1MzRGN0JFMDAxNjIzNjQgLyogcHJlcF9jaWYuYyAqLywKKwkJCQk2QzQzQ0MyRDE1MzRGN0JFMDAxNjIzNjQgLyogcmF3X2FwaS5jICovLAorCQkJCTZDNDNDQzJFMTUzNEY3QkUwMDE2MjM2NCAvKiB0eXBlcy5jICovLAorCQkJKTsKKwkJCW5hbWUgPSBzcmM7CisJCQlwYXRoID0gaW9zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNkM0M0NDOEMxNTM1MDMyNjAwMTYyMzY0IC8qIGluY2x1ZGUgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTZDNDNDQzhEMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmkuaCAqLywKKwkJCQk2QzQzQ0M4RTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX2NvbW1vbi5oICovLAorCQkJCTZDNDNDQzhGMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfaTM4Ni5oICovLAorCQkJCTZDNDNDQzkwMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfeDg2XzY0LmggKi8sCisJCQkJNkM0M0NDOTExNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZy5oICovLAorCQkJCTZDNDNDQzkyMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWdfaTM4Ni5oICovLAorCQkJCTZDNDNDQzkzMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWdfeDg2XzY0LmggKi8sCisJCQkJNkM0M0NDOTQxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldC5oICovLAorCQkJCTZDNDNDQzk1MTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXRfaTM4Ni5oICovLAorCQkJCTZDNDNDQzk2MTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXRfeDg2XzY0LmggKi8sCisJCQkpOworCQkJcGF0aCA9IGluY2x1ZGU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk2QzQzQ0NBMTE1MzUwMzk2MDAxNjIzNjQgLyogaW5jbHVkZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNkM0M0NDQTIxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaS5oICovLAorCQkJCTZDNDNDQ0EzMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfYXJtdjcuaCAqLywKKwkJCQk2QzQzQ0NBNDE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2NvbW1vbi5oICovLAorCQkJCTZDNDNDQ0E1MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfaTM4Ni5oICovLAorCQkJCTZDNDNDQ0E2MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWcuaCAqLywKKwkJCQk2QzQzQ0NBNzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnX2FybXY3LmggKi8sCisJCQkJNkM0M0NDQTgxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19pMzg2LmggKi8sCisJCQkJNkM0M0NDQTkxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldC5oICovLAorCQkJCTZDNDNDQ0FBMTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfYXJtLmggKi8sCisJCQkJNkM0M0NDQUIxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9hcm12Ny5oICovLAorCQkJCTZDNDNDQ0FDMTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfaTM4Ni5oICovLAorCQkJKTsKKwkJCXBhdGggPSBpbmNsdWRlOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJRjZCMDgzOTUxNDcyMUVFNTAwMzFEOEExID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2QzQzQ0MzRDE1MzRGN0M0MDAxNjIzNjQgLyogc3JjICovLAorCQkJCTZDNDNDQkFGMTUzNEY3NkYwMDE2MjM2NCAvKiBpT1MgKi8sCisJCQkJNkM0M0NCRjAxNTM0Rjc3ODAwMTYyMzY0IC8qIE9TIFggKi8sCisJCQkJRjZGOTgwQzYxNDczODYyNjAwMDhGMTIxIC8qIFByb2R1Y3RzICovLAorCQkJKTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUY2Rjk4MEM2MTQ3Mzg2MjYwMDA4RjEyMSAvKiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRjZGOTgwQkExNDczODYxMzAwMDhGMTIxIC8qIGxpYmZmaS5hICovLAorCQkJCTZDNDNDQjNEMTUzNEU5RDEwMDE2MjM2NCAvKiBsaWJmZmkuYSAqLywKKwkJCSk7CisJCQluYW1lID0gUHJvZHVjdHM7CisJCQlwYXRoID0gLi4vLi47CisJCQlzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOworCQl9OworLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk2QzQzQ0IzQjE1MzRFOUQxMDAxNjIzNjQgLyogSGVhZGVycyAqLyA9IHsKKwkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTZDNDNDQzk3MTUzNTAzMjYwMDE2MjM2NCAvKiBmZmkuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQzk4MTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfY29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0M5OTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX2kzODYuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQzlBMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfeDg2XzY0LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0M5RTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0M5RjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2kzODYuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQ0EwMTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXRfeDg2XzY0LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0M5QjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0M5QzE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnX2kzODYuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQzlEMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWdfeDg2XzY0LmggaW4gSGVhZGVycyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJRjZGOTgwQjgxNDczODYxMzAwMDhGMTIxIC8qIEhlYWRlcnMgKi8gPSB7CisJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk2QzQzQ0NBRDE1MzUwMzk2MDAxNjIzNjQgLyogZmZpLmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NBRTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2FybXY3LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NBRjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2NvbW1vbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDQjAxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9pMzg2LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NCNDE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NCNTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2FybS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDQjYxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9hcm12Ny5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDQjcxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9pMzg2LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NCMTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NCMjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnX2FybXY3LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NCMzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnX2kzODYuaCBpbiBIZWFkZXJzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJNkM0M0NCM0MxNTM0RTlEMTAwMTYyMzY0IC8qIGxpYmZmaSBPUyBYICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDZDNDNDQjRBMTUzNEU5RDEwMDE2MjM2NCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibGliZmZpIE9TIFgiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJNkM0M0NDNDAxNTM0RkYzQjAwMTYyMzY0IC8qIEdlbmVyYXRlIFNvdXJjZSBhbmQgSGVhZGVycyAqLywKKwkJCQk2QzQzQ0IzOTE1MzRFOUQxMDAxNjIzNjQgLyogU291cmNlcyAqLywKKwkJCQk2QzQzQ0IzQTE1MzRFOUQxMDAxNjIzNjQgLyogRnJhbWV3b3JrcyAqLywKKwkJCQk2QzQzQ0IzQjE1MzRFOUQxMDAxNjIzNjQgLyogSGVhZGVycyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gImxpYmZmaSBPUyBYIjsKKwkJCXByb2R1Y3ROYW1lID0gImZmaSBPUyBYIjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSA2QzQzQ0IzRDE1MzRFOUQxMDAxNjIzNjQgLyogbGliZmZpLmEgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuc3RhdGljIjsKKwkJfTsKKwkJRjZGOTgwQjkxNDczODYxMzAwMDhGMTIxIC8qIGxpYmZmaSBpT1MgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gRjZGOTgwQzQxNDczODYxMzAwMDhGMTIxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsaWJmZmkgaU9TIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTZDNDNDQzNFMTUzNEY4RTIwMDE2MjM2NCAvKiBHZW5lcmF0ZSBUcmFtcG9saW5lICovLAorCQkJCTZDNDNDQzNGMTUzNEZGMUIwMDE2MjM2NCAvKiBHZW5lcmF0ZSBTb3VyY2UgYW5kIEhlYWRlcnMgKi8sCisJCQkJRjZGOTgwQjYxNDczODYxMzAwMDhGMTIxIC8qIFNvdXJjZXMgKi8sCisJCQkJRjZGOTgwQjcxNDczODYxMzAwMDhGMTIxIC8qIEZyYW1ld29ya3MgKi8sCisJCQkJRjZGOTgwQjgxNDczODYxMzAwMDhGMTIxIC8qIEhlYWRlcnMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9ICJsaWJmZmkgaU9TIjsKKwkJCXByb2R1Y3ROYW1lID0gZmZpOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IEY2Rjk4MEJBMTQ3Mzg2MTMwMDA4RjEyMSAvKiBsaWJmZmkuYSAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5zdGF0aWMiOworCQl9OworLyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCQlGNkIwODM5NzE0NzIxRUU1MDAzMUQ4QTEgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7CisJCQlpc2EgPSBQQlhQcm9qZWN0OworCQkJYXR0cmlidXRlcyA9IHsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDQzMDsKKwkJCX07CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gRjZCMDgzOUExNDcyMUVFNTAwMzFEOEExIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAibGliZmZpIiAqLzsKKwkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDMuMiI7CisJCQlkZXZlbG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7CisJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMDsKKwkJCWtub3duUmVnaW9ucyA9ICgKKwkJCQllbiwKKwkJCSk7CisJCQltYWluR3JvdXAgPSBGNkIwODM5NTE0NzIxRUU1MDAzMUQ4QTE7CisJCQlwcm9kdWN0UmVmR3JvdXAgPSBGNkIwODM5NTE0NzIxRUU1MDAzMUQ4QTE7CisJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOworCQkJcHJvamVjdFJvb3QgPSAiIjsKKwkJCXRhcmdldHMgPSAoCisJCQkJRjZGOTgwQjkxNDczODYxMzAwMDhGMTIxIC8qIGxpYmZmaSBpT1MgKi8sCisJCQkJNkM0M0NCM0MxNTM0RTlEMTAwMTYyMzY0IC8qIGxpYmZmaSBPUyBYICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJNkM0M0NDM0UxNTM0RjhFMjAwMTYyMzY0IC8qIEdlbmVyYXRlIFRyYW1wb2xpbmUgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRlIFRyYW1wb2xpbmUiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvdXNyL2Jpbi9weXRob247CisJCQlzaGVsbFNjcmlwdCA9ICJpbXBvcnQgc3VicHJvY2Vzc1xuaW1wb3J0IHJlXG5pbXBvcnQgb3NcbmltcG9ydCBlcnJub1xuaW1wb3J0IHN5c1xuXG5kZWYgbWFpbigpOlxuICAgIHdpdGggb3Blbignc3JjL2FybS90cmFtcG9saW5lLlMnLCAndycpIGFzIHRyYW1wX291dDpcbiAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oWydiYXNoJywgJ3NyYy9hcm0vZ2VudHJhbXAuc2gnXSwgc3Rkb3V0PXRyYW1wX291dClcbiAgICAgICAgcC53YWl0KClcblxuaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzpcbiAgICBtYWluKCkiOworCQl9OworCQk2QzQzQ0MzRjE1MzRGRjFCMDAxNjIzNjQgLyogR2VuZXJhdGUgU291cmNlIGFuZCBIZWFkZXJzICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkpOworCQkJbmFtZSA9ICJHZW5lcmF0ZSBTb3VyY2UgYW5kIEhlYWRlcnMiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAiL3Vzci9iaW4vcHl0aG9uIGdlbmVyYXRlLWlvcy1zb3VyY2UtYW5kLWhlYWRlcnMucHkiOworCQl9OworCQk2QzQzQ0M0MDE1MzRGRjNCMDAxNjIzNjQgLyogR2VuZXJhdGUgU291cmNlIGFuZCBIZWFkZXJzICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkpOworCQkJbmFtZSA9ICJHZW5lcmF0ZSBTb3VyY2UgYW5kIEhlYWRlcnMiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAiL3Vzci9iaW4vcHl0aG9uIGdlbmVyYXRlLW9zeC1zb3VyY2UtYW5kLWhlYWRlcnMucHkiOworCQl9OworLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJNkM0M0NCMzkxNTM0RTlEMTAwMTYyMzY0IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk2QzQzQ0MxRjE1MzRGNzc4MDAxNjIzNjQgLyogZGFyd2luLlMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MyMDE1MzRGNzc4MDAxNjIzNjQgLyogZGFyd2luNjQuUyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzIxMTUzNEY3NzgwMDE2MjM2NCAvKiBmZmkuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzIyMTUzNEY3NzgwMDE2MjM2NCAvKiBmZmk2NC5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMzAxNTM0RjdCRTAwMTYyMzY0IC8qIGNsb3N1cmVzLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzMjE1MzRGN0JFMDAxNjIzNjQgLyogZGVidWcuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzM0MTUzNEY3QkUwMDE2MjM2NCAvKiBkbG1hbGxvYy5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMzYxNTM0RjdCRTAwMTYyMzY0IC8qIGphdmFfcmF3X2FwaS5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMzgxNTM0RjdCRTAwMTYyMzY0IC8qIHByZXBfY2lmLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzQTE1MzRGN0JFMDAxNjIzNjQgLyogcmF3X2FwaS5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDM0MxNTM0RjdCRTAwMTYyMzY0IC8qIHR5cGVzLmMgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJRjZGOTgwQjYxNDczODYxMzAwMDhGMTIxIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk2QzQzQ0JEQzE1MzRGNzZGMDAxNjIzNjQgLyogZmZpLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0JERDE1MzRGNzZGMDAxNjIzNjQgLyogc3lzdi5TIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NCREUxNTM0Rjc2RjAwMTYyMzY0IC8qIHRyYW1wb2xpbmUuUyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQkU2MTUzNEY3NkYwMDE2MjM2NCAvKiBkYXJ3aW4uUyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQkU4MTUzNEY3NkYwMDE2MjM2NCAvKiBmZmkuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQkU5MTUzNEY3NkYwMDE2MjM2NCAvKiBmZmk2NC5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMkYxNTM0RjdCRTAwMTYyMzY0IC8qIGNsb3N1cmVzLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzMTE1MzRGN0JFMDAxNjIzNjQgLyogZGVidWcuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzMzMTUzNEY3QkUwMDE2MjM2NCAvKiBkbG1hbGxvYy5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMzUxNTM0RjdCRTAwMTYyMzY0IC8qIGphdmFfcmF3X2FwaS5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMzcxNTM0RjdCRTAwMTYyMzY0IC8qIHByZXBfY2lmLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzOTE1MzRGN0JFMDAxNjIzNjQgLyogcmF3X2FwaS5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDM0IxNTM0RjdCRTAwMTYyMzY0IC8qIHR5cGVzLmMgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJNkM0M0NCNEIxNTM0RTlEMTAwMTYyMzY0IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfMzJfNjRfQklUKSI7CisJCQkJRFNUUk9PVCA9IC90bXAvZmZpLmRzdDsKKwkJCQlGUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkJIlwiJChTWVNURU1fQVBQU19ESVIpL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvTGlicmFyeS9GcmFtZXdvcmtzXCIiLAorCQkJCSk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1MgPSBZRVM7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNjsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gWUVTOworCQkJCVBST0RVQ1RfTkFNRSA9IGZmaTsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJNkM0M0NCNEMxNTM0RTlEMTAwMTYyMzY0IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF8zMl82NF9CSVQpIjsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlEU1RST09UID0gL3RtcC9mZmkuZHN0OworCQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCQkiXCIkKFNZU1RFTV9BUFBTX0RJUikvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9MaWJyYXJ5L0ZyYW1ld29ya3NcIiIsCisJCQkJKTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFUzsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC42OworCQkJCVBST0RVQ1RfTkFNRSA9IGZmaTsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQlGNkIwODNBQjE0NzIxRUU1MDAzMUQ4QTEgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF8zMl9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFMVUUgPSBOTzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9IGlvcy9pbmNsdWRlOworCQkJCVNES1JPT1QgPSBpcGhvbmVvczsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCUY2QjA4M0FDMTQ3MjFFRTUwMDMxRDhBMSAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfMzJfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAiIjsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFMVUUgPSBOTzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9IGlvcy9pbmNsdWRlOworCQkJCVNES1JPT1QgPSBpcGhvbmVvczsKKwkJCQlWQUxJREFURV9QUk9EVUNUID0gWUVTOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQlGNkY5ODBDMjE0NzM4NjEzMDAwOEYxMjEgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQVJDSFMgPSAoCisJCQkJCWFybXY2LAorCQkJCQlhcm12NywKKwkJCQkpOworCQkJCURTVFJPT1QgPSAvdG1wL2ZmaS5kc3Q7CisJCQkJR0NDX1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlFUzsKKwkJCQlHQ0NfVEhVTUJfU1VQUE9SVCA9IE5POworCQkJCUlQSE9ORU9TX0RFUExPWU1FTlRfVEFSR0VUID0gNC4wOworCQkJCU9USEVSX0xERkxBR1MgPSAiLU9iakMiOworCQkJCVBST0RVQ1RfTkFNRSA9IGZmaTsKKwkJCQlTS0lQX0lOU1RBTEwgPSBZRVM7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQlGNkY5ODBDMzE0NzM4NjEzMDAwOEYxMjEgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBUkNIUyA9ICgKKwkJCQkJYXJtdjYsCisJCQkJCWFybXY3LAorCQkJCSk7CisJCQkJRFNUUk9PVCA9IC90bXAvZmZpLmRzdDsKKwkJCQlHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOworCQkJCUdDQ19USFVNQl9TVVBQT1JUID0gTk87CisJCQkJSVBIT05FT1NfREVQTE9ZTUVOVF9UQVJHRVQgPSA0LjA7CisJCQkJT1RIRVJfTERGTEFHUyA9ICItT2JqQyI7CisJCQkJUFJPRFVDVF9OQU1FID0gZmZpOworCQkJCVNLSVBfSU5TVEFMTCA9IFlFUzsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQk2QzQzQ0I0QTE1MzRFOUQxMDAxNjIzNjQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImxpYmZmaSBPUyBYIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTZDNDNDQjRCMTUzNEU5RDEwMDE2MjM2NCAvKiBEZWJ1ZyAqLywKKwkJCQk2QzQzQ0I0QzE1MzRFOUQxMDAxNjIzNjQgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworCQlGNkIwODM5QTE0NzIxRUU1MDAzMUQ4QTEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJsaWJmZmkiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJRjZCMDgzQUIxNDcyMUVFNTAwMzFEOEExIC8qIERlYnVnICovLAorCQkJCUY2QjA4M0FDMTQ3MjFFRTUwMDMxRDhBMSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisJCUY2Rjk4MEM0MTQ3Mzg2MTMwMDA4RjEyMSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibGliZmZpIGlPUyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQlGNkY5ODBDMjE0NzM4NjEzMDAwOEYxMjEgLyogRGVidWcgKi8sCisJCQkJRjZGOTgwQzMxNDczODYxMzAwMDhGMTIxIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9OworCXJvb3RPYmplY3QgPSBGNkIwODM5NzE0NzIxRUU1MDAzMUQ4QTEgLyogUHJvamVjdCBvYmplY3QgKi87Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2xpYnRvb2wtdmVyc2lvbiBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbGlidG9vbC12ZXJzaW9uCmluZGV4IGI4YjgwZTAuLjk1ZjQ4YzUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbGlidG9vbC12ZXJzaW9uCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbGlidG9vbC12ZXJzaW9uCkBAIC0yNiw0ICsyNiw0IEBACiAjICAgIHJlbGVhc2UsIHRoZW4gc2V0IGFnZSB0byAwLgogIwogIyBDVVJSRU5UOlJFVklTSU9OOkFHRQotNToxMDowCis2OjA6MApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9sdG1haW4uc2ggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2x0bWFpbi5zaApvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IDY5MzlkY2MuLmMyODUyZDgKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9sdG1haW4uc2gKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9sdG1haW4uc2gKQEAgLTEsOSArMSw5IEBACi0jIEdlbmVyYXRlZCBmcm9tIGx0bWFpbi5tNHNoLgogCi0jIGx0bWFpbi5zaCAoR05VIGxpYnRvb2wpIDIuMi42CisjIGxpYnRvb2wgKEdOVSBsaWJ0b29sKSAyLjQuMgogIyBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5NgogCi0jIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsCisjIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCiAjIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgogCkBAIC0zMiw1MCArMzIsNTcgQEAKICMKICMgUHJvdmlkZSBnZW5lcmFsaXplZCBsaWJyYXJ5LWJ1aWxkaW5nIHN1cHBvcnQgc2VydmljZXMuCiAjCi0jICAgICAtLWNvbmZpZyAgICAgICAgICAgICBzaG93IGFsbCBjb25maWd1cmF0aW9uIHZhcmlhYmxlcwotIyAgICAgLS1kZWJ1ZyAgICAgICAgICAgICAgZW5hYmxlIHZlcmJvc2Ugc2hlbGwgdHJhY2luZwotIyAtbiwgLS1kcnktcnVuICAgICAgICAgICAgZGlzcGxheSBjb21tYW5kcyB3aXRob3V0IG1vZGlmeWluZyBhbnkgZmlsZXMKLSMgICAgIC0tZmVhdHVyZXMgICAgICAgICAgIGRpc3BsYXkgYmFzaWMgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdAotIyAgICAgLS1tb2RlPU1PREUgICAgICAgICAgdXNlIG9wZXJhdGlvbiBtb2RlIE1PREUKLSMgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMgIGRvbid0IHJlbW92ZSBkdXBsaWNhdGUgZGVwZW5kZW5jeSBsaWJyYXJpZXMKLSMgICAgIC0tcXVpZXQsIC0tc2lsZW50ICAgIGRvbid0IHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMKLSMgICAgIC0tdGFnPVRBRyAgICAgICAgICAgIHVzZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmcm9tIHRhZyBUQUcKLSMgLXYsIC0tdmVyYm9zZSAgICAgICAgICAgIHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMgKGRlZmF1bHQpCi0jICAgICAtLXZlcnNpb24gICAgICAgICAgICBwcmludCB2ZXJzaW9uIGluZm9ybWF0aW9uCi0jIC1oLCAtLWhlbHAgICAgICAgICAgICAgICBwcmludCBzaG9ydCBvciBsb25nIGhlbHAgbWVzc2FnZQorIyAgICAgICAtLWNvbmZpZyAgICAgICAgICAgICBzaG93IGFsbCBjb25maWd1cmF0aW9uIHZhcmlhYmxlcworIyAgICAgICAtLWRlYnVnICAgICAgICAgICAgICBlbmFibGUgdmVyYm9zZSBzaGVsbCB0cmFjaW5nCisjICAgLW4sIC0tZHJ5LXJ1biAgICAgICAgICAgIGRpc3BsYXkgY29tbWFuZHMgd2l0aG91dCBtb2RpZnlpbmcgYW55IGZpbGVzCisjICAgICAgIC0tZmVhdHVyZXMgICAgICAgICAgIGRpc3BsYXkgYmFzaWMgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdAorIyAgICAgICAtLW1vZGU9TU9ERSAgICAgICAgICB1c2Ugb3BlcmF0aW9uIG1vZGUgTU9ERQorIyAgICAgICAtLXByZXNlcnZlLWR1cC1kZXBzICBkb24ndCByZW1vdmUgZHVwbGljYXRlIGRlcGVuZGVuY3kgbGlicmFyaWVzCisjICAgICAgIC0tcXVpZXQsIC0tc2lsZW50ICAgIGRvbid0IHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMKKyMgICAgICAgLS1uby1xdWlldCwgLS1uby1zaWxlbnQKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcyAoZGVmYXVsdCkKKyMgICAgICAgLS1uby13YXJuICAgICAgICAgICAgZG9uJ3QgZGlzcGxheSB3YXJuaW5nIG1lc3NhZ2VzCisjICAgICAgIC0tdGFnPVRBRyAgICAgICAgICAgIHVzZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmcm9tIHRhZyBUQUcKKyMgICAtdiwgLS12ZXJib3NlICAgICAgICAgICAgcHJpbnQgbW9yZSBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIHRoYW4gZGVmYXVsdAorIyAgICAgICAtLW5vLXZlcmJvc2UgICAgICAgICBkb24ndCBwcmludCB0aGUgZXh0cmEgaW5mb3JtYXRpb25hbCBtZXNzYWdlcworIyAgICAgICAtLXZlcnNpb24gICAgICAgICAgICBwcmludCB2ZXJzaW9uIGluZm9ybWF0aW9uCisjICAgLWgsIC0taGVscCwgLS1oZWxwLWFsbCAgIHByaW50IHNob3J0LCBsb25nLCBvciBkZXRhaWxlZCBoZWxwIG1lc3NhZ2UKICMKICMgTU9ERSBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogIwotIyAgICAgICBjbGVhbiAgICAgICAgICAgICAgcmVtb3ZlIGZpbGVzIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeQotIyAgICAgICBjb21waWxlICAgICAgICAgICAgY29tcGlsZSBhIHNvdXJjZSBmaWxlIGludG8gYSBsaWJ0b29sIG9iamVjdAotIyAgICAgICBleGVjdXRlICAgICAgICAgICAgYXV0b21hdGljYWxseSBzZXQgbGlicmFyeSBwYXRoLCB0aGVuIHJ1biBhIHByb2dyYW0KLSMgICAgICAgZmluaXNoICAgICAgICAgICAgIGNvbXBsZXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgbGlidG9vbCBsaWJyYXJpZXMKLSMgICAgICAgaW5zdGFsbCAgICAgICAgICAgIGluc3RhbGwgbGlicmFyaWVzIG9yIGV4ZWN1dGFibGVzCi0jICAgICAgIGxpbmsgICAgICAgICAgICAgICBjcmVhdGUgYSBsaWJyYXJ5IG9yIGFuIGV4ZWN1dGFibGUKLSMgICAgICAgdW5pbnN0YWxsICAgICAgICAgIHJlbW92ZSBsaWJyYXJpZXMgZnJvbSBhbiBpbnN0YWxsZWQgZGlyZWN0b3J5CisjICAgICAgICAgY2xlYW4gICAgICAgICAgICAgIHJlbW92ZSBmaWxlcyBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkKKyMgICAgICAgICBjb21waWxlICAgICAgICAgICAgY29tcGlsZSBhIHNvdXJjZSBmaWxlIGludG8gYSBsaWJ0b29sIG9iamVjdAorIyAgICAgICAgIGV4ZWN1dGUgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHNldCBsaWJyYXJ5IHBhdGgsIHRoZW4gcnVuIGEgcHJvZ3JhbQorIyAgICAgICAgIGZpbmlzaCAgICAgICAgICAgICBjb21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIGxpYnRvb2wgbGlicmFyaWVzCisjICAgICAgICAgaW5zdGFsbCAgICAgICAgICAgIGluc3RhbGwgbGlicmFyaWVzIG9yIGV4ZWN1dGFibGVzCisjICAgICAgICAgbGluayAgICAgICAgICAgICAgIGNyZWF0ZSBhIGxpYnJhcnkgb3IgYW4gZXhlY3V0YWJsZQorIyAgICAgICAgIHVuaW5zdGFsbCAgICAgICAgICByZW1vdmUgbGlicmFyaWVzIGZyb20gYW4gaW5zdGFsbGVkIGRpcmVjdG9yeQogIwotIyBNT0RFLUFSR1MgdmFyeSBkZXBlbmRpbmcgb24gdGhlIE1PREUuCisjIE1PREUtQVJHUyB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgTU9ERS4gIFdoZW4gcGFzc2VkIGFzIGZpcnN0IG9wdGlvbiwKKyMgYC0tbW9kZT1NT0RFJyBtYXkgYmUgYWJicmV2aWF0ZWQgYXMgYE1PREUnIG9yIGEgdW5pcXVlIGFiYnJldmlhdGlvbiBvZiB0aGF0LgogIyBUcnkgYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPU1PREUnIGZvciBhIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgTU9ERS4KICMKICMgV2hlbiByZXBvcnRpbmcgYSBidWcsIHBsZWFzZSBkZXNjcmliZSBhIHRlc3QgY2FzZSB0byByZXByb2R1Y2UgaXQgYW5kCiAjIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjoKICMKLSMgICAgICAgaG9zdC10cmlwbGV0OgkkaG9zdAotIyAgICAgICBzaGVsbDoJCSRTSEVMTAotIyAgICAgICBjb21waWxlcjoJCSRMVENDCi0jICAgICAgIGNvbXBpbGVyIGZsYWdzOgkJJExUQ0ZMQUdTCi0jICAgICAgIGxpbmtlcjoJCSRMRCAoZ251PyAkd2l0aF9nbnVfbGQpCi0jICAgICAgICRwcm9nbmFtZToJCShHTlUgbGlidG9vbCkgMi4yLjYKLSMgICAgICAgYXV0b21ha2U6CQkkYXV0b21ha2VfdmVyc2lvbgotIyAgICAgICBhdXRvY29uZjoJCSRhdXRvY29uZl92ZXJzaW9uCisjICAgICAgICAgaG9zdC10cmlwbGV0OgkkaG9zdAorIyAgICAgICAgIHNoZWxsOgkJJFNIRUxMCisjICAgICAgICAgY29tcGlsZXI6CQkkTFRDQworIyAgICAgICAgIGNvbXBpbGVyIGZsYWdzOgkJJExUQ0ZMQUdTCisjICAgICAgICAgbGlua2VyOgkJJExEIChnbnU/ICR3aXRoX2dudV9sZCkKKyMgICAgICAgICAkcHJvZ25hbWU6CShHTlUgbGlidG9vbCkgMi40LjIgRGViaWFuLTIuNC4yLTF1YnVudHUxCisjICAgICAgICAgYXV0b21ha2U6CSRhdXRvbWFrZV92ZXJzaW9uCisjICAgICAgICAgYXV0b2NvbmY6CSRhdXRvY29uZl92ZXJzaW9uCiAjCiAjIFJlcG9ydCBidWdzIHRvIDxidWctbGlidG9vbEBnbnUub3JnPi4KKyMgR05VIGxpYnRvb2wgaG9tZSBwYWdlOiA8aHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnRvb2wvPi4KKyMgR2VuZXJhbCBoZWxwIHVzaW5nIEdOVSBzb2Z0d2FyZTogPGh0dHA6Ly93d3cuZ251Lm9yZy9nZXRoZWxwLz4uCiAKLVBST0dSQU09bHRtYWluLnNoCitQUk9HUkFNPWxpYnRvb2wKIFBBQ0tBR0U9bGlidG9vbAotVkVSU0lPTj0yLjIuNgorVkVSU0lPTj0iMi40LjIgRGViaWFuLTIuNC4yLTF1YnVudHUxIgogVElNRVNUQU1QPSIiCi1wYWNrYWdlX3JldmlzaW9uPTEuMzAxMgorcGFja2FnZV9yZXZpc2lvbj0xLjMzMzcKIAogIyBCZSBCb3VybmUgY29tcGF0aWJsZQogaWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCkBAIC05MSwxMCArOTgsMTUgQEAKIEJJTl9TSD14cGc0OyBleHBvcnQgQklOX1NIICMgZm9yIFRydTY0CiBEVUFMQ0FTRT0xOyBleHBvcnQgRFVBTENBU0UgIyBmb3IgTUtTIHNoCiAKKyMgQSBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgd2hlbiB0aGVyZSBpcyBubyBwcmludCBidWlsdGluIG9yIHByaW50Zi4KK2Z1bmNfZmFsbGJhY2tfZWNobyAoKQoreworICBldmFsICdjYXQgPDxfTFRFQ0hPX0VPRgorJDEKK19MVEVDSE9fRU9GJworfQorCiAjIE5MUyBudWlzYW5jZXM6IFdlIHNhdmUgdGhlIG9sZCB2YWx1ZXMgdG8gcmVzdG9yZSBkdXJpbmcgZXhlY3V0ZSBtb2RlLgotIyBPbmx5IHNldCBMQU5HIGFuZCBMQ19BTEwgdG8gQyBpZiBhbHJlYWR5IHNldC4KLSMgVGhlc2UgbXVzdCBub3QgYmUgc2V0IHVuY29uZGl0aW9uYWxseSBiZWNhdXNlIG5vdCBhbGwgc3lzdGVtcyB1bmRlcnN0YW5kCi0jIGUuZy4gTEFORz1DIChub3RhYmx5IFNDTykuCiBsdF91c2VyX2xvY2FsZT0KIGx0X3NhZmVfbG9jYWxlPQogZm9yIGx0X3ZhciBpbiBMQU5HIExBTkdVQUdFIExDX0FMTCBMQ19DVFlQRSBMQ19DT0xMQVRFIExDX01FU1NBR0VTCkBAIC0xMDcsMjQgKzExOSwyOCBAQAogCSAgbHRfc2FmZV9sb2NhbGU9XCIkbHRfdmFyPUM7IFwkbHRfc2FmZV9sb2NhbGVcIgogCWZpIgogZG9uZQorTENfQUxMPUMKK0xBTkdVQUdFPUMKK2V4cG9ydCBMQU5HVUFHRSBMQ19BTEwKIAogJGx0X3Vuc2V0IENEUEFUSAogCiAKKyMgV29yayBhcm91bmQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpc3N1ZSBvbiBJUklYIDYuNS4gT24gSVJJWCA2LjQrLCBzaAorIyBpcyBrc2ggYnV0IHdoZW4gdGhlIHNoZWxsIGlzIGludm9rZWQgYXMgInNoIiBhbmQgdGhlIGN1cnJlbnQgdmFsdWUgb2YKKyMgdGhlIF9YUEcgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGVxdWFsIHRvIDEgKG9uZSksIHRoZSBzcGVjaWFsCisjIHBvc2l0aW9uYWwgcGFyYW1ldGVyICQwLCB3aXRoaW4gYSBmdW5jdGlvbiBjYWxsLCBpcyB0aGUgbmFtZSBvZiB0aGUKKyMgZnVuY3Rpb24uCitwcm9ncGF0aD0iJDAiCiAKIAogCiA6ICR7Q1A9ImNwIC1mIn0KLTogJHtFQ0hPPSJlY2hvIn0KLTogJHtFR1JFUD0iL2Jpbi9ncmVwIC1FIn0KLTogJHtGR1JFUD0iL2Jpbi9ncmVwIC1GIn0KLTogJHtHUkVQPSIvYmluL2dyZXAifQotOiAke0xOX1M9ImxuIC1zIn0KK3Rlc3QgIiR7RUNITytzZXR9IiA9IHNldCB8fCBFQ0hPPSR7YXNfZWNoby0ncHJpbnRmICVzXG4nfQogOiAke01BS0U9Im1ha2UifQogOiAke01LRElSPSJta2RpciJ9CiA6ICR7TVY9Im12IC1mIn0KIDogJHtSTT0icm0gLWYifQotOiAke1NFRD0iL2Jpbi9zZWQifQogOiAke1NIRUxMPSIke0NPTkZJR19TSEVMTC0vYmluL3NofSJ9CiA6ICR7WHNlZD0iJFNFRCAtZSAxcy9eWC8vIn0KIApAQCAtMTQ0LDYgKzE2MCwyNyBAQAogZGlybmFtZT0icywvW14vXSokLCwiCiBiYXNlbmFtZT0icyxeLiovLCwiCiAKKyMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCitmdW5jX2Rpcm5hbWUgKCkKK3sKKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCisgICAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCisgICAgZWxzZQorICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorICAgIGZpCit9ICMgZnVuY19kaXJuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKKyMgZnVuY19iYXNlbmFtZSBmaWxlCitmdW5jX2Jhc2VuYW1lICgpCit7CisgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCit9ICMgZnVuY19iYXNlbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCiAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CiAjIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCiAjIGNhbGw6CkBAIC0xNTgsMzMgKzE5NSwxODMgQEAKICMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgogZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQogewotICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRkaXJuYW1lImAKLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotICBlbHNlCi0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotICBmaQotICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkYmFzZW5hbWUiYAorICAgICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCisgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGRpcm5hbWUiYAorICAgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCisgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorICAgIGVsc2UKKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKyAgICBmaQorICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkYmFzZW5hbWUiYAorfSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKyMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCisjIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCisjIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCisjIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCitmdW5jX3N0cmlwbmFtZSAoKQoreworICAgIGNhc2UgJHsyfSBpbgorICAgICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKyAgICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKyAgICBlc2FjCit9ICMgZnVuY19zdHJpcG5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBUaGVzZSBTRUQgc2NyaXB0cyBwcmVzdXBwb3NlIGFuIGFic29sdXRlIHBhdGggd2l0aCBhIHRyYWlsaW5nIHNsYXNoLgorcGF0aGNhcj0ncyxeL1woW14vXSpcKS4qJCxcMSwnCitwYXRoY2RyPSdzLF4vW14vXSosLCcKK3JlbW92ZWRvdHBhcnRzPSc6ZG90c2wKKwkJc0AvXC4vQC9AZworCQl0IGRvdHNsCisJCXMsL1wuJCwvLCcKK2NvbGxhcHNlc2xhc2hlcz0nc0AvXHsxLFx9QC9AZycKK2ZpbmFsc2xhc2g9J3MsLyokLC8sJworCisjIGZ1bmNfbm9ybWFsX2Fic3BhdGggUEFUSAorIyBSZW1vdmUgZG91YmxlZC11cCBhbmQgdHJhaWxpbmcgc2xhc2hlcywgIi4iIHBhdGggY29tcG9uZW50cywKKyMgYW5kIGNhbmNlbCBvdXQgYW55ICIuLiIgcGF0aCBjb21wb25lbnRzIGluIFBBVEggYWZ0ZXIgbWFraW5nCisjIGl0IGFuIGFic29sdXRlIHBhdGguCisjICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQiCitmdW5jX25vcm1hbF9hYnNwYXRoICgpCit7CisgICMgU3RhcnQgZnJvbSByb290IGRpciBhbmQgcmVhc3NlbWJsZSB0aGUgcGF0aC4KKyAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9CisgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGg9JDEKKyAgZnVuY19ub3JtYWxfYWJzcGF0aF9hbHRuYW1lc3BhY2U9CisgIGNhc2UgJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGggaW4KKyAgICAiIikKKyAgICAgICMgRW1wdHkgcGF0aCwgdGhhdCBqdXN0IG1lYW5zICRjd2QuCisgICAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLycgImBwd2RgIgorICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgICAgcmV0dXJuCisgICAgOzsKKyAgICAjIFRoZSBuZXh0IHRocmVlIGVudHJpZXMgYXJlIHVzZWQgdG8gc3BvdCBhIHJ1biBvZiBwcmVjaXNlbHkKKyAgICAjIHR3byBsZWFkaW5nIHNsYXNoZXMgd2l0aG91dCB1c2luZyBuZWdhdGVkIGNoYXJhY3RlciBjbGFzc2VzOworICAgICMgd2UgdGFrZSBhZHZhbnRhZ2Ugb2YgY2FzZSdzIGZpcnN0LW1hdGNoIGJlaGF2aW91ci4KKyAgICAvLy8qKQorICAgICAgIyBVbnVzdWFsIGZvcm0gb2YgYWJzb2x1dGUgcGF0aCwgZG8gbm90aGluZy4KKyAgICA7OworICAgIC8vKikKKyAgICAgICMgTm90IG5lY2Vzc2FyaWx5IGFuIG9yZGluYXJ5IHBhdGg7IFBPU0lYIHJlc2VydmVzIGxlYWRpbmcgJy8vJworICAgICAgIyBhbmQgZm9yIGV4YW1wbGUgQ3lnd2luIHVzZXMgaXQgdG8gYWNjZXNzIHJlbW90ZSBmaWxlIHNoYXJlcworICAgICAgIyBvdmVyIENJRlMvU01CLCBzbyB3ZSBjb25zZXJ2ZSBhIGxlYWRpbmcgZG91YmxlIHNsYXNoIGlmIGZvdW5kLgorICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9hbHRuYW1lc3BhY2U9LworICAgIDs7CisgICAgLyopCisgICAgICAjIEFic29sdXRlIHBhdGgsIGRvIG5vdGhpbmcuCisgICAgOzsKKyAgICAqKQorICAgICAgIyBSZWxhdGl2ZSBwYXRoLCBwcmVwZW5kICRjd2QuCisgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoPWBwd2RgLyRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoCisgICAgOzsKKyAgZXNhYworICAjIENhbmNlbCBvdXQgYWxsIHRoZSBzaW1wbGUgc3R1ZmYgdG8gc2F2ZSBpdGVyYXRpb25zLiAgV2UgYWxzbyB3YW50CisgICMgdGhlIHBhdGggdG8gZW5kIHdpdGggYSBzbGFzaCBmb3IgZWFzZSBvZiBwYXJzaW5nLCBzbyBtYWtlIHN1cmUKKyAgIyB0aGVyZSBpcyBvbmUgKGFuZCBvbmx5IG9uZSkgaGVyZS4KKyAgZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aD1gJEVDSE8gIiRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoIiB8ICRTRUQgXAorICAgICAgICAtZSAiJHJlbW92ZWRvdHBhcnRzIiAtZSAiJGNvbGxhcHNlc2xhc2hlcyIgLWUgIiRmaW5hbHNsYXNoImAKKyAgd2hpbGUgOjsgZG8KKyAgICAjIFByb2Nlc3NlZCBpdCBhbGwgeWV0PworICAgIGlmIHRlc3QgIiRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoIiA9IC8gOyB0aGVuCisgICAgICAjIElmIHdlIGFzY2VuZGVkIHRvIHRoZSByb290IHVzaW5nICIuLiIgdGhlIHJlc3VsdCBtYXkgYmUgZW1wdHkgbm93LgorICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0IiA7IHRoZW4KKyAgICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9LworICAgICAgZmkKKyAgICAgIGJyZWFrCisgICAgZmkKKyAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Rjb21wb25lbnQ9YCRFQ0hPICIkZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aCIgfCAkU0VEIFwKKyAgICAgICAgLWUgIiRwYXRoY2FyImAKKyAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoPWAkRUNITyAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgiIHwgJFNFRCBcCisgICAgICAgIC1lICIkcGF0aGNkciJgCisgICAgIyBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gd2l0aCBpdAorICAgIGNhc2UgJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdGNvbXBvbmVudCBpbgorICAgICAgIiIpCisgICAgICAgICMgVHJhaWxpbmcgZW1wdHkgcGF0aCBjb21wb25lbnQsIGlnbm9yZSBpdC4KKyAgICAgIDs7CisgICAgICAuLikKKyAgICAgICAgIyBQYXJlbnQgZGlyOyBzdHJpcCBsYXN0IGFzc2VtYmxlZCBjb21wb25lbnQgZnJvbSByZXN1bHQuCisgICAgICAgIGZ1bmNfZGlybmFtZSAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0IgorICAgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0kZnVuY19kaXJuYW1lX3Jlc3VsdAorICAgICAgOzsKKyAgICAgICopCisgICAgICAgICMgQWN0dWFsIHBhdGggY29tcG9uZW50LCBhcHBlbmQgaXQuCisgICAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdC8kZnVuY19ub3JtYWxfYWJzcGF0aF90Y29tcG9uZW50CisgICAgICA7OworICAgIGVzYWMKKyAgZG9uZQorICAjIFJlc3RvcmUgbGVhZGluZyBkb3VibGUtc2xhc2ggaWYgb25lIHdhcyBmb3VuZCBvbiBlbnRyeS4KKyAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfYWx0bmFtZXNwYWNlJGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CiB9CiAKLSMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLgorIyBmdW5jX3JlbGF0aXZlX3BhdGggU1JDRElSIERTVERJUgorIyBnZW5lcmF0ZXMgYSByZWxhdGl2ZSBwYXRoIGZyb20gU1JDRElSIHRvIERTVERJUiwgd2l0aCBhIHRyYWlsaW5nCisjIHNsYXNoIGlmIG5vbi1lbXB0eSwgc3VpdGFibGUgZm9yIGltbWVkaWF0ZWx5IGFwcGVuZGluZyBhIGZpbGVuYW1lCisjIHdpdGhvdXQgbmVlZGluZyB0byBhcHBlbmQgYSBzZXBhcmF0b3IuCisjICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdCIKK2Z1bmNfcmVsYXRpdmVfcGF0aCAoKQoreworICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PQorICBmdW5jX25vcm1hbF9hYnNwYXRoICIkMSIKKyAgZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXI9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CisgIGZ1bmNfbm9ybWFsX2Fic3BhdGggIiQyIgorICBmdW5jX3JlbGF0aXZlX3BhdGhfdGJpbmRpcj0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKIAotIyBXb3JrIGFyb3VuZCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzc3VlIG9uIElSSVggNi41LiBPbiBJUklYIDYuNCssIHNoCi0jIGlzIGtzaCBidXQgd2hlbiB0aGUgc2hlbGwgaXMgaW52b2tlZCBhcyAic2giIGFuZCB0aGUgY3VycmVudCB2YWx1ZSBvZgotIyB0aGUgX1hQRyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgZXF1YWwgdG8gMSAob25lKSwgdGhlIHNwZWNpYWwKLSMgcG9zaXRpb25hbCBwYXJhbWV0ZXIgJDAsIHdpdGhpbiBhIGZ1bmN0aW9uIGNhbGwsIGlzIHRoZSBuYW1lIG9mIHRoZQotIyBmdW5jdGlvbi4KLXByb2dwYXRoPSIkMCIKKyAgIyBBc2NlbmQgdGhlIHRyZWUgc3RhcnRpbmcgZnJvbSBsaWJkaXIKKyAgd2hpbGUgOjsgZG8KKyAgICAjIGNoZWNrIGlmIHdlIGhhdmUgZm91bmQgYSBwcmVmaXggb2YgYmluZGlyCisgICAgY2FzZSAkZnVuY19yZWxhdGl2ZV9wYXRoX3RiaW5kaXIgaW4KKyAgICAgICRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpcikKKyAgICAgICAgIyBmb3VuZCBhbiBleGFjdCBtYXRjaAorICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfdGNhbmNlbGxlZD0KKyAgICAgICAgYnJlYWsKKyAgICAgICAgOzsKKyAgICAgICRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpciopCisgICAgICAgICMgZm91bmQgYSBtYXRjaGluZyBwcmVmaXgKKyAgICAgICAgZnVuY19zdHJpcG5hbWUgIiRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpciIgJycgIiRmdW5jX3JlbGF0aXZlX3BhdGhfdGJpbmRpciIKKyAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3RjYW5jZWxsZWQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdCI7IHRoZW4KKyAgICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PS4KKyAgICAgICAgZmkKKyAgICAgICAgYnJlYWsKKyAgICAgICAgOzsKKyAgICAgICopCisgICAgICAgIGZ1bmNfZGlybmFtZSAkZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXIKKyAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXI9JHtmdW5jX2Rpcm5hbWVfcmVzdWx0fQorICAgICAgICBpZiB0ZXN0ICJ4JGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyIiA9IHggOyB0aGVuCisgICAgICAgICAgIyBIYXZlIHRvIGRlc2NlbmQgYWxsIHRoZSB3YXkgdG8gdGhlIHJvb3QhCisgICAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0uLi8kZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdAorICAgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF90Y2FuY2VsbGVkPSRmdW5jX3JlbGF0aXZlX3BhdGhfdGJpbmRpcgorICAgICAgICAgIGJyZWFrCisgICAgICAgIGZpCisgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9Li4vJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQKKyAgICAgICAgOzsKKyAgICBlc2FjCisgIGRvbmUKKworICAjIE5vdyBjYWxjdWxhdGUgcGF0aDsgdGFrZSBjYXJlIHRvIGF2b2lkIGRvdWJsaW5nLXVwIHNsYXNoZXMuCisgIGZ1bmNfc3RyaXBuYW1lICcnICcvJyAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQiCisgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICBmdW5jX3N0cmlwbmFtZSAnLycgJy8nICIkZnVuY19yZWxhdGl2ZV9wYXRoX3RjYW5jZWxsZWQiCisgIGlmIHRlc3QgIngkZnVuY19zdHJpcG5hbWVfcmVzdWx0IiAhPSB4IDsgdGhlbgorICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9JHtmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0fS8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH0KKyAgZmkKKworICAjIE5vcm1hbGlzYXRpb24uIElmIGJpbmRpciBpcyBsaWJkaXIsIHJldHVybiBlbXB0eSBzdHJpbmcsCisgICMgZWxzZSByZWxhdGl2ZSBwYXRoIGVuZGluZyB3aXRoIGEgc2xhc2g7IGVpdGhlciB3YXksIHRhcmdldAorICAjIGZpbGUgbmFtZSBjYW4gYmUgZGlyZWN0bHkgYXBwZW5kZWQuCisgIGlmIHRlc3QgISAteiAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQiOyB0aGVuCisgICAgZnVuY19zdHJpcG5hbWUgJy4vJyAnJyAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQvIgorICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICBmaQorfQogCiAjIFRoZSBuYW1lIG9mIHRoaXMgcHJvZ3JhbToKLSMgSW4gdGhlIHVubGlrZWx5IGV2ZW50ICRwcm9nbmFtZSBiZWdhbiB3aXRoIGEgJy0nLCBpdCB3b3VsZCBwbGF5IGhhdm9jIHdpdGgKLSMgZnVuY19lY2hvIChpbWFnaW5lIHByb2duYW1lPS1uKSwgc28gd2UgcHJlcGVuZCAuLyBpbiB0aGF0IGNhc2U6CiBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkcHJvZ3BhdGgiCiBwcm9nbmFtZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKLWNhc2UgJHByb2duYW1lIGluCi0gIC0qKSBwcm9nbmFtZT0uLyRwcm9nbmFtZSA7OwotZXNhYwogCiAjIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGFic29sdXRlIHBhdGggZm9yIHJlZXhlY3V0aW9uOgogY2FzZSAkcHJvZ3BhdGggaW4KQEAgLTE5Niw3ICszODMsNyBAQAogICAgICA7OwogICAqKQogICAgICBzYXZlX0lGUz0iJElGUyIKLSAgICAgSUZTPToKKyAgICAgSUZTPSR7UEFUSF9TRVBBUkFUT1ItOn0KICAgICAgZm9yIHByb2dkaXIgaW4gJFBBVEg7IGRvCiAgICAgICAgSUZTPSIkc2F2ZV9JRlMiCiAgICAgICAgdGVzdCAteCAiJHByb2dkaXIvJHByb2duYW1lIiAmJiBicmVhawpAQCAtMjE1LDYgKzQwMiwxNSBAQAogIyBTYW1lIGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCiBkb3VibGVfcXVvdGVfc3Vic3Q9J3MvXChbImBcXF1cKS9cXFwxL2cnCiAKKyMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IHR1cm5zIGEgc3RyaW5nIGludG8gYSByZWdleCBtYXRjaGluZyBmb3IgdGhlCisjIHN0cmluZyBsaXRlcmFsbHkuCitzZWRfbWFrZV9saXRlcmFsX3JlZ2V4PSdzLFtdLlteJFxcKlwvXSxcXCYsZycKKworIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgY29udmVydHMgYSB3MzIgZmlsZSBuYW1lIG9yIHBhdGgKKyMgd2hpY2ggY29udGFpbnMgZm9yd2FyZCBzbGFzaGVzLCBpbnRvIG9uZSB0aGF0IGNvbnRhaW5zCisjIChlc2NhcGVkKSBiYWNrc2xhc2hlcy4gIEEgdmVyeSBuYWl2ZSBpbXBsZW1lbnRhdGlvbi4KK2x0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKKwogIyBSZS1gXCcgcGFyYW1ldGVyIGV4cGFuc2lvbnMgaW4gb3V0cHV0IG9mIGRvdWJsZV9xdW90ZV9zdWJzdCB0aGF0IHdlcmUKICMgYFwnLWVkIGluIGlucHV0IHRvIHRoZSBzYW1lLiAgSWYgYW4gb2RkIG51bWJlciBvZiBgXCcgcHJlY2VkZWQgYSAnJCcKICMgaW4gaW5wdXQgdG8gZG91YmxlX3F1b3RlX3N1YnN0LCB0aGF0ICckJyB3YXMgcHJvdGVjdGVkIGZyb20gZXhwYW5zaW9uLgpAQCAtMjQzLDcgKzQzOSw3IEBACiAjIG5hbWUgaWYgaXQgaGFzIGJlZW4gc2V0IHlldC4KIGZ1bmNfZWNobyAoKQogewotICAgICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6ICQqIgorICAgICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9JCoiCiB9CiAKICMgZnVuY192ZXJib3NlIGFyZy4uLgpAQCAtMjU4LDE4ICs0NTQsMjUgQEAKICAgICA6CiB9CiAKKyMgZnVuY19lY2hvX2FsbCBhcmcuLi4KKyMgSW52b2tlICRFQ0hPIHdpdGggYWxsIGFyZ3MsIHNwYWNlLXNlcGFyYXRlZC4KK2Z1bmNfZWNob19hbGwgKCkKK3sKKyAgICAkRUNITyAiJCoiCit9CisKICMgZnVuY19lcnJvciBhcmcuLi4KICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvci4KIGZ1bmNfZXJyb3IgKCkKIHsKLSAgICAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiAiJHsxKyIkQCJ9IDE+JjIKKyAgICAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfSIkezErIiRAIn0gMT4mMgogfQogCiAjIGZ1bmNfd2FybmluZyBhcmcuLi4KICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgd2FybmluZyBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgogZnVuY193YXJuaW5nICgpCiB7Ci0gICAgJG9wdF93YXJuaW5nICYmICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6IHdhcm5pbmc6ICIkezErIiRAIn0gMT4mMgorICAgICRvcHRfd2FybmluZyAmJiAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfXdhcm5pbmc6ICIkezErIiRAIn0gMT4mMgogCiAgICAgIyBiYXNoIGJ1ZyBhZ2FpbjoKICAgICA6CkBAIC0zMjYsOSArNTI5LDkgQEAKICAgICAgICAgY2FzZSAkbXlfZGlyZWN0b3J5X3BhdGggaW4gKi8qKSA7OyAqKSBicmVhayA7OyBlc2FjCiAKICAgICAgICAgIyAuLi5vdGhlcndpc2UgdGhyb3cgYXdheSB0aGUgY2hpbGQgZGlyZWN0b3J5IGFuZCBsb29wCi0gICAgICAgIG15X2RpcmVjdG9yeV9wYXRoPWAkRUNITyAiWCRteV9kaXJlY3RvcnlfcGF0aCIgfCAkWHNlZCAtZSAiJGRpcm5hbWUiYAorICAgICAgICBteV9kaXJlY3RvcnlfcGF0aD1gJEVDSE8gIiRteV9kaXJlY3RvcnlfcGF0aCIgfCAkU0VEIC1lICIkZGlybmFtZSJgCiAgICAgICBkb25lCi0gICAgICBteV9kaXJfbGlzdD1gJEVDSE8gIlgkbXlfZGlyX2xpc3QiIHwgJFhzZWQgLWUgJ3MsOiokLCwnYAorICAgICAgbXlfZGlyX2xpc3Q9YCRFQ0hPICIkbXlfZGlyX2xpc3QiIHwgJFNFRCAncyw6KiQsLCdgCiAKICAgICAgIHNhdmVfbWtkaXJfcF9JRlM9IiRJRlMiOyBJRlM9JzonCiAgICAgICBmb3IgbXlfZGlyIGluICRteV9kaXJfbGlzdDsgZG8KQEAgLTM3OCw3ICs1ODEsNyBAQAogICAgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgY3JlYXRlIHRlbXBvcmFyeSBkaXJlY3RvcnkgXGAkbXlfdG1wZGlyJyIKICAgICBmaQogCi0gICAgJEVDSE8gIlgkbXlfdG1wZGlyIiB8ICRYc2VkCisgICAgJEVDSE8gIiRteV90bXBkaXIiCiB9CiAKIApAQCAtMzkyLDcgKzU5NSw3IEBACiB7CiAgICAgY2FzZSAkMSBpbgogICAgICAgKltcXFxgXCJcJF0qKQotCWZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0PWAkRUNITyAiWCQxIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAgOzsKKwlmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdD1gJEVDSE8gIiQxIiB8ICRTRUQgIiRzZWRfcXVvdGVfc3Vic3QiYCA7OwogICAgICAgKikKICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbF91bnF1b3RlZF9yZXN1bHQ9IiQxIiA7OwogICAgIGVzYWMKQEAgLTQxOSw3ICs2MjIsNyBAQAogewogICAgIGNhc2UgJDEgaW4KICAgICAgICpbXFxcYFwiXSopCi0JbXlfYXJnPWAkRUNITyAiWCQxIiB8ICRYc2VkIFwKKwlteV9hcmc9YCRFQ0hPICIkMSIgfCAkU0VEIFwKIAkgICAgLWUgIiRkb3VibGVfcXVvdGVfc3Vic3QiIC1lICIkc2VkX2RvdWJsZV9iYWNrc2xhc2giYCA7OwogICAgICAgKikKICAgICAgICAgbXlfYXJnPSIkMSIgOzsKQEAgLTQ4OCwxNSArNjkxLDM5IEBACiAgICAgZmkKIH0KIAotCi0KKyMgZnVuY190cl9zaAorIyBUdXJuICQxIGludG8gYSBzdHJpbmcgc3VpdGFibGUgZm9yIGEgc2hlbGwgdmFyaWFibGUgbmFtZS4KKyMgUmVzdWx0IGlzIHN0b3JlZCBpbiAkZnVuY190cl9zaF9yZXN1bHQuICBBbGwgY2hhcmFjdGVycworIyBub3QgaW4gdGhlIHNldCBhLXpBLVowLTlfIGFyZSByZXBsYWNlZCB3aXRoICdfJy4gRnVydGhlciwKKyMgaWYgJDEgYmVnaW5zIHdpdGggYSBkaWdpdCwgYSAnXycgaXMgcHJlcGVuZGVkIGFzIHdlbGwuCitmdW5jX3RyX3NoICgpCit7CisgIGNhc2UgJDEgaW4KKyAgWzAtOV0qIHwgKlshYS16QS1aMC05X10qKQorICAgIGZ1bmNfdHJfc2hfcmVzdWx0PWAkRUNITyAiJDEiIHwgJFNFRCAncy9eXChbMC05XVwpL19cMS87IHMvW15hLXpBLVowLTlfXS9fL2cnYAorICAgIDs7CisgICogKQorICAgIGZ1bmNfdHJfc2hfcmVzdWx0PSQxCisgICAgOzsKKyAgZXNhYworfQogCiAKICMgZnVuY192ZXJzaW9uCiAjIEVjaG8gdmVyc2lvbiBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KIGZ1bmNfdmVyc2lvbiAoKQogewotICAgICRTRUQgLW4gJy9eIyAnJFBST0dSQU0nIChHTlUgLywvIyB3YXJyYW50eTsgLyB7CisgICAgJG9wdF9kZWJ1ZworCisgICAgJFNFRCAtbiAnLyhDKS8hYiBnbworCTptb3JlCisJL1wuLyF7CisJICBOCisJICBzL1xuIyAvIC8KKwkgIGIgbW9yZQorCX0KKwk6Z28KKwkvXiMgJyRQUk9HUkFNJyAoR05VIC8sLyMgd2FycmFudHk7IC8gewogICAgICAgICBzL14jIC8vCiAJcy9eIyAqJC8vCiAgICAgICAgIHMvXCgoQylcKVsgMC05LC1dKlwoIFsxLTldWzAtOV0qXCkvXDFcMi8KQEAgLTUwOSwyMiArNzM2LDI4IEBACiAjIEVjaG8gc2hvcnQgaGVscCBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KIGZ1bmNfdXNhZ2UgKCkKIHsKLSAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvIyAtaC8geworICAgICRvcHRfZGVidWcKKworICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC9eIyAgKi4qLS1oZWxwLyB7CiAgICAgICAgIHMvXiMgLy8KIAlzL14jICokLy8KIAlzL1wkcHJvZ25hbWUvJyRwcm9nbmFtZScvCiAJcAogICAgIH0nIDwgIiRwcm9ncGF0aCIKLSAgICAkRUNITworICAgIGVjaG8KICAgICAkRUNITyAicnVuIFxgJHByb2duYW1lIC0taGVscCB8IG1vcmUnIGZvciBmdWxsIHVzYWdlIgogICAgIGV4aXQgJD8KIH0KIAotIyBmdW5jX2hlbHAKLSMgRWNobyBsb25nIGhlbHAgbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCisjIGZ1bmNfaGVscCBbTk9FWElUXQorIyBFY2hvIGxvbmcgaGVscCBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdCwKKyMgdW5sZXNzICdub2V4aXQnIGlzIHBhc3NlZCBhcyBhcmd1bWVudC4KIGZ1bmNfaGVscCAoKQogeworICAgICRvcHRfZGVidWcKKwogICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC8jIFJlcG9ydCBidWdzIHRvLyB7CisJOnByaW50CiAgICAgICAgIHMvXiMgLy8KIAlzL14jICokLy8KIAlzKlwkcHJvZ25hbWUqJyRwcm9nbmFtZScqCkBAIC01MzQsMTEgKzc2NywxOCBAQAogCXMqXCRMVENGTEFHUyonIiRMVENGTEFHUyInKgogCXMqXCRMRConIiRMRCInKgogCXMvXCR3aXRoX2dudV9sZC8nIiR3aXRoX2dudV9sZCInLwotCXMvXCRhdXRvbWFrZV92ZXJzaW9uLyciYChhdXRvbWFrZSAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLwotCXMvXCRhdXRvY29uZl92ZXJzaW9uLyciYChhdXRvY29uZiAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLworCXMvXCRhdXRvbWFrZV92ZXJzaW9uLyciYCgke0FVVE9NQUtFLWF1dG9tYWtlfSAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLworCXMvXCRhdXRvY29uZl92ZXJzaW9uLyciYCgke0FVVE9DT05GLWF1dG9jb25mfSAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLwogCXAKLSAgICAgfScgPCAiJHByb2dwYXRoIgotICAgIGV4aXQgJD8KKwlkCisgICAgIH0KKyAgICAgL14jIC4qIGhvbWUgcGFnZTovYiBwcmludAorICAgICAvXiMgR2VuZXJhbCBoZWxwIHVzaW5nL2IgcHJpbnQKKyAgICAgJyA8ICIkcHJvZ3BhdGgiCisgICAgcmV0PSQ/CisgICAgaWYgdGVzdCAteiAiJDEiOyB0aGVuCisgICAgICBleGl0ICRyZXQKKyAgICBmaQogfQogCiAjIGZ1bmNfbWlzc2luZ19hcmcgYXJnbmFtZQpAQCAtNTQ2LDYzICs3ODYsMTA2IEBACiAjIGV4aXRfY21kLgogZnVuY19taXNzaW5nX2FyZyAoKQogewotICAgIGZ1bmNfZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgZm9yICQxIgorICAgICRvcHRfZGVidWcKKworICAgIGZ1bmNfZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgZm9yICQxLiIKICAgICBleGl0X2NtZD1leGl0CiB9CiAKKworIyBmdW5jX3NwbGl0X3Nob3J0X29wdCBzaG9ydG9wdAorIyBTZXQgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSBhbmQgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIHNoZWxsCisjIHZhcmlhYmxlcyBhZnRlciBzcGxpdHRpbmcgU0hPUlRPUFQgYWZ0ZXIgdGhlIDJuZCBjaGFyYWN0ZXIuCitmdW5jX3NwbGl0X3Nob3J0X29wdCAoKQoreworICAgIG15X3NlZF9zaG9ydF9vcHQ9JzFzL15cKC4uXCkuKiQvXDEvO3EnCisgICAgbXlfc2VkX3Nob3J0X3Jlc3Q9JzFzL14uLlwoLipcKSQvXDEvO3EnCisKKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9zaG9ydF9vcHQiYAorICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfc2hvcnRfcmVzdCJgCit9ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX3NwbGl0X2xvbmdfb3B0IGxvbmdvcHQKKyMgU2V0IGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZSBhbmQgZnVuY19zcGxpdF9sb25nX29wdF9hcmcgc2hlbGwKKyMgdmFyaWFibGVzIGFmdGVyIHNwbGl0dGluZyBMT05HT1BUIGF0IHRoZSBgPScgc2lnbi4KK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKCkKK3sKKyAgICBteV9zZWRfbG9uZ19vcHQ9JzFzL15cKC0tW149XSpcKT0uKi9cMS87cScKKyAgICBteV9zZWRfbG9uZ19hcmc9JzFzL14tLVtePV0qPS8vJworCisgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCisgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKK30gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCiBleGl0X2NtZD06CiAKIAogCiAKIAotIyBDaGVjayB0aGF0IHdlIGhhdmUgYSB3b3JraW5nICRFQ0hPLgotaWYgdGVzdCAiWCQxIiA9IFgtLW5vLXJlZXhlYzsgdGhlbgotICAjIERpc2NhcmQgdGhlIC0tbm8tcmVleGVjIGZsYWcsIGFuZCBjb250aW51ZS4KLSAgc2hpZnQKLWVsaWYgdGVzdCAiWCQxIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KLSAgIyBBdm9pZCBpbmxpbmUgZG9jdW1lbnQgaGVyZSwgaXQgbWF5IGJlIGxlZnQgb3ZlcgotICA6Ci1lbGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JzsgdGhlbgotICAjIFlpcHBlZSwgJEVDSE8gd29ya3MhCi0gIDoKLWVsc2UKLSAgIyBSZXN0YXJ0IHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLCBhbmQgdGhlbiBtYXliZSAkRUNITyB3aWxsIHdvcmsuCi0gIGV4ZWMgJFNIRUxMICIkcHJvZ3BhdGgiIC0tbm8tcmVleGVjICR7MSsiJEAifQotZmkKLQotaWYgdGVzdCAiWCQxIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KLSAgIyB1c2VkIGFzIGZhbGxiYWNrIGVjaG8KLSAgc2hpZnQKLSAgY2F0IDw8RU9GCi0kKgotRU9GCi0gIGV4aXQgJEVYSVRfU1VDQ0VTUwotZmkKLQogbWFnaWM9IiUlJU1BR0lDIHZhcmlhYmxlJSUlIgogbWFnaWNfZXhlPSIlJSVNQUdJQyBFWEUgdmFyaWFibGUlJSUiCiAKICMgR2xvYmFsIHZhcmlhYmxlcy4KLSMgJG1vZGUgaXMgdW5zZXQKIG5vbm9wdD0KLWV4ZWN1dGVfZGxmaWxlcz0KIHByZXNlcnZlX2FyZ3M9CiBsbzJvPSJzL1xcLmxvXCQvLiR7b2JqZXh0fS8iCiBvMmxvPSJzL1xcLiR7b2JqZXh0fVwkLy5sby8iCiBleHRyYWN0ZWRfYXJjaGl2ZXM9CiBleHRyYWN0ZWRfc2VyaWFsPTAKIAotb3B0X2RyeV9ydW49ZmFsc2UKLW9wdF9kdXBsaWNhdGVfZGVwcz1mYWxzZQotb3B0X3NpbGVudD1mYWxzZQotb3B0X2RlYnVnPToKLQogIyBJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCBpbiBhbnkgb2YgdGhlIGFjdGlvbnMsIHRoZSBjb21tYW5kIGluIGl0CiAjIHdpbGwgYmUgZXhlY2VkIGF0IHRoZSBlbmQuICBUaGlzIHByZXZlbnRzIGhlcmUtZG9jdW1lbnRzIGZyb20gYmVpbmcKICMgbGVmdCBvdmVyIGJ5IHNoZWxscy4KIGV4ZWNfY21kPQogCisjIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCitmdW5jX2FwcGVuZCAoKQoreworICAgIGV2YWwgIiR7MX09XCQkezF9XCR7Mn0iCit9ICMgZnVuY19hcHBlbmQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKyMgZnVuY19hcHBlbmRfcXVvdGVkIHZhciB2YWx1ZQorIyBRdW90ZSBWQUxVRSBhbmQgYXBwZW5kIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLCBzZXBhcmF0ZWQKKyMgYnkgYSBzcGFjZS4KK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKQoreworICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iCisgICAgZXZhbCAiJHsxfT1cJCR7MX1cXCBcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorfSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCisjIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCitmdW5jX2FyaXRoICgpCit7CisgICAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiR7QH0iYAorfSAjIGZ1bmNfYXJpdGggbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX2xlbiBzdHJpbmcKKyMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KK2Z1bmNfbGVuICgpCit7CisgICAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkezF9IiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCit9ICMgZnVuY19sZW4gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX2xvMm8gb2JqZWN0CitmdW5jX2xvMm8gKCkKK3sKKyAgICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCit9ICMgZnVuY19sbzJvIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKKyMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCitmdW5jX3hmb3JtICgpCit7CisgICAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCit9ICMgZnVuY194Zm9ybSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCiAjIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiBhcmcuLi4KICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvciwgZm9sbG93ZWQgYnkKICMgYSBjb25maWd1cmF0aW9uIGZhaWx1cmUgaGludCwgYW5kIGV4aXQuCkBAIC02MzYsMTYgKzkxOSwxNiBAQAogIyBEaXNwbGF5IHRoZSBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgdGhpcyBzY3JpcHQuCiBmdW5jX2ZlYXR1cmVzICgpCiB7Ci0gICAgJEVDSE8gImhvc3Q6ICRob3N0IgorICAgIGVjaG8gImhvc3Q6ICRob3N0IgogICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCi0gICAgICAkRUNITyAiZW5hYmxlIHNoYXJlZCBsaWJyYXJpZXMiCisgICAgICBlY2hvICJlbmFibGUgc2hhcmVkIGxpYnJhcmllcyIKICAgICBlbHNlCi0gICAgICAkRUNITyAiZGlzYWJsZSBzaGFyZWQgbGlicmFyaWVzIgorICAgICAgZWNobyAiZGlzYWJsZSBzaGFyZWQgbGlicmFyaWVzIgogICAgIGZpCiAgICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgotICAgICAgJEVDSE8gImVuYWJsZSBzdGF0aWMgbGlicmFyaWVzIgorICAgICAgZWNobyAiZW5hYmxlIHN0YXRpYyBsaWJyYXJpZXMiCiAgICAgZWxzZQotICAgICAgJEVDSE8gImRpc2FibGUgc3RhdGljIGxpYnJhcmllcyIKKyAgICAgIGVjaG8gImRpc2FibGUgc3RhdGljIGxpYnJhcmllcyIKICAgICBmaQogCiAgICAgZXhpdCAkPwpAQCAtNjkyLDEzMyArOTc1LDYgQEAKICAgZXNhYwogfQogCi0jIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbgotIyB0aGUgc2NyaXB0IHRvIG1ha2UgdGhpbmdzIGxpa2UgYGxpYnRvb2wgLS12ZXJzaW9uJyBoYXBwZW4gcXVpY2tseS4KLXsKLQotICAjIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKLSAgY2FzZSAkMSBpbgotICBjbGVhbnxjbGVhfGNsZXxjbCkKLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0Ci0gICAgOzsKLSAgY29tcGlsZXxjb21waWx8Y29tcGl8Y29tcHxjb218Y298YykKLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKLSAgICA7OwotICBleGVjdXRlfGV4ZWN1dHxleGVjdXxleGVjfGV4ZXxleHxlKQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAotICAgIDs7Ci0gIGZpbmlzaHxmaW5pc3xmaW5pfGZpbnxmaXxmKQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0Ci0gICAgOzsKLSAgaW5zdGFsbHxpbnN0YWx8aW5zdGF8aW5zdHxpbnN8aW58aSkKLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKLSAgICA7OwotICBsaW5rfGxpbnxsaXxsKQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAotICAgIDs7Ci0gIHVuaW5zdGFsbHx1bmluc3RhbHx1bmluc3RhfHVuaW5zdHx1bmluc3x1bmlufHVuaXx1bnx1KQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0Ci0gICAgOzsKLSAgZXNhYwotCi0gICMgUGFyc2Ugbm9uLW1vZGUgc3BlY2lmaWMgYXJndW1lbnRzOgotICB3aGlsZSB0ZXN0ICIkIyIgLWd0IDA7IGRvCi0gICAgb3B0PSIkMSIKLSAgICBzaGlmdAotCi0gICAgY2FzZSAkb3B0IGluCi0gICAgICAtLWNvbmZpZykJCWZ1bmNfY29uZmlnCQkJCQk7OwotCi0gICAgICAtLWRlYnVnKQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKLQkJCWZ1bmNfZWNobyAiZW5hYmxpbmcgc2hlbGwgdHJhY2UgbW9kZSIKLQkJCW9wdF9kZWJ1Zz0nc2V0IC14JwotCQkJJG9wdF9kZWJ1ZwotCQkJOzsKLQotICAgICAgLWRsb3BlbikJCXRlc3QgIiQjIiAtZXEgMCAmJiBmdW5jX21pc3NpbmdfYXJnICIkb3B0IiAmJiBicmVhawotCQkJZXhlY3V0ZV9kbGZpbGVzPSIkZXhlY3V0ZV9kbGZpbGVzICQxIgotCQkJc2hpZnQKLQkJCTs7Ci0KLSAgICAgIC0tZHJ5LXJ1biB8IC1uKQlvcHRfZHJ5X3J1bj06CQkJCQk7OwotICAgICAgLS1mZWF0dXJlcykgICAgICAgZnVuY19mZWF0dXJlcwkJCQkJOzsKLSAgICAgIC0tZmluaXNoKQkJbW9kZT0iZmluaXNoIgkJCQkJOzsKLQotICAgICAgLS1tb2RlKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCi0JCQljYXNlICQxIGluCi0JCQkgICMgVmFsaWQgbW9kZSBhcmd1bWVudHM6Ci0JCQkgIGNsZWFuKQk7OwotCQkJICBjb21waWxlKQk7OwotCQkJICBleGVjdXRlKQk7OwotCQkJICBmaW5pc2gpCTs7Ci0JCQkgIGluc3RhbGwpCTs7Ci0JCQkgIGxpbmspCQk7OwotCQkJICByZWxpbmspCTs7Ci0JCQkgIHVuaW5zdGFsbCkJOzsKLQotCQkJICAjIENhdGNoIGFueXRoaW5nIGVsc2UgYXMgYW4gZXJyb3IKLQkJCSAgKikgZnVuY19lcnJvciAiaW52YWxpZCBhcmd1bWVudCBmb3IgJG9wdCIKLQkJCSAgICAgZXhpdF9jbWQ9ZXhpdAotCQkJICAgICBicmVhawotCQkJICAgICA7OwotCQkgICAgICAgIGVzYWMKLQotCQkJbW9kZT0iJDEiCi0JCQlzaGlmdAotCQkJOzsKLQotICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcykKLQkJCW9wdF9kdXBsaWNhdGVfZGVwcz06CQkJCTs7Ci0KLSAgICAgIC0tcXVpZXR8LS1zaWxlbnQpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0JCQlvcHRfc2lsZW50PToKLQkJCTs7Ci0KLSAgICAgIC0tdmVyYm9zZXwgLXYpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0JCQlvcHRfc2lsZW50PWZhbHNlCi0JCQk7OwotCi0gICAgICAtLXRhZykJCXRlc3QgIiQjIiAtZXEgMCAmJiBmdW5jX21pc3NpbmdfYXJnICIkb3B0IiAmJiBicmVhawotCQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCAkMSIKLQkJCWZ1bmNfZW5hYmxlX3RhZyAiJDEiCSMgdGFnbmFtZSBpcyBzZXQgaGVyZQotCQkJc2hpZnQKLQkJCTs7Ci0KLSAgICAgICMgU2VwYXJhdGUgb3B0YXJncyB0byBsb25nIG9wdGlvbnM6Ci0gICAgICAtZGxvcGVuPSp8LS1tb2RlPSp8LS10YWc9KikKLQkJCWZ1bmNfb3B0X3NwbGl0ICIkb3B0IgotCQkJc2V0IGR1bW15ICIkZnVuY19vcHRfc3BsaXRfb3B0IiAiJGZ1bmNfb3B0X3NwbGl0X2FyZyIgJHsxKyIkQCJ9Ci0JCQlzaGlmdAotCQkJOzsKLQotICAgICAgLVw/fC1oKQkJZnVuY191c2FnZQkJCQkJOzsKLSAgICAgIC0taGVscCkJCW9wdF9oZWxwPToJCQkJCTs7Ci0gICAgICAtLXZlcnNpb24pCWZ1bmNfdmVyc2lvbgkJCQkJOzsKLQotICAgICAgLSopCQlmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXplZCBvcHRpb24gXGAkb3B0JyIJOzsKLQotICAgICAgKikJCW5vbm9wdD0iJG9wdCIKLQkJCWJyZWFrCi0JCQk7OwotICAgIGVzYWMKLSAgZG9uZQotCi0KLSAgY2FzZSAkaG9zdCBpbgotICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpwdzMyKiB8ICpjZWdjYyopCi0gICAgICAjIGRvbid0IGVsaW1pbmF0ZSBkdXBsaWNhdGlvbnMgaW4gJHBvc3RkZXBzIGFuZCAkcHJlZGVwcwotICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz06Ci0gICAgICA7OwotICAgICopCi0gICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfZHVwbGljYXRlX2RlcHMKLSAgICAgIDs7Ci0gIGVzYWMKLQotICAjIEhhdmluZyB3YXJuZWQgYWJvdXQgYWxsIG1pcy1zcGVjaWZpZWQgb3B0aW9ucywgYmFpbCBvdXQgaWYKLSAgIyBhbnl0aGluZyB3YXMgd3JvbmcuCi0gICRleGl0X2NtZCAkRVhJVF9GQUlMVVJFCi19Ci0KICMgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCiAjIEVuc3VyZSB0aGF0IHdlIGFyZSB1c2luZyBtNCBtYWNyb3MsIGFuZCBsaWJ0b29sIHNjcmlwdCBmcm9tIHRoZSBzYW1lCiAjIHJlbGVhc2Ugb2YgbGlidG9vbC4KQEAgLTg1NSwzOCArMTAxMSwyMTkgQEAKIH0KIAogCisjIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKK2Nhc2UgJDEgaW4KK2NsZWFufGNsZWF8Y2xlfGNsKQorICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0CisgIDs7Citjb21waWxlfGNvbXBpbHxjb21waXxjb21wfGNvbXxjb3xjKQorICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKKyAgOzsKK2V4ZWN1dGV8ZXhlY3V0fGV4ZWN1fGV4ZWN8ZXhlfGV4fGUpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAorICA7OworZmluaXNofGZpbmlzfGZpbml8ZmlufGZpfGYpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0CisgIDs7CitpbnN0YWxsfGluc3RhbHxpbnN0YXxpbnN0fGluc3xpbnxpKQorICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKKyAgOzsKK2xpbmt8bGlufGxpfGwpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAorICA7OwordW5pbnN0YWxsfHVuaW5zdGFsfHVuaW5zdGF8dW5pbnN0fHVuaW5zfHVuaW58dW5pfHVufHUpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0CisgIDs7Citlc2FjCisKKworCisjIE9wdGlvbiBkZWZhdWx0czoKK29wdF9kZWJ1Zz06CitvcHRfZHJ5X3J1bj1mYWxzZQorb3B0X2NvbmZpZz1mYWxzZQorb3B0X3ByZXNlcnZlX2R1cF9kZXBzPWZhbHNlCitvcHRfZmVhdHVyZXM9ZmFsc2UKK29wdF9maW5pc2g9ZmFsc2UKK29wdF9oZWxwPWZhbHNlCitvcHRfaGVscF9hbGw9ZmFsc2UKK29wdF9zaWxlbnQ9Ogorb3B0X3dhcm5pbmc9Ogorb3B0X3ZlcmJvc2U9Ogorb3B0X3NpbGVudD1mYWxzZQorb3B0X3ZlcmJvc2U9ZmFsc2UKKworCisjIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbiB0aGUKKyMgc2NyaXB0IHRvIG1ha2UgdGhpbmdzIGxpa2UgYC0tdmVyc2lvbicgaGFwcGVuIGFzIHF1aWNrbHkgYXMgd2UgY2FuLgoreworICAjIHRoaXMganVzdCBlYXNlcyBleGl0IGhhbmRsaW5nCisgIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCisgICAgb3B0PSIkMSIKKyAgICBzaGlmdAorICAgIGNhc2UgJG9wdCBpbgorICAgICAgLS1kZWJ1Z3wteCkJb3B0X2RlYnVnPSdzZXQgLXgnCisJCQlmdW5jX2VjaG8gImVuYWJsaW5nIHNoZWxsIHRyYWNlIG1vZGUiCisJCQkkb3B0X2RlYnVnCisJCQk7OworICAgICAgLS1kcnktcnVufC0tZHJ5cnVufC1uKQorCQkJb3B0X2RyeV9ydW49OgorCQkJOzsKKyAgICAgIC0tY29uZmlnKQorCQkJb3B0X2NvbmZpZz06CitmdW5jX2NvbmZpZworCQkJOzsKKyAgICAgIC0tZGxvcGVufC1kbG9wZW4pCisJCQlvcHRhcmc9IiQxIgorCQkJb3B0X2Rsb3Blbj0iJHtvcHRfZGxvcGVuKyRvcHRfZGxvcGVuCit9JG9wdGFyZyIKKwkJCXNoaWZ0CisJCQk7OworICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcykKKwkJCW9wdF9wcmVzZXJ2ZV9kdXBfZGVwcz06CisJCQk7OworICAgICAgLS1mZWF0dXJlcykKKwkJCW9wdF9mZWF0dXJlcz06CitmdW5jX2ZlYXR1cmVzCisJCQk7OworICAgICAgLS1maW5pc2gpCisJCQlvcHRfZmluaXNoPToKK3NldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKKwkJCTs7CisgICAgICAtLWhlbHApCisJCQlvcHRfaGVscD06CisJCQk7OworICAgICAgLS1oZWxwLWFsbCkKKwkJCW9wdF9oZWxwX2FsbD06CitvcHRfaGVscD0nOiBoZWxwLWFsbCcKKwkJCTs7CisgICAgICAtLW1vZGUpCisJCQl0ZXN0ICQjID0gMCAmJiBmdW5jX21pc3NpbmdfYXJnICRvcHQgJiYgYnJlYWsKKwkJCW9wdGFyZz0iJDEiCisJCQlvcHRfbW9kZT0iJG9wdGFyZyIKK2Nhc2UgJG9wdGFyZyBpbgorICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgorICBjbGVhbnxjb21waWxlfGV4ZWN1dGV8ZmluaXNofGluc3RhbGx8bGlua3xyZWxpbmt8dW5pbnN0YWxsKSA7OworCisgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgorICAqKSBmdW5jX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IGZvciAkb3B0IgorICAgICBleGl0X2NtZD1leGl0CisgICAgIGJyZWFrCisgICAgIDs7Citlc2FjCisJCQlzaGlmdAorCQkJOzsKKyAgICAgIC0tbm8tc2lsZW50fC0tbm8tcXVpZXQpCisJCQlvcHRfc2lsZW50PWZhbHNlCitmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKKwkJCTs7CisgICAgICAtLW5vLXdhcm5pbmd8LS1uby13YXJuKQorCQkJb3B0X3dhcm5pbmc9ZmFsc2UKK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgorCQkJOzsKKyAgICAgIC0tbm8tdmVyYm9zZSkKKwkJCW9wdF92ZXJib3NlPWZhbHNlCitmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKKwkJCTs7CisgICAgICAtLXNpbGVudHwtLXF1aWV0KQorCQkJb3B0X3NpbGVudD06CitmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKKyAgICAgICAgb3B0X3ZlcmJvc2U9ZmFsc2UKKwkJCTs7CisgICAgICAtLXZlcmJvc2V8LXYpCisJCQlvcHRfdmVyYm9zZT06CitmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKK29wdF9zaWxlbnQ9ZmFsc2UKKwkJCTs7CisgICAgICAtLXRhZykKKwkJCXRlc3QgJCMgPSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgJG9wdCAmJiBicmVhaworCQkJb3B0YXJnPSIkMSIKKwkJCW9wdF90YWc9IiRvcHRhcmciCitmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCAkb3B0YXJnIgorZnVuY19lbmFibGVfdGFnICIkb3B0YXJnIgorCQkJc2hpZnQKKwkJCTs7CisKKyAgICAgIC1cP3wtaCkJCWZ1bmNfdXNhZ2UJCQkJOzsKKyAgICAgIC0taGVscCkJCWZ1bmNfaGVscAkJCQk7OworICAgICAgLS12ZXJzaW9uKQlmdW5jX3ZlcnNpb24JCQkJOzsKKworICAgICAgIyBTZXBhcmF0ZSBvcHRhcmdzIHRvIGxvbmcgb3B0aW9uczoKKyAgICAgIC0tKj0qKQorCQkJZnVuY19zcGxpdF9sb25nX29wdCAiJG9wdCIKKwkJCXNldCBkdW1teSAiJGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZSIgIiRmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZyIgJHsxKyIkQCJ9CisJCQlzaGlmdAorCQkJOzsKKworICAgICAgIyBTZXBhcmF0ZSBub24tYXJndW1lbnQgc2hvcnQgb3B0aW9uczoKKyAgICAgIC1cPyp8LWgqfC1uKnwtdiopCisJCQlmdW5jX3NwbGl0X3Nob3J0X29wdCAiJG9wdCIKKwkJCXNldCBkdW1teSAiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWUiICItJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyIgJHsxKyIkQCJ9CisJCQlzaGlmdAorCQkJOzsKKworICAgICAgLS0pCQlicmVhawkJCQkJOzsKKyAgICAgIC0qKQkJZnVuY19mYXRhbF9oZWxwICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgJG9wdCciIDs7CisgICAgICAqKQkJc2V0IGR1bW15ICIkb3B0IiAkezErIiRAIn07CXNoaWZ0OyBicmVhayAgOzsKKyAgICBlc2FjCisgIGRvbmUKKworICAjIFZhbGlkYXRlIG9wdGlvbnM6CisKKyAgIyBzYXZlIGZpcnN0IG5vbi1vcHRpb24gYXJndW1lbnQKKyAgaWYgdGVzdCAiJCMiIC1ndCAwOyB0aGVuCisgICAgbm9ub3B0PSIkb3B0IgorICAgIHNoaWZ0CisgIGZpCisKKyAgIyBwcmVzZXJ2ZSAtLWRlYnVnCisgIHRlc3QgIiRvcHRfZGVidWciID0gOiB8fCBmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgLS1kZWJ1ZyIKKworICBjYXNlICRob3N0IGluCisgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKnB3MzIqIHwgKmNlZ2NjKikKKyAgICAgICMgZG9uJ3QgZWxpbWluYXRlIGR1cGxpY2F0aW9ucyBpbiAkcG9zdGRlcHMgYW5kICRwcmVkZXBzCisgICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPToKKyAgICAgIDs7CisgICAgKikKKyAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9JG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcworICAgICAgOzsKKyAgZXNhYworCisgICRvcHRfaGVscCB8fCB7CisgICAgIyBTYW5pdHkgY2hlY2tzIGZpcnN0OgorICAgIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAorCisgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgIT0geWVzOyB0aGVuCisgICAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gIm5vdCBjb25maWd1cmVkIHRvIGJ1aWxkIGFueSBraW5kIG9mIGxpYnJhcnkiCisgICAgZmkKKworICAgICMgRGFyd2luIHN1Y2tzCisgICAgZXZhbCBzdGRfc2hyZXh0PVwiJHNocmV4dF9jbWRzXCIKKworICAgICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCisgICAgaWYgdGVzdCAtbiAiJG9wdF9kbG9wZW4iICYmIHRlc3QgIiRvcHRfbW9kZSIgIT0gZXhlY3V0ZTsgdGhlbgorICAgICAgZnVuY19lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbiBcYC1kbG9wZW4nIgorICAgICAgJEVDSE8gIiRoZWxwIiAxPiYyCisgICAgICBleGl0ICRFWElUX0ZBSUxVUkUKKyAgICBmaQorCisgICAgIyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgorICAgIGdlbmVyaWNfaGVscD0iJGhlbHAiCisgICAgaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCAtLW1vZGU9JG9wdF9tb2RlJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCisgIH0KKworCisgICMgQmFpbCBpZiB0aGUgb3B0aW9ucyB3ZXJlIHNjcmV3ZWQKKyAgJGV4aXRfY21kICRFWElUX0ZBSUxVUkUKK30KKworCisKKwogIyMgLS0tLS0tLS0tLS0gIyMKICMjICAgIE1haW4uICAgICMjCiAjIyAtLS0tLS0tLS0tLSAjIwogCi0kb3B0X2hlbHAgfHwgewotICAjIFNhbml0eSBjaGVja3MgZmlyc3Q6Ci0gIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAotCi0gIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiICE9IHllczsgdGhlbgotICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAibm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIKLSAgZmkKLQotICB0ZXN0IC16ICIkbW9kZSIgJiYgZnVuY19mYXRhbF9lcnJvciAiZXJyb3I6IHlvdSBtdXN0IHNwZWNpZnkgYSBNT0RFLiIKLQotCi0gICMgRGFyd2luIHN1Y2tzCi0gIGV2YWwgc3RkX3NocmV4dD1cIiRzaHJleHRfY21kc1wiCi0KLQotICAjIE9ubHkgZXhlY3V0ZSBtb2RlIGlzIGFsbG93ZWQgdG8gaGF2ZSAtZGxvcGVuIGZsYWdzLgotICBpZiB0ZXN0IC1uICIkZXhlY3V0ZV9kbGZpbGVzIiAmJiB0ZXN0ICIkbW9kZSIgIT0gZXhlY3V0ZTsgdGhlbgotICAgIGZ1bmNfZXJyb3IgInVucmVjb2duaXplZCBvcHRpb24gXGAtZGxvcGVuJyIKLSAgICAkRUNITyAiJGhlbHAiIDE+JjIKLSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLSAgZmkKLQotICAjIENoYW5nZSB0aGUgaGVscCBtZXNzYWdlIHRvIGEgbW9kZS1zcGVjaWZpYyBvbmUuCi0gIGdlbmVyaWNfaGVscD0iJGhlbHAiCi0gIGhlbHA9IlRyeSBcYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPSRtb2RlJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCi19Ci0KLQogIyBmdW5jX2xhbGliX3AgZmlsZQogIyBUcnVlIGlmZiBGSUxFIGlzIGEgbGlidG9vbCBgLmxhJyBsaWJyYXJ5IG9yIGAubG8nIG9iamVjdCBmaWxlLgogIyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYSBiYXNpYyBzYW5pdHkgY2hlY2s7IGl0IHdpbGwgaGFyZGx5IGZsdXNoIG91dApAQCAtOTUwLDEyICsxMjg3LDkgQEAKICMgdGVtcG9yYXJ5IGx0d3JhcHBlcl9zY3JpcHQuCiBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICgpCiB7Ci0gICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiIKLSAgICBpZiBmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgIiQxIjsgdGhlbgotCWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiQxIiAiIiAiLiIKLQlmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLQlmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQvJG9iamRpci8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH1fbHRzaHdyYXBwZXIiCi0gICAgZmkKKyAgICBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkMSIgIiIgIi4iCisgICAgZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisgICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0LyRvYmpkaXIvJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9X2x0c2h3cmFwcGVyIgogfQogCiAjIGZ1bmNfbHR3cmFwcGVyX3AgZmlsZQpAQCAtMTAwMSw2ICsxMzM1LDM3IEBACiB9CiAKIAorIyBmdW5jX3Jlc29sdmVfc3lzcm9vdCBQQVRICisjIFJlcGxhY2UgYSBsZWFkaW5nID0gaW4gUEFUSCB3aXRoIGEgc3lzcm9vdC4gIFN0b3JlIHRoZSByZXN1bHQgaW50bworIyBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKK2Z1bmNfcmVzb2x2ZV9zeXNyb290ICgpCit7CisgIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdD0kMQorICBjYXNlICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQgaW4KKyAgPSopCisgICAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICA7OworICBlc2FjCit9CisKKyMgZnVuY19yZXBsYWNlX3N5c3Jvb3QgUEFUSAorIyBJZiBQQVRIIGJlZ2lucyB3aXRoIHRoZSBzeXNyb290LCByZXBsYWNlIGl0IHdpdGggPSBhbmQKKyMgc3RvcmUgdGhlIHJlc3VsdCBpbnRvIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdC4KK2Z1bmNfcmVwbGFjZV9zeXNyb290ICgpCit7CisgIGNhc2UgIiRsdF9zeXNyb290OiQxIiBpbgorICA/KjoiJGx0X3N5c3Jvb3QiKikKKyAgICBmdW5jX3N0cmlwbmFtZSAiJGx0X3N5c3Jvb3QiICcnICIkMSIKKyAgICBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQ9Ij0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorICAgIDs7CisgICopCisgICAgIyBJbmNsdWRpbmcgbm8gc3lzcm9vdC4KKyAgICBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQ9JDEKKyAgICA7OworICBlc2FjCit9CisKICMgZnVuY19pbmZlcl90YWcgYXJnCiAjIEluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uIHRvIHVzZSBpZiBhbnkgYXJlIGF2YWlsYWJsZSBhbmQKICMgaWYgb25lIHdhc24ndCBjaG9zZW4gdmlhIHRoZSAiLS10YWciIGNvbW1hbmQgbGluZSBvcHRpb24uCkBAIC0xMDEzLDEzICsxMzc4LDE1IEBACiAgICAgaWYgdGVzdCAtbiAiJGF2YWlsYWJsZV90YWdzIiAmJiB0ZXN0IC16ICIkdGFnbmFtZSI7IHRoZW4KICAgICAgIENDX3F1b3RlZD0KICAgICAgIGZvciBhcmcgaW4gJENDOyBkbwotICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotCUNDX3F1b3RlZD0iJENDX3F1b3RlZCAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJZnVuY19hcHBlbmRfcXVvdGVkIENDX3F1b3RlZCAiJGFyZyIKICAgICAgIGRvbmUKKyAgICAgIENDX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ2AKKyAgICAgIENDX3F1b3RlZF9leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NfcXVvdGVkYAogICAgICAgY2FzZSAkQCBpbgogICAgICAgIyBCbGFua3MgaW4gdGhlIGNvbW1hbmQgbWF5IGhhdmUgYmVlbiBzdHJpcHBlZCBieSB0aGUgY2FsbGluZyBzaGVsbCwKICAgICAgICMgYnV0IG5vdCBmcm9tIHRoZSBDQyBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aGVuIGNvbmZpZ3VyZSB3YXMgcnVuLgotICAgICAgIiAkQ0MgIiogfCAiJENDICIqIHwgIiBgJEVDSE8gJENDYCAiKiB8ICJgJEVDSE8gJENDYCAiKiB8ICIgJENDX3F1b3RlZCIqIHwgIiRDQ19xdW90ZWQgIiogfCAiIGAkRUNITyAkQ0NfcXVvdGVkYCAiKiB8ICJgJEVDSE8gJENDX3F1b3RlZGAgIiopIDs7CisgICAgICAiICRDQyAiKiB8ICIkQ0MgIiogfCAiICRDQ19leHBhbmRlZCAiKiB8ICIkQ0NfZXhwYW5kZWQgIiogfCBcCisgICAgICAiICRDQ19xdW90ZWQiKiB8ICIkQ0NfcXVvdGVkICIqIHwgIiAkQ0NfcXVvdGVkX2V4cGFuZGVkICIqIHwgIiRDQ19xdW90ZWRfZXhwYW5kZWQgIiopIDs7CiAgICAgICAjIEJsYW5rcyBhdCB0aGUgc3RhcnQgb2YgJGJhc2VfY29tcGlsZSB3aWxsIGNhdXNlIHRoaXMgdG8gZmFpbAogICAgICAgIyBpZiB3ZSBkb24ndCBjaGVjayBmb3IgdGhlbSBhcyB3ZWxsLgogICAgICAgKikKQEAgLTEwMzAsMTEgKzEzOTcsMTMgQEAKIAkgICAgQ0NfcXVvdGVkPQogCSAgICBmb3IgYXJnIGluICRDQzsgZG8KIAkgICAgICAjIERvdWJsZS1xdW90ZSBhcmdzIGNvbnRhaW5pbmcgb3RoZXIgc2hlbGwgbWV0YWNoYXJhY3RlcnMuCi0JICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLQkgICAgICBDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBDQ19xdW90ZWQgIiRhcmciCiAJICAgIGRvbmUKKwkgICAgQ0NfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDYAorCSAgICBDQ19xdW90ZWRfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDX3F1b3RlZGAKIAkgICAgY2FzZSAiJEAgIiBpbgotCSAgICAgICIgJENDICIqIHwgIiRDQyAiKiB8ICIgYCRFQ0hPICRDQ2AgIiogfCAiYCRFQ0hPICRDQ2AgIiogfCAiICRDQ19xdW90ZWQiKiB8ICIkQ0NfcXVvdGVkICIqIHwgIiBgJEVDSE8gJENDX3F1b3RlZGAgIiogfCAiYCRFQ0hPICRDQ19xdW90ZWRgICIqKQorCSAgICAiICRDQyAiKiB8ICIkQ0MgIiogfCAiICRDQ19leHBhbmRlZCAiKiB8ICIkQ0NfZXhwYW5kZWQgIiogfCBcCisJICAgICIgJENDX3F1b3RlZCIqIHwgIiRDQ19xdW90ZWQgIiogfCAiICRDQ19xdW90ZWRfZXhwYW5kZWQgIiogfCAiJENDX3F1b3RlZF9leHBhbmRlZCAiKikKIAkgICAgICAjIFRoZSBjb21waWxlciBpbiB0aGUgYmFzZSBjb21waWxlIGNvbW1hbmQgbWF0Y2hlcwogCSAgICAgICMgdGhlIG9uZSBpbiB0aGUgdGFnZ2VkIGNvbmZpZ3VyYXRpb24uCiAJICAgICAgIyBBc3N1bWUgdGhpcyBpcyB0aGUgdGFnZ2VkIGNvbmZpZ3VyYXRpb24gd2Ugd2FudC4KQEAgLTEwOTcsNiArMTQ2Niw0ODYgQEAKICAgICB9CiB9CiAKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgRklMRSBOQU1FIEFORCBQQVRIIENPTlZFUlNJT04gSEVMUEVSIEZVTkNUSU9OUyAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgQVJHCisjIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyB3aGVuICRidWlsZCBpcyAqbml4LAorIyBhbmQgJGhvc3QgaXMgbWluZ3csIGN5Z3dpbiwgb3Igc29tZSBvdGhlciB3MzIgZW52aXJvbm1lbnQuIFJlbGllcyBvbiBhCisjIGNvcnJlY3RseSBjb25maWd1cmVkIHdpbmUgZW52aXJvbm1lbnQgYXZhaWxhYmxlLCB3aXRoIHRoZSB3aW5lcGF0aCBwcm9ncmFtCisjIGluICRidWlsZCdzICRQQVRILgorIworIyBBUkcgaXMgdGhlICRidWlsZCBmaWxlIG5hbWUgdG8gYmUgY29udmVydGVkIHRvIHczMiBmb3JtYXQuCisjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0LCBhbmQgd2lsbAorIyBiZSBlbXB0eSBvbiBlcnJvciAob3Igd2hlbiBBUkcgaXMgZW1wdHkpCitmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIFVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXMgbm90IGV4aXQgd2l0aCBhIG5vbi16ZXJvIGVycm9yIGNvZGUsIHNvIHdlCisgICAgIyBhcmUgZm9yY2VkIHRvIGNoZWNrIHRoZSBjb250ZW50cyBvZiBzdGRvdXQuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUKKyAgICAjIGNvbW1hbmQgaXMgbm90IGZvdW5kLCB0aGUgc2hlbGwgd2lsbCBzZXQgYW4gZXhpdCBjb2RlIG9mIDEyNyBhbmQgcHJpbnQKKyAgICAjICphbiBlcnJvciBtZXNzYWdlKiB0byBzdGRvdXQuIFNvIHdlIG11c3QgY2hlY2sgZm9yIGJvdGggZXJyb3IgY29kZSBvZgorICAgICMgemVybyBBTkQgbm9uLWVtcHR5IHN0ZG91dCwgd2hpY2ggZXhwbGFpbnMgdGhlIG9kZCBjb25zdHJ1Y3Rpb246CisgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXA9YHdpbmVwYXRoIC13ICIkMSIgMj4vZGV2L251bGxgCisgICAgaWYgdGVzdCAiJD8iIC1lcSAwICYmIHRlc3QgLW4gIiR7ZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXB9IjsgdGhlbgorICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9YCRFQ0hPICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXAiIHwKKyAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorICAgIGVsc2UKKyAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PQorICAgIGZpCisgIGZpCit9CisjIGVuZDogZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiBBUkcKKyMgSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgcGF0aCBjb252ZXJzaW9uIGZ1bmN0aW9ucyB3aGVuICRidWlsZCBpcyAqbml4LCBhbmQKKyMgJGhvc3QgaXMgbWluZ3csIGN5Z3dpbiwgb3Igc29tZSBvdGhlciB3MzIgZW52aXJvbm1lbnQuIFJlbGllcyBvbiBhIGNvcnJlY3RseQorIyBjb25maWd1cmVkIHdpbmUgZW52aXJvbm1lbnQgYXZhaWxhYmxlLCB3aXRoIHRoZSB3aW5lcGF0aCBwcm9ncmFtIGluICRidWlsZCdzCisjICRQQVRILiBBc3N1bWVzIEFSRyBoYXMgbm8gbGVhZGluZyBvciB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzLgorIworIyBBUkcgaXMgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvIHdpbjMyLgorIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluICRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdC4KKyMgVW5jb252ZXJ0aWJsZSBmaWxlIChkaXJlY3RvcnkpIG5hbWVzIGluIEFSRyBhcmUgc2tpcHBlZDsgaWYgbm8gZGlyZWN0b3J5IG5hbWVzCisjIGFyZSBjb252ZXJ0aWJsZSwgdGhlbiB0aGUgcmVzdWx0IG1heSBiZSBlbXB0eS4KK2Z1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICAjIHVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXNuJ3QgY29udmVydCBwYXRocywgb25seSBmaWxlIG5hbWVzCisgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0PSIiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgIG9sZElGUz0kSUZTCisgICAgSUZTPToKKyAgICBmb3IgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9mIGluICQxOyBkbworICAgICAgSUZTPSRvbGRJRlMKKyAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX2YiCisgICAgICBpZiB0ZXN0IC1uICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiIDsgdGhlbgorICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQiOyB0aGVuCisgICAgICAgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKyAgICAgICAgZWxzZQorICAgICAgICAgIGZ1bmNfYXBwZW5kIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0ICI7JGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgorICAgICAgICBmaQorICAgICAgZmkKKyAgICBkb25lCisgICAgSUZTPSRvbGRJRlMKKyAgZmkKK30KKyMgZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyCisKKworIyBmdW5jX2N5Z3BhdGggQVJHUy4uLgorIyBXcmFwcGVyIGFyb3VuZCBjYWxsaW5nIHRoZSBjeWdwYXRoIHByb2dyYW0gdmlhIExUX0NZR1BBVEguIFRoaXMgaXMgdXNlZCB3aGVuCisjIHdoZW4gKDEpICRidWlsZCBpcyAqbml4IGFuZCBDeWd3aW4gaXMgaG9zdGVkIHZpYSBhIHdpbmUgZW52aXJvbm1lbnQ7IG9yICgyKQorIyAkYnVpbGQgaXMgTVNZUyBhbmQgJGhvc3QgaXMgQ3lnd2luLCBvciAoMykgJGJ1aWxkIGlzIEN5Z3dpbi4gSW4gY2FzZSAoMSkgb3IKKyMgKDIpLCByZXR1cm5zIHRoZSBDeWd3aW4gZmlsZSBuYW1lIG9yIHBhdGggaW4gZnVuY19jeWdwYXRoX3Jlc3VsdCAoaW5wdXQKKyMgZmlsZSBuYW1lIG9yIHBhdGggaXMgYXNzdW1lZCB0byBiZSBpbiB3MzIgZm9ybWF0LCBhcyBwcmV2aW91c2x5IGNvbnZlcnRlZAorIyBmcm9tICRidWlsZCdzICpuaXggb3IgTVNZUyBmb3JtYXQpLiBJbiBjYXNlICgzKSwgcmV0dXJucyB0aGUgdzMyIGZpbGUgbmFtZQorIyBvciBwYXRoIGluIGZ1bmNfY3lncGF0aF9yZXN1bHQgKGlucHV0IGZpbGUgbmFtZSBvciBwYXRoIGlzIGFzc3VtZWQgdG8gYmUgaW4KKyMgQ3lnd2luIGZvcm1hdCkuIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nIG9uIGVycm9yLgorIworIyBBUkdTIGFyZSBwYXNzZWQgdG8gY3lncGF0aCwgd2l0aCB0aGUgbGFzdCBvbmUgYmVpbmcgdGhlIGZpbGUgbmFtZSBvciBwYXRoIHRvCisjIGJlIGNvbnZlcnRlZC4KKyMKKyMgU3BlY2lmeSB0aGUgYWJzb2x1dGUgKm5peCAob3IgdzMyKSBuYW1lIHRvIGN5Z3BhdGggaW4gdGhlIExUX0NZR1BBVEgKKyMgZW52aXJvbm1lbnQgdmFyaWFibGU7IGRvIG5vdCBwdXQgaXQgaW4gJFBBVEguCitmdW5jX2N5Z3BhdGggKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBpZiB0ZXN0IC1uICIkTFRfQ1lHUEFUSCIgJiYgdGVzdCAtZiAiJExUX0NZR1BBVEgiOyB0aGVuCisgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD1gJExUX0NZR1BBVEggIiRAIiAyPi9kZXYvbnVsbGAKKyAgICBpZiB0ZXN0ICIkPyIgLW5lIDA7IHRoZW4KKyAgICAgICMgb24gZmFpbHVyZSwgZW5zdXJlIHJlc3VsdCBpcyBlbXB0eQorICAgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD0KKyAgICBmaQorICBlbHNlCisgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD0KKyAgICBmdW5jX2Vycm9yICJMVF9DWUdQQVRIIGlzIGVtcHR5IG9yIHNwZWNpZmllcyBub24tZXhpc3RlbnQgZmlsZTogXGAkTFRfQ1lHUEFUSCciCisgIGZpCit9CisjZW5kOiBmdW5jX2N5Z3BhdGgKKworCisjIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyIEFSRworIyBDb252ZXJ0IGZpbGUgbmFtZSBvciBwYXRoIEFSRyBmcm9tIE1TWVMgZm9ybWF0IHRvIHczMiBmb3JtYXQuICBSZXR1cm4KKyMgcmVzdWx0IGluIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgIyBhd2t3YXJkOiBjbWQgYXBwZW5kcyBzcGFjZXMgdG8gcmVzdWx0CisgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdD1gKCBjbWQgLy9jIGVjaG8gIiQxIiApIDI+L2Rldi9udWxsIHwKKyAgICAkU0VEIC1lICdzL1sgXSokLy8nIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCit9CisjZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgQVJHMSBBUkcyCisjIFZlcmlmeSB0aGF0IEFSRzEgKGEgZmlsZSBuYW1lIGluICRidWlsZCBmb3JtYXQpIHdhcyBjb252ZXJ0ZWQgdG8gJGhvc3QKKyMgZm9ybWF0IGluIEFSRzIuIE90aGVyd2lzZSwgZW1pdCBhbiBlcnJvciBtZXNzYWdlLCBidXQgY29udGludWUgKHJlc2V0dGluZworIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQgdG8gQVJHMSkuCitmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAoKQoreworICAkb3B0X2RlYnVnCisgIGlmIHRlc3QgLXogIiQyIiAmJiB0ZXN0IC1uICIkMSIgOyB0aGVuCisgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSBob3N0IGZpbGUgbmFtZSBjb3JyZXNwb25kaW5nIHRvIgorICAgIGZ1bmNfZXJyb3IgIiAgXGAkMSciCisgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCisgICAgIyBGYWxsYmFjazoKKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICBmaQorfQorIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sKKworCisjIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIEZST01fUEFUSFNFUCBUT19QQVRIU0VQIEZST01fUEFUSCBUT19QQVRICisjIFZlcmlmeSB0aGF0IEZST01fUEFUSCAoYSBwYXRoIGluICRidWlsZCBmb3JtYXQpIHdhcyBjb252ZXJ0ZWQgdG8gJGhvc3QKKyMgZm9ybWF0IGluIFRPX1BBVEguIE90aGVyd2lzZSwgZW1pdCBhbiBlcnJvciBtZXNzYWdlLCBidXQgY29udGludWUsIHJlc2V0dGluZworIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQgdG8gYSBzaW1wbGlzdGljIGZhbGxiYWNrIHZhbHVlIChzZWUgYmVsb3cpLgorZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBpZiB0ZXN0IC16ICIkNCIgJiYgdGVzdCAtbiAiJDMiOyB0aGVuCisgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSB0aGUgaG9zdCBwYXRoIGNvcnJlc3BvbmRpbmcgdG8iCisgICAgZnVuY19lcnJvciAiICBcYCQzJyIKKyAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKKyAgICAjIEZhbGxiYWNrLiAgVGhpcyBpcyBhIGRlbGliZXJhdGVseSBzaW1wbGlzdGljICJjb252ZXJzaW9uIiBhbmQKKyAgICAjIHNob3VsZCBub3QgYmUgImltcHJvdmVkIi4gIFNlZSBsaWJ0b29sLmluZm8uCisgICAgaWYgdGVzdCAieCQxIiAhPSAieCQyIjsgdGhlbgorICAgICAgbHRfcmVwbGFjZV9wYXRoc2VwX2NoYXJzPSJzfCQxfCQyfGciCisgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGVjaG8gIiQzIiB8CisgICAgICAgICRTRUQgLWUgIiRsdF9yZXBsYWNlX3BhdGhzZXBfY2hhcnMiYAorICAgIGVsc2UKKyAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDMiCisgICAgZmkKKyAgZmkKK30KKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgRlJPTlRQQVQgQkFDS1BBVCBSRVBMIE9SSUcKKyMgTW9kaWZpZXMgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IGJ5IHByZXBlbmRpbmcgUkVQTCBpZiBPUklHIG1hdGNoZXMgRlJPTlRQQVQKKyMgYW5kIGFwcGVuZGluZyBSRVBMIGlmIE9SSUcgbWF0Y2hlcyBCQUNLUEFULgorZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICgpCit7CisgICRvcHRfZGVidWcKKyAgY2FzZSAkNCBpbgorICAkMSApIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDMkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorICAgIDs7CisgIGVzYWMKKyAgY2FzZSAkNCBpbgorICAkMiApIGZ1bmNfYXBwZW5kIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCAiJDMiCisgICAgOzsKKyAgZXNhYworfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwCisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgJGJ1aWxkIHRvICRob3N0IEZJTEUgTkFNRSBDT05WRVJTSU9OIEZVTkNUSU9OUyAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBpbnZva2VkIHZpYSBgJHRvX2hvc3RfZmlsZV9jbWQgQVJHJworIworIyBJbiBlYWNoIGNhc2UsIEFSRyBpcyB0aGUgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgdG8gJGhvc3QgZm9ybWF0LgorIyBSZXN1bHQgd2lsbCBiZSBhdmFpbGFibGUgaW4gJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKworCisjIGZ1bmNfdG9faG9zdF9maWxlIEFSRworIyBDb252ZXJ0cyB0aGUgZmlsZSBuYW1lIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gJGhvc3QgZm9ybWF0LiBSZXR1cm4gcmVzdWx0CisjIGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfdG9faG9zdF9maWxlICgpCit7CisgICRvcHRfZGVidWcKKyAgJHRvX2hvc3RfZmlsZV9jbWQgIiQxIgorfQorIyBlbmQgZnVuY190b19ob3N0X2ZpbGUKKworCisjIGZ1bmNfdG9fdG9vbF9maWxlIEFSRyBMQVpZCisjIGNvbnZlcnRzIHRoZSBmaWxlIG5hbWUgQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byB0b29sY2hhaW4gZm9ybWF0LiBSZXR1cm4KKyMgcmVzdWx0IGluIGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdC4gIElmIHRoZSBjb252ZXJzaW9uIGluIHVzZSBpcyBsaXN0ZWQKKyMgaW4gKHRoZSBjb21tYSBzZXBhcmF0ZWQpIExBWlksIG5vIGNvbnZlcnNpb24gdGFrZXMgcGxhY2UuCitmdW5jX3RvX3Rvb2xfZmlsZSAoKQoreworICAkb3B0X2RlYnVnCisgIGNhc2UgLCQyLCBpbgorICAgICosIiR0b190b29sX2ZpbGVfY21kIiwqKQorICAgICAgZnVuY190b190b29sX2ZpbGVfcmVzdWx0PSQxCisgICAgICA7OworICAgICopCisgICAgICAkdG9fdG9vbF9maWxlX2NtZCAiJDEiCisgICAgICBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQ9JGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdAorICAgICAgOzsKKyAgZXNhYworfQorIyBlbmQgZnVuY190b190b29sX2ZpbGUKKworCisjIGZ1bmNfY29udmVydF9maWxlX25vb3AgQVJHCisjIENvcHkgQVJHIHRvIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9maWxlX25vb3AgKCkKK3sKKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKK30KKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX25vb3AKKworCisjIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyIEFSRworIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAobWluZ3cpIE1TWVMgdG8gKG1pbmd3KSB3MzIgZm9ybWF0OyBhdXRvbWF0aWMKKyMgY29udmVyc2lvbiB0byB3MzIgaXMgbm90IGF2YWlsYWJsZSBpbnNpZGUgdGhlIGN3cmFwcGVyLiAgUmV0dXJucyByZXN1bHQgaW4KKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJDEiCisgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorICBmaQorICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorfQorIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKworCisjIGZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIgQVJHCisjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIEN5Z3dpbiB0byB3MzIgZm9ybWF0LiAgUmV0dXJucyByZXN1bHQgaW4KKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgYmVjYXVzZSAkYnVpbGQgaXMgY3lnd2luLCB3ZSBjYWxsICJ0aGUiIGN5Z3BhdGggaW4gJFBBVEg7IG5vIG5lZWQgdG8gdXNlCisgICAgIyBMVF9DWUdQQVRIIGluIHRoaXMgY2FzZS4KKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9YGN5Z3BhdGggLW0gIiQxImAKKyAgZmkKKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKK30KKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKworCisjIGZ1bmNfY29udmVydF9maWxlX25peF90b193MzIgQVJHCisjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tICpuaXggdG8gdzMyIGZvcm1hdC4gIFJlcXVpcmVzIGEgd2luZSBlbnZpcm9ubWVudAorIyBhbmQgYSB3b3JraW5nIHdpbmVwYXRoLiBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJDEiCisgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCisgIGZpCisgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbiBBUkcKKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gTVNZUyB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgTFRfQ1lHUEFUSCBzZXQuCisjIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiQxIgorICAgIGZ1bmNfY3lncGF0aCAtdSAiJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorICBmaQorICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorfQorIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKworCisjIGZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4gQVJHCisjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tICpuaXggdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIEN5Z3dpbiBpbnN0YWxsZWQKKyMgaW4gYSB3aW5lIGVudmlyb25tZW50LCB3b3JraW5nIHdpbmVwYXRoLCBhbmQgTFRfQ1lHUEFUSCBzZXQuICBSZXR1cm5zIHJlc3VsdAorIyBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgIyBjb252ZXJ0IGZyb20gKm5peCB0byB3MzIsIHRoZW4gdXNlIGN5Z3BhdGggdG8gY29udmVydCBmcm9tIHczMiB0byBjeWd3aW4uCisgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJDEiCisgICAgZnVuY19jeWdwYXRoIC11ICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCisgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKyAgZmkKKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKK30KKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgJGJ1aWxkIHRvICRob3N0IFBBVEggQ09OVkVSU0lPTiBGVU5DVElPTlMgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIGludm9rZWQgdmlhIGAkdG9faG9zdF9wYXRoX2NtZCBBUkcnCisjCisjIEluIGVhY2ggY2FzZSwgQVJHIGlzIHRoZSBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCB0byAkaG9zdCBmb3JtYXQuCisjIFRoZSByZXN1bHQgd2lsbCBiZSBhdmFpbGFibGUgaW4gJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KKyMKKyMgUGF0aCBzZXBhcmF0b3JzIGFyZSBhbHNvIGNvbnZlcnRlZCBmcm9tICRidWlsZCBmb3JtYXQgdG8gJGhvc3QgZm9ybWF0LiAgSWYKKyMgQVJHIGJlZ2lucyBvciBlbmRzIHdpdGggYSBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXIsIGl0IGlzIHByZXNlcnZlZCAoYnV0CisjIGNvbnZlcnRlZCB0byAkaG9zdCBmb3JtYXQpIG9uIG91dHB1dC4KKyMKKyMgQWxsIHBhdGggY29udmVyc2lvbiBmdW5jdGlvbnMgYXJlIG5hbWVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29udmVudGlvbjoKKyMgICBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbiAgICA6IGZ1bmNfY29udmVydF9maWxlX1hfdG9fWSAoKQorIyAgIHBhdGggY29udmVyc2lvbiBmdW5jdGlvbiAgICAgICAgIDogZnVuY19jb252ZXJ0X3BhdGhfWF90b19ZICgpCisjIHdoZXJlLCBmb3IgYW55IGdpdmVuICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbiB0aGUgJ1hfdG9fWScgdmFsdWUgaXMgdGhlCisjIHNhbWUuICBJZiBjb252ZXJzaW9uIGZ1bmN0aW9ucyBhcmUgYWRkZWQgZm9yIG5ldyAkYnVpbGQvJGhvc3QgY29tYmluYXRpb25zLAorIyB0aGUgdHdvIG5ldyBmdW5jdGlvbnMgbXVzdCBmb2xsb3cgdGhpcyBwYXR0ZXJuLCBvciBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAorIyB3aWxsIGJyZWFrLgorCisKKyMgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKKyMgRW5zdXJlcyB0aGF0IGZ1bmN0aW9uICJwb2ludGVyIiB2YXJpYWJsZSAkdG9faG9zdF9wYXRoX2NtZCBpcyBzZXQgdG8gdGhlCisjIGFwcHJvcHJpYXRlIHZhbHVlLCBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgJHRvX2hvc3RfZmlsZV9jbWQuCit0b19ob3N0X3BhdGhfY21kPQorZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBpZiB0ZXN0IC16ICIkdG9faG9zdF9wYXRoX2NtZCI7IHRoZW4KKyAgICBmdW5jX3N0cmlwbmFtZSAnZnVuY19jb252ZXJ0X2ZpbGVfJyAnJyAiJHRvX2hvc3RfZmlsZV9jbWQiCisgICAgdG9faG9zdF9wYXRoX2NtZD0iZnVuY19jb252ZXJ0X3BhdGhfJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9IgorICBmaQorfQorCisKKyMgZnVuY190b19ob3N0X3BhdGggQVJHCisjIENvbnZlcnRzIHRoZSBwYXRoIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gJGhvc3QgZm9ybWF0LiBSZXR1cm4gcmVzdWx0CisjIGluIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KK2Z1bmNfdG9faG9zdF9wYXRoICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKKyAgJHRvX2hvc3RfcGF0aF9jbWQgIiQxIgorfQorIyBlbmQgZnVuY190b19ob3N0X3BhdGgKKworCisjIGZ1bmNfY29udmVydF9wYXRoX25vb3AgQVJHCisjIENvcHkgQVJHIHRvIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9wYXRoX25vb3AgKCkKK3sKKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKK30KKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25vb3AKKworCisjIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyIEFSRworIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKG1pbmd3KSBNU1lTIHRvIChtaW5ndykgdzMyIGZvcm1hdDsgYXV0b21hdGljCisjIGNvbnZlcnNpb24gdG8gdzMyIGlzIG5vdCBhdmFpbGFibGUgaW5zaWRlIHRoZSBjd3JhcHBlci4gIFJldHVybnMgcmVzdWx0IGluCisjIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tIEFSRy4gIE1TWVMKKyAgICAjIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlOyBjeWdwYXRoIHR1cm5zIHRoZW0gaW50byAnLjsnIGFuZCAnOy4nOworICAgICMgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgorICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCisgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKKyAgZmkKK30KKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyIEFSRworIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gQ3lnd2luIHRvIHczMiBmb3JtYXQuICBSZXR1cm5zIHJlc3VsdCBpbgorIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6CisgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGN5Z3BhdGggLW0gLXAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxImAKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCisgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKKyAgZmkKK30KKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIKKworCisjIGZ1bmNfY29udmVydF9wYXRoX25peF90b193MzIgQVJHCisjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAqbml4IHRvIHczMiBmb3JtYXQuICBSZXF1aXJlcyBhIHdpbmUgZW52aXJvbm1lbnQgYW5kCisjIGEgd29ya2luZyB3aW5lcGF0aC4gIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9wYXRoX25peF90b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgorICBmaQorfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b19jeWd3aW4gQVJHCisjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSBNU1lTIHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBMVF9DWUdQQVRIIHNldC4KKyMgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b19jeWd3aW4gKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKKyAgICBmdW5jX2N5Z3BhdGggLXUgLXAgIiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCisgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6IDogXAorICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiIDogIiQxIgorICBmaQorfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b19jeWd3aW4KKworCisjIGZ1bmNfY29udmVydF9wYXRoX25peF90b19jeWd3aW4gQVJHCisjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAqbml4IHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBDeWd3aW4gaW5zdGFsbGVkIGluIGEKKyMgYSB3aW5lIGVudmlyb25tZW50LCB3b3JraW5nIHdpbmVwYXRoLCBhbmQgTFRfQ1lHUEFUSCBzZXQuICBSZXR1cm5zIHJlc3VsdCBpbgorIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tCisgICAgIyBBUkcuIG1zeXMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmUsIGN5Z3BhdGggdHVybnMgdGhlbQorICAgICMgaW50byAnLjsnIGFuZCAnOy4nLCBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCisgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKKyAgICBmdW5jX2N5Z3BhdGggLXUgLXAgIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogOiBcCisgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgOiAiJDEiCisgIGZpCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luCisKKwogIyBmdW5jX21vZGVfY29tcGlsZSBhcmcuLi4KIGZ1bmNfbW9kZV9jb21waWxlICgpCiB7CkBAIC0xMTM3LDEyICsxOTg2LDEyIEBACiAJICA7OwogCiAJLXBpZSB8IC1mcGllIHwgLWZQSUUpCi0gICAgICAgICAgcGllX2ZsYWc9IiRwaWVfZmxhZyAkYXJnIgorICAgICAgICAgIGZ1bmNfYXBwZW5kIHBpZV9mbGFnICIgJGFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwogCiAJLXNoYXJlZCB8IC1zdGF0aWMgfCAtcHJlZmVyLXBpYyB8IC1wcmVmZXItbm9uLXBpYykKLQkgIGxhdGVyPSIkbGF0ZXIgJGFyZyIKKwkgIGZ1bmNfYXBwZW5kIGxhdGVyICIgJGFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwogCkBAIC0xMTYzLDE1ICsyMDEyLDE0IEBACiAJICBzYXZlX2lmcz0iJElGUyI7IElGUz0nLCcKIAkgIGZvciBhcmcgaW4gJGFyZ3M7IGRvCiAJICAgIElGUz0iJHNhdmVfaWZzIgotCSAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotCSAgICBsYXN0YXJnPSIkbGFzdGFyZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBsYXN0YXJnICIkYXJnIgogCSAgZG9uZQogCSAgSUZTPSIkc2F2ZV9pZnMiCiAJICBmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRsYXN0YXJnIgogCSAgbGFzdGFyZz0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAKIAkgICMgQWRkIHRoZSBhcmd1bWVudHMgdG8gYmFzZV9jb21waWxlLgotCSAgYmFzZV9jb21waWxlPSIkYmFzZV9jb21waWxlICRsYXN0YXJnIgorCSAgZnVuY19hcHBlbmQgYmFzZV9jb21waWxlICIgJGxhc3RhcmciCiAJICBjb250aW51ZQogCSAgOzsKIApAQCAtMTE4Nyw4ICsyMDM1LDcgQEAKICAgICAgIGVzYWMgICAgIyAgY2FzZSAkYXJnX21vZGUKIAogICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIHRoZSBwcmV2aW91cyBhcmd1bWVudC4KLSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRsYXN0YXJnIgotICAgICAgYmFzZV9jb21waWxlPSIkYmFzZV9jb21waWxlICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBiYXNlX2NvbXBpbGUgIiRsYXN0YXJnIgogICAgIGRvbmUgIyBmb3IgYXJnCiAKICAgICBjYXNlICRhcmdfbW9kZSBpbgpAQCAtMTIxMyw3ICsyMDYwLDcgQEAKICAgICAqLltjQ0ZTaWZtc29dIHwgXAogICAgICouYWRhIHwgKi5hZGIgfCAqLmFkcyB8ICouYXNtIHwgXAogICAgICouYysrIHwgKi5jYyB8ICouaWkgfCAqLmNsYXNzIHwgKi5jcHAgfCAqLmN4eCB8IFwKLSAgICAqLltmRl1bMDldPyB8ICouZm9yIHwgKi5qYXZhIHwgKi5vYmogfCAqLnN4KQorICAgICouW2ZGXVswOV0/IHwgKi5mb3IgfCAqLmphdmEgfCAqLmdvIHwgKi5vYmogfCAqLnN4IHwgKi5jdSB8ICouY3VwKQogICAgICAgZnVuY194Zm9ybSAiJGxpYm9iaiIKICAgICAgIGxpYm9iaj0kZnVuY194Zm9ybV9yZXN1bHQKICAgICAgIDs7CkBAIC0xMjg4LDcgKzIxMzUsNyBAQAogICAgICMgQ2FsY3VsYXRlIHRoZSBmaWxlbmFtZSBvZiB0aGUgb3V0cHV0IG9iamVjdCBpZiBjb21waWxlciBkb2VzCiAgICAgIyBub3Qgc3VwcG9ydCAtbyB3aXRoIC1jCiAgICAgaWYgdGVzdCAiJGNvbXBpbGVyX2NfbyIgPSBubzsgdGhlbgotICAgICAgb3V0cHV0X29iaj1gJEVDSE8gIlgkc3JjZmlsZSIgfCAkWHNlZCAtZSAncyVeLiovJSUnIC1lICdzJVwuW14uXSokJSUnYC4ke29iamV4dH0KKyAgICAgIG91dHB1dF9vYmo9YCRFQ0hPICIkc3JjZmlsZSIgfCAkU0VEICdzJV4uKi8lJTsgcyVcLlteLl0qJCUlJ2AuJHtvYmpleHR9CiAgICAgICBsb2NrZmlsZT0iJG91dHB1dF9vYmoubG9jayIKICAgICBlbHNlCiAgICAgICBvdXRwdXRfb2JqPQpAQCAtMTMxOSwxNyArMjE2NiwxNiBAQAogCSRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3QKIAlleGl0ICRFWElUX0ZBSUxVUkUKICAgICAgIGZpCi0gICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkb3V0cHV0X29iaiIKKyAgICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkb3V0cHV0X29iaiIKICAgICAgICRFQ0hPICIkc3JjZmlsZSIgPiAiJGxvY2tmaWxlIgogICAgIGZpCiAKICAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0Ci0gICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJGxvY2tmaWxlIgorICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkbG9ja2ZpbGUiCiAgICAgdHJhcCAnJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFJyAxIDIgMTUKIAotICAgIGlmIHRlc3QgLW4gIiRmaXhfc3JjZmlsZV9wYXRoIjsgdGhlbgotICAgICAgZXZhbCBzcmNmaWxlPVwiJGZpeF9zcmNmaWxlX3BhdGhcIgotICAgIGZpCisgICAgZnVuY190b190b29sX2ZpbGUgIiRzcmNmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICAgIHNyY2ZpbGU9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAogICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRzcmNmaWxlIgogICAgIHFzcmNmaWxlPSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdAogCkBAIC0xMzQ5LDcgKzIxOTUsNyBAQAogCiAgICAgICBpZiB0ZXN0IC16ICIkb3V0cHV0X29iaiI7IHRoZW4KIAkjIFBsYWNlIFBJQyBvYmplY3RzIGluICRvYmpkaXIKLQljb21tYW5kPSIkY29tbWFuZCAtbyAkbG9iaiIKKwlmdW5jX2FwcGVuZCBjb21tYW5kICIgLW8gJGxvYmoiCiAgICAgICBmaQogCiAgICAgICBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgIiRjb21tYW5kIglcCkBAIC0xMzk2LDExICsyMjQyLDExIEBACiAJY29tbWFuZD0iJGJhc2VfY29tcGlsZSAkcXNyY2ZpbGUgJHBpY19mbGFnIgogICAgICAgZmkKICAgICAgIGlmIHRlc3QgIiRjb21waWxlcl9jX28iID0geWVzOyB0aGVuCi0JY29tbWFuZD0iJGNvbW1hbmQgLW8gJG9iaiIKKwlmdW5jX2FwcGVuZCBjb21tYW5kICIgLW8gJG9iaiIKICAgICAgIGZpCiAKICAgICAgICMgU3VwcHJlc3MgY29tcGlsZXIgb3V0cHV0IGlmIHdlIGFscmVhZHkgZGlkIGEgUElDIGNvbXBpbGF0aW9uLgotICAgICAgY29tbWFuZD0iJGNvbW1hbmQkc3VwcHJlc3Nfb3V0cHV0IgorICAgICAgZnVuY19hcHBlbmQgY29tbWFuZCAiJHN1cHByZXNzX291dHB1dCIKICAgICAgIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAiJGNvbW1hbmQiIFwKICAgICAgICAgJyRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3Q7IGV4aXQgJEVYSVRfRkFJTFVSRScKIApAQCAtMTQ0NSwxMyArMjI5MSwxMyBAQAogfQogCiAkb3B0X2hlbHAgfHwgewotdGVzdCAiJG1vZGUiID0gY29tcGlsZSAmJiBmdW5jX21vZGVfY29tcGlsZSAkezErIiRAIn0KKyAgdGVzdCAiJG9wdF9tb2RlIiA9IGNvbXBpbGUgJiYgZnVuY19tb2RlX2NvbXBpbGUgJHsxKyIkQCJ9CiB9CiAKIGZ1bmNfbW9kZV9oZWxwICgpCiB7CiAgICAgIyBXZSBuZWVkIHRvIGRpc3BsYXkgaGVscCBmb3IgZWFjaCBvZiB0aGUgbW9kZXMuCi0gICAgY2FzZSAkbW9kZSBpbgorICAgIGNhc2UgJG9wdF9tb2RlIGluCiAgICAgICAiIikKICAgICAgICAgIyBHZW5lcmljIGhlbHAgaXMgZXh0cmFjdGVkIGZyb20gdGhlIHVzYWdlIGNvbW1lbnRzCiAgICAgICAgICMgYXQgdGhlIHN0YXJ0IG9mIHRoaXMgZmlsZS4KQEAgLTE0ODIsMTAgKzIzMjgsMTEgQEAKIAogICAtbyBPVVRQVVQtRklMRSAgICBzZXQgdGhlIG91dHB1dCBmaWxlIG5hbWUgdG8gT1VUUFVULUZJTEUKICAgLW5vLXN1cHByZXNzICAgICAgZG8gbm90IHN1cHByZXNzIGNvbXBpbGVyIG91dHB1dCBmb3IgbXVsdGlwbGUgcGFzc2VzCi0gIC1wcmVmZXItcGljICAgICAgIHRyeSB0byBidWlsZGluZyBQSUMgb2JqZWN0cyBvbmx5Ci0gIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZGluZyBub24tUElDIG9iamVjdHMgb25seQorICAtcHJlZmVyLXBpYyAgICAgICB0cnkgdG8gYnVpbGQgUElDIG9iamVjdHMgb25seQorICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGQgbm9uLVBJQyBvYmplY3RzIG9ubHkKICAgLXNoYXJlZCAgICAgICAgICAgZG8gbm90IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKICAgLXN0YXRpYyAgICAgICAgICAgb25seSBidWlsZCBhIFxgLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCisgIC1XYyxGTEFHICAgICAgICAgIHBhc3MgRkxBRyBkaXJlY3RseSB0byB0aGUgY29tcGlsZXIKIAogQ09NUElMRS1DT01NQU5EIGlzIGEgY29tbWFuZCB0byBiZSB1c2VkIGluIGNyZWF0aW5nIGEgXGBzdGFuZGFyZCcgb2JqZWN0IGZpbGUKIGZyb20gdGhlIGdpdmVuIFNPVVJDRUZJTEUuCkBAIC0xNTM4LDcgKzIzODUsNyBAQAogCiBUaGUgZm9sbG93aW5nIGNvbXBvbmVudHMgb2YgSU5TVEFMTC1DT01NQU5EIGFyZSB0cmVhdGVkIHNwZWNpYWxseToKIAotICAtaW5zdC1wcmVmaXggUFJFRklYLURJUiAgVXNlIFBSRUZJWC1ESVIgYXMgYSBzdGFnaW5nIGFyZWEgZm9yIGluc3RhbGxhdGlvbgorICAtaW5zdC1wcmVmaXgtZGlyIFBSRUZJWC1ESVIgIFVzZSBQUkVGSVgtRElSIGFzIGEgc3RhZ2luZyBhcmVhIGZvciBpbnN0YWxsYXRpb24KIAogVGhlIHJlc3Qgb2YgdGhlIGNvbXBvbmVudHMgYXJlIGludGVycHJldGVkIGFzIGFyZ3VtZW50cyB0byB0aGF0IGNvbW1hbmQgKG9ubHkKIEJTRC1jb21wYXRpYmxlIGluc3RhbGwgb3B0aW9ucyBhcmUgcmVjb2duaXplZCkuIgpAQCAtMTU1OCw2ICsyNDA1LDggQEAKIAogICAtYWxsLXN0YXRpYyAgICAgICBkbyBub3QgZG8gYW55IGR5bmFtaWMgbGlua2luZyBhdCBhbGwKICAgLWF2b2lkLXZlcnNpb24gICAgZG8gbm90IGFkZCBhIHZlcnNpb24gc3VmZml4IGlmIHBvc3NpYmxlCisgIC1iaW5kaXIgQklORElSICAgIHNwZWNpZnkgcGF0aCB0byBiaW5hcmllcyBkaXJlY3RvcnkgKGZvciBzeXN0ZW1zIHdoZXJlCisgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyBtdXN0IGJlIGZvdW5kIGluIHRoZSBQQVRIIHNldHRpbmcgYXQgcnVudGltZSkKICAgLWRsb3BlbiBGSUxFICAgICAgXGAtZGxwcmVvcGVuJyBGSUxFIGlmIGl0IGNhbm5vdCBiZSBkbG9wZW5lZCBhdCBydW50aW1lCiAgIC1kbHByZW9wZW4gRklMRSAgIGxpbmsgaW4gRklMRSBhbmQgYWRkIGl0cyBzeW1ib2xzIHRvIGx0X3ByZWxvYWRlZF9zeW1ib2xzCiAgIC1leHBvcnQtZHluYW1pYyAgIGFsbG93IHN5bWJvbHMgZnJvbSBPVVRQVVQtRklMRSB0byBiZSByZXNvbHZlZCB3aXRoIGRsc3ltKDMpCkBAIC0xNTg2LDYgKzI0MzUsMTEgQEAKICAgLXZlcnNpb24taW5mbyBDVVJSRU5UWzpSRVZJU0lPTls6QUdFXV0KICAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSBsaWJyYXJ5IHZlcnNpb24gaW5mbyBbZWFjaCB2YXJpYWJsZSBkZWZhdWx0cyB0byAwXQogICAtd2VhayBMSUJOQU1FICAgICBkZWNsYXJlIHRoYXQgdGhlIHRhcmdldCBwcm92aWRlcyB0aGUgTElCTkFNRSBpbnRlcmZhY2UKKyAgLVdjLEZMQUcKKyAgLVhjb21waWxlciBGTEFHICAgcGFzcyBsaW5rZXItc3BlY2lmaWMgRkxBRyBkaXJlY3RseSB0byB0aGUgY29tcGlsZXIKKyAgLVdsLEZMQUcKKyAgLVhsaW5rZXIgRkxBRyAgICAgcGFzcyBsaW5rZXItc3BlY2lmaWMgRkxBRyBkaXJlY3RseSB0byB0aGUgbGlua2VyCisgIC1YQ0NsaW5rZXIgRkxBRyAgIHBhc3MgbGluay1zcGVjaWZpYyBGTEFHIHRvIHRoZSBjb21waWxlciBkcml2ZXIgKENDKQogCiBBbGwgb3RoZXIgb3B0aW9ucyAoYXJndW1lbnRzIGJlZ2lubmluZyB3aXRoIFxgLScpIGFyZSBpZ25vcmVkLgogCkBAIC0xNjE5LDE4ICsyNDczLDQ0IEBACiAgICAgICAgIDs7CiAKICAgICAgICopCi0gICAgICAgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKKyAgICAgICAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG9wdF9tb2RlJyIKICAgICAgICAgOzsKICAgICBlc2FjCiAKLSAgICAkRUNITworICAgIGVjaG8KICAgICAkRUNITyAiVHJ5IFxgJHByb2duYW1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgb3RoZXIgbW9kZXMuIgotCi0gICAgZXhpdCAkPwogfQogCi0gICMgTm93IHRoYXQgd2UndmUgY29sbGVjdGVkIGEgcG9zc2libGUgLS1tb2RlIGFyZywgc2hvdyBoZWxwIGlmIG5lY2Vzc2FyeQotICAkb3B0X2hlbHAgJiYgZnVuY19tb2RlX2hlbHAKKyMgTm93IHRoYXQgd2UndmUgY29sbGVjdGVkIGEgcG9zc2libGUgLS1tb2RlIGFyZywgc2hvdyBoZWxwIGlmIG5lY2Vzc2FyeQoraWYgJG9wdF9oZWxwOyB0aGVuCisgIGlmIHRlc3QgIiRvcHRfaGVscCIgPSA6OyB0aGVuCisgICAgZnVuY19tb2RlX2hlbHAKKyAgZWxzZQorICAgIHsKKyAgICAgIGZ1bmNfaGVscCBub2V4aXQKKyAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCisJZnVuY19tb2RlX2hlbHAKKyAgICAgIGRvbmUKKyAgICB9IHwgc2VkIC1uICcxcDsgMiwkcy9eVXNhZ2U6LyAgb3I6IC9wJworICAgIHsKKyAgICAgIGZ1bmNfaGVscCBub2V4aXQKKyAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCisJZWNobworCWZ1bmNfbW9kZV9oZWxwCisgICAgICBkb25lCisgICAgfSB8CisgICAgc2VkICcxZAorICAgICAgL15XaGVuIHJlcG9ydGluZy8sL15SZXBvcnQveworCUgKKwlkCisgICAgICB9CisgICAgICAkeAorICAgICAgL2luZm9ybWF0aW9uIGFib3V0IG90aGVyIG1vZGVzL2QKKyAgICAgIC9tb3JlIGRldGFpbGVkIC4qTU9ERS9kCisgICAgICBzL15Vc2FnZTouKi0tbW9kZT1cKFteIF0qXCkgLiovRGVzY3JpcHRpb24gb2YgXDEgbW9kZTovJworICBmaQorICBleGl0ICQ/CitmaQogCiAKICMgZnVuY19tb2RlX2V4ZWN1dGUgYXJnLi4uCkBAIC0xNjQzLDEzICsyNTIzLDE2IEBACiAgICAgICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYSBDT01NQU5EIgogCiAgICAgIyBIYW5kbGUgLWRsb3BlbiBmbGFncyBpbW1lZGlhdGVseS4KLSAgICBmb3IgZmlsZSBpbiAkZXhlY3V0ZV9kbGZpbGVzOyBkbworICAgIGZvciBmaWxlIGluICRvcHRfZGxvcGVuOyBkbwogICAgICAgdGVzdCAtZiAiJGZpbGUiIFwKIAl8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGZpbGUnIGlzIG5vdCBhIGZpbGUiCiAKICAgICAgIGRpcj0KICAgICAgIGNhc2UgJGZpbGUgaW4KICAgICAgICoubGEpCisJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmaWxlIgorCWZpbGU9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorCiAJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KIAlmdW5jX2xhbGliX3Vuc2FmZV9wICIkZmlsZSIgXAogCSAgfHwgZnVuY19mYXRhbF9oZWxwICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKQEAgLTE2NzEsNyArMjU1NCw3IEBACiAJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKIAogCWlmIHRlc3QgLWYgIiRkaXIvJG9iamRpci8kZGxuYW1lIjsgdGhlbgotCSAgZGlyPSIkZGlyLyRvYmpkaXIiCisJICBmdW5jX2FwcGVuZCBkaXIgIi8kb2JqZGlyIgogCWVsc2UKIAkgIGlmIHRlc3QgISAtZiAiJGRpci8kZGxuYW1lIjsgdGhlbgogCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBcYCRkbG5hbWUnIGluIFxgJGRpcicgb3IgXGAkZGlyLyRvYmpkaXInIgpAQCAtMTcxMiw3ICsyNTk1LDcgQEAKICAgICBmb3IgZmlsZQogICAgIGRvCiAgICAgICBjYXNlICRmaWxlIGluCi0gICAgICAtKikgOzsKKyAgICAgIC0qIHwgKi5sYSB8ICoubG8gKSA7OwogICAgICAgKikKIAkjIERvIGEgdGVzdCB0byBzZWUgaWYgdGhpcyBpcyByZWFsbHkgYSBsaWJ0b29sIHByb2dyYW0uCiAJaWYgZnVuY19sdHdyYXBwZXJfc2NyaXB0X3AgIiRmaWxlIjsgdGhlbgpAQCAtMTcyOCw4ICsyNjExLDcgQEAKIAk7OwogICAgICAgZXNhYwogICAgICAgIyBRdW90ZSBhcmd1bWVudHMgKHRvIHByZXNlcnZlIHNoZWxsIG1ldGFjaGFyYWN0ZXJzKS4KLSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmaWxlIgotICAgICAgYXJncz0iJGFyZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIGFyZ3MgIiRmaWxlIgogICAgIGRvbmUKIAogICAgIGlmIHRlc3QgIlgkb3B0X2RyeV9ydW4iID0gWGZhbHNlOyB0aGVuCkBAIC0xNzU0LDI5ICsyNjM2LDY2IEBACiAgICAgICAjIERpc3BsYXkgd2hhdCB3b3VsZCBiZSBkb25lLgogICAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCiAJZXZhbCAiXCRFQ0hPIFwiXCRzaGxpYnBhdGhfdmFyPVwkJHNobGlicGF0aF92YXJcIiIKLQkkRUNITyAiZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgorCWVjaG8gImV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKICAgICAgIGZpCiAgICAgICAkRUNITyAiJGNtZCRhcmdzIgogICAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCiAgICAgZmkKIH0KIAotdGVzdCAiJG1vZGUiID0gZXhlY3V0ZSAmJiBmdW5jX21vZGVfZXhlY3V0ZSAkezErIiRAIn0KK3Rlc3QgIiRvcHRfbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQogCiAKICMgZnVuY19tb2RlX2ZpbmlzaCBhcmcuLi4KIGZ1bmNfbW9kZV9maW5pc2ggKCkKIHsKICAgICAkb3B0X2RlYnVnCi0gICAgbGliZGlycz0iJG5vbm9wdCIKKyAgICBsaWJzPQorICAgIGxpYmRpcnM9CiAgICAgYWRtaW5jbWRzPQogCi0gICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KLSAgICAgIGZvciBkaXIKLSAgICAgIGRvCi0JbGliZGlycz0iJGxpYmRpcnMgJGRpciIKLSAgICAgIGRvbmUKKyAgICBmb3Igb3B0IGluICIkbm9ub3B0IiAkezErIiRAIn0KKyAgICBkbworICAgICAgaWYgdGVzdCAtZCAiJG9wdCI7IHRoZW4KKwlmdW5jX2FwcGVuZCBsaWJkaXJzICIgJG9wdCIKIAorICAgICAgZWxpZiB0ZXN0IC1mICIkb3B0IjsgdGhlbgorCWlmIGZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRvcHQiOyB0aGVuCisJICBmdW5jX2FwcGVuZCBsaWJzICIgJG9wdCIKKwllbHNlCisJICBmdW5jX3dhcm5pbmcgIlxgJG9wdCcgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorCWZpCisKKyAgICAgIGVsc2UKKwlmdW5jX2ZhdGFsX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IFxgJG9wdCciCisgICAgICBmaQorICAgIGRvbmUKKworICAgIGlmIHRlc3QgLW4gIiRsaWJzIjsgdGhlbgorICAgICAgaWYgdGVzdCAtbiAiJGx0X3N5c3Jvb3QiOyB0aGVuCisgICAgICAgIHN5c3Jvb3RfcmVnZXg9YCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkc2VkX21ha2VfbGl0ZXJhbF9yZWdleCJgCisgICAgICAgIHN5c3Jvb3RfY21kPSJzL1woWyAnXVwpJHN5c3Jvb3RfcmVnZXgvXDEvZzsiCisgICAgICBlbHNlCisgICAgICAgIHN5c3Jvb3RfY21kPQorICAgICAgZmkKKworICAgICAgIyBSZW1vdmUgc3lzcm9vdCByZWZlcmVuY2VzCisgICAgICBpZiAkb3B0X2RyeV9ydW47IHRoZW4KKyAgICAgICAgZm9yIGxpYiBpbiAkbGliczsgZG8KKyAgICAgICAgICBlY2hvICJyZW1vdmluZyByZWZlcmVuY2VzIHRvICRsdF9zeXNyb290IGFuZCBcYD0nIHByZWZpeGVzIGZyb20gJGxpYiIKKyAgICAgICAgZG9uZQorICAgICAgZWxzZQorICAgICAgICB0bXBkaXI9YGZ1bmNfbWt0ZW1wZGlyYAorICAgICAgICBmb3IgbGliIGluICRsaWJzOyBkbworCSAgc2VkIC1lICIke3N5c3Jvb3RfY21kfSBzL1woWyAnXS1bTFJdXCk9L1wxL2c7IHMvXChbICddXCk9L1wxL2ciICRsaWIgXAorCSAgICA+ICR0bXBkaXIvdG1wLWxhCisJICBtdiAtZiAkdG1wZGlyL3RtcC1sYSAkbGliCisJZG9uZQorICAgICAgICAke1JNfXIgIiR0bXBkaXIiCisgICAgICBmaQorICAgIGZpCisKKyAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgogICAgICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KIAlpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMiOyB0aGVuCiAJICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgZmluaXNoIGNvbW1hbmRzLgpAQCAtMTc4Niw3ICsyNzA1LDcgQEAKIAlpZiB0ZXN0IC1uICIkZmluaXNoX2V2YWwiOyB0aGVuCiAJICAjIERvIHRoZSBzaW5nbGUgZmluaXNoX2V2YWwuCiAJICBldmFsIGNtZHM9XCIkZmluaXNoX2V2YWxcIgotCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiRjbWRzIiB8fCBhZG1pbmNtZHM9IiRhZG1pbmNtZHMKKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkY21kcyIgfHwgZnVuY19hcHBlbmQgYWRtaW5jbWRzICIKICAgICAgICAkY21kcyIKIAlmaQogICAgICAgZG9uZQpAQCAtMTc5NSw1MyArMjcxNCw1NSBAQAogICAgICMgRXhpdCBoZXJlIGlmIHRoZXkgd2FudGVkIHNpbGVudCBtb2RlLgogICAgICRvcHRfc2lsZW50ICYmIGV4aXQgJEVYSVRfU1VDQ0VTUwogCi0gICAgJEVDSE8gIlgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8ICRYc2VkCi0gICAgJEVDSE8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKLSAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbwotICAgICAgJEVDSE8gIiAgICRsaWJkaXIiCi0gICAgZG9uZQotICAgICRFQ0hPCi0gICAgJEVDSE8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgotICAgICRFQ0hPICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKLSAgICAkRUNITyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKLSAgICAkRUNITyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgotICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgotICAgICAgJEVDSE8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkc2hsaWJwYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCi0gICAgICAkRUNITyAiICAgICBkdXJpbmcgZXhlY3V0aW9uIgotICAgIGZpCi0gICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotICAgICAgJEVDSE8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgotICAgICAgJEVDSE8gIiAgICAgZHVyaW5nIGxpbmtpbmciCi0gICAgZmkKLSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KLSAgICAgIGxpYmRpcj1MSUJESVIKLSAgICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgorICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKyAgICAgIGVjaG8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKKyAgICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCisJJEVDSE8gIiAgICRsaWJkaXIiCisgICAgICBkb25lCisgICAgICBlY2hvCisgICAgICBlY2hvICJJZiB5b3UgZXZlciBoYXBwZW4gdG8gd2FudCB0byBsaW5rIGFnYWluc3QgaW5zdGFsbGVkIGxpYnJhcmllcyIKKyAgICAgIGVjaG8gImluIGEgZ2l2ZW4gZGlyZWN0b3J5LCBMSUJESVIsIHlvdSBtdXN0IGVpdGhlciB1c2UgbGlidG9vbCwgYW5kIgorICAgICAgZWNobyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKKyAgICAgIGVjaG8gImZsYWcgZHVyaW5nIGxpbmtpbmcgYW5kIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiIKKyAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgorCWVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkc2hsaWJwYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCisJZWNobyAiICAgICBkdXJpbmcgZXhlY3V0aW9uIgorICAgICAgZmkKKyAgICAgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKwllY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHJ1bnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKwllY2hvICIgICAgIGR1cmluZyBsaW5raW5nIgorICAgICAgZmkKKyAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorCWxpYmRpcj1MSUJESVIKKwlldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCiAKLSAgICAgICRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCi0gICAgZmkKLSAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgotICAgICAgJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1biB0aGVzZSBjb21tYW5kczokYWRtaW5jbWRzIgotICAgIGZpCi0gICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KLSAgICAgICRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBhZGQgTElCRElSIHRvIFxgL2V0Yy9sZC5zby5jb25mJyIKLSAgICBmaQotICAgICRFQ0hPCisJJEVDSE8gIiAgIC0gdXNlIHRoZSBcYCRmbGFnJyBsaW5rZXIgZmxhZyIKKyAgICAgIGZpCisgICAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgorCSRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBydW4gdGhlc2UgY29tbWFuZHM6JGFkbWluY21kcyIKKyAgICAgIGZpCisgICAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgorCWVjaG8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGFkZCBMSUJESVIgdG8gXGAvZXRjL2xkLnNvLmNvbmYnIgorICAgICAgZmkKKyAgICAgIGVjaG8KIAotICAgICRFQ0hPICJTZWUgYW55IG9wZXJhdGluZyBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBhYm91dCBzaGFyZWQgbGlicmFyaWVzIGZvciIKLSAgICBjYXNlICRob3N0IGluCi0gICAgICBzb2xhcmlzMi5bNjc4OV18c29sYXJpczIuMVswLTldKQotICAgICAgICAkRUNITyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSksIGNybGUoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCIKLQkkRUNITyAicGFnZXMuIgotCTs7Ci0gICAgICAqKQotICAgICAgICAkRUNITyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCBwYWdlcy4iCi0gICAgICAgIDs7Ci0gICAgZXNhYwotICAgICRFQ0hPICJYLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCAkWHNlZAorICAgICAgZWNobyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCisgICAgICBjYXNlICRob3N0IGluCisJc29sYXJpczIuWzY3ODldfHNvbGFyaXMyLjFbMC05XSkKKwkgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpLCBjcmxlKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwiCisJICBlY2hvICJwYWdlcy4iCisJICA7OworCSopCisJICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSBhbmQgbGQuc28oOCkgbWFudWFsIHBhZ2VzLiIKKwkgIDs7CisgICAgICBlc2FjCisgICAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorICAgIGZpCiAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCiB9CiAKLXRlc3QgIiRtb2RlIiA9IGZpbmlzaCAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQordGVzdCAiJG9wdF9tb2RlIiA9IGZpbmlzaCAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQogCiAKICMgZnVuY19tb2RlX2luc3RhbGwgYXJnLi4uCkBAIC0xODUyLDcgKzI3NzMsNyBAQAogICAgICMgaW5zdGFsbF9wcm9nIChlc3BlY2lhbGx5IG9uIFdpbmRvd3MgTlQpLgogICAgIGlmIHRlc3QgIiRub25vcHQiID0gIiRTSEVMTCIgfHwgdGVzdCAiJG5vbm9wdCIgPSAvYmluL3NoIHx8CiAgICAgICAgIyBBbGxvdyB0aGUgdXNlIG9mIEdOVSBzaHRvb2wncyBpbnN0YWxsIGNvbW1hbmQuCi0gICAgICAgJEVDSE8gIlgkbm9ub3B0IiB8ICRHUkVQIHNodG9vbCA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgY2FzZSAkbm9ub3B0IGluICpzaHRvb2wqKSA6OzsgKikgZmFsc2U7OyBlc2FjOyB0aGVuCiAgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQuCiAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkbm9ub3B0IgogICAgICAgaW5zdGFsbF9wcm9nPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQgIgpAQCAtMTg2Niw3ICsyNzg3LDEyIEBACiAgICAgIyBUaGUgcmVhbCBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGluc3RhbGxhdGlvbiBwcm9ncmFtLgogICAgICMgQWVzdGhldGljYWxseSBxdW90ZSBpdC4KICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3Byb2cgIiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICBpbnN0YWxsX3NoYXJlZF9wcm9nPSRpbnN0YWxsX3Byb2cKKyAgICBjYXNlICIgJGluc3RhbGxfcHJvZyAiIGluCisgICAgICAqW1xcXCAvXWNwXCAqKSBpbnN0YWxsX2NwPTogOzsKKyAgICAgICopIGluc3RhbGxfY3A9ZmFsc2UgOzsKKyAgICBlc2FjCiAKICAgICAjIFdlIG5lZWQgdG8gYWNjZXB0IGF0IGxlYXN0IGFsbCB0aGUgQlNEIGluc3RhbGwgZmxhZ3MuCiAgICAgZGVzdD0KQEAgLTE4NzYsMTAgKzI4MDIsMTIgQEAKICAgICBpbnN0YWxsX3R5cGU9CiAgICAgaXNkaXI9bm8KICAgICBzdHJpcG1lPQorICAgIG5vX21vZGU9OgogICAgIGZvciBhcmcKICAgICBkbworICAgICAgYXJnMj0KICAgICAgIGlmIHRlc3QgLW4gIiRkZXN0IjsgdGhlbgotCWZpbGVzPSIkZmlsZXMgJGRlc3QiCisJZnVuY19hcHBlbmQgZmlsZXMgIiAkZGVzdCIKIAlkZXN0PSRhcmcKIAljb250aW51ZQogICAgICAgZmkKQEAgLTE4ODcsMTAgKzI4MTUsOSBAQAogICAgICAgY2FzZSAkYXJnIGluCiAgICAgICAtZCkgaXNkaXI9eWVzIDs7CiAgICAgICAtZikKLQljYXNlICIgJGluc3RhbGxfcHJvZyAiIGluCi0JKltcXFwgL11jcFwgKikgOzsKLQkqKSBwcmV2PSRhcmcgOzsKLQllc2FjCisJaWYgJGluc3RhbGxfY3A7IHRoZW4gOjsgZWxzZQorCSAgcHJldj0kYXJnCisJZmkKIAk7OwogICAgICAgLWcgfCAtbSB8IC1vKQogCXByZXY9JGFyZwpAQCAtMTkwNCw2ICsyODMxLDEwIEBACiAgICAgICAqKQogCSMgSWYgdGhlIHByZXZpb3VzIG9wdGlvbiBuZWVkZWQgYW4gYXJndW1lbnQsIHRoZW4gc2tpcCBpdC4KIAlpZiB0ZXN0IC1uICIkcHJldiI7IHRoZW4KKwkgIGlmIHRlc3QgIngkcHJldiIgPSB4LW0gJiYgdGVzdCAtbiAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSI7IHRoZW4KKwkgICAgYXJnMj0kaW5zdGFsbF9vdmVycmlkZV9tb2RlCisJICAgIG5vX21vZGU9ZmFsc2UKKwkgIGZpCiAJICBwcmV2PQogCWVsc2UKIAkgIGRlc3Q9JGFyZwpAQCAtMTkxNCw3ICsyODQ1LDExIEBACiAKICAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgYXJndW1lbnQuCiAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotICAgICAgaW5zdGFsbF9wcm9nPSIkaW5zdGFsbF9wcm9nICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfcHJvZyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICAgIGlmIHRlc3QgLW4gIiRhcmcyIjsgdGhlbgorCWZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmcyIgorICAgICAgZmkKKyAgICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfc2hhcmVkX3Byb2cgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAgICAgZG9uZQogCiAgICAgdGVzdCAteiAiJGluc3RhbGxfcHJvZyIgJiYgXApAQCAtMTkyMyw2ICsyODU4LDEzIEBACiAgICAgdGVzdCAtbiAiJHByZXYiICYmIFwKICAgICAgIGZ1bmNfZmF0YWxfaGVscCAidGhlIFxgJHByZXYnIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIKIAorICAgIGlmIHRlc3QgLW4gIiRpbnN0YWxsX292ZXJyaWRlX21vZGUiICYmICRub19tb2RlOyB0aGVuCisgICAgICBpZiAkaW5zdGFsbF9jcDsgdGhlbiA6OyBlbHNlCisJZnVuY19xdW90ZV9mb3JfZXZhbCAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSIKKwlmdW5jX2FwcGVuZCBpbnN0YWxsX3NoYXJlZF9wcm9nICIgLW0gJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgZmkKKyAgICBmaQorCiAgICAgaWYgdGVzdCAteiAiJGZpbGVzIjsgdGhlbgogICAgICAgaWYgdGVzdCAteiAiJGRlc3QiOyB0aGVuCiAJZnVuY19mYXRhbF9oZWxwICJubyBmaWxlIG9yIGRlc3RpbmF0aW9uIHNwZWNpZmllZCIKQEAgLTE5NzcsMTAgKzI5MTksMTMgQEAKICAgICAgIGNhc2UgJGZpbGUgaW4KICAgICAgICouJGxpYmV4dCkKIAkjIERvIHRoZSBzdGF0aWMgbGlicmFyaWVzIGxhdGVyLgotCXN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRmaWxlIgorCWZ1bmNfYXBwZW5kIHN0YXRpY2xpYnMgIiAkZmlsZSIKIAk7OwogCiAgICAgICAqLmxhKQorCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZmlsZSIKKwlmaWxlPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKwogCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCiAJZnVuY19sYWxpYl91bnNhZmVfcCAiJGZpbGUiIFwKIAkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkZmlsZScgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgpAQCAtMTk5NCwyMyArMjkzOSwyMyBAQAogCWlmIHRlc3QgIlgkZGVzdGRpciIgPSAiWCRsaWJkaXIiOyB0aGVuCiAJICBjYXNlICIkY3VycmVudF9saWJkaXJzICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBjdXJyZW50X2xpYmRpcnM9IiRjdXJyZW50X2xpYmRpcnMgJGxpYmRpciIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIGN1cnJlbnRfbGliZGlycyAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZWxzZQogCSAgIyBOb3RlIHRoZSBsaWJkaXIgYXMgYSBmdXR1cmUgbGliZGlyLgogCSAgY2FzZSAiJGZ1dHVyZV9saWJkaXJzICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBmdXR1cmVfbGliZGlycz0iJGZ1dHVyZV9saWJkaXJzICRsaWJkaXIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBmdXR1cmVfbGliZGlycyAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZmkKIAogCWZ1bmNfZGlybmFtZSAiJGZpbGUiICIvIiAiIgogCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0JZGlyPSIkZGlyJG9iamRpciIKKwlmdW5jX2FwcGVuZCBkaXIgIiRvYmpkaXIiCiAKIAlpZiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCiAJICAjIERldGVybWluZSB0aGUgcHJlZml4IHRoZSB1c2VyIGhhcyBhcHBsaWVkIHRvIG91ciBmdXR1cmUgZGlyLgotCSAgaW5zdF9wcmVmaXhfZGlyPWAkRUNITyAiWCRkZXN0ZGlyIiB8ICRYc2VkIC1lICJzJSRsaWJkaXJcJCUlImAKKwkgIGluc3RfcHJlZml4X2Rpcj1gJEVDSE8gIiRkZXN0ZGlyIiB8ICRTRUQgLWUgInMlJGxpYmRpclwkJSUiYAogCiAJICAjIERvbid0IGFsbG93IHRoZSB1c2VyIHRvIHBsYWNlIHVzIG91dHNpZGUgb2Ygb3VyIGV4cGVjdGVkCiAJICAjIGxvY2F0aW9uIGIvYyB0aGlzIHByZXZlbnRzIGZpbmRpbmcgZGVwZW5kZW50IGxpYnJhcmllcyB0aGF0CkBAIC0yMDIzLDkgKzI5NjgsOSBAQAogCiAJICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgogCSAgICAjIFN0aWNrIHRoZSBpbnN0X3ByZWZpeF9kaXIgZGF0YSBpbnRvIHRoZSBsaW5rIGNvbW1hbmQuCi0JICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAaW5zdF9wcmVmaXhfZGlyQCUtaW5zdC1wcmVmaXgtZGlyICRpbnN0X3ByZWZpeF9kaXIlImAKKwkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkcmVsaW5rX2NvbW1hbmQiIHwgJFNFRCAicyVAaW5zdF9wcmVmaXhfZGlyQCUtaW5zdC1wcmVmaXgtZGlyICRpbnN0X3ByZWZpeF9kaXIlImAKIAkgIGVsc2UKLQkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJHJlbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBpbnN0X3ByZWZpeF9kaXJAJSUiYAorCSAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRyZWxpbmtfY29tbWFuZCIgfCAkU0VEICJzJUBpbnN0X3ByZWZpeF9kaXJAJSUiYAogCSAgZmkKIAogCSAgZnVuY193YXJuaW5nICJyZWxpbmtpbmcgXGAkZmlsZSciCkBAIC0yMDQzLDcgKzI5ODgsNyBAQAogCSAgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIiAmJiBzcmNuYW1lPSIkcmVhbG5hbWUiVAogCiAJICAjIEluc3RhbGwgdGhlIHNoYXJlZCBsaWJyYXJ5IGFuZCBidWlsZCB0aGUgc3ltbGlua3MuCi0JICBmdW5jX3Nob3dfZXZhbCAiJGluc3RhbGxfcHJvZyAkZGlyLyRzcmNuYW1lICRkZXN0ZGlyLyRyZWFsbmFtZSIgXAorCSAgZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3NoYXJlZF9wcm9nICRkaXIvJHNyY25hbWUgJGRlc3RkaXIvJHJlYWxuYW1lIiBcCiAJICAgICAgJ2V4aXQgJD8nCiAJICB0c3RyaXBtZT0iJHN0cmlwbWUiCiAJICBjYXNlICRob3N0X29zIGluCkBAIC0yMDgzLDcgKzMwMjgsNyBAQAogCWZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nICRpbnN0bmFtZSAkZGVzdGRpci8kbmFtZSIgJ2V4aXQgJD8nCiAKIAkjIE1heWJlIGluc3RhbGwgdGhlIHN0YXRpYyBsaWJyYXJ5LCB0b28uCi0JdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBzdGF0aWNsaWJzPSIkc3RhdGljbGlicyAkZGlyLyRvbGRfbGlicmFyeSIKKwl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIGZ1bmNfYXBwZW5kIHN0YXRpY2xpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKIAk7OwogCiAgICAgICAqLmxvKQpAQCAtMjE4Myw3ICszMTI4LDcgQEAKIAkgICAgaWYgdGVzdCAtZiAiJGxpYiI7IHRoZW4KIAkgICAgICBmdW5jX3NvdXJjZSAiJGxpYiIKIAkgICAgZmkKLQkgICAgbGliZmlsZT0iJGxpYmRpci8iYCRFQ0hPICJYJGxpYiIgfCAkWHNlZCAtZSAncyVeLiovJSVnJ2AgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CisJICAgIGxpYmZpbGU9IiRsaWJkaXIvImAkRUNITyAiJGxpYiIgfCAkU0VEICdzJV4uKi8lJWcnYCAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKIAkgICAgaWYgdGVzdCAtbiAiJGxpYmRpciIgJiYgdGVzdCAhIC1mICIkbGliZmlsZSI7IHRoZW4KIAkgICAgICBmdW5jX3dhcm5pbmcgIlxgJGxpYicgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBcYCRsaWJkaXInIgogCSAgICAgIGZpbmFsaXplPW5vCkBAIC0yMjAyLDcgKzMxNDcsNyBAQAogCQlmaWxlPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCiAJICAgICAgICBvdXRwdXRuYW1lPSIkdG1wZGlyLyRmaWxlIgogCSAgICAgICAgIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgotCSAgICAgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJHJlbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dG5hbWUiJyVnJ2AKKwkgICAgICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiJHJlbGlua19jb21tYW5kIiB8ICRTRUQgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0bmFtZSInJWcnYAogCiAJICAgICAgICAkb3B0X3NpbGVudCB8fCB7CiAJICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCAiJHJlbGlua19jb21tYW5kIgpAQCAtMjIyMSw3ICszMTY2LDcgQEAKIAkgICAgfQogCSAgZWxzZQogCSAgICAjIEluc3RhbGwgdGhlIGJpbmFyeSB0aGF0IHdlIGNvbXBpbGVkIGVhcmxpZXIuCi0JICAgIGZpbGU9YCRFQ0hPICJYJGZpbGUkc3RyaXBwZWRfZXh0IiB8ICRYc2VkIC1lICJzJVwoW14vXSpcKSQlJG9iamRpci9cMSUiYAorCSAgICBmaWxlPWAkRUNITyAiJGZpbGUkc3RyaXBwZWRfZXh0IiB8ICRTRUQgInMlXChbXi9dKlwpJCUkb2JqZGlyL1wxJSJgCiAJICBmaQogCWZpCiAKQEAgLTIyNTcsMTEgKzMyMDIsMTMgQEAKIAogICAgICAgIyBTZXQgdXAgdGhlIHJhbmxpYiBwYXJhbWV0ZXJzLgogICAgICAgb2xkbGliPSIkZGVzdGRpci8kbmFtZSIKKyAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2xkbGliIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICAgICAgdG9vbF9vbGRsaWI9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAogCiAgICAgICBmdW5jX3Nob3dfZXZhbCAiJGluc3RhbGxfcHJvZyBcJGZpbGUgXCRvbGRsaWIiICdleGl0ICQ/JwogCiAgICAgICBpZiB0ZXN0IC1uICIkc3RyaXBtZSIgJiYgdGVzdCAtbiAiJG9sZF9zdHJpcGxpYiI7IHRoZW4KLQlmdW5jX3Nob3dfZXZhbCAiJG9sZF9zdHJpcGxpYiAkb2xkbGliIiAnZXhpdCAkPycKKwlmdW5jX3Nob3dfZXZhbCAiJG9sZF9zdHJpcGxpYiAkdG9vbF9vbGRsaWIiICdleGl0ICQ/JwogICAgICAgZmkKIAogICAgICAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIHBvc3RpbnN0YWxsIGNvbW1hbmRzLgpAQCAtMjI4MCw3ICszMjI3LDcgQEAKICAgICBmaQogfQogCi10ZXN0ICIkbW9kZSIgPSBpbnN0YWxsICYmIGZ1bmNfbW9kZV9pbnN0YWxsICR7MSsiJEAifQordGVzdCAiJG9wdF9tb2RlIiA9IGluc3RhbGwgJiYgZnVuY19tb2RlX2luc3RhbGwgJHsxKyIkQCJ9CiAKIAogIyBmdW5jX2dlbmVyYXRlX2Rsc3ltcyBvdXRwdXRuYW1lIG9yaWdpbmF0b3IgcGljX3AKQEAgLTIzMjMsNiArMzI3MCwyMiBAQAogZXh0ZXJuIFwiQ1wiIHsKICNlbmRpZgogCisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fID49IDQpKSB8fCAoX19HTlVDX18gPiA0KSkKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1Xc3RyaWN0LXByb3RvdHlwZXNcIgorI2VuZGlmCisKKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKyNlbHNlCisjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorI2VuZGlmCisKIC8qIEV4dGVybmFsIHN5bWJvbCBkZWNsYXJhdGlvbnMgZm9yIHRoZSBjb21waWxlci4gKi9cCiAiCiAKQEAgLTIzMzIsMTAgKzMyOTUsMTEgQEAKIAkgICRvcHRfZHJ5X3J1biB8fCBlY2hvICc6IEBQUk9HUkFNQCAnID4gIiRubGlzdCIKIAogCSAgIyBBZGQgb3VyIG93biBwcm9ncmFtIG9iamVjdHMgdG8gdGhlIHN5bWJvbCBsaXN0LgotCSAgcHJvZ2ZpbGVzPWAkRUNITyAiWCRvYmpzJG9sZF9kZXBsaWJzIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkbG8ybyIgfCAkTkwyU1BgCisJICBwcm9nZmlsZXM9YCRFQ0hPICIkb2JqcyRvbGRfZGVwbGlicyIgfCAkU1AyTkwgfCAkU0VEICIkbG8ybyIgfCAkTkwyU1BgCiAJICBmb3IgcHJvZ2ZpbGUgaW4gJHByb2dmaWxlczsgZG8KLQkgICAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRwcm9nZmlsZSciCi0JICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkTk0gJHByb2dmaWxlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRwcm9nZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKwkgICAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQnIgorCSAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJE5NICRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgogCSAgZG9uZQogCiAJICBpZiB0ZXN0IC1uICIkZXhjbHVkZV9leHBzeW1zIjsgdGhlbgpAQCAtMjM3MSw3ICszMzM1LDcgQEAKIAkgICAgICBldmFsICckR1JFUCAtZiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIiA8ICIkbmxpc3QiID4gIiRubGlzdCJUJwogCSAgICAgIGV2YWwgJyRNViAiJG5saXN0IlQgIiRubGlzdCInCiAJICAgICAgY2FzZSAkaG9zdCBpbgotCSAgICAgICAgKmN5Z3dpbiB8ICptaW5ndyogfCAqY2VnY2MqICkKKwkgICAgICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQogCSAgICAgICAgICBldmFsICJlY2hvIEVYUE9SVFMgIic+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJwogCSAgICAgICAgICBldmFsICdjYXQgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCiAJICAgICAgICAgIDs7CkBAIC0yMzg0LDEwICszMzQ4LDUyIEBACiAJICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJGRscHJlZmlsZSciCiAJICBmdW5jX2Jhc2VuYW1lICIkZGxwcmVmaWxlIgogCSAgbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotCSAgJG9wdF9kcnlfcnVuIHx8IHsKLQkgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKLQkgICAgZXZhbCAiJE5NICRkbHByZWZpbGUgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgotCSAgfQorICAgICAgICAgIGNhc2UgJGhvc3QgaW4KKwkgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCisJICAgICAgIyBpZiBhbiBpbXBvcnQgbGlicmFyeSwgd2UgbmVlZCB0byBvYnRhaW4gZGxuYW1lCisJICAgICAgaWYgZnVuY193aW4zMl9pbXBvcnRfbGliX3AgIiRkbHByZWZpbGUiOyB0aGVuCisJICAgICAgICBmdW5jX3RyX3NoICIkZGxwcmVmaWxlIgorCSAgICAgICAgZXZhbCAiY3Vycl9sYWZpbGU9XCRsaWJmaWxlXyRmdW5jX3RyX3NoX3Jlc3VsdCIKKwkgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSIiCisJICAgICAgICBpZiB0ZXN0IC1uICIkY3Vycl9sYWZpbGUiICYmIGZ1bmNfbGFsaWJfcCAiJGN1cnJfbGFmaWxlIjsgdGhlbgorCSAgICAgICAgICAjIFVzZSBzdWJzaGVsbCwgdG8gYXZvaWQgY2xvYmJlcmluZyBjdXJyZW50IHZhcmlhYmxlIHZhbHVlcworCSAgICAgICAgICBkbHByZWZpbGVfZGxuYW1lPWBzb3VyY2UgIiRjdXJyX2xhZmlsZSIgJiYgZWNobyAiJGRsbmFtZSJgCisJICAgICAgICAgIGlmIHRlc3QgLW4gIiRkbHByZWZpbGVfZGxuYW1lIiA7IHRoZW4KKwkgICAgICAgICAgICBmdW5jX2Jhc2VuYW1lICIkZGxwcmVmaWxlX2RsbmFtZSIKKwkgICAgICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCSAgICAgICAgICBlbHNlCisJICAgICAgICAgICAgIyBubyBsYWZpbGUuIHVzZXIgZXhwbGljaXRseSByZXF1ZXN0ZWQgLWRscHJlb3BlbiA8aW1wb3J0IGxpYnJhcnk+LgorCSAgICAgICAgICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCAiJGRscHJlZmlsZSIKKwkgICAgICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0kc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKKwkgICAgICAgICAgZmkKKwkgICAgICAgIGZpCisJICAgICAgICAkb3B0X2RyeV9ydW4gfHwgeworCSAgICAgICAgICBpZiB0ZXN0IC1uICIkZGxwcmVmaWxlX2RsYmFzZW5hbWUiIDsgdGhlbgorCSAgICAgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRkbHByZWZpbGVfZGxiYXNlbmFtZSIgPj4gIiRubGlzdCInCisJICAgICAgICAgIGVsc2UKKwkgICAgICAgICAgICBmdW5jX3dhcm5pbmcgIkNvdWxkIG5vdCBjb21wdXRlIERMTCBuYW1lIGZyb20gJG5hbWUiCisJICAgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKKwkgICAgICAgICAgZmkKKwkgICAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisJICAgICAgICAgIGV2YWwgIiROTSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfAorCSAgICAgICAgICAgICRTRUQgLWUgJy9JIF9faW1wL2QnIC1lICdzL0kgX19ubV8vRCAvO3MvX25tX18vLycgPj4gJyRubGlzdCciCisJICAgICAgICB9CisJICAgICAgZWxzZSAjIG5vdCBhbiBpbXBvcnQgbGliCisJICAgICAgICAkb3B0X2RyeV9ydW4gfHwgeworCSAgICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJworCSAgICAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGRscHJlZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKwkgICAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKwkgICAgICAgIH0KKwkgICAgICBmaQorCSAgICA7OworCSAgICAqKQorCSAgICAgICRvcHRfZHJ5X3J1biB8fCB7CisJICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJworCSAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisJICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorCSAgICAgIH0KKwkgICAgOzsKKyAgICAgICAgICBlc2FjCiAJZG9uZQogCiAJJG9wdF9kcnlfcnVuIHx8IHsKQEAgLTI0MTUsMzYgKzM0MjEsMTkgQEAKIAkgIGlmIHRlc3QgLWYgIiRubGlzdCJTOyB0aGVuCiAJICAgIGV2YWwgIiRnbG9iYWxfc3ltYm9sX3RvX2NkZWNsIicgPCAiJG5saXN0IlMgPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiJwogCSAgZWxzZQotCSAgICAkRUNITyAnLyogTk9ORSAqLycgPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiCisJICAgIGVjaG8gJy8qIE5PTkUgKi8nID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIgogCSAgZmkKIAotCSAgJEVDSE8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCisJICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAogCiAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCiB0eXBlZGVmIHN0cnVjdCB7CiAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgIHZvaWQgKmFkZHJlc3M7CiB9IGx0X2Rsc3ltbGlzdDsKLSIKLQkgIGNhc2UgJGhvc3QgaW4KLQkgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQotCSAgICAkRUNITyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKLS8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UKLSAgIHJ1bnRpbWUgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uCi0gICBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8iCi0JICAgIGx0X2Rsc3ltX2NvbnN0PSA7OwotCSAgKm9zZjUqKQotCSAgICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAotLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YSAqLyIKLQkgICAgbHRfZGxzeW1fY29uc3Q9IDs7Ci0JICAqKQotCSAgICBsdF9kbHN5bV9jb25zdD1jb25zdCA7OwotCSAgZXNhYwotCi0JICAkRUNITyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKLWV4dGVybiAkbHRfZGxzeW1fY29uc3QgbHRfZGxzeW1saXN0CitleHRlcm4gTFRfRExTWU1fQ09OU1QgbHRfZGxzeW1saXN0CiBsdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzW107Ci0kbHRfZGxzeW1fY29uc3QgbHRfZGxzeW1saXN0CitMVF9ETFNZTV9DT05TVCBsdF9kbHN5bWxpc3QKIGx0XyR7bXlfcHJlZml4fV9MVFhfcHJlbG9hZGVkX3N5bWJvbHNbXSA9CiB7XAogICB7IFwiJG15X29yaWdpbmF0b3JcIiwgKHZvaWQgKikgMCB9LCIKQEAgLTI0NTcsNyArMzQ0Niw3IEBACiAJICAgIGV2YWwgIiRnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIDwgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiCiAJICAgIDs7CiAJICBlc2FjCi0JICAkRUNITyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKwkgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCiAgIHswLCAodm9pZCAqKSAwfQogfTsKIApAQCAtMjQ4NCw3ICszNDczLDcgQEAKIAkgICMgbGlua2VkIGJlZm9yZSBhbnkgb3RoZXIgUElDIG9iamVjdC4gIEJ1dCB3ZSBtdXN0IG5vdCB1c2UKIAkgICMgcGljX2ZsYWcgd2hlbiBsaW5raW5nIHdpdGggLXN0YXRpYy4gIFRoZSBwcm9ibGVtIGV4aXN0cyBpbgogCSAgIyBGcmVlQlNEIDIuMi42IGFuZCBpcyBmaXhlZCBpbiBGcmVlQlNEIDMuMS4KLQkgICotKi1mcmVlYnNkMip8Ki0qLWZyZWVic2QzLjAqfCotKi1mcmVlYnNkZWxmMy4wKikKKwkgICotKi1mcmVlYnNkMi4qfCotKi1mcmVlYnNkMy4wKnwqLSotZnJlZWJzZGVsZjMuMCopCiAJICAgIHBpY19mbGFnX2Zvcl9zeW10YWJsZT0iICRwaWNfZmxhZyAtREZSRUVCU0RfV09SS0FST1VORCIgOzsKIAkgICotKi1ocHV4KikKIAkgICAgcGljX2ZsYWdfZm9yX3N5bXRhYmxlPSIgJHBpY19mbGFnIiAgOzsKQEAgLTI1MDAsNyArMzQ4OSw3IEBACiAJZm9yIGFyZyBpbiAkTFRDRkxBR1M7IGRvCiAJICBjYXNlICRhcmcgaW4KIAkgIC1waWUgfCAtZnBpZSB8IC1mUElFKSA7OwotCSAgKikgc3ltdGFiX2NmbGFncz0iJHN5bXRhYl9jZmxhZ3MgJGFyZyIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIHN5bXRhYl9jZmxhZ3MgIiAkYXJnIiA7OwogCSAgZXNhYwogCWRvbmUKIApAQCAtMjUxNSwxNiArMzUwNCwxNiBAQAogCWNhc2UgJGhvc3QgaW4KIAkqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKIAkgIGlmIHRlc3QgLWYgIiRvdXRwdXRfb2JqZGlyLyRteV9vdXRwdXRuYW1lLmRlZiI7IHRoZW4KLQkgICAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyRteV9vdXRwdXRuYW1lLmRlZiAkc3ltZmlsZW9iaiUiYAotCSAgICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkb3V0cHV0X29iamRpci8kbXlfb3V0cHV0bmFtZS5kZWYgJHN5bWZpbGVvYmolImAKKwkgICAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfY29tbWFuZCIgfCAkU0VEICJzJUBTWU1GSUxFQCUkb3V0cHV0X29iamRpci8kbXlfb3V0cHV0bmFtZS5kZWYgJHN5bWZpbGVvYmolImAKKwkgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIiRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTRUQgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyRteV9vdXRwdXRuYW1lLmRlZiAkc3ltZmlsZW9iaiUiYAogCSAgZWxzZQotCSAgICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKLQkgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKKwkgICAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfY29tbWFuZCIgfCAkU0VEICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAorCSAgICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNFRCAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKIAkgIGZpCiAJICA7OwogCSopCi0JICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKLQkgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCisJICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICIkY29tcGlsZV9jb21tYW5kIiB8ICRTRUQgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCisJICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNFRCAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKIAkgIDs7CiAJZXNhYwogCTs7CkBAIC0yNTM4LDggKzM1MjcsOCBAQAogICAgICAgIyByZWFsbHkgd2FzIHJlcXVpcmVkLgogCiAgICAgICAjIE51bGxpZnkgdGhlIHN5bWJvbCBmaWxlLgotICAgICAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlIEBTWU1GSUxFQCUlImAKLSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlIEBTWU1GSUxFQCUlImAKKyAgICAgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX2NvbW1hbmQiIHwgJFNFRCAicyUgQFNZTUZJTEVAJSUiYAorICAgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIiRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTRUQgInMlIEBTWU1GSUxFQCUlImAKICAgICBmaQogfQogCkBAIC0yNTQ5LDYgKzM1MzgsNyBAQAogIyBOZWVkIGEgbG90IG9mIGdvbyB0byBoYW5kbGUgKmJvdGgqIERMTHMgYW5kIGltcG9ydCBsaWJzCiAjIEhhcyB0byBiZSBhIHNoZWxsIGZ1bmN0aW9uIGluIG9yZGVyIHRvICdlYXQnIHRoZSBhcmd1bWVudAogIyB0aGF0IGlzIHN1cHBsaWVkIHdoZW4gJGZpbGVfbWFnaWNfY29tbWFuZCBpcyBjYWxsZWQuCisjIERlc3BpdGUgdGhlIG5hbWUsIGFsc28gZGVhbCB3aXRoIDY0IGJpdCBiaW5hcmllcy4KIGZ1bmNfd2luMzJfbGliaWQgKCkKIHsKICAgJG9wdF9kZWJ1ZwpAQCAtMjU1OSw5ICszNTQ5LDExIEBACiAgICAgd2luMzJfbGliaWRfdHlwZT0ieDg2IGFyY2hpdmUgaW1wb3J0IgogICAgIDs7CiAgICphclwgYXJjaGl2ZSopICMgY291bGQgYmUgYW4gaW1wb3J0LCBvciBzdGF0aWMKKyAgICAjIEtlZXAgdGhlIGVncmVwIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gX0xUX0NIRUNLX01BR0lDX01FVEhPRC4KICAgICBpZiBldmFsICRPQkpEVU1QIC1mICQxIHwgJFNFRCAtZSAnMTBxJyAyPi9kZXYvbnVsbCB8Ci0gICAgICAgJEVHUkVQICdmaWxlIGZvcm1hdCBwZS1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nID4vZGV2L251bGwgOyB0aGVuCi0gICAgICB3aW4zMl9ubXJlcz1gZXZhbCAkTk0gLWYgcG9zaXggLUEgJDEgfAorICAgICAgICRFR1JFUCAnZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJyA+L2Rldi9udWxsOyB0aGVuCisgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgICAgICB3aW4zMl9ubXJlcz1gZXZhbCAkTk0gLWYgcG9zaXggLUEgXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgfAogCSRTRUQgLW4gLWUgJwogCSAgICAxLDEwMHsKIAkJLyBJIC97CkBAIC0yNTkwLDYgKzM1ODIsMTMxIEBACiAgICRFQ0hPICIkd2luMzJfbGliaWRfdHlwZSIKIH0KIAorIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIgQVJHCisjCisjIFBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlCisjIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZAorIyBpbXBvcnQgbGlicmFyeSBBUkcuCisjIEludm9rZWQgYnkgZXZhbCdpbmcgdGhlIGxpYnRvb2wgdmFyaWFibGUKKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gdGhlIHZhcmlhYmxlCisjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAorZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliICgpCit7CisgICRvcHRfZGVidWcKKyAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YCRETExUT09MIC0taWRlbnRpZnktc3RyaWN0IC0taWRlbnRpZnkgIiQxImAKK30KKworIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSBTRUNUSU9OX05BTUUgTElCTkFNRXMKKyMKKyMgVGhlIGlzIHRoZSBjb3JlIG9mIGEgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gb2YgYQorIyBwbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZSBuYW1lIG9mIHRoZQorIyBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkgTElCTkFNRS4KKyMKKyMgU0VDVElPTl9OQU1FIGlzIGVpdGhlciAuaWRhdGEkNiBvciAuaWRhdGEkNywgZGVwZW5kaW5nCisjIG9uIHRoZSBwbGF0Zm9ybSBhbmQgY29tcGlsZXIgdGhhdCBjcmVhdGVkIHRoZSBpbXBsaWIuCisjCisjIEVjaG9zIHRoZSBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZQorIyBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkuCitmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAoKQoreworICAkb3B0X2RlYnVnCisgIG1hdGNoX2xpdGVyYWw9YCRFQ0hPICIkMSIgfCAkU0VEICIkc2VkX21ha2VfbGl0ZXJhbF9yZWdleCJgCisgICRPQkpEVU1QIC1zIC0tc2VjdGlvbiAiJDEiICIkMiIgMj4vZGV2L251bGwgfAorICAgICRTRUQgJy9eQ29udGVudHMgb2Ygc2VjdGlvbiAnIiRtYXRjaF9saXRlcmFsIic6L3sKKyAgICAgICMgUGxhY2UgbWFya2VyIGF0IGJlZ2lubmluZyBvZiBhcmNoaXZlIG1lbWJlciBkbGxuYW1lIHNlY3Rpb24KKyAgICAgIHMvLiovPT09PU1BUks9PT09LworICAgICAgcAorICAgICAgZAorICAgIH0KKyAgICAjIFRoZXNlIGxpbmVzIGNhbiBzb21ldGltZXMgYmUgbG9uZ2VyIHRoYW4gNDMgY2hhcmFjdGVycywgYnV0CisgICAgIyBhcmUgYWx3YXlzIHVuaW50ZXJlc3RpbmcKKyAgICAvOlsJIF0qZmlsZSBmb3JtYXQgcGVbaV1ceywxXH0tL2QKKyAgICAvXkluIGFyY2hpdmUgW146XSo6L2QKKyAgICAjIEVuc3VyZSBtYXJrZXIgaXMgcHJpbnRlZAorICAgIC9ePT09PU1BUks9PT09L3AKKyAgICAjIFJlbW92ZSBhbGwgbGluZXMgd2l0aCBsZXNzIHRoYW4gNDMgY2hhcmFjdGVycworICAgIC9eLlx7NDNcfS8hZAorICAgICMgRnJvbSByZW1haW5pbmcgbGluZXMsIHJlbW92ZSBmaXJzdCA0MyBjaGFyYWN0ZXJzCisgICAgcy9eLlx7NDNcfS8vJyB8CisgICAgJFNFRCAtbiAnCisgICAgICAjIEpvaW4gbWFya2VyIGFuZCBhbGwgbGluZXMgdW50aWwgbmV4dCBtYXJrZXIgaW50byBhIHNpbmdsZSBsaW5lCisgICAgICAvXj09PT1NQVJLPT09PS8gYiBwYXJhCisgICAgICBICisgICAgICAkIGIgcGFyYQorICAgICAgYgorICAgICAgOnBhcmEKKyAgICAgIHgKKyAgICAgIHMvXG4vL2cKKyAgICAgICMgUmVtb3ZlIHRoZSBtYXJrZXIKKyAgICAgIHMvXj09PT1NQVJLPT09PS8vCisgICAgICAjIFJlbW92ZSB0cmFpbGluZyBkb3RzIGFuZCB3aGl0ZXNwYWNlCisgICAgICBzL1tcLiBcdF0qJC8vCisgICAgICAjIFByaW50CisgICAgICAvLi9wJyB8CisgICAgIyB3ZSBub3cgaGF2ZSBhIGxpc3QsIG9uZSBlbnRyeSBwZXIgbGluZSwgb2YgdGhlIHN0cmluZ2lmaWVkCisgICAgIyBjb250ZW50cyBvZiB0aGUgYXBwcm9wcmlhdGUgc2VjdGlvbiBvZiBhbGwgbWVtYmVycyBvZiB0aGUKKyAgICAjIGFyY2hpdmUgd2hpY2ggcG9zc2VzcyB0aGF0IHNlY3Rpb24uIEhldXJpc3RpYzogZWxpbWluYXRlCisgICAgIyBhbGwgdGhvc2Ugd2hpY2ggaGF2ZSBhIGZpcnN0IG9yIHNlY29uZCBjaGFyYWN0ZXIgdGhhdCBpcworICAgICMgYSAnLicgKHRoYXQgaXMsIG9iamR1bXAncyByZXByZXNlbnRhdGlvbiBvZiBhbiB1bnByaW50YWJsZQorICAgICMgY2hhcmFjdGVyLikgVGhpcyBzaG91bGQgd29yayBmb3IgYWxsIGFyY2hpdmVzIHdpdGggbGVzcyB0aGFuCisgICAgIyAweDMwMmYgZXhwb3J0cyAtLSBidXQgd2lsbCBmYWlsIGZvciBETExzIHdob3NlIG5hbWUgYWN0dWFsbHkKKyAgICAjIGJlZ2lucyB3aXRoIGEgbGl0ZXJhbCAnLicgb3IgYSBzaW5nbGUgY2hhcmFjdGVyIGZvbGxvd2VkIGJ5CisgICAgIyBhICcuJy4KKyAgICAjCisgICAgIyBPZiB0aG9zZSB0aGF0IHJlbWFpbiwgcHJpbnQgdGhlIGZpcnN0IG9uZS4KKyAgICAkU0VEIC1lICcvXlwuL2Q7L14uXC4vZDtxJworfQorCisjIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgQVJHCisjIFRoaXMgcHJlZGljYXRlIHJldHVybnMgd2l0aCB6ZXJvIHN0YXR1cyAoVFJVRSkgaWYKKyMgQVJHIGlzIGEgR05VL2JpbnV0aWxzLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCisjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCitmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl90bXA9YCROTSAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgfCBldmFsICIkZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRFR1JFUCAnIChfaGVhZF9bQS1aYS16MC05X10rX1thZF1sKnxbQS1aYS16MC05X10rX1thZF1sKl9pbmFtZSkkJ2AKKyAgdGVzdCAtbiAiJGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcCIKK30KKworIyBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgQVJHCisjIFRoaXMgcHJlZGljYXRlIHJldHVybnMgd2l0aCB6ZXJvIHN0YXR1cyAoVFJVRSkgaWYKKyMgQVJHIGlzIGFuIE1TLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCisjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCitmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfdG1wPWAkTk0gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiIHwgZXZhbCAiJGdsb2JhbF9zeW1ib2xfcGlwZSIgfCAkR1JFUCAnX05VTExfSU1QT1JUX0RFU0NSSVBUT1InYAorICB0ZXN0IC1uICIkZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXAiCit9CisKKyMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrIEFSRworIyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZQorIyBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQKKyMgaW1wb3J0IGxpYnJhcnkgQVJHLgorIworIyBUaGlzIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGlzIGZvciB1c2Ugd2hlbiAkRExMVE9PTAorIyBkb2VzIG5vdCBzdXBwb3J0IHRoZSAtLWlkZW50aWZ5LXN0cmljdCBvcHRpb24uCisjIEludm9rZWQgYnkgZXZhbCdpbmcgdGhlIGxpYnRvb2wgdmFyaWFibGUKKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gdGhlIHZhcmlhYmxlCisjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAorZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrICgpCit7CisgICRvcHRfZGVidWcKKyAgaWYgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCAiJDEiIDsgdGhlbgorICAgICMgYmludXRpbHMgaW1wb3J0IGxpYnJhcnkKKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgJy5pZGF0YSQ3JyAiJDEiYAorICBlbGlmIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfcCAiJDEiIDsgdGhlbgorICAgICMgbXMtZ2VuZXJhdGVkIGltcG9ydCBsaWJyYXJ5CisgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICcuaWRhdGEkNicgIiQxImAKKyAgZWxzZQorICAgICMgdW5rbm93bgorICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PSIiCisgIGZpCit9CiAKIAogIyBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSBkaXIgb2xkbGliCkBAIC0yNTk4LDcgKzM3MTUsMTggQEAKICAgICAkb3B0X2RlYnVnCiAgICAgZl9leF9hbl9hcl9kaXI9IiQxIjsgc2hpZnQKICAgICBmX2V4X2FuX2FyX29sZGxpYj0iJDEiCi0gICAgZnVuY19zaG93X2V2YWwgIihjZCBcJGZfZXhfYW5fYXJfZGlyICYmICRBUiB4IFwiXCRmX2V4X2FuX2FyX29sZGxpYlwiKSIgJ2V4aXQgJD8nCisgICAgaWYgdGVzdCAiJGxvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbiIgPSB5ZXM7IHRoZW4KKyAgICAgIGxvY2tmaWxlPSRmX2V4X2FuX2FyX29sZGxpYi5sb2NrCisgICAgICB1bnRpbCAkb3B0X2RyeV9ydW4gfHwgbG4gIiRwcm9ncGF0aCIgIiRsb2NrZmlsZSIgMj4vZGV2L251bGw7IGRvCisJZnVuY19lY2hvICJXYWl0aW5nIGZvciAkbG9ja2ZpbGUgdG8gYmUgcmVtb3ZlZCIKKwlzbGVlcCAyCisgICAgICBkb25lCisgICAgZmkKKyAgICBmdW5jX3Nob3dfZXZhbCAiKGNkIFwkZl9leF9hbl9hcl9kaXIgJiYgJEFSIHggXCJcJGZfZXhfYW5fYXJfb2xkbGliXCIpIiBcCisJCSAgICdzdGF0PSQ/OyBybSAtZiAiJGxvY2tmaWxlIjsgZXhpdCAkc3RhdCcKKyAgICBpZiB0ZXN0ICIkbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uIiA9IHllczsgdGhlbgorICAgICAgJG9wdF9kcnlfcnVuIHx8IHJtIC1mICIkbG9ja2ZpbGUiCisgICAgZmkKICAgICBpZiAoJEFSIHQgIiRmX2V4X2FuX2FyX29sZGxpYiIgfCBzb3J0IHwgc29ydCAtdWMgPi9kZXYvbnVsbCAyPiYxKTsgdGhlbgogICAgICA6CiAgICAgZWxzZQpAQCAtMjY2OSw3ICszNzk3LDcgQEAKIAkgICAgZGFyd2luX2ZpbGU9CiAJICAgIGRhcndpbl9maWxlcz0KIAkgICAgZm9yIGRhcndpbl9maWxlIGluICRkYXJ3aW5fZmlsZWxpc3Q7IGRvCi0JICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCAkTkwyU1BgCisJICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCBzb3J0IHwgJE5MMlNQYAogCSAgICAgICRMSVBPIC1jcmVhdGUgLW91dHB1dCAiJGRhcndpbl9maWxlIiAkZGFyd2luX2ZpbGVzCiAJICAgIGRvbmUgIyAkZGFyd2luX2ZpbGVsaXN0CiAJICAgICRSTSAtcmYgdW5mYXQtJCQKQEAgLTI2ODQsMjUgKzM4MTIsMzAgQEAKICAgICAgICAgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgIiRteV94ZGlyIiAiJG15X3hhYnMiCiAJOzsKICAgICAgIGVzYWMKLSAgICAgIG15X29sZG9ianM9IiRteV9vbGRvYmpzICJgZmluZCAkbXlfeGRpciAtbmFtZSBcKi4kb2JqZXh0IC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCAkTkwyU1BgCisgICAgICBteV9vbGRvYmpzPSIkbXlfb2xkb2JqcyAiYGZpbmQgJG15X3hkaXIgLW5hbWUgXCouJG9iamV4dCAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgc29ydCB8ICROTDJTUGAKICAgICBkb25lCiAKICAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0PSIkbXlfb2xkb2JqcyIKIH0KIAogCi0KLSMgZnVuY19lbWl0X3dyYXBwZXJfcGFydDEgW2FyZz1ub10KKyMgZnVuY19lbWl0X3dyYXBwZXIgW2FyZz1ub10KICMKLSMgRW1pdCB0aGUgZmlyc3QgcGFydCBvZiBhIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQgb24gc3Rkb3V0LgotIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBkZXNjcmlwdGlvbiBhc3NvY2lhdGVkIHdpdGgKLSMgZnVuY19lbWl0X3dyYXBwZXIoKSwgYmVsb3cuCi1mdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MSAoKQorIyBFbWl0IGEgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBvbiBzdGRvdXQuCisjIERvbid0IGRpcmVjdGx5IG9wZW4gYSBmaWxlIGJlY2F1c2Ugd2UgbWF5IHdhbnQgdG8KKyMgaW5jb3Jwb3JhdGUgdGhlIHNjcmlwdCBjb250ZW50cyB3aXRoaW4gYSBjeWd3aW4vbWluZ3cKKyMgd3JhcHBlciBleGVjdXRhYmxlLiAgTXVzdCBPTkxZIGJlIGNhbGxlZCBmcm9tIHdpdGhpbgorIyBmdW5jX21vZGVfbGluayBiZWNhdXNlIGl0IGRlcGVuZHMgb24gYSBudW1iZXIgb2YgdmFyaWFibGVzCisjIHNldCB0aGVyZWluLgorIworIyBBUkcgaXMgdGhlIHZhbHVlIHRoYXQgdGhlIFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSCisjIHZhcmlhYmxlIHdpbGwgdGFrZS4gIElmICd5ZXMnLCB0aGVuIHRoZSBlbWl0dGVkIHNjcmlwdAorIyB3aWxsIGFzc3VtZSB0aGF0IHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggaXQgaXMgc3RvcmVkIGlzCisjIHRoZSAkb2JqZGlyIGRpcmVjdG9yeS4gIFRoaXMgaXMgYSBjeWd3aW4vbWluZ3ctc3BlY2lmaWMKKyMgYmVoYXZpb3IuCitmdW5jX2VtaXRfd3JhcHBlciAoKQogewotCWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxX2FyZzE9bm8KLQlpZiB0ZXN0IC1uICIkMSIgOyB0aGVuCi0JICBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MV9hcmcxPSQxCi0JZmkKKwlmdW5jX2VtaXRfd3JhcHBlcl9hcmcxPSR7MS1ub30KIAogCSRFQ0hPICJcCiAjISAkU0hFTEwKQEAgLTI3MTgsNyArMzg1MSw2IEBACiAKICMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGhlbHBzIHVzIGRvIHJvYnVzdCBxdW90aW5nLiAgSXQgYmFja3NsYXNoaWZpZXMKICMgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbiBkb3VibGUtcXVvdGVkIHN0cmluZ3MuCi1Yc2VkPScke1NFRH0gLWUgMXMvXlgvLycKIHNlZF9xdW90ZV9zdWJzdD0nJHNlZF9xdW90ZV9zdWJzdCcKIAogIyBCZSBCb3VybmUgY29tcGF0aWJsZQpAQCAtMjc0OSwzMSArMzg4MSwxMzUgQEAKIGVsc2UKICAgIyBXaGVuIHdlIGFyZSBzb3VyY2VkIGluIGV4ZWN1dGUgbW9kZSwgXCRmaWxlIGFuZCBcJEVDSE8gYXJlIGFscmVhZHkgc2V0LgogICBpZiB0ZXN0IFwiXCRsaWJ0b29sX2V4ZWN1dGVfbWFnaWNcIiAhPSBcIiRtYWdpY1wiOyB0aGVuCi0gICAgRUNITz1cIiRxZWNob1wiCi0gICAgZmlsZT1cIlwkMFwiCi0gICAgIyBNYWtlIHN1cmUgZWNobyB3b3Jrcy4KLSAgICBpZiB0ZXN0IFwiWFwkMVwiID0gWC0tbm8tcmVleGVjOyB0aGVuCi0gICAgICAjIERpc2NhcmQgdGhlIC0tbm8tcmVleGVjIGZsYWcsIGFuZCBjb250aW51ZS4KLSAgICAgIHNoaWZ0Ci0gICAgZWxpZiB0ZXN0IFwiWFxgeyBcJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbFxgXCIgPSAnWFx0JzsgdGhlbgotICAgICAgIyBZaXBwZWUsIFwkRUNITyB3b3JrcyEKLSAgICAgIDoKLSAgICBlbHNlCi0gICAgICAjIFJlc3RhcnQgdW5kZXIgdGhlIGNvcnJlY3Qgc2hlbGwsIGFuZCB0aGVuIG1heWJlIFwkRUNITyB3aWxsIHdvcmsuCi0gICAgICBleGVjICRTSEVMTCBcIlwkMFwiIC0tbm8tcmVleGVjIFwkezErXCJcJEBcIn0KLSAgICBmaQotICBmaVwKKyAgICBmaWxlPVwiXCQwXCIiCisKKyAgICBxRUNITz1gJEVDSE8gIiRFQ0hPIiB8ICRTRUQgIiRzZWRfcXVvdGVfc3Vic3QiYAorICAgICRFQ0hPICJcCisKKyMgQSBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgd2hlbiB0aGVyZSBpcyBubyBwcmludCBidWlsdGluIG9yIHByaW50Zi4KK2Z1bmNfZmFsbGJhY2tfZWNobyAoKQoreworICBldmFsICdjYXQgPDxfTFRFQ0hPX0VPRgorXCQxCitfTFRFQ0hPX0VPRicKK30KKyAgICBFQ0hPPVwiJHFFQ0hPXCIKKyAgZmkKKworIyBWZXJ5IGJhc2ljIG9wdGlvbiBwYXJzaW5nLiBUaGVzZSBvcHRpb25zIGFyZSAoYSkgc3BlY2lmaWMgdG8KKyMgdGhlIGxpYnRvb2wgd3JhcHBlciwgKGIpIGFyZSBpZGVudGljYWwgYmV0d2VlbiB0aGUgd3JhcHBlcgorIyAvc2NyaXB0LyBhbmQgdGhlIHdyYXBwZXIgL2V4ZWN1dGFibGUvIHdoaWNoIGlzIHVzZWQgb25seSBvbgorIyB3aW5kb3dzIHBsYXRmb3JtcywgYW5kIChjKSBhbGwgYmVnaW4gd2l0aCB0aGUgc3RyaW5nICItLWx0LSIKKyMgKGFwcGxpY2F0aW9uIHByb2dyYW1zIGFyZSB1bmxpa2VseSB0byBoYXZlIG9wdGlvbnMgd2hpY2ggbWF0Y2gKKyMgdGhpcyBwYXR0ZXJuKS4KKyMKKyMgVGhlcmUgYXJlIG9ubHkgdHdvIHN1cHBvcnRlZCBvcHRpb25zOiAtLWx0LWRlYnVnIGFuZAorIyAtLWx0LWR1bXAtc2NyaXB0LiBUaGVyZSBpcywgZGVsaWJlcmF0ZWx5LCBubyAtLWx0LWhlbHAuCisjCisjIFRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGlzIHBhcnNpbmcgZnVuY3Rpb24gc2hvdWxkIGJlIHRoZQorIyBzY3JpcHQncyAkMCB2YWx1ZSwgZm9sbG93ZWQgYnkgIiRAIi4KK2x0X29wdGlvbl9kZWJ1Zz0KK2Z1bmNfcGFyc2VfbHRfb3B0aW9ucyAoKQoreworICBsdF9zY3JpcHRfYXJnMD1cJDAKKyAgc2hpZnQKKyAgZm9yIGx0X29wdAorICBkbworICAgIGNhc2UgXCJcJGx0X29wdFwiIGluCisgICAgLS1sdC1kZWJ1ZykgbHRfb3B0aW9uX2RlYnVnPTEgOzsKKyAgICAtLWx0LWR1bXAtc2NyaXB0KQorICAgICAgICBsdF9kdW1wX0Q9XGBcJEVDSE8gXCJYXCRsdF9zY3JpcHRfYXJnMFwiIHwgJFNFRCAtZSAncy9eWC8vJyAtZSAncyUvW14vXSokJSUnXGAKKyAgICAgICAgdGVzdCBcIlhcJGx0X2R1bXBfRFwiID0gXCJYXCRsdF9zY3JpcHRfYXJnMFwiICYmIGx0X2R1bXBfRD0uCisgICAgICAgIGx0X2R1bXBfRj1cYFwkRUNITyBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgfCAkU0VEIC1lICdzL15YLy8nIC1lICdzJV4uKi8lJSdcYAorICAgICAgICBjYXQgXCJcJGx0X2R1bXBfRC9cJGx0X2R1bXBfRlwiCisgICAgICAgIGV4aXQgMAorICAgICAgOzsKKyAgICAtLWx0LSopCisgICAgICAgIFwkRUNITyBcIlVucmVjb2duaXplZCAtLWx0LSBvcHRpb246ICdcJGx0X29wdCdcIiAxPiYyCisgICAgICAgIGV4aXQgMQorICAgICAgOzsKKyAgICBlc2FjCisgIGRvbmUKKworICAjIFByaW50IHRoZSBkZWJ1ZyBiYW5uZXIgaW1tZWRpYXRlbHk6CisgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCisgICAgZWNobyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IGxpYnRvb2wgd3JhcHBlciAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT05cIiAxPiYyCisgIGZpCit9CisKKyMgVXNlZCB3aGVuIC0tbHQtZGVidWcuIFByaW50cyBpdHMgYXJndW1lbnRzIHRvIHN0ZG91dAorIyAocmVkaXJlY3Rpb24gaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIpCitmdW5jX2x0X2R1bXBfYXJncyAoKQoreworICBsdF9kdW1wX2FyZ3NfTj0xOworICBmb3IgbHRfYXJnCisgIGRvCisgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndltcJGx0X2R1bXBfYXJnc19OXTogXCRsdF9hcmdcIgorICAgIGx0X2R1bXBfYXJnc19OPVxgZXhwciBcJGx0X2R1bXBfYXJnc19OICsgMVxgCisgIGRvbmUKK30KKworIyBDb3JlIGZ1bmN0aW9uIGZvciBsYXVuY2hpbmcgdGhlIHRhcmdldCBhcHBsaWNhdGlvbgorZnVuY19leGVjX3Byb2dyYW1fY29yZSAoKQorewogIgotCSRFQ0hPICJcCisgIGNhc2UgJGhvc3QgaW4KKyAgIyBCYWNrc2xhc2hlcyBzZXBhcmF0ZSBkaXJlY3RvcmllcyBvbiBwbGFpbiB3aW5kb3dzCisgICotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCisgICAgJEVDSE8gIlwKKyAgICAgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCisgICAgICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbMF06IFwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiAxPiYyCisgICAgICAgIGZ1bmNfbHRfZHVtcF9hcmdzIFwkezErXCJcJEBcIn0gMT4mMgorICAgICAgZmkKKyAgICAgIGV4ZWMgXCJcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQorIgorICAgIDs7CisKKyAgKikKKyAgICAkRUNITyAiXAorICAgICAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KKyAgICAgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndlswXTogXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIDE+JjIKKyAgICAgICAgZnVuY19sdF9kdW1wX2FyZ3MgXCR7MStcIlwkQFwifSAxPiYyCisgICAgICBmaQorICAgICAgZXhlYyBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9CisiCisgICAgOzsKKyAgZXNhYworICAkRUNITyAiXAorICAgICAgXCRFQ0hPIFwiXCQwOiBjYW5ub3QgZXhlYyBcJHByb2dyYW0gXCQqXCIgMT4mMgorICAgICAgZXhpdCAxCit9CisKKyMgQSBmdW5jdGlvbiB0byBlbmNhcHN1bGF0ZSBsYXVuY2hpbmcgdGhlIHRhcmdldCBhcHBsaWNhdGlvbgorIyBTdHJpcHMgb3B0aW9ucyBpbiB0aGUgLS1sdC0qIG5hbWVzcGFjZSBmcm9tIFwkQCBhbmQKKyMgbGF1bmNoZXMgdGFyZ2V0IGFwcGxpY2F0aW9uIHdpdGggdGhlIHJlbWFpbmluZyBhcmd1bWVudHMuCitmdW5jX2V4ZWNfcHJvZ3JhbSAoKQoreworICBjYXNlIFwiIFwkKiBcIiBpbgorICAqXFwgLS1sdC0qKQorICAgIGZvciBsdF93cl9hcmcKKyAgICBkbworICAgICAgY2FzZSBcJGx0X3dyX2FyZyBpbgorICAgICAgLS1sdC0qKSA7OworICAgICAgKikgc2V0IHggXCJcJEBcIiBcIlwkbHRfd3JfYXJnXCI7IHNoaWZ0OzsKKyAgICAgIGVzYWMKKyAgICAgIHNoaWZ0CisgICAgZG9uZSA7OworICBlc2FjCisgIGZ1bmNfZXhlY19wcm9ncmFtX2NvcmUgXCR7MStcIlwkQFwifQorfQorCisgICMgUGFyc2Ugb3B0aW9ucworICBmdW5jX3BhcnNlX2x0X29wdGlvbnMgXCJcJDBcIiBcJHsxK1wiXCRAXCJ9CiAKICAgIyBGaW5kIHRoZSBkaXJlY3RvcnkgdGhhdCB0aGlzIHNjcmlwdCBsaXZlcyBpbi4KLSAgdGhpc2Rpcj1cYFwkRUNITyBcIlhcJGZpbGVcIiB8IFwkWHNlZCAtZSAncyUvW14vXSokJSUnXGAKKyAgdGhpc2Rpcj1cYFwkRUNITyBcIlwkZmlsZVwiIHwgJFNFRCAncyUvW14vXSokJSUnXGAKICAgdGVzdCBcInhcJHRoaXNkaXJcIiA9IFwieFwkZmlsZVwiICYmIHRoaXNkaXI9LgogCiAgICMgRm9sbG93IHN5bWJvbGljIGxpbmtzIHVudGlsIHdlIGdldCB0byB0aGUgcmVhbCB0aGlzZGlyLgotICBmaWxlPVxgbHMgLWxkIFwiXCRmaWxlXCIgfCAke1NFRH0gLW4gJ3MvLiotPiAvL3AnXGAKKyAgZmlsZT1cYGxzIC1sZCBcIlwkZmlsZVwiIHwgJFNFRCAtbiAncy8uKi0+IC8vcCdcYAogICB3aGlsZSB0ZXN0IC1uIFwiXCRmaWxlXCI7IGRvCi0gICAgZGVzdGRpcj1cYFwkRUNITyBcIlhcJGZpbGVcIiB8IFwkWHNlZCAtZSAncyUvW14vXSpcJCUlJ1xgCisgICAgZGVzdGRpcj1cYFwkRUNITyBcIlwkZmlsZVwiIHwgJFNFRCAncyUvW14vXSpcJCUlJ1xgCiAKICAgICAjIElmIHRoZXJlIHdhcyBhIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gY2hhbmdlIHRoaXNkaXIuCiAgICAgaWYgdGVzdCBcInhcJGRlc3RkaXJcIiAhPSBcInhcJGZpbGVcIjsgdGhlbgpAQCAtMjc4MywzMCArNDAxOSwxMyBAQAogICAgICAgZXNhYwogICAgIGZpCiAKLSAgICBmaWxlPVxgXCRFQ0hPIFwiWFwkZmlsZVwiIHwgXCRYc2VkIC1lICdzJV4uKi8lJSdcYAotICAgIGZpbGU9XGBscyAtbGQgXCJcJHRoaXNkaXIvXCRmaWxlXCIgfCAke1NFRH0gLW4gJ3MvLiotPiAvL3AnXGAKKyAgICBmaWxlPVxgXCRFQ0hPIFwiXCRmaWxlXCIgfCAkU0VEICdzJV4uKi8lJSdcYAorICAgIGZpbGU9XGBscyAtbGQgXCJcJHRoaXNkaXIvXCRmaWxlXCIgfCAkU0VEIC1uICdzLy4qLT4gLy9wJ1xgCiAgIGRvbmUKLSIKLX0KLSMgZW5kOiBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MQotCi0jIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyIFthcmc9bm9dCi0jCi0jIEVtaXQgdGhlIHNlY29uZCBwYXJ0IG9mIGEgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBvbiBzdGRvdXQuCi0jIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIGRlc2NyaXB0aW9uIGFzc29jaWF0ZWQgd2l0aAotIyBmdW5jX2VtaXRfd3JhcHBlcigpLCBiZWxvdy4KLWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyICgpCi17Ci0JZnVuY19lbWl0X3dyYXBwZXJfcGFydDJfYXJnMT1ubwotCWlmIHRlc3QgLW4gIiQxIiA7IHRoZW4KLQkgIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyX2FyZzE9JDEKLQlmaQotCi0JJEVDSE8gIlwKIAogICAjIFVzdWFsbHkgJ25vJywgZXhjZXB0IG9uIGN5Z3dpbi9taW5ndyB3aGVuIGVtYmVkZGVkIGludG8KICAgIyB0aGUgY3dyYXBwZXIuCi0gIFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSPSRmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0Ml9hcmcxCisgIFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSPSRmdW5jX2VtaXRfd3JhcHBlcl9hcmcxCiAgIGlmIHRlc3QgXCJcJFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSXCIgPSBcInllc1wiOyB0aGVuCiAgICAgIyBzcGVjaWFsIGNhc2UgZm9yICcuJwogICAgIGlmIHRlc3QgXCJcJHRoaXNkaXJcIiA9IFwiLlwiOyB0aGVuCkBAIC0yODE0LDcgKzQwMzMsNyBAQAogICAgIGZpCiAgICAgIyByZW1vdmUgLmxpYnMgZnJvbSB0aGlzZGlyCiAgICAgY2FzZSBcIlwkdGhpc2RpclwiIGluCi0gICAgKltcXFxcL10kb2JqZGlyICkgdGhpc2Rpcj1cYFwkRUNITyBcIlhcJHRoaXNkaXJcIiB8IFwkWHNlZCAtZSAncyVbXFxcXC9dW15cXFxcL10qJCUlJ1xgIDs7CisgICAgKltcXFxcL10kb2JqZGlyICkgdGhpc2Rpcj1cYFwkRUNITyBcIlwkdGhpc2RpclwiIHwgJFNFRCAncyVbXFxcXC9dW15cXFxcL10qJCUlJ1xgIDs7CiAgICAgJG9iamRpciApICAgdGhpc2Rpcj0uIDs7CiAgICAgZXNhYwogICBmaQpAQCAtMjg2OSw2ICs0MDg4LDE4IEBACiAKICAgaWYgdGVzdCAtZiBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIjsgdGhlbiIKIAorCSMgZml4dXAgdGhlIGRsbCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8uCisJIworCSMgRml4IHRoZSBETEwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLiAgRG8gdGhpcyBiZWZvcmUgcHJlcGVuZGluZworCSMgdG8gc2hsaWJwYXRoLCBiZWNhdXNlIG9uIFdpbmRvd3MsIGJvdGggYXJlIFBBVEggYW5kIHVuaW5zdGFsbGVkCisJIyBsaWJyYXJpZXMgbXVzdCBjb21lIGZpcnN0LgorCWlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgorCSAgJEVDSE8gIlwKKyAgICAjIEFkZCB0aGUgZGxsIHNlYXJjaCBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIGV4ZWN1dGFibGUgUEFUSAorICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICisiCisJZmkKKwogCSMgRXhwb3J0IG91ciBzaGxpYnBhdGhfdmFyIGlmIHdlIGhhdmUgb25lLgogCWlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzICYmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KIAkgICRFQ0hPICJcCkBAIC0yODc3LDI1NCArNDEwOCwyOSBAQAogCiAgICAgIyBTb21lIHN5c3RlbXMgY2Fubm90IGNvcGUgd2l0aCBjb2xvbi10ZXJtaW5hdGVkICRzaGxpYnBhdGhfdmFyCiAgICAgIyBUaGUgc2Vjb25kIGNvbG9uIGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBidWcgaW4gQmVPUyBSNCBzZWQKLSAgICAkc2hsaWJwYXRoX3Zhcj1cYFwkRUNITyBcIlhcJCRzaGxpYnBhdGhfdmFyXCIgfCBcJFhzZWQgLWUgJ3MvOjoqXCQvLydcYAorICAgICRzaGxpYnBhdGhfdmFyPVxgXCRFQ0hPIFwiXCQkc2hsaWJwYXRoX3ZhclwiIHwgJFNFRCAncy86OipcJC8vJ1xgCiAKICAgICBleHBvcnQgJHNobGlicGF0aF92YXIKICIKIAlmaQogCi0JIyBmaXh1cCB0aGUgZGxsIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4KLQlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KLQkgICRFQ0hPICJcCi0gICAgIyBBZGQgdGhlIGRsbCBzZWFyY2ggcGF0aCBjb21wb25lbnRzIHRvIHRoZSBleGVjdXRhYmxlIFBBVEgKLSAgICBQQVRIPSRkbGxzZWFyY2hwYXRoOlwkUEFUSAotIgotCWZpCi0KIAkkRUNITyAiXAogICAgIGlmIHRlc3QgXCJcJGxpYnRvb2xfZXhlY3V0ZV9tYWdpY1wiICE9IFwiJG1hZ2ljXCI7IHRoZW4KICAgICAgICMgUnVuIHRoZSBhY3R1YWwgcHJvZ3JhbSB3aXRoIG91ciBhcmd1bWVudHMuCi0iCi0JY2FzZSAkaG9zdCBpbgotCSMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24gcGxhaW4gd2luZG93cwotCSotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCi0JICAkRUNITyAiXAotICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9Ci0iCi0JICA7OwotCi0JKikKLQkgICRFQ0hPICJcCi0gICAgICBleGVjIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KLSIKLQkgIDs7Ci0JZXNhYwotCSRFQ0hPICJcCi0gICAgICBcJEVDSE8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJvZ3JhbSBcJCpcIiAxPiYyCi0gICAgICBleGl0IDEKKyAgICAgIGZ1bmNfZXhlY19wcm9ncmFtIFwkezErXCJcJEBcIn0KICAgICBmaQogICBlbHNlCiAgICAgIyBUaGUgcHJvZ3JhbSBkb2Vzbid0IGV4aXN0LgogICAgIFwkRUNITyBcIlwkMDogZXJyb3I6IFxcXGBcJHByb2dkaXIvXCRwcm9ncmFtJyBkb2VzIG5vdCBleGlzdFwiIDE+JjIKICAgICBcJEVDSE8gXCJUaGlzIHNjcmlwdCBpcyBqdXN0IGEgd3JhcHBlciBmb3IgXCRwcm9ncmFtLlwiIDE+JjIKLSAgICAkRUNITyBcIlNlZSB0aGUgJFBBQ0tBR0UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIiAxPiYyCisgICAgXCRFQ0hPIFwiU2VlIHRoZSAkUEFDS0FHRSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlwiIDE+JjIKICAgICBleGl0IDEKICAgZmkKIGZpXAogIgogfQotIyBlbmQ6IGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyCiAKIAotIyBmdW5jX2VtaXRfd3JhcHBlciBbYXJnPW5vXQotIwotIyBFbWl0IGEgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBvbiBzdGRvdXQuCi0jIERvbid0IGRpcmVjdGx5IG9wZW4gYSBmaWxlIGJlY2F1c2Ugd2UgbWF5IHdhbnQgdG8KLSMgaW5jb3Jwb3JhdGUgdGhlIHNjcmlwdCBjb250ZW50cyB3aXRoaW4gYSBjeWd3aW4vbWluZ3cKLSMgd3JhcHBlciBleGVjdXRhYmxlLiAgTXVzdCBPTkxZIGJlIGNhbGxlZCBmcm9tIHdpdGhpbgotIyBmdW5jX21vZGVfbGluayBiZWNhdXNlIGl0IGRlcGVuZHMgb24gYSBudW1iZXIgb2YgdmFyaWFibGVzCi0jIHNldCB0aGVyZWluLgotIwotIyBBUkcgaXMgdGhlIHZhbHVlIHRoYXQgdGhlIFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSCi0jIHZhcmlhYmxlIHdpbGwgdGFrZS4gIElmICd5ZXMnLCB0aGVuIHRoZSBlbWl0dGVkIHNjcmlwdAotIyB3aWxsIGFzc3VtZSB0aGF0IHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggaXQgaXMgc3RvcmVkIGlzCi0jIHRoZSAkb2JqZGlyIGRpcmVjdG9yeS4gIFRoaXMgaXMgYSBjeWd3aW4vbWluZ3ctc3BlY2lmaWMKLSMgYmVoYXZpb3IuCi1mdW5jX2VtaXRfd3JhcHBlciAoKQotewotCWZ1bmNfZW1pdF93cmFwcGVyX2FyZzE9bm8KLQlpZiB0ZXN0IC1uICIkMSIgOyB0aGVuCi0JICBmdW5jX2VtaXRfd3JhcHBlcl9hcmcxPSQxCi0JZmkKLQotCSMgc3BsaXQgdGhpcyB1cCBzbyB0aGF0IGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMKLQkjIGNhbiBjYWxsIGVhY2ggcGFydCBpbmRlcGVuZGVudGx5LgotCWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxICIke2Z1bmNfZW1pdF93cmFwcGVyX2FyZzF9IgotCWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyICIke2Z1bmNfZW1pdF93cmFwcGVyX2FyZzF9IgotfQotCi0KLSMgZnVuY190b19ob3N0X3BhdGggYXJnCi0jCi0jIENvbnZlcnQgcGF0aHMgdG8gaG9zdCBmb3JtYXQgd2hlbiB1c2VkIHdpdGggYnVpbGQgdG9vbHMuCi0jIEludGVuZGVkIGZvciB1c2Ugd2l0aCAibmF0aXZlIiBtaW5ndyAod2hlcmUgbGlidG9vbCBpdHNlbGYKLSMgaXMgcnVubmluZyB1bmRlciB0aGUgbXN5cyBzaGVsbCksIG9yIGluIHRoZSBmb2xsb3dpbmcgY3Jvc3MtCi0jIGJ1aWxkIGVudmlyb25tZW50czoKLSMgICAgJGJ1aWxkICAgICAgICAgICRob3N0Ci0jICAgIG1pbmd3IChtc3lzKSAgICBtaW5ndyAgW2UuZy4gbmF0aXZlXQotIyAgICBjeWd3aW4gICAgICAgICAgbWluZ3cKLSMgICAgKm5peCArIHdpbmUgICAgIG1pbmd3Ci0jIHdoZXJlIHdpbmUgaXMgZXF1aXBwZWQgd2l0aCB0aGUgYHdpbmVwYXRoJyBleGVjdXRhYmxlLgotIyBJbiB0aGUgbmF0aXZlIG1pbmd3IGNhc2UsIHRoZSAobXN5cykgc2hlbGwgYXV0b21hdGljYWxseQotIyBjb252ZXJ0cyBwYXRocyBmb3IgYW55IG5vbi1tc3lzIGFwcGxpY2F0aW9ucyBpdCBsYXVuY2hlcywKLSMgYnV0IHRoYXQgZmFjaWxpdHkgaXNuJ3QgYXZhaWxhYmxlIGZyb20gaW5zaWRlIHRoZSBjd3JhcHBlci4KLSMgU2ltaWxhciBhY2NvbW1vZGF0aW9ucyBhcmUgbmVjZXNzYXJ5IGZvciAkaG9zdCBtaW5ndyBhbmQKLSMgJGJ1aWxkIGN5Z3dpbi4gIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBkb2VzIG5vIGhhcm0gZm9yIG90aGVyCi0jICRob3N0LyRidWlsZCBjb21iaW5hdGlvbnMgbm90IGxpc3RlZCBhYm92ZS4KLSMKLSMgQVJHIGlzIHRoZSBwYXRoIChvbiAkYnVpbGQpIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0bwotIyB0aGUgcHJvcGVyIHJlcHJlc2VudGF0aW9uIGZvciAkaG9zdC4gVGhlIHJlc3VsdCBpcyBzdG9yZWQKLSMgaW4gJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KLWZ1bmNfdG9faG9zdF9wYXRoICgpCi17Ci0gIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0gIGlmIHRlc3QgLW4gIiQxIiA7IHRoZW4KLSAgICBjYXNlICRob3N0IGluCi0gICAgICAqbWluZ3cqICkKLSAgICAgICAgbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJwotICAgICAgICBjYXNlICRidWlsZCBpbgotICAgICAgICAgICptaW5ndyogKSAjIGFjdHVhbGx5LCBtc3lzCi0gICAgICAgICAgICAjIGF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQKLSAgICAgICAgICAgIGx0X3NlZF9zdHJpcF90cmFpbGluZ19zcGFjZXM9InMvWyBdKlwkLy8iCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPWAoIGNtZCAvL2MgZWNobyAiJDEiIHxcCi0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfc3RyaXBfdHJhaWxpbmdfc3BhY2VzIiApIDI+L2Rldi9udWxsIHx8IGVjaG8gIiJgCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiB8XAotICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0gICAgICAgICAgICA7OwotICAgICAgICAgICpjeWd3aW4qICkKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9YGN5Z3BhdGggLXcgIiQxImAKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiIHxcCi0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLSAgICAgICAgICAgIDs7Ci0gICAgICAgICAgKiApCi0gICAgICAgICAgICAjIFVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXMgbm90IGV4aXQgd2l0aCBhIG5vbi16ZXJvCi0gICAgICAgICAgICAjIGVycm9yIGNvZGUsIHNvIHdlIGFyZSBmb3JjZWQgdG8gY2hlY2sgdGhlIGNvbnRlbnRzIG9mCi0gICAgICAgICAgICAjIHN0ZG91dC4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBjb21tYW5kIGlzIG5vdAotICAgICAgICAgICAgIyBmb3VuZCwgdGhlIHNoZWxsIHdpbGwgc2V0IGFuIGV4aXQgY29kZSBvZiAxMjcgYW5kIHByaW50Ci0gICAgICAgICAgICAjICphbiBlcnJvciBtZXNzYWdlKiB0byBzdGRvdXQuIFNvIHdlIG11c3QgY2hlY2sgZm9yIGJvdGgKLSAgICAgICAgICAgICMgZXJyb3IgY29kZSBvZiB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucwotICAgICAgICAgICAgIyB0aGUgb2RkIGNvbnN0cnVjdGlvbjoKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9YHdpbmVwYXRoIC13ICIkMSIgMj4vZGV2L251bGxgCi0gICAgICAgICAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJHtmdW5jX3RvX2hvc3RfcGF0aF90bXAxfSI7IHRoZW4KLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgfFwKLSAgICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICMgQWxsb3cgd2FybmluZyBiZWxvdy4KLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIiCi0gICAgICAgICAgICBmaQotICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IiA7IHRoZW4KLSAgICAgICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIGhvc3QgcGF0aCBjb3JyZXNwb25kaW5nIHRvIgotICAgICAgICAgIGZ1bmNfZXJyb3IgIiAgJyQxJyIKLSAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKLSAgICAgICAgICAjIEZhbGxiYWNrOgotICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0gICAgICAgIGZpCi0gICAgICAgIDs7Ci0gICAgZXNhYwotICBmaQotfQotIyBlbmQ6IGZ1bmNfdG9faG9zdF9wYXRoCi0KLSMgZnVuY190b19ob3N0X3BhdGhsaXN0IGFyZwotIwotIyBDb252ZXJ0IHBhdGhsaXN0cyB0byBob3N0IGZvcm1hdCB3aGVuIHVzZWQgd2l0aCBidWlsZCB0b29scy4KLSMgU2VlIGZ1bmNfdG9faG9zdF9wYXRoKCksIGFib3ZlLiBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHRoZQotIyBmb2xsb3dpbmcgJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9ucyAoYnV0IGRvZXMgbm8gaGFybSBmb3IKLSMgY29tYmluYXRpb25zIG5vdCBsaXN0ZWQgaGVyZSk6Ci0jICAgICRidWlsZCAgICAgICAgICAkaG9zdAotIyAgICBtaW5ndyAobXN5cykgICAgbWluZ3cgIFtlLmcuIG5hdGl2ZV0KLSMgICAgY3lnd2luICAgICAgICAgIG1pbmd3Ci0jICAgICpuaXggKyB3aW5lICAgICBtaW5ndwotIwotIyBQYXRoIHNlcGFyYXRvcnMgYXJlIGFsc28gY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0bwotIyAkaG9zdCBmb3JtYXQuIElmIEFSRyBiZWdpbnMgb3IgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IKLSMgY2hhcmFjdGVyLCBpdCBpcyBwcmVzZXJ2ZWQgKGJ1dCBjb252ZXJ0ZWQgdG8gJGhvc3QgZm9ybWF0KQotIyBvbiBvdXRwdXQuCi0jCi0jIEFSRyBpcyBhIHBhdGhsaXN0IChvbiAkYnVpbGQpIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0bwotIyB0aGUgcHJvcGVyIHJlcHJlc2VudGF0aW9uIG9uICRob3N0LiBUaGUgcmVzdWx0IGlzIHN0b3JlZAotIyBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdC4KLWZ1bmNfdG9faG9zdF9wYXRobGlzdCAoKQotewotICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkMSIKLSAgaWYgdGVzdCAtbiAiJDEiIDsgdGhlbgotICAgIGNhc2UgJGhvc3QgaW4KLSAgICAgICptaW5ndyogKQotICAgICAgICBsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCi0gICAgICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbQotICAgICAgICAjIEFSRy4gbXN5cyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZSwgY3lncGF0aCB0dXJucyB0aGVtCi0gICAgICAgICMgaW50byAnLjsnIGFuZCAnOy4nLCBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCi0gICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAyPSIkMSIKLSAgICAgICAgIyBPbmNlIHNldCBmb3IgdGhpcyBjYWxsLCB0aGlzIHZhcmlhYmxlIHNob3VsZCBub3QgYmUKLSAgICAgICAgIyByZWFzc2lnbmVkLiBJdCBpcyB1c2VkIGluIHRoYSBmYWxsYmFjayBjYXNlLgotICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMT1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAyIiB8XAotICAgICAgICAgICRTRUQgLWUgJ3N8XjoqfHwnIC1lICdzfDoqJHx8J2AKLSAgICAgICAgY2FzZSAkYnVpbGQgaW4KLSAgICAgICAgICAqbWluZ3cqICkgIyBBY3R1YWxseSwgbXN5cy4KLSAgICAgICAgICAgICMgQXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdC4KLSAgICAgICAgICAgIGx0X3NlZF9zdHJpcF90cmFpbGluZ19zcGFjZXM9InMvWyBdKlwkLy8iCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMj1gKCBjbWQgLy9jIGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgfFwKLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9zdHJpcF90cmFpbGluZ19zcGFjZXMiICkgMj4vZGV2L251bGwgfHwgZWNobyAiImAKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMiIgfFwKLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotICAgICAgICAgICAgOzsKLSAgICAgICAgICAqY3lnd2luKiApCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMj1gY3lncGF0aCAtdyAtcCAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxImAKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMiIgfFwKLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotICAgICAgICAgICAgOzsKLSAgICAgICAgICAqICkKLSAgICAgICAgICAgICMgdW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lc24ndCBjb252ZXJ0IHBhdGhsaXN0cwotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iIgotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUz0kSUZTCi0gICAgICAgICAgICBJRlM9OgotICAgICAgICAgICAgZm9yIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIGluICRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSA7IGRvCi0gICAgICAgICAgICAgIElGUz0kZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUwotICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZnVuY190b19ob3N0X3BhdGhsaXN0X2YiIDsgdGhlbgotICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkZnVuY190b19ob3N0X3BhdGhsaXN0X2YiCi0gICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIgOyB0aGVuCi0gICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIgOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0gICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0OyRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0gICAgICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICAgIElGUz06Ci0gICAgICAgICAgICBkb25lCi0gICAgICAgICAgICBJRlM9JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlMKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiIDsgdGhlbgotICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aChzKSBjb3JyZXNwb25kaW5nIHRvIgotICAgICAgICAgIGZ1bmNfZXJyb3IgIiAgJyQxJyIKLSAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKLSAgICAgICAgICAjIEZhbGxiYWNrLiBUaGlzIG1heSBicmVhayBpZiAkMSBjb250YWlucyBET1Mtc3R5bGUgZHJpdmUKLSAgICAgICAgICAjIHNwZWNpZmljYXRpb25zLiBUaGUgZml4IGlzIG5vdCB0byBjb21wbGljYXRlIHRoZSBleHByZXNzaW9uCi0gICAgICAgICAgIyBiZWxvdywgYnV0IGZvciB0aGUgdXNlciB0byBwcm92aWRlIGEgd29ya2luZyB3aW5lIGluc3RhbGxhdGlvbgotICAgICAgICAgICMgd2l0aCB3aW5lcGF0aCBzbyB0aGF0IHBhdGggdHJhbnNsYXRpb24gaW4gdGhlIGNyb3NzLXRvLW1pbmd3Ci0gICAgICAgICAgIyBjYXNlIHdvcmtzIHByb3Blcmx5LgotICAgICAgICAgIGx0X3JlcGxhY2VfcGF0aHNlcF9uaXhfdG9fZG9zPSJzfDp8O3xnIgotICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgfFwKLSAgICAgICAgICAgICRTRUQgLWUgIiRsdF9yZXBsYWNlX3BhdGhzZXBfbml4X3RvX2RvcyJgCi0gICAgICAgIGZpCi0gICAgICAgICMgTm93LCBhZGQgdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9ycyBiYWNrCi0gICAgICAgIGNhc2UgIiQxIiBpbgotICAgICAgICAgIDoqICkgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iOyRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IgotICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgICBjYXNlICIkMSIgaW4KLSAgICAgICAgICAqOiApIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0OyIKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICAgICAgOzsKLSAgICBlc2FjCi0gIGZpCi19Ci0jIGVuZDogZnVuY190b19ob3N0X3BhdGhsaXN0Ci0KICMgZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYwogIyBlbWl0IHRoZSBzb3VyY2UgY29kZSBmb3IgYSB3cmFwcGVyIGV4ZWN1dGFibGUgb24gc3Rkb3V0CiAjIE11c3QgT05MWSBiZSBjYWxsZWQgZnJvbSB3aXRoaW4gZnVuY19tb2RlX2xpbmsgYmVjYXVzZQpAQCAtMzE0MSwzMSArNDE0NywyMyBAQAogCiAgICBUaGlzIHdyYXBwZXIgZXhlY3V0YWJsZSBzaG91bGQgbmV2ZXIgYmUgbW92ZWQgb3V0IG9mIHRoZSBidWlsZCBkaXJlY3RvcnkuCiAgICBJZiBpdCBpcywgaXQgd2lsbCBub3Qgb3BlcmF0ZSBjb3JyZWN0bHkuCi0KLSAgIEN1cnJlbnRseSwgaXQgc2ltcGx5IGV4ZWNzIHRoZSB3cmFwcGVyICpzY3JpcHQqICIkU0hFTEwgJG91dHB1dCIsCi0gICBidXQgY291bGQgZXZlbnR1YWxseSBhYnNvcmIgYWxsIG9mIHRoZSBzY3JpcHRzIGZ1bmN0aW9uYWxpdHkgYW5kCi0gICBleGVjICRvYmpkaXIvJG91dHB1dG5hbWUgZGlyZWN0bHkuCiAqLwogRU9GCiAJICAgIGNhdCA8PCJFT0YiCisjaWZkZWYgX01TQ19WRVIKKyMgZGVmaW5lIF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSAxCisjZW5kaWYKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2lmZGVmIF9NU0NfVkVSCiAjIGluY2x1ZGUgPGRpcmVjdC5oPgogIyBpbmNsdWRlIDxwcm9jZXNzLmg+CiAjIGluY2x1ZGUgPGlvLmg+Ci0jIGRlZmluZSBzZXRtb2RlIF9zZXRtb2RlCiAjZWxzZQogIyBpbmNsdWRlIDx1bmlzdGQuaD4KICMgaW5jbHVkZSA8c3RkaW50Lmg+CiAjIGlmZGVmIF9fQ1lHV0lOX18KICMgIGluY2x1ZGUgPGlvLmg+Ci0jICBkZWZpbmUgSEFWRV9TRVRFTlYKLSMgIGlmZGVmIF9fU1RSSUNUX0FOU0lfXwotY2hhciAqcmVhbHBhdGggKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKLWludCBwdXRlbnYgKGNoYXIgKik7Ci1pbnQgc2V0ZW52IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKLSMgIGVuZGlmCiAjIGVuZGlmCiAjZW5kaWYKICNpbmNsdWRlIDxtYWxsb2MuaD4KQEAgLTMxNzcsNiArNDE3NSw0NCBAQAogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KIAorLyogZGVjbGFyYXRpb25zIG9mIG5vbi1BTlNJIGZ1bmN0aW9ucyAqLworI2lmIGRlZmluZWQoX19NSU5HVzMyX18pCisjIGlmZGVmIF9fU1RSSUNUX0FOU0lfXworaW50IF9wdXRlbnYgKGNvbnN0IGNoYXIgKik7CisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9fQ1lHV0lOX18pCisjIGlmZGVmIF9fU1RSSUNUX0FOU0lfXworY2hhciAqcmVhbHBhdGggKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKK2ludCBwdXRlbnYgKGNoYXIgKik7CitpbnQgc2V0ZW52IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKKyMgZW5kaWYKKy8qICNlbGlmIGRlZmluZWQgKG90aGVyIHBsYXRmb3JtcykgLi4uICovCisjZW5kaWYKKworLyogcG9ydGFiaWxpdHkgZGVmaW5lcywgZXhjbHVkaW5nIHBhdGggaGFuZGxpbmcgbWFjcm9zICovCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyMgZGVmaW5lIHNldG1vZGUgX3NldG1vZGUKKyMgZGVmaW5lIHN0YXQgICAgX3N0YXQKKyMgZGVmaW5lIGNobW9kICAgX2NobW9kCisjIGRlZmluZSBnZXRjd2QgIF9nZXRjd2QKKyMgZGVmaW5lIHB1dGVudiAgX3B1dGVudgorIyBkZWZpbmUgU19JWFVTUiBfU19JRVhFQworIyBpZm5kZWYgX0lOVFBUUl9UX0RFRklORUQKKyMgIGRlZmluZSBfSU5UUFRSX1RfREVGSU5FRAorIyAgZGVmaW5lIGludHB0cl90IGludAorIyBlbmRpZgorI2VsaWYgZGVmaW5lZChfX01JTkdXMzJfXykKKyMgZGVmaW5lIHNldG1vZGUgX3NldG1vZGUKKyMgZGVmaW5lIHN0YXQgICAgX3N0YXQKKyMgZGVmaW5lIGNobW9kICAgX2NobW9kCisjIGRlZmluZSBnZXRjd2QgIF9nZXRjd2QKKyMgZGVmaW5lIHB1dGVudiAgX3B1dGVudgorI2VsaWYgZGVmaW5lZChfX0NZR1dJTl9fKQorIyBkZWZpbmUgSEFWRV9TRVRFTlYKKyMgZGVmaW5lIEZPUEVOX1dCICJ3YiIKKy8qICNlbGlmIGRlZmluZWQgKG90aGVyIHBsYXRmb3JtcykgLi4uICovCisjZW5kaWYKKwogI2lmIGRlZmluZWQoUEFUSF9NQVgpCiAjIGRlZmluZSBMVF9QQVRITUFYIFBBVEhfTUFYCiAjZWxpZiBkZWZpbmVkKE1BWFBBVEhMRU4pCkBAIC0zMTkyLDE0ICs0MjI4LDcgQEAKICMgZGVmaW5lIFNfSVhHUlAgMAogI2VuZGlmCiAKLSNpZmRlZiBfTVNDX1ZFUgotIyBkZWZpbmUgU19JWFVTUiBfU19JRVhFQwotIyBkZWZpbmUgc3RhdCBfc3RhdAotIyBpZm5kZWYgX0lOVFBUUl9UX0RFRklORUQKLSMgIGRlZmluZSBpbnRwdHJfdCBpbnQKLSMgZW5kaWYKLSNlbmRpZgotCisvKiBwYXRoIGhhbmRsaW5nIHBvcnRhYmlsaXR5IG1hY3JvcyAqLwogI2lmbmRlZiBESVJfU0VQQVJBVE9SCiAjIGRlZmluZSBESVJfU0VQQVJBVE9SICcvJwogIyBkZWZpbmUgUEFUSF9TRVBBUkFUT1IgJzonCkBAIC0zMjMwLDEwICs0MjU5LDYgQEAKICMgZGVmaW5lIElTX1BBVEhfU0VQQVJBVE9SKGNoKSAoKGNoKSA9PSBQQVRIX1NFUEFSQVRPUl8yKQogI2VuZGlmIC8qIFBBVEhfU0VQQVJBVE9SXzIgKi8KIAotI2lmZGVmIF9fQ1lHV0lOX18KLSMgZGVmaW5lIEZPUEVOX1dCICJ3YiIKLSNlbmRpZgotCiAjaWZuZGVmIEZPUEVOX1dCCiAjIGRlZmluZSBGT1BFTl9XQiAidyIKICNlbmRpZgpAQCAtMzI0NiwyMiArNDI3MSwxMyBAQAogICBpZiAoc3RhbGUpIHsgZnJlZSAoKHZvaWQgKikgc3RhbGUpOyBzdGFsZSA9IDA7IH0gXAogfSB3aGlsZSAoMCkKIAotI3VuZGVmIExUV1JBUFBFUl9ERUJVR1BSSU5URgotI2lmIGRlZmluZWQgREVCVUdXUkFQUEVSCi0jIGRlZmluZSBMVFdSQVBQRVJfREVCVUdQUklOVEYoYXJncykgbHR3cmFwcGVyX2RlYnVncHJpbnRmIGFyZ3MKLXN0YXRpYyB2b2lkCi1sdHdyYXBwZXJfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotewotICAgIHZhX2xpc3QgYXJnczsKLSAgICB2YV9zdGFydCAoYXJncywgZm10KTsKLSAgICAodm9pZCkgdmZwcmludGYgKHN0ZGVyciwgZm10LCBhcmdzKTsKLSAgICB2YV9lbmQgKGFyZ3MpOwotfQorI2lmIGRlZmluZWQoTFRfREVCVUdXUkFQUEVSKQorc3RhdGljIGludCBsdF9kZWJ1ZyA9IDE7CiAjZWxzZQotIyBkZWZpbmUgTFRXUkFQUEVSX0RFQlVHUFJJTlRGKGFyZ3MpCitzdGF0aWMgaW50IGx0X2RlYnVnID0gMDsKICNlbmRpZgogCi1jb25zdCBjaGFyICpwcm9ncmFtX25hbWUgPSBOVUxMOworY29uc3QgY2hhciAqcHJvZ3JhbV9uYW1lID0gImxpYnRvb2wtd3JhcHBlciI7IC8qIGluIGNhc2UgeHN0cmR1cCBmYWlscyAqLwogCiB2b2lkICp4bWFsbG9jIChzaXplX3QgbnVtKTsKIGNoYXIgKnhzdHJkdXAgKGNvbnN0IGNoYXIgKnN0cmluZyk7CkBAIC0zMjcxLDQxICs0Mjg3LDI3IEBACiBpbnQgbWFrZV9leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKIGludCBjaGVja19leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKIGNoYXIgKnN0cmVuZHphcCAoY2hhciAqc3RyLCBjb25zdCBjaGFyICpwYXQpOwotdm9pZCBsdF9mYXRhbCAoY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKTsKK3ZvaWQgbHRfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Cit2b2lkIGx0X2ZhdGFsIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKTsKK3N0YXRpYyBjb25zdCBjaGFyICpub25udWxsIChjb25zdCBjaGFyICpzKTsKK3N0YXRpYyBjb25zdCBjaGFyICpub25lbXB0eSAoY29uc3QgY2hhciAqcyk7CiB2b2lkIGx0X3NldGVudiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOwogY2hhciAqbHRfZXh0ZW5kX3N0ciAoY29uc3QgY2hhciAqb3JpZ192YWx1ZSwgY29uc3QgY2hhciAqYWRkLCBpbnQgdG9fZW5kKTsKLXZvaWQgbHRfb3B0X3Byb2Nlc3NfZW52X3NldCAoY29uc3QgY2hhciAqYXJnKTsKLXZvaWQgbHRfb3B0X3Byb2Nlc3NfZW52X3ByZXBlbmQgKGNvbnN0IGNoYXIgKmFyZyk7Ci12b2lkIGx0X29wdF9wcm9jZXNzX2Vudl9hcHBlbmQgKGNvbnN0IGNoYXIgKmFyZyk7Ci1pbnQgbHRfc3BsaXRfbmFtZV92YWx1ZSAoY29uc3QgY2hhciAqYXJnLCBjaGFyKiogbmFtZSwgY2hhcioqIHZhbHVlKTsKIHZvaWQgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7CiB2b2lkIGx0X3VwZGF0ZV9saWJfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOwotCi1zdGF0aWMgY29uc3QgY2hhciAqc2NyaXB0X3RleHRfcGFydDEgPQorY2hhciAqKnByZXBhcmVfc3Bhd24gKGNoYXIgKiphcmd2KTsKK3ZvaWQgbHRfZHVtcF9zY3JpcHQgKEZJTEUgKmYpOwogRU9GCiAKLQkgICAgZnVuY19lbWl0X3dyYXBwZXJfcGFydDEgeWVzIHwKLQkgICAgICAgICRTRUQgLWUgJ3MvXChbXFwiXVwpL1xcXDEvZycgXAotCSAgICAgICAgICAgICAtZSAncy9eLyAgIi8nIC1lICdzLyQvXFxuIi8nCi0JICAgIGVjaG8gIjsiCiAJICAgIGNhdCA8PEVPRgotCi1zdGF0aWMgY29uc3QgY2hhciAqc2NyaXB0X3RleHRfcGFydDIgPQotRU9GCi0JICAgIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyIHllcyB8Ci0JICAgICAgICAkU0VEIC1lICdzL1woW1xcIl1cKS9cXFwxL2cnIFwKLQkgICAgICAgICAgICAgLWUgJ3MvXi8gICIvJyAtZSAncy8kL1xcbiIvJwotCSAgICBlY2hvICI7IgotCi0JICAgIGNhdCA8PEVPRgotY29uc3QgY2hhciAqIE1BR0lDX0VYRSA9ICIkbWFnaWNfZXhlIjsKK3ZvbGF0aWxlIGNvbnN0IGNoYXIgKiBNQUdJQ19FWEUgPSAiJG1hZ2ljX2V4ZSI7CiBjb25zdCBjaGFyICogTElCX1BBVEhfVkFSTkFNRSA9ICIkc2hsaWJwYXRoX3ZhciI7CiBFT0YKIAogCSAgICBpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCi0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdCAiJHRlbXBfcnBhdGgiCisgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkdGVtcF9ycGF0aCIKIAkgICAgICBjYXQgPDxFT0YKLWNvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsKK2NvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiOwogRU9GCiAJICAgIGVsc2UKIAkgICAgICBjYXQgPDwiRU9GIgpAQCAtMzMxNCwxMCArNDMxNiwxMCBAQAogCSAgICBmaQogCiAJICAgIGlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgotICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgIiRkbGxzZWFyY2hwYXRoOiIKKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiRkbGxzZWFyY2hwYXRoOiIKIAkgICAgICBjYXQgPDxFT0YKIGNvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQVJOQU1FID0gIlBBVEgiOwotY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOworY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCI7CiBFT0YKIAkgICAgZWxzZQogCSAgICAgIGNhdCA8PCJFT0YiCkBAIC0zMzQwLDI0ICs0MzQyLDEwIEBACiAJICAgIGNhdCA8PCJFT0YiCiAKICNkZWZpbmUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggICAgICAgICAiLS1sdC0iCi0jZGVmaW5lIExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSCAgNQogCi1zdGF0aWMgY29uc3Qgc2l6ZV90IG9wdF9wcmVmaXhfbGVuICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEg7CiBzdGF0aWMgY29uc3QgY2hhciAqbHR3cmFwcGVyX29wdGlvbl9wcmVmaXggPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWDsKLQogc3RhdGljIGNvbnN0IGNoYXIgKmR1bXBzY3JpcHRfb3B0ICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImR1bXAtc2NyaXB0IjsKLQotc3RhdGljIGNvbnN0IHNpemVfdCBlbnZfc2V0X29wdF9sZW4gICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICsgNzsKLXN0YXRpYyBjb25zdCBjaGFyICplbnZfc2V0X29wdCAgICAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJlbnYtc2V0IjsKLSAgLyogYXJndW1lbnQgaXMgcHV0ZW52LXN0eWxlICJmb289YmFyIiwgdmFsdWUgb2YgZm9vIGlzIHNldCB0byBiYXIgKi8KLQotc3RhdGljIGNvbnN0IHNpemVfdCBlbnZfcHJlcGVuZF9vcHRfbGVuID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICsgMTE7Ci1zdGF0aWMgY29uc3QgY2hhciAqZW52X3ByZXBlbmRfb3B0ICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZW52LXByZXBlbmQiOwotICAvKiBhcmd1bWVudCBpcyBwdXRlbnYtc3R5bGUgImZvbz1iYXIiLCBuZXcgdmFsdWUgb2YgZm9vIGlzIGJhciR7Zm9vfSAqLwotCi1zdGF0aWMgY29uc3Qgc2l6ZV90IGVudl9hcHBlbmRfb3B0X2xlbiAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEggKyAxMDsKLXN0YXRpYyBjb25zdCBjaGFyICplbnZfYXBwZW5kX29wdCAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJlbnYtYXBwZW5kIjsKLSAgLyogYXJndW1lbnQgaXMgcHV0ZW52LXN0eWxlICJmb289YmFyIiwgbmV3IHZhbHVlIG9mIGZvbyBpcyAke2Zvb31iYXIgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpkZWJ1Z19vcHQgICAgICAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJkZWJ1ZyI7CiAKIGludAogbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKQEAgLTMzNzQsMTAgKzQzNjIsMTMgQEAKICAgaW50IGk7CiAKICAgcHJvZ3JhbV9uYW1lID0gKGNoYXIgKikgeHN0cmR1cCAoYmFzZV9uYW1lIChhcmd2WzBdKSk7Ci0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgYXJndlswXSAgICAgIDogJXNcbiIsIGFyZ3ZbMF0pKTsKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBwcm9ncmFtX25hbWUgOiAlc1xuIiwgcHJvZ3JhbV9uYW1lKSk7CisgIG5ld2FyZ3ogPSBYTUFMTE9DIChjaGFyICosIGFyZ2MgKyAxKTsKIAotICAvKiB2ZXJ5IHNpbXBsZSBhcmcgcGFyc2luZzsgZG9uJ3Qgd2FudCB0byByZWx5IG9uIGdldG9wdCAqLworICAvKiB2ZXJ5IHNpbXBsZSBhcmcgcGFyc2luZzsgZG9uJ3Qgd2FudCB0byByZWx5IG9uIGdldG9wdAorICAgKiBhbHNvLCBjb3B5IGFsbCBub24gY3dyYXBwZXIgb3B0aW9ucyB0byBuZXdhcmd6LCBleGNlcHQKKyAgICogYXJnelswXSwgd2hpY2ggaXMgaGFuZGxlZCBkaWZmZXJlbnRseQorICAgKi8KKyAgbmV3YXJnYz0wOwogICBmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKQogICAgIHsKICAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGR1bXBzY3JpcHRfb3B0KSA9PSAwKQpAQCAtMzM5MSwyNSArNDM4Miw1NyBAQAogCSAgICAgIGVzYWMKIAogCSAgICBjYXQgPDwiRU9GIgotCSAgcHJpbnRmICgiJXMiLCBzY3JpcHRfdGV4dF9wYXJ0MSk7Ci0JICBwcmludGYgKCIlcyIsIHNjcmlwdF90ZXh0X3BhcnQyKTsKKwkgIGx0X2R1bXBfc2NyaXB0IChzdGRvdXQpOwogCSAgcmV0dXJuIDA7CiAJfQorICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgZGVidWdfb3B0KSA9PSAwKQorCXsKKyAgICAgICAgICBsdF9kZWJ1ZyA9IDE7CisgICAgICAgICAgY29udGludWU7CisJfQorICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgpID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCisgICAgICAgICAgICAgbmFtZXNwYWNlLCBidXQgaXQgaXMgbm90IG9uZSBvZiB0aGUgb25lcyB3ZSBrbm93IGFib3V0IGFuZAorICAgICAgICAgICAgIGhhdmUgYWxyZWFkeSBkZWFsdCB3aXRoLCBhYm92ZSAoaW5sdWRpbmcgZHVtcC1zY3JpcHQpLCB0aGVuCisgICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQorICAgICAgICAgICAgIHRoZXkgYXJlIGFsbG93ZWQgdG8gdXNlIG9wdGlvbnMgaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCisgICAgICAgICAgICAgbmFtZXNwYWNlLiBUaGUgZmlyc3QgdGltZSBhbnkgdXNlciBjb21wbGFpbnMgYWJvdXQgdGhpcywgd2UnbGwKKyAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KKyAgICAgICAgICAgICBvciBhIGNvbmZpZ3VyZS5hYy1zZXR0YWJsZSB2YWx1ZS4KKyAgICAgICAgICAgKi8KKyAgICAgICAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICAgInVucmVjb2duaXplZCAlcyBvcHRpb246ICclcyciLAorICAgICAgICAgICAgICAgICAgICBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgYXJndltpXSk7CisgICAgICAgIH0KKyAgICAgIC8qIG90aGVyd2lzZSAuLi4gKi8KKyAgICAgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IHhzdHJkdXAgKGFyZ3ZbaV0pOwogICAgIH0KKyAgbmV3YXJnelsrK25ld2FyZ2NdID0gTlVMTDsKIAotICBuZXdhcmd6ID0gWE1BTExPQyAoY2hhciAqLCBhcmdjICsgMSk7CitFT0YKKwkgICAgY2F0IDw8RU9GCisgIC8qIFRoZSBHTlUgYmFubmVyIG11c3QgYmUgdGhlIGZpcnN0IG5vbi1lcnJvciBkZWJ1ZyBtZXNzYWdlICovCisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICJsaWJ0b29sIHdyYXBwZXIgKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OXG4iKTsKK0VPRgorCSAgICBjYXQgPDwiRU9GIgorICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIGFyZ3ZbMF06ICVzXG4iLCBhcmd2WzBdKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBwcm9ncmFtX25hbWU6ICVzXG4iLCBwcm9ncmFtX25hbWUpOworCiAgIHRtcF9wYXRoc3BlYyA9IGZpbmRfZXhlY3V0YWJsZSAoYXJndlswXSk7CiAgIGlmICh0bXBfcGF0aHNwZWMgPT0gTlVMTCkKLSAgICBsdF9mYXRhbCAoIkNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmb3VuZCBleGUgKGJlZm9yZSBzeW1saW5rIGNoYXNlKSBhdCA6ICVzXG4iLAotCQkJICB0bXBfcGF0aHNwZWMpKTsKKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiY291bGRuJ3QgZmluZCAlcyIsIGFyZ3ZbMF0pOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorICAgICAgICAgICAgICAgICAgIihtYWluKSBmb3VuZCBleGUgKGJlZm9yZSBzeW1saW5rIGNoYXNlKSBhdDogJXNcbiIsCisJCSAgdG1wX3BhdGhzcGVjKTsKIAogICBhY3R1YWxfY3dyYXBwZXJfcGF0aCA9IGNoYXNlX3N5bWxpbmtzICh0bXBfcGF0aHNwZWMpOwotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZvdW5kIGV4ZSAoYWZ0ZXIgc3ltbGluayBjaGFzZSkgYXQgOiAlc1xuIiwKLQkJCSAgYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKyAgICAgICAgICAgICAgICAgICIobWFpbikgZm91bmQgZXhlIChhZnRlciBzeW1saW5rIGNoYXNlKSBhdDogJXNcbiIsCisJCSAgYWN0dWFsX2N3cmFwcGVyX3BhdGgpOwogICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKIAotICBhY3R1YWxfY3dyYXBwZXJfbmFtZSA9IHhzdHJkdXAoIGJhc2VfbmFtZSAoYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKKyAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB4c3RyZHVwIChiYXNlX25hbWUgKGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7CiAgIHN0cmVuZHphcCAoYWN0dWFsX2N3cmFwcGVyX3BhdGgsIGFjdHVhbF9jd3JhcHBlcl9uYW1lKTsKIAogICAvKiB3cmFwcGVyIG5hbWUgdHJhbnNmb3JtcyAqLwpAQCAtMzQyNyw4ICs0NDUwLDkgQEAKICAgdGFyZ2V0X25hbWUgPSB0bXBfcGF0aHNwZWM7CiAgIHRtcF9wYXRoc3BlYyA9IDA7CiAKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBsaWJ0b29sIHRhcmdldCBuYW1lOiAlc1xuIiwKLQkJCSAgdGFyZ2V0X25hbWUpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAiKG1haW4pIGxpYnRvb2wgdGFyZ2V0IG5hbWU6ICVzXG4iLAorCQkgIHRhcmdldF9uYW1lKTsKIEVPRgogCiAJICAgIGNhdCA8PEVPRgpAQCAtMzQ3OCw4MCArNDUwMiwxOSBAQAogCiAgIGx0X3NldGVudiAoIkJJTl9TSCIsICJ4cGc0Iik7IC8qIGZvciBUcnU2NCAqLwogICBsdF9zZXRlbnYgKCJEVUFMQ0FTRSIsICIxIik7ICAvKiBmb3IgTVNLIHNoICovCi0gIGx0X3VwZGF0ZV9saWJfcGF0aCAoTElCX1BBVEhfVkFSTkFNRSwgTElCX1BBVEhfVkFMVUUpOworICAvKiBVcGRhdGUgdGhlIERMTCBzZWFyY2hwYXRoLiAgRVhFX1BBVEhfVkFMVUUgKCRkbGxzZWFyY2hwYXRoKSBtdXN0CisgICAgIGJlIHByZXBlbmRlZCBiZWZvcmUgKHRoYXQgaXMsIGFwcGVhciBhZnRlcikgTElCX1BBVEhfVkFMVUUgKCR0ZW1wX3JwYXRoKQorICAgICBiZWNhdXNlIG9uIFdpbmRvd3MsIGJvdGggKl9WQVJOQU1FcyBhcmUgUEFUSCBidXQgdW5pbnN0YWxsZWQKKyAgICAgbGlicmFyaWVzIG11c3QgY29tZSBmaXJzdC4gKi8KICAgbHRfdXBkYXRlX2V4ZV9wYXRoIChFWEVfUEFUSF9WQVJOQU1FLCBFWEVfUEFUSF9WQUxVRSk7CisgIGx0X3VwZGF0ZV9saWJfcGF0aCAoTElCX1BBVEhfVkFSTkFNRSwgTElCX1BBVEhfVkFMVUUpOwogCi0gIG5ld2FyZ2M9MDsKLSAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKLSAgICB7Ci0gICAgICBpZiAoc3RybmNtcCAoYXJndltpXSwgZW52X3NldF9vcHQsIGVudl9zZXRfb3B0X2xlbikgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgIGlmIChhcmd2W2ldW2Vudl9zZXRfb3B0X2xlbl0gPT0gJz0nKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjb25zdCBjaGFyICpwID0gYXJndltpXSArIGVudl9zZXRfb3B0X2xlbiArIDE7Ci0gICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9zZXQgKHApOwotICAgICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKGFyZ3ZbaV1bZW52X3NldF9vcHRfbGVuXSA9PSAnXDAnICYmIGkgKyAxIDwgYXJnYykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X3NldCAoYXJndlsrK2ldKTsgLyogZG9uJ3QgY29weSAqLwotICAgICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGx0X2ZhdGFsICgiJXMgbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCIsIGVudl9zZXRfb3B0KTsKLSAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgaWYgKHN0cm5jbXAgKGFyZ3ZbaV0sIGVudl9wcmVwZW5kX29wdCwgZW52X3ByZXBlbmRfb3B0X2xlbikgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgIGlmIChhcmd2W2ldW2Vudl9wcmVwZW5kX29wdF9sZW5dID09ICc9JykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY29uc3QgY2hhciAqcCA9IGFyZ3ZbaV0gKyBlbnZfcHJlcGVuZF9vcHRfbGVuICsgMTsKLSAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X3ByZXBlbmQgKHApOwotICAgICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKGFyZ3ZbaV1bZW52X3ByZXBlbmRfb3B0X2xlbl0gPT0gJ1wwJyAmJiBpICsgMSA8IGFyZ2MpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9wcmVwZW5kIChhcmd2WysraV0pOyAvKiBkb24ndCBjb3B5ICovCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgbHRfZmF0YWwgKCIlcyBtaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50IiwgZW52X3ByZXBlbmRfb3B0KTsKLSAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgaWYgKHN0cm5jbXAgKGFyZ3ZbaV0sIGVudl9hcHBlbmRfb3B0LCBlbnZfYXBwZW5kX29wdF9sZW4pID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoYXJndltpXVtlbnZfYXBwZW5kX29wdF9sZW5dID09ICc9JykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY29uc3QgY2hhciAqcCA9IGFyZ3ZbaV0gKyBlbnZfYXBwZW5kX29wdF9sZW4gKyAxOwotICAgICAgICAgICAgICBsdF9vcHRfcHJvY2Vzc19lbnZfYXBwZW5kIChwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChhcmd2W2ldW2Vudl9hcHBlbmRfb3B0X2xlbl0gPT0gJ1wwJyAmJiBpICsgMSA8IGFyZ2MpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9hcHBlbmQgKGFyZ3ZbKytpXSk7IC8qIGRvbid0IGNvcHkgKi8KLSAgICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBsdF9mYXRhbCAoIiVzIG1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQiLCBlbnZfYXBwZW5kX29wdCk7Ci0gICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgIGlmIChzdHJuY21wIChhcmd2W2ldLCBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgb3B0X3ByZWZpeF9sZW4pID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCi0gICAgICAgICAgICAgbmFtZXNwYWNlLCBidXQgaXQgaXMgbm90IG9uZSBvZiB0aGUgb25lcyB3ZSBrbm93IGFib3V0IGFuZAotICAgICAgICAgICAgIGhhdmUgYWxyZWFkeSBkZWFsdCB3aXRoLCBhYm92ZSAoaW5sdWRpbmcgZHVtcC1zY3JpcHQpLCB0aGVuCi0gICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQotICAgICAgICAgICAgIHRoZXkgYXJlIGFsbG93ZWQgdG8gdXNlIG9wdGlvbnMgaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCi0gICAgICAgICAgICAgbmFtZXNwYWNlLiBUaGUgZmlyc3QgdGltZSBhbnkgdXNlciBjb21wbGFpbnMgYWJvdXQgdGhpcywgd2UnbGwKLSAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KLSAgICAgICAgICAgICBvciBhIGNvbmZpZ3VyZS5hYy1zZXR0YWJsZSB2YWx1ZS4KLSAgICAgICAgICAgKi8KLSAgICAgICAgICBsdF9mYXRhbCAoIlVucmVjb2duaXplZCBvcHRpb24gaW4gJXMgbmFtZXNwYWNlOiAnJXMnIiwKLSAgICAgICAgICAgICAgICAgICAgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIGFyZ3ZbaV0pOwotICAgICAgICB9Ci0gICAgICAvKiBvdGhlcndpc2UgLi4uICovCi0gICAgICBuZXdhcmd6WysrbmV3YXJnY10gPSB4c3RyZHVwIChhcmd2W2ldKTsKLSAgICB9Ci0gIG5ld2FyZ3pbKytuZXdhcmdjXSA9IE5VTEw7Ci0KLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICAgICAoKCIobWFpbikgbHRfYXJndl96ZXJvIDogJXNcbiIsIChsdF9hcmd2X3plcm8gPyBsdF9hcmd2X3plcm8gOiAiPE5VTEw+IikpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBsdF9hcmd2X3plcm86ICVzXG4iLAorCQkgIG5vbm51bGwgKGx0X2FyZ3ZfemVybykpOwogICBmb3IgKGkgPSAwOyBpIDwgbmV3YXJnYzsgaSsrKQogICAgIHsKLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgbmV3YXJnelslZF0gICA6ICVzXG4iLCBpLCAobmV3YXJneltpXSA/IG5ld2FyZ3pbaV0gOiAiPE5VTEw+IikpKTsKKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgbmV3YXJnelslZF06ICVzXG4iLAorCQkgICAgICBpLCBub25udWxsIChuZXdhcmd6W2ldKSk7CiAgICAgfQogCiBFT0YKQEAgLTM1NjAsMTEgKzQ1MjMsMTQgQEAKIAkgICAgICBtaW5ndyopCiAJCWNhdCA8PCJFT0YiCiAgIC8qIGV4ZWN2IGRvZXNuJ3QgYWN0dWFsbHkgd29yayBvbiBtaW5ndyBhcyBleHBlY3RlZCBvbiB1bml4ICovCisgIG5ld2FyZ3ogPSBwcmVwYXJlX3NwYXduIChuZXdhcmd6KTsKICAgcnZhbCA9IF9zcGF3bnYgKF9QX1dBSVQsIGx0X2FyZ3ZfemVybywgKGNvbnN0IGNoYXIgKiBjb25zdCAqKSBuZXdhcmd6KTsKICAgaWYgKHJ2YWwgPT0gLTEpCiAgICAgewogICAgICAgLyogZmFpbGVkIHRvIHN0YXJ0IHByb2Nlc3MgKi8KLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQgXCIlc1wiOiBlcnJubyA9ICVkXG4iLCBsdF9hcmd2X3plcm8sIGVycm5vKSk7CisgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICAgICAiKG1haW4pIGZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0IFwiJXNcIjogJXNcbiIsCisJCSAgICAgIGx0X2FyZ3ZfemVybywgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwogICAgICAgcmV0dXJuIDEyNzsKICAgICB9CiAgIHJldHVybiBydmFsOwpAQCAtMzU4Niw3ICs0NTUyLDcgQEAKIHsKICAgdm9pZCAqcCA9ICh2b2lkICopIG1hbGxvYyAobnVtKTsKICAgaWYgKCFwKQotICAgIGx0X2ZhdGFsICgiTWVtb3J5IGV4aGF1c3RlZCIpOworICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJtZW1vcnkgZXhoYXVzdGVkIik7CiAKICAgcmV0dXJuIHA7CiB9CkBAIC0zNjIwLDggKzQ1ODYsOCBAQAogewogICBzdHJ1Y3Qgc3RhdCBzdDsKIAotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGNoZWNrX2V4ZWN1dGFibGUpICA6ICVzXG4iLAotCQkJICBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihjaGVja19leGVjdXRhYmxlKTogJXNcbiIsCisgICAgICAgICAgICAgICAgICBub25lbXB0eSAocGF0aCkpOwogICBpZiAoKCFwYXRoKSB8fCAoISpwYXRoKSkKICAgICByZXR1cm4gMDsKIApAQCAtMzYzOCw4ICs0NjA0LDggQEAKICAgaW50IHJ2YWwgPSAwOwogICBzdHJ1Y3Qgc3RhdCBzdDsKIAotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1ha2VfZXhlY3V0YWJsZSkgICA6ICVzXG4iLAotCQkJICBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWtlX2V4ZWN1dGFibGUpOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5IChwYXRoKSk7CiAgIGlmICgoIXBhdGgpIHx8ICghKnBhdGgpKQogICAgIHJldHVybiAwOwogCkBAIC0zNjY1LDggKzQ2MzEsOCBAQAogICBpbnQgdG1wX2xlbjsKICAgY2hhciAqY29uY2F0X25hbWU7CiAKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihmaW5kX2V4ZWN1dGFibGUpICAgOiAlc1xuIiwKLQkJCSAgd3JhcHBlciA/ICgqd3JhcHBlciA/IHdyYXBwZXIgOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIoZmluZF9leGVjdXRhYmxlKTogJXNcbiIsCisgICAgICAgICAgICAgICAgICBub25lbXB0eSAod3JhcHBlcikpOwogCiAgIGlmICgod3JhcHBlciA9PSBOVUxMKSB8fCAoKndyYXBwZXIgPT0gJ1wwJykpCiAgICAgcmV0dXJuIE5VTEw7CkBAIC0zNzE5LDcgKzQ2ODUsOCBAQAogCQl7CiAJCSAgLyogZW1wdHkgcGF0aDogY3VycmVudCBkaXJlY3RvcnkgKi8KIAkJICBpZiAoZ2V0Y3dkICh0bXAsIExUX1BBVEhNQVgpID09IE5VTEwpCi0JCSAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKKwkJICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJnZXRjd2QgZmFpbGVkOiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7CiAJCSAgdG1wX2xlbiA9IHN0cmxlbiAodG1wKTsKIAkJICBjb25jYXRfbmFtZSA9CiAJCSAgICBYTUFMTE9DIChjaGFyLCB0bXBfbGVuICsgMSArIHN0cmxlbiAod3JhcHBlcikgKyAxKTsKQEAgLTM3NDQsNyArNDcxMSw4IEBACiAgICAgfQogICAvKiBSZWxhdGl2ZSBwYXRoIHwgbm90IGZvdW5kIGluIHBhdGg6IHByZXBlbmQgY3dkICovCiAgIGlmIChnZXRjd2QgKHRtcCwgTFRfUEFUSE1BWCkgPT0gTlVMTCkKLSAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiZ2V0Y3dkIGZhaWxlZDogJXMiLAorICAgICAgICAgICAgICBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7CiAgIHRtcF9sZW4gPSBzdHJsZW4gKHRtcCk7CiAgIGNvbmNhdF9uYW1lID0gWE1BTExPQyAoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7CiAgIG1lbWNweSAoY29uY2F0X25hbWUsIHRtcCwgdG1wX2xlbik7CkBAIC0zNzcwLDggKzQ3MzgsOSBAQAogICBpbnQgaGFzX3N5bWxpbmtzID0gMDsKICAgd2hpbGUgKHN0cmxlbiAodG1wX3BhdGhzcGVjKSAmJiAhaGFzX3N5bWxpbmtzKQogICAgIHsKLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCJjaGVja2luZyBwYXRoIGNvbXBvbmVudCBmb3Igc3ltbGlua3M6ICVzXG4iLAotCQkJICAgICAgdG1wX3BhdGhzcGVjKSk7CisgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICAgICAiY2hlY2tpbmcgcGF0aCBjb21wb25lbnQgZm9yIHN5bWxpbmtzOiAlc1xuIiwKKwkJICAgICAgdG1wX3BhdGhzcGVjKTsKICAgICAgIGlmIChsc3RhdCAodG1wX3BhdGhzcGVjLCAmcykgPT0gMCkKIAl7CiAJICBpZiAoU19JU0xOSyAocy5zdF9tb2RlKSAhPSAwKQpAQCAtMzc5Myw4ICs0NzYyLDkgQEAKIAl9CiAgICAgICBlbHNlCiAJewotCSAgY2hhciAqZXJyc3RyID0gc3RyZXJyb3IgKGVycm5vKTsKLQkgIGx0X2ZhdGFsICgiRXJyb3IgYWNjZXNzaW5nIGZpbGUgJXMgKCVzKSIsIHRtcF9wYXRoc3BlYywgZXJyc3RyKTsKKwkgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgICAiZXJyb3IgYWNjZXNzaW5nIGZpbGUgXCIlc1wiOiAlcyIsCisJCSAgICB0bXBfcGF0aHNwZWMsIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKIAl9CiAgICAgfQogICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKQEAgLTM4MDcsNyArNDc3Nyw4IEBACiAgIHRtcF9wYXRoc3BlYyA9IHJlYWxwYXRoIChwYXRoc3BlYywgYnVmKTsKICAgaWYgKHRtcF9wYXRoc3BlYyA9PSAwKQogICAgIHsKLSAgICAgIGx0X2ZhdGFsICgiQ291bGQgbm90IGZvbGxvdyBzeW1saW5rcyBmb3IgJXMiLCBwYXRoc3BlYyk7CisgICAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAorCQkiY291bGQgbm90IGZvbGxvdyBzeW1saW5rcyBmb3IgJXMiLCBwYXRoc3BlYyk7CiAgICAgfQogICByZXR1cm4geHN0cmR1cCAodG1wX3BhdGhzcGVjKTsKICNlbmRpZgpAQCAtMzgzMywxMSArNDgwNCwyNSBAQAogICByZXR1cm4gc3RyOwogfQogCit2b2lkCitsdF9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworICB2YV9saXN0IGFyZ3M7CisgIGlmIChsdF9kZWJ1ZykKKyAgICB7CisgICAgICAodm9pZCkgZnByaW50ZiAoc3RkZXJyLCAiJXM6JXM6JWQ6ICIsIHByb2dyYW1fbmFtZSwgZmlsZSwgbGluZSk7CisgICAgICB2YV9zdGFydCAoYXJncywgZm10KTsKKyAgICAgICh2b2lkKSB2ZnByaW50ZiAoc3RkZXJyLCBmbXQsIGFyZ3MpOworICAgICAgdmFfZW5kIChhcmdzKTsKKyAgICB9Cit9CisKIHN0YXRpYyB2b2lkCi1sdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKm1vZGUsCitsdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKmZpbGUsCisJICAgICAgIGludCBsaW5lLCBjb25zdCBjaGFyICptb2RlLAogCSAgICAgICBjb25zdCBjaGFyICptZXNzYWdlLCB2YV9saXN0IGFwKQogewotICBmcHJpbnRmIChzdGRlcnIsICIlczogJXM6ICIsIHByb2dyYW1fbmFtZSwgbW9kZSk7CisgIGZwcmludGYgKHN0ZGVyciwgIiVzOiVzOiVkOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBmaWxlLCBsaW5lLCBtb2RlKTsKICAgdmZwcmludGYgKHN0ZGVyciwgbWVzc2FnZSwgYXApOwogICBmcHJpbnRmIChzdGRlcnIsICIuXG4iKTsKIApAQCAtMzg0NiwyMCArNDgzMSwzMiBAQAogfQogCiB2b2lkCi1sdF9mYXRhbCAoY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKQorbHRfZmF0YWwgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pCiB7CiAgIHZhX2xpc3QgYXA7CiAgIHZhX3N0YXJ0IChhcCwgbWVzc2FnZSk7Ci0gIGx0X2Vycm9yX2NvcmUgKEVYSVRfRkFJTFVSRSwgIkZBVEFMIiwgbWVzc2FnZSwgYXApOworICBsdF9lcnJvcl9jb3JlIChFWElUX0ZBSUxVUkUsIGZpbGUsIGxpbmUsICJGQVRBTCIsIG1lc3NhZ2UsIGFwKTsKICAgdmFfZW5kIChhcCk7CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyICoKK25vbm51bGwgKGNvbnN0IGNoYXIgKnMpCit7CisgIHJldHVybiBzID8gcyA6ICIobnVsbCkiOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqCitub25lbXB0eSAoY29uc3QgY2hhciAqcykKK3sKKyAgcmV0dXJuIChzICYmICEqcykgPyAiKGVtcHR5KSIgOiBub25udWxsIChzKTsKK30KKwogdm9pZAogbHRfc2V0ZW52IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKIHsKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAorICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7CiAgIHsKICNpZmRlZiBIQVZFX1NFVEVOVgogICAgIC8qIGFsd2F5cyBtYWtlIGEgY29weSwgZm9yIGNvbnNpc3RlbmN5IHdpdGggIUhBVkVfU0VURU5WICovCkBAIC0zOTA0LDk1ICs0OTAxLDEyIEBACiAgIHJldHVybiBuZXdfdmFsdWU7CiB9CiAKLWludAotbHRfc3BsaXRfbmFtZV92YWx1ZSAoY29uc3QgY2hhciAqYXJnLCBjaGFyKiogbmFtZSwgY2hhcioqIHZhbHVlKQotewotICBjb25zdCBjaGFyICpwOwotICBpbnQgbGVuOwotICBpZiAoIWFyZyB8fCAhKmFyZykKLSAgICByZXR1cm4gMTsKLQotICBwID0gc3RyY2hyIChhcmcsIChpbnQpJz0nKTsKLQotICBpZiAoIXApCi0gICAgcmV0dXJuIDE7Ci0KLSAgKnZhbHVlID0geHN0cmR1cCAoKytwKTsKLQotICBsZW4gPSBzdHJsZW4gKGFyZykgLSBzdHJsZW4gKCp2YWx1ZSk7Ci0gICpuYW1lID0gWE1BTExPQyAoY2hhciwgbGVuKTsKLSAgc3RybmNweSAoKm5hbWUsIGFyZywgbGVuLTEpOwotICAoKm5hbWUpW2xlbiAtIDFdID0gJ1wwJzsKLQotICByZXR1cm4gMDsKLX0KLQotdm9pZAotbHRfb3B0X3Byb2Nlc3NfZW52X3NldCAoY29uc3QgY2hhciAqYXJnKQotewotICBjaGFyICpuYW1lID0gTlVMTDsKLSAgY2hhciAqdmFsdWUgPSBOVUxMOwotCi0gIGlmIChsdF9zcGxpdF9uYW1lX3ZhbHVlIChhcmcsICZuYW1lLCAmdmFsdWUpICE9IDApCi0gICAgewotICAgICAgWEZSRUUgKG5hbWUpOwotICAgICAgWEZSRUUgKHZhbHVlKTsKLSAgICAgIGx0X2ZhdGFsICgiYmFkIGFyZ3VtZW50IGZvciAlczogJyVzJyIsIGVudl9zZXRfb3B0LCBhcmcpOwotICAgIH0KLQotICBsdF9zZXRlbnYgKG5hbWUsIHZhbHVlKTsKLSAgWEZSRUUgKG5hbWUpOwotICBYRlJFRSAodmFsdWUpOwotfQotCi12b2lkCi1sdF9vcHRfcHJvY2Vzc19lbnZfcHJlcGVuZCAoY29uc3QgY2hhciAqYXJnKQotewotICBjaGFyICpuYW1lID0gTlVMTDsKLSAgY2hhciAqdmFsdWUgPSBOVUxMOwotICBjaGFyICpuZXdfdmFsdWUgPSBOVUxMOwotCi0gIGlmIChsdF9zcGxpdF9uYW1lX3ZhbHVlIChhcmcsICZuYW1lLCAmdmFsdWUpICE9IDApCi0gICAgewotICAgICAgWEZSRUUgKG5hbWUpOwotICAgICAgWEZSRUUgKHZhbHVlKTsKLSAgICAgIGx0X2ZhdGFsICgiYmFkIGFyZ3VtZW50IGZvciAlczogJyVzJyIsIGVudl9wcmVwZW5kX29wdCwgYXJnKTsKLSAgICB9Ci0KLSAgbmV3X3ZhbHVlID0gbHRfZXh0ZW5kX3N0ciAoZ2V0ZW52IChuYW1lKSwgdmFsdWUsIDApOwotICBsdF9zZXRlbnYgKG5hbWUsIG5ld192YWx1ZSk7Ci0gIFhGUkVFIChuZXdfdmFsdWUpOwotICBYRlJFRSAobmFtZSk7Ci0gIFhGUkVFICh2YWx1ZSk7Ci19Ci0KLXZvaWQKLWx0X29wdF9wcm9jZXNzX2Vudl9hcHBlbmQgKGNvbnN0IGNoYXIgKmFyZykKLXsKLSAgY2hhciAqbmFtZSA9IE5VTEw7Ci0gIGNoYXIgKnZhbHVlID0gTlVMTDsKLSAgY2hhciAqbmV3X3ZhbHVlID0gTlVMTDsKLQotICBpZiAobHRfc3BsaXRfbmFtZV92YWx1ZSAoYXJnLCAmbmFtZSwgJnZhbHVlKSAhPSAwKQotICAgIHsKLSAgICAgIFhGUkVFIChuYW1lKTsKLSAgICAgIFhGUkVFICh2YWx1ZSk7Ci0gICAgICBsdF9mYXRhbCAoImJhZCBhcmd1bWVudCBmb3IgJXM6ICclcyciLCBlbnZfYXBwZW5kX29wdCwgYXJnKTsKLSAgICB9Ci0KLSAgbmV3X3ZhbHVlID0gbHRfZXh0ZW5kX3N0ciAoZ2V0ZW52IChuYW1lKSwgdmFsdWUsIDEpOwotICBsdF9zZXRlbnYgKG5hbWUsIG5ld192YWx1ZSk7Ci0gIFhGUkVFIChuZXdfdmFsdWUpOwotICBYRlJFRSAobmFtZSk7Ci0gIFhGUkVFICh2YWx1ZSk7Ci19Ci0KIHZvaWQKIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCiB7Ci0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfdXBkYXRlX2V4ZV9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAiKGx0X3VwZGF0ZV9leGVfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAorICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7CiAKICAgaWYgKG5hbWUgJiYgKm5hbWUgJiYgdmFsdWUgJiYgKnZhbHVlKQogICAgIHsKQEAgLTQwMTEsOSArNDkyNSw5IEBACiB2b2lkCiBsdF91cGRhdGVfbGliX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQogewotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3VwZGF0ZV9saWJfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgIihsdF91cGRhdGVfbGliX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOwogCiAgIGlmIChuYW1lICYmICpuYW1lICYmIHZhbHVlICYmICp2YWx1ZSkKICAgICB7CkBAIC00MDIzLDExICs0OTM3LDE1OCBAQAogICAgIH0KIH0KIAorRU9GCisJICAgIGNhc2UgJGhvc3Rfb3MgaW4KKwkgICAgICBtaW5ndyopCisJCWNhdCA8PCJFT0YiCiAKKy8qIFByZXBhcmVzIGFuIGFyZ3VtZW50IHZlY3RvciBiZWZvcmUgY2FsbGluZyBzcGF3bigpLgorICAgTm90ZSB0aGF0IHNwYXduKCkgZG9lcyBub3QgYnkgaXRzZWxmIGNhbGwgdGhlIGNvbW1hbmQgaW50ZXJwcmV0ZXIKKyAgICAgKGdldGVudiAoIkNPTVNQRUMiKSAhPSBOVUxMID8gZ2V0ZW52ICgiQ09NU1BFQyIpIDoKKyAgICAgICh7IE9TVkVSU0lPTklORk8gdjsgdi5kd09TVmVyc2lvbkluZm9TaXplID0gc2l6ZW9mKE9TVkVSU0lPTklORk8pOworICAgICAgICAgR2V0VmVyc2lvbkV4KCZ2KTsKKyAgICAgICAgIHYuZHdQbGF0Zm9ybUlkID09IFZFUl9QTEFURk9STV9XSU4zMl9OVDsKKyAgICAgIH0pID8gImNtZC5leGUiIDogImNvbW1hbmQuY29tIikuCisgICBJbnN0ZWFkIGl0IHNpbXBseSBjb25jYXRlbmF0ZXMgdGhlIGFyZ3VtZW50cywgc2VwYXJhdGVkIGJ5ICcgJywgYW5kIGNhbGxzCisgICBDcmVhdGVQcm9jZXNzKCkuICBXZSBtdXN0IHF1b3RlIHRoZSBhcmd1bWVudHMgc2luY2UgV2luMzIgQ3JlYXRlUHJvY2VzcygpCisgICBpbnRlcnByZXRzIGNoYXJhY3RlcnMgbGlrZSAnICcsICdcdCcsICdcXCcsICciJyAoYnV0IG5vdCAnPCcgYW5kICc+JykgaW4gYQorICAgc3BlY2lhbCB3YXk6CisgICAtIFNwYWNlIGFuZCB0YWIgYXJlIGludGVycHJldGVkIGFzIGRlbGltaXRlcnMuIFRoZXkgYXJlIG5vdCB0cmVhdGVkIGFzCisgICAgIGRlbGltaXRlcnMgaWYgdGhleSBhcmUgc3Vycm91bmRlZCBieSBkb3VibGUgcXVvdGVzOiAiLi4uIi4KKyAgIC0gVW5lc2NhcGVkIGRvdWJsZSBxdW90ZXMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgaW5wdXQuIFRoZWlyIG9ubHkgZWZmZWN0IGlzCisgICAgIHRoYXQgd2l0aGluIGRvdWJsZSBxdW90ZXMsIHNwYWNlIGFuZCB0YWIgYXJlIHRyZWF0ZWQgbGlrZSBub3JtYWwKKyAgICAgY2hhcmFjdGVycy4KKyAgIC0gQmFja3NsYXNoZXMgbm90IGZvbGxvd2VkIGJ5IGRvdWJsZSBxdW90ZXMgYXJlIG5vdCBzcGVjaWFsLgorICAgLSBCdXQgMipuKzEgYmFja3NsYXNoZXMgZm9sbG93ZWQgYnkgYSBkb3VibGUgcXVvdGUgYmVjb21lCisgICAgIG4gYmFja3NsYXNoZXMgZm9sbG93ZWQgYnkgYSBkb3VibGUgcXVvdGUgKG4gPj0gMCk6CisgICAgICAgXCIgLT4gIgorICAgICAgIFxcXCIgLT4gXCIKKyAgICAgICBcXFxcXCIgLT4gXFwiCisgKi8KKyNkZWZpbmUgU0hFTExfU1BFQ0lBTF9DSEFSUyAiXCJcXCBcMDAxXDAwMlwwMDNcMDA0XDAwNVwwMDZcMDA3XDAxMFwwMTFcMDEyXDAxM1wwMTRcMDE1XDAxNlwwMTdcMDIwXDAyMVwwMjJcMDIzXDAyNFwwMjVcMDI2XDAyN1wwMzBcMDMxXDAzMlwwMzNcMDM0XDAzNVwwMzZcMDM3IgorI2RlZmluZSBTSEVMTF9TUEFDRV9DSEFSUyAiIFwwMDFcMDAyXDAwM1wwMDRcMDA1XDAwNlwwMDdcMDEwXDAxMVwwMTJcMDEzXDAxNFwwMTVcMDE2XDAxN1wwMjBcMDIxXDAyMlwwMjNcMDI0XDAyNVwwMjZcMDI3XDAzMFwwMzFcMDMyXDAzM1wwMzRcMDM1XDAzNlwwMzciCitjaGFyICoqCitwcmVwYXJlX3NwYXduIChjaGFyICoqYXJndikKK3sKKyAgc2l6ZV90IGFyZ2M7CisgIGNoYXIgKipuZXdfYXJndjsKKyAgc2l6ZV90IGk7CisKKyAgLyogQ291bnQgbnVtYmVyIG9mIGFyZ3VtZW50cy4gICovCisgIGZvciAoYXJnYyA9IDA7IGFyZ3ZbYXJnY10gIT0gTlVMTDsgYXJnYysrKQorICAgIDsKKworICAvKiBBbGxvY2F0ZSBuZXcgYXJndW1lbnQgdmVjdG9yLiAgKi8KKyAgbmV3X2FyZ3YgPSBYTUFMTE9DIChjaGFyICosIGFyZ2MgKyAxKTsKKworICAvKiBQdXQgcXVvdGVkIGFyZ3VtZW50cyBpbnRvIHRoZSBuZXcgYXJndW1lbnQgdmVjdG9yLiAgKi8KKyAgZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykKKyAgICB7CisgICAgICBjb25zdCBjaGFyICpzdHJpbmcgPSBhcmd2W2ldOworCisgICAgICBpZiAoc3RyaW5nWzBdID09ICdcMCcpCisJbmV3X2FyZ3ZbaV0gPSB4c3RyZHVwICgiXCJcIiIpOworICAgICAgZWxzZSBpZiAoc3RycGJyayAoc3RyaW5nLCBTSEVMTF9TUEVDSUFMX0NIQVJTKSAhPSBOVUxMKQorCXsKKwkgIGludCBxdW90ZV9hcm91bmQgPSAoc3RycGJyayAoc3RyaW5nLCBTSEVMTF9TUEFDRV9DSEFSUykgIT0gTlVMTCk7CisJICBzaXplX3QgbGVuZ3RoOworCSAgdW5zaWduZWQgaW50IGJhY2tzbGFzaGVzOworCSAgY29uc3QgY2hhciAqczsKKwkgIGNoYXIgKnF1b3RlZF9zdHJpbmc7CisJICBjaGFyICpwOworCisJICBsZW5ndGggPSAwOworCSAgYmFja3NsYXNoZXMgPSAwOworCSAgaWYgKHF1b3RlX2Fyb3VuZCkKKwkgICAgbGVuZ3RoKys7CisJICBmb3IgKHMgPSBzdHJpbmc7ICpzICE9ICdcMCc7IHMrKykKKwkgICAgeworCSAgICAgIGNoYXIgYyA9ICpzOworCSAgICAgIGlmIChjID09ICciJykKKwkJbGVuZ3RoICs9IGJhY2tzbGFzaGVzICsgMTsKKwkgICAgICBsZW5ndGgrKzsKKwkgICAgICBpZiAoYyA9PSAnXFwnKQorCQliYWNrc2xhc2hlcysrOworCSAgICAgIGVsc2UKKwkJYmFja3NsYXNoZXMgPSAwOworCSAgICB9CisJICBpZiAocXVvdGVfYXJvdW5kKQorCSAgICBsZW5ndGggKz0gYmFja3NsYXNoZXMgKyAxOworCisJICBxdW90ZWRfc3RyaW5nID0gWE1BTExPQyAoY2hhciwgbGVuZ3RoICsgMSk7CisKKwkgIHAgPSBxdW90ZWRfc3RyaW5nOworCSAgYmFja3NsYXNoZXMgPSAwOworCSAgaWYgKHF1b3RlX2Fyb3VuZCkKKwkgICAgKnArKyA9ICciJzsKKwkgIGZvciAocyA9IHN0cmluZzsgKnMgIT0gJ1wwJzsgcysrKQorCSAgICB7CisJICAgICAgY2hhciBjID0gKnM7CisJICAgICAgaWYgKGMgPT0gJyInKQorCQl7CisJCSAgdW5zaWduZWQgaW50IGo7CisJCSAgZm9yIChqID0gYmFja3NsYXNoZXMgKyAxOyBqID4gMDsgai0tKQorCQkgICAgKnArKyA9ICdcXCc7CisJCX0KKwkgICAgICAqcCsrID0gYzsKKwkgICAgICBpZiAoYyA9PSAnXFwnKQorCQliYWNrc2xhc2hlcysrOworCSAgICAgIGVsc2UKKwkJYmFja3NsYXNoZXMgPSAwOworCSAgICB9CisJICBpZiAocXVvdGVfYXJvdW5kKQorCSAgICB7CisJICAgICAgdW5zaWduZWQgaW50IGo7CisJICAgICAgZm9yIChqID0gYmFja3NsYXNoZXM7IGogPiAwOyBqLS0pCisJCSpwKysgPSAnXFwnOworCSAgICAgICpwKysgPSAnIic7CisJICAgIH0KKwkgICpwID0gJ1wwJzsKKworCSAgbmV3X2FyZ3ZbaV0gPSBxdW90ZWRfc3RyaW5nOworCX0KKyAgICAgIGVsc2UKKwluZXdfYXJndltpXSA9IChjaGFyICopIHN0cmluZzsKKyAgICB9CisgIG5ld19hcmd2W2FyZ2NdID0gTlVMTDsKKworICByZXR1cm4gbmV3X2FyZ3Y7Cit9CitFT0YKKwkJOzsKKwkgICAgZXNhYworCisgICAgICAgICAgICBjYXQgPDwiRU9GIgordm9pZCBsdF9kdW1wX3NjcmlwdCAoRklMRSogZikKK3sKK0VPRgorCSAgICBmdW5jX2VtaXRfd3JhcHBlciB5ZXMgfAorCSAgICAgICRTRUQgLW4gLWUgJworcy9eXCguXHs3OVx9XClcKC4uKlwpL1wxXAorXDIvCitoCitzL1woW1xcIl1cKS9cXFwxL2cKK3MvJC9cXG4vCitzL1woW15cbl0qXCkuKi8gIGZwdXRzICgiXDEiLCBmKTsvcAorZworRCcKKyAgICAgICAgICAgIGNhdCA8PCJFT0YiCit9CiBFT0YKIH0KICMgZW5kOiBmdW5jX2VtaXRfY3dyYXBwZXJleGVfc3JjCiAKKyMgZnVuY193aW4zMl9pbXBvcnRfbGliX3AgQVJHCisjIFRydWUgaWYgQVJHIGlzIGFuIGltcG9ydCBsaWIsIGFzIGluZGljYXRlZCBieSAkZmlsZV9tYWdpY19jbWQKK2Z1bmNfd2luMzJfaW1wb3J0X2xpYl9wICgpCit7CisgICAgJG9wdF9kZWJ1ZworICAgIGNhc2UgYGV2YWwgJGZpbGVfbWFnaWNfY21kIFwiXCQxXCIgMj4vZGV2L251bGwgfCAkU0VEIC1lIDEwcWAgaW4KKyAgICAqaW1wb3J0KikgOiA7OworICAgICopIGZhbHNlIDs7CisgICAgZXNhYworfQorCiAjIGZ1bmNfbW9kZV9saW5rIGFyZy4uLgogZnVuY19tb2RlX2xpbmsgKCkKIHsKQEAgLTQwNzIsNiArNTEzMyw3IEBACiAgICAgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9CiAKICAgICBhdm9pZF92ZXJzaW9uPW5vCisgICAgYmluZGlyPQogICAgIGRsZmlsZXM9CiAgICAgZGxwcmVmaWxlcz0KICAgICBkbHNlbGY9bm8KQEAgLTQxNjQsNiArNTIyNiwxMSBAQAogCWVzYWMKIAogCWNhc2UgJHByZXYgaW4KKwliaW5kaXIpCisJICBiaW5kaXI9IiRhcmciCisJICBwcmV2PQorCSAgY29udGludWUKKwkgIDs7CiAJZGxmaWxlc3xkbHByZWZpbGVzKQogCSAgaWYgdGVzdCAiJHByZWxvYWQiID0gbm87IHRoZW4KIAkgICAgIyBBZGQgdGhlIHN5bWJvbCBvYmplY3QgaW50byB0aGUgbGlua2luZyBjb21tYW5kcy4KQEAgLTQxOTUsOSArNTI2Miw5IEBACiAJICAgIDs7CiAJICAqKQogCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCi0JICAgICAgZGxmaWxlcz0iJGRsZmlsZXMgJGFyZyIKKwkgICAgICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGFyZyIKIAkgICAgZWxzZQotCSAgICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRhcmciCisJICAgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRhcmciCiAJICAgIGZpCiAJICAgIHByZXY9CiAJICAgIGNvbnRpbnVlCkBAIC00MjIxLDcgKzUyODgsNyBAQAogCSAgICAqLSotZGFyd2luKikKIAkgICAgICBjYXNlICIkZGVwbGlicyAiIGluCiAJCSoiICRxYXJnLmx0ZnJhbWV3b3JrICIqKSA7OwotCQkqKSBkZXBsaWJzPSIkZGVwbGlicyAkcWFyZy5sdGZyYW1ld29yayIgIyB0aGlzIGlzIGZpeGVkIGxhdGVyCisJCSopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkcWFyZy5sdGZyYW1ld29yayIgIyB0aGlzIGlzIGZpeGVkIGxhdGVyCiAJCSAgIDs7CiAJICAgICAgZXNhYwogCSAgICAgIDs7CkBAIC00MjQwLDcgKzUzMDcsNyBAQAogCSAgICBtb3JlYXJncz0KIAkgICAgZm9yIGZpbCBpbiBgY2F0ICIkc2F2ZV9hcmciYAogCSAgICBkbwotIwkgICAgICBtb3JlYXJncz0iJG1vcmVhcmdzICRmaWwiCisjCSAgICAgIGZ1bmNfYXBwZW5kIG1vcmVhcmdzICIgJGZpbCIKIAkgICAgICBhcmc9JGZpbAogCSAgICAgICMgQSBsaWJ0b29sLWNvbnRyb2xsZWQgb2JqZWN0LgogCkBAIC00MjY5LDcgKzUzMzYsNyBAQAogCiAJCSAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgogCQkgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiA9IHllczsgdGhlbgotCQkgICAgICBkbGZpbGVzPSIkZGxmaWxlcyAkcGljX29iamVjdCIKKwkJICAgICAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRwaWNfb2JqZWN0IgogCQkgICAgICBwcmV2PQogCQkgICAgICBjb250aW51ZQogCQkgICAgZWxzZQpAQCAtNDI4MSw3ICs1MzQ4LDcgQEAKIAkJICAjIENIRUNLIE1FOiAgSSB0aGluayBJIGJ1c3RlZCB0aGlzLiAgLU9zc2FtYQogCQkgIGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KIAkJICAgICMgUHJlbG9hZCB0aGUgb2xkLXN0eWxlIG9iamVjdC4KLQkJICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRwaWNfb2JqZWN0IgorCQkgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRwaWNfb2JqZWN0IgogCQkgICAgcHJldj0KIAkJICBmaQogCkBAIC00MzUxLDEyICs1NDE4LDEyIEBACiAJICBpZiB0ZXN0ICIkcHJldiIgPSBycGF0aDsgdGhlbgogCSAgICBjYXNlICIkcnBhdGggIiBpbgogCSAgICAqIiAkYXJnICIqKSA7OwotCSAgICAqKSBycGF0aD0iJHJwYXRoICRhcmciIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGFyZyIgOzsKIAkgICAgZXNhYwogCSAgZWxzZQogCSAgICBjYXNlICIkeHJwYXRoICIgaW4KIAkgICAgKiIgJGFyZyAiKikgOzsKLQkgICAgKikgeHJwYXRoPSIkeHJwYXRoICRhcmciIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRhcmciIDs7CiAJICAgIGVzYWMKIAkgIGZpCiAJICBwcmV2PQpAQCAtNDM2OCwyOCArNTQzNSwyOCBAQAogCSAgY29udGludWUKIAkgIDs7CiAJd2VhaykKLQkgIHdlYWtfbGlicz0iJHdlYWtfbGlicyAkYXJnIgorCSAgZnVuY19hcHBlbmQgd2Vha19saWJzICIgJGFyZyIKIAkgIHByZXY9CiAJICBjb250aW51ZQogCSAgOzsKIAl4Y2NsaW5rZXIpCi0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRxYXJnIgorCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJHFhcmciCisJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRxYXJnIgogCSAgcHJldj0KIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRxYXJnIgogCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRxYXJnIgogCSAgY29udGludWUKIAkgIDs7CiAJeGNvbXBpbGVyKQotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkcWFyZyIKKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHFhcmciCiAJICBwcmV2PQogCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHFhcmciCiAJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHFhcmciCiAJICBjb250aW51ZQogCSAgOzsKIAl4bGlua2VyKQotCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRxYXJnIgotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkcWFyZyIKKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRxYXJnIgorCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkd2wkcWFyZyIKIAkgIHByZXY9CiAJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkd2wkcWFyZyIKIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkd2wkcWFyZyIKQEAgLTQ0MjUsNiArNTQ5MiwxMSBAQAogCWNvbnRpbnVlCiAJOzsKIAorICAgICAgLWJpbmRpcikKKwlwcmV2PWJpbmRpcgorCWNvbnRpbnVlCisJOzsKKwogICAgICAgLWRsb3BlbikKIAlwcmV2PWRsZmlsZXMKIAljb250aW51ZQpAQCAtNDQ3NSwxNSArNTU0NywxNiBAQAogCTs7CiAKICAgICAgIC1MKikKLQlmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkYXJnIgotCWRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0JaWYgdGVzdCAteiAiJGRpciI7IHRoZW4KKwlmdW5jX3N0cmlwbmFtZSAiLUwiICcnICIkYXJnIgorCWlmIHRlc3QgLXogIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiOyB0aGVuCiAJICBpZiB0ZXN0ICIkIyIgLWd0IDA7IHRoZW4KIAkgICAgZnVuY19mYXRhbF9lcnJvciAicmVxdWlyZSBubyBzcGFjZSBiZXR3ZWVuIFxgLUwnIGFuZCBcYCQxJyIKIAkgIGVsc2UKIAkgICAgZnVuY19mYXRhbF9lcnJvciAibmVlZCBwYXRoIGZvciBcYC1MJyBvcHRpb24iCiAJICBmaQogCWZpCisJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJZGlyPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKIAkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KIAljYXNlICRkaXIgaW4KIAlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIDs7CkBAIC00NDk1LDI0ICs1NTY4LDMwIEBACiAJICA7OwogCWVzYWMKIAljYXNlICIkZGVwbGlicyAiIGluCi0JKiIgLUwkZGlyICIqKSA7OworCSoiIC1MJGRpciAiKiB8ICoiICRhcmcgIiopCisJICAjIFdpbGwgb25seSBoYXBwZW4gZm9yIGFic29sdXRlIG9yIHN5c3Jvb3QgYXJndW1lbnRzCisJICA7OwogCSopCi0JICBkZXBsaWJzPSIkZGVwbGlicyAtTCRkaXIiCi0JICBsaWJfc2VhcmNoX3BhdGg9IiRsaWJfc2VhcmNoX3BhdGggJGRpciIKKwkgICMgUHJlc2VydmUgc3lzcm9vdCwgYnV0IG5ldmVyIGluY2x1ZGUgcmVsYXRpdmUgZGlyZWN0b3JpZXMKKwkgIGNhc2UgJGRpciBpbgorCSAgICBbXFwvXSogfCBbQS1aYS16XTpbXFwvXSogfCA9KikgZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAtTCRkaXIiIDs7CisJICBlc2FjCisJICBmdW5jX2FwcGVuZCBsaWJfc2VhcmNoX3BhdGggIiAkZGlyIgogCSAgOzsKIAllc2FjCiAJY2FzZSAkaG9zdCBpbgogCSotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1vczIqIHwgKi1jZWdjYyopCi0JICB0ZXN0YmluZGlyPWAkRUNITyAiWCRkaXIiIHwgJFhzZWQgLWUgJ3MqL2xpYiQqL2JpbionYAorCSAgdGVzdGJpbmRpcj1gJEVDSE8gIiRkaXIiIHwgJFNFRCAncyovbGliJCovYmluKidgCiAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KIAkgICoiOiRkaXI6IiopIDs7CiAJICA6OikgZGxsc2VhcmNocGF0aD0kZGlyOzsKLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiRkaXIiOzsKKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokZGlyIjs7CiAJICBlc2FjCiAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KIAkgICoiOiR0ZXN0YmluZGlyOiIqKSA7OwogCSAgOjopIGRsbHNlYXJjaHBhdGg9JHRlc3RiaW5kaXI7OwotCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JHRlc3RiaW5kaXIiOzsKKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokdGVzdGJpbmRpciI7OwogCSAgZXNhYwogCSAgOzsKIAllc2FjCkBAIC00NTIyLDcgKzU2MDEsNyBAQAogICAgICAgLWwqKQogCWlmIHRlc3QgIlgkYXJnIiA9ICJYLWxjIiB8fCB0ZXN0ICJYJGFyZyIgPSAiWC1sbSI7IHRoZW4KIAkgIGNhc2UgJGhvc3QgaW4KLQkgICotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1iZW9zKiB8ICotY2VnY2MqKQorCSAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLWJlb3MqIHwgKi1jZWdjYyogfCAqLSotaGFpa3UqKQogCSAgICAjIFRoZXNlIHN5c3RlbXMgZG9uJ3QgYWN0dWFsbHkgaGF2ZSBhIEMgb3IgbWF0aCBsaWJyYXJ5IChhcyBzdWNoKQogCSAgICBjb250aW51ZQogCSAgICA7OwpAQCAtNDUzNiw3ICs1NjE1LDcgQEAKIAkgICAgOzsKIAkgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKIAkgICAgIyBSaGFwc29keSBDIGFuZCBtYXRoIGxpYnJhcmllcyBhcmUgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKLQkgICAgZGVwbGlicz0iJGRlcGxpYnMgU3lzdGVtLmx0ZnJhbWV3b3JrIgorCSAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgU3lzdGVtLmx0ZnJhbWV3b3JrIgogCSAgICBjb250aW51ZQogCSAgICA7OwogCSAgKi0qLXNjbzMuMnY1KiB8ICotKi1zY281djYqKQpAQCAtNDU1Niw3ICs1NjM1LDcgQEAKIAkgICA7OwogCSBlc2FjCiAJZmkKLQlkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgorCWZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIgogCWNvbnRpbnVlCiAJOzsKIApAQCAtNDU2OCwyMSArNTY0NywyMiBAQAogICAgICAgIyBUcnU2NCBVTklYIHVzZXMgLW1vZGVsIFthcmddIHRvIGRldGVybWluZSB0aGUgbGF5b3V0IG9mIEMrKwogICAgICAgIyBjbGFzc2VzLCBuYW1lIG1hbmdsaW5nLCBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nLgogICAgICAgIyBEYXJ3aW4gdXNlcyB0aGUgLWFyY2ggZmxhZyB0byBkZXRlcm1pbmUgb3V0cHV0IGFyY2hpdGVjdHVyZS4KLSAgICAgIC1tb2RlbHwtYXJjaHwtaXN5c3Jvb3QpCi0JY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorICAgICAgLW1vZGVsfC1hcmNofC1pc3lzcm9vdHwtLXN5c3Jvb3QpCisJZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgogCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCiAJZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCiAJcHJldj14Y29tcGlsZXIKIAljb250aW51ZQogCTs7CiAKLSAgICAgIC1tdHwtbXRocmVhZHN8LWt0aHJlYWR8LUt0aHJlYWR8LXB0aHJlYWR8LXB0aHJlYWRzfC0tdGhyZWFkLXNhZmV8LXRocmVhZHMpCi0JY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorICAgICAgLW10fC1tdGhyZWFkc3wta3RocmVhZHwtS3RocmVhZHwtcHRocmVhZHwtcHRocmVhZHN8LS10aHJlYWQtc2FmZSBcCisgICAgICB8LXRocmVhZHN8LWZvcGVubXB8LW9wZW5tcHwtbXB8LXhvcGVubXB8LW9tcHwtcXNtcD0qKQorCWZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGFyZyIKIAlmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgogCWZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgogCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCiAJICAgICoiICRhcmcgIiopIDs7Ci0JICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRhcmciIDs7CisJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRhcmciIDs7CiAJZXNhYwogCWNvbnRpbnVlCiAJOzsKQEAgLTQ2NDksMTMgKzU3MjksMTcgQEAKIAkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KIAljYXNlICRkaXIgaW4KIAlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIDs7CisJPSopCisJICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRkaXIiCisJICBkaXI9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0CisJICA7OwogCSopCiAJICBmdW5jX2ZhdGFsX2Vycm9yICJvbmx5IGFic29sdXRlIHJ1bi1wYXRocyBhcmUgYWxsb3dlZCIKIAkgIDs7CiAJZXNhYwogCWNhc2UgIiR4cnBhdGggIiBpbgogCSoiICRkaXIgIiopIDs7Ci0JKikgeHJwYXRoPSIkeHJwYXRoICRkaXIiIDs7CisJKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJGRpciIgOzsKIAllc2FjCiAJY29udGludWUKIAk7OwpAQCAtNDcwOCw4ICs1NzkyLDggQEAKIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KIAkgIElGUz0iJHNhdmVfaWZzIgogICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmbGFnIgotCSAgYXJnPSIkYXJnICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgYXJnICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAJZG9uZQogCUlGUz0iJHNhdmVfaWZzIgogCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKQEAgLTQ3MjQsOSArNTgwOCw5IEBACiAJZm9yIGZsYWcgaW4gJGFyZ3M7IGRvCiAJICBJRlM9IiRzYXZlX2lmcyIKICAgICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmxhZyIKLQkgIGFyZz0iJGFyZyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICBmdW5jX2FwcGVuZCBhcmcgIiAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKIAlkb25lCiAJSUZTPSIkc2F2ZV9pZnMiCiAJZnVuY19zdHJpcG5hbWUgJyAnICcnICIkYXJnIgpAQCAtNDc1NCwyMyArNTgzOCwyNyBAQAogCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogCTs7CiAKLSAgICAgICMgLTY0LCAtbWlwc1swLTldIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgU0dJIGNvbXBpbGVyCi0gICAgICAjIC1yWzAtOV1bMC05XSogc3BlY2lmaWVzIHRoZSBwcm9jZXNzb3Igb24gdGhlIFNHSSBjb21waWxlcgotICAgICAgIyAteGFyY2g9KiwgLXh0YXJnZXQ9KiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFN1biBjb21waWxlcgotICAgICAgIyArREEqLCArREQqIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgSFAgY29tcGlsZXIKLSAgICAgICMgLXEqIHBhc3MgdGhyb3VnaCBjb21waWxlciBhcmdzIGZvciB0aGUgSUJNIGNvbXBpbGVyCi0gICAgICAjIC1tKiwgLXRbNDVdKiwgLXR4c2NhbGUqIHBhc3MgdGhyb3VnaCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMKLSAgICAgICMgY29tcGlsZXIgYXJncyBmb3IgR0NDCi0gICAgICAjIC1GL3BhdGggZ2l2ZXMgcGF0aCB0byB1bmluc3RhbGxlZCBmcmFtZXdvcmtzLCBnY2Mgb24gZGFyd2luCi0gICAgICAjIC1wLCAtcGcsIC0tY292ZXJhZ2UsIC1mcHJvZmlsZS0qIHBhc3MgdGhyb3VnaCBwcm9maWxpbmcgZmxhZyBmb3IgR0NDCi0gICAgICAjIEBmaWxlIEdDQyByZXNwb25zZSBmaWxlcworICAgICAgIyBGbGFncyB0byBiZSBwYXNzZWQgdGhyb3VnaCB1bmNoYW5nZWQsIHdpdGggcmF0aW9uYWxlOgorICAgICAgIyAtNjQsIC1taXBzWzAtOV0gICAgICBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBTR0kgY29tcGlsZXIKKyAgICAgICMgLXJbMC05XVswLTldKiAgICAgICAgc3BlY2lmeSBwcm9jZXNzb3IgZm9yIHRoZSBTR0kgY29tcGlsZXIKKyAgICAgICMgLXhhcmNoPSosIC14dGFyZ2V0PSogZW5hYmxlIDY0LWJpdCBtb2RlIGZvciB0aGUgU3VuIGNvbXBpbGVyCisgICAgICAjICtEQSosICtERCogICAgICAgICAgIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIEhQIGNvbXBpbGVyCisgICAgICAjIC1xKiAgICAgICAgICAgICAgICAgIGNvbXBpbGVyIGFyZ3MgZm9yIHRoZSBJQk0gY29tcGlsZXIKKyAgICAgICMgLW0qLCAtdFs0NV0qLCAtdHhzY2FsZSogYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGZsYWdzIGZvciBHQ0MKKyAgICAgICMgLUYvcGF0aCAgICAgICAgICAgICAgcGF0aCB0byB1bmluc3RhbGxlZCBmcmFtZXdvcmtzLCBnY2Mgb24gZGFyd2luCisgICAgICAjIC1wLCAtcGcsIC0tY292ZXJhZ2UsIC1mcHJvZmlsZS0qICBwcm9maWxpbmcgZmxhZ3MgZm9yIEdDQworICAgICAgIyBAZmlsZSAgICAgICAgICAgICAgICBHQ0MgcmVzcG9uc2UgZmlsZXMKKyAgICAgICMgLXRwPSogICAgICAgICAgICAgICAgUG9ydGxhbmQgcGdjYyB0YXJnZXQgcHJvY2Vzc29yIHNlbGVjdGlvbgorICAgICAgIyAtLXN5c3Jvb3Q9KiAgICAgICAgICBmb3Igc3lzcm9vdCBzdXBwb3J0CisgICAgICAjIC1PKiwgLWZsdG8qLCAtZndob3ByKiwgLWZ1c2UtbGlua2VyLXBsdWdpbiBHQ0MgbGluay10aW1lIG9wdGltaXphdGlvbgogICAgICAgLTY0fC1taXBzWzAtOV18LXJbMC05XVswLTldKnwteGFyY2g9KnwteHRhcmdldD0qfCtEQSp8K0REKnwtcSp8LW0qfCBcCi0gICAgICAtdFs0NV0qfC10eHNjYWxlKnwtcHwtcGd8LS1jb3ZlcmFnZXwtZnByb2ZpbGUtKnwtRip8QCopCisgICAgICAtdFs0NV0qfC10eHNjYWxlKnwtcHwtcGd8LS1jb3ZlcmFnZXwtZnByb2ZpbGUtKnwtRip8QCp8LXRwPSp8LS1zeXNyb290PSp8IFwKKyAgICAgIC1PKnwtZmx0byp8LWZ3aG9wcip8LWZ1c2UtbGlua2VyLXBsdWdpbikKICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKIAlhcmc9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKICAgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKICAgICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCi0gICAgICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKKyAgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgogICAgICAgICBjb250aW51ZQogICAgICAgICA7OwogCkBAIC00NzgyLDcgKzU4NzAsNyBAQAogCiAgICAgICAqLiRvYmpleHQpCiAJIyBBIHN0YW5kYXJkIG9iamVjdC4KLQlvYmpzPSIkb2JqcyAkYXJnIgorCWZ1bmNfYXBwZW5kIG9ianMgIiAkYXJnIgogCTs7CiAKICAgICAgICoubG8pCkBAIC00ODEzLDcgKzU5MDEsNyBAQAogCiAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KIAkgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0geWVzOyB0aGVuCi0JCWRsZmlsZXM9IiRkbGZpbGVzICRwaWNfb2JqZWN0IgorCQlmdW5jX2FwcGVuZCBkbGZpbGVzICIgJHBpY19vYmplY3QiCiAJCXByZXY9CiAJCWNvbnRpbnVlCiAJICAgICAgZWxzZQpAQCAtNDgyNSw3ICs1OTEzLDcgQEAKIAkgICAgIyBDSEVDSyBNRTogIEkgdGhpbmsgSSBidXN0ZWQgdGhpcy4gIC1Pc3NhbWEKIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgogCSAgICAgICMgUHJlbG9hZCB0aGUgb2xkLXN0eWxlIG9iamVjdC4KLQkgICAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkcGljX29iamVjdCIKKwkgICAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJHBpY19vYmplY3QiCiAJICAgICAgcHJldj0KIAkgICAgZmkKIApAQCAtNDg3MCwyNCArNTk1OCwyNSBAQAogCiAgICAgICAqLiRsaWJleHQpCiAJIyBBbiBhcmNoaXZlLgotCWRlcGxpYnM9IiRkZXBsaWJzICRhcmciCi0Jb2xkX2RlcGxpYnM9IiRvbGRfZGVwbGlicyAkYXJnIgorCWZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIgorCWZ1bmNfYXBwZW5kIG9sZF9kZXBsaWJzICIgJGFyZyIKIAljb250aW51ZQogCTs7CiAKICAgICAgICoubGEpCiAJIyBBIGxpYnRvb2wtY29udHJvbGxlZCBsaWJyYXJ5LgogCisJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRhcmciCiAJaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgogCSAgIyBUaGlzIGxpYnJhcnkgd2FzIHNwZWNpZmllZCB3aXRoIC1kbG9wZW4uCi0JICBkbGZpbGVzPSIkZGxmaWxlcyAkYXJnIgorCSAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCiAJICBwcmV2PQogCWVsaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgogCSAgIyBUaGUgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRscHJlb3Blbi4KLQkgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRhcmciCisJICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAkgIHByZXY9CiAJZWxzZQotCSAgZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKKwkgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCWZpCiAJY29udGludWUKIAk7OwpAQCAtNDkyNSw3ICs2MDE0LDcgQEAKIAogICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgogICAgICAgIyBnZXQgdGhlIGRpcmVjdG9yaWVzIGxpc3RlZCBpbiAkc2hsaWJwYXRoX3ZhcgotICAgICAgZXZhbCBzaGxpYl9zZWFyY2hfcGF0aD1cYFwkRUNITyBcIlhcJHskc2hsaWJwYXRoX3Zhcn1cIiBcfCBcJFhzZWQgLWUgXCdzLzovIC9nXCdcYAorICAgICAgZXZhbCBzaGxpYl9zZWFyY2hfcGF0aD1cYFwkRUNITyBcIlwkeyRzaGxpYnBhdGhfdmFyfVwiIFx8IFwkU0VEIFwncy86LyAvZ1wnXGAKICAgICBlbHNlCiAgICAgICBzaGxpYl9zZWFyY2hfcGF0aD0KICAgICBmaQpAQCAtNDkzNCw2ICs2MDIzLDggQEAKIAogICAgIGZ1bmNfZGlybmFtZSAiJG91dHB1dCIgIi8iICIiCiAgICAgb3V0cHV0X29iamRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkb2JqZGlyIgorICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8iCisgICAgdG9vbF9vdXRwdXRfb2JqZGlyPSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKICAgICAjIENyZWF0ZSB0aGUgb2JqZWN0IGRpcmVjdG9yeS4KICAgICBmdW5jX21rZGlyX3AgIiRvdXRwdXRfb2JqZGlyIgogCkBAIC00OTU0LDEyICs2MDQ1LDEyIEBACiAgICAgIyBGaW5kIGFsbCBpbnRlcmRlcGVuZGVudCBkZXBsaWJzIGJ5IHNlYXJjaGluZyBmb3IgbGlicmFyaWVzCiAgICAgIyB0aGF0IGFyZSBsaW5rZWQgbW9yZSB0aGFuIG9uY2UgKGUuZy4gLWxhIC1sYiAtbGEpCiAgICAgZm9yIGRlcGxpYiBpbiAkZGVwbGliczsgZG8KLSAgICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisgICAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgogCWNhc2UgIiRsaWJzICIgaW4KLQkqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisJKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OwogCWVzYWMKICAgICAgIGZpCi0gICAgICBsaWJzPSIkbGlicyAkZGVwbGliIgorICAgICAgZnVuY19hcHBlbmQgbGlicyAiICRkZXBsaWIiCiAgICAgZG9uZQogCiAgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYjsgdGhlbgpAQCAtNDk3Miw5ICs2MDYzLDkgQEAKICAgICAgIGlmICRvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzOyB0aGVuCiAJZm9yIHByZV9wb3N0X2RlcCBpbiAkcHJlZGVwcyAkcG9zdGRlcHM7IGRvCiAJICBjYXNlICIkcHJlX3Bvc3RfZGVwcyAiIGluCi0JICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRwcmVfcG9zdF9kZXBzIiA7OworCSAgKiIgJHByZV9wb3N0X2RlcCAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkcHJlX3Bvc3RfZGVwcyIgOzsKIAkgIGVzYWMKLQkgIHByZV9wb3N0X2RlcHM9IiRwcmVfcG9zdF9kZXBzICRwcmVfcG9zdF9kZXAiCisJICBmdW5jX2FwcGVuZCBwcmVfcG9zdF9kZXBzICIgJHByZV9wb3N0X2RlcCIKIAlkb25lCiAgICAgICBmaQogICAgICAgcHJlX3Bvc3RfZGVwcz0KQEAgLTUwMzMsNyArNjEyNCwxMCBAQAogCWNhc2UgJHBhc3MgaW4KIAlkbG9wZW4pIGxpYnM9IiRkbGZpbGVzIiA7OwogCWRscHJlb3BlbikgbGlicz0iJGRscHJlZmlsZXMiIDs7Ci0JbGluaykgbGlicz0iJGRlcGxpYnMgJURFUExJQlMlICRkZXBlbmRlbmN5X2xpYnMiIDs7CisJbGluaykKKwkgIGxpYnM9IiRkZXBsaWJzICVERVBMSUJTJSIKKwkgIHRlc3QgIlgkbGlua19hbGxfZGVwbGlicyIgIT0gWG5vICYmIGxpYnM9IiRsaWJzICRkZXBlbmRlbmN5X2xpYnMiCisJICA7OwogCWVzYWMKICAgICAgIGZpCiAgICAgICBpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixkbHByZW9wZW4iOyB0aGVuCkBAIC01MDQxLDE3ICs2MTM1LDE5IEBACiAJZm9yIGxpYiBpbiAkZGxwcmVmaWxlczsgZG8KIAkgICMgSWdub3JlIG5vbi1saWJ0b29sLWxpYnMKIAkgIGRlcGVuZGVuY3lfbGlicz0KKwkgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkbGliIgogCSAgY2FzZSAkbGliIGluCi0JICAqLmxhKQlmdW5jX3NvdXJjZSAiJGxpYiIgOzsKKwkgICoubGEpCWZ1bmNfc291cmNlICIkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IiA7OwogCSAgZXNhYwogCiAJICAjIENvbGxlY3QgcHJlb3BlbmVkIGxpYnRvb2wgZGVwbGlicywgZXhjZXB0IGFueSB0aGlzIGxpYnJhcnkKIAkgICMgaGFzIGRlY2xhcmVkIGFzIHdlYWsgbGlicwogCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwotICAgICAgICAgICAgZGVwbGliX2Jhc2U9YCRFQ0hPICJYJGRlcGxpYiIgfCAkWHNlZCAtZSAiJGJhc2VuYW1lImAKKwkgICAgZnVuY19iYXNlbmFtZSAiJGRlcGxpYiIKKyAgICAgICAgICAgIGRlcGxpYl9iYXNlPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAogCSAgICBjYXNlICIgJHdlYWtfbGlicyAiIGluCiAJICAgICoiICRkZXBsaWJfYmFzZSAiKikgOzsKLQkgICAgKikgZGVwbGlicz0iJGRlcGxpYnMgJGRlcGxpYiIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgZGVwbGlicyAiICRkZXBsaWIiIDs7CiAJICAgIGVzYWMKIAkgIGRvbmUKIAlkb25lCkBAIC01MDY3LDE2ICs2MTYzLDE3IEBACiAJbGliPQogCWZvdW5kPW5vCiAJY2FzZSAkZGVwbGliIGluCi0JLW10fC1tdGhyZWFkc3wta3RocmVhZHwtS3RocmVhZHwtcHRocmVhZHwtcHRocmVhZHN8LS10aHJlYWQtc2FmZXwtdGhyZWFkcykKKwktbXR8LW10aHJlYWRzfC1rdGhyZWFkfC1LdGhyZWFkfC1wdGhyZWFkfC1wdGhyZWFkc3wtLXRocmVhZC1zYWZlIFwKKyAgICAgICAgfC10aHJlYWRzfC1mb3Blbm1wfC1vcGVubXB8LW1wfC14b3Blbm1wfC1vbXB8LXFzbXA9KikKIAkgIGlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxsaW5rIjsgdGhlbgogCSAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKIAkgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKIAkgIGVsc2UKLQkgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkZGVwbGliIgorCSAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRkZXBsaWIiCiAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgOyB0aGVuCiAJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCiAJCSAgICAqIiAkZGVwbGliICIqKSA7OwotCQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGRlcGxpYiIgOzsKKwkJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRkZXBsaWIiIDs7CiAJCWVzYWMKIAkgICAgZmkKIAkgIGZpCkBAIC01MTYxLDcgKzYyNTgsNyBAQAogCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliIDsgdGhlbgogCQljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgogCQkgICAgKiIgJGRlcGxpYiAiKikgOzsKLQkJICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRkZXBsaWIiIDs7CisJCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkZGVwbGliIiA7OwogCQllc2FjCiAJICAgIGZpCiAJICBmaQpAQCAtNTE3NCw3ICs2MjcxLDggQEAKIAkgICAgdGVzdCAiJHBhc3MiID0gY29udiAmJiBjb250aW51ZQogCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKIAkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLQkgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCSAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCSAgICA7OwogCSAgcHJvZykKIAkgICAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgpAQCAtNTE4OCw3ICs2Mjg2LDggQEAKIAkgICAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgogCSAgICBmaQogCSAgICBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgotCSAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJICAgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCiAJICAgIDs7CiAJICAqKQogCSAgICBmdW5jX3dhcm5pbmcgIlxgLUwnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzL29iamVjdHMiCkBAIC01MTk5LDE3ICs2Mjk4LDIxIEBACiAJLVIqKQogCSAgaWYgdGVzdCAiJHBhc3MiID0gbGluazsgdGhlbgogCSAgICBmdW5jX3N0cmlwbmFtZSAnLVInICcnICIkZGVwbGliIgotCSAgICBkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorCSAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgZGlyPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKIAkgICAgIyBNYWtlIHN1cmUgdGhlIHhycGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KIAkgICAgY2FzZSAiJHhycGF0aCAiIGluCiAJICAgICoiICRkaXIgIiopIDs7Ci0JICAgICopIHhycGF0aD0iJHhycGF0aCAkZGlyIiA7OworCSAgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkZGlyIiA7OwogCSAgICBlc2FjCiAJICBmaQogCSAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKIAkgIGNvbnRpbnVlCiAJICA7OwotCSoubGEpIGxpYj0iJGRlcGxpYiIgOzsKKwkqLmxhKQorCSAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCisJICBsaWI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorCSAgOzsKIAkqLiRsaWJleHQpCiAJICBpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCiAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCkBAIC01MjI3LDcgKzYzMzAsNyBAQAogCQltYXRjaF9wYXR0ZXJuKikKIAkJICBzZXQgZHVtbXkgJGRlcGxpYnNfY2hlY2tfbWV0aG9kOyBzaGlmdAogCQkgIG1hdGNoX3BhdHRlcm5fcmVnZXg9YGV4cHIgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgOiAiJDEgXCguKlwpImAKLQkJICBpZiBldmFsICJcJEVDSE8gXCJYJGRlcGxpYlwiIiAyPi9kZXYvbnVsbCB8ICRYc2VkIC1lIDEwcSBcCisJCSAgaWYgZXZhbCAiXCRFQ0hPIFwiJGRlcGxpYlwiIiAyPi9kZXYvbnVsbCB8ICRTRUQgMTBxIFwKIAkJICAgIHwgJEVHUkVQICIkbWF0Y2hfcGF0dGVybl9yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KIAkJICAgIHZhbGlkX2FfbGliPXllcwogCQkgIGZpCkBAIC01MjM3LDE1ICs2MzQwLDE1IEBACiAJCTs7CiAJICAgICAgZXNhYwogCSAgICAgIGlmIHRlc3QgIiR2YWxpZF9hX2xpYiIgIT0geWVzOyB0aGVuCi0JCSRFQ0hPCisJCWVjaG8KIAkJJEVDSE8gIioqKiBXYXJuaW5nOiBUcnlpbmcgdG8gbGluayB3aXRoIHN0YXRpYyBsaWIgYXJjaGl2ZSAkZGVwbGliLiIKLQkJJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgotCQkkRUNITyAiKioqIGJlY2F1c2UgdGhlIGZpbGUgZXh0ZW5zaW9ucyAuJGxpYmV4dCBvZiB0aGlzIGFyZ3VtZW50IG1ha2VzIG1lIGJlbGlldmUiCi0JCSRFQ0hPICIqKiogdGhhdCBpdCBpcyBqdXN0IGEgc3RhdGljIGFyY2hpdmUgdGhhdCBJIHNob3VsZCBub3QgdXNlIGhlcmUuIgorCQllY2hvICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgorCQllY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQllY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCisJCWVjaG8gIioqKiBiZWNhdXNlIHRoZSBmaWxlIGV4dGVuc2lvbnMgLiRsaWJleHQgb2YgdGhpcyBhcmd1bWVudCBtYWtlcyBtZSBiZWxpZXZlIgorCQllY2hvICIqKiogdGhhdCBpdCBpcyBqdXN0IGEgc3RhdGljIGFyY2hpdmUgdGhhdCBJIHNob3VsZCBub3QgdXNlIGhlcmUuIgogCSAgICAgIGVsc2UKLQkJJEVDSE8KKwkJZWNobwogCQkkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUiCiAJCSRFQ0hPICIqKiogc3RhdGljIGxpYnJhcnkgJGRlcGxpYiBpcyBub3QgcG9ydGFibGUhIgogCQlkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgpAQCAtNTI3MiwxMSArNjM3NSwxMSBAQAogCSAgICBpZiB0ZXN0ICIkcGFzcyIgPSBkbHByZW9wZW4gfHwgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiAhPSB5ZXMgfHwgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSBubzsgdGhlbgogCSAgICAgICMgSWYgdGhlcmUgaXMgbm8gZGxvcGVuIHN1cHBvcnQgb3Igd2UncmUgbGlua2luZyBzdGF0aWNhbGx5LAogCSAgICAgICMgd2UgbmVlZCB0byBwcmVsb2FkLgotCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkZXBsaWIiCisJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkZXBsaWIiCiAJICAgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCiAJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKIAkgICAgZWxzZQotCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRkZXBsaWIiCisJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRkZXBsaWIiCiAJICAgIGZpCiAJICBmaQogCSAgY29udGludWUKQEAgLTUzMTgsMjAgKzY0MjEsMjAgQEAKIAogCSMgQ29udmVydCAiLWZyYW1ld29yayBmb28iIHRvICJmb28ubHRmcmFtZXdvcmsiCiAJaWYgdGVzdCAtbiAiJGluaGVyaXRlZF9saW5rZXJfZmxhZ3MiOyB0aGVuCi0JICB0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz1gJEVDSE8gIlgkaW5oZXJpdGVkX2xpbmtlcl9mbGFncyIgfCAkWHNlZCAtZSAncy8tZnJhbWV3b3JrIFwoW14gJF0qXCkvXDEubHRmcmFtZXdvcmsvZydgCisJICB0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz1gJEVDSE8gIiRpbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRTRUQgJ3MvLWZyYW1ld29yayBcKFteICRdKlwpL1wxLmx0ZnJhbWV3b3JrL2cnYAogCSAgZm9yIHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWcgaW4gJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWdzOyBkbwogCSAgICBjYXNlICIgJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KIAkgICAgICAqIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyAiKikgOzsKLQkgICAgICAqKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIjs7CisJICAgICAgKikgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyI7OwogCSAgICBlc2FjCiAJICBkb25lCiAJZmkKLQlkZXBlbmRlbmN5X2xpYnM9YCRFQ0hPICJYICRkZXBlbmRlbmN5X2xpYnMiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJZGVwZW5kZW5jeV9saWJzPWAkRUNITyAiICRkZXBlbmRlbmN5X2xpYnMiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKIAlpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixsaW5rIiB8fAogCSAgIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxzY2FuIiB8fAogCSAgIHsgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB9OyB0aGVuCi0JICB0ZXN0IC1uICIkZGxvcGVuIiAmJiBkbGZpbGVzPSIkZGxmaWxlcyAkZGxvcGVuIgotCSAgdGVzdCAtbiAiJGRscHJlb3BlbiIgJiYgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGRscHJlb3BlbiIKKwkgIHRlc3QgLW4gIiRkbG9wZW4iICYmIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkZGxvcGVuIgorCSAgdGVzdCAtbiAiJGRscHJlb3BlbiIgJiYgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRkbHByZW9wZW4iCiAJZmkKIAogCWlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KQEAgLTUzNDIsMzAgKzY0NDUsMzYgQEAKIAkgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBuYW1lIG9mIGxpbmsgbGlicmFyeSBmb3IgXGAkbGliJyIKIAkgICAgZmkKIAkgICAgIyBJdCBpcyBhIGxpYnRvb2wgY29udmVuaWVuY2UgbGlicmFyeSwgc28gYWRkIGluIGl0cyBvYmplY3RzLgotCSAgICBjb252ZW5pZW5jZT0iJGNvbnZlbmllbmNlICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKLQkgICAgb2xkX2NvbnZlbmllbmNlPSIkb2xkX2NvbnZlbmllbmNlICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgZnVuY19hcHBlbmQgY29udmVuaWVuY2UgIiAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCisJICAgIGZ1bmNfYXBwZW5kIG9sZF9jb252ZW5pZW5jZSAiICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgdG1wX2xpYnM9CisJICAgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKwkgICAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgorCSAgICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCisJCWNhc2UgIiR0bXBfbGlicyAiIGluCisJCSoiICRkZXBsaWIgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGRlcGxpYiIgOzsKKwkJZXNhYworCSAgICAgIGZpCisJICAgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIgorCSAgICBkb25lCiAJICBlbGlmIHRlc3QgIiRsaW5rbW9kZSIgIT0gcHJvZyAmJiB0ZXN0ICIkbGlua21vZGUiICE9IGxpYjsgdGhlbgogCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIGNvbnZlbmllbmNlIGxpYnJhcnkiCiAJICBmaQotCSAgdG1wX2xpYnM9Ci0JICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCi0JICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCi0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCi0JICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7Ci0JICAgICAgZXNhYwotCSAgICBmaQotCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCi0JICBkb25lCiAJICBjb250aW51ZQogCWZpICMgJHBhc3MgPSBjb252CiAKIAogCSMgR2V0IHRoZSBuYW1lIG9mIHRoZSBsaWJyYXJ5IHdlIGxpbmsgYWdhaW5zdC4KIAlsaW5rbGliPQotCWZvciBsIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8KLQkgIGxpbmtsaWI9IiRsIgotCWRvbmUKKwlpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmCisJICAgeyB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzIiA9IHllcyB8fAorCSAgICAgdGVzdCAiJHByZWZlcl9zdGF0aWNfbGlicywkaW5zdGFsbGVkIiA9ICJidWlsdCxubyI7IH07IHRoZW4KKwkgIGxpbmtsaWI9JG9sZF9saWJyYXJ5CisJZWxzZQorCSAgZm9yIGwgaW4gJG9sZF9saWJyYXJ5ICRsaWJyYXJ5X25hbWVzOyBkbworCSAgICBsaW5rbGliPSIkbCIKKwkgIGRvbmUKKwlmaQogCWlmIHRlc3QgLXogIiRsaW5rbGliIjsgdGhlbgogCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCiAJZmkKQEAgLTUzODIsOSArNjQ5MSw5IEBACiAJICAgICMgc3RhdGljYWxseSwgd2UgbmVlZCB0byBwcmVsb2FkLiAgV2UgYWxzbyBuZWVkIHRvIHByZWxvYWQgYW55CiAJICAgICMgZGVwZW5kZW50IGxpYnJhcmllcyBzbyBsaWJsdGRsJ3MgZGVwbGliIHByZWxvYWRlciBkb2Vzbid0CiAJICAgICMgYm9tYiBvdXQgaW4gdGhlIGxvYWQgZGVwbGlicyBwaGFzZS4KLQkgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGxpYiAkZGVwZW5kZW5jeV9saWJzIgorCSAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGxpYiAkZGVwZW5kZW5jeV9saWJzIgogCSAgZWxzZQotCSAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliIgorCSAgICBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGxpYiIKIAkgIGZpCiAJICBjb250aW51ZQogCWZpICMgJHBhc3MgPSBkbG9wZW4KQEAgLTU0MDYsMTQgKzY1MTUsMTQgQEAKIAogCSMgRmluZCB0aGUgcmVsZXZhbnQgb2JqZWN0IGRpcmVjdG9yeSBhbmQgbGlicmFyeSBuYW1lLgogCWlmIHRlc3QgIlgkaW5zdGFsbGVkIiA9IFh5ZXM7IHRoZW4KLQkgIGlmIHRlc3QgISAtZiAiJGxpYmRpci8kbGlua2xpYiIgJiYgdGVzdCAtZiAiJGFic19sYWRpci8kbGlua2xpYiI7IHRoZW4KKwkgIGlmIHRlc3QgISAtZiAiJGx0X3N5c3Jvb3QkbGliZGlyLyRsaW5rbGliIiAmJiB0ZXN0IC1mICIkYWJzX2xhZGlyLyRsaW5rbGliIjsgdGhlbgogCSAgICBmdW5jX3dhcm5pbmcgImxpYnJhcnkgXGAkbGliJyB3YXMgbW92ZWQuIgogCSAgICBkaXI9IiRsYWRpciIKIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgogCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCiAJICBlbHNlCi0JICAgIGRpcj0iJGxpYmRpciIKLQkgICAgYWJzZGlyPSIkbGliZGlyIgorCSAgICBkaXI9IiRsdF9zeXNyb290JGxpYmRpciIKKwkgICAgYWJzZGlyPSIkbHRfc3lzcm9vdCRsaWJkaXIiCiAJICBmaQogCSAgdGVzdCAiWCRoYXJkY29kZV9hdXRvbWF0aWMiID0gWHllcyAmJiBhdm9pZHRlbXBycGF0aD15ZXMKIAllbHNlCkBAIC01NDIxLDEyICs2NTMwLDEyIEBACiAJICAgIGRpcj0iJGxhZGlyIgogCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCiAJICAgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKLQkgICAgbm90aW5zdF9wYXRoPSIkbm90aW5zdF9wYXRoICRhYnNfbGFkaXIiCisJICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfcGF0aCAiICRhYnNfbGFkaXIiCiAJICBlbHNlCiAJICAgIGRpcj0iJGxhZGlyLyRvYmpkaXIiCiAJICAgIGFic2Rpcj0iJGFic19sYWRpci8kb2JqZGlyIgogCSAgICAjIFJlbW92ZSB0aGlzIHNlYXJjaCBwYXRoIGxhdGVyCi0JICAgIG5vdGluc3RfcGF0aD0iJG5vdGluc3RfcGF0aCAkYWJzX2xhZGlyIgorCSAgICBmdW5jX2FwcGVuZCBub3RpbnN0X3BhdGggIiAkYWJzX2xhZGlyIgogCSAgZmkKIAlmaSAjICRpbnN0YWxsZWQgPSB5ZXMKIAlmdW5jX3N0cmlwbmFtZSAnbGliJyAnLmxhJyAiJGxhbmFtZSIKQEAgLTU0MzcsMjAgKzY1NDYsNDYgQEAKIAkgIGlmIHRlc3QgLXogIiRsaWJkaXIiICYmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCiAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm9ubHkgbGlicmFyaWVzIG1heSAtZGxwcmVvcGVuIGEgY29udmVuaWVuY2UgbGlicmFyeTogXGAkbGliJyIKIAkgIGZpCi0JICAjIFByZWZlciB1c2luZyBhIHN0YXRpYyBsaWJyYXJ5IChzbyB0aGF0IG5vIHNpbGx5IF9EWU5BTUlDIHN5bWJvbHMKLQkgICMgYXJlIHJlcXVpcmVkIHRvIGxpbmspLgotCSAgaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgotCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRvbGRfbGlicmFyeSIKLQkgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCi0JICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgotCSAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0JCWRscHJlY29udmVuaWVuY2VsaWJzPSIkZGxwcmVjb252ZW5pZW5jZWxpYnMgJGRpci8kb2xkX2xpYnJhcnkiCi0JICAjIE90aGVyd2lzZSwgdXNlIHRoZSBkbG5hbWUsIHNvIHRoYXQgbHRfZGxvcGVuIGZpbmRzIGl0LgotCSAgZWxpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgotCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRkbG5hbWUiCi0JICBlbHNlCi0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJGxpbmtsaWIiCi0JICBmaQorCSAgY2FzZSAiJGhvc3QiIGluCisJICAgICMgc3BlY2lhbCBoYW5kbGluZyBmb3IgcGxhdGZvcm1zIHdpdGggUEUtRExMcy4KKwkgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCisJICAgICAgIyBMaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGxpbmsgYWdhaW5zdCBzaGFyZWQgbGlicmFyeSBpZiBib3RoCisJICAgICAgIyBzdGF0aWMgYW5kIHNoYXJlZCBhcmUgcHJlc2VudC4gIFRoZXJlZm9yZSwgZW5zdXJlIHdlIGV4dHJhY3QKKwkgICAgICAjIHN5bWJvbHMgZnJvbSB0aGUgaW1wb3J0IGxpYnJhcnkgaWYgYSBzaGFyZWQgbGlicmFyeSBpcyBwcmVzZW50CisJICAgICAgIyAob3RoZXJ3aXNlLCB0aGUgZGxvcGVuIG1vZHVsZSBuYW1lIHdpbGwgYmUgaW5jb3JyZWN0KS4gIFdlIGRvCisJICAgICAgIyB0aGlzIGJ5IHB1dHRpbmcgdGhlIGltcG9ydCBsaWJyYXJ5IG5hbWUgaW50byAkbmV3ZGxwcmVmaWxlcy4KKwkgICAgICAjIFdlIHJlY292ZXIgdGhlIGRsb3BlbiBtb2R1bGUgbmFtZSBieSAnc2F2aW5nJyB0aGUgbGEgZmlsZQorCSAgICAgICMgbmFtZSBpbiBhIHNwZWNpYWwgcHVycG9zZSB2YXJpYWJsZSwgYW5kIChsYXRlcikgZXh0cmFjdGluZyB0aGUKKwkgICAgICAjIGRsbmFtZSBmcm9tIHRoZSBsYSBmaWxlLgorCSAgICAgIGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCisJICAgICAgICBmdW5jX3RyX3NoICIkZGlyLyRsaW5rbGliIgorCSAgICAgICAgZXZhbCAibGliZmlsZV8kZnVuY190cl9zaF9yZXN1bHQ9XCRhYnNfbGFkaXIvXCRsYW5hbWUiCisJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kbGlua2xpYiIKKwkgICAgICBlbHNlCisJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kb2xkX2xpYnJhcnkiCisJICAgICAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKKwkgICAgICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgorCSAgICAgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAorCSAgICAgICAgICBmdW5jX2FwcGVuZCBkbHByZWNvbnZlbmllbmNlbGlicyAiICRkaXIvJG9sZF9saWJyYXJ5IgorCSAgICAgIGZpCisJICAgIDs7CisJICAgICogKQorCSAgICAgICMgUHJlZmVyIHVzaW5nIGEgc3RhdGljIGxpYnJhcnkgKHNvIHRoYXQgbm8gc2lsbHkgX0RZTkFNSUMgc3ltYm9scworCSAgICAgICMgYXJlIHJlcXVpcmVkIHRvIGxpbmspLgorCSAgICAgIGlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSI7IHRoZW4KKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjaworCSAgICAgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCisJICAgICAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisJICAgICAgICAgIGZ1bmNfYXBwZW5kIGRscHJlY29udmVuaWVuY2VsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCisJICAgICAgIyBPdGhlcndpc2UsIHVzZSB0aGUgZGxuYW1lLCBzbyB0aGF0IGx0X2Rsb3BlbiBmaW5kcyBpdC4KKwkgICAgICBlbGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCisJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kZGxuYW1lIgorCSAgICAgIGVsc2UKKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRsaW5rbGliIgorCSAgICAgIGZpCisJICAgIDs7CisJICBlc2FjCiAJZmkgIyAkcGFzcyA9IGRscHJlb3BlbgogCiAJaWYgdGVzdCAteiAiJGxpYmRpciI7IHRoZW4KQEAgLTU0NjgsNyArNjYwMyw3IEBACiAKIAogCWlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nICYmIHRlc3QgIiRwYXNzIiAhPSBsaW5rOyB0aGVuCi0JICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGxhZGlyIgorCSAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGxhZGlyIgogCSAgZGVwbGlicz0iJGxpYiAkZGVwbGlicyIKIAogCSAgbGlua2FsbGRlcGxpYnM9bm8KQEAgLTU0ODEsNyArNjYxNiw4IEBACiAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCiAJICAgIGNhc2UgJGRlcGxpYiBpbgogCSAgICAtTCopIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCi0JICAgICAgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJICAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJICAgICAgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAkJIDs7CiAJICAgIGVzYWMKIAkgICAgIyBOZWVkIHRvIGxpbmsgYWdhaW5zdCBhbGwgZGVwZW5kZW5jeV9saWJzPwpAQCAtNTQ5MiwxMiArNjYyOCwxMiBAQAogCSAgICAgICMgb3IvYW5kIGxpbmsgYWdhaW5zdCBzdGF0aWMgbGlicmFyaWVzCiAJICAgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCiAJICAgIGZpCi0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCiAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisJICAgICAgKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgorCSAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiCiAJICBkb25lICMgZm9yIGRlcGxpYgogCSAgY29udGludWUKIAlmaSAjICRsaW5rbW9kZSA9IHByb2cuLi4KQEAgLTU1MTIsNyArNjY0OCw3IEBACiAJICAgICAgIyBNYWtlIHN1cmUgdGhlIHJwYXRoIGNvbnRhaW5zIG9ubHkgdW5pcXVlIGRpcmVjdG9yaWVzLgogCSAgICAgIGNhc2UgIiR0ZW1wX3JwYXRoOiIgaW4KIAkgICAgICAqIiRhYnNkaXI6IiopIDs7Ci0JICAgICAgKikgdGVtcF9ycGF0aD0iJHRlbXBfcnBhdGgkYWJzZGlyOiIgOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0ZW1wX3JwYXRoICIkYWJzZGlyOiIgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCiAKQEAgLTU1MjQsNyArNjY2MCw3IEBACiAJICAgICopCiAJICAgICAgY2FzZSAiJGNvbXBpbGVfcnBhdGggIiBpbgogCSAgICAgICoiICRhYnNkaXIgIiopIDs7Ci0JICAgICAgKikgY29tcGlsZV9ycGF0aD0iJGNvbXBpbGVfcnBhdGggJGFic2RpciIKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBjb21waWxlX3JwYXRoICIgJGFic2RpciIgOzsKIAkgICAgICBlc2FjCiAJICAgICAgOzsKIAkgICAgZXNhYwpAQCAtNTUzMyw3ICs2NjY5LDcgQEAKIAkgICAgKikKIAkgICAgICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgogCSAgICAgICoiICRsaWJkaXIgIiopIDs7Ci0JICAgICAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIgorCSAgICAgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKIAkgICAgICBlc2FjCiAJICAgICAgOzsKIAkgICAgZXNhYwpAQCAtNTU1OCwxMiArNjY5NCwxMiBAQAogCSAgY2FzZSAkaG9zdCBpbgogCSAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKikKIAkgICAgICAjIE5vIHBvaW50IGluIHJlbGlua2luZyBETExzIGJlY2F1c2UgcGF0aHMgYXJlIG5vdCBlbmNvZGVkCi0JICAgICAgbm90aW5zdF9kZXBsaWJzPSIkbm90aW5zdF9kZXBsaWJzICRsaWIiCisJICAgICAgZnVuY19hcHBlbmQgbm90aW5zdF9kZXBsaWJzICIgJGxpYiIKIAkgICAgICBuZWVkX3JlbGluaz1ubwogCSAgICA7OwogCSAgKikKIAkgICAgaWYgdGVzdCAiJGluc3RhbGxlZCIgPSBubzsgdGhlbgotCSAgICAgIG5vdGluc3RfZGVwbGlicz0iJG5vdGluc3RfZGVwbGlicyAkbGliIgorCSAgICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfZGVwbGlicyAiICRsaWIiCiAJICAgICAgbmVlZF9yZWxpbms9eWVzCiAJICAgIGZpCiAJICAgIDs7CkBAIC01NTgwLDcgKzY3MTYsNyBAQAogCSAgICBmaQogCSAgZG9uZQogCSAgaWYgdGVzdCAteiAiJGRsb3Blbm1vZHVsZSIgJiYgdGVzdCAiJHNob3VsZG5vdGxpbmsiID0geWVzICYmIHRlc3QgIiRwYXNzIiA9IGxpbms7IHRoZW4KLQkgICAgJEVDSE8KKwkgICAgZWNobwogCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgogCSAgICAgICRFQ0hPICIqKiogV2FybmluZzogTGlua2luZyB0aGUgZXhlY3V0YWJsZSAkb3V0cHV0IGFnYWluc3QgdGhlIGxvYWRhYmxlIG1vZHVsZSIKIAkgICAgZWxzZQpAQCAtNTU5OCw3ICs2NzM0LDcgQEAKIAkgICAgKikKIAkgICAgICBjYXNlICIkY29tcGlsZV9ycGF0aCAiIGluCiAJICAgICAgKiIgJGFic2RpciAiKikgOzsKLQkgICAgICAqKSBjb21waWxlX3JwYXRoPSIkY29tcGlsZV9ycGF0aCAkYWJzZGlyIgorCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfcnBhdGggIiAkYWJzZGlyIiA7OwogCSAgICAgIGVzYWMKIAkgICAgICA7OwogCSAgICBlc2FjCkBAIC01NjA3LDcgKzY3NDMsNyBAQAogCSAgICAqKQogCSAgICAgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCiAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKLQkgICAgICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiCisJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwogCSAgICAgIGVzYWMKIAkgICAgICA7OwogCSAgICBlc2FjCkBAIC01NjYxLDcgKzY3OTcsNyBAQAogCSAgICBsaW5rbGliPSRuZXdsaWIKIAkgIGZpICMgdGVzdCAtbiAiJG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzIgogCi0JICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rOyB0aGVuCisJICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluazsgdGhlbgogCSAgICBhZGRfc2hsaWJwYXRoPQogCSAgICBhZGRfZGlyPQogCSAgICBhZGQ9CkBAIC01NjgzLDkgKzY4MTksOSBAQAogCQkgICAgICBpZiB0ZXN0ICJYJGRsb3Blbm1vZHVsZSIgIT0gIlgkbGliIjsgdGhlbgogCQkJJEVDSE8gIioqKiBXYXJuaW5nOiBsaWIgJGxpbmtsaWIgaXMgYSBtb2R1bGUsIG5vdCBhIHNoYXJlZCBsaWJyYXJ5IgogCQkJaWYgdGVzdCAteiAiJG9sZF9saWJyYXJ5IiA7IHRoZW4KLQkJCSAgJEVDSE8KLQkJCSAgJEVDSE8gIioqKiBBbmQgdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGEgc3RhdGljIGFyY2hpdmUgYXZhaWxhYmxlIgotCQkJICAkRUNITyAiKioqIFRoZSBsaW5rIHdpbGwgcHJvYmFibHkgZmFpbCwgc29ycnkiCisJCQkgIGVjaG8KKwkJCSAgZWNobyAiKioqIEFuZCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBzdGF0aWMgYXJjaGl2ZSBhdmFpbGFibGUiCisJCQkgIGVjaG8gIioqKiBUaGUgbGluayB3aWxsIHByb2JhYmx5IGZhaWwsIHNvcnJ5IgogCQkJZWxzZQogCQkJICBhZGQ9IiRkaXIvJG9sZF9saWJyYXJ5IgogCQkJZmkKQEAgLTU3MTIsMTIgKzY4NDgsMTIgQEAKIAkgICAgICAgICB0ZXN0ICIkaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlIiA9IG5vOyB0aGVuCiAJCWFkZD0iJGRpci8kbGlua2xpYiIKIAkgICAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9taW51c19MIiA9IHllczsgdGhlbgotCQlhZGRfZGlyPSItTCRkaXIiCisJCWFkZF9kaXI9Ii1MJGFic2RpciIKIAkJIyBUcnkgbG9va2luZyBmaXJzdCBpbiB0aGUgbG9jYXRpb24gd2UncmUgYmVpbmcgaW5zdGFsbGVkIHRvLgogCQlpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgogCQkgIGNhc2UgJGxpYmRpciBpbgogCQkgICAgW1xcL10qKQotCQkgICAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorCQkgICAgICBmdW5jX2FwcGVuZCBhZGRfZGlyICIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKIAkJICAgICAgOzsKIAkJICBlc2FjCiAJCWZpCkBAIC01NzM5LDcgKzY4NzUsNyBAQAogCSAgICBpZiB0ZXN0IC1uICIkYWRkX3NobGlicGF0aCI7IHRoZW4KIAkgICAgICBjYXNlIDokY29tcGlsZV9zaGxpYnBhdGg6IGluCiAJICAgICAgKiI6JGFkZF9zaGxpYnBhdGg6IiopIDs7Ci0JICAgICAgKikgY29tcGlsZV9zaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRhZGRfc2hsaWJwYXRoOiIgOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBjb21waWxlX3NobGlicGF0aCAiJGFkZF9zaGxpYnBhdGg6IiA7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KQEAgLTU3NTMsMTMgKzY4ODksMTMgQEAKIAkJIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgogCQljYXNlIDokZmluYWxpemVfc2hsaWJwYXRoOiBpbgogCQkqIjokbGliZGlyOiIqKSA7OwotCQkqKSBmaW5hbGl6ZV9zaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgkbGliZGlyOiIgOzsKKwkJKikgZnVuY19hcHBlbmQgZmluYWxpemVfc2hsaWJwYXRoICIkbGliZGlyOiIgOzsKIAkJZXNhYwogCSAgICAgIGZpCiAJICAgIGZpCiAJICBmaQogCi0JICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KIAkgICAgYWRkX3NobGlicGF0aD0KIAkgICAgYWRkX2Rpcj0KIAkgICAgYWRkPQpAQCAtNTc3Myw3ICs2OTA5LDcgQEAKIAkgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgPSB5ZXM7IHRoZW4KIAkgICAgICBjYXNlIDokZmluYWxpemVfc2hsaWJwYXRoOiBpbgogCSAgICAgICoiOiRsaWJkaXI6IiopIDs7Ci0JICAgICAgKikgZmluYWxpemVfc2hsaWJwYXRoPSIkZmluYWxpemVfc2hsaWJwYXRoJGxpYmRpcjoiIDs7CisJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfc2hsaWJwYXRoICIkbGliZGlyOiIgOzsKIAkgICAgICBlc2FjCiAJICAgICAgYWRkPSItbCRuYW1lIgogCSAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9hdXRvbWF0aWMiID0geWVzOyB0aGVuCkBAIC01NzkwLDcgKzY5MjYsNyBAQAogCSAgICAgIGlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCiAJCWNhc2UgJGxpYmRpciBpbgogCQkgIFtcXC9dKikKLQkJICAgIGFkZF9kaXI9IiRhZGRfZGlyIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCisJCSAgICBmdW5jX2FwcGVuZCBhZGRfZGlyICIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKIAkJICAgIDs7CiAJCWVzYWMKIAkgICAgICBmaQpAQCAtNTgyNSwyMSArNjk2MSwyMSBAQAogCiAJICAgICMgSnVzdCBwcmludCBhIHdhcm5pbmcgYW5kIGFkZCB0aGUgbGlicmFyeSB0byBkZXBlbmRlbmN5X2xpYnMgc28KIAkgICAgIyB0aGF0IHRoZSBwcm9ncmFtIGNhbiBiZSBsaW5rZWQgYWdhaW5zdCB0aGUgc3RhdGljIGxpYnJhcnkuCi0JICAgICRFQ0hPCisJICAgIGVjaG8KIAkgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBUaGlzIHN5c3RlbSBjYW4gbm90IGxpbmsgdG8gc3RhdGljIGxpYiBhcmNoaXZlICRsaWIuIgotCSAgICAkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKLQkgICAgJEVDSE8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCi0JICAgICRFQ0hPICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUuIgorCSAgICBlY2hvICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgorCSAgICBlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCSAgICBlY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUuIgogCSAgICBpZiB0ZXN0ICIkbW9kdWxlIiA9IHllczsgdGhlbgotCSAgICAgICRFQ0hPICIqKiogQnV0IGFzIHlvdSB0cnkgdG8gYnVpbGQgYSBtb2R1bGUgbGlicmFyeSwgbGlidG9vbCB3aWxsIHN0aWxsIGNyZWF0ZSAiCi0JICAgICAgJEVDSE8gIioqKiBhIHN0YXRpYyBtb2R1bGUsIHRoYXQgc2hvdWxkIHdvcmsgYXMgbG9uZyBhcyB0aGUgZGxvcGVuaW5nIGFwcGxpY2F0aW9uIgotCSAgICAgICRFQ0hPICIqKiogaXMgbGlua2VkIHdpdGggdGhlIC1kbG9wZW4gZmxhZyB0byByZXNvbHZlIHN5bWJvbHMgYXQgcnVudGltZS4iCisJICAgICAgZWNobyAiKioqIEJ1dCBhcyB5b3UgdHJ5IHRvIGJ1aWxkIGEgbW9kdWxlIGxpYnJhcnksIGxpYnRvb2wgd2lsbCBzdGlsbCBjcmVhdGUgIgorCSAgICAgIGVjaG8gIioqKiBhIHN0YXRpYyBtb2R1bGUsIHRoYXQgc2hvdWxkIHdvcmsgYXMgbG9uZyBhcyB0aGUgZGxvcGVuaW5nIGFwcGxpY2F0aW9uIgorCSAgICAgIGVjaG8gIioqKiBpcyBsaW5rZWQgd2l0aCB0aGUgLWRsb3BlbiBmbGFnIHRvIHJlc29sdmUgc3ltYm9scyBhdCBydW50aW1lLiIKIAkgICAgICBpZiB0ZXN0IC16ICIkZ2xvYmFsX3N5bWJvbF9waXBlIjsgdGhlbgotCQkkRUNITwotCQkkRUNITyAiKioqIEhvd2V2ZXIsIHRoaXMgd291bGQgb25seSB3b3JrIGlmIGxpYnRvb2wgd2FzIGFibGUgdG8gZXh0cmFjdCBzeW1ib2wiCi0JCSRFQ0hPICIqKiogbGlzdHMgZnJvbSBhIHByb2dyYW0sIHVzaW5nIFxgbm0nIG9yIGVxdWl2YWxlbnQsIGJ1dCBsaWJ0b29sIGNvdWxkIgotCQkkRUNITyAiKioqIG5vdCBmaW5kIHN1Y2ggYSBwcm9ncmFtLiAgU28sIHRoaXMgbW9kdWxlIGlzIHByb2JhYmx5IHVzZWxlc3MuIgotCQkkRUNITyAiKioqIFxgbm0nIGZyb20gR05VIGJpbnV0aWxzIGFuZCBhIGZ1bGwgcmVidWlsZCBtYXkgaGVscC4iCisJCWVjaG8KKwkJZWNobyAiKioqIEhvd2V2ZXIsIHRoaXMgd291bGQgb25seSB3b3JrIGlmIGxpYnRvb2wgd2FzIGFibGUgdG8gZXh0cmFjdCBzeW1ib2wiCisJCWVjaG8gIioqKiBsaXN0cyBmcm9tIGEgcHJvZ3JhbSwgdXNpbmcgXGBubScgb3IgZXF1aXZhbGVudCwgYnV0IGxpYnRvb2wgY291bGQiCisJCWVjaG8gIioqKiBub3QgZmluZCBzdWNoIGEgcHJvZ3JhbS4gIFNvLCB0aGlzIG1vZHVsZSBpcyBwcm9iYWJseSB1c2VsZXNzLiIKKwkJZWNobyAiKioqIFxgbm0nIGZyb20gR05VIGJpbnV0aWxzIGFuZCBhIGZ1bGwgcmVidWlsZCBtYXkgaGVscC4iCiAJICAgICAgZmkKIAkgICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0gbm87IHRoZW4KIAkJYnVpbGRfbGlidG9vbF9saWJzPW1vZHVsZQpAQCAtNTg2NywzNyArNzAwMyw0NiBAQAogCSAgICAgICAgICAgdGVtcF94cnBhdGg9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCQkgICBjYXNlICIgJHhycGF0aCAiIGluCiAJCSAgICoiICR0ZW1wX3hycGF0aCAiKikgOzsKLQkJICAgKikgeHJwYXRoPSIkeHJwYXRoICR0ZW1wX3hycGF0aCI7OworCQkgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkdGVtcF94cnBhdGgiOzsKIAkJICAgZXNhYzs7Ci0JICAgICAgKikgdGVtcF9kZXBsaWJzPSIkdGVtcF9kZXBsaWJzICRsaWJkaXIiOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0ZW1wX2RlcGxpYnMgIiAkbGliZGlyIjs7CiAJICAgICAgZXNhYwogCSAgICBkb25lCiAJICAgIGRlcGVuZGVuY3lfbGlicz0iJHRlbXBfZGVwbGlicyIKIAkgIGZpCiAKLQkgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkYWJzZGlyIgorCSAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGFic2RpciIKIAkgICMgTGluayBhZ2FpbnN0IHRoaXMgbGlicmFyeQogCSAgdGVzdCAiJGxpbmtfc3RhdGljIiA9IG5vICYmIG5ld2RlcGVuZGVuY3lfbGlicz0iJGFic19sYWRpci8kbGFuYW1lICRuZXdkZXBlbmRlbmN5X2xpYnMiCiAJICAjIC4uLiBhbmQgaXRzIGRlcGVuZGVuY3lfbGlicwogCSAgdG1wX2xpYnM9CiAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCiAJICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgotCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgorCSAgICBjYXNlICRkZXBsaWIgaW4KKyAgICAgICAgICAgICAgLUwqKSBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgorICAgICAgICAgICAgICAgICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0Ijs7CisgICAgICAgICAgICAgICopIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIiA7OworICAgICAgICAgICAgZXNhYworCSAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgogCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCi0JICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OworCSAgICAgICoiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQgIiopCisgICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IiA7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgorCSAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCiAJICBkb25lCiAKIAkgIGlmIHRlc3QgIiRsaW5rX2FsbF9kZXBsaWJzIiAhPSBubzsgdGhlbgogCSAgICAjIEFkZCB0aGUgc2VhcmNoIHBhdGhzIG9mIGFsbCBkZXBlbmRlbmN5IGxpYnJhcmllcwogCSAgICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCisJICAgICAgcGF0aD0KIAkgICAgICBjYXNlICRkZXBsaWIgaW4KIAkgICAgICAtTCopIHBhdGg9IiRkZXBsaWIiIDs7CiAJICAgICAgKi5sYSkKKwkgICAgICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgorCSAgICAgICAgZGVwbGliPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKIAkgICAgICAgIGZ1bmNfZGlybmFtZSAiJGRlcGxpYiIgIiIgIi4iCi0JCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisJCWRpcj0kZnVuY19kaXJuYW1lX3Jlc3VsdAogCQkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KIAkJY2FzZSAkZGlyIGluCiAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzZGlyPSIkZGlyIiA7OwpAQCAtNTkyNCw4ICs3MDY5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkZGFyd2luX2luc3RhbGxfbmFtZSI7IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFyd2luX2luc3RhbGxfbmFtZT1gJHtPVE9PTDY0fSAtTCAkZGVwZGVwbCAgfCBhd2sgJ3tpZiAoTlIgPT0gMikge3ByaW50ICQxO2V4aXR9fSdgCiAgICAgICAgICAgICAgICAgICAgICAgZmkKLQkJICAgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAke3dsfS1keWxpYl9maWxlICR7d2x9JHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgotCQkgICAgICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgLWR5bGliX2ZpbGUgJHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgorCQkgICAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR7d2x9LWR5bGliX2ZpbGUgJHt3bH0ke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCisJCSAgICAgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiIC1keWxpYl9maWxlICR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKIAkJICAgICAgcGF0aD0KIAkJICAgIGZpCiAJCSAgZmkKQEAgLTU5NTgsNyArNzEwMyw3IEBACiAJICBjb21waWxlX2RlcGxpYnM9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkY29tcGlsZV9kZXBsaWJzIgogCSAgZmluYWxpemVfZGVwbGlicz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRmaW5hbGl6ZV9kZXBsaWJzIgogCWVsc2UKLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgImAkRUNITyAiWCAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICJgJEVDSE8gIiAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKIAlmaQogICAgICAgZmkKICAgICAgIGRlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyIKQEAgLTU5NzUsNyArNzEyMCw3IEBACiAJICBmb3IgZGlyIGluICRuZXdsaWJfc2VhcmNoX3BhdGg7IGRvCiAJICAgIGNhc2UgIiRsaWJfc2VhcmNoX3BhdGggIiBpbgogCSAgICAqIiAkZGlyICIqKSA7OwotCSAgICAqKSBsaWJfc2VhcmNoX3BhdGg9IiRsaWJfc2VhcmNoX3BhdGggJGRpciIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgbGliX3NlYXJjaF9wYXRoICIgJGRpciIgOzsKIAkgICAgZXNhYwogCSAgZG9uZQogCSAgbmV3bGliX3NlYXJjaF9wYXRoPQpAQCAtNjAzMywxMCArNzE3OCwxMCBAQAogCSAgICAtTCopCiAJICAgICAgY2FzZSAiICR0bXBfbGlicyAiIGluCiAJICAgICAgKiIgJGRlcGxpYiAiKikgOzsKLQkgICAgICAqKSB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiIDs7CisJICAgICAgKikgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIiA7OwogCSAgICAgIGVzYWMKIAkgICAgICA7OwotCSAgICAqKSB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIgOzsKIAkgICAgZXNhYwogCSAgZG9uZQogCSAgZXZhbCAkdmFyPVwiJHRtcF9saWJzXCIKQEAgLTYwNTIsNyArNzE5Nyw3IEBACiAJICA7OwogCWVzYWMKIAlpZiB0ZXN0IC1uICIkaSIgOyB0aGVuCi0JICB0bXBfbGlicz0iJHRtcF9saWJzICRpIgorCSAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkaSIKIAlmaQogICAgICAgZG9uZQogICAgICAgZGVwZW5kZW5jeV9saWJzPSR0bXBfbGlicwpAQCAtNjA5Myw3ICs3MjM4LDcgQEAKICAgICAgICMgTm93IHNldCB0aGUgdmFyaWFibGVzIGZvciBidWlsZGluZyBvbGQgbGlicmFyaWVzLgogICAgICAgYnVpbGRfbGlidG9vbF9saWJzPW5vCiAgICAgICBvbGRsaWJzPSIkb3V0cHV0IgotICAgICAgb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMiCisgICAgICBmdW5jX2FwcGVuZCBvYmpzICIkb2xkX2RlcGxpYnMiCiAgICAgICA7OwogCiAgICAgbGliKQpAQCAtNjEyNiwxMCArNzI3MSwxMCBAQAogCWlmIHRlc3QgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgIT0gcGFzc19hbGw7IHRoZW4KIAkgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBidWlsZCBsaWJ0b29sIGxpYnJhcnkgXGAkb3V0cHV0JyBmcm9tIG5vbi1saWJ0b29sIG9iamVjdHMgb24gdGhpcyBob3N0OiRvYmpzIgogCWVsc2UKLQkgICRFQ0hPCisJICBlY2hvCiAJICAkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUgbm9uLWxpYnRvb2wiCiAJICAkRUNITyAiKioqIG9iamVjdHMgJG9ianMgaXMgbm90IHBvcnRhYmxlISIKLQkgIGxpYm9ianM9IiRsaWJvYmpzICRvYmpzIgorCSAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRvYmpzIgogCWZpCiAgICAgICBmaQogCkBAIC02MTg4LDEzICs3MzMzLDE0IEBACiAJICAjIHdoaWNoIGhhcyBhbiBleHRyYSAxIGFkZGVkIGp1c3QgZm9yIGZ1bgogCSAgIwogCSAgY2FzZSAkdmVyc2lvbl90eXBlIGluCisJICAjIGNvcnJlY3QgbGludXggdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKIAkgIGRhcndpbnxsaW51eHxvc2Z8d2luZG93c3xub25lKQogCSAgICBmdW5jX2FyaXRoICRudW1iZXJfbWFqb3IgKyAkbnVtYmVyX21pbm9yCiAJICAgIGN1cnJlbnQ9JGZ1bmNfYXJpdGhfcmVzdWx0CiAJICAgIGFnZT0iJG51bWJlcl9taW5vciIKIAkgICAgcmV2aXNpb249IiRudW1iZXJfcmV2aXNpb24iCiAJICAgIDs7Ci0JICBmcmVlYnNkLWFvdXR8ZnJlZWJzZC1lbGZ8c3Vub3MpCisJICBmcmVlYnNkLWFvdXR8ZnJlZWJzZC1lbGZ8cW54fHN1bm9zKQogCSAgICBjdXJyZW50PSIkbnVtYmVyX21ham9yIgogCSAgICByZXZpc2lvbj0iJG51bWJlcl9taW5vciIKIAkgICAgYWdlPSIwIgpAQCAtNjIwNiw2ICs3MzUyLDkgQEAKIAkgICAgcmV2aXNpb249IiRudW1iZXJfbWlub3IiCiAJICAgIGx0X2lyaXhfaW5jcmVtZW50PW5vCiAJICAgIDs7CisJICAqKQorCSAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gIiRtb2RlbmFtZTogdW5rbm93biBsaWJyYXJ5IHZlcnNpb24gdHlwZSBcYCR2ZXJzaW9uX3R5cGUnIgorCSAgICA7OwogCSAgZXNhYwogCSAgOzsKIAlubykKQEAgLTYzMDQsNyArNzQ1Myw3IEBACiAJICB2ZXJzdWZmaXg9IiRtYWpvci4kcmV2aXNpb24iCiAJICA7OwogCi0JbGludXgpCisJbGludXgpICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogCSAgZnVuY19hcml0aCAkY3VycmVudCAtICRhZ2UKIAkgIG1ham9yPS4kZnVuY19hcml0aF9yZXN1bHQKIAkgIHZlcnN1ZmZpeD0iJG1ham9yLiRhZ2UuJHJldmlzaW9uIgpAQCAtNjMyNyw3ICs3NDc2LDcgQEAKIAkgIGRvbmUKIAogCSAgIyBNYWtlIGV4ZWN1dGFibGVzIGRlcGVuZCBvbiBvdXIgY3VycmVudCB2ZXJzaW9uLgotCSAgdmVyc3RyaW5nPSIkdmVyc3RyaW5nOiR7Y3VycmVudH0uMCIKKwkgIGZ1bmNfYXBwZW5kIHZlcnN0cmluZyAiOiR7Y3VycmVudH0uMCIKIAkgIDs7CiAKIAlxbngpCkBAIC02Mzk1LDEwICs3NTQ0LDEwIEBACiAgICAgICBmaQogCiAgICAgICBmdW5jX2dlbmVyYXRlX2Rsc3ltcyAiJGxpYm5hbWUiICIkbGlibmFtZSIgInllcyIKLSAgICAgIGxpYm9ianM9IiRsaWJvYmpzICRzeW1maWxlb2JqIgorICAgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRzeW1maWxlb2JqIgogICAgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KIAotICAgICAgaWYgdGVzdCAiJG1vZGUiICE9IHJlbGluazsgdGhlbgorICAgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbms7IHRoZW4KIAkjIFJlbW92ZSBvdXIgb3V0cHV0cywgYnV0IGRvbid0IHJlbW92ZSBvYmplY3QgZmlsZXMgc2luY2UgdGhleQogCSMgbWF5IGhhdmUgYmVlbiBjcmVhdGVkIHdoZW4gY29tcGlsaW5nIFBJQyBvYmplY3RzLgogCXJlbW92ZWxpc3Q9CkBAIC02NDE0LDcgKzc1NjMsNyBAQAogCQkgICBjb250aW51ZQogCQkgZmkKIAkgICAgICAgZmkKLQkgICAgICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJHAiCisJICAgICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkcCIKIAkgICAgICAgOzsKIAkgICAgKikgOzsKIAkgIGVzYWMKQEAgLTY0MjUsMjcgKzc1NzQsMjggQEAKIAogICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCiAgICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzICYmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IGNvbnZlbmllbmNlIDsgdGhlbgotCW9sZGxpYnM9IiRvbGRsaWJzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCisJZnVuY19hcHBlbmQgb2xkbGlicyAiICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCiAKIAkjIFRyYW5zZm9ybSAubG8gZmlsZXMgdG8gLm8gZmlsZXMuCi0Jb2xkb2Jqcz0iJG9ianMgImAkRUNITyAiWCRsaWJvYmpzIiB8ICRTUDJOTCB8ICRYc2VkIC1lICcvXC4nJHtsaWJleHR9JyQvZCcgLWUgIiRsbzJvIiB8ICROTDJTUGAKKwlvbGRvYmpzPSIkb2JqcyAiYCRFQ0hPICIkbGlib2JqcyIgfCAkU1AyTkwgfCAkU0VEICIvXC4ke2xpYmV4dH0kL2Q7ICRsbzJvIiB8ICROTDJTUGAKICAgICAgIGZpCiAKICAgICAgICMgRWxpbWluYXRlIGFsbCB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMuCiAgICAgICAjZm9yIHBhdGggaW4gJG5vdGluc3RfcGF0aDsgZG8KLSAgICAgICMJbGliX3NlYXJjaF9wYXRoPWAkRUNITyAiWCRsaWJfc2VhcmNoX3BhdGggIiB8ICRYc2VkIC1lICJzJSAkcGF0aCAlICVnImAKLSAgICAgICMJZGVwbGlicz1gJEVDSE8gIlgkZGVwbGlicyAiIHwgJFhzZWQgLWUgInMlIC1MJHBhdGggJSAlZyJgCi0gICAgICAjCWRlcGVuZGVuY3lfbGlicz1gJEVDSE8gIlgkZGVwZW5kZW5jeV9saWJzICIgfCAkWHNlZCAtZSAicyUgLUwkcGF0aCAlICVnImAKKyAgICAgICMJbGliX3NlYXJjaF9wYXRoPWAkRUNITyAiJGxpYl9zZWFyY2hfcGF0aCAiIHwgJFNFRCAicyUgJHBhdGggJSAlZyJgCisgICAgICAjCWRlcGxpYnM9YCRFQ0hPICIkZGVwbGlicyAiIHwgJFNFRCAicyUgLUwkcGF0aCAlICVnImAKKyAgICAgICMJZGVwZW5kZW5jeV9saWJzPWAkRUNITyAiJGRlcGVuZGVuY3lfbGlicyAiIHwgJFNFRCAicyUgLUwkcGF0aCAlICVnImAKICAgICAgICNkb25lCiAKICAgICAgIGlmIHRlc3QgLW4gIiR4cnBhdGgiOyB0aGVuCiAJIyBJZiB0aGUgdXNlciBzcGVjaWZpZWQgYW55IHJwYXRoIGZsYWdzLCB0aGVuIGFkZCB0aGVtLgogCXRlbXBfeHJwYXRoPQogCWZvciBsaWJkaXIgaW4gJHhycGF0aDsgZG8KLQkgIHRlbXBfeHJwYXRoPSIkdGVtcF94cnBhdGggLVIkbGliZGlyIgorCSAgZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCisJICBmdW5jX2FwcGVuZCB0ZW1wX3hycGF0aCAiIC1SJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKIAkgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCiAJICAqIiAkbGliZGlyICIqKSA7OwotCSAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIiA7OworCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwogCSAgZXNhYwogCWRvbmUKIAlpZiB0ZXN0ICIkaGFyZGNvZGVfaW50b19saWJzIiAhPSB5ZXMgfHwgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgpAQCAtNjQ1OSw3ICs3NjA5LDcgQEAKICAgICAgIGZvciBsaWIgaW4gJG9sZF9kbGZpbGVzOyBkbwogCWNhc2UgIiAkZGxwcmVmaWxlcyAkZGxmaWxlcyAiIGluCiAJKiIgJGxpYiAiKikgOzsKLQkqKSBkbGZpbGVzPSIkZGxmaWxlcyAkbGliIiA7OworCSopIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkbGliIiA7OwogCWVzYWMKICAgICAgIGRvbmUKIApAQCAtNjQ2OSwxOSArNzYxOSwxOSBAQAogICAgICAgZm9yIGxpYiBpbiAkb2xkX2RscHJlZmlsZXM7IGRvCiAJY2FzZSAiJGRscHJlZmlsZXMgIiBpbgogCSoiICRsaWIgIiopIDs7Ci0JKikgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGxpYiIgOzsKKwkqKSBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGxpYiIgOzsKIAllc2FjCiAgICAgICBkb25lCiAKICAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCiAJaWYgdGVzdCAtbiAiJHJwYXRoIjsgdGhlbgogCSAgY2FzZSAkaG9zdCBpbgotCSAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLSotYmVvcyogfCAqLWNlZ2NjKikKKwkgICotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1vczIqIHwgKi0qLWJlb3MqIHwgKi1jZWdjYyogfCAqLSotaGFpa3UqKQogCSAgICAjIHRoZXNlIHN5c3RlbXMgZG9uJ3QgYWN0dWFsbHkgaGF2ZSBhIGMgbGlicmFyeSAoYXMgc3VjaCkhCiAJICAgIDs7CiAJICAqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCiAJICAgICMgUmhhcHNvZHkgQyBsaWJyYXJ5IGlzIGluIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0JICAgIGRlcGxpYnM9IiRkZXBsaWJzIFN5c3RlbS5sdGZyYW1ld29yayIKKwkgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIFN5c3RlbS5sdGZyYW1ld29yayIKIAkgICAgOzsKIAkgICotKi1uZXRic2QqKQogCSAgICAjIERvbid0IGxpbmsgd2l0aCBsaWJjIHVudGlsIHRoZSBhLm91dCBsZC5zbyBpcyBmaXhlZC4KQEAgLTY0OTgsNyArNzY0OCw3IEBACiAJICAqKQogCSAgICAjIEFkZCBsaWJjIHRvIGRlcGxpYnMgb24gYWxsIG90aGVyIHN5c3RlbXMgaWYgbmVjZXNzYXJ5LgogCSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9uZWVkX2xjIiA9ICJ5ZXMiOyB0aGVuCi0JICAgICAgZGVwbGlicz0iJGRlcGxpYnMgLWxjIgorCSAgICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAtbGMiCiAJICAgIGZpCiAJICAgIDs7CiAJICBlc2FjCkBAIC02NTQ3LDcgKzc2OTcsNyBAQAogCQlpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCiAJCSAgY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCiAJCSAgKiIgJGkgIiopCi0JCSAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKIAkJICAgIGk9IiIKIAkJICAgIDs7CiAJCSAgZXNhYwpAQCAtNjU1OCwyMSArNzcwOCwyMSBAQAogCQkgIHNldCBkdW1teSAkZGVwbGliX21hdGNoZXM7IHNoaWZ0CiAJCSAgZGVwbGliX21hdGNoPSQxCiAJCSAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgotCQkgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisJCSAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCiAJCSAgZWxzZQogCQkgICAgZHJvcHBlZGRlcHM9eWVzCi0JCSAgICAkRUNITworCQkgICAgZWNobwogCQkgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBkeW5hbWljIGxpbmtlciBkb2VzIG5vdCBhY2NlcHQgbmVlZGVkIGxpYnJhcnkgJGkuIgotCQkgICAgJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSAgICAkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkJICAgICRFQ0hPICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIEkgYmVsaWV2ZSB5b3UgZG8gbm90IGhhdmUiCi0JCSAgICAkRUNITyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgaXQgZm9yIgotCQkgICAgJEVDSE8gIioqKiBpdHMgZHluYW1pYyBkZXBlbmRlbmN5IGxpc3QgdGhhdCBwcm9ncmFtcyBnZXQgcmVzb2x2ZWQgd2l0aCBhdCBydW50aW1lLiIKKwkJICAgIGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCSAgICBlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQkgICAgZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCBJIGJlbGlldmUgeW91IGRvIG5vdCBoYXZlIgorCQkgICAgZWNobyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgaXQgZm9yIgorCQkgICAgZWNobyAiKioqIGl0cyBkeW5hbWljIGRlcGVuZGVuY3kgbGlzdCB0aGF0IHByb2dyYW1zIGdldCByZXNvbHZlZCB3aXRoIGF0IHJ1bnRpbWUuIgogCQkgIGZpCiAJCWZpCiAJCTs7CiAJICAgICAgKikKLQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisJCWZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKIAkJOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKQEAgLTY1OTAsNyArNzc0MCw3IEBACiAJCSAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgogCQkgICAgY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCiAJCSAgICAqIiAkaSAiKikKLQkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKIAkJICAgICAgaT0iIgogCQkgICAgICA7OwogCQkgICAgZXNhYwpAQCAtNjYwMSwyOSArNzc1MSwyOSBAQAogCQkgICAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlczsgc2hpZnQKIAkJICAgIGRlcGxpYl9tYXRjaD0kMQogCQkgICAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgotCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgogCQkgICAgZWxzZQogCQkgICAgICBkcm9wcGVkZGVwcz15ZXMKLQkJICAgICAgJEVDSE8KKwkJICAgICAgZWNobwogCQkgICAgICAkRUNITyAiKioqIFdhcm5pbmc6IGR5bmFtaWMgbGlua2VyIGRvZXMgbm90IGFjY2VwdCBuZWVkZWQgbGlicmFyeSAkaS4iCi0JCSAgICAgICRFQ0hPICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgotCQkgICAgICAkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkJICAgICAgJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKLQkJICAgICAgJEVDSE8gIioqKiBiZWNhdXNlIGEgdGVzdF9jb21waWxlIGRpZCByZXZlYWwgdGhhdCB0aGUgbGlua2VyIGRpZCBub3QgdXNlIHRoaXMgb25lIgotCQkgICAgICAkRUNITyAiKioqIGFzIGEgZHluYW1pYyBkZXBlbmRlbmN5IHRoYXQgcHJvZ3JhbXMgY2FuIGdldCByZXNvbHZlZCB3aXRoIGF0IHJ1bnRpbWUuIgorCQkgICAgICBlY2hvICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgorCQkgICAgICBlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQkgICAgICBlY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCisJCSAgICAgIGVjaG8gIioqKiBiZWNhdXNlIGEgdGVzdF9jb21waWxlIGRpZCByZXZlYWwgdGhhdCB0aGUgbGlua2VyIGRpZCBub3QgdXNlIHRoaXMgb25lIgorCQkgICAgICBlY2hvICIqKiogYXMgYSBkeW5hbWljIGRlcGVuZGVuY3kgdGhhdCBwcm9ncmFtcyBjYW4gZ2V0IHJlc29sdmVkIHdpdGggYXQgcnVudGltZS4iCiAJCSAgICBmaQogCQkgIGZpCiAJCWVsc2UKIAkJICBkcm9wcGVkZGVwcz15ZXMKLQkJICAkRUNITworCQkgIGVjaG8KIAkJICAkRUNITyAiKioqIFdhcm5pbmchICBMaWJyYXJ5ICRpIGlzIG5lZWRlZCBieSB0aGlzIGxpYnJhcnkgYnV0IEkgd2FzIG5vdCBhYmxlIHRvIgotCQkgICRFQ0hPICIqKiogbWFrZSBpdCBsaW5rIGluISAgWW91IHdpbGwgcHJvYmFibHkgbmVlZCB0byBpbnN0YWxsIGl0IG9yIHNvbWUiCi0JCSAgJEVDSE8gIioqKiBsaWJyYXJ5IHRoYXQgaXQgZGVwZW5kcyBvbiBiZWZvcmUgdGhpcyBsaWJyYXJ5IHdpbGwgYmUgZnVsbHkiCi0JCSAgJEVDSE8gIioqKiBmdW5jdGlvbmFsLiAgSW5zdGFsbGluZyBpdCBiZWZvcmUgY29udGludWluZyB3b3VsZCBiZSBldmVuIGJldHRlci4iCisJCSAgZWNobyAiKioqIG1ha2UgaXQgbGluayBpbiEgIFlvdSB3aWxsIHByb2JhYmx5IG5lZWQgdG8gaW5zdGFsbCBpdCBvciBzb21lIgorCQkgIGVjaG8gIioqKiBsaWJyYXJ5IHRoYXQgaXQgZGVwZW5kcyBvbiBiZWZvcmUgdGhpcyBsaWJyYXJ5IHdpbGwgYmUgZnVsbHkiCisJCSAgZWNobyAiKioqIGZ1bmN0aW9uYWwuICBJbnN0YWxsaW5nIGl0IGJlZm9yZSBjb250aW51aW5nIHdvdWxkIGJlIGV2ZW4gYmV0dGVyLiIKIAkJZmkKIAkJOzsKIAkgICAgICAqKQotCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgogCQk7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQpAQCAtNjY0MCwxNSArNzc5MCwyNyBAQAogCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkJY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCiAJCSoiICRhX2RlcGxpYiAiKikKLQkJICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisJCSAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKIAkJICBhX2RlcGxpYj0iIgogCQkgIDs7CiAJCWVzYWMKIAkgICAgICBmaQogCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCiAJCWxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAorCQlpZiB0ZXN0IC1uICIkZmlsZV9tYWdpY19nbG9iIjsgdGhlbgorCQkgIGxpYm5hbWVnbG9iPWBmdW5jX2VjaG9fYWxsICIkbGlibmFtZSIgfCAkU0VEIC1lICRmaWxlX21hZ2ljX2dsb2JgCisJCWVsc2UKKwkJICBsaWJuYW1lZ2xvYj0kbGlibmFtZQorCQlmaQorCQl0ZXN0ICIkd2FudF9ub2Nhc2VnbG9iIiA9IHllcyAmJiBub2Nhc2VnbG9iPWBzaG9wdCAtcCBub2Nhc2VnbG9iYAogCQlmb3IgaSBpbiAkbGliX3NlYXJjaF9wYXRoICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aDsgZG8KLQkJICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVbLi1dKiAyPi9kZXYvbnVsbGAKKwkJICBpZiB0ZXN0ICIkd2FudF9ub2Nhc2VnbG9iIiA9IHllczsgdGhlbgorCQkgICAgc2hvcHQgLXMgbm9jYXNlZ2xvYgorCQkgICAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lZ2xvYlsuLV0qIDI+L2Rldi9udWxsYAorCQkgICAgJG5vY2FzZWdsb2IKKwkJICBlbHNlCisJCSAgICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVnbG9iWy4tXSogMj4vZGV2L251bGxgCisJCSAgZmkKIAkJICBmb3IgcG90ZW50X2xpYiBpbiAkcG90ZW50aWFsX2xpYnM7IGRvCiAJCSAgICAgICMgRm9sbG93IHNvZnQgbGlua3MuCiAJCSAgICAgIGlmIGxzIC1sTGQgIiRwb3RlbnRfbGliIiAyPi9kZXYvbnVsbCB8CkBAIC02NjY1LDEzICs3ODI3LDEzIEBACiAJCQlwb3RsaWJsaW5rPWBscyAtbGQgJHBvdGxpYiB8ICR7U0VEfSAncy8uKiAtPiAvLydgCiAJCQljYXNlICRwb3RsaWJsaW5rIGluCiAJCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIHBvdGxpYj0iJHBvdGxpYmxpbmsiOzsKLQkJCSopIHBvdGxpYj1gJEVDSE8gIlgkcG90bGliIiB8ICRYc2VkIC1lICdzLFteL10qJCwsJ2AiJHBvdGxpYmxpbmsiOzsKKwkJCSopIHBvdGxpYj1gJEVDSE8gIiRwb3RsaWIiIHwgJFNFRCAncyxbXi9dKiQsLCdgIiRwb3RsaWJsaW5rIjs7CiAJCQllc2FjCiAJCSAgICAgIGRvbmUKIAkJICAgICAgaWYgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJHBvdGxpYlwiIDI+L2Rldi9udWxsIHwKIAkJCSAkU0VEIC1lIDEwcSB8CiAJCQkgJEVHUkVQICIkZmlsZV9tYWdpY19yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KLQkJCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkJCWZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCiAJCQlhX2RlcGxpYj0iIgogCQkJYnJlYWsgMgogCQkgICAgICBmaQpAQCAtNjY4MCwxMiArNzg0MiwxMiBAQAogCSAgICAgIGZpCiAJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KIAkJZHJvcHBlZGRlcHM9eWVzCi0JCSRFQ0hPCisJCWVjaG8KIAkJJEVDSE8gIioqKiBXYXJuaW5nOiBsaW5rZXIgcGF0aCBkb2VzIG5vdCBoYXZlIHJlYWwgZmlsZSBmb3IgbGlicmFyeSAkYV9kZXBsaWIuIgotCQkkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKLQkJJEVDSE8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCi0JCSRFQ0hPICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCi0JCSRFQ0hPICIqKiogYmVjYXVzZSBJIGRpZCBjaGVjayB0aGUgbGlua2VyIHBhdGggbG9va2luZyBmb3IgYSBmaWxlIHN0YXJ0aW5nIgorCQllY2hvICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgorCQllY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQllY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCisJCWVjaG8gIioqKiBiZWNhdXNlIEkgZGlkIGNoZWNrIHRoZSBsaW5rZXIgcGF0aCBsb29raW5nIGZvciBhIGZpbGUgc3RhcnRpbmciCiAJCWlmIHRlc3QgLXogIiRwb3RsaWIiIDsgdGhlbgogCQkgICRFQ0hPICIqKiogd2l0aCAkbGlibmFtZSBidXQgbm8gY2FuZGlkYXRlcyB3ZXJlIGZvdW5kLiAoLi4uZm9yIGZpbGUgbWFnaWMgdGVzdCkiCiAJCWVsc2UKQEAgLTY2OTYsNyArNzg1OCw3IEBACiAJICAgICAgOzsKIAkgICAgKikKIAkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgotCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgogCSAgICAgIDs7CiAJICAgIGVzYWMKIAkgIGRvbmUgIyBHb25lIHRocm91Z2ggYWxsIGRlcGxpYnMuCkBAIC02NzEyLDcgKzc4NzQsNyBAQAogCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkJY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCiAJCSoiICRhX2RlcGxpYiAiKikKLQkJICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisJCSAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKIAkJICBhX2RlcGxpYj0iIgogCQkgIDs7CiAJCWVzYWMKQEAgLTY3MjMsOSArNzg4NSw5IEBACiAJCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCiAJCSAgZm9yIHBvdGVudF9saWIgaW4gJHBvdGVudGlhbF9saWJzOyBkbwogCQkgICAgcG90bGliPSIkcG90ZW50X2xpYiIgIyBzZWUgc3ltbGluay1jaGVjayBhYm92ZSBpbiBmaWxlX21hZ2ljIHRlc3QKLQkJICAgIGlmIGV2YWwgIlwkRUNITyBcIlgkcG90ZW50X2xpYlwiIiAyPi9kZXYvbnVsbCB8ICRYc2VkIC1lIDEwcSB8IFwKKwkJICAgIGlmIGV2YWwgIlwkRUNITyBcIiRwb3RlbnRfbGliXCIiIDI+L2Rldi9udWxsIHwgJFNFRCAxMHEgfCBcCiAJCSAgICAgICAkRUdSRVAgIiRtYXRjaF9wYXR0ZXJuX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgotCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCiAJCSAgICAgIGFfZGVwbGliPSIiCiAJCSAgICAgIGJyZWFrIDIKIAkJICAgIGZpCkBAIC02NzM0LDEyICs3ODk2LDEyIEBACiAJICAgICAgZmkKIAkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgogCQlkcm9wcGVkZGVwcz15ZXMKLQkJJEVDSE8KKwkJZWNobwogCQkkRUNITyAiKioqIFdhcm5pbmc6IGxpbmtlciBwYXRoIGRvZXMgbm90IGhhdmUgcmVhbCBmaWxlIGZvciBsaWJyYXJ5ICRhX2RlcGxpYi4iCi0JCSRFQ0hPICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgotCQkkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkJJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKLQkJJEVDSE8gIioqKiBiZWNhdXNlIEkgZGlkIGNoZWNrIHRoZSBsaW5rZXIgcGF0aCBsb29raW5nIGZvciBhIGZpbGUgc3RhcnRpbmciCisJCWVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCWVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCWVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKKwkJZWNobyAiKioqIGJlY2F1c2UgSSBkaWQgY2hlY2sgdGhlIGxpbmtlciBwYXRoIGxvb2tpbmcgZm9yIGEgZmlsZSBzdGFydGluZyIKIAkJaWYgdGVzdCAteiAiJHBvdGxpYiIgOyB0aGVuCiAJCSAgJEVDSE8gIioqKiB3aXRoICRsaWJuYW1lIGJ1dCBubyBjYW5kaWRhdGVzIHdlcmUgZm91bmQuICguLi5mb3IgcmVnZXggcGF0dGVybiB0ZXN0KSIKIAkJZWxzZQpAQCAtNjc1MCwzMiArNzkxMiwzMiBAQAogCSAgICAgIDs7CiAJICAgICopCiAJICAgICAgIyBBZGQgYSAtTCBhcmd1bWVudC4KLQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKIAkgICAgICA7OwogCSAgICBlc2FjCiAJICBkb25lICMgR29uZSB0aHJvdWdoIGFsbCBkZXBsaWJzLgogCSAgOzsKIAlub25lIHwgdW5rbm93biB8ICopCiAJICBuZXdkZXBsaWJzPSIiCi0JICB0bXBfZGVwbGlicz1gJEVDSE8gIlggJGRlcGxpYnMiIHwgJFhzZWQgXAotCSAgICAgIC1lICdzLyAtbGMkLy8nIC1lICdzLyAtW0xSXVteIF0qLy9nJ2AKKwkgIHRtcF9kZXBsaWJzPWAkRUNITyAiICRkZXBsaWJzIiB8ICRTRUQgJ3MvIC1sYyQvLzsgcy8gLVtMUl1bXiBdKi8vZydgCiAJICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCiAJICAgIGZvciBpIGluICRwcmVkZXBzICRwb3N0ZGVwcyA7IGRvCiAJICAgICAgIyBjYW4ndCB1c2UgWHNlZCBiZWxvdywgYmVjYXVzZSAkaSBtaWdodCBjb250YWluICcvJwotCSAgICAgIHRtcF9kZXBsaWJzPWAkRUNITyAiWCAkdG1wX2RlcGxpYnMiIHwgJFhzZWQgLWUgInMsJGksLCJgCisJICAgICAgdG1wX2RlcGxpYnM9YCRFQ0hPICIgJHRtcF9kZXBsaWJzIiB8ICRTRUQgInMsJGksLCJgCiAJICAgIGRvbmUKIAkgIGZpCi0JICBpZiAkRUNITyAiWCAkdG1wX2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MvWwkgXS8vZycgfAotCSAgICAgJEdSRVAgLiA+L2Rldi9udWxsOyB0aGVuCi0JICAgICRFQ0hPCisJICBjYXNlICR0bXBfZGVwbGlicyBpbgorCSAgKlshXAlcIF0qKQorCSAgICBlY2hvCiAJICAgIGlmIHRlc3QgIlgkZGVwbGlic19jaGVja19tZXRob2QiID0gIlhub25lIjsgdGhlbgotCSAgICAgICRFQ0hPICIqKiogV2FybmluZzogaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBwbGF0Zm9ybS4iCisJICAgICAgZWNobyAiKioqIFdhcm5pbmc6IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgcGxhdGZvcm0uIgogCSAgICBlbHNlCi0JICAgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgbm90IGtub3duIHRvIGJlIHN1cHBvcnRlZC4iCisJICAgICAgZWNobyAiKioqIFdhcm5pbmc6IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBub3Qga25vd24gdG8gYmUgc3VwcG9ydGVkLiIKIAkgICAgZmkKLQkgICAgJEVDSE8gIioqKiBBbGwgZGVjbGFyZWQgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIGJlaW5nIGRyb3BwZWQuIgorCSAgICBlY2hvICIqKiogQWxsIGRlY2xhcmVkIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBiZWluZyBkcm9wcGVkLiIKIAkgICAgZHJvcHBlZGRlcHM9eWVzCi0JICBmaQorCSAgICA7OworCSAgZXNhYwogCSAgOzsKIAllc2FjCiAJdmVyc3VmZml4PSR2ZXJzdWZmaXhfc2F2ZQpAQCAtNjc4NywyMyArNzk0OSwyMyBAQAogCWNhc2UgJGhvc3QgaW4KIAkqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCiAJICAjIE9uIFJoYXBzb2R5IHJlcGxhY2UgdGhlIEMgbGlicmFyeSB3aXRoIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0JICBuZXdkZXBsaWJzPWAkRUNITyAiWCAkbmV3ZGVwbGlicyIgfCAkWHNlZCAtZSAncy8gLWxjIC8gU3lzdGVtLmx0ZnJhbWV3b3JrIC8nYAorCSAgbmV3ZGVwbGlicz1gJEVDSE8gIiAkbmV3ZGVwbGlicyIgfCAkU0VEICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCiAJICA7OwogCWVzYWMKIAogCWlmIHRlc3QgIiRkcm9wcGVkZGVwcyIgPSB5ZXM7IHRoZW4KIAkgIGlmIHRlc3QgIiRtb2R1bGUiID0geWVzOyB0aGVuCi0JICAgICRFQ0hPCi0JICAgICRFQ0hPICIqKiogV2FybmluZzogbGlidG9vbCBjb3VsZCBub3Qgc2F0aXNmeSBhbGwgZGVjbGFyZWQgaW50ZXItbGlicmFyeSIKKwkgICAgZWNobworCSAgICBlY2hvICIqKiogV2FybmluZzogbGlidG9vbCBjb3VsZCBub3Qgc2F0aXNmeSBhbGwgZGVjbGFyZWQgaW50ZXItbGlicmFyeSIKIAkgICAgJEVDSE8gIioqKiBkZXBlbmRlbmNpZXMgb2YgbW9kdWxlICRsaWJuYW1lLiAgVGhlcmVmb3JlLCBsaWJ0b29sIHdpbGwgY3JlYXRlIgotCSAgICAkRUNITyAiKioqIGEgc3RhdGljIG1vZHVsZSwgdGhhdCBzaG91bGQgd29yayBhcyBsb25nIGFzIHRoZSBkbG9wZW5pbmciCi0JICAgICRFQ0hPICIqKiogYXBwbGljYXRpb24gaXMgbGlua2VkIHdpdGggdGhlIC1kbG9wZW4gZmxhZy4iCisJICAgIGVjaG8gIioqKiBhIHN0YXRpYyBtb2R1bGUsIHRoYXQgc2hvdWxkIHdvcmsgYXMgbG9uZyBhcyB0aGUgZGxvcGVuaW5nIgorCSAgICBlY2hvICIqKiogYXBwbGljYXRpb24gaXMgbGlua2VkIHdpdGggdGhlIC1kbG9wZW4gZmxhZy4iCiAJICAgIGlmIHRlc3QgLXogIiRnbG9iYWxfc3ltYm9sX3BpcGUiOyB0aGVuCi0JICAgICAgJEVDSE8KLQkgICAgICAkRUNITyAiKioqIEhvd2V2ZXIsIHRoaXMgd291bGQgb25seSB3b3JrIGlmIGxpYnRvb2wgd2FzIGFibGUgdG8gZXh0cmFjdCBzeW1ib2wiCi0JICAgICAgJEVDSE8gIioqKiBsaXN0cyBmcm9tIGEgcHJvZ3JhbSwgdXNpbmcgXGBubScgb3IgZXF1aXZhbGVudCwgYnV0IGxpYnRvb2wgY291bGQiCi0JICAgICAgJEVDSE8gIioqKiBub3QgZmluZCBzdWNoIGEgcHJvZ3JhbS4gIFNvLCB0aGlzIG1vZHVsZSBpcyBwcm9iYWJseSB1c2VsZXNzLiIKLQkgICAgICAkRUNITyAiKioqIFxgbm0nIGZyb20gR05VIGJpbnV0aWxzIGFuZCBhIGZ1bGwgcmVidWlsZCBtYXkgaGVscC4iCisJICAgICAgZWNobworCSAgICAgIGVjaG8gIioqKiBIb3dldmVyLCB0aGlzIHdvdWxkIG9ubHkgd29yayBpZiBsaWJ0b29sIHdhcyBhYmxlIHRvIGV4dHJhY3Qgc3ltYm9sIgorCSAgICAgIGVjaG8gIioqKiBsaXN0cyBmcm9tIGEgcHJvZ3JhbSwgdXNpbmcgXGBubScgb3IgZXF1aXZhbGVudCwgYnV0IGxpYnRvb2wgY291bGQiCisJICAgICAgZWNobyAiKioqIG5vdCBmaW5kIHN1Y2ggYSBwcm9ncmFtLiAgU28sIHRoaXMgbW9kdWxlIGlzIHByb2JhYmx5IHVzZWxlc3MuIgorCSAgICAgIGVjaG8gIioqKiBcYG5tJyBmcm9tIEdOVSBiaW51dGlscyBhbmQgYSBmdWxsIHJlYnVpbGQgbWF5IGhlbHAuIgogCSAgICBmaQogCSAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0gbm87IHRoZW4KIAkgICAgICBvbGRsaWJzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgpAQCAtNjgxMywxNiArNzk3NSwxNiBAQAogCSAgICAgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubwogCSAgICBmaQogCSAgZWxzZQotCSAgICAkRUNITyAiKioqIFRoZSBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyB0aGF0IGhhdmUgYmVlbiBkcm9wcGVkIGhlcmUgd2lsbCBiZSIKLQkgICAgJEVDSE8gIioqKiBhdXRvbWF0aWNhbGx5IGFkZGVkIHdoZW5ldmVyIGEgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCB0aGlzIGxpYnJhcnkiCi0JICAgICRFQ0hPICIqKiogb3IgaXMgZGVjbGFyZWQgdG8gLWRsb3BlbiBpdC4iCisJICAgIGVjaG8gIioqKiBUaGUgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgdGhhdCBoYXZlIGJlZW4gZHJvcHBlZCBoZXJlIHdpbGwgYmUiCisJICAgIGVjaG8gIioqKiBhdXRvbWF0aWNhbGx5IGFkZGVkIHdoZW5ldmVyIGEgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCB0aGlzIGxpYnJhcnkiCisJICAgIGVjaG8gIioqKiBvciBpcyBkZWNsYXJlZCB0byAtZGxvcGVuIGl0LiIKIAogCSAgICBpZiB0ZXN0ICIkYWxsb3dfdW5kZWZpbmVkIiA9IG5vOyB0aGVuCi0JICAgICAgJEVDSE8KLQkgICAgICAkRUNITyAiKioqIFNpbmNlIHRoaXMgbGlicmFyeSBtdXN0IG5vdCBjb250YWluIHVuZGVmaW5lZCBzeW1ib2xzLCIKLQkgICAgICAkRUNITyAiKioqIGJlY2F1c2UgZWl0aGVyIHRoZSBwbGF0Zm9ybSBkb2VzIG5vdCBzdXBwb3J0IHRoZW0gb3IiCi0JICAgICAgJEVDSE8gIioqKiBpdCB3YXMgZXhwbGljaXRseSByZXF1ZXN0ZWQgd2l0aCAtbm8tdW5kZWZpbmVkLCIKLQkgICAgICAkRUNITyAiKioqIGxpYnRvb2wgd2lsbCBvbmx5IGNyZWF0ZSBhIHN0YXRpYyB2ZXJzaW9uIG9mIGl0LiIKKwkgICAgICBlY2hvCisJICAgICAgZWNobyAiKioqIFNpbmNlIHRoaXMgbGlicmFyeSBtdXN0IG5vdCBjb250YWluIHVuZGVmaW5lZCBzeW1ib2xzLCIKKwkgICAgICBlY2hvICIqKiogYmVjYXVzZSBlaXRoZXIgdGhlIHBsYXRmb3JtIGRvZXMgbm90IHN1cHBvcnQgdGhlbSBvciIKKwkgICAgICBlY2hvICIqKiogaXQgd2FzIGV4cGxpY2l0bHkgcmVxdWVzdGVkIHdpdGggLW5vLXVuZGVmaW5lZCwiCisJICAgICAgZWNobyAiKioqIGxpYnRvb2wgd2lsbCBvbmx5IGNyZWF0ZSBhIHN0YXRpYyB2ZXJzaW9uIG9mIGl0LiIKIAkgICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0gbm87IHRoZW4KIAkJb2xkbGlicz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKIAkJYnVpbGRfbGlidG9vbF9saWJzPW1vZHVsZQpAQCAtNjgzOSw5ICs4MDAxLDkgQEAKICAgICAgICMgVGltZSB0byBjaGFuZ2UgYWxsIG91ciAiZm9vLmx0ZnJhbWV3b3JrIiBzdHVmZiBiYWNrIHRvICItZnJhbWV3b3JrIGZvbyIKICAgICAgIGNhc2UgJGhvc3QgaW4KIAkqLSotZGFyd2luKikKLQkgIG5ld2RlcGxpYnM9YCRFQ0hPICJYICRuZXdkZXBsaWJzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAotCSAgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9YCRFQ0hPICJYICRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKLQkgIGRlcGxpYnM9YCRFQ0hPICJYICRkZXBsaWJzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCSAgbmV3ZGVwbGlicz1gJEVDSE8gIiAkbmV3ZGVwbGlicyIgfCAkU0VEICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCSAgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9YCRFQ0hPICIgJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRTRUQgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJICBkZXBsaWJzPWAkRUNITyAiICRkZXBsaWJzIiB8ICRTRUQgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCiAJICA7OwogICAgICAgZXNhYwogCkBAIC02ODU0LDcgKzgwMTYsNyBAQAogCSopCiAJICBjYXNlICIgJGRlcGxpYnMgIiBpbgogCSAgKiIgLUwkcGF0aC8kb2JqZGlyICIqKQotCSAgICBuZXdfbGlicz0iJG5ld19saWJzIC1MJHBhdGgvJG9iamRpciIgOzsKKwkgICAgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAtTCRwYXRoLyRvYmpkaXIiIDs7CiAJICBlc2FjCiAJICA7OwogCWVzYWMKQEAgLTY4NjQsMTAgKzgwMjYsMTAgQEAKIAktTCopCiAJICBjYXNlICIgJG5ld19saWJzICIgaW4KIAkgICoiICRkZXBsaWIgIiopIDs7Ci0JICAqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7CiAJICBlc2FjCiAJICA7OwotCSopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKwkqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7CiAJZXNhYwogICAgICAgZG9uZQogICAgICAgZGVwbGlicz0iJG5ld19saWJzIgpAQCAtNjg3OSwxNSArODA0MSwyMiBAQAogCiAgICAgICAjIFRlc3QgYWdhaW4sIHdlIG1heSBoYXZlIGRlY2lkZWQgbm90IHRvIGJ1aWxkIGl0IGFueSBtb3JlCiAgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllczsgdGhlbgorCSMgUmVtb3ZlICR7d2x9IGluc3RhbmNlcyB3aGVuIGxpbmtpbmcgd2l0aCBsZC4KKwkjIEZJWE1FOiBzaG91bGQgdGVzdCB0aGUgcmlnaHQgX2NtZHMgdmFyaWFibGUuCisJY2FzZSAkYXJjaGl2ZV9jbWRzIGluCisJICAqXCRMRFwgKikgd2w9IDs7CisgICAgICAgIGVzYWMKIAlpZiB0ZXN0ICIkaGFyZGNvZGVfaW50b19saWJzIiA9IHllczsgdGhlbgogCSAgIyBIYXJkY29kZSB0aGUgbGlicmFyeSBwYXRocwogCSAgaGFyZGNvZGVfbGliZGlycz0KIAkgIGRlcF9ycGF0aD0KIAkgIHJwYXRoPSIkZmluYWxpemVfcnBhdGgiCi0JICB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKKwkgIHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKIAkgIGZvciBsaWJkaXIgaW4gJHJwYXRoOyBkbwogCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KIAkgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KKwkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCisJCWxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0CiAJCWlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgogCQkgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCiAJCWVsc2UKQEAgLTY4OTYsMTggKzgwNjUsMTggQEAKIAkJICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCiAJCSAgICA7OwogCQkgICopCi0JCSAgICBoYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKwkJICAgIGZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKIAkJICAgIDs7CiAJCSAgZXNhYwogCQlmaQogCSAgICAgIGVsc2UKIAkJZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotCQlkZXBfcnBhdGg9IiRkZXBfcnBhdGggJGZsYWciCisJCWZ1bmNfYXBwZW5kIGRlcF9ycGF0aCAiICRmbGFnIgogCSAgICAgIGZpCiAJICAgIGVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgogCSAgICAgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KIAkgICAgICAqIiAkbGliZGlyICIqKSA7OwotCSAgICAgICopIHBlcm1fcnBhdGg9IiRwZXJtX3JwYXRoICRsaWJkaXIiIDs7CisJICAgICAgKikgZnVuY19hcHBlbmQgcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICAgICAgZXNhYwogCSAgICBmaQogCSAgZG9uZQpAQCAtNjkxNSwxNyArODA4NCwxMyBAQAogCSAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiICYmCiAJICAgICB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KIAkgICAgbGliZGlyPSIkaGFyZGNvZGVfbGliZGlycyIKLQkgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQiOyB0aGVuCi0JICAgICAgZXZhbCBkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZFwiCi0JICAgIGVsc2UKLQkgICAgICBldmFsIGRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLQkgICAgZmkKKwkgICAgZXZhbCAiZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKIAkgIGZpCiAJICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiICYmIHRlc3QgLW4gIiRwZXJtX3JwYXRoIjsgdGhlbgogCSAgICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgogCSAgICBycGF0aD0KIAkgICAgZm9yIGRpciBpbiAkcGVybV9ycGF0aDsgZG8KLQkgICAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisJICAgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgogCSAgICBkb25lCiAJICAgIGV2YWwgIiRydW5wYXRoX3Zhcj0nJHJwYXRoXCQkcnVucGF0aF92YXInOyBleHBvcnQgJHJ1bnBhdGhfdmFyIgogCSAgZmkKQEAgLTY5MzMsNyArODA5OCw3IEBACiAJZmkKIAogCXNobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCIKLQl0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rICYmIHNobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJHNobGlicGF0aCIKKwl0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBzaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRzaGxpYnBhdGgiCiAJaWYgdGVzdCAtbiAiJHNobGlicGF0aCI7IHRoZW4KIAkgIGV2YWwgIiRzaGxpYnBhdGhfdmFyPSckc2hsaWJwYXRoXCQkc2hsaWJwYXRoX3Zhcic7IGV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKIAlmaQpAQCAtNjk1OSwxOCArODEyNCwxOCBAQAogCWxpbmtuYW1lcz0KIAlmb3IgbGluawogCWRvCi0JICBsaW5rbmFtZXM9IiRsaW5rbmFtZXMgJGxpbmsiCisJICBmdW5jX2FwcGVuZCBsaW5rbmFtZXMgIiAkbGluayIKIAlkb25lCiAKIAkjIFVzZSBzdGFuZGFyZCBvYmplY3RzIGlmIHRoZXkgYXJlIHBpYwotCXRlc3QgLXogIiRwaWNfZmxhZyIgJiYgbGlib2Jqcz1gJEVDSE8gIlgkbGlib2JqcyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCXRlc3QgLXogIiRwaWNfZmxhZyIgJiYgbGlib2Jqcz1gJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIiRsbzJvIiB8ICROTDJTUGAKIAl0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQogCiAJZGVsZmlsZXM9CiAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgogCSAgJG9wdF9kcnlfcnVuIHx8IGNwICIkZXhwb3J0X3N5bWJvbHMiICIkb3V0cHV0X29iamRpci8kbGlibmFtZS51ZXhwIgogCSAgZXhwb3J0X3N5bWJvbHM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnVleHAiCi0JICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyIKKwkgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzIgogCWZpCiAKIAlvcmlnX2V4cG9ydF9zeW1ib2xzPQpAQCAtNzAwMSwxNCArODE2Niw0NiBAQAogCSAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRleHBvcnRfc3ltYm9scwogCSAgICBjbWRzPSRleHBvcnRfc3ltYm9sc19jbWRzCiAJICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotCSAgICBmb3IgY21kIGluICRjbWRzOyBkbworCSAgICBmb3IgY21kMSBpbiAkY21kczsgZG8KIAkgICAgICBJRlM9IiRzYXZlX2lmcyIKLQkgICAgICBldmFsIGNtZD1cIiRjbWRcIgotCSAgICAgIGZ1bmNfbGVuICIgJGNtZCIKLQkgICAgICBsZW49JGZ1bmNfbGVuX3Jlc3VsdAotCSAgICAgIGlmIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgorCSAgICAgICMgVGFrZSB0aGUgbm9ybWFsIGJyYW5jaCBpZiB0aGUgbm1fZmlsZV9saXN0X3NwZWMgYnJhbmNoCisJICAgICAgIyBkb2Vzbid0IHdvcmsgb3IgaWYgdG9vbCBjb252ZXJzaW9uIGlzIG5vdCBuZWVkZWQuCisJICAgICAgY2FzZSAkbm1fZmlsZV9saXN0X3NwZWN+JHRvX3Rvb2xfZmlsZV9jbWQgaW4KKwkJKn5mdW5jX2NvbnZlcnRfZmlsZV9ub29wIHwgKn5mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiB8IH4qKQorCQkgIHRyeV9ub3JtYWxfYnJhbmNoPXllcworCQkgIGV2YWwgY21kPVwiJGNtZDFcIgorCQkgIGZ1bmNfbGVuICIgJGNtZCIKKwkJICBsZW49JGZ1bmNfbGVuX3Jlc3VsdAorCQkgIDs7CisJCSopCisJCSAgdHJ5X25vcm1hbF9icmFuY2g9bm8KKwkJICA7OworCSAgICAgIGVzYWMKKwkgICAgICBpZiB0ZXN0ICIkdHJ5X25vcm1hbF9icmFuY2giID0geWVzIFwKKwkJICYmIHsgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIFwKKwkJICAgICAgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IH0KKwkgICAgICB0aGVuCiAJCWZ1bmNfc2hvd19ldmFsICIkY21kIiAnZXhpdCAkPycKIAkJc2tpcHBlZF9leHBvcnQ9ZmFsc2UKKwkgICAgICBlbGlmIHRlc3QgLW4gIiRubV9maWxlX2xpc3Rfc3BlYyI7IHRoZW4KKwkJZnVuY19iYXNlbmFtZSAiJG91dHB1dCIKKwkJb3V0cHV0X2xhPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAorCQlzYXZlX2xpYm9ianM9JGxpYm9ianMKKwkJc2F2ZV9vdXRwdXQ9JG91dHB1dAorCQlvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubm0KKwkJZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisJCWxpYm9ianM9JG5tX2ZpbGVfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAorCQlmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCisJCWZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgJE5NIGlucHV0IGZpbGUgbGlzdDogJG91dHB1dCIKKwkJZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzOyBkbworCQkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgorCQkgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgorCQlkb25lID4gIiRvdXRwdXQiCisJCWV2YWwgY21kPVwiJGNtZDFcIgorCQlmdW5jX3Nob3dfZXZhbCAiJGNtZCIgJ2V4aXQgJD8nCisJCW91dHB1dD0kc2F2ZV9vdXRwdXQKKwkJbGlib2Jqcz0kc2F2ZV9saWJvYmpzCisJCXNraXBwZWRfZXhwb3J0PWZhbHNlCiAJICAgICAgZWxzZQogCQkjIFRoZSBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgdG8gZXhlY3V0ZSBpbiBvbmUgc3RlcC4KIAkJZnVuY192ZXJib3NlICJ1c2luZyByZWxvYWRhYmxlIG9iamVjdCBmaWxlIGZvciBleHBvcnQgbGlzdC4uLiIKQEAgLTcwMjksNyArODIyNiw3IEBACiAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgogCSAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCiAJICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSIkb3JpZ19leHBvcnRfc3ltYm9scyIKLQkgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiWCRpbmNsdWRlX2V4cHN5bXMiIHwgJFhzZWQgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJworCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyInCiAJZmkKIAogCWlmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiOyB0aGVuCkBAIC03MDQxLDcgKzgyMzgsNyBAQAogCSAgIyBnbG9iYWwgdmFyaWFibGVzLiBqb2luKDEpIHdvdWxkIGJlIG5pY2UgaGVyZSwgYnV0IHVuZm9ydHVuYXRlbHkKIAkgICMgaXNuJ3QgYSBibGVzc2VkIHRvb2wuCiAJICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZSAnL1sgLF1EQVRBLyFkO3MsXCguKlwpXChbIFwsXS4qXCksc3xeXDEkfFwxXDJ8LCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIKLQkgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKKwkgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKIAkgIGV4cG9ydF9zeW1ib2xzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZgogCSAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWYgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIDwgJG9yaWdfZXhwb3J0X3N5bWJvbHMgPiAkZXhwb3J0X3N5bWJvbHMKIAlmaQpAQCAtNzA1MSw3ICs4MjQ4LDcgQEAKIAkgIGNhc2UgIiAkY29udmVuaWVuY2UgIiBpbgogCSAgKiIgJHRlc3RfZGVwbGliICIqKSA7OwogCSAgKikKLQkgICAgdG1wX2RlcGxpYnM9IiR0bXBfZGVwbGlicyAkdGVzdF9kZXBsaWIiCisJICAgIGZ1bmNfYXBwZW5kIHRtcF9kZXBsaWJzICIgJHRlc3RfZGVwbGliIgogCSAgICA7OwogCSAgZXNhYwogCWRvbmUKQEAgLTcwNzEsMjEgKzgyNjgsMjEgQEAKIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KIAkgIGVsc2UKIAkgICAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLQkgICAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisJICAgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAKIAkgICAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCi0JICAgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCSAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCiAJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CiAJICBmaQogCWZpCiAKIAlpZiB0ZXN0ICIkdGhyZWFkX3NhZmUiID0geWVzICYmIHRlc3QgLW4gIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWMiOyB0aGVuCiAJICBldmFsIGZsYWc9XCIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjXCIKLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkZmxhZyIKKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRmbGFnIgogCWZpCiAKIAkjIE1ha2UgYSBiYWNrdXAgb2YgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgd2hlbiByZWxpbmtpbmcKLQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCiAJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVUgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVUpJyB8fCBleGl0ICQ/CiAJZmkKIApAQCAtNzEzMCw3ICs4MzI3LDggQEAKIAkgICAgc2F2ZV9saWJvYmpzPSRsaWJvYmpzCiAJICBmaQogCSAgc2F2ZV9vdXRwdXQ9JG91dHB1dAotCSAgb3V0cHV0X2xhPWAkRUNITyAiWCRvdXRwdXQiIHwgJFhzZWQgLWUgIiRiYXNlbmFtZSJgCisJICBmdW5jX2Jhc2VuYW1lICIkb3V0cHV0IgorCSAgb3V0cHV0X2xhPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAogCiAJICAjIENsZWFyIHRoZSByZWxvYWRhYmxlIG9iamVjdCBjcmVhdGlvbiBjb21tYW5kIHF1ZXVlIGFuZAogCSAgIyBpbml0aWFsaXplIGsgdG8gb25lLgpAQCAtNzE0MywxMyArODM0MSwxNiBAQAogCSAgaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyIgJiYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCiAJICAgIG91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5sbmtzY3JpcHQKIAkgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyBHTlUgbGQgc2NyaXB0OiAkb3V0cHV0IgotCSAgICAkRUNITyAnSU5QVVQgKCcgPiAkb3V0cHV0CisJICAgIGVjaG8gJ0lOUFVUICgnID4gJG91dHB1dAogCSAgICBmb3Igb2JqIGluICRzYXZlX2xpYm9ianMKIAkgICAgZG8KLQkgICAgICAkRUNITyAiJG9iaiIgPj4gJG91dHB1dAorCSAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgorCSAgICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiA+PiAkb3V0cHV0CiAJICAgIGRvbmUKLQkgICAgJEVDSE8gJyknID4+ICRvdXRwdXQKLQkgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgorCSAgICBlY2hvICcpJyA+PiAkb3V0cHV0CisJICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisJICAgIG91dHB1dD0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CiAJICBlbGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiICYmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAiWCRmaWxlX2xpc3Rfc3BlYyIgIT0gWDsgdGhlbgogCSAgICBvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubG5rCiAJICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgbGlua2VyIGlucHV0IGZpbGUgbGlzdDogJG91dHB1dCIKQEAgLTcxNjMsMTAgKzgzNjQsMTIgQEAKIAkgICAgZmkKIAkgICAgZm9yIG9iagogCSAgICBkbwotCSAgICAgICRFQ0hPICIkb2JqIiA+PiAkb3V0cHV0CisJICAgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisJICAgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiID4+ICRvdXRwdXQKIAkgICAgZG9uZQotCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCi0JICAgIG91dHB1dD0kZmlyc3RvYmpcIiRmaWxlX2xpc3Rfc3BlYyRvdXRwdXRcIgorCSAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCisJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorCSAgICBvdXRwdXQ9JGZpcnN0b2JqXCIkZmlsZV9saXN0X3NwZWMkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIKIAkgIGVsc2UKIAkgICAgaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyI7IHRoZW4KIAkgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzLi4uIgpAQCAtNzE5MCwxNyArODM5MywxOSBAQAogCQkgICMgY29tbWFuZCB0byB0aGUgcXVldWUuCiAJCSAgaWYgdGVzdCAiJGsiIC1lcSAxIDsgdGhlbgogCQkgICAgIyBUaGUgZmlyc3QgZmlsZSBkb2Vzbid0IGhhdmUgYSBwcmV2aW91cyBjb21tYW5kIHRvIGFkZC4KLQkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCIkcmVsb2FkX2NtZHMgJG9iamxpc3QgJGxhc3Rfcm9ialwiCisJCSAgICByZWxvYWRfb2Jqcz0kb2JqbGlzdAorCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIiRyZWxvYWRfY21kc1wiCiAJCSAgZWxzZQogCQkgICAgIyBBbGwgc3Vic2VxdWVudCByZWxvYWRhYmxlIG9iamVjdCBmaWxlcyB3aWxsIGxpbmsgaW4KIAkJICAgICMgdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCi0JCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc34kcmVsb2FkX2NtZHMgJG9iamxpc3QgJGxhc3Rfcm9ian5cJFJNICRsYXN0X3JvYmpcIgorCQkgICAgcmVsb2FkX29ianM9IiRvYmpsaXN0ICRsYXN0X3JvYmoiCisJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc34kcmVsb2FkX2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIKIAkJICBmaQogCQkgIGxhc3Rfcm9iaj0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAogCQkgIGZ1bmNfYXJpdGggJGsgKyAxCiAJCSAgaz0kZnVuY19hcml0aF9yZXN1bHQKIAkJICBvdXRwdXQ9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKLQkJICBvYmpsaXN0PSRvYmoKKwkJICBvYmpsaXN0PSIgJG9iaiIKIAkJICBmdW5jX2xlbiAiICRsYXN0X3JvYmoiCiAJCSAgZnVuY19hcml0aCAkbGVuMCArICRmdW5jX2xlbl9yZXN1bHQKIAkJICBsZW49JGZ1bmNfYXJpdGhfcmVzdWx0CkBAIC03MjEwLDExICs4NDE1LDEyIEBACiAJICAgICAgIyByZWxvYWRhYmxlIG9iamVjdCBmaWxlLiAgQWxsIHN1YnNlcXVlbnQgcmVsb2FkYWJsZSBvYmplY3QKIAkgICAgICAjIGZpbGVzIHdpbGwgbGluayBpbiB0aGUgbGFzdCBvbmUgY3JlYXRlZC4KIAkgICAgICB0ZXN0IC16ICIkY29uY2F0X2NtZHMiIHx8IGNvbmNhdF9jbWRzPSRjb25jYXRfY21kc34KLQkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JHJlbG9hZF9jbWRzICRvYmpsaXN0ICRsYXN0X3JvYmpcIgorCSAgICAgIHJlbG9hZF9vYmpzPSIkb2JqbGlzdCAkbGFzdF9yb2JqIgorCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kcmVsb2FkX2NtZHNcIgogCSAgICAgIGlmIHRlc3QgLW4gIiRsYXN0X3JvYmoiOyB0aGVuCiAJICAgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9flwkUk0gJGxhc3Rfcm9ialwiCiAJICAgICAgZmkKLQkgICAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCisJICAgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgogCiAJICAgIGVsc2UKIAkgICAgICBvdXRwdXQ9CkBAIC03MjQ4LDcgKzg0NTQsNyBAQAogCQlsdF9leGl0PSQ/CiAKIAkJIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0Ci0JCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorCQlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCiAJCSAgKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmIFwKIAkJICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCiAJCSAgICAkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQpAQCAtNzI2OSw3ICs4NDc1LDcgQEAKIAkgICAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgogCSAgICAgIHRtcF9leHBvcnRfc3ltYm9scz0iJGV4cG9ydF9zeW1ib2xzIgogCSAgICAgIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIiAmJiB0bXBfZXhwb3J0X3N5bWJvbHM9IiRvcmlnX2V4cG9ydF9zeW1ib2xzIgotCSAgICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiWCRpbmNsdWRlX2V4cHN5bXMiIHwgJFhzZWQgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJworCSAgICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJwogCSAgICBmaQogCiAJICAgIGlmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgpAQCAtNzI4MSw3ICs4NDg3LDcgQEAKIAkgICAgICAjIGdsb2JhbCB2YXJpYWJsZXMuIGpvaW4oMSkgd291bGQgYmUgbmljZSBoZXJlLCBidXQgdW5mb3J0dW5hdGVseQogCSAgICAgICMgaXNuJ3QgYSBibGVzc2VkIHRvb2wuCiAJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWUgJy9bICxdREFUQS8hZDtzLFwoLipcKVwoWyBcLF0uKlwpLHN8XlwxJHxcMVwyfCwnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyCi0JICAgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgorCSAgICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKIAkgICAgICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYKIAkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scwogCSAgICBmaQpAQCAtNzMyMiwxMCArODUyOCwxMCBAQAogCSMgQWRkIGFueSBvYmplY3RzIGZyb20gcHJlbG9hZGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcwogCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgogCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKIAogCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKLQkgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgogCSAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KIAlmaQogCkBAIC03MzQxLDcgKzg1NDcsNyBAQAogCSAgICBsdF9leGl0PSQ/CiAKIAkgICAgIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0Ci0JICAgIGlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorCSAgICBpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCiAJICAgICAgKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmIFwKIAkgICAgICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCiAJCSRNViAiJHtyZWFsbmFtZX1VIiAiJHJlYWxuYW1lIiApCkBAIC03MzUzLDcgKzg1NTksNyBAQAogCUlGUz0iJHNhdmVfaWZzIgogCiAJIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0Ci0JaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgogCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1UICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1UICYmICRNViAke3JlYWxuYW1lfVUgJHJlYWxuYW1lKScgfHwgZXhpdCAkPwogCiAJICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCkBAIC03NDM0LDE4ICs4NjQwLDIxIEBACiAgICAgICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCiAJaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgogCSAgZXZhbCB0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncz1cIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCi0JICByZWxvYWRfY29udl9vYmpzPSRyZWxvYWRfb2Jqc1wgYCRFQ0hPICJYJHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzIiB8ICRYc2VkIC1lICdzfCx8IHxnJ2AKKwkgIHJlbG9hZF9jb252X29ianM9JHJlbG9hZF9vYmpzXCBgJEVDSE8gIiR0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncyIgfCAkU0VEICdzfCx8IHxnJ2AKIAllbHNlCiAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b2JqfXgiCi0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAKIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRjb252ZW5pZW5jZQogCSAgcmVsb2FkX2NvbnZfb2Jqcz0iJHJlbG9hZF9vYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgogCWZpCiAgICAgICBmaQogCisgICAgICAjIElmIHdlJ3JlIG5vdCBidWlsZGluZyBzaGFyZWQsIHdlIG5lZWQgdG8gdXNlIG5vbl9waWNfb2JqcworICAgICAgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIGxpYm9ianM9IiRub25fcGljX29iamVjdHMiCisKICAgICAgICMgQ3JlYXRlIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgotICAgICAgcmVsb2FkX29ianM9IiRvYmpzJG9sZF9kZXBsaWJzICJgJEVDSE8gIlgkbGlib2JqcyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAnL1wuJyR7bGliZXh0fSQnL2QnIC1lICcvXC5saWIkL2QnIC1lICIkbG8ybyIgfCAkTkwyU1BgIiAkcmVsb2FkX2NvbnZfb2JqcyIgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CisgICAgICByZWxvYWRfb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMgImAkRUNITyAiJGxpYm9ianMiIHwgJFNQMk5MIHwgJFNFRCAiL1wuJHtsaWJleHR9JC9kOyAvXC5saWIkL2Q7ICRsbzJvIiB8ICROTDJTUGAiICRyZWxvYWRfY29udl9vYmpzIiAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKIAogICAgICAgb3V0cHV0PSIkb2JqIgogICAgICAgZnVuY19leGVjdXRlX2NtZHMgIiRyZWxvYWRfY21kcyIgJ2V4aXQgJD8nCkBAIC03NTA1LDggKzg3MTQsOCBAQAogICAgICAgY2FzZSAkaG9zdCBpbgogICAgICAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQogCSMgT24gUmhhcHNvZHkgcmVwbGFjZSB0aGUgQyBsaWJyYXJ5IGlzIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0JY29tcGlsZV9kZXBsaWJzPWAkRUNITyAiWCAkY29tcGlsZV9kZXBsaWJzIiB8ICRYc2VkIC1lICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCi0JZmluYWxpemVfZGVwbGlicz1gJEVDSE8gIlggJGZpbmFsaXplX2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MvIC1sYyAvIFN5c3RlbS5sdGZyYW1ld29yayAvJ2AKKwljb21waWxlX2RlcGxpYnM9YCRFQ0hPICIgJGNvbXBpbGVfZGVwbGlicyIgfCAkU0VEICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCisJZmluYWxpemVfZGVwbGlicz1gJEVDSE8gIiAkZmluYWxpemVfZGVwbGlicyIgfCAkU0VEICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCiAJOzsKICAgICAgIGVzYWMKIApAQCAtNzUxNywxNCArODcyNiwxNCBAQAogCWlmIHRlc3QgIiR0YWduYW1lIiA9IENYWCA7IHRoZW4KIAkgIGNhc2UgJHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQtMTAuMH0gaW4KIAkgICAgMTAuWzAxMjNdKQotCSAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAke3dsfS1iaW5kX2F0X2xvYWQiCi0JICAgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJHt3bH0tYmluZF9hdF9sb2FkIgorCSAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICR7d2x9LWJpbmRfYXRfbG9hZCIKKwkgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHt3bH0tYmluZF9hdF9sb2FkIgogCSAgICA7OwogCSAgZXNhYwogCWZpCiAJIyBUaW1lIHRvIGNoYW5nZSBhbGwgb3VyICJmb28ubHRmcmFtZXdvcmsiIHN0dWZmIGJhY2sgdG8gIi1mcmFtZXdvcmsgZm9vIgotCWNvbXBpbGVfZGVwbGlicz1gJEVDSE8gIlggJGNvbXBpbGVfZGVwbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKLQlmaW5hbGl6ZV9kZXBsaWJzPWAkRUNITyAiWCAkZmluYWxpemVfZGVwbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwljb21waWxlX2RlcGxpYnM9YCRFQ0hPICIgJGNvbXBpbGVfZGVwbGlicyIgfCAkU0VEICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCWZpbmFsaXplX2RlcGxpYnM9YCRFQ0hPICIgJGZpbmFsaXplX2RlcGxpYnMiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKIAk7OwogICAgICAgZXNhYwogCkBAIC03NTM4LDcgKzg3NDcsNyBAQAogCSopCiAJICBjYXNlICIgJGNvbXBpbGVfZGVwbGlicyAiIGluCiAJICAqIiAtTCRwYXRoLyRvYmpkaXIgIiopCi0JICAgIG5ld19saWJzPSIkbmV3X2xpYnMgLUwkcGF0aC8kb2JqZGlyIiA7OworCSAgICBmdW5jX2FwcGVuZCBuZXdfbGlicyAiIC1MJHBhdGgvJG9iamRpciIgOzsKIAkgIGVzYWMKIAkgIDs7CiAJZXNhYwpAQCAtNzU0OCwxNyArODc1NywxNyBAQAogCS1MKikKIAkgIGNhc2UgIiAkbmV3X2xpYnMgIiBpbgogCSAgKiIgJGRlcGxpYiAiKikgOzsKLQkgICopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKIAkgIGVzYWMKIAkgIDs7Ci0JKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OworCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKIAllc2FjCiAgICAgICBkb25lCiAgICAgICBjb21waWxlX2RlcGxpYnM9IiRuZXdfbGlicyIKIAogCi0gICAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGNvbXBpbGVfZGVwbGlicyIKLSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRmaW5hbGl6ZV9kZXBsaWJzIgorICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGNvbXBpbGVfZGVwbGlicyIKKyAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkZmluYWxpemVfZGVwbGlicyIKIAogICAgICAgaWYgdGVzdCAtbiAiJHJwYXRoJHhycGF0aCI7IHRoZW4KIAkjIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhbnkgcnBhdGggZmxhZ3MsIHRoZW4gYWRkIHRoZW0uCkBAIC03NTY2LDcgKzg3NzUsNyBAQAogCSAgIyBUaGlzIGlzIHRoZSBtYWdpYyB0byB1c2UgLXJwYXRoLgogCSAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZG9uZQogICAgICAgZmkKQEAgLTc1ODUsMTggKzg3OTQsMTggQEAKIAkgICAgICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCiAJCTs7CiAJICAgICAgKikKLQkJaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCisJCWZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKIAkJOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCiAJICBlbHNlCiAJICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLQkgICAgcnBhdGg9IiRycGF0aCAkZmxhZyIKKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKIAkgIGZpCiAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCiAJICBjYXNlICIkcGVybV9ycGF0aCAiIGluCiAJICAqIiAkbGliZGlyICIqKSA7OwotCSAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIHBlcm1fcnBhdGggIiAkbGliZGlyIiA7OwogCSAgZXNhYwogCWZpCiAJY2FzZSAkaG9zdCBpbgpAQCAtNzYwNSwxMiArODgxNCwxMiBAQAogCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCiAJICAqIjokbGliZGlyOiIqKSA7OwogCSAgOjopIGRsbHNlYXJjaHBhdGg9JGxpYmRpcjs7Ci0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokbGliZGlyIjs7CisJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JGxpYmRpciI7OwogCSAgZXNhYwogCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCiAJICAqIjokdGVzdGJpbmRpcjoiKikgOzsKIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSR0ZXN0YmluZGlyOzsKLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiR0ZXN0YmluZGlyIjs7CisJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JHRlc3RiaW5kaXIiOzsKIAkgIGVzYWMKIAkgIDs7CiAJZXNhYwpAQCAtNzYzNiwxOCArODg0NSwxOCBAQAogCSAgICAgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKIAkJOzsKIAkgICAgICAqKQotCQloYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKwkJZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgogCQk7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKIAkgIGVsc2UKIAkgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotCSAgICBycGF0aD0iJHJwYXRoICRmbGFnIgorCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgogCSAgZmkKIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KIAkgIGNhc2UgIiRmaW5hbGl6ZV9wZXJtX3JwYXRoICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBmaW5hbGl6ZV9wZXJtX3JwYXRoPSIkZmluYWxpemVfcGVybV9ycGF0aCAkbGliZGlyIiA7OworCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZmkKICAgICAgIGRvbmUKQEAgLTc2NjEsOCArODg3MCw4IEBACiAKICAgICAgIGlmIHRlc3QgLW4gIiRsaWJvYmpzIiAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCiAJIyBUcmFuc2Zvcm0gYWxsIHRoZSBsaWJyYXJ5IG9iamVjdHMgaW50byBzdGFuZGFyZCBvYmplY3RzLgotCWNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkbG8ybyIgfCAkTkwyU1BgCi0JZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCWNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFNFRCAiJGxvMm8iIHwgJE5MMlNQYAorCWZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICIkZmluYWxpemVfY29tbWFuZCIgfCAkU1AyTkwgfCAkU0VEICIkbG8ybyIgfCAkTkwyU1BgCiAgICAgICBmaQogCiAgICAgICBmdW5jX2dlbmVyYXRlX2Rsc3ltcyAiJG91dHB1dG5hbWUiICJAUFJPR1JBTUAiICJubyIKQEAgLTc2NzQsMTUgKzg4ODMsMTUgQEAKIAogICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9eWVzCiAgICAgICBjYXNlICRob3N0IGluCisgICAgICAqY2VnY2MqIHwgKm1pbmd3MzJjZSopCisgICAgICAgICMgRGlzYWJsZSB3cmFwcGVycyBmb3IgY2VnY2MgYW5kIG1pbmd3MzJjZSBob3N0cywgd2UgYXJlIGNyb3NzIGNvbXBpbGluZyBhbnl3YXkuCisgICAgICAgIHdyYXBwZXJzX3JlcXVpcmVkPW5vCisgICAgICAgIDs7CiAgICAgICAqY3lnd2luKiB8ICptaW5ndyogKQogICAgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXM7IHRoZW4KICAgICAgICAgICB3cmFwcGVyc19yZXF1aXJlZD1ubwogICAgICAgICBmaQogICAgICAgICA7OwotICAgICAgKmNlZ2NjKQotICAgICAgICAjIERpc2FibGUgd3JhcHBlcnMgZm9yIGNlZ2NjLCB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nIGFueXdheS4KLSAgICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9bm8KLSAgICAgICAgOzsKICAgICAgICopCiAgICAgICAgIGlmIHRlc3QgIiRuZWVkX3JlbGluayIgPSBubyB8fCB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXM7IHRoZW4KICAgICAgICAgICB3cmFwcGVyc19yZXF1aXJlZD1ubwpAQCAtNzY5MSwxMyArODkwMCwxOSBAQAogICAgICAgZXNhYwogICAgICAgaWYgdGVzdCAiJHdyYXBwZXJzX3JlcXVpcmVkIiA9IG5vOyB0aGVuCiAJIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgotCWNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnYAorCWNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX2NvbW1hbmQiIHwgJFNFRCAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJ2AKIAlsaW5rX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIKIAogCSMgV2UgaGF2ZSBubyB1bmluc3RhbGxlZCBsaWJyYXJ5IGRlcGVuZGVuY2llcywgc28gZmluYWxpemUgcmlnaHQgbm93LgogCWV4aXRfc3RhdHVzPTAKIAlmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXRfc3RhdHVzPSQ/JwogCisJaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCisJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKwkgIHBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKKwkgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCisJZmkKKwogCSMgRGVsZXRlIHRoZSBnZW5lcmF0ZWQgZmlsZXMuCiAJaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IjsgdGhlbgogCSAgZnVuY19zaG93X2V2YWwgJyRSTSAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IicKQEAgLTc3MjAsNyArODkzNSw3IEBACiAJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgogCSAgcnBhdGg9CiAJICBmb3IgZGlyIGluICRwZXJtX3JwYXRoOyBkbwotCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIkZGlyOiIKIAkgIGRvbmUKIAkgIGNvbXBpbGVfdmFyPSIkcnVucGF0aF92YXI9XCIkcnBhdGhcJCRydW5wYXRoX3ZhclwiICIKIAlmaQpAQCAtNzcyOCw3ICs4OTQzLDcgQEAKIAkgICMgV2Ugc2hvdWxkIHNldCB0aGUgcnVucGF0aF92YXIuCiAJICBycGF0aD0KIAkgIGZvciBkaXIgaW4gJGZpbmFsaXplX3Blcm1fcnBhdGg7IGRvCi0JICAgIHJwYXRoPSIkcnBhdGgkZGlyOiIKKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgogCSAgZG9uZQogCSAgZmluYWxpemVfdmFyPSIkcnVucGF0aF92YXI9XCIkcnBhdGhcJCRydW5wYXRoX3ZhclwiICIKIAlmaQpAQCAtNzczOCwxMSArODk1MywxOCBAQAogCSMgV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSB3cmFwcGVyIHNjcmlwdC4KIAlsaW5rX2NvbW1hbmQ9IiRjb21waWxlX3ZhciRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIKIAkjIFJlcGxhY2UgdGhlIG91dHB1dCBmaWxlIHNwZWNpZmljYXRpb24uCi0JbGlua19jb21tYW5kPWAkRUNITyAiWCRsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZydgCisJbGlua19jb21tYW5kPWAkRUNITyAiJGxpbmtfY29tbWFuZCIgfCAkU0VEICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnYAogCSMgRGVsZXRlIHRoZSBvbGQgb3V0cHV0IGZpbGUuCiAJJG9wdF9kcnlfcnVuIHx8ICRSTSAkb3V0cHV0CiAJIyBMaW5rIHRoZSBleGVjdXRhYmxlIGFuZCBleGl0CiAJZnVuY19zaG93X2V2YWwgIiRsaW5rX2NvbW1hbmQiICdleGl0ICQ/JworCisJaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCisJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKwkgIHBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKKwkgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCisJZmkKKwogCWV4aXQgJEVYSVRfU1VDQ0VTUwogICAgICAgZmkKIApAQCAtNzc1Nyw3ICs4OTc5LDcgQEAKIAlpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiAhPSBubzsgdGhlbgogCSAgbGlua19jb21tYW5kPSIkZmluYWxpemVfdmFyJGNvbXBpbGVfY29tbWFuZCRmaW5hbGl6ZV9ycGF0aCIKIAkgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzOyB0aGVuCi0JICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX3ZhciRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCVcJHByb2dkaXIvXCRmaWxlJWcnYAorCSAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX3ZhciRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIgfCAkU0VEICdzJUBPVVRQVVRAJVwkcHJvZ2Rpci9cJGZpbGUlZydgCiAJICBlbHNlCiAJICAgICMgZmFzdF9pbnN0YWxsIGlzIHNldCB0byBuZWVkbGVzcwogCSAgICByZWxpbmtfY29tbWFuZD0KQEAgLTc3NjksMTMgKzg5OTEsMTkgQEAKICAgICAgIGZpCiAKICAgICAgICMgUmVwbGFjZSB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWNhdGlvbi4KLSAgICAgIGxpbmtfY29tbWFuZD1gJEVDSE8gIlgkbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiJyVnJ2AKKyAgICAgIGxpbmtfY29tbWFuZD1gJEVDSE8gIiRsaW5rX2NvbW1hbmQiIHwgJFNFRCAncyVAT1VUUFVUQCUnIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIiclZydgCiAKICAgICAgICMgRGVsZXRlIHRoZSBvbGQgb3V0cHV0IGZpbGVzLgogICAgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkb3V0cHV0ICRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lICRvdXRwdXRfb2JqZGlyL2x0LSRvdXRwdXRuYW1lCiAKICAgICAgIGZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdCAkPycKIAorICAgICAgaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCisJZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIgorCXBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSInJWcnIC1lICdzJUBUT09MX09VVFBVVEAlJyIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiclZydgCisJZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKKyAgICAgIGZpCisKICAgICAgICMgTm93IGNyZWF0ZSB0aGUgd3JhcHBlciBzY3JpcHQuCiAgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nICRvdXRwdXQiCiAKQEAgLTc3OTMsMTggKzkwMjEsNyBAQAogCSAgZmkKIAlkb25lCiAJcmVsaW5rX2NvbW1hbmQ9IihjZCBgcHdkYDsgJHJlbGlua19jb21tYW5kKSIKLQlyZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkcmVsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotICAgICAgZmkKLQotICAgICAgIyBRdW90ZSAkRUNITyBmb3Igc2hpcHBpbmcuCi0gICAgICBpZiB0ZXN0ICJYJEVDSE8iID0gIlgkU0hFTEwgJHByb2dwYXRoIC0tZmFsbGJhY2stZWNobyI7IHRoZW4KLQljYXNlICRwcm9ncGF0aCBpbgotCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgcWVjaG89IiRTSEVMTCAkcHJvZ3BhdGggLS1mYWxsYmFjay1lY2hvIjs7Ci0JKikgcWVjaG89IiRTSEVMTCBgcHdkYC8kcHJvZ3BhdGggLS1mYWxsYmFjay1lY2hvIjs7Ci0JZXNhYwotCXFlY2hvPWAkRUNITyAiWCRxZWNobyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0gICAgICBlbHNlCi0JcWVjaG89YCRFQ0hPICJYJEVDSE8iIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorCXJlbGlua19jb21tYW5kPWAkRUNITyAiJHJlbGlua19jb21tYW5kIiB8ICRTRUQgIiRzZWRfcXVvdGVfc3Vic3QiYAogICAgICAgZmkKIAogICAgICAgIyBPbmx5IGFjdHVhbGx5IGRvIHRoaW5ncyBpZiBub3QgaW4gZHJ5IHJ1biBtb2RlLgpAQCAtNzg4NCw3ICs5MTAxLDcgQEAKIAllbHNlCiAJICBvbGRvYmpzPSIkb2xkX2RlcGxpYnMgJG5vbl9waWNfb2JqZWN0cyIKIAkgIGlmIHRlc3QgIiRwcmVsb2FkIiA9IHllcyAmJiB0ZXN0IC1mICIkc3ltZmlsZW9iaiI7IHRoZW4KLQkgICAgb2xkb2Jqcz0iJG9sZG9ianMgJHN5bWZpbGVvYmoiCisJICAgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkc3ltZmlsZW9iaiIKIAkgIGZpCiAJZmkKIAlhZGRsaWJzPSIkb2xkX2NvbnZlbmllbmNlIgpAQCAtNzg5MiwxMCArOTEwOSwxMCBAQAogCiAgICAgICBpZiB0ZXN0IC1uICIkYWRkbGlicyI7IHRoZW4KIAlnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotCWdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCWZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAKIAlmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkYWRkbGlicwotCW9sZG9ianM9IiRvbGRvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCWZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKICAgICAgIGZpCiAKICAgICAgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBhcmNoaXZlIGNvbW1hbmRzLgpAQCAtNzkwNiwxMCArOTEyMywxMCBAQAogCSMgQWRkIGFueSBvYmplY3RzIGZyb20gcHJlbG9hZGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcwogCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgogCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKIAogCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKLQkgIG9sZG9ianM9IiRvbGRvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgogCWZpCiAKIAkjIFBPU0lYIGRlbWFuZHMgbm8gcGF0aHMgdG8gYmUgZW5jb2RlZCBpbiBhcmNoaXZlcy4gIFdlIGhhdmUKQEAgLTc5MjUsOSArOTE0Miw5IEBACiAJICAgIGRvbmUgfCBzb3J0IHwgc29ydCAtdWMgPi9kZXYvbnVsbCAyPiYxKTsgdGhlbgogCSAgOgogCWVsc2UKLQkgICRFQ0hPICJjb3B5aW5nIHNlbGVjdGVkIG9iamVjdCBmaWxlcyB0byBhdm9pZCBiYXNlbmFtZSBjb25mbGljdHMuLi4iCisJICBlY2hvICJjb3B5aW5nIHNlbGVjdGVkIG9iamVjdCBmaWxlcyB0byBhdm9pZCBiYXNlbmFtZSBjb25mbGljdHMuLi4iCiAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgogCSAgZnVuY19ta2Rpcl9wICIkZ2VudG9wIgogCSAgc2F2ZV9vbGRvYmpzPSRvbGRvYmpzCiAJICBvbGRvYmpzPQpAQCAtNzk1MSwxOCArOTE2OCwzMCBAQAogCQllc2FjCiAJICAgICAgZG9uZQogCSAgICAgIGZ1bmNfc2hvd19ldmFsICJsbiAkb2JqICRnZW50b3AvJG5ld29iaiB8fCBjcCAkb2JqICRnZW50b3AvJG5ld29iaiIKLQkgICAgICBvbGRvYmpzPSIkb2xkb2JqcyAkZ2VudG9wLyRuZXdvYmoiCisJICAgICAgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRnZW50b3AvJG5ld29iaiIKIAkgICAgICA7OwotCSAgICAqKSBvbGRvYmpzPSIkb2xkb2JqcyAkb2JqIiA7OworCSAgICAqKSBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJG9iaiIgOzsKIAkgICAgZXNhYwogCSAgZG9uZQogCWZpCisJZnVuY190b190b29sX2ZpbGUgIiRvbGRsaWIiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisJdG9vbF9vbGRsaWI9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAogCWV2YWwgY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIKIAogCWZ1bmNfbGVuICIgJGNtZHMiCiAJbGVuPSRmdW5jX2xlbl9yZXN1bHQKIAlpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KIAkgIGNtZHM9JG9sZF9hcmNoaXZlX2NtZHMKKwllbGlmIHRlc3QgLW4gIiRhcmNoaXZlcl9saXN0X3NwZWMiOyB0aGVuCisJICBmdW5jX3ZlcmJvc2UgInVzaW5nIGNvbW1hbmQgZmlsZSBhcmNoaXZlIGxpbmtpbmcuLi4iCisJICBmb3Igb2JqIGluICRvbGRvYmpzCisJICBkbworCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKKwkgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCisJICBkb25lID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUubGliY21kCisJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUubGliY21kIgorCSAgb2xkb2Jqcz0iICRhcmNoaXZlcl9saXN0X3NwZWMkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgorCSAgY21kcz0kb2xkX2FyY2hpdmVfY21kcwogCWVsc2UKIAkgICMgdGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBsaW5rIGluIG9uZSBzdGVwLCBsaW5rIGluIHBhcnRzCiAJICBmdW5jX3ZlcmJvc2UgInVzaW5nIHBpZWNld2lzZSBhcmNoaXZlIGxpbmtpbmcuLi4iCkBAIC04MDM2LDcgKzkyNjUsNyBAQAogICAgICAgZG9uZQogICAgICAgIyBRdW90ZSB0aGUgbGluayBjb21tYW5kIGZvciBzaGlwcGluZy4KICAgICAgIHJlbGlua19jb21tYW5kPSIoY2QgYHB3ZGA7ICRTSEVMTCAkcHJvZ3BhdGggJHByZXNlcnZlX2FyZ3MgLS1tb2RlPXJlbGluayAkbGlidG9vbF9hcmdzIEBpbnN0X3ByZWZpeF9kaXJAKSIKLSAgICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisgICAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRyZWxpbmtfY29tbWFuZCIgfCAkU0VEICIkc2VkX3F1b3RlX3N1YnN0ImAKICAgICAgIGlmIHRlc3QgIiRoYXJkY29kZV9hdXRvbWF0aWMiID0geWVzIDsgdGhlbgogCXJlbGlua19jb21tYW5kPQogICAgICAgZmkKQEAgLTgwNTYsMTIgKzkyODUsMjMgQEAKIAkgICAgICAqLmxhKQogCQlmdW5jX2Jhc2VuYW1lICIkZGVwbGliIgogCQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0JCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCisJCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgorCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0YAogCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCiAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0JCW5ld2RlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyAkbGliZGlyLyRuYW1lIgorCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKIAkJOzsKLQkgICAgICAqKSBuZXdkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMgJGRlcGxpYiIgOzsKKwkgICAgICAtTCopCisJCWZ1bmNfc3RyaXBuYW1lIC1MICcnICIkZGVwbGliIgorCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgLUwkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgorCQk7OworCSAgICAgIC1SKikKKwkJZnVuY19zdHJpcG5hbWUgLVIgJycgIiRkZXBsaWIiCisJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAtUiRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQiCisJCTs7CisJICAgICAgKikgZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgJGRlcGxpYiIgOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKIAkgICAgZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzIgpAQCAtODA3NSw5ICs5MzE1LDkgQEAKIAkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAogCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotCQluZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliZGlyLyRuYW1lIgorCQlmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCiAJCTs7Ci0JICAgICAgKikgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYiIgOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGxpYiIgOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCkBAIC04MDk0LDcgKzkzMzQsNyBAQAogCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAogCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCiAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0JCW5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRsaWJkaXIvJG5hbWUiCisJCWZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKIAkJOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKQEAgLTgxMDYsNyArOTM0Niw3IEBACiAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OwogCQkqKSBhYnM9YHB3ZGAiLyRsaWIiIDs7CiAJICAgICAgZXNhYwotCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRhYnMiCisJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRhYnMiCiAJICAgIGRvbmUKIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCiAJICAgIG5ld2RscHJlZmlsZXM9CkBAIC04MTE1LDE1ICs5MzU1LDMzIEBACiAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OwogCQkqKSBhYnM9YHB3ZGAiLyRsaWIiIDs7CiAJICAgICAgZXNhYwotCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRhYnMiCisJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRhYnMiCiAJICAgIGRvbmUKIAkgICAgZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMiCiAJICBmaQogCSAgJFJNICRvdXRwdXQKIAkgICMgcGxhY2UgZGxuYW1lIGluIGNvcnJlY3QgcG9zaXRpb24gZm9yIGN5Z3dpbgorCSAgIyBJbiBmYWN0LCBpdCB3b3VsZCBiZSBuaWNlIGlmIHdlIGNvdWxkIHVzZSB0aGlzIGNvZGUgZm9yIGFsbCB0YXJnZXQKKwkgICMgc3lzdGVtcyB0aGF0IGNhbid0IGhhcmQtY29kZSBsaWJyYXJ5IHBhdGhzIGludG8gdGhlaXIgZXhlY3V0YWJsZXMKKwkgICMgYW5kIHRoYXQgaGF2ZSBubyBzaGFyZWQgbGlicmFyeSBwYXRoIHZhcmlhYmxlIGluZGVwZW5kZW50IG9mIFBBVEgsCisJICAjIGJ1dCBpdCB0dXJucyBvdXQgd2UgY2FuJ3QgZWFzaWx5IGRldGVybWluZSB0aGF0IGZyb20gaW5zcGVjdGluZworCSAgIyBsaWJ0b29sIHZhcmlhYmxlcywgc28gd2UgaGF2ZSB0byBoYXJkLWNvZGUgdGhlIE9TcyB0byB3aGljaCBpdAorCSAgIyBhcHBsaWVzIGhlcmU7IGF0IHRoZSBtb21lbnQsIHRoYXQgbWVhbnMgcGxhdGZvcm1zIHRoYXQgdXNlIHRoZSBQRQorCSAgIyBvYmplY3QgZm9ybWF0IHdpdGggRExMIGZpbGVzLiAgU2VlIHRoZSBsb25nIGNvbW1lbnQgYXQgdGhlIHRvcCBvZgorCSAgIyB0ZXN0cy9iaW5kaXIuYXQgZm9yIGZ1bGwgZGV0YWlscy4KIAkgIHRkbG5hbWU9JGRsbmFtZQogCSAgY2FzZSAkaG9zdCwkb3V0cHV0LCRpbnN0YWxsZWQsJG1vZHVsZSwkZGxuYW1lIGluCi0JICAgICpjeWd3aW4qLCpsYWkseWVzLG5vLCouZGxsIHwgKm1pbmd3KiwqbGFpLHllcyxubywqLmRsbCB8ICpjZWdjYyosKmxhaSx5ZXMsbm8sKi5kbGwpIHRkbG5hbWU9Li4vYmluLyRkbG5hbWUgOzsKKwkgICAgKmN5Z3dpbiosKmxhaSx5ZXMsbm8sKi5kbGwgfCAqbWluZ3cqLCpsYWkseWVzLG5vLCouZGxsIHwgKmNlZ2NjKiwqbGFpLHllcyxubywqLmRsbCkKKwkgICAgICAjIElmIGEgLWJpbmRpciBhcmd1bWVudCB3YXMgc3VwcGxpZWQsIHBsYWNlIHRoZSBkbGwgdGhlcmUuCisJICAgICAgaWYgdGVzdCAieCRiaW5kaXIiICE9IHggOworCSAgICAgIHRoZW4KKwkJZnVuY19yZWxhdGl2ZV9wYXRoICIkaW5zdGFsbF9saWJkaXIiICIkYmluZGlyIgorCQl0ZGxuYW1lPSRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0JGRsbmFtZQorCSAgICAgIGVsc2UKKwkJIyBPdGhlcndpc2UgZmFsbCBiYWNrIG9uIGhldXJpc3RpYy4KKwkJdGRsbmFtZT0uLi9iaW4vJGRsbmFtZQorCSAgICAgIGZpCisJICAgICAgOzsKIAkgIGVzYWMKIAkgICRFQ0hPID4gJG91dHB1dCAiXAogIyAkb3V0cHV0bmFtZSAtIGEgbGlidG9vbCBsaWJyYXJ5IGZpbGUKQEAgLTgxODIsNyArOTQ0MCw3IEBACiAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCiB9CiAKLXsgdGVzdCAiJG1vZGUiID0gbGluayB8fCB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IH0gJiYKK3sgdGVzdCAiJG9wdF9tb2RlIiA9IGxpbmsgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgfSAmJgogICAgIGZ1bmNfbW9kZV9saW5rICR7MSsiJEAifQogCiAKQEAgLTgyMDIsOSArOTQ2MCw5IEBACiAgICAgZm9yIGFyZwogICAgIGRvCiAgICAgICBjYXNlICRhcmcgaW4KLSAgICAgIC1mKSBSTT0iJFJNICRhcmciOyBybWZvcmNlPXllcyA7OwotICAgICAgLSopIFJNPSIkUk0gJGFyZyIgOzsKLSAgICAgICopIGZpbGVzPSIkZmlsZXMgJGFyZyIgOzsKKyAgICAgIC1mKSBmdW5jX2FwcGVuZCBSTSAiICRhcmciOyBybWZvcmNlPXllcyA7OworICAgICAgLSopIGZ1bmNfYXBwZW5kIFJNICIgJGFyZyIgOzsKKyAgICAgICopIGZ1bmNfYXBwZW5kIGZpbGVzICIgJGFyZyIgOzsKICAgICAgIGVzYWMKICAgICBkb25lCiAKQEAgLTgyMTMsMjQgKzk0NzEsMjMgQEAKIAogICAgIHJtZGlycz0KIAotICAgIG9yaWdvYmpkaXI9IiRvYmpkaXIiCiAgICAgZm9yIGZpbGUgaW4gJGZpbGVzOyBkbwogICAgICAgZnVuY19kaXJuYW1lICIkZmlsZSIgIiIgIi4iCiAgICAgICBkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgogICAgICAgaWYgdGVzdCAiWCRkaXIiID0gWC47IHRoZW4KLQlvYmpkaXI9IiRvcmlnb2JqZGlyIgorCW9kaXI9IiRvYmpkaXIiCiAgICAgICBlbHNlCi0Jb2JqZGlyPSIkZGlyLyRvcmlnb2JqZGlyIgorCW9kaXI9IiRkaXIvJG9iamRpciIKICAgICAgIGZpCiAgICAgICBmdW5jX2Jhc2VuYW1lICIkZmlsZSIKICAgICAgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLSAgICAgIHRlc3QgIiRtb2RlIiA9IHVuaW5zdGFsbCAmJiBvYmpkaXI9IiRkaXIiCisgICAgICB0ZXN0ICIkb3B0X21vZGUiID0gdW5pbnN0YWxsICYmIG9kaXI9IiRkaXIiCiAKLSAgICAgICMgUmVtZW1iZXIgb2JqZGlyIGZvciByZW1vdmFsIGxhdGVyLCBiZWluZyBjYXJlZnVsIHRvIGF2b2lkIGR1cGxpY2F0ZXMKLSAgICAgIGlmIHRlc3QgIiRtb2RlIiA9IGNsZWFuOyB0aGVuCisgICAgICAjIFJlbWVtYmVyIG9kaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcworICAgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuOyB0aGVuCiAJY2FzZSAiICRybWRpcnMgIiBpbgotCSAgKiIgJG9iamRpciAiKikgOzsKLQkgICopIHJtZGlycz0iJHJtZGlycyAkb2JqZGlyIiA7OworCSAgKiIgJG9kaXIgIiopIDs7CisJICAqKSBmdW5jX2FwcGVuZCBybWRpcnMgIiAkb2RpciIgOzsKIAllc2FjCiAgICAgICBmaQogCkBAIC04MjU2LDE4ICs5NTEzLDE3IEBACiAKIAkgICMgRGVsZXRlIHRoZSBsaWJ0b29sIGxpYnJhcmllcyBhbmQgc3ltbGlua3MuCiAJICBmb3IgbiBpbiAkbGlicmFyeV9uYW1lczsgZG8KLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbiIKKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuIgogCSAgZG9uZQotCSAgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRvbGRfbGlicmFyeSIKKwkgIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRvbGRfbGlicmFyeSIKIAotCSAgY2FzZSAiJG1vZGUiIGluCisJICBjYXNlICIkb3B0X21vZGUiIGluCiAJICBjbGVhbikKLQkgICAgY2FzZSAiICAkbGlicmFyeV9uYW1lcyAiIGluCi0JICAgICMgIiAgIiBpbiB0aGUgYmVnaW5uaW5nIGNhdGNoZXMgZW1wdHkgJGRsbmFtZQorCSAgICBjYXNlICIgJGxpYnJhcnlfbmFtZXMgIiBpbgogCSAgICAqIiAkZGxuYW1lICIqKSA7OwotCSAgICAqKSBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRkbG5hbWUiIDs7CisJICAgICopIHRlc3QgLW4gIiRkbG5hbWUiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kZGxuYW1lIiA7OwogCSAgICBlc2FjCi0JICAgIHRlc3QgLW4gIiRsaWJkaXIiICYmIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG5hbWUgJG9iamRpci8ke25hbWV9aSIKKwkgICAgdGVzdCAtbiAiJGxpYmRpciIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuYW1lICRvZGlyLyR7bmFtZX1pIgogCSAgICA7OwogCSAgdW5pbnN0YWxsKQogCSAgICBpZiB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyI7IHRoZW4KQEAgLTgyOTUsMTkgKzk1NTEsMTkgQEAKIAkgICMgQWRkIFBJQyBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gcmVtb3ZlLgogCSAgaWYgdGVzdCAtbiAiJHBpY19vYmplY3QiICYmCiAJICAgICB0ZXN0ICIkcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgotCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRwaWNfb2JqZWN0IgorCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGRpci8kcGljX29iamVjdCIKIAkgIGZpCiAKIAkgICMgQWRkIG5vbi1QSUMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIGZpbGVzIHRvIHJlbW92ZS4KIAkgIGlmIHRlc3QgLW4gIiRub25fcGljX29iamVjdCIgJiYKIAkgICAgIHRlc3QgIiRub25fcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgotCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRub25fcGljX29iamVjdCIKKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRkaXIvJG5vbl9waWNfb2JqZWN0IgogCSAgZmkKIAlmaQogCTs7CiAKICAgICAgICopCi0JaWYgdGVzdCAiJG1vZGUiID0gY2xlYW4gOyB0aGVuCisJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuIDsgdGhlbgogCSAgbm9leGVuYW1lPSRuYW1lCiAJICBjYXNlICRmaWxlIGluCiAJICAqLmV4ZSkKQEAgLTgzMTcsNyArOTU3Myw3IEBACiAJICAgIG5vZXhlbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJICAgICMgJGZpbGUgd2l0aCAuZXhlIGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gcm1maWxlcywKIAkgICAgIyBhZGQgJGZpbGUgd2l0aG91dCAuZXhlCi0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRmaWxlIgorCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGZpbGUiCiAJICAgIDs7CiAJICBlc2FjCiAJICAjIERvIGEgdGVzdCB0byBzZWUgaWYgdGhpcyBpcyBhIGxpYnRvb2wgcHJvZ3JhbS4KQEAgLTgzMjYsNyArOTU4Miw3IEBACiAJICAgICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZSAiJGZpbGUiCiAJICAgICAgcmVsaW5rX2NvbW1hbmQ9CiAJICAgICAgZnVuY19zb3VyY2UgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0Ci0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0IgorCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQiCiAJICAgIGVsc2UKIAkgICAgICByZWxpbmtfY29tbWFuZD0KIAkgICAgICBmdW5jX3NvdXJjZSAkZGlyLyRub2V4ZW5hbWUKQEAgLTgzMzQsMTIgKzk1OTAsMTIgQEAKIAogCSAgICAjIG5vdGUgJG5hbWUgc3RpbGwgY29udGFpbnMgLmV4ZSBpZiBpdCB3YXMgaW4gJGZpbGUgb3JpZ2luYWxseQogCSAgICAjIGFzIGRvZXMgdGhlIHZlcnNpb24gb2YgJGZpbGUgdGhhdCB3YXMgYWRkZWQgaW50byAkcm1maWxlcwotCSAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuYW1lICRvYmpkaXIvJHtuYW1lfVMuJHtvYmpleHR9IgorCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG5hbWUgJG9kaXIvJHtuYW1lfVMuJHtvYmpleHR9IgogCSAgICBpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiA9IHllcyAmJiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCi0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci9sdC0kbmFtZSIKKwkgICAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvbHQtJG5hbWUiCiAJICAgIGZpCiAJICAgIGlmIHRlc3QgIlgkbm9leGVuYW1lIiAhPSAiWCRuYW1lIiA7IHRoZW4KLQkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyL2x0LSR7bm9leGVuYW1lfS5jIgorCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci9sdC0ke25vZXhlbmFtZX0uYyIKIAkgICAgZmkKIAkgIGZpCiAJZmkKQEAgLTgzNDcsNyArOTYwMyw2IEBACiAgICAgICBlc2FjCiAgICAgICBmdW5jX3Nob3dfZXZhbCAiJFJNICRybWZpbGVzIiAnZXhpdF9zdGF0dXM9MScKICAgICBkb25lCi0gICAgb2JqZGlyPSIkb3JpZ29iamRpciIKIAogICAgICMgVHJ5IHRvIHJlbW92ZSB0aGUgJHtvYmpkaXJ9cyBpbiB0aGUgZGlyZWN0b3JpZXMgd2hlcmUgd2UgZGVsZXRlZCBmaWxlcwogICAgIGZvciBkaXIgaW4gJHJtZGlyczsgZG8KQEAgLTgzNTksMTYgKzk2MTQsMTYgQEAKICAgICBleGl0ICRleGl0X3N0YXR1cwogfQogCi17IHRlc3QgIiRtb2RlIiA9IHVuaW5zdGFsbCB8fCB0ZXN0ICIkbW9kZSIgPSBjbGVhbjsgfSAmJgoreyB0ZXN0ICIkb3B0X21vZGUiID0gdW5pbnN0YWxsIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbjsgfSAmJgogICAgIGZ1bmNfbW9kZV91bmluc3RhbGwgJHsxKyIkQCJ9CiAKLXRlc3QgLXogIiRtb2RlIiAmJiB7Cit0ZXN0IC16ICIkb3B0X21vZGUiICYmIHsKICAgaGVscD0iJGdlbmVyaWNfaGVscCIKICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERSIKIH0KIAogdGVzdCAteiAiJGV4ZWNfY21kIiAmJiBcCi0gIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKKyAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG9wdF9tb2RlJyIKIAogaWYgdGVzdCAtbiAiJGV4ZWNfY21kIjsgdGhlbgogICBldmFsIGV4ZWMgIiRleGVjX2NtZCIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXNtY2ZpLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9hc21jZmkubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJmNzNhMAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXNtY2ZpLm00CkBAIC0wLDAgKzEsMTMgQEAKK0FDX0RFRlVOKFtHQ0NfQVNfQ0ZJX1BTRVVET19PUF0sCitbQUNfQ0FDSEVfQ0hFQ0soW2Fzc2VtYmxlciAuY2ZpIHBzZXVkby1vcCBzdXBwb3J0XSwKKyAgICBnY2NfY3ZfYXNfY2ZpX3BzZXVkb19vcCwgWworICAgIGdjY19jdl9hc19jZmlfcHNldWRvX29wPXVua25vd24KKyAgICBBQ19UUllfQ09NUElMRShbYXNtICgiLmNmaV9zdGFydHByb2Ncblx0LmNmaV9lbmRwcm9jIik7XSwsCisJCSAgIFtnY2NfY3ZfYXNfY2ZpX3BzZXVkb19vcD15ZXNdLAorCQkgICBbZ2NjX2N2X2FzX2NmaV9wc2V1ZG9fb3A9bm9dKQorIF0pCisgaWYgdGVzdCAieCRnY2NfY3ZfYXNfY2ZpX3BzZXVkb19vcCIgPSB4eWVzOyB0aGVuCisgICAgQUNfREVGSU5FKEhBVkVfQVNfQ0ZJX1BTRVVET19PUCwgMSwKKwkgICAgICBbRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIC5jZmlfKiBkaXJlY3RpdmVzLl0pCisgZmkKK10pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2FwcGVuZF9mbGFnLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9hcHBlbmRfZmxhZy5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDM4Yjc2Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9hcHBlbmRfZmxhZy5tNApAQCAtMCwwICsxLDY5IEBACisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2FwcGVuZF9mbGFnLmh0bWwKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIFNZTk9QU0lTCisjCisjICAgQVhfQVBQRU5EX0ZMQUcoRkxBRywgW0ZMQUdTLVZBUklBQkxFXSkKKyMKKyMgREVTQ1JJUFRJT04KKyMKKyMgICBGTEFHIGlzIGFwcGVuZGVkIHRvIHRoZSBGTEFHUy1WQVJJQUJMRSBzaGVsbCB2YXJpYWJsZSwgd2l0aCBhIHNwYWNlCisjICAgYWRkZWQgaW4gYmV0d2Vlbi4KKyMKKyMgICBJZiBGTEFHUy1WQVJJQUJMRSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgY3VycmVudCBsYW5ndWFnZSdzIGZsYWdzIChlLmcuCisjICAgQ0ZMQUdTKSBpcyB1c2VkLiAgRkxBR1MtVkFSSUFCTEUgaXMgbm90IGNoYW5nZWQgaWYgaXQgYWxyZWFkeSBjb250YWlucworIyAgIEZMQUcuICBJZiBGTEFHUy1WQVJJQUJMRSBpcyB1bnNldCBpbiB0aGUgc2hlbGwsIGl0IGlzIHNldCB0byBleGFjdGx5CisjICAgRkxBRy4KKyMKKyMgICBOT1RFOiBJbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBBWF9DRkxBR1NfR0NDX09QVElPTi4KKyMKKyMgTElDRU5TRQorIworIyAgIENvcHlyaWdodCAoYykgMjAwOCBHdWlkbyBVLiBEcmFoZWltIDxndWlkb2RAZ214LmRlPgorIyAgIENvcHlyaWdodCAoYykgMjAxMSBNYWFydGVuIEJvc21hbnMgPG1rYm9zbWFuc0BnbWFpbC5jb20+CisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisjICAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbAorIyAgIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgICB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworIyAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSByZXNwZWN0aXZlIEF1dG9jb25mIE1hY3JvJ3MgY29weXJpZ2h0IG93bmVyCisjICAgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZSBjb25maWd1cmUKKyMgICBzY3JpcHRzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgQXV0b2NvbmYgd2hlbiBwcm9jZXNzaW5nIHRoZSBNYWNyby4gWW91CisjICAgbmVlZCBub3QgZm9sbG93IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugd2hlbiB1c2luZworIyAgIG9yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoIHBvcnRpb25zIG9mIHRoZSB0ZXh0IG9mIHRoZQorIyAgIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4KKyMgICBhbGwgb3RoZXIgdXNlIG9mIHRoZSBtYXRlcmlhbCB0aGF0IGNvbnN0aXR1dGVzIHRoZSBBdXRvY29uZiBNYWNyby4KKyMKKyMgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgYXBwbGllcyB0byB2ZXJzaW9ucyBvZiB0aGUgQXV0b2NvbmYKKyMgICBNYWNybyByZWxlYXNlZCBieSB0aGUgQXV0b2NvbmYgQXJjaGl2ZS4gV2hlbiB5b3UgbWFrZSBhbmQgZGlzdHJpYnV0ZSBhCisjICAgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQXV0b2NvbmYgTWFjcm8sIHlvdSBtYXkgZXh0ZW5kIHRoaXMgc3BlY2lhbAorIyAgIGV4Y2VwdGlvbiB0byB0aGUgR1BMIHRvIGFwcGx5IHRvIHlvdXIgbW9kaWZpZWQgdmVyc2lvbiBhcyB3ZWxsLgorCisjc2VyaWFsIDIKKworQUNfREVGVU4oW0FYX0FQUEVORF9GTEFHXSwKK1tBQ19QUkVSRVEoMi41OSlkbmwgZm9yIF9BQ19MQU5HX1BSRUZJWAorQVNfVkFSX1BVU0hERUYoW0ZMQUdTXSwgW200X2RlZmF1bHQoJDIsX0FDX0xBTkdfUFJFRklYW0ZMQUdTXSldKWRubAorQVNfVkFSX1NFVF9JRihGTEFHUywKKyAgW2Nhc2UgIiBBU19WQVJfR0VUKEZMQUdTKSAiIGluCisgICAgKiIgJDEgIiopCisgICAgICBBQ19SVU5fTE9HKFs6IEZMQUdTIGFscmVhZHkgY29udGFpbnMgJDFdKQorICAgICAgOzsKKyAgICAqKQorICAgICAgQUNfUlVOX0xPRyhbOiBGTEFHUz0iJEZMQUdTICQxIl0pCisgICAgICBBU19WQVJfU0VUKEZMQUdTLCBbIkFTX1ZBUl9HRVQoRkxBR1MpICQxIl0pCisgICAgICA7OworICAgZXNhY10sCisgIFtBU19WQVJfU0VUKEZMQUdTLFsiJDEiXSldKQorQVNfVkFSX1BPUERFRihbRkxBR1NdKWRubAorXSlkbmwgQVhfQVBQRU5EX0ZMQUcKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY2NfbWF4b3B0Lm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jY19tYXhvcHQubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU3NTMyNwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY2NfbWF4b3B0Lm00CkBAIC0wLDAgKzEsMTgwIEBACisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9jY19tYXhvcHQuaHRtbAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgU1lOT1BTSVMKKyMKKyMgICBBWF9DQ19NQVhPUFQKKyMKKyMgREVTQ1JJUFRJT04KKyMKKyMgICBUcnkgdG8gdHVybiBvbiAiZ29vZCIgQyBvcHRpbWl6YXRpb24gZmxhZ3MgZm9yIHZhcmlvdXMgY29tcGlsZXJzIGFuZAorIyAgIGFyY2hpdGVjdHVyZXMsIGZvciBzb21lIGRlZmluaXRpb24gb2YgImdvb2QiLiAoSW4gb3VyIGNhc2UsIGdvb2QgZm9yCisjICAgRkZUVyBhbmQgaG9wZWZ1bGx5IGZvciBvdGhlciBzY2llbnRpZmljIGNvZGVzLiBNb2RpZnkgYXMgbmVlZGVkLikKKyMKKyMgICBUaGUgdXNlciBjYW4gb3ZlcnJpZGUgdGhlIGZsYWdzIGJ5IHNldHRpbmcgdGhlIENGTEFHUyBlbnZpcm9ubWVudAorIyAgIHZhcmlhYmxlLiBUaGUgdXNlciBjYW4gYWxzbyBzcGVjaWZ5IC0tZW5hYmxlLXBvcnRhYmxlLWJpbmFyeSBpbiBvcmRlciB0bworIyAgIGRpc2FibGUgYW55IG9wdGltaXphdGlvbiBmbGFncyB0aGF0IG1pZ2h0IHJlc3VsdCBpbiBhIGJpbmFyeSB0aGF0IG9ubHkKKyMgICBydW5zIG9uIHRoZSBob3N0IGFyY2hpdGVjdHVyZS4KKyMKKyMgICBOb3RlIGFsc28gdGhhdCB0aGUgZmxhZ3MgYXNzdW1lIHRoYXQgQU5TSSBDIGFsaWFzaW5nIHJ1bGVzIGFyZSBmb2xsb3dlZAorIyAgIGJ5IHRoZSBjb2RlIChlLmcuIGZvciBnY2MncyAtZnN0cmljdC1hbGlhc2luZyksIGFuZCB0aGF0IGZsb2F0aW5nLXBvaW50CisjICAgY29tcHV0YXRpb25zIGNhbiBiZSByZS1vcmRlcmVkIGFzIG5lZWRlZC4KKyMKKyMgICBSZXF1aXJlcyBtYWNyb3M6IEFYX0NIRUNLX0NPTVBJTEVfRkxBRywgQVhfQ09NUElMRVJfVkVORE9SLAorIyAgIEFYX0dDQ19BUkNIRkxBRywgQVhfR0NDX1g4Nl9DUFVJRC4KKyMKKyMgTElDRU5TRQorIworIyAgIENvcHlyaWdodCAoYykgMjAwOCBTdGV2ZW4gRy4gSm9obnNvbiA8c3RldmVuakBhbHVtLm1pdC5lZHU+CisjICAgQ29weXJpZ2h0IChjKSAyMDA4IE1hdHRlbyBGcmlnbworIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorIyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwKKyMgICBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjICAgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodCBvd25lcgorIyAgIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSB0aGUgY29uZmlndXJlCisjICAgc2NyaXB0cyB0aGF0IGFyZSB0aGUgb3V0cHV0IG9mIEF1dG9jb25mIHdoZW4gcHJvY2Vzc2luZyB0aGUgTWFjcm8uIFlvdQorIyAgIG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHdoZW4gdXNpbmcKKyMgICBvciBkaXN0cmlidXRpbmcgc3VjaCBzY3JpcHRzLCBldmVuIHRob3VnaCBwb3J0aW9ucyBvZiB0aGUgdGV4dCBvZiB0aGUKKyMgICBNYWNybyBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMgZ292ZXJuCisjICAgYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCisjCisjICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGFwcGxpZXMgdG8gdmVyc2lvbnMgb2YgdGhlIEF1dG9jb25mCisjICAgTWFjcm8gcmVsZWFzZWQgYnkgdGhlIEF1dG9jb25mIEFyY2hpdmUuIFdoZW4geW91IG1ha2UgYW5kIGRpc3RyaWJ1dGUgYQorIyAgIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIEF1dG9jb25mIE1hY3JvLCB5b3UgbWF5IGV4dGVuZCB0aGlzIHNwZWNpYWwKKyMgICBleGNlcHRpb24gdG8gdGhlIEdQTCB0byBhcHBseSB0byB5b3VyIG1vZGlmaWVkIHZlcnNpb24gYXMgd2VsbC4KKworI3NlcmlhbCAxMgorCitBQ19ERUZVTihbQVhfQ0NfTUFYT1BUXSwKK1sKK0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKQorQUNfUkVRVUlSRShbQVhfQ09NUElMRVJfVkVORE9SXSkKK0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkKKworQUNfQVJHX0VOQUJMRShwb3J0YWJsZS1iaW5hcnksIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtcG9ydGFibGUtYmluYXJ5XSwgW2Rpc2FibGUgY29tcGlsZXIgb3B0aW1pemF0aW9ucyB0aGF0IHdvdWxkIHByb2R1Y2UgdW5wb3J0YWJsZSBiaW5hcmllc10pXSwKKwlhY3hfbWF4b3B0X3BvcnRhYmxlPSR3aXRodmFsLCBhY3hfbWF4b3B0X3BvcnRhYmxlPW5vKQorCisjIFRyeSB0byBkZXRlcm1pbmUgImdvb2QiIG5hdGl2ZSBjb21waWxlciBmbGFncyBpZiBub25lIHNwZWNpZmllZCB2aWEgQ0ZMQUdTCitpZiB0ZXN0ICIkYWNfdGVzdF9DRkxBR1MiICE9ICJzZXQiOyB0aGVuCisgIENGTEFHUz0iIgorICBjYXNlICRheF9jdl9jX2NvbXBpbGVyX3ZlbmRvciBpbgorICAgIGRlYykgQ0ZMQUdTPSItbmV3YyAtdzAgLU81IC1hbnNpX2FsaWFzIC1hbnNpX2FyZ3MgLWZwX3Jlb3JkZXIgLXR1bmUgaG9zdCIKKwkgaWYgdGVzdCAieCRhY3hfbWF4b3B0X3BvcnRhYmxlIiA9IHhubzsgdGhlbgorICAgICAgICAgICBDRkxBR1M9IiRDRkxBR1MgLWFyY2ggaG9zdCIKKyAgICAgICAgIGZpOzsKKworICAgIHN1bikgQ0ZMQUdTPSItbmF0aXZlIC1mYXN0IC14TzUgLWRhbGlnbiIKKwkgaWYgdGVzdCAieCRhY3hfbWF4b3B0X3BvcnRhYmxlIiA9IHh5ZXM7IHRoZW4KKwkgICBDRkxBR1M9IiRDRkxBR1MgLXhhcmNoPWdlbmVyaWMiCisgICAgICAgICBmaTs7CisKKyAgICBocCkgIENGTEFHUz0iK09hbGwgK09wdHJzX2Fuc2kgK0RTbmF0aXZlIgorCSBpZiB0ZXN0ICJ4JGFjeF9tYXhvcHRfcG9ydGFibGUiID0geHllczsgdGhlbgorCSAgIENGTEFHUz0iJENGTEFHUyArREFwb3J0YWJsZSIKKwkgZmk7OworCisgICAgaWJtKSBpZiB0ZXN0ICJ4JGFjeF9tYXhvcHRfcG9ydGFibGUiID0geG5vOyB0aGVuCisgICAgICAgICAgIHhsY19vcHQ9Ii1xYXJjaD1hdXRvIC1xdHVuZT1hdXRvIgorCSBlbHNlCisgICAgICAgICAgIHhsY19vcHQ9Ii1xdHVuZT1hdXRvIgorCSBmaQorICAgICAgICAgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKCR4bGNfb3B0LAorCQlDRkxBR1M9Ii1PMyAtcWFuc2lhbGlhcyAtdyAkeGxjX29wdCIsCisgICAgICAgICAgICAgICBbQ0ZMQUdTPSItTzMgLXFhbnNpYWxpYXMgLXciCisgICAgICAgICAgICAgICAgZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogIFlvdSBzZWVtIHRvIGhhdmUgdGhlIElCTSAgQyBjb21waWxlci4gIEl0IGlzICAgICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICByZWNvbW1lbmRlZCBmb3IgYmVzdCBwZXJmb3JtYW5jZSB0aGF0IHlvdSB1c2U6ICAgICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogICAgQ0ZMQUdTPS1PMyAtcWFyY2g9eHh4IC1xdHVuZT14eHggLXFhbnNpYWxpYXMgLXcgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICAgICAgICAgICAgICAgICAgICAgIF5eXiAgICAgICAgXl5eICAgICAgICAgICAgICAgICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgd2hlcmUgeHh4IGlzIHB3cjIsIHB3cjMsIDYwNCwgb3Igd2hhdGV2ZXIga2luZCBvZiAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogIENQVSB5b3UgaGF2ZS4gIChTZXQgdGhlIENGTEFHUyBlbnZpcm9ubWVudCB2YXIuICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICBhbmQgcmUtcnVuIGNvbmZpZ3VyZS4pICBGb3IgbW9yZSBpbmZvLCBtYW4gY2MuICAgICoiCisgICAgICAgICAgICAgICAgZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIl0pCisgICAgICAgICA7OworCisgICAgaW50ZWwpIENGTEFHUz0iLU8zIC1hbnNpX2FsaWFzIgorCWlmIHRlc3QgIngkYWN4X21heG9wdF9wb3J0YWJsZSIgPSB4bm87IHRoZW4KKwkgIGljY19hcmNoZmxhZz11bmtub3duCisJICBpY2NfZmxhZ3M9IiIKKwkgIGNhc2UgJGhvc3RfY3B1IGluCisJICAgIGk2ODYqfHg4Nl82NCopCisgICAgICAgICAgICAgICMgaWNjIGFjY2VwdHMgZ2NjIGFzc2VtYmx5IHN5bnRheCwgc28gdGhlc2Ugc2hvdWxkIHdvcms6CisJICAgICAgQVhfR0NDX1g4Nl9DUFVJRCgwKQorICAgICAgICAgICAgICBBWF9HQ0NfWDg2X0NQVUlEKDEpCisJICAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wIGluICMgc2VlIEFYX0dDQ19BUkNIRkxBRworICAgICAgICAgICAgICAgICo6NzU2ZTY1NDc6KjoqKSAjIEludGVsCisgICAgICAgICAgICAgICAgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzEgaW4KKyAgICAgICAgICAgICAgICAgICAgKjZhPzoqW1syMzRdXToqOip8KjZbWzc4OWJdXT86KjoqOiopIGljY19mbGFncz0iLXhLIjs7CisgICAgICAgICAgICAgICAgICAgICpmM1tbMzQ3XV06KjoqOip8KmY0WzEzNDddOio6KjoqKSBpY2NfZmxhZ3M9Ii14UCAteE4gLXhXIC14SyI7OworICAgICAgICAgICAgICAgICAgICAqZj8/Oio6KjoqKSBpY2NfZmxhZ3M9Ii14TiAteFcgLXhLIjs7CisgICAgICAgICAgICAgICAgICBlc2FjIDs7CisgICAgICAgICAgICAgIGVzYWMgOzsKKyAgICAgICAgICBlc2FjCisgICAgICAgICAgaWYgdGVzdCAieCRpY2NfZmxhZ3MiICE9IHg7IHRoZW4KKyAgICAgICAgICAgIGZvciBmbGFnIGluICRpY2NfZmxhZ3M7IGRvCisgICAgICAgICAgICAgIEFYX0NIRUNLX0NPTVBJTEVfRkxBRygkZmxhZywgW2ljY19hcmNoZmxhZz0kZmxhZzsgYnJlYWtdKQorICAgICAgICAgICAgZG9uZQorICAgICAgICAgIGZpCisgICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgaWNjIGFyY2hpdGVjdHVyZSBmbGFnXSkKKwkgIEFDX01TR19SRVNVTFQoJGljY19hcmNoZmxhZykKKyAgICAgICAgICBpZiB0ZXN0ICJ4JGljY19hcmNoZmxhZyIgIT0geHVua25vd247IHRoZW4KKyAgICAgICAgICAgIENGTEFHUz0iJENGTEFHUyAkaWNjX2FyY2hmbGFnIgorICAgICAgICAgIGZpCisgICAgICAgIGZpCisJOzsKKworICAgIGdudSkKKyAgICAgIyBkZWZhdWx0IG9wdGltaXphdGlvbiBmbGFncyBmb3IgZ2NjIG9uIGFsbCBzeXN0ZW1zCisgICAgIENGTEFHUz0iLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIgorCisgICAgICMgLW1hbGlnbi1kb3VibGUgZm9yIHg4NiBzeXN0ZW1zCisgICAgIEFYX0NIRUNLX0NPTVBJTEVfRkxBRygtbWFsaWduLWRvdWJsZSwgQ0ZMQUdTPSIkQ0ZMQUdTIC1tYWxpZ24tZG91YmxlIikKKworICAgICAjICAtZnN0cmljdC1hbGlhc2luZyBmb3IgZ2NjLTIuOTUrCisgICAgIEFYX0NIRUNLX0NPTVBJTEVfRkxBRygtZnN0cmljdC1hbGlhc2luZywKKwlDRkxBR1M9IiRDRkxBR1MgLWZzdHJpY3QtYWxpYXNpbmciKQorCisgICAgICMgbm90ZSB0aGF0IHdlIGVuYWJsZSAidW5zYWZlIiBmcCBvcHRpbWl6YXRpb24gd2l0aCBvdGhlciBjb21waWxlcnMsIHRvbworICAgICBBWF9DSEVDS19DT01QSUxFX0ZMQUcoLWZmYXN0LW1hdGgsIENGTEFHUz0iJENGTEFHUyAtZmZhc3QtbWF0aCIpCisKKyAgICAgQVhfR0NDX0FSQ0hGTEFHKCRhY3hfbWF4b3B0X3BvcnRhYmxlKQorICAgICA7OworICBlc2FjCisKKyAgaWYgdGVzdCAteiAiJENGTEFHUyI7IHRoZW4KKwllY2hvICIiCisJZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCisgICAgICAgIGVjaG8gIiogV0FSTklORzogRG9uJ3Qga25vdyB0aGUgYmVzdCBDRkxBR1MgZm9yIHRoaXMgc3lzdGVtICAqIgorICAgICAgICBlY2hvICIqIFVzZSAuL2NvbmZpZ3VyZSBDRkxBR1M9Li4uIHRvIHNwZWNpZnkgeW91ciBvd24gZmxhZ3MgKiIKKwllY2hvICIqIChvdGhlcndpc2UsIGEgZGVmYXVsdCBvZiBDRkxBR1M9LU8zIHdpbGwgYmUgdXNlZCkgICAgKiIKKwllY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKKwllY2hvICIiCisgICAgICAgIENGTEFHUz0iLU8zIgorICBmaQorCisgIEFYX0NIRUNLX0NPTVBJTEVfRkxBRygkQ0ZMQUdTLCBbXSwgWworCWVjaG8gIiIKKyAgICAgICAgZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCisgICAgICAgIGVjaG8gIiogV0FSTklORzogVGhlIGd1ZXNzZWQgQ0ZMQUdTIGRvbid0IHNlZW0gdG8gd29yayB3aXRoICAqIgorICAgICAgICBlY2hvICIqIHlvdXIgY29tcGlsZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiIKKyAgICAgICAgZWNobyAiKiBVc2UgLi9jb25maWd1cmUgQ0ZMQUdTPS4uLiB0byBzcGVjaWZ5IHlvdXIgb3duIGZsYWdzICoiCisgICAgICAgIGVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgorICAgICAgICBlY2hvICIiCisgICAgICAgIENGTEFHUz0iIgorICBdKQorCitmaQorXSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY2ZsYWdzX3dhcm5fYWxsLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jZmxhZ3Nfd2Fybl9hbGwubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIyZTM3ZgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY2ZsYWdzX3dhcm5fYWxsLm00CkBAIC0wLDAgKzEsMTIxIEBACisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9jZmxhZ3Nfd2Fybl9hbGwuaHRtbAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgU1lOT1BTSVMKKyMKKyMgICBBWF9DRkxBR1NfV0FSTl9BTEwgICBbKHNoZWxsdmFyIFssZGVmYXVsdCwgW0EvTkFdXSldCisjICAgQVhfQ1hYRkxBR1NfV0FSTl9BTEwgWyhzaGVsbHZhciBbLGRlZmF1bHQsIFtBL05BXV0pXQorIyAgIEFYX0ZDRkxBR1NfV0FSTl9BTEwgIFsoc2hlbGx2YXIgWyxkZWZhdWx0LCBbQS9OQV1dKV0KKyMKKyMgREVTQ1JJUFRJT04KKyMKKyMgICBUcnkgdG8gZmluZCBhIGNvbXBpbGVyIG9wdGlvbiB0aGF0IGVuYWJsZXMgbW9zdCByZWFzb25hYmxlIHdhcm5pbmdzLgorIworIyAgIEZvciB0aGUgR05VIGNvbXBpbGVyIGl0IHdpbGwgYmUgLVdhbGwgKGFuZCAtYW5zaSAtcGVkYW50aWMpIFRoZSByZXN1bHQKKyMgICBpcyBhZGRlZCB0byB0aGUgc2hlbGx2YXIgYmVpbmcgQ0ZMQUdTLCBDWFhGTEFHUywgb3IgRkNGTEFHUyBieSBkZWZhdWx0LgorIworIyAgIEN1cnJlbnRseSB0aGlzIG1hY3JvIGtub3dzIGFib3V0IHRoZSBHQ0MsIFNvbGFyaXMsIERpZ2l0YWwgVW5peCwgQUlYLAorIyAgIEhQLVVYLCBJUklYLCBORUMgU1gtNSAoU3VwZXItVVggMTApLCBDcmF5IEo5MCAoVW5pY29zIDEwLjAuMC44KSwgYW5kCisjICAgSW50ZWwgY29tcGlsZXJzLiAgRm9yIGEgZ2l2ZW4gY29tcGlsZXIsIHRoZSBGb3J0cmFuIGZsYWdzIGFyZSBtdWNoIG1vcmUKKyMgICBleHBlcmltZW50YWwgdGhhbiB0aGVpciBDIGVxdWl2YWxlbnRzLgorIworIyAgICAtICQxIHNoZWxsLXZhcmlhYmxlLXRvLWFkZC10byA6IENGTEFHUywgQ1hYRkxBR1MsIG9yIEZDRkxBR1MKKyMgICAgLSAkMiBhZGQtdmFsdWUtaWYtbm90LWZvdW5kIDogbm90aGluZworIyAgICAtICQzIGFjdGlvbi1pZi1mb3VuZCA6IGFkZCB2YWx1ZSB0byBzaGVsbHZhcmlhYmxlCisjICAgIC0gJDQgYWN0aW9uLWlmLW5vdC1mb3VuZCA6IG5vdGhpbmcKKyMKKyMgICBOT1RFOiBUaGVzZSBtYWNyb3MgZGVwZW5kIG9uIEFYX0FQUEVORF9GTEFHLgorIworIyBMSUNFTlNFCisjCisjICAgQ29weXJpZ2h0IChjKSAyMDA4IEd1aWRvIFUuIERyYWhlaW0gPGd1aWRvZEBnbXguZGU+CisjICAgQ29weXJpZ2h0IChjKSAyMDEwIFJoeXMgVWxlcmljaCA8cmh5cy51bGVyaWNoQGdtYWlsLmNvbT4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyMgICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsCisjICAgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworIyAgIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjICAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHJlc3BlY3RpdmUgQXV0b2NvbmYgTWFjcm8ncyBjb3B5cmlnaHQgb3duZXIKKyMgICBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgdGhlIGNvbmZpZ3VyZQorIyAgIHNjcmlwdHMgdGhhdCBhcmUgdGhlIG91dHB1dCBvZiBBdXRvY29uZiB3aGVuIHByb2Nlc3NpbmcgdGhlIE1hY3JvLiBZb3UKKyMgICBuZWVkIG5vdCBmb2xsb3cgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB3aGVuIHVzaW5nCisjICAgb3IgZGlzdHJpYnV0aW5nIHN1Y2ggc2NyaXB0cywgZXZlbiB0aG91Z2ggcG9ydGlvbnMgb2YgdGhlIHRleHQgb2YgdGhlCisjICAgTWFjcm8gYXBwZWFyIGluIHRoZW0uIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybgorIyAgIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorIworIyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBhcHBsaWVzIHRvIHZlcnNpb25zIG9mIHRoZSBBdXRvY29uZgorIyAgIE1hY3JvIHJlbGVhc2VkIGJ5IHRoZSBBdXRvY29uZiBBcmNoaXZlLiBXaGVuIHlvdSBtYWtlIGFuZCBkaXN0cmlidXRlIGEKKyMgICBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBBdXRvY29uZiBNYWNybywgeW91IG1heSBleHRlbmQgdGhpcyBzcGVjaWFsCisjICAgZXhjZXB0aW9uIHRvIHRoZSBHUEwgdG8gYXBwbHkgdG8geW91ciBtb2RpZmllZCB2ZXJzaW9uIGFzIHdlbGwuCisKKyNzZXJpYWwgMTMKKworQUNfREVGVU4oW0FYX0ZMQUdTX1dBUk5fQUxMXSxbZG5sCitBU19WQVJfUFVTSERFRihbRkxBR1NdLFtfQUNfTEFOR19QUkVGSVhbXUZMQUdTXSlkbmwKK0FTX1ZBUl9QVVNIREVGKFtWQVJdLFthY19jdl9bXV9BQ19MQU5HX0FCQlJFVltdZmxhZ3Nfd2Fybl9hbGxdKWRubAorQUNfQ0FDSEVfQ0hFQ0soW200X2lmdmFsKCQxLCQxLEZMQUdTKSBmb3IgbWF4aW11bSB3YXJuaW5nc10sCitWQVIsW1ZBUj0ibm8sIHVua25vd24iCithY19zYXZlX1tdRkxBR1M9IiRbXUZMQUdTIgorZm9yIGFjX2FyZyBkbmwKK2luICItd2FybiBhbGwgICUgLXdhcm4gYWxsIiAgIGRubCBJbnRlbAorICAgIi1wZWRhbnRpYyAgJSAtV2FsbCIgICAgICAgZG5sIEdDQworICAgIi14c3RyY29uc3QgJSAtdiIgICAgICAgICAgZG5sIFNvbGFyaXMgQworICAgIi1zdGQxICAgICAgJSAtdmVyYm9zZSAtdzAgLXdhcm5wcm90b3MiIGRubCBEaWdpdGFsIFVuaXgKKyAgICItcWxhbmdsdmw9YW5zaSAlIC1xc3JjbXNnIC1xaW5mbz1hbGw6bm9wcHQ6bm9wcGM6bm9vYnM6bm9jbmQiIGRubCBBSVgKKyAgICItYW5zaSAtYW5zaUUgJSAtZnVsbHdhcm4iIGRubCBJUklYCisgICAiK0VTbGl0ICAgICAlICt3MSIgICAgICAgICBkbmwgSFAtVVggQworICAgIi1YYyAgICAgICAgJSAtcHZjdGxbLF1mdWxsbXNnIiBkbmwgTkVDIFNYLTUgKFN1cGVyLVVYIDEwKQorICAgIi1oIGNvbmZvcm0gJSAtaCBtc2dsZXZlbCAyIiBkbmwgQ3JheSBDIChVbmljb3MpCisgICAjCitkbyBGTEFHUz0iJGFjX3NhdmVfW11GTEFHUyAiYGVjaG8gJGFjX2FyZyB8IHNlZCAtZSAncywlJS4qLCwnIC1lICdzLCUsLCdgCisgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNXSwKKyAgICAgICAgICAgICAgICAgICAgIFtWQVI9YGVjaG8gJGFjX2FyZyB8IHNlZCAtZSAncywuKiUgKiwsJ2AgOyBicmVha10pCitkb25lCitGTEFHUz0iJGFjX3NhdmVfW11GTEFHUyIKK10pCitBU19WQVJfUE9QREVGKFtGTEFHU10pZG5sCitjYXNlICIuJFZBUiIgaW4KKyAgICAgLm9rfC5vaywqKSBtNF9pZnZhbG4oJDMsJDMpIDs7CisgICAufC5ub3wubm8sKikgbTRfZGVmYXVsdCgkNCxbbTRfaWZ2YWwoJDIsW0FYX0FQUEVORF9GTEFHKFskMl0sIFskMV0pXSldKSA7OworICAgKikgbTRfZGVmYXVsdCgkMyxbQVhfQVBQRU5EX0ZMQUcoWyRWQVJdLCBbJDFdKV0pIDs7Citlc2FjCitBU19WQVJfUE9QREVGKFtWQVJdKWRubAorXSlkbmwgQVhfRkxBR1NfV0FSTl9BTEwKK2RubCAgaW1wbGVtZW50YXRpb24gdGFjdGljczoKK2RubCAgIHRoZSBmb3ItYXJndW1lbnQgY29udGFpbnMgYSBsaXN0IG9mIG9wdGlvbnMuIFRoZSBmaXJzdCBwYXJ0IG9mCitkbmwgICB0aGVzZSBkb2VzIG9ubHkgZXhpc3QgdG8gZGV0ZWN0IHRoZSBjb21waWxlciAtIHVzdWFsbHkgaXQgaXMKK2RubCAgIGEgZ2xvYmFsIG9wdGlvbiB0byBlbmFibGUgLWFuc2kgb3IgLWV4dHJhd2FybmluZ3MuIEFsbCBvdGhlcgorZG5sICAgY29tcGlsZXJzIHdpbGwgZmFpbCBhYm91dCBpdC4gVGhhdCB3YXMgbmVlZGVkIHNpbmNlIGEgbG90IG9mCitkbmwgICBjb21waWxlcnMgd2lsbCBnaXZlIGZhbHNlIHBvc2l0aXZlcyBmb3Igc29tZSBvcHRpb24tc3ludGF4CitkbmwgICBsaWtlIC1Xb3B0aW9uIG9yIC1Yb3B0aW9uIGFzIHRoZXkgdGhpbmsgb2YgaXQgaXMgYSBwYXNzLXRocm91Z2gKK2RubCAgIHRvIGxhdGVyIGNvbXBpbGUgc3RhZ2VzIG9yIHNvbWV0aGluZy4gVGhlICIlIiBpcyB1c2VkIGFzIGEKK2RubCAgIGRlbGltaXRlci4gQSBub24tb3B0aW9uIGNvbW1lbnQgY2FuIGJlIGdpdmVuIGFmdGVyICIlJSIgbWFya3MKK2RubCAgIHdoaWNoIHdpbGwgYmUgc2hvd24gYnV0IG5vdCBhZGRlZCB0byB0aGUgcmVzcGVjdGl2ZSBDL0NYWEZMQUdTLgorCitBQ19ERUZVTihbQVhfQ0ZMQUdTX1dBUk5fQUxMXSxbZG5sCitBQ19MQU5HX1BVU0goW0NdKQorQVhfRkxBR1NfV0FSTl9BTEwoWyQxXSwgWyQyXSwgWyQzXSwgWyQ0XSkKK0FDX0xBTkdfUE9QKFtDXSkKK10pCisKK0FDX0RFRlVOKFtBWF9DWFhGTEFHU19XQVJOX0FMTF0sW2RubAorQUNfTEFOR19QVVNIKFtDKytdKQorQVhfRkxBR1NfV0FSTl9BTEwoWyQxXSwgWyQyXSwgWyQzXSwgWyQ0XSkKK0FDX0xBTkdfUE9QKFtDKytdKQorXSkKKworQUNfREVGVU4oW0FYX0ZDRkxBR1NfV0FSTl9BTExdLFtkbmwKK0FDX0xBTkdfUFVTSChbRm9ydHJhbl0pCitBWF9GTEFHU19XQVJOX0FMTChbJDFdLCBbJDJdLCBbJDNdLCBbJDRdKQorQUNfTEFOR19QT1AoW0ZvcnRyYW5dKQorXSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY2hlY2tfY29tcGlsZV9mbGFnLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jaGVja19jb21waWxlX2ZsYWcubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNhOGQ2OQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY2hlY2tfY29tcGlsZV9mbGFnLm00CkBAIC0wLDAgKzEsNzIgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfY2hlY2tfY29tcGlsZV9mbGFnLmh0bWwKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIFNZTk9QU0lTCisjCisjICAgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKEZMQUcsIFtBQ1RJT04tU1VDQ0VTU10sIFtBQ1RJT04tRkFJTFVSRV0sIFtFWFRSQS1GTEFHU10pCisjCisjIERFU0NSSVBUSU9OCisjCisjICAgQ2hlY2sgd2hldGhlciB0aGUgZ2l2ZW4gRkxBRyB3b3JrcyB3aXRoIHRoZSBjdXJyZW50IGxhbmd1YWdlJ3MgY29tcGlsZXIKKyMgICBvciBnaXZlcyBhbiBlcnJvci4gIChXYXJuaW5ncywgaG93ZXZlciwgYXJlIGlnbm9yZWQpCisjCisjICAgQUNUSU9OLVNVQ0NFU1MvQUNUSU9OLUZBSUxVUkUgYXJlIHNoZWxsIGNvbW1hbmRzIHRvIGV4ZWN1dGUgb24KKyMgICBzdWNjZXNzL2ZhaWx1cmUuCisjCisjICAgSWYgRVhUUkEtRkxBR1MgaXMgZGVmaW5lZCwgaXQgaXMgYWRkZWQgdG8gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UncyBkZWZhdWx0CisjICAgZmxhZ3MgKGUuZy4gQ0ZMQUdTKSB3aGVuIHRoZSBjaGVjayBpcyBkb25lLiAgVGhlIGNoZWNrIGlzIHRodXMgbWFkZSB3aXRoCisjICAgdGhlIGZsYWdzOiAiQ0ZMQUdTIEVYVFJBLUZMQUdTIEZMQUciLiAgVGhpcyBjYW4gZm9yIGV4YW1wbGUgYmUgdXNlZCB0bworIyAgIGZvcmNlIHRoZSBjb21waWxlciB0byBpc3N1ZSBhbiBlcnJvciB3aGVuIGEgYmFkIGZsYWcgaXMgZ2l2ZW4uCisjCisjICAgTk9URTogSW1wbGVtZW50YXRpb24gYmFzZWQgb24gQVhfQ0ZMQUdTX0dDQ19PUFRJT04uIFBsZWFzZSBrZWVwIHRoaXMKKyMgICBtYWNybyBpbiBzeW5jIHdpdGggQVhfQ0hFQ0tfe1BSRVBST0MsTElOS31fRkxBRy4KKyMKKyMgTElDRU5TRQorIworIyAgIENvcHlyaWdodCAoYykgMjAwOCBHdWlkbyBVLiBEcmFoZWltIDxndWlkb2RAZ214LmRlPgorIyAgIENvcHlyaWdodCAoYykgMjAxMSBNYWFydGVuIEJvc21hbnMgPG1rYm9zbWFuc0BnbWFpbC5jb20+CisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisjICAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbAorIyAgIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgICB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworIyAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSByZXNwZWN0aXZlIEF1dG9jb25mIE1hY3JvJ3MgY29weXJpZ2h0IG93bmVyCisjICAgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZSBjb25maWd1cmUKKyMgICBzY3JpcHRzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgQXV0b2NvbmYgd2hlbiBwcm9jZXNzaW5nIHRoZSBNYWNyby4gWW91CisjICAgbmVlZCBub3QgZm9sbG93IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugd2hlbiB1c2luZworIyAgIG9yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoIHBvcnRpb25zIG9mIHRoZSB0ZXh0IG9mIHRoZQorIyAgIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4KKyMgICBhbGwgb3RoZXIgdXNlIG9mIHRoZSBtYXRlcmlhbCB0aGF0IGNvbnN0aXR1dGVzIHRoZSBBdXRvY29uZiBNYWNyby4KKyMKKyMgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgYXBwbGllcyB0byB2ZXJzaW9ucyBvZiB0aGUgQXV0b2NvbmYKKyMgICBNYWNybyByZWxlYXNlZCBieSB0aGUgQXV0b2NvbmYgQXJjaGl2ZS4gV2hlbiB5b3UgbWFrZSBhbmQgZGlzdHJpYnV0ZSBhCisjICAgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQXV0b2NvbmYgTWFjcm8sIHlvdSBtYXkgZXh0ZW5kIHRoaXMgc3BlY2lhbAorIyAgIGV4Y2VwdGlvbiB0byB0aGUgR1BMIHRvIGFwcGx5IHRvIHlvdXIgbW9kaWZpZWQgdmVyc2lvbiBhcyB3ZWxsLgorCisjc2VyaWFsIDIKKworQUNfREVGVU4oW0FYX0NIRUNLX0NPTVBJTEVfRkxBR10sCitbQUNfUFJFUkVRKDIuNTkpZG5sIGZvciBfQUNfTEFOR19QUkVGSVgKK0FTX1ZBUl9QVVNIREVGKFtDQUNIRVZBUl0sW2F4X2N2X2NoZWNrX1tdX0FDX0xBTkdfQUJCUkVWW11mbGFnc18kNF8kMV0pZG5sCitBQ19DQUNIRV9DSEVDSyhbd2hldGhlciBfQUNfTEFORyBjb21waWxlciBhY2NlcHRzICQxXSwgQ0FDSEVWQVIsIFsKKyAgYXhfY2hlY2tfc2F2ZV9mbGFncz0kW11fQUNfTEFOR19QUkVGSVhbXUZMQUdTCisgIF9BQ19MQU5HX1BSRUZJWFtdRkxBR1M9IiRbXV9BQ19MQU5HX1BSRUZJWFtdRkxBR1MgJDQgJDEiCisgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oKV0sCisgICAgW0FTX1ZBUl9TRVQoQ0FDSEVWQVIsW3llc10pXSwKKyAgICBbQVNfVkFSX1NFVChDQUNIRVZBUixbbm9dKV0pCisgIF9BQ19MQU5HX1BSRUZJWFtdRkxBR1M9JGF4X2NoZWNrX3NhdmVfZmxhZ3NdKQorQVNfSUYoW3Rlc3QgeCJBU19WQVJfR0VUKENBQ0hFVkFSKSIgPSB4eWVzXSwKKyAgW200X2RlZmF1bHQoWyQyXSwgOildLAorICBbbTRfZGVmYXVsdChbJDNdLCA6KV0pCitBU19WQVJfUE9QREVGKFtDQUNIRVZBUl0pZG5sCitdKWRubCBBWF9DSEVDS19DT01QSUxFX0ZMQUdTCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NvbXBpbGVyX3ZlbmRvci5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY29tcGlsZXJfdmVuZG9yLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczZTMyZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NvbXBpbGVyX3ZlbmRvci5tNApAQCAtMCwwICsxLDg0IEBACisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9jb21waWxlcl92ZW5kb3IuaHRtbAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgU1lOT1BTSVMKKyMKKyMgICBBWF9DT01QSUxFUl9WRU5ET1IKKyMKKyMgREVTQ1JJUFRJT04KKyMKKyMgICBEZXRlcm1pbmUgdGhlIHZlbmRvciBvZiB0aGUgQy9DKysgY29tcGlsZXIsIGUuZy4sIGdudSwgaW50ZWwsIGlibSwgc3VuLAorIyAgIGhwLCBib3JsYW5kLCBjb21lYXUsIGRlYywgY3JheSwga2FpLCBsY2MsIG1ldHJvd2Vya3MsIHNnaSwgbWljcm9zb2Z0LAorIyAgIHdhdGNvbSwgZXRjLiBUaGUgdmVuZG9yIGlzIHJldHVybmVkIGluIHRoZSBjYWNoZSB2YXJpYWJsZQorIyAgICRheF9jdl9jX2NvbXBpbGVyX3ZlbmRvciBmb3IgQyBhbmQgJGF4X2N2X2N4eF9jb21waWxlcl92ZW5kb3IgZm9yIEMrKy4KKyMKKyMgTElDRU5TRQorIworIyAgIENvcHlyaWdodCAoYykgMjAwOCBTdGV2ZW4gRy4gSm9obnNvbiA8c3RldmVuakBhbHVtLm1pdC5lZHU+CisjICAgQ29weXJpZ2h0IChjKSAyMDA4IE1hdHRlbyBGcmlnbworIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorIyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwKKyMgICBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjICAgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodCBvd25lcgorIyAgIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSB0aGUgY29uZmlndXJlCisjICAgc2NyaXB0cyB0aGF0IGFyZSB0aGUgb3V0cHV0IG9mIEF1dG9jb25mIHdoZW4gcHJvY2Vzc2luZyB0aGUgTWFjcm8uIFlvdQorIyAgIG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHdoZW4gdXNpbmcKKyMgICBvciBkaXN0cmlidXRpbmcgc3VjaCBzY3JpcHRzLCBldmVuIHRob3VnaCBwb3J0aW9ucyBvZiB0aGUgdGV4dCBvZiB0aGUKKyMgICBNYWNybyBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMgZ292ZXJuCisjICAgYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCisjCisjICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGFwcGxpZXMgdG8gdmVyc2lvbnMgb2YgdGhlIEF1dG9jb25mCisjICAgTWFjcm8gcmVsZWFzZWQgYnkgdGhlIEF1dG9jb25mIEFyY2hpdmUuIFdoZW4geW91IG1ha2UgYW5kIGRpc3RyaWJ1dGUgYQorIyAgIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIEF1dG9jb25mIE1hY3JvLCB5b3UgbWF5IGV4dGVuZCB0aGlzIHNwZWNpYWwKKyMgICBleGNlcHRpb24gdG8gdGhlIEdQTCB0byBhcHBseSB0byB5b3VyIG1vZGlmaWVkIHZlcnNpb24gYXMgd2VsbC4KKworI3NlcmlhbCAxMQorCitBQ19ERUZVTihbQVhfQ09NUElMRVJfVkVORE9SXSwKK1tBQ19DQUNIRV9DSEVDSyhbZm9yIF9BQ19MQU5HIGNvbXBpbGVyIHZlbmRvcl0sIGF4X2N2X1tdX0FDX0xBTkdfQUJCUkVWW11fY29tcGlsZXJfdmVuZG9yLAorICBbIyBub3RlOiBkb24ndCBjaGVjayBmb3IgZ2NjIGZpcnN0IHNpbmNlIHNvbWUgb3RoZXIgY29tcGlsZXJzIGRlZmluZSBfX0dOVUNfXworICB2ZW5kb3JzPSJpbnRlbDogICAgIF9fSUNDLF9fRUNDLF9fSU5URUxfQ09NUElMRVIKKyAgICAgICAgICAgaWJtOiAgICAgICBfX3hsY19fLF9feGxDX18sX19JQk1DX18sX19JQk1DUFBfXworICAgICAgICAgICBwYXRoc2NhbGU6IF9fUEFUSENDX18sX19QQVRIU0NBTEVfXworICAgICAgICAgICBjbGFuZzogICAgIF9fY2xhbmdfXworICAgICAgICAgICBnbnU6ICAgICAgIF9fR05VQ19fCisgICAgICAgICAgIHN1bjogICAgICAgX19TVU5QUk9fQyxfX1NVTlBST19DQworICAgICAgICAgICBocDogICAgICAgIF9fSFBfY2MsX19IUF9hQ0MKKyAgICAgICAgICAgZGVjOiAgICAgICBfX0RFQ0MsX19ERUNDWFgsX19ERUNDX1ZFUixfX0RFQ0NYWF9WRVIKKyAgICAgICAgICAgYm9ybGFuZDogICBfX0JPUkxBTkRDX18sX19UVVJCT0NfXworICAgICAgICAgICBjb21lYXU6ICAgIF9fQ09NT19fCisgICAgICAgICAgIGNyYXk6ICAgICAgX0NSQVlDCisgICAgICAgICAgIGthaTogICAgICAgX19LQ0MKKyAgICAgICAgICAgbGNjOiAgICAgICBfX0xDQ19fCisgICAgICAgICAgIHNnaTogICAgICAgX19zZ2ksc2dpCisgICAgICAgICAgIG1pY3Jvc29mdDogX01TQ19WRVIKKyAgICAgICAgICAgbWV0cm93ZXJrczogX19NV0VSS1NfXworICAgICAgICAgICB3YXRjb206ICAgIF9fV0FUQ09NQ19fCisgICAgICAgICAgIHBvcnRsYW5kOiAgX19QR0kKKyAgICAgICAgICAgdW5rbm93bjogICBVTktOT1dOIgorICBmb3IgdmVudGVzdCBpbiAkdmVuZG9yczsgZG8KKyAgICBjYXNlICR2ZW50ZXN0IGluCisgICAgICAqOikgdmVuZG9yPSR2ZW50ZXN0OyBjb250aW51ZSA7OworICAgICAgKikgIHZlbmNwcD0iZGVmaW5lZCgiYGVjaG8gJHZlbnRlc3QgfCBzZWQgJ3MvLC8pIHx8IGRlZmluZWQoL2cnYCIpIiA7OworICAgIGVzYWMKKyAgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKCxbCisgICAgICAjaWYgISgkdmVuY3BwKQorICAgICAgICB0aGlzaXNhbmVycm9yOworICAgICAgI2VuZGlmCisgICAgXSldLCBbYnJlYWtdKQorICBkb25lCisgIGF4X2N2X1tdX0FDX0xBTkdfQUJCUkVWW11fY29tcGlsZXJfdmVuZG9yPWBlY2hvICR2ZW5kb3IgfCBjdXQgLWQ6IC1mMWAKKyBdKQorXSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY29uZmlndXJlX2FyZ3MubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NvbmZpZ3VyZV9hcmdzLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MjZiMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NvbmZpZ3VyZV9hcmdzLm00CkBAIC0wLDAgKzEsNzAgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9jb25maWd1cmVfYXJncy5odG1sCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBTWU5PUFNJUworIworIyAgIEFYX0NPTkZJR1VSRV9BUkdTCisjCisjIERFU0NSSVBUSU9OCisjCisjICAgSGVscGVyIG1hY3JvIGZvciBBWF9FTkFCTEVfQlVJTERESVIuCisjCisjICAgVGhlIHRyYWRpdGlvbmFsIHdheSBvZiBzdGFydGluZyBhIHN1YmRpci1jb25maWd1cmUgaXMgcnVubmluZyB0aGUgc2NyaXB0CisjICAgd2l0aCAkezErIiRAIn0gYnV0IHNpbmNlIGF1dG9jb25mIDIuNjAgdGhpcyBpcyBicm9rZW4uIEluc3RlYWQgd2UgaGF2ZQorIyAgIHRvIHJlbHkgb24gZXZhbCdpbmcgJGFjX2NvbmZpZ3VyZV9hcmdzIGhvd2V2ZXIgc29tZSBvbGQgYXV0b2NvbmYKKyMgICB2ZXJzaW9ucyBkbyBub3QgcHJvdmlkZSB0aGF0LiBUbyBlbnN1cmUgbWF4aW11bSBwb3J0YWJpbGl0eSBvZiBhdXRvY29uZgorIyAgIGV4dGVuc2lvbiBtYWNyb3MgdGhpcyBoZWxwZXIgY2FuIGJlIEFDX1JFUVVJUkUnZCBzbyB0aGF0CisjICAgJGFjX2NvbmZpZ3VyZV9hcmdzIHdpbGwgYWxzd2F5cyBiZSBwcmVzZW50LgorIworIyAgIFNhZGx5LCB0aGUgdHJhZGl0aW9uYWwgImV4ZWMgJFNIRUxMIiBvZiB0aGUgZW5hYmxlX2J1aWxkZGlyIG1hY3JvcyBpcworIyAgIHNwb2lsZWQgbm93IGFuZCBtdXN0IGJlIHJlcGxhY2VkIGJ5ICJldmFsICsgZXhpdCAkPyIuCisjCisjICAgRXhhbXBsZToKKyMKKyMgICAgIEFDX0RFRlVOKFtBWF9FTkFCTEVfU1VCRElSXSxbZG5sCisjICAgICAgIEFDX1JFUVVJUkUoW0FYX0NPTkZJR1VSRV9BUkdTXSlkbmwKKyMgICAgICAgZXZhbCAkU0hFTEwgJGFjX2NvbmZpZ3VyZV9hcmdzIHx8IGV4aXQgJD8KKyMgICAgICAgLi4uXSkKKyMKKyMgTElDRU5TRQorIworIyAgIENvcHlyaWdodCAoYykgMjAwOCBHdWlkbyBVLiBEcmFoZWltIDxndWlkb2RAZ214LmRlPgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorIyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwKKyMgICBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjICAgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodCBvd25lcgorIyAgIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSB0aGUgY29uZmlndXJlCisjICAgc2NyaXB0cyB0aGF0IGFyZSB0aGUgb3V0cHV0IG9mIEF1dG9jb25mIHdoZW4gcHJvY2Vzc2luZyB0aGUgTWFjcm8uIFlvdQorIyAgIG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHdoZW4gdXNpbmcKKyMgICBvciBkaXN0cmlidXRpbmcgc3VjaCBzY3JpcHRzLCBldmVuIHRob3VnaCBwb3J0aW9ucyBvZiB0aGUgdGV4dCBvZiB0aGUKKyMgICBNYWNybyBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMgZ292ZXJuCisjICAgYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCisjCisjICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGFwcGxpZXMgdG8gdmVyc2lvbnMgb2YgdGhlIEF1dG9jb25mCisjICAgTWFjcm8gcmVsZWFzZWQgYnkgdGhlIEF1dG9jb25mIEFyY2hpdmUuIFdoZW4geW91IG1ha2UgYW5kIGRpc3RyaWJ1dGUgYQorIyAgIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIEF1dG9jb25mIE1hY3JvLCB5b3UgbWF5IGV4dGVuZCB0aGlzIHNwZWNpYWwKKyMgICBleGNlcHRpb24gdG8gdGhlIEdQTCB0byBhcHBseSB0byB5b3VyIG1vZGlmaWVkIHZlcnNpb24gYXMgd2VsbC4KKworI3NlcmlhbCA5CisKK0FDX0RFRlVOKFtBWF9DT05GSUdVUkVfQVJHU10sWworICAgIyBbJF1AIGlzIHVuc2FibGUgaW4gMi42MCsgYnV0IGVhcmxpZXIgYXV0b2NvbmYgaGFkIG5vIGFjX2NvbmZpZ3VyZV9hcmdzCisgICBpZiB0ZXN0ICIke2FjX2NvbmZpZ3VyZV9hcmdzK3NldH0iICE9ICJzZXQiIDsgdGhlbgorICAgICAgYWNfY29uZmlndXJlX2FyZ3M9CisgICAgICBmb3IgYWNfYXJnIGluICR7MSsiWyRdQCJ9OyBkbworICAgICAgICAgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyAnJGFjX2FyZyciCisgICAgICBkb25lCisgICBmaQorXSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfZW5hYmxlX2J1aWxkZGlyLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9lbmFibGVfYnVpbGRkaXIubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZiODczMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfZW5hYmxlX2J1aWxkZGlyLm00CkBAIC0wLDAgKzEsMzAwIEBACisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9lbmFibGVfYnVpbGRkaXIuaHRtbAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgU1lOT1BTSVMKKyMKKyMgICBBWF9FTkFCTEVfQlVJTERESVIgWyhkaXJzdHJpbmctb3ItY29tbWFuZCBbLE1ha2VmaWxlLm1rIFssLWFsbF1dKV0KKyMKKyMgREVTQ1JJUFRJT04KKyMKKyMgICBJZiB0aGUgY3VycmVudCBjb25maWd1cmUgd2FzIHJ1biB3aXRoaW4gdGhlIHNyY2RpciB0aGVuIHdlIG1vdmUgYWxsCisjICAgY29uZmlndXJlLWZpbGVzIGludG8gYSBzdWJkaXIgYW5kIGxldCB0aGUgY29uZmlndXJlIHN0ZXBzIGNvbnRpbnVlCisjICAgdGhlcmUuIFdlIHByb3ZpZGUgYW4gb3B0aW9uIC0tZGlzYWJsZS1idWlsZGRpciB0byBzdXBwcmVzcyB0aGUgbW92ZSBpbnRvCisjICAgYSBzZXBhcmF0ZSBidWlsZGRpci4KKyMKKyMgICBEZWZhdWx0czoKKyMKKyMgICAgICQxID0gJGhvc3QgKG92ZXJyaWRkZW4gd2l0aCAkSE9TVCkKKyMgICAgICQyID0gTWFrZWZpbGUubWsKKyMgICAgICQzID0gLWFsbAorIworIyAgIFRoaXMgbWFjcm8gbXVzdCBiZSBjYWxsZWQgYmVmb3JlIEFNX0lOSVRfQVVUT01BS0UuIEl0IGNyZWF0ZXMgYSBkZWZhdWx0CisjICAgdG9wbGV2ZWwgc3JjZGlyIE1ha2VmaWxlIGZyb20gdGhlIGluZm9ybWF0aW9uIGZvdW5kIGluIHRoZSBjcmVhdGVkCisjICAgdG9wbGV2ZWwgYnVpbGRkaXIgTWFrZWZpbGUuIEl0IGp1c3QgY29waWVzIHRoZSB2YXJpYWJsZXMgYW5kCisjICAgcnVsZS10YXJnZXRzLCBlYWNoIGV4dGVuZGVkIHdpdGggYSBkZWZhdWx0IHJ1bGUtZXhlY3V0aW9uIHRoYXQgcmVjdXJzZXMKKyMgICBpbnRvIHRoZSBidWlsZCBkaXJlY3Rvcnkgb2YgdGhlIGN1cnJlbnQgIkhPU1QiLiBZb3UgY2FuIG92ZXJyaWRlIHRoZQorIyAgIGF1dG8tZGVjdGlvbiB0aHJvdWdoIGBjb25maWcuZ3Vlc3NgIGFuZCBidWlsZC10aW1lIG9mIGNvdXJzZSwgYXMgaW4KKyMKKyMgICAgIG1ha2UgSE9TVD1pMzg2LW1pbmd3LWNyb3NzCisjCisjICAgd2hpY2ggY2FuIG9mIGNvdXJzZSBzZXQgYXQgY29uZmlndXJlIHRpbWUgYXMgd2VsbCB1c2luZworIworIyAgICAgY29uZmlndXJlIC0taG9zdD1pMzg2LW1pbmd3LWNyb3NzCisjCisjICAgQWZ0ZXIgdGhlIGRlZmF1bHQgaGFzIGJlZW4gY3JlYXRlZCwgYWRkaXRpb25hbCBydWxlcyBjYW4gYmUgYXBwZW5kZWQKKyMgICB0aGF0IHdpbGwgbm90IGp1c3QgcmVjdXJzZSBpbnRvIHRoZSBzdWJkaXJlY3RvcmllcyBhbmQgb25seSBldmVyIGV4aXN0CisjICAgaW4gdGhlIHNyY2RpciB0b3BsZXZlbCBtYWtlZmlsZSAtIHRoZXNlIHBhcnRzIGFyZSByZWFkIGZyb20gdGhlICQyID0KKyMgICBNYWtlZmlsZS5tayBmaWxlCisjCisjICAgVGhlIGF1dG9tYXRpYyBydWxlcyBhcmUgdXN1YWxseSBzY2FubmluZyB0aGUgdG9wbGV2ZWwgTWFrZWZpbGUgZm9yIGxpbmVzCisjICAgbGlrZSAnIyMjIyAkaG9zdCB8JGJ1aWxkZGlyJyB0byByZWNvZ25pemUgdGhlIHBsYWNlIHdoZXJlIHRvIHJlY3Vyc2UKKyMgICBpbnRvLiBVc3VhbGx5LCB0aGUgbGFzdCBvbmUgaXMgdGhlIG9ubHkgb25lIHVzZWQuIEhvd2V2ZXIsIGFsbW9zdCBhbGwKKyMgICB0YXJnZXRzIGhhdmUgYW4gYWRkaXRpb25hbCAiKi1hbGwiIHJ1bGUgd2hpY2ggbWFrZXMgdGhlIHNjcmlwdCB0bworIyAgIHJlY3Vyc2UgaW50byBfYWxsXyB2YXJpYW50cyBvZiB0aGUgY3VycmVudCBIT1NUICghISkgc2V0dGluZy4gVGhlICItYWxsIgorIyAgIHN1ZmZpeCBjYW4gYmUgb3ZlcnJpZGVuIGZvciB0aGUgbWFjcm8gYXMgd2VsbC4KKyMKKyMgICBhIHNwZWNpYWwgcnVsZSBpcyBvbmx5IGdpdmVuIGZvciB0aGluZ3MgbGlrZSAiZGlzdCIgdGhhdCB3aWxsIGNvcHkgdGhlCisjICAgdGFyYmFsbCBmcm9tIHRoZSBidWlsZGRpciB0byB0aGUgc291cmNlZGlyIChvciAkKFBVQikpIGZvciByZWFzb24gb2YKKyMgICBjb252ZW5pZW5jZS4KKyMKKyMgTElDRU5TRQorIworIyAgIENvcHlyaWdodCAoYykgMjAwOSBHdWlkbyBVLiBEcmFoZWltIDxndWlkb2RAZ214LmRlPgorIyAgIENvcHlyaWdodCAoYykgMjAwOSBBbGFuIEplbmtpbnMgPGFsYW4tamVua2luc0B0dWZmbWFpbC5jby51az4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyMgICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsCisjICAgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworIyAgIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjICAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHJlc3BlY3RpdmUgQXV0b2NvbmYgTWFjcm8ncyBjb3B5cmlnaHQgb3duZXIKKyMgICBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgdGhlIGNvbmZpZ3VyZQorIyAgIHNjcmlwdHMgdGhhdCBhcmUgdGhlIG91dHB1dCBvZiBBdXRvY29uZiB3aGVuIHByb2Nlc3NpbmcgdGhlIE1hY3JvLiBZb3UKKyMgICBuZWVkIG5vdCBmb2xsb3cgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB3aGVuIHVzaW5nCisjICAgb3IgZGlzdHJpYnV0aW5nIHN1Y2ggc2NyaXB0cywgZXZlbiB0aG91Z2ggcG9ydGlvbnMgb2YgdGhlIHRleHQgb2YgdGhlCisjICAgTWFjcm8gYXBwZWFyIGluIHRoZW0uIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybgorIyAgIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorIworIyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBhcHBsaWVzIHRvIHZlcnNpb25zIG9mIHRoZSBBdXRvY29uZgorIyAgIE1hY3JvIHJlbGVhc2VkIGJ5IHRoZSBBdXRvY29uZiBBcmNoaXZlLiBXaGVuIHlvdSBtYWtlIGFuZCBkaXN0cmlidXRlIGEKKyMgICBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBBdXRvY29uZiBNYWNybywgeW91IG1heSBleHRlbmQgdGhpcyBzcGVjaWFsCisjICAgZXhjZXB0aW9uIHRvIHRoZSBHUEwgdG8gYXBwbHkgdG8geW91ciBtb2RpZmllZCB2ZXJzaW9uIGFzIHdlbGwuCisKKyNzZXJpYWwgMjMKKworQUNfREVGVU4oW0FYX0VOQUJMRV9CVUlMRERJUl0sWworQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKVtdZG5sCitBQ19SRVFVSVJFKFtBWF9DT05GSUdVUkVfQVJHU10pW11kbmwKK0FDX1JFUVVJUkUoW0FNX0FVWF9ESVJfRVhQQU5EXSlbXWRubAorQUNfQkVGT1JFKFskMF0sW0FNX0lOSVRfQVVUT01BS0VdKWRubAorQVNfVkFSX1BVU0hERUYoW1NVQl0sW2F4X2VuYWJsZV9idWlsZGRpcl0pZG5sCitBU19WQVJfUFVTSERFRihbQVVYXSxbYXhfZW5hYmxlX2J1aWxkZGlyX2F1eGRpcl0pZG5sCitBU19WQVJfUFVTSERFRihbU0VEXSxbYXhfZW5hYmxlX2J1aWxkZGlyX3NlZF0pZG5sCitTVUI9Ii4iCitBQ19BUkdfRU5BQkxFKFtidWlsZGRpcl0sIEFTX0hFTFBfU1RSSU5HKAorICBbLS1kaXNhYmxlLWJ1aWxkZGlyXSxbZGlzYWJsZSBhdXRvbWF0aWMgYnVpbGQgaW4gc3ViZGlyIG9mIHNvdXJjZXNdKQorICAsW1NVQj0iJGVuYWJsZXZhbCJdLCBbU1VCPSJhdXRvIl0pCitpZiB0ZXN0ICIuJGFjX3NyY2Rpcl9kZWZhdWx0ZWQiICE9ICIubm8iIDsgdGhlbgoraWYgdGVzdCAiLiRzcmNkaXIiID0gIi4uIiA7IHRoZW4KKyAgaWYgdGVzdCAtZiBjb25maWcuc3RhdHVzIDsgdGhlbgorICAgIEFDX01TR19OT1RJQ0UodG9wbGV2ZWwgc3JjZGlyIGFscmVhZHkgY29uZmlndXJlZC4uLiBza2lwcGluZyBzdWJkaXIgYnVpbGQpCisgIGVsc2UKKyAgICB0ZXN0ICIuJFNVQiIgPSAiLiIgICYmIFNVQj0iLiIKKyAgICB0ZXN0ICIuJFNVQiIgPSAiLm5vIiAgJiYgU1VCPSIuIgorICAgIHRlc3QgIi4kVEFSR0VUIiA9ICIuIiAmJiBUQVJHRVQ9IiR0YXJnZXQiCisgICAgdGVzdCAiLiRTVUIiID0gIi5hdXRvIiAmJiBTVUI9Im00X2lmdmFsKFskMV0sIFskMV0sWyRUQVJHRVRdKSIKKyAgICBpZiB0ZXN0ICIuJFNVQiIgIT0gIi4uIiA7IHRoZW4gICAgIyB3ZSBrbm93IHdoZXJlIHRvIGdvIGFuZAorICAgICAgQVNfTUtESVJfUChbJFNVQl0pCisgICAgICBlY2hvIF9fLiRTVUIuX18gPiAkU1VCL2NvbmZ0ZXN0LnRtcAorICAgICAgY2QgJFNVQgorICAgICAgaWYgZ3JlcCBfXy4kU1VCLl9fIGNvbmZ0ZXN0LnRtcCA+L2Rldi9udWxsIDI+L2Rldi9udWxsIDsgdGhlbgorICAgICAgICBybSBjb25mdGVzdC50bXAKKyAgICAgICAgQUNfTVNHX1JFU1VMVChbY29udGludWUgY29uZmlndXJlIGluIGRlZmF1bHQgYnVpbGRkaXIgIi4vJFNVQiJdKQorICAgICAgZWxzZQorICAgICAgICBBQ19NU0dfRVJST1IoW2NvdWxkIG5vdCBjaGFuZ2UgdG8gZGVmYXVsdCBidWlsZGRpciAiLi8kU1VCIl0pCisgICAgICBmaQorICAgICAgc3JjZGlyPWBlY2hvICIkU1VCIiB8CisgICAgICAgICAgICAgIHNlZCAtZSAncyxeXC4vLCw7cyxbW14vXV0kLCYvLDtzLFtbXi9dXSovLC4uLyxnO3MsW1svXV0kLCw7J2AKKyAgICAgICMgZ29pbmcgdG8gcmVzdGFydCBmcm9tIHN1YmRpcmVjdG9yeSBsb2NhdGlvbgorICAgICAgdGVzdCAtZiAkc3JjZGlyL2NvbmZpZy5sb2cgICAmJiBtdiAkc3JjZGlyL2NvbmZpZy5sb2cgICAuCisgICAgICB0ZXN0IC1mICRzcmNkaXIvY29uZmRlZnMuaCAgICYmIG12ICRzcmNkaXIvY29uZmRlZnMuaCAgIC4KKyAgICAgIHRlc3QgLWYgJHNyY2Rpci9jb25mdGVzdC5sb2cgJiYgbXYgJHNyY2Rpci9jb25mdGVzdC5sb2cgLgorICAgICAgdGVzdCAtZiAkc3JjZGlyLyRjYWNoZV9maWxlICAmJiBtdiAkc3JjZGlyLyRjYWNoZV9maWxlICAuCisgICAgICBBQ19NU0dfUkVTVUxUKC4uLi5leGVjICRTSEVMTCAkc3JjZGlyL1skXTAgIi0tc3JjZGlyPSRzcmNkaXIiICItLWVuYWJsZS1idWlsZGRpcj0kU1VCIiAkezErIlskXUAifSkKKyAgICAgIGNhc2UgIlskXTAiIGluICMgcmVzdGFydAorICAgICAgIFsvXFxdKikgZXZhbCAkU0hFTEwgIidbJF0wJyIgIictLXNyY2Rpcj0kc3JjZGlyJyIgIictLWVuYWJsZS1idWlsZGRpcj0kU1VCJyIgJGFjX2NvbmZpZ3VyZV9hcmdzIDs7CisgICAgICAgKikgZXZhbCAkU0hFTEwgIickc3JjZGlyL1skXTAnIiAiJy0tc3JjZGlyPSRzcmNkaXInIiAiJy0tZW5hYmxlLWJ1aWxkZGlyPSRTVUInIiAkYWNfY29uZmlndXJlX2FyZ3MgOzsKKyAgICAgIGVzYWMgOyBleGl0ICQ/CisgICAgZmkKKyAgZmkKK2ZpIGZpCit0ZXN0ICIuJFNVQiIgPSAiLmF1dG8iICYmIFNVQj0iLiIKK2RubCBhY19wYXRoX3Byb2cgdXNlcyAic2V0IGR1bW15IiB0byBvdmVycmlkZSAkQCB3aGljaCB3b3VsZCBkZWZlYXQgdGhlICJleGVjIgorQUNfUEFUSF9QUk9HKFNFRCxnc2VkIHNlZCwgc2VkKQorQVVYPSIkYW1fYXV4X2RpciIKK0FTX1ZBUl9QT1BERUYoW1NFRF0pZG5sCitBU19WQVJfUE9QREVGKFtBVVhdKWRubAorQVNfVkFSX1BPUERFRihbU1VCXSlkbmwKK0FDX0NPTkZJR19DT01NQU5EUyhbYnVpbGRpcl0sW2RubCAuLi4uLi4uLi4uLi4uLiBjb25maWcuc3RhdHVzIC4uLi4uLi4uLi4uLi4uCitBU19WQVJfUFVTSERFRihbU1VCXSxbYXhfZW5hYmxlX2J1aWxkZGlyXSlkbmwKK0FTX1ZBUl9QVVNIREVGKFtUT1BdLFt0b3Bfc3JjZGlyXSlkbmwKK0FTX1ZBUl9QVVNIREVGKFtTUkNdLFthY190b3Bfc3JjZGlyXSlkbmwKK0FTX1ZBUl9QVVNIREVGKFtBVVhdLFtheF9lbmFibGVfYnVpbGRkaXJfYXV4ZGlyXSlkbmwKK0FTX1ZBUl9QVVNIREVGKFtTRURdLFtheF9lbmFibGVfYnVpbGRkaXJfc2VkXSlkbmwKK3B1c2hkZWYoW0VORF0sW01ha2VmaWxlLm1rXSlkbmwKK3B1c2hkZWYoW19BTExdLFtpZmVsc2UoWyQzXSwsWy1hbGxdLFskM10pXSlkbmwKKyAgU1JDPSIkYXhfZW5hYmxlX2J1aWxkZGlyX3NyY2RpciIKKyAgaWYgdGVzdCAiLiRTVUIiID0gIi4uIiA7IHRoZW4KKyAgICBpZiB0ZXN0IC1mICIkVE9QL01ha2VmaWxlIiA7IHRoZW4KKyAgICAgIEFDX01TR19OT1RJQ0UoW3NraXBwaW5nIFRPUC9NYWtlZmlsZSAtIGxlZnQgdW50b3VjaGVkXSkKKyAgICBlbHNlCisgICAgICBBQ19NU0dfTk9USUNFKFtza2lwcGluZyBUT1AvTWFrZWZpbGUgLSBub3QgY3JlYXRlZF0pCisgICAgZmkKKyAgZWxzZQorICAgIGlmIHRlc3QgLWYgIiRTUkMvTWFrZWZpbGUiIDsgdGhlbgorICAgICAgYT1gZ3JlcCAiXlZFUlNJT04gIiAiJFNSQy9NYWtlZmlsZSJgIDsgYj1gZ3JlcCAiXlZFUlNJT04gIiBNYWtlZmlsZWAKKyAgICAgIHRlc3QgIiRhIiAhPSAiJGIiICYmIHJtICIkU1JDL01ha2VmaWxlIgorICAgIGZpCisgICAgaWYgdGVzdCAtZiAiJFNSQy9NYWtlZmlsZSIgOyB0aGVuCisJZWNobyAiJFNSQy9NYWtlZmlsZSA6ICRTUkMvTWFrZWZpbGUuaW4iID4gJHRtcC9jb25mdGVtcC5taworCWVjaG8gIglbXUAgZWNobyAnUkVNT1ZFRCwsLCcgPlwkW11AIiA+PiAkdG1wL2NvbmZ0ZW1wLm1rCisgICAgICBldmFsICIke01BS0UtbWFrZX0gLWYgJHRtcC9jb25mdGVtcC5tayAyPi9kZXYvbnVsbCA+L2Rldi9udWxsIgorICAgICAgaWYgZ3JlcCAnXlJFTU9WRUQsLCwnICIkU1JDL01ha2VmaWxlIiA+L2Rldi9udWxsCisgICAgICB0aGVuIHJtICRTUkMvTWFrZWZpbGUgOyBmaQorICAgICAgY3AgJHRtcC9jb25mdGVtcC5tayAkU1JDL21ha2VmaWxlcy5ta34gICAgICAjIyBERUJVR0dJTkcKKyAgICBmaQorICAgIGlmIHRlc3QgISAtZiAiJFNSQy9NYWtlZmlsZSIgOyB0aGVuCisgICAgICBBQ19NU0dfTk9USUNFKFtjcmVhdGUgVE9QL01ha2VmaWxlIGd1ZXNzZWQgZnJvbSBsb2NhbCBNYWtlZmlsZV0pCisgICAgICB4PSdgJyA7IGNhdCA+JHRtcC9jb25mdGVtcC5zZWQgPDxfRU9GCisvXlwkL24KK3gKKy9eXCQvYlMKK3gKKy9cXFxcXCQve0g7ZDt9Cit7SDtzLy4qLy87eDt9CitiTQorOlMKK3gKKy9cXFxcXCQve2g7ZDt9Cit7aDtzLy4qLy87eDt9Cis6TQorcy9cXChcXG5cXCkJL1xcMSAvZworL14JL2QKKy9eW1sJIF1dKltbXFwjXV0vZAorL15WUEFUSCAqPS9kCitzL15zcmNkaXIgKj0uKi9zcmNkaXIgPSAuLworcy9edG9wX3NyY2RpciAqPS4qL3RvcF9zcmNkaXIgPSAuLworL1tbOj1dXS8hZAorL15cXC4vZAorZG5sIE5vdyBoYW5kbGUgcnVsZXMgKGkuZS4gbGluZXMgY29udGFpbmluZyAiOiIgYnV0IG5vdCAiID0gIikuCisvID0gL2IKKy8gLj0gL2IKKy86LyFiCitzLzouKi86Lworcy8gLyAgL2cKK3MvIFxcKFtbYS16XV1bW2Etei1dXSpbW2EtekEtWjAtOV1dXFwpXFwoW1sgOl1dXFwpLyBcXDEgXFwxW11fQUxMXFwyL2cKK3MvXlxcKFtbYS16XV1bW2Etei1dXSpbW2EtekEtWjAtOV1dXFwpXFwoW1sgOl1dXFwpL1xcMSBcXDFbXV9BTExcXDIvCitzLyAgLyAvZworL15hbGwgYWxsW11fQUxMW1sgOl1dL2lcXAorYWxsLWNvbmZpZ3VyZWQgOiBhbGxbXV9BTEwKK2RubCBkaXN0LWFsbCBleGlzdHMuLi4gYW5kIHdvdWxkIG1ha2UgZm9yIGRpc3QtYWxsLWFsbAorcy8gW1thLXpBLVowLTktXV0qW11fQUxMIFtbYS16QS1aMC05LV1dKltdX0FMTFtdX0FMTC8vZworL1tdX0FMTFtdX0FMTC9kCithXFwKKwlAIEhPU1Q9IlwkKEhPU1QpXCIgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEhPU1QiID0gIi4iICYmIEhPU1Q9JHggc2ggJEFVWC9jb25maWcuZ3Vlc3MgJHggXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyBcJFwkSE9TVCAiIE1ha2VmaWxlIHwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IHVzZT0keCBiYXNlbmFtZSAiXCRcQCIgX0FMTCAkeDsgbj0keCBlY2hvIFwkXCRCVUlMRCB8IHdjIC13ICR4IFxcXFxcXAorCTsgZWNobyAiTUFLRSBcJFwkSE9TVCA6IFwkXCRuICogXCRcQCI7IGlmIHRlc3QgIlwkXCRuIiAtZXEgIjAiIDsgdGhlbiA6IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMuKnwiIE1ha2VmaWxlIHx0YWlsIC0xfCBzZWQgLWUgJ3MvLip8Ly8nICR4IDsgZmkgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEJVSUxEIiA9ICIuIiAmJiBCVUlMRD0iLiIgXFxcXFxcCisJOyB0ZXN0ICJcJFwkdXNlIiA9ICJcJFxAIiAmJiBCVUlMRD0keCBlY2hvICJcJFwkQlVJTEQiIHwgdGFpbCAtMSAkeCBcXFxcXFwKKwk7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyAoY2QgIlwkXCRpIiAmJiB0ZXN0ICEgLWYgY29uZmlndXJlICYmIFwkKE1BS0UpIFwkXCR1c2UpIHx8IGV4aXQ7IGRvbmUKK2RubCBzcGVjaWFsIHJ1bGUgYWRkLW9uOiAiZGlzdCIgY29waWVzIHRoZSB0YXJiYWxsIHRvICQoUFVCKS4gKHNvdXJjZSB0cmVlKQorL2Rpc3RbXV9BTEwgKjovYVxcCisJQCBIT1NUPSJcJChIT1NUKVwiIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRIT1NUIiA9ICIuIiAmJiBIT1NUPSR4IHNoICRBVVgvY29uZmlnLmd1ZXNzICR4IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgXCRcJEhPU1QgIiBNYWtlZmlsZSB8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyBmb3VuZD0keCBlY2hvIFwkXCRCVUlMRCB8IHdjIC13ICR4IFxcXFxcXAorCTsgZWNobyAiTUFLRSBcJFwkSE9TVCA6IFwkXCRmb3VuZCBcJChQQUNLQUdFKS1cJChWRVJTSU9OKS50YXIuKiIgXFxcXFxcCisJOyBpZiB0ZXN0ICJcJFwkZm91bmQiIC1lcSAiMCIgOyB0aGVuIDogXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyAuKnwiIE1ha2VmaWxlIHx0YWlsIC0xfCBzZWQgLWUgJ3MvLip8Ly8nICR4IFxcXFxcXAorCTsgZmkgOyBmb3IgaSBpbiBcJFwkQlVJTEQgOyBkbyB0ZXN0ICIuXCRcJGkiID0gIi4iICYmIGNvbnRpbnVlIFxcXFxcXAorCTsgZm9yIGYgaW4gXCRcJGkvXCQoUEFDS0FHRSktXCQoVkVSU0lPTikudGFyLiogXFxcXFxcCisJOyBkbyB0ZXN0IC1mICJcJFwkZiIgJiYgbXYgIlwkXCRmIiBcJChQVUIpLiA7IGRvbmUgOyBicmVhayA7IGRvbmUKK2RubCBzcGVjaWFsIHJ1bGUgYWRkLW9uOiAiZGlzdC1mb28iIGNvcGllcyBhbGwgdGhlIGFyY2hpdmVzIHRvICQoUFVCKS4gKHNvdXJjZSB0cmVlKQorL2Rpc3QtW1thLXpBLVowLTldXSpbXV9BTEwgKjovYVxcCisJQCBIT1NUPSJcJChIT1NUKVwiIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRIT1NUIiA9ICIuIiAmJiBIT1NUPSR4IHNoIC4vY29uZmlnLmd1ZXNzICR4IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgXCRcJEhPU1QgIiBNYWtlZmlsZSB8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyBmb3VuZD0keCBlY2hvIFwkXCRCVUlMRCB8IHdjIC13ICR4IFxcXFxcXAorCTsgZWNobyAiTUFLRSBcJFwkSE9TVCA6IFwkXCRmb3VuZCBcJChQQUNLQUdFKS1cJChWRVJTSU9OKS4qIiBcXFxcXFwKKwk7IGlmIHRlc3QgIlwkXCRmb3VuZCIgLWVxICIwIiA7IHRoZW4gOiBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjIC4qfCIgTWFrZWZpbGUgfHRhaWwgLTF8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyBmaSA7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyBmb3IgZiBpbiBcJFwkaS9cJChQQUNLQUdFKS1cJChWRVJTSU9OKS4qIFxcXFxcXAorCTsgZG8gdGVzdCAtZiAiXCRcJGYiICYmIG12ICJcJFwkZiIgXCQoUFVCKS4gOyBkb25lIDsgYnJlYWsgOyBkb25lCitkbmwgc3BlY2lhbCBydWxlIGFkZC1vbjogImRpc3RjbGVhbiIgcmVtb3ZlcyBhbGwgbG9jYWwgYnVpbGRkaXJzIGNvbXBsZXRlbHkKKy9kaXN0Y2xlYW5bXV9BTEwgKjovYVxcCisJQCBIT1NUPSJcJChIT1NUKVwiIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRIT1NUIiA9ICIuIiAmJiBIT1NUPSR4IHNoICRBVVgvY29uZmlnLmd1ZXNzICR4IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgLip8IiBNYWtlZmlsZSB8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyB1c2U9JHggYmFzZW5hbWUgIlwkXEAiIF9BTEwgJHg7IG49JHggZWNobyBcJFwkQlVJTEQgfCB3YyAtdyAkeCBcXFxcXFwKKwk7IGVjaG8gIk1BS0UgXCRcJEhPU1QgOiBcJFwkbiAqIFwkXEAgKGFsbCBsb2NhbCBidWlsZHMpIiBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkQlVJTEQiID0gIi4iICYmIEJVSUxEPSIuIiBcXFxcXFwKKwk7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyBlY2hvICIjIHJtIC1yIFwkXCRpIjsgZG9uZSA7IGVjaG8gIiMgKHNsZWVwIDMpIiA7IHNsZWVwIDMgXFxcXFxcCisJOyBmb3IgaSBpbiBcJFwkQlVJTEQgOyBkbyB0ZXN0ICIuXCRcJGkiID0gIi4iICYmIGNvbnRpbnVlIFxcXFxcXAorCTsgZWNobyAiXCRcJGkiIHwgZ3JlcCAiXi8iID4gL2Rldi9udWxsICYmIGNvbnRpbnVlIFxcXFxcXAorCTsgZWNobyAiXCRcJGkiIHwgZ3JlcCAiXi4uLyIgPiAvZGV2L251bGwgJiYgY29udGludWUgXFxcXFxcCisJOyBlY2hvICJybSAtciBcJFwkaSI7IChybSAtciAiXCRcJGkiKSA7IGRvbmUgOyBybSBNYWtlZmlsZQorX0VPRgorICAgICAgY3AgIiR0bXAvY29uZnRlbXAuc2VkIiAiJFNSQy9tYWtlZmlsZS5zZWR+IiAgICAgICAgICAgICMjIERFQlVHR0lORworICAgICAgJFNFRCAtZiAkdG1wL2NvbmZ0ZW1wLnNlZCBNYWtlZmlsZSA+JFNSQy9NYWtlZmlsZQorICAgICAgaWYgdGVzdCAtZiAiJFNSQy9tNF9pZnZhbChbJDJdLFskMl0sW0VORF0pIiA7IHRoZW4KKyAgICAgICAgQUNfTVNHX05PVElDRShbZXh0ZW5kIFRPUC9NYWtlZmlsZSB3aXRoIFRPUC9tNF9pZnZhbChbJDJdLFskMl0sW0VORF0pXSkKKyAgICAgICAgY2F0ICRTUkMvRU5EID4+JFNSQy9NYWtlZmlsZQorICAgICAgZmkgOyB4eHh4PSIjIyMjIgorICAgICAgZWNobyAiJHh4eHggQ09ORklHVVJBVElPTlMgRk9SIFRPUExFVkVMIE1BS0VGSUxFOiAiID4+JFNSQy9NYWtlZmlsZQorICAgICAgIyBzYW5pdHkgY2hlY2sKKyAgICAgIGlmIGdyZXAgJ147IGVjaG8gIk1BS0UgJyAkU1JDL01ha2VmaWxlID4vZGV2L251bGwgOyB0aGVuCisgICAgICAgIEFDX01TR19OT1RJQ0UoW2J1Z2d5IHNlZCBmb3VuZCAtIGl0IGRlbGV0ZXMgdGFiIGluICJhIiB0ZXh0IHBhcnRzXSkKKyAgICAgICAgJFNFRCAtZSAnL15AIEhPU1Q9L3MvXi8JLycgLWUgJy9eOyAvcy9eLwkvJyAkU1JDL01ha2VmaWxlIFwKKyAgICAgICAgICA+JFNSQy9NYWtlZmlsZX4KKyAgICAgICAgKHRlc3QgLXMgJFNSQy9NYWtlZmlsZX4gJiYgbXYgJFNSQy9NYWtlZmlsZX4gJFNSQy9NYWtlZmlsZSkgMj4vZGV2L251bGwKKyAgICAgIGZpCisgICAgZWxzZQorICAgICAgeHh4eD0iXFwjXFwjXFwjXFwjIgorICAgICAgIyBlY2hvICIvXiR4eHh4ICokYXhfZW5hYmxlX2J1aWxkZGlyX2hvc3QgL2QiID4kdG1wL2NvbmZ0ZW1wLnNlZAorICAgICAgZWNobyAicyFeJHh4eHggW1tefF1dKiB8ICokU1VCICpcJCEkeHh4eCAuLi4uLi4gJFNVQiEiID4kdG1wL2NvbmZ0ZW1wLnNlZAorICAgICAgJFNFRCAtZiAiJHRtcC9jb25mdGVtcC5zZWQiICIkU1JDL01ha2VmaWxlIiA+JHRtcC9ta2ZpbGUudG1wCisgICAgICAgIGNwICIkdG1wL2NvbmZ0ZW1wLnNlZCIgIiRTUkMvbWFrZWZpbGVzLnNlZH4iICAgICAgICAgIyMgREVCVUdHSU5HCisgICAgICAgIGNwICIkdG1wL21rZmlsZS50bXAiICAgIiRTUkMvbWFrZWZpbGVzLm91dH4iICAgICAgICAgIyMgREVCVUdHSU5HCisgICAgICBpZiBjbXAgLXMgIiRTUkMvTWFrZWZpbGUiICIkdG1wL21rZmlsZS50bXAiIDI+L2Rldi9udWxsIDsgdGhlbgorICAgICAgICBBQ19NU0dfTk9USUNFKFtrZWVwaW5nIFRPUC9NYWtlZmlsZSBmcm9tIGVhcmxpZXIgY29uZmlndXJlXSkKKyAgICAgICAgcm0gIiR0bXAvbWtmaWxlLnRtcCIKKyAgICAgIGVsc2UKKyAgICAgICAgQUNfTVNHX05PVElDRShbcmV1c2luZyBUT1AvTWFrZWZpbGUgZnJvbSBlYXJsaWVyIGNvbmZpZ3VyZV0pCisgICAgICAgIG12ICIkdG1wL21rZmlsZS50bXAiICIkU1JDL01ha2VmaWxlIgorICAgICAgZmkKKyAgICBmaQorICAgIEFDX01TR19OT1RJQ0UoW2J1aWxkIGluICRTVUIgKEhPU1Q9JGF4X2VuYWJsZV9idWlsZGRpcl9ob3N0KV0pCisgICAgeHh4eD0iIyMjIyIKKyAgICBlY2hvICIkeHh4eCIgIiRheF9lbmFibGVfYnVpbGRkaXJfaG9zdCIgInwkU1VCIiA+PiRTUkMvTWFrZWZpbGUKKyAgZmkKK3BvcGRlZihbRU5EXSlkbmwKK0FTX1ZBUl9QT1BERUYoW1NFRF0pZG5sCitBU19WQVJfUE9QREVGKFtBVVhdKWRubAorQVNfVkFSX1BPUERFRihbU1JDXSlkbmwKK0FTX1ZBUl9QT1BERUYoW1RPUF0pZG5sCitBU19WQVJfUE9QREVGKFtTVUJdKWRubAorXSxbZG5sCitheF9lbmFibGVfYnVpbGRkaXJfc3JjZGlyPSIkc3JjZGlyIiAgICAgICAgICAgICAgICAgICAgIyAkc3JjZGlyCitheF9lbmFibGVfYnVpbGRkaXJfaG9zdD0iJEhPU1QiICAgICAgICAgICAgICAgICAgICAgICAgIyAkSE9TVCAvICRob3N0CitheF9lbmFibGVfYnVpbGRkaXJfdmVyc2lvbj0iJFZFUlNJT04iICAgICAgICAgICAgICAgICAgIyAkVkVSU0lPTgorYXhfZW5hYmxlX2J1aWxkZGlyX3BhY2thZ2U9IiRQQUNLQUdFIiAgICAgICAgICAgICAgICAgICMgJFBBQ0tBR0UKK2F4X2VuYWJsZV9idWlsZGRpcl9hdXhkaXI9IiRheF9lbmFibGVfYnVpbGRkaXJfYXV4ZGlyIiAjICRBVVgKK2F4X2VuYWJsZV9idWlsZGRpcl9zZWQ9IiRheF9lbmFibGVfYnVpbGRkaXJfc2VkIiAgICAgICAjICRTRUQKK2F4X2VuYWJsZV9idWlsZGRpcj0iJGF4X2VuYWJsZV9idWlsZGRpciIgICAgICAgICAgICAgICAjICRTVUIKK10pZG5sCitdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9nY2NfYXJjaGZsYWcubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2djY19hcmNoZmxhZy5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjExYmFiCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9nY2NfYXJjaGZsYWcubTQKQEAgLTAsMCArMSwyMTUgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfZ2NjX2FyY2hmbGFnLmh0bWwKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIFNZTk9QU0lTCisjCisjICAgQVhfR0NDX0FSQ0hGTEFHKFtQT1JUQUJMRT9dLCBbQUNUSU9OLVNVQ0NFU1NdLCBbQUNUSU9OLUZBSUxVUkVdKQorIworIyBERVNDUklQVElPTgorIworIyAgIFRoaXMgbWFjcm8gdHJpZXMgdG8gZ3Vlc3MgdGhlICJuYXRpdmUiIGFyY2ggY29ycmVzcG9uZGluZyB0byB0aGUgdGFyZ2V0CisjICAgYXJjaGl0ZWN0dXJlIGZvciB1c2Ugd2l0aCBnY2MncyAtbWFyY2g9YXJjaCBvciAtbXR1bmU9YXJjaCBmbGFncy4gSWYKKyMgICBmb3VuZCwgdGhlIGNhY2hlIHZhcmlhYmxlICRheF9jdl9nY2NfYXJjaGZsYWcgaXMgc2V0IHRvIHRoaXMgZmxhZyBhbmQKKyMgICBBQ1RJT04tU1VDQ0VTUyBpcyBleGVjdXRlZDsgb3RoZXJ3aXNlICRheF9jdl9nY2NfYXJjaGZsYWcgaXMgc2V0IHRvCisjICAgInVua25vd24iIGFuZCBBQ1RJT04tRkFJTFVSRSBpcyBleGVjdXRlZC4gVGhlIGRlZmF1bHQgQUNUSU9OLVNVQ0NFU1MgaXMKKyMgICB0byBhZGQgJGF4X2N2X2djY19hcmNoZmxhZyB0byB0aGUgZW5kIG9mICRDRkxBR1MuCisjCisjICAgUE9SVEFCTEU/IHNob3VsZCBiZSBlaXRoZXIgW3llc10gKGRlZmF1bHQpIG9yIFtub10uIEluIHRoZSBmb3JtZXIgY2FzZSwKKyMgICB0aGUgZmxhZyBpcyBzZXQgdG8gLW10dW5lIChvciBlcXVpdmFsZW50KSBzbyB0aGF0IHRoZSBhcmNoaXRlY3R1cmUgaXMKKyMgICBvbmx5IHVzZWQgZm9yIHR1bmluZywgYnV0IHRoZSBpbnN0cnVjdGlvbiBzZXQgdXNlZCBpcyBzdGlsbCBwb3J0YWJsZS4gSW4KKyMgICB0aGUgbGF0dGVyIGNhc2UsIHRoZSBmbGFnIGlzIHNldCB0byAtbWFyY2ggKG9yIGVxdWl2YWxlbnQpIHNvIHRoYXQKKyMgICBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgaW5zdHJ1Y3Rpb25zIGFyZSBlbmFibGVkLgorIworIyAgIFRoZSB1c2VyIGNhbiBzcGVjaWZ5IC0td2l0aC1nY2MtYXJjaD08YXJjaD4gaW4gb3JkZXIgdG8gb3ZlcnJpZGUgdGhlCisjICAgbWFjcm8ncyBjaG9pY2Ugb2YgYXJjaGl0ZWN0dXJlLCBvciAtLXdpdGhvdXQtZ2NjLWFyY2ggdG8gZGlzYWJsZSB0aGlzLgorIworIyAgIFdoZW4gY3Jvc3MtY29tcGlsaW5nLCBvciBpZiAkQ0MgaXMgbm90IGdjYywgdGhlbiBBQ1RJT04tRkFJTFVSRSBpcworIyAgIGNhbGxlZCB1bmxlc3MgdGhlIHVzZXIgc3BlY2lmaWVkIC0td2l0aC1nY2MtYXJjaCBtYW51YWxseS4KKyMKKyMgICBSZXF1aXJlcyBtYWNyb3M6IEFYX0NIRUNLX0NPTVBJTEVfRkxBRywgQVhfR0NDX1g4Nl9DUFVJRAorIworIyAgIChUaGUgbWFpbiBlbXBoYXNpcyBoZXJlIGlzIG9uIHJlY2VudCBDUFVzLCBvbiB0aGUgcHJpbmNpcGxlIHRoYXQgZG9pbmcKKyMgICBoaWdoLXBlcmZvcm1hbmNlIGNvbXB1dGluZyBvbiBvbGQgaGFyZHdhcmUgaXMgdW5jb21tb24uKQorIworIyBMSUNFTlNFCisjCisjICAgQ29weXJpZ2h0IChjKSAyMDA4IFN0ZXZlbiBHLiBKb2huc29uIDxzdGV2ZW5qQGFsdW0ubWl0LmVkdT4KKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggTWF0dGVvIEZyaWdvCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisjICAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbAorIyAgIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgICB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworIyAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSByZXNwZWN0aXZlIEF1dG9jb25mIE1hY3JvJ3MgY29weXJpZ2h0IG93bmVyCisjICAgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZSBjb25maWd1cmUKKyMgICBzY3JpcHRzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgQXV0b2NvbmYgd2hlbiBwcm9jZXNzaW5nIHRoZSBNYWNyby4gWW91CisjICAgbmVlZCBub3QgZm9sbG93IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugd2hlbiB1c2luZworIyAgIG9yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoIHBvcnRpb25zIG9mIHRoZSB0ZXh0IG9mIHRoZQorIyAgIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4KKyMgICBhbGwgb3RoZXIgdXNlIG9mIHRoZSBtYXRlcmlhbCB0aGF0IGNvbnN0aXR1dGVzIHRoZSBBdXRvY29uZiBNYWNyby4KKyMKKyMgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgYXBwbGllcyB0byB2ZXJzaW9ucyBvZiB0aGUgQXV0b2NvbmYKKyMgICBNYWNybyByZWxlYXNlZCBieSB0aGUgQXV0b2NvbmYgQXJjaGl2ZS4gV2hlbiB5b3UgbWFrZSBhbmQgZGlzdHJpYnV0ZSBhCisjICAgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQXV0b2NvbmYgTWFjcm8sIHlvdSBtYXkgZXh0ZW5kIHRoaXMgc3BlY2lhbAorIyAgIGV4Y2VwdGlvbiB0byB0aGUgR1BMIHRvIGFwcGx5IHRvIHlvdXIgbW9kaWZpZWQgdmVyc2lvbiBhcyB3ZWxsLgorCisjc2VyaWFsIDEwCisKK0FDX0RFRlVOKFtBWF9HQ0NfQVJDSEZMQUddLAorW0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKQorQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQorCitBQ19BUkdfV0lUSChnY2MtYXJjaCwgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtZ2NjLWFyY2g9PGFyY2g+XSwgW3VzZSBhcmNoaXRlY3R1cmUgPGFyY2g+IGZvciBnY2MgLW1hcmNoLy1tdHVuZSwgaW5zdGVhZCBvZiBndWVzc2luZ10pXSwKKwlheF9nY2NfYXJjaD0kd2l0aHZhbCwgYXhfZ2NjX2FyY2g9eWVzKQorCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBnY2MgYXJjaGl0ZWN0dXJlIGZsYWddKQorQUNfTVNHX1JFU1VMVChbXSkKK0FDX0NBQ0hFX1ZBTChheF9jdl9nY2NfYXJjaGZsYWcsCitbCitheF9jdl9nY2NfYXJjaGZsYWc9InVua25vd24iCisKK2lmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisKK2lmIHRlc3QgIngkYXhfZ2NjX2FyY2giID0geHllczsgdGhlbgorYXhfZ2NjX2FyY2g9IiIKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0gbm87IHRoZW4KK2Nhc2UgJGhvc3RfY3B1IGluCisgIGlbWzM0NTZdXTg2Knx4ODZfNjQqKSAjIHVzZSBjcHVpZCBjb2RlcywgaW4gcGFydCBmcm9tIHg4NmluZm8tMS43IGJ5IEQuIEpvbmVzCisgICAgIEFYX0dDQ19YODZfQ1BVSUQoMCkKKyAgICAgQVhfR0NDX1g4Nl9DUFVJRCgxKQorICAgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzAgaW4KKyAgICAgICAqOjc1NmU2NTQ3Oio6KikgIyBJbnRlbAorICAgICAgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMSBpbgorCSAgICAqNVtbNDhdXT86KjoqOiopIGF4X2djY19hcmNoPSJwZW50aXVtLW1teCBwZW50aXVtIiA7OworCSAgICAqNT8/Oio6KjoqKSBheF9nY2NfYXJjaD1wZW50aXVtIDs7CisJICAgICo2W1szNDU2XV0/Oio6KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bTIgcGVudGl1bXBybyIgOzsKKwkgICAgKjZhPzoqW1swMV1dOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW0yIHBlbnRpdW1wcm8iIDs7CisJICAgICo2YT86KltbMjM0XV06KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bTMgcGVudGl1bXBybyIgOzsKKwkgICAgKjZbWzlkXV0/Oio6KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bS1tIHBlbnRpdW0zIHBlbnRpdW1wcm8iIDs7CisJICAgICo2W1s3OGJdXT86KjoqOiopIGF4X2djY19hcmNoPSJwZW50aXVtMyBwZW50aXVtcHJvIiA7OworCSAgICAqNj8/Oio6KjoqKSBheF9nY2NfYXJjaD1wZW50aXVtcHJvIDs7CisgICAgICAgICAgICAqZjNbWzM0N11dOio6KjoqfCpmNFsxMzQ3XToqOio6KikKKwkJY2FzZSAkaG9zdF9jcHUgaW4KKyAgICAgICAgICAgICAgICAgIHg4Nl82NCopIGF4X2djY19hcmNoPSJub2NvbmEgcGVudGl1bTQgcGVudGl1bXBybyIgOzsKKyAgICAgICAgICAgICAgICAgICopIGF4X2djY19hcmNoPSJwcmVzY290dCBwZW50aXVtNCBwZW50aXVtcHJvIiA7OworICAgICAgICAgICAgICAgIGVzYWMgOzsKKyAgICAgICAgICAgICpmPz86KjoqOiopIGF4X2djY19hcmNoPSJwZW50aXVtNCBwZW50aXVtcHJvIjs7CisgICAgICAgICAgZXNhYyA7OworICAgICAgICo6Njg3NDc1NDE6KjoqKSAjIEFNRAorICAgICAgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMSBpbgorCSAgICAqNVtbNjddXT86KjoqOiopIGF4X2djY19hcmNoPWs2IDs7CisJICAgICo1W1s4ZF1dPzoqOio6KikgYXhfZ2NjX2FyY2g9Ims2LTIgazYiIDs7CisJICAgICo1W1s5XV0/Oio6KjoqKSBheF9nY2NfYXJjaD0iazYtMyBrNiIgOzsKKwkgICAgKjYwPzoqOio6KikgYXhfZ2NjX2FyY2g9azcgOzsKKwkgICAgKjZbWzEyXV0/Oio6KjoqKSBheF9nY2NfYXJjaD0iYXRobG9uIGs3IiA7OworCSAgICAqNltbMzRdXT86KjoqOiopIGF4X2djY19hcmNoPSJhdGhsb24tdGJpcmQgazciIDs7CisJICAgICo2Nz86KjoqOiopIGF4X2djY19hcmNoPSJhdGhsb24tNCBhdGhsb24gazciIDs7CisJICAgICo2W1s2OGFdXT86KjoqOiopCisJICAgICAgIEFYX0dDQ19YODZfQ1BVSUQoMHg4MDAwMDAwNikgIyBMMiBjYWNoZSBzaXplCisJICAgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMHg4MDAwMDAwNiBpbgorICAgICAgICAgICAgICAgICAqOio6KltbMS05YS1mXV0/Pz8/Pz86KikgIyAoTDIgPSBlY3ggPj4gMTYpID49IDI1NgorCQkJYXhfZ2NjX2FyY2g9ImF0aGxvbi14cCBhdGhsb24tNCBhdGhsb24gazciIDs7CisgICAgICAgICAgICAgICAgICopIGF4X2djY19hcmNoPSJhdGhsb24tNCBhdGhsb24gazciIDs7CisJICAgICAgIGVzYWMgOzsKKwkgICAgKmZbWzRjZWY4Yl1dPzoqOio6KikgYXhfZ2NjX2FyY2g9ImF0aGxvbjY0IGs4IiA7OworCSAgICAqZjU/Oio6KjoqKSBheF9nY2NfYXJjaD0ib3B0ZXJvbiBrOCIgOzsKKwkgICAgKmY3PzoqOio6KikgYXhfZ2NjX2FyY2g9ImF0aGxvbi1meCBvcHRlcm9uIGs4IiA7OworCSAgICAqZj8/Oio6KjoqKSBheF9nY2NfYXJjaD0iazgiIDs7CisgICAgICAgICAgZXNhYyA7OworCSo6NzQ2ZTY1NDM6KjoqKSAjIElEVAorCSAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMSBpbgorCSAgICAgKjU0PzoqOio6KikgYXhfZ2NjX2FyY2g9d2luY2hpcC1jNiA7OworCSAgICAgKjU4PzoqOio6KikgYXhfZ2NjX2FyY2g9d2luY2hpcDIgOzsKKwkgICAgICo2W1s3OF1dPzoqOio6KikgYXhfZ2NjX2FyY2g9YzMgOzsKKwkgICAgICo2OT86KjoqOiopIGF4X2djY19hcmNoPSJjMy0yIGMzIiA7OworCSAgIGVzYWMgOzsKKyAgICAgZXNhYworICAgICBpZiB0ZXN0IHgiJGF4X2djY19hcmNoIiA9IHg7IHRoZW4gIyBmYWxsYmFjaworCWNhc2UgJGhvc3RfY3B1IGluCisJICBpNTg2KikgYXhfZ2NjX2FyY2g9cGVudGl1bSA7OworCSAgaTY4NiopIGF4X2djY19hcmNoPXBlbnRpdW1wcm8gOzsKKyAgICAgICAgZXNhYworICAgICBmaQorICAgICA7OworCisgIHNwYXJjKikKKyAgICAgQUNfUEFUSF9QUk9HKFtQUlRESUFHXSwgW3BydGRpYWddLCBbcHJ0ZGlhZ10sIFskUEFUSDovdXNyL3BsYXRmb3JtL2B1bmFtZSAtaWAvc2Jpbi86L3Vzci9wbGF0Zm9ybS9gdW5hbWUgLW1gL3NiaW4vXSkKKyAgICAgY3B1dHlwZT1gKCgoZ3JlcCBjcHUgL3Byb2MvY3B1aW5mbyB8IGN1dCAtZDogLWYyKSA7ICgkUFJURElBRyAtdiB8Z3JlcCAtaSBzcGFyYykgOyBncmVwIC1pIGNwdSAvdmFyL3J1bi9kbWVzZy5ib290ICkgfCBoZWFkIC1uIDEpIDI+IC9kZXYvbnVsbGAKKyAgICAgY3B1dHlwZT1gZWNobyAiJGNwdXR5cGUiIHwgdHIgLWQgJyAtJyB8dHIgJGFzX2NyX0xFVFRFUlMgJGFzX2NyX2xldHRlcnNgCisgICAgIGNhc2UgJGNwdXR5cGUgaW4KKyAgICAgICAgICp1bHRyYXNwYXJjaXYqKSBheF9nY2NfYXJjaD0idWx0cmFzcGFyYzQgdWx0cmFzcGFyYzMgdWx0cmFzcGFyYyB2OSIgOzsKKyAgICAgICAgICp1bHRyYXNwYXJjaWlpKikgYXhfZ2NjX2FyY2g9InVsdHJhc3BhcmMzIHVsdHJhc3BhcmMgdjkiIDs7CisgICAgICAgICAqdWx0cmFzcGFyYyopIGF4X2djY19hcmNoPSJ1bHRyYXNwYXJjIHY5IiA7OworICAgICAgICAgKnN1cGVyc3BhcmMqfCp0bXMzOTB6NVtbMDVdXSopIGF4X2djY19hcmNoPSJzdXBlcnNwYXJjIHY4IiA7OworICAgICAgICAgKmh5cGVyc3BhcmMqfCpydDYyW1swNTZdXSopIGF4X2djY19hcmNoPSJoeXBlcnNwYXJjIHY4IiA7OworICAgICAgICAgKmN5cHJlc3MqKSBheF9nY2NfYXJjaD1jeXByZXNzIDs7CisgICAgIGVzYWMgOzsKKworICBhbHBoYWV2NSkgYXhfZ2NjX2FyY2g9ZXY1IDs7CisgIGFscGhhZXY1NikgYXhfZ2NjX2FyY2g9ZXY1NiA7OworICBhbHBoYXBjYTU2KSBheF9nY2NfYXJjaD0icGNhNTYgZXY1NiIgOzsKKyAgYWxwaGFwY2E1NykgYXhfZ2NjX2FyY2g9InBjYTU3IHBjYTU2IGV2NTYiIDs7CisgIGFscGhhZXY2KSBheF9nY2NfYXJjaD1ldjYgOzsKKyAgYWxwaGFldjY3KSBheF9nY2NfYXJjaD1ldjY3IDs7CisgIGFscGhhZXY2OCkgYXhfZ2NjX2FyY2g9ImV2NjggZXY2NyIgOzsKKyAgYWxwaGFldjY5KSBheF9nY2NfYXJjaD0iZXY2OSBldjY4IGV2NjciIDs7CisgIGFscGhhZXY3KSBheF9nY2NfYXJjaD0iZXY3IGV2NjkgZXY2OCBldjY3IiA7OworICBhbHBoYWV2NzkpIGF4X2djY19hcmNoPSJldjc5IGV2NyBldjY5IGV2NjggZXY2NyIgOzsKKworICBwb3dlcnBjKikKKyAgICAgY3B1dHlwZT1gKChncmVwIGNwdSAvcHJvYy9jcHVpbmZvIHwgaGVhZCAtbiAxIHwgY3V0IC1kOiAtZjIgfCBjdXQgLWQsIC1mMSB8IHNlZCAncy8gLy9nJykgOyAvdXNyL2Jpbi9tYWNoaW5lIDsgL2Jpbi9tYWNoaW5lOyBncmVwIENQVSAvdmFyL3J1bi9kbWVzZy5ib290IHwgaGVhZCAtbiAxIHwgY3V0IC1kIiAiIC1mMikgMj4gL2Rldi9udWxsYAorICAgICBjcHV0eXBlPWBlY2hvICRjcHV0eXBlIHwgc2VkIC1lICdzL3BwYy8vZztzLyAqLy9nJ2AKKyAgICAgY2FzZSAkY3B1dHlwZSBpbgorICAgICAgICo3NTAqKSBheF9nY2NfYXJjaD0iNzUwIEczIiA7OworICAgICAgICo3NDBbWzAtOV1dKikgYXhfZ2NjX2FyY2g9IiRjcHV0eXBlIDc0MDAgRzQiIDs7CisgICAgICAgKjc0W1s0LTVdXVtbMC05XV0qKSBheF9nY2NfYXJjaD0iJGNwdXR5cGUgNzQ1MCBHNCIgOzsKKyAgICAgICAqNzRbWzAtOV1dW1swLTldXSopIGF4X2djY19hcmNoPSIkY3B1dHlwZSBHNCIgOzsKKyAgICAgICAqOTcwKikgYXhfZ2NjX2FyY2g9Ijk3MCBHNSBwb3dlcjQiOzsKKyAgICAgICAqUE9XRVI0KnwqcG93ZXI0KnwqZ3EqKSBheF9nY2NfYXJjaD0icG93ZXI0IDk3MCI7OworICAgICAgICpQT1dFUjUqfCpwb3dlcjUqfCpncip8KmdzKikgYXhfZ2NjX2FyY2g9InBvd2VyNSBwb3dlcjQgOTcwIjs7CisgICAgICAgNjAzZXZ8ODI0MCkgYXhfZ2NjX2FyY2g9IiRjcHV0eXBlIDYwM2UgNjAzIjs7CisgICAgICAgKikgYXhfZ2NjX2FyY2g9JGNwdXR5cGUgOzsKKyAgICAgZXNhYworICAgICBheF9nY2NfYXJjaD0iJGF4X2djY19hcmNoIHBvd2VycGMiCisgICAgIDs7Citlc2FjCitmaSAjIG5vdCBjcm9zcy1jb21waWxpbmcKK2ZpICMgZ3Vlc3MgYXJjaAorCitpZiB0ZXN0ICJ4JGF4X2djY19hcmNoIiAhPSB4IC1hICJ4JGF4X2djY19hcmNoIiAhPSB4bm87IHRoZW4KK2ZvciBhcmNoIGluICRheF9nY2NfYXJjaDsgZG8KKyAgaWYgdGVzdCAieFtdbTRfZGVmYXVsdChbJDFdLHllcykiID0geHllczsgdGhlbiAjIGlmIHdlIHJlcXVpcmUgcG9ydGFibGUgY29kZQorICAgIGZsYWdzPSItbXR1bmU9JGFyY2giCisgICAgIyAtbWNwdT0kYXJjaCBhbmQgbSRhcmNoIGdlbmVyYXRlIG5vbnBvcnRhYmxlIGNvZGUgb24gZXZlcnkgYXJjaCBleGNlcHQKKyAgICAjIHg4Ni4gIEFuZCBzb21lIG90aGVyIGFyY2hlcyAoZS5nLiBBbHBoYSkgZG9uJ3QgYWNjZXB0IC1tdHVuZS4gIEdycnIuCisgICAgY2FzZSAkaG9zdF9jcHUgaW4gaSo4Nnx4ODZfNjQqKSBmbGFncz0iJGZsYWdzIC1tY3B1PSRhcmNoIC1tJGFyY2giOzsgZXNhYworICBlbHNlCisgICAgZmxhZ3M9Ii1tYXJjaD0kYXJjaCAtbWNwdT0kYXJjaCAtbSRhcmNoIgorICBmaQorICBmb3IgZmxhZyBpbiAkZmxhZ3M7IGRvCisgICAgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKCRmbGFnLCBbYXhfY3ZfZ2NjX2FyY2hmbGFnPSRmbGFnOyBicmVha10pCisgIGRvbmUKKyAgdGVzdCAieCRheF9jdl9nY2NfYXJjaGZsYWciID0geHVua25vd24gfHwgYnJlYWsKK2RvbmUKK2ZpCisKK2ZpICMgJEdDQz15ZXMKK10pCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBnY2MgYXJjaGl0ZWN0dXJlIGZsYWddKQorQUNfTVNHX1JFU1VMVCgkYXhfY3ZfZ2NjX2FyY2hmbGFnKQoraWYgdGVzdCAieCRheF9jdl9nY2NfYXJjaGZsYWciID0geHVua25vd247IHRoZW4KKyAgbTRfZGVmYXVsdChbJDNdLDopCitlbHNlCisgIG00X2RlZmF1bHQoWyQyXSwgW0NGTEFHUz0iJENGTEFHUyAkYXhfY3ZfZ2NjX2FyY2hmbGFnIl0pCitmaQorXSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfZ2NjX3g4Nl9jcHVpZC5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfZ2NjX3g4Nl9jcHVpZC5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDQ2ZmVlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9nY2NfeDg2X2NwdWlkLm00CkBAIC0wLDAgKzEsNzkgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9nY2NfeDg2X2NwdWlkLmh0bWwKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIFNZTk9QU0lTCisjCisjICAgQVhfR0NDX1g4Nl9DUFVJRChPUCkKKyMKKyMgREVTQ1JJUFRJT04KKyMKKyMgICBPbiBQZW50aXVtIGFuZCBsYXRlciB4ODYgcHJvY2Vzc29ycywgd2l0aCBnY2Mgb3IgYSBjb21waWxlciB0aGF0IGhhcyBhCisjICAgY29tcGF0aWJsZSBzeW50YXggZm9yIGlubGluZSBhc3NlbWJseSBpbnN0cnVjdGlvbnMsIHJ1biBhIHNtYWxsIHByb2dyYW0KKyMgICB0aGF0IGV4ZWN1dGVzIHRoZSBjcHVpZCBpbnN0cnVjdGlvbiB3aXRoIGlucHV0IE9QLiBUaGlzIGNhbiBiZSB1c2VkIHRvCisjICAgZGV0ZWN0IHRoZSBDUFUgdHlwZS4KKyMKKyMgICBPbiBvdXRwdXQsIHRoZSB2YWx1ZXMgb2YgdGhlIGVheCwgZWJ4LCBlY3gsIGFuZCBlZHggcmVnaXN0ZXJzIGFyZSBzdG9yZWQKKyMgICBhcyBoZXhhZGVjaW1hbCBzdHJpbmdzIGFzICJlYXg6ZWJ4OmVjeDplZHgiIGluIHRoZSBjYWNoZSB2YXJpYWJsZQorIyAgIGF4X2N2X2djY194ODZfY3B1aWRfT1AuCisjCisjICAgSWYgdGhlIGNwdWlkIGluc3RydWN0aW9uIGZhaWxzIChiZWNhdXNlIHlvdSBhcmUgcnVubmluZyBhCisjICAgY3Jvc3MtY29tcGlsZXIsIG9yIGJlY2F1c2UgeW91IGFyZSBub3QgdXNpbmcgZ2NjLCBvciBiZWNhdXNlIHlvdSBhcmUgb24KKyMgICBhIHByb2Nlc3NvciB0aGF0IGRvZXNuJ3QgaGF2ZSB0aGlzIGluc3RydWN0aW9uKSwgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF9PUAorIyAgIGlzIHNldCB0byB0aGUgc3RyaW5nICJ1bmtub3duIi4KKyMKKyMgICBUaGlzIG1hY3JvIG1haW5seSBleGlzdHMgdG8gYmUgdXNlZCBpbiBBWF9HQ0NfQVJDSEZMQUcuCisjCisjIExJQ0VOU0UKKyMKKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggU3RldmVuIEcuIEpvaG5zb24gPHN0ZXZlbmpAYWx1bS5taXQuZWR1PgorIyAgIENvcHlyaWdodCAoYykgMjAwOCBNYXR0ZW8gRnJpZ28KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyMgICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsCisjICAgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworIyAgIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjICAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHJlc3BlY3RpdmUgQXV0b2NvbmYgTWFjcm8ncyBjb3B5cmlnaHQgb3duZXIKKyMgICBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgdGhlIGNvbmZpZ3VyZQorIyAgIHNjcmlwdHMgdGhhdCBhcmUgdGhlIG91dHB1dCBvZiBBdXRvY29uZiB3aGVuIHByb2Nlc3NpbmcgdGhlIE1hY3JvLiBZb3UKKyMgICBuZWVkIG5vdCBmb2xsb3cgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB3aGVuIHVzaW5nCisjICAgb3IgZGlzdHJpYnV0aW5nIHN1Y2ggc2NyaXB0cywgZXZlbiB0aG91Z2ggcG9ydGlvbnMgb2YgdGhlIHRleHQgb2YgdGhlCisjICAgTWFjcm8gYXBwZWFyIGluIHRoZW0uIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybgorIyAgIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorIworIyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBhcHBsaWVzIHRvIHZlcnNpb25zIG9mIHRoZSBBdXRvY29uZgorIyAgIE1hY3JvIHJlbGVhc2VkIGJ5IHRoZSBBdXRvY29uZiBBcmNoaXZlLiBXaGVuIHlvdSBtYWtlIGFuZCBkaXN0cmlidXRlIGEKKyMgICBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBBdXRvY29uZiBNYWNybywgeW91IG1heSBleHRlbmQgdGhpcyBzcGVjaWFsCisjICAgZXhjZXB0aW9uIHRvIHRoZSBHUEwgdG8gYXBwbHkgdG8geW91ciBtb2RpZmllZCB2ZXJzaW9uIGFzIHdlbGwuCisKKyNzZXJpYWwgNworCitBQ19ERUZVTihbQVhfR0NDX1g4Nl9DUFVJRF0sCitbQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pCitBQ19MQU5HX1BVU0goW0NdKQorQUNfQ0FDSEVfQ0hFQ0soZm9yIHg4NiBjcHVpZCAkMSBvdXRwdXQsIGF4X2N2X2djY194ODZfY3B1aWRfJDEsCisgW0FDX1JVTl9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbI2luY2x1ZGUgPHN0ZGlvLmg+XSwgWworICAgICBpbnQgb3AgPSAkMSwgZWF4LCBlYngsIGVjeCwgZWR4OworICAgICBGSUxFICpmOworICAgICAgX19hc21fXygiY3B1aWQiCisgICAgICAgIDogIj1hIiAoZWF4KSwgIj1iIiAoZWJ4KSwgIj1jIiAoZWN4KSwgIj1kIiAoZWR4KQorICAgICAgICA6ICJhIiAob3ApKTsKKyAgICAgZiA9IGZvcGVuKCJjb25mdGVzdF9jcHVpZCIsICJ3Iik7IGlmICghZikgcmV0dXJuIDE7CisgICAgIGZwcmludGYoZiwgIiV4OiV4OiV4OiV4XG4iLCBlYXgsIGVieCwgZWN4LCBlZHgpOworICAgICBmY2xvc2UoZik7CisgICAgIHJldHVybiAwOworXSldLAorICAgICBbYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8kMT1gY2F0IGNvbmZ0ZXN0X2NwdWlkYDsgcm0gLWYgY29uZnRlc3RfY3B1aWRdLAorICAgICBbYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8kMT11bmtub3duOyBybSAtZiBjb25mdGVzdF9jcHVpZF0sCisgICAgIFtheF9jdl9nY2NfeDg2X2NwdWlkXyQxPXVua25vd25dKV0pCitBQ19MQU5HX1BPUChbQ10pCitdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9saWJ0b29sLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9saWJ0b29sLm00CmluZGV4IDY3MWNkZTEuLjgyODEwNGMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbGlidG9vbC5tNAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2xpYnRvb2wubTQKQEAgLTEsNyArMSw4IEBACiAjIGxpYnRvb2wubTQgLSBDb25maWd1cmUgbGlidG9vbCBmb3IgdGhlIGhvc3Qgc3lzdGVtLiAtKi1BdXRvY29uZi0qLQogIwogIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUKKyMgICAgICAgICAgICAgICAgIEZvdW5kYXRpb24sIEluYy4KICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCkBAIC0xMCw3ICsxMSw4IEBACiAKIG00X2RlZmluZShbX0xUX0NPUFlJTkddLCBbZG5sCiAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZQorIyAgICAgICAgICAgICAgICAgRm91bmRhdGlvbiwgSW5jLgogIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKICMKICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KQEAgLTM3LDcgKzM5LDcgQEAKICMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiBdKQogCi0jIHNlcmlhbCA1NiBMVF9JTklUCisjIHNlcmlhbCA1NyBMVF9JTklUCiAKIAogIyBMVF9QUkVSRVEoVkVSU0lPTikKQEAgLTY2LDYgKzY4LDcgQEAKICMgLS0tLS0tLS0tLS0tLS0tLS0tCiBBQ19ERUZVTihbTFRfSU5JVF0sCiBbQUNfUFJFUkVRKFsyLjU4XSlkbmwgV2UgdXNlIEFDX0lOQ0xVREVTX0RFRkFVTFQKK0FDX1JFUVVJUkUoW0FDX0NPTkZJR19BVVhfRElSX0RFRkFVTFRdKWRubAogQUNfQkVGT1JFKFskMF0sIFtMVF9MQU5HXSlkbmwKIEFDX0JFRk9SRShbJDBdLCBbTFRfT1VUUFVUXSlkbmwKIEFDX0JFRk9SRShbJDBdLCBbTFRETF9JTklUXSlkbmwKQEAgLTgyLDYgKzg1LDggQEAKIEFDX1JFUVVJUkUoW0xUT0JTT0xFVEVfVkVSU0lPTl0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfUFJPR19MVE1BSU5dKWRubAogCitfTFRfU0hFTExfSU5JVChbU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH1dKQorCiBkbmwgUGFyc2UgT1BUSU9OUwogX0xUX1NFVF9PUFRJT05TKFskMF0sIFskMV0pCiAKQEAgLTExOCw3ICsxMjMsNyBAQAogICAgICopIGJyZWFrOzsKICAgZXNhYwogZG9uZQotY2NfYmFzZW5hbWU9YCRFQ0hPICJYJGNjX3RlbXAiIHwgJFhzZWQgLWUgJ3MlLiovJSUnIC1lICJzJV4kaG9zdF9hbGlhcy0lJSJgCitjY19iYXNlbmFtZT1gJEVDSE8gIiRjY190ZW1wIiB8ICRTRUQgInMlLiovJSU7IHMlXiRob3N0X2FsaWFzLSUlImAKIF0pCiAKIApAQCAtMTM4LDYgKzE0MywxMSBAQAogbTRfZGVmdW4oW19MVF9TRVRVUF0sCiBbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAogQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSlkbmwKK0FDX1JFUVVJUkUoW19MVF9QUkVQQVJFX1NFRF9RVU9URV9WQVJTXSlkbmwKK0FDX1JFUVVJUkUoW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSlkbmwKKworX0xUX0RFQ0woW10sIFtQQVRIX1NFUEFSQVRPUl0sIFsxXSwgW1RoZSBQQVRIIHNlcGFyYXRvciBmb3IgdGhlIGJ1aWxkIHN5c3RlbV0pZG5sCitkbmwKIF9MVF9ERUNMKFtdLCBbaG9zdF9hbGlhc10sIFswXSwgW1RoZSBob3N0IHN5c3RlbV0pZG5sCiBfTFRfREVDTChbXSwgW2hvc3RdLCBbMF0pZG5sCiBfTFRfREVDTChbXSwgW2hvc3Rfb3NdLCBbMF0pZG5sCkBAIC0xNjAsMTAgKzE3MCwxMyBAQAogZG5sCiBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKIG00X3JlcXVpcmUoW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10pZG5sCittNF9yZXF1aXJlKFtfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OU10pZG5sCiBtNF9yZXF1aXJlKFtfTFRfQ01EX1JFTE9BRF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9EXSlkbmwKK200X3JlcXVpcmUoW19MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCXSlkbmwKIG00X3JlcXVpcmUoW19MVF9DTURfT0xEX0FSQ0hJVkVdKWRubAogbTRfcmVxdWlyZShbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10pZG5sCittNF9yZXF1aXJlKFtfTFRfV0lUSF9TWVNST09UXSlkbmwKIAogX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoWwogIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHdoaWNoIGFsbG93IG91cgpAQCAtMTc5LDcgKzE5Miw2IEBACiBfTFRfQ0hFQ0tfT0JKRElSCiAKIG00X3JlcXVpcmUoW19MVF9UQUdfQ09NUElMRVJdKWRubAotX0xUX1BST0dfRUNIT19CQUNLU0xBU0gKIAogY2FzZSAkaG9zdF9vcyBpbgogYWl4MyopCkBAIC0xOTMsMjMgKzIwNSw2IEBACiAgIDs7CiBlc2FjCiAKLSMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGhlbHBzIHVzIGRvIHJvYnVzdCBxdW90aW5nLiAgSXQgYmFja3NsYXNoaWZpZXMKLSMgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbiBkb3VibGUtcXVvdGVkIHN0cmluZ3MuCi1zZWRfcXVvdGVfc3Vic3Q9J3MvXChbWyJgJFxcXV1cKS9cXFwxL2cnCi0KLSMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgotZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woW1siYFxcXV1cKS9cXFwxL2cnCi0KLSMgU2VkIHN1YnN0aXR1dGlvbiB0byBkZWxheSBleHBhbnNpb24gb2YgYW4gZXNjYXBlZCBzaGVsbCB2YXJpYWJsZSBpbiBhCi0jIGRvdWJsZV9xdW90ZV9zdWJzdCdlZCBzdHJpbmcuCi1kZWxheV92YXJpYWJsZV9zdWJzdD0ncy9cXFxcXFxcXFxcXCQvXFxcXFxcJC9nJwotCi0jIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2luZ2xlIHF1b3RlLgotZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0PSdzLydcJycvJ1wnXFxcXFxcXCdcJycvZycKLQotIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGF2b2lkIGFjY2lkZW50YWwgZ2xvYmJpbmcgaW4gZXZhbGVkIGV4cHJlc3Npb25zCi1ub19nbG9iX3N1YnN0PSdzL1wqL1xcXCovZycKLQogIyBHbG9iYWwgdmFyaWFibGVzOgogb2ZpbGU9bGlidG9vbAogY2FuX2J1aWxkX3NoYXJlZD15ZXMKQEAgLTI1MCw2ICsyNDUsMjggQEAKIF0pIyBfTFRfU0VUVVAKIAogCisjIF9MVF9QUkVQQVJFX1NFRF9RVU9URV9WQVJTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlZmluZSBhIGZldyBzZWQgc3Vic3RpdHV0aW9uIHRoYXQgaGVscCB1cyBkbyByb2J1c3QgcXVvdGluZy4KK200X2RlZnVuKFtfTFRfUFJFUEFSRV9TRURfUVVPVEVfVkFSU10sCitbIyBCYWNrc2xhc2hpZnkgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbgorIyBkb3VibGUtcXVvdGVkIHN0cmluZ3MuCitzZWRfcXVvdGVfc3Vic3Q9J3MvXChbWyJgJFxcXV1cKS9cXFwxL2cnCisKKyMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgorZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woW1siYFxcXV1cKS9cXFwxL2cnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0byBkZWxheSBleHBhbnNpb24gb2YgYW4gZXNjYXBlZCBzaGVsbCB2YXJpYWJsZSBpbiBhCisjIGRvdWJsZV9xdW90ZV9zdWJzdCdlZCBzdHJpbmcuCitkZWxheV92YXJpYWJsZV9zdWJzdD0ncy9cXFxcXFxcXFxcXCQvXFxcXFxcJC9nJworCisjIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2luZ2xlIHF1b3RlLgorZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0PSdzLydcJycvJ1wnXFxcXFxcXCdcJycvZycKKworIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGF2b2lkIGFjY2lkZW50YWwgZ2xvYmJpbmcgaW4gZXZhbGVkIGV4cHJlc3Npb25zCitub19nbG9iX3N1YnN0PSdzL1wqL1xcXCovZycKK10pCisKICMgX0xUX1BST0dfTFRNQUlOCiAjIC0tLS0tLS0tLS0tLS0tLQogIyBOb3RlIHRoYXQgdGhpcyBjb2RlIGlzIGNhbGxlZCBib3RoIGZyb20gYGNvbmZpZ3VyZScsIGFuZCBgY29uZmlnLnN0YXR1cycKQEAgLTQwOCw3ICs0MjUsNyBAQAogIyBkZWNsYXJhdGlvbiB0aGVyZSB3aWxsIGhhdmUgdGhlIHNhbWUgdmFsdWUgYXMgaW4gYGNvbmZpZ3VyZScuICBWQVJOQU1FCiAjIG11c3QgaGF2ZSBhIHNpbmdsZSBxdW90ZSBkZWxpbWl0ZWQgdmFsdWUgZm9yIHRoaXMgdG8gd29yay4KIG00X2RlZmluZShbX0xUX0NPTkZJR19TVEFUVVNfREVDTEFSRV0sCi1bJDE9J2AkRUNITyAiWCRdWyQxIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnXSkKK1skMT0nYCRFQ0hPICIkXVskMSIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnXSkKIAogCiAjIF9MVF9DT05GSUdfU1RBVFVTX0RFQ0xBUkFUSU9OUwpAQCAtNDE4LDcgKzQzNSw3IEBACiAjIGVtYmVkZGVkIHNpbmdsZSBxdW90ZXMgcHJvcGVybHkuICBJbiBjb25maWd1cmUsIHRoaXMgbWFjcm8gZXhwYW5kcwogIyBlYWNoIHZhcmlhYmxlIGRlY2xhcmVkIHdpdGggX0xUX0RFQ0wgKGFuZCBfTFRfVEFHREVDTCkgaW50bzoKICMKLSMgICAgPHZhcj49J2AkRUNITyAiWCQ8dmFyPiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIyAgICA8dmFyPj0nYCRFQ0hPICIkPHZhcj4iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogbTRfZGVmdW4oW19MVF9DT05GSUdfU1RBVFVTX0RFQ0xBUkFUSU9OU10sCiBbbTRfZm9yZWFjaChbX2x0X3Zhcl0sIG00X3F1b3RlKGx0X2RlY2xfYWxsX3Zhcm5hbWVzKSwKICAgICBbbTRfbihbX0xUX0NPTkZJR19TVEFUVVNfREVDTEFSRShfbHRfdmFyKV0pXSldKQpAQCAtNTE3LDEyICs1MzQsMjAgQEAKIExUQ0ZMQUdTPSckTFRDRkxBR1MnCiBjb21waWxlcj0nJGNvbXBpbGVyX0RFRkFVTFQnCiAKKyMgQSBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgd2hlbiB0aGVyZSBpcyBubyBwcmludCBidWlsdGluIG9yIHByaW50Zi4KK2Z1bmNfZmFsbGJhY2tfZWNobyAoKQoreworICBldmFsICdjYXQgPDxfTFRFQ0hPX0VPRgorXCRbXTEKK19MVEVDSE9fRU9GJworfQorCiAjIFF1b3RlIGV2YWxlZCBzdHJpbmdzLgogZm9yIHZhciBpbiBsdF9kZWNsX2FsbF92YXJuYW1lcyhbWyBcCiBdXSwgbHRfZGVjbF9xdW90ZV92YXJuYW1lcyk7IGRvCi0gICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyAiWFxcXFxcJFwkdmFyIlxgIGluCisgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCiAgICAgKltbXFxcXFxcXGBcXCJcXFwkXV0qKQotICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJYXFxcJFwkdmFyXFwiIHwgXFxcJFhzZWQgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgorICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKICAgICAgIDs7CiAgICAgKikKICAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFwkXCR2YXJcXFxcXFwiIgpAQCAtNTMzLDkgKzU1OCw5IEBACiAjIERvdWJsZS1xdW90ZSBkb3VibGUtZXZhbGVkIHN0cmluZ3MuCiBmb3IgdmFyIGluIGx0X2RlY2xfYWxsX3Zhcm5hbWVzKFtbIFwKIF1dLCBsdF9kZWNsX2RxdW90ZV92YXJuYW1lcyk7IGRvCi0gICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyAiWFxcXFxcJFwkdmFyIlxgIGluCisgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCiAgICAgKltbXFxcXFxcXGBcXCJcXFwkXV0qKQotICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJYXFxcJFwkdmFyXFwiIHwgXFxcJFhzZWQgLWUgXFwiXFxcJGRvdWJsZV9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRkZWxheV92YXJpYWJsZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgorICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKICAgICAgIDs7CiAgICAgKikKICAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFwkXCR2YXJcXFxcXFwiIgpAQCAtNTQzLDE2ICs1NjgsMzggQEAKICAgICBlc2FjCiBkb25lCiAKLSMgRml4LXVwIGZhbGxiYWNrIGVjaG8gaWYgaXQgd2FzIG1hbmdsZWQgYnkgdGhlIGFib3ZlIHF1b3RpbmcgcnVsZXMuCi1jYXNlIFwkbHRfRUNITyBpbgotKidcXFxbJF0wIC0tZmFsbGJhY2stZWNobyInKWRubCAiCi0gIGx0X0VDSE89XGBcJEVDSE8gIlhcJGx0X0VDSE8iIHwgXCRYc2VkIC1lICdzL1xcXFxcXFxcXFxcXFxcXFskXTAgLS1mYWxsYmFjay1lY2hvIlxbJF0vXFskXTAgLS1mYWxsYmFjay1lY2hvIi8nXGAKLSAgOzsKLWVzYWMKLQogX0xUX09VVFBVVF9MSUJUT09MX0lOSVQKIF0pCiAKKyMgX0xUX0dFTkVSQVRFRF9GSUxFX0lOSVQoRklMRSwgW0NPTU1FTlRdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgR2VuZXJhdGUgYSBjaGlsZCBzY3JpcHQgRklMRSB3aXRoIGFsbCBpbml0aWFsaXphdGlvbiBuZWNlc3NhcnkgdG8KKyMgcmV1c2UgdGhlIGVudmlyb25tZW50IGxlYXJuZWQgYnkgdGhlIHBhcmVudCBzY3JpcHQsIGFuZCBtYWtlIHRoZQorIyBmaWxlIGV4ZWN1dGFibGUuICBJZiBDT01NRU5UIGlzIHN1cHBsaWVkLCBpdCBpcyBpbnNlcnRlZCBhZnRlciB0aGUKKyMgYCMhJyBzZXF1ZW5jZSBidXQgYmVmb3JlIGluaXRpYWxpemF0aW9uIHRleHQgYmVnaW5zLiAgQWZ0ZXIgdGhpcworIyBtYWNybywgYWRkaXRpb25hbCB0ZXh0IGNhbiBiZSBhcHBlbmRlZCB0byBGSUxFIHRvIGZvcm0gdGhlIGJvZHkgb2YKKyMgdGhlIGNoaWxkIHNjcmlwdC4gIFRoZSBtYWNybyBlbmRzIHdpdGggbm9uLXplcm8gc3RhdHVzIGlmIHRoZQorIyBmaWxlIGNvdWxkIG5vdCBiZSBmdWxseSB3cml0dGVuIChzdWNoIGFzIGlmIHRoZSBkaXNrIGlzIGZ1bGwpLgorbTRfaWZkZWYoW0FTX0lOSVRfR0VORVJBVEVEXSwKK1ttNF9kZWZ1bihbX0xUX0dFTkVSQVRFRF9GSUxFX0lOSVRdLFtBU19JTklUX0dFTkVSQVRFRCgkQCldKV0sCitbbTRfZGVmdW4oW19MVF9HRU5FUkFURURfRklMRV9JTklUXSwKK1ttNF9yZXF1aXJlKFtBU19QUkVQQVJFXSldZG5sCitbbTRfcHVzaGRlZihbQVNfTUVTU0FHRV9MT0dfRkRdKV1kbmwKK1tsdF93cml0ZV9mYWlsPTAKK2NhdCA+JDEgPDxfQVNFT0YgfHwgbHRfd3JpdGVfZmFpbD0xCisjISAkU0hFTEwKKyMgR2VuZXJhdGVkIGJ5ICRhc19tZS4KKyQyCitTSEVMTD1cJHtDT05GSUdfU0hFTEwtJFNIRUxMfQorZXhwb3J0IFNIRUxMCitfQVNFT0YKK2NhdCA+PiQxIDw8XF9BU0VPRiB8fCBsdF93cml0ZV9mYWlsPTEKK0FTX1NIRUxMX1NBTklUSVpFCitfQVNfUFJFUEFSRQorZXhlYyBBU19NRVNTQUdFX0ZEPiYxCitfQVNFT0YKK3Rlc3QgJGx0X3dyaXRlX2ZhaWwgPSAwICYmIGNobW9kICt4ICQxW11kbmwKK200X3BvcGRlZihbQVNfTUVTU0FHRV9MT0dfRkRdKV0pXSkjIF9MVF9HRU5FUkFURURfRklMRV9JTklUCiAKICMgTFRfT1VUUFVUCiAjIC0tLS0tLS0tLQpAQCAtNTYyLDIwICs2MDksMTEgQEAKIEFDX0RFRlVOKFtMVF9PVVRQVVRdLAogWzogJHtDT05GSUdfTFQ9Li9jb25maWcubHR9CiBBQ19NU0dfTk9USUNFKFtjcmVhdGluZyAkQ09ORklHX0xUXSkKLWNhdCA+IiRDT05GSUdfTFQiIDw8X0xURU9GCi0jISAkU0hFTEwKLSMgR2VuZXJhdGVkIGJ5ICRhc19tZS4KLSMgUnVuIHRoaXMgZmlsZSB0byByZWNyZWF0ZSBhIGxpYnRvb2wgc3R1YiB3aXRoIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCi0KLWx0X2NsX3NpbGVudD1mYWxzZQotU0hFTEw9XCR7Q09ORklHX1NIRUxMLSRTSEVMTH0KLV9MVEVPRgorX0xUX0dFTkVSQVRFRF9GSUxFX0lOSVQoWyIkQ09ORklHX0xUIl0sCitbIyBSdW4gdGhpcyBmaWxlIHRvIHJlY3JlYXRlIGEgbGlidG9vbCBzdHViIHdpdGggdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi5dKQogCiBjYXQgPj4iJENPTkZJR19MVCIgPDxcX0xURU9GCi1BU19TSEVMTF9TQU5JVElaRQotX0FTX1BSRVBBUkUKLQotZXhlYyBBU19NRVNTQUdFX0ZEPiYxCitsdF9jbF9zaWxlbnQ9ZmFsc2UKIGV4ZWMgQVNfTUVTU0FHRV9MT0dfRkQ+PmNvbmZpZy5sb2cKIHsKICAgZWNobwpAQCAtNjAxLDcgKzYzOSw3IEBACiBtNF9pZnNldChbQUNfUEFDS0FHRV9WRVJTSU9OXSwgWyBBQ19QQUNLQUdFX1ZFUlNJT05dKQogY29uZmlndXJlZCBieSAkWzBdLCBnZW5lcmF0ZWQgYnkgbTRfUEFDS0FHRV9TVFJJTkcuCiAKLUNvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK0NvcHlyaWdodCAoQykgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIFRoaXMgY29uZmlnLmx0IHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iCiAKQEAgLTY0NiwxNSArNjg0LDEzIEBACiAjIGFwcGVuZGluZyB0byBjb25maWcubG9nLCB3aGljaCBmYWlscyBvbiBET1MsIGFzIGNvbmZpZy5sb2cgaXMgc3RpbGwga2VwdAogIyBvcGVuIGJ5IGNvbmZpZ3VyZS4gIEhlcmUgd2UgZXhlYyB0aGUgRkQgdG8gL2Rldi9udWxsLCBlZmZlY3RpdmVseSBjbG9zaW5nCiAjIGNvbmZpZy5sb2csIHNvIGl0IGNhbiBiZSBwcm9wZXJseSAocmUpb3BlbmVkIGFuZCBhcHBlbmRlZCB0byBieSBjb25maWcubHQuCi1pZiB0ZXN0ICIkbm9fY3JlYXRlIiAhPSB5ZXM7IHRoZW4KLSAgbHRfY2xfc3VjY2Vzcz06Ci0gIHRlc3QgIiRzaWxlbnQiID0geWVzICYmCi0gICAgbHRfY29uZmlnX2x0X2FyZ3M9IiRsdF9jb25maWdfbHRfYXJncyAtLXF1aWV0IgotICBleGVjIEFTX01FU1NBR0VfTE9HX0ZEPi9kZXYvbnVsbAotICAkU0hFTEwgIiRDT05GSUdfTFQiICRsdF9jb25maWdfbHRfYXJncyB8fCBsdF9jbF9zdWNjZXNzPWZhbHNlCi0gIGV4ZWMgQVNfTUVTU0FHRV9MT0dfRkQ+PmNvbmZpZy5sb2cKLSAgJGx0X2NsX3N1Y2Nlc3MgfHwgQVNfRVhJVCgxKQotZmkKK2x0X2NsX3N1Y2Nlc3M9OgordGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYKKyAgbHRfY29uZmlnX2x0X2FyZ3M9IiRsdF9jb25maWdfbHRfYXJncyAtLXF1aWV0IgorZXhlYyBBU19NRVNTQUdFX0xPR19GRD4vZGV2L251bGwKKyRTSEVMTCAiJENPTkZJR19MVCIgJGx0X2NvbmZpZ19sdF9hcmdzIHx8IGx0X2NsX3N1Y2Nlc3M9ZmFsc2UKK2V4ZWMgQVNfTUVTU0FHRV9MT0dfRkQ+PmNvbmZpZy5sb2cKKyRsdF9jbF9zdWNjZXNzIHx8IEFTX0VYSVQoMSkKIF0pIyBMVF9PVVRQVVQKIAogCkBAIC03MTcsMTUgKzc1MywxMiBAQAogICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCiAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCiAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQogCi0gIF9MVF9QUk9HX1hTSV9TSEVMTEZOUworICBfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TCiAKLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0KLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCiAgIGNobW9kICt4ICIkb2ZpbGUiCiBdLApAQCAtNzcwLDYgKzgwMyw3IEBACiBtNF9jYXNlKFskMV0sCiAgIFtDXSwJCQlbX0xUX0xBTkcoQyldLAogICBbQysrXSwJCVtfTFRfTEFORyhDWFgpXSwKKyAgW0dvXSwJCQlbX0xUX0xBTkcoR08pXSwKICAgW0phdmFdLAkJW19MVF9MQU5HKEdDSildLAogICBbRm9ydHJhbiA3N10sCQlbX0xUX0xBTkcoRjc3KV0sCiAgIFtGb3J0cmFuXSwJCVtfTFRfTEFORyhGQyldLApAQCAtNzkxLDYgKzgyNSwzMSBAQAogXSkjIF9MVF9MQU5HCiAKIAorbTRfaWZuZGVmKFtBQ19QUk9HX0dPXSwgWworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIE5PVEU6IFRoaXMgbWFjcm8gaGFzIGJlZW4gc3VibWl0dGVkIGZvciBpbmNsdXNpb24gaW50byAgICMKKyMgIEdOVSBBdXRvY29uZiBhcyBBQ19QUk9HX0dPLiAgV2hlbiBpdCBpcyBhdmFpbGFibGUgaW4gICAgIworIyAgYSByZWxlYXNlZCB2ZXJzaW9uIG9mIEF1dG9jb25mIHdlIHNob3VsZCByZW1vdmUgdGhpcyAgICAjCisjICBtYWNybyBhbmQgdXNlIGl0IGluc3RlYWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbTRfZGVmdW4oW0FDX1BST0dfR09dLAorW0FDX0xBTkdfUFVTSChHbylkbmwKK0FDX0FSR19WQVIoW0dPQ10sICAgICBbR28gY29tcGlsZXIgY29tbWFuZF0pZG5sCitBQ19BUkdfVkFSKFtHT0ZMQUdTXSwgW0dvIGNvbXBpbGVyIGZsYWdzXSlkbmwKK19BQ19BUkdfVkFSX0xERkxBR1MoKWRubAorQUNfQ0hFQ0tfVE9PTChHT0MsIGdjY2dvKQoraWYgdGVzdCAteiAiJEdPQyI7IHRoZW4KKyAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAgIEFDX0NIRUNLX1BST0coR09DLCBbJHthY190b29sX3ByZWZpeH1nY2Nnb10sIFske2FjX3Rvb2xfcHJlZml4fWdjY2dvXSkKKyAgZmkKK2ZpCitpZiB0ZXN0IC16ICIkR09DIjsgdGhlbgorICBBQ19DSEVDS19QUk9HKEdPQywgZ2NjZ28sIGdjY2dvLCBmYWxzZSkKK2ZpCitdKSNtNF9kZWZ1bgorXSkjbTRfaWZuZGVmCisKKwogIyBfTFRfTEFOR19ERUZBVUxUX0NPTkZJRwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogbTRfZGVmdW4oW19MVF9MQU5HX0RFRkFVTFRfQ09ORklHXSwKQEAgLTgyMSw2ICs4ODAsMTAgQEAKICAgICAgICBtNF9pZmRlZihbTFRfUFJPR19HQ0pdLAogCVttNF9kZWZpbmUoW0xUX1BST0dfR0NKXSwgZGVmbihbTFRfUFJPR19HQ0pdKVtMVF9MQU5HKEdDSildKV0pXSldKV0pCiAKK0FDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX0dPXSwKKyAgW0xUX0xBTkcoR08pXSwKKyAgW200X2RlZmluZShbQUNfUFJPR19HT10sIGRlZm4oW0FDX1BST0dfR09dKVtMVF9MQU5HKEdPKV0pXSkKKwogQUNfUFJPVklERV9JRkVMU0UoW0xUX1BST0dfUkNdLAogICBbTFRfTEFORyhSQyldLAogICBbbTRfZGVmaW5lKFtMVF9QUk9HX1JDXSwgZGVmbihbTFRfUFJPR19SQ10pW0xUX0xBTkcoUkMpXSldKQpAQCAtODMxLDExICs4OTQsMTMgQEAKIEFVX0RFRlVOKFtBQ19MSUJUT09MX0Y3N10sIFtMVF9MQU5HKEZvcnRyYW4gNzcpXSkKIEFVX0RFRlVOKFtBQ19MSUJUT09MX0ZDXSwgW0xUX0xBTkcoRm9ydHJhbildKQogQVVfREVGVU4oW0FDX0xJQlRPT0xfR0NKXSwgW0xUX0xBTkcoSmF2YSldKQorQVVfREVGVU4oW0FDX0xJQlRPT0xfUkNdLCBbTFRfTEFORyhXaW5kb3dzIFJlc291cmNlKV0pCiBkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CiBkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfQ1hYXSwgW10pCiBkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfRjc3XSwgW10pCiBkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfRkNdLCBbXSkKIGRubCBBQ19ERUZVTihbQUNfTElCVE9PTF9HQ0pdLCBbXSkKK2RubCBBQ19ERUZVTihbQUNfTElCVE9PTF9SQ10sIFtdKQogCiAKICMgX0xUX1RBR19DT01QSUxFUgpAQCAtOTIxLDcgKzk4NiwxMyBAQAogCSRMVENDICRMVENGTEFHUyAkTERGTEFHUyAtbyBsaWJjb25mdGVzdC5keWxpYiBcCiAJICAtZHluYW1pY2xpYiAtV2wsLXNpbmdsZV9tb2R1bGUgY29uZnRlc3QuYyAyPmNvbmZ0ZXN0LmVycgogICAgICAgICBfbHRfcmVzdWx0PSQ/Ci0JaWYgdGVzdCAtZiBsaWJjb25mdGVzdC5keWxpYiAmJiB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyICYmIHRlc3QgJF9sdF9yZXN1bHQgPSAwOyB0aGVuCisJIyBJZiB0aGVyZSBpcyBhIG5vbi1lbXB0eSBlcnJvciBsb2csIGFuZCAic2luZ2xlX21vZHVsZSIKKwkjIGFwcGVhcnMgaW4gaXQsIGFzc3VtZSB0aGUgZmxhZyBjYXVzZWQgYSBsaW5rZXIgd2FybmluZworICAgICAgICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVyciAmJiAkR1JFUCBzaW5nbGVfbW9kdWxlIGNvbmZ0ZXN0LmVycjsgdGhlbgorCSAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECisJIyBPdGhlcndpc2UsIGlmIHRoZSBvdXRwdXQgd2FzIGNyZWF0ZWQgd2l0aCBhIDAgZXhpdCBjb2RlIGZyb20KKwkjIHRoZSBjb21waWxlciwgaXQgd29ya2VkLgorCWVsaWYgdGVzdCAtZiBsaWJjb25mdGVzdC5keWxpYiAmJiB0ZXN0ICRfbHRfcmVzdWx0IC1lcSAwOyB0aGVuCiAJICBsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kPXllcwogCWVsc2UKIAkgIGNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRApAQCAtOTI5LDYgKzEwMDAsNyBAQAogCXJtIC1yZiBsaWJjb25mdGVzdC5keWxpYioKIAlybSAtZiBjb25mdGVzdC4qCiAgICAgICBmaV0pCisKICAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIC1leHBvcnRlZF9zeW1ib2xzX2xpc3QgbGlua2VyIGZsYWddLAogICAgICAgW2x0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdF0sCiAgICAgICBbbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0PW5vCkBAIC05NDAsNiArMTAxMiwzNCBAQAogCVtsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3Q9bm9dKQogCUxERkxBR1M9IiRzYXZlX0xERkxBR1MiCiAgICAgXSkKKworICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgLWZvcmNlX2xvYWQgbGlua2VyIGZsYWddLFtsdF9jdl9sZF9mb3JjZV9sb2FkXSwKKyAgICAgIFtsdF9jdl9sZF9mb3JjZV9sb2FkPW5vCisgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKK2ludCBmb3JjZWRfbG9hZGVkKCkgeyByZXR1cm4gMjt9CitfTFRfRU9GCisgICAgICBlY2hvICIkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKK2ludCBtYWluKCkgeyByZXR1cm4gMDt9CitfTFRfRU9GCisgICAgICBlY2hvICIkTFRDQyAkTFRDRkxBR1MgJExERkxBR1MgLW8gY29uZnRlc3QgY29uZnRlc3QuYyAtV2wsLWZvcmNlX2xvYWQsLi9saWJjb25mdGVzdC5hIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAkTFRDQyAkTFRDRkxBR1MgJExERkxBR1MgLW8gY29uZnRlc3QgY29uZnRlc3QuYyAtV2wsLWZvcmNlX2xvYWQsLi9saWJjb25mdGVzdC5hIDI+Y29uZnRlc3QuZXJyCisgICAgICBfbHRfcmVzdWx0PSQ/CisgICAgICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVyciAmJiAkR1JFUCBmb3JjZV9sb2FkIGNvbmZ0ZXN0LmVycjsgdGhlbgorCWNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgZWxpZiB0ZXN0IC1mIGNvbmZ0ZXN0ICYmIHRlc3QgJF9sdF9yZXN1bHQgLWVxIDAgJiYgJEdSRVAgZm9yY2VkX2xvYWQgY29uZnRlc3QgPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorCWx0X2N2X2xkX2ZvcmNlX2xvYWQ9eWVzCisgICAgICBlbHNlCisJY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICBmaQorICAgICAgICBybSAtZiBjb25mdGVzdC5lcnIgbGliY29uZnRlc3QuYSBjb25mdGVzdCBjb25mdGVzdC5jCisgICAgICAgIHJtIC1yZiBjb25mdGVzdC5kU1lNCisgICAgXSkKICAgICBjYXNlICRob3N0X29zIGluCiAgICAgcmhhcHNvZHkqIHwgZGFyd2luMS5bWzAxMl1dKQogICAgICAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LXVuZGVmaW5lZCAke3dsfXN1cHByZXNzJyA7OwpAQCAtOTY3LDcgKzEwNjcsNyBAQAogICAgIGVsc2UKICAgICAgIF9sdF9kYXJfZXhwb3J0X3N5bXM9J34kTk1FRElUIC1zICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW0gJHtsaWJ9JwogICAgIGZpCi0gICAgaWYgdGVzdCAiJERTWU1VVElMIiAhPSAiOiI7IHRoZW4KKyAgICBpZiB0ZXN0ICIkRFNZTVVUSUwiICE9ICI6IiAmJiB0ZXN0ICIkbHRfY3ZfbGRfZm9yY2VfbG9hZCIgPSAibm8iOyB0aGVuCiAgICAgICBfbHRfZHN5bXV0aWw9J34kRFNZTVVUSUwgJGxpYiB8fCA6JwogICAgIGVsc2UKICAgICAgIF9sdF9kc3ltdXRpbD0KQEAgLTk3Nyw4ICsxMDc3LDggQEAKIF0pCiAKIAotIyBfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFUwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFUyhbVEFHXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIENoZWNrcyBmb3IgbGlua2VyIGFuZCBjb21waWxlciBmZWF0dXJlcyBvbiBkYXJ3aW4KIG00X2RlZnVuKFtfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFU10sCiBbCkBAIC05ODcsNyArMTA4NywxMyBAQAogICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9eWVzCiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPXVuc3VwcG9ydGVkCi0gIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJworICBpZiB0ZXN0ICIkbHRfY3ZfbGRfZm9yY2VfbG9hZCIgPSAieWVzIjsgdGhlbgorICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlICR7d2x9LWZvcmNlX2xvYWQsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAnCisgICAgbTRfY2FzZShbJDFdLCBbRjc3XSwgW19MVF9UQUdWQVIoY29tcGlsZXJfbmVlZHNfb2JqZWN0LCAkMSk9eWVzXSwKKyAgICAgICAgICAgICAgICAgIFtGQ10sICBbX0xUX1RBR1ZBUihjb21waWxlcl9uZWVkc19vYmplY3QsICQxKT15ZXNdKQorICBlbHNlCisgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScnCisgIGZpCiAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwogICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9IiRfbHRfZGFyX2FsbG93X3VuZGVmaW5lZCIKICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTk5NSw3ICsxMTAxLDcgQEAKICAgICAgKikgX2x0X2Rhcl9jYW5fc2hhcmVkPSRHQ0MgOzsKICAgZXNhYwogICBpZiB0ZXN0ICIkX2x0X2Rhcl9jYW5fc2hhcmVkIiA9ICJ5ZXMiOyB0aGVuCi0gICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9ZWNobworICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPWZ1bmNfZWNob19hbGwKICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSJcJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyAkX2x0X2Rhcl9zaW5nbGVfbW9kJHtfbHRfZHN5bXV0aWx9IgogICAgIF9MVF9UQUdWQVIobW9kdWxlX2NtZHMsICQxKT0iXCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJHtfbHRfZHN5bXV0aWx9IgogICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSJzZWQgJ3MsXixfLCcgPCBcJGV4cG9ydF9zeW1ib2xzID4gXCRvdXRwdXRfb2JqZGlyL1wke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltflwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nICR7X2x0X2Rhcl9zaW5nbGVfbW9kfSR7X2x0X2Rhcl9leHBvcnRfc3ltc30ke19sdF9kc3ltdXRpbH0iCkBAIC0xMDExLDIwMyArMTExNywxNDIgQEAKICAgZmkKIF0pCiAKLSMgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoW1RBR05BTUVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIExpbmtzIGEgbWluaW1hbCBwcm9ncmFtIGFuZCBjaGVja3MgdGhlIGV4ZWN1dGFibGUKICMgZm9yIHRoZSBzeXN0ZW0gZGVmYXVsdCBoYXJkY29kZWQgbGlicmFyeSBwYXRoLiBJbiBtb3N0IGNhc2VzLAogIyB0aGlzIGlzIC91c3IvbGliOi9saWIsIGJ1dCB3aGVuIHRoZSBNUEkgY29tcGlsZXJzIGFyZSB1c2VkCiAjIHRoZSBsb2NhdGlvbiBvZiB0aGUgY29tbXVuaWNhdGlvbiBhbmQgTVBJIGxpYnMgYXJlIGluY2x1ZGVkIHRvby4KICMgSWYgd2UgZG9uJ3QgZmluZCBhbnl0aGluZywgdXNlIHRoZSBkZWZhdWx0IGxpYnJhcnkgcGF0aCBhY2NvcmRpbmcKICMgdG8gdGhlIGFpeCBsZCBtYW51YWwuCisjIFN0b3JlIHRoZSByZXN1bHRzIGZyb20gdGhlIGRpZmZlcmVudCBjb21waWxlcnMgZm9yIGVhY2ggVEFHTkFNRS4KKyMgQWxsb3cgdG8gb3ZlcnJpZGUgdGhlbSBmb3IgYWxsIHRhZ3MgdGhyb3VnaCBsdF9jdl9haXhfbGlicGF0aC4KIG00X2RlZnVuKFtfTFRfU1lTX01PRFVMRV9QQVRIX0FJWF0sCiBbbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKLUFDX0xJTktfSUZFTFNFKEFDX0xBTkdfUFJPR1JBTSxbCi1sdF9haXhfbGlicGF0aF9zZWQ9JwotICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLQkvXjAvIHsKLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0JICAgIHAKLQl9Ci0gICAgfScKLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLWZpXSxbXSkKLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQoraWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKK2Vsc2UKKyAgQUNfQ0FDSEVfVkFMKFtfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKV0sCisgIFtBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNXSxbCisgIGx0X2FpeF9saWJwYXRoX3NlZD0nWworICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworCSAgL14wLyB7CisJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKwkgICAgICBwCisJICB9CisgICAgICB9XScKKyAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKyAgaWYgdGVzdCAteiAiJF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pIjsgdGhlbgorICAgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorICBmaV0sW10pCisgIGlmIHRlc3QgLXogIiRfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKSI7IHRoZW4KKyAgICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT0iL3Vzci9saWI6L2xpYiIKKyAgZmkKKyAgXSkKKyAgYWl4X2xpYnBhdGg9JF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pCitmaQogXSkjIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCiAKIAogIyBfTFRfU0hFTExfSU5JVChBUkcpCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0KIG00X2RlZmluZShbX0xUX1NIRUxMX0lOSVRdLAotW2lmZGVmKFtBQ19ESVZFUlNJT05fTk9USUNFXSwKLQkgICAgIFtBQ19ESVZFUlRfUFVTSChBQ19ESVZFUlNJT05fTk9USUNFKV0sCi0JIFtBQ19ESVZFUlRfUFVTSChOT1RJQ0UpXSkKLSQxCi1BQ19ESVZFUlRfUE9QCi1dKSMgX0xUX1NIRUxMX0lOSVQKK1ttNF9kaXZlcnRfdGV4dChbTTRTSC1JTklUXSwgWyQxCitdKV0pIyBfTFRfU0hFTExfSU5JVAorCiAKIAogIyBfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBBZGQgc29tZSBjb2RlIHRvIHRoZSBzdGFydCBvZiB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyZSBzY3JpcHQgd2hpY2gKLSMgd2lsbCBmaW5kIGFuIGVjaG8gY29tbWFuZCB3aGljaCBkb2Vzbid0IGludGVycHJldCBiYWNrc2xhc2hlcy4KKyMgRmluZCBob3cgd2UgY2FuIGZha2UgYW4gZWNobyBjb21tYW5kIHRoYXQgZG9lcyBub3QgaW50ZXJwcmV0IGJhY2tzbGFzaC4KKyMgSW4gcGFydGljdWxhciwgd2l0aCBBdXRvY29uZiAyLjYwIG9yIGxhdGVyIHdlIGFkZCBzb21lIGNvZGUgdG8gdGhlIHN0YXJ0CisjIG9mIHRoZSBnZW5lcmF0ZWQgY29uZmlndXJlIHNjcmlwdCB3aGljaCB3aWxsIGZpbmQgYSBzaGVsbCB3aXRoIGEgYnVpbHRpbgorIyBwcmludGYgKHdoaWNoIHdlIGNhbiB1c2UgYXMgYW4gZWNobyBjb21tYW5kKS4KIG00X2RlZnVuKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0sCi1bX0xUX1NIRUxMX0lOSVQoWwotIyBDaGVjayB0aGF0IHdlIGFyZSBydW5uaW5nIHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLgotU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0KK1tFQ0hPPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcJworRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCitFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwogCi1jYXNlIFgkbHRfRUNITyBpbgotWCotLWZhbGxiYWNrLWVjaG8pCi0gICMgUmVtb3ZlIG9uZSBsZXZlbCBvZiBxdW90YXRpb24gKHdoaWNoIHdhcyByZXF1aXJlZCBmb3IgTWFrZSkuCi0gIEVDSE89YGVjaG8gIiRsdF9FQ0hPIiB8IHNlZCAncyxcXFxcXFskXVxcWyRdMCwnWyRdMCcsJ2AKLSAgOzsKK0FDX01TR19DSEVDS0lORyhbaG93IHRvIHByaW50IHN0cmluZ3NdKQorIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCitpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgIEVDSE89J3ByaW50IC1yIC0tJworZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgRUNITz0ncHJpbnRmICVzXG4nCitlbHNlCisgICMgVXNlIHRoaXMgZnVuY3Rpb24gYXMgYSBmYWxsYmFjayB0aGF0IGFsd2F5cyB3b3Jrcy4KKyAgZnVuY19mYWxsYmFja19lY2hvICgpCisgIHsKKyAgICBldmFsICdjYXQgPDxfTFRFQ0hPX0VPRgorJFtdMQorX0xURUNIT19FT0YnCisgIH0KKyAgRUNITz0nZnVuY19mYWxsYmFja19lY2hvJworZmkKKworIyBmdW5jX2VjaG9fYWxsIGFyZy4uLgorIyBJbnZva2UgJEVDSE8gd2l0aCBhbGwgYXJncywgc3BhY2Utc2VwYXJhdGVkLgorZnVuY19lY2hvX2FsbCAoKQoreworICAgICRFQ0hPICIkKiIgCit9CisKK2Nhc2UgIiRFQ0hPIiBpbgorICBwcmludGYqKSBBQ19NU0dfUkVTVUxUKFtwcmludGZdKSA7OworICBwcmludCopIEFDX01TR19SRVNVTFQoW3ByaW50IC1yXSkgOzsKKyAgKikgQUNfTVNHX1JFU1VMVChbY2F0XSkgOzsKIGVzYWMKIAotRUNITz0ke2x0X0VDSE8tZWNob30KLWlmIHRlc3QgIlhbJF0xIiA9IFgtLW5vLXJlZXhlYzsgdGhlbgotICAjIERpc2NhcmQgdGhlIC0tbm8tcmVleGVjIGZsYWcsIGFuZCBjb250aW51ZS4KLSAgc2hpZnQKLWVsaWYgdGVzdCAiWFskXTEiID0gWC0tZmFsbGJhY2stZWNobzsgdGhlbgotICAjIEF2b2lkIGlubGluZSBkb2N1bWVudCBoZXJlLCBpdCBtYXkgYmUgbGVmdCBvdmVyCi0gIDoKLWVsaWYgdGVzdCAiWGB7ICRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnIDsgdGhlbgotICAjIFlpcHBlZSwgJEVDSE8gd29ya3MhCi0gIDoKLWVsc2UKLSAgIyBSZXN0YXJ0IHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLgotICBleGVjICRTSEVMTCAiWyRdMCIgLS1uby1yZWV4ZWMgJHsxKyJbJF1AIn0KLWZpCittNF9pZmRlZihbX0FTX0RFVEVDVF9TVUdHRVNURURdLAorW19BU19ERVRFQ1RfU1VHR0VTVEVEKFsKKyAgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9JHtCQVNIX1ZFUlNJT04rc2V0fSIgfHwgKAorICAgIEVDSE89J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwnCisgICAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgICAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyAgICBQQVRIPS9lbXB0eSBGUEFUSD0vZW1wdHk7IGV4cG9ydCBQQVRIIEZQQVRICisgICAgdGVzdCAiWGBwcmludGYgJXMgJEVDSE9gIiA9ICJYJEVDSE8iIFwKKyAgICAgIHx8IHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE9gIiA9ICJYJEVDSE8iICldKV0pCiAKLWlmIHRlc3QgIlhbJF0xIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KLSAgIyB1c2VkIGFzIGZhbGxiYWNrIGVjaG8KLSAgc2hpZnQKLSAgY2F0IDw8X0xUX0VPRgotWyRdKgotX0xUX0VPRgotICBleGl0IDAKLWZpCi0KLSMgVGhlIEhQLVVYIGtzaCBhbmQgUE9TSVggc2hlbGwgcHJpbnQgdGhlIHRhcmdldCBkaXJlY3RvcnkgdG8gc3Rkb3V0Ci0jIGlmIENEUEFUSCBpcyBzZXQuCi0odW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQ0RQQVRICi0KLWlmIHRlc3QgLXogIiRsdF9FQ0hPIjsgdGhlbgotICBpZiB0ZXN0ICJYJHtlY2hvX3Rlc3Rfc3RyaW5nK3NldH0iICE9IFhzZXQ7IHRoZW4KLSAgICAjIGZpbmQgYSBzdHJpbmcgYXMgbGFyZ2UgYXMgcG9zc2libGUsIGFzIGxvbmcgYXMgdGhlIHNoZWxsIGNhbiBjb3BlIHdpdGggaXQKLSAgICBmb3IgY21kIGluICdzZWQgNTBxICJbJF0wIicgJ3NlZCAyMHEgIlskXTAiJyAnc2VkIDEwcSAiWyRdMCInICdzZWQgMnEgIlskXTAiJyAnZWNobyB0ZXN0JzsgZG8KLSAgICAgICMgZXhwZWN0ZWQgc2l6ZXM6IGxlc3MgdGhhbiAyS2IsIDFLYiwgNTEyIGJ5dGVzLCAxNiBieXRlcywgLi4uCi0gICAgICBpZiB7IGVjaG9fdGVzdF9zdHJpbmc9YGV2YWwgJGNtZGA7IH0gMj4vZGV2L251bGwgJiYKLQkgeyB0ZXN0ICJYJGVjaG9fdGVzdF9zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IH0gMj4vZGV2L251bGwKLSAgICAgIHRoZW4KLSAgICAgICAgYnJlYWsKLSAgICAgIGZpCi0gICAgZG9uZQotICBmaQotCi0gIGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgotICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWB7ICRFQ0hPICIkZWNob190ZXN0X3N0cmluZyI7IH0gMj4vZGV2L251bGxgICYmCi0gICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotICAgIDoKLSAgZWxzZQotICAgICMgVGhlIFNvbGFyaXMsIEFJWCwgYW5kIERpZ2l0YWwgVW5peCBkZWZhdWx0IGVjaG8gcHJvZ3JhbXMgdW5xdW90ZQotICAgICMgYmFja3NsYXNoZXMuICBUaGlzIG1ha2VzIGl0IGltcG9zc2libGUgdG8gcXVvdGUgYmFja3NsYXNoZXMgdXNpbmcKLSAgICAjICAgZWNobyAiJHNvbWV0aGluZyIgfCBzZWQgJ3MvXFwvXFxcXC9nJwotICAgICMKLSAgICAjIFNvLCBmaXJzdCB3ZSBsb29rIGZvciBhIHdvcmtpbmcgZWNobyBpbiB0aGUgdXNlcidzIFBBVEguCi0KLSAgICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKLSAgICBmb3IgZGlyIGluICRQQVRIIC91c3IvdWNiOyBkbwotICAgICAgSUZTPSIkbHRfc2F2ZV9pZnMiCi0gICAgICBpZiAodGVzdCAtZiAkZGlyL2VjaG8gfHwgdGVzdCAtZiAkZGlyL2VjaG8kYWNfZXhlZXh0KSAmJgotICAgICAgICAgdGVzdCAiWGAoJGRpci9lY2hvICdcdCcpIDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgotICAgICAgICAgZWNob190ZXN0aW5nX3N0cmluZz1gKCRkaXIvZWNobyAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKLSAgICAgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotICAgICAgICBFQ0hPPSIkZGlyL2VjaG8iCi0gICAgICAgIGJyZWFrCi0gICAgICBmaQotICAgIGRvbmUKLSAgICBJRlM9IiRsdF9zYXZlX2lmcyIKLQotICAgIGlmIHRlc3QgIlgkRUNITyIgPSBYZWNobzsgdGhlbgotICAgICAgIyBXZSBkaWRuJ3QgZmluZCBhIGJldHRlciBlY2hvLCBzbyBsb29rIGZvciBhbHRlcm5hdGl2ZXMuCi0gICAgICBpZiB0ZXN0ICJYYHsgcHJpbnQgLXIgJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKLSAgICAgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YHsgcHJpbnQgLXIgIiRlY2hvX3Rlc3Rfc3RyaW5nIjsgfSAyPi9kZXYvbnVsbGAgJiYKLSAgICAgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotICAgICAgICAjIFRoaXMgc2hlbGwgaGFzIGEgYnVpbHRpbiBwcmludCAtciB0aGF0IGRvZXMgdGhlIHRyaWNrLgotICAgICAgICBFQ0hPPSdwcmludCAtcicKLSAgICAgIGVsaWYgeyB0ZXN0IC1mIC9iaW4va3NoIHx8IHRlc3QgLWYgL2Jpbi9rc2gkYWNfZXhlZXh0OyB9ICYmCi0JICAgdGVzdCAiWCRDT05GSUdfU0hFTEwiICE9IFgvYmluL2tzaDsgdGhlbgotICAgICAgICAjIElmIHdlIGhhdmUga3NoLCB0cnkgcnVubmluZyBjb25maWd1cmUgYWdhaW4gd2l0aCBpdC4KLSAgICAgICAgT1JJR0lOQUxfQ09ORklHX1NIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9Ci0gICAgICAgIGV4cG9ydCBPUklHSU5BTF9DT05GSUdfU0hFTEwKLSAgICAgICAgQ09ORklHX1NIRUxMPS9iaW4va3NoCi0gICAgICAgIGV4cG9ydCBDT05GSUdfU0hFTEwKLSAgICAgICAgZXhlYyAkQ09ORklHX1NIRUxMICJbJF0wIiAtLW5vLXJlZXhlYyAkezErIlskXUAifQotICAgICAgZWxzZQotICAgICAgICAjIFRyeSB1c2luZyBwcmludGYuCi0gICAgICAgIEVDSE89J3ByaW50ZiAlc1xuJwotICAgICAgICBpZiB0ZXN0ICJYYHsgJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKLQkgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWB7ICRFQ0hPICIkZWNob190ZXN0X3N0cmluZyI7IH0gMj4vZGV2L251bGxgICYmCi0JICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0JICAjIENvb2wsIHByaW50ZiB3b3JrcwotCSAgOgotICAgICAgICBlbGlmIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkT1JJR0lOQUxfQ09ORklHX1NIRUxMICJbJF0wIiAtLWZhbGxiYWNrLWVjaG8gJ1x0JykgMj4vZGV2L251bGxgICYmCi0JICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gJ1hcdCcgJiYKLQkgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkT1JJR0lOQUxfQ09ORklHX1NIRUxMICJbJF0wIiAtLWZhbGxiYWNrLWVjaG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2L251bGxgICYmCi0JICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLQkgIENPTkZJR19TSEVMTD0kT1JJR0lOQUxfQ09ORklHX1NIRUxMCi0JICBleHBvcnQgQ09ORklHX1NIRUxMCi0JICBTSEVMTD0iJENPTkZJR19TSEVMTCIKLQkgIGV4cG9ydCBTSEVMTAotCSAgRUNITz0iJENPTkZJR19TSEVMTCBbJF0wIC0tZmFsbGJhY2stZWNobyIKLSAgICAgICAgZWxpZiBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJENPTkZJR19TSEVMTCAiWyRdMCIgLS1mYWxsYmFjay1lY2hvICdcdCcpIDI+L2Rldi9udWxsYCAmJgotCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICdYXHQnICYmCi0JICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJENPTkZJR19TSEVMTCAiWyRdMCIgLS1mYWxsYmFjay1lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgotCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0JICBFQ0hPPSIkQ09ORklHX1NIRUxMIFskXTAgLS1mYWxsYmFjay1lY2hvIgotICAgICAgICBlbHNlCi0JICAjIG1heWJlIHdpdGggYSBzbWFsbGVyIHN0cmluZy4uLgotCSAgcHJldj06Ci0KLQkgIGZvciBjbWQgaW4gJ2VjaG8gdGVzdCcgJ3NlZCAycSAiWyRdMCInICdzZWQgMTBxICJbJF0wIicgJ3NlZCAyMHEgIlskXTAiJyAnc2VkIDUwcSAiWyRdMCInOyBkbwotCSAgICBpZiB7IHRlc3QgIlgkZWNob190ZXN0X3N0cmluZyIgPSAiWGBldmFsICRjbWRgIjsgfSAyPi9kZXYvbnVsbAotCSAgICB0aGVuCi0JICAgICAgYnJlYWsKLQkgICAgZmkKLQkgICAgcHJldj0iJGNtZCIKLQkgIGRvbmUKLQotCSAgaWYgdGVzdCAiJHByZXYiICE9ICdzZWQgNTBxICJbJF0wIic7IHRoZW4KLQkgICAgZWNob190ZXN0X3N0cmluZz1gZXZhbCAkcHJldmAKLQkgICAgZXhwb3J0IGVjaG9fdGVzdF9zdHJpbmcKLQkgICAgZXhlYyAke09SSUdJTkFMX0NPTkZJR19TSEVMTC0ke0NPTkZJR19TSEVMTC0vYmluL3NofX0gIlskXTAiICR7MSsiWyRdQCJ9Ci0JICBlbHNlCi0JICAgICMgT29wcy4gIFdlIGxvc3QgY29tcGxldGVseSwgc28ganVzdCBzdGljayB3aXRoIGVjaG8uCi0JICAgIEVDSE89ZWNobwotCSAgZmkKLSAgICAgICAgZmkKLSAgICAgIGZpCi0gICAgZmkKLSAgZmkKLWZpCi0KLSMgQ29weSBlY2hvIGFuZCBxdW90ZSB0aGUgY29weSBzdWl0YWJseSBmb3IgcGFzc2luZyB0byBsaWJ0b29sIGZyb20KLSMgdGhlIE1ha2VmaWxlLCBpbnN0ZWFkIG9mIHF1b3RpbmcgdGhlIG9yaWdpbmFsLCB3aGljaCBpcyB1c2VkIGxhdGVyLgotbHRfRUNITz0kRUNITwotaWYgdGVzdCAiWCRsdF9FQ0hPIiA9ICJYJENPTkZJR19TSEVMTCBbJF0wIC0tZmFsbGJhY2stZWNobyI7IHRoZW4KLSAgIGx0X0VDSE89IiRDT05GSUdfU0hFTEwgXFxcJFxbJF0wIC0tZmFsbGJhY2stZWNobyIKLWZpCi0KLUFDX1NVQlNUKGx0X0VDSE8pCi1dKQogX0xUX0RFQ0woW10sIFtTSEVMTF0sIFsxXSwgW1NoZWxsIHRvIHVzZSB3aGVuIGludm9raW5nIHNoZWxsIHNjcmlwdHNdKQotX0xUX0RFQ0woW10sIFtFQ0hPXSwgWzFdLAotICAgIFtBbiBlY2hvIHByb2dyYW0gdGhhdCBkb2VzIG5vdCBpbnRlcnByZXQgYmFja3NsYXNoZXNdKQorX0xUX0RFQ0woW10sIFtFQ0hPXSwgWzFdLCBbQW4gZWNobyBwcm9ncmFtIHRoYXQgcHJvdGVjdHMgYmFja3NsYXNoZXNdKQogXSkjIF9MVF9QUk9HX0VDSE9fQkFDS1NMQVNICiAKIAorIyBfTFRfV0lUSF9TWVNST09UCisjIC0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtfTFRfV0lUSF9TWVNST09UXSwKK1tBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzeXNyb290XSkKK0FDX0FSR19XSVRIKFtzeXNyb290XSwKK1sgIC0td2l0aC1zeXNyb290Wz1ESVJdIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCisgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS5dLAorW10sIFt3aXRoX3N5c3Jvb3Q9bm9dKQorCitkbmwgbHRfc3lzcm9vdCB3aWxsIGFsd2F5cyBiZSBwYXNzZWQgdW5xdW90ZWQuICBXZSBxdW90ZSBpdCBoZXJlCitkbmwgaW4gY2FzZSB0aGUgdXNlciBwYXNzZWQgYSBkaXJlY3RvcnkgbmFtZS4KK2x0X3N5c3Jvb3Q9CitjYXNlICR7d2l0aF9zeXNyb290fSBpbiAjKAorIHllcykKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisgICBmaQorICAgOzsgIygKKyAvKikKKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKyAgIDs7ICMoCisgbm98JycpCisgICA7OyAjKAorICopCisgICBBQ19NU0dfUkVTVUxUKFske3dpdGhfc3lzcm9vdH1dKQorICAgQUNfTVNHX0VSUk9SKFtUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguXSkKKyAgIDs7Citlc2FjCisKKyBBQ19NU0dfUkVTVUxUKFske2x0X3N5c3Jvb3Q6LW5vfV0pCitfTFRfREVDTChbXSwgW2x0X3N5c3Jvb3RdLCBbMF0sIFtUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIF1kbmwKK1tkZXBlbmRlbnQgbGlicmFyaWVzLCBhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLl0pXSkKKwogIyBfTFRfRU5BQkxFX0xPQ0sKICMgLS0tLS0tLS0tLS0tLS0tCiBtNF9kZWZ1bihbX0xUX0VOQUJMRV9MT0NLXSwKQEAgLTEyMzYsNyArMTI4MSw3IEBACiAgIDs7CiAqLSotaXJpeDYqKQogICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCi0gIGVjaG8gJ1sjXWxpbmUgX19vbGluZV9fICJjb25maWd1cmUiJyA+IGNvbmZ0ZXN0LiRhY19leHQKKyAgZWNobyAnWyNdbGluZSAnJExJTkVOTycgImNvbmZpZ3VyZSInID4gY29uZnRlc3QuJGFjX2V4dAogICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgogICAgIGlmIHRlc3QgIiRsdF9jdl9wcm9nX2dudV9sZCIgPSB5ZXM7IHRoZW4KICAgICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3QuJGFjX29iamV4dGAgaW4KQEAgLTEzMjksMTQgKzEzNzQsMjcgQEAKICAgICBDRkxBR1M9IiRTQVZFX0NGTEFHUyIKICAgZmkKICAgOzsKLXNwYXJjKi0qc29sYXJpcyopCisqLSpzb2xhcmlzKikKICAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgogICBlY2hvICdpbnQgaTsnID4gY29uZnRlc3QuJGFjX2V4dAogICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgogICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3Qub2AgaW4KICAgICAqNjQtYml0KikKICAgICAgIGNhc2UgJGx0X2N2X3Byb2dfZ251X2xkIGluCi0gICAgICB5ZXMqKSBMRD0iJHtMRC1sZH0gLW0gZWxmNjRfc3BhcmMiIDs7CisgICAgICB5ZXMqKQorICAgICAgICBjYXNlICRob3N0IGluCisgICAgICAgIGk/ODYtKi1zb2xhcmlzKikKKyAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX3g4Nl82NCIKKyAgICAgICAgICA7OworICAgICAgICBzcGFyYyotKi1zb2xhcmlzKikKKyAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmNjRfc3BhcmMiCisgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICAjIEdOVSBsZCAyLjIxIGludHJvZHVjZWQgX3NvbDIgZW11bGF0aW9ucy4gIFVzZSB0aGVtIGlmIGF2YWlsYWJsZS4KKyAgICAgICAgaWYgJHtMRC1sZH0gLVYgfCBncmVwIF9zb2wyID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgICAgIExEPSIke0xELWxkfV9zb2wyIgorICAgICAgICBmaQorICAgICAgICA7OwogICAgICAgKikKIAlpZiAke0xELWxkfSAtNjQgLXIgLW8gY29uZnRlc3QyLm8gY29uZnRlc3QubyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KIAkgIExEPSIke0xELWxkfSAtNjQiCkBAIC0xMzU0LDE0ICsxNDEyLDQ3IEBACiBdKSMgX0xUX0VOQUJMRV9MT0NLCiAKIAorIyBfTFRfUFJPR19BUgorIyAtLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9QUk9HX0FSXSwKK1tBQ19DSEVDS19UT09MUyhBUiwgW2FyXSwgZmFsc2UpCis6ICR7QVI9YXJ9Cis6ICR7QVJfRkxBR1M9Y3J1fQorX0xUX0RFQ0woW10sIFtBUl0sIFsxXSwgW1RoZSBhcmNoaXZlcl0pCitfTFRfREVDTChbXSwgW0FSX0ZMQUdTXSwgWzFdLCBbRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmVdKQorCitBQ19DQUNIRV9DSEVDSyhbZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnRdLCBbbHRfY3ZfYXJfYXRfZmlsZV0sCisgIFtsdF9jdl9hcl9hdF9maWxlPW5vCisgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNXSwKKyAgICAgW2VjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JkFTX01FU1NBR0VfTE9HX0ZEJworICAgICAgQUNfVFJZX0VWQUwoW2x0X2FyX3RyeV0pCisgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCisJQUNfVFJZX0VWQUwoW2x0X2FyX3RyeV0pCisJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKyAgICAgXSkKKyAgXSkKKworaWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorICBhcmNoaXZlcl9saXN0X3NwZWM9CitlbHNlCisgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorZmkKK19MVF9ERUNMKFtdLCBbYXJjaGl2ZXJfbGlzdF9zcGVjXSwgWzFdLAorICBbSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyXSkKK10pIyBfTFRfUFJPR19BUgorCisKICMgX0xUX0NNRF9PTERfQVJDSElWRQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tCiBtNF9kZWZ1bihbX0xUX0NNRF9PTERfQVJDSElWRV0sCi1bQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIGZhbHNlKQotdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLV9MVF9ERUNMKFtdLCBbQVJdLCBbMV0sIFtUaGUgYXJjaGl2ZXJdKQotX0xUX0RFQ0woW10sIFtBUl9GTEFHU10sIFsxXSkKK1tfTFRfUFJPR19BUgogCiBBQ19DSEVDS19UT09MKFNUUklQLCBzdHJpcCwgOikKIHRlc3QgLXogIiRTVFJJUCIgJiYgU1RSSVA9OgpAQCAtMTM4MCwxOCArMTQ3MSwyNyBAQAogaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KICAgY2FzZSAkaG9zdF9vcyBpbgogICBvcGVuYnNkKikKLSAgICBvbGRfcG9zdGluc3RhbGxfY21kcz0iJG9sZF9wb3N0aW5zdGFsbF9jbWRzflwkUkFOTElCIC10IFwkb2xkbGliIgorICAgIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSIkb2xkX3Bvc3RpbnN0YWxsX2NtZHN+XCRSQU5MSUIgLXQgXCR0b29sX29sZGxpYiIKICAgICA7OwogICAqKQotICAgIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSIkb2xkX3Bvc3RpbnN0YWxsX2NtZHN+XCRSQU5MSUIgXCRvbGRsaWIiCisgICAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9IiRvbGRfcG9zdGluc3RhbGxfY21kc35cJFJBTkxJQiBcJHRvb2xfb2xkbGliIgogICAgIDs7CiAgIGVzYWMKLSAgb2xkX2FyY2hpdmVfY21kcz0iJG9sZF9hcmNoaXZlX2NtZHN+XCRSQU5MSUIgXCRvbGRsaWIiCisgIG9sZF9hcmNoaXZlX2NtZHM9IiRvbGRfYXJjaGl2ZV9jbWRzflwkUkFOTElCIFwkdG9vbF9vbGRsaWIiCiBmaQorCitjYXNlICRob3N0X29zIGluCisgIGRhcndpbiopCisgICAgbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uPXllcyA7OworICAqKQorICAgIGxvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbj1ubyA7OworZXNhYwogX0xUX0RFQ0woW10sIFtvbGRfcG9zdGluc3RhbGxfY21kc10sIFsyXSkKIF9MVF9ERUNMKFtdLCBbb2xkX3Bvc3R1bmluc3RhbGxfY21kc10sIFsyXSkKIF9MVF9UQUdERUNMKFtdLCBbb2xkX2FyY2hpdmVfY21kc10sIFsyXSwKICAgICBbQ29tbWFuZHMgdXNlZCB0byBidWlsZCBhbiBvbGQtc3R5bGUgYXJjaGl2ZV0pCitfTFRfREVDTChbXSwgW2xvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbl0sIFswXSwKKyAgICBbV2hldGhlciB0byB1c2UgYSBsb2NrIGZvciBvbGQgYXJjaGl2ZSBleHRyYWN0aW9uXSkKIF0pIyBfTFRfQ01EX09MRF9BUkNISVZFCiAKIApAQCAtMTQxNiwxNSArMTUxNiwxNSBAQAogICAgLWUgJ3M6LipGTEFHU31cezAsMVx9IDomJGx0X2NvbXBpbGVyX2ZsYWcgOjsgdCcgXAogICAgLWUgJ3M6IFtbXiBdXSpjb25mdGVzdFwuOiAkbHRfY29tcGlsZXJfZmxhZyY6OyB0JyBcCiAgICAtZSAnczokOiAkbHRfY29tcGlsZXJfZmxhZzonYAotICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOl9fb2xpbmVfXzogJGx0X2NvbXBpbGVcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKKyAgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiAkbHRfY29tcGlsZVwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQogICAgKGV2YWwgIiRsdF9jb21waWxlIiAyPmNvbmZ0ZXN0LmVycikKICAgIGFjX3N0YXR1cz0kPwogICAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECi0gICBlY2hvICIkYXNfbWU6X19vbGluZV9fOiBcJD8gPSAkYWNfc3RhdHVzIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiZBU19NRVNTQUdFX0xPR19GRAogICAgaWYgKGV4aXQgJGFjX3N0YXR1cykgJiYgdGVzdCAtcyAiJGFjX291dGZpbGUiOyB0aGVuCiAgICAgICMgVGhlIGNvbXBpbGVyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCiAgICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncyBvdGhlciB0aGFuIHRoZSB1c3VhbCBvdXRwdXQuCi0gICAgICRFQ0hPICJYJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID5jb25mdGVzdC5leHAKKyAgICAgJEVDSE8gIiRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFNFRCAnL14kL2QnID5jb25mdGVzdC5leHAKICAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIyCiAgICAgIGlmIHRlc3QgISAtcyBjb25mdGVzdC5lcjIgfHwgZGlmZiBjb25mdGVzdC5leHAgY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KICAgICAgICAkMj15ZXMKQEAgLTE0NjQsNyArMTU2NCw3IEBACiAgICAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCiAgICAgICAgIyBBcHBlbmQgYW55IGVycm9ycyB0byB0aGUgY29uZmlnLmxvZy4KICAgICAgICBjYXQgY29uZnRlc3QuZXJyIDE+JkFTX01FU1NBR0VfTE9HX0ZECi0gICAgICAgJEVDSE8gIlgkX2x0X2xpbmtlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID4gY29uZnRlc3QuZXhwCisgICAgICAgJEVDSE8gIiRfbHRfbGlua2VyX2JvaWxlcnBsYXRlIiB8ICRTRUQgJy9eJC9kJyA+IGNvbmZ0ZXN0LmV4cAogICAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMgogICAgICAgIGlmIGRpZmYgY29uZnRlc3QuZXhwIGNvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgICAkMj15ZXMKQEAgLTE1MjcsNiArMTYyNywxMSBAQAogICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj04MTkyOwogICAgIDs7CiAKKyAgbWludCopCisgICAgIyBPbiBNaU5UIHRoaXMgY2FuIHRha2UgYSBsb25nIHRpbWUgYW5kIHJ1biBvdXQgb2YgbWVtb3J5LgorICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj04MTkyOworICAgIDs7CisKICAgYW1pZ2FvcyopCiAgICAgIyBPbiBBbWlnYU9TIHdpdGggcGRrc2gsIHRoaXMgdGVzdCB0YWtlcyBob3VycywgbGl0ZXJhbGx5LgogICAgICMgU28gd2UganVzdCBwdW50IGFuZCB1c2UgYSBtaW5pbXVtIGxpbmUgbGVuZ3RoIG9mIDgxOTIuCkBAIC0xNTUyLDYgKzE2NTcsMTEgQEAKICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49MTk2NjA4CiAgICAgOzsKIAorICBvczIqKQorICAgICMgVGhlIHRlc3QgdGFrZXMgYSBsb25nIHRpbWUgb24gT1MvMi4KKyAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49ODE5MgorICAgIDs7CisKICAgb3NmKikKICAgICAjIERyLiBIYW5zIEVra2VoYXJkIFBsZXNzZXIgcmVwb3J0cyBzZWVpbmcgYSBrZXJuZWwgcGFuaWMgcnVubmluZyBjb25maWd1cmUKICAgICAjIGR1ZSB0byB0aGlzIHRlc3Qgd2hlbiBleGVjX2Rpc2FibGVfYXJnX2xpbWl0IGlzIDEgb24gVHJ1NjQuIEl0IGlzIG5vdApAQCAtMTU5MSw4ICsxNzAxLDggQEAKICAgICAgICMgSWYgdGVzdCBpcyBub3QgYSBzaGVsbCBidWlsdC1pbiwgd2UnbGwgcHJvYmFibHkgZW5kIHVwIGNvbXB1dGluZyBhCiAgICAgICAjIG1heGltdW0gbGVuZ3RoIHRoYXQgaXMgb25seSBoYWxmIG9mIHRoZSBhY3R1YWwgbWF4aW11bSBsZW5ndGgsIGJ1dAogICAgICAgIyB3ZSBjYW4ndCB0ZWxsLgotICAgICAgd2hpbGUgeyB0ZXN0ICJYImAkU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8gIlgkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIiAyPi9kZXYvbnVsbGAgXAotCSAgICAgICAgID0gIlhYJHRlc3RzdHJpbmckdGVzdHN0cmluZyI7IH0gPi9kZXYvbnVsbCAyPiYxICYmCisgICAgICB3aGlsZSB7IHRlc3QgIlgiYGVudiBlY2hvICIkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIiAyPi9kZXYvbnVsbGAgXAorCSAgICAgICAgID0gIlgkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIjsgfSA+L2Rldi9udWxsIDI+JjEgJiYKIAkgICAgICB0ZXN0ICRpICE9IDE3ICMgMS8yIE1CIHNob3VsZCBiZSBlbm91Z2gKICAgICAgIGRvCiAgICAgICAgIGk9YGV4cHIgJGkgKyAxYApAQCAtMTY0Myw3ICsxNzUzLDcgQEAKICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgogICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotWyNsaW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIgorWyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaWYgSEFWRV9ETEZDTl9ICkBAIC0xNjg0LDcgKzE3OTQsMTMgQEAKICMgIGVuZGlmCiAjZW5kaWYKIAotdm9pZCBmbm9yZCgpIHsgaW50IGk9NDI7fQorLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCitpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisjZW5kaWYKKworaW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CiBpbnQgbWFpbiAoKQogewogICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKQEAgLTE2OTMsNyArMTgwOSwxMSBAQAogICBpZiAoc2VsZikKICAgICB7CiAgICAgICBpZiAoZGxzeW0gKHNlbGYsImZub3JkIikpICAgICAgIHN0YXR1cyA9ICRsdF9kbG5vX3VzY29yZTsKLSAgICAgIGVsc2UgaWYgKGRsc3ltKCBzZWxmLCJfZm5vcmQiKSkgc3RhdHVzID0gJGx0X2RsbmVlZF91c2NvcmU7CisgICAgICBlbHNlCisgICAgICAgIHsKKwkgIGlmIChkbHN5bSggc2VsZiwiX2Zub3JkIikpICBzdGF0dXMgPSAkbHRfZGxuZWVkX3VzY29yZTsKKyAgICAgICAgICBlbHNlIHB1dHMgKGRsZXJyb3IgKCkpOworCX0KICAgICAgIC8qIGRsY2xvc2UgKHNlbGYpOyAqLwogICAgIH0KICAgZWxzZQpAQCAtMTg2OSwxNiArMTk4OSwxNiBAQAogICAgLWUgJ3M6LipGTEFHU31cezAsMVx9IDomJGx0X2NvbXBpbGVyX2ZsYWcgOjsgdCcgXAogICAgLWUgJ3M6IFtbXiBdXSpjb25mdGVzdFwuOiAkbHRfY29tcGlsZXJfZmxhZyY6OyB0JyBcCiAgICAtZSAnczokOiAkbHRfY29tcGlsZXJfZmxhZzonYAotICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOl9fb2xpbmVfXzogJGx0X2NvbXBpbGVcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKKyAgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiAkbHRfY29tcGlsZVwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQogICAgKGV2YWwgIiRsdF9jb21waWxlIiAyPm91dC9jb25mdGVzdC5lcnIpCiAgICBhY19zdGF0dXM9JD8KICAgIGNhdCBvdXQvY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgIGVjaG8gIiRhc19tZTpfX29saW5lX186IFwkPyA9ICRhY19zdGF0dXMiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JkFTX01FU1NBR0VfTE9HX0ZECiAgICBpZiAoZXhpdCAkYWNfc3RhdHVzKSAmJiB0ZXN0IC1zIG91dC9jb25mdGVzdDIuJGFjX29iamV4dAogICAgdGhlbgogICAgICAjIFRoZSBjb21waWxlciBjYW4gb25seSB3YXJuIGFuZCBpZ25vcmUgdGhlIG9wdGlvbiBpZiBub3QgcmVjb2duaXplZAogICAgICAjIFNvIHNheSBubyBpZiB0aGVyZSBhcmUgd2FybmluZ3MKLSAgICAgJEVDSE8gIlgkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRYc2VkIC1lICcvXiQvZCcgPiBvdXQvY29uZnRlc3QuZXhwCisgICAgICRFQ0hPICIkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRTRUQgJy9eJC9kJyA+IG91dC9jb25mdGVzdC5leHAKICAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIG91dC9jb25mdGVzdC5lcnIgPm91dC9jb25mdGVzdC5lcjIKICAgICAgaWYgdGVzdCAhIC1zIG91dC9jb25mdGVzdC5lcjIgfHwgZGlmZiBvdXQvY29uZnRlc3QuZXhwIG91dC9jb25mdGVzdC5lcjIgPi9kZXYvbnVsbDsgdGhlbgogICAgICAgIF9MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9jX28sICQxKT15ZXMKQEAgLTIwMzcsNiArMjE1Nyw3IEBACiBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKIG00X3JlcXVpcmUoW19MVF9ERUNMX09CSkRVTVBdKWRubAogbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKK200X3JlcXVpcmUoW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10pZG5sCiBBQ19NU0dfQ0hFQ0tJTkcoW2R5bmFtaWMgbGlua2VyIGNoYXJhY3RlcmlzdGljc10pCiBtNF9pZihbJDFdLAogCVtdLCBbCkBAIC0yMDQ1LDE2ICsyMTY2LDIzIEBACiAgICAgZGFyd2luKikgbHRfYXdrX2FyZz0iL15saWJyYXJpZXM6LywvTFIvIiA7OwogICAgICopIGx0X2F3a19hcmc9Ii9ebGlicmFyaWVzOi8iIDs7CiAgIGVzYWMKLSAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJENDIC1wcmludC1zZWFyY2gtZGlycyB8IGF3ayAkbHRfYXdrX2FyZyB8ICRTRUQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgInMsPS8sLyxnImAKLSAgaWYgJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7JyA+L2Rldi9udWxsIDsgdGhlbgorICBjYXNlICRob3N0X29zIGluCisgICAgbWluZ3cqIHwgY2VnY2MqKSBsdF9zZWRfc3RyaXBfZXE9InMsPVwoW1tBLVphLXpdXTpcKSxcMSxnIiA7OworICAgICopIGx0X3NlZF9zdHJpcF9lcT0icyw9LywvLGciIDs7CisgIGVzYWMKKyAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJENDIC1wcmludC1zZWFyY2gtZGlycyB8IGF3ayAkbHRfYXdrX2FyZyB8ICRTRUQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgJGx0X3NlZF9zdHJpcF9lcWAKKyAgY2FzZSAkbHRfc2VhcmNoX3BhdGhfc3BlYyBpbgorICAqXDsqKQogICAgICMgaWYgdGhlIHBhdGggY29udGFpbnMgIjsiIHRoZW4gd2UgYXNzdW1lIGl0IHRvIGJlIHRoZSBzZXBhcmF0b3IKICAgICAjIG90aGVyd2lzZSBkZWZhdWx0IHRvIHRoZSBzdGFuZGFyZCBwYXRoIHNlcGFyYXRvciAoaS5lLiAiOiIpIC0gaXQgaXMKICAgICAjIGFzc3VtZWQgdGhhdCBubyBwYXJ0IG9mIGEgbm9ybWFsIHBhdGhuYW1lIGNvbnRhaW5zICI7IiBidXQgdGhhdCBzaG91bGQKICAgICAjIG9rYXkgaW4gdGhlIHJlYWwgd29ybGQgd2hlcmUgIjsiIGluIGRpcnBhdGhzIGlzIGl0c2VsZiBwcm9ibGVtYXRpYy4KLSAgICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0gIGVsc2UKLSAgICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0gIGZpCisgICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgJ3MvOy8gL2cnYAorICAgIDs7CisgICopCisgICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisgICAgOzsKKyAgZXNhYwogICAjIE9rLCBub3cgd2UgaGF2ZSB0aGUgcGF0aCwgc2VwYXJhdGVkIGJ5IHNwYWNlcywgd2UgY2FuIHN0ZXAgdGhyb3VnaCBpdAogICAjIGFuZCBhZGQgbXVsdGlsaWIgZGlyIGlmIG5lY2Vzc2FyeS4KICAgbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWM9CkBAIC0yMDY3LDcgKzIxOTUsNyBAQAogCWx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPSIkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMgJGx0X3N5c19wYXRoIgogICAgIGZpCiAgIGRvbmUKLSAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjIHwgYXdrICcKKyAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCBhd2sgJwogQkVHSU4ge1JTPSIgIjsgRlM9Ii98XG4iO30gewogICBsdF9mb289IiI7CiAgIGx0X2NvdW50PTA7CkBAIC0yMDg3LDcgKzIyMTUsMTMgQEAKICAgaWYgKGx0X2ZvbyAhPSAiIikgeyBsdF9mcmVxW1tsdF9mb29dXSsrOyB9CiAgIGlmIChsdF9mcmVxW1tsdF9mb29dXSA9PSAxKSB7IHByaW50IGx0X2ZvbzsgfQogfSdgCi0gIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gJGx0X3NlYXJjaF9wYXRoX3NwZWNgCisgICMgQVdLIHByb2dyYW0gYWJvdmUgZXJyb25lb3VzbHkgcHJlcGVuZHMgJy8nIHRvIEM6L2Rvcy9wYXRocworICAjIGZvciB0aGVzZSBob3N0cy4KKyAgY2FzZSAkaG9zdF9vcyBpbgorICAgIG1pbmd3KiB8IGNlZ2NjKikgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8XAorICAgICAgJFNFRCAncywvXChbW0EtWmEtel1dOlwpLFwxLGcnYCA7OworICBlc2FjCisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRsdF9OTDJTUGAKIGVsc2UKICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvbGliIC91c3IvbGliIC91c3IvbG9jYWwvbGliIgogZmldKQpAQCAtMjExMyw3ICsyMjQ3LDcgQEAKIAogY2FzZSAkaG9zdF9vcyBpbgogYWl4MyopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAkbGlibmFtZS5hJwogICBzaGxpYnBhdGhfdmFyPUxJQlBBVEgKIApAQCAtMjEyMiw3ICsyMjU2LDcgQEAKICAgOzsKIAogYWl4W1s0LTldXSopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgaGFyZGNvZGVfaW50b19saWJzPXllcwpAQCAtMjE3NSw3ICsyMzA5LDcgQEAKICAgbTY4aykKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLml4bGlicmFyeSAkbGlibmFtZS5hJwogICAgICMgQ3JlYXRlICR7bGlibmFtZX1faXhsaWJyYXJ5LmEgZW50cmllcyBpbiAvc3lzL2xpYnMuCi0gICAgZmluaXNoX2V2YWw9J2ZvciBsaWIgaW4gYGxzICRsaWJkaXIvKi5peGxpYnJhcnkgMj4vZGV2L251bGxgOyBkbyBsaWJuYW1lPWAkRUNITyAiWCRsaWIiIHwgJFhzZWQgLWUgJ1wnJ3MlXi4qL1woW1teL11dKlwpXC5peGxpYnJhcnkkJVwxJSdcJydgOyB0ZXN0ICRSTSAvc3lzL2xpYnMvJHtsaWJuYW1lfV9peGxpYnJhcnkuYTsgJHNob3cgImNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEiOyBjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIHx8IGV4aXQgMTsgZG9uZScKKyAgICBmaW5pc2hfZXZhbD0nZm9yIGxpYiBpbiBgbHMgJGxpYmRpci8qLml4bGlicmFyeSAyPi9kZXYvbnVsbGA7IGRvIGxpYm5hbWU9YGZ1bmNfZWNob19hbGwgIiRsaWIiIHwgJFNFRCAnXCcncyVeLiovXChbW14vXV0qXClcLml4bGlicmFyeSQlXDElJ1wnJ2A7IHRlc3QgJFJNIC9zeXMvbGlicy8ke2xpYm5hbWV9X2l4bGlicmFyeS5hOyAkc2hvdyAiY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSI7IGNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEgfHwgZXhpdCAxOyBkb25lJwogICAgIDs7CiAgIGVzYWMKICAgOzsKQEAgLTIxODcsNyArMjMyMSw3IEBACiAgIDs7CiAKIGJzZGlbWzQ1XV0qKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCiAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCkBAIC0yMjA2LDggKzIzNDAsOSBAQAogICBuZWVkX3ZlcnNpb249bm8KICAgbmVlZF9saWJfcHJlZml4PW5vCiAKLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKyAgeWVzLCopCisgICAgIyBnY2MKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwogICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KQEAgLTIyMjgsMzYgKzIzNjMsODMgQEAKICAgICBjeWd3aW4qKQogICAgICAgIyBDeWd3aW4gRExMcyB1c2UgJ2N5ZycgcHJlZml4IHJhdGhlciB0aGFuICdsaWInCiAgICAgICBzb25hbWVfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL2N5Zy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIgL2xpYi93MzJhcGkgL2xpYiAvdXNyL2xvY2FsL2xpYiIKK200X2lmKFskMV0sIFtdLFsKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAvdXNyL2xpYi93MzJhcGkiXSkKICAgICAgIDs7CiAgICAgbWluZ3cqIHwgY2VnY2MqKQogICAgICAgIyBNaW5HVyBETExzIHVzZSB0cmFkaXRpb25hbCAnbGliJyBwcmVmaXgKICAgICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkQ0MgLXByaW50LXNlYXJjaC1kaXJzIHwgJEdSRVAgIl5saWJyYXJpZXM6IiB8ICRTRUQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgInMsPS8sLyxnImAKLSAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IFskR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGxdOyB0aGVuCi0gICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEggcHJpbnRlZCBieQotICAgICAgICAjIG1pbmd3IGdjYywgYnV0IHdlIGFyZSBydW5uaW5nIG9uIEN5Z3dpbi4gR2NjIHByaW50cyBpdHMgc2VhcmNoCi0gICAgICAgICMgcGF0aCB3aXRoIDsgc2VwYXJhdG9ycywgYW5kIHdpdGggZHJpdmUgbGV0dGVycy4gV2UgY2FuIGhhbmRsZSB0aGUKLSAgICAgICAgIyBkcml2ZSBsZXR0ZXJzIChjeWd3aW4gZmlsZXV0aWxzIHVuZGVyc3RhbmRzIHRoZW0pLCBzbyBsZWF2ZSB0aGVtLAotICAgICAgICAjIGVzcGVjaWFsbHkgYXMgd2UgbWlnaHQgcGFzcyBmaWxlcyBmb3VuZCB0aGVyZSB0byBhIG1pbmd3IG9iamR1bXAsCi0gICAgICAgICMgd2hpY2ggd291bGRuJ3QgdW5kZXJzdGFuZCBhIGN5Z3dpbmlmaWVkIHBhdGguIEFoaC4KLSAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSAgICAgIGVsc2UKLSAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSAgICAgIGZpCiAgICAgICA7OwogICAgIHB3MzIqKQogICAgICAgIyBwdzMyIERMTHMgdXNlICdwdycgcHJlZml4IHJhdGhlciB0aGFuICdsaWInCiAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKICAgICAgIDs7CiAgICAgZXNhYworICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgOzsKKworICAqLGNsKikKKyAgICAjIE5hdGl2ZSBNU1ZDCisgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKworICAgIGNhc2UgJGJ1aWxkX29zIGluCisgICAgbWluZ3cqKQorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorICAgICAgbHRfc2F2ZV9pZnM9JElGUworICAgICAgSUZTPSc7JworICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorICAgICAgZG8KKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorICAgICAgZG9uZQorICAgICAgSUZTPSRsdF9zYXZlX2lmcworICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFtbYS16QS1aXV1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorICAgICAgOzsKKyAgICBjeWd3aW4qKQorICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisgICAgICA7OworICAgICopCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBbJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsXTsgdGhlbgorICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorICAgICAgZWxzZQorICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisgICAgICBmaQorICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisgICAgICA7OworICAgIGVzYWMKKworICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKyAgICAgICAkUk0gXCRkbHBhdGgnCisgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKICAgICA7OwogCiAgICopCisgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCiAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwogICAgIDs7CiAgIGVzYWMKLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCiAgIHNobGlicGF0aF92YXI9UEFUSAogICA7OwpAQCAtMjI3OCw3ICsyNDYwLDcgQEAKICAgOzsKIAogZGd1eCopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JwpAQCAtMjI4NiwxMCArMjQ2OCw2IEBACiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIDs7CiAKLWZyZWVic2QxKikKLSAgZHluYW1pY19saW5rZXI9bm8KLSAgOzsKLQogZnJlZWJzZCogfCBkcmFnb25mbHkqKQogICAjIERyYWdvbkZseSBkb2VzIG5vdCBoYXZlIGFvdXQuICBXaGVuL2lmIHRoZXkgaW1wbGVtZW50IGEgbmV3CiAgICMgdmVyc2lvbmluZyBtZWNoYW5pc20sIGFkanVzdCB0aGlzLgpAQCAtMjI5Nyw3ICsyNDc1LDcgQEAKICAgICBvYmpmb3JtYXQ9YC91c3IvYmluL29iamZvcm1hdGAKICAgZWxzZQogICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICBmcmVlYnNkW1sxMjNdXSopIG9iamZvcm1hdD1hb3V0IDs7CisgICAgZnJlZWJzZFtbMjNdXS4qKSBvYmpmb3JtYXQ9YW91dCA7OwogICAgICopIG9iamZvcm1hdD1lbGYgOzsKICAgICBlc2FjCiAgIGZpCkBAIC0yMzE1LDcgKzI0OTMsNyBAQAogICBlc2FjCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgZnJlZWJzZDIqKQorICBmcmVlYnNkMi4qKQogICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgICA7OwogICBmcmVlYnNkMy5bWzAxXV0qIHwgZnJlZWJzZGVsZjMuW1swMV1dKikKQEAgLTIzMzUsMTIgKzI1MTMsMjYgQEAKICAgOzsKIAogZ251KikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHttYWpvcn0gJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCiAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgIDs7CisKK2hhaWt1KikKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgorICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPW5vCisgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBydW50aW1lX2xvYWRlciIKKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR7bWFqb3J9ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAgIDs7CiAKQEAgLTIzODYsMTIgKzI1NzgsMTQgQEAKICAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICAgIDs7CiAgIGVzYWMKLSAgIyBIUC1VWCBydW5zICpyZWFsbHkqIHNsb3dseSB1bmxlc3Mgc2hhcmVkIGxpYnJhcmllcyBhcmUgbW9kZSA1NTUuCisgICMgSFAtVVggcnVucyAqcmVhbGx5KiBzbG93bHkgdW5sZXNzIHNoYXJlZCBsaWJyYXJpZXMgYXJlIG1vZGUgNTU1LCAuLi4KICAgcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNTU1ICRsaWInCisgICMgb3IgZmFpbHMgb3V0cmlnaHQsIHNvIG92ZXJyaWRlIGF0b21pY2FsbHk6CisgIGluc3RhbGxfb3ZlcnJpZGVfbW9kZT01NTUKICAgOzsKIAogaW50ZXJpeFtbMy05XV0qKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCkBAIC0yNDA3LDcgKzI2MDEsNyBAQAogICAgIG5vbnN0b3B1eCopIHZlcnNpb25fdHlwZT1ub25zdG9wdXggOzsKICAgICAqKQogCWlmIHRlc3QgIiRsdF9jdl9wcm9nX2dudV9sZCIgPSB5ZXM7IHRoZW4KLQkJdmVyc2lvbl90eXBlPWxpbnV4CisJCXZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKIAllbHNlCiAJCXZlcnNpb25fdHlwZT1pcml4CiAJZmkgOzsKQEAgLTI0NDQsOSArMjYzOCw5IEBACiAgIGR5bmFtaWNfbGlua2VyPW5vCiAgIDs7CiAKLSMgVGhpcyBtdXN0IGJlIExpbnV4IEVMRi4KLWxpbnV4KiB8IGsqYnNkKi1nbnUpCi0gIHZlcnNpb25fdHlwZT1saW51eAorIyBUaGlzIG11c3QgYmUgZ2xpYmMvRUxGLgorbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCkBAIC0yNDU0LDI5ICsyNjQ4LDMxIEBACiAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnIC1uICRsaWJkaXInCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworCiAgICMgU29tZSBiaW51dGlscyBsZCBhcmUgcGF0Y2hlZCB0byBzZXQgRFRfUlVOUEFUSAotICBzYXZlX0xERkxBR1M9JExERkxBR1MKLSAgc2F2ZV9saWJkaXI9JGxpYmRpcgotICBldmFsICJsaWJkaXI9L2Zvbzsgd2w9XCIkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSlcIjsgXAotICAgICAgIExERkxBR1M9XCJcJExERkxBR1MgJF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpXCIiCi0gIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW10sW10pXSwKLSAgICBbQVNfSUYoWyAoJE9CSkRVTVAgLXAgY29uZnRlc3QkYWNfZXhlZXh0KSAyPi9kZXYvbnVsbCB8IGdyZXAgIlJVTlBBVEguKiRsaWJkaXIiID4vZGV2L251bGxdLAotICAgICAgIFtzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzXSldKQotICBMREZMQUdTPSRzYXZlX0xERkxBR1MKLSAgbGliZGlyPSRzYXZlX2xpYmRpcgorICBBQ19DQUNIRV9WQUwoW2x0X2N2X3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aF0sCisgICAgW2x0X2N2X3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICAgIHNhdmVfTERGTEFHUz0kTERGTEFHUworICAgIHNhdmVfbGliZGlyPSRsaWJkaXIKKyAgICBldmFsICJsaWJkaXI9L2Zvbzsgd2w9XCIkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSlcIjsgXAorCSBMREZMQUdTPVwiXCRMREZMQUdTICRfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKVwiIgorICAgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW10sW10pXSwKKyAgICAgIFtBU19JRihbICgkT0JKRFVNUCAtcCBjb25mdGVzdCRhY19leGVleHQpIDI+L2Rldi9udWxsIHwgZ3JlcCAiUlVOUEFUSC4qJGxpYmRpciIgPi9kZXYvbnVsbF0sCisJIFtsdF9jdl9zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzXSldKQorICAgIExERkxBR1M9JHNhdmVfTERGTEFHUworICAgIGxpYmRpcj0kc2F2ZV9saWJkaXIKKyAgICBdKQorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9JGx0X2N2X3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aAogCiAgICMgVGhpcyBpbXBsaWVzIG5vIGZhc3RfaW5zdGFsbCwgd2hpY2ggaXMgdW5hY2NlcHRhYmxlLgogICAjIFNvbWUgcmV3b3JrIHdpbGwgYmUgbmVlZGVkIHRvIGFsbG93IGZvciBmYXN0X2luc3RhbGwKICAgIyBiZWZvcmUgdGhpcyBjYW4gYmUgZW5hYmxlZC4KICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogCi0gICMgQWRkIEFCSS1zcGVjaWZpYyBkaXJlY3RvcmllcyB0byB0aGUgc3lzdGVtIGxpYnJhcnkgcGF0aC4KLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii9saWI2NCAvdXNyL2xpYjY0IC9saWIgL3Vzci9saWIiCi0KICAgIyBBcHBlbmQgbGQuc28uY29uZiBjb250ZW50cyB0byB0aGUgc2VhcmNoIHBhdGgKICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KLSAgICBsdF9sZF9leHRyYT1gYXdrICcvXmluY2x1ZGUgLyB7IHN5c3RlbShzcHJpbnRmKCJjZCAvZXRjOyBjYXQgJXMgMj4vZGV2L251bGwiLCBcWyRdMikpOyBza2lwID0gMTsgfSB7IGlmICghc2tpcCkgcHJpbnQgXFskXTA7IHNraXAgPSAwOyB9JyA8IC9ldGMvbGQuc28uY29uZiB8ICRTRUQgLWUgJ3MvIy4qLy87L15bCSBdKmh3Y2FwWwkgXS9kO3MvWzosCV0vIC9nO3MvPVtePV0qJC8vO3MvPVtePSBdKiAvIC9nOy9eJC9kJyB8IHRyICdcbicgJyAnYAotICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMgJGx0X2xkX2V4dHJhIgorICAgIGx0X2xkX2V4dHJhPWBhd2sgJy9eaW5jbHVkZSAvIHsgc3lzdGVtKHNwcmludGYoImNkIC9ldGM7IGNhdCAlcyAyPi9kZXYvbnVsbCIsIFxbJF0yKSk7IHNraXAgPSAxOyB9IHsgaWYgKCFza2lwKSBwcmludCBcWyRdMDsgc2tpcCA9IDA7IH0nIDwgL2V0Yy9sZC5zby5jb25mIHwgJFNFRCAtZSAncy8jLiovLzsvXlsJIF0qaHdjYXBbCSBdL2Q7cy9bOiwJXS8gL2c7cy89W149XSokLy87cy89W149IF0qIC8gL2c7cy8iLy9nOy9eJC9kJyB8IHRyICdcbicgJyAnYAorICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvbGliIC91c3IvbGliICRsdF9sZF9leHRyYSIKICAgZmkKIAogICAjIFdlIHVzZWQgdG8gdGVzdCBmb3IgL2xpYi9sZC5zby4xIGFuZCBkaXNhYmxlIHNoYXJlZCBsaWJyYXJpZXMgb24KQEAgLTI0ODgsNiArMjY4NCwxOCBAQAogICBkeW5hbWljX2xpbmtlcj0nR05VL0xpbnV4IGxkLnNvJwogICA7OwogCituZXRic2RlbGYqLWdudSkKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgZHluYW1pY19saW5rZXI9J05ldEJTRCBsZC5lbGZfc28nCisgIDs7CisKIG5ldGJzZCopCiAgIHZlcnNpb25fdHlwZT1zdW5vcwogICBuZWVkX2xpYl9wcmVmaXg9bm8KQEAgLTI1MDcsNyArMjcxNSw3IEBACiAgIDs7CiAKIG5ld3NvczYpCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCkBAIC0yNTc2LDcgKzI3ODQsNyBAQAogICA7OwogCiBzb2xhcmlzKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKQEAgLTI2MDEsNyArMjgwOSw3IEBACiAgIDs7CiAKIHN5c3Y0IHwgc3lzdjQuMyopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwogICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSApAQCAtMjYyNSw3ICsyODMzLDcgQEAKIAogc3lzdjQqTVAqKQogICBpZiB0ZXN0IC1kIC91c3IvbmVjIDt0aGVuCi0gICAgdmVyc2lvbl90eXBlPWxpbnV4CisgICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUke3NoYXJlZF9leHR9LiR2ZXJzdWZmaXggJGxpYm5hbWUke3NoYXJlZF9leHR9LiRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCiAgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kbWFqb3InCiAgICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKQEAgLTI2NTYsNyArMjg2NCw3IEBACiAKIHRwZiopCiAgICMgVFBGIGlzIGEgY3Jvc3MtdGFyZ2V0IG9ubHkuICBQcmVmZXJyZWQgY3Jvc3MtaG9zdCA9IEdOVS9MaW51eC4KLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKQEAgLTI2NjYsNyArMjg3NCw3IEBACiAgIDs7CiAKIHV0czQqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKQEAgLTI3MDgsNiArMjkxNiw4IEBACiAgICAgVGhlIGxhc3QgbmFtZSBpcyB0aGUgb25lIHRoYXQgdGhlIGxpbmtlciBmaW5kcyB3aXRoIC1sTkFNRV1dKQogX0xUX0RFQ0woW10sIFtzb25hbWVfc3BlY10sIFsxXSwKICAgICBbW1RoZSBjb2RlZCBuYW1lIG9mIHRoZSBsaWJyYXJ5LCBpZiBkaWZmZXJlbnQgZnJvbSB0aGUgcmVhbCBuYW1lXV0pCitfTFRfREVDTChbXSwgW2luc3RhbGxfb3ZlcnJpZGVfbW9kZV0sIFsxXSwKKyAgICBbUGVybWlzc2lvbiBtb2RlIG92ZXJyaWRlIGZvciBpbnN0YWxsYXRpb24gb2Ygc2hhcmVkIGxpYnJhcmllc10pCiBfTFRfREVDTChbXSwgW3Bvc3RpbnN0YWxsX2NtZHNdLCBbMl0sCiAgICAgW0NvbW1hbmQgdG8gdXNlIGFmdGVyIGluc3RhbGxhdGlvbiBvZiBhIHNoYXJlZCBhcmNoaXZlXSkKIF9MVF9ERUNMKFtdLCBbcG9zdHVuaW5zdGFsbF9jbWRzXSwgWzJdLApAQCAtMjgyMCw2ICszMDMwLDcgQEAKIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9CVUlMRF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAogbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAorbTRfcmVxdWlyZShbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdKWRubAogCiBBQ19BUkdfV0lUSChbZ251LWxkXSwKICAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1nbnUtbGRdLApAQCAtMjk0MSw2ICszMTUyLDExIEBACiBlc2FjCiByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCiBjYXNlICRob3N0X29zIGluCisgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisgICAgZmkKKyAgICA7OwogICBkYXJ3aW4qKQogICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCkBAIC0yOTQ5LDggKzMxNjUsOCBAQAogICAgIGZpCiAgICAgOzsKIGVzYWMKLV9MVF9ERUNMKFtdLCBbcmVsb2FkX2ZsYWddLCBbMV0sIFtIb3cgdG8gY3JlYXRlIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzXSlkbmwKLV9MVF9ERUNMKFtdLCBbcmVsb2FkX2NtZHNdLCBbMl0pZG5sCitfTFRfVEFHREVDTChbXSwgW3JlbG9hZF9mbGFnXSwgWzFdLCBbSG93IHRvIGNyZWF0ZSByZWxvYWRhYmxlIG9iamVjdCBmaWxlc10pZG5sCitfTFRfVEFHREVDTChbXSwgW3JlbG9hZF9jbWRzXSwgWzJdKWRubAogXSkjIF9MVF9DTURfUkVMT0FECiAKIApAQCAtMzAwMiwxNiArMzIxOCwxOCBAQAogICAjIEJhc2UgTVNZUy9NaW5HVyBkbyBub3QgcHJvdmlkZSB0aGUgJ2ZpbGUnIGNvbW1hbmQgbmVlZGVkIGJ5CiAgICMgZnVuY193aW4zMl9saWJpZCBzaGVsbCBmdW5jdGlvbiwgc28gdXNlIGEgd2Vha2VyIHRlc3QgYmFzZWQgb24gJ29iamR1bXAnLAogICAjIHVubGVzcyB3ZSBmaW5kICdmaWxlJywgZm9yIGV4YW1wbGUgYmVjYXVzZSB3ZSBhcmUgY3Jvc3MtY29tcGlsaW5nLgotICBpZiAoIGZpbGUgLyApID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAjIGZ1bmNfd2luMzJfbGliaWQgYXNzdW1lcyBCU0Qgbm0sIHNvIGRpc2FsbG93IGl0IGlmIHVzaW5nIE1TIGR1bXBiaW4uCisgIGlmICggdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiQlNEIG5tIiAmJiBmaWxlIC8gKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwogICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwogICBlbHNlCi0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCiAgIGZpCiAgIDs7CiAKLWNlZ2NjKQorY2VnY2MqKQogICAjIHVzZSB0aGUgd2Vha2VyIHRlc3QgYmFzZWQgb24gJ29iamR1bXAnLiBTZWUgbWluZ3cqLgogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZS1hcm0tLipsaXR0bGUoLiphcmNoaXRlY3R1cmU6IGFybSk/JwogICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCkBAIC0zMDQxLDYgKzMyNTksMTAgQEAKICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKICAgOzsKIAoraGFpa3UqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCiBocHV4MTAuMjAqIHwgaHB1eDExKikKICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9L3Vzci9iaW4vZmlsZQogICBjYXNlICRob3N0X2NwdSBpbgpAQCAtMzA0OSwxMSArMzI3MSwxMSBAQAogICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS91c3IvbGliL2hwdXgzMi9saWJjLnNvCiAgICAgOzsKICAgaHBwYSo2NCopCi0gICAgW2x0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzWzAtOV1bMC05XVswLTldfEVMRi1bMC05XVswLTldKSBzaGFyZWQgb2JqZWN0IGZpbGUgLSBQQS1SSVNDIFswLTldLlswLTldJ10KKyAgICBbbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbMC05XVswLTldWzAtOV18RUxGWyAtXVswLTldWzAtOV0pKC1iaXQpPyggW0xNXVNCKT8gc2hhcmVkIG9iamVjdCggZmlsZSk/WywgLV0qIFBBLVJJU0MgWzAtOV1cLlswLTldJ10KICAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9wYTIwXzY0L2xpYmMuc2wKICAgICA7OwogICAqKQotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzW1swLTldXVtbMC05XV1bWzAtOV1dfFBBLVJJU0NbWzAtOV1dLltbMC05XV0pIHNoYXJlZCBsaWJyYXJ5JworICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzW1swLTldXVtbMC05XV1bWzAtOV1dfFBBLVJJU0NbWzAtOV1dXC5bWzAtOV1dKSBzaGFyZWQgbGlicmFyeScKICAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9saWJjLnNsCiAgICAgOzsKICAgZXNhYwpAQCAtMzA3NCwxMiArMzI5NiwxMiBAQAogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogICA7OwogCi0jIFRoaXMgbXVzdCBiZSBMaW51eCBFTEYuCi1saW51eCogfCBrKmJzZCotZ251KQorIyBUaGlzIG11c3QgYmUgZ2xpYmMvRUxGLgorbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogICA7OwogCi1uZXRic2QqKQorbmV0YnNkKiB8IG5ldGJzZGVsZiotZ251KQogICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPiAvZGV2L251bGw7IHRoZW4KICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hfcGF0dGVybiAvbGliW1teL11dKyhcLnNvXC5bWzAtOV1dK1wuW1swLTldXSt8X3BpY1wuYSkkJwogICBlbHNlCkBAIC0zMTUzLDYgKzMzNzUsMjEgQEAKICAgOzsKIGVzYWMKIF0pCisKK2ZpbGVfbWFnaWNfZ2xvYj0KK3dhbnRfbm9jYXNlZ2xvYj1ubworaWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKyAgY2FzZSAkaG9zdF9vcyBpbgorICBtaW5ndyogfCBwdzMyKikKKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisgICAgZWxzZQorICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bW1wxXV1cL1tbXDFdXVwvZzsvZyJgCisgICAgZmkKKyAgICA7OworICBlc2FjCitmaQorCiBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAogdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCkBAIC0zMTYwLDcgKzMzOTcsMTEgQEAKIF9MVF9ERUNMKFtdLCBbZGVwbGlic19jaGVja19tZXRob2RdLCBbMV0sCiAgICAgW01ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzXSkKIF9MVF9ERUNMKFtdLCBbZmlsZV9tYWdpY19jbWRdLCBbMV0sCi0gICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiXSkKKyAgICBbQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIl0pCitfTFRfREVDTChbXSwgW2ZpbGVfbWFnaWNfZ2xvYl0sIFsxXSwKKyAgICBbSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQorX0xUX0RFQ0woW10sIFt3YW50X25vY2FzZWdsb2JdLCBbMV0sCisgICAgW0ZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIl0pCiBdKSMgX0xUX0NIRUNLX01BR0lDX01FVEhPRAogCiAKQEAgLTMyMTcsNyArMzQ1OCwxOSBAQAogICBOTT0iJGx0X2N2X3BhdGhfTk0iCiBlbHNlCiAgICMgRGlkbid0IGZpbmQgYW55IEJTRCBjb21wYXRpYmxlIG5hbWUgbGlzdGVyLCBsb29rIGZvciBkdW1wYmluLgotICBBQ19DSEVDS19UT09MUyhEVU1QQklOLCBbImR1bXBiaW4gLXN5bWJvbHMiICJsaW5rIC1kdW1wIC1zeW1ib2xzIl0sIDopCisgIGlmIHRlc3QgLW4gIiREVU1QQklOIjsgdGhlbiA6CisgICAgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGVsc2UKKyAgICBBQ19DSEVDS19UT09MUyhEVU1QQklOLCBbZHVtcGJpbiAibGluayAtZHVtcCJdLCA6KQorICAgIGNhc2UgYCREVU1QQklOIC1zeW1ib2xzIC9kZXYvbnVsbCAyPiYxIHwgc2VkICcxcSdgIGluCisgICAgKkNPRkYqKQorICAgICAgRFVNUEJJTj0iJERVTVBCSU4gLXN5bWJvbHMiCisgICAgICA7OworICAgICopCisgICAgICBEVU1QQklOPToKKyAgICAgIDs7CisgICAgZXNhYworICBmaQogICBBQ19TVUJTVChbRFVNUEJJTl0pCiAgIGlmIHRlc3QgIiREVU1QQklOIiAhPSAiOiI7IHRoZW4KICAgICBOTT0iJERVTVBCSU4iCkBAIC0zMjMwLDEzICszNDgzLDEzIEBACiBBQ19DQUNIRV9DSEVDSyhbdGhlIG5hbWUgbGlzdGVyICgkTk0pIGludGVyZmFjZV0sIFtsdF9jdl9ubV9pbnRlcmZhY2VdLAogICBbbHRfY3Zfbm1faW50ZXJmYWNlPSJCU0Qgbm0iCiAgIGVjaG8gImludCBzb21lX3ZhcmlhYmxlID0gMDsiID4gY29uZnRlc3QuJGFjX2V4dAotICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6X19vbGluZV9fOiAkYWNfY29tcGlsZVwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJGFjX2NvbXBpbGVcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKICAgKGV2YWwgIiRhY19jb21waWxlIiAyPmNvbmZ0ZXN0LmVycikKICAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECi0gIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186ICROTSBcXFwiY29uZnRlc3QuJGFjX29iamV4dFxcXCJcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKKyAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86ICROTSBcXFwiY29uZnRlc3QuJGFjX29iamV4dFxcXCJcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKICAgKGV2YWwgIiROTSBcImNvbmZ0ZXN0LiRhY19vYmpleHRcIiIgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQpCiAgIGNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAotICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6X19vbGluZV9fOiBvdXRwdXRcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKKyAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86IG91dHB1dFwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQogICBjYXQgY29uZnRlc3Qub3V0ID4mQVNfTUVTU0FHRV9MT0dfRkQKICAgaWYgJEdSRVAgJ0V4dGVybmFsLipzb21lX3ZhcmlhYmxlJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KICAgICBsdF9jdl9ubV9pbnRlcmZhY2U9Ik1TIGR1bXBiaW4iCkBAIC0zMjUxLDYgKzM1MDQsNjcgQEAKIGRubCBBQ19ERUZVTihbQU1fUFJPR19OTV0sIFtdKQogZG5sIEFDX0RFRlVOKFtBQ19QUk9HX05NXSwgW10pCiAKKyMgX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgaG93IHRvIGRldGVybWluZSB0aGUgbmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkKKyMgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgbGluayBsaWJyYXJ5LgorIyAgLS0gUE9SVE1FIGZpbGwgaW4gd2l0aCB0aGUgZHluYW1pYyBsaWJyYXJ5IGNoYXJhY3RlcmlzdGljcworbTRfZGVmdW4oW19MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCXSwKK1ttNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pCittNF9yZXF1aXJlKFtfTFRfREVDTF9PQkpEVU1QXSkKK200X3JlcXVpcmUoW19MVF9ERUNMX0RMTFRPT0xdKQorQUNfQ0FDSEVfQ0hFQ0soW2hvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXNdLAorbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQsCitbbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCisKK2Nhc2UgJGhvc3Rfb3MgaW4KK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgorICAqLS1pZGVudGlmeS1zdHJpY3QqKQorICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorICAgIDs7CisgICopCisgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisgICAgOzsKKyAgZXNhYworICA7OworKikKKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKyAgOzsKK2VzYWMKK10pCitzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKworX0xUX0RFQ0woW10sIFtzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZF0sIFsxXSwKKyAgICBbQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllc10pCitdKSMgX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUIKKworCisjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBsb2NhdGUgdGhlIG1hbmlmZXN0IHRvb2wKK200X2RlZnVuKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSwKK1tBQ19DSEVDS19UT09MKE1BTklGRVNUX1RPT0wsIG10LCA6KQordGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKK0FDX0NBQ0hFX0NIRUNLKFtpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2xdLCBbbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sXSwKKyAgW2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubworICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiZBU19NRVNTQUdFX0xPR19GRAorICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisgIGNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAorICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworICBmaQorICBybSAtZiBjb25mdGVzdCpdKQoraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKyAgTUFOSUZFU1RfVE9PTD06CitmaQorX0xUX0RFQ0woW10sIFtNQU5JRkVTVF9UT09MXSwgWzFdLCBbTWFuaWZlc3QgdG9vbF0pZG5sCitdKSMgX0xUX1BBVEhfTUFOSUZFU1RfVE9PTAorCiAKICMgTFRfTElCX00KICMgLS0tLS0tLS0KQEAgLTMyNTksNyArMzU3Myw3IEBACiBbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAogTElCTT0KIGNhc2UgJGhvc3QgaW4KLSotKi1iZW9zKiB8ICotKi1jeWd3aW4qIHwgKi0qLXB3MzIqIHwgKi0qLWRhcndpbiopCisqLSotYmVvcyogfCAqLSotY2VnY2MqIHwgKi0qLWN5Z3dpbiogfCAqLSotaGFpa3UqIHwgKi0qLXB3MzIqIHwgKi0qLWRhcndpbiopCiAgICMgVGhlc2Ugc3lzdGVtIGRvbid0IGhhdmUgbGlibSwgb3IgZG9uJ3QgbmVlZCBpdAogICA7OwogKi1uY3Itc3lzdjQuMyopCkBAIC0zMjg3LDcgKzM2MDEsMTIgQEAKIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0KIAogaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPScgLWZuby1idWlsdGluJworICBjYXNlICRjY19iYXNlbmFtZSBpbgorICBudmNjKikKKyAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSk9JyAtWGNvbXBpbGVyIC1mbm8tYnVpbHRpbicgOzsKKyAgKikKKyAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSk9JyAtZm5vLWJ1aWx0aW4nIDs7CisgIGVzYWMKIAogICBfTFRfQ09NUElMRVJfT1BUSU9OKFtpZiAkY29tcGlsZXIgc3VwcG9ydHMgLWZuby1ydHRpIC1mbm8tZXhjZXB0aW9uc10sCiAgICAgbHRfY3ZfcHJvZ19jb21waWxlcl9ydHRpX2V4Y2VwdGlvbnMsCkBAIC0zMzA0LDYgKzM2MjMsNyBAQAogbTRfZGVmdW4oW19MVF9DTURfR0xPQkFMX1NZTUJPTFNdLAogW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKIEFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAorQUNfUkVRVUlSRShbQUNfUFJPR19BV0tdKWRubAogQUNfUkVRVUlSRShbTFRfUEFUSF9OTV0pZG5sCiBBQ19SRVFVSVJFKFtMVF9QQVRIX0xEXSlkbmwKIG00X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCkBAIC0zMzcxLDggKzM2OTEsOCBAQAogbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKIAogIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChsaWJbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKVtbIF1dKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpW1sgXV0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKGxpYltbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCiAKICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgogb3B0X2NyPQpAQCAtMzM5Niw2ICszNzE2LDcgQEAKICAgICAjIHdoaWNoIHN0YXJ0IHdpdGggQCBvciA/LgogICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRBV0sgWyciXAogIiAgICAge2xhc3Rfc2VjdGlvbj1zZWN0aW9uOyBzZWN0aW9uPVwkIDN9OyJcCisiICAgICAvXkNPRkYgU1lNQk9MIFRBQkxFL3tmb3IoaSBpbiBoaWRlKSBkZWxldGUgaGlkZVtpXX07IlwKICIgICAgIC9TZWN0aW9uIGxlbmd0aCAuKiNyZWxvY3MuKihwaWNrIGFueSkve2hpZGVbbGFzdF9zZWN0aW9uXT0xfTsiXAogIiAgICAgXCQgMCF+L0V4dGVybmFsICpcfC97bmV4dH07IlwKICIgICAgIC8gMCsgVU5ERUYgL3tuZXh0fTsgLyBVTkRFRiBcKFtefF1cKSooKS97bmV4dH07IlwKQEAgLTM0MDgsNiArMzcyOSw3IEBACiAgIGVsc2UKICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qW1sJIF1dXCgkc3ltY29kZSRzeW1jb2RlKlwpW1sJIF1dW1sJIF1dKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgogICBmaQorICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCiAKICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCiAgIHBpcGVfd29ya3M9bm8KQEAgLTM0MjksNyArMzc1MSw3IEBACiAgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCiAgICAgIyBOb3cgdHJ5IHRvIGdyYWIgdGhlIHN5bWJvbHMuCiAgICAgbmxpc3Q9Y29uZnRlc3Qubm0KLSAgICBpZiBBQ19UUllfRVZBTChOTSBjb25mdGVzdC4kYWNfb2JqZXh0IFx8ICRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFw+ICRubGlzdCkgJiYgdGVzdCAtcyAiJG5saXN0IjsgdGhlbgorICAgIGlmIEFDX1RSWV9FVkFMKE5NIGNvbmZ0ZXN0LiRhY19vYmpleHQgXHwgIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiBcPiAkbmxpc3QpICYmIHRlc3QgLXMgIiRubGlzdCI7IHRoZW4KICAgICAgICMgVHJ5IHNvcnRpbmcgYW5kIHVuaXF1aWZ5aW5nIHRoZSBvdXRwdXQuCiAgICAgICBpZiBzb3J0ICIkbmxpc3QiIHwgdW5pcSA+ICIkbmxpc3QiVDsgdGhlbgogCW12IC1mICIkbmxpc3QiVCAiJG5saXN0IgpAQCAtMzQ0MSw2ICszNzYzLDE4IEBACiAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUCisjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKyMgZGVmaW5lIExUQCZ0QF9ETFNZTV9DT05TVAorI2Vsc2UKKyMgZGVmaW5lIExUQCZ0QF9ETFNZTV9DT05TVCBjb25zdAorI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKQEAgLTM0NTIsNyArMzc4Niw3IEBACiAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKIAogLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotY29uc3Qgc3RydWN0IHsKK0xUQCZ0QF9ETFNZTV9DT05TVCBzdHJ1Y3QgewogICBjb25zdCBjaGFyICpuYW1lOwogICB2b2lkICAgICAgICphZGRyZXNzOwogfQpAQCAtMzQ3OCwxNSArMzgxMiwxNSBAQAogX0xUX0VPRgogCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwogCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKIAkgIENGTEFHUz0iJENGTEFHUyRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSkiCiAJICBpZiBBQ19UUllfRVZBTChhY19saW5rKSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAJICAgIHBpcGVfd29ya3M9eWVzCiAJICBmaQotCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwogCWVsc2UKIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mQVNfTUVTU0FHRV9MT0dfRkQKIAlmaQpAQCAtMzUxOSw2ICszODUzLDEzIEBACiAgIEFDX01TR19SRVNVTFQob2spCiBmaQogCisjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW1tAXV1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworZmkKKwogX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfcGlwZV0sIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlXSwgWzFdLAogICAgIFtUYWtlIHRoZSBvdXRwdXQgb2Ygbm0gYW5kIHByb2R1Y2UgYSBsaXN0aW5nIG9mIHJhdyBzeW1ib2xzIGFuZCBDIG5hbWVzXSkKIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NkZWNsXSwgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsXSwgWzFdLApAQCAtMzUyOSw2ICszODcwLDggQEAKIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLAogICAgIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4XSwgWzFdLAogICAgIFtUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZF0pCitfTFRfREVDTChbXSwgW25tX2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAorICAgIFtTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yICROTV0pCiBdKSAjIF9MVF9DTURfR0xPQkFMX1NZTUJPTFMKIAogCkBAIC0zNTQwLDcgKzM4ODMsNiBAQAogX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQogX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPQogCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDXSkKIG00X2lmKFskMV0sIFtDWFhdLCBbCiAgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KQEAgLTM1OTEsNiArMzkzMywxMSBAQAogICAgICAgIyBESkdQUCBkb2VzIG5vdCBzdXBwb3J0IHNoYXJlZCBsaWJyYXJpZXMgYXQgYWxsCiAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9CiAgICAgICA7OworICAgIGhhaWt1KikKKyAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IGZvciBIYWlrdS4KKyAgICAgICMgVGhlICItc3RhdGljIiBmbGFnIGV4aXN0cywgYnV0IGlzIGJyb2tlbi4KKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0KKyAgICAgIDs7CiAgICAgaW50ZXJpeFtbMy05XV0qKQogICAgICAgIyBJbnRlcml4IDMueCBnY2MgLWZwaWMvLWZQSUMgb3B0aW9ucyBnZW5lcmF0ZSBicm9rZW4gY29kZS4KICAgICAgICMgSW5zdGVhZCwgd2UgcmVsb2NhdGUgc2hhcmVkIGxpYnJhcmllcyBhdCBydW50aW1lLgpAQCAtMzY0MCw2ICszOTg3LDEyIEBACiAJICA7OwogCWVzYWMKIAk7OworICAgICAgbWluZ3cqIHwgY3lnd2luKiB8IG9zMiogfCBwdzMyKiB8IGNlZ2NjKikKKwkjIFRoaXMgaGFjayBpcyBzbyB0aGF0IHRoZSBzb3VyY2UgZmlsZSBjYW4gdGVsbCB3aGV0aGVyIGl0IGlzIGJlaW5nCisJIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KKwltNF9pZihbJDFdLCBbR0NKXSwgW10sCisJICBbX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctRERMTF9FWFBPUlQnXSkKKwk7OwogICAgICAgZGd1eCopCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KIAkgIGVjKysqKQpAQCAtMzY5Niw3ICs0MDQ5LDcgQEAKIAkgICAgOzsKIAllc2FjCiAJOzsKLSAgICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUpCisgICAgICBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KIAkgIEtDQyopCiAJICAgICMgS0FJIEMrKyBDb21waWxlcgpAQCAtMzcyOSw4ICs0MDgyLDggQEAKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJwogCSAgICA7OwotCSAgeGxjKiB8IHhsQyopCi0JICAgICMgSUJNIFhMIDguMCBvbiBQUEMKKwkgIHhsYyogfCB4bEMqIHwgYmd4bFtbY0NdXSogfCBtcGl4bFtbY0NdXSopCisJICAgICMgSUJNIFhMIDguMCwgOS4wIG9uIFBQQyBhbmQgQmx1ZUdlbmUKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCiAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLXFwaWMnCiAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXFzdGF0aWNsaW5rJwpAQCAtMzc2MCw3ICs0MTEzLDcgQEAKIAkgICAgOzsKIAllc2FjCiAJOzsKLSAgICAgIG5ldGJzZCopCisgICAgICBuZXRic2QqIHwgbmV0YnNkZWxmKi1nbnUpCiAJOzsKICAgICAgICpxbngqIHwgKm50byopCiAgICAgICAgICMgUU5YIHVzZXMgR05VIEMrKywgYnV0IG5lZWQgdG8gZGVmaW5lIC1zaGFyZWQgb3B0aW9uIHRvbywgb3RoZXJ3aXNlCkBAIC0zNzkyLDcgKzQxNDUsNyBAQAogCTs7CiAgICAgICBzb2xhcmlzKikKIAljYXNlICRjY19iYXNlbmFtZSBpbgotCSAgQ0MqKQorCSAgQ0MqIHwgc3VuQ0MqKQogCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCiAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCiAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCkBAIC0zODk2LDYgKzQyNDksMTIgQEAKICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZuby1jb21tb24nCiAgICAgICA7OwogCisgICAgaGFpa3UqKQorICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIEhhaWt1LgorICAgICAgIyBUaGUgIi1zdGF0aWMiIGZsYWcgZXhpc3RzLCBidXQgaXMgYnJva2VuLgorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPQorICAgICAgOzsKKwogICAgIGhwdXgqKQogICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIDY0LWJpdCBQQSBIUC1VWCwgYnV0IG5vdCBmb3IgMzItYml0CiAgICAgICAjIFBBIEhQLVVYLiAgT24gSUE2NCBIUC1VWCwgUElDIGlzIHRoZSBkZWZhdWx0IGJ1dCB0aGUgcGljIGZsYWcKQEAgLTM5MzgsNiArNDI5NywxNSBAQAogICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKICAgICAgIDs7CiAgICAgZXNhYworCisgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICBudmNjKikgIyBDdWRhIENvbXBpbGVyIERyaXZlciAyLjIKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctWGxpbmtlciAnCisgICAgICBpZiB0ZXN0IC1uICIkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpIjsgdGhlbgorICAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Ii1YY29tcGlsZXIgJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKSIKKyAgICAgIGZpCisgICAgICA7OworICAgIGVzYWMKICAgZWxzZQogICAgICMgUE9SVE1FIENoZWNrIGZvciBmbGFnIHRvIHBhc3MgbGlua2VyIGZsYWdzIHRocm91Z2ggdGhlIHN5c3RlbSBjb21waWxlci4KICAgICBjYXNlICRob3N0X29zIGluCkBAIC0zOTgwLDcgKzQzNDgsNyBAQAogICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKICAgICAgIDs7CiAKLSAgICBsaW51eCogfCBrKmJzZCotZ251KQorICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCiAgICAgICAjIG9sZCBJbnRlbCBmb3IgeDg2XzY0IHdoaWNoIHN0aWxsIHN1cHBvcnRlZCAtS1BJQy4KICAgICAgIGVjYyopCkBAIC00MDAxLDcgKzQzNjksMTMgQEAKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy0tc2hhcmVkJwogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLS1zdGF0aWMnCiAJOzsKLSAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqKQorICAgICAgbmFnZm9yKikKKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwtV2wsLCcKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1QSUMnCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKwk7OworICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQogICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAogCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCkBAIC00MDEzLDI1ICs0Mzg3LDQwIEBACiAgICAgICAgICMgQWxsIEFscGhhIGNvZGUgaXMgUElDLgogICAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJwogICAgICAgICA7OwotICAgICAgeGwqKQotCSMgSUJNIFhMIEMgOC4wL0ZvcnRyYW4gMTAuMSBvbiBQUEMKKyAgICAgIHhsKiB8IGJneGwqIHwgYmdmKiB8IG1waXhsKikKKwkjIElCTSBYTCBDIDguMC9Gb3J0cmFuIDEwLjEsIDExLjEgb24gUFBDIGFuZCBCbHVlR2VuZQogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLXFwaWMnCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctcXN0YXRpY2xpbmsnCiAJOzsKICAgICAgICopCiAJY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCisJKlN1blwgQ2VyZXNcIEZvcnRyYW4qIHwgKlN1bipGb3J0cmFuKlwgW1sxLTddXS4qIHwgKlN1bipGb3J0cmFuKlwgOC5bWzAtM11dKikKKwkgICMgU3VuIEZvcnRyYW4gOC4zIHBhc3NlcyBhbGwgdW5yZWNvZ25pemVkIGZsYWdzIHRvIHRoZSBsaW5rZXIKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9JycKKwkgIDs7CisJKlN1blwgRiogfCAqU3VuKkZvcnRyYW4qKQorCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJworCSAgOzsKIAkqU3VuXCBDKikKIAkgICMgU3VuIEMgNS45CiAJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwogCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKIAkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwogCSAgOzsKLQkqU3VuXCBGKikKLQkgICMgU3VuIEZvcnRyYW4gOC4zIHBhc3NlcyBhbGwgdW5yZWNvZ25pemVkIGZsYWdzIHRvIHRoZSBsaW5rZXIKLQkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisgICAgICAgICpJbnRlbCpcIFtbQ0ZdXSpDb21waWxlciopCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1zdGF0aWMnCisJICA7OworCSpQb3J0bGFuZFwgR3JvdXAqKQorCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mcGljJwogCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKLQkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPScnCiAJICA7OwogCWVzYWMKIAk7OwpAQCAtNDA2Myw3ICs0NDUyLDcgQEAKICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCiAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwogICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJzs7CiAgICAgICAqKQogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJzs7CkBAIC00MTIwLDkgKzQ1MDksMTEgQEAKICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9IiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSlAJnRAbTRfaWYoWyQxXSxbXSxbIC1EUElDXSxbbTRfaWYoWyQxXSxbQ1hYXSxbIC1EUElDXSxbXSldKSIKICAgICA7OwogZXNhYwotQUNfTVNHX1JFU1VMVChbJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKV0pCi1fTFRfVEFHREVDTChbd2xdLCBbbHRfcHJvZ19jb21waWxlcl93bF0sIFsxXSwKLQlbSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlcl0pCisKK0FDX0NBQ0hFX0NIRUNLKFtmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQ10sCisgIFtfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfcGljLCAkMSldLAorICBbX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQorX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSRfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfcGljLCAkMSkKIAogIwogIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgpAQCAtNDE0MSw2ICs0NTMyLDggQEAKIF9MVF9UQUdERUNMKFtwaWNfZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX3BpY10sIFsxXSwKIAlbQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzXSkKIAorX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCisJW0hvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXJdKQogIwogIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgogIwpAQCAtNDE2MSw2ICs0NTU0LDcgQEAKIG00X2RlZnVuKFtfTFRfTElOS0VSX1NITElCU10sCiBbQUNfUkVRVUlSRShbTFRfUEFUSF9MRF0pZG5sCiBBQ19SRVFVSVJFKFtMVF9QQVRIX05NXSlkbmwKK200X3JlcXVpcmUoW19MVF9QQVRIX01BTklGRVNUX1RPT0xdKWRubAogbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubApAQCAtNDE2OSwyNyArNDU2Myw0MCBAQAogQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRoZSAkY29tcGlsZXIgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXNdKQogbTRfaWYoWyQxXSwgW0NYWF0sIFsKICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKyAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKiddCiAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgYWl4W1s0LTldXSopCiAgICAgIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCiAgICAgIyAtQyBtZWFucyBkZW1hbmdsZSB0byBBSVggbm0sIGJ1dCBtZWFucyBkb24ndCBkZW1hbmdsZSB3aXRoIEdOVSBubQorICAgICMgQWxzbywgQUlYIG5tIHRyZWF0cyB3ZWFrIGRlZmluZWQgc3ltYm9scyBsaWtlIG90aGVyIGdsb2JhbCBkZWZpbmVkCisgICAgIyBzeW1ib2xzLCB3aGVyZWFzIEdOVSBubSBtYXJrcyB0aGVtIGFzICJXIi4KICAgICBpZiAkTk0gLVYgMj4mMSB8ICRHUkVQICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpIHx8IChcJCAyID09ICJXIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJwogICAgIGVsc2UKICAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJDcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJwogICAgIGZpCiAgICAgOzsKICAgcHczMiopCiAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9IiRsdGRsbF9jbWRzIgotICA7OworICAgIDs7CiAgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCi0gICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS87L14uKltbIF1dX19ubV9fL3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotICA7OworICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgY2wqKQorICAgICAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT0nX05VTExfSU1QT1JUX0RFU0NSSVBUT1J8X0lNUE9SVF9ERVNDUklQVE9SXy4qJworICAgICAgOzsKKyAgICAqKQorICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS87cy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJ10KKyAgICAgIDs7CisgICAgZXNhYworICAgIDs7CisgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBnbnUqKQorICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPW5vCisgICAgOzsKICAgKikKICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotICA7OworICAgIDs7CiAgIGVzYWMKLSAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKiddCiBdLCBbCiAgIHJ1bnBhdGhfdmFyPQogICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9CkBAIC00MjA0LDcgKzQ2MTEsNiBAQAogICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9bm8KICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Ci0gIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPQogICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0KICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9bm8KICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9dW5zdXBwb3J0ZWQKQEAgLTQyNDksMTAgKzQ2NTUsMzkgQEAKICAgb3BlbmJzZCopCiAgICAgd2l0aF9nbnVfbGQ9bm8KICAgICA7OworICBsaW51eCogfCBrKmJzZCotZ251IHwgZ251KikKKyAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT1ubworICAgIDs7CiAgIGVzYWMKIAogICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPXllcworCisgICMgT24gc29tZSB0YXJnZXRzLCBHTlUgbGQgaXMgY29tcGF0aWJsZSBlbm91Z2ggd2l0aCB0aGUgbmF0aXZlIGxpbmtlcgorICAjIHRoYXQgd2UncmUgYmV0dGVyIG9mZiB1c2luZyB0aGUgbmF0aXZlIGludGVyZmFjZSBmb3IgYm90aC4KKyAgbHRfdXNlX2dudV9sZF9pbnRlcmZhY2U9bm8KICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgIGFpeCopCisJIyBUaGUgQUlYIHBvcnQgb2YgR05VIGxkIGhhcyBhbHdheXMgYXNwaXJlZCB0byBjb21wYXRpYmlsaXR5CisJIyB3aXRoIHRoZSBuYXRpdmUgbGlua2VyLiAgSG93ZXZlciwgYXMgdGhlIHdhcm5pbmcgaW4gdGhlIEdOVSBsZAorCSMgYmxvY2sgc2F5cywgdmVyc2lvbnMgYmVmb3JlIDIuMTkuNSogY291bGRuJ3QgcmVhbGx5IGNyZWF0ZSB3b3JraW5nCisJIyBzaGFyZWQgbGlicmFyaWVzLCByZWdhcmRsZXNzIG9mIHRoZSBpbnRlcmZhY2UgdXNlZC4KKwljYXNlIGAkTEQgLXYgMj4mMWAgaW4KKwkgICpcIFwoR05VXCBCaW51dGlsc1wpXCAyLjE5LjUqKSA7OworCSAgKlwgXChHTlVcIEJpbnV0aWxzXClcIDIuW1syLTldXSopIDs7CisJICAqXCBcKEdOVVwgQmludXRpbHNcKVwgW1szLTldXSopIDs7CisJICAqKQorCSAgICBsdF91c2VfZ251X2xkX2ludGVyZmFjZT15ZXMKKwkgICAgOzsKKwllc2FjCisJOzsKKyAgICAgICopCisJbHRfdXNlX2dudV9sZF9pbnRlcmZhY2U9eWVzCisJOzsKKyAgICBlc2FjCisgIGZpCisKKyAgaWYgdGVzdCAiJGx0X3VzZV9nbnVfbGRfaW50ZXJmYWNlIiA9IHllczsgdGhlbgogICAgICMgSWYgYXJjaGl2ZV9jbWRzIHJ1bnMgTEQsIG5vdCBDQywgd2xhcmMgc2hvdWxkIGJlIGVtcHR5CiAgICAgd2xhcmM9JyR7d2x9JwogCkBAIC00MjcwLDYgKzQ3MDUsNyBAQAogICAgIGZpCiAgICAgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPW5vCiAgICAgY2FzZSBgJExEIC12IDI+JjFgIGluCisgICAgICAqR05VXCBnb2xkKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OwogICAgICAgKlwgW1swMV1dLiogfCAqXCAyLltbMC05XV0uKiB8ICpcIDIuMTAuKikgOzsgIyBjYXRjaCB2ZXJzaW9ucyA8IDIuMTEKICAgICAgICpcIDIuMTEuOTMuMC4yXCAqKSBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9eWVzIDs7ICMgUkg3LjMgLi4uCiAgICAgICAqXCAyLjExLjkyLjAuMTJcICopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsgIyBNYW5kcmFrZSA4LjIgLi4uCkBAIC00Mjg1LDExICs0NzIxLDEyIEBACiAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwogCWNhdCA8PF9MVF9FT0YgMT4mMgogCi0qKiogV2FybmluZzogdGhlIEdOVSBsaW5rZXIsIGF0IGxlYXN0IHVwIHRvIHJlbGVhc2UgMi45LjEsIGlzIHJlcG9ydGVkCisqKiogV2FybmluZzogdGhlIEdOVSBsaW5rZXIsIGF0IGxlYXN0IHVwIHRvIHJlbGVhc2UgMi4xOSwgaXMgcmVwb3J0ZWQKICoqKiB0byBiZSB1bmFibGUgdG8gcmVsaWFibHkgY3JlYXRlIHNoYXJlZCBsaWJyYXJpZXMgb24gQUlYLgogKioqIFRoZXJlZm9yZSwgbGlidG9vbCBpcyBkaXNhYmxpbmcgc2hhcmVkIGxpYnJhcmllcyBzdXBwb3J0LiAgSWYgeW91Ci0qKiogcmVhbGx5IGNhcmUgZm9yIHNoYXJlZCBsaWJyYXJpZXMsIHlvdSBtYXkgd2FudCB0byBtb2RpZnkgeW91ciBQQVRICi0qKiogc28gdGhhdCBhIG5vbi1HTlUgbGlua2VyIGlzIGZvdW5kLCBhbmQgdGhlbiByZXN0YXJ0LgorKioqIHJlYWxseSBjYXJlIGZvciBzaGFyZWQgbGlicmFyaWVzLCB5b3UgbWF5IHdhbnQgdG8gaW5zdGFsbCBiaW51dGlscworKioqIDIuMjAgb3IgYWJvdmUsIG9yIG1vZGlmeSB5b3VyIFBBVEggc28gdGhhdCBhIG5vbi1HTlUgbGlua2VyIGlzIGZvdW5kLgorKioqIFlvdSB3aWxsIHRoZW4gbmVlZCB0byByZXN0YXJ0IHRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3MuCiAKIF9MVF9FT0YKICAgICAgIGZpCkBAIC00MzI1LDEwICs0NzYyLDEyIEBACiAgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAogICAgICAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJwogICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCiAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCiAgICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKLSAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW1tBSVRXXV1bWyBdXS9zLy4qW1sgXV0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvO3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworICAgICAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZSddCiAKICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCkBAIC00MzQ2LDYgKzQ3ODUsMTEgQEAKICAgICAgIGZpCiAgICAgICA7OwogCisgICAgaGFpa3UqKQorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKKyAgICAgIDs7CisKICAgICBpbnRlcml4W1szLTldXSopCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwpAQCAtNDM2MSw3ICs0ODA1LDcgQEAKICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdzZWQgInMsXixfLCIgJGV4cG9ydF9zeW1ib2xzID4kb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWgsJHNvbmFtZSAke3dsfS0tcmV0YWluLXN5bWJvbHMtZmlsZSwkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bSAke3dsfS0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJwogICAgICAgOzsKIAotICAgIGdudSogfCBsaW51eCogfCB0cGYqIHwgaypic2QqLWdudSkKKyAgICBnbnUqIHwgbGludXgqIHwgdHBmKiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKICAgICAgIHRtcF9kaWV0PW5vCiAgICAgICBpZiB0ZXN0ICIkaG9zdF9vcyIgPSBsaW51eC1kaWV0bGliYzsgdGhlbgogCWNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC00MzcxLDE1ICs0ODE1LDE2IEBACiAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkRUdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbCBcCiAJICYmIHRlc3QgIiR0bXBfZGlldCIgPSBubwogICAgICAgdGhlbgotCXRtcF9hZGRmbGFnPQorCXRtcF9hZGRmbGFnPScgJHBpY19mbGFnJwogCXRtcF9zaGFyZWRmbGFnPSctc2hhcmVkJwogCWNhc2UgJGNjX2Jhc2VuYW1lLCRob3N0X2NwdSBpbgogICAgICAgICBwZ2NjKikJCQkJIyBQb3J0bGFuZCBHcm91cCBDIGNvbXBpbGVyCi0JICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCiAJICB0bXBfYWRkZmxhZz0nICRwaWNfZmxhZycKIAkgIDs7Ci0JcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqKQkjIFBvcnRsYW5kIEdyb3VwIGY3NyBhbmQgZjkwIGNvbXBpbGVycwotCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKwkJCQkJIyBQb3J0bGFuZCBHcm91cCBmNzcgYW5kIGY5MCBjb21waWxlcnMKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCiAJICB0bXBfYWRkZmxhZz0nICRwaWNfZmxhZyAtTW5vbWFpbicgOzsKIAllY2MqLGlhNjQqIHwgaWNjKixpYTY0KikJIyBJbnRlbCBDIGNvbXBpbGVyIG9uIGlhNjQKIAkgIHRtcF9hZGRmbGFnPScgLWlfZHluYW1pYycgOzsKQEAgLTQzOTAsMTMgKzQ4MzUsMTcgQEAKIAlsZjk1KikJCQkJIyBMYWhleSBGb3J0cmFuIDguMQogCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQogCSAgdG1wX3NoYXJlZGZsYWc9Jy0tc2hhcmVkJyA7OwotCXhsW1tjQ11dKikJCQkjIElCTSBYTCBDIDguMCBvbiBQUEMgKGRlYWwgd2l0aCB4bGYgYmVsb3cpCisJeGxbW2NDXV0qIHwgYmd4bFtbY0NdXSogfCBtcGl4bFtbY0NdXSopICMgSUJNIFhMIEMgOC4wIG9uIFBQQyAoZGVhbCB3aXRoIHhsZiBiZWxvdykKIAkgIHRtcF9zaGFyZWRmbGFnPSctcW1rc2hyb2JqJwogCSAgdG1wX2FkZGZsYWc9IDs7CisJbnZjYyopCSMgQ3VkYSBDb21waWxlciBEcml2ZXIgMi4yCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgX0xUX1RBR1ZBUihjb21waWxlcl9uZWVkc19vYmplY3QsICQxKT15ZXMKKwkgIDs7CiAJZXNhYwogCWNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgogCSpTdW5cIEMqKQkJCSMgU3VuIEMgNS45Ci0JICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYG5ld19jb252ZW5pZW5jZT07IGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgLXogXCIkY29udlwiIHx8IG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJwogCSAgX0xUX1RBR1ZBUihjb21waWxlcl9uZWVkc19vYmplY3QsICQxKT15ZXMKIAkgIHRtcF9zaGFyZWRmbGFnPSctRycgOzsKIAkqU3VuXCBGKikJCQkjIFN1biBGb3J0cmFuIDguMwpAQCAtNDQxMiwxNyArNDg2MSwxNiBAQAogICAgICAgICBmaQogCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KLQl4bGYqKQorCXhsZiogfCBiZ2YqIHwgYmd4bGYqIHwgbXBpeGxmKikKIAkgICMgSUJNIFhMIEZvcnRyYW4gMTAuMSBvbiBQUEMgY2Fubm90IGNyZWF0ZSBzaGFyZWQgbGlicyBpdHNlbGYKIAkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLQkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPQotCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9Jy1ycGF0aCAkbGliZGlyJwotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCiAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCiAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgogCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCiAJICBmaQogCSAgOzsKIAllc2FjCkBAIC00NDMxLDEzICs0ODc5LDEzIEBACiAgICAgICBmaQogICAgICAgOzsKIAotICAgIG5ldGJzZCopCisgICAgbmV0YnNkKiB8IG5ldGJzZGVsZiotZ251KQogICAgICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4vZGV2L251bGw7IHRoZW4KIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwogCXdsYXJjPQogICAgICAgZWxzZQotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGZpCiAgICAgICA7OwogCkBAIC00NDU1LDggKzQ5MDMsOCBAQAogCiBfTFRfRU9GCiAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwogICAgICAgZmkKQEAgLTQ1MDIsOCArNDk1MCw4IEBACiAKICAgICAqKQogICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCiAgICAgICBmaQpAQCAtNDU0Myw4ICs0OTkxLDEwIEBACiAgICAgICBlbHNlCiAJIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCiAJIyAtQyBtZWFucyBkZW1hbmdsZSB0byBBSVggbm0sIGJ1dCBtZWFucyBkb24ndCBkZW1hbmdsZSB3aXRoIEdOVSBubQorCSMgQWxzbywgQUlYIG5tIHRyZWF0cyB3ZWFrIGRlZmluZWQgc3ltYm9scyBsaWtlIG90aGVyIGdsb2JhbAorCSMgZGVmaW5lZCBzeW1ib2xzLCB3aGVyZWFzIEdOVSBubSBtYXJrcyB0aGVtIGFzICJXIi4KIAlpZiAkTk0gLVYgMj4mMSB8ICRHUkVQICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCi0JICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJworCSAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpIHx8IChcJCAyID09ICJXIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJwogCWVsc2UKIAkgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJDcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJwogCWZpCkBAIC00NjA2LDYgKzUwNTYsNyBAQAogCWlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgogCSAgc2hhcmVkX2ZsYWc9IiRzaGFyZWRfZmxhZyAiJyR7d2x9LUcnCiAJZmkKKwlfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT1ubwogICAgICAgZWxzZQogCSMgbm90IHVzaW5nIGdjYwogCWlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCkBAIC00NjMxLDkgKzUwODIsOSBAQAogCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm9rJwogICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQogICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuICRFQ0hPICJYJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgfCAkWHNlZDsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKICAgICAgIGVsc2UKIAlpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgogCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjovbGliJwpAQCAtNDY0MiwxNCArNTA5MywxOSBAQAogCWVsc2UKIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLQkgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKwkgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKIAkgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAogCSAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgogCSAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVybm90b2snCiAJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJvaycKLQkgICMgRXhwb3J0ZWQgc3ltYm9scyBjYW4gYmUgcHVsbGVkIGludG8gc2hhcmVkIG9iamVjdHMgZnJvbSBhcmNoaXZlcwotCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckY29udmVuaWVuY2UnCisJICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisJICAgICMgV2Ugb25seSB1c2UgdGhpcyBjb2RlIGZvciBHTlUgbGRzIHRoYXQgc3VwcG9ydCAtLXdob2xlLWFyY2hpdmUuCisJICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICBlbHNlCisJICAgICMgRXhwb3J0ZWQgc3ltYm9scyBjYW4gYmUgcHVsbGVkIGludG8gc2hhcmVkIG9iamVjdHMgZnJvbSBhcmNoaXZlcworCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyRjb252ZW5pZW5jZScKKwkgIGZpCiAJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9eWVzCiAJICAjIFRoaXMgaXMgc2ltaWxhciB0byBob3cgQUlYIHRyYWRpdGlvbmFsbHkgYnVpbGRzIGl0cyBzaGFyZWQgbGlicmFyaWVzLgogCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAke3dsfS1ibm9lbnRyeSAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tYkU6JGV4cG9ydF9zeW1ib2xzJHthbGxvd191bmRlZmluZWRfZmxhZ31+JEFSICRBUl9GTEFHUyAkb3V0cHV0X29iamRpci8kbGlibmFtZSRyZWxlYXNlLmEgJG91dHB1dF9vYmpkaXIvJHNvbmFtZScKQEAgLTQ2ODEsMjAgKzUxMzcsNjQgQEAKICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCiAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCiAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCi0gICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0gICAgICBsaWJleHQ9bGliCi0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGAkRUNITyAiWCRkZXBsaWJzIiB8ICRYc2VkIC1lICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCi0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSAgICAgIF9MVF9UQUdWQVIoZml4X3NyY2ZpbGVfcGF0aCwgJDEpPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLSAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgIGNsKikKKwkjIE5hdGl2ZSBNU1ZDCisJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisJX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT15ZXMKKwlfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9J0AnCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKwlsaWJleHQ9bGliCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisJc2hyZXh0X2NtZHM9Ii5kbGwiCisJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworCSAgZWxzZQorCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworCSAgZml+CisJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisJICBsaW5rbmFtZXM9JworCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworCV9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworCV9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9J19OVUxMX0lNUE9SVF9ERVNDUklQVE9SfF9JTVBPUlRfREVTQ1JJUFRPUl8uKicKKwlfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltbQUlUV11dW1sgXV0vcy8uKltbIF1dLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisJIyBEb24ndCB1c2UgcmFubGliCisJX0xUX1RBR1ZBUihvbGRfcG9zdGluc3RhbGxfY21kcywgJDEpPSdjaG1vZCA2NDQgJG9sZGxpYicKKwlfTFRfVEFHVkFSKHBvc3RsaW5rX2NtZHMsICQxKT0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKwkgICAgKi5leGV8Ki5FWEUpIDs7CisJICAgICopCisJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisJICAgICAgOzsKKwkgIGVzYWN+CisJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKwkgIGZpJworCTs7CisgICAgICAqKQorCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgorCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJworCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisJbGliZXh0PWxpYgorCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorCXNocmV4dF9jbWRzPSIuZGxsIgorCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorCV9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisJX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKwlfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKwk7OworICAgICAgZXNhYwogICAgICAgOzsKIAogICAgIGRhcndpbiogfCByaGFwc29keSopCkBAIC00NzA3LDEwICs1MjA3LDYgQEAKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCiAgICAgICA7OwogCi0gICAgZnJlZWJzZDEqKQotICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgOzsKLQogICAgICMgRnJlZUJTRCAyLjIuWzAxMl0gYWxsb3dzIHVzIHRvIGluY2x1ZGUgYysrcnQwLm8gdG8gZ2V0IEMrKyBjb25zdHJ1Y3RvcgogICAgICMgc3VwcG9ydC4gIEZ1dHVyZSB2ZXJzaW9ucyBkbyB0aGlzIGF1dG9tYXRpY2FsbHksIGJ1dCBhbiBleHBsaWNpdCBjKytydDAubwogICAgICMgZG9lcyBub3QgYnJlYWsgYW55dGhpbmcsIGFuZCBoZWxwcyBzaWduaWZpY2FudGx5IChhdCB0aGUgY29zdCBvZiBhIGxpdHRsZQpAQCAtNDcyMyw3ICs1MjE5LDcgQEAKICAgICAgIDs7CiAKICAgICAjIFVuZm9ydHVuYXRlbHksIG9sZGVyIHZlcnNpb25zIG9mIEZyZWVCU0QgMiBkbyBub3QgaGF2ZSB0aGlzIGZlYXR1cmUuCi0gICAgZnJlZWJzZDIqKQorICAgIGZyZWVic2QyLiopCiAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcwpAQCAtNDczMiw3ICs1MjI4LDcgQEAKIAogICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KQEAgLTQ3NDAsNyArNTIzNiw3IEBACiAKICAgICBocHV4OSopCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICBmaQpAQCAtNDc1NSwxNCArNTI1MSwxMyBAQAogICAgICAgOzsKIAogICAgIGhwdXgxMCopCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAtYSAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogICAgICAgZWxzZQogCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAgICAgICBmaQogICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCiAJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPScrYiAkbGliZGlyJwogCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcwogCV9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9eWVzCkBAIC00Nzc0LDE2ICs1MjY5LDE2IEBACiAgICAgICA7OwogCiAgICAgaHB1eDExKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzIC1hICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgogCWNhc2UgJGhvc3RfY3B1IGluCiAJaHBwYSo2NCopCiAJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJaWE2NCopCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJKikKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJZXNhYwogICAgICAgZWxzZQpAQCAtNDc5NSw3ICs1MjkwLDE0IEBACiAJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCSopCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwltNF9pZigkMSwgW10sIFsKKwkgICMgT2xkZXIgdmVyc2lvbnMgb2YgdGhlIDExLjAwIGNvbXBpbGVyIGRvIG5vdCB1bmRlcnN0YW5kIC1iIHlldAorCSAgIyAoSFA5MjQ1My0wMSBBLjExLjAxLjIwIGRvZXNuJ3QsIEhQOTI0NTMtMDEgQi4xMS5YLjM1MTc1LTM1MTc2LkdQIGRvZXMpCisJICBfTFRfTElOS0VSX09QVElPTihbaWYgJENDIHVuZGVyc3RhbmRzIC1iXSwKKwkgICAgX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX19iLCAkMSksIFstYl0sCisJICAgIFtfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyddLAorCSAgICBbX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyddKV0sCisJICBbX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnXSkKIAkgIDs7CiAJZXNhYwogICAgICAgZmkKQEAgLTQ4MjMsMTkgKzUzMjUsMzQgQEAKIAogICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCiAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotICAgICAgICBBQ19MSU5LX0lGRUxTRShpbnQgZm9vKHZvaWQpIHt9LAotICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgICApCi0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKwlBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbF0sCisJICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2xdLAorCSAgW3NhdmVfTERGTEFHUz0iJExERkxBR1MiCisJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorCSAgIEFDX0xJTktfSUZFTFNFKAorCSAgICAgW0FDX0xBTkdfU09VUkNFKAorCSAgICAgICAgW0FDX0xBTkdfQ0FTRShbQ10sIFtbaW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfV1dLAorCQkJICAgICAgW0MrK10sIFtbaW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfV1dLAorCQkJICAgICAgW0ZvcnRyYW4gNzddLCBbWworICAgICAgc3Vicm91dGluZSBmb28KKyAgICAgIGVuZF1dLAorCQkJICAgICAgW0ZvcnRyYW5dLCBbWworICAgICAgc3Vicm91dGluZSBmb28KKyAgICAgIGVuZF1dKV0pXSwKKwkgICAgICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzXSwKKwkgICAgICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm9dKQorICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIl0pCisJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCWZpCiAgICAgICBlbHNlCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZmkKICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT0nbm8nCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwpAQCAtNDg0NCw3ICs1MzYxLDcgQEAKICAgICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwogICAgICAgOzsKIAotICAgIG5ldGJzZCopCisgICAgbmV0YnNkKiB8IG5ldGJzZGVsZiotZ251KQogICAgICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4vZGV2L251bGw7IHRoZW4KIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJyAgIyBhLm91dAogICAgICAgZWxzZQpAQCAtNDg5NywxNyArNTQxNCwxNyBAQAogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcwogICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckRUNITyAiTElCUkFSWSAkbGlibmFtZSBJTklUSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyBEQVRBID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyAiIFNJTkdMRSBOT05TSEFSRUQiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lbXhleHAgJGxpYm9ianMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRDQyAtWmRsbCAtWmNydGRsbCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckRUNITyAiTElCUkFSWSAkbGlibmFtZSBJTklUSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lY2hvIERBVEEgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVjaG8gIiBTSU5HTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZWNobyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lbXhleHAgJGxpYm9ianMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRDQyAtWmRsbCAtWmNydGRsbCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCiAgICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0nZW14aW1wIC1vICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmEgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJwogICAgICAgOzsKIAogICAgIG9zZjMqKQogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgICAgICBmaQogICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPSdubycKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCkBAIC00OTE3LDEzICs1NDM0LDEzIEBACiAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2ZvciBpIGluIGBjYXQgJGV4cG9ydF9zeW1ib2xzYDsgZG8gcHJpbnRmICIlcyAlc1xcbiIgLWV4cG9ydGVkX3N5bWJvbCAiXCRpIiA+PiAkbGliLmV4cDsgZG9uZTsgcHJpbnRmICIlc1xcbiIgIi1oaWRkZW4iPj4gJGxpYi5leHB+Ci0JJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICRjb21waWxlcl9mbGFncyAkbGlib2JqcyAkZGVwbGlicyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4kUk0gJGxpYi5leHAnCisJJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICRjb21waWxlcl9mbGFncyAkbGlib2JqcyAkZGVwbGlicyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4kUk0gJGxpYi5leHAnCiAKIAkjIEJvdGggYyBhbmQgY3h4IGNvbXBpbGVyIHN1cHBvcnQgLXJwYXRoIGRpcmVjdGx5CiAJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1ycGF0aCAkbGliZGlyJwpAQCAtNDkzNiw5ICs1NDUzLDkgQEAKICAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16IGRlZnMnCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogCXdsYXJjPScke3dsfScKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKICAgICAgIGVsc2UKIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KIAkqIkNvbXBpbGVycyA1LjAiKikKQEAgLTUxMTQsMzYgKzU2MzEsMzggQEAKICAgICAgICMgVGVzdCB3aGV0aGVyIHRoZSBjb21waWxlciBpbXBsaWNpdGx5IGxpbmtzIHdpdGggLWxjIHNpbmNlIG9uIHNvbWUKICAgICAgICMgc3lzdGVtcywgLWxnY2MgaGFzIHRvIGNvbWUgYmVmb3JlIC1sYy4gSWYgZ2NjIGFscmVhZHkgcGFzc2VzIC1sYwogICAgICAgIyB0byBsZCwgZG9uJ3QgYWRkIC1sYyBiZWZvcmUgLWxnY2MuCi0gICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgLWxjIHNob3VsZCBiZSBleHBsaWNpdGx5IGxpbmtlZCBpbl0pCi0gICAgICAkUk0gY29uZnRlc3QqCi0gICAgICBlY2hvICIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKKyAgICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIC1sYyBzaG91bGQgYmUgZXhwbGljaXRseSBsaW5rZWQgaW5dLAorCVtsdF9jdl9dX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpLAorCVskUk0gY29uZnRlc3QqCisJZWNobyAiJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0CiAKLSAgICAgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpIDI+Y29uZnRlc3QuZXJyOyB0aGVuCi0gICAgICAgIHNvbmFtZT1jb25mdGVzdAotICAgICAgICBsaWI9Y29uZnRlc3QKLSAgICAgICAgbGlib2Jqcz1jb25mdGVzdC4kYWNfb2JqZXh0Ci0gICAgICAgIGRlcGxpYnM9Ci0gICAgICAgIHdsPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKQotCXBpY19mbGFnPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSkKLSAgICAgICAgY29tcGlsZXJfZmxhZ3M9LXYKLSAgICAgICAgbGlua2VyX2ZsYWdzPS12Ci0gICAgICAgIHZlcnN0cmluZz0KLSAgICAgICAgb3V0cHV0X29iamRpcj0uCi0gICAgICAgIGxpYm5hbWU9Y29uZnRlc3QKLSAgICAgICAgbHRfc2F2ZV9hbGxvd191bmRlZmluZWRfZmxhZz0kX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpCi0gICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KLSAgICAgICAgaWYgQUNfVFJZX0VWQUwoX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKSAyXD5cJjEgXHwgJEdSRVAgXCIgLWxjIFwiIFw+L2Rldi9udWxsIDJcPlwmMSkKLSAgICAgICAgdGhlbgotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCi0gICAgICAgIGVsc2UKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKLSAgICAgICAgZmkKLSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSRsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnCi0gICAgICBlbHNlCi0gICAgICAgIGNhdCBjb25mdGVzdC5lcnIgMT4mNQotICAgICAgZmkKLSAgICAgICRSTSBjb25mdGVzdCoKLSAgICAgIEFDX01TR19SRVNVTFQoWyRfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSldKQorCWlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpIDI+Y29uZnRlc3QuZXJyOyB0aGVuCisJICBzb25hbWU9Y29uZnRlc3QKKwkgIGxpYj1jb25mdGVzdAorCSAgbGlib2Jqcz1jb25mdGVzdC4kYWNfb2JqZXh0CisJICBkZXBsaWJzPQorCSAgd2w9JF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpCisJICBwaWNfZmxhZz0kX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpCisJICBjb21waWxlcl9mbGFncz0tdgorCSAgbGlua2VyX2ZsYWdzPS12CisJICB2ZXJzdHJpbmc9CisJICBvdXRwdXRfb2JqZGlyPS4KKwkgIGxpYm5hbWU9Y29uZnRlc3QKKwkgIGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKQorCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQorCSAgaWYgQUNfVFJZX0VWQUwoX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKSAyXD5cJjEgXHwgJEdSRVAgXCIgLWxjIFwiIFw+L2Rldi9udWxsIDJcPlwmMSkKKwkgIHRoZW4KKwkgICAgbHRfY3ZfW11fTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KKwkgIGVsc2UKKwkgICAgbHRfY3ZfW11fTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9eWVzCisJICBmaQorCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSRsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnCisJZWxzZQorCSAgY2F0IGNvbmZ0ZXN0LmVyciAxPiY1CisJZmkKKwkkUk0gY29uZnRlc3QqCisJXSkKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT0kbHRfY3ZfW11fTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSkKICAgICAgIDs7CiAgICAgZXNhYwogICBmaQpAQCAtNTE4MCw5ICs1Njk5LDYgQEAKIF9MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY10sIFsxXSwKICAgICBbRmxhZyB0byBoYXJkY29kZSAkbGliZGlyIGludG8gYSBiaW5hcnkgZHVyaW5nIGxpbmtpbmcuCiAgICAgVGhpcyBtdXN0IHdvcmsgZXZlbiBpZiAkbGliZGlyIGRvZXMgbm90IGV4aXN0XSkKLV9MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZF0sIFsxXSwKLSAgICBbW0lmIGxkIGlzIHVzZWQgd2hlbiBsaW5raW5nLCBmbGFnIHRvIGhhcmRjb2RlICRsaWJkaXIgaW50byBhIGJpbmFyeQotICAgIGR1cmluZyBsaW5raW5nLiAgVGhpcyBtdXN0IHdvcmsgZXZlbiBpZiAkbGliZGlyIGRvZXMgbm90IGV4aXN0XV0pCiBfTFRfVEFHREVDTChbXSwgW2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3JdLCBbMV0sCiAgICAgW1doZXRoZXIgd2UgbmVlZCBhIHNpbmdsZSAiLXJwYXRoIiBmbGFnIHdpdGggYSBzZXBhcmF0ZWQgYXJndW1lbnRdKQogX0xUX1RBR0RFQ0woW10sIFtoYXJkY29kZV9kaXJlY3RdLCBbMF0sCkBAIC01MjA4LDggKzU3MjQsNiBAQAogICAgIHRvIHJ1bnRpbWUgcGF0aCBsaXN0XSkKIF9MVF9UQUdERUNMKFtdLCBbbGlua19hbGxfZGVwbGlic10sIFswXSwKICAgICBbV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzXSkKLV9MVF9UQUdERUNMKFtdLCBbZml4X3NyY2ZpbGVfcGF0aF0sIFsxXSwKLSAgICBbRml4IHRoZSBzaGVsbCB2YXJpYWJsZSAkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyXSkKIF9MVF9UQUdERUNMKFtdLCBbYWx3YXlzX2V4cG9ydF9zeW1ib2xzXSwgWzBdLAogICAgIFtTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWRdKQogX0xUX1RBR0RFQ0woW10sIFtleHBvcnRfc3ltYm9sc19jbWRzXSwgWzJdLApAQCAtNTIyMCw2ICs1NzM0LDggQEAKICAgICBbU3ltYm9scyB0aGF0IG11c3QgYWx3YXlzIGJlIGV4cG9ydGVkXSkKIF9MVF9UQUdERUNMKFtdLCBbcHJlbGlua19jbWRzXSwgWzJdLAogICAgIFtDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlc10pCitfTFRfVEFHREVDTChbXSwgW3Bvc3RsaW5rX2NtZHNdLCBbMl0sCisgICAgW0NvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXNdKQogX0xUX1RBR0RFQ0woW10sIFtmaWxlX2xpc3Rfc3BlY10sIFsxXSwKICAgICBbU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzXSkKIGRubCBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZApAQCAtNTMxMywxNCArNTgyOSwxNSBAQAogXSkjIF9MVF9MQU5HX0NfQ09ORklHCiAKIAotIyBfTFRfUFJPR19DWFgKLSMgLS0tLS0tLS0tLS0tCi0jIFNpbmNlIEFDX1BST0dfQ1hYIGlzIGJyb2tlbiwgaW4gdGhhdCBpdCByZXR1cm5zIGcrKyBpZiB0aGVyZSBpcyBubyBjKysKLSMgY29tcGlsZXIsIHdlIGhhdmUgb3VyIG93biB2ZXJzaW9uIGhlcmUuCi1tNF9kZWZ1bihbX0xUX1BST0dfQ1hYXSwKLVsKLXB1c2hkZWYoW0FDX01TR19FUlJPUl0sIFtfbHRfY2F1Z2h0X0NYWF9lcnJvcj15ZXNdKQotQUNfUFJPR19DWFgKKyMgX0xUX0xBTkdfQ1hYX0NPTkZJRyhbVEFHXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciBhIEMrKyBjb21waWxlciBhcmUgc3VpdGFibHkKKyMgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRyB0byB3cml0ZQorIyB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCittNF9kZWZ1bihbX0xUX0xBTkdfQ1hYX0NPTkZJR10sCitbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCittNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCittNF9yZXF1aXJlKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSlkbmwKIGlmIHRlc3QgLW4gIiRDWFgiICYmICggdGVzdCAiWCRDWFgiICE9ICJYbm8iICYmCiAgICAgKCAodGVzdCAiWCRDWFgiID0gIlhnKysiICYmIGBnKysgLXYgPi9kZXYvbnVsbCAyPiYxYCApIHx8CiAgICAgKHRlc3QgIlgkQ1hYIiAhPSAiWGcrKyIpKSkgOyB0aGVuCkBAIC01MzI4LDIyICs1ODQ1LDYgQEAKIGVsc2UKICAgX2x0X2NhdWdodF9DWFhfZXJyb3I9eWVzCiBmaQotcG9wZGVmKFtBQ19NU0dfRVJST1JdKQotXSkjIF9MVF9QUk9HX0NYWAotCi1kbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6Ci1kbmwgQUNfREVGVU4oW19MVF9QUk9HX0NYWF0sIFtdKQotCi0KLSMgX0xUX0xBTkdfQ1hYX0NPTkZJRyhbVEFHXSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciBhIEMrKyBjb21waWxlciBhcmUgc3VpdGFibHkKLSMgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRyB0byB3cml0ZQotIyB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCi1tNF9kZWZ1bihbX0xUX0xBTkdfQ1hYX0NPTkZJR10sCi1bQUNfUkVRVUlSRShbX0xUX1BST0dfQ1hYXSlkbmwKLW00X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAotbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAogCiBBQ19MQU5HX1BVU0goQysrKQogX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCkBAIC01MzU1LDcgKzU4NTYsNiBAQAogX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubwogX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUsICQxKT1ubwogX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Ci1fTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0KIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPQogX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9bm8KIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPXVuc3VwcG9ydGVkCkBAIC01MzY1LDYgKzU4NjUsOCBAQAogX0xUX1RBR1ZBUihtb2R1bGVfZXhwc3ltX2NtZHMsICQxKT0KIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXVua25vd24KIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSRvbGRfYXJjaGl2ZV9jbWRzCitfTFRfVEFHVkFSKHJlbG9hZF9mbGFnLCAkMSk9JHJlbG9hZF9mbGFnCitfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSk9JHJlbG9hZF9jbWRzCiBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9CiBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CiBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT1ubwpAQCAtNTM5Niw2ICs1ODk4LDcgQEAKIAogICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgogICBsdF9zYXZlX0NDPSRDQworICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiAgIGx0X3NhdmVfTEQ9JExECiAgIGx0X3NhdmVfR0NDPSRHQ0MKICAgR0NDPSRHWFgKQEAgLTU0MTMsNiArNTkxNiw3IEBACiAgIGZpCiAgIHRlc3QgLXogIiR7TERDWFgrc2V0fSIgfHwgTEQ9JExEQ1hYCiAgIENDPSR7Q1hYLSJjKysifQorICBDRkxBR1M9JENYWEZMQUdTCiAgIGNvbXBpbGVyPSRDQwogICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCiAgIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKQEAgLTU0MzQsOCArNTkzOCw4IEBACiAgICAgICAjIENoZWNrIGlmIEdOVSBDKysgdXNlcyBHTlUgbGQgYXMgdGhlIHVuZGVybHlpbmcgbGlua2VyLCBzaW5jZSB0aGUKICAgICAgICMgYXJjaGl2aW5nIGNvbW1hbmRzIGJlbG93IGFzc3VtZSB0aGF0IEdOVSBsZCBpcyBiZWluZyB1c2VkLgogICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgotICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0gICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAkcGljX2ZsYWcgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgJHBpY19mbGFnIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogCiAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAgICAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKQEAgLTU0NjcsNyArNTk3MSw3IEBACiAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCiAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KICAgICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgotICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgIlwtTCInCisgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAtdiAiXkNvbmZpZ3VyZWQgd2l0aDoiIHwgJEdSRVAgIlwtTCInCiAKICAgICBlbHNlCiAgICAgICBHWFg9bm8KQEAgLTU1NzYsMTAgKzYwODAsMTAgQEAKICAgICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKICAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4gZW1wdHkKICAgICAgICAgICAjIGV4ZWN1dGFibGUuCi0gICAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKyAgICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQogICAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogCi0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuICRFQ0hPICJYJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgfCAkWHNlZDsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgogICAgICAgICBlbHNlCiAgICAgICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjovbGliJwpAQCAtNTU4OCwxNCArNjA5MiwxOSBAQAogICAgICAgICAgIGVsc2UKIAkgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAJICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLQkgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKwkgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAJICAgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCiAJICAgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KIAkgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVybm90b2snCiAJICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWJlcm9rJwotCSAgICAjIEV4cG9ydGVkIHN5bWJvbHMgY2FuIGJlIHB1bGxlZCBpbnRvIHNoYXJlZCBvYmplY3RzIGZyb20gYXJjaGl2ZXMKLQkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckY29udmVuaWVuY2UnCisJICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKwkgICAgICAjIFdlIG9ubHkgdXNlIHRoaXMgY29kZSBmb3IgR05VIGxkcyB0aGF0IHN1cHBvcnQgLS13aG9sZS1hcmNoaXZlLgorCSAgICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICAgIGVsc2UKKwkgICAgICAjIEV4cG9ydGVkIHN5bWJvbHMgY2FuIGJlIHB1bGxlZCBpbnRvIHNoYXJlZCBvYmplY3RzIGZyb20gYXJjaGl2ZXMKKwkgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyRjb252ZW5pZW5jZScKKwkgICAgZmkKIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPXllcwogCSAgICAjIFRoaXMgaXMgc2ltaWxhciB0byBob3cgQUlYIHRyYWRpdGlvbmFsbHkgYnVpbGRzIGl0cyBzaGFyZWQKIAkgICAgIyBsaWJyYXJpZXMuCkBAIC01NjI1LDI4ICs2MTM0LDc1IEBACiAgICAgICAgIDs7CiAKICAgICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKLSAgICAgICAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKLSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0gICAgICAgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KLSAgICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisJY2FzZSAkR1hYLCRjY19iYXNlbmFtZSBpbgorCSxjbCogfCBubyxjbCopCisJICAjIE5hdGl2ZSBNU1ZDCisJICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisJICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKwkgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCisJICBfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9J0AnCisJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorCSAgbGliZXh0PWxpYgorCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisJICBzaHJleHRfY21kcz0iLmRsbCIKKwkgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisJICAgICAgJFNFRCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisJICAgIGVsc2UKKwkgICAgICAkU0VEIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKwkgICAgZml+CisJICAgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKwkgICAgbGlua25hbWVzPScKKwkgICMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKwkgICMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCisJICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKwkgICMgRG9uJ3QgdXNlIHJhbmxpYgorCSAgX0xUX1RBR1ZBUihvbGRfcG9zdGluc3RhbGxfY21kcywgJDEpPSdjaG1vZCA2NDQgJG9sZGxpYicKKwkgIF9MVF9UQUdWQVIocG9zdGxpbmtfY21kcywgJDEpPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisJICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisJICAgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKwkgICAgICAqLmV4ZXwqLkVYRSkgOzsKKwkgICAgICAqKQorCQlsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisJCWx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisJCTs7CisJICAgIGVzYWN+CisJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkbHRfb3V0cHV0ZmlsZSJ+CisJICAgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisJICAgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKwkgICAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKwkgICAgZmknCisJICA7OworCSopCisJICAjIGcrKworCSAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKKwkgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJworCSAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorCSAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubworCSAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCiAKLSAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLSAgICAgICAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCi0gICAgICAgICAgIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLQkgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotICAgICAgICAgIGVsc2UKLQkgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0JICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0gICAgICAgICAgZml+Ci0gICAgICAgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotICAgICAgICBlbHNlCi0gICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgICBmaQotICAgICAgICA7OworCSAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisJICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKKwkgICAgIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisJICAgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworCSAgICBlbHNlCisJICAgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKwkgICAgZml+CisJICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKwkgIGVsc2UKKwkgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCSAgZmkKKwkgIDs7CisJZXNhYworCTs7CiAgICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQogICAgICAgICBfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFUygkMSkKIAk7OwpAQCAtNTY2OSw3ICs2MjI1LDcgQEAKICAgICAgICAgZXNhYwogICAgICAgICA7OwogCi0gICAgICBmcmVlYnNkW1sxMl1dKikKKyAgICAgIGZyZWVic2QyLiopCiAgICAgICAgICMgQysrIHNoYXJlZCBsaWJyYXJpZXMgcmVwb3J0ZWQgdG8gYmUgZmFpcmx5IGJyb2tlbiBiZWZvcmUKIAkjIHN3aXRjaCB0byBFTEYKICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwpAQCAtNTY4OCw2ICs2MjQ0LDExIEBACiAgICAgICBnbnUqKQogICAgICAgICA7OwogCisgICAgICBoYWlrdSopCisgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworICAgICAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKKyAgICAgICAgOzsKKwogICAgICAgaHB1eDkqKQogICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0rYiAke3dsfSRsaWJkaXInCiAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKQEAgLTU3MTIsMTEgKzYyNzMsMTEgQEAKICAgICAgICAgICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCiAgICAgICAgICAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAgICAgICAgICAgICAjIGRlcGVuZGVuY2llcy4KLSAgICAgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gKCRDQyAtYiAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSkgfCAkRUdSRVAgIlwtTCJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgJEVDSE8gIlgkbGlzdCIgfCAkWHNlZCcKKyAgICAgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gKCRDQyAtYiAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSkgfCAkRUdSRVAgIlwtTCJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogICAgICAgICAgICAgOzsKICAgICAgICAgICAqKQogICAgICAgICAgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLSAgICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CiAgICAgICAgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KQEAgLTU3NzcsNyArNjMzOCw3IEBACiAJICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCiAJICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKIAkgICAgIyBkZXBlbmRlbmNpZXMuCi0JICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gKCRDQyAtYiAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSkgfCAkR1JFUCAiXC1MImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyAkRUNITyAiWCRsaXN0IiB8ICRYc2VkJworCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCgkQ0MgLWIgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEpIHwgJEdSRVAgIlwtTCJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogCSAgICA7OwogICAgICAgICAgICopCiAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCkBAIC01Nzg3LDEwICs2MzQ4LDEwIEBACiAJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgICAgICAgIDs7CiAJICAgICAgICAgIGlhNjQqKQotCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgICAgICAgIDs7CiAJICAgICAgICAgICopCi0JICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgICAgICAgIDs7CiAJICAgICAgICBlc2FjCiAJICAgICAgZmkKQEAgLTU4MjAsNyArNjM4MSw3IEBACiAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCiAgICAgICAgICAgQ0MqKQogCSAgICAjIFNHSSBDKysKLQkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWFsbCAtbXVsdGlnb3QgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtYWxsIC1tdWx0aWdvdCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAogCSAgICAjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKIAkgICAgIyAiQ0MgLWFyIiwgd2hlcmUgIkNDIiBpcyB0aGUgSVJJWCBDKysgY29tcGlsZXIuICBUaGlzIGlzCkBAIC01ODMxLDkgKzYzOTIsOSBAQAogICAgICAgICAgICopCiAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCiAJICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkgICAgICBlbHNlCi0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAtbyAkbGliJworCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgLW8gJGxpYicKIAkgICAgICBmaQogCSAgICBmaQogCSAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKQEAgLTU4NDQsNyArNjQwNSw3IEBACiAgICAgICAgIF9MVF9UQUdWQVIoaW5oZXJpdF9ycGF0aCwgJDEpPXllcwogICAgICAgICA7OwogCi0gICAgICBsaW51eCogfCBrKmJzZCotZ251KQorICAgICAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgogICAgICAgICAgIEtDQyopCiAJICAgICMgS3VjayBhbmQgQXNzb2NpYXRlcywgSW5jLiAoS0FJKSBDKysgQ29tcGlsZXIKQEAgLTU4NjIsNyArNjQyMyw3IEBACiAJICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCiAJICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKIAkgICAgIyBkZXBlbmRlbmNpZXMuCi0JICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAtbyBsaWJjb25mdGVzdCRzaGFyZWRfZXh0IDI+JjEgfCAkR1JFUCAibGQiYDsgcm0gLWYgbGliY29uZnRlc3Qkc2hhcmVkX2V4dDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7ICRFQ0hPICJYJGxpc3QiIHwgJFhzZWQnCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAtbyBsaWJjb25mdGVzdCRzaGFyZWRfZXh0IDI+JjEgfCAkR1JFUCAibGQiYDsgcm0gLWYgbGliY29uZnRlc3Qkc2hhcmVkX2V4dDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIiRsaXN0IicKIAogCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKIAkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJwpAQCAtNTg5OSwyNiArNjQ2MCwyNiBAQAogICAgICAgICAgIHBnQ0MqIHwgcGdjcHAqKQogICAgICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBDKysgY29tcGlsZXIKIAkgICAgY2FzZSBgJENDIC1WYCBpbgotCSAgICAqcGdDQ1wgW1sxLTVdXSogfCAqcGdjcHBcIFtbMS01XV0qKQorCSAgICAqcGdDQ1wgW1sxLTVdXS4qIHwgKnBnY3BwXCBbWzEtNV1dLiopCiAJICAgICAgX0xUX1RBR1ZBUihwcmVsaW5rX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KIAkJcm0gLXJmICR0cGxkaXJ+CiAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9ianMgJGxpYm9ianMgJGNvbXBpbGVfZGVwbGlic34KLQkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAiJworCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAiJwogCSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgogCQlybSAtcmYgJHRwbGRpcn4KIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2xkb2JqcyRvbGRfZGVwbGlic34KLQkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYH4KKwkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGB+CiAJCSRSQU5MSUIgJG9sZGxpYicKIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgogCQlybSAtcmYgJHRwbGRpcn4KIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+Ci0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCisJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwogCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgogCQlybSAtcmYgJHRwbGRpcn4KIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+Ci0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKIAkgICAgICA7OwotCSAgICAqKSAjIFZlcnNpb24gNiB3aWxsIHVzZSB3ZWFrIHN5bWJvbHMKKwkgICAgKikgIyBWZXJzaW9uIDYgYW5kIGFib3ZlIHVzZSB3ZWFrIHN5bWJvbHMKIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKIAkgICAgICA7OwpAQCAtNTkyNiw3ICs2NDg3LDcgQEAKIAogCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXJwYXRoICR7d2x9JGxpYmRpcicKIAkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJwotCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKICAgICAgICAgICAgIDs7CiAJICBjeHgqKQogCSAgICAjIENvbXBhcSBDKysKQEAgLTU5NDUsOSArNjUwNiw5IEBACiAJICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCiAJICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKIAkgICAgIyBkZXBlbmRlbmNpZXMuCi0JICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAibGQiYDsgdGVtcGxpc3Q9YCRFQ0hPICJYJHRlbXBsaXN0IiB8ICRYc2VkIC1lICJzL1woXi4qbGQuKlwpXCggLipsZCAuKiRcKS9cMS8iYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7ICRFQ0hPICJYJGxpc3QiIHwgJFhzZWQnCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAibGQiYDsgdGVtcGxpc3Q9YGZ1bmNfZWNob19hbGwgIiR0ZW1wbGlzdCIgfCAkU0VEICJzL1woXi4qbGQuKlwpXCggLipsZCAuKiRcKS9cMS8iYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIlgkbGlzdCIgfCAkWHNlZCcKIAkgICAgOzsKLQkgIHhsKikKKwkgIHhsKiB8IG1waXhsKiB8IGJneGwqKQogCSAgICAjIElCTSBYTCA4LjAgb24gUFBDLCB3aXRoIEdOVSBsZAogCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwogCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCkBAIC01OTY3LDEzICs2NTI4LDEzIEBACiAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gLWgkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scycKIAkgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJwotCSAgICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJwogCSAgICAgIF9MVF9UQUdWQVIoY29tcGlsZXJfbmVlZHNfb2JqZWN0LCAkMSk9eWVzCiAKIAkgICAgICAjIE5vdCBzdXJlIHdoZXRoZXIgc29tZXRoaW5nIGJhc2VkIG9uCiAJICAgICAgIyAkQ0MgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IC1vIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQgMj4mMQogCSAgICAgICMgd291bGQgYmUgYmV0dGVyLgotCSAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSdlY2hvJworCSAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSdmdW5jX2VjaG9fYWxsJwogCiAJICAgICAgIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCiAJICAgICAgIyAiQ0MgLXhhciIsIHdoZXJlICJDQyIgaXMgdGhlIFN1biBDKysgY29tcGlsZXIuICBUaGlzIGlzCkBAIC02MDQyLDcgKzY2MDMsNyBAQAogCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJwogCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9IiR3bGFyYyInLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICciJHdsYXJjIictLW5vLXdob2xlLWFyY2hpdmUnCiAJICBmaQotCSAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9ZWNobworCSAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9ZnVuY19lY2hvX2FsbAogCWVsc2UKIAkgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KIAlmaQpAQCAtNjA3NywxNSArNjYzOCwxNSBAQAogCSAgICBjYXNlICRob3N0IGluCiAJICAgICAgb3NmMyopCiAJICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwogCQk7OwogCSAgICAgICopCiAJICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZm9yIGkgaW4gYGNhdCAkZXhwb3J0X3N5bWJvbHNgOyBkbyBwcmludGYgIiVzICVzXFxuIiAtZXhwb3J0ZWRfc3ltYm9sICJcJGkiID4+ICRsaWIuZXhwOyBkb25lfgogCSAgICAgICAgICBlY2hvICItaGlkZGVuIj4+ICRsaWIuZXhwfgotCSAgICAgICAgICAkQ0MgLXNoYXJlZCRhbGxvd191bmRlZmluZWRfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lICR7d2x9LWlucHV0ICR7d2x9JGxpYi5leHAgIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWJ+CisJICAgICAgICAgICRDQyAtc2hhcmVkJGFsbG93X3VuZGVmaW5lZF9mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgJHt3bH0taW5wdXQgJHt3bH0kbGliLmV4cCAgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4KIAkgICAgICAgICAgJFJNICRsaWIuZXhwJwogCSAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1ycGF0aCAkbGliZGlyJwogCQk7OwpAQCAtNjEwMSwxNyArNjY2MiwxNyBAQAogCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAJICAgICMgZGVwZW5kZW5jaWVzLgotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgImxkIiB8ICRHUkVQIC12ICJsZDoiYDsgdGVtcGxpc3Q9YCRFQ0hPICJYJHRlbXBsaXN0IiB8ICRYc2VkIC1lICJzL1woXi4qbGQuKlwpXCggLipsZC4qJFwpL1wxLyJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgJEVDSE8gIlgkbGlzdCIgfCAkWHNlZCcKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJsZCIgfCAkR1JFUCAtdiAibGQ6ImA7IHRlbXBsaXN0PWBmdW5jX2VjaG9fYWxsICIkdGVtcGxpc3QiIHwgJFNFRCAicy9cKF4uKmxkLipcKVwoIC4qbGQuKiRcKS9cMS8iYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIiRsaXN0IicKIAkgICAgOzsKIAkgICopCiAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgogCSAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCiAJICAgICAgY2FzZSAkaG9zdCBpbgogCSAgICAgICAgb3NmMyopCi0JICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkJICA7OwogCSAgICAgICAgKikKLQkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkJICA7OwogCSAgICAgIGVzYWMKIApAQCAtNjEyMSw3ICs2NjgyLDcgQEAKIAkgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCiAJICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCiAJICAgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCi0JICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgIlwtTCInCisJICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgLXYgIl5Db25maWd1cmVkIHdpdGg6IiB8ICRHUkVQICJcLUwiJwogCiAJICAgIGVsc2UKIAkgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKQEAgLTYxNTcsNyArNjcxOCw3IEBACiAKICAgICAgIHNvbGFyaXMqKQogICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgICAgIENDKikKKyAgICAgICAgICBDQyogfCBzdW5DQyopCiAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsJDEpPXllcwogCSAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtemRlZnMnCkBAIC02MTc4LDcgKzY3MzksNyBAQAogCSAgICBlc2FjCiAJICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwogCi0JICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSdlY2hvJworCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nZnVuY19lY2hvX2FsbCcKIAogCSAgICAjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKIAkgICAgIyAiQ0MgLXhhciIsIHdoZXJlICJDQyIgaXMgdGhlIFN1biBDKysgY29tcGlsZXIuICBUaGlzIGlzCkBAIC02MTk4LDE0ICs2NzU5LDE0IEBACiAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgogCSAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LXogJHt3bH1kZWZzJwogCSAgICAgIGlmICRDQyAtLXZlcnNpb24gfCAkR1JFUCAtdiAnXjJcLjcnID4gL2Rldi9udWxsOyB0aGVuCi0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJworCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCiAJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotCQkgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKwkJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwogCiAJICAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCiAJICAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KIAkgICAgICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgotCSAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgIlwtTCInCisJICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAtdiAiXkNvbmZpZ3VyZWQgd2l0aDoiIHwgJEdSRVAgIlwtTCInCiAJICAgICAgZWxzZQogCSAgICAgICAgIyBnKysgMi43IGFwcGVhcnMgdG8gcmVxdWlyZSBgLUcnIE5PVCBgLXNoYXJlZCcgb24gdGhpcwogCSAgICAgICAgIyBwbGF0Zm9ybS4KQEAgLTYyMTYsNyArNjc3Nyw3IEBACiAJICAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCiAJICAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KIAkgICAgICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgotCSAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtRyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJcLUwiJworCSAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtRyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQIC12ICJeQ29uZmlndXJlZCB3aXRoOiIgfCAkR1JFUCAiXC1MIicKIAkgICAgICBmaQogCiAJICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LVIgJHdsJGxpYmRpcicKQEAgLTYyNzAsNiArNjgzMSwxMCBAQAogICAgICAgICAgIENDKikKIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSckQ0MgLVRwcmVsaW5rX29iamVjdHMgJG9sZG9ianN+CisJICAgICAgJyIkX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSkiCisJICAgIF9MVF9UQUdWQVIocmVsb2FkX2NtZHMsICQxKT0nJENDIC1UcHJlbGlua19vYmplY3RzICRyZWxvYWRfb2Jqc34KKwkgICAgICAnIiRfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSkiCiAJICAgIDs7CiAJICAqKQogCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCkBAIC02MzI1LDYgKzY4OTAsNyBAQAogICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKIAogICBDQz0kbHRfc2F2ZV9DQworICBDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCiAgIExEQ1hYPSRMRAogICBMRD0kbHRfc2F2ZV9MRAogICBHQ0M9JGx0X3NhdmVfR0NDCkBAIC02MzM5LDYgKzY5MDUsMjkgQEAKIF0pIyBfTFRfTEFOR19DWFhfQ09ORklHCiAKIAorIyBfTFRfRlVOQ19TVFJJUE5BTUVfQ05GCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgZnVuY19zdHJpcG5hbWVfY25mIHByZWZpeCBzdWZmaXggbmFtZQorIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKyMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCisjIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKyMKKyMgVGhpcyBmdW5jdGlvbiBpcyBpZGVudGljYWwgdG8gdGhlIChub24tWFNJKSB2ZXJzaW9uIG9mIGZ1bmNfc3RyaXBuYW1lLAorIyBleGNlcHQgdGhpcyBvbmUgY2FuIGJlIHVzZWQgYnkgbTQgY29kZSB0aGF0IG1heSBiZSBleGVjdXRlZCBieSBjb25maWd1cmUsCisjIHJhdGhlciB0aGFuIHRoZSBsaWJ0b29sIHNjcmlwdC4KK200X2RlZnVuKFtfTFRfRlVOQ19TVFJJUE5BTUVfQ05GXSxbZG5sCitBQ19SRVFVSVJFKFtfTFRfREVDTF9TRURdKQorQUNfUkVRVUlSRShbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdKQorZnVuY19zdHJpcG5hbWVfY25mICgpCit7CisgIGNhc2UgJHsyfSBpbgorICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CisgIGVzYWMKK30gIyBmdW5jX3N0cmlwbmFtZV9jbmYKK10pIyBfTFRfRlVOQ19TVFJJUE5BTUVfQ05GCisKICMgX0xUX1NZU19ISURERU5fTElCREVQUyhbVEFHTkFNRV0pCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBGaWd1cmUgb3V0ICJoaWRkZW4iIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGZyb20gdmVyYm9zZQpAQCAtNjM0Nyw2ICs2OTM2LDcgQEAKICMgb2JqZWN0cywgbGlicmFyaWVzIGFuZCBsaWJyYXJ5IGZsYWdzLgogbTRfZGVmdW4oW19MVF9TWVNfSElEREVOX0xJQkRFUFNdLAogW200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorQUNfUkVRVUlSRShbX0xUX0ZVTkNfU1RSSVBOQU1FX0NORl0pZG5sCiAjIERlcGVuZGVuY2llcyB0byBwbGFjZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBvYmplY3QgYmVpbmcgbGlua2VkOgogX0xUX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpPQogX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKT0KQEAgLTYzOTYsNyArNjk4NiwyMCBAQAogICB9CiB9OwogX0xUX0VPRgorXSwgWyQxXSwgW0dPXSwgW2NhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCitwYWNrYWdlIGZvbworZnVuYyBmb28oKSB7Cit9CitfTFRfRU9GCiBdKQorCitfbHRfbGliZGVwc19zYXZlX0NGTEFHUz0kQ0ZMQUdTCitjYXNlICIkQ0MgJENGTEFHUyAiIGluICMoCisqXCAtZmx0bypcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLWx0byIgOzsKKypcIC1md2hvcHIqXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby13aG9wciIgOzsKKypcIC1mdXNlLWxpbmtlci1wbHVnaW4qXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby11c2UtbGlua2VyLXBsdWdpbiIgOzsKK2VzYWMKKwogZG5sIFBhcnNlIHRoZSBjb21waWxlciBvdXRwdXQgYW5kIGV4dHJhY3QgdGhlIG5lY2Vzc2FyeQogZG5sIG9iamVjdHMsIGxpYnJhcmllcyBhbmQgbGlicmFyeSBmbGFncy4KIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCkBAIC02NDA4LDcgKzcwMTEsNyBAQAogICBwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lPW5vCiAKICAgZm9yIHAgaW4gYGV2YWwgIiRvdXRwdXRfdmVyYm9zZV9saW5rX2NtZCJgOyBkbwotICAgIGNhc2UgJHAgaW4KKyAgICBjYXNlICR7cHJldn0ke3B9IGluCiAKICAgICAtTCogfCAtUiogfCAtbCopCiAgICAgICAgIyBTb21lIGNvbXBpbGVycyBwbGFjZSBzcGFjZSBiZXR3ZWVuICIte0wsUn0iIGFuZCB0aGUgcGF0aC4KQEAgLTY0MTcsMTMgKzcwMjAsMjIgQEAKICAgICAgICAgICB0ZXN0ICRwID0gIi1SIjsgdGhlbgogCSBwcmV2PSRwCiAJIGNvbnRpbnVlCi0gICAgICAgZWxzZQotCSBwcmV2PQogICAgICAgIGZpCiAKKyAgICAgICAjIEV4cGFuZCB0aGUgc3lzcm9vdCB0byBlYXNlIGV4dHJhY3RpbmcgdGhlIGRpcmVjdG9yaWVzIGxhdGVyLgorICAgICAgIGlmIHRlc3QgLXogIiRwcmV2IjsgdGhlbgorICAgICAgICAgY2FzZSAkcCBpbgorICAgICAgICAgLUwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1MJyAnJyAiJHAiOyBwcmV2PS1MOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKyAgICAgICAgIC1SKikgZnVuY19zdHJpcG5hbWVfY25mICctUicgJycgIiRwIjsgcHJldj0tUjsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisgICAgICAgICAtbCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLWwnICcnICIkcCI7IHByZXY9LWw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworICAgICAgICAgZXNhYworICAgICAgIGZpCisgICAgICAgY2FzZSAkcCBpbgorICAgICAgID0qKSBmdW5jX3N0cmlwbmFtZV9jbmYgJz0nICcnICIkcCI7IHA9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisgICAgICAgZXNhYwogICAgICAgIGlmIHRlc3QgIiRwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lIiA9IG5vOyB0aGVuCi0JIGNhc2UgJHAgaW4KLQkgLUwqIHwgLVIqKQorCSBjYXNlICR7cHJldn0gaW4KKwkgLUwgfCAtUikKIAkgICAjIEludGVybmFsIGNvbXBpbGVyIGxpYnJhcnkgcGF0aHMgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhvc2UKIAkgICAjIHByb3ZpZGVkIHRoZSB1c2VyLiAgVGhlIHBvc3RkZXBzIGFscmVhZHkgY29tZSBhZnRlciB0aGUKIAkgICAjIHVzZXIgc3VwcGxpZWQgbGlicyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgdGhlbS4KQEAgLTY0NDMsOCArNzA1NSwxMCBAQAogCSAgIF9MVF9UQUdWQVIocG9zdGRlcHMsICQxKT0iJHtfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSl9ICR7cHJldn0ke3B9IgogCSBmaQogICAgICAgIGZpCisgICAgICAgcHJldj0KICAgICAgICA7OwogCisgICAgKi5sdG8uJG9iamV4dCkgOzsgIyBJZ25vcmUgR0NDIExUTyBvYmplY3RzCiAgICAgKi4kb2JqZXh0KQogICAgICAgICMgVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHRlc3Qgb2JqZWN0IGZpbGUgb25seSBzaG93cyB1cAogICAgICAgICMgb25jZSBpbiB0aGUgY29tcGlsZXIgb3V0cHV0LgpAQCAtNjQ4MCw2ICs3MDk0LDcgQEAKIGZpCiAKICRSTSAtZiBjb25mZXN0LiRvYmpleHQKK0NGTEFHUz0kX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1MKIAogIyBQT1JUTUU6IG92ZXJyaWRlIGFib3ZlIHRlc3Qgb24gc3lzdGVtcyB3aGVyZSBpdCBpcyBicm9rZW4KIG00X2lmKFskMV0sIFtDWFhdLApAQCAtNjUxNiw3ICs3MTMxLDcgQEAKIAogc29sYXJpcyopCiAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gIENDKikKKyAgQ0MqIHwgc3VuQ0MqKQogICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcwogICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZwogICAgICMgaXQgaWYgaXQncyBpbiBDWFhGTEFHUy4gSWdub3JlIGxpYkNydW4gYXMKQEAgLTY1NjAsMzIgKzcxNzUsMTYgQEAKIF0pIyBfTFRfU1lTX0hJRERFTl9MSUJERVBTCiAKIAotIyBfTFRfUFJPR19GNzcKLSMgLS0tLS0tLS0tLS0tCi0jIFNpbmNlIEFDX1BST0dfRjc3IGlzIGJyb2tlbiwgaW4gdGhhdCBpdCByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcKLSMgaWYgdGhlcmUgaXMgbm8gZm9ydHJhbiBjb21waWxlciwgd2UgaGF2ZSBvdXIgb3duIHZlcnNpb24gaGVyZS4KLW00X2RlZnVuKFtfTFRfUFJPR19GNzddLAotWwotcHVzaGRlZihbQUNfTVNHX0VSUk9SXSwgW19sdF9kaXNhYmxlX0Y3Nz15ZXNdKQotQUNfUFJPR19GNzcKLWlmIHRlc3QgLXogIiRGNzciIHx8IHRlc3QgIlgkRjc3IiA9ICJYbm8iOyB0aGVuCi0gIF9sdF9kaXNhYmxlX0Y3Nz15ZXMKLWZpCi1wb3BkZWYoW0FDX01TR19FUlJPUl0pCi1dKSMgX0xUX1BST0dfRjc3Ci0KLWRubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKLWRubCBBQ19ERUZVTihbX0xUX1BST0dfRjc3XSwgW10pCi0KLQogIyBfTFRfTEFOR19GNzdfQ09ORklHKFtUQUddKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgRm9ydHJhbiA3NyBjb21waWxlciBhcmUKICMgc3VpdGFibHkgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRwogIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCiBtNF9kZWZ1bihbX0xUX0xBTkdfRjc3X0NPTkZJR10sCi1bQUNfUkVRVUlSRShbX0xUX1BST0dfRjc3XSlkbmwKLUFDX0xBTkdfUFVTSChGb3J0cmFuIDc3KQorW0FDX0xBTkdfUFVTSChGb3J0cmFuIDc3KQoraWYgdGVzdCAteiAiJEY3NyIgfHwgdGVzdCAiWCRGNzciID0gIlhubyI7IHRoZW4KKyAgX2x0X2Rpc2FibGVfRjc3PXllcworZmkKIAogX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCiBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9CkBAIC02NTk1LDcgKzcxOTQsNiBAQAogX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubwogX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUsICQxKT1ubwogX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Ci1fTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0KIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPQogX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9bm8KIF9MVF9UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9bm8KQEAgLTY2MDQsNiArNzIwMiw4IEBACiBfTFRfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpPQogX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9dW5rbm93bgogX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JG9sZF9hcmNoaXZlX2NtZHMKK19MVF9UQUdWQVIocmVsb2FkX2ZsYWcsICQxKT0kcmVsb2FkX2ZsYWcKK19MVF9UQUdWQVIocmVsb2FkX2NtZHMsICQxKT0kcmVsb2FkX2NtZHMKIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0KIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0KIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPW5vCkBAIC02NjQzLDcgKzcyNDMsOSBAQAogICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgogICBsdF9zYXZlX0NDPSIkQ0MiCiAgIGx0X3NhdmVfR0NDPSRHQ0MKKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwogICBDQz0ke0Y3Ny0iZjc3In0KKyAgQ0ZMQUdTPSRGRkxBR1MKICAgY29tcGlsZXI9JENDCiAgIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKICAgX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQpAQCAtNjY5NywzOCArNzI5OSwyNCBAQAogCiAgIEdDQz0kbHRfc2F2ZV9HQ0MKICAgQ0M9IiRsdF9zYXZlX0NDIgorICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKIGZpICMgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzCiAKIEFDX0xBTkdfUE9QCiBdKSMgX0xUX0xBTkdfRjc3X0NPTkZJRwogCiAKLSMgX0xUX1BST0dfRkMKLSMgLS0tLS0tLS0tLS0KLSMgU2luY2UgQUNfUFJPR19GQyBpcyBicm9rZW4sIGluIHRoYXQgaXQgcmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nCi0jIGlmIHRoZXJlIGlzIG5vIGZvcnRyYW4gY29tcGlsZXIsIHdlIGhhdmUgb3VyIG93biB2ZXJzaW9uIGhlcmUuCi1tNF9kZWZ1bihbX0xUX1BST0dfRkNdLAotWwotcHVzaGRlZihbQUNfTVNHX0VSUk9SXSwgW19sdF9kaXNhYmxlX0ZDPXllc10pCi1BQ19QUk9HX0ZDCi1pZiB0ZXN0IC16ICIkRkMiIHx8IHRlc3QgIlgkRkMiID0gIlhubyI7IHRoZW4KLSAgX2x0X2Rpc2FibGVfRkM9eWVzCi1maQotcG9wZGVmKFtBQ19NU0dfRVJST1JdKQotXSkjIF9MVF9QUk9HX0ZDCi0KLWRubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKLWRubCBBQ19ERUZVTihbX0xUX1BST0dfRkNdLCBbXSkKLQotCiAjIF9MVF9MQU5HX0ZDX0NPTkZJRyhbVEFHXSkKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgRm9ydHJhbiBjb21waWxlciBhcmUKICMgc3VpdGFibHkgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRwogIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCiBtNF9kZWZ1bihbX0xUX0xBTkdfRkNfQ09ORklHXSwKLVtBQ19SRVFVSVJFKFtfTFRfUFJPR19GQ10pZG5sCi1BQ19MQU5HX1BVU0goRm9ydHJhbikKK1tBQ19MQU5HX1BVU0goRm9ydHJhbikKKworaWYgdGVzdCAteiAiJEZDIiB8fCB0ZXN0ICJYJEZDIiA9ICJYbm8iOyB0aGVuCisgIF9sdF9kaXNhYmxlX0ZDPXllcworZmkKIAogX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCiBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9CkBAIC02NzM4LDcgKzczMjYsNiBAQAogX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubwogX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUsICQxKT1ubwogX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Ci1fTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0KIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPQogX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9bm8KIF9MVF9UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9bm8KQEAgLTY3NDcsNiArNzMzNCw4IEBACiBfTFRfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpPQogX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9dW5rbm93bgogX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JG9sZF9hcmNoaXZlX2NtZHMKK19MVF9UQUdWQVIocmVsb2FkX2ZsYWcsICQxKT0kcmVsb2FkX2ZsYWcKK19MVF9UQUdWQVIocmVsb2FkX2NtZHMsICQxKT0kcmVsb2FkX2NtZHMKIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0KIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0KIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPW5vCkBAIC02Nzg2LDcgKzczNzUsOSBAQAogICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgogICBsdF9zYXZlX0NDPSIkQ0MiCiAgIGx0X3NhdmVfR0NDPSRHQ0MKKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwogICBDQz0ke0ZDLSJmOTUifQorICBDRkxBR1M9JEZDRkxBR1MKICAgY29tcGlsZXI9JENDCiAgIEdDQz0kYWNfY3ZfZmNfY29tcGlsZXJfZ251CiAKQEAgLTY4NDIsNyArNzQzMyw4IEBACiAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgogCiAgIEdDQz0kbHRfc2F2ZV9HQ0MKLSAgQ0M9IiRsdF9zYXZlX0NDIgorICBDQz0kbHRfc2F2ZV9DQworICBDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCiBmaSAjIHRlc3QgIiRfbHRfZGlzYWJsZV9GQyIgIT0geWVzCiAKIEFDX0xBTkdfUE9QCkBAIC02ODc5LDEwICs3NDcxLDEyIEBACiBfTFRfTElOS0VSX0JPSUxFUlBMQVRFCiAKICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCi1sdF9zYXZlX0NDPSIkQ0MiCitsdF9zYXZlX0NDPSRDQworbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwogbHRfc2F2ZV9HQ0M9JEdDQwogR0NDPXllcwogQ0M9JHtHQ0otImdjaiJ9CitDRkxBR1M9JEdDSkZMQUdTCiBjb21waWxlcj0kQ0MKIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKIF9MVF9UQUdWQVIoTEQsICQxKT0iJExEIgpAQCAtNjg5Miw2ICs3NDg2LDggQEAKIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwogCiBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX1RBR1ZBUihyZWxvYWRfZmxhZywgJDEpPSRyZWxvYWRfZmxhZworX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSRyZWxvYWRfY21kcwogCiAjIyBDQVZFQVQgRU1QVE9SOgogIyMgVGhlcmUgaXMgbm8gZW5jYXBzdWxhdGlvbiB3aXRoaW4gdGhlIGZvbGxvd2luZyBtYWNyb3MsIGRvIG5vdCBjaGFuZ2UKQEAgLTY5MTEsMTAgKzc1MDcsODIgQEAKIEFDX0xBTkdfUkVTVE9SRQogCiBHQ0M9JGx0X3NhdmVfR0NDCi1DQz0iJGx0X3NhdmVfQ0MiCitDQz0kbHRfc2F2ZV9DQworQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwogXSkjIF9MVF9MQU5HX0dDSl9DT05GSUcKIAogCisjIF9MVF9MQU5HX0dPX0NPTkZJRyhbVEFHXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciB0aGUgR05VIEdvIGNvbXBpbGVyCisjIGFyZSBzdWl0YWJseSBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHCisjIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KK200X2RlZnVuKFtfTFRfTEFOR19HT19DT05GSUddLAorW0FDX1JFUVVJUkUoW0xUX1BST0dfR09dKWRubAorQUNfTEFOR19TQVZFCisKKyMgU291cmNlIGZpbGUgZXh0ZW5zaW9uIGZvciBHbyB0ZXN0IHNvdXJjZXMuCithY19leHQ9Z28KKworIyBPYmplY3QgZmlsZSBleHRlbnNpb24gZm9yIGNvbXBpbGVkIEdvIHRlc3Qgc291cmNlcy4KK29iamV4dD1vCitfTFRfVEFHVkFSKG9iamV4dCwgJDEpPSRvYmpleHQKKworIyBDb2RlIHRvIGJlIHVzZWQgaW4gc2ltcGxlIGNvbXBpbGUgdGVzdHMKK2x0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZT0icGFja2FnZSBtYWluOyBmdW5jIG1haW4oKSB7IH0iCisKKyMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBsaW5rIHRlc3RzCitsdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9J3BhY2thZ2UgbWFpbjsgZnVuYyBtYWluKCkgeyB9JworCisjIGx0bWFpbiBvbmx5IHVzZXMgJENDIGZvciB0YWdnZWQgY29uZmlndXJhdGlvbnMgc28gbWFrZSBzdXJlICRDQyBpcyBzZXQuCitfTFRfVEFHX0NPTVBJTEVSCisKKyMgc2F2ZSB3YXJuaW5ncy9ib2lsZXJwbGF0ZSBvZiBzaW1wbGUgdGVzdCBjb2RlCitfTFRfQ09NUElMRVJfQk9JTEVSUExBVEUKK19MVF9MSU5LRVJfQk9JTEVSUExBVEUKKworIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KK2x0X3NhdmVfQ0M9JENDCitsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCitsdF9zYXZlX0dDQz0kR0NDCitHQ0M9eWVzCitDQz0ke0dPQy0iZ2NjZ28ifQorQ0ZMQUdTPSRHT0ZMQUdTCitjb21waWxlcj0kQ0MKK19MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKK19MVF9UQUdWQVIoTEQsICQxKT0iJExEIgorX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQorCisjIEdvIGRpZCBub3QgZXhpc3QgYXQgdGhlIHRpbWUgR0NDIGRpZG4ndCBpbXBsaWNpdGx5IGxpbmsgbGliYyBpbi4KK19MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubworCitfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX1RBR1ZBUihyZWxvYWRfZmxhZywgJDEpPSRyZWxvYWRfZmxhZworX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSRyZWxvYWRfY21kcworCisjIyBDQVZFQVQgRU1QVE9SOgorIyMgVGhlcmUgaXMgbm8gZW5jYXBzdWxhdGlvbiB3aXRoaW4gdGhlIGZvbGxvd2luZyBtYWNyb3MsIGRvIG5vdCBjaGFuZ2UKKyMjIHRoZSBydW5uaW5nIG9yZGVyIG9yIG90aGVyd2lzZSBtb3ZlIHRoZW0gYXJvdW5kIHVubGVzcyB5b3Uga25vdyBleGFjdGx5CisjIyB3aGF0IHlvdSBhcmUgZG9pbmcuLi4KK2lmIHRlc3QgLW4gIiRjb21waWxlciI7IHRoZW4KKyAgX0xUX0NPTVBJTEVSX05PX1JUVEkoJDEpCisgIF9MVF9DT01QSUxFUl9QSUMoJDEpCisgIF9MVF9DT01QSUxFUl9DX08oJDEpCisgIF9MVF9DT01QSUxFUl9GSUxFX0xPQ0tTKCQxKQorICBfTFRfTElOS0VSX1NITElCUygkMSkKKyAgX0xUX0xJTktFUl9IQVJEQ09ERV9MSUJQQVRIKCQxKQorCisgIF9MVF9DT05GSUcoJDEpCitmaQorCitBQ19MQU5HX1JFU1RPUkUKKworR0NDPSRsdF9zYXZlX0dDQworQ0M9JGx0X3NhdmVfQ0MKK0NGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKK10pIyBfTFRfTEFOR19HT19DT05GSUcKKworCiAjIF9MVF9MQU5HX1JDX0NPTkZJRyhbVEFHXSkKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIHRoZSBXaW5kb3dzIHJlc291cmNlIGNvbXBpbGVyCkBAIC02OTQ2LDkgKzc2MTQsMTEgQEAKIAogIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KIGx0X3NhdmVfQ0M9IiRDQyIKK2x0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKIGx0X3NhdmVfR0NDPSRHQ0MKIEdDQz0KIENDPSR7UkMtIndpbmRyZXMifQorQ0ZMQUdTPQogY29tcGlsZXI9JENDCiBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCiBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCkBAIC02OTYxLDcgKzc2MzEsOCBAQAogCiBHQ0M9JGx0X3NhdmVfR0NDCiBBQ19MQU5HX1JFU1RPUkUKLUNDPSIkbHRfc2F2ZV9DQyIKK0NDPSRsdF9zYXZlX0NDCitDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCiBdKSMgX0xUX0xBTkdfUkNfQ09ORklHCiAKIApAQCAtNjk4MSw2ICs3NjUyLDEzIEBACiBkbmwgQUNfREVGVU4oW0xUX0FDX1BST0dfR0NKXSwgW10pCiAKIAorIyBMVF9QUk9HX0dPCisjIC0tLS0tLS0tLS0KK0FDX0RFRlVOKFtMVF9QUk9HX0dPXSwKK1tBQ19DSEVDS19UT09MKEdPQywgZ2NjZ28sKQorXSkKKworCiAjIExUX1BST0dfUkMKICMgLS0tLS0tLS0tLQogQUNfREVGVU4oW0xUX1BST0dfUkNdLApAQCAtNzAyMCw2ICs3Njk4LDE1IEBACiBBQ19TVUJTVChbT0JKRFVNUF0pCiBdKQogCisjIF9MVF9ERUNMX0RMTFRPT0wKKyMgLS0tLS0tLS0tLS0tLS0tLQorIyBFbnN1cmUgRExMVE9PTCB2YXJpYWJsZSBpcyBzZXQuCittNF9kZWZ1bihbX0xUX0RFQ0xfRExMVE9PTF0sCitbQUNfQ0hFQ0tfVE9PTChETExUT09MLCBkbGx0b29sLCBmYWxzZSkKK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKK19MVF9ERUNMKFtdLCBbRExMVE9PTF0sIFsxXSwgW0RMTCBjcmVhdGlvbiBwcm9ncmFtXSkKK0FDX1NVQlNUKFtETExUT09MXSkKK10pCiAKICMgX0xUX0RFQ0xfU0VECiAjIC0tLS0tLS0tLS0tLQpAQCAtNzExMyw4ICs3ODAwLDggQEAKICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCiB4c2lfc2hlbGw9bm8KICggX2x0X2R1bW15PSJhL2IvYyIKLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSAgICAgID0gYyxhL2IsLCBcCisgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisgICAgICA9IGMsYS9iLGIvYywgXAogICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAogICAmJiB4c2lfc2hlbGw9eWVzCkBAIC03MTUzLDIwOCArNzg0MCwxNjIgQEAKIF0pIyBfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVMKIAogCi0jIF9MVF9QUk9HX1hTSV9TSEVMTEZOUwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQm91cm5lIGFuZCBYU0kgY29tcGF0aWJsZSB2YXJpYW50cyBvZiBzb21lIHVzZWZ1bCBzaGVsbCBmdW5jdGlvbnMuCi1tNF9kZWZ1bihbX0xUX1BST0dfWFNJX1NIRUxMRk5TXSwKLVtjYXNlICR4c2lfc2hlbGwgaW4KLSAgeWVzKQotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi1mdW5jX2Rpcm5hbWUgKCkKLXsKLSAgY2FzZSAkezF9IGluCi0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0gIGVzYWMKLX0KLQotIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLWZ1bmNfYmFzZW5hbWUgKCkKLXsKLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotfQotCi0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0jIGNhbGw6Ci0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi17Ci0gIGNhc2UgJHsxfSBpbgotICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotICBlc2FjCi0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLX0KLQotIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi1mdW5jX3N0cmlwbmFtZSAoKQotewotICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLX0KLQotIyBmdW5jX29wdF9zcGxpdAotZnVuY19vcHRfc3BsaXQgKCkKLXsKLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci19Ci0KLSMgZnVuY19sbzJvIG9iamVjdAotZnVuY19sbzJvICgpCi17Ci0gIGNhc2UgJHsxfSBpbgotICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0gIGVzYWMKLX0KLQotIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLWZ1bmNfeGZvcm0gKCkKLXsKLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotfQotCi0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi1mdW5jX2FyaXRoICgpCi17Ci0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkWypdICkpCi19Ci0KLSMgZnVuY19sZW4gc3RyaW5nCi0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi1mdW5jX2xlbiAoKQotewotICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLX0KLQotX0xUX0VPRgotICAgIDs7Ci0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi1mdW5jX2Rpcm5hbWUgKCkKLXsKLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkZGlybmFtZSJgCi0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLSAgZWxzZQotICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLSAgZmkKLX0KLQotIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLWZ1bmNfYmFzZW5hbWUgKCkKLXsKLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGJhc2VuYW1lImAKLX0KLQotZG5sIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUKLWRubCBBIHBvcnRhYmxlIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBpcyBhbHJlYWR5IGRlZmluZWQgaW4gZ2VuZXJhbC5tNHNoCi1kbmwgc28gdGhlcmUgaXMgbm8gbmVlZCBmb3IgaXQgaGVyZS4KLQotIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi1mdW5jX3N0cmlwbmFtZSAoKQotewotICBjYXNlICR7Mn0gaW4KLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiWCR7M30iIFwKLSAgICAgICAgICAgfCAkWHNlZCAtZSAicyVeJHsxfSUlIiAtZSAicyVcXFxcJHsyfVwkJSUiYDs7Ci0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezN9IiBcCi0gICAgICAgICAgIHwgJFhzZWQgLWUgInMlXiR7MX0lJSIgLWUgInMlJHsyfVwkJSUiYDs7Ci0gIGVzYWMKLX0KLQotIyBzZWQgc2NyaXB0czoKLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtbXj1dXSpcKT0uKi9cMS87cScKLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bW149XV0qPS8vJwotCi0jIGZ1bmNfb3B0X3NwbGl0Ci1mdW5jX29wdF9zcGxpdCAoKQotewotICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJG15X3NlZF9sb25nX29wdCJgCi0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkbXlfc2VkX2xvbmdfYXJnImAKLX0KLQotIyBmdW5jX2xvMm8gb2JqZWN0Ci1mdW5jX2xvMm8gKCkKLXsKLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkbG8ybyJgCi19Ci0KLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi1mdW5jX3hmb3JtICgpCi17Ci0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgJ3MvXC5bW14uXV0qJC8ubG8vJ2AKLX0KLQotIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotZnVuY19hcml0aCAoKQotewotICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJFtAXSJgCi19Ci0KLSMgZnVuY19sZW4gc3RyaW5nCi0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi1mdW5jX2xlbiAoKQotewotICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiRbMV0iIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLX0KLQotX0xUX0VPRgotZXNhYwotCi1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLSAgeWVzKQotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLWZ1bmNfYXBwZW5kICgpCi17Ci0gIGV2YWwgIiRbMV0rPVwkWzJdIgotfQotX0xUX0VPRgotICAgIDs7Ci0gICopCi0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLQotIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotZnVuY19hcHBlbmQgKCkKLXsKLSAgZXZhbCAiJFsxXT1cJCRbMV1cJFsyXSIKLX0KLQotX0xUX0VPRgotICAgIDs7Ci0gIGVzYWMKKyMgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRSAoRlVOQ05BTUUsIFJFUExBQ0VNRU5ULUJPRFkpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJbiBgJGNmZ2ZpbGUnLCBsb29rIGZvciBmdW5jdGlvbiBGVU5DTkFNRSBkZWxpbWl0ZWQgYnkgYF5GVU5DTkFNRSAoKSQnIGFuZAorIyAnXn0gRlVOQ05BTUUgJywgYW5kIHJlcGxhY2UgaXRzIGJvZHkgd2l0aCBSRVBMQUNFTUVOVC1CT0RZLgorbTRfZGVmdW4oW19MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0VdLAorW2RubCB7CitzZWQgLWUgJy9eJDEgKCkkLywvXn0gIyAkMSAvY1wKKyQxICgpXAore1wKK200X2JwYXRzdWJzdHMoWyQyXSwgWyRdLCBbXFxdLCBbXlwoWwkgXVwpXSwgW1xcXDFdKQorfSAjIEV4dGVuZGVkLXNoZWxsICQxIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CiBdKQorCisKKyMgX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJlcGxhY2UgZXhpc3RpbmcgcG9ydGFibGUgaW1wbGVtZW50YXRpb25zIG9mIHNldmVyYWwgc2hlbGwgZnVuY3Rpb25zIHdpdGgKKyMgZXF1aXZhbGVudCBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbnMgd2hlcmUgdGhvc2UgZmVhdHVyZXMgYXJlIGF2YWlsYWJsZS4uCittNF9kZWZ1bihbX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOU10sCitbaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Rpcm5hbWVdLCBbZG5sCisgICAgY2FzZSAkezF9IGluCisgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworICAgIGVzYWNdKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYmFzZW5hbWVdLCBbZG5sCisgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99Il0pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZV0sIFtkbmwKKyAgICBjYXNlICR7MX0gaW4KKyAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CisgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CisgICAgZXNhYworICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJdKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3RyaXBuYW1lXSwgW2RubAorICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKyAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCisgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3NwbGl0X2xvbmdfb3B0XSwgW2RubAorICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfQorICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1dKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3BsaXRfc2hvcnRfb3B0XSwgW2RubAorICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99CisgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifV0pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19sbzJvXSwgW2RubAorICAgIGNhc2UgJHsxfSBpbgorICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKyAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworICAgIGVzYWNdKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfeGZvcm1dLCBbICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9dKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXJpdGhdLCBbICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkWypdICkpXSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2xlbl0sIFsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XSkKK2ZpCisKK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcHBlbmRdLCBbICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJdKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXBwZW5kX3F1b3RlZF0sIFtkbmwKKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IgorZG5sIG00IGV4cGFuc2lvbiB0dXJucyBcXFxcIGludG8gXFwsIGFuZCB0aGVuIHRoZSBzaGVsbCBldmFsIHR1cm5zIHRoYXQgaW50byBcCisgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJdKQorCisgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW1thLXpBLVpfXV1cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CitlbHNlCisgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFtbYS16QS1aX11dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CitmaQorCitpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorICBBQ19NU0dfV0FSTihbVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZV0pCitmaQorXSkKKworIyBfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZXRlcm1pbmUgd2hpY2ggZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zIHNob3VsZCBiZSB1c2VkIGJ5CisjIGZ1bmNfdG9faG9zdF9maWxlIChhbmQsIGltcGxpY2l0bHksIGJ5IGZ1bmNfdG9faG9zdF9wYXRoKS4gIFRoZXNlIGFyZSBuZWVkZWQKKyMgZm9yIGNlcnRhaW4gY3Jvc3MtY29tcGlsZSBjb25maWd1cmF0aW9ucyBhbmQgbmF0aXZlIG1pbmd3LgorbTRfZGVmdW4oW19MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TXSwKK1tBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCitBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfQlVJTERdKWRubAorQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXRdKQorQUNfQ0FDSEVfVkFMKGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQsCitbY2FzZSAkaG9zdCBpbgorICAqLSotbWluZ3cqICkKKyAgICBjYXNlICRidWlsZCBpbgorICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgICAgICAgIDs7CisgICAgICAqLSotY3lnd2luKiApCisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorICAgICAgICA7OworICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKyAgICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKKyAgKi0qLWN5Z3dpbiogKQorICAgIGNhc2UgJGJ1aWxkIGluCisgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKyAgICAgICAgOzsKKyAgICAgICotKi1jeWd3aW4qICkKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisgICAgICAgIDs7CisgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorICAgICAgICA7OworICAgIGVzYWMKKyAgICA7OworICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorICAgIDs7Citlc2FjCitdKQordG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorQUNfTVNHX1JFU1VMVChbJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWRdKQorX0xUX0RFQ0woW3RvX2hvc3RfZmlsZV9jbWRdLCBbbHRfY3ZfdG9faG9zdF9maWxlX2NtZF0sCisgICAgICAgICBbMF0sIFtjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdF0pZG5sCisKK0FDX01TR19DSEVDS0lORyhbaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdF0pCitBQ19DQUNIRV9WQUwobHRfY3ZfdG9fdG9vbF9maWxlX2NtZCwKK1sjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCitsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKK2Nhc2UgJGhvc3QgaW4KKyAgKi0qLW1pbmd3KiApCisgICAgY2FzZSAkYnVpbGQgaW4KKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICAgICAgICA7OworICAgIGVzYWMKKyAgICA7OworZXNhYworXSkKK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKK0FDX01TR19SRVNVTFQoWyRsdF9jdl90b190b29sX2ZpbGVfY21kXSkKK19MVF9ERUNMKFt0b190b29sX2ZpbGVfY21kXSwgW2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWRdLAorICAgICAgICAgWzBdLCBbY29udmVydCAkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdF0pZG5sCitdKSMgX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlMKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbHRvcHRpb25zLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9sdG9wdGlvbnMubTQKaW5kZXggMzQxNTFhMy4uNWQ5YWNkOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9sdG9wdGlvbnMubTQKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9sdG9wdGlvbnMubTQKQEAgLTEsMTMgKzEsMTQgQEAKICMgSGVscGVyIGZ1bmN0aW9ucyBmb3Igb3B0aW9uIGhhbmRsaW5nLiAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQogIwotIyAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorIyAgIEluYy4KICMgICBXcml0dGVuIGJ5IEdhcnkgVi4gVmF1Z2hhbiwgMjAwNAogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcwogIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKLSMgc2VyaWFsIDYgbHRvcHRpb25zLm00CisjIHNlcmlhbCA3IGx0b3B0aW9ucy5tNAogCiAjIFRoaXMgaXMgdG8gaGVscCBhY2xvY2FsIGZpbmQgdGhlc2UgbWFjcm9zLCBhcyBpdCBjYW4ndCBzZWUgbTRfZGVmaW5lLgogQUNfREVGVU4oW0xUT1BUSU9OU19WRVJTSU9OXSwgW200X2lmKFsxXSldKQpAQCAtMTI1LDcgKzEyNiw3IEBACiBbZW5hYmxlX3dpbjMyX2RsbD15ZXMKIAogY2FzZSAkaG9zdCBpbgotKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi1jZWdjYyopCisqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotY2VnY2MqKQogICBBQ19DSEVDS19UT09MKEFTLCBhcywgZmFsc2UpCiAgIEFDX0NIRUNLX1RPT0woRExMVE9PTCwgZGxsdG9vbCwgZmFsc2UpCiAgIEFDX0NIRUNLX1RPT0woT0JKRFVNUCwgb2JqZHVtcCwgZmFsc2UpCkBAIC0xMzMsMTMgKzEzNCwxMyBAQAogZXNhYwogCiB0ZXN0IC16ICIkQVMiICYmIEFTPWFzCi1fTFRfREVDTChbXSwgW0FTXSwgICAgICBbMF0sIFtBc3NlbWJsZXIgcHJvZ3JhbV0pZG5sCitfTFRfREVDTChbXSwgW0FTXSwgICAgICBbMV0sIFtBc3NlbWJsZXIgcHJvZ3JhbV0pZG5sCiAKIHRlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLV9MVF9ERUNMKFtdLCBbRExMVE9PTF0sIFswXSwgW0RMTCBjcmVhdGlvbiBwcm9ncmFtXSlkbmwKK19MVF9ERUNMKFtdLCBbRExMVE9PTF0sIFsxXSwgW0RMTCBjcmVhdGlvbiBwcm9ncmFtXSlkbmwKIAogdGVzdCAteiAiJE9CSkRVTVAiICYmIE9CSkRVTVA9b2JqZHVtcAotX0xUX0RFQ0woW10sIFtPQkpEVU1QXSwgWzBdLCBbT2JqZWN0IGR1bXBlciBwcm9ncmFtXSlkbmwKK19MVF9ERUNMKFtdLCBbT0JKRFVNUF0sIFsxXSwgW09iamVjdCBkdW1wZXIgcHJvZ3JhbV0pZG5sCiBdKSMgd2luMzItZGxsCiAKIEFVX0RFRlVOKFtBQ19MSUJUT09MX1dJTjMyX0RMTF0sCkBAIC0zMjUsOSArMzI2LDI0IEBACiAjIE1PREUgaXMgZWl0aGVyIGB5ZXMnIG9yIGBubycuICBJZiBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBgYm90aCcuCiBtNF9kZWZpbmUoW19MVF9XSVRIX1BJQ10sCiBbQUNfQVJHX1dJVEgoW3BpY10sCi0gICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtcGljXSwKKyAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1waWNAPDpAPVBLR1NAOj5AXSwKIAlbdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgQDw6QGRlZmF1bHQ9dXNlIGJvdGhAOj5AXSldLAotICAgIFtwaWNfbW9kZT0iJHdpdGh2YWwiXSwKKyAgICBbbHRfcD0ke1BBQ0tBR0UtZGVmYXVsdH0KKyAgICBjYXNlICR3aXRodmFsIGluCisgICAgeWVzfG5vKSBwaWNfbW9kZT0kd2l0aHZhbCA7OworICAgICopCisgICAgICBwaWNfbW9kZT1kZWZhdWx0CisgICAgICAjIExvb2sgYXQgdGhlIGFyZ3VtZW50IHdlIGdvdC4gIFdlIHVzZSBhbGwgdGhlIGNvbW1vbiBsaXN0IHNlcGFyYXRvcnMuCisgICAgICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9JFBBVEhfU0VQQVJBVE9SLCIKKyAgICAgIGZvciBsdF9wa2cgaW4gJHdpdGh2YWw7IGRvCisJSUZTPSIkbHRfc2F2ZV9pZnMiCisJaWYgdGVzdCAiWCRsdF9wa2ciID0gIlgkbHRfcCI7IHRoZW4KKwkgIHBpY19tb2RlPXllcworCWZpCisgICAgICBkb25lCisgICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICAgIDs7CisgICAgZXNhY10sCiAgICAgW3BpY19tb2RlPWRlZmF1bHRdKQogCiB0ZXN0IC16ICIkcGljX21vZGUiICYmIHBpY19tb2RlPW00X2RlZmF1bHQoWyQxXSwgW2RlZmF1bHRdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9sdHZlcnNpb24ubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0dmVyc2lvbi5tNAppbmRleCBiOGUxNTRmLi4wN2E4NjAyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0dmVyc2lvbi5tNAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0dmVyc2lvbi5tNApAQCAtNywxNyArNywxNyBAQAogIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKLSMgR2VuZXJhdGVkIGZyb20gbHR2ZXJzaW9uLmluLgorIyBAY29uZmlndXJlX2lucHV0QAogCi0jIHNlcmlhbCAzMDEyIGx0dmVyc2lvbi5tNAorIyBzZXJpYWwgMzMzNyBsdHZlcnNpb24ubTQKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wKIAotbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1ZFUlNJT05dLCBbMi4yLjZdKQotbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1JFVklTSU9OXSwgWzEuMzAxMl0pCittNF9kZWZpbmUoW0xUX1BBQ0tBR0VfVkVSU0lPTl0sIFsyLjQuMl0pCittNF9kZWZpbmUoW0xUX1BBQ0tBR0VfUkVWSVNJT05dLCBbMS4zMzM3XSkKIAogQUNfREVGVU4oW0xUVkVSU0lPTl9WRVJTSU9OXSwKLVttYWNyb192ZXJzaW9uPScyLjIuNicKLW1hY3JvX3JldmlzaW9uPScxLjMwMTInCitbbWFjcm9fdmVyc2lvbj0nMi40LjInCittYWNyb19yZXZpc2lvbj0nMS4zMzM3JwogX0xUX0RFQ0woLCBtYWNyb192ZXJzaW9uLCAwLCBbV2hpY2ggcmVsZWFzZSBvZiBsaWJ0b29sLm00IHdhcyB1c2VkP10pCiBfTFRfREVDTCgsIG1hY3JvX3JldmlzaW9uLCAwKQogXSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbHR+b2Jzb2xldGUubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0fm9ic29sZXRlLm00CmluZGV4IDYzN2JiMjAuLmM1NzNkYTkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbHR+b2Jzb2xldGUubTQKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9sdH5vYnNvbGV0ZS5tNApAQCAtMSwxMyArMSwxMyBAQAogIyBsdH5vYnNvbGV0ZS5tNCAtLSBhY2xvY2FsIHNhdGlzZnlpbmcgb2Jzb2xldGUgZGVmaW5pdGlvbnMuICAgIC0qLUF1dG9jb25mLSotCiAjCi0jICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNywgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMgICBXcml0dGVuIGJ5IFNjb3R0IEphbWVzIFJlbW5hbnQsIDIwMDQuCiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCiAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAotIyBzZXJpYWwgNCBsdH5vYnNvbGV0ZS5tNAorIyBzZXJpYWwgNSBsdH5vYnNvbGV0ZS5tNAogCiAjIFRoZXNlIGV4aXN0IGVudGlyZWx5IHRvIGZvb2wgYWNsb2NhbCB3aGVuIGJvb3RzdHJhcHBpbmcgbGlidG9vbC4KICMKQEAgLTc3LDcgKzc3LDYgQEAKIG00X2lmbmRlZihbX0xUX0FDX0xBTkdfQ1hYXSwJCVtBQ19ERUZVTihbX0xUX0FDX0xBTkdfQ1hYXSldKQogbTRfaWZuZGVmKFtfTFRfQUNfTEFOR19GNzddLAkJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19GNzddKV0pCiBtNF9pZm5kZWYoW19MVF9BQ19MQU5HX0dDSl0sCQlbQUNfREVGVU4oW19MVF9BQ19MQU5HX0dDSl0pXSkKLW00X2lmbmRlZihbQUNfTElCVE9PTF9SQ10sCQlbQUNfREVGVU4oW0FDX0xJQlRPT0xfUkNdKV0pCiBtNF9pZm5kZWYoW0FDX0xJQlRPT0xfTEFOR19DX0NPTkZJR10sCVtBQ19ERUZVTihbQUNfTElCVE9PTF9MQU5HX0NfQ09ORklHXSldKQogbTRfaWZuZGVmKFtfTFRfQUNfTEFOR19DX0NPTkZJR10sCVtBQ19ERUZVTihbX0xUX0FDX0xBTkdfQ19DT05GSUddKV0pCiBtNF9pZm5kZWYoW0FDX0xJQlRPT0xfTEFOR19DWFhfQ09ORklHXSwJW0FDX0RFRlVOKFtBQ19MSUJUT09MX0xBTkdfQ1hYX0NPTkZJR10pXSkKQEAgLTkwLDMgKzg5LDEwIEBACiBtNF9pZm5kZWYoW19MVF9BQ19MQU5HX1JDX0NPTkZJR10sCVtBQ19ERUZVTihbX0xUX0FDX0xBTkdfUkNfQ09ORklHXSldKQogbTRfaWZuZGVmKFtBQ19MSUJUT09MX0NPTkZJR10sCQlbQUNfREVGVU4oW0FDX0xJQlRPT0xfQ09ORklHXSldKQogbTRfaWZuZGVmKFtfTFRfQUNfRklMRV9MVERMTF9DXSwJW0FDX0RFRlVOKFtfTFRfQUNfRklMRV9MVERMTF9DXSldKQorbTRfaWZuZGVmKFtfTFRfUkVRVUlSRURfREFSV0lOX0NIRUNLU10sCVtBQ19ERUZVTihbX0xUX1JFUVVJUkVEX0RBUldJTl9DSEVDS1NdKV0pCittNF9pZm5kZWYoW19MVF9BQ19QUk9HX0NYWENQUF0sCQlbQUNfREVGVU4oW19MVF9BQ19QUk9HX0NYWENQUF0pXSkKK200X2lmbmRlZihbX0xUX1BSRVBBUkVfU0VEX1FVT1RFX1ZBUlNdLAlbQUNfREVGVU4oW19MVF9QUkVQQVJFX1NFRF9RVU9URV9WQVJTXSldKQorbTRfaWZuZGVmKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0sCVtBQ19ERUZVTihbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdKV0pCittNF9pZm5kZWYoW19MVF9QUk9HX0Y3N10sCQlbQUNfREVGVU4oW19MVF9QUk9HX0Y3N10pXSkKK200X2lmbmRlZihbX0xUX1BST0dfRkNdLAkJW0FDX0RFRlVOKFtfTFRfUFJPR19GQ10pXSkKK200X2lmbmRlZihbX0xUX1BST0dfQ1hYXSwJCVtBQ19ERUZVTihbX0xUX1BST0dfQ1hYXSldKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vTWFrZWZpbGUuYW0gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9NYWtlZmlsZS5hbQppbmRleCAyNTE5Mjc3Li5hZmNiZmI2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9NYWtlZmlsZS5hbQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9NYWtlZmlsZS5hbQpAQCAtMiw3ICsyLDcgQEAKIAogQVVUT01BS0VfT1BUSU9OUz1mb3JlaWduCiAKLUVYVFJBX0RJU1QgPSBmZmkuMyBmZmlfY2FsbC4zIGZmaV9wcmVwX2NpZi4zCitFWFRSQV9ESVNUID0gZmZpLjMgZmZpX2NhbGwuMyBmZmlfcHJlcF9jaWYuMyBmZmlfcHJlcF9jaWZfdmFyLjMKIAotbWFuX01BTlMgPSBmZmkuMyBmZmlfY2FsbC4zIGZmaV9wcmVwX2NpZi4zCittYW5fTUFOUyA9IGZmaS4zIGZmaV9jYWxsLjMgZmZpX3ByZXBfY2lmLjMgZmZpX3ByZXBfY2lmX3Zhci4zCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL01ha2VmaWxlLmluIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vTWFrZWZpbGUuaW4KaW5kZXggM2U0MGJlMi4uYjI5ZmIxNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vTWFrZWZpbGUuaW4KKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vTWFrZWZpbGUuaW4KQEAgLTEsOSArMSw5IEBACi0jIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjExIGZyb20gTWFrZWZpbGUuYW0uCisjIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjExLjMgZnJvbSBNYWtlZmlsZS5hbS4KICMgQGNvbmZpZ3VyZV9pbnB1dEAKIAogIyBDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsCi0jIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSMgSW5jLgorIyAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgogIyBUaGlzIE1ha2VmaWxlLmluIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgpAQCAtNjgsNiArNjgsMTIgQEAKIGFtX19iYXNlX2xpc3QgPSBcCiAgIHNlZCAnJCQhTjskJCFOOyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjtzL1xuLyAvZycgfCBcCiAgIHNlZCAnJCQhTjskJCFOOyQkIU47JCQhTjtzL1xuLyAvZycKK2FtX191bmluc3RhbGxfZmlsZXNfZnJvbV9kaXIgPSB7IFwKKyAgdGVzdCAteiAiJCRmaWxlcyIgXAorICAgIHx8IHsgdGVzdCAhIC1kICIkJGRpciIgJiYgdGVzdCAhIC1mICIkJGRpciIgJiYgdGVzdCAhIC1yICIkJGRpciI7IH0gXAorICAgIHx8IHsgZWNobyAiICggY2QgJyQkZGlyJyAmJiBybSAtZiIgJCRmaWxlcyAiKSI7IFwKKyAgICAgICAgICQoYW1fX2NkKSAiJCRkaXIiICYmIHJtIC1mICQkZmlsZXM7IH07IFwKKyAgfQogbWFuM2RpciA9ICQobWFuZGlyKS9tYW4zCiBhbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQobWFuM2RpcikiCiBOUk9GRiA9IG5yb2ZmCkBAIC03Niw2ICs4Miw3IEBACiBBQ0xPQ0FMID0gQEFDTE9DQUxACiBBTExPQ0EgPSBAQUxMT0NBQAogQU1UQVIgPSBAQU1UQVJACitBTV9MVExERkxBR1MgPSBAQU1fTFRMREZMQUdTQAogQU1fUlVOVEVTVEZMQUdTID0gQEFNX1JVTlRFU1RGTEFHU0AKIEFSID0gQEFSQAogQVVUT0NPTkYgPSBAQVVUT0NPTkZACkBAIC05Myw2ICsxMDAsNyBAQAogQ1lHUEFUSF9XID0gQENZR1BBVEhfV0AKIERFRlMgPSBAREVGU0AKIERFUERJUiA9IEBERVBESVJACitETExUT09MID0gQERMTFRPT0xACiBEU1lNVVRJTCA9IEBEU1lNVVRJTEAKIERVTVBCSU4gPSBARFVNUEJJTkAKIEVDSE9fQyA9IEBFQ0hPX0NACkBAIC0xMDAsNiArMTA4LDcgQEAKIEVDSE9fVCA9IEBFQ0hPX1RACiBFR1JFUCA9IEBFR1JFUEAKIEVYRUVYVCA9IEBFWEVFWFRACitGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFID0gQEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVACiBGR1JFUCA9IEBGR1JFUEAKIEdSRVAgPSBAR1JFUEAKIEhBVkVfTE9OR19ET1VCTEUgPSBASEFWRV9MT05HX0RPVUJMRUAKQEAgLTExOCw2ICsxMjcsNyBAQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACitNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACiBNS0RJUl9QID0gQE1LRElSX1BACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACkBAIC0xMzAsNiArMTQwLDcgQEAKIFBBQ0tBR0VfTkFNRSA9IEBQQUNLQUdFX05BTUVACiBQQUNLQUdFX1NUUklORyA9IEBQQUNLQUdFX1NUUklOR0AKIFBBQ0tBR0VfVEFSTkFNRSA9IEBQQUNLQUdFX1RBUk5BTUVACitQQUNLQUdFX1VSTCA9IEBQQUNLQUdFX1VSTEAKIFBBQ0tBR0VfVkVSU0lPTiA9IEBQQUNLQUdFX1ZFUlNJT05ACiBQQVRIX1NFUEFSQVRPUiA9IEBQQVRIX1NFUEFSQVRPUkAKIFJBTkxJQiA9IEBSQU5MSUJACkBAIC0xNDQsNiArMTU1LDcgQEAKIGFic19zcmNkaXIgPSBAYWJzX3NyY2RpckAKIGFic190b3BfYnVpbGRkaXIgPSBAYWJzX3RvcF9idWlsZGRpckAKIGFic190b3Bfc3JjZGlyID0gQGFic190b3Bfc3JjZGlyQAorYWNfY3RfQVIgPSBAYWNfY3RfQVJACiBhY19jdF9DQyA9IEBhY19jdF9DQ0AKIGFjX2N0X0RVTVBCSU4gPSBAYWNfY3RfRFVNUEJJTkAKIGFtX19pbmNsdWRlID0gQGFtX19pbmNsdWRlQApAQCAtMTc2LDcgKzE4OCw2IEBACiBsaWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACiBsb2NhbGVkaXIgPSBAbG9jYWxlZGlyQAogbG9jYWxzdGF0ZWRpciA9IEBsb2NhbHN0YXRlZGlyQAotbHRfRUNITyA9IEBsdF9FQ0hPQAogbWFuZGlyID0gQG1hbmRpckAKIG1rZGlyX3AgPSBAbWtkaXJfcEAKIG9sZGluY2x1ZGVkaXIgPSBAb2xkaW5jbHVkZWRpckAKQEAgLTE5OSw4ICsyMTAsOCBAQAogdG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKIHRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKIEFVVE9NQUtFX09QVElPTlMgPSBmb3JlaWduCi1FWFRSQV9ESVNUID0gZmZpLjMgZmZpX2NhbGwuMyBmZmlfcHJlcF9jaWYuMwotbWFuX01BTlMgPSBmZmkuMyBmZmlfY2FsbC4zIGZmaV9wcmVwX2NpZi4zCitFWFRSQV9ESVNUID0gZmZpLjMgZmZpX2NhbGwuMyBmZmlfcHJlcF9jaWYuMyBmZmlfcHJlcF9jaWZfdmFyLjMKK21hbl9NQU5TID0gZmZpLjMgZmZpX2NhbGwuMyBmZmlfcHJlcF9jaWYuMyBmZmlfcHJlcF9jaWZfdmFyLjMKIGFsbDogYWxsLWFtCiAKIC5TVUZGSVhFUzoKQEAgLTI3NSw5ICsyODYsNyBAQAogCSAgc2VkIC1uICcvXC4zW2Etel0qJCQvcCc7IFwKIAl9IHwgc2VkIC1lICdzLC4qLywsO2g7cywuKlwuLCw7cyxeW14zXVswLTlhLXpdKiQkLDMsO3gnIFwKIAkgICAgICAtZSAncyxcLlswLTlhLXpdKiQkLCw7JCh0cmFuc2Zvcm0pO0c7cyxcbiwuLCdgOyBcCi0JdGVzdCAteiAiJCRmaWxlcyIgfHwgeyBcCi0JICBlY2hvICIgKCBjZCAnJChERVNURElSKSQobWFuM2RpciknICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAotCSAgY2QgIiQoREVTVERJUikkKG1hbjNkaXIpIiAmJiBybSAtZiAkJGZpbGVzOyB9CisJZGlyPSckKERFU1RESVIpJChtYW4zZGlyKSc7ICQoYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpcikKIHRhZ3M6IFRBR1MKIFRBR1M6CiAKQEAgLTM0NSwxMCArMzU0LDE1IEBACiAKIGluc3RhbGxjaGVjazogaW5zdGFsbGNoZWNrLWFtCiBpbnN0YWxsLXN0cmlwOgotCSQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCi0JICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKLQkgIGB0ZXN0IC16ICckKFNUUklQKScgfHwgXAotCSAgICBlY2hvICJJTlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknImAgaW5zdGFsbAorCWlmIHRlc3QgLXogJyQoU1RSSVApJzsgdGhlbiBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgICBpbnN0YWxsOyBcCisJZWxzZSBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgIklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciIGluc3RhbGw7IFwKKwlmaQogbW9zdGx5Y2xlYW4tZ2VuZXJpYzoKIAogY2xlYW4tZ2VuZXJpYzoKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL2ZmaS4zIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vZmZpLjMKaW5kZXggMThiNWQ1ZC4uMWYxZDMwMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vZmZpLjMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vZmZpLjMKQEAgLTE2LDYgKzE2LDE1IEBACiAuRmEgImZmaV90eXBlICoqYXR5cGVzIgogLkZjCiAuRnQgdm9pZAorLkZvIGZmaV9wcmVwX2NpZl92YXIKKy5GYSAiZmZpX2NpZiAqY2lmIgorLkZhICJmZmlfYWJpIGFiaSIKKy5GYSAidW5zaWduZWQgaW50IG5maXhlZGFyZ3MiCisuRmEgInVuc2lnbmVkIGludCBudG90YWxhcmdzIgorLkZhICJmZmlfdHlwZSAqcnR5cGUiCisuRmEgImZmaV90eXBlICoqYXR5cGVzIgorLkZjCisuRnQgdm9pZAogLkZvIGZmaV9jYWxsCiAuRmEgImZmaV9jaWYgKmNpZiIKIC5GYSAidm9pZCAoKmZuKSh2b2lkKSIKQEAgLTI4LDQgKzM3LDUgQEAKIHRoZSBjYWxsZWQgZnVuY3Rpb24ncyBpbnRlcmZhY2UgYXQgY29tcGlsZSB0aW1lLgogLlNoIFNFRSBBTFNPCiAuWHIgZmZpX3ByZXBfY2lmIDMgLAorLlhyIGZmaV9wcmVwX2NpZl92YXIgMyAsCiAuWHIgZmZpX2NhbGwgMwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vZmZpX3ByZXBfY2lmLjMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9mZmlfcHJlcF9jaWYuMwppbmRleCA5NDM2YjMxLi5lMWJkYmQ3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9mZmlfcHJlcF9jaWYuMworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9mZmlfcHJlcF9jaWYuMwpAQCAtMzcsNyArMzcsOSBAQAogcG9pbnRzIHRvIGFuCiAuTm0gZmZpX3R5cGUKIHRoYXQgZGVzY3JpYmVzIHRoZSBkYXRhIHR5cGUsIHNpemUgYW5kIGFsaWdubWVudCBvZiB0aGUKLXJldHVybiB2YWx1ZS4KK3JldHVybiB2YWx1ZS4gTm90ZSB0aGF0IHRvIGNhbGwgYSB2YXJpYWRpYyBmdW5jdGlvbgorLk5tIGZmaV9wcmVwX2NpZl92YXIKK211c3QgYmUgdXNlZCBpbnN0ZWFkLgogLlNoIFJFVFVSTiBWQUxVRVMKIFVwb24gc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLAogLk5tIGZmaV9wcmVwX2NpZgpAQCAtNjMsNCArNjUsNiBAQAogLgogLlNoIFNFRSBBTFNPCiAuWHIgZmZpIDMgLAotLlhyIGZmaV9jYWxsIDMgCisuWHIgZmZpX2NhbGwgMyAsCisuWHIgZmZpX3ByZXBfY2lmX3ZhciAzCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL2ZmaV9wcmVwX2NpZl92YXIuMyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL2ZmaV9wcmVwX2NpZl92YXIuMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTE5ZDBiCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vZmZpX3ByZXBfY2lmX3Zhci4zCkBAIC0wLDAgKzEsNzMgQEAKKy5EZCBKYW51YXJ5IDI1LCAyMDExCisuRHQgZmZpX3ByZXBfY2lmX3ZhciAzCisuU2ggTkFNRQorLk5tIGZmaV9wcmVwX2NpZl92YXIKKy5OZCBQcmVwYXJlIGEKKy5ObSBmZmlfY2lmCitzdHJ1Y3R1cmUgZm9yIHVzZSB3aXRoCisuTm0gZmZpX2NhbGwKK2ZvciB2YXJpYWRpYyBmdW5jdGlvbnMuCisuU2ggU1lOT1BTSVMKKy5JbiBmZmkuaAorLkZ0IGZmaV9zdGF0dXMKKy5GbyBmZmlfcHJlcF9jaWZfdmFyCisuRmEgImZmaV9jaWYgKmNpZiIKKy5GYSAiZmZpX2FiaSBhYmkiCisuRmEgInVuc2lnbmVkIGludCBuZml4ZWRhcmdzIgorLkZhICJ1bnNpZ25lZCBpbnQgbnRvdGFsYXJncyIKKy5GYSAiZmZpX3R5cGUgKnJ0eXBlIgorLkZhICJmZmlfdHlwZSAqKmF0eXBlcyIKKy5GYworLlNoIERFU0NSSVBUSU9OCitUaGUKKy5ObSBmZmlfcHJlcF9jaWZfdmFyCitmdW5jdGlvbiBwcmVwYXJlcyBhCisuTm0gZmZpX2NpZgorc3RydWN0dXJlIGZvciB1c2Ugd2l0aAorLk5tIGZmaV9jYWxsCitmb3IgdmFyaWFkaWMgZnVuY3Rpb25zLgorLkZhIGFiaQorc3BlY2lmaWVzIGEgc2V0IG9mIGNhbGxpbmcgY29udmVudGlvbnMgdG8gdXNlLgorLkZhIGF0eXBlcworaXMgYW4gYXJyYXkgb2YKKy5GYSBudG90YWxhcmdzCitwb2ludGVycyB0bworLk5tIGZmaV90eXBlCitzdHJ1Y3RzIHRoYXQgZGVzY3JpYmUgdGhlIGRhdGEgdHlwZSwgc2l6ZSBhbmQgYWxpZ25tZW50IG9mIGVhY2ggYXJndW1lbnQuCisuRmEgcnR5cGUKK3BvaW50cyB0byBhbgorLk5tIGZmaV90eXBlCit0aGF0IGRlc2NyaWJlcyB0aGUgZGF0YSB0eXBlLCBzaXplIGFuZCBhbGlnbm1lbnQgb2YgdGhlCityZXR1cm4gdmFsdWUuCisuRmEgbmZpeGVkYXJncworbXVzdCBjb250YWluIHRoZSBudW1iZXIgb2YgZml4ZWQgKG5vbi12YXJpYWRpYykgYXJndW1lbnRzLgorTm90ZSB0aGF0IHRvIGNhbGwgYSBub24tdmFyaWFkaWMgZnVuY3Rpb24KKy5ObSBmZmlfcHJlcF9jaWYKK211c3QgYmUgdXNlZC4KKy5TaCBSRVRVUk4gVkFMVUVTCitVcG9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiwKKy5ObSBmZmlfcHJlcF9jaWZfdmFyCityZXR1cm5zCisuTm0gRkZJX09LIC4KK0l0IHdpbGwgcmV0dXJuCisuTm0gRkZJX0JBRF9UWVBFREVGCitpZgorLkZhIGNpZgoraXMKKy5ObSBOVUxMCitvcgorLkZhIGF0eXBlcworb3IKKy5GYSBydHlwZQoraXMgbWFsZm9ybWVkLiBJZgorLkZhIGFiaQorZG9lcyBub3QgcmVmZXIgdG8gYSB2YWxpZCBBQkksCisuTm0gRkZJX0JBRF9BQkkKK3dpbGwgYmUgcmV0dXJuZWQuIEF2YWlsYWJsZSBBQklzIGFyZQorZGVmaW5lZCBpbgorLk5tIDxmZml0YXJnZXQuaD4KKy4KKy5TaCBTRUUgQUxTTworLlhyIGZmaSAzICwKKy5YciBmZmlfY2FsbCAzICwKKy5YciBmZmlfcHJlcF9jaWYgMwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9taXNzaW5nIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9taXNzaW5nCmluZGV4IDg5NGU3ODYuLjI4MDU1ZDIgMTAwNzU1Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWlzc2luZworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21pc3NpbmcKQEAgLTEsMTAgKzEsMTAgQEAKICMhIC9iaW4vc2gKICMgQ29tbW9uIHN0dWIgZm9yIGEgZmV3IG1pc3NpbmcgR05VIHByb2dyYW1zIHdoaWxlIGluc3RhbGxpbmcuCiAKLXNjcmlwdHZlcnNpb249MjAwNS0wNi0wOC4yMQorc2NyaXB0dmVyc2lvbj0yMDA5LTA0LTI4LjIxOyAjIFVUQwogCi0jIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OSwgMjAwMCwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNQotIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTksIDIwMDAsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsCisjIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjIE9yaWdpbmFsbHkgYnkgRnJhbixjb2lzIFBpbmFyZCA8cGluYXJkQGlyby51bW9udHJlYWwuY2E+LCAxOTk2LgogCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CkBAIC0xOCw5ICsxOCw3IEBACiAjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAKICMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQotIyAwMjExMC0xMzAxLCBVU0EuCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogCiAjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKICMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCkBAIC0zMyw2ICszMSw4IEBACiBmaQogCiBydW49Ogorc2VkX291dHB1dD0ncy8uKiAtLW91dHB1dFsgPV1cKFteIF0qXCkuKi9cMS9wJworc2VkX21pbnVzbz0ncy8uKiAtbyBcKFteIF0qXCkuKi9cMS9wJwogCiAjIEluIHRoZSBjYXNlcyB3aGVyZSB0aGlzIG1hdHRlcnMsIGBtaXNzaW5nJyBpcyBiZWluZyBydW4gaW4gdGhlCiAjIHNyY2RpciBhbHJlYWR5LgpAQCAtNDQsNyArNDQsNyBAQAogCiBtc2c9Im1pc3Npbmcgb24geW91ciBzeXN0ZW0iCiAKLWNhc2UgIiQxIiBpbgorY2FzZSAkMSBpbgogLS1ydW4pCiAgICMgVHJ5IHRvIHJ1biByZXF1ZXN0ZWQgcHJvZ3JhbSwgYW5kIGp1c3QgZXhpdCBpZiBpdCBzdWNjZWVkcy4KICAgcnVuPQpAQCAtNzcsNiArNzcsNyBAQAogICBhY2xvY2FsICAgICAgdG91Y2ggZmlsZSBcYGFjbG9jYWwubTQnCiAgIGF1dG9jb25mICAgICB0b3VjaCBmaWxlIFxgY29uZmlndXJlJwogICBhdXRvaGVhZGVyICAgdG91Y2ggZmlsZSBcYGNvbmZpZy5oLmluJworICBhdXRvbTR0ZSAgICAgdG91Y2ggdGhlIG91dHB1dCBmaWxlLCBvciBjcmVhdGUgYSBzdHViIG9uZQogICBhdXRvbWFrZSAgICAgdG91Y2ggYWxsIFxgTWFrZWZpbGUuaW4nIGZpbGVzCiAgIGJpc29uICAgICAgICBjcmVhdGUgXGB5LnRhYi5bY2hdJywgaWYgcG9zc2libGUsIGZyb20gZXhpc3RpbmcgLltjaF0KICAgZmxleCAgICAgICAgIGNyZWF0ZSBcYGxleC55eS5jJywgaWYgcG9zc2libGUsIGZyb20gZXhpc3RpbmcgLmMKQEAgLTg2LDYgKzg3LDkgQEAKICAgdGFyICAgICAgICAgIHRyeSB0YXIsIGdudXRhciwgZ3RhciwgdGhlbiB0YXIgd2l0aG91dCBub24tcG9ydGFibGUgZmxhZ3MKICAgeWFjYyAgICAgICAgIGNyZWF0ZSBcYHkudGFiLltjaF0nLCBpZiBwb3NzaWJsZSwgZnJvbSBleGlzdGluZyAuW2NoXQogCitWZXJzaW9uIHN1ZmZpeGVzIHRvIFBST0dSQU0gYXMgd2VsbCBhcyB0aGUgcHJlZml4ZXMgXGBnbnUtJywgXGBnbnUnLCBhbmQKK1xgZycgYXJlIGlnbm9yZWQgd2hlbiBjaGVja2luZyB0aGUgbmFtZS4KKwogU2VuZCBidWcgcmVwb3J0cyB0byA8YnVnLWF1dG9tYWtlQGdudS5vcmc+LiIKICAgICBleGl0ICQ/CiAgICAgOzsKQEAgLTEwMywxNSArMTA3LDIyIEBACiAKIGVzYWMKIAorIyBub3JtYWxpemUgcHJvZ3JhbSBuYW1lIHRvIGNoZWNrIGZvci4KK3Byb2dyYW09YGVjaG8gIiQxIiB8IHNlZCAnCisgIHMvXmdudS0vLzsgdAorICBzL15nbnUvLzsgdAorICBzL15nLy87IHQnYAorCiAjIE5vdyBleGl0IGlmIHdlIGhhdmUgaXQsIGJ1dCBpdCBmYWlsZWQuICBBbHNvIGV4aXQgbm93IGlmIHdlCiAjIGRvbid0IGhhdmUgaXQgYW5kIC0tdmVyc2lvbiB3YXMgcGFzc2VkIChtb3N0IGxpa2VseSB0byBkZXRlY3QKLSMgdGhlIHByb2dyYW0pLgotY2FzZSAiJDEiIGluCi0gIGxleHx5YWNjKQorIyB0aGUgcHJvZ3JhbSkuICBUaGlzIGlzIGFib3V0IG5vbi1HTlUgcHJvZ3JhbXMsIHNvIHVzZSAkMSBub3QKKyMgJHByb2dyYW0uCitjYXNlICQxIGluCisgIGxleCp8eWFjYyopCiAgICAgIyBOb3QgR05VIHByb2dyYW1zLCB0aGV5IGRvbid0IGhhdmUgLS12ZXJzaW9uLgogICAgIDs7CiAKLSAgdGFyKQorICB0YXIqKQogICAgIGlmIHRlc3QgLW4gIiRydW4iOyB0aGVuCiAgICAgICAgZWNobyAxPiYyICJFUlJPUjogXGB0YXInIHJlcXVpcmVzIC0tcnVuIgogICAgICAgIGV4aXQgMQpAQCAtMTM1LDcgKzE0Niw3IEBACiAKICMgSWYgaXQgZG9lcyBub3QgZXhpc3QsIG9yIGZhaWxzIHRvIHJ1biAocG9zc2libHkgYW4gb3V0ZGF0ZWQgdmVyc2lvbiksCiAjIHRyeSB0byBlbXVsYXRlIGl0LgotY2FzZSAiJDEiIGluCitjYXNlICRwcm9ncmFtIGluCiAgIGFjbG9jYWwqKQogICAgIGVjaG8gMT4mMiAiXAogV0FSTklORzogXGAkMScgaXMgJG1zZy4gIFlvdSBzaG91bGQgb25seSBuZWVkIGl0IGlmCkBAIC0xNDUsNyArMTU2LDcgQEAKICAgICB0b3VjaCBhY2xvY2FsLm00CiAgICAgOzsKIAotICBhdXRvY29uZikKKyAgYXV0b2NvbmYqKQogICAgIGVjaG8gMT4mMiAiXAogV0FSTklORzogXGAkMScgaXMgJG1zZy4gIFlvdSBzaG91bGQgb25seSBuZWVkIGl0IGlmCiAgICAgICAgICB5b3UgbW9kaWZpZWQgXGAke2NvbmZpZ3VyZV9hY30nLiAgWW91IG1pZ2h0IHdhbnQgdG8gaW5zdGFsbCB0aGUKQEAgLTE1NCw3ICsxNjUsNyBAQAogICAgIHRvdWNoIGNvbmZpZ3VyZQogICAgIDs7CiAKLSAgYXV0b2hlYWRlcikKKyAgYXV0b2hlYWRlciopCiAgICAgZWNobyAxPiYyICJcCiBXQVJOSU5HOiBcYCQxJyBpcyAkbXNnLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKICAgICAgICAgIHlvdSBtb2RpZmllZCBcYGFjY29uZmlnLmgnIG9yIFxgJHtjb25maWd1cmVfYWN9Jy4gIFlvdSBtaWdodCB3YW50CkBAIC0xNjQsNyArMTc1LDcgQEAKICAgICB0ZXN0IC16ICIkZmlsZXMiICYmIGZpbGVzPSJjb25maWcuaCIKICAgICB0b3VjaF9maWxlcz0KICAgICBmb3IgZiBpbiAkZmlsZXM7IGRvCi0gICAgICBjYXNlICIkZiIgaW4KKyAgICAgIGNhc2UgJGYgaW4KICAgICAgICo6KikgdG91Y2hfZmlsZXM9IiR0b3VjaF9maWxlcyAiYGVjaG8gIiRmIiB8CiAJCQkJICAgICAgIHNlZCAtZSAncy9eW146XSo6Ly8nIC1lICdzLzouKi8vJ2A7OwogICAgICAgKikgdG91Y2hfZmlsZXM9IiR0b3VjaF9maWxlcyAkZi5pbiI7OwpAQCAtMTg0LDcgKzE5NSw3IEBACiAJICAgd2hpbGUgcmVhZCBmOyBkbyB0b3VjaCAiJGYiOyBkb25lCiAgICAgOzsKIAotICBhdXRvbTR0ZSkKKyAgYXV0b200dGUqKQogICAgIGVjaG8gMT4mMiAiXAogV0FSTklORzogXGAkMScgaXMgbmVlZGVkLCBidXQgaXMgJG1zZy4KICAgICAgICAgIFlvdSBtaWdodCBoYXZlIG1vZGlmaWVkIHNvbWUgZmlsZXMgd2l0aG91dCBoYXZpbmcgdGhlCkBAIC0xOTIsOCArMjAzLDggQEAKICAgICAgICAgIFlvdSBjYW4gZ2V0IFxgJDEnIGFzIHBhcnQgb2YgXGBBdXRvY29uZicgZnJvbSBhbnkgR05VCiAgICAgICAgICBhcmNoaXZlIHNpdGUuIgogCi0gICAgZmlsZT1gZWNobyAiJCoiIHwgc2VkIC1uICdzLy4qLS1vdXRwdXRbID1dKlwoW14gXSpcKS4qL1wxL3AnYAotICAgIHRlc3QgLXogIiRmaWxlIiAmJiBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gJ3MvLiotb1sgXSpcKFteIF0qXCkuKi9cMS9wJ2AKKyAgICBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gIiRzZWRfb3V0cHV0ImAKKyAgICB0ZXN0IC16ICIkZmlsZSIgJiYgZmlsZT1gZWNobyAiJCoiIHwgc2VkIC1uICIkc2VkX21pbnVzbyJgCiAgICAgaWYgdGVzdCAtZiAiJGZpbGUiOyB0aGVuCiAJdG91Y2ggJGZpbGUKICAgICBlbHNlCkBAIC0yMDcsODAgKzIxOCw3OCBAQAogICAgIGZpCiAgICAgOzsKIAotICBiaXNvbnx5YWNjKQorICBiaXNvbip8eWFjYyopCiAgICAgZWNobyAxPiYyICJcCiBXQVJOSU5HOiBcYCQxJyAkbXNnLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKICAgICAgICAgIHlvdSBtb2RpZmllZCBhIFxgLnknIGZpbGUuICBZb3UgbWF5IG5lZWQgdGhlIFxgQmlzb24nIHBhY2thZ2UKICAgICAgICAgIGluIG9yZGVyIGZvciB0aG9zZSBtb2RpZmljYXRpb25zIHRvIHRha2UgZWZmZWN0LiAgWW91IGNhbiBnZXQKICAgICAgICAgIFxgQmlzb24nIGZyb20gYW55IEdOVSBhcmNoaXZlIHNpdGUuIgogICAgIHJtIC1mIHkudGFiLmMgeS50YWIuaAotICAgIGlmIFsgJCMgLW5lIDEgXTsgdGhlbgorICAgIGlmIHRlc3QgJCMgLW5lIDE7IHRoZW4KICAgICAgICAgZXZhbCBMQVNUQVJHPSJcJHskI30iCi0JY2FzZSAiJExBU1RBUkciIGluCisJY2FzZSAkTEFTVEFSRyBpbgogCSoueSkKIAkgICAgU1JDRklMRT1gZWNobyAiJExBU1RBUkciIHwgc2VkICdzL3kkL2MvJ2AKLQkgICAgaWYgWyAtZiAiJFNSQ0ZJTEUiIF07IHRoZW4KKwkgICAgaWYgdGVzdCAtZiAiJFNSQ0ZJTEUiOyB0aGVuCiAJICAgICAgICAgY3AgIiRTUkNGSUxFIiB5LnRhYi5jCiAJICAgIGZpCiAJICAgIFNSQ0ZJTEU9YGVjaG8gIiRMQVNUQVJHIiB8IHNlZCAncy95JC9oLydgCi0JICAgIGlmIFsgLWYgIiRTUkNGSUxFIiBdOyB0aGVuCisJICAgIGlmIHRlc3QgLWYgIiRTUkNGSUxFIjsgdGhlbgogCSAgICAgICAgIGNwICIkU1JDRklMRSIgeS50YWIuaAogCSAgICBmaQogCSAgOzsKIAllc2FjCiAgICAgZmkKLSAgICBpZiBbICEgLWYgeS50YWIuaCBdOyB0aGVuCisgICAgaWYgdGVzdCAhIC1mIHkudGFiLmg7IHRoZW4KIAllY2hvID55LnRhYi5oCiAgICAgZmkKLSAgICBpZiBbICEgLWYgeS50YWIuYyBdOyB0aGVuCisgICAgaWYgdGVzdCAhIC1mIHkudGFiLmM7IHRoZW4KIAllY2hvICdtYWluKCkgeyByZXR1cm4gMDsgfScgPnkudGFiLmMKICAgICBmaQogICAgIDs7CiAKLSAgbGV4fGZsZXgpCisgIGxleCp8ZmxleCopCiAgICAgZWNobyAxPiYyICJcCiBXQVJOSU5HOiBcYCQxJyBpcyAkbXNnLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKICAgICAgICAgIHlvdSBtb2RpZmllZCBhIFxgLmwnIGZpbGUuICBZb3UgbWF5IG5lZWQgdGhlIFxgRmxleCcgcGFja2FnZQogICAgICAgICAgaW4gb3JkZXIgZm9yIHRob3NlIG1vZGlmaWNhdGlvbnMgdG8gdGFrZSBlZmZlY3QuICBZb3UgY2FuIGdldAogICAgICAgICAgXGBGbGV4JyBmcm9tIGFueSBHTlUgYXJjaGl2ZSBzaXRlLiIKICAgICBybSAtZiBsZXgueXkuYwotICAgIGlmIFsgJCMgLW5lIDEgXTsgdGhlbgorICAgIGlmIHRlc3QgJCMgLW5lIDE7IHRoZW4KICAgICAgICAgZXZhbCBMQVNUQVJHPSJcJHskI30iCi0JY2FzZSAiJExBU1RBUkciIGluCisJY2FzZSAkTEFTVEFSRyBpbgogCSoubCkKIAkgICAgU1JDRklMRT1gZWNobyAiJExBU1RBUkciIHwgc2VkICdzL2wkL2MvJ2AKLQkgICAgaWYgWyAtZiAiJFNSQ0ZJTEUiIF07IHRoZW4KKwkgICAgaWYgdGVzdCAtZiAiJFNSQ0ZJTEUiOyB0aGVuCiAJICAgICAgICAgY3AgIiRTUkNGSUxFIiBsZXgueXkuYwogCSAgICBmaQogCSAgOzsKIAllc2FjCiAgICAgZmkKLSAgICBpZiBbICEgLWYgbGV4Lnl5LmMgXTsgdGhlbgorICAgIGlmIHRlc3QgISAtZiBsZXgueXkuYzsgdGhlbgogCWVjaG8gJ21haW4oKSB7IHJldHVybiAwOyB9JyA+bGV4Lnl5LmMKICAgICBmaQogICAgIDs7CiAKLSAgaGVscDJtYW4pCisgIGhlbHAybWFuKikKICAgICBlY2hvIDE+JjIgIlwKIFdBUk5JTkc6IFxgJDEnIGlzICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgogCSB5b3UgbW9kaWZpZWQgYSBkZXBlbmRlbmN5IG9mIGEgbWFudWFsIHBhZ2UuICBZb3UgbWF5IG5lZWQgdGhlCiAJIFxgSGVscDJtYW4nIHBhY2thZ2UgaW4gb3JkZXIgZm9yIHRob3NlIG1vZGlmaWNhdGlvbnMgdG8gdGFrZQogCSBlZmZlY3QuICBZb3UgY2FuIGdldCBcYEhlbHAybWFuJyBmcm9tIGFueSBHTlUgYXJjaGl2ZSBzaXRlLiIKIAotICAgIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAncy8uKi1vIFwoW14gXSpcKS4qL1wxL3AnYAotICAgIGlmIHRlc3QgLXogIiRmaWxlIjsgdGhlbgotCWZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAncy8uKi0tb3V0cHV0PVwoW14gXSpcKS4qL1wxL3AnYAotICAgIGZpCi0gICAgaWYgWyAtZiAiJGZpbGUiIF07IHRoZW4KKyAgICBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gIiRzZWRfb3V0cHV0ImAKKyAgICB0ZXN0IC16ICIkZmlsZSIgJiYgZmlsZT1gZWNobyAiJCoiIHwgc2VkIC1uICIkc2VkX21pbnVzbyJgCisgICAgaWYgdGVzdCAtZiAiJGZpbGUiOyB0aGVuCiAJdG91Y2ggJGZpbGUKICAgICBlbHNlCiAJdGVzdCAteiAiJGZpbGUiIHx8IGV4ZWMgPiRmaWxlCiAJZWNobyAiLmFiIGhlbHAybWFuIGlzIHJlcXVpcmVkIHRvIGdlbmVyYXRlIHRoaXMgcGFnZSIKLQlleGl0IDEKKwlleGl0ICQ/CiAgICAgZmkKICAgICA7OwogCi0gIG1ha2VpbmZvKQorICBtYWtlaW5mbyopCiAgICAgZWNobyAxPiYyICJcCiBXQVJOSU5HOiBcYCQxJyBpcyAkbXNnLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKICAgICAgICAgIHlvdSBtb2RpZmllZCBhIFxgLnRleGknIG9yIFxgLnRleGluZm8nIGZpbGUsIG9yIGFueSBvdGhlciBmaWxlCkBAIC0yODksMTEgKzI5OCwxNyBAQAogICAgICAgICAgRFUsIElSSVgpLiAgWW91IG1pZ2h0IHdhbnQgdG8gaW5zdGFsbCB0aGUgXGBUZXhpbmZvJyBwYWNrYWdlIG9yCiAgICAgICAgICB0aGUgXGBHTlUgbWFrZScgcGFja2FnZS4gIEdyYWIgZWl0aGVyIGZyb20gYW55IEdOVSBhcmNoaXZlIHNpdGUuIgogICAgICMgVGhlIGZpbGUgdG8gdG91Y2ggaXMgdGhhdCBzcGVjaWZpZWQgd2l0aCAtbyAuLi4KLSAgICBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gJ3MvLiotbyBcKFteIF0qXCkuKi9cMS9wJ2AKKyAgICBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gIiRzZWRfb3V0cHV0ImAKKyAgICB0ZXN0IC16ICIkZmlsZSIgJiYgZmlsZT1gZWNobyAiJCoiIHwgc2VkIC1uICIkc2VkX21pbnVzbyJgCiAgICAgaWYgdGVzdCAteiAiJGZpbGUiOyB0aGVuCiAgICAgICAjIC4uLiBvciBpdCBpcyB0aGUgb25lIHNwZWNpZmllZCB3aXRoIEBzZXRmaWxlbmFtZSAuLi4KICAgICAgIGluZmlsZT1gZWNobyAiJCoiIHwgc2VkICdzLy4qIFwoW14gXSpcKSAqJC9cMS8nYAotICAgICAgZmlsZT1gc2VkIC1uICcvXkBzZXRmaWxlbmFtZS8geyBzLy4qIFwoW14gXSpcKSAqJC9cMS87IHA7IHE7IH0nICRpbmZpbGVgCisgICAgICBmaWxlPWBzZWQgLW4gJworCS9eQHNldGZpbGVuYW1lL3sKKwkgIHMvLiogXChbXiBdKlwpICokL1wxLworCSAgcAorCSAgcQorCX0nICRpbmZpbGVgCiAgICAgICAjIC4uLiBvciBpdCBpcyBkZXJpdmVkIGZyb20gdGhlIHNvdXJjZSBuYW1lIChkaXIvZi50ZXhpIGJlY29tZXMgZi5pbmZvKQogICAgICAgdGVzdCAteiAiJGZpbGUiICYmIGZpbGU9YGVjaG8gIiRpbmZpbGUiIHwgc2VkICdzLC4qLywsO3MsLlteLl0qJCwsJ2AuaW5mbwogICAgIGZpCkBAIC0zMDMsNyArMzE4LDcgQEAKICAgICB0b3VjaCAkZmlsZQogICAgIDs7CiAKLSAgdGFyKQorICB0YXIqKQogICAgIHNoaWZ0CiAKICAgICAjIFdlIGhhdmUgYWxyZWFkeSB0cmllZCB0YXIgaW4gdGhlIGdlbmVyaWMgcGFydC4KQEAgLTMxNywxMyArMzMyLDEzIEBACiAgICAgZmkKICAgICBmaXJzdGFyZz0iJDEiCiAgICAgaWYgc2hpZnQ7IHRoZW4KLQljYXNlICIkZmlyc3RhcmciIGluCisJY2FzZSAkZmlyc3RhcmcgaW4KIAkqbyopCiAJICAgIGZpcnN0YXJnPWBlY2hvICIkZmlyc3RhcmciIHwgc2VkIHMvby8vYAogCSAgICB0YXIgIiRmaXJzdGFyZyIgIiRAIiAmJiBleGl0IDAKIAkgICAgOzsKIAllc2FjCi0JY2FzZSAiJGZpcnN0YXJnIiBpbgorCWNhc2UgJGZpcnN0YXJnIGluCiAJKmgqKQogCSAgICBmaXJzdGFyZz1gZWNobyAiJGZpcnN0YXJnIiB8IHNlZCBzL2gvL2AKIAkgICAgdGFyICIkZmlyc3RhcmciICIkQCIgJiYgZXhpdCAwCkBAIC0zNTYsNSArMzcxLDYgQEAKICMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQogIyB0aW1lLXN0YW1wLXN0YXJ0OiAic2NyaXB0dmVyc2lvbj0iCiAjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAyZC4lMDJIIgotIyB0aW1lLXN0YW1wLWVuZDogIiQiCisjIHRpbWUtc3RhbXAtdGltZS16b25lOiAiVVRDIgorIyB0aW1lLXN0YW1wLWVuZDogIjsgIyBVVEMiCiAjIEVuZDoKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbXN2Y2Muc2ggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21zdmNjLnNoCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggODMwMTgzOS4uZGNkYmVhYgotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21zdmNjLnNoCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbXN2Y2Muc2gKQEAgLTQyLDEzICs0MiwxMSBAQAogIyBmb3JtYXQgYW5kIHRyYW5zbGF0ZWQgaW50byBzb21ldGhpbmcgc2Vuc2libGUgZm9yIGNsIG9yIG1sLgogIwogCi0jIERpc2FibGUgc3BlY2lmaWMgd2FybmluZ3MsIGFuZCBlbmFibGUgd2FybmluZ3MtYXMtZXJyb3JzIHNvIHdlIGNhdGNoIGFueQotIyBtaXN0cmFuc2xhdGVkIGFyZ3MuCi1ub3dhcm49Ii13ZDQxMjcgLXdkNDgyMCAtd2Q0NzA2IC13ZDQxMDAgLXdkNDI1NSAtd2Q0NjY4IC13ZDQwNTMgLXdkNDMyNCIKLWFyZ3M9Ii1ub2xvZ28gLVczIC1XWCAkbm93YXJuIgorYXJncz0iLW5vbG9nbyAtVzMiCiBtZD0tTUQKIGNsPSJjbCIKIG1sPSJtbCIKK3NhZmVzZWg9Ii1zYWZlc2VoIgogb3V0cHV0PQogCiB3aGlsZSBbICQjIC1ndCAwIF0KQEAgLTY2LDE1ICs2NCwyOCBAQAogICAgIC1tNjQpCiAgICAgICBjbD0iY2wiICAgIyAiJE1TVkMveDg2X2FtZDY0L2NsIgogICAgICAgbWw9Im1sNjQiICMgIiRNU1ZDL3g4Nl9hbWQ2NC9tbDY0IgorICAgICAgc2FmZXNlaD0KKyAgICAgIHNoaWZ0IDEKKyAgICA7OworICAgIC1PMCkKKyAgICAgIGFyZ3M9IiRhcmdzIC1PZCIKICAgICAgIHNoaWZ0IDEKICAgICA7OwogICAgIC1PKikKLSAgICAgIGFyZ3M9IiRhcmdzICQxIgorICAgICAgIyBJZiB3ZSdyZSBvcHRpbWl6aW5nLCBtYWtlIHN1cmUgd2UgZXhwbGljaXRseSB0dXJuIG9uIHNvbWUgb3B0aW1pemF0aW9ucworICAgICAgIyB0aGF0IGFyZSBpbXBsaWNpdGx5IGRpc2FibGVkIGJ5IGRlYnVnIHN5bWJvbHMgKC1aaSkuCisgICAgICBhcmdzPSIkYXJncyAkMSAtT1BUOlJFRiAtT1BUOklDRiAtSU5DUkVNRU5UQUw6Tk8iCiAgICAgICBzaGlmdCAxCiAgICAgOzsKICAgICAtZykKLSAgICAgICMgQ2FuJ3Qgc3BlY2lmeSAtUlRDMSBvciAtWmkgaW4gb3B0LiAtR3kgaXMgb2suIFVzZSAtT1BUOlJFRj8KLSAgICAgIGFyZ3M9IiRhcmdzIC1EX0RFQlVHIC1SVEMxIC1aaSIKKyAgICAgICMgRW5hYmxlIGRlYnVnIHN5bWJvbCBnZW5lcmF0aW9uLgorICAgICAgYXJncz0iJGFyZ3MgLVppIC1ERUJVRyIKKyAgICAgIHNoaWZ0IDEKKyAgICA7OworICAgIC1ERkZJX0RFQlVHKQorICAgICAgIyBMaW5rIGFnYWluc3QgZGVidWcgQ1JUIGFuZCBlbmFibGUgcnVudGltZSBlcnJvciBjaGVja3MuCisgICAgICBhcmdzPSIkYXJncyAtUlRDMSIKKyAgICAgIGRlZmluZXM9IiRkZWZpbmVzICQxIgogICAgICAgbWQ9LU1EZAogICAgICAgc2hpZnQgMQogICAgIDs7CkBAIC0xMTEsNyArMTIyLDggQEAKICAgICAgIHNoaWZ0IDEKICAgICA7OwogICAgIC1XYWxsKQotICAgICAgYXJncz0iJGFyZ3MgLVdhbGwiCisgICAgICAjIC1XYWxsIG9uIE1TVkMgaXMgb3ZlcnplYWxvdXMsIGFuZCB3ZSBhbHJlYWR5IGJ1aWxkIHdpdGggLVczLiBOb3RoaW5nCisgICAgICAjIHRvIGRvIGhlcmUuCiAgICAgICBzaGlmdCAxCiAgICAgOzsKICAgICAtV2Vycm9yKQpAQCAtMTY2LDcgKzE3OCw3IEBACiAgICAgZWNobyAiJGNsIC1ub2xvZ28gLUVQICRpbmNsdWRlcyAkZGVmaW5lcyAkc3JjID4gJHBwc3JjIgogICAgICIkY2wiIC1ub2xvZ28gLUVQICRpbmNsdWRlcyAkZGVmaW5lcyAkc3JjID4gJHBwc3JjIHx8IGV4aXQgJD8KICAgICBvdXRwdXQ9IiQoZWNobyAkb3V0cHV0IHwgc2VkICdzJS9GW2RwYV1bXiBdKiUlZycpIgotICAgIGFyZ3M9Ii1ub2xvZ28gLXNhZmVzZWggJHNpbmdsZSAkb3V0cHV0ICRwcHNyYyIKKyAgICBhcmdzPSItbm9sb2dvICRzYWZlc2VoICRzaW5nbGUgJG91dHB1dCAkcHBzcmMiCiAKICAgICBlY2hvICIkbWwgJGFyZ3MiCiAgICAgZXZhbCAiXCIkbWxcIiAkYXJncyIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FscGhhL2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvZmZpLmMKaW5kZXggOGQ2YjJiYS4uMTkyZjY5MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvZmZpLmMKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTgsIDIwMDEsIDIwMDcsIDIwMDggIFJlZCBIYXQsIEluYy4KKyAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5OCwgMjAwMSwgMjAwNywgMjAwOCAgUmVkIEhhdCwgSW5jLgogICAgCiAgICBBbHBoYSBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKIApAQCAtMTc4LDYgKzE3OSw5IEBACiB7CiAgIHVuc2lnbmVkIGludCAqdHJhbXA7CiAKKyAgaWYgKGNpZi0+YWJpICE9IEZGSV9PU0YpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOworCiAgIHRyYW1wID0gKHVuc2lnbmVkIGludCAqKSAmY2xvc3VyZS0+dHJhbXBbMF07CiAgIHRyYW1wWzBdID0gMHg0N2ZiMDQwMTsJLyogbW92ICQyNywkMQkJKi8KICAgdHJhbXBbMV0gPSAweGE3N2IwMDEwOwkvKiBsZHEgJDI3LDE2KCQyNykJKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FscGhhL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvZmZpdGFyZ2V0LmgKaW5kZXggN2QwNmViMC4uYWYxNDViYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgQWxwaGEuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsNiArMjgsMTAgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKICNpZm5kZWYgTElCRkZJX0FTTQogdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICAgIGZmaV9hcmc7CiB0eXBlZGVmIHNpZ25lZCBsb25nICAgICAgICAgICAgZmZpX3Nhcmc7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hbHBoYS9vc2YuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FscGhhL29zZi5TCmluZGV4IGQwZTc3ODIuLjZiOWY0ZGYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FscGhhL29zZi5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FscGhhL29zZi5TCkBAIC0xLDUgKzEsNSBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIG9zZi5TIC0gQ29weXJpZ2h0IChjKSAxOTk4LCAyMDAxLCAyMDA3LCAyMDA4IFJlZCBIYXQKKyAgIG9zZi5TIC0gQ29weXJpZ2h0IChjKSAxOTk4LCAyMDAxLCAyMDA3LCAyMDA4LCAyMDExIFJlZCBIYXQKICAgIAogICAgQWxwaGEvT1NGIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAogCkBAIC0yOTksMzMgKzI5OSw1MSBAQAogI2VuZGlmCiAKICNpZmRlZiBfX0VMRl9fCisjIGRlZmluZSBVQV9TSQkJLjRieXRlCisjIGRlZmluZSBGREVfRU5DT0RJTkcJMHgxYgkvKiBwY3JlbCBzZGF0YTQgKi8KKyMgZGVmaW5lIEZERV9FTkNPREUoWCkJLjRieXRlIFgtLgorIyBkZWZpbmUgRkRFX0FSQU5HRShYKQkuNGJ5dGUgWAorI2VsaWYgZGVmaW5lZCBfX29zZl9fCisjIGRlZmluZSBVQV9TSQkJLmFsaWduIDA7IC5sb25nCisjIGRlZmluZSBGREVfRU5DT0RJTkcJMHg1MAkvKiBhbGlnbmVkIGFic29sdXRlICovCisjIGRlZmluZSBGREVfRU5DT0RFKFgpCS5hbGlnbiAzOyAucXVhZCBYCisjIGRlZmluZSBGREVfQVJBTkdFKFgpCS5hbGlnbiAwOyAucXVhZCBYCisjZW5kaWYKKworI2lmZGVmIF9fRUxGX18KIAkuc2VjdGlvbgkuZWhfZnJhbWUsRUhfRlJBTUVfRkxBR1MsQHByb2diaXRzCisjZWxpZiBkZWZpbmVkIF9fb3NmX18KKwkuZGF0YQorCS5hbGlnbiAzCisJLmdsb2JsIF9HTE9CQUxfX0ZfZmZpX2NhbGxfb3NmCitfR0xPQkFMX19GX2ZmaV9jYWxsX29zZjoKKyNlbmRpZgogX19GUkFNRV9CRUdJTl9fOgotCS40Ynl0ZQkkTEVDSUUxLSRMU0NJRTEJIyBMZW5ndGggb2YgQ29tbW9uIEluZm9ybWF0aW9uIEVudHJ5CisJVUFfU0kJJExFQ0lFMS0kTFNDSUUxCSMgTGVuZ3RoIG9mIENvbW1vbiBJbmZvcm1hdGlvbiBFbnRyeQogJExTQ0lFMToKLQkuNGJ5dGUJMHgwCQkjIENJRSBJZGVudGlmaWVyIFRhZworCVVBX1NJCTB4MAkJIyBDSUUgSWRlbnRpZmllciBUYWcKIAkuYnl0ZQkweDEJCSMgQ0lFIFZlcnNpb24KIAkuYXNjaWkgInpSXDAiCQkjIENJRSBBdWdtZW50YXRpb24KIAkuYnl0ZQkweDEJCSMgdWxlYjEyOCAweDE7IENJRSBDb2RlIEFsaWdubWVudCBGYWN0b3IKIAkuYnl0ZQkweDc4CQkjIHNsZWIxMjggLTg7IENJRSBEYXRhIEFsaWdubWVudCBGYWN0b3IKIAkuYnl0ZQkyNgkJIyBDSUUgUkEgQ29sdW1uCiAJLmJ5dGUJMHgxCQkjIHVsZWIxMjggMHgxOyBBdWdtZW50YXRpb24gc2l6ZQotCS5ieXRlCTB4MWIJCSMgRkRFIEVuY29kaW5nIChwY3JlbCBzZGF0YTQpCisJLmJ5dGUJRkRFX0VOQ09ESU5HCSMgRkRFIEVuY29kaW5nCiAJLmJ5dGUJMHhjCQkjIERXX0NGQV9kZWZfY2ZhCiAJLmJ5dGUJMzAJCSMgdWxlYjEyOCBjb2x1bW4gMzAKIAkuYnl0ZQkwCQkjIHVsZWIxMjggb2Zmc2V0IDAKIAkuYWxpZ24gMwogJExFQ0lFMToKICRMU0ZERTE6Ci0JLjRieXRlCSRMRUZERTEtJExBU0ZERTEJCSMgRkRFIExlbmd0aAorCVVBX1NJCSRMRUZERTEtJExBU0ZERTEJCSMgRkRFIExlbmd0aAogJExBU0ZERTE6Ci0JLjRieXRlCSRMQVNGREUxLV9fRlJBTUVfQkVHSU5fXwkjIEZERSBDSUUgb2Zmc2V0Ci0JLjRieXRlCSRMRkIxLS4JCSMgRkRFIGluaXRpYWwgbG9jYXRpb24KLQkuNGJ5dGUJJExGRTEtJExGQjEJIyBGREUgYWRkcmVzcyByYW5nZQorCVVBX1NJCSRMQVNGREUxLV9fRlJBTUVfQkVHSU5fXwkjIEZERSBDSUUgb2Zmc2V0CisJRkRFX0VOQ09ERSgkTEZCMSkJCQkjIEZERSBpbml0aWFsIGxvY2F0aW9uCisJRkRFX0FSQU5HRSgkTEZFMS0kTEZCMSkJCQkjIEZERSBhZGRyZXNzIHJhbmdlCiAJLmJ5dGUJMHgwCQkjIHVsZWIxMjggMHgwOyBBdWdtZW50YXRpb24gc2l6ZQogCiAJLmJ5dGUJMHg0CQkjIERXX0NGQV9hZHZhbmNlX2xvYzQKLQkuNGJ5dGUJJExDRkkxLSRMRkIxCisJVUFfU0kJJExDRkkxLSRMRkIxCiAJLmJ5dGUJMHg5YQkJIyBEV19DRkFfb2Zmc2V0LCBjb2x1bW4gMjYKIAkuYnl0ZQk0CQkjIHVsZWIxMjggNCotOAogCS5ieXRlCTB4OGYJCSMgRFdfQ0ZBX29mZnNldCwgY29sdW1uIDE1CkBAIC0zMzUsMzIgKzM1MywzNSBAQAogCS5ieXRlCTMyCQkjIHVsZWIxMjggb2Zmc2V0IDMyCiAKIAkuYnl0ZQkweDQJCSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotCS40Ynl0ZQkkTENGSTItJExDRkkxCisJVUFfU0kJJExDRkkyLSRMQ0ZJMQogCS5ieXRlCTB4ZGEJCSMgRFdfQ0ZBX3Jlc3RvcmUsIGNvbHVtbiAyNgogCS5hbGlnbiAzCiAkTEVGREUxOgogCiAkTFNGREUzOgotCS40Ynl0ZQkkTEVGREUzLSRMQVNGREUzCQkjIEZERSBMZW5ndGgKKwlVQV9TSQkkTEVGREUzLSRMQVNGREUzCQkjIEZERSBMZW5ndGgKICRMQVNGREUzOgotCS40Ynl0ZQkkTEFTRkRFMy1fX0ZSQU1FX0JFR0lOX18JIyBGREUgQ0lFIG9mZnNldAotCS40Ynl0ZQkkTEZCMi0uCQkjIEZERSBpbml0aWFsIGxvY2F0aW9uCi0JLjRieXRlCSRMRkUyLSRMRkIyCSMgRkRFIGFkZHJlc3MgcmFuZ2UKKwlVQV9TSQkkTEFTRkRFMy1fX0ZSQU1FX0JFR0lOX18JIyBGREUgQ0lFIG9mZnNldAorCUZERV9FTkNPREUoJExGQjIpCQkJIyBGREUgaW5pdGlhbCBsb2NhdGlvbgorCUZERV9BUkFOR0UoJExGRTItJExGQjIpCQkJIyBGREUgYWRkcmVzcyByYW5nZQogCS5ieXRlCTB4MAkJIyB1bGViMTI4IDB4MDsgQXVnbWVudGF0aW9uIHNpemUKIAogCS5ieXRlCTB4NAkJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0JLjRieXRlCSRMQ0ZJNS0kTEZCMgorCVVBX1NJCSRMQ0ZJNS0kTEZCMgogCS5ieXRlCTB4ZQkJIyBEV19DRkFfZGVmX2NmYV9vZmZzZXQKIAkuYnl0ZQkweDgwLDB4MQkjIHVsZWIxMjggMTI4CiAKIAkuYnl0ZQkweDQJCSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotCS40Ynl0ZQkkTENGSTYtJExDRkk1CisJVUFfU0kJJExDRkk2LSRMQ0ZJNQogCS5ieXRlCTB4OWEJCSMgRFdfQ0ZBX29mZnNldCwgY29sdW1uIDI2CiAJLmJ5dGUJMTYJCSMgdWxlYjEyOCBvZmZzZXQgMTYqLTgKIAkuYWxpZ24gMwogJExFRkRFMzoKLQotI2lmZGVmIF9fbGludXhfXwotCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKKyNpZiBkZWZpbmVkIF9fb3NmX18KKwkuYWxpZ24gMAorCS5sb25nCTAJCSMgRW5kIG9mIFRhYmxlCiAjZW5kaWYKKworI2lmIGRlZmluZWQgX19FTEZfXyAmJiBkZWZpbmVkIF9fbGludXhfXworCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL2ZmaS5jCmluZGV4IGY2YTY0NzUuLjNjY2NlYjkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vZmZpLmMKQEAgLTEsNiArMSwxMCBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAxOTk4LCAyMDA4ICBSZWQgSGF0LCBJbmMuCi0gICAKKyAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAyMDExIFRpbW90aHkgV2FsbAorICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTEgUGxhdXNpYmxlIExhYnMgQ29vcGVyYXRpdmUsIEluYy4KKyAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDExIEFudGhvbnkgR3JlZW4KKwkgICBDb3B5cmlnaHQgKGMpIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5OCwgMjAwOCwgMjAxMSAgUmVkIEhhdCwgSW5jLgorCSAgIAogICAgQVJNIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI5LDEyICszMywyMCBAQAogCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKLS8qIGZmaV9wcmVwX2FyZ3MgaXMgY2FsbGVkIGJ5IHRoZSBhc3NlbWJseSByb3V0aW5lIG9uY2Ugc3RhY2sgc3BhY2UKLSAgIGhhcyBiZWVuIGFsbG9jYXRlZCBmb3IgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzICovCisvKiBGb3J3YXJkIGRlY2xhcmVzLiAqLworc3RhdGljIGludCB2ZnBfdHlwZV9wIChmZmlfdHlwZSAqKTsKK3N0YXRpYyB2b2lkIGxheW91dF92ZnBfYXJncyAoZmZpX2NpZiAqKTsKIAotdm9pZCBmZmlfcHJlcF9hcmdzKGNoYXIgKnN0YWNrLCBleHRlbmRlZF9jaWYgKmVjaWYpCisvKiBmZmlfcHJlcF9hcmdzIGlzIGNhbGxlZCBieSB0aGUgYXNzZW1ibHkgcm91dGluZSBvbmNlIHN0YWNrIHNwYWNlCisgICBoYXMgYmVlbiBhbGxvY2F0ZWQgZm9yIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cworICAgCisgICBUaGUgdmZwX3NwYWNlIHBhcmFtZXRlciBpcyB0aGUgbG9hZCBhcmVhIGZvciBWRlAgcmVncywgdGhlIHJldHVybgorICAgdmFsdWUgaXMgY2lmLT52ZnBfdXNlZCAod29yZCBiaXRzZXQgb2YgVkZQIHJlZ3MgdXNlZCBmb3IgcGFzc2luZworICAgYXJndW1lbnRzKS4gVGhlc2UgYXJlIG9ubHkgdXNlZCBmb3IgdGhlIFZGUCBoYXJkLWZsb2F0IEFCSS4KKyovCitpbnQgZmZpX3ByZXBfYXJncyhjaGFyICpzdGFjaywgZXh0ZW5kZWRfY2lmICplY2lmLCBmbG9hdCAqdmZwX3NwYWNlKQogewotICByZWdpc3RlciB1bnNpZ25lZCBpbnQgaTsKKyAgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGksIHZpID0gMDsKICAgcmVnaXN0ZXIgdm9pZCAqKnBfYXJndjsKICAgcmVnaXN0ZXIgY2hhciAqYXJncDsKICAgcmVnaXN0ZXIgZmZpX3R5cGUgKipwX2FyZzsKQEAgLTUzLDEwICs2NSwzMSBAQAogICAgICAgIGktLSwgcF9hcmcrKykKICAgICB7CiAgICAgICBzaXplX3QgejsKKyAgICAgIHNpemVfdCBhbGlnbm1lbnQ7CisKKyAgICAgIC8qIEFsbG9jYXRlZCBpbiBWRlAgcmVnaXN0ZXJzLiAqLworICAgICAgaWYgKGVjaWYtPmNpZi0+YWJpID09IEZGSV9WRlAKKwkgICYmIHZpIDwgZWNpZi0+Y2lmLT52ZnBfbmFyZ3MgJiYgdmZwX3R5cGVfcCAoKnBfYXJnKSkKKwl7CisJICBmbG9hdCogdmZwX3Nsb3QgPSB2ZnBfc3BhY2UgKyBlY2lmLT5jaWYtPnZmcF9hcmdzW3ZpKytdOworCSAgaWYgKCgqcF9hcmcpLT50eXBlID09IEZGSV9UWVBFX0ZMT0FUKQorCSAgICAqKChmbG9hdCopdmZwX3Nsb3QpID0gKigoZmxvYXQqKSpwX2FyZ3YpOworCSAgZWxzZSBpZiAoKCpwX2FyZyktPnR5cGUgPT0gRkZJX1RZUEVfRE9VQkxFKQorCSAgICAqKChkb3VibGUqKXZmcF9zbG90KSA9ICooKGRvdWJsZSopKnBfYXJndik7CisJICBlbHNlCisJICAgIG1lbWNweSh2ZnBfc2xvdCwgKnBfYXJndiwgKCpwX2FyZyktPnNpemUpOworCSAgcF9hcmd2Kys7CisJICBjb250aW51ZTsKKwl9CiAKICAgICAgIC8qIEFsaWduIGlmIG5lY2Vzc2FyeSAqLwotICAgICAgaWYgKCgoKnBfYXJnKS0+YWxpZ25tZW50IC0gMSkgJiAodW5zaWduZWQpIGFyZ3ApIHsKLQlhcmdwID0gKGNoYXIgKikgQUxJR04oYXJncCwgKCpwX2FyZyktPmFsaWdubWVudCk7CisgICAgICBhbGlnbm1lbnQgPSAoKnBfYXJnKS0+YWxpZ25tZW50OworI2lmZGVmIF9XSU4zMl9XQ0UKKyAgICAgIGlmIChhbGlnbm1lbnQgPiA0KQorCWFsaWdubWVudCA9IDQ7CisjZW5kaWYKKyAgICAgIGlmICgoYWxpZ25tZW50IC0gMSkgJiAodW5zaWduZWQpIGFyZ3ApIHsKKwlhcmdwID0gKGNoYXIgKikgQUxJR04oYXJncCwgYWxpZ25tZW50KTsKICAgICAgIH0KIAogICAgICAgaWYgKCgqcF9hcmcpLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkKQEAgLTEwMywxMyArMTM2LDE1IEBACiAJICBwX2FyZ3YrKzsKIAkgIGFyZ3AgKz0gejsKICAgICB9Ci0gIAotICByZXR1cm47CisKKyAgLyogSW5kaWNhdGUgdGhlIFZGUCByZWdpc3RlcnMgdXNlZC4gKi8KKyAgcmV0dXJuIGVjaWYtPmNpZi0+dmZwX3VzZWQ7CiB9CiAKIC8qIFBlcmZvcm0gbWFjaGluZSBkZXBlbmRlbnQgY2lmIHByb2Nlc3NpbmcgKi8KIGZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmX21hY2hkZXAoZmZpX2NpZiAqY2lmKQogeworICBpbnQgdHlwZV9jb2RlOwogICAvKiBSb3VuZCB0aGUgc3RhY2sgdXAgdG8gYSBtdWx0aXBsZSBvZiA4IGJ5dGVzLiAgVGhpcyBpc24ndCBuZWVkZWQgCiAgICAgIGV2ZXJ5d2hlcmUsIGJ1dCBpdCBpcyBvbiBzb21lIHBsYXRmb3JtcywgYW5kIGl0IGRvZXNuJ3QgaGFybSBhbnl0aGluZwogICAgICB3aGVuIGl0IGlzbid0IG5lZWRlZC4gICovCkBAIC0xMzAsNyArMTY1LDE0IEBACiAgICAgICBicmVhazsKIAogICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgotICAgICAgaWYgKGNpZi0+cnR5cGUtPnNpemUgPD0gNCkKKyAgICAgIGlmIChjaWYtPmFiaSA9PSBGRklfVkZQCisJICAmJiAodHlwZV9jb2RlID0gdmZwX3R5cGVfcCAoY2lmLT5ydHlwZSkpICE9IDApCisJeworCSAgLyogQSBDb21wb3NpdGUgVHlwZSBwYXNzZWQgaW4gVkZQIHJlZ2lzdGVycywgZWl0aGVyCisJICAgICBGRklfVFlQRV9TVFJVQ1RfVkZQX0ZMT0FUIG9yIEZGSV9UWVBFX1NUUlVDVF9WRlBfRE9VQkxFLiAqLworCSAgY2lmLT5mbGFncyA9ICh1bnNpZ25lZCkgdHlwZV9jb2RlOworCX0KKyAgICAgIGVsc2UgaWYgKGNpZi0+cnR5cGUtPnNpemUgPD0gNCkKIAkvKiBBIENvbXBvc2l0ZSBUeXBlIG5vdCBsYXJnZXIgdGhhbiA0IGJ5dGVzIGlzIHJldHVybmVkIGluIHIwLiAgKi8KIAljaWYtPmZsYWdzID0gKHVuc2lnbmVkKUZGSV9UWVBFX0lOVDsKICAgICAgIGVsc2UKQEAgLTE0NSwxMSArMTg3LDMwIEBACiAgICAgICBicmVhazsKICAgICB9CiAKKyAgLyogTWFwIG91dCB0aGUgcmVnaXN0ZXIgcGxhY2VtZW50cyBvZiBWRlAgcmVnaXN0ZXIgYXJncy4KKyAgICAgVGhlIFZGUCBoYXJkLWZsb2F0IGNhbGxpbmcgY29udmVudGlvbnMgYXJlIHNsaWdodGx5IG1vcmUgc29waGlzdGljYXRlZCB0aGFuCisgICAgIHRoZSBiYXNlIGNhbGxpbmcgY29udmVudGlvbnMsIHNvIHdlIGRvIGl0IGhlcmUgaW5zdGVhZCBvZiBpbiBmZmlfcHJlcF9hcmdzKCkuICovCisgIGlmIChjaWYtPmFiaSA9PSBGRklfVkZQKQorICAgIGxheW91dF92ZnBfYXJncyAoY2lmKTsKKwogICByZXR1cm4gRkZJX09LOwogfQogCi1leHRlcm4gdm9pZCBmZmlfY2FsbF9TWVNWKHZvaWQgKCopKGNoYXIgKiwgZXh0ZW5kZWRfY2lmICopLCBleHRlbmRlZF9jaWYgKiwKLQkJCSAgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCAqLCB2b2lkICgqZm4pKHZvaWQpKTsKKy8qIFBlcmZvcm0gbWFjaGluZSBkZXBlbmRlbnQgY2lmIHByb2Nlc3NpbmcgZm9yIHZhcmlhZGljIGNhbGxzICovCitmZmlfc3RhdHVzIGZmaV9wcmVwX2NpZl9tYWNoZGVwX3ZhcihmZmlfY2lmICpjaWYsCisJCQkJICAgIHVuc2lnbmVkIGludCBuZml4ZWRhcmdzLAorCQkJCSAgICB1bnNpZ25lZCBpbnQgbnRvdGFsYXJncykKK3sKKyAgLyogVkZQIHZhcmlhZGljIGNhbGxzIGFjdHVhbGx5IHVzZSB0aGUgU1lTViBBQkkgKi8KKyAgaWYgKGNpZi0+YWJpID09IEZGSV9WRlApCisJY2lmLT5hYmkgPSBGRklfU1lTVjsKKworICByZXR1cm4gZmZpX3ByZXBfY2lmX21hY2hkZXAoY2lmKTsKK30KKworLyogUHJvdG90eXBlcyBmb3IgYXNzZW1ibHkgZnVuY3Rpb25zLCBpbiBzeXN2LlMgKi8KK2V4dGVybiB2b2lkIGZmaV9jYWxsX1NZU1YgKHZvaWQgKCpmbikodm9pZCksIGV4dGVuZGVkX2NpZiAqLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkICopOworZXh0ZXJuIHZvaWQgZmZpX2NhbGxfVkZQICh2b2lkICgqZm4pKHZvaWQpLCBleHRlbmRlZF9jaWYgKiwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCAqKTsKIAogdm9pZCBmZmlfY2FsbChmZmlfY2lmICpjaWYsIHZvaWQgKCpmbikodm9pZCksIHZvaWQgKnJ2YWx1ZSwgdm9pZCAqKmF2YWx1ZSkKIHsKQEAgLTE1Nyw2ICsyMTgsOCBAQAogCiAgIGludCBzbWFsbF9zdHJ1Y3QgPSAoY2lmLT5mbGFncyA9PSBGRklfVFlQRV9JTlQgCiAJCSAgICAgICYmIGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKTsKKyAgaW50IHZmcF9zdHJ1Y3QgPSAoY2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1RfVkZQX0ZMT0FUCisJCSAgICB8fCBjaWYtPmZsYWdzID09IEZGSV9UWVBFX1NUUlVDVF9WRlBfRE9VQkxFKTsKIAogICBlY2lmLmNpZiA9IGNpZjsKICAgZWNpZi5hdmFsdWUgPSBhdmFsdWU7CkBAIC0xNzMsMzggKzIzNiw1MyBAQAogICAgIH0KICAgZWxzZSBpZiAoc21hbGxfc3RydWN0KQogICAgIGVjaWYucnZhbHVlID0gJnRlbXA7CisgIGVsc2UgaWYgKHZmcF9zdHJ1Y3QpCisgICAgeworICAgICAgLyogTGFyZ2VzdCBjYXNlIGlzIGRvdWJsZSB4IDQuICovCisgICAgICBlY2lmLnJ2YWx1ZSA9IGFsbG9jYSgzMik7CisgICAgfQogICBlbHNlCiAgICAgZWNpZi5ydmFsdWUgPSBydmFsdWU7CiAKICAgc3dpdGNoIChjaWYtPmFiaSkgCiAgICAgewogICAgIGNhc2UgRkZJX1NZU1Y6Ci0gICAgICBmZmlfY2FsbF9TWVNWKGZmaV9wcmVwX2FyZ3MsICZlY2lmLCBjaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLCBlY2lmLnJ2YWx1ZSwKLQkJICAgIGZuKTsKLQorICAgICAgZmZpX2NhbGxfU1lTViAoZm4sICZlY2lmLCBjaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLCBlY2lmLnJ2YWx1ZSk7CiAgICAgICBicmVhazsKKworICAgIGNhc2UgRkZJX1ZGUDoKKyNpZmRlZiBfX0FSTV9FQUJJX18KKyAgICAgIGZmaV9jYWxsX1ZGUCAoZm4sICZlY2lmLCBjaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLCBlY2lmLnJ2YWx1ZSk7CisgICAgICBicmVhazsKKyNlbmRpZgorCiAgICAgZGVmYXVsdDoKICAgICAgIEZGSV9BU1NFUlQoMCk7CiAgICAgICBicmVhazsKICAgICB9CiAgIGlmIChzbWFsbF9zdHJ1Y3QpCiAgICAgbWVtY3B5IChydmFsdWUsICZ0ZW1wLCBjaWYtPnJ0eXBlLT5zaXplKTsKKyAgZWxzZSBpZiAodmZwX3N0cnVjdCkKKyAgICBtZW1jcHkgKHJ2YWx1ZSwgZWNpZi5ydmFsdWUsIGNpZi0+cnR5cGUtPnNpemUpOwogfQogCiAvKiogcHJpdmF0ZSBtZW1iZXJzICoqLwogCiBzdGF0aWMgdm9pZCBmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YgKGNoYXIgKnN0YWNrLCB2b2lkICoqcmV0LAotCQkJCQkgdm9pZCoqIGFyZ3MsIGZmaV9jaWYqIGNpZik7CisJCQkJCSB2b2lkKiogYXJncywgZmZpX2NpZiogY2lmLCBmbG9hdCAqdmZwX3N0YWNrKTsKIAogdm9pZCBmZmlfY2xvc3VyZV9TWVNWIChmZmlfY2xvc3VyZSAqKTsKIAordm9pZCBmZmlfY2xvc3VyZV9WRlAgKGZmaV9jbG9zdXJlICopOworCiAvKiBUaGlzIGZ1bmN0aW9uIGlzIGp1bXBlZCB0byBieSB0aGUgdHJhbXBvbGluZSAqLwogCiB1bnNpZ25lZCBpbnQKLWZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIgKGNsb3N1cmUsIHJlc3BwLCBhcmdzKQorZmZpX2Nsb3N1cmVfU1lTVl9pbm5lciAoY2xvc3VyZSwgcmVzcHAsIGFyZ3MsIHZmcF9hcmdzKQogICAgICBmZmlfY2xvc3VyZSAqY2xvc3VyZTsKICAgICAgdm9pZCAqKnJlc3BwOwogICAgICB2b2lkICphcmdzOworICAgICB2b2lkICp2ZnBfYXJnczsKIHsKICAgLy8gb3VyIHZhcmlvdXMgdGhpbmdzLi4uCiAgIGZmaV9jaWYgICAgICAgKmNpZjsKQEAgLTIxOSw3ICsyOTcsNyBAQAogICAgKiBhIHN0cnVjdHVyZSwgaXQgd2lsbCByZS1zZXQgUkVTUCB0byBwb2ludCB0byB0aGUKICAgICogc3RydWN0dXJlIHJldHVybiBhZGRyZXNzLiAgKi8KIAotICBmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YoYXJncywgcmVzcHAsIGFyZ19hcmVhLCBjaWYpOworICBmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YoYXJncywgcmVzcHAsIGFyZ19hcmVhLCBjaWYsIHZmcF9hcmdzKTsKIAogICAoY2xvc3VyZS0+ZnVuKSAoY2lmLCAqcmVzcHAsIGFyZ19hcmVhLCBjbG9zdXJlLT51c2VyX2RhdGEpOwogCkBAIC0yMjksMTAgKzMwNywxMiBAQAogLypALWV4cG9ydGhlYWRlckAqLwogc3RhdGljIHZvaWQgCiBmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YoY2hhciAqc3RhY2ssIHZvaWQgKipydmFsdWUsCi0JCQkgICAgdm9pZCAqKmF2YWx1ZSwgZmZpX2NpZiAqY2lmKQorCQkJICAgIHZvaWQgKiphdmFsdWUsIGZmaV9jaWYgKmNpZiwKKwkJCSAgICAvKiBVc2VkIG9ubHkgdW5kZXIgVkZQIGhhcmQtZmxvYXQgQUJJLiAqLworCQkJICAgIGZsb2F0ICp2ZnBfc3RhY2spCiAvKkA9ZXhwb3J0aGVhZGVyQCovCiB7Ci0gIHJlZ2lzdGVyIHVuc2lnbmVkIGludCBpOworICByZWdpc3RlciB1bnNpZ25lZCBpbnQgaSwgdmkgPSAwOwogICByZWdpc3RlciB2b2lkICoqcF9hcmd2OwogICByZWdpc3RlciBjaGFyICphcmdwOwogICByZWdpc3RlciBmZmlfdHlwZSAqKnBfYXJnOwpAQCAtMjQ5LDEwICszMjksMjMgQEAKICAgZm9yIChpID0gY2lmLT5uYXJncywgcF9hcmcgPSBjaWYtPmFyZ190eXBlczsgKGkgIT0gMCk7IGktLSwgcF9hcmcrKykKICAgICB7CiAgICAgICBzaXplX3QgejsKKyAgICAgIHNpemVfdCBhbGlnbm1lbnQ7CisgIAorICAgICAgaWYgKGNpZi0+YWJpID09IEZGSV9WRlAKKwkgICYmIHZpIDwgY2lmLT52ZnBfbmFyZ3MgJiYgdmZwX3R5cGVfcCAoKnBfYXJnKSkKKwl7CisJICAqcF9hcmd2KysgPSAodm9pZCopKHZmcF9zdGFjayArIGNpZi0+dmZwX2FyZ3NbdmkrK10pOworCSAgY29udGludWU7CisJfQogCi0gICAgICBzaXplX3QgYWxpZ25tZW50ID0gKCpwX2FyZyktPmFsaWdubWVudDsKKyAgICAgIGFsaWdubWVudCA9ICgqcF9hcmcpLT5hbGlnbm1lbnQ7CiAgICAgICBpZiAoYWxpZ25tZW50IDwgNCkKIAlhbGlnbm1lbnQgPSA0OworI2lmZGVmIF9XSU4zMl9XQ0UKKyAgICAgIGVsc2UKKwlpZiAoYWxpZ25tZW50ID4gNCkKKwkgIGFsaWdubWVudCA9IDQ7CisjZW5kaWYKICAgICAgIC8qIEFsaWduIGlmIG5lY2Vzc2FyeSAqLwogICAgICAgaWYgKChhbGlnbm1lbnQgLSAxKSAmICh1bnNpZ25lZCkgYXJncCkgewogCWFyZ3AgPSAoY2hhciAqKSBBTElHTihhcmdwLCBhbGlnbm1lbnQpOwpAQCAtMjczLDE4ICszNjYsMjM3IEBACiAKIC8qIEhvdyB0byBtYWtlIGEgdHJhbXBvbGluZS4gICovCiAKK2V4dGVybiB1bnNpZ25lZCBpbnQgZmZpX2FybV90cmFtcG9saW5lWzNdOworCisjaWYgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRQorCisjaW5jbHVkZSA8bWFjaC9tYWNoLmg+CisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKK2V4dGVybiB2b2lkICpmZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlX3BhZ2U7CisKK3R5cGVkZWYgc3RydWN0IGZmaV90cmFtcG9saW5lX3RhYmxlIGZmaV90cmFtcG9saW5lX3RhYmxlOwordHlwZWRlZiBzdHJ1Y3QgZmZpX3RyYW1wb2xpbmVfdGFibGVfZW50cnkgZmZpX3RyYW1wb2xpbmVfdGFibGVfZW50cnk7CisKK3N0cnVjdCBmZmlfdHJhbXBvbGluZV90YWJsZSB7CisgIC8qIGNvbnRpZ2lvdXMgd3JpdGFibGUgYW5kIGV4ZWN1dGFibGUgcGFnZXMgKi8KKyAgdm1fYWRkcmVzc190IGNvbmZpZ19wYWdlOworICB2bV9hZGRyZXNzX3QgdHJhbXBvbGluZV9wYWdlOworCisgIC8qIGZyZWUgbGlzdCB0cmFja2luZyAqLworICB1aW50MTZfdCBmcmVlX2NvdW50OworICBmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeSAqZnJlZV9saXN0OworICBmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeSAqZnJlZV9saXN0X3Bvb2w7CisKKyAgZmZpX3RyYW1wb2xpbmVfdGFibGUgKnByZXY7CisgIGZmaV90cmFtcG9saW5lX3RhYmxlICpuZXh0OworfTsKKworc3RydWN0IGZmaV90cmFtcG9saW5lX3RhYmxlX2VudHJ5IHsKKyAgdm9pZCAqKCp0cmFtcG9saW5lKSgpOworICBmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeSAqbmV4dDsKK307CisKKy8qIE92ZXJyaWRlIHRoZSBzdGFuZGFyZCBhcmNoaXRlY3R1cmUgdHJhbXBvbGluZSBzaXplICovCisvLyBYWFggVE9ETyAtIEZpeAorI3VuZGVmIEZGSV9UUkFNUE9MSU5FX1NJWkUKKyNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSAxMgorCisvKiBUaGUgdHJhbXBvbGluZSBjb25maWd1cmF0aW9uIGlzIHBsYWNlZCBhdCA0MDgwIGJ5dGVzIHByaW9yIHRvIHRoZSB0cmFtcG9saW5lJ3MgZW50cnkgcG9pbnQgKi8KKyNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfQ09ERUxPQ19DT05GSUcoY29kZWxvYykgKCh2b2lkICoqKSAoKCh1aW50OF90ICopIGNvZGVsb2MpIC0gNDA4MCkpOworCisvKiBUaGUgZmlyc3QgMTYgYnl0ZXMgb2YgdGhlIGNvbmZpZyBwYWdlIGFyZSB1bnVzZWQsIGFzIHRoZXkgYXJlIHVuYWRkcmVzc2FibGUgZnJvbSB0aGUgdHJhbXBvbGluZSBwYWdlLiAqLworI2RlZmluZSBGRklfVFJBTVBPTElORV9DT05GSUdfUEFHRV9PRkZTRVQgMTYKKworLyogVG90YWwgbnVtYmVyIG9mIHRyYW1wb2xpbmVzIHRoYXQgZml0IGluIG9uZSB0cmFtcG9saW5lIHRhYmxlICovCisjZGVmaW5lIEZGSV9UUkFNUE9MSU5FX0NPVU5UICgoUEFHRV9TSVpFIC0gRkZJX1RSQU1QT0xJTkVfQ09ORklHX1BBR0VfT0ZGU0VUKSAvIEZGSV9UUkFNUE9MSU5FX1NJWkUpCisKK3N0YXRpYyBwdGhyZWFkX211dGV4X3QgZmZpX3RyYW1wb2xpbmVfbG9jayA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7CitzdGF0aWMgZmZpX3RyYW1wb2xpbmVfdGFibGUgKmZmaV90cmFtcG9saW5lX3RhYmxlcyA9IE5VTEw7CisKK3N0YXRpYyBmZmlfdHJhbXBvbGluZV90YWJsZSAqCitmZmlfdHJhbXBvbGluZV90YWJsZV9hbGxvYyAoKQoreworICBmZmlfdHJhbXBvbGluZV90YWJsZSAqdGFibGUgPSBOVUxMOworCisgIC8qIExvb3AgdW50aWwgd2UgY2FuIGFsbG9jYXRlIHR3byBjb250aWdpb3VzIHBhZ2VzICovCisgIHdoaWxlICh0YWJsZSA9PSBOVUxMKSB7CisgICAgdm1fYWRkcmVzc190IGNvbmZpZ19wYWdlID0gMHgwOworICAgIGtlcm5fcmV0dXJuX3Qga3Q7CisKKyAgICAvKiBUcnkgdG8gYWxsb2NhdGUgdHdvIHBhZ2VzICovCisgICAga3QgPSB2bV9hbGxvY2F0ZSAobWFjaF90YXNrX3NlbGYgKCksICZjb25maWdfcGFnZSwgUEFHRV9TSVpFKjIsIFZNX0ZMQUdTX0FOWVdIRVJFKTsKKyAgICBpZiAoa3QgIT0gS0VSTl9TVUNDRVNTKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgInZtX2FsbG9jYXRlKCkgZmFpbHVyZTogJWQgYXQgJXM6JWRcbiIsIGt0LCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLyogTm93IGRyb3AgdGhlIHNlY29uZCBoYWxmIG9mIHRoZSBhbGxvY2F0aW9uIHRvIG1ha2Ugcm9vbSBmb3IgdGhlIHRyYW1wb2xpbmUgdGFibGUgKi8KKyAgICB2bV9hZGRyZXNzX3QgdHJhbXBvbGluZV9wYWdlID0gY29uZmlnX3BhZ2UrUEFHRV9TSVpFOworICAgIGt0ID0gdm1fZGVhbGxvY2F0ZSAobWFjaF90YXNrX3NlbGYgKCksIHRyYW1wb2xpbmVfcGFnZSwgUEFHRV9TSVpFKTsKKyAgICBpZiAoa3QgIT0gS0VSTl9TVUNDRVNTKSB7CisgICAgICBmcHJpbnRmKHN0ZGVyciwgInZtX2RlYWxsb2NhdGUoKSBmYWlsdXJlOiAlZCBhdCAlczolZFxuIiwga3QsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvKiBSZW1hcCB0aGUgdHJhbXBvbGluZSB0YWJsZSB0byBkaXJlY3RseSBmb2xsb3cgdGhlIGNvbmZpZyBwYWdlICovCisgICAgdm1fcHJvdF90IGN1cl9wcm90OworICAgIHZtX3Byb3RfdCBtYXhfcHJvdDsKKworICAgIGt0ID0gdm1fcmVtYXAgKG1hY2hfdGFza19zZWxmICgpLCAmdHJhbXBvbGluZV9wYWdlLCBQQUdFX1NJWkUsIDB4MCwgRkFMU0UsIG1hY2hfdGFza19zZWxmICgpLCAodm1fYWRkcmVzc190KSAmZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZV9wYWdlLCBGQUxTRSwgJmN1cl9wcm90LCAmbWF4X3Byb3QsIFZNX0lOSEVSSVRfU0hBUkUpOworCisgICAgLyogSWYgd2UgbG9zdCBhY2Nlc3MgdG8gdGhlIGRlc3RpbmF0aW9uIHRyYW1wb2xpbmUgcGFnZSwgZHJvcCBvdXIgY29uZmlnIGFsbG9jYXRpb24gbWFwcGluZyBhbmQgcmV0cnkgKi8KKyAgICBpZiAoa3QgIT0gS0VSTl9TVUNDRVNTKSB7CisgICAgICAvKiBMb2cgdW5leHBlY3RlZCBmYWlsdXJlcyAqLworICAgICAgaWYgKGt0ICE9IEtFUk5fTk9fU1BBQ0UpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJ2bV9yZW1hcCgpIGZhaWx1cmU6ICVkIGF0ICVzOiVkXG4iLCBrdCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgIH0KKworICAgICAgdm1fZGVhbGxvY2F0ZSAobWFjaF90YXNrX3NlbGYgKCksIGNvbmZpZ19wYWdlLCBQQUdFX1NJWkUpOworICAgICAgY29udGludWU7CisgICAgfQorCisgICAgLyogV2UgaGF2ZSB2YWxpZCB0cmFtcG9saW5lIGFuZCBjb25maWcgcGFnZXMgKi8KKyAgICB0YWJsZSA9IGNhbGxvYyAoMSwgc2l6ZW9mKGZmaV90cmFtcG9saW5lX3RhYmxlKSk7CisgICAgdGFibGUtPmZyZWVfY291bnQgPSBGRklfVFJBTVBPTElORV9DT1VOVDsKKyAgICB0YWJsZS0+Y29uZmlnX3BhZ2UgPSBjb25maWdfcGFnZTsKKyAgICB0YWJsZS0+dHJhbXBvbGluZV9wYWdlID0gdHJhbXBvbGluZV9wYWdlOworCisgICAgLyogQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBmcmVlIGxpc3QgKi8KKyAgICB0YWJsZS0+ZnJlZV9saXN0X3Bvb2wgPSBjYWxsb2MoRkZJX1RSQU1QT0xJTkVfQ09VTlQsIHNpemVvZihmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeSkpOworCisgICAgdWludDE2X3QgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgdGFibGUtPmZyZWVfY291bnQ7IGkrKykgeworICAgICAgZmZpX3RyYW1wb2xpbmVfdGFibGVfZW50cnkgKmVudHJ5ID0gJnRhYmxlLT5mcmVlX2xpc3RfcG9vbFtpXTsKKyAgICAgIGVudHJ5LT50cmFtcG9saW5lID0gKHZvaWQgKikgKHRhYmxlLT50cmFtcG9saW5lX3BhZ2UgKyAoaSAqIEZGSV9UUkFNUE9MSU5FX1NJWkUpKTsKKworICAgICAgaWYgKGkgPCB0YWJsZS0+ZnJlZV9jb3VudCAtIDEpCisgICAgICAgIGVudHJ5LT5uZXh0ID0gJnRhYmxlLT5mcmVlX2xpc3RfcG9vbFtpKzFdOworICAgIH0KKworICAgIHRhYmxlLT5mcmVlX2xpc3QgPSB0YWJsZS0+ZnJlZV9saXN0X3Bvb2w7CisgIH0KKworICByZXR1cm4gdGFibGU7Cit9CisKK3ZvaWQgKgorZmZpX2Nsb3N1cmVfYWxsb2MgKHNpemVfdCBzaXplLCB2b2lkICoqY29kZSkKK3sKKyAgLyogQ3JlYXRlIHRoZSBjbG9zdXJlICovCisgIGZmaV9jbG9zdXJlICpjbG9zdXJlID0gbWFsbG9jKHNpemUpOworICBpZiAoY2xvc3VyZSA9PSBOVUxMKQorICAgIHJldHVybiBOVUxMOworCisgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZmZpX3RyYW1wb2xpbmVfbG9jayk7CisKKyAgLyogQ2hlY2sgZm9yIGFuIGFjdGl2ZSB0cmFtcG9saW5lIHRhYmxlIHdpdGggYXZhaWxhYmxlIGVudHJpZXMuICovCisgIGZmaV90cmFtcG9saW5lX3RhYmxlICp0YWJsZSA9IGZmaV90cmFtcG9saW5lX3RhYmxlczsKKyAgaWYgKHRhYmxlID09IE5VTEwgfHwgdGFibGUtPmZyZWVfbGlzdCA9PSBOVUxMKSB7CisgICAgdGFibGUgPSBmZmlfdHJhbXBvbGluZV90YWJsZV9hbGxvYyAoKTsKKyAgICBpZiAodGFibGUgPT0gTlVMTCkgeworICAgICAgZnJlZShjbG9zdXJlKTsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIEluc2VydCB0aGUgbmV3IHRhYmxlIGF0IHRoZSB0b3Agb2YgdGhlIGxpc3QgKi8KKyAgICB0YWJsZS0+bmV4dCA9IGZmaV90cmFtcG9saW5lX3RhYmxlczsKKyAgICBpZiAodGFibGUtPm5leHQgIT0gTlVMTCkKKyAgICAgICAgdGFibGUtPm5leHQtPnByZXYgPSB0YWJsZTsKKworICAgIGZmaV90cmFtcG9saW5lX3RhYmxlcyA9IHRhYmxlOworICB9CisKKyAgLyogQ2xhaW0gdGhlIGZyZWUgZW50cnkgKi8KKyAgZmZpX3RyYW1wb2xpbmVfdGFibGVfZW50cnkgKmVudHJ5ID0gZmZpX3RyYW1wb2xpbmVfdGFibGVzLT5mcmVlX2xpc3Q7CisgIGZmaV90cmFtcG9saW5lX3RhYmxlcy0+ZnJlZV9saXN0ID0gZW50cnktPm5leHQ7CisgIGZmaV90cmFtcG9saW5lX3RhYmxlcy0+ZnJlZV9jb3VudC0tOworICBlbnRyeS0+bmV4dCA9IE5VTEw7CisKKyAgcHRocmVhZF9tdXRleF91bmxvY2soJmZmaV90cmFtcG9saW5lX2xvY2spOworCisgIC8qIEluaXRpYWxpemUgdGhlIHJldHVybiB2YWx1ZXMgKi8KKyAgKmNvZGUgPSBlbnRyeS0+dHJhbXBvbGluZTsKKyAgY2xvc3VyZS0+dHJhbXBvbGluZV90YWJsZSA9IHRhYmxlOworICBjbG9zdXJlLT50cmFtcG9saW5lX3RhYmxlX2VudHJ5ID0gZW50cnk7CisKKyAgcmV0dXJuIGNsb3N1cmU7Cit9CisKK3ZvaWQKK2ZmaV9jbG9zdXJlX2ZyZWUgKHZvaWQgKnB0cikKK3sKKyAgZmZpX2Nsb3N1cmUgKmNsb3N1cmUgPSBwdHI7CisKKyAgcHRocmVhZF9tdXRleF9sb2NrKCZmZmlfdHJhbXBvbGluZV9sb2NrKTsKKworICAvKiBGZXRjaCB0aGUgdGFibGUgYW5kIGVudHJ5IHJlZmVyZW5jZXMgKi8KKyAgZmZpX3RyYW1wb2xpbmVfdGFibGUgKnRhYmxlID0gY2xvc3VyZS0+dHJhbXBvbGluZV90YWJsZTsKKyAgZmZpX3RyYW1wb2xpbmVfdGFibGVfZW50cnkgKmVudHJ5ID0gY2xvc3VyZS0+dHJhbXBvbGluZV90YWJsZV9lbnRyeTsKKworICAvKiBSZXR1cm4gdGhlIGVudHJ5IHRvIHRoZSBmcmVlIGxpc3QgKi8KKyAgZW50cnktPm5leHQgPSB0YWJsZS0+ZnJlZV9saXN0OworICB0YWJsZS0+ZnJlZV9saXN0ID0gZW50cnk7CisgIHRhYmxlLT5mcmVlX2NvdW50Kys7CisKKyAgLyogSWYgYWxsIHRyYW1wb2xpbmVzIHdpdGhpbiB0aGlzIHRhYmxlIGFyZSBmcmVlLCBhbmQgYXQgbGVhc3Qgb25lIG90aGVyIHRhYmxlIGV4aXN0cywgZGVhbGxvY2F0ZQorICAgKiB0aGUgdGFibGUgKi8KKyAgaWYgKHRhYmxlLT5mcmVlX2NvdW50ID09IEZGSV9UUkFNUE9MSU5FX0NPVU5UICYmIGZmaV90cmFtcG9saW5lX3RhYmxlcyAhPSB0YWJsZSkgeworICAgIC8qIFJlbW92ZSBmcm9tIHRoZSBsaXN0ICovCisgICAgaWYgKHRhYmxlLT5wcmV2ICE9IE5VTEwpCisgICAgICB0YWJsZS0+cHJldi0+bmV4dCA9IHRhYmxlLT5uZXh0OworCisgICAgaWYgKHRhYmxlLT5uZXh0ICE9IE5VTEwpCisgICAgICB0YWJsZS0+bmV4dC0+cHJldiA9IHRhYmxlLT5wcmV2OworCisgICAgLyogRGVhbGxvY2F0ZSBwYWdlcyAqLworICAgIGtlcm5fcmV0dXJuX3Qga3Q7CisgICAga3QgPSB2bV9kZWFsbG9jYXRlIChtYWNoX3Rhc2tfc2VsZiAoKSwgdGFibGUtPmNvbmZpZ19wYWdlLCBQQUdFX1NJWkUpOworICAgIGlmIChrdCAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICBmcHJpbnRmKHN0ZGVyciwgInZtX2RlYWxsb2NhdGUoKSBmYWlsdXJlOiAlZCBhdCAlczolZFxuIiwga3QsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisKKyAgICBrdCA9IHZtX2RlYWxsb2NhdGUgKG1hY2hfdGFza19zZWxmICgpLCB0YWJsZS0+dHJhbXBvbGluZV9wYWdlLCBQQUdFX1NJWkUpOworICAgIGlmIChrdCAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICBmcHJpbnRmKHN0ZGVyciwgInZtX2RlYWxsb2NhdGUoKSBmYWlsdXJlOiAlZCBhdCAlczolZFxuIiwga3QsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisKKyAgICAvKiBEZWFsbG9jYXRlIGZyZWUgbGlzdCAqLworICAgIGZyZWUgKHRhYmxlLT5mcmVlX2xpc3RfcG9vbCk7CisgICAgZnJlZSAodGFibGUpOworICB9IGVsc2UgaWYgKGZmaV90cmFtcG9saW5lX3RhYmxlcyAhPSB0YWJsZSkgeworICAgIC8qIE90aGVyd2lzZSwgYnVtcCB0aGlzIHRhYmxlIHRvIHRoZSB0b3Agb2YgdGhlIGxpc3QgKi8KKyAgICB0YWJsZS0+cHJldiA9IE5VTEw7CisgICAgdGFibGUtPm5leHQgPSBmZmlfdHJhbXBvbGluZV90YWJsZXM7CisgICAgaWYgKGZmaV90cmFtcG9saW5lX3RhYmxlcyAhPSBOVUxMKQorICAgICAgZmZpX3RyYW1wb2xpbmVfdGFibGVzLT5wcmV2ID0gdGFibGU7CisKKyAgICBmZmlfdHJhbXBvbGluZV90YWJsZXMgPSB0YWJsZTsKKyAgfQorCisgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmZmZpX3RyYW1wb2xpbmVfbG9jayk7CisKKyAgLyogRnJlZSB0aGUgY2xvc3VyZSAqLworICBmcmVlIChjbG9zdXJlKTsKK30KKworI2Vsc2UKKwogI2RlZmluZSBGRklfSU5JVF9UUkFNUE9MSU5FKFRSQU1QLEZVTixDVFgpCQkJCVwKICh7IHVuc2lnbmVkIGNoYXIgKl9fdHJhbXAgPSAodW5zaWduZWQgY2hhciopKFRSQU1QKTsJCQlcCiAgICB1bnNpZ25lZCBpbnQgIF9fZnVuID0gKHVuc2lnbmVkIGludCkoRlVOKTsJCQkJXAogICAgdW5zaWduZWQgaW50ICBfX2N0eCA9ICh1bnNpZ25lZCBpbnQpKENUWCk7CQkJCVwKLSAgICoodW5zaWduZWQgaW50KikgJl9fdHJhbXBbMF0gPSAweGU5MmQwMDBmOyAvKiBzdG1mZCBzcCEsIHtyMC1yM30gKi8JXAotICAgKih1bnNpZ25lZCBpbnQqKSAmX190cmFtcFs0XSA9IDB4ZTU5ZjAwMDA7IC8qIGxkciByMCwgW3BjXSAqLwlcCi0gICAqKHVuc2lnbmVkIGludCopICZfX3RyYW1wWzhdID0gMHhlNTlmZjAwMDsgLyogbGRyIHBjLCBbcGNdICovCVwKKyAgIHVuc2lnbmVkIGNoYXIgKmluc25zID0gKHVuc2lnbmVkIGNoYXIgKikoQ1RYKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIG1lbWNweSAoX190cmFtcCwgZmZpX2FybV90cmFtcG9saW5lLCBzaXplb2YgZmZpX2FybV90cmFtcG9saW5lKTsgICAgIFwKICAgICoodW5zaWduZWQgaW50KikgJl9fdHJhbXBbMTJdID0gX19jdHg7CQkJCVwKICAgICoodW5zaWduZWQgaW50KikgJl9fdHJhbXBbMTZdID0gX19mdW47CQkJCVwKLSAgIF9fY2xlYXJfY2FjaGUoKCZfX3RyYW1wWzBdKSwgKCZfX3RyYW1wWzE5XSkpOwkJCVwKKyAgIF9fY2xlYXJfY2FjaGUoKCZfX3RyYW1wWzBdKSwgKCZfX3RyYW1wWzE5XSkpOyAvKiBDbGVhciBkYXRhIG1hcHBpbmcuICAqLyBcCisgICBfX2NsZWFyX2NhY2hlKGluc25zLCBpbnNucyArIDMgKiBzaXplb2YgKHVuc2lnbmVkIGludCkpOyAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2xlYXIgaW5zdHJ1Y3Rpb24gICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZy4gICovICAgICAgICBcCiAgfSkKIAorI2VuZGlmCiAKIC8qIHRoZSBjaWYgbXVzdCBhbHJlYWR5IGJlIHByZXAnZWQgKi8KIApAQCAtMjk1LDE1ICs2MDcsMTUwIEBACiAJCSAgICAgIHZvaWQgKnVzZXJfZGF0YSwKIAkJICAgICAgdm9pZCAqY29kZWxvYykKIHsKLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX1NZU1YpOworICB2b2lkICgqY2xvc3VyZV9mdW5jKShmZmlfY2xvc3VyZSopID0gTlVMTDsKIAotICBGRklfSU5JVF9UUkFNUE9MSU5FICgmY2xvc3VyZS0+dHJhbXBbMF0sIFwKLQkJICAgICAgICZmZmlfY2xvc3VyZV9TWVNWLCAgXAotCQkgICAgICAgY29kZWxvYyk7CisgIGlmIChjaWYtPmFiaSA9PSBGRklfU1lTVikKKyAgICBjbG9zdXJlX2Z1bmMgPSAmZmZpX2Nsb3N1cmVfU1lTVjsKKyNpZmRlZiBfX0FSTV9FQUJJX18KKyAgZWxzZSBpZiAoY2lmLT5hYmkgPT0gRkZJX1ZGUCkKKyAgICBjbG9zdXJlX2Z1bmMgPSAmZmZpX2Nsb3N1cmVfVkZQOworI2VuZGlmCisgIGVsc2UKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAgICAgCisjaWYgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRQorICB2b2lkICoqY29uZmlnID0gRkZJX1RSQU1QT0xJTkVfQ09ERUxPQ19DT05GSUcoY29kZWxvYyk7CisgIGNvbmZpZ1swXSA9IGNsb3N1cmU7CisgIGNvbmZpZ1sxXSA9IGNsb3N1cmVfZnVuYzsKKyNlbHNlCisgIEZGSV9JTklUX1RSQU1QT0xJTkUgKCZjbG9zdXJlLT50cmFtcFswXSwgXAorCQkgICAgICAgY2xvc3VyZV9mdW5jLCAgXAorCQkgICAgICAgY29kZWxvYyk7CisjZW5kaWYKKwogICBjbG9zdXJlLT5jaWYgID0gY2lmOwogICBjbG9zdXJlLT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7CiAgIGNsb3N1cmUtPmZ1biAgPSBmdW47CiAKICAgcmV0dXJuIEZGSV9PSzsKIH0KKworLyogQmVsb3cgYXJlIHJvdXRpbmVzIGZvciBWRlAgaGFyZC1mbG9hdCBzdXBwb3J0LiAqLworCitzdGF0aWMgaW50IHJlY192ZnBfdHlwZV9wIChmZmlfdHlwZSAqdCwgaW50ICplbHQsIGludCAqZWxudW0pCit7CisgIHN3aXRjaCAodC0+dHlwZSkKKyAgICB7CisgICAgY2FzZSBGRklfVFlQRV9GTE9BVDoKKyAgICBjYXNlIEZGSV9UWVBFX0RPVUJMRToKKyAgICAgICplbHQgPSAoaW50KSB0LT50eXBlOworICAgICAgKmVsbnVtID0gMTsKKyAgICAgIHJldHVybiAxOworCisgICAgY2FzZSBGRklfVFlQRV9TVFJVQ1RfVkZQX0ZMT0FUOgorICAgICAgKmVsdCA9IEZGSV9UWVBFX0ZMT0FUOworICAgICAgKmVsbnVtID0gdC0+c2l6ZSAvIHNpemVvZiAoZmxvYXQpOworICAgICAgcmV0dXJuIDE7CisKKyAgICBjYXNlIEZGSV9UWVBFX1NUUlVDVF9WRlBfRE9VQkxFOgorICAgICAgKmVsdCA9IEZGSV9UWVBFX0RPVUJMRTsKKyAgICAgICplbG51bSA9IHQtPnNpemUgLyBzaXplb2YgKGRvdWJsZSk7CisgICAgICByZXR1cm4gMTsKKworICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOjsKKyAgICAgIHsKKwlpbnQgYmFzZV9lbHQgPSAwLCB0b3RhbF9lbG51bSA9IDA7CisJZmZpX3R5cGUgKiplbCA9IHQtPmVsZW1lbnRzOworCXdoaWxlICgqZWwpCisJICB7CisJICAgIGludCBlbF9lbHQgPSAwLCBlbF9lbG51bSA9IDA7CisJICAgIGlmICghIHJlY192ZnBfdHlwZV9wICgqZWwsICZlbF9lbHQsICZlbF9lbG51bSkKKwkJfHwgKGJhc2VfZWx0ICYmIGJhc2VfZWx0ICE9IGVsX2VsdCkKKwkJfHwgdG90YWxfZWxudW0gKyBlbF9lbG51bSA+IDQpCisJICAgICAgcmV0dXJuIDA7CisJICAgIGJhc2VfZWx0ID0gZWxfZWx0OworCSAgICB0b3RhbF9lbG51bSArPSBlbF9lbG51bTsKKwkgICAgZWwrKzsKKwkgIH0KKwkqZWxudW0gPSB0b3RhbF9lbG51bTsKKwkqZWx0ID0gYmFzZV9lbHQ7CisJcmV0dXJuIDE7CisgICAgICB9CisgICAgZGVmYXVsdDogOworICAgIH0KKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdmZwX3R5cGVfcCAoZmZpX3R5cGUgKnQpCit7CisgIGludCBlbHQsIGVsbnVtOworICBpZiAocmVjX3ZmcF90eXBlX3AgKHQsICZlbHQsICZlbG51bSkpCisgICAgeworICAgICAgaWYgKHQtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKQorCXsKKwkgIGlmIChlbG51bSA9PSAxKQorCSAgICB0LT50eXBlID0gZWx0OworCSAgZWxzZQorCSAgICB0LT50eXBlID0gKGVsdCA9PSBGRklfVFlQRV9GTE9BVAorCQkgICAgICAgPyBGRklfVFlQRV9TVFJVQ1RfVkZQX0ZMT0FUCisJCSAgICAgICA6IEZGSV9UWVBFX1NUUlVDVF9WRlBfRE9VQkxFKTsKKwl9CisgICAgICByZXR1cm4gKGludCkgdC0+dHlwZTsKKyAgICB9CisgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBwbGFjZV92ZnBfYXJnIChmZmlfY2lmICpjaWYsIGZmaV90eXBlICp0KQoreworICBpbnQgcmVnID0gY2lmLT52ZnBfcmVnX2ZyZWU7CisgIGludCBucmVncyA9IHQtPnNpemUgLyBzaXplb2YgKGZsb2F0KTsKKyAgaW50IGFsaWduID0gKCh0LT50eXBlID09IEZGSV9UWVBFX1NUUlVDVF9WRlBfRkxPQVQKKwkJfHwgdC0+dHlwZSA9PSBGRklfVFlQRV9GTE9BVCkgPyAxIDogMik7CisgIC8qIEFsaWduIHJlZ2lzdGVyIG51bWJlci4gKi8KKyAgaWYgKChyZWcgJiAxKSAmJiBhbGlnbiA9PSAyKQorICAgIHJlZysrOworICB3aGlsZSAocmVnICsgbnJlZ3MgPD0gMTYpCisgICAgeworICAgICAgaW50IHMsIG5ld191c2VkID0gMDsKKyAgICAgIGZvciAocyA9IHJlZzsgcyA8IHJlZyArIG5yZWdzOyBzKyspCisJeworCSAgbmV3X3VzZWQgfD0gKDEgPDwgcyk7CisJICBpZiAoY2lmLT52ZnBfdXNlZCAmICgxIDw8IHMpKQorCSAgICB7CisJICAgICAgcmVnICs9IGFsaWduOworCSAgICAgIGdvdG8gbmV4dF9yZWc7CisJICAgIH0KKwl9CisgICAgICAvKiBGb3VuZCByZWdzIHRvIGFsbG9jYXRlLiAqLworICAgICAgY2lmLT52ZnBfdXNlZCB8PSBuZXdfdXNlZDsKKyAgICAgIGNpZi0+dmZwX2FyZ3NbY2lmLT52ZnBfbmFyZ3MrK10gPSByZWc7CisKKyAgICAgIC8qIFVwZGF0ZSB2ZnBfcmVnX2ZyZWUuICovCisgICAgICBpZiAoY2lmLT52ZnBfdXNlZCAmICgxIDw8IGNpZi0+dmZwX3JlZ19mcmVlKSkKKwl7CisJICByZWcgKz0gbnJlZ3M7CisJICB3aGlsZSAoY2lmLT52ZnBfdXNlZCAmICgxIDw8IHJlZykpCisJICAgIHJlZyArPSAxOworCSAgY2lmLT52ZnBfcmVnX2ZyZWUgPSByZWc7CisJfQorICAgICAgcmV0dXJuOworICAgIG5leHRfcmVnOiA7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBsYXlvdXRfdmZwX2FyZ3MgKGZmaV9jaWYgKmNpZikKK3sKKyAgaW50IGk7CisgIC8qIEluaXQgVkZQIGZpZWxkcyAqLworICBjaWYtPnZmcF91c2VkID0gMDsKKyAgY2lmLT52ZnBfbmFyZ3MgPSAwOworICBjaWYtPnZmcF9yZWdfZnJlZSA9IDA7CisgIG1lbXNldCAoY2lmLT52ZnBfYXJncywgLTEsIDE2KTsgLyogSW5pdCB0byAtMS4gKi8KKworICBmb3IgKGkgPSAwOyBpIDwgY2lmLT5uYXJnczsgaSsrKQorICAgIHsKKyAgICAgIGZmaV90eXBlICp0ID0gY2lmLT5hcmdfdHlwZXNbaV07CisgICAgICBpZiAodmZwX3R5cGVfcCAodCkpCisJcGxhY2VfdmZwX2FyZyAoY2lmLCB0KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vZmZpdGFyZ2V0LmgKaW5kZXggYTk1NzQyNi4uMjZkNDk0ZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDggQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTAgIENvZGVTb3VyY2VyeQorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIEFSTS4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNyw2ICszMCwxMCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogI2lmbmRlZiBMSUJGRklfQVNNCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgZmZpX2FyZzsKIHR5cGVkZWYgc2lnbmVkIGxvbmcgICAgICAgICAgICBmZmlfc2FyZzsKQEAgLTM0LDExICs0MSwyNyBAQAogdHlwZWRlZiBlbnVtIGZmaV9hYmkgewogICBGRklfRklSU1RfQUJJID0gMCwKICAgRkZJX1NZU1YsCisgIEZGSV9WRlAsCisgIEZGSV9MQVNUX0FCSSwKKyNpZmRlZiBfX0FSTV9QQ1NfVkZQCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9WRlAsCisjZWxzZQogICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTViwKLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQorI2VuZGlmCiB9IGZmaV9hYmk7CiAjZW5kaWYKIAorI2RlZmluZSBGRklfRVhUUkFfQ0lGX0ZJRUxEUwkJCVwKKyAgaW50IHZmcF91c2VkOwkJCQkJXAorICBzaG9ydCB2ZnBfcmVnX2ZyZWUsIHZmcF9uYXJnczsJCVwKKyAgc2lnbmVkIGNoYXIgdmZwX2FyZ3NbMTZdCQkJXAorCisvKiBJbnRlcm5hbGx5IHVzZWQuICovCisjZGVmaW5lIEZGSV9UWVBFX1NUUlVDVF9WRlBfRkxPQVQgIChGRklfVFlQRV9MQVNUICsgMSkKKyNkZWZpbmUgRkZJX1RZUEVfU1RSVUNUX1ZGUF9ET1VCTEUgKEZGSV9UWVBFX0xBU1QgKyAyKQorCisjZGVmaW5lIEZGSV9UQVJHRVRfU1BFQ0lGSUNfVkFSSUFESUMKKwogLyogLS0tLSBEZWZpbml0aW9ucyBmb3IgY2xvc3VyZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2RlZmluZSBGRklfQ0xPU1VSRVMgMQpAQCAtNDYsNCArNjksMyBAQAogI2RlZmluZSBGRklfTkFUSVZFX1JBV19BUEkgMAogCiAjZW5kaWYKLQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL2dlbnRyYW1wLnNoIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL2dlbnRyYW1wLnNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0ZjBiODYKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vZ2VudHJhbXAuc2gKQEAgLTAsMCArMSwxMTggQEAKKyMhL2Jpbi9zaAorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICBnZW50cmFtcC5zaCAtIENvcHlyaWdodCAoYykgMjAxMCwgUGxhdXNpYmxlIExhYnMgQ29vcGVyYXRpdmUsIEluYy4KKyMgIAorIyAgQVJNIFRyYW1wb2xpbmUgUGFnZSBHZW5lcmF0b3IKKyMKKyMgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworIyAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisjICBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyMgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyMgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworIyAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisjICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisjCisjICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAorIyAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisjCisjICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorIyAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisjICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorIyAgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUCisjICBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwKKyMgIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorIyAgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorIyAgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorIyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUFJPR05BTUU9JDAKKworIyBFYWNoIHRyYW1wb2xpbmUgaXMgZXhhY3RseSAzIGluc3RydWN0aW9ucywgb3IgMTIgYnl0ZXMuIElmIGFueSBvZiB0aGVzZSB2YWx1ZXMgY2hhbmdlLAorIyB0aGUgZW50aXJlIGFybSB0cmFtcG9saW5lIGltcGxlbWVudGF0aW9uIG11c3QgYmUgdXBkYXRlZCB0byBtYXRjaCwgdG9vLgorCisjIFNpemUgb2YgYW4gaW5kaXZpZHVhbCB0cmFtcG9saW5lLCBpbiBieXRlcworVFJBTVBPTElORV9TSVpFPTEyCisKKyMgUGFnZSBzaXplLCBpbiBieXRlcworUEFHRV9TSVpFPTQwOTYKKworIyBDb21wdXRlIHRoZSBzaXplIG9mIHRoZSByZWFjaGFibGUgY29uZmlnIHBhZ2U7IFRoZSBmaXJzdCAxNiBieXRlcyBvZiB0aGUgY29uZmlnIHBhZ2UKKyMgYXJlIHVucmVhY2hhYmxlIGR1ZSB0byBvdXIgbWF4aW11bSBwYy1yZWxhdGl2ZSBsZHIgb2Zmc2V0LgorUEFHRV9BVkFJTD1gZXhwciAkUEFHRV9TSVpFIC0gMTZgCisKKyMgQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIG9mIGF2YWlsYWJsZSB0cmFtcG9saW5lcy4gCitUUkFNUE9MSU5FX0NPVU5UPWBleHByICRQQUdFX0FWQUlMIC8gJFRSQU1QT0xJTkVfU0laRWAKKworaGVhZGVyICgpIHsKKyAgICBlY2hvICIjIEdFTkVSQVRFRCBDT0RFIC0gRE8gTk9UIEVESVQiCisgICAgZWNobyAiIyBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSAkUFJPR05BTUUiCisgICAgZWNobyAiIgorCisgICAgIyBXcml0ZSBvdXQgdGhlIGxpY2Vuc2UgaGVhZGVyCitjYXQgPDwgRU9GCisjICBDb3B5cmlnaHQgKGMpIDIwMTAsIFBsYXVzaWJsZSBMYWJzIENvb3BlcmF0aXZlLCBJbmMuCisjICAKKyMgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworIyAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisjICBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyMgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyMgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworIyAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisjICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisjCisjICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAorIyAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisjCisjICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorIyAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisjICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorIyAgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUCisjICBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwKKyMgIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorIyAgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorIyAgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorIyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRU9GCisKKyAgICAjIFdyaXRlIG91dCB0aGUgdHJhbXBvbGluZSB0YWJsZSwgYWxpZ25lZCB0byB0aGUgcGFnZSBib3VuZGFyeQorICAgIGVjaG8gIi50ZXh0IgorICAgIGVjaG8gIi5hbGlnbiAxMiIKKyAgICBlY2hvICIuZ2xvYmwgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGVfcGFnZSIKKyAgICBlY2hvICJfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZV9wYWdlOiIKK30KKworCisjIFdBUk5JTkcgLSBEb24ndCBtb2RpZnkgdGhlIHRyYW1wb2xpbmUgY29kZSBzaXplIHdpdGhvdXQgYWxzbyB1cGRhdGluZyB0aGUgcmVsZXZlbnQgbGliZmZpIGNvZGUKK3RyYW1wb2xpbmUgKCkgeworICAgIGNhdCA8PCBFTkQKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCitFTkQKK30KKworbWFpbiAoKSB7CisgICAgIyBXcml0ZSBvdXQgdGhlIGhlYWRlcgorICAgIGhlYWRlcgorCisgICAgIyBXcml0ZSBvdXQgdGhlIHRyYW1wb2xpbmVzCisgICAgbG9jYWwgaT0wCisgICAgd2hpbGUgWyAkaSAtbHQgJHtUUkFNUE9MSU5FX0NPVU5UfSBdOyBkbworICAgICAgICB0cmFtcG9saW5lCisgICAgICAgIGxvY2FsIGk9YGV4cHIgJGkgKyAxYAorICAgIGRvbmUKK30KKworbWFpbgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL3N5c3YuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9zeXN2LlMKaW5kZXggOTA2NDMxOC4uZmIzOGNkNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL3N5c3YuUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vc3lzdi5TCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHN5c3YuUyAtIENvcHlyaWdodCAoYykgMTk5OCwgMjAwOCBSZWQgSGF0LCBJbmMuCisgICBzeXN2LlMgLSBDb3B5cmlnaHQgKGMpIDE5OTgsIDIwMDgsIDIwMTEgUmVkIEhhdCwgSW5jLgorCSAgICBDb3B5cmlnaHQgKGMpIDIwMTEgUGxhdXNpYmxlIExhYnMgQ29vcGVyYXRpdmUsIEluYy4KICAgIAogICAgQVJNIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAogCkBAIC0zOSw3ICs0MCwxMSBAQAogI2Vsc2UKICNkZWZpbmUgQ05BTUUoeCkgeAogI2VuZGlmCisjaWZkZWYgX19BUFBMRV9fCisjZGVmaW5lIEVOVFJZKHgpIC5nbG9ibCBfIyN4OyBfIyN4OgorI2Vsc2UKICNkZWZpbmUgRU5UUlkoeCkgLmdsb2JsIENOQU1FKHgpOyAudHlwZSBDTkFNRSh4KSwlZnVuY3Rpb247IENOQU1FKHgpOgorI2VuZGlmIC8qIF9fQVBQTEVfXyAqLwogI2VuZGlmCiAKICNpZmRlZiBfX0VMRl9fCkBAIC00OCw2ICs1MywxMiBAQAogI2RlZmluZSBMU1lNKHgpIHgKICNlbmRpZgogCisvKiBVc2UgdGhlIFNPRlRGUCByZXR1cm4gdmFsdWUgQUJJIG9uIE1hYyBPUyBYLCBhcyBwZXIgdGhlIGlPUyBBQkkKKyAgRnVuY3Rpb24gQ2FsbCBHdWlkZSAqLworI2lmZGVmIF9fQVBQTEVfXworI2RlZmluZSBfX1NPRlRGUF9fCisjZW5kaWYKKwogLyogV2UgbmVlZCBhIGJldHRlciB3YXkgb2YgdGVzdGluZyBmb3IgdGhpcywgYnV0IGZvciBub3csIHRoaXMgaXMgYWxsIAogICAgd2UgY2FuIGRvLiAgKi8KIEAgVGhpcyBzZWxlY3RzIHRoZSBtaW5pbXVtIGFyY2hpdGVjdHVyZSBsZXZlbCByZXF1aXJlZC4KQEAgLTEwNSwyMSArMTE2LDMzIEBACiAJLmFsaWduIDAKIAkudGh1bWIKIAkudGh1bWJfZnVuYworI2lmZGVmIF9fQVBQTEVfXworCUVOVFJZKCQwKQorI2Vsc2UKIAlFTlRSWShcbmFtZSkKKyNlbmRpZgogCWJ4CXBjCiAJbm9wCiAJLmFybQogCVVOV0lORCAuZm5zdGFydAogLyogQSBob29rIHRvIHRlbGwgZ2RiIHRoYXQgd2UndmUgc3dpdGNoZWQgdG8gQVJNIG1vZGUuICBBbHNvIHVzZWQgdG8gY2FsbAogICAgZGlyZWN0bHkgZnJvbSBvdGhlciBsb2NhbCBhcm0gcm91dGluZXMuICAqLwotX0xfX1xuYW1lOgkJCisjaWZkZWYgX19BUFBMRV9fCitfTF9fJDA6CisjZWxzZQorX0xfX1xuYW1lOgorI2VuZGlmCiAuZW5kbQogI2Vsc2UKIC5tYWNybwlBUk1fRlVOQ19TVEFSVCBuYW1lCiAJLnRleHQKIAkuYWxpZ24gMAogCS5hcm0KKyNpZmRlZiBfX0FQUExFX18KKwlFTlRSWSgkMCkKKyNlbHNlCiAJRU5UUlkoXG5hbWUpCisjZW5kaWYKIAlVTldJTkQgLmZuc3RhcnQKIC5lbmRtCiAjZW5kaWYKQEAgLTE0MSwxMyArMTY0LDExIEBACiAjZW5kaWYKIC5lbmRtCiAKLQogCUAgcjA6ICAgZmZpX3ByZXBfYXJncwogCUAgcjE6ICAgJmVjaWYKIAlAIHIyOiAgIGNpZi0+Ynl0ZXMKIAlAIHIzOiAgIGZpZy0+ZmxhZ3MKIAlAIHNwKzA6IGVjaWYucnZhbHVlCi0JQCBzcCs0OiBmbgogCiAJQCBUaGlzIGFzc3VtZXMgd2UgYXJlIHVzaW5nIGdhcy4KIEFSTV9GVU5DX1NUQVJUIGZmaV9jYWxsX1NZU1YKQEAgLTE2MiwyNCArMTgzLDIzIEBACiAJc3ViCXNwLCBmcCwgcjIKIAogCUAgUGxhY2UgYWxsIG9mIHRoZSBmZmlfcHJlcF9hcmdzIGluIHBvc2l0aW9uCi0JbW92CWlwLCByMAogCW1vdglyMCwgc3AKIAlAICAgICByMSBhbHJlYWR5IHNldAogCiAJQCBDYWxsIGZmaV9wcmVwX2FyZ3Moc3RhY2ssICZlY2lmKQotCWNhbGxfcmVnKGlwKQorCWJsCUNOQU1FKGZmaV9wcmVwX2FyZ3MpCiAKIAlAIG1vdmUgZmlyc3QgNCBwYXJhbWV0ZXJzIGluIHJlZ2lzdGVycwogCWxkbWlhCXNwLCB7cjAtcjN9CiAKIAlAIGFuZCBhZGp1c3Qgc3RhY2sKLQlsZHIJaXAsIFtmcCwgIzhdCi0gICAgICAgIGNtcAlpcCwgIzE2Ci0JbW92aHMJaXAsICMxNgotICAgICAgICBhZGQJc3AsIHNwLCBpcAorCXN1YglsciwgZnAsIHNwCUAgY2lmLT5ieXRlcyA9PSBmcCAtIHNwCisJbGRyCWlwLCBbZnBdCUAgbG9hZCBmbigpIGluIGFkdmFuY2UKKwljbXAJbHIsICMxNgorCW1vdmhzCWxyLCAjMTYKKwlhZGQJc3AsIHNwLCBscgogCiAJQCBjYWxsIChmbikgKC4uLikKLQlsZHIJaXAsIFtmcCwgIzI4XQogCWNhbGxfcmVnKGlwKQogCQogCUAgUmVtb3ZlIHRoZSBzcGFjZSB3ZSBwdXNoZWQgZm9yIHRoZSBhcmdzCkBAIC0yMjQsMTEgKzI0NCwxOSBAQAogI2VuZGlmCiAKIExTWU0oTGVwaWxvZ3VlKToKLQlSRVRMRE0JInIwLXIzLGZwIgorI2lmIGRlZmluZWQgKF9fSU5URVJXT1JLSU5HX18pCisJbGRtaWEgICBzcCEsIHtyMC1yMyxmcCwgbHJ9CisJYngJbHIKKyNlbHNlCisJbGRtaWEgICBzcCEsIHtyMC1yMyxmcCwgcGN9CisjZW5kaWYKIAogLmZmaV9jYWxsX1NZU1ZfZW5kOgogCVVOV0lORCAuZm5lbmQKKyNpZmRlZiBfX0VMRl9fCiAgICAgICAgIC5zaXplICAgIENOQU1FKGZmaV9jYWxsX1NZU1YpLC5mZmlfY2FsbF9TWVNWX2VuZC1DTkFNRShmZmlfY2FsbF9TWVNWKQorI2VuZGlmCisKIAogLyoKIAl1bnNpZ25lZCBpbnQgRkZJX0hJRERFTgpAQCAtMjQ0LDExICsyNzIsMTEgQEAKIAlzdG1mZAlzcCEsIHtpcCwgbHJ9CiAJVU5XSU5EIC5zYXZlCXtyMCwgbHJ9CiAJYWRkCXIyLCBzcCwgIzgKLQkucGFkICMxNgorCVVOV0lORCAucGFkICMxNgogCXN1YglzcCwgc3AsICMxNgogCXN0cglzcCwgW3NwLCAjOF0KIAlhZGQJcjEsIHNwLCAjOAotCWJsCWZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIKKwlibAlDTkFNRShmZmlfY2xvc3VyZV9TWVNWX2lubmVyKQogCWNtcAlyMCwgI0ZGSV9UWVBFX0lOVAogCWJlcQkuTHJldGludAogCkBAIC0zMDAsNyArMzI4LDE3NyBAQAogCiAuZmZpX2Nsb3N1cmVfU1lTVl9lbmQ6CiAJVU5XSU5EIC5mbmVuZAorI2lmZGVmIF9fRUxGX18KICAgICAgICAgLnNpemUgICAgQ05BTUUoZmZpX2Nsb3N1cmVfU1lTViksLmZmaV9jbG9zdXJlX1NZU1ZfZW5kLUNOQU1FKGZmaV9jbG9zdXJlX1NZU1YpCisjZW5kaWYKKworCisvKiBCZWxvdyBhcmUgVkZQIGhhcmQtZmxvYXQgQUJJIGNhbGwgYW5kIGNsb3N1cmUgaW1wbGVtZW50YXRpb25zLgorICAgQWRkIFZGUCBGUFUgZGlyZWN0aXZlIGhlcmUuIFRoaXMgaXMgb25seSBjb21waWxlZCBpbnRvIHRoZSBsaWJyYXJ5CisgICB1bmRlciBFQUJJLiAgKi8KKyNpZmRlZiBfX0FSTV9FQUJJX18KKwkuZnB1CXZmcAorCisJQCByMDogICBmbgorCUAgcjE6ICAgJmVjaWYKKwlAIHIyOiAgIGNpZi0+Ynl0ZXMKKwlAIHIzOiAgIGZpZy0+ZmxhZ3MKKwlAIHNwKzA6IGVjaWYucnZhbHVlCisKK0FSTV9GVU5DX1NUQVJUIGZmaV9jYWxsX1ZGUAorCUAgU2F2ZSByZWdpc3RlcnMKKyAgICAgICAgc3RtZmQJc3AhLCB7cjAtcjMsIGZwLCBscn0KKwlVTldJTkQgLnNhdmUJe3IwLXIzLCBmcCwgbHJ9CisJbW92CWZwLCBzcAorCVVOV0lORCAuc2V0ZnAJZnAsIHNwCisKKwlAIE1ha2Ugcm9vbSBmb3IgYWxsIG9mIHRoZSBuZXcgYXJncy4KKwlzdWIJc3AsIHNwLCByMgorCisJQCBNYWtlIHJvb20gZm9yIGxvYWRpbmcgVkZQIGFyZ3MKKwlzdWIJc3AsIHNwLCAjNjQKKworCUAgUGxhY2UgYWxsIG9mIHRoZSBmZmlfcHJlcF9hcmdzIGluIHBvc2l0aW9uCisJbW92CXIwLCBzcAorCUAgICAgIHIxIGFscmVhZHkgc2V0CisJc3ViCXIyLCBmcCwgIzY0ICAgQCBWRlAgc2NyYXRjaCBzcGFjZQorCisJQCBDYWxsIGZmaV9wcmVwX2FyZ3Moc3RhY2ssICZlY2lmLCB2ZnBfc3BhY2UpCisJYmwJQ05BTUUoZmZpX3ByZXBfYXJncykKKworCUAgTG9hZCBWRlAgcmVnaXN0ZXIgYXJncyBpZiBuZWVkZWQKKwljbXAJcjAsICMwCisJYmVxCUxTWU0oTGJhc2VfYXJncykKKworCUAgTG9hZCBvbmx5IGQwIGlmIHBvc3NpYmxlCisJY21wCXIwLCAjMworCXN1YglpcCwgZnAsICM2NAorCWZsZGRsZQlkMCwgW2lwXQorCWZsZG1pYWRndAlpcCwge2QwLWQ3fQorCitMU1lNKExiYXNlX2FyZ3MpOgorCUAgbW92ZSBmaXJzdCA0IHBhcmFtZXRlcnMgaW4gcmVnaXN0ZXJzCisJbGRtaWEJc3AsIHtyMC1yM30KKworCUAgYW5kIGFkanVzdCBzdGFjaworCXN1YglsciwgaXAsIHNwCUAgY2lmLT5ieXRlcyA9PSAoZnAgLSA2NCkgLSBzcAorCWxkcglpcCwgW2ZwXQlAIGxvYWQgZm4oKSBpbiBhZHZhbmNlCisgICAgICAgIGNtcAlsciwgIzE2CisJbW92aHMJbHIsICMxNgorICAgICAgICBhZGQJc3AsIHNwLCBscgorCisJQCBjYWxsIChmbikgKC4uLikKKwljYWxsX3JlZyhpcCkKKworCUAgUmVtb3ZlIHRoZSBzcGFjZSB3ZSBwdXNoZWQgZm9yIHRoZSBhcmdzCisJbW92CXNwLCBmcAorCisJQCBMb2FkIHIyIHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IKKwlAIHRoZSByZXR1cm4gdmFsdWUKKwlsZHIJcjIsIFtzcCwgIzI0XQorCisJQCBMb2FkIHIzIHdpdGggdGhlIHJldHVybiB0eXBlIGNvZGUgCisJbGRyCXIzLCBbc3AsICMxMl0KKworCUAgSWYgdGhlIHJldHVybiB2YWx1ZSBwb2ludGVyIGlzIE5VTEwsCisJQCBhc3N1bWUgbm8gcmV0dXJuIHZhbHVlLgorCWNtcAlyMiwgIzAKKwliZXEJTFNZTShMZXBpbG9ndWVfdmZwKQorCisJY21wCXIzLCAjRkZJX1RZUEVfSU5UCisJc3RyZXEJcjAsIFtyMl0KKwliZXEJTFNZTShMZXBpbG9ndWVfdmZwKQorCisJY21wCXIzLCAjRkZJX1RZUEVfU0lOVDY0CisJc3RtZXFpYQlyMiwge3IwLCByMX0KKwliZXEJTFNZTShMZXBpbG9ndWVfdmZwKQorCisJY21wCXIzLCAjRkZJX1RZUEVfRkxPQVQKKwlmc3RzZXEJczAsIFtyMl0KKwliZXEJTFNZTShMZXBpbG9ndWVfdmZwKQorCQorCWNtcAlyMywgI0ZGSV9UWVBFX0RPVUJMRQorCWZzdGRlcQlkMCwgW3IyXQorCWJlcQlMU1lNKExlcGlsb2d1ZV92ZnApCisKKwljbXAJcjMsICNGRklfVFlQRV9TVFJVQ1RfVkZQX0ZMT0FUCisJY21wbmUJcjMsICNGRklfVFlQRV9TVFJVQ1RfVkZQX0RPVUJMRQorCWZzdG1pYWRlcQlyMiwge2QwLWQzfQorCitMU1lNKExlcGlsb2d1ZV92ZnApOgorCVJFVExETQkicjAtcjMsZnAiCisKKy5mZmlfY2FsbF9WRlBfZW5kOgorCVVOV0lORCAuZm5lbmQKKyAgICAgICAgLnNpemUgICAgQ05BTUUoZmZpX2NhbGxfVkZQKSwuZmZpX2NhbGxfVkZQX2VuZC1DTkFNRShmZmlfY2FsbF9WRlApCisKKworQVJNX0ZVTkNfU1RBUlQgZmZpX2Nsb3N1cmVfVkZQCisJZnN0bWZkZAlzcCEsIHtkMC1kN30KKwlAIHIwLXIzLCB0aGVuIGQwLWQ3CisJVU5XSU5EIC5wYWQgIzgwCisJYWRkCWlwLCBzcCwgIzgwCisJc3RtZmQJc3AhLCB7aXAsIGxyfQorCVVOV0lORCAuc2F2ZQl7cjAsIGxyfQorCWFkZAlyMiwgc3AsICM3MgorCWFkZAlyMywgc3AsICM4CisJVU5XSU5EIC5wYWQgIzcyCisJc3ViCXNwLCBzcCwgIzcyCisJc3RyCXNwLCBbc3AsICM2NF0KKwlhZGQJcjEsIHNwLCAjNjQKKwlibAlDTkFNRShmZmlfY2xvc3VyZV9TWVNWX2lubmVyKQorCisJY21wCXIwLCAjRkZJX1RZUEVfSU5UCisJYmVxCS5McmV0aW50X3ZmcAorCisJY21wCXIwLCAjRkZJX1RZUEVfRkxPQVQKKwliZXEJLkxyZXRmbG9hdF92ZnAKKworCWNtcAlyMCwgI0ZGSV9UWVBFX0RPVUJMRQorCWNtcG5lCXIwLCAjRkZJX1RZUEVfTE9OR0RPVUJMRQorCWJlcQkuTHJldGRvdWJsZV92ZnAKKworCWNtcAlyMCwgI0ZGSV9UWVBFX1NJTlQ2NAorCWJlcQkuTHJldGxvbmdsb25nX3ZmcAorCisJY21wCXIwLCAjRkZJX1RZUEVfU1RSVUNUX1ZGUF9GTE9BVAorCWJlcQkuTHJldGZsb2F0X3N0cnVjdF92ZnAKKworCWNtcAlyMCwgI0ZGSV9UWVBFX1NUUlVDVF9WRlBfRE9VQkxFCisJYmVxCS5McmV0ZG91YmxlX3N0cnVjdF92ZnAKKwkKKy5MY2xvc3VyZV9lcGlsb2d1ZV92ZnA6CisJYWRkCXNwLCBzcCwgIzcyCisJbGRtZmQJc3AsIHtzcCwgcGN9CisKKy5McmV0ZmxvYXRfdmZwOgorCWZsZHMJczAsIFtzcF0KKwliCS5MY2xvc3VyZV9lcGlsb2d1ZV92ZnAKKy5McmV0ZG91YmxlX3ZmcDoKKwlmbGRkCWQwLCBbc3BdCisJYgkuTGNsb3N1cmVfZXBpbG9ndWVfdmZwCisuTHJldGludF92ZnA6CisJbGRyCXIwLCBbc3BdCisJYgkuTGNsb3N1cmVfZXBpbG9ndWVfdmZwCisuTHJldGxvbmdsb25nX3ZmcDoKKwlsZG1pYQlzcCwge3IwLCByMX0KKwliCS5MY2xvc3VyZV9lcGlsb2d1ZV92ZnAKKy5McmV0ZmxvYXRfc3RydWN0X3ZmcDoKKwlmbGRtaWFkCXNwLCB7ZDAtZDF9CisJYgkuTGNsb3N1cmVfZXBpbG9ndWVfdmZwCisuTHJldGRvdWJsZV9zdHJ1Y3RfdmZwOgorCWZsZG1pYWQJc3AsIHtkMC1kM30KKwliCS5MY2xvc3VyZV9lcGlsb2d1ZV92ZnAKKworLmZmaV9jbG9zdXJlX1ZGUF9lbmQ6CisJVU5XSU5EIC5mbmVuZAorICAgICAgICAuc2l6ZSAgICBDTkFNRShmZmlfY2xvc3VyZV9WRlApLC5mZmlfY2xvc3VyZV9WRlBfZW5kLUNOQU1FKGZmaV9jbG9zdXJlX1ZGUCkKKyNlbmRpZgorCitFTlRSWShmZmlfYXJtX3RyYW1wb2xpbmUpCisJc3RtZmQgc3AhLCB7cjAtcjN9CisJbGRyIHIwLCBbcGNdCisJbGRyIHBjLCBbcGNdCiAKICNpZiBkZWZpbmVkIF9fRUxGX18gJiYgZGVmaW5lZCBfX2xpbnV4X18KIAkuc2VjdGlvbgkubm90ZS5HTlUtc3RhY2ssIiIsJXByb2diaXRzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vdHJhbXBvbGluZS5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL3RyYW1wb2xpbmUuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzVlOGRlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL3RyYW1wb2xpbmUuUwpAQCAtMCwwICsxLDQ0NTAgQEAKKyMgR0VORVJBVEVEIENPREUgLSBETyBOT1QgRURJVAorIyBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBzcmMvYXJtL2dlbnRyYW1wLnNoCisKKyMgIENvcHlyaWdodCAoYykgMjAxMCwgUGxhdXNpYmxlIExhYnMgQ29vcGVyYXRpdmUsIEluYy4KKyMgIAorIyAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisjICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyMgIFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyMgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyMgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworIyAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisjICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisjCisjICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAorIyAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisjCisjICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKyMgIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorIyAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKyMgIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVAorIyAgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksCisjICBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyMgIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyMgIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyMgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy50ZXh0CisuYWxpZ24gMTIKKy5nbG9ibCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZV9wYWdlCitfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZV9wYWdlOgorCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2F2cjMyL2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXZyMzIvZmZpLmMKaW5kZXggMzlmYmEyYi4uM2Q0MzM5NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXZyMzIvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXZyMzIvZmZpLmMKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDIwMDkgIEJyYWRsZXkgU21pdGggPGJyYWRAYnJhZC1zbWl0aC5jby51az4KKyAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAyMDExICBBbnRob255IEdyZWVuCisgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwOSAgQnJhZGxleSBTbWl0aCA8YnJhZEBicmFkLXNtaXRoLmNvLnVrPgogCiAgICBBVlIzMiBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZQogCkBAIC0zOTQsNyArMzk1LDggQEAKICAgICB2b2lkICgqZnVuKShmZmlfY2lmKiwgdm9pZCosIHZvaWQqKiwgdm9pZCopLCB2b2lkICp1c2VyX2RhdGEsCiAgICAgdm9pZCAqY29kZWxvYykKIHsKLSAgICBGRklfQVNTRVJUKGNpZi0+YWJpID09IEZGSV9TWVNWKTsKKyAgICBpZiAoY2lmLT5hYmkgIT0gRkZJX1NZU1YpCisgICAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAKICAgICB1bnNpZ25lZCBjaGFyICpfX3RyYW1wID0gKHVuc2lnbmVkIGNoYXIqKSgmY2xvc3VyZS0+dHJhbXBbMF0pOwogICAgIHVuc2lnbmVkIGludCAgX19mdW4gPSAodW5zaWduZWQgaW50KSgmZmZpX2Nsb3N1cmVfU1lTVik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hdnIzMi9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2F2cjMyL2ZmaXRhcmdldC5oCmluZGV4IDFjNzk5YjEuLmQwYzc1ODYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2F2cjMyL2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2F2cjMyL2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDA5ICBCcmFkbGV5IFNtaXRoIDxicmFkQGJyYWQtc21pdGguY28udWs+CisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDkgIEJyYWRsZXkgU21pdGggPGJyYWRAYnJhZC1zbWl0aC5jby51az4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgQVZSMzIuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsNiArMjgsMTAgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKICNpZm5kZWYgTElCRkZJX0FTTQogdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICAgIGZmaV9hcmc7CiB0eXBlZGVmIHNpZ25lZCBsb25nICAgICAgICAgICAgZmZpX3Nhcmc7CkBAIC0zNCw4ICszOSw4IEBACiB0eXBlZGVmIGVudW0gZmZpX2FiaSB7CiAgIEZGSV9GSVJTVF9BQkkgPSAwLAogICBGRklfU1lTViwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKKyAgRkZJX0xBU1RfQUJJLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTVgogfSBmZmlfYWJpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2Nsb3N1cmVzLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9jbG9zdXJlcy5jCmluZGV4IDBiMTU2ZTAuLjFiMzc4MjcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2Nsb3N1cmVzLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY2xvc3VyZXMuYwpAQCAtMSw2ICsxLDcgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBjbG9zdXJlcy5jIC0gQ29weXJpZ2h0IChjKSAyMDA3ICBSZWQgSGF0LCBJbmMuCi0gICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMKKyAgIGNsb3N1cmVzLmMgLSBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMDksIDIwMTAgIFJlZCBIYXQsIEluYy4KKyAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMKKyAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTEgUGxhdXNpYmxlIExhYnMgQ29vcGVyYXRpdmUsIEluYy4KIAogICAgQ29kZSB0byBhbGxvY2F0ZSBhbmQgZGVhbGxvY2F0ZSBtZW1vcnkgZm9yIGNsb3N1cmVzLgogCkBAIC0zMiw3ICszMyw3IEBACiAjaW5jbHVkZSA8ZmZpLmg+CiAjaW5jbHVkZSA8ZmZpX2NvbW1vbi5oPgogCi0jaWZuZGVmIEZGSV9NTUFQX0VYRUNfV1JJVAorI2lmICFGRklfTU1BUF9FWEVDX1dSSVQgJiYgIUZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUKICMgaWYgX19nbnVfbGludXhfXwogLyogVGhpcyBtYWNybyBpbmRpY2F0ZXMgaXQgbWF5IGJlIGZvcmJpZGRlbiB0byBtYXAgYW5vbnltb3VzIG1lbW9yeQogICAgd2l0aCBib3RoIHdyaXRlIGFuZCBleGVjdXRlIHBlcm1pc3Npb24uICBDb2RlIGNvbXBpbGVkIHdoZW4gdGhpcwpAQCAtNDQsNyArNDUsNyBAQAogIyAgZGVmaW5lIEZGSV9NTUFQX0VYRUNfV1JJVCAxCiAjICBkZWZpbmUgSEFWRV9NTlRFTlQgMQogIyBlbmRpZgotIyBpZiBkZWZpbmVkKFg4Nl9XSU4zMikgfHwgZGVmaW5lZChYODZfV0lONjQpCisjIGlmIGRlZmluZWQoWDg2X1dJTjMyKSB8fCBkZWZpbmVkKFg4Nl9XSU42NCkgfHwgZGVmaW5lZChfX09TMl9fKQogLyogV2luZG93cyBzeXN0ZW1zIG1heSBoYXZlIERhdGEgRXhlY3V0aW9uIFByb3RlY3Rpb24gKERFUCkgZW5hYmxlZCwgCiAgICB3aGljaCByZXF1aXJlcyB0aGUgdXNlIG9mIFZpcnR1YWxNYWxsb2MvVmlydHVhbEZyZWUgdG8gYWxsb2MvZnJlZQogICAgZXhlY3V0YWJsZSBtZW1vcnkuICovCkBAIC02Myw3ICs2NCwxMSBAQAogCiAjaWYgRkZJX0NMT1NVUkVTCiAKLSMgaWYgRkZJX01NQVBfRVhFQ19XUklUCisjIGlmIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUKKworLy8gUGVyLXRhcmdldCBpbXBsZW1lbnRhdGlvbjsgSXQncyB1bmNsZWFyIHdoYXQgY2FuIHJlYXNvbmFibGUgYmUgc2hhcmVkIGJldHdlZW4gdHdvIE9TL2FyY2hpdGVjdHVyZSBpbXBsZW1lbnRhdGlvbnMuCisKKyMgZWxpZiBGRklfTU1BUF9FWEVDX1dSSVQgLyogIUZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgKi8KIAogI2RlZmluZSBVU0VfTE9DS1MgMQogI2RlZmluZSBVU0VfRExfUFJFRklYIDEKQEAgLTE0Niw3ICsxNTEsNyBAQAogICAgICAgcCA9IHN0cmNociAocCArIDEsICcgJyk7CiAgICAgICBpZiAocCA9PSBOVUxMKQogICAgICAgICBicmVhazsKLSAgICAgIGlmIChzdHJuY21wIChwICsgMSwgInNlbGludXhmcyAiLCAxMCkgIT0gMCkKKyAgICAgIGlmIChzdHJuY21wIChwICsgMSwgInNlbGludXhmcyAiLCAxMCkgPT0gMCkKICAgICAgICAgewogICAgICAgICAgIGZyZWUgKGJ1Zik7CiAgICAgICAgICAgZmNsb3NlIChmKTsKQEAgLTE2Nyw3ICsxNzIsNyBAQAogCiAjZW5kaWYgLyogIUZGSV9NTUFQX0VYRUNfU0VMSU5VWCAqLwogCi0jZWxpZiBkZWZpbmVkIChfX0NZR1dJTl9fKQorI2VsaWYgZGVmaW5lZCAoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfX0lOVEVSSVgpCiAKICNpbmNsdWRlIDxzeXMvbW1hbi5oPgogCkBAIC0xOTMsMTEgKzE5OCwxMSBAQAogc3RhdGljIHNpemVfdCBkbG1hbGxvY191c2FibGVfc2l6ZSh2b2lkKikgTUFZQkVfVU5VU0VEOwogc3RhdGljIHZvaWQgZGxtYWxsb2Nfc3RhdHModm9pZCkgTUFZQkVfVU5VU0VEOwogCi0jaWYgIShkZWZpbmVkKFg4Nl9XSU4zMikgfHwgZGVmaW5lZChYODZfV0lONjQpKSB8fCBkZWZpbmVkIChfX0NZR1dJTl9fKQorI2lmICEoZGVmaW5lZChYODZfV0lOMzIpIHx8IGRlZmluZWQoWDg2X1dJTjY0KSB8fCBkZWZpbmVkKF9fT1MyX18pKSB8fCBkZWZpbmVkIChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9fSU5URVJJWCkKIC8qIFVzZSB0aGVzZSBmb3IgbW1hcCBhbmQgbXVubWFwIHdpdGhpbiBkbG1hbGxvYy5jLiAgKi8KIHN0YXRpYyB2b2lkICpkbG1tYXAodm9pZCAqLCBzaXplX3QsIGludCwgaW50LCBpbnQsIG9mZl90KTsKIHN0YXRpYyBpbnQgZGxtdW5tYXAodm9pZCAqLCBzaXplX3QpOwotI2VuZGlmIC8qICEoZGVmaW5lZChYODZfV0lOMzIpIHx8IGRlZmluZWQoWDg2X1dJTjY0KSkgfHwgZGVmaW5lZCAoX19DWUdXSU5fXykgKi8KKyNlbmRpZiAvKiAhKGRlZmluZWQoWDg2X1dJTjMyKSB8fCBkZWZpbmVkKFg4Nl9XSU42NCkgfHwgZGVmaW5lZChfX09TMl9fKSkgfHwgZGVmaW5lZCAoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfX0lOVEVSSVgpICovCiAKICNkZWZpbmUgbW1hcCBkbG1tYXAKICNkZWZpbmUgbXVubWFwIGRsbXVubWFwCkBAIC0yMDcsNyArMjEyLDcgQEAKICN1bmRlZiBtbWFwCiAjdW5kZWYgbXVubWFwCiAKLSNpZiAhKGRlZmluZWQoWDg2X1dJTjMyKSB8fCBkZWZpbmVkKFg4Nl9XSU42NCkpIHx8IGRlZmluZWQgKF9fQ1lHV0lOX18pCisjaWYgIShkZWZpbmVkKFg4Nl9XSU4zMikgfHwgZGVmaW5lZChYODZfV0lONjQpIHx8IGRlZmluZWQoX19PUzJfXykpIHx8IGRlZmluZWQgKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX19JTlRFUklYKQogCiAvKiBBIG11dGV4IHVzZWQgdG8gc3luY2hyb25pemUgYWNjZXNzIHRvICpleGVjKiB2YXJpYWJsZXMgaW4gdGhpcyBmaWxlLiAgKi8KIHN0YXRpYyBwdGhyZWFkX211dGV4X3Qgb3Blbl90ZW1wX2V4ZWNfZmlsZV9tdXRleCA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7CkBAIC0yOTQsNyArMjk5LDcgQEAKICAgICAgIHN0cnVjdCBtbnRlbnQgbW50OwogICAgICAgY2hhciBidWZbTUFYUEFUSExFTiAqIDNdOwogCi0gICAgICBpZiAoZ2V0bW50ZW50X3IgKGxhc3RfbW50ZW50LCAmbW50LCBidWYsIHNpemVvZiAoYnVmKSkpCisgICAgICBpZiAoZ2V0bW50ZW50X3IgKGxhc3RfbW50ZW50LCAmbW50LCBidWYsIHNpemVvZiAoYnVmKSkgPT0gTlVMTCkKIAlyZXR1cm4gLTE7CiAKICAgICAgIGlmIChoYXNtbnRvcHQgKCZtbnQsICJybyIpCkBAIC01MjIsNyArNTI3LDcgQEAKIH0KICNlbmRpZgogCi0jZW5kaWYgLyogIShkZWZpbmVkKFg4Nl9XSU4zMikgfHwgZGVmaW5lZChYODZfV0lONjQpKSB8fCBkZWZpbmVkIChfX0NZR1dJTl9fKSAqLworI2VuZGlmIC8qICEoZGVmaW5lZChYODZfV0lOMzIpIHx8IGRlZmluZWQoWDg2X1dJTjY0KSB8fCBkZWZpbmVkKF9fT1MyX18pKSB8fCBkZWZpbmVkIChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9fSU5URVJJWCkgKi8KIAogLyogQWxsb2NhdGUgYSBjaHVuayBvZiBtZW1vcnkgd2l0aCB0aGUgZ2l2ZW4gc2l6ZS4gIFJldHVybnMgYSBwb2ludGVyCiAgICB0byB0aGUgd3JpdGFibGUgYWRkcmVzcywgYW5kIHNldHMgKkNPREUgdG8gdGhlIGV4ZWN1dGFibGUKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2NyaXMvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9jcmlzL2ZmaS5jCmluZGV4IGU5YzM5NTMuLmFhY2E1YjEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2NyaXMvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY3Jpcy9mZmkuYwpAQCAtMTUzLDIxICsxNTMsMjQgQEAKICAgcmV0dXJuIChzdHJ1Y3RfY291bnQpOwogfQogCi1mZmlfc3RhdHVzCi1mZmlfcHJlcF9jaWYgKGZmaV9jaWYgKiBjaWYsCi0JICAgICAgZmZpX2FiaSBhYmksIHVuc2lnbmVkIGludCBuYXJncywKLQkgICAgICBmZmlfdHlwZSAqIHJ0eXBlLCBmZmlfdHlwZSAqKiBhdHlwZXMpCitmZmlfc3RhdHVzIEZGSV9ISURERU4KK2ZmaV9wcmVwX2NpZl9jb3JlIChmZmlfY2lmICogY2lmLAorCSAgICAgICAgICAgZmZpX2FiaSBhYmksIHVuc2lnbmVkIGludCBpc3ZhcmlhZGljLAorCQkgICB1bnNpZ25lZCBpbnQgbmZpeGVkYXJncywgdW5zaWduZWQgaW50IG50b3RhbGFyZ3MsCisJICAgICAgICAgICBmZmlfdHlwZSAqIHJ0eXBlLCBmZmlfdHlwZSAqKiBhdHlwZXMpCiB7CiAgIHVuc2lnbmVkIGJ5dGVzID0gMDsKICAgdW5zaWduZWQgaW50IGk7CiAgIGZmaV90eXBlICoqcHRyOwogCiAgIEZGSV9BU1NFUlQgKGNpZiAhPSBOVUxMKTsKLSAgRkZJX0FTU0VSVCAoKGFiaSA+IEZGSV9GSVJTVF9BQkkpICYmIChhYmkgPD0gRkZJX0RFRkFVTFRfQUJJKSk7CisgIEZGSV9BU1NFUlQoKCFpc3ZhcmlhZGljKSB8fCAobmZpeGVkYXJncyA+PSAxKSk7CisgIEZGSV9BU1NFUlQobmZpeGVkYXJncyA8PSBudG90YWxhcmdzKTsKKyAgRkZJX0FTU0VSVCAoYWJpID4gRkZJX0ZJUlNUX0FCSSAmJiBhYmkgPCBGRklfTEFTVF9BQkkpOwogCiAgIGNpZi0+YWJpID0gYWJpOwogICBjaWYtPmFyZ190eXBlcyA9IGF0eXBlczsKLSAgY2lmLT5uYXJncyA9IG5hcmdzOworICBjaWYtPm5hcmdzID0gbnRvdGFsYXJnczsKICAgY2lmLT5ydHlwZSA9IHJ0eXBlOwogCiAgIGNpZi0+ZmxhZ3MgPSAwOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY3Jpcy9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2NyaXMvZmZpdGFyZ2V0LmgKaW5kZXggNDI1N2YxMC4uYjgzN2U5NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY3Jpcy9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9jcmlzL2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIENSSVMuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsNiArMjgsMTAgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKICNpZm5kZWYgTElCRkZJX0FTTQogdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICAgIGZmaV9hcmc7CiB0eXBlZGVmIHNpZ25lZCBsb25nICAgICAgICAgICAgZmZpX3Nhcmc7CkBAIC0zNCw4ICszOSw4IEBACiB0eXBlZGVmIGVudW0gZmZpX2FiaSB7CiAgIEZGSV9GSVJTVF9BQkkgPSAwLAogICBGRklfU1lTViwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKKyAgRkZJX0xBU1RfQUJJLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTVgogfSBmZmlfYWJpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2RsbWFsbG9jLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9kbG1hbGxvYy5jCmluZGV4IDIxOWYxNWUuLjg5ZTIyMzQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2RsbWFsbG9jLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZGxtYWxsb2MuYwpAQCAtNDY0LDYgKzQ2NCwxNCBAQAogI2RlZmluZSBfR05VX1NPVVJDRSAxCiAjZW5kaWYgIC8qIFdJTjMyICovCiAKKyNpZmRlZiBfX09TMl9fCisjZGVmaW5lIElOQ0xfRE9TCisjaW5jbHVkZSA8b3MyLmg+CisjZGVmaW5lIEhBVkVfTU1BUCAxCisjZGVmaW5lIEhBVkVfTU9SRUNPUkUgMAorI2RlZmluZSBMQUNLU19TWVNfTU1BTl9ICisjZW5kaWYgIC8qIF9fT1MyX18gKi8KKwogI2lmIGRlZmluZWQoREFSV0lOKSB8fCBkZWZpbmVkKF9EQVJXSU4pCiAvKiBNYWMgT1NYIGRvY3MgYWR2aXNlIG5vdCB0byB1c2Ugc2JyazsgaXQgc2VlbXMgYmV0dGVyIHRvIHVzZSBtbWFwICovCiAjaWZuZGVmIEhBVkVfTU9SRUNPUkUKQEAgLTYxOSw2ICs2MjcsOSBAQAogI2luY2x1ZGUgIi91c3IvaW5jbHVkZS9tYWxsb2MuaCIKICNlbHNlIC8qIEhBVkVfVVNSX0lOQ0xVREVfTUFMTE9DX0ggKi8KIAorLyogSFAtVVgncyBzdGRsaWIuaCByZWRlZmluZXMgbWFsbGluZm8gdW5sZXNzIF9TVFJVQ1RfTUFMTElORk8gaXMgZGVmaW5lZCAqLworI2RlZmluZSBfU1RSVUNUX01BTExJTkZPCisKIHN0cnVjdCBtYWxsaW5mbyB7CiAgIE1BTExJTkZPX0ZJRUxEX1RZUEUgYXJlbmE7ICAgIC8qIG5vbi1tbWFwcGVkIHNwYWNlIGFsbG9jYXRlZCBmcm9tIHN5c3RlbSAqLwogICBNQUxMSU5GT19GSUVMRF9UWVBFIG9yZGJsa3M7ICAvKiBudW1iZXIgb2YgZnJlZSBjaHVua3MgKi8KQEAgLTEyOTMsNyArMTMwNCw3IEBACiAjZGVmaW5lIElTX01NQVBQRURfQklUICAgICAgIChTSVpFX1RfT05FKQogI2RlZmluZSBVU0VfTU1BUF9CSVQgICAgICAgICAoU0laRV9UX09ORSkKIAotI2lmbmRlZiBXSU4zMgorI2lmICFkZWZpbmVkKFdJTjMyKSAmJiAhZGVmaW5lZCAoX19PUzJfXykKICNkZWZpbmUgQ0FMTF9NVU5NQVAoYSwgcykgICAgbXVubWFwKChhKSwgKHMpKQogI2RlZmluZSBNTUFQX1BST1QgICAgICAgICAgICAoUFJPVF9SRUFEfFBST1RfV1JJVEUpCiAjaWYgIWRlZmluZWQoTUFQX0FOT05ZTU9VUykgJiYgZGVmaW5lZChNQVBfQU5PTikKQEAgLTEzMTYsNiArMTMyNyw0MiBAQAogI2VuZGlmIC8qIE1BUF9BTk9OWU1PVVMgKi8KIAogI2RlZmluZSBESVJFQ1RfTU1BUChzKSAgICAgICBDQUxMX01NQVAocykKKworI2VsaWYgZGVmaW5lZChfX09TMl9fKQorCisvKiBPUy8yIE1NQVAgdmlhIERvc0FsbG9jTWVtICovCitzdGF0aWMgdm9pZCogb3MybW1hcChzaXplX3Qgc2l6ZSkgeworICB2b2lkKiBwdHI7CisgIGlmIChEb3NBbGxvY01lbSgmcHRyLCBzaXplLCBPQkpfQU5ZfFBBR19DT01NSVR8UEFHX1JFQUR8UEFHX1dSSVRFKSAmJgorICAgICAgRG9zQWxsb2NNZW0oJnB0ciwgc2l6ZSwgUEFHX0NPTU1JVHxQQUdfUkVBRHxQQUdfV1JJVEUpKQorICAgIHJldHVybiBNRkFJTDsKKyAgcmV0dXJuIHB0cjsKK30KKworI2RlZmluZSBvczJkaXJlY3RfbW1hcChuKSAgICAgb3MybW1hcChuKQorCisvKiBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHJlbGVhc2luZyBjb2FsZXNlZCBzZWdtZW50cyAqLworc3RhdGljIGludCBvczJtdW5tYXAodm9pZCogcHRyLCBzaXplX3Qgc2l6ZSkgeworICB3aGlsZSAoc2l6ZSkgeworICAgIFVMT05HIHVsU2l6ZSA9IHNpemU7CisgICAgVUxPTkcgdWxGbGFncyA9IDA7CisgICAgaWYgKERvc1F1ZXJ5TWVtKHB0ciwgJnVsU2l6ZSwgJnVsRmxhZ3MpICE9IDApCisgICAgICByZXR1cm4gLTE7CisgICAgaWYgKCh1bEZsYWdzICYgUEFHX0JBU0UpID09IDAgfHwodWxGbGFncyAmIFBBR19DT01NSVQpID09IDAgfHwKKyAgICAgICAgdWxTaXplID4gc2l6ZSkKKyAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoRG9zRnJlZU1lbShwdHIpICE9IDApCisgICAgICByZXR1cm4gLTE7CisgICAgcHRyID0gKCB2b2lkICogKSAoICggY2hhciAqICkgcHRyICsgdWxTaXplICk7CisgICAgc2l6ZSAtPSB1bFNpemU7CisgIH0KKyAgcmV0dXJuIDA7Cit9CisKKyNkZWZpbmUgQ0FMTF9NTUFQKHMpICAgICAgICAgb3MybW1hcChzKQorI2RlZmluZSBDQUxMX01VTk1BUChhLCBzKSAgICBvczJtdW5tYXAoKGEpLCAocykpCisjZGVmaW5lIERJUkVDVF9NTUFQKHMpICAgICAgIG9zMmRpcmVjdF9tbWFwKHMpCisKICNlbHNlIC8qIFdJTjMyICovCiAKIC8qIFdpbjMyIE1NQVAgdmlhIFZpcnR1YWxBbGxvYyAqLwpAQCAtMTM5Miw3ICsxNDM5LDcgQEAKICAgICB1bmlxdWUgbXBhcmFtcyB2YWx1ZXMgYXJlIGluaXRpYWxpemVkIG9ubHkgb25jZS4KICovCiAKLSNpZm5kZWYgV0lOMzIKKyNpZiAhZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQoX19PUzJfXykKIC8qIEJ5IGRlZmF1bHQgdXNlIHBvc2l4IGxvY2tzICovCiAjaW5jbHVkZSA8cHRocmVhZC5oPgogI2RlZmluZSBNTE9DS19UIHB0aHJlYWRfbXV0ZXhfdApAQCAtMTQwNiw2ICsxNDUzLDE2IEBACiAKIHN0YXRpYyBNTE9DS19UIG1hZ2ljX2luaXRfbXV0ZXggPSBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSOwogCisjZWxpZiBkZWZpbmVkKF9fT1MyX18pCisjZGVmaW5lIE1MT0NLX1QgSE1UWAorI2RlZmluZSBJTklUSUFMX0xPQ0sobCkgICAgICBEb3NDcmVhdGVNdXRleFNlbSgwLCBsLCAwLCBGQUxTRSkKKyNkZWZpbmUgQUNRVUlSRV9MT0NLKGwpICAgICAgRG9zUmVxdWVzdE11dGV4U2VtKCpsLCBTRU1fSU5ERUZJTklURV9XQUlUKQorI2RlZmluZSBSRUxFQVNFX0xPQ0sobCkgICAgICBEb3NSZWxlYXNlTXV0ZXhTZW0oKmwpCisjaWYgSEFWRV9NT1JFQ09SRQorc3RhdGljIE1MT0NLX1QgbW9yZWNvcmVfbXV0ZXg7CisjZW5kaWYgLyogSEFWRV9NT1JFQ09SRSAqLworc3RhdGljIE1MT0NLX1QgbWFnaWNfaW5pdF9tdXRleDsKKwogI2Vsc2UgLyogV0lOMzIgKi8KIC8qCiAgICBCZWNhdXNlIGxvY2stcHJvdGVjdGVkIHJlZ2lvbnMgaGF2ZSBib3VuZGVkIHRpbWVzLCBhbmQgdGhlcmUKQEAgLTI0OTcsMTAgKzI1NTQsMTUgQEAKICAgICB9CiAgICAgUkVMRUFTRV9NQUdJQ19JTklUX0xPQ0soKTsKIAotI2lmbmRlZiBXSU4zMgorI2lmICFkZWZpbmVkKFdJTjMyKSAmJiAhZGVmaW5lZChfX09TMl9fKQogICAgIG1wYXJhbXMucGFnZV9zaXplID0gbWFsbG9jX2dldHBhZ2VzaXplOwogICAgIG1wYXJhbXMuZ3JhbnVsYXJpdHkgPSAoKERFRkFVTFRfR1JBTlVMQVJJVFkgIT0gMCk/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZBVUxUX0dSQU5VTEFSSVRZIDogbXBhcmFtcy5wYWdlX3NpemUpOworI2VsaWYgZGVmaW5lZCAoX19PUzJfXykKKyAvKiBpZiBsb3ctbWVtb3J5IGlzIHVzZWQsIG9zMm11bm1hcCgpIHdvdWxkIGJyZWFrCisgICAgaWYgaXQgd2VyZSBhbnl0aGluZyBvdGhlciB0aGFuIDY0ayAqLworICAgIG1wYXJhbXMucGFnZV9zaXplID0gNDA5NnU7CisgICAgbXBhcmFtcy5ncmFudWxhcml0eSA9IDY1NTM2dTsKICNlbHNlIC8qIFdJTjMyICovCiAgICAgewogICAgICAgU1lTVEVNX0lORk8gc3lzdGVtX2luZm87CkBAIC00MTk3LDcgKzQyNTksNyBAQAogCiB2b2lkIGRsZnJlZSh2b2lkKiBtZW0pIHsKICAgLyoKLSAgICAgQ29uc29saWRhdGUgZnJlZWQgY2h1bmtzIHdpdGggcHJlY2VlZGluZyBvciBzdWNjZWVkaW5nIGJvcmRlcmluZworICAgICBDb25zb2xpZGF0ZSBmcmVlZCBjaHVua3Mgd2l0aCBwcmVjZWRpbmcgb3Igc3VjY2VlZGluZyBib3JkZXJpbmcKICAgICAgZnJlZSBjaHVua3MsIGlmIHRoZXkgZXhpc3QsIGFuZCB0aGVuIHBsYWNlIGluIGEgYmluLiAgSW50ZXJtaXhlZAogICAgICB3aXRoIHNwZWNpYWwgY2FzZXMgZm9yIHRvcCwgZHYsIG1tYXBwZWQgY2h1bmtzLCBhbmQgdXNhZ2UgZXJyb3JzLgogICAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZnJ2L2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZnJ2L2ZmaXRhcmdldC5oCmluZGV4IDFjMzE5ZWEuLmQ0MjU0MGUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2Zydi9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9mcnYvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwNCAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDQgIFJlZCBIYXQsIEluYy4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgRlItVgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI3LDYgKzI4LDEwIEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAvKiAtLS0tIFN5c3RlbSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaWZuZGVmIExJQkZGSV9BU00KQEAgLTM1LDEzICs0MCw5IEBACiAKIHR5cGVkZWYgZW51bSBmZmlfYWJpIHsKICAgRkZJX0ZJUlNUX0FCSSA9IDAsCi0KLSNpZmRlZiBGUlYKICAgRkZJX0VBQkksCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9FQUJJLAotI2VuZGlmCi0KLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQorICBGRklfTEFTVF9BQkksCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9FQUJJCiB9IGZmaV9hYmk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvaWE2NC9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2lhNjQvZmZpLmMKaW5kZXggZjYzNzgzNC4uNjQ5ODg0ZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvaWE2NC9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9pYTY0L2ZmaS5jCkBAIC0xLDYgKzEsNyBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAxOTk4LCAyMDA3LCAyMDA4IFJlZCBIYXQsIEluYy4KKyAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAxOTk4LCAyMDA3LCAyMDA4LCAyMDEyIFJlZCBIYXQsIEluYy4KIAkgICBDb3B5cmlnaHQgKGMpIDIwMDAgSGV3bGV0dCBQYWNrYXJkIENvbXBhbnkKKwkgICBDb3B5cmlnaHQgKGMpIDIwMTEgQW50aG9ueSBHcmVlbgogICAgCiAgICBJQTY0IEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAogCkBAIC0yMjUsNyArMjI2LDcgQEAKICAgaW50IGZsYWdzOwogCiAgIC8qIEFkanVzdCBjaWYtPmJ5dGVzIHRvIGluY2x1ZGUgc3BhY2UgZm9yIHRoZSBiaXRzIG9mIHRoZSBpYTY0X2FyZ3MgZnJhbWUKLSAgICAgdGhhdCBwcmVjZWVkcyB0aGUgaW50ZWdlciByZWdpc3RlciBwb3J0aW9uLiAgVGhlIGVzdGltYXRlIHRoYXQgdGhlIAorICAgICB0aGF0IHByZWNlZGVzIHRoZSBpbnRlZ2VyIHJlZ2lzdGVyIHBvcnRpb24uICBUaGUgZXN0aW1hdGUgdGhhdCB0aGUKICAgICAgZ2VuZXJpYyBiaXRzIGRpZCBmb3IgdGhlIGFyZ3VtZW50IHNwYWNlIHJlcXVpcmVkIGlzIGdvb2QgZW5vdWdoIGZvciB0aGUKICAgICAgaW50ZWdlciBjb21wb25lbnQuICAqLwogICBjaWYtPmJ5dGVzICs9IG9mZnNldG9mKHN0cnVjdCBpYTY0X2FyZ3MsIGdwX3JlZ3NbMF0pOwpAQCAtMzI0LDEzICszMjUsMTcgQEAKIAljYXNlIEZGSV9UWVBFX0ZMT0FUOgogCSAgaWYgKGdwY291bnQgPCA4ICYmIGZwY291bnQgPCA4KQogCSAgICBzdGZfc3BpbGwgKCZzdGFjay0+ZnBfcmVnc1tmcGNvdW50KytdLCAqKGZsb2F0ICopYXZhbHVlW2ldKTsKLQkgIHN0YWNrLT5ncF9yZWdzW2dwY291bnQrK10gPSAqKFVJTlQzMiAqKWF2YWx1ZVtpXTsKKwkgIHsKKwkgICAgVUlOVDMyIHRtcDsKKwkgICAgbWVtY3B5ICgmdG1wLCBhdmFsdWVbaV0sIHNpemVvZiAoVUlOVDMyKSk7CisJICAgIHN0YWNrLT5ncF9yZWdzW2dwY291bnQrK10gPSB0bXA7CisJICB9CiAJICBicmVhazsKIAogCWNhc2UgRkZJX1RZUEVfRE9VQkxFOgogCSAgaWYgKGdwY291bnQgPCA4ICYmIGZwY291bnQgPCA4KQogCSAgICBzdGZfc3BpbGwgKCZzdGFjay0+ZnBfcmVnc1tmcGNvdW50KytdLCAqKGRvdWJsZSAqKWF2YWx1ZVtpXSk7Ci0JICBzdGFjay0+Z3BfcmVnc1tncGNvdW50KytdID0gKihVSU5UNjQgKilhdmFsdWVbaV07CisJICBtZW1jcHkgKCZzdGFjay0+Z3BfcmVnc1tncGNvdW50KytdLCBhdmFsdWVbaV0sIHNpemVvZiAoVUlOVDY0KSk7CiAJICBicmVhazsKIAogCWNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKQEAgLTQyNSw3ICs0MzAsOCBAQAogICBzdHJ1Y3QgZmZpX2lhNjRfdHJhbXBvbGluZV9zdHJ1Y3QgKnRyYW1wOwogICBzdHJ1Y3QgaWE2NF9mZCAqZmQ7CiAKLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX1VOSVgpOworICBpZiAoY2lmLT5hYmkgIT0gRkZJX1VOSVgpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogCiAgIHRyYW1wID0gKHN0cnVjdCBmZmlfaWE2NF90cmFtcG9saW5lX3N0cnVjdCAqKWNsb3N1cmUtPnRyYW1wOwogICBmZCA9IChzdHJ1Y3QgaWE2NF9mZCAqKSh2b2lkICopZmZpX2Nsb3N1cmVfdW5peDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2lhNjQvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9pYTY0L2ZmaXRhcmdldC5oCmluZGV4IGQ4NWMwNDkuLmU2OGNlYTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2lhNjQvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvaWE2NC9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBJQS02NC4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNyw2ICsyOCwxMCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogI2lmbmRlZiBMSUJGRklfQVNNCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyAgICAgICAgICBmZmlfYXJnOwogdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nICAgICAgICAgICAgZmZpX3Nhcmc7CkBAIC0zNCw4ICszOSw4IEBACiB0eXBlZGVmIGVudW0gZmZpX2FiaSB7CiAgIEZGSV9GSVJTVF9BQkkgPSAwLAogICBGRklfVU5JWCwgICAJLyogTGludXggYW5kIGFsbCBVbml4IHZhcmlhbnRzIHVzZSB0aGUgc2FtZSBjb252ZW50aW9ucwkqLwotICBGRklfREVGQVVMVF9BQkkgPSBGRklfVU5JWCwKLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQorICBGRklfTEFTVF9BQkksCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9VTklYCiB9IGZmaV9hYmk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvamF2YV9yYXdfYXBpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9qYXZhX3Jhd19hcGkuYwppbmRleCA5YzUzODNlLi41MjJjOGJmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9qYXZhX3Jhd19hcGkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9qYXZhX3Jhd19hcGkuYwpAQCAtMzExLDcgKzMxMSw3IEBACiAgIGZmaV9yYXdfY2xvc3VyZSAqY2wgPSAoZmZpX3Jhd19jbG9zdXJlKil1c2VyX2RhdGE7CiAKICAgZmZpX2phdmFfcHRyYXJyYXlfdG9fcmF3IChjaWYsIGF2YWx1ZSwgcmF3KTsKLSAgKCpjbC0+ZnVuKSAoY2lmLCBydmFsdWUsIHJhdywgY2wtPnVzZXJfZGF0YSk7CisgICgqY2wtPmZ1bikgKGNpZiwgcnZhbHVlLCAoZmZpX3JhdyopcmF3LCBjbC0+dXNlcl9kYXRhKTsKICAgZmZpX2phdmFfcmF3X3RvX3J2YWx1ZSAoY2lmLCBydmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tMzJyL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTMyci9mZml0YXJnZXQuaAppbmRleCA2YTc2MWY2Li42YzM0ODAxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tMzJyL2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL20zMnIvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMDQgIFJlbmVzYXMgVGVjaG5vbG9neS4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwNCAgUmVuZXNhcyBUZWNobm9sb2d5LgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBNMzJSLgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI2LDYgKzI3LDEwIEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAvKiAtLS0tIEdlbmVyaWMgdHlwZSBkZWZpbml0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaWZuZGVmIExJQkZGSV9BU00KQEAgLTM2LDggKzQxLDggQEAKICAgewogICAgIEZGSV9GSVJTVF9BQkkgPSAwLAogICAgIEZGSV9TWVNWLAotICAgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWLAotICAgIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKKyAgICBGRklfTEFTVF9BQkksCisgICAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YKICAgfSBmZmlfYWJpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL202OGsvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL2ZmaS5jCmluZGV4IDYwMGNmMjAuLjM3YTA3ODQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL202OGsvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTY4ay9mZmkuYwpAQCAtMSw3ICsxLDcgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBmZmkuYwotICAgCi0gICBtNjhrIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAorCisgICBtNjhrIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaW5jbHVkZSA8ZmZpLmg+CkBAIC05LDggKzksMTcgQEAKIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2lmZGVmIF9fcnRlbXNfXwordm9pZCBydGVtc19jYWNoZV9mbHVzaF9tdWx0aXBsZV9kYXRhX2xpbmVzKCBjb25zdCB2b2lkICosIHNpemVfdCApOworI2Vsc2UKICNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorI2lmZGVmIF9fTUlOVF9fCisjaW5jbHVkZSA8bWludC9taW50YmluZC5oPgorI2luY2x1ZGUgPG1pbnQvc3N5c3RlbS5oPgorI2Vsc2UKICNpbmNsdWRlIDxhc20vY2FjaGVjdGwuaD4KKyNlbmRpZgorI2VuZGlmCiAKIHZvaWQgZmZpX2NhbGxfU1lTViAoZXh0ZW5kZWRfY2lmICosCiAJCSAgICB1bnNpZ25lZCwgdW5zaWduZWQsCkBAIC0zNSw4ICs0NCwxMiBAQAogCiAgIGFyZ3AgPSBzdGFjazsKIAotICBpZiAoZWNpZi0+Y2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QKLSAgICAgICYmICFlY2lmLT5jaWYtPmZsYWdzKQorICBpZiAoCisjaWZkZWYgX19NSU5UX18KKyAgICAgIChlY2lmLT5jaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX0xPTkdET1VCTEUpIHx8CisjZW5kaWYKKyAgICAgICgoKGVjaWYtPmNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKQorICAgICAgICAmJiAhZWNpZi0+Y2lmLT5mbGFncykpKQogICAgIHN0cnVjdF92YWx1ZV9wdHIgPSBlY2lmLT5ydmFsdWU7CiAgIGVsc2UKICAgICBzdHJ1Y3RfdmFsdWVfcHRyID0gTlVMTDsKQEAgLTQ3LDEyICs2MCwxMiBAQAogICAgICAgIGkgIT0gMDsKICAgICAgICBpLS0sIHBfYXJnKyspCiAgICAgewotICAgICAgc2l6ZV90IHo7CisgICAgICBzaXplX3QgeiA9ICgqcF9hcmcpLT5zaXplOworICAgICAgaW50IHR5cGUgPSAoKnBfYXJnKS0+dHlwZTsKIAotICAgICAgeiA9ICgqcF9hcmcpLT5zaXplOwogICAgICAgaWYgKHogPCBzaXplb2YgKGludCkpCiAJewotCSAgc3dpdGNoICgoKnBfYXJnKS0+dHlwZSkKKwkgIHN3aXRjaCAodHlwZSkKIAkgICAgewogCSAgICBjYXNlIEZGSV9UWVBFX1NJTlQ4OgogCSAgICAgICooc2lnbmVkIGludCAqKSBhcmdwID0gKHNpZ25lZCBpbnQpICooU0lOVDggKikgKnBfYXJndjsKQEAgLTcxLDcgKzg0LDE0IEBACiAJICAgICAgYnJlYWs7CiAKIAkgICAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6CisjaWZkZWYgX19NSU5UX18KKwkgICAgICBpZiAoeiA9PSAxIHx8IHogPT0gMikKKwkJbWVtY3B5IChhcmdwICsgMiwgKnBfYXJndiwgeik7CisgICAgICAgICAgICAgIGVsc2UKKwkJbWVtY3B5IChhcmdwLCAqcF9hcmd2LCB6KTsKKyNlbHNlCiAJICAgICAgbWVtY3B5IChhcmdwICsgc2l6ZW9mIChpbnQpIC0geiwgKnBfYXJndiwgeik7CisjZW5kaWYKIAkgICAgICBicmVhazsKIAogCSAgICBkZWZhdWx0OgpAQCAtMTE2LDE3ICsxMzYsMzQgQEAKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6CisgICAgICBpZiAoY2lmLT5ydHlwZS0+ZWxlbWVudHNbMF0tPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUICYmCisgICAgICAgICAgY2lmLT5ydHlwZS0+ZWxlbWVudHNbMV0pCisgICAgICAgIHsKKyAgICAgICAgICBjaWYtPmZsYWdzID0gMDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICBzd2l0Y2ggKGNpZi0+cnR5cGUtPnNpemUpCiAJewogCWNhc2UgMToKKyNpZmRlZiBfX01JTlRfXworCSAgY2lmLT5mbGFncyA9IENJRl9GTEFHU19TVFJVQ1QyOworI2Vsc2UKIAkgIGNpZi0+ZmxhZ3MgPSBDSUZfRkxBR1NfU1RSVUNUMTsKKyNlbmRpZgogCSAgYnJlYWs7CiAJY2FzZSAyOgogCSAgY2lmLT5mbGFncyA9IENJRl9GTEFHU19TVFJVQ1QyOwogCSAgYnJlYWs7CisjaWZkZWYgX19NSU5UX18KKwljYXNlIDM6CisjZW5kaWYKIAljYXNlIDQ6CiAJICBjaWYtPmZsYWdzID0gQ0lGX0ZMQUdTX0lOVDsKIAkgIGJyZWFrOworI2lmZGVmIF9fTUlOVF9fCisJY2FzZSA3OgorI2VuZGlmCiAJY2FzZSA4OgogCSAgY2lmLT5mbGFncyA9IENJRl9GTEFHU19ESU5UOwogCSAgYnJlYWs7CkBAIC0xNDQsOSArMTgxLDE1IEBACiAgICAgICBjaWYtPmZsYWdzID0gQ0lGX0ZMQUdTX0RPVUJMRTsKICAgICAgIGJyZWFrOwogCisjaWYgKEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFKQogICAgIGNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKKyNpZmRlZiBfX01JTlRfXworICAgICAgY2lmLT5mbGFncyA9IDA7CisjZWxzZQogICAgICAgY2lmLT5mbGFncyA9IENJRl9GTEFHU19MRE9VQkxFOworI2VuZGlmCiAgICAgICBicmVhazsKKyNlbmRpZgogCiAgICAgY2FzZSBGRklfVFlQRV9QT0lOVEVSOgogICAgICAgY2lmLT5mbGFncyA9IENJRl9GTEFHU19QT0lOVEVSOwpAQCAtMjEyLDYgKzI1NSwyNiBAQAogICAgICAgc2l6ZV90IHo7CiAKICAgICAgIHogPSAoKnBfYXJnKS0+c2l6ZTsKKyNpZmRlZiBfX01JTlRfXworICAgICAgaWYgKGNpZi0+ZmxhZ3MgJiYKKyAgICAgICAgICBjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCAmJgorICAgICAgICAgICh6ID09IDEgfHwgeiA9PSAyKSkKKyAJeworCSAgKnBfYXJndiA9ICh2b2lkICopIChhcmdwICsgMik7CisKKwkgIHogPSA0OworCX0KKyAgICAgIGVsc2UKKyAgICAgIGlmIChjaWYtPmZsYWdzICYmCisgICAgICAgICAgY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QgJiYKKyAgICAgICAgICAoeiA9PSAzIHx8IHogPT0gNCkpCisgCXsKKwkgICpwX2FyZ3YgPSAodm9pZCAqKSAoYXJncCk7CisKKwkgIHogPSA0OworCX0KKyAgICAgIGVsc2UKKyNlbmRpZgogICAgICAgaWYgKHogPD0gNCkKIAl7CiAJICAqcF9hcmd2ID0gKHZvaWQgKikgKGFyZ3AgKyA0IC0geik7CkBAIC0yNTUsMTkgKzMxOCwzMSBAQAogCQkgICAgICB2b2lkICp1c2VyX2RhdGEsCiAJCSAgICAgIHZvaWQgKmNvZGVsb2MpCiB7Ci0gIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9TWVNWKTsKKyAgaWYgKGNpZi0+YWJpICE9IEZGSV9TWVNWKQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKIAogICAqKHVuc2lnbmVkIHNob3J0ICopY2xvc3VyZS0+dHJhbXAgPSAweDIwN2M7CiAgICoodm9pZCAqKikoY2xvc3VyZS0+dHJhbXAgKyAyKSA9IGNvZGVsb2M7CiAgICoodW5zaWduZWQgc2hvcnQgKikoY2xvc3VyZS0+dHJhbXAgKyA2KSA9IDB4NGVmOTsKLSAgaWYgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUCi0gICAgICAmJiAhY2lmLT5mbGFncykKKworICBpZiAoCisjaWZkZWYgX19NSU5UX18KKyAgICAgIChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX0xPTkdET1VCTEUpIHx8CisjZW5kaWYKKyAgICAgICgoKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKQorICAgICAgICAgJiYgIWNpZi0+ZmxhZ3MpKSkKICAgICAqKHZvaWQgKiopKGNsb3N1cmUtPnRyYW1wICsgOCkgPSBmZmlfY2xvc3VyZV9zdHJ1Y3RfU1lTVjsKICAgZWxzZQogICAgICoodm9pZCAqKikoY2xvc3VyZS0+dHJhbXAgKyA4KSA9IGZmaV9jbG9zdXJlX1NZU1Y7CiAKKyNpZmRlZiBfX3J0ZW1zX18KKyAgcnRlbXNfY2FjaGVfZmx1c2hfbXVsdGlwbGVfZGF0YV9saW5lcyggY29kZWxvYywgRkZJX1RSQU1QT0xJTkVfU0laRSApOworI2VsaWYgZGVmaW5lZChfX01JTlRfXykKKyAgU3N5c3RlbShTX0ZMVVNIQ0FDSEUsIGNvZGVsb2MsIEZGSV9UUkFNUE9MSU5FX1NJWkUpOworI2Vsc2UKICAgc3lzY2FsbChTWVNfY2FjaGVmbHVzaCwgY29kZWxvYywgRkxVU0hfU0NPUEVfTElORSwKIAkgIEZMVVNIX0NBQ0hFX0JPVEgsIEZGSV9UUkFNUE9MSU5FX1NJWkUpOworI2VuZGlmCiAKICAgY2xvc3VyZS0+Y2lmICA9IGNpZjsKICAgY2xvc3VyZS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOwpAQCAtMjc1LDQgKzM1MCwzIEBACiAKICAgcmV0dXJuIEZGSV9PSzsKIH0KLQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTY4ay9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL202OGsvZmZpdGFyZ2V0LmgKaW5kZXggNjMzNzE3Yi4uZTgxZGRlMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTY4ay9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIE1vdG9yb2xhIDY4Sy4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNyw2ICsyOCwxMCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogI2lmbmRlZiBMSUJGRklfQVNNCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgZmZpX2FyZzsKIHR5cGVkZWYgc2lnbmVkIGxvbmcgICAgICAgICAgICBmZmlfc2FyZzsKQEAgLTM0LDggKzM5LDggQEAKIHR5cGVkZWYgZW51bSBmZmlfYWJpIHsKICAgRkZJX0ZJUlNUX0FCSSA9IDAsCiAgIEZGSV9TWVNWLAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTViwKLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQorICBGRklfTEFTVF9BQkksCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWCiB9IGZmaV9hYmk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTY4ay9zeXN2LlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL3N5c3YuUwppbmRleCA1ODgyMmUwLi5mNmY0ZWY5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL3N5c3YuUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL3N5c3YuUwpAQCAtMSw1ICsxLDcgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBzeXN2LlMgLSBDb3B5cmlnaHQgKGMpIDE5OTggQW5kcmVhcyBTY2h3YWIKKwkKKyAgIHN5c3YuUyAtIENvcHlyaWdodCAoYykgMjAxMiBBbGFuIEhvdXJpaGFuZQorCSAgICBDb3B5cmlnaHQgKGMpIDE5OTgsIDIwMTIgQW5kcmVhcyBTY2h3YWIKIAkgICAgQ29weXJpZ2h0IChjKSAyMDA4IFJlZCBIYXQsIEluYy4gCiAgICAKICAgIG02OGsgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCkBAIC00MSwxMyArNDMsMTkgQEAKICNkZWZpbmUgQ0ZJX0VORFBST0MoKQogI2VuZGlmCiAKKyNpZmRlZiBfX01JTlRfXworI2RlZmluZSBDQUxMRlVOQyhmdW5jbmFtZSkgXyAjIyBmdW5jbmFtZQorI2Vsc2UKKyNkZWZpbmUgQ0FMTEZVTkMoZnVuY25hbWUpIGZ1bmNuYW1lCisjZW5kaWYKKwogCS50ZXh0CiAKLQkuZ2xvYmwJZmZpX2NhbGxfU1lTVgotCS50eXBlCWZmaV9jYWxsX1NZU1YsQGZ1bmN0aW9uCisJLmdsb2JsCUNBTExGVU5DKGZmaV9jYWxsX1NZU1YpCisJLnR5cGUJQ0FMTEZVTkMoZmZpX2NhbGxfU1lTViksQGZ1bmN0aW9uCiAJLmFsaWduCTQKIAotZmZpX2NhbGxfU1lTVjoKK0NBTExGVU5DKGZmaV9jYWxsX1NZU1YpOgogCUNGSV9TVEFSVFBST0MoKQogCWxpbmsJJWZwLCMwCiAJQ0ZJX09GRlNFVCgxNCwtOCkKQEAgLTYyLDE0ICs3MCwxOCBAQAogCW1vdmUubAk4KCVmcCksLSglc3ApCiAJcGVhCTQoJXNwKQogI2lmICFkZWZpbmVkIF9fUElDX18KLQlqc3IJZmZpX3ByZXBfYXJncworCWpzcglDQUxMRlVOQyhmZmlfcHJlcF9hcmdzKQogI2Vsc2UKLQlic3IubAlmZmlfcHJlcF9hcmdzQFBMVFBDCisJYnNyLmwJQ0FMTEZVTkMoZmZpX3ByZXBfYXJnc0BQTFRQQykKICNlbmRpZgogCWFkZHEubAkjOCwlc3AJCiAKIAl8IFBhc3MgcG9pbnRlciB0byBzdHJ1Y3QgdmFsdWUsIGlmIGFueQorI2lmZGVmIF9fTUlOVF9fCisJbW92ZS5sCSVkMCwlYTEKKyNlbHNlCiAJbW92ZS5sCSVhMCwlYTEKKyNlbmRpZgogCiAJfCBDYWxsIHRoZSBmdW5jdGlvbgogCW1vdmUubAkyNCglZnApLCVhMApAQCAtODUsNyArOTcsMTIgQEAKIAltb3ZlLmwJMTYoJWZwKSwlZDIKIAogCXwgSWYgdGhlIHJldHVybiB2YWx1ZSBwb2ludGVyIGlzIE5VTEwsIGFzc3VtZSBubyByZXR1cm4gdmFsdWUuCisJfCBOT1RFOiBPbiB0aGUgbWM2ODAwMCwgdHN0IG9uIGFuIGFkZHJlc3MgcmVnaXN0ZXIgaXMgbm90IHN1cHBvcnRlZC4KKyNpZiAhZGVmaW5lZChfX21jNjgwMjBfXykgJiYgIWRlZmluZWQoX19tYzY4MDMwX18pICYmICFkZWZpbmVkKF9fbWM2ODA0MF9fKSAmJiAhZGVmaW5lZChfX21jNjgwNjBfXykgJiYgIWRlZmluZWQoX19tY29sZGZpcmVfXykKKwljbXAudwkjMCwgJWExCisjZWxzZQogCXRzdC5sCSVhMQorI2VuZGlmCiAJamJlcQlub3JldHZhbAogCiAJYnRzdAkjMCwlZDIKQEAgLTEwMywyNSArMTIwLDQ0IEBACiByZXRmbG9hdDoKIAlidHN0CSMyLCVkMgogCWpiZXEJcmV0ZG91YmxlCisjaWYgZGVmaW5lZChfX01DNjg4ODFfXykgfHwgZGVmaW5lZChfX0hBVkVfNjg4ODFfXykKIAlmbW92ZS5zCSVmcDAsKCVhMSkKKyNlbHNlCisJbW92ZS5sCSVkMCwoJWExKQorI2VuZGlmCiAJamJyYQllcGlsb2d1ZQogCiByZXRkb3VibGU6CiAJYnRzdAkjMywlZDIKIAlqYmVxCXJldGxvbmdkb3VibGUKKyNpZiBkZWZpbmVkKF9fTUM2ODg4MV9fKSB8fCBkZWZpbmVkKF9fSEFWRV82ODg4MV9fKQogCWZtb3ZlLmQJJWZwMCwoJWExKQorI2Vsc2UKKwltb3ZlLmwJJWQwLCglYTEpKworCW1vdmUubAklZDEsKCVhMSkKKyNlbmRpZgogCWpicmEJZXBpbG9ndWUKIAogcmV0bG9uZ2RvdWJsZToKIAlidHN0CSM0LCVkMgogCWpiZXEJcmV0cG9pbnRlcgorI2lmIGRlZmluZWQoX19NQzY4ODgxX18pIHx8IGRlZmluZWQoX19IQVZFXzY4ODgxX18pCiAJZm1vdmUueAklZnAwLCglYTEpCisjZWxzZQorCW1vdmUubAklZDAsKCVhMSkrCisJbW92ZS5sCSVkMSwoJWExKSsKKwltb3ZlLmwJJWQyLCglYTEpCisjZW5kaWYKIAlqYnJhCWVwaWxvZ3VlCiAKIHJldHBvaW50ZXI6CiAJYnRzdAkjNSwlZDIKIAlqYmVxCXJldHN0cnVjdDEKKyNpZmRlZiBfX01JTlRfXworCW1vdmUubAklZDAsKCVhMSkKKyNlbHNlCiAJbW92ZS5sCSVhMCwoJWExKQorI2VuZGlmCiAJamJyYQllcGlsb2d1ZQogCiByZXRzdHJ1Y3QxOgpAQCAtMTQxLDEzICsxNzcsMTMgQEAKIAl1bmxrCSVmcAogCXJ0cwogCUNGSV9FTkRQUk9DKCkKLQkuc2l6ZQlmZmlfY2FsbF9TWVNWLC4tZmZpX2NhbGxfU1lTVgorCS5zaXplCUNBTExGVU5DKGZmaV9jYWxsX1NZU1YpLC4tQ0FMTEZVTkMoZmZpX2NhbGxfU1lTVikKIAotCS5nbG9ibAlmZmlfY2xvc3VyZV9TWVNWCi0JLnR5cGUJZmZpX2Nsb3N1cmVfU1lTViwgQGZ1bmN0aW9uCisJLmdsb2JsCUNBTExGVU5DKGZmaV9jbG9zdXJlX1NZU1YpCisJLnR5cGUJQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfU1lTViksIEBmdW5jdGlvbgogCS5hbGlnbgk0CiAKLWZmaV9jbG9zdXJlX1NZU1Y6CitDQUxMRlVOQyhmZmlfY2xvc3VyZV9TWVNWKToKIAlDRklfU1RBUlRQUk9DKCkKIAlsaW5rCSVmcCwjLTEyCiAJQ0ZJX09GRlNFVCgxNCwtOCkKQEAgLTE1Nyw5ICsxOTMsOSBAQAogCXBlYQktMTIoJWZwKQogCW1vdmUubAklYTAsLSglc3ApCiAjaWYgIWRlZmluZWQgX19QSUNfXwotCWpzcglmZmlfY2xvc3VyZV9TWVNWX2lubmVyCisJanNyCUNBTExGVU5DKGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIpCiAjZWxzZQotCWJzci5sCWZmaV9jbG9zdXJlX1NZU1ZfaW5uZXJAUExUUEMKKwlic3IubAlDQUxMRlVOQyhmZmlfY2xvc3VyZV9TWVNWX2lubmVyQFBMVFBDKQogI2VuZGlmCiAKIAlsc3IubAkjMSwlZDAKQEAgLTE3OCwxNiArMjE0LDMxIEBACiAJbW92ZS5sCSglYTApLCVkMQogCWpyYQkuTGNsc19lcGlsb2d1ZQogLkxjbHNfcmV0X2Zsb2F0OgorI2lmIGRlZmluZWQoX19NQzY4ODgxX18pIHx8IGRlZmluZWQoX19IQVZFXzY4ODgxX18pCiAJZm1vdmUucwkoJWEwKSwlZnAwCisjZWxzZQorCW1vdmUubAkoJWEwKSwlZDAKKyNlbmRpZgogCWpyYQkuTGNsc19lcGlsb2d1ZQogMToKIAlsc3IubAkjMiwlZDAKIAlqbmUJMWYKIAlqY3MJLkxjbHNfcmV0X2xkb3VibGUKKyNpZiBkZWZpbmVkKF9fTUM2ODg4MV9fKSB8fCBkZWZpbmVkKF9fSEFWRV82ODg4MV9fKQogCWZtb3ZlLmQJKCVhMCksJWZwMAorI2Vsc2UKKwltb3ZlLmwJKCVhMCkrLCVkMAorCW1vdmUubAkoJWEwKSwlZDEKKyNlbmRpZgogCWpyYQkuTGNsc19lcGlsb2d1ZQogLkxjbHNfcmV0X2xkb3VibGU6CisjaWYgZGVmaW5lZChfX01DNjg4ODFfXykgfHwgZGVmaW5lZChfX0hBVkVfNjg4ODFfXykKIAlmbW92ZS54CSglYTApLCVmcDAKKyNlbHNlCisJbW92ZS5sCSglYTApKywlZDAKKwltb3ZlLmwJKCVhMCkrLCVkMQorCW1vdmUubAkoJWEwKSwlZDIKKyNlbmRpZgogCWpyYQkuTGNsc19lcGlsb2d1ZQogMToKIAlsc3IubAkjMiwlZDAKQEAgLTIwNCwxMyArMjU1LDEzIEBACiAJanJhCS5MY2xzX2VwaWxvZ3VlCiAJQ0ZJX0VORFBST0MoKQogCi0JLnNpemUJZmZpX2Nsb3N1cmVfU1lTViwuLWZmaV9jbG9zdXJlX1NZU1YKKwkuc2l6ZQlDQUxMRlVOQyhmZmlfY2xvc3VyZV9TWVNWKSwuLUNBTExGVU5DKGZmaV9jbG9zdXJlX1NZU1YpCiAKLQkuZ2xvYmwJZmZpX2Nsb3N1cmVfc3RydWN0X1NZU1YKLQkudHlwZQlmZmlfY2xvc3VyZV9zdHJ1Y3RfU1lTViwgQGZ1bmN0aW9uCisJLmdsb2JsCUNBTExGVU5DKGZmaV9jbG9zdXJlX3N0cnVjdF9TWVNWKQorCS50eXBlCUNBTExGVU5DKGZmaV9jbG9zdXJlX3N0cnVjdF9TWVNWKSwgQGZ1bmN0aW9uCiAJLmFsaWduCTQKIAotZmZpX2Nsb3N1cmVfc3RydWN0X1NZU1Y6CitDQUxMRlVOQyhmZmlfY2xvc3VyZV9zdHJ1Y3RfU1lTVik6CiAJQ0ZJX1NUQVJUUFJPQygpCiAJbGluawklZnAsIzAKIAlDRklfT0ZGU0VUKDE0LC04KQpAQCAtMjIwLDE0ICsyNzEsMTQgQEAKIAltb3ZlLmwJJWExLC0oJXNwKQogCW1vdmUubAklYTAsLSglc3ApCiAjaWYgIWRlZmluZWQgX19QSUNfXwotCWpzcglmZmlfY2xvc3VyZV9TWVNWX2lubmVyCisJanNyCUNBTExGVU5DKGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIpCiAjZWxzZQotCWJzci5sCWZmaV9jbG9zdXJlX1NZU1ZfaW5uZXJAUExUUEMKKwlic3IubAlDQUxMRlVOQyhmZmlfY2xvc3VyZV9TWVNWX2lubmVyQFBMVFBDKQogI2VuZGlmCiAJdW5sawklZnAKIAlydHMKIAlDRklfRU5EUFJPQygpCi0JLnNpemUJZmZpX2Nsb3N1cmVfc3RydWN0X1NZU1YsLi1mZmlfY2xvc3VyZV9zdHJ1Y3RfU1lTVgorCS5zaXplCUNBTExGVU5DKGZmaV9jbG9zdXJlX3N0cnVjdF9TWVNWKSwuLUNBTExGVU5DKGZmaV9jbG9zdXJlX3N0cnVjdF9TWVNWKQogCiAjaWYgZGVmaW5lZCBfX0VMRl9fICYmIGRlZmluZWQgX19saW51eF9fCiAJLnNlY3Rpb24JLm5vdGUuR05VLXN0YWNrLCIiLEBwcm9nYml0cwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbWlwcy9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21pcHMvZmZpLmMKaW5kZXggZDcxNGNjOS4uNzljZmY5YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbWlwcy9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL2ZmaS5jCkBAIC0xLDYgKzEsNyBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAxOTk2LCAyMDA3LCAyMDA4ICBSZWQgSGF0LCBJbmMuCi0gICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwOCAgICAgICBEYXZpZCBEYW5leQorICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDIwMTEgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDA4ICBEYXZpZCBEYW5leQorICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYsIDIwMDcsIDIwMDgsIDIwMTEgIFJlZCBIYXQsIEluYy4KICAgIAogICAgTUlQUyBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKIApAQCAtMzcsNyArMzgsMTEgQEAKICNlbmRpZgogCiAjaWZuZGVmIFVTRV9fQlVJTFRJTl9fX0NMRUFSX0NBQ0hFCi0jaW5jbHVkZSA8c3lzL2NhY2hlY3RsLmg+CisjICBpZiBkZWZpbmVkKF9fT3BlbkJTRF9fKQorIyAgICBpbmNsdWRlIDxtaXBzNjQvc3lzYXJjaC5oPgorIyAgZWxzZQorIyAgICBpbmNsdWRlIDxzeXMvY2FjaGVjdGwuaD4KKyMgIGVuZGlmCiAjZW5kaWYKIAogI2lmZGVmIEZGSV9ERUJVRwpAQCAtNjYyLDEwICs2NjcsMTIgQEAKICAgY2hhciAqY2xlYXJfbG9jYXRpb24gPSAoY2hhciAqKSBjb2RlbG9jOwogCiAjaWYgZGVmaW5lZChGRklfTUlQU19PMzIpCi0gIEZGSV9BU1NFUlQoY2lmLT5hYmkgPT0gRkZJX08zMiB8fCBjaWYtPmFiaSA9PSBGRklfTzMyX1NPRlRfRkxPQVQpOworICBpZiAoY2lmLT5hYmkgIT0gRkZJX08zMiAmJiBjaWYtPmFiaSAhPSBGRklfTzMyX1NPRlRfRkxPQVQpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogICBmbiA9IGZmaV9jbG9zdXJlX08zMjsKICNlbHNlIC8qIEZGSV9NSVBTX04zMiAqLwotICBGRklfQVNTRVJUKGNpZi0+YWJpID09IEZGSV9OMzIgfHwgY2lmLT5hYmkgPT0gRkZJX042NCk7CisgIGlmIChjaWYtPmFiaSAhPSBGRklfTjMyICYmIGNpZi0+YWJpICE9IEZGSV9ONjQpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogICBmbiA9IGZmaV9jbG9zdXJlX04zMjsKICNlbmRpZiAvKiBGRklfTUlQU19PMzIgKi8KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbWlwcy9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21pcHMvZmZpdGFyZ2V0LmgKaW5kZXggYzVmNGUwNS4uNzE3ZDY1OSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbWlwcy9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIE1JUFMuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsMTEgKzI4LDIzIEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAjaWZkZWYgbGludXgKICMgaW5jbHVkZSA8YXNtL3NnaWRlZnMuaD4KLSNlbHNlCisjZWxpZiBkZWZpbmVkKF9fcnRlbXNfXykKKy8qCisgKiBTdWJwcm9ncmFtIGNhbGxpbmcgY29udmVudGlvbiAtIGNvcGllZCBmcm9tIHNnaWRlZnMuaAorICovCisjZGVmaW5lIF9NSVBTX1NJTV9BQkkzMgkJMQorI2RlZmluZSBfTUlQU19TSU1fTkFCSTMyCTIKKyNkZWZpbmUgX01JUFNfU0lNX0FCSTY0CQkzCisjZWxpZiAhZGVmaW5lZChfX09wZW5CU0RfXykKICMgaW5jbHVkZSA8c2dpZGVmcy5oPgogI2VuZGlmCisKICMgIGlmbmRlZiBfQUJJTjMyCiAjICAgIGRlZmluZSBfQUJJTjMyIF9NSVBTX1NJTV9OQUJJMzIKICMgIGVuZGlmCkBAIC00Myw3ICs1Niw3IEBACiAjICBlbmRpZgogCiAjaWYgIWRlZmluZWQoX01JUFNfU0lNKQotLS0gc29tZXRoaW5nIGlzIHZlcnkgd3JvbmcgLS0KKyMgZXJyb3IgLS0gc29tZXRoaW5nIGlzIHZlcnkgd3JvbmcgLS0KICNlbHNlCiAjICBpZiAoX01JUFNfU0lNPT1fQUJJTjMyICYmIGRlZmluZWQoX0FCSU4zMikpIHx8IChfTUlQU19TSU09PV9BQkk2NCAmJiBkZWZpbmVkKF9BQkk2NCkpCiAjICAgIGRlZmluZSBGRklfTUlQU19OMzIKQEAgLTUxLDcgKzY0LDcgQEAKICMgICAgaWYgKF9NSVBTX1NJTT09X0FCSU8zMiAmJiBkZWZpbmVkKF9BQklPMzIpKQogIyAgICAgIGRlZmluZSBGRklfTUlQU19PMzIKICMgICAgZWxzZQotLS0gdGhpcyBpcyBhbiB1bnN1cHBvcnRlZCBwbGF0Zm9ybSAtLQorIyAgICAgZXJyb3IgLS0gdGhpcyBpcyBhbiB1bnN1cHBvcnRlZCBwbGF0Zm9ybSAtLQogIyAgICBlbmRpZgogIyAgZW5kaWYKICNlbmRpZgpAQCAtMTg2LDMwICsxOTksMjkgQEAKICAgRkZJX08zMl9TT0ZUX0ZMT0FULAogICBGRklfTjMyX1NPRlRfRkxPQVQsCiAgIEZGSV9ONjRfU09GVF9GTE9BVCwKKyAgRkZJX0xBU1RfQUJJLAogCiAjaWZkZWYgRkZJX01JUFNfTzMyCiAjaWZkZWYgX19taXBzX3NvZnRfZmxvYXQKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX08zMl9TT0ZUX0ZMT0FULAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfTzMyX1NPRlRfRkxPQVQKICNlbHNlCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9PMzIsCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9PMzIKICNlbmRpZgogI2Vsc2UKICMgaWYgX01JUFNfU0lNPT1fQUJJNjQKICMgIGlmZGVmIF9fbWlwc19zb2Z0X2Zsb2F0Ci0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9ONjRfU09GVF9GTE9BVCwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX042NF9TT0ZUX0ZMT0FUCiAjICBlbHNlCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9ONjQsCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9ONjQKICMgIGVuZGlmCiAjIGVsc2UKICMgIGlmZGVmIF9fbWlwc19zb2Z0X2Zsb2F0Ci0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9OMzJfU09GVF9GTE9BVCwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX04zMl9TT0ZUX0ZMT0FUCiAjICBlbHNlCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9OMzIsCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9OMzIKICMgIGVuZGlmCiAjIGVuZGlmCiAjZW5kaWYKLQotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCiB9IGZmaV9hYmk7CiAKICNkZWZpbmUgRkZJX0VYVFJBX0NJRl9GSUVMRFMgdW5zaWduZWQgcnN0cnVjdF9mbGFnCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL24zMi5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbWlwcy9uMzIuUwppbmRleCBhZTIzMDk0Li5mZjRiYmNlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL24zMi5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21pcHMvbjMyLlMKQEAgLTQzLDYgKzQzLDcgQEAKICNpZmRlZiBfX0dOVUNfXwogCS5hYmljYWxscwogI2VuZGlmCisJLnNldCBtaXBzNAogCS50ZXh0CiAJLmFsaWduCTIKIAkuZ2xvYmwJZmZpX2NhbGxfTjMyCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tb3hpZS9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21veGllL2ZmaXRhcmdldC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTMwNWQxLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21veGllL2ZmaXRhcmdldC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDA5IEFudGhvbnkgR3JlZW4KLSAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgTW94aWUKLQotICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0gICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSAgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0gICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSAgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLQotICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLSAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotCi0gICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAotICAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0gICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAotICAgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUCi0gICBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwKLSAgIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAotICAgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgotICAgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaWZuZGVmIExJQkZGSV9UQVJHRVRfSAotI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKLQotLyogLS0tLSBTeXN0ZW0gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmbmRlZiBMSUJGRklfQVNNCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgZmZpX2FyZzsKLXR5cGVkZWYgc2lnbmVkIGxvbmcgICAgICAgICAgICBmZmlfc2FyZzsKLQotdHlwZWRlZiBlbnVtIGZmaV9hYmkgewotICBGRklfRklSU1RfQUJJID0gMCwKLQotI2lmZGVmIE1PWElFCi0gIEZGSV9FQUJJLAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfRUFCSSwKLSNlbmRpZgotCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKLX0gZmZpX2FiaTsKLSNlbmRpZgotCi0vKiAtLS0tIERlZmluaXRpb25zIGZvciBjbG9zdXJlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jZGVmaW5lIEZGSV9DTE9TVVJFUyAwCi0jZGVmaW5lIEZGSV9OQVRJVkVfUkFXX0FQSSAwCi0KLS8qIFRyYW1wb2xpbmVzIGFyZSA1IDQtYnl0ZSBpbnN0cnVjdGlvbnMgbG9uZy4gICovCi0jZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgKDUqNCkKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wYS9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3BhL2ZmaS5jCmluZGV4IDZkNzYwNmYuLjRjZTJiYzYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3BhL2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3BhL2ZmaS5jCkBAIC0xLDkgKzEsMTEgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmkuYyAtIChjKSAyMDAzLTIwMDQgUmFuZG9scGggQ2h1bmcgPHRhdXNxQGRlYmlhbi5vcmc+CisgICBmZmkuYyAtIChjKSAyMDExIEFudGhvbnkgR3JlZW4KICAgICAgICAgICAgKGMpIDIwMDggUmVkIEhhdCwgSW5jLgotCisJICAgKGMpIDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICAgICAgICAgIChjKSAyMDAzLTIwMDQgUmFuZG9scGggQ2h1bmcgPHRhdXNxQGRlYmlhbi5vcmc+CisgICAgICAgICAgIAogICAgSFBQQSBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZQotICAgSFAtVVggUEEgQUJJIHN1cHBvcnQgKGMpIDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBIUC1VWCBQQSBBQkkgc3VwcG9ydCAKIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCiAgICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKQEAgLTYzMyw3ICs2MzUsOCBAQAogICBVSU5UMzIgKnRtcDsKICNlbmRpZgogCi0gIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9QQTMyKTsKKyAgaWYgKGNpZi0+YWJpICE9IEZGSV9QQTMyKQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKIAogICAvKiBNYWtlIGEgc21hbGwgdHJhbXBvbGluZSB0aGF0IHdpbGwgYnJhbmNoIHRvIG91cgogICAgICBoYW5kbGVyIGZ1bmN0aW9uLiBVc2UgUEMtcmVsYXRpdmUgYWRkcmVzc2luZy4gICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wYS9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3BhL2ZmaXRhcmdldC5oCmluZGV4IDAwMWY4OTEuLjVlMzY0ZDMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3BhL2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3BhL2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIGhwcGEuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsNiArMjgsMTAgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKIC8qIC0tLS0gU3lzdGVtIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNpZm5kZWYgTElCRkZJX0FTTQpAQCAtMzgsMjEgKzQzLDIyIEBACiAKICNpZmRlZiBQQV9MSU5VWAogICBGRklfUEEzMiwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1BBMzIsCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1BBMzIKICNlbmRpZgogCiAjaWZkZWYgUEFfSFBVWAogICBGRklfUEEzMiwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1BBMzIsCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1BBMzIKICNlbmRpZgogCiAjaWZkZWYgUEE2NF9IUFVYCiAjZXJyb3IgIlBBNjRfSFBVWCBGRkkgaXMgbm90IHlldCBpbXBsZW1lbnRlZCIKICAgRkZJX1BBNjQsCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9QQTY0LAorICBGRklfTEFTVF9BQkksCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9QQTY0CiAjZW5kaWYKLQotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCiB9IGZmaV9hYmk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9haXguUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvYWl4LlMKaW5kZXggYzZmODc2NC4uMjEzZjJkYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9haXguUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FpeC5TCkBAIC0xLDUgKzEsNSBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGFpeC5TIC0gQ29weXJpZ2h0IChjKSAyMDAyLDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBhaXguUyAtIENvcHlyaWdodCAoYykgMjAwMiwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAgIGJhc2VkIG9uIGRhcndpbi5TIGJ5IEpvaG4gSG9ybmt2aXN0CiAKICAgIFBvd2VyUEMgQXNzZW1ibHkgZ2x1ZS4KQEAgLTc5LDYgKzc5LDggQEAKIAkuc2V0IGYyMCwyMAogCS5zZXQgZjIxLDIxCiAKKwkuZXh0ZXJuIC5mZmlfcHJlcF9hcmdzCisKICNkZWZpbmUgTElCRkZJX0FTTQogI2luY2x1ZGUgPGZmaWNvbmZpZy5oPgogI2luY2x1ZGUgPGZmaS5oPgpAQCAtMTI1LDYgKzEyNyw3IEBACiAJLyogQ2FsbCBmZmlfcHJlcF9hcmdzLiAgKi8KIAltcglyNCwgcjEKIAlibAkuZmZpX3ByZXBfYXJncworCW5vcAogCiAJLyogTm93IGRvIHRoZSBjYWxsLiAgKi8KIAlsZAlyMCwgMChyMjkpCkBAIC0yMjYsNiArMjI5LDcgQEAKIAkvKiBDYWxsIGZmaV9wcmVwX2FyZ3MuICAqLwogCW1yCXI0LCByMQogCWJsCS5mZmlfcHJlcF9hcmdzCisJbm9wCiAKIAkvKiBOb3cgZG8gdGhlIGNhbGwuICAqLwogCWx3eglyMCwgMChyMjkpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMKaW5kZXggNWM3NDQ0OC4uYWFiZDNjMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUuUwpAQCAtNzksNiArNzksOCBAQAogCS5zZXQgZjIwLDIwCiAJLnNldCBmMjEsMjEKIAorCS5leHRlcm4gLmZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4KKwogI2RlZmluZSBMSUJGRklfQVNNCiAjZGVmaW5lIEpVTVBUQVJHRVQobmFtZSkgbmFtZQogI2RlZmluZSBMKHgpIHgKQEAgLTE2NSw2ICsxNjcsNyBAQAogCiAJLyogbG9vayB1cCB0aGUgcHJvcGVyIHN0YXJ0aW5nIHBvaW50IGluIHRhYmxlICAqLwogCS8qIGJ5IHVzaW5nIHJldHVybiB0eXBlIGFzIG9mZnNldCAqLworCWxoeglyMywgMTAocjMpCS8qIGxvYWQgdHlwZSBmcm9tIHJldHVybiB0eXBlICovCiAJbGQJcjQsIExDLi42MCgyKQkvKiBnZXQgYWRkcmVzcyBvZiBqdW1wIHRhYmxlICovCiAJc2xkaQlyMywgcjMsIDQJLyogbm93IG11bHRpcGx5IHJldHVybiB0eXBlIGJ5IDE2ICovCiAJbGQJcjAsIDI0MCsxNihyMSkJLyogbG9hZCByZXR1cm4gYWRkcmVzcyAqLwpAQCAtMzM3LDggKzM0MCw5IEBACiAKIAkvKiBsb29rIHVwIHRoZSBwcm9wZXIgc3RhcnRpbmcgcG9pbnQgaW4gdGFibGUgICovCiAJLyogYnkgdXNpbmcgcmV0dXJuIHR5cGUgYXMgb2Zmc2V0ICovCisJbGh6CXIzLCA2KHIzKQkvKiBsb2FkIHR5cGUgZnJvbSByZXR1cm4gdHlwZSAqLwogCWx3eglyNCwgTEMuLjYwKDIpCS8qIGdldCBhZGRyZXNzIG9mIGp1bXAgdGFibGUgKi8KLQlzbHdpCXIzLCByMywgNAkvKiBub3cgbXVsdGlwbHkgcmV0dXJuIHR5cGUgYnkgNCAqLworCXNsd2kJcjMsIHIzLCA0CS8qIG5vdyBtdWx0aXBseSByZXR1cm4gdHlwZSBieSAxNiAqLwogCWx3eglyMCwgMTc2KzgocjEpCS8qIGxvYWQgcmV0dXJuIGFkZHJlc3MgKi8KIAlhZGQJcjMsIHIzLCByNAkvKiBhZGQgY29udGVudHMgb2YgdGFibGUgdG8gdGFibGUgYWRkcmVzcyAqLwogCW10Y3RyCXIzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FzbS5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9hc20uaAppbmRleCBlODZlNmIwLi45OTRmNjJkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FzbS5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvYXNtLmgKQEAgLTQyLDcgKzQyLDcgQEAKIAogLyogSWYgY29tcGlsZWQgZm9yIHByb2ZpbGluZywgY2FsbCBgX21jb3VudCcgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggZnVuY3Rpb24uICAqLwogI2lmZGVmCVBST0YKLS8qIFRoZSBtY291bnQgY29kZSByZWxpZXMgb24gYSB0aGUgcmV0dXJuIGFkZHJlc3MgYmVpbmcgb24gdGhlIHN0YWNrCisvKiBUaGUgbWNvdW50IGNvZGUgcmVsaWVzIG9uIHRoZSByZXR1cm4gYWRkcmVzcyBiZWluZyBvbiB0aGUgc3RhY2sKICAgIHRvIGxvY2F0ZSBvdXIgY2FsbGVyIGFuZCBzbyBpdCBjYW4gcmVzdG9yZSBpdDsgc28gc3RvcmUgb25lIGp1c3QKICAgIGZvciBpdHMgYmVuZWZpdC4gICovCiAjaWZkZWYgUElDCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2Rhcndpbi5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9kYXJ3aW4uUwppbmRleCBkOGExZGY1Li40Zjk4N2RjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2Rhcndpbi5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZGFyd2luLlMKQEAgLTEsNiArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgZGFyd2luLlMgLSBDb3B5cmlnaHQgKGMpIDIwMDAgSm9obiBIb3Jua3Zpc3QKLQkgICAgICBDb3B5cmlnaHQgKGMpIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisJICAgICAgQ29weXJpZ2h0IChjKSAyMDA0LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBQb3dlclBDIEFzc2VtYmx5IGdsdWUuCiAKQEAgLTI0LDUxICsyNCw5MiBAQAogICAgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAorI2RlZmluZSBMSUJGRklfQVNNCiAjaWYgZGVmaW5lZChfX3BwYzY0X18pCiAjZGVmaW5lIE1PREVfQ0hPSUNFKHgsIHkpIHkKICNlbHNlCiAjZGVmaW5lIE1PREVfQ0hPSUNFKHgsIHkpIHgKICNlbmRpZgogCi0jZGVmaW5lIGdfbG9uZyAgTU9ERV9DSE9JQ0UobG9uZywgcXVhZCkgICAgICAgICAvKiB1c2FnZSBpcyAiLmdfbG9uZyIgKi8KKyNkZWZpbmUgbWFjaGluZV9jaG9pY2UJTU9ERV9DSE9JQ0UocHBjNzQwMCxwcGM2NCkKIAotI2RlZmluZSBMT0cyX0dQUl9CWVRFUyAgTU9ERV9DSE9JQ0UoMiwzKSAgICAgICAgLyogbG9nMihHUFJfQllURVMpICovCis7IERlZmluZSBzb21lIHBzZXVkby1vcGNvZGVzIGZvciBzaXplLWluZGVwZW5kZW50IGxvYWQgJiBzdG9yZSBvZiBHUFJzIC4uLgorI2RlZmluZSBsZ3UJCU1PREVfQ0hPSUNFKGx3enUsIGxkdSkKKyNkZWZpbmUgbGcJCU1PREVfQ0hPSUNFKGx3eixsZCkKKyNkZWZpbmUgc2cJCU1PREVfQ0hPSUNFKHN0dyxzdGQpCisjZGVmaW5lIHNndQkJTU9ERV9DSE9JQ0Uoc3R3dSxzdGR1KQorI2RlZmluZSBzZ3V4CQlNT0RFX0NIT0lDRShzdHd1eCxzdGR1eCkKIAotI2RlZmluZSBMSUJGRklfQVNNCis7IC4uLiBhbmQgdGhlIHNpemUgb2YgR1BScyBhbmQgdGhlaXIgc3RvcmFnZSBpbmRpY2F0b3IuCisjZGVmaW5lIEdQUl9CWVRFUwlNT0RFX0NIT0lDRSg0LDgpCisjZGVmaW5lIExPRzJfR1BSX0JZVEVTCU1PREVfQ0hPSUNFKDIsMykJLyogbG9nMihHUFJfQllURVMpICovCisjZGVmaW5lIGdfbG9uZwkJTU9ERV9DSE9JQ0UobG9uZywgcXVhZCkJLyogdXNhZ2UgaXMgIi5nX2xvbmciICovCisKKzsgRnJvbSB0aGUgQUJJIGRvYzogIk1hYyBPUyBYIEFCSSBGdW5jdGlvbiBDYWxsIEd1aWRlIiBWZXJzaW9uIDIwMDktMDItMDQuCisjZGVmaW5lIExJTktBR0VfU0laRQlNT0RFX0NIT0lDRSgyNCw0OCkKKyNkZWZpbmUgUEFSQU1fQVJFQQlNT0RFX0NIT0lDRSgzMiw2NCkKKyNkZWZpbmUgU0FWRURfTFJfT0ZGU0VUCU1PREVfQ0hPSUNFKDgsMTYpCS8qIHNhdmUgcG9zaXRpb24gZm9yIGxyICovCisKKy8qIElmIHRoZXJlIGlzIGFueSBGUCBzdHVmZiB3ZSBtYWtlIHNwYWNlIGZvciBhbGwgb2YgdGhlIHJlZ3MuICAqLworI2RlZmluZSBTQVZFRF9GUFJfQ09VTlQgMTMKKyNkZWZpbmUgRlBSX1NJWkUJOAorI2RlZmluZSBSRVNVTFRfQllURVMJMTYKKworLyogVGhpcyBzaG91bGQgYmUga2VwdCBpbiBzdGVwIHdpdGggdGhlIHNhbWUgdmFsdWUgaW4gZmZpX2Rhcndpbi5jLiAgKi8KKyNkZWZpbmUgQVNNX05FRURTX1JFR0lTVEVSUyA0CisjZGVmaW5lIFNBVkVfUkVHU19TSVpFIChBU01fTkVFRFNfUkVHSVNURVJTICogR1BSX0JZVEVTKQorCiAjaW5jbHVkZSA8ZmZpY29uZmlnLmg+CiAjaW5jbHVkZSA8ZmZpLmg+CisKICNkZWZpbmUgSlVNUFRBUkdFVChuYW1lKSBuYW1lCiAjZGVmaW5lIEwoeCkgeAotLnRleHQKLQkuYWxpZ24gMgotLmdsb2JsIF9mZmlfcHJlcF9hcmdzCiAKLS50ZXh0CisJLnRleHQKIAkuYWxpZ24gMgotLmdsb2JsIF9mZmlfY2FsbF9EQVJXSU4KLS50ZXh0CisJLmdsb2JsIF9mZmlfcHJlcF9hcmdzCisKIAkuYWxpZ24gMgorCS5nbG9ibCBfZmZpX2NhbGxfREFSV0lOCisKKwkvKiBXZSBhcnJpdmUgaGVyZSB3aXRoOgorCSAgIHIzID0gcHRyIHRvIGV4dGVuZGVkIGNpZi4KKwkgICByNCA9IC1ieXRlcy4KKwkgICByNSA9IGNpZiBmbGFncy4KKwkgICByNiA9IHB0ciB0byByZXR1cm4gdmFsdWUuCisJICAgcjcgPSBmbiBwb2ludGVyICh1c2VyIGZ1bmMpLgorCSAgIHI4ID0gZm4gcG9pbnRlciAoZmZpX3ByZXBfYXJncykuCisJICAgcjkgPSBmZmlfdHlwZSogZm9yIHRoZSByZXQgdmFsLiAgKi8KKwogX2ZmaV9jYWxsX0RBUldJTjoKLUxGQjA6CitMc3RhcnRjb2RlOgogCW1yICAgCXIxMixyOAkvKiBXZSBvbmx5IG5lZWQgcjEyIHVudGlsIHRoZSBjYWxsLAotCQkJICAgc28gaXQgZG9lc24ndCBoYXZlIHRvIGJlIHNhdmVkLiAgKi8KKwkJCSAgIHNvIGl0IGRvZXMgbm90IGhhdmUgdG8gYmUgc2F2ZWQuICAqLwogTEZCMToKIAkvKiBTYXZlIHRoZSBvbGQgc3RhY2sgcG9pbnRlciBhcyBBUC4gICovCiAJbXIJcjgscjEKIExDRkkwOgorCQorCS8qIFNhdmUgdGhlIHJldHZhbCB0eXBlIGluIHBhcmVudHMgZnJhbWUuICAqLworCXNnCXI5LChMSU5LQUdFX1NJWkUrNipHUFJfQllURVMpKHI4KQorCiAJLyogQWxsb2NhdGUgdGhlIHN0YWNrIHNwYWNlIHdlIG5lZWQuICAqLwotCXN0d3V4CXIxLHIxLHI0CisJc2d1eAlyMSxyMSxyNAogCiAJLyogU2F2ZSByZWdpc3RlcnMgd2UgdXNlLiAgKi8KIAltZmxyCXI5CisJc2cJcjksU0FWRURfTFJfT0ZGU0VUKHI4KQogCi0Jc3R3CXIyOCwtMTYocjgpCQotCXN0dwlyMjksLTEyKHI4KQotCXN0dwlyMzAsLTgocjgpCi0Jc3R3CXIzMSwtNChyOCkKKwlzZwlyMjgsLSg0ICogR1BSX0JZVEVTKShyOCkJCisJc2cJcjI5LC0oMyAqIEdQUl9CWVRFUykocjgpCisJc2cJcjMwLC0oMiAqIEdQUl9CWVRFUykocjgpCisJc2cJcjMxLC0oICAgIEdQUl9CWVRFUykocjgpCiAKLQlzdHcJcjksOChyOCkKLQlzdHcJcjIsMjAocjEpCisjaWYgIWRlZmluZWQoUE9XRVJQQ19EQVJXSU4pCisJLyogVGhlIFRPQyBzbG90IGlzIHJlc2VydmVkIGluIHRoZSBEYXJ3aW4gQUJJIGFuZCByMiBpcyB2b2xhdGlsZS4gICovCisJc2cJcjIsKDUgKiBHUFJfQllURVMpKHIxKQorI2VuZGlmCisKIExDRkkxOgogCiAJLyogU2F2ZSBhcmd1bWVudHMgb3ZlciBjYWxsLiAgKi8KQEAgLTc3LDE0ICsxMTgsMTcgQEAKIAltcglyMjkscjcJLyogZnVuY3Rpb24gYWRkcmVzcywgICovCiAJbXIJcjI4LHI4CS8qIG91ciBBUC4gICovCiBMQ0ZJMjoKLQkvKiBDYWxsIGZmaV9wcmVwX2FyZ3MuICAqLworCS8qIENhbGwgZmZpX3ByZXBfYXJncy4gcjMgPSBleHRlbmRlZCBjaWYsIHI0ID0gc3RhY2sgcHRyIGNvcHkuICAqLwogCW1yCXI0LHIxCiAJbGkJcjksMAogCiAJbXRjdHIJcjEyIC8qIHIxMiBob2xkcyBhZGRyZXNzIG9mIF9mZmlfcHJlcF9hcmdzLiAgKi8KIAliY3RybAotCWx3eiAgICAgcjIsMjAocjEpCiAKKyNpZiAhZGVmaW5lZChQT1dFUlBDX0RBUldJTikKKwkvKiBUaGUgVE9DIHNsb3QgaXMgcmVzZXJ2ZWQgaW4gdGhlIERhcndpbiBBQkkgYW5kIHIyIGlzIHZvbGF0aWxlLiAgKi8KKwlsZyAgICAgcjIsKDUgKiBHUFJfQllURVMpKHIxKQorI2VuZGlmCiAJLyogTm93IGRvIHRoZSBjYWxsLgogCSAgIFNldCB1cCBjcjEgd2l0aCBiaXRzIDQtNyBvZiB0aGUgZmxhZ3MuICAqLwogCW10Y3JmCTB4NDAscjMxCkBAIC05Miw3MSArMTM2LDEzMCBAQAogCW10Y3RyCXIyOQogCS8qIExvYWQgYWxsIHRob3NlIGFyZ3VtZW50IHJlZ2lzdGVycy4KIAkgICBXZSBoYXZlIHNldCB1cCBhIG5pY2Ugc3RhY2sgZnJhbWUsIGp1c3QgbG9hZCBpdCBpbnRvIHJlZ2lzdGVycy4gICovCi0JbHd6ICAgICByMywyMCsoMSo0KShyMSkKLQlsd3ogICAgIHI0LDIwKygyKjQpKHIxKQotCWx3eiAgICAgcjUsMjArKDMqNCkocjEpCi0JbHd6ICAgICByNiwyMCsoNCo0KShyMSkKKwlsZyAgICAgcjMsIChMSU5LQUdFX1NJWkUgICAgICAgICAgICAgICAgKShyMSkKKwlsZyAgICAgcjQsIChMSU5LQUdFX1NJWkUgKyAgICAgR1BSX0JZVEVTKShyMSkKKwlsZyAgICAgcjUsIChMSU5LQUdFX1NJWkUgKyAyICogR1BSX0JZVEVTKShyMSkKKwlsZyAgICAgcjYsIChMSU5LQUdFX1NJWkUgKyAzICogR1BSX0JZVEVTKShyMSkKIAlub3AKLQlsd3ogICAgIHI3LDIwKyg1KjQpKHIxKQotCWx3eiAgICAgcjgsMjArKDYqNCkocjEpCi0JbHd6ICAgICByOSwyMCsoNyo0KShyMSkKLQlsd3ogICAgIHIxMCwyMCsoOCo0KShyMSkKKwlsZyAgICAgcjcsIChMSU5LQUdFX1NJWkUgKyA0ICogR1BSX0JZVEVTKShyMSkKKwlsZyAgICAgcjgsIChMSU5LQUdFX1NJWkUgKyA1ICogR1BSX0JZVEVTKShyMSkKKwlsZyAgICAgcjksIChMSU5LQUdFX1NJWkUgKyA2ICogR1BSX0JZVEVTKShyMSkKKwlsZyAgICAgcjEwLChMSU5LQUdFX1NJWkUgKyA3ICogR1BSX0JZVEVTKShyMSkKIAogTDE6Ci0JLyogTG9hZCBhbGwgdGhlIEZQIHJlZ2lzdGVycy4gICovCisJLyogLi4uIExvYWQgYWxsIHRoZSBGUCByZWdpc3RlcnMuICAqLwogCWJmCTYsTDIJLyogTm8gZmxvYXRzIHRvIGxvYWQuICAqLwotCWxmZAlmMSwtMTYtKDEzKjgpKHIyOCkKLQlsZmQJZjIsLTE2LSgxMio4KShyMjgpCi0JbGZkCWYzLC0xNi0oMTEqOCkocjI4KQotCWxmZAlmNCwtMTYtKDEwKjgpKHIyOCkKKwlsZmQJZjEsIC1TQVZFX1JFR1NfU0laRS0oMTMqRlBSX1NJWkUpKHIyOCkKKwlsZmQJZjIsIC1TQVZFX1JFR1NfU0laRS0oMTIqRlBSX1NJWkUpKHIyOCkKKwlsZmQJZjMsIC1TQVZFX1JFR1NfU0laRS0oMTEqRlBSX1NJWkUpKHIyOCkKKwlsZmQJZjQsIC1TQVZFX1JFR1NfU0laRS0oMTAqRlBSX1NJWkUpKHIyOCkKIAlub3AKLQlsZmQJZjUsLTE2LSg5KjgpKHIyOCkKLQlsZmQJZjYsLTE2LSg4KjgpKHIyOCkKLQlsZmQJZjcsLTE2LSg3KjgpKHIyOCkKLQlsZmQJZjgsLTE2LSg2KjgpKHIyOCkKKwlsZmQJZjUsIC1TQVZFX1JFR1NfU0laRS0oIDkqRlBSX1NJWkUpKHIyOCkKKwlsZmQJZjYsIC1TQVZFX1JFR1NfU0laRS0oIDgqRlBSX1NJWkUpKHIyOCkKKwlsZmQJZjcsIC1TQVZFX1JFR1NfU0laRS0oIDcqRlBSX1NJWkUpKHIyOCkKKwlsZmQJZjgsIC1TQVZFX1JFR1NfU0laRS0oIDYqRlBSX1NJWkUpKHIyOCkKIAlub3AKLQlsZmQgICAgIGY5LC0xNi0oNSo4KShyMjgpCi0JbGZkICAgICBmMTAsLTE2LSg0KjgpKHIyOCkKLQlsZmQgICAgIGYxMSwtMTYtKDMqOCkocjI4KQotCWxmZCAgICAgZjEyLC0xNi0oMio4KShyMjgpCisJbGZkICAgICBmOSwgLVNBVkVfUkVHU19TSVpFLSggNSpGUFJfU0laRSkocjI4KQorCWxmZCAgICAgZjEwLC1TQVZFX1JFR1NfU0laRS0oIDQqRlBSX1NJWkUpKHIyOCkKKwlsZmQgICAgIGYxMSwtU0FWRV9SRUdTX1NJWkUtKCAzKkZQUl9TSVpFKShyMjgpCisJbGZkICAgICBmMTIsLVNBVkVfUkVHU19TSVpFLSggMipGUFJfU0laRSkocjI4KQogCW5vcAotCWxmZCAgICAgZjEzLC0xNi0oMSo4KShyMjgpCisJbGZkICAgICBmMTMsLVNBVkVfUkVHU19TSVpFLSggMSpGUFJfU0laRSkocjI4KQogCiBMMjoKIAltcglyMTIscjI5CS8qIFB1dCB0aGUgdGFyZ2V0IGFkZHJlc3MgaW4gcjEyIGFzIHNwZWNpZmllZC4gICovCiAJbXRjdHIgIAlyMTIKIAlub3AKIAlub3AKKwogCS8qIE1ha2UgdGhlIGNhbGwuICAqLwogCWJjdHJsCiAKIAkvKiBOb3csIGRlYWwgd2l0aCB0aGUgcmV0dXJuIHZhbHVlLiAgKi8KLQltdGNyZgkweDAxLHIzMQogCi0JYnQJMzAsTChkb25lX3JldHVybl92YWx1ZSkKLQlidAkyOSxMKGZwX3JldHVybl92YWx1ZSkKLQlzdHcJcjMsMChyMzApCi0JYmYJMjgsTChkb25lX3JldHVybl92YWx1ZSkKLQlzdHcJcjQsNChyMzApCisJLyogbTY0IHN0cnVjdHVyZSByZXR1cm5zIGNhbiBvY2N1cHkgdGhlIHNhbWUgc2V0IG9mIHJlZ2lzdGVycyBhcworCSAgIHdvdWxkIGJlIHVzZWQgdG8gcGFzcyBzdWNoIGEgc3RydWN0dXJlIGFzIGFyZzAgLSBzbyB0YWtlIGNhcmUgCisJICAgbm90IHRvIHN0ZXAgb24gYW55IHBvc3NpYmx5IGhvdCByZWdzLiAgKi8KIAotCS8qIEZhbGwgdGhyb3VnaC4gICovCisJLyogR2V0IHRoZSBmbGFncy4uICovCisJbXRjcmYJMHgwMyxyMzEgOyB3ZSBuZWVkIGM2ICYgY3I3IG5vdy4KKwk7IEZMQUdfUkVUVVJOU19OT1RISU5HIGFsc28gY292ZXJzIHN0cnVjdCByZXQtYnktcmVmLgorCWJ0CTMwLEwoZG9uZV9yZXR1cm5fdmFsdWUpCSAgOyBGTEFHX1JFVFVSTlNfTk9USElORworCWJmCTI3LEwoc2NhbGFyX3JldHVybl92YWx1ZSkgOyBub3QgRkxBR19SRVRVUk5TX1NUUlVDVAorCQorCS8qIE9LLCBzbyB3ZSBoYXZlIGEgc3RydWN0LiAgKi8KKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKKwlidAkzMSxMKG1heWJlX3JldHVybl8xMjgpIDsgRkxBR19SRVRVUk5TXzEyOEJJVFMsIHNwZWNpYWwgY2FzZSAKIAotTChkb25lX3JldHVybl92YWx1ZSk6Ci0JLyogUmVzdG9yZSB0aGUgcmVnaXN0ZXJzIHdlIHVzZWQgYW5kIHJldHVybi4gICovCi0JbHd6CXI5LDgocjI4KQotCWx3eglyMzEsLTQocjI4KQotCW10bHIJcjkKLQlsd3oJcjMwLC04KHIyOCkKLQlsd3oJcjI5LC0xMihyMjgpCi0JbHd6CXIyOCwtMTYocjI4KQotCWx3eglyMSwwKHIxKQotCWJscgorCS8qIE9LLCB3ZSBoYXZlIHRvIG1hcCB0aGUgcmV0dXJuIGJhY2sgdG8gYSBtZW0gc3RydWN0LgorCSAgIFdlIGFyZSBhYm91dCB0byB0cmFtcGxlIHRoZSBwYXJlbnRzIHBhcmFtIGFyZWEsIHNvIHJlY292ZXIgdGhlCisJICAgcmV0dXJuIHR5cGUuICByMjkgaXMgZnJlZSwgc2luY2UgdGhlIGNhbGwgaXMgZG9uZS4gICovCisJbGcJcjI5LChMSU5LQUdFX1NJWkUgKyA2ICogR1BSX0JZVEVTKShyMjgpCisKKwlzZwlyMywgKExJTktBR0VfU0laRSAgICAgICAgICAgICAgICApKHIyOCkKKwlzZwlyNCwgKExJTktBR0VfU0laRSArICAgICBHUFJfQllURVMpKHIyOCkKKwlzZwlyNSwgKExJTktBR0VfU0laRSArIDIgKiBHUFJfQllURVMpKHIyOCkKKwlzZwlyNiwgKExJTktBR0VfU0laRSArIDMgKiBHUFJfQllURVMpKHIyOCkKKwlub3AKKwlzZwlyNywgKExJTktBR0VfU0laRSArIDQgKiBHUFJfQllURVMpKHIyOCkKKwlzZwlyOCwgKExJTktBR0VfU0laRSArIDUgKiBHUFJfQllURVMpKHIyOCkKKwlzZwlyOSwgKExJTktBR0VfU0laRSArIDYgKiBHUFJfQllURVMpKHIyOCkKKwlzZwlyMTAsKExJTktBR0VfU0laRSArIDcgKiBHUFJfQllURVMpKHIyOCkKKwkvKiBPSywgc28gZG8gdGhlIGJsb2NrIG1vdmUgLSB3ZSB0cnVzdCB0aGF0IG1lbWNweSB3aWxsIG5vdCB0cmFtcGxlCisJICAgdGhlIGZwcnMuLi4gICovCisJbXIgCXIzLHIzMCA7IGRlc3QKKwlhZGRpCXI0LHIyOCxMSU5LQUdFX1NJWkUgOyBzb3VyY2UKKwkvKiBUaGUgc2l6ZSBpcyBhIHNpemVfdCwgc2hvdWxkIGJlIGxvbmcuICAqLworCWxnCXI1LDAocjI5KQorCS8qIEZpZ3VyZSBvdXQgc21hbGwgc3RydWN0cyAqLworCWNtcGkJMCxyNSw0CisJYmd0CUwzCTsgMSwgMiBhbmQgNCBieXRlcyBoYXZlIHNwZWNpYWwgcnVsZXMuCisJY21waQkwLHI1LDMKKwliZXEJTDMJOyBub3QgMworCWFkZGkJcjQscjQsOAorCXN1YmYJcjQscjUscjQKK0wzOgorCWJsCV9tZW1jcHkKKwkKKwkvKiAuLi4gZG8gd2UgbmVlZCB0aGUgRlAgcmVnaXN0ZXJzPyAtIHJlY292ZXIgdGhlIGZsYWdzLi4gKi8KKwltdGNyZgkweDAzLHIzMSA7IHdlIG5lZWQgYzYgJiBjcjcgbm93LgorCWJmCTI5LEwoZG9uZV9yZXR1cm5fdmFsdWUpCS8qIE5vIGZsb2F0cyBpbiB0aGUgc3RydWN0LiAgKi8KKwlzdGZkCWYxLCAtU0FWRV9SRUdTX1NJWkUtKDEzKkZQUl9TSVpFKShyMjgpCisJc3RmZAlmMiwgLVNBVkVfUkVHU19TSVpFLSgxMipGUFJfU0laRSkocjI4KQorCXN0ZmQJZjMsIC1TQVZFX1JFR1NfU0laRS0oMTEqRlBSX1NJWkUpKHIyOCkKKwlzdGZkCWY0LCAtU0FWRV9SRUdTX1NJWkUtKDEwKkZQUl9TSVpFKShyMjgpCisJbm9wCisJc3RmZAlmNSwgLVNBVkVfUkVHU19TSVpFLSggOSpGUFJfU0laRSkocjI4KQorCXN0ZmQJZjYsIC1TQVZFX1JFR1NfU0laRS0oIDgqRlBSX1NJWkUpKHIyOCkKKwlzdGZkCWY3LCAtU0FWRV9SRUdTX1NJWkUtKCA3KkZQUl9TSVpFKShyMjgpCisJc3RmZAlmOCwgLVNBVkVfUkVHU19TSVpFLSggNipGUFJfU0laRSkocjI4KQorCW5vcAorCXN0ZmQJZjksIC1TQVZFX1JFR1NfU0laRS0oIDUqRlBSX1NJWkUpKHIyOCkKKwlzdGZkCWYxMCwtU0FWRV9SRUdTX1NJWkUtKCA0KkZQUl9TSVpFKShyMjgpCisJc3RmZAlmMTEsLVNBVkVfUkVHU19TSVpFLSggMypGUFJfU0laRSkocjI4KQorCXN0ZmQJZjEyLC1TQVZFX1JFR1NfU0laRS0oIDIqRlBSX1NJWkUpKHIyOCkKKwlub3AKKwlzdGZkCWYxMywtU0FWRV9SRUdTX1NJWkUtKCAxKkZQUl9TSVpFKShyMjgpCisKKwltcglyMyxyMjkJOyBmZmlfdHlwZSAqCisJbXIJcjQscjMwCTsgZGVzdAorCWFkZGkJcjUscjI4LC1TQVZFX1JFR1NfU0laRS0oMTMqRlBSX1NJWkUpIDsgZnBycworCXhvcglyNixyNixyNgorCXNnCXI2LChMSU5LQUdFX1NJWkUgKyA3ICogR1BSX0JZVEVTKShyMjgpCisJYWRkaQlyNixyMjgsKExJTktBR0VfU0laRSArIDcgKiBHUFJfQllURVMpIDsgcG9pbnQgdG8gYSB6ZXJvZWQgY291bnRlci4KKwlibCAJX2RhcndpbjY0X3N0cnVjdF9mbG9hdHNfdG9fbWVtCisKKwliIEwoZG9uZV9yZXR1cm5fdmFsdWUpCisjZWxzZQorCXN0dwlyMywwKHIzMCkgOyBtMzIgdGhlIG9ubHkgc3RydWN0IHJldHVybiBpbiByZWcgaXMgNCBieXRlcy4KKyNlbmRpZgorCWIgTChkb25lX3JldHVybl92YWx1ZSkKIAogTChmcF9yZXR1cm5fdmFsdWUpOgogCS8qIERvIHdlIGhhdmUgbG9uZyBkb3VibGUgdG8gc3RvcmU/ICAqLwotCWJmCTMxLEwoZmRfcmV0dXJuX3ZhbHVlKQorCWJmCTMxLEwoZmRfcmV0dXJuX3ZhbHVlKSA7IEZMQUdfUkVUVVJOU18xMjhCSVRTCiAJc3RmZAlmMSwwKHIzMCkKLQlzdGZkCWYyLDgocjMwKQorCXN0ZmQJZjIsRlBSX1NJWkUocjMwKQogCWIJTChkb25lX3JldHVybl92YWx1ZSkKIAogTChmZF9yZXR1cm5fdmFsdWUpOgpAQCAtMTcwLDIxICsyNzMsNTcgQEAKIAlzdGZzCWYxLDAocjMwKQogCWIJTChkb25lX3JldHVybl92YWx1ZSkKIAorTChzY2FsYXJfcmV0dXJuX3ZhbHVlKToKKwlidAkyOSxMKGZwX3JldHVybl92YWx1ZSkJOyBGTEFHX1JFVFVSTlNfRlAKKwk7IGZmaV9hcmcgaXMgZGVmaW5lZCBhcyB1bnNpZ25lZCBsb25nLiAKKwlzZwlyMywwKHIzMCkJCTsgU2F2ZSB0aGUgcmVnLgorCWJmCTI4LEwoZG9uZV9yZXR1cm5fdmFsdWUpIDsgbm90IEZMQUdfUkVUVVJOU182NEJJVFMgCisKKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKK0wobWF5YmVfcmV0dXJuXzEyOCk6CisJc3RkCXIzLDAocjMwKQorCWJmCTMxLEwoZG9uZV9yZXR1cm5fdmFsdWUpIDsgbm90IEZMQUdfUkVUVVJOU18xMjhCSVRTIAorCXN0ZAlyNCw4KHIzMCkKKyNlbHNlCisJc3R3CXI0LDQocjMwKQorI2VuZGlmCisKKwkvKiBGYWxsIHRocm91Z2guICAqLworCS8qIFdlIHdhbnQgdGhpcyBhdCB0aGUgZW5kIHRvIHNpbXBsaWZ5IGVoIGVwaWxvZyBjb21wdXRhdGlvbi4gICovCisKK0woZG9uZV9yZXR1cm5fdmFsdWUpOgorCS8qIFJlc3RvcmUgdGhlIHJlZ2lzdGVycyB3ZSB1c2VkIGFuZCByZXR1cm4uICAqLworCWxnCXIyOSxTQVZFRF9MUl9PRkZTRVQocjI4KQorCTsgZXBpbG9nCisJbGcJcjMxLC0oMSAqIEdQUl9CWVRFUykocjI4KQorCW10bHIJcjI5CisJbGcJcjMwLC0oMiAqIEdQUl9CWVRFUykocjI4KQorCWxnCXIyOSwtKDMgKiBHUFJfQllURVMpKHIyOCkKKwlsZwlyMjgsLSg0ICogR1BSX0JZVEVTKShyMjgpCisJbGcJcjEsMChyMSkKKwlibHIKIExGRTE6CisJLmFsaWduCTEKIC8qIEVORChfZmZpX2NhbGxfREFSV0lOKSAgKi8KIAogLyogUHJvdmlkZSBhIG51bGwgZGVmaW5pdGlvbiBvZiBfZmZpX2NhbGxfQUlYLiAgKi8KLS50ZXh0Ci0JLmFsaWduIDIKLS5nbG9ibCBfZmZpX2NhbGxfQUlYCi0udGV4dAorCS50ZXh0CisJLmdsb2JsIF9mZmlfY2FsbF9BSVgKIAkuYWxpZ24gMgogX2ZmaV9jYWxsX0FJWDoKIAlibHIKIC8qIEVORChfZmZpX2NhbGxfQUlYKSAgKi8KIAotLmRhdGEKLS5zZWN0aW9uIF9fVEVYVCxfX2VoX2ZyYW1lLGNvYWxlc2NlZCxub190b2Mrc3RyaXBfc3RhdGljX3N5bXMKKy8qIEVIIHN0dWZmLiAgKi8KKworI2RlZmluZSBFSF9EQVRBX0FMSUdOX0ZBQ1QgTU9ERV9DSE9JQ0UoMHg3YywweDc4KQorCisJLnN0YXRpY19kYXRhCisJLmFsaWduIExPRzJfR1BSX0JZVEVTCitMTEZCMCRub25fbGF6eV9wdHI6CisJLmdfbG9uZyBMc3RhcnRjb2RlCisKKwkuc2VjdGlvbiBfX1RFWFQsX19laF9mcmFtZSxjb2FsZXNjZWQsbm9fdG9jK3N0cmlwX3N0YXRpY19zeW1zK2xpdmVfc3VwcG9ydAogRUhfZnJhbWUxOgogCS5zZXQJTCRzZXQkMCxMRUNJRTEtTFNDSUUxCiAJLmxvbmcJTCRzZXQkMAk7IExlbmd0aCBvZiBDb21tb24gSW5mb3JtYXRpb24gRW50cnkKQEAgLTE5MywxNiArMzMyLDE3IEBACiAJLmJ5dGUJMHgxCTsgQ0lFIFZlcnNpb24KIAkuYXNjaWkJInpSXDAiCTsgQ0lFIEF1Z21lbnRhdGlvbgogCS5ieXRlCTB4MQk7IHVsZWIxMjggMHgxOyBDSUUgQ29kZSBBbGlnbm1lbnQgRmFjdG9yCi0JLmJ5dGUJMHg3Ywk7IHNsZWIxMjggLTQ7IENJRSBEYXRhIEFsaWdubWVudCBGYWN0b3IKKwkuYnl0ZQlFSF9EQVRBX0FMSUdOX0ZBQ1QgOyBzbGViMTI4IC00OyBDSUUgRGF0YSBBbGlnbm1lbnQgRmFjdG9yCiAJLmJ5dGUJMHg0MQk7IENJRSBSQSBDb2x1bW4KIAkuYnl0ZQkweDEJOyB1bGViMTI4IDB4MTsgQXVnbWVudGF0aW9uIHNpemUKLQkuYnl0ZQkweDkwCTsgRkRFIEVuY29kaW5nIChpbmRpcmVjdCBwY3JlbCkKKwkuYnl0ZQkweDEwCTsgRkRFIEVuY29kaW5nIChpbmRpcmVjdCBwY3JlbCkKIAkuYnl0ZQkweGMJOyBEV19DRkFfZGVmX2NmYQogCS5ieXRlCTB4MQk7IHVsZWIxMjggMHgxCiAJLmJ5dGUJMHgwCTsgdWxlYjEyOCAweDAKIAkuYWxpZ24JTE9HMl9HUFJfQllURVMKIExFQ0lFMToKLS5nbG9ibCBfZmZpX2NhbGxfREFSV0lOLmVoCisKKwkuZ2xvYmwgX2ZmaV9jYWxsX0RBUldJTi5laAogX2ZmaV9jYWxsX0RBUldJTi5laDoKIExTRkRFMToKIAkuc2V0CUwkc2V0JDEsTEVGREUxLUxBU0ZERTEKQEAgLTIxMCwxMSArMzUwLDExIEBACiBMQVNGREUxOgogCS5sb25nCUxBU0ZERTEtRUhfZnJhbWUxIDsgRkRFIENJRSBvZmZzZXQKIAkuZ19sb25nCUxMRkIwJG5vbl9sYXp5X3B0ci0uCTsgRkRFIGluaXRpYWwgbG9jYXRpb24KLQkuc2V0CUwkc2V0JDMsTEZFMS1MRkIwCisJLnNldAlMJHNldCQzLExGRTEtTHN0YXJ0Y29kZQogCS5nX2xvbmcJTCRzZXQkMwk7IEZERSBhZGRyZXNzIHJhbmdlCiAJLmJ5dGUgICAweDAgICAgIDsgdWxlYjEyOCAweDA7IEF1Z21lbnRhdGlvbiBzaXplCiAJLmJ5dGUJMHg0CTsgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotCS5zZXQJTCRzZXQkNCxMQ0ZJMC1MRkIxCisJLnNldAlMJHNldCQ0LExDRkkwLUxzdGFydGNvZGUKIAkubG9uZwlMJHNldCQ0CiAJLmJ5dGUJMHhkCTsgRFdfQ0ZBX2RlZl9jZmFfcmVnaXN0ZXIKIAkuYnl0ZQkweDA4CTsgdWxlYjEyOCAweDA4CkBAIC0yMzksNyArMzc5LDUgQEAKIAkuYnl0ZQkweDFjCTsgdWxlYjEyOCAweDFjCiAJLmFsaWduIExPRzJfR1BSX0JZVEVTCiBMRUZERTE6Ci0uZGF0YQotCS5hbGlnbiBMT0cyX0dQUl9CWVRFUwotTExGQjAkbm9uX2xhenlfcHRyOgotCS5nX2xvbmcgTEZCMAorCS5hbGlnbiAxCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUwppbmRleCA3OTU5ODM4Li4zZjY3OTBmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TCkBAIC0xLDYgKzEsNyBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGRhcndpbl9jbG9zdXJlLlMgLSBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDMsIDIwMDQsIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSAgIEluYy4gYmFzZWQgb24gcHBjX2Nsb3N1cmUuUworICAgZGFyd2luX2Nsb3N1cmUuUyAtIENvcHlyaWdodCAoYykgMjAwMiwgMjAwMywgMjAwNCwgMjAxMCwgCisgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gCisgICBiYXNlZCBvbiBwcGNfY2xvc3VyZS5TCiAKICAgIFBvd2VyUEMgQXNzZW1ibHkgZ2x1ZS4KIApAQCAtMzMsOTEgKzM0LDE3NyBAQAogI2RlZmluZSBNT0RFX0NIT0lDRSh4LCB5KSB4CiAjZW5kaWYKIAotI2RlZmluZSBsZ3UgICAgIE1PREVfQ0hPSUNFKGx3enUsIGxkdSkKKyNkZWZpbmUgbWFjaGluZV9jaG9pY2UJTU9ERV9DSE9JQ0UocHBjNzQwMCxwcGM2NCkKIAotI2RlZmluZSBnX2xvbmcgIE1PREVfQ0hPSUNFKGxvbmcsIHF1YWQpICAgICAgICAgLyogdXNhZ2UgaXMgIi5nX2xvbmciICovCis7IERlZmluZSBzb21lIHBzZXVkby1vcGNvZGVzIGZvciBzaXplLWluZGVwZW5kZW50IGxvYWQgJiBzdG9yZSBvZiBHUFJzIC4uLgorI2RlZmluZSBsZ3UJCU1PREVfQ0hPSUNFKGx3enUsIGxkdSkKKyNkZWZpbmUgbGcJCU1PREVfQ0hPSUNFKGx3eixsZCkKKyNkZWZpbmUgc2cJCU1PREVfQ0hPSUNFKHN0dyxzdGQpCisjZGVmaW5lIHNndQkJTU9ERV9DSE9JQ0Uoc3R3dSxzdGR1KQogCi0jZGVmaW5lIExPRzJfR1BSX0JZVEVTICBNT0RFX0NIT0lDRSgyLDMpICAgICAgICAvKiBsb2cyKEdQUl9CWVRFUykgKi8KKzsgLi4uIGFuZCB0aGUgc2l6ZSBvZiBHUFJzIGFuZCB0aGVpciBzdG9yYWdlIGluZGljYXRvci4KKyNkZWZpbmUgR1BSX0JZVEVTCU1PREVfQ0hPSUNFKDQsOCkKKyNkZWZpbmUgTE9HMl9HUFJfQllURVMJTU9ERV9DSE9JQ0UoMiwzKQkvKiBsb2cyKEdQUl9CWVRFUykgKi8KKyNkZWZpbmUgZ19sb25nCQlNT0RFX0NIT0lDRShsb25nLCBxdWFkKQkvKiB1c2FnZSBpcyAiLmdfbG9uZyIgKi8KKworOyBGcm9tIHRoZSBBQkkgZG9jOiAiTWFjIE9TIFggQUJJIEZ1bmN0aW9uIENhbGwgR3VpZGUiIFZlcnNpb24gMjAwOS0wMi0wNC4KKyNkZWZpbmUgTElOS0FHRV9TSVpFCU1PREVfQ0hPSUNFKDI0LDQ4KQorI2RlZmluZSBQQVJBTV9BUkVBCU1PREVfQ0hPSUNFKDMyLDY0KQorCisjZGVmaW5lIFNBVkVEX0NSX09GRlNFVAlNT0RFX0NIT0lDRSg0LDgpCS8qIHNhdmUgcG9zaXRpb24gZm9yIENSICovCisjZGVmaW5lIFNBVkVEX0xSX09GRlNFVAlNT0RFX0NIT0lDRSg4LDE2KQkvKiBzYXZlIHBvc2l0aW9uIGZvciBsciAqLworCisvKiBXQVJOSU5HOiBpZiBmZmlfdHlwZSBpcyBjaGFuZ2VkLi4uIGhlcmUgYmUgbW9uc3RlcnMuICAKKyAgIE9mZnNldHMgb2YgaXRlbXMgd2l0aGluIHRoZSByZXN1bHQgdHlwZS4gICovCisjZGVmaW5lIEZGSV9UWVBFX1RZUEUJTU9ERV9DSE9JQ0UoNiwxMCkKKyNkZWZpbmUgRkZJX1RZUEVfRUxFTQlNT0RFX0NIT0lDRSg4LDE2KQorCisjZGVmaW5lIFNBVkVEX0ZQUl9DT1VOVCAxMworI2RlZmluZSBGUFJfU0laRQk4CisvKiBiaWdnZXN0IG02NCBzdHJ1Y3QgcmV0IGlzIDhHUFJTICsgMTNGUFJTID0gMTY4IGJ5dGVzIC0gcm91bmRlZCB0byAxNmJ5dGVzID0gMTc2LiAqLworI2RlZmluZSBSRVNVTFRfQllURVMJTU9ERV9DSE9JQ0UoMTYsMTc2KQorCis7IFRoZSB3aG9sZSBzdGFjayBmcmFtZSAqKk1VU1QqKiBiZSAxNmJ5dGUtYWxpZ25lZC4KKyNkZWZpbmUgU0FWRV9TSVpFICgoKExJTktBR0VfU0laRStQQVJBTV9BUkVBK1NBVkVEX0ZQUl9DT1VOVCpGUFJfU0laRStSRVNVTFRfQllURVMpKzE1KSAmIC0xNkxMKQorI2RlZmluZSBQQURfU0laRSAoU0FWRV9TSVpFLShMSU5LQUdFX1NJWkUrUEFSQU1fQVJFQStTQVZFRF9GUFJfQ09VTlQqRlBSX1NJWkUrUkVTVUxUX0JZVEVTKSkKKworI2RlZmluZSBQQVJFTlRfUEFSTV9CQVNFIChTQVZFX1NJWkUrTElOS0FHRV9TSVpFKQorI2RlZmluZSBGUF9TQVZFX0JBU0UgKExJTktBR0VfU0laRStQQVJBTV9BUkVBKQorCisjaWYgZGVmaW5lZChfX0VOVklST05NRU5UX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEX18pICYmIF9fRU5WSVJPTk1FTlRfTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRURfXyA+PSAxMDUwCis7IFdlIG5vIGxvbmdlciBuZWVkIHRoZSBwaWMgc3ltYm9sIHN0dWIgZm9yIERhcndpbiA+PSA5LgorI2RlZmluZSBCTENMU19IRUxQIF9mZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOCisjZGVmaW5lIFNUUlVDVF9SRVRWQUxVRV9QIF9kYXJ3aW42NF9zdHJ1Y3RfcmV0X2J5X3ZhbHVlX3AKKyNkZWZpbmUgUEFTU19TVFJfRkxPQVRTIF9kYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMKKyN1bmRlZiBXQU5UX1NUVUIKKyNlbHNlCisjZGVmaW5lIEJMQ0xTX0hFTFAgTF9mZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOJHN0dWIKKyNkZWZpbmUgU1RSVUNUX1JFVFZBTFVFX1AgTF9kYXJ3aW42NF9zdHJ1Y3RfcmV0X2J5X3ZhbHVlX3Akc3R1YgorI2RlZmluZSBQQVNTX1NUUl9GTE9BVFMgTF9kYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMkc3R1YgorI2RlZmluZSBXQU5UX1NUVUIKKyNlbmRpZgorCisvKiBtMzIvbTY0CisKKyAgIFRoZSBzdGFjayBsYXlvdXQgbG9va3MgbGlrZSB0aGlzOgorCisgICB8ICAgQWRkaXRpb25hbCBwYXJhbXMuLi4JCQl8IHwgICAgIEhpZ2hlciBhZGRyZXNzCisgICB+CQkJCQkJfiB+CisgICB8ICAgUGFyYW1ldGVycyAgICAgIChhdCBsZWFzdCA4KjQvOD0zMi82NCkJfCB8IE5VTV9HUFJfQVJHX1JFR0lTVEVSUworICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgVE9DPVIyIChBSVgpIFJlc2VydmVkIChEYXJ3aW4pICAgNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgUmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgIDIqNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgU3BhY2UgZm9yIGNhbGxlZWBzIExSCQk0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBTYXZlZCBDUiBbbG93IHdvcmQgZm9yIG02NF0gICAgICA0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBDdXJyZW50IGJhY2tjaGFpbiBwb2ludGVyCTQvOAl8LS8gUGFyZW50YHMgZnJhbWUuCisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IDwrIDw8PCBvbiBlbnRyeSB0bworICAgfCAgIFJlc3VsdCBCeXRlcwkJICAgICAgIDE2LzE3Ngl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfiAgIHBhZGRpbmcgdG8gMTYtYnl0ZSBhbGlnbm1lbnQJCX4gfgorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgTlVNX0ZQUl9BUkdfUkVHSVNURVJTIHNsb3RzCQl8IHwKKyAgIHwgICBoZXJlIGZwMTMgLi4gZnAxCQkgICAgICAgMTMqOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIFIzLi5SMTAJCQkgIDgqNC84PTMyLzY0CXwgfCBOVU1fR1BSX0FSR19SRUdJU1RFUlMKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIFRPQz1SMiAoQUlYKSBSZXNlcnZlZCAoRGFyd2luKSAgIDQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAlzdGFjawl8CisgICB8ICAgUmVzZXJ2ZWQgW2NvbXBpbGVyLGJpbmRlcl0gICAgIDIqNC84CXwgfAlncm93cwl8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwJZG93bglWCisgICB8ICAgU3BhY2UgZm9yIGNhbGxlZXMgTFIJCTQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAlsb3dlciBhZGRyZXNzZXMKKyAgIHwgICBTYXZlZCBDUiBbbG93IHdvcmQgZm9yIG02NF0gICAgICA0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwgICAgIHN0YWNrIHBvaW50ZXIgaGVyZQorICAgfCAgIEN1cnJlbnQgYmFja2NoYWluIHBvaW50ZXIJNC84CXwtLwlkdXJpbmcKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgICA8PDwJY2FsbC4KKworKi8KIAogCS5maWxlCSJkYXJ3aW5fY2xvc3VyZS5TIgotLnRleHQKLQkuYWxpZ24gTE9HMl9HUFJfQllURVMKLS5nbG9ibCBfZmZpX2Nsb3N1cmVfQVNNCiAKLS50ZXh0CisJLm1hY2hpbmUgbWFjaGluZV9jaG9pY2UKKworCS50ZXh0CisJLmdsb2JsIF9mZmlfY2xvc3VyZV9BU00KIAkuYWxpZ24gTE9HMl9HUFJfQllURVMKIF9mZmlfY2xvc3VyZV9BU006CiBMRkIxOgotCW1mbHIJcjAJCS8qIGV4dHJhY3QgcmV0dXJuIGFkZHJlc3MgICovCi0Jc3R3CXIwLDgocjEpCS8qIHNhdmUgdGhlIHJldHVybiBhZGRyZXNzICAqLworTHN0YXJ0Y29kZToKKwltZmxyCXIwCQkJLyogZXh0cmFjdCByZXR1cm4gYWRkcmVzcyAgKi8KKwlzZwlyMCxTQVZFRF9MUl9PRkZTRVQocjEpCS8qIHNhdmUgdGhlIHJldHVybiBhZGRyZXNzICAqLwogTENGSTA6Ci0JLyogMjQgQnl0ZXMgKExpbmthZ2UgQXJlYSkKLQkgICAzMiBCeXRlcyAob3V0Z29pbmcgcGFyYW1ldGVyIGFyZWEsIGFsd2F5cyByZXNlcnZlZCkKLQkgICAxMDQgQnl0ZXMgKDEzKjggZnJvbSBGUFIpCi0JICAgMTYgQnl0ZXMgKHJlc3VsdCkKLQkgICAxNzYgQnl0ZXMgICovCi0KLQlzdHd1CXIxLC0xNzYocjEpCS8qIHNraXAgb3ZlciBjYWxsZXIgc2F2ZSBhcmVhCi0JCQkJa2VlcCBzdGFjayBhbGlnbmVkIHRvIDE2LiAgKi8KKwlzZ3UJcjEsLVNBVkVfU0laRShyMSkJLyogc2tpcCBvdmVyIGNhbGxlciBzYXZlIGFyZWEKKwkJCQkJa2VlcCBzdGFjayBhbGlnbmVkIHRvIDE2LiAgKi8KIExDRkkxOgogCS8qIFdlIHdhbnQgdG8gYnVpbGQgdXAgYW4gYXJlYSBmb3IgdGhlIHBhcmFtZXRlcnMgcGFzc2VkCiAJICAgaW4gcmVnaXN0ZXJzLiAoYm90aCBmbG9hdGluZyBwb2ludCBhbmQgaW50ZWdlcikgICovCiAKLQkvKiBXZSBzdG9yZSBncHIgMyB0byBncHIgMTAgKGFsaWduZWQgdG8gNCkKLQkgICBpbiB0aGUgcGFyZW50cyBvdXRnb2luZyBhcmVhLiAgKi8KLQlzdHcgICByMywyMDAocjEpCi0Jc3R3ICAgcjQsMjA0KHIxKQotCXN0dyAgIHI1LDIwOChyMSkKLQlzdHcgICByNiwyMTIocjEpCi0Jc3R3ICAgcjcsMjE2KHIxKQotCXN0dyAgIHI4LDIyMChyMSkKLQlzdHcgICByOSwyMjQocjEpCi0Jc3R3ICAgcjEwLDIyOChyMSkKKwkvKiBQdXQgZ3ByIDMgdG8gZ3ByIDEwIGluIHRoZSBwYXJlbnRzIG91dGdvaW5nIGFyZWEuLi4KKwkgICAuLi4gdGhlIHJlbWFpbmRlciBvZiBhbnkgcGFyYW1zIHRoYXQgb3ZlcmZsb3dlZCB0aGUgcmVncyB3aWxsCisJICAgZm9sbG93IGhlcmUuICAqLworCXNnCXIzLCAoUEFSRU5UX1BBUk1fQkFTRSAgICAgICAgICAgICAgICApKHIxKQorCXNnCXI0LCAoUEFSRU5UX1BBUk1fQkFTRSArIEdQUl9CWVRFUyAgICApKHIxKQorCXNnCXI1LCAoUEFSRU5UX1BBUk1fQkFTRSArIEdQUl9CWVRFUyAqIDIpKHIxKQorCXNnCXI2LCAoUEFSRU5UX1BBUk1fQkFTRSArIEdQUl9CWVRFUyAqIDMpKHIxKQorCXNnCXI3LCAoUEFSRU5UX1BBUk1fQkFTRSArIEdQUl9CWVRFUyAqIDQpKHIxKQorCXNnCXI4LCAoUEFSRU5UX1BBUk1fQkFTRSArIEdQUl9CWVRFUyAqIDUpKHIxKQorCXNnCXI5LCAoUEFSRU5UX1BBUk1fQkFTRSArIEdQUl9CWVRFUyAqIDYpKHIxKQorCXNnCXIxMCwoUEFSRU5UX1BBUk1fQkFTRSArIEdQUl9CWVRFUyAqIDcpKHIxKQogCi0JLyogV2Ugc2F2ZSBmcHIgMSB0byBmcHIgMTMuIChhbGlnbmVkIHRvIDgpICAqLwotCXN0ZmQgIGYxLDU2KHIxKQotCXN0ZmQgIGYyLDY0KHIxKQotCXN0ZmQgIGYzLDcyKHIxKQotCXN0ZmQgIGY0LDgwKHIxKQotCXN0ZmQgIGY1LDg4KHIxKQotCXN0ZmQgIGY2LDk2KHIxKQotCXN0ZmQgIGY3LDEwNChyMSkKLQlzdGZkICBmOCwxMTIocjEpCi0Jc3RmZCAgZjksMTIwKHIxKQotCXN0ZmQgIGYxMCwxMjgocjEpCi0Jc3RmZCAgZjExLDEzNihyMSkKLQlzdGZkICBmMTIsMTQ0KHIxKQotCXN0ZmQgIGYxMywxNTIocjEpCisJLyogV2Ugc2F2ZSBmcHIgMSB0byBmcHIgMTQgaW4gb3VyIG93biBzYXZlIGZyYW1lLiAgKi8KKwlzdGZkCWYxLCAoRlBfU0FWRV9CQVNFICAgICAgICAgICAgICAgICApKHIxKQorCXN0ZmQJZjIsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgICAgICkocjEpCisJc3RmZAlmMywgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDIgKShyMSkKKwlzdGZkCWY0LCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogMyApKHIxKQorCXN0ZmQJZjUsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiA0ICkocjEpCisJc3RmZAlmNiwgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDUgKShyMSkKKwlzdGZkCWY3LCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogNiApKHIxKQorCXN0ZmQJZjgsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiA3ICkocjEpCisJc3RmZAlmOSwgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDggKShyMSkKKwlzdGZkCWYxMCwoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogOSApKHIxKQorCXN0ZmQJZjExLChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiAxMCkocjEpCisJc3RmZAlmMTIsKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDExKShyMSkKKwlzdGZkCWYxMywoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogMTIpKHIxKQogCiAJLyogU2V0IHVwIHJlZ2lzdGVycyBmb3IgdGhlIHJvdXRpbmUgdGhhdCBhY3R1YWxseSBkb2VzIHRoZSB3b3JrCiAJICAgZ2V0IHRoZSBjb250ZXh0IHBvaW50ZXIgZnJvbSB0aGUgdHJhbXBvbGluZS4gICovCi0JbXIgcjMscjExCisJbXIJcjMscjExCiAKIAkvKiBOb3cgbG9hZCB1cCB0aGUgcG9pbnRlciB0byB0aGUgcmVzdWx0IHN0b3JhZ2UuICAqLwotCWFkZGkgcjQscjEsMTYwCisJYWRkaQlyNCxyMSwoU0FWRV9TSVpFLVJFU1VMVF9CWVRFUykKIAogCS8qIE5vdyBsb2FkIHVwIHRoZSBwb2ludGVyIHRvIHRoZSBzYXZlZCBncHIgcmVnaXN0ZXJzLiAgKi8KLQlhZGRpIHI1LHIxLDIwMAorCWFkZGkJcjUscjEsUEFSRU5UX1BBUk1fQkFTRQogCiAJLyogTm93IGxvYWQgdXAgdGhlIHBvaW50ZXIgdG8gdGhlIHNhdmVkIGZwciByZWdpc3RlcnMuICAqLwotCWFkZGkgcjYscjEsNTYKKwlhZGRpCXI2LHIxLEZQX1NBVkVfQkFTRQogCiAJLyogTWFrZSB0aGUgY2FsbC4gICovCi0JYmwJTGZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4kc3R1YgorCWJsCUJMQ0xTX0hFTFAKIAotCS8qIE5vdyByMyBjb250YWlucyB0aGUgcmV0dXJuIHR5cGUKLQkgICBzbyB1c2UgaXQgdG8gbG9vayB1cCBpbiBhIHRhYmxlCisJLyogcjMgY29udGFpbnMgdGhlIHJ0eXBlIHBvaW50ZXIuLi4gc2F2ZSBpdCBzaW5jZSB3ZSB3aWxsIG5lZWQKKwkgICBpdCBsYXRlci4gICovCisJc2cJcjMsTElOS0FHRV9TSVpFKHIxKQk7IGZmaV90eXBlICogcmVzdWx0X3R5cGUKKwlsZwlyMCwwKHIzKQkJOyBzaXplID0+IHIwCisJbGh6CXIzLEZGSV9UWVBFX1RZUEUocjMpCTsgdHlwZSA9PiByMworCisJLyogVGhlIGhlbHBlciB3aWxsIGhhdmUgaW50ZXJjZXB0ZWQgc3RydXR1cmUgcmV0dXJucyBhbmQgaW5zZXJ0ZWQKKwkgICB0aGUgY2FsbGVyYHMgZGVzdGluYXRpb24gYWRkcmVzcyBmb3Igc3RydWN0cyByZXR1cm5lZCBieSByZWYuICAqLworCisJLyogcjMgY29udGFpbnMgdGhlIHJldHVybiB0eXBlICBzbyB1c2UgaXQgdG8gbG9vayB1cCBpbiBhIHRhYmxlCiAJICAgc28gd2Uga25vdyBob3cgdG8gZGVhbCB3aXRoIGVhY2ggdHlwZS4gICovCiAKLQkvKiBMb29rIHVwIHRoZSBwcm9wZXIgc3RhcnRpbmcgcG9pbnQgaW4gdGFibGUKLQkgICBieSB1c2luZyByZXR1cm4gdHlwZSBhcyBvZmZzZXQuICAqLwotCWFkZGkgIHI1LHIxLDE2MAkJICAvKiBHZXQgcG9pbnRlciB0byByZXN1bHRzIGFyZWEuICAqLwotCWJsICAgIExnZXRfcmV0X3R5cGUwX2FkZHIgLyogR2V0IHBvaW50ZXIgdG8gTHJldF90eXBlMCBpbnRvIExSLiAgKi8KLQltZmxyICByNAkJICAvKiBNb3ZlIHRvIHI0LiAgKi8KLQlzbHdpICByMyxyMyw0CQkgIC8qIE5vdyBtdWx0aXBseSByZXR1cm4gdHlwZSBieSAxNi4gICovCi0JYWRkICAgcjMscjMscjQJCSAgLyogQWRkIGNvbnRlbnRzIG9mIHRhYmxlIHRvIHRhYmxlIGFkZHJlc3MuICAqLwotCW10Y3RyIHIzCi0JYmN0cgkJCSAgLyogSnVtcCB0byBpdC4gICovCisJYWRkaQlyNSxyMSwoU0FWRV9TSVpFLVJFU1VMVF9CWVRFUykgLyogT3RoZXJ3aXNlLCBvdXIgcmV0dXJuIGlzIGhlcmUuICAqLworCWJsCUxnZXRfcmV0X3R5cGUwX2FkZHIJLyogR2V0IHBvaW50ZXIgdG8gTHJldF90eXBlMCBpbnRvIExSLiAgKi8KKwltZmxyCXI0CQkJLyogTW92ZSB0byByNC4gICovCisJc2x3aQlyMyxyMyw0CQkJLyogTm93IG11bHRpcGx5IHJldHVybiB0eXBlIGJ5IDE2LiAgKi8KKwlhZGQJcjMscjMscjQJCS8qIEFkZCBjb250ZW50cyBvZiB0YWJsZSB0byB0YWJsZSBhZGRyZXNzLiAgKi8KKwltdGN0cglyMworCWJjdHIJCQkgCSAvKiBKdW1wIHRvIGl0LiAgKi8KIExGRTE6CiAvKiBFYWNoIG9mIHRoZSByZXRfdHlwZVggY29kZSBmcmFnbWVudHMgaGFzIHRvIGJlIGV4YWN0bHkgMTYgYnl0ZXMgbG9uZwogICAgKDQgaW5zdHJ1Y3Rpb25zKS4gRm9yIGNhY2hlIGVmZmVjdGl2ZW5lc3Mgd2UgYWxpZ24gdG8gYSAxNiBieXRlIGJvdW5kYXJ5CkBAIC0xNDAsNyArMjI3LDcgQEAKIAogLyogY2FzZSBGRklfVFlQRV9JTlQgICovCiBMcmV0X3R5cGUxOgotCWx3eglyMywwKHI1KQorCWxnCXIzLDAocjUpCiAJYglMZmluaXNoCiAJbm9wCiAJbm9wCkBAIC0xNjgsODUgKzI1NSwyMjQgQEAKIAogLyogY2FzZSBGRklfVFlQRV9VSU5UOCAgKi8KIExyZXRfdHlwZTU6CisjaWYgZGVmaW5lZChfX3BwYzY0X18pCisJbGJ6CXIzLDcocjUpCisjZWxzZQogCWxieglyMywzKHI1KQorI2VuZGlmCiAJYglMZmluaXNoCiAJbm9wCiAJbm9wCiAKIC8qIGNhc2UgRkZJX1RZUEVfU0lOVDggICovCiBMcmV0X3R5cGU2OgorI2lmIGRlZmluZWQoX19wcGM2NF9fKQorCWxieglyMyw3KHI1KQorI2Vsc2UKIAlsYnoJcjMsMyhyNSkKKyNlbmRpZgogCWV4dHNiCXIzLHIzCiAJYglMZmluaXNoCiAJbm9wCiAKIC8qIGNhc2UgRkZJX1RZUEVfVUlOVDE2ICAqLwogTHJldF90eXBlNzoKKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKKwlsaHoJcjMsNihyNSkKKyNlbHNlCiAJbGh6CXIzLDIocjUpCisjZW5kaWYKIAliCUxmaW5pc2gKIAlub3AKIAlub3AKIAogLyogY2FzZSBGRklfVFlQRV9TSU5UMTYgICovCiBMcmV0X3R5cGU4OgorI2lmIGRlZmluZWQoX19wcGM2NF9fKQorCWxoYQlyMyw2KHI1KQorI2Vsc2UKIAlsaGEJcjMsMihyNSkKKyNlbmRpZgogCWIJTGZpbmlzaAogCW5vcAogCW5vcAogCiAvKiBjYXNlIEZGSV9UWVBFX1VJTlQzMiAgKi8KIExyZXRfdHlwZTk6CisjaWYgZGVmaW5lZChfX3BwYzY0X18pCisJbHd6CXIzLDQocjUpCisjZWxzZQogCWx3eglyMywwKHI1KQorI2VuZGlmCiAJYglMZmluaXNoCiAJbm9wCiAJbm9wCiAKIC8qIGNhc2UgRkZJX1RZUEVfU0lOVDMyICAqLwogTHJldF90eXBlMTA6CisjaWYgZGVmaW5lZChfX3BwYzY0X18pCisJbHd6CXIzLDQocjUpCisjZWxzZQogCWx3eglyMywwKHI1KQorI2VuZGlmCiAJYglMZmluaXNoCiAJbm9wCiAJbm9wCiAKIC8qIGNhc2UgRkZJX1RZUEVfVUlOVDY0ICAqLwogTHJldF90eXBlMTE6CisjaWYgZGVmaW5lZChfX3BwYzY0X18pCisJbGcJcjMsMChyNSkKKwliCUxmaW5pc2gKKwlub3AKKyNlbHNlCiAJbHd6CXIzLDAocjUpCiAJbHd6CXI0LDQocjUpCiAJYglMZmluaXNoCisjZW5kaWYKIAlub3AKIAogLyogY2FzZSBGRklfVFlQRV9TSU5UNjQgICovCiBMcmV0X3R5cGUxMjoKKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKKwlsZwlyMywwKHI1KQorCWIJTGZpbmlzaAorCW5vcAorI2Vsc2UKIAlsd3oJcjMsMChyNSkKIAlsd3oJcjQsNChyNSkKIAliCUxmaW5pc2gKKyNlbmRpZgogCW5vcAogCiAvKiBjYXNlIEZGSV9UWVBFX1NUUlVDVCAgKi8KIExyZXRfdHlwZTEzOgorI2lmIGRlZmluZWQoX19wcGM2NF9fKQorCWxnCXIzLDAocjUpCQk7IHdlIG5lZWQgYXQgbGVhc3QgdGhpcy4uLgorCWNtcGkJMCxyMCw0CisJYmd0CUxzdHJ1Y3RlbmQJCTsgbm90IGEgc3BlY2lhbCBzbWFsbCBjYXNlCisJYglMc21hbGxzdHJ1Y3QJCTsgc2VlIGlmIHdlIG5lZWQgbW9yZS4KKyNlbHNlCisJY21waQkwLHIwLDQKKwliZ3QJTGZpbmlzaAkJOyBub3QgYnkgdmFsdWUKKwlsZwlyMywwKHI1KQogCWIJTGZpbmlzaAotCW5vcAorI2VuZGlmCisvKiBjYXNlIEZGSV9UWVBFX1BPSU5URVIgICovCitMcmV0X3R5cGUxNDoKKwlsZwlyMywwKHI1KQorCWIJTGZpbmlzaAogCW5vcAogCW5vcAogCi0vKiBjYXNlIEZGSV9UWVBFX1BPSU5URVIgICovCi1McmV0X3R5cGUxNDoKLQlsd3oJcjMsMChyNSkKLQliCUxmaW5pc2gKLQlub3AKLQlub3AKKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKK0xzbWFsbHN0cnVjdDoKKwliZXEJTGZvdXIJCQk7IGNvbnRpbnVhdGlvbiBvZiBMcmV0MTMuCisJY21waQkwLHIwLDMKKwliZXEJTGZpbmlzaAkJCTsgZG9uYHQgYWRqdXN0IHRoaXMgLSBjYW5gdCBiZSBhbnkgZmxvYXRzIGhlcmUuLi4KKwlzcmRpCXIzLHIzLDQ4CisJY21waQkwLHIwLDIKKwliZXEJTGZpbmlzaAkJCTsgLi4gb3IgaGVyZSAuLgorCXNyZGkJcjMscjMsOAorCWIgCUxmaW5pc2gJCQk7IC4uIG9yIGhlcmUuCisKK0xmb3VyOgorCWxnCXI2LExJTktBR0VfU0laRShyMSkJOyBnZXQgdGhlIHJlc3VsdCB0eXBlCisJbGcJcjYsRkZJX1RZUEVfRUxFTShyNikJOyBlbGVtZW50cyBhcnJheSBwb2ludGVyCisJbGcJcjYsMChyNikJCTsgZmlyc3QgZWxlbWVudAorCWxoeglyMCxGRklfVFlQRV9UWVBFKHI2KQk7IE9LIGdvIHRoZSB0eXBlCisJY21waQkwLHIwLDIJCQk7IEZGSV9UWVBFX0ZMT0FUCisJYm5lCUxmb3VyaW50CisJbGZzCWYxLDAocjUpCQk7IGp1c3Qgb25lIGZsb2F0IGluIHRoZSBzdHJ1Y3QuCisJYiAJTGZpbmlzaAorCitMZm91cmludDoKKwlzcmRpCXIzLHIzLDMyCQk7IGZvdXIgYnl0ZXMuCisJYiAJTGZpbmlzaAorCitMc3RydWN0ZW5kOgorCWxnCXIzLExJTktBR0VfU0laRShyMSkJOyBnZXQgdGhlIHJlc3VsdCB0eXBlCisJYmwJU1RSVUNUX1JFVFZBTFVFX1AKKwljbXBpCTAscjMsMAorCWJlcQlMZmluaXNoCQkJOyBub3BlLgorCS8qIFJlY292ZXIgYSBwb2ludGVyIHRvIHRoZSByZXN1bHRzLiAgKi8KKwlhZGRpCXIxMSxyMSwoU0FWRV9TSVpFLVJFU1VMVF9CWVRFUykKKwlsZwlyMywwKHIxMSkJCTsgd2UgbmVlZCBhdCBsZWFzdCB0aGlzLi4uCisJbGcJcjQsOChyMTEpCisJY21waQkwLHIwLDE2CisJYmVxCUxmaW5pc2gJCTsgc3BlY2lhbCBjYXNlIDE2IGJ5dGVzIHdlIGRvbid0IGNvbnNpZGVyIGZsb2F0cy4KKworCS8qIE9LLCBmcnVzdHJhdGluZ2x5LCB0aGUgcHJvY2VzcyBvZiBzYXZpbmcgdGhlIHN0cnVjdCB0byBtZW0gbWlnaHQgaGF2ZQorCSAgIG1lc3NlZCB3aXRoIHRoZSBGUFJzLCBzbyB3ZSBoYXZlIHRvIHJlLWxvYWQgdGhlbSA6KC4KKwkgICBXZWBsbCB1c2Ugb3VyIEZQUnMgc3BhY2UgYWdhaW4gLSBjYWxsaW5nOiAKKwkgICB2b2lkIGRhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cyAoZmZpX3R5cGUgKnMsIGNoYXIgKnNyYywgCisJCQkJCSAgICAgdW5zaWduZWQgKm5mcHIsIGRvdWJsZSAqKmZwcnMpIAorCSAgIFdlYGxsIHRlbXBvcmFyaWx5IHBpbmNoIHRoZSBmaXJzdCB0d28gc2xvdHMgb2YgdGhlIHBhcmFtIGFyZWEgZm9yIGxvY2FsCisJICAgdmFycyB1c2VkIGJ5IHRoZSByb3V0aW5lLiAgKi8KKwl4b3IJcjYscjYscjYKKwlhZGRpCXI1LHIxLFBBUkVOVF9QQVJNX0JBU0UJCTsgc29tZSBzcGFjZQorCXNnCXI2LDAocjUpCQkJOyAqbmZwciB6ZXJvZWQuCisJYWRkaQlyNixyNSw4CQkJCTsgKipmcHJzCisJYWRkaQlyMyxyMSxGUF9TQVZFX0JBU0UJCTsgcG9pbnRlciB0byBGUFJzIHNwYWNlCisJc2cJcjMsMChyNikKKwltcglyNCxyMTEJCQkJOyB0aGUgc3RydWN0IGlzIGhlcmUuLi4KKwlsZwlyMyxMSU5LQUdFX1NJWkUocjEpCQk7IGZmaV90eXBlICogcmVzdWx0X3R5cGUuCisJYmwJUEFTU19TVFJfRkxPQVRTCQkJOyBnZXQgc3RydWN0IGZsb2F0cyBpbnRvIEZQUiBzYXZlIHNwYWNlLgorCS8qIFNlZSBpZiB3ZSB1c2VkIGFueSBmbG9hdHMgICovCisJbHd6CXIwLChTQVZFX1NJWkUtUkVTVUxUX0JZVEVTKShyMSkJCisJY21waQkwLHIwLDAKKwliZXEJTHN0cnVjdGludHMJCQk7IG5vcGUuCisJLyogT0sgbG9hZCBgZW0gdXAuLi4gKi8KKwlsZmQJZjEsIChGUF9TQVZFX0JBU0UgICAgICAgICAgICAgICAgICkocjEpCisJbGZkCWYyLCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICAgICApKHIxKQorCWxmZAlmMywgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDIgKShyMSkKKwlsZmQJZjQsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiAzICkocjEpCisJbGZkCWY1LCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogNCApKHIxKQorCWxmZAlmNiwgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDUgKShyMSkKKwlsZmQJZjcsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiA2ICkocjEpCisJbGZkCWY4LCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogNyApKHIxKQorCWxmZAlmOSwgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDggKShyMSkKKwlsZmQJZjEwLChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiA5ICkocjEpCisJbGZkCWYxMSwoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogMTApKHIxKQorCWxmZAlmMTIsKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDExKShyMSkKKwlsZmQJZjEzLChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiAxMikocjEpCisKKwkvKiBwb2ludCBiYWNrIGF0IG91ciBzYXZlZCBzdHJ1Y3QuICAqLworTHN0cnVjdGludHM6CisJYWRkaQlyMTEscjEsKFNBVkVfU0laRS1SRVNVTFRfQllURVMpCisJbGcJcjMsMChyMTEpCQkJOyB3ZSBlbmQgdXAgcGlja2luZyB0aGUKKwlsZwlyNCw4KHIxMSkJCQk7IGZpcnN0IHR3byBhZ2Fpbi4KKwlsZwlyNSwxNihyMTEpCisJbGcJcjYsMjQocjExKQorCWxnCXI3LDMyKHIxMSkKKwlsZwlyOCw0MChyMTEpCisJbGcJcjksNDgocjExKQorCWxnCXIxMCw1NihyMTEpCisjZW5kaWYKIAogLyogY2FzZSBkb25lICAqLwogTGZpbmlzaDoKLQlhZGRpCXIxLHIxLDE3NgkvKiBSZXN0b3JlIHN0YWNrIHBvaW50ZXIuICAqLwotCWx3eglyMCw4KHIxKQkvKiBHZXQgcmV0dXJuIGFkZHJlc3MuICAqLwotCW10bHIJcjAJCS8qIFJlc2V0IGxpbmsgcmVnaXN0ZXIuICAqLworCWFkZGkJcjEscjEsU0FWRV9TSVpFCQkvKiBSZXN0b3JlIHN0YWNrIHBvaW50ZXIuICAqLworCWxnCXIwLFNBVkVEX0xSX09GRlNFVChyMSkJLyogR2V0IHJldHVybiBhZGRyZXNzLiAgKi8KKwltdGxyCXIwCQkJLyogUmVzZXQgbGluayByZWdpc3Rlci4gICovCiAJYmxyCi0KK0xlbmRjb2RlOgorCS5hbGlnbiAxCisJCiAvKiBFTkQoZmZpX2Nsb3N1cmVfQVNNKSAgKi8KIAotLmRhdGEKLS5zZWN0aW9uIF9fVEVYVCxfX2VoX2ZyYW1lLGNvYWxlc2NlZCxub190b2Mrc3RyaXBfc3RhdGljX3N5bXMrbGl2ZV9zdXBwb3J0CisvKiBFSCBmcmFtZSBzdHVmZi4gICovCisjZGVmaW5lIEVIX0RBVEFfQUxJR05fRkFDVCBNT0RFX0NIT0lDRSgweDdjLDB4NzgpCisvKiAxNzYsIDQwMCAqLworI2RlZmluZSBFSF9GUkFNRV9PRkZTRVRBIE1PREVfQ0hPSUNFKDE3NiwweDkwKQorI2RlZmluZSBFSF9GUkFNRV9PRkZTRVRCIE1PREVfQ0hPSUNFKDEsMykKKworCS5zdGF0aWNfZGF0YQorCS5hbGlnbiBMT0cyX0dQUl9CWVRFUworTExGQjEkbm9uX2xhenlfcHRyOgorCS5nX2xvbmcgTHN0YXJ0Y29kZQorCisJLnNlY3Rpb24gX19URVhULF9fZWhfZnJhbWUsY29hbGVzY2VkLG5vX3RvYytzdHJpcF9zdGF0aWNfc3ltcytsaXZlX3N1cHBvcnQKIEVIX2ZyYW1lMToKIAkuc2V0CUwkc2V0JDAsTEVDSUUxLUxTQ0lFMQogCS5sb25nCUwkc2V0JDAJOyBMZW5ndGggb2YgQ29tbW9uIEluZm9ybWF0aW9uIEVudHJ5CkBAIC0yNTUsMTYgKzQ4MSwxNiBAQAogCS5ieXRlCTB4MQk7IENJRSBWZXJzaW9uCiAJLmFzY2lpCSJ6UlwwIgk7IENJRSBBdWdtZW50YXRpb24KIAkuYnl0ZQkweDEJOyB1bGViMTI4IDB4MTsgQ0lFIENvZGUgQWxpZ25tZW50IEZhY3RvcgotCS5ieXRlCTB4N2MJOyBzbGViMTI4IC00OyBDSUUgRGF0YSBBbGlnbm1lbnQgRmFjdG9yCisJLmJ5dGUJRUhfREFUQV9BTElHTl9GQUNUIDsgc2xlYjEyOCAtNDsgQ0lFIERhdGEgQWxpZ25tZW50IEZhY3RvcgogCS5ieXRlCTB4NDEJOyBDSUUgUkEgQ29sdW1uCiAJLmJ5dGUJMHgxCTsgdWxlYjEyOCAweDE7IEF1Z21lbnRhdGlvbiBzaXplCi0JLmJ5dGUJMHg5MAk7IEZERSBFbmNvZGluZyAoaW5kaXJlY3QgcGNyZWwpCisJLmJ5dGUJMHgxMAk7IEZERSBFbmNvZGluZyAoaW5kaXJlY3QgcGNyZWwpCiAJLmJ5dGUJMHhjCTsgRFdfQ0ZBX2RlZl9jZmEKIAkuYnl0ZQkweDEJOyB1bGViMTI4IDB4MQogCS5ieXRlCTB4MAk7IHVsZWIxMjggMHgwCiAJLmFsaWduCUxPRzJfR1BSX0JZVEVTCiBMRUNJRTE6Ci0uZ2xvYmwgX2ZmaV9jbG9zdXJlX0FTTS5laAorCS5nbG9ibCBfZmZpX2Nsb3N1cmVfQVNNLmVoCiBfZmZpX2Nsb3N1cmVfQVNNLmVoOgogTFNGREUxOgogCS5zZXQJTCRzZXQkMSxMRUZERTEtTEFTRkRFMQpAQCAtMjczLDQ1ICs0OTksNzggQEAKIExBU0ZERTE6CiAJLmxvbmcJTEFTRkRFMS1FSF9mcmFtZTEJOyBGREUgQ0lFIG9mZnNldAogCS5nX2xvbmcJTExGQjEkbm9uX2xhenlfcHRyLS4JOyBGREUgaW5pdGlhbCBsb2NhdGlvbgotCS5zZXQJTCRzZXQkMyxMRkUxLUxGQjEKKwkuc2V0CUwkc2V0JDMsTEZFMS1Mc3RhcnRjb2RlCiAJLmdfbG9uZwlMJHNldCQzCTsgRkRFIGFkZHJlc3MgcmFuZ2UKIAkuYnl0ZSAgIDB4MCAgICAgOyB1bGViMTI4IDB4MDsgQXVnbWVudGF0aW9uIHNpemUKIAkuYnl0ZQkweDQJOyBEV19DRkFfYWR2YW5jZV9sb2M0CiAJLnNldAlMJHNldCQzLExDRkkxLUxDRkkwCiAJLmxvbmcJTCRzZXQkMwogCS5ieXRlCTB4ZQk7IERXX0NGQV9kZWZfY2ZhX29mZnNldAotCS5ieXRlCTE3NiwxCTsgdWxlYjEyOCAxNzYKKwkuYnl0ZQlFSF9GUkFNRV9PRkZTRVRBLEVIX0ZSQU1FX09GRlNFVEIJOyB1bGViMTI4IDE3NiwxLzE5MCwzCiAJLmJ5dGUJMHg0CTsgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotCS5zZXQJTCRzZXQkNCxMQ0ZJMC1MRkIxCisJLnNldAlMJHNldCQ0LExDRkkwLUxzdGFydGNvZGUKIAkubG9uZwlMJHNldCQ0CiAJLmJ5dGUgICAweDExICAgIDsgRFdfQ0ZBX29mZnNldF9leHRlbmRlZF9zZgogCS5ieXRlCTB4NDEJOyB1bGViMTI4IDB4NDEKIAkuYnl0ZSAgIDB4N2UgICAgOyBzbGViMTI4IC0yCiAJLmFsaWduCUxPRzJfR1BSX0JZVEVTCiBMRUZERTE6Ci0uZGF0YQotCS5hbGlnbglMT0cyX0dQUl9CWVRFUwotTERGQ00wOgotLnNlY3Rpb24gX19URVhULF9fcGljc3ltYm9sc3R1YjEsc3ltYm9sX3N0dWJzLHB1cmVfaW5zdHJ1Y3Rpb25zLDMyCi0JLmFsaWduCUxPRzJfR1BSX0JZVEVTCi1MZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiRzdHViOgotI2lmIDEKKwkuYWxpZ24gCTEKKworI2lmZGVmIFdBTlRfU1RVQgorCS5zZWN0aW9uIF9fVEVYVCxfX3BpY3N5bWJvbHN0dWIxLHN5bWJvbF9zdHVicyxwdXJlX2luc3RydWN0aW9ucywzMgorCS5hbGlnbiA1CitMX2ZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4kc3R1YjoKIAkuaW5kaXJlY3Rfc3ltYm9sIF9mZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOCi0JbWZscglyMAotCWJjbAkyMCwzMSxMTyRmZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOCi1MTyRmZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOOgotCW1mbHIJcjExCi0JYWRkaXMJcjExLHIxMSxoYTE2KExfZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiRsYXp5X3B0ciAtIExPJGZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4pCi0JbXRscglyMAotCWxndQlyMTIsbG8xNihMX2ZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4kbGF6eV9wdHIgLSBMTyRmZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOKShyMTEpCi0JbXRjdHIJcjEyCisJbWZsciByMAorCWJjbCAyMCwzMSwiTDAwMDAwMDAwMDAxJHNwYiIKKyJMMDAwMDAwMDAwMDEkc3BiIjoKKwltZmxyIHIxMQorCWFkZGlzIHIxMSxyMTEsaGExNihMX2ZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4kbGF6eV9wdHItIkwwMDAwMDAwMDAwMSRzcGIiKQorCW10bHIgcjAKKwlsd3p1IHIxMixsbzE2KExfZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiRsYXp5X3B0ci0iTDAwMDAwMDAwMDAxJHNwYiIpKHIxMSkKKwltdGN0ciByMTIKIAliY3RyCi0ubGF6eV9zeW1ib2xfcG9pbnRlcgorCS5sYXp5X3N5bWJvbF9wb2ludGVyCiBMX2ZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4kbGF6eV9wdHI6CiAJLmluZGlyZWN0X3N5bWJvbCBfZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTgotCS5nX2xvbmcgZHlsZF9zdHViX2JpbmRpbmdfaGVscGVyCisJLmdfbG9uZwlkeWxkX3N0dWJfYmluZGluZ19oZWxwZXIKKworI2lmIGRlZmluZWQoX19wcGM2NF9fKQorCS5zZWN0aW9uIF9fVEVYVCxfX3BpY3N5bWJvbHN0dWIxLHN5bWJvbF9zdHVicyxwdXJlX2luc3RydWN0aW9ucywzMgorCS5hbGlnbiA1CitMX2RhcndpbjY0X3N0cnVjdF9yZXRfYnlfdmFsdWVfcCRzdHViOgorCS5pbmRpcmVjdF9zeW1ib2wgX2RhcndpbjY0X3N0cnVjdF9yZXRfYnlfdmFsdWVfcAorCW1mbHIgcjAKKwliY2wgMjAsMzEsIkwwMDAwMDAwMDAwMiRzcGIiCisiTDAwMDAwMDAwMDAyJHNwYiI6CisJbWZsciByMTEKKwlhZGRpcyByMTEscjExLGhhMTYoTF9kYXJ3aW42NF9zdHJ1Y3RfcmV0X2J5X3ZhbHVlX3AkbGF6eV9wdHItIkwwMDAwMDAwMDAwMiRzcGIiKQorCW10bHIgcjAKKwlsd3p1IHIxMixsbzE2KExfZGFyd2luNjRfc3RydWN0X3JldF9ieV92YWx1ZV9wJGxhenlfcHRyLSJMMDAwMDAwMDAwMDIkc3BiIikocjExKQorCW10Y3RyIHIxMgorCWJjdHIKKwkubGF6eV9zeW1ib2xfcG9pbnRlcgorTF9kYXJ3aW42NF9zdHJ1Y3RfcmV0X2J5X3ZhbHVlX3AkbGF6eV9wdHI6CisJLmluZGlyZWN0X3N5bWJvbCBfZGFyd2luNjRfc3RydWN0X3JldF9ieV92YWx1ZV9wCisJLmdfbG9uZwlkeWxkX3N0dWJfYmluZGluZ19oZWxwZXIKKworCS5zZWN0aW9uIF9fVEVYVCxfX3BpY3N5bWJvbHN0dWIxLHN5bWJvbF9zdHVicyxwdXJlX2luc3RydWN0aW9ucywzMgorCS5hbGlnbiA1CitMX2RhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cyRzdHViOgorCS5pbmRpcmVjdF9zeW1ib2wgX2RhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cworCW1mbHIgcjAKKwliY2wgMjAsMzEsIkwwMDAwMDAwMDAwMyRzcGIiCisiTDAwMDAwMDAwMDAzJHNwYiI6CisJbWZsciByMTEKKwlhZGRpcyByMTEscjExLGhhMTYoTF9kYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMkbGF6eV9wdHItIkwwMDAwMDAwMDAwMyRzcGIiKQorCW10bHIgcjAKKwlsd3p1IHIxMixsbzE2KExfZGFyd2luNjRfcGFzc19zdHJ1Y3RfZmxvYXRzJGxhenlfcHRyLSJMMDAwMDAwMDAwMDMkc3BiIikocjExKQorCW10Y3RyIHIxMgorCWJjdHIKKwkubGF6eV9zeW1ib2xfcG9pbnRlcgorTF9kYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMkbGF6eV9wdHI6CisJLmluZGlyZWN0X3N5bWJvbCBfZGFyd2luNjRfcGFzc19zdHJ1Y3RfZmxvYXRzCisJLmdfbG9uZwlkeWxkX3N0dWJfYmluZGluZ19oZWxwZXIKKyMgIGVuZGlmCiAjZW5kaWYKLS5kYXRhCi0JLmFsaWduIExPRzJfR1BSX0JZVEVTCi1MTEZCMSRub25fbGF6eV9wdHI6Ci0JLmdfbG9uZyBMRkIxCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9mZmkuYwppbmRleCA3NTc4NGE5Li5iYWNhNjk0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZmZpLmMKQEAgLTEsNyArMSw5IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTggR2VvZmZyZXkgS2VhdGluZwotICAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jCi0gICBDb3B5cmlnaHQgKEMpIDIwMDggUmVkIEhhdCwgSW5jCisgICBmZmkuYyAtIENvcHlyaWdodCAoQykgMjAxMSBBbnRob255IEdyZWVuCisgICAgICAgICAgIENvcHlyaWdodCAoQykgMjAxMSBLeWxlIE1vZmZldHQKKyAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDA4IFJlZCBIYXQsIEluYworICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMKKwkgICBDb3B5cmlnaHQgKGMpIDE5OTggR2VvZmZyZXkgS2VhdGluZwogCiAgICBQb3dlclBDIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlCiAKQEAgLTM5LDMyICs0MSwyOCBAQAogICAvKiBUaGUgYXNzZW1ibHkgZGVwZW5kcyBvbiB0aGVzZSBleGFjdCBmbGFncy4gICovCiAgIEZMQUdfUkVUVVJOU19TTVNUCT0gMSA8PCAoMzEtMzEpLCAvKiBVc2VkIGZvciBGRklfU1lTViBzbWFsbCBzdHJ1Y3RzLiAgKi8KICAgRkxBR19SRVRVUk5TX05PVEhJTkcgID0gMSA8PCAoMzEtMzApLCAvKiBUaGVzZSBnbyBpbiBjcjcgKi8KKyNpZm5kZWYgX19OT19GUFJTX18KICAgRkxBR19SRVRVUk5TX0ZQICAgICAgID0gMSA8PCAoMzEtMjkpLAorI2VuZGlmCiAgIEZMQUdfUkVUVVJOU182NEJJVFMgICA9IDEgPDwgKDMxLTI4KSwKIAogICBGTEFHX1JFVFVSTlNfMTI4QklUUyAgPSAxIDw8ICgzMS0yNyksIC8qIGNyNiAgKi8KLSAgRkxBR19TWVNWX1NNU1RfUjQgICAgID0gMSA8PCAoMzEtMjYpLCAvKiB1c2UgcjQgZm9yIEZGSV9TWVNWIDggYnl0ZQotCQkJCQkgICBzdHJ1Y3RzLiAgKi8KLSAgRkxBR19TWVNWX1NNU1RfUjMgICAgID0gMSA8PCAoMzEtMjUpLCAvKiB1c2UgcjMgZm9yIEZGSV9TWVNWIDQgYnl0ZQotCQkJCQkgICBzdHJ1Y3RzLiAgKi8KLSAgLyogQml0cyAoMzEtMjQpIHRocm91Z2ggKDMxLTE5KSBzdG9yZSBzaGlmdCB2YWx1ZSBmb3IgU01TVCAqLwogCiAgIEZMQUdfQVJHX05FRURTX0NPUFkgICA9IDEgPDwgKDMxLSA3KSwKKyNpZm5kZWYgX19OT19GUFJTX18KICAgRkxBR19GUF9BUkdVTUVOVFMgICAgID0gMSA8PCAoMzEtIDYpLCAvKiBjcjEuZXE7IHNwZWNpZmllZCBieSBBQkkgKi8KKyNlbmRpZgogICBGTEFHXzRfR1BSX0FSR1VNRU5UUyAgPSAxIDw8ICgzMS0gNSksCiAgIEZMQUdfUkVUVkFMX1JFRkVSRU5DRSA9IDEgPDwgKDMxLSA0KQogfTsKIAogLyogQWJvdXQgdGhlIFNZU1YgQUJJLiAgKi8KLXVuc2lnbmVkIGludCBOVU1fR1BSX0FSR19SRUdJU1RFUlMgPSA4OworI2RlZmluZSBBU01fTkVFRFNfUkVHSVNURVJTIDQKKyNkZWZpbmUgTlVNX0dQUl9BUkdfUkVHSVNURVJTIDgKICNpZm5kZWYgX19OT19GUFJTX18KLXVuc2lnbmVkIGludCBOVU1fRlBSX0FSR19SRUdJU1RFUlMgPSA4OwotI2Vsc2UKLXVuc2lnbmVkIGludCBOVU1fRlBSX0FSR19SRUdJU1RFUlMgPSAwOworIyBkZWZpbmUgTlVNX0ZQUl9BUkdfUkVHSVNURVJTIDgKICNlbmRpZgogCi1lbnVtIHsgQVNNX05FRURTX1JFR0lTVEVSUyA9IDQgfTsKLQogLyogZmZpX3ByZXBfYXJnc19TWVNWIGlzIGNhbGxlZCBieSB0aGUgYXNzZW1ibHkgcm91dGluZSBvbmNlIHN0YWNrIHNwYWNlCiAgICBoYXMgYmVlbiBhbGxvY2F0ZWQgZm9yIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cy4KIApAQCAtMTEzLDEwICsxMTEsMTIgQEAKICAgdmFscCBncHJfYmFzZTsKICAgaW50IGludGFyZ19jb3VudDsKIAorI2lmbmRlZiBfX05PX0ZQUlNfXwogICAvKiAnZnByX2Jhc2UnIHBvaW50cyBhdCB0aGUgc3BhY2UgZm9yIGZwcjEsIGFuZCBncm93cyB1cHdhcmRzIGFzCiAgICAgIHdlIHVzZSBGUFIgcmVnaXN0ZXJzLiAgKi8KICAgdmFscCBmcHJfYmFzZTsKICAgaW50IGZwYXJnX2NvdW50OworI2VuZGlmCiAKICAgLyogJ2NvcHlfc3BhY2UnIGdyb3dzIGRvd24gYXMgd2UgcHV0IHN0cnVjdHVyZXMgaW4gaXQuICBJdCBzaG91bGQKICAgICAgc3RheSAxNi1ieXRlIGFsaWduZWQuICAqLwpAQCAtMTI1LDkgKzEyNSw4IEBACiAgIC8qICduZXh0X2FyZycgZ3Jvd3MgdXAgYXMgd2UgcHV0IHBhcmFtZXRlcnMgaW4gaXQuICAqLwogICB2YWxwIG5leHRfYXJnOwogCi0gIGludCBpLCBpaSBNQVlCRV9VTlVTRUQ7CisgIGludCBpOwogICBmZmlfdHlwZSAqKnB0cjsKLSAgZG91YmxlIGRvdWJsZV90bXA7CiAgIHVuaW9uIHsKICAgICB2b2lkICoqdjsKICAgICBjaGFyICoqYzsKQEAgLTE0MywyMSArMTQyLDIzIEBACiAgIHNpemVfdCBzdHJ1Y3RfY29weV9zaXplOwogICB1bnNpZ25lZCBncHJ2YWx1ZTsKIAotICBpZiAoZWNpZi0+Y2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0gICAgTlVNX0ZQUl9BUkdfUkVHSVNURVJTID0gMDsKLQogICBzdGFja3RvcC5jID0gKGNoYXIgKikgc3RhY2sgKyBieXRlczsKICAgZ3ByX2Jhc2UudSA9IHN0YWNrdG9wLnUgLSBBU01fTkVFRFNfUkVHSVNURVJTIC0gTlVNX0dQUl9BUkdfUkVHSVNURVJTOwogICBpbnRhcmdfY291bnQgPSAwOworI2lmbmRlZiBfX05PX0ZQUlNfXworICBkb3VibGUgZG91YmxlX3RtcDsKICAgZnByX2Jhc2UuZCA9IGdwcl9iYXNlLmQgLSBOVU1fRlBSX0FSR19SRUdJU1RFUlM7CiAgIGZwYXJnX2NvdW50ID0gMDsKICAgY29weV9zcGFjZS5jID0gKChmbGFncyAmIEZMQUdfRlBfQVJHVU1FTlRTKSA/IGZwcl9iYXNlLmMgOiBncHJfYmFzZS5jKTsKKyNlbHNlCisgIGNvcHlfc3BhY2UuYyA9IGdwcl9iYXNlLmM7CisjZW5kaWYKICAgbmV4dF9hcmcudSA9IHN0YWNrICsgMjsKIAogICAvKiBDaGVjayB0aGF0IGV2ZXJ5dGhpbmcgc3RhcnRzIGFsaWduZWQgcHJvcGVybHkuICAqLwotICBGRklfQVNTRVJUICgoKHVuc2lnbmVkKSAoY2hhciAqKSBzdGFjayAmIDB4RikgPT0gMCk7Ci0gIEZGSV9BU1NFUlQgKCgodW5zaWduZWQpIGNvcHlfc3BhY2UuYyAmIDB4RikgPT0gMCk7Ci0gIEZGSV9BU1NFUlQgKCgodW5zaWduZWQpIHN0YWNrdG9wLmMgJiAweEYpID09IDApOworICBGRklfQVNTRVJUICgoKHVuc2lnbmVkIGxvbmcpIChjaGFyICopIHN0YWNrICYgMHhGKSA9PSAwKTsKKyAgRkZJX0FTU0VSVCAoKCh1bnNpZ25lZCBsb25nKSBjb3B5X3NwYWNlLmMgJiAweEYpID09IDApOworICBGRklfQVNTRVJUICgoKHVuc2lnbmVkIGxvbmcpIHN0YWNrdG9wLmMgJiAweEYpID09IDApOwogICBGRklfQVNTRVJUICgoYnl0ZXMgJiAweEYpID09IDApOwogICBGRklfQVNTRVJUIChjb3B5X3NwYWNlLmMgPj0gbmV4dF9hcmcuYyk7CiAKQEAgLTE3NCwxMiArMTc1LDI4IEBACiAgICAgICAgaSA+IDA7CiAgICAgICAgaS0tLCBwdHIrKywgcF9hcmd2LnYrKykKICAgICB7Ci0gICAgICBzd2l0Y2ggKCgqcHRyKS0+dHlwZSkKLQl7CisgICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlbnVtID0gKCpwdHIpLT50eXBlOworCisgICAgICAvKiBXZSBtYXkgbmVlZCB0byBoYW5kbGUgc29tZSB2YWx1ZXMgZGVwZW5kaW5nIG9uIEFCSSAqLworICAgICAgaWYgKGVjaWYtPmNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKSB7CisJCWlmICh0eXBlbnVtID09IEZGSV9UWVBFX0ZMT0FUKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1VJTlQzMjsKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfRE9VQkxFKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1VJTlQ2NDsKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkKKwkJCXR5cGVudW0gPSBGRklfVFlQRV9VSU5UMTI4OworICAgICAgfSBlbHNlIGlmIChlY2lmLT5jaWYtPmFiaSAhPSBGRklfTElOVVgpIHsKKyNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQorCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9MT05HRE9VQkxFKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1NUUlVDVDsKKyNlbmRpZgorICAgICAgfQorCisgICAgICAvKiBOb3cgdGVzdCB0aGUgdHJhbnNsYXRlZCB2YWx1ZSAqLworICAgICAgc3dpdGNoICh0eXBlbnVtKSB7CisjaWZuZGVmIF9fTk9fRlBSU19fCiAJY2FzZSBGRklfVFlQRV9GTE9BVDoKIAkgIC8qIFdpdGggRkZJX0xJTlVYX1NPRlRfRkxPQVQgZmxvYXRzIGFyZSBoYW5kbGVkIGxpa2UgVUlOVDMyLiAgKi8KLQkgIGlmIChlY2lmLT5jaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQkgICAgZ290byBzb2Z0X2Zsb2F0X3ByZXA7CiAJICBkb3VibGVfdG1wID0gKipwX2FyZ3YuZjsKIAkgIGlmIChmcGFyZ19jb3VudCA+PSBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCiAJICAgIHsKQEAgLTE5NSw4ICsyMTIsNiBAQAogCiAJY2FzZSBGRklfVFlQRV9ET1VCTEU6CiAJICAvKiBXaXRoIEZGSV9MSU5VWF9TT0ZUX0ZMT0FUIGRvdWJsZXMgYXJlIGhhbmRsZWQgbGlrZSBVSU5UNjQuICAqLwotCSAgaWYgKGVjaWYtPmNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCSAgICBnb3RvIHNvZnRfZG91YmxlX3ByZXA7CiAJICBkb3VibGVfdG1wID0gKipwX2FyZ3YuZDsKIAogCSAgaWYgKGZwYXJnX2NvdW50ID49IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKQEAgLTIxOCw0MyArMjMzLDYgQEAKIAogI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCiAJY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgotCSAgaWYgKChlY2lmLT5jaWYtPmFiaSAhPSBGRklfTElOVVgpCi0JCSYmIChlY2lmLT5jaWYtPmFiaSAhPSBGRklfTElOVVhfU09GVF9GTE9BVCkpCi0JICAgIGdvdG8gZG9fc3RydWN0OwotCSAgLyogVGhlIHNvZnQgZmxvYXQgQUJJIGZvciBsb25nIGRvdWJsZXMgd29ya3MgbGlrZSB0aGlzLAotCSAgICAgYSBsb25nIGRvdWJsZSBpcyBwYXNzZWQgaW4gZm91ciBjb25zZWN1dGl2ZSBncHJzIGlmIGF2YWlsYWJsZS4KLQkgICAgIEEgbWF4aW11bSBvZiAyIGxvbmcgZG91YmxlcyBjYW4gYmUgcGFzc2VkIGluIGdwcnMuCi0JICAgICBJZiB3ZSBkbyBub3QgaGF2ZSA0IGdwcnMgbGVmdCwgdGhlIGxvbmcgZG91YmxlIGlzIHBhc3NlZCBvbiB0aGUKLQkgICAgIHN0YWNrLCA0LWJ5dGUgYWxpZ25lZC4gICovCi0JICBpZiAoZWNpZi0+Y2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JICAgIHsKLQkgICAgICB1bnNpZ25lZCBpbnQgaW50X3RtcCA9ICgqcF9hcmd2LnVpKVswXTsKLQkgICAgICBpZiAoaW50YXJnX2NvdW50ID49IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyAtIDMpCi0JCXsKLQkJICBpZiAoaW50YXJnX2NvdW50IDwgTlVNX0dQUl9BUkdfUkVHSVNURVJTKQotCQkgICAgaW50YXJnX2NvdW50ICs9IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyAtIGludGFyZ19jb3VudDsKLQkJICAqbmV4dF9hcmcudSA9IGludF90bXA7Ci0JCSAgbmV4dF9hcmcudSsrOwotCQkgIGZvciAoaWkgPSAxOyBpaSA8IDQ7IGlpKyspCi0JCSAgICB7Ci0JCSAgICAgIGludF90bXAgPSAoKnBfYXJndi51aSlbaWldOwotCQkgICAgICAqbmV4dF9hcmcudSA9IGludF90bXA7Ci0JCSAgICAgIG5leHRfYXJnLnUrKzsKLQkJICAgIH0KLQkJfQotCSAgICAgIGVsc2UKLQkJewotCQkgICpncHJfYmFzZS51KysgPSBpbnRfdG1wOwotCQkgIGZvciAoaWkgPSAxOyBpaSA8IDQ7IGlpKyspCi0JCSAgICB7Ci0JCSAgICAgIGludF90bXAgPSAoKnBfYXJndi51aSlbaWldOwotCQkgICAgICAqZ3ByX2Jhc2UudSsrID0gaW50X3RtcDsKLQkJICAgIH0KLQkJfQotCSAgICAgIGludGFyZ19jb3VudCArPTQ7Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgewogCSAgICAgIGRvdWJsZV90bXAgPSAoKnBfYXJndi5kKVswXTsKIAogCSAgICAgIGlmIChmcGFyZ19jb3VudCA+PSBOVU1fRlBSX0FSR19SRUdJU1RFUlMgLSAxKQpAQCAtMjgwLDEzICsyNTgsNDAgQEAKIAogCSAgICAgIGZwYXJnX2NvdW50ICs9IDI7CiAJICAgICAgRkZJX0FTU0VSVCAoZmxhZ3MgJiBGTEFHX0ZQX0FSR1VNRU5UUyk7Ci0JICAgIH0KIAkgIGJyZWFrOwogI2VuZGlmCisjZW5kaWYgLyogaGF2ZSBGUFJzICovCisKKwkvKgorCSAqIFRoZSBzb2Z0IGZsb2F0IEFCSSBmb3IgbG9uZyBkb3VibGVzIHdvcmtzIGxpa2UgdGhpcywgYSBsb25nIGRvdWJsZQorCSAqIGlzIHBhc3NlZCBpbiBmb3VyIGNvbnNlY3V0aXZlIEdQUnMgaWYgYXZhaWxhYmxlLiAgQSBtYXhpbXVtIG9mIDIKKwkgKiBsb25nIGRvdWJsZXMgY2FuIGJlIHBhc3NlZCBpbiBncHJzLiAgSWYgd2UgZG8gbm90IGhhdmUgNCBHUFJzCisJICogbGVmdCwgdGhlIGxvbmcgZG91YmxlIGlzIHBhc3NlZCBvbiB0aGUgc3RhY2ssIDQtYnl0ZSBhbGlnbmVkLgorCSAqLworCWNhc2UgRkZJX1RZUEVfVUlOVDEyODogeworCQl1bnNpZ25lZCBpbnQgaW50X3RtcCA9ICgqcF9hcmd2LnVpKVswXTsKKwkJdW5zaWduZWQgaW50IGlpOworCQlpZiAoaW50YXJnX2NvdW50ID49IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyAtIDMpIHsKKwkJCWlmIChpbnRhcmdfY291bnQgPCBOVU1fR1BSX0FSR19SRUdJU1RFUlMpCisJCQkJaW50YXJnX2NvdW50ICs9IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyAtIGludGFyZ19jb3VudDsKKwkJCSoobmV4dF9hcmcudSsrKSA9IGludF90bXA7CisJCQlmb3IgKGlpID0gMTsgaWkgPCA0OyBpaSsrKSB7CisJCQkJaW50X3RtcCA9ICgqcF9hcmd2LnVpKVtpaV07CisJCQkJKihuZXh0X2FyZy51KyspID0gaW50X3RtcDsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCSooZ3ByX2Jhc2UudSsrKSA9IGludF90bXA7CisJCQlmb3IgKGlpID0gMTsgaWkgPCA0OyBpaSsrKSB7CisJCQkJaW50X3RtcCA9ICgqcF9hcmd2LnVpKVtpaV07CisJCQkJKihncHJfYmFzZS51KyspID0gaW50X3RtcDsKKwkJCX0KKwkJfQorCQlpbnRhcmdfY291bnQgKz0gNDsKKwkJYnJlYWs7CisJfQogCiAJY2FzZSBGRklfVFlQRV9VSU5UNjQ6CiAJY2FzZSBGRklfVFlQRV9TSU5UNjQ6Ci0Jc29mdF9kb3VibGVfcHJlcDoKIAkgIGlmIChpbnRhcmdfY291bnQgPT0gTlVNX0dQUl9BUkdfUkVHSVNURVJTLTEpCiAJICAgIGludGFyZ19jb3VudCsrOwogCSAgaWYgKGludGFyZ19jb3VudCA+PSBOVU1fR1BSX0FSR19SRUdJU1RFUlMpCkBAIC0zMTksOSArMzI0LDYgQEAKIAkgIGJyZWFrOwogCiAJY2FzZSBGRklfVFlQRV9TVFJVQ1Q6Ci0jaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKLQlkb19zdHJ1Y3Q6Ci0jZW5kaWYKIAkgIHN0cnVjdF9jb3B5X3NpemUgPSAoKCpwdHIpLT5zaXplICsgMTUpICYgfjB4RjsKIAkgIGNvcHlfc3BhY2UuYyAtPSBzdHJ1Y3RfY29weV9zaXplOwogCSAgbWVtY3B5IChjb3B5X3NwYWNlLmMsICpwX2FyZ3YuYywgKCpwdHIpLT5zaXplKTsKQEAgLTM0OSw3ICszNTEsNiBAQAogCWNhc2UgRkZJX1RZUEVfVUlOVDMyOgogCWNhc2UgRkZJX1RZUEVfU0lOVDMyOgogCWNhc2UgRkZJX1RZUEVfUE9JTlRFUjoKLQlzb2Z0X2Zsb2F0X3ByZXA6CiAKIAkgIGdwcnZhbHVlID0gKipwX2FyZ3YudWk7CiAKQEAgLTM2Niw4ICszNjcsMTAgQEAKICAgLyogQ2hlY2sgdGhhdCB3ZSBkaWRuJ3Qgb3ZlcnJ1biB0aGUgc3RhY2suLi4gICovCiAgIEZGSV9BU1NFUlQgKGNvcHlfc3BhY2UuYyA+PSBuZXh0X2FyZy5jKTsKICAgRkZJX0FTU0VSVCAoZ3ByX2Jhc2UudSA8PSBzdGFja3RvcC51IC0gQVNNX05FRURTX1JFR0lTVEVSUyk7CisjaWZuZGVmIF9fTk9fRlBSU19fCiAgIEZGSV9BU1NFUlQgKGZwcl9iYXNlLnUKIAkgICAgICA8PSBzdGFja3RvcC51IC0gQVNNX05FRURTX1JFR0lTVEVSUyAtIE5VTV9HUFJfQVJHX1JFR0lTVEVSUyk7CisjZW5kaWYKICAgRkZJX0FTU0VSVCAoZmxhZ3MgJiBGTEFHXzRfR1BSX0FSR1VNRU5UUyB8fCBpbnRhcmdfY291bnQgPD0gNCk7CiB9CiAKQEAgLTYwNCw5ICs2MDcsNiBAQAogICB1bnNpZ25lZCB0eXBlID0gY2lmLT5ydHlwZS0+dHlwZTsKICAgdW5zaWduZWQgc2l6ZSA9IGNpZi0+cnR5cGUtPnNpemU7CiAKLSAgaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotICAgIE5VTV9GUFJfQVJHX1JFR0lTVEVSUyA9IDA7Ci0KICAgaWYgKGNpZi0+YWJpICE9IEZGSV9MSU5VWDY0KQogICAgIHsKICAgICAgIC8qIEFsbCB0aGUgbWFjaGluZS1pbmRlcGVuZGVudCBjYWxjdWxhdGlvbiBvZiBjaWYtPmJ5dGVzIHdpbGwgYmUgd3JvbmcuCkBAIC02NDYsNjIgKzY0Niw1NiBAQAogICAgICAtIFNpbmdsZS9kb3VibGUgRlAgdmFsdWVzIGluIGZwcjEsIGxvbmcgZG91YmxlIGluIGZwcjEsZnByMi4KICAgICAgLSBzb2Z0LWZsb2F0IGZsb2F0L2RvdWJsZXMgYXJlIHRyZWF0ZWQgYXMgVUlOVDMyL1VJTlQ2NCByZXNwZWN0aXZsZXkuCiAgICAgIC0gc29mdC1mbG9hdCBsb25nIGRvdWJsZXMgYXJlIHJldHVybmVkIGluIGdwcjMtZ3ByNi4gICovCisgIC8qIEZpcnN0IHRyYW5zbGF0ZSBmb3Igc29mdGZsb2F0L25vbmxpbnV4ICovCisgIGlmIChjaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkgeworCWlmICh0eXBlID09IEZGSV9UWVBFX0ZMT0FUKQorCQl0eXBlID0gRkZJX1RZUEVfVUlOVDMyOworCWlmICh0eXBlID09IEZGSV9UWVBFX0RPVUJMRSkKKwkJdHlwZSA9IEZGSV9UWVBFX1VJTlQ2NDsKKwlpZiAodHlwZSA9PSBGRklfVFlQRV9MT05HRE9VQkxFKQorCQl0eXBlID0gRkZJX1RZUEVfVUlOVDEyODsKKyAgfSBlbHNlIGlmIChjaWYtPmFiaSAhPSBGRklfTElOVVggJiYgY2lmLT5hYmkgIT0gRkZJX0xJTlVYNjQpIHsKKyNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQorCWlmICh0eXBlID09IEZGSV9UWVBFX0xPTkdET1VCTEUpCisJCXR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CisjZW5kaWYKKyAgfQorCiAgIHN3aXRjaCAodHlwZSkKICAgICB7Ci0jaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKKyNpZm5kZWYgX19OT19GUFJTX18KICAgICBjYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6Ci0gICAgICBpZiAoY2lmLT5hYmkgIT0gRkZJX0xJTlVYICYmIGNpZi0+YWJpICE9IEZGSV9MSU5VWDY0Ci0JJiYgY2lmLT5hYmkgIT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JZ290byBieXJlZjsKICAgICAgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU18xMjhCSVRTOwogICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KLSNlbmRpZgogICAgIGNhc2UgRkZJX1RZUEVfRE9VQkxFOgogICAgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TXzY0QklUUzsKICAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCiAgICAgY2FzZSBGRklfVFlQRV9GTE9BVDoKLSAgICAgIC8qIFdpdGggRkZJX0xJTlVYX1NPRlRfRkxPQVQgbm8gZnAgcmVnaXN0ZXJzIGFyZSB1c2VkLiAgKi8KLSAgICAgIGlmIChjaWYtPmFiaSAhPSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQlmbGFncyB8PSBGTEFHX1JFVFVSTlNfRlA7CisgICAgICBmbGFncyB8PSBGTEFHX1JFVFVSTlNfRlA7CiAgICAgICBicmVhazsKKyNlbmRpZgogCisgICAgY2FzZSBGRklfVFlQRV9VSU5UMTI4OgorICAgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TXzEyOEJJVFM7CisgICAgICAvKiBGYWxsIHRocm91Z2guICAqLwogICAgIGNhc2UgRkZJX1RZUEVfVUlOVDY0OgogICAgIGNhc2UgRkZJX1RZUEVfU0lOVDY0OgogICAgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TXzY0QklUUzsKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6Ci0gICAgICBpZiAoY2lmLT5hYmkgPT0gRkZJX1NZU1YpCi0JewotCSAgLyogVGhlIGZpbmFsIFNZU1YgQUJJIHNheXMgdGhhdCBzdHJ1Y3R1cmVzIHNtYWxsZXIgb3IgZXF1YWwgOCBieXRlcwotCSAgICAgYXJlIHJldHVybmVkIGluIHIzL3I0LiBUaGUgRkZJX0dDQ19TWVNWIEFCSSBpbnN0ZWFkIHJldHVybnMgdGhlbQotCSAgICAgaW4gbWVtb3J5LiAgKi8KLQotCSAgLyogVHJlYXQgc3RydWN0cyB3aXRoIHNpemUgPD0gOCBieXRlcy4gICovCi0JICBpZiAoc2l6ZSA8PSA4KQotCSAgICB7Ci0JICAgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TX1NNU1Q7Ci0JICAgICAgLyogVGhlc2Ugc3RydWN0cyBhcmUgcmV0dXJuZWQgaW4gcjMuIFdlIHBhY2sgdGhlIHR5cGUgYW5kIHRoZQotCQkgcHJlY2FsY3VsYXRlZCBzaGlmdCB2YWx1ZSAobmVlZGVkIGluIHRoZSBzeXN2LlMpIGludG8gZmxhZ3MuCi0JCSBUaGUgc2FtZSBhcHBsaWVzIGZvciB0aGUgc3RydWN0cyByZXR1cm5lZCBpbiByMy9yNC4gICovCi0JICAgICAgaWYgKHNpemUgPD0gNCkKLQkJewotCQkgIGZsYWdzIHw9IEZMQUdfU1lTVl9TTVNUX1IzOwotCQkgIGZsYWdzIHw9IDggKiAoNCAtIHNpemUpIDw8IDg7Ci0JCSAgYnJlYWs7Ci0JCX0KLQkgICAgICAvKiBUaGVzZSBzdHJ1Y3RzIGFyZSByZXR1cm5lZCBpbiByMyBhbmQgcjQuIFNlZSBhYm92ZS4gICAqLwotCSAgICAgIGlmICAoc2l6ZSA8PSA4KQotCQl7Ci0JCSAgZmxhZ3MgfD0gRkxBR19TWVNWX1NNU1RfUjMgfCBGTEFHX1NZU1ZfU01TVF9SNDsKLQkJICBmbGFncyB8PSA4ICogKDggLSBzaXplKSA8PCA4OwotCQkgIGJyZWFrOwotCQl9Ci0JICAgIH0KLQl9Ci0jaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKLSAgICBieXJlZjoKLSNlbmRpZgorICAgICAgLyoKKyAgICAgICAqIFRoZSBmaW5hbCBTWVNWIEFCSSBzYXlzIHRoYXQgc3RydWN0dXJlcyBzbWFsbGVyIG9yIGVxdWFsIDggYnl0ZXMKKyAgICAgICAqIGFyZSByZXR1cm5lZCBpbiByMy9yNC4gVGhlIEZGSV9HQ0NfU1lTViBBQkkgaW5zdGVhZCByZXR1cm5zIHRoZW0KKyAgICAgICAqIGluIG1lbW9yeS4KKyAgICAgICAqCisgICAgICAgKiBOT1RFOiBUaGUgYXNzZW1ibHkgY29kZSBjYW4gc2FmZWx5IGFzc3VtZSB0aGF0IGl0IGp1c3QgbmVlZHMgdG8KKyAgICAgICAqICAgICAgIHN0b3JlIGJvdGggcjMgYW5kIHI0IGludG8gYSA4LWJ5dGUgd29yZC1hbGlnbmVkIGJ1ZmZlciwgYXMKKyAgICAgICAqICAgICAgIHdlIGFsbG9jYXRlIGEgdGVtcG9yYXJ5IGJ1ZmZlciBpbiBmZmlfY2FsbCgpIGlmIHRoaXMgZmxhZyBpcworICAgICAgICogICAgICAgc2V0LgorICAgICAgICovCisgICAgICBpZiAoY2lmLT5hYmkgPT0gRkZJX1NZU1YgJiYgc2l6ZSA8PSA4KQorCWZsYWdzIHw9IEZMQUdfUkVUVVJOU19TTVNUOwogICAgICAgaW50YXJnX2NvdW50Kys7CiAgICAgICBmbGFncyB8PSBGTEFHX1JFVFZBTF9SRUZFUkVOQ0U7CiAgICAgICAvKiBGYWxsIHRocm91Z2guICAqLwpAQCAtNzIyLDM5ICs3MTYsMzYgQEAKICAgICAgICBTdHVmZiBvbiB0aGUgc3RhY2sgbmVlZHMgdG8ga2VlcCBwcm9wZXIgYWxpZ25tZW50LiAgKi8KICAgICBmb3IgKHB0ciA9IGNpZi0+YXJnX3R5cGVzLCBpID0gY2lmLT5uYXJnczsgaSA+IDA7IGktLSwgcHRyKyspCiAgICAgICB7Ci0Jc3dpdGNoICgoKnB0ciktPnR5cGUpCi0JICB7CisJdW5zaWduZWQgc2hvcnQgdHlwZW51bSA9ICgqcHRyKS0+dHlwZTsKKworCS8qIFdlIG1heSBuZWVkIHRvIGhhbmRsZSBzb21lIHZhbHVlcyBkZXBlbmRpbmcgb24gQUJJICovCisJaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKSB7CisJCWlmICh0eXBlbnVtID09IEZGSV9UWVBFX0ZMT0FUKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1VJTlQzMjsKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfRE9VQkxFKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1VJTlQ2NDsKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkKKwkJCXR5cGVudW0gPSBGRklfVFlQRV9VSU5UMTI4OworCX0gZWxzZSBpZiAoY2lmLT5hYmkgIT0gRkZJX0xJTlVYICYmIGNpZi0+YWJpICE9IEZGSV9MSU5VWDY0KSB7CisjaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkKKwkJCXR5cGVudW0gPSBGRklfVFlQRV9TVFJVQ1Q7CisjZW5kaWYKKwl9CisKKwlzd2l0Y2ggKHR5cGVudW0pIHsKKyNpZm5kZWYgX19OT19GUFJTX18KIAkgIGNhc2UgRkZJX1RZUEVfRkxPQVQ6Ci0JICAgIC8qIFdpdGggRkZJX0xJTlVYX1NPRlRfRkxPQVQgZmxvYXRzIGFyZSBoYW5kbGVkIGxpa2UgVUlOVDMyLiAgKi8KLQkgICAgaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCSAgICAgIGdvdG8gc29mdF9mbG9hdF9jaWY7CiAJICAgIGZwYXJnX2NvdW50Kys7CiAJICAgIC8qIGZsb2F0aW5nIHNpbmdsZXMgYXJlIG5vdCA4LWFsaWduZWQgb24gc3RhY2sgKi8KIAkgICAgYnJlYWs7CiAKICNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQogCSAgY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgotCSAgICBpZiAoY2lmLT5hYmkgIT0gRkZJX0xJTlVYICYmIGNpZi0+YWJpICE9IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCSAgICAgIGdvdG8gZG9fc3RydWN0OwotCSAgICBpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JICAgICAgewotCQlpZiAoaW50YXJnX2NvdW50ID49IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyAtIDMKLQkJICB8fCBpbnRhcmdfY291bnQgPCBOVU1fR1BSX0FSR19SRUdJU1RFUlMpCi0JCSAgLyogQSBsb25nIGRvdWJsZSBpbiBGRklfTElOVVhfU09GVF9GTE9BVCBjYW4gdXNlIG9ubHkKLQkJICAgICBhIHNldCBvZiBmb3VyIGNvbnNlY3V0aXZlIGdwcnMuIElmIHdlIGhhdmUgbm90IGVub3VnaCwKLQkJICAgICB3ZSBoYXZlIHRvIGFkanVzdCB0aGUgaW50YXJnX2NvdW50IHZhbHVlLiAgKi8KLQkJICBpbnRhcmdfY291bnQgKz0gTlVNX0dQUl9BUkdfUkVHSVNURVJTIC0gaW50YXJnX2NvdW50OwotCQlpbnRhcmdfY291bnQgKz0gNDsKLQkJYnJlYWs7Ci0JICAgICAgfQotCSAgICBlbHNlCi0JICAgICAgZnBhcmdfY291bnQrKzsKKwkgICAgZnBhcmdfY291bnQrKzsKIAkgICAgLyogRmFsbCB0aHJ1ICovCiAjZW5kaWYKIAkgIGNhc2UgRkZJX1RZUEVfRE9VQkxFOgotCSAgICAvKiBXaXRoIEZGSV9MSU5VWF9TT0ZUX0ZMT0FUIGRvdWJsZXMgYXJlIGhhbmRsZWQgbGlrZSBVSU5UNjQuICAqLwotCSAgICBpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JICAgICAgZ290byBzb2Z0X2RvdWJsZV9jaWY7CiAJICAgIGZwYXJnX2NvdW50Kys7CiAJICAgIC8qIElmIHRoaXMgRlAgYXJnIGlzIGdvaW5nIG9uIHRoZSBzdGFjaywgaXQgbXVzdCBiZQogCSAgICAgICA4LWJ5dGUtYWxpZ25lZC4gICovCkBAIC03NjMsMTAgKzc1NCwyMSBAQAogCQkmJiBpbnRhcmdfY291bnQgJSAyICE9IDApCiAJICAgICAgaW50YXJnX2NvdW50Kys7CiAJICAgIGJyZWFrOworI2VuZGlmCisJICBjYXNlIEZGSV9UWVBFX1VJTlQxMjg6CisJCS8qCisJCSAqIEEgbG9uZyBkb3VibGUgaW4gRkZJX0xJTlVYX1NPRlRfRkxPQVQgY2FuIHVzZSBvbmx5IGEgc2V0CisJCSAqIG9mIGZvdXIgY29uc2VjdXRpdmUgZ3Bycy4gSWYgd2UgZG8gbm90IGhhdmUgZW5vdWdoLCB3ZQorCQkgKiBoYXZlIHRvIGFkanVzdCB0aGUgaW50YXJnX2NvdW50IHZhbHVlLgorCQkgKi8KKwkJaWYgKGludGFyZ19jb3VudCA+PSBOVU1fR1BSX0FSR19SRUdJU1RFUlMgLSAzCisJCQkJJiYgaW50YXJnX2NvdW50IDwgTlVNX0dQUl9BUkdfUkVHSVNURVJTKQorCQkJaW50YXJnX2NvdW50ID0gTlVNX0dQUl9BUkdfUkVHSVNURVJTOworCQlpbnRhcmdfY291bnQgKz0gNDsKKwkJYnJlYWs7CiAKIAkgIGNhc2UgRkZJX1RZUEVfVUlOVDY0OgogCSAgY2FzZSBGRklfVFlQRV9TSU5UNjQ6Ci0JICBzb2Z0X2RvdWJsZV9jaWY6CiAJICAgIC8qICdsb25nIGxvbmcnIGFyZ3VtZW50cyBhcmUgcGFzc2VkIGFzIHR3byB3b3JkcywgYnV0CiAJICAgICAgIGVpdGhlciBib3RoIHdvcmRzIG11c3QgZml0IGluIHJlZ2lzdGVycyBvciBib3RoIGdvCiAJICAgICAgIG9uIHRoZSBzdGFjay4gIElmIHRoZXkgZ28gb24gdGhlIHN0YWNrLCB0aGV5IG11c3QKQEAgLTc4Myw5ICs3ODUsNiBAQAogCSAgICBicmVhazsKIAogCSAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6Ci0jaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKLQkgIGRvX3N0cnVjdDoKLSNlbmRpZgogCSAgICAvKiBXZSBtdXN0IGFsbG9jYXRlIHNwYWNlIGZvciBhIGNvcHkgb2YgdGhlc2UgdG8gZW5mb3JjZQogCSAgICAgICBwYXNzLWJ5LXZhbHVlLiAgUGFkIHRoZSBzcGFjZSB1cCB0byBhIG11bHRpcGxlIG9mIDE2CiAJICAgICAgIGJ5dGVzICh0aGUgbWF4aW11bSBhbGlnbm1lbnQgcmVxdWlyZWQgZm9yIGFueXRoaW5nIHVuZGVyCkBAIC03OTMsMTIgKzc5MiwyMCBAQAogCSAgICBzdHJ1Y3RfY29weV9zaXplICs9ICgoKnB0ciktPnNpemUgKyAxNSkgJiB+MHhGOwogCSAgICAvKiBGYWxsIHRocm91Z2ggKGFsbG9jYXRlIHNwYWNlIGZvciB0aGUgcG9pbnRlcikuICAqLwogCi0JICBkZWZhdWx0OgotCSAgc29mdF9mbG9hdF9jaWY6CisJICBjYXNlIEZGSV9UWVBFX1BPSU5URVI6CisJICBjYXNlIEZGSV9UWVBFX0lOVDoKKwkgIGNhc2UgRkZJX1RZUEVfVUlOVDMyOgorCSAgY2FzZSBGRklfVFlQRV9TSU5UMzI6CisJICBjYXNlIEZGSV9UWVBFX1VJTlQxNjoKKwkgIGNhc2UgRkZJX1RZUEVfU0lOVDE2OgorCSAgY2FzZSBGRklfVFlQRV9VSU5UODoKKwkgIGNhc2UgRkZJX1RZUEVfU0lOVDg6CiAJICAgIC8qIEV2ZXJ5dGhpbmcgZWxzZSBpcyBwYXNzZWQgYXMgYSA0LWJ5dGUgd29yZCBpbiBhIEdQUiwgZWl0aGVyCiAJICAgICAgIHRoZSBvYmplY3QgaXRzZWxmIG9yIGEgcG9pbnRlciB0byBpdC4gICovCiAJICAgIGludGFyZ19jb3VudCsrOwogCSAgICBicmVhazsKKwkgIGRlZmF1bHQ6CisJCUZGSV9BU1NFUlQgKDApOwogCSAgfQogICAgICAgfQogICBlbHNlCkBAIC04MjcsMTYgKzgzNCwyOSBAQAogCSAgICBpbnRhcmdfY291bnQgKz0gKCgqcHRyKS0+c2l6ZSArIDcpIC8gODsKIAkgICAgYnJlYWs7CiAKLQkgIGRlZmF1bHQ6CisJICBjYXNlIEZGSV9UWVBFX1BPSU5URVI6CisJICBjYXNlIEZGSV9UWVBFX1VJTlQ2NDoKKwkgIGNhc2UgRkZJX1RZUEVfU0lOVDY0OgorCSAgY2FzZSBGRklfVFlQRV9JTlQ6CisJICBjYXNlIEZGSV9UWVBFX1VJTlQzMjoKKwkgIGNhc2UgRkZJX1RZUEVfU0lOVDMyOgorCSAgY2FzZSBGRklfVFlQRV9VSU5UMTY6CisJICBjYXNlIEZGSV9UWVBFX1NJTlQxNjoKKwkgIGNhc2UgRkZJX1RZUEVfVUlOVDg6CisJICBjYXNlIEZGSV9UWVBFX1NJTlQ4OgogCSAgICAvKiBFdmVyeXRoaW5nIGVsc2UgaXMgcGFzc2VkIGFzIGEgOC1ieXRlIHdvcmQgaW4gYSBHUFIsIGVpdGhlcgogCSAgICAgICB0aGUgb2JqZWN0IGl0c2VsZiBvciBhIHBvaW50ZXIgdG8gaXQuICAqLwogCSAgICBpbnRhcmdfY291bnQrKzsKIAkgICAgYnJlYWs7CisJICBkZWZhdWx0OgorCQlGRklfQVNTRVJUICgwKTsKIAkgIH0KICAgICAgIH0KIAorI2lmbmRlZiBfX05PX0ZQUlNfXwogICBpZiAoZnBhcmdfY291bnQgIT0gMCkKICAgICBmbGFncyB8PSBGTEFHX0ZQX0FSR1VNRU5UUzsKKyNlbmRpZgogICBpZiAoaW50YXJnX2NvdW50ID4gNCkKICAgICBmbGFncyB8PSBGTEFHXzRfR1BSX0FSR1VNRU5UUzsKICAgaWYgKHN0cnVjdF9jb3B5X3NpemUgIT0gMCkKQEAgLTg0NCwyMSArODY0LDI3IEBACiAKICAgaWYgKGNpZi0+YWJpICE9IEZGSV9MSU5VWDY0KQogICAgIHsKKyNpZm5kZWYgX19OT19GUFJTX18KICAgICAgIC8qIFNwYWNlIGZvciB0aGUgRlBSIHJlZ2lzdGVycywgaWYgbmVlZGVkLiAgKi8KICAgICAgIGlmIChmcGFyZ19jb3VudCAhPSAwKQogCWJ5dGVzICs9IE5VTV9GUFJfQVJHX1JFR0lTVEVSUyAqIHNpemVvZiAoZG91YmxlKTsKKyNlbmRpZgogCiAgICAgICAvKiBTdGFjayBzcGFjZS4gICovCiAgICAgICBpZiAoaW50YXJnX2NvdW50ID4gTlVNX0dQUl9BUkdfUkVHSVNURVJTKQogCWJ5dGVzICs9IChpbnRhcmdfY291bnQgLSBOVU1fR1BSX0FSR19SRUdJU1RFUlMpICogc2l6ZW9mIChpbnQpOworI2lmbmRlZiBfX05PX0ZQUlNfXwogICAgICAgaWYgKGZwYXJnX2NvdW50ID4gTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQogCWJ5dGVzICs9IChmcGFyZ19jb3VudCAtIE5VTV9GUFJfQVJHX1JFR0lTVEVSUykgKiBzaXplb2YgKGRvdWJsZSk7CisjZW5kaWYKICAgICB9CiAgIGVsc2UKICAgICB7CisjaWZuZGVmIF9fTk9fRlBSU19fCiAgICAgICAvKiBTcGFjZSBmb3IgdGhlIEZQUiByZWdpc3RlcnMsIGlmIG5lZWRlZC4gICovCiAgICAgICBpZiAoZnBhcmdfY291bnQgIT0gMCkKIAlieXRlcyArPSBOVU1fRlBSX0FSR19SRUdJU1RFUlM2NCAqIHNpemVvZiAoZG91YmxlKTsKKyNlbmRpZgogCiAgICAgICAvKiBTdGFjayBzcGFjZS4gICovCiAgICAgICBpZiAoaW50YXJnX2NvdW50ID4gTlVNX0dQUl9BUkdfUkVHSVNURVJTNjQpCkBAIC04ODYsMjggKzkxMiw0MSBAQAogdm9pZAogZmZpX2NhbGwoZmZpX2NpZiAqY2lmLCB2b2lkICgqZm4pKHZvaWQpLCB2b2lkICpydmFsdWUsIHZvaWQgKiphdmFsdWUpCiB7CisgIC8qCisgICAqIFRoZSBmaW5hbCBTWVNWIEFCSSBzYXlzIHRoYXQgc3RydWN0dXJlcyBzbWFsbGVyIG9yIGVxdWFsIDggYnl0ZXMKKyAgICogYXJlIHJldHVybmVkIGluIHIzL3I0LiBUaGUgRkZJX0dDQ19TWVNWIEFCSSBpbnN0ZWFkIHJldHVybnMgdGhlbQorICAgKiBpbiBtZW1vcnkuCisgICAqCisgICAqIEp1c3QgdG8ga2VlcCB0aGluZ3Mgc2ltcGxlIGZvciB0aGUgYXNzZW1ibHkgY29kZSwgd2Ugd2lsbCBhbHdheXMKKyAgICogYm91bmNlLWJ1ZmZlciBzdHJ1Y3QgcmV0dXJuIHZhbHVlcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gOCBieXRlcy4KKyAgICogVGhpcyBhbGxvd3MgdGhlIEFTTSB0byBoYW5kbGUgU1lTViBzbWFsbCBzdHJ1Y3R1cmVzIGJ5IGRpcmVjdGx5CisgICAqIHdyaXRpbmcgcjMgYW5kIHI0IHRvIG1lbW9yeSB3aXRob3V0IHdvcnJ5aW5nIGFib3V0IHN0cnVjdCBzaXplLgorICAgKi8KKyAgdW5zaWduZWQgaW50IHNtc3RfYnVmZmVyWzJdOwogICBleHRlbmRlZF9jaWYgZWNpZjsKKyAgdW5zaWduZWQgaW50IHJzaXplID0gMDsKIAogICBlY2lmLmNpZiA9IGNpZjsKICAgZWNpZi5hdmFsdWUgPSBhdmFsdWU7CiAKLSAgLyogSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBhIHN0cnVjdCBhbmQgd2UgZG9uJ3QgaGF2ZSBhIHJldHVybgkqLwotICAvKiB2YWx1ZSBhZGRyZXNzIHRoZW4gd2UgbmVlZCB0byBtYWtlIG9uZQkJICAgICAgICAqLwotCi0gIGlmICgocnZhbHVlID09IE5VTEwpICYmIChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkpCi0gICAgewotICAgICAgZWNpZi5ydmFsdWUgPSBhbGxvY2EoY2lmLT5ydHlwZS0+c2l6ZSk7Ci0gICAgfQotICBlbHNlCi0gICAgZWNpZi5ydmFsdWUgPSBydmFsdWU7Ci0KKyAgLyogRW5zdXJlIHRoYXQgd2UgaGF2ZSBhIHZhbGlkIHN0cnVjdCByZXR1cm4gdmFsdWUgKi8KKyAgZWNpZi5ydmFsdWUgPSBydmFsdWU7CisgIGlmIChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkgeworICAgIHJzaXplID0gY2lmLT5ydHlwZS0+c2l6ZTsKKyAgICBpZiAocnNpemUgPD0gOCkKKyAgICAgIGVjaWYucnZhbHVlID0gc21zdF9idWZmZXI7CisgICAgZWxzZSBpZiAoIXJ2YWx1ZSkKKyAgICAgIGVjaWYucnZhbHVlID0gYWxsb2NhKHJzaXplKTsKKyAgfQogCiAgIHN3aXRjaCAoY2lmLT5hYmkpCiAgICAgewogI2lmbmRlZiBQT1dFUlBDNjQKKyMgaWZuZGVmIF9fTk9fRlBSU19fCiAgICAgY2FzZSBGRklfU1lTVjoKICAgICBjYXNlIEZGSV9HQ0NfU1lTVjoKICAgICBjYXNlIEZGSV9MSU5VWDoKKyMgZW5kaWYKICAgICBjYXNlIEZGSV9MSU5VWF9TT0ZUX0ZMT0FUOgogICAgICAgZmZpX2NhbGxfU1lTViAoJmVjaWYsIC1jaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLCBlY2lmLnJ2YWx1ZSwgZm4pOwogICAgICAgYnJlYWs7CkBAIC05MjAsNiArOTU5LDEwIEBACiAgICAgICBGRklfQVNTRVJUICgwKTsKICAgICAgIGJyZWFrOwogICAgIH0KKworICAvKiBDaGVjayBmb3IgYSBib3VuY2UtYnVmZmVyZWQgcmV0dXJuIHZhbHVlICovCisgIGlmIChydmFsdWUgJiYgZWNpZi5ydmFsdWUgPT0gc21zdF9idWZmZXIpCisgICAgbWVtY3B5KHJ2YWx1ZSwgc21zdF9idWZmZXIsIHJzaXplKTsKIH0KIAogCkBAIC05NDksMTQgKzk5MiwxOSBAQAogI2lmZGVmIFBPV0VSUEM2NAogICB2b2lkICoqdHJhbXAgPSAodm9pZCAqKikgJmNsb3N1cmUtPnRyYW1wWzBdOwogCi0gIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9MSU5VWDY0KTsKKyAgaWYgKGNpZi0+YWJpICE9IEZGSV9MSU5VWDY0KQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKICAgLyogQ29weSBmdW5jdGlvbiBhZGRyZXNzIGFuZCBUT0MgZnJvbSBmZmlfY2xvc3VyZV9MSU5VWDY0LiAgKi8KICAgbWVtY3B5ICh0cmFtcCwgKGNoYXIgKikgZmZpX2Nsb3N1cmVfTElOVVg2NCwgMTYpOwogICB0cmFtcFsyXSA9IGNvZGVsb2M7CiAjZWxzZQogICB1bnNpZ25lZCBpbnQgKnRyYW1wOwogCi0gIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9HQ0NfU1lTViB8fCBjaWYtPmFiaSA9PSBGRklfU1lTVik7CisgIGlmICghIChjaWYtPmFiaSA9PSBGRklfR0NDX1NZU1YgCisJIHx8IGNpZi0+YWJpID09IEZGSV9TWVNWCisJIHx8IGNpZi0+YWJpID09IEZGSV9MSU5VWAorCSB8fCBjaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogCiAgIHRyYW1wID0gKHVuc2lnbmVkIGludCAqKSAmY2xvc3VyZS0+dHJhbXBbMF07CiAgIHRyYW1wWzBdID0gMHg3YzA4MDJhNjsgIC8qICAgbWZsciAgICByMCAqLwpAQCAtMTAxMSwzMiArMTA1OSwzOCBAQAogICB2b2lkICoqICAgICAgICAgIGF2YWx1ZTsKICAgZmZpX3R5cGUgKiogICAgICBhcmdfdHlwZXM7CiAgIGxvbmcgICAgICAgICAgICAgaSwgYXZuOwotICBsb25nICAgICAgICAgICAgIG5mOyAgIC8qIG51bWJlciBvZiBmbG9hdGluZyByZWdpc3RlcnMgYWxyZWFkeSB1c2VkICovCi0gIGxvbmcgICAgICAgICAgICAgbmc7ICAgLyogbnVtYmVyIG9mIGdlbmVyYWwgcmVnaXN0ZXJzIGFscmVhZHkgdXNlZCAqLwotICBmZmlfY2lmICogICAgICAgIGNpZjsKLSAgZG91YmxlICAgICAgICAgICB0ZW1wOwotICB1bnNpZ25lZCAgICAgICAgIHNpemU7CisjaWZuZGVmIF9fTk9fRlBSU19fCisgIGxvbmcgICAgICAgICAgICAgbmYgPSAwOyAgIC8qIG51bWJlciBvZiBmbG9hdGluZyByZWdpc3RlcnMgYWxyZWFkeSB1c2VkICovCisjZW5kaWYKKyAgbG9uZyAgICAgICAgICAgICBuZyA9IDA7ICAgLyogbnVtYmVyIG9mIGdlbmVyYWwgcmVnaXN0ZXJzIGFscmVhZHkgdXNlZCAqLwogCi0gIGNpZiA9IGNsb3N1cmUtPmNpZjsKKyAgZmZpX2NpZiAqY2lmID0gY2xvc3VyZS0+Y2lmOworICB1bnNpZ25lZCAgICAgICBzaXplICAgICA9IGNpZi0+cnR5cGUtPnNpemU7CisgIHVuc2lnbmVkIHNob3J0IHJ0eXBlbnVtID0gY2lmLT5ydHlwZS0+dHlwZTsKKwogICBhdmFsdWUgPSBhbGxvY2EgKGNpZi0+bmFyZ3MgKiBzaXplb2YgKHZvaWQgKikpOwotICBzaXplID0gY2lmLT5ydHlwZS0+c2l6ZTsKIAotICBuZiA9IDA7Ci0gIG5nID0gMDsKKyAgLyogRmlyc3QgdHJhbnNsYXRlIGZvciBzb2Z0ZmxvYXQvbm9ubGludXggKi8KKyAgaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKSB7CisJaWYgKHJ0eXBlbnVtID09IEZGSV9UWVBFX0ZMT0FUKQorCQlydHlwZW51bSA9IEZGSV9UWVBFX1VJTlQzMjsKKwlpZiAocnR5cGVudW0gPT0gRkZJX1RZUEVfRE9VQkxFKQorCQlydHlwZW51bSA9IEZGSV9UWVBFX1VJTlQ2NDsKKwlpZiAocnR5cGVudW0gPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkKKwkJcnR5cGVudW0gPSBGRklfVFlQRV9VSU5UMTI4OworICB9IGVsc2UgaWYgKGNpZi0+YWJpICE9IEZGSV9MSU5VWCAmJiBjaWYtPmFiaSAhPSBGRklfTElOVVg2NCkgeworI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCisJaWYgKHJ0eXBlbnVtID09IEZGSV9UWVBFX0xPTkdET1VCTEUpCisJCXJ0eXBlbnVtID0gRkZJX1RZUEVfU1RSVUNUOworI2VuZGlmCisgIH0KKwogCiAgIC8qIENvcHkgdGhlIGNhbGxlcidzIHN0cnVjdHVyZSByZXR1cm4gdmFsdWUgYWRkcmVzcyBzbyB0aGF0IHRoZSBjbG9zdXJlCiAgICAgIHJldHVybnMgdGhlIGRhdGEgZGlyZWN0bHkgdG8gdGhlIGNhbGxlci4KICAgICAgRm9yIEZGSV9TWVNWIHRoZSByZXN1bHQgaXMgcGFzc2VkIGluIHIzL3I0IGlmIHRoZSBzdHJ1Y3Qgc2l6ZSBpcyBsZXNzCiAgICAgIG9yIGVxdWFsIDggYnl0ZXMuICAqLwotCi0gIGlmICgoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QKLSAgICAgICAmJiAhKChjaWYtPmFiaSA9PSBGRklfU1lTVikgJiYgKHNpemUgPD0gOCkpKQotI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCi0gICAgICB8fCAoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9MT05HRE9VQkxFCi0JICAmJiBjaWYtPmFiaSAhPSBGRklfTElOVVggJiYgY2lmLT5hYmkgIT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0jZW5kaWYKLSAgICAgICkKLSAgICB7CisgIGlmIChydHlwZW51bSA9PSBGRklfVFlQRV9TVFJVQ1QgJiYgKChjaWYtPmFiaSAhPSBGRklfU1lTVikgfHwgKHNpemUgPiA4KSkpIHsKICAgICAgIHJ2YWx1ZSA9ICh2b2lkICopICpwZ3I7CiAgICAgICBuZysrOwogICAgICAgcGdyKys7CkBAIC0xMDQ3LDEwICsxMTAxLDEwOSBAQAogICBhcmdfdHlwZXMgPSBjaWYtPmFyZ190eXBlczsKIAogICAvKiBHcmFiIHRoZSBhZGRyZXNzZXMgb2YgdGhlIGFyZ3VtZW50cyBmcm9tIHRoZSBzdGFjayBmcmFtZS4gICovCi0gIHdoaWxlIChpIDwgYXZuKQotICAgIHsKLSAgICAgIHN3aXRjaCAoYXJnX3R5cGVzW2ldLT50eXBlKQotCXsKKyAgd2hpbGUgKGkgPCBhdm4pIHsKKyAgICAgIHVuc2lnbmVkIHNob3J0IHR5cGVudW0gPSBhcmdfdHlwZXNbaV0tPnR5cGU7CisKKyAgICAgIC8qIFdlIG1heSBuZWVkIHRvIGhhbmRsZSBzb21lIHZhbHVlcyBkZXBlbmRpbmcgb24gQUJJICovCisgICAgICBpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpIHsKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfRkxPQVQpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDMyOworCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9ET1VCTEUpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDY0OworCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9MT05HRE9VQkxFKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1VJTlQxMjg7CisgICAgICB9IGVsc2UgaWYgKGNpZi0+YWJpICE9IEZGSV9MSU5VWCAmJiBjaWYtPmFiaSAhPSBGRklfTElOVVg2NCkgeworI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCisJCWlmICh0eXBlbnVtID09IEZGSV9UWVBFX0xPTkdET1VCTEUpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfU1RSVUNUOworI2VuZGlmCisgICAgICB9CisKKyAgICAgIHN3aXRjaCAodHlwZW51bSkgeworI2lmbmRlZiBfX05PX0ZQUlNfXworCWNhc2UgRkZJX1RZUEVfRkxPQVQ6CisJICAvKiB1bmZvcnR1bmF0ZWx5IGZsb2F0IHZhbHVlcyBhcmUgc3RvcmVkIGFzIGRvdWJsZXMKKwkgICAqIGluIHRoZSBmZmlfY2xvc3VyZV9TWVNWIGNvZGUgKHNpbmNlIHdlIGRvbid0IGNoZWNrCisJICAgKiB0aGUgdHlwZSBpbiB0aGF0IHJvdXRpbmUpLgorCSAgICovCisKKwkgIC8qIHRoZXJlIGFyZSA4IDY0Yml0IGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyAqLworCisJICBpZiAobmYgPCA4KQorCSAgICB7CisJICAgICAgZG91YmxlIHRlbXAgPSBwZnItPmQ7CisJICAgICAgcGZyLT5mID0gKGZsb2F0KSB0ZW1wOworCSAgICAgIGF2YWx1ZVtpXSA9IHBmcjsKKwkgICAgICBuZisrOworCSAgICAgIHBmcisrOworCSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICAvKiBGSVhNRT8gaGVyZSB3ZSBhcmUgcmVhbGx5IGNoYW5naW5nIHRoZSB2YWx1ZXMKKwkgICAgICAgKiBzdG9yZWQgaW4gdGhlIG9yaWdpbmFsIGNhbGxpbmcgcm91dGluZXMgb3V0Z29pbmcKKwkgICAgICAgKiBwYXJhbWV0ZXIgc3RhY2suICBUaGlzIGlzIHByb2JhYmx5IGEgcmVhbGx5CisJICAgICAgICogbmF1Z2h0eSB0aGluZyB0byBkbyBidXQuLi4KKwkgICAgICAgKi8KKwkgICAgICBhdmFsdWVbaV0gPSBwc3Q7CisJICAgICAgcHN0ICs9IDE7CisJICAgIH0KKwkgIGJyZWFrOworCisJY2FzZSBGRklfVFlQRV9ET1VCTEU6CisJICAvKiBPbiB0aGUgb3V0Z29pbmcgc3RhY2sgYWxsIHZhbHVlcyBhcmUgYWxpZ25lZCB0byA4ICovCisJICAvKiB0aGVyZSBhcmUgOCA2NGJpdCBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMgKi8KKworCSAgaWYgKG5mIDwgOCkKKwkgICAgeworCSAgICAgIGF2YWx1ZVtpXSA9IHBmcjsKKwkgICAgICBuZisrOworCSAgICAgIHBmcisrOworCSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICBpZiAoKChsb25nKSBwc3QpICYgNCkKKwkJcHN0Kys7CisJICAgICAgYXZhbHVlW2ldID0gcHN0OworCSAgICAgIHBzdCArPSAyOworCSAgICB9CisJICBicmVhazsKKworI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCisJY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgorCSAgaWYgKG5mIDwgNykKKwkgICAgeworCSAgICAgIGF2YWx1ZVtpXSA9IHBmcjsKKwkgICAgICBwZnIgKz0gMjsKKwkgICAgICBuZiArPSAyOworCSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICBpZiAoKChsb25nKSBwc3QpICYgNCkKKwkJcHN0Kys7CisJICAgICAgYXZhbHVlW2ldID0gcHN0OworCSAgICAgIHBzdCArPSA0OworCSAgICAgIG5mID0gODsKKwkgICAgfQorCSAgYnJlYWs7CisjZW5kaWYKKyNlbmRpZiAvKiBoYXZlIEZQUlMgKi8KKworCWNhc2UgRkZJX1RZUEVfVUlOVDEyODoKKwkJLyoKKwkJICogVGVzdCBpZiBmb3IgdGhlIHdob2xlIGxvbmcgZG91YmxlLCA0IGdwcnMgYXJlIGF2YWlsYWJsZS4KKwkJICogb3RoZXJ3aXNlIHRoZSBzdHVmZiBlbmRzIHVwIG9uIHRoZSBzdGFjay4KKwkJICovCisJCWlmIChuZyA8IDUpIHsKKwkJCWF2YWx1ZVtpXSA9IHBncjsKKwkJCXBnciArPSA0OworCQkJbmcgKz0gNDsKKwkJfSBlbHNlIHsKKwkJCWF2YWx1ZVtpXSA9IHBzdDsKKwkJCXBzdCArPSA0OworCQkJbmcgPSA4KzQ7CisJCX0KKwkJYnJlYWs7CisKIAljYXNlIEZGSV9UWVBFX1NJTlQ4OgogCWNhc2UgRkZJX1RZUEVfVUlOVDg6CiAJICAvKiB0aGVyZSBhcmUgOCBncHIgcmVnaXN0ZXJzIHVzZWQgdG8gcGFzcyB2YWx1ZXMgKi8KQEAgLTEwODYsNyArMTIzOSw2IEBACiAJY2FzZSBGRklfVFlQRV9TSU5UMzI6CiAJY2FzZSBGRklfVFlQRV9VSU5UMzI6CiAJY2FzZSBGRklfVFlQRV9QT0lOVEVSOgotCXNvZnRfZmxvYXRfY2xvc3VyZToKIAkgIC8qIHRoZXJlIGFyZSA4IGdwciByZWdpc3RlcnMgdXNlZCB0byBwYXNzIHZhbHVlcyAqLwogCSAgaWYgKG5nIDwgOCkKIAkgICAgewpAQCAtMTEwMiw5ICsxMjU0LDYgQEAKIAkgIGJyZWFrOwogCiAJY2FzZSBGRklfVFlQRV9TVFJVQ1Q6Ci0jaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKLQlkb19zdHJ1Y3Q6Ci0jZW5kaWYKIAkgIC8qIFN0cnVjdHMgYXJlIHBhc3NlZCBieSByZWZlcmVuY2UuIFRoZSBhZGRyZXNzIHdpbGwgYXBwZWFyIGluIGEKIAkgICAgIGdwciBpZiBpdCBpcyBvbmUgb2YgdGhlIGZpcnN0IDggYXJndW1lbnRzLiAgKi8KIAkgIGlmIChuZyA8IDgpCkBAIC0xMTIyLDcgKzEyNzEsNiBAQAogCiAJY2FzZSBGRklfVFlQRV9TSU5UNjQ6CiAJY2FzZSBGRklfVFlQRV9VSU5UNjQ6Ci0Jc29mdF9kb3VibGVfY2xvc3VyZToKIAkgIC8qIHBhc3NpbmcgbG9uZyBsb25nIGludHMgYXJlIGNvbXBsZXgsIHRoZXkgbXVzdAogCSAgICogYmUgcGFzc2VkIGluIHN1aXRhYmxlIHJlZ2lzdGVyIHBhaXJzIHN1Y2ggYXMKIAkgICAqIChyMyxyNCkgb3IgKHI1LHI2KSBvciAocjYscjcpLCBvciAocjcscjgpIG9yIChyOSxyMTApCkBAIC0xMTU0LDk5ICsxMzAyLDggQEAKIAkgICAgfQogCSAgYnJlYWs7CiAKLQljYXNlIEZGSV9UWVBFX0ZMT0FUOgotCSAgLyogV2l0aCBGRklfTElOVVhfU09GVF9GTE9BVCBmbG9hdHMgYXJlIGhhbmRsZWQgbGlrZSBVSU5UMzIuICAqLwotCSAgaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCSAgICBnb3RvIHNvZnRfZmxvYXRfY2xvc3VyZTsKLQkgIC8qIHVuZm9ydHVuYXRlbHkgZmxvYXQgdmFsdWVzIGFyZSBzdG9yZWQgYXMgZG91YmxlcwotCSAgICogaW4gdGhlIGZmaV9jbG9zdXJlX1NZU1YgY29kZSAoc2luY2Ugd2UgZG9uJ3QgY2hlY2sKLQkgICAqIHRoZSB0eXBlIGluIHRoYXQgcm91dGluZSkuCi0JICAgKi8KLQotCSAgLyogdGhlcmUgYXJlIDggNjRiaXQgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzICovCi0KLQkgIGlmIChuZiA8IDgpCi0JICAgIHsKLQkgICAgICB0ZW1wID0gcGZyLT5kOwotCSAgICAgIHBmci0+ZiA9IChmbG9hdCkgdGVtcDsKLQkgICAgICBhdmFsdWVbaV0gPSBwZnI7Ci0JICAgICAgbmYrKzsKLQkgICAgICBwZnIrKzsKLQkgICAgfQotCSAgZWxzZQotCSAgICB7Ci0JICAgICAgLyogRklYTUU/IGhlcmUgd2UgYXJlIHJlYWxseSBjaGFuZ2luZyB0aGUgdmFsdWVzCi0JICAgICAgICogc3RvcmVkIGluIHRoZSBvcmlnaW5hbCBjYWxsaW5nIHJvdXRpbmVzIG91dGdvaW5nCi0JICAgICAgICogcGFyYW1ldGVyIHN0YWNrLiAgVGhpcyBpcyBwcm9iYWJseSBhIHJlYWxseQotCSAgICAgICAqIG5hdWdodHkgdGhpbmcgdG8gZG8gYnV0Li4uCi0JICAgICAgICovCi0JICAgICAgYXZhbHVlW2ldID0gcHN0OwotCSAgICAgIHBzdCArPSAxOwotCSAgICB9Ci0JICBicmVhazsKLQotCWNhc2UgRkZJX1RZUEVfRE9VQkxFOgotCSAgLyogV2l0aCBGRklfTElOVVhfU09GVF9GTE9BVCBkb3VibGVzIGFyZSBoYW5kbGVkIGxpa2UgVUlOVDY0LiAgKi8KLQkgIGlmIChjaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQkgICAgZ290byBzb2Z0X2RvdWJsZV9jbG9zdXJlOwotCSAgLyogT24gdGhlIG91dGdvaW5nIHN0YWNrIGFsbCB2YWx1ZXMgYXJlIGFsaWduZWQgdG8gOCAqLwotCSAgLyogdGhlcmUgYXJlIDggNjRiaXQgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzICovCi0KLQkgIGlmIChuZiA8IDgpCi0JICAgIHsKLQkgICAgICBhdmFsdWVbaV0gPSBwZnI7Ci0JICAgICAgbmYrKzsKLQkgICAgICBwZnIrKzsKLQkgICAgfQotCSAgZWxzZQotCSAgICB7Ci0JICAgICAgaWYgKCgobG9uZykgcHN0KSAmIDQpCi0JCXBzdCsrOwotCSAgICAgIGF2YWx1ZVtpXSA9IHBzdDsKLQkgICAgICBwc3QgKz0gMjsKLQkgICAgfQotCSAgYnJlYWs7Ci0KLSNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQotCWNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKLQkgIGlmIChjaWYtPmFiaSAhPSBGRklfTElOVVggJiYgY2lmLT5hYmkgIT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JICAgIGdvdG8gZG9fc3RydWN0OwotCSAgaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCSAgICB7IC8qIFRlc3QgaWYgZm9yIHRoZSB3aG9sZSBsb25nIGRvdWJsZSwgNCBncHJzIGFyZSBhdmFpbGFibGUuCi0JCSBvdGhlcndpc2UgdGhlIHN0dWZmIGVuZHMgdXAgb24gdGhlIHN0YWNrLiAgKi8KLQkgICAgICBpZiAobmcgPCA1KQotCQl7Ci0JCSAgYXZhbHVlW2ldID0gcGdyOwotCQkgIHBnciArPSA0OwotCQkgIG5nICs9IDQ7Ci0JCX0KLQkgICAgICBlbHNlCi0JCXsKLQkJICBhdmFsdWVbaV0gPSBwc3Q7Ci0JCSAgcHN0ICs9IDQ7Ci0JCSAgbmcgPSA4OwotCQl9Ci0JICAgICAgYnJlYWs7Ci0JICAgIH0KLQkgIGlmIChuZiA8IDcpCi0JICAgIHsKLQkgICAgICBhdmFsdWVbaV0gPSBwZnI7Ci0JICAgICAgcGZyICs9IDI7Ci0JICAgICAgbmYgKz0gMjsKLQkgICAgfQotCSAgZWxzZQotCSAgICB7Ci0JICAgICAgaWYgKCgobG9uZykgcHN0KSAmIDQpCi0JCXBzdCsrOwotCSAgICAgIGF2YWx1ZVtpXSA9IHBzdDsKLQkgICAgICBwc3QgKz0gNDsKLQkgICAgICBuZiA9IDg7Ci0JICAgIH0KLQkgIGJyZWFrOwotI2VuZGlmCi0KIAlkZWZhdWx0OgotCSAgRkZJX0FTU0VSVCAoMCk7CisJCUZGSV9BU1NFUlQgKDApOwogCX0KIAogICAgICAgaSsrOwpAQCAtMTI2MywzOSArMTMyMCw5IEBACiAgICAgIGFscmVhZHkgdXNlZCBhbmQgd2UgbmV2ZXIgaGF2ZSBhIHN0cnVjdCB3aXRoIHNpemUgemVyby4gVGhhdCBpcyB0aGUgcmVhc29uCiAgICAgIGZvciB0aGUgc3VidHJhY3Rpb24gb2YgMS4gU2VlIHRoZSBjb21tZW50IGluIGZmaXRhcmdldC5oIGFib3V0IG9yZGVyaW5nLgogICAqLwotICBpZiAoY2lmLT5hYmkgPT0gRkZJX1NZU1YgJiYgY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QKLSAgICAgICYmIHNpemUgPD0gOCkKKyAgaWYgKGNpZi0+YWJpID09IEZGSV9TWVNWICYmIHJ0eXBlbnVtID09IEZGSV9UWVBFX1NUUlVDVCAmJiBzaXplIDw9IDgpCiAgICAgcmV0dXJuIChGRklfU1lTVl9UWVBFX1NNQUxMX1NUUlVDVCAtIDEpICsgc2l6ZTsKLSNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQotICBlbHNlIGlmIChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX0xPTkdET1VCTEUKLQkgICAmJiBjaWYtPmFiaSAhPSBGRklfTElOVVggJiYgY2lmLT5hYmkgIT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0gICAgcmV0dXJuIEZGSV9UWVBFX1NUUlVDVDsKLSNlbmRpZgotICAvKiBXaXRoIEZGSV9MSU5VWF9TT0ZUX0ZMT0FUIGZsb2F0cyBhbmQgZG91YmxlcyBhcmUgaGFuZGxlZCBsaWtlIFVJTlQzMgotICAgICByZXNwZWN0aXZsZXkgVUlOVDY0LiAgKi8KLSAgaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotICAgIHsKLSAgICAgIHN3aXRjaCAoY2lmLT5ydHlwZS0+dHlwZSkKLQl7Ci0JY2FzZSBGRklfVFlQRV9GTE9BVDoKLQkgIHJldHVybiBGRklfVFlQRV9VSU5UMzI7Ci0JICBicmVhazsKLQljYXNlIEZGSV9UWVBFX0RPVUJMRToKLQkgIHJldHVybiBGRklfVFlQRV9VSU5UNjQ7Ci0JICBicmVhazsKLSNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQotCWNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKLQkgIHJldHVybiBGRklfVFlQRV9VSU5UMTI4OwotCSAgYnJlYWs7Ci0jZW5kaWYKLQlkZWZhdWx0OgotCSAgcmV0dXJuIGNpZi0+cnR5cGUtPnR5cGU7Ci0JfQotICAgIH0KLSAgZWxzZQotICAgIHsKLSAgICAgIHJldHVybiBjaWYtPnJ0eXBlLT50eXBlOwotICAgIH0KKyAgcmV0dXJuIHJ0eXBlbnVtOwogfQogCiBpbnQgRkZJX0hJRERFTiBmZmlfY2xvc3VyZV9oZWxwZXJfTElOVVg2NCAoZmZpX2Nsb3N1cmUgKiwgdm9pZCAqLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYwppbmRleCBkODRmMWMzLi5kZDg5N2Y0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYwpAQCAtMyw3ICszLDcgQEAKIAogICAgQ29weXJpZ2h0IChDKSAxOTk4IEdlb2ZmcmV5IEtlYXRpbmcKICAgIENvcHlyaWdodCAoQykgMjAwMSBKb2huIEhvcm5rdmlzdAotICAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA2LCAyMDA3LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA2LCAyMDA3LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBGRkkgc3VwcG9ydCBmb3IgRGFyd2luIGFuZCBBSVguCiAgICAKQEAgLTM1LDExICszNSwxNyBAQAogZXh0ZXJuIHZvaWQgZmZpX2Nsb3N1cmVfQVNNICh2b2lkKTsKIAogZW51bSB7Ci0gIC8qIFRoZSBhc3NlbWJseSBkZXBlbmRzIG9uIHRoZXNlIGV4YWN0IGZsYWdzLiAgKi8KLSAgRkxBR19SRVRVUk5TX05PVEhJTkcgID0gMSA8PCAoMzEtMzApLCAvKiBUaGVzZSBnbyBpbiBjcjcgICovCi0gIEZMQUdfUkVUVVJOU19GUCAgICAgICA9IDEgPDwgKDMxLTI5KSwKLSAgRkxBR19SRVRVUk5TXzY0QklUUyAgID0gMSA8PCAoMzEtMjgpLAotICBGTEFHX1JFVFVSTlNfMTI4QklUUyAgPSAxIDw8ICgzMS0zMSksCisgIC8qIFRoZSBhc3NlbWJseSBkZXBlbmRzIG9uIHRoZXNlIGV4YWN0IGZsYWdzLiAgCisgICAgIEZvciBEYXJ3aW42NCAod2hlbiBGTEFHX1JFVFVSTlNfU1RSVUNUIGlzIHNldCk6CisgICAgICAgRkxBR19SRVRVUk5TX0ZQIGluZGljYXRlcyB0aGF0IHRoZSBzdHJ1Y3R1cmUgZW1iZWRzIEZQIGRhdGEuCisgICAgICAgRkxBR19SRVRVUk5TXzEyOEJJVFMgc2lnbmFscyBhIHNwZWNpYWwgc3RydWN0IHNpemUgdGhhdCBpcyBub3QKKyAgICAgICBleHBhbmRlZCBmb3IgZmxvYXQgY29udGVudC4gICovCisgIEZMQUdfUkVUVVJOU18xMjhCSVRTCT0gMSA8PCAoMzEtMzEpLCAvKiBUaGVzZSBnbyBpbiBjcjcgICovCisgIEZMQUdfUkVUVVJOU19OT1RISU5HCT0gMSA8PCAoMzEtMzApLAorICBGTEFHX1JFVFVSTlNfRlAJPSAxIDw8ICgzMS0yOSksCisgIEZMQUdfUkVUVVJOU182NEJJVFMJPSAxIDw8ICgzMS0yOCksCisKKyAgRkxBR19SRVRVUk5TX1NUUlVDVAk9IDEgPDwgKDMxLTI3KSwgLyogVGhpcyBnb2VzIGluIGNyNiAgKi8KIAogICBGTEFHX0FSR19ORUVEU19DT1BZICAgPSAxIDw8ICgzMS0gNyksCiAgIEZMQUdfRlBfQVJHVU1FTlRTICAgICA9IDEgPDwgKDMxLSA2KSwgLyogY3IxLmVxOyBzcGVjaWZpZWQgYnkgQUJJICAqLwpAQCAtNTAsNDMgKzU2LDYxIEBACiAvKiBBYm91dCB0aGUgREFSV0lOIEFCSS4gICovCiBlbnVtIHsKICAgTlVNX0dQUl9BUkdfUkVHSVNURVJTID0gOCwKLSAgTlVNX0ZQUl9BUkdfUkVHSVNURVJTID0gMTMKKyAgTlVNX0ZQUl9BUkdfUkVHSVNURVJTID0gMTMsCisgIExJTktBR0VfQVJFQV9HUFJTID0gNgogfTsKLWVudW0geyBBU01fTkVFRFNfUkVHSVNURVJTID0gNCB9OworCitlbnVtIHsgQVNNX05FRURTX1JFR0lTVEVSUyA9IDQgfTsgLyogcjI4LXIzMSAqLwogCiAvKiBmZmlfcHJlcF9hcmdzIGlzIGNhbGxlZCBieSB0aGUgYXNzZW1ibHkgcm91dGluZSBvbmNlIHN0YWNrIHNwYWNlCiAgICBoYXMgYmVlbiBhbGxvY2F0ZWQgZm9yIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cy4KKyAgIAorICAgbTMyL202NAogCiAgICBUaGUgc3RhY2sgbGF5b3V0IHdlIHdhbnQgbG9va3MgbGlrZSB0aGlzOgogCiAgICB8ICAgUmV0dXJuIGFkZHJlc3MgZnJvbSBmZmlfY2FsbF9EQVJXSU4gICAgICB8CWhpZ2hlciBhZGRyZXNzZXMKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLSAgIHwgICBQcmV2aW91cyBiYWNrY2hhaW4gcG9pbnRlcgk0CXwJc3RhY2sgcG9pbnRlciBoZXJlCisgICB8ICAgUHJldmlvdXMgYmFja2NoYWluIHBvaW50ZXIJNC84CXwJc3RhY2sgcG9pbnRlciBoZXJlCiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18PCsgPDw8CW9uIGVudHJ5IHRvCi0gICB8ICAgU2F2ZWQgcjI4LXIzMQkJCTQqNAl8IHwJZmZpX2NhbGxfREFSV0lOCisgICB8ICAgQVNNX05FRURTX1JFR0lTVEVSUz1yMjgtcjMxICAgNCooNC84KQl8IHwJZmZpX2NhbGxfREFSV0lOCiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKLSAgIHwgICBQYXJhbWV0ZXJzICAgICAgICAgICAgIChhdCBsZWFzdCA4KjQ9MzIpIHwgfAorICAgfCAgIFdoZW4gd2UgaGF2ZSBhbnkgRlAgYWN0aXZpdHkuLi4gdGhlCXwgfAorICAgfCAgIEZQUnMgb2NjdXB5IE5VTV9GUFJfQVJHX1JFR0lTVEVSUyBzbG90cwl8IHwKKyAgIHwgICBoZXJlIGZwMTMgLi4gZnAxIGZyb20gaGlnaCB0byBsb3cgYWRkci4JfCB8CisgICB+CQkJCQkJfiB+CisgICB8ICAgUGFyYW1ldGVycyAgICAgIChhdCBsZWFzdCA4KjQvOD0zMi82NCkJfCB8IE5VTV9HUFJfQVJHX1JFR0lTVEVSUwogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8Ci0gICB8ICAgU3BhY2UgZm9yIEdQUjIgICAgICAgICAgICAgICAgICAgNCAgICAgICB8IHwKKyAgIHwgICBUT0M9UjIgKEFJWCkgUmVzZXJ2ZWQgKERhcndpbikgICA0LzgJfCB8CiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwJc3RhY2sJfAotICAgfCAgIFJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAyKjQgICAgICAgfCB8CWdyb3dzCXwKKyAgIHwgICBSZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgMio0LzgJfCB8CWdyb3dzCXwKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAlkb3duCVYKLSAgIHwgICBTcGFjZSBmb3IgY2FsbGVlJ3MgTFIJCTQJfCB8CisgICB8ICAgU3BhY2UgZm9yIGNhbGxlZSdzIExSCQk0LzgJfCB8CiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwJbG93ZXIgYWRkcmVzc2VzCi0gICB8ICAgU2F2ZWQgQ1IgICAgICAgICAgICAgICAgICAgICAgICAgNCAgICAgICB8IHwKKyAgIHwgICBTYXZlZCBDUiBbbG93IHdvcmQgZm9yIG02NF0gICAgICA0LzgJfCB8CiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwgICAgIHN0YWNrIHBvaW50ZXIgaGVyZQotICAgfCAgIEN1cnJlbnQgYmFja2NoYWluIHBvaW50ZXIJNAl8LS8JZHVyaW5nCisgICB8ICAgQ3VycmVudCBiYWNrY2hhaW4gcG9pbnRlcgk0LzgJfC0vCWR1cmluZwogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAgIDw8PAlmZmlfY2FsbF9EQVJXSU4KIAogICAgKi8KIAorI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKK3N0YXRpYyB2b2lkCitkYXJ3aW42NF9wYXNzX3N0cnVjdF9ieV92YWx1ZSAKKyAgKGZmaV90eXBlICosIGNoYXIgKiwgdW5zaWduZWQsIHVuc2lnbmVkICosIGRvdWJsZSAqKiwgdW5zaWduZWQgbG9uZyAqKik7CisjZW5kaWYKKworLyogVGhpcyBkZXBlbmRzIG9uIEdQUl9TSVpFID0gc2l6ZW9mICh1bnNpZ25lZCBsb25nKSAqLworCiB2b2lkCiBmZmlfcHJlcF9hcmdzIChleHRlbmRlZF9jaWYgKmVjaWYsIHVuc2lnbmVkIGxvbmcgKmNvbnN0IHN0YWNrKQogewogICBjb25zdCB1bnNpZ25lZCBieXRlcyA9IGVjaWYtPmNpZi0+Ynl0ZXM7CiAgIGNvbnN0IHVuc2lnbmVkIGZsYWdzID0gZWNpZi0+Y2lmLT5mbGFnczsKICAgY29uc3QgdW5zaWduZWQgbmFyZ3MgPSBlY2lmLT5jaWYtPm5hcmdzOworI2lmICFkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpIAogICBjb25zdCBmZmlfYWJpIGFiaSA9IGVjaWYtPmNpZi0+YWJpOworI2VuZGlmCiAKICAgLyogJ3N0YWNrdG9wJyBwb2ludHMgYXQgdGhlIHByZXZpb3VzIGJhY2tjaGFpbiBwb2ludGVyLiAgKi8KICAgdW5zaWduZWQgbG9uZyAqY29uc3Qgc3RhY2t0b3AgPSBzdGFjayArIChieXRlcyAvIHNpemVvZih1bnNpZ25lZCBsb25nKSk7CkBAIC05NCwxOCArMTE4LDE5IEBACiAgIC8qICdmcHJfYmFzZScgcG9pbnRzIGF0IHRoZSBzcGFjZSBmb3IgZnByMSwgYW5kIGdyb3dzIHVwd2FyZHMgYXMKICAgICAgd2UgdXNlIEZQUiByZWdpc3RlcnMuICAqLwogICBkb3VibGUgKmZwcl9iYXNlID0gKGRvdWJsZSAqKSAoc3RhY2t0b3AgLSBBU01fTkVFRFNfUkVHSVNURVJTKSAtIE5VTV9GUFJfQVJHX1JFR0lTVEVSUzsKLSAgaW50IGZwYXJnX2NvdW50ID0gMDsKLQorICBpbnQgZ3BfY291bnQgPSAwLCBmcGFyZ19jb3VudCA9IDA7CiAKICAgLyogJ25leHRfYXJnJyBncm93cyB1cCBhcyB3ZSBwdXQgcGFyYW1ldGVycyBpbiBpdC4gICovCi0gIHVuc2lnbmVkIGxvbmcgKm5leHRfYXJnID0gc3RhY2sgKyA2OyAvKiA2IHJlc2VydmVkIHBvc2l0aW9ucy4gICovCisgIHVuc2lnbmVkIGxvbmcgKm5leHRfYXJnID0gc3RhY2sgKyBMSU5LQUdFX0FSRUFfR1BSUzsgLyogNiByZXNlcnZlZCBwb3NpdGlvbnMuICAqLwogCiAgIGludCBpOwogICBkb3VibGUgZG91YmxlX3RtcDsKICAgdm9pZCAqKnBfYXJndiA9IGVjaWYtPmF2YWx1ZTsKICAgdW5zaWduZWQgbG9uZyBncHJ2YWx1ZTsKICAgZmZpX3R5cGUqKiBwdHIgPSBlY2lmLT5jaWYtPmFyZ190eXBlczsKKyNpZiAhZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KSAKICAgY2hhciAqZGVzdF9jcHk7CisjZW5kaWYKICAgdW5zaWduZWQgc2l6ZV9hbCA9IDA7CiAKICAgLyogQ2hlY2sgdGhhdCBldmVyeXRoaW5nIHN0YXJ0cyBhbGlnbmVkIHByb3Blcmx5LiAgKi8KQEAgLTEzMCwyNSArMTU1LDMwIEBACiAJICAgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nLXBvaW50IHBhcmFtZXRlciBhcmUgc2tpcHBlZC4gICovCiAJY2FzZSBGRklfVFlQRV9GTE9BVDoKIAkgIGRvdWJsZV90bXAgPSAqKGZsb2F0ICopICpwX2FyZ3Y7Ci0JICBpZiAoZnBhcmdfY291bnQgPj0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQotCSAgICAqKGRvdWJsZSAqKW5leHRfYXJnID0gZG91YmxlX3RtcDsKLQkgIGVsc2UKKwkgIGlmIChmcGFyZ19jb3VudCA8IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKIAkgICAgKmZwcl9iYXNlKysgPSBkb3VibGVfdG1wOworI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU4pCisJICAqKGZsb2F0ICopbmV4dF9hcmcgPSAqKGZsb2F0ICopICpwX2FyZ3Y7CisjZWxzZQorCSAgKihkb3VibGUgKiluZXh0X2FyZyA9IGRvdWJsZV90bXA7CisjZW5kaWYKIAkgIG5leHRfYXJnKys7CisJICBncF9jb3VudCsrOwogCSAgZnBhcmdfY291bnQrKzsKIAkgIEZGSV9BU1NFUlQoZmxhZ3MgJiBGTEFHX0ZQX0FSR1VNRU5UUyk7CiAJICBicmVhazsKIAogCWNhc2UgRkZJX1RZUEVfRE9VQkxFOgogCSAgZG91YmxlX3RtcCA9ICooZG91YmxlICopICpwX2FyZ3Y7Ci0JICBpZiAoZnBhcmdfY291bnQgPj0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQotCSAgICAqKGRvdWJsZSAqKW5leHRfYXJnID0gZG91YmxlX3RtcDsKLQkgIGVsc2UKKwkgIGlmIChmcGFyZ19jb3VudCA8IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKIAkgICAgKmZwcl9iYXNlKysgPSBkb3VibGVfdG1wOworCSAgKihkb3VibGUgKiluZXh0X2FyZyA9IGRvdWJsZV90bXA7CiAjaWZkZWYgUE9XRVJQQzY0CiAJICBuZXh0X2FyZysrOworCSAgZ3BfY291bnQrKzsKICNlbHNlCiAJICBuZXh0X2FyZyArPSAyOworCSAgZ3BfY291bnQgKz0gMjsKICNlbmRpZgogCSAgZnBhcmdfY291bnQrKzsKIAkgIEZGSV9BU1NFUlQoZmxhZ3MgJiBGTEFHX0ZQX0FSR1VNRU5UUyk7CkBAIC0xNTcsMzAgKzE4Nyw0MSBAQAogI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCiAKIAljYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6Ci0jaWZkZWYgUE9XRVJQQzY0CisjICBpZiBkZWZpbmVkKFBPV0VSUEM2NCkgJiYgIWRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKwkgIC8qID8/PyBUaGlzIHdpbGwgZXhjZWVkIHRoZSByZWdzIGNvdW50IHdoZW4gdGhlIHZhbHVlIHN0YXJ0cyBhdCBmcDEzCisJICAgICBhbmQgaXQgd2lsbCBub3QgcHV0IHRoZSBleHRyYSBiaXQgb24gdGhlIHN0YWNrLiAgKi8KIAkgIGlmIChmcGFyZ19jb3VudCA8IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKIAkgICAgKihsb25nIGRvdWJsZSAqKSBmcHJfYmFzZSsrID0gKihsb25nIGRvdWJsZSAqKSAqcF9hcmd2OwogCSAgZWxzZQogCSAgICAqKGxvbmcgZG91YmxlICopIG5leHRfYXJnID0gKihsb25nIGRvdWJsZSAqKSAqcF9hcmd2OwogCSAgbmV4dF9hcmcgKz0gMjsKIAkgIGZwYXJnX2NvdW50ICs9IDI7Ci0jZWxzZQorIyAgZWxzZQogCSAgZG91YmxlX3RtcCA9ICgoZG91YmxlICopICpwX2FyZ3YpWzBdOwogCSAgaWYgKGZwYXJnX2NvdW50IDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQogCSAgICAqZnByX2Jhc2UrKyA9IGRvdWJsZV90bXA7Ci0JICBlbHNlCi0JICAgICooZG91YmxlICopIG5leHRfYXJnID0gZG91YmxlX3RtcDsKKwkgICooZG91YmxlICopIG5leHRfYXJnID0gZG91YmxlX3RtcDsKKyMgICAgaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorCSAgbmV4dF9hcmcrKzsKKwkgIGdwX2NvdW50Kys7CisjICAgIGVsc2UKIAkgIG5leHRfYXJnICs9IDI7CisJICBncF9jb3VudCArPSAyOworIyAgICBlbmRpZgogCSAgZnBhcmdfY291bnQrKzsKLQogCSAgZG91YmxlX3RtcCA9ICgoZG91YmxlICopICpwX2FyZ3YpWzFdOwogCSAgaWYgKGZwYXJnX2NvdW50IDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQogCSAgICAqZnByX2Jhc2UrKyA9IGRvdWJsZV90bXA7Ci0JICBlbHNlCi0JICAgICooZG91YmxlICopIG5leHRfYXJnID0gZG91YmxlX3RtcDsKKwkgICooZG91YmxlICopIG5leHRfYXJnID0gZG91YmxlX3RtcDsKKyMgICAgaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorCSAgbmV4dF9hcmcrKzsKKwkgIGdwX2NvdW50Kys7CisjICAgIGVsc2UKIAkgIG5leHRfYXJnICs9IDI7CisJICBncF9jb3VudCArPSAyOworIyAgICBlbmRpZgogCSAgZnBhcmdfY291bnQrKzsKLSNlbmRpZgorIyAgZW5kaWYKIAkgIEZGSV9BU1NFUlQoZmxhZ3MgJiBGTEFHX0ZQX0FSR1VNRU5UUyk7CiAJICBicmVhazsKICNlbmRpZgpAQCAtMTkyLDYgKzIzMyw3IEBACiAjZWxzZQogCSAgKihsb25nIGxvbmcgKikgbmV4dF9hcmcgPSAqKGxvbmcgbG9uZyAqKSAqcF9hcmd2OwogCSAgbmV4dF9hcmcgKz0gMjsKKwkgIGdwX2NvdW50ICs9IDI7CiAjZW5kaWYKIAkgIGJyZWFrOwogCWNhc2UgRkZJX1RZUEVfUE9JTlRFUjoKQEAgLTIxMSwzMiArMjUzLDM1IEBACiAJICBnb3RvIHB1dGdwcjsKIAogCWNhc2UgRkZJX1RZUEVfU1RSVUNUOgotI2lmZGVmIFBPV0VSUEM2NAotCSAgZGVzdF9jcHkgPSAoY2hhciAqKSBuZXh0X2FyZzsKIAkgIHNpemVfYWwgPSAoKnB0ciktPnNpemU7Ci0JICBpZiAoKCpwdHIpLT5lbGVtZW50c1swXS0+dHlwZSA9PSAzKQotCSAgICBzaXplX2FsID0gQUxJR04oKCpwdHIpLT5zaXplLCA4KTsKLQkgIGlmIChzaXplX2FsIDwgMyAmJiBhYmkgPT0gRkZJX0RBUldJTikKLQkgICAgZGVzdF9jcHkgKz0gNCAtIHNpemVfYWw7Ci0KLQkgIG1lbWNweSAoKGNoYXIgKikgZGVzdF9jcHksIChjaGFyICopICpwX2FyZ3YsIHNpemVfYWwpOwotCSAgbmV4dF9hcmcgKz0gKHNpemVfYWwgKyA3KSAvIDg7CisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorCSAgbmV4dF9hcmcgPSAodW5zaWduZWQgbG9uZyAqKUFMSUdOKChjaGFyICopbmV4dF9hcmcsICgqcHRyKS0+YWxpZ25tZW50KTsKKwkgIGRhcndpbjY0X3Bhc3Nfc3RydWN0X2J5X3ZhbHVlICgqcHRyLCAoY2hhciAqKSAqcF9hcmd2LCAKKwkJCQkJICh1bnNpZ25lZCkgc2l6ZV9hbCwKKwkJCQkJICh1bnNpZ25lZCBpbnQgKikgJmZwYXJnX2NvdW50LAorCQkJCQkgJmZwcl9iYXNlLCAmbmV4dF9hcmcpOwogI2Vsc2UKIAkgIGRlc3RfY3B5ID0gKGNoYXIgKikgbmV4dF9hcmc7CiAKKwkgIC8qIElmIHRoZSBmaXJzdCBtZW1iZXIgb2YgdGhlIHN0cnVjdCBpcyBhIGRvdWJsZSwgdGhlbiBpbmNsdWRlIGVub3VnaAorCSAgICAgcGFkZGluZyBpbiB0aGUgc3RydWN0IHNpemUgdG8gYWxpZ24gaXQgdG8gZG91YmxlLXdvcmQuICAqLworCSAgaWYgKCgqcHRyKS0+ZWxlbWVudHNbMF0tPnR5cGUgPT0gRkZJX1RZUEVfRE9VQkxFKQorCSAgICBzaXplX2FsID0gQUxJR04oKCpwdHIpLT5zaXplLCA4KTsKKworIyAgaWYgZGVmaW5lZChQT1dFUlBDNjQpIAorCSAgRkZJX0FTU0VSVCAoYWJpICE9IEZGSV9EQVJXSU4pOworCSAgbWVtY3B5ICgoY2hhciAqKSBkZXN0X2NweSwgKGNoYXIgKikgKnBfYXJndiwgc2l6ZV9hbCk7CisJICBuZXh0X2FyZyArPSAoc2l6ZV9hbCArIDcpIC8gODsKKyMgIGVsc2UKIAkgIC8qIFN0cnVjdHVyZXMgdGhhdCBtYXRjaCB0aGUgYmFzaWMgbW9kZXMgKFFJIDEgYnl0ZSwgSEkgMiBieXRlcywKIAkgICAgIFNJIDQgYnl0ZXMpIGFyZSBhbGlnbmVkIGFzIGlmIHRoZXkgd2VyZSB0aG9zZSBtb2Rlcy4KIAkgICAgIFN0cnVjdHVyZXMgd2l0aCAzIGJ5dGUgaW4gc2l6ZSBhcmUgcGFkZGVkIHVwd2FyZHMuICAqLwotCSAgc2l6ZV9hbCA9ICgqcHRyKS0+c2l6ZTsKLQkgIC8qIElmIHRoZSBmaXJzdCBtZW1iZXIgb2YgdGhlIHN0cnVjdCBpcyBhIGRvdWJsZSwgdGhlbiBhbGlnbgotCSAgICAgdGhlIHN0cnVjdCB0byBkb3VibGUtd29yZC4gICovCi0JICBpZiAoKCpwdHIpLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9ET1VCTEUpCi0JICAgIHNpemVfYWwgPSBBTElHTigoKnB0ciktPnNpemUsIDgpOwogCSAgaWYgKHNpemVfYWwgPCAzICYmIGFiaSA9PSBGRklfREFSV0lOKQogCSAgICBkZXN0X2NweSArPSA0IC0gc2l6ZV9hbDsKIAogCSAgbWVtY3B5KChjaGFyICopIGRlc3RfY3B5LCAoY2hhciAqKSAqcF9hcmd2LCBzaXplX2FsKTsKIAkgIG5leHRfYXJnICs9IChzaXplX2FsICsgMykgLyA0OworIyAgZW5kaWYKICNlbmRpZgogCSAgYnJlYWs7CiAKQEAgLTI0OSw2ICsyOTQsNyBAQAogCSAgZ3BydmFsdWUgPSAqKHVuc2lnbmVkIGludCAqKSAqcF9hcmd2OwogCXB1dGdwcjoKIAkgICpuZXh0X2FyZysrID0gZ3BydmFsdWU7CisJICBncF9jb3VudCsrOwogCSAgYnJlYWs7CiAJZGVmYXVsdDoKIAkgIGJyZWFrOwpAQCAtMjYyLDggKzMwOCwyNjkgQEAKICAgLy9GRklfQVNTRVJUKGZsYWdzICYgRkxBR180X0dQUl9BUkdVTUVOVFMgfHwgaW50YXJnX2NvdW50IDw9IDQpOwogfQogCisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorCisvKiBTZWUgaWYgd2UgY2FuIHB1dCBzb21lIG9mIHRoZSBzdHJ1Y3QgaW50byBmcHJzLgorICAgVGhpcyBzaG91bGQgbm90IGJlIGNhbGxlZCBmb3Igc3RydWN0dXJlcyBvZiBzaXplIDE2IGJ5dGVzLCBzaW5jZSB0aGVzZSBhcmUgbm90CisgICBicm9rZW4gb3V0IHRoaXMgd2F5LiAgKi8KK3N0YXRpYyB2b2lkCitkYXJ3aW42NF9zY2FuX3N0cnVjdF9mb3JfZmxvYXRzIChmZmlfdHlwZSAqcywgdW5zaWduZWQgKm5mcHIpCit7CisgIGludCBpOworCisgIEZGSV9BU1NFUlQgKHMtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKQorCisgIGZvciAoaSA9IDA7IHMtPmVsZW1lbnRzW2ldICE9IE5VTEw7IGkrKykKKyAgICB7CisgICAgICBmZmlfdHlwZSAqcCA9IHMtPmVsZW1lbnRzW2ldOworICAgICAgc3dpdGNoIChwLT50eXBlKQorCXsKKwkgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgorCSAgICBkYXJ3aW42NF9zY2FuX3N0cnVjdF9mb3JfZmxvYXRzIChwLCBuZnByKTsKKwkgICAgYnJlYWs7CisJICBjYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6CisJICAgICgqbmZwcikgKz0gMjsKKwkgICAgYnJlYWs7CisJICBjYXNlIEZGSV9UWVBFX0RPVUJMRToKKwkgIGNhc2UgRkZJX1RZUEVfRkxPQVQ6CisJICAgICgqbmZwcikgKz0gMTsKKwkgICAgYnJlYWs7CisJICBkZWZhdWx0OgorCSAgICBicmVhazsgICAgCisJfQorICAgIH0KK30KKworc3RhdGljIGludAorZGFyd2luNjRfc3RydWN0X3NpemVfZXhjZWVkc19ncHJzX3AgKGZmaV90eXBlICpzLCBjaGFyICpzcmMsIHVuc2lnbmVkICpuZnByKQoreworICB1bnNpZ25lZCBzdHJ1Y3Rfb2Zmc2V0PTAsIGk7CisKKyAgZm9yIChpID0gMDsgcy0+ZWxlbWVudHNbaV0gIT0gTlVMTDsgaSsrKQorICAgIHsKKyAgICAgIGNoYXIgKml0ZW1fYmFzZTsKKyAgICAgIGZmaV90eXBlICpwID0gcy0+ZWxlbWVudHNbaV07CisgICAgICAvKiBGaW5kIHRoZSBzdGFydCBvZiB0aGlzIGl0ZW0gKDAgZm9yIHRoZSBmaXJzdCBvbmUpLiAgKi8KKyAgICAgIGlmIChpID4gMCkKKyAgICAgICAgc3RydWN0X29mZnNldCA9IEFMSUdOKHN0cnVjdF9vZmZzZXQsIHAtPmFsaWdubWVudCk7CisKKyAgICAgIGl0ZW1fYmFzZSA9IHNyYyArIHN0cnVjdF9vZmZzZXQ7CisKKyAgICAgIHN3aXRjaCAocC0+dHlwZSkKKwl7CisJICBjYXNlIEZGSV9UWVBFX1NUUlVDVDoKKwkgICAgaWYgKGRhcndpbjY0X3N0cnVjdF9zaXplX2V4Y2VlZHNfZ3Byc19wIChwLCBpdGVtX2Jhc2UsIG5mcHIpKQorCSAgICAgIHJldHVybiAxOworCSAgICBicmVhazsKKwkgIGNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKKwkgICAgaWYgKCpuZnByID49IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKKwkgICAgICByZXR1cm4gMTsKKwkgICAgKCpuZnByKSArPSAxOworCSAgICBpdGVtX2Jhc2UgKz0gODsKKwkgIC8qIEZBTEwgVEhST1VHSCAqLworCSAgY2FzZSBGRklfVFlQRV9ET1VCTEU6CisJICAgIGlmICgqbmZwciA+PSBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCisJICAgICAgcmV0dXJuIDE7CisJICAgICgqbmZwcikgKz0gMTsKKwkgICAgYnJlYWs7CisJICBjYXNlIEZGSV9UWVBFX0ZMT0FUOgorCSAgICBpZiAoKm5mcHIgPj0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQorCSAgICAgIHJldHVybiAxOworCSAgICAoKm5mcHIpICs9IDE7CisJICAgIGJyZWFrOworCSAgZGVmYXVsdDoKKwkgICAgLyogSWYgd2UgdHJ5IGFuZCBwbGFjZSBhbnkgaXRlbSwgdGhhdCBpcyBub24tZmxvYXQsIG9uY2Ugd2UndmUKKwkgICAgICAgZXhjZWVkZWQgdGhlIDggR1BSIG1hcmssIHRoZW4gd2UgY2FuJ3QgZml0IHRoZSBzdHJ1Y3QuICAqLworCSAgICBpZiAoKHVuc2lnbmVkIGxvbmcpaXRlbV9iYXNlID49IDgqOCkgCisJICAgICAgcmV0dXJuIDE7CisJICAgIGJyZWFrOyAgICAKKwl9CisgICAgICAvKiBub3cgY291bnQgdGhlIHNpemUgb2Ygd2hhdCB3ZSBqdXN0IHVzZWQuICAqLworICAgICAgc3RydWN0X29mZnNldCArPSBwLT5zaXplOworICAgIH0KKyAgcmV0dXJuIDA7Cit9CisKKy8qIENhbiB0aGlzIHN0cnVjdCBiZSByZXR1cm5lZCBieSB2YWx1ZT8gICovCitpbnQgCitkYXJ3aW42NF9zdHJ1Y3RfcmV0X2J5X3ZhbHVlX3AgKGZmaV90eXBlICpzKQoreworICB1bnNpZ25lZCBuZnAgPSAwOworCisgIEZGSV9BU1NFUlQgKHMgJiYgcy0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpOworICAKKyAgLyogVGhlIGxhcmdlc3Qgc3RydWN0dXJlIHdlIGNhbiByZXR1cm4gaXMgOGxvbmcgKyAxMyBkb3VibGVzLiAgKi8KKyAgaWYgKHMtPnNpemUgPiAxNjgpCisgICAgcmV0dXJuIDA7CisgIAorICAvKiBXZSBjYW4ndCBwYXNzIG1vcmUgdGhhbiAxMyBmbG9hdHMuICAqLworICBkYXJ3aW42NF9zY2FuX3N0cnVjdF9mb3JfZmxvYXRzIChzLCAmbmZwKTsKKyAgaWYgKG5mcCA+IDEzKQorICAgIHJldHVybiAwOworICAKKyAgLyogSWYgdGhlcmUgYXJlIG5vdCB0b28gbWFueSBmbG9hdHMsIGFuZCB0aGUgc3RydWN0IGlzCisgICAgIHNtYWxsIGVub3VnaCB0byBhY2NvbW1vZGF0ZSBpbiB0aGUgR1BScywgdGhlbiBpdCBtdXN0IGJlIE9LLiAgKi8KKyAgaWYgKHMtPnNpemUgPD0gNjQpCisgICAgcmV0dXJuIDE7CisgIAorICAvKiBXZWxsLCB3ZSBoYXZlIHRvIGxvb2sgaGFyZGVyLiAgKi8KKyAgbmZwID0gMDsKKyAgaWYgKGRhcndpbjY0X3N0cnVjdF9zaXplX2V4Y2VlZHNfZ3Byc19wIChzLCBOVUxMLCAmbmZwKSkKKyAgICByZXR1cm4gMDsKKyAgCisgIHJldHVybiAxOworfQorCit2b2lkCitkYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMgKGZmaV90eXBlICpzLCBjaGFyICpzcmMsIAorCQkJICAgICB1bnNpZ25lZCAqbmZwciwgZG91YmxlICoqZnBycykKK3sKKyAgaW50IGk7CisgIGRvdWJsZSAqZnByX2Jhc2UgPSAqZnByczsKKyAgdW5zaWduZWQgc3RydWN0X29mZnNldCA9IDA7CisKKyAgLyogV2UgZG9uJ3QgYXNzdW1lIGFueXRoaW5nIGFib3V0IHRoZSBhbGlnbm1lbnQgb2YgdGhlIHNvdXJjZS4gICovCisgIGZvciAoaSA9IDA7IHMtPmVsZW1lbnRzW2ldICE9IE5VTEw7IGkrKykKKyAgICB7CisgICAgICBjaGFyICppdGVtX2Jhc2U7CisgICAgICBmZmlfdHlwZSAqcCA9IHMtPmVsZW1lbnRzW2ldOworICAgICAgLyogRmluZCB0aGUgc3RhcnQgb2YgdGhpcyBpdGVtICgwIGZvciB0aGUgZmlyc3Qgb25lKS4gICovCisgICAgICBpZiAoaSA+IDApCisgICAgICAgIHN0cnVjdF9vZmZzZXQgPSBBTElHTihzdHJ1Y3Rfb2Zmc2V0LCBwLT5hbGlnbm1lbnQpOworICAgICAgaXRlbV9iYXNlID0gc3JjICsgc3RydWN0X29mZnNldDsKKworICAgICAgc3dpdGNoIChwLT50eXBlKQorCXsKKwkgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgorCSAgICBkYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMgKHAsIGl0ZW1fYmFzZSwgbmZwciwKKwkJCQkJICAgJmZwcl9iYXNlKTsKKwkgICAgYnJlYWs7CisJICBjYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6CisJICAgIGlmICgqbmZwciA8IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKKwkgICAgICAqZnByX2Jhc2UrKyA9ICooZG91YmxlICopaXRlbV9iYXNlOworCSAgICAoKm5mcHIpICs9IDE7CisJICAgIGl0ZW1fYmFzZSArPSA4OworCSAgLyogRkFMTCBUSFJPVUdIICovCisJICBjYXNlIEZGSV9UWVBFX0RPVUJMRToKKwkgICAgaWYgKCpuZnByIDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQorCSAgICAgICpmcHJfYmFzZSsrID0gKihkb3VibGUgKilpdGVtX2Jhc2U7CisJICAgICgqbmZwcikgKz0gMTsKKwkgICAgYnJlYWs7CisJICBjYXNlIEZGSV9UWVBFX0ZMT0FUOgorCSAgICBpZiAoKm5mcHIgPCBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCisJICAgICAgKmZwcl9iYXNlKysgPSAoZG91YmxlKSAqKGZsb2F0ICopaXRlbV9iYXNlOworCSAgICAoKm5mcHIpICs9IDE7CisJICAgIGJyZWFrOworCSAgZGVmYXVsdDoKKwkgICAgYnJlYWs7ICAgIAorCX0KKyAgICAgIC8qIG5vdyBjb3VudCB0aGUgc2l6ZSBvZiB3aGF0IHdlIGp1c3QgdXNlZC4gICovCisgICAgICBzdHJ1Y3Rfb2Zmc2V0ICs9IHAtPnNpemU7CisgICAgfQorICAvKiBVcGRhdGUgdGhlIHNjb3Jlcy4gICovCisgICpmcHJzID0gZnByX2Jhc2U7Cit9CisKKy8qIERhcndpbjY0IHNwZWNpYWwgcnVsZXMuCisgICBCcmVhayBvdXQgYSBzdHJ1Y3QgaW50byBwYXJhbXMgYW5kIGZsb2F0IHJlZ2lzdGVycy4gICovCitzdGF0aWMgdm9pZAorZGFyd2luNjRfcGFzc19zdHJ1Y3RfYnlfdmFsdWUgKGZmaV90eXBlICpzLCBjaGFyICpzcmMsIHVuc2lnbmVkIHNpemUsCisJCQkgICAgICAgdW5zaWduZWQgKm5mcHIsIGRvdWJsZSAqKmZwcnMsIHVuc2lnbmVkIGxvbmcgKiphcmcpCit7CisgIHVuc2lnbmVkIGxvbmcgKm5leHRfYXJnID0gKmFyZzsKKyAgY2hhciAqZGVzdF9jcHkgPSAoY2hhciAqKW5leHRfYXJnOworCisgIEZGSV9BU1NFUlQgKHMtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKQorCisgIGlmICghc2l6ZSkKKyAgICByZXR1cm47CisKKyAgLyogRmlyc3QuLi4gc3BlY2lhbCBjYXNlcy4gICovCisgIGlmIChzaXplIDwgMworICAgICAgfHwgKHNpemUgPT0gNCAKKwkgICYmIHMtPmVsZW1lbnRzWzBdIAorCSAgJiYgcy0+ZWxlbWVudHNbMF0tPnR5cGUgIT0gRkZJX1RZUEVfRkxPQVQpKQorICAgIHsKKyAgICAgIC8qIE11c3QgYmUgYXQgbGVhc3Qgb25lIEdQUiwgcGFkZGluZyBpcyB1bnNwZWNpZmllZCBpbiB2YWx1ZSwgCisJIGxldCdzIG1ha2UgaXQgemVyby4gICovCisgICAgICAqbmV4dF9hcmcgPSAwVUw7IAorICAgICAgZGVzdF9jcHkgKz0gOCAtIHNpemU7CisgICAgICBtZW1jcHkgKChjaGFyICopIGRlc3RfY3B5LCBzcmMsIHNpemUpOworICAgICAgbmV4dF9hcmcrKzsKKyAgICB9CisgIGVsc2UgaWYgKHNpemUgPT0gMTYpCisgICAgeworICAgICAgbWVtY3B5ICgoY2hhciAqKSBkZXN0X2NweSwgc3JjLCBzaXplKTsKKyAgICAgIG5leHRfYXJnICs9IDI7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgLyogbm93IHRoZSBnZW5lcmFsIGNhc2UsIHdlIGNvbnNpZGVyIGVtYmVkZGVkIGZsb2F0cy4gICovCisgICAgICBtZW1jcHkgKChjaGFyICopIGRlc3RfY3B5LCBzcmMsIHNpemUpOworICAgICAgZGFyd2luNjRfcGFzc19zdHJ1Y3RfZmxvYXRzIChzLCBzcmMsIG5mcHIsIGZwcnMpOworICAgICAgbmV4dF9hcmcgKz0gKHNpemUrNykvODsKKyAgICB9CisgICAgCisgICphcmcgPSBuZXh0X2FyZzsKK30KKworZG91YmxlICoKK2RhcndpbjY0X3N0cnVjdF9mbG9hdHNfdG9fbWVtIChmZmlfdHlwZSAqcywgY2hhciAqZGVzdCwgZG91YmxlICpmcHJzLCB1bnNpZ25lZCAqbmYpCit7CisgIGludCBpOworICB1bnNpZ25lZCBzdHJ1Y3Rfb2Zmc2V0ID0gMDsKKworICAvKiBXZSBkb24ndCBhc3N1bWUgYW55dGhpbmcgYWJvdXQgdGhlIGFsaWdubWVudCBvZiB0aGUgc291cmNlLiAgKi8KKyAgZm9yIChpID0gMDsgcy0+ZWxlbWVudHNbaV0gIT0gTlVMTDsgaSsrKQorICAgIHsKKyAgICAgIGNoYXIgKml0ZW1fYmFzZTsKKyAgICAgIGZmaV90eXBlICpwID0gcy0+ZWxlbWVudHNbaV07CisgICAgICAvKiBGaW5kIHRoZSBzdGFydCBvZiB0aGlzIGl0ZW0gKDAgZm9yIHRoZSBmaXJzdCBvbmUpLiAgKi8KKyAgICAgIGlmIChpID4gMCkKKyAgICAgICAgc3RydWN0X29mZnNldCA9IEFMSUdOKHN0cnVjdF9vZmZzZXQsIHAtPmFsaWdubWVudCk7CisgICAgICBpdGVtX2Jhc2UgPSBkZXN0ICsgc3RydWN0X29mZnNldDsKKworICAgICAgc3dpdGNoIChwLT50eXBlKQorCXsKKwkgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgorCSAgICBmcHJzID0gZGFyd2luNjRfc3RydWN0X2Zsb2F0c190b19tZW0gKHAsIGl0ZW1fYmFzZSwgZnBycywgbmYpOworCSAgICBicmVhazsKKwkgIGNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKKwkgICAgaWYgKCpuZiA8IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKKwkgICAgICB7CisJCSooZG91YmxlICopaXRlbV9iYXNlID0gKmZwcnMrKyA7CisJCSgqbmYpICs9IDE7CisJICAgICAgfQorCSAgICBpdGVtX2Jhc2UgKz0gODsKKwkgIC8qIEZBTEwgVEhST1VHSCAqLworCSAgY2FzZSBGRklfVFlQRV9ET1VCTEU6CisJICAgIGlmICgqbmYgPCBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCisJICAgICAgeworCQkqKGRvdWJsZSAqKWl0ZW1fYmFzZSA9ICpmcHJzKysgOworCQkoKm5mKSArPSAxOworCSAgICAgIH0KKwkgICAgYnJlYWs7CisJICBjYXNlIEZGSV9UWVBFX0ZMT0FUOgorCSAgICBpZiAoKm5mIDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQorCSAgICAgIHsKKwkJKihmbG9hdCAqKWl0ZW1fYmFzZSA9IChmbG9hdCkgKmZwcnMrKyA7CisJCSgqbmYpICs9IDE7CisJICAgICAgfQorCSAgICBicmVhazsKKwkgIGRlZmF1bHQ6CisJICAgIGJyZWFrOyAgICAKKwl9CisgICAgICAvKiBub3cgY291bnQgdGhlIHNpemUgb2Ygd2hhdCB3ZSBqdXN0IHVzZWQuICAqLworICAgICAgc3RydWN0X29mZnNldCArPSBwLT5zaXplOworICAgIH0KKyAgcmV0dXJuIGZwcnM7Cit9CisKKyNlbmRpZgorCiAvKiBBZGp1c3QgdGhlIHNpemUgb2YgUyB0byBiZSBjb3JyZWN0IGZvciBEYXJ3aW4uCi0gICBPbiBEYXJ3aW4sIHRoZSBmaXJzdCBmaWVsZCBvZiBhIHN0cnVjdHVyZSBoYXMgbmF0dXJhbCBhbGlnbm1lbnQuICAqLworICAgT24gRGFyd2luIG0zMiwgdGhlIGZpcnN0IGZpZWxkIG9mIGEgc3RydWN0dXJlIGhhcyBuYXR1cmFsIGFsaWdubWVudC4gIAorICAgT24gRGFyd2luIG02NCwgYWxsIGZpZWxkcyBoYXZlIG5hdHVyYWwgYWxpZ25tZW50LiAgKi8KIAogc3RhdGljIHZvaWQKIGRhcndpbl9hZGp1c3RfYWdncmVnYXRlX3NpemVzIChmZmlfdHlwZSAqcykKQEAgLTI4MCwyMiArNTg3LDI5IEBACiAgICAgICBpbnQgYWxpZ247CiAgICAgICAKICAgICAgIHAgPSBzLT5lbGVtZW50c1tpXTsKLSAgICAgIGRhcndpbl9hZGp1c3RfYWdncmVnYXRlX3NpemVzIChwKTsKLSAgICAgIGlmIChpID09IDAKLQkgICYmIChwLT50eXBlID09IEZGSV9UWVBFX1VJTlQ2NAotCSAgICAgIHx8IHAtPnR5cGUgPT0gRkZJX1RZUEVfU0lOVDY0Ci0JICAgICAgfHwgcC0+dHlwZSA9PSBGRklfVFlQRV9ET1VCTEUKLQkgICAgICB8fCBwLT5hbGlnbm1lbnQgPT0gOCkpCi0JYWxpZ24gPSA4OworICAgICAgaWYgKHAtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKQorCWRhcndpbl9hZGp1c3RfYWdncmVnYXRlX3NpemVzIChwKTsKKyNpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisgICAgICAvKiBOYXR1cmFsIGFsaWdubWVudCBmb3IgYWxsIGl0ZW1zLiAgKi8KKyAgICAgIGFsaWduID0gcC0+YWxpZ25tZW50OworI2Vsc2UKKyAgICAgIC8qIE5hdHJ1YWwgYWxpZ25tZW50IGZvciB0aGUgZmlyc3QgaXRlbS4uLiAqLworICAgICAgaWYgKGkgPT0gMCkKKwlhbGlnbiA9IHAtPmFsaWdubWVudDsKICAgICAgIGVsc2UgaWYgKHAtPmFsaWdubWVudCA9PSAxNiB8fCBwLT5hbGlnbm1lbnQgPCA0KQorCS8qIC4uIHN1YnNlcXVlbnQgaXRlbXMgd2l0aCB2ZWN0b3Igb3IgYWxpZ24gPCA0IGhhdmUgbmF0dXJhbCBhbGlnbi4gICovCiAJYWxpZ24gPSBwLT5hbGlnbm1lbnQ7CiAgICAgICBlbHNlCisJLyogLi4gb3IgYWxpZ24gaXMgNC4gICovCiAJYWxpZ24gPSA0OworI2VuZGlmCisgICAgICAvKiBQYWQsIGlmIG5lY2Vzc2FyeSwgYmVmb3JlIGFkZGluZyB0aGUgY3VycmVudCBpdGVtLiAgKi8KICAgICAgIHMtPnNpemUgPSBBTElHTihzLT5zaXplLCBhbGlnbikgKyBwLT5zaXplOwogICAgIH0KICAgCiAgIHMtPnNpemUgPSBBTElHTihzLT5zaXplLCBzLT5hbGlnbm1lbnQpOwogICAKKyAgLyogVGhpcyBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSBvbiBtNjQsIGJ1dCBoYXJtbGVzcy4gICovCiAgIGlmIChzLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9VSU5UNjQKICAgICAgIHx8IHMtPmVsZW1lbnRzWzBdLT50eXBlID09IEZGSV9UWVBFX1NJTlQ2NAogICAgICAgfHwgcy0+ZWxlbWVudHNbMF0tPnR5cGUgPT0gRkZJX1RZUEVfRE9VQkxFCkBAIC0zNDQsMTAgKzY1OCwxMCBAQAogZmZpX3ByZXBfY2lmX21hY2hkZXAgKGZmaV9jaWYgKmNpZikKIHsKICAgLyogQWxsIHRoaXMgaXMgZm9yIHRoZSBEQVJXSU4gQUJJLiAgKi8KLSAgaW50IGk7CisgIHVuc2lnbmVkIGk7CiAgIGZmaV90eXBlICoqcHRyOwogICB1bnNpZ25lZCBieXRlczsKLSAgaW50IGZwYXJnX2NvdW50ID0gMCwgaW50YXJnX2NvdW50ID0gMDsKKyAgdW5zaWduZWQgZnBhcmdfY291bnQgPSAwLCBpbnRhcmdfY291bnQgPSAwOwogICB1bnNpZ25lZCBmbGFncyA9IDA7CiAgIHVuc2lnbmVkIHNpemVfYWwgPSAwOwogCkBAIC0zNzIsMTYgKzY4NiwyNSBAQAogICAvKiBTcGFjZSBmb3IgdGhlIGZyYW1lIHBvaW50ZXIsIGNhbGxlZSdzIExSLCBDUiwgZXRjLCBhbmQgZm9yCiAgICAgIHRoZSBhc20ncyB0ZW1wIHJlZ3MuICAqLwogCi0gIGJ5dGVzID0gKDYgKyBBU01fTkVFRFNfUkVHSVNURVJTKSAqIHNpemVvZihsb25nKTsKKyAgYnl0ZXMgPSAoTElOS0FHRV9BUkVBX0dQUlMgKyBBU01fTkVFRFNfUkVHSVNURVJTKSAqIHNpemVvZih1bnNpZ25lZCBsb25nKTsKIAotICAvKiBSZXR1cm4gdmFsdWUgaGFuZGxpbmcuICBUaGUgcnVsZXMgYXJlIGFzIGZvbGxvd3M6CisgIC8qIFJldHVybiB2YWx1ZSBoYW5kbGluZy4gIAorICAgIFRoZSBydWxlcyBtMzIgYXJlIGFzIGZvbGxvd3M6CiAgICAgIC0gMzItYml0IChvciBsZXNzKSBpbnRlZ2VyIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gZ3ByMzsKLSAgICAgLSBTdHJ1Y3R1cmVzIG9mIHNpemUgPD0gNCBieXRlcyBhbHNvIHJldHVybmVkIGluIGdwcjM7Ci0gICAgIC0gNjQtYml0IGludGVnZXIgdmFsdWVzIGFuZCBzdHJ1Y3R1cmVzIGJldHdlZW4gNSBhbmQgOCBieXRlcyBhcmUgcmV0dXJuZWQKLSAgICAgICBpbiBncHIzIGFuZCBncHI0OworICAgICAtIHN0cnVjdHVyZXMgb2Ygc2l6ZSA8PSA0IGJ5dGVzIGFsc28gcmV0dXJuZWQgaW4gZ3ByMzsKKyAgICAgLSA2NC1iaXQgaW50ZWdlciB2YWx1ZXMgWz8/PyBhbmQgc3RydWN0dXJlcyBiZXR3ZWVuIDUgYW5kIDggYnl0ZXNdIGFyZQorICAgICAgIHJldHVybmVkIGluIGdwcjMgYW5kIGdwcjQ7CiAgICAgIC0gU2luZ2xlL2RvdWJsZSBGUCB2YWx1ZXMgYXJlIHJldHVybmVkIGluIGZwcjE7CiAgICAgIC0gTG9uZyBkb3VibGUgRlAgKGlmIG5vdCBlcXVpdmFsZW50IHRvIGRvdWJsZSkgdmFsdWVzIGFyZSByZXR1cm5lZCBpbgogICAgICAgIGZwcjEgYW5kIGZwcjI7CisgICAgIG02NDoKKyAgICAgLSA2NC1iaXQgb3Igc21hbGxlciBpbnRlZ3JhbCB2YWx1ZXMgYXJlIHJldHVybmVkIGluIEdQUjMKKyAgICAgLSBTaW5nbGUvZG91YmxlIEZQIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gZnByMTsKKyAgICAgLSBMb25nIGRvdWJsZSBGUCB2YWx1ZXMgYXJlIHJldHVybmVkIGluIGZwcjEgYW5kIGZwcjI7CisgICAgIG02NCBTdHJ1Y3R1cmVzOgorICAgICAtIElmIHRoZSBzdHJ1Y3R1cmUgY291bGQgYmUgYWNjb21tb2RhdGVkIGluIHJlZ2lzdGVycyB3ZXJlIGl0IHRvIGJlIHRoZQorICAgICAgIGZpcnN0IGFyZ3VtZW50IHRvIGEgcm91dGluZSwgdGhlbiBpdCBpcyByZXR1cm5lZCBpbiB0aG9zZSByZWdpc3RlcnMuCisgICAgIG0zMi9tNjQgc3RydWN0dXJlcyBvdGhlcndpc2U6CiAgICAgIC0gTGFyZ2VyIHN0cnVjdHVyZXMgdmFsdWVzIGFyZSBhbGxvY2F0ZWQgc3BhY2UgYW5kIGEgcG9pbnRlciBpcyBwYXNzZWQKICAgICAgICBhcyB0aGUgZmlyc3QgYXJndW1lbnQuICAqLwogICBzd2l0Y2ggKGNpZi0+cnR5cGUtPnR5cGUpCkBAIC00MTAsOSArNzMzLDQyIEBACiAgICAgICBicmVhazsKIAogICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgorI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKyAgICAgIHsKKwkvKiBDYW4gd2UgZml0IHRoZSBzdHJ1Y3QgaW50byByZWdzPyAgKi8KKwlpZiAoZGFyd2luNjRfc3RydWN0X3JldF9ieV92YWx1ZV9wIChjaWYtPnJ0eXBlKSkKKwkgIHsKKwkgICAgdW5zaWduZWQgbmZwciA9IDA7CisJICAgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU19TVFJVQ1Q7CisJICAgIGlmIChjaWYtPnJ0eXBlLT5zaXplICE9IDE2KQorCSAgICAgIGRhcndpbjY0X3NjYW5fc3RydWN0X2Zvcl9mbG9hdHMgKGNpZi0+cnR5cGUsICZuZnByKSA7CisJICAgIGVsc2UKKwkgICAgICBmbGFncyB8PSBGTEFHX1JFVFVSTlNfMTI4QklUUzsKKwkgICAgLyogV2lsbCBiZSAwIGZvciAxNmJ5dGUgc3RydWN0LiAgKi8KKwkgICAgaWYgKG5mcHIpCisJICAgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TX0ZQOworCSAgfQorCWVsc2UgLyogQnkgcmVmLiAqLworCSAgeworCSAgICBmbGFncyB8PSBGTEFHX1JFVFZBTF9SRUZFUkVOQ0U7CisJICAgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU19OT1RISU5HOworCSAgICBpbnRhcmdfY291bnQrKzsKKwkgIH0KKyAgICAgIH0KKyNlbGlmIGRlZmluZWQoREFSV0lOX1BQQykKKyAgICAgIGlmIChjaWYtPnJ0eXBlLT5zaXplIDw9IDQpCisJZmxhZ3MgfD0gRkxBR19SRVRVUk5TX1NUUlVDVDsKKyAgICAgIGVsc2UgLyogZWxzZSBieSByZWZlcmVuY2UuICAqLworCXsKKwkgIGZsYWdzIHw9IEZMQUdfUkVUVkFMX1JFRkVSRU5DRTsKKwkgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU19OT1RISU5HOworCSAgaW50YXJnX2NvdW50Kys7CisJfQorI2Vsc2UgLyogYXNzdW1lIHdlIHBhc3MgYnkgcmVmLiAgKi8KICAgICAgIGZsYWdzIHw9IEZMQUdfUkVUVkFMX1JFRkVSRU5DRTsKICAgICAgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU19OT1RISU5HOwogICAgICAgaW50YXJnX2NvdW50Kys7CisjZW5kaWYKICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkZJX1RZUEVfVk9JRDoKICAgICAgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU19OT1RISU5HOwpAQCAtNDI1LDU3ICs3ODEsODMgQEAKIAogICAvKiBUaGUgZmlyc3QgTlVNX0dQUl9BUkdfUkVHSVNURVJTIHdvcmRzIG9mIGludGVnZXIgYXJndW1lbnRzLCBhbmQgdGhlCiAgICAgIGZpcnN0IE5VTV9GUFJfQVJHX1JFR0lTVEVSUyBmcCBhcmd1bWVudHMsIGdvIGluIHJlZ2lzdGVyczsgdGhlIHJlc3QKLSAgICAgZ29lcyBvbiB0aGUgc3RhY2suICBTdHJ1Y3R1cmVzIGFyZSBwYXNzZWQgYXMgYSBwb2ludGVyIHRvIGEgY29weSBvZgotICAgICB0aGUgc3RydWN0dXJlLiBTdHVmZiBvbiB0aGUgc3RhY2sgbmVlZHMgdG8ga2VlcCBwcm9wZXIgYWxpZ25tZW50LiAgKi8KKyAgICAgZ29lcyBvbiB0aGUgc3RhY2suICAKKyAgICAgPz8/IFN0cnVjdHVyZXMgYXJlIHBhc3NlZCBhcyBhIHBvaW50ZXIgdG8gYSBjb3B5IG9mIHRoZSBzdHJ1Y3R1cmUuIAorICAgICBTdHVmZiBvbiB0aGUgc3RhY2sgbmVlZHMgdG8ga2VlcCBwcm9wZXIgYWxpZ25tZW50LiAgCisgICAgIEZvciBtNjQgdGhlIGNvdW50IGlzIGVmZmVjdGl2ZWx5IG9mIGhhbGYtR1BScy4gICovCiAgIGZvciAocHRyID0gY2lmLT5hcmdfdHlwZXMsIGkgPSBjaWYtPm5hcmdzOyBpID4gMDsgaS0tLCBwdHIrKykKICAgICB7CisgICAgICB1bnNpZ25lZCBhbGlnbl93b3JkczsKICAgICAgIHN3aXRjaCAoKCpwdHIpLT50eXBlKQogCXsKIAljYXNlIEZGSV9UWVBFX0ZMT0FUOgogCWNhc2UgRkZJX1RZUEVfRE9VQkxFOgogCSAgZnBhcmdfY291bnQrKzsKKyNpZiAhZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQogCSAgLyogSWYgdGhpcyBGUCBhcmcgaXMgZ29pbmcgb24gdGhlIHN0YWNrLCBpdCBtdXN0IGJlCiAJICAgICA4LWJ5dGUtYWxpZ25lZC4gICovCiAJICBpZiAoZnBhcmdfY291bnQgPiBOVU1fRlBSX0FSR19SRUdJU1RFUlMKLQkgICAgICAmJiBpbnRhcmdfY291bnQlMiAhPSAwKQorCSAgICAgICYmIChpbnRhcmdfY291bnQgJiAweDAxKSAhPSAwKQogCSAgICBpbnRhcmdfY291bnQrKzsKKyNlbmRpZgogCSAgYnJlYWs7CiAKICNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQotCiAJY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgogCSAgZnBhcmdfY291bnQgKz0gMjsKIAkgIC8qIElmIHRoaXMgRlAgYXJnIGlzIGdvaW5nIG9uIHRoZSBzdGFjaywgaXQgbXVzdCBiZQotCSAgICAgOC1ieXRlLWFsaWduZWQuICAqLwotCSAgaWYgKGZwYXJnX2NvdW50ID4gTlVNX0ZQUl9BUkdfUkVHSVNURVJTCi0JICAgICAgJiYgaW50YXJnX2NvdW50JTIgIT0gMCkKLQkgICAgaW50YXJnX2NvdW50Kys7Ci0JICBpbnRhcmdfY291bnQgKz0yOworCSAgICAgMTYtYnl0ZS1hbGlnbmVkLiAgKi8KKwkgIGlmIChmcGFyZ19jb3VudCA+PSBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCisjaWYgZGVmaW5lZCAoUE9XRVJQQzY0KQorCSAgICBpbnRhcmdfY291bnQgPSBBTElHTihpbnRhcmdfY291bnQsIDIpOworI2Vsc2UKKwkgICAgaW50YXJnX2NvdW50ID0gQUxJR04oaW50YXJnX2NvdW50LCA0KTsKKyNlbmRpZgogCSAgYnJlYWs7CiAjZW5kaWYKIAogCWNhc2UgRkZJX1RZUEVfVUlOVDY0OgogCWNhc2UgRkZJX1RZUEVfU0lOVDY0OgorI2lmIGRlZmluZWQoUE9XRVJQQzY0KQorCSAgaW50YXJnX2NvdW50Kys7CisjZWxzZQogCSAgLyogJ2xvbmcgbG9uZycgYXJndW1lbnRzIGFyZSBwYXNzZWQgYXMgdHdvIHdvcmRzLCBidXQKIAkgICAgIGVpdGhlciBib3RoIHdvcmRzIG11c3QgZml0IGluIHJlZ2lzdGVycyBvciBib3RoIGdvCiAJICAgICBvbiB0aGUgc3RhY2suICBJZiB0aGV5IGdvIG9uIHRoZSBzdGFjaywgdGhleSBtdXN0CiAJICAgICBiZSA4LWJ5dGUtYWxpZ25lZC4gICovCiAJICBpZiAoaW50YXJnX2NvdW50ID09IE5VTV9HUFJfQVJHX1JFR0lTVEVSUy0xCi0JICAgICAgfHwgKGludGFyZ19jb3VudCA+PSBOVU1fR1BSX0FSR19SRUdJU1RFUlMgJiYgaW50YXJnX2NvdW50JTIgIT0gMCkpCisJICAgICAgfHwgKGludGFyZ19jb3VudCA+PSBOVU1fR1BSX0FSR19SRUdJU1RFUlMgCisJICAgICAgICAgICYmIChpbnRhcmdfY291bnQgJiAweDAxKSAhPSAwKSkKIAkgICAgaW50YXJnX2NvdW50Kys7CiAJICBpbnRhcmdfY291bnQgKz0gMjsKKyNlbmRpZgogCSAgYnJlYWs7CiAKIAljYXNlIEZGSV9UWVBFX1NUUlVDVDoKIAkgIHNpemVfYWwgPSAoKnB0ciktPnNpemU7Ci0JICAvKiBJZiB0aGUgZmlyc3QgbWVtYmVyIG9mIHRoZSBzdHJ1Y3QgaXMgYSBkb3VibGUsIHRoZW4gYWxpZ24KLQkgICAgIHRoZSBzdHJ1Y3QgdG8gZG91YmxlLXdvcmQuICAqLwotCSAgaWYgKCgqcHRyKS0+ZWxlbWVudHNbMF0tPnR5cGUgPT0gRkZJX1RZUEVfRE9VQkxFKQotCSAgICBzaXplX2FsID0gQUxJR04oKCpwdHIpLT5zaXplLCA4KTsKLSNpZmRlZiBQT1dFUlBDNjQKKyNpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisJICBhbGlnbl93b3JkcyA9ICgqcHRyKS0+YWxpZ25tZW50ID4+IDM7CisJICBpZiAoYWxpZ25fd29yZHMpCisJICAgIGludGFyZ19jb3VudCA9IEFMSUdOKGludGFyZ19jb3VudCwgYWxpZ25fd29yZHMpOworCSAgLyogQmFzZSBzaXplIG9mIHRoZSBzdHJ1Y3QuICAqLwogCSAgaW50YXJnX2NvdW50ICs9IChzaXplX2FsICsgNykgLyA4OworCSAgLyogSWYgMTYgYnl0ZXMgdGhlbiBkb24ndCB3b3JyeSBhYm91dCBmbG9hdHMuICAqLworCSAgaWYgKHNpemVfYWwgIT0gMTYpCisJICAgIC8qIFNjYW4gdGhyb3VnaCBmb3IgZmxvYXRzIHRvIGJlIHBsYWNlZCBpbiByZWdzLiAgKi8KKwkgICAgZGFyd2luNjRfc2Nhbl9zdHJ1Y3RfZm9yX2Zsb2F0cyAoKnB0ciwgJmZwYXJnX2NvdW50KSA7CiAjZWxzZQorCSAgYWxpZ25fd29yZHMgPSAoKnB0ciktPmFsaWdubWVudCA+PiAyOworCSAgaWYgKGFsaWduX3dvcmRzKQorCSAgICBpbnRhcmdfY291bnQgPSBBTElHTihpbnRhcmdfY291bnQsIGFsaWduX3dvcmRzKTsKKwkgIC8qIElmIHRoZSBmaXJzdCBtZW1iZXIgb2YgdGhlIHN0cnVjdCBpcyBhIGRvdWJsZSwgdGhlbiBhbGlnbgorCSAgICAgdGhlIHN0cnVjdCB0byBkb3VibGUtd29yZC4gCisJICBpZiAoKCpwdHIpLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9ET1VCTEUpCisJICAgIHNpemVfYWwgPSBBTElHTigoKnB0ciktPnNpemUsIDgpOyAqLworIyAgaWZkZWYgUE9XRVJQQzY0CisJICBpbnRhcmdfY291bnQgKz0gKHNpemVfYWwgKyA3KSAvIDg7CisjICBlbHNlCiAJICBpbnRhcmdfY291bnQgKz0gKHNpemVfYWwgKyAzKSAvIDQ7CisjICBlbmRpZgogI2VuZGlmCiAJICBicmVhazsKIApAQCAtNDkwLDkgKzg3MiwxOCBAQAogICBpZiAoZnBhcmdfY291bnQgIT0gMCkKICAgICBmbGFncyB8PSBGTEFHX0ZQX0FSR1VNRU5UUzsKIAorI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKyAgLyogU3BhY2UgdG8gaW1hZ2UgdGhlIEZQUiByZWdpc3RlcnMsIGlmIG5lZWRlZCAtIHdoaWNoIGluY2x1ZGVzIHdoZW4gdGhleSBtaWdodCBiZQorICAgICB1c2VkIGluIGEgc3RydWN0IHJldHVybi4gICovCisgIGlmIChmcGFyZ19jb3VudCAhPSAwIAorICAgICAgfHwgKChmbGFncyAmIEZMQUdfUkVUVVJOU19TVFJVQ1QpCisJICAgJiYgKGZsYWdzICYgRkxBR19SRVRVUk5TX0ZQKSkpCisgICAgYnl0ZXMgKz0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTICogc2l6ZW9mKGRvdWJsZSk7CisjZWxzZQogICAvKiBTcGFjZSBmb3IgdGhlIEZQUiByZWdpc3RlcnMsIGlmIG5lZWRlZC4gICovCiAgIGlmIChmcGFyZ19jb3VudCAhPSAwKQogICAgIGJ5dGVzICs9IE5VTV9GUFJfQVJHX1JFR0lTVEVSUyAqIHNpemVvZihkb3VibGUpOworI2VuZGlmCiAKICAgLyogU3RhY2sgc3BhY2UuICAqLwogI2lmZGVmIFBPV0VSUEM2NApAQCAtNTA2LDcgKzg5Nyw3IEBACiAgICAgYnl0ZXMgKz0gTlVNX0dQUl9BUkdfUkVHSVNURVJTICogc2l6ZW9mKGxvbmcpOwogCiAgIC8qIFRoZSBzdGFjayBzcGFjZSBhbGxvY2F0ZWQgbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAxNiBieXRlcy4gICovCi0gIGJ5dGVzID0gKGJ5dGVzICsgMTUpICYgfjB4RjsKKyAgYnl0ZXMgPSBBTElHTihieXRlcywgMTYpIDsKIAogICBjaWYtPmZsYWdzID0gZmxhZ3M7CiAgIGNpZi0+Ynl0ZXMgPSBieXRlczsKQEAgLTUxNiw4ICs5MDcsOSBAQAogCiBleHRlcm4gdm9pZCBmZmlfY2FsbF9BSVgoZXh0ZW5kZWRfY2lmICosIGxvbmcsIHVuc2lnbmVkLCB1bnNpZ25lZCAqLAogCQkJIHZvaWQgKCpmbikodm9pZCksIHZvaWQgKCpmbjIpKHZvaWQpKTsKKwogZXh0ZXJuIHZvaWQgZmZpX2NhbGxfREFSV0lOKGV4dGVuZGVkX2NpZiAqLCBsb25nLCB1bnNpZ25lZCwgdW5zaWduZWQgKiwKLQkJCSAgICB2b2lkICgqZm4pKHZvaWQpLCB2b2lkICgqZm4yKSh2b2lkKSk7CisJCQkgICAgdm9pZCAoKmZuKSh2b2lkKSwgdm9pZCAoKmZuMikodm9pZCksIGZmaV90eXBlKik7CiAKIHZvaWQKIGZmaV9jYWxsIChmZmlfY2lmICpjaWYsIHZvaWQgKCpmbikodm9pZCksIHZvaWQgKnJ2YWx1ZSwgdm9pZCAqKmF2YWx1ZSkKQEAgLTU0MiwxMSArOTM0LDExIEBACiAgICAgewogICAgIGNhc2UgRkZJX0FJWDoKICAgICAgIGZmaV9jYWxsX0FJWCgmZWNpZiwgLShsb25nKWNpZi0+Ynl0ZXMsIGNpZi0+ZmxhZ3MsIGVjaWYucnZhbHVlLCBmbiwKLQkJICAgZmZpX3ByZXBfYXJncyk7CisJCSAgIEZGSV9GTihmZmlfcHJlcF9hcmdzKSk7CiAgICAgICBicmVhazsKICAgICBjYXNlIEZGSV9EQVJXSU46CiAgICAgICBmZmlfY2FsbF9EQVJXSU4oJmVjaWYsIC0obG9uZyljaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLCBlY2lmLnJ2YWx1ZSwgZm4sCi0JCSAgICAgIGZmaV9wcmVwX2FyZ3MpOworCQkgICAgICBGRklfRk4oZmZpX3ByZXBfYXJncyksIGNpZi0+cnR5cGUpOwogICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIEZGSV9BU1NFUlQoMCk7CkBAIC01NjYsNTggKzk1OCw0OCBAQAogfSBhaXhfZmQ7CiAKIC8qIGhlcmUgSSdkIGxpa2UgdG8gYWRkIHRoZSBzdGFjayBmcmFtZSBsYXlvdXQgd2UgdXNlIGluIGRhcndpbl9jbG9zdXJlLlMKLSAgIGFuZCBhaXhfY2xzb3VyZS5TCisgICBhbmQgYWl4X2Nsb3N1cmUuUwogCi0gICBTUCBwcmV2aW91cyAtPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA8LS0tIGNoaWxkIGZyYW1lCi0JCSAgfCBiYWNrIGNoYWluIHRvIGNhbGxlciA0ICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA0Ci0JCSAgfCBzYXZlZCBDUiA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA4Ci0JCSAgfCBzYXZlZCBMUiA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAxMgotCQkgIHwgcmVzZXJ2ZWQgZm9yIGNvbXBpbGVycyA0ICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMTYKLQkJICB8IHJlc2VydmVkIGZvciBiaW5kZXJzIDQgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDIwCi0JCSAgfCBzYXZlZCBUT0MgcG9pbnRlciA0ICAgICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAyNAotCQkgIHwgYWx3YXlzIHJlc2VydmVkIDgqND0zMiAocHJldmlvdXMgR1BScyl8Ci0JCSAgfCBhY2NvcmRpbmcgdG8gdGhlIGxpbmthZ2UgY29udmVudGlvbiAgIHwKLQkJICB8IGZyb20gQUlYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDU2Ci0JCSAgfCBvdXIgRlBSIGFyZWEgMTMqOD0xMDQgICAgICAgICAgICAgICAgIHwKLQkJICB8IGYxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgIHwgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgfCBmMTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAxNjAKLQkJICB8IHJlc3VsdCBhcmVhIDggICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDE2OAotCQkgIHwgYWxpZ25lbWVudCB0byB0aGUgbmV4dCBtdWx0aXBsZSBvZiAxNiB8Ci1TUCBjdXJyZW50IC0tPiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAxNzYgPC0gcGFyZW50IGZyYW1lCi0JCSAgfCBiYWNrIGNoYWluIHRvIGNhbGxlciA0ICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAxODAKLQkJICB8IHNhdmVkIENSIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDE4NAotCQkgIHwgc2F2ZWQgTFIgNCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMTg4Ci0JCSAgfCByZXNlcnZlZCBmb3IgY29tcGlsZXJzIDQgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAxOTIKLQkJICB8IHJlc2VydmVkIGZvciBiaW5kZXJzIDQgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDE5NgotCQkgIHwgc2F2ZWQgVE9DIHBvaW50ZXIgNCAgICAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMjAwCi0JCSAgfCBhbHdheXMgcmVzZXJ2ZWQgOCo0PTMyICB3ZSBzdG9yZSBvdXIgIHwKLQkJICB8IEdQUnMgaGVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgIHwgcjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgfCAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICB8IHIxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDIzMgotCQkgIHwgb3ZlcmZsb3cgcGFydCAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgeHh4Ci0JCSAgfCA/Pz8/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB4eHgKKyAgIG0zMi9tNjQKKworICAgVGhlIHN0YWNrIGxheW91dCBsb29rcyBsaWtlIHRoaXM6CisKKyAgIHwgICBBZGRpdGlvbmFsIHBhcmFtcy4uLgkJCXwgfCAgICAgSGlnaGVyIGFkZHJlc3MKKyAgIH4JCQkJCQl+IH4KKyAgIHwgICBQYXJhbWV0ZXJzICAgICAgKGF0IGxlYXN0IDgqNC84PTMyLzY0KQl8IHwgTlVNX0dQUl9BUkdfUkVHSVNURVJTCisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBUT0M9UjIgKEFJWCkgUmVzZXJ2ZWQgKERhcndpbikgICA0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBSZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgMio0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBTcGFjZSBmb3IgY2FsbGVlJ3MgTFIJCTQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIFNhdmVkIENSIFtsb3cgd29yZCBmb3IgbTY0XSAgICAgIDQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIEN1cnJlbnQgYmFja2NoYWluIHBvaW50ZXIJNC84CXwtLyBQYXJlbnQncyBmcmFtZS4KKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgPCsgPDw8IG9uIGVudHJ5IHRvIGZmaV9jbG9zdXJlX0FTTQorICAgfCAgIFJlc3VsdCBCeXRlcwkJCTE2CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB+ICAgcGFkZGluZyB0byAxNi1ieXRlIGFsaWdubWVudAkJfiB+CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBOVU1fRlBSX0FSR19SRUdJU1RFUlMgc2xvdHMJCXwgfAorICAgfCAgIGhlcmUgZnAxMyAuLiBmcDEJCSAgICAgICAxMyo4CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgUjMuLlIxMAkJCSAgOCo0Lzg9MzIvNjQJfCB8IE5VTV9HUFJfQVJHX1JFR0lTVEVSUworICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgVE9DPVIyIChBSVgpIFJlc2VydmVkIChEYXJ3aW4pICAgNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CXN0YWNrCXwKKyAgIHwgICBSZXNlcnZlZCBbY29tcGlsZXIsYmluZGVyXSAgICAgMio0LzgJfCB8CWdyb3dzCXwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAlkb3duCVYKKyAgIHwgICBTcGFjZSBmb3IgY2FsbGVlJ3MgTFIJCTQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAlsb3dlciBhZGRyZXNzZXMKKyAgIHwgICBTYXZlZCBDUiBbbG93IHdvcmQgZm9yIG02NF0gICAgICA0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwgICAgIHN0YWNrIHBvaW50ZXIgaGVyZQorICAgfCAgIEN1cnJlbnQgYmFja2NoYWluIHBvaW50ZXIJNC84CXwtLwlkdXJpbmcKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgICA8PDwJZmZpX2Nsb3N1cmVfQVNNLgogCiAqLworCiBmZmlfc3RhdHVzCiBmZmlfcHJlcF9jbG9zdXJlX2xvYyAoZmZpX2Nsb3N1cmUqIGNsb3N1cmUsCiAJCSAgICAgIGZmaV9jaWYqIGNpZiwKQEAgLTYzMSwzMCArMTAxMyw0NCBAQAogCiAgIHN3aXRjaCAoY2lmLT5hYmkpCiAgICAgewotICAgIGNhc2UgRkZJX0RBUldJTjoKKyAgICAgIGNhc2UgRkZJX0RBUldJTjoKIAotICAgICAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX0RBUldJTik7CisJRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX0RBUldJTik7CiAKLSAgICAgIHRyYW1wID0gKHVuc2lnbmVkIGludCAqKSAmY2xvc3VyZS0+dHJhbXBbMF07Ci0gICAgICB0cmFtcFswXSA9IDB4N2MwODAyYTY7ICAvKiAgIG1mbHIgICAgcjAgICovCi0gICAgICB0cmFtcFsxXSA9IDB4NDI5ZjAwMGQ7ICAvKiAgIGJjbC0gICAgMjAsNCpjcjcrc28sMHgxMCAgKi8KLSAgICAgIHRyYW1wWzRdID0gMHg3ZDY4MDJhNjsgIC8qICAgbWZsciAgICByMTEgICovCi0gICAgICB0cmFtcFs1XSA9IDB4ODE4YjAwMDA7ICAvKiAgIGx3eiAgICAgcjEyLDAocjExKSBmdW5jdGlvbiBhZGRyZXNzICAqLwotICAgICAgdHJhbXBbNl0gPSAweDdjMDgwM2E2OyAgLyogICBtdGxyICAgIHIwICAgKi8KLSAgICAgIHRyYW1wWzddID0gMHg3ZDg5MDNhNjsgIC8qICAgbXRjdHIgICByMTIgICovCi0gICAgICB0cmFtcFs4XSA9IDB4ODE2YjAwMDQ7ICAvKiAgIGx3eiAgICAgcjExLDQocjExKSBzdGF0aWMgY2hhaW4gICovCi0gICAgICB0cmFtcFs5XSA9IDB4NGU4MDA0MjA7ICAvKiAgIGJjdHIgICovCi0gICAgICB0cmFtcFsyXSA9ICh1bnNpZ25lZCBsb25nKSBmZmlfY2xvc3VyZV9BU007IC8qIGZ1bmN0aW9uICAqLwotICAgICAgdHJhbXBbM10gPSAodW5zaWduZWQgbG9uZykgY29kZWxvYzsgLyogY29udGV4dCAgKi8KKwl0cmFtcCA9ICh1bnNpZ25lZCBpbnQgKikgJmNsb3N1cmUtPnRyYW1wWzBdOworI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKwl0cmFtcFswXSA9IDB4N2MwODAyYTY7ICAvKiAgIG1mbHIgICAgcjAgICovCisJdHJhbXBbMV0gPSAweDQyOWYwMDE1OyAgLyogICBiY2wtICAgIDIwLDQqY3I3K3NvLCAgKzB4MTggKEwxKSAgKi8KKwkvKiBXZSBwdXQgdGhlIGFkZHJlc3NlcyBoZXJlLiAgKi8KKwl0cmFtcFs2XSA9IDB4N2Q2ODAyYTY7ICAvKkwxOiAgIG1mbHIgICAgcjExICAqLworCXRyYW1wWzddID0gMHhlOThiMDAwMDsgIC8qICAgbGQgICAgIHIxMiwwKHIxMSkgZnVuY3Rpb24gYWRkcmVzcyAgKi8KKwl0cmFtcFs4XSA9IDB4N2MwODAzYTY7ICAvKiAgIG10bHIgICAgcjAgICAqLworCXRyYW1wWzldID0gMHg3ZDg5MDNhNjsgIC8qICAgbXRjdHIgICByMTIgICovCisJdHJhbXBbMTBdID0gMHhlOTZiMDAwODsgIC8qICAgbHd6ICAgICByMTEsOChyMTEpIHN0YXRpYyBjaGFpbiAgKi8KKwl0cmFtcFsxMV0gPSAweDRlODAwNDIwOyAgLyogICBiY3RyICAqLwogCi0gICAgICBjbG9zdXJlLT5jaWYgPSBjaWY7Ci0gICAgICBjbG9zdXJlLT5mdW4gPSBmdW47Ci0gICAgICBjbG9zdXJlLT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7CisJKigodW5zaWduZWQgbG9uZyAqKSZ0cmFtcFsyXSkgPSAodW5zaWduZWQgbG9uZykgZmZpX2Nsb3N1cmVfQVNNOyAvKiBmdW5jdGlvbiAgKi8KKwkqKCh1bnNpZ25lZCBsb25nICopJnRyYW1wWzRdKSA9ICh1bnNpZ25lZCBsb25nKSBjb2RlbG9jOyAvKiBjb250ZXh0ICAqLworI2Vsc2UKKwl0cmFtcFswXSA9IDB4N2MwODAyYTY7ICAvKiAgIG1mbHIgICAgcjAgICovCisJdHJhbXBbMV0gPSAweDQyOWYwMDBkOyAgLyogICBiY2wtICAgIDIwLDQqY3I3K3NvLDB4MTAgICovCisJdHJhbXBbNF0gPSAweDdkNjgwMmE2OyAgLyogICBtZmxyICAgIHIxMSAgKi8KKwl0cmFtcFs1XSA9IDB4ODE4YjAwMDA7ICAvKiAgIGx3eiAgICAgcjEyLDAocjExKSBmdW5jdGlvbiBhZGRyZXNzICAqLworCXRyYW1wWzZdID0gMHg3YzA4MDNhNjsgIC8qICAgbXRsciAgICByMCAgICovCisJdHJhbXBbN10gPSAweDdkODkwM2E2OyAgLyogICBtdGN0ciAgIHIxMiAgKi8KKwl0cmFtcFs4XSA9IDB4ODE2YjAwMDQ7ICAvKiAgIGx3eiAgICAgcjExLDQocjExKSBzdGF0aWMgY2hhaW4gICovCisJdHJhbXBbOV0gPSAweDRlODAwNDIwOyAgLyogICBiY3RyICAqLworCXRyYW1wWzJdID0gKHVuc2lnbmVkIGxvbmcpIGZmaV9jbG9zdXJlX0FTTTsgLyogZnVuY3Rpb24gICovCisJdHJhbXBbM10gPSAodW5zaWduZWQgbG9uZykgY29kZWxvYzsgLyogY29udGV4dCAgKi8KKyNlbmRpZgorCWNsb3N1cmUtPmNpZiA9IGNpZjsKKwljbG9zdXJlLT5mdW4gPSBmdW47CisJY2xvc3VyZS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOwogCi0gICAgICAvKiBGbHVzaCB0aGUgaWNhY2hlLiBPbmx5IG5lY2Vzc2FyeSBvbiBEYXJ3aW4uICAqLwotICAgICAgZmx1c2hfcmFuZ2UoY29kZWxvYywgRkZJX1RSQU1QT0xJTkVfU0laRSk7CisJLyogRmx1c2ggdGhlIGljYWNoZS4gT25seSBuZWNlc3Nhcnkgb24gRGFyd2luLiAgKi8KKwlmbHVzaF9yYW5nZShjb2RlbG9jLCBGRklfVFJBTVBPTElORV9TSVpFKTsKIAotICAgICAgYnJlYWs7CisJYnJlYWs7CiAKICAgICBjYXNlIEZGSV9BSVg6CiAKQEAgLTY2OSwxMCArMTA2NSwxMCBAQAogICAgICAgY2xvc3VyZS0+Y2lmID0gY2lmOwogICAgICAgY2xvc3VyZS0+ZnVuID0gZnVuOwogICAgICAgY2xvc3VyZS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOworICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgotCi0gICAgICBGRklfQVNTRVJUKDApOworICAgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogICAgICAgYnJlYWs7CiAgICAgfQogICByZXR1cm4gRkZJX09LOwpAQCAtNzA4LDcgKzExMDQsNyBAQAogICBkb3VibGUgZDsKIH0gZmZpX2RibGZsOwogCi1pbnQKK2ZmaV90eXBlICoKIGZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4gKGZmaV9jbG9zdXJlICosIHZvaWQgKiwKIAkJCSAgIHVuc2lnbmVkIGxvbmcgKiwgZmZpX2RibGZsICopOwogCkBAIC03MTksNyArMTExNSw3IEBACiAgICB1cCBzcGFjZSBmb3IgYSByZXR1cm4gdmFsdWUsIGZmaV9jbG9zdXJlX0FTTSBpbnZva2VzIHRoZQogICAgZm9sbG93aW5nIGhlbHBlciBmdW5jdGlvbiB0byBkbyBtb3N0IG9mIHRoZSB3b3JrLiAgKi8KIAotaW50CitmZmlfdHlwZSAqCiBmZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOIChmZmlfY2xvc3VyZSAqY2xvc3VyZSwgdm9pZCAqcnZhbHVlLAogCQkJICAgdW5zaWduZWQgbG9uZyAqcGdyLCBmZmlfZGJsZmwgKnBmcikKIHsKQEAgLTc0MSwxNiArMTEzNywzMiBAQAogICBmZmlfY2lmICogICAgICAgIGNpZjsKICAgZmZpX2RibGZsICogICAgICBlbmRfcGZyID0gcGZyICsgTlVNX0ZQUl9BUkdfUkVHSVNURVJTOwogICB1bnNpZ25lZCAgICAgICAgIHNpemVfYWw7CisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorICB1bnNpZ25lZCAJICAgZnBzdXNlZCA9IDA7CisjZW5kaWYKIAogICBjaWYgPSBjbG9zdXJlLT5jaWY7CiAgIGF2YWx1ZSA9IGFsbG9jYSAoY2lmLT5uYXJncyAqIHNpemVvZih2b2lkICopKTsKIAotICAvKiBDb3B5IHRoZSBjYWxsZXIncyBzdHJ1Y3R1cmUgcmV0dXJuIHZhbHVlIGFkZHJlc3Mgc28gdGhhdCB0aGUgY2xvc3VyZQotICAgICByZXR1cm5zIHRoZSBkYXRhIGRpcmVjdGx5IHRvIHRoZSBjYWxsZXIuICAqLwogICBpZiAoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpCiAgICAgeworI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKyAgICAgIGlmICghZGFyd2luNjRfc3RydWN0X3JldF9ieV92YWx1ZV9wIChjaWYtPnJ0eXBlKSkKKwl7CisgICAgCSAgLyogV29uJ3QgZml0IGludG8gdGhlIHJlZ3MgLSByZXR1cm4gYnkgcmVmLiAgKi8KKwkgIHJ2YWx1ZSA9ICh2b2lkICopICpwZ3I7CisJICBwZ3IrKzsKKwl9CisjZWxpZiBkZWZpbmVkKERBUldJTl9QUEMpCisgICAgICBpZiAoY2lmLT5ydHlwZS0+c2l6ZSA+IDQpCisJeworCSAgcnZhbHVlID0gKHZvaWQgKikgKnBncjsKKwkgIHBncisrOworCX0KKyNlbHNlIC8qIGFzc3VtZSB3ZSByZXR1cm4gYnkgcmVmLiAgKi8KICAgICAgIHJ2YWx1ZSA9ICh2b2lkICopICpwZ3I7CiAgICAgICBwZ3IrKzsKKyNlbmRpZgogICAgIH0KIAogICBpID0gMDsKQEAgLTc2NCw3ICsxMTc2LDcgQEAKIAl7CiAJY2FzZSBGRklfVFlQRV9TSU5UODoKIAljYXNlIEZGSV9UWVBFX1VJTlQ4OgotI2lmZGVmIFBPV0VSUEM2NAorI2lmICBkZWZpbmVkKFBPV0VSUEM2NCkKIAkgIGF2YWx1ZVtpXSA9IChjaGFyICopIHBnciArIDc7CiAjZWxzZQogCSAgYXZhbHVlW2ldID0gKGNoYXIgKikgcGdyICsgMzsKQEAgLTc3NCw3ICsxMTg2LDcgQEAKIAogCWNhc2UgRkZJX1RZUEVfU0lOVDE2OgogCWNhc2UgRkZJX1RZUEVfVUlOVDE2OgotI2lmZGVmIFBPV0VSUEM2NAorI2lmICBkZWZpbmVkKFBPV0VSUEM2NCkKIAkgIGF2YWx1ZVtpXSA9IChjaGFyICopIHBnciArIDY7CiAjZWxzZQogCSAgYXZhbHVlW2ldID0gKGNoYXIgKikgcGdyICsgMjsKQEAgLTc4NCw3ICsxMTk2LDcgQEAKIAogCWNhc2UgRkZJX1RZUEVfU0lOVDMyOgogCWNhc2UgRkZJX1RZUEVfVUlOVDMyOgotI2lmZGVmIFBPV0VSUEM2NAorI2lmICBkZWZpbmVkKFBPV0VSUEM2NCkKIAkgIGF2YWx1ZVtpXSA9IChjaGFyICopIHBnciArIDQ7CiAjZWxzZQogCWNhc2UgRkZJX1RZUEVfUE9JTlRFUjoKQEAgLTc5NCwzNCArMTIwNiw1MyBAQAogCSAgYnJlYWs7CiAKIAljYXNlIEZGSV9UWVBFX1NUUlVDVDoKLSNpZmRlZiBQT1dFUlBDNjQKIAkgIHNpemVfYWwgPSBhcmdfdHlwZXNbaV0tPnNpemU7Ci0JICBpZiAoYXJnX3R5cGVzW2ldLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9ET1VCTEUpCi0JICAgIHNpemVfYWwgPSBBTElHTiAoYXJnX3R5cGVzW2ldLT5zaXplLCA4KTsKLQkgIGlmIChzaXplX2FsIDwgMyAmJiBjaWYtPmFiaSA9PSBGRklfREFSV0lOKQotCSAgICBhdmFsdWVbaV0gPSAodm9pZCAqKSBwZ3IgKyA4IC0gc2l6ZV9hbDsKLQkgIGVsc2UKLQkgICAgYXZhbHVlW2ldID0gKHZvaWQgKikgcGdyOworI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKwkgIHBnciA9ICh1bnNpZ25lZCBsb25nICopQUxJR04oKGNoYXIgKilwZ3IsIGFyZ190eXBlc1tpXS0+YWxpZ25tZW50KTsKKwkgIGlmIChzaXplX2FsIDwgMyB8fCBzaXplX2FsID09IDQpCisJICAgIHsKKwkgICAgICBhdmFsdWVbaV0gPSAoKGNoYXIgKilwZ3IpKzgtc2l6ZV9hbDsKKwkgICAgICBpZiAoYXJnX3R5cGVzW2ldLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9GTE9BVAorCQkgICYmIGZwc3VzZWQgPCBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCisJCXsKKwkJICAqKGZsb2F0ICopcGdyID0gKGZsb2F0KSAqKGRvdWJsZSAqKXBmcjsKKwkJICBwZnIrKzsKKwkJICBmcHN1c2VkKys7CisJCX0KKwkgICAgfQorCSAgZWxzZSAKKwkgICAgeworCSAgICAgIGlmIChzaXplX2FsICE9IDE2KQorCQlwZnIgPSAoZmZpX2RibGZsICopIAorCQkgICAgZGFyd2luNjRfc3RydWN0X2Zsb2F0c190b19tZW0gKGFyZ190eXBlc1tpXSwgKGNoYXIgKilwZ3IsCisJCQkJCQkgICAoZG91YmxlICopcGZyLCAmZnBzdXNlZCk7CisJICAgICAgYXZhbHVlW2ldID0gcGdyOworCSAgICB9CiAJICBwZ3IgKz0gKHNpemVfYWwgKyA3KSAvIDg7CiAjZWxzZQotCSAgLyogU3RydWN0dXJlcyB0aGF0IG1hdGNoIHRoZSBiYXNpYyBtb2RlcyAoUUkgMSBieXRlLCBISSAyIGJ5dGVzLAotCSAgICAgU0kgNCBieXRlcykgYXJlIGFsaWduZWQgYXMgaWYgdGhleSB3ZXJlIHRob3NlIG1vZGVzLiAgKi8KLQkgIHNpemVfYWwgPSBhcmdfdHlwZXNbaV0tPnNpemU7CiAJICAvKiBJZiB0aGUgZmlyc3QgbWVtYmVyIG9mIHRoZSBzdHJ1Y3QgaXMgYSBkb3VibGUsIHRoZW4gYWxpZ24KIAkgICAgIHRoZSBzdHJ1Y3QgdG8gZG91YmxlLXdvcmQuICAqLwogCSAgaWYgKGFyZ190eXBlc1tpXS0+ZWxlbWVudHNbMF0tPnR5cGUgPT0gRkZJX1RZUEVfRE9VQkxFKQogCSAgICBzaXplX2FsID0gQUxJR04oYXJnX3R5cGVzW2ldLT5zaXplLCA4KTsKKyMgIGlmIGRlZmluZWQoUE9XRVJQQzY0KQorCSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgIT0gRkZJX0RBUldJTik7CisJICBhdmFsdWVbaV0gPSBwZ3I7CisJICBwZ3IgKz0gKHNpemVfYWwgKyA3KSAvIDg7CisjICBlbHNlCisJICAvKiBTdHJ1Y3R1cmVzIHRoYXQgbWF0Y2ggdGhlIGJhc2ljIG1vZGVzIChRSSAxIGJ5dGUsIEhJIDIgYnl0ZXMsCisJICAgICBTSSA0IGJ5dGVzKSBhcmUgYWxpZ25lZCBhcyBpZiB0aGV5IHdlcmUgdGhvc2UgbW9kZXMuICAqLwogCSAgaWYgKHNpemVfYWwgPCAzICYmIGNpZi0+YWJpID09IEZGSV9EQVJXSU4pCi0JICAgIGF2YWx1ZVtpXSA9ICh2b2lkKikgcGdyICsgNCAtIHNpemVfYWw7CisJICAgIGF2YWx1ZVtpXSA9IChjaGFyKikgcGdyICsgNCAtIHNpemVfYWw7CiAJICBlbHNlCi0JICAgIGF2YWx1ZVtpXSA9ICh2b2lkKikgcGdyOworCSAgICBhdmFsdWVbaV0gPSBwZ3I7CiAJICBwZ3IgKz0gKHNpemVfYWwgKyAzKSAvIDQ7CisjICBlbmRpZgogI2VuZGlmCiAJICBicmVhazsKIAogCWNhc2UgRkZJX1RZUEVfU0lOVDY0OgogCWNhc2UgRkZJX1RZUEVfVUlOVDY0OgotI2lmZGVmIFBPV0VSUEM2NAorI2lmICBkZWZpbmVkKFBPV0VSUEM2NCkKIAljYXNlIEZGSV9UWVBFX1BPSU5URVI6CiAJICBhdmFsdWVbaV0gPSBwZ3I7CiAJICBwZ3IrKzsKQEAgLTkyNCw1ICsxMzU1LDUgQEAKICAgKGNsb3N1cmUtPmZ1bikgKGNpZiwgcnZhbHVlLCBhdmFsdWUsIGNsb3N1cmUtPnVzZXJfZGF0YSk7CiAKICAgLyogVGVsbCBmZmlfY2xvc3VyZV9BU00gdG8gcGVyZm9ybSByZXR1cm4gdHlwZSBwcm9tb3Rpb25zLiAgKi8KLSAgcmV0dXJuIGNpZi0+cnR5cGUtPnR5cGU7CisgIHJldHVybiBjaWYtPnJ0eXBlOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZmZpdGFyZ2V0LmgKaW5kZXggYjRmOTkyZS4uM2M5ZGI0OSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaXRhcmdldC5oCkBAIC0xLDYgKzEsOCBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KLSAgIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYworICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisKICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgUG93ZXJQQy4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yOCwxNSArMzAsMjggQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKIC8qIC0tLS0gU3lzdGVtIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNpZiBkZWZpbmVkIChQT1dFUlBDKSAmJiBkZWZpbmVkIChfX3Bvd2VycGM2NF9fKQkvKiBsaW51eDY0ICovCisjaWZuZGVmIFBPV0VSUEM2NAogI2RlZmluZSBQT1dFUlBDNjQKLSNlbGlmIGRlZmluZWQgKFBPV0VSUENfREFSV0lOKSAmJiBkZWZpbmVkIChfX3BwYzY0X18pCS8qIERhcndpbiAqLworI2VuZGlmCisjZWxpZiBkZWZpbmVkIChQT1dFUlBDX0RBUldJTikgJiYgZGVmaW5lZCAoX19wcGM2NF9fKQkvKiBEYXJ3aW42NCAqLworI2lmbmRlZiBQT1dFUlBDNjQKICNkZWZpbmUgUE9XRVJQQzY0CisjZW5kaWYKKyNpZm5kZWYgUE9XRVJQQ19EQVJXSU42NAorI2RlZmluZSBQT1dFUlBDX0RBUldJTjY0CisjZW5kaWYKICNlbGlmIGRlZmluZWQgKFBPV0VSUENfQUlYKSAmJiBkZWZpbmVkIChfXzY0QklUX18pCS8qIEFJWDY0ICovCisjaWZuZGVmIFBPV0VSUEM2NAogI2RlZmluZSBQT1dFUlBDNjQKICNlbmRpZgorI2VuZGlmCiAKICNpZm5kZWYgTElCRkZJX0FTTQogdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICAgIGZmaV9hcmc7CkBAIC01MSwxOCArNjYsMTQgQEAKICAgRkZJX0xJTlVYNjQsCiAgIEZGSV9MSU5VWCwKICAgRkZJX0xJTlVYX1NPRlRfRkxPQVQsCi0jIGlmZGVmIFBPV0VSUEM2NAorIyBpZiBkZWZpbmVkKFBPV0VSUEM2NCkKICAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX0xJTlVYNjQsCi0jIGVsc2UKLSMgIGlmICghZGVmaW5lZChfX05PX0ZQUlNfXykgJiYgKF9fTERCTF9NQU5UX0RJR19fID09IDEwNikpCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9MSU5VWCwKLSMgIGVsc2UKLSMgICBpZmRlZiBfX05PX0ZQUlNfXworIyBlbGlmIGRlZmluZWQoX19OT19GUFJTX18pCiAgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9MSU5VWF9TT0ZUX0ZMT0FULAotIyAgIGVsc2UKKyMgZWxpZiAoX19MREJMX01BTlRfRElHX18gPT0gMTA2KQorICBGRklfREVGQVVMVF9BQkkgPSBGRklfTElOVVgsCisjIGVsc2UKICAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX0dDQ19TWVNWLAotIyAgIGVuZGlmCi0jICBlbmRpZgogIyBlbmRpZgogI2VuZGlmCiAKQEAgLTEwOCw5ICsxMTksMTMgQEAKICNkZWZpbmUgRkZJX1NZU1ZfVFlQRV9TTUFMTF9TVFJVQ1QgKEZGSV9UWVBFX0xBU1QgKyAyKQogCiAjaWYgZGVmaW5lZChQT1dFUlBDNjQpIHx8IGRlZmluZWQoUE9XRVJQQ19BSVgpCi0jZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgMjQKKyMgIGlmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKyMgICAgZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgNDgKKyMgIGVsc2UKKyMgICAgZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgMjQKKyMgIGVuZGlmCiAjZWxzZSAvKiBQT1dFUlBDIHx8IFBPV0VSUENfQUlYICovCi0jZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgNDAKKyMgIGRlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDQwCiAjZW5kaWYKIAogI2lmbmRlZiBMSUJGRklfQVNNCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMKaW5kZXggNTZmN2QxYS4uNDFmYjg4NSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUwpAQCAtMTIyLDIyICsxMjIsNDEgQEAKIAlibHIKIAogIyBjYXNlIEZGSV9UWVBFX0ZMT0FUCisjaWZuZGVmIF9fTk9fRlBSU19fCiAJbGZzICVmMSwxMTIrMCglcjEpCiAJbXRsciAlcjAKIAlhZGRpICVyMSwlcjEsMTQ0CisjZWxzZQorCW5vcAorCW5vcAorCW5vcAorI2VuZGlmCiAJYmxyCiAKICMgY2FzZSBGRklfVFlQRV9ET1VCTEUKKyNpZm5kZWYgX19OT19GUFJTX18KIAlsZmQgJWYxLDExMiswKCVyMSkKIAltdGxyICVyMAogCWFkZGkgJXIxLCVyMSwxNDQKKyNlbHNlCisJbm9wCisJbm9wCisJbm9wCisjZW5kaWYKIAlibHIKIAogIyBjYXNlIEZGSV9UWVBFX0xPTkdET1VCTEUKKyNpZm5kZWYgX19OT19GUFJTX18KIAlsZmQgJWYxLDExMiswKCVyMSkKIAlsZmQgJWYyLDExMis4KCVyMSkKIAltdGxyICVyMAogCWIgLkxmaW5pc2gKKyNlbHNlCisJbm9wCisJbm9wCisJbm9wCisJYmxyCisjZW5kaWYKIAogIyBjYXNlIEZGSV9UWVBFX1VJTlQ4CiAJbGJ6ICVyMywxMTIrMyglcjEpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL3N5c3YuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvc3lzdi5TCmluZGV4IDk2ZWEyMmIuLjY3NWVkMDMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvc3lzdi5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvc3lzdi5TCkBAIC04Myw2ICs4Myw3IEBACiAJbm9wCiAxOgogCisjaWZuZGVmIF9fTk9fRlBSU19fCiAJLyogTG9hZCBhbGwgdGhlIEZQIHJlZ2lzdGVycy4gICovCiAJYmYtCTYsMmYKIAlsZmQJJWYxLC0xNi0oOCo0KS0oOCo4KSglcjI4KQpAQCAtOTQsNiArOTUsNyBAQAogCWxmZAklZjYsLTE2LSg4KjQpLSgzKjgpKCVyMjgpCiAJbGZkCSVmNywtMTYtKDgqNCktKDIqOCkoJXIyOCkKIAlsZmQJJWY4LC0xNi0oOCo0KS0oMSo4KSglcjI4KQorI2VuZGlmCiAyOgogCiAJLyogTWFrZSB0aGUgY2FsbC4gICovCkBAIC0xMDMsNyArMTA1LDkgQEAKIAltdGNyZgkweDAxLCVyMzEgLyogY3I3ICAqLwogCWJ0LQkzMSxMKHNtYWxsX3N0cnVjdF9yZXR1cm5fdmFsdWUpCiAJYnQtCTMwLEwoZG9uZV9yZXR1cm5fdmFsdWUpCisjaWZuZGVmIF9fTk9fRlBSU19fCiAJYnQtCTI5LEwoZnBfcmV0dXJuX3ZhbHVlKQorI2VuZGlmCiAJc3R3CSVyMywwKCVyMzApCiAJYmYrCTI4LEwoZG9uZV9yZXR1cm5fdmFsdWUpCiAJc3R3CSVyNCw0KCVyMzApCkBAIC0xMjQsNiArMTI4LDcgQEAKIAlsd3oJJXIxLDAoJXIxKQogCWJscgogCisjaWZuZGVmIF9fTk9fRlBSU19fCiBMKGZwX3JldHVybl92YWx1ZSk6CiAJYmYJMjgsTChmbG9hdF9yZXR1cm5fdmFsdWUpCiAJc3RmZAklZjEsMCglcjMwKQpAQCAtMTM0LDIxICsxMzksMTcgQEAKIEwoZmxvYXRfcmV0dXJuX3ZhbHVlKToKIAlzdGZzCSVmMSwwKCVyMzApCiAJYglMKGRvbmVfcmV0dXJuX3ZhbHVlKQorI2VuZGlmCiAKIEwoc21hbGxfc3RydWN0X3JldHVybl92YWx1ZSk6Ci0JZXh0cndpCSVyNiwlcjMxLDIsMTkgICAgICAgICAvKiBudW1iZXIgb2YgYnl0ZXMgcGFkZGluZyA9IHNoaWZ0LzggKi8KLQltdGNyZgkweDAyLCVyMzEJICAgICAgLyogY29weSBmbGFncyB0byBjclsyNDoyN10gKGNyNikgKi8KLQlleHRyd2kJJXI1LCVyMzEsNSwxOSAgICAgICAgIC8qIHI1IDwtIG51bWJlciBvZiBiaXRzIG9mIHBhZGRpbmcgKi8KLQlzdWJmaWMgICVyNiwlcjYsNCAgICAgICAgICAgICAvKiByNiA8LSBudW1iZXIgb2YgdXNlZnVsIGJ5dGVzIGluIHIzICovCi0JYmYtCTI1LEwoZG9uZV9yZXR1cm5fdmFsdWUpIC8qIHN0cnVjdCBpbiByMyA/IGlmIG5vdCwgZG9uZS4gKi8KLS8qIHNtc3Rfb25lX3JlZ2lzdGVyOiAqLwotCXNsdwklcjMsJXIzLCVyNSAgICAgICAgICAgLyogTGVmdC1qdXN0aWZ5IHZhbHVlIGluIHIzICovCi0JbXR4ZXIJJXI2ICAgICAgICAgICAgICAgICAgIC8qIG1vdmUgYnl0ZSBjb3VudCB0byBYRVIgLi4uICovCi0Jc3Rzd3gJJXIzLDAsJXIzMCAgICAgICAgICAgIC8qIC4uLiBhbmQgc3RvcmUgdGhhdCBtYW55IGJ5dGVzICovCi0JYmYrCTI2LEwoZG9uZV9yZXR1cm5fdmFsdWUpICAvKiBzdHJ1Y3QgaW4gcjM6cjQgPyAqLwotCWFkZAklcjYsJXI2LCVyMzAgICAgICAgICAgLyogYWRqdXN0IHBvaW50ZXIgKi8KLQlzdHN3aQklcjQsJXI2LDQgICAgICAgICAgICAgLyogc3RvcmUgbGFzdCBmb3VyIGJ5dGVzICovCi0JYglMKGRvbmVfcmV0dXJuX3ZhbHVlKQorCS8qCisJICogVGhlIEMgY29kZSBhbHdheXMgYWxsb2NhdGVzIGEgcHJvcGVybHktYWxpZ25lZCA4LWJ5dGUgYm91bmNlCisJICogYnVmZmVyIHRvIG1ha2UgdGhpcyBhc3NlbWJseSBjb2RlIHZlcnkgc2ltcGxlLiAgSnVzdCB3cml0ZSBvdXQKKwkgKiByMyBhbmQgcjQgdG8gdGhlIGJ1ZmZlciB0byBhbGxvdyB0aGUgQyBjb2RlIHRvIGhhbmRsZSB0aGUgcmVzdC4KKwkgKi8KKwlzdHcgJXIzLCAwKCVyMzApCisJc3R3ICVyNCwgNCglcjMwKQorCWIgTChkb25lX3JldHVybl92YWx1ZSkKIAogLkxGRTE6CiBFTkQoZmZpX2NhbGxfU1lTVikKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3ByZXBfY2lmLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wcmVwX2NpZi5jCmluZGV4IGMxYzNiOWEuLmViNjgzNDEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3ByZXBfY2lmLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcHJlcF9jaWYuYwpAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBwcmVwX2NpZi5jIC0gQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk4LCAyMDA3ICBSZWQgSGF0LCBJbmMuCisgICBwcmVwX2NpZi5jIC0gQ29weXJpZ2h0IChjKSAyMDExLCAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk4LCAyMDA3ICBSZWQgSGF0LCBJbmMuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwogICAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCkBAIC0zNywxNyArMzgsMjEgQEAKIHsKICAgZmZpX3R5cGUgKipwdHI7CiAKLSAgRkZJX0FTU0VSVChhcmcgIT0gTlVMTCk7CisgIGlmIChVTkxJS0VMWShhcmcgPT0gTlVMTCB8fCBhcmctPmVsZW1lbnRzID09IE5VTEwpKQorICAgIHJldHVybiBGRklfQkFEX1RZUEVERUY7CiAKLSAgRkZJX0FTU0VSVChhcmctPmVsZW1lbnRzICE9IE5VTEwpOwotICBGRklfQVNTRVJUKGFyZy0+c2l6ZSA9PSAwKTsKLSAgRkZJX0FTU0VSVChhcmctPmFsaWdubWVudCA9PSAwKTsKKyAgYXJnLT5zaXplID0gMDsKKyAgYXJnLT5hbGlnbm1lbnQgPSAwOwogCiAgIHB0ciA9ICYoYXJnLT5lbGVtZW50c1swXSk7CiAKKyAgaWYgKFVOTElLRUxZKHB0ciA9PSAwKSkKKyAgICByZXR1cm4gRkZJX0JBRF9UWVBFREVGOworCiAgIHdoaWxlICgoKnB0cikgIT0gTlVMTCkKICAgICB7Ci0gICAgICBpZiAoKCgqcHRyKS0+c2l6ZSA9PSAwKSAmJiAoaW5pdGlhbGl6ZV9hZ2dyZWdhdGUoKCpwdHIpKSAhPSBGRklfT0spKQorICAgICAgaWYgKFVOTElLRUxZKCgoKnB0ciktPnNpemUgPT0gMCkKKwkJICAgICYmIChpbml0aWFsaXplX2FnZ3JlZ2F0ZSgoKnB0cikpICE9IEZGSV9PSykpKQogCXJldHVybiBGRklfQkFEX1RZUEVERUY7CiAKICAgICAgIC8qIFBlcmZvcm0gYSBzYW5pdHkgY2hlY2sgb24gdGhlIGFyZ3VtZW50IHR5cGUgKi8KQEAgLTg1LDE5ICs5MCwzOCBAQAogLyogUGVyZm9ybSBtYWNoaW5lIGluZGVwZW5kZW50IGZmaV9jaWYgcHJlcGFyYXRpb24sIHRoZW4gY2FsbAogICAgbWFjaGluZSBkZXBlbmRlbnQgcm91dGluZS4gKi8KIAotZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWYoZmZpX2NpZiAqY2lmLCBmZmlfYWJpIGFiaSwgdW5zaWduZWQgaW50IG5hcmdzLAotCQkJZmZpX3R5cGUgKnJ0eXBlLCBmZmlfdHlwZSAqKmF0eXBlcykKKy8qIEZvciBub24gdmFyaWFkaWMgZnVuY3Rpb25zIGlzdmFyaWFkaWMgc2hvdWxkIGJlIDAgYW5kCisgICBuZml4ZWRhcmdzPT1udG90YWxhcmdzLgorCisgICBGb3IgdmFyaWFkaWMgY2FsbHMsIGlzdmFyaWFkaWMgc2hvdWxkIGJlIDEgYW5kIG5maXhlZGFyZ3MKKyAgIGFuZCBudG90YWxhcmdzIHNldCBhcyBhcHByb3ByaWF0ZS4gbmZpeGVkYXJncyBtdXN0IGFsd2F5cyBiZSA+PTEgKi8KKworCitmZmlfc3RhdHVzIEZGSV9ISURERU4gZmZpX3ByZXBfY2lmX2NvcmUoZmZpX2NpZiAqY2lmLCBmZmlfYWJpIGFiaSwKKwkJCSAgICAgdW5zaWduZWQgaW50IGlzdmFyaWFkaWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBuZml4ZWRhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnRvdGFsYXJncywKKwkJCSAgICAgZmZpX3R5cGUgKnJ0eXBlLCBmZmlfdHlwZSAqKmF0eXBlcykKIHsKICAgdW5zaWduZWQgYnl0ZXMgPSAwOwogICB1bnNpZ25lZCBpbnQgaTsKICAgZmZpX3R5cGUgKipwdHI7CiAKICAgRkZJX0FTU0VSVChjaWYgIT0gTlVMTCk7Ci0gIEZGSV9BU1NFUlQoKGFiaSA+IEZGSV9GSVJTVF9BQkkpICYmIChhYmkgPD0gRkZJX0RFRkFVTFRfQUJJKSk7CisgIEZGSV9BU1NFUlQoKCFpc3ZhcmlhZGljKSB8fCAobmZpeGVkYXJncyA+PSAxKSk7CisgIEZGSV9BU1NFUlQobmZpeGVkYXJncyA8PSBudG90YWxhcmdzKTsKKworI2lmbmRlZiBYODZfV0lOMzIKKyAgaWYgKCEgKGFiaSA+IEZGSV9GSVJTVF9BQkkgJiYgYWJpIDwgRkZJX0xBU1RfQUJJKSkKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CisjZWxzZQorICBpZiAoISAoYWJpID4gRkZJX0ZJUlNUX0FCSSAmJiBhYmkgPCBGRklfTEFTVF9BQkkgfHwgYWJpID09IEZGSV9USElTQ0FMTCkpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOworI2VuZGlmCiAKICAgY2lmLT5hYmkgPSBhYmk7CiAgIGNpZi0+YXJnX3R5cGVzID0gYXR5cGVzOwotICBjaWYtPm5hcmdzID0gbmFyZ3M7CisgIGNpZi0+bmFyZ3MgPSBudG90YWxhcmdzOwogICBjaWYtPnJ0eXBlID0gcnR5cGU7CiAKICAgY2lmLT5mbGFncyA9IDA7CkBAIC0xMTAsNyArMTM0LDcgQEAKICAgRkZJX0FTU0VSVF9WQUxJRF9UWVBFKGNpZi0+cnR5cGUpOwogCiAgIC8qIHg4NiwgeDg2LTY0IGFuZCBzMzkwIHN0YWNrIHNwYWNlIGFsbG9jYXRpb24gaXMgaGFuZGxlZCBpbiBwcmVwX21hY2hkZXAuICovCi0jaWYgIWRlZmluZWQgTTY4SyAmJiAhZGVmaW5lZCBfX2kzODZfXyAmJiAhZGVmaW5lZCBfX3g4Nl82NF9fICYmICFkZWZpbmVkIFMzOTAgJiYgIWRlZmluZWQgUEEKKyNpZiAhZGVmaW5lZCBNNjhLICYmICFkZWZpbmVkIFg4Nl9BTlkgJiYgIWRlZmluZWQgUzM5MCAmJiAhZGVmaW5lZCBQQQogICAvKiBNYWtlIHNwYWNlIGZvciB0aGUgcmV0dXJuIHN0cnVjdHVyZSBwb2ludGVyICovCiAgIGlmIChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVAogI2lmZGVmIFNQQVJDCkBAIC0xMzEsNyArMTU1LDcgQEAKIAkgY2hlY2sgYWZ0ZXIgdGhlIGluaXRpYWxpemF0aW9uLiAgKi8KICAgICAgIEZGSV9BU1NFUlRfVkFMSURfVFlQRSgqcHRyKTsKIAotI2lmICFkZWZpbmVkIF9faTM4Nl9fICYmICFkZWZpbmVkIF9feDg2XzY0X18gJiYgIWRlZmluZWQgUzM5MCAmJiAhZGVmaW5lZCBQQQorI2lmICFkZWZpbmVkIFg4Nl9BTlkgJiYgIWRlZmluZWQgUzM5MCAmJiAhZGVmaW5lZCBQQQogI2lmZGVmIFNQQVJDCiAgICAgICBpZiAoKCgqcHRyKS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QKIAkgICAmJiAoKCpwdHIpLT5zaXplID4gMTYgfHwgY2lmLT5hYmkgIT0gRkZJX1Y5KSkKQEAgLTE1MywxMCArMTc3LDMxIEBACiAgIGNpZi0+Ynl0ZXMgPSBieXRlczsKIAogICAvKiBQZXJmb3JtIG1hY2hpbmUgZGVwZW5kZW50IGNpZiBwcm9jZXNzaW5nICovCisjaWZkZWYgRkZJX1RBUkdFVF9TUEVDSUZJQ19WQVJJQURJQworICBpZiAoaXN2YXJpYWRpYykKKwlyZXR1cm4gZmZpX3ByZXBfY2lmX21hY2hkZXBfdmFyKGNpZiwgbmZpeGVkYXJncywgbnRvdGFsYXJncyk7CisjZW5kaWYKKwogICByZXR1cm4gZmZpX3ByZXBfY2lmX21hY2hkZXAoY2lmKTsKIH0KICNlbmRpZiAvKiBub3QgX19DUklTX18gKi8KIAorZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWYoZmZpX2NpZiAqY2lmLCBmZmlfYWJpIGFiaSwgdW5zaWduZWQgaW50IG5hcmdzLAorCQkJICAgICBmZmlfdHlwZSAqcnR5cGUsIGZmaV90eXBlICoqYXR5cGVzKQoreworICByZXR1cm4gZmZpX3ByZXBfY2lmX2NvcmUoY2lmLCBhYmksIDAsIG5hcmdzLCBuYXJncywgcnR5cGUsIGF0eXBlcyk7Cit9CisKK2ZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmX3ZhcihmZmlfY2lmICpjaWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZpX2FiaSBhYmksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5maXhlZGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG50b3RhbGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZpX3R5cGUgKnJ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZmaV90eXBlICoqYXR5cGVzKQoreworICByZXR1cm4gZmZpX3ByZXBfY2lmX2NvcmUoY2lmLCBhYmksIDEsIG5maXhlZGFyZ3MsIG50b3RhbGFyZ3MsIHJ0eXBlLCBhdHlwZXMpOworfQorCiAjaWYgRkZJX0NMT1NVUkVTCiAKIGZmaV9zdGF0dXMKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3MzOTAvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zMzkwL2ZmaXRhcmdldC5oCmluZGV4IDc4ZjNjNjUuLjk3ZmE1YzQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3MzOTAvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvczM5MC9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBTMzkwLgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI3LDkgKzI4LDE1IEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAjaWYgZGVmaW5lZCAoX19zMzkweF9fKQorI2lmbmRlZiBTMzkwWAogI2RlZmluZSBTMzkwWAogI2VuZGlmCisjZW5kaWYKIAogLyogLS0tLSBTeXN0ZW0gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNDAsOCArNDcsOCBAQAogdHlwZWRlZiBlbnVtIGZmaV9hYmkgewogICBGRklfRklSU1RfQUJJID0gMCwKICAgRkZJX1NZU1YsCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWLAotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YKIH0gZmZpX2FiaTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaC9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoL2ZmaS5jCmluZGV4IDY5YmQwMjUuLjM1MTViOTEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoL2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoL2ZmaS5jCkBAIC0xLDUgKzEsNSBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEtheiBLb2ppbWEKKyAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAyMDAyLTIwMDgsIDIwMTIgS2F6IEtvamltYQogICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDggUmVkIEhhdCwgSW5jLgogICAgCiAgICBTdXBlckggRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCkBAIC00NjMsNyArNDYzLDggQEAKICAgdW5zaWduZWQgaW50ICp0cmFtcDsKICAgdW5zaWduZWQgaW50IGluc247CiAKLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX0dDQ19TWVNWKTsKKyAgaWYgKGNpZi0+YWJpICE9IEZGSV9TWVNWKQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKIAogICB0cmFtcCA9ICh1bnNpZ25lZCBpbnQgKikgJmNsb3N1cmUtPnRyYW1wWzBdOwogICAvKiBTZXQgVCBiaXQgaWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBzdHJ1Y3QgcG9pbnRlZCB3aXRoIFIyLiAgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2gvZmZpdGFyZ2V0LmgKaW5kZXggMjE4YWUzZC4uYTM2YmY0MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2gvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2gvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBTdXBlckguCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsNiArMjgsMTAgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKIC8qIC0tLS0gR2VuZXJpYyB0eXBlIGRlZmluaXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNpZm5kZWYgTElCRkZJX0FTTQpAQCAtMzYsOCArNDEsOCBAQAogdHlwZWRlZiBlbnVtIGZmaV9hYmkgewogICBGRklfRklSU1RfQUJJID0gMCwKICAgRkZJX1NZU1YsCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWLAotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YKIH0gZmZpX2FiaTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaDY0L2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2g2NC9mZmkuYwppbmRleCA4ZmJjMDVjLi4xMjNiODdhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaDY0L2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoNjQvZmZpLmMKQEAgLTEsNSArMSw1IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMDQsIDIwMDYsIDIwMDcgS2F6IEtvamltYQorICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMDQsIDIwMDYsIDIwMDcsIDIwMTIgS2F6IEtvamltYQogICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDggQW50aG9ueSBHcmVlbgogICAgCiAgICBTdXBlckggU0htZWRpYSBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKQEAgLTMwMiw3ICszMDIsOCBAQAogewogICB1bnNpZ25lZCBpbnQgKnRyYW1wOwogCi0gIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9HQ0NfU1lTVik7CisgIGlmIChjaWYtPmFiaSAhPSBGRklfU1lTVikKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAKICAgdHJhbXAgPSAodW5zaWduZWQgaW50ICopICZjbG9zdXJlLT50cmFtcFswXTsKICAgLyogU2luY2UgZmZpX2Nsb3N1cmUgaXMgYW4gYWxpZ25lZCBvYmplY3QsIHRoZSBmZmkgdHJhbXBvbGluZSBpcwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2g2NC9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoNjQvZmZpdGFyZ2V0LmgKaW5kZXggNGU5MjJmYy4uMDhhNmZlOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2g2NC9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaDY0L2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIFN1cGVySCAtIFNIbWVkaWEuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsNiArMjgsMTAgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKIC8qIC0tLS0gR2VuZXJpYyB0eXBlIGRlZmluaXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNpZm5kZWYgTElCRkZJX0FTTQpAQCAtMzYsOCArNDEsOCBAQAogdHlwZWRlZiBlbnVtIGZmaV9hYmkgewogICBGRklfRklSU1RfQUJJID0gMCwKICAgRkZJX1NZU1YsCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWLAotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YKIH0gZmZpX2FiaTsKIAogI2RlZmluZSBGRklfRVhUUkFfQ0lGX0ZJRUxEUyBsb25nIGxvbmcgZmxhZ3MyCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zcGFyYy9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NwYXJjL2ZmaS5jCmluZGV4IDFkMDFmNTkuLjFhYzVkNDYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NwYXJjL2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NwYXJjL2ZmaS5jCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAxOTk2LCAyMDAzLCAyMDA0LCAyMDA3LCAyMDA4IFJlZCBIYXQsIEluYy4KKyAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAyMDExIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LCAyMDAzLTIwMDQsIDIwMDctMjAwOCBSZWQgSGF0LCBJbmMuCiAgICAKICAgIFNQQVJDIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAogCkBAIC00MDYsOCArNDA3LDUwIEBACiAgICAgICAvKiBXZSBkb24ndCB5ZXQgc3VwcG9ydCBjYWxsaW5nIDMyYml0IGNvZGUgZnJvbSA2NGJpdCAqLwogICAgICAgRkZJX0FTU0VSVCgwKTsKICNlbHNlCi0gICAgICBmZmlfY2FsbF92OChmZmlfcHJlcF9hcmdzX3Y4LCAmZWNpZiwgY2lmLT5ieXRlcywgCi0JCSAgY2lmLT5mbGFncywgcnZhbHVlLCBmbik7CisgICAgICBpZiAocnZhbHVlICYmIChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVAorI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCisJICB8fCBjaWYtPmZsYWdzID09IEZGSV9UWVBFX0xPTkdET1VCTEUKKyNlbmRpZgorCSAgKSkKKwl7CisJICAvKiBGb3IgdjgsIHdlIG5lZWQgYW4gInVuaW1wIiB3aXRoIHNpemUgb2YgcmV0dXJuaW5nIHN0cnVjdCAqLworCSAgLyogYmVoaW5kICJjYWxsIiwgc28gd2UgYWxsb2Mgc29tZSBleGVjdXRhYmxlIHNwYWNlIGZvciBpdC4gKi8KKwkgIC8qIGw3IGlzIHVzZWQsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHY4LlMgZG9lc24ndCB1c2UgJWw3LiAgICovCisJICB1bnNpZ25lZCBpbnQgKmNhbGxfc3RydWN0ID0gTlVMTDsKKwkgIGZmaV9jbG9zdXJlX2FsbG9jKDMyLCAmY2FsbF9zdHJ1Y3QpOworCSAgaWYgKGNhbGxfc3RydWN0KQorCSAgICB7CisJICAgICAgdW5zaWduZWQgbG9uZyBmID0gKHVuc2lnbmVkIGxvbmcpZm47CisJICAgICAgY2FsbF9zdHJ1Y3RbMF0gPSAweGFlMTAwMDFmOwkJIC8qIG1vdiAgICVpNywgJWw3CSAqLworCSAgICAgIGNhbGxfc3RydWN0WzFdID0gMHhiZTEwMDAwZjsJCSAvKiBtb3YgICAlbzcsICVpNwkgKi8KKwkgICAgICBjYWxsX3N0cnVjdFsyXSA9IDB4MDMwMDAwMDAgfCBmID4+IDEwOyAgICAgLyogc2V0aGkgJWhpKGZuKSwgJWcxCSAqLworCSAgICAgIGNhbGxfc3RydWN0WzNdID0gMHg5ZmMwNjAwMCB8IChmICYgMHgzZmYpOyAvKiBqbXAgJWcxKyVsbyhmbiksICVvNyAqLworCSAgICAgIGNhbGxfc3RydWN0WzRdID0gMHgwMTAwMDAwMDsJCSAvKiBub3AJCQkgKi8KKwkgICAgICBpZiAoY2lmLT5ydHlwZS0+c2l6ZSA8IDB4N2YpCisJCWNhbGxfc3RydWN0WzVdID0gY2lmLT5ydHlwZS0+c2l6ZTsJIC8qIHVuaW1wCQkgKi8KKwkgICAgICBlbHNlCisJCWNhbGxfc3RydWN0WzVdID0gMHgwMTAwMDAwMDsJICAgICAJIC8qIG5vcAkJCSAqLworCSAgICAgIGNhbGxfc3RydWN0WzZdID0gMHg4MWM3ZTAwODsJCSAvKiByZXQJCQkgKi8KKwkgICAgICBjYWxsX3N0cnVjdFs3XSA9IDB4YmUxMDAwMTc7CQkgLyogbW92ICAgJWw3LCAlaTcJICovCisJICAgICAgYXNtIHZvbGF0aWxlICgiaWZsdXNoICUwOyBpZmx1c2ggJTArODsgaWZsdXNoICUwKzE2OyBpZmx1c2ggJTArMjQiIDogOgorCQkJICAgICJyIiAoY2FsbF9zdHJ1Y3QpIDogIm1lbW9yeSIpOworCSAgICAgIC8qIFNQQVJDIHY4IHJlcXVpcmVzIDUgaW5zdHJ1Y3Rpb25zIGZvciBmbHVzaCB0byBiZSB2aXNpYmxlICovCisJICAgICAgYXNtIHZvbGF0aWxlICgibm9wOyBub3A7IG5vcDsgbm9wOyBub3AiKTsKKwkgICAgICBmZmlfY2FsbF92OChmZmlfcHJlcF9hcmdzX3Y4LCAmZWNpZiwgY2lmLT5ieXRlcywKKwkJCSAgY2lmLT5mbGFncywgcnZhbHVlLCBjYWxsX3N0cnVjdCk7CisJICAgICAgZmZpX2Nsb3N1cmVfZnJlZShjYWxsX3N0cnVjdCk7CisJICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIGZmaV9jYWxsX3Y4KGZmaV9wcmVwX2FyZ3NfdjgsICZlY2lmLCBjaWYtPmJ5dGVzLAorCQkJICBjaWYtPmZsYWdzLCBydmFsdWUsIGZuKTsKKwkgICAgfQorCX0KKyAgICAgIGVsc2UKKwl7CisJICBmZmlfY2FsbF92OChmZmlfcHJlcF9hcmdzX3Y4LCAmZWNpZiwgY2lmLT5ieXRlcywKKwkJICAgICAgY2lmLT5mbGFncywgcnZhbHVlLCBmbik7CisJfQogI2VuZGlmCiAgICAgICBicmVhazsKICAgICBjYXNlIEZGSV9WOToKQEAgLTQyNSw3ICs0NjgsNiBAQAogICAgICAgRkZJX0FTU0VSVCgwKTsKICAgICAgIGJyZWFrOwogICAgIH0KLQogfQogCiAKQEAgLTQ0Nyw3ICs0ODksOCBAQAogI2lmZGVmIFNQQVJDNjQKICAgLyogVHJhbXBvbGluZSBhZGRyZXNzIGlzIGVxdWFsIHRvIHRoZSBjbG9zdXJlIGFkZHJlc3MuICBXZSB0YWtlIGFkdmFudGFnZQogICAgICBvZiB0aGF0IHRvIHJlZHVjZSB0aGUgdHJhbXBvbGluZSBzaXplIGJ5IDggYnl0ZXMuICovCi0gIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9WOSk7CisgIGlmIChjaWYtPmFiaSAhPSBGRklfVjkpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogICBmbiA9ICh1bnNpZ25lZCBsb25nKSBmZmlfY2xvc3VyZV92OTsKICAgdHJhbXBbMF0gPSAweDgzNDE0MDAwOwkvKiByZAklcGMsICVnMQkqLwogICB0cmFtcFsxXSA9IDB4Y2E1ODYwMTA7CS8qIGxkeAlbJWcxKzE2XSwgJWc1CSovCkBAIC00NTYsNyArNDk5LDggQEAKICAgKigodW5zaWduZWQgbG9uZyAqKSAmdHJhbXBbNF0pID0gZm47CiAjZWxzZQogICB1bnNpZ25lZCBsb25nIGN0eCA9ICh1bnNpZ25lZCBsb25nKSBjb2RlbG9jOwotICBGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfVjgpOworICBpZiAoY2lmLT5hYmkgIT0gRkZJX1Y4KQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKICAgZm4gPSAodW5zaWduZWQgbG9uZykgZmZpX2Nsb3N1cmVfdjg7CiAgIHRyYW1wWzBdID0gMHgwMzAwMDAwMCB8IGZuID4+IDEwOwkvKiBzZXRoaSAlaGkoZm4pLCAlZzEJKi8KICAgdHJhbXBbMV0gPSAweDA1MDAwMDAwIHwgY3R4ID4+IDEwOwkvKiBzZXRoaSAlaGkoY3R4KSwgJWcyCSovCkBAIC00NjgsMTMgKzUxMiwxMyBAQAogICBjbG9zdXJlLT5mdW4gPSBmdW47CiAgIGNsb3N1cmUtPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKIAotICAvKiBGbHVzaCB0aGUgSWNhY2hlLiAgRklYTUU6IGFsaWdubWVudCBpc24ndCBjZXJ0YWluLCBhc3N1bWUgOCBieXRlcyAqLworICAvKiBGbHVzaCB0aGUgSWNhY2hlLiAgY2xvc3VyZSBpcyA4IGJ5dGVzIGFsaWduZWQuICAqLwogI2lmZGVmIFNQQVJDNjQKLSAgYXNtIHZvbGF0aWxlICgiZmx1c2gJJTAiIDogOiAiciIgKGNsb3N1cmUpIDogIm1lbW9yeSIpOwotICBhc20gdm9sYXRpbGUgKCJmbHVzaAklMCIgOiA6ICJyIiAoKChjaGFyICopIGNsb3N1cmUpICsgOCkgOiAibWVtb3J5Iik7CisgIGFzbSB2b2xhdGlsZSAoImZsdXNoCSUwOyBmbHVzaCAlMCs4IiA6IDogInIiIChjbG9zdXJlKSA6ICJtZW1vcnkiKTsKICNlbHNlCi0gIGFzbSB2b2xhdGlsZSAoImlmbHVzaAklMCIgOiA6ICJyIiAoY2xvc3VyZSkgOiAibWVtb3J5Iik7Ci0gIGFzbSB2b2xhdGlsZSAoImlmbHVzaAklMCIgOiA6ICJyIiAoKChjaGFyICopIGNsb3N1cmUpICsgOCkgOiAibWVtb3J5Iik7CisgIGFzbSB2b2xhdGlsZSAoImlmbHVzaAklMDsgaWZsdXNoICUwKzgiIDogOiAiciIgKGNsb3N1cmUpIDogIm1lbW9yeSIpOworICAvKiBTUEFSQyB2OCByZXF1aXJlcyA1IGluc3RydWN0aW9ucyBmb3IgZmx1c2ggdG8gYmUgdmlzaWJsZSAqLworICBhc20gdm9sYXRpbGUgKCJub3A7IG5vcDsgbm9wOyBub3A7IG5vcCIpOwogI2VuZGlmCiAKICAgcmV0dXJuIEZGSV9PSzsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NwYXJjL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvZmZpdGFyZ2V0LmgKaW5kZXggMWExYTFhYy4uZDg5Zjc4NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgU1BBUkMuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsMTEgKzI4LDE3IEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAvKiAtLS0tIFN5c3RlbSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaWYgZGVmaW5lZChfX2FyY2g2NF9fKSB8fCBkZWZpbmVkKF9fc3BhcmN2OSkKKyNpZm5kZWYgU1BBUkM2NAogI2RlZmluZSBTUEFSQzY0CiAjZW5kaWYKKyNlbmRpZgogCiAjaWZuZGVmIExJQkZGSV9BU00KIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICBmZmlfYXJnOwpAQCAtNDIsMTIgKzQ5LDEyIEBACiAgIEZGSV9WOCwKICAgRkZJX1Y4UExVUywKICAgRkZJX1Y5LAorICBGRklfTEFTVF9BQkksCiAjaWZkZWYgU1BBUkM2NAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfVjksCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9WOQogI2Vsc2UKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1Y4LAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfVjgKICNlbmRpZgotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCiB9IGZmaV9hYmk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvdjkuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NwYXJjL3Y5LlMKaW5kZXggNDg5ZmYwMi4uYmYzMWEyYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvdjkuUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zcGFyYy92OS5TCkBAIC0zMiw3ICszMiw3IEBACiAvKiBPbmx5IGNvbXBpbGUgdGhpcyBpbiBmb3IgNjRiaXQgYnVpbGRzLCBiZWNhdXNlIG90aGVyd2lzZSB0aGUgb2JqZWN0IGZpbGUKICAgIHdpbGwgaGF2ZSBpbnByb3BlciBhcmNoaXRlY3R1cmUgZHVlIHRvIHVzZWQgaW5zdHJ1Y3Rpb25zLiAgKi8KIAotI2RlZmluZSBTVEFDS0ZSQU1FIDEyOAkJLyogTWluaW11bSBzdGFjayBmcmFtZXNpemUgZm9yIFNQQVJDICovCisjZGVmaW5lIFNUQUNLRlJBTUUgMTc2CQkvKiBNaW5pbXVtIHN0YWNrIGZyYW1lc2l6ZSBmb3IgU1BBUkMgNjQtYml0ICovCiAjZGVmaW5lIFNUQUNLX0JJQVMgMjA0NwogI2RlZmluZSBBUkdTICgxMjgpCQkvKiBPZmZzZXQgb2YgcmVnaXN0ZXIgYXJlYSBpbiBmcmFtZSAqLwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpLmMKaW5kZXggODA0OTY1My4uNjExZTIyMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZmkuYwpAQCAtMyw3ICszLDcgQEAKICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDAyICBSYW5qaXQgTWF0aGV3CiAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwMiAgQm8gVGhvcnNlbgogICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDIgIFJvZ2VyIFNheWxlCi0gICAgICAgICAgIENvcHlyaWdodCAoQykgMjAwOCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICAgICAgICAgIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICAgIHg4NiBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZQogCkBAIC00OCwxMCArNDgsMTggQEAKICAgcmVnaXN0ZXIgdm9pZCAqKnBfYXJndjsKICAgcmVnaXN0ZXIgY2hhciAqYXJncDsKICAgcmVnaXN0ZXIgZmZpX3R5cGUgKipwX2FyZzsKKyNpZmRlZiBYODZfV0lOMzIKKyAgc2l6ZV90IHBfc3RhY2tfYXJnc1syXTsKKyAgdm9pZCAqcF9zdGFja19kYXRhWzJdOworICBjaGFyICphcmdwMiA9IHN0YWNrOworICBpbnQgc3RhY2tfYXJnc19jb3VudCA9IDA7CisgIGludCBjYWJpID0gZWNpZi0+Y2lmLT5hYmk7CisjZW5kaWYKIAogICBhcmdwID0gc3RhY2s7CiAKLSAgaWYgKGVjaWYtPmNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfU1RSVUNUCisgIGlmICgoZWNpZi0+Y2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1QKKyAgICAgICB8fCBlY2lmLT5jaWYtPmZsYWdzID09IEZGSV9UWVBFX01TX1NUUlVDVCkKICNpZmRlZiBYODZfV0lONjQKICAgICAgICYmIChlY2lmLT5jaWYtPnJ0eXBlLT5zaXplICE9IDEgJiYgZWNpZi0+Y2lmLT5ydHlwZS0+c2l6ZSAhPSAyCiAgICAgICAgICAgJiYgZWNpZi0+Y2lmLT5ydHlwZS0+c2l6ZSAhPSA0ICYmIGVjaWYtPmNpZi0+cnR5cGUtPnNpemUgIT0gOCkKQEAgLTU5LDYgKzY3LDE2IEBACiAgICAgICApCiAgICAgewogICAgICAgKih2b2lkICoqKSBhcmdwID0gZWNpZi0+cnZhbHVlOworI2lmZGVmIFg4Nl9XSU4zMgorICAgICAgLyogRm9yIGZhc3RjYWxsL3RoaXNjYWxsIHRoaXMgaXMgZmlyc3QgcmVnaXN0ZXItcGFzc2VkCisgICAgICAgICBhcmd1bWVudC4gICovCisgICAgICBpZiAoY2FiaSA9PSBGRklfVEhJU0NBTEwgfHwgY2FiaSA9PSBGRklfRkFTVENBTEwpCisJeworCSAgcF9zdGFja19hcmdzW3N0YWNrX2FyZ3NfY291bnRdID0gc2l6ZW9mICh2b2lkKik7CisJICBwX3N0YWNrX2RhdGFbc3RhY2tfYXJnc19jb3VudF0gPSBhcmdwOworCSAgKytzdGFja19hcmdzX2NvdW50OworCX0KKyNlbmRpZgogICAgICAgYXJncCArPSBzaXplb2Yodm9pZCopOwogICAgIH0KIApAQCAtMTM0LDYgKzE1MiwyNCBAQAogICAgICAgICB7CiAgICAgICAgICAgbWVtY3B5KGFyZ3AsICpwX2FyZ3YsIHopOwogICAgICAgICB9CisKKyNpZmRlZiBYODZfV0lOMzIKKyAgICAvKiBGb3IgdGhpc2NhbGwvZmFzdGNhbGwgY29udmVudGlvbiByZWdpc3Rlci1wYXNzZWQgYXJndW1lbnRzCisgICAgICAgYXJlIHRoZSBmaXJzdCB0d28gbm9uZS1mbG9hdGluZy1wb2ludCBhcmd1bWVudHMgd2l0aCBhIHNpemUKKyAgICAgICBzbWFsbGVyIG9yIGVxdWFsIHRvIHNpemVvZiAodm9pZCopLiAgKi8KKyAgICBpZiAoKGNhYmkgPT0gRkZJX1RISVNDQUxMICYmIHN0YWNrX2FyZ3NfY291bnQgPCAxKQorICAgICAgICB8fCAoY2FiaSA9PSBGRklfRkFTVENBTEwgJiYgc3RhY2tfYXJnc19jb3VudCA8IDIpKQorICAgICAgeworCWlmICh6IDw9IDQKKwkgICAgJiYgKCgqcF9hcmcpLT50eXBlICE9IEZGSV9UWVBFX0ZMT0FUCisJICAgICAgICAmJiAoKnBfYXJnKS0+dHlwZSAhPSBGRklfVFlQRV9TVFJVQ1QpKQorCSAgeworCSAgICBwX3N0YWNrX2FyZ3Nbc3RhY2tfYXJnc19jb3VudF0gPSB6OworCSAgICBwX3N0YWNrX2RhdGFbc3RhY2tfYXJnc19jb3VudF0gPSBhcmdwOworCSAgICArK3N0YWNrX2FyZ3NfY291bnQ7CisJICB9CisgICAgICB9CisjZW5kaWYKICAgICAgIHBfYXJndisrOwogI2lmZGVmIFg4Nl9XSU42NAogICAgICAgYXJncCArPSAoeiArIHNpemVvZih2b2lkKikgLSAxKSAmIH4oc2l6ZW9mKHZvaWQqKSAtIDEpOwpAQCAtMTQxLDcgKzE3Nyw0NSBAQAogICAgICAgYXJncCArPSB6OwogI2VuZGlmCiAgICAgfQotICAKKworI2lmZGVmIFg4Nl9XSU4zMgorICAvKiBXZSBuZWVkIHRvIG1vdmUgdGhlIHJlZ2lzdGVyLXBhc3NlZCBhcmd1bWVudHMgZm9yIHRoaXNjYWxsL2Zhc3RjYWxsCisgICAgIG9uIHRvcCBvZiBzdGFjaywgc28gdGhhdCB0aG9zZSBjYW4gYmUgbW92ZWQgdG8gcmVnaXN0ZXJzIGVjeC9lZHggYnkKKyAgICAgY2FsbC1oYW5kbGVyLiAgKi8KKyAgaWYgKHN0YWNrX2FyZ3NfY291bnQgPiAwKQorICAgIHsKKyAgICAgIHNpemVfdCB6eiA9IChwX3N0YWNrX2FyZ3NbMF0gKyAzKSAmIH4zOworICAgICAgY2hhciAqaDsKKworICAgICAgLyogTW92ZSBmaXJzdCBhcmd1bWVudCB0byB0b3Atc3RhY2sgcG9zaXRpb24uICAqLworICAgICAgaWYgKHBfc3RhY2tfZGF0YVswXSAhPSBhcmdwMikKKwl7CisJICBoID0gYWxsb2NhICh6eiArIDEpOworCSAgbWVtY3B5IChoLCBwX3N0YWNrX2RhdGFbMF0sIHp6KTsKKwkgIG1lbW1vdmUgKGFyZ3AyICsgenosIGFyZ3AyLAorCSAgICAgICAgICAgKHNpemVfdCkgKChjaGFyICopIHBfc3RhY2tfZGF0YVswXSAtIChjaGFyKilhcmdwMikpOworCSAgbWVtY3B5IChhcmdwMiwgaCwgenopOworCX0KKworICAgICAgYXJncDIgKz0geno7CisgICAgICAtLXN0YWNrX2FyZ3NfY291bnQ7CisgICAgICBpZiAoenogPiA0KQorCXN0YWNrX2FyZ3NfY291bnQgPSAwOworCisgICAgICAvKiBJZiB3ZSBoYXZlIGEgc2Vjb25kIGFyZ3VtZW50LCB0aGVuIG1vdmUgaXQgb24gdG9wCisgICAgICAgICBhZnRlciB0aGUgZmlyc3Qgb25lLiAgKi8KKyAgICAgIGlmIChzdGFja19hcmdzX2NvdW50ID4gMCAmJiBwX3N0YWNrX2RhdGFbMV0gIT0gYXJncDIpCisJeworCSAgenogPSBwX3N0YWNrX2FyZ3NbMV07CisJICB6eiA9ICh6eiArIDMpICYgfjM7CisJICBoID0gYWxsb2NhICh6eiArIDEpOworCSAgaCA9IGFsbG9jYSAoenogKyAxKTsKKwkgIG1lbWNweSAoaCwgcF9zdGFja19kYXRhWzFdLCB6eik7CisJICBtZW1tb3ZlIChhcmdwMiArIHp6LCBhcmdwMiwgKHNpemVfdCkgKChjaGFyKikgcF9zdGFja19kYXRhWzFdIC0gKGNoYXIqKWFyZ3AyKSk7CisJICBtZW1jcHkgKGFyZ3AyLCBoLCB6eik7CisJfQorICAgIH0KKyNlbmRpZgogICByZXR1cm47CiB9CiAKQEAgLTE1NSwxMiArMjI5LDEwIEBACiAgIHN3aXRjaCAoY2lmLT5ydHlwZS0+dHlwZSkKICAgICB7CiAgICAgY2FzZSBGRklfVFlQRV9WT0lEOgotI2lmIGRlZmluZWQoWDg2KSB8fCBkZWZpbmVkIChYODZfV0lOMzIpIHx8IGRlZmluZWQoWDg2X0ZSRUVCU0QpIHx8IGRlZmluZWQoWDg2X0RBUldJTikgfHwgZGVmaW5lZChYODZfV0lONjQpCiAgICAgY2FzZSBGRklfVFlQRV9VSU5UODoKICAgICBjYXNlIEZGSV9UWVBFX1VJTlQxNjoKICAgICBjYXNlIEZGSV9UWVBFX1NJTlQ4OgogICAgIGNhc2UgRkZJX1RZUEVfU0lOVDE2OgotI2VuZGlmCiAjaWZkZWYgWDg2X1dJTjY0CiAgICAgY2FzZSBGRklfVFlQRV9VSU5UMzI6CiAgICAgY2FzZSBGRklfVFlQRV9TSU5UMzI6CkBAIC0yMDgsOCArMjgwLDEzIEBACiAgICAgICBlbHNlCiAjZW5kaWYKICAgICAgICAgewotICAgICAgICAgIGNpZi0+ZmxhZ3MgPSBGRklfVFlQRV9TVFJVQ1Q7Ci0gICAgICAgICAgLy8gYWxsb2NhdGUgc3BhY2UgZm9yIHJldHVybiB2YWx1ZSBwb2ludGVyCisjaWZkZWYgWDg2X1dJTjMyCisgICAgICAgICAgaWYgKGNpZi0+YWJpID09IEZGSV9NU19DREVDTCkKKyAgICAgICAgICAgIGNpZi0+ZmxhZ3MgPSBGRklfVFlQRV9NU19TVFJVQ1Q7CisgICAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgICAgICBjaWYtPmZsYWdzID0gRkZJX1RZUEVfU1RSVUNUOworICAgICAgICAgIC8qIGFsbG9jYXRlIHNwYWNlIGZvciByZXR1cm4gdmFsdWUgcG9pbnRlciAqLwogICAgICAgICAgIGNpZi0+Ynl0ZXMgKz0gQUxJR04oc2l6ZW9mKHZvaWQqKSwgRkZJX1NJWkVPRl9BUkcpOwogICAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTIzNCw3ICszMTEsNyBAQAogICAgIH0KIAogI2lmZGVmIFg4Nl9XSU42NAotICAvLyBlbnN1cmUgc3BhY2UgZm9yIHN0b3JpbmcgZm91ciByZWdpc3RlcnMKKyAgLyogZW5zdXJlIHNwYWNlIGZvciBzdG9yaW5nIGZvdXIgcmVnaXN0ZXJzICovCiAgIGNpZi0+Ynl0ZXMgKz0gNCAqIHNpemVvZihmZmlfYXJnKTsKICNlbmRpZgogCkBAIC0yNTIsNyArMzI5LDcgQEAKICNlbGlmIGRlZmluZWQoWDg2X1dJTjMyKQogZXh0ZXJuIHZvaWQKIGZmaV9jYWxsX3dpbjMyKHZvaWQgKCopKGNoYXIgKiwgZXh0ZW5kZWRfY2lmICopLCBleHRlbmRlZF9jaWYgKiwKLSAgICAgICAgICAgICAgIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQgKiwgdm9pZCAoKmZuKSh2b2lkKSk7CisgICAgICAgICAgICAgICB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCAqLCB2b2lkICgqZm4pKHZvaWQpKTsKICNlbHNlCiBleHRlcm4gdm9pZCBmZmlfY2FsbF9TWVNWKHZvaWQgKCopKGNoYXIgKiwgZXh0ZW5kZWRfY2lmICopLCBleHRlbmRlZF9jaWYgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCAqLCB2b2lkICgqZm4pKHZvaWQpKTsKQEAgLTI3OCw3ICszNTUsOCBAQAogICAgIH0KICNlbHNlCiAgIGlmIChydmFsdWUgPT0gTlVMTAotICAgICAgJiYgY2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1QpCisgICAgICAmJiAoY2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1QKKyAgICAgICAgICB8fCBjaWYtPmZsYWdzID09IEZGSV9UWVBFX01TX1NUUlVDVCkpCiAgICAgewogICAgICAgZWNpZi5ydmFsdWUgPSBhbGxvY2EoY2lmLT5ydHlwZS0+c2l6ZSk7CiAgICAgfQpAQCAtMjkxLDMzICszNjksNDQgQEAKICAgICB7CiAjaWZkZWYgWDg2X1dJTjY0CiAgICAgY2FzZSBGRklfV0lONjQ6Ci0gICAgICB7Ci0gICAgICAgIC8vIE1ha2UgY29waWVzIG9mIGFsbCBzdHJ1Y3QgYXJndW1lbnRzCi0gICAgICAgIC8vIE5PVEU6IG5vdCBzdXJlIGlmIHJlc3BvbnNpYmlsaXR5IHNob3VsZCBiZSBoZXJlIG9yIGluIGNhbGxlcgotICAgICAgICB1bnNpZ25lZCBpbnQgaTsKLSAgICAgICAgZm9yIChpPTA7IGkgPCBjaWYtPm5hcmdzO2krKykgewotICAgICAgICAgIHNpemVfdCBzaXplID0gY2lmLT5hcmdfdHlwZXNbaV0tPnNpemU7Ci0gICAgICAgICAgaWYgKChjaWYtPmFyZ190eXBlc1tpXS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QKLSAgICAgICAgICAgICAgICYmIChzaXplICE9IDEgJiYgc2l6ZSAhPSAyICYmIHNpemUgIT0gNCAmJiBzaXplICE9IDgpKQotI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCi0gICAgICAgICAgICAgIHx8IGNpZi0+YXJnX3R5cGVzW2ldLT50eXBlID09IEZGSV9UWVBFX0xPTkdET1VCTEUKLSNlbmRpZgotICAgICAgICAgICAgICApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHZvaWQgKmxvY2FsID0gYWxsb2NhKHNpemUpOwotICAgICAgICAgICAgICBtZW1jcHkobG9jYWwsIGF2YWx1ZVtpXSwgc2l6ZSk7Ci0gICAgICAgICAgICAgIGF2YWx1ZVtpXSA9IGxvY2FsOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGZmaV9jYWxsX3dpbjY0KGZmaV9wcmVwX2FyZ3MsICZlY2lmLCBjaWYtPmJ5dGVzLAotICAgICAgICAgICAgICAgICAgICAgICBjaWYtPmZsYWdzLCBlY2lmLnJ2YWx1ZSwgZm4pOwotICAgICAgfQorICAgICAgZmZpX2NhbGxfd2luNjQoZmZpX3ByZXBfYXJncywgJmVjaWYsIGNpZi0+Ynl0ZXMsCisgICAgICAgICAgICAgICAgICAgICBjaWYtPmZsYWdzLCBlY2lmLnJ2YWx1ZSwgZm4pOwogICAgICAgYnJlYWs7CiAjZWxpZiBkZWZpbmVkKFg4Nl9XSU4zMikKICAgICBjYXNlIEZGSV9TWVNWOgogICAgIGNhc2UgRkZJX1NURENBTEw6Ci0gICAgICBmZmlfY2FsbF93aW4zMihmZmlfcHJlcF9hcmdzLCAmZWNpZiwgY2lmLT5ieXRlcywgY2lmLT5mbGFncywKLSAgICAgICAgICAgICAgICAgICAgIGVjaWYucnZhbHVlLCBmbik7CisgICAgY2FzZSBGRklfTVNfQ0RFQ0w6CisgICAgICBmZmlfY2FsbF93aW4zMihmZmlfcHJlcF9hcmdzLCAmZWNpZiwgY2lmLT5hYmksIGNpZi0+Ynl0ZXMsIGNpZi0+ZmxhZ3MsCisJCSAgICAgZWNpZi5ydmFsdWUsIGZuKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRkZJX1RISVNDQUxMOgorICAgIGNhc2UgRkZJX0ZBU1RDQUxMOgorICAgICAgeworCXVuc2lnbmVkIGludCBhYmkgPSBjaWYtPmFiaTsKKwl1bnNpZ25lZCBpbnQgaSwgcGFzc2VkX3JlZ3MgPSAwOworCisJaWYgKGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfU1RSVUNUKQorCSAgKytwYXNzZWRfcmVnczsKKworCWZvciAoaT0wOyBpIDwgY2lmLT5uYXJncyAmJiBwYXNzZWRfcmVncyA8IDI7aSsrKQorCSAgeworCSAgICBzaXplX3Qgc3o7CisKKwkgICAgaWYgKGNpZi0+YXJnX3R5cGVzW2ldLT50eXBlID09IEZGSV9UWVBFX0ZMT0FUCisJICAgICAgICB8fCBjaWYtPmFyZ190eXBlc1tpXS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpCisJICAgICAgY29udGludWU7CisJICAgIHN6ID0gKGNpZi0+YXJnX3R5cGVzW2ldLT5zaXplICsgMykgJiB+MzsKKwkgICAgaWYgKHN6ID09IDAgfHwgc3ogPiA0KQorCSAgICAgIGNvbnRpbnVlOworCSAgICArK3Bhc3NlZF9yZWdzOworCSAgfQorCWlmIChwYXNzZWRfcmVncyA8IDIgJiYgYWJpID09IEZGSV9GQVNUQ0FMTCkKKwkgIGFiaSA9IEZGSV9USElTQ0FMTDsKKwlpZiAocGFzc2VkX3JlZ3MgPCAxICYmIGFiaSA9PSBGRklfVEhJU0NBTEwpCisJICBhYmkgPSBGRklfU1REQ0FMTDsKKyAgICAgICAgZmZpX2NhbGxfd2luMzIoZmZpX3ByZXBfYXJncywgJmVjaWYsIGFiaSwgY2lmLT5ieXRlcywgY2lmLT5mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgZWNpZi5ydmFsdWUsIGZuKTsKKyAgICAgIH0KICAgICAgIGJyZWFrOwogI2Vsc2UKICAgICBjYXNlIEZGSV9TWVNWOgpAQCAtMzQ1LDggKzQzNCwxMiBAQAogdm9pZCBGRklfSElEREVOIGZmaV9jbG9zdXJlX3Jhd19TWVNWIChmZmlfcmF3X2Nsb3N1cmUgKikKICAgICAgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0oMSkpKTsKICNpZmRlZiBYODZfV0lOMzIKK3ZvaWQgRkZJX0hJRERFTiBmZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEwgKGZmaV9yYXdfY2xvc3VyZSAqKQorICAgICBfX2F0dHJpYnV0ZV9fICgocmVncGFybSgxKSkpOwogdm9pZCBGRklfSElEREVOIGZmaV9jbG9zdXJlX1NURENBTEwgKGZmaV9jbG9zdXJlICopCiAgICAgIF9fYXR0cmlidXRlX18gKChyZWdwYXJtKDEpKSk7Cit2b2lkIEZGSV9ISURERU4gZmZpX2Nsb3N1cmVfVEhJU0NBTEwgKGZmaV9jbG9zdXJlICopCisgICAgIF9fYXR0cmlidXRlX18gKChyZWdwYXJtKDEpKSk7CiAjZW5kaWYKICNpZmRlZiBYODZfV0lONjQKIHZvaWQgRkZJX0hJRERFTiBmZmlfY2xvc3VyZV93aW42NCAoZmZpX2Nsb3N1cmUgKik7CkBAIC00MjgsNyArNTIxLDggQEAKICAgICBhcmdwICs9IHNpemVvZih2b2lkICopOwogICB9CiAjZWxzZQotICBpZiAoIGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfU1RSVUNUICkgeworICBpZiAoIGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfU1RSVUNUCisgICAgICAgfHwgY2lmLT5mbGFncyA9PSBGRklfVFlQRV9NU19TVFJVQ1QgKSB7CiAgICAgKnJ2YWx1ZSA9ICoodm9pZCAqKikgYXJncDsKICAgICBhcmdwICs9IHNpemVvZih2b2lkICopOwogICB9CkBAIC01MDYsNiArNjAwLDMzIEBACiAgICAqKHVuc2lnbmVkIGludCopICAmX190cmFtcFs2XSA9IF9fZGlzOyAvKiBqbXAgX19mdW4gICovIFwKICB9CiAKKyNkZWZpbmUgRkZJX0lOSVRfVFJBTVBPTElORV9USElTQ0FMTChUUkFNUCxGVU4sQ1RYLFNJWkUpIFwKK3sgdW5zaWduZWQgY2hhciAqX190cmFtcCA9ICh1bnNpZ25lZCBjaGFyKikoVFJBTVApOyBcCisgICB1bnNpZ25lZCBpbnQgIF9fZnVuID0gKHVuc2lnbmVkIGludCkoRlVOKTsgXAorICAgdW5zaWduZWQgaW50ICBfX2N0eCA9ICh1bnNpZ25lZCBpbnQpKENUWCk7IFwKKyAgIHVuc2lnbmVkIGludCAgX19kaXMgPSBfX2Z1biAtIChfX2N0eCArIDQ5KTsgIFwKKyAgIHVuc2lnbmVkIHNob3J0IF9fc2l6ZSA9ICh1bnNpZ25lZCBzaG9ydCkoU0laRSk7IFwKKyAgICoodW5zaWduZWQgaW50ICopICZfX3RyYW1wWzBdID0gMHg4MzI0MDQ4YjsJLyogbW92ICglZXNwKSwgJWVheCAqLyBcCisgICAqKHVuc2lnbmVkIGludCAqKSAmX190cmFtcFs0XSA9IDB4NGM4OTBjZWM7CS8qIHN1YiAkMTIsICVlc3AgKi8gXAorICAgKih1bnNpZ25lZCBpbnQgKikgJl9fdHJhbXBbOF0gPSAweDA0ODkwNDI0OwkvKiBtb3YgJWVjeCwgNCglZXNwKSAqLyBcCisgICAqKHVuc2lnbmVkIGNoYXIqKSAmX190cmFtcFsxMl0gPSAweDI0OwkvKiBtb3YgJWVheCwgKCVlc3ApICovIFwKKyAgICoodW5zaWduZWQgY2hhciopICZfX3RyYW1wWzEzXSA9IDB4Yjg7IFwKKyAgICoodW5zaWduZWQgaW50ICopICZfX3RyYW1wWzE0XSA9IF9fc2l6ZTsJLyogbW92IF9fc2l6ZSwgJWVheCAqLyBcCisgICAqKHVuc2lnbmVkIGludCAqKSAmX190cmFtcFsxOF0gPSAweDA4MjQ0YzhkOwkvKiBsZWEgOCglZXNwKSwgJWVjeCAqLyBcCisgICAqKHVuc2lnbmVkIGludCAqKSAmX190cmFtcFsyMl0gPSAweDQ4MDJlOGMxOyAvKiBzaHIgJDIsICVlYXggOyBkZWMgJWVheCAqLyBcCisgICAqKHVuc2lnbmVkIHNob3J0KikgJl9fdHJhbXBbMjZdID0gMHgwYjc0OwkvKiBqeiAxZiAqLyBcCisgICAqKHVuc2lnbmVkIGludCAqKSAmX190cmFtcFsyOF0gPSAweDg5MDg1MThiOwkvKiAyYjogbW92IDgoJWVjeCksICVlZHggKi8gXAorICAgKih1bnNpZ25lZCBpbnQgKikgJl9fdHJhbXBbMzJdID0gMHgwNGMxODMxMTsgLyogbW92ICVlZHgsICglZWN4KSA7IGFkZCAkNCwgJWVjeCAqLyBcCisgICAqKHVuc2lnbmVkIGNoYXIqKSAmX190cmFtcFszNl0gPSAweDQ4OwkvKiBkZWMgJWVheCAqLyBcCisgICAqKHVuc2lnbmVkIHNob3J0KikgJl9fdHJhbXBbMzddID0gMHhmNTc1OwkvKiBqbnogMmIgOyAxZjogKi8gXAorICAgKih1bnNpZ25lZCBjaGFyKikgJl9fdHJhbXBbMzldID0gMHhiODsgXAorICAgKih1bnNpZ25lZCBpbnQqKSAgJl9fdHJhbXBbNDBdID0gX19jdHg7IC8qIG1vdmwgX19jdHgsICVlYXggKi8gXAorICAgKih1bnNpZ25lZCBjaGFyICopICAmX190cmFtcFs0NF0gPSAweGU4OyBcCisgICAqKHVuc2lnbmVkIGludCopICAmX190cmFtcFs0NV0gPSBfX2RpczsgLyogY2FsbCBfX2Z1biAgKi8gXAorICAgKih1bnNpZ25lZCBjaGFyKikgICZfX3RyYW1wWzQ5XSA9IDB4YzI7IC8qIHJldCAgKi8gXAorICAgKih1bnNpZ25lZCBzaG9ydCopICAmX190cmFtcFs1MF0gPSAoX19zaXplICsgOCk7IC8qIHJldCAoX19zaXplICsgOCkgICovIFwKKyB9CisKICNkZWZpbmUgRkZJX0lOSVRfVFJBTVBPTElORV9TVERDQUxMKFRSQU1QLEZVTixDVFgsU0laRSkgIFwKIHsgdW5zaWduZWQgY2hhciAqX190cmFtcCA9ICh1bnNpZ25lZCBjaGFyKikoVFJBTVApOyBcCiAgICB1bnNpZ25lZCBpbnQgIF9fZnVuID0gKHVuc2lnbmVkIGludCkoRlVOKTsgXApAQCAtNTQ4LDEyICs2NjksMjUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKiljb2RlbG9jKTsKICAgICB9CiAjaWZkZWYgWDg2X1dJTjMyCisgIGVsc2UgaWYgKGNpZi0+YWJpID09IEZGSV9USElTQ0FMTCkKKyAgICB7CisgICAgICBGRklfSU5JVF9UUkFNUE9MSU5FX1RISVNDQUxMICgmY2xvc3VyZS0+dHJhbXBbMF0sCisJCQkJICAgICZmZmlfY2xvc3VyZV9USElTQ0FMTCwKKwkJCQkgICAgKHZvaWQqKWNvZGVsb2MsCisJCQkJICAgIGNpZi0+Ynl0ZXMpOworICAgIH0KICAgZWxzZSBpZiAoY2lmLT5hYmkgPT0gRkZJX1NURENBTEwpCiAgICAgewogICAgICAgRkZJX0lOSVRfVFJBTVBPTElORV9TVERDQUxMICgmY2xvc3VyZS0+dHJhbXBbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmZmlfY2xvc3VyZV9TVERDQUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCopY29kZWxvYywgY2lmLT5ieXRlcyk7CiAgICAgfQorICBlbHNlIGlmIChjaWYtPmFiaSA9PSBGRklfTVNfQ0RFQ0wpCisgICAgeworICAgICAgRkZJX0lOSVRfVFJBTVBPTElORSAoJmNsb3N1cmUtPnRyYW1wWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZmaV9jbG9zdXJlX1NZU1YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCopY29kZWxvYyk7CisgICAgfQogI2VuZGlmIC8qIFg4Nl9XSU4zMiAqLwogI2VuZGlmIC8qICFYODZfV0lONjQgKi8KICAgZWxzZQpAQCAtNTgyLDYgKzcxNiw5IEBACiAgIGludCBpOwogCiAgIGlmIChjaWYtPmFiaSAhPSBGRklfU1lTVikgeworI2lmZGVmIFg4Nl9XSU4zMgorICAgIGlmIChjaWYtPmFiaSAhPSBGRklfVEhJU0NBTEwpCisjZW5kaWYKICAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAgIH0KIApAQCAtNTk2LDEwICs3MzMsMjAgQEAKICAgICAgIEZGSV9BU1NFUlQgKGNpZi0+YXJnX3R5cGVzW2ldLT50eXBlICE9IEZGSV9UWVBFX0xPTkdET1VCTEUpOwogICAgIH0KICAgCi0KKyNpZmRlZiBYODZfV0lOMzIKKyAgaWYgKGNpZi0+YWJpID09IEZGSV9TWVNWKQorICAgIHsKKyNlbmRpZgogICBGRklfSU5JVF9UUkFNUE9MSU5FICgmY2xvc3VyZS0+dHJhbXBbMF0sICZmZmlfY2xvc3VyZV9yYXdfU1lTViwKICAgICAgICAgICAgICAgICAgICAgICAgY29kZWxvYyk7Ci0gICAgCisjaWZkZWYgWDg2X1dJTjMyCisgICAgfQorICBlbHNlIGlmIChjaWYtPmFiaSA9PSBGRklfVEhJU0NBTEwpCisgICAgeworICAgICAgRkZJX0lOSVRfVFJBTVBPTElORV9USElTQ0FMTCAoJmNsb3N1cmUtPnRyYW1wWzBdLCAmZmZpX2Nsb3N1cmVfcmF3X1RISVNDQUxMLAorCQkJCSAgICBjb2RlbG9jLCBjaWYtPmJ5dGVzKTsKKyAgICB9CisjZW5kaWYKICAgY2xvc3VyZS0+Y2lmICA9IGNpZjsKICAgY2xvc3VyZS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOwogICBjbG9zdXJlLT5mdW4gID0gZnVuOwpAQCAtNjMwLDggKzc3Nyw5IEBACiAgIC8qIElmIHRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJ1Y3QgYW5kIHdlIGRvbid0IGhhdmUgYSByZXR1cm4gKi8KICAgLyogdmFsdWUgYWRkcmVzcyB0aGVuIHdlIG5lZWQgdG8gbWFrZSBvbmUgICAgICAgICAgICAgICAgICAgICAqLwogCi0gIGlmICgocnZhbHVlID09IE5VTEwpICYmIAotICAgICAgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKSkKKyAgaWYgKHJ2YWx1ZSA9PSBOVUxMCisgICAgICAmJiAoY2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1QKKyAgICAgICAgICB8fCBjaWYtPmZsYWdzID09IEZGSV9UWVBFX01TX1NUUlVDVCkpCiAgICAgewogICAgICAgZWNpZi5ydmFsdWUgPSBhbGxvY2EoY2lmLT5ydHlwZS0+c2l6ZSk7CiAgICAgfQpAQCAtNjQ0LDggKzc5MiwzOCBAQAogI2lmZGVmIFg4Nl9XSU4zMgogICAgIGNhc2UgRkZJX1NZU1Y6CiAgICAgY2FzZSBGRklfU1REQ0FMTDoKLSAgICAgIGZmaV9jYWxsX3dpbjMyKGZmaV9wcmVwX2FyZ3NfcmF3LCAmZWNpZiwgY2lmLT5ieXRlcywgY2lmLT5mbGFncywKLSAgICAgICAgICAgICAgICAgICAgIGVjaWYucnZhbHVlLCBmbik7CisgICAgY2FzZSBGRklfTVNfQ0RFQ0w6CisgICAgICBmZmlfY2FsbF93aW4zMihmZmlfcHJlcF9hcmdzX3JhdywgJmVjaWYsIGNpZi0+YWJpLCBjaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLAorCQkgICAgIGVjaWYucnZhbHVlLCBmbik7CisgICAgICBicmVhazsKKyAgICBjYXNlIEZGSV9USElTQ0FMTDoKKyAgICBjYXNlIEZGSV9GQVNUQ0FMTDoKKyAgICAgIHsKKwl1bnNpZ25lZCBpbnQgYWJpID0gY2lmLT5hYmk7CisJdW5zaWduZWQgaW50IGksIHBhc3NlZF9yZWdzID0gMDsKKworCWlmIChjaWYtPmZsYWdzID09IEZGSV9UWVBFX1NUUlVDVCkKKwkgICsrcGFzc2VkX3JlZ3M7CisKKwlmb3IgKGk9MDsgaSA8IGNpZi0+bmFyZ3MgJiYgcGFzc2VkX3JlZ3MgPCAyO2krKykKKwkgIHsKKwkgICAgc2l6ZV90IHN6OworCisJICAgIGlmIChjaWYtPmFyZ190eXBlc1tpXS0+dHlwZSA9PSBGRklfVFlQRV9GTE9BVAorCSAgICAgICAgfHwgY2lmLT5hcmdfdHlwZXNbaV0tPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKQorCSAgICAgIGNvbnRpbnVlOworCSAgICBzeiA9IChjaWYtPmFyZ190eXBlc1tpXS0+c2l6ZSArIDMpICYgfjM7CisJICAgIGlmIChzeiA9PSAwIHx8IHN6ID4gNCkKKwkgICAgICBjb250aW51ZTsKKwkgICAgKytwYXNzZWRfcmVnczsKKwkgIH0KKwlpZiAocGFzc2VkX3JlZ3MgPCAyICYmIGFiaSA9PSBGRklfRkFTVENBTEwpCisJICBjaWYtPmFiaSA9IGFiaSA9IEZGSV9USElTQ0FMTDsKKwlpZiAocGFzc2VkX3JlZ3MgPCAxICYmIGFiaSA9PSBGRklfVEhJU0NBTEwpCisJICBjaWYtPmFiaSA9IGFiaSA9IEZGSV9TVERDQUxMOworICAgICAgICBmZmlfY2FsbF93aW4zMihmZmlfcHJlcF9hcmdzX3JhdywgJmVjaWYsIGFiaSwgY2lmLT5ieXRlcywgY2lmLT5mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgZWNpZi5ydmFsdWUsIGZuKTsKKyAgICAgIH0KICAgICAgIGJyZWFrOwogI2Vsc2UKICAgICBjYXNlIEZGSV9TWVNWOgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L2ZmaTY0LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpNjQuYwppbmRleCAwN2EyNjI3Li4xZGFhMWMwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpNjQuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpNjQuYwpAQCAtMSw3ICsxLDggQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmk2NC5jIC0gQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA3ICBCbyBUaG9yc2VuIDxib0BzdXNlLmRlPgotICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwOCAgUmVkIEhhdCwgSW5jLgotICAgCisgICBmZmk2NC5jIC0gQ29weXJpZ2h0IChjKSAyMDAxMSAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwOCwgMjAxMCAgUmVkIEhhdCwgSW5jLgorICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNyAgQm8gVGhvcnNlbiA8Ym9Ac3VzZS5kZT4KKyAgICAgICAgICAgICAKICAgIHg4Ni02NCBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0zNiwxMSArMzcsMTcgQEAKICNkZWZpbmUgTUFYX0dQUl9SRUdTIDYKICNkZWZpbmUgTUFYX1NTRV9SRUdTIDgKIAorI2lmZGVmIF9fSU5URUxfQ09NUElMRVIKKyNkZWZpbmUgVUlOVDEyOCBfX20xMjgKKyNlbHNlCisjZGVmaW5lIFVJTlQxMjggX19pbnQxMjhfdAorI2VuZGlmCisKIHN0cnVjdCByZWdpc3Rlcl9hcmdzCiB7CiAgIC8qIFJlZ2lzdGVycyBmb3IgYXJndW1lbnQgcGFzc2luZy4gICovCiAgIFVJTlQ2NCBncHJbTUFYX0dQUl9SRUdTXTsKLSAgX19pbnQxMjhfdCBzc2VbTUFYX1NTRV9SRUdTXTsKKyAgVUlOVDEyOCBzc2VbTUFYX1NTRV9SRUdTXTsKIH07CiAKIGV4dGVybiB2b2lkIGZmaV9jYWxsX3VuaXg2NCAodm9pZCAqYXJncywgdW5zaWduZWQgbG9uZyBieXRlcywgdW5zaWduZWQgZmxhZ3MsCkBAIC0zNzgsNyArMzg1LDcgQEAKIAkgIGlmIChhbGlnbiA8IDgpCiAJICAgIGFsaWduID0gODsKIAotCSAgYnl0ZXMgPSBBTElHTihieXRlcywgYWxpZ24pOworCSAgYnl0ZXMgPSBBTElHTiAoYnl0ZXMsIGFsaWduKTsKIAkgIGJ5dGVzICs9IGNpZi0+YXJnX3R5cGVzW2ldLT5zaXplOwogCX0KICAgICAgIGVsc2UKQEAgLTM5MCw3ICszOTcsNyBAQAogICBpZiAoc3NlY291bnQpCiAgICAgZmxhZ3MgfD0gMSA8PCAxMTsKICAgY2lmLT5mbGFncyA9IGZsYWdzOwotICBjaWYtPmJ5dGVzID0gYnl0ZXM7CisgIGNpZi0+Ynl0ZXMgPSBBTElHTiAoYnl0ZXMsIDgpOwogCiAgIHJldHVybiBGRklfT0s7CiB9CkBAIC00MjYsNyArNDMzLDcgQEAKICAgLyogSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBwYXNzZWQgaW4gbWVtb3J5LCBhZGQgdGhlIHBvaW50ZXIgYXMgdGhlCiAgICAgIGZpcnN0IGludGVnZXIgYXJndW1lbnQuICAqLwogICBpZiAocmV0X2luX21lbW9yeSkKLSAgICByZWdfYXJncy0+Z3ByW2dwcmNvdW50KytdID0gKGxvbmcpIHJ2YWx1ZTsKKyAgICByZWdfYXJncy0+Z3ByW2dwcmNvdW50KytdID0gKHVuc2lnbmVkIGxvbmcpIHJ2YWx1ZTsKIAogICBhdm4gPSBjaWYtPm5hcmdzOwogICBhcmdfdHlwZXMgPSBjaWYtPmFyZ190eXBlczsKQEAgLTQ5OCwxMiArNTA1LDIxIEBACiB7CiAgIHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICp0cmFtcDsKIAorICAvKiBTYW5pdHkgY2hlY2sgb24gdGhlIGNpZiBBQkkuICAqLworICB7CisgICAgaW50IGFiaSA9IGNpZi0+YWJpOworICAgIGlmIChVTkxJS0VMWSAoISAoYWJpID4gRkZJX0ZJUlNUX0FCSSAmJiBhYmkgPCBGRklfTEFTVF9BQkkpKSkKKyAgICAgIHJldHVybiBGRklfQkFEX0FCSTsKKyAgfQorCiAgIHRyYW1wID0gKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICZjbG9zdXJlLT50cmFtcFswXTsKIAogICB0cmFtcFswXSA9IDB4YmI0OTsJCS8qIG1vdiA8Y29kZT4sICVyMTEJKi8KLSAgKih2b2lkICogdm9sYXRpbGUgKikgJnRyYW1wWzFdID0gZmZpX2Nsb3N1cmVfdW5peDY0OworICAqKCh1bnNpZ25lZCBsb25nIGxvbmcgKiB2b2xhdGlsZSkgJnRyYW1wWzFdKQorICAgID0gKHVuc2lnbmVkIGxvbmcpIGZmaV9jbG9zdXJlX3VuaXg2NDsKICAgdHJhbXBbNV0gPSAweGJhNDk7CQkvKiBtb3YgPGRhdGE+LCAlcjEwCSovCi0gICoodm9pZCAqIHZvbGF0aWxlICopICZ0cmFtcFs2XSA9IGNvZGVsb2M7CisgICooKHVuc2lnbmVkIGxvbmcgbG9uZyAqIHZvbGF0aWxlKSAmdHJhbXBbNl0pCisgICAgPSAodW5zaWduZWQgbG9uZykgY29kZWxvYzsKIAogICAvKiBTZXQgdGhlIGNhcnJ5IGJpdCBpZmYgdGhlIGZ1bmN0aW9uIHVzZXMgYW55IHNzZSByZWdpc3RlcnMuCiAgICAgIFRoaXMgaXMgY2xjIG9yIHN0YywgdG9nZXRoZXIgd2l0aCB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgam1wLiAgKi8KQEAgLTU0Miw3ICs1NTgsNyBAQAogCXsKIAkgIC8qIFRoZSByZXR1cm4gdmFsdWUgZ29lcyBpbiBtZW1vcnkuICBBcnJhbmdlIGZvciB0aGUgY2xvc3VyZQogCSAgICAgcmV0dXJuIHZhbHVlIHRvIGdvIGRpcmVjdGx5IGJhY2sgdG8gdGhlIG9yaWdpbmFsIGNhbGxlci4gICovCi0JICBydmFsdWUgPSAodm9pZCAqKSByZWdfYXJncy0+Z3ByW2dwcmNvdW50KytdOworCSAgcnZhbHVlID0gKHZvaWQgKikgKHVuc2lnbmVkIGxvbmcpIHJlZ19hcmdzLT5ncHJbZ3ByY291bnQrK107CiAJICAvKiBXZSBkb24ndCBoYXZlIHRvIGRvIGFueXRoaW5nIGluIGFzbSBmb3IgdGhlIHJldHVybi4gICovCiAJICByZXQgPSBGRklfVFlQRV9WT0lEOwogCX0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZml0YXJnZXQuaAppbmRleCA4OWE4OTgzLi5mNDQyNjU0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L2ZmaXRhcmdldC5oCkBAIC0xLDYgKzEsNyBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMsIDIwMTAgIFJlZCBIYXQsIEluYy4KLSAgIENvcHlyaWdodCAoQykgMjAwOCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMywgMjAxMCAgUmVkIEhhdCwgSW5jLgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIHg4NiBhbmQgeDg2LTY0LgogCkBAIC0yOSw4ICszMCwxNSBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogLyogLS0tLSBTeXN0ZW0gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAorLyogRm9yIGNvZGUgY29tbW9uIHRvIGFsbCBwbGF0Zm9ybXMgb24geDg2IGFuZCB4ODZfNjQuICovCisjZGVmaW5lIFg4Nl9BTlkKKwogI2lmIGRlZmluZWQgKFg4Nl82NCkgJiYgZGVmaW5lZCAoX19pMzg2X18pCiAjdW5kZWYgWDg2XzY0CiAjZGVmaW5lIFg4NgpAQCAtMzgsNyArNDYsNyBAQAogCiAjaWZkZWYgWDg2X1dJTjY0CiAjZGVmaW5lIEZGSV9TSVpFT0ZfQVJHIDgKLSNkZWZpbmUgVVNFX0JVSUxUSU5fRkZTIDAgLy8gbm90IHlldCBpbXBsZW1lbnRlZCBpbiBtaW5ndy02NCAKKyNkZWZpbmUgVVNFX0JVSUxUSU5fRkZTIDAgLyogbm90IHlldCBpbXBsZW1lbnRlZCBpbiBtaW5ndy02NCAqLwogI2VuZGlmCiAKIC8qIC0tLS0gR2VuZXJpYyB0eXBlIGRlZmluaXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC01Myw5ICs2MSwxNSBAQAogdHlwZWRlZiBsb25nIGxvbmcgICAgICAgICAgICAgIGZmaV9zYXJnOwogI2VuZGlmCiAjZWxzZQorI2lmIGRlZmluZWQgX194ODZfNjRfXyAmJiAhZGVmaW5lZCBfX0xQNjRfXworI2RlZmluZSBGRklfU0laRU9GX0FSRyA4Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyAgICAgZmZpX2FyZzsKK3R5cGVkZWYgbG9uZyBsb25nICAgICAgICAgICAgICBmZmlfc2FyZzsKKyNlbHNlCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgZmZpX2FyZzsKIHR5cGVkZWYgc2lnbmVkIGxvbmcgICAgICAgICAgICBmZmlfc2FyZzsKICNlbmRpZgorI2VuZGlmCiAKIHR5cGVkZWYgZW51bSBmZmlfYWJpIHsKICAgRkZJX0ZJUlNUX0FCSSA9IDAsCkBAIC02NCwyOCArNzgsMzIgQEAKICNpZmRlZiBYODZfV0lOMzIKICAgRkZJX1NZU1YsCiAgIEZGSV9TVERDQUxMLAotICAvKiBUT0RPOiBBZGQgZmFzdGNhbGwgc3VwcG9ydCBmb3IgdGhlIHNha2Ugb2YgY29tcGxldGVuZXNzICovCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWLAorICBGRklfVEhJU0NBTEwsCisgIEZGSV9GQVNUQ0FMTCwKKyAgRkZJX01TX0NERUNMLAorICBGRklfTEFTVF9BQkksCisjaWZkZWYgX01TQ19WRVIKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX01TX0NERUNMCisjZWxzZQorICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTVgogI2VuZGlmCiAKLSNpZmRlZiBYODZfV0lONjQKKyNlbGlmIGRlZmluZWQoWDg2X1dJTjY0KQogICBGRklfV0lONjQsCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9XSU42NCwKLSNlbHNlCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1dJTjY0CiAKKyNlbHNlCiAgIC8qIC0tLS0gSW50ZWwgeDg2IGFuZCBBTUQgeDg2LTY0IC0gKi8KLSNpZiAhZGVmaW5lZChYODZfV0lOMzIpICYmIChkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9fYW1kNjQpKQogICBGRklfU1lTViwKICAgRkZJX1VOSVg2NCwgICAvKiBVbml4IHZhcmlhbnRzIGFsbCB1c2UgdGhlIHNhbWUgQUJJIGZvciB4ODYtNjQgICovCisgIEZGSV9MQVNUX0FCSSwKICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9faTM4NikKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWCiAjZWxzZQotICBGRklfREVGQVVMVF9BQkkgPSBGRklfVU5JWDY0LAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfVU5JWDY0CiAjZW5kaWYKICNlbmRpZgotI2VuZGlmIC8qIFg4Nl9XSU42NCAqLwotCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKIH0gZmZpX2FiaTsKICNlbmRpZgogCkBAIC05NSwxMyArMTEzLDE0IEBACiAjZGVmaW5lIEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8xQiAoRkZJX1RZUEVfTEFTVCArIDEpCiAjZGVmaW5lIEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8yQiAoRkZJX1RZUEVfTEFTVCArIDIpCiAjZGVmaW5lIEZGSV9UWVBFX1NNQUxMX1NUUlVDVF80QiAoRkZJX1RZUEVfTEFTVCArIDMpCisjZGVmaW5lIEZGSV9UWVBFX01TX1NUUlVDVCAgICAgICAoRkZJX1RZUEVfTEFTVCArIDQpCiAKICNpZiBkZWZpbmVkIChYODZfNjQpIHx8IChkZWZpbmVkIChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkIChYODZfREFSV0lOKSkKICNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSAyNAogI2RlZmluZSBGRklfTkFUSVZFX1JBV19BUEkgMAogI2Vsc2UKICNpZmRlZiBYODZfV0lOMzIKLSNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSAxMworI2RlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDUyCiAjZWxzZQogI2lmZGVmIFg4Nl9XSU42NAogI2RlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDI5CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvc3lzdi5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3N5c3YuUwppbmRleCBmNGI2YzFlLi5mMTA4ZGQ4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvc3lzdi5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9zeXN2LlMKQEAgLTEsNSArMSw1IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgc3lzdi5TIC0gQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk4LCAyMDAxLTIwMDMsIDIwMDUsIDIwMDggIFJlZCBIYXQsIEluYy4KKyAgIHN5c3YuUyAtIENvcHlyaWdodCAoYykgMTk5NiwgMTk5OCwgMjAwMS0yMDAzLCAyMDA1LCAyMDA4LCAyMDEwICBSZWQgSGF0LCBJbmMuCiAgICAKICAgIFg4NiBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKIApAQCAtNDgsNiArNDgsOSBAQAogCW1vdmwgIDE2KCVlYnApLCVlY3gKIAlzdWJsICAlZWN4LCVlc3AKIAorICAgICAgICAvKiBBbGlnbiB0aGUgc3RhY2sgcG9pbnRlciB0byAxNi1ieXRlcyAqLworICAgICAgICBhbmRsICAkMHhmZmZmZmZmMCwgJWVzcAorCiAJbW92bCAgJWVzcCwlZWF4CiAKIAkvKiBQbGFjZSBhbGwgb2YgdGhlIGZmaV9wcmVwX2FyZ3MgaW4gcG9zaXRpb24gICovCkBAIC0zMjUsMjMgKzMyOCw1MiBAQAogCS5zaXplCWZmaV9jbG9zdXJlX3Jhd19TWVNWLCAuLWZmaV9jbG9zdXJlX3Jhd19TWVNWCiAjZW5kaWYKIAorI2lmIGRlZmluZWQgX19QSUNfXworIyBpZiBkZWZpbmVkIF9fc3VuX18gJiYgZGVmaW5lZCBfX3N2cjRfXworLyogMzItYml0IFNvbGFyaXMgMi94ODYgdXNlcyBkYXRhcmVsIGVuY29kaW5nIGZvciBQSUMuICBHTlUgbGQgYmVmb3JlIDIuMjIKKyAgIGRvZXNuJ3QgY29ycmVjdGx5IHNvcnQgLmVoX2ZyYW1lX2hkciB3aXRoIG1peGVkIGVuY29kaW5ncywgc28gbWF0Y2ggdGhpcy4gICovCisjICBkZWZpbmUgRkRFX0VOQ09ESU5HCQkweDMwCS8qIGRhdGFyZWwgKi8KKyMgIGRlZmluZSBGREVfRU5DT0RFKFgpCQlYQEdPVE9GRgorIyBlbHNlCisjICBkZWZpbmUgRkRFX0VOQ09ESU5HCQkweDFiCS8qIHBjcmVsIHNkYXRhNCAqLworIyAgaWYgZGVmaW5lZCBIQVZFX0FTX1g4Nl9QQ1JFTAorIyAgIGRlZmluZSBGREVfRU5DT0RFKFgpCVgtLgorIyAgZWxzZQorIyAgIGRlZmluZSBGREVfRU5DT0RFKFgpCVhAcmVsCisjICBlbmRpZgorIyBlbmRpZgorI2Vsc2UKKyMgZGVmaW5lIEZERV9FTkNPRElORwkJMAkvKiBhYnNvbHV0ZSAqLworIyBkZWZpbmUgRkRFX0VOQ09ERShYKQkJWAorI2VuZGlmCisKIAkuc2VjdGlvbgkuZWhfZnJhbWUsRUhfRlJBTUVfRkxBR1MsQHByb2diaXRzCiAuTGZyYW1lMToKIAkubG9uZwkuTEVDSUUxLS5MU0NJRTEJLyogTGVuZ3RoIG9mIENvbW1vbiBJbmZvcm1hdGlvbiBFbnRyeSAqLwogLkxTQ0lFMToKIAkubG9uZwkweDAJLyogQ0lFIElkZW50aWZpZXIgVGFnICovCiAJLmJ5dGUJMHgxCS8qIENJRSBWZXJzaW9uICovCisjaWZkZWYgSEFWRV9BU19BU0NJSV9QU0VVRE9fT1AKICNpZmRlZiBfX1BJQ19fCiAJLmFzY2lpICJ6UlwwIgkvKiBDSUUgQXVnbWVudGF0aW9uICovCiAjZWxzZQogCS5hc2NpaSAiXDAiCS8qIENJRSBBdWdtZW50YXRpb24gKi8KICNlbmRpZgorI2VsaWYgZGVmaW5lZCBIQVZFX0FTX1NUUklOR19QU0VVRE9fT1AKKyNpZmRlZiBfX1BJQ19fCisJLnN0cmluZyAielIiCS8qIENJRSBBdWdtZW50YXRpb24gKi8KKyNlbHNlCisJLnN0cmluZyAiIgkvKiBDSUUgQXVnbWVudGF0aW9uICovCisjZW5kaWYKKyNlbHNlCisjZXJyb3IgbWlzc2luZyAuYXNjaWkvLnN0cmluZworI2VuZGlmCiAJLmJ5dGUJMHgxCS8qIC51bGViMTI4IDB4MTsgQ0lFIENvZGUgQWxpZ25tZW50IEZhY3RvciAqLwogCS5ieXRlCTB4N2MJLyogLnNsZWIxMjggLTQ7IENJRSBEYXRhIEFsaWdubWVudCBGYWN0b3IgKi8KIAkuYnl0ZQkweDgJLyogQ0lFIFJBIENvbHVtbiAqLwogI2lmZGVmIF9fUElDX18KIAkuYnl0ZQkweDEJLyogLnVsZWIxMjggMHgxOyBBdWdtZW50YXRpb24gc2l6ZSAqLwotCS5ieXRlCTB4MWIJLyogRkRFIEVuY29kaW5nIChwY3JlbCBzZGF0YTQpICovCisJLmJ5dGUJRkRFX0VOQ09ESU5HCiAjZW5kaWYKIAkuYnl0ZQkweGMJLyogRFdfQ0ZBX2RlZl9jZmEgKi8KIAkuYnl0ZQkweDQJLyogLnVsZWIxMjggMHg0ICovCkBAIC0zNTQsMTQgKzM4Niw4IEBACiAJLmxvbmcJLkxFRkRFMS0uTEFTRkRFMQkvKiBGREUgTGVuZ3RoICovCiAuTEFTRkRFMToKIAkubG9uZwkuTEFTRkRFMS0uTGZyYW1lMQkvKiBGREUgQ0lFIG9mZnNldCAqLwotI2lmIGRlZmluZWQgX19QSUNfXyAmJiBkZWZpbmVkIEhBVkVfQVNfWDg2X1BDUkVMCi0JLmxvbmcJLkxGQjEtLgkvKiBGREUgaW5pdGlhbCBsb2NhdGlvbiAqLwotI2VsaWYgZGVmaW5lZCBfX1BJQ19fCi0JLmxvbmcJLkxGQjFAcmVsCi0jZWxzZQotCS5sb25nCS5MRkIxCi0jZW5kaWYKLQkubG9uZwkuTEZFMS0uTEZCMQkvKiBGREUgYWRkcmVzcyByYW5nZSAqLworCS5sb25nCUZERV9FTkNPREUoLkxGQjEpCS8qIEZERSBpbml0aWFsIGxvY2F0aW9uICovCisJLmxvbmcJLkxGRTEtLkxGQjEJCS8qIEZERSBhZGRyZXNzIHJhbmdlICovCiAjaWZkZWYgX19QSUNfXwogCS5ieXRlCTB4MAkvKiAudWxlYjEyOCAweDA7IEF1Z21lbnRhdGlvbiBzaXplICovCiAjZW5kaWYKQEAgLTM4MSwxNCArNDA3LDggQEAKIAkubG9uZwkuTEVGREUyLS5MQVNGREUyCS8qIEZERSBMZW5ndGggKi8KIC5MQVNGREUyOgogCS5sb25nCS5MQVNGREUyLS5MZnJhbWUxCS8qIEZERSBDSUUgb2Zmc2V0ICovCi0jaWYgZGVmaW5lZCBfX1BJQ19fICYmIGRlZmluZWQgSEFWRV9BU19YODZfUENSRUwKLQkubG9uZwkuTEZCMi0uCS8qIEZERSBpbml0aWFsIGxvY2F0aW9uICovCi0jZWxpZiBkZWZpbmVkIF9fUElDX18KLQkubG9uZwkuTEZCMkByZWwKLSNlbHNlCi0JLmxvbmcJLkxGQjIKLSNlbmRpZgotCS5sb25nCS5MRkUyLS5MRkIyCS8qIEZERSBhZGRyZXNzIHJhbmdlICovCisJLmxvbmcJRkRFX0VOQ09ERSguTEZCMikJLyogRkRFIGluaXRpYWwgbG9jYXRpb24gKi8KKwkubG9uZwkuTEZFMi0uTEZCMgkJLyogRkRFIGFkZHJlc3MgcmFuZ2UgKi8KICNpZmRlZiBfX1BJQ19fCiAJLmJ5dGUJMHgwCS8qIC51bGViMTI4IDB4MDsgQXVnbWVudGF0aW9uIHNpemUgKi8KICNlbmRpZgpAQCAtNDE3LDE0ICs0MzcsOCBAQAogCS5sb25nCS5MRUZERTMtLkxBU0ZERTMJLyogRkRFIExlbmd0aCAqLwogLkxBU0ZERTM6CiAJLmxvbmcJLkxBU0ZERTMtLkxmcmFtZTEJLyogRkRFIENJRSBvZmZzZXQgKi8KLSNpZiBkZWZpbmVkIF9fUElDX18gJiYgZGVmaW5lZCBIQVZFX0FTX1g4Nl9QQ1JFTAotCS5sb25nCS5MRkIzLS4JLyogRkRFIGluaXRpYWwgbG9jYXRpb24gKi8KLSNlbGlmIGRlZmluZWQgX19QSUNfXwotCS5sb25nCS5MRkIzQHJlbAotI2Vsc2UKLQkubG9uZwkuTEZCMwotI2VuZGlmCi0JLmxvbmcJLkxGRTMtLkxGQjMJLyogRkRFIGFkZHJlc3MgcmFuZ2UgKi8KKwkubG9uZwlGREVfRU5DT0RFKC5MRkIzKQkvKiBGREUgaW5pdGlhbCBsb2NhdGlvbiAqLworCS5sb25nCS5MRkUzLS5MRkIzCQkvKiBGREUgYWRkcmVzcyByYW5nZSAqLwogI2lmZGVmIF9fUElDX18KIAkuYnl0ZQkweDAJLyogLnVsZWIxMjggMHgwOyBBdWdtZW50YXRpb24gc2l6ZSAqLwogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvdW5peDY0LlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvdW5peDY0LlMKaW5kZXggZmUzZjRmZC4uN2E2NjE5YSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3VuaXg2NC5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni91bml4NjQuUwpAQCAtMzI0LDcgKzMyNCwxMSBAQAogLkxVVzk6CiAJLnNpemUJZmZpX2Nsb3N1cmVfdW5peDY0LC4tZmZpX2Nsb3N1cmVfdW5peDY0CiAKKyNpZmRlZiBIQVZFX0FTX1g4Nl82NF9VTldJTkRfU0VDVElPTl9UWVBFCisJLnNlY3Rpb24JLmVoX2ZyYW1lLCJhIixAdW53aW5kCisjZWxzZQogCS5zZWN0aW9uCS5laF9mcmFtZSwiYSIsQHByb2diaXRzCisjZW5kaWYKIC5MZnJhbWUxOgogCS5sb25nCS5MRUNJRTEtLkxTQ0lFMQkJLyogQ0lFIExlbmd0aCAqLwogLkxTQ0lFMToKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni93aW4zMi5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3dpbjMyLlMKaW5kZXggYWMxZWQ2Zi4uMjRiN2JiZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3dpbjMyLlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3dpbjMyLlMKQEAgLTQ1LDYgKzQ1LDcgQEAKIGZmaV9jYWxsX3dpbjMyIFBST0MgTkVBUiwKICAgICBmZmlfcHJlcF9hcmdzIDogTkVBUiBQVFIgRFdPUkQsCiAgICAgZWNpZiAgICAgICAgICA6IE5FQVIgUFRSIERXT1JELAorICAgIGNpZl9hYmkgICAgICAgOiBEV09SRCwKICAgICBjaWZfYnl0ZXMgICAgIDogRFdPUkQsCiAgICAgY2lmX2ZsYWdzICAgICA6IERXT1JELAogICAgIHJ2YWx1ZSAgICAgICAgOiBORUFSIFBUUiBEV09SRCwKQEAgLTY0LDYgKzY1LDE5IEBACiAgICAgICAgIDs7IFJldHVybiBzdGFjayB0byBwcmV2aW91cyBzdGF0ZSBhbmQgY2FsbCB0aGUgZnVuY3Rpb24KICAgICAgICAgYWRkICBlc3AsIDgKIAorCTs7IEhhbmRsZSB0aGlzY2FsbCBhbmQgZmFzdGNhbGwKKwljbXAgY2lmX2FiaSwgMyA7OyBGRklfVEhJU0NBTEwKKwlqeiBkb190aGlzY2FsbAorCWNtcCBjaWZfYWJpLCA0IDs7IEZGSV9GQVNUQ0FMTAorCWpueiBkb19zdGRjYWxsCisJbW92IGVjeCwgRFdPUkQgUFRSIFtlc3BdCisJbW92IGVkeCwgRFdPUkQgUFRSIFtlc3ArNF0KKwlhZGQgZXNwLCA4CisJam1wIGRvX3N0ZGNhbGwKK2RvX3RoaXNjYWxsOgorCW1vdiBlY3gsIERXT1JEIFBUUiBbZXNwXQorCWFkZCBlc3AsIDQKK2RvX3N0ZGNhbGw6CiAgICAgICAgIGNhbGwgZm4KIAogICAgICAgICA7OyBjZGVjbDogICB3ZSByZXN0b3JlIGVzcCBpbiB0aGUgZXBpbG9ndWUsIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0bwpAQCAtOTQsMzEgKzEwOCwzNyBAQAogICAgICAgICBkZCBvZmZzZXQgY2FfcmV0ZmxvYXQgICAgICAgOzsgRkZJX1RZUEVfRkxPQVQKICAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGRvdWJsZSAgICAgIDs7IEZGSV9UWVBFX0RPVUJMRQogICAgICAgICBkZCBvZmZzZXQgY2FfcmV0bG9uZ2RvdWJsZSAgOzsgRkZJX1RZUEVfTE9OR0RPVUJMRQotICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfVUlOVDgKLSAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGludDggICAgICAgIDs7IEZGSV9UWVBFX1NJTlQ4Ci0gICAgICAgIGRkIG9mZnNldCBjYV9yZXRpbnQxNiAgICAgICA7OyBGRklfVFlQRV9VSU5UMTYKLSAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGludDE2ICAgICAgIDs7IEZGSV9UWVBFX1NJTlQxNgorICAgICAgICBkZCBvZmZzZXQgY2FfcmV0dWludDggICAgICAgOzsgRkZJX1RZUEVfVUlOVDgKKyAgICAgICAgZGQgb2Zmc2V0IGNhX3JldHNpbnQ4ICAgICAgIDs7IEZGSV9UWVBFX1NJTlQ4CisgICAgICAgIGRkIG9mZnNldCBjYV9yZXR1aW50MTYgICAgICA7OyBGRklfVFlQRV9VSU5UMTYKKyAgICAgICAgZGQgb2Zmc2V0IGNhX3JldHNpbnQxNiAgICAgIDs7IEZGSV9UWVBFX1NJTlQxNgogICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfVUlOVDMyCiAgICAgICAgIGRkIG9mZnNldCBjYV9yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9TSU5UMzIKICAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGludDY0ICAgICAgIDs7IEZGSV9UWVBFX1VJTlQ2NAogICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50NjQgICAgICAgOzsgRkZJX1RZUEVfU0lOVDY0CiAgICAgICAgIGRkIG9mZnNldCBjYV9lcGlsb2d1ZSAgICAgICA7OyBGRklfVFlQRV9TVFJVQ1QKICAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1BPSU5URVIKLSAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGludDggICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8xQgotICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50MTYgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCCisgICAgICAgIGRkIG9mZnNldCBjYV9yZXRzdHJ1Y3QxYiAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMUIKKyAgICAgICAgZGQgb2Zmc2V0IGNhX3JldHN0cnVjdDJiICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8yQgogICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzRCCisgICAgICAgIGRkIG9mZnNldCBjYV9lcGlsb2d1ZSAgICAgICA7OyBGRklfVFlQRV9NU19TVFJVQ1QKIAotY2FfcmV0aW50ODoKLSAgICAgICAgOzsgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQotICAgICAgICBtb3YgICBlY3gsIHJ2YWx1ZQotICAgICAgICBtb3YgICBbZWN4ICsgMF0sIGFsCi0gICAgICAgIGptcCAgIGNhX2VwaWxvZ3VlCisgICAgICAgIC8qIFNpZ24vemVybyBleHRlbmQgYXMgYXBwcm9wcmlhdGUuICAqLworY2FfcmV0dWludDg6CisgICAgICAgIG1vdnp4IGVheCwgYWwKKyAgICAgICAgam1wICAgY2FfcmV0aW50CiAKLWNhX3JldGludDE2OgotICAgICAgICA7OyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICAgIG1vdiAgIGVjeCwgcnZhbHVlCi0gICAgICAgIG1vdiAgIFtlY3ggKyAwXSwgYXgKLSAgICAgICAgam1wICAgY2FfZXBpbG9ndWUKK2NhX3JldHNpbnQ4OgorICAgICAgICBtb3ZzeCBlYXgsIGFsCisgICAgICAgIGptcCAgIGNhX3JldGludAorCitjYV9yZXR1aW50MTY6CisgICAgICAgIG1vdnp4IGVheCwgYXgKKyAgICAgICAgam1wICAgY2FfcmV0aW50CisKK2NhX3JldHNpbnQxNjoKKyAgICAgICAgbW92c3ggZWF4LCBheAorICAgICAgICBqbXAgICBjYV9yZXRpbnQKIAogY2FfcmV0aW50OgogICAgICAgICA7OyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCkBAIC0xNTEsMTEgKzE3MSwzMSBAQAogICAgICAgICBmc3RwICBUQllURSBQVFIgW2VjeF0KICAgICAgICAgam1wICAgY2FfZXBpbG9ndWUKIAorY2FfcmV0c3RydWN0MWI6CisgICAgICAgIDs7IExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKKyAgICAgICAgbW92ICAgZWN4LCBydmFsdWUKKyAgICAgICAgbW92ICAgW2VjeCArIDBdLCBhbAorICAgICAgICBqbXAgICBjYV9lcGlsb2d1ZQorCitjYV9yZXRzdHJ1Y3QyYjoKKyAgICAgICAgOzsgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQorICAgICAgICBtb3YgICBlY3gsIHJ2YWx1ZQorICAgICAgICBtb3YgICBbZWN4ICsgMF0sIGF4CisgICAgICAgIGptcCAgIGNhX2VwaWxvZ3VlCisKIGNhX2VwaWxvZ3VlOgogICAgICAgICA7OyBFcGlsb2d1ZSBjb2RlIGlzIGF1dG9nZW5lcmF0ZWQuCiAgICAgICAgIHJldAogZmZpX2NhbGxfd2luMzIgRU5EUAogCitmZmlfY2xvc3VyZV9USElTQ0FMTCBQUk9DIE5FQVIgRk9SQ0VGUkFNRQorCXN1Ygllc3AsIDQwCisJbGVhCWVkeCwgW2VicCAtMjRdCisJbW92CVtlYnAgLSAxMl0sIGVkeAkvKiByZXNwICovCisJbGVhCWVkeCwgW2VicCArIDEyXSAgLyogYWNjb3VudCBmb3Igc3R1YiByZXR1cm4gYWRkcmVzcyBvbiBzdGFjayAqLworCWptcAlzdHViCitmZmlfY2xvc3VyZV9USElTQ0FMTCBFTkRQCisKIGZmaV9jbG9zdXJlX1NZU1YgUFJPQyBORUFSIEZPUkNFRlJBTUUKICAgICA7OyB0aGUgZmZpX2Nsb3N1cmUgY3R4IGlzIHBhc3NlZCBpbiBlYXggYnkgdGhlIHRyYW1wb2xpbmUuCiAKQEAgLTE2Myw2ICsyMDMsNyBAQAogICAgICAgICBsZWEgIGVkeCwgW2VicCAtIDI0XQogICAgICAgICBtb3YgIFtlYnAgLSAxMl0sIGVkeCAgICAgICAgIDs7IHJlc3AKICAgICAgICAgbGVhICBlZHgsIFtlYnAgKyA4XQorc3R1Yjo6CiAgICAgICAgIG1vdiAgW2VzcCArIDhdLCBlZHggICAgICAgICAgOzsgYXJncwogICAgICAgICBsZWEgIGVkeCwgW2VicCAtIDEyXQogICAgICAgICBtb3YgIFtlc3AgKyA0XSwgZWR4ICAgICAgICAgIDs7ICZyZXNwCkBAIC0xNzksMjYgKzIyMCwzNSBAQAogICAgICAgICBkZCBvZmZzZXQgY3NfcmV0ZmxvYXQgICAgICAgOzsgRkZJX1RZUEVfRkxPQVQKICAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGRvdWJsZSAgICAgIDs7IEZGSV9UWVBFX0RPVUJMRQogICAgICAgICBkZCBvZmZzZXQgY3NfcmV0bG9uZ2RvdWJsZSAgOzsgRkZJX1RZUEVfTE9OR0RPVUJMRQotICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfVUlOVDgKLSAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGludDggICAgICAgIDs7IEZGSV9UWVBFX1NJTlQ4Ci0gICAgICAgIGRkIG9mZnNldCBjc19yZXRpbnQxNiAgICAgICA7OyBGRklfVFlQRV9VSU5UMTYKLSAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGludDE2ICAgICAgIDs7IEZGSV9UWVBFX1NJTlQxNgorICAgICAgICBkZCBvZmZzZXQgY3NfcmV0dWludDggICAgICAgOzsgRkZJX1RZUEVfVUlOVDgKKyAgICAgICAgZGQgb2Zmc2V0IGNzX3JldHNpbnQ4ICAgICAgIDs7IEZGSV9UWVBFX1NJTlQ4CisgICAgICAgIGRkIG9mZnNldCBjc19yZXR1aW50MTYgICAgICA7OyBGRklfVFlQRV9VSU5UMTYKKyAgICAgICAgZGQgb2Zmc2V0IGNzX3JldHNpbnQxNiAgICAgIDs7IEZGSV9UWVBFX1NJTlQxNgogICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfVUlOVDMyCiAgICAgICAgIGRkIG9mZnNldCBjc19yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9TSU5UMzIKICAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGludDY0ICAgICAgIDs7IEZGSV9UWVBFX1VJTlQ2NAogICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50NjQgICAgICAgOzsgRkZJX1RZUEVfU0lOVDY0CiAgICAgICAgIGRkIG9mZnNldCBjc19yZXRzdHJ1Y3QgICAgICA7OyBGRklfVFlQRV9TVFJVQ1QKICAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1BPSU5URVIKLSAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGludDggICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8xQgotICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50MTYgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCCisgICAgICAgIGRkIG9mZnNldCBjc19yZXRzaW50OCAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMUIKKyAgICAgICAgZGQgb2Zmc2V0IGNzX3JldHNpbnQxNiAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8yQgogICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzRCCisgICAgICAgIGRkIG9mZnNldCBjc19yZXRtc3N0cnVjdCAgICA7OyBGRklfVFlQRV9NU19TVFJVQ1QKIAotY3NfcmV0aW50ODoKLSAgICAgICAgbW92ICAgYWwsIFtlY3hdCitjc19yZXR1aW50ODoKKyAgICAgICAgbW92enggZWF4LCBCWVRFIFBUUiBbZWN4XQogICAgICAgICBqbXAgICBjc19lcGlsb2d1ZQogCi1jc19yZXRpbnQxNjoKLSAgICAgICAgbW92ICAgYXgsIFtlY3hdCitjc19yZXRzaW50ODoKKyAgICAgICAgbW92c3ggZWF4LCBCWVRFIFBUUiBbZWN4XQorICAgICAgICBqbXAgICBjc19lcGlsb2d1ZQorCitjc19yZXR1aW50MTY6CisgICAgICAgIG1vdnp4IGVheCwgV09SRCBQVFIgW2VjeF0KKyAgICAgICAgam1wICAgY3NfZXBpbG9ndWUKKworY3NfcmV0c2ludDE2OgorICAgICAgICBtb3ZzeCBlYXgsIFdPUkQgUFRSIFtlY3hdCiAgICAgICAgIGptcCAgIGNzX2VwaWxvZ3VlCiAKIGNzX3JldGludDoKQEAgLTIyNyw2ICsyNzcsMTIgQEAKICAgICAgICAgOzsgRXBpbG9ndWUgY29kZSBpcyBhdXRvZ2VuZXJhdGVkLgogICAgICAgICByZXQJNAogCitjc19yZXRtc3N0cnVjdDoKKyAgICAgICAgOzsgQ2FsbGVyIGV4cGVjdHMgdXMgdG8gcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgcmVhbCByZXR1cm4gdmFsdWUuCisgICAgICAgIG1vdiAgIGVheCwgZWN4CisgICAgICAgIDs7IENhbGxlciBkb2Vzbid0IGV4cGVjdHMgdXMgdG8gcG9wIHN0cnVjdCByZXR1cm4gdmFsdWUgcG9pbnRlciBoaWRkZW4gYXJnLgorICAgICAgICBqbXAgICBjc19lcGlsb2d1ZQorCiBjc19lcGlsb2d1ZToKICAgICAgICAgOzsgRXBpbG9ndWUgY29kZSBpcyBhdXRvZ2VuZXJhdGVkLgogICAgICAgICByZXQKQEAgLTIzOSw3ICsyOTUsMTYgQEAKICNkZWZpbmUgUkFXX0NMT1NVUkVfVVNFUl9EQVRBX09GRlNFVCAoUkFXX0NMT1NVUkVfRlVOX09GRlNFVCArIDQpCiAjZGVmaW5lIENJRl9GTEFHU19PRkZTRVQgMjAKIAotZmZpX2Nsb3N1cmVfcmF3X1NZU1YgUFJPQyBORUFSIFVTRVMgZXNpCitmZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEwgUFJPQyBORUFSIFVTRVMgZXNpIEZPUkNFRlJBTUUKKwlzdWIgZXNwLCAzNgorCW1vdiAgZXNpLCBbZWF4ICsgUkFXX0NMT1NVUkVfQ0lGX09GRlNFVF0gICAgICAgIDs7IGNsb3N1cmUtPmNpZgorCW1vdiAgZWR4LCBbZWF4ICsgUkFXX0NMT1NVUkVfVVNFUl9EQVRBX09GRlNFVF0gIDs7IGNsb3N1cmUtPnVzZXJfZGF0YQorCW1vdiBbZXNwICsgMTJdLCBlZHgKKwlsZWEgZWR4LCBbZWJwICsgMTJdCisJam1wIHN0dWJyYXcKK2ZmaV9jbG9zdXJlX3Jhd19USElTQ0FMTCBFTkRQCisKK2ZmaV9jbG9zdXJlX3Jhd19TWVNWIFBST0MgTkVBUiBVU0VTIGVzaSBGT1JDRUZSQU1FCiAgICAgOzsgdGhlIGZmaV9jbG9zdXJlIGN0eCBpcyBwYXNzZWQgaW4gZWF4IGJ5IHRoZSB0cmFtcG9saW5lLgogCiAgICAgICAgIHN1YiAgZXNwLCA0MApAQCAtMjQ3LDYgKzMxMiw3IEBACiAgICAgICAgIG1vdiAgZWR4LCBbZWF4ICsgUkFXX0NMT1NVUkVfVVNFUl9EQVRBX09GRlNFVF0gIDs7IGNsb3N1cmUtPnVzZXJfZGF0YQogICAgICAgICBtb3YgIFtlc3AgKyAxMl0sIGVkeCAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB1c2VyX2RhdGEKICAgICAgICAgbGVhICBlZHgsIFtlYnAgKyA4XQorc3R1YnJhdzo6CiAgICAgICAgIG1vdiAgW2VzcCArIDhdLCBlZHggICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHJhd19hcmdzCiAgICAgICAgIGxlYSAgZWR4LCBbZWJwIC0gMjRdCiAgICAgICAgIG1vdiAgW2VzcCArIDRdLCBlZHggICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7ICZyZXMKQEAgLTI2NCwyNiArMzMwLDM1IEBACiAgICAgICAgIGRkIG9mZnNldCBjcl9yZXRmbG9hdCAgICAgICA7OyBGRklfVFlQRV9GTE9BVAogICAgICAgICBkZCBvZmZzZXQgY3JfcmV0ZG91YmxlICAgICAgOzsgRkZJX1RZUEVfRE9VQkxFCiAgICAgICAgIGRkIG9mZnNldCBjcl9yZXRsb25nZG91YmxlICA7OyBGRklfVFlQRV9MT05HRE9VQkxFCi0gICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQ4ICAgICAgICA7OyBGRklfVFlQRV9VSU5UOAotICAgICAgICBkZCBvZmZzZXQgY3JfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfU0lOVDgKLSAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGludDE2ICAgICAgIDs7IEZGSV9UWVBFX1VJTlQxNgotICAgICAgICBkZCBvZmZzZXQgY3JfcmV0aW50MTYgICAgICAgOzsgRkZJX1RZUEVfU0lOVDE2CisgICAgICAgIGRkIG9mZnNldCBjcl9yZXR1aW50OCAgICAgICA7OyBGRklfVFlQRV9VSU5UOAorICAgICAgICBkZCBvZmZzZXQgY3JfcmV0c2ludDggICAgICAgOzsgRkZJX1RZUEVfU0lOVDgKKyAgICAgICAgZGQgb2Zmc2V0IGNyX3JldHVpbnQxNiAgICAgIDs7IEZGSV9UWVBFX1VJTlQxNgorICAgICAgICBkZCBvZmZzZXQgY3JfcmV0c2ludDE2ICAgICAgOzsgRkZJX1RZUEVfU0lOVDE2CiAgICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9VSU5UMzIKICAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1NJTlQzMgogICAgICAgICBkZCBvZmZzZXQgY3JfcmV0aW50NjQgICAgICAgOzsgRkZJX1RZUEVfVUlOVDY0CiAgICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQ2NCAgICAgICA7OyBGRklfVFlQRV9TSU5UNjQKICAgICAgICAgZGQgb2Zmc2V0IGNyX2VwaWxvZ3VlICAgICAgIDs7IEZGSV9UWVBFX1NUUlVDVAogICAgICAgICBkZCBvZmZzZXQgY3JfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfUE9JTlRFUgotICAgICAgICBkZCBvZmZzZXQgY3JfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCCi0gICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQxNiAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMkIKKyAgICAgICAgZGQgb2Zmc2V0IGNyX3JldHNpbnQ4ICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8xQgorICAgICAgICBkZCBvZmZzZXQgY3JfcmV0c2ludDE2ICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCCiAgICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfNEIKKyAgICAgICAgZGQgb2Zmc2V0IGNyX2VwaWxvZ3VlICAgICAgIDs7IEZGSV9UWVBFX01TX1NUUlVDVAogCi1jcl9yZXRpbnQ4OgotICAgICAgICBtb3YgICBhbCwgW2VjeF0KK2NyX3JldHVpbnQ4OgorICAgICAgICBtb3Z6eCBlYXgsIEJZVEUgUFRSIFtlY3hdCiAgICAgICAgIGptcCAgIGNyX2VwaWxvZ3VlCiAKLWNyX3JldGludDE2OgotICAgICAgICBtb3YgICBheCwgW2VjeF0KK2NyX3JldHNpbnQ4OgorICAgICAgICBtb3ZzeCBlYXgsIEJZVEUgUFRSIFtlY3hdCisgICAgICAgIGptcCAgIGNyX2VwaWxvZ3VlCisKK2NyX3JldHVpbnQxNjoKKyAgICAgICAgbW92enggZWF4LCBXT1JEIFBUUiBbZWN4XQorICAgICAgICBqbXAgICBjcl9lcGlsb2d1ZQorCitjcl9yZXRzaW50MTY6CisgICAgICAgIG1vdnN4IGVheCwgV09SRCBQVFIgW2VjeF0KICAgICAgICAgam1wICAgY3JfZXBpbG9ndWUKIAogY3JfcmV0aW50OgpAQCAtMzM3LDI2ICs0MTIsMzQgQEAKICAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGZsb2F0ICAgICAgIDs7IEZGSV9UWVBFX0ZMT0FUCiAgICAgICAgIGRkIG9mZnNldCBjZF9yZXRkb3VibGUgICAgICA7OyBGRklfVFlQRV9ET1VCTEUKICAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGxvbmdkb3VibGUgIDs7IEZGSV9UWVBFX0xPTkdET1VCTEUKLSAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludDggICAgICAgIDs7IEZGSV9UWVBFX1VJTlQ4Ci0gICAgICAgIGRkIG9mZnNldCBjZF9yZXRpbnQ4ICAgICAgICA7OyBGRklfVFlQRV9TSU5UOAotICAgICAgICBkZCBvZmZzZXQgY2RfcmV0aW50MTYgICAgICAgOzsgRkZJX1RZUEVfVUlOVDE2Ci0gICAgICAgIGRkIG9mZnNldCBjZF9yZXRpbnQxNiAgICAgICA7OyBGRklfVFlQRV9TSU5UMTYKKyAgICAgICAgZGQgb2Zmc2V0IGNkX3JldHVpbnQ4ICAgICAgIDs7IEZGSV9UWVBFX1VJTlQ4CisgICAgICAgIGRkIG9mZnNldCBjZF9yZXRzaW50OCAgICAgICA7OyBGRklfVFlQRV9TSU5UOAorICAgICAgICBkZCBvZmZzZXQgY2RfcmV0dWludDE2ICAgICAgOzsgRkZJX1RZUEVfVUlOVDE2CisgICAgICAgIGRkIG9mZnNldCBjZF9yZXRzaW50MTYgICAgICA7OyBGRklfVFlQRV9TSU5UMTYKICAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1VJTlQzMgogICAgICAgICBkZCBvZmZzZXQgY2RfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfU0lOVDMyCiAgICAgICAgIGRkIG9mZnNldCBjZF9yZXRpbnQ2NCAgICAgICA7OyBGRklfVFlQRV9VSU5UNjQKICAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludDY0ICAgICAgIDs7IEZGSV9UWVBFX1NJTlQ2NAogICAgICAgICBkZCBvZmZzZXQgY2RfZXBpbG9ndWUgICAgICAgOzsgRkZJX1RZUEVfU1RSVUNUCiAgICAgICAgIGRkIG9mZnNldCBjZF9yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9QT0lOVEVSCi0gICAgICAgIGRkIG9mZnNldCBjZF9yZXRpbnQ4ICAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMUIKLSAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludDE2ICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8yQgorICAgICAgICBkZCBvZmZzZXQgY2RfcmV0c2ludDggICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCCisgICAgICAgIGRkIG9mZnNldCBjZF9yZXRzaW50MTYgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMkIKICAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF80QgogCi1jZF9yZXRpbnQ4OgotICAgICAgICBtb3YgICBhbCwgW2VjeF0KK2NkX3JldHVpbnQ4OgorICAgICAgICBtb3Z6eCBlYXgsIEJZVEUgUFRSIFtlY3hdCiAgICAgICAgIGptcCAgIGNkX2VwaWxvZ3VlCiAKLWNkX3JldGludDE2OgotICAgICAgICBtb3YgICBheCwgW2VjeF0KK2NkX3JldHNpbnQ4OgorICAgICAgICBtb3ZzeCBlYXgsIEJZVEUgUFRSIFtlY3hdCisgICAgICAgIGptcCAgIGNkX2VwaWxvZ3VlCisKK2NkX3JldHVpbnQxNjoKKyAgICAgICAgbW92enggZWF4LCBXT1JEIFBUUiBbZWN4XQorICAgICAgICBqbXAgICBjZF9lcGlsb2d1ZQorCitjZF9yZXRzaW50MTY6CisgICAgICAgIG1vdnN4IGVheCwgV09SRCBQVFIgW2VjeF0KICAgICAgICAgam1wICAgY2RfZXBpbG9ndWUKIAogY2RfcmV0aW50OgpAQCAtMzk1LDcgKzQ3OCw5IEBACiAgICAgICAgICMgVGhpcyBhc3N1bWVzIHdlIGFyZSB1c2luZyBnYXMuCiAgICAgICAgIC5iYWxpZ24gMTYKIAkuZ2xvYmwJX2ZmaV9jYWxsX3dpbjMyCisjaWZuZGVmIF9fT1MyX18KIAkuZGVmCV9mZmlfY2FsbF93aW4zMjsJLnNjbAkyOwkudHlwZQkzMjsJLmVuZGVmCisjZW5kaWYKIF9mZmlfY2FsbF93aW4zMjoKIC5MRkIxOgogICAgICAgICBwdXNobCAlZWJwCkBAIC00MDMsNyArNDg4LDcgQEAKICAgICAgICAgbW92bCAgJWVzcCwlZWJwCiAuTENGSTE6CiAgICAgICAgICMgTWFrZSByb29tIGZvciBhbGwgb2YgdGhlIG5ldyBhcmdzLgotICAgICAgICBtb3ZsICAxNiglZWJwKSwlZWN4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgbW92bCAgMjAoJWVicCksJWVjeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgIHN1YmwgICVlY3gsJWVzcAogIAogICAgICAgICBtb3ZsICAlZXNwLCVlYXgKQEAgLTQxNSwxOSArNTAwLDM0IEBACiAgCiAgICAgICAgICMgUmV0dXJuIHN0YWNrIHRvIHByZXZpb3VzIHN0YXRlIGFuZCBjYWxsIHRoZSBmdW5jdGlvbgogICAgICAgICBhZGRsICAkOCwlZXNwCi0gCisKKwkjIEhhbmRsZSBmYXN0Y2FsbCBhbmQgdGhpc2NhbGwKKwljbXBsICQzLCAxNiglZWJwKSAgIyBGRklfVEhJU0NBTEwKKwlqeiAuZG9fdGhpc2NhbGwKKwljbXBsICQ0LCAxNiglZWJwKSAjIEZGSV9GQVNUQ0FMTAorCWpueiAuZG9fZm5jYWxsCisJbW92bCAoJWVzcCksICVlY3gKKwltb3ZsIDQoJWVzcCksICVlZHgKKwlhZGRsICQ4LCAlZXNwCisJam1wIC5kb19mbmNhbGwKKy5kb190aGlzY2FsbDoKKwltb3ZsICglZXNwKSwgJWVjeAorCWFkZGwgJDQsICVlc3AKKworLmRvX2ZuY2FsbDoKKwkgCiAgICAgICAgICMgRklYTUU6IEFsaWduIHRoZSBzdGFjayB0byBhIDEyOC1iaXQgYm91bmRhcnkgdG8gYXZvaWQKICAgICAgICAgIyBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgaGl0cy4KIAotICAgICAgICBjYWxsICAqMjgoJWVicCkKKyAgICAgICAgY2FsbCAgKjMyKCVlYnApCiAgCiAgICAgICAgICMgc3RkY2FsbCBmdW5jdGlvbnMgcG9wIGFyZ3VtZW50cyBvZmYgdGhlIHN0YWNrIHRoZW1zZWx2ZXMKIAogICAgICAgICAjIExvYWQgJWVjeCB3aXRoIHRoZSByZXR1cm4gdHlwZSBjb2RlCi0gICAgICAgIG1vdmwgIDIwKCVlYnApLCVlY3gKKyAgICAgICAgbW92bCAgMjQoJWVicCksJWVjeAogIAogICAgICAgICAjIElmIHRoZSByZXR1cm4gdmFsdWUgcG9pbnRlciBpcyBOVUxMLCBhc3N1bWUgbm8gcmV0dXJuIHZhbHVlLgotICAgICAgICBjbXBsICAkMCwyNCglZWJwKQorICAgICAgICBjbXBsICAkMCwyOCglZWJwKQogICAgICAgICBqbmUgICAwZgogIAogICAgICAgICAjIEV2ZW4gaWYgdGhlcmUgaXMgbm8gc3BhY2UgZm9yIHRoZSByZXR1cm4gdmFsdWUsIHdlIGFyZQpAQCAtNDYwLDYgKzU2MCw3IEBACiAJLmxvbmcJLkxyZXRzdHJ1Y3QxYgkJLyogRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCICovCiAJLmxvbmcJLkxyZXRzdHJ1Y3QyYgkJLyogRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCICovCiAJLmxvbmcJLkxyZXRzdHJ1Y3Q0YgkJLyogRkZJX1RZUEVfU01BTExfU1RSVUNUXzRCICovCisJLmxvbmcJLkxyZXRzdHJ1Y3QJCS8qIEZGSV9UWVBFX01TX1NUUlVDVCAqLwogMToKIAlhZGQJJWVjeCwgJWVjeAogCWFkZAklZWN4LCAlZWN4CkBAIC00ODYsNTAgKzU4Nyw1MCBAQAogCiAuTHJldGludDoKICAgICAgICAgIyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICAgIG1vdmwgIDI0KCVlYnApLCVlY3gKKyAgICAgICAgbW92bCAgMjgoJWVicCksJWVjeAogICAgICAgICBtb3ZsICAlZWF4LDAoJWVjeCkKICAgICAgICAgam1wICAgLkxlcGlsb2d1ZQogIAogLkxyZXRmbG9hdDoKICAgICAgICAgICMgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQotICAgICAgICBtb3ZsICAyNCglZWJwKSwlZWN4CisgICAgICAgIG1vdmwgIDI4KCVlYnApLCVlY3gKICAgICAgICAgZnN0cHMgKCVlY3gpCiAgICAgICAgIGptcCAgIC5MZXBpbG9ndWUKICAKIC5McmV0ZG91YmxlOgogICAgICAgICAjIExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgICAgbW92bCAgMjQoJWVicCksJWVjeAorICAgICAgICBtb3ZsICAyOCglZWJwKSwlZWN4CiAgICAgICAgIGZzdHBsICglZWN4KQogICAgICAgICBqbXAgICAuTGVwaWxvZ3VlCiAgCiAuTHJldGxvbmdkb3VibGU6CiAgICAgICAgICMgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQotICAgICAgICBtb3ZsICAyNCglZWJwKSwlZWN4CisgICAgICAgIG1vdmwgIDI4KCVlYnApLCVlY3gKICAgICAgICAgZnN0cHQgKCVlY3gpCiAgICAgICAgIGptcCAgIC5MZXBpbG9ndWUKICAKIC5McmV0aW50NjQ6CiAgICAgICAgICMgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQotICAgICAgICBtb3ZsICAyNCglZWJwKSwlZWN4CisgICAgICAgIG1vdmwgIDI4KCVlYnApLCVlY3gKICAgICAgICAgbW92bCAgJWVheCwwKCVlY3gpCiAgICAgICAgIG1vdmwgICVlZHgsNCglZWN4KQogCWptcCAgIC5MZXBpbG9ndWUKIAogLkxyZXRzdHJ1Y3QxYjoKICAgICAgICAgIyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICAgIG1vdmwgIDI0KCVlYnApLCVlY3gKKyAgICAgICAgbW92bCAgMjgoJWVicCksJWVjeAogICAgICAgICBtb3ZiICAlYWwsMCglZWN4KQogICAgICAgICBqbXAgICAuTGVwaWxvZ3VlCiAgCiAuTHJldHN0cnVjdDJiOgogICAgICAgICAjIExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgICAgbW92bCAgMjQoJWVicCksJWVjeAorICAgICAgICBtb3ZsICAyOCglZWJwKSwlZWN4CiAgICAgICAgIG1vdncgICVheCwwKCVlY3gpCiAgICAgICAgIGptcCAgIC5MZXBpbG9ndWUKIAogLkxyZXRzdHJ1Y3Q0YjoKICAgICAgICAgIyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICAgIG1vdmwgIDI0KCVlYnApLCVlY3gKKyAgICAgICAgbW92bCAgMjgoJWVicCksJWVjeAogICAgICAgICBtb3ZsICAlZWF4LDAoJWVjeCkKICAgICAgICAgam1wICAgLkxlcGlsb2d1ZQogCkBAIC01NDIsMTIgKzY0MywyNyBAQAogICAgICAgICBwb3BsICVlYnAKICAgICAgICAgcmV0CiAuZmZpX2NhbGxfd2luMzJfZW5kOgorICAgICAgICAuYmFsaWduIDE2CisJLmdsb2JsCV9mZmlfY2xvc3VyZV9USElTQ0FMTAorI2lmbmRlZiBfX09TMl9fCisJLmRlZglfZmZpX2Nsb3N1cmVfVEhJU0NBTEw7CS5zY2wJMjsJLnR5cGUJMzI7CS5lbmRlZgorI2VuZGlmCitfZmZpX2Nsb3N1cmVfVEhJU0NBTEw6CisJcHVzaGwJJWVicAorCW1vdmwJJWVzcCwgJWVicAorCXN1YmwJJDQwLCAlZXNwCisJbGVhbAktMjQoJWVicCksICVlZHgKKwltb3ZsCSVlZHgsIC0xMiglZWJwKQkvKiByZXNwICovCisJbGVhbAkxMiglZWJwKSwgJWVkeCAgLyogYWNjb3VudCBmb3Igc3R1YiByZXR1cm4gYWRkcmVzcyBvbiBzdGFjayAqLworCWptcAkuc3R1YgogLkxGRTE6CiAKICAgICAgICAgIyBUaGlzIGFzc3VtZXMgd2UgYXJlIHVzaW5nIGdhcy4KICAgICAgICAgLmJhbGlnbiAxNgogCS5nbG9ibAlfZmZpX2Nsb3N1cmVfU1lTVgorI2lmbmRlZiBfX09TMl9fCiAJLmRlZglfZmZpX2Nsb3N1cmVfU1lTVjsJLnNjbAkyOwkudHlwZQkzMjsJLmVuZGVmCisjZW5kaWYKIF9mZmlfY2xvc3VyZV9TWVNWOgogLkxGQjM6CiAJcHVzaGwJJWVicApAQCAtNTU4LDYgKzY3NCw3IEBACiAJbGVhbAktMjQoJWVicCksICVlZHgKIAltb3ZsCSVlZHgsIC0xMiglZWJwKQkvKiByZXNwICovCiAJbGVhbAk4KCVlYnApLCAlZWR4Cisuc3R1YjoKIAltb3ZsCSVlZHgsIDQoJWVzcCkJLyogYXJncyA9IF9fYnVpbHRpbl9kd2FyZl9jZmEgKCkgKi8KIAlsZWFsCS0xMiglZWJwKSwgJWVkeAogCW1vdmwJJWVkeCwgKCVlc3ApCS8qICZyZXNwICovCkBAIC01ODYsNiArNzAzLDcgQEAKIAkubG9uZwkuTGNsc19yZXRzdHJ1Y3QxCS8qIEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8xQiAqLwogCS5sb25nCS5MY2xzX3JldHN0cnVjdDIJLyogRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCICovCiAJLmxvbmcJLkxjbHNfcmV0c3RydWN0NAkvKiBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfNEIgKi8KKwkubG9uZwkuTGNsc19yZXRtc3N0cnVjdAkvKiBGRklfVFlQRV9NU19TVFJVQ1QgKi8KIAogMToKIAlhZGQJJWVheCwgJWVheApAQCAtNjUwLDYgKzc2OCwxMiBAQAogCXBvcGwJJWVicAogCXJldAkkMHg0CiAKKy5MY2xzX3JldG1zc3RydWN0OgorCSMgQ2FsbGVyIGV4cGVjdHMgdXMgdG8gcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgcmVhbCByZXR1cm4gdmFsdWUuCisJbW92CSVlY3gsICVlYXgKKwkjIENhbGxlciBkb2Vzbid0IGV4cGVjdHMgdXMgdG8gcG9wIHN0cnVjdCByZXR1cm4gdmFsdWUgcG9pbnRlciBoaWRkZW4gYXJnLgorCWptcAkuTGNsc19lcGlsb2d1ZQorCiAuTGNsc19ub3JldHZhbDoKIC5MY2xzX2VwaWxvZ3VlOgogCW1vdmwJJWVicCwgJWVzcApAQCAtNjY0LDExICs3ODgsMjcgQEAKICNkZWZpbmUgUkFXX0NMT1NVUkVfRlVOX09GRlNFVCAoUkFXX0NMT1NVUkVfQ0lGX09GRlNFVCArIDQpCiAjZGVmaW5lIFJBV19DTE9TVVJFX1VTRVJfREFUQV9PRkZTRVQgKFJBV19DTE9TVVJFX0ZVTl9PRkZTRVQgKyA0KQogI2RlZmluZSBDSUZfRkxBR1NfT0ZGU0VUIDIwCi0KKyAgICAgICAgLmJhbGlnbiAxNgorCS5nbG9ibAlfZmZpX2Nsb3N1cmVfcmF3X1RISVNDQUxMCisjaWZuZGVmIF9fT1MyX18KKwkuZGVmCV9mZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEw7CS5zY2wJMjsJLnR5cGUJMzI7CS5lbmRlZgorI2VuZGlmCitfZmZpX2Nsb3N1cmVfcmF3X1RISVNDQUxMOgorCXB1c2hsCSVlYnAKKwltb3ZsCSVlc3AsICVlYnAKKwlwdXNobAklZXNpCisJc3VibAkkMzYsICVlc3AKKwltb3ZsCVJBV19DTE9TVVJFX0NJRl9PRkZTRVQoJWVheCksICVlc2kJIC8qIGNsb3N1cmUtPmNpZiAqLworCW1vdmwJUkFXX0NMT1NVUkVfVVNFUl9EQVRBX09GRlNFVCglZWF4KSwgJWVkeCAvKiBjbG9zdXJlLT51c2VyX2RhdGEgKi8KKwltb3ZsCSVlZHgsIDEyKCVlc3ApCS8qIHVzZXJfZGF0YSAqLworCWxlYWwJMTIoJWVicCksICVlZHgJLyogX19idWlsdGluX2R3YXJmX2NmYSAoKSAqLworCWptcAkuc3R1YnJhdwogICAgICAgICAjIFRoaXMgYXNzdW1lcyB3ZSBhcmUgdXNpbmcgZ2FzLgogICAgICAgICAuYmFsaWduIDE2CiAJLmdsb2JsCV9mZmlfY2xvc3VyZV9yYXdfU1lTVgorI2lmbmRlZiBfX09TMl9fCiAJLmRlZglfZmZpX2Nsb3N1cmVfcmF3X1NZU1Y7CS5zY2wJMjsJLnR5cGUJMzI7CS5lbmRlZgorI2VuZGlmCiBfZmZpX2Nsb3N1cmVfcmF3X1NZU1Y6CiAuTEZCNDoKIAlwdXNobAklZWJwCkBAIC02ODIsNiArODIyLDcgQEAKIAltb3ZsCVJBV19DTE9TVVJFX1VTRVJfREFUQV9PRkZTRVQoJWVheCksICVlZHggLyogY2xvc3VyZS0+dXNlcl9kYXRhICovCiAJbW92bAklZWR4LCAxMiglZXNwKQkvKiB1c2VyX2RhdGEgKi8KIAlsZWFsCTgoJWVicCksICVlZHgJLyogX19idWlsdGluX2R3YXJmX2NmYSAoKSAqLworLnN0dWJyYXc6CiAJbW92bAklZWR4LCA4KCVlc3ApCS8qIHJhd19hcmdzICovCiAJbGVhbAktMjQoJWVicCksICVlZHgKIAltb3ZsCSVlZHgsIDQoJWVzcCkJLyogJnJlcyAqLwpAQCAtNzEwLDYgKzg1MSw3IEBACiAJLmxvbmcJLkxyY2xzX3JldHN0cnVjdDEJLyogRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCICovCiAJLmxvbmcJLkxyY2xzX3JldHN0cnVjdDIJLyogRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCICovCiAJLmxvbmcJLkxyY2xzX3JldHN0cnVjdDQJLyogRkZJX1RZUEVfU01BTExfU1RSVUNUXzRCICovCisJLmxvbmcJLkxyY2xzX3JldHN0cnVjdAkvKiBGRklfVFlQRV9NU19TVFJVQ1QgKi8KIDE6CiAJYWRkCSVlYXgsICVlYXgKIAlhZGQJJWVheCwgJWVheApAQCAtNzg0LDcgKzkyNiw5IEBACiAgICAgICAgICMgVGhpcyBhc3N1bWVzIHdlIGFyZSB1c2luZyBnYXMuCiAJLmJhbGlnbgkxNgogCS5nbG9ibAlfZmZpX2Nsb3N1cmVfU1REQ0FMTAorI2lmbmRlZiBfX09TMl9fCiAJLmRlZglfZmZpX2Nsb3N1cmVfU1REQ0FMTDsJLnNjbAkyOwkudHlwZQkzMjsJLmVuZGVmCisjZW5kaWYKIF9mZmlfY2xvc3VyZV9TVERDQUxMOgogLkxGQjU6CiAJcHVzaGwJJWVicApAQCAtODkwLDcgKzEwMzQsOSBAQAogLmZmaV9jbG9zdXJlX1NURENBTExfZW5kOgogLkxGRTU6CiAKKyNpZm5kZWYgX19PUzJfXwogCS5zZWN0aW9uCS5laF9mcmFtZSwidyIKKyNlbmRpZgogLkxmcmFtZTE6CiAuTFNDSUUxOgogCS5sb25nCS5MRUNJRTEtLkxBU0NJRTEgIC8qIExlbmd0aCBvZiBDb21tb24gSW5mb3JtYXRpb24gRW50cnkgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni93aW42NC5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3dpbjY0LlMKaW5kZXggNmU5MTgxOC4uZmNkYjI3MCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3dpbjY0LlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3dpbjY0LlMKQEAgLTIzMiwxMCArMjMyLDE4IEBACiBmZmlfY2FsbF93aW42NCBFTkRQCiBfVEVYVAlFTkRTCiBFTkQKLSNlbHNlICAgICAgICAKKworI2Vsc2UKKworI2lmZGVmIFNZTUJPTF9VTkRFUlNDT1JFCisjZGVmaW5lIFNZTUJPTF9OQU1FKG5hbWUpIF8jI25hbWUKKyNlbHNlCisjZGVmaW5lIFNZTUJPTF9OQU1FKG5hbWUpIG5hbWUKKyNlbmRpZgorCiAudGV4dAogCi0uZXh0ZXJuIF9mZmlfY2xvc3VyZV93aW42NF9pbm5lcgorLmV4dGVybiBTWU1CT0xfTkFNRShmZmlfY2xvc3VyZV93aW42NF9pbm5lcikKIAogIyBmZmlfY2xvc3VyZV93aW42NCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZXNlIHJlZ2lzdGVycyBzZXQ6CiAjICAgIHJheCBwb2ludHMgdG8gJ2Nsb3N1cmUnCkBAIC0yNDYsOCArMjU0LDggQEAKICMgY2FsbCBmZmlfY2xvc3VyZV93aW42NF9pbm5lciBmb3IgdGhlIGFjdHVhbCB3b3JrLCB0aGVuIHJldHVybiB0aGUgcmVzdWx0LgogIyAKIAkuYmFsaWduIDE2Ci0gICAgICAgIC5nbG9ibCBfZmZpX2Nsb3N1cmVfd2luNjQJCi1fZmZpX2Nsb3N1cmVfd2luNjQ6ICAgICAKKyAgICAgICAgLmdsb2JsIFNZTUJPTF9OQU1FKGZmaV9jbG9zdXJlX3dpbjY0KQorU1lNQk9MX05BTUUoZmZpX2Nsb3N1cmVfd2luNjQpOgogCSMgY29weSByZWdpc3RlciBhcmd1bWVudHMgb250byBzdGFjawogCXRlc3QJJDEsJXIxMQogCWpuZQkuTGZpcnN0X2lzX2Zsb2F0CQpAQCAtMjg3LDcgKzI5NSw3IEBACiAJbW92CSVyYXgsICVyY3gJIyBjb250ZXh0IGlzIGZpcnN0IHBhcmFtZXRlcgogCW1vdgklcnNwLCAlcmR4CSMgc3RhY2sgaXMgc2Vjb25kIHBhcmFtZXRlcgogCWFkZAkkNDgsICVyZHgJIyBwb2ludCB0byBzdGFydCBvZiBhcmd1bWVudHMKLQltb3YJJF9mZmlfY2xvc3VyZV93aW42NF9pbm5lciwgJXJheAorCW1vdgkkU1lNQk9MX05BTUUoZmZpX2Nsb3N1cmVfd2luNjRfaW5uZXIpLCAlcmF4CiAJY2FsbHEJKiVyYXgJCSMgY2FsbCB0aGUgcmVhbCBjbG9zdXJlIGZ1bmN0aW9uCiAJYWRkCSQ0MCwgJXJzcAogCW1vdnEJJXJheCwgJXhtbTAJIyBJZiB0aGUgY2xvc3VyZSByZXR1cm5lZCBhIGZsb2F0LApAQCAtMjk2LDggKzMwNCw4IEBACiAuZmZpX2Nsb3N1cmVfd2luNjRfZW5kOgogCiAJLmJhbGlnbiAxNgotICAgICAgICAuZ2xvYmwJX2ZmaV9jYWxsX3dpbjY0Ci1fZmZpX2NhbGxfd2luNjQ6ICAgICAgICAKKyAgICAgICAgLmdsb2JsCVNZTUJPTF9OQU1FKGZmaV9jYWxsX3dpbjY0KQorU1lNQk9MX05BTUUoZmZpX2NhbGxfd2luNjQpOgogICAgICAgICAjIGNvcHkgcmVnaXN0ZXJzIG9udG8gc3RhY2sKIAltb3YJJXI5LDMyKCVyc3ApCiAJbW92CSVyOCwyNCglcnNwKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvTWFrZWZpbGUuYW0gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9NYWtlZmlsZS5hbQppbmRleCBlYWUzZDc0Li4xNDZmZGY5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9NYWtlZmlsZS5hbQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9NYWtlZmlsZS5hbQpAQCAtMTUsNjYgKzE1LDcxIEBACiAKIENMRUFORklMRVMgPSAqLmV4ZSBjb3JlKiAqLmxvZyAqLnN1bQogCi1FWFRSQV9ESVNUID0gbGliZmZpLnNwZWNpYWwvc3BlY2lhbC5leHAJXAotbGliZmZpLnNwZWNpYWwvdW53aW5kdGVzdF9mZmlfY2FsbC5jYyBsaWJmZmkuc3BlY2lhbC91bndpbmR0ZXN0LmNjIFwKLWxpYmZmaS5zcGVjaWFsL2ZmaXRlc3RjeHguaCBjb25maWcvZGVmYXVsdC5leHAgbGliL3RhcmdldC1saWJwYXRoLmV4cCBcCi1saWIvbGliZmZpLWRnLmV4cCBsaWIvd3JhcHBlci5leHAgbGliZmZpLmNhbGwvZmxvYXQuYyBcCi1saWJmZmkuY2FsbC9jbHNfbXVsdGlfc2NoYXIuYyBsaWJmZmkuY2FsbC9mbG9hdDMuYyBcCi1saWJmZmkuY2FsbC9jbHNfM18xYnl0ZS5jIGxpYmZmaS5jYWxsL3N0cmV0X2xhcmdlMi5jIFwKLWxpYmZmaS5jYWxsL2Nsc181XzFfYnl0ZS5jIGxpYmZmaS5jYWxsL3N0cmV0X21lZGl1bS5jIFwKLWxpYmZmaS5jYWxsL3Byb21vdGlvbi5jIGxpYmZmaS5jYWxsL2Nsc19kYmxzX3N0cnVjdC5jIFwKLWxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMS5jIFwKLWxpYmZmaS5jYWxsL2Nsc180XzFieXRlLmMgbGliZmZpLmNhbGwvY2xzX2Zsb2F0LmMgXAotbGliZmZpLmNhbGwvY2xzXzJieXRlLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjQuYyBcCi1saWJmZmkuY2FsbC9yZXR1cm5fZmwyLmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDcuYyBcCi1saWJmZmkuY2FsbC9jbHNfdWludC5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50NjQuYyBcCi1saWJmZmkuY2FsbC9mbG9hdDEuYyBsaWJmZmkuY2FsbC9jbHNfMTlieXRlLmMgXAotbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEuYyBsaWJmZmkuY2FsbC9jbHNfNGJ5dGUuYyBcCi1saWJmZmkuY2FsbC9yZXR1cm5fZmwxLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3BvaW50ZXIuYyBcCi1saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NC5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QzLmMgXAotbGliZmZpLmNhbGwvc3RydWN0Ny5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q5LmMgXAotbGliZmZpLmNhbGwvY2xzX3NzaG9ydC5jIGxpYmZmaS5jYWxsL2Nsc191bG9uZ2xvbmcuYyBcCi1saWJmZmkuY2FsbC9jbHNfcG9pbnRlcl9zdGFjay5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV91Y2hhci5jIFwKLWxpYmZmaS5jYWxsL3Rlc3RjbG9zdXJlLmMgbGliZmZpLmNhbGwvY2xzXzNieXRlMS5jIFwKLWxpYmZmaS5jYWxsL3N0cnVjdDYuYyBsaWJmZmkuY2FsbC9yZXR1cm5fdWMuYyBsaWJmZmkuY2FsbC9yZXR1cm5fbGwxLmMgXAotbGliZmZpLmNhbGwvY2xzX3VzaG9ydC5jIGxpYmZmaS5jYWxsL3N0cmV0X21lZGl1bTIuYyBcCi1saWJmZmkuY2FsbC9jbHNfbXVsdGlfdXNob3J0Y2hhci5jIGxpYmZmaS5jYWxsL3JldHVybl9kYmwyLmMgXAotbGliZmZpLmNhbGwvY2xvc3VyZV9sb2NfZm4wLmMgbGliZmZpLmNhbGwvcmV0dXJuX3NjLmMgXAotbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDguYyBsaWJmZmkuY2FsbC9jbHNfN18xX2J5dGUuYwlcCi1saWJmZmkuY2FsbC9yZXR1cm5fbGwuYyBsaWJmZmkuY2FsbC9jbHNfcG9pbnRlci5jIFwKLWxpYmZmaS5jYWxsL2Vycl9iYWRfYWJpLmMgbGliZmZpLmNhbGwvcmV0dXJuX2RibDEuYyBcCi1saWJmZmkuY2FsbC9jYWxsLmV4cCBsaWJmZmkuY2FsbC9mZml0ZXN0LmggbGliZmZpLmNhbGwvc3RybGVuLmMJXAotbGliZmZpLmNhbGwvcmV0dXJuX3NsLmMgbGliZmZpLmNhbGwvY2xzXzFfMWJ5dGUuYyBcCi1saWJmZmkuY2FsbC9zdHJ1Y3QxLmMgbGliZmZpLmNhbGwvY2xzXzY0Ynl0ZS5jIGxpYmZmaS5jYWxsL3JldHVybl91bC5jIFwKLWxpYmZmaS5jYWxsL2Nsc19kb3VibGUuYyBsaWJmZmkuY2FsbC9tYW55X3dpbjMyLmMgXAotbGliZmZpLmNhbGwvY2xzXzE2Ynl0ZS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9kb3VibGUuYwlcCi1saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDE2LmMgbGliZmZpLmNhbGwvY2xzXzlieXRlMS5jCVwKLWxpYmZmaS5jYWxsL2Nsc19tdWx0aV9zc2hvcnRjaGFyLmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3VzaG9ydC5jIFwKLWxpYmZmaS5jYWxsL2Nsb3N1cmVfc3RkY2FsbC5jIGxpYmZmaS5jYWxsL3JldHVybl9mbC5jIFwKLWxpYmZmaS5jYWxsL3N0cmxlbl93aW4zMi5jIGxpYmZmaS5jYWxsL3JldHVybl9sZGwuYyBcCi1saWJmZmkuY2FsbC9jbHNfYWxpZ25fZmxvYXQuYyBsaWJmZmkuY2FsbC9zdHJ1Y3QzLmMgXAotbGliZmZpLmNhbGwvY2xzX3VjaGFyLmMgbGliZmZpLmNhbGwvY2xzX3NpbnQuYyBsaWJmZmkuY2FsbC9mbG9hdDIuYyBcCi1saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdC5jIFwKLWxpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlX3ZhLmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3NzaG9ydC5jIFwKLWxpYmZmaS5jYWxsL3N0cmV0X2xhcmdlLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQxNi5jIFwKLWxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q2LmMgbGliZmZpLmNhbGwvY2xzXzVieXRlLmMgXAotbGliZmZpLmNhbGwvcmV0dXJuX2RibC5jIGxpYmZmaS5jYWxsL2Nsc18yMGJ5dGUuYyBcCi1saWJmZmkuY2FsbC9jbHNfOGJ5dGUuYyBsaWJmZmkuY2FsbC9weW9iamMtdGMuYwlcCi1saWJmZmkuY2FsbC9jbHNfMjRieXRlLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQyLmMgXAotbGliZmZpLmNhbGwvY2xzXzZfMV9ieXRlLmMgbGliZmZpLmNhbGwvY2xzX3NjaGFyLmMgXAotbGliZmZpLmNhbGwvY2xzXzE4Ynl0ZS5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4zLmMgXAotbGliZmZpLmNhbGwvZXJyX2JhZF90eXBlZGVmLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjIuYwlcCi1saWJmZmkuY2FsbC9zdHJ1Y3QyLmMgbGliZmZpLmNhbGwvY2xzXzNieXRlMi5jIFwKLWxpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlLmMgbGliZmZpLmNhbGwvY2xzXzIwYnl0ZTEuYyBcCi1saWJmZmkuY2FsbC9yZXR1cm5fZmwzLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQzMi5jCVwKLWxpYmZmaS5jYWxsL3Byb2JsZW0xLmMgbGliZmZpLmNhbGwvZmxvYXQ0LmMgXAotbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQ2NC5jIGxpYmZmaS5jYWxsL3N0cnVjdDkuYyBcCi1saWJmZmkuY2FsbC9jbG9zdXJlX2ZuNS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MzIuYyBcCi1saWJmZmkuY2FsbC9jbG9zdXJlX2ZuMC5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm42LmMgXAotbGliZmZpLmNhbGwvc3RydWN0NC5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QyLmMgXAotbGliZmZpLmNhbGwvY2xzXzZieXRlLmMgbGliZmZpLmNhbGwvY2xzXzdieXRlLmMgbGliZmZpLmNhbGwvbWFueS5jIFwKLWxpYmZmaS5jYWxsL3N0cnVjdDguYyBsaWJmZmkuY2FsbC9uZWdpbnQuYyBsaWJmZmkuY2FsbC9zdHJ1Y3Q1LmMgXAotbGliZmZpLmNhbGwvY2xzXzEyYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsc19kb3VibGVfdmEuYyBcCi1saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZS5jIGxpYmZmaS5jYWxsL2Nsc185Ynl0ZTIuYyBcCitFWFRSQV9ESVNUID0gY29uZmlnL2RlZmF1bHQuZXhwIGxpYmZmaS5jYWxsL2Nsc18xOWJ5dGUuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdC5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfbG9jX2ZuMC5jIFwKK2xpYmZmaS5jYWxsL2Nsc19zY2hhci5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4xLmMgXAorbGliZmZpLmNhbGwvbWFueTJfd2luMzIuYyBsaWJmZmkuY2FsbC9yZXR1cm5fdWwuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fZG91YmxlLmMgbGliZmZpLmNhbGwvcmV0dXJuX2ZsMi5jIFwKK2xpYmZmaS5jYWxsL2Nsc18xXzFieXRlLmMgbGliZmZpLmNhbGwvY2xzXzY0Ynl0ZS5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q3LmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQzMi5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QyLmMgbGliZmZpLmNhbGwvZmZpdGVzdC5oIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q0LmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3VzaG9ydC5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDMuYyBsaWJmZmkuY2FsbC9jbHNfM2J5dGUxLmMgXAorbGliZmZpLmNhbGwvY2xzXzE2Ynl0ZS5jIGxpYmZmaS5jYWxsL3N0cnVjdDguYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OC5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV9zc2hvcnQuYyBcCitsaWJmZmkuY2FsbC9jbHNfM2J5dGUyLmMgbGliZmZpLmNhbGwvZmFzdHRoaXMyX3dpbjMyLmMgXAorbGliZmZpLmNhbGwvY2xzX3BvaW50ZXIuYyBsaWJmZmkuY2FsbC9lcnJfYmFkX3R5cGVkZWYuYyBcCitsaWJmZmkuY2FsbC9jbHNfNF8xYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsc185Ynl0ZTIuYyBcCitsaWJmZmkuY2FsbC9jbHNfbXVsdGlfc2NoYXIuYyBsaWJmZmkuY2FsbC9zdHJldF9tZWRpdW0yLmMgXAorbGliZmZpLmNhbGwvY2xzXzVfMV9ieXRlLmMgbGliZmZpLmNhbGwvY2FsbC5leHAgXAorbGliZmZpLmNhbGwvY2xzX2RvdWJsZS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MTYuYyBcCitsaWJmZmkuY2FsbC9jbHNfdWludC5jIGxpYmZmaS5jYWxsL3JldHVybl9sbDEuYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0My5jIGxpYmZmaS5jYWxsL2Nsc18yMGJ5dGUxLmMgXAorbGliZmZpLmNhbGwvY2xvc3VyZV9mbjQuYyBsaWJmZmkuY2FsbC9jbHNfdWNoYXIuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3QyLmMgbGliZmZpLmNhbGwvY2xzXzdieXRlLmMgbGliZmZpLmNhbGwvc3RybGVuLmMgXAorbGliZmZpLmNhbGwvbWFueS5jIGxpYmZmaS5jYWxsL3Rlc3RjbG9zdXJlLmMgbGliZmZpLmNhbGwvcmV0dXJuX2ZsLmMgXAorbGliZmZpLmNhbGwvc3RydWN0NS5jIGxpYmZmaS5jYWxsL2Nsc18xMmJ5dGUuYyBcCitsaWJmZmkuY2FsbC9jbHNfbXVsdGlfc3Nob3J0Y2hhci5jIFwKK2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0Mi5jIGxpYmZmaS5jYWxsL3JldHVybl9kYmwyLmMgXAorbGliZmZpLmNhbGwvcmV0dXJuX2ZsMy5jIGxpYmZmaS5jYWxsL3N0cmV0X21lZGl1bS5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q2LmMgbGliZmZpLmNhbGwvYS5vdXQgXAorbGliZmZpLmNhbGwvY2xvc3VyZV9mbjMuYyBsaWJmZmkuY2FsbC9mbG9hdDMuYyBsaWJmZmkuY2FsbC9tYW55Mi5jIFwKK2xpYmZmaS5jYWxsL2Nsb3N1cmVfc3RkY2FsbC5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MTYuYyBcCitsaWJmZmkuY2FsbC9jbHNfOWJ5dGUxLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjYuYyBcCitsaWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3BvaW50ZXIuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZS5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4yLmMgXAorbGliZmZpLmNhbGwvY2xzX3NzaG9ydC5jIGxpYmZmaS5jYWxsL21hbnlfd2luMzIuYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0LmMgbGliZmZpLmNhbGwvY2xzXzIwYnl0ZS5jIFwKK2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlLmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3VjaGFyLmMgXAorbGliZmZpLmNhbGwvcmV0dXJuX3VjLmMgbGliZmZpLmNhbGwvY2xvc3VyZV90aGlzY2FsbC5jIFwKK2xpYmZmaS5jYWxsL2Nsc18xOGJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfOGJ5dGUuYyBcCitsaWJmZmkuY2FsbC9wcm9tb3Rpb24uYyBsaWJmZmkuY2FsbC9zdHJ1Y3QxX3dpbjMyLmMgXAorbGliZmZpLmNhbGwvcmV0dXJuX2RibC5jIGxpYmZmaS5jYWxsL2Nsc18yNGJ5dGUuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3Q0LmMgbGliZmZpLmNhbGwvY2xzXzZieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQzMi5jIGxpYmZmaS5jYWxsL2Zsb2F0LmMgXAorbGliZmZpLmNhbGwvZmxvYXQxLmMgbGliZmZpLmNhbGwvZmxvYXRfdmEuYyBsaWJmZmkuY2FsbC9uZWdpbnQuYyBcCitsaWJmZmkuY2FsbC9yZXR1cm5fZGJsMS5jIGxpYmZmaS5jYWxsL2Nsc18zXzFieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzX2FsaWduX2Zsb2F0LmMgbGliZmZpLmNhbGwvcmV0dXJuX2ZsMS5jIFwKIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxMC5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q1LmMgXAotbGliZmZpLmNhbGwvaHVnZV9zdHJ1Y3QuYworbGliZmZpLmNhbGwvZmFzdHRoaXMxX3dpbjMyLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQ2NC5jIFwKK2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlMi5jIGxpYmZmaS5jYWxsL3JldHVybl9zbC5jIFwKK2xpYmZmaS5jYWxsL2Nsb3N1cmVfZm4wLmMgbGliZmZpLmNhbGwvY2xzXzVieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzXzJieXRlLmMgbGliZmZpLmNhbGwvZmxvYXQyLmMgXAorbGliZmZpLmNhbGwvY2xzX2RibHNfc3RydWN0LmMgbGliZmZpLmNhbGwvY2xzX3NpbnQuYyBcCitsaWJmZmkuY2FsbC9zdHJldF9sYXJnZS5jIGxpYmZmaS5jYWxsL2Nsc191bG9uZ2xvbmcuYyBcCitsaWJmZmkuY2FsbC9jbHNfdXNob3J0LmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEuYyBcCitsaWJmZmkuY2FsbC9lcnJfYmFkX2FiaS5jIGxpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlX3ZhLmMgXAorbGliZmZpLmNhbGwvY2xzX2Zsb2F0LmMgbGliZmZpLmNhbGwvY2xzX3BvaW50ZXJfc3RhY2suYyBcCitsaWJmZmkuY2FsbC9weW9iamMtdGMuYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfdXNob3J0Y2hhci5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDEuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OS5jIFwKK2xpYmZmaS5jYWxsL2h1Z2Vfc3RydWN0LmMgbGliZmZpLmNhbGwvcHJvYmxlbTEuYyBsaWJmZmkuY2FsbC9mbG9hdDQuYyBcCitsaWJmZmkuY2FsbC9mYXN0dGhpczNfd2luMzIuYyBsaWJmZmkuY2FsbC9yZXR1cm5fbGRsLmMgXAorbGliZmZpLmNhbGwvc3RybGVuMl93aW4zMi5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm41LmMgXAorbGliZmZpLmNhbGwvc3RydWN0Ml93aW4zMi5jIGxpYmZmaS5jYWxsL3N0cnVjdDYuYyBcCitsaWJmZmkuY2FsbC9yZXR1cm5fbGwuYyBsaWJmZmkuY2FsbC9zdHJ1Y3Q5LmMgbGliZmZpLmNhbGwvcmV0dXJuX3NjLmMgXAorbGliZmZpLmNhbGwvc3RydWN0Ny5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50NjQuYyBcCitsaWJmZmkuY2FsbC9jbHNfNGJ5dGUuYyBsaWJmZmkuY2FsbC9zdHJsZW5fd2luMzIuYyBcCitsaWJmZmkuY2FsbC9jbHNfNl8xX2J5dGUuYyBsaWJmZmkuY2FsbC9jbHNfN18xX2J5dGUuYyBcCitsaWJmZmkuc3BlY2lhbC91bndpbmR0ZXN0LmNjIGxpYmZmaS5zcGVjaWFsL3NwZWNpYWwuZXhwIFwKK2xpYmZmaS5zcGVjaWFsL3Vud2luZHRlc3RfZmZpX2NhbGwuY2MgbGliZmZpLnNwZWNpYWwvZmZpdGVzdGN4eC5oIFwKK2xpYi93cmFwcGVyLmV4cCBsaWIvdGFyZ2V0LWxpYnBhdGguZXhwIGxpYi9saWJmZmkuZXhwCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9NYWtlZmlsZS5pbiBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL01ha2VmaWxlLmluCmluZGV4IDY5OGM0NjEuLjRjZjQwY2EgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL01ha2VmaWxlLmluCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL01ha2VmaWxlLmluCkBAIC0xLDkgKzEsOSBAQAotIyBNYWtlZmlsZS5pbiBnZW5lcmF0ZWQgYnkgYXV0b21ha2UgMS4xMSBmcm9tIE1ha2VmaWxlLmFtLgorIyBNYWtlZmlsZS5pbiBnZW5lcmF0ZWQgYnkgYXV0b21ha2UgMS4xMS4zIGZyb20gTWFrZWZpbGUuYW0uCiAjIEBjb25maWd1cmVfaW5wdXRACiAKICMgQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLAotIyAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0jIEluYy4KKyMgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4KICMgVGhpcyBNYWtlZmlsZS5pbiBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCiAjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KQEAgLTUzLDYgKzUzLDcgQEAKIEFDTE9DQUwgPSBAQUNMT0NBTEAKIEFMTE9DQSA9IEBBTExPQ0FACiBBTVRBUiA9IEBBTVRBUkAKK0FNX0xUTERGTEFHUyA9IEBBTV9MVExERkxBR1NACiBBTV9SVU5URVNURkxBR1MgPSAKIEFSID0gQEFSQAogQVVUT0NPTkYgPSBAQVVUT0NPTkZACkBAIC03MCw2ICs3MSw3IEBACiBDWUdQQVRIX1cgPSBAQ1lHUEFUSF9XQAogREVGUyA9IEBERUZTQAogREVQRElSID0gQERFUERJUkAKK0RMTFRPT0wgPSBARExMVE9PTEAKIERTWU1VVElMID0gQERTWU1VVElMQAogRFVNUEJJTiA9IEBEVU1QQklOQAogRUNIT19DID0gQEVDSE9fQ0AKQEAgLTc3LDYgKzc5LDcgQEAKIEVDSE9fVCA9IEBFQ0hPX1RACiBFR1JFUCA9IEBFR1JFUEAKIEVYRUVYVCA9IEBFWEVFWFRACitGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFID0gQEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVACiBGR1JFUCA9IEBGR1JFUEAKIEdSRVAgPSBAR1JFUEAKIEhBVkVfTE9OR19ET1VCTEUgPSBASEFWRV9MT05HX0RPVUJMRUAKQEAgLTk1LDYgKzk4LDcgQEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAorTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQAogTUtESVJfUCA9IEBNS0RJUl9QQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQApAQCAtMTA3LDYgKzExMSw3IEBACiBQQUNLQUdFX05BTUUgPSBAUEFDS0FHRV9OQU1FQAogUEFDS0FHRV9TVFJJTkcgPSBAUEFDS0FHRV9TVFJJTkdACiBQQUNLQUdFX1RBUk5BTUUgPSBAUEFDS0FHRV9UQVJOQU1FQAorUEFDS0FHRV9VUkwgPSBAUEFDS0FHRV9VUkxACiBQQUNLQUdFX1ZFUlNJT04gPSBAUEFDS0FHRV9WRVJTSU9OQAogUEFUSF9TRVBBUkFUT1IgPSBAUEFUSF9TRVBBUkFUT1JACiBSQU5MSUIgPSBAUkFOTElCQApAQCAtMTIxLDYgKzEyNiw3IEBACiBhYnNfc3JjZGlyID0gQGFic19zcmNkaXJACiBhYnNfdG9wX2J1aWxkZGlyID0gQGFic190b3BfYnVpbGRkaXJACiBhYnNfdG9wX3NyY2RpciA9IEBhYnNfdG9wX3NyY2RpckAKK2FjX2N0X0FSID0gQGFjX2N0X0FSQAogYWNfY3RfQ0MgPSBAYWNfY3RfQ0NACiBhY19jdF9EVU1QQklOID0gQGFjX2N0X0RVTVBCSU5ACiBhbV9faW5jbHVkZSA9IEBhbV9faW5jbHVkZUAKQEAgLTE1Myw3ICsxNTksNiBAQAogbGliZXhlY2RpciA9IEBsaWJleGVjZGlyQAogbG9jYWxlZGlyID0gQGxvY2FsZWRpckAKIGxvY2Fsc3RhdGVkaXIgPSBAbG9jYWxzdGF0ZWRpckAKLWx0X0VDSE8gPSBAbHRfRUNIT0AKIG1hbmRpciA9IEBtYW5kaXJACiBta2Rpcl9wID0gQG1rZGlyX3BACiBvbGRpbmNsdWRlZGlyID0gQG9sZGluY2x1ZGVkaXJACkBAIC0xODcsNjkgKzE5Miw3NCBAQAogCSAgICBlbHNlIGVjaG8gcnVudGVzdDsgZmlgCiAKIENMRUFORklMRVMgPSAqLmV4ZSBjb3JlKiAqLmxvZyAqLnN1bQotRVhUUkFfRElTVCA9IGxpYmZmaS5zcGVjaWFsL3NwZWNpYWwuZXhwCVwKLWxpYmZmaS5zcGVjaWFsL3Vud2luZHRlc3RfZmZpX2NhbGwuY2MgbGliZmZpLnNwZWNpYWwvdW53aW5kdGVzdC5jYyBcCi1saWJmZmkuc3BlY2lhbC9mZml0ZXN0Y3h4LmggY29uZmlnL2RlZmF1bHQuZXhwIGxpYi90YXJnZXQtbGlicGF0aC5leHAgXAotbGliL2xpYmZmaS1kZy5leHAgbGliL3dyYXBwZXIuZXhwIGxpYmZmaS5jYWxsL2Zsb2F0LmMgXAotbGliZmZpLmNhbGwvY2xzX211bHRpX3NjaGFyLmMgbGliZmZpLmNhbGwvZmxvYXQzLmMgXAotbGliZmZpLmNhbGwvY2xzXzNfMWJ5dGUuYyBsaWJmZmkuY2FsbC9zdHJldF9sYXJnZTIuYyBcCi1saWJmZmkuY2FsbC9jbHNfNV8xX2J5dGUuYyBsaWJmZmkuY2FsbC9zdHJldF9tZWRpdW0uYyBcCi1saWJmZmkuY2FsbC9wcm9tb3Rpb24uYyBsaWJmZmkuY2FsbC9jbHNfZGJsc19zdHJ1Y3QuYyBcCi1saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0LmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjEuYyBcCi1saWJmZmkuY2FsbC9jbHNfNF8xYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsc19mbG9hdC5jIFwKLWxpYmZmaS5jYWxsL2Nsc18yYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm40LmMgXAotbGliZmZpLmNhbGwvcmV0dXJuX2ZsMi5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q3LmMgXAotbGliZmZpLmNhbGwvY2xzX3VpbnQuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDY0LmMgXAotbGliZmZpLmNhbGwvZmxvYXQxLmMgbGliZmZpLmNhbGwvY2xzXzE5Ynl0ZS5jIFwKLWxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxLmMgbGliZmZpLmNhbGwvY2xzXzRieXRlLmMgXAotbGliZmZpLmNhbGwvcmV0dXJuX2ZsMS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9wb2ludGVyLmMgXAotbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDQuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0My5jIFwKLWxpYmZmaS5jYWxsL3N0cnVjdDcuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OS5jIFwKLWxpYmZmaS5jYWxsL2Nsc19zc2hvcnQuYyBsaWJmZmkuY2FsbC9jbHNfdWxvbmdsb25nLmMgXAotbGliZmZpLmNhbGwvY2xzX3BvaW50ZXJfc3RhY2suYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfdWNoYXIuYyBcCi1saWJmZmkuY2FsbC90ZXN0Y2xvc3VyZS5jIGxpYmZmaS5jYWxsL2Nsc18zYnl0ZTEuYyBcCi1saWJmZmkuY2FsbC9zdHJ1Y3Q2LmMgbGliZmZpLmNhbGwvcmV0dXJuX3VjLmMgbGliZmZpLmNhbGwvcmV0dXJuX2xsMS5jIFwKLWxpYmZmaS5jYWxsL2Nsc191c2hvcnQuYyBsaWJmZmkuY2FsbC9zdHJldF9tZWRpdW0yLmMgXAotbGliZmZpLmNhbGwvY2xzX211bHRpX3VzaG9ydGNoYXIuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZGJsMi5jIFwKLWxpYmZmaS5jYWxsL2Nsb3N1cmVfbG9jX2ZuMC5jIGxpYmZmaS5jYWxsL3JldHVybl9zYy5jIFwKLWxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q4LmMgbGliZmZpLmNhbGwvY2xzXzdfMV9ieXRlLmMJXAotbGliZmZpLmNhbGwvcmV0dXJuX2xsLmMgbGliZmZpLmNhbGwvY2xzX3BvaW50ZXIuYyBcCi1saWJmZmkuY2FsbC9lcnJfYmFkX2FiaS5jIGxpYmZmaS5jYWxsL3JldHVybl9kYmwxLmMgXAotbGliZmZpLmNhbGwvY2FsbC5leHAgbGliZmZpLmNhbGwvZmZpdGVzdC5oIGxpYmZmaS5jYWxsL3N0cmxlbi5jCVwKLWxpYmZmaS5jYWxsL3JldHVybl9zbC5jIGxpYmZmaS5jYWxsL2Nsc18xXzFieXRlLmMgXAotbGliZmZpLmNhbGwvc3RydWN0MS5jIGxpYmZmaS5jYWxsL2Nsc182NGJ5dGUuYyBsaWJmZmkuY2FsbC9yZXR1cm5fdWwuYyBcCi1saWJmZmkuY2FsbC9jbHNfZG91YmxlLmMgbGliZmZpLmNhbGwvbWFueV93aW4zMi5jIFwKLWxpYmZmaS5jYWxsL2Nsc18xNmJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fZG91YmxlLmMJXAotbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQxNi5jIGxpYmZmaS5jYWxsL2Nsc185Ynl0ZTEuYwlcCi1saWJmZmkuY2FsbC9jbHNfbXVsdGlfc3Nob3J0Y2hhci5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV91c2hvcnQuYyBcCi1saWJmZmkuY2FsbC9jbG9zdXJlX3N0ZGNhbGwuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZmwuYyBcCi1saWJmZmkuY2FsbC9zdHJsZW5fd2luMzIuYyBsaWJmZmkuY2FsbC9yZXR1cm5fbGRsLmMgXAotbGliZmZpLmNhbGwvY2xzX2FsaWduX2Zsb2F0LmMgbGliZmZpLmNhbGwvc3RydWN0My5jIFwKLWxpYmZmaS5jYWxsL2Nsc191Y2hhci5jIGxpYmZmaS5jYWxsL2Nsc19zaW50LmMgbGliZmZpLmNhbGwvZmxvYXQyLmMgXAotbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQuYyBcCi1saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV9zc2hvcnQuYyBcCi1saWJmZmkuY2FsbC9zdHJldF9sYXJnZS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MTYuYyBcCi1saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ni5jIGxpYmZmaS5jYWxsL2Nsc181Ynl0ZS5jIFwKLWxpYmZmaS5jYWxsL3JldHVybl9kYmwuYyBsaWJmZmkuY2FsbC9jbHNfMjBieXRlLmMgXAotbGliZmZpLmNhbGwvY2xzXzhieXRlLmMgbGliZmZpLmNhbGwvcHlvYmpjLXRjLmMJXAotbGliZmZpLmNhbGwvY2xzXzI0Ynl0ZS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0Mi5jIFwKLWxpYmZmaS5jYWxsL2Nsc182XzFfYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsc19zY2hhci5jIFwKLWxpYmZmaS5jYWxsL2Nsc18xOGJ5dGUuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMy5jIFwKLWxpYmZmaS5jYWxsL2Vycl9iYWRfdHlwZWRlZi5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4yLmMJXAotbGliZmZpLmNhbGwvc3RydWN0Mi5jIGxpYmZmaS5jYWxsL2Nsc18zYnl0ZTIuYyBcCi1saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZS5jIGxpYmZmaS5jYWxsL2Nsc18yMGJ5dGUxLmMgXAotbGliZmZpLmNhbGwvcmV0dXJuX2ZsMy5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MzIuYwlcCi1saWJmZmkuY2FsbC9wcm9ibGVtMS5jIGxpYmZmaS5jYWxsL2Zsb2F0NC5jIFwKLWxpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50NjQuYyBsaWJmZmkuY2FsbC9zdHJ1Y3Q5LmMgXAotbGliZmZpLmNhbGwvY2xvc3VyZV9mbjUuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDMyLmMgXAotbGliZmZpLmNhbGwvY2xvc3VyZV9mbjAuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuNi5jIFwKLWxpYmZmaS5jYWxsL3N0cnVjdDQuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Mi5jIFwKLWxpYmZmaS5jYWxsL2Nsc182Ynl0ZS5jIGxpYmZmaS5jYWxsL2Nsc183Ynl0ZS5jIGxpYmZmaS5jYWxsL21hbnkuYyBcCi1saWJmZmkuY2FsbC9zdHJ1Y3Q4LmMgbGliZmZpLmNhbGwvbmVnaW50LmMgbGliZmZpLmNhbGwvc3RydWN0NS5jIFwKLWxpYmZmaS5jYWxsL2Nsc18xMmJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmMgXAotbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGUuYyBsaWJmZmkuY2FsbC9jbHNfOWJ5dGUyLmMgXAorRVhUUkFfRElTVCA9IGNvbmZpZy9kZWZhdWx0LmV4cCBsaWJmZmkuY2FsbC9jbHNfMTlieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2xvY19mbjAuYyBcCitsaWJmZmkuY2FsbC9jbHNfc2NoYXIuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMS5jIFwKK2xpYmZmaS5jYWxsL21hbnkyX3dpbjMyLmMgbGliZmZpLmNhbGwvcmV0dXJuX3VsLmMgXAorbGliZmZpLmNhbGwvY2xzX2FsaWduX2RvdWJsZS5jIGxpYmZmaS5jYWxsL3JldHVybl9mbDIuYyBcCitsaWJmZmkuY2FsbC9jbHNfMV8xYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsc182NGJ5dGUuYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ny5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MzIuYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Mi5jIGxpYmZmaS5jYWxsL2ZmaXRlc3QuaCBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NC5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV91c2hvcnQuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3QzLmMgbGliZmZpLmNhbGwvY2xzXzNieXRlMS5jIFwKK2xpYmZmaS5jYWxsL2Nsc18xNmJ5dGUuYyBsaWJmZmkuY2FsbC9zdHJ1Y3Q4LmMgXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDguYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfc3Nob3J0LmMgXAorbGliZmZpLmNhbGwvY2xzXzNieXRlMi5jIGxpYmZmaS5jYWxsL2Zhc3R0aGlzMl93aW4zMi5jIFwKK2xpYmZmaS5jYWxsL2Nsc19wb2ludGVyLmMgbGliZmZpLmNhbGwvZXJyX2JhZF90eXBlZGVmLmMgXAorbGliZmZpLmNhbGwvY2xzXzRfMWJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfOWJ5dGUyLmMgXAorbGliZmZpLmNhbGwvY2xzX211bHRpX3NjaGFyLmMgbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtMi5jIFwKK2xpYmZmaS5jYWxsL2Nsc181XzFfYnl0ZS5jIGxpYmZmaS5jYWxsL2NhbGwuZXhwIFwKK2xpYmZmaS5jYWxsL2Nsc19kb3VibGUuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDE2LmMgXAorbGliZmZpLmNhbGwvY2xzX3VpbnQuYyBsaWJmZmkuY2FsbC9yZXR1cm5fbGwxLmMgXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDMuYyBsaWJmZmkuY2FsbC9jbHNfMjBieXRlMS5jIFwKK2xpYmZmaS5jYWxsL2Nsb3N1cmVfZm40LmMgbGliZmZpLmNhbGwvY2xzX3VjaGFyLmMgXAorbGliZmZpLmNhbGwvc3RydWN0Mi5jIGxpYmZmaS5jYWxsL2Nsc183Ynl0ZS5jIGxpYmZmaS5jYWxsL3N0cmxlbi5jIFwKK2xpYmZmaS5jYWxsL21hbnkuYyBsaWJmZmkuY2FsbC90ZXN0Y2xvc3VyZS5jIGxpYmZmaS5jYWxsL3JldHVybl9mbC5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDUuYyBsaWJmZmkuY2FsbC9jbHNfMTJieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzX211bHRpX3NzaG9ydGNoYXIuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdDIuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZGJsMi5jIFwKK2xpYmZmaS5jYWxsL3JldHVybl9mbDMuYyBsaWJmZmkuY2FsbC9zdHJldF9tZWRpdW0uYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ni5jIGxpYmZmaS5jYWxsL2Eub3V0IFwKK2xpYmZmaS5jYWxsL2Nsb3N1cmVfZm4zLmMgbGliZmZpLmNhbGwvZmxvYXQzLmMgbGliZmZpLmNhbGwvbWFueTIuYyBcCitsaWJmZmkuY2FsbC9jbG9zdXJlX3N0ZGNhbGwuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDE2LmMgXAorbGliZmZpLmNhbGwvY2xzXzlieXRlMS5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm42LmMgXAorbGliZmZpLmNhbGwvY2xzX2RvdWJsZV92YS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9wb2ludGVyLmMgXAorbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGUuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMi5jIFwKK2xpYmZmaS5jYWxsL2Nsc19zc2hvcnQuYyBsaWJmZmkuY2FsbC9tYW55X3dpbjMyLmMgXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdC5jIGxpYmZmaS5jYWxsL2Nsc18yMGJ5dGUuYyBcCitsaWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZS5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV91Y2hhci5jIFwKK2xpYmZmaS5jYWxsL3JldHVybl91Yy5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfdGhpc2NhbGwuYyBcCitsaWJmZmkuY2FsbC9jbHNfMThieXRlLmMgbGliZmZpLmNhbGwvY2xzXzhieXRlLmMgXAorbGliZmZpLmNhbGwvcHJvbW90aW9uLmMgbGliZmZpLmNhbGwvc3RydWN0MV93aW4zMi5jIFwKK2xpYmZmaS5jYWxsL3JldHVybl9kYmwuYyBsaWJmZmkuY2FsbC9jbHNfMjRieXRlLmMgXAorbGliZmZpLmNhbGwvc3RydWN0NC5jIGxpYmZmaS5jYWxsL2Nsc182Ynl0ZS5jIFwKK2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MzIuYyBsaWJmZmkuY2FsbC9mbG9hdC5jIFwKK2xpYmZmaS5jYWxsL2Zsb2F0MS5jIGxpYmZmaS5jYWxsL2Zsb2F0X3ZhLmMgbGliZmZpLmNhbGwvbmVnaW50LmMgXAorbGliZmZpLmNhbGwvcmV0dXJuX2RibDEuYyBsaWJmZmkuY2FsbC9jbHNfM18xYnl0ZS5jIFwKK2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9mbG9hdC5jIGxpYmZmaS5jYWxsL3JldHVybl9mbDEuYyBcCiBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MTAuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NS5jIFwKLWxpYmZmaS5jYWxsL2h1Z2Vfc3RydWN0LmMKK2xpYmZmaS5jYWxsL2Zhc3R0aGlzMV93aW4zMi5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50NjQuYyBcCitsaWJmZmkuY2FsbC9zdHJldF9sYXJnZTIuYyBsaWJmZmkuY2FsbC9yZXR1cm5fc2wuYyBcCitsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMC5jIGxpYmZmaS5jYWxsL2Nsc181Ynl0ZS5jIFwKK2xpYmZmaS5jYWxsL2Nsc18yYnl0ZS5jIGxpYmZmaS5jYWxsL2Zsb2F0Mi5jIFwKK2xpYmZmaS5jYWxsL2Nsc19kYmxzX3N0cnVjdC5jIGxpYmZmaS5jYWxsL2Nsc19zaW50LmMgXAorbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UuYyBsaWJmZmkuY2FsbC9jbHNfdWxvbmdsb25nLmMgXAorbGliZmZpLmNhbGwvY2xzX3VzaG9ydC5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxLmMgXAorbGliZmZpLmNhbGwvZXJyX2JhZF9hYmkuYyBsaWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jIFwKK2xpYmZmaS5jYWxsL2Nsc19mbG9hdC5jIGxpYmZmaS5jYWxsL2Nsc19wb2ludGVyX3N0YWNrLmMgXAorbGliZmZpLmNhbGwvcHlvYmpjLXRjLmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3VzaG9ydGNoYXIuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3QxLmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDkuYyBcCitsaWJmZmkuY2FsbC9odWdlX3N0cnVjdC5jIGxpYmZmaS5jYWxsL3Byb2JsZW0xLmMgbGliZmZpLmNhbGwvZmxvYXQ0LmMgXAorbGliZmZpLmNhbGwvZmFzdHRoaXMzX3dpbjMyLmMgbGliZmZpLmNhbGwvcmV0dXJuX2xkbC5jIFwKK2xpYmZmaS5jYWxsL3N0cmxlbjJfd2luMzIuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuNS5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDJfd2luMzIuYyBsaWJmZmkuY2FsbC9zdHJ1Y3Q2LmMgXAorbGliZmZpLmNhbGwvcmV0dXJuX2xsLmMgbGliZmZpLmNhbGwvc3RydWN0OS5jIGxpYmZmaS5jYWxsL3JldHVybl9zYy5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDcuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDY0LmMgXAorbGliZmZpLmNhbGwvY2xzXzRieXRlLmMgbGliZmZpLmNhbGwvc3RybGVuX3dpbjMyLmMgXAorbGliZmZpLmNhbGwvY2xzXzZfMV9ieXRlLmMgbGliZmZpLmNhbGwvY2xzXzdfMV9ieXRlLmMgXAorbGliZmZpLnNwZWNpYWwvdW53aW5kdGVzdC5jYyBsaWJmZmkuc3BlY2lhbC9zcGVjaWFsLmV4cCBcCitsaWJmZmkuc3BlY2lhbC91bndpbmR0ZXN0X2ZmaV9jYWxsLmNjIGxpYmZmaS5zcGVjaWFsL2ZmaXRlc3RjeHguaCBcCitsaWIvd3JhcHBlci5leHAgbGliL3RhcmdldC1saWJwYXRoLmV4cCBsaWIvbGliZmZpLmV4cAogCiBhbGw6IGFsbC1hbQogCkBAIC0yOTgsNyArMzA4LDcgQEAKIAogCiBjaGVjay1ERUpBR05VOiBzaXRlLmV4cAotCXNyY2Rpcj1gJChhbV9fY2QpICQoc3JjZGlyKSAmJiBwd2RgOyBleHBvcnQgc3JjZGlyOyBcCisJc3JjZGlyPSckKHNyY2RpciknOyBleHBvcnQgc3JjZGlyOyBcCiAJRVhQRUNUPSQoRVhQRUNUKTsgZXhwb3J0IEVYUEVDVDsgXAogCXJ1bnRlc3Q9JChSVU5URVNUKTsgXAogCWlmICQoU0hFTEwpIC1jICIkJHJ1bnRlc3QgLS12ZXJzaW9uIiA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKQEAgLTMwOSwxMiArMzE5LDEyIEBACiAJZWxzZSBlY2hvICJXQVJOSU5HOiBjb3VsZCBub3QgZmluZCBcYHJ1bnRlc3QnIiAxPiYyOyA6O1wKIAlmaTsgXAogCWV4aXQgJCRleGl0X3N0YXR1cwotc2l0ZS5leHA6IE1ha2VmaWxlCitzaXRlLmV4cDogTWFrZWZpbGUgJChFWFRSQV9ERUpBR05VX1NJVEVfQ09ORklHKQogCUBlY2hvICdNYWtpbmcgYSBuZXcgc2l0ZS5leHAgZmlsZS4uLicKIAlAZWNobyAnIyMgdGhlc2UgdmFyaWFibGVzIGFyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBtYWtlICMjJyA+c2l0ZS50bXAKIAlAZWNobyAnIyBEbyBub3QgZWRpdCBoZXJlLiAgSWYgeW91IHdpc2ggdG8gb3ZlcnJpZGUgdGhlc2UgdmFsdWVzJyA+PnNpdGUudG1wCiAJQGVjaG8gJyMgZWRpdCB0aGUgbGFzdCBzZWN0aW9uJyA+PnNpdGUudG1wCi0JQGVjaG8gJ3NldCBzcmNkaXIgJChzcmNkaXIpJyA+PnNpdGUudG1wCisJQGVjaG8gJ3NldCBzcmNkaXIgIiQoc3JjZGlyKSInID4+c2l0ZS50bXAKIAlAZWNobyAic2V0IG9iamRpciBgcHdkYCIgPj5zaXRlLnRtcAogCUBlY2hvICdzZXQgYnVpbGRfYWxpYXMgIiQoYnVpbGRfYWxpYXMpIicgPj5zaXRlLnRtcAogCUBlY2hvICdzZXQgYnVpbGRfdHJpcGxldCAkKGJ1aWxkX3RyaXBsZXQpJyA+PnNpdGUudG1wCkBAIC0zMjIsOSArMzMyLDE2IEBACiAJQGVjaG8gJ3NldCBob3N0X3RyaXBsZXQgJChob3N0X3RyaXBsZXQpJyA+PnNpdGUudG1wCiAJQGVjaG8gJ3NldCB0YXJnZXRfYWxpYXMgIiQodGFyZ2V0X2FsaWFzKSInID4+c2l0ZS50bXAKIAlAZWNobyAnc2V0IHRhcmdldF90cmlwbGV0ICQodGFyZ2V0X3RyaXBsZXQpJyA+PnNpdGUudG1wCi0JQGVjaG8gJyMjIEFsbCB2YXJpYWJsZXMgYWJvdmUgYXJlIGdlbmVyYXRlZCBieSBjb25maWd1cmUuIERvIE5vdCBFZGl0ICMjJyA+PnNpdGUudG1wCi0JQHRlc3QgISAtZiBzaXRlLmV4cCB8fCBcCi0JICBzZWQgJzEsL14jIyBBbGwgdmFyaWFibGVzIGFib3ZlIGFyZS4qIyMvIGQnIHNpdGUuZXhwID4+IHNpdGUudG1wCisJQGxpc3Q9JyQoRVhUUkFfREVKQUdOVV9TSVRFX0NPTkZJRyknOyBmb3IgZiBpbiAkJGxpc3Q7IGRvIFwKKwkgIGVjaG8gIiMjIEJlZ2luIGNvbnRlbnQgaW5jbHVkZWQgZnJvbSBmaWxlICQkZi4gIERvIG5vdCBtb2RpZnkuICMjIiBcCisJICAgJiYgY2F0IGB0ZXN0IC1mICIkJGYiIHx8IGVjaG8gJyQoc3JjZGlyKS8nYCQkZiBcCisJICAgJiYgZWNobyAiIyMgRW5kIGNvbnRlbnQgaW5jbHVkZWQgZnJvbSBmaWxlICQkZi4gIyMiIFwKKwkgICB8fCBleGl0IDE7IFwKKwkgZG9uZSA+PiBzaXRlLnRtcAorCUBlY2hvICIjIyBFbmQgb2YgYXV0by1nZW5lcmF0ZWQgY29udGVudDsgeW91IGNhbiBlZGl0IGZyb20gaGVyZS4gIyMiID4+IHNpdGUudG1wCisJQGlmIHRlc3QgLWYgc2l0ZS5leHA7IHRoZW4gXAorCSAgIHNlZCAtZSAnMSwvXiMjIEVuZCBvZiBhdXRvLWdlbmVyYXRlZCBjb250ZW50LiojIy9kJyBzaXRlLmV4cCA+PiBzaXRlLnRtcDsgXAorCSBmaQogCUAtcm0gLWYgc2l0ZS5iYWsKIAlAdGVzdCAhIC1mIHNpdGUuZXhwIHx8IG12IHNpdGUuZXhwIHNpdGUuYmFrCiAJQG12IHNpdGUudG1wIHNpdGUuZXhwCkBAIC0zODAsMTAgKzM5NywxNSBAQAogCiBpbnN0YWxsY2hlY2s6IGluc3RhbGxjaGVjay1hbQogaW5zdGFsbC1zdHJpcDoKLQkkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAotCSAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCi0JICBgdGVzdCAteiAnJChTVFJJUCknIHx8IFwKLQkgICAgZWNobyAiSU5TVEFMTF9QUk9HUkFNX0VOVj1TVFJJUFBST0c9JyQoU1RSSVApJyJgIGluc3RhbGwKKwlpZiB0ZXN0IC16ICckKFNUUklQKSc7IHRoZW4gXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICAgaW5zdGFsbDsgXAorCWVsc2UgXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICJJTlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknIiBpbnN0YWxsOyBcCisJZmkKIG1vc3RseWNsZWFuLWdlbmVyaWM6CiAKIGNsZWFuLWdlbmVyaWM6CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWIvbGliZmZpLWRnLmV4cCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYi9saWJmZmkuZXhwCnNpbWlsYXJpdHkgaW5kZXggODIlCnJlbmFtZSBmcm9tIE1vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYi9saWJmZmktZGcuZXhwCnJlbmFtZSB0byBNb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWIvbGliZmZpLmV4cAppbmRleCA4MzhhMzA2Li40YTY1ZWQxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWIvbGliZmZpLWRnLmV4cAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWIvbGliZmZpLmV4cApAQCAtMSw0ICsxLDQgQEAKLSMgICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0xMSw4ICsxMSw4IEBACiAjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAjCiAjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisjIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAogcHJvYyBsb2FkX2djY19saWIgeyBmaWxlbmFtZSB9IHsKICAgICBnbG9iYWwgc3JjZGlyCkBAIC0xMDEsNyArMTAxLDcgQEAKICAgICBnbG9iYWwgdG9vbF9yb290X2RpcgogICAgIGdsb2JhbCBsZF9saWJyYXJ5X3BhdGgKIAotICAgIHNldCBibGRkaXJmZmkgW3B3ZF0vLi4KKyAgICBzZXQgYmxkZGlyZmZpIFtwd2RdLy4uIAogICAgIHZlcmJvc2UgImxpYmZmaSAkYmxkZGlyZmZpIgogCiAgICAgc2V0IGdjY2RpciBbbG9va2Zvcl9maWxlICR0b29sX3Jvb3RfZGlyIGdjYy9saWJnY2MuYV0KQEAgLTI2Niw2ICsyNjYsNTYgQEAKICAgICB9CiB9CiAKK3Byb2MgY2hlY2stZmxhZ3MgeyBhcmdzIH0geworCisgICAgIyBUaGUgYXJncyBhcmUgd2l0aGluIGFub3RoZXIgbGlzdDsgcHVsbCB0aGVtIG91dC4KKyAgICBzZXQgYXJncyBbbGluZGV4ICRhcmdzIDBdCisKKyAgICAjIFRoZSBuZXh0IHR3byBhcmd1bWVudHMgYXJlIG9wdGlvbmFsLiAgSWYgdGhleSB3ZXJlIG5vdCBzcGVjaWZpZWQsCisgICAgIyB1c2UgdGhlIGRlZmF1bHRzLgorICAgIGlmIHsgW2xsZW5ndGggJGFyZ3NdID09IDIgfSB7CisJbGFwcGVuZCAkYXJncyBbbGlzdCAiKiJdCisgICAgfQorICAgIGlmIHsgW2xsZW5ndGggJGFyZ3NdID09IDMgfSB7CisJbGFwcGVuZCAkYXJncyBbbGlzdCAiIl0KKyAgICB9CisKKyAgICAjIElmIHRoZSBvcHRpb24gc3RyaW5ncyBhcmUgdGhlIGRlZmF1bHRzLCBvciB0aGUgc2FtZSBhcyB0aGUKKyAgICAjIGRlZmF1bHRzLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGwgY2hlY2tfY29uZGl0aW9uYWxfeGZhaWwgdG8KKyAgICAjIGNvbXBhcmUgdGhlbSB0byB0aGUgYWN0dWFsIG9wdGlvbnMuCisgICAgaWYgeyBbc3RyaW5nIGNvbXBhcmUgW2xpbmRleCAkYXJncyAyXSAiKiJdID09IDAKKwkgJiYgW3N0cmluZyBjb21wYXJlIFtsaW5kZXggJGFyZ3MgM10gIiIgXSA9PSAwIH0geworCXNldCByZXN1bHQgMSAgICAKKyAgICB9IGVsc2UgeworCSMgVGhlIHRhcmdldCBsaXN0IG1pZ2h0IGJlIGFuIGVmZmVjdGl2ZS10YXJnZXQga2V5d29yZCwgc28gcmVwbGFjZQorCSMgdGhlIG9yaWdpbmFsIGxpc3Qgd2l0aCAiKi0qLSoiLCBzaW5jZSB3ZSBhbHJlYWR5IGtub3cgaXQgbWF0Y2hlcy4KKwlzZXQgcmVzdWx0IFtjaGVja19jb25kaXRpb25hbF94ZmFpbCBbbHJlcGxhY2UgJGFyZ3MgMSAxICIqLSotKiJdXQorICAgIH0KKworICAgIHJldHVybiAkcmVzdWx0Cit9CisKK3Byb2MgZGctc2tpcC1pZiB7IGFyZ3MgfSB7CisgICAgIyBWZXJpZnkgdGhlIG51bWJlciBvZiBhcmd1bWVudHMuICBUaGUgbGFzdCB0d28gYXJlIG9wdGlvbmFsLgorICAgIHNldCBhcmdzIFtscmVwbGFjZSAkYXJncyAwIDBdCisgICAgaWYgeyBbbGxlbmd0aCAkYXJnc10gPCAyIHx8IFtsbGVuZ3RoICRhcmdzXSA+IDQgfSB7CisgICAgICAgIGVycm9yICJkZy1za2lwLWlmIDI6IG5lZWQgMiwgMywgb3IgNCBhcmd1bWVudHMiCisgICAgfQorCisgICAgIyBEb24ndCBib3RoZXIgaWYgd2UncmUgYWxyZWFkeSBza2lwcGluZyB0aGUgdGVzdC4KKyAgICB1cHZhciBkZy1kby13aGF0IGRnLWRvLXdoYXQKKyAgICBpZiB7IFtsaW5kZXggJHtkZy1kby13aGF0fSAxXSA9PSAiTiIgfSB7CisgICAgICByZXR1cm4KKyAgICB9CisKKyAgICBzZXQgc2VsZWN0b3IgW2xpc3QgdGFyZ2V0IFtsaW5kZXggJGFyZ3MgMV1dCisgICAgaWYgeyBbZGctcHJvY2Vzcy10YXJnZXQgJHNlbGVjdG9yXSA9PSAiUyIgfSB7CisgICAgICAgIGlmIFtjaGVjay1mbGFncyAkYXJnc10geworICAgICAgICAgICAgdXB2YXIgZGctZG8td2hhdCBkZy1kby13aGF0CisgICAgICAgICAgICBzZXQgZGctZG8td2hhdCBbbGlzdCBbbGluZGV4ICR7ZGctZG8td2hhdH0gMF0gIk4iICJQIl0KKyAgICAgICAgfQorICAgIH0KK30KIAogIyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGFkZGl0aW9uYWxfZmlsZXMgYW5kIGFkZGl0aW9uYWxfc291cmNlcwogIyBhcmUgYm90aCBjbGVhcmVkIG91dCBhZnRlciBldmVyeSB0ZXN0LiAgSXQgaXMgbm90IGVub3VnaCB0byBjbGVhcgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliL3RhcmdldC1saWJwYXRoLmV4cCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYi90YXJnZXQtbGlicGF0aC5leHAKaW5kZXggODk5OWFhNC4uNmI3YmViYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliL3RhcmdldC1saWJwYXRoLmV4cAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LWxpYnBhdGguZXhwCkBAIC0yNSw3ICsyNSw3IEBACiBzZXQgb3JpZ19sZF9saWJyYXJ5X3BhdGhfMzJfc2F2ZWQgMAogc2V0IG9yaWdfbGRfbGlicmFyeV9wYXRoXzY0X3NhdmVkIDAKIHNldCBvcmlnX2R5bGRfbGlicmFyeV9wYXRoX3NhdmVkIDAKLQorc2V0IG9yaWdfcGF0aF9zYXZlZCAwCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBwcm9jIHNldF9sZF9saWJyYXJ5X3BhdGhfZW52X3ZhcnMgeyB9CkBAIC00Miw2ICs0Miw3IEBACiAgIGdsb2JhbCBvcmlnX2xkX2xpYnJhcnlfcGF0aF8zMl9zYXZlZAogICBnbG9iYWwgb3JpZ19sZF9saWJyYXJ5X3BhdGhfNjRfc2F2ZWQKICAgZ2xvYmFsIG9yaWdfZHlsZF9saWJyYXJ5X3BhdGhfc2F2ZWQKKyAgZ2xvYmFsIG9yaWdfcGF0aF9zYXZlZAogICBnbG9iYWwgb3JpZ19sZF9saWJyYXJ5X3BhdGgKICAgZ2xvYmFsIG9yaWdfbGRfcnVuX3BhdGgKICAgZ2xvYmFsIG9yaWdfc2hsaWJfcGF0aApAQCAtNTAsNiArNTEsNyBAQAogICBnbG9iYWwgb3JpZ19sZF9saWJyYXJ5X3BhdGhfMzIKICAgZ2xvYmFsIG9yaWdfbGRfbGlicmFyeV9wYXRoXzY0CiAgIGdsb2JhbCBvcmlnX2R5bGRfbGlicmFyeV9wYXRoCisgIGdsb2JhbCBvcmlnX3BhdGgKICAgZ2xvYmFsIEdDQ19FWEVDX1BSRUZJWAogCiAgICMgU2V0IHRoZSByZWxvY2F0ZWQgY29tcGlsZXIgcHJlZml4LCBidXQgb25seSBpZiB0aGUgdXNlciBoYXNuJ3Qgc3BlY2lmaWVkIG9uZS4KQEAgLTEwMCw2ICsxMDIsMTAgQEAKICAgICAgIHNldCBvcmlnX2R5bGRfbGlicmFyeV9wYXRoICIkZW52KERZTERfTElCUkFSWV9QQVRIKSIKICAgICAgIHNldCBvcmlnX2R5bGRfbGlicmFyeV9wYXRoX3NhdmVkIDEKICAgICB9CisgICAgaWYgW2luZm8gZXhpc3RzIGVudihQQVRIKV0geworICAgICAgc2V0IG9yaWdfcGF0aCAiJGVudihQQVRIKSIKKyAgICAgIHNldCBvcmlnX3BhdGhfc2F2ZWQgMQorICAgIH0KICAgfQogCiAgICMgV2UgbmVlZCB0byBzZXQgbGQgbGlicmFyeSBwYXRoIGluIHRoZSBlbnZpcm9ubWVudC4gIEN1cnJlbnRseSwKQEAgLTE2OSw2ICsxNzUsMTMgQEAKICAgfSBlbHNlIHsKICAgICBzZXRlbnYgRFlMRF9MSUJSQVJZX1BBVEggIiRsZF9saWJyYXJ5X3BhdGgiCiAgIH0KKyAgaWYgeyBbaXN0YXJnZXQgKi0qLWN5Z3dpbipdIHx8IFtpc3RhcmdldCAqLSotbWluZ3cqXSB9IHsKKyAgICBpZiB7ICRvcmlnX3BhdGhfc2F2ZWQgfSB7CisgICAgICBzZXRlbnYgUEFUSCAiJGxkX2xpYnJhcnlfcGF0aDokb3JpZ19wYXRoIgorICAgIH0gZWxzZSB7CisgICAgICBzZXRlbnYgUEFUSCAiJGxkX2xpYnJhcnlfcGF0aCIKKyAgICB9CisgIH0KIAogICB2ZXJib3NlIC1sb2cgInNldF9sZF9saWJyYXJ5X3BhdGhfZW52X3ZhcnM6IGxkX2xpYnJhcnlfcGF0aD0kbGRfbGlicmFyeV9wYXRoIgogfQpAQCAtMTg3LDYgKzIwMCw3IEBACiAgIGdsb2JhbCBvcmlnX2xkX2xpYnJhcnlfcGF0aF8zMl9zYXZlZAogICBnbG9iYWwgb3JpZ19sZF9saWJyYXJ5X3BhdGhfNjRfc2F2ZWQKICAgZ2xvYmFsIG9yaWdfZHlsZF9saWJyYXJ5X3BhdGhfc2F2ZWQKKyAgZ2xvYmFsIG9yaWdfcGF0aF9zYXZlZAogICBnbG9iYWwgb3JpZ19sZF9saWJyYXJ5X3BhdGgKICAgZ2xvYmFsIG9yaWdfbGRfcnVuX3BhdGgKICAgZ2xvYmFsIG9yaWdfc2hsaWJfcGF0aApAQCAtMTk1LDYgKzIwOSw3IEBACiAgIGdsb2JhbCBvcmlnX2xkX2xpYnJhcnlfcGF0aF8zMgogICBnbG9iYWwgb3JpZ19sZF9saWJyYXJ5X3BhdGhfNjQKICAgZ2xvYmFsIG9yaWdfZHlsZF9saWJyYXJ5X3BhdGgKKyAgZ2xvYmFsIG9yaWdfcGF0aAogCiAgIGlmIHsgJG9yaWdfZW52aXJvbm1lbnRfc2F2ZWQgPT0gMCB9IHsKICAgICByZXR1cm4KQEAgLTI0MCw2ICsyNTUsMTEgQEAKICAgfSBlbHNlaWYgW2luZm8gZXhpc3RzIGVudihEWUxEX0xJQlJBUllfUEFUSCldIHsKICAgICB1bnNldGVudiBEWUxEX0xJQlJBUllfUEFUSAogICB9CisgIGlmIHsgJG9yaWdfcGF0aF9zYXZlZCB9IHsKKyAgICBzZXRlbnYgUEFUSCAiJG9yaWdfcGF0aCIKKyAgfSBlbHNlaWYgW2luZm8gZXhpc3RzIGVudihQQVRIKV0geworICAgIHVuc2V0ZW52IFBBVEgKKyAgfQogfQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Eub3V0IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvYS5vdXQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTNlZTg1YgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Eub3V0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2NhbGwuZXhwIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2FsbC5leHAKaW5kZXggMWU5OTg1ZS4uMjZhY2Q4MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2FsbC5leHAKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2FsbC5leHAKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0xNCwxMCArMTQsNiBAQAogIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQogIyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKLSMgbGliZmZpIHRlc3RzdWl0ZSB0aGF0IHVzZXMgdGhlICdkZy5leHAnIGRyaXZlci4KLQotbG9hZF9saWIgbGliZmZpLWRnLmV4cAotCiBkZy1pbml0CiBsaWJmZmktaW5pdAogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbG9zdXJlX3N0ZGNhbGwuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfc3RkY2FsbC5jCmluZGV4IDZiZmNjMWYuLjE0MDdmMDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfc3RkY2FsbC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfc3RkY2FsbC5jCkBAIC00OSw5ICs0OSwxNyBAQAogICBDSEVDSyhmZmlfcHJlcF9jbG9zdXJlX2xvYyhwY2wsICZjaWYsIGNsb3N1cmVfdGVzdF9zdGRjYWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKSAzIC8qIHVzZXJkYXRhICovLCBjb2RlKSA9PSBGRklfT0spOwogCisjaWZkZWYgX01TQ19WRVIKKyAgX19hc20geyBtb3Ygc3BfcHJlLCBlc3AgfQorI2Vsc2UKICAgYXNtIHZvbGF0aWxlICgiIG1vdmwgJSVlc3AsJTAiIDogIj1nIiAoc3BfcHJlKSk7CisjZW5kaWYKICAgcmVzID0gKCooY2xvc3VyZV90ZXN0X3R5cGUwKWNvZGUpKDAsIDEsIDIsIDMpOworI2lmZGVmIF9NU0NfVkVSCisgIF9fYXNtIHsgbW92IHNwX3Bvc3QsIGVzcCB9CisjZWxzZQogICBhc20gdm9sYXRpbGUgKCIgbW92bCAlJWVzcCwlMCIgOiAiPWciIChzcF9wb3N0KSk7CisjZW5kaWYKICAgLyogeyBkZy1vdXRwdXQgIjAgMSAyIDM6IDkiIH0gKi8KIAogICBwcmludGYoInJlczogJWRcbiIscmVzKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfdGhpc2NhbGwuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfdGhpc2NhbGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjkzNjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV90aGlzY2FsbC5jCkBAIC0wLDAgKzEsNzIgQEAKKy8qIEFyZWE6CWNsb3N1cmVfY2FsbCAodGhpc2NhbGwgY29udmVudGlvbikKKyAgIFB1cnBvc2U6CUNoZWNrIGhhbmRsaW5nIHdoZW4gY2FsbGVyIGV4cGVjdHMgdGhpc2NhbGwgY2FsbGVlCisgICBMaW1pdGF0aW9uczoJbm9uZS4KKyAgIFBSOgkJbm9uZS4KKyAgIE9yaWdpbmF0b3I6CTxrdGlldHpAcmVkaGF0LmNvbT4gKi8KKworLyogeyBkZy1kbyBydW4geyB0YXJnZXQgaT84Ni0qLWN5Z3dpbiogaT84Ni0qLW1pbmd3KiB9IH0gKi8KKyNpbmNsdWRlICJmZml0ZXN0LmgiCisKK3N0YXRpYyB2b2lkCitjbG9zdXJlX3Rlc3RfdGhpc2NhbGwoZmZpX2NpZiogY2lmIF9fVU5VU0VEX18sIHZvaWQqIHJlc3AsIHZvaWQqKiBhcmdzLAorCQkgICAgICB2b2lkKiB1c2VyZGF0YSkKK3sKKyAgKihmZmlfYXJnKilyZXNwID0KKyAgICAoaW50KSooaW50ICopYXJnc1swXSArIChpbnQpKCooaW50ICopYXJnc1sxXSkKKyAgICArIChpbnQpKCooaW50ICopYXJnc1syXSkgICsgKGludCkoKihpbnQgKilhcmdzWzNdKQorICAgICsgKGludCkoaW50cHRyX3QpdXNlcmRhdGE7CisKKyAgcHJpbnRmKCIlZCAlZCAlZCAlZDogJWRcbiIsCisJIChpbnQpKihpbnQgKilhcmdzWzBdLCAoaW50KSgqKGludCAqKWFyZ3NbMV0pLAorCSAoaW50KSgqKGludCAqKWFyZ3NbMl0pLCAoaW50KSgqKGludCAqKWFyZ3NbM10pLAorICAgICAgICAgKGludCkqKGZmaV9hcmcgKilyZXNwKTsKKworfQorCit0eXBlZGVmIGludCAoX190aGlzY2FsbCAqY2xvc3VyZV90ZXN0X3R5cGUwKShpbnQsIGludCwgaW50LCBpbnQpOworCitpbnQgbWFpbiAodm9pZCkKK3sKKyAgZmZpX2NpZiBjaWY7CisgIHZvaWQgKmNvZGU7CisgIGZmaV9jbG9zdXJlICpwY2wgPSBmZmlfY2xvc3VyZV9hbGxvYyhzaXplb2YoZmZpX2Nsb3N1cmUpLCAmY29kZSk7CisgIGZmaV90eXBlICogY2xfYXJnX3R5cGVzWzE3XTsKKyAgaW50IHJlczsKKyAgdm9pZCogc3BfcHJlOworICB2b2lkKiBzcF9wb3N0OworICBjaGFyIGJ1ZlsxMDI0XTsKKworICBjbF9hcmdfdHlwZXNbMF0gPSAmZmZpX3R5cGVfdWludDsKKyAgY2xfYXJnX3R5cGVzWzFdID0gJmZmaV90eXBlX3VpbnQ7CisgIGNsX2FyZ190eXBlc1syXSA9ICZmZmlfdHlwZV91aW50OworICBjbF9hcmdfdHlwZXNbM10gPSAmZmZpX3R5cGVfdWludDsKKyAgY2xfYXJnX3R5cGVzWzRdID0gTlVMTDsKKworICAvKiBJbml0aWFsaXplIHRoZSBjaWYgKi8KKyAgQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9USElTQ0FMTCwgNCwKKwkJICAgICAmZmZpX3R5cGVfc2ludCwgY2xfYXJnX3R5cGVzKSA9PSBGRklfT0spOworCisgIENIRUNLKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKHBjbCwgJmNpZiwgY2xvc3VyZV90ZXN0X3RoaXNjYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKSAzIC8qIHVzZXJkYXRhICovLCBjb2RlKSA9PSBGRklfT0spOworCisjaWZkZWYgX01TQ19WRVIKKyAgX19hc20geyBtb3Ygc3BfcHJlLCBlc3AgfQorI2Vsc2UKKyAgYXNtIHZvbGF0aWxlICgiIG1vdmwgJSVlc3AsJTAiIDogIj1nIiAoc3BfcHJlKSk7CisjZW5kaWYKKyAgcmVzID0gKCooY2xvc3VyZV90ZXN0X3R5cGUwKWNvZGUpKDAsIDEsIDIsIDMpOworI2lmZGVmIF9NU0NfVkVSCisgIF9fYXNtIHsgbW92IHNwX3Bvc3QsIGVzcCB9CisjZWxzZQorICBhc20gdm9sYXRpbGUgKCIgbW92bCAlJWVzcCwlMCIgOiAiPWciIChzcF9wb3N0KSk7CisjZW5kaWYKKyAgLyogeyBkZy1vdXRwdXQgIjAgMSAyIDM6IDkiIH0gKi8KKworICBwcmludGYoInJlczogJWRcbiIscmVzKTsKKyAgLyogeyBkZy1vdXRwdXQgIlxucmVzOiA5IiB9ICovCisKKyAgc3ByaW50ZihidWYsICJtaXNtYXRjaDogcHJlPSVwIHZzIHBvc3Q9JXAiLCBzcF9wcmUsIHNwX3Bvc3QpOworICBwcmludGYoInN0YWNrIHBvaW50ZXIgJXNcbiIsIChzcF9wcmUgPT0gc3BfcG9zdCA/ICJtYXRjaCIgOiBidWYpKTsKKyAgLyogeyBkZy1vdXRwdXQgIlxuc3RhY2sgcG9pbnRlciBtYXRjaCIgfSAqLworICBleGl0KDApOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzEyYnl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzEyYnl0ZS5jCmluZGV4IGYwYTMzNGYuLmVhMDgyNWQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xMmJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTJieXRlLmMKQEAgLTQ5LDE1ICs0OSwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzEyYnl0ZSBoX2RibCA9IHsgNywgNCwgOSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xMmJ5dGUgal9kYmwgPSB7IDEsIDUsIDMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTJieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzEyYnl0ZSBoX2RibCA9IHsgNywgNCwgOSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xMmJ5dGUgal9kYmwgPSB7IDEsIDUsIDMgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTJieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfc2ludDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfc2ludDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfc2ludDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xNmJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xNmJ5dGUuYwppbmRleCA5YjkyOTJhLi44OWEwOGEyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTZieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE2Ynl0ZS5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUgaF9kYmwgPSB7IDcsIDguMCwgOSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUgal9kYmwgPSB7IDEsIDkuMCwgMyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlIGhfZGJsID0geyA3LCA4LjAsIDkgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlIGpfZGJsID0geyAxLCA5LjAsIDMgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfc2ludDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9zaW50OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE4Ynl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE4Ynl0ZS5jCmluZGV4IDQwYzhjNmQuLjlmNzVkYTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xOGJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMThieXRlLmMKQEAgLTU0LDE1ICs1NCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzNdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzE4Ynl0ZSBnX2RibCA9IHsgMS4wLCAxMjcsIDEyNiwgMy4wIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzE4Ynl0ZSBmX2RibCA9IHsgNC4wLCAxMjUsIDEyNCwgNS4wIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzE4Ynl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xOGJ5dGUgZ19kYmwgPSB7IDEuMCwgMTI3LCAxMjYsIDMuMCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xOGJ5dGUgZl9kYmwgPSB7IDQuMCwgMTI1LCAxMjQsIDUuMCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xOGJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xOWJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xOWJ5dGUuYwppbmRleCBhYTY0MjQ4Li4yNzg3OTRiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTlieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE5Ynl0ZS5jCkBAIC01NywxNSArNTcsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8xOWJ5dGUgZ19kYmwgPSB7IDEuMCwgMTI3LCAxMjYsIDMuMCwgMTIwIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzE5Ynl0ZSBmX2RibCA9IHsgNC4wLCAxMjUsIDEyNCwgNS4wLCAxMTkgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTlieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzE5Ynl0ZSBnX2RibCA9IHsgMS4wLCAxMjcsIDEyNiwgMy4wLCAxMjAgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTlieXRlIGZfZGJsID0geyA0LjAsIDEyNSwgMTI0LCA1LjAsIDExOSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xOWJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xXzFieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMV8xYnl0ZS5jCmluZGV4IGI5NDAyZDYuLjgyNDkyYzAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xXzFieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzFfMWJ5dGUuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMV8xYnl0ZSBnX2RibCA9IHsgMTIgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMV8xYnl0ZSBmX2RibCA9IHsgMTc4IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzFfMWJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMV8xYnl0ZSBnX2RibCA9IHsgMTIgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMV8xYnl0ZSBmX2RibCA9IHsgMTc4IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzFfMWJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSBOVUxMOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjBieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjBieXRlLmMKaW5kZXggODBkZDdhYy4uM2Y4YmIyOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzIwYnl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yMGJ5dGUuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMjBieXRlIGdfZGJsID0geyAxLjAsIDIuMCwgMyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8yMGJ5dGUgZl9kYmwgPSB7IDQuMCwgNS4wLCA3IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF8yMGJ5dGUgZ19kYmwgPSB7IDEuMCwgMi4wLCAzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSBmX2RibCA9IHsgNC4wLCA1LjAsIDcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMjBieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3NpbnQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjBieXRlMS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzIwYnl0ZTEuYwppbmRleCA1MGJjYmJmLi42NTYyNzI3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjBieXRlMS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yMGJ5dGUxLmMKQEAgLTUyLDE1ICs1MiwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzNdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSBnX2RibCA9IHsgMSwgMi4wLCAzLjAgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMjBieXRlIGZfZGJsID0geyA0LCA1LjAsIDcuMCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8yMGJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMjBieXRlIGdfZGJsID0geyAxLCAyLjAsIDMuMCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8yMGJ5dGUgZl9kYmwgPSB7IDQsIDUuMCwgNy4wIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3NpbnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfZG91YmxlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzI0Ynl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzI0Ynl0ZS5jCmluZGV4IDQ2YTZlYjQuLjFkODJmNmUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yNGJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjRieXRlLmMKQEAgLTYxLDE3ICs2MSwxNyBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCi0gIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKLSAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7Ci0gIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwotICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKLQogICBzdHJ1Y3QgY2xzX3N0cnVjdF8yNGJ5dGUgZV9kYmwgPSB7IDkuMCwgMi4wLCA2LCA1LjAgfTsKICAgc3RydWN0IGNsc19zdHJ1Y3RfMjRieXRlIGZfZGJsID0geyAxLjAsIDIuMCwgMywgNy4wIH07CiAgIHN0cnVjdCBjbHNfc3RydWN0XzI0Ynl0ZSBnX2RibCA9IHsgNC4wLCA1LjAsIDcsIDkuMCB9OwogICBzdHJ1Y3QgY2xzX3N0cnVjdF8yNGJ5dGUgaF9kYmwgPSB7IDguMCwgNi4wLCAxLCA0LjAgfTsKICAgc3RydWN0IGNsc19zdHJ1Y3RfMjRieXRlIHJlc19kYmw7CiAKKyAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOworICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKKyAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CisgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOworCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9zaW50OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzJieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMmJ5dGUuYwppbmRleCAxMDFlMTMwLi44MWJiMGE2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMmJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMmJ5dGUuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMmJ5dGUgZ19kYmwgPSB7IDEyLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMmJ5dGUgZl9kYmwgPSB7IDEsIDEzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzJieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzJieXRlIGdfZGJsID0geyAxMiwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzJieXRlIGZfZGJsID0geyAxLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8yYnl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNfMWJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zXzFieXRlLmMKaW5kZXggZmM3ODBjMy4uYjc4Mjc0NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNfMWJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM18xYnl0ZS5jCkBAIC01NCwxNSArNTQsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8zXzFieXRlIGdfZGJsID0geyAxMiwgMTMsIDE0IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzNfMWJ5dGUgZl9kYmwgPSB7IDE3OCwgMTc5LCAxODAgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfM18xYnl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF8zXzFieXRlIGdfZGJsID0geyAxMiwgMTMsIDE0IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzNfMWJ5dGUgZl9kYmwgPSB7IDE3OCwgMTc5LCAxODAgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfM18xYnl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM2J5dGUxLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM2J5dGUxLmMKaW5kZXggNTcwNWNlMy4uYTAyYzQ2MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNieXRlMS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTEuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfM2J5dGUgZ19kYmwgPSB7IDEyLCAxMTkgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfM2J5dGUgZl9kYmwgPSB7IDEsIDE1IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlIGdfZGJsID0geyAxMiwgMTE5IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlIGZfZGJsID0geyAxLCAxNSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8zYnl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTIuYwppbmRleCAwMTc3MGEwLi5jNzI1MWNlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM2J5dGUyLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNieXRlMi5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8zYnl0ZV8xIGdfZGJsID0geyAxNSwgMTI1IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlXzEgZl9kYmwgPSB7IDksIDE5IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlXzEgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfM2J5dGVfMSBnX2RibCA9IHsgMTUsIDEyNSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8zYnl0ZV8xIGZfZGJsID0geyA5LCAxOSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8zYnl0ZV8xIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzRfMWJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc180XzFieXRlLmMKaW5kZXggZjM4MDZkNy4uMmQ2ZDhiNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzRfMWJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNF8xYnl0ZS5jCkBAIC01NiwxNSArNTYsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF80XzFieXRlIGdfZGJsID0geyAxMiwgMTMsIDE0LCAxNSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF80XzFieXRlIGZfZGJsID0geyAxNzgsIDE3OSwgMTgwLCAxODEgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNF8xYnl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF80XzFieXRlIGdfZGJsID0geyAxMiwgMTMsIDE0LCAxNSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF80XzFieXRlIGZfZGJsID0geyAxNzgsIDE3OSwgMTgwLCAxODEgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNF8xYnl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNGJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc180Ynl0ZS5jCmluZGV4IGExYWJhM2MuLjRhYzM3ODcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc180Ynl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc180Ynl0ZS5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF80Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNGJ5dGUgZl9kYmwgPSB7IDEyLCAxMjggfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNGJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNGJ5dGUgZ19kYmwgPSB7IDEyNywgMTIwIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzRieXRlIGZfZGJsID0geyAxMiwgMTI4IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzRieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdXNob3J0OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc181XzFfYnl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVfMV9ieXRlLmMKaW5kZXggMmNlYmEzZC4uYWQ5ZDUxYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVfMV9ieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVfMV9ieXRlLmMKQEAgLTU4LDE1ICs1OCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIGdfZGJsID0geyAxMjcsIDEyMCwgMSwgMywgNCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCwgOSwgMywgNCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0ZSByZXNfZGJsID0geyAwLCAwLCAwLCAwLCAwIH07CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIGdfZGJsID0geyAxMjcsIDEyMCwgMSwgMywgNCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCwgOSwgMywgNCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0ZSByZXNfZGJsID0geyAwLCAwLCAwLCAwLCAwIH07Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc181Ynl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVieXRlLmMKaW5kZXggNjFkNTk1Yy4uNGUwYzAwMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVieXRlLmMKQEAgLTUzLDE1ICs1MywxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIGdfZGJsID0geyAxMjcsIDEyMCwgMSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCwgOSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0ZSByZXNfZGJsID0geyAwLCAwLCAwIH07CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIGdfZGJsID0geyAxMjcsIDEyMCwgMSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCwgOSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0ZSByZXNfZGJsID0geyAwLCAwLCAwIH07Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdXNob3J0OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzY0Ynl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzY0Ynl0ZS5jCmluZGV4IDU3NmViZTAuLmE1NWVkYzIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182NGJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNjRieXRlLmMKQEAgLTY2LDE3ICs2NiwxNyBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCi0gIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKLSAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7Ci0gIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwotICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKLQogICBzdHJ1Y3QgY2xzX3N0cnVjdF82NGJ5dGUgZV9kYmwgPSB7IDkuMCwgMi4wLCA2LjAsIDUuMCwgMy4wLCA0LjAsIDguMCwgMS4wIH07CiAgIHN0cnVjdCBjbHNfc3RydWN0XzY0Ynl0ZSBmX2RibCA9IHsgMS4wLCAyLjAsIDMuMCwgNy4wLCAyLjAsIDUuMCwgNi4wLCA3LjAgfTsKICAgc3RydWN0IGNsc19zdHJ1Y3RfNjRieXRlIGdfZGJsID0geyA0LjAsIDUuMCwgNy4wLCA5LjAsIDEuMCwgMS4wLCAyLjAsIDkuMCB9OwogICBzdHJ1Y3QgY2xzX3N0cnVjdF82NGJ5dGUgaF9kYmwgPSB7IDguMCwgNi4wLCAxLjAsIDQuMCwgMC4wLCAzLjAsIDMuMCwgMS4wIH07CiAgIHN0cnVjdCBjbHNfc3RydWN0XzY0Ynl0ZSByZXNfZGJsOwogCisgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKKyAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CisgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOworICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKKwogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfZG91YmxlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzZfMV9ieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNl8xX2J5dGUuYwppbmRleCA5ZjJlZmY2Li5iNGRjZGJhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNl8xX2J5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNl8xX2J5dGUuYwpAQCAtNjAsMTUgKzYwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgZ19kYmwgPSB7IDEyNywgMTIwLCAxLCAzLCA0LCA1IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5LCAzLCA0LCA1IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIHJlc19kYmwgPSB7IDAsIDAsIDAsIDAsIDAsIDAgfTsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgZ19kYmwgPSB7IDEyNywgMTIwLCAxLCAzLCA0LCA1IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5LCAzLCA0LCA1IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIHJlc19kYmwgPSB7IDAsIDAsIDAsIDAsIDAsIDAgfTsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzZieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNmJ5dGUuYwppbmRleCA3MzI1N2IwOTguLjc0MDY3ODAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182Ynl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182Ynl0ZS5jCkBAIC01NiwxNSArNTYsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF82Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEsIDEyOCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF82Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCwgOSwgMTI3IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIGdfZGJsID0geyAxMjcsIDEyMCwgMSwgMTI4IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5LCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfN18xX2J5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183XzFfYnl0ZS5jCmluZGV4IDUwZDA5YzkuLjE0YTdlOTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183XzFfYnl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183XzFfYnl0ZS5jCkBAIC02MiwxNSArNjIsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF83Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEsIDMsIDQsIDUsIDYgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgZl9kYmwgPSB7IDEyLCAxMjgsIDksIDMsIDQsIDUsIDYgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgcmVzX2RibCA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9OworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF83Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEsIDMsIDQsIDUsIDYgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgZl9kYmwgPSB7IDEyLCAxMjgsIDksIDMsIDQsIDUsIDYgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgcmVzX2RibCA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCB9OwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfN2J5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183Ynl0ZS5jCmluZGV4IGY1YzAwMDAuLjE2NDVjYzYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183Ynl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183Ynl0ZS5jCkBAIC01NSwxNSArNTUsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF83Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEsIDI1NCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF83Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCwgOSwgMjU1IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzdieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzdieXRlIGdfZGJsID0geyAxMjcsIDEyMCwgMSwgMjU0IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzdieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5LCAyNTUgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOGJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc184Ynl0ZS5jCmluZGV4IDRhYTk5ZDEuLmY2YzFlYTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc184Ynl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc184Ynl0ZS5jCkBAIC00OSwxNSArNDksMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF84Ynl0ZSBnX2RibCA9IHsgMSwgMi4wIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzhieXRlIGZfZGJsID0geyA0LCA1LjAgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfOGJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfOGJ5dGUgZ19kYmwgPSB7IDEsIDIuMCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF84Ynl0ZSBmX2RibCA9IHsgNCwgNS4wIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzhieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfc2ludDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZmxvYXQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTEuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTEuYwppbmRleCBjYzVlOWQ2Li4wYjg1NzIyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOWJ5dGUxLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzlieXRlMS5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSBoX2RibCA9IHsgNywgOC4wfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgal9kYmwgPSB7IDEsIDkuMH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzlieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzlieXRlIGhfZGJsID0geyA3LCA4LjB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSBqX2RibCA9IHsgMSwgOS4wfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9zaW50OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTIuYwppbmRleCA1YzBiYTBkLi5lZGY5OTFkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOWJ5dGUyLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzlieXRlMi5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSBoX2RibCA9IHsgNy4wLCA4fTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgal9kYmwgPSB7IDEuMCwgOX07CisgIHN0cnVjdCBjbHNfc3RydWN0XzlieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzlieXRlIGhfZGJsID0geyA3LjAsIDh9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSBqX2RibCA9IHsgMS4wLCA5fTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3NpbnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9kb3VibGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9kb3VibGUuYwppbmRleCAyMmI5NGQ1Li5hYWQ1ZjNjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fZG91YmxlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2RvdWJsZS5jCkBAIC01MiwxNSArNTIsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fZmxvYXQuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9mbG9hdC5jCmluZGV4IDYyNjM3ZjIuLjM3ZTA4NTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9mbG9hdC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9mbG9hdC5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2Zsb2F0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZS5jCmluZGV4IGFmMzgwNjAuLmIzMzIyZDggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGUuYwpAQCAtNTEsMTUgKzUxLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9sb25nZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdC5jCmluZGV4IDQyNzRhZjEuLjE1ZjkzNjUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQuYwpAQCAtNiw3ICs2LDcgQEAKIAogLyogeyBkZy1leGNlc3MtZXJyb3JzICJubyBsb25nIGRvdWJsZSBmb3JtYXQiIHsgeGZhaWwgeDg2XzY0LSotbWluZ3cqIHg4Nl82NC0qLWN5Z3dpbiogfSB9ICovCiAvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwotLyogeyBkZy1vcHRpb25zIC1tbG9uZy1kb3VibGUtMTI4IHsgdGFyZ2V0IHBvd2VycGM2NCotKi0qIH0gfSAqLworLyogeyBkZy1vcHRpb25zIC1tbG9uZy1kb3VibGUtMTI4IHsgdGFyZ2V0IHBvd2VycGM2NCotKi1saW51eCogfSB9ICovCiAvKiB7IGRnLW91dHB1dCAiIiB7IHhmYWlsIHg4Nl82NC0qLW1pbmd3KiB4ODZfNjQtKi1jeWd3aW4qIH0gfSAqLwogCiAjaW5jbHVkZSAiZmZpdGVzdC5oIgpAQCAtODcsMTUgKzg3LDE1IEBACiAJZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogCWZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzNdOwogCisJc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEsIDIsIDMsIDQsIDUsIDYsIDcgfTsKKwlzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0IH07CisJc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogCWNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKIAljbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKIAljbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKIAljbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxLCAyLCAzLCA0LCA1LCA2LCA3IH07Ci0Jc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCB9OwotCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KIAljbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9sb25nZG91YmxlOwogCWNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2xvbmdkb3VibGU7CiAJY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfbG9uZ2RvdWJsZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0Mi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQyLmMKaW5kZXggMDg4ZjBkMy4uY2ExYzM1NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQyLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQyLmMKQEAgLTcsNyArNyw3IEBACiAKIC8qIHsgZGctZXhjZXNzLWVycm9ycyAibm8gbG9uZyBkb3VibGUgZm9ybWF0IiB7IHhmYWlsIHg4Nl82NC0qLW1pbmd3KiB4ODZfNjQtKi1jeWd3aW4qIH0gfSAqLwogLyogeyBkZy1kbyBydW4geyB4ZmFpbCBzdHJvbmdhcm0qLSotKiB9IH0gKi8KLS8qIHsgZGctb3B0aW9ucyAtbWxvbmctZG91YmxlLTEyOCB7IHRhcmdldCBwb3dlcnBjNjQqLSotKiB9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAtbWxvbmctZG91YmxlLTEyOCB7IHRhcmdldCBwb3dlcnBjNjQqLSotbGludXgqIH0gfSAqLwogLyogeyBkZy1vdXRwdXQgIiIgeyB4ZmFpbCB4ODZfNjQtKi1taW5ndyogeDg2XzY0LSotY3lnd2luKiB9IH0gKi8KIAogI2luY2x1ZGUgImZmaXRlc3QuaCIKQEAgLTY3LDE1ICs2NywxNSBAQAogCWZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKIAlmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxLCAyLCAzLCA0LCA1LCA2LCA3IH07CisJc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCB9OworCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKIAljbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAJY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAJY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAJY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLQlzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMSwgMiwgMywgNCwgNSwgNiwgNyB9OwotCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQgfTsKLQlzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAJY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfbG9uZ2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9sb25nZG91YmxlOwogCWNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX2xvbmdkb3VibGU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fcG9pbnRlci5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3BvaW50ZXIuYwppbmRleCBjYmM0Zjk1Li44ZmJmMzZhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fcG9pbnRlci5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9wb2ludGVyLmMKQEAgLTU0LDE1ICs1NCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgKHZvaWQgKik0OTUxLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsICh2b2lkICopOTMyMCwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCAodm9pZCAqKTQ5NTEsIDEyNyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgKHZvaWQgKik5MzIwLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9wb2ludGVyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MTYuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MTYuYwppbmRleCAzODNlYTQxLi4wMzliODc0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDE2LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQxNi5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3NzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDMyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDMyLmMKaW5kZXggNzA1ZDc4Yy4uYzk2YzZkMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQzMi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MzIuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9zaW50OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50NjQuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50NjQuYwppbmRleCAzMWQ1M2FmLi45YWE3YmRkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDY0LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQ2NC5jCkBAIC01MSwxNSArNTEsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3NpbnQ2NDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDE2LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDE2LmMKaW5kZXggY2I2Yjc0OC4uOTc2MjBiNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQxNi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MTYuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQzMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQzMi5jCmluZGV4IGU0NTNkM2UuLjU3NjZmYWQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MzIuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDMyLmMKQEAgLTUwLDE1ICs1MCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWludDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDY0LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDY0LmMKaW5kZXggNDk1Yzc5Zi4uYTUyY2I4OSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQ2NC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50NjQuYwpAQCAtNTIsMTUgKzUyLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91aW50NjQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RibHNfc3RydWN0LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZGJsc19zdHJ1Y3QuYwppbmRleCA2NjBkYWJiLi5kNjYzNzkxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZGJsc19zdHJ1Y3QuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZGJsc19zdHJ1Y3QuYwpAQCAtMzcsNiArMzcsOCBAQAogCWZmaV90eXBlCXRzMV90eXBlOwogCWZmaV90eXBlKgl0czFfdHlwZV9lbGVtZW50c1s0XTsKIAorCURibHMgYXJnID0geyAxLjAsIDIuMCB9OworCiAJdHMxX3R5cGUuc2l6ZSA9IDA7CiAJdHMxX3R5cGUuYWxpZ25tZW50ID0gMDsKIAl0czFfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtNDgsOCArNTAsNiBAQAogCiAJY2xfYXJnX3R5cGVzWzBdID0gJnRzMV90eXBlOwogCi0JRGJscyBhcmcgPSB7IDEuMCwgMi4wIH07Ci0KIAkvKiBJbml0aWFsaXplIHRoZSBjaWYgKi8KIAlDSEVDSyhmZmlfcHJlcF9jaWYoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCAxLAogCQkJCSAmZmZpX3R5cGVfdm9pZCwgY2xfYXJnX3R5cGVzKSA9PSBGRklfT0spOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RvdWJsZV92YS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RvdWJsZV92YS5jCmluZGV4IDA2OTU4NzQuLmRiZjIwMDAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19kb3VibGVfdmEuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmMKQEAgLTYsNiArNiw4IEBACiAKIC8qIHsgZGctZG8gcnVuIHsgeGZhaWwgc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCiAvKiB7IGRnLW91dHB1dCAiIiB7IHhmYWlsIGF2cjMyKi0qLSogfSB9ICovCisvKiB7IGRnLW91dHB1dCAiIiB7IHhmYWlsIG1pcHMtc2dpLWlyaXg2KiB9IH0gUFIgbGliZmZpLzQ2NjYwICovCisKICNpbmNsdWRlICJmZml0ZXN0LmgiCiAKIHN0YXRpYyB2b2lkCkBAIC0zNCw3ICszNiw4IEBACiAJYXJnX3R5cGVzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKIAlhcmdfdHlwZXNbMl0gPSBOVUxMOwogCi0JQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9ERUZBVUxUX0FCSSwgMiwgJmZmaV90eXBlX3NpbnQsCisJLyogVGhpcyBwcmludGYgY2FsbCBpcyB2YXJpYWRpYyAqLworCUNIRUNLKGZmaV9wcmVwX2NpZl92YXIoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCAxLCAyLCAmZmZpX3R5cGVfc2ludCwKIAkJYXJnX3R5cGVzKSA9PSBGRklfT0spOwogCiAJYXJnc1swXSA9ICZmb3JtYXQ7CkBAIC00Niw2ICs0OSw5IEBACiAJcHJpbnRmKCJyZXM6ICVkXG4iLCAoaW50KSByZXMpOwogCS8vIHsgZGctb3V0cHV0ICJcbnJlczogNCIgfQogCisJLyogVGhlIGNhbGwgdG8gY2xzX2RvdWJsZV92YV9mbiBpcyBzdGF0aWMsIHNvIGhhdmUgdG8gdXNlIGEgbm9ybWFsIHByZXBfY2lmICovCisJQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9ERUZBVUxUX0FCSSwgMiwgJmZmaV90eXBlX3NpbnQsIGFyZ190eXBlcykgPT0gRkZJX09LKTsKKwogCUNIRUNLKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKHBjbCwgJmNpZiwgY2xzX2RvdWJsZV92YV9mbiwgTlVMTCwgY29kZSkgPT0gRkZJX09LKTsKIAogCXJlcwk9ICgoaW50KCopKGNoYXIqLCBkb3VibGUpKShjb2RlKSkoZm9ybWF0LCBkb3VibGVBcmcpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlLmMKaW5kZXggNTJhZjZjZi4uZTZiYWMxZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZS5jCkBAIC02LDcgKzYsNyBAQAogCiAvKiB7IGRnLWV4Y2Vzcy1lcnJvcnMgIm5vIGxvbmcgZG91YmxlIGZvcm1hdCIgeyB4ZmFpbCB4ODZfNjQtKi1taW5ndyogeDg2XzY0LSotY3lnd2luKiB9IH0gKi8KIC8qIHsgZGctZG8gcnVuIHsgeGZhaWwgYXJtKi0qLSogc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCi0vKiB7IGRnLW9wdGlvbnMgLW1sb25nLWRvdWJsZS0xMjggeyB0YXJnZXQgcG93ZXJwYzY0Ki0qLSogfSB9ICovCisvKiB7IGRnLW9wdGlvbnMgLW1sb25nLWRvdWJsZS0xMjggeyB0YXJnZXQgcG93ZXJwYzY0Ki0qLWxpbnV4KiB9IH0gKi8KIC8qIHsgZGctb3V0cHV0ICIiIHsgeGZhaWwgeDg2XzY0LSotbWluZ3cqIHg4Nl82NC0qLWN5Z3dpbiogfSB9ICovCiAKICNpbmNsdWRlICJmZml0ZXN0LmgiCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGVfdmEuYwppbmRleCAzODU2NGNiLi40ZmExZWEyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlX3ZhLmMKQEAgLTYsNiArNiw4IEBACiAKIC8qIHsgZGctZG8gcnVuIHsgeGZhaWwgc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCiAvKiB7IGRnLW91dHB1dCAiIiB7IHhmYWlsIGF2cjMyKi0qLSogeDg2XzY0LSotbWluZ3cqIH0gfSAqLworLyogeyBkZy1vdXRwdXQgIiIgeyB4ZmFpbCBtaXBzLXNnaS1pcml4NiogfSB9IFBSIGxpYmZmaS80NjY2MCAqLworCiAjaW5jbHVkZSAiZmZpdGVzdC5oIgogCiBzdGF0aWMgdm9pZApAQCAtMzQsNyArMzYsOCBAQAogCWFyZ190eXBlc1sxXSA9ICZmZmlfdHlwZV9sb25nZG91YmxlOwogCWFyZ190eXBlc1syXSA9IE5VTEw7CiAKLQlDSEVDSyhmZmlfcHJlcF9jaWYoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCAyLCAmZmZpX3R5cGVfc2ludCwKKwkvKiBUaGlzIHByaW50ZiBjYWxsIGlzIHZhcmlhZGljICovCisJQ0hFQ0soZmZpX3ByZXBfY2lmX3ZhcigmY2lmLCBGRklfREVGQVVMVF9BQkksIDEsIDIsICZmZmlfdHlwZV9zaW50LAogCQlhcmdfdHlwZXMpID09IEZGSV9PSyk7CiAKIAlhcmdzWzBdID0gJmZvcm1hdDsKQEAgLTQ2LDYgKzQ5LDEwIEBACiAJcHJpbnRmKCJyZXM6ICVkXG4iLCAoaW50KSByZXMpOwogCS8vIHsgZGctb3V0cHV0ICJcbnJlczogNCIgfQogCisJLyogVGhlIGNhbGwgdG8gY2xzX2xvbmdkb3VibGVfdmFfZm4gaXMgc3RhdGljLCBzbyBoYXZlIHRvIHVzZSBhIG5vcm1hbCBwcmVwX2NpZiAqLworCUNIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfREVGQVVMVF9BQkksIDIsICZmZmlfdHlwZV9zaW50LAorCQlhcmdfdHlwZXMpID09IEZGSV9PSyk7CisKIAlDSEVDSyhmZmlfcHJlcF9jbG9zdXJlX2xvYyhwY2wsICZjaWYsIGNsc19sb25nZG91YmxlX3ZhX2ZuLCBOVUxMLCBjb2RlKSA9PSBGRklfT0spOwogCiAJcmVzCT0gKChpbnQoKikoY2hhciosIGxvbmcgZG91YmxlKSkoY29kZSkpKGZvcm1hdCwgbGRBcmcpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19wb2ludGVyLmMKaW5kZXggZmFkZDM1My4uY2YwMzk5MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXIuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfcG9pbnRlci5jCkBAIC02NSw3ICs2NSw3IEBACiAKIAlDSEVDSyhmZmlfcHJlcF9jbG9zdXJlX2xvYyhwY2wsICZjaWYsIGNsc19wb2ludGVyX2duLCBOVUxMLCBjb2RlKSA9PSBGRklfT0spOwogCi0JcmVzID0gKGZmaV9hcmcpKCh2b2lkKigqKSh2b2lkKiwgdm9pZCopKShjb2RlKSkoYXJnMSwgYXJnMik7CisJcmVzID0gKGZmaV9hcmcpKHVpbnRwdHJfdCkoKHZvaWQqKCopKHZvaWQqLCB2b2lkKikpKGNvZGUpKShhcmcxLCBhcmcyKTsKIAkvKiB7IGRnLW91dHB1dCAiXG4weDEyMzQ1Njc4IDB4ODlhYmNkZWY6IDB4OWJlMDI0NjciIH0gKi8KIAlwcmludGYoInJlczogMHglMDh4XG4iLCAodW5zaWduZWQgaW50KSByZXMpOwogCS8qIHsgZGctb3V0cHV0ICJcbnJlczogMHg5YmUwMjQ2NyIgfSAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXJfc3RhY2suYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19wb2ludGVyX3N0YWNrLmMKaW5kZXggNjk3ZjI3MS4uZTMxMTM5ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXJfc3RhY2suYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfcG9pbnRlcl9zdGFjay5jCkBAIC0yOCwxMSArMjgsMTIgQEAKIAljaGFyCQl0cmFtcGxlNgk9IHRyYW1wbGU0ICsgKChjaGFyKikmYTIpWzFdOwogCWxvbmcgZG91YmxlCXRyYW1wbGU3CT0gKGludHB0cl90KXRyYW1wbGU1ICsgKGludHB0cl90KXRyYW1wbGUxOwogCWNoYXIJCXRyYW1wbGU4CT0gdHJhbXBsZTYgKyB0cmFtcGxlMjsKKwl2b2lkKgkJcmVzdWx0OwogCiAJZHVtbXlWYXIJPSBkdW1teV9mdW5jKHRyYW1wbGUxLCB0cmFtcGxlMiwgdHJhbXBsZTMsIHRyYW1wbGU0LAogCQl0cmFtcGxlNSwgdHJhbXBsZTYsIHRyYW1wbGU3LCB0cmFtcGxlOCk7CiAKLQl2b2lkKglyZXN1bHQJPSAodm9pZCopKChpbnRwdHJfdClhMSArIChpbnRwdHJfdClhMik7CisJcmVzdWx0CT0gKHZvaWQqKSgoaW50cHRyX3QpYTEgKyAoaW50cHRyX3QpYTIpOwogCiAJcHJpbnRmKCIweCUwOHggMHglMDh4OiAweCUwOHhcbiIsIAogCSAgICAgICAodW5zaWduZWQgaW50KSh1aW50cHRyX3QpIGExLApAQCAtNTIsMTEgKzUzLDEyIEBACiAJY2hhcgkJdHJhbXBsZTYJPSB0cmFtcGxlNCArICgoY2hhciopJmEyKVsxXTsKIAlsb25nIGRvdWJsZQl0cmFtcGxlNwk9IChpbnRwdHJfdCl0cmFtcGxlNSArIChpbnRwdHJfdCl0cmFtcGxlMTsKIAljaGFyCQl0cmFtcGxlOAk9IHRyYW1wbGU2ICsgdHJhbXBsZTI7CisJdm9pZCoJCXJlc3VsdDsKIAogCWR1bW15VmFyCT0gZHVtbXlfZnVuYyh0cmFtcGxlMSwgdHJhbXBsZTIsIHRyYW1wbGUzLCB0cmFtcGxlNCwKIAkJdHJhbXBsZTUsIHRyYW1wbGU2LCB0cmFtcGxlNywgdHJhbXBsZTgpOwogCi0Jdm9pZCoJcmVzdWx0CT0gKHZvaWQqKSgoaW50cHRyX3QpYTEgKyAoaW50cHRyX3QpYTIpOworCXJlc3VsdAk9ICh2b2lkKikoKGludHB0cl90KWExICsgKGludHB0cl90KWEyKTsKIAogCXByaW50ZigiMHglMDh4IDB4JTA4eDogMHglMDh4XG4iLAogICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludCkoaW50cHRyX3QpIGExLApAQCAtMTI5LDcgKzEzMSw3IEBACiAKIAlDSEVDSyhmZmlfcHJlcF9jbG9zdXJlX2xvYyhwY2wsICZjaWYsIGNsc19wb2ludGVyX2duLCBOVUxMLCBjb2RlKSA9PSBGRklfT0spOwogCi0JcmVzID0gKGZmaV9hcmcpKCh2b2lkKigqKSh2b2lkKiwgdm9pZCopKShjb2RlKSkoYXJnMSwgYXJnMik7CisJcmVzID0gKGZmaV9hcmcpKHVpbnRwdHJfdCkoKHZvaWQqKCopKHZvaWQqLCB2b2lkKikpKGNvZGUpKShhcmcxLCBhcmcyKTsKIAogCXByaW50ZigicmVzOiAweCUwOHhcbiIsICh1bnNpZ25lZCBpbnQpIHJlcyk7CiAJLy8geyBkZy1vdXRwdXQgIlxuMHgwMTIzNDU2NyAweDg5YWJjZGVmOiAweDhhY2YxMzU2IiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX2FiaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZXJyX2JhZF9hYmkuYwppbmRleCBhMjFhM2ZkLi5mNWE3MzE3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX2FiaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Vycl9iYWRfYWJpLmMKQEAgLTQsNyArNCw4IEBACiAgICBQUjoJCQlub25lLgogICAgT3JpZ2luYXRvcjoJQmxha2UgQ2hhZmZpbiA2LzYvMjAwNwkgKi8KIAotLyogeyBkZy1kbyBydW4geyB4ZmFpbCAqLSotKiB9IH0gKi8KKy8qIHsgZGctZG8gcnVuIH0gKi8KKwogI2luY2x1ZGUgImZmaXRlc3QuaCIKIAogc3RhdGljIHZvaWQKQEAgLTE3LDExICsxOCw5IEBACiAJZmZpX2NpZiBjaWY7CiAgICAgICAgIHZvaWQgKmNvZGU7CiAJZmZpX2Nsb3N1cmUgKnBjbCA9IGZmaV9jbG9zdXJlX2FsbG9jKHNpemVvZihmZmlfY2xvc3VyZSksICZjb2RlKTsKLQl2b2lkKiBhcmdzWzFdOwogCWZmaV90eXBlKiBhcmdfdHlwZXNbMV07CiAKIAlhcmdfdHlwZXNbMF0gPSBOVUxMOwotCWFyZ3NbMF0gPSBOVUxMOwogCiAJQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIDI1NSwgMCwgJmZmaV90eXBlX3ZvaWQsCiAJCWFyZ190eXBlcykgPT0gRkZJX0JBRF9BQkkpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZXJyX2JhZF90eXBlZGVmLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX3R5cGVkZWYuYwppbmRleCBiZDJmYzU0Li5iZjYwMTYxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX3R5cGVkZWYuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX3R5cGVkZWYuYwpAQCAtNCw3ICs0LDggQEAKICAgIFBSOgkJCW5vbmUuCiAgICBPcmlnaW5hdG9yOglCbGFrZSBDaGFmZmluIDYvNi8yMDA3CSAqLwogCi0vKiB7IGRnLWRvIHJ1biB7IHhmYWlsICotKi0qIH0gfSAqLworLyogeyBkZy1kbyBydW4gfSAqLworCiAjaW5jbHVkZSAiZmZpdGVzdC5oIgogCiBpbnQgbWFpbiAodm9pZCkKQEAgLTEyLDEwICsxMywxMCBAQAogCWZmaV9jaWYgY2lmOwogCWZmaV90eXBlKiBhcmdfdHlwZXNbMV07CiAKLQlhcmdfdHlwZXNbMF0gPSBOVUxMOwotCiAJZmZpX3R5cGUJYmFkVHlwZQk9IGZmaV90eXBlX3ZvaWQ7CiAKKwlhcmdfdHlwZXNbMF0gPSBOVUxMOworCiAJYmFkVHlwZS5zaXplID0gMDsKIAogCUNIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfREVGQVVMVF9BQkksIDAsICZiYWRUeXBlLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMxX3dpbjMyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczFfd2luMzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmM0NzI0Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMxX3dpbjMyLmMKQEAgLTAsMCArMSw1MCBAQAorLyogQXJlYToJZmZpX2NhbGwKKyAgIFB1cnBvc2U6CUNoZWNrIGZhc3RjYWxsIGZjdCBjYWxsIG9uIFg4Nl9XSU4zMiBzeXN0ZW1zLgorICAgTGltaXRhdGlvbnM6CW5vbmUuCisgICBQUjoJCW5vbmUuCisgICBPcmlnaW5hdG9yOglGcm9tIHRoZSBvcmlnaW5hbCBmZml0ZXN0LmMgICovCisKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGk/ODYtKi1jeWd3aW4qIGk/ODYtKi1taW5ndyogfSB9ICovCisKKyNpbmNsdWRlICJmZml0ZXN0LmgiCisKK3N0YXRpYyBzaXplX3QgX19GQVNUQ0FMTF9fIG15X2Zhc3RjYWxsX2YoY2hhciAqcywgZmxvYXQgYSkKK3sKKyAgcmV0dXJuIChzaXplX3QpICgoaW50KSBzdHJsZW4ocykgKyAoaW50KSBhKTsKK30KKworaW50IG1haW4gKHZvaWQpCit7CisgIGZmaV9jaWYgY2lmOworICBmZmlfdHlwZSAqYXJnc1tNQVhfQVJHU107CisgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CisgIGZmaV9hcmcgcmludDsKKyAgY2hhciAqczsKKyAgZmxvYXQgdjI7CisgIGFyZ3NbMF0gPSAmZmZpX3R5cGVfcG9pbnRlcjsKKyAgYXJnc1sxXSA9ICZmZmlfdHlwZV9mbG9hdDsKKyAgdmFsdWVzWzBdID0gKHZvaWQqKSAmczsKKyAgdmFsdWVzWzFdID0gKHZvaWQqKSAmdjI7CisgIAorICAvKiBJbml0aWFsaXplIHRoZSBjaWYgKi8KKyAgQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9GQVNUQ0FMTCwgMiwKKwkJICAgICAgICZmZmlfdHlwZV9zaW50LCBhcmdzKSA9PSBGRklfT0spOworICAKKyAgcyA9ICJhIjsKKyAgdjIgPSAwLjA7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9mKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gMSk7CisgIAorICBzID0gIjEyMzQ1NjciOworICB2MiA9IC0xLjA7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9mKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gNik7CisgIAorICBzID0gIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDUiOworICB2MiA9IDEuMDsKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKG15X2Zhc3RjYWxsX2YpLCAmcmludCwgdmFsdWVzKTsKKyAgQ0hFQ0socmludCA9PSAyNik7CisgIAorICBwcmludGYoImZhc3RjYWxsIGZjdDEgdGVzdHMgcGFzc2VkXG4iKTsKKyAgZXhpdCgwKTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzMl93aW4zMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMyX3dpbjMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JkZDBlMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzMl93aW4zMi5jCkBAIC0wLDAgKzEsNTAgQEAKKy8qIEFyZWE6CWZmaV9jYWxsCisgICBQdXJwb3NlOglDaGVjayBmYXN0Y2FsbCBmY3QgY2FsbCBvbiBYODZfV0lOMzIgc3lzdGVtcy4KKyAgIExpbWl0YXRpb25zOglub25lLgorICAgUFI6CQlub25lLgorICAgT3JpZ2luYXRvcjoJRnJvbSB0aGUgb3JpZ2luYWwgZmZpdGVzdC5jICAqLworCisvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBpPzg2LSotY3lnd2luKiBpPzg2LSotbWluZ3cqIH0gfSAqLworCisjaW5jbHVkZSAiZmZpdGVzdC5oIgorCitzdGF0aWMgc2l6ZV90IF9fRkFTVENBTExfXyBteV9mYXN0Y2FsbF9mKGZsb2F0IGEsIGNoYXIgKnMpCit7CisgIHJldHVybiAoc2l6ZV90KSAoKGludCkgc3RybGVuKHMpICsgKGludCkgYSk7Cit9CisKK2ludCBtYWluICh2b2lkKQoreworICBmZmlfY2lmIGNpZjsKKyAgZmZpX3R5cGUgKmFyZ3NbTUFYX0FSR1NdOworICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOworICBmZmlfYXJnIHJpbnQ7CisgIGNoYXIgKnM7CisgIGZsb2F0IHYyOworICBhcmdzWzFdID0gJmZmaV90eXBlX3BvaW50ZXI7CisgIGFyZ3NbMF0gPSAmZmZpX3R5cGVfZmxvYXQ7CisgIHZhbHVlc1sxXSA9ICh2b2lkKikgJnM7CisgIHZhbHVlc1swXSA9ICh2b2lkKikgJnYyOworICAKKyAgLyogSW5pdGlhbGl6ZSB0aGUgY2lmICovCisgIENIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfRkFTVENBTEwsIDIsCisJCSAgICAgICAmZmZpX3R5cGVfc2ludCwgYXJncykgPT0gRkZJX09LKTsKKyAgCisgIHMgPSAiYSI7CisgIHYyID0gMC4wOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4obXlfZmFzdGNhbGxfZiksICZyaW50LCB2YWx1ZXMpOworICBDSEVDSyhyaW50ID09IDEpOworICAKKyAgcyA9ICIxMjM0NTY3IjsKKyAgdjIgPSAtMS4wOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4obXlfZmFzdGNhbGxfZiksICZyaW50LCB2YWx1ZXMpOworICBDSEVDSyhyaW50ID09IDYpOworICAKKyAgcyA9ICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1IjsKKyAgdjIgPSAxLjA7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9mKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gMjYpOworICAKKyAgcHJpbnRmKCJmYXN0Y2FsbCBmY3QyIHRlc3RzIHBhc3NlZFxuIik7CisgIGV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczNfd2luMzIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzM193aW4zMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1ZDYwNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczNfd2luMzIuYwpAQCAtMCwwICsxLDU2IEBACisvKiBBcmVhOglmZmlfY2FsbAorICAgUHVycG9zZToJQ2hlY2sgZmFzdGNhbGwgZiBjYWxsIG9uIFg4Nl9XSU4zMiBzeXN0ZW1zLgorICAgTGltaXRhdGlvbnM6CW5vbmUuCisgICBQUjoJCW5vbmUuCisgICBPcmlnaW5hdG9yOglGcm9tIHRoZSBvcmlnaW5hbCBmZml0ZXN0LmMgICovCisKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGk/ODYtKi1jeWd3aW4qIGk/ODYtKi1taW5ndyogfSB9ICovCisKKyNpbmNsdWRlICJmZml0ZXN0LmgiCisKK3N0YXRpYyBzaXplX3QgX19GQVNUQ0FMTF9fIG15X2Zhc3RjYWxsX2YoZmxvYXQgYSwgY2hhciAqcywgaW50IGkpCit7CisgIHJldHVybiAoc2l6ZV90KSAoKGludCkgc3RybGVuKHMpICsgKGludCkgYSArIGkpOworfQorCitpbnQgbWFpbiAodm9pZCkKK3sKKyAgZmZpX2NpZiBjaWY7CisgIGZmaV90eXBlICphcmdzW01BWF9BUkdTXTsKKyAgdm9pZCAqdmFsdWVzW01BWF9BUkdTXTsKKyAgZmZpX2FyZyByaW50OworICBjaGFyICpzOworICBpbnQgdjE7CisgIGZsb2F0IHYyOworICBhcmdzWzJdID0gJmZmaV90eXBlX3NpbnQ7CisgIGFyZ3NbMV0gPSAmZmZpX3R5cGVfcG9pbnRlcjsKKyAgYXJnc1swXSA9ICZmZmlfdHlwZV9mbG9hdDsKKyAgdmFsdWVzWzJdID0gKHZvaWQqKSAmdjE7CisgIHZhbHVlc1sxXSA9ICh2b2lkKikgJnM7CisgIHZhbHVlc1swXSA9ICh2b2lkKikgJnYyOworICAKKyAgLyogSW5pdGlhbGl6ZSB0aGUgY2lmICovCisgIENIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfRkFTVENBTEwsIDMsCisJCSAgICAgICAmZmZpX3R5cGVfc2ludCwgYXJncykgPT0gRkZJX09LKTsKKyAgCisgIHMgPSAiYSI7CisgIHYxID0gMTsKKyAgdjIgPSAwLjA7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9mKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gMik7CisgIAorICBzID0gIjEyMzQ1NjciOworICB2MiA9IC0xLjA7CisgIHYxID0gLTI7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9mKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gNCk7CisgIAorICBzID0gIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDUiOworICB2MiA9IDEuMDsKKyAgdjEgPSAyOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4obXlfZmFzdGNhbGxfZiksICZyaW50LCB2YWx1ZXMpOworICBDSEVDSyhyaW50ID09IDI4KTsKKyAgCisgIHByaW50ZigiZmFzdGNhbGwgZmN0MyB0ZXN0cyBwYXNzZWRcbiIpOworICBleGl0KDApOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmZpdGVzdC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmZpdGVzdC5oCmluZGV4IDJjYjk4NDkuLmQ4MWQ0ZGEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2ZmaXRlc3QuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mZml0ZXN0LmgKQEAgLTI1LDYgKzI1LDE0IEBACiAjZGVmaW5lIF9fVU5VU0VEX18KICNlbmRpZgogCisvKiBEZWZpbmUgX19GQVNUQ0FMTF9fIHNvIHRoYXQgb3RoZXIgY29tcGlsZXJzIHRoYW4gZ2NjIGNhbiBydW4gdGhlIHRlc3RzLiAgKi8KKyN1bmRlZiBfX0ZBU1RDQUxMX18KKyNpZiBkZWZpbmVkIF9NU0NfVkVSCisjZGVmaW5lIF9fRkFTVENBTExfXyBfX2Zhc3RjYWxsCisjZWxzZQorI2RlZmluZSBfX0ZBU1RDQUxMX18gX19hdHRyaWJ1dGVfXygoZmFzdGNhbGwpKQorI2VuZGlmCisKIC8qIFByZWZlciBNQVBfQU5PTihZTU9VUykgdG8gL2Rldi96ZXJvLCBzaW5jZSB3ZSBkb24ndCBuZWVkIHRvIGtlZXAgYQogICAgZmlsZSBvcGVuLiAgKi8KICNpZmRlZiBIQVZFX01NQVBfQU5PTgpAQCAtNjcsNiArNzUsOCBAQAogI2RlZmluZSBQUklkTEwgImxkIgogI3VuZGVmIFBSSXVMTAogI2RlZmluZSBQUkl1TEwgImx1IgorI2RlZmluZSBQUklkOCAiaGQiCisjZGVmaW5lIFBSSXU4ICJodSIKICNkZWZpbmUgUFJJZDY0ICJsZCIKICNkZWZpbmUgUFJJdTY0ICJsdSIKICNkZWZpbmUgUFJJdVBUUiAibHUiCkBAIC03Nyw2ICs4NywyOCBAQAogI2RlZmluZSBQUkl1UFRSICJsdSIKICNlbmRpZgogCisvKiBJUklYIGtsdWRnZS4gICovCisjaWYgZGVmaW5lZChfX3NnaSkKKy8qIElSSVggNi41IDxpbnR0eXBlcy5oPiBwcm92aWRlcyBhbGwgZGVmaW5pdGlvbnMsIGJ1dCBvbmx5IGZvciBDOTkKKyAgIGNvbXBpbGF0aW9ucy4gICovCisjZGVmaW5lIFBSSWQ4ICJoaGQiCisjZGVmaW5lIFBSSXU4ICJoaHUiCisjaWYgKF9NSVBTX1NaTE9ORyA9PSAzMikKKyNkZWZpbmUgUFJJZDY0ICJsbGQiCisjZGVmaW5lIFBSSXU2NCAibGx1IgorI2VuZGlmCisvKiBUaGlzIGRvZXNuJ3QgbWF0Y2ggPGludHR5cGVzLmg+LCB3aGljaCBhbHdheXMgaGFzICJsbGQiIGhlcmUsIGJ1dCB0aGUKKyAgIGFyZ3VtZW50cyBhcmUgdWludDY0X3QsIGludDY0X3QsIHdoaWNoIGFyZSB1bnNpZ25lZCBsb25nLCBsb25nIGZvcgorICAgNjQtYml0IGluIDxzZ2lkZWZzLmg+LiAgKi8KKyNpZiAoX01JUFNfU1pMT05HID09IDY0KQorI2RlZmluZSBQUklkNjQgImxkIgorI2RlZmluZSBQUkl1NjQgImx1IgorI2VuZGlmCisvKiBUaGlzIGRvZXNuJ3QgbWF0Y2ggPGludHR5cGVzLmg+LCB3aGljaCBoYXMgInUiIGhlcmUsIGJ1dCB0aGUgYXJndW1lbnRzCisgICBhcmUgdWludHB0cl90LCB3aGljaCBpcyBhbHdheXMgdW5zaWduZWQgbG9uZy4gICovCisjZGVmaW5lIFBSSXVQVFIgImx1IgorI2VuZGlmCisKIC8qIFNvbGFyaXMgPCAxMCBrbHVkZ2UuICAqLwogI2lmIGRlZmluZWQoX19zdW5fXykgJiYgZGVmaW5lZChfX3N2cjRfXykgJiYgIWRlZmluZWQoUFJJdVBUUikKICNpZiBkZWZpbmVkKF9fYXJjaDY0X18pIHx8IGRlZmluZWQgKF9feDg2XzY0X18pCkBAIC04Niw2ICsxMTgsMTUgQEAKICNlbmRpZgogI2VuZGlmCiAKKy8qIE1TVkMga2x1ZGdlLiAgKi8KKyNpZiBkZWZpbmVkIF9NU0NfVkVSCisjZGVmaW5lIFBSSXVQVFIgImx1IgorI2RlZmluZSBQUkl1OCAidSIKKyNkZWZpbmUgUFJJZDggImQiCisjZGVmaW5lIFBSSXU2NCAiSTY0dSIKKyNkZWZpbmUgUFJJZDY0ICJJNjRkIgorI2VuZGlmCisKICNpZmRlZiBVU0lOR19NTUFQCiBzdGF0aWMgaW5saW5lIHZvaWQgKgogYWxsb2NhdGVfbW1hcCAoc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mbG9hdF92YS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmxvYXRfdmEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWUxNThlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmxvYXRfdmEuYwpAQCAtMCwwICsxLDEwNyBAQAorLyogQXJlYTogICAgICAgIGZwIGFuZCB2YXJpYWRpY3MKKyAgIFB1cnBvc2U6ICAgICBjaGVjayBmcCBpbnB1dHMgYW5kIHJldHVybnMgd29yayBvbiB2YXJpYWRpY3MsIGV2ZW4gdGhlIGZpeGVkIHBhcmFtcworICAgTGltaXRhdGlvbnM6IE5vbmUKKyAgIFBSOiAgICAgICAgICBub25lCisgICBPcmlnaW5hdG9yOiAgPGRhdmlkLmdpbGJlcnRAbGluYXJvLm9yZz4gMjAxMS0wMS0yNQorCisgICBJbnRlbmRlZCB0byBzdHJlc3MgdGhlIGRpZmZlcmVuY2UgaW4gQUJJIG9uIEFSTSB2ZnAKKyovCisKKy8qIHsgZGctZG8gcnVuIH0gKi8KKworI2luY2x1ZGUgPHN0ZGFyZy5oPgorCisjaW5jbHVkZSAiZmZpdGVzdC5oIgorCisvKiBwcmludHMgb3V0IGFsbCB0aGUgcGFyYW1ldGVycywgYW5kIHJldHVybnMgdGhlIHN1bSBvZiB0aGVtIGFsbC4KKyAqICd4JyBpcyB0aGUgbnVtYmVyIG9mIHZhcmlhZGljIHBhcmFtZXRlcnMgYWxsIG9mIHdoaWNoIGFyZSBkb3VibGUgaW4gdGhpcyB0ZXN0CisgKi8KK2RvdWJsZSBmbG9hdF92YV9mbih1bnNpZ25lZCBpbnQgeCwgZG91YmxlIHksLi4uKQoreworICBkb3VibGUgdG90YWw9MC4wOworICB2YV9saXN0IGFwOworICB1bnNpZ25lZCBpbnQgaTsKKworICB0b3RhbCs9KGRvdWJsZSl4OworICB0b3RhbCs9eTsKKworICBwcmludGYoIiV1OiAlLjFmIDoiLCB4LCB5KTsKKworICB2YV9zdGFydChhcCwgeSk7CisgIGZvcihpPTA7aTx4O2krKykKKyAgeworICAgIGRvdWJsZSBhcmc9dmFfYXJnKGFwLCBkb3VibGUpOworICAgIHRvdGFsKz1hcmc7CisgICAgcHJpbnRmKCIgJWQ6JS4xZiAiLCBpLCBhcmcpOworICB9CisgIHZhX2VuZChhcCk7CisKKyAgcHJpbnRmKCIgdG90YWw6ICUuMWZcbiIsIHRvdGFsKTsKKworICByZXR1cm4gdG90YWw7Cit9CisKK2ludCBtYWluICh2b2lkKQoreworICBmZmlfY2lmICAgIGNpZjsKKworICBmZmlfdHlwZSAgICAqYXJnX3R5cGVzWzVdOworICB2b2lkICAgICAgICAqdmFsdWVzWzVdOworICBkb3VibGUgICAgICAgIGRvdWJsZXNbNV07CisgIHVuc2lnbmVkIGludCBmaXJzdGFyZzsKKyAgZG91YmxlICAgICAgICByZXNmcDsKKworICAvKiBGaXJzdCB0ZXN0LCBwYXNzIGZsb2F0X3ZhX2ZuKDAsMi4wKSAtIG5vdGUgdGhlcmUgYXJlIG5vIGFjdHVhbAorICAgKiB2YXJpYWRpYyBwYXJhbWV0ZXJzLCBidXQgaXQncyBkZWNsYXJlZCB2YXJpYWRpYyBzbyB0aGUgQUJJIG1heSBiZQorICAgKiBkaWZmZXJlbnQuICovCisgIC8qIENhbGwgaXQgc3RhdGljYWxseSBhbmQgdGhlbiB2aWEgZmZpICovCisgIHJlc2ZwPWZsb2F0X3ZhX2ZuKDAsMi4wKTsKKyAgLy8geyBkZy1vdXRwdXQgIjA6IDIuMCA6IHRvdGFsOiAyLjAiIH0KKyAgcHJpbnRmKCJjb21waWxlZDogJS4xZlxuIiwgcmVzZnApOworICAvLyB7IGRnLW91dHB1dCAiXG5jb21waWxlZDogMi4wIiB9CisKKyAgYXJnX3R5cGVzWzBdID0gJmZmaV90eXBlX3VpbnQ7CisgIGFyZ190eXBlc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CisgIGFyZ190eXBlc1syXSA9IE5VTEw7CisgIENIRUNLKGZmaV9wcmVwX2NpZl92YXIoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCAyLCAyLAorICAgICAgICAmZmZpX3R5cGVfZG91YmxlLCBhcmdfdHlwZXMpID09IEZGSV9PSyk7CisKKyAgZmlyc3RhcmcgPSAwOworICBkb3VibGVzWzBdID0gMi4wOworICB2YWx1ZXNbMF0gPSAmZmlyc3Rhcmc7CisgIHZhbHVlc1sxXSA9ICZkb3VibGVzWzBdOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4oZmxvYXRfdmFfZm4pLCAmcmVzZnAsIHZhbHVlcyk7CisgIC8vIHsgZGctb3V0cHV0ICJcbjA6IDIuMCA6IHRvdGFsOiAyLjAiIH0KKyAgcHJpbnRmKCJmZmk6ICUuMWZcbiIsIHJlc2ZwKTsKKyAgLy8geyBkZy1vdXRwdXQgIlxuZmZpOiAyLjAiIH0KKworICAvKiBTZWNvbmQgdGVzdCwgZmxvYXRfdmFfZm4oMiwyLjAsMy4wLDQuMCksIG5vdyB3aXRoIHZhcmlhZGljIHBhcmFtcyAqLworICAvKiBDYWxsIGl0IHN0YXRpY2FsbHkgYW5kIHRoZW4gdmlhIGZmaSAqLworICByZXNmcD1mbG9hdF92YV9mbigyLDIuMCwzLjAsNC4wKTsKKyAgLy8geyBkZy1vdXRwdXQgIlxuMjogMi4wIDogMDozLjAgIDE6NC4wICB0b3RhbDogMTEuMCIgfQorICBwcmludGYoImNvbXBpbGVkOiAlLjFmXG4iLCByZXNmcCk7CisgIC8vIHsgZGctb3V0cHV0ICJcbmNvbXBpbGVkOiAxMS4wIiB9CisKKyAgYXJnX3R5cGVzWzBdID0gJmZmaV90eXBlX3VpbnQ7CisgIGFyZ190eXBlc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CisgIGFyZ190eXBlc1syXSA9ICZmZmlfdHlwZV9kb3VibGU7CisgIGFyZ190eXBlc1szXSA9ICZmZmlfdHlwZV9kb3VibGU7CisgIGFyZ190eXBlc1s0XSA9IE5VTEw7CisgIENIRUNLKGZmaV9wcmVwX2NpZl92YXIoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCAyLCA0LAorICAgICAgICAmZmZpX3R5cGVfZG91YmxlLCBhcmdfdHlwZXMpID09IEZGSV9PSyk7CisKKyAgZmlyc3RhcmcgPSAyOworICBkb3VibGVzWzBdID0gMi4wOworICBkb3VibGVzWzFdID0gMy4wOworICBkb3VibGVzWzJdID0gNC4wOworICB2YWx1ZXNbMF0gPSAmZmlyc3Rhcmc7CisgIHZhbHVlc1sxXSA9ICZkb3VibGVzWzBdOworICB2YWx1ZXNbMl0gPSAmZG91Ymxlc1sxXTsKKyAgdmFsdWVzWzNdID0gJmRvdWJsZXNbMl07CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihmbG9hdF92YV9mbiksICZyZXNmcCwgdmFsdWVzKTsKKyAgLy8geyBkZy1vdXRwdXQgIlxuMjogMi4wIDogMDozLjAgIDE6NC4wICB0b3RhbDogMTEuMCIgfQorICBwcmludGYoImZmaTogJS4xZlxuIiwgcmVzZnApOworICAvLyB7IGRnLW91dHB1dCAiXG5mZmk6IDExLjAiIH0KKworICBleGl0KDApOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvaHVnZV9zdHJ1Y3QuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2h1Z2Vfc3RydWN0LmMKaW5kZXggOWNmZmI3MS4uMzgwZmVkZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvaHVnZV9zdHJ1Y3QuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9odWdlX3N0cnVjdC5jCkBAIC03LDcgKzcsNyBAQAogCiAvKiB7IGRnLWV4Y2Vzcy1lcnJvcnMgIiIgeyB0YXJnZXQgeDg2XzY0LSotbWluZ3cqIHg4Nl82NC0qLWN5Z3dpbiogfSB9ICovCiAvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwotLyogeyBkZy1vcHRpb25zIC1tbG9uZy1kb3VibGUtMTI4IHsgdGFyZ2V0IHBvd2VycGM2NCotKi0qIH0gfSAqLworLyogeyBkZy1vcHRpb25zIC1tbG9uZy1kb3VibGUtMTI4IHsgdGFyZ2V0IHBvd2VycGM2NCotKi1saW51eCogfSB9ICovCiAvKiB7IGRnLW91dHB1dCAiIiB7IHhmYWlsIHg4Nl82NC0qLW1pbmd3KiB4ODZfNjQtKi1jeWd3aW4qIH0gfSAqLwogCiAjaW5jbHVkZSAiZmZpdGVzdC5oIgpAQCAtMTI5LDE0ICsxMjksMTQgQEAKIAkJCXVpNjRfNCArIDQsIHNpNjRfNCArIDQsIGZfNCArIDQsIGRfNCArIDQsIGxkXzQgKyA0LCAoY2hhciopKChpbnRwdHJfdClwXzQgKyA0KSwgCiAJCXVpOF81ICsgNSwgc2k4XzUgKyA1fTsKIAotCXByaW50ZigiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggJWhodSAlaGhkOiAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAlaGh1ICVoaGRcbiIsCisJcHJpbnRmKCIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAlIiBQUkl1OCAiICUiIFBSSWQ4ICI6ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICUiIFBSSXU4ICIgJSIgUFJJZDggIlxuIiwKIAkgICAgICAgdWk4XzEsIHNpOF8xLCB1aTE2XzEsIHNpMTZfMSwgdWkzMl8xLCBzaTMyXzEsIHVpNjRfMSwgc2k2NF8xLCBmXzEsIGRfMSwgbGRfMSwgKHVuc2lnbmVkIGxvbmcpcF8xLAogCQl1aThfMiwgc2k4XzIsIHVpMTZfMiwgc2kxNl8yLCB1aTMyXzIsIHNpMzJfMiwgdWk2NF8yLCBzaTY0XzIsIGZfMiwgZF8yLCBsZF8yLCAodW5zaWduZWQgbG9uZylwXzIsCiAJCXVpOF8zLCBzaThfMywgdWkxNl8zLCBzaTE2XzMsIHVpMzJfMywgc2kzMl8zLCB1aTY0XzMsIHNpNjRfMywgZl8zLCBkXzMsIGxkXzMsICh1bnNpZ25lZCBsb25nKXBfMywKQEAgLTIyOSw2ICsyMjksMTkgQEAKIAlmZmlfdHlwZSoJc3RfZmllbGRzWzUxXTsKIAlCaWdTdHJ1Y3QJcmV0VmFsOwogCisJdWludDhfdAkJdWk4CQk9IDE7CisJaW50OF90CQlzaTgJCT0gMjsKKwl1aW50MTZfdAl1aTE2CT0gMzsKKwlpbnQxNl90CQlzaTE2CT0gNDsKKwl1aW50MzJfdAl1aTMyCT0gNTsKKwlpbnQzMl90CQlzaTMyCT0gNjsKKwl1aW50NjRfdAl1aTY0CT0gNzsKKwlpbnQ2NF90CQlzaTY0CT0gODsKKwlmbG9hdAkJZgkJPSA5OworCWRvdWJsZQkJZAkJPSAxMDsKKwlsb25nIGRvdWJsZQlsZAkJPSAxMTsKKwljaGFyKgkJcAkJPSAoY2hhciopMHgxMjM0NTY3ODsKKwogCW1lbXNldCAoJnJldFZhbCwgMCwgc2l6ZW9mKHJldFZhbCkpOwogCiAJcmV0X3N0cnVjdF90eXBlLnNpemUgPSAwOwpAQCAtMjUxLDE5ICsyNjQsNiBAQAogCiAJc3RfZmllbGRzWzUwXSA9IE5VTEw7CiAKLQl1aW50OF90CQl1aTgJCT0gMTsKLQlpbnQ4X3QJCXNpOAkJPSAyOwotCXVpbnQxNl90CXVpMTYJPSAzOwotCWludDE2X3QJCXNpMTYJPSA0OwotCXVpbnQzMl90CXVpMzIJPSA1OwotCWludDMyX3QJCXNpMzIJPSA2OwotCXVpbnQ2NF90CXVpNjQJPSA3OwotCWludDY0X3QJCXNpNjQJPSA4OwotCWZsb2F0CQlmCQk9IDk7Ci0JZG91YmxlCQlkCQk9IDEwOwotCWxvbmcgZG91YmxlCWxkCQk9IDExOwotCWNoYXIqCQlwCQk9IChjaGFyKikweDEyMzQ1Njc4OwotCiAJYXJnVHlwZXNbMF0JCT0gYXJnVHlwZXNbMTJdCT0gYXJnVHlwZXNbMjRdCT0gYXJnVHlwZXNbMzZdCT0gYXJnVHlwZXNbNDhdCT0gJmZmaV90eXBlX3VpbnQ4OwogCWFyZ1ZhbHVlc1swXQk9IGFyZ1ZhbHVlc1sxMl0JPSBhcmdWYWx1ZXNbMjRdCT0gYXJnVmFsdWVzWzM2XQk9IGFyZ1ZhbHVlc1s0OF0JPSAmdWk4OwogCWFyZ1R5cGVzWzFdCQk9IGFyZ1R5cGVzWzEzXQk9IGFyZ1R5cGVzWzI1XQk9IGFyZ1R5cGVzWzM3XQk9IGFyZ1R5cGVzWzQ5XQk9ICZmZmlfdHlwZV9zaW50ODsKQEAgLTI5NiwxMCArMjk2LDEwIEBACiAKIAlmZmlfY2FsbCgmY2lmLCBGRklfRk4odGVzdF9sYXJnZV9mbiksICZyZXRWYWwsIGFyZ1ZhbHVlcyk7CiAJLy8geyBkZy1vdXRwdXQgIjEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDB4MTIzNDU2NzggMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMHgxMjM0NTY3OCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAweDEyMzQ1Njc4IDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDB4MTIzNDU2NzggMSAyOiAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMHgxMjM0NTY3OSAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDB4MTIzNDU2N2EgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMHgxMjM0NTY3YiA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMHgxMjM0NTY3YyA2IDciIH0KLQlwcmludGYoInJlczogJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggJWhodSAlaGhkXG4iLAorCXByaW50ZigicmVzOiAlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAlIiBQUkl1OCAiICUiIFBSSWQ4ICJcbiIsCiAJCXJldFZhbC5hLCByZXRWYWwuYiwgcmV0VmFsLmMsIHJldFZhbC5kLCByZXRWYWwuZSwgcmV0VmFsLmYsCiAJICAgICAgIHJldFZhbC5nLCByZXRWYWwuaCwgcmV0VmFsLmksIHJldFZhbC5qLCByZXRWYWwuaywgKHVuc2lnbmVkIGxvbmcpcmV0VmFsLmwsCiAJCXJldFZhbC5tLCByZXRWYWwubiwgcmV0VmFsLm8sIHJldFZhbC5wLCByZXRWYWwucSwgcmV0VmFsLnIsCkBAIC0zMjQsMTAgKzMyNCwxMCBAQAogCQl1aTgsIHNpOCwgdWkxNiwgc2kxNiwgdWkzMiwgc2kzMiwgdWk2NCwgc2k2NCwgZiwgZCwgbGQsIHAsCiAJCXVpOCwgc2k4KTsKIAkvLyB7IGRnLW91dHB1dCAiXG4xIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAweDEyMzQ1Njc4IDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDB4MTIzNDU2NzggMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMHgxMjM0NTY3OCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAweDEyMzQ1Njc4IDEgMjogMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDB4MTIzNDU2NzkgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAweDEyMzQ1NjdhIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDB4MTIzNDU2N2IgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDB4MTIzNDU2N2MgNiA3IiB9Ci0JcHJpbnRmKCJyZXM6ICVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKLQkJIiVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKLQkJIiVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKLQkJIiVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICVoaHUgJWhoZFxuIiwKKwlwcmludGYoInJlczogJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgorCQkiJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgorCQkiJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgorCQkiJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggJSIgUFJJdTggIiAlIiBQUklkOCAiXG4iLAogCQlyZXRWYWwuYSwgcmV0VmFsLmIsIHJldFZhbC5jLCByZXRWYWwuZCwgcmV0VmFsLmUsIHJldFZhbC5mLAogCSAgICAgICByZXRWYWwuZywgcmV0VmFsLmgsIHJldFZhbC5pLCByZXRWYWwuaiwgcmV0VmFsLmssICh1bnNpZ25lZCBsb25nKXJldFZhbC5sLAogCQlyZXRWYWwubSwgcmV0VmFsLm4sIHJldFZhbC5vLCByZXRWYWwucCwgcmV0VmFsLnEsIHJldFZhbC5yLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbWFueTIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL21hbnkyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA3NzE1OQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL21hbnkyLmMKQEAgLTAsMCArMSw1NCBAQAorLyogQXJlYTogICAgICAgIGZmaV9jYWxsCisgICBQdXJwb3NlOiAgICAgQ2hlY2sgdWludDhfdCBhcmd1bWVudHMuCisgICBMaW1pdGF0aW9uczogbm9uZS4KKyAgIFBSOiAgICAgICAgICBQUjQ1Njc3LgorICAgT3JpZ2luYXRvcjogIERhbiBXaXR0ZSA8ZHdpdHRlQGdtYWlsLmNvbT4gMjAxMDA5MTYgICovCisKKy8qIHsgZGctZG8gcnVuIH0gKi8KKworI2luY2x1ZGUgImZmaXRlc3QuaCIKKworI2RlZmluZSBOQVJHUyA3CisKK3R5cGVkZWYgdW5zaWduZWQgY2hhciB1ODsKKworX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSB1aW50OF90Citmb28gKHVpbnQ4X3QgYSwgdWludDhfdCBiLCB1aW50OF90IGMsIHVpbnQ4X3QgZCwKKyAgICAgdWludDhfdCBlLCB1aW50OF90IGYsIHVpbnQ4X3QgZykKK3sKKyAgcmV0dXJuIGEgKyBiICsgYyArIGQgKyBlICsgZiArIGc7Cit9CisKK3VpbnQ4X3QKK2JhciAodWludDhfdCBhLCB1aW50OF90IGIsIHVpbnQ4X3QgYywgdWludDhfdCBkLAorICAgICB1aW50OF90IGUsIHVpbnQ4X3QgZiwgdWludDhfdCBnKQoreworICByZXR1cm4gZm9vIChhLCBiLCBjLCBkLCBlLCBmLCBnKTsKK30KKworaW50CittYWluICh2b2lkKQoreworICBmZmlfdHlwZSAqZmZpdHlwZXNbTkFSR1NdOworICBpbnQgaTsKKyAgZmZpX2NpZiBjaWY7CisgIGZmaV9hcmcgcmVzdWx0ID0gMDsKKyAgdWludDhfdCBhcmdzW05BUkdTXTsKKyAgdm9pZCAqYXJncHRyc1tOQVJHU107CisKKyAgZm9yIChpID0gMDsgaSA8IE5BUkdTOyArK2kpCisgICAgZmZpdHlwZXNbaV0gPSAmZmZpX3R5cGVfdWludDg7CisKKyAgQ0hFQ0sgKGZmaV9wcmVwX2NpZiAoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCBOQVJHUywKKwkJICAgICAgICZmZmlfdHlwZV91aW50OCwgZmZpdHlwZXMpID09IEZGSV9PSyk7CisKKyAgZm9yIChpID0gMDsgaSA8IE5BUkdTOyArK2kpCisgICAgeworICAgICAgYXJnc1tpXSA9IGk7CisgICAgICBhcmdwdHJzW2ldID0gJmFyZ3NbaV07CisgICAgfQorICBmZmlfY2FsbCAoJmNpZiwgRkZJX0ZOIChiYXIpLCAmcmVzdWx0LCBhcmdwdHJzKTsKKworICBDSEVDSyAocmVzdWx0ID09IDIxKTsKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9tYW55Ml93aW4zMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbWFueTJfd2luMzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWRiZTRkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbWFueTJfd2luMzIuYwpAQCAtMCwwICsxLDYzIEBACisvKiBBcmVhOglmZmlfY2FsbAorICAgUHVycG9zZToJQ2hlY2sgc3RkY2FsbCBtYW55IGNhbGwgb24gWDg2X1dJTjMyIHN5c3RlbXMuCisgICBMaW1pdGF0aW9uczoJbm9uZS4KKyAgIFBSOgkJbm9uZS4KKyAgIE9yaWdpbmF0b3I6CUZyb20gdGhlIG9yaWdpbmFsIGZmaXRlc3QuYyAgKi8KKworLyogeyBkZy1kbyBydW4geyB0YXJnZXQgaT84Ni0qLWN5Z3dpbiogaT84Ni0qLW1pbmd3KiB9IH0gKi8KKworI2luY2x1ZGUgImZmaXRlc3QuaCIKKyNpbmNsdWRlIDxmbG9hdC5oPgorCitzdGF0aWMgZmxvYXQgX19hdHRyaWJ1dGVfXygoZmFzdGNhbGwpKSBmYXN0Y2FsbF9tYW55KGZsb2F0IGYxLAorCQkJCQkJICAgZmxvYXQgZjIsCisJCQkJCQkgICBmbG9hdCBmMywKKwkJCQkJCSAgIGZsb2F0IGY0LAorCQkJCQkJICAgZmxvYXQgZjUsCisJCQkJCQkgICBmbG9hdCBmNiwKKwkJCQkJCSAgIGZsb2F0IGY3LAorCQkJCQkJICAgZmxvYXQgZjgsCisJCQkJCQkgICBmbG9hdCBmOSwKKwkJCQkJCSAgIGZsb2F0IGYxMCwKKwkJCQkJCSAgIGZsb2F0IGYxMSwKKwkJCQkJCSAgIGZsb2F0IGYxMiwKKwkJCQkJCSAgIGZsb2F0IGYxMykKK3sKKyAgcmV0dXJuICgoZjEvZjIrZjMvZjQrZjUvZjYrZjcvZjgrZjkvZjEwK2YxMS9mMTIpICogZjEzKTsKK30KKworaW50IG1haW4gKHZvaWQpCit7CisgIGZmaV9jaWYgY2lmOworICBmZmlfdHlwZSAqYXJnc1sxM107CisgIHZvaWQgKnZhbHVlc1sxM107CisgIGZsb2F0IGZhWzEzXTsKKyAgZmxvYXQgZiwgZmY7CisgIHVuc2lnbmVkIGxvbmcgdWw7CisKKyAgZm9yICh1bCA9IDA7IHVsIDwgMTM7IHVsKyspCisgICAgeworICAgICAgYXJnc1t1bF0gPSAmZmZpX3R5cGVfZmxvYXQ7CisgICAgICB2YWx1ZXNbdWxdID0gJmZhW3VsXTsKKwlmYVt1bF0gPSAoZmxvYXQpIHVsOworICAgIH0KKworICAvKiBJbml0aWFsaXplIHRoZSBjaWYgKi8KKyAgQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9GQVNUQ0FMTCwgMTMsCisJCSAgICAgJmZmaV90eXBlX2Zsb2F0LCBhcmdzKSA9PSBGRklfT0spOworCisgIGZmID0gIGZhc3RjYWxsX21hbnkoZmFbMF0sIGZhWzFdLAorCQkgICAgIGZhWzJdLCBmYVszXSwKKwkJICAgICBmYVs0XSwgZmFbNV0sCisJCSAgICAgZmFbNl0sIGZhWzddLAorCQkgICAgIGZhWzhdLCBmYVs5XSwKKwkJICAgICBmYVsxMF0sIGZhWzExXSwgZmFbMTJdKTsKKworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4oZmFzdGNhbGxfbWFueSksICZmLCB2YWx1ZXMpOworCisgIGlmIChmIC0gZmYgPCBGTFRfRVBTSUxPTikKKyAgICBwcmludGYoImZhc3RjYWxsIG1hbnkgYXJnIHRlc3RzIG9rIVxuIik7CisgIGVsc2UKKyAgICBDSEVDSygwKTsKKyAgZXhpdCgwKTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QuYwppbmRleCA4YWE1MjdlLi5jMTVlM2EwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdC5jCkBAIC03Nyw2ICs3NywxMiBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTEsIGNsc19zdHJ1Y3RfdHlwZTI7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZTEgZV9kYmwgPSB7IDkuMCwgMi4wLCA2fTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlMiBmX2RibCA9IHsgMSwgMi4wLCAzLjB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9jb21iaW5lZCBnX2RibCA9IHt7NC4wLCA1LjAsIDZ9LAorCQkJCSAgICAgIHszLCAxLjAsIDguMH19OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9jb21iaW5lZCByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtOTIsMTIgKzk4LDYgQEAKICAgY2xzX3N0cnVjdF90eXBlMi50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUyLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHMyOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZTEgZV9kYmwgPSB7IDkuMCwgMi4wLCA2fTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlMiBmX2RibCA9IHsgMSwgMi4wLCAzLjB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9jb21iaW5lZCBnX2RibCA9IHt7NC4wLCA1LjAsIDZ9LAotCQkJCSAgICAgIHszLCAxLjAsIDguMH19OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9jb21iaW5lZCByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZmxvYXQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3NpbnQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEuYwppbmRleCAyYTlmNTE1Li4xMDg3ZjdiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxLmMKQEAgLTgxLDYgKzgxLDEzIEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZSwgY2xzX3N0cnVjdF90eXBlMSwgY2xzX3N0cnVjdF90eXBlMjsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlMSBlX2RibCA9IHsgOS4wLCAyLjAsIDZ9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUyIGZfZGJsID0geyAxLCAyLjAsIDMuMH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2NvbWJpbmVkIGdfZGJsID0ge3s0LjAsIDUuMCwgNn0sCisJCQkJICAgICAgezMsIDEuMCwgOC4wfX07CisgIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZTEgaF9kYmwgPSB7IDMuMCwgMi4wLCA0fTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfY29tYmluZWQgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTk2LDEzICsxMDMsNiBAQAogICBjbHNfc3RydWN0X3R5cGUyLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTIuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczI7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlMSBlX2RibCA9IHsgOS4wLCAyLjAsIDZ9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUyIGZfZGJsID0geyAxLCAyLjAsIDMuMH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2NvbWJpbmVkIGdfZGJsID0ge3s0LjAsIDUuMCwgNn0sCi0JCQkJICAgICAgezMsIDEuMCwgOC4wfX07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZTEgaF9kYmwgPSB7IDMuMCwgMi4wLCA0fTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfY29tYmluZWQgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2Zsb2F0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9zaW50OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEwLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MTAuYwppbmRleCBkNmE3MThiLi4zNGE3NGU3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MTAuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MTAuYwpAQCAtNjcsNiArNjcsMTIgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlLCBjbHNfc3RydWN0X3R5cGUxLCBjbHNfc3RydWN0X3R5cGUyOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s0XTsKIAorICBzdHJ1Y3QgQSBlX2RibCA9IHsgMUxMLCA3fTsKKyAgc3RydWN0IEIgZl9kYmwgPSB7IDk5LCB7MTJMTCAsIDEyN30sIDI1NX07CisgIHN0cnVjdCBDIGdfZGJsID0geyAyTEwsIDl9OworCisgIHN0cnVjdCBCIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC04MiwxMiArODgsNiBAQAogICBjbHNfc3RydWN0X3R5cGUyLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTIuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczI7CiAKLSAgc3RydWN0IEEgZV9kYmwgPSB7IDFMTCwgN307Ci0gIHN0cnVjdCBCIGZfZGJsID0geyA5OSwgezEyTEwgLCAxMjd9LCAyNTV9OwotICBzdHJ1Y3QgQyBnX2RibCA9IHsgMkxMLCA5fTsKLQotICBzdHJ1Y3QgQiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VpbnQ2NDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Mi5jCmluZGV4IGRlMTU4NGMuLjY5MjY4Y2QgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QyLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDIuYwpAQCAtNTcsNiArNTcsMTEgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlLCBjbHNfc3RydWN0X3R5cGUxOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorICBzdHJ1Y3QgQSBlX2RibCA9IHsgMSwgN307CisgIHN0cnVjdCBCIGZfZGJsID0ge3sxMiAsIDEyN30sIDk5fTsKKworICBzdHJ1Y3QgQiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtNjcsMTEgKzcyLDYgQEAKICAgY2xzX3N0cnVjdF90eXBlMS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUxLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHMxOwogCi0gIHN0cnVjdCBBIGVfZGJsID0geyAxLCA3fTsKLSAgc3RydWN0IEIgZl9kYmwgPSB7ezEyICwgMTI3fSwgOTl9OwotCi0gIHN0cnVjdCBCIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWxvbmc7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0My5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDMuYwppbmRleCA1OGFhODUzLi5hYjE4Y2FkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0My5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QzLmMKQEAgLTU4LDYgKzU4LDExIEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZSwgY2xzX3N0cnVjdF90eXBlMTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbM107CiAKKyAgc3RydWN0IEEgZV9kYmwgPSB7IDFMTCwgN307CisgIHN0cnVjdCBCIGZfZGJsID0ge3sxMkxMICwgMTI3fSwgOTl9OworCisgIHN0cnVjdCBCIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC02OCwxMSArNzMsNiBAQAogICBjbHNfc3RydWN0X3R5cGUxLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTEuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczE7CiAKLSAgc3RydWN0IEEgZV9kYmwgPSB7IDFMTCwgN307Ci0gIHN0cnVjdCBCIGZfZGJsID0ge3sxMkxMICwgMTI3fSwgOTl9OwotCi0gIHN0cnVjdCBCIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWludDY0OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDQuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q0LmMKaW5kZXggOThlNDkxZS4uMmZmYjRkNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDQuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NC5jCkBAIC01OCw2ICs1OCwxMSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTE7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzNdOwogCisgIHN0cnVjdCBBIGVfZGJsID0geyAxLjAsIDd9OworICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTIuMCAsIDEyN30sIDk5fTsKKworICBzdHJ1Y3QgQiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtNjgsMTEgKzczLDYgQEAKICAgY2xzX3N0cnVjdF90eXBlMS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUxLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHMxOwogCi0gIHN0cnVjdCBBIGVfZGJsID0geyAxLjAsIDd9OwotICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTIuMCAsIDEyN30sIDk5fTsKLQotICBzdHJ1Y3QgQiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q1LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NS5jCmluZGV4IGQ4ZTM1MzcuLjZjNzk4NDUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q1LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDUuYwpAQCAtNTgsNiArNTgsMTEgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlLCBjbHNfc3RydWN0X3R5cGUxOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorICBzdHJ1Y3QgQSBlX2RibCA9IHsgMS4wLCA3fTsKKyAgc3RydWN0IEIgZl9kYmwgPSB7ezEyLjAgLCAxMjd9LCA5OX07CisKKyAgc3RydWN0IEIgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTY4LDExICs3Myw2IEBACiAgIGNsc19zdHJ1Y3RfdHlwZTEudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlMS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzMTsKIAotICBzdHJ1Y3QgQSBlX2RibCA9IHsgMS4wLCA3fTsKLSAgc3RydWN0IEIgZl9kYmwgPSB7ezEyLjAgLCAxMjd9LCA5OX07Ci0KLSAgc3RydWN0IEIgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9sb25nZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDYuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q2LmMKaW5kZXggMmYyYjI1YS4uNTlkMzU3OSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDYuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ni5jCkBAIC02Niw2ICs2NiwxMiBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTEsIGNsc19zdHJ1Y3RfdHlwZTI7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzRdOwogCisgIHN0cnVjdCBBIGVfZGJsID0geyAxLjAsIDd9OworICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTIuMCAsIDEyN30sIDk5fTsKKyAgc3RydWN0IEMgZ19kYmwgPSB7IDIsIDl9OworCisgIHN0cnVjdCBCIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC04MSwxMiArODcsNiBAQAogICBjbHNfc3RydWN0X3R5cGUyLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTIuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczI7CiAKLSAgc3RydWN0IEEgZV9kYmwgPSB7IDEuMCwgN307Ci0gIHN0cnVjdCBCIGZfZGJsID0ge3sxMi4wICwgMTI3fSwgOTl9OwotICBzdHJ1Y3QgQyBnX2RibCA9IHsgMiwgOX07Ci0KLSAgc3RydWN0IEIgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ny5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDcuYwppbmRleCAxNGM3MDIzLi4yNzU5NWU2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ny5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q3LmMKQEAgLTU4LDYgKzU4LDExIEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZSwgY2xzX3N0cnVjdF90eXBlMTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbM107CiAKKyAgc3RydWN0IEEgZV9kYmwgPSB7IDFMTCwgN307CisgIHN0cnVjdCBCIGZfZGJsID0ge3sxMi4wICwgMTI3fSwgOTl9OworCisgIHN0cnVjdCBCIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC02OCwxMSArNzMsNiBAQAogICBjbHNfc3RydWN0X3R5cGUxLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTEuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczE7CiAKLSAgc3RydWN0IEEgZV9kYmwgPSB7IDFMTCwgN307Ci0gIHN0cnVjdCBCIGZfZGJsID0ge3sxMi4wICwgMTI3fSwgOTl9OwotCi0gIHN0cnVjdCBCIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWludDY0OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDguYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q4LmMKaW5kZXggYmI3N2VhZC4uMGU2YzY4MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDguYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OC5jCkBAIC02Niw2ICs2NiwxMiBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTEsIGNsc19zdHJ1Y3RfdHlwZTI7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzRdOwogCisgIHN0cnVjdCBBIGVfZGJsID0geyAxTEwsIDd9OworICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTJMTCAsIDEyN30sIDk5fTsKKyAgc3RydWN0IEMgZ19kYmwgPSB7IDJMTCwgOX07CisKKyAgc3RydWN0IEIgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTgxLDEyICs4Nyw2IEBACiAgIGNsc19zdHJ1Y3RfdHlwZTIudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlMi5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzMjsKIAotICBzdHJ1Y3QgQSBlX2RibCA9IHsgMUxMLCA3fTsKLSAgc3RydWN0IEIgZl9kYmwgPSB7ezEyTEwgLCAxMjd9LCA5OX07Ci0gIHN0cnVjdCBDIGdfZGJsID0geyAyTEwsIDl9OwotCi0gIHN0cnVjdCBCIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWludDY0OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q5LmMKaW5kZXggZTlmNTQxYy4uNWY3YWM2NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OS5jCkBAIC02Niw2ICs2NiwxMiBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTEsIGNsc19zdHJ1Y3RfdHlwZTI7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzRdOwogCisgIHN0cnVjdCBBIGVfZGJsID0geyAxLCA3TEx9OworICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTIuMCAsIDEyN30sIDk5fTsKKyAgc3RydWN0IEMgZ19kYmwgPSB7IDIsIDl9OworCisgIHN0cnVjdCBCIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC04MSwxMiArODcsNiBAQAogICBjbHNfc3RydWN0X3R5cGUyLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTIuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczI7CiAKLSAgc3RydWN0IEEgZV9kYmwgPSB7IDEsIDdMTH07Ci0gIHN0cnVjdCBCIGZfZGJsID0ge3sxMi4wICwgMTI3fSwgOTl9OwotICBzdHJ1Y3QgQyBnX2RibCA9IHsgMiwgOX07Ci0KLSAgc3RydWN0IEIgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWludDY0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9yZXR1cm5fc2MuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3JldHVybl9zYy5jCmluZGV4IDE5NjA4ZWUuLmEzNmNmM2UgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3JldHVybl9zYy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3JldHVybl9zYy5jCkBAIC0zMCw3ICszMCw3IEBACiAgICAgICAgc2MgPCAoc2lnbmVkIGNoYXIpIDEyNzsgc2MrKykKICAgICB7CiAgICAgICBmZmlfY2FsbCgmY2lmLCBGRklfRk4ocmV0dXJuX3NjKSwgJnJpbnQsIHZhbHVlcyk7Ci0gICAgICBDSEVDSyhyaW50ID09IChmZmlfYXJnKSBzYyk7CisgICAgICBDSEVDSygoc2lnbmVkIGNoYXIpcmludCA9PSBzYyk7CiAgICAgfQogICBleGl0KDApOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlLmMKaW5kZXggMjNhOTNiOS4uZjMyOTM4YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9sYXJnZS5jCkBAIC04MiwxNyArODIsMTcgQEAKIAlmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAJZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKLQljbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7Ci0JY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7Ci0JY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7Ci0JY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7Ci0KIAlzdHJ1Y3RfMTA4Ynl0ZSBlX2RibCA9IHsgOS4wLCAyLjAsIDYuMCwgNS4wLCAzLjAsIDQuMCwgOC4wLCAxLjAsIDEuMCwgMi4wLCAzLjAsIDcuMCwgMi4wLCA3IH07CiAJc3RydWN0XzEwOGJ5dGUgZl9kYmwgPSB7IDEuMCwgMi4wLCAzLjAsIDcuMCwgMi4wLCA1LjAsIDYuMCwgNy4wLCA0LjAsIDUuMCwgNy4wLCA5LjAsIDEuMCwgNCB9OwogCXN0cnVjdF8xMDhieXRlIGdfZGJsID0geyA0LjAsIDUuMCwgNy4wLCA5LjAsIDEuMCwgMS4wLCAyLjAsIDkuMCwgOC4wLCA2LjAsIDEuMCwgNC4wLCAwLjAsIDMgfTsKIAlzdHJ1Y3RfMTA4Ynl0ZSBoX2RibCA9IHsgOC4wLCA2LjAsIDEuMCwgNC4wLCAwLjAsIDMuMCwgMy4wLCAxLjAsIDkuMCwgMi4wLCA2LjAsIDUuMCwgMy4wLCAyIH07CiAJc3RydWN0XzEwOGJ5dGUgcmVzX2RibDsKIAorCWNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKKwljbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKKwljbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKKwljbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKKwogCWNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAJY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfZG91YmxlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9sYXJnZTIuYwppbmRleCBlMjU5OWQyLi4zYjBlZjlhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9sYXJnZTIuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9sYXJnZTIuYwpAQCAtODQsMTcgKzg0LDE3IEBACiAJZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogCWZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCi0JY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwotCWNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwotCWNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwotCWNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwotCiAJc3RydWN0XzExNmJ5dGUgZV9kYmwgPSB7IDkuMCwgMi4wLCA2LjAsIDUuMCwgMy4wLCA0LjAsIDguMCwgMS4wLCAxLjAsIDIuMCwgMy4wLCA3LjAsIDIuMCwgNS4wLCA3IH07CiAJc3RydWN0XzExNmJ5dGUgZl9kYmwgPSB7IDEuMCwgMi4wLCAzLjAsIDcuMCwgMi4wLCA1LjAsIDYuMCwgNy4wLCA0LjAsIDUuMCwgNy4wLCA5LjAsIDEuMCwgNi4wLCA0IH07CiAJc3RydWN0XzExNmJ5dGUgZ19kYmwgPSB7IDQuMCwgNS4wLCA3LjAsIDkuMCwgMS4wLCAxLjAsIDIuMCwgOS4wLCA4LjAsIDYuMCwgMS4wLCA0LjAsIDAuMCwgNy4wLCAzIH07CiAJc3RydWN0XzExNmJ5dGUgaF9kYmwgPSB7IDguMCwgNi4wLCAxLjAsIDQuMCwgMC4wLCAzLjAsIDMuMCwgMS4wLCA5LjAsIDIuMCwgNi4wLCA1LjAsIDMuMCwgOC4wLCAyIH07CiAJc3RydWN0XzExNmJ5dGUgcmVzX2RibDsKIAorCWNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKKwljbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKKwljbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKKwljbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKKwogCWNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAJY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfZG91YmxlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9tZWRpdW0uYwppbmRleCAxZmM2YTllLi45NzNlZTAyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9tZWRpdW0uYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9tZWRpdW0uYwpAQCAtNjgsMTcgKzY4LDE3IEBACiAJZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogCWZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCi0JY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwotCWNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwotCWNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwotCWNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwotCiAJc3RydWN0XzcyYnl0ZSBlX2RibCA9IHsgOS4wLCAyLjAsIDYuMCwgNS4wLCAzLjAsIDQuMCwgOC4wLCAxLjAsIDcuMCB9OwogCXN0cnVjdF83MmJ5dGUgZl9kYmwgPSB7IDEuMCwgMi4wLCAzLjAsIDcuMCwgMi4wLCA1LjAsIDYuMCwgNy4wLCA0LjAgfTsKIAlzdHJ1Y3RfNzJieXRlIGdfZGJsID0geyA0LjAsIDUuMCwgNy4wLCA5LjAsIDEuMCwgMS4wLCAyLjAsIDkuMCwgMy4wIH07CiAJc3RydWN0XzcyYnl0ZSBoX2RibCA9IHsgOC4wLCA2LjAsIDEuMCwgNC4wLCAwLjAsIDMuMCwgMy4wLCAxLjAsIDIuMCB9OwogCXN0cnVjdF83MmJ5dGUgcmVzX2RibDsKIAorCWNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKKwljbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKKwljbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKKwljbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKKwogCWNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAJY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfZG91YmxlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtMi5jCmluZGV4IGNiMmYyZmIuLjg0MzIzZDEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X21lZGl1bTIuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9tZWRpdW0yLmMKQEAgLTY5LDE3ICs2OSwxNyBAQAogCWZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKIAlmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAotCWNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKLQljbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKLQljbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKLQljbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKLQogCXN0cnVjdF83MmJ5dGUgZV9kYmwgPSB7IDkuMCwgMi4wLCA2LjAsIDUuMCwgMy4wLCA0LjAsIDguMCwgMS4wLCA3IH07CiAJc3RydWN0XzcyYnl0ZSBmX2RibCA9IHsgMS4wLCAyLjAsIDMuMCwgNy4wLCAyLjAsIDUuMCwgNi4wLCA3LjAsIDQgfTsKIAlzdHJ1Y3RfNzJieXRlIGdfZGJsID0geyA0LjAsIDUuMCwgNy4wLCA5LjAsIDEuMCwgMS4wLCAyLjAsIDkuMCwgMyB9OwogCXN0cnVjdF83MmJ5dGUgaF9kYmwgPSB7IDguMCwgNi4wLCAxLjAsIDQuMCwgMC4wLCAzLjAsIDMuMCwgMS4wLCAyIH07CiAJc3RydWN0XzcyYnl0ZSByZXNfZGJsOwogCisJY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOworCWNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOworCWNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOworCWNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOworCiAJY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfZG91YmxlOwogCWNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9kb3VibGU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJsZW4yX3dpbjMyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJsZW4yX3dpbjMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ4MTA2MQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmxlbjJfd2luMzIuYwpAQCAtMCwwICsxLDQ0IEBACisvKiBBcmVhOglmZmlfY2FsbAorICAgUHVycG9zZToJQ2hlY2sgZmFzdGNhbGwgc3RybGVuIGNhbGwgb24gWDg2X1dJTjMyIHN5c3RlbXMuCisgICBMaW1pdGF0aW9uczoJbm9uZS4KKyAgIFBSOgkJbm9uZS4KKyAgIE9yaWdpbmF0b3I6CUZyb20gdGhlIG9yaWdpbmFsIGZmaXRlc3QuYyAgKi8KKworLyogeyBkZy1kbyBydW4geyB0YXJnZXQgaT84Ni0qLWN5Z3dpbiogaT84Ni0qLW1pbmd3KiB9IH0gKi8KKworI2luY2x1ZGUgImZmaXRlc3QuaCIKKworc3RhdGljIHNpemVfdCBfX0ZBU1RDQUxMX18gbXlfZmFzdGNhbGxfc3RybGVuKGNoYXIgKnMpCit7CisgIHJldHVybiAoc3RybGVuKHMpKTsKK30KKworaW50IG1haW4gKHZvaWQpCit7CisgIGZmaV9jaWYgY2lmOworICBmZmlfdHlwZSAqYXJnc1tNQVhfQVJHU107CisgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CisgIGZmaV9hcmcgcmludDsKKyAgY2hhciAqczsKKyAgYXJnc1swXSA9ICZmZmlfdHlwZV9wb2ludGVyOworICB2YWx1ZXNbMF0gPSAodm9pZCopICZzOworICAKKyAgLyogSW5pdGlhbGl6ZSB0aGUgY2lmICovCisgIENIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfRkFTVENBTEwsIDEsCisJCSAgICAgICAmZmZpX3R5cGVfc2ludCwgYXJncykgPT0gRkZJX09LKTsKKyAgCisgIHMgPSAiYSI7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9zdHJsZW4pLCAmcmludCwgdmFsdWVzKTsKKyAgQ0hFQ0socmludCA9PSAxKTsKKyAgCisgIHMgPSAiMTIzNDU2NyI7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9zdHJsZW4pLCAmcmludCwgdmFsdWVzKTsKKyAgQ0hFQ0socmludCA9PSA3KTsKKyAgCisgIHMgPSAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NSI7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9zdHJsZW4pLCAmcmludCwgdmFsdWVzKTsKKyAgQ0hFQ0socmludCA9PSAyNSk7CisgIAorICBwcmludGYoImZhc3RjYWxsIHN0cmxlbiB0ZXN0cyBwYXNzZWRcbiIpOworICBleGl0KDApOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MS5jCmluZGV4IGVhNzZjODUuLmJmYzIzZjYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDEuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QxLmMKQEAgLTMwLDYgKzMwLDEzIEBACiAgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CiAgIGZmaV90eXBlIHRzMV90eXBlOwogICBmZmlfdHlwZSAqdHMxX3R5cGVfZWxlbWVudHNbNF07CisKKyAgdGVzdF9zdHJ1Y3R1cmVfMSB0czFfYXJnOworCisgIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLworICB0ZXN0X3N0cnVjdHVyZV8xICp0czFfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfMSAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV8xKSk7CisKICAgdHMxX3R5cGUuc2l6ZSA9IDA7CiAgIHRzMV90eXBlLmFsaWdubWVudCA9IDA7CiAgIHRzMV90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC0zOSwxMSArNDYsNiBAQAogICB0czFfdHlwZV9lbGVtZW50c1syXSA9ICZmZmlfdHlwZV91aW50OwogICB0czFfdHlwZV9lbGVtZW50c1szXSA9IE5VTEw7CiAgIAotICB0ZXN0X3N0cnVjdHVyZV8xIHRzMV9hcmc7Ci0gIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLwotICB0ZXN0X3N0cnVjdHVyZV8xICp0czFfcmVzdWx0ID0gCi0gICAgKHRlc3Rfc3RydWN0dXJlXzEgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfMSkpOwotICAKICAgYXJnc1swXSA9ICZ0czFfdHlwZTsKICAgdmFsdWVzWzBdID0gJnRzMV9hcmc7CiAgIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MV93aW4zMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MV93aW4zMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3NTZmNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QxX3dpbjMyLmMKQEAgLTAsMCArMSw2NyBAQAorLyogQXJlYToJZmZpX2NhbGwKKyAgIFB1cnBvc2U6CUNoZWNrIHN0cnVjdHVyZXMgd2l0aCBmYXN0Y2FsbC90aGlzY2FsbCBjb252ZW50aW9uLgorICAgTGltaXRhdGlvbnM6CW5vbmUuCisgICBQUjoJCW5vbmUuCisgICBPcmlnaW5hdG9yOglGcm9tIHRoZSBvcmlnaW5hbCBmZml0ZXN0LmMgICovCisKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGk/ODYtKi1jeWd3aW4qIGk/ODYtKi1taW5ndyogfSB9ICovCisjaW5jbHVkZSAiZmZpdGVzdC5oIgorCit0eXBlZGVmIHN0cnVjdAoreworICB1bnNpZ25lZCBjaGFyIHVjOworICBkb3VibGUgZDsKKyAgdW5zaWduZWQgaW50IHVpOworfSB0ZXN0X3N0cnVjdHVyZV8xOworCitzdGF0aWMgdGVzdF9zdHJ1Y3R1cmVfMSBfX0ZBU1RDQUxMX18gc3RydWN0MSh0ZXN0X3N0cnVjdHVyZV8xIHRzKQoreworICB0cy51YysrOworICB0cy5kLS07CisgIHRzLnVpKys7CisKKyAgcmV0dXJuIHRzOworfQorCitpbnQgbWFpbiAodm9pZCkKK3sKKyAgZmZpX2NpZiBjaWY7CisgIGZmaV90eXBlICphcmdzW01BWF9BUkdTXTsKKyAgdm9pZCAqdmFsdWVzW01BWF9BUkdTXTsKKyAgZmZpX3R5cGUgdHMxX3R5cGU7CisgIGZmaV90eXBlICp0czFfdHlwZV9lbGVtZW50c1s0XTsKKworICB0ZXN0X3N0cnVjdHVyZV8xIHRzMV9hcmc7CisKKyAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCisgIHRlc3Rfc3RydWN0dXJlXzEgKnRzMV9yZXN1bHQgPQorICAgICh0ZXN0X3N0cnVjdHVyZV8xICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzEpKTsKKworICB0czFfdHlwZS5zaXplID0gMDsKKyAgdHMxX3R5cGUuYWxpZ25tZW50ID0gMDsKKyAgdHMxX3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKKyAgdHMxX3R5cGUuZWxlbWVudHMgPSB0czFfdHlwZV9lbGVtZW50czsKKyAgdHMxX3R5cGVfZWxlbWVudHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CisgIHRzMV90eXBlX2VsZW1lbnRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKKyAgdHMxX3R5cGVfZWxlbWVudHNbMl0gPSAmZmZpX3R5cGVfdWludDsKKyAgdHMxX3R5cGVfZWxlbWVudHNbM10gPSBOVUxMOworICAKKyAgYXJnc1swXSA9ICZ0czFfdHlwZTsKKyAgdmFsdWVzWzBdID0gJnRzMV9hcmc7CisgIAorICAvKiBJbml0aWFsaXplIHRoZSBjaWYgKi8KKyAgQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9GQVNUQ0FMTCwgMSwgCisJCSAgICAgJnRzMV90eXBlLCBhcmdzKSA9PSBGRklfT0spOworICAKKyAgdHMxX2FyZy51YyA9ICdceDAxJzsKKyAgdHMxX2FyZy5kID0gMy4xNDE1OTsKKyAgdHMxX2FyZy51aSA9IDU1NTsKKworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4oc3RydWN0MSksIHRzMV9yZXN1bHQsIHZhbHVlcyk7CisgIAorICBDSEVDSyh0czFfcmVzdWx0LT51aSA9PSA1NTYpOworICBDSEVDSyh0czFfcmVzdWx0LT5kID09IDMuMTQxNTkgLSAxKTsKKyAKKyAgZnJlZSAodHMxX3Jlc3VsdCk7CisgIGV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyLmMKaW5kZXggMTRiYzlmZC4uZDg1Mzg1ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Mi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDIuYwpAQCAtMjksNiArMjksMTEgQEAKICAgdGVzdF9zdHJ1Y3R1cmVfMiB0czJfYXJnOwogICBmZmlfdHlwZSB0czJfdHlwZTsKICAgZmZpX3R5cGUgKnRzMl90eXBlX2VsZW1lbnRzWzNdOworCisgIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLworICB0ZXN0X3N0cnVjdHVyZV8yICp0czJfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfMiAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV8yKSk7CisKICAgdHMyX3R5cGUuc2l6ZSA9IDA7CiAgIHRzMl90eXBlLmFsaWdubWVudCA9IDA7CiAgIHRzMl90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC0zNywxMSArNDIsNiBAQAogICB0czJfdHlwZV9lbGVtZW50c1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIHRzMl90eXBlX2VsZW1lbnRzWzJdID0gTlVMTDsKIAotICAKLSAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCi0gIHRlc3Rfc3RydWN0dXJlXzIgKnRzMl9yZXN1bHQgPSAKLSAgICAodGVzdF9zdHJ1Y3R1cmVfMiAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV8yKSk7Ci0gIAogICBhcmdzWzBdID0gJnRzMl90eXBlOwogICB2YWx1ZXNbMF0gPSAmdHMyX2FyZzsKICAgCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyX3dpbjMyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyX3dpbjMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQwMjI4NQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDJfd2luMzIuYwpAQCAtMCwwICsxLDY3IEBACisvKiBBcmVhOglmZmlfY2FsbAorICAgUHVycG9zZToJQ2hlY2sgc3RydWN0dXJlcyBpbiBmYXN0Y2FsbC9zdGRjYWxsIGZ1bmN0aW9uCisgICBMaW1pdGF0aW9uczoJbm9uZS4KKyAgIFBSOgkJbm9uZS4KKyAgIE9yaWdpbmF0b3I6CUZyb20gdGhlIG9yaWdpbmFsIGZmaXRlc3QuYyAgKi8KKworLyogeyBkZy1kbyBydW4geyB0YXJnZXQgaT84Ni0qLWN5Z3dpbiogaT84Ni0qLW1pbmd3KiB9IH0gKi8KKyNpbmNsdWRlICJmZml0ZXN0LmgiCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIGRvdWJsZSBkMTsKKyAgZG91YmxlIGQyOworfSB0ZXN0X3N0cnVjdHVyZV8yOworCitzdGF0aWMgdGVzdF9zdHJ1Y3R1cmVfMiBfX0ZBU1RDQUxMX18gc3RydWN0Mih0ZXN0X3N0cnVjdHVyZV8yIHRzKQoreworICB0cy5kMS0tOworICB0cy5kMi0tOworCisgIHJldHVybiB0czsKK30KKworaW50IG1haW4gKHZvaWQpCit7CisgIGZmaV9jaWYgY2lmOworICBmZmlfdHlwZSAqYXJnc1tNQVhfQVJHU107CisgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CisgIHRlc3Rfc3RydWN0dXJlXzIgdHMyX2FyZzsKKyAgZmZpX3R5cGUgdHMyX3R5cGU7CisgIGZmaV90eXBlICp0czJfdHlwZV9lbGVtZW50c1szXTsKKworICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KKyAgdGVzdF9zdHJ1Y3R1cmVfMiAqdHMyX3Jlc3VsdCA9CisgICAgKHRlc3Rfc3RydWN0dXJlXzIgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfMikpOworCisgIHRzMl90eXBlLnNpemUgPSAwOworICB0czJfdHlwZS5hbGlnbm1lbnQgPSAwOworICB0czJfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOworICB0czJfdHlwZS5lbGVtZW50cyA9IHRzMl90eXBlX2VsZW1lbnRzOworICB0czJfdHlwZV9lbGVtZW50c1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CisgIHRzMl90eXBlX2VsZW1lbnRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKKyAgdHMyX3R5cGVfZWxlbWVudHNbMl0gPSBOVUxMOworCisgIGFyZ3NbMF0gPSAmdHMyX3R5cGU7CisgIHZhbHVlc1swXSA9ICZ0czJfYXJnOworICAKKyAgLyogSW5pdGlhbGl6ZSB0aGUgY2lmICovCisgIENIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfRkFTVENBTEwsIDEsICZ0czJfdHlwZSwgYXJncykgPT0gRkZJX09LKTsKKyAgCisgIHRzMl9hcmcuZDEgPSA1LjU1OworICB0czJfYXJnLmQyID0gNi42NjsKKyAgCisgIHByaW50ZiAoIiVnXG4iLCB0czJfYXJnLmQxKTsKKyAgcHJpbnRmICgiJWdcbiIsIHRzMl9hcmcuZDIpOworICAKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKHN0cnVjdDIpLCB0czJfcmVzdWx0LCB2YWx1ZXMpOworICAKKyAgcHJpbnRmICgiJWdcbiIsIHRzMl9yZXN1bHQtPmQxKTsKKyAgcHJpbnRmICgiJWdcbiIsIHRzMl9yZXN1bHQtPmQyKTsKKyAgCisgIENIRUNLKHRzMl9yZXN1bHQtPmQxID09IDUuNTUgLSAxKTsKKyAgQ0hFQ0sodHMyX3Jlc3VsdC0+ZDIgPT0gNi42NiAtIDEpOworICAKKyAgZnJlZSAodHMyX3Jlc3VsdCk7CisgIGV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QzLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QzLmMKaW5kZXggZTBiYjA5Yi4uZGU4ODNjMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0My5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDMuYwpAQCAtMjcsNiArMjcsMTEgQEAKICAgaW50IGNvbXBhcmVfdmFsdWU7CiAgIGZmaV90eXBlIHRzM190eXBlOwogICBmZmlfdHlwZSAqdHMzX3R5cGVfZWxlbWVudHNbMl07CisKKyAgdGVzdF9zdHJ1Y3R1cmVfMyB0czNfYXJnOworICB0ZXN0X3N0cnVjdHVyZV8zICp0czNfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfMyAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV8zKSk7CisKICAgdHMzX3R5cGUuc2l6ZSA9IDA7CiAgIHRzM190eXBlLmFsaWdubWVudCA9IDA7CiAgIHRzM190eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC0zNCwxMCArMzksNiBAQAogICB0czNfdHlwZV9lbGVtZW50c1swXSA9ICZmZmlfdHlwZV9zaW50OwogICB0czNfdHlwZV9lbGVtZW50c1sxXSA9IE5VTEw7CiAKLSAgdGVzdF9zdHJ1Y3R1cmVfMyB0czNfYXJnOwotICB0ZXN0X3N0cnVjdHVyZV8zICp0czNfcmVzdWx0ID0gCi0gICAgKHRlc3Rfc3RydWN0dXJlXzMgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfMykpOwotICAKICAgYXJnc1swXSA9ICZ0czNfdHlwZTsKICAgdmFsdWVzWzBdID0gJnRzM19hcmc7CiAgIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0NC5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0NC5jCmluZGV4IDBhZDBhODMuLjQ4ZTAzNDkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDQuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q0LmMKQEAgLTI4LDIxICsyOCwyMiBAQAogICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOwogICBmZmlfdHlwZSB0czRfdHlwZTsKICAgZmZpX3R5cGUgKnRzNF90eXBlX2VsZW1lbnRzWzRdOyAgCisKKyAgdGVzdF9zdHJ1Y3R1cmVfNCB0czRfYXJnOworCisgIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLworICB0ZXN0X3N0cnVjdHVyZV80ICp0czRfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfNCAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV80KSk7CisKICAgdHM0X3R5cGUuc2l6ZSA9IDA7CiAgIHRzNF90eXBlLmFsaWdubWVudCA9IDA7CiAgIHRzNF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7Ci0gIHRlc3Rfc3RydWN0dXJlXzQgdHM0X2FyZzsKICAgdHM0X3R5cGUuZWxlbWVudHMgPSB0czRfdHlwZV9lbGVtZW50czsKICAgdHM0X3R5cGVfZWxlbWVudHNbMF0gPSAmZmZpX3R5cGVfdWludDsKICAgdHM0X3R5cGVfZWxlbWVudHNbMV0gPSAmZmZpX3R5cGVfdWludDsKICAgdHM0X3R5cGVfZWxlbWVudHNbMl0gPSAmZmZpX3R5cGVfdWludDsKICAgdHM0X3R5cGVfZWxlbWVudHNbM10gPSBOVUxMOwogCi0gIAotICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KLSAgdGVzdF9zdHJ1Y3R1cmVfNCAqdHM0X3Jlc3VsdCA9IAotICAgICh0ZXN0X3N0cnVjdHVyZV80ICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzQpKTsKLSAgCiAgIGFyZ3NbMF0gPSAmdHM0X3R5cGU7CiAgIHZhbHVlc1swXSA9ICZ0czRfYXJnOwogICAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDUuYwppbmRleCBjMDNjYzk3Li4yOGIxZjBjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q1LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0NS5jCkBAIC0yNyw2ICsyNywxMyBAQAogICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOwogICBmZmlfdHlwZSB0czVfdHlwZTsKICAgZmZpX3R5cGUgKnRzNV90eXBlX2VsZW1lbnRzWzNdOworCisgIHRlc3Rfc3RydWN0dXJlXzUgdHM1X2FyZzEsIHRzNV9hcmcyOworCisgIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLworICB0ZXN0X3N0cnVjdHVyZV81ICp0czVfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfNSAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV81KSk7CisKICAgdHM1X3R5cGUuc2l6ZSA9IDA7CiAgIHRzNV90eXBlLmFsaWdubWVudCA9IDA7CiAgIHRzNV90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC0zNSwxMiArNDIsNiBAQAogICB0czVfdHlwZV9lbGVtZW50c1sxXSA9ICZmZmlfdHlwZV9zY2hhcjsKICAgdHM1X3R5cGVfZWxlbWVudHNbMl0gPSBOVUxMOwogCi0gIHRlc3Rfc3RydWN0dXJlXzUgdHM1X2FyZzEsIHRzNV9hcmcyOwotICAKLSAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCi0gIHRlc3Rfc3RydWN0dXJlXzUgKnRzNV9yZXN1bHQgPSAKLSAgICAodGVzdF9zdHJ1Y3R1cmVfNSAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV81KSk7Ci0gIAogICBhcmdzWzBdID0gJnRzNV90eXBlOwogICBhcmdzWzFdID0gJnRzNV90eXBlOwogICB2YWx1ZXNbMF0gPSAmdHM1X2FyZzE7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q2LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q2LmMKaW5kZXggODNkYjlhZi4uMGUyNjc0NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ni5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDYuYwpAQCAtMjcsNiArMjcsMTMgQEAKICAgdm9pZCAqdmFsdWVzW01BWF9BUkdTXTsKICAgZmZpX3R5cGUgdHM2X3R5cGU7CiAgIGZmaV90eXBlICp0czZfdHlwZV9lbGVtZW50c1szXTsKKworICB0ZXN0X3N0cnVjdHVyZV82IHRzNl9hcmc7CisKKyAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCisgIHRlc3Rfc3RydWN0dXJlXzYgKnRzNl9yZXN1bHQgPQorICAgICh0ZXN0X3N0cnVjdHVyZV82ICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzYpKTsKKwogICB0czZfdHlwZS5zaXplID0gMDsKICAgdHM2X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgdHM2X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTM1LDEzICs0Miw2IEBACiAgIHRzNl90eXBlX2VsZW1lbnRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgdHM2X3R5cGVfZWxlbWVudHNbMl0gPSBOVUxMOwogCi0KLSAgdGVzdF9zdHJ1Y3R1cmVfNiB0czZfYXJnOwotCi0gIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLwotICB0ZXN0X3N0cnVjdHVyZV82ICp0czZfcmVzdWx0ID0gCi0gICAgKHRlc3Rfc3RydWN0dXJlXzYgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfNikpOwotICAKICAgYXJnc1swXSA9ICZ0czZfdHlwZTsKICAgdmFsdWVzWzBdID0gJnRzNl9hcmc7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDcuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDcuYwppbmRleCA1OGFhYzRjLi44ZjJiYmZkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q3LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ny5jCkBAIC0yOSw2ICsyOSwxMyBAQAogICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOwogICBmZmlfdHlwZSB0czdfdHlwZTsKICAgZmZpX3R5cGUgKnRzN190eXBlX2VsZW1lbnRzWzRdOworCisgIHRlc3Rfc3RydWN0dXJlXzcgdHM3X2FyZzsKKworICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KKyAgdGVzdF9zdHJ1Y3R1cmVfNyAqdHM3X3Jlc3VsdCA9CisgICAgKHRlc3Rfc3RydWN0dXJlXzcgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfNykpOworCiAgIHRzN190eXBlLnNpemUgPSAwOwogICB0czdfdHlwZS5hbGlnbm1lbnQgPSAwOwogICB0czdfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtMzgsMTMgKzQ1LDYgQEAKICAgdHM3X3R5cGVfZWxlbWVudHNbMl0gPSAmZmZpX3R5cGVfZG91YmxlOwogICB0czdfdHlwZV9lbGVtZW50c1szXSA9IE5VTEw7CiAKLQotICB0ZXN0X3N0cnVjdHVyZV83IHRzN19hcmc7Ci0gIAotICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KLSAgdGVzdF9zdHJ1Y3R1cmVfNyAqdHM3X3Jlc3VsdCA9IAotICAgICh0ZXN0X3N0cnVjdHVyZV83ICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzcpKTsKLSAgCiAgIGFyZ3NbMF0gPSAmdHM3X3R5cGU7CiAgIHZhbHVlc1swXSA9ICZ0czdfYXJnOwogICAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDguYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDguYwppbmRleCBjNzczYWM3Li4yNjZlMWYwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q4LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0OC5jCkBAIC0zMSw2ICszMSwxMyBAQAogICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOwogICBmZmlfdHlwZSB0czhfdHlwZTsKICAgZmZpX3R5cGUgKnRzOF90eXBlX2VsZW1lbnRzWzVdOworCisgIHRlc3Rfc3RydWN0dXJlXzggdHM4X2FyZzsKKworICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KKyAgdGVzdF9zdHJ1Y3R1cmVfOCAqdHM4X3Jlc3VsdCA9CisgICAgKHRlc3Rfc3RydWN0dXJlXzggKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfOCkpOworCiAgIHRzOF90eXBlLnNpemUgPSAwOwogICB0czhfdHlwZS5hbGlnbm1lbnQgPSAwOwogICB0czhfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtNDEsMTIgKzQ4LDYgQEAKICAgdHM4X3R5cGVfZWxlbWVudHNbM10gPSAmZmZpX3R5cGVfZmxvYXQ7CiAgIHRzOF90eXBlX2VsZW1lbnRzWzRdID0gTlVMTDsKIAotICB0ZXN0X3N0cnVjdHVyZV84IHRzOF9hcmc7Ci0gIAotICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KLSAgdGVzdF9zdHJ1Y3R1cmVfOCAqdHM4X3Jlc3VsdCA9IAotICAgICh0ZXN0X3N0cnVjdHVyZV84ICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzgpKTsKLSAgCiAgIGFyZ3NbMF0gPSAmdHM4X3R5cGU7CiAgIHZhbHVlc1swXSA9ICZ0czhfYXJnOwogICAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDkuYwppbmRleCBmMzAwOTFmLi5lZmViNzE2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q5LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0OS5jCkBAIC0yOCw2ICsyOCwxMyBAQAogICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOwogICBmZmlfdHlwZSB0czlfdHlwZTsKICAgZmZpX3R5cGUgKnRzOV90eXBlX2VsZW1lbnRzWzNdOworCisgIHRlc3Rfc3RydWN0dXJlXzkgdHM5X2FyZzsKKworICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KKyAgdGVzdF9zdHJ1Y3R1cmVfOSAqdHM5X3Jlc3VsdCA9CisgICAgKHRlc3Rfc3RydWN0dXJlXzkgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfOSkpOworCiAgIHRzOV90eXBlLnNpemUgPSAwOwogICB0czlfdHlwZS5hbGlnbm1lbnQgPSAwOwogICB0czlfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtMzYsMTIgKzQzLDYgQEAKICAgdHM5X3R5cGVfZWxlbWVudHNbMV0gPSAmZmZpX3R5cGVfc2ludDsKICAgdHM5X3R5cGVfZWxlbWVudHNbMl0gPSBOVUxMOwogCi0gIHRlc3Rfc3RydWN0dXJlXzkgdHM5X2FyZzsKLSAgCi0gIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLwotICB0ZXN0X3N0cnVjdHVyZV85ICp0czlfcmVzdWx0ID0gCi0gICAgKHRlc3Rfc3RydWN0dXJlXzkgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfOSkpOwotICAKICAgYXJnc1swXSA9ICZ0czlfdHlwZTsKICAgdmFsdWVzWzBdID0gJnRzOV9hcmc7CiAgIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvdGVzdGNsb3N1cmUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3Rlc3RjbG9zdXJlLmMKaW5kZXggMTYxY2M4OS4uY2EzMTA1NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvdGVzdGNsb3N1cmUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC90ZXN0Y2xvc3VyZS5jCkBAIC00MywxMyArNDMsMTMgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlMDsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfY29tYmluZWQgZ19kYmwgPSB7NC4wLCA1LjAsIDEuMCwgOC4wfTsKKwogICBjbHNfc3RydWN0X3R5cGUwLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUwLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZTAudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlMC5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzMDsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF9jb21iaW5lZCBnX2RibCA9IHs0LjAsIDUuMCwgMS4wLCA4LjB9OwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzMFswXSA9ICZmZmlfdHlwZV9mbG9hdDsKICAgY2xzX3N0cnVjdF9maWVsZHMwWzFdID0gJmZmaV90eXBlX2Zsb2F0OwogICBjbHNfc3RydWN0X2ZpZWxkczBbMl0gPSAmZmZpX3R5cGVfZmxvYXQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuc3BlY2lhbC9zcGVjaWFsLmV4cCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5zcGVjaWFsL3NwZWNpYWwuZXhwCmluZGV4IGUxNjdlODYuLjc0NjcxYjEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5zcGVjaWFsL3NwZWNpYWwuZXhwCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5zcGVjaWFsL3NwZWNpYWwuZXhwCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMTQsOCArMTQsNiBAQAogIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQogIyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKLWxvYWRfbGliIGxpYmZmaS1kZy5leHAKLQogZGctaW5pdAogbGliZmZpLWluaXQKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL3N0Z2RpY3QuYyBiL01vZHVsZXMvX2N0eXBlcy9zdGdkaWN0LmMKaW5kZXggMjMzODgxOC4uMjVkOTk5NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL3N0Z2RpY3QuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvc3RnZGljdC5jCkBAIC00MjYsOSArNDI2LDkgQEAKICAgICAgICAgU3RnRGljdE9iamVjdCAqZGljdDsKICAgICAgICAgaW50IGJpdHNpemUgPSAwOwogCi0gICAgICAgIGlmICghcGFpciB8fCAhUHlBcmdfUGFyc2VUdXBsZShwYWlyLCAiT098aSIsICZuYW1lLCAmZGVzYywgJmJpdHNpemUpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIidfZmllbGRzXycgbXVzdCBiZSBhIHNlcXVlbmNlIG9mIHBhaXJzIik7CisgICAgICAgIGlmICghcGFpciB8fCAhUHlBcmdfUGFyc2VUdXBsZShwYWlyLCAiVU98aSIsICZuYW1lLCAmZGVzYywgJmJpdHNpemUpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICInX2ZpZWxkc18nIG11c3QgYmUgYSBzZXF1ZW5jZSBvZiAobmFtZSwgQyB0eXBlKSBwYWlycyIpOwogICAgICAgICAgICAgUHlfWERFQ1JFRihwYWlyKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpAQCAtNDc4LDYgKzQ3OCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgYml0c2l6ZSA9IDA7CisKICAgICAgICAgaWYgKGlzU3RydWN0ICYmICFpc1BhY2tlZCkgewogICAgICAgICAgICAgY2hhciAqZmllbGRmbXQgPSBkaWN0LT5mb3JtYXQgPyBkaWN0LT5mb3JtYXQgOiAiQiI7CiAgICAgICAgICAgICBjaGFyICpmaWVsZG5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOwpAQCAtNDg3LDEwICs0ODgsNiBAQAogCiAgICAgICAgICAgICBpZiAoZmllbGRuYW1lID09IE5VTEwpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cnVjdHVyZSBmaWVsZCBuYW1lIG11c3QgYmUgc3RyaW5nIG5vdCAlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUtPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocGFpcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQpAQCAtNTE1LDYgKzUxMiw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQogICAgICAgICB9CisKICAgICAgICAgaWYgKGlzU3RydWN0KSB7CiAgICAgICAgICAgICBwcm9wID0gUHlDRmllbGRfRnJvbURlc2MoZGVzYywgaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpZWxkX3NpemUsIGJpdHNpemUsICZiaXRvZnMsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYyBiL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jCmluZGV4IDg1NjFhMmUuLjFjN2QwODQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jCisrKyBiL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jCkBAIC0xNiw4ICsxNiwzNyBAQAogCiAjaW5jbHVkZSA8cGFuZWwuaD4KIAotc3RhdGljIFB5T2JqZWN0ICpQeUN1cnNlc0Vycm9yOwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0ICpQeUN1cnNlc0Vycm9yOworICAgIFB5T2JqZWN0ICpQeUN1cnNlc1BhbmVsX1R5cGU7Cit9IF9jdXJzZXNfcGFuZWxzdGF0ZTsKIAorI2RlZmluZSBfY3Vyc2VzX3BhbmVsc3RhdGUobykgKChfY3Vyc2VzX3BhbmVsc3RhdGUgKilQeU1vZHVsZV9HZXRTdGF0ZShvKSkKKworc3RhdGljIGludAorX2N1cnNlc19wYW5lbF9jbGVhcihQeU9iamVjdCAqbSkKK3sKKyAgICBQeV9DTEVBUihfY3Vyc2VzX3BhbmVsc3RhdGUobSktPlB5Q3Vyc2VzRXJyb3IpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitfY3Vyc2VzX3BhbmVsX3RyYXZlcnNlKFB5T2JqZWN0ICptLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChfY3Vyc2VzX3BhbmVsc3RhdGUobSktPlB5Q3Vyc2VzRXJyb3IpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorX2N1cnNlc19wYW5lbF9mcmVlKHZvaWQgKm0pCit7CisgICAgX2N1cnNlc19wYW5lbF9jbGVhcigoUHlPYmplY3QgKikgbSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX2N1cnNlc19wYW5lbG1vZHVsZTsKKworI2RlZmluZSBfY3Vyc2VzX3BhbmVsc3RhdGVfZ2xvYmFsIFwKKygoX2N1cnNlc19wYW5lbHN0YXRlICopIFB5TW9kdWxlX0dldFN0YXRlKFB5U3RhdGVfRmluZE1vZHVsZSgmX2N1cnNlc19wYW5lbG1vZHVsZSkpKQogCiAvKiBVdGlsaXR5IEZ1bmN0aW9ucyAqLwogCkBAIC0zNCw5ICs2Myw5IEBACiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChmbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlDdXJzZXNFcnJvciwgY2F0Y2hhbGxfRVJSKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhfY3Vyc2VzX3BhbmVsc3RhdGVfZ2xvYmFsLT5QeUN1cnNlc0Vycm9yLCBjYXRjaGFsbF9FUlIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5Q3Vyc2VzRXJyb3IsICIlcygpIHJldHVybmVkIEVSUiIsIGZuYW1lKTsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3Vyc2VzX3BhbmVsc3RhdGVfZ2xvYmFsLT5QeUN1cnNlc0Vycm9yLCAiJXMoKSByZXR1cm5lZCBFUlIiLCBmbmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNTQsOSArODMsOCBAQAogICAgIFB5Q3Vyc2VzV2luZG93T2JqZWN0ICp3bzsgICAvKiBmb3IgcmVmZXJlbmNlIGNvdW50cyAqLwogfSBQeUN1cnNlc1BhbmVsT2JqZWN0OwogCi1QeVR5cGVPYmplY3QgUHlDdXJzZXNQYW5lbF9UeXBlOwotCi0jZGVmaW5lIFB5Q3Vyc2VzUGFuZWxfQ2hlY2sodikgICAoUHlfVFlQRSh2KSA9PSAmUHlDdXJzZXNQYW5lbF9UeXBlKQorI2RlZmluZSBQeUN1cnNlc1BhbmVsX0NoZWNrKHYpICBcCisgKFB5X1RZUEUodikgPT0gX2N1cnNlc19wYW5lbHN0YXRlX2dsb2JhbC0+UHlDdXJzZXNQYW5lbF9UeXBlKQogCiAvKiBTb21lIGhlbHBlciBmdW5jdGlvbnMuIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlcmUncyBhbHdheXMgYSB3aW5kb3cKICAgIGFzc29jaWF0ZWQgd2l0aCBhIHBhbmVsLiBUbyBlbnN1cmUgdGhhdCBQeXRob24ncyBHQyBkb2Vzbid0IHB1bGwKQEAgLTE3NSw3ICsyMDMsOCBAQAogewogICAgIFB5Q3Vyc2VzUGFuZWxPYmplY3QgKnBvOwogCi0gICAgcG8gPSBQeU9iamVjdF9ORVcoUHlDdXJzZXNQYW5lbE9iamVjdCwgJlB5Q3Vyc2VzUGFuZWxfVHlwZSk7CisgICAgcG8gPSBQeU9iamVjdF9ORVcoUHlDdXJzZXNQYW5lbE9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAoUHlUeXBlT2JqZWN0ICopKF9jdXJzZXNfcGFuZWxzdGF0ZV9nbG9iYWwpLT5QeUN1cnNlc1BhbmVsX1R5cGUpOwogICAgIGlmIChwbyA9PSBOVUxMKSByZXR1cm4gTlVMTDsKICAgICBwby0+cGFuID0gcGFuOwogICAgIGlmIChpbnNlcnRfbG9wKHBvKSA8IDApIHsKQEAgLTI4MCw3ICszMDksNyBAQAogCiAgICAgcnRuID0gcmVwbGFjZV9wYW5lbChzZWxmLT5wYW4sIHRlbXAtPndpbik7CiAgICAgaWYgKHJ0biA9PSBFUlIpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5Q3Vyc2VzRXJyb3IsICJyZXBsYWNlX3BhbmVsKCkgcmV0dXJuZWQgRVJSIik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhfY3Vyc2VzX3BhbmVsc3RhdGVfZ2xvYmFsLT5QeUN1cnNlc0Vycm9yLCAicmVwbGFjZV9wYW5lbCgpIHJldHVybmVkIEVSUiIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfREVDUkVGKHBvLT53byk7CkBAIC0zMDUsNyArMzM0LDcgQEAKICAgICBQeUN1cnNlc0luaXRpYWxpc2VkOwogICAgIG9iaiA9IChQeU9iamVjdCAqKSBwYW5lbF91c2VycHRyKHNlbGYtPnBhbik7CiAgICAgaWYgKG9iaiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUN1cnNlc0Vycm9yLCAibm8gdXNlcnB0ciBzZXQiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKF9jdXJzZXNfcGFuZWxzdGF0ZV9nbG9iYWwtPlB5Q3Vyc2VzRXJyb3IsICJubyB1c2VycHRyIHNldCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTMzNCwzNiArMzYzLDE4IEBACiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCi1QeVR5cGVPYmplY3QgUHlDdXJzZXNQYW5lbF9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJfY3Vyc2VzX3BhbmVsLmN1cnNlcyBwYW5lbCIsICAgICAgIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKFB5Q3Vyc2VzUGFuZWxPYmplY3QpLCAgICAgICAgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCi0gICAgLyogbWV0aG9kcyAqLwotICAgIChkZXN0cnVjdG9yKVB5Q3Vyc2VzUGFuZWxfRGVhbGxvYywgLyp0cF9kZWFsbG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2hhc2gqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKnRwX2ZsYWdzKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pdGVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQqLwotICAgIFB5Q3Vyc2VzUGFuZWxfTWV0aG9kcywgLyp0cF9tZXRob2RzKi8KK3N0YXRpYyBQeVR5cGVfU2xvdCBQeUN1cnNlc1BhbmVsX1R5cGVfc2xvdHNbXSA9IHsKKyAgICB7UHlfdHBfZGVhbGxvYywgUHlDdXJzZXNQYW5lbF9EZWFsbG9jfSwKKyAgICB7UHlfdHBfbWV0aG9kcywgUHlDdXJzZXNQYW5lbF9NZXRob2RzfSwKKyAgICB7MCwgMH0sCit9OworCitzdGF0aWMgUHlUeXBlX1NwZWMgUHlDdXJzZXNQYW5lbF9UeXBlX3NwZWMgPSB7CisgICAgIl9jdXJzZXNfcGFuZWwuY3Vyc2VzIHBhbmVsIiwKKyAgICBzaXplb2YoUHlDdXJzZXNQYW5lbE9iamVjdCksCisgICAgMCwKKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsCisgICAgUHlDdXJzZXNQYW5lbF9UeXBlX3Nsb3RzCiB9OwogCiAvKiBXcmFwcGVyIGZvciBwYW5lbF9hYm92ZShOVUxMKS4gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBib3R0b20KQEAgLTQwNSw3ICs0MTYsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBwYW4gPSBuZXdfcGFuZWwod2luLT53aW4pOwogICAgIGlmIChwYW4gPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlDdXJzZXNFcnJvciwgY2F0Y2hhbGxfTlVMTCk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhfY3Vyc2VzX3BhbmVsc3RhdGVfZ2xvYmFsLT5QeUN1cnNlc0Vycm9yLCBjYXRjaGFsbF9OVUxMKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1BhbmVsX05ldyhwYW4sIHdpbik7CkBAIC00NjcsMTIgKzQ3OCwxMiBAQAogICAgICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCiAgICAgICAgICJfY3Vyc2VzX3BhbmVsIiwKICAgICAgICAgTlVMTCwKLSAgICAgICAgLTEsCisgICAgICAgIHNpemVvZihfY3Vyc2VzX3BhbmVsc3RhdGUpLAogICAgICAgICBQeUN1cnNlc19tZXRob2RzLAogICAgICAgICBOVUxMLAotICAgICAgICBOVUxMLAotICAgICAgICBOVUxMLAotICAgICAgICBOVUxMCisgICAgICAgIF9jdXJzZXNfcGFuZWxfdHJhdmVyc2UsCisgICAgICAgIF9jdXJzZXNfcGFuZWxfY2xlYXIsCisgICAgICAgIF9jdXJzZXNfcGFuZWxfZnJlZQogfTsKIAogUHlNT0RJTklUX0ZVTkMKQEAgLTQ4MCwyMSArNDkxLDIzIEBACiB7CiAgICAgUHlPYmplY3QgKm0sICpkLCAqdjsKIAotICAgIC8qIEluaXRpYWxpemUgb2JqZWN0IHR5cGUgKi8KLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUN1cnNlc1BhbmVsX1R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpbXBvcnRfY3Vyc2VzKCk7Ci0KICAgICAvKiBDcmVhdGUgdGhlIG1vZHVsZSBhbmQgYWRkIHRoZSBmdW5jdGlvbnMgKi8KICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZfY3Vyc2VzX3BhbmVsbW9kdWxlKTsKICAgICBpZiAobSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBmYWlsOwogICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwogCisgICAgLyogSW5pdGlhbGl6ZSBvYmplY3QgdHlwZSAqLworICAgIF9jdXJzZXNfcGFuZWxzdGF0ZShtKS0+UHlDdXJzZXNQYW5lbF9UeXBlID0gXAorICAgICAgICBQeVR5cGVfRnJvbVNwZWMoJlB5Q3Vyc2VzUGFuZWxfVHlwZV9zcGVjKTsKKyAgICBpZiAoX2N1cnNlc19wYW5lbHN0YXRlKG0pLT5QeUN1cnNlc1BhbmVsX1R5cGUgPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsOworCisgICAgaW1wb3J0X2N1cnNlcygpOworCiAgICAgLyogRm9yIGV4Y2VwdGlvbiBfY3Vyc2VzX3BhbmVsLmVycm9yICovCi0gICAgUHlDdXJzZXNFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigiX2N1cnNlc19wYW5lbC5lcnJvciIsIE5VTEwsIE5VTEwpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJlcnJvciIsIFB5Q3Vyc2VzRXJyb3IpOworICAgIF9jdXJzZXNfcGFuZWxzdGF0ZShtKS0+UHlDdXJzZXNFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigiX2N1cnNlc19wYW5lbC5lcnJvciIsIE5VTEwsIE5VTEwpOworICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJlcnJvciIsIF9jdXJzZXNfcGFuZWxzdGF0ZShtKS0+UHlDdXJzZXNFcnJvcik7CiAKICAgICAvKiBNYWtlIHRoZSB2ZXJzaW9uIGF2YWlsYWJsZSAqLwogICAgIHYgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhQeUN1cnNlc1ZlcnNpb24pOwpAQCAtNTAyLDQgKzUxNSw3IEBACiAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fdmVyc2lvbl9fIiwgdik7CiAgICAgUHlfREVDUkVGKHYpOwogICAgIHJldHVybiBtOworICBmYWlsOgorICAgIFB5X1hERUNSRUYobSk7CisgICAgcmV0dXJuIE5VTEw7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYyBiL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCmluZGV4IDVlMWFmYTkuLjRlMTQ0OWIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCkBAIC0xMDUsMTAgKzEwNSw2IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKIAotI2lmZGVmIF9fb3NmX18KLSNkZWZpbmUgU1RSSUNUX1NZU1ZfQ1VSU0VTICAgICAgLyogRG9uJ3QgdXNlIG5jdXJzZXMgZXh0ZW5zaW9ucyAqLwotI2VuZGlmCi0KICNpZmRlZiBfX2hwdXgKICNkZWZpbmUgU1RSSUNUX1NZU1ZfQ1VSU0VTCiAjZW5kaWYKQEAgLTEyNSw2ICsxMjEsMTAgQEAKICNpbmNsdWRlIDx0ZXJtLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfTEFOR0lORk9fSAorI2luY2x1ZGUgPGxhbmdpbmZvLmg+CisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEhBVkVfTkNVUlNFU19IKSAmJiAoZGVmaW5lZChzZ2kpIHx8IGRlZmluZWQoX19zdW4pIHx8IGRlZmluZWQoU0NPNSkpCiAjZGVmaW5lIFNUUklDVF9TWVNWX0NVUlNFUyAgICAgICAvKiBEb24ndCB1c2UgbmN1cnNlcyBleHRlbnNpb25zICovCiB0eXBlZGVmIGNodHlwZSBhdHRyX3Q7ICAgICAgICAgICAvKiBObyBhdHRyX3QgdHlwZSBpcyBhdmFpbGFibGUgKi8KQEAgLTE0Nyw2ICsxNDcsOCBAQAogLyogVGVsbHMgd2hldGhlciBzdGFydF9jb2xvcigpIGhhcyBiZWVuIGNhbGxlZCB0byBpbml0aWFsaXNlIGNvbG9yIHVzYWdlLiAqLwogc3RhdGljIGludCBpbml0aWFsaXNlZGNvbG9ycyA9IEZBTFNFOwogCitzdGF0aWMgY2hhciAqc2NyZWVuX2VuY29kaW5nID0gTlVMTDsKKwogLyogVXRpbGl0eSBNYWNyb3MgKi8KICNkZWZpbmUgUHlDdXJzZXNTZXR1cFRlcm1DYWxsZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBpZiAoaW5pdGlhbGlzZWRfc2V0dXB0ZXJtICE9IFRSVUUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE3OSw3ICsxODEsNyBAQAogICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeUN1cnNlc0NoZWNrRVJSKGludCBjb2RlLCBjaGFyICpmbmFtZSkKK1B5Q3Vyc2VzQ2hlY2tFUlIoaW50IGNvZGUsIGNvbnN0IGNoYXIgKmZuYW1lKQogewogICAgIGlmIChjb2RlICE9IEVSUikgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CkBAIC0xOTQsMjcgKzE5NiwxNzUgQEAKICAgICB9CiB9CiAKKy8qIENvbnZlcnQgYW4gb2JqZWN0IHRvIGEgYnl0ZSAoYW4gaW50ZWdlciBvZiB0eXBlIGNodHlwZSk6CisKKyAgIC0gaW50CisgICAtIGJ5dGVzIG9mIGxlbmd0aCAxCisgICAtIHN0ciBvZiBsZW5ndGggMQorCisgICBSZXR1cm4gMSBvbiBzdWNjZXNzLCAwIG9uIGVycm9yIChpbnZhbGlkIHR5cGUgb3IgaW50ZWdlciBvdmVyZmxvdykuICovCiBzdGF0aWMgaW50Ci1QeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoUHlPYmplY3QgKm9iaiwgY2h0eXBlICpjaCkKK1B5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShQeUN1cnNlc1dpbmRvd09iamVjdCAqd2luLCBQeU9iamVjdCAqb2JqLCBjaHR5cGUgKmNoKQogewotICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvYmopKSB7Ci0gICAgICAgIGludCBvdmVyZmxvdzsKLSAgICAgICAgLyogWFhYIHNob3VsZCB0aGUgdHJ1bmNhdGlvbiBieSB0aGUgY2FzdCBhbHNvIGJlIHJlcG9ydGVkCi0gICAgICAgICAgIGFzIGFuIGVycm9yPyAqLwotICAgICAgICAqY2ggPSAoY2h0eXBlKSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cob2JqLCAmb3ZlcmZsb3cpOwotICAgICAgICBpZiAob3ZlcmZsb3cpCisgICAgbG9uZyB2YWx1ZTsKKyAgICBpZihQeUJ5dGVzX0NoZWNrKG9iaikgJiYgUHlCeXRlc19TaXplKG9iaikgPT0gMSkgeworICAgICAgICB2YWx1ZSA9ICh1bnNpZ25lZCBjaGFyKVB5Qnl0ZXNfQXNTdHJpbmcob2JqKVswXTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9HZXRMZW5ndGgob2JqKSAhPSAxKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3QgYnl0ZXMgb3Igc3RyIG9mIGxlbmd0aCAxLCBvciBpbnQsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZ290IGEgc3RyIG9mIGxlbmd0aCAlemkiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaikpOwogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfSBlbHNlIGlmKFB5Qnl0ZXNfQ2hlY2sob2JqKQotICAgICAgICAgICAgICAmJiAoUHlCeXRlc19TaXplKG9iaikgPT0gMSkpIHsKLSAgICAgICAgKmNoID0gKGNodHlwZSkgKlB5Qnl0ZXNfQXNTdHJpbmcob2JqKTsKLSAgICB9IGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopICYmIFB5VW5pY29kZV9HZXRTaXplKG9iaikgPT0gMSkgewotICAgICAgICAqY2ggPSAoY2h0eXBlKSAqUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKTsKLSAgICB9IGVsc2UgeworICAgICAgICB9CisgICAgICAgIHZhbHVlID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmosIDApOworICAgICAgICBpZiAoMTI4IDwgdmFsdWUpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nOworICAgICAgICAgICAgaWYgKHdpbikKKyAgICAgICAgICAgICAgICBlbmNvZGluZyA9IHdpbi0+ZW5jb2Rpbmc7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBzY3JlZW5fZW5jb2Rpbmc7CisgICAgICAgICAgICBieXRlcyA9IFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3Qob2JqLCBlbmNvZGluZywgTlVMTCk7CisgICAgICAgICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSA9PSAxKQorICAgICAgICAgICAgICAgIHZhbHVlID0gKHVuc2lnbmVkIGNoYXIpUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpWzBdOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHZhbHVlID0gLTE7CisgICAgICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVja0V4YWN0KG9iaikpIHsKKyAgICAgICAgaW50IGxvbmdfb3ZlcmZsb3c7CisgICAgICAgIHZhbHVlID0gUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93KG9iaiwgJmxvbmdfb3ZlcmZsb3cpOworICAgICAgICBpZiAobG9uZ19vdmVyZmxvdykKKyAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImV4cGVjdCBieXRlcyBvciBzdHIgb2YgbGVuZ3RoIDEsIG9yIGludCwgZ290ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAqY2ggPSAoY2h0eXBlKXZhbHVlOworICAgIGlmICgobG9uZykqY2ggIT0gdmFsdWUpCisgICAgICAgIGdvdG8gb3ZlcmZsb3c7CisgICAgcmV0dXJuIDE7CisKK292ZXJmbG93OgorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAiYnl0ZSBkb2Vzbid0IGZpdCBpbiBjaHR5cGUiKTsKKyAgICByZXR1cm4gMDsKK30KKworLyogQ29udmVydCBhbiBvYmplY3QgdG8gYSBieXRlIChjaHR5cGUpIG9yIGEgY2hhcmFjdGVyIChjY2hhcl90KToKKworICAgIC0gaW50CisgICAgLSBieXRlcyBvZiBsZW5ndGggMQorICAgIC0gc3RyIG9mIGxlbmd0aCAxCisKKyAgIFJldHVybjoKKworICAgIC0gMiBpZiBvYmogaXMgYSBjaGFyYWN0ZXIgKHdyaXR0ZW4gaW50byAqd2NoKQorICAgIC0gMSBpZiBvYmogaXMgYSBieXRlICh3cml0dGVuIGludG8gKmNoKQorICAgIC0gMCBvbiBlcnJvcjogcmFpc2UgYW4gZXhjZXB0aW9uICovCitzdGF0aWMgaW50CitQeUN1cnNlc19Db252ZXJ0VG9DY2hhcl90KFB5Q3Vyc2VzV2luZG93T2JqZWN0ICp3aW4sIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNodHlwZSAqY2gKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgICAgICAgICAgICAgICAgICAgICAgICwgY2NoYXJfdCAqd2NoCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgIGxvbmcgdmFsdWU7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHdjaGFyX3QgYnVmZmVyWzJdOworI2VuZGlmCisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgICAgIGlmIChQeVVuaWNvZGVfQXNXaWRlQ2hhcihvYmosIGJ1ZmZlciwgMikgIT0gMSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0IGJ5dGVzIG9yIHN0ciBvZiBsZW5ndGggMSwgb3IgaW50LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImdvdCBhIHN0ciBvZiBsZW5ndGggJXppIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIG1lbXNldCh3Y2gtPmNoYXJzLCAwLCBzaXplb2Yod2NoLT5jaGFycykpOworICAgICAgICB3Y2gtPmNoYXJzWzBdID0gYnVmZmVyWzBdOworICAgICAgICByZXR1cm4gMjsKKyNlbHNlCisgICAgICAgIHJldHVybiBQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUod2luLCBvYmosIGNoKTsKKyNlbmRpZgorICAgIH0KKyAgICBlbHNlIGlmKFB5Qnl0ZXNfQ2hlY2sob2JqKSAmJiBQeUJ5dGVzX1NpemUob2JqKSA9PSAxKSB7CisgICAgICAgIHZhbHVlID0gKHVuc2lnbmVkIGNoYXIpUHlCeXRlc19Bc1N0cmluZyhvYmopWzBdOworICAgIH0KKyAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgIGludCBvdmVyZmxvdzsKKyAgICAgICAgdmFsdWUgPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cob2JqLCAmb3ZlcmZsb3cpOworICAgICAgICBpZiAob3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgZG9lc24ndCBmaXQgaW4gbG9uZyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0IGJ5dGVzIG9yIHN0ciBvZiBsZW5ndGggMSwgb3IgaW50LCBnb3QgJXMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgKmNoID0gKGNodHlwZSl2YWx1ZTsKKyAgICBpZiAoKGxvbmcpKmNoICE9IHZhbHVlKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgImJ5dGUgZG9lc24ndCBmaXQgaW4gY2h0eXBlIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICByZXR1cm4gMTsKIH0KIAorLyogQ29udmVydCBhbiBvYmplY3QgdG8gYSBieXRlIHN0cmluZyAoY2hhciopIG9yIGEgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nCisgICAod2NoYXJfdCopLiBSZXR1cm46CisKKyAgICAtIDIgaWYgb2JqIGlzIGEgY2hhcmFjdGVyIHN0cmluZyAod3JpdHRlbiBpbnRvICp3Y2gpCisgICAgLSAxIGlmIG9iaiBpcyBhIGJ5dGUgc3RyaW5nICh3cml0dGVuIGludG8gKmJ5dGVzKQorICAgIC0gMCBvbiBlcnJvcjogcmFpc2UgYW4gZXhjZXB0aW9uICovCitzdGF0aWMgaW50CitQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoUHlDdXJzZXNXaW5kb3dPYmplY3QgKndpbiwgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmJ5dGVzLCB3Y2hhcl90ICoqd3N0cikKK3sKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgICAgIGFzc2VydCAod3N0ciAhPSBOVUxMKTsKKyAgICAgICAgKndzdHIgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyhvYmosIE5VTEwpOworICAgICAgICBpZiAoKndzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gMjsKKyNlbHNlCisgICAgICAgIGFzc2VydCAod3N0ciA9PSBOVUxMKTsKKyAgICAgICAgKmJ5dGVzID0gUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdChvYmosIHdpbi0+ZW5jb2RpbmcsIE5VTEwpOworICAgICAgICBpZiAoKmJ5dGVzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIDE7CisjZW5kaWYKKyAgICB9CisgICAgZWxzZSBpZiAoUHlCeXRlc19DaGVjayhvYmopKSB7CisgICAgICAgIFB5X0lOQ1JFRihvYmopOworICAgICAgICAqYnl0ZXMgPSBvYmo7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJleHBlY3QgYnl0ZXMgb3Igc3RyLCBnb3QgJXMiLAorICAgICAgICAgICAgICAgICBQeV9UWVBFKG9iaiktPnRwX25hbWUpOworICAgIHJldHVybiAwOworfQorCiAvKiBGdW5jdGlvbiB2ZXJzaW9ucyBvZiB0aGUgMyBmdW5jdGlvbnMgZm9yIHRlc3Rpbmcgd2hldGhlciBjdXJzZXMgaGFzIGJlZW4KICAgIGluaXRpYWxpc2VkIG9yIG5vdC4gKi8KIApAQCAtMzU4LDEzICs1MDgsMzcgQEAKIC8qIEFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBvZiBXaW5kb3cgT2JqZWN0cyAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlDdXJzZXNXaW5kb3dfTmV3KFdJTkRPVyAqd2luKQorUHlDdXJzZXNXaW5kb3dfTmV3KFdJTkRPVyAqd2luLCBjb25zdCBjaGFyICplbmNvZGluZykKIHsKICAgICBQeUN1cnNlc1dpbmRvd09iamVjdCAqd287CiAKKyAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgeworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyAgICAgICAgY2hhciAqYnVmZmVyWzEwMF07CisgICAgICAgIFVJTlQgY3A7CisgICAgICAgIGNwID0gR2V0Q29uc29sZU91dHB1dENQKCk7CisgICAgICAgIGlmIChjcCAhPSAwKSB7CisgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICJjcCV1IiwgY3ApOworICAgICAgICAgICAgZW5jb2RpbmcgPSBidWZmZXI7CisgICAgICAgIH0KKyNlbGlmIGRlZmluZWQoQ09ERVNFVCkKKyAgICAgICAgY29uc3QgY2hhciAqY29kZXNldCA9IG5sX2xhbmdpbmZvKENPREVTRVQpOworICAgICAgICBpZiAoY29kZXNldCAhPSBOVUxMICYmIGNvZGVzZXRbMF0gIT0gMCkKKyAgICAgICAgICAgIGVuY29kaW5nID0gY29kZXNldDsKKyNlbmRpZgorICAgICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKKyAgICAgICAgICAgIGVuY29kaW5nID0gInV0Zi04IjsKKyAgICB9CisKICAgICB3byA9IFB5T2JqZWN0X05FVyhQeUN1cnNlc1dpbmRvd09iamVjdCwgJlB5Q3Vyc2VzV2luZG93X1R5cGUpOwogICAgIGlmICh3byA9PSBOVUxMKSByZXR1cm4gTlVMTDsKICAgICB3by0+d2luID0gd2luOworICAgIHdvLT5lbmNvZGluZyA9IHN0cmR1cChlbmNvZGluZyk7CisgICAgaWYgKHdvLT5lbmNvZGluZyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRih3byk7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopd287CiB9CiAKQEAgLTM3Miw2ICs1NDYsOCBAQAogUHlDdXJzZXNXaW5kb3dfRGVhbGxvYyhQeUN1cnNlc1dpbmRvd09iamVjdCAqd28pCiB7CiAgICAgaWYgKHdvLT53aW4gIT0gc3Rkc2NyKSBkZWx3aW4od28tPndpbik7CisgICAgaWYgKHdvLT5lbmNvZGluZyAhPSBOVUxMKQorICAgICAgICBmcmVlKHdvLT5lbmNvZGluZyk7CiAgICAgUHlPYmplY3RfREVMKHdvKTsKIH0KIApAQCAtMzgxLDI5ICs1NTcsMzQgQEAKIFB5Q3Vyc2VzV2luZG93X0FkZENoKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgcnRuLCB4LCB5LCB1c2VfeHkgPSBGQUxTRTsKLSAgICBQeU9iamVjdCAqdGVtcDsKLSAgICBjaHR5cGUgY2ggPSAwOworICAgIFB5T2JqZWN0ICpjaG9iajsKKyAgICBpbnQgdHlwZTsKKyAgICBjaHR5cGUgY2g7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIGNjaGFyX3Qgd2NoOworI2VuZGlmCiAgICAgYXR0cl90IGF0dHIgPSBBX05PUk1BTDsKICAgICBsb25nIGxhdHRyOworICAgIGNvbnN0IGNoYXIgKmZ1bmNuYW1lOwogCiAgICAgc3dpdGNoIChQeVR1cGxlX1NpemUoYXJncykpIHsKICAgICBjYXNlIDE6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTztjaCBvciBpbnQiLCAmdGVtcCkpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTztjaCBvciBpbnQiLCAmY2hvYmopKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMjoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPbDtjaCBvciBpbnQsYXR0ciIsICZ0ZW1wLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9sO2NoIG9yIGludCxhdHRyIiwgJmNob2JqLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAzOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPO3kseCxjaCBvciBpbnQiLCAmeSwgJngsICZ0ZW1wKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpTzt5LHgsY2ggb3IgaW50IiwgJnksICZ4LCAmY2hvYmopKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHVzZV94eSA9IFRSVUU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgNDoKICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpT2w7eSx4LGNoIG9yIGludCwgYXR0ciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeSwgJngsICZ0ZW1wLCAmbGF0dHIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnksICZ4LCAmY2hvYmosICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfeHkgPSBUUlVFOwpAQCAtNDEzLDE3ICs1OTQsMzMgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcCwgJmNoKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnQgMSBvciAzIG11c3QgYmUgYSBjaCBvciBhbiBpbnQiKTsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgdHlwZSA9IFB5Q3Vyc2VzX0NvbnZlcnRUb0NjaGFyX3Qoc2VsZiwgY2hvYmosICZjaCwgJndjaCk7CisgICAgaWYgKHR5cGUgPT0gMikgeworICAgICAgICBmdW5jbmFtZSA9ICJhZGRfd2NoIjsKKyAgICAgICAgd2NoLmF0dHIgPSBhdHRyOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGRfd2NoKHNlbGYtPndpbix5LHgsICZ3Y2gpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJ0biA9IHdhZGRfd2NoKHNlbGYtPndpbiwgJndjaCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorI2Vsc2UKKyAgICB0eXBlID0gUHlDdXJzZXNfQ29udmVydFRvQ2NoYXJfdChzZWxmLCBjaG9iaiwgJmNoKTsKKyNlbmRpZgorICAgIGlmICh0eXBlID09IDEpIHsKKyAgICAgICAgZnVuY25hbWUgPSAiYWRkY2giOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGRjaChzZWxmLT53aW4seSx4LCBjaCB8IGF0dHIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJ0biA9IHdhZGRjaChzZWxmLT53aW4sIGNoIHwgYXR0cik7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKLSAgICAgICAgcnRuID0gbXZ3YWRkY2goc2VsZi0+d2luLHkseCwgY2ggfCBhdHRyKTsKLSAgICBlbHNlIHsKLSAgICAgICAgcnRuID0gd2FkZGNoKHNlbGYtPndpbiwgY2ggfCBhdHRyKTsKLSAgICB9Ci0gICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCAiYWRkY2giKTsKKyAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihydG4sIGZ1bmNuYW1lKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQzMSwyOSArNjI4LDM0IEBACiB7CiAgICAgaW50IHJ0bjsKICAgICBpbnQgeCwgeTsKLSAgICBjaGFyICpzdHI7CisgICAgaW50IHN0cnR5cGU7CisgICAgUHlPYmplY3QgKnN0cm9iaiwgKmJ5dGVzb2JqID0gTlVMTDsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgd2NoYXJfdCAqd3N0ciA9IE5VTEw7CisjZW5kaWYKICAgICBhdHRyX3QgYXR0ciA9IEFfTk9STUFMICwgYXR0cl9vbGQgPSBBX05PUk1BTDsKICAgICBsb25nIGxhdHRyOwogICAgIGludCB1c2VfeHkgPSBGQUxTRSwgdXNlX2F0dHIgPSBGQUxTRTsKKyAgICBjb25zdCBjaGFyICpmdW5jbmFtZTsKIAogICAgIHN3aXRjaCAoUHlUdXBsZV9TaXplKGFyZ3MpKSB7CiAgICAgY2FzZSAxOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywicztzdHIiLCAmc3RyKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk87c3RyIiwgJnN0cm9iaikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAyOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywic2w7c3RyLGF0dHIiLCAmc3RyLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiT2w7c3RyLGF0dHIiLCAmc3Ryb2JqLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgdXNlX2F0dHIgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDM6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaXM7aW50LGludCxzdHIiLCAmeSwgJngsICZzdHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPO2ludCxpbnQsc3RyIiwgJnksICZ4LCAmc3Ryb2JqKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB1c2VfeHkgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDQ6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaXNsO2ludCxpbnQsc3RyLGF0dHIiLCAmeSwgJngsICZzdHIsICZsYXR0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaU9sO2ludCxpbnQsc3RyLGF0dHIiLCAmeSwgJngsICZzdHJvYmosICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfeHkgPSB1c2VfYXR0ciA9IFRSVUU7CkBAIC00NjIsNDcgKzY2NCw3NCBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYWRkc3RyIHJlcXVpcmVzIDEgdG8gNCBhcmd1bWVudHMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHN0cnR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoc2VsZiwgc3Ryb2JqLCAmYnl0ZXNvYmosICZ3c3RyKTsKKyNlbHNlCisgICAgc3RydHlwZSA9IFB5Q3Vyc2VzX0NvbnZlcnRUb1N0cmluZyhzZWxmLCBzdHJvYmosICZieXRlc29iaiwgTlVMTCk7CisjZW5kaWYKKyAgICBpZiAoc3RydHlwZSA9PSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAodXNlX2F0dHIgPT0gVFJVRSkgewogICAgICAgICBhdHRyX29sZCA9IGdldGF0dHJzKHNlbGYtPndpbik7CiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyKTsKICAgICB9Ci0gICAgaWYgKHVzZV94eSA9PSBUUlVFKQotICAgICAgICBydG4gPSBtdndhZGRzdHIoc2VsZi0+d2luLHkseCxzdHIpOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBpZiAoc3RydHlwZSA9PSAyKSB7CisgICAgICAgIGZ1bmNuYW1lID0gImFkZHdzdHIiOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGR3c3RyKHNlbGYtPndpbix5LHgsd3N0cik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ0biA9IHdhZGR3c3RyKHNlbGYtPndpbix3c3RyKTsKKyAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICB9CiAgICAgZWxzZQotICAgICAgICBydG4gPSB3YWRkc3RyKHNlbGYtPndpbixzdHIpOworI2VuZGlmCisgICAgeworICAgICAgICBjaGFyICpzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlc29iaik7CisgICAgICAgIGZ1bmNuYW1lID0gImFkZHN0ciI7CisgICAgICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKKyAgICAgICAgICAgIHJ0biA9IG12d2FkZHN0cihzZWxmLT53aW4seSx4LHN0cik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ0biA9IHdhZGRzdHIoc2VsZi0+d2luLHN0cik7CisgICAgICAgIFB5X0RFQ1JFRihieXRlc29iaik7CisgICAgfQogICAgIGlmICh1c2VfYXR0ciA9PSBUUlVFKQogICAgICAgICAodm9pZCl3YXR0cnNldChzZWxmLT53aW4sYXR0cl9vbGQpOwotICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHJ0biwgImFkZHN0ciIpOworICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHJ0biwgZnVuY25hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogUHlDdXJzZXNXaW5kb3dfQWRkTlN0cihQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaW50IHJ0biwgeCwgeSwgbjsKLSAgICBjaGFyICpzdHI7CisgICAgaW50IHN0cnR5cGU7CisgICAgUHlPYmplY3QgKnN0cm9iaiwgKmJ5dGVzb2JqID0gTlVMTDsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgd2NoYXJfdCAqd3N0ciA9IE5VTEw7CisjZW5kaWYKICAgICBhdHRyX3QgYXR0ciA9IEFfTk9STUFMICwgYXR0cl9vbGQgPSBBX05PUk1BTDsKICAgICBsb25nIGxhdHRyOwogICAgIGludCB1c2VfeHkgPSBGQUxTRSwgdXNlX2F0dHIgPSBGQUxTRTsKKyAgICBjb25zdCBjaGFyICpmdW5jbmFtZTsKIAogICAgIHN3aXRjaCAoUHlUdXBsZV9TaXplKGFyZ3MpKSB7CiAgICAgY2FzZSAyOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywic2k7c3RyLG4iLCAmc3RyLCAmbikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPaTtzdHIsbiIsICZzdHJvYmosICZuKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDM6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJzaWw7c3RyLG4sYXR0ciIsICZzdHIsICZuLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiT2lsO3N0cixuLGF0dHIiLCAmc3Ryb2JqLCAmbiwgJmxhdHRyKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBhdHRyID0gbGF0dHI7CiAgICAgICAgIHVzZV9hdHRyID0gVFJVRTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA0OgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlzaTt5LHgsc3RyLG4iLCAmeSwgJngsICZzdHIsICZuKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpT2k7eSx4LHN0cixuIiwgJnksICZ4LCAmc3Ryb2JqLCAmbikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgdXNlX3h5ID0gVFJVRTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA1OgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlzaWw7eSx4LHN0cixuLGF0dHIiLCAmeSwgJngsICZzdHIsICZuLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPaWw7eSx4LHN0cixuLGF0dHIiLCAmeSwgJngsICZzdHJvYmosICZuLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgdXNlX3h5ID0gdXNlX2F0dHIgPSBUUlVFOwpAQCAtNTExLDE4ICs3NDAsNDEgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFkZG5zdHIgcmVxdWlyZXMgMiB0byA1IGFyZ3VtZW50cyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHN0cnR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoc2VsZiwgc3Ryb2JqLCAmYnl0ZXNvYmosICZ3c3RyKTsKKyNlbHNlCisgICAgc3RydHlwZSA9IFB5Q3Vyc2VzX0NvbnZlcnRUb1N0cmluZyhzZWxmLCBzdHJvYmosICZieXRlc29iaiwgTlVMTCk7CisjZW5kaWYKKyAgICBpZiAoc3RydHlwZSA9PSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICh1c2VfYXR0ciA9PSBUUlVFKSB7CiAgICAgICAgIGF0dHJfb2xkID0gZ2V0YXR0cnMoc2VsZi0+d2luKTsKICAgICAgICAgKHZvaWQpd2F0dHJzZXQoc2VsZi0+d2luLGF0dHIpOwogICAgIH0KLSAgICBpZiAodXNlX3h5ID09IFRSVUUpCi0gICAgICAgIHJ0biA9IG12d2FkZG5zdHIoc2VsZi0+d2luLHkseCxzdHIsbik7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIGlmIChzdHJ0eXBlID09IDIpIHsKKyAgICAgICAgZnVuY25hbWUgPSAiYWRkbndzdHIiOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGRud3N0cihzZWxmLT53aW4seSx4LHdzdHIsbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ0biA9IHdhZGRud3N0cihzZWxmLT53aW4sd3N0cixuKTsKKyAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICB9CiAgICAgZWxzZQotICAgICAgICBydG4gPSB3YWRkbnN0cihzZWxmLT53aW4sc3RyLG4pOworI2VuZGlmCisgICAgeworICAgICAgICBjaGFyICpzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlc29iaik7CisgICAgICAgIGZ1bmNuYW1lID0gImFkZG5zdHIiOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGRuc3RyKHNlbGYtPndpbix5LHgsc3RyLG4pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBydG4gPSB3YWRkbnN0cihzZWxmLT53aW4sc3RyLG4pOworICAgICAgICBQeV9ERUNSRUYoYnl0ZXNvYmopOworICAgIH0KICAgICBpZiAodXNlX2F0dHIgPT0gVFJVRSkKICAgICAgICAgKHZvaWQpd2F0dHJzZXQoc2VsZi0+d2luLGF0dHJfb2xkKTsKLSAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihydG4sICJhZGRuc3RyIik7CisgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCBmdW5jbmFtZSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC01NDgsMTAgKzgwMCw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHRlbXAsICZia2dkKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnQgMSBvciAzIG11c3QgYmUgYSBjaCBvciBhbiBpbnQiKTsKKyAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShzZWxmLCB0ZW1wLCAmYmtnZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHdia2dkKHNlbGYtPndpbiwgYmtnZCB8IGF0dHIpLCAiYmtnZCIpOwogfQpAQCAtNjA2LDEwICs4NTYsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZSh0ZW1wLCAmYmtnZCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50IDEgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIpOworICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHNlbGYsIHRlbXAsICZia2dkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgd2JrZ2RzZXQoc2VsZi0+d2luLCBia2dkIHwgYXR0cik7CiAgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIoMCwgImJrZ2RzZXQiKTsKQEAgLTYzNCwxMSArODgyLDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IoaT0wOyBpPDg7IGkrKykgewotICAgICAgICBpZiAodGVtcFtpXSAhPSBOVUxMICYmICFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcFtpXSwgJmNoW2ldKSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgJWkgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIsIGkrMSk7CisgICAgICAgIGlmICh0ZW1wW2ldICE9IE5VTEwgJiYgIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShzZWxmLCB0ZW1wW2ldLCAmY2hbaV0pKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICB3Ym9yZGVyKHNlbGYtPndpbiwKQEAgLTc4Myw3ICsxMDI4LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4pOworICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTgxMSwxMCArMTA1Niw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHRlbXAsICZjaCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50IDEgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIpOworICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHNlbGYsIHRlbXAsICZjaCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogI2lmZGVmIFdJTkRPV19IQVNfRkxBR1MKICAgICBpZiAoc2VsZi0+d2luLT5fZmxhZ3MgJiBfSVNQQUQpCkBAIC05MTAsNiArMTE1Myw0MyBAQAogICAgIH0KIH0KIAorI2lmZGVmIEhBVkVfTkNVUlNFU1cKK3N0YXRpYyBQeU9iamVjdCAqCitQeUN1cnNlc1dpbmRvd19HZXRfV0NoKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgeCwgeTsKKyAgICBpbnQgY3Q7CisgICAgd2ludF90IHJ0bjsKKworICAgIHN3aXRjaCAoUHlUdXBsZV9TaXplKGFyZ3MpKSB7CisgICAgY2FzZSAwOgorICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGN0ID0gd2dldF93Y2goc2VsZi0+d2luLCZydG4pOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaTt5LHgiLCZ5LCZ4KSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGN0ID0gbXZ3Z2V0X3djaChzZWxmLT53aW4seSx4LCZydG4pOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZ2V0X3djaCByZXF1aXJlcyAwIG9yIDIgYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoY3QgPT0gRVJSKSB7CisgICAgICAgIC8qIGdldF93Y2goKSByZXR1cm5zIEVSUiBpbiBub2RlbGF5IG1vZGUgKi8KKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5Q3Vyc2VzRXJyb3IsICJubyBpbnB1dCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKGN0ID09IEtFWV9DT0RFX1lFUykKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhydG4pOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT3JkaW5hbChydG4pOworfQorI2VuZGlmCisKIHN0YXRpYyBQeU9iamVjdCAqCiBQeUN1cnNlc1dpbmRvd19HZXRTdHIoUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTAwMSwxMSArMTI4MSw4IEBACiAgICAgfQogCiAgICAgaWYgKGNvZGUgIT0gRVJSKSB7Ci0gICAgICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHRlbXAsICZjaCkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IDEgb3IgMyBtdXN0IGJlIGEgY2ggb3IgYW4gaW50Iik7CisgICAgICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHNlbGYsIHRlbXAsICZjaCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUih3aGxpbmUoc2VsZi0+d2luLCBjaCB8IGF0dHIsIG4pLCAiaGxpbmUiKTsKICAgICB9IGVsc2UKICAgICAgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIoY29kZSwgIndtb3ZlIik7CkBAIC0xMDQ2LDExICsxMzIzLDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcCwgJmNoKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IDEgb3IgMyBtdXN0IGJlIGEgY2ggb3IgYW4gaW50Iik7CisgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoc2VsZiwgdGVtcCwgJmNoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgaWYgKHVzZV94eSA9PSBUUlVFKQogICAgICAgICBydG4gPSBtdndpbnNjaChzZWxmLT53aW4seSx4LCBjaCB8IGF0dHIpOwpAQCAtMTEyMSwyOSArMTM5NSwzNCBAQAogewogICAgIGludCBydG47CiAgICAgaW50IHgsIHk7Ci0gICAgY2hhciAqc3RyOworICAgIGludCBzdHJ0eXBlOworICAgIFB5T2JqZWN0ICpzdHJvYmosICpieXRlc29iaiA9IE5VTEw7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHdjaGFyX3QgKndzdHIgPSBOVUxMOworI2VuZGlmCiAgICAgYXR0cl90IGF0dHIgPSBBX05PUk1BTCAsIGF0dHJfb2xkID0gQV9OT1JNQUw7CiAgICAgbG9uZyBsYXR0cjsKICAgICBpbnQgdXNlX3h5ID0gRkFMU0UsIHVzZV9hdHRyID0gRkFMU0U7CisgICAgY29uc3QgY2hhciAqZnVuY25hbWU7CiAKICAgICBzd2l0Y2ggKFB5VHVwbGVfU2l6ZShhcmdzKSkgewogICAgIGNhc2UgMToKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsInM7c3RyIiwgJnN0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPO3N0ciIsICZzdHJvYmopKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMjoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsInNsO3N0cixhdHRyIiwgJnN0ciwgJmxhdHRyKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk9sO3N0cixhdHRyIiwgJnN0cm9iaiwgJmxhdHRyKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBhdHRyID0gbGF0dHI7CiAgICAgICAgIHVzZV9hdHRyID0gVFJVRTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAzOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlzO3kseCxzdHIiLCAmeSwgJngsICZzdHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPO3kseCxzdHIiLCAmeSwgJngsICZzdHJvYmopKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHVzZV94eSA9IFRSVUU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgNDoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpc2w7eSx4LHN0cixhdHRyIiwgJnksICZ4LCAmc3RyLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPbDt5LHgsc3RyLGF0dHIiLCAmeSwgJngsICZzdHJvYmosICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfeHkgPSB1c2VfYXR0ciA9IFRSVUU7CkBAIC0xMTUzLDQ2ICsxNDMyLDc1IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBzdHJ0eXBlID0gUHlDdXJzZXNfQ29udmVydFRvU3RyaW5nKHNlbGYsIHN0cm9iaiwgJmJ5dGVzb2JqLCAmd3N0cik7CisjZWxzZQorICAgIHN0cnR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoc2VsZiwgc3Ryb2JqLCAmYnl0ZXNvYmosIE5VTEwpOworI2VuZGlmCisgICAgaWYgKHN0cnR5cGUgPT0gMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAodXNlX2F0dHIgPT0gVFJVRSkgewogICAgICAgICBhdHRyX29sZCA9IGdldGF0dHJzKHNlbGYtPndpbik7CiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyKTsKICAgICB9Ci0gICAgaWYgKHVzZV94eSA9PSBUUlVFKQotICAgICAgICBydG4gPSBtdndpbnNzdHIoc2VsZi0+d2luLHkseCxzdHIpOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBpZiAoc3RydHlwZSA9PSAyKSB7CisgICAgICAgIGZ1bmNuYW1lID0gImluc3dzdHIiOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndpbnNfd3N0cihzZWxmLT53aW4seSx4LHdzdHIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBydG4gPSB3aW5zX3dzdHIoc2VsZi0+d2luLHdzdHIpOworICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgIH0KICAgICBlbHNlCi0gICAgICAgIHJ0biA9IHdpbnNzdHIoc2VsZi0+d2luLHN0cik7CisjZW5kaWYKKyAgICB7CisgICAgICAgIGNoYXIgKnN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzb2JqKTsKKyAgICAgICAgZnVuY25hbWUgPSAiaW5zc3RyIjsKKyAgICAgICAgaWYgKHVzZV94eSA9PSBUUlVFKQorICAgICAgICAgICAgcnRuID0gbXZ3aW5zc3RyKHNlbGYtPndpbix5LHgsc3RyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcnRuID0gd2luc3N0cihzZWxmLT53aW4sc3RyKTsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzb2JqKTsKKyAgICB9CiAgICAgaWYgKHVzZV9hdHRyID09IFRSVUUpCiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyX29sZCk7Ci0gICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCAiaW5zc3RyIik7CisgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCBmdW5jbmFtZSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBQeUN1cnNlc1dpbmRvd19JbnNOU3RyKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgcnRuLCB4LCB5LCBuOwotICAgIGNoYXIgKnN0cjsKKyAgICBpbnQgc3RydHlwZTsKKyAgICBQeU9iamVjdCAqc3Ryb2JqLCAqYnl0ZXNvYmogPSBOVUxMOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICB3Y2hhcl90ICp3c3RyID0gTlVMTDsKKyNlbmRpZgogICAgIGF0dHJfdCBhdHRyID0gQV9OT1JNQUwgLCBhdHRyX29sZCA9IEFfTk9STUFMOwogICAgIGxvbmcgbGF0dHI7CiAgICAgaW50IHVzZV94eSA9IEZBTFNFLCB1c2VfYXR0ciA9IEZBTFNFOworICAgIGNvbnN0IGNoYXIgKmZ1bmNuYW1lOwogCiAgICAgc3dpdGNoIChQeVR1cGxlX1NpemUoYXJncykpIHsKICAgICBjYXNlIDI6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJzaTtzdHIsbiIsICZzdHIsICZuKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk9pO3N0cixuIiwgJnN0cm9iaiwgJm4pKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsInNpbDtzdHIsbixhdHRyIiwgJnN0ciwgJm4sICZsYXR0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPaWw7c3RyLG4sYXR0ciIsICZzdHJvYmosICZuLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgdXNlX2F0dHIgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDQ6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaXNpO3kseCxzdHIsbiIsICZ5LCAmeCwgJnN0ciwgJm4pKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPaTt5LHgsc3RyLG4iLCAmeSwgJngsICZzdHJvYmosICZuKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB1c2VfeHkgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDU6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaXNpbDt5LHgsc3RyLG4sYXR0ciIsICZ5LCAmeCwgJnN0ciwgJm4sICZsYXR0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaU9pbDt5LHgsc3RyLG4sYXR0ciIsICZ5LCAmeCwgJnN0cm9iaiwgJm4sICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfeHkgPSB1c2VfYXR0ciA9IFRSVUU7CkBAIC0xMjAyLDE3ICsxNTEwLDQxIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBzdHJ0eXBlID0gUHlDdXJzZXNfQ29udmVydFRvU3RyaW5nKHNlbGYsIHN0cm9iaiwgJmJ5dGVzb2JqLCAmd3N0cik7CisjZWxzZQorICAgIHN0cnR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoc2VsZiwgc3Ryb2JqLCAmYnl0ZXNvYmosIE5VTEwpOworI2VuZGlmCisgICAgaWYgKHN0cnR5cGUgPT0gMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAodXNlX2F0dHIgPT0gVFJVRSkgewogICAgICAgICBhdHRyX29sZCA9IGdldGF0dHJzKHNlbGYtPndpbik7CiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyKTsKICAgICB9Ci0gICAgaWYgKHVzZV94eSA9PSBUUlVFKQotICAgICAgICBydG4gPSBtdndpbnNuc3RyKHNlbGYtPndpbix5LHgsc3RyLG4pOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBpZiAoc3RydHlwZSA9PSAyKSB7CisgICAgICAgIGZ1bmNuYW1lID0gImluc25fd3N0ciI7CisgICAgICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKKyAgICAgICAgICAgIHJ0biA9IG12d2luc19ud3N0cihzZWxmLT53aW4seSx4LHdzdHIsbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ0biA9IHdpbnNfbndzdHIoc2VsZi0+d2luLHdzdHIsbik7CisgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgfQogICAgIGVsc2UKLSAgICAgICAgcnRuID0gd2luc25zdHIoc2VsZi0+d2luLHN0cixuKTsKKyNlbmRpZgorICAgIHsKKyAgICAgICAgY2hhciAqc3RyID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXNvYmopOworICAgICAgICBmdW5jbmFtZSA9ICJpbnNuc3RyIjsKKyAgICAgICAgaWYgKHVzZV94eSA9PSBUUlVFKQorICAgICAgICAgICAgcnRuID0gbXZ3aW5zbnN0cihzZWxmLT53aW4seSx4LHN0cixuKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcnRuID0gd2luc25zdHIoc2VsZi0+d2luLHN0cixuKTsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzb2JqKTsKKyAgICB9CiAgICAgaWYgKHVzZV9hdHRyID09IFRSVUUpCiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyX29sZCk7Ci0gICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCAiaW5zbnN0ciIpOworICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHJ0biwgZnVuY25hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTM4NSwxMCArMTcxNywxMiBAQAogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIGNoYXIgYnVmW0JVRlNJWl07CiAgICAgICAgIFB5X3NzaXplX3QgbiA9IGZyZWFkKGJ1ZiwgMSwgQlVGU0laLCBmcCk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKKwogICAgICAgICBpZiAobiA8PSAwKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHN0cmVhbSwgIndyaXRlIiwgInkjIiwgYnVmLCBuKTsKKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzdHJlYW0sICZQeUlkX3dyaXRlLCAieSMiLCBidWYsIG4pOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CkBAIC0xNDkzLDcgKzE4MjcsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHdpbik7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4sIHNlbGYtPmVuY29kaW5nKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE1NjksMTYgKzE5MDMsNTIgQEAKICAgICB9CiAKICAgICBpZiAoY29kZSAhPSBFUlIpIHsKLSAgICAgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcCwgJmNoKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgMSBvciAzIG11c3QgYmUgYSBjaCBvciBhbiBpbnQiKTsKKyAgICAgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoc2VsZiwgdGVtcCwgJmNoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHd2bGluZShzZWxmLT53aW4sIGNoIHwgYXR0ciwgbiksICJ2bGluZSIpOwogICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihjb2RlLCAid21vdmUiKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK1B5Q3Vyc2VzV2luZG93X2dldF9lbmNvZGluZyhQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoc2VsZi0+ZW5jb2RpbmcpOworfQorCitzdGF0aWMgaW50CitQeUN1cnNlc1dpbmRvd19zZXRfZW5jb2RpbmcoUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBQeU9iamVjdCAqYXNjaWk7CisgICAgY2hhciAqZW5jb2Rpbmc7CisKKyAgICAvKiBJdCBpcyBpbGxlZ2FsIHRvIGRlbCB3aW4uZW5jb2RpbmcgKi8KKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImVuY29kaW5nIG1heSBub3QgYmUgZGVsZXRlZCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2V0dGluZyBlbmNvZGluZyB0byBhIG5vbi1zdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBhc2NpaSA9IFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHZhbHVlKTsKKyAgICBpZiAoYXNjaWkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVuY29kaW5nID0gc3RyZHVwKFB5Qnl0ZXNfQVNfU1RSSU5HKGFzY2lpKSk7CisgICAgUHlfREVDUkVGKGFzY2lpKTsKKyAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGZyZWUoc2VsZi0+ZW5jb2RpbmcpOworICAgIHNlbGYtPmVuY29kaW5nID0gZW5jb2Rpbmc7CisgICAgcmV0dXJuIDA7Cit9CisKKwogc3RhdGljIFB5TWV0aG9kRGVmIFB5Q3Vyc2VzV2luZG93X01ldGhvZHNbXSA9IHsKICAgICB7ImFkZGNoIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19BZGRDaCwgTUVUSF9WQVJBUkdTfSwKICAgICB7ImFkZG5zdHIiLCAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19BZGROU3RyLCBNRVRIX1ZBUkFSR1N9LApAQCAtMTYwOCw2ICsxOTc4LDkgQEAKICAgICB7ImdldGJrZ2QiLCAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19HZXRCa2dkLCBNRVRIX05PQVJHU30sCiAgICAgeyJnZXRjaCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfR2V0Q2gsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRrZXkiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfR2V0S2V5LCBNRVRIX1ZBUkFSR1N9LAorI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICB7ImdldF93Y2giLCAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19HZXRfV0NoLCBNRVRIX1ZBUkFSR1N9LAorI2VuZGlmCiAgICAgeyJnZXRtYXh5eCIsICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfZ2V0bWF4eXgsIE1FVEhfTk9BUkdTfSwKICAgICB7ImdldHBhcnl4IiwgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19nZXRwYXJ5eCwgTUVUSF9OT0FSR1N9LAogICAgIHsiZ2V0c3RyIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X0dldFN0ciwgTUVUSF9WQVJBUkdTfSwKQEAgLTE2NjMsNiArMjAzNiwxNCBAQAogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KIH07CiAKK3N0YXRpYyBQeUdldFNldERlZiBQeUN1cnNlc1dpbmRvd19nZXRzZXRzW10gPSB7CisgICAgeyJlbmNvZGluZyIsCisgICAgIChnZXR0ZXIpUHlDdXJzZXNXaW5kb3dfZ2V0X2VuY29kaW5nLAorICAgICAoc2V0dGVyKVB5Q3Vyc2VzV2luZG93X3NldF9lbmNvZGluZywKKyAgICAgInRoZSB0eXBlY29kZSBjaGFyYWN0ZXIgdXNlZCB0byBjcmVhdGUgdGhlIGFycmF5In0sCisgICAge05VTEwsIE5VTEwsIE5VTEwsIE5VTEwgfSAgLyogc2VudGluZWwgKi8KK307CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiBQeVR5cGVPYmplY3QgUHlDdXJzZXNXaW5kb3dfVHlwZSA9IHsKQEAgLTE2OTUsNiArMjA3Niw4IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQqLwogICAgIFB5Q3Vyc2VzV2luZG93X01ldGhvZHMsICAgICAvKnRwX21ldGhvZHMqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgUHlDdXJzZXNXaW5kb3dfZ2V0c2V0cywgICAgIC8qIHRwX2dldHNldCAqLwogfTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTg3NSw2ICsyMjU4LDcgQEAKICAgICBXSU5ET1cgKndpbjsKIAogICAgIFB5Q3Vyc2VzSW5pdGlhbGlzZWQ7CisgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CiAKICAgICBzdHJjcHkoZm4sICIvdG1wL3B5LmN1cnNlcy5nZXR3aW4uWFhYWFhYIik7CiAgICAgZmQgPSBta3N0ZW1wKGZuKTsKQEAgLTE4ODYsNyArMjI3MCw3IEBACiAgICAgICAgIHJlbW92ZShmbik7CiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoUHlFeGNfSU9FcnJvciwgZm4pOwogICAgIH0KLSAgICBkYXRhID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzdHJlYW0sICJyZWFkIiwgIiIpOworICAgIGRhdGEgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHN0cmVhbSwgJlB5SWRfcmVhZCwgIiIpOwogICAgIGlmIChkYXRhID09IE5VTEwpIHsKICAgICAgICAgZmNsb3NlKGZwKTsKICAgICAgICAgcmVtb3ZlKGZuKTsKQEAgLTE5MTcsNyArMjMwMSw3IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUN1cnNlc0Vycm9yLCBjYXRjaGFsbF9OVUxMKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeUN1cnNlc1dpbmRvd19OZXcod2luKTsKKyAgICByZXR1cm4gUHlDdXJzZXNXaW5kb3dfTmV3KHdpbiwgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xOTk1LDEwICsyMzc5LDExIEBACiBQeUN1cnNlc19Jbml0U2NyKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFdJTkRPVyAqd2luOworICAgIFB5Q3Vyc2VzV2luZG93T2JqZWN0ICp3aW5vYmo7CiAKICAgICBpZiAoaW5pdGlhbGlzZWQgPT0gVFJVRSkgewogICAgICAgICB3cmVmcmVzaChzdGRzY3IpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHN0ZHNjcik7CisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcoc3Rkc2NyLCBOVUxMKTsKICAgICB9CiAKICAgICB3aW4gPSBpbml0c2NyKCk7CkBAIC0yMDkwLDcgKzI0NzUsOSBAQAogICAgIFNldERpY3RJbnQoIkxJTkVTIiwgTElORVMpOwogICAgIFNldERpY3RJbnQoIkNPTFMiLCBDT0xTKTsKIAotICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luKTsKKyAgICB3aW5vYmogPSAoUHlDdXJzZXNXaW5kb3dPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luLCBOVUxMKTsKKyAgICBzY3JlZW5fZW5jb2RpbmcgPSB3aW5vYmotPmVuY29kaW5nOworICAgIHJldHVybiAoUHlPYmplY3QgKil3aW5vYmo7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yMjkyLDcgKzI2NzksNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHdpbik7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4sIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjMyNCw3ICsyNzExLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4pOworICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI0MTYsNiArMjgwMyw4IEBACiB7CiAgICAgUHlPYmplY3QgKm87CiAgICAgUHlPYmplY3QgKm0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJjdXJzZXMiKTsKKyAgICBfUHlfSURFTlRJRklFUihMSU5FUyk7CisgICAgX1B5X0lERU5USUZJRVIoQ09MUyk7CiAKICAgICBpZiAoIW0pCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjQyNSwxMiArMjgxNCwxMyBAQAogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhtLCAiTElORVMiLCBvKSkgeworICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKG0sICZQeUlkX0xJTkVTLCBvKSkgewogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIFB5X0RFQ1JFRihvKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhNb2REaWN0LCAiTElORVMiLCBvKSkgeworICAgIC8qIFB5SWRfTElORVMub2JqZWN0IHdpbGwgYmUgaW5pdGlhbGl6ZWQgaGVyZS4gKi8KKyAgICBpZiAoUHlEaWN0X1NldEl0ZW0oTW9kRGljdCwgUHlJZF9MSU5FUy5vYmplY3QsIG8pKSB7CiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgUHlfREVDUkVGKG8pOwogICAgICAgICByZXR1cm4gMDsKQEAgLTI0NDEsMTIgKzI4MzEsMTIgQEAKICAgICAgICAgUHlfREVDUkVGKG0pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcobSwgIkNPTFMiLCBvKSkgeworICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKG0sICZQeUlkX0NPTFMsIG8pKSB7CiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgUHlfREVDUkVGKG8pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKE1vZERpY3QsICJDT0xTIiwgbykpIHsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW0oTW9kRGljdCwgUHlJZF9DT0xTLm9iamVjdCwgbykpIHsKICAgICAgICAgUHlfREVDUkVGKG0pOwogICAgICAgICBQeV9ERUNSRUYobyk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjYzOCwxMCArMzAyOCw4IEBACiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiTztjaCBvciBpbnQiLCZ0ZW1wKSkgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZSh0ZW1wLCAmY2gpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhcmd1bWVudCBtdXN0IGJlIGEgY2ggb3IgYW4gaW50Iik7CisgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoTlVMTCwgdGVtcCwgJmNoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZyh1bmN0cmwoY2gpKTsKIH0KQEAgLTI2NTQsMTYgKzMwNDIsODAgQEAKIAogICAgIFB5Q3Vyc2VzSW5pdGlhbGlzZWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiTztjaCBvciBpbnQiLCZ0ZW1wKSkgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZSh0ZW1wLCAmY2gpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhcmd1bWVudCBtdXN0IGJlIGEgY2ggb3IgYW4gaW50Iik7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk87Y2ggb3IgaW50IiwmdGVtcCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKworICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKE5VTEwsIHRlbXAsICZjaCkpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIodW5nZXRjaChjaCksICJ1bmdldGNoIik7CiB9CiAKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisvKiBDb252ZXJ0IGFuIG9iamVjdCB0byBhIGNoYXJhY3RlciAod2NoYXJfdCk6CisKKyAgICAtIGludAorICAgIC0gc3RyIG9mIGxlbmd0aCAxCisKKyAgIFJldHVybiAxIG9uIHN1Y2Nlc3MsIDAgb24gZXJyb3IuICovCitzdGF0aWMgaW50CitQeUN1cnNlc19Db252ZXJ0VG9XY2hhcl90KFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKndjaCkKK3sKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyAgICAgICAgd2NoYXJfdCBidWZmZXJbMl07CisgICAgICAgIGlmIChQeVVuaWNvZGVfQXNXaWRlQ2hhcihvYmosIGJ1ZmZlciwgMikgIT0gMSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0IGJ5dGVzIG9yIHN0ciBvZiBsZW5ndGggMSwgb3IgaW50LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImdvdCBhIHN0ciBvZiBsZW5ndGggJXppIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgICp3Y2ggPSBidWZmZXJbMF07CisgICAgICAgIHJldHVybiAyOworICAgIH0KKyAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgIGxvbmcgdmFsdWU7CisgICAgICAgIGludCBvdmVyZmxvdzsKKyAgICAgICAgdmFsdWUgPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cob2JqLCAmb3ZlcmZsb3cpOworICAgICAgICBpZiAob3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgZG9lc24ndCBmaXQgaW4gbG9uZyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgKndjaCA9ICh3Y2hhcl90KXZhbHVlOworICAgICAgICBpZiAoKGxvbmcpKndjaCAhPSB2YWx1ZSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlciBkb2Vzbid0IGZpdCBpbiB3Y2hhcl90Iik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0IGJ5dGVzIG9yIHN0ciBvZiBsZW5ndGggMSwgb3IgaW50LCBnb3QgJXMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorUHlDdXJzZXNfVW5nZXRfV2NoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb2JqOworICAgIHdjaGFyX3Qgd2NoOworCisgICAgUHlDdXJzZXNJbml0aWFsaXNlZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPIiwgJm9iaikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9XY2hhcl90KG9iaiwgJndjaCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHVuZ2V0X3djaCh3Y2gpLCAidW5nZXRfd2NoIik7Cit9CisjZW5kaWYKKwogc3RhdGljIFB5T2JqZWN0ICoKIFB5Q3Vyc2VzX1VzZV9FbnYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMjc5MSw2ICszMjQzLDkgQEAKICAgICB7InR5cGVhaGVhZCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfVHlwZUFoZWFkLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsidW5jdHJsIiwgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19VbkN0cmwsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJ1bmdldGNoIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1VuZ2V0Q2gsIE1FVEhfVkFSQVJHU30sCisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHsidW5nZXRfd2NoIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19VbmdldF9XY2gsIE1FVEhfVkFSQVJHU30sCisjZW5kaWYKICAgICB7InVzZV9lbnYiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfVXNlX0VudiwgTUVUSF9WQVJBUkdTfSwKICNpZm5kZWYgU1RSSUNUX1NZU1ZfQ1VSU0VTCiAgICAgeyJ1c2VfZGVmYXVsdF9jb2xvcnMiLCAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1VzZV9EZWZhdWx0X0NvbG9ycywgTUVUSF9OT0FSR1N9LApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYyBiL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMKaW5kZXggZWYyZjdiMy4uN2M3MTcwZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYworKysgYi9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jCkBAIC03LDggKzcsNiBAQAogCiAjaW5jbHVkZSA8dGltZS5oPgogCi0jaW5jbHVkZSAiX3RpbWUuaCIKLQogLyogRGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGJ1aWxkaW5nIHRoZSBjb3JlIG1vZHVsZSBhbmQgYnVpbGRpbmcgZXh0ZW5zaW9uCiAgKiBtb2R1bGVzLgogICovCkBAIC03NjYsOCArNzY0LDEwIEBACiAgICAgUHlPYmplY3QgKm5hbWU7CiB9IFB5RGF0ZVRpbWVfVGltZVpvbmU7CiAKLS8qIFRoZSBpbnRlcm5lZCBVVEMgdGltZXpvbmUgaW5zdGFuY2UgKi8gCisvKiBUaGUgaW50ZXJuZWQgVVRDIHRpbWV6b25lIGluc3RhbmNlICovCiBzdGF0aWMgUHlPYmplY3QgKlB5RGF0ZVRpbWVfVGltZVpvbmVfVVRDOworLyogVGhlIGludGVybmVkIEVwb2NoIGRhdGV0aW1lIGluc3RhbmNlICovCitzdGF0aWMgUHlPYmplY3QgKlB5RGF0ZVRpbWVfRXBvY2g7CiAKIC8qIENyZWF0ZSBuZXcgdGltZXpvbmUgaW5zdGFuY2UgY2hlY2tpbmcgb2Zmc2V0IHJhbmdlLiAgVGhpcwogICAgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIG5hbWUgYXJndW1lbnQuICBDYWxsZXIgbXVzdCBhc3N1cmUKQEAgLTgwOSwxNCArODA5LDE2IEBACiAgICAgfQogICAgIGlmIChHRVRfVERfTUlDUk9TRUNPTkRTKG9mZnNldCkgIT0gMCB8fCBHRVRfVERfU0VDT05EUyhvZmZzZXQpICUgNjAgIT0gMCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIm9mZnNldCBtdXN0IGJlIGEgdGltZWRlbHRhIgotICAgICAgICAgICAgICAgICAgICAgIiByZXByZXNlbnRpbmcgYSB3aG9sZSBudW1iZXIgb2YgbWludXRlcyIpOworICAgICAgICAgICAgICAgICAgICAgIiByZXByZXNlbnRpbmcgYSB3aG9sZSBudW1iZXIgb2YgbWludXRlcywiCisgICAgICAgICAgICAgICAgICAgICAiIG5vdCAlUi4iLCBvZmZzZXQpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKChHRVRfVERfREFZUyhvZmZzZXQpID09IC0xICYmIEdFVF9URF9TRUNPTkRTKG9mZnNldCkgPT0gMCkgfHwKICAgICAgICAgR0VUX1REX0RBWVMob2Zmc2V0KSA8IC0xIHx8IEdFVF9URF9EQVlTKG9mZnNldCkgPj0gMSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIm9mZnNldCBtdXN0IGJlIGEgdGltZWRlbHRhIgogICAgICAgICAgICAgICAgICAgICAgIiBzdHJpY3RseSBiZXR3ZWVuIC10aW1lZGVsdGEoaG91cnM9MjQpIGFuZCIKLSAgICAgICAgICAgICAgICAgICAgICIgdGltZWRlbHRhKGhvdXJzPTI0KS4iKTsKKyAgICAgICAgICAgICAgICAgICAgICIgdGltZWRlbHRhKGhvdXJzPTI0KSwiCisgICAgICAgICAgICAgICAgICAgICAiIG5vdCAlUi4iLCBvZmZzZXQpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTk0Niw2ICs5NDgsNyBAQAogY2FsbF90em5hbWUoUHlPYmplY3QgKnR6aW5mbywgUHlPYmplY3QgKnR6aW5mb2FyZykKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKHR6bmFtZSk7CiAKICAgICBhc3NlcnQodHppbmZvICE9IE5VTEwpOwogICAgIGFzc2VydChjaGVja190emluZm9fc3ViY2xhc3ModHppbmZvKSA+PSAwKTsKQEAgLTk1NCw3ICs5NTcsNyBAQAogICAgIGlmICh0emluZm8gPT0gUHlfTm9uZSkKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAKLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHR6aW5mbywgInR6bmFtZSIsICJPIiwgdHppbmZvYXJnKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6aW5mbywgJlB5SWRfdHpuYW1lLCAiTyIsIHR6aW5mb2FyZyk7CiAKICAgICBpZiAocmVzdWx0ID09IE5VTEwgfHwgcmVzdWx0ID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC05ODUsOSArOTg4LDggQEAKICAgICBpZiAodHppbmZvID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiByZXByOwogICAgIC8qIEdldCByaWQgb2YgdGhlIHRyYWlsaW5nICcpJy4gKi8KLSAgICBhc3NlcnQoUHlVbmljb2RlX0FTX1VOSUNPREUocmVwcilbUHlVbmljb2RlX0dFVF9TSVpFKHJlcHIpLTFdID09ICcpJyk7Ci0gICAgdGVtcCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXByKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHJlcHIpIC0gMSk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9SRUFEX0NIQVIocmVwciwgUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwciktMSkgPT0gJyknKTsKKyAgICB0ZW1wID0gUHlVbmljb2RlX1N1YnN0cmluZyhyZXByLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXByKSAtIDEpOwogICAgIFB5X0RFQ1JFRihyZXByKTsKICAgICBpZiAodGVtcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEwNzksNiArMTA4MSw4IEBACiAgICAgUHlPYmplY3QgKnRlbXA7CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IGdldF90emluZm9fbWVtYmVyKG9iamVjdCk7CiAgICAgUHlPYmplY3QgKlpyZXBsYWNlbWVudCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKKyAgICBfUHlfSURFTlRJRklFUihyZXBsYWNlKTsKKwogICAgIGlmIChacmVwbGFjZW1lbnQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHR6aW5mbyA9PSBQeV9Ob25lIHx8IHR6aW5mbyA9PSBOVUxMKQpAQCAtMTA5OSw3ICsxMTAzLDcgQEAKICAgICAgKiBzdHJmdGltZSBkb2Vzbid0IHRyZWF0IHRoZW0gYXMgZm9ybWF0IGNvZGVzLgogICAgICAqLwogICAgIFB5X0RFQ1JFRihacmVwbGFjZW1lbnQpOwotICAgIFpyZXBsYWNlbWVudCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodGVtcCwgInJlcGxhY2UiLCAic3MiLCAiJSIsICIlJSIpOworICAgIFpyZXBsYWNlbWVudCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGVtcCwgJlB5SWRfcmVwbGFjZSwgInNzIiwgIiUiLCAiJSUiKTsKICAgICBQeV9ERUNSRUYodGVtcCk7CiAgICAgaWYgKFpyZXBsYWNlbWVudCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExNjYsMzEgKzExNzAsNiBAQAogICAgIGlmICghcGluKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIC8qIEdpdmUgdXAgaWYgdGhlIHllYXIgaXMgYmVmb3JlIDEwMDAuCi0gICAgICogUHl0aG9uIHN0cmZ0aW1lKCkgcGxheXMgZ2FtZXMgd2l0aCB0aGUgeWVhciwgYW5kIGRpZmZlcmVudAotICAgICAqIGdhbWVzIGRlcGVuZGluZyBvbiB3aGV0aGVyIGVudmFyIFBZVEhPTjJLIGlzIHNldC4gIFRoaXMgbWFrZXMKLSAgICAgKiB5ZWFycyBiZWZvcmUgMTAwMCBhIG5pZ2h0bWFyZSwgZXZlbiBpZiB0aGUgcGxhdGZvcm0gc3RyZnRpbWUKLSAgICAgKiBzdXBwb3J0cyB0aGVtIChhbmQgbm90IGFsbCBkbykuCi0gICAgICogV2UgY291bGQgZ2V0IGEgbG90IGZhcnRoZXIgaGVyZSBieSBhdm9pZGluZyBQeXRob24ncyBzdHJmdGltZQotICAgICAqIHdyYXBwZXIgYW5kIGNhbGxpbmcgdGhlIEMgc3RyZnRpbWUoKSBkaXJlY3RseSwgYnV0IHRoYXQgaXNuJ3QKLSAgICAgKiBhbiBvcHRpb24gaW4gdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIG1vZHVsZS4KLSAgICAgKi8KLSAgICB7Ci0gICAgICAgIGxvbmcgeWVhcjsKLSAgICAgICAgUHlPYmplY3QgKnB5eWVhciA9IFB5U2VxdWVuY2VfR2V0SXRlbSh0aW1ldHVwbGUsIDApOwotICAgICAgICBpZiAocHl5ZWFyID09IE5VTEwpIHJldHVybiBOVUxMOwotICAgICAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHB5eWVhcikpOwotICAgICAgICB5ZWFyID0gUHlMb25nX0FzTG9uZyhweXllYXIpOwotICAgICAgICBQeV9ERUNSRUYocHl5ZWFyKTsKLSAgICAgICAgaWYgKHllYXIgPCAxMDAwKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgInllYXI9JWxkIGlzIGJlZm9yZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIjEwMDA7IHRoZSBkYXRldGltZSBzdHJmdGltZSgpICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAibWV0aG9kcyByZXF1aXJlIHllYXIgPj0gMTAwMCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgeWVhcik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLQogICAgIC8qIFNjYW4gdGhlIGlucHV0IGZvcm1hdCwgbG9va2luZyBmb3IgJXovJVovJWYgZXNjYXBlcywgYnVpbGRpbmcKICAgICAgKiBhIG5ldyBmb3JtYXQuICBTaW5jZSBjb21wdXRpbmcgdGhlIHJlcGxhY2VtZW50cyBmb3IgdGhvc2UgY29kZXMKICAgICAgKiBpcyBleHBlbnNpdmUsIGRvbid0IHVubGVzcyB0aGV5J3JlIGFjdHVhbGx5IHVzZWQuCkBAIC0xMjg2LDE0ICsxMjY1LDEzIEBACiAgICAgICAgIGFzc2VydChwdG9hcHBlbmQgIT0gTlVMTCk7CiAgICAgICAgIGFzc2VydChudG9hcHBlbmQgPiAwKTsKICAgICAgICAgd2hpbGUgKHVzZWRuZXcgKyBudG9hcHBlbmQgPiB0b3RhbG5ldykgewotICAgICAgICAgICAgc2l6ZV90IGJpZ2dlciA9IHRvdGFsbmV3IDw8IDE7Ci0gICAgICAgICAgICBpZiAoKGJpZ2dlciA+PiAxKSAhPSB0b3RhbG5ldykgeyAvKiBvdmVyZmxvdyAqLworICAgICAgICAgICAgaWYgKHRvdGFsbmV3ID4gKFBZX1NTSVpFX1RfTUFYID4+IDEpKSB7IC8qIG92ZXJmbG93ICovCiAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICBnb3RvIERvbmU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZuZXdmbXQsIGJpZ2dlcikgPCAwKQorICAgICAgICAgICAgdG90YWxuZXcgPDw9IDE7CisgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZuZXdmbXQsIHRvdGFsbmV3KSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBEb25lOwotICAgICAgICAgICAgdG90YWxuZXcgPSBiaWdnZXI7CiAgICAgICAgICAgICBwbmV3ID0gUHlCeXRlc19Bc1N0cmluZyhuZXdmbXQpICsgdXNlZG5ldzsKICAgICAgICAgfQogICAgICAgICBtZW1jcHkocG5ldywgcHRvYXBwZW5kLCBudG9hcHBlbmQpOwpAQCAtMTMwNywxMiArMTI4NSwxNSBAQAogICAgIHsKICAgICAgICAgUHlPYmplY3QgKmZvcm1hdDsKICAgICAgICAgUHlPYmplY3QgKnRpbWUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJ0aW1lIik7CisKICAgICAgICAgaWYgKHRpbWUgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gRG9uZTsKICAgICAgICAgZm9ybWF0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoUHlCeXRlc19BU19TVFJJTkcobmV3Zm10KSk7CiAgICAgICAgIGlmIChmb3JtYXQgIT0gTlVMTCkgewotICAgICAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh0aW1lLCAic3RyZnRpbWUiLCAiT08iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHRpbWV0dXBsZSwgTlVMTCk7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihzdHJmdGltZSk7CisKKyAgICAgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGltZSwgJlB5SWRfc3RyZnRpbWUsICJPTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdGltZXR1cGxlLCBOVUxMKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihmb3JtYXQpOwogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRih0aW1lKTsKQEAgLTEzMzgsNyArMTMxOSw5IEBACiAgICAgUHlPYmplY3QgKnRpbWUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJ0aW1lIik7CiAKICAgICBpZiAodGltZSAhPSBOVUxMKSB7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodGltZSwgInRpbWUiLCAiKCkiKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIodGltZSk7CisKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aW1lLCAmUHlJZF90aW1lLCAiKCkiKTsKICAgICAgICAgUHlfREVDUkVGKHRpbWUpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTM1NSwxMyArMTMzOCwxNSBAQAogCiAgICAgdGltZSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soInRpbWUiKTsKICAgICBpZiAodGltZSAhPSBOVUxMKSB7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodGltZSwgInN0cnVjdF90aW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKChpaWlpaWlpaWkpKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSwgbSwgZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaCwgbW0sIHNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlZWtkYXkoeSwgbSwgZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5c19iZWZvcmVfbW9udGgoeSwgbSkgKyBkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdGZsYWcpOworICAgICAgICBfUHlfSURFTlRJRklFUihzdHJ1Y3RfdGltZSk7CisKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aW1lLCAmUHlJZF9zdHJ1Y3RfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKChpaWlpaWlpaWkpKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSwgbSwgZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaCwgbW0sIHNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlZWtkYXkoeSwgbSwgZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5c19iZWZvcmVfbW9udGgoeSwgbSkgKyBkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdGZsYWcpOwogICAgICAgICBQeV9ERUNSRUYodGltZSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNDYxLDcgKzE0NDYsNyBAQAogICAgICAgICBnb3RvIERvbmU7CiAgICAgUHlfREVDUkVGKHgxKTsKICAgICBQeV9ERUNSRUYoeDIpOwotICAgIHgxID0geDIgPSBOVUxMOworICAgIC8qIHgxID0gKi8geDIgPSBOVUxMOwogCiAgICAgLyogeDMgaGFzIGRheXMrc2Vjb25kcyBpbiBzZWNvbmRzICovCiAgICAgeDEgPSBQeU51bWJlcl9NdWx0aXBseSh4MywgdXNfcGVyX3NlY29uZCk7ICAgICAgICAgIC8qIHVzICovCkBAIC0xNTk0LDExICsxNTc5LDEyIEBACiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnB5dXNfaW4gPSBOVUxMLCAqdGVtcCwgKnB5dXNfb3V0OwogICAgIFB5T2JqZWN0ICpyYXRpbyA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoYXNfaW50ZWdlcl9yYXRpbyk7CiAKICAgICBweXVzX2luID0gZGVsdGFfdG9fbWljcm9zZWNvbmRzKGRlbHRhKTsKICAgICBpZiAocHl1c19pbiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByYXRpbyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZmxvYXRvYmosICJhc19pbnRlZ2VyX3JhdGlvIiwgTlVMTCk7CisgICAgcmF0aW8gPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZsb2F0b2JqLCAmUHlJZF9hc19pbnRlZ2VyX3JhdGlvLCBOVUxMKTsKICAgICBpZiAocmF0aW8gPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICB0ZW1wID0gUHlOdW1iZXJfTXVsdGlwbHkocHl1c19pbiwgUHlUdXBsZV9HRVRfSVRFTShyYXRpbywgMCkpOwpAQCAtMTY5MiwxMSArMTY3OCwxMiBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpweXVzX2luID0gTlVMTCwgKnRlbXAsICpweXVzX291dDsKICAgICBQeU9iamVjdCAqcmF0aW8gPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKGFzX2ludGVnZXJfcmF0aW8pOwogCiAgICAgcHl1c19pbiA9IGRlbHRhX3RvX21pY3Jvc2Vjb25kcyhkZWx0YSk7CiAgICAgaWYgKHB5dXNfaW4gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmF0aW8gPSBQeU9iamVjdF9DYWxsTWV0aG9kKGYsICJhc19pbnRlZ2VyX3JhdGlvIiwgTlVMTCk7CisgICAgcmF0aW8gPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX2FzX2ludGVnZXJfcmF0aW8sIE5VTEwpOwogICAgIGlmIChyYXRpbyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIHRlbXAgPSBQeU51bWJlcl9NdWx0aXBseShweXVzX2luLCBQeVR1cGxlX0dFVF9JVEVNKHJhdGlvLCAxKSk7CkBAIC0xODM3LDggKzE4MjQsNyBAQAogICAgICAgICByZXR1cm4gZGlmZl90b19ib29sKGRpZmYsIG9wKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KIH0KIApAQCAtMTkzNiwxMCArMTkyMiw4IEBACiAgICAgUHlPYmplY3QgKnB5dXNfcmVtYWluZGVyOwogICAgIFB5T2JqZWN0ICpyZW1haW5kZXI7CiAKLSAgICBpZiAoIVB5RGVsdGFfQ2hlY2sobGVmdCkgfHwgIVB5RGVsdGFfQ2hlY2socmlnaHQpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeURlbHRhX0NoZWNrKGxlZnQpIHx8ICFQeURlbHRhX0NoZWNrKHJpZ2h0KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgcHl1c19sZWZ0ID0gZGVsdGFfdG9fbWljcm9zZWNvbmRzKChQeURhdGVUaW1lX0RlbHRhICopbGVmdCk7CiAgICAgaWYgKHB5dXNfbGVmdCA9PSBOVUxMKQpAQCAtMTk3NCwxMCArMTk1OCw4IEBACiAgICAgUHlPYmplY3QgKmRlbHRhOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBpZiAoIVB5RGVsdGFfQ2hlY2sobGVmdCkgfHwgIVB5RGVsdGFfQ2hlY2socmlnaHQpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeURlbHRhX0NoZWNrKGxlZnQpIHx8ICFQeURlbHRhX0NoZWNrKHJpZ2h0KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgcHl1c19sZWZ0ID0gZGVsdGFfdG9fbWljcm9zZWNvbmRzKChQeURhdGVUaW1lX0RlbHRhICopbGVmdCk7CiAgICAgaWYgKHB5dXNfbGVmdCA9PSBOVUxMKQpAQCAtMjQ2MCwyNiArMjQ0MiwyOSBAQAogCiAvKiBSZXR1cm4gbmV3IGRhdGUgZnJvbSBsb2NhbHRpbWUodCkuICovCiBzdGF0aWMgUHlPYmplY3QgKgotZGF0ZV9sb2NhbF9mcm9tX3RpbWVfdChQeU9iamVjdCAqY2xzLCBkb3VibGUgdHMpCitkYXRlX2xvY2FsX2Zyb21fb2JqZWN0KFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICpvYmopCiB7CiAgICAgc3RydWN0IHRtICp0bTsKICAgICB0aW1lX3QgdDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIHQgPSBfUHlUaW1lX0RvdWJsZVRvVGltZXQodHMpOwotICAgIGlmICh0ID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVfdChvYmosICZ0KSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICB0bSA9IGxvY2FsdGltZSgmdCk7Ci0gICAgaWYgKHRtKQotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tb24gKyAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21kYXkpOwotICAgIGVsc2UKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSBmb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIGxvY2FsdGltZSgpIGZ1bmN0aW9uIik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAodG0gPT0gTlVMTCkgeworICAgICAgICAvKiB1bmNvbnZlcnRpYmxlIHRpbWUgKi8KKyNpZmRlZiBFSU5WQUwKKyAgICAgICAgaWYgKGVycm5vID09IDApCisgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyNlbmRpZgorICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tb24gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21kYXkpOwogfQogCiAvKiBSZXR1cm4gbmV3IGRhdGUgZnJvbSBjdXJyZW50IHRpbWUuCkBAIC0yNDkyLDYgKzI0NzcsNyBAQAogewogICAgIFB5T2JqZWN0ICp0aW1lOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIoZnJvbXRpbWVzdGFtcCk7CiAKICAgICB0aW1lID0gdGltZV90aW1lKCk7CiAgICAgaWYgKHRpbWUgPT0gTlVMTCkKQEAgLTI1MDMsNyArMjQ4OSw3IEBACiAgICAgICogdGltZS50aW1lKCkgZGVsaXZlcnM7IGlmIHNvbWVvbmUgd2VyZSBnb256byBhYm91dCBvcHRpbWl6YXRpb24sCiAgICAgICogZGF0ZS50b2RheSgpIGNvdWxkIGdldCBhd2F5IHdpdGggcGxhaW4gQyB0aW1lKCkuCiAgICAgICovCi0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChjbHMsICJmcm9tdGltZXN0YW1wIiwgIk8iLCB0aW1lKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGNscywgJlB5SWRfZnJvbXRpbWVzdGFtcCwgIk8iLCB0aW1lKTsKICAgICBQeV9ERUNSRUYodGltZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI1MTIsMTEgKzI0OTgsMTEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRlX2Zyb210aW1lc3RhbXAoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgZG91YmxlIHRpbWVzdGFtcDsKKyAgICBQeU9iamVjdCAqdGltZXN0YW1wOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImQ6ZnJvbXRpbWVzdGFtcCIsICZ0aW1lc3RhbXApKQotICAgICAgICByZXN1bHQgPSBkYXRlX2xvY2FsX2Zyb21fdGltZV90KGNscywgdGltZXN0YW1wKTsKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpmcm9tdGltZXN0YW1wIiwgJnRpbWVzdGFtcCkpCisgICAgICAgIHJlc3VsdCA9IGRhdGVfbG9jYWxfZnJvbV9vYmplY3QoY2xzLCB0aW1lc3RhbXApOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI1NzEsMTAgKzI1NTcsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGVfYWRkKFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQpCiB7Ci0gICAgaWYgKFB5RGF0ZVRpbWVfQ2hlY2sobGVmdCkgfHwgUHlEYXRlVGltZV9DaGVjayhyaWdodCkpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoUHlEYXRlVGltZV9DaGVjayhsZWZ0KSB8fCBQeURhdGVUaW1lX0NoZWNrKHJpZ2h0KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworCiAgICAgaWYgKFB5RGF0ZV9DaGVjayhsZWZ0KSkgewogICAgICAgICAvKiBkYXRlICsgPz8/ICovCiAgICAgICAgIGlmIChQeURlbHRhX0NoZWNrKHJpZ2h0KSkKQEAgLTI1OTMsMTcgKzI1NzgsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKikgbGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGVfc3VidHJhY3QoUHlPYmplY3QgKmxlZnQsIFB5T2JqZWN0ICpyaWdodCkKIHsKLSAgICBpZiAoUHlEYXRlVGltZV9DaGVjayhsZWZ0KSB8fCBQeURhdGVUaW1lX0NoZWNrKHJpZ2h0KSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmIChQeURhdGVUaW1lX0NoZWNrKGxlZnQpIHx8IFB5RGF0ZVRpbWVfQ2hlY2socmlnaHQpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisKICAgICBpZiAoUHlEYXRlX0NoZWNrKGxlZnQpKSB7CiAgICAgICAgIGlmIChQeURhdGVfQ2hlY2socmlnaHQpKSB7CiAgICAgICAgICAgICAvKiBkYXRlIC0gZGF0ZSAqLwpAQCAtMjYyMiw4ICsyNjA1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiAKQEAgLTI2NDgsNyArMjYzMCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZV9zdHIoUHlEYXRlVGltZV9EYXRlICpzZWxmKQogewotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJpc29mb3JtYXQiLCAiKCkiKTsKKyAgICBfUHlfSURFTlRJRklFUihpc29mb3JtYXQpOworCisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfaXNvZm9ybWF0LCAiKCkiKTsKIH0KIAogCkBAIC0yNjY3LDEzICsyNjUxLDE0IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqdHVwbGU7CiAgICAgUHlPYmplY3QgKmZvcm1hdDsKKyAgICBfUHlfSURFTlRJRklFUih0aW1ldHVwbGUpOwogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJmb3JtYXQiLCBOVUxMfTsKIAogICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIlU6c3RyZnRpbWUiLCBrZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgdHVwbGUgPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJ0aW1ldHVwbGUiLCAiKCkiKTsKKyAgICB0dXBsZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfdGltZXR1cGxlLCAiKCkiKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmVzdWx0ID0gd3JhcF9zdHJmdGltZSgoUHlPYmplY3QgKilzZWxmLCBmb3JtYXQsIHR1cGxlLApAQCAtMjY4NiwxNSArMjY3MSwxNiBAQAogZGF0ZV9mb3JtYXQoUHlEYXRlVGltZV9EYXRlICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqZm9ybWF0OworICAgIF9QeV9JREVOVElGSUVSKHN0cmZ0aW1lKTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpfX2Zvcm1hdF9fIiwgJmZvcm1hdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogaWYgdGhlIGZvcm1hdCBpcyB6ZXJvIGxlbmd0aCwgcmV0dXJuIHN0cihzZWxmKSAqLwotICAgIGlmIChQeVVuaWNvZGVfR2V0U2l6ZShmb3JtYXQpID09IDApCisgICAgaWYgKFB5VW5pY29kZV9HZXRMZW5ndGgoZm9ybWF0KSA9PSAwKQogICAgICAgICByZXR1cm4gUHlPYmplY3RfU3RyKChQeU9iamVjdCAqKXNlbGYpOwogCi0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopc2VsZiwgInN0cmZ0aW1lIiwgIk8iLCBmb3JtYXQpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX3N0cmZ0aW1lLCAiTyIsIGZvcm1hdCk7CiB9CiAKIC8qIElTTyBtZXRob2RzLiAqLwpAQCAtMjc0MCwxMCArMjcyNiw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeURhdGVUaW1lX0RBVEVfREFUQVNJWkUpOwogICAgICAgICByZXR1cm4gZGlmZl90b19ib29sKGRpZmYsIG9wKTsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgZWxzZQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNzc1LDI3ICsyNzU5LDEwIEBACiAgICAgcmV0dXJuIGNsb25lOwogfQogCi0vKgotICAgIEJvcnJvd2VkIGZyb20gc3RyaW5nb2JqZWN0LmMsIG9yaWdpbmFsbHkgaXQgd2FzIHN0cmluZ19oYXNoKCkKLSovCiBzdGF0aWMgUHlfaGFzaF90CiBnZW5lcmljX2hhc2godW5zaWduZWQgY2hhciAqZGF0YSwgaW50IGxlbikKIHsKLSAgICByZWdpc3RlciB1bnNpZ25lZCBjaGFyICpwOwotICAgIHJlZ2lzdGVyIFB5X2hhc2hfdCB4OwotCi0gICAgYXNzZXJ0KF9QeV9IYXNoU2VjcmV0X0luaXRpYWxpemVkKTsKLSAgICBwID0gKHVuc2lnbmVkIGNoYXIgKikgZGF0YTsKLSAgICB4ID0gX1B5X0hhc2hTZWNyZXQucHJlZml4OwotICAgIHggXj0gKnAgPDwgNzsKLSAgICB3aGlsZSAoLS1sZW4gPj0gMCkKLSAgICAgICAgeCA9ICgxMDAwMDAzKngpIF4gKnArKzsKLSAgICB4IF49IGxlbjsKLSAgICB4IF49IF9QeV9IYXNoU2VjcmV0LnN1ZmZpeDsKLSAgICBpZiAoeCA9PSAtMSkKLSAgICAgICAgeCA9IC0yOwotCi0gICAgcmV0dXJuIHg7CisgICAgcmV0dXJuIF9QeV9IYXNoQnl0ZXMoZGF0YSwgbGVuKTsKIH0KIAogCkBAIC0zMTAwLDEyICszMDY3LDE0IEBACiB7CiAgICAgUHlPYmplY3QgKmFyZ3MsICpzdGF0ZSwgKnRtcDsKICAgICBQeU9iamVjdCAqZ2V0aW5pdGFyZ3MsICpnZXRzdGF0ZTsKKyAgICBfUHlfSURFTlRJRklFUihfX2dldGluaXRhcmdzX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fZ2V0c3RhdGVfXyk7CiAKICAgICB0bXAgPSBQeVR1cGxlX05ldygwKTsKICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZ2V0aW5pdGFyZ3MgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYsICJfX2dldGluaXRhcmdzX18iKTsKKyAgICBnZXRpbml0YXJncyA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19nZXRpbml0YXJnc19fKTsKICAgICBpZiAoZ2V0aW5pdGFyZ3MgIT0gTlVMTCkgewogICAgICAgICBhcmdzID0gUHlPYmplY3RfQ2FsbE9iamVjdChnZXRpbml0YXJncywgdG1wKTsKICAgICAgICAgUHlfREVDUkVGKGdldGluaXRhcmdzKTsKQEAgLTMxMjAsNyArMzA4OSw3IEBACiAgICAgICAgIFB5X0lOQ1JFRihhcmdzKTsKICAgICB9CiAKLSAgICBnZXRzdGF0ZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc2VsZiwgIl9fZ2V0c3RhdGVfXyIpOworICAgIGdldHN0YXRlID0gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLCAmUHlJZF9fX2dldHN0YXRlX18pOwogICAgIGlmIChnZXRzdGF0ZSAhPSBOVUxMKSB7CiAgICAgICAgIHN0YXRlID0gUHlPYmplY3RfQ2FsbE9iamVjdChnZXRzdGF0ZSwgdG1wKTsKICAgICAgICAgUHlfREVDUkVGKGdldHN0YXRlKTsKQEAgLTMyNDMsMTAgKzMyMTIsOCBAQAogdGltZXpvbmVfcmljaGNvbXBhcmUoUHlEYXRlVGltZV9UaW1lWm9uZSAqc2VsZiwKICAgICAgICAgICAgICAgICAgICAgIFB5RGF0ZVRpbWVfVGltZVpvbmUgKm90aGVyLCBpbnQgb3ApCiB7Ci0gICAgaWYgKG9wICE9IFB5X0VRICYmIG9wICE9IFB5X05FKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKG9wICE9IFB5X0VRICYmIG9wICE9IFB5X05FKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgaWYgKFB5X1RZUEUob3RoZXIpICE9ICZQeURhdGVUaW1lX1RpbWVab25lVHlwZSkgewogCWlmIChvcCA9PSBQeV9FUSkKIAkgICAgUHlfUkVUVVJOX0ZBTFNFOwpAQCAtMzI5Nyw3ICszMjY0LDYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lem9uZV9zdHIoUHlEYXRlVGltZV9UaW1lWm9uZSAqc2VsZikKIHsKLSAgICBjaGFyIGJ1ZlsxMF07CiAgICAgaW50IGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzOwogICAgIFB5T2JqZWN0ICpvZmZzZXQ7CiAgICAgY2hhciBzaWduOwpAQCAtMzMyMywxMSArMzI4OSw5IEBACiAgICAgUHlfREVDUkVGKG9mZnNldCk7CiAgICAgbWludXRlcyA9IGRpdm1vZChzZWNvbmRzLCA2MCwgJnNlY29uZHMpOwogICAgIGhvdXJzID0gZGl2bW9kKG1pbnV0ZXMsIDYwLCAmbWludXRlcyk7Ci0gICAgYXNzZXJ0KHNlY29uZHMgPT0gMCk7CiAgICAgLyogWFhYIGlnbm9yZSBzdWItbWludXRlIGRhdGEsIGN1cmVudGx5IG5vdCBhbGxvd2VkLiAqLwotICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIlVUQyVjJTAyZDolMDJkIiwgc2lnbiwgaG91cnMsIG1pbnV0ZXMpOwotCi0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7CisgICAgYXNzZXJ0KHNlY29uZHMgPT0gMCk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJVVEMlYyUwMmQ6JTAyZCIsIHNpZ24sIGhvdXJzLCBtaW51dGVzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTM2MjQsNyArMzU4OCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9zdHIoUHlEYXRlVGltZV9UaW1lICpzZWxmKQogewotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJpc29mb3JtYXQiLCAiKCkiKTsKKyAgICBfUHlfSURFTlRJRklFUihpc29mb3JtYXQpOworCisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfaXNvZm9ybWF0LCAiKCkiKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTM2MzIsNyArMzU5OCw3IEBACiB7CiAgICAgY2hhciBidWZbMTAwXTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIGludCB1cyA9IFRJTUVfR0VUX01JQ1JPU0VDT05EKHNlbGYpOzsKKyAgICBpbnQgdXMgPSBUSU1FX0dFVF9NSUNST1NFQ09ORChzZWxmKTsKIAogICAgIGlmICh1cykKICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiUwMmQ6JTAyZDolMDJkLiUwNmQiLApAQCAtMzcwMSwxMCArMzY2Nyw4IEBACiAgICAgUHlPYmplY3QgKm9mZnNldDEsICpvZmZzZXQyOwogICAgIGludCBkaWZmOwogCi0gICAgaWYgKCEgUHlUaW1lX0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghIFB5VGltZV9DaGVjayhvdGhlcikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAogICAgIGlmIChHRVRfVElNRV9UWklORk8oc2VsZikgPT0gR0VUX1RJTUVfVFpJTkZPKG90aGVyKSkgewogICAgICAgICBkaWZmID0gbWVtY21wKCgoUHlEYXRlVGltZV9UaW1lICopc2VsZiktPmRhdGEsCkBAIC0zNzUwLDYgKzM3MTQsMTQgQEAKICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9NSUNST1NFQ09ORChvdGhlcik7CiAgICAgICAgIHJlc3VsdCA9IGRpZmZfdG9fYm9vbChkaWZmLCBvcCk7CiAgICAgfQorICAgIGVsc2UgaWYgKG9wID09IFB5X0VRKSB7CisgICAgICAgIHJlc3VsdCA9IFB5X0ZhbHNlOworICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKKyAgICB9CisgICAgZWxzZSBpZiAob3AgPT0gUHlfTkUpIHsKKyAgICAgICAgcmVzdWx0ID0gUHlfVHJ1ZTsKKyAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IGNvbXBhcmUgb2Zmc2V0LW5haXZlIGFuZCAiCkBAIC00MTA1LDMzICs0MDc3LDMzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdHppbmZvKQogewogICAgIHN0cnVjdCB0bSAqdG07Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKICAgICB0bSA9IGYoJnRpbWV0KTsKLSAgICBpZiAodG0pIHsKLSAgICAgICAgLyogVGhlIHBsYXRmb3JtIGxvY2FsdGltZS9nbXRpbWUgbWF5IGluc2VydCBsZWFwIHNlY29uZHMsCi0gICAgICAgICAqIGluZGljYXRlZCBieSB0bS0+dG1fc2VjID4gNTkuICBXZSBkb24ndCBjYXJlIGFib3V0IHRoZW0sCi0gICAgICAgICAqIGV4Y2VwdCB0byB0aGUgZXh0ZW50IHRoYXQgcGFzc2luZyB0aGVtIG9uIHRvIHRoZSBkYXRldGltZQotICAgICAgICAgKiBjb25zdHJ1Y3RvciB3b3VsZCByYWlzZSBWYWx1ZUVycm9yIGZvciBhIHJlYXNvbiB0aGF0Ci0gICAgICAgICAqIG1hZGUgbm8gc2Vuc2UgdG8gdGhlIHVzZXIuCi0gICAgICAgICAqLwotICAgICAgICBpZiAodG0tPnRtX3NlYyA+IDU5KQotICAgICAgICAgICAgdG0tPnRtX3NlYyA9IDU5OwotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpaWlpaU8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX3llYXIgKyAxOTAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21vbiArIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbWRheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9ob3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9zZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyk7CisgICAgaWYgKHRtID09IE5VTEwpIHsKKyNpZmRlZiBFSU5WQUwKKyAgICAgICAgaWYgKGVycm5vID09IDApCisgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyNlbmRpZgorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UgZm9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSBsb2NhbHRpbWUoKS9nbXRpbWUoKSBmdW5jdGlvbiIpOwotICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAvKiBUaGUgcGxhdGZvcm0gbG9jYWx0aW1lL2dtdGltZSBtYXkgaW5zZXJ0IGxlYXAgc2Vjb25kcywKKyAgICAgKiBpbmRpY2F0ZWQgYnkgdG0tPnRtX3NlYyA+IDU5LiAgV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGVtLAorICAgICAqIGV4Y2VwdCB0byB0aGUgZXh0ZW50IHRoYXQgcGFzc2luZyB0aGVtIG9uIHRvIHRoZSBkYXRldGltZQorICAgICAqIGNvbnN0cnVjdG9yIHdvdWxkIHJhaXNlIFZhbHVlRXJyb3IgZm9yIGEgcmVhc29uIHRoYXQKKyAgICAgKiBtYWRlIG5vIHNlbnNlIHRvIHRoZSB1c2VyLgorICAgICAqLworICAgIGlmICh0bS0+dG1fc2VjID4gNTkpCisgICAgICAgIHRtLT50bV9zZWMgPSA1OTsKKyAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGNscywgImlpaWlpaWlPIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tb24gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21kYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1faG91ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9taW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fc2VjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pOwogfQogCiAvKiBJbnRlcm5hbCBoZWxwZXIuCkBAIC00MTQyLDMyICs0MTE0LDE1IEBACiAgKiB0byBnZXQgdGhhdCBtdWNoIHByZWNpc2lvbiAoZS5nLiwgQyB0aW1lKCkgaXNuJ3QgZ29vZCBlbm91Z2gpLgogICovCiBzdGF0aWMgUHlPYmplY3QgKgotZGF0ZXRpbWVfZnJvbV90aW1lc3RhbXAoUHlPYmplY3QgKmNscywgVE1fRlVOQyBmLCBkb3VibGUgdGltZXN0YW1wLAorZGF0ZXRpbWVfZnJvbV90aW1lc3RhbXAoUHlPYmplY3QgKmNscywgVE1fRlVOQyBmLCBQeU9iamVjdCAqdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnR6aW5mbykKIHsKICAgICB0aW1lX3QgdGltZXQ7Ci0gICAgZG91YmxlIGZyYWN0aW9uOwotICAgIGludCB1czsKKyAgICBsb25nIHVzOwogCi0gICAgdGltZXQgPSBfUHlUaW1lX0RvdWJsZVRvVGltZXQodGltZXN0YW1wKTsKLSAgICBpZiAodGltZXQgPT0gKHRpbWVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXZhbCh0aW1lc3RhbXAsICZ0aW1ldCwgJnVzKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZnJhY3Rpb24gPSB0aW1lc3RhbXAgLSAoZG91YmxlKXRpbWV0OwotICAgIHVzID0gKGludClyb3VuZF90b19sb25nKGZyYWN0aW9uICogMWU2KTsKLSAgICBpZiAodXMgPCAwKSB7Ci0gICAgICAgIC8qIFRydW5jYXRpb24gdG93YXJkcyB6ZXJvIGlzIG5vdCB3aGF0IHdlIHdhbnRlZAotICAgICAgICAgICBmb3IgbmVnYXRpdmUgbnVtYmVycyAoUHl0aG9uJ3MgbW9kIHNlbWFudGljcykgKi8KLSAgICAgICAgdGltZXQgLT0gMTsKLSAgICAgICAgdXMgKz0gMTAwMDAwMDsKLSAgICB9Ci0gICAgLyogSWYgdGltZXN0YW1wIGlzIGxlc3MgdGhhbiBvbmUgbWljcm9zZWNvbmQgc21hbGxlciB0aGFuIGEKLSAgICAgKiBmdWxsIHNlY29uZCwgcm91bmQgdXAuIE90aGVyd2lzZSwgVmFsdWVFcnJvcnMgYXJlIHJhaXNlZAotICAgICAqIGZvciBzb21lIGZsb2F0cy4gKi8KLSAgICBpZiAodXMgPT0gMTAwMDAwMCkgewotICAgICAgICB0aW1ldCArPSAxOwotICAgICAgICB1cyA9IDA7Ci0gICAgfQotICAgIHJldHVybiBkYXRldGltZV9mcm9tX3RpbWV0X2FuZF91cyhjbHMsIGYsIHRpbWV0LCB1cywgdHppbmZvKTsKKyAgICByZXR1cm4gZGF0ZXRpbWVfZnJvbV90aW1ldF9hbmRfdXMoY2xzLCBmLCB0aW1ldCwgKGludCl1cywgdHppbmZvKTsKIH0KIAogLyogSW50ZXJuYWwgaGVscGVyLgpAQCAtNDIwNSw3ICs0MTYwLDkgQEAKICAgICBpZiAoc2VsZiAhPSBOVUxMICYmIHR6aW5mbyAhPSBQeV9Ob25lKSB7CiAgICAgICAgIC8qIENvbnZlcnQgVVRDIHRvIHR6aW5mbydzIHpvbmUuICovCiAgICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gc2VsZjsKLSAgICAgICAgc2VsZiA9IFB5T2JqZWN0X0NhbGxNZXRob2QodHppbmZvLCAiZnJvbXV0YyIsICJPIiwgc2VsZik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGZyb211dGMpOworCisgICAgICAgIHNlbGYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6aW5mbywgJlB5SWRfZnJvbXV0YywgIk8iLCBzZWxmKTsKICAgICAgICAgUHlfREVDUkVGKHRlbXApOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKQEAgLTQyMjUsMTEgKzQxODIsMTEgQEAKIGRhdGV0aW1lX2Zyb210aW1lc3RhbXAoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKICAgICBQeU9iamVjdCAqc2VsZjsKLSAgICBkb3VibGUgdGltZXN0YW1wOworICAgIFB5T2JqZWN0ICp0aW1lc3RhbXA7CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IFB5X05vbmU7CiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InRpbWVzdGFtcCIsICJ0eiIsIE5VTEx9OwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiZHxPOmZyb210aW1lc3RhbXAiLAorICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk98Tzpmcm9tdGltZXN0YW1wIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZHMsICZ0aW1lc3RhbXAsICZ0emluZm8pKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoY2hlY2tfdHppbmZvX3N1YmNsYXNzKHR6aW5mbykgPCAwKQpAQCAtNDI0Miw3ICs0MTk5LDkgQEAKICAgICBpZiAoc2VsZiAhPSBOVUxMICYmIHR6aW5mbyAhPSBQeV9Ob25lKSB7CiAgICAgICAgIC8qIENvbnZlcnQgVVRDIHRvIHR6aW5mbydzIHpvbmUuICovCiAgICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gc2VsZjsKLSAgICAgICAgc2VsZiA9IFB5T2JqZWN0X0NhbGxNZXRob2QodHppbmZvLCAiZnJvbXV0YyIsICJPIiwgc2VsZik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGZyb211dGMpOworCisgICAgICAgIHNlbGYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6aW5mbywgJlB5SWRfZnJvbXV0YywgIk8iLCBzZWxmKTsKICAgICAgICAgUHlfREVDUkVGKHRlbXApOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKQEAgLTQyNTIsMTAgKzQyMTEsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV91dGNmcm9tdGltZXN0YW1wKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgUHlPYmplY3QgKnRpbWVzdGFtcDsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJkOnV0Y2Zyb210aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp1dGNmcm9tdGltZXN0YW1wIiwgJnRpbWVzdGFtcCkpCiAgICAgICAgIHJlc3VsdCA9IGRhdGV0aW1lX2Zyb21fdGltZXN0YW1wKGNscywgZ210aW1lLCB0aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC00MjY2LDkgKzQyMjUsMTAgQEAKIGRhdGV0aW1lX3N0cnB0aW1lKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzKQogewogICAgIHN0YXRpYyBQeU9iamVjdCAqbW9kdWxlID0gTlVMTDsKLSAgICBjb25zdCBQeV9VTklDT0RFICpzdHJpbmcsICpmb3JtYXQ7CisgICAgUHlPYmplY3QgKnN0cmluZywgKmZvcm1hdDsKKyAgICBfUHlfSURFTlRJRklFUihfc3RycHRpbWVfZGF0ZXRpbWUpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ1dTpzdHJwdGltZSIsICZzdHJpbmcsICZmb3JtYXQpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVVU6c3RycHRpbWUiLCAmc3RyaW5nLCAmZm9ybWF0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAobW9kdWxlID09IE5VTEwpIHsKQEAgLTQyNzYsOCArNDIzNiw4IEBACiAgICAgICAgIGlmIChtb2R1bGUgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChtb2R1bGUsICJfc3RycHRpbWVfZGF0ZXRpbWUiLCAiT3V1IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMsIHN0cmluZywgZm9ybWF0KTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChtb2R1bGUsICZQeUlkX19zdHJwdGltZV9kYXRldGltZSwgIk9PTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMsIHN0cmluZywgZm9ybWF0KTsKIH0KIAogLyogUmV0dXJuIG5ldyBkYXRldGltZSBmcm9tIGRhdGUvZGF0ZXRpbWUgYW5kIHRpbWUgYXJndW1lbnRzLiAqLwpAQCAtNDM5Myw4ICs0MzUzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKikgbGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSk7CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQ1MjMsNyArNDQ4Miw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZXRpbWVfc3RyKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopc2VsZiwgImlzb2Zvcm1hdCIsICIocykiLCAiICIpOworICAgIF9QeV9JREVOVElGSUVSKGlzb2Zvcm1hdCk7CisKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9pc29mb3JtYXQsICIocykiLCAiICIpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDU5Niw4ICs0NTU3LDcgQEAKICAgICAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKICAgICAgICAgICAgIHJldHVybiBjbXBlcnJvcihzZWxmLCBvdGhlcik7CiAgICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQogCiAgICAgaWYgKEdFVF9EVF9UWklORk8oc2VsZikgPT0gR0VUX0RUX1RaSU5GTyhvdGhlcikpIHsKQEAgLTQ2MzksNiArNDU5OSwxNCBAQAogICAgICAgICBQeV9ERUNSRUYoZGVsdGEpOwogICAgICAgICByZXN1bHQgPSBkaWZmX3RvX2Jvb2woZGlmZiwgb3ApOwogICAgIH0KKyAgICBlbHNlIGlmIChvcCA9PSBQeV9FUSkgeworICAgICAgICByZXN1bHQgPSBQeV9GYWxzZTsKKyAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CisgICAgfQorICAgIGVsc2UgaWYgKG9wID09IFB5X05FKSB7CisgICAgICAgIHJlc3VsdCA9IFB5X1RydWU7CisgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOworICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBjb21wYXJlIG9mZnNldC1uYWl2ZSBhbmQgIgpAQCAtNDcyNSwxNiArNDY5Myw4MyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgorbG9jYWxfdGltZXpvbmUoUHlEYXRlVGltZV9EYXRlVGltZSAqdXRjX3RpbWUpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgc3RydWN0IHRtICp0aW1lcDsKKyAgICB0aW1lX3QgdGltZXN0YW1wOworICAgIFB5T2JqZWN0ICpkZWx0YTsKKyAgICBQeU9iamVjdCAqb25lX3NlY29uZDsKKyAgICBQeU9iamVjdCAqc2Vjb25kczsKKyAgICBQeU9iamVjdCAqbmFtZW8gPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKnpvbmUgPSBOVUxMOworCisgICAgZGVsdGEgPSBkYXRldGltZV9zdWJ0cmFjdCgoUHlPYmplY3QgKil1dGNfdGltZSwgUHlEYXRlVGltZV9FcG9jaCk7CisgICAgaWYgKGRlbHRhID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG9uZV9zZWNvbmQgPSBuZXdfZGVsdGEoMCwgMSwgMCwgMCk7CisgICAgaWYgKG9uZV9zZWNvbmQgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBzZWNvbmRzID0gZGl2aWRlX3RpbWVkZWx0YV90aW1lZGVsdGEoKFB5RGF0ZVRpbWVfRGVsdGEgKilkZWx0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKilvbmVfc2Vjb25kKTsKKyAgICBQeV9ERUNSRUYob25lX3NlY29uZCk7CisgICAgaWYgKHNlY29uZHMgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9ERUNSRUYoZGVsdGEpOworICAgIHRpbWVzdGFtcCA9IFB5TG9uZ19Bc0xvbmcoc2Vjb25kcyk7CisgICAgUHlfREVDUkVGKHNlY29uZHMpOworICAgIGlmICh0aW1lc3RhbXAgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdGltZXAgPSBsb2NhbHRpbWUoJnRpbWVzdGFtcCk7CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQorICAgIHpvbmUgPSB0aW1lcC0+dG1fem9uZTsKKyAgICBkZWx0YSA9IG5ld19kZWx0YSgwLCB0aW1lcC0+dG1fZ210b2ZmLCAwLCAxKTsKKyNlbHNlIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KKyAgICB7CisgICAgICAgIFB5T2JqZWN0ICpsb2NhbF90aW1lOworICAgICAgICBsb2NhbF90aW1lID0gbmV3X2RhdGV0aW1lKHRpbWVwLT50bV95ZWFyICsgMTkwMCwgdGltZXAtPnRtX21vbiArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXAtPnRtX21kYXksIHRpbWVwLT50bV9ob3VyLCB0aW1lcC0+dG1fbWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVwLT50bV9zZWMsIERBVEVfR0VUX01JQ1JPU0VDT05EKHV0Y190aW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGNfdGltZS0+dHppbmZvKTsKKyAgICAgICAgaWYgKGxvY2FsX3RpbWUgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGRlbHRhID0gZGF0ZXRpbWVfc3VidHJhY3QobG9jYWxfdGltZSwgKFB5T2JqZWN0Kil1dGNfdGltZSk7CisgICAgICAgIC8qIFhYWDogYmVmb3JlIHJlbHlpbmcgb24gdHpuYW1lLCB3ZSBzaG91bGQgY29tcGFyZSBkZWx0YQorICAgICAgICAgICB0byB0aGUgb2Zmc2V0IGltcGxpZWQgYnkgdGltZXpvbmUvYWx0em9uZSAqLworICAgICAgICBpZiAoZGF5bGlnaHQgJiYgdGltZXAtPnRtX2lzZHN0ID49IDApCisgICAgICAgICAgICB6b25lID0gdHpuYW1lW3RpbWVwLT50bV9pc2RzdCAlIDJdOworICAgICAgICBlbHNlCisgICAgICAgICAgICB6b25lID0gdHpuYW1lWzBdOworICAgICAgICBQeV9ERUNSRUYobG9jYWxfdGltZSk7CisgICAgfQorI2VuZGlmIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KKyAgICBpZiAoem9uZSAhPSBOVUxMKSB7CisgICAgICAgIG5hbWVvID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZSh6b25lLCAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgICAgIGlmIChuYW1lbyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgcmVzdWx0ID0gbmV3X3RpbWV6b25lKGRlbHRhLCBuYW1lbyk7CisgICAgUHlfREVDUkVGKG5hbWVvKTsKKyAgZXJyb3I6CisgICAgUHlfREVDUkVGKGRlbHRhKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlEYXRlVGltZV9EYXRlVGltZSAqCiBkYXRldGltZV9hc3RpbWV6b25lKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeURhdGVUaW1lX0RhdGVUaW1lICpyZXN1bHQ7CiAgICAgUHlPYmplY3QgKm9mZnNldDsKICAgICBQeU9iamVjdCAqdGVtcDsKLSAgICBQeU9iamVjdCAqdHppbmZvOworICAgIFB5T2JqZWN0ICp0emluZm8gPSBQeV9Ob25lOworICAgIF9QeV9JREVOVElGSUVSKGZyb211dGMpOwogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJ0eiIsIE5VTEx9OwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiTyE6YXN0aW1lem9uZSIsIGtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlEYXRlVGltZV9UWkluZm9UeXBlLCAmdHppbmZvKSkKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8Tzphc3RpbWV6b25lIiwga2V5d29yZHMsCisJCQkJICAgICAgJnR6aW5mbykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGNoZWNrX3R6aW5mb19zdWJjbGFzcyh0emluZm8pID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghSEFTVFpJTkZPKHNlbGYpIHx8IHNlbGYtPnR6aW5mbyA9PSBQeV9Ob25lKQpAQCAtNDc0Myw3ICs0Nzc4LDcgQEAKICAgICAvKiBDb252ZXJzaW9uIHRvIHNlbGYncyBvd24gdGltZSB6b25lIGlzIGEgTk9QLiAqLwogICAgIGlmIChzZWxmLT50emluZm8gPT0gdHppbmZvKSB7CiAgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CisgICAgICAgIHJldHVybiBzZWxmOwogICAgIH0KIAogICAgIC8qIENvbnZlcnQgc2VsZiB0byBVVEMuICovCkBAIC00NzU5LDIwICs0Nzk0LDI5IEBACiAgICAgfQogCiAgICAgLyogcmVzdWx0ID0gc2VsZiAtIG9mZnNldCAqLwotICAgIHJlc3VsdCA9IGFkZF9kYXRldGltZV90aW1lZGVsdGEoc2VsZiwKLSAgICAgICAgICAgICAgICAoUHlEYXRlVGltZV9EZWx0YSAqKW9mZnNldCwgLTEpOworICAgIHJlc3VsdCA9IChQeURhdGVUaW1lX0RhdGVUaW1lICopYWRkX2RhdGV0aW1lX3RpbWVkZWx0YShzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKilvZmZzZXQsIC0xKTsKICAgICBQeV9ERUNSRUYob2Zmc2V0KTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogQXR0YWNoIG5ldyB0emluZm8gYW5kIGxldCBmcm9tdXRjKCkgZG8gdGhlIHJlc3QuICovCi0gICAgdGVtcCA9ICgoUHlEYXRlVGltZV9EYXRlVGltZSAqKXJlc3VsdCktPnR6aW5mbzsKLSAgICAoKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKilyZXN1bHQpLT50emluZm8gPSB0emluZm87Ci0gICAgUHlfSU5DUkVGKHR6aW5mbyk7CisgICAgdGVtcCA9IHJlc3VsdC0+dHppbmZvOworICAgIGlmICh0emluZm8gPT0gUHlfTm9uZSkgeworICAgICAgICB0emluZm8gPSBsb2NhbF90aW1lem9uZShyZXN1bHQpOworICAgICAgICBpZiAodHppbmZvID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgICAgUHlfSU5DUkVGKHR6aW5mbyk7CisgICAgcmVzdWx0LT50emluZm8gPSB0emluZm87CiAgICAgUHlfREVDUkVGKHRlbXApOwogCi0gICAgdGVtcCA9IHJlc3VsdDsKLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHR6aW5mbywgImZyb211dGMiLCAiTyIsIHRlbXApOworICAgIHRlbXAgPSAoUHlPYmplY3QgKilyZXN1bHQ7CisgICAgcmVzdWx0ID0gKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKikKKyAgICAgICAgX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0emluZm8sICZQeUlkX2Zyb211dGMsICJPIiwgdGVtcCk7CiAgICAgUHlfREVDUkVGKHRlbXApOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTQ4MDQsNiArNDg0OCw0NCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgorZGF0ZXRpbWVfdGltZXN0YW1wKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIGlmIChIQVNUWklORk8oc2VsZikgJiYgc2VsZi0+dHppbmZvICE9IFB5X05vbmUpIHsKKyAgICAgICAgUHlPYmplY3QgKmRlbHRhOworICAgICAgICBkZWx0YSA9IGRhdGV0aW1lX3N1YnRyYWN0KChQeU9iamVjdCAqKXNlbGYsIFB5RGF0ZVRpbWVfRXBvY2gpOworICAgICAgICBpZiAoZGVsdGEgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXN1bHQgPSBkZWx0YV90b3RhbF9zZWNvbmRzKGRlbHRhKTsKKyAgICAgICAgUHlfREVDUkVGKGRlbHRhKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0cnVjdCB0bSB0aW1lOworICAgICAgICB0aW1lX3QgdGltZXN0YW1wOworICAgICAgICBtZW1zZXQoKHZvaWQgKikgJnRpbWUsICdcMCcsIHNpemVvZihzdHJ1Y3QgdG0pKTsKKyAgICAgICAgdGltZS50bV95ZWFyID0gR0VUX1lFQVIoc2VsZikgLSAxOTAwOworICAgICAgICB0aW1lLnRtX21vbiA9IEdFVF9NT05USChzZWxmKSAtIDE7CisgICAgICAgIHRpbWUudG1fbWRheSA9IEdFVF9EQVkoc2VsZik7CisgICAgICAgIHRpbWUudG1faG91ciA9IERBVEVfR0VUX0hPVVIoc2VsZik7CisgICAgICAgIHRpbWUudG1fbWluID0gREFURV9HRVRfTUlOVVRFKHNlbGYpOworICAgICAgICB0aW1lLnRtX3NlYyA9IERBVEVfR0VUX1NFQ09ORChzZWxmKTsKKyAgICAgICAgdGltZS50bV93ZGF5ID0gLTE7CisgICAgICAgIHRpbWUudG1faXNkc3QgPSAtMTsKKyAgICAgICAgdGltZXN0YW1wID0gbWt0aW1lKCZ0aW1lKTsKKyAgICAgICAgLyogUmV0dXJuIHZhbHVlIG9mIC0xIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gYW4gZXJyb3IsIGJ1dCB0bV93ZGF5CisgICAgICAgICAqIGNhbm5vdCByZW1haW4gc2V0IHRvIC0xIGlmIG1rdGltZSBzdWNjZWVkZWQuICovCisgICAgICAgIGlmICh0aW1lc3RhbXAgPT0gKHRpbWVfdCkoLTEpICYmIHRpbWUudG1fd2RheSA9PSAtMSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJlc3VsdCA9IFB5RmxvYXRfRnJvbURvdWJsZSh0aW1lc3RhbXAgKyBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKSAvIDFlNik7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV9nZXRkYXRlKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYpCiB7CiAgICAgcmV0dXJuIG5ld19kYXRlKEdFVF9ZRUFSKHNlbGYpLApAQCAtNDk1MCw2ICs1MDMyLDkgQEAKICAgICB7InRpbWV0dXBsZSIsICAgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX3RpbWV0dXBsZSwgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiUmV0dXJuIHRpbWUgdHVwbGUsIGNvbXBhdGlibGUgd2l0aCB0aW1lLmxvY2FsdGltZSgpLiIpfSwKIAorICAgIHsidGltZXN0YW1wIiwgICAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfdGltZXN0YW1wLCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJSZXR1cm4gUE9TSVggdGltZXN0YW1wIGFzIGZsb2F0LiIpfSwKKwogICAgIHsidXRjdGltZXR1cGxlIiwgICAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfdXRjdGltZXR1cGxlLCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJSZXR1cm4gVVRDIHRpbWUgdHVwbGUsIGNvbXBhdGlibGUgd2l0aCB0aW1lLmxvY2FsdGltZSgpLiIpfSwKIApAQCAtNTIwNyw2ICs1MjkyLDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0RFQ1JFRih4KTsKIAorICAgIC8qIEVwb2NoICovCisgICAgUHlEYXRlVGltZV9FcG9jaCA9IG5ld19kYXRldGltZSgxOTcwLCAxLCAxLCAwLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlEYXRlVGltZV9UaW1lWm9uZV9VVEMpOworICAgIGlmIChQeURhdGVUaW1lX0Vwb2NoID09IE5VTEwpCisgICAgICByZXR1cm4gTlVMTDsKKwogICAgIC8qIG1vZHVsZSBpbml0aWFsaXphdGlvbiAqLwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNSU5ZRUFSIiwgTUlOWUVBUik7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1BWFlFQVIiLCBNQVhZRUFSKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RibW1vZHVsZS5jIGIvTW9kdWxlcy9fZGJtbW9kdWxlLmMKaW5kZXggODI3YWNjZS4uMzI3Yjg3MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGJtbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZGJtbW9kdWxlLmMKQEAgLTIxMiw2ICsyMTIsNyBAQAogewogICAgIGRibW9iamVjdCAqZHAgPSAoZGJtb2JqZWN0ICopc2VsZjsKICAgICBkYXR1bSBrZXksIHZhbDsKKyAgICBQeV9zc2l6ZV90IHNpemU7CiAKICAgICBpZiAoKGRwKS0+ZGlfZGJtID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKERibUVycm9yLApAQCAtMjE5LDggKzIyMCw5IEBACiAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewotICAgICAgICBhcmcgPSBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcoYXJnLCBOVUxMKTsKLSAgICAgICAgaWYgKGFyZyA9PSBOVUxMKQorICAgICAgICBrZXkuZHB0ciA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKGFyZywgJnNpemUpOworICAgICAgICBrZXkuZHNpemUgPSBzaXplOworICAgICAgICBpZiAoa2V5LmRwdHIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKGFyZykpIHsKQEAgLTIyOSw4ICsyMzEsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgIGFyZy0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAga2V5LmRwdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhhcmcpOwotICAgIGtleS5kc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoYXJnKTsKKyAgICBlbHNlIHsKKyAgICAgICAga2V5LmRwdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhhcmcpOworICAgICAgICBrZXkuZHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKGFyZyk7CisgICAgfQogICAgIHZhbCA9IGRibV9mZXRjaChkcC0+ZGlfZGJtLCBrZXkpOwogICAgIHJldHVybiB2YWwuZHB0ciAhPSBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9SRUFETUUudHh0IGIvTW9kdWxlcy9fZGVjaW1hbC9SRUFETUUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlYWUwZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL1JFQURNRS50eHQKQEAgLTAsMCArMSw0NiBAQAorCisKK0Fib3V0Cis9PT09PQorCitfZGVjaW1hbC5jIGlzIGEgd3JhcHBlciBmb3IgdGhlIGxpYm1wZGVjIGxpYnJhcnkuIGxpYm1wZGVjIGlzIGEgZmFzdCBDCitsaWJyYXJ5IGZvciBjb3JyZWN0bHktcm91bmRlZCBhcmJpdHJhcnkgcHJlY2lzaW9uIGRlY2ltYWwgZmxvYXRpbmcgcG9pbnQKK2FyaXRobWV0aWMuIEl0IGlzIGEgY29tcGxldGUgaW1wbGVtZW50YXRpb24gb2YgTWlrZSBDb3dsaXNoYXcvSUJNJ3MKK0dlbmVyYWwgRGVjaW1hbCBBcml0aG1ldGljIFNwZWNpZmljYXRpb24uCisKKworQnVpbGQgcHJvY2VzcyBmb3IgdGhlIG1vZHVsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBcyB1c3VhbCwgdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIF9kZWNpbWFsLnNvIGlzIGRyaXZlbiBieSBzZXR1cC5weSBpbiB0aGUgdG9wCitsZXZlbCBkaXJlY3RvcnkuIHNldHVwLnB5IGF1dG9kZXRlY3RzIHRoZSBmb2xsb3dpbmcgYnVpbGQgY29uZmlndXJhdGlvbnM6CisKKyAgIDEpIHg2NCAgICAgICAgIC0gNjQtYml0IFB5dGhvbiwgeDg2XzY0IHByb2Nlc3NvciAoQU1ELCBJbnRlbCkKKworICAgMikgdWludDEyOCAgICAgLSA2NC1iaXQgUHl0aG9uLCBjb21waWxlciBwcm92aWRlcyBfX3VpbnQxMjhfdCAoZ2NjKQorCisgICAzKSBhbnNpNjQgICAgICAtIDY0LWJpdCBQeXRob24sIEFOU0kgQworCisgICA0KSBwcHJvICAgICAgICAtIDMyLWJpdCBQeXRob24sIHg4NiBDUFUsIFBlbnRpdW1Qcm8gb3IgbGF0ZXIKKworICAgNSkgYW5zaTMyICAgICAgLSAzMi1iaXQgUHl0aG9uLCBBTlNJIEMKKworICAgNikgYW5zaS1sZWdhY3kgLSAzMi1iaXQgUHl0aG9uLCBjb21waWxlciB3aXRob3V0IHVpbnQ2NF90CisKKyAgIDcpIHVuaXZlcnNhbCAgIC0gTWFjIE9TIG9ubHkgKG11bHRpLWFyY2gpCisKKworSXQgaXMgcG9zc2libGUgdG8gb3ZlcnJpZGUgYXV0b2RldGVjdGlvbiBieSBleHBvcnRpbmc6CisKKyAgIFBZVEhPTl9ERUNJTUFMX1dJVEhfTUFDSElORT12YWx1ZSwgd2hlcmUgdmFsdWUgaXMgb25lIG9mIHRoZSBhYm92ZSBvcHRpb25zLgorCisKK05PVEUKKz09PT0KKworZGVjaW1hbC5zbyBpcyBub3QgYnVpbHQgZnJvbSBhIHN0YXRpYyBsaWJtcGRlYy5hIHNpbmNlIGRvaW5nIHNvIGxlZCB0bworZmFpbHVyZXMgb24gQUlYICh1c2VyIHJlcG9ydCkgYW5kIFdpbmRvd3MgKG1peGluZyBzdGF0aWMgYW5kIGR5bmFtaWMgQ1JUcworY2F1c2VzIGxvY2FsZSBwcm9ibGVtcyBhbmQgbW9yZSkuCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMgYi9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkzODZmZgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvX2RlY2ltYWwuYwpAQCAtMCwwICsxLDU3MDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlIDxQeXRob24uaD4KKyNpbmNsdWRlICJsb25naW50cmVwci5oIgorI2luY2x1ZGUgInB5dGhyZWFkLmgiCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisjaW5jbHVkZSAiY29tcGxleG9iamVjdC5oIgorI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNsdWRlICJkb2NzdHJpbmdzLmgiCisjaW5jbHVkZSAibWVtb3J5LmgiCisKKworLyoKKyAqIFR5cGUgc2l6ZXMgd2l0aCBhc3NlcnRpb25zIGluIG1wZGVjaW1hbC5oIGFuZCBweXBvcnQuaDoKKyAqICAgIHNpemVvZihzaXplX3QpID09IHNpemVvZihQeV9zc2l6ZV90KQorICogICAgc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKG1wZF91aW50X3QpID09IHNpemVvZihtcGRfc3NpemVfdCkKKyAqLworCisjaWZkZWYgVEVTVF9DT1ZFUkFHRQorICAjdW5kZWYgUHlfTE9DQUxfSU5MSU5FCisgICNkZWZpbmUgUHlfTE9DQUxfSU5MSU5FIFB5X0xPQ0FMCisjZW5kaWYKKworI2RlZmluZSBNUERfRmxvYXRfb3BlcmF0aW9uIE1QRF9Ob3RfaW1wbGVtZW50ZWQKKworI2RlZmluZSBCT1VORFNfQ0hFQ0soeCwgTUlOLCBNQVgpIHggPSAoeCA8IE1JTiB8fCBNQVggPCB4KSA/IE1BWCA6IHgKKworCisvKiBfUHlfREVDX01JTkFMTE9DID49IE1QRF9NSU5BTExPQyAqLworI2RlZmluZSBfUHlfREVDX01JTkFMTE9DIDQKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBtcGRfdCBkZWM7CisgICAgbXBkX3VpbnRfdCBkYXRhW19QeV9ERUNfTUlOQUxMT0NdOworfSBQeURlY09iamVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICB1aW50MzJfdCAqZmxhZ3M7Cit9IFB5RGVjU2lnbmFsRGljdE9iamVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBtcGRfY29udGV4dF90IGN0eDsKKyAgICBQeU9iamVjdCAqdHJhcHM7CisgICAgUHlPYmplY3QgKmZsYWdzOworICAgIGludCBjYXBpdGFsczsKKyNpZm5kZWYgV0lUSE9VVF9USFJFQURTCisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworI2VuZGlmCit9IFB5RGVjQ29udGV4dE9iamVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeU9iamVjdCAqbG9jYWw7CisgICAgUHlPYmplY3QgKmdsb2JhbDsKK30gUHlEZWNDb250ZXh0TWFuYWdlck9iamVjdDsKKworCisjdW5kZWYgTVBECisjdW5kZWYgQ1RYCitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGVjX1R5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpQeURlY1NpZ25hbERpY3RfVHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgUHlEZWNDb250ZXh0X1R5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGVjQ29udGV4dE1hbmFnZXJfVHlwZTsKKyNkZWZpbmUgUHlEZWNfQ2hlY2tFeGFjdCh2KSAoUHlfVFlQRSh2KSA9PSAmUHlEZWNfVHlwZSkKKyNkZWZpbmUgUHlEZWNfQ2hlY2sodikgUHlPYmplY3RfVHlwZUNoZWNrKHYsICZQeURlY19UeXBlKQorI2RlZmluZSBQeURlY1NpZ25hbERpY3RfQ2hlY2sodikgKFB5X1RZUEUodikgPT0gUHlEZWNTaWduYWxEaWN0X1R5cGUpCisjZGVmaW5lIFB5RGVjQ29udGV4dF9DaGVjayh2KSBQeU9iamVjdF9UeXBlQ2hlY2sodiwgJlB5RGVjQ29udGV4dF9UeXBlKQorI2RlZmluZSBNUEQodikgKCYoKFB5RGVjT2JqZWN0ICopdiktPmRlYykKKyNkZWZpbmUgU2RGbGFnQWRkcih2KSAoKChQeURlY1NpZ25hbERpY3RPYmplY3QgKil2KS0+ZmxhZ3MpCisjZGVmaW5lIFNkRmxhZ3ModikgKCooKFB5RGVjU2lnbmFsRGljdE9iamVjdCAqKXYpLT5mbGFncykKKyNkZWZpbmUgQ1RYKHYpICgmKChQeURlY0NvbnRleHRPYmplY3QgKil2KS0+Y3R4KQorI2RlZmluZSBDdHhDYXBzKHYpICgoKFB5RGVjQ29udGV4dE9iamVjdCAqKXYpLT5jYXBpdGFscykKKworCitQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKK2luY3JfdHJ1ZSh2b2lkKQoreworICAgIFB5X0lOQ1JFRihQeV9UcnVlKTsKKyAgICByZXR1cm4gUHlfVHJ1ZTsKK30KKworUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCitpbmNyX2ZhbHNlKHZvaWQpCit7CisgICAgUHlfSU5DUkVGKFB5X0ZhbHNlKTsKKyAgICByZXR1cm4gUHlfRmFsc2U7Cit9CisKKworI2lmZGVmIFdJVEhPVVRfVEhSRUFEUworLyogRGVmYXVsdCBtb2R1bGUgY29udGV4dCAqLworc3RhdGljIFB5T2JqZWN0ICptb2R1bGVfY29udGV4dCA9IE5VTEw7CisjZWxzZQorLyogS2V5IGZvciB0aHJlYWQgc3RhdGUgZGljdGlvbmFyeSAqLworc3RhdGljIFB5T2JqZWN0ICp0bHNfY29udGV4dF9rZXkgPSBOVUxMOworLyogSW52YXJpYW50OiBOVUxMIG9yIHRoZSBtb3N0IHJlY2VudGx5IGFjY2Vzc2VkIHRocmVhZCBsb2NhbCBjb250ZXh0ICovCitzdGF0aWMgUHlEZWNDb250ZXh0T2JqZWN0ICpjYWNoZWRfY29udGV4dCA9IE5VTEw7CisjZW5kaWYKKworLyogVGVtcGxhdGUgZm9yIGNyZWF0aW5nIG5ldyB0aHJlYWQgY29udGV4dHMsIGNhbGxpbmcgQ29udGV4dCgpIHdpdGhvdXQKKyAqIGFyZ3VtZW50cyBhbmQgaW5pdGlhbGl6aW5nIHRoZSBtb2R1bGVfY29udGV4dCBvbiBmaXJzdCBhY2Nlc3MuICovCitzdGF0aWMgUHlPYmplY3QgKmRlZmF1bHRfY29udGV4dF90ZW1wbGF0ZSA9IE5VTEw7CisvKiBCYXNpYyBhbmQgZXh0ZW5kZWQgY29udGV4dCB0ZW1wbGF0ZXMgKi8KK3N0YXRpYyBQeU9iamVjdCAqYmFzaWNfY29udGV4dF90ZW1wbGF0ZSA9IE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKmV4dGVuZGVkX2NvbnRleHRfdGVtcGxhdGUgPSBOVUxMOworCisKKy8qIEVycm9yIGNvZGVzIGZvciBmdW5jdGlvbnMgdGhhdCByZXR1cm4gc2lnbmFscyBvciBjb25kaXRpb25zICovCisjZGVmaW5lIERFQ19JTlZBTElEX1NJR05BTFMgKE1QRF9NYXhfc3RhdHVzKzFVKQorI2RlZmluZSBERUNfRVJSX09DQ1VSUkVEIChERUNfSU5WQUxJRF9TSUdOQUxTPDwxKQorI2RlZmluZSBERUNfRVJST1JTIChERUNfSU5WQUxJRF9TSUdOQUxTfERFQ19FUlJfT0NDVVJSRUQpCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjb25zdCBjaGFyICpuYW1lOyAgIC8qIGNvbmRpdGlvbiBvciBzaWduYWwgbmFtZSAqLworICAgIGNvbnN0IGNoYXIgKmZxbmFtZTsgLyogZnVsbHkgcXVhbGlmaWVkIG5hbWUgKi8KKyAgICB1aW50MzJfdCBmbGFnOyAgICAgIC8qIGxpYm1wZGVjIGZsYWcgKi8KKyAgICBQeU9iamVjdCAqZXg7ICAgICAgIC8qIGNvcnJlc3BvbmRpbmcgZXhjZXB0aW9uICovCit9IERlY0NvbmRNYXA7CisKKy8qIFRvcCBsZXZlbCBFeGNlcHRpb247IGluaGVyaXRzIGZyb20gQXJpdGhtZXRpY0Vycm9yICovCitzdGF0aWMgUHlPYmplY3QgKkRlY2ltYWxFeGNlcHRpb24gPSBOVUxMOworCisvKiBFeGNlcHRpb25zIHRoYXQgY29ycmVzcG9uZCB0byBJRUVFIHNpZ25hbHMgKi8KKyNkZWZpbmUgU1VCTk9STUFMIDUKKyNkZWZpbmUgSU5FWEFDVCA2CisjZGVmaW5lIFJPVU5ERUQgNworI2RlZmluZSBTSUdOQUxfTUFQX0xFTiA5CitzdGF0aWMgRGVjQ29uZE1hcCBzaWduYWxfbWFwW10gPSB7CisgIHsiSW52YWxpZE9wZXJhdGlvbiIsICJkZWNpbWFsLkludmFsaWRPcGVyYXRpb24iLCBNUERfSUVFRV9JbnZhbGlkX29wZXJhdGlvbiwgTlVMTH0sCisgIHsiRmxvYXRPcGVyYXRpb24iLCAiZGVjaW1hbC5GbG9hdE9wZXJhdGlvbiIsIE1QRF9GbG9hdF9vcGVyYXRpb24sIE5VTEx9LAorICB7IkRpdmlzaW9uQnlaZXJvIiwgImRlY2ltYWwuRGl2aXNpb25CeVplcm8iLCBNUERfRGl2aXNpb25fYnlfemVybywgTlVMTH0sCisgIHsiT3ZlcmZsb3ciLCAiZGVjaW1hbC5PdmVyZmxvdyIsIE1QRF9PdmVyZmxvdywgTlVMTH0sCisgIHsiVW5kZXJmbG93IiwgImRlY2ltYWwuVW5kZXJmbG93IiwgTVBEX1VuZGVyZmxvdywgTlVMTH0sCisgIHsiU3Vibm9ybWFsIiwgImRlY2ltYWwuU3Vibm9ybWFsIiwgTVBEX1N1Ym5vcm1hbCwgTlVMTH0sCisgIHsiSW5leGFjdCIsICJkZWNpbWFsLkluZXhhY3QiLCBNUERfSW5leGFjdCwgTlVMTH0sCisgIHsiUm91bmRlZCIsICJkZWNpbWFsLlJvdW5kZWQiLCBNUERfUm91bmRlZCwgTlVMTH0sCisgIHsiQ2xhbXBlZCIsICJkZWNpbWFsLkNsYW1wZWQiLCBNUERfQ2xhbXBlZCwgTlVMTH0sCisgIHtOVUxMfQorfTsKKworLyogRXhjZXB0aW9ucyB0aGF0IGluaGVyaXQgZnJvbSBJbnZhbGlkT3BlcmF0aW9uICovCitzdGF0aWMgRGVjQ29uZE1hcCBjb25kX21hcFtdID0geworICB7IkludmFsaWRPcGVyYXRpb24iLCAiZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uIiwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBOVUxMfSwKKyAgeyJDb252ZXJzaW9uU3ludGF4IiwgImRlY2ltYWwuQ29udmVyc2lvblN5bnRheCIsIE1QRF9Db252ZXJzaW9uX3N5bnRheCwgTlVMTH0sCisgIHsiRGl2aXNpb25JbXBvc3NpYmxlIiwgImRlY2ltYWwuRGl2aXNpb25JbXBvc3NpYmxlIiwgTVBEX0RpdmlzaW9uX2ltcG9zc2libGUsIE5VTEx9LAorICB7IkRpdmlzaW9uVW5kZWZpbmVkIiwgImRlY2ltYWwuRGl2aXNpb25VbmRlZmluZWQiLCBNUERfRGl2aXNpb25fdW5kZWZpbmVkLCBOVUxMfSwKKyAgeyJJbnZhbGlkQ29udGV4dCIsICJkZWNpbWFsLkludmFsaWRDb250ZXh0IiwgTVBEX0ludmFsaWRfY29udGV4dCwgTlVMTH0sCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorICB7Ik1hbGxvY0Vycm9yIiwgImRlY2ltYWwuTWFsbG9jRXJyb3IiLCBNUERfTWFsbG9jX2Vycm9yLCBOVUxMfSwKKyNlbmRpZgorICB7TlVMTH0KK307CisKK3N0YXRpYyBjb25zdCBjaGFyICpkZWNfc2lnbmFsX3N0cmluZ1tNUERfTlVNX0ZMQUdTXSA9IHsKKyAgICAiQ2xhbXBlZCIsCisgICAgIkludmFsaWRPcGVyYXRpb24iLAorICAgICJEaXZpc2lvbkJ5WmVybyIsCisgICAgIkludmFsaWRPcGVyYXRpb24iLAorICAgICJJbnZhbGlkT3BlcmF0aW9uIiwKKyAgICAiSW52YWxpZE9wZXJhdGlvbiIsCisgICAgIkluZXhhY3QiLAorICAgICJJbnZhbGlkT3BlcmF0aW9uIiwKKyAgICAiSW52YWxpZE9wZXJhdGlvbiIsCisgICAgIkludmFsaWRPcGVyYXRpb24iLAorICAgICJGbG9hdE9wZXJhdGlvbiIsCisgICAgIk92ZXJmbG93IiwKKyAgICAiUm91bmRlZCIsCisgICAgIlN1Ym5vcm1hbCIsCisgICAgIlVuZGVyZmxvdyIsCit9OworCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorICAjZGVmaW5lIF9QWV9ERUNfUk9VTkRfR1VBUkQgTVBEX1JPVU5EX0dVQVJECisjZWxzZQorICAjZGVmaW5lIF9QWV9ERUNfUk9VTkRfR1VBUkQgKE1QRF9ST1VORF9HVUFSRC0xKQorI2VuZGlmCitzdGF0aWMgUHlPYmplY3QgKnJvdW5kX21hcFtfUFlfREVDX1JPVU5EX0dVQVJEXTsKKworc3RhdGljIGNvbnN0IGNoYXIgKmludmFsaWRfcm91bmRpbmdfZXJyID0KKyJ2YWxpZCB2YWx1ZXMgZm9yIHJvdW5kaW5nIGFyZTpcblwKKyAgW1JPVU5EX0NFSUxJTkcsIFJPVU5EX0ZMT09SLCBST1VORF9VUCwgUk9VTkRfRE9XTixcblwKKyAgIFJPVU5EX0hBTEZfVVAsIFJPVU5EX0hBTEZfRE9XTiwgUk9VTkRfSEFMRl9FVkVOLFxuXAorICAgUk9VTkRfMDVVUF0iOworCitzdGF0aWMgY29uc3QgY2hhciAqaW52YWxpZF9zaWduYWxzX2VyciA9CisidmFsaWQgdmFsdWVzIGZvciBzaWduYWxzIGFyZTpcblwKKyAgW0ludmFsaWRPcGVyYXRpb24sIEZsb2F0T3BlcmF0aW9uLCBEaXZpc2lvbkJ5WmVybyxcblwKKyAgIE92ZXJmbG93LCBVbmRlcmZsb3csIFN1Ym5vcm1hbCwgSW5leGFjdCwgUm91bmRlZCxcblwKKyAgIENsYW1wZWRdIjsKKworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKK3N0YXRpYyBjb25zdCBjaGFyICppbnZhbGlkX2ZsYWdzX2VyciA9CisidmFsaWQgdmFsdWVzIGZvciBfZmxhZ3Mgb3IgX3RyYXBzIGFyZTpcblwKKyAgc2lnbmFsczpcblwKKyAgICBbRGVjSUVFRUludmFsaWRPcGVyYXRpb24sIERlY0Zsb2F0T3BlcmF0aW9uLCBEZWNEaXZpc2lvbkJ5WmVybyxcblwKKyAgICAgRGVjT3ZlcmZsb3csIERlY1VuZGVyZmxvdywgRGVjU3Vibm9ybWFsLCBEZWNJbmV4YWN0LCBEZWNSb3VuZGVkLFxuXAorICAgICBEZWNDbGFtcGVkXVxuXAorICBjb25kaXRpb25zIHdoaWNoIHRyaWdnZXIgRGVjSUVFRUludmFsaWRPcGVyYXRpb246XG5cCisgICAgW0RlY0ludmFsaWRPcGVyYXRpb24sIERlY0NvbnZlcnNpb25TeW50YXgsIERlY0RpdmlzaW9uSW1wb3NzaWJsZSxcblwKKyAgICAgRGVjRGl2aXNpb25VbmRlZmluZWQsIERlY0ZwdUVycm9yLCBEZWNJbnZhbGlkQ29udGV4dCwgRGVjTWFsbG9jRXJyb3JdIjsKKyNlbmRpZgorCitzdGF0aWMgaW50Cit2YWx1ZV9lcnJvcl9pbnQoY29uc3QgY2hhciAqbWVzZykKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgbWVzZyk7CisgICAgcmV0dXJuIC0xOworfQorCisjaWZkZWYgQ09ORklHXzMyCitzdGF0aWMgUHlPYmplY3QgKgordmFsdWVfZXJyb3JfcHRyKGNvbnN0IGNoYXIgKm1lc2cpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsIG1lc2cpOworICAgIHJldHVybiBOVUxMOworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQKK3R5cGVfZXJyb3JfaW50KGNvbnN0IGNoYXIgKm1lc2cpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbWVzZyk7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgaW50CitydW50aW1lX2Vycm9yX2ludChjb25zdCBjaGFyICptZXNnKQoreworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIG1lc2cpOworICAgIHJldHVybiAtMTsKK30KKyNkZWZpbmUgSU5URVJOQUxfRVJST1JfSU5UKGZ1bmNuYW1lKSBcCisgICAgcmV0dXJuIHJ1bnRpbWVfZXJyb3JfaW50KCJpbnRlcm5hbCBlcnJvciBpbiAiIGZ1bmNuYW1lKQorCitzdGF0aWMgUHlPYmplY3QgKgorcnVudGltZV9lcnJvcl9wdHIoY29uc3QgY2hhciAqbWVzZykKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBtZXNnKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKyNkZWZpbmUgSU5URVJOQUxfRVJST1JfUFRSKGZ1bmNuYW1lKSBcCisgICAgcmV0dXJuIHJ1bnRpbWVfZXJyb3JfcHRyKCJpbnRlcm5hbCBlcnJvciBpbiAiIGZ1bmNuYW1lKQorCitzdGF0aWMgdm9pZAorZGVjX3RyYXBoYW5kbGVyKG1wZF9jb250ZXh0X3QgKmN0eCBVTlVTRUQpIC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KK3sgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIHJldHVybjsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZmxhZ3NfYXNfZXhjZXB0aW9uKHVpbnQzMl90IGZsYWdzKQoreworICAgIERlY0NvbmRNYXAgKmNtOworCisgICAgZm9yIChjbSA9IHNpZ25hbF9tYXA7IGNtLT5uYW1lICE9IE5VTEw7IGNtKyspIHsKKyAgICAgICAgaWYgKGZsYWdzJmNtLT5mbGFnKSB7CisgICAgICAgICAgICByZXR1cm4gY20tPmV4OworICAgICAgICB9CisgICAgfQorCisgICAgSU5URVJOQUxfRVJST1JfUFRSKCJmbGFnc19hc19leGNlcHRpb24iKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworfQorCitQeV9MT0NBTF9JTkxJTkUodWludDMyX3QpCitleGNlcHRpb25fYXNfZmxhZyhQeU9iamVjdCAqZXgpCit7CisgICAgRGVjQ29uZE1hcCAqY207CisKKyAgICBmb3IgKGNtID0gc2lnbmFsX21hcDsgY20tPm5hbWUgIT0gTlVMTDsgY20rKykgeworICAgICAgICBpZiAoY20tPmV4ID09IGV4KSB7CisgICAgICAgICAgICByZXR1cm4gY20tPmZsYWc7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsIGludmFsaWRfc2lnbmFsc19lcnIpOworICAgIHJldHVybiBERUNfSU5WQUxJRF9TSUdOQUxTOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZmxhZ3NfYXNfbGlzdCh1aW50MzJfdCBmbGFncykKK3sKKyAgICBQeU9iamVjdCAqbGlzdDsKKyAgICBEZWNDb25kTWFwICpjbTsKKworICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOworICAgIGlmIChsaXN0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChjbSA9IGNvbmRfbWFwOyBjbS0+bmFtZSAhPSBOVUxMOyBjbSsrKSB7CisgICAgICAgIGlmIChmbGFncyZjbS0+ZmxhZykgeworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgY20tPmV4KSA8IDApIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGZvciAoY20gPSBzaWduYWxfbWFwKzE7IGNtLT5uYW1lICE9IE5VTEw7IGNtKyspIHsKKyAgICAgICAgaWYgKGZsYWdzJmNtLT5mbGFnKSB7CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsaXN0LCBjbS0+ZXgpIDwgMCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbGlzdDsKKworZXJyb3I6CisgICAgUHlfREVDUkVGKGxpc3QpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsc19hc19saXN0KHVpbnQzMl90IGZsYWdzKQoreworICAgIFB5T2JqZWN0ICpsaXN0OworICAgIERlY0NvbmRNYXAgKmNtOworCisgICAgbGlzdCA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKGxpc3QgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGNtID0gc2lnbmFsX21hcDsgY20tPm5hbWUgIT0gTlVMTDsgY20rKykgeworICAgICAgICBpZiAoZmxhZ3MmY20tPmZsYWcpIHsKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIGNtLT5leCkgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyB1aW50MzJfdAorbGlzdF9hc19mbGFncyhQeU9iamVjdCAqbGlzdCkKK3sKKyAgICBQeU9iamVjdCAqaXRlbTsKKyAgICB1aW50MzJfdCBmbGFncywgeDsKKyAgICBQeV9zc2l6ZV90IG4sIGo7CisKKyAgICBhc3NlcnQoUHlMaXN0X0NoZWNrKGxpc3QpKTsKKworICAgIG4gPSBQeUxpc3RfU2l6ZShsaXN0KTsKKyAgICBmbGFncyA9IDA7CisgICAgZm9yIChqID0gMDsgaiA8IG47IGorKykgeworICAgICAgICBpdGVtID0gUHlMaXN0X0dldEl0ZW0obGlzdCwgaik7CisgICAgICAgIHggPSBleGNlcHRpb25fYXNfZmxhZyhpdGVtKTsKKyAgICAgICAgaWYgKHggJiBERUNfRVJST1JTKSB7CisgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgfQorICAgICAgICBmbGFncyB8PSB4OworICAgIH0KKworICAgIHJldHVybiBmbGFnczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ZsYWdzX2FzX2RpY3QodWludDMyX3QgZmxhZ3MpCit7CisgICAgRGVjQ29uZE1hcCAqY207CisgICAgUHlPYmplY3QgKmRpY3Q7CisKKyAgICBkaWN0ID0gUHlEaWN0X05ldygpOworICAgIGlmIChkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChjbSA9IHNpZ25hbF9tYXA7IGNtLT5uYW1lICE9IE5VTEw7IGNtKyspIHsKKyAgICAgICAgUHlPYmplY3QgKmIgPSBmbGFncyZjbS0+ZmxhZyA/IFB5X1RydWUgOiBQeV9GYWxzZTsKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKGRpY3QsIGNtLT5leCwgYikgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBkaWN0OworfQorCitzdGF0aWMgdWludDMyX3QKK2RpY3RfYXNfZmxhZ3MoUHlPYmplY3QgKnZhbCkKK3sKKyAgICBQeU9iamVjdCAqYjsKKyAgICBEZWNDb25kTWFwICpjbTsKKyAgICB1aW50MzJfdCBmbGFncyA9IDA7CisgICAgaW50IHg7CisKKyAgICBpZiAoIVB5RGljdF9DaGVjayh2YWwpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBiZSBhIHNpZ25hbCBkaWN0Iik7CisgICAgICAgIHJldHVybiBERUNfSU5WQUxJRF9TSUdOQUxTOworICAgIH0KKworICAgIGlmIChQeURpY3RfU2l6ZSh2YWwpICE9IFNJR05BTF9NQVBfTEVOKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwKKyAgICAgICAgICAgICJpbnZhbGlkIHNpZ25hbCBkaWN0Iik7CisgICAgICAgIHJldHVybiBERUNfSU5WQUxJRF9TSUdOQUxTOworICAgIH0KKworICAgIGZvciAoY20gPSBzaWduYWxfbWFwOyBjbS0+bmFtZSAhPSBOVUxMOyBjbSsrKSB7CisgICAgICAgIGIgPSBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcih2YWwsIGNtLT5leCk7CisgICAgICAgIGlmIChiID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIERFQ19FUlJfT0NDVVJSRUQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsCisgICAgICAgICAgICAgICAgImludmFsaWQgc2lnbmFsIGRpY3QiKTsKKyAgICAgICAgICAgIHJldHVybiBERUNfSU5WQUxJRF9TSUdOQUxTOworICAgICAgICB9CisKKyAgICAgICAgeCA9IFB5T2JqZWN0X0lzVHJ1ZShiKTsKKyAgICAgICAgaWYgKHggPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gREVDX0VSUl9PQ0NVUlJFRDsKKyAgICAgICAgfQorICAgICAgICBpZiAoeCA9PSAxKSB7CisgICAgICAgICAgICBmbGFncyB8PSBjbS0+ZmxhZzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmbGFnczsKK30KKworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKK3N0YXRpYyB1aW50MzJfdAorbG9uZ19hc19mbGFncyhQeU9iamVjdCAqdikKK3sKKyAgICBsb25nIHg7CisKKyAgICB4ID0gUHlMb25nX0FzTG9uZyh2KTsKKyAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiBERUNfRVJSX09DQ1VSUkVEOworICAgIH0KKyAgICBpZiAoeCA8IDAgfHwgeCA+IChsb25nKU1QRF9NYXhfc3RhdHVzKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIGludmFsaWRfZmxhZ3NfZXJyKTsKKyAgICAgICAgcmV0dXJuIERFQ19JTlZBTElEX1NJR05BTFM7CisgICAgfQorCisgICAgcmV0dXJuIHg7Cit9CisjZW5kaWYKKworc3RhdGljIGludAorZGVjX2FkZHN0YXR1cyhQeU9iamVjdCAqY29udGV4dCwgdWludDMyX3Qgc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eCA9IENUWChjb250ZXh0KTsKKworICAgIGN0eC0+c3RhdHVzIHw9IHN0YXR1czsKKyAgICBpZiAoc3RhdHVzICYgKGN0eC0+dHJhcHN8TVBEX01hbGxvY19lcnJvcikpIHsKKyAgICAgICAgUHlPYmplY3QgKmV4LCAqc2lnbGlzdDsKKworICAgICAgICBpZiAoc3RhdHVzICYgTVBEX01hbGxvY19lcnJvcikgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisKKyAgICAgICAgZXggPSBmbGFnc19hc19leGNlcHRpb24oY3R4LT50cmFwcyZzdGF0dXMpOworICAgICAgICBpZiAoZXggPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDE7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgfQorICAgICAgICBzaWdsaXN0ID0gZmxhZ3NfYXNfbGlzdChjdHgtPnRyYXBzJnN0YXR1cyk7CisgICAgICAgIGlmIChzaWdsaXN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisKKyAgICAgICAgUHlFcnJfU2V0T2JqZWN0KGV4LCBzaWdsaXN0KTsKKyAgICAgICAgUHlfREVDUkVGKHNpZ2xpc3QpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2dldHJvdW5kKFB5T2JqZWN0ICp2KQoreworICAgIGludCBpOworCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayh2KSkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgX1BZX0RFQ19ST1VORF9HVUFSRDsgaSsrKSB7CisgICAgICAgICAgICBpZiAodiA9PSByb3VuZF9tYXBbaV0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgX1BZX0RFQ19ST1VORF9HVUFSRDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmUodiwgcm91bmRfbWFwW2ldKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHlwZV9lcnJvcl9pbnQoaW52YWxpZF9yb3VuZGluZ19lcnIpOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYWxEaWN0IE9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogVGhlIFNpZ25hbERpY3QgaXMgYSBNdXRhYmxlTWFwcGluZyB0aGF0IHByb3ZpZGVzIGFjY2VzcyB0byB0aGUKKyAgIG1wZF9jb250ZXh0X3QgZmxhZ3MsIHdoaWNoIHJlc2lkZSBpbiB0aGUgY29udGV4dCBvYmplY3QuIFdoZW4gYQorICAgbmV3IGNvbnRleHQgaXMgY3JlYXRlZCwgY29udGV4dC50cmFwcyBhbmQgY29udGV4dC5mbGFncyBhcmUKKyAgIGluaXRpYWxpemVkIHRvIG5ldyBTaWduYWxEaWN0cy4gT25jZSBhIFNpZ25hbERpY3QgaXMgdGllZCB0bworICAgYSBjb250ZXh0LCBpdCBjYW5ub3QgYmUgZGVsZXRlZC4gKi8KKworc3RhdGljIGludAorc2lnbmFsZGljdF9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyBVTlVTRUQsIFB5T2JqZWN0ICprd2RzIFVOVVNFRCkKK3sKKyAgICBTZEZsYWdBZGRyKHNlbGYpID0gTlVMTDsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5X3NzaXplX3QKK3NpZ25hbGRpY3RfbGVuKFB5T2JqZWN0ICpzZWxmIFVOVVNFRCkKK3sKKyAgICByZXR1cm4gU0lHTkFMX01BUF9MRU47Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqU2lnbmFsVHVwbGU7CitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsZGljdF9pdGVyKFB5T2JqZWN0ICpzZWxmIFVOVVNFRCkKK3sKKyAgICByZXR1cm4gUHlUdXBsZV9UeXBlLnRwX2l0ZXIoU2lnbmFsVHVwbGUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsZGljdF9nZXRpdGVtKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5KQoreworICAgIHVpbnQzMl90IGZsYWc7CisKKyAgICBmbGFnID0gZXhjZXB0aW9uX2FzX2ZsYWcoa2V5KTsKKyAgICBpZiAoZmxhZyAmIERFQ19FUlJPUlMpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIFNkRmxhZ3Moc2VsZikmZmxhZyA/IGluY3JfdHJ1ZSgpIDogaW5jcl9mYWxzZSgpOworfQorCitzdGF0aWMgaW50CitzaWduYWxkaWN0X3NldGl0ZW0oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICB1aW50MzJfdCBmbGFnOworICAgIGludCB4OworCisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlX2Vycm9yX2ludCgic2lnbmFsIGtleXMgY2Fubm90IGJlIGRlbGV0ZWQiKTsKKyAgICB9CisKKyAgICBmbGFnID0gZXhjZXB0aW9uX2FzX2ZsYWcoa2V5KTsKKyAgICBpZiAoZmxhZyAmIERFQ19FUlJPUlMpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHggPSBQeU9iamVjdF9Jc1RydWUodmFsdWUpOworICAgIGlmICh4IDwgMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHggPT0gMSkgeworICAgICAgICBTZEZsYWdzKHNlbGYpIHw9IGZsYWc7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBTZEZsYWdzKHNlbGYpICY9IH5mbGFnOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsZGljdF9yZXByKFB5T2JqZWN0ICpzZWxmKQoreworICAgIERlY0NvbmRNYXAgKmNtOworICAgIGNvbnN0IGNoYXIgKm5bU0lHTkFMX01BUF9MRU5dOyAvKiBuYW1lICovCisgICAgY29uc3QgY2hhciAqYltTSUdOQUxfTUFQX0xFTl07IC8qIGJvb2wgKi8KKyAgICBpbnQgaTsKKworICAgIGFzc2VydChTSUdOQUxfTUFQX0xFTiA9PSA5KTsKKworICAgIGZvciAoY209c2lnbmFsX21hcCwgaT0wOyBjbS0+bmFtZSAhPSBOVUxMOyBjbSsrLCBpKyspIHsKKyAgICAgICAgbltpXSA9IGNtLT5mcW5hbWU7CisgICAgICAgIGJbaV0gPSBTZEZsYWdzKHNlbGYpJmNtLT5mbGFnID8gIlRydWUiIDogIkZhbHNlIjsKKyAgICB9CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KAorICAgICAgICAiezxjbGFzcyAnJXMnPjolcywgPGNsYXNzICclcyc+OiVzLCA8Y2xhc3MgJyVzJz46JXMsICIKKyAgICAgICAgICI8Y2xhc3MgJyVzJz46JXMsIDxjbGFzcyAnJXMnPjolcywgPGNsYXNzICclcyc+OiVzLCAiCisgICAgICAgICAiPGNsYXNzICclcyc+OiVzLCA8Y2xhc3MgJyVzJz46JXMsIDxjbGFzcyAnJXMnPjolc30iLAorICAgICAgICAgICAgblswXSwgYlswXSwgblsxXSwgYlsxXSwgblsyXSwgYlsyXSwKKyAgICAgICAgICAgIG5bM10sIGJbM10sIG5bNF0sIGJbNF0sIG5bNV0sIGJbNV0sCisgICAgICAgICAgICBuWzZdLCBiWzZdLCBuWzddLCBiWzddLCBuWzhdLCBiWzhdKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbGRpY3RfcmljaGNvbXBhcmUoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3LCBpbnQgb3ApCit7CisgICAgUHlPYmplY3QgKnJlcyA9IFB5X05vdEltcGxlbWVudGVkOworCisgICAgYXNzZXJ0KFB5RGVjU2lnbmFsRGljdF9DaGVjayh2KSk7CisKKyAgICBpZiAob3AgPT0gUHlfRVEgfHwgb3AgPT0gUHlfTkUpIHsKKyAgICAgICAgaWYgKFB5RGVjU2lnbmFsRGljdF9DaGVjayh3KSkgeworICAgICAgICAgICAgcmVzID0gKFNkRmxhZ3Modik9PVNkRmxhZ3ModykpIF4gKG9wPT1QeV9ORSkgPyBQeV9UcnVlIDogUHlfRmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlEaWN0X0NoZWNrKHcpKSB7CisgICAgICAgICAgICB1aW50MzJfdCBmbGFncyA9IGRpY3RfYXNfZmxhZ3Modyk7CisgICAgICAgICAgICBpZiAoZmxhZ3MgJiBERUNfRVJST1JTKSB7CisgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgREVDX0lOVkFMSURfU0lHTkFMUykgeworICAgICAgICAgICAgICAgICAgICAvKiBub24tY29tcGFyYWJsZTogUHlfTm90SW1wbGVtZW50ZWQgKi8KKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJlcyA9IChTZEZsYWdzKHYpPT1mbGFncykgXiAob3A9PVB5X05FKSA/IFB5X1RydWUgOiBQeV9GYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIFB5X0lOQ1JFRihyZXMpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxkaWN0X2NvcHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzIFVOVVNFRCkKK3sKKyAgICByZXR1cm4gZmxhZ3NfYXNfZGljdChTZEZsYWdzKHNlbGYpKTsKK30KKworCitzdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBzaWduYWxkaWN0X2FzX21hcHBpbmcgPSB7CisgICAgKGxlbmZ1bmMpc2lnbmFsZGljdF9sZW4sICAgICAgICAgIC8qIG1wX2xlbmd0aCAqLworICAgIChiaW5hcnlmdW5jKXNpZ25hbGRpY3RfZ2V0aXRlbSwgICAvKiBtcF9zdWJzY3JpcHQgKi8KKyAgICAob2Jqb2JqYXJncHJvYylzaWduYWxkaWN0X3NldGl0ZW0gLyogbXBfYXNzX3N1YnNjcmlwdCAqLworfTsKKworc3RhdGljIFB5TWV0aG9kRGVmIHNpZ25hbGRpY3RfbWV0aG9kc1tdID0geworICAgIHsgImNvcHkiLCAoUHlDRnVuY3Rpb24pc2lnbmFsZGljdF9jb3B5LCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAge05VTEwsIE5VTEx9Cit9OworCisKK3N0YXRpYyBQeVR5cGVPYmplY3QgUHlEZWNTaWduYWxEaWN0TWl4aW5fVHlwZSA9Cit7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKDAsIDApCisgICAgImRlY2ltYWwuU2lnbmFsRGljdE1peGluIiwgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihQeURlY1NpZ25hbERpY3RPYmplY3QpLCAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgKGdldGF0dHJmdW5jKSAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIChzZXRhdHRyZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIChyZXByZnVuYykgc2lnbmFsZGljdF9yZXByLCAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgICZzaWduYWxkaWN0X2FzX21hcHBpbmcsICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQsICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIChyZXByZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgKHNldGF0dHJvZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAoUHlCdWZmZXJQcm9jcyAqKSAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFR8UHlfVFBGTEFHU19CQVNFVFlQRXwKKyAgICBQeV9UUEZMQUdTX0hBVkVfR0MsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICBzaWduYWxkaWN0X3JpY2hjb21wYXJlLCAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgKGdldGl0ZXJmdW5jKXNpZ25hbGRpY3RfaXRlciwgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgc2lnbmFsZGljdF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2Mpc2lnbmFsZGljdF9pbml0LCAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHQgT2JqZWN0LCBQYXJ0IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIERlY19DT05URVhUX0dFVF9TU0laRShtZW0pIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorY29udGV4dF9nZXQjI21lbShQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KG1wZF9nZXQjI21lbShDVFgoc2VsZikpKTsgXAorfQorCisjZGVmaW5lIERlY19DT05URVhUX0dFVF9VTE9ORyhtZW0pIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitjb250ZXh0X2dldCMjbWVtKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcobXBkX2dldCMjbWVtKENUWChzZWxmKSkpOyBcCit9CisKK0RlY19DT05URVhUX0dFVF9TU0laRShwcmVjKQorRGVjX0NPTlRFWFRfR0VUX1NTSVpFKGVtYXgpCitEZWNfQ09OVEVYVF9HRVRfU1NJWkUoZW1pbikKK0RlY19DT05URVhUX0dFVF9TU0laRShjbGFtcCkKKworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKK0RlY19DT05URVhUX0dFVF9VTE9ORyh0cmFwcykKK0RlY19DT05URVhUX0dFVF9VTE9ORyhzdGF0dXMpCisjZW5kaWYKKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfZ2V0cm91bmQoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIGludCBpID0gbXBkX2dldHJvdW5kKENUWChzZWxmKSk7CisKKyAgICBQeV9JTkNSRUYocm91bmRfbWFwW2ldKTsKKyAgICByZXR1cm4gcm91bmRfbWFwW2ldOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF9nZXRjYXBpdGFscyhQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhDdHhDYXBzKHNlbGYpKTsKK30KKworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X2dldGFsbGNyKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG1wZF9nZXRjcihDVFgoc2VsZikpKTsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF9nZXRldGlueShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KG1wZF9ldGlueShDVFgoc2VsZikpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfZ2V0ZXRvcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KG1wZF9ldG9wKENUWChzZWxmKSkpOworfQorCitzdGF0aWMgaW50Citjb250ZXh0X3NldHByZWMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIG1wZF9zc2l6ZV90IHg7CisKKyAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh2YWx1ZSk7CisgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXRwcmVjKGN0eCwgeCkpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlX2Vycm9yX2ludCgKKyAgICAgICAgICAgICJ2YWxpZCByYW5nZSBmb3IgcHJlYyBpcyBbMSwgTUFYX1BSRUNdIik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0ZW1pbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgbXBkX3NzaXplX3QgeDsKKworICAgIHggPSBQeUxvbmdfQXNTc2l6ZV90KHZhbHVlKTsKKyAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBjdHggPSBDVFgoc2VsZik7CisgICAgaWYgKCFtcGRfcXNldGVtaW4oY3R4LCB4KSkgeworICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfaW50KAorICAgICAgICAgICAgInZhbGlkIHJhbmdlIGZvciBFbWluIGlzIFtNSU5fRU1JTiwgMF0iKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorY29udGV4dF9zZXRlbWF4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICBtcGRfc3NpemVfdCB4OworCisgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodmFsdWUpOworICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGN0eCA9IENUWChzZWxmKTsKKyAgICBpZiAoIW1wZF9xc2V0ZW1heChjdHgsIHgpKSB7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9pbnQoCisgICAgICAgICAgICAidmFsaWQgcmFuZ2UgZm9yIEVtYXggaXMgWzAsIE1BWF9FTUFYXSIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisjaWZkZWYgQ09ORklHXzMyCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF91bnNhZmVfc2V0cHJlYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eCA9IENUWChzZWxmKTsKKyAgICBtcGRfc3NpemVfdCB4OworCisgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodmFsdWUpOworICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHggPCAxIHx8IHggPiAxMDcwMDAwMDAwTCkgeworICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfcHRyKAorICAgICAgICAgICAgInZhbGlkIHJhbmdlIGZvciB1bnNhZmUgcHJlYyBpcyBbMSwgMTA3MDAwMDAwMF0iKTsKKyAgICB9CisKKyAgICBjdHgtPnByZWMgPSB4OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF91bnNhZmVfc2V0ZW1pbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eCA9IENUWChzZWxmKTsKKyAgICBtcGRfc3NpemVfdCB4OworCisgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodmFsdWUpOworICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHggPCAtMTA3MDAwMDAwMEwgfHwgeCA+IDApIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlX2Vycm9yX3B0cigKKyAgICAgICAgICAgICJ2YWxpZCByYW5nZSBmb3IgdW5zYWZlIGVtaW4gaXMgWy0xMDcwMDAwMDAwLCAwXSIpOworICAgIH0KKworICAgIGN0eC0+ZW1pbiA9IHg7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X3Vuc2FmZV9zZXRlbWF4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4ID0gQ1RYKHNlbGYpOworICAgIG1wZF9zc2l6ZV90IHg7CisKKyAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh2YWx1ZSk7CisgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoeCA8IDAgfHwgeCA+IDEwNzAwMDAwMDBMKSB7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9wdHIoCisgICAgICAgICAgICAidmFsaWQgcmFuZ2UgZm9yIHVuc2FmZSBlbWF4IGlzIFswLCAxMDcwMDAwMDAwXSIpOworICAgIH0KKworICAgIGN0eC0+ZW1heCA9IHg7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKKworc3RhdGljIGludAorY29udGV4dF9zZXRyb3VuZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgaW50IHg7CisKKyAgICB4ID0gZ2V0cm91bmQodmFsdWUpOworICAgIGlmICh4ID09IC0xKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBjdHggPSBDVFgoc2VsZik7CisgICAgaWYgKCFtcGRfcXNldHJvdW5kKGN0eCwgeCkpIHsKKyAgICAgICAgSU5URVJOQUxfRVJST1JfSU5UKCJjb250ZXh0X3NldHJvdW5kIik7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorY29udGV4dF9zZXRjYXBpdGFscyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICBtcGRfc3NpemVfdCB4OworCisgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodmFsdWUpOworICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmICh4ICE9IDAgJiYgeCAhPSAxKSB7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9pbnQoCisgICAgICAgICAgICAidmFsaWQgdmFsdWVzIGZvciBjYXBpdGFscyBhcmUgMCBvciAxIik7CisgICAgfQorICAgIEN0eENhcHMoc2VsZikgPSAoaW50KXg7CisKKyAgICByZXR1cm4gMDsKK30KKworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0dHJhcHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIHVpbnQzMl90IGZsYWdzOworCisgICAgZmxhZ3MgPSBsb25nX2FzX2ZsYWdzKHZhbHVlKTsKKyAgICBpZiAoZmxhZ3MgJiBERUNfRVJST1JTKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBjdHggPSBDVFgoc2VsZik7CisgICAgaWYgKCFtcGRfcXNldHRyYXBzKGN0eCwgZmxhZ3MpKSB7CisgICAgICAgIElOVEVSTkFMX0VSUk9SX0lOVCgiY29udGV4dF9zZXR0cmFwcyIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0dHJhcHNfbGlzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICB1aW50MzJfdCBmbGFnczsKKworICAgIGZsYWdzID0gbGlzdF9hc19mbGFncyh2YWx1ZSk7CisgICAgaWYgKGZsYWdzICYgREVDX0VSUk9SUykgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXR0cmFwcyhjdHgsIGZsYWdzKSkgeworICAgICAgICBJTlRFUk5BTF9FUlJPUl9JTlQoImNvbnRleHRfc2V0dHJhcHNfbGlzdCIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Citjb250ZXh0X3NldHRyYXBzX2RpY3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgdWludDMyX3QgZmxhZ3M7CisKKyAgICBpZiAoUHlEZWNTaWduYWxEaWN0X0NoZWNrKHZhbHVlKSkgeworICAgICAgICBmbGFncyA9IFNkRmxhZ3ModmFsdWUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZmxhZ3MgPSBkaWN0X2FzX2ZsYWdzKHZhbHVlKTsKKyAgICAgICAgaWYgKGZsYWdzICYgREVDX0VSUk9SUykgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXR0cmFwcyhjdHgsIGZsYWdzKSkgeworICAgICAgICBJTlRFUk5BTF9FUlJPUl9JTlQoImNvbnRleHRfc2V0dHJhcHNfZGljdCIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorc3RhdGljIGludAorY29udGV4dF9zZXRzdGF0dXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIHVpbnQzMl90IGZsYWdzOworCisgICAgZmxhZ3MgPSBsb25nX2FzX2ZsYWdzKHZhbHVlKTsKKyAgICBpZiAoZmxhZ3MgJiBERUNfRVJST1JTKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBjdHggPSBDVFgoc2VsZik7CisgICAgaWYgKCFtcGRfcXNldHN0YXR1cyhjdHgsIGZsYWdzKSkgeworICAgICAgICBJTlRFUk5BTF9FUlJPUl9JTlQoImNvbnRleHRfc2V0c3RhdHVzIik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKworc3RhdGljIGludAorY29udGV4dF9zZXRzdGF0dXNfbGlzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICB1aW50MzJfdCBmbGFnczsKKworICAgIGZsYWdzID0gbGlzdF9hc19mbGFncyh2YWx1ZSk7CisgICAgaWYgKGZsYWdzICYgREVDX0VSUk9SUykgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXRzdGF0dXMoY3R4LCBmbGFncykpIHsKKyAgICAgICAgSU5URVJOQUxfRVJST1JfSU5UKCJjb250ZXh0X3NldHN0YXR1c19saXN0Iik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0c3RhdHVzX2RpY3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgdWludDMyX3QgZmxhZ3M7CisKKyAgICBpZiAoUHlEZWNTaWduYWxEaWN0X0NoZWNrKHZhbHVlKSkgeworICAgICAgICBmbGFncyA9IFNkRmxhZ3ModmFsdWUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZmxhZ3MgPSBkaWN0X2FzX2ZsYWdzKHZhbHVlKTsKKyAgICAgICAgaWYgKGZsYWdzICYgREVDX0VSUk9SUykgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXRzdGF0dXMoY3R4LCBmbGFncykpIHsKKyAgICAgICAgSU5URVJOQUxfRVJST1JfSU5UKCJjb250ZXh0X3NldHN0YXR1c19kaWN0Iik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0Y2xhbXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIG1wZF9zc2l6ZV90IHg7CisKKyAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh2YWx1ZSk7CisgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIEJPVU5EU19DSEVDSyh4LCBJTlRfTUlOLCBJTlRfTUFYKTsKKworICAgIGN0eCA9IENUWChzZWxmKTsKKyAgICBpZiAoIW1wZF9xc2V0Y2xhbXAoY3R4LCAoaW50KXgpKSB7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9pbnQoInZhbGlkIHZhbHVlcyBmb3IgY2xhbXAgYXJlIDAgb3IgMSIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorc3RhdGljIGludAorY29udGV4dF9zZXRhbGxjcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgbXBkX3NzaXplX3QgeDsKKworICAgIHggPSBQeUxvbmdfQXNTc2l6ZV90KHZhbHVlKTsKKyAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgQk9VTkRTX0NIRUNLKHgsIElOVF9NSU4sIElOVF9NQVgpOworCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXRjcihjdHgsIChpbnQpeCkpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlX2Vycm9yX2ludCgidmFsaWQgdmFsdWVzIGZvciBfYWxsY3IgYXJlIDAgb3IgMSIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X2dldGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpuYW1lKQoreworICAgIFB5T2JqZWN0ICpyZXR2YWw7CisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWUpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lLCAidHJhcHMiKSA9PSAwKSB7CisgICAgICAgICAgICByZXR2YWwgPSAoKFB5RGVjQ29udGV4dE9iamVjdCAqKXNlbGYpLT50cmFwczsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihyZXR2YWwpOworICAgICAgICAgICAgcmV0dXJuIHJldHZhbDsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgImZsYWdzIikgPT0gMCkgeworICAgICAgICAgICAgcmV0dmFsID0gKChQeURlY0NvbnRleHRPYmplY3QgKilzZWxmKS0+ZmxhZ3M7CisgICAgICAgICAgICBQeV9JTkNSRUYocmV0dmFsKTsKKyAgICAgICAgICAgIHJldHVybiByZXR2YWw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gUHlPYmplY3RfR2VuZXJpY0dldEF0dHIoc2VsZiwgbmFtZSk7Cit9CisKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAiY29udGV4dCBhdHRyaWJ1dGVzIGNhbm5vdCBiZSBkZWxldGVkIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWUpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lLCAidHJhcHMiKSA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dF9zZXR0cmFwc19kaWN0KHNlbGYsIHZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgImZsYWdzIikgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHRfc2V0c3RhdHVzX2RpY3Qoc2VsZiwgdmFsdWUpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyKHNlbGYsIG5hbWUsIHZhbHVlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfY2xlYXJfdHJhcHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgQ1RYKHNlbGYpLT50cmFwcyA9IDA7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X2NsZWFyX2ZsYWdzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIENUWChzZWxmKS0+c3RhdHVzID0gMDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworI2RlZmluZSBERUNfREZMVF9FTUFYIDk5OTk5OQorI2RlZmluZSBERUNfREZMVF9FTUlOIC05OTk5OTkKKworc3RhdGljIG1wZF9jb250ZXh0X3QgZGZsdF9jdHggPSB7CisgIDI4LCBERUNfREZMVF9FTUFYLCBERUNfREZMVF9FTUlOLAorICBNUERfSUVFRV9JbnZhbGlkX29wZXJhdGlvbnxNUERfRGl2aXNpb25fYnlfemVyb3xNUERfT3ZlcmZsb3csCisgIDAsIDAsIE1QRF9ST1VORF9IQUxGX0VWRU4sIDAsIDEKK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzIFVOVVNFRCwgUHlPYmplY3QgKmt3ZHMgVU5VU0VEKQoreworICAgIFB5RGVjQ29udGV4dE9iamVjdCAqc2VsZiA9IE5VTEw7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworCisgICAgaWYgKHR5cGUgPT0gJlB5RGVjQ29udGV4dF9UeXBlKSB7CisgICAgICAgIHNlbGYgPSBQeU9iamVjdF9OZXcoUHlEZWNDb250ZXh0T2JqZWN0LCAmUHlEZWNDb250ZXh0X1R5cGUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc2VsZiA9IChQeURlY0NvbnRleHRPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICB9CisKKyAgICBpZiAoc2VsZiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHNlbGYtPnRyYXBzID0gUHlPYmplY3RfQ2FsbE9iamVjdCgoUHlPYmplY3QgKilQeURlY1NpZ25hbERpY3RfVHlwZSwgTlVMTCk7CisgICAgaWYgKHNlbGYtPnRyYXBzID09IE5VTEwpIHsKKyAgICAgICAgc2VsZi0+ZmxhZ3MgPSBOVUxMOworICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBzZWxmLT5mbGFncyA9IFB5T2JqZWN0X0NhbGxPYmplY3QoKFB5T2JqZWN0ICopUHlEZWNTaWduYWxEaWN0X1R5cGUsIE5VTEwpOworICAgIGlmIChzZWxmLT5mbGFncyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgY3R4ID0gQ1RYKHNlbGYpOworCisgICAgaWYgKGRlZmF1bHRfY29udGV4dF90ZW1wbGF0ZSkgeworICAgICAgICAqY3R4ID0gKkNUWChkZWZhdWx0X2NvbnRleHRfdGVtcGxhdGUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgKmN0eCA9IGRmbHRfY3R4OworICAgIH0KKworICAgIFNkRmxhZ0FkZHIoc2VsZi0+dHJhcHMpID0gJmN0eC0+dHJhcHM7CisgICAgU2RGbGFnQWRkcihzZWxmLT5mbGFncykgPSAmY3R4LT5zdGF0dXM7CisKKyAgICBDdHhDYXBzKHNlbGYpID0gMTsKKyNpZm5kZWYgV0lUSE9VVF9USFJFQURTCisgICAgc2VsZi0+dHN0YXRlID0gTlVMTDsKKyNlbmRpZgorCisgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7Cit9CisKK3N0YXRpYyB2b2lkCitjb250ZXh0X2RlYWxsb2MoUHlEZWNDb250ZXh0T2JqZWN0ICpzZWxmKQoreworI2lmbmRlZiBXSVRIT1VUX1RIUkVBRFMKKyAgICBpZiAoc2VsZiA9PSBjYWNoZWRfY29udGV4dCkgeworICAgICAgICBjYWNoZWRfY29udGV4dCA9IE5VTEw7CisgICAgfQorI2VuZGlmCisgICAgUHlfWERFQ1JFRihzZWxmLT50cmFwcyk7CisgICAgUHlfWERFQ1JFRihzZWxmLT5mbGFncyk7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZShzZWxmKTsKK30KKworc3RhdGljIGludAorY29udGV4dF9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geworICAgICAgInByZWMiLCAicm91bmRpbmciLCAiRW1pbiIsICJFbWF4IiwgImNhcGl0YWxzIiwgImNsYW1wIiwKKyAgICAgICJmbGFncyIsICJ0cmFwcyIsIE5VTEwKKyAgICB9OworICAgIFB5T2JqZWN0ICpwcmVjID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqcm91bmRpbmcgPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICplbWluID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqZW1heCA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKmNhcGl0YWxzID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqY2xhbXAgPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpzdGF0dXMgPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICp0cmFwcyA9IFB5X05vbmU7CisgICAgaW50IHJldDsKKworICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKAorICAgICAgICAgICAgYXJncywga3dkcywKKyAgICAgICAgICAgICJ8T09PT09PT08iLCBrd2xpc3QsCisgICAgICAgICAgICAmcHJlYywgJnJvdW5kaW5nLCAmZW1pbiwgJmVtYXgsICZjYXBpdGFscywgJmNsYW1wLCAmc3RhdHVzLCAmdHJhcHMKKyAgICAgICAgICkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChwcmVjICE9IFB5X05vbmUgJiYgY29udGV4dF9zZXRwcmVjKHNlbGYsIHByZWMsIE5VTEwpIDwgMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChyb3VuZGluZyAhPSBQeV9Ob25lICYmIGNvbnRleHRfc2V0cm91bmQoc2VsZiwgcm91bmRpbmcsIE5VTEwpIDwgMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChlbWluICE9IFB5X05vbmUgJiYgY29udGV4dF9zZXRlbWluKHNlbGYsIGVtaW4sIE5VTEwpIDwgMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChlbWF4ICE9IFB5X05vbmUgJiYgY29udGV4dF9zZXRlbWF4KHNlbGYsIGVtYXgsIE5VTEwpIDwgMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChjYXBpdGFscyAhPSBQeV9Ob25lICYmIGNvbnRleHRfc2V0Y2FwaXRhbHMoc2VsZiwgY2FwaXRhbHMsIE5VTEwpIDwgMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChjbGFtcCAhPSBQeV9Ob25lICYmIGNvbnRleHRfc2V0Y2xhbXAoc2VsZiwgY2xhbXAsIE5VTEwpIDwgMCkgeworICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAodHJhcHMgIT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoUHlMaXN0X0NoZWNrKHRyYXBzKSkgeworICAgICAgICAgICAgcmV0ID0gY29udGV4dF9zZXR0cmFwc19saXN0KHNlbGYsIHRyYXBzKTsKKyAgICAgICAgfQorI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKKyAgICAgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrKHRyYXBzKSkgeworICAgICAgICAgICAgcmV0ID0gY29udGV4dF9zZXR0cmFwcyhzZWxmLCB0cmFwcywgTlVMTCk7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldCA9IGNvbnRleHRfc2V0dHJhcHNfZGljdChzZWxmLCB0cmFwcyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHN0YXR1cyAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmIChQeUxpc3RfQ2hlY2soc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0ID0gY29udGV4dF9zZXRzdGF0dXNfbGlzdChzZWxmLCBzdGF0dXMpOworICAgICAgICB9CisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorICAgICAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2soc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0ID0gY29udGV4dF9zZXRzdGF0dXMoc2VsZiwgc3RhdHVzLCBOVUxMKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0ID0gY29udGV4dF9zZXRzdGF0dXNfZGljdChzZWxmLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X3JlcHIoUHlEZWNDb250ZXh0T2JqZWN0ICpzZWxmKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICBjaGFyIGZsYWdzW01QRF9NQVhfU0lHTkFMX0xJU1RdOworICAgIGNoYXIgdHJhcHNbTVBEX01BWF9TSUdOQUxfTElTVF07CisgICAgaW50IG4sIG1lbTsKKworICAgIGFzc2VydChQeURlY0NvbnRleHRfQ2hlY2soc2VsZikpOworICAgIGN0eCA9IENUWChzZWxmKTsKKworICAgIG1lbSA9IE1QRF9NQVhfU0lHTkFMX0xJU1Q7CisgICAgbiA9IG1wZF9sc25wcmludF9zaWduYWxzKGZsYWdzLCBtZW0sIGN0eC0+c3RhdHVzLCBkZWNfc2lnbmFsX3N0cmluZyk7CisgICAgaWYgKG4gPCAwIHx8IG4gPj0gbWVtKSB7CisgICAgICAgIElOVEVSTkFMX0VSUk9SX1BUUigiY29udGV4dF9yZXByIik7CisgICAgfQorCisgICAgbiA9IG1wZF9sc25wcmludF9zaWduYWxzKHRyYXBzLCBtZW0sIGN0eC0+dHJhcHMsIGRlY19zaWduYWxfc3RyaW5nKTsKKyAgICBpZiAobiA8IDAgfHwgbiA+PSBtZW0pIHsKKyAgICAgICAgSU5URVJOQUxfRVJST1JfUFRSKCJjb250ZXh0X3JlcHIiKTsKKyAgICB9CisKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICJDb250ZXh0KHByZWM9JXpkLCByb3VuZGluZz0lcywgRW1pbj0lemQsIEVtYXg9JXpkLCAiCisgICAgICAgICAgICAgICAgImNhcGl0YWxzPSVkLCBjbGFtcD0lZCwgZmxhZ3M9JXMsIHRyYXBzPSVzKSIsCisgICAgICAgICBjdHgtPnByZWMsIG1wZF9yb3VuZF9zdHJpbmdbY3R4LT5yb3VuZF0sIGN0eC0+ZW1pbiwgY3R4LT5lbWF4LAorICAgICAgICAgc2VsZi0+Y2FwaXRhbHMsIGN0eC0+Y2xhbXAsIGZsYWdzLCB0cmFwcyk7Cit9CisKK3N0YXRpYyB2b2lkCitpbml0X2Jhc2ljX2NvbnRleHQoUHlPYmplY3QgKnYpCit7CisgICAgbXBkX2NvbnRleHRfdCBjdHggPSBkZmx0X2N0eDsKKworICAgIGN0eC5wcmVjID0gOTsKKyAgICBjdHgudHJhcHMgfD0gKE1QRF9VbmRlcmZsb3d8TVBEX0NsYW1wZWQpOworICAgIGN0eC5yb3VuZCA9IE1QRF9ST1VORF9IQUxGX1VQOworCisgICAgKkNUWCh2KSA9IGN0eDsKKyAgICBDdHhDYXBzKHYpID0gMTsKK30KKworc3RhdGljIHZvaWQKK2luaXRfZXh0ZW5kZWRfY29udGV4dChQeU9iamVjdCAqdikKK3sKKyAgICBtcGRfY29udGV4dF90IGN0eCA9IGRmbHRfY3R4OworCisgICAgY3R4LnByZWMgPSA5OworICAgIGN0eC50cmFwcyA9IDA7CisKKyAgICAqQ1RYKHYpID0gY3R4OworICAgIEN0eENhcHModikgPSAxOworfQorCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorLyogRmFjdG9yeSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgSUVFRSBpbnRlcmNoYW5nZSBmb3JtYXQgY29udGV4dHMgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitpZWVlX2NvbnRleHQoUHlPYmplY3QgKmR1bW15IFVOVVNFRCwgUHlPYmplY3QgKnYpCit7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisgICAgbXBkX3NzaXplX3QgYml0czsKKyAgICBtcGRfY29udGV4dF90IGN0eDsKKworICAgIGJpdHMgPSBQeUxvbmdfQXNTc2l6ZV90KHYpOworICAgIGlmIChiaXRzID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChiaXRzIDw9IDAgfHwgYml0cyA+IElOVF9NQVgpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKG1wZF9pZWVlX2NvbnRleHQoJmN0eCwgKGludCliaXRzKSA8IDApIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBjb250ZXh0ID0gUHlPYmplY3RfQ2FsbE9iamVjdCgoUHlPYmplY3QgKikmUHlEZWNDb250ZXh0X1R5cGUsIE5VTEwpOworICAgIGlmIChjb250ZXh0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgICpDVFgoY29udGV4dCkgPSBjdHg7CisKKyAgICByZXR1cm4gY29udGV4dDsKKworZXJyb3I6CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICJhcmd1bWVudCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzIsIHdpdGggYSBtYXhpbXVtIG9mICVkIiwKKyAgICAgICAgTVBEX0lFRUVfQ09OVEVYVF9NQVhfQklUUyk7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF9jb3B5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKmNvcHk7CisKKyAgICBjb3B5ID0gUHlPYmplY3RfQ2FsbE9iamVjdCgoUHlPYmplY3QgKikmUHlEZWNDb250ZXh0X1R5cGUsIE5VTEwpOworICAgIGlmIChjb3B5ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgKkNUWChjb3B5KSA9ICpDVFgoc2VsZik7CisgICAgQ1RYKGNvcHkpLT5uZXd0cmFwID0gMDsKKyAgICBDdHhDYXBzKGNvcHkpID0gQ3R4Q2FwcyhzZWxmKTsKKworICAgIHJldHVybiBjb3B5OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF9yZWR1Y2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzIFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqZmxhZ3M7CisgICAgUHlPYmplY3QgKnRyYXBzOworICAgIFB5T2JqZWN0ICpyZXQ7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworCisgICAgY3R4ID0gQ1RYKHNlbGYpOworCisgICAgZmxhZ3MgPSBzaWduYWxzX2FzX2xpc3QoY3R4LT5zdGF0dXMpOworICAgIGlmIChmbGFncyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICB0cmFwcyA9IHNpZ25hbHNfYXNfbGlzdChjdHgtPnRyYXBzKTsKKyAgICBpZiAodHJhcHMgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoZmxhZ3MpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXQgPSBQeV9CdWlsZFZhbHVlKAorICAgICAgICAgICAgIk8obnNubmlpT08pIiwKKyAgICAgICAgICAgIFB5X1RZUEUoc2VsZiksCisgICAgICAgICAgICBjdHgtPnByZWMsIG1wZF9yb3VuZF9zdHJpbmdbY3R4LT5yb3VuZF0sIGN0eC0+ZW1pbiwgY3R4LT5lbWF4LAorICAgICAgICAgICAgQ3R4Q2FwcyhzZWxmKSwgY3R4LT5jbGFtcCwgZmxhZ3MsIHRyYXBzCisgICAgKTsKKworICAgIFB5X0RFQ1JFRihmbGFncyk7CisgICAgUHlfREVDUkVGKHRyYXBzKTsKKyAgICByZXR1cm4gcmV0OworfQorCisKK3N0YXRpYyBQeUdldFNldERlZiBjb250ZXh0X2dldHNldHMgW10gPQoreworICB7ICJwcmVjIiwgKGdldHRlciljb250ZXh0X2dldHByZWMsIChzZXR0ZXIpY29udGV4dF9zZXRwcmVjLCBOVUxMLCBOVUxMfSwKKyAgeyAiRW1heCIsIChnZXR0ZXIpY29udGV4dF9nZXRlbWF4LCAoc2V0dGVyKWNvbnRleHRfc2V0ZW1heCwgTlVMTCwgTlVMTH0sCisgIHsgIkVtaW4iLCAoZ2V0dGVyKWNvbnRleHRfZ2V0ZW1pbiwgKHNldHRlciljb250ZXh0X3NldGVtaW4sIE5VTEwsIE5VTEx9LAorICB7ICJyb3VuZGluZyIsIChnZXR0ZXIpY29udGV4dF9nZXRyb3VuZCwgKHNldHRlciljb250ZXh0X3NldHJvdW5kLCBOVUxMLCBOVUxMfSwKKyAgeyAiY2FwaXRhbHMiLCAoZ2V0dGVyKWNvbnRleHRfZ2V0Y2FwaXRhbHMsIChzZXR0ZXIpY29udGV4dF9zZXRjYXBpdGFscywgTlVMTCwgTlVMTH0sCisgIHsgImNsYW1wIiwgKGdldHRlciljb250ZXh0X2dldGNsYW1wLCAoc2V0dGVyKWNvbnRleHRfc2V0Y2xhbXAsIE5VTEwsIE5VTEx9LAorI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKKyAgeyAiX2FsbGNyIiwgKGdldHRlciljb250ZXh0X2dldGFsbGNyLCAoc2V0dGVyKWNvbnRleHRfc2V0YWxsY3IsIE5VTEwsIE5VTEx9LAorICB7ICJfdHJhcHMiLCAoZ2V0dGVyKWNvbnRleHRfZ2V0dHJhcHMsIChzZXR0ZXIpY29udGV4dF9zZXR0cmFwcywgTlVMTCwgTlVMTH0sCisgIHsgIl9mbGFncyIsIChnZXR0ZXIpY29udGV4dF9nZXRzdGF0dXMsIChzZXR0ZXIpY29udGV4dF9zZXRzdGF0dXMsIE5VTEwsIE5VTEx9LAorI2VuZGlmCisgIHtOVUxMfQorfTsKKworCisjZGVmaW5lIENPTlRFWFRfQ0hFQ0sob2JqKSBcCisgICAgaWYgKCFQeURlY0NvbnRleHRfQ2hlY2sob2JqKSkgeyAgICAgICAgXAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAgIFwKKyAgICAgICAgICAgICJhcmd1bWVudCBtdXN0IGJlIGEgY29udGV4dCIpOyBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworI2RlZmluZSBDT05URVhUX0NIRUNLX1ZBKG9iaikgXAorICAgIGlmIChvYmogPT0gUHlfTm9uZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgQ1VSUkVOVF9DT05URVhUKG9iaik7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGVsc2UgaWYgKCFQeURlY0NvbnRleHRfQ2hlY2sob2JqKSkgeyAgICAgICAgICAgIFwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgICAgICAgICAgICBcCisgICAgICAgICAgICAib3B0aW9uYWwgYXJndW1lbnQgbXVzdCBiZSBhIGNvbnRleHQiKTsgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgIEdsb2JhbCwgdGhyZWFkIGxvY2FsIGFuZCB0ZW1wb3JhcnkgY29udGV4dHMgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZkZWYgV0lUSE9VVF9USFJFQURTCisvKiBSZXR1cm4gYm9ycm93ZWQgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGNvbnRleHQuIFdoZW4gY29tcGlsZWQKKyAqIHdpdGhvdXQgdGhyZWFkcywgdGhpcyBpcyBhbHdheXMgdGhlIG1vZHVsZSBjb250ZXh0LiAqLworc3RhdGljIGludCBtb2R1bGVfY29udGV4dF9zZXQgPSAwOworc3RhdGljIFB5T2JqZWN0ICoKK2N1cnJlbnRfY29udGV4dCh2b2lkKQoreworICAgIC8qIEluIGRlY2ltYWwucHksIHRoZSBtb2R1bGUgY29udGV4dCBpcyBhdXRvbWF0aWNhbGx5IGluaXRpYWxpemVkCisgICAgICogZnJvbSB0aGUgRGVmYXVsdENvbnRleHQgd2hlbiBpdCBpcyBmaXJzdCBhY2Nlc3NlZC4gVGhpcworICAgICAqIGNvbXBsaWNhdGVzIHRoZSBjb2RlIGFuZCBoYXMgYSBzcGVlZCBwZW5hbHR5IG9mIDEtMiUuICovCisgICAgaWYgKG1vZHVsZV9jb250ZXh0X3NldCkgeworICAgICAgICByZXR1cm4gbW9kdWxlX2NvbnRleHQ7CisgICAgfQorCisgICAgKkNUWChtb2R1bGVfY29udGV4dCkgPSAqQ1RYKGRlZmF1bHRfY29udGV4dF90ZW1wbGF0ZSk7CisgICAgQ1RYKG1vZHVsZV9jb250ZXh0KS0+c3RhdHVzID0gMDsKKyAgICBDVFgobW9kdWxlX2NvbnRleHQpLT5uZXd0cmFwID0gMDsKKyAgICBDdHhDYXBzKG1vZHVsZV9jb250ZXh0KSA9IEN0eENhcHMoZGVmYXVsdF9jb250ZXh0X3RlbXBsYXRlKTsKKworICAgIG1vZHVsZV9jb250ZXh0X3NldCA9IDE7CisgICAgcmV0dXJuIG1vZHVsZV9jb250ZXh0OworfQorCisvKiBjdHhvYmogOj0gYm9ycm93ZWQgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGNvbnRleHQgKi8KKyNkZWZpbmUgQ1VSUkVOVF9DT05URVhUKGN0eG9iaikgXAorICAgIGN0eG9iaiA9IGN1cnJlbnRfY29udGV4dCgpCisKKy8qIGN0eCA6PSBwb2ludGVyIHRvIHRoZSBtcGRfY29udGV4dF90IHN0cnVjdCBvZiB0aGUgY3VycmVudCBjb250ZXh0ICovCisjZGVmaW5lIENVUlJFTlRfQ09OVEVYVF9BRERSKGN0eCkgXAorICAgIGN0eCA9IENUWChjdXJyZW50X2NvbnRleHQoKSkKKworLyogUmV0dXJuIGEgbmV3IHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBjb250ZXh0ICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNfR2V0Q3VycmVudENvbnRleHQoUHlPYmplY3QgKnNlbGYgVU5VU0VELCBQeU9iamVjdCAqYXJncyBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisKKyAgICBQeV9JTkNSRUYoY29udGV4dCk7CisgICAgcmV0dXJuIGNvbnRleHQ7Cit9CisKKy8qIFNldCB0aGUgbW9kdWxlIGNvbnRleHQgdG8gYSBuZXcgY29udGV4dCwgZGVjcmVtZW50IG9sZCByZWZlcmVuY2UgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY19TZXRDdXJyZW50Q29udGV4dChQeU9iamVjdCAqc2VsZiBVTlVTRUQsIFB5T2JqZWN0ICp2KQoreworICAgIENPTlRFWFRfQ0hFQ0sodik7CisKKyAgICAvKiBJZiB0aGUgbmV3IGNvbnRleHQgaXMgb25lIG9mIHRoZSB0ZW1wbGF0ZXMsIG1ha2UgYSBjb3B5LgorICAgICAqIFRoaXMgaXMgdGhlIGN1cnJlbnQgYmVoYXZpb3Igb2YgZGVjaW1hbC5weS4gKi8KKyAgICBpZiAodiA9PSBkZWZhdWx0X2NvbnRleHRfdGVtcGxhdGUgfHwKKyAgICAgICAgdiA9PSBiYXNpY19jb250ZXh0X3RlbXBsYXRlIHx8CisgICAgICAgIHYgPT0gZXh0ZW5kZWRfY29udGV4dF90ZW1wbGF0ZSkgeworICAgICAgICB2ID0gY29udGV4dF9jb3B5KHYsIE5VTEwpOworICAgICAgICBpZiAodiA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBDVFgodiktPnN0YXR1cyA9IDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9JTkNSRUYodik7CisgICAgfQorCisgICAgUHlfWERFQ1JFRihtb2R1bGVfY29udGV4dCk7CisgICAgbW9kdWxlX2NvbnRleHQgPSB2OworICAgIG1vZHVsZV9jb250ZXh0X3NldCA9IDE7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZWxzZQorLyoKKyAqIFRocmVhZCBsb2NhbCBzdG9yYWdlIGN1cnJlbnRseSBoYXMgYSBzcGVlZCBwZW5hbHR5IG9mIGFib3V0IDQlLgorICogQWxsIGZ1bmN0aW9ucyB0aGF0IG1hcCBQeXRob24ncyBhcml0aG1ldGljIG9wZXJhdG9ycyB0byBtcGRlY2ltYWwKKyAqIGZ1bmN0aW9ucyBoYXZlIHRvIGxvb2sgdXAgdGhlIGN1cnJlbnQgY29udGV4dCBmb3IgZWFjaCBhbmQgZXZlcnkKKyAqIG9wZXJhdGlvbi4KKyAqLworCisvKiBHZXQgdGhlIGNvbnRleHQgZnJvbSB0aGUgdGhyZWFkIHN0YXRlIGRpY3Rpb25hcnkuICovCitzdGF0aWMgUHlPYmplY3QgKgorY3VycmVudF9jb250ZXh0X2Zyb21fZGljdCh2b2lkKQoreworICAgIFB5T2JqZWN0ICpkaWN0OworICAgIFB5T2JqZWN0ICp0bF9jb250ZXh0OworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKworICAgIGRpY3QgPSBQeVRocmVhZFN0YXRlX0dldERpY3QoKTsKKyAgICBpZiAoZGljdCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAiY2Fubm90IGdldCB0aHJlYWQgc3RhdGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgdGxfY29udGV4dCA9IFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKGRpY3QsIHRsc19jb250ZXh0X2tleSk7CisgICAgaWYgKHRsX2NvbnRleHQgIT0gTlVMTCkgeworICAgICAgICAvKiBXZSBhbHJlYWR5IGhhdmUgYSB0aHJlYWQgbG9jYWwgY29udGV4dC4gKi8KKyAgICAgICAgQ09OVEVYVF9DSEVDSyh0bF9jb250ZXh0KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFNldCB1cCBhIG5ldyB0aHJlYWQgbG9jYWwgY29udGV4dC4gKi8KKyAgICAgICAgdGxfY29udGV4dCA9IGNvbnRleHRfY29weShkZWZhdWx0X2NvbnRleHRfdGVtcGxhdGUsIE5VTEwpOworICAgICAgICBpZiAodGxfY29udGV4dCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBDVFgodGxfY29udGV4dCktPnN0YXR1cyA9IDA7CisKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKGRpY3QsIHRsc19jb250ZXh0X2tleSwgdGxfY29udGV4dCkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodGxfY29udGV4dCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYodGxfY29udGV4dCk7CisgICAgfQorCisgICAgLyogQ2FjaGUgdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLCBhc3N1bWluZyB0aGF0IGl0CisgICAgICogd2lsbCBiZSBhY2Nlc3NlZCBzZXZlcmFsIHRpbWVzIGJlZm9yZSBhIHRocmVhZCBzd2l0Y2guICovCisgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICBpZiAodHN0YXRlKSB7CisgICAgICAgIGNhY2hlZF9jb250ZXh0ID0gKFB5RGVjQ29udGV4dE9iamVjdCAqKXRsX2NvbnRleHQ7CisgICAgICAgIGNhY2hlZF9jb250ZXh0LT50c3RhdGUgPSB0c3RhdGU7CisgICAgfQorCisgICAgLyogQm9ycm93ZWQgcmVmZXJlbmNlIHdpdGggcmVmY291bnQ9PTEgKi8KKyAgICByZXR1cm4gdGxfY29udGV4dDsKK30KKworLyogUmV0dXJuIGJvcnJvd2VkIHJlZmVyZW5jZSB0byB0aHJlYWQgbG9jYWwgY29udGV4dC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitjdXJyZW50X2NvbnRleHQodm9pZCkKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisKKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIGlmIChjYWNoZWRfY29udGV4dCAmJiBjYWNoZWRfY29udGV4dC0+dHN0YXRlID09IHRzdGF0ZSkgeworICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopY2FjaGVkX2NvbnRleHQ7CisgICAgfQorCisgICAgcmV0dXJuIGN1cnJlbnRfY29udGV4dF9mcm9tX2RpY3QoKTsKK30KKworLyogY3R4b2JqIDo9IGJvcnJvd2VkIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBjb250ZXh0ICovCisjZGVmaW5lIENVUlJFTlRfQ09OVEVYVChjdHhvYmopIFwKKyAgICBjdHhvYmogPSBjdXJyZW50X2NvbnRleHQoKTsgXAorICAgIGlmIChjdHhvYmogPT0gTlVMTCkgeyAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgIFwKKyAgICB9CisKKy8qIGN0eCA6PSBwb2ludGVyIHRvIHRoZSBtcGRfY29udGV4dF90IHN0cnVjdCBvZiB0aGUgY3VycmVudCBjb250ZXh0ICovCisjZGVmaW5lIENVUlJFTlRfQ09OVEVYVF9BRERSKGN0eCkgeyBcCisgICAgUHlPYmplY3QgKl9jX3RfeF9vX2JfaiA9IGN1cnJlbnRfY29udGV4dCgpOyBcCisgICAgaWYgKF9jX3RfeF9vX2JfaiA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY3R4ID0gQ1RYKF9jX3RfeF9vX2Jfaik7ICAgICAgICAgICAgICAgICAgICBcCit9CisKKy8qIFJldHVybiBhIG5ldyByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgY29udGV4dCAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjX0dldEN1cnJlbnRDb250ZXh0KFB5T2JqZWN0ICpzZWxmIFVOVVNFRCwgUHlPYmplY3QgKmFyZ3MgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpjb250ZXh0OworCisgICAgY29udGV4dCA9IGN1cnJlbnRfY29udGV4dCgpOworICAgIGlmIChjb250ZXh0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfSU5DUkVGKGNvbnRleHQpOworICAgIHJldHVybiBjb250ZXh0OworfQorCisvKiBTZXQgdGhlIHRocmVhZCBsb2NhbCBjb250ZXh0IHRvIGEgbmV3IGNvbnRleHQsIGRlY3JlbWVudCBvbGQgcmVmZXJlbmNlICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNfU2V0Q3VycmVudENvbnRleHQoUHlPYmplY3QgKnNlbGYgVU5VU0VELCBQeU9iamVjdCAqdikKK3sKKyAgICBQeU9iamVjdCAqZGljdDsKKworICAgIENPTlRFWFRfQ0hFQ0sodik7CisKKyAgICBkaWN0ID0gUHlUaHJlYWRTdGF0ZV9HZXREaWN0KCk7CisgICAgaWYgKGRpY3QgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgImNhbm5vdCBnZXQgdGhyZWFkIHN0YXRlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIElmIHRoZSBuZXcgY29udGV4dCBpcyBvbmUgb2YgdGhlIHRlbXBsYXRlcywgbWFrZSBhIGNvcHkuCisgICAgICogVGhpcyBpcyB0aGUgY3VycmVudCBiZWhhdmlvciBvZiBkZWNpbWFsLnB5LiAqLworICAgIGlmICh2ID09IGRlZmF1bHRfY29udGV4dF90ZW1wbGF0ZSB8fAorICAgICAgICB2ID09IGJhc2ljX2NvbnRleHRfdGVtcGxhdGUgfHwKKyAgICAgICAgdiA9PSBleHRlbmRlZF9jb250ZXh0X3RlbXBsYXRlKSB7CisgICAgICAgIHYgPSBjb250ZXh0X2NvcHkodiwgTlVMTCk7CisgICAgICAgIGlmICh2ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIENUWCh2KS0+c3RhdHVzID0gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0lOQ1JFRih2KTsKKyAgICB9CisKKyAgICBjYWNoZWRfY29udGV4dCA9IE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtKGRpY3QsIHRsc19jb250ZXh0X2tleSwgdikgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfREVDUkVGKHYpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKKy8qIENvbnRleHQgbWFuYWdlciBvYmplY3QgZm9yIHRoZSAnd2l0aCcgc3RhdGVtZW50LiBUaGUgbWFuYWdlcgorICogb3ducyBvbmUgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgKG91dGVyKSBjb250ZXh0IGFuZCBvbmUKKyAqIHRvIHRoZSBsb2NhbCAoaW5uZXIpIGNvbnRleHQuICovCitzdGF0aWMgUHlPYmplY3QgKgorY3R4bWFuYWdlcl9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlIFVOVVNFRCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiY3R4IiwgTlVMTH07CisgICAgUHlEZWNDb250ZXh0TWFuYWdlck9iamVjdCAqc2VsZjsKKyAgICBQeU9iamVjdCAqbG9jYWwgPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpnbG9iYWw7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoZ2xvYmFsKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE8iLCBrd2xpc3QsICZsb2NhbCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChsb2NhbCA9PSBQeV9Ob25lKSB7CisgICAgICAgIGxvY2FsID0gZ2xvYmFsOworICAgIH0KKyAgICBlbHNlIGlmICghUHlEZWNDb250ZXh0X0NoZWNrKGxvY2FsKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgIm9wdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYSBjb250ZXh0Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHNlbGYgPSBQeU9iamVjdF9OZXcoUHlEZWNDb250ZXh0TWFuYWdlck9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICZQeURlY0NvbnRleHRNYW5hZ2VyX1R5cGUpOworICAgIGlmIChzZWxmID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgc2VsZi0+bG9jYWwgPSBjb250ZXh0X2NvcHkobG9jYWwsIE5VTEwpOworICAgIGlmIChzZWxmLT5sb2NhbCA9PSBOVUxMKSB7CisgICAgICAgIHNlbGYtPmdsb2JhbCA9IE5VTEw7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHNlbGYtPmdsb2JhbCA9IGdsb2JhbDsKKyAgICBQeV9JTkNSRUYoc2VsZi0+Z2xvYmFsKTsKKworICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworfQorCitzdGF0aWMgdm9pZAorY3R4bWFuYWdlcl9kZWFsbG9jKFB5RGVjQ29udGV4dE1hbmFnZXJPYmplY3QgKnNlbGYpCit7CisgICAgUHlfWERFQ1JFRihzZWxmLT5sb2NhbCk7CisgICAgUHlfWERFQ1JFRihzZWxmLT5nbG9iYWwpOworICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eG1hbmFnZXJfc2V0X2xvY2FsKFB5RGVjQ29udGV4dE1hbmFnZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzIFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqcmV0OworCisgICAgcmV0ID0gUHlEZWNfU2V0Q3VycmVudENvbnRleHQoTlVMTCwgc2VsZi0+bG9jYWwpOworICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfREVDUkVGKHJldCk7CisKKyAgICBQeV9JTkNSRUYoc2VsZi0+bG9jYWwpOworICAgIHJldHVybiBzZWxmLT5sb2NhbDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eG1hbmFnZXJfcmVzdG9yZV9nbG9iYWwoUHlEZWNDb250ZXh0TWFuYWdlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpyZXQ7CisKKyAgICByZXQgPSBQeURlY19TZXRDdXJyZW50Q29udGV4dChOVUxMLCBzZWxmLT5nbG9iYWwpOworICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfREVDUkVGKHJldCk7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgY3R4bWFuYWdlcl9tZXRob2RzW10gPSB7CisgIHsiX19lbnRlcl9fIiwgKFB5Q0Z1bmN0aW9uKWN0eG1hbmFnZXJfc2V0X2xvY2FsLCBNRVRIX05PQVJHUywgTlVMTH0sCisgIHsiX19leGl0X18iLCAoUHlDRnVuY3Rpb24pY3R4bWFuYWdlcl9yZXN0b3JlX2dsb2JhbCwgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGVjQ29udGV4dE1hbmFnZXJfVHlwZSA9Cit7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgImRlY2ltYWwuQ29udGV4dE1hbmFnZXIiLCAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoUHlEZWNDb250ZXh0TWFuYWdlck9iamVjdCksICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpIGN0eG1hbmFnZXJfZGVhbGxvYywgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAoZ2V0YXR0cmZ1bmMpIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIChzZXRhdHRyZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgKHJlcHJmdW5jKSAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIChnZXRhdHRyb2Z1bmMpIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAvKiB0cF9nZXRhdHRybyAqLworICAgIChzZXRhdHRyb2Z1bmMpIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIChQeUJ1ZmZlclByb2NzICopIDAsICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBjdHhtYW5hZ2VyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworfTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcgRGVjaW1hbCBPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfTmV3KFB5VHlwZU9iamVjdCAqdHlwZSkKK3sKKyAgICBQeURlY09iamVjdCAqZGVjOworCisgICAgaWYgKHR5cGUgPT0gJlB5RGVjX1R5cGUpIHsKKyAgICAgICAgZGVjID0gUHlPYmplY3RfTmV3KFB5RGVjT2JqZWN0LCAmUHlEZWNfVHlwZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkZWMgPSAoUHlEZWNPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICB9CisgICAgaWYgKGRlYyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGRlYy0+aGFzaCA9IC0xOworCisgICAgTVBEKGRlYyktPmZsYWdzID0gTVBEX1NUQVRJQ3xNUERfU1RBVElDX0RBVEE7CisgICAgTVBEKGRlYyktPmV4cCA9IDA7CisgICAgTVBEKGRlYyktPmRpZ2l0cyA9IDA7CisgICAgTVBEKGRlYyktPmxlbiA9IDA7CisgICAgTVBEKGRlYyktPmFsbG9jID0gX1B5X0RFQ19NSU5BTExPQzsKKyAgICBNUEQoZGVjKS0+ZGF0YSA9IGRlYy0+ZGF0YTsKKworICAgIHJldHVybiAoUHlPYmplY3QgKilkZWM7Cit9CisjZGVmaW5lIGRlY19hbGxvYygpIFB5RGVjVHlwZV9OZXcoJlB5RGVjX1R5cGUpCisKK3N0YXRpYyB2b2lkCitkZWNfZGVhbGxvYyhQeU9iamVjdCAqZGVjKQoreworICAgIG1wZF9kZWwoTVBEKGRlYykpOworICAgIFB5X1RZUEUoZGVjKS0+dHBfZnJlZShkZWMpOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnNpb25zIHRvIERlY2ltYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK2lzX3NwYWNlKGVudW0gUHlVbmljb2RlX0tpbmQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBwb3MpCit7CisgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHBvcyk7CisgICAgcmV0dXJuIFB5X1VOSUNPREVfSVNTUEFDRShjaCk7Cit9CisKKy8qIFJldHVybiB0aGUgQVNDSUkgcmVwcmVzZW50YXRpb24gb2YgYSBudW1lcmljIFVuaWNvZGUgc3RyaW5nLiBUaGUgbnVtZXJpYworICAgc3RyaW5nIG1heSBjb250YWluIGFzY2lpIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIFsxLCAxMjddLCBhbnkgVW5pY29kZQorICAgc3BhY2UgYW5kIGFueSB1bmljb2RlIGRpZ2l0LiBJZiBzdHJpcF93cyBpcyB0cnVlLCBsZWFkaW5nIGFuZCB0cmFpbGluZworICAgd2hpdGVzcGFjZSBpcyBzdHJpcHBlZC4KKworICAgUmV0dXJuIE5VTEwgaWYgbWFsbG9jIGZhaWxzIGFuZCBhbiBlbXB0eSBzdHJpbmcgaWYgaW52YWxpZCBjaGFyYWN0ZXJzCisgICBhcmUgZm91bmQuICovCitzdGF0aWMgY2hhciAqCitudW1lcmljX2FzX2FzY2lpKGNvbnN0IFB5T2JqZWN0ICp1LCBpbnQgc3RyaXBfd3MpCit7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfVUNTNCBjaDsKKyAgICBjaGFyICpyZXMsICpjcDsKKyAgICBQeV9zc2l6ZV90IGosIGxlbjsKKyAgICBpbnQgZDsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodSkgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1KTsKKyAgICBsZW4gPSAgUHlVbmljb2RlX0dFVF9MRU5HVEgodSk7CisKKyAgICBjcCA9IHJlcyA9IFB5TWVtX01hbGxvYyhsZW4rMSk7CisgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGogPSAwOworICAgIGlmIChzdHJpcF93cykgeworICAgICAgICB3aGlsZSAobGVuID4gMCAmJiBpc19zcGFjZShraW5kLCBkYXRhLCBsZW4tMSkpIHsKKyAgICAgICAgICAgIGxlbi0tOworICAgICAgICB9CisgICAgICAgIHdoaWxlIChqIDwgbGVuICYmIGlzX3NwYWNlKGtpbmQsIGRhdGEsIGopKSB7CisgICAgICAgICAgICBqKys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKDsgaiA8IGxlbjsgaisrKSB7CisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaik7CisgICAgICAgIGlmICgwIDwgY2ggJiYgY2ggPD0gMTI3KSB7CisgICAgICAgICAgICAqY3ArKyA9IGNoOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNTUEFDRShjaCkpIHsKKyAgICAgICAgICAgICpjcCsrID0gJyAnOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgZCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKGNoKTsKKyAgICAgICAgaWYgKGQgPCAwKSB7CisgICAgICAgICAgICAvKiBlbXB0eSBzdHJpbmcgdHJpZ2dlcnMgQ29udmVyc2lvblN5bnRheCAqLworICAgICAgICAgICAgKnJlcyA9ICdcMCc7CisgICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAgICB9CisgICAgICAgICpjcCsrID0gJzAnICsgZDsKKyAgICB9CisgICAgKmNwID0gJ1wwJzsKKyAgICByZXR1cm4gcmVzOworfQorCisvKiBSZXR1cm4gYSBuZXcgUHlEZWNPYmplY3Qgb3IgYSBzdWJ0eXBlIGZyb20gYSBDIHN0cmluZy4gVXNlIHRoZSBjb250ZXh0CisgICBkdXJpbmcgY29udmVyc2lvbi4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbUNTdHJpbmcoUHlUeXBlT2JqZWN0ICp0eXBlLCBjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIGRlYyA9IFB5RGVjVHlwZV9OZXcodHlwZSk7CisgICAgaWYgKGRlYyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xc2V0X3N0cmluZyhNUEQoZGVjKSwgcywgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGRlYzsKK30KKworLyogUmV0dXJuIGEgbmV3IFB5RGVjT2JqZWN0IG9yIGEgc3VidHlwZSBmcm9tIGEgQyBzdHJpbmcuIEF0dGVtcHQgZXhhY3QKKyAgIGNvbnZlcnNpb24uIElmIHRoZSBvcGVyYW5kIGNhbm5vdCBiZSBjb252ZXJ0ZWQgZXhhY3RseSwgc2V0CisgICBJbnZhbGlkT3BlcmF0aW9uLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tQ1N0cmluZ0V4YWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBtcGRfY29udGV4dF90IG1heGN0eDsKKworICAgIGRlYyA9IFB5RGVjVHlwZV9OZXcodHlwZSk7CisgICAgaWYgKGRlYyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjdHgpOworCisgICAgbXBkX3FzZXRfc3RyaW5nKE1QRChkZWMpLCBzLCAmbWF4Y3R4LCAmc3RhdHVzKTsKKyAgICBpZiAoc3RhdHVzICYgKE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkfE1QRF9DbGFtcGVkKSkgeworICAgICAgICAvKiB3ZSB3YW50IGV4YWN0IHJlc3VsdHMgKi8KKyAgICAgICAgbXBkX3NldGVycm9yKE1QRChkZWMpLCBNUERfSW52YWxpZF9vcGVyYXRpb24sICZzdGF0dXMpOworICAgIH0KKyAgICBzdGF0dXMgJj0gTVBEX0Vycm9yczsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gZGVjOworfQorCisvKiBSZXR1cm4gYSBuZXcgUHlEZWNPYmplY3Qgb3IgYSBzdWJ0eXBlIGZyb20gYSBQeVVuaWNvZGVPYmplY3QuICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX0Zyb21Vbmljb2RlKFB5VHlwZU9iamVjdCAqdHlwZSwgY29uc3QgUHlPYmplY3QgKnUsCisgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICBjaGFyICpzOworCisgICAgcyA9IG51bWVyaWNfYXNfYXNjaWkodSwgMCk7CisgICAgaWYgKHMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBkZWMgPSBQeURlY1R5cGVfRnJvbUNTdHJpbmcodHlwZSwgcywgY29udGV4dCk7CisgICAgUHlNZW1fRnJlZShzKTsKKyAgICByZXR1cm4gZGVjOworfQorCisvKiBSZXR1cm4gYSBuZXcgUHlEZWNPYmplY3Qgb3IgYSBzdWJ0eXBlIGZyb20gYSBQeVVuaWNvZGVPYmplY3QuIEF0dGVtcHQgZXhhY3QKKyAqIGNvbnZlcnNpb24uIElmIHRoZSBjb252ZXJzaW9uIGlzIG5vdCBleGFjdCwgZmFpbCB3aXRoIEludmFsaWRPcGVyYXRpb24uCisgKiBBbGxvdyBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIGluIHRoZSBpbnB1dCBvcGVyYW5kLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tVW5pY29kZUV4YWN0V1MoUHlUeXBlT2JqZWN0ICp0eXBlLCBjb25zdCBQeU9iamVjdCAqdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICBjaGFyICpzOworCisgICAgcyA9IG51bWVyaWNfYXNfYXNjaWkodSwgMSk7CisgICAgaWYgKHMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBkZWMgPSBQeURlY1R5cGVfRnJvbUNTdHJpbmdFeGFjdCh0eXBlLCBzLCBjb250ZXh0KTsKKyAgICBQeU1lbV9GcmVlKHMpOworICAgIHJldHVybiBkZWM7Cit9CisKKy8qIFNldCBQeURlY09iamVjdCBmcm9tIHRyaXBsZSB3aXRob3V0IGFueSBlcnJvciBjaGVja2luZy4gKi8KK1B5X0xPQ0FMX0lOTElORSh2b2lkKQorX2RlY19zZXR0cmlwbGUoUHlPYmplY3QgKmRlYywgdWludDhfdCBzaWduLCB1aW50MzJfdCB2LCBtcGRfc3NpemVfdCBleHApCit7CisKKyNpZmRlZiBDT05GSUdfNjQKKyAgICBNUEQoZGVjKS0+ZGF0YVswXSA9IHY7CisgICAgTVBEKGRlYyktPmxlbiA9IDE7CisjZWxzZQorICAgIHVpbnQzMl90IHEsIHI7CisgICAgcSA9IHYgLyBNUERfUkFESVg7CisgICAgciA9IHYgLSBxICogTVBEX1JBRElYOworICAgIE1QRChkZWMpLT5kYXRhWzFdID0gcTsKKyAgICBNUEQoZGVjKS0+ZGF0YVswXSA9IHI7CisgICAgTVBEKGRlYyktPmxlbiA9IHEgPyAyIDogMTsKKyNlbmRpZgorICAgIG1wZF9zZXRfZmxhZ3MoTVBEKGRlYyksIHNpZ24pOworICAgIE1QRChkZWMpLT5leHAgPSBleHA7CisgICAgbXBkX3NldGRpZ2l0cyhNUEQoZGVjKSk7Cit9CisKKy8qIFJldHVybiBhIG5ldyBQeURlY09iamVjdCBmcm9tIGFuIG1wZF9zc2l6ZV90LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tU3NpemUoUHlUeXBlT2JqZWN0ICp0eXBlLCBtcGRfc3NpemVfdCB2LCBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqZGVjOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBkZWMgPSBQeURlY1R5cGVfTmV3KHR5cGUpOworICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfcXNldF9zc2l6ZShNUEQoZGVjKSwgdiwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGRlYzsKK30KKworLyogUmV0dXJuIGEgbmV3IFB5RGVjT2JqZWN0IGZyb20gYW4gbXBkX3NzaXplX3QuIENvbnZlcnNpb24gaXMgZXhhY3QuICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX0Zyb21Tc2l6ZUV4YWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgbXBkX3NzaXplX3QgdiwgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIG1wZF9jb250ZXh0X3QgbWF4Y3R4OworCisgICAgZGVjID0gUHlEZWNUeXBlX05ldyh0eXBlKTsKKyAgICBpZiAoZGVjID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX21heGNvbnRleHQoJm1heGN0eCk7CisKKyAgICBtcGRfcXNldF9zc2l6ZShNUEQoZGVjKSwgdiwgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYoZGVjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBkZWM7Cit9CisKKy8qIENvbnZlcnQgZnJvbSBhIFB5TG9uZ09iamVjdC4gVGhlIGNvbnRleHQgaXMgbm90IG1vZGlmaWVkOyBmbGFncyBzZXQKKyAgIGR1cmluZyBjb252ZXJzaW9uIGFyZSBhY2N1bXVsYXRlZCBpbiB0aGUgc3RhdHVzIHBhcmFtZXRlci4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfZnJvbV9sb25nKFB5VHlwZU9iamVjdCAqdHlwZSwgY29uc3QgUHlPYmplY3QgKnYsCisgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBQeU9iamVjdCAqZGVjOworICAgIFB5TG9uZ09iamVjdCAqbCA9IChQeUxvbmdPYmplY3QgKil2OworICAgIFB5X3NzaXplX3Qgb2Jfc2l6ZTsKKyAgICBzaXplX3QgbGVuOworICAgIHVpbnQ4X3Qgc2lnbjsKKworICAgIGRlYyA9IFB5RGVjVHlwZV9OZXcodHlwZSk7CisgICAgaWYgKGRlYyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG9iX3NpemUgPSBQeV9TSVpFKGwpOworICAgIGlmIChvYl9zaXplID09IDApIHsKKyAgICAgICAgX2RlY19zZXR0cmlwbGUoZGVjLCBNUERfUE9TLCAwLCAwKTsKKyAgICAgICAgcmV0dXJuIGRlYzsKKyAgICB9CisKKyAgICBpZiAob2Jfc2l6ZSA8IDApIHsKKyAgICAgICAgbGVuID0gLW9iX3NpemU7CisgICAgICAgIHNpZ24gPSBNUERfTkVHOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbGVuID0gb2Jfc2l6ZTsKKyAgICAgICAgc2lnbiA9IE1QRF9QT1M7CisgICAgfQorCisgICAgaWYgKGxlbiA9PSAxKSB7CisgICAgICAgIF9kZWNfc2V0dHJpcGxlKGRlYywgc2lnbiwgKmwtPm9iX2RpZ2l0LCAwKTsKKyAgICAgICAgbXBkX3FmaW5hbGl6ZShNUEQoZGVjKSwgY3R4LCBzdGF0dXMpOworICAgICAgICByZXR1cm4gZGVjOworICAgIH0KKworI2lmIFBZTE9OR19CSVRTX0lOX0RJR0lUID09IDMwCisgICAgbXBkX3FpbXBvcnRfdTMyKE1QRChkZWMpLCBsLT5vYl9kaWdpdCwgbGVuLCBzaWduLCBQeUxvbmdfQkFTRSwKKyAgICAgICAgICAgICAgICAgICAgY3R4LCBzdGF0dXMpOworI2VsaWYgUFlMT05HX0JJVFNfSU5fRElHSVQgPT0gMTUKKyAgICBtcGRfcWltcG9ydF91MTYoTVBEKGRlYyksIGwtPm9iX2RpZ2l0LCBsZW4sIHNpZ24sIFB5TG9uZ19CQVNFLAorICAgICAgICAgICAgICAgICAgICBjdHgsIHN0YXR1cyk7CisjZWxzZQorICAjZXJyb3IgIlBZTE9OR19CSVRTX0lOX0RJR0lUIHNob3VsZCBiZSAxNSBvciAzMCIKKyNlbmRpZgorCisgICAgcmV0dXJuIGRlYzsKK30KKworLyogUmV0dXJuIGEgbmV3IFB5RGVjT2JqZWN0IGZyb20gYSBQeUxvbmdPYmplY3QuIFVzZSB0aGUgY29udGV4dCBmb3IKKyAgIGNvbnZlcnNpb24uICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX0Zyb21Mb25nKFB5VHlwZU9iamVjdCAqdHlwZSwgY29uc3QgUHlPYmplY3QgKnB5bG9uZywKKyAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqZGVjOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBkZWMgPSBkZWNfZnJvbV9sb25nKHR5cGUsIHB5bG9uZywgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYoZGVjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIGRlYzsKK30KKworLyogUmV0dXJuIGEgbmV3IFB5RGVjT2JqZWN0IGZyb20gYSBQeUxvbmdPYmplY3QuIFVzZSBhIG1heGltdW0gY29udGV4dAorICAgZm9yIGNvbnZlcnNpb24uIElmIHRoZSBjb252ZXJzaW9uIGlzIG5vdCBleGFjdCwgc2V0IEludmFsaWRPcGVyYXRpb24uICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX0Zyb21Mb25nRXhhY3QoUHlUeXBlT2JqZWN0ICp0eXBlLCBjb25zdCBQeU9iamVjdCAqcHlsb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIG1wZF9jb250ZXh0X3QgbWF4Y3R4OworCisgICAgbXBkX21heGNvbnRleHQoJm1heGN0eCk7CisgICAgZGVjID0gZGVjX2Zyb21fbG9uZyh0eXBlLCBweWxvbmcsICZtYXhjdHgsICZzdGF0dXMpOworICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoc3RhdHVzICYgKE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkfE1QRF9DbGFtcGVkKSkgeworICAgICAgICAvKiB3ZSB3YW50IGV4YWN0IHJlc3VsdHMgKi8KKyAgICAgICAgbXBkX3NldGVycm9yKE1QRChkZWMpLCBNUERfSW52YWxpZF9vcGVyYXRpb24sICZzdGF0dXMpOworICAgIH0KKyAgICBzdGF0dXMgJj0gTVBEX0Vycm9yczsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gZGVjOworfQorCisvKiBSZXR1cm4gYSBQeURlY09iamVjdCBvciBhIHN1YnR5cGUgZnJvbSBhIFB5RmxvYXRPYmplY3QuCisgICBDb252ZXJzaW9uIGlzIGV4YWN0LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tRmxvYXRFeGFjdChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2LAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWMsICp0bXA7CisgICAgUHlPYmplY3QgKm4sICpkLCAqbl9kOworICAgIG1wZF9zc2l6ZV90IGs7CisgICAgZG91YmxlIHg7CisgICAgaW50IHNpZ247CisgICAgbXBkX3QgKmQxLCAqZDI7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBtcGRfY29udGV4dF90IG1heGN0eDsKKworCisgICAgYXNzZXJ0KFB5VHlwZV9Jc1N1YnR5cGUodHlwZSwgJlB5RGVjX1R5cGUpKTsKKworICAgIGlmIChQeUxvbmdfQ2hlY2sodikpIHsKKyAgICAgICAgcmV0dXJuIFB5RGVjVHlwZV9Gcm9tTG9uZ0V4YWN0KHR5cGUsIHYsIGNvbnRleHQpOworICAgIH0KKyAgICBpZiAoIVB5RmxvYXRfQ2hlY2sodikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJhcmd1bWVudCBtdXN0IGJlIGludCBvZiBmbG9hdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICB4ID0gUHlGbG9hdF9Bc0RvdWJsZSh2KTsKKyAgICBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHNpZ24gPSAoY29weXNpZ24oMS4wLCB4KSA9PSAxLjApID8gMCA6IDE7CisKKyAgICBpZiAoUHlfSVNfTkFOKHgpIHx8IFB5X0lTX0lORklOSVRZKHgpKSB7CisgICAgICAgIGRlYyA9IFB5RGVjVHlwZV9OZXcodHlwZSk7CisgICAgICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5X0lTX05BTih4KSkgeworICAgICAgICAgICAgLyogZGVjaW1hbC5weSBjYWxscyByZXByKGZsb2F0KCstbmFuKSksCisgICAgICAgICAgICAgKiB3aGljaCBhbHdheXMgZ2l2ZXMgYSBwb3NpdGl2ZSByZXN1bHQuICovCisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChNUEQoZGVjKSwgTVBEX1BPUywgTVBEX05BTik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChNUEQoZGVjKSwgc2lnbiwgTVBEX0lORik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRlYzsKKyAgICB9CisKKyAgICAvKiBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgZmxvYXQgKi8KKyAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHYsICJfX2Fic19fIiwgTlVMTCk7CisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIGZsb2F0IGFzIGludGVnZXIgcmF0aW86IG51bWVyYXRvci9kZW5vbWluYXRvciAqLworICAgIG5fZCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodG1wLCAiYXNfaW50ZWdlcl9yYXRpbyIsIE5VTEwpOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIGlmIChuX2QgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbiA9IFB5VHVwbGVfR0VUX0lURU0obl9kLCAwKTsKKyAgICBkID0gUHlUdXBsZV9HRVRfSVRFTShuX2QsIDEpOworCisgICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChkLCAiYml0X2xlbmd0aCIsIE5VTEwpOworICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYobl9kKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGsgPSBQeUxvbmdfQXNTc2l6ZV90KHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgaWYgKGsgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9ERUNSRUYobl9kKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGstLTsKKworICAgIGRlYyA9IFB5RGVjVHlwZV9Gcm9tTG9uZ0V4YWN0KHR5cGUsIG4sIGNvbnRleHQpOworICAgIFB5X0RFQ1JFRihuX2QpOworICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBkMSA9IG1wZF9xbmV3KCk7CisgICAgaWYgKGQxID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlYyk7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBkMiA9IG1wZF9xbmV3KCk7CisgICAgaWYgKGQyID09IE5VTEwpIHsKKyAgICAgICAgbXBkX2RlbChkMSk7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y3R4KTsKKyAgICBtcGRfcXNldF91aW50KGQxLCA1LCAmbWF4Y3R4LCAmc3RhdHVzKTsKKyAgICBtcGRfcXNldF9zc2l6ZShkMiwgaywgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgbXBkX3Fwb3coZDEsIGQxLCBkMiwgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBtcGRfZGVsKGQxKTsKKyAgICAgICAgbXBkX2RlbChkMik7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiByZXN1bHQgPSBuICogNSoqayAqLworICAgIG1wZF9xbXVsKE1QRChkZWMpLCBNUEQoZGVjKSwgZDEsICZtYXhjdHgsICZzdGF0dXMpOworICAgIG1wZF9kZWwoZDEpOworICAgIG1wZF9kZWwoZDIpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlYyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAvKiByZXN1bHQgPSArLSBuICogNSoqayAqIDEwKiotayAqLworICAgIG1wZF9zZXRfc2lnbihNUEQoZGVjKSwgc2lnbik7CisgICAgTVBEKGRlYyktPmV4cCA9IC1rOworCisgICAgcmV0dXJuIGRlYzsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tRmxvYXQoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdiwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworCisgICAgZGVjID0gUHlEZWNUeXBlX0Zyb21GbG9hdEV4YWN0KHR5cGUsIHYsIGNvbnRleHQpOworICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfcWZpbmFsaXplKE1QRChkZWMpLCBDVFgoY29udGV4dCksICZzdGF0dXMpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlYyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBkZWM7Cit9CisKKy8qIFJldHVybiBhIG5ldyBQeURlY09iamVjdCBvciBhIHN1YnR5cGUgZnJvbSBhIERlY2ltYWwuICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX0Zyb21EZWNpbWFsRXhhY3QoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdiwgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworCisgICAgaWYgKHR5cGUgPT0gJlB5RGVjX1R5cGUgJiYgUHlEZWNfQ2hlY2tFeGFjdCh2KSkgeworICAgICAgICBQeV9JTkNSRUYodik7CisgICAgICAgIHJldHVybiB2OworICAgIH0KKworICAgIGRlYyA9IFB5RGVjVHlwZV9OZXcodHlwZSk7CisgICAgaWYgKGRlYyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xY29weShNUEQoZGVjKSwgTVBEKHYpLCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gZGVjOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorc2VxdWVuY2VfYXNfdHVwbGUoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICpleCwgY29uc3QgY2hhciAqbWVzZykKK3sKKyAgICBpZiAoUHlUdXBsZV9DaGVjayh2KSkgeworICAgICAgICBQeV9JTkNSRUYodik7CisgICAgICAgIHJldHVybiB2OworICAgIH0KKyAgICBpZiAoUHlMaXN0X0NoZWNrKHYpKSB7CisgICAgICAgIHJldHVybiBQeUxpc3RfQXNUdXBsZSh2KTsKKyAgICB9CisKKyAgICBQeUVycl9TZXRTdHJpbmcoZXgsIG1lc2cpOworICAgIHJldHVybiBOVUxMOworfQorCisvKiBSZXR1cm4gYSBuZXcgQyBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBEZWNpbWFsVHVwbGUuICovCitzdGF0aWMgY2hhciAqCitkZWN0dXBsZV9hc19zdHIoUHlPYmplY3QgKmRlY3R1cGxlKQoreworICAgIFB5T2JqZWN0ICpkaWdpdHMgPSBOVUxMLCAqdG1wOworICAgIGNoYXIgKmRlY3N0cmluZyA9IE5VTEw7CisgICAgY2hhciBzaWduX3NwZWNpYWxbNl07CisgICAgY2hhciAqY3A7CisgICAgbG9uZyBzaWduLCBsOworICAgIG1wZF9zc2l6ZV90IGV4cCA9IDA7CisgICAgUHlfc3NpemVfdCBpLCBtZW0sIHRzaXplOworICAgIGludCBpc19pbmZpbml0ZSA9IDA7CisgICAgaW50IG47CisKKyAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhkZWN0dXBsZSkpOworCisgICAgaWYgKFB5VHVwbGVfU2l6ZShkZWN0dXBsZSkgIT0gMykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJhcmd1bWVudCBtdXN0IGJlIGEgc2VxdWVuY2Ugb2YgbGVuZ3RoIDMiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICAvKiBzaWduICovCisgICAgdG1wID0gUHlUdXBsZV9HRVRfSVRFTShkZWN0dXBsZSwgMCk7CisgICAgaWYgKCFQeUxvbmdfQ2hlY2sodG1wKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJzaWduIG11c3QgYmUgYW4gaW50ZWdlciB3aXRoIHRoZSB2YWx1ZSAwIG9yIDEiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgc2lnbiA9IFB5TG9uZ19Bc0xvbmcodG1wKTsKKyAgICBpZiAoc2lnbiA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmIChzaWduICE9IDAgJiYgc2lnbiAhPSAxKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgInNpZ24gbXVzdCBiZSBhbiBpbnRlZ2VyIHdpdGggdGhlIHZhbHVlIDAgb3IgMSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzaWduX3NwZWNpYWxbMF0gPSBzaWduID8gJy0nIDogJysnOworICAgIHNpZ25fc3BlY2lhbFsxXSA9ICdcMCc7CisKKyAgICAvKiBleHBvbmVudCBvciBlbmNvZGluZyBmb3IgYSBzcGVjaWFsIG51bWJlciAqLworICAgIHRtcCA9IFB5VHVwbGVfR0VUX0lURU0oZGVjdHVwbGUsIDIpOworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodG1wKSkgeworICAgICAgICAvKiBzcGVjaWFsICovCisgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyh0bXAsICJGIikgPT0gMCkgeworICAgICAgICAgICAgc3RyY2F0KHNpZ25fc3BlY2lhbCwgIkluZiIpOworICAgICAgICAgICAgaXNfaW5maW5pdGUgPSAxOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKHRtcCwgIm4iKSA9PSAwKSB7CisgICAgICAgICAgICBzdHJjYXQoc2lnbl9zcGVjaWFsLCAiTmFOIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcodG1wLCAiTiIpID09IDApIHsKKyAgICAgICAgICAgIHN0cmNhdChzaWduX3NwZWNpYWwsICJzTmFOIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAic3RyaW5nIGFyZ3VtZW50IGluIHRoZSB0aGlyZCBwb3NpdGlvbiAiCisgICAgICAgICAgICAgICAgIm11c3QgYmUgJ0YnLCAnbicgb3IgJ04nIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBleHBvbmVudCAqLworICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh0bXApKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiZXhwb25lbnQgbXVzdCBiZSBhbiBpbnRlZ2VyIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGV4cCA9IFB5TG9uZ19Bc1NzaXplX3QodG1wKTsKKyAgICAgICAgaWYgKGV4cCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgLyogY29lZmZpY2llbnQgKi8KKyAgICBkaWdpdHMgPSBzZXF1ZW5jZV9hc190dXBsZShQeVR1cGxlX0dFVF9JVEVNKGRlY3R1cGxlLCAxKSwgUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29lZmZpY2llbnQgbXVzdCBiZSBhIHR1cGxlIG9mIGRpZ2l0cyIpOworICAgIGlmIChkaWdpdHMgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIHRzaXplID0gUHlUdXBsZV9TaXplKGRpZ2l0cyk7CisgICAgLyogW3NpZ25dW2NvZWZmZGlnaXRzKzFdW0VdWy1dW2V4cGRpZ2l0cysxXVsnXDAnXSAqLworICAgIG1lbSA9IDEgKyB0c2l6ZSArIDMgKyBNUERfRVhQRElHSVRTICsgMjsKKyAgICBjcCA9IGRlY3N0cmluZyA9IFB5TWVtX01hbGxvYyhtZW0pOworICAgIGlmIChkZWNzdHJpbmcgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIG4gPSBzbnByaW50ZihjcCwgbWVtLCAiJXMiLCBzaWduX3NwZWNpYWwpOworICAgIGlmIChuIDwgMCB8fCBuID49IG1lbSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgImludGVybmFsIGVycm9yIGluIGRlY19zZXF1ZW5jZV9hc19zdHIiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgY3AgKz0gbjsKKworICAgIGlmICh0c2l6ZSA9PSAwICYmIHNpZ25fc3BlY2lhbFsxXSA9PSAnXDAnKSB7CisgICAgICAgIC8qIGVtcHR5IHR1cGxlOiB6ZXJvIGNvZWZmaWNpZW50LCBleGNlcHQgZm9yIHNwZWNpYWwgbnVtYmVycyAqLworICAgICAgICAqY3ArKyA9ICcwJzsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IHRzaXplOyBpKyspIHsKKyAgICAgICAgdG1wID0gUHlUdXBsZV9HRVRfSVRFTShkaWdpdHMsIGkpOworICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh0bXApKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiY29lZmZpY2llbnQgbXVzdCBiZSBhIHR1cGxlIG9mIGRpZ2l0cyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBsID0gUHlMb25nX0FzTG9uZyh0bXApOworICAgICAgICBpZiAobCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGlmIChsIDwgMCB8fCBsID4gOSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImNvZWZmaWNpZW50IG11c3QgYmUgYSB0dXBsZSBvZiBkaWdpdHMiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzX2luZmluaXRlKSB7CisgICAgICAgICAgICAvKiBhY2NlcHQgYnV0IGlnbm9yZSBhbnkgd2VsbC1mb3JtZWQgY29lZmZpY2llbnQgZm9yIGNvbXBhdGliaWxpdHkKKyAgICAgICAgICAgICAgIHdpdGggZGVjaW1hbC5weSAqLworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgKmNwKysgPSAoY2hhcilsICsgJzAnOworICAgIH0KKyAgICAqY3AgPSAnXDAnOworCisgICAgaWYgKHNpZ25fc3BlY2lhbFsxXSA9PSAnXDAnKSB7CisgICAgICAgIC8qIG5vdCBhIHNwZWNpYWwgbnVtYmVyICovCisgICAgICAgICpjcCsrID0gJ0UnOworICAgICAgICBuID0gc25wcmludGYoY3AsIE1QRF9FWFBESUdJVFMrMiwgIiUiIFBSSV9tcGRfc3NpemVfdCwgZXhwKTsKKyAgICAgICAgaWYgKG4gPCAwIHx8IG4gPj0gTVBEX0VYUERJR0lUUysyKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICJpbnRlcm5hbCBlcnJvciBpbiBkZWNfc2VxdWVuY2VfYXNfc3RyIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgUHlfWERFQ1JFRihkaWdpdHMpOworICAgIHJldHVybiBkZWNzdHJpbmc7CisKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihkaWdpdHMpOworICAgIGlmIChkZWNzdHJpbmcpIFB5TWVtX0ZyZWUoZGVjc3RyaW5nKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyogQ3VycmVudGx5IGFjY2VwdHMgdHVwbGVzIGFuZCBsaXN0cy4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbVNlcXVlbmNlKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnYsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWN0dXBsZTsKKyAgICBQeU9iamVjdCAqZGVjOworICAgIGNoYXIgKnM7CisKKyAgICBkZWN0dXBsZSA9IHNlcXVlbmNlX2FzX3R1cGxlKHYsIFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBtdXN0IGJlIGEgdHVwbGUgb3IgbGlzdCIpOworICAgIGlmIChkZWN0dXBsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHMgPSBkZWN0dXBsZV9hc19zdHIoZGVjdHVwbGUpOworICAgIFB5X0RFQ1JFRihkZWN0dXBsZSk7CisgICAgaWYgKHMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBkZWMgPSBQeURlY1R5cGVfRnJvbUNTdHJpbmcodHlwZSwgcywgY29udGV4dCk7CisKKyAgICBQeU1lbV9GcmVlKHMpOworICAgIHJldHVybiBkZWM7Cit9CisKKy8qIEN1cnJlbnRseSBhY2NlcHRzIHR1cGxlcyBhbmQgbGlzdHMuICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX0Zyb21TZXF1ZW5jZUV4YWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlY3R1cGxlOworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgY2hhciAqczsKKworICAgIGRlY3R1cGxlID0gc2VxdWVuY2VfYXNfdHVwbGUodiwgUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBtdXN0IGJlIGEgdHVwbGUgb3IgbGlzdCIpOworICAgIGlmIChkZWN0dXBsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHMgPSBkZWN0dXBsZV9hc19zdHIoZGVjdHVwbGUpOworICAgIFB5X0RFQ1JFRihkZWN0dXBsZSk7CisgICAgaWYgKHMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBkZWMgPSBQeURlY1R5cGVfRnJvbUNTdHJpbmdFeGFjdCh0eXBlLCBzLCBjb250ZXh0KTsKKworICAgIFB5TWVtX0ZyZWUocyk7CisgICAgcmV0dXJuIGRlYzsKK30KKworI2RlZmluZSBQeURlY19Gcm9tQ1N0cmluZyhzdHIsIGNvbnRleHQpIFwKKyAgICAgICAgUHlEZWNUeXBlX0Zyb21DU3RyaW5nKCZQeURlY19UeXBlLCBzdHIsIGNvbnRleHQpCisjZGVmaW5lIFB5RGVjX0Zyb21DU3RyaW5nRXhhY3Qoc3RyLCBjb250ZXh0KSBcCisgICAgICAgIFB5RGVjVHlwZV9Gcm9tQ1N0cmluZ0V4YWN0KCZQeURlY19UeXBlLCBzdHIsIGNvbnRleHQpCisKKyNkZWZpbmUgUHlEZWNfRnJvbVVuaWNvZGUodW5pY29kZSwgY29udGV4dCkgXAorICAgICAgICBQeURlY1R5cGVfRnJvbVVuaWNvZGUoJlB5RGVjX1R5cGUsIHVuaWNvZGUsIGNvbnRleHQpCisjZGVmaW5lIFB5RGVjX0Zyb21Vbmljb2RlRXhhY3QodW5pY29kZSwgY29udGV4dCkgXAorICAgICAgICBQeURlY1R5cGVfRnJvbVVuaWNvZGVFeGFjdCgmUHlEZWNfVHlwZSwgdW5pY29kZSwgY29udGV4dCkKKyNkZWZpbmUgUHlEZWNfRnJvbVVuaWNvZGVFeGFjdFdTKHVuaWNvZGUsIGNvbnRleHQpIFwKKyAgICAgICAgUHlEZWNUeXBlX0Zyb21Vbmljb2RlRXhhY3RXUygmUHlEZWNfVHlwZSwgdW5pY29kZSwgY29udGV4dCkKKworI2RlZmluZSBQeURlY19Gcm9tU3NpemUodiwgY29udGV4dCkgXAorICAgICAgICBQeURlY1R5cGVfRnJvbVNzaXplKCZQeURlY19UeXBlLCB2LCBjb250ZXh0KQorI2RlZmluZSBQeURlY19Gcm9tU3NpemVFeGFjdCh2LCBjb250ZXh0KSBcCisgICAgICAgIFB5RGVjVHlwZV9Gcm9tU3NpemVFeGFjdCgmUHlEZWNfVHlwZSwgdiwgY29udGV4dCkKKworI2RlZmluZSBQeURlY19Gcm9tTG9uZyhweWxvbmcsIGNvbnRleHQpIFwKKyAgICAgICAgUHlEZWNUeXBlX0Zyb21Mb25nKCZQeURlY19UeXBlLCBweWxvbmcsIGNvbnRleHQpCisjZGVmaW5lIFB5RGVjX0Zyb21Mb25nRXhhY3QocHlsb25nLCBjb250ZXh0KSBcCisgICAgICAgIFB5RGVjVHlwZV9Gcm9tTG9uZ0V4YWN0KCZQeURlY19UeXBlLCBweWxvbmcsIGNvbnRleHQpCisKKyNkZWZpbmUgUHlEZWNfRnJvbUZsb2F0KHB5ZmxvYXQsIGNvbnRleHQpIFwKKyAgICAgICAgUHlEZWNUeXBlX0Zyb21GbG9hdCgmUHlEZWNfVHlwZSwgcHlmbG9hdCwgY29udGV4dCkKKyNkZWZpbmUgUHlEZWNfRnJvbUZsb2F0RXhhY3QocHlmbG9hdCwgY29udGV4dCkgXAorICAgICAgICBQeURlY1R5cGVfRnJvbUZsb2F0RXhhY3QoJlB5RGVjX1R5cGUsIHB5ZmxvYXQsIGNvbnRleHQpCisKKyNkZWZpbmUgUHlEZWNfRnJvbVNlcXVlbmNlKHNlcXVlbmNlLCBjb250ZXh0KSBcCisgICAgICAgIFB5RGVjVHlwZV9Gcm9tU2VxdWVuY2UoJlB5RGVjX1R5cGUsIHNlcXVlbmNlLCBjb250ZXh0KQorI2RlZmluZSBQeURlY19Gcm9tU2VxdWVuY2VFeGFjdChzZXF1ZW5jZSwgY29udGV4dCkgXAorICAgICAgICBQeURlY1R5cGVfRnJvbVNlcXVlbmNlRXhhY3QoJlB5RGVjX1R5cGUsIHNlcXVlbmNlLCBjb250ZXh0KQorCisvKiBjbGFzcyBtZXRob2QgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfZnJvbV9mbG9hdChQeU9iamVjdCAqZGVjLCBQeU9iamVjdCAqcHlmbG9hdCkKK3sKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICByZXR1cm4gUHlEZWNUeXBlX0Zyb21GbG9hdEV4YWN0KChQeVR5cGVPYmplY3QgKilkZWMsIHB5ZmxvYXQsIGNvbnRleHQpOworfQorCisvKiBjcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0ICovCitzdGF0aWMgUHlPYmplY3QgKgorY3R4X2Zyb21fZmxvYXQoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICp2KQoreworICAgIHJldHVybiBQeURlY19Gcm9tRmxvYXQodiwgY29udGV4dCk7Cit9CisKKy8qIEFwcGx5IHRoZSBjb250ZXh0IHRvIHRoZSBpbnB1dCBvcGVyYW5kLiBSZXR1cm4gYSBuZXcgUHlEZWNPYmplY3QuICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX2FwcGx5KFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3Fjb3B5KE1QRChyZXN1bHQpLCBNUEQodiksICZzdGF0dXMpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xZmluYWxpemUoTVBEKHJlc3VsdCksIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogJ3YnIGNhbiBoYXZlIGFueSB0eXBlIGFjY2VwdGVkIGJ5IHRoZSBEZWNpbWFsIGNvbnN0cnVjdG9yLiBBdHRlbXB0CisgICBhbiBleGFjdCBjb252ZXJzaW9uLiBJZiB0aGUgcmVzdWx0IGRvZXMgbm90IG1lZXQgdGhlIHJlc3RyaWN0aW9ucworICAgZm9yIGFuIG1wZF90LCBmYWlsIHdpdGggSW52YWxpZE9wZXJhdGlvbi4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbU9iamVjdEV4YWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnYsIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIGlmICh2ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5RGVjVHlwZV9Gcm9tU3NpemVFeGFjdCh0eXBlLCAwLCBjb250ZXh0KTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlEZWNfQ2hlY2sodikpIHsKKyAgICAgICAgcmV0dXJuIFB5RGVjVHlwZV9Gcm9tRGVjaW1hbEV4YWN0KHR5cGUsIHYsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sodikpIHsKKyAgICAgICAgcmV0dXJuIFB5RGVjVHlwZV9Gcm9tVW5pY29kZUV4YWN0V1ModHlwZSwgdiwgY29udGV4dCk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjayh2KSkgeworICAgICAgICByZXR1cm4gUHlEZWNUeXBlX0Zyb21Mb25nRXhhY3QodHlwZSwgdiwgY29udGV4dCk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5VHVwbGVfQ2hlY2sodikgfHwgUHlMaXN0X0NoZWNrKHYpKSB7CisgICAgICAgIHJldHVybiBQeURlY1R5cGVfRnJvbVNlcXVlbmNlRXhhY3QodHlwZSwgdiwgY29udGV4dCk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5RmxvYXRfQ2hlY2sodikpIHsKKyAgICAgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgTVBEX0Zsb2F0X29wZXJhdGlvbikpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJldHVybiBQeURlY1R5cGVfRnJvbUZsb2F0RXhhY3QodHlwZSwgdiwgY29udGV4dCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImNvbnZlcnNpb24gZnJvbSAlcyB0byBEZWNpbWFsIGlzIG5vdCBzdXBwb3J0ZWQiLAorICAgICAgICAgICAgdi0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworLyogVGhlIGNvbnRleHQgaXMgdXNlZCBkdXJpbmcgY29udmVyc2lvbi4gVGhpcyBmdW5jdGlvbiBpcyB0aGUKKyAgIGVxdWl2YWxlbnQgb2YgY29udGV4dC5jcmVhdGVfZGVjaW1hbCgpLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjX0Zyb21PYmplY3QoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIGlmICh2ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5RGVjX0Zyb21Tc2l6ZSgwLCBjb250ZXh0KTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlEZWNfQ2hlY2sodikpIHsKKyAgICAgICAgbXBkX2NvbnRleHRfdCAqY3R4ID0gQ1RYKGNvbnRleHQpOworICAgICAgICBpZiAobXBkX2lzbmFuKE1QRCh2KSkgJiYKKyAgICAgICAgICAgIE1QRCh2KS0+ZGlnaXRzID4gY3R4LT5wcmVjIC0gY3R4LT5jbGFtcCkgeworICAgICAgICAgICAgLyogU3BlY2lhbCBjYXNlOiB0b28gbWFueSBOYU4gcGF5bG9hZCBkaWdpdHMgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgICAgICAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBNUERfQ29udmVyc2lvbl9zeW50YXgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwoTVBEKHJlc3VsdCksIE1QRF9QT1MsIE1QRF9OQU4pOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZGVjX2FwcGx5KHYsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sodikpIHsKKyAgICAgICAgcmV0dXJuIFB5RGVjX0Zyb21Vbmljb2RlKHYsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2sodikpIHsKKyAgICAgICAgcmV0dXJuIFB5RGVjX0Zyb21Mb25nKHYsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKHYpIHx8IFB5TGlzdF9DaGVjayh2KSkgeworICAgICAgICByZXR1cm4gUHlEZWNfRnJvbVNlcXVlbmNlKHYsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIGlmIChQeUZsb2F0X0NoZWNrKHYpKSB7CisgICAgICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIE1QRF9GbG9hdF9vcGVyYXRpb24pKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlEZWNfRnJvbUZsb2F0KHYsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJjb252ZXJzaW9uIGZyb20gJXMgdG8gRGVjaW1hbCBpcyBub3Qgc3VwcG9ydGVkIiwKKyAgICAgICAgICAgIHYtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsidmFsdWUiLCAiY29udGV4dCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICp2ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqY29udGV4dCA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9PIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmY29udGV4dCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIENPTlRFWFRfQ0hFQ0tfVkEoY29udGV4dCk7CisKKyAgICByZXR1cm4gUHlEZWNUeXBlX0Zyb21PYmplY3RFeGFjdCh0eXBlLCB2LCBjb250ZXh0KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9jcmVhdGVfZGVjaW1hbChQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnYgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyIsICZ2KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gUHlEZWNfRnJvbU9iamVjdCh2LCBjb250ZXh0KTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICBJbXBsaWNpdCBjb252ZXJzaW9ucyB0byBEZWNpbWFsICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFRyeSB0byBjb252ZXJ0IFB5T2JqZWN0IHYgdG8gYSBuZXcgUHlEZWNPYmplY3QgY29udi4gSWYgdGhlIGNvbnZlcnNpb24KKyAgIGZhaWxzLCBzZXQgY29udiB0byBOVUxMIChleGNlcHRpb24gaXMgc2V0KS4gSWYgdGhlIGNvbnZlcnNpb24gaXMgbm90CisgICBpbXBsZW1lbnRlZCwgc2V0IGNvbnYgdG8gUHlfTm90SW1wbGVtZW50ZWQuICovCisjZGVmaW5lIE5PVF9JTVBMIDAKKyNkZWZpbmUgVFlQRV9FUlIgMQorUHlfTE9DQUxfSU5MSU5FKGludCkKK2NvbnZlcnRfb3AoaW50IHR5cGVfZXJyLCBQeU9iamVjdCAqKmNvbnYsIFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqY29udGV4dCkKK3sKKworICAgIGlmIChQeURlY19DaGVjayh2KSkgeworICAgICAgICAqY29udiA9IHY7CisgICAgICAgIFB5X0lOQ1JFRih2KTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChQeUxvbmdfQ2hlY2sodikpIHsKKyAgICAgICAgKmNvbnYgPSBQeURlY19Gcm9tTG9uZ0V4YWN0KHYsIGNvbnRleHQpOworICAgICAgICBpZiAoKmNvbnYgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKHR5cGVfZXJyKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiY29udmVyc2lvbiBmcm9tICVzIHRvIERlY2ltYWwgaXMgbm90IHN1cHBvcnRlZCIsCisgICAgICAgICAgICB2LT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7CisgICAgICAgICpjb252ID0gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKiBSZXR1cm4gTm90SW1wbGVtZW50ZWQgZm9yIHVuc3VwcG9ydGVkIHR5cGVzLiAqLworI2RlZmluZSBDT05WRVJUX09QKGEsIHYsIGNvbnRleHQpIFwKKyAgICBpZiAoIWNvbnZlcnRfb3AoTk9UX0lNUEwsIGEsIHYsIGNvbnRleHQpKSB7IFwKKyAgICAgICAgcmV0dXJuICooYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKKyNkZWZpbmUgQ09OVkVSVF9CSU5PUChhLCBiLCB2LCB3LCBjb250ZXh0KSBcCisgICAgaWYgKCFjb252ZXJ0X29wKE5PVF9JTVBMLCBhLCB2LCBjb250ZXh0KSkgeyBcCisgICAgICAgIHJldHVybiAqKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFjb252ZXJ0X29wKE5PVF9JTVBMLCBiLCB3LCBjb250ZXh0KSkgeyBcCisgICAgICAgIFB5X0RFQ1JFRigqKGEpKTsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiAqKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIENPTlZFUlRfVEVSTk9QKGEsIGIsIGMsIHYsIHcsIHgsIGNvbnRleHQpIFwKKyAgICBpZiAoIWNvbnZlcnRfb3AoTk9UX0lNUEwsIGEsIHYsIGNvbnRleHQpKSB7ICAgXAorICAgICAgICByZXR1cm4gKihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIWNvbnZlcnRfb3AoTk9UX0lNUEwsIGIsIHcsIGNvbnRleHQpKSB7ICAgXAorICAgICAgICBQeV9ERUNSRUYoKihhKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiAqKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghY29udmVydF9vcChOT1RfSU1QTCwgYywgeCwgY29udGV4dCkpIHsgICBcCisgICAgICAgIFB5X0RFQ1JFRigqKGEpKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKCooYikpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gKihjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisvKiBSYWlzZSBUeXBlRXJyb3IgZm9yIHVuc3VwcG9ydGVkIHR5cGVzLiAqLworI2RlZmluZSBDT05WRVJUX09QX1JBSVNFKGEsIHYsIGNvbnRleHQpIFwKKyAgICBpZiAoIWNvbnZlcnRfb3AoVFlQRV9FUlIsIGEsIHYsIGNvbnRleHQpKSB7IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKKyNkZWZpbmUgQ09OVkVSVF9CSU5PUF9SQUlTRShhLCBiLCB2LCB3LCBjb250ZXh0KSBcCisgICAgaWYgKCFjb252ZXJ0X29wKFRZUEVfRVJSLCBhLCB2LCBjb250ZXh0KSkgeyAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFjb252ZXJ0X29wKFRZUEVfRVJSLCBiLCB3LCBjb250ZXh0KSkgeyAgXAorICAgICAgICBQeV9ERUNSRUYoKihhKSk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIENPTlZFUlRfVEVSTk9QX1JBSVNFKGEsIGIsIGMsIHYsIHcsIHgsIGNvbnRleHQpIFwKKyAgICBpZiAoIWNvbnZlcnRfb3AoVFlQRV9FUlIsIGEsIHYsIGNvbnRleHQpKSB7ICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIWNvbnZlcnRfb3AoVFlQRV9FUlIsIGIsIHcsIGNvbnRleHQpKSB7ICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoKihhKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghY29udmVydF9vcChUWVBFX0VSUiwgYywgeCwgY29udGV4dCkpIHsgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRigqKGEpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKCooYikpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgSW1wbGljaXQgY29udmVyc2lvbnMgdG8gRGVjaW1hbCBmb3IgY29tcGFyaXNvbiAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogQ29udmVydCByYXRpb25hbHMgZm9yIGNvbXBhcmlzb24gKi8KK3N0YXRpYyBQeU9iamVjdCAqUmF0aW9uYWwgPSBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK211bHRpcGx5X2J5X2Rlbm9taW5hdG9yKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqciwgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdG1wID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZGVub20gPSBOVUxMOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjdHg7CisgICAgbXBkX3NzaXplX3QgZXhwOworICAgIG1wZF90ICp2djsKKworICAgIC8qIHYgaXMgbm90IHNwZWNpYWwsIHIgaXMgYSByYXRpb25hbCAqLworICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcociwgImRlbm9taW5hdG9yIik7CisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBkZW5vbSA9IFB5RGVjX0Zyb21Mb25nRXhhY3QodG1wLCBjb250ZXh0KTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBpZiAoZGVub20gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICB2diA9IG1wZF9xbmNvcHkoTVBEKHYpKTsKKyAgICBpZiAodnYgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoZGVub20pOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZW5vbSk7CisgICAgICAgIG1wZF9kZWwodnYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y3R4KTsKKyAgICAvKiBQcmV2ZW50IE92ZXJmbG93IGluIHRoZSBmb2xsb3dpbmcgbXVsdGlwbGljYXRpb24uIFRoZSByZXN1bHQgb2YKKyAgICAgICB0aGUgbXVsdGlwbGljYXRpb24gaXMgb25seSB1c2VkIGluIG1wZF9xY21wLCB3aGljaCBjYW4gaGFuZGxlCisgICAgICAgdmFsdWVzIHRoYXQgYXJlIHRlY2huaWNhbGx5IG91dCBvZiBib3VuZHMsIGxpa2UgKGZvciAzMi1iaXQpCisgICAgICAgOTk5OTk5OTk5OTk5OTk5OTk5OTkuLi45OTk5OTk5OWUrNDI1MDAwMDAwLiAqLworICAgIGV4cCA9IHZ2LT5leHA7CisgICAgdnYtPmV4cCA9IDA7CisgICAgbXBkX3FtdWwoTVBEKHJlc3VsdCksIHZ2LCBNUEQoZGVub20pLCAmbWF4Y3R4LCAmc3RhdHVzKTsKKyAgICBNUEQocmVzdWx0KS0+ZXhwID0gZXhwOworCisgICAgUHlfREVDUkVGKGRlbm9tKTsKKyAgICBtcGRfZGVsKHZ2KTsKKyAgICAvKiBJZiBhbnkgc3RhdHVzIGhhcyBiZWVuIGFjY3VtdWxhdGVkIGR1cmluZyB0aGUgbXVsdGlwbGljYXRpb24sCisgICAgICAgdGhlIHJlc3VsdCBpcyBpbnZhbGlkLiBUaGlzIGlzIHZlcnkgdW5saWtlbHksIHNpbmNlIGV2ZW4gdGhlCisgICAgICAgMzItYml0IHZlcnNpb24gc3VwcG9ydHMgNDI1MDAwMDAwIGRpZ2l0cy4gKi8KKyAgICBpZiAoc3RhdHVzKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgImV4YWN0IGNvbnZlcnNpb24gZm9yIGNvbXBhcmlzb24gZmFpbGVkIik7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbnVtZXJhdG9yX2FzX2RlY2ltYWwoUHlPYmplY3QgKnIsIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICp0bXAsICpudW07CisKKyAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHIsICJudW1lcmF0b3IiKTsKKyAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbnVtID0gUHlEZWNfRnJvbUxvbmdFeGFjdCh0bXAsIGNvbnRleHQpOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiBudW07Cit9CisKKy8qIENvbnZlcnQgdiBhbmQgdyBmb3IgY29tcGFyaXNvbi4gdiBpcyBhIERlY2ltYWwuIElmIHcgaXMgYSBSYXRpb25hbCwgYm90aAorICAgdiBhbmQgdyBoYXZlIHRvIGJlIHRyYW5zZm9ybWVkLiBSZXR1cm4gMSBmb3Igc3VjY2Vzcywgd2l0aCBuZXcgcmVmZXJlbmNlcworICAgdG8gdGhlIGNvbnZlcnRlZCBvYmplY3RzIGluIHZjbXAgYW5kIHdjbXAuIFJldHVybiAwIGZvciBmYWlsdXJlLiBJbiB0aGF0CisgICBjYXNlIHdjbXAgaXMgZWl0aGVyIE5VTEwgb3IgUHlfTm90SW1wbGVtZW50ZWQgKG5ldyByZWZlcmVuY2UpIGFuZCB2Y21wCisgICBpcyB1bmRlZmluZWQuICovCitzdGF0aWMgaW50Citjb252ZXJ0X29wX2NtcChQeU9iamVjdCAqKnZjbXAsIFB5T2JqZWN0ICoqd2NtcCwgUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3LAorICAgICAgICAgICAgICAgaW50IG9wLCBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHggPSBDVFgoY29udGV4dCk7CisKKyAgICAqdmNtcCA9IHY7CisKKyAgICBpZiAoUHlEZWNfQ2hlY2sodykpIHsKKyAgICAgICAgUHlfSU5DUkVGKHcpOworICAgICAgICAqd2NtcCA9IHc7CisgICAgfQorICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjayh3KSkgeworICAgICAgICAqd2NtcCA9IFB5RGVjX0Zyb21Mb25nRXhhY3QodywgY29udGV4dCk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5RmxvYXRfQ2hlY2sodykpIHsKKyAgICAgICAgaWYgKG9wICE9IFB5X0VRICYmIG9wICE9IFB5X05FICYmCisgICAgICAgICAgICBkZWNfYWRkc3RhdHVzKGNvbnRleHQsIE1QRF9GbG9hdF9vcGVyYXRpb24pKSB7CisgICAgICAgICAgICAqd2NtcCA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjdHgtPnN0YXR1cyB8PSBNUERfRmxvYXRfb3BlcmF0aW9uOworICAgICAgICAgICAgKndjbXAgPSBQeURlY19Gcm9tRmxvYXRFeGFjdCh3LCBjb250ZXh0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChQeUNvbXBsZXhfQ2hlY2sodykgJiYgKG9wID09IFB5X0VRIHx8IG9wID09IFB5X05FKSkgeworICAgICAgICBQeV9jb21wbGV4IGMgPSBQeUNvbXBsZXhfQXNDQ29tcGxleCh3KTsKKyAgICAgICAgaWYgKGMucmVhbCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICp3Y21wID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjLmltYWcgPT0gMC4wKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdG1wID0gUHlGbG9hdF9Gcm9tRG91YmxlKGMucmVhbCk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqd2NtcCA9IE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjdHgtPnN0YXR1cyB8PSBNUERfRmxvYXRfb3BlcmF0aW9uOworICAgICAgICAgICAgICAgICp3Y21wID0gUHlEZWNfRnJvbUZsb2F0RXhhY3QodG1wLCBjb250ZXh0KTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7CisgICAgICAgICAgICAqd2NtcCA9IFB5X05vdEltcGxlbWVudGVkOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKFB5T2JqZWN0X0lzSW5zdGFuY2UodywgUmF0aW9uYWwpKSB7CisgICAgICAgICp3Y21wID0gbnVtZXJhdG9yX2FzX2RlY2ltYWwodywgY29udGV4dCk7CisgICAgICAgIGlmICgqd2NtcCAmJiAhbXBkX2lzc3BlY2lhbChNUEQodikpKSB7CisgICAgICAgICAgICAqdmNtcCA9IG11bHRpcGx5X2J5X2Rlbm9taW5hdG9yKHYsIHcsIGNvbnRleHQpOworICAgICAgICAgICAgaWYgKCp2Y21wID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9DTEVBUigqd2NtcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7CisgICAgICAgICp3Y21wID0gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgfQorCisgICAgaWYgKCp3Y21wID09IE5VTEwgfHwgKndjbXAgPT0gUHlfTm90SW1wbGVtZW50ZWQpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmICgqdmNtcCA9PSB2KSB7CisgICAgICAgIFB5X0lOQ1JFRih2KTsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKKyNkZWZpbmUgQ09OVkVSVF9CSU5PUF9DTVAodmNtcCwgd2NtcCwgdiwgdywgb3AsIGN0eCkgXAorICAgIGlmICghY29udmVydF9vcF9jbXAodmNtcCwgd2NtcCwgdiwgdywgb3AsIGN0eCkpIHsgIFwKKyAgICAgICAgcmV0dXJuICood2NtcCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVyc2lvbnMgZnJvbSBkZWNpbWFsICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVfZnJvbWFzY2lpKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzOworCisgICAgcmVzID0gUHlVbmljb2RlX05ldyhzaXplLCAxMjcpOworICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtZW1jcHkoUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKSwgcywgc2l6ZSk7CisgICAgcmV0dXJuIHJlczsKK30KKworLyogUHlEZWNPYmplY3QgYXMgYSBzdHJpbmcuIFRoZSBkZWZhdWx0IG1vZHVsZSBjb250ZXh0IGlzIG9ubHkgdXNlZCBmb3IKKyAgIHRoZSB2YWx1ZSBvZiAnY2FwaXRhbHMnLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19zdHIoUHlPYmplY3QgKmRlYykKK3sKKyAgICBQeU9iamVjdCAqcmVzLCAqY29udGV4dDsKKyAgICBtcGRfc3NpemVfdCBzaXplOworICAgIGNoYXIgKmNwOworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworICAgIHNpemUgPSBtcGRfdG9fc2NpX3NpemUoJmNwLCBNUEQoZGVjKSwgQ3R4Q2Fwcyhjb250ZXh0KSk7CisgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlcyA9IHVuaWNvZGVfZnJvbWFzY2lpKGNwLCBzaXplKTsKKyAgICBtcGRfZnJlZShjcCk7CisgICAgcmV0dXJuIHJlczsKK30KKworLyogUmVwcmVzZW50YXRpb24gb2YgYSBQeURlY09iamVjdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfcmVwcihQeU9iamVjdCAqZGVjKQoreworICAgIFB5T2JqZWN0ICpyZXMsICpjb250ZXh0OworICAgIGNoYXIgKmNwOworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworICAgIGNwID0gbXBkX3RvX3NjaShNUEQoZGVjKSwgQ3R4Q2Fwcyhjb250ZXh0KSk7CisgICAgaWYgKGNwID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIkRlY2ltYWwoJyVzJykiLCBjcCk7CisgICAgbXBkX2ZyZWUoY3ApOworICAgIHJldHVybiByZXM7Cit9CisKKy8qIENvbnZlcnQgZGVjaW1hbF9wb2ludCBvciB0aG91c2FuZHNfc2VwLCB3aGljaCBtYXkgYmUgbXVsdGlieXRlIG9yIGluCisgICB0aGUgcmFuZ2UgWzEyOCwgMjU1XSwgdG8gYSBVVEY4IHN0cmluZy4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkb3RzZXBfYXNfdXRmOChjb25zdCBjaGFyICpzKQoreworICAgIFB5T2JqZWN0ICp1dGY4OworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgd2NoYXJfdCBidWZbMl07CisgICAgc2l6ZV90IG47CisKKyAgICBuID0gbWJzdG93Y3MoYnVmLCBzLCAyKTsKKyAgICBpZiAobiAhPSAxKSB7IC8qIElzc3VlICM3NDQyICovCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgImludmFsaWQgZGVjaW1hbCBwb2ludCBvciB1bnN1cHBvcnRlZCAiCisgICAgICAgICAgICAiY29tYmluYXRpb24gb2YgTENfQ1RZUEUgYW5kIExDX05VTUVSSUMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHRtcCA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoYnVmLCBuKTsKKyAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHV0ZjggPSBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIHV0Zjg7Cit9CisKKy8qIEZvcm1hdHRlZCByZXByZXNlbnRhdGlvbiBvZiBhIFB5RGVjT2JqZWN0LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19mb3JtYXQoUHlPYmplY3QgKmRlYywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKm92ZXJyaWRlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZG90ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc2VwID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZ3JvdXBpbmcgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmbXQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmbXRhcmc7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisgICAgbXBkX3NwZWNfdCBzcGVjOworICAgIGNoYXIgKmRlY3N0cmluZz0gTlVMTDsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIHNpemVfdCBuOworCisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE8iLCAmZm10YXJnLCAmb3ZlcnJpZGUpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soZm10YXJnKSkgeworICAgICAgICBmbXQgPSBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKGZtdGFyZyk7CisgICAgICAgIGlmIChmbXQgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiZm9ybWF0IGFyZyBtdXN0IGJlIHN0ciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIW1wZF9wYXJzZV9mbXRfc3RyKCZzcGVjLCBQeUJ5dGVzX0FTX1NUUklORyhmbXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3R4Q2Fwcyhjb250ZXh0KSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiaW52YWxpZCBmb3JtYXQgc3RyaW5nIik7CisgICAgICAgIGdvdG8gZmluaXNoOworICAgIH0KKyAgICBpZiAob3ZlcnJpZGUpIHsKKyAgICAgICAgLyogVmFsdWVzIGZvciBkZWNpbWFsX3BvaW50LCB0aG91c2FuZHNfc2VwIGFuZCBncm91cGluZyBjYW4KKyAgICAgICAgICAgYmUgZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gdGhlIG92ZXJyaWRlIGRpY3QuIFRoZXNlIHZhbHVlcworICAgICAgICAgICB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUgdmFsdWVzIG9idGFpbmVkIGZyb20gbG9jYWxlY29udigpCisgICAgICAgICAgIGluIG1wZF9wYXJzZV9mbXRfc3RyKCkuIFRoZSBmZWF0dXJlIGlzIG5vdCBkb2N1bWVudGVkIGFuZAorICAgICAgICAgICBpcyBvbmx5IHVzZWQgaW4gdGVzdF9kZWNpbWFsLiAqLworICAgICAgICBpZiAoIVB5RGljdF9DaGVjayhvdmVycmlkZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIm9wdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYSBkaWN0Iik7CisgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgfQorICAgICAgICBpZiAoKGRvdCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG92ZXJyaWRlLCAiZGVjaW1hbF9wb2ludCIpKSkgeworICAgICAgICAgICAgaWYgKChkb3QgPSBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKGRvdCkpID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNwZWMuZG90ID0gUHlCeXRlc19BU19TVFJJTkcoZG90KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKHNlcCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG92ZXJyaWRlLCAidGhvdXNhbmRzX3NlcCIpKSkgeworICAgICAgICAgICAgaWYgKChzZXAgPSBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHNlcCkpID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNwZWMuc2VwID0gUHlCeXRlc19BU19TVFJJTkcoc2VwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKGdyb3VwaW5nID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcob3ZlcnJpZGUsICJncm91cGluZyIpKSkgeworICAgICAgICAgICAgaWYgKChncm91cGluZyA9IFB5VW5pY29kZV9Bc1VURjhTdHJpbmcoZ3JvdXBpbmcpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzcGVjLmdyb3VwaW5nID0gUHlCeXRlc19BU19TVFJJTkcoZ3JvdXBpbmcpOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfdmFsaWRhdGVfbGNvbnYoJnNwZWMpIDwgMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImludmFsaWQgb3ZlcnJpZGUgZGljdCIpOworICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG4gPSBzdHJsZW4oc3BlYy5kb3QpOworICAgICAgICBpZiAobiA+IDEgfHwgKG4gPT0gMSAmJiAhaXNhc2NpaSgodWNoYXIpc3BlYy5kb3RbMF0pKSkgeworICAgICAgICAgICAgLyogZml4IGxvY2FsZSBkZXBlbmRlbnQgbm9uLWFzY2lpIGNoYXJhY3RlcnMgKi8KKyAgICAgICAgICAgIGRvdCA9IGRvdHNlcF9hc191dGY4KHNwZWMuZG90KTsKKyAgICAgICAgICAgIGlmIChkb3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3BlYy5kb3QgPSBQeUJ5dGVzX0FTX1NUUklORyhkb3QpOworICAgICAgICB9CisgICAgICAgIG4gPSBzdHJsZW4oc3BlYy5zZXApOworICAgICAgICBpZiAobiA+IDEgfHwgKG4gPT0gMSAmJiAhaXNhc2NpaSgodWNoYXIpc3BlYy5zZXBbMF0pKSkgeworICAgICAgICAgICAgLyogZml4IGxvY2FsZSBkZXBlbmRlbnQgbm9uLWFzY2lpIGNoYXJhY3RlcnMgKi8KKyAgICAgICAgICAgIHNlcCA9IGRvdHNlcF9hc191dGY4KHNwZWMuc2VwKTsKKyAgICAgICAgICAgIGlmIChzZXAgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3BlYy5zZXAgPSBQeUJ5dGVzX0FTX1NUUklORyhzZXApOworICAgICAgICB9CisgICAgfQorCisKKyAgICBkZWNzdHJpbmcgPSBtcGRfcWZvcm1hdF9zcGVjKE1QRChkZWMpLCAmc3BlYywgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjc3RyaW5nID09IE5VTEwpIHsKKyAgICAgICAgaWYgKHN0YXR1cyAmIE1QRF9NYWxsb2NfZXJyb3IpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiZm9ybWF0IHNwZWNpZmljYXRpb24gZXhjZWVkcyBpbnRlcm5hbCBsaW1pdHMgb2YgX2RlY2ltYWwiKTsKKyAgICAgICAgfQorICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICB9CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0RlY29kZVVURjgoZGVjc3RyaW5nLCBzdHJsZW4oZGVjc3RyaW5nKSwgTlVMTCk7CisKKworZmluaXNoOgorICAgIFB5X1hERUNSRUYoZ3JvdXBpbmcpOworICAgIFB5X1hERUNSRUYoc2VwKTsKKyAgICBQeV9YREVDUkVGKGRvdCk7CisgICAgUHlfWERFQ1JFRihmbXQpOworICAgIGlmIChkZWNzdHJpbmcpIG1wZF9mcmVlKGRlY3N0cmluZyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogUmV0dXJuIGEgUHlMb25nT2JqZWN0IGZyb20gYSBQeURlY09iamVjdCwgdXNpbmcgdGhlIHNwZWNpZmllZCByb3VuZGluZworICogbW9kZS4gVGhlIGNvbnRleHQgcHJlY2lzaW9uIGlzIG5vdCBvYnNlcnZlZC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfYXNfbG9uZyhQeU9iamVjdCAqZGVjLCBQeU9iamVjdCAqY29udGV4dCwgaW50IHJvdW5kKQoreworICAgIFB5TG9uZ09iamVjdCAqcHlsb25nOworICAgIGRpZ2l0ICpvYl9kaWdpdDsKKyAgICBzaXplX3QgbjsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgbXBkX3QgKng7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4OworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChNUEQoZGVjKSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc25hbihNUEQoZGVjKSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCBOYU4gdG8gaW50ZWdlciIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgImNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIGludGVnZXIiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICB4ID0gbXBkX3FuZXcoKTsKKyAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICB3b3JrY3R4ID0gKkNUWChjb250ZXh0KTsKKyAgICB3b3JrY3R4LnJvdW5kID0gcm91bmQ7CisgICAgbXBkX3Fyb3VuZF90b19pbnQoeCwgTVBEKGRlYyksICZ3b3JrY3R4LCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIG1wZF9kZWwoeCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHN0YXR1cyA9IDA7CisgICAgb2JfZGlnaXQgPSBOVUxMOworI2lmIFBZTE9OR19CSVRTX0lOX0RJR0lUID09IDMwCisgICAgbiA9IG1wZF9xZXhwb3J0X3UzMigmb2JfZGlnaXQsIDAsIFB5TG9uZ19CQVNFLCB4LCAmc3RhdHVzKTsKKyNlbGlmIFBZTE9OR19CSVRTX0lOX0RJR0lUID09IDE1CisgICAgbiA9IG1wZF9xZXhwb3J0X3UxNigmb2JfZGlnaXQsIDAsIFB5TG9uZ19CQVNFLCB4LCAmc3RhdHVzKTsKKyNlbHNlCisgICAgI2Vycm9yICJQWUxPTkdfQklUU19JTl9ESUdJVCBzaG91bGQgYmUgMTUgb3IgMzAiCisjZW5kaWYKKworICAgIGlmIChuID09IFNJWkVfTUFYKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIG1wZF9kZWwoeCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGFzc2VydChuID4gMCk7CisgICAgcHlsb25nID0gX1B5TG9uZ19OZXcobik7CisgICAgaWYgKHB5bG9uZyA9PSBOVUxMKSB7CisgICAgICAgIG1wZF9mcmVlKG9iX2RpZ2l0KTsKKyAgICAgICAgbXBkX2RlbCh4KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbWVtY3B5KHB5bG9uZy0+b2JfZGlnaXQsIG9iX2RpZ2l0LCBuICogc2l6ZW9mKGRpZ2l0KSk7CisgICAgbXBkX2ZyZWUob2JfZGlnaXQpOworCisgICAgaSA9IG47CisgICAgd2hpbGUgKChpID4gMCkgJiYgKHB5bG9uZy0+b2JfZGlnaXRbaS0xXSA9PSAwKSkgeworICAgICAgICBpLS07CisgICAgfQorCisgICAgUHlfU0laRShweWxvbmcpID0gaTsKKyAgICBpZiAobXBkX2lzbmVnYXRpdmUoeCkgJiYgIW1wZF9pc3plcm8oeCkpIHsKKyAgICAgICAgUHlfU0laRShweWxvbmcpID0gLWk7CisgICAgfQorCisgICAgbXBkX2RlbCh4KTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopIHB5bG9uZzsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjX1RvSW50ZWdyYWxWYWx1ZShQeU9iamVjdCAqZGVjLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJyb3VuZGluZyIsICJjb250ZXh0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqcm91bmRpbmcgPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpjb250ZXh0ID0gUHlfTm9uZTsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T08iLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJvdW5kaW5nLCAmY29udGV4dCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIENPTlRFWFRfQ0hFQ0tfVkEoY29udGV4dCk7CisKKyAgICB3b3JrY3R4ID0gKkNUWChjb250ZXh0KTsKKyAgICBpZiAocm91bmRpbmcgIT0gUHlfTm9uZSkgeworICAgICAgICBpbnQgcm91bmQgPSBnZXRyb3VuZChyb3VuZGluZyk7CisgICAgICAgIGlmIChyb3VuZCA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmICghbXBkX3FzZXRyb3VuZCgmd29ya2N0eCwgcm91bmQpKSB7CisgICAgICAgICAgICBJTlRFUk5BTF9FUlJPUl9QVFIoIlB5RGVjX1RvSW50ZWdyYWxWYWx1ZSIpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3Fyb3VuZF90b19pbnQoTVBEKHJlc3VsdCksIE1QRChkZWMpLCAmd29ya2N0eCwgJnN0YXR1cyk7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjX1RvSW50ZWdyYWxFeGFjdChQeU9iamVjdCAqZGVjLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJyb3VuZGluZyIsICJjb250ZXh0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqcm91bmRpbmcgPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpjb250ZXh0ID0gUHlfTm9uZTsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T08iLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJvdW5kaW5nLCAmY29udGV4dCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIENPTlRFWFRfQ0hFQ0tfVkEoY29udGV4dCk7CisKKyAgICB3b3JrY3R4ID0gKkNUWChjb250ZXh0KTsKKyAgICBpZiAocm91bmRpbmcgIT0gUHlfTm9uZSkgeworICAgICAgICBpbnQgcm91bmQgPSBnZXRyb3VuZChyb3VuZGluZyk7CisgICAgICAgIGlmIChyb3VuZCA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmICghbXBkX3FzZXRyb3VuZCgmd29ya2N0eCwgcm91bmQpKSB7CisgICAgICAgICAgICBJTlRFUk5BTF9FUlJPUl9QVFIoIlB5RGVjX1RvSW50ZWdyYWxFeGFjdCIpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3Fyb3VuZF90b19pbnR4KE1QRChyZXN1bHQpLCBNUEQoZGVjKSwgJndvcmtjdHgsICZzdGF0dXMpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY19Bc0Zsb2F0KFB5T2JqZWN0ICpkZWMpCit7CisgICAgUHlPYmplY3QgKmYsICpzOworCisgICAgaWYgKG1wZF9pc25hbihNUEQoZGVjKSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc3NuYW4oTVBEKGRlYykpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiY2Fubm90IGNvbnZlcnQgc2lnbmFsaW5nIE5hTiB0byBmbG9hdCIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc25lZ2F0aXZlKE1QRChkZWMpKSkgeworICAgICAgICAgICAgcyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCItbmFuIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIm5hbiIpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzID0gZGVjX3N0cihkZWMpOworICAgIH0KKworICAgIGlmIChzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZiA9IFB5RmxvYXRfRnJvbVN0cmluZyhzKTsKKyAgICBQeV9ERUNSRUYocyk7CisKKyAgICByZXR1cm4gZjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjX1JvdW5kKFB5T2JqZWN0ICpkZWMsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnggPSBOVUxMOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPIiwgJngpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICh4KSB7CisgICAgICAgIG1wZF91aW50X3QgZHFbMV0gPSB7MX07CisgICAgICAgIG1wZF90IHEgPSB7TVBEX1NUQVRJQ3xNUERfQ09OU1RfREFUQSwwLDEsMSwxLGRxfTsKKyAgICAgICAgbXBkX3NzaXplX3QgeTsKKworICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh4KSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAib3B0aW9uYWwgYXJnIG11c3QgYmUgYW4gaW50ZWdlciIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICB5ID0gUHlMb25nX0FzU3NpemVfdCh4KTsKKyAgICAgICAgaWYgKHkgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBxLmV4cCA9ICh5ID09IE1QRF9TU0laRV9NSU4pID8gTVBEX1NTSVpFX01BWCA6IC15OworICAgICAgICBtcGRfcXF1YW50aXplKE1QRChyZXN1bHQpLCBNUEQoZGVjKSwgJnEsIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGRlY19hc19sb25nKGRlYywgY29udGV4dCwgTVBEX1JPVU5EX0hBTEZfRVZFTik7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKkRlY2ltYWxUdXBsZSA9IE5VTEw7CisvKiBSZXR1cm4gdGhlIERlY2ltYWxUdXBsZSByZXByZXNlbnRhdGlvbiBvZiBhIFB5RGVjT2JqZWN0LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjX0FzVHVwbGUoUHlPYmplY3QgKmRlYywgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc2lnbiA9IE5VTEw7CisgICAgUHlPYmplY3QgKmNvZWZmID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXhwdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnRtcCA9IE5VTEw7CisgICAgbXBkX3QgKnggPSBOVUxMOworICAgIGNoYXIgKmludHN0cmluZyA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpbnRsZW4sIGk7CisKKworICAgIHggPSBtcGRfcW5jb3B5KE1QRChkZWMpKTsKKyAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIHNpZ24gPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhtcGRfc2lnbihNUEQoZGVjKSkpOworICAgIGlmIChzaWduID09IE5VTEwpIHsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgaWYgKG1wZF9pc2luZmluaXRlKHgpKSB7CisgICAgICAgIGV4cHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiRiIpOworICAgICAgICBpZiAoZXhwdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAgICAvKiBkZWNpbWFsLnB5IGhhcyBub24tY29tcGxpYW50IGluZmluaXR5IHBheWxvYWRzLiAqLworICAgICAgICBjb2VmZiA9IFB5X0J1aWxkVmFsdWUoIihpKSIsIDApOworICAgICAgICBpZiAoY29lZmYgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChtcGRfaXNuYW4oeCkpIHsKKyAgICAgICAgICAgIGV4cHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhtcGRfaXNxbmFuKHgpPyJuIjoiTiIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZXhwdCA9IFB5TG9uZ19Gcm9tU3NpemVfdChNUEQoZGVjKS0+ZXhwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXhwdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIGNvZWZmaWNpZW50IGlzIGRlZmluZWQgKi8KKyAgICAgICAgaWYgKHgtPmxlbiA+IDApIHsKKworICAgICAgICAgICAgLyogbWFrZSBhbiBpbnRlZ2VyICovCisgICAgICAgICAgICB4LT5leHAgPSAwOworICAgICAgICAgICAgLyogY2xlYXIgTmFOIGFuZCBzaWduICovCisgICAgICAgICAgICBtcGRfY2xlYXJfZmxhZ3MoeCk7CisgICAgICAgICAgICBpbnRzdHJpbmcgPSBtcGRfdG9fc2NpKHgsIDEpOworICAgICAgICAgICAgaWYgKGludHN0cmluZyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW50bGVuID0gc3RybGVuKGludHN0cmluZyk7CisgICAgICAgICAgICBjb2VmZiA9IFB5VHVwbGVfTmV3KGludGxlbik7CisgICAgICAgICAgICBpZiAoY29lZmYgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaW50bGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICB0bXAgPSBQeUxvbmdfRnJvbUxvbmcoaW50c3RyaW5nW2ldLScwJyk7CisgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGNvZWZmLCBpLCB0bXApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29lZmYgPSBQeVR1cGxlX05ldygwKTsKKyAgICAgICAgICAgIGlmIChjb2VmZiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKERlY2ltYWxUdXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ24sIGNvZWZmLCBleHB0LCBOVUxMKTsKKworb3V0OgorICAgIGlmICh4KSBtcGRfZGVsKHgpOworICAgIGlmIChpbnRzdHJpbmcpIG1wZF9mcmVlKGludHN0cmluZyk7CisgICAgUHlfWERFQ1JFRihzaWduKTsKKyAgICBQeV9YREVDUkVGKGNvZWZmKTsKKyAgICBQeV9YREVDUkVGKGV4cHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgTWFjcm9zIGZvciBjb252ZXJ0aW5nIG1wZGVjaW1hbCBmdW5jdGlvbnMgdG8gRGVjaW1hbCBtZXRob2RzICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBVbmFyeSBudW1iZXIgbWV0aG9kIHRoYXQgdXNlcyB0aGUgZGVmYXVsdCBtb2R1bGUgY29udGV4dC4gKi8KKyNkZWZpbmUgRGVjX1VuYXJ5TnVtYmVyTWV0aG9kKE1QREZVTkMpIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK25tXyMjTVBERlVOQyhQeU9iamVjdCAqc2VsZikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqY29udGV4dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKHJlc3VsdCA9IGRlY19hbGxvYygpKSA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBNUERGVU5DKE1QRChyZXN1bHQpLCBNUEQoc2VsZiksIENUWChjb250ZXh0KSwgJnN0YXR1cyk7IFwKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworLyogQmluYXJ5IG51bWJlciBtZXRob2QgdGhhdCB1c2VzIGRlZmF1bHQgbW9kdWxlIGNvbnRleHQuICovCisjZGVmaW5lIERlY19CaW5hcnlOdW1iZXJNZXRob2QoTVBERlVOQykgXAorc3RhdGljIFB5T2JqZWN0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitubV8jI01QREZVTkMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlcikgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICphLCAqYjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqY29udGV4dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCkgOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENPTlZFUlRfQklOT1AoJmEsICZiLCBzZWxmLCBvdGhlciwgY29udGV4dCk7ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKHJlc3VsdCA9IGRlY19hbGxvYygpKSA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBNUERGVU5DKE1QRChyZXN1bHQpLCBNUEQoYSksIE1QRChiKSwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsgXAorICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlfREVDUkVGKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIHJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworLyogQm9vbGVhbiBmdW5jdGlvbiB3aXRob3V0IGEgY29udGV4dCBhcmcuICovCisjZGVmaW5lIERlY19Cb29sRnVuYyhNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkZWNfIyNNUERGVU5DKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKSAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIE1QREZVTkMoTVBEKHNlbGYpKSA/IGluY3JfdHJ1ZSgpIDogaW5jcl9mYWxzZSgpOyBcCit9CisKKy8qIEJvb2xlYW4gZnVuY3Rpb24gd2l0aCBhbiBvcHRpb25hbCBjb250ZXh0IGFyZy4gKi8KKyNkZWZpbmUgRGVjX0Jvb2xGdW5jVkEoTVBERlVOQykgXAorc3RhdGljIFB5T2JqZWN0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkZWNfIyNNUERGVU5DKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiY29udGV4dCIsIE5VTEx9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKmNvbnRleHQgPSBQeV9Ob25lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8TyIsIGt3bGlzdCwgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbnRleHQpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVEVYVF9DSEVDS19WQShjb250ZXh0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiBNUERGVU5DKE1QRChzZWxmKSwgQ1RYKGNvbnRleHQpKSA/IGluY3JfdHJ1ZSgpIDogaW5jcl9mYWxzZSgpOyBcCit9CisKKy8qIFVuYXJ5IGZ1bmN0aW9uIHdpdGggYW4gb3B0aW9uYWwgY29udGV4dCBhcmcuICovCisjZGVmaW5lIERlY19VbmFyeUZ1bmNWQShNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkZWNfIyNNUERGVU5DKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJjb250ZXh0IiwgTlVMTH07ICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKmNvbnRleHQgPSBQeV9Ob25lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPIiwga3dsaXN0LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbnRleHQpKSB7ICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVEVYVF9DSEVDS19WQShjb250ZXh0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKChyZXN1bHQgPSBkZWNfYWxsb2MoKSkgPT0gTlVMTCkgeyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgTVBERlVOQyhNUEQocmVzdWx0KSwgTVBEKHNlbGYpLCBDVFgoY29udGV4dCksICZzdGF0dXMpOyAgICBcCisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIHJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKy8qIEJpbmFyeSBmdW5jdGlvbiB3aXRoIGFuIG9wdGlvbmFsIGNvbnRleHQgYXJnLiAqLworI2RlZmluZSBEZWNfQmluYXJ5RnVuY1ZBKE1QREZVTkMpIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZGVjXyMjTVBERlVOQyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKSAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im90aGVyIiwgImNvbnRleHQiLCBOVUxMfTsgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpvdGhlcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKmEsICpiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpjb250ZXh0ID0gUHlfTm9uZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE8iLCBrd2xpc3QsICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm90aGVyLCAmY29udGV4dCkpIHsgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVEVYVF9DSEVDS19WQShjb250ZXh0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05WRVJUX0JJTk9QX1JBSVNFKCZhLCAmYiwgc2VsZiwgb3RoZXIsIGNvbnRleHQpOyAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKChyZXN1bHQgPSBkZWNfYWxsb2MoKSkgPT0gTlVMTCkgeyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgTVBERlVOQyhNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYiksIENUWChjb250ZXh0KSwgJnN0YXR1cyk7IFwKKyAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5X0RFQ1JFRihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiByZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKy8qIEJpbmFyeSBmdW5jdGlvbiB3aXRoIGFuIG9wdGlvbmFsIGNvbnRleHQgYXJnLiBBY3R1YWwgTVBERlVOQyBkb2VzCisgICBOT1QgdGFrZSBhIGNvbnRleHQuIFRoZSBjb250ZXh0IGlzIHVzZWQgdG8gcmVjb3JkIEludmFsaWRPcGVyYXRpb24KKyAgIGlmIHRoZSBzZWNvbmQgb3BlcmFuZCBjYW5ub3QgYmUgY29udmVydGVkIGV4YWN0bHkuICovCisjZGVmaW5lIERlY19CaW5hcnlGdW5jVkFfTk9fQ1RYKE1QREZVTkMpIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkZWNfIyNNUERGVU5DKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im90aGVyIiwgImNvbnRleHQiLCBOVUxMfTsgICAgICAgICBcCisgICAgUHlPYmplY3QgKmNvbnRleHQgPSBQeV9Ob25lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpvdGhlcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqYSwgKmI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPIiwga3dsaXN0LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm90aGVyLCAmY29udGV4dCkpIHsgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVEVYVF9DSEVDS19WQShjb250ZXh0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENPTlZFUlRfQklOT1BfUkFJU0UoJmEsICZiLCBzZWxmLCBvdGhlciwgY29udGV4dCk7ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKChyZXN1bHQgPSBkZWNfYWxsb2MoKSkgPT0gTlVMTCkgeyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgTVBERlVOQyhNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYikpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiByZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworLyogVGVybmFyeSBmdW5jdGlvbiB3aXRoIGFuIG9wdGlvbmFsIGNvbnRleHQgYXJnLiAqLworI2RlZmluZSBEZWNfVGVybmFyeUZ1bmNWQShNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZGVjXyMjTVBERlVOQyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKSAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJvdGhlciIsICJ0aGlyZCIsICJjb250ZXh0IiwgTlVMTH07ICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpvdGhlciwgKnRoaXJkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqYSwgKmIsICpjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpjb250ZXh0ID0gUHlfTm9uZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPT3xPIiwga3dsaXN0LCAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3RoZXIsICZ0aGlyZCwgJmNvbnRleHQpKSB7ICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05URVhUX0NIRUNLX1ZBKGNvbnRleHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVkVSVF9URVJOT1BfUkFJU0UoJmEsICZiLCAmYywgc2VsZiwgb3RoZXIsIHRoaXJkLCBjb250ZXh0KTsgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKHJlc3VsdCA9IGRlY19hbGxvYygpKSA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgTVBERlVOQyhNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYiksIE1QRChjKSwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsgXAorICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlfREVDUkVGKGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIHJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgIE51bWJlciBtZXRob2RzICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworRGVjX1VuYXJ5TnVtYmVyTWV0aG9kKG1wZF9xbWludXMpCitEZWNfVW5hcnlOdW1iZXJNZXRob2QobXBkX3FwbHVzKQorRGVjX1VuYXJ5TnVtYmVyTWV0aG9kKG1wZF9xYWJzKQorCitEZWNfQmluYXJ5TnVtYmVyTWV0aG9kKG1wZF9xYWRkKQorRGVjX0JpbmFyeU51bWJlck1ldGhvZChtcGRfcXN1YikKK0RlY19CaW5hcnlOdW1iZXJNZXRob2QobXBkX3FtdWwpCitEZWNfQmluYXJ5TnVtYmVyTWV0aG9kKG1wZF9xZGl2KQorRGVjX0JpbmFyeU51bWJlck1ldGhvZChtcGRfcXJlbSkKK0RlY19CaW5hcnlOdW1iZXJNZXRob2QobXBkX3FkaXZpbnQpCisKK3N0YXRpYyBQeU9iamVjdCAqCitubV9kZWNfYXNfbG9uZyhQeU9iamVjdCAqZGVjKQoreworICAgIFB5T2JqZWN0ICpjb250ZXh0OworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworICAgIHJldHVybiBkZWNfYXNfbG9uZyhkZWMsIGNvbnRleHQsIE1QRF9ST1VORF9ET1dOKTsKK30KKworc3RhdGljIGludAorbm1fbm9uemVybyhQeU9iamVjdCAqdikKK3sKKyAgICByZXR1cm4gIW1wZF9pc3plcm8oTVBEKHYpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25tX21wZF9xZGl2bW9kKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdykKK3sKKyAgICBQeU9iamVjdCAqYSwgKmI7CisgICAgUHlPYmplY3QgKnEsICpyOworICAgIFB5T2JqZWN0ICpjb250ZXh0OworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgUHlPYmplY3QgKnJldDsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICBDT05WRVJUX0JJTk9QKCZhLCAmYiwgdiwgdywgY29udGV4dCk7CisKKyAgICBxID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHEgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIFB5X0RFQ1JFRihiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHIgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAociA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgUHlfREVDUkVGKGIpOworICAgICAgICBQeV9ERUNSRUYocSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xZGl2bW9kKE1QRChxKSwgTVBEKHIpLCBNUEQoYSksIE1QRChiKSwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsKKyAgICBQeV9ERUNSRUYoYSk7CisgICAgUHlfREVDUkVGKGIpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHIpOworICAgICAgICBQeV9ERUNSRUYocSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldCA9IFB5X0J1aWxkVmFsdWUoIihPTykiLCBxLCByKTsKKyAgICBQeV9ERUNSRUYocik7CisgICAgUHlfREVDUkVGKHEpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBtcGRfdWludF90IGRhdGFfemVyb1sxXSA9IHswfTsKK3N0YXRpYyBjb25zdCBtcGRfdCB6ZXJvID0ge01QRF9TVEFUSUN8TVBEX0NPTlNUX0RBVEEsIDAsIDEsIDEsIDEsIGRhdGFfemVyb307CisKK3N0YXRpYyBQeU9iamVjdCAqCitubV9tcGRfcXBvdyhQeU9iamVjdCAqYmFzZSwgUHlPYmplY3QgKmV4cCwgUHlPYmplY3QgKm1vZCkKK3sKKyAgICBQeU9iamVjdCAqYSwgKmIsICpjID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpjb250ZXh0OworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgQ09OVkVSVF9CSU5PUCgmYSwgJmIsIGJhc2UsIGV4cCwgY29udGV4dCk7CisKKyAgICBpZiAobW9kICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKCFjb252ZXJ0X29wKE5PVF9JTVBMLCAmYywgbW9kLCBjb250ZXh0KSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICAgICAgUHlfREVDUkVGKGIpOworICAgICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICBQeV9ERUNSRUYoYik7CisgICAgICAgIFB5X1hERUNSRUYoYyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChjID09IE5VTEwpIHsKKyAgICAgICAgbXBkX3Fwb3coTVBEKHJlc3VsdCksIE1QRChhKSwgTVBEKGIpLAorICAgICAgICAgICAgICAgICBDVFgoY29udGV4dCksICZzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbXBkX3Fwb3dtb2QoTVBEKHJlc3VsdCksIE1QRChhKSwgTVBEKGIpLCBNUEQoYyksCisgICAgICAgICAgICAgICAgICAgIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgICAgIFB5X0RFQ1JFRihjKTsKKyAgICB9CisgICAgUHlfREVDUkVGKGEpOworICAgIFB5X0RFQ1JFRihiKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCBNZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogVW5hcnkgYXJpdGhtZXRpYyBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnICovCitEZWNfVW5hcnlGdW5jVkEobXBkX3FleHApCitEZWNfVW5hcnlGdW5jVkEobXBkX3FsbikKK0RlY19VbmFyeUZ1bmNWQShtcGRfcWxvZzEwKQorRGVjX1VuYXJ5RnVuY1ZBKG1wZF9xbmV4dF9taW51cykKK0RlY19VbmFyeUZ1bmNWQShtcGRfcW5leHRfcGx1cykKK0RlY19VbmFyeUZ1bmNWQShtcGRfcXJlZHVjZSkKK0RlY19VbmFyeUZ1bmNWQShtcGRfcXNxcnQpCisKKy8qIEJpbmFyeSBhcml0aG1ldGljIGZ1bmN0aW9ucywgb3B0aW9uYWwgY29udGV4dCBhcmcgKi8KK0RlY19CaW5hcnlGdW5jVkEobXBkX3Fjb21wYXJlKQorRGVjX0JpbmFyeUZ1bmNWQShtcGRfcWNvbXBhcmVfc2lnbmFsKQorRGVjX0JpbmFyeUZ1bmNWQShtcGRfcW1heCkKK0RlY19CaW5hcnlGdW5jVkEobXBkX3FtYXhfbWFnKQorRGVjX0JpbmFyeUZ1bmNWQShtcGRfcW1pbikKK0RlY19CaW5hcnlGdW5jVkEobXBkX3FtaW5fbWFnKQorRGVjX0JpbmFyeUZ1bmNWQShtcGRfcW5leHRfdG93YXJkKQorRGVjX0JpbmFyeUZ1bmNWQShtcGRfcXJlbV9uZWFyKQorCisvKiBUZXJuYXJ5IGFyaXRobWV0aWMgZnVuY3Rpb25zLCBvcHRpb25hbCBjb250ZXh0IGFyZyAqLworRGVjX1Rlcm5hcnlGdW5jVkEobXBkX3FmbWEpCisKKy8qIEJvb2xlYW4gZnVuY3Rpb25zLCBubyBjb250ZXh0IGFyZyAqLworRGVjX0Jvb2xGdW5jKG1wZF9pc2Nhbm9uaWNhbCkKK0RlY19Cb29sRnVuYyhtcGRfaXNmaW5pdGUpCitEZWNfQm9vbEZ1bmMobXBkX2lzaW5maW5pdGUpCitEZWNfQm9vbEZ1bmMobXBkX2lzbmFuKQorRGVjX0Jvb2xGdW5jKG1wZF9pc3FuYW4pCitEZWNfQm9vbEZ1bmMobXBkX2lzc25hbikKK0RlY19Cb29sRnVuYyhtcGRfaXNzaWduZWQpCitEZWNfQm9vbEZ1bmMobXBkX2lzemVybykKKworLyogQm9vbGVhbiBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnICovCitEZWNfQm9vbEZ1bmNWQShtcGRfaXNub3JtYWwpCitEZWNfQm9vbEZ1bmNWQShtcGRfaXNzdWJub3JtYWwpCisKKy8qIFVuYXJ5IGZ1bmN0aW9ucywgbm8gY29udGV4dCBhcmcgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfbXBkX2FkamV4cChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBtcGRfc3NpemVfdCByZXR2YWw7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChNUEQoc2VsZikpKSB7CisgICAgICAgIHJldHZhbCA9IDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR2YWwgPSBtcGRfYWRqZXhwKE1QRChzZWxmKSk7CisgICAgfQorCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXR2YWwpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX2Nhbm9uaWNhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfY29uanVnYXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19tcGRfcmFkaXgoUHlPYmplY3QgKnNlbGYgVU5VU0VELCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgX2RlY19zZXR0cmlwbGUocmVzdWx0LCBNUERfUE9TLCAxMCwgMCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19tcGRfcWNvcHlfYWJzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIGlmICgocmVzdWx0ID0gZGVjX2FsbG9jKCkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3Fjb3B5X2FicyhNUEQocmVzdWx0KSwgTVBEKHNlbGYpLCAmc3RhdHVzKTsKKyAgICBpZiAoc3RhdHVzICYgTVBEX01hbGxvY19lcnJvcikgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19tcGRfcWNvcHlfbmVnYXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIGlmICgocmVzdWx0ID0gZGVjX2FsbG9jKCkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3Fjb3B5X25lZ2F0ZShNUEQocmVzdWx0KSwgTVBEKHNlbGYpLCAmc3RhdHVzKTsKKyAgICBpZiAoc3RhdHVzICYgTVBEX01hbGxvY19lcnJvcikgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogVW5hcnkgZnVuY3Rpb25zLCBvcHRpb25hbCBjb250ZXh0IGFyZyAqLworRGVjX1VuYXJ5RnVuY1ZBKG1wZF9xaW52ZXJ0KQorRGVjX1VuYXJ5RnVuY1ZBKG1wZF9xbG9nYikKKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19tcGRfY2xhc3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImNvbnRleHQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqY29udGV4dCA9IFB5X05vbmU7CisgICAgY29uc3QgY2hhciAqY3A7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE8iLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbnRleHQpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBDT05URVhUX0NIRUNLX1ZBKGNvbnRleHQpOworCisgICAgY3AgPSBtcGRfY2xhc3MoTVBEKHNlbGYpLCBDVFgoY29udGV4dCkpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhjcCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfbXBkX3RvX2VuZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiY29udGV4dCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKmNvbnRleHQgPSBQeV9Ob25lOworICAgIG1wZF9zc2l6ZV90IHNpemU7CisgICAgY2hhciAqczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8TyIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGV4dCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIENPTlRFWFRfQ0hFQ0tfVkEoY29udGV4dCk7CisKKyAgICBzaXplID0gbXBkX3RvX2VuZ19zaXplKCZzLCBNUEQoc2VsZiksIEN0eENhcHMoY29udGV4dCkpOworICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSB1bmljb2RlX2Zyb21hc2NpaShzLCBzaXplKTsKKyAgICBtcGRfZnJlZShzKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIEJpbmFyeSBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnIGZvciBjb252ZXJzaW9uIGVycm9ycyAqLworRGVjX0JpbmFyeUZ1bmNWQV9OT19DVFgobXBkX2NvbXBhcmVfdG90YWwpCitEZWNfQmluYXJ5RnVuY1ZBX05PX0NUWChtcGRfY29tcGFyZV90b3RhbF9tYWcpCisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfbXBkX3Fjb3B5X3NpZ24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im90aGVyIiwgImNvbnRleHQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqb3RoZXI7CisgICAgUHlPYmplY3QgKmEsICpiOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKmNvbnRleHQgPSBQeV9Ob25lOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdGhlciwgJmNvbnRleHQpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBDT05URVhUX0NIRUNLX1ZBKGNvbnRleHQpOworICAgIENPTlZFUlRfQklOT1BfUkFJU0UoJmEsICZiLCBzZWxmLCBvdGhlciwgY29udGV4dCk7CisKKyAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICBQeV9ERUNSRUYoYik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xY29weV9zaWduKE1QRChyZXN1bHQpLCBNUEQoYSksIE1QRChiKSwgJnN0YXR1cyk7CisgICAgUHlfREVDUkVGKGEpOworICAgIFB5X0RFQ1JFRihiKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX21wZF9zYW1lX3F1YW50dW0oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im90aGVyIiwgImNvbnRleHQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqb3RoZXI7CisgICAgUHlPYmplY3QgKmEsICpiOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKmNvbnRleHQgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TyIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3RoZXIsICZjb250ZXh0KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgQ09OVEVYVF9DSEVDS19WQShjb250ZXh0KTsKKyAgICBDT05WRVJUX0JJTk9QX1JBSVNFKCZhLCAmYiwgc2VsZiwgb3RoZXIsIGNvbnRleHQpOworCisgICAgcmVzdWx0ID0gbXBkX3NhbWVfcXVhbnR1bShNUEQoYSksIE1QRChiKSkgPyBpbmNyX3RydWUoKSA6IGluY3JfZmFsc2UoKTsKKyAgICBQeV9ERUNSRUYoYSk7CisgICAgUHlfREVDUkVGKGIpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogQmluYXJ5IGZ1bmN0aW9ucywgb3B0aW9uYWwgY29udGV4dCBhcmcgKi8KK0RlY19CaW5hcnlGdW5jVkEobXBkX3FhbmQpCitEZWNfQmluYXJ5RnVuY1ZBKG1wZF9xb3IpCitEZWNfQmluYXJ5RnVuY1ZBKG1wZF9xeG9yKQorCitEZWNfQmluYXJ5RnVuY1ZBKG1wZF9xcm90YXRlKQorRGVjX0JpbmFyeUZ1bmNWQShtcGRfcXNjYWxlYikKK0RlY19CaW5hcnlGdW5jVkEobXBkX3FzaGlmdCkKKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19tcGRfcXF1YW50aXplKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJleHAiLCAicm91bmRpbmciLCAiY29udGV4dCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpyb3VuZGluZyA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKmNvbnRleHQgPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICp3LCAqYSwgKmI7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9PIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3LCAmcm91bmRpbmcsICZjb250ZXh0KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgQ09OVEVYVF9DSEVDS19WQShjb250ZXh0KTsKKworICAgIHdvcmtjdHggPSAqQ1RYKGNvbnRleHQpOworICAgIGlmIChyb3VuZGluZyAhPSBQeV9Ob25lKSB7CisgICAgICAgIGludCByb3VuZCA9IGdldHJvdW5kKHJvdW5kaW5nKTsKKyAgICAgICAgaWYgKHJvdW5kIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFtcGRfcXNldHJvdW5kKCZ3b3JrY3R4LCByb3VuZCkpIHsKKyAgICAgICAgICAgIElOVEVSTkFMX0VSUk9SX1BUUigiZGVjX21wZF9xcXVhbnRpemUiKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICB9CisgICAgfQorCisgICAgQ09OVkVSVF9CSU5PUF9SQUlTRSgmYSwgJmIsIHYsIHcsIGNvbnRleHQpOworCisgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgUHlfREVDUkVGKGIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfcXF1YW50aXplKE1QRChyZXN1bHQpLCBNUEQoYSksIE1QRChiKSwgJndvcmtjdHgsICZzdGF0dXMpOworICAgIFB5X0RFQ1JFRihhKTsKKyAgICBQeV9ERUNSRUYoYik7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogU3BlY2lhbCBtZXRob2RzICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX3JpY2hjb21wYXJlKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdywgaW50IG9wKQoreworICAgIFB5T2JqZWN0ICphOworICAgIFB5T2JqZWN0ICpiOworICAgIFB5T2JqZWN0ICpjb250ZXh0OworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgaW50IGFfaXNzbmFuLCBiX2lzc25hbjsKKyAgICBpbnQgcjsKKworICAgIGFzc2VydChQeURlY19DaGVjayh2KSk7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgQ09OVkVSVF9CSU5PUF9DTVAoJmEsICZiLCB2LCB3LCBvcCwgY29udGV4dCk7CisKKyAgICBhX2lzc25hbiA9IG1wZF9pc3NuYW4oTVBEKGEpKTsKKyAgICBiX2lzc25hbiA9IG1wZF9pc3NuYW4oTVBEKGIpKTsKKworICAgIHIgPSBtcGRfcWNtcChNUEQoYSksIE1QRChiKSwgJnN0YXR1cyk7CisgICAgUHlfREVDUkVGKGEpOworICAgIFB5X0RFQ1JFRihiKTsKKyAgICBpZiAociA9PSBJTlRfTUFYKSB7CisgICAgICAgIC8qIHNOYU5zIG9yIG9wPXtsZSxnZSxsdCxndH0gYWx3YXlzIHNpZ25hbC4gKi8KKyAgICAgICAgaWYgKGFfaXNzbmFuIHx8IGJfaXNzbmFuIHx8IChvcCAhPSBQeV9FUSAmJiBvcCAhPSBQeV9ORSkpIHsKKyAgICAgICAgICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBxTmFOIGNvbXBhcmlzb24gd2l0aCBvcD17ZXEsbmV9IG9yIGNvbXBhcmlzb24KKyAgICAgICAgICogd2l0aCBJbnZhbGlkT3BlcmF0aW9uIGRpc2FibGVkLiAqLworICAgICAgICByZXR1cm4gKG9wID09IFB5X05FKSA/IGluY3JfdHJ1ZSgpIDogaW5jcl9mYWxzZSgpOworICAgIH0KKworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIFB5X0VROgorICAgICAgICByID0gKHIgPT0gMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlfTkU6CisgICAgICAgIHIgPSAociAhPSAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeV9MRToKKyAgICAgICAgciA9IChyIDw9IDApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5X0dFOgorICAgICAgICByID0gKHIgPj0gMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlfTFQ6CisgICAgICAgIHIgPSAociA9PSAtMSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlfR1Q6CisgICAgICAgIHIgPSAociA9PSAxKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyKTsKK30KKworLyogX19jZWlsX18gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfY2VpbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICByZXR1cm4gZGVjX2FzX2xvbmcoc2VsZiwgY29udGV4dCwgTVBEX1JPVU5EX0NFSUxJTkcpOworfQorCisvKiBfX2NvbXBsZXhfXyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19jb21wbGV4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpmOworICAgIGRvdWJsZSB4OworCisgICAgZiA9IFB5RGVjX0FzRmxvYXQoc2VsZik7CisgICAgaWYgKGYgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICB4ID0gUHlGbG9hdF9Bc0RvdWJsZShmKTsKKyAgICBQeV9ERUNSRUYoZik7CisgICAgaWYgKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBQeUNvbXBsZXhfRnJvbURvdWJsZXMoeCwgMCk7Cit9CisKKy8qIF9fY29weV9fIGFuZCBfX2RlZXBjb3B5X18gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfY29weShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy8qIF9fZmxvb3JfXyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19mbG9vcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICByZXR1cm4gZGVjX2FzX2xvbmcoc2VsZiwgY29udGV4dCwgTVBEX1JPVU5EX0ZMT09SKTsKK30KKworLyogQWx3YXlzIHVzZXMgdGhlIG1vZHVsZSBjb250ZXh0ICovCitzdGF0aWMgUHlfaGFzaF90CitfZGVjX2hhc2goUHlEZWNPYmplY3QgKnYpCit7CisjaWYgZGVmaW5lZChDT05GSUdfNjQpICYmIF9QeUhBU0hfQklUUyA9PSA2MQorICAgIC8qIDIqKjYxIC0gMSAqLworICAgIG1wZF91aW50X3QgcF9kYXRhWzFdID0gezIzMDU4NDMwMDkyMTM2OTM5NTFVTEx9OworICAgIG1wZF90IHAgPSB7TVBEX1BPU3xNUERfU1RBVElDfE1QRF9DT05TVF9EQVRBLCAwLCAxOSwgMSwgMSwgcF9kYXRhfTsKKyAgICAvKiBJbnZlcnNlIG9mIDEwIG1vZHVsbyBwICovCisgICAgbXBkX3VpbnRfdCBpbnYxMF9wX2RhdGFbMV0gPSB7MjA3NTI1ODcwODI5MjMyNDU1NlVMTH07CisgICAgbXBkX3QgaW52MTBfcCA9IHtNUERfUE9TfE1QRF9TVEFUSUN8TVBEX0NPTlNUX0RBVEEsCisgICAgICAgICAgICAgICAgICAgICAwLCAxOSwgMSwgMSwgaW52MTBfcF9kYXRhfTsKKyNlbGlmIGRlZmluZWQoQ09ORklHXzMyKSAmJiBfUHlIQVNIX0JJVFMgPT0gMzEKKyAgICAvKiAyKiozMSAtIDEgKi8KKyAgICBtcGRfdWludF90IHBfZGF0YVsyXSA9IHsxNDc0ODM2NDdVTCwgMn07CisgICAgbXBkX3QgcCA9IHtNUERfUE9TfE1QRF9TVEFUSUN8TVBEX0NPTlNUX0RBVEEsIDAsIDEwLCAyLCAyLCBwX2RhdGF9OworICAgIC8qIEludmVyc2Ugb2YgMTAgbW9kdWxvIHAgKi8KKyAgICBtcGRfdWludF90IGludjEwX3BfZGF0YVsyXSA9IHs1MDMyMzg1NTNVTCwgMX07CisgICAgbXBkX3QgaW52MTBfcCA9IHtNUERfUE9TfE1QRF9TVEFUSUN8TVBEX0NPTlNUX0RBVEEsCisgICAgICAgICAgICAgICAgICAgICAwLCAxMCwgMiwgMiwgaW52MTBfcF9kYXRhfTsKKyNlbHNlCisgICAgI2Vycm9yICJObyB2YWxpZCBjb21iaW5hdGlvbiBvZiBDT05GSUdfNjQsIENPTkZJR18zMiBhbmQgX1B5SEFTSF9CSVRTIgorI2VuZGlmCisgICAgY29uc3QgUHlfaGFzaF90IHB5X2hhc2hfaW5mID0gMzE0MTU5OworICAgIGNvbnN0IFB5X2hhc2hfdCBweV9oYXNoX25hbiA9IDA7CisgICAgbXBkX3VpbnRfdCB0ZW5fZGF0YVsxXSA9IHsxMH07CisgICAgbXBkX3QgdGVuID0ge01QRF9QT1N8TVBEX1NUQVRJQ3xNUERfQ09OU1RfREFUQSwKKyAgICAgICAgICAgICAgICAgMCwgMiwgMSwgMSwgdGVuX2RhdGF9OworICAgIFB5X2hhc2hfdCByZXN1bHQ7CisgICAgbXBkX3QgKmV4cF9oYXNoID0gTlVMTDsKKyAgICBtcGRfdCAqdG1wID0gTlVMTDsKKyAgICBtcGRfc3NpemVfdCBleHA7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBtcGRfY29udGV4dF90IG1heGN0eDsKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKworCisgICAgY29udGV4dCA9IGN1cnJlbnRfY29udGV4dCgpOworICAgIGlmIChjb250ZXh0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChtcGRfaXNzcGVjaWFsKE1QRCh2KSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc3NuYW4oTVBEKHYpKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiQ2Fubm90IGhhc2ggYSBzaWduYWxpbmcgTmFOIHZhbHVlIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobXBkX2lzbmFuKE1QRCh2KSkpIHsKKyAgICAgICAgICAgIHJldHVybiBweV9oYXNoX25hbjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBweV9oYXNoX2luZiAqIG1wZF9hcml0aF9zaWduKE1QRCh2KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y3R4KTsKKyAgICBleHBfaGFzaCA9IG1wZF9xbmV3KCk7CisgICAgaWYgKGV4cF9oYXNoID09IE5VTEwpIHsKKyAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgfQorICAgIHRtcCA9IG1wZF9xbmV3KCk7CisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgIH0KKworICAgIC8qCisgICAgICogZXhwKHYpOiBleHBvbmVudCBvZiB2CisgICAgICogaW50KHYpOiBjb2VmZmljaWVudCBvZiB2CisgICAgICovCisgICAgZXhwID0gTVBEKHYpLT5leHA7CisgICAgaWYgKGV4cCA+PSAwKSB7CisgICAgICAgIC8qIDEwKipleHAodikgJSBwICovCisgICAgICAgIG1wZF9xc3NldF9zc2l6ZSh0bXAsIGV4cCwgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgICAgIG1wZF9xcG93bW9kKGV4cF9oYXNoLCAmdGVuLCB0bXAsICZwLCAmbWF4Y3R4LCAmc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIGludjEwX3AqKigtZXhwKHYpKSAlIHAgKi8KKyAgICAgICAgbXBkX3Fzc2V0X3NzaXplKHRtcCwgLWV4cCwgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgICAgIG1wZF9xcG93bW9kKGV4cF9oYXNoLCAmaW52MTBfcCwgdG1wLCAmcCwgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgfQorCisgICAgLyogaGFzaCA9IChpbnQodikgKiBleHBfaGFzaCkgJSBwICovCisgICAgaWYgKCFtcGRfcWNvcHkodG1wLCBNUEQodiksICZzdGF0dXMpKSB7CisgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgIH0KKyAgICB0bXAtPmV4cCA9IDA7CisgICAgbXBkX3NldF9wb3NpdGl2ZSh0bXApOworCisgICAgbWF4Y3R4LnByZWMgPSBNUERfTUFYX1BSRUMgKyAyMTsKKyAgICBtYXhjdHguZW1heCA9IE1QRF9NQVhfRU1BWCArIDIxOworICAgIG1heGN0eC5lbWluID0gTVBEX01JTl9FTUlOIC0gMjE7CisKKyAgICBtcGRfcW11bCh0bXAsIHRtcCwgZXhwX2hhc2gsICZtYXhjdHgsICZzdGF0dXMpOworICAgIG1wZF9xcmVtKHRtcCwgdG1wLCAmcCwgJm1heGN0eCwgJnN0YXR1cyk7CisKKyAgICByZXN1bHQgPSBtcGRfcWdldF9zc2l6ZSh0bXAsICZzdGF0dXMpOworICAgIHJlc3VsdCA9IG1wZF9pc3Bvc2l0aXZlKE1QRCh2KSkgPyByZXN1bHQgOiAtcmVzdWx0OworICAgIHJlc3VsdCA9IChyZXN1bHQgPT0gLTEpID8gLTIgOiByZXN1bHQ7CisKKyAgICBpZiAoc3RhdHVzICE9IDApIHsKKyAgICAgICAgaWYgKHN0YXR1cyAmIE1QRF9NYWxsb2NfZXJyb3IpIHsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAiZGVjX2hhc2g6IGludGVybmFsIGVycm9yOiBwbGVhc2UgcmVwb3J0Iik7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0ID0gLTE7CisgICAgfQorCisKK2ZpbmlzaDoKKyAgICBpZiAoZXhwX2hhc2gpIG1wZF9kZWwoZXhwX2hhc2gpOworICAgIGlmICh0bXApIG1wZF9kZWwodG1wKTsKKyAgICByZXR1cm4gcmVzdWx0OworCittYWxsb2NfZXJyb3I6CisgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICByZXN1bHQgPSAtMTsKKyAgICBnb3RvIGZpbmlzaDsKK30KKworc3RhdGljIFB5X2hhc2hfdAorZGVjX2hhc2goUHlEZWNPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKHNlbGYtPmhhc2ggPT0gLTEpIHsKKyAgICAgICAgc2VsZi0+aGFzaCA9IF9kZWNfaGFzaChzZWxmKTsKKyAgICB9CisKKyAgICByZXR1cm4gc2VsZi0+aGFzaDsKK30KKworLyogX19yZWR1Y2VfXyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19yZWR1Y2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCwgKnN0cjsKKworICAgIHN0ciA9IGRlY19zdHIoc2VsZik7CisgICAgaWYgKHN0ciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoIk8oTykiLCBQeV9UWVBFKHNlbGYpLCBzdHIpOworICAgIFB5X0RFQ1JFRihzdHIpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogX19zaXplb2ZfXyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19zaXplb2YoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgUHlfc3NpemVfdCByZXM7CisKKyAgICByZXMgPSBzaXplb2YoUHlEZWNPYmplY3QpOworICAgIGlmIChtcGRfaXNkeW5hbWljX2RhdGEoTVBEKHYpKSkgeworICAgICAgICByZXMgKz0gTVBEKHYpLT5hbGxvYyAqIHNpemVvZihtcGRfdWludF90KTsKKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOworfQorCisvKiBfX3RydW5jX18gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfdHJ1bmMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgcmV0dXJuIGRlY19hc19sb25nKHNlbGYsIGNvbnRleHQsIE1QRF9ST1VORF9ET1dOKTsKK30KKworLyogcmVhbCBhbmQgaW1hZyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19yZWFsKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfaW1hZyhQeU9iamVjdCAqc2VsZiBVTlVTRUQsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgX2RlY19zZXR0cmlwbGUocmVzdWx0LCBNUERfUE9TLCAwLCAwKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKK3N0YXRpYyBQeUdldFNldERlZiBkZWNfZ2V0c2V0cyBbXSA9Cit7CisgIHsgInJlYWwiLCAoZ2V0dGVyKWRlY19yZWFsLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAiaW1hZyIsIChnZXR0ZXIpZGVjX2ltYWcsIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7TlVMTH0KK307CisKK3N0YXRpYyBQeU51bWJlck1ldGhvZHMgZGVjX251bWJlcl9tZXRob2RzID0KK3sKKyAgICAoYmluYXJ5ZnVuYykgbm1fbXBkX3FhZGQsCisgICAgKGJpbmFyeWZ1bmMpIG5tX21wZF9xc3ViLAorICAgIChiaW5hcnlmdW5jKSBubV9tcGRfcW11bCwKKyAgICAoYmluYXJ5ZnVuYykgbm1fbXBkX3FyZW0sCisgICAgKGJpbmFyeWZ1bmMpIG5tX21wZF9xZGl2bW9kLAorICAgICh0ZXJuYXJ5ZnVuYykgbm1fbXBkX3Fwb3csCisgICAgKHVuYXJ5ZnVuYykgbm1fbXBkX3FtaW51cywKKyAgICAodW5hcnlmdW5jKSBubV9tcGRfcXBsdXMsCisgICAgKHVuYXJ5ZnVuYykgbm1fbXBkX3FhYnMsCisgICAgKGlucXVpcnkpIG5tX25vbnplcm8sCisgICAgKHVuYXJ5ZnVuYykgMCwgICAvKiBubyBiaXQtY29tcGxlbWVudCAqLworICAgIChiaW5hcnlmdW5jKSAwLCAgLyogbm8gc2hpZnRsICovCisgICAgKGJpbmFyeWZ1bmMpIDAsICAvKiBubyBzaGlmdHIgKi8KKyAgICAoYmluYXJ5ZnVuYykgMCwgIC8qIG5vIGJpdC1hbmQgKi8KKyAgICAoYmluYXJ5ZnVuYykgMCwgIC8qIG5vIGJpdC14b3IgKi8KKyAgICAoYmluYXJ5ZnVuYykgMCwgIC8qIG5vIGJpdC1pb3IgKi8KKyAgICAodW5hcnlmdW5jKSBubV9kZWNfYXNfbG9uZywKKyAgICAwLCAgICAgICAgICAgICAgIC8qIG5iX3Jlc2VydmVkICovCisgICAgKHVuYXJ5ZnVuYykgUHlEZWNfQXNGbG9hdCwKKyAgICAwLCAgICAgICAgICAgICAgIC8qIGJpbmFyeWZ1bmMgbmJfaW5wbGFjZV9hZGQ7ICovCisgICAgMCwgICAgICAgICAgICAgICAvKiBiaW5hcnlmdW5jIG5iX2lucGxhY2Vfc3VidHJhY3Q7ICovCisgICAgMCwgICAgICAgICAgICAgICAvKiBiaW5hcnlmdW5jIG5iX2lucGxhY2VfbXVsdGlwbHk7ICovCisgICAgMCwgICAgICAgICAgICAgICAvKiBiaW5hcnlmdW5jIG5iX2lucGxhY2VfcmVtYWluZGVyOyAqLworICAgIDAsICAgICAgICAgICAgICAgLyogdGVybmFyeWZ1bmMgbmJfaW5wbGFjZV9wb3dlcjsgKi8KKyAgICAwLCAgICAgICAgICAgICAgIC8qIGJpbmFyeWZ1bmMgbmJfaW5wbGFjZV9sc2hpZnQ7ICovCisgICAgMCwgICAgICAgICAgICAgICAvKiBiaW5hcnlmdW5jIG5iX2lucGxhY2VfcnNoaWZ0OyAqLworICAgIDAsICAgICAgICAgICAgICAgLyogYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX2FuZDsgKi8KKyAgICAwLCAgICAgICAgICAgICAgIC8qIGJpbmFyeWZ1bmMgbmJfaW5wbGFjZV94b3I7ICovCisgICAgMCwgICAgICAgICAgICAgICAvKiBiaW5hcnlmdW5jIG5iX2lucGxhY2Vfb3I7ICovCisgICAgKGJpbmFyeWZ1bmMpIG5tX21wZF9xZGl2aW50LCAgLyogYmluYXJ5ZnVuYyBuYl9mbG9vcl9kaXZpZGU7ICovCisgICAgKGJpbmFyeWZ1bmMpIG5tX21wZF9xZGl2LCAgICAgLyogYmluYXJ5ZnVuYyBuYl90cnVlX2RpdmlkZTsgKi8KKyAgICAwLCAgICAgICAgICAgICAgIC8qIGJpbmFyeWZ1bmMgbmJfaW5wbGFjZV9mbG9vcl9kaXZpZGU7ICovCisgICAgMCwgICAgICAgICAgICAgICAvKiBiaW5hcnlmdW5jIG5iX2lucGxhY2VfdHJ1ZV9kaXZpZGU7ICovCit9OworCitzdGF0aWMgUHlNZXRob2REZWYgZGVjX21ldGhvZHMgW10gPQoreworICAvKiBVbmFyeSBhcml0aG1ldGljIGZ1bmN0aW9ucywgb3B0aW9uYWwgY29udGV4dCBhcmcgKi8KKyAgeyAiZXhwIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcWV4cCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19leHAgfSwKKyAgeyAibG4iLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xbG4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbG4gfSwKKyAgeyAibG9nMTAiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xbG9nMTAsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbG9nMTAgfSwKKyAgeyAibmV4dF9taW51cyIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FuZXh0X21pbnVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX25leHRfbWludXMgfSwKKyAgeyAibmV4dF9wbHVzIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcW5leHRfcGx1cywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19uZXh0X3BsdXMgfSwKKyAgeyAibm9ybWFsaXplIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcXJlZHVjZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19ub3JtYWxpemUgfSwKKyAgeyAidG9faW50ZWdyYWwiLCAoUHlDRnVuY3Rpb24pUHlEZWNfVG9JbnRlZ3JhbFZhbHVlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX3RvX2ludGVncmFsIH0sCisgIHsgInRvX2ludGVncmFsX2V4YWN0IiwgKFB5Q0Z1bmN0aW9uKVB5RGVjX1RvSW50ZWdyYWxFeGFjdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY190b19pbnRlZ3JhbF9leGFjdCB9LAorICB7ICJ0b19pbnRlZ3JhbF92YWx1ZSIsIChQeUNGdW5jdGlvbilQeURlY19Ub0ludGVncmFsVmFsdWUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfdG9faW50ZWdyYWxfdmFsdWUgfSwKKyAgeyAic3FydCIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FzcXJ0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX3NxcnQgfSwKKworICAvKiBCaW5hcnkgYXJpdGhtZXRpYyBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnICovCisgIHsgImNvbXBhcmUiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xY29tcGFyZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19jb21wYXJlIH0sCisgIHsgImNvbXBhcmVfc2lnbmFsIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcWNvbXBhcmVfc2lnbmFsLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2NvbXBhcmVfc2lnbmFsIH0sCisgIHsgIm1heCIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FtYXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbWF4IH0sCisgIHsgIm1heF9tYWciLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xbWF4X21hZywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19tYXhfbWFnIH0sCisgIHsgIm1pbiIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FtaW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbWluIH0sCisgIHsgIm1pbl9tYWciLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xbWluX21hZywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19taW5fbWFnIH0sCisgIHsgIm5leHRfdG93YXJkIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcW5leHRfdG93YXJkLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX25leHRfdG93YXJkIH0sCisgIHsgInF1YW50aXplIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcXF1YW50aXplLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX3F1YW50aXplIH0sCisgIHsgInJlbWFpbmRlcl9uZWFyIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcXJlbV9uZWFyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX3JlbWFpbmRlcl9uZWFyIH0sCisKKyAgLyogVGVybmFyeSBhcml0aG1ldGljIGZ1bmN0aW9ucywgb3B0aW9uYWwgY29udGV4dCBhcmcgKi8KKyAgeyAiZm1hIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcWZtYSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19mbWEgfSwKKworICAvKiBCb29sZWFuIGZ1bmN0aW9ucywgbm8gY29udGV4dCBhcmcgKi8KKyAgeyAiaXNfY2Fub25pY2FsIiwgZGVjX21wZF9pc2Nhbm9uaWNhbCwgTUVUSF9OT0FSR1MsIGRvY19pc19jYW5vbmljYWwgfSwKKyAgeyAiaXNfZmluaXRlIiwgZGVjX21wZF9pc2Zpbml0ZSwgTUVUSF9OT0FSR1MsIGRvY19pc19maW5pdGUgfSwKKyAgeyAiaXNfaW5maW5pdGUiLCBkZWNfbXBkX2lzaW5maW5pdGUsIE1FVEhfTk9BUkdTLCBkb2NfaXNfaW5maW5pdGUgfSwKKyAgeyAiaXNfbmFuIiwgZGVjX21wZF9pc25hbiwgTUVUSF9OT0FSR1MsIGRvY19pc19uYW4gfSwKKyAgeyAiaXNfcW5hbiIsIGRlY19tcGRfaXNxbmFuLCBNRVRIX05PQVJHUywgZG9jX2lzX3FuYW4gfSwKKyAgeyAiaXNfc25hbiIsIGRlY19tcGRfaXNzbmFuLCBNRVRIX05PQVJHUywgZG9jX2lzX3NuYW4gfSwKKyAgeyAiaXNfc2lnbmVkIiwgZGVjX21wZF9pc3NpZ25lZCwgTUVUSF9OT0FSR1MsIGRvY19pc19zaWduZWQgfSwKKyAgeyAiaXNfemVybyIsIGRlY19tcGRfaXN6ZXJvLCBNRVRIX05PQVJHUywgZG9jX2lzX3plcm8gfSwKKworICAvKiBCb29sZWFuIGZ1bmN0aW9ucywgb3B0aW9uYWwgY29udGV4dCBhcmcgKi8KKyAgeyAiaXNfbm9ybWFsIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfaXNub3JtYWwsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfaXNfbm9ybWFsIH0sCisgIHsgImlzX3N1Ym5vcm1hbCIsIChQeUNGdW5jdGlvbilkZWNfbXBkX2lzc3Vibm9ybWFsLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2lzX3N1Ym5vcm1hbCB9LAorCisgIC8qIFVuYXJ5IGZ1bmN0aW9ucywgbm8gY29udGV4dCBhcmcgKi8KKyAgeyAiYWRqdXN0ZWQiLCBkZWNfbXBkX2FkamV4cCwgTUVUSF9OT0FSR1MsIGRvY19hZGp1c3RlZCB9LAorICB7ICJjYW5vbmljYWwiLCBkZWNfY2Fub25pY2FsLCBNRVRIX05PQVJHUywgZG9jX2Nhbm9uaWNhbCB9LAorICB7ICJjb25qdWdhdGUiLCBkZWNfY29uanVnYXRlLCBNRVRIX05PQVJHUywgZG9jX2Nvbmp1Z2F0ZSB9LAorICB7ICJyYWRpeCIsIGRlY19tcGRfcmFkaXgsIE1FVEhfTk9BUkdTLCBkb2NfcmFkaXggfSwKKworICAvKiBVbmFyeSBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnIGZvciBjb252ZXJzaW9uIGVycm9ycyAqLworICB7ICJjb3B5X2FicyIsIGRlY19tcGRfcWNvcHlfYWJzLCBNRVRIX05PQVJHUywgZG9jX2NvcHlfYWJzIH0sCisgIHsgImNvcHlfbmVnYXRlIiwgZGVjX21wZF9xY29weV9uZWdhdGUsIE1FVEhfTk9BUkdTLCBkb2NfY29weV9uZWdhdGUgfSwKKworICAvKiBVbmFyeSBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnICovCisgIHsgImxvZ2IiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xbG9nYiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19sb2diIH0sCisgIHsgImxvZ2ljYWxfaW52ZXJ0IiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcWludmVydCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19sb2dpY2FsX2ludmVydCB9LAorICB7ICJudW1iZXJfY2xhc3MiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9jbGFzcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19udW1iZXJfY2xhc3MgfSwKKyAgeyAidG9fZW5nX3N0cmluZyIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3RvX2VuZywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY190b19lbmdfc3RyaW5nIH0sCisKKyAgLyogQmluYXJ5IGZ1bmN0aW9ucywgb3B0aW9uYWwgY29udGV4dCBhcmcgZm9yIGNvbnZlcnNpb24gZXJyb3JzICovCisgIHsgImNvbXBhcmVfdG90YWwiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9jb21wYXJlX3RvdGFsLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2NvbXBhcmVfdG90YWwgfSwKKyAgeyAiY29tcGFyZV90b3RhbF9tYWciLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9jb21wYXJlX3RvdGFsX21hZywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19jb21wYXJlX3RvdGFsX21hZyB9LAorICB7ICJjb3B5X3NpZ24iLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xY29weV9zaWduLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2NvcHlfc2lnbiB9LAorICB7ICJzYW1lX3F1YW50dW0iLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9zYW1lX3F1YW50dW0sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2Nfc2FtZV9xdWFudHVtIH0sCisKKyAgLyogQmluYXJ5IGZ1bmN0aW9ucywgb3B0aW9uYWwgY29udGV4dCBhcmcgKi8KKyAgeyAibG9naWNhbF9hbmQiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xYW5kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2xvZ2ljYWxfYW5kIH0sCisgIHsgImxvZ2ljYWxfb3IiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xb3IsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbG9naWNhbF9vciB9LAorICB7ICJsb2dpY2FsX3hvciIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3F4b3IsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbG9naWNhbF94b3IgfSwKKyAgeyAicm90YXRlIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcXJvdGF0ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19yb3RhdGUgfSwKKyAgeyAic2NhbGViIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcXNjYWxlYiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19zY2FsZWIgfSwKKyAgeyAic2hpZnQiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xc2hpZnQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2Nfc2hpZnQgfSwKKworICAvKiBNaXNjZWxsYW5lb3VzICovCisgIHsgImZyb21fZmxvYXQiLCBkZWNfZnJvbV9mbG9hdCwgTUVUSF9PfE1FVEhfQ0xBU1MsIGRvY19mcm9tX2Zsb2F0IH0sCisgIHsgImFzX3R1cGxlIiwgUHlEZWNfQXNUdXBsZSwgTUVUSF9OT0FSR1MsIGRvY19hc190dXBsZSB9LAorCisgIC8qIFNwZWNpYWwgbWV0aG9kcyAqLworICB7ICJfX2NvcHlfXyIsIGRlY19jb3B5LCBNRVRIX05PQVJHUywgTlVMTCB9LAorICB7ICJfX2RlZXBjb3B5X18iLCBkZWNfY29weSwgTUVUSF9PLCBOVUxMIH0sCisgIHsgIl9fZm9ybWF0X18iLCBkZWNfZm9ybWF0LCBNRVRIX1ZBUkFSR1MsIE5VTEwgfSwKKyAgeyAiX19yZWR1Y2VfXyIsIGRlY19yZWR1Y2UsIE1FVEhfTk9BUkdTLCBOVUxMIH0sCisgIHsgIl9fcm91bmRfXyIsIFB5RGVjX1JvdW5kLCBNRVRIX1ZBUkFSR1MsIE5VTEwgfSwKKyAgeyAiX19jZWlsX18iLCBkZWNfY2VpbCwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgeyAiX19mbG9vcl9fIiwgZGVjX2Zsb29yLCBNRVRIX05PQVJHUywgTlVMTCB9LAorICB7ICJfX3RydW5jX18iLCBkZWNfdHJ1bmMsIE1FVEhfTk9BUkdTLCBOVUxMIH0sCisgIHsgIl9fY29tcGxleF9fIiwgZGVjX2NvbXBsZXgsIE1FVEhfTk9BUkdTLCBOVUxMIH0sCisgIHsgIl9fc2l6ZW9mX18iLCBkZWNfc2l6ZW9mLCBNRVRIX05PQVJHUywgTlVMTCB9LAorCisgIHsgTlVMTCwgTlVMTCwgMSB9Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGVjX1R5cGUgPQoreworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJkZWNpbWFsLkRlY2ltYWwiLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKFB5RGVjT2JqZWN0KSwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0cnVjdG9yKSBkZWNfZGVhbGxvYywgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgKGdldGF0dHJmdW5jKSAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAoc2V0YXR0cmZ1bmMpIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIChyZXByZnVuYykgZGVjX3JlcHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgJmRlY19udW1iZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgKGhhc2hmdW5jKSBkZWNfaGFzaCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIChyZXByZnVuYykgZGVjX3N0ciwgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAoZ2V0YXR0cm9mdW5jKSBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAoc2V0YXR0cm9mdW5jKSAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAoUHlCdWZmZXJQcm9jcyAqKSAwLCAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgKFB5X1RQRkxBR1NfREVGQVVMVHwKKyAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSksICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBkb2NfZGVjaW1hbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgZGVjX3JpY2hjb21wYXJlLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBkZWNfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgZGVjX2dldHNldHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBkZWNfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgUHlPYmplY3RfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KK307CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHQgT2JqZWN0LCBQYXJ0IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgTWFjcm9zIGZvciBjb252ZXJ0aW5nIG1wZGVjaW1hbCBmdW5jdGlvbnMgdG8gQ29udGV4dCBtZXRob2RzICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogQm9vbGVhbiBjb250ZXh0IG1ldGhvZC4gKi8KKyNkZWZpbmUgRGVjQ3R4X0Jvb2xGdW5jKE1QREZVTkMpIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitjdHhfIyNNUERGVU5DKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqdikgICAgICAgICAgICAgICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcmV0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKmE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05WRVJUX09QX1JBSVNFKCZhLCB2LCBjb250ZXh0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldCA9IE1QREZVTkMoTVBEKGEpLCBDVFgoY29udGV4dCkpID8gaW5jcl90cnVlKCkgOiBpbmNyX2ZhbHNlKCk7IFwKKyAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIHJldDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisvKiBCb29sZWFuIGNvbnRleHQgbWV0aG9kLiBNUERGVU5DIGRvZXMgTk9UIHVzZSBhIGNvbnRleHQuICovCisjZGVmaW5lIERlY0N0eF9Cb29sRnVuY19OT19DVFgoTVBERlVOQykgXAorc3RhdGljIFB5T2JqZWN0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitjdHhfIyNNUERGVU5DKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqdikgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpyZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKmE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENPTlZFUlRfT1BfUkFJU0UoJmEsIHYsIGNvbnRleHQpOyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXQgPSBNUERGVU5DKE1QRChhKSkgPyBpbmNyX3RydWUoKSA6IGluY3JfZmFsc2UoKTsgXAorICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIHJldDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworLyogVW5hcnkgY29udGV4dCBtZXRob2QuICovCisjZGVmaW5lIERlY0N0eF9VbmFyeUZ1bmMoTVBERlVOQykgXAorc3RhdGljIFB5T2JqZWN0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorY3R4XyMjTVBERlVOQyhQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKnYpICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpyZXN1bHQsICphOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENPTlZFUlRfT1BfUkFJU0UoJmEsIHYsIGNvbnRleHQpOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICgocmVzdWx0ID0gZGVjX2FsbG9jKCkpID09IE5VTEwpIHsgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIE1QREZVTkMoTVBEKHJlc3VsdCksIE1QRChhKSwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsgXAorICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiByZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisvKiBCaW5hcnkgY29udGV4dCBtZXRob2QuICovCisjZGVmaW5lIERlY0N0eF9CaW5hcnlGdW5jKE1QREZVTkMpIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorY3R4XyMjTVBERlVOQyhQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKmFyZ3MpICAgICAgICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqdiwgKnc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICphLCAqYjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTyIsICZ2LCAmdykpIHsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05WRVJUX0JJTk9QX1JBSVNFKCZhLCAmYiwgdiwgdywgY29udGV4dCk7ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKChyZXN1bHQgPSBkZWNfYWxsb2MoKSkgPT0gTlVMTCkgeyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgTVBERlVOQyhNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYiksIENUWChjb250ZXh0KSwgJnN0YXR1cyk7IFwKKyAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5X0RFQ1JFRihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiByZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKy8qCisgKiBCaW5hcnkgY29udGV4dCBtZXRob2QuIFRoZSBjb250ZXh0IGlzIG9ubHkgdXNlZCBmb3IgY29udmVyc2lvbi4KKyAqIFRoZSBhY3R1YWwgTVBERlVOQyBkb2VzIE5PVCB0YWtlIGEgY29udGV4dCBhcmcuCisgKi8KKyNkZWZpbmUgRGVjQ3R4X0JpbmFyeUZ1bmNfTk9fQ1RYKE1QREZVTkMpIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitjdHhfIyNNUERGVU5DKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqYXJncykgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqdiwgKnc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKmEsICpiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTyIsICZ2LCAmdykpIHsgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENPTlZFUlRfQklOT1BfUkFJU0UoJmEsICZiLCB2LCB3LCBjb250ZXh0KTsgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKChyZXN1bHQgPSBkZWNfYWxsb2MoKSkgPT0gTlVMTCkgeyAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgTVBERlVOQyhNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYikpOyAgICAgICAgXAorICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiByZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworLyogVGVybmFyeSBjb250ZXh0IG1ldGhvZC4gKi8KKyNkZWZpbmUgRGVjQ3R4X1Rlcm5hcnlGdW5jKE1QREZVTkMpIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitjdHhfIyNNUERGVU5DKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqYXJncykgICAgICAgICAgICAgICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqdiwgKncsICp4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKmEsICpiLCAqYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT09PIiwgJnYsICZ3LCAmeCkpIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05WRVJUX1RFUk5PUF9SQUlTRSgmYSwgJmIsICZjLCB2LCB3LCB4LCBjb250ZXh0KTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICgocmVzdWx0ID0gZGVjX2FsbG9jKCkpID09IE5VTEwpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBNUERGVU5DKE1QRChyZXN1bHQpLCBNUEQoYSksIE1QRChiKSwgTVBEKGMpLCBDVFgoY29udGV4dCksICZzdGF0dXMpOyBcCisgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5X0RFQ1JFRihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeV9ERUNSRUYoYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKworLyogVW5hcnkgYXJpdGhtZXRpYyBmdW5jdGlvbnMgKi8KK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3FhYnMpCitEZWNDdHhfVW5hcnlGdW5jKG1wZF9xZXhwKQorRGVjQ3R4X1VuYXJ5RnVuYyhtcGRfcWxuKQorRGVjQ3R4X1VuYXJ5RnVuYyhtcGRfcWxvZzEwKQorRGVjQ3R4X1VuYXJ5RnVuYyhtcGRfcW1pbnVzKQorRGVjQ3R4X1VuYXJ5RnVuYyhtcGRfcW5leHRfbWludXMpCitEZWNDdHhfVW5hcnlGdW5jKG1wZF9xbmV4dF9wbHVzKQorRGVjQ3R4X1VuYXJ5RnVuYyhtcGRfcXBsdXMpCitEZWNDdHhfVW5hcnlGdW5jKG1wZF9xcmVkdWNlKQorRGVjQ3R4X1VuYXJ5RnVuYyhtcGRfcXJvdW5kX3RvX2ludCkKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3Fyb3VuZF90b19pbnR4KQorRGVjQ3R4X1VuYXJ5RnVuYyhtcGRfcXNxcnQpCisKKy8qIEJpbmFyeSBhcml0aG1ldGljIGZ1bmN0aW9ucyAqLworRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FhZGQpCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcWNvbXBhcmUpCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcWNvbXBhcmVfc2lnbmFsKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FkaXYpCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcWRpdmludCkKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xbWF4KQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FtYXhfbWFnKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FtaW4pCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcW1pbl9tYWcpCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcW11bCkKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xbmV4dF90b3dhcmQpCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcXF1YW50aXplKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FyZW0pCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcXJlbV9uZWFyKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FzdWIpCisKK3N0YXRpYyBQeU9iamVjdCAqCitjdHhfbXBkX3FkaXZtb2QoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICp2LCAqdzsKKyAgICBQeU9iamVjdCAqYSwgKmI7CisgICAgUHlPYmplY3QgKnEsICpyOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgUHlPYmplY3QgKnJldDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08iLCAmdiwgJncpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIENPTlZFUlRfQklOT1BfUkFJU0UoJmEsICZiLCB2LCB3LCBjb250ZXh0KTsKKworICAgIHEgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocSA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgUHlfREVDUkVGKGIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgciA9IGRlY19hbGxvYygpOworICAgIGlmIChyID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICBQeV9ERUNSRUYoYik7CisgICAgICAgIFB5X0RFQ1JFRihxKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3FkaXZtb2QoTVBEKHEpLCBNUEQociksIE1QRChhKSwgTVBEKGIpLCBDVFgoY29udGV4dCksICZzdGF0dXMpOworICAgIFB5X0RFQ1JFRihhKTsKKyAgICBQeV9ERUNSRUYoYik7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYocik7CisgICAgICAgIFB5X0RFQ1JFRihxKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0ID0gUHlfQnVpbGRWYWx1ZSgiKE9PKSIsIHEsIHIpOworICAgIFB5X0RFQ1JFRihyKTsKKyAgICBQeV9ERUNSRUYocSk7CisgICAgcmV0dXJuIHJldDsKK30KKworLyogQmluYXJ5IG9yIHRlcm5hcnkgYXJpdGhtZXRpYyBmdW5jdGlvbnMgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitjdHhfbXBkX3Fwb3coUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImEiLCAiYiIsICJtb2R1bG8iLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqYmFzZSwgKmV4cCwgKm1vZCA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKmEsICpiLCAqYyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk9PfE8iLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJhc2UsICZleHAsICZtb2QpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIENPTlZFUlRfQklOT1BfUkFJU0UoJmEsICZiLCBiYXNlLCBleHAsIGNvbnRleHQpOworCisgICAgaWYgKG1vZCAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmICghY29udmVydF9vcChUWVBFX0VSUiwgJmMsIG1vZCwgY29udGV4dCkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihiKTsKKyAgICAgICAgICAgIHJldHVybiBjOworICAgICAgICB9CisgICAgfQorCisgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgUHlfREVDUkVGKGIpOworICAgICAgICBQeV9YREVDUkVGKGMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoYyA9PSBOVUxMKSB7CisgICAgICAgIG1wZF9xcG93KE1QRChyZXN1bHQpLCBNUEQoYSksIE1QRChiKSwKKyAgICAgICAgICAgICAgICAgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1wZF9xcG93bW9kKE1QRChyZXN1bHQpLCBNUEQoYSksIE1QRChiKSwgTVBEKGMpLAorICAgICAgICAgICAgICAgICAgICBDVFgoY29udGV4dCksICZzdGF0dXMpOworICAgICAgICBQeV9ERUNSRUYoYyk7CisgICAgfQorICAgIFB5X0RFQ1JFRihhKTsKKyAgICBQeV9ERUNSRUYoYik7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogVGVybmFyeSBhcml0aG1ldGljIGZ1bmN0aW9ucyAqLworRGVjQ3R4X1Rlcm5hcnlGdW5jKG1wZF9xZm1hKQorCisvKiBObyBhcmd1bWVudCAqLworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9tcGRfcmFkaXgoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICByZXR1cm4gZGVjX21wZF9yYWRpeChjb250ZXh0LCBkdW1teSk7Cit9CisKKy8qIEJvb2xlYW4gZnVuY3Rpb25zOiBzaW5nbGUgZGVjaW1hbCBhcmd1bWVudCAqLworRGVjQ3R4X0Jvb2xGdW5jKG1wZF9pc25vcm1hbCkKK0RlY0N0eF9Cb29sRnVuYyhtcGRfaXNzdWJub3JtYWwpCitEZWNDdHhfQm9vbEZ1bmNfTk9fQ1RYKG1wZF9pc2Zpbml0ZSkKK0RlY0N0eF9Cb29sRnVuY19OT19DVFgobXBkX2lzaW5maW5pdGUpCitEZWNDdHhfQm9vbEZ1bmNfTk9fQ1RYKG1wZF9pc25hbikKK0RlY0N0eF9Cb29sRnVuY19OT19DVFgobXBkX2lzcW5hbikKK0RlY0N0eF9Cb29sRnVuY19OT19DVFgobXBkX2lzc2lnbmVkKQorRGVjQ3R4X0Jvb2xGdW5jX05PX0NUWChtcGRfaXNzbmFuKQorRGVjQ3R4X0Jvb2xGdW5jX05PX0NUWChtcGRfaXN6ZXJvKQorCitzdGF0aWMgUHlPYmplY3QgKgorY3R4X2lzY2Fub25pY2FsKFB5T2JqZWN0ICpjb250ZXh0IFVOVVNFRCwgUHlPYmplY3QgKnYpCit7CisgICAgaWYgKCFQeURlY19DaGVjayh2KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImFyZ3VtZW50IG11c3QgYmUgYSBEZWNpbWFsIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBtcGRfaXNjYW5vbmljYWwoTVBEKHYpKSA/IGluY3JfdHJ1ZSgpIDogaW5jcl9mYWxzZSgpOworfQorCisvKiBGdW5jdGlvbnMgd2l0aCBhIHNpbmdsZSBkZWNpbWFsIGFyZ3VtZW50ICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNDb250ZXh0X0FwcGx5KFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqdikKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0LCAqYTsKKworICAgIENPTlZFUlRfT1BfUkFJU0UoJmEsIHYsIGNvbnRleHQpOworCisgICAgcmVzdWx0ID0gZGVjX2FwcGx5KGEsIGNvbnRleHQpOworICAgIFB5X0RFQ1JFRihhKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY3R4X2Nhbm9uaWNhbChQeU9iamVjdCAqY29udGV4dCBVTlVTRUQsIFB5T2JqZWN0ICp2KQoreworICAgIGlmICghUHlEZWNfQ2hlY2sodikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJhcmd1bWVudCBtdXN0IGJlIGEgRGVjaW1hbCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYodik7CisgICAgcmV0dXJuIHY7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjdHhfbXBkX3Fjb3B5X2FicyhQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKnYpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCwgKmE7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIENPTlZFUlRfT1BfUkFJU0UoJmEsIHYsIGNvbnRleHQpOworCisgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3Fjb3B5X2FicyhNUEQocmVzdWx0KSwgTVBEKGEpLCAmc3RhdHVzKTsKKyAgICBQeV9ERUNSRUYoYSk7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9jb3B5X2RlY2ltYWwoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICp2KQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBDT05WRVJUX09QX1JBSVNFKCZyZXN1bHQsIHYsIGNvbnRleHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjdHhfbXBkX3Fjb3B5X25lZ2F0ZShQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKnYpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCwgKmE7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIENPTlZFUlRfT1BfUkFJU0UoJmEsIHYsIGNvbnRleHQpOworCisgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3Fjb3B5X25lZ2F0ZShNUEQocmVzdWx0KSwgTVBEKGEpLCAmc3RhdHVzKTsKKyAgICBQeV9ERUNSRUYoYSk7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworRGVjQ3R4X1VuYXJ5RnVuYyhtcGRfcWxvZ2IpCitEZWNDdHhfVW5hcnlGdW5jKG1wZF9xaW52ZXJ0KQorCitzdGF0aWMgUHlPYmplY3QgKgorY3R4X21wZF9jbGFzcyhQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKnYpCit7CisgICAgUHlPYmplY3QgKmE7CisgICAgY29uc3QgY2hhciAqY3A7CisKKyAgICBDT05WRVJUX09QX1JBSVNFKCZhLCB2LCBjb250ZXh0KTsKKworICAgIGNwID0gbXBkX2NsYXNzKE1QRChhKSwgQ1RYKGNvbnRleHQpKTsKKyAgICBQeV9ERUNSRUYoYSk7CisKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoY3ApOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY3R4X21wZF90b19zY2koUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICp2KQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKmE7CisgICAgbXBkX3NzaXplX3Qgc2l6ZTsKKyAgICBjaGFyICpzOworCisgICAgQ09OVkVSVF9PUF9SQUlTRSgmYSwgdiwgY29udGV4dCk7CisKKyAgICBzaXplID0gbXBkX3RvX3NjaV9zaXplKCZzLCBNUEQoYSksIEN0eENhcHMoY29udGV4dCkpOworICAgIFB5X0RFQ1JFRihhKTsKKyAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gdW5pY29kZV9mcm9tYXNjaWkocywgc2l6ZSk7CisgICAgbXBkX2ZyZWUocyk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY3R4X21wZF90b19lbmcoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICp2KQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKmE7CisgICAgbXBkX3NzaXplX3Qgc2l6ZTsKKyAgICBjaGFyICpzOworCisgICAgQ09OVkVSVF9PUF9SQUlTRSgmYSwgdiwgY29udGV4dCk7CisKKyAgICBzaXplID0gbXBkX3RvX2VuZ19zaXplKCZzLCBNUEQoYSksIEN0eENhcHMoY29udGV4dCkpOworICAgIFB5X0RFQ1JFRihhKTsKKyAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gdW5pY29kZV9mcm9tYXNjaWkocywgc2l6ZSk7CisgICAgbXBkX2ZyZWUocyk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBGdW5jdGlvbnMgd2l0aCB0d28gZGVjaW1hbCBhcmd1bWVudHMgKi8KK0RlY0N0eF9CaW5hcnlGdW5jX05PX0NUWChtcGRfY29tcGFyZV90b3RhbCkKK0RlY0N0eF9CaW5hcnlGdW5jX05PX0NUWChtcGRfY29tcGFyZV90b3RhbF9tYWcpCisKK3N0YXRpYyBQeU9iamVjdCAqCitjdHhfbXBkX3Fjb3B5X3NpZ24oUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICp2LCAqdzsKKyAgICBQeU9iamVjdCAqYSwgKmI7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTyIsICZ2LCAmdykpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgQ09OVkVSVF9CSU5PUF9SQUlTRSgmYSwgJmIsIHYsIHcsIGNvbnRleHQpOworCisgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgUHlfREVDUkVGKGIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfcWNvcHlfc2lnbihNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYiksICZzdGF0dXMpOworICAgIFB5X0RFQ1JFRihhKTsKKyAgICBQeV9ERUNSRUYoYik7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FhbmQpCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcW9yKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3F4b3IpCisKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xcm90YXRlKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FzY2FsZWIpCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcXNoaWZ0KQorCitzdGF0aWMgUHlPYmplY3QgKgorY3R4X21wZF9zYW1lX3F1YW50dW0oUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICp2LCAqdzsKKyAgICBQeU9iamVjdCAqYSwgKmI7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08iLCAmdiwgJncpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIENPTlZFUlRfQklOT1BfUkFJU0UoJmEsICZiLCB2LCB3LCBjb250ZXh0KTsKKworICAgIHJlc3VsdCA9IG1wZF9zYW1lX3F1YW50dW0oTVBEKGEpLCBNUEQoYikpID8gaW5jcl90cnVlKCkgOiBpbmNyX2ZhbHNlKCk7CisgICAgUHlfREVDUkVGKGEpOworICAgIFB5X0RFQ1JFRihiKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIGNvbnRleHRfbWV0aG9kcyBbXSA9Cit7CisgIC8qIFVuYXJ5IGFyaXRobWV0aWMgZnVuY3Rpb25zICovCisgIHsgImFicyIsIGN0eF9tcGRfcWFicywgTUVUSF9PLCBkb2NfY3R4X2FicyB9LAorICB7ICJleHAiLCBjdHhfbXBkX3FleHAsIE1FVEhfTywgZG9jX2N0eF9leHAgfSwKKyAgeyAibG4iLCBjdHhfbXBkX3FsbiwgTUVUSF9PLCBkb2NfY3R4X2xuIH0sCisgIHsgImxvZzEwIiwgY3R4X21wZF9xbG9nMTAsIE1FVEhfTywgZG9jX2N0eF9sb2cxMCB9LAorICB7ICJtaW51cyIsIGN0eF9tcGRfcW1pbnVzLCBNRVRIX08sIGRvY19jdHhfbWludXMgfSwKKyAgeyAibmV4dF9taW51cyIsIGN0eF9tcGRfcW5leHRfbWludXMsIE1FVEhfTywgZG9jX2N0eF9uZXh0X21pbnVzIH0sCisgIHsgIm5leHRfcGx1cyIsIGN0eF9tcGRfcW5leHRfcGx1cywgTUVUSF9PLCBkb2NfY3R4X25leHRfcGx1cyB9LAorICB7ICJub3JtYWxpemUiLCBjdHhfbXBkX3FyZWR1Y2UsIE1FVEhfTywgZG9jX2N0eF9ub3JtYWxpemUgfSwKKyAgeyAicGx1cyIsIGN0eF9tcGRfcXBsdXMsIE1FVEhfTywgZG9jX2N0eF9wbHVzIH0sCisgIHsgInRvX2ludGVncmFsIiwgY3R4X21wZF9xcm91bmRfdG9faW50LCBNRVRIX08sIGRvY19jdHhfdG9faW50ZWdyYWwgfSwKKyAgeyAidG9faW50ZWdyYWxfZXhhY3QiLCBjdHhfbXBkX3Fyb3VuZF90b19pbnR4LCBNRVRIX08sIGRvY19jdHhfdG9faW50ZWdyYWxfZXhhY3QgfSwKKyAgeyAidG9faW50ZWdyYWxfdmFsdWUiLCBjdHhfbXBkX3Fyb3VuZF90b19pbnQsIE1FVEhfTywgZG9jX2N0eF90b19pbnRlZ3JhbF92YWx1ZSB9LAorICB7ICJzcXJ0IiwgY3R4X21wZF9xc3FydCwgTUVUSF9PLCBkb2NfY3R4X3NxcnQgfSwKKworICAvKiBCaW5hcnkgYXJpdGhtZXRpYyBmdW5jdGlvbnMgKi8KKyAgeyAiYWRkIiwgY3R4X21wZF9xYWRkLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfYWRkIH0sCisgIHsgImNvbXBhcmUiLCBjdHhfbXBkX3Fjb21wYXJlLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfY29tcGFyZSB9LAorICB7ICJjb21wYXJlX3NpZ25hbCIsIGN0eF9tcGRfcWNvbXBhcmVfc2lnbmFsLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfY29tcGFyZV9zaWduYWwgfSwKKyAgeyAiZGl2aWRlIiwgY3R4X21wZF9xZGl2LCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfZGl2aWRlIH0sCisgIHsgImRpdmlkZV9pbnQiLCBjdHhfbXBkX3FkaXZpbnQsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9kaXZpZGVfaW50IH0sCisgIHsgImRpdm1vZCIsIGN0eF9tcGRfcWRpdm1vZCwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X2Rpdm1vZCB9LAorICB7ICJtYXgiLCBjdHhfbXBkX3FtYXgsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9tYXggfSwKKyAgeyAibWF4X21hZyIsIGN0eF9tcGRfcW1heF9tYWcsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9tYXhfbWFnIH0sCisgIHsgIm1pbiIsIGN0eF9tcGRfcW1pbiwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X21pbiB9LAorICB7ICJtaW5fbWFnIiwgY3R4X21wZF9xbWluX21hZywgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X21pbl9tYWcgfSwKKyAgeyAibXVsdGlwbHkiLCBjdHhfbXBkX3FtdWwsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9tdWx0aXBseSB9LAorICB7ICJuZXh0X3Rvd2FyZCIsIGN0eF9tcGRfcW5leHRfdG93YXJkLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfbmV4dF90b3dhcmQgfSwKKyAgeyAicXVhbnRpemUiLCBjdHhfbXBkX3FxdWFudGl6ZSwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X3F1YW50aXplIH0sCisgIHsgInJlbWFpbmRlciIsIGN0eF9tcGRfcXJlbSwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X3JlbWFpbmRlciB9LAorICB7ICJyZW1haW5kZXJfbmVhciIsIGN0eF9tcGRfcXJlbV9uZWFyLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfcmVtYWluZGVyX25lYXIgfSwKKyAgeyAic3VidHJhY3QiLCBjdHhfbXBkX3FzdWIsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9zdWJ0cmFjdCB9LAorCisgIC8qIEJpbmFyeSBvciB0ZXJuYXJ5IGFyaXRobWV0aWMgZnVuY3Rpb25zICovCisgIHsgInBvd2VyIiwgKFB5Q0Z1bmN0aW9uKWN0eF9tcGRfcXBvdywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19jdHhfcG93ZXIgfSwKKworICAvKiBUZXJuYXJ5IGFyaXRobWV0aWMgZnVuY3Rpb25zICovCisgIHsgImZtYSIsIGN0eF9tcGRfcWZtYSwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X2ZtYSB9LAorCisgIC8qIE5vIGFyZ3VtZW50ICovCisgIHsgIkV0aW55IiwgY29udGV4dF9nZXRldGlueSwgTUVUSF9OT0FSR1MsIGRvY19jdHhfRXRpbnkgfSwKKyAgeyAiRXRvcCIsIGNvbnRleHRfZ2V0ZXRvcCwgTUVUSF9OT0FSR1MsIGRvY19jdHhfRXRvcCB9LAorICB7ICJyYWRpeCIsIGN0eF9tcGRfcmFkaXgsIE1FVEhfTk9BUkdTLCBkb2NfY3R4X3JhZGl4IH0sCisKKyAgLyogQm9vbGVhbiBmdW5jdGlvbnMgKi8KKyAgeyAiaXNfY2Fub25pY2FsIiwgY3R4X2lzY2Fub25pY2FsLCBNRVRIX08sIGRvY19jdHhfaXNfY2Fub25pY2FsIH0sCisgIHsgImlzX2Zpbml0ZSIsIGN0eF9tcGRfaXNmaW5pdGUsIE1FVEhfTywgZG9jX2N0eF9pc19maW5pdGUgfSwKKyAgeyAiaXNfaW5maW5pdGUiLCBjdHhfbXBkX2lzaW5maW5pdGUsIE1FVEhfTywgZG9jX2N0eF9pc19pbmZpbml0ZSB9LAorICB7ICJpc19uYW4iLCBjdHhfbXBkX2lzbmFuLCBNRVRIX08sIGRvY19jdHhfaXNfbmFuIH0sCisgIHsgImlzX25vcm1hbCIsIGN0eF9tcGRfaXNub3JtYWwsIE1FVEhfTywgZG9jX2N0eF9pc19ub3JtYWwgfSwKKyAgeyAiaXNfcW5hbiIsIGN0eF9tcGRfaXNxbmFuLCBNRVRIX08sIGRvY19jdHhfaXNfcW5hbiB9LAorICB7ICJpc19zaWduZWQiLCBjdHhfbXBkX2lzc2lnbmVkLCBNRVRIX08sIGRvY19jdHhfaXNfc2lnbmVkIH0sCisgIHsgImlzX3NuYW4iLCBjdHhfbXBkX2lzc25hbiwgTUVUSF9PLCBkb2NfY3R4X2lzX3NuYW4gfSwKKyAgeyAiaXNfc3Vibm9ybWFsIiwgY3R4X21wZF9pc3N1Ym5vcm1hbCwgTUVUSF9PLCBkb2NfY3R4X2lzX3N1Ym5vcm1hbCB9LAorICB7ICJpc196ZXJvIiwgY3R4X21wZF9pc3plcm8sIE1FVEhfTywgZG9jX2N0eF9pc196ZXJvIH0sCisKKyAgLyogRnVuY3Rpb25zIHdpdGggYSBzaW5nbGUgZGVjaW1hbCBhcmd1bWVudCAqLworICB7ICJfYXBwbHkiLCBQeURlY0NvbnRleHRfQXBwbHksIE1FVEhfTywgTlVMTCB9LCAvKiBhbGlhcyBmb3IgYXBwbHkgKi8KKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCisgIHsgImFwcGx5IiwgUHlEZWNDb250ZXh0X0FwcGx5LCBNRVRIX08sIGRvY19jdHhfYXBwbHkgfSwKKyNlbmRpZgorICB7ICJjYW5vbmljYWwiLCBjdHhfY2Fub25pY2FsLCBNRVRIX08sIGRvY19jdHhfY2Fub25pY2FsIH0sCisgIHsgImNvcHlfYWJzIiwgY3R4X21wZF9xY29weV9hYnMsIE1FVEhfTywgZG9jX2N0eF9jb3B5X2FicyB9LAorICB7ICJjb3B5X2RlY2ltYWwiLCBjdHhfY29weV9kZWNpbWFsLCBNRVRIX08sIGRvY19jdHhfY29weV9kZWNpbWFsIH0sCisgIHsgImNvcHlfbmVnYXRlIiwgY3R4X21wZF9xY29weV9uZWdhdGUsIE1FVEhfTywgZG9jX2N0eF9jb3B5X25lZ2F0ZSB9LAorICB7ICJsb2diIiwgY3R4X21wZF9xbG9nYiwgTUVUSF9PLCBkb2NfY3R4X2xvZ2IgfSwKKyAgeyAibG9naWNhbF9pbnZlcnQiLCBjdHhfbXBkX3FpbnZlcnQsIE1FVEhfTywgZG9jX2N0eF9sb2dpY2FsX2ludmVydCB9LAorICB7ICJudW1iZXJfY2xhc3MiLCBjdHhfbXBkX2NsYXNzLCBNRVRIX08sIGRvY19jdHhfbnVtYmVyX2NsYXNzIH0sCisgIHsgInRvX3NjaV9zdHJpbmciLCBjdHhfbXBkX3RvX3NjaSwgTUVUSF9PLCBkb2NfY3R4X3RvX3NjaV9zdHJpbmcgfSwKKyAgeyAidG9fZW5nX3N0cmluZyIsIGN0eF9tcGRfdG9fZW5nLCBNRVRIX08sIGRvY19jdHhfdG9fZW5nX3N0cmluZyB9LAorCisgIC8qIEZ1bmN0aW9ucyB3aXRoIHR3byBkZWNpbWFsIGFyZ3VtZW50cyAqLworICB7ICJjb21wYXJlX3RvdGFsIiwgY3R4X21wZF9jb21wYXJlX3RvdGFsLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfY29tcGFyZV90b3RhbCB9LAorICB7ICJjb21wYXJlX3RvdGFsX21hZyIsIGN0eF9tcGRfY29tcGFyZV90b3RhbF9tYWcsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9jb21wYXJlX3RvdGFsX21hZyB9LAorICB7ICJjb3B5X3NpZ24iLCBjdHhfbXBkX3Fjb3B5X3NpZ24sIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9jb3B5X3NpZ24gfSwKKyAgeyAibG9naWNhbF9hbmQiLCBjdHhfbXBkX3FhbmQsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9sb2dpY2FsX2FuZCB9LAorICB7ICJsb2dpY2FsX29yIiwgY3R4X21wZF9xb3IsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9sb2dpY2FsX29yIH0sCisgIHsgImxvZ2ljYWxfeG9yIiwgY3R4X21wZF9xeG9yLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfbG9naWNhbF94b3IgfSwKKyAgeyAicm90YXRlIiwgY3R4X21wZF9xcm90YXRlLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfcm90YXRlIH0sCisgIHsgInNhbWVfcXVhbnR1bSIsIGN0eF9tcGRfc2FtZV9xdWFudHVtLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfc2FtZV9xdWFudHVtIH0sCisgIHsgInNjYWxlYiIsIGN0eF9tcGRfcXNjYWxlYiwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X3NjYWxlYiB9LAorICB7ICJzaGlmdCIsIGN0eF9tcGRfcXNoaWZ0LCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfc2hpZnQgfSwKKworICAvKiBTZXQgY29udGV4dCB2YWx1ZXMgKi8KKyAgeyAiY2xlYXJfZmxhZ3MiLCBjb250ZXh0X2NsZWFyX2ZsYWdzLCBNRVRIX05PQVJHUywgZG9jX2N0eF9jbGVhcl9mbGFncyB9LAorICB7ICJjbGVhcl90cmFwcyIsIGNvbnRleHRfY2xlYXJfdHJhcHMsIE1FVEhfTk9BUkdTLCBkb2NfY3R4X2NsZWFyX3RyYXBzIH0sCisKKyNpZmRlZiBDT05GSUdfMzIKKyAgLyogVW5zYWZlIHNldCBmdW5jdGlvbnMgd2l0aCByZWxheGVkIHJhbmdlIGNoZWNrcyAqLworICB7ICJfdW5zYWZlX3NldHByZWMiLCBjb250ZXh0X3Vuc2FmZV9zZXRwcmVjLCBNRVRIX08sIE5VTEwgfSwKKyAgeyAiX3Vuc2FmZV9zZXRlbWluIiwgY29udGV4dF91bnNhZmVfc2V0ZW1pbiwgTUVUSF9PLCBOVUxMIH0sCisgIHsgIl91bnNhZmVfc2V0ZW1heCIsIGNvbnRleHRfdW5zYWZlX3NldGVtYXgsIE1FVEhfTywgTlVMTCB9LAorI2VuZGlmCisKKyAgLyogTWlzY2VsbGFuZW91cyAqLworICB7ICJfX2NvcHlfXyIsIChQeUNGdW5jdGlvbiljb250ZXh0X2NvcHksIE1FVEhfTk9BUkdTLCBOVUxMIH0sCisgIHsgIl9fcmVkdWNlX18iLCBjb250ZXh0X3JlZHVjZSwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgeyAiY29weSIsIChQeUNGdW5jdGlvbiljb250ZXh0X2NvcHksIE1FVEhfTk9BUkdTLCBkb2NfY3R4X2NvcHkgfSwKKyAgeyAiY3JlYXRlX2RlY2ltYWwiLCBjdHhfY3JlYXRlX2RlY2ltYWwsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9jcmVhdGVfZGVjaW1hbCB9LAorICB7ICJjcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0IiwgY3R4X2Zyb21fZmxvYXQsIE1FVEhfTywgZG9jX2N0eF9jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0IH0sCisKKyAgeyBOVUxMLCBOVUxMLCAxIH0KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgUHlEZWNDb250ZXh0X1R5cGUgPQoreworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJkZWNpbWFsLkNvbnRleHQiLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKFB5RGVjQ29udGV4dE9iamVjdCksICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0cnVjdG9yKSBjb250ZXh0X2RlYWxsb2MsICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgKGdldGF0dHJmdW5jKSAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAoc2V0YXR0cmZ1bmMpIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIChyZXByZnVuYykgY29udGV4dF9yZXByLCAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgKGhhc2hmdW5jKSAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIChyZXByZnVuYykgY29udGV4dF9yZXByLCAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAoZ2V0YXR0cm9mdW5jKSBjb250ZXh0X2dldGF0dHIsICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAoc2V0YXR0cm9mdW5jKSBjb250ZXh0X3NldGF0dHIsICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAoUHlCdWZmZXJQcm9jcyAqKSAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUfFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgIC8qIHRwX2ZsYWdzICovCisgICAgZG9jX2NvbnRleHQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgY29udGV4dF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIGNvbnRleHRfZ2V0c2V0cywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIGNvbnRleHRfaW5pdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgY29udGV4dF9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIFB5T2JqZWN0X0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCit9OworCisKK3N0YXRpYyBQeU1ldGhvZERlZiBfZGVjaW1hbF9tZXRob2RzIFtdID0KK3sKKyAgeyAiZ2V0Y29udGV4dCIsIChQeUNGdW5jdGlvbilQeURlY19HZXRDdXJyZW50Q29udGV4dCwgTUVUSF9OT0FSR1MsIGRvY19nZXRjb250ZXh0fSwKKyAgeyAic2V0Y29udGV4dCIsIChQeUNGdW5jdGlvbilQeURlY19TZXRDdXJyZW50Q29udGV4dCwgTUVUSF9PLCBkb2Nfc2V0Y29udGV4dH0sCisgIHsgImxvY2FsY29udGV4dCIsIChQeUNGdW5jdGlvbiljdHhtYW5hZ2VyX25ldywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19sb2NhbGNvbnRleHR9LAorI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKKyAgeyAiSUVFRUNvbnRleHQiLCAoUHlDRnVuY3Rpb24paWVlZV9jb250ZXh0LCBNRVRIX08sIGRvY19pZWVlX2NvbnRleHR9LAorI2VuZGlmCisgIHsgTlVMTCwgTlVMTCwgMSwgTlVMTCB9Cit9OworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF9kZWNpbWFsX21vZHVsZSA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgImRlY2ltYWwiLAorICAgIGRvY19fZGVjaW1hbCwKKyAgICAtMSwKKyAgICBfZGVjaW1hbF9tZXRob2RzLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwKK307CisKK3N0cnVjdCBzc2l6ZV9jb25zdG1hcCB7IGNvbnN0IGNoYXIgKm5hbWU7IG1wZF9zc2l6ZV90IHZhbDsgfTsKK3N0YXRpYyBzdHJ1Y3Qgc3NpemVfY29uc3RtYXAgc3NpemVfY29uc3RhbnRzIFtdID0geworICAgIHsiTUFYX1BSRUMiLCBNUERfTUFYX1BSRUN9LAorICAgIHsiTUFYX0VNQVgiLCBNUERfTUFYX0VNQVh9LAorICAgIHsiTUlOX0VNSU4iLCAgTVBEX01JTl9FTUlOfSwKKyAgICB7Ik1JTl9FVElOWSIsIE1QRF9NSU5fRVRJTll9LAorICAgIHtOVUxMfQorfTsKKworc3RydWN0IGludF9jb25zdG1hcCB7IGNvbnN0IGNoYXIgKm5hbWU7IGludCB2YWw7IH07CitzdGF0aWMgc3RydWN0IGludF9jb25zdG1hcCBpbnRfY29uc3RhbnRzIFtdID0geworICAgIC8qIGludCBjb25zdGFudHMgKi8KKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCisgICAgeyJERUNJTUFMMzIiLCBNUERfREVDSU1BTDMyfSwKKyAgICB7IkRFQ0lNQUw2NCIsIE1QRF9ERUNJTUFMNjR9LAorICAgIHsiREVDSU1BTDEyOCIsIE1QRF9ERUNJTUFMMTI4fSwKKyAgICB7IklFRUVfQ09OVEVYVF9NQVhfQklUUyIsIE1QRF9JRUVFX0NPTlRFWFRfTUFYX0JJVFN9LAorICAgIC8qIGludCBjb25kaXRpb24gZmxhZ3MgKi8KKyAgICB7IkRlY0NsYW1wZWQiLCBNUERfQ2xhbXBlZH0sCisgICAgeyJEZWNDb252ZXJzaW9uU3ludGF4IiwgTVBEX0NvbnZlcnNpb25fc3ludGF4fSwKKyAgICB7IkRlY0RpdmlzaW9uQnlaZXJvIiwgTVBEX0RpdmlzaW9uX2J5X3plcm99LAorICAgIHsiRGVjRGl2aXNpb25JbXBvc3NpYmxlIiwgTVBEX0RpdmlzaW9uX2ltcG9zc2libGV9LAorICAgIHsiRGVjRGl2aXNpb25VbmRlZmluZWQiLCBNUERfRGl2aXNpb25fdW5kZWZpbmVkfSwKKyAgICB7IkRlY0ZwdUVycm9yIiwgTVBEX0ZwdV9lcnJvcn0sCisgICAgeyJEZWNJbmV4YWN0IiwgTVBEX0luZXhhY3R9LAorICAgIHsiRGVjSW52YWxpZENvbnRleHQiLCBNUERfSW52YWxpZF9jb250ZXh0fSwKKyAgICB7IkRlY0ludmFsaWRPcGVyYXRpb24iLCBNUERfSW52YWxpZF9vcGVyYXRpb259LAorICAgIHsiRGVjSUVFRUludmFsaWRPcGVyYXRpb24iLCBNUERfSUVFRV9JbnZhbGlkX29wZXJhdGlvbn0sCisgICAgeyJEZWNNYWxsb2NFcnJvciIsIE1QRF9NYWxsb2NfZXJyb3J9LAorICAgIHsiRGVjRmxvYXRPcGVyYXRpb24iLCBNUERfRmxvYXRfb3BlcmF0aW9ufSwKKyAgICB7IkRlY092ZXJmbG93IiwgTVBEX092ZXJmbG93fSwKKyAgICB7IkRlY1JvdW5kZWQiLCBNUERfUm91bmRlZH0sCisgICAgeyJEZWNTdWJub3JtYWwiLCBNUERfU3Vibm9ybWFsfSwKKyAgICB7IkRlY1VuZGVyZmxvdyIsIE1QRF9VbmRlcmZsb3d9LAorICAgIHsiRGVjRXJyb3JzIiwgTVBEX0Vycm9yc30sCisgICAgeyJEZWNUcmFwcyIsIE1QRF9UcmFwc30sCisjZW5kaWYKKyAgICB7TlVMTH0KK307CisKKworI2RlZmluZSBDSEVDS19JTlQoZXhwcikgXAorICAgIGRvIHsgaWYgKChleHByKSA8IDApIGdvdG8gZXJyb3I7IH0gd2hpbGUgKDApCisjZGVmaW5lIEFTU0lHTl9QVFIocmVzdWx0LCBleHByKSBcCisgICAgZG8geyByZXN1bHQgPSAoZXhwcik7IGlmIChyZXN1bHQgPT0gTlVMTCkgZ290byBlcnJvcjsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgQ0hFQ0tfUFRSKGV4cHIpIFwKKyAgICBkbyB7IGlmICgoZXhwcikgPT0gTlVMTCkgZ290byBlcnJvcjsgfSB3aGlsZSAoMCkKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fZGVjaW1hbCh2b2lkKQoreworICAgIFB5T2JqZWN0ICptID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbnVtYmVycyA9IE5VTEw7CisgICAgUHlPYmplY3QgKk51bWJlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmNvbGxlY3Rpb25zID0gTlVMTDsKKyAgICBQeU9iamVjdCAqTXV0YWJsZU1hcHBpbmcgPSBOVUxMOworICAgIFB5T2JqZWN0ICpvYmogPSBOVUxMOworICAgIERlY0NvbmRNYXAgKmNtOworICAgIHN0cnVjdCBzc2l6ZV9jb25zdG1hcCAqc3NpemVfY207CisgICAgc3RydWN0IGludF9jb25zdG1hcCAqaW50X2NtOworICAgIGludCBpOworCisKKyAgICAvKiBJbml0IGxpYm1wZGVjICovCisgICAgbXBkX3RyYXBoYW5kbGVyID0gZGVjX3RyYXBoYW5kbGVyOworICAgIG1wZF9tYWxsb2NmdW5jID0gUHlNZW1fTWFsbG9jOworICAgIG1wZF9yZWFsbG9jZnVuYyA9IFB5TWVtX1JlYWxsb2M7CisgICAgbXBkX2NhbGxvY2Z1bmMgPSBtcGRfY2FsbG9jZnVuY19lbTsKKyAgICBtcGRfZnJlZSA9IFB5TWVtX0ZyZWU7CisgICAgbXBkX3NldG1pbmFsbG9jKF9QeV9ERUNfTUlOQUxMT0MpOworCisKKyAgICAvKiBJbml0IHR5cGVzICovCisgICAgUHlEZWNfVHlwZS50cF9iYXNlID0gJlB5QmFzZU9iamVjdF9UeXBlOworICAgIFB5RGVjQ29udGV4dF9UeXBlLnRwX2Jhc2UgPSAmUHlCYXNlT2JqZWN0X1R5cGU7CisgICAgUHlEZWNDb250ZXh0TWFuYWdlcl9UeXBlLnRwX2Jhc2UgPSAmUHlCYXNlT2JqZWN0X1R5cGU7CisgICAgUHlEZWNTaWduYWxEaWN0TWl4aW5fVHlwZS50cF9iYXNlID0gJlB5QmFzZU9iamVjdF9UeXBlOworCisgICAgQ0hFQ0tfSU5UKFB5VHlwZV9SZWFkeSgmUHlEZWNfVHlwZSkpOworICAgIENIRUNLX0lOVChQeVR5cGVfUmVhZHkoJlB5RGVjQ29udGV4dF9UeXBlKSk7CisgICAgQ0hFQ0tfSU5UKFB5VHlwZV9SZWFkeSgmUHlEZWNTaWduYWxEaWN0TWl4aW5fVHlwZSkpOworICAgIENIRUNLX0lOVChQeVR5cGVfUmVhZHkoJlB5RGVjQ29udGV4dE1hbmFnZXJfVHlwZSkpOworCisgICAgQVNTSUdOX1BUUihvYmosIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJkZWNpbWFsIikpOworICAgIENIRUNLX0lOVChQeURpY3RfU2V0SXRlbVN0cmluZyhQeURlY19UeXBlLnRwX2RpY3QsICJfX21vZHVsZV9fIiwgb2JqKSk7CisgICAgQ0hFQ0tfSU5UKFB5RGljdF9TZXRJdGVtU3RyaW5nKFB5RGVjQ29udGV4dF9UeXBlLnRwX2RpY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX21vZHVsZV9fIiwgb2JqKSk7CisgICAgUHlfQ0xFQVIob2JqKTsKKworCisgICAgLyogTnVtZXJpYyBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgKi8KKyAgICBBU1NJR05fUFRSKG51bWJlcnMsIFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgibnVtYmVycyIpKTsKKyAgICBBU1NJR05fUFRSKE51bWJlciwgUHlPYmplY3RfR2V0QXR0clN0cmluZyhudW1iZXJzLCAiTnVtYmVyIikpOworICAgIC8qIFJlZ2lzdGVyIERlY2ltYWwgd2l0aCB0aGUgTnVtYmVyIGFic3RyYWN0IGJhc2UgY2xhc3MgKi8KKyAgICBBU1NJR05fUFRSKG9iaiwgUHlPYmplY3RfQ2FsbE1ldGhvZChOdW1iZXIsICJyZWdpc3RlciIsICIoTykiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSZQeURlY19UeXBlKSk7CisgICAgUHlfQ0xFQVIob2JqKTsKKyAgICAvKiBSYXRpb25hbCBpcyBhIGdsb2JhbCB2YXJpYWJsZSB1c2VkIGZvciBmcmFjdGlvbiBjb21wYXJpc29ucy4gKi8KKyAgICBBU1NJR05fUFRSKFJhdGlvbmFsLCBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG51bWJlcnMsICJSYXRpb25hbCIpKTsKKyAgICAvKiBEb25lIHdpdGggbnVtYmVycywgTnVtYmVyICovCisgICAgUHlfQ0xFQVIobnVtYmVycyk7CisgICAgUHlfQ0xFQVIoTnVtYmVyKTsKKworICAgIC8qIERlY2ltYWxUdXBsZSAqLworICAgIEFTU0lHTl9QVFIoY29sbGVjdGlvbnMsIFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiY29sbGVjdGlvbnMiKSk7CisgICAgQVNTSUdOX1BUUihEZWNpbWFsVHVwbGUsIFB5T2JqZWN0X0NhbGxNZXRob2QoY29sbGVjdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZWR0dXBsZSIsICIoc3MpIiwgIkRlY2ltYWxUdXBsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbiBkaWdpdHMgZXhwb25lbnQiKSk7CisgICAgLyogTXV0YWJsZU1hcHBpbmcgKi8KKyAgICBBU1NJR05fUFRSKE11dGFibGVNYXBwaW5nLCBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGNvbGxlY3Rpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk11dGFibGVNYXBwaW5nIikpOworICAgIC8qIENyZWF0ZSBTaWduYWxEaWN0IHR5cGUgKi8KKyAgICBBU1NJR05fUFRSKFB5RGVjU2lnbmFsRGljdF9UeXBlLAorICAgICAgICAgICAgICAgICAgIChQeVR5cGVPYmplY3QgKilQeU9iamVjdF9DYWxsRnVuY3Rpb24oCisgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopJlB5VHlwZV9UeXBlLCAicyhPTyl7fSIsCisgICAgICAgICAgICAgICAgICAgIlNpZ25hbERpY3QiLCAmUHlEZWNTaWduYWxEaWN0TWl4aW5fVHlwZSwKKyAgICAgICAgICAgICAgICAgICBNdXRhYmxlTWFwcGluZykpOworCisgICAgLyogRG9uZSB3aXRoIGNvbGxlY3Rpb25zLCBNdXRhYmxlTWFwcGluZyAqLworICAgIFB5X0NMRUFSKGNvbGxlY3Rpb25zKTsKKyAgICBQeV9DTEVBUihNdXRhYmxlTWFwcGluZyk7CisKKworICAgIC8qIENyZWF0ZSB0aGUgbW9kdWxlICovCisgICAgQVNTSUdOX1BUUihtLCBQeU1vZHVsZV9DcmVhdGUoJl9kZWNpbWFsX21vZHVsZSkpOworCisKKyAgICAvKiBBZGQgdHlwZXMgdG8gdGhlIG1vZHVsZSAqLworICAgIFB5X0lOQ1JFRigmUHlEZWNfVHlwZSk7CisgICAgQ0hFQ0tfSU5UKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiRGVjaW1hbCIsIChQeU9iamVjdCAqKSZQeURlY19UeXBlKSk7CisgICAgUHlfSU5DUkVGKCZQeURlY0NvbnRleHRfVHlwZSk7CisgICAgQ0hFQ0tfSU5UKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQ29udGV4dCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmUHlEZWNDb250ZXh0X1R5cGUpKTsKKyAgICBQeV9JTkNSRUYoRGVjaW1hbFR1cGxlKTsKKyAgICBDSEVDS19JTlQoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJEZWNpbWFsVHVwbGUiLCBEZWNpbWFsVHVwbGUpKTsKKworCisgICAgLyogQ3JlYXRlIHRvcCBsZXZlbCBleGNlcHRpb24gKi8KKyAgICBBU1NJR05fUFRSKERlY2ltYWxFeGNlcHRpb24sIFB5RXJyX05ld0V4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjaW1hbC5EZWNpbWFsRXhjZXB0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19Bcml0aG1ldGljRXJyb3IsIE5VTEwpKTsKKyAgICBQeV9JTkNSRUYoRGVjaW1hbEV4Y2VwdGlvbik7CisgICAgQ0hFQ0tfSU5UKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiRGVjaW1hbEV4Y2VwdGlvbiIsIERlY2ltYWxFeGNlcHRpb24pKTsKKworICAgIC8qIENyZWF0ZSBzaWduYWwgdHVwbGUgKi8KKyAgICBBU1NJR05fUFRSKFNpZ25hbFR1cGxlLCBQeVR1cGxlX05ldyhTSUdOQUxfTUFQX0xFTikpOworCisgICAgLyogQWRkIGV4Y2VwdGlvbnMgdGhhdCBjb3JyZXNwb25kIHRvIElFRUUgc2lnbmFscyAqLworICAgIGZvciAoaSA9IFNJR05BTF9NQVBfTEVOLTE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIFB5T2JqZWN0ICpiYXNlOworCisgICAgICAgIGNtID0gc2lnbmFsX21hcCArIGk7CisKKyAgICAgICAgc3dpdGNoIChjbS0+ZmxhZykgeworICAgICAgICBjYXNlIE1QRF9GbG9hdF9vcGVyYXRpb246CisgICAgICAgICAgICBiYXNlID0gUHlUdXBsZV9QYWNrKDIsIERlY2ltYWxFeGNlcHRpb24sIFB5RXhjX1R5cGVFcnJvcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNUERfRGl2aXNpb25fYnlfemVybzoKKyAgICAgICAgICAgIGJhc2UgPSBQeVR1cGxlX1BhY2soMiwgRGVjaW1hbEV4Y2VwdGlvbiwgUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3IpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTVBEX092ZXJmbG93OgorICAgICAgICAgICAgYmFzZSA9IFB5VHVwbGVfUGFjaygyLCBzaWduYWxfbWFwW0lORVhBQ1RdLmV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxfbWFwW1JPVU5ERURdLmV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1QRF9VbmRlcmZsb3c6CisgICAgICAgICAgICBiYXNlID0gUHlUdXBsZV9QYWNrKDMsIHNpZ25hbF9tYXBbSU5FWEFDVF0uZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbF9tYXBbUk9VTkRFRF0uZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbF9tYXBbU1VCTk9STUFMXS5leCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJhc2UgPSBQeVR1cGxlX1BhY2soMSwgRGVjaW1hbEV4Y2VwdGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChiYXNlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBBU1NJR05fUFRSKGNtLT5leCwgUHlFcnJfTmV3RXhjZXB0aW9uKChjaGFyICopY20tPmZxbmFtZSwgYmFzZSwgTlVMTCkpOworICAgICAgICBQeV9ERUNSRUYoYmFzZSk7CisKKyAgICAgICAgLyogYWRkIHRvIG1vZHVsZSAqLworICAgICAgICBQeV9JTkNSRUYoY20tPmV4KTsKKyAgICAgICAgQ0hFQ0tfSU5UKFB5TW9kdWxlX0FkZE9iamVjdChtLCBjbS0+bmFtZSwgY20tPmV4KSk7CisKKyAgICAgICAgLyogYWRkIHRvIHNpZ25hbCB0dXBsZSAqLworICAgICAgICBQeV9JTkNSRUYoY20tPmV4KTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShTaWduYWxUdXBsZSwgaSwgY20tPmV4KTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFVuZm9ydHVuYXRlbHksIEludmFsaWRPcGVyYXRpb24gaXMgYSBzaWduYWwgdGhhdCBjb21wcmlzZXMKKyAgICAgKiBzZXZlcmFsIGNvbmRpdGlvbnMsIGluY2x1ZGluZyBJbnZhbGlkT3BlcmF0aW9uISBOYW1pbmcgdGhlCisgICAgICogc2lnbmFsIElFRUVJbnZhbGlkT3BlcmF0aW9uIHdvdWxkIHByZXZlbnQgdGhlIGNvbmZ1c2lvbi4KKyAgICAgKi8KKyAgICBjb25kX21hcFswXS5leCA9IHNpZ25hbF9tYXBbMF0uZXg7CisKKyAgICAvKiBBZGQgcmVtYWluaW5nIGV4Y2VwdGlvbnMsIGluaGVyaXQgZnJvbSBJbnZhbGlkT3BlcmF0aW9uICovCisgICAgZm9yIChjbSA9IGNvbmRfbWFwKzE7IGNtLT5uYW1lICE9IE5VTEw7IGNtKyspIHsKKyAgICAgICAgUHlPYmplY3QgKmJhc2U7CisgICAgICAgIGlmIChjbS0+ZmxhZyA9PSBNUERfRGl2aXNpb25fdW5kZWZpbmVkKSB7CisgICAgICAgICAgICBiYXNlID0gUHlUdXBsZV9QYWNrKDIsIHNpZ25hbF9tYXBbMF0uZXgsIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGJhc2UgPSBQeVR1cGxlX1BhY2soMSwgc2lnbmFsX21hcFswXS5leCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJhc2UgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0lHTl9QVFIoY20tPmV4LCBQeUVycl9OZXdFeGNlcHRpb24oKGNoYXIgKiljbS0+ZnFuYW1lLCBiYXNlLCBOVUxMKSk7CisgICAgICAgIFB5X0RFQ1JFRihiYXNlKTsKKworICAgICAgICBQeV9JTkNSRUYoY20tPmV4KTsKKyAgICAgICAgQ0hFQ0tfSU5UKFB5TW9kdWxlX0FkZE9iamVjdChtLCBjbS0+bmFtZSwgY20tPmV4KSk7CisgICAgfQorCisKKyAgICAvKiBJbml0IGRlZmF1bHQgY29udGV4dCB0ZW1wbGF0ZSBmaXJzdCAqLworICAgIEFTU0lHTl9QVFIoZGVmYXVsdF9jb250ZXh0X3RlbXBsYXRlLAorICAgICAgICAgICAgICAgUHlPYmplY3RfQ2FsbE9iamVjdCgoUHlPYmplY3QgKikmUHlEZWNDb250ZXh0X1R5cGUsIE5VTEwpKTsKKyAgICBQeV9JTkNSRUYoZGVmYXVsdF9jb250ZXh0X3RlbXBsYXRlKTsKKyAgICBDSEVDS19JTlQoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJEZWZhdWx0Q29udGV4dCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X2NvbnRleHRfdGVtcGxhdGUpKTsKKworI2lmZGVmIFdJVEhPVVRfVEhSRUFEUworICAgIC8qIEluaXQgbW9kdWxlIGNvbnRleHQgKi8KKyAgICBBU1NJR05fUFRSKG1vZHVsZV9jb250ZXh0LAorICAgICAgICAgICAgICAgUHlPYmplY3RfQ2FsbE9iamVjdCgoUHlPYmplY3QgKikmUHlEZWNDb250ZXh0X1R5cGUsIE5VTEwpKTsKKyAgICBQeV9JTkNSRUYoUHlfRmFsc2UpOworICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkhBVkVfVEhSRUFEUyIsIFB5X0ZhbHNlKSk7CisjZWxzZQorICAgIEFTU0lHTl9QVFIodGxzX2NvbnRleHRfa2V5LCBQeVVuaWNvZGVfRnJvbVN0cmluZygiX19fREVDSU1BTF9DVFhfXyIpKTsKKyAgICBQeV9JTkNSRUYoUHlfVHJ1ZSk7CisgICAgQ0hFQ0tfSU5UKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiSEFWRV9USFJFQURTIiwgUHlfVHJ1ZSkpOworI2VuZGlmCisKKyAgICAvKiBJbml0IGJhc2ljIGNvbnRleHQgdGVtcGxhdGUgKi8KKyAgICBBU1NJR05fUFRSKGJhc2ljX2NvbnRleHRfdGVtcGxhdGUsCisgICAgICAgICAgICAgICBQeU9iamVjdF9DYWxsT2JqZWN0KChQeU9iamVjdCAqKSZQeURlY0NvbnRleHRfVHlwZSwgTlVMTCkpOworICAgIGluaXRfYmFzaWNfY29udGV4dChiYXNpY19jb250ZXh0X3RlbXBsYXRlKTsKKyAgICBQeV9JTkNSRUYoYmFzaWNfY29udGV4dF90ZW1wbGF0ZSk7CisgICAgQ0hFQ0tfSU5UKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQmFzaWNDb250ZXh0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2ljX2NvbnRleHRfdGVtcGxhdGUpKTsKKworICAgIC8qIEluaXQgZXh0ZW5kZWQgY29udGV4dCB0ZW1wbGF0ZSAqLworICAgIEFTU0lHTl9QVFIoZXh0ZW5kZWRfY29udGV4dF90ZW1wbGF0ZSwKKyAgICAgICAgICAgICAgIFB5T2JqZWN0X0NhbGxPYmplY3QoKFB5T2JqZWN0ICopJlB5RGVjQ29udGV4dF9UeXBlLCBOVUxMKSk7CisgICAgaW5pdF9leHRlbmRlZF9jb250ZXh0KGV4dGVuZGVkX2NvbnRleHRfdGVtcGxhdGUpOworICAgIFB5X0lOQ1JFRihleHRlbmRlZF9jb250ZXh0X3RlbXBsYXRlKTsKKyAgICBDSEVDS19JTlQoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJFeHRlbmRlZENvbnRleHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWRfY29udGV4dF90ZW1wbGF0ZSkpOworCisKKyAgICAvKiBJbml0IG1wZF9zc2l6ZV90IGNvbnN0YW50cyAqLworICAgIGZvciAoc3NpemVfY20gPSBzc2l6ZV9jb25zdGFudHM7IHNzaXplX2NtLT5uYW1lICE9IE5VTEw7IHNzaXplX2NtKyspIHsKKyAgICAgICAgQVNTSUdOX1BUUihvYmosIFB5TG9uZ19Gcm9tU3NpemVfdChzc2l6ZV9jbS0+dmFsKSk7CisgICAgICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRPYmplY3QobSwgc3NpemVfY20tPm5hbWUsIG9iaikpOworICAgICAgICBvYmogPSBOVUxMOworICAgIH0KKworICAgIC8qIEluaXQgaW50IGNvbnN0YW50cyAqLworICAgIGZvciAoaW50X2NtID0gaW50X2NvbnN0YW50czsgaW50X2NtLT5uYW1lICE9IE5VTEw7IGludF9jbSsrKSB7CisgICAgICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCBpbnRfY20tPm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfY20tPnZhbCkpOworICAgIH0KKworICAgIC8qIEluaXQgc3RyaW5nIGNvbnN0YW50cyAqLworICAgIGZvciAoaSA9IDA7IGkgPCBfUFlfREVDX1JPVU5EX0dVQVJEOyBpKyspIHsKKyAgICAgICAgQVNTSUdOX1BUUihyb3VuZF9tYXBbaV0sIFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKG1wZF9yb3VuZF9zdHJpbmdbaV0pKTsKKyAgICAgICAgUHlfSU5DUkVGKHJvdW5kX21hcFtpXSk7CisgICAgICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRPYmplY3QobSwgbXBkX3JvdW5kX3N0cmluZ1tpXSwgcm91bmRfbWFwW2ldKSk7CisgICAgfQorCisgICAgLyogQWRkIHNwZWNpZmljYXRpb24gdmVyc2lvbiBudW1iZXIgKi8KKyAgICBDSEVDS19JTlQoUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIl9fdmVyc2lvbl9fIiwgIiAxLjcwIikpOworCisKKyAgICByZXR1cm4gbTsKKworCitlcnJvcjoKKyAgICBQeV9DTEVBUihvYmopOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgUHlfQ0xFQVIobnVtYmVycyk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICBQeV9DTEVBUihOdW1iZXIpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgUHlfQ0xFQVIoUmF0aW9uYWwpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgUHlfQ0xFQVIoY29sbGVjdGlvbnMpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgUHlfQ0xFQVIoTXV0YWJsZU1hcHBpbmcpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgUHlfQ0xFQVIoU2lnbmFsVHVwbGUpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgUHlfQ0xFQVIoRGVjaW1hbFR1cGxlKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworI2lmZGVmIFdJVEhPVVRfVEhSRUFEUworICAgIFB5X0NMRUFSKG1vZHVsZV9jb250ZXh0KTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworI2Vsc2UKKyAgICBQeV9DTEVBUihkZWZhdWx0X2NvbnRleHRfdGVtcGxhdGUpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgUHlfQ0xFQVIodGxzX2NvbnRleHRfa2V5KTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworI2VuZGlmCisgICAgUHlfQ0xFQVIoYmFzaWNfY29udGV4dF90ZW1wbGF0ZSk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICBQeV9DTEVBUihleHRlbmRlZF9jb250ZXh0X3RlbXBsYXRlKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIFB5X0NMRUFSKG0pOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisKKyAgICByZXR1cm4gTlVMTDsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworfQorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvZG9jc3RyaW5ncy5oIGIvTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY0OTBiOQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvZG9jc3RyaW5ncy5oCkBAIC0wLDAgKzEsNzcxIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMTIgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBNb2RpZmllZCBhbmQgZXh0ZW5kZWQgYnkgU3RlZmFuIEtyYWguCisgKi8KKworCisjaWZuZGVmIERPQ1NUUklOR1NfSAorI2RlZmluZSBET0NTVFJJTkdTX0gKKworCisjaW5jbHVkZSAicHltYWNyby5oIgorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kdWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCitQeURvY19TVFJWQVIoZG9jX19kZWNpbWFsLAorIkMgZGVjaW1hbCBhcml0aG1ldGljIG1vZHVsZSIpOworCitQeURvY19TVFJWQVIoZG9jX2dldGNvbnRleHQsIlxuXAorZ2V0Y29udGV4dCgpIC0gR2V0IHRoZSBjdXJyZW50IGRlZmF1bHQgY29udGV4dC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2Nfc2V0Y29udGV4dCwiXG5cCitzZXRjb250ZXh0KGMpIC0gU2V0IGEgbmV3IGRlZmF1bHQgY29udGV4dC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbG9jYWxjb250ZXh0LCJcblwKK2xvY2FsY29udGV4dChjdHg9Tm9uZSkgLSBSZXR1cm4gYSBjb250ZXh0IG1hbmFnZXIgdGhhdCB3aWxsIHNldCB0aGUgZGVmYXVsdFxuXAorY29udGV4dCB0byBhIGNvcHkgb2YgY3R4IG9uIGVudHJ5IHRvIHRoZSB3aXRoLXN0YXRlbWVudCBhbmQgcmVzdG9yZSB0aGVcblwKK3ByZXZpb3VzIGRlZmF1bHQgY29udGV4dCB3aGVuIGV4aXRpbmcgdGhlIHdpdGgtc3RhdGVtZW50LiBJZiBubyBjb250ZXh0IGlzXG5cCitzcGVjaWZpZWQsIGEgY29weSBvZiB0aGUgY3VycmVudCBkZWZhdWx0IGNvbnRleHQgaXMgdXNlZC5cblwKK1xuIik7CisKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCitQeURvY19TVFJWQVIoZG9jX2llZWVfY29udGV4dCwiXG5cCitJRUVFQ29udGV4dChiaXRzKSAtIFJldHVybiBhIGNvbnRleHQgb2JqZWN0IGluaXRpYWxpemVkIHRvIHRoZSBwcm9wZXIgdmFsdWVzIGZvclxuXAorb25lIG9mIHRoZSBJRUVFIGludGVyY2hhbmdlIGZvcm1hdHMuIFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzIgYW5kXG5cCitsZXNzIHRoYW4gSUVFRV9DT05URVhUX01BWF9CSVRTLiBGb3IgdGhlIG1vc3QgY29tbW9uIHZhbHVlcywgdGhlIGNvbnN0YW50c1xuXAorREVDSU1BTDMyLCBERUNJTUFMNjQgYW5kIERFQ0lNQUwxMjggYXJlIHByb3ZpZGVkLlxuXAorXG4iKTsKKyNlbmRpZgorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCBPYmplY3QgYW5kIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworUHlEb2NfU1RSVkFSKGRvY19kZWNpbWFsLCJcblwKK0RlY2ltYWwodmFsdWU9XCIwXCIsIGNvbnRleHQ9Tm9uZSk6IENvbnN0cnVjdCBhIG5ldyBEZWNpbWFsIG9iamVjdC5cblwKK3ZhbHVlIGNhbiBiZSBhbiBpbnRlZ2VyLCBzdHJpbmcsIHR1cGxlLCBvciBhbm90aGVyIERlY2ltYWwgb2JqZWN0LlxuXAorSWYgbm8gdmFsdWUgaXMgZ2l2ZW4sIHJldHVybiBEZWNpbWFsKCcwJykuIFRoZSBjb250ZXh0IGRvZXMgbm90IGFmZmVjdFxuXAordGhlIGNvbnZlcnNpb24gYW5kIGlzIG9ubHkgcGFzc2VkIHRvIGRldGVybWluZSBpZiB0aGUgSW52YWxpZE9wZXJhdGlvblxuXAordHJhcCBpcyBhY3RpdmUuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2FkanVzdGVkLCJcblwKK2FkanVzdGVkKCkgLSBSZXR1cm4gdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHRoZSBudW1iZXIuXG5cCitcblwKK0RlZmluZWQgYXMgZXhwICsgZGlnaXRzIC0gMS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfYXNfdHVwbGUsIlxuXAorYXNfdHVwbGUoKSAtIFJldHVybiBhIHR1cGxlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2Nhbm9uaWNhbCwiXG5cCitjYW5vbmljYWwoKSAtIFJldHVybiB0aGUgY2Fub25pY2FsIGVuY29kaW5nIG9mIHRoZSBhcmd1bWVudC4gQ3VycmVudGx5LFxuXAordGhlIGVuY29kaW5nIG9mIGEgRGVjaW1hbCBpbnN0YW5jZSBpcyBhbHdheXMgY2Fub25pY2FsLCBzbyB0aGlzIG9wZXJhdGlvblxuXAorcmV0dXJucyBpdHMgYXJndW1lbnQgdW5jaGFuZ2VkLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jb21wYXJlLCJcblwKK2NvbXBhcmUob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBDb21wYXJlIHNlbGYgdG8gb3RoZXIuIFJldHVybiBhIGRlY2ltYWwgdmFsdWU6XG5cCitcblwKKyAgICBhIG9yIGIgaXMgYSBOYU4gPT0+IERlY2ltYWwoJ05hTicpXG5cCisgICAgYSA8IGIgICAgICAgICAgID09PiBEZWNpbWFsKCctMScpXG5cCisgICAgYSA9PSBiICAgICAgICAgID09PiBEZWNpbWFsKCcwJylcblwKKyAgICBhID4gYiAgICAgICAgICAgPT0+IERlY2ltYWwoJzEnKVxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jb21wYXJlX3NpZ25hbCwiXG5cCitjb21wYXJlX3NpZ25hbChvdGhlciwgY29udGV4dD1Ob25lKSAtIElkZW50aWNhbCB0byBjb21wYXJlLCBleGNlcHQgdGhhdFxuXAorYWxsIE5hTnMgc2lnbmFsLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jb21wYXJlX3RvdGFsLCJcblwKK2NvbXBhcmVfdG90YWwob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBDb21wYXJlIHR3byBvcGVyYW5kcyB1c2luZyB0aGVpclxuXAorYWJzdHJhY3QgcmVwcmVzZW50YXRpb24gcmF0aGVyIHRoYW4gdGhlaXIgbnVtZXJpY2FsIHZhbHVlLiBTaW1pbGFyIHRvIHRoZVxuXAorY29tcGFyZSgpIG1ldGhvZCwgYnV0IHRoZSByZXN1bHQgZ2l2ZXMgYSB0b3RhbCBvcmRlcmluZyBvbiBEZWNpbWFsIGluc3RhbmNlcy5cblwKK1R3byBEZWNpbWFsIGluc3RhbmNlcyB3aXRoIHRoZSBzYW1lIG51bWVyaWMgdmFsdWUgYnV0IGRpZmZlcmVudCByZXByZXNlbnRhdGlvbnNcblwKK2NvbXBhcmUgdW5lcXVhbCBpbiB0aGlzIG9yZGVyaW5nOlxuXAorXG5cCisgICAgPj4+IERlY2ltYWwoJzEyLjAnKS5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyJykpXG5cCisgICAgRGVjaW1hbCgnLTEnKVxuXAorXG5cCitRdWlldCBhbmQgc2lnbmFsaW5nIE5hTnMgYXJlIGFsc28gaW5jbHVkZWQgaW4gdGhlIHRvdGFsIG9yZGVyaW5nLiBUaGUgcmVzdWx0XG5cCitvZiB0aGlzIGZ1bmN0aW9uIGlzIERlY2ltYWwoJzAnKSBpZiBib3RoIG9wZXJhbmRzIGhhdmUgdGhlIHNhbWUgcmVwcmVzZW50YXRpb24sXG5cCitEZWNpbWFsKCctMScpIGlmIHRoZSBmaXJzdCBvcGVyYW5kIGlzIGxvd2VyIGluIHRoZSB0b3RhbCBvcmRlciB0aGFuIHRoZSBzZWNvbmQsXG5cCithbmQgRGVjaW1hbCgnMScpIGlmIHRoZSBmaXJzdCBvcGVyYW5kIGlzIGhpZ2hlciBpbiB0aGUgdG90YWwgb3JkZXIgdGhhbiB0aGVcblwKK3NlY29uZCBvcGVyYW5kLiBTZWUgdGhlIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMgb2YgdGhlIHRvdGFsIG9yZGVyLlxuXAorXG5cCitUaGlzIG9wZXJhdGlvbiBpcyB1bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZFxuXAorYW5kIG5vIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4gQXMgYW4gZXhjZXB0aW9uLCB0aGUgQyB2ZXJzaW9uIG1heSByYWlzZVxuXAorSW52YWxpZE9wZXJhdGlvbiBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBleGFjdGx5LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jb21wYXJlX3RvdGFsX21hZywiXG5cCitjb21wYXJlX3RvdGFsX21hZyhvdGhlciwgY29udGV4dD1Ob25lKSAtIENvbXBhcmUgdHdvIG9wZXJhbmRzIHVzaW5nIHRoZWlyXG5cCithYnN0cmFjdCByZXByZXNlbnRhdGlvbiByYXRoZXIgdGhhbiB0aGVpciB2YWx1ZSBhcyBpbiBjb21wYXJlX3RvdGFsKCksIGJ1dFxuXAoraWdub3JpbmcgdGhlIHNpZ24gb2YgZWFjaCBvcGVyYW5kLiB4LmNvbXBhcmVfdG90YWxfbWFnKHkpIGlzIGVxdWl2YWxlbnQgdG9cblwKK3guY29weV9hYnMoKS5jb21wYXJlX3RvdGFsKHkuY29weV9hYnMoKSkuXG5cCitcblwKK1RoaXMgb3BlcmF0aW9uIGlzIHVuYWZmZWN0ZWQgYnkgY29udGV4dCBhbmQgaXMgcXVpZXQ6IG5vIGZsYWdzIGFyZSBjaGFuZ2VkXG5cCithbmQgbm8gcm91bmRpbmcgaXMgcGVyZm9ybWVkLiBBcyBhbiBleGNlcHRpb24sIHRoZSBDIHZlcnNpb24gbWF5IHJhaXNlXG5cCitJbnZhbGlkT3BlcmF0aW9uIGlmIHRoZSBzZWNvbmQgb3BlcmFuZCBjYW5ub3QgYmUgY29udmVydGVkIGV4YWN0bHkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2Nvbmp1Z2F0ZSwiXG5cCitjb25qdWdhdGUoKSAtIFJldHVybiBzZWxmLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jb3B5X2FicywiXG5cCitjb3B5X2FicygpIC0gUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgYXJndW1lbnQuIFRoaXMgb3BlcmF0aW9uXG5cCitpcyB1bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZCBhbmQgbm8gcm91bmRpbmdcblwKK2lzIHBlcmZvcm1lZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY29weV9uZWdhdGUsIlxuXAorY29weV9uZWdhdGUoKSAtIFJldHVybiB0aGUgbmVnYXRpb24gb2YgdGhlIGFyZ3VtZW50LiBUaGlzIG9wZXJhdGlvbiBpc1xuXAordW5hZmZlY3RlZCBieSBjb250ZXh0IGFuZCBpcyBxdWlldDogbm8gZmxhZ3MgYXJlIGNoYW5nZWQgYW5kIG5vIHJvdW5kaW5nXG5cCitpcyBwZXJmb3JtZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2NvcHlfc2lnbiwiXG5cCitjb3B5X3NpZ24ob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gYSBjb3B5IG9mIHRoZSBmaXJzdCBvcGVyYW5kIHdpdGhcblwKK3RoZSBzaWduIHNldCB0byBiZSB0aGUgc2FtZSBhcyB0aGUgc2lnbiBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuIEZvciBleGFtcGxlOlxuXAorXG5cCisgICAgPj4+IERlY2ltYWwoJzIuMycpLmNvcHlfc2lnbihEZWNpbWFsKCctMS41JykpXG5cCisgICAgRGVjaW1hbCgnLTIuMycpXG5cCitcblwKK1RoaXMgb3BlcmF0aW9uIGlzIHVuYWZmZWN0ZWQgYnkgY29udGV4dCBhbmQgaXMgcXVpZXQ6IG5vIGZsYWdzIGFyZSBjaGFuZ2VkXG5cCithbmQgbm8gcm91bmRpbmcgaXMgcGVyZm9ybWVkLiBBcyBhbiBleGNlcHRpb24sIHRoZSBDIHZlcnNpb24gbWF5IHJhaXNlXG5cCitJbnZhbGlkT3BlcmF0aW9uIGlmIHRoZSBzZWNvbmQgb3BlcmFuZCBjYW5ub3QgYmUgY29udmVydGVkIGV4YWN0bHkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2V4cCwiXG5cCitleHAoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIChuYXR1cmFsKSBleHBvbmVudGlhbCBmdW5jdGlvblxuXAorZSoqeCBhdCB0aGUgZ2l2ZW4gbnVtYmVyLiBUaGUgZnVuY3Rpb24gYWx3YXlzIHVzZXMgdGhlIFJPVU5EX0hBTEZfRVZFTiBtb2RlXG5cCithbmQgdGhlIHJlc3VsdCBpcyBjb3JyZWN0bHkgcm91bmRlZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfZnJvbV9mbG9hdCwiXG5cCitmcm9tX2Zsb2F0KGYpIC0gQ2xhc3MgbWV0aG9kIHRoYXQgY29udmVydHMgYSBmbG9hdCB0byBhIGRlY2ltYWwgbnVtYmVyLCBleGFjdGx5LlxuXAorU2luY2UgMC4xIGlzIG5vdCBleGFjdGx5IHJlcHJlc2VudGFibGUgaW4gYmluYXJ5IGZsb2F0aW5nIHBvaW50LFxuXAorRGVjaW1hbC5mcm9tX2Zsb2F0KDAuMSkgaXMgbm90IHRoZSBzYW1lIGFzIERlY2ltYWwoJzAuMScpLlxuXAorXG5cCisgICAgPj4+IERlY2ltYWwuZnJvbV9mbG9hdCgwLjEpXG5cCisgICAgRGVjaW1hbCgnMC4xMDAwMDAwMDAwMDAwMDAwMDU1NTExMTUxMjMxMjU3ODI3MDIxMTgxNTgzNDA0NTQxMDE1NjI1JylcblwKKyAgICA+Pj4gRGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCduYW4nKSlcblwKKyAgICBEZWNpbWFsKCdOYU4nKVxuXAorICAgID4+PiBEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ2luZicpKVxuXAorICAgIERlY2ltYWwoJ0luZmluaXR5JylcblwKKyAgICA+Pj4gRGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCctaW5mJykpXG5cCisgICAgRGVjaW1hbCgnLUluZmluaXR5JylcblwKK1xuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19mbWEsIlxuXAorZm1hKG90aGVyLCB0aGlyZCwgY29udGV4dD1Ob25lKSAtIEZ1c2VkIG11bHRpcGx5LWFkZC4gUmV0dXJuIHNlbGYqb3RoZXIrdGhpcmRcblwKK3dpdGggbm8gcm91bmRpbmcgb2YgdGhlIGludGVybWVkaWF0ZSBwcm9kdWN0IHNlbGYqb3RoZXIuXG5cCitcblwKKyAgICA+Pj4gRGVjaW1hbCgyKS5mbWEoMywgNSlcblwKKyAgICBEZWNpbWFsKCcxMScpXG5cCitcblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfaXNfY2Fub25pY2FsLCJcblwKK2lzX2Nhbm9uaWNhbCgpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGNhbm9uaWNhbCBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorQ3VycmVudGx5LCBhIERlY2ltYWwgaW5zdGFuY2UgaXMgYWx3YXlzIGNhbm9uaWNhbCwgc28gdGhpcyBvcGVyYXRpb24gYWx3YXlzXG5cCityZXR1cm5zIFRydWUuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2lzX2Zpbml0ZSwiXG5cCitpc19maW5pdGUoKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIGZpbml0ZSBudW1iZXIsIGFuZCBGYWxzZSBpZiB0aGVcblwKK2FyZ3VtZW50IGlzIGluZmluaXRlIG9yIGEgTmFOLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19pc19pbmZpbml0ZSwiXG5cCitpc19pbmZpbml0ZSgpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGVpdGhlciBwb3NpdGl2ZSBvciBuZWdhdGl2ZVxuXAoraW5maW5pdHkgYW5kIEZhbHNlIG90aGVyd2lzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfaXNfbmFuLCJcblwKK2lzX25hbigpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgKHF1aWV0IG9yIHNpZ25hbGluZykgTmFOIGFuZFxuXAorRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19pc19ub3JtYWwsIlxuXAoraXNfbm9ybWFsKGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSBub3JtYWwgZmluaXRlXG5cCitub24temVybyBudW1iZXIgd2l0aCBhbiBhZGp1c3RlZCBleHBvbmVudCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gRW1pbi5cblwKK1JldHVybiBGYWxzZSBpZiB0aGUgYXJndW1lbnQgaXMgemVybywgc3Vibm9ybWFsLCBpbmZpbml0ZSBvciBhIE5hTi5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfaXNfcW5hbiwiXG5cCitpc19xbmFuKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSBxdWlldCBOYU4sIGFuZCBGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2lzX3NpZ25lZCwiXG5cCitpc19zaWduZWQoKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBoYXMgYSBuZWdhdGl2ZSBzaWduIGFuZFxuXAorRmFsc2Ugb3RoZXJ3aXNlLiBOb3RlIHRoYXQgYm90aCB6ZXJvcyBhbmQgTmFOcyBjYW4gY2Fycnkgc2lnbnMuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2lzX3NuYW4sIlxuXAoraXNfc25hbigpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgc2lnbmFsaW5nIE5hTiBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19pc19zdWJub3JtYWwsIlxuXAoraXNfc3Vibm9ybWFsKGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgc3Vibm9ybWFsLCBhbmRcblwKK0ZhbHNlIG90aGVyd2lzZS4gQSBudW1iZXIgaXMgc3Vibm9ybWFsIGlmIGl0IGlzIG5vbi16ZXJvLCBmaW5pdGUsIGFuZCBoYXMgYW5cblwKK2FkanVzdGVkIGV4cG9uZW50IGxlc3MgdGhhbiBFbWluLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19pc196ZXJvLCJcblwKK2lzX3plcm8oKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIChwb3NpdGl2ZSBvciBuZWdhdGl2ZSkgemVybyBhbmRcblwKK0ZhbHNlIG90aGVyd2lzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbG4sIlxuXAorbG4oY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgbmF0dXJhbCAoYmFzZSBlKSBsb2dhcml0aG0gb2YgdGhlIG9wZXJhbmQuXG5cCitUaGUgZnVuY3Rpb24gYWx3YXlzIHVzZXMgdGhlIFJPVU5EX0hBTEZfRVZFTiBtb2RlIGFuZCB0aGUgcmVzdWx0IGlzXG5cCitjb3JyZWN0bHkgcm91bmRlZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbG9nMTAsIlxuXAorbG9nMTAoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgYmFzZSB0ZW4gbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLlxuXAorVGhlIGZ1bmN0aW9uIGFsd2F5cyB1c2VzIHRoZSBST1VORF9IQUxGX0VWRU4gbW9kZSBhbmQgdGhlIHJlc3VsdCBpc1xuXAorY29ycmVjdGx5IHJvdW5kZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2xvZ2IsIlxuXAorbG9nYihjb250ZXh0PU5vbmUpIC0gRm9yIGEgbm9uLXplcm8gbnVtYmVyLCByZXR1cm4gdGhlIGFkanVzdGVkIGV4cG9uZW50XG5cCitvZiB0aGUgb3BlcmFuZCBhcyBhIERlY2ltYWwgaW5zdGFuY2UuIElmIHRoZSBvcGVyYW5kIGlzIGEgemVybywgdGhlblxuXAorRGVjaW1hbCgnLUluZmluaXR5JykgaXMgcmV0dXJuZWQgYW5kIHRoZSBEaXZpc2lvbkJ5WmVybyBjb25kaXRpb24gaXNcblwKK3JhaXNlZC4gSWYgdGhlIG9wZXJhbmQgaXMgYW4gaW5maW5pdHkgdGhlbiBEZWNpbWFsKCdJbmZpbml0eScpIGlzIHJldHVybmVkLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19sb2dpY2FsX2FuZCwiXG5cCitsb2dpY2FsX2FuZChvdGhlciwgY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgZGlnaXQtd2lzZSBhbmQgb2YgdGhlIHR3b1xuXAorKGxvZ2ljYWwpIG9wZXJhbmRzLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19sb2dpY2FsX2ludmVydCwiXG5cCitsb2dpY2FsX2ludmVydChjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSBkaWdpdC13aXNlIGludmVyc2lvbiBvZiB0aGVcblwKKyhsb2dpY2FsKSBvcGVyYW5kLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19sb2dpY2FsX29yLCJcblwKK2xvZ2ljYWxfb3Iob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIGRpZ2l0LXdpc2Ugb3Igb2YgdGhlIHR3b1xuXAorKGxvZ2ljYWwpIG9wZXJhbmRzLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19sb2dpY2FsX3hvciwiXG5cCitsb2dpY2FsX3hvcihvdGhlciwgY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgZGlnaXQtd2lzZSBleGNsdXNpdmUgb3Igb2YgdGhlXG5cCit0d28gKGxvZ2ljYWwpIG9wZXJhbmRzLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19tYXgsIlxuXAorbWF4KG90aGVyLCBjb250ZXh0PU5vbmUpIC0gTWF4aW11bSBvZiBzZWxmIGFuZCBvdGhlci4gSWYgb25lIG9wZXJhbmQgaXMgYVxuXAorcXVpZXQgTmFOIGFuZCB0aGUgb3RoZXIgaXMgbnVtZXJpYywgdGhlIG51bWVyaWMgb3BlcmFuZCBpcyByZXR1cm5lZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbWF4X21hZywiXG5cCittYXhfbWFnKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gU2ltaWxhciB0byB0aGUgbWF4KCkgbWV0aG9kLCBidXQgdGhlXG5cCitjb21wYXJpc29uIGlzIGRvbmUgdXNpbmcgdGhlIGFic29sdXRlIHZhbHVlcyBvZiB0aGUgb3BlcmFuZHMuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX21pbiwiXG5cCittaW4ob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBNaW5pbXVtIG9mIHNlbGYgYW5kIG90aGVyLiBJZiBvbmUgb3BlcmFuZCBpcyBhXG5cCitxdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpcyBudW1lcmljLCB0aGUgbnVtZXJpYyBvcGVyYW5kIGlzIHJldHVybmVkLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19taW5fbWFnLCJcblwKK21pbl9tYWcob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBTaW1pbGFyIHRvIHRoZSBtaW4oKSBtZXRob2QsIGJ1dCB0aGVcblwKK2NvbXBhcmlzb24gaXMgZG9uZSB1c2luZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZSBvcGVyYW5kcy5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbmV4dF9taW51cywiXG5cCituZXh0X21pbnVzKGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIGxhcmdlc3QgbnVtYmVyIHJlcHJlc2VudGFibGUgaW4gdGhlXG5cCitnaXZlbiBjb250ZXh0IChvciBpbiB0aGUgY3VycmVudCBkZWZhdWx0IGNvbnRleHQgaWYgbm8gY29udGV4dCBpcyBnaXZlbikgdGhhdFxuXAoraXMgc21hbGxlciB0aGFuIHRoZSBnaXZlbiBvcGVyYW5kLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19uZXh0X3BsdXMsIlxuXAorbmV4dF9wbHVzKGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIHNtYWxsZXN0IG51bWJlciByZXByZXNlbnRhYmxlIGluIHRoZVxuXAorZ2l2ZW4gY29udGV4dCAob3IgaW4gdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlmIG5vIGNvbnRleHQgaXMgZ2l2ZW4pIHRoYXRcblwKK2lzIGxhcmdlciB0aGFuIHRoZSBnaXZlbiBvcGVyYW5kLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19uZXh0X3Rvd2FyZCwiXG5cCituZXh0X3Rvd2FyZChvdGhlciwgY29udGV4dD1Ob25lKSAtIElmIHRoZSB0d28gb3BlcmFuZHMgYXJlIHVuZXF1YWwsIHJldHVyblxuXAordGhlIG51bWJlciBjbG9zZXN0IHRvIHRoZSBmaXJzdCBvcGVyYW5kIGluIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHNlY29uZCBvcGVyYW5kLlxuXAorSWYgYm90aCBvcGVyYW5kcyBhcmUgbnVtZXJpY2FsbHkgZXF1YWwsIHJldHVybiBhIGNvcHkgb2YgdGhlIGZpcnN0IG9wZXJhbmRcblwKK3dpdGggdGhlIHNpZ24gc2V0IHRvIGJlIHRoZSBzYW1lIGFzIHRoZSBzaWduIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2Nfbm9ybWFsaXplLCJcblwKK25vcm1hbGl6ZShjb250ZXh0PU5vbmUpIC0gTm9ybWFsaXplIHRoZSBudW1iZXIgYnkgc3RyaXBwaW5nIHRoZSByaWdodG1vc3RcblwKK3RyYWlsaW5nIHplcm9zIGFuZCBjb252ZXJ0aW5nIGFueSByZXN1bHQgZXF1YWwgdG8gRGVjaW1hbCgnMCcpIHRvIERlY2ltYWwoJzBlMCcpLlxuXAorVXNlZCBmb3IgcHJvZHVjaW5nIGNhbm9uaWNhbCB2YWx1ZXMgZm9yIG1lbWJlcnMgb2YgYW4gZXF1aXZhbGVuY2UgY2xhc3MuIEZvclxuXAorZXhhbXBsZSwgRGVjaW1hbCgnMzIuMTAwJykgYW5kIERlY2ltYWwoJzAuMzIxMDAwZSsyJykgYm90aCBub3JtYWxpemUgdG8gdGhlXG5cCitlcXVpdmFsZW50IHZhbHVlIERlY2ltYWwoJzMyLjEnKS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbnVtYmVyX2NsYXNzLCJcblwKK251bWJlcl9jbGFzcyhjb250ZXh0PU5vbmUpIC0gUmV0dXJuIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGNsYXNzIG9mIHRoZVxuXAorb3BlcmFuZC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHRlbiBzdHJpbmdzOlxuXAorXG5cCisgICAgKiAnLUluZmluaXR5JywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIG5lZ2F0aXZlIGluZmluaXR5LlxuXAorICAgICogJy1Ob3JtYWwnLCBpbmRpY2F0aW5nIHRoYXQgdGhlIG9wZXJhbmQgaXMgYSBuZWdhdGl2ZSBub3JtYWwgbnVtYmVyLlxuXAorICAgICogJy1TdWJub3JtYWwnLCBpbmRpY2F0aW5nIHRoYXQgdGhlIG9wZXJhbmQgaXMgbmVnYXRpdmUgYW5kIHN1Ym5vcm1hbC5cblwKKyAgICAqICctWmVybycsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBhIG5lZ2F0aXZlIHplcm8uXG5cCisgICAgKiAnK1plcm8nLCBpbmRpY2F0aW5nIHRoYXQgdGhlIG9wZXJhbmQgaXMgYSBwb3NpdGl2ZSB6ZXJvLlxuXAorICAgICogJytTdWJub3JtYWwnLCBpbmRpY2F0aW5nIHRoYXQgdGhlIG9wZXJhbmQgaXMgcG9zaXRpdmUgYW5kIHN1Ym5vcm1hbC5cblwKKyAgICAqICcrTm9ybWFsJywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgcG9zaXRpdmUgbm9ybWFsIG51bWJlci5cblwKKyAgICAqICcrSW5maW5pdHknLCBpbmRpY2F0aW5nIHRoYXQgdGhlIG9wZXJhbmQgaXMgcG9zaXRpdmUgaW5maW5pdHkuXG5cCisgICAgKiAnTmFOJywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIChOb3QgYSBOdW1iZXIpLlxuXAorICAgICogJ3NOYU4nLCBpbmRpY2F0aW5nIHRoYXQgdGhlIG9wZXJhbmQgaXMgYSBzaWduYWxpbmcgTmFOLlxuXAorXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3F1YW50aXplLCJcblwKK3F1YW50aXplKGV4cCwgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKSAtIFJldHVybiBhIHZhbHVlIGVxdWFsIHRvIHRoZVxuXAorZmlyc3Qgb3BlcmFuZCBhZnRlciByb3VuZGluZyBhbmQgaGF2aW5nIHRoZSBleHBvbmVudCBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuXG5cCitcblwKKyAgICA+Pj4gRGVjaW1hbCgnMS40MTQyMTM1NicpLnF1YW50aXplKERlY2ltYWwoJzEuMDAwJykpXG5cCisgICAgRGVjaW1hbCgnMS40MTQnKVxuXAorXG5cCitVbmxpa2Ugb3RoZXIgb3BlcmF0aW9ucywgaWYgdGhlIGxlbmd0aCBvZiB0aGUgY29lZmZpY2llbnQgYWZ0ZXIgdGhlIHF1YW50aXplXG5cCitvcGVyYXRpb24gd291bGQgYmUgZ3JlYXRlciB0aGFuIHByZWNpc2lvbiwgdGhlbiBhbiBJbnZhbGlkT3BlcmF0aW9uIGlzIHNpZ25hbGVkLlxuXAorVGhpcyBndWFyYW50ZWVzIHRoYXQsIHVubGVzcyB0aGVyZSBpcyBhbiBlcnJvciBjb25kaXRpb24sIHRoZSBxdWFudGl6ZWQgZXhwb25lbnRcblwKK2lzIGFsd2F5cyBlcXVhbCB0byB0aGF0IG9mIHRoZSByaWdodC1oYW5kIG9wZXJhbmQuXG5cCitcblwKK0Fsc28gdW5saWtlIG90aGVyIG9wZXJhdGlvbnMsIHF1YW50aXplIG5ldmVyIHNpZ25hbHMgVW5kZXJmbG93LCBldmVuIGlmIHRoZVxuXAorcmVzdWx0IGlzIHN1Ym5vcm1hbCBhbmQgaW5leGFjdC5cblwKK1xuXAorSWYgdGhlIGV4cG9uZW50IG9mIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBsYXJnZXIgdGhhbiB0aGF0IG9mIHRoZSBmaXJzdCwgdGhlblxuXAorcm91bmRpbmcgbWF5IGJlIG5lY2Vzc2FyeS4gSW4gdGhpcyBjYXNlLCB0aGUgcm91bmRpbmcgbW9kZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZVxuXAorcm91bmRpbmcgYXJndW1lbnQgaWYgZ2l2ZW4sIGVsc2UgYnkgdGhlIGdpdmVuIGNvbnRleHQgYXJndW1lbnQ7IGlmIG5laXRoZXJcblwKK2FyZ3VtZW50IGlzIGdpdmVuLCB0aGUgcm91bmRpbmcgbW9kZSBvZiB0aGUgY3VycmVudCB0aHJlYWQncyBjb250ZXh0IGlzIHVzZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3JhZGl4LCJcblwKK3JhZGl4KCkgLSBSZXR1cm4gRGVjaW1hbCgxMCksIHRoZSByYWRpeCAoYmFzZSkgaW4gd2hpY2ggdGhlIERlY2ltYWwgY2xhc3MgZG9lc1xuXAorYWxsIGl0cyBhcml0aG1ldGljLiBJbmNsdWRlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBzcGVjaWZpY2F0aW9uLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19yZW1haW5kZXJfbmVhciwiXG5cCityZW1haW5kZXJfbmVhcihvdGhlciwgY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgcmVtYWluZGVyIGZyb20gZGl2aWRpbmdcblwKK3NlbGYgYnkgb3RoZXIuIFRoaXMgZGlmZmVycyBmcm9tIHNlbGYgJSBvdGhlciBpbiB0aGF0IHRoZSBzaWduIG9mIHRoZVxuXAorcmVtYWluZGVyIGlzIGNob3NlbiBzbyBhcyB0byBtaW5pbWl6ZSBpdHMgYWJzb2x1dGUgdmFsdWUuIE1vcmUgcHJlY2lzZWx5LCB0aGVcblwKK3JldHVybiB2YWx1ZSBpcyBzZWxmIC0gbiAqIG90aGVyIHdoZXJlIG4gaXMgdGhlIGludGVnZXIgbmVhcmVzdCB0byB0aGUgZXhhY3RcblwKK3ZhbHVlIG9mIHNlbGYgLyBvdGhlciwgYW5kIGlmIHR3byBpbnRlZ2VycyBhcmUgZXF1YWxseSBuZWFyIHRoZW4gdGhlIGV2ZW4gb25lXG5cCitpcyBjaG9zZW4uXG5cCitcblwKK0lmIHRoZSByZXN1bHQgaXMgemVybyB0aGVuIGl0cyBzaWduIHdpbGwgYmUgdGhlIHNpZ24gb2Ygc2VsZi5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2Nfcm90YXRlLCJcblwKK3JvdGF0ZShvdGhlciwgY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgcmVzdWx0IG9mIHJvdGF0aW5nIHRoZSBkaWdpdHMgb2YgdGhlXG5cCitmaXJzdCBvcGVyYW5kIGJ5IGFuIGFtb3VudCBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBvcGVyYW5kLiBUaGUgc2Vjb25kIG9wZXJhbmRcblwKK211c3QgYmUgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgLXByZWNpc2lvbiB0aHJvdWdoIHByZWNpc2lvbi4gVGhlIGFic29sdXRlXG5cCit2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQgZ2l2ZXMgdGhlIG51bWJlciBvZiBwbGFjZXMgdG8gcm90YXRlLiBJZiB0aGUgc2Vjb25kXG5cCitvcGVyYW5kIGlzIHBvc2l0aXZlIHRoZW4gcm90YXRpb24gaXMgdG8gdGhlIGxlZnQ7IG90aGVyd2lzZSByb3RhdGlvbiBpcyB0byB0aGVcblwKK3JpZ2h0LiBUaGUgY29lZmZpY2llbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQgaXMgcGFkZGVkIG9uIHRoZSBsZWZ0IHdpdGggemVyb3MgdG9cblwKK2xlbmd0aCBwcmVjaXNpb24gaWYgbmVjZXNzYXJ5LiBUaGUgc2lnbiBhbmQgZXhwb25lbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQgYXJlXG5cCit1bmNoYW5nZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3NhbWVfcXVhbnR1bSwiXG5cCitzYW1lX3F1YW50dW0ob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBUZXN0IHdoZXRoZXIgc2VsZiBhbmQgb3RoZXIgaGF2ZSB0aGVcblwKK3NhbWUgZXhwb25lbnQgb3Igd2hldGhlciBib3RoIGFyZSBOYU4uXG5cCitcblwKK1RoaXMgb3BlcmF0aW9uIGlzIHVuYWZmZWN0ZWQgYnkgY29udGV4dCBhbmQgaXMgcXVpZXQ6IG5vIGZsYWdzIGFyZSBjaGFuZ2VkXG5cCithbmQgbm8gcm91bmRpbmcgaXMgcGVyZm9ybWVkLiBBcyBhbiBleGNlcHRpb24sIHRoZSBDIHZlcnNpb24gbWF5IHJhaXNlXG5cCitJbnZhbGlkT3BlcmF0aW9uIGlmIHRoZSBzZWNvbmQgb3BlcmFuZCBjYW5ub3QgYmUgY29udmVydGVkIGV4YWN0bHkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3NjYWxlYiwiXG5cCitzY2FsZWIob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgZXhwb25lbnRcblwKK2FkanVzdGVkIHRoZSBzZWNvbmQuIEVxdWl2YWxlbnRseSwgcmV0dXJuIHRoZSBmaXJzdCBvcGVyYW5kIG11bHRpcGxpZWQgYnlcblwKKzEwKipvdGhlci4gVGhlIHNlY29uZCBvcGVyYW5kIG11c3QgYmUgYW4gaW50ZWdlci5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2Nfc2hpZnQsIlxuXAorc2hpZnQob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIHJlc3VsdCBvZiBzaGlmdGluZyB0aGUgZGlnaXRzIG9mXG5cCit0aGUgZmlyc3Qgb3BlcmFuZCBieSBhbiBhbW91bnQgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgb3BlcmFuZC4gVGhlIHNlY29uZFxuXAorb3BlcmFuZCBtdXN0IGJlIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIC1wcmVjaXNpb24gdGhyb3VnaCBwcmVjaXNpb24uIFRoZVxuXAorYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kIGdpdmVzIHRoZSBudW1iZXIgb2YgcGxhY2VzIHRvIHNoaWZ0LlxuXAorSWYgdGhlIHNlY29uZCBvcGVyYW5kIGlzIHBvc2l0aXZlLCB0aGVuIHRoZSBzaGlmdCBpcyB0byB0aGUgbGVmdDsgb3RoZXJ3aXNlXG5cCit0aGUgc2hpZnQgaXMgdG8gdGhlIHJpZ2h0LiBEaWdpdHMgc2hpZnRlZCBpbnRvIHRoZSBjb2VmZmljaWVudCBhcmUgemVyb3MuXG5cCitUaGUgc2lnbiBhbmQgZXhwb25lbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQgYXJlIHVuY2hhbmdlZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2Nfc3FydCwiXG5cCitzcXJ0KGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIHNxdWFyZSByb290IG9mIHRoZSBhcmd1bWVudCB0byBmdWxsIHByZWNpc2lvbi5cblwKK1RoZSByZXN1bHQgaXMgY29ycmVjdGx5IHJvdW5kZWQgdXNpbmcgdGhlIFJPVU5EX0hBTEZfRVZFTiByb3VuZGluZyBtb2RlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY190b19lbmdfc3RyaW5nLCJcblwKK3RvX2VuZ19zdHJpbmcoY29udGV4dD1Ob25lKSAtIENvbnZlcnQgdG8gYW4gZW5naW5lZXJpbmctdHlwZSBzdHJpbmcuXG5cCitFbmdpbmVlcmluZyBub3RhdGlvbiBoYXMgYW4gZXhwb25lbnQgd2hpY2ggaXMgYSBtdWx0aXBsZSBvZiAzLCBzbyB0aGVyZVxuXAorYXJlIHVwIHRvIDMgZGlnaXRzIGxlZnQgb2YgdGhlIGRlY2ltYWwgcGxhY2UuIEZvciBleGFtcGxlLCBEZWNpbWFsKCcxMjNFKzEnKVxuXAoraXMgY29udmVydGVkIHRvIERlY2ltYWwoJzEuMjNFKzMnKS5cblwKK1xuXAorVGhlIHZhbHVlIG9mIGNvbnRleHQuY2FwaXRhbHMgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBleHBvbmVudCBzaWduIGlzIGxvd2VyXG5cCitvciB1cHBlciBjYXNlLiBPdGhlcndpc2UsIHRoZSBjb250ZXh0IGRvZXMgbm90IGFmZmVjdCB0aGUgb3BlcmF0aW9uLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY190b19pbnRlZ3JhbCwiXG5cCit0b19pbnRlZ3JhbChyb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpIC0gSWRlbnRpY2FsIHRvIHRoZVxuXAordG9faW50ZWdyYWxfdmFsdWUoKSBtZXRob2QuIFRoZSB0b19pbnRlZ3JhbCgpIG5hbWUgaGFzIGJlZW4ga2VwdFxuXAorZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucy5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfdG9faW50ZWdyYWxfZXhhY3QsIlxuXAordG9faW50ZWdyYWxfZXhhY3Qocm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKSAtIFJvdW5kIHRvIHRoZSBuZWFyZXN0XG5cCitpbnRlZ2VyLCBzaWduYWxpbmcgSW5leGFjdCBvciBSb3VuZGVkIGFzIGFwcHJvcHJpYXRlIGlmIHJvdW5kaW5nIG9jY3Vycy5cblwKK1RoZSByb3VuZGluZyBtb2RlIGlzIGRldGVybWluZWQgYnkgdGhlIHJvdW5kaW5nIHBhcmFtZXRlciBpZiBnaXZlbiwgZWxzZVxuXAorYnkgdGhlIGdpdmVuIGNvbnRleHQuIElmIG5laXRoZXIgcGFyYW1ldGVyIGlzIGdpdmVuLCB0aGVuIHRoZSByb3VuZGluZyBtb2RlXG5cCitvZiB0aGUgY3VycmVudCBkZWZhdWx0IGNvbnRleHQgaXMgdXNlZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfdG9faW50ZWdyYWxfdmFsdWUsIlxuXAordG9faW50ZWdyYWxfdmFsdWUocm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKSAtIFJvdW5kIHRvIHRoZSBuZWFyZXN0XG5cCitpbnRlZ2VyIHdpdGhvdXQgc2lnbmFsaW5nIEluZXhhY3Qgb3IgUm91bmRlZC4gVGhlIHJvdW5kaW5nIG1vZGUgaXMgZGV0ZXJtaW5lZFxuXAorYnkgdGhlIHJvdW5kaW5nIHBhcmFtZXRlciBpZiBnaXZlbiwgZWxzZSBieSB0aGUgZ2l2ZW4gY29udGV4dC4gSWYgbmVpdGhlclxuXAorcGFyYW1ldGVyIGlzIGdpdmVuLCB0aGVuIHRoZSByb3VuZGluZyBtb2RlIG9mIHRoZSBjdXJyZW50IGRlZmF1bHQgY29udGV4dCBpc1xuXAordXNlZC5cblwKK1xuIik7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0IE9iamVjdCBhbmQgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitQeURvY19TVFJWQVIoZG9jX2NvbnRleHQsIlxuXAorVGhlIGNvbnRleHQgYWZmZWN0cyBhbG1vc3QgYWxsIG9wZXJhdGlvbnMgYW5kIGNvbnRyb2xzIHJvdW5kaW5nLFxuXAorT3Zlci9VbmRlcmZsb3csIHJhaXNpbmcgb2YgZXhjZXB0aW9ucyBhbmQgbXVjaCBtb3JlLiBBIG5ldyBjb250ZXh0XG5cCitjYW4gYmUgY29uc3RydWN0ZWQgYXMgZm9sbG93czpcblwKK1xuXAorICAgID4+PiBjID0gQ29udGV4dChwcmVjPTI4LCBFbWluPS00MjUwMDAwMDAsIEVtYXg9NDI1MDAwMDAwLFxuXAorICAgIC4uLiAgICAgICAgICAgICByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sIGNhcGl0YWxzPTEsIGNsYW1wPTEsXG5cCisgICAgLi4uICAgICAgICAgICAgIHRyYXBzPVtJbnZhbGlkT3BlcmF0aW9uLCBEaXZpc2lvbkJ5WmVybywgT3ZlcmZsb3ddLFxuXAorICAgIC4uLiAgICAgICAgICAgICBmbGFncz1bXSlcblwKKyAgICA+Pj5cblwKK1xuXAorXG4iKTsKKworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2FwcGx5LCJcblwKK2FwcGx5KHgpIC0gQXBwbHkgc2VsZiB0byBEZWNpbWFsIHguXG5cCitcbiIpOworI2VuZGlmCisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NsZWFyX2ZsYWdzLCJcblwKK2NsZWFyX2ZsYWdzKCkgLSBSZXNldCBhbGwgZmxhZ3MgdG8gRmFsc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9jbGVhcl90cmFwcywiXG5cCitjbGVhcl90cmFwcygpIC0gU2V0IGFsbCB0cmFwcyB0byBGYWxzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHksIlxuXAorY29weSgpIC0gUmV0dXJuIGEgZHVwbGljYXRlIG9mIHRoZSBjb250ZXh0IHdpdGggYWxsIGZsYWdzIGNsZWFyZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb3B5X2RlY2ltYWwsIlxuXAorY29weV9kZWNpbWFsKHgpIC0gUmV0dXJuIGEgY29weSBvZiBEZWNpbWFsIHguXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9jcmVhdGVfZGVjaW1hbCwiXG5cCitjcmVhdGVfZGVjaW1hbCh4KSAtIENyZWF0ZSBhIG5ldyBEZWNpbWFsIGluc3RhbmNlIGZyb20geCwgdXNpbmcgc2VsZiBhcyB0aGVcblwKK2NvbnRleHQuIFVubGlrZSB0aGUgRGVjaW1hbCBjb25zdHJ1Y3RvciwgdGhpcyBmdW5jdGlvbiBvYnNlcnZlcyB0aGUgY29udGV4dFxuXAorbGltaXRzLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCwiXG5cCitjcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KGYpIC0gQ3JlYXRlIGEgbmV3IERlY2ltYWwgaW5zdGFuY2UgZnJvbSBmbG9hdCBmLlxuXAorVW5saWtlIHRoZSBEZWNpbWFsLmZyb21fZmxvYXQoKSBjbGFzcyBtZXRob2QsIHRoaXMgZnVuY3Rpb24gb2JzZXJ2ZXMgdGhlXG5cCitjb250ZXh0IGxpbWl0cy5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X0V0aW55LCJcblwKK0V0aW55KCkgLSBSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byBFbWluIC0gcHJlYyArIDEsIHdoaWNoIGlzIHRoZSBtaW5pbXVtXG5cCitleHBvbmVudCB2YWx1ZSBmb3Igc3Vibm9ybWFsIHJlc3VsdHMuIFdoZW4gdW5kZXJmbG93IG9jY3VycywgdGhlIGV4cG9uZW50XG5cCitpcyBzZXQgdG8gRXRpbnkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9FdG9wLCJcblwKK0V0b3AoKSAtIFJldHVybiBhIHZhbHVlIGVxdWFsIHRvIEVtYXggLSBwcmVjICsgMS4gVGhpcyBpcyB0aGUgbWF4aW11bSBleHBvbmVudFxuXAoraWYgdGhlIF9jbGFtcCBmaWVsZCBvZiB0aGUgY29udGV4dCBpcyBzZXQgdG8gMSAoSUVFRSBjbGFtcCBtb2RlKS4gRXRvcCgpIG11c3RcblwKK25vdCBiZSBuZWdhdGl2ZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2FicywiXG5cCithYnMoeCkgLSBSZXR1cm4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHguXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9hZGQsIlxuXAorYWRkKHgsIHkpIC0gUmV0dXJuIHRoZSBzdW0gb2YgeCBhbmQgeS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2Nhbm9uaWNhbCwiXG5cCitjYW5vbmljYWwoeCkgLSBSZXR1cm4gYSBuZXcgaW5zdGFuY2Ugb2YgeC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvbXBhcmUsIlxuXAorY29tcGFyZSh4LCB5KSAtIENvbXBhcmUgeCBhbmQgeSBudW1lcmljYWxseS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvbXBhcmVfc2lnbmFsLCJcblwKK2NvbXBhcmVfc2lnbmFsKHgsIHkpIC0gQ29tcGFyZSB4IGFuZCB5IG51bWVyaWNhbGx5LiBBbGwgTmFOcyBzaWduYWwuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3RvdGFsLCJcblwKK2NvbXBhcmVfdG90YWwoeCwgeSkgLSBDb21wYXJlIHggYW5kIHkgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24uXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3RvdGFsX21hZywiXG5cCitjb21wYXJlX3RvdGFsX21hZyh4LCB5KSAtIENvbXBhcmUgeCBhbmQgeSB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbixcblwKK2lnbm9yaW5nIHNpZ24uXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb3B5X2FicywiXG5cCitjb3B5X2Ficyh4KSAtIFJldHVybiBhIGNvcHkgb2YgeCB3aXRoIHRoZSBzaWduIHNldCB0byAwLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weV9uZWdhdGUsIlxuXAorY29weV9uZWdhdGUoeCkgLSBSZXR1cm4gYSBjb3B5IG9mIHggd2l0aCB0aGUgc2lnbiBpbnZlcnRlZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHlfc2lnbiwiXG5cCitjb3B5X3NpZ24oeCwgeSkgLSBDb3B5IHRoZSBzaWduIGZyb20geSB0byB4LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfZGl2aWRlLCJcblwKK2RpdmlkZSh4LCB5KSAtIFJldHVybiB4IGRpdmlkZWQgYnkgeS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2RpdmlkZV9pbnQsIlxuXAorZGl2aWRlX2ludCh4LCB5KSAtIFJldHVybiB4IGRpdmlkZWQgYnkgeSwgdHJ1bmNhdGVkIHRvIGFuIGludGVnZXIuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9kaXZtb2QsIlxuXAorZGl2bW9kKHgsIHkpIC0gUmV0dXJuIHF1b3RpZW50IGFuZCByZW1haW5kZXIgb2YgdGhlIGRpdmlzaW9uIHggLyB5LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfZXhwLCJcblwKK2V4cCh4KSAtIFJldHVybiBlICoqIHguXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9mbWEsIlxuXAorZm1hKHgsIHksIHopIC0gUmV0dXJuIHggbXVsdGlwbGllZCBieSB5LCBwbHVzIHouXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19jYW5vbmljYWwsIlxuXAoraXNfY2Fub25pY2FsKHgpIC0gUmV0dXJuIFRydWUgaWYgeCBpcyBjYW5vbmljYWwsIEZhbHNlIG90aGVyd2lzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2lzX2Zpbml0ZSwiXG5cCitpc19maW5pdGUoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGZpbml0ZSwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfaW5maW5pdGUsIlxuXAoraXNfaW5maW5pdGUoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGluZmluaXRlLCBGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19uYW4sIlxuXAoraXNfbmFuKHgpIC0gUmV0dXJuIFRydWUgaWYgeCBpcyBhIHFOYU4gb3Igc05hTiwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfbm9ybWFsLCJcblwKK2lzX25vcm1hbCh4KSAtIFJldHVybiBUcnVlIGlmIHggaXMgYSBub3JtYWwgbnVtYmVyLCBGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19xbmFuLCJcblwKK2lzX3FuYW4oeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgcXVpZXQgTmFOLCBGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19zaWduZWQsIlxuXAoraXNfc2lnbmVkKHgpIC0gUmV0dXJuIFRydWUgaWYgeCBpcyBuZWdhdGl2ZSwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfc25hbiwiXG5cCitpc19zbmFuKCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgc2lnbmFsaW5nIE5hTiwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfc3Vibm9ybWFsLCJcblwKK2lzX3N1Ym5vcm1hbCh4KSAtIFJldHVybiBUcnVlIGlmIHggaXMgc3Vibm9ybWFsLCBGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc196ZXJvLCJcblwKK2lzX3plcm8oeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgemVybywgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfbG4sIlxuXAorbG4oeCkgLSBSZXR1cm4gdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHguXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9sb2cxMCwiXG5cCitsb2cxMCh4KSAtIFJldHVybiB0aGUgYmFzZSAxMCBsb2dhcml0aG0gb2YgeC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2xvZ2IsIlxuXAorbG9nYih4KSAtIFJldHVybiB0aGUgZXhwb25lbnQgb2YgdGhlIG1hZ25pdHVkZSBvZiB0aGUgb3BlcmFuZCdzIE1TRC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2xvZ2ljYWxfYW5kLCJcblwKK2xvZ2ljYWxfYW5kKHgsIHkpIC0gRGlnaXQtd2lzZSBhbmQgb2YgeCBhbmQgeS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2xvZ2ljYWxfaW52ZXJ0LCJcblwKK2xvZ2ljYWxfaW52ZXJ0KHgpIC0gSW52ZXJ0IGFsbCBkaWdpdHMgb2YgeC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2xvZ2ljYWxfb3IsIlxuXAorbG9naWNhbF9vcih4LCB5KSAtIERpZ2l0LXdpc2Ugb3Igb2YgeCBhbmQgeS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2xvZ2ljYWxfeG9yLCJcblwKK2xvZ2ljYWxfeG9yKHgsIHkpIC0gRGlnaXQtd2lzZSB4b3Igb2YgeCBhbmQgeS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X21heCwiXG5cCittYXgoeCwgeSkgLSBDb21wYXJlIHRoZSB2YWx1ZXMgbnVtZXJpY2FsbHkgYW5kIHJldHVybiB0aGUgbWF4aW11bS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X21heF9tYWcsIlxuXAorbWF4X21hZyh4LCB5KSAtIENvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSB3aXRoIHRoZWlyIHNpZ24gaWdub3JlZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X21pbiwiXG5cCittaW4oeCwgeSkgLSBDb21wYXJlIHRoZSB2YWx1ZXMgbnVtZXJpY2FsbHkgYW5kIHJldHVybiB0aGUgbWluaW11bS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X21pbl9tYWcsIlxuXAorbWluX21hZyh4LCB5KSAtIENvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSB3aXRoIHRoZWlyIHNpZ24gaWdub3JlZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X21pbnVzLCJcblwKK21pbnVzKHgpIC0gTWludXMgY29ycmVzcG9uZHMgdG8gdGhlIHVuYXJ5IHByZWZpeCBtaW51cyBvcGVyYXRvciBpbiBQeXRob24sXG5cCitidXQgYXBwbGllcyB0aGUgY29udGV4dCB0byB0aGUgcmVzdWx0LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfbXVsdGlwbHksIlxuXAorbXVsdGlwbHkoeCwgeSkgLSBSZXR1cm4gdGhlIHByb2R1Y3Qgb2YgeCBhbmQgeS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X25leHRfbWludXMsIlxuXAorbmV4dF9taW51cyh4KSAtIFJldHVybiB0aGUgbGFyZ2VzdCByZXByZXNlbnRhYmxlIG51bWJlciBzbWFsbGVyIHRoYW4geC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X25leHRfcGx1cywiXG5cCituZXh0X3BsdXMoeCkgLSBSZXR1cm4gdGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIGxhcmdlciB0aGFuIHguXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9uZXh0X3Rvd2FyZCwiXG5cCituZXh0X3Rvd2FyZCh4KSAtIFJldHVybiB0aGUgbnVtYmVyIGNsb3Nlc3QgdG8geCwgaW4gdGhlIGRpcmVjdGlvbiB0b3dhcmRzIHkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9ub3JtYWxpemUsIlxuXAorbm9ybWFsaXplKHgpIC0gUmVkdWNlIHggdG8gaXRzIHNpbXBsZXN0IGZvcm0uIEFsaWFzIGZvciByZWR1Y2UoeCkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9udW1iZXJfY2xhc3MsIlxuXAorbnVtYmVyX2NsYXNzKHgpIC0gUmV0dXJuIGFuIGluZGljYXRpb24gb2YgdGhlIGNsYXNzIG9mIHguXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9wbHVzLCJcblwKK3BsdXMoeCkgLSBQbHVzIGNvcnJlc3BvbmRzIHRvIHRoZSB1bmFyeSBwcmVmaXggcGx1cyBvcGVyYXRvciBpbiBQeXRob24sXG5cCitidXQgYXBwbGllcyB0aGUgY29udGV4dCB0byB0aGUgcmVzdWx0LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfcG93ZXIsIlxuXAorcG93ZXIoeCwgeSkgLSBDb21wdXRlIHgqKnkuIElmIHggaXMgbmVnYXRpdmUsIHRoZW4geSBtdXN0IGJlIGludGVncmFsLlxuXAorVGhlIHJlc3VsdCB3aWxsIGJlIGluZXhhY3QgdW5sZXNzIHkgaXMgaW50ZWdyYWwgYW5kIHRoZSByZXN1bHQgaXMgZmluaXRlXG5cCithbmQgY2FuIGJlIGV4cHJlc3NlZCBleGFjdGx5IGluICdwcmVjaXNpb24nIGRpZ2l0cy4gSW4gdGhlIFB5dGhvbiB2ZXJzaW9uXG5cCit0aGUgcmVzdWx0IGlzIGFsd2F5cyBjb3JyZWN0bHkgcm91bmRlZCwgaW4gdGhlIEMgdmVyc2lvbiB0aGUgcmVzdWx0IGlzXG5cCithbG1vc3QgYWx3YXlzIGNvcnJlY3RseSByb3VuZGVkLlxuXAorXG5cCitwb3dlcih4LCB5LCBtKSAtIENvbXB1dGUgKHgqKnkpICUgbS4gVGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMgaG9sZDpcblwKK1xuXAorICAgICogYWxsIHRocmVlIGFyZ3VtZW50cyBtdXN0IGJlIGludGVncmFsXG5cCisgICAgKiB5IG11c3QgYmUgbm9ubmVnYXRpdmVcblwKKyAgICAqIGF0IGxlYXN0IG9uZSBvZiB4IG9yIHkgbXVzdCBiZSBub256ZXJvXG5cCisgICAgKiBtIG11c3QgYmUgbm9uemVybyBhbmQgbGVzcyB0aGFuIDEwKipwcmVjIGluIGFic29sdXRlIHZhbHVlXG5cCitcblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3F1YW50aXplLCJcblwKK3F1YW50aXplKHgsIHkpIC0gUmV0dXJuIGEgdmFsdWUgZXF1YWwgdG8geCAocm91bmRlZCksIGhhdmluZyB0aGUgZXhwb25lbnQgb2YgeS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3JhZGl4LCJcblwKK3JhZGl4KCkgLSBSZXR1cm4gMTAuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9yZW1haW5kZXIsIlxuXAorcmVtYWluZGVyKHgsIHkpIC0gUmV0dXJuIHRoZSByZW1haW5kZXIgZnJvbSBpbnRlZ2VyIGRpdmlzaW9uLiBUaGUgc2lnbiBvZlxuXAordGhlIHJlc3VsdCwgaWYgbm9uLXplcm8sIGlzIHRoZSBzYW1lIGFzIHRoYXQgb2YgdGhlIG9yaWdpbmFsIGRpdmlkZW5kLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfcmVtYWluZGVyX25lYXIsIlxuXAorcmVtYWluZGVyX25lYXIoeCwgeSkgLSBSZXR1cm4geCAtIHkgKiBuLCB3aGVyZSBuIGlzIHRoZSBpbnRlZ2VyIG5lYXJlc3QgdGhlXG5cCitleGFjdCB2YWx1ZSBvZiB4IC8geSAoaWYgdGhlIHJlc3VsdCBpcyAwIHRoZW4gaXRzIHNpZ24gd2lsbCBiZSB0aGUgc2lnbiBvZiB4KS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3JvdGF0ZSwiXG5cCityb3RhdGUoeCwgeSkgLSBSZXR1cm4gYSBjb3B5IG9mIHgsIHJvdGF0ZWQgYnkgeSBwbGFjZXMuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9zYW1lX3F1YW50dW0sIlxuXAorc2FtZV9xdWFudHVtKHgsIHkpIC0gUmV0dXJuIFRydWUgaWYgdGhlIHR3byBvcGVyYW5kcyBoYXZlIHRoZSBzYW1lIGV4cG9uZW50LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfc2NhbGViLCJcblwKK3NjYWxlYih4LCB5KSAtIFJldHVybiB0aGUgZmlyc3Qgb3BlcmFuZCBhZnRlciBhZGRpbmcgdGhlIHNlY29uZCB2YWx1ZVxuXAordG8gaXRzIGV4cC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3NoaWZ0LCJcblwKK3NoaWZ0KHgsIHkpIC0gUmV0dXJuIGEgY29weSBvZiB4LCBzaGlmdGVkIGJ5IHkgcGxhY2VzLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfc3FydCwiXG5cCitzcXJ0KHgpIC0gU3F1YXJlIHJvb3Qgb2YgYSBub24tbmVnYXRpdmUgbnVtYmVyIHRvIGNvbnRleHQgcHJlY2lzaW9uLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfc3VidHJhY3QsIlxuXAorc3VidHJhY3QoeCwgeSkgLSBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB4IGFuZCB5LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfdG9fZW5nX3N0cmluZywiXG5cCit0b19lbmdfc3RyaW5nKHgpIC0gQ29udmVydCBhIG51bWJlciB0byBhIHN0cmluZywgdXNpbmcgZW5naW5lZXJpbmcgbm90YXRpb24uXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF90b19pbnRlZ3JhbCwiXG5cCit0b19pbnRlZ3JhbCh4KSAtIElkZW50aWNhbCB0byB0b19pbnRlZ3JhbF92YWx1ZSh4KS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3RvX2ludGVncmFsX2V4YWN0LCJcblwKK3RvX2ludGVncmFsX2V4YWN0KHgpIC0gUm91bmQgdG8gYW4gaW50ZWdlci4gU2lnbmFsIGlmIHRoZSByZXN1bHQgaXNcblwKK3JvdW5kZWQgb3IgaW5leGFjdC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3RvX2ludGVncmFsX3ZhbHVlLCJcblwKK3RvX2ludGVncmFsX3ZhbHVlKHgpIC0gUm91bmQgdG8gYW4gaW50ZWdlci5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3RvX3NjaV9zdHJpbmcsIlxuXAordG9fc2NpX3N0cmluZyh4KSAtIENvbnZlcnQgYSBudW1iZXIgdG8gYSBzdHJpbmcgdXNpbmcgc2NpZW50aWZpYyBub3RhdGlvbi5cblwKK1xuIik7CisKKworI2VuZGlmIC8qIERPQ1NUUklOR1NfSCAqLworCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9SRUFETUUudHh0IGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9SRUFETUUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2YjcyMjMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL1JFQURNRS50eHQKQEAgLTAsMCArMSw5MCBAQAorCisKK2xpYm1wZGVjCis9PT09PT09PQorCitsaWJtcGRlYyBpcyBhIGZhc3QgQy9DKysgbGlicmFyeSBmb3IgY29ycmVjdGx5LXJvdW5kZWQgYXJiaXRyYXJ5IHByZWNpc2lvbgorZGVjaW1hbCBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljLiBJdCBpcyBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIG9mCitNaWtlIENvd2xpc2hhdy9JQk0ncyBHZW5lcmFsIERlY2ltYWwgQXJpdGhtZXRpYyBTcGVjaWZpY2F0aW9uLgorCisKK0ZpbGVzIHJlcXVpcmVkIGZvciB0aGUgUHl0aG9uIF9kZWNpbWFsIG1vZHVsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgQ29yZSBmaWxlcyBmb3Igc21hbGwgYW5kIG1lZGl1bSBwcmVjaXNpb24gYXJpdGhtZXRpYworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBiYXNlYXJpdGgue2MsaH0gIC0+ICBDb3JlIGFyaXRobWV0aWMgaW4gYmFzZSAxMCoqOSBvciAxMCoqMTkuCisgICAgYml0cy5oICAgICAgICAgICAtPiAgUG9ydGFibGUgZGV0ZWN0aW9uIG9mIGxlYXN0L21vc3Qgc2lnbmlmaWNhbnQgb25lLWJpdC4KKyAgICBjb25zdGFudHMue2MsaH0gIC0+ICBDb25zdGFudHMgdGhhdCBhcmUgdXNlZCBpbiBtdWx0aXBsZSBmaWxlcy4KKyAgICBjb250ZXh0LmMgICAgICAgIC0+ICBDb250ZXh0IGZ1bmN0aW9ucy4KKyAgICBpby57YyxofSAgICAgICAgIC0+ICBDb252ZXJzaW9ucyBiZXR3ZWVuIG1wZF90IGFuZCBBU0NJSSBzdHJpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1wZF90IGZvcm1hdHRpbmcgKGFsbG93cyBVVEYtOCBmaWxsIGNoYXJhY3RlcikuCisgICAgbWVtb3J5LntjLGh9ICAgICAtPiAgQWxsb2NhdGlvbiBoYW5kbGVycyB3aXRoIG92ZXJmbG93IGRldGVjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBmdW5jdGlvbnMgZm9yIHN3aXRjaGluZyBiZXR3ZWVuIHN0YXRpYworICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBkeW5hbWljIG1wZF90LgorICAgIG1wZGVjaW1hbC57YyxofSAgLT4gIEFsbCAocXVpZXQpIGZ1bmN0aW9ucyBvZiB0aGUgc3BlY2lmaWNhdGlvbi4KKyAgICB0eXBlYXJpdGguaCAgICAgIC0+ICBGYXN0IHByaW1pdGl2ZXMgZm9yIGRvdWJsZSB3b3JkIG11bHRpcGxpY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIGRpdmlzaW9uIGV0Yy4KKworICAgIFZpc3VhbCBTdHVkaW8gb25seToKKyAgICB+fn5+fn5+fn5+fn5+fn5+fn5+CisgICAgICB2Y2NvbXBhdC5oICAgIC0+ICBzbnByaW50ZiA8PT0+IHNwcmludGZfcyBhbmQgc2ltaWxhciB0aGluZ3MuCisgICAgICB2Y3N0ZGludC5oICAgIC0+ICBzdGRpbnQuaCAoaW5jbHVkZWQgaW4gVlMgMjAxMCBidXQgbm90IGluIFZTIDIwMDgpLgorICAgICAgdmNkaXY2NC5hc20gICAtPiAgRG91YmxlIHdvcmQgZGl2aXNpb24gdXNlZCBpbiB0eXBlYXJpdGguaC4gVlMgMjAwOCBkb2VzCisgICAgICAgICAgICAgICAgICAgICAgICBub3QgYWxsb3cgaW5saW5lIGFzbSBmb3IgeDY0LiBBbHNvLCBpdCBkb2VzIG5vdCBwcm92aWRlCisgICAgICAgICAgICAgICAgICAgICAgICBhbiBpbnRyaW5zaWMgZm9yIGRvdWJsZSB3b3JkIGRpdmlzaW9uLgorCisgIEZpbGVzIGZvciBiaWdudW0gYXJpdGhtZXRpYzoKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhlIGZvbGxvd2luZyBmaWxlcyBpbXBsZW1lbnQgdGhlIEZhc3QgTnVtYmVyIFRoZW9yZXRpYyBUcmFuc2Zvcm0KKyAgICB1c2VkIGZvciBtdWx0aXBseWluZyBjb2VmZmljaWVudHMgd2l0aCBtb3JlIHRoYW4gMTAyNCB3b3JkcyAoc2VlCisgICAgbXBkZWNpbWFsLmM6IF9tcGRfZm50bXVsKCkpLgorCisgICAgICB1bW9kYXJpdGguaCAgICAgICAgLT4gIEZhc3QgbG93IGxldmVsIHJvdXRpbmVzIGZvciB1bnNpZ25lZCBtb2R1bGFyIGFyaXRobWV0aWMuCisgICAgICBudW1iZXJ0aGVvcnkue2MsaH0gLT4gIFJvdXRpbmVzIGZvciBzZXR0aW5nIHVwIHRoZSBOdW1iZXIgVGhlb3JldGljIFRyYW5zZm9ybS4KKyAgICAgIGRpZnJhZGl4Mi57YyxofSAgICAtPiAgRGVjaW1hdGlvbiBpbiBmcmVxdWVuY3kgdHJhbnNmb3JtLCB1c2VkIGFzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFzZSBjYXNlIiBieSB0aGUgZm9sbG93aW5nIHRocmVlIGZpbGVzOgorCisgICAgICAgIGZudC57YyxofSAgICAgICAgLT4gIFRyYW5zZm9ybSBhcnJheXMgdXAgdG8gNDA5NiB3b3Jkcy4KKyAgICAgICAgc2l4c3RlcC57YyxofSAgICAtPiAgVHJhbnNmb3JtIGxhcmdlciBhcnJheXMgb2YgbGVuZ3RoIDIqKm4uCisgICAgICAgIGZvdXJzdGVwLntjLGh9ICAgLT4gIFRyYW5zZm9ybSBsYXJnZXIgYXJyYXlzIG9mIGxlbmd0aCAzICogMioqbi4KKworICAgICAgY29udm9sdXRlLntjLGh9ICAgIC0+ICBGYXN0IGNvbnZvbHV0aW9uIHVzaW5nIG9uZSBvZiB0aGUgdGhyZWUgdHJhbnNmb3JtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy4KKyAgICAgIHRyYW5zcG9zZS57YyxofSAgICAtPiAgVHJhbnNwb3NpdGlvbnMgbmVlZGVkIGZvciB0aGUgc2l4c3RlcCBhbGdvcml0aG0uCisgICAgICBjcnQue2MsaH0gICAgICAgICAgLT4gIENoaW5lc2UgUmVtYWluZGVyIFRoZW9yZW06IHVzZSBpbmZvcm1hdGlvbiBmcm9tIHRocmVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybXMgbW9kdWxvIHRocmVlIGRpZmZlcmVudCBwcmltZXMgdG8gZ2V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCByZXN1bHQuCisKKworUG9pbnRlcnMgdG8gbGl0ZXJhdHVyZSwgcHJvb2ZzIGFuZCBtb3JlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICBsaXRlcmF0dXJlLworICAtLS0tLS0tLS0tLQorCisgICAgUkVGRVJFTkNFUy50eHQgIC0+ICBMaXN0IG9mIHJlbGV2YW50IHBhcGVycy4KKyAgICBiaWdudW0udHh0ICAgICAgLT4gIEV4cGxhbmF0aW9uIG9mIHRoZSBGYXN0IE51bWJlciBUaGVvcmV0aWMgVHJhbnNmb3JtIChGTlQpLgorICAgIGZudC5weSAgICAgICAgICAtPiAgVmVyaWZ5IGNvbnN0YW50cyB1c2VkIGluIHRoZSBGTlQ7IFB5dGhvbiBkZW1vIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIE8oTioqMikgZGlzY3JldGUgdHJhbnNmb3JtLgorCisgICAgbWF0cml4LXRyYW5zZm9ybS50eHQgLT4gUHJvb2YgZm9yIHRoZSBNYXRyaXggRm91cmllciBUcmFuc2Zvcm0gdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdXJzdGVwLmMuCisgICAgc2l4LXN0ZXAudHh0ICAgICAgICAgLT4gU2hvdyB0aGF0IHRoZSBhbGdvcml0aG0gdXNlZCBpbiBzaXhzdGVwLmMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHZhcmlhbnQgb2YgdGhlIE1hdHJpeCBGb3VyaWVyIFRyYW5zZm9ybS4KKyAgICBtdWxtb2QtNjQudHh0ICAgICAgICAtPiBQcm9vZiBmb3IgdGhlIG11bG1vZDY0IGFsZ29yaXRobSBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW1vZGFyaXRoLmguCisgICAgbXVsbW9kLXBwcm8udHh0ICAgICAgLT4gUHJvb2YgZm9yIHRoZSB4ODcgRlBVIG1vZHVsYXIgbXVsdGlwbGljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHVtb2Rhcml0aC5oLgorICAgIHVtb2Rhcml0aC5saXNwICAgICAgIC0+IEFDTDIgcHJvb2ZzIGZvciBtYW55IGZ1bmN0aW9ucyBmcm9tIHVtb2Rhcml0aC5oLgorCisKK0xpYnJhcnkgQXV0aG9yCis9PT09PT09PT09PT09PQorCisgIFN0ZWZhbiBLcmFoIDxza3JhaEBieXRlcmVlZi5vcmc+CisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2Jhc2Vhcml0aC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDIxYTdhCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguYwpAQCAtMCwwICsxLDY1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSAiY29uc3RhbnRzLmgiCisjaW5jbHVkZSAibWVtb3J5LmgiCisjaW5jbHVkZSAidHlwZWFyaXRoLmgiCisjaW5jbHVkZSAiYmFzZWFyaXRoLmgiCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgIENhbGN1bGF0aW9ucyBpbiBiYXNlIE1QRF9SQURJWCAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKy8qCisgKiBLbnV0aCwgVEFPQ1AsIFZvbHVtZSAyLCA0LjMuMToKKyAqICAgIHcgOj0gc3VtIG9mIHUgKGxlbiBtKSBhbmQgdiAobGVuIG4pCisgKiAgICBuID4gMCBhbmQgbSA+PSBuCisgKiBUaGUgY2FsbGluZyBmdW5jdGlvbiBoYXMgdG8gaGFuZGxlIGEgcG9zc2libGUgZmluYWwgY2FycnkuCisgKi8KK21wZF91aW50X3QKK19tcGRfYmFzZWFkZChtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBjb25zdCBtcGRfdWludF90ICp2LAorICAgICAgICAgICAgIG1wZF9zaXplX3QgbSwgbXBkX3NpemVfdCBuKQoreworICAgIG1wZF91aW50X3QgczsKKyAgICBtcGRfdWludF90IGNhcnJ5ID0gMDsKKyAgICBtcGRfc2l6ZV90IGk7CisKKyAgICBhc3NlcnQobiA+IDAgJiYgbSA+PSBuKTsKKworICAgIC8qIGFkZCBuIG1lbWJlcnMgb2YgdSBhbmQgdiAqLworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgcyA9IHVbaV0gKyAodltpXSArIGNhcnJ5KTsKKyAgICAgICAgY2FycnkgPSAocyA8IHVbaV0pIHwgKHMgPj0gTVBEX1JBRElYKTsKKyAgICAgICAgd1tpXSA9IGNhcnJ5ID8gcy1NUERfUkFESVggOiBzOworICAgIH0KKyAgICAvKiBpZiB0aGVyZSBpcyBhIGNhcnJ5LCBwcm9wYWdhdGUgaXQgKi8KKyAgICBmb3IgKDsgY2FycnkgJiYgaSA8IG07IGkrKykgeworICAgICAgICBzID0gdVtpXSArIGNhcnJ5OworICAgICAgICBjYXJyeSA9IChzID09IE1QRF9SQURJWCk7CisgICAgICAgIHdbaV0gPSBjYXJyeSA/IDAgOiBzOworICAgIH0KKyAgICAvKiBjb3B5IHRoZSByZXN0IG9mIHUgKi8KKyAgICBmb3IgKDsgaSA8IG07IGkrKykgeworICAgICAgICB3W2ldID0gdVtpXTsKKyAgICB9CisKKyAgICByZXR1cm4gY2Fycnk7Cit9CisKKy8qCisgKiBBZGQgdGhlIGNvbnRlbnRzIG9mIHUgdG8gdy4gQ2FycmllcyBhcmUgcHJvcGFnYXRlZCBmdXJ0aGVyLiBUaGUgY2FsbGVyCisgKiBoYXMgdG8gbWFrZSBzdXJlIHRoYXQgdyBpcyBiaWcgZW5vdWdoLgorICovCit2b2lkCitfbXBkX2Jhc2VhZGR0byhtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4pCit7CisgICAgbXBkX3VpbnRfdCBzOworICAgIG1wZF91aW50X3QgY2FycnkgPSAwOworICAgIG1wZF9zaXplX3QgaTsKKworICAgIGlmIChuID09IDApIHJldHVybjsKKworICAgIC8qIGFkZCBuIG1lbWJlcnMgb2YgdSB0byB3ICovCisgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICBzID0gd1tpXSArICh1W2ldICsgY2FycnkpOworICAgICAgICBjYXJyeSA9IChzIDwgd1tpXSkgfCAocyA+PSBNUERfUkFESVgpOworICAgICAgICB3W2ldID0gY2FycnkgPyBzLU1QRF9SQURJWCA6IHM7CisgICAgfQorICAgIC8qIGlmIHRoZXJlIGlzIGEgY2FycnksIHByb3BhZ2F0ZSBpdCAqLworICAgIGZvciAoOyBjYXJyeTsgaSsrKSB7CisgICAgICAgIHMgPSB3W2ldICsgY2Fycnk7CisgICAgICAgIGNhcnJ5ID0gKHMgPT0gTVBEX1JBRElYKTsKKyAgICAgICAgd1tpXSA9IGNhcnJ5ID8gMCA6IHM7CisgICAgfQorfQorCisvKgorICogQWRkIHYgdG8gdyAobGVuIG0pLiBUaGUgY2FsbGluZyBmdW5jdGlvbiBoYXMgdG8gaGFuZGxlIGEgcG9zc2libGUKKyAqIGZpbmFsIGNhcnJ5LiBBc3N1bXB0aW9uOiBtID4gMC4KKyAqLworbXBkX3VpbnRfdAorX21wZF9zaG9ydGFkZChtcGRfdWludF90ICp3LCBtcGRfc2l6ZV90IG0sIG1wZF91aW50X3QgdikKK3sKKyAgICBtcGRfdWludF90IHM7CisgICAgbXBkX3VpbnRfdCBjYXJyeTsKKyAgICBtcGRfc2l6ZV90IGk7CisKKyAgICBhc3NlcnQobSA+IDApOworCisgICAgLyogYWRkIHYgdG8gdyAqLworICAgIHMgPSB3WzBdICsgdjsKKyAgICBjYXJyeSA9IChzIDwgdikgfCAocyA+PSBNUERfUkFESVgpOworICAgIHdbMF0gPSBjYXJyeSA/IHMtTVBEX1JBRElYIDogczsKKworICAgIC8qIGlmIHRoZXJlIGlzIGEgY2FycnksIHByb3BhZ2F0ZSBpdCAqLworICAgIGZvciAoaSA9IDE7IGNhcnJ5ICYmIGkgPCBtOyBpKyspIHsKKyAgICAgICAgcyA9IHdbaV0gKyBjYXJyeTsKKyAgICAgICAgY2FycnkgPSAocyA9PSBNUERfUkFESVgpOworICAgICAgICB3W2ldID0gY2FycnkgPyAwIDogczsKKyAgICB9CisKKyAgICByZXR1cm4gY2Fycnk7Cit9CisKKy8qIEluY3JlbWVudCB1LiBUaGUgY2FsbGluZyBmdW5jdGlvbiBoYXMgdG8gaGFuZGxlIGEgcG9zc2libGUgY2FycnkuICovCittcGRfdWludF90CitfbXBkX2Jhc2VpbmNyKG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3QgbikKK3sKKyAgICBtcGRfdWludF90IHM7CisgICAgbXBkX3VpbnRfdCBjYXJyeSA9IDE7CisgICAgbXBkX3NpemVfdCBpOworCisgICAgYXNzZXJ0KG4gPiAwKTsKKworICAgIC8qIGlmIHRoZXJlIGlzIGEgY2FycnksIHByb3BhZ2F0ZSBpdCAqLworICAgIGZvciAoaSA9IDA7IGNhcnJ5ICYmIGkgPCBuOyBpKyspIHsKKyAgICAgICAgcyA9IHVbaV0gKyBjYXJyeTsKKyAgICAgICAgY2FycnkgPSAocyA9PSBNUERfUkFESVgpOworICAgICAgICB1W2ldID0gY2FycnkgPyAwIDogczsKKyAgICB9CisKKyAgICByZXR1cm4gY2Fycnk7Cit9CisKKy8qCisgKiBLbnV0aCwgVEFPQ1AsIFZvbHVtZSAyLCA0LjMuMToKKyAqICAgICB3IDo9IGRpZmZlcmVuY2Ugb2YgdSAobGVuIG0pIGFuZCB2IChsZW4gbikuCisgKiAgICAgbnVtYmVyIGluIHUgPj0gbnVtYmVyIGluIHY7CisgKi8KK3ZvaWQKK19tcGRfYmFzZXN1YihtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBjb25zdCBtcGRfdWludF90ICp2LAorICAgICAgICAgICAgIG1wZF9zaXplX3QgbSwgbXBkX3NpemVfdCBuKQoreworICAgIG1wZF91aW50X3QgZDsKKyAgICBtcGRfdWludF90IGJvcnJvdyA9IDA7CisgICAgbXBkX3NpemVfdCBpOworCisgICAgYXNzZXJ0KG0gPiAwICYmIG4gPiAwKTsKKworICAgIC8qIHN1YnRyYWN0IG4gbWVtYmVycyBvZiB2IGZyb20gdSAqLworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgZCA9IHVbaV0gLSAodltpXSArIGJvcnJvdyk7CisgICAgICAgIGJvcnJvdyA9ICh1W2ldIDwgZCk7CisgICAgICAgIHdbaV0gPSBib3Jyb3cgPyBkICsgTVBEX1JBRElYIDogZDsKKyAgICB9CisgICAgLyogaWYgdGhlcmUgaXMgYSBib3Jyb3csIHByb3BhZ2F0ZSBpdCAqLworICAgIGZvciAoOyBib3Jyb3cgJiYgaSA8IG07IGkrKykgeworICAgICAgICBkID0gdVtpXSAtIGJvcnJvdzsKKyAgICAgICAgYm9ycm93ID0gKHVbaV0gPT0gMCk7CisgICAgICAgIHdbaV0gPSBib3Jyb3cgPyBNUERfUkFESVgtMSA6IGQ7CisgICAgfQorICAgIC8qIGNvcHkgdGhlIHJlc3Qgb2YgdSAqLworICAgIGZvciAoOyBpIDwgbTsgaSsrKSB7CisgICAgICAgIHdbaV0gPSB1W2ldOworICAgIH0KK30KKworLyoKKyAqIFN1YnRyYWN0IHRoZSBjb250ZW50cyBvZiB1IGZyb20gdy4gdyBpcyBsYXJnZXIgdGhhbiB1LiBCb3Jyb3dzIGFyZQorICogcHJvcGFnYXRlZCBmdXJ0aGVyLCBidXQgZXZlbnR1YWxseSB3IGNhbiBhYnNvcmIgdGhlIGZpbmFsIGJvcnJvdy4KKyAqLwordm9pZAorX21wZF9iYXNlc3ViZnJvbShtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4pCit7CisgICAgbXBkX3VpbnRfdCBkOworICAgIG1wZF91aW50X3QgYm9ycm93ID0gMDsKKyAgICBtcGRfc2l6ZV90IGk7CisKKyAgICBpZiAobiA9PSAwKSByZXR1cm47CisKKyAgICAvKiBzdWJ0cmFjdCBuIG1lbWJlcnMgb2YgdSBmcm9tIHcgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIGQgPSB3W2ldIC0gKHVbaV0gKyBib3Jyb3cpOworICAgICAgICBib3Jyb3cgPSAod1tpXSA8IGQpOworICAgICAgICB3W2ldID0gYm9ycm93ID8gZCArIE1QRF9SQURJWCA6IGQ7CisgICAgfQorICAgIC8qIGlmIHRoZXJlIGlzIGEgYm9ycm93LCBwcm9wYWdhdGUgaXQgKi8KKyAgICBmb3IgKDsgYm9ycm93OyBpKyspIHsKKyAgICAgICAgZCA9IHdbaV0gLSBib3Jyb3c7CisgICAgICAgIGJvcnJvdyA9ICh3W2ldID09IDApOworICAgICAgICB3W2ldID0gYm9ycm93ID8gTVBEX1JBRElYLTEgOiBkOworICAgIH0KK30KKworLyogdyA6PSBwcm9kdWN0IG9mIHUgKGxlbiBuKSBhbmQgdiAoc2luZ2xlIHdvcmQpICovCit2b2lkCitfbXBkX3Nob3J0bXVsKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3QgbiwgbXBkX3VpbnRfdCB2KQoreworICAgIG1wZF91aW50X3QgaGksIGxvOworICAgIG1wZF91aW50X3QgY2FycnkgPSAwOworICAgIG1wZF9zaXplX3QgaTsKKworICAgIGFzc2VydChuID4gMCk7CisKKyAgICBmb3IgKGk9MDsgaSA8IG47IGkrKykgeworCisgICAgICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCB1W2ldLCB2KTsKKyAgICAgICAgbG8gPSBjYXJyeSArIGxvOworICAgICAgICBpZiAobG8gPCBjYXJyeSkgaGkrKzsKKworICAgICAgICBfbXBkX2Rpdl93b3Jkc19yKCZjYXJyeSwgJndbaV0sIGhpLCBsbyk7CisgICAgfQorICAgIHdbaV0gPSBjYXJyeTsKK30KKworLyoKKyAqIEtudXRoLCBUQU9DUCwgVm9sdW1lIDIsIDQuMy4xOgorICogICAgIHcgOj0gcHJvZHVjdCBvZiB1IChsZW4gbSkgYW5kIHYgKGxlbiBuKQorICogICAgIHcgbXVzdCBiZSBpbml0aWFsaXplZCB0byB6ZXJvCisgKi8KK3ZvaWQKK19tcGRfYmFzZW11bChtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBjb25zdCBtcGRfdWludF90ICp2LAorICAgICAgICAgICAgIG1wZF9zaXplX3QgbSwgbXBkX3NpemVfdCBuKQoreworICAgIG1wZF91aW50X3QgaGksIGxvOworICAgIG1wZF91aW50X3QgY2Fycnk7CisgICAgbXBkX3NpemVfdCBpLCBqOworCisgICAgYXNzZXJ0KG0gPiAwICYmIG4gPiAwKTsKKworICAgIGZvciAoaj0wOyBqIDwgbjsgaisrKSB7CisgICAgICAgIGNhcnJ5ID0gMDsKKyAgICAgICAgZm9yIChpPTA7IGkgPCBtOyBpKyspIHsKKworICAgICAgICAgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIHVbaV0sIHZbal0pOworICAgICAgICAgICAgbG8gPSB3W2kral0gKyBsbzsKKyAgICAgICAgICAgIGlmIChsbyA8IHdbaStqXSkgaGkrKzsKKyAgICAgICAgICAgIGxvID0gY2FycnkgKyBsbzsKKyAgICAgICAgICAgIGlmIChsbyA8IGNhcnJ5KSBoaSsrOworCisgICAgICAgICAgICBfbXBkX2Rpdl93b3Jkc19yKCZjYXJyeSwgJndbaStqXSwgaGksIGxvKTsKKyAgICAgICAgfQorICAgICAgICB3W2orbV0gPSBjYXJyeTsKKyAgICB9Cit9CisKKy8qCisgKiBLbnV0aCwgVEFPQ1AgVm9sdW1lIDIsIDQuMy4xLCBleGVyY2lzZSAxNjoKKyAqICAgICB3IDo9IHF1b3RpZW50IG9mIHUgKGxlbiBuKSBkaXZpZGVkIGJ5IGEgc2luZ2xlIHdvcmQgdgorICovCittcGRfdWludF90CitfbXBkX3Nob3J0ZGl2KG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3QgbiwgbXBkX3VpbnRfdCB2KQoreworICAgIG1wZF91aW50X3QgaGksIGxvOworICAgIG1wZF91aW50X3QgcmVtID0gMDsKKyAgICBtcGRfc2l6ZV90IGk7CisKKyAgICBhc3NlcnQobiA+IDApOworCisgICAgZm9yIChpPW4tMTsgaSAhPSBNUERfU0laRV9NQVg7IGktLSkgeworCisgICAgICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCByZW0sIE1QRF9SQURJWCk7CisgICAgICAgIGxvID0gdVtpXSArIGxvOworICAgICAgICBpZiAobG8gPCB1W2ldKSBoaSsrOworCisgICAgICAgIF9tcGRfZGl2X3dvcmRzKCZ3W2ldLCAmcmVtLCBoaSwgbG8sIHYpOworICAgIH0KKworICAgIHJldHVybiByZW07Cit9CisKKy8qCisgKiBLbnV0aCwgVEFPQ1AgVm9sdW1lIDIsIDQuMy4xOgorICogICAgIHEsIHIgOj0gcXVvdGllbnQgYW5kIHJlbWFpbmRlciBvZiB1Y29uc3QgKGxlbiBucGx1c20pCisgKiAgICAgICAgICAgICBkaXZpZGVkIGJ5IHZjb25zdCAobGVuIG4pCisgKiAgICAgbnBsdXNtID49IG4KKyAqCisgKiBJZiByIGlzIG5vdCBOVUxMLCByIHdpbGwgY29udGFpbiB0aGUgcmVtYWluZGVyLiBJZiByIGlzIE5VTEwsIHRoZQorICogcmV0dXJuIHZhbHVlIGluZGljYXRlcyBpZiB0aGVyZSBpcyBhIHJlbWFpbmRlcjogMSBmb3IgdHJ1ZSwgMCBmb3IKKyAqIGZhbHNlLiAgQSByZXR1cm4gdmFsdWUgb2YgLTEgaW5kaWNhdGVzIGFuIGVycm9yLgorICovCitpbnQKK19tcGRfYmFzZWRpdm1vZChtcGRfdWludF90ICpxLCBtcGRfdWludF90ICpyLAorICAgICAgICAgICAgICAgIGNvbnN0IG1wZF91aW50X3QgKnVjb25zdCwgY29uc3QgbXBkX3VpbnRfdCAqdmNvbnN0LAorICAgICAgICAgICAgICAgIG1wZF9zaXplX3QgbnBsdXNtLCBtcGRfc2l6ZV90IG4pCit7CisgICAgbXBkX3VpbnRfdCB1c3RhdGljW01QRF9NSU5BTExPQ19NQVhdOworICAgIG1wZF91aW50X3QgdnN0YXRpY1tNUERfTUlOQUxMT0NfTUFYXTsKKyAgICBtcGRfdWludF90ICp1ID0gdXN0YXRpYzsKKyAgICBtcGRfdWludF90ICp2ID0gdnN0YXRpYzsKKyAgICBtcGRfdWludF90IGQsIHFoYXQsIHJoYXQsIHcyWzJdOworICAgIG1wZF91aW50X3QgaGksIGxvLCB4OworICAgIG1wZF91aW50X3QgY2Fycnk7CisgICAgbXBkX3NpemVfdCBpLCBqLCBtOworICAgIGludCByZXR2YWwgPSAwOworCisgICAgYXNzZXJ0KG4gPiAxICYmIG5wbHVzbSA+PSBuKTsKKyAgICBtID0gc3ViX3NpemVfdChucGx1c20sIG4pOworCisgICAgLyogRDE6IG5vcm1hbGl6ZSAqLworICAgIGQgPSBNUERfUkFESVggLyAodmNvbnN0W24tMV0gKyAxKTsKKworICAgIGlmIChucGx1c20gPj0gTVBEX01JTkFMTE9DX01BWCkgeworICAgICAgICBpZiAoKHUgPSBtcGRfYWxsb2MobnBsdXNtKzEsIHNpemVvZiAqdSkpID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAobiA+PSBNUERfTUlOQUxMT0NfTUFYKSB7CisgICAgICAgIGlmICgodiA9IG1wZF9hbGxvYyhuKzEsIHNpemVvZiAqdikpID09IE5VTEwpIHsKKyAgICAgICAgICAgIG1wZF9mcmVlKHUpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorCisgICAgX21wZF9zaG9ydG11bCh1LCB1Y29uc3QsIG5wbHVzbSwgZCk7CisgICAgX21wZF9zaG9ydG11bCh2LCB2Y29uc3QsIG4sIGQpOworCisgICAgLyogRDI6IGxvb3AgKi8KKyAgICBmb3IgKGo9bTsgaiAhPSBNUERfU0laRV9NQVg7IGotLSkgeworCisgICAgICAgIC8qIEQzOiBjYWxjdWxhdGUgcWhhdCBhbmQgcmhhdCAqLworICAgICAgICByaGF0ID0gX21wZF9zaG9ydGRpdih3MiwgdStqK24tMSwgMiwgdltuLTFdKTsKKyAgICAgICAgcWhhdCA9IHcyWzFdICogTVBEX1JBRElYICsgdzJbMF07CisKKyAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgIGlmIChxaGF0IDwgTVBEX1JBRElYKSB7CisgICAgICAgICAgICAgICAgX21wZF9zaW5nbGVtdWwodzIsIHFoYXQsIHZbbi0yXSk7CisgICAgICAgICAgICAgICAgaWYgKHcyWzFdIDw9IHJoYXQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHcyWzFdICE9IHJoYXQgfHwgdzJbMF0gPD0gdVtqK24tMl0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcWhhdCAtPSAxOworICAgICAgICAgICAgcmhhdCArPSB2W24tMV07CisgICAgICAgICAgICBpZiAocmhhdCA8IHZbbi0xXSB8fCByaGF0ID49IE1QRF9SQURJWCkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8qIEQ0OiBtdWx0aXBseSBhbmQgc3VidHJhY3QgKi8KKyAgICAgICAgY2FycnkgPSAwOworICAgICAgICBmb3IgKGk9MDsgaSA8PSBuOyBpKyspIHsKKworICAgICAgICAgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIHFoYXQsIHZbaV0pOworCisgICAgICAgICAgICBsbyA9IGNhcnJ5ICsgbG87CisgICAgICAgICAgICBpZiAobG8gPCBjYXJyeSkgaGkrKzsKKworICAgICAgICAgICAgX21wZF9kaXZfd29yZHNfcigmaGksICZsbywgaGksIGxvKTsKKworICAgICAgICAgICAgeCA9IHVbaStqXSAtIGxvOworICAgICAgICAgICAgY2FycnkgPSAodVtpK2pdIDwgeCk7CisgICAgICAgICAgICB1W2kral0gPSBjYXJyeSA/IHgrTVBEX1JBRElYIDogeDsKKyAgICAgICAgICAgIGNhcnJ5ICs9IGhpOworICAgICAgICB9CisgICAgICAgIHFbal0gPSBxaGF0OworICAgICAgICAvKiBENTogdGVzdCByZW1haW5kZXIgKi8KKyAgICAgICAgaWYgKGNhcnJ5KSB7CisgICAgICAgICAgICBxW2pdIC09IDE7CisgICAgICAgICAgICAvKiBENjogYWRkIGJhY2sgKi8KKyAgICAgICAgICAgICh2b2lkKV9tcGRfYmFzZWFkZCh1K2osIHUraiwgdiwgbisxLCBuKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIEQ4OiB1bm5vcm1hbGl6ZSAqLworICAgIGlmIChyICE9IE5VTEwpIHsKKyAgICAgICAgX21wZF9zaG9ydGRpdihyLCB1LCBuLCBkKTsKKyAgICAgICAgLyogd2UgYXJlIG5vdCBpbnRlcmVzdGVkIGluIHRoZSByZXR1cm4gdmFsdWUgaGVyZSAqLworICAgICAgICByZXR2YWwgPSAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dmFsID0gIV9tcGRfaXNhbGx6ZXJvKHUsIG4pOworICAgIH0KKworCitpZiAodSAhPSB1c3RhdGljKSBtcGRfZnJlZSh1KTsKK2lmICh2ICE9IHZzdGF0aWMpIG1wZF9mcmVlKHYpOworcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIExlZnQgc2hpZnQgb2Ygc3JjIGJ5ICdzaGlmdCcgZGlnaXRzOyBzcmMgbWF5IGVxdWFsIGRlc3QuCisgKgorICogIGRlc3QgOj0gYXJlYSBvZiBuIG1wZF91aW50X3Qgd2l0aCBzcGFjZSBmb3Igc3JjZGlnaXRzK3NoaWZ0IGRpZ2l0cy4KKyAqICBzcmMgIDo9IGNvZWZmaWNpZW50IHdpdGggbGVuZ3RoIG0uCisgKgorICogVGhlIGNhc2Ugc3BsaXRzIGluIHRoZSBmdW5jdGlvbiBhcmUgbm9uLW9idmlvdXMuIFRoZSBmb2xsb3dpbmcKKyAqIGVxdWF0aW9ucyBtaWdodCBoZWxwOgorICoKKyAqICBMZXQgbXNkaWdpdHMgZGVub3RlIHRoZSBudW1iZXIgb2YgZGlnaXRzIGluIHRoZSBtb3N0IHNpZ25pZmljYW50CisgKiAgd29yZCBvZiBzcmMuIFRoZW4gMSA8PSBtc2RpZ2l0cyA8PSByZGlnaXRzLgorICoKKyAqICAgMSkgc2hpZnQgPSBxICogcmRpZ2l0cyArIHIKKyAqICAgMikgc3JjZGlnaXRzID0gcXNyYyAqIHJkaWdpdHMgKyBtc2RpZ2l0cworICogICAzKSBkZXN0ZGlnaXRzID0gc2hpZnQgKyBzcmNkaWdpdHMKKyAqICAgICAgICAgICAgICAgICA9IHEgKiByZGlnaXRzICsgciArIHFzcmMgKiByZGlnaXRzICsgbXNkaWdpdHMKKyAqICAgICAgICAgICAgICAgICA9IHEgKiByZGlnaXRzICsgKHFzcmMgKiByZGlnaXRzICsgKHIgKyBtc2RpZ2l0cykpCisgKgorICogIFRoZSByZXN1bHQgaGFzIHEgemVybyB3b3JkcywgZm9sbG93ZWQgYnkgdGhlIGNvZWZmaWNpZW50IHRoYXQKKyAqICBpcyBsZWZ0LXNoaWZ0ZWQgYnkgci4gVGhlIGNhc2UgciA9PSAwIGlzIHRyaXZpYWwuIEZvciByID4gMCwgaXQKKyAqICBpcyBpbXBvcnRhbnQgdG8ga2VlcCBpbiBtaW5kIHRoYXQgd2UgYWx3YXlzIHJlYWQgbSBzb3VyY2Ugd29yZHMsCisgKiAgYnV0IHdyaXRlIG0rMSBkZXN0aW5hdGlvbiB3b3JkcyBpZiByICsgbXNkaWdpdHMgPiByZGlnaXRzLCBtIHdvcmRzCisgKiAgb3RoZXJ3aXNlLgorICovCit2b2lkCitfbXBkX2Jhc2VzaGlmdGwobXBkX3VpbnRfdCAqZGVzdCwgbXBkX3VpbnRfdCAqc3JjLCBtcGRfc2l6ZV90IG4sIG1wZF9zaXplX3QgbSwKKyAgICAgICAgICAgICAgICBtcGRfc2l6ZV90IHNoaWZ0KQoreworI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAvKiBzcHVyaW91cyB1bmluaXRpYWxpemVkIHdhcm5pbmdzICovCisgICAgbXBkX3VpbnRfdCBsPWwsIGxwcmV2PWxwcmV2LCBoPWg7CisjZWxzZQorICAgIG1wZF91aW50X3QgbCwgbHByZXYsIGg7CisjZW5kaWYKKyAgICBtcGRfdWludF90IHEsIHI7CisgICAgbXBkX3VpbnRfdCBwaDsKKworICAgIGFzc2VydChtID4gMCAmJiBuID49IG0pOworCisgICAgX21wZF9kaXZfd29yZCgmcSwgJnIsIChtcGRfdWludF90KXNoaWZ0LCBNUERfUkRJR0lUUyk7CisKKyAgICBpZiAociAhPSAwKSB7CisKKyAgICAgICAgcGggPSBtcGRfcG93MTBbcl07CisKKyAgICAgICAgLS1tOyAtLW47CisgICAgICAgIF9tcGRfZGl2bW9kX3BvdzEwKCZoLCAmbHByZXYsIHNyY1ttLS1dLCBNUERfUkRJR0lUUy1yKTsKKyAgICAgICAgaWYgKGggIT0gMCkgeyAvKiByICsgbXNkaWdpdHMgPiByZGlnaXRzIDw9PT4gaCAhPSAwICovCisgICAgICAgICAgICBkZXN0W24tLV0gPSBoOworICAgICAgICB9CisgICAgICAgIC8qIHdyaXRlIG0tMSBzaGlmdGVkIHdvcmRzICovCisgICAgICAgIGZvciAoOyBtICE9IE1QRF9TSVpFX01BWDsgbS0tLG4tLSkgeworICAgICAgICAgICAgX21wZF9kaXZtb2RfcG93MTAoJmgsICZsLCBzcmNbbV0sIE1QRF9SRElHSVRTLXIpOworICAgICAgICAgICAgZGVzdFtuXSA9IHBoICogbHByZXYgKyBoOworICAgICAgICAgICAgbHByZXYgPSBsOworICAgICAgICB9CisgICAgICAgIC8qIHdyaXRlIGxlYXN0IHNpZ25pZmljYW50IHdvcmQgKi8KKyAgICAgICAgZGVzdFtxXSA9IHBoICogbHByZXY7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB3aGlsZSAoLS1tICE9IE1QRF9TSVpFX01BWCkgeworICAgICAgICAgICAgZGVzdFttK3FdID0gc3JjW21dOworICAgICAgICB9CisgICAgfQorCisgICAgbXBkX3VpbnRfemVybyhkZXN0LCBxKTsKK30KKworLyoKKyAqIFJpZ2h0IHNoaWZ0IG9mIHNyYyBieSAnc2hpZnQnIGRpZ2l0czsgc3JjIG1heSBlcXVhbCBkZXN0LgorICogQXNzdW1wdGlvbjogc3JjZGlnaXRzLXNoaWZ0ID4gMC4KKyAqCisgKiAgZGVzdCA6PSBhcmVhIHdpdGggc3BhY2UgZm9yIHNyY2RpZ2l0cy1zaGlmdCBkaWdpdHMuCisgKiAgc3JjICA6PSBjb2VmZmljaWVudCB3aXRoIGxlbmd0aCAnc2xlbicuCisgKgorICogVGhlIGNhc2Ugc3BsaXRzIGluIHRoZSBmdW5jdGlvbiByZWx5IG9uIHRoZSBmb2xsb3dpbmcgZXF1YXRpb25zOgorICoKKyAqICBMZXQgbXNkaWdpdHMgZGVub3RlIHRoZSBudW1iZXIgb2YgZGlnaXRzIGluIHRoZSBtb3N0IHNpZ25pZmljYW50CisgKiAgd29yZCBvZiBzcmMuIFRoZW4gMSA8PSBtc2RpZ2l0cyA8PSByZGlnaXRzLgorICoKKyAqICAxKSBzaGlmdCA9IHEgKiByZGlnaXRzICsgcgorICogIDIpIHNyY2RpZ2l0cyA9IHFzcmMgKiByZGlnaXRzICsgbXNkaWdpdHMKKyAqICAzKSBkZXN0ZGlnaXRzID0gc3JjZGlnaXRzIC0gc2hpZnQKKyAqICAgICAgICAgICAgICAgID0gcXNyYyAqIHJkaWdpdHMgKyBtc2RpZ2l0cyAtIChxICogcmRpZ2l0cyArIHIpCisgKiAgICAgICAgICAgICAgICA9IChxc3JjIC0gcSkgKiByZGlnaXRzICsgbXNkaWdpdHMgLSByCisgKgorICogU2luY2UgZGVzdGRpZ2l0cyA+IDAgYW5kIDEgPD0gbXNkaWdpdHMgPD0gcmRpZ2l0czoKKyAqCisgKiAgNCkgcXNyYyA+PSBxCisgKiAgNSkgcXNyYyA9PSBxICA9PT4gIG1zZGlnaXRzID4gcgorICoKKyAqIFRoZSByZXN1bHQgaGFzIHNsZW4tcSB3b3JkcyBpZiBtc2RpZ2l0cyA+IHIsIHNsZW4tcS0xIHdvcmRzIG90aGVyd2lzZS4KKyAqLworbXBkX3VpbnRfdAorX21wZF9iYXNlc2hpZnRyKG1wZF91aW50X3QgKmRlc3QsIG1wZF91aW50X3QgKnNyYywgbXBkX3NpemVfdCBzbGVuLAorICAgICAgICAgICAgICAgIG1wZF9zaXplX3Qgc2hpZnQpCit7CisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19JTlRFTF9DT01QSUxFUikgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgIC8qIHNwdXJpb3VzIHVuaW5pdGlhbGl6ZWQgd2FybmluZ3MgKi8KKyAgICBtcGRfdWludF90IGw9bCwgaD1oLCBocHJldj1ocHJldjsgLyogbG93LCBoaWdoLCBwcmV2aW91cyBoaWdoICovCisjZWxzZQorICAgIG1wZF91aW50X3QgbCwgaCwgaHByZXY7IC8qIGxvdywgaGlnaCwgcHJldmlvdXMgaGlnaCAqLworI2VuZGlmCisgICAgbXBkX3VpbnRfdCBybmQsIHJlc3Q7ICAgLyogcm91bmRpbmcgZGlnaXQsIHJlc3QgKi8KKyAgICBtcGRfdWludF90IHEsIHI7CisgICAgbXBkX3NpemVfdCBpLCBqOworICAgIG1wZF91aW50X3QgcGg7CisKKyAgICBhc3NlcnQoc2xlbiA+IDApOworCisgICAgX21wZF9kaXZfd29yZCgmcSwgJnIsIChtcGRfdWludF90KXNoaWZ0LCBNUERfUkRJR0lUUyk7CisKKyAgICBybmQgPSByZXN0ID0gMDsKKyAgICBpZiAociAhPSAwKSB7CisKKyAgICAgICAgcGggPSBtcGRfcG93MTBbTVBEX1JESUdJVFMtcl07CisKKyAgICAgICAgX21wZF9kaXZtb2RfcG93MTAoJmhwcmV2LCAmcmVzdCwgc3JjW3FdLCByKTsKKyAgICAgICAgX21wZF9kaXZtb2RfcG93MTAoJnJuZCwgJnJlc3QsIHJlc3QsIHItMSk7CisKKyAgICAgICAgaWYgKHJlc3QgPT0gMCAmJiBxID4gMCkgeworICAgICAgICAgICAgcmVzdCA9ICFfbXBkX2lzYWxsemVybyhzcmMsIHEpOworICAgICAgICB9CisgICAgICAgIC8qIHdyaXRlIHNsZW4tcS0xIHdvcmRzICovCisgICAgICAgIGZvciAoaj0wLGk9cSsxOyBpPHNsZW47IGkrKyxqKyspIHsKKyAgICAgICAgICAgIF9tcGRfZGl2bW9kX3BvdzEwKCZoLCAmbCwgc3JjW2ldLCByKTsKKyAgICAgICAgICAgIGRlc3Rbal0gPSBwaCAqIGwgKyBocHJldjsKKyAgICAgICAgICAgIGhwcmV2ID0gaDsKKyAgICAgICAgfQorICAgICAgICAvKiB3cml0ZSBtb3N0IHNpZ25pZmljYW50IHdvcmQgKi8KKyAgICAgICAgaWYgKGhwcmV2ICE9IDApIHsgLyogYWx3YXlzIHRoZSBjYXNlIGlmIHNsZW49PXEtMSAqLworICAgICAgICAgICAgZGVzdFtqXSA9IGhwcmV2OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAocSA+IDApIHsKKyAgICAgICAgICAgIF9tcGRfZGl2bW9kX3BvdzEwKCZybmQsICZyZXN0LCBzcmNbcS0xXSwgTVBEX1JESUdJVFMtMSk7CisgICAgICAgICAgICAvKiBpcyB0aGVyZSBhbnkgbm9uLXplcm8gZGlnaXQgYmVsb3cgcm5kPyAqLworICAgICAgICAgICAgaWYgKHJlc3QgPT0gMCkgcmVzdCA9ICFfbXBkX2lzYWxsemVybyhzcmMsIHEtMSk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChqID0gMDsgaiA8IHNsZW4tcTsgaisrKSB7CisgICAgICAgICAgICBkZXN0W2pdID0gc3JjW3Eral07CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiAwLTQgID09PiBybmQrcmVzdCA8IDAuNSAgICovCisgICAgLyogNSAgICA9PT4gcm5kK3Jlc3QgPT0gMC41ICAqLworICAgIC8qIDYtOSAgPT0+IHJuZCtyZXN0ID4gMC41ICAgKi8KKyAgICByZXR1cm4gKHJuZCA9PSAwIHx8IHJuZCA9PSA1KSA/IHJuZCArICEhcmVzdCA6IHJuZDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgQ2FsY3VsYXRpb25zIGluIGJhc2UgYiAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBBZGQgdiB0byB3IChsZW4gbSkuIFRoZSBjYWxsaW5nIGZ1bmN0aW9uIGhhcyB0byBoYW5kbGUgYSBwb3NzaWJsZQorICogZmluYWwgY2FycnkuIEFzc3VtcHRpb246IG0gPiAwLgorICovCittcGRfdWludF90CitfbXBkX3Nob3J0YWRkX2IobXBkX3VpbnRfdCAqdywgbXBkX3NpemVfdCBtLCBtcGRfdWludF90IHYsIG1wZF91aW50X3QgYikKK3sKKyAgICBtcGRfdWludF90IHM7CisgICAgbXBkX3VpbnRfdCBjYXJyeTsKKyAgICBtcGRfc2l6ZV90IGk7CisKKyAgICBhc3NlcnQobSA+IDApOworCisgICAgLyogYWRkIHYgdG8gdyAqLworICAgIHMgPSB3WzBdICsgdjsKKyAgICBjYXJyeSA9IChzIDwgdikgfCAocyA+PSBiKTsKKyAgICB3WzBdID0gY2FycnkgPyBzLWIgOiBzOworCisgICAgLyogaWYgdGhlcmUgaXMgYSBjYXJyeSwgcHJvcGFnYXRlIGl0ICovCisgICAgZm9yIChpID0gMTsgY2FycnkgJiYgaSA8IG07IGkrKykgeworICAgICAgICBzID0gd1tpXSArIGNhcnJ5OworICAgICAgICBjYXJyeSA9IChzID09IGIpOworICAgICAgICB3W2ldID0gY2FycnkgPyAwIDogczsKKyAgICB9CisKKyAgICByZXR1cm4gY2Fycnk7Cit9CisKKy8qIHcgOj0gcHJvZHVjdCBvZiB1IChsZW4gbikgYW5kIHYgKHNpbmdsZSB3b3JkKS4gUmV0dXJuIGNhcnJ5LiAqLworbXBkX3VpbnRfdAorX21wZF9zaG9ydG11bF9jKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3QgbiwgbXBkX3VpbnRfdCB2KQoreworICAgIG1wZF91aW50X3QgaGksIGxvOworICAgIG1wZF91aW50X3QgY2FycnkgPSAwOworICAgIG1wZF9zaXplX3QgaTsKKworICAgIGFzc2VydChuID4gMCk7CisKKyAgICBmb3IgKGk9MDsgaSA8IG47IGkrKykgeworCisgICAgICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCB1W2ldLCB2KTsKKyAgICAgICAgbG8gPSBjYXJyeSArIGxvOworICAgICAgICBpZiAobG8gPCBjYXJyeSkgaGkrKzsKKworICAgICAgICBfbXBkX2Rpdl93b3Jkc19yKCZjYXJyeSwgJndbaV0sIGhpLCBsbyk7CisgICAgfQorCisgICAgcmV0dXJuIGNhcnJ5OworfQorCisvKiB3IDo9IHByb2R1Y3Qgb2YgdSAobGVuIG4pIGFuZCB2IChzaW5nbGUgd29yZCkgKi8KK21wZF91aW50X3QKK19tcGRfc2hvcnRtdWxfYihtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4sCisgICAgICAgICAgICAgICAgbXBkX3VpbnRfdCB2LCBtcGRfdWludF90IGIpCit7CisgICAgbXBkX3VpbnRfdCBoaSwgbG87CisgICAgbXBkX3VpbnRfdCBjYXJyeSA9IDA7CisgICAgbXBkX3NpemVfdCBpOworCisgICAgYXNzZXJ0KG4gPiAwKTsKKworICAgIGZvciAoaT0wOyBpIDwgbjsgaSsrKSB7CisKKyAgICAgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIHVbaV0sIHYpOworICAgICAgICBsbyA9IGNhcnJ5ICsgbG87CisgICAgICAgIGlmIChsbyA8IGNhcnJ5KSBoaSsrOworCisgICAgICAgIF9tcGRfZGl2X3dvcmRzKCZjYXJyeSwgJndbaV0sIGhpLCBsbywgYik7CisgICAgfQorCisgICAgcmV0dXJuIGNhcnJ5OworfQorCisvKgorICogS251dGgsIFRBT0NQIFZvbHVtZSAyLCA0LjMuMSwgZXhlcmNpc2UgMTY6CisgKiAgICAgdyA6PSBxdW90aWVudCBvZiB1IChsZW4gbikgZGl2aWRlZCBieSBhIHNpbmdsZSB3b3JkIHYKKyAqLworbXBkX3VpbnRfdAorX21wZF9zaG9ydGRpdl9iKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3QgbiwKKyAgICAgICAgICAgICAgICBtcGRfdWludF90IHYsIG1wZF91aW50X3QgYikKK3sKKyAgICBtcGRfdWludF90IGhpLCBsbzsKKyAgICBtcGRfdWludF90IHJlbSA9IDA7CisgICAgbXBkX3NpemVfdCBpOworCisgICAgYXNzZXJ0KG4gPiAwKTsKKworICAgIGZvciAoaT1uLTE7IGkgIT0gTVBEX1NJWkVfTUFYOyBpLS0pIHsKKworICAgICAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgcmVtLCBiKTsKKyAgICAgICAgbG8gPSB1W2ldICsgbG87CisgICAgICAgIGlmIChsbyA8IHVbaV0pIGhpKys7CisKKyAgICAgICAgX21wZF9kaXZfd29yZHMoJndbaV0sICZyZW0sIGhpLCBsbywgdik7CisgICAgfQorCisgICAgcmV0dXJuIHJlbTsKK30KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2Jhc2Vhcml0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNGNlZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2Jhc2Vhcml0aC5oCkBAIC0wLDAgKzEsMjIyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIEJBU0VBUklUSF9ICisjZGVmaW5lIEJBU0VBUklUSF9ICisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSAidHlwZWFyaXRoLmgiCisKKworLyogSW50ZXJuYWwgaGVhZGVyIGZpbGU6IGFsbCBzeW1ib2xzIGhhdmUgbG9jYWwgc2NvcGUgaW4gdGhlIERTTyAqLworTVBEX1BSQUdNQShNUERfSElERV9TWU1CT0xTX1NUQVJUKQorCisKK21wZF91aW50X3QgX21wZF9iYXNlYWRkKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIGNvbnN0IG1wZF91aW50X3QgKnYsCisgICAgICAgICAgICAgICAgICAgICAgICBtcGRfc2l6ZV90IG0sIG1wZF9zaXplX3Qgbik7Cit2b2lkIF9tcGRfYmFzZWFkZHRvKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3Qgbik7CittcGRfdWludF90IF9tcGRfc2hvcnRhZGQobXBkX3VpbnRfdCAqdywgbXBkX3NpemVfdCBtLCBtcGRfdWludF90IHYpOworbXBkX3VpbnRfdCBfbXBkX3Nob3J0YWRkX2IobXBkX3VpbnRfdCAqdywgbXBkX3NpemVfdCBtLCBtcGRfdWludF90IHYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtcGRfdWludF90IGIpOworbXBkX3VpbnRfdCBfbXBkX2Jhc2VpbmNyKG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3Qgbik7Cit2b2lkIF9tcGRfYmFzZXN1YihtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBjb25zdCBtcGRfdWludF90ICp2LAorICAgICAgICAgICAgICAgICAgbXBkX3NpemVfdCBtLCBtcGRfc2l6ZV90IG4pOwordm9pZCBfbXBkX2Jhc2VzdWJmcm9tKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3Qgbik7Cit2b2lkIF9tcGRfYmFzZW11bChtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBjb25zdCBtcGRfdWludF90ICp2LAorICAgICAgICAgICAgICAgICAgbXBkX3NpemVfdCBtLCBtcGRfc2l6ZV90IG4pOwordm9pZCBfbXBkX3Nob3J0bXVsKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3QgbiwKKyAgICAgICAgICAgICAgICAgICBtcGRfdWludF90IHYpOworbXBkX3VpbnRfdCBfbXBkX3Nob3J0bXVsX2MobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgbXBkX3NpemVfdCBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBkX3VpbnRfdCB2KTsKK21wZF91aW50X3QgX21wZF9zaG9ydG11bF9iKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3QgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1wZF91aW50X3QgdiwgbXBkX3VpbnRfdCBiKTsKK21wZF91aW50X3QgX21wZF9zaG9ydGRpdihtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgbXBkX3VpbnRfdCB2KTsKK21wZF91aW50X3QgX21wZF9zaG9ydGRpdl9iKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3QgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1wZF91aW50X3QgdiwgbXBkX3VpbnRfdCBiKTsKK2ludCBfbXBkX2Jhc2VkaXZtb2QobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgY29uc3QgbXBkX3VpbnRfdCAqdWNvbnN0LAorICAgICAgICAgICAgICAgICAgICBjb25zdCBtcGRfdWludF90ICp2Y29uc3QsIG1wZF9zaXplX3QgbnBsdXNtLCBtcGRfc2l6ZV90IG4pOwordm9pZCBfbXBkX2Jhc2VzaGlmdGwobXBkX3VpbnRfdCAqZGVzdCwgbXBkX3VpbnRfdCAqc3JjLCBtcGRfc2l6ZV90IG4sCisgICAgICAgICAgICAgICAgICAgICBtcGRfc2l6ZV90IG0sIG1wZF9zaXplX3Qgc2hpZnQpOworbXBkX3VpbnRfdCBfbXBkX2Jhc2VzaGlmdHIobXBkX3VpbnRfdCAqZGVzdCwgbXBkX3VpbnRfdCAqc3JjLCBtcGRfc2l6ZV90IHNsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtcGRfc2l6ZV90IHNoaWZ0KTsKKworCisKKyNpZmRlZiBDT05GSUdfNjQKK2V4dGVybiBjb25zdCBtcGRfdWludF90IG1wcmltZV9yZHg7CisKKy8qCisgKiBBbGdvcml0aG0gZnJvbTogRGl2aXNpb24gYnkgSW52YXJpYW50IEludGVnZXJzIHVzaW5nIE11bHRpcGxpY2F0aW9uLAorICogVC4gR3Jhbmx1bmQgYW5kIFAuIEwuIE1vbnRnb21lcnksIFByb2NlZWRpbmdzIG9mIHRoZSBTSUdQTEFOICc5NAorICogQ29uZmVyZW5jZSBvbiBQcm9ncmFtbWluZyBMYW5ndWFnZSBEZXNpZ24gYW5kIEltcGxlbWVudGF0aW9uLgorICoKKyAqIGh0dHA6Ly9nbXBsaWIub3JnL350ZWdlL2RpdmNuc3QtcGxkaTk0LnBkZgorICoKKyAqIFZhcmlhYmxlcyBmcm9tIHRoZSBwYXBlciBhbmQgdGhlaXIgdHJhbnNsYXRpb25zIChTZWUgc2VjdGlvbiA4KToKKyAqCisgKiAgTiA6PSA2NAorICogIGQgOj0gTVBEX1JBRElYCisgKiAgbCA6PSA2NAorICogIG0nIDo9IGZsb29yKCgyKiooNjQrNjQpIC0gMSkvTVBEX1JBRElYKSAtIDIqKjY0CisgKgorICogU2luY2UgTi1sID09IDA6CisgKgorICogIGRub3JtIDo9IGQKKyAqICBuMiA6PSBoaQorICogIG4xMCA6PSBsbworICoKKyAqIEFDTDIgcHJvb2Y6IG1wZC1kaXYtd29yZHMtci1jb3JyZWN0CisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZfd29yZHNfcihtcGRfdWludF90ICpxLCBtcGRfdWludF90ICpyLCBtcGRfdWludF90IGhpLCBtcGRfdWludF90IGxvKQoreworICAgIG1wZF91aW50X3Qgbl9hZGosIGgsIGwsIHQ7CisgICAgbXBkX3VpbnRfdCBuMV9uZWc7CisKKyAgICAvKiBuMV9uZWcgPSBpZiBsbyA+PSAyKio2MyB0aGVuIE1QRF9VSU5UX01BWCBlbHNlIDAgKi8KKyAgICBuMV9uZWcgPSAobG8gJiAoMVVMTDw8NjMpKSA/IE1QRF9VSU5UX01BWCA6IDA7CisgICAgLyogbl9hZGogPSBpZiBsbyA+PSAyKio2MyB0aGVuIGxvK01QRF9SQURJWCBlbHNlIGxvICovCisgICAgbl9hZGogPSBsbyArIChuMV9uZWcgJiBNUERfUkFESVgpOworCisgICAgLyogKGgsIGwpID0gaWYgbG8gPj0gMioqNjMgdGhlbiBtJyooaGkrMSkgZWxzZSBtJypoaSAqLworICAgIF9tcGRfbXVsX3dvcmRzKCZoLCAmbCwgbXByaW1lX3JkeCwgaGktbjFfbmVnKTsKKyAgICBsID0gbCArIG5fYWRqOworICAgIGlmIChsIDwgbl9hZGopIGgrKzsKKyAgICB0ID0gaCArIGhpOworICAgIC8qIEF0IHRoaXMgcG9pbnQgdCA9PSBxZXN0LCB3aXRoIHEgPT0gcWVzdCBvciBxID09IHFlc3QrMToKKyAgICAgKiAgIDEpIDAgPD0gMioqNjQqaGkgKyBsbyAtIHFlc3QqTVBEX1JBRElYIDwgMipNUERfUkFESVgKKyAgICAgKi8KKworICAgIC8qIHQgPSAyKio2NC0xIC0gcWVzdCA9IDIqKjY0IC0gKHFlc3QrMSkgKi8KKyAgICB0ID0gTVBEX1VJTlRfTUFYIC0gdDsKKworICAgIC8qIChoLCBsKSA9IDIqKjY0Kk1QRF9SQURJWCAtIChxZXN0KzEpKk1QRF9SQURJWCAqLworICAgIF9tcGRfbXVsX3dvcmRzKCZoLCAmbCwgdCwgTVBEX1JBRElYKTsKKyAgICBsID0gbCArIGxvOworICAgIGlmIChsIDwgbG8pIGgrKzsKKyAgICBoICs9IGhpOworICAgIGggLT0gTVBEX1JBRElYOworICAgIC8qIChoLCBsKSA9IDIqKjY0KmhpICsgbG8gLSAocWVzdCsxKSpNUERfUkFESVggKG1vZCAyKioxMjgpCisgICAgICogQ2FzZSBxID09IHFlc3QrMToKKyAgICAgKiAgICAgYSkgaCA9PSAwLCBsID09IHIKKyAgICAgKiAgICAgYikgcSA6PSBoIC0gdCA9PSBxZXN0KzEKKyAgICAgKiAgICAgYykgciA6PSBsCisgICAgICogQ2FzZSBxID09IHFlc3Q6CisgICAgICogICAgIGEpIGggPT0gTVBEX1VJTlRfTUFYLCBsID09IDIqKjY0LShNUERfUkFESVgtcikKKyAgICAgKiAgICAgYikgcSA6PSBoIC0gdCA9PSBxZXN0CisgICAgICogICAgIGMpIHIgOj0gbCArIE1QRF9SQURJWCA9IHIKKyAgICAgKi8KKworICAgICpxID0gKGggLSB0KTsKKyAgICAqciA9IGwgKyAoTVBEX1JBRElYICYgaCk7Cit9CisjZWxzZQorc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2Rpdl93b3Jkc19yKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgaGksIG1wZF91aW50X3QgbG8pCit7CisgICAgX21wZF9kaXZfd29yZHMocSwgciwgaGksIGxvLCBNUERfUkFESVgpOworfQorI2VuZGlmCisKKworLyogTXVsdGlwbHkgdHdvIHNpbmdsZSBiYXNlIE1QRF9SQURJWCB3b3Jkcywgc3RvcmUgcmVzdWx0IGluIGFycmF5IHdbMl0uICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfc2luZ2xlbXVsKG1wZF91aW50X3Qgd1syXSwgbXBkX3VpbnRfdCB1LCBtcGRfdWludF90IHYpCit7CisgICAgbXBkX3VpbnRfdCBoaSwgbG87CisKKyAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgdSwgdik7CisgICAgX21wZF9kaXZfd29yZHNfcigmd1sxXSwgJndbMF0sIGhpLCBsbyk7Cit9CisKKy8qIE11bHRpcGx5IHUgKGxlbiAyKSBhbmQgdiAobGVuIG0sIDEgPD0gbSA8PSAyKS4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9tdWxfMl9sZTIobXBkX3VpbnRfdCB3WzRdLCBtcGRfdWludF90IHVbMl0sIG1wZF91aW50X3QgdlsyXSwgbXBkX3NzaXplX3QgbSkKK3sKKyAgICBtcGRfdWludF90IGhpLCBsbzsKKworICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCB1WzBdLCB2WzBdKTsKKyAgICBfbXBkX2Rpdl93b3Jkc19yKCZ3WzFdLCAmd1swXSwgaGksIGxvKTsKKworICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCB1WzFdLCB2WzBdKTsKKyAgICBsbyA9IHdbMV0gKyBsbzsKKyAgICBpZiAobG8gPCB3WzFdKSBoaSsrOworICAgIF9tcGRfZGl2X3dvcmRzX3IoJndbMl0sICZ3WzFdLCBoaSwgbG8pOworICAgIGlmIChtID09IDEpIHJldHVybjsKKworICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCB1WzBdLCB2WzFdKTsKKyAgICBsbyA9IHdbMV0gKyBsbzsKKyAgICBpZiAobG8gPCB3WzFdKSBoaSsrOworICAgIF9tcGRfZGl2X3dvcmRzX3IoJndbM10sICZ3WzFdLCBoaSwgbG8pOworCisgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIHVbMV0sIHZbMV0pOworICAgIGxvID0gd1syXSArIGxvOworICAgIGlmIChsbyA8IHdbMl0pIGhpKys7CisgICAgbG8gPSB3WzNdICsgbG87CisgICAgaWYgKGxvIDwgd1szXSkgaGkrKzsKKyAgICBfbXBkX2Rpdl93b3Jkc19yKCZ3WzNdLCAmd1syXSwgaGksIGxvKTsKK30KKworCisvKgorICogVGVzdCBpZiBhbGwgd29yZHMgZnJvbSBkYXRhW2xlbi0xXSB0byBkYXRhWzBdIGFyZSB6ZXJvLiBJZiBsZW4gaXMgMCwgbm90aGluZworICogaXMgdGVzdGVkIGFuZCB0aGUgY29lZmZpY2llbnQgaXMgcmVnYXJkZWQgYXMgImFsbCB6ZXJvIi4KKyAqLworc3RhdGljIGlubGluZSBpbnQKK19tcGRfaXNhbGx6ZXJvKGNvbnN0IG1wZF91aW50X3QgKmRhdGEsIG1wZF9zc2l6ZV90IGxlbikKK3sKKyAgICB3aGlsZSAoLS1sZW4gPj0gMCkgeworICAgICAgICBpZiAoZGF0YVtsZW5dICE9IDApIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworLyoKKyAqIFRlc3QgaWYgYWxsIGZ1bGwgd29yZHMgZnJvbSBkYXRhW2xlbi0xXSB0byBkYXRhWzBdIGFyZSBNUERfUkFESVgtMQorICogKGFsbCBuaW5lcykuIFJldHVybiB0cnVlIGlmIGxlbiA9PSAwLgorICovCitzdGF0aWMgaW5saW5lIGludAorX21wZF9pc2FsbG5pbmUoY29uc3QgbXBkX3VpbnRfdCAqZGF0YSwgbXBkX3NzaXplX3QgbGVuKQoreworICAgIHdoaWxlICgtLWxlbiA+PSAwKSB7CisgICAgICAgIGlmIChkYXRhW2xlbl0gIT0gTVBEX1JBRElYLTEpIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworCitNUERfUFJBR01BKE1QRF9ISURFX1NZTUJPTFNfRU5EKSAvKiByZXN0b3JlIHByZXZpb3VzIHNjb3BlIHJ1bGVzICovCisKKworI2VuZGlmIC8qIEJBU0VBUklUSF9IICovCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2JpdHMuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYml0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0OWVjOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2JpdHMuaApAQCAtMCwwICsxLDE5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBCSVRTX0gKKyNkZWZpbmUgQklUU19ICisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKworLyogQ2hlY2sgaWYgbiBpcyBhIHBvd2VyIG9mIDIuICovCitzdGF0aWMgaW5saW5lIGludAoraXNwb3dlcjIobXBkX3NpemVfdCBuKQoreworICAgIHJldHVybiBuICE9IDAgJiYgKG4gJiAobi0xKSkgPT0gMDsKK30KKworI2lmIGRlZmluZWQoQU5TSSkKKy8qCisgKiBSZXR1cm4gdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IHBvc2l0aW9uIG9mIG4gZnJvbSAwIHRvIDMxICg2MykuCisgKiBBc3N1bXB0aW9uczogbiAhPSAwLgorICovCitzdGF0aWMgaW5saW5lIGludAorbXBkX2JzcihtcGRfc2l6ZV90IG4pCit7CisgICAgaW50IHBvcyA9IDA7CisgICAgbXBkX3NpemVfdCB0bXA7CisKKyNpZmRlZiBDT05GSUdfNjQKKyAgICB0bXAgPSBuID4+IDMyOworICAgIGlmICh0bXAgIT0gMCkgeyBuID0gdG1wOyBwb3MgKz0gMzI7IH0KKyNlbmRpZgorICAgIHRtcCA9IG4gPj4gMTY7CisgICAgaWYgKHRtcCAhPSAwKSB7IG4gPSB0bXA7IHBvcyArPSAxNjsgfQorICAgIHRtcCA9IG4gPj4gODsKKyAgICBpZiAodG1wICE9IDApIHsgbiA9IHRtcDsgcG9zICs9IDg7IH0KKyAgICB0bXAgPSBuID4+IDQ7CisgICAgaWYgKHRtcCAhPSAwKSB7IG4gPSB0bXA7IHBvcyArPSA0OyB9CisgICAgdG1wID0gbiA+PiAyOworICAgIGlmICh0bXAgIT0gMCkgeyBuID0gdG1wOyBwb3MgKz0gMjsgfQorICAgIHRtcCA9IG4gPj4gMTsKKyAgICBpZiAodG1wICE9IDApIHsgbiA9IHRtcDsgcG9zICs9IDE7IH0KKworICAgIHJldHVybiBwb3MgKyAoaW50KW4gLSAxOworfQorCisvKgorICogUmV0dXJuIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgcG9zaXRpb24gb2YgbiBmcm9tIDAgdG8gMzEgKDYzKS4KKyAqIEFzc3VtcHRpb25zOiBuICE9IDAuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50CittcGRfYnNmKG1wZF9zaXplX3QgbikKK3sKKyAgICBpbnQgcG9zOworCisjaWZkZWYgQ09ORklHXzY0CisgICAgcG9zID0gNjM7CisgICAgaWYgKG4gJiAweDAwMDAwMDAwRkZGRkZGRkZVTEwpIHsgcG9zIC09IDMyOyB9IGVsc2UgeyBuID4+PSAzMjsgfQorICAgIGlmIChuICYgMHgwMDAwMDAwMDAwMDBGRkZGVUxMKSB7IHBvcyAtPSAxNjsgfSBlbHNlIHsgbiA+Pj0gMTY7IH0KKyAgICBpZiAobiAmIDB4MDAwMDAwMDAwMDAwMDBGRlVMTCkgeyBwb3MgLT0gIDg7IH0gZWxzZSB7IG4gPj49ICA4OyB9CisgICAgaWYgKG4gJiAweDAwMDAwMDAwMDAwMDAwMEZVTEwpIHsgcG9zIC09ICA0OyB9IGVsc2UgeyBuID4+PSAgNDsgfQorICAgIGlmIChuICYgMHgwMDAwMDAwMDAwMDAwMDAzVUxMKSB7IHBvcyAtPSAgMjsgfSBlbHNlIHsgbiA+Pj0gIDI7IH0KKyAgICBpZiAobiAmIDB4MDAwMDAwMDAwMDAwMDAwMVVMTCkgeyBwb3MgLT0gIDE7IH0KKyNlbHNlCisgICAgcG9zID0gMzE7CisgICAgaWYgKG4gJiAweDAwMDAwMDAwMDAwMEZGRkZVTCkgeyBwb3MgLT0gMTY7IH0gZWxzZSB7IG4gPj49IDE2OyB9CisgICAgaWYgKG4gJiAweDAwMDAwMDAwMDAwMDAwRkZVTCkgeyBwb3MgLT0gIDg7IH0gZWxzZSB7IG4gPj49ICA4OyB9CisgICAgaWYgKG4gJiAweDAwMDAwMDAwMDAwMDAwMEZVTCkgeyBwb3MgLT0gIDQ7IH0gZWxzZSB7IG4gPj49ICA0OyB9CisgICAgaWYgKG4gJiAweDAwMDAwMDAwMDAwMDAwMDNVTCkgeyBwb3MgLT0gIDI7IH0gZWxzZSB7IG4gPj49ICAyOyB9CisgICAgaWYgKG4gJiAweDAwMDAwMDAwMDAwMDAwMDFVTCkgeyBwb3MgLT0gIDE7IH0KKyNlbmRpZgorICAgIHJldHVybiBwb3M7Cit9CisvKiBFTkQgQU5TSSAqLworCisjZWxpZiBkZWZpbmVkKEFTTSkKKy8qCisgKiBCaXQgc2NhbiByZXZlcnNlLiBBc3N1bXB0aW9uczogYSAhPSAwLgorICovCitzdGF0aWMgaW5saW5lIGludAorbXBkX2JzcihtcGRfc2l6ZV90IGEpCit7CisgICAgbXBkX3NpemVfdCByZXR2YWw7CisKKyAgICBfX2FzbV9fICgKKyNpZmRlZiBDT05GSUdfNjQKKyAgICAgICAgImJzcnEgJTEsICUwXG5cdCIKKyNlbHNlCisgICAgICAgICJic3IgJTEsICUwXG5cdCIKKyNlbmRpZgorICAgICAgICA6Ij1yIiAocmV0dmFsKQorICAgICAgICA6InIiIChhKQorICAgICAgICA6ImNjIgorICAgICk7CisKKyAgICByZXR1cm4gKGludClyZXR2YWw7Cit9CisKKy8qCisgKiBCaXQgc2NhbiBmb3J3YXJkLiBBc3N1bXB0aW9uczogYSAhPSAwLgorICovCitzdGF0aWMgaW5saW5lIGludAorbXBkX2JzZihtcGRfc2l6ZV90IGEpCit7CisgICAgbXBkX3NpemVfdCByZXR2YWw7CisKKyAgICBfX2FzbV9fICgKKyNpZmRlZiBDT05GSUdfNjQKKyAgICAgICAgImJzZnEgJTEsICUwXG5cdCIKKyNlbHNlCisgICAgICAgICJic2YgJTEsICUwXG5cdCIKKyNlbmRpZgorICAgICAgICA6Ij1yIiAocmV0dmFsKQorICAgICAgICA6InIiIChhKQorICAgICAgICA6ImNjIgorICAgICk7CisKKyAgICByZXR1cm4gKGludClyZXR2YWw7Cit9CisvKiBFTkQgQVNNICovCisKKyNlbGlmIGRlZmluZWQoTUFTTSkKKyNpbmNsdWRlIDxpbnRyaW4uaD4KKy8qCisgKiBCaXQgc2NhbiByZXZlcnNlLiBBc3N1bXB0aW9uczogYSAhPSAwLgorICovCitzdGF0aWMgaW5saW5lIGludCBfX2NkZWNsCittcGRfYnNyKG1wZF9zaXplX3QgYSkKK3sKKyAgICB1bnNpZ25lZCBsb25nIHJldHZhbDsKKworI2lmZGVmIENPTkZJR182NAorICAgIF9CaXRTY2FuUmV2ZXJzZTY0KCZyZXR2YWwsIGEpOworI2Vsc2UKKyAgICBfQml0U2NhblJldmVyc2UoJnJldHZhbCwgYSk7CisjZW5kaWYKKworICAgIHJldHVybiAoaW50KXJldHZhbDsKK30KKworLyoKKyAqIEJpdCBzY2FuIGZvcndhcmQuIEFzc3VtcHRpb25zOiBhICE9IDAuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IF9fY2RlY2wKK21wZF9ic2YobXBkX3NpemVfdCBhKQoreworICAgIHVuc2lnbmVkIGxvbmcgcmV0dmFsOworCisjaWZkZWYgQ09ORklHXzY0CisgICAgX0JpdFNjYW5Gb3J3YXJkNjQoJnJldHZhbCwgYSk7CisjZWxzZQorICAgIF9CaXRTY2FuRm9yd2FyZCgmcmV0dmFsLCBhKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIChpbnQpcmV0dmFsOworfQorLyogRU5EIE1BU00gKF9NU0NfVkVSKSAqLworI2Vsc2UKKyAgI2Vycm9yICJtaXNzaW5nIHByZXByb2Nlc3NvciBkZWZpbml0aW9ucyIKKyNlbmRpZiAvKiBCU1IvQlNGICovCisKKworI2VuZGlmIC8qIEJJVFNfSCAqLworCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb25zdGFudHMuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29uc3RhbnRzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJmNTg5MQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29uc3RhbnRzLmMKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgImNvbnN0YW50cy5oIgorCisKKyNpZiBkZWZpbmVkKENPTkZJR182NCkKKworICAvKiBudW1iZXItdGhlb3J5LmMgKi8KKyAgY29uc3QgbXBkX3VpbnRfdCBtcGRfbW9kdWxpWzNdID0geworICAgIDE4NDQ2NzQ0MDY5NDE0NTg0MzIxVUxMLCAxODQ0Njc0NDA1NjUyOTY4MjQzM1VMTCwgMTg0NDY3NDI5NzQxOTc5MjM4NDFVTEwKKyAgfTsKKyAgY29uc3QgbXBkX3VpbnRfdCBtcGRfcm9vdHNbM10gID0gezdVTEwsIDEwVUxMLCAxOVVMTH07CisKKyAgLyogY3J0LmMgKi8KKyAgY29uc3QgbXBkX3VpbnRfdCBJTlZfUDFfTU9EX1AyICAgPSAxODQ0Njc0NDA1NTA5ODAyNjY2OVVMTDsKKyAgY29uc3QgbXBkX3VpbnRfdCBJTlZfUDFQMl9NT0RfUDMgPSAyODcwNjQxNDM3MDgxNjBVTEw7CisgIGNvbnN0IG1wZF91aW50X3QgTEhfUDFQMiA9IDE4NDQ2NzQ0MDUyMjM0NzE1MTM3VUxMOyAgICAgLyogKFAxKlAyKSAlIDJeNjQgKi8KKyAgY29uc3QgbXBkX3VpbnRfdCBVSF9QMVAyID0gMTg0NDY3NDQwNTIyMzQ3MTUxNDFVTEw7ICAgICAvKiAoUDEqUDIpIC8gMl42NCAqLworCisgIC8qIHRyYW5zcG9zZS5jICovCisgIGNvbnN0IG1wZF9zaXplX3QgbXBkX2JpdHNbNjRdID0geworICAgIDEsIDIsIDQsIDgsIDE2LCAzMiwgNjQsIDEyOCwgMjU2LCA1MTIsIDEwMjQsICAyMDQ4LCA0MDk2LCA4MTkyLCAxNjM4NCwKKyAgICAzMjc2OCwgNjU1MzYsIDEzMTA3MiwgMjYyMTQ0LCA1MjQyODgsIDEwNDg1NzYsIDIwOTcxNTIsIDQxOTQzMDQsIDgzODg2MDgsCisgICAgMTY3NzcyMTYsIDMzNTU0NDMyLCA2NzEwODg2NCwgMTM0MjE3NzI4LCAyNjg0MzU0NTYsIDUzNjg3MDkxMiwgMTA3Mzc0MTgyNCwKKyAgICAyMTQ3NDgzNjQ4VUxMLCA0Mjk0OTY3Mjk2VUxMLCA4NTg5OTM0NTkyVUxMLCAxNzE3OTg2OTE4NFVMTCwgMzQzNTk3MzgzNjhVTEwsCisgICAgNjg3MTk0NzY3MzZVTEwsIDEzNzQzODk1MzQ3MlVMTCwgMjc0ODc3OTA2OTQ0VUxMLCA1NDk3NTU4MTM4ODhVTEwsCisgICAgMTA5OTUxMTYyNzc3NlVMTCwgMjE5OTAyMzI1NTU1MlVMTCwgNDM5ODA0NjUxMTEwNCwgODc5NjA5MzAyMjIwOFVMTCwKKyAgICAxNzU5MjE4NjA0NDQxNlVMTCwgMzUxODQzNzIwODg4MzJVTEwsIDcwMzY4NzQ0MTc3NjY0VUxMLCAxNDA3Mzc0ODgzNTUzMjhVTEwsCisgICAgMjgxNDc0OTc2NzEwNjU2VUxMLCA1NjI5NDk5NTM0MjEzMTJVTEwsIDExMjU4OTk5MDY4NDI2MjRVTEwsCisgICAgMjI1MTc5OTgxMzY4NTI0OFVMTCwgNDUwMzU5OTYyNzM3MDQ5NlVMTCwgOTAwNzE5OTI1NDc0MDk5MlVMTCwKKyAgICAxODAxNDM5ODUwOTQ4MTk4NFVMTCwgMzYwMjg3OTcwMTg5NjM5NjhVTEwsIDcyMDU3NTk0MDM3OTI3OTM2VUxMLAorICAgIDE0NDExNTE4ODA3NTg1NTg3MlVMTCwgMjg4MjMwMzc2MTUxNzExNzQ0VUxMLCA1NzY0NjA3NTIzMDM0MjM0ODhVTEwsCisgICAgMTE1MjkyMTUwNDYwNjg0Njk3NlVMTCwgMjMwNTg0MzAwOTIxMzY5Mzk1MlVMTCwgNDYxMTY4NjAxODQyNzM4NzkwNFVMTCwKKyAgICA5MjIzMzcyMDM2ODU0Nzc1ODA4VUxMCisgIH07CisKKyAgLyogbXBkZWNpbWFsLmMgKi8KKyAgY29uc3QgbXBkX3VpbnRfdCBtcGRfcG93MTBbTVBEX1JESUdJVFMrMV0gPSB7CisgICAgMSwxMCwxMDAsMTAwMCwxMDAwMCwxMDAwMDAsMTAwMDAwMCwxMDAwMDAwMCwxMDAwMDAwMDAsMTAwMDAwMDAwMCwKKyAgICAxMDAwMDAwMDAwMFVMTCwxMDAwMDAwMDAwMDBVTEwsMTAwMDAwMDAwMDAwMFVMTCwxMDAwMDAwMDAwMDAwMFVMTCwKKyAgICAxMDAwMDAwMDAwMDAwMDBVTEwsMTAwMDAwMDAwMDAwMDAwMFVMTCwxMDAwMDAwMDAwMDAwMDAwMFVMTCwKKyAgICAxMDAwMDAwMDAwMDAwMDAwMDBVTEwsMTAwMDAwMDAwMDAwMDAwMDAwMFVMTCwxMDAwMDAwMDAwMDAwMDAwMDAwMFVMTAorICB9OworCisgIC8qIG1hZ2ljIG51bWJlciBmb3IgY29uc3RhbnQgZGl2aXNpb24gYnkgTVBEX1JBRElYICovCisgIGNvbnN0IG1wZF91aW50X3QgbXByaW1lX3JkeCA9IDE1NTgxNDkyNjE4Mzg0Mjk0NzMwVUxMOworCisjZWxpZiBkZWZpbmVkKENPTkZJR18zMikKKworICAvKiBudW1iZXItdGhlb3J5LmMgKi8KKyAgY29uc3QgbXBkX3VpbnRfdCBtcGRfbW9kdWxpWzNdICA9IHsyMTEzOTI5MjE3VUwsIDIwMTMyNjU5MjFVTCwgMTgxMTkzOTMyOVVMfTsKKyAgY29uc3QgbXBkX3VpbnRfdCBtcGRfcm9vdHNbM10gICA9IHs1VUwsIDMxVUwsIDEzVUx9OworCisgIC8qIFBlbnRpdW1Qcm8gbW9kdWxhciBtdWx0aXBsaWNhdGlvbjogVGhlc2UgY29uc3RhbnRzIGhhdmUgdG8gYmUgbG9hZGVkIGFzCisgICAqIDgwIGJpdCBsb25nIGRvdWJsZXMsIHdoaWNoIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGNlcnRhaW4gY29tcGlsZXJzLiAqLworICBjb25zdCB1aW50MzJfdCBtcGRfaW52bW9kdWxpWzNdWzNdID0geworICAgIHs0MjkzODg1MTcwVSwgMjE4MTU3MDY4OFUsIDE2MzUyVX0sICAvKiAoKGxvbmcgZG91YmxlKSAxIC8gMjExMzkyOTIxN1VMKSAqLworICAgIHsxNjk4ODk4MTc3VSwgMjI5MDY0OTIyM1UsIDE2MzUyVX0sICAvKiAoKGxvbmcgZG91YmxlKSAxIC8gMjAxMzI2NTkyMVVMKSAqLworICAgIHsyNzE2MDIxODQ2VSwgMjU0NTE2NTgwM1UsIDE2MzUyVX0gICAvKiAoKGxvbmcgZG91YmxlKSAxIC8gMTgxMTkzOTMyOVVMKSAqLworICB9OworCisgIGNvbnN0IGZsb2F0IE1QRF9UV082MyA9IDkyMjMzNzIwMzY4NTQ3NzU4MDguMDsgLyogMl42MyAqLworCisgIC8qIGNydC5jICovCisgIGNvbnN0IG1wZF91aW50X3QgSU5WX1AxX01PRF9QMiAgID0gMjAxMzI2NTkwMVVMOworICBjb25zdCBtcGRfdWludF90IElOVl9QMVAyX01PRF9QMyA9IDU0VUw7CisgIGNvbnN0IG1wZF91aW50X3QgTEhfUDFQMiA9IDQxMjcxOTUxMzdVTDsgIC8qIChQMSpQMikgJSAyXjMyICovCisgIGNvbnN0IG1wZF91aW50X3QgVUhfUDFQMiA9IDk5MDkwNDMyMFVMOyAgIC8qIChQMSpQMikgLyAyXjMyICovCisKKyAgLyogdHJhbnNwb3NlLmMgKi8KKyAgY29uc3QgbXBkX3NpemVfdCBtcGRfYml0c1szMl0gPSB7CisgICAgMSwgMiwgNCwgOCwgMTYsIDMyLCA2NCwgMTI4LCAyNTYsIDUxMiwgIDEwMjQsICAyMDQ4LCA0MDk2LCA4MTkyLCAxNjM4NCwKKyAgICAzMjc2OCwgNjU1MzYsIDEzMTA3MiwgMjYyMTQ0LCA1MjQyODgsIDEwNDg1NzYsIDIwOTcxNTIsIDQxOTQzMDQsIDgzODg2MDgsCisgICAgMTY3NzcyMTYsIDMzNTU0NDMyLCA2NzEwODg2NCwgMTM0MjE3NzI4LCAyNjg0MzU0NTYsIDUzNjg3MDkxMiwgMTA3Mzc0MTgyNCwKKyAgICAyMTQ3NDgzNjQ4VUwKKyAgfTsKKworICAvKiBtcGRlY2ltYWwuYyAqLworICBjb25zdCBtcGRfdWludF90IG1wZF9wb3cxMFtNUERfUkRJR0lUUysxXSA9IHsKKyAgICAxLDEwLDEwMCwxMDAwLDEwMDAwLDEwMDAwMCwxMDAwMDAwLDEwMDAwMDAwLDEwMDAwMDAwMCwxMDAwMDAwMDAwCisgIH07CisKKyNlbHNlCisgICNlcnJvciAiQ09ORklHXzY0IG9yIENPTkZJR18zMiBtdXN0IGJlIGRlZmluZWQuIgorI2VuZGlmCisKK2NvbnN0IGNoYXIgKm1wZF9yb3VuZF9zdHJpbmdbTVBEX1JPVU5EX0dVQVJEXSA9IHsKKyAgICAiUk9VTkRfVVAiLCAgICAgICAgICAvKiByb3VuZCBhd2F5IGZyb20gMCAgICAgICAgICAgICAgICovCisgICAgIlJPVU5EX0RPV04iLCAgICAgICAgLyogcm91bmQgdG93YXJkIDAgKHRydW5jYXRlKSAgICAgICAqLworICAgICJST1VORF9DRUlMSU5HIiwgICAgIC8qIHJvdW5kIHRvd2FyZCAraW5maW5pdHkgICAgICAgICAgKi8KKyAgICAiUk9VTkRfRkxPT1IiLCAgICAgICAvKiByb3VuZCB0b3dhcmQgLWluZmluaXR5ICAgICAgICAgICovCisgICAgIlJPVU5EX0hBTEZfVVAiLCAgICAgLyogMC41IGlzIHJvdW5kZWQgdXAgICAgICAgICAgICAgICAqLworICAgICJST1VORF9IQUxGX0RPV04iLCAgIC8qIDAuNSBpcyByb3VuZGVkIGRvd24gICAgICAgICAgICAgKi8KKyAgICAiUk9VTkRfSEFMRl9FVkVOIiwgICAvKiAwLjUgaXMgcm91bmRlZCB0byBldmVuICAgICAgICAgICovCisgICAgIlJPVU5EXzA1VVAiLCAgICAgICAgLyogcm91bmQgemVybyBvciBmaXZlIGF3YXkgZnJvbSAwICAqLworICAgICJST1VORF9UUlVOQyIsICAgICAgIC8qIHRydW5jYXRlLCBidXQgc2V0IGluZmluaXR5ICAgICAgKi8KK307CisKK2NvbnN0IGNoYXIgKm1wZF9jbGFtcF9zdHJpbmdbTVBEX0NMQU1QX0dVQVJEXSA9IHsKKyAgICAiQ0xBTVBfREVGQVVMVCIsCisgICAgIkNMQU1QX0lFRUVfNzU0IgorfTsKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NvbnN0YW50cy5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb25zdGFudHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2RmOTIwCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb25zdGFudHMuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIENPTlNUQU5UU19ICisjZGVmaW5lIENPTlNUQU5UU19ICisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorCisKKy8qIEludGVybmFsIGhlYWRlciBmaWxlOiBhbGwgc3ltYm9scyBoYXZlIGxvY2FsIHNjb3BlIGluIHRoZSBEU08gKi8KK01QRF9QUkFHTUEoTVBEX0hJREVfU1lNQk9MU19TVEFSVCkKKworCisvKiBjaG9pY2Ugb2Ygb3B0aW1pemVkIGZ1bmN0aW9ucyAqLworI2lmIGRlZmluZWQoQ09ORklHXzY0KQorLyogeDY0ICovCisgICNkZWZpbmUgTVVMTU9EKGEsIGIpIHg2NF9tdWxtb2QoYSwgYiwgdW1vZCkKKyAgI2RlZmluZSBNVUxNT0QyQyhhMCwgYTEsIHcpIHg2NF9tdWxtb2QyYyhhMCwgYTEsIHcsIHVtb2QpCisgICNkZWZpbmUgTVVMTU9EMihhMCwgYjAsIGExLCBiMSkgeDY0X211bG1vZDIoYTAsIGIwLCBhMSwgYjEsIHVtb2QpCisgICNkZWZpbmUgUE9XTU9EKGJhc2UsIGV4cCkgeDY0X3Bvd21vZChiYXNlLCBleHAsIHVtb2QpCisgICNkZWZpbmUgU0VUTU9EVUxVUyhtb2RudW0pIHN0ZF9zZXRtb2R1bHVzKG1vZG51bSwgJnVtb2QpCisgICNkZWZpbmUgU0laRTNfTlRUKHgwLCB4MSwgeDIsIHczdGFibGUpIHN0ZF9zaXplM19udHQoeDAsIHgxLCB4MiwgdzN0YWJsZSwgdW1vZCkKKyNlbGlmIGRlZmluZWQoUFBSTykKKy8qIFBlbnRpdW1Qcm8gKG9yIGxhdGVyKSBnY2MgaW5saW5lIGFzbSAqLworICAjZGVmaW5lIE1VTE1PRChhLCBiKSBwcHJvX211bG1vZChhLCBiLCAmZG1vZCwgZGludm1vZCkKKyAgI2RlZmluZSBNVUxNT0QyQyhhMCwgYTEsIHcpIHBwcm9fbXVsbW9kMmMoYTAsIGExLCB3LCAmZG1vZCwgZGludm1vZCkKKyAgI2RlZmluZSBNVUxNT0QyKGEwLCBiMCwgYTEsIGIxKSBwcHJvX211bG1vZDIoYTAsIGIwLCBhMSwgYjEsICZkbW9kLCBkaW52bW9kKQorICAjZGVmaW5lIFBPV01PRChiYXNlLCBleHApIHBwcm9fcG93bW9kKGJhc2UsIGV4cCwgJmRtb2QsIGRpbnZtb2QpCisgICNkZWZpbmUgU0VUTU9EVUxVUyhtb2RudW0pIHBwcm9fc2V0bW9kdWx1cyhtb2RudW0sICZ1bW9kLCAmZG1vZCwgZGludm1vZCkKKyAgI2RlZmluZSBTSVpFM19OVFQoeDAsIHgxLCB4MiwgdzN0YWJsZSkgcHByb19zaXplM19udHQoeDAsIHgxLCB4MiwgdzN0YWJsZSwgdW1vZCwgJmRtb2QsIGRpbnZtb2QpCisjZWxzZQorICAvKiBBTlNJIEM5OSAqLworICAjZGVmaW5lIE1VTE1PRChhLCBiKSBzdGRfbXVsbW9kKGEsIGIsIHVtb2QpCisgICNkZWZpbmUgTVVMTU9EMkMoYTAsIGExLCB3KSBzdGRfbXVsbW9kMmMoYTAsIGExLCB3LCB1bW9kKQorICAjZGVmaW5lIE1VTE1PRDIoYTAsIGIwLCBhMSwgYjEpIHN0ZF9tdWxtb2QyKGEwLCBiMCwgYTEsIGIxLCB1bW9kKQorICAjZGVmaW5lIFBPV01PRChiYXNlLCBleHApIHN0ZF9wb3dtb2QoYmFzZSwgZXhwLCB1bW9kKQorICAjZGVmaW5lIFNFVE1PRFVMVVMobW9kbnVtKSBzdGRfc2V0bW9kdWx1cyhtb2RudW0sICZ1bW9kKQorICAjZGVmaW5lIFNJWkUzX05UVCh4MCwgeDEsIHgyLCB3M3RhYmxlKSBzdGRfc2l6ZTNfbnR0KHgwLCB4MSwgeDIsIHczdGFibGUsIHVtb2QpCisjZW5kaWYKKworLyogUGVudGl1bVBybyAob3IgbGF0ZXIpIGdjYyBpbmxpbmUgYXNtICovCitleHRlcm4gY29uc3QgZmxvYXQgTVBEX1RXTzYzOworZXh0ZXJuIGNvbnN0IHVpbnQzMl90IG1wZF9pbnZtb2R1bGlbM11bM107CisKK2VudW0ge1AxLCBQMiwgUDN9OworCitleHRlcm4gY29uc3QgbXBkX3VpbnRfdCBtcGRfbW9kdWxpW107CitleHRlcm4gY29uc3QgbXBkX3VpbnRfdCBtcGRfcm9vdHNbXTsKK2V4dGVybiBjb25zdCBtcGRfc2l6ZV90IG1wZF9iaXRzW107CitleHRlcm4gY29uc3QgbXBkX3VpbnRfdCBtcGRfcG93MTBbXTsKKworZXh0ZXJuIGNvbnN0IG1wZF91aW50X3QgSU5WX1AxX01PRF9QMjsKK2V4dGVybiBjb25zdCBtcGRfdWludF90IElOVl9QMVAyX01PRF9QMzsKK2V4dGVybiBjb25zdCBtcGRfdWludF90IExIX1AxUDI7CitleHRlcm4gY29uc3QgbXBkX3VpbnRfdCBVSF9QMVAyOworCisKK01QRF9QUkFHTUEoTVBEX0hJREVfU1lNQk9MU19FTkQpIC8qIHJlc3RvcmUgcHJldmlvdXMgc2NvcGUgcnVsZXMgKi8KKworCisjZW5kaWYgLyogQ09OU1RBTlRTX0ggKi8KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29udGV4dC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb250ZXh0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU5Zjg4YwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29udGV4dC5jCkBAIC0wLDAgKzEsMjg2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKworCit2b2lkCittcGRfZGZsdF90cmFwaGFuZGxlcihtcGRfY29udGV4dF90ICpjdHggVU5VU0VEKQoreworICAgIHJhaXNlKFNJR0ZQRSk7Cit9CisKK3ZvaWQgKCogbXBkX3RyYXBoYW5kbGVyKShtcGRfY29udGV4dF90ICopID0gbXBkX2RmbHRfdHJhcGhhbmRsZXI7CisKKworLyogU2V0IGd1YXJhbnRlZWQgbWluaW11bSBudW1iZXIgb2YgY29lZmZpY2llbnQgd29yZHMuIFRoZSBmdW5jdGlvbiBtYXkKKyAgIGJlIHVzZWQgb25jZSBhdCBwcm9ncmFtIHN0YXJ0LiBTZXR0aW5nIE1QRF9NSU5BTExPQyB0byBvdXQtb2YtYm91bmRzCisgICB2YWx1ZXMgaXMgYSBjYXRhc3Ryb3BoaWMgZXJyb3IsIHNvIGluIHRoYXQgY2FzZSB0aGUgZnVuY3Rpb24gZXhpdHMgcmF0aGVyCisgICB0aGFuIHJlbHlpbmcgb24gdGhlIHVzZXIgdG8gY2hlY2sgYSByZXR1cm4gdmFsdWUuICovCit2b2lkCittcGRfc2V0bWluYWxsb2MobXBkX3NzaXplX3QgbikKK3sKKyAgICBzdGF0aWMgaW50IG1pbmFsbG9jX2lzX3NldCA9IDA7CisKKyAgICBpZiAobWluYWxsb2NfaXNfc2V0KSB7CisgICAgICAgIG1wZF9lcnJfd2FybigibXBkX3NldG1pbmFsbG9jOiBpZ25vcmluZyByZXF1ZXN0IHRvIHNldCAiCisgICAgICAgICAgICAgICAgICAgICAiTVBEX01JTkFMTE9DIGEgc2Vjb25kIHRpbWVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChuIDwgTVBEX01JTkFMTE9DX01JTiB8fCBuID4gTVBEX01JTkFMTE9DX01BWCkgeworICAgICAgICBtcGRfZXJyX2ZhdGFsKCJpbGxlZ2FsIHZhbHVlIGZvciBNUERfTUlOQUxMT0MiKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKyAgICBNUERfTUlOQUxMT0MgPSBuOworICAgIG1pbmFsbG9jX2lzX3NldCA9IDE7Cit9CisKK3ZvaWQKK21wZF9pbml0KG1wZF9jb250ZXh0X3QgKmN0eCwgbXBkX3NzaXplX3QgcHJlYykKK3sKKyAgICBtcGRfc3NpemVfdCBpZGVhbF9taW5hbGxvYzsKKworICAgIG1wZF9kZWZhdWx0Y29udGV4dChjdHgpOworCisgICAgaWYgKCFtcGRfcXNldHByZWMoY3R4LCBwcmVjKSkgeworICAgICAgICBtcGRfYWRkc3RhdHVzX3JhaXNlKGN0eCwgTVBEX0ludmFsaWRfY29udGV4dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZGVhbF9taW5hbGxvYyA9IDIgKiAoKHByZWMrTVBEX1JESUdJVFMtMSkgLyBNUERfUkRJR0lUUyk7CisgICAgaWYgKGlkZWFsX21pbmFsbG9jIDwgTVBEX01JTkFMTE9DX01JTikgaWRlYWxfbWluYWxsb2MgPSBNUERfTUlOQUxMT0NfTUlOOworICAgIGlmIChpZGVhbF9taW5hbGxvYyA+IE1QRF9NSU5BTExPQ19NQVgpIGlkZWFsX21pbmFsbG9jID0gTVBEX01JTkFMTE9DX01BWDsKKworICAgIG1wZF9zZXRtaW5hbGxvYyhpZGVhbF9taW5hbGxvYyk7Cit9CisKK3ZvaWQKK21wZF9tYXhjb250ZXh0KG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICBjdHgtPnByZWM9TVBEX01BWF9QUkVDOworICAgIGN0eC0+ZW1heD1NUERfTUFYX0VNQVg7CisgICAgY3R4LT5lbWluPU1QRF9NSU5fRU1JTjsKKyAgICBjdHgtPnJvdW5kPU1QRF9ST1VORF9IQUxGX0VWRU47CisgICAgY3R4LT50cmFwcz1NUERfVHJhcHM7CisgICAgY3R4LT5zdGF0dXM9MDsKKyAgICBjdHgtPm5ld3RyYXA9MDsKKyAgICBjdHgtPmNsYW1wPTA7CisgICAgY3R4LT5hbGxjcj0xOworfQorCit2b2lkCittcGRfZGVmYXVsdGNvbnRleHQobXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIGN0eC0+cHJlYz0yKk1QRF9SRElHSVRTOworICAgIGN0eC0+ZW1heD1NUERfTUFYX0VNQVg7CisgICAgY3R4LT5lbWluPU1QRF9NSU5fRU1JTjsKKyAgICBjdHgtPnJvdW5kPU1QRF9ST1VORF9IQUxGX1VQOworICAgIGN0eC0+dHJhcHM9TVBEX1RyYXBzOworICAgIGN0eC0+c3RhdHVzPTA7CisgICAgY3R4LT5uZXd0cmFwPTA7CisgICAgY3R4LT5jbGFtcD0wOworICAgIGN0eC0+YWxsY3I9MTsKK30KKwordm9pZAorbXBkX2Jhc2ljY29udGV4dChtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgY3R4LT5wcmVjPTk7CisgICAgY3R4LT5lbWF4PU1QRF9NQVhfRU1BWDsKKyAgICBjdHgtPmVtaW49TVBEX01JTl9FTUlOOworICAgIGN0eC0+cm91bmQ9TVBEX1JPVU5EX0hBTEZfVVA7CisgICAgY3R4LT50cmFwcz1NUERfVHJhcHN8TVBEX0NsYW1wZWQ7CisgICAgY3R4LT5zdGF0dXM9MDsKKyAgICBjdHgtPm5ld3RyYXA9MDsKKyAgICBjdHgtPmNsYW1wPTA7CisgICAgY3R4LT5hbGxjcj0xOworfQorCitpbnQKK21wZF9pZWVlX2NvbnRleHQobXBkX2NvbnRleHRfdCAqY3R4LCBpbnQgYml0cykKK3sKKyAgICBpZiAoYml0cyA8PSAwIHx8IGJpdHMgPiBNUERfSUVFRV9DT05URVhUX01BWF9CSVRTIHx8IGJpdHMgJSAzMikgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgY3R4LT5wcmVjID0gOSAqIChiaXRzLzMyKSAtIDI7CisgICAgY3R4LT5lbWF4ID0gMyAqICgobXBkX3NzaXplX3QpMTw8KGJpdHMvMTYrMykpOworICAgIGN0eC0+ZW1pbiA9IDEgLSBjdHgtPmVtYXg7CisgICAgY3R4LT5yb3VuZD1NUERfUk9VTkRfSEFMRl9FVkVOOworICAgIGN0eC0+dHJhcHM9MDsKKyAgICBjdHgtPnN0YXR1cz0wOworICAgIGN0eC0+bmV3dHJhcD0wOworICAgIGN0eC0+Y2xhbXA9MTsKKyAgICBjdHgtPmFsbGNyPTE7CisKKyAgICByZXR1cm4gMDsKK30KKworbXBkX3NzaXplX3QKK21wZF9nZXRwcmVjKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICByZXR1cm4gY3R4LT5wcmVjOworfQorCittcGRfc3NpemVfdAorbXBkX2dldGVtYXgoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHJldHVybiBjdHgtPmVtYXg7Cit9CisKK21wZF9zc2l6ZV90CittcGRfZ2V0ZW1pbihjb25zdCBtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgcmV0dXJuIGN0eC0+ZW1pbjsKK30KKworaW50CittcGRfZ2V0cm91bmQoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHJldHVybiBjdHgtPnJvdW5kOworfQorCit1aW50MzJfdAorbXBkX2dldHRyYXBzKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICByZXR1cm4gY3R4LT50cmFwczsKK30KKwordWludDMyX3QKK21wZF9nZXRzdGF0dXMoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHJldHVybiBjdHgtPnN0YXR1czsKK30KKworaW50CittcGRfZ2V0Y2xhbXAoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHJldHVybiBjdHgtPmNsYW1wOworfQorCitpbnQKK21wZF9nZXRjcihjb25zdCBtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgcmV0dXJuIGN0eC0+YWxsY3I7Cit9CisKKworaW50CittcGRfcXNldHByZWMobXBkX2NvbnRleHRfdCAqY3R4LCBtcGRfc3NpemVfdCBwcmVjKQoreworICAgIGlmIChwcmVjIDw9IDAgfHwgcHJlYyA+IE1QRF9NQVhfUFJFQykgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgY3R4LT5wcmVjID0gcHJlYzsKKyAgICByZXR1cm4gMTsKK30KKworaW50CittcGRfcXNldGVtYXgobXBkX2NvbnRleHRfdCAqY3R4LCBtcGRfc3NpemVfdCBlbWF4KQoreworICAgIGlmIChlbWF4IDwgMCB8fCBlbWF4ID4gTVBEX01BWF9FTUFYKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBjdHgtPmVtYXggPSBlbWF4OworICAgIHJldHVybiAxOworfQorCitpbnQKK21wZF9xc2V0ZW1pbihtcGRfY29udGV4dF90ICpjdHgsIG1wZF9zc2l6ZV90IGVtaW4pCit7CisgICAgaWYgKGVtaW4gPiAwIHx8IGVtaW4gPCBNUERfTUlOX0VNSU4pIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGN0eC0+ZW1pbiA9IGVtaW47CisgICAgcmV0dXJuIDE7Cit9CisKK2ludAorbXBkX3FzZXRyb3VuZChtcGRfY29udGV4dF90ICpjdHgsIGludCByb3VuZCkKK3sKKyAgICBpZiAoISgwIDw9IHJvdW5kICYmIHJvdW5kIDwgTVBEX1JPVU5EX0dVQVJEKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgY3R4LT5yb3VuZCA9IHJvdW5kOworICAgIHJldHVybiAxOworfQorCitpbnQKK21wZF9xc2V0dHJhcHMobXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCB0cmFwcykKK3sKKyAgICBpZiAodHJhcHMgPiBNUERfTWF4X3N0YXR1cykgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgY3R4LT50cmFwcyA9IHRyYXBzOworICAgIHJldHVybiAxOworfQorCitpbnQKK21wZF9xc2V0c3RhdHVzKG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgZmxhZ3MpCit7CisgICAgaWYgKGZsYWdzID4gTVBEX01heF9zdGF0dXMpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGN0eC0+c3RhdHVzID0gZmxhZ3M7CisgICAgcmV0dXJuIDE7Cit9CisKK2ludAorbXBkX3FzZXRjbGFtcChtcGRfY29udGV4dF90ICpjdHgsIGludCBjKQoreworICAgIGlmIChjICE9IDAgJiYgYyAhPSAxKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBjdHgtPmNsYW1wID0gYzsKKyAgICByZXR1cm4gMTsKK30KKworaW50CittcGRfcXNldGNyKG1wZF9jb250ZXh0X3QgKmN0eCwgaW50IGMpCit7CisgICAgaWYgKGMgIT0gMCAmJiBjICE9IDEpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGN0eC0+YWxsY3IgPSBjOworICAgIHJldHVybiAxOworfQorCisKK3ZvaWQKK21wZF9hZGRzdGF0dXNfcmFpc2UobXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCBmbGFncykKK3sKKyAgICBjdHgtPnN0YXR1cyB8PSBmbGFnczsKKyAgICBpZiAoZmxhZ3MmY3R4LT50cmFwcykgeworICAgICAgICBjdHgtPm5ld3RyYXAgPSAoZmxhZ3MmY3R4LT50cmFwcyk7CisgICAgICAgIG1wZF90cmFwaGFuZGxlcihjdHgpOworICAgIH0KK30KKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NvbnZvbHV0ZS5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb252b2x1dGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWZlMTMxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb252b2x1dGUuYwpAQCAtMCwwICsxLDE3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSAiYml0cy5oIgorI2luY2x1ZGUgImNvbnN0YW50cy5oIgorI2luY2x1ZGUgImZudC5oIgorI2luY2x1ZGUgImZvdXJzdGVwLmgiCisjaW5jbHVkZSAibnVtYmVydGhlb3J5LmgiCisjaW5jbHVkZSAic2l4c3RlcC5oIgorI2luY2x1ZGUgInVtb2Rhcml0aC5oIgorI2luY2x1ZGUgImNvbnZvbHV0ZS5oIgorCisKKy8qIEJpZ251bTogRmFzdCBjb252b2x1dGlvbiB1c2luZyB0aGUgTnVtYmVyIFRoZW9yZXRpYyBUcmFuc2Zvcm0uIFVzZWQgZm9yCisgICB0aGUgbXVsdGlwbGljYXRpb24gb2YgdmVyeSBsYXJnZSBjb2VmZmljaWVudHMuICovCisKKworLyogQ29udm9sdXRlIHRoZSBkYXRhIGluIGMxIGFuZCBjMi4gUmVzdWx0IGlzIGluIGMxLiAqLworaW50CitmbnRfY29udm9sdXRlKG1wZF91aW50X3QgKmMxLCBtcGRfdWludF90ICpjMiwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKQoreworICAgIGludCAoKmZudCkobXBkX3VpbnRfdCAqLCBtcGRfc2l6ZV90LCBpbnQpOworICAgIGludCAoKmludl9mbnQpKG1wZF91aW50X3QgKiwgbXBkX3NpemVfdCwgaW50KTsKKyNpZmRlZiBQUFJPCisgICAgZG91YmxlIGRtb2Q7CisgICAgdWludDMyX3QgZGludm1vZFszXTsKKyNlbmRpZgorICAgIG1wZF91aW50X3Qgbl9pbnYsIHVtb2Q7CisgICAgbXBkX3NpemVfdCBpOworCisKKyAgICBTRVRNT0RVTFVTKG1vZG51bSk7CisgICAgbl9pbnYgPSBQT1dNT0QobiwgKHVtb2QtMikpOworCisgICAgaWYgKGlzcG93ZXIyKG4pKSB7CisgICAgICAgIGlmIChuID4gU0lYX1NURVBfVEhSRVNIT0xEKSB7CisgICAgICAgICAgICBmbnQgPSBzaXhfc3RlcF9mbnQ7CisgICAgICAgICAgICBpbnZfZm50ID0gaW52X3NpeF9zdGVwX2ZudDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZudCA9IHN0ZF9mbnQ7CisgICAgICAgICAgICBpbnZfZm50ID0gc3RkX2ludl9mbnQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZudCA9IGZvdXJfc3RlcF9mbnQ7CisgICAgICAgIGludl9mbnQgPSBpbnZfZm91cl9zdGVwX2ZudDsKKyAgICB9CisKKyAgICBpZiAoIWZudChjMSwgbiwgbW9kbnVtKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKCFmbnQoYzIsIG4sIG1vZG51bSkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBuLTE7IGkgKz0gMikgeworICAgICAgICBtcGRfdWludF90IHgwID0gYzFbaV07CisgICAgICAgIG1wZF91aW50X3QgeTAgPSBjMltpXTsKKyAgICAgICAgbXBkX3VpbnRfdCB4MSA9IGMxW2krMV07CisgICAgICAgIG1wZF91aW50X3QgeTEgPSBjMltpKzFdOworICAgICAgICBNVUxNT0QyKCZ4MCwgeTAsICZ4MSwgeTEpOworICAgICAgICBjMVtpXSA9IHgwOworICAgICAgICBjMVtpKzFdID0geDE7CisgICAgfQorCisgICAgaWYgKCFpbnZfZm50KGMxLCBuLCBtb2RudW0pKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbi0zOyBpICs9IDQpIHsKKyAgICAgICAgbXBkX3VpbnRfdCB4MCA9IGMxW2ldOworICAgICAgICBtcGRfdWludF90IHgxID0gYzFbaSsxXTsKKyAgICAgICAgbXBkX3VpbnRfdCB4MiA9IGMxW2krMl07CisgICAgICAgIG1wZF91aW50X3QgeDMgPSBjMVtpKzNdOworICAgICAgICBNVUxNT0QyQygmeDAsICZ4MSwgbl9pbnYpOworICAgICAgICBNVUxNT0QyQygmeDIsICZ4Mywgbl9pbnYpOworICAgICAgICBjMVtpXSA9IHgwOworICAgICAgICBjMVtpKzFdID0geDE7CisgICAgICAgIGMxW2krMl0gPSB4MjsKKyAgICAgICAgYzFbaSszXSA9IHgzOworICAgIH0KKworICAgIHJldHVybiAxOworfQorCisvKiBBdXRvY29udm9sdXRlIHRoZSBkYXRhIGluIGMxLiBSZXN1bHQgaXMgaW4gYzEuICovCitpbnQKK2ZudF9hdXRvY29udm9sdXRlKG1wZF91aW50X3QgKmMxLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pCit7CisgICAgaW50ICgqZm50KShtcGRfdWludF90ICosIG1wZF9zaXplX3QsIGludCk7CisgICAgaW50ICgqaW52X2ZudCkobXBkX3VpbnRfdCAqLCBtcGRfc2l6ZV90LCBpbnQpOworI2lmZGVmIFBQUk8KKyAgICBkb3VibGUgZG1vZDsKKyAgICB1aW50MzJfdCBkaW52bW9kWzNdOworI2VuZGlmCisgICAgbXBkX3VpbnRfdCBuX2ludiwgdW1vZDsKKyAgICBtcGRfc2l6ZV90IGk7CisKKworICAgIFNFVE1PRFVMVVMobW9kbnVtKTsKKyAgICBuX2ludiA9IFBPV01PRChuLCAodW1vZC0yKSk7CisKKyAgICBpZiAoaXNwb3dlcjIobikpIHsKKyAgICAgICAgaWYgKG4gPiBTSVhfU1RFUF9USFJFU0hPTEQpIHsKKyAgICAgICAgICAgIGZudCA9IHNpeF9zdGVwX2ZudDsKKyAgICAgICAgICAgIGludl9mbnQgPSBpbnZfc2l4X3N0ZXBfZm50OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZm50ID0gc3RkX2ZudDsKKyAgICAgICAgICAgIGludl9mbnQgPSBzdGRfaW52X2ZudDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZm50ID0gZm91cl9zdGVwX2ZudDsKKyAgICAgICAgaW52X2ZudCA9IGludl9mb3VyX3N0ZXBfZm50OworICAgIH0KKworICAgIGlmICghZm50KGMxLCBuLCBtb2RudW0pKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbi0xOyBpICs9IDIpIHsKKyAgICAgICAgbXBkX3VpbnRfdCB4MCA9IGMxW2ldOworICAgICAgICBtcGRfdWludF90IHgxID0gYzFbaSsxXTsKKyAgICAgICAgTVVMTU9EMigmeDAsIHgwLCAmeDEsIHgxKTsKKyAgICAgICAgYzFbaV0gPSB4MDsKKyAgICAgICAgYzFbaSsxXSA9IHgxOworICAgIH0KKworICAgIGlmICghaW52X2ZudChjMSwgbiwgbW9kbnVtKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IG4tMzsgaSArPSA0KSB7CisgICAgICAgIG1wZF91aW50X3QgeDAgPSBjMVtpXTsKKyAgICAgICAgbXBkX3VpbnRfdCB4MSA9IGMxW2krMV07CisgICAgICAgIG1wZF91aW50X3QgeDIgPSBjMVtpKzJdOworICAgICAgICBtcGRfdWludF90IHgzID0gYzFbaSszXTsKKyAgICAgICAgTVVMTU9EMkMoJngwLCAmeDEsIG5faW52KTsKKyAgICAgICAgTVVMTU9EMkMoJngyLCAmeDMsIG5faW52KTsKKyAgICAgICAgYzFbaV0gPSB4MDsKKyAgICAgICAgYzFbaSsxXSA9IHgxOworICAgICAgICBjMVtpKzJdID0geDI7CisgICAgICAgIGMxW2krM10gPSB4MzsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NvbnZvbHV0ZS5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb252b2x1dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzVlZDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb252b2x1dGUuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIENPTlZPTFVURV9ICisjZGVmaW5lIENPTlZPTFVURV9ICisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKworLyogSW50ZXJuYWwgaGVhZGVyIGZpbGU6IGFsbCBzeW1ib2xzIGhhdmUgbG9jYWwgc2NvcGUgaW4gdGhlIERTTyAqLworTVBEX1BSQUdNQShNUERfSElERV9TWU1CT0xTX1NUQVJUKQorCisKKyNkZWZpbmUgU0lYX1NURVBfVEhSRVNIT0xEIDQwOTYKKworaW50IGZudF9jb252b2x1dGUobXBkX3VpbnRfdCAqYzEsIG1wZF91aW50X3QgKmMyLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pOworaW50IGZudF9hdXRvY29udm9sdXRlKG1wZF91aW50X3QgKmMxLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pOworCisKK01QRF9QUkFHTUEoTVBEX0hJREVfU1lNQk9MU19FTkQpIC8qIHJlc3RvcmUgcHJldmlvdXMgc2NvcGUgcnVsZXMgKi8KKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY3J0LmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NydC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MWM0ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NydC5jCkBAIC0wLDAgKzEsMTc5IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlICJudW1iZXJ0aGVvcnkuaCIKKyNpbmNsdWRlICJ1bW9kYXJpdGguaCIKKyNpbmNsdWRlICJjcnQuaCIKKworCisvKiBCaWdudW06IENoaW5lc2UgUmVtYWluZGVyIFRoZW9yZW0sIGV4dGVuZHMgdGhlIG1heGltdW0gdHJhbnNmb3JtIGxlbmd0aC4gKi8KKworCisvKiBNdWx0aXBseSBQMVAyIGJ5IHYsIHN0b3JlIHJlc3VsdCBpbiB3LiAqLworc3RhdGljIGlubGluZSB2b2lkCitfY3J0X211bFAxUDJfMyhtcGRfdWludF90IHdbM10sIG1wZF91aW50X3QgdikKK3sKKyAgICBtcGRfdWludF90IGhpMSwgaGkyLCBsbzsKKworICAgIF9tcGRfbXVsX3dvcmRzKCZoaTEsICZsbywgTEhfUDFQMiwgdik7CisgICAgd1swXSA9IGxvOworCisgICAgX21wZF9tdWxfd29yZHMoJmhpMiwgJmxvLCBVSF9QMVAyLCB2KTsKKyAgICBsbyA9IGhpMSArIGxvOworICAgIGlmIChsbyA8IGhpMSkgaGkyKys7CisKKyAgICB3WzFdID0gbG87CisgICAgd1syXSA9IGhpMjsKK30KKworLyogQWRkIDMgd29yZHMgZnJvbSB2IHRvIHcuIFRoZSByZXN1bHQgaXMga25vd24gdG8gZml0IGluIHcuICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19jcnRfYWRkMyhtcGRfdWludF90IHdbM10sIG1wZF91aW50X3QgdlszXSkKK3sKKyAgICBtcGRfdWludF90IGNhcnJ5OworICAgIG1wZF91aW50X3QgczsKKworICAgIHMgPSB3WzBdICsgdlswXTsKKyAgICBjYXJyeSA9IChzIDwgd1swXSk7CisgICAgd1swXSA9IHM7CisKKyAgICBzID0gd1sxXSArICh2WzFdICsgY2FycnkpOworICAgIGNhcnJ5ID0gKHMgPCB3WzFdKTsKKyAgICB3WzFdID0gczsKKworICAgIHdbMl0gPSB3WzJdICsgKHZbMl0gKyBjYXJyeSk7Cit9CisKKy8qIERpdmlkZSAzIHdvcmRzIGluIHUgYnkgdiwgc3RvcmUgcmVzdWx0IGluIHcsIHJldHVybiByZW1haW5kZXIuICovCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QKK19jcnRfZGl2MyhtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfdWludF90IHYpCit7CisgICAgbXBkX3VpbnRfdCByMSA9IHVbMl07CisgICAgbXBkX3VpbnRfdCByMjsKKworICAgIGlmIChyMSA8IHYpIHsKKyAgICAgICAgd1syXSA9IDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBfbXBkX2Rpdl93b3JkKCZ3WzJdLCAmcjEsIHVbMl0sIHYpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorCisgICAgX21wZF9kaXZfd29yZHMoJndbMV0sICZyMiwgcjEsIHVbMV0sIHYpOworICAgIF9tcGRfZGl2X3dvcmRzKCZ3WzBdLCAmcjEsIHIyLCB1WzBdLCB2KTsKKworICAgIHJldHVybiByMTsKK30KKworCisvKgorICogQ2hpbmVzZSBSZW1haW5kZXIgVGhlb3JlbToKKyAqIEFsZ29yaXRobSBmcm9tIEpvZXJnIEFybmR0LCAiTWF0dGVycyBDb21wdXRhdGlvbmFsIiwKKyAqIENoYXB0ZXIgMzcuNC4xIFtodHRwOi8vd3d3Lmpqai5kZS9meHQvXQorICoKKyAqIFNlZSBhbHNvIEtudXRoLCBUQU9DUCwgVm9sdW1lIDIsIDQuMy4yLCBleGVyY2lzZSA3LgorICovCisKKy8qCisgKiBDUlQgd2l0aCBjYXJyeTogeDEsIHgyLCB4MyBjb250YWluIG51bWJlcnMgbW9kdWxvIHAxLCBwMiwgcDMuIEZvciBlYWNoCisgKiB0cmlwbGUgb2YgbWVtYmVycyBvZiB0aGUgYXJyYXlzLCBmaW5kIHRoZSB1bmlxdWUgeiBtb2R1bG8gcDEqcDIqcDMsIHdpdGgKKyAqIHptYXggPSBwMSpwMipwMyAtIDEuCisgKgorICogSW4gZWFjaCBpdGVyYXRpb24gb2YgdGhlIGxvb3AsIHNwbGl0IHogaW50byByZXN1bHRbaV0gPSB6ICUgTVBEX1JBRElYCisgKiBhbmQgY2FycnkgPSB6IC8gTVBEX1JBRElYLiBMZXQgTiBiZSB0aGUgc2l6ZSBvZiBjYXJyeVtdIGFuZCBjbWF4IHRoZQorICogbWF4aW11bSBjYXJyeS4KKyAqCisgKiBMaW1pdHMgZm9yIHRoZSAzMi1iaXQgYnVpbGQ6CisgKgorICogICBOICAgID0gMioqOTYKKyAqICAgY21heCA9IDc3MTE0MzU1OTEzMTIzODAyNzQKKyAqCisgKiBMaW1pdHMgZm9yIHRoZSA2NCBiaXQgYnVpbGQ6CisgKgorICogICBOICAgID0gMioqMTkyCisgKiAgIGNtYXggPSA2Mjc3MTAxMzUzOTM0NzUzODU5MDQxMjQ0MDEyMjAwNDYzNzE3MTAKKyAqCisgKiBUaGUgZm9sbG93aW5nIHN0YXRlbWVudHMgaG9sZCBmb3IgYm90aCB2ZXJzaW9uczoKKyAqCisgKiAgIDEpIGNtYXggKyB6bWF4IDwgTiwgc28gdGhlIGFkZGl0aW9uIGRvZXMgbm90IG92ZXJmbG93LgorICoKKyAqICAgMikgKGNtYXggKyB6bWF4KSAvIE1QRF9SQURJWCA9PSBjbWF4LgorICoKKyAqICAgMykgSWYgYyA8PSBjbWF4LCB0aGVuIGNfbmV4dCA9IChjICsgem1heCkgLyBNUERfUkFESVggPD0gY21heC4KKyAqLwordm9pZAorY3J0MyhtcGRfdWludF90ICp4MSwgbXBkX3VpbnRfdCAqeDIsIG1wZF91aW50X3QgKngzLCBtcGRfc2l6ZV90IHJzaXplKQoreworICAgIG1wZF91aW50X3QgcDEgPSBtcGRfbW9kdWxpW1AxXTsKKyAgICBtcGRfdWludF90IHVtb2Q7CisjaWZkZWYgUFBSTworICAgIGRvdWJsZSBkbW9kOworICAgIHVpbnQzMl90IGRpbnZtb2RbM107CisjZW5kaWYKKyAgICBtcGRfdWludF90IGExLCBhMiwgYTM7CisgICAgbXBkX3VpbnRfdCBzOworICAgIG1wZF91aW50X3QgelszXSwgdFszXTsKKyAgICBtcGRfdWludF90IGNhcnJ5WzNdID0gezAsMCwwfTsKKyAgICBtcGRfdWludF90IGhpLCBsbzsKKyAgICBtcGRfc2l6ZV90IGk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgcnNpemU7IGkrKykgeworCisgICAgICAgIGExID0geDFbaV07CisgICAgICAgIGEyID0geDJbaV07CisgICAgICAgIGEzID0geDNbaV07CisKKyAgICAgICAgU0VUTU9EVUxVUyhQMik7CisgICAgICAgIHMgPSBleHRfc3VibW9kKGEyLCBhMSwgdW1vZCk7CisgICAgICAgIHMgPSBNVUxNT0QocywgSU5WX1AxX01PRF9QMik7CisKKyAgICAgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIHMsIHAxKTsKKyAgICAgICAgbG8gPSBsbyArIGExOworICAgICAgICBpZiAobG8gPCBhMSkgaGkrKzsKKworICAgICAgICBTRVRNT0RVTFVTKFAzKTsKKyAgICAgICAgcyA9IGR3X3N1Ym1vZChhMywgaGksIGxvLCB1bW9kKTsKKyAgICAgICAgcyA9IE1VTE1PRChzLCBJTlZfUDFQMl9NT0RfUDMpOworCisgICAgICAgIHpbMF0gPSBsbzsKKyAgICAgICAgelsxXSA9IGhpOworICAgICAgICB6WzJdID0gMDsKKworICAgICAgICBfY3J0X211bFAxUDJfMyh0LCBzKTsKKyAgICAgICAgX2NydF9hZGQzKHosIHQpOworICAgICAgICBfY3J0X2FkZDMoY2FycnksIHopOworCisgICAgICAgIHgxW2ldID0gX2NydF9kaXYzKGNhcnJ5LCBjYXJyeSwgTVBEX1JBRElYKTsKKyAgICB9CisKKyAgICBhc3NlcnQoY2FycnlbMF0gPT0gMCAmJiBjYXJyeVsxXSA9PSAwICYmIGNhcnJ5WzJdID09IDApOworfQorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY3J0LmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MDkyMzIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NydC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgQ1JUX0gKKyNkZWZpbmUgQ1JUX0gKKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKworCisvKiBJbnRlcm5hbCBoZWFkZXIgZmlsZTogYWxsIHN5bWJvbHMgaGF2ZSBsb2NhbCBzY29wZSBpbiB0aGUgRFNPICovCitNUERfUFJBR01BKE1QRF9ISURFX1NZTUJPTFNfU1RBUlQpCisKKwordm9pZCBjcnQzKG1wZF91aW50X3QgKngxLCBtcGRfdWludF90ICp4MiwgbXBkX3VpbnRfdCAqeDMsIG1wZF9zaXplX3Qgbm1lbWIpOworCisKK01QRF9QUkFHTUEoTVBEX0hJREVfU1lNQk9MU19FTkQpIC8qIHJlc3RvcmUgcHJldmlvdXMgc2NvcGUgcnVsZXMgKi8KKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZGlmcmFkaXgyLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2RpZnJhZGl4Mi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlYmIwYjUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2RpZnJhZGl4Mi5jCkBAIC0wLDAgKzEsMTczIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlICJiaXRzLmgiCisjaW5jbHVkZSAibnVtYmVydGhlb3J5LmgiCisjaW5jbHVkZSAidW1vZGFyaXRoLmgiCisjaW5jbHVkZSAiZGlmcmFkaXgyLmgiCisKKworLyogQmlnbnVtOiBUaGUgYWN0dWFsIHRyYW5zZm9ybSByb3V0aW5lIChkZWNpbWF0aW9uIGluIGZyZXF1ZW5jeSkuICovCisKKworLyoKKyAqIEdlbmVyYXRlIGluZGV4IHBhaXJzICh4LCBiaXRyZXZlcnNlKHgpKSBhbmQgY2Fycnkgb3V0IHRoZSBwZXJtdXRhdGlvbi4KKyAqIG4gbXVzdCBiZSBhIHBvd2VyIG9mIHR3by4KKyAqIEFsZ29yaXRobSBkdWUgdG8gQnJlbnQvTGVobWFubiwgc2VlIEpvZXJnIEFybmR0LCAiTWF0dGVycyBDb21wdXRhdGlvbmFsIiwKKyAqIENoYXB0ZXIgMS4xNC40LiBbaHR0cDovL3d3dy5qamouZGUvZnh0L10KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitiaXRyZXZlcnNlX3Blcm11dGUobXBkX3VpbnRfdCBhW10sIG1wZF9zaXplX3QgbikKK3sKKyAgICBtcGRfc2l6ZV90IHggPSAwOworICAgIG1wZF9zaXplX3QgciA9IDA7CisgICAgbXBkX3VpbnRfdCB0OworCisgICAgZG8geyAvKiBJbnZhcmlhbnQ6IHIgPSBiaXRyZXZlcnNlKHgpICovCisgICAgICAgIGlmIChyID4geCkgeworICAgICAgICAgICAgdCA9IGFbeF07CisgICAgICAgICAgICBhW3hdID0gYVtyXTsKKyAgICAgICAgICAgIGFbcl0gPSB0OworICAgICAgICB9CisgICAgICAgIC8qIEZsaXAgdHJhaWxpbmcgY29uc2VjdXRpdmUgMSBiaXRzIGFuZCB0aGUgZmlyc3QgemVybyBiaXQKKyAgICAgICAgICogdGhhdCBhYnNvcmJzIGEgcG9zc2libGUgY2FycnkuICovCisgICAgICAgIHggKz0gMTsKKyAgICAgICAgLyogTWlycm9yIHRoZSBvcGVyYXRpb24gb24gcjogRmxpcCBuX3RyYWlsaW5nX3plcm9zKHgpKzEKKyAgICAgICAgICAgaGlnaCBiaXRzIG9mIHIuICovCisgICAgICAgIHIgXj0gKG4gLSAobiA+PiAobXBkX2JzZih4KSsxKSkpOworICAgICAgICAvKiBUaGUgbG9vcCBpbnZhcmlhbnQgaXMgcHJlc2VydmVkLiAqLworICAgIH0gd2hpbGUgKHggPCBuKTsKK30KKworCisvKiBGYXN0IE51bWJlciBUaGVvcmV0aWMgVHJhbnNmb3JtLCBkZWNpbWF0aW9uIGluIGZyZXF1ZW5jeS4gKi8KK3ZvaWQKK2ZudF9kaWYyKG1wZF91aW50X3QgYVtdLCBtcGRfc2l6ZV90IG4sIHN0cnVjdCBmbnRfcGFyYW1zICp0cGFyYW1zKQoreworICAgIG1wZF91aW50X3QgKnd0YWJsZSA9IHRwYXJhbXMtPnd0YWJsZTsKKyAgICBtcGRfdWludF90IHVtb2Q7CisjaWZkZWYgUFBSTworICAgIGRvdWJsZSBkbW9kOworICAgIHVpbnQzMl90IGRpbnZtb2RbM107CisjZW5kaWYKKyAgICBtcGRfdWludF90IHUwLCB1MSwgdjAsIHYxOworICAgIG1wZF91aW50X3QgdywgdzAsIHcxLCB3c3RlcDsKKyAgICBtcGRfc2l6ZV90IG0sIG1oYWxmOworICAgIG1wZF9zaXplX3QgaiwgcjsKKworCisgICAgYXNzZXJ0KGlzcG93ZXIyKG4pKTsKKyAgICBhc3NlcnQobiA+PSA0KTsKKworICAgIFNFVE1PRFVMVVModHBhcmFtcy0+bW9kbnVtKTsKKworICAgIC8qIG0gPT0gbiAqLworICAgIG1oYWxmID0gbiAvIDI7CisgICAgZm9yIChqID0gMDsgaiA8IG1oYWxmOyBqICs9IDIpIHsKKworICAgICAgICB3MCA9IHd0YWJsZVtqXTsKKyAgICAgICAgdzEgPSB3dGFibGVbaisxXTsKKworICAgICAgICB1MCA9IGFbal07CisgICAgICAgIHYwID0gYVtqK21oYWxmXTsKKworICAgICAgICB1MSA9IGFbaisxXTsKKyAgICAgICAgdjEgPSBhW2orMSttaGFsZl07CisKKyAgICAgICAgYVtqXSA9IGFkZG1vZCh1MCwgdjAsIHVtb2QpOworICAgICAgICB2MCA9IHN1Ym1vZCh1MCwgdjAsIHVtb2QpOworCisgICAgICAgIGFbaisxXSA9IGFkZG1vZCh1MSwgdjEsIHVtb2QpOworICAgICAgICB2MSA9IHN1Ym1vZCh1MSwgdjEsIHVtb2QpOworCisgICAgICAgIE1VTE1PRDIoJnYwLCB3MCwgJnYxLCB3MSk7CisKKyAgICAgICAgYVtqK21oYWxmXSA9IHYwOworICAgICAgICBhW2orMSttaGFsZl0gPSB2MTsKKworICAgIH0KKworICAgIHdzdGVwID0gMjsKKyAgICBmb3IgKG0gPSBuLzI7IG0gPj0gMjsgbT4+PTEsIHdzdGVwPDw9MSkgeworCisgICAgICAgIG1oYWxmID0gbSAvIDI7CisKKyAgICAgICAgLyogaiA9PSAwICovCisgICAgICAgIGZvciAociA9IDA7IHIgPCBuOyByICs9IDIqbSkgeworCisgICAgICAgICAgICB1MCA9IGFbcl07CisgICAgICAgICAgICB2MCA9IGFbcittaGFsZl07CisKKyAgICAgICAgICAgIHUxID0gYVttK3JdOworICAgICAgICAgICAgdjEgPSBhW20rcittaGFsZl07CisKKyAgICAgICAgICAgIGFbcl0gPSBhZGRtb2QodTAsIHYwLCB1bW9kKTsKKyAgICAgICAgICAgIHYwID0gc3VibW9kKHUwLCB2MCwgdW1vZCk7CisKKyAgICAgICAgICAgIGFbbStyXSA9IGFkZG1vZCh1MSwgdjEsIHVtb2QpOworICAgICAgICAgICAgdjEgPSBzdWJtb2QodTEsIHYxLCB1bW9kKTsKKworICAgICAgICAgICAgYVtyK21oYWxmXSA9IHYwOworICAgICAgICAgICAgYVttK3IrbWhhbGZdID0gdjE7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGogPSAxOyBqIDwgbWhhbGY7IGorKykgeworCisgICAgICAgICAgICB3ID0gd3RhYmxlW2oqd3N0ZXBdOworCisgICAgICAgICAgICBmb3IgKHIgPSAwOyByIDwgbjsgciArPSAyKm0pIHsKKworICAgICAgICAgICAgICAgIHUwID0gYVtyK2pdOworICAgICAgICAgICAgICAgIHYwID0gYVtyK2orbWhhbGZdOworCisgICAgICAgICAgICAgICAgdTEgPSBhW20rcitqXTsKKyAgICAgICAgICAgICAgICB2MSA9IGFbbStyK2orbWhhbGZdOworCisgICAgICAgICAgICAgICAgYVtyK2pdID0gYWRkbW9kKHUwLCB2MCwgdW1vZCk7CisgICAgICAgICAgICAgICAgdjAgPSBzdWJtb2QodTAsIHYwLCB1bW9kKTsKKworICAgICAgICAgICAgICAgIGFbbStyK2pdID0gYWRkbW9kKHUxLCB2MSwgdW1vZCk7CisgICAgICAgICAgICAgICAgdjEgPSBzdWJtb2QodTEsIHYxLCB1bW9kKTsKKworICAgICAgICAgICAgICAgIE1VTE1PRDJDKCZ2MCwgJnYxLCB3KTsKKworICAgICAgICAgICAgICAgIGFbcitqK21oYWxmXSA9IHYwOworICAgICAgICAgICAgICAgIGFbbStyK2orbWhhbGZdID0gdjE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfQorCisgICAgfQorCisgICAgYml0cmV2ZXJzZV9wZXJtdXRlKGEsIG4pOworfQorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZGlmcmFkaXgyLmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2RpZnJhZGl4Mi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYWE1OTgKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2RpZnJhZGl4Mi5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgRElGX1JBRElYMl9ICisjZGVmaW5lIERJRl9SQURJWDJfSAorCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgIm51bWJlcnRoZW9yeS5oIgorCisKKy8qIEludGVybmFsIGhlYWRlciBmaWxlOiBhbGwgc3ltYm9scyBoYXZlIGxvY2FsIHNjb3BlIGluIHRoZSBEU08gKi8KK01QRF9QUkFHTUEoTVBEX0hJREVfU1lNQk9MU19TVEFSVCkKKworCit2b2lkIGZudF9kaWYyKG1wZF91aW50X3QgYVtdLCBtcGRfc2l6ZV90IG4sIHN0cnVjdCBmbnRfcGFyYW1zICp0cGFyYW1zKTsKKworCitNUERfUFJBR01BKE1QRF9ISURFX1NZTUJPTFNfRU5EKSAvKiByZXN0b3JlIHByZXZpb3VzIHNjb3BlIHJ1bGVzICovCisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2ZudC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9mbnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzExNjUzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9mbnQuYwpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlICJiaXRzLmgiCisjaW5jbHVkZSAiZGlmcmFkaXgyLmgiCisjaW5jbHVkZSAibnVtYmVydGhlb3J5LmgiCisjaW5jbHVkZSAiZm50LmgiCisKKworLyogQmlnbnVtOiBGYXN0IHRyYW5zZm9ybSBmb3IgbWVkaXVtLXNpemVkIGNvZWZmaWNpZW50cy4gKi8KKworCisvKiBmb3J3YXJkIHRyYW5zZm9ybSwgc2lnbiA9IC0xICovCitpbnQKK3N0ZF9mbnQobXBkX3VpbnRfdCAqYSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKQoreworICAgIHN0cnVjdCBmbnRfcGFyYW1zICp0cGFyYW1zOworCisgICAgYXNzZXJ0KGlzcG93ZXIyKG4pKTsKKyAgICBhc3NlcnQobiA+PSA0KTsKKyAgICBhc3NlcnQobiA8PSAzKk1QRF9NQVhUUkFOU0ZPUk1fMk4pOworCisgICAgaWYgKCh0cGFyYW1zID0gX21wZF9pbml0X2ZudF9wYXJhbXMobiwgLTEsIG1vZG51bSkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGZudF9kaWYyKGEsIG4sIHRwYXJhbXMpOworCisgICAgbXBkX2ZyZWUodHBhcmFtcyk7CisgICAgcmV0dXJuIDE7Cit9CisKKy8qIHJldmVyc2UgdHJhbnNmb3JtLCBzaWduID0gMSAqLworaW50CitzdGRfaW52X2ZudChtcGRfdWludF90ICphLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pCit7CisgICAgc3RydWN0IGZudF9wYXJhbXMgKnRwYXJhbXM7CisKKyAgICBhc3NlcnQoaXNwb3dlcjIobikpOworICAgIGFzc2VydChuID49IDQpOworICAgIGFzc2VydChuIDw9IDMqTVBEX01BWFRSQU5TRk9STV8yTik7CisKKyAgICBpZiAoKHRwYXJhbXMgPSBfbXBkX2luaXRfZm50X3BhcmFtcyhuLCAxLCBtb2RudW0pKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBmbnRfZGlmMihhLCBuLCB0cGFyYW1zKTsKKworICAgIG1wZF9mcmVlKHRwYXJhbXMpOworICAgIHJldHVybiAxOworfQorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9mbnQuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZm50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYzMDJjYwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZm50LmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBGTlRfSAorI2RlZmluZSBGTlRfSAorCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorCisKKy8qIEludGVybmFsIGhlYWRlciBmaWxlOiBhbGwgc3ltYm9scyBoYXZlIGxvY2FsIHNjb3BlIGluIHRoZSBEU08gKi8KK01QRF9QUkFHTUEoTVBEX0hJREVfU1lNQk9MU19TVEFSVCkKKworCitpbnQgc3RkX2ZudChtcGRfdWludF90IGFbXSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKTsKK2ludCBzdGRfaW52X2ZudChtcGRfdWludF90IGFbXSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKTsKKworCitNUERfUFJBR01BKE1QRF9ISURFX1NZTUJPTFNfRU5EKSAvKiByZXN0b3JlIHByZXZpb3VzIHNjb3BlIHJ1bGVzICovCisKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZm91cnN0ZXAuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZm91cnN0ZXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTMyYzBkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9mb3Vyc3RlcC5jCkBAIC0wLDAgKzEsMjU3IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSAibnVtYmVydGhlb3J5LmgiCisjaW5jbHVkZSAic2l4c3RlcC5oIgorI2luY2x1ZGUgInRyYW5zcG9zZS5oIgorI2luY2x1ZGUgInVtb2Rhcml0aC5oIgorI2luY2x1ZGUgImZvdXJzdGVwLmgiCisKKworLyogQmlnbnVtOiBDYWNoZSBlZmZpY2llbnQgTWF0cml4IEZvdXJpZXIgVHJhbnNmb3JtIGZvciBhcnJheXMgb2YgdGhlCisgICBmb3JtIDMgKiAyKipuIChTZWUgbGl0ZXJhdHVyZS9tYXRyaXgtdHJhbnNmb3JtLnR4dCkuICovCisKKworI2lmbmRlZiBQUFJPCitzdGF0aWMgaW5saW5lIHZvaWQKK3N0ZF9zaXplM19udHQobXBkX3VpbnRfdCAqeDEsIG1wZF91aW50X3QgKngyLCBtcGRfdWludF90ICp4MywKKyAgICAgICAgICAgICAgbXBkX3VpbnRfdCB3M3RhYmxlWzNdLCBtcGRfdWludF90IHVtb2QpCit7CisgICAgbXBkX3VpbnRfdCByMSwgcjI7CisgICAgbXBkX3VpbnRfdCB3OworICAgIG1wZF91aW50X3QgcywgdG1wOworCisKKyAgICAvKiBrID0gMCAtPiB3ID0gMSAqLworICAgIHMgPSAqeDE7CisgICAgcyA9IGFkZG1vZChzLCAqeDIsIHVtb2QpOworICAgIHMgPSBhZGRtb2QocywgKngzLCB1bW9kKTsKKworICAgIHIxID0gczsKKworICAgIC8qIGsgPSAxICovCisgICAgcyA9ICp4MTsKKworICAgIHcgPSB3M3RhYmxlWzFdOworICAgIHRtcCA9IE1VTE1PRCgqeDIsIHcpOworICAgIHMgPSBhZGRtb2QocywgdG1wLCB1bW9kKTsKKworICAgIHcgPSB3M3RhYmxlWzJdOworICAgIHRtcCA9IE1VTE1PRCgqeDMsIHcpOworICAgIHMgPSBhZGRtb2QocywgdG1wLCB1bW9kKTsKKworICAgIHIyID0gczsKKworICAgIC8qIGsgPSAyICovCisgICAgcyA9ICp4MTsKKworICAgIHcgPSB3M3RhYmxlWzJdOworICAgIHRtcCA9IE1VTE1PRCgqeDIsIHcpOworICAgIHMgPSBhZGRtb2QocywgdG1wLCB1bW9kKTsKKworICAgIHcgPSB3M3RhYmxlWzFdOworICAgIHRtcCA9IE1VTE1PRCgqeDMsIHcpOworICAgIHMgPSBhZGRtb2QocywgdG1wLCB1bW9kKTsKKworICAgICp4MyA9IHM7CisgICAgKngyID0gcjI7CisgICAgKngxID0gcjE7Cit9CisjZWxzZSAvKiBQUFJPICovCitzdGF0aWMgaW5saW5lIHZvaWQKK3Bwcm9fc2l6ZTNfbnR0KG1wZF91aW50X3QgKngxLCBtcGRfdWludF90ICp4MiwgbXBkX3VpbnRfdCAqeDMsIG1wZF91aW50X3QgdzN0YWJsZVszXSwKKyAgICAgICAgICAgICAgIG1wZF91aW50X3QgdW1vZCwgZG91YmxlICpkbW9kLCB1aW50MzJfdCBkaW52bW9kWzNdKQoreworICAgIG1wZF91aW50X3QgcjEsIHIyOworICAgIG1wZF91aW50X3QgdzsKKyAgICBtcGRfdWludF90IHMsIHRtcDsKKworCisgICAgLyogayA9IDAgLT4gdyA9IDEgKi8KKyAgICBzID0gKngxOworICAgIHMgPSBhZGRtb2QocywgKngyLCB1bW9kKTsKKyAgICBzID0gYWRkbW9kKHMsICp4MywgdW1vZCk7CisKKyAgICByMSA9IHM7CisKKyAgICAvKiBrID0gMSAqLworICAgIHMgPSAqeDE7CisKKyAgICB3ID0gdzN0YWJsZVsxXTsKKyAgICB0bXAgPSBwcHJvX211bG1vZCgqeDIsIHcsIGRtb2QsIGRpbnZtb2QpOworICAgIHMgPSBhZGRtb2QocywgdG1wLCB1bW9kKTsKKworICAgIHcgPSB3M3RhYmxlWzJdOworICAgIHRtcCA9IHBwcm9fbXVsbW9kKCp4MywgdywgZG1vZCwgZGludm1vZCk7CisgICAgcyA9IGFkZG1vZChzLCB0bXAsIHVtb2QpOworCisgICAgcjIgPSBzOworCisgICAgLyogayA9IDIgKi8KKyAgICBzID0gKngxOworCisgICAgdyA9IHczdGFibGVbMl07CisgICAgdG1wID0gcHByb19tdWxtb2QoKngyLCB3LCBkbW9kLCBkaW52bW9kKTsKKyAgICBzID0gYWRkbW9kKHMsIHRtcCwgdW1vZCk7CisKKyAgICB3ID0gdzN0YWJsZVsxXTsKKyAgICB0bXAgPSBwcHJvX211bG1vZCgqeDMsIHcsIGRtb2QsIGRpbnZtb2QpOworICAgIHMgPSBhZGRtb2QocywgdG1wLCB1bW9kKTsKKworICAgICp4MyA9IHM7CisgICAgKngyID0gcjI7CisgICAgKngxID0gcjE7Cit9CisjZW5kaWYKKworCisvKiBmb3J3YXJkIHRyYW5zZm9ybSwgc2lnbiA9IC0xOyB0cmFuc2Zvcm0gbGVuZ3RoID0gMyAqIDIqKm4gKi8KK2ludAorZm91cl9zdGVwX2ZudChtcGRfdWludF90ICphLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pCit7CisgICAgbXBkX3NpemVfdCBSID0gMzsgLyogbnVtYmVyIG9mIHJvd3MgKi8KKyAgICBtcGRfc2l6ZV90IEMgPSBuIC8gMzsgLyogbnVtYmVyIG9mIGNvbHVtbnMgKi8KKyAgICBtcGRfdWludF90IHczdGFibGVbM107CisgICAgbXBkX3VpbnRfdCBrZXJuZWwsIHcwLCB3MSwgd3N0ZXA7CisgICAgbXBkX3VpbnRfdCAqcywgKnAwLCAqcDEsICpwMjsKKyAgICBtcGRfdWludF90IHVtb2Q7CisjaWZkZWYgUFBSTworICAgIGRvdWJsZSBkbW9kOworICAgIHVpbnQzMl90IGRpbnZtb2RbM107CisjZW5kaWYKKyAgICBtcGRfc2l6ZV90IGksIGs7CisKKworICAgIGFzc2VydChuID49IDQ4KTsKKyAgICBhc3NlcnQobiA8PSAzKk1QRF9NQVhUUkFOU0ZPUk1fMk4pOworCisKKyAgICAvKiBMZW5ndGggUiB0cmFuc2Zvcm0gb24gdGhlIGNvbHVtbnMuICovCisgICAgU0VUTU9EVUxVUyhtb2RudW0pOworICAgIF9tcGRfaW5pdF93M3RhYmxlKHczdGFibGUsIC0xLCBtb2RudW0pOworICAgIGZvciAocDA9YSwgcDE9cDArQywgcDI9cDArMipDOyBwMDxhK0M7IHAwKysscDErKyxwMisrKSB7CisKKyAgICAgICAgU0laRTNfTlRUKHAwLCBwMSwgcDIsIHczdGFibGUpOworICAgIH0KKworICAgIC8qIE11bHRpcGx5IGVhY2ggbWF0cml4IGVsZW1lbnQgKGFkZHJlc3NlZCBieSBpKkMraykgYnkgcioqKGkqaykuICovCisgICAga2VybmVsID0gX21wZF9nZXRrZXJuZWwobiwgLTEsIG1vZG51bSk7CisgICAgZm9yIChpID0gMTsgaSA8IFI7IGkrKykgeworICAgICAgICB3MCA9IDE7ICAgICAgICAgICAgICAgICAgLyogcioqKGkqMCk6IGluaXRpYWwgdmFsdWUgZm9yIGs9MCAqLworICAgICAgICB3MSA9IFBPV01PRChrZXJuZWwsIGkpOyAgLyogcioqKGkqMSk6IGluaXRpYWwgdmFsdWUgZm9yIGs9MSAqLworICAgICAgICB3c3RlcCA9IE1VTE1PRCh3MSwgdzEpOyAgLyogcioqKDIqaSkgKi8KKyAgICAgICAgZm9yIChrID0gMDsgayA8IEMtMTsgayArPSAyKSB7CisgICAgICAgICAgICBtcGRfdWludF90IHgwID0gYVtpKkMra107CisgICAgICAgICAgICBtcGRfdWludF90IHgxID0gYVtpKkMraysxXTsKKyAgICAgICAgICAgIE1VTE1PRDIoJngwLCB3MCwgJngxLCB3MSk7CisgICAgICAgICAgICBNVUxNT0QyQygmdzAsICZ3MSwgd3N0ZXApOyAgLyogcioqKGkqKGsrMikpID0gcioqKGkqaykgKiByKiooMippKSAqLworICAgICAgICAgICAgYVtpKkMra10gPSB4MDsKKyAgICAgICAgICAgIGFbaSpDK2srMV0gPSB4MTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIExlbmd0aCBDIHRyYW5zZm9ybSBvbiB0aGUgcm93cy4gKi8KKyAgICBmb3IgKHMgPSBhOyBzIDwgYStuOyBzICs9IEMpIHsKKyAgICAgICAgaWYgKCFzaXhfc3RlcF9mbnQocywgQywgbW9kbnVtKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyNpZiAwCisgICAgLyogQW4gdW5vcmRlcmVkIHRyYW5zZm9ybSBpcyBzdWZmaWNpZW50IGZvciBjb252b2x1dGlvbi4gKi8KKyAgICAvKiBUcmFuc3Bvc2UgdGhlIG1hdHJpeC4gKi8KKyAgICB0cmFuc3Bvc2VfM3hwb3cyKGEsIFIsIEMpOworI2VuZGlmCisKKyAgICByZXR1cm4gMTsKK30KKworLyogYmFja3dhcmQgdHJhbnNmb3JtLCBzaWduID0gMTsgdHJhbnNmb3JtIGxlbmd0aCA9IDMgKiAyKipuICovCitpbnQKK2ludl9mb3VyX3N0ZXBfZm50KG1wZF91aW50X3QgKmEsIG1wZF9zaXplX3QgbiwgaW50IG1vZG51bSkKK3sKKyAgICBtcGRfc2l6ZV90IFIgPSAzOyAvKiBudW1iZXIgb2Ygcm93cyAqLworICAgIG1wZF9zaXplX3QgQyA9IG4gLyAzOyAvKiBudW1iZXIgb2YgY29sdW1ucyAqLworICAgIG1wZF91aW50X3QgdzN0YWJsZVszXTsKKyAgICBtcGRfdWludF90IGtlcm5lbCwgdzAsIHcxLCB3c3RlcDsKKyAgICBtcGRfdWludF90ICpzLCAqcDAsICpwMSwgKnAyOworICAgIG1wZF91aW50X3QgdW1vZDsKKyNpZmRlZiBQUFJPCisgICAgZG91YmxlIGRtb2Q7CisgICAgdWludDMyX3QgZGludm1vZFszXTsKKyNlbmRpZgorICAgIG1wZF9zaXplX3QgaSwgazsKKworCisgICAgYXNzZXJ0KG4gPj0gNDgpOworICAgIGFzc2VydChuIDw9IDMqTVBEX01BWFRSQU5TRk9STV8yTik7CisKKworI2lmIDAKKyAgICAvKiBBbiB1bm9yZGVyZWQgdHJhbnNmb3JtIGlzIHN1ZmZpY2llbnQgZm9yIGNvbnZvbHV0aW9uLiAqLworICAgIC8qIFRyYW5zcG9zZSB0aGUgbWF0cml4LCBwcm9kdWNpbmcgYW4gUipDIG1hdHJpeC4gKi8KKyAgICB0cmFuc3Bvc2VfM3hwb3cyKGEsIEMsIFIpOworI2VuZGlmCisKKyAgICAvKiBMZW5ndGggQyB0cmFuc2Zvcm0gb24gdGhlIHJvd3MuICovCisgICAgZm9yIChzID0gYTsgcyA8IGErbjsgcyArPSBDKSB7CisgICAgICAgIGlmICghaW52X3NpeF9zdGVwX2ZudChzLCBDLCBtb2RudW0pKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIE11bHRpcGx5IGVhY2ggbWF0cml4IGVsZW1lbnQgKGFkZHJlc3NlZCBieSBpKkMraykgYnkgcioqKGkqaykuICovCisgICAgU0VUTU9EVUxVUyhtb2RudW0pOworICAgIGtlcm5lbCA9IF9tcGRfZ2V0a2VybmVsKG4sIDEsIG1vZG51bSk7CisgICAgZm9yIChpID0gMTsgaSA8IFI7IGkrKykgeworICAgICAgICB3MCA9IDE7CisgICAgICAgIHcxID0gUE9XTU9EKGtlcm5lbCwgaSk7CisgICAgICAgIHdzdGVwID0gTVVMTU9EKHcxLCB3MSk7CisgICAgICAgIGZvciAoayA9IDA7IGsgPCBDOyBrICs9IDIpIHsKKyAgICAgICAgICAgIG1wZF91aW50X3QgeDAgPSBhW2kqQytrXTsKKyAgICAgICAgICAgIG1wZF91aW50X3QgeDEgPSBhW2kqQytrKzFdOworICAgICAgICAgICAgTVVMTU9EMigmeDAsIHcwLCAmeDEsIHcxKTsKKyAgICAgICAgICAgIE1VTE1PRDJDKCZ3MCwgJncxLCB3c3RlcCk7CisgICAgICAgICAgICBhW2kqQytrXSA9IHgwOworICAgICAgICAgICAgYVtpKkMraysxXSA9IHgxOworICAgICAgICB9CisgICAgfQorCisgICAgLyogTGVuZ3RoIFIgdHJhbnNmb3JtIG9uIHRoZSBjb2x1bW5zLiAqLworICAgIF9tcGRfaW5pdF93M3RhYmxlKHczdGFibGUsIDEsIG1vZG51bSk7CisgICAgZm9yIChwMD1hLCBwMT1wMCtDLCBwMj1wMCsyKkM7IHAwPGErQzsgcDArKyxwMSsrLHAyKyspIHsKKworICAgICAgICBTSVpFM19OVFQocDAsIHAxLCBwMiwgdzN0YWJsZSk7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9mb3Vyc3RlcC5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9mb3Vyc3RlcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5M2YyN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2ZvdXJzdGVwLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBGT1VSX1NURVBfSAorI2RlZmluZSBGT1VSX1NURVBfSAorCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorCisKKy8qIEludGVybmFsIGhlYWRlciBmaWxlOiBhbGwgc3ltYm9scyBoYXZlIGxvY2FsIHNjb3BlIGluIHRoZSBEU08gKi8KK01QRF9QUkFHTUEoTVBEX0hJREVfU1lNQk9MU19TVEFSVCkKKworCitpbnQgZm91cl9zdGVwX2ZudChtcGRfdWludF90ICphLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pOworaW50IGludl9mb3VyX3N0ZXBfZm50KG1wZF91aW50X3QgKmEsIG1wZF9zaXplX3QgbiwgaW50IG1vZG51bSk7CisKKworTVBEX1BSQUdNQShNUERfSElERV9TWU1CT0xTX0VORCkgLyogcmVzdG9yZSBwcmV2aW91cyBzY29wZSBydWxlcyAqLworCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9pby5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9pby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NDcwY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2lvLmMKQEAgLTAsMCArMSwxNTc1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8bG9jYWxlLmg+CisjaW5jbHVkZSAiYml0cy5oIgorI2luY2x1ZGUgImNvbnN0YW50cy5oIgorI2luY2x1ZGUgIm1lbW9yeS5oIgorI2luY2x1ZGUgInR5cGVhcml0aC5oIgorI2luY2x1ZGUgImlvLmgiCisKKworLyogVGhpcyBmaWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyBmb3IgZGVjaW1hbCA8LT4gc3RyaW5nIGNvbnZlcnNpb25zLCBpbmNsdWRpbmcKKyAgIFBFUC0zMTAxIGZvcm1hdHRpbmcgZm9yIG51bWVyaWMgdHlwZXMuICovCisKKworLyoKKyAqIFdvcmsgYXJvdW5kIHRoZSBiZWhhdmlvciBvZiB0b2xvd2VyKCkgYW5kIHN0cmNhc2VjbXAoKSBpbiBjZXJ0YWluCisgKiBsb2NhbGVzLiBGb3IgZXhhbXBsZSwgaW4gdHJfVFIudXRmODoKKyAqCisgKiB0b2xvd2VyKCh1bnNpZ25lZCBjaGFyKSdJJykgPT0gJ0knCisgKgorICogdSBpcyB0aGUgZXhhY3QgdXBwZXJjYXNlIHZlcnNpb24gb2YgbDsgbiBpcyBzdHJsZW4obCkgb3Igc3RybGVuKGwpKzEKKyAqLworc3RhdGljIGlubGluZSBpbnQKK19tcGRfc3RybmVxKGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmwsIGNvbnN0IGNoYXIgKnUsIHNpemVfdCBuKQoreworICAgIHdoaWxlICgtLW4gIT0gU0laRV9NQVgpIHsKKyAgICAgICAgaWYgKCpzICE9ICpsICYmICpzICE9ICp1KSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBzKys7IHUrKzsgbCsrOworICAgIH0KKworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgbXBkX3NzaXplX3QKK3N0cnRvZXhwKGNvbnN0IGNoYXIgKnMpCit7CisgICAgY2hhciAqZW5kOworICAgIG1wZF9zc2l6ZV90IHJldHZhbDsKKworICAgIGVycm5vID0gMDsKKyAgICByZXR2YWwgPSBtcGRfc3RydG9zc2l6ZShzLCAmZW5kLCAxMCk7CisgICAgaWYgKGVycm5vID09IDAgJiYgISgqcyAhPSAnXDAnICYmICplbmQgPT0gJ1wwJykpCisgICAgICAgIGVycm5vID0gRUlOVkFMOworCisgICAgcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIFNjYW4gJ2xlbicgd29yZHMuIFRoZSBtb3N0IHNpZ25pZmljYW50IHdvcmQgY29udGFpbnMgJ3InIGRpZ2l0cywKKyAqIHRoZSByZW1haW5pbmcgd29yZHMgYXJlIGZ1bGwgd29yZHMuIFNraXAgZHBvaW50LiBUaGUgc3RyaW5nICdzJyBtdXN0CisgKiBjb25zaXN0IG9mIGRpZ2l0cyBhbmQgYW4gb3B0aW9uYWwgc2luZ2xlIGRlY2ltYWwgcG9pbnQgYXQgJ2Rwb2ludCcuCisgKi8KK3N0YXRpYyB2b2lkCitzdHJpbmdfdG9fY29lZmYobXBkX3VpbnRfdCAqZGF0YSwgY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqZHBvaW50LCBpbnQgciwKKyAgICAgICAgICAgICAgICBzaXplX3QgbGVuKQoreworICAgIGludCBqOworCisgICAgaWYgKHIgPiAwKSB7CisgICAgICAgIGRhdGFbLS1sZW5dID0gMDsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IHI7IGorKywgcysrKSB7CisgICAgICAgICAgICBpZiAocyA9PSBkcG9pbnQpIHMrKzsKKyAgICAgICAgICAgIGRhdGFbbGVuXSA9IDEwICogZGF0YVtsZW5dICsgKCpzIC0gJzAnKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHdoaWxlICgtLWxlbiAhPSBTSVpFX01BWCkgeworICAgICAgICBkYXRhW2xlbl0gPSAwOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgTVBEX1JESUdJVFM7IGorKywgcysrKSB7CisgICAgICAgICAgICBpZiAocyA9PSBkcG9pbnQpIHMrKzsKKyAgICAgICAgICAgIGRhdGFbbGVuXSA9IDEwICogZGF0YVtsZW5dICsgKCpzIC0gJzAnKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLyoKKyAqIFBhcnRpYWxseSB2ZXJpZnkgYSBudW1lcmljIHN0cmluZyBvZiB0aGUgZm9ybToKKyAqCisgKiAgICAgW2NkaWdpdHNdWy5dW2NkaWdpdHNdW2VFXVsrLV1bZWRpZ2l0c10KKyAqCisgKiBJZiBzdWNjZXNzZnVsLCByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBsb2NhdGlvbiBvZiB0aGUgZmlyc3QKKyAqIHJlbGV2YW50IGNvZWZmaWNpZW50IGRpZ2l0LiBUaGlzIGRpZ2l0IGlzIGVpdGhlciBub24temVybyBvcgorICogcGFydCBvZiBvbmUgb2YgdGhlIGZvbGxvd2luZyBwYXR0ZXJuczoKKyAqCisgKiAgICAgWyIwXHgwMCIsICIwLlx4MDAiLCAiMC5FIiwgIjAuZSIsICIwRSIsICIwZSJdCisgKgorICogVGhlIGxvY2F0aW9ucyBvZiBhIHNpbmdsZSBvcHRpb25hbCBkb3Qgb3IgaW5kaWNhdG9yIGFyZSBzdG9yZWQKKyAqIGluICdkcG9pbnQnIGFuZCAnZXhwJy4KKyAqCisgKiBUaGUgZW5kIG9mIHRoZSBzdHJpbmcgaXMgc3RvcmVkIGluICdlbmQnLiBJZiBhbiBpbmRpY2F0b3IgW2VFXQorICogb2NjdXJzIHdpdGhvdXQgdHJhaWxpbmcgW2VkaWdpdHNdLCB0aGUgY29uZGl0aW9uIGlzIGNhdWdodAorICogbGF0ZXIgYnkgc3RydG9leHAoKS4KKyAqLworc3RhdGljIGNvbnN0IGNoYXIgKgorc2Nhbl9kcG9pbnRfZXhwKGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKipkcG9pbnQsIGNvbnN0IGNoYXIgKipleHAsCisgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmVuZCkKK3sKKyAgICBjb25zdCBjaGFyICpjb2VmZiA9IE5VTEw7CisKKyAgICAqZHBvaW50ID0gTlVMTDsKKyAgICAqZXhwID0gTlVMTDsKKyAgICBmb3IgKDsgKnMgIT0gJ1wwJzsgcysrKSB7CisgICAgICAgIHN3aXRjaCAoKnMpIHsKKyAgICAgICAgY2FzZSAnLic6CisgICAgICAgICAgICBpZiAoKmRwb2ludCAhPSBOVUxMIHx8ICpleHAgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICpkcG9pbnQgPSBzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ0UnOiBjYXNlICdlJzoKKyAgICAgICAgICAgIGlmICgqZXhwICE9IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAqZXhwID0gczsKKyAgICAgICAgICAgIGlmICgqKHMrMSkgPT0gJysnIHx8ICoocysxKSA9PSAnLScpCisgICAgICAgICAgICAgICAgcysrOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoIWlzZGlnaXQoKHVjaGFyKSpzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGlmIChjb2VmZiA9PSBOVUxMICYmICpleHAgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGlmICgqcyA9PSAnMCcpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc2RpZ2l0KCh1Y2hhcikqKHMrMSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoKihzKzEpID09ICcuJyAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNkaWdpdCgodWNoYXIpKihzKzIpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmYgPSBzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgY29lZmYgPSBzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIH0KKyAgICB9CisKKyAgICAqZW5kID0gczsKKyAgICByZXR1cm4gY29lZmY7Cit9CisKKy8qIHNjYW4gdGhlIHBheWxvYWQgb2YgYSBOYU4gKi8KK3N0YXRpYyBjb25zdCBjaGFyICoKK3NjYW5fcGF5bG9hZChjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICoqZW5kKQoreworICAgIGNvbnN0IGNoYXIgKmNvZWZmOworCisgICAgd2hpbGUgKCpzID09ICcwJykKKyAgICAgICAgcysrOworICAgIGNvZWZmID0gczsKKworICAgIHdoaWxlIChpc2RpZ2l0KCh1Y2hhcikqcykpCisgICAgICAgIHMrKzsKKyAgICAqZW5kID0gczsKKworICAgIHJldHVybiAoKnMgPT0gJ1wwJykgPyBjb2VmZiA6IE5VTEw7Cit9CisKKy8qIGNvbnZlcnQgYSBjaGFyYWN0ZXIgc3RyaW5nIHRvIGEgZGVjaW1hbCAqLwordm9pZAorbXBkX3FzZXRfc3RyaW5nKG1wZF90ICpkZWMsIGNvbnN0IGNoYXIgKnMsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zc2l6ZV90IHEsIHIsIGxlbjsKKyAgICBjb25zdCBjaGFyICpjb2VmZiwgKmVuZDsKKyAgICBjb25zdCBjaGFyICpkcG9pbnQgPSBOVUxMLCAqZXhwID0gTlVMTDsKKyAgICBzaXplX3QgZGlnaXRzOworICAgIHVpbnQ4X3Qgc2lnbiA9IE1QRF9QT1M7CisKKyAgICBtcGRfc2V0X2ZsYWdzKGRlYywgMCk7CisgICAgZGVjLT5sZW4gPSAwOworICAgIGRlYy0+ZXhwID0gMDsKKworICAgIC8qIHNpZ24gKi8KKyAgICBpZiAoKnMgPT0gJysnKSB7CisgICAgICAgIHMrKzsKKyAgICB9CisgICAgZWxzZSBpZiAoKnMgPT0gJy0nKSB7CisgICAgICAgIG1wZF9zZXRfbmVnYXRpdmUoZGVjKTsKKyAgICAgICAgc2lnbiA9IE1QRF9ORUc7CisgICAgICAgIHMrKzsKKyAgICB9CisKKyAgICBpZiAoX21wZF9zdHJuZXEocywgIm5hbiIsICJOQU4iLCAzKSkgeyAvKiBOYU4gKi8KKyAgICAgICAgcyArPSAzOworICAgICAgICBtcGRfc2V0c3BlY2lhbChkZWMsIHNpZ24sIE1QRF9OQU4pOworICAgICAgICBpZiAoKnMgPT0gJ1wwJykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLyogdmFsaWRhdGUgcGF5bG9hZDogZGlnaXRzIG9ubHkgKi8KKyAgICAgICAgaWYgKChjb2VmZiA9IHNjYW5fcGF5bG9hZChzLCAmZW5kKSkgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gY29udmVyc2lvbl9lcnJvcjsKKyAgICAgICAgLyogcGF5bG9hZCBjb25zaXN0cyBlbnRpcmVseSBvZiB6ZXJvcyAqLworICAgICAgICBpZiAoKmNvZWZmID09ICdcMCcpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRpZ2l0cyA9IGVuZCAtIGNvZWZmOworICAgICAgICAvKiBwcmVjID49IDEsIGNsYW1wIGlzIDAgb3IgMSAqLworICAgICAgICBpZiAoZGlnaXRzID4gKHNpemVfdCkoY3R4LT5wcmVjLWN0eC0+Y2xhbXApKQorICAgICAgICAgICAgZ290byBjb252ZXJzaW9uX2Vycm9yOworICAgIH0gLyogc05hTiAqLworICAgIGVsc2UgaWYgKF9tcGRfc3RybmVxKHMsICJzbmFuIiwgIlNOQU4iLCA0KSkgeworICAgICAgICBzICs9IDQ7CisgICAgICAgIG1wZF9zZXRzcGVjaWFsKGRlYywgc2lnbiwgTVBEX1NOQU4pOworICAgICAgICBpZiAoKnMgPT0gJ1wwJykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLyogdmFsaWRhdGUgcGF5bG9hZDogZGlnaXRzIG9ubHkgKi8KKyAgICAgICAgaWYgKChjb2VmZiA9IHNjYW5fcGF5bG9hZChzLCAmZW5kKSkgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gY29udmVyc2lvbl9lcnJvcjsKKyAgICAgICAgLyogcGF5bG9hZCBjb25zaXN0cyBlbnRpcmVseSBvZiB6ZXJvcyAqLworICAgICAgICBpZiAoKmNvZWZmID09ICdcMCcpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRpZ2l0cyA9IGVuZCAtIGNvZWZmOworICAgICAgICBpZiAoZGlnaXRzID4gKHNpemVfdCkoY3R4LT5wcmVjLWN0eC0+Y2xhbXApKQorICAgICAgICAgICAgZ290byBjb252ZXJzaW9uX2Vycm9yOworICAgIH0KKyAgICBlbHNlIGlmIChfbXBkX3N0cm5lcShzLCAiaW5mIiwgIklORiIsIDMpKSB7CisgICAgICAgIHMgKz0gMzsKKyAgICAgICAgaWYgKCpzID09ICdcMCcgfHwgX21wZF9zdHJuZXEocywgImluaXR5IiwgIklOSVRZIiwgNikpIHsKKyAgICAgICAgICAgIC8qIG51bWVyaWMtdmFsdWU6IGluZmluaXR5ICovCisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChkZWMsIHNpZ24sIE1QRF9JTkYpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGdvdG8gY29udmVyc2lvbl9lcnJvcjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIHNjYW4gZm9yIHN0YXJ0IG9mIGNvZWZmaWNpZW50LCBkZWNpbWFsIHBvaW50LCBpbmRpY2F0b3IsIGVuZCAqLworICAgICAgICBpZiAoKGNvZWZmID0gc2Nhbl9kcG9pbnRfZXhwKHMsICZkcG9pbnQsICZleHAsICZlbmQpKSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBjb252ZXJzaW9uX2Vycm9yOworCisgICAgICAgIC8qIG51bWVyaWMtdmFsdWU6IFtleHBvbmVudC1wYXJ0XSAqLworICAgICAgICBpZiAoZXhwKSB7CisgICAgICAgICAgICAvKiBleHBvbmVudC1wYXJ0ICovCisgICAgICAgICAgICBlbmQgPSBleHA7IGV4cCsrOworICAgICAgICAgICAgZGVjLT5leHAgPSBzdHJ0b2V4cChleHApOworICAgICAgICAgICAgaWYgKGVycm5vKSB7CisgICAgICAgICAgICAgICAgaWYgKCEoZXJybm8gPT0gRVJBTkdFICYmCisgICAgICAgICAgICAgICAgICAgICAoZGVjLT5leHAgPT0gTVBEX1NTSVpFX01BWCB8fAorICAgICAgICAgICAgICAgICAgICAgIGRlYy0+ZXhwID09IE1QRF9TU0laRV9NSU4pKSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBjb252ZXJzaW9uX2Vycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgICAgIGRpZ2l0cyA9IGVuZCAtIGNvZWZmOworICAgICAgICBpZiAoZHBvaW50KSB7CisgICAgICAgICAgICBzaXplX3QgZnJhY2RpZ2l0cyA9IGVuZC1kcG9pbnQtMTsKKyAgICAgICAgICAgIGlmIChkcG9pbnQgPiBjb2VmZikgZGlnaXRzLS07CisKKyAgICAgICAgICAgIGlmIChmcmFjZGlnaXRzID4gTVBEX01BWF9QUkVDKSB7CisgICAgICAgICAgICAgICAgZ290byBjb252ZXJzaW9uX2Vycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRlYy0+ZXhwIDwgTVBEX1NTSVpFX01JTisobXBkX3NzaXplX3QpZnJhY2RpZ2l0cykgeworICAgICAgICAgICAgICAgIGRlYy0+ZXhwID0gTVBEX1NTSVpFX01JTjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGRlYy0+ZXhwIC09IChtcGRfc3NpemVfdClmcmFjZGlnaXRzOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChkaWdpdHMgPiBNUERfTUFYX1BSRUMpIHsKKyAgICAgICAgICAgIGdvdG8gY29udmVyc2lvbl9lcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZGVjLT5leHAgPiBNUERfRVhQX0lORikgeworICAgICAgICAgICAgZGVjLT5leHAgPSBNUERfRVhQX0lORjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZGVjLT5leHAgPT0gTVBEX1NTSVpFX01JTikgeworICAgICAgICAgICAgZGVjLT5leHAgPSBNUERfU1NJWkVfTUlOKzE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfbXBkX2lkaXZfd29yZCgmcSwgJnIsIChtcGRfc3NpemVfdClkaWdpdHMsIE1QRF9SRElHSVRTKTsKKworICAgIGxlbiA9IChyID09IDApID8gcSA6IHErMTsKKyAgICBpZiAobGVuID09IDApIHsKKyAgICAgICAgZ290byBjb252ZXJzaW9uX2Vycm9yOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorICAgIGlmICghbXBkX3FyZXNpemUoZGVjLCBsZW4sIHN0YXR1cykpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKGRlYywgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBkZWMtPmxlbiA9IGxlbjsKKworICAgIHN0cmluZ190b19jb2VmZihkZWMtPmRhdGEsIGNvZWZmLCBkcG9pbnQsIChpbnQpciwgbGVuKTsKKworICAgIG1wZF9zZXRkaWdpdHMoZGVjKTsKKyAgICBtcGRfcWZpbmFsaXplKGRlYywgY3R4LCBzdGF0dXMpOworICAgIHJldHVybjsKKworY29udmVyc2lvbl9lcnJvcjoKKyAgICAvKiBzdGFuZGFyZCB3YW50cyBhIHBvc2l0aXZlIE5hTiAqLworICAgIG1wZF9zZXRlcnJvcihkZWMsIE1QRF9Db252ZXJzaW9uX3N5bnRheCwgc3RhdHVzKTsKK30KKworLyogUHJpbnQgd29yZCB4IHdpdGggbiBkZWNpbWFsIGRpZ2l0cyB0byBzdHJpbmcgcy4gZG90IGlzIGVpdGhlciBOVUxMCisgICBvciB0aGUgbG9jYXRpb24gb2YgYSBkZWNpbWFsIHBvaW50LiAqLworI2RlZmluZSBFWFRSQUNUX0RJR0lUKHMsIHgsIGQsIGRvdCkgXAorICAgICAgICBpZiAocyA9PSBkb3QpICpzKysgPSAnLic7ICpzKysgPSAnMCcgKyAoY2hhcikoeCAvIGQpOyB4ICU9IGQKK3N0YXRpYyBpbmxpbmUgY2hhciAqCit3b3JkX3RvX3N0cmluZyhjaGFyICpzLCBtcGRfdWludF90IHgsIGludCBuLCBjaGFyICpkb3QpCit7CisgICAgc3dpdGNoKG4pIHsKKyNpZmRlZiBDT05GSUdfNjQKKyAgICBjYXNlIDIwOiBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwMDAwMDAwMDAwMDAwMDAwVUxMLCBkb3QpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgY2FzZSAxOTogRVhUUkFDVF9ESUdJVChzLCB4LCAxMDAwMDAwMDAwMDAwMDAwMDAwVUxMLCBkb3QpOworICAgIGNhc2UgMTg6IEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMDAwMDAwMDAwMDAwVUxMLCBkb3QpOworICAgIGNhc2UgMTc6IEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMDAwMDAwMDAwMDBVTEwsIGRvdCk7CisgICAgY2FzZSAxNjogRVhUUkFDVF9ESUdJVChzLCB4LCAxMDAwMDAwMDAwMDAwMDAwVUxMLCBkb3QpOworICAgIGNhc2UgMTU6IEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMDAwMDAwMDAwVUxMLCBkb3QpOworICAgIGNhc2UgMTQ6IEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMDAwMDAwMDBVTEwsIGRvdCk7CisgICAgY2FzZSAxMzogRVhUUkFDVF9ESUdJVChzLCB4LCAxMDAwMDAwMDAwMDAwVUxMLCBkb3QpOworICAgIGNhc2UgMTI6IEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMDAwMDAwVUxMLCBkb3QpOworICAgIGNhc2UgMTE6IEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMDAwMDBVTEwsIGRvdCk7CisjZW5kaWYKKyAgICBjYXNlIDEwOiBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwMDAwMDBVTCwgZG90KTsKKyAgICBjYXNlIDk6ICBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwMDAwMFVMLCBkb3QpOworICAgIGNhc2UgODogIEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMDBVTCwgZG90KTsKKyAgICBjYXNlIDc6ICBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwMDBVTCwgZG90KTsKKyAgICBjYXNlIDY6ICBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwMFVMLCBkb3QpOworICAgIGNhc2UgNTogIEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDBVTCwgZG90KTsKKyAgICBjYXNlIDQ6ICBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDBVTCwgZG90KTsKKyAgICBjYXNlIDM6ICBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMFVMLCBkb3QpOworICAgIGNhc2UgMjogIEVYVFJBQ1RfRElHSVQocywgeCwgMTBVTCwgZG90KTsKKyAgICBkZWZhdWx0OiBpZiAocyA9PSBkb3QpICpzKysgPSAnLic7ICpzKysgPSAnMCcgKyAoY2hhcil4OworICAgIH0KKworICAgICpzID0gJ1wwJzsKKyAgICByZXR1cm4gczsKK30KKworLyogUHJpbnQgZXhwb25lbnQgeCB0byBzdHJpbmcgcy4gVW5kZWZpbmVkIGZvciBNUERfU1NJWkVfTUlOLiAqLworc3RhdGljIGlubGluZSBjaGFyICoKK2V4cF90b19zdHJpbmcoY2hhciAqcywgbXBkX3NzaXplX3QgeCkKK3sKKyAgICBjaGFyIHNpZ24gPSAnKyc7CisKKyAgICBpZiAoeCA8IDApIHsKKyAgICAgICAgc2lnbiA9ICctJzsKKyAgICAgICAgeCA9IC14OworICAgIH0KKyAgICAqcysrID0gc2lnbjsKKworICAgIHJldHVybiB3b3JkX3RvX3N0cmluZyhzLCB4LCBtcGRfd29yZF9kaWdpdHMoeCksIE5VTEwpOworfQorCisvKiBQcmludCB0aGUgY29lZmZpY2llbnQgb2YgZGVjIHRvIHN0cmluZyBzLiBsZW4oZGVjKSA+IDAuICovCitzdGF0aWMgaW5saW5lIGNoYXIgKgorY29lZmZfdG9fc3RyaW5nKGNoYXIgKnMsIGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgbXBkX3VpbnRfdCB4OworICAgIG1wZF9zc2l6ZV90IGk7CisKKyAgICAvKiBtb3N0IHNpZ25pZmljYW50IHdvcmQgKi8KKyAgICB4ID0gbXBkX21zd29yZChkZWMpOworICAgIHMgPSB3b3JkX3RvX3N0cmluZyhzLCB4LCBtcGRfd29yZF9kaWdpdHMoeCksIE5VTEwpOworCisgICAgLyogcmVtYWluaW5nIGZ1bGwgd29yZHMgKi8KKyAgICBmb3IgKGk9ZGVjLT5sZW4tMjsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgeCA9IGRlYy0+ZGF0YVtpXTsKKyAgICAgICAgcyA9IHdvcmRfdG9fc3RyaW5nKHMsIHgsIE1QRF9SRElHSVRTLCBOVUxMKTsKKyAgICB9CisKKyAgICByZXR1cm4gczsKK30KKworLyogUHJpbnQgdGhlIGNvZWZmaWNpZW50IG9mIGRlYyB0byBzdHJpbmcgcy4gbGVuKGRlYykgPiAwLiBkb3QgaXMgZWl0aGVyCisgICBOVUxMIG9yIGEgcG9pbnRlciB0byB0aGUgbG9jYXRpb24gb2YgYSBkZWNpbWFsIHBvaW50LiAqLworc3RhdGljIGlubGluZSBjaGFyICoKK2NvZWZmX3RvX3N0cmluZ19kb3QoY2hhciAqcywgY2hhciAqZG90LCBjb25zdCBtcGRfdCAqZGVjKQoreworICAgIG1wZF91aW50X3QgeDsKKyAgICBtcGRfc3NpemVfdCBpOworCisgICAgLyogbW9zdCBzaWduaWZpY2FudCB3b3JkICovCisgICAgeCA9IG1wZF9tc3dvcmQoZGVjKTsKKyAgICBzID0gd29yZF90b19zdHJpbmcocywgeCwgbXBkX3dvcmRfZGlnaXRzKHgpLCBkb3QpOworCisgICAgLyogcmVtYWluaW5nIGZ1bGwgd29yZHMgKi8KKyAgICBmb3IgKGk9ZGVjLT5sZW4tMjsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgeCA9IGRlYy0+ZGF0YVtpXTsKKyAgICAgICAgcyA9IHdvcmRfdG9fc3RyaW5nKHMsIHgsIE1QRF9SRElHSVRTLCBkb3QpOworICAgIH0KKworICAgIHJldHVybiBzOworfQorCisvKiBGb3JtYXQgdHlwZSAqLworI2RlZmluZSBNUERfRk1UX0xPV0VSICAgICAgMHgwMDAwMDAwMAorI2RlZmluZSBNUERfRk1UX1VQUEVSICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBNUERfRk1UX1RPU0NJICAgICAgMHgwMDAwMDAwMgorI2RlZmluZSBNUERfRk1UX1RPRU5HICAgICAgMHgwMDAwMDAwNAorI2RlZmluZSBNUERfRk1UX0VYUCAgICAgICAgMHgwMDAwMDAwOAorI2RlZmluZSBNUERfRk1UX0ZJWEVEICAgICAgMHgwMDAwMDAxMAorI2RlZmluZSBNUERfRk1UX1BFUkNFTlQgICAgMHgwMDAwMDAyMAorI2RlZmluZSBNUERfRk1UX1NJR05fU1BBQ0UgMHgwMDAwMDA0MAorI2RlZmluZSBNUERfRk1UX1NJR05fUExVUyAgMHgwMDAwMDA4MAorCisvKiBEZWZhdWx0IHBsYWNlIG9mIHRoZSBkZWNpbWFsIHBvaW50IGZvciBNUERfRk1UX1RPU0NJLCBNUERfRk1UX0VYUCAqLworI2RlZmluZSBNUERfREVGQVVMVF9ET1RQTEFDRSAxCisKKy8qCisgKiBTZXQgKnJlc3VsdCB0byB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgZGVjaW1hbC4gUmV0dXJuIHRoZSBsZW5ndGgKKyAqIG9mICpyZXN1bHQsIG5vdCBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0aW5nICdcMCcgY2hhcmFjdGVyLgorICoKKyAqIEZvcm1hdHRpbmcgaXMgZG9uZSBhY2NvcmRpbmcgdG8gJ2ZsYWdzJy4gQSByZXR1cm4gdmFsdWUgb2YgLTEgd2l0aCAqcmVzdWx0CisgKiBzZXQgdG8gTlVMTCBpbmRpY2F0ZXMgTVBEX01hbGxvY19lcnJvci4KKyAqCisgKiAnZHBsYWNlJyBpcyB0aGUgZGVmYXVsdCBwbGFjZSBvZiB0aGUgZGVjaW1hbCBwb2ludC4gSXQgaXMgYWx3YXlzIHNldCB0bworICogTVBEX0RFRkFVTFRfRE9UUExBQ0UgZXhjZXB0IGZvciB6ZXJvcyBpbiBjb21iaW5hdGlvbiB3aXRoIE1QRF9GTVRfRVhQLgorICovCitzdGF0aWMgbXBkX3NzaXplX3QKK19tcGRfdG9fc3RyaW5nKGNoYXIgKipyZXN1bHQsIGNvbnN0IG1wZF90ICpkZWMsIGludCBmbGFncywgbXBkX3NzaXplX3QgZHBsYWNlKQoreworICAgIGNoYXIgKmRlY3N0cmluZyA9IE5VTEwsICpjcCA9IE5VTEw7CisgICAgbXBkX3NzaXplX3QgbGRpZ2l0czsKKyAgICBtcGRfc3NpemVfdCBtZW0gPSAwLCBrOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoZGVjKSkgeworCisgICAgICAgIG1lbSA9IHNpemVvZiAiLUluZmluaXR5IjsKKyAgICAgICAgaWYgKG1wZF9pc25hbihkZWMpICYmIGRlYy0+bGVuID4gMCkgeworICAgICAgICAgICAgLyogZGlhZ25vc3RpYyBjb2RlICovCisgICAgICAgICAgICBtZW0gKz0gZGVjLT5kaWdpdHM7CisgICAgICAgIH0KKyAgICAgICAgY3AgPSBkZWNzdHJpbmcgPSBtcGRfYWxsb2MobWVtLCBzaXplb2YgKmRlY3N0cmluZyk7CisgICAgICAgIGlmIChjcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAqcmVzdWx0ID0gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtcGRfaXNuZWdhdGl2ZShkZWMpKSB7CisgICAgICAgICAgICAqY3ArKyA9ICctJzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChmbGFncyZNUERfRk1UX1NJR05fU1BBQ0UpIHsKKyAgICAgICAgICAgICpjcCsrID0gJyAnOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGZsYWdzJk1QRF9GTVRfU0lHTl9QTFVTKSB7CisgICAgICAgICAgICAqY3ArKyA9ICcrJzsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtcGRfaXNuYW4oZGVjKSkgeworICAgICAgICAgICAgaWYgKG1wZF9pc3FuYW4oZGVjKSkgeworICAgICAgICAgICAgICAgIHN0cmNweShjcCwgIk5hTiIpOworICAgICAgICAgICAgICAgIGNwICs9IDM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdHJjcHkoY3AsICJzTmFOIik7CisgICAgICAgICAgICAgICAgY3AgKz0gNDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkZWMtPmxlbiA+IDApIHsgLyogZGlhZ25vc3RpYyBjb2RlICovCisgICAgICAgICAgICAgICAgY3AgPSBjb2VmZl90b19zdHJpbmcoY3AsIGRlYyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobXBkX2lzaW5maW5pdGUoZGVjKSkgeworICAgICAgICAgICAgc3RyY3B5KGNwLCAiSW5maW5pdHkiKTsKKyAgICAgICAgICAgIGNwICs9IDg7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7IC8qIGRlYnVnICovCisgICAgICAgICAgICBhYm9ydCgpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydChkZWMtPmxlbiA+IDApOworCisgICAgICAgIC8qCisgICAgICAgICAqIEZvciBlYXNpZXIgbWFuaXB1bGF0aW9uIG9mIHRoZSBkZWNpbWFsIHBvaW50J3MgbG9jYXRpb24KKyAgICAgICAgICogYW5kIHRoZSBleHBvbmVudCB0aGF0IGlzIGZpbmFsbHkgcHJpbnRlZCwgdGhlIG51bWJlciBpcworICAgICAgICAgKiByZXNjYWxlZCB0byBhIHZpcnR1YWwgcmVwcmVzZW50YXRpb24gd2l0aCBleHAgPSAwLiBIZXJlCisgICAgICAgICAqIGxkaWdpdHMgZGVub3RlcyB0aGUgbnVtYmVyIG9mIGRlY2ltYWwgZGlnaXRzIHRvIHRoZSBsZWZ0CisgICAgICAgICAqIG9mIHRoZSBkZWNpbWFsIHBvaW50IGFuZCByZW1haW5zIGNvbnN0YW50IG9uY2UgaW5pdGlhbGl6ZWQuCisgICAgICAgICAqCisgICAgICAgICAqIGRwbGFjZSBpcyB0aGUgbG9jYXRpb24gb2YgdGhlIGRlY2ltYWwgcG9pbnQgcmVsYXRpdmUgdG8KKyAgICAgICAgICogdGhlIHN0YXJ0IG9mIHRoZSBjb2VmZmljaWVudC4gTm90ZSB0aGF0IDMpIGFsd2F5cyBob2xkcworICAgICAgICAgKiB3aGVuIGRwbGFjZSBpcyBzaGlmdGVkLgorICAgICAgICAgKgorICAgICAgICAgKiAgIDEpIGxkaWdpdHMgOj0gZGVjLT5kaWdpdHMgLSBkZWMtPmV4cAorICAgICAgICAgKiAgIDIpIGRwbGFjZSAgOj0gbGRpZ2l0cyAgICAgICAgICAgIChpbml0aWFsbHkpCisgICAgICAgICAqICAgMykgZXhwICAgICA6PSBsZGlnaXRzIC0gZHBsYWNlICAgKGluaXRpYWxseSBleHAgPSAwKQorICAgICAgICAgKgorICAgICAgICAgKiAgIDAuMDAwMDBfLl9fX18uX19fX18wMDAwMDAuCisgICAgICAgICAqICAgIF4gICAgICBeICAgIF4gICAgICAgICAgIF4KKyAgICAgICAgICogICAgfCAgICAgIHwgICAgfCAgICAgICAgICAgfAorICAgICAgICAgKiAgICB8ICAgICAgfCAgICB8ICAgICAgICAgICBgLSBkcGxhY2UgPj0gZGlnaXRzCisgICAgICAgICAqICAgIHwgICAgICB8ICAgIGAtIGRwbGFjZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBjb2VmZmljaWVudAorICAgICAgICAgKiAgICB8ICAgICAgYCBkcGxhY2UgPSAxIChhZnRlciB0aGUgZmlyc3QgY29lZmZpY2llbnQgZGlnaXQpCisgICAgICAgICAqICAgIGAtIGRwbGFjZSA8PSAwCisgICAgICAgICAqLworCisgICAgICAgIGxkaWdpdHMgPSBkZWMtPmRpZ2l0cyArIGRlYy0+ZXhwOworCisgICAgICAgIGlmIChmbGFncyZNUERfRk1UX0VYUCkgeworICAgICAgICAgICAgOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGZsYWdzJk1QRF9GTVRfRklYRUQgfHwgKGRlYy0+ZXhwIDw9IDAgJiYgbGRpZ2l0cyA+IC02KSkgeworICAgICAgICAgICAgLyogTVBEX0ZNVF9GSVhFRDogYWx3YXlzIHVzZSBmaXhlZCBwb2ludCBub3RhdGlvbi4KKyAgICAgICAgICAgICAqIE1QRF9GTVRfVE9TQ0ksIE1QRF9GTVRfVE9FTkc6IGZvciBhIGNlcnRhaW4gcmFuZ2UsCisgICAgICAgICAgICAgKiBvdmVycmlkZSBleHBvbmVudCBub3RhdGlvbi4gKi8KKyAgICAgICAgICAgIGRwbGFjZSA9IGxkaWdpdHM7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZmxhZ3MmTVBEX0ZNVF9UT0VORykgeworICAgICAgICAgICAgaWYgKG1wZF9pc3plcm8oZGVjKSkgeworICAgICAgICAgICAgICAgIC8qIElmIHRoZSBleHBvbmVudCBpcyBkaXZpc2libGUgYnkgdGhyZWUsCisgICAgICAgICAgICAgICAgICogZHBsYWNlID0gMS4gT3RoZXJ3aXNlLCBtb3ZlIGRwbGFjZSBvbmUKKyAgICAgICAgICAgICAgICAgKiBvciB0d28gcGxhY2VzIHRvIHRoZSBsZWZ0LiAqLworICAgICAgICAgICAgICAgIGRwbGFjZSA9IC0xICsgbW9kX21wZF9zc2l6ZV90KGRlYy0+ZXhwKzIsIDMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7IC8qIGxkaWdpdHMtMSBpcyB0aGUgYWRqdXN0ZWQgZXhwb25lbnQsIHdoaWNoCisgICAgICAgICAgICAgICAgKiBzaG91bGQgYmUgZGl2aXNpYmxlIGJ5IHRocmVlLiBJZiBub3QsIG1vdmUKKyAgICAgICAgICAgICAgICAqIGRwbGFjZSBvbmUgb3IgdHdvIHBsYWNlcyB0byB0aGUgcmlnaHQuICovCisgICAgICAgICAgICAgICAgZHBsYWNlICs9IG1vZF9tcGRfc3NpemVfdChsZGlnaXRzLTEsIDMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogQmFzaWMgc3BhY2UgcmVxdWlyZW1lbnRzOgorICAgICAgICAgKgorICAgICAgICAgKiBbLV1bLl1bY29lZmZkaWdpdHNdW0VdWy1dW2V4cGRpZ2l0cysxXVslXVsnXDAnXQorICAgICAgICAgKgorICAgICAgICAgKiBJZiB0aGUgZGVjaW1hbCBwb2ludCBsaWVzIG91dHNpZGUgb2YgdGhlIGNvZWZmaWNpZW50IGRpZ2l0cywKKyAgICAgICAgICogc3BhY2UgaXMgYWRqdXN0ZWQgYWNjb3JkaW5nbHkuCisgICAgICAgICAqLworICAgICAgICBpZiAoZHBsYWNlIDw9IDApIHsKKyAgICAgICAgICAgIG1lbSA9IC1kcGxhY2UgKyBkZWMtPmRpZ2l0cyArIDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZHBsYWNlID49IGRlYy0+ZGlnaXRzKSB7CisgICAgICAgICAgICBtZW0gPSBkcGxhY2U7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtZW0gPSBkZWMtPmRpZ2l0czsKKyAgICAgICAgfQorICAgICAgICBtZW0gKz0gKE1QRF9FWFBESUdJVFMrMSs2KTsKKworICAgICAgICBjcCA9IGRlY3N0cmluZyA9IG1wZF9hbGxvYyhtZW0sIHNpemVvZiAqZGVjc3RyaW5nKTsKKyAgICAgICAgaWYgKGNwID09IE5VTEwpIHsKKyAgICAgICAgICAgICpyZXN1bHQgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKworICAgICAgICBpZiAobXBkX2lzbmVnYXRpdmUoZGVjKSkgeworICAgICAgICAgICAgKmNwKysgPSAnLSc7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZmxhZ3MmTVBEX0ZNVF9TSUdOX1NQQUNFKSB7CisgICAgICAgICAgICAqY3ArKyA9ICcgJzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChmbGFncyZNUERfRk1UX1NJR05fUExVUykgeworICAgICAgICAgICAgKmNwKysgPSAnKyc7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZHBsYWNlIDw9IDApIHsKKyAgICAgICAgICAgIC8qIHNwYWNlOiAtZHBsYWNlK2RlYy0+ZGlnaXRzKzIgKi8KKyAgICAgICAgICAgICpjcCsrID0gJzAnOworICAgICAgICAgICAgKmNwKysgPSAnLic7CisgICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgLWRwbGFjZTsgaysrKSB7CisgICAgICAgICAgICAgICAgKmNwKysgPSAnMCc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjcCA9IGNvZWZmX3RvX3N0cmluZyhjcCwgZGVjKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChkcGxhY2UgPj0gZGVjLT5kaWdpdHMpIHsKKyAgICAgICAgICAgIC8qIHNwYWNlOiBkcGxhY2UgKi8KKyAgICAgICAgICAgIGNwID0gY29lZmZfdG9fc3RyaW5nKGNwLCBkZWMpOworICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IGRwbGFjZS1kZWMtPmRpZ2l0czsgaysrKSB7CisgICAgICAgICAgICAgICAgKmNwKysgPSAnMCc7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBzcGFjZTogZGVjLT5kaWdpdHMrMSAqLworICAgICAgICAgICAgY3AgPSBjb2VmZl90b19zdHJpbmdfZG90KGNwLCBjcCtkcGxhY2UsIGRlYyk7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBDb25kaXRpb25zIGZvciBwcmludGluZyBhbiBleHBvbmVudDoKKyAgICAgICAgICoKKyAgICAgICAgICogICBNUERfRk1UX1RPU0NJLCBNUERfRk1UX1RPRU5HOiBvbmx5IGlmIGxkaWdpdHMgIT0gZHBsYWNlCisgICAgICAgICAqICAgTVBEX0ZNVF9GSVhFRDogICAgICAgICAgICAgICAgbmV2ZXIgKGxkaWdpdHMgPT0gZHBsYWNlKQorICAgICAgICAgKiAgIE1QRF9GTVRfRVhQOiAgICAgICAgICAgICAgICAgIGFsd2F5cworICAgICAgICAgKi8KKyAgICAgICAgaWYgKGxkaWdpdHMgIT0gZHBsYWNlIHx8IGZsYWdzJk1QRF9GTVRfRVhQKSB7CisgICAgICAgICAgICAvKiBzcGFjZTogZXhwZGlnaXRzKzIgKi8KKyAgICAgICAgICAgICpjcCsrID0gKGZsYWdzJk1QRF9GTVRfVVBQRVIpID8gJ0UnIDogJ2UnOworICAgICAgICAgICAgY3AgPSBleHBfdG9fc3RyaW5nKGNwLCBsZGlnaXRzLWRwbGFjZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZmxhZ3MmTVBEX0ZNVF9QRVJDRU5UKSB7CisgICAgICAgICAgICAqY3ArKyA9ICclJzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzc2VydChjcCA8IGRlY3N0cmluZyttZW0pOworICAgIGFzc2VydChjcC1kZWNzdHJpbmcgPCBNUERfU1NJWkVfTUFYKTsKKworICAgICpjcCA9ICdcMCc7CisgICAgKnJlc3VsdCA9IGRlY3N0cmluZzsKKyAgICByZXR1cm4gKG1wZF9zc2l6ZV90KShjcC1kZWNzdHJpbmcpOworfQorCitjaGFyICoKK21wZF90b19zY2koY29uc3QgbXBkX3QgKmRlYywgaW50IGZtdCkKK3sKKyAgICBjaGFyICpyZXM7CisgICAgaW50IGZsYWdzID0gTVBEX0ZNVF9UT1NDSTsKKworICAgIGZsYWdzIHw9IGZtdCA/IE1QRF9GTVRfVVBQRVIgOiBNUERfRk1UX0xPV0VSOworICAgICh2b2lkKV9tcGRfdG9fc3RyaW5nKCZyZXMsIGRlYywgZmxhZ3MsIE1QRF9ERUZBVUxUX0RPVFBMQUNFKTsKKyAgICByZXR1cm4gcmVzOworfQorCitjaGFyICoKK21wZF90b19lbmcoY29uc3QgbXBkX3QgKmRlYywgaW50IGZtdCkKK3sKKyAgICBjaGFyICpyZXM7CisgICAgaW50IGZsYWdzID0gTVBEX0ZNVF9UT0VORzsKKworICAgIGZsYWdzIHw9IGZtdCA/IE1QRF9GTVRfVVBQRVIgOiBNUERfRk1UX0xPV0VSOworICAgICh2b2lkKV9tcGRfdG9fc3RyaW5nKCZyZXMsIGRlYywgZmxhZ3MsIE1QRF9ERUZBVUxUX0RPVFBMQUNFKTsKKyAgICByZXR1cm4gcmVzOworfQorCittcGRfc3NpemVfdAorbXBkX3RvX3NjaV9zaXplKGNoYXIgKipyZXMsIGNvbnN0IG1wZF90ICpkZWMsIGludCBmbXQpCit7CisgICAgaW50IGZsYWdzID0gTVBEX0ZNVF9UT1NDSTsKKworICAgIGZsYWdzIHw9IGZtdCA/IE1QRF9GTVRfVVBQRVIgOiBNUERfRk1UX0xPV0VSOworICAgIHJldHVybiBfbXBkX3RvX3N0cmluZyhyZXMsIGRlYywgZmxhZ3MsIE1QRF9ERUZBVUxUX0RPVFBMQUNFKTsKK30KKworbXBkX3NzaXplX3QKK21wZF90b19lbmdfc2l6ZShjaGFyICoqcmVzLCBjb25zdCBtcGRfdCAqZGVjLCBpbnQgZm10KQoreworICAgIGludCBmbGFncyA9IE1QRF9GTVRfVE9FTkc7CisKKyAgICBmbGFncyB8PSBmbXQgPyBNUERfRk1UX1VQUEVSIDogTVBEX0ZNVF9MT1dFUjsKKyAgICByZXR1cm4gX21wZF90b19zdHJpbmcocmVzLCBkZWMsIGZsYWdzLCBNUERfREVGQVVMVF9ET1RQTEFDRSk7Cit9CisKKy8qIENvcHkgYSBzaW5nbGUgVVRGLTggY2hhciB0byBkZXN0LiBTZWU6IFRoZSBVbmljb2RlIFN0YW5kYXJkLCB2ZXJzaW9uIDUuMiwKKyAgIGNoYXB0ZXIgMy45OiBXZWxsLWZvcm1lZCBVVEYtOCBieXRlIHNlcXVlbmNlcy4gKi8KK3N0YXRpYyBpbnQKK19tcGRfY29weV91dGY4KGNoYXIgZGVzdFs1XSwgY29uc3QgY2hhciAqcykKK3sKKyAgICBjb25zdCB1Y2hhciAqY3AgPSAoY29uc3QgdWNoYXIgKilzOworICAgIHVjaGFyIGxiLCB1YjsKKyAgICBpbnQgY291bnQsIGk7CisKKworICAgIGlmICgqY3AgPT0gMCkgeworICAgICAgICAvKiBlbXB0eSBzdHJpbmcgKi8KKyAgICAgICAgZGVzdFswXSA9ICdcMCc7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIGlmICgqY3AgPD0gMHg3ZikgeworICAgICAgICAvKiBhc2NpaSAqLworICAgICAgICBkZXN0WzBdID0gKmNwOworICAgICAgICBkZXN0WzFdID0gJ1wwJzsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGVsc2UgaWYgKDB4YzIgPD0gKmNwICYmICpjcCA8PSAweGRmKSB7CisgICAgICAgIGxiID0gMHg4MDsgdWIgPSAweGJmOworICAgICAgICBjb3VudCA9IDI7CisgICAgfQorICAgIGVsc2UgaWYgKCpjcCA9PSAweGUwKSB7CisgICAgICAgIGxiID0gMHhhMDsgdWIgPSAweGJmOworICAgICAgICBjb3VudCA9IDM7CisgICAgfQorICAgIGVsc2UgaWYgKCpjcCA8PSAweGVjKSB7CisgICAgICAgIGxiID0gMHg4MDsgdWIgPSAweGJmOworICAgICAgICBjb3VudCA9IDM7CisgICAgfQorICAgIGVsc2UgaWYgKCpjcCA9PSAweGVkKSB7CisgICAgICAgIGxiID0gMHg4MDsgdWIgPSAweDlmOworICAgICAgICBjb3VudCA9IDM7CisgICAgfQorICAgIGVsc2UgaWYgKCpjcCA8PSAweGVmKSB7CisgICAgICAgIGxiID0gMHg4MDsgdWIgPSAweGJmOworICAgICAgICBjb3VudCA9IDM7CisgICAgfQorICAgIGVsc2UgaWYgKCpjcCA9PSAweGYwKSB7CisgICAgICAgIGxiID0gMHg5MDsgdWIgPSAweGJmOworICAgICAgICBjb3VudCA9IDQ7CisgICAgfQorICAgIGVsc2UgaWYgKCpjcCA8PSAweGYzKSB7CisgICAgICAgIGxiID0gMHg4MDsgdWIgPSAweGJmOworICAgICAgICBjb3VudCA9IDQ7CisgICAgfQorICAgIGVsc2UgaWYgKCpjcCA9PSAweGY0KSB7CisgICAgICAgIGxiID0gMHg4MDsgdWIgPSAweDhmOworICAgICAgICBjb3VudCA9IDQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBpbnZhbGlkICovCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgZGVzdFswXSA9ICpjcCsrOworICAgIGlmICgqY3AgPCBsYiB8fCB1YiA8ICpjcCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBkZXN0WzFdID0gKmNwKys7CisgICAgZm9yIChpID0gMjsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKCpjcCA8IDB4ODAgfHwgMHhiZiA8ICpjcCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBkZXN0W2ldID0gKmNwKys7CisgICAgfQorICAgIGRlc3RbaV0gPSAnXDAnOworCisgICAgcmV0dXJuIGNvdW50OworCitlcnJvcjoKKyAgICBkZXN0WzBdID0gJ1wwJzsKKyAgICByZXR1cm4gLTE7Cit9CisKK2ludAorbXBkX3ZhbGlkYXRlX2xjb252KG1wZF9zcGVjX3QgKnNwZWMpCit7CisgICAgc2l6ZV90IG47CisjaWYgQ0hBUl9NQVggPT0gU0NIQVJfTUFYCisgICAgY29uc3QgY2hhciAqY3AgPSBzcGVjLT5ncm91cGluZzsKKyAgICB3aGlsZSAoKmNwICE9ICdcMCcpIHsKKyAgICAgICAgaWYgKCpjcCsrIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisgICAgbiA9IHN0cmxlbihzcGVjLT5kb3QpOworICAgIGlmIChuID09IDAgfHwgbiA+IDQpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoc3RybGVuKHNwZWMtPnNlcCkgPiA0KSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW50CittcGRfcGFyc2VfZm10X3N0cihtcGRfc3BlY190ICpzcGVjLCBjb25zdCBjaGFyICpmbXQsIGludCBjYXBzKQoreworICAgIGNoYXIgKmNwID0gKGNoYXIgKilmbXQ7CisgICAgaW50IGhhdmVfYWxpZ24gPSAwLCBuOworCisgICAgLyogZGVmYXVsdHMgKi8KKyAgICBzcGVjLT5taW5fd2lkdGggPSAwOworICAgIHNwZWMtPnByZWMgPSAtMTsKKyAgICBzcGVjLT50eXBlID0gY2FwcyA/ICdHJyA6ICdnJzsKKyAgICBzcGVjLT5hbGlnbiA9ICc+JzsKKyAgICBzcGVjLT5zaWduID0gJy0nOworICAgIHNwZWMtPmRvdCA9ICIiOworICAgIHNwZWMtPnNlcCA9ICIiOworICAgIHNwZWMtPmdyb3VwaW5nID0gIiI7CisKKworICAgIC8qIHByZXN1bWUgdGhhdCB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIGEgVVRGLTggZmlsbCBjaGFyYWN0ZXIgKi8KKyAgICBpZiAoKG4gPSBfbXBkX2NvcHlfdXRmOChzcGVjLT5maWxsLCBjcCkpIDwgMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBhbGlnbm1lbnQgZGlyZWN0aXZlLCBwcmVmaXhlZCBieSBhIGZpbGwgY2hhcmFjdGVyICovCisgICAgaWYgKCpjcCAmJiAoKihjcCtuKSA9PSAnPCcgfHwgKihjcCtuKSA9PSAnPicgfHwKKyAgICAgICAgICAgICAgICAqKGNwK24pID09ICc9JyB8fCAqKGNwK24pID09ICdeJykpIHsKKyAgICAgICAgY3AgKz0gbjsKKyAgICAgICAgc3BlYy0+YWxpZ24gPSAqY3ArKzsKKyAgICAgICAgaGF2ZV9hbGlnbiA9IDE7CisgICAgfSAvKiBhbGlnbm1lbnQgZGlyZWN0aXZlICovCisgICAgZWxzZSB7CisgICAgICAgIC8qIGRlZmF1bHQgZmlsbCBjaGFyYWN0ZXIgKi8KKyAgICAgICAgc3BlYy0+ZmlsbFswXSA9ICcgJzsKKyAgICAgICAgc3BlYy0+ZmlsbFsxXSA9ICdcMCc7CisgICAgICAgIGlmICgqY3AgPT0gJzwnIHx8ICpjcCA9PSAnPicgfHwKKyAgICAgICAgICAgICpjcCA9PSAnPScgfHwgKmNwID09ICdeJykgeworICAgICAgICAgICAgc3BlYy0+YWxpZ24gPSAqY3ArKzsKKyAgICAgICAgICAgIGhhdmVfYWxpZ24gPSAxOworICAgICAgICB9CisgICAgfQorCisgICAgLyogc2lnbiBmb3JtYXR0aW5nICovCisgICAgaWYgKCpjcCA9PSAnKycgfHwgKmNwID09ICctJyB8fCAqY3AgPT0gJyAnKSB7CisgICAgICAgIHNwZWMtPnNpZ24gPSAqY3ArKzsKKyAgICB9CisKKyAgICAvKiB6ZXJvIHBhZGRpbmcgKi8KKyAgICBpZiAoKmNwID09ICcwJykgeworICAgICAgICAvKiB6ZXJvIHBhZGRpbmcgaW1wbGllcyBhbGlnbm1lbnQsIHdoaWNoIHNob3VsZCBub3QgYmUKKyAgICAgICAgICogc3BlY2lmaWVkIHR3aWNlLiAqLworICAgICAgICBpZiAoaGF2ZV9hbGlnbikgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgc3BlYy0+YWxpZ24gPSAneic7CisgICAgICAgIHNwZWMtPmZpbGxbMF0gPSAqY3ArKzsKKyAgICAgICAgc3BlYy0+ZmlsbFsxXSA9ICdcMCc7CisgICAgfQorCisgICAgLyogbWluaW11bSB3aWR0aCAqLworICAgIGlmIChpc2RpZ2l0KCh1Y2hhcikqY3ApKSB7CisgICAgICAgIGlmICgqY3AgPT0gJzAnKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBlcnJubyA9IDA7CisgICAgICAgIHNwZWMtPm1pbl93aWR0aCA9IG1wZF9zdHJ0b3NzaXplKGNwLCAmY3AsIDEwKTsKKyAgICAgICAgaWYgKGVycm5vID09IEVSQU5HRSB8fCBlcnJubyA9PSBFSU5WQUwpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgLyogdGhvdXNhbmRzIHNlcGFyYXRvciAqLworICAgIGlmICgqY3AgPT0gJywnKSB7CisgICAgICAgIHNwZWMtPmRvdCA9ICIuIjsKKyAgICAgICAgc3BlYy0+c2VwID0gIiwiOworICAgICAgICBzcGVjLT5ncm91cGluZyA9ICJcMDAzXDAwMyI7CisgICAgICAgIGNwKys7CisgICAgfQorCisgICAgLyogZnJhY3Rpb24gZGlnaXRzIG9yIHNpZ25pZmljYW50IGRpZ2l0cyAqLworICAgIGlmICgqY3AgPT0gJy4nKSB7CisgICAgICAgIGNwKys7CisgICAgICAgIGlmICghaXNkaWdpdCgodWNoYXIpKmNwKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZXJybm8gPSAwOworICAgICAgICBzcGVjLT5wcmVjID0gbXBkX3N0cnRvc3NpemUoY3AsICZjcCwgMTApOworICAgICAgICBpZiAoZXJybm8gPT0gRVJBTkdFIHx8IGVycm5vID09IEVJTlZBTCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiB0eXBlICovCisgICAgaWYgKCpjcCA9PSAnRScgfHwgKmNwID09ICdlJyB8fCAqY3AgPT0gJ0YnIHx8ICpjcCA9PSAnZicgfHwKKyAgICAgICAgKmNwID09ICdHJyB8fCAqY3AgPT0gJ2cnIHx8ICpjcCA9PSAnJScpIHsKKyAgICAgICAgc3BlYy0+dHlwZSA9ICpjcCsrOworICAgIH0KKyAgICBlbHNlIGlmICgqY3AgPT0gJ04nIHx8ICpjcCA9PSAnbicpIHsKKyAgICAgICAgLyogbG9jYWxlIHNwZWNpZmljIGNvbnZlcnNpb24gKi8KKyAgICAgICAgc3RydWN0IGxjb252ICpsYzsKKyAgICAgICAgLyogc2VwYXJhdG9yIGhhcyBhbHJlYWR5IGJlZW4gc3BlY2lmaWVkICovCisgICAgICAgIGlmICgqc3BlYy0+c2VwKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBzcGVjLT50eXBlID0gKmNwKys7CisgICAgICAgIHNwZWMtPnR5cGUgPSAoc3BlYy0+dHlwZSA9PSAnTicpID8gJ0cnIDogJ2cnOworICAgICAgICBsYyA9IGxvY2FsZWNvbnYoKTsKKyAgICAgICAgc3BlYy0+ZG90ID0gbGMtPmRlY2ltYWxfcG9pbnQ7CisgICAgICAgIHNwZWMtPnNlcCA9IGxjLT50aG91c2FuZHNfc2VwOworICAgICAgICBzcGVjLT5ncm91cGluZyA9IGxjLT5ncm91cGluZzsKKyAgICAgICAgaWYgKG1wZF92YWxpZGF0ZV9sY29udihzcGVjKSA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiAwOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBjaGVjayBjb3JyZWN0bmVzcyAqLworICAgIGlmICgqY3AgIT0gJ1wwJykgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworLyoKKyAqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHNwZWMtPm1pbl93aWR0aCA8PSBNUERfTUFYX1BSRUMsIHdoaWNoCisgKiBpcyBtYWRlIHN1cmUgaW4gbXBkX3Fmb3JtYXRfc3BlYy4gVGhlbiwgZXZlbiB3aXRoIGEgc3BlYyB0aGF0IGluc2VydHMgYQorICogZm91ci1ieXRlIHNlcGFyYXRvciBhZnRlciBlYWNoIGRpZ2l0LCBuYnl0ZXMgaW4gdGhlIGZvbGxvd2luZyBzdHJ1Y3QKKyAqIGNhbm5vdCBvdmVyZmxvdy4KKyAqLworCisvKiBNdWx0aWJ5dGUgc3RyaW5nICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgbXBkX3NzaXplX3QgbmJ5dGVzOyAvKiBsZW5ndGggaW4gYnl0ZXMgKi8KKyAgICBtcGRfc3NpemVfdCBuY2hhcnM7IC8qIGxlbmd0aCBpbiBjaGFycyAqLworICAgIG1wZF9zc2l6ZV90IGN1cjsgICAgLyogY3VycmVudCB3cml0ZSBpbmRleCAqLworICAgIGNoYXIgKmRhdGE7Cit9IG1wZF9tYnN0cl90OworCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfYmNvcHkoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjLCBtcGRfc3NpemVfdCBuKQoreworICAgIHdoaWxlICgtLW4gPj0gMCkgeworICAgICAgICBkZXN0W25dID0gc3JjW25dOworICAgIH0KK30KKworc3RhdGljIGlubGluZSB2b2lkCitfbWJzdHJfY29weV9jaGFyKG1wZF9tYnN0cl90ICpkZXN0LCBjb25zdCBjaGFyICpzcmMsIG1wZF9zc2l6ZV90IG4pCit7CisgICAgZGVzdC0+bmJ5dGVzICs9IG47CisgICAgZGVzdC0+bmNoYXJzICs9IChuID4gMCA/IDEgOiAwKTsKKyAgICBkZXN0LT5jdXIgLT0gbjsKKworICAgIGlmIChkZXN0LT5kYXRhICE9IE5VTEwpIHsKKyAgICAgICAgX21wZF9iY29weShkZXN0LT5kYXRhK2Rlc3QtPmN1ciwgc3JjLCBuKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21ic3RyX2NvcHlfYXNjaWkobXBkX21ic3RyX3QgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgbXBkX3NzaXplX3QgbikKK3sKKyAgICBkZXN0LT5uYnl0ZXMgKz0gbjsKKyAgICBkZXN0LT5uY2hhcnMgKz0gbjsKKyAgICBkZXN0LT5jdXIgLT0gbjsKKworICAgIGlmIChkZXN0LT5kYXRhICE9IE5VTEwpIHsKKyAgICAgICAgX21wZF9iY29weShkZXN0LT5kYXRhK2Rlc3QtPmN1ciwgc3JjLCBuKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21ic3RyX2NvcHlfcGFkKG1wZF9tYnN0cl90ICpkZXN0LCBtcGRfc3NpemVfdCBuKQoreworICAgIGRlc3QtPm5ieXRlcyArPSBuOworICAgIGRlc3QtPm5jaGFycyArPSBuOworICAgIGRlc3QtPmN1ciAtPSBuOworCisgICAgaWYgKGRlc3QtPmRhdGEgIT0gTlVMTCkgeworICAgICAgICBjaGFyICpjcCA9IGRlc3QtPmRhdGEgKyBkZXN0LT5jdXI7CisgICAgICAgIHdoaWxlICgtLW4gPj0gMCkgeworICAgICAgICAgICAgY3Bbbl0gPSAnMCc7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qCisgKiBDb3B5IGEgbnVtZXJpYyBzdHJpbmcgdG8gZGVzdC0+ZGF0YSwgYWRkaW5nIHNlcGFyYXRvcnMgaW4gdGhlIGludGVnZXIKKyAqIHBhcnQgYWNjb3JkaW5nIHRvIHNwZWMtPmdyb3VwaW5nLiBJZiBsZWFkaW5nIHplcm8gcGFkZGluZyBpcyBlbmFibGVkCisgKiBhbmQgdGhlIHJlc3VsdCBpcyBzbWFsbGVyIHRoYW4gc3BlYy0+bWluX3dpZHRoLCBjb250aW51ZSBhZGRpbmcgemVyb3MKKyAqIGFuZCBzZXBhcmF0b3JzIHVudGlsIHRoZSBtaW5pbXVtIHdpZHRoIGlzIHJlYWNoZWQuCisgKgorICogVGhlIGZpbmFsIGxlbmd0aCBvZiBkZXN0LT5kYXRhIGlzIHN0b3JlZCBpbiBkZXN0LT5uYnl0ZXMuIFRoZSBudW1iZXIKKyAqIG9mIFVURi04IGNoYXJhY3RlcnMgaXMgc3RvcmVkIGluIGRlc3QtPm5jaGFycy4KKyAqCisgKiBGaXJzdCBydW4gKGRlc3QtPmRhdGEgPT0gTlVMTCk6IGRldGVybWluZSB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQKKyAqIHN0cmluZyBhbmQgc3RvcmUgaXQgaW4gZGVzdC0+bmJ5dGVzLgorICoKKyAqIFNlY29uZCBydW4gKHdyaXRlIHRvIGRlc3QtPmRhdGEpOiBkYXRhIGlzIHdyaXR0ZW4gaW4gY2h1bmtzIGFuZCBpbgorICogcmV2ZXJzZSBvcmRlciwgc3RhcnRpbmcgd2l0aCB0aGUgcmVzdCBvZiB0aGUgbnVtZXJpYyBzdHJpbmcuCisgKi8KK3N0YXRpYyB2b2lkCitfbXBkX2FkZF9zZXBfZG90KG1wZF9tYnN0cl90ICpkZXN0LAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzaWduLCAvKiBsb2NhdGlvbiBvZiBvcHRpb25hbCBzaWduICovCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNyYywgbXBkX3NzaXplX3Qgbl9zcmMsIC8qIGludGVnZXIgcGFydCBhbmQgbGVuZ3RoICovCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRvdCwgLyogbG9jYXRpb24gb2Ygb3B0aW9uYWwgZGVjaW1hbCBwb2ludCAqLworICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZXN0LCBtcGRfc3NpemVfdCBuX3Jlc3QsIC8qIHJlbWFpbmluZyBwYXJ0IGFuZCBsZW5ndGggKi8KKyAgICAgICAgICAgICAgICAgY29uc3QgbXBkX3NwZWNfdCAqc3BlYykKK3sKKyAgICBtcGRfc3NpemVfdCBuX3NlcCwgbl9zaWduLCBjb25zdW1lOworICAgIGNvbnN0IGNoYXIgKmc7CisgICAgaW50IHBhZCA9IDA7CisKKyAgICBuX3NpZ24gPSBzaWduID8gMSA6IDA7CisgICAgbl9zZXAgPSAobXBkX3NzaXplX3Qpc3RybGVuKHNwZWMtPnNlcCk7CisgICAgLyogSW5pdGlhbCB3cml0ZSBpbmRleDogc2V0IHRvIGxvY2F0aW9uIG9mICdcMCcgaW4gdGhlIG91dHB1dCBzdHJpbmcuCisgICAgICogSXJyZWxldmFudCBmb3IgdGhlIGZpcnN0IHJ1bi4gKi8KKyAgICBkZXN0LT5jdXIgPSBkZXN0LT5uYnl0ZXM7CisgICAgZGVzdC0+bmJ5dGVzID0gZGVzdC0+bmNoYXJzID0gMDsKKworICAgIF9tYnN0cl9jb3B5X2FzY2lpKGRlc3QsIHJlc3QsIG5fcmVzdCk7CisKKyAgICBpZiAoZG90KSB7CisgICAgICAgIF9tYnN0cl9jb3B5X2NoYXIoZGVzdCwgZG90LCAobXBkX3NzaXplX3Qpc3RybGVuKGRvdCkpOworICAgIH0KKworICAgIGcgPSBzcGVjLT5ncm91cGluZzsKKyAgICBjb25zdW1lID0gKmc7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgLyogSWYgdGhlIGdyb3VwIGxlbmd0aCBpcyAwIG9yIENIQVJfTUFYIG9yIGdyZWF0ZXIgdGhhbiB0aGUKKyAgICAgICAgICogbnVtYmVyIG9mIHNvdXJjZSBieXRlcywgY29uc3VtZSBhbGwgcmVtYWluaW5nIGJ5dGVzLiAqLworICAgICAgICBpZiAoKmcgPT0gMCB8fCAqZyA9PSBDSEFSX01BWCB8fCBjb25zdW1lID4gbl9zcmMpIHsKKyAgICAgICAgICAgIGNvbnN1bWUgPSBuX3NyYzsKKyAgICAgICAgfQorICAgICAgICBuX3NyYyAtPSBjb25zdW1lOworICAgICAgICBpZiAocGFkKSB7CisgICAgICAgICAgICBfbWJzdHJfY29weV9wYWQoZGVzdCwgY29uc3VtZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBfbWJzdHJfY29weV9hc2NpaShkZXN0LCBzcmMrbl9zcmMsIGNvbnN1bWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG5fc3JjID09IDApIHsKKyAgICAgICAgICAgIC8qIEVpdGhlciB0aGUgcmVhbCBzb3VyY2Ugb2YgaW50cGFydCBkaWdpdHMgb3IgdGhlIHZpcnR1YWwKKyAgICAgICAgICAgICAqIHNvdXJjZSBvZiBwYWRkaW5nIHplcm9zIGlzIGV4aGF1c3RlZC4gKi8KKyAgICAgICAgICAgIGlmIChzcGVjLT5hbGlnbiA9PSAneicgJiYKKyAgICAgICAgICAgICAgICBkZXN0LT5uY2hhcnMgKyBuX3NpZ24gPCBzcGVjLT5taW5fd2lkdGgpIHsKKyAgICAgICAgICAgICAgICAvKiBaZXJvIHBhZGRpbmcgaXMgc2V0IGFuZCBsZW5ndGggPCBtaW5fd2lkdGg6CisgICAgICAgICAgICAgICAgICogR2VuZXJhdGUgbl9zcmMgYWRkaXRpb25hbCBjaGFyYWN0ZXJzLiAqLworICAgICAgICAgICAgICAgIG5fc3JjID0gc3BlYy0+bWluX3dpZHRoIC0gKGRlc3QtPm5jaGFycyArIG5fc2lnbik7CisgICAgICAgICAgICAgICAgLyogTmV4dCBpdGVyYXRpb246CisgICAgICAgICAgICAgICAgICogICBjYXNlICpnID09IDAgfHwgKmcgPT0gQ0hBUl9NQVg6CisgICAgICAgICAgICAgICAgICogICAgICBjb25zdW1lIGFsbCBwYWRkaW5nIGNoYXJhY3RlcnMKKyAgICAgICAgICAgICAgICAgKiAgIGNhc2UgY29uc3VtZSA8IGcqOgorICAgICAgICAgICAgICAgICAqICAgICAgZmlsbCByZW1haW5kZXIgb2YgY3VycmVudCBncm91cAorICAgICAgICAgICAgICAgICAqICAgY2FzZSBjb25zdW1lID09IGcqCisgICAgICAgICAgICAgICAgICogICAgICBjb3B5aW5nIGlzIGEgbm8tb3AgKi8KKyAgICAgICAgICAgICAgICBjb25zdW1lID0gKmcgLSBjb25zdW1lOworICAgICAgICAgICAgICAgIC8qIFN3aXRjaCBvbiB2aXJ0dWFsIHNvdXJjZSBvZiB6ZXJvcy4gKi8KKyAgICAgICAgICAgICAgICBwYWQgPSAxOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAobl9zZXAgPiAwKSB7CisgICAgICAgICAgICAvKiBJZiBwYWRkaW5nIGlzIHN3aXRjaGVkIG9uLCBzZXBhcmF0b3JzIGFyZSBjb3VudGVkCisgICAgICAgICAgICAgKiBhcyBwYWRkaW5nIGNoYXJhY3RlcnMuIFRoaXMgcnVsZSBkb2VzIG5vdCBhcHBseSBpZgorICAgICAgICAgICAgICogdGhlIHNlcGFyYXRvciB3b3VsZCBiZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZQorICAgICAgICAgICAgICogcmVzdWx0IHN0cmluZy4gKi8KKyAgICAgICAgICAgIGlmIChwYWQgJiYgbl9zcmMgPiAxKSBuX3NyYyAtPSAxOworICAgICAgICAgICAgX21ic3RyX2NvcHlfY2hhcihkZXN0LCBzcGVjLT5zZXAsIG5fc2VwKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIElmIG5vbi1OVUwsIHVzZSB0aGUgbmV4dCB2YWx1ZSBmb3IgZ3JvdXBpbmcuICovCisgICAgICAgIGlmICgqZyAmJiAqKGcrMSkpIGcrKzsKKyAgICAgICAgY29uc3VtZSA9ICpnOworICAgIH0KKworICAgIGlmIChzaWduKSB7CisgICAgICAgIF9tYnN0cl9jb3B5X2FzY2lpKGRlc3QsIHNpZ24sIDEpOworICAgIH0KKworICAgIGlmIChkZXN0LT5kYXRhKSB7CisgICAgICAgIGRlc3QtPmRhdGFbZGVzdC0+bmJ5dGVzXSA9ICdcMCc7CisgICAgfQorfQorCisvKgorICogQ29udmVydCBhIG51bWVyaWMtc3RyaW5nIHRvIGl0cyBsb2NhbGUtc3BlY2lmaWMgYXBwZWFyYW5jZS4KKyAqIFRoZSBzdHJpbmcgbXVzdCBoYXZlIG9uZSBvZiB0aGVzZSBmb3JtczoKKyAqCisgKiAgICAgMSkgW3NpZ25dIGRpZ2l0cyBbZXhwb25lbnQtcGFydF0KKyAqICAgICAyKSBbc2lnbl0gZGlnaXRzICcuJyBbZGlnaXRzXSBbZXhwb25lbnQtcGFydF0KKyAqCisgKiBOb3QgYWxsb3dlZCwgc2luY2UgX21wZF90b19zdHJpbmcoKSBuZXZlciByZXR1cm5zIHRoaXMgZm9ybToKKyAqCisgKiAgICAgMykgW3NpZ25dICcuJyBkaWdpdHMgW2V4cG9uZW50LXBhcnRdCisgKgorICogSW5wdXQ6IHJlc3VsdC0+ZGF0YSA6PSBvcmlnaW5hbCBudW1lcmljIHN0cmluZyAoQVNDSUkpCisgKiAgICAgICAgcmVzdWx0LT5ieXRlcyA6PSBzdHJsZW4ocmVzdWx0LT5kYXRhKQorICogICAgICAgIHJlc3VsdC0+bmNoYXJzIDo9IHN0cmxlbihyZXN1bHQtPmRhdGEpCisgKgorICogT3V0cHV0OiByZXN1bHQtPmRhdGEgOj0gbW9kaWZpZWQgb3Igb3JpZ2luYWwgc3RyaW5nCisgKiAgICAgICAgIHJlc3VsdC0+Ynl0ZXMgOj0gc3RybGVuKHJlc3VsdC0+ZGF0YSkKKyAqICAgICAgICAgcmVzdWx0LT5uY2hhcnMgOj0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgKHBvc3NpYmx5IFVURi04KQorICovCitzdGF0aWMgaW50CitfbXBkX2FwcGx5X2xjb252KG1wZF9tYnN0cl90ICpyZXN1bHQsIGNvbnN0IG1wZF9zcGVjX3QgKnNwZWMsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgY29uc3QgY2hhciAqc2lnbiA9IE5VTEwsICppbnRwYXJ0ID0gTlVMTCwgKmRvdCA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqcmVzdCwgKmRwOworICAgIGNoYXIgKmRlY3N0cmluZzsKKyAgICBtcGRfc3NpemVfdCBuX2ludCwgbl9yZXN0OworCisgICAgLyogb3JpZ2luYWwgbnVtZXJpYyBzdHJpbmcgKi8KKyAgICBkcCA9IHJlc3VsdC0+ZGF0YTsKKworICAgIC8qIHNpZ24gKi8KKyAgICBpZiAoKmRwID09ICcrJyB8fCAqZHAgPT0gJy0nIHx8ICpkcCA9PSAnICcpIHsKKyAgICAgICAgc2lnbiA9IGRwKys7CisgICAgfQorICAgIC8qIGludGVnZXIgcGFydCAqLworICAgIGFzc2VydChpc2RpZ2l0KCh1Y2hhcikqZHApKTsKKyAgICBpbnRwYXJ0ID0gZHArKzsKKyAgICB3aGlsZSAoaXNkaWdpdCgodWNoYXIpKmRwKSkgeworICAgICAgICBkcCsrOworICAgIH0KKyAgICBuX2ludCA9IChtcGRfc3NpemVfdCkoZHAtaW50cGFydCk7CisgICAgLyogZGVjaW1hbCBwb2ludCAqLworICAgIGlmICgqZHAgPT0gJy4nKSB7CisgICAgICAgIGRwKys7IGRvdCA9IHNwZWMtPmRvdDsKKyAgICB9CisgICAgLyogcmVzdCAqLworICAgIHJlc3QgPSBkcDsKKyAgICBuX3Jlc3QgPSByZXN1bHQtPm5ieXRlcyAtIChtcGRfc3NpemVfdCkoZHAtcmVzdWx0LT5kYXRhKTsKKworICAgIGlmIChkb3QgPT0gTlVMTCAmJiAoKnNwZWMtPnNlcCA9PSAnXDAnIHx8ICpzcGVjLT5ncm91cGluZyA9PSAnXDAnKSkgeworICAgICAgICAvKiBfbXBkX2FkZF9zZXBfZG90KCkgd291bGQgbm90IGNoYW5nZSBhbnl0aGluZyAqLworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICAvKiBEZXRlcm1pbmUgdGhlIHNpemUgb2YgdGhlIG5ldyBkZWNpbWFsIHN0cmluZyBhZnRlciBpbnNlcnRpbmcgdGhlCisgICAgICogZGVjaW1hbCBwb2ludCwgb3B0aW9uYWwgc2VwYXJhdG9ycyBhbmQgb3B0aW9uYWwgcGFkZGluZy4gKi8KKyAgICBkZWNzdHJpbmcgPSByZXN1bHQtPmRhdGE7CisgICAgcmVzdWx0LT5kYXRhID0gTlVMTDsKKyAgICBfbXBkX2FkZF9zZXBfZG90KHJlc3VsdCwgc2lnbiwgaW50cGFydCwgbl9pbnQsIGRvdCwKKyAgICAgICAgICAgICAgICAgICAgIHJlc3QsIG5fcmVzdCwgc3BlYyk7CisKKyAgICByZXN1bHQtPmRhdGEgPSBtcGRfYWxsb2MocmVzdWx0LT5uYnl0ZXMrMSwgMSk7CisgICAgaWYgKHJlc3VsdC0+ZGF0YSA9PSBOVUxMKSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX01hbGxvY19lcnJvcjsKKyAgICAgICAgbXBkX2ZyZWUoZGVjc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogUGVyZm9ybSBhY3R1YWwgd3JpdGVzLiAqLworICAgIF9tcGRfYWRkX3NlcF9kb3QocmVzdWx0LCBzaWduLCBpbnRwYXJ0LCBuX2ludCwgZG90LAorICAgICAgICAgICAgICAgICAgICAgcmVzdCwgbl9yZXN0LCBzcGVjKTsKKworICAgIG1wZF9mcmVlKGRlY3N0cmluZyk7CisgICAgcmV0dXJuIDE7Cit9CisKKy8qIEFkZCBwYWRkaW5nIHRvIHRoZSBmb3JtYXR0ZWQgc3RyaW5nIGlmIG5lY2Vzc2FyeS4gKi8KK3N0YXRpYyBpbnQKK19tcGRfYWRkX3BhZChtcGRfbWJzdHJfdCAqcmVzdWx0LCBjb25zdCBtcGRfc3BlY190ICpzcGVjLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChyZXN1bHQtPm5jaGFycyA8IHNwZWMtPm1pbl93aWR0aCkgeworICAgICAgICBtcGRfc3NpemVfdCBhZGRfY2hhcnMsIGFkZF9ieXRlczsKKyAgICAgICAgc2l6ZV90IGxwYWQgPSAwLCBycGFkID0gMDsKKyAgICAgICAgc2l6ZV90IG5fZmlsbCwgbGVuLCBpLCBqOworICAgICAgICBjaGFyIGFsaWduID0gc3BlYy0+YWxpZ247CisgICAgICAgIHVpbnQ4X3QgZXJyID0gMDsKKyAgICAgICAgY2hhciAqY3A7CisKKyAgICAgICAgbl9maWxsID0gc3RybGVuKHNwZWMtPmZpbGwpOworICAgICAgICBhZGRfY2hhcnMgPSAoc3BlYy0+bWluX3dpZHRoIC0gcmVzdWx0LT5uY2hhcnMpOworICAgICAgICAvKiBtYXggdmFsdWU6IE1QRF9NQVhfUFJFQyAqIDQgKi8KKyAgICAgICAgYWRkX2J5dGVzID0gYWRkX2NoYXJzICogKG1wZF9zc2l6ZV90KW5fZmlsbDsKKworICAgICAgICBjcCA9IHJlc3VsdC0+ZGF0YSA9IG1wZF9yZWFsbG9jKHJlc3VsdC0+ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQtPm5ieXRlcythZGRfYnl0ZXMrMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YgKnJlc3VsdC0+ZGF0YSwgJmVycik7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX01hbGxvY19lcnJvcjsKKyAgICAgICAgICAgIG1wZF9mcmVlKHJlc3VsdC0+ZGF0YSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhbGlnbiA9PSAneicpIHsKKyAgICAgICAgICAgIGFsaWduID0gJz0nOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFsaWduID09ICc8JykgeworICAgICAgICAgICAgcnBhZCA9IGFkZF9jaGFyczsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChhbGlnbiA9PSAnPicgfHwgYWxpZ24gPT0gJz0nKSB7CisgICAgICAgICAgICBscGFkID0gYWRkX2NoYXJzOworICAgICAgICB9CisgICAgICAgIGVsc2UgeyAvKiBhbGlnbiA9PSAnXicgKi8KKyAgICAgICAgICAgIGxwYWQgPSBhZGRfY2hhcnMvMjsKKyAgICAgICAgICAgIHJwYWQgPSBhZGRfY2hhcnMtbHBhZDsKKyAgICAgICAgfQorCisgICAgICAgIGxlbiA9IHJlc3VsdC0+bmJ5dGVzOworICAgICAgICBpZiAoYWxpZ24gPT0gJz0nICYmICgqY3AgPT0gJy0nIHx8ICpjcCA9PSAnKycgfHwgKmNwID09ICcgJykpIHsKKyAgICAgICAgICAgIC8qIGxlYXZlIHNpZ24gaW4gdGhlIGxlYWRpbmcgcG9zaXRpb24gKi8KKyAgICAgICAgICAgIGNwKys7IGxlbi0tOworICAgICAgICB9CisKKyAgICAgICAgbWVtbW92ZShjcCtuX2ZpbGwqbHBhZCwgY3AsIGxlbik7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBscGFkOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBuX2ZpbGw7IGorKykgeworICAgICAgICAgICAgICAgIGNwW2kqbl9maWxsK2pdID0gc3BlYy0+ZmlsbFtqXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjcCArPSAobl9maWxsKmxwYWQgKyBsZW4pOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcnBhZDsgaSsrKSB7CisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbl9maWxsOyBqKyspIHsKKyAgICAgICAgICAgICAgICBjcFtpKm5fZmlsbCtqXSA9IHNwZWMtPmZpbGxbal07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQtPm5ieXRlcyArPSBhZGRfYnl0ZXM7CisgICAgICAgIHJlc3VsdC0+bmNoYXJzICs9IGFkZF9jaGFyczsKKyAgICAgICAgcmVzdWx0LT5kYXRhW3Jlc3VsdC0+bmJ5dGVzXSA9ICdcMCc7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKy8qIFJvdW5kIGEgbnVtYmVyIHRvIHByZWMgZGlnaXRzLiBUaGUgYWRqdXN0ZWQgZXhwb25lbnQgc3RheXMgdGhlIHNhbWUKKyAgIG9yIGluY3JlYXNlcyBieSBvbmUgaWYgcm91bmRpbmcgdXAgY3Jvc3NlcyBhIHBvd2VyIG9mIHRlbiBib3VuZGFyeS4KKyAgIElmIHJlc3VsdC0+ZGlnaXRzIHdvdWxkIGV4Y2VlZCBNUERfTUFYX1BSRUMrMSwgTVBEX0ludmFsaWRfb3BlcmF0aW9uCisgICBpcyBzZXQgYW5kIHRoZSByZXN1bHQgaXMgTmFOLiAqLworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX3JvdW5kKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBwcmVjLAorICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3NzaXplX3QgZXhwID0gYS0+ZXhwICsgYS0+ZGlnaXRzIC0gcHJlYzsKKworICAgIGlmIChwcmVjIDw9IDApIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIHJldHVybjsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXN6ZXJvKGEpKSB7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgcmV0dXJuOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorCisgICAgbXBkX3FyZXNjYWxlX2ZtdChyZXN1bHQsIGEsIGV4cCwgY3R4LCBzdGF0dXMpOworICAgIGlmIChyZXN1bHQtPmRpZ2l0cyA+IHByZWMpIHsKKyAgICAgICAgbXBkX3FyZXNjYWxlX2ZtdChyZXN1bHQsIHJlc3VsdCwgZXhwKzEsIGN0eCwgc3RhdHVzKTsKKyAgICB9Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBtcGRfdCwgZm9ybWF0dGVkIGFjY29yZGluZyB0byAnc3BlYycuCisgKiBUaGUgZm9ybWF0IHNwZWNpZmljYXRpb24gaXMgYXNzdW1lZCB0byBiZSB2YWxpZC4gTWVtb3J5IGVycm9ycyBhcmUgaW5kaWNhdGVkCisgKiBhcyB1c3VhbC4gVGhpcyBmdW5jdGlvbiBpcyBxdWlldC4KKyAqLworY2hhciAqCittcGRfcWZvcm1hdF9zcGVjKGNvbnN0IG1wZF90ICpkZWMsIGNvbnN0IG1wZF9zcGVjX3QgKnNwZWMsCisgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfdWludF90IGR0W01QRF9NSU5BTExPQ19NQVhdOworICAgIG1wZF90IHRtcCA9IHtNUERfU1RBVElDfE1QRF9TVEFUSUNfREFUQSwwLDAsMCxNUERfTUlOQUxMT0NfTUFYLGR0fTsKKyAgICBtcGRfc3NpemVfdCBkcGxhY2UgPSBNUERfREVGQVVMVF9ET1RQTEFDRTsKKyAgICBtcGRfbWJzdHJfdCByZXN1bHQ7CisgICAgbXBkX3NwZWNfdCBzdGFja3NwZWM7CisgICAgY2hhciB0eXBlID0gc3BlYy0+dHlwZTsKKyAgICBpbnQgZmxhZ3MgPSAwOworCisKKyAgICBpZiAoc3BlYy0+bWluX3dpZHRoID4gTVBEX01BWF9QUkVDKSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoaXN1cHBlcigodWNoYXIpdHlwZSkpIHsKKyAgICAgICAgdHlwZSA9IHRvbG93ZXIoKHVjaGFyKXR5cGUpOworICAgICAgICBmbGFncyB8PSBNUERfRk1UX1VQUEVSOworICAgIH0KKyAgICBpZiAoc3BlYy0+c2lnbiA9PSAnICcpIHsKKyAgICAgICAgZmxhZ3MgfD0gTVBEX0ZNVF9TSUdOX1NQQUNFOworICAgIH0KKyAgICBlbHNlIGlmIChzcGVjLT5zaWduID09ICcrJykgeworICAgICAgICBmbGFncyB8PSBNUERfRk1UX1NJR05fUExVUzsKKyAgICB9CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChkZWMpKSB7CisgICAgICAgIGlmIChzcGVjLT5hbGlnbiA9PSAneicpIHsKKyAgICAgICAgICAgIHN0YWNrc3BlYyA9ICpzcGVjOworICAgICAgICAgICAgc3RhY2tzcGVjLmZpbGxbMF0gPSAnICc7CisgICAgICAgICAgICBzdGFja3NwZWMuZmlsbFsxXSA9ICdcMCc7CisgICAgICAgICAgICBzdGFja3NwZWMuYWxpZ24gPSAnPic7CisgICAgICAgICAgICBzcGVjID0gJnN0YWNrc3BlYzsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdWludDMyX3Qgd29ya3N0YXR1cyA9IDA7CisgICAgICAgIG1wZF9zc2l6ZV90IHByZWM7CisKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgJ2cnOiBmbGFncyB8PSBNUERfRk1UX1RPU0NJOyBicmVhazsKKyAgICAgICAgY2FzZSAnZSc6IGZsYWdzIHw9IE1QRF9GTVRfRVhQOyBicmVhazsKKyAgICAgICAgY2FzZSAnJSc6IGZsYWdzIHw9IE1QRF9GTVRfUEVSQ0VOVDsKKyAgICAgICAgICAgICAgICAgIGlmICghbXBkX3Fjb3B5KCZ0bXAsIGRlYywgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgdG1wLmV4cCArPSAyOworICAgICAgICAgICAgICAgICAgZGVjID0gJnRtcDsKKyAgICAgICAgICAgICAgICAgIHR5cGUgPSAnZic7IC8qIGZhbGwgdGhyb3VnaCAqLworICAgICAgICBjYXNlICdmJzogZmxhZ3MgfD0gTVBEX0ZNVF9GSVhFRDsgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6IGFib3J0KCk7IC8qIGRlYnVnOiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIH0KKworICAgICAgICBpZiAoc3BlYy0+cHJlYyA+PSAwKSB7CisgICAgICAgICAgICBpZiAoc3BlYy0+cHJlYyA+IE1QRF9NQVhfUFJFQykgeworICAgICAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICAgICAgY2FzZSAnZyc6CisgICAgICAgICAgICAgICAgcHJlYyA9IChzcGVjLT5wcmVjID09IDApID8gMSA6IHNwZWMtPnByZWM7CisgICAgICAgICAgICAgICAgaWYgKGRlYy0+ZGlnaXRzID4gcHJlYykgeworICAgICAgICAgICAgICAgICAgICBfbXBkX3JvdW5kKCZ0bXAsIGRlYywgcHJlYywgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgICAgICAgICAgICAgZGVjID0gJnRtcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdlJzoKKyAgICAgICAgICAgICAgICBpZiAobXBkX2lzemVybyhkZWMpKSB7CisgICAgICAgICAgICAgICAgICAgIGRwbGFjZSA9IDEtc3BlYy0+cHJlYzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIF9tcGRfcm91bmQoJnRtcCwgZGVjLCBzcGVjLT5wcmVjKzEsIGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd29ya3N0YXR1cyk7CisgICAgICAgICAgICAgICAgICAgIGRlYyA9ICZ0bXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnZic6CisgICAgICAgICAgICAgICAgbXBkX3FyZXNjYWxlKCZ0bXAsIGRlYywgLXNwZWMtPnByZWMsIGN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndvcmtzdGF0dXMpOworICAgICAgICAgICAgICAgIGRlYyA9ICZ0bXA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAodHlwZSA9PSAnZicpIHsKKyAgICAgICAgICAgIGlmIChtcGRfaXN6ZXJvKGRlYykgJiYgZGVjLT5leHAgPiAwKSB7CisgICAgICAgICAgICAgICAgbXBkX3FyZXNjYWxlKCZ0bXAsIGRlYywgMCwgY3R4LCAmd29ya3N0YXR1cyk7CisgICAgICAgICAgICAgICAgZGVjID0gJnRtcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICh3b3Jrc3RhdHVzJk1QRF9FcnJvcnMpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gKHdvcmtzdGF0dXMmTVBEX0Vycm9ycyk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiBBdCB0aGlzIHBvaW50LCBmb3IgYWxsIHNjYWxlZCBvciBub24tc2NhbGVkIGRlY2ltYWxzOgorICAgICAqICAgMSkgMSA8PSBkaWdpdHMgPD0gTUFYX1BSRUMrMQorICAgICAqICAgMikgYWRqZXhwKHNjYWxlZCkgPSBhZGpleHAob3JpZykgWysxXQorICAgICAqICAgMykgICBjYXNlICdnJzogTUlOX0VUSU5ZIDw9IGV4cCA8PSBNQVhfRU1BWCsxCisgICAgICogICAgICAgIGNhc2UgJ2UnOiBNSU5fRVRJTlktTUFYX1BSRUMgPD0gZXhwIDw9IE1BWF9FTUFYKzEKKyAgICAgKiAgICAgICAgY2FzZSAnZic6IE1JTl9FVElOWSA8PSBleHAgPD0gTUFYX0VNQVgrMQorICAgICAqICAgNCkgbWF4IG1lbW9yeSBhbGxvYyBpbiBfbXBkX3RvX3N0cmluZzoKKyAgICAgKiAgICAgICAgY2FzZSAnZyc6IE1BWF9QUkVDKzM2CisgICAgICogICAgICAgIGNhc2UgJ2UnOiBNQVhfUFJFQyszNgorICAgICAqICAgICAgICBjYXNlICdmJzogMipNUERfTUFYX1BSRUMrMzAKKyAgICAgKi8KKyAgICByZXN1bHQubmJ5dGVzID0gX21wZF90b19zdHJpbmcoJnJlc3VsdC5kYXRhLCBkZWMsIGZsYWdzLCBkcGxhY2UpOworICAgIHJlc3VsdC5uY2hhcnMgPSByZXN1bHQubmJ5dGVzOworICAgIGlmIChyZXN1bHQubmJ5dGVzIDwgMCkgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9NYWxsb2NfZXJyb3I7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgaWYgKCpzcGVjLT5kb3QgIT0gJ1wwJyAmJiAhbXBkX2lzc3BlY2lhbChkZWMpKSB7CisgICAgICAgIGlmIChyZXN1bHQubmNoYXJzID4gTVBEX01BWF9QUkVDKzM2KSB7CisgICAgICAgICAgICAvKiBTaW5jZSBhIGdyb3VwIGxlbmd0aCBvZiBvbmUgaXMgbm90IGV4cGxpY2l0bHkKKyAgICAgICAgICAgICAqIGRpc2FsbG93ZWQsIGVuc3VyZSB0aGF0IGl0IGlzIGFsd2F5cyBwb3NzaWJsZSB0bworICAgICAgICAgICAgICogaW5zZXJ0IGEgZm91ciBieXRlIHNlcGFyYXRvciBhZnRlciBlYWNoIGRpZ2l0LiAqLworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICBtcGRfZnJlZShyZXN1bHQuZGF0YSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGlmICghX21wZF9hcHBseV9sY29udigmcmVzdWx0LCBzcGVjLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHNwZWMtPm1pbl93aWR0aCkgeworICAgICAgICBpZiAoIV9tcGRfYWRkX3BhZCgmcmVzdWx0LCBzcGVjLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgbXBkX2RlbCgmdG1wKTsKKyAgICByZXR1cm4gcmVzdWx0LmRhdGE7CisKK2Vycm9yOgorICAgIG1wZF9kZWwoJnRtcCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK2NoYXIgKgorbXBkX3Fmb3JtYXQoY29uc3QgbXBkX3QgKmRlYywgY29uc3QgY2hhciAqZm10LCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zcGVjX3Qgc3BlYzsKKworICAgIGlmICghbXBkX3BhcnNlX2ZtdF9zdHIoJnNwZWMsIGZtdCwgMSkpIHsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBtcGRfcWZvcm1hdF9zcGVjKGRlYywgJnNwZWMsIGN0eCwgc3RhdHVzKTsKK30KKworLyoKKyAqIFRoZSBzcGVjaWZpY2F0aW9uIGhhcyBhICpjb25kaXRpb24qIGNhbGxlZCBJbnZhbGlkX29wZXJhdGlvbiBhbmQgYW4KKyAqIElFRUUgKnNpZ25hbCogY2FsbGVkIEludmFsaWRfb3BlcmF0aW9uLiBUaGUgZm9ybWVyIGNvcnJlc3BvbmRzIHRvCisgKiBNUERfSW52YWxpZF9vcGVyYXRpb24sIHRoZSBsYXR0ZXIgdG8gTVBEX0lFRUVfSW52YWxpZF9vcGVyYXRpb24uCisgKiBNUERfSUVFRV9JbnZhbGlkX29wZXJhdGlvbiBjb21wcmlzZXMgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFtNUERfQ29udmVyc2lvbl9zeW50YXgsIE1QRF9EaXZpc2lvbl9pbXBvc3NpYmxlLCBNUERfRGl2aXNpb25fdW5kZWZpbmVkLAorICogIE1QRF9GcHVfZXJyb3IsIE1QRF9JbnZhbGlkX2NvbnRleHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwKKyAqICBNUERfTWFsbG9jX2Vycm9yXQorICoKKyAqIEluIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zLCAnZmxhZycgZGVub3RlcyB0aGUgY29uZGl0aW9uLCAnc2lnbmFsJworICogZGVub3RlcyB0aGUgSUVFRSBzaWduYWwuCisgKi8KKworc3RhdGljIGNvbnN0IGNoYXIgKm1wZF9mbGFnX3N0cmluZ1tNUERfTlVNX0ZMQUdTXSA9IHsKKyAgICAiQ2xhbXBlZCIsCisgICAgIkNvbnZlcnNpb25fc3ludGF4IiwKKyAgICAiRGl2aXNpb25fYnlfemVybyIsCisgICAgIkRpdmlzaW9uX2ltcG9zc2libGUiLAorICAgICJEaXZpc2lvbl91bmRlZmluZWQiLAorICAgICJGcHVfZXJyb3IiLAorICAgICJJbmV4YWN0IiwKKyAgICAiSW52YWxpZF9jb250ZXh0IiwKKyAgICAiSW52YWxpZF9vcGVyYXRpb24iLAorICAgICJNYWxsb2NfZXJyb3IiLAorICAgICJOb3RfaW1wbGVtZW50ZWQiLAorICAgICJPdmVyZmxvdyIsCisgICAgIlJvdW5kZWQiLAorICAgICJTdWJub3JtYWwiLAorICAgICJVbmRlcmZsb3ciLAorfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKm1wZF9zaWduYWxfc3RyaW5nW01QRF9OVU1fRkxBR1NdID0geworICAgICJDbGFtcGVkIiwKKyAgICAiSUVFRV9JbnZhbGlkX29wZXJhdGlvbiIsCisgICAgIkRpdmlzaW9uX2J5X3plcm8iLAorICAgICJJRUVFX0ludmFsaWRfb3BlcmF0aW9uIiwKKyAgICAiSUVFRV9JbnZhbGlkX29wZXJhdGlvbiIsCisgICAgIklFRUVfSW52YWxpZF9vcGVyYXRpb24iLAorICAgICJJbmV4YWN0IiwKKyAgICAiSUVFRV9JbnZhbGlkX29wZXJhdGlvbiIsCisgICAgIklFRUVfSW52YWxpZF9vcGVyYXRpb24iLAorICAgICJJRUVFX0ludmFsaWRfb3BlcmF0aW9uIiwKKyAgICAiTm90X2ltcGxlbWVudGVkIiwKKyAgICAiT3ZlcmZsb3ciLAorICAgICJSb3VuZGVkIiwKKyAgICAiU3Vibm9ybWFsIiwKKyAgICAiVW5kZXJmbG93IiwKK307CisKKy8qIHByaW50IGNvbmRpdGlvbnMgdG8gYnVmZmVyLCBzZXBhcmF0ZWQgYnkgc3BhY2VzICovCitpbnQKK21wZF9zbnByaW50X2ZsYWdzKGNoYXIgKmRlc3QsIGludCBubWVtYiwgdWludDMyX3QgZmxhZ3MpCit7CisgICAgY2hhciAqY3A7CisgICAgaW50IG4sIGo7CisKKyAgICBhc3NlcnQobm1lbWIgPj0gTVBEX01BWF9GTEFHX1NUUklORyk7CisKKyAgICAqZGVzdCA9ICdcMCc7IGNwID0gZGVzdDsKKyAgICBmb3IgKGogPSAwOyBqIDwgTVBEX05VTV9GTEFHUzsgaisrKSB7CisgICAgICAgIGlmIChmbGFncyAmICgxVTw8aikpIHsKKyAgICAgICAgICAgIG4gPSBzbnByaW50ZihjcCwgbm1lbWIsICIlcyAiLCBtcGRfZmxhZ19zdHJpbmdbal0pOworICAgICAgICAgICAgaWYgKG4gPCAwIHx8IG4gPj0gbm1lbWIpIHJldHVybiAtMTsKKyAgICAgICAgICAgIGNwICs9IG47IG5tZW1iIC09IG47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoY3AgIT0gZGVzdCkgeworICAgICAgICAqKC0tY3ApID0gJ1wwJzsKKyAgICB9CisKKyAgICByZXR1cm4gKGludCkoY3AtZGVzdCk7Cit9CisKKy8qIHByaW50IGNvbmRpdGlvbnMgdG8gYnVmZmVyLCBpbiBsaXN0IGZvcm0gKi8KK2ludAorbXBkX2xzbnByaW50X2ZsYWdzKGNoYXIgKmRlc3QsIGludCBubWVtYiwgdWludDMyX3QgZmxhZ3MsIGNvbnN0IGNoYXIgKmZsYWdfc3RyaW5nW10pCit7CisgICAgY2hhciAqY3A7CisgICAgaW50IG4sIGo7CisKKyAgICBhc3NlcnQobm1lbWIgPj0gTVBEX01BWF9GTEFHX0xJU1QpOworICAgIGlmIChmbGFnX3N0cmluZyA9PSBOVUxMKSB7CisgICAgICAgIGZsYWdfc3RyaW5nID0gbXBkX2ZsYWdfc3RyaW5nOworICAgIH0KKworICAgICpkZXN0ID0gJ1snOworICAgICooZGVzdCsxKSA9ICdcMCc7CisgICAgY3AgPSBkZXN0KzE7CisgICAgLS1ubWVtYjsKKworICAgIGZvciAoaiA9IDA7IGogPCBNUERfTlVNX0ZMQUdTOyBqKyspIHsKKyAgICAgICAgaWYgKGZsYWdzICYgKDFVPDxqKSkgeworICAgICAgICAgICAgbiA9IHNucHJpbnRmKGNwLCBubWVtYiwgIiVzLCAiLCBmbGFnX3N0cmluZ1tqXSk7CisgICAgICAgICAgICBpZiAobiA8IDAgfHwgbiA+PSBubWVtYikgcmV0dXJuIC0xOworICAgICAgICAgICAgY3AgKz0gbjsgbm1lbWIgLT0gbjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIGVyYXNlIHRoZSBsYXN0ICIsICIgKi8KKyAgICBpZiAoY3AgIT0gZGVzdCsxKSB7CisgICAgICAgIGNwIC09IDI7CisgICAgfQorCisgICAgKmNwKysgPSAnXSc7CisgICAgKmNwID0gJ1wwJzsKKworICAgIHJldHVybiAoaW50KShjcC1kZXN0KTsgLyogc3RybGVuLCB3aXRob3V0IE5VTCB0ZXJtaW5hdG9yICovCit9CisKKy8qIHByaW50IHNpZ25hbHMgdG8gYnVmZmVyLCBpbiBsaXN0IGZvcm0gKi8KK2ludAorbXBkX2xzbnByaW50X3NpZ25hbHMoY2hhciAqZGVzdCwgaW50IG5tZW1iLCB1aW50MzJfdCBmbGFncywgY29uc3QgY2hhciAqc2lnbmFsX3N0cmluZ1tdKQoreworICAgIGNoYXIgKmNwOworICAgIGludCBuLCBqOworICAgIGludCBpZWVlX2ludmFsaWRfZG9uZSA9IDA7CisKKyAgICBhc3NlcnQobm1lbWIgPj0gTVBEX01BWF9TSUdOQUxfTElTVCk7CisgICAgaWYgKHNpZ25hbF9zdHJpbmcgPT0gTlVMTCkgeworICAgICAgICBzaWduYWxfc3RyaW5nID0gbXBkX3NpZ25hbF9zdHJpbmc7CisgICAgfQorCisgICAgKmRlc3QgPSAnWyc7CisgICAgKihkZXN0KzEpID0gJ1wwJzsKKyAgICBjcCA9IGRlc3QrMTsKKyAgICAtLW5tZW1iOworCisgICAgZm9yIChqID0gMDsgaiA8IE1QRF9OVU1fRkxBR1M7IGorKykgeworICAgICAgICB1aW50MzJfdCBmID0gZmxhZ3MgJiAoMVU8PGopOworICAgICAgICBpZiAoZikgeworICAgICAgICAgICAgaWYgKGYmTVBEX0lFRUVfSW52YWxpZF9vcGVyYXRpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAoaWVlZV9pbnZhbGlkX2RvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGllZWVfaW52YWxpZF9kb25lID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG4gPSBzbnByaW50ZihjcCwgbm1lbWIsICIlcywgIiwgc2lnbmFsX3N0cmluZ1tqXSk7CisgICAgICAgICAgICBpZiAobiA8IDAgfHwgbiA+PSBubWVtYikgcmV0dXJuIC0xOworICAgICAgICAgICAgY3AgKz0gbjsgbm1lbWIgLT0gbjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIGVyYXNlIHRoZSBsYXN0ICIsICIgKi8KKyAgICBpZiAoY3AgIT0gZGVzdCsxKSB7CisgICAgICAgIGNwIC09IDI7CisgICAgfQorCisgICAgKmNwKysgPSAnXSc7CisgICAgKmNwID0gJ1wwJzsKKworICAgIHJldHVybiAoaW50KShjcC1kZXN0KTsgLyogc3RybGVuLCB3aXRob3V0IE5VTCB0ZXJtaW5hdG9yICovCit9CisKKy8qIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBhcmUgbWFpbmx5IGludGVuZGVkIGZvciBkZWJ1Z2dpbmcuICovCit2b2lkCittcGRfZnByaW50KEZJTEUgKmZpbGUsIGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgY2hhciAqZGVjc3RyaW5nOworCisgICAgZGVjc3RyaW5nID0gbXBkX3RvX3NjaShkZWMsIDEpOworICAgIGlmIChkZWNzdHJpbmcgIT0gTlVMTCkgeworICAgICAgICBmcHJpbnRmKGZpbGUsICIlc1xuIiwgZGVjc3RyaW5nKTsKKyAgICAgICAgbXBkX2ZyZWUoZGVjc3RyaW5nKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZwdXRzKCJtcGRfZnByaW50OiBvdXRwdXQgZXJyb3JcbiIsIGZpbGUpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorfQorCit2b2lkCittcGRfcHJpbnQoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICBjaGFyICpkZWNzdHJpbmc7CisKKyAgICBkZWNzdHJpbmcgPSBtcGRfdG9fc2NpKGRlYywgMSk7CisgICAgaWYgKGRlY3N0cmluZyAhPSBOVUxMKSB7CisgICAgICAgIHByaW50ZigiJXNcbiIsIGRlY3N0cmluZyk7CisgICAgICAgIG1wZF9mcmVlKGRlY3N0cmluZyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmcHV0cygibXBkX2ZwcmludDogb3V0cHV0IGVycm9yXG4iLCBzdGRlcnIpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorfQorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvaW8uaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvaW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGZjZTczCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9pby5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgSU9fSAorI2RlZmluZSBJT19ICisKKworI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisKKworI2lmIFNJWkVfTUFYID09IE1QRF9TSVpFX01BWAorICAjZGVmaW5lIG1wZF9zdHJ0b3NzaXplIF9tcGRfc3RydG9zc2l6ZQorI2Vsc2UKK3N0YXRpYyBpbmxpbmUgbXBkX3NzaXplX3QKK21wZF9zdHJ0b3NzaXplKGNvbnN0IGNoYXIgKnMsIGNoYXIgKiplbmQsIGludCBiYXNlKQoreworICAgIGludDY0X3QgcmV0dmFsOworCisgICAgZXJybm8gPSAwOworICAgIHJldHZhbCA9IF9tcGRfc3RydG9zc2l6ZShzLCBlbmQsIGJhc2UpOworICAgIGlmIChlcnJubyA9PSAwICYmIChyZXR2YWwgPiBNUERfU1NJWkVfTUFYIHx8IHJldHZhbCA8IE1QRF9TU0laRV9NSU4pKSB7CisgICAgICAgIGVycm5vID0gRVJBTkdFOworICAgIH0KKyAgICBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIHJldHVybiAocmV0dmFsIDwgMCkgPyBNUERfU1NJWkVfTUlOIDogTVBEX1NTSVpFX01BWDsKKyAgICB9CisKKyAgICByZXR1cm4gKG1wZF9zc2l6ZV90KXJldHZhbDsKK30KKyNlbmRpZgorCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL1JFRkVSRU5DRVMudHh0IGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL1JFRkVSRU5DRVMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllZDU3ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvUkVGRVJFTkNFUy50eHQKQEAgLTAsMCArMSw1MSBAQAorCisKK1RoaXMgZG9jdW1lbnQgY29udGFpbnMgbGlua3MgdG8gdGhlIGxpdGVyYXR1cmUgdXNlZCBpbiB0aGUgcHJvY2VzcyBvZgorY3JlYXRpbmcgdGhlIGxpYnJhcnkuIFRoZSBsaXN0IGlzIHByb2JhYmx5IG5vdCBjb21wbGV0ZS4KKworCitNaWtlIENvd2xpc2hhdzogR2VuZXJhbCBEZWNpbWFsIEFyaXRobWV0aWMgU3BlY2lmaWNhdGlvbgoraHR0cDovL3NwZWxlb3Ryb3ZlLmNvbS9kZWNpbWFsL2RlY2FyaXRoLmh0bWwKKworCitKZWFuLU1pY2hlbCBNdWxsZXI6IE9uIHRoZSBkZWZpbml0aW9uIG9mIHVscCAoeCkKK2xhcmEuaW5pc3QuZnIvYml0c3RyZWFtLzIzMzIvNTE4LzEvTElQLVJSMjAwNS0wOS5wZGYKKworCitULiBFLiBIdWxsLCBBLiBBYnJoYW06IFByb3Blcmx5IHJvdW5kZWQgdmFyaWFibGUgcHJlY2lzaW9uIHNxdWFyZSByb290CitodHRwOi8vcG9ydGFsLmFjbS5vcmcvY2l0YXRpb24uY2ZtP2lkPTIxNDQxMworCisKK1QuIEUuIEh1bGwsIEEuIEFicmhhbTogVmFyaWFibGUgcHJlY2lzaW9uIGV4cG9uZW50aWFsIGZ1bmN0aW9uCitodHRwOi8vcG9ydGFsLmFjbS5vcmcvY2l0YXRpb24uY2ZtP2lkPTY0OTgKKworCitSb21hbiBFLiBNYWVkZXI6IFN0b3JhZ2UgYWxsb2NhdGlvbiBmb3IgdGhlIEthcmF0c3ViYSBpbnRlZ2VyIG11bHRpcGxpY2F0aW9uCithbGdvcml0aG0uICBodHRwOi8vd3d3LnNwcmluZ2VybGluay5jb20vY29udGVudC93MTUwNThtajZ2NTl0NTY1LworCisKK0ouIE0uIFBvbGxhcmQ6IFRoZSBmYXN0IEZvdXJpZXIgdHJhbnNmb3JtIGluIGEgZmluaXRlIGZpZWxkCitodHRwOi8vd3d3LmFtcy5vcmcvam91cm5hbHMvbWNvbS8xOTcxLTI1LTExNC9TMDAyNS01NzE4LTE5NzEtMDMwMTk2Ni0wL2hvbWUuaHRtbAorCisKK0RhdmlkIEguIEJhaWxleTogRkZUcyBpbiBFeHRlcm5hbCBvciBIaWVyYXJjaGljYWwgTWVtb3J5CitodHRwOi8vY3JkLmxibC5nb3YvfmRoYmFpbGV5L2RoYnBhcGVycy8KKworCitXLiBNb3J2ZW4gR2VudGxlbWFuOiBNYXRyaXggTXVsdGlwbGljYXRpb24gYW5kIEZhc3QgRm91cmllciBUcmFuc2Zvcm1zCitodHRwOi8vd3d3LmFsY2F0ZWwtbHVjZW50LmNvbS9ic3RqL3ZvbDQ3LTE5NjgvYXJ0aWNsZXMvYnN0ajQ3LTYtMTA5OS5wZGYKKworCitNaWtrbyBUb21taWxhOiBBcGZsb2F0IGRvY3VtZW50YXRpb24KK2h0dHA6Ly93d3cuYXBmbG9hdC5vcmcvYXBmbG9hdC8yLjQxL2FwZmxvYXQucGRmCisKKworSm9lcmcgQXJuZHQ6ICJNYXR0ZXJzIENvbXB1dGF0aW9uYWwiCitodHRwOi8vd3d3Lmpqai5kZS9meHQvCisKKworS2FybCBIYXNzZWxzdHJvbTogRmFzdCBEaXZpc2lvbiBvZiBMYXJnZSBJbnRlZ2Vycword3d3LnRyZXNrYWwuY29tL2thbGxlL2V4am9iYi9vcmlnaW5hbC1yZXBvcnQucGRmCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvYmlnbnVtLnR4dCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9iaWdudW0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNGZmNjcKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvYmlnbnVtLnR4dApAQCAtMCwwICsxLDgzIEBACisKKworQmlnbnVtIHN1cHBvcnQgKEZhc3QgTnVtYmVyIFRoZW9yZXRpYyBUcmFuc2Zvcm0gb3IgRk5UKToKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0JpZ251bSBhcml0aG1ldGljIGluIGxpYm1wZGVjIHVzZXMgdGhlIHNjaGVtZSBmb3IgZmFzdCBjb252b2x1dGlvbgorb2YgaW50ZWdlciBzZXF1ZW5jZXMgZnJvbToKKworSi4gTS4gUG9sbGFyZDogVGhlIGZhc3QgRm91cmllciB0cmFuc2Zvcm0gaW4gYSBmaW5pdGUgZmllbGQKK2h0dHA6Ly93d3cuYW1zLm9yZy9qb3VybmFscy9tY29tLzE5NzEtMjUtMTE0L1MwMDI1LTU3MTgtMTk3MS0wMzAxOTY2LTAvaG9tZS5odG1sCisKKworVGhlIHRyYW5zZm9ybSBpbiBhIGZpbml0ZSBmaWVsZCBjYW4gYmUgdXNlZCBmb3IgY29udm9sdXRpb24gaW4gdGhlIHNhbWUKK3dheSBhcyB0aGUgRm91cmllciBUcmFuc2Zvcm0uIFRoZSBtYWluIGFkdmFudGFnZXMgb2YgdGhlIE51bWJlciBUaGVvcmV0aWMKK1RyYW5zZm9ybSBhcmUgdGhhdCBpdCBpcyBib3RoIGV4YWN0IGFuZCB2ZXJ5IG1lbW9yeSBlZmZpY2llbnQuCisKKworQ29udm9sdXRpb24gaW4gcHNldWRvLWNvZGU6Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworICBmbnRfY29udm9sdXRlKGEsIGIpOgorICAgIHggPSBmbnQoYSkgICAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yd2FyZCB0cmFuc2Zvcm0gb2YgYQorICAgIHkgPSBmbnQoYikgICAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yd2FyZCB0cmFuc2Zvcm0gb2YgYgorICAgIHogPSBwYWlyd2lzZSBtdWx0aXBseSB4W2ldIGFuZCB5W2ldCisgICAgcmVzdWx0ID0gaW52X2ZudCh6KSAgICAgICAgICAgICAgICAgIyBiYWNrd2FyZCB0cmFuc2Zvcm0gb2Ygei4KKworCitFeHRlbmRpbmcgdGhlIG1heGltdW0gdHJhbnNmb3JtIGxlbmd0aCAoQ2hpbmVzZSBSZW1haW5kZXIgVGhlb3JlbSk6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBtYXhpbXVtIHRyYW5zZm9ybSBsZW5ndGggaXMgcXVpdGUgbGltaXRlZCB3aGVuIHVzaW5nIGEgc2luZ2xlCitwcmltZSBmaWVsZC4gSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdG8gdXNlIG11bHRpcGxlIHByaW1lcyBhbmQKK3JlY292ZXIgdGhlIHJlc3VsdCB1c2luZyB0aGUgQ2hpbmVzZSBSZW1haW5kZXIgVGhlb3JlbS4KKworCitNdWx0aXBsaWNhdGlvbiBpbiBwc2V1ZG8tY29kZToKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisgIF9tcGRfZm50bXVsKHUsIHYpOgorICAgIGMxID0gZm50X2NvbnZvbHV0ZSh1LCB2LCBQMSkgICMgY29udm9sdXRlIG1vZHVsbyBwcmltZTEKKyAgICBjMiA9IGZudF9jb252b2x1dGUodSwgdiwgUDIpICAjIGNvbnZvbHV0ZSBtb2R1bG8gcHJpbWUyCisgICAgYzMgPSBmbnRfY29udm9sdXRlKHUsIHYsIFAzKSAgIyBjb252b2x1dGUgbW9kdWxvIHByaW1lMworICAgIHJlc3VsdCA9IGNydDMoYzEsIGMyLCBjMykgICAgICMgQ2hpbmVzZSBSZW1haW5kZXIgVGhlb3JlbQorCisKK09wdGltaXplZCB0cmFuc2Zvcm0gZnVuY3Rpb25zOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXJlIGFyZSB0aHJlZSBkaWZmZXJlbnQgZm50KCkgZnVuY3Rpb25zOgorCisgICBzdGRfZm50OiAic3RhbmRhcmQiIGRlY2ltYXRpb24gaW4gZnJlcXVlbmN5IHRyYW5zZm9ybSBmb3IgYXJyYXkgbGVuZ3RocworICAgICAgICAgICAgb2YgMioqbi4gUGVyZm9ybXMgd2VsbCB1cCB0byAxMDI0IHdvcmRzLgorCisgICBzaXhzdGVwOiBDYWNoZS1mcmllbmRseSBhbGdvcml0aG0gZm9yIGFycmF5IGxlbmd0aHMgb2YgMioqbi4gT3V0cGVyZm9ybXMKKyAgICAgICAgICAgIHN0ZF9mbnQgZm9yIGxhcmdlIGFycmF5cy4KKworICAgZm91cnN0ZXA6IEFsZ29yaXRobSBmb3IgYXJyYXkgbGVuZ3RocyBvZiAzICogMioqbi4gQWxzbyBjYWNoZSBmcmllbmRseQorICAgICAgICAgICAgIGluIGxhcmdlIHBhcnRzLgorCisKK0xpc3Qgb2YgYmlnbnVtLW9ubHkgZmlsZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGdW5jdGlvbnMgZnJvbSB0aGVzZSBmaWxlcyBhcmUgb25seSB1c2VkIGluIF9tcGRfZm50bXVsKCkuCisKKyAgdW1vZGFyaXRoLmggICAgLT4gZmFzdCBsb3cgbGV2ZWwgcm91dGluZXMgZm9yIHVuc2lnbmVkIG1vZHVsYXIgYXJpdGhtZXRpYworICBudW1iZXJ0aGVvcnkuYyAtPiByb3V0aW5lcyBmb3Igc2V0dGluZyB1cCB0aGUgRk5UCisgIGRpZnJhZGl4Mi5jICAgIC0+IGRlY2ltYXRpb24gaW4gZnJlcXVlbmN5IHRyYW5zZm9ybSwgdXNlZCBhcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgImJhc2UgY2FzZSIgYnkgdGhlIGZvbGxvd2luZyB0aHJlZSBmaWxlczoKKworICAgICAgZm50LmMgICAgICAgICAgLT4gc3RhbmRhcmQgdHJhbnNmb3JtIGZvciBzbWFsbGVyIGFycmF5cworICAgICAgc2l4c3RlcC5jICAgICAgLT4gdHJhbnNmb3JtIGxhcmdlIGFycmF5cyBvZiBsZW5ndGggMioqbgorICAgICAgZm91cnN0ZXAuYyAgICAgLT4gdHJhbnNmb3JtIGFycmF5cyBvZiBsZW5ndGggMyAqIDIqKm4KKworICBjb252b2x1dGUuYyAgICAtPiBkbyB0aGUgYWN0dWFsIGZhc3QgY29udm9sdXRpb24sIHVzaW5nIG9uZSBvZgorICAgICAgICAgICAgICAgICAgICB0aGUgdGhyZWUgdHJhbnNmb3JtIGZ1bmN0aW9ucy4KKyAgdHJhbnNwb3NlLmMgICAgLT4gdHJhbnNwb3NpdGlvbnMgbmVlZGVkIGZvciB0aGUgc2l4c3RlcCBhbGdvcml0aG0uCisgIGNydC5jICAgICAgICAgIC0+IENoaW5lc2UgUmVtYWluZGVyIFRoZW9yZW06IHVzZSBpbmZvcm1hdGlvbiBmcm9tIHRocmVlCisgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybXMgbW9kdWxvIHRocmVlIGRpZmZlcmVudCBwcmltZXMgdG8gZ2V0IHRoZQorICAgICAgICAgICAgICAgICAgICBmaW5hbCByZXN1bHQuCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvZm50LnB5IGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL2ZudC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjkzNzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL2ZudC5weQpAQCAtMCwwICsxLDIwOCBAQAorIworIyBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisjIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisjIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisjIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisjIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyMgU1VDSCBEQU1BR0UuCisjCisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgVGhpcyBmaWxlIGxpc3RzIGFuZCBjaGVja3Mgc29tZSBvZiB0aGUgY29uc3RhbnRzIGFuZCBsaW1pdHMgdXNlZCAgIworIyAgaW4gbGlibXBkZWMncyBOdW1iZXIgVGhlb3JldGljIFRyYW5zZm9ybS4gQXQgdGhlIGVuZCBvZiB0aGUgZmlsZSAgIworIyAgdGhlcmUgaXMgYW4gZXhhbXBsZSBmdW5jdGlvbiBmb3IgdGhlIHBsYWluIERGVCB0cmFuc2Zvcm0uICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisKKyMKKyMgTnVtYmVyIHRoZW9yZXRpYyB0cmFuc2Zvcm1zIGFyZSBkb25lIGluIHN1YmZpZWxkcyBvZiBGKHApLiBQW2ldCisjIGFyZSB0aGUgcHJpbWVzLCBEW2ldID0gUFtpXSAtIDEgYXJlIGhpZ2hseSBjb21wb3NpdGUgYW5kIHdbaV0KKyMgYXJlIHRoZSByZXNwZWN0aXZlIHByaW1pdGl2ZSByb290cyBvZiBGKHApLgorIworIyBUaGUgc3RyYXRlZ3kgaXMgdG8gY29udm9sdXRlIHR3byBjb2VmZmljaWVudHMgbW9kdWxvIGFsbCB0aHJlZQorIyBwcmltZXMsIHRoZW4gdXNlIHRoZSBDaGluZXNlIFJlbWFpbmRlciBUaGVvcmVtIG9uIHRoZSB0aHJlZQorIyByZXN1bHQgYXJyYXlzIHRvIHJlY292ZXIgdGhlIHJlc3VsdCBpbiB0aGUgdXN1YWwgYmFzZSBSQURJWAorIyBmb3JtLgorIworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmUgcm9vdHMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjCisjIFZlcmlmeSBwcmltaXRpdmUgcm9vdHM6CisjCisjIEZvciBhIHByaW1lIGZpZWxkLCByIGlzIGEgcHJpbWl0aXZlIHJvb3QgaWYgYW5kIG9ubHkgaWYgZm9yIGFsbCBwcmltZQorIyBmYWN0b3JzIGYgb2YgcC0xLCByKiooKHAtMSkvZikgPS89IDEgIChtb2QgcCkuCisjCitkZWYgcHJvZChGLCBFKToKKyAgICAiIiJDaGVjayB0aGF0IHRoZSBmYWN0b3JpemF0aW9uIG9mIFAtMSBpcyBjb3JyZWN0LiBGIGlzIHRoZSBsaXN0IG9mCisgICAgICAgZmFjdG9ycyBvZiBQLTEsIEUgbGlzdHMgdGhlIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiBlYWNoIGZhY3Rvci4iIiIKKyAgICB4ID0gMQorICAgIGZvciB5LCB6IGluIHppcChGLCBFKToKKyAgICAgICAgeCAqPSB5Kip6CisgICAgcmV0dXJuIHgKKworZGVmIGlzX3ByaW1pdGl2ZV9yb290KHIsIHAsIGZhY3RvcnMsIGV4cG9uZW50cyk6CisgICAgIiIiQ2hlY2sgaWYgciBpcyBhIHByaW1pdGl2ZSByb290IG9mIEYocCkuIiIiCisgICAgaWYgcCAhPSBwcm9kKGZhY3RvcnMsIGV4cG9uZW50cykgKyAxOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBmb3IgZiBpbiBmYWN0b3JzOgorICAgICAgICBxLCBjb250cm9sID0gZGl2bW9kKHAtMSwgZikKKyAgICAgICAgaWYgY29udHJvbCAhPSAwOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIHBvdyhyLCBxLCBwKSA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIFRydWUKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgICAgICAgIENvbnN0YW50cyBhbmQgbGltaXRzIGZvciB0aGUgNjQtYml0IHZlcnNpb24KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUkFESVggPSAxMCoqMTkKKworIyBQcmltZXMgUDEsIFAyIGFuZCBQMzoKK1AgPSBbMioqNjQtMioqMzIrMSwgMioqNjQtMioqMzQrMSwgMioqNjQtMioqNDArMV0KKworIyBQLTEsIGhpZ2hseSBjb21wb3NpdGUuIFRoZSB0cmFuc2Zvcm0gbGVuZ3RoIGQgaXMgdmFyaWFibGUgYW5kCisjIG11c3QgZGl2aWRlIEQgPSBQLTEuIFNpbmNlIGFsbCBEIGFyZSBkaXZpc2libGUgYnkgMyAqIDIqKjMyLAorIyB0cmFuc2Zvcm0gbGVuZ3RocyBjYW4gYmUgMioqbiBvciAzICogMioqbiAod2hlcmUgbiA8PSAzMikuCitEID0gWzIqKjMyICogMyAgICAqICg1ICogMTcgKiAyNTcgKiA2NTUzNyksCisgICAgIDIqKjM0ICogMyoqMiAqICg3ICogMTEgKiAzMSAqIDE1MSAqIDMzMSksCisgICAgIDIqKjQwICogMyoqMiAqICg1ICogNyAqIDEzICogMTcgKiAyNDEpXQorCisjIFByaW1lIGZhY3RvcnMgb2YgUC0xIGFuZCB0aGVpciBleHBvbmVudHM6CitGID0gWygyLDMsNSwxNywyNTcsNjU1MzcpLCAoMiwzLDcsMTEsMzEsMTUxLDMzMSksICgyLDMsNSw3LDEzLDE3LDI0MSldCitFID0gWygzMiwxLDEsMSwxLDEpLCAoMzQsMiwxLDEsMSwxLDEpLCAoNDAsMiwxLDEsMSwxLDEpXQorCisjIE1heGltdW0gdHJhbnNmb3JtIGxlbmd0aCBmb3IgMioqbi4gQWJvdmUgdGhhdCBvbmx5IDMgKiAyKiozMQorIyBvciAzICogMioqMzIgYXJlIHBvc3NpYmxlLgorTVBEX01BWFRSQU5TRk9STV8yTiA9IDIqKjMyCisKKworIyBMaW1pdHMgaW4gdGhlIHRlcm1pbm9sb2d5IG9mIFBvbGxhcmQncyBwYXBlcjoKK20yID0gKE1QRF9NQVhUUkFOU0ZPUk1fMk4gKiAzKSAvLyAyICMgTWF4aW11bSBsZW5ndGggb2YgdGhlIHNtYWxsZXIgYXJyYXkuCitNMSA9IE0yID0gUkFESVgtMSAgICAgICAgICAgICAgICAgICAjIE1heGltdW0gdmFsdWUgcGVyIHNpbmdsZSB3b3JkLgorTCA9IG0yICogTTEgKiBNMgorUFswXSAqIFBbMV0gKiBQWzJdID4gMiAqIEwKKworCisjIFByaW1pdGl2ZSByb290cyBvZiBGKFAxKSwgRihQMikgYW5kIEYoUDMpOgordyA9IFs3LCAxMCwgMTldCisKKyMgVGhlIHByaW1pdGl2ZSByb290cyBhcmUgY29ycmVjdDoKK2ZvciBpIGluIHJhbmdlKDMpOgorICAgIGlmIG5vdCBpc19wcmltaXRpdmVfcm9vdCh3W2ldLCBQW2ldLCBGW2ldLCBFW2ldKToKKyAgICAgICAgcHJpbnQoIkZBSUwiKQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgQ29uc3RhbnRzIGFuZCBsaW1pdHMgZm9yIHRoZSAzMi1iaXQgdmVyc2lvbgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSQURJWCA9IDEwKio5CisKKyMgUHJpbWVzIFAxLCBQMiBhbmQgUDM6CitQID0gWzIxMTM5MjkyMTcsIDIwMTMyNjU5MjEsIDE4MTE5MzkzMjldCisKKyMgUC0xLCBoaWdobHkgY29tcG9zaXRlLiBBbGwgRCA9IFAtMSBhcmUgZGl2aXNpYmxlIGJ5IDMgKiAyKioyNSwKKyMgYWxsb3dpbmcgZm9yIHRyYW5zZm9ybSBsZW5ndGhzIHVwIHRvIDMgKiAyKioyNSB3b3Jkcy4KK0QgPSBbMioqMjUgKiAzKioyICogNywKKyAgICAgMioqMjcgKiAzICAgICogNSwKKyAgICAgMioqMjYgKiAzKiozXQorCisjIFByaW1lIGZhY3RvcnMgb2YgUC0xIGFuZCB0aGVpciBleHBvbmVudHM6CitGID0gWygyLDMsNyksICgyLDMsNSksICgyLDMpXQorRSA9IFsoMjUsMiwxKSwgKDI3LDEsMSksICgyNiwzKV0KKworIyBNYXhpbXVtIHRyYW5zZm9ybSBsZW5ndGggZm9yIDIqKm4uIEFib3ZlIHRoYXQgb25seSAzICogMioqMjQgb3IKKyMgMyAqIDIqKjI1IGFyZSBwb3NzaWJsZS4KK01QRF9NQVhUUkFOU0ZPUk1fMk4gPSAyKioyNQorCisKKyMgTGltaXRzIGluIHRoZSB0ZXJtaW5vbG9neSBvZiBQb2xsYXJkJ3MgcGFwZXI6CittMiA9IChNUERfTUFYVFJBTlNGT1JNXzJOICogMykgLy8gMiAjIE1heGltdW0gbGVuZ3RoIG9mIHRoZSBzbWFsbGVyIGFycmF5LgorTTEgPSBNMiA9IFJBRElYLTEgICAgICAgICAgICAgICAgICAgIyBNYXhpbXVtIHZhbHVlIHBlciBzaW5nbGUgd29yZC4KK0wgPSBtMiAqIE0xICogTTIKK1BbMF0gKiBQWzFdICogUFsyXSA+IDIgKiBMCisKKworIyBQcmltaXRpdmUgcm9vdHMgb2YgRihQMSksIEYoUDIpIGFuZCBGKFAzKToKK3cgPSBbNSwgMzEsIDEzXQorCisjIFRoZSBwcmltaXRpdmUgcm9vdHMgYXJlIGNvcnJlY3Q6Citmb3IgaSBpbiByYW5nZSgzKToKKyAgICBpZiBub3QgaXNfcHJpbWl0aXZlX3Jvb3Qod1tpXSwgUFtpXSwgRltpXSwgRVtpXSk6CisgICAgICAgIHByaW50KCJGQUlMIikKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgIEV4YW1wbGUgdHJhbnNmb3JtIHVzaW5nIGEgc2luZ2xlIHByaW1lCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworZGVmIG50dChsc3QsIGRpcik6CisgICAgIiIiUGVyZm9ybSBhIHRyYW5zZm9ybSBvbiB0aGUgZWxlbWVudHMgb2YgbHN0LiBsZW4obHN0KSBtdXN0CisgICAgICAgYmUgMioqbiBvciAzICogMioqbiwgd2hlcmUgbiA8PSAyNS4gVGhpcyBpcyB0aGUgc2xvdyBERlQuIiIiCisgICAgcCA9IDIxMTM5MjkyMTcgICAgICAgICAgICAgIyBwcmltZQorICAgIGQgPSBsZW4obHN0KSAgICAgICAgICAgICAgICMgdHJhbnNmb3JtIGxlbmd0aAorICAgIGRfcHJpbWUgPSBwb3coZCwgKHAtMiksIHApICMgaW52ZXJzZSBvZiBkCisgICAgeGkgPSAocC0xKS8vZAorICAgIHcgPSA1ICAgICAgICAgICAgICAgICAgICAgICAgICMgcHJpbWl0aXZlIHJvb3Qgb2YgRihwKQorICAgIHIgPSBwb3codywgeGksIHApICAgICAgICAgICAgICMgcHJpbWl0aXZlIHJvb3Qgb2YgdGhlIHN1YmZpZWxkCisgICAgcl9wcmltZSA9IHBvdyh3LCAocC0xLXhpKSwgcCkgIyBpbnZlcnNlIG9mIHIKKyAgICBpZiBkaXIgPT0gMTogICAgICAjIGZvcndhcmQgdHJhbnNmb3JtCisgICAgICAgIGEgPSBsc3QgICAgICAgIyBpbnB1dCBhcnJheQorICAgICAgICBBID0gWzBdICogZCAgICMgdHJhbnNmb3JtZWQgdmFsdWVzCisgICAgICAgIGZvciBpIGluIHJhbmdlKGQpOgorICAgICAgICAgICAgcyA9IDAKKyAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKGQpOgorICAgICAgICAgICAgICAgIHMgKz0gYVtqXSAqIHBvdyhyLCBpKmosIHApCisgICAgICAgICAgICBBW2ldID0gcyAlIHAKKyAgICAgICAgcmV0dXJuIEEKKyAgICBlbGlmIGRpciA9PSAtMTogIyBiYWNrd2FyZCB0cmFuc2Zvcm0KKyAgICAgICAgQSA9IGxzdCAgICAgIyBpbnB1dCBhcnJheQorICAgICAgICBhID0gWzBdICogZCAjIHRyYW5zZm9ybWVkIHZhbHVlcworICAgICAgICBmb3IgaiBpbiByYW5nZShkKToKKyAgICAgICAgICAgIHMgPSAwCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShkKToKKyAgICAgICAgICAgICAgICBzICs9IEFbaV0gKiBwb3cocl9wcmltZSwgaSpqLCBwKQorICAgICAgICAgICAgYVtqXSA9IChkX3ByaW1lICogcykgJSBwCisgICAgICAgIHJldHVybiBhCisKK2RlZiBudHRfY29udm9sdXRlKGEsIGIpOgorICAgICIiImNvbnZvbHV0ZSBhcnJheXMgYSBhbmQgYi4iIiIKKyAgICBhc3NlcnQobGVuKGEpID09IGxlbihiKSkKKyAgICB4ID0gbnR0KGEsIDEpCisgICAgeSA9IG50dChiLCAxKQorICAgIGZvciBpIGluIHJhbmdlKGxlbihhKSk6CisgICAgICAgIHlbaV0gPSB5W2ldICogeFtpXQorICAgIHIgPSBudHQoeSwgLTEpCisgICAgcmV0dXJuIHIKKworCisjIEV4YW1wbGU6IFR3byBhcnJheXMgcmVwcmVzZW50aW5nIDIxIGFuZCA4MSBpbiBsaXR0bGUtZW5kaWFuOgorYSA9IFsxLCAyLCAwLCAwXQorYiA9IFsxLCA4LCAwLCAwXQorCithc3NlcnQobnR0X2NvbnZvbHV0ZShhLCBiKSA9PSBbMSwgICAgICAgIDEwLCAgICAgICAgMTYsICAgICAgICAwXSkKK2Fzc2VydCgyMSAqIDgxICAgICAgICAgICAgID09ICgxKjEwKiowICsgMTAqMTAqKjEgKyAxNioxMCoqMiArIDAqMTAqKjMpKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL21hdHJpeC10cmFuc2Zvcm0udHh0IGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL21hdHJpeC10cmFuc2Zvcm0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwMWQ4NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvbWF0cml4LXRyYW5zZm9ybS50eHQKQEAgLTAsMCArMSwyNTYgQEAKKworCisoKiBDb3B5cmlnaHQgKGMpIDIwMTEgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuICopCisKKworVGhlIE1hdHJpeCBGb3VyaWVyIFRyYW5zZm9ybToKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0luIGxpYm1wZGVjLCB0aGUgTWF0cml4IEZvdXJpZXIgVHJhbnNmb3JtIFsxXSBpcyBjYWxsZWQgZm91ci1zdGVwIHRyYW5zZm9ybQorYWZ0ZXIgYSB2YXJpYW50IHRoYXQgYXBwZWFycyBpbiBbMl0uIFRoZSBhbGdvcml0aG0gcmVxdWlyZXMgdGhhdCB0aGUgaW5wdXQKK2FycmF5IGNhbiBiZSB2aWV3ZWQgYXMgYW4gUipDIG1hdHJpeC4KKworQWxsIG9wZXJhdGlvbnMgYXJlIGRvbmUgbW9kdWxvIHAuIEZvciByZWFkYWJpbGl0eSwgdGhlIHByb29mcyBkcm9wIGFsbAoraW5zdGFuY2VzIG9mIChtb2QgcCkuCisKKworQWxnb3JpdGhtIGZvdXItc3RlcCAoZm9yd2FyZCB0cmFuc2Zvcm0pOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIGEgOj0gaW5wdXQgYXJyYXkKKyAgZCA6PSBsZW4oYSkgPSBSICogQworICBwIDo9IHByaW1lCisgIHcgOj0gcHJpbWl0aXZlIHJvb3Qgb2YgdW5pdHkgb2YgdGhlIHByaW1lIGZpZWxkCisgIHIgOj0gdyoqKChwLTEpL2QpCisgIEEgOj0gb3V0cHV0IGFycmF5CisKKyAgMSkgQXBwbHkgYSBsZW5ndGggUiBGTlQgdG8gZWFjaCBjb2x1bW4uCisKKyAgMikgTXVsdGlwbHkgZWFjaCBtYXRyaXggZWxlbWVudCAoYWRkcmVzc2VkIGJ5IGoqQyttKSBieSByKiooaiptKS4KKworICAzKSBBcHBseSBhIGxlbmd0aCBDIEZOVCB0byBlYWNoIHJvdy4KKworICA0KSBUcmFuc3Bvc2UgdGhlIG1hdHJpeC4KKworCitQcm9vZiAoZm9yd2FyZCB0cmFuc2Zvcm0pOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGUgYWxnb3JpdGhtIGNhbiBiZSBkZXJpdmVkIHN0YXJ0aW5nIGZyb20gdGhlIHJlZ3VsYXIgZGVmaW5pdGlvbiBvZgorICB0aGUgZmluaXRlLWZpZWxkIHRyYW5zZm9ybSBvZiBsZW5ndGggZDoKKworICAgICAgICAgICAgZC0xCisgICAgICAgICAgICwtLS0tCisgICAgICAgICAgIFwKKyAgICBBW2tdID0gIHwgIGFbbF0gICogcioqKGsgKiBsKQorICAgICAgICAgICAvCisgICAgICAgICAgIGAtLS0tCisgICAgICAgICAgIGwgPSAwCisKKworICBUaGUgc3VtIGNhbiBiZSByZWFycmFuZ2VkIGludG8gdGhlIHN1bSBvZiB0aGUgc3VtcyBvZiBjb2x1bW5zOgorCisgICAgICAgICAgICBDLTEgICAgIFItMQorICAgICAgICAgICAsLS0tLSAgICwtLS0tCisgICAgICAgICAgIFwgICAgICAgXAorICAgICAgICAgPSAgfCAgICAgICB8ICBhW2kgKiBDICsgal0gKiByKiooayAqIChpICogQyArIGopKQorICAgICAgICAgICAvICAgICAgIC8KKyAgICAgICAgICAgYC0tLS0gICBgLS0tLQorICAgICAgICAgICBqID0gMCAgIGkgPSAwCisKKworICBFeHRyYWN0aW5nIGEgY29uc3RhbnQgZnJvbSB0aGUgaW5uZXIgc3VtOgorCisgICAgICAgICAgICBDLTEgICAgICAgICAgIFItMQorICAgICAgICAgICAsLS0tLSAgICAgICAgICwtLS0tCisgICAgICAgICAgIFwgICAgICAgICAgICAgXAorICAgICAgICAgPSAgfCAgcioqaypqICAqICB8ICBhW2kgKiBDICsgal0gKiByKiooayAqIGkgKiBDKQorICAgICAgICAgICAvICAgICAgICAgICAgIC8KKyAgICAgICAgICAgYC0tLS0gICAgICAgICBgLS0tLQorICAgICAgICAgICBqID0gMCAgICAgICAgIGkgPSAwCisKKworICBXaXRob3V0IGFueSBsb3NzIG9mIGdlbmVyYWxpdHksIGxldCBrID0gbiAqIFIgKyBtLAorICB3aGVyZSBuIDwgQyBhbmQgbSA8IFI6CisKKyAgICAgICAgICAgICAgICBDLTEgICAgICAgICAgICAgICAgICAgICAgICAgIFItMQorICAgICAgICAgICAgICAgLC0tLS0gICAgICAgICAgICAgICAgICAgICAgICAsLS0tLQorICAgICAgICAgICAgICAgXCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQVtuKlIrbV0gPSAgfCAgcioqKFIqbipqKSAqIHIqKihtKmopICAqICB8ICBhW2kqQytqXSAqIHIqKihSKkMqbippKSAqIHIqKihDKm0qaSkKKyAgICAgICAgICAgICAgIC8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLworICAgICAgICAgICAgICAgYC0tLS0gICAgICAgICAgICAgICAgICAgICAgICBgLS0tLQorICAgICAgICAgICAgICAgaiA9IDAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMAorCisKKyAgU2luY2UgciA9IHcgKiogKChwLTEpIC8gKFIqQykpOgorCisgICAgIGEpIHIqKihSKkMqbippKSA9IHcqKigocC0xKSpuKmkpID0gMQorCisgICAgIGIpIHIqKihDKm0qaSkgPSB3KiooKHAtMSkgLyBSKSAqKiAobSppKSA9IHJfUiAqKiAobSppKQorCisgICAgIGMpIHIqKihSKm4qaikgPSB3KiooKHAtMSkgLyBDKSAqKiAobipqKSA9IHJfQyAqKiAobipqKQorCisgICAgIHJfUiA6PSByb290IG9mIHRoZSBzdWJmaWVsZCBvZiBsZW5ndGggUi4KKyAgICAgcl9DIDo9IHJvb3Qgb2YgdGhlIHN1YmZpZWxkIG9mIGxlbmd0aCBDLgorCisKKyAgICAgICAgICAgICAgICBDLTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFItMQorICAgICAgICAgICAgICAgLC0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAsLS0tLQorICAgICAgICAgICAgICAgXCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQVtuKlIrbV0gPSAgfCAgcl9DKioobipqKSAqIFsgcioqKG0qaikgICogICB8ICBhW2kqQytqXSAqIHJfUioqKG0qaSkgXQorICAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAvCisgICAgICAgICAgICAgICBgLS0tLSAgICAgICAgICAgICAgICAgfCAgICAgICAgIGAtLS0tICAgIDEpIHRyYW5zZm9ybSB0aGUgY29sdW1ucworICAgICAgICAgICAgICAgaiA9IDAgICAgICAgICAgICAgICAgIHwgICAgICAgICBpID0gMAorICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICBgLS0gMikgbXVsdGlwbHkKKyAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICBgLS0gMykgdHJhbnNmb3JtIHRoZSByb3dzCisKKworICAgTm90ZSB0aGF0IHRoZSBlbnRpcmUgUkhTIGlzIGEgZnVuY3Rpb24gb2YgbiBhbmQgbSBhbmQgdGhhdCB0aGUgcmVzdWx0cworICAgZm9yIGVhY2ggcGFpciAobiwgbSkgYXJlIHN0b3JlZCBpbiBGb3J0cmFuIG9yZGVyLgorCisgICBMZXQgdGhlIHRlcm0gaW4gc3F1YXJlIGJyYWNrZXRzIGJlIGYobSwgaikuIFN0ZXAgMSkgYW5kIDIpIHByZWNhbGN1bGF0ZQorICAgdGhlIHRlcm0gZm9yIGFsbCAobSwgaikuIEFmdGVyIHRoYXQsIHRoZSBvcmlnaW5hbCBtYXRyaXggaXMgbm93IGEgbG9va3VwCisgICB0YWJsZSB3aXRoIHRoZSBtdGggZWxlbWVudCBpbiB0aGUganRoIGNvbHVtbiBhdCBsb2NhdGlvbiBtICogQyArIGouCisKKyAgIExldCB0aGUgY29tcGxldGUgUkhTIGJlIGcobSwgbikuIFN0ZXAgMykgZG9lcyBhbiBpbi1wbGFjZSB0cmFuc2Zvcm0gb2YKKyAgIGxlbmd0aCBuIG9uIGFsbCByb3dzLiBBZnRlciB0aGF0LCB0aGUgb3JpZ2luYWwgbWF0cml4IGlzIG5vdyBhIGxvb2t1cAorICAgdGFibGUgd2l0aCB0aGUgbXRoIGVsZW1lbnQgaW4gdGhlIG50aCBjb2x1bW4gYXQgbG9jYXRpb24gbSAqIEMgKyBuLgorCisgICBCdXQgZWFjaCAobSwgbikgcGFpciBzaG91bGQgYmUgd3JpdHRlbiB0byBsb2NhdGlvbiBuICogUiArIG0uIFRoZXJlZm9yZSwKKyAgIHN0ZXAgNCkgdHJhbnNwb3NlcyB0aGUgcmVzdWx0IG9mIHN0ZXAgMykuCisKKworCitBbGdvcml0aG0gZm91ci1zdGVwIChpbnZlcnNlIHRyYW5zZm9ybSk6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgQSAgOj0gaW5wdXQgYXJyYXkKKyAgZCAgOj0gbGVuKEEpID0gUiAqIEMKKyAgcCAgOj0gcHJpbWUKKyAgZCcgOj0gZCoqKHAtMikgICAgICAgICAgICAgIyBpbnZlcnNlIG9mIGQKKyAgdyAgOj0gcHJpbWl0aXZlIHJvb3Qgb2YgdW5pdHkgb2YgdGhlIHByaW1lIGZpZWxkCisgIHIgIDo9IHcqKigocC0xKS9kKSAgICAgICAgICMgcm9vdCBvZiB0aGUgc3ViZmllbGQKKyAgcicgOj0gdyoqKChwLTEpIC0gKHAtMSkvZCkgIyBpbnZlcnNlIG9mIHIKKyAgYSAgOj0gb3V0cHV0IGFycmF5CisKKyAgMCkgVmlldyB0aGUgbWF0cml4IGFzIGEgQypSIG1hdHJpeC4KKworICAxKSBUcmFuc3Bvc2UgdGhlIG1hdHJpeCwgcHJvZHVjaW5nIGFuIFIqQyBtYXRyaXguCisKKyAgMikgQXBwbHkgYSBsZW5ndGggQyBGTlQgdG8gZWFjaCByb3cuCisKKyAgMykgTXVsdGlwbHkgZWFjaCBtYXRyaXggZWxlbWVudCAoYWRkcmVzc2VkIGJ5IGkqQytuKSBieSByKiooaSpuKS4KKworICA0KSBBcHBseSBhIGxlbmd0aCBSIEZOVCB0byBlYWNoIGNvbHVtbi4KKworCitQcm9vZiAoaW52ZXJzZSB0cmFuc2Zvcm0pOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGUgYWxnb3JpdGhtIGNhbiBiZSBkZXJpdmVkIHN0YXJ0aW5nIGZyb20gdGhlIHJlZ3VsYXIgZGVmaW5pdGlvbiBvZgorICB0aGUgZmluaXRlLWZpZWxkIGludmVyc2UgdHJhbnNmb3JtIG9mIGxlbmd0aCBkOgorCisgICAgICAgICAgICAgICAgICBkLTEKKyAgICAgICAgICAgICAgICAgLC0tLS0KKyAgICAgICAgICAgICAgICAgXAorICAgIGFba10gPSAgZCcgKiAgfCAgQVtsXSAgKiByJyAqKiAoayAqIGwpCisgICAgICAgICAgICAgICAgIC8KKyAgICAgICAgICAgICAgICAgYC0tLS0KKyAgICAgICAgICAgICAgICAgbCA9IDAKKworCisgIFRoZSBzdW0gY2FuIGJlIHJlYXJyYW5nZWQgaW50byB0aGUgc3VtIG9mIHRoZSBzdW1zIG9mIGNvbHVtbnMuIE5vdGUKKyAgdGhhdCBhdCB0aGlzIHN0YWdlIHdlIHN0aWxsIGhhdmUgYSBDKlIgbWF0cml4LCBzbyBDIGRlbm90ZXMgdGhlIG51bWJlcgorICBvZiByb3dzOgorCisgICAgICAgICAgICAgICAgICBSLTEgICAgIEMtMQorICAgICAgICAgICAgICAgICAsLS0tLSAgICwtLS0tCisgICAgICAgICAgICAgICAgIFwgICAgICAgXAorICAgICAgICAgPSAgZCcgKiAgfCAgICAgICB8ICBhW2ogKiBSICsgaV0gKiByJyAqKiAoayAqIChqICogUiArIGkpKQorICAgICAgICAgICAgICAgICAvICAgICAgIC8KKyAgICAgICAgICAgICAgICAgYC0tLS0gICBgLS0tLQorICAgICAgICAgICAgICAgICBpID0gMCAgIGogPSAwCisKKworICBFeHRyYWN0aW5nIGEgY29uc3RhbnQgZnJvbSB0aGUgaW5uZXIgc3VtOgorCisgICAgICAgICAgICAgICAgICBSLTEgICAgICAgICAgICAgICAgQy0xCisgICAgICAgICAgICAgICAgICwtLS0tICAgICAgICAgICAgICAsLS0tLQorICAgICAgICAgICAgICAgICBcICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgPSAgZCcgKiAgfCAgcicgKiogKGsqaSkgICogIHwgIGFbaiAqIFIgKyBpXSAqIHInICoqIChrICogaiAqIFIpCisgICAgICAgICAgICAgICAgIC8gICAgICAgICAgICAgICAgICAvCisgICAgICAgICAgICAgICAgIGAtLS0tICAgICAgICAgICAgICBgLS0tLQorICAgICAgICAgICAgICAgICBpID0gMCAgICAgICAgICAgICAgaiA9IDAKKworCisgIFdpdGhvdXQgYW55IGxvc3Mgb2YgZ2VuZXJhbGl0eSwgbGV0IGsgPSBtICogQyArIG4sCisgIHdoZXJlIG0gPCBSIGFuZCBuIDwgQzoKKworICAgICAgICAgICAgICAgICAgICAgUi0xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMtMQorICAgICAgICAgICAgICAgICAgICAsLS0tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLC0tLS0KKyAgICAgICAgICAgICAgICAgICAgXCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBBW20qQytuXSA9IGQnICogIHwgIHInICoqIChDKm0qaSkgKiAgcicgKiogKG4qaSkgICAqICB8ICBhW2oqUitpXSAqIHInICoqIChSKkMqbSpqKSAqIHInICoqIChSKm4qaikKKyAgICAgICAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8KKyAgICAgICAgICAgICAgICAgICAgYC0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAtLS0tCisgICAgICAgICAgICAgICAgICAgIGkgPSAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gMAorCisKKyAgU2luY2UgcicgPSB3KiooKHAtMSkgLSAocC0xKS9kKSBhbmQgZCA9IFIqQzoKKworICAgICBhKSByJyAqKiAoUipDKm0qaikgPSB3KiooKHAtMSkqUipDKm0qaiAtIChwLTEpKm0qaikgPSAxCisKKyAgICAgYikgcicgKiogKEMqbSppKSA9IHcqKigocC0xKSpDIC0gKHAtMSkvUikgKiogKG0qaSkgPSByX1InICoqIChtKmkpCisKKyAgICAgYykgcicgKiogKFIqbipqKSA9IHJfQycgKiogKG4qaikKKworICAgICBkKSBkJyA9IGQqKihwLTIpID0gKFIqQykgKiogKHAtMikgPSBSKioocC0yKSAqIEMqKihwLTIpID0gUicgKiBDJworCisgICAgIHJfUicgOj0gaW52ZXJzZSBvZiB0aGUgcm9vdCBvZiB0aGUgc3ViZmllbGQgb2YgbGVuZ3RoIFIuCisgICAgIHJfQycgOj0gaW52ZXJzZSBvZiB0aGUgcm9vdCBvZiB0aGUgc3ViZmllbGQgb2YgbGVuZ3RoIEMuCisgICAgIFInICAgOj0gaW52ZXJzZSBvZiBSCisgICAgIEMnICAgOj0gaW52ZXJzZSBvZiBDCisKKworICAgICAgICAgICAgICAgICAgICAgUi0xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDLTEKKyAgICAgICAgICAgICAgICAgICAgLC0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsLS0tLSAgMikgdHJhbnNmb3JtIHRoZSByb3dzIG9mIGFeVAorICAgICAgICAgICAgICAgICAgICBcICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBBW20qQytuXSA9IFInICogIHwgIHJfUicgKiogKG0qaSkgKiBbIHInICoqIChuKmkpICogQycgKiAgfCAgYVtqKlIraV0gKiByX0MnICoqIChuKmopIF0KKyAgICAgICAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAvICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgYC0tLS0gICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICBgLS0tLSAgIHwKKyAgICAgICAgICAgICAgICAgICAgaSA9IDAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICBqID0gMCAgIHwKKyAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIGAtLSAxKSBUcmFuc3Bvc2UgaW5wdXQgbWF0cml4CisgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBgLS0gMykgbXVsdGlwbHkgICAgICAgICAgICAgdG8gYWRkcmVzcyBlbGVtZW50cyBieQorICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKiBDICsgagorICAgICAgICAgICAgICAgICAgICAgIGAtLSAzKSB0cmFuc2Zvcm0gdGhlIGNvbHVtbnMKKworCisKKyAgIE5vdGUgdGhhdCB0aGUgZW50aXJlIFJIUyBpcyBhIGZ1bmN0aW9uIG9mIG0gYW5kIG4gYW5kIHRoYXQgdGhlIHJlc3VsdHMKKyAgIGZvciBlYWNoIHBhaXIgKG0sIG4pIGFyZSBzdG9yZWQgaW4gQyBvcmRlci4KKworICAgTGV0IHRoZSB0ZXJtIGluIHNxdWFyZSBicmFja2V0cyBiZSBmKG4sIGkpLiBXaXRob3V0IHN0ZXAgMSksIHRoZSBzdW0KKyAgIHdvdWxkIHBlcmZvcm0gYSBsZW5ndGggQyB0cmFuc2Zvcm0gb24gdGhlIGNvbHVtbnMgb2YgdGhlIGlucHV0IG1hdHJpeC4KKyAgIFRoaXMgaXMgYSkgaW5lZmZpY2llbnQgYW5kIGIpIHRoZSByZXN1bHRzIGFyZSBuZWVkZWQgaW4gQyBvcmRlciwgc28KKyAgIHN0ZXAgMSkgZXhjaGFuZ2VzIHJvd3MgYW5kIGNvbHVtbnMuCisKKyAgIFN0ZXAgMikgYW5kIDMpIHByZWNhbGN1bGF0ZSBmKG4sIGkpIGZvciBhbGwgKG4sIGkpLiBBZnRlciB0aGF0LCB0aGUKKyAgIG9yaWdpbmFsIG1hdHJpeCBpcyBub3cgYSBsb29rdXAgdGFibGUgd2l0aCB0aGUgaXRoIGVsZW1lbnQgaW4gdGhlIG50aAorICAgY29sdW1uIGF0IGxvY2F0aW9uIGkgKiBDICsgbi4KKworICAgTGV0IHRoZSBjb21wbGV0ZSBSSFMgYmUgZyhtLCBuKS4gU3RlcCA0KSBkb2VzIGFuIGluLXBsYWNlIHRyYW5zZm9ybSBvZgorICAgbGVuZ3RoIG0gb24gYWxsIGNvbHVtbnMuIEFmdGVyIHRoYXQsIHRoZSBvcmlnaW5hbCBtYXRyaXggaXMgbm93IGEgbG9va3VwCisgICB0YWJsZSB3aXRoIHRoZSBtdGggZWxlbWVudCBpbiB0aGUgbnRoIGNvbHVtbiBhdCBsb2NhdGlvbiBtICogQyArIG4sCisgICB3aGljaCBtZWFucyB0aGF0IGFsbCBBW2tdID0gQVttICogQyArIG5dIGFyZSBpbiB0aGUgY29ycmVjdCBvcmRlci4KKworCistLQorCisgIFsxXSBKb2VyZyBBcm5kdDogIk1hdHRlcnMgQ29tcHV0YXRpb25hbCIKKyAgICAgIGh0dHA6Ly93d3cuampqLmRlL2Z4dC8KKyAgWzJdIERhdmlkIEguIEJhaWxleTogRkZUcyBpbiBFeHRlcm5hbCBvciBIaWVyYXJjaGljYWwgTWVtb3J5CisgICAgICBodHRwOi8vY3JkLmxibC5nb3YvfmRoYmFpbGV5L2RoYnBhcGVycy8KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9tdWxtb2QtNjQudHh0IGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL211bG1vZC02NC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNiZjIyZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9tdWxtb2QtNjQudHh0CkBAIC0wLDAgKzEsMTI3IEBACisKKworKCogQ29weXJpZ2h0IChjKSAyMDExIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAqKQorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAgICAgICAgICAgQ2FsY3VsYXRlIChhICogYikgJSBwIHVzaW5nIHNwZWNpYWwgcHJpbWVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBIGRlc2NyaXB0aW9uIG9mIHRoZSBhbGdvcml0aG0gY2FuIGJlIGZvdW5kIGluIHRoZSBhcGZsb2F0IG1hbnVhbCBieQorVG9tbWlsYSBbMV0uCisKKworRGVmaW5pdGlvbnM6CistLS0tLS0tLS0tLS0KKworSW4gdGhlIHdob2xlIGRvY3VtZW50LCAiPT0iIHN0YW5kcyBmb3IgImlzIGNvbmdydWVudCB3aXRoIi4KKworUmVzdWx0IG9mIGEgKiBiIGluIHRlcm1zIG9mIGhpZ2gvbG93IHdvcmRzOgorCisgICAoMSkgaGkgKiAyKio2NCArIGxvID0gYSAqIGIKKworU3BlY2lhbCBwcmltZXM6CisKKyAgICgyKSBwID0gMioqNjQgLSB6ICsgMSwgd2hlcmUgeiA9IDIqKm4KKworU2luZ2xlIHN0ZXAgbW9kdWxhciByZWR1Y3Rpb246CisKKyAgICgzKSBSKGhpLCBsbykgPSBoaSAqIHogLSBoaSArIGxvCisKKworU3RyYXRlZ3k6CistLS0tLS0tLS0KKworICAgYSkgU2V0IChoaSwgbG8pIHRvIHRoZSByZXN1bHQgb2YgYSAqIGIuCisKKyAgIGIpIFNldCAoaGknLCBsbycpIHRvIHRoZSByZXN1bHQgb2YgUihoaSwgbG8pLgorCisgICBjKSBSZXBlYXQgc3RlcCBiKSB1bnRpbCAwIDw9IGhpJyAqIDIqKjY0ICsgbG8nIDwgMipwLgorCisgICBkKSBJZiB0aGUgcmVzdWx0IGlzIGxlc3MgdGhhbiBwLCByZXR1cm4gbG8nLiBPdGhlcndpc2UgcmV0dXJuIGxvJyAtIHAuCisKKworVGhlIHJlZHVjdGlvbiBzdGVwIGIpIHByZXNlcnZlcyBjb25ncnVlbmNlOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgaGkgKiAyKio2NCArIGxvID09IGhpICogeiAtIGhpICsgbG8gICAobW9kIHApCisKKyAgICBQcm9vZjoKKyAgICB+fn5+fn4KKworICAgICAgIGhpICogMioqNjQgKyBsbyA9ICgyKio2NCAtIHogKyAxKSAqIGhpICsgeiAqIGhpIC0gaGkgKyBsbworCisgICAgICAgICAgICAgICAgICAgICAgID0gcCAqIGhpICAgICAgICAgICAgICAgKyB6ICogaGkgLSBoaSArIGxvCisKKyAgICAgICAgICAgICAgICAgICAgICAgPT0geiAqIGhpIC0gaGkgKyBsbyAgIChtb2QgcCkKKworCitNYXhpbXVtIG51bWJlcnMgb2Ygc3RlcCBiKToKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIFRvIGF2b2lkIHVubmVjY2Vzc2FyeSBmb3JtYWxpc20sIGRlZmluZToKKworZGVmIFIoaGksIGxvLCB6KToKKyAgICAgcmV0dXJuIGRpdm1vZChoaSAqIHogLSBoaSArIGxvLCAyKio2NCkKKworIyBGb3Igc2ltcGxpY2l0eSwgYXNzdW1lIGhpPTIqKjY0LTEsIGxvPTIqKjY0LTEgYWZ0ZXIgdGhlCisjIGluaXRpYWwgbXVsdGlwbGljYXRpb24gYSAqIGIuIFRoaXMgaXMgb2YgY291cnNlIGltcG9zc2libGUKKyMgYnV0IGNlcnRhaW5seSBjb3ZlcnMgYWxsIGNhc2VzLgorCisjIFRoZW4sIGZvciBwMToKK2hpPTIqKjY0LTE7IGxvPTIqKjY0LTE7IHo9MioqMzIKK3AxID0gMioqNjQgLSB6ICsgMQorCitoaSwgbG8gPSBSKGhpLCBsbywgeikgICAgIyBGaXJzdCByZWR1Y3Rpb24KK2hpLCBsbyA9IFIoaGksIGxvLCB6KSAgICAjIFNlY29uZCByZWR1Y3Rpb24KK2hpICogMioqNjQgKyBsbyA8IDIgKiBwMSAjIFRydWUKKworIyBGb3IgcDI6CitoaT0yKio2NC0xOyBsbz0yKio2NC0xOyB6PTIqKjM0CitwMiA9IDIqKjY0IC0geiArIDEKKworaGksIGxvID0gUihoaSwgbG8sIHopICAgICMgRmlyc3QgcmVkdWN0aW9uCitoaSwgbG8gPSBSKGhpLCBsbywgeikgICAgIyBTZWNvbmQgcmVkdWN0aW9uCitoaSwgbG8gPSBSKGhpLCBsbywgeikgICAgIyBUaGlyZCByZWR1Y3Rpb24KK2hpICogMioqNjQgKyBsbyA8IDIgKiBwMiAjIFRydWUKKworIyBGb3IgcDM6CitoaT0yKio2NC0xOyBsbz0yKio2NC0xOyB6PTIqKjQwCitwMyA9IDIqKjY0IC0geiArIDEKKworaGksIGxvID0gUihoaSwgbG8sIHopICAgICMgRmlyc3QgcmVkdWN0aW9uCitoaSwgbG8gPSBSKGhpLCBsbywgeikgICAgIyBTZWNvbmQgcmVkdWN0aW9uCitoaSwgbG8gPSBSKGhpLCBsbywgeikgICAgIyBUaGlyZCByZWR1Y3Rpb24KK2hpICogMioqNjQgKyBsbyA8IDIgKiBwMyAjIFRydWUKKworCitTdGVwIGQpIHByZXNlcnZlcyBjb25ncnVlbmNlIGFuZCB5aWVsZHMgYSByZXN1bHQgPCBwOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgQ2FzZSBoaSA9IDA6CisKKyAgICAgICBDYXNlIGxvIDwgcDogdHJpdmlhbC4KKworICAgICAgIENhc2UgbG8gPj0gcDoKKworICAgICAgICAgIGxvID09IGxvIC0gcCAgIChtb2QgcCkgICAgICAgICAgICAgIyByZXN1bHQgaXMgY29uZ3J1ZW50CisKKyAgICAgICAgICBwIDw9IGxvIDwgMipwICAtPiAgMCA8PSBsbyAtIHAgPCBwICMgcmVzdWx0IGlzIGluIHRoZSBjb3JyZWN0IHJhbmdlCisKKyAgIENhc2UgaGkgPSAxOgorCisgICAgICAgcCA8IDIqKjY0IC9cIDIqKjY0ICsgbG8gPCAyKnAgIC0+ICBsbyA8IHAgICMgbG8gaXMgYWx3YXlzIGxlc3MgdGhhbiBwCisKKyAgICAgICAyKio2NCArIGxvID09IDIqKjY0ICsgKGxvIC0gcCkgICAobW9kIHApICAgIyByZXN1bHQgaXMgY29uZ3J1ZW50CisKKyAgICAgICAgICAgICAgICAgID0gbG8gLSBwICAgIyBleGFjdGx5IHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBwcmV2aW91cyBSSFMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbiB1aW50NjRfdCBhcml0aG1ldGljLgorCisgICAgICAgcCA8IDIqKjY0ICsgbG8gPCAyKnAgIC0+ICAwIDwgMioqNjQgKyAobG8gLSBwKSA8IHAgICMgY29ycmVjdCByYW5nZQorCisKKworWzFdICBodHRwOi8vd3d3LmFwZmxvYXQub3JnL2FwZmxvYXQvMi40MC9hcGZsb2F0LnBkZgorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL211bG1vZC1wcHJvLnR4dCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9tdWxtb2QtcHByby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQxN2E5MgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9tdWxtb2QtcHByby50eHQKQEAgLTAsMCArMSwyNjkgQEAKKworCisoKiBDb3B5cmlnaHQgKGMpIDIwMTEgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuICopCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAgICAgICAgQ2FsY3VsYXRlIChhICogYikgJSBwIHVzaW5nIHRoZSA4MC1iaXQgeDg3IEZQVQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0EgZGVzY3JpcHRpb24gb2YgdGhlIGFsZ29yaXRobSBjYW4gYmUgZm91bmQgaW4gdGhlIGFwZmxvYXQgbWFudWFsIGJ5CitUb21taWxhIFsxXS4KKworVGhlIHByb29mIGZvbGxvd3MgYW4gYXJndW1lbnQgbWFkZSBieSBHcmFubHVuZC9Nb250Z29tZXJ5IGluIFsyXS4KKworCitEZWZpbml0aW9ucyBhbmQgYXNzdW1wdGlvbnM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA4MC1iaXQgZXh0ZW5kZWQgcHJlY2lzaW9uIGZvcm1hdCB1c2VzIDY0IGJpdHMgZm9yIHRoZSBzaWduaWZpY2FuZDoKKworICAoMSkgRiA9IDY0CisKK1RoZSBtb2R1bHVzIGlzIHByaW1lIGFuZCBsZXNzIHRoYW4gMioqMzE6CisKKyAgKDIpIDIgPD0gcCA8IDIqKjMxCisKK1RoZSBmYWN0b3JzIGFyZSBsZXNzIHRoYW4gcDoKKworICAoMykgMCA8PSBhIDwgcAorICAoNCkgMCA8PSBiIDwgcAorCitUaGUgcHJvZHVjdCBhICogYiBpcyBsZXNzIHRoYW4gMioqNjIgYW5kIGlzIHRodXMgZXhhY3QgaW4gNjQgYml0czoKKworICAoNSkgbiA9IGEgKiBiCisKK1RoZSBwcm9kdWN0IGNhbiBiZSByZXByZXNlbnRlZCBpbiB0ZXJtcyBvZiBxdW90aWVudCBhbmQgcmVtYWluZGVyOgorCisgICg2KSBuID0gcSAqIHAgKyByCisKK1VzaW5nICgzKSwgKDQpIGFuZCB0aGUgZmFjdCB0aGF0IHAgaXMgcHJpbWUsIHRoZSByZW1haW5kZXIgaXMgYWx3YXlzCitncmVhdGVyIHRoYW4gemVybzoKKworICAoNykgMCA8PSBxIDwgcCAgL1wgIDEgPD0gciA8IHAKKworCitTdHJhdGVneToKKy0tLS0tLS0tLQorCitQcmVjYWxjdWxhdGUgdGhlIDgwLWJpdCBsb25nIGRvdWJsZSBpbnZlcnNlIG9mIHAsIHdpdGggYSBtYXhpbXVtCityZWxhdGl2ZSBlcnJvciBvZiAyKiooMS1GKToKKworICAoOCkgcGludiA9IChsb25nIGRvdWJsZSkxLjAgLyBwCisKK0NhbGN1bGF0ZSBhbiBlc3RpbWF0ZSBmb3IgcSA9IGZsb29yKG4vcCkuIFRoZSBtdWx0aXBsaWNhdGlvbiBoYXMgYW5vdGhlcgorbWF4aW11bSByZWxhdGl2ZSBlcnJvciBvZiAyKiooMS1GKToKKworICAoOSkgcWVzdCA9IG4gKiBwaW52CisKK0lmIHdlIGNhbiBzaG93IHRoYXQgcSA8IHFlc3QgPCBxKzEsIHRoZW4gdHJ1bmMocWVzdCkgPSBxLiBJdCBpcyB0aGVuCitlYXN5IHRvIHJlY292ZXIgdGhlIHJlbWFpbmRlciByLiBUaGUgY29tcGxldGUgYWxnb3JpdGhtIGlzOgorCisgIGEpIFNldCB0aGUgY29udHJvbCB3b3JkIHRvIDY0LWJpdCBwcmVjaXNpb24gYW5kIHRydW5jYXRpb24gbW9kZS4KKworICBiKSBuID0gYSAqIGIgICAgICAgICAgICAgICMgQ2FsY3VsYXRlIGV4YWN0IHByb2R1Y3QuCisKKyAgYykgcWVzdCA9IG4gKiBwaW52ICAgICAgICAjIENhbGN1bGF0ZSBlc3RpbWF0ZSBmb3IgdGhlIHF1b3RpZW50LgorCisgIGQpIHEgPSAocWVzdCsyKio2MyktMioqNjMgIyBUcnVuY2F0ZSBxZXN0IHRvIHRoZSBleGFjdCBxdW90aWVudC4KKworICBmKSByID0gbiAtIHEgKiBwICAgICAgICAgICMgQ2FsY3VsYXRlIHJlbWFpbmRlci4KKworCitQcm9vZiBmb3IgcSA8IHFlc3QgPCBxKzE6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1VzaW5nIHRoZSBjdW11bGF0aXZlIGVycm9yLCB0aGUgZXJyb3IgYm91bmRzIGZvciBxZXN0IGFyZToKKworICAgICAgICAgICAgICAgIG4gICAgICAgICAgICAgICAgICAgICAgIG4gKiAoMSArIDIqKigxLUYpKSoqMgorICAoOSkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tIDw9IHFlc3QgPD0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgcCAqICgxICsgMioqKDEtRikpKioyICAgICAgICAgICAgICAgICAgICAgICBwCisKKworICBMZW1tYSAxOgorICAtLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICBuICAgICAgICAgICAgICAgICAgIHEgKiBwICsgcgorICAgICgxMCkgcSA8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLSA9IC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgIHAgKiAoMSArIDIqKigxLUYpKSoqMiAgIHAgKiAoMSArIDIqKigxLUYpKSoqMgorCisKKyAgICBQcm9vZjoKKyAgICB+fn5+fn4KKworICAgIChJKSAgICAgcSAqIHAgKiAoMSArIDIqKigxLUYpKSoqMiA8IHEgKiBwICsgcgorCisgICAgKElJKSAgICBxICogcCAqIDIqKigyLUYpICsgcSAqIHAgKiAyKiooMi0yKkYpIDwgcgorCisgICAgVXNpbmcgKDEpIGFuZCAoNyksIGl0IGlzIHN1ZmZpY2llbnQgdG8gc2hvdyB0aGF0OgorCisgICAgKElJSSkgICBxICogcCAqIDIqKigtNjIpICsgcSAqIHAgKiAyKiooLTEyNikgPCAxIDw9IHIKKworICAgIChJSUkpIGNhbiBlYXNpbHkgYmUgdmVyaWZpZWQgYnkgc3Vic3RpdHV0aW5nIHRoZSBsYXJnZXN0IHBvc3NpYmxlCisgICAgdmFsdWVzIHAgPSAyKiozMS0xIGFuZCBxID0gMioqMzEtMi4KKworICAgIFRoZSBjcml0aWNhbCBjYXNlcyBvY2N1ciB3aGVuIHIgPSAxLCBuID0gbSAqIHAgKyAxLiBUaGVzZSBjYXNlcworICAgIGNhbiBiZSBleGhhdXN0aXZlbHkgdmVyaWZpZWQgd2l0aCBhIHRlc3QgcHJvZ3JhbS4KKworCisgIExlbW1hIDI6CisgIC0tLS0tLS0tCisKKyAgICAgICAgICAgbiAqICgxICsgMioqKDEtRikpKioyICAgICAocSAqIHAgKyByKSAqICgxICsgMioqKDEtRikpKioyCisgICAgKDExKSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgPSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgPCAgcSArIDEKKyAgICAgICAgICAgICAgICAgICAgIHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwCisKKyAgICBQcm9vZjoKKyAgICB+fn5+fn4KKworICAgIChJKSAgKHEgKiBwICsgcikgKyAocSAqIHAgKyByKSAqIDIqKigyLUYpICsgKHEgKiBwICsgcikgKiAyKiooMi0yKkYpIDwgcSAqIHAgKyBwCisKKyAgICAoSUkpICAocSAqIHAgKyByKSAqIDIqKigyLUYpICsgKHEgKiBwICsgcikgKiAyKiooMi0yKkYpIDwgcCAtIHIKKworICAgIFVzaW5nICgxKSBhbmQgKDcpLCBpdCBpcyBzdWZmaWNpZW50IHRvIHNob3cgdGhhdDoKKworICAgIChJSUkpIChxICogcCArIHIpICogMioqKC02MikgKyAocSAqIHAgKyByKSAqIDIqKigtMTI2KSA8IDEgPD0gcCAtIHIKKworICAgIChJSUkpIGNhbiBlYXNpbHkgYmUgdmVyaWZpZWQgYnkgc3Vic3RpdHV0aW5nIHRoZSBsYXJnZXN0IHBvc3NpYmxlCisgICAgdmFsdWVzIHAgPSAyKiozMS0xLCBxID0gMioqMzEtMiBhbmQgciA9IDIqKjMxLTIuCisKKyAgICBUaGUgY3JpdGljYWwgY2FzZXMgb2NjdXIgd2hlbiByID0gKHAgLSAxKSwgbiA9IG0gKiBwIC0gMS4gVGhlc2UgY2FzZXMKKyAgICBjYW4gYmUgZXhoYXVzdGl2ZWx5IHZlcmlmaWVkIHdpdGggYSB0ZXN0IHByb2dyYW0uCisKKworWzFdICBodHRwOi8vd3d3LmFwZmxvYXQub3JnL2FwZmxvYXQvMi40MC9hcGZsb2F0LnBkZgorWzJdICBodHRwOi8vZ21wbGliLm9yZy9+dGVnZS9kaXZjbnN0LXBsZGk5NC5wZGYKKyAgICAgW1NlY3Rpb24gNzogIlVzZSBvZiBmbG9hdGluZyBwb2ludCJdCisKKworCisoKiBDb3EgcHJvb2YgZm9yICgxMCkgYW5kICgxMSkgKikKKworUmVxdWlyZSBJbXBvcnQgWkFyaXRoLgorUmVxdWlyZSBJbXBvcnQgUUFyaXRoLgorUmVxdWlyZSBJbXBvcnQgUXBvd2VyLgorUmVxdWlyZSBJbXBvcnQgUWFicy4KK1JlcXVpcmUgSW1wb3J0IFBzYXR6LgorCitPcGVuIFNjb3BlIFFfc2NvcGUuCisKKworTHRhYyBxcmVkdWNlIFQgOj0KKyAgcmV3cml0ZSA8LSAoUXJlZF9jb3JyZWN0IChUKSk7IHNpbXBsIChRcmVkIChUKSkuCisKK1RoZW9yZW0gUWx0X21vdmVfcmlnaHQgOgorICBmb3JhbGwgeCB5IHo6USwgeCArIHogPCB5IDwtPiB4IDwgeSAtIHouCitQcm9vZi4KKyAgaW50cm9zLgorICBzcGxpdC4KKyAgICBpbnRyb3MuCisgICAgcHNhdHpsIFEuCisgICAgaW50cm9zLgorICAgIHBzYXR6bCBRLgorUWVkLgorCitUaGVvcmVtIFFsdF9tdWx0X2J5X3ogOgorICBmb3JhbGwgeCB5IHo6USwgMCA8IHogLT4gKHggPCB5IDwtPiB4ICogeiA8IHkgKiB6KS4KK1Byb29mLgorICBpbnRyb3MuCisgIHNwbGl0LgorICAgIGludHJvcy4KKyAgICBhcHBseSBRbXVsdF9sdF9jb21wYXRfci4gdHJpdmlhbC4gdHJpdmlhbC4KKyAgICBpbnRyb3MuCisgICAgcmV3cml0ZSA8LSAoUWRpdl9tdWx0X2wgeCB6KS4gcmV3cml0ZSA8LSAoUWRpdl9tdWx0X2wgeSB6KS4KKyAgICBhcHBseSBRbXVsdF9sdF9jb21wYXRfci4KKyAgICBhcHBseSBRbHRfc2hpZnRfaW52X2wuCisgICAgdHJpdmlhbC4gcHNhdHpsIFEuIHRyaXZpYWwuIHBzYXR6bCBRLiBwc2F0emwgUS4KK1FlZC4KKworVGhlb3JlbSBRbGVfbXVsdF9xdWFkIDoKKyAgZm9yYWxsIChhIGIgYyBkOlEpLAorICAgIDAgPD0gYSAtPiBhIDw9IGMgLT4KKyAgICAwIDw9IGIgLT4gYiA8PSBkIC0+CisgICAgICBhICogYiA8PSBjICogZC4KKyAgaW50cm9zLgorICBwc2F0eiBRLgorUWVkLgorCisKK1RoZW9yZW0gcV9sdF9xZXN0OgorICBmb3JhbGwgKHAgcSByOlEpLAorICAgICgwIDwgcCkgLT4gKHAgPD0gKDIjMSleMzEgLSAxKSAtPgorICAgICgwIDw9IHEpIC0+IChxIDw9IHAgLSAxKSAtPgorICAgICgxIDw9IHIpIC0+IChyIDw9IHAgLSAxKSAtPgorICAgICAgcSA8IChxICogcCArIHIpIC8gKHAgKiAoMSArICgyIzEpXigtNjMpKV4yKS4KK1Byb29mLgorICBpbnRyb3MuCisgIHJld3JpdGUgUWx0X211bHRfYnlfeiB3aXRoICh6IDo9IChwICogKDEgKyAoMiMxKV4oLTYzKSleMikpLgorCisgIHVuZm9sZCBRZGl2LgorICByZXdyaXRlIDwtIFFtdWx0X2Fzc29jLgorICByZXdyaXRlIChRbXVsdF9jb21tICgvIChwICogKDEgKyAoMiAjIDEpIF4gKC02MykpIF4gMikpIChwICogKDEgKyAoMiAjIDEpIF4gKC02MykpIF4gMikpLgorICByZXdyaXRlIFFtdWx0X2ludl9yLgorICByZXdyaXRlIFFtdWx0XzFfci4KKworICBhc3NlcnQgKHEgKiAocCAqICgxICsgKDIgIyAxKSBeICgtNjMpKSBeIDIpID09IHEgKiBwICsgKHEgKiBwKSAqICgoMiAjIDEpIF4gKC02MikgKyAoMiAjIDEpIF4gKC0xMjYpKSkuCisgIHFyZWR1Y2UgKCgxICsgKDIgIyAxKSBeICgtNjMpKSBeIDIpLgorICBxcmVkdWNlICgoMiAjIDEpIF4gKC02MikgKyAoMiAjIDEpIF4gKC0xMjYpKS4KKyAgcmluZ19zaW1wbGlmeS4KKyAgcmVmbGV4aXZpdHkuCisgIHJld3JpdGUgSDUuCisKKyAgcmV3cml0ZSBRcGx1c19jb21tLgorICByZXdyaXRlIFFsdF9tb3ZlX3JpZ2h0LgorICByaW5nX3NpbXBsaWZ5IChxICogcCArIHIgLSBxICogcCkuCisgIHFyZWR1Y2UgKCgyICMgMSkgXiAoLTYyKSArICgyICMgMSkgXiAoLTEyNikpLgorCisgIGFwcGx5IFFsdF9sZV90cmFucyB3aXRoICh5IDo9IDEpLgorICByZXdyaXRlIFFsdF9tdWx0X2J5X3ogd2l0aCAoeiA6PSA4NTA3MDU5MTczMDIzNDYxNTg2NTg0MzY1MTg1Nzk0MjA1Mjg2NCAjIDE4NDQ2NzQ0MDczNzA5NTUxNjE3KS4KKyAgcmluZ19zaW1wbGlmeS4KKworICBhcHBseSBRbGVfbHRfdHJhbnMgd2l0aCAoeSA6PSAoKDIgIyAxKSBeIDMxIC0gKDIjMSkpICogKCgyICMgMSkgXiAzMSAtIDEpKS4KKyAgYXBwbHkgUWxlX211bHRfcXVhZC4KKyAgYXNzdW1wdGlvbi4gcHNhdHpsIFEuIHBzYXR6bCBRLiBwc2F0emwgUS4gcHNhdHpsIFEuIHBzYXR6bCBRLiBhc3N1bXB0aW9uLiBwc2F0emwgUS4gcHNhdHpsIFEuCitRZWQuCisKK1RoZW9yZW0gcWVzdF9sdF9xcGx1czE6CisgIGZvcmFsbCAocCBxIHI6USksCisgICAgKDAgPCBwKSAtPiAocCA8PSAoMiMxKV4zMSAtIDEpIC0+CisgICAgKDAgPD0gcSkgLT4gKHEgPD0gcCAtIDEpIC0+CisgICAgKDEgPD0gcikgLT4gKHIgPD0gcCAtIDEpIC0+CisgICAgICAoKHEgKiBwICsgcikgKiAoMSArICgyIzEpXigtNjMpKV4yKSAvIHAgPCBxICsgMS4KK1Byb29mLgorICBpbnRyb3MuCisgIHJld3JpdGUgUWx0X211bHRfYnlfeiB3aXRoICh6IDo9IHApLgorCisgIHVuZm9sZCBRZGl2LgorICByZXdyaXRlIDwtIFFtdWx0X2Fzc29jLgorICByZXdyaXRlIChRbXVsdF9jb21tICgvIHApIHApLgorICByZXdyaXRlIFFtdWx0X2ludl9yLgorICByZXdyaXRlIFFtdWx0XzFfci4KKworICBhc3NlcnQgKChxICogcCArIHIpICogKDEgKyAoMiAjIDEpIF4gKC02MykpIF4gMiA9PSBxICogcCArIHIgKyAocSAqIHAgKyByKSAqICgoMiAjIDEpIF4gKC02MikgKyAoMiAjIDEpIF4gKC0xMjYpKSkuCisgIHFyZWR1Y2UgKCgxICsgKDIgIyAxKSBeICgtNjMpKSBeIDIpLgorICBxcmVkdWNlICgoMiAjIDEpIF4gKC02MikgKyAoMiAjIDEpIF4gKC0xMjYpKS4KKyAgcmluZ19zaW1wbGlmeS4gcmVmbGV4aXZpdHkuCisgIHJld3JpdGUgSDUuCisKKyAgcmV3cml0ZSA8LSBRcGx1c19hc3NvYy4gcmV3cml0ZSA8LSBRcGx1c19jb21tLiByZXdyaXRlIFFsdF9tb3ZlX3JpZ2h0LgorICByaW5nX3NpbXBsaWZ5ICgocSArIDEpICogcCAtIHEgKiBwKS4KKworICByZXdyaXRlIDwtIFFwbHVzX2NvbW0uIHJld3JpdGUgUWx0X21vdmVfcmlnaHQuCisKKyAgYXBwbHkgUWx0X2xlX3RyYW5zIHdpdGggKHkgOj0gMSkuCisgIHFyZWR1Y2UgKCgyICMgMSkgXiAoLTYyKSArICgyICMgMSkgXiAoLTEyNikpLgorCisgIHJld3JpdGUgUWx0X211bHRfYnlfeiB3aXRoICh6IDo9IDg1MDcwNTkxNzMwMjM0NjE1ODY1ODQzNjUxODU3OTQyMDUyODY0ICMgMTg0NDY3NDQwNzM3MDk1NTE2MTcpLgorICByaW5nX3NpbXBsaWZ5LgorCisgIHJpbmdfc2ltcGxpZnkgaW4gSDAuCisgIGFwcGx5IFFsZV9sdF90cmFucyB3aXRoICh5IDo9ICgyMTQ3NDgzNjQ2ICMgMSkgKiAoMjE0NzQ4MzY0NyAjIDEpICsgKDIxNDc0ODM2NDYgIyAxKSkuCisKKyAgYXBwbHkgUXBsdXNfbGVfY29tcGF0LgorICBhcHBseSBRbGVfbXVsdF9xdWFkLgorICBhc3N1bXB0aW9uLiBwc2F0emwgUS4gYXV0byB3aXRoIHFhcml0aC4gYXNzdW1wdGlvbi4gcHNhdHpsIFEuCisgIGF1dG8gd2l0aCBxYXJpdGguIGF1dG8gd2l0aCBxYXJpdGguCisgIHBzYXR6bCBRLiBwc2F0emwgUS4gYXNzdW1wdGlvbi4KK1FlZC4KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9zaXgtc3RlcC50eHQgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvc2l4LXN0ZXAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNDVmNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvc2l4LXN0ZXAudHh0CkBAIC0wLDAgKzEsNjMgQEAKKworCisoKiBDb3B5cmlnaHQgKGMpIDIwMTEgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuICopCisKKworVGhlIFNpeCBTdGVwIFRyYW5zZm9ybToKKz09PT09PT09PT09PT09PT09PT09PT09CisKK0luIGxpYm1wZGVjLCB0aGUgc2l4LXN0ZXAgdHJhbnNmb3JtIGlzIHRoZSBNYXRyaXggRm91cmllciBUcmFuc2Zvcm0gKFNlZQorbWF0cml4LXRyYW5zZm9ybS50eHQpIGluIGRpc2d1aXNlLiBJdCBpcyBjYWxsZWQgc2l4LXN0ZXAgdHJhbnNmb3JtIGFmdGVyCithIHZhcmlhbnQgdGhhdCBhcHBlYXJzIGluIFsxXS4gVGhlIGFsZ29yaXRobSByZXF1aXJlcyB0aGF0IHRoZSBpbnB1dAorYXJyYXkgY2FuIGJlIHZpZXdlZCBhcyBhbiBSKkMgbWF0cml4LgorCisKK0FsZ29yaXRobSBzaXgtc3RlcCAoZm9yd2FyZCB0cmFuc2Zvcm0pOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgMWEpIFRyYW5zcG9zZSB0aGUgbWF0cml4LgorCisgIDFiKSBBcHBseSBhIGxlbmd0aCBSIEZOVCB0byBlYWNoIHJvdy4KKworICAxYykgVHJhbnNwb3NlIHRoZSBtYXRyaXguCisKKyAgMikgTXVsdGlwbHkgZWFjaCBtYXRyaXggZWxlbWVudCAoYWRkcmVzc2VkIGJ5IGoqQyttKSBieSByKiooaiptKS4KKworICAzKSBBcHBseSBhIGxlbmd0aCBDIEZOVCB0byBlYWNoIHJvdy4KKworICA0KSBUcmFuc3Bvc2UgdGhlIG1hdHJpeC4KKworTm90ZSB0aGF0IHN0ZXBzIDFhKSAtIDFjKSBhcmUgZXhhY3RseSBlcXVpdmFsZW50IHRvIHN0ZXAgMSkgb2YgdGhlIE1hdHJpeAorRm91cmllciBUcmFuc2Zvcm0uIEZvciBsYXJnZSBSLCBpdCBpcyBmYXN0ZXIgdG8gdHJhbnNwb3NlIHR3aWNlIGFuZCBkbworYSB0cmFuc2Zvcm0gb24gdGhlIHJvd3MgdGhhbiB0byBwZXJmb3JtIGEgY29sdW1uIHRyYW5zcG9zZSBkaXJlY3RseS4KKworCisKK0FsZ29yaXRobSBzaXgtc3RlcCAoaW52ZXJzZSB0cmFuc2Zvcm0pOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgMCkgVmlldyB0aGUgbWF0cml4IGFzIGEgQypSIG1hdHJpeC4KKworICAxKSBUcmFuc3Bvc2UgdGhlIG1hdHJpeCwgcHJvZHVjaW5nIGFuIFIqQyBtYXRyaXguCisKKyAgMikgQXBwbHkgYSBsZW5ndGggQyBGTlQgdG8gZWFjaCByb3cuCisKKyAgMykgTXVsdGlwbHkgZWFjaCBtYXRyaXggZWxlbWVudCAoYWRkcmVzc2VkIGJ5IGkqQytuKSBieSByKiooaSpuKS4KKworICA0YSkgVHJhbnNwb3NlIHRoZSBtYXRyaXguCisKKyAgNGIpIEFwcGx5IGEgbGVuZ3RoIFIgRk5UIHRvIGVhY2ggcm93LgorCisgIDRjKSBUcmFuc3Bvc2UgdGhlIG1hdHJpeC4KKworQWdhaW4sIHN0ZXBzIDRhKSAtIDRjKSBhcmUgZXF1aXZhbGVudCB0byBzdGVwIDQpIG9mIHRoZSBNYXRyaXggRm91cmllcgorVHJhbnNmb3JtLgorCisKKworLS0KKworICBbMV0gRGF2aWQgSC4gQmFpbGV5OiBGRlRzIGluIEV4dGVybmFsIG9yIEhpZXJhcmNoaWNhbCBNZW1vcnkKKyAgICAgIGh0dHA6Ly9jcmQubGJsLmdvdi9+ZGhiYWlsZXkvZGhicGFwZXJzLworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS91bW9kYXJpdGgubGlzcCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS91bW9kYXJpdGgubGlzcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDhlOWY0Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL3Vtb2Rhcml0aC5saXNwCkBAIC0wLDAgKzEsNjkyIEBACis7Cis7IENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorOworOyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKzsgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCis7IGFyZSBtZXQ6Cis7Cis7IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cis7ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKzsKKzsgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKzsgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorOyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorOworOyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorOyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKzsgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKzsgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKzsgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKzsgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKzsgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCis7IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCis7IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKzsgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorOyBTVUNIIERBTUFHRS4KKzsKKworCisoaW4tcGFja2FnZSAiQUNMMiIpCisKKyhpbmNsdWRlLWJvb2sgImFyaXRobWV0aWMvdG9wLXdpdGgtbWV0YSIgOmRpciA6c3lzdGVtKQorKGluY2x1ZGUtYm9vayAiYXJpdGhtZXRpYy0yL2Zsb29yLW1vZC9mbG9vci1tb2QiIDpkaXIgOnN5c3RlbSkKKworCis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzs7ICAgICAgICAgICAgUHJvb2ZzIGZvciBzZXZlcmFsIGZ1bmN0aW9ucyBpbiB1bW9kYXJpdGguaAorOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworCis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzs7ICAgICAgICAgICAgICAgICAgICAgICAgICBIZWxwZXIgdGhlb3JlbXMKKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisoZGVmdGhtIGVsaW0tbW9kLW08eDwyKm0KKyAgKGltcGxpZXMgKGFuZCAoPD0gbSB4KQorICAgICAgICAgICAgICAgICg8IHggKCogMiBtKSkKKyAgICAgICAgICAgICAgICAocmF0aW9uYWxwIHgpIChyYXRpb25hbHAgbSkpCisgICAgICAgICAgIChlcXVhbCAobW9kIHggbSkKKyAgICAgICAgICAgICAgICAgICgrIHggKC0gbSkpKSkpCisKKyhkZWZ0aG0gbW9kYXV4LTFhCisgIChpbXBsaWVzIChhbmQgKDwgeCBtKSAoPCAwIHgpICg8IDAgbSkKKyAgICAgICAgICAgICAgICAocmF0aW9uYWxwIHgpIChyYXRpb25hbHAgbSkpCisgICAgICAgICAgIChlcXVhbCAobW9kICgtIHgpIG0pCisgICAgICAgICAgICAgICAgICAoKyAoLSB4KSBtKSkpKQorCisoZGVmdGhtIG1vZGF1eC0xYgorICAoaW1wbGllcyAoYW5kICg8ICgtIHgpIG0pICg8IHggMCkgKDwgMCBtKQorICAgICAgICAgICAgICAgIChyYXRpb25hbHAgeCkgKHJhdGlvbmFscCBtKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QgeCBtKQorICAgICAgICAgICAgICAgICAgKCsgeCBtKSkpCisgIDpoaW50cyAoKCJHb2FsIiA6dXNlICgoOmluc3RhbmNlIG1vZGF1eC0xYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCAoLSB4KSkpKSkpKQorCisoZGVmdGhtIG1vZGF1eC0xYworICAoaW1wbGllcyAoYW5kICg8IHggbSkgKDwgMCB4KSAoPCAwIG0pCisgICAgICAgICAgICAgICAgKHJhdGlvbmFscCB4KSAocmF0aW9uYWxwIG0pKQorICAgICAgICAgICAoZXF1YWwgKG1vZCB4IG0pCisgICAgICAgICAgICAgICAgICB4KSkpCisKKyhkZWZ0aG0gbW9kYXV4LTJhCisgIChpbXBsaWVzIChhbmQgKDwgMCBiKSAoPCBiIG0pCisgICAgICAgICAgICAgICAgKG5hdHAgeCkgKG5hdHAgYikgKG5hdHAgbSkKKyAgICAgICAgICAgICAgICAoPCAobW9kICgrIGIgeCkgbSkgYikpCisgICAgICAgICAgIChlcXVhbCAobW9kICgrICgtIG0pIGIgeCkgbSkKKyAgICAgICAgICAgICAgICAgICgrICgtIG0pIGIgKG1vZCB4IG0pKSkpKQorCisoZGVmdGhtIG1vZGF1eC0yYgorICAoaW1wbGllcyAoYW5kICg8IDAgYikgKDwgYiBtKQorICAgICAgICAgICAgICAgIChuYXRwIHgpIChuYXRwIGIpIChuYXRwIG0pCisgICAgICAgICAgICAgICAgKDwgKG1vZCAoKyBiIHgpIG0pIGIpKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoKyBiIHgpIG0pCisgICAgICAgICAgICAgICAgICAoKyAoLSBtKSBiIChtb2QgeCBtKSkpKQorICA6aGludHMgKCgiR29hbCIgOnVzZSAobW9kYXV4LTJhKSkpKQorCisoZGVmdGhtIGxpbmVhci1tb2QtMQorICAoaW1wbGllcyAoYW5kICg8IHggbSkgKDwgYiBtKQorICAgICAgICAgICAgICAgIChuYXRwIHgpIChuYXRwIGIpCisgICAgICAgICAgICAgICAgKHJhdGlvbmFscCBtKSkKKyAgICAgICAgIChlcXVhbCAoPCB4IChtb2QgKCsgKC0gYikgeCkgbSkpCisgICAgICAgICAgICAgICAgKDwgeCBiKSkpCisgIDpoaW50cyAoKCJHb2FsIiA6dXNlICgoOmluc3RhbmNlIG1vZGF1eC0xYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCAoKyBiICgtIHgpKSkpKSkpKQorCisoZGVmdGhtIGxpbmVhci1tb2QtMgorICAoaW1wbGllcyAoYW5kICg8IDAgYikgKDwgYiBtKQorICAgICAgICAgICAgICAgIChuYXRwIHgpIChuYXRwIGIpCisgICAgICAgICAgICAgICAgKG5hdHAgbSkpCisgICAgICAgICAgIChlcXVhbCAoPCAobW9kIHggbSkKKyAgICAgICAgICAgICAgICAgICAgIChtb2QgKCsgKC0gYikgeCkgbSkpCisgICAgICAgICAgICAgICAgICAoPCAobW9kIHggbSkgYikpKSkKKworKGRlZnRobSBsaW5lYXItbW9kLTMKKyAgKGltcGxpZXMgKGFuZCAoPCB4IG0pICg8IGIgbSkKKyAgICAgICAgICAgICAgICAobmF0cCB4KSAobmF0cCBiKQorICAgICAgICAgICAgICAgIChyYXRpb25hbHAgbSkpCisgICAgICAgICAgIChlcXVhbCAoPD0gYiAobW9kICgrIGIgeCkgbSkpCisgICAgICAgICAgICAgICAgICAoPCAoKyBiIHgpIG0pKSkKKyAgOmhpbnRzICgoIkdvYWwiIDp1c2UgKCg6aW5zdGFuY2UgZWxpbS1tb2QtbTx4PDIqbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCAoKyBiIHgpKSkpKSkpCisKKyhkZWZ0aG0gbW9kYXV4LTJjCisgIChpbXBsaWVzIChhbmQgKDwgMCBiKSAoPCBiIG0pCisgICAgICAgICAgICAgICAgKG5hdHAgeCkgKG5hdHAgYikgKG5hdHAgbSkKKyAgICAgICAgICAgICAgICAoPD0gYiAobW9kICgrIGIgeCkgbSkpKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoKyBiIHgpIG0pCisgICAgICAgICAgICAgICAgICAoKyBiIChtb2QgeCBtKSkpKQorICA6aGludHMgKCgiU3ViZ29hbCAqMS84JyciIDp1c2UgKGxpbmVhci1tb2QtMykpKSkKKworKGRlZnRobWQgbW9kYXV4LTJkCisgIChpbXBsaWVzIChhbmQgKDwgeCBtKSAoPCAwIHgpICg8IDAgbSkKKyAgICAgICAgICAgICAgICAoPCAoLSBtKSBiKSAoPCBiIDApIChyYXRpb25hbHAgbSkKKyAgICAgICAgICAgICAgICAoPD0geCAobW9kICgrIGIgeCkgbSkpCisgICAgICAgICAgICAgICAgKHJhdGlvbmFscCB4KSAocmF0aW9uYWxwIGIpKQorICAgICAgICAgICAoZXF1YWwgKCsgKC0gbSkgKG1vZCAoKyBiIHgpIG0pKQorICAgICAgICAgICAgICAgICAgKCsgYiB4KSkpCisgIDpoaW50cyAoKCJHb2FsIiA6Y2FzZXMgKCg8PSAwICgrIGIgeCkpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMiciIDp1c2UgKCg6aW5zdGFuY2UgbW9kYXV4LTFiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggKCsgYiB4KSkpKSkpKQorCisoZGVmdGhtIG1vZC1tLWIKKyAgKGltcGxpZXMgKGFuZCAoPCAwIHgpICg8IDAgYikgKDwgMCBtKQorICAgICAgICAgICAgICAgICg8IHggYikgKDwgYiBtKQorICAgICAgICAgICAgICAgIChuYXRwIHgpIChuYXRwIGIpIChuYXRwIG0pKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoKyAobW9kICgtIHgpIG0pIGIpIG0pCisgICAgICAgICAgICAgICAgICAobW9kICgtIHgpIGIpKSkpCisKKworOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis7OyAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkbW9kLCBzdWJtb2QKKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisoZGVmdW4gYWRkbW9kIChhIGIgbSBiYXNlKQorICAobGV0KiAoKHMgKG1vZCAoKyBhIGIpIGJhc2UpKQorICAgICAgICAgKHMgKGlmICg8IHMgYSkgKG1vZCAoLSBzIG0pIGJhc2UpIHMpKQorICAgICAgICAgKHMgKGlmICg+PSBzIG0pIChtb2QgKC0gcyBtKSBiYXNlKSBzKSkpCisgICAgICAgIHMpKQorCisoZGVmdGhtZCBhZGRtb2QtY29ycmVjdAorICAoaW1wbGllcyAoYW5kICg8IDAgbSkgKDwgbSBiYXNlKQorCQkoPCBhIG0pICg8PSBiIG0pCisgICAgICAgICAgICAgICAgKG5hdHAgbSkgKG5hdHAgYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBhKSAobmF0cCBiKSkKKyAgICAgICAgICAgKGVxdWFsIChhZGRtb2QgYSBiIG0gYmFzZSkKKyAgICAgICAgICAgICAgICAgIChtb2QgKCsgYSBiKSBtKSkpCisgIDpoaW50cyAoKCJHb2FsIiA6Y2FzZXMgKCg8PSBiYXNlICgrIGEgYikpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMi4xJyIgOnVzZSAoKDppbnN0YW5jZSBlbGltLW1vZC1tPHg8MiptCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggKCsgYSBiKSkpKSkpKQorCisoZGVmdW4gc3VibW9kIChhIGIgbSBiYXNlKQorICAobGV0KiAoKGQgKG1vZCAoLSBhIGIpIGJhc2UpKQorICAgICAgICAgKGQgKGlmICg8IGEgZCkgKG1vZCAoKyBkIG0pIGJhc2UpIGQpKSkKKyAgICAgICAgZCkpCisKKyhkZWZ0aG1kIHN1Ym1vZC1hdXgxCisgIChpbXBsaWVzIChhbmQgKDwgYSAobW9kICgrIGEgKC0gYikpIGJhc2UpKQorICAgICAgICAgICAgICAgICg8IDAgYmFzZSkgKDwgYSBiYXNlKSAoPD0gYiBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIGJhc2UpIChuYXRwIGEpIChuYXRwIGIpKQorICAgICAgICAgICAoPCBhIGIpKQorICA6cnVsZS1jbGFzc2VzIDpmb3J3YXJkLWNoYWluaW5nKQorCisoZGVmdGhtZCBzdWJtb2QtYXV4MgorICAoaW1wbGllcyAoYW5kICg8PSAobW9kICgrIGEgKC0gYikpIGJhc2UpIGEpCisgICAgICAgICAgICAgICAgKDwgMCBiYXNlKSAoPCBhIGJhc2UpICg8IGIgYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBiYXNlKSAobmF0cCBhKSAobmF0cCBiKSkKKyAgICAgICAgICAgKDw9IGIgYSkpCisgIDpydWxlLWNsYXNzZXMgOmZvcndhcmQtY2hhaW5pbmcpCisKKyhkZWZ0aG1kIHN1Ym1vZC1jb3JyZWN0CisgIChpbXBsaWVzIChhbmQgKDwgMCBtKSAoPCBtIGJhc2UpCisJCSg8IGEgbSkgKDw9IGIgbSkKKyAgICAgICAgICAgICAgICAobmF0cCBtKSAobmF0cCBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIGEpIChuYXRwIGIpKQorICAgICAgICAgICAoZXF1YWwgKHN1Ym1vZCBhIGIgbSBiYXNlKQorICAgICAgICAgICAgICAgICAgKG1vZCAoLSBhIGIpIG0pKSkKKyAgOmhpbnRzICgoIkdvYWwiIDpjYXNlcyAoKDw9IGJhc2UgKCsgYSBiKSkpKQorICAgICAgICAgICgiU3ViZ29hbCAyLjIiIDp1c2UgKCg6aW5zdGFuY2Ugc3VibW9kLWF1eDEpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMi4yJycnIiA6Y2FzZXMgKChhbmQgKDwgMCAoKyBhICgtIGIpIG0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPCAoKyBhICgtIGIpIG0pIG0pKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDIuMSIgOnVzZSAoKDppbnN0YW5jZSBzdWJtb2QtYXV4MikpKQorICAgICAgICAgICgiU3ViZ29hbCAxLjIiIDp1c2UgKCg6aW5zdGFuY2Ugc3VibW9kLWF1eDEpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4xIiA6dXNlICgoOmluc3RhbmNlIHN1Ym1vZC1hdXgyKSkpKSkKKworCisoZGVmdW4gc3VibW9kLTIgKGEgYiBtIGJhc2UpCisgIChsZXQqICgoZCAobW9kICgtIGEgYikgYmFzZSkpCisgICAgICAgICAoZCAoaWYgKDwgYSBiKSAobW9kICgrIGQgbSkgYmFzZSkgZCkpKQorICAgICAgICBkKSkKKworKGRlZnRobSBzdWJtb2QtMi1jb3JyZWN0CisgIChpbXBsaWVzIChhbmQgKDwgMCBtKSAoPCBtIGJhc2UpCisJCSg8IGEgbSkgKDw9IGIgbSkKKyAgICAgICAgICAgICAgICAobmF0cCBtKSAobmF0cCBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIGEpIChuYXRwIGIpKQorICAgICAgICAgICAoZXF1YWwgKHN1Ym1vZC0yIGEgYiBtIGJhc2UpCisgICAgICAgICAgICAgICAgICAobW9kICgtIGEgYikgbSkpKQorICA6aGludHMgKCgiU3ViZ29hbCAyJyIgOmNhc2VzICgoYW5kICg8IDAgKCsgYSAoLSBiKSBtKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPCAoKyBhICgtIGIpIG0pIG0pKSkpKSkKKworCis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis7OyAgICAgICAgICAgICAgICAgICAgICAgICBleHQtc3VibW9kIGlzIGNvcnJlY3QKKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworOyBhIDwgMiptLCBiIDwgMiptCisoZGVmdW4gZXh0LXN1Ym1vZCAoYSBiIG0gYmFzZSkKKyAgKGxldCogKChhIChpZiAoPj0gYSBtKSAoLSBhIG0pIGEpKQorICAgICAgICAgKGIgKGlmICg+PSBiIG0pICgtIGIgbSkgYikpCisgICAgICAgICAoZCAobW9kICgtIGEgYikgYmFzZSkpCisgICAgICAgICAoZCAoaWYgKDwgYSBiKSAobW9kICgrIGQgbSkgYmFzZSkgZCkpKQorICAgICAgICBkKSkKKworOyBhIDwgMiptLCBiIDwgMiptCisoZGVmdW4gZXh0LXN1Ym1vZC0yIChhIGIgbSBiYXNlKQorICAobGV0KiAoKGEgKG1vZCBhIG0pKQorICAgICAgICAgKGIgKG1vZCBiIG0pKQorICAgICAgICAgKGQgKG1vZCAoLSBhIGIpIGJhc2UpKQorICAgICAgICAgKGQgKGlmICg8IGEgYikgKG1vZCAoKyBkIG0pIGJhc2UpIGQpKSkKKyAgICAgICAgZCkpCisKKyhkZWZ0aG1kIGV4dC1zdWJtb2QtZXh0LXN1Ym1vZC0yLWVxdWFsCisgIChpbXBsaWVzIChhbmQgKDwgMCBtKSAoPCBtIGJhc2UpCisJCSg8IGEgKCogMiBtKSkgKDwgYiAoKiAyIG0pKQorICAgICAgICAgICAgICAgIChuYXRwIG0pIChuYXRwIGJhc2UpCisgICAgICAgICAgICAgICAgKG5hdHAgYSkgKG5hdHAgYikpCisgICAgICAgICAgIChlcXVhbCAoZXh0LXN1Ym1vZCBhIGIgbSBiYXNlKQorICAgICAgICAgICAgICAgICAgKGV4dC1zdWJtb2QtMiBhIGIgbSBiYXNlKSkpKQorCisoZGVmdGhtZCBleHQtc3VibW9kLTItY29ycmVjdAorICAoaW1wbGllcyAoYW5kICg8IDAgbSkgKDwgbSBiYXNlKQorCQkoPCBhICgqIDIgbSkpICg8IGIgKCogMiBtKSkKKyAgICAgICAgICAgICAgICAobmF0cCBtKSAobmF0cCBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIGEpIChuYXRwIGIpKQorICAgICAgICAgICAoZXF1YWwgKGV4dC1zdWJtb2QtMiBhIGIgbSBiYXNlKQorICAgICAgICAgICAgICAgICAgKG1vZCAoLSBhIGIpIG0pKSkpCisKKworOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHctcmVkdWNlIGlzIGNvcnJlY3QKKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKGRlZnVuIGR3LXJlZHVjZSAoaGkgbG8gbSBiYXNlKQorICAobGV0KiAoKHIxIChtb2QgaGkgbSkpCisgICAgICAgICAocjIgKG1vZCAoKyAoKiByMSBiYXNlKSBsbykgbSkpKQorICAgICAgICByMikpCisKKyhkZWZ0aG1kIGR3LXJlZHVjZS1jb3JyZWN0CisgIChpbXBsaWVzIChhbmQgKDwgMCBtKSAoPCBtIGJhc2UpCisJCSg8IGhpIGJhc2UpICg8IGxvIGJhc2UpCisgICAgICAgICAgICAgICAgKG5hdHAgbSkgKG5hdHAgYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBoaSkgKG5hdHAgbG8pKQorICAgICAgICAgICAoZXF1YWwgKGR3LXJlZHVjZSBoaSBsbyBtIGJhc2UpCisgICAgICAgICAgICAgICAgICAobW9kICgrICgqIGhpIGJhc2UpIGxvKSBtKSkpKQorCisoZGVmdGhtZCA8PS1tdWx0aXBseS1ib3RoLXNpZGVzLWJ5LXoKKyAgKGltcGxpZXMgKGFuZCAocmF0aW9uYWxwIHgpIChyYXRpb25hbHAgeSkKKyAgICAgICAgICAgICAgICAoPCAwIHopIChyYXRpb25hbHAgeikpCisgICAgICAgICAgIChlcXVhbCAoPD0geCB5KQorICAgICAgICAgICAgICAgICAgKDw9ICgqIHogeCkgKCogeiB5KSkpKSkKKworKGRlZnRobWQgZHctcmVkdWNlLWF1eDEKKyAgKGltcGxpZXMgKGFuZCAoPCAwIG0pICg8IG0gYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBtKSAobmF0cCBiYXNlKQorICAgICAgICAgICAgICAgICg8IGxvIGJhc2UpIChuYXRwIGxvKQorICAgICAgICAgICAgICAgICg8IHggbSkgKG5hdHAgeCkpCisgICAgICAgICAgICg8ICgrIGxvICgqIGJhc2UgeCkpICgqIGJhc2UgbSkpKQorICA6aGludHMgKCgiR29hbCIgOmNhc2VzICgoPD0gKCsgeCAxKSBtKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEnJyIgOmNhc2VzICgoPD0gKCogYmFzZSAoKyB4IDEpKSAoKiBiYXNlIG0pKSkpCisgICAgICAgICAgKCJzdWJnb2FsIDEuMiIgOnVzZSAoKDppbnN0YW5jZSA8PS1tdWx0aXBseS1ib3RoLXNpZGVzLWJ5LXoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4ICgrIDEgeCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeSBtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHogYmFzZSkpKSkpKQorCisoZGVmdGhtIGR3LXJlZHVjZS1hdXgyCisgIChpbXBsaWVzIChhbmQgKDwgeCAoKiBiYXNlIG0pKQorICAgICAgICAgICAgICAgICg8IDAgbSkgKDwgbSBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIG0pIChuYXRwIGJhc2UpIChuYXRwIHgpKQorICAgICAgICAgICAoPCAoZmxvb3IgeCBtKSBiYXNlKSkpCisKKzs7IFRoaXMgaXMgdGhlIG5lY2Vzc2FyeSBjb25kaXRpb24gZm9yIHVzaW5nIF9tcGRfZGl2X3dvcmRzKCkuCisoZGVmdGhtZCBkdy1yZWR1Y2Utc2Vjb25kLXF1b3RpZW50LWZpdHMtaW4tc2luZ2xlLXdvcmQKKyAgKGltcGxpZXMgKGFuZCAoPCAwIG0pICg8IG0gYmFzZSkKKyAgICAgICAgICAgICAgICAoPCBoaSBiYXNlKSAoPCBsbyBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIG0pIChuYXRwIGJhc2UpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKQorICAgICAgICAgICAgICAgIChlcXVhbCByMSAobW9kIGhpIG0pKSkKKyAgICAgICAgICAgKDwgKGZsb29yICgrICgqIHIxIGJhc2UpIGxvKSBtKQorICAgICAgICAgICAgICBiYXNlKSkKKyAgOmhpbnRzICgoIkdvYWwiIDpjYXNlcyAoKDwgcjEgbSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxJyciIDpjYXNlcyAoKDwgKCsgbG8gKCogYmFzZSAobW9kIGhpIG0pKSkgKCogYmFzZSBtKSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxLjIiIDp1c2UgKCg6aW5zdGFuY2UgZHctcmVkdWNlLWF1eDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4IChtb2QgaGkgbSkpKSkpKSkKKworCis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdy1zdWJtb2QgaXMgY29ycmVjdAorOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisoZGVmdW4gZHctc3VibW9kIChhIGhpIGxvIG0gYmFzZSkKKyAgKGxldCogKChyIChkdy1yZWR1Y2UgaGkgbG8gbSBiYXNlKSkKKyAgICAgICAgIChkIChtb2QgKC0gYSByKSBiYXNlKSkKKyAgICAgICAgIChkIChpZiAoPCBhIHIpIChtb2QgKCsgZCBtKSBiYXNlKSBkKSkpCisgICAgICAgIGQpKQorCisoZGVmdGhtZCBkdy1zdWJtb2QtYXV4MQorICAoaW1wbGllcyAoYW5kIChuYXRwIGEpICg8IDAgbSkgKG5hdHAgbSkKKyAgICAgICAgICAgICAgICAobmF0cCB4KSAoZXF1YWwgciAobW9kIHggbSkpKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoLSBhIHgpIG0pCisgICAgICAgICAgICAgICAgICAobW9kICgtIGEgcikgbSkpKSkKKworKGRlZnRobWQgZHctc3VibW9kLWNvcnJlY3QKKyAgKGltcGxpZXMgKGFuZCAoPCAwIG0pICg8IG0gYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBhKSAoPCBhIG0pCisJCSg8IGhpIGJhc2UpICg8IGxvIGJhc2UpCisgICAgICAgICAgICAgICAgKG5hdHAgbSkgKG5hdHAgYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBoaSkgKG5hdHAgbG8pKQorICAgICAgICAgICAoZXF1YWwgKGR3LXN1Ym1vZCBhIGhpIGxvIG0gYmFzZSkKKyAgICAgICAgICAgICAgICAgIChtb2QgKC0gYSAoKyAoKiBiYXNlIGhpKSBsbykpIG0pKSkKKyAgOmhpbnRzICgoIkdvYWwiIDppbi10aGVvcnkgKGRpc2FibGUgZHctcmVkdWNlKQorICAgICAgICAgICAgICAgICAgOnVzZSAoKDppbnN0YW5jZSBkdy1zdWJtb2QtYXV4MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCAoKyBsbyAoKiBiYXNlIGhpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyIChkdy1yZWR1Y2UgaGkgbG8gbSBiYXNlKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAoOmluc3RhbmNlIGR3LXJlZHVjZS1jb3JyZWN0KSkpKSkKKworCis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis7OyAgICAgICAgICAgICAgICAgICAgICBBTlNJIEMgYXJpdGhtZXRpYyBmb3IgdWludDY0X3QKKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKGRlZnVuIGFkZCAoYSBiKQorICAobW9kICgrIGEgYikKKyAgICAgICAoZXhwdCAyIDY0KSkpCisKKyhkZWZ1biBzdWIgKGEgYikKKyAgKG1vZCAoLSBhIGIpCisgICAgICAgKGV4cHQgMiA2NCkpKQorCisoZGVmdW4gPDwgKHcgbikKKyAgKG1vZCAoKiB3IChleHB0IDIgbikpCisgICAgICAgKGV4cHQgMiA2NCkpKQorCisoZGVmdW4gPj4gKHcgbikKKyAgKGZsb29yIHcgKGV4cHQgMiBuKSkpCisKKzs7IGpvaW4gdXBwZXIgYW5kIGxvd2VyIGhhbGYgb2YgYSBkb3VibGUgd29yZCwgeWllbGRpbmcgYSAxMjggYml0IG51bWJlcgorKGRlZnVuIGpvaW4gKGhpIGxvKQorICAoKyAoKiAoZXhwdCAyIDY0KSBoaSkgbG8pKQorCisKKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis7OyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhc3QgbW9kdWxhciByZWR1Y3Rpb24KKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzs7IFRoZXNlIGFyZSB0aGUgdGhyZWUgcHJpbWVzIHVzZWQgaW4gdGhlIE51bWJlciBUaGVvcmV0aWMgVHJhbnNmb3JtLgorOzsgQSBmYXN0IG1vZHVsYXIgcmVkdWN0aW9uIHNjaGVtZSBleGlzdHMgZm9yIGFsbCBvZiB0aGVtLgorKGRlZm1hY3JvIHAxICgpCisgICgrIChleHB0IDIgNjQpICgtIChleHB0IDIgMzIpKSAxKSkKKworKGRlZm1hY3JvIHAyICgpCisgICgrIChleHB0IDIgNjQpICgtIChleHB0IDIgMzQpKSAxKSkKKworKGRlZm1hY3JvIHAzICgpCisgICgrIChleHB0IDIgNjQpICgtIChleHB0IDIgNDApKSAxKSkKKworCis7OyByZWR1Y2UgdGhlIGRvdWJsZSB3b3JkIG51bWJlciBoaSoyKio2NCArIGxvIChtb2QgcDEpCisoZGVmdW4gc2ltcGxlLW1vZC1yZWR1Y2UtcDEgKGhpIGxvKQorICAoKyAoKiAoZXhwdCAyIDMyKSBoaSkgKC0gaGkpIGxvKSkKKworOzsgcmVkdWNlIHRoZSBkb3VibGUgd29yZCBudW1iZXIgaGkqMioqNjQgKyBsbyAobW9kIHAyKQorKGRlZnVuIHNpbXBsZS1tb2QtcmVkdWNlLXAyIChoaSBsbykKKyAgKCsgKCogKGV4cHQgMiAzNCkgaGkpICgtIGhpKSBsbykpCisKKzs7IHJlZHVjZSB0aGUgZG91YmxlIHdvcmQgbnVtYmVyIGhpKjIqKjY0ICsgbG8gKG1vZCBwMykKKyhkZWZ1biBzaW1wbGUtbW9kLXJlZHVjZS1wMyAoaGkgbG8pCisgICgrICgqIChleHB0IDIgNDApIGhpKSAoLSBoaSkgbG8pKQorCisKKzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorOyAgICAgIFRoZSBtb2R1bGFyIHJlZHVjdGlvbnMgZ2l2ZW4gYWJvdmUgYXJlIGNvcnJlY3QKKzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisoZGVmdGhtZCBjb25ncnVlbmNlLXAxLWF1eAorICAoZXF1YWwgKCogKGV4cHQgMiA2NCkgaGkpCisgICAgICAgICAoKyAoKiAocDEpIGhpKQorICAgICAgICAgICAgKCogKGV4cHQgMiAzMikgaGkpCisgICAgICAgICAgICAoLSBoaSkpKSkKKworKGRlZnRobWQgY29uZ3J1ZW5jZS1wMi1hdXgKKyAgKGVxdWFsICgqIChleHB0IDIgNjQpIGhpKQorICAgICAgICAgKCsgKCogKHAyKSBoaSkKKyAgICAgICAgICAgICgqIChleHB0IDIgMzQpIGhpKQorICAgICAgICAgICAgKC0gaGkpKSkpCisKKyhkZWZ0aG1kIGNvbmdydWVuY2UtcDMtYXV4CisgIChlcXVhbCAoKiAoZXhwdCAyIDY0KSBoaSkKKyAgICAgICAgICgrICgqIChwMykgaGkpCisgICAgICAgICAgICAoKiAoZXhwdCAyIDQwKSBoaSkKKyAgICAgICAgICAgICgtIGhpKSkpKQorCisoZGVmdGhtZCBtb2QtYXVnbWVudAorICAoaW1wbGllcyAoYW5kIChyYXRpb25hbHAgeCkKKyAgICAgICAgICAgICAgICAocmF0aW9uYWxwIHkpCisgICAgICAgICAgICAgICAgKHJhdGlvbmFscCBtKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QgKCsgeCB5KSBtKQorICAgICAgICAgICAgICAgICAgKG1vZCAoKyB4IChtb2QgeSBtKSkgbSkpKSkKKworKGRlZnRobWQgc2ltcGxlLW1vZC1yZWR1Y2UtcDEtY29uZ3J1ZW50CisgIChpbXBsaWVzIChhbmQgKGludGVnZXJwIGhpKQorICAgICAgICAgICAgICAgIChpbnRlZ2VycCBsbykpCisgICAgICAgICAgIChlcXVhbCAobW9kIChzaW1wbGUtbW9kLXJlZHVjZS1wMSBoaSBsbykgKHAxKSkKKyAgICAgICAgICAgICAgICAgIChtb2QgKGpvaW4gaGkgbG8pIChwMSkpKSkKKyAgOmhpbnRzICgoIkdvYWwnJyIgOnVzZSAoKDppbnN0YW5jZSBjb25ncnVlbmNlLXAxLWF1eCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKDppbnN0YW5jZSBtb2QtYXVnbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtIChwMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggKCsgKC0gaGkpIGxvICgqIChleHB0IDIgMzIpIGhpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHkgKCogKHAxKSBoaSkpKSkpKSkKKworKGRlZnRobWQgc2ltcGxlLW1vZC1yZWR1Y2UtcDItY29uZ3J1ZW50CisgIChpbXBsaWVzIChhbmQgKGludGVnZXJwIGhpKQorICAgICAgICAgICAgICAgIChpbnRlZ2VycCBsbykpCisgICAgICAgICAgIChlcXVhbCAobW9kIChzaW1wbGUtbW9kLXJlZHVjZS1wMiBoaSBsbykgKHAyKSkKKyAgICAgICAgICAgICAgICAgIChtb2QgKGpvaW4gaGkgbG8pIChwMikpKSkKKyAgOmhpbnRzICgoIkdvYWwnJyIgOnVzZSAoKDppbnN0YW5jZSBjb25ncnVlbmNlLXAyLWF1eCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKDppbnN0YW5jZSBtb2QtYXVnbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtIChwMikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggKCsgKC0gaGkpIGxvICgqIChleHB0IDIgMzQpIGhpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHkgKCogKHAyKSBoaSkpKSkpKSkKKworKGRlZnRobWQgc2ltcGxlLW1vZC1yZWR1Y2UtcDMtY29uZ3J1ZW50CisgIChpbXBsaWVzIChhbmQgKGludGVnZXJwIGhpKQorICAgICAgICAgICAgICAgIChpbnRlZ2VycCBsbykpCisgICAgICAgICAgIChlcXVhbCAobW9kIChzaW1wbGUtbW9kLXJlZHVjZS1wMyBoaSBsbykgKHAzKSkKKyAgICAgICAgICAgICAgICAgIChtb2QgKGpvaW4gaGkgbG8pIChwMykpKSkKKyAgOmhpbnRzICgoIkdvYWwnJyIgOnVzZSAoKDppbnN0YW5jZSBjb25ncnVlbmNlLXAzLWF1eCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKDppbnN0YW5jZSBtb2QtYXVnbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtIChwMykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggKCsgKC0gaGkpIGxvICgqIChleHB0IDIgNDApIGhpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHkgKCogKHAzKSBoaSkpKSkpKSkKKworCis7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorOyAgV2UgbmVlZCBhIG51bWJlciBsZXNzIHRoYW4gMipwLCBzbyB0aGF0IHdlIGNhbiB1c2UgdGhlIHRyaWNrIGZyb20KKzsgIGVsaW0tbW9kLW08eDwyKm0gZm9yIHRoZSBmaW5hbCByZWR1Y3Rpb24uCis7ICBGb3IgcDEsIHR3byBtb2R1bGFyIHJlZHVjdGlvbnMgYXJlIHN1ZmZpY2llbnQsIGZvciBwMiBhbmQgcDMgdGhyZWUuCis7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis7OyBwMTogdGhlIGZpcnN0IHJlZHVjdGlvbiBpcyBsZXNzIHRoYW4gMioqOTYKKyhkZWZ0aG1kIHNpbXBsZS1tb2QtcmVkdWNlLXAxLTwtMioqOTYKKyAgKGltcGxpZXMgKGFuZCAoPCBoaSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCBsbyAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAobmF0cCBoaSkgKG5hdHAgbG8pKQorICAgICAgICAgICAoPCAoc2ltcGxlLW1vZC1yZWR1Y2UtcDEgaGkgbG8pCisgICAgICAgICAgICAgIChleHB0IDIgOTYpKSkpCisKKzs7IHAxOiB0aGUgc2Vjb25kIHJlZHVjdGlvbiBpcyBsZXNzIHRoYW4gMipwMQorKGRlZnRobWQgc2ltcGxlLW1vZC1yZWR1Y2UtcDEtPC0yKnAxCisgIChpbXBsaWVzIChhbmQgKDwgaGkgKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKDwgbG8gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKDwgKGpvaW4gaGkgbG8pIChleHB0IDIgOTYpKQorICAgICAgICAgICAgICAgIChuYXRwIGhpKSAobmF0cCBsbykpCisgICAgICAgICAgICg8IChzaW1wbGUtbW9kLXJlZHVjZS1wMSBoaSBsbykKKyAgICAgICAgICAgICAgKCogMiAocDEpKSkpKQorCisKKzs7IHAyOiB0aGUgZmlyc3QgcmVkdWN0aW9uIGlzIGxlc3MgdGhhbiAyKio5OAorKGRlZnRobWQgc2ltcGxlLW1vZC1yZWR1Y2UtcDItPC0yKio5OAorICAoaW1wbGllcyAoYW5kICg8IGhpIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IGxvIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgIChuYXRwIGhpKSAobmF0cCBsbykpCisgICAgICAgICAgICg8IChzaW1wbGUtbW9kLXJlZHVjZS1wMiBoaSBsbykKKyAgICAgICAgICAgICAgKGV4cHQgMiA5OCkpKSkKKworOzsgcDI6IHRoZSBzZWNvbmQgcmVkdWN0aW9uIGlzIGxlc3MgdGhhbiAyKio2OQorKGRlZnRobWQgc2ltcGxlLW1vZC1yZWR1Y2UtcDItPC0yKjY5CisgIChpbXBsaWVzIChhbmQgKDwgaGkgKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKDwgbG8gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKDwgKGpvaW4gaGkgbG8pIChleHB0IDIgOTgpKQorICAgICAgICAgICAgICAgIChuYXRwIGhpKSAobmF0cCBsbykpCisgICAgICAgICAgICg8IChzaW1wbGUtbW9kLXJlZHVjZS1wMiBoaSBsbykKKyAgICAgICAgICAgICAgKGV4cHQgMiA2OSkpKSkKKworOzsgcDM6IHRoZSB0aGlyZCByZWR1Y3Rpb24gaXMgbGVzcyB0aGFuIDIqcDIKKyhkZWZ0aG1kIHNpbXBsZS1tb2QtcmVkdWNlLXAyLTwtMipwMgorICAoaW1wbGllcyAoYW5kICg8IGhpIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IGxvIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IChqb2luIGhpIGxvKSAoZXhwdCAyIDY5KSkKKyAgICAgICAgICAgICAgICAobmF0cCBoaSkgKG5hdHAgbG8pKQorICAgICAgICAgICAoPCAoc2ltcGxlLW1vZC1yZWR1Y2UtcDIgaGkgbG8pCisgICAgICAgICAgICAgICgqIDIgKHAyKSkpKSkKKworCis7OyBwMzogdGhlIGZpcnN0IHJlZHVjdGlvbiBpcyBsZXNzIHRoYW4gMioqMTA0CisoZGVmdGhtZCBzaW1wbGUtbW9kLXJlZHVjZS1wMy08LTIqKjEwNAorICAoaW1wbGllcyAoYW5kICg8IGhpIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IGxvIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgIChuYXRwIGhpKSAobmF0cCBsbykpCisgICAgICAgICAgICg8IChzaW1wbGUtbW9kLXJlZHVjZS1wMyBoaSBsbykKKyAgICAgICAgICAgICAgKGV4cHQgMiAxMDQpKSkpCisKKzs7IHAzOiB0aGUgc2Vjb25kIHJlZHVjdGlvbiBpcyBsZXNzIHRoYW4gMioqODEKKyhkZWZ0aG1kIHNpbXBsZS1tb2QtcmVkdWNlLXAzLTwtMioqODEKKyAgKGltcGxpZXMgKGFuZCAoPCBoaSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCBsbyAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCAoam9pbiBoaSBsbykgKGV4cHQgMiAxMDQpKQorICAgICAgICAgICAgICAgIChuYXRwIGhpKSAobmF0cCBsbykpCisgICAgICAgICAgICg8IChzaW1wbGUtbW9kLXJlZHVjZS1wMyBoaSBsbykKKyAgICAgICAgICAgICAgKGV4cHQgMiA4MSkpKSkKKworOzsgcDM6IHRoZSB0aGlyZCByZWR1Y3Rpb24gaXMgbGVzcyB0aGFuIDIqcDMKKyhkZWZ0aG1kIHNpbXBsZS1tb2QtcmVkdWNlLXAzLTwtMipwMworICAoaW1wbGllcyAoYW5kICg8IGhpIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IGxvIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IChqb2luIGhpIGxvKSAoZXhwdCAyIDgxKSkKKyAgICAgICAgICAgICAgICAobmF0cCBoaSkgKG5hdHAgbG8pKQorICAgICAgICAgICAoPCAoc2ltcGxlLW1vZC1yZWR1Y2UtcDMgaGkgbG8pCisgICAgICAgICAgICAgICgqIDIgKHAzKSkpKSkKKworCis7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzsgICAgICBUaGUgc2ltcGxlIG1vZHVsYXIgcmVkdWN0aW9ucywgYWRhcHRlZCBmb3IgY29tcGlsZXIgZnJpZW5kbHkgQworOyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyhkZWZ1biBtb2QtcmVkdWNlLXAxIChoaSBsbykKKyAgKGxldCogKCh5IGhpKQorICAgICAgICAgKHggeSkKKyAgICAgICAgIChoaSAoPj4gaGkgMzIpKQorICAgICAgICAgKHggKHN1YiBsbyB4KSkKKyAgICAgICAgIChoaSAoaWYgKD4geCBsbykgKCsgaGkgLTEpIGhpKSkKKyAgICAgICAgICh5ICg8PCB5IDMyKSkKKyAgICAgICAgIChsbyAoYWRkIHkgeCkpCisgICAgICAgICAoaGkgKGlmICg8IGxvIHkpICgrIGhpIDEpIGhpKSkpCisgICAgICAgICgrICgqIGhpIChleHB0IDIgNjQpKSBsbykpKQorCisoZGVmdW4gbW9kLXJlZHVjZS1wMiAoaGkgbG8pCisgIChsZXQqICgoeSBoaSkKKyAgICAgICAgICh4IHkpCisgICAgICAgICAoaGkgKD4+IGhpIDMwKSkKKyAgICAgICAgICh4IChzdWIgbG8geCkpCisgICAgICAgICAoaGkgKGlmICg+IHggbG8pICgrIGhpIC0xKSBoaSkpCisgICAgICAgICAoeSAoPDwgeSAzNCkpCisgICAgICAgICAobG8gKGFkZCB5IHgpKQorICAgICAgICAgKGhpIChpZiAoPCBsbyB5KSAoKyBoaSAxKSBoaSkpKQorICAgICAgICAoKyAoKiBoaSAoZXhwdCAyIDY0KSkgbG8pKSkKKworKGRlZnVuIG1vZC1yZWR1Y2UtcDMgKGhpIGxvKQorICAobGV0KiAoKHkgaGkpCisgICAgICAgICAoeCB5KQorICAgICAgICAgKGhpICg+PiBoaSAyNCkpCisgICAgICAgICAoeCAoc3ViIGxvIHgpKQorICAgICAgICAgKGhpIChpZiAoPiB4IGxvKSAoKyBoaSAtMSkgaGkpKQorICAgICAgICAgKHkgKDw8IHkgNDApKQorICAgICAgICAgKGxvIChhZGQgeSB4KSkKKyAgICAgICAgIChoaSAoaWYgKDwgbG8geSkgKCsgaGkgMSkgaGkpKSkKKyAgICAgICAgKCsgKCogaGkgKGV4cHQgMiA2NCkpIGxvKSkpCisKKworOyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis7ICAgICBUaGUgY29tcGlsZXIgZnJpZW5kbHkgdmVyc2lvbnMgYXJlIGVxdWFsIHRvIHRoZSBzaW1wbGUgdmVyc2lvbnMKKzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisoZGVmdGhtIG1vZC1yZWR1Y2UtYXV4MQorICAoaW1wbGllcyAoYW5kICg8PSAwIGEpIChuYXRwIGEpIChuYXRwIG0pCisgICAgICAgICAgICAgICAgKDwgKC0gbSkgYikgKDw9IGIgMCkKKyAgICAgICAgICAgICAgICAoaW50ZWdlcnAgYikKKyAgICAgICAgICAgICAgICAoPCAobW9kICgrIGIgYSkgbSkKKyAgICAgICAgICAgICAgICAgICAobW9kIGEgbSkpKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoKyBiIGEpIG0pCisgICAgICAgICAgICAgICAgICAoKyBiIChtb2QgYSBtKSkpKQorICA6aGludHMgKCgiU3ViZ29hbCAyIiA6dXNlICgoOmluc3RhbmNlIG1vZGF1eC0xYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4ICgrIGEgYikpKSkpKSkKKworKGRlZnRobSBtb2QtcmVkdWNlLWF1eDIKKyAgKGltcGxpZXMgKGFuZCAoPD0gMCBhKSAobmF0cCBhKSAobmF0cCBtKQorICAgICAgICAgICAgICAgICg8IGIgbSkgKG5hdHAgYikKKyAgICAgICAgICAgICAgICAoPCAobW9kICgrIGIgYSkgbSkKKyAgICAgICAgICAgICAgICAgICAobW9kIGEgbSkpKQorICAgICAgICAgICAoZXF1YWwgKCsgbSAobW9kICgrIGIgYSkgbSkpCisgICAgICAgICAgICAgICAgICAoKyBiIChtb2QgYSBtKSkpKSkKKworCisoZGVmdGhtIG1vZC1yZWR1Y2UtYXV4MworICAoaW1wbGllcyAoYW5kICg8IDAgYSkgKG5hdHAgYSkgKG5hdHAgbSkKKyAgICAgICAgICAgICAgICAoPCAoLSBtKSBiKSAoPCBiIDApCisgICAgICAgICAgICAgICAgKGludGVnZXJwIGIpCisgICAgICAgICAgICAgICAgKDw9IChtb2QgYSBtKQorICAgICAgICAgICAgICAgICAgICAobW9kICgrIGIgYSkgbSkpKQorICAgICAgICAgICAoZXF1YWwgKCsgKC0gbSkgKG1vZCAoKyBiIGEpIG0pKQorICAgICAgICAgICAgICAgICAgKCsgYiAobW9kIGEgbSkpKSkKKyAgOmhpbnRzICgoIlN1YmdvYWwgMS4yJyIgOnVzZSAoKDppbnN0YW5jZSBtb2RhdXgtMWIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCBiKSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxJyciIDp1c2UgKCg6aW5zdGFuY2UgbW9kYXV4LTJkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCBJKSkpKSkpCisKKworKGRlZnRobSBtb2QtcmVkdWNlLWF1eDQKKyAgKGltcGxpZXMgKGFuZCAoPCAwIGEpIChuYXRwIGEpIChuYXRwIG0pCisgICAgICAgICAgICAgICAgKDwgYiBtKSAobmF0cCBiKQorICAgICAgICAgICAgICAgICg8PSAobW9kIGEgbSkKKyAgICAgICAgICAgICAgICAgICAgKG1vZCAoKyBiIGEpIG0pKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QgKCsgYiBhKSBtKQorICAgICAgICAgICAgICAgICAgKCsgYiAobW9kIGEgbSkpKSkpCisKKworKGRlZnRobSBtb2QtcmVkdWNlLXAxPT1zaW1wbGUtbW9kLXJlZHVjZS1wMQorICAoaW1wbGllcyAoYW5kICg8IGhpIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IGxvIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgIChuYXRwIGhpKSAobmF0cCBsbykpCisgICAgICAgICAgIChlcXVhbCAobW9kLXJlZHVjZS1wMSBoaSBsbykKKyAgICAgICAgICAgICAgICAgIChzaW1wbGUtbW9kLXJlZHVjZS1wMSBoaSBsbykpKQorICA6aGludHMgKCgiR29hbCIgOmluLXRoZW9yeSAoZGlzYWJsZSBleHB0KQorICAgICAgICAgICAgICAgICAgOmNhc2VzICgoPCAwIGhpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEuMi4yJyIgOnVzZSAoKDppbnN0YW5jZSBtb2QtcmVkdWNlLWF1eDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIgKCsgKC0gSEkpIExPKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhICgqIChleHB0IDIgMzIpIGhpKSkpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4yLjEnIiA6dXNlICgoOmluc3RhbmNlIG1vZC1yZWR1Y2UtYXV4MworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiAoKyAoLSBISSkgTE8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEgKCogKGV4cHQgMiAzMikgaGkpKSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxLjEuMiciIDp1c2UgKCg6aW5zdGFuY2UgbW9kLXJlZHVjZS1hdXgyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiICgrICgtIEhJKSBMTykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSAoKiAoZXhwdCAyIDMyKSBoaSkpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEuMS4xJyIgOnVzZSAoKDppbnN0YW5jZSBtb2QtcmVkdWNlLWF1eDQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIgKCsgKC0gSEkpIExPKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhICgqIChleHB0IDIgMzIpIGhpKSkpKSkpKQorCisKKyhkZWZ0aG0gbW9kLXJlZHVjZS1wMj09c2ltcGxlLW1vZC1yZWR1Y2UtcDIKKyAgKGltcGxpZXMgKGFuZCAoPCBoaSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCBsbyAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAobmF0cCBoaSkgKG5hdHAgbG8pKQorICAgICAgICAgICAoZXF1YWwgKG1vZC1yZWR1Y2UtcDIgaGkgbG8pCisgICAgICAgICAgICAgICAgICAoc2ltcGxlLW1vZC1yZWR1Y2UtcDIgaGkgbG8pKSkKKyAgOmhpbnRzICgoIkdvYWwiIDpjYXNlcyAoKDwgMCBoaSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxLjIuMiciIDp1c2UgKCg6aW5zdGFuY2UgbW9kLXJlZHVjZS1hdXgxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiICgrICgtIEhJKSBMTykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSAoKiAoZXhwdCAyIDM0KSBoaSkpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEuMi4xJyIgOnVzZSAoKDppbnN0YW5jZSBtb2QtcmVkdWNlLWF1eDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIgKCsgKC0gSEkpIExPKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhICgqIChleHB0IDIgMzQpIGhpKSkpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4xLjInIiA6dXNlICgoOmluc3RhbmNlIG1vZC1yZWR1Y2UtYXV4MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiAoKyAoLSBISSkgTE8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEgKCogKGV4cHQgMiAzNCkgaGkpKSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxLjEuMSciIDp1c2UgKCg6aW5zdGFuY2UgbW9kLXJlZHVjZS1hdXg0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiICgrICgtIEhJKSBMTykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSAoKiAoZXhwdCAyIDM0KSBoaSkpKSkpKSkKKworCisoZGVmdGhtIG1vZC1yZWR1Y2UtcDM9PXNpbXBsZS1tb2QtcmVkdWNlLXAzCisgIChpbXBsaWVzIChhbmQgKDwgaGkgKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKDwgbG8gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QtcmVkdWNlLXAzIGhpIGxvKQorICAgICAgICAgICAgICAgICAgKHNpbXBsZS1tb2QtcmVkdWNlLXAzIGhpIGxvKSkpCisgIDpoaW50cyAoKCJHb2FsIiA6Y2FzZXMgKCg8IDAgaGkpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4yLjInIiA6dXNlICgoOmluc3RhbmNlIG1vZC1yZWR1Y2UtYXV4MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiAoKyAoLSBISSkgTE8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEgKCogKGV4cHQgMiA0MCkgaGkpKSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxLjIuMSciIDp1c2UgKCg6aW5zdGFuY2UgbW9kLXJlZHVjZS1hdXgzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiICgrICgtIEhJKSBMTykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSAoKiAoZXhwdCAyIDQwKSBoaSkpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEuMS4yJyIgOnVzZSAoKDppbnN0YW5jZSBtb2QtcmVkdWNlLWF1eDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIgKCsgKC0gSEkpIExPKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhICgqIChleHB0IDIgNDApIGhpKSkpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4xLjEnIiA6dXNlICgoOmluc3RhbmNlIG1vZC1yZWR1Y2UtYXV4NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiAoKyAoLSBISSkgTE8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEgKCogKGV4cHQgMiA0MCkgaGkpKSkpKSkpCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjYzNTBmCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuYwpAQCAtMCwwICsxLDI5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSAidHlwZWFyaXRoLmgiCisjaW5jbHVkZSAibWVtb3J5LmgiCisKKworLyogR3VhcmFudGVlZCBtaW5pbXVtIGFsbG9jYXRpb24gZm9yIGEgY29lZmZpY2llbnQuIE1heSBiZSBjaGFuZ2VkIG9uY2UKKyAgIGF0IHByb2dyYW0gc3RhcnQgdXNpbmcgbXBkX3NldG1pbmFsbG9jKCkuICovCittcGRfc3NpemVfdCBNUERfTUlOQUxMT0MgPSBNUERfTUlOQUxMT0NfTUlOOworCisvKiBDdXN0b20gYWxsb2NhdGlvbiBhbmQgZnJlZSBmdW5jdGlvbnMgKi8KK3ZvaWQgKigqIG1wZF9tYWxsb2NmdW5jKShzaXplX3Qgc2l6ZSkgPSBtYWxsb2M7Cit2b2lkICooKiBtcGRfcmVhbGxvY2Z1bmMpKHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpID0gcmVhbGxvYzsKK3ZvaWQgKigqIG1wZF9jYWxsb2NmdW5jKShzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplKSA9IGNhbGxvYzsKK3ZvaWQgKCogbXBkX2ZyZWUpKHZvaWQgKnB0cikgPSBmcmVlOworCisKKy8qIGVtdWxhdGUgY2FsbG9jIGlmIGl0IGlzIG5vdCBhdmFpbGFibGUgKi8KK3ZvaWQgKgorbXBkX2NhbGxvY2Z1bmNfZW0oc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICB2b2lkICpwdHI7CisgICAgc2l6ZV90IHJlcTsKKyAgICBtcGRfc2l6ZV90IG92ZXJmbG93OworCisjaWYgTVBEX1NJWkVfTUFYIDwgU0laRV9NQVgKKyAgICAvKiBmdWxsX2NvdmVyYWdlIHRlc3Qgb25seSAqLworICAgIGlmIChubWVtYiA+IE1QRF9TSVpFX01BWCB8fCBzaXplID4gTVBEX1NJWkVfTUFYKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyNlbmRpZgorCisgICAgcmVxID0gbXVsX3NpemVfdF9vdmVyZmxvdygobXBkX3NpemVfdClubWVtYiwgKG1wZF9zaXplX3Qpc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdmVyZmxvdyk7CisgICAgaWYgKG92ZXJmbG93KSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHB0ciA9IG1wZF9tYWxsb2NmdW5jKHJlcSk7CisgICAgaWYgKHB0ciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAvKiB1c2VkIG9uIHVpbnQzMl90IG9yIHVpbnQ2NF90ICovCisgICAgbWVtc2V0KHB0ciwgMCwgcmVxKTsKKworICAgIHJldHVybiBwdHI7Cit9CisKKworLyogbWFsbG9jIHdpdGggb3ZlcmZsb3cgY2hlY2tpbmcgKi8KK3ZvaWQgKgorbXBkX2FsbG9jKG1wZF9zaXplX3Qgbm1lbWIsIG1wZF9zaXplX3Qgc2l6ZSkKK3sKKyAgICBtcGRfc2l6ZV90IHJlcSwgb3ZlcmZsb3c7CisKKyAgICByZXEgPSBtdWxfc2l6ZV90X292ZXJmbG93KG5tZW1iLCBzaXplLCAmb3ZlcmZsb3cpOworICAgIGlmIChvdmVyZmxvdykgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gbXBkX21hbGxvY2Z1bmMocmVxKTsKK30KKworLyogY2FsbG9jIHdpdGggb3ZlcmZsb3cgY2hlY2tpbmcgKi8KK3ZvaWQgKgorbXBkX2NhbGxvYyhtcGRfc2l6ZV90IG5tZW1iLCBtcGRfc2l6ZV90IHNpemUpCit7CisgICAgbXBkX3NpemVfdCBvdmVyZmxvdzsKKworICAgICh2b2lkKW11bF9zaXplX3Rfb3ZlcmZsb3cobm1lbWIsIHNpemUsICZvdmVyZmxvdyk7CisgICAgaWYgKG92ZXJmbG93KSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBtcGRfY2FsbG9jZnVuYyhubWVtYiwgc2l6ZSk7Cit9CisKKy8qIHJlYWxsb2Mgd2l0aCBvdmVyZmxvdyBjaGVja2luZyAqLwordm9pZCAqCittcGRfcmVhbGxvYyh2b2lkICpwdHIsIG1wZF9zaXplX3Qgbm1lbWIsIG1wZF9zaXplX3Qgc2l6ZSwgdWludDhfdCAqZXJyKQoreworICAgIHZvaWQgKm5ldzsKKyAgICBtcGRfc2l6ZV90IHJlcSwgb3ZlcmZsb3c7CisKKyAgICByZXEgPSBtdWxfc2l6ZV90X292ZXJmbG93KG5tZW1iLCBzaXplLCAmb3ZlcmZsb3cpOworICAgIGlmIChvdmVyZmxvdykgeworICAgICAgICAqZXJyID0gMTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBuZXcgPSBtcGRfcmVhbGxvY2Z1bmMocHRyLCByZXEpOworICAgIGlmIChuZXcgPT0gTlVMTCkgeworICAgICAgICAqZXJyID0gMTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gbmV3OworfQorCisvKiBzdHJ1Y3QgaGFjayBtYWxsb2Mgd2l0aCBvdmVyZmxvdyBjaGVja2luZyAqLwordm9pZCAqCittcGRfc2hfYWxsb2MobXBkX3NpemVfdCBzdHJ1Y3Rfc2l6ZSwgbXBkX3NpemVfdCBubWVtYiwgbXBkX3NpemVfdCBzaXplKQoreworICAgIG1wZF9zaXplX3QgcmVxLCBvdmVyZmxvdzsKKworICAgIHJlcSA9IG11bF9zaXplX3Rfb3ZlcmZsb3cobm1lbWIsIHNpemUsICZvdmVyZmxvdyk7CisgICAgaWYgKG92ZXJmbG93KSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlcSA9IGFkZF9zaXplX3Rfb3ZlcmZsb3cocmVxLCBzdHJ1Y3Rfc2l6ZSwgJm92ZXJmbG93KTsKKyAgICBpZiAob3ZlcmZsb3cpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIG1wZF9tYWxsb2NmdW5jKHJlcSk7Cit9CisKKworLyogQWxsb2NhdGUgYSBuZXcgZGVjaW1hbCB3aXRoIGEgY29lZmZpY2llbnQgb2YgbGVuZ3RoICdud29yZHMnLiBJbiBjYXNlCisgICBvZiBhbiBlcnJvciB0aGUgcmV0dXJuIHZhbHVlIGlzIE5VTEwuICovCittcGRfdCAqCittcGRfcW5ld19zaXplKG1wZF9zc2l6ZV90IG53b3JkcykKK3sKKyAgICBtcGRfdCAqcmVzdWx0OworCisgICAgbndvcmRzID0gKG53b3JkcyA8IE1QRF9NSU5BTExPQykgPyBNUERfTUlOQUxMT0MgOiBud29yZHM7CisKKyAgICByZXN1bHQgPSBtcGRfYWxsb2MoMSwgc2l6ZW9mICpyZXN1bHQpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQtPmRhdGEgPSBtcGRfYWxsb2MobndvcmRzLCBzaXplb2YgKnJlc3VsdC0+ZGF0YSk7CisgICAgaWYgKHJlc3VsdC0+ZGF0YSA9PSBOVUxMKSB7CisgICAgICAgIG1wZF9mcmVlKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdC0+ZmxhZ3MgPSAwOworICAgIHJlc3VsdC0+ZXhwID0gMDsKKyAgICByZXN1bHQtPmRpZ2l0cyA9IDA7CisgICAgcmVzdWx0LT5sZW4gPSAwOworICAgIHJlc3VsdC0+YWxsb2MgPSBud29yZHM7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBBbGxvY2F0ZSBhIG5ldyBkZWNpbWFsIHdpdGggYSBjb2VmZmljaWVudCBvZiBsZW5ndGggTVBEX01JTkFMTE9DLgorICAgSW4gY2FzZSBvZiBhbiBlcnJvciB0aGUgcmV0dXJuIHZhbHVlIGlzIE5VTEwuICovCittcGRfdCAqCittcGRfcW5ldyh2b2lkKQoreworICAgIHJldHVybiBtcGRfcW5ld19zaXplKE1QRF9NSU5BTExPQyk7Cit9CisKKy8qIEFsbG9jYXRlIG5ldyBkZWNpbWFsLiBDYWxsZXIgY2FuIGNoZWNrIGZvciBOVUxMIG9yIE1QRF9NYWxsb2NfZXJyb3IuCisgICBSYWlzZXMgb24gZXJyb3IuICovCittcGRfdCAqCittcGRfbmV3KG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICBtcGRfdCAqcmVzdWx0OworCisgICAgcmVzdWx0ID0gbXBkX3FuZXcoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgbXBkX2FkZHN0YXR1c19yYWlzZShjdHgsIE1QRF9NYWxsb2NfZXJyb3IpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogSW5wdXQ6ICdyZXN1bHQnIGlzIGEgc3RhdGljIG1wZF90IHdpdGggYSBzdGF0aWMgY29lZmZpY2llbnQuCisgKiBBc3N1bXB0aW9uOiAnbndvcmRzJyA+PSByZXN1bHQtPmFsbG9jLgorICoKKyAqIFJlc2l6ZSB0aGUgc3RhdGljIGNvZWZmaWNpZW50IHRvIGEgbGFyZ2VyIGR5bmFtaWMgb25lIGFuZCBjb3B5IHRoZQorICogZXhpc3RpbmcgZGF0YS4gSWYgc3VjY2Vzc2Z1bCwgdGhlIHZhbHVlIG9mICdyZXN1bHQnIGlzIHVuY2hhbmdlZC4KKyAqIE90aGVyd2lzZSwgc2V0ICdyZXN1bHQnIHRvIE5hTiBhbmQgdXBkYXRlICdzdGF0dXMnIHdpdGggTVBEX01hbGxvY19lcnJvci4KKyAqLworaW50CittcGRfc3dpdGNoX3RvX2R5bihtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBud29yZHMsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3VpbnRfdCAqcCA9IHJlc3VsdC0+ZGF0YTsKKworICAgIGFzc2VydChud29yZHMgPj0gcmVzdWx0LT5hbGxvYyk7CisKKyAgICByZXN1bHQtPmRhdGEgPSBtcGRfYWxsb2MobndvcmRzLCBzaXplb2YgKnJlc3VsdC0+ZGF0YSk7CisgICAgaWYgKHJlc3VsdC0+ZGF0YSA9PSBOVUxMKSB7CisgICAgICAgIHJlc3VsdC0+ZGF0YSA9IHA7CisgICAgICAgIG1wZF9zZXRfcW5hbihyZXN1bHQpOworICAgICAgICBtcGRfc2V0X3Bvc2l0aXZlKHJlc3VsdCk7CisgICAgICAgIHJlc3VsdC0+ZXhwID0gcmVzdWx0LT5kaWdpdHMgPSByZXN1bHQtPmxlbiA9IDA7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX01hbGxvY19lcnJvcjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgbWVtY3B5KHJlc3VsdC0+ZGF0YSwgcCwgcmVzdWx0LT5hbGxvYyAqIChzaXplb2YgKnJlc3VsdC0+ZGF0YSkpOworICAgIHJlc3VsdC0+YWxsb2MgPSBud29yZHM7CisgICAgbXBkX3NldF9keW5hbWljX2RhdGEocmVzdWx0KTsKKyAgICByZXR1cm4gMTsKK30KKworLyoKKyAqIElucHV0OiAncmVzdWx0JyBpcyBhIHN0YXRpYyBtcGRfdCB3aXRoIGEgc3RhdGljIGNvZWZmaWNpZW50LgorICoKKyAqIENvbnZlcnQgdGhlIGNvZWZmaWNpZW50IHRvIGEgZHluYW1pYyBvbmUgdGhhdCBpcyBpbml0aWFsaXplZCB0byB6ZXJvLiBJZgorICogbWFsbG9jIGZhaWxzLCBzZXQgJ3Jlc3VsdCcgdG8gTmFOIGFuZCB1cGRhdGUgJ3N0YXR1cycgd2l0aCBNUERfTWFsbG9jX2Vycm9yLgorICovCitpbnQKK21wZF9zd2l0Y2hfdG9fZHluX3plcm8obXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3QgbndvcmRzLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF91aW50X3QgKnAgPSByZXN1bHQtPmRhdGE7CisKKyAgICByZXN1bHQtPmRhdGEgPSBtcGRfY2FsbG9jKG53b3Jkcywgc2l6ZW9mICpyZXN1bHQtPmRhdGEpOworICAgIGlmIChyZXN1bHQtPmRhdGEgPT0gTlVMTCkgeworICAgICAgICByZXN1bHQtPmRhdGEgPSBwOworICAgICAgICBtcGRfc2V0X3FuYW4ocmVzdWx0KTsKKyAgICAgICAgbXBkX3NldF9wb3NpdGl2ZShyZXN1bHQpOworICAgICAgICByZXN1bHQtPmV4cCA9IHJlc3VsdC0+ZGlnaXRzID0gcmVzdWx0LT5sZW4gPSAwOworICAgICAgICAqc3RhdHVzIHw9IE1QRF9NYWxsb2NfZXJyb3I7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJlc3VsdC0+YWxsb2MgPSBud29yZHM7CisgICAgbXBkX3NldF9keW5hbWljX2RhdGEocmVzdWx0KTsKKworICAgIHJldHVybiAxOworfQorCisvKgorICogSW5wdXQ6ICdyZXN1bHQnIGlzIGEgc3RhdGljIG9yIGEgZHluYW1pYyBtcGRfdCB3aXRoIGEgZHluYW1pYyBjb2VmZmljaWVudC4KKyAqIFJlc2l6ZSB0aGUgY29lZmZpY2llbnQgdG8gbGVuZ3RoICdud29yZHMnOgorICogICBDYXNlIG53b3JkcyA+IHJlc3VsdC0+YWxsb2M6CisgKiAgICAgSWYgcmVhbGxvYyBpcyBzdWNjZXNzZnVsOgorICogICAgICAgJ3Jlc3VsdCcgaGFzIGEgbGFyZ2VyIGNvZWZmaWNpZW50IGJ1dCB0aGUgc2FtZSB2YWx1ZS4gUmV0dXJuIDEuCisgKiAgICAgT3RoZXJ3aXNlOgorICogICAgICAgU2V0ICdyZXN1bHQnIHRvIE5hTiwgdXBkYXRlIHN0YXR1cyB3aXRoIE1QRF9NYWxsb2NfZXJyb3IgYW5kIHJldHVybiAwLgorICogICBDYXNlIG53b3JkcyA8IHJlc3VsdC0+YWxsb2M6CisgKiAgICAgSWYgcmVhbGxvYyBpcyBzdWNjZXNzZnVsOgorICogICAgICAgJ3Jlc3VsdCcgaGFzIGEgc21hbGxlciBjb2VmZmljaWVudC4gcmVzdWx0LT5sZW4gaXMgdW5kZWZpbmVkLiBSZXR1cm4gMS4KKyAqICAgICBPdGhlcndpc2UgKHVubGlrZWx5KToKKyAqICAgICAgICdyZXN1bHQnIGlzIHVuY2hhbmdlZC4gUmV1c2UgdGhlIG5vdyBvdmVyc2l6ZWQgY29lZmZpY2llbnQuIFJldHVybiAxLgorICovCitpbnQKK21wZF9yZWFsbG9jX2R5bihtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBud29yZHMsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgdWludDhfdCBlcnIgPSAwOworCisgICAgcmVzdWx0LT5kYXRhID0gbXBkX3JlYWxsb2MocmVzdWx0LT5kYXRhLCBud29yZHMsIHNpemVvZiAqcmVzdWx0LT5kYXRhLCAmZXJyKTsKKyAgICBpZiAoIWVycikgeworICAgICAgICByZXN1bHQtPmFsbG9jID0gbndvcmRzOworICAgIH0KKyAgICBlbHNlIGlmIChud29yZHMgPiByZXN1bHQtPmFsbG9jKSB7CisgICAgICAgIG1wZF9zZXRfcW5hbihyZXN1bHQpOworICAgICAgICBtcGRfc2V0X3Bvc2l0aXZlKHJlc3VsdCk7CisgICAgICAgIHJlc3VsdC0+ZXhwID0gcmVzdWx0LT5kaWdpdHMgPSByZXN1bHQtPmxlbiA9IDA7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX01hbGxvY19lcnJvcjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U3M2MxMwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBNRU1PUllfSAorI2RlZmluZSBNRU1PUllfSAorCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKworCisvKiBJbnRlcm5hbCBoZWFkZXIgZmlsZTogYWxsIHN5bWJvbHMgaGF2ZSBsb2NhbCBzY29wZSBpbiB0aGUgRFNPICovCitNUERfUFJBR01BKE1QRF9ISURFX1NZTUJPTFNfU1RBUlQpCisKKworaW50IG1wZF9zd2l0Y2hfdG9fZHluKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IHNpemUsIHVpbnQzMl90ICpzdGF0dXMpOworaW50IG1wZF9zd2l0Y2hfdG9fZHluX3plcm8obXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3Qgc2l6ZSwgdWludDMyX3QgKnN0YXR1cyk7CitpbnQgbXBkX3JlYWxsb2NfZHluKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IHNpemUsIHVpbnQzMl90ICpzdGF0dXMpOworCisKK01QRF9QUkFHTUEoTVBEX0hJREVfU1lNQk9MU19FTkQpIC8qIHJlc3RvcmUgcHJldmlvdXMgc2NvcGUgcnVsZXMgKi8KKworCisjZW5kaWYKKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2M2ExYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jCkBAIC0wLDAgKzEsODE0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgImJhc2Vhcml0aC5oIgorI2luY2x1ZGUgImJpdHMuaCIKKyNpbmNsdWRlICJjb252b2x1dGUuaCIKKyNpbmNsdWRlICJjcnQuaCIKKyNpbmNsdWRlICJtZW1vcnkuaCIKKyNpbmNsdWRlICJ0eXBlYXJpdGguaCIKKyNpbmNsdWRlICJ1bW9kYXJpdGguaCIKKworI2lmZGVmIFBQUk8KKyAgI2lmIGRlZmluZWQoX01TQ19WRVIpCisgICAgI2luY2x1ZGUgPGZsb2F0Lmg+CisgICAgI3ByYWdtYSBmZW52X2FjY2VzcyhvbikKKyAgI2VsaWYgIWRlZmluZWQoX19PcGVuQlNEX18pICYmICFkZWZpbmVkKF9fTmV0QlNEX18pCisgICAgLyogQzk5ICovCisgICAgI2luY2x1ZGUgPGZlbnYuaD4KKyAgICAjcHJhZ21hIFNUREMgRkVOVl9BQ0NFU1MgT04KKyAgI2VuZGlmCisjZW5kaWYKKworCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyAgI2RlZmluZSBBTFdBWVNfSU5MSU5FIF9fZm9yY2VpbmxpbmUKKyNlbGlmIGRlZmluZWQoTEVHQUNZX0NPTVBJTEVSKQorICAjZGVmaW5lIEFMV0FZU19JTkxJTkUKKyAgI3VuZGVmIGlubGluZQorICAjZGVmaW5lIGlubGluZQorI2Vsc2UKKyAgI2lmZGVmIFRFU1RfQ09WRVJBR0UKKyAgICAjZGVmaW5lIEFMV0FZU19JTkxJTkUKKyAgI2Vsc2UKKyAgICAjZGVmaW5lIEFMV0FZU19JTkxJTkUgaW5saW5lIF9fYXR0cmlidXRlX18gKChhbHdheXNfaW5saW5lKSkKKyAgI2VuZGlmCisjZW5kaWYKKworCisjZGVmaW5lIE1QRF9ORVdUT05ESVZfQ1VUT0ZGIDEwMjRMCisKKyNkZWZpbmUgTVBEX05FV19TVEFUSUMobmFtZSwgZmxhZ3MsIGV4cCwgZGlnaXRzLCBsZW4pIFwKKyAgICAgICAgbXBkX3VpbnRfdCBuYW1lIyNfZGF0YVtNUERfTUlOQUxMT0NfTUFYXTsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbXBkX3QgbmFtZSA9IHtmbGFnc3xNUERfU1RBVElDfE1QRF9TVEFUSUNfREFUQSwgZXhwLCBkaWdpdHMsIFwKKyAgICAgICAgICAgICAgICAgICAgICBsZW4sIE1QRF9NSU5BTExPQ19NQVgsIG5hbWUjI19kYXRhfQorCisjZGVmaW5lIE1QRF9ORVdfQ09OU1QobmFtZSwgZmxhZ3MsIGV4cCwgZGlnaXRzLCBsZW4sIGFsbG9jLCBpbml0dmFsKSBcCisgICAgICAgIG1wZF91aW50X3QgbmFtZSMjX2RhdGFbYWxsb2NdID0ge2luaXR2YWx9OyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1wZF90IG5hbWUgPSB7ZmxhZ3N8TVBEX1NUQVRJQ3xNUERfQ09OU1RfREFUQSwgZXhwLCBkaWdpdHMsICBcCisgICAgICAgICAgICAgICAgICAgICAgbGVuLCBhbGxvYywgbmFtZSMjX2RhdGF9CisKKyNkZWZpbmUgTVBEX05FV19TSEFSRUQobmFtZSwgYSkgXAorICAgICAgICBtcGRfdCBuYW1lID0geyhhLT5mbGFncyZ+TVBEX0RBVEFGTEFHUyl8TVBEX1NUQVRJQ3xNUERfU0hBUkVEX0RBVEEsIFwKKyAgICAgICAgICAgICAgICAgICAgICBhLT5leHAsIGEtPmRpZ2l0cywgYS0+bGVuLCBhLT5hbGxvYywgYS0+ZGF0YX0KKworCitzdGF0aWMgbXBkX3VpbnRfdCBkYXRhX29uZVsxXSA9IHsxfTsKK3N0YXRpYyBtcGRfdWludF90IGRhdGFfemVyb1sxXSA9IHswfTsKK3N0YXRpYyBjb25zdCBtcGRfdCBvbmUgPSB7TVBEX1NUQVRJQ3xNUERfQ09OU1RfREFUQSwgMCwgMSwgMSwgMSwgZGF0YV9vbmV9Oworc3RhdGljIGNvbnN0IG1wZF90IG1pbnVzX29uZSA9IHtNUERfTkVHfE1QRF9TVEFUSUN8TVBEX0NPTlNUX0RBVEEsIDAsIDEsIDEsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfb25lfTsKK3N0YXRpYyBjb25zdCBtcGRfdCB6ZXJvID0ge01QRF9TVEFUSUN8TVBEX0NPTlNUX0RBVEEsIDAsIDEsIDEsIDEsIGRhdGFfemVyb307CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfbXBkX2NoZWNrX2V4cChtcGRfdCAqZGVjLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cyk7CitzdGF0aWMgdm9pZCBfc2V0dHJpcGxlKG1wZF90ICpyZXN1bHQsIHVpbnQ4X3Qgc2lnbiwgbXBkX3VpbnRfdCBhLAorICAgICAgICAgICAgICAgICAgICAgICBtcGRfc3NpemVfdCBleHApOworc3RhdGljIGlubGluZSBtcGRfc3NpemVfdCBfbXBkX3JlYWxfc2l6ZShtcGRfdWludF90ICpkYXRhLCBtcGRfc3NpemVfdCBzaXplKTsKKworc3RhdGljIHZvaWQgX21wZF9xYWRkKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworc3RhdGljIGlubGluZSB2b2lkIF9tcGRfcW11bChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CitzdGF0aWMgdm9pZCBfbXBkX2Jhc2VfbmRpdm1vZChtcGRfdCAqcSwgbXBkX3QgKnIsIGNvbnN0IG1wZF90ICphLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXBkX3QgKmIsIHVpbnQzMl90ICpzdGF0dXMpOworc3RhdGljIGlubGluZSB2b2lkIF9tcGRfcXBvd191aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1wZF91aW50X3QgZXhwLCB1aW50OF90IHJlc3VsdHNpZ24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKworc3RhdGljIG1wZF91aW50X3QgbXBkX3Fzc2hpZnRyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBuKTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICBQZXJmb3JtYW5jZSBjcml0aWNhbCBpbmxpbmUgZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZmRlZiBDT05GSUdfNjQKKy8qIERpZ2l0cyBpbiBhIHdvcmQsIHByaW1hcmlseSB1c2VmdWwgZm9yIHRoZSBtb3N0IHNpZ25pZmljYW50IHdvcmQuICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX3dvcmRfZGlnaXRzKG1wZF91aW50X3Qgd29yZCkKK3sKKyAgICBpZiAod29yZCA8IG1wZF9wb3cxMFs5XSkgeworICAgICAgICBpZiAod29yZCA8IG1wZF9wb3cxMFs0XSkgeworICAgICAgICAgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbMl0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKHdvcmQgPCBtcGRfcG93MTBbMV0pID8gMSA6IDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gKHdvcmQgPCBtcGRfcG93MTBbM10pID8gMyA6IDQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbNl0pIHsKKyAgICAgICAgICAgIHJldHVybiAod29yZCA8IG1wZF9wb3cxMFs1XSkgPyA1IDogNjsKKyAgICAgICAgfQorICAgICAgICBpZiAod29yZCA8IG1wZF9wb3cxMFs4XSkgeworICAgICAgICAgICAgcmV0dXJuICh3b3JkIDwgbXBkX3BvdzEwWzddKSA/IDcgOiA4OworICAgICAgICB9CisgICAgICAgIHJldHVybiA5OworICAgIH0KKyAgICBpZiAod29yZCA8IG1wZF9wb3cxMFsxNF0pIHsKKyAgICAgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbMTFdKSB7CisgICAgICAgICAgICByZXR1cm4gKHdvcmQgPCBtcGRfcG93MTBbMTBdKSA/IDEwIDogMTE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbMTNdKSB7CisgICAgICAgICAgICByZXR1cm4gKHdvcmQgPCBtcGRfcG93MTBbMTJdKSA/IDEyIDogMTM7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE0OworICAgIH0KKyAgICBpZiAod29yZCA8IG1wZF9wb3cxMFsxOF0pIHsKKyAgICAgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbMTZdKSB7CisgICAgICAgICAgICByZXR1cm4gKHdvcmQgPCBtcGRfcG93MTBbMTVdKSA/IDE1IDogMTY7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICh3b3JkIDwgbXBkX3BvdzEwWzE3XSkgPyAxNyA6IDE4OworICAgIH0KKworICAgIHJldHVybiAod29yZCA8IG1wZF9wb3cxMFsxOV0pID8gMTkgOiAyMDsKK30KKyNlbHNlCitBTFdBWVNfSU5MSU5FIGludAorbXBkX3dvcmRfZGlnaXRzKG1wZF91aW50X3Qgd29yZCkKK3sKKyAgICBpZiAod29yZCA8IG1wZF9wb3cxMFs0XSkgeworICAgICAgICBpZiAod29yZCA8IG1wZF9wb3cxMFsyXSkgeworICAgICAgICAgICAgcmV0dXJuICh3b3JkIDwgbXBkX3BvdzEwWzFdKSA/IDEgOiAyOworICAgICAgICB9CisgICAgICAgIHJldHVybiAod29yZCA8IG1wZF9wb3cxMFszXSkgPyAzIDogNDsKKyAgICB9CisgICAgaWYgKHdvcmQgPCBtcGRfcG93MTBbNl0pIHsKKyAgICAgICAgcmV0dXJuICh3b3JkIDwgbXBkX3BvdzEwWzVdKSA/IDUgOiA2OworICAgIH0KKyAgICBpZiAod29yZCA8IG1wZF9wb3cxMFs4XSkgeworICAgICAgICByZXR1cm4gKHdvcmQgPCBtcGRfcG93MTBbN10pID8gNyA6IDg7CisgICAgfQorCisgICAgcmV0dXJuICh3b3JkIDwgbXBkX3BvdzEwWzldKSA/IDkgOiAxMDsKK30KKyNlbmRpZgorCisKKy8qIEFkanVzdGVkIGV4cG9uZW50ICovCitBTFdBWVNfSU5MSU5FIG1wZF9zc2l6ZV90CittcGRfYWRqZXhwKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIChkZWMtPmV4cCArIGRlYy0+ZGlnaXRzKSAtIDE7Cit9CisKKy8qIEV0aW55ICovCitBTFdBWVNfSU5MSU5FIG1wZF9zc2l6ZV90CittcGRfZXRpbnkoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHJldHVybiBjdHgtPmVtaW4gLSAoY3R4LT5wcmVjIC0gMSk7Cit9CisKKy8qIEV0b3A6IHVzZWQgZm9yIGZvbGRpbmcgZG93biBpbiBJRUVFIGNsYW1waW5nICovCitBTFdBWVNfSU5MSU5FIG1wZF9zc2l6ZV90CittcGRfZXRvcChjb25zdCBtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgcmV0dXJuIGN0eC0+ZW1heCAtIChjdHgtPnByZWMgLSAxKTsKK30KKworLyogTW9zdCBzaWduaWZpY2FudCB3b3JkICovCitBTFdBWVNfSU5MSU5FIG1wZF91aW50X3QKK21wZF9tc3dvcmQoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICBhc3NlcnQoZGVjLT5sZW4gPiAwKTsKKyAgICByZXR1cm4gZGVjLT5kYXRhW2RlYy0+bGVuLTFdOworfQorCisvKiBNb3N0IHNpZ25pZmljYW50IGRpZ2l0IG9mIGEgd29yZCAqLworaW5saW5lIG1wZF91aW50X3QKK21wZF9tc2QobXBkX3VpbnRfdCB3b3JkKQoreworICAgIGludCBuOworCisgICAgbiA9IG1wZF93b3JkX2RpZ2l0cyh3b3JkKTsKKyAgICByZXR1cm4gd29yZCAvIG1wZF9wb3cxMFtuLTFdOworfQorCisvKiBMZWFzdCBzaWduaWZpY2FudCBkaWdpdCBvZiBhIHdvcmQgKi8KK0FMV0FZU19JTkxJTkUgbXBkX3VpbnRfdAorbXBkX2xzZChtcGRfdWludF90IHdvcmQpCit7CisgICAgcmV0dXJuIHdvcmQgJSAxMDsKK30KKworLyogQ29lZmZpY2llbnQgc2l6ZSBuZWVkZWQgdG8gc3RvcmUgJ2RpZ2l0cycgKi8KK0FMV0FZU19JTkxJTkUgbXBkX3NzaXplX3QKK21wZF9kaWdpdHNfdG9fc2l6ZShtcGRfc3NpemVfdCBkaWdpdHMpCit7CisgICAgbXBkX3NzaXplX3QgcSwgcjsKKworICAgIF9tcGRfaWRpdl93b3JkKCZxLCAmciwgZGlnaXRzLCBNUERfUkRJR0lUUyk7CisgICAgcmV0dXJuIChyID09IDApID8gcSA6IHErMTsKK30KKworLyogTnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgZXhwb25lbnQuIE5vdCBkZWZpbmVkIGZvciBNUERfU1NJWkVfTUlOLiAqLworaW5saW5lIGludAorbXBkX2V4cF9kaWdpdHMobXBkX3NzaXplX3QgZXhwKQoreworICAgIGV4cCA9IChleHAgPCAwKSA/IC1leHAgOiBleHA7CisgICAgcmV0dXJuIG1wZF93b3JkX2RpZ2l0cyhleHApOworfQorCisvKiBDYW5vbmljYWwgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNjYW5vbmljYWwoY29uc3QgbXBkX3QgKmRlYyBVTlVTRUQpCit7CisgICAgcmV0dXJuIDE7Cit9CisKKy8qIEZpbml0ZSAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc2Zpbml0ZShjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiAhKGRlYy0+ZmxhZ3MgJiBNUERfU1BFQ0lBTCk7Cit9CisKKy8qIEluZmluaXRlICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzaW5maW5pdGUoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gZGVjLT5mbGFncyAmIE1QRF9JTkY7Cit9CisKKy8qIE5hTiAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc25hbihjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiBkZWMtPmZsYWdzICYgKE1QRF9OQU58TVBEX1NOQU4pOworfQorCisvKiBOZWdhdGl2ZSAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc25lZ2F0aXZlKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIGRlYy0+ZmxhZ3MgJiBNUERfTkVHOworfQorCisvKiBQb3NpdGl2ZSAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc3Bvc2l0aXZlKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuICEoZGVjLT5mbGFncyAmIE1QRF9ORUcpOworfQorCisvKiBxTmFOICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzcW5hbihjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiBkZWMtPmZsYWdzICYgTVBEX05BTjsKK30KKworLyogU2lnbmVkICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzc2lnbmVkKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIGRlYy0+ZmxhZ3MgJiBNUERfTkVHOworfQorCisvKiBzTmFOICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzc25hbihjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiBkZWMtPmZsYWdzICYgTVBEX1NOQU47Cit9CisKKy8qIFNwZWNpYWwgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNzcGVjaWFsKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIGRlYy0+ZmxhZ3MgJiBNUERfU1BFQ0lBTDsKK30KKworLyogWmVybyAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc3plcm8oY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gIW1wZF9pc3NwZWNpYWwoZGVjKSAmJiBtcGRfbXN3b3JkKGRlYykgPT0gMDsKK30KKworLyogVGVzdCBmb3IgemVybyB3aGVuIHNwZWNpYWxzIGhhdmUgYmVlbiBydWxlZCBvdXQgYWxyZWFkeSAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc3plcm9jb2VmZihjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiBtcGRfbXN3b3JkKGRlYykgPT0gMDsKK30KKworLyogTm9ybWFsICovCitpbmxpbmUgaW50CittcGRfaXNub3JtYWwoY29uc3QgbXBkX3QgKmRlYywgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIGlmIChtcGRfaXNzcGVjaWFsKGRlYykpIHJldHVybiAwOworICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoZGVjKSkgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gbXBkX2FkamV4cChkZWMpID49IGN0eC0+ZW1pbjsKK30KKworLyogU3Vibm9ybWFsICovCitpbmxpbmUgaW50CittcGRfaXNzdWJub3JtYWwoY29uc3QgbXBkX3QgKmRlYywgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIGlmIChtcGRfaXNzcGVjaWFsKGRlYykpIHJldHVybiAwOworICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoZGVjKSkgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gbXBkX2FkamV4cChkZWMpIDwgY3R4LT5lbWluOworfQorCisvKiBPZGQgd29yZCAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc29kZHdvcmQobXBkX3VpbnRfdCB3b3JkKQoreworICAgIHJldHVybiB3b3JkICYgMTsKK30KKworLyogT2RkIGNvZWZmaWNpZW50ICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzb2RkY29lZmYoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gbXBkX2lzb2Rkd29yZChkZWMtPmRhdGFbMF0pOworfQorCisvKiAwIGlmIGRlYyBpcyBwb3NpdGl2ZSwgMSBpZiBkZWMgaXMgbmVnYXRpdmUgKi8KK0FMV0FZU19JTkxJTkUgdWludDhfdAorbXBkX3NpZ24oY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gZGVjLT5mbGFncyAmIE1QRF9ORUc7Cit9CisKKy8qIDEgaWYgZGVjIGlzIHBvc2l0aXZlLCAtMSBpZiBkZWMgaXMgbmVnYXRpdmUgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfYXJpdGhfc2lnbihjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiAxIC0gMiAqIG1wZF9pc25lZ2F0aXZlKGRlYyk7Cit9CisKKy8qIFJhZGl4ICovCitBTFdBWVNfSU5MSU5FIGxvbmcKK21wZF9yYWRpeCh2b2lkKQoreworICAgIHJldHVybiAxMDsKK30KKworLyogRHluYW1pYyBkZWNpbWFsICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzZHluYW1pYyhtcGRfdCAqZGVjKQoreworICAgIHJldHVybiAhKGRlYy0+ZmxhZ3MgJiBNUERfU1RBVElDKTsKK30KKworLyogU3RhdGljIGRlY2ltYWwgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNzdGF0aWMobXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gZGVjLT5mbGFncyAmIE1QRF9TVEFUSUM7Cit9CisKKy8qIERhdGEgb2YgZGVjaW1hbCBpcyBkeW5hbWljICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzZHluYW1pY19kYXRhKG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuICEoZGVjLT5mbGFncyAmIE1QRF9EQVRBRkxBR1MpOworfQorCisvKiBEYXRhIG9mIGRlY2ltYWwgaXMgc3RhdGljICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzc3RhdGljX2RhdGEobXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gZGVjLT5mbGFncyAmIE1QRF9TVEFUSUNfREFUQTsKK30KKworLyogRGF0YSBvZiBkZWNpbWFsIGlzIHNoYXJlZCAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc3NoYXJlZF9kYXRhKG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIGRlYy0+ZmxhZ3MgJiBNUERfU0hBUkVEX0RBVEE7Cit9CisKKy8qIERhdGEgb2YgZGVjaW1hbCBpcyBjb25zdCAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc2NvbnN0X2RhdGEobXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gZGVjLT5mbGFncyAmIE1QRF9DT05TVF9EQVRBOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICBJbmxpbmUgbWVtb3J5IGhhbmRsaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogRmlsbCBkZXN0aW5hdGlvbiB3aXRoIHplcm9zICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF91aW50X3plcm8obXBkX3VpbnRfdCAqZGVzdCwgbXBkX3NpemVfdCBsZW4pCit7CisgICAgbXBkX3NpemVfdCBpOworCisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIGRlc3RbaV0gPSAwOworICAgIH0KK30KKworLyogRnJlZSBhIGRlY2ltYWwgKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX2RlbChtcGRfdCAqZGVjKQoreworICAgIGlmIChtcGRfaXNkeW5hbWljX2RhdGEoZGVjKSkgeworICAgICAgICBtcGRfZnJlZShkZWMtPmRhdGEpOworICAgIH0KKyAgICBpZiAobXBkX2lzZHluYW1pYyhkZWMpKSB7CisgICAgICAgIG1wZF9mcmVlKGRlYyk7CisgICAgfQorfQorCisvKgorICogUmVzaXplIHRoZSBjb2VmZmljaWVudC4gRXhpc3RpbmcgZGF0YSB1cCB0byAnbndvcmRzJyBpcyBsZWZ0IHVudG91Y2hlZC4KKyAqIFJldHVybiAxIG9uIHN1Y2Nlc3MsIDAgb3RoZXJ3aXNlLgorICoKKyAqIElucHV0IGludmFyaWFudDogTVBEX01JTkFMTE9DIDw9IHJlc3VsdC0+YWxsb2MuCisgKgorICogQ2FzZSBud29yZHMgPT0gcmVzdWx0LT5hbGxvYzoKKyAqICAgICAncmVzdWx0JyBpcyB1bmNoYW5nZWQuIFJldHVybiAxLgorICoKKyAqIENhc2UgbndvcmRzID4gcmVzdWx0LT5hbGxvYzoKKyAqICAgQ2FzZSByZWFsbG9jIHN1Y2Nlc3M6CisgKiAgICAgVGhlIHZhbHVlIG9mICdyZXN1bHQnIGRvZXMgbm90IGNoYW5nZS4gUmV0dXJuIDEuCisgKiAgIENhc2UgcmVhbGxvYyBmYWlsdXJlOgorICogICAgICdyZXN1bHQnIGlzIE5hTiwgc3RhdHVzIGlzIHVwZGF0ZWQgd2l0aCBNUERfTWFsbG9jX2Vycm9yLiBSZXR1cm4gMC4KKyAqCisgKiBDYXNlIG53b3JkcyA8IHJlc3VsdC0+YWxsb2M6CisgKiAgIENhc2UgaXNfc3RhdGljX2RhdGEgb3IgcmVhbGxvYyBmYWlsdXJlIFsxXToKKyAqICAgICAncmVzdWx0JyBpcyB1bmNoYW5nZWQuIFJldHVybiAxLgorICogICBDYXNlIHJlYWxsb2Mgc3VjY2VzczoKKyAqICAgICBUaGUgdmFsdWUgb2YgcmVzdWx0IGlzIHVuZGVmaW5lZCAoZXhwZWN0ZWQpLiBSZXR1cm4gMS4KKyAqCisgKgorICogWzFdIEluIHRoYXQgY2FzZSB0aGUgb2xkIChub3cgb3ZlcnNpemVkKSBhcmVhIGlzIHN0aWxsIHZhbGlkLgorICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX3FyZXNpemUobXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3QgbndvcmRzLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGFzc2VydCghbXBkX2lzY29uc3RfZGF0YShyZXN1bHQpKTsgLyogaWxsZWdhbCBvcGVyYXRpb24gZm9yIGEgY29uc3QgKi8KKyAgICBhc3NlcnQoIW1wZF9pc3NoYXJlZF9kYXRhKHJlc3VsdCkpOyAvKiBpbGxlZ2FsIG9wZXJhdGlvbiBmb3IgYSBzaGFyZWQgKi8KKyAgICBhc3NlcnQoTVBEX01JTkFMTE9DIDw9IHJlc3VsdC0+YWxsb2MpOworCisgICAgbndvcmRzID0gKG53b3JkcyA8PSBNUERfTUlOQUxMT0MpID8gTVBEX01JTkFMTE9DIDogbndvcmRzOworICAgIGlmIChud29yZHMgPT0gcmVzdWx0LT5hbGxvYykgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKG1wZF9pc3N0YXRpY19kYXRhKHJlc3VsdCkpIHsKKyAgICAgICAgaWYgKG53b3JkcyA+IHJlc3VsdC0+YWxsb2MpIHsKKyAgICAgICAgICAgIHJldHVybiBtcGRfc3dpdGNoX3RvX2R5bihyZXN1bHQsIG53b3Jkcywgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICByZXR1cm4gbXBkX3JlYWxsb2NfZHluKHJlc3VsdCwgbndvcmRzLCBzdGF0dXMpOworfQorCisvKiBTYW1lIGFzIG1wZF9xcmVzaXplLCBidXQgdGhlIGNvbXBsZXRlIGNvZWZmaWNpZW50IChpbmNsdWRpbmcgdGhlIG9sZAorICogbWVtb3J5IGFyZWEhKSBpcyBpbml0aWFsaXplZCB0byB6ZXJvLiAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9xcmVzaXplX3plcm8obXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3QgbndvcmRzLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGFzc2VydCghbXBkX2lzY29uc3RfZGF0YShyZXN1bHQpKTsgLyogaWxsZWdhbCBvcGVyYXRpb24gZm9yIGEgY29uc3QgKi8KKyAgICBhc3NlcnQoIW1wZF9pc3NoYXJlZF9kYXRhKHJlc3VsdCkpOyAvKiBpbGxlZ2FsIG9wZXJhdGlvbiBmb3IgYSBzaGFyZWQgKi8KKyAgICBhc3NlcnQoTVBEX01JTkFMTE9DIDw9IHJlc3VsdC0+YWxsb2MpOworCisgICAgbndvcmRzID0gKG53b3JkcyA8PSBNUERfTUlOQUxMT0MpID8gTVBEX01JTkFMTE9DIDogbndvcmRzOworICAgIGlmIChud29yZHMgIT0gcmVzdWx0LT5hbGxvYykgeworICAgICAgICBpZiAobXBkX2lzc3RhdGljX2RhdGEocmVzdWx0KSkgeworICAgICAgICAgICAgaWYgKG53b3JkcyA+IHJlc3VsdC0+YWxsb2MpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbXBkX3N3aXRjaF90b19keW5femVybyhyZXN1bHQsIG53b3Jkcywgc3RhdHVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICghbXBkX3JlYWxsb2NfZHluKHJlc3VsdCwgbndvcmRzLCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1wZF91aW50X3plcm8ocmVzdWx0LT5kYXRhLCBud29yZHMpOworICAgIHJldHVybiAxOworfQorCisvKgorICogUmVkdWNlIG1lbW9yeSBzaXplIGZvciB0aGUgY29lZmZpY2llbnQgdG8gTVBEX01JTkFMTE9DLiBJbiB0aGVvcnksCisgKiByZWFsbG9jIG1heSBmYWlsIGV2ZW4gd2hlbiByZWR1Y2luZyB0aGUgbWVtb3J5IHNpemUuIEJ1dCBpbiB0aGF0IGNhc2UKKyAqIHRoZSBvbGQgbWVtb3J5IGFyZWEgaXMgYWx3YXlzIGJpZyBlbm91Z2gsIHNvIGNoZWNraW5nIGZvciBNUERfTWFsbG9jX2Vycm9yCisgKiBpcyBub3QgaW1wZXJhdGl2ZS4KKyAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfbWluYWxsb2MobXBkX3QgKnJlc3VsdCkKK3sKKyAgICBhc3NlcnQoIW1wZF9pc2NvbnN0X2RhdGEocmVzdWx0KSk7IC8qIGlsbGVnYWwgb3BlcmF0aW9uIGZvciBhIGNvbnN0ICovCisgICAgYXNzZXJ0KCFtcGRfaXNzaGFyZWRfZGF0YShyZXN1bHQpKTsgLyogaWxsZWdhbCBvcGVyYXRpb24gZm9yIGEgc2hhcmVkICovCisKKyAgICBpZiAoIW1wZF9pc3N0YXRpY19kYXRhKHJlc3VsdCkgJiYgcmVzdWx0LT5hbGxvYyA+IE1QRF9NSU5BTExPQykgeworICAgICAgICB1aW50OF90IGVyciA9IDA7CisgICAgICAgIHJlc3VsdC0+ZGF0YSA9IG1wZF9yZWFsbG9jKHJlc3VsdC0+ZGF0YSwgTVBEX01JTkFMTE9DLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YgKnJlc3VsdC0+ZGF0YSwgJmVycik7CisgICAgICAgIGlmICghZXJyKSB7CisgICAgICAgICAgICByZXN1bHQtPmFsbG9jID0gTVBEX01JTkFMTE9DOworICAgICAgICB9CisgICAgfQorfQorCitpbnQKK21wZF9yZXNpemUobXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3QgbndvcmRzLCBtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBpZiAoIW1wZF9xcmVzaXplKHJlc3VsdCwgbndvcmRzLCAmc3RhdHVzKSkgeworICAgICAgICBtcGRfYWRkc3RhdHVzX3JhaXNlKGN0eCwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitpbnQKK21wZF9yZXNpemVfemVybyhtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBud29yZHMsIG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIGlmICghbXBkX3FyZXNpemVfemVybyhyZXN1bHQsIG53b3JkcywgJnN0YXR1cykpIHsKKyAgICAgICAgbXBkX2FkZHN0YXR1c19yYWlzZShjdHgsIHN0YXR1cyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgIFNldCBhdHRyaWJ1dGVzIG9mIGEgZGVjaW1hbCAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFNldCBkaWdpdHMuIEFzc3VtcHRpb246IHJlc3VsdC0+bGVuIGlzIGluaXRpYWxpemVkIGFuZCA+IDAuICovCitpbmxpbmUgdm9pZAorbXBkX3NldGRpZ2l0cyhtcGRfdCAqcmVzdWx0KQoreworICAgIG1wZF9zc2l6ZV90IHdkaWdpdHMgPSBtcGRfd29yZF9kaWdpdHMobXBkX21zd29yZChyZXN1bHQpKTsKKyAgICByZXN1bHQtPmRpZ2l0cyA9IHdkaWdpdHMgKyAocmVzdWx0LT5sZW4tMSkgKiBNUERfUkRJR0lUUzsKK30KKworLyogU2V0IHNpZ24gKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX3NldF9zaWduKG1wZF90ICpyZXN1bHQsIHVpbnQ4X3Qgc2lnbikKK3sKKyAgICByZXN1bHQtPmZsYWdzICY9IH5NUERfTkVHOworICAgIHJlc3VsdC0+ZmxhZ3MgfD0gc2lnbjsKK30KKworLyogQ29weSBzaWduIGZyb20gYW5vdGhlciBkZWNpbWFsICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9zaWduY3B5KG1wZF90ICpyZXN1bHQsIG1wZF90ICphKQoreworICAgIHVpbnQ4X3Qgc2lnbiA9IGEtPmZsYWdzJk1QRF9ORUc7CisKKyAgICByZXN1bHQtPmZsYWdzICY9IH5NUERfTkVHOworICAgIHJlc3VsdC0+ZmxhZ3MgfD0gc2lnbjsKK30KKworLyogU2V0IGluZmluaXR5ICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9zZXRfaW5maW5pdHkobXBkX3QgKnJlc3VsdCkKK3sKKyAgICByZXN1bHQtPmZsYWdzICY9IH5NUERfU1BFQ0lBTDsKKyAgICByZXN1bHQtPmZsYWdzIHw9IE1QRF9JTkY7Cit9CisKKy8qIFNldCBxTmFOICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9zZXRfcW5hbihtcGRfdCAqcmVzdWx0KQoreworICAgIHJlc3VsdC0+ZmxhZ3MgJj0gfk1QRF9TUEVDSUFMOworICAgIHJlc3VsdC0+ZmxhZ3MgfD0gTVBEX05BTjsKK30KKworLyogU2V0IHNOYU4gKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX3NldF9zbmFuKG1wZF90ICpyZXN1bHQpCit7CisgICAgcmVzdWx0LT5mbGFncyAmPSB+TVBEX1NQRUNJQUw7CisgICAgcmVzdWx0LT5mbGFncyB8PSBNUERfU05BTjsKK30KKworLyogU2V0IHRvIG5lZ2F0aXZlICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9zZXRfbmVnYXRpdmUobXBkX3QgKnJlc3VsdCkKK3sKKyAgICByZXN1bHQtPmZsYWdzIHw9IE1QRF9ORUc7Cit9CisKKy8qIFNldCB0byBwb3NpdGl2ZSAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfc2V0X3Bvc2l0aXZlKG1wZF90ICpyZXN1bHQpCit7CisgICAgcmVzdWx0LT5mbGFncyAmPSB+TVBEX05FRzsKK30KKworLyogU2V0IHRvIGR5bmFtaWMgKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX3NldF9keW5hbWljKG1wZF90ICpyZXN1bHQpCit7CisgICAgcmVzdWx0LT5mbGFncyAmPSB+TVBEX1NUQVRJQzsKK30KKworLyogU2V0IHRvIHN0YXRpYyAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfc2V0X3N0YXRpYyhtcGRfdCAqcmVzdWx0KQoreworICAgIHJlc3VsdC0+ZmxhZ3MgfD0gTVBEX1NUQVRJQzsKK30KKworLyogU2V0IGRhdGEgdG8gZHluYW1pYyAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfc2V0X2R5bmFtaWNfZGF0YShtcGRfdCAqcmVzdWx0KQoreworICAgIHJlc3VsdC0+ZmxhZ3MgJj0gfk1QRF9EQVRBRkxBR1M7Cit9CisKKy8qIFNldCBkYXRhIHRvIHN0YXRpYyAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfc2V0X3N0YXRpY19kYXRhKG1wZF90ICpyZXN1bHQpCit7CisgICAgcmVzdWx0LT5mbGFncyAmPSB+TVBEX0RBVEFGTEFHUzsKKyAgICByZXN1bHQtPmZsYWdzIHw9IE1QRF9TVEFUSUNfREFUQTsKK30KKworLyogU2V0IGRhdGEgdG8gc2hhcmVkICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9zZXRfc2hhcmVkX2RhdGEobXBkX3QgKnJlc3VsdCkKK3sKKyAgICByZXN1bHQtPmZsYWdzICY9IH5NUERfREFUQUZMQUdTOworICAgIHJlc3VsdC0+ZmxhZ3MgfD0gTVBEX1NIQVJFRF9EQVRBOworfQorCisvKiBTZXQgZGF0YSB0byBjb25zdCAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfc2V0X2NvbnN0X2RhdGEobXBkX3QgKnJlc3VsdCkKK3sKKyAgICByZXN1bHQtPmZsYWdzICY9IH5NUERfREFUQUZMQUdTOworICAgIHJlc3VsdC0+ZmxhZ3MgfD0gTVBEX0NPTlNUX0RBVEE7Cit9CisKKy8qIENsZWFyIGZsYWdzLCBwcmVzZXJ2aW5nIG1lbW9yeSBhdHRyaWJ1dGVzLiAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfY2xlYXJfZmxhZ3MobXBkX3QgKnJlc3VsdCkKK3sKKyAgICByZXN1bHQtPmZsYWdzICY9IChNUERfU1RBVElDfE1QRF9EQVRBRkxBR1MpOworfQorCisvKiBTZXQgZmxhZ3MsIHByZXNlcnZpbmcgbWVtb3J5IGF0dHJpYnV0ZXMuICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9zZXRfZmxhZ3MobXBkX3QgKnJlc3VsdCwgdWludDhfdCBmbGFncykKK3sKKyAgICByZXN1bHQtPmZsYWdzICY9IChNUERfU1RBVElDfE1QRF9EQVRBRkxBR1MpOworICAgIHJlc3VsdC0+ZmxhZ3MgfD0gZmxhZ3M7Cit9CisKKy8qIENvcHkgZmxhZ3MsIHByZXNlcnZpbmcgbWVtb3J5IGF0dHJpYnV0ZXMgb2YgcmVzdWx0LiAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfY29weV9mbGFncyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSkKK3sKKyAgICB1aW50OF90IGFmbGFncyA9IGEtPmZsYWdzOworICAgIHJlc3VsdC0+ZmxhZ3MgJj0gKE1QRF9TVEFUSUN8TVBEX0RBVEFGTEFHUyk7CisgICAgcmVzdWx0LT5mbGFncyB8PSAoYWZsYWdzICYgfihNUERfU1RBVElDfE1QRF9EQVRBRkxBR1MpKTsKK30KKworLyogSW5pdGlhbGl6ZSBhIHdvcmtjb250ZXh0IGZyb20gY3R4LiBTZXQgdHJhcHMsIGZsYWdzIGFuZCBuZXd0cmFwIHRvIDAuICovCitzdGF0aWMgaW5saW5lIHZvaWQKK21wZF93b3JrY29udGV4dChtcGRfY29udGV4dF90ICp3b3JrY3R4LCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgd29ya2N0eC0+cHJlYyA9IGN0eC0+cHJlYzsKKyAgICB3b3JrY3R4LT5lbWF4ID0gY3R4LT5lbWF4OworICAgIHdvcmtjdHgtPmVtaW4gPSBjdHgtPmVtaW47CisgICAgd29ya2N0eC0+cm91bmQgPSBjdHgtPnJvdW5kOworICAgIHdvcmtjdHgtPnRyYXBzID0gMDsKKyAgICB3b3JrY3R4LT5zdGF0dXMgPSAwOworICAgIHdvcmtjdHgtPm5ld3RyYXAgPSAwOworICAgIHdvcmtjdHgtPmNsYW1wID0gY3R4LT5jbGFtcDsKKyAgICB3b3JrY3R4LT5hbGxjciA9IGN0eC0+YWxsY3I7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgR2V0dGluZyBhbmQgc2V0dGluZyBwYXJ0cyBvZiBkZWNpbWFscyAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBGbGlwIHRoZSBzaWduIG9mIGEgZGVjaW1hbCAqLworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX25lZ2F0ZShtcGRfdCAqZGVjKQoreworICAgIGRlYy0+ZmxhZ3MgXj0gTVBEX05FRzsKK30KKworLyogU2V0IGNvZWZmaWNpZW50IHRvIHplcm8gKi8KK3ZvaWQKK21wZF96ZXJvY29lZmYobXBkX3QgKnJlc3VsdCkKK3sKKyAgICBtcGRfbWluYWxsb2MocmVzdWx0KTsKKyAgICByZXN1bHQtPmRpZ2l0cyA9IDE7CisgICAgcmVzdWx0LT5sZW4gPSAxOworICAgIHJlc3VsdC0+ZGF0YVswXSA9IDA7Cit9CisKKy8qIFNldCB0aGUgY29lZmZpY2llbnQgdG8gYWxsIG5pbmVzLiAqLwordm9pZAorbXBkX3FtYXhjb2VmZihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3NzaXplX3QgbGVuLCByOworCisgICAgX21wZF9pZGl2X3dvcmQoJmxlbiwgJnIsIGN0eC0+cHJlYywgTVBEX1JESUdJVFMpOworICAgIGxlbiA9IChyID09IDApID8gbGVuIDogbGVuKzE7CisKKyAgICBpZiAoIW1wZF9xcmVzaXplKHJlc3VsdCwgbGVuLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZXN1bHQtPmxlbiA9IGxlbjsKKyAgICByZXN1bHQtPmRpZ2l0cyA9IGN0eC0+cHJlYzsKKworICAgIC0tbGVuOworICAgIGlmIChyID4gMCkgeworICAgICAgICByZXN1bHQtPmRhdGFbbGVuLS1dID0gbXBkX3BvdzEwW3JdLTE7CisgICAgfQorICAgIGZvciAoOyBsZW4gPj0gMDsgLS1sZW4pIHsKKyAgICAgICAgcmVzdWx0LT5kYXRhW2xlbl0gPSBNUERfUkFESVgtMTsKKyAgICB9Cit9CisKKy8qCisgKiBDdXQgb2ZmIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0cyBzbyB0aGF0IHRoZSByZXN0IGZpdHMgaW4gY3R4LT5wcmVjLgorICogQ2Fubm90IGZhaWwuCisgKi8KK3N0YXRpYyB2b2lkCitfbXBkX2NhcChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgdWludDMyX3QgZHVtbXk7CisgICAgbXBkX3NzaXplX3QgbGVuLCByOworCisgICAgaWYgKHJlc3VsdC0+bGVuID4gMCAmJiByZXN1bHQtPmRpZ2l0cyA+IGN0eC0+cHJlYykgeworICAgICAgICBfbXBkX2lkaXZfd29yZCgmbGVuLCAmciwgY3R4LT5wcmVjLCBNUERfUkRJR0lUUyk7CisgICAgICAgIGxlbiA9IChyID09IDApID8gbGVuIDogbGVuKzE7CisKKyAgICAgICAgaWYgKHIgIT0gMCkgeworICAgICAgICAgICAgcmVzdWx0LT5kYXRhW2xlbi0xXSAlPSBtcGRfcG93MTBbcl07CisgICAgICAgIH0KKworICAgICAgICBsZW4gPSBfbXBkX3JlYWxfc2l6ZShyZXN1bHQtPmRhdGEsIGxlbik7CisgICAgICAgIC8qIHJlc2l6ZSB0byBmZXdlciB3b3JkcyBjYW5ub3QgZmFpbCAqLworICAgICAgICBtcGRfcXJlc2l6ZShyZXN1bHQsIGxlbiwgJmR1bW15KTsKKyAgICAgICAgcmVzdWx0LT5sZW4gPSBsZW47CisgICAgICAgIG1wZF9zZXRkaWdpdHMocmVzdWx0KTsKKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm8ocmVzdWx0KSkgeworICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgbXBkX3NpZ24ocmVzdWx0KSwgMCwgcmVzdWx0LT5leHApOworICAgIH0KK30KKworLyoKKyAqIEN1dCBvZmYgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgZGlnaXRzIG9mIGEgTmFOIHBheWxvYWQgc28gdGhhdCB0aGUgcmVzdAorICogZml0cyBpbiBjdHgtPnByZWMgLSBjdHgtPmNsYW1wLiBDYW5ub3QgZmFpbC4KKyAqLworc3RhdGljIHZvaWQKK19tcGRfZml4X25hbihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgdWludDMyX3QgZHVtbXk7CisgICAgbXBkX3NzaXplX3QgcHJlYzsKKyAgICBtcGRfc3NpemVfdCBsZW4sIHI7CisKKyAgICBwcmVjID0gY3R4LT5wcmVjIC0gY3R4LT5jbGFtcDsKKyAgICBpZiAocmVzdWx0LT5sZW4gPiAwICYmIHJlc3VsdC0+ZGlnaXRzID4gcHJlYykgeworICAgICAgICBpZiAocHJlYyA9PSAwKSB7CisgICAgICAgICAgICBtcGRfbWluYWxsb2MocmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdC0+bGVuID0gcmVzdWx0LT5kaWdpdHMgPSAwOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgX21wZF9pZGl2X3dvcmQoJmxlbiwgJnIsIHByZWMsIE1QRF9SRElHSVRTKTsKKyAgICAgICAgICAgIGxlbiA9IChyID09IDApID8gbGVuIDogbGVuKzE7CisKKyAgICAgICAgICAgIGlmIChyICE9IDApIHsKKyAgICAgICAgICAgICAgICAgcmVzdWx0LT5kYXRhW2xlbi0xXSAlPSBtcGRfcG93MTBbcl07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxlbiA9IF9tcGRfcmVhbF9zaXplKHJlc3VsdC0+ZGF0YSwgbGVuKTsKKyAgICAgICAgICAgIC8qIHJlc2l6ZSB0byBmZXdlciB3b3JkcyBjYW5ub3QgZmFpbCAqLworICAgICAgICAgICAgbXBkX3FyZXNpemUocmVzdWx0LCBsZW4sICZkdW1teSk7CisgICAgICAgICAgICByZXN1bHQtPmxlbiA9IGxlbjsKKyAgICAgICAgICAgIG1wZF9zZXRkaWdpdHMocmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChtcGRfaXN6ZXJvY29lZmYocmVzdWx0KSkgeworICAgICAgICAgICAgICAgIC8qIE5hTjAgaXMgbm90IGEgdmFsaWQgcmVwcmVzZW50YXRpb24gKi8KKyAgICAgICAgICAgICAgICByZXN1bHQtPmxlbiA9IHJlc3VsdC0+ZGlnaXRzID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworLyoKKyAqIEdldCBuIG1vc3Qgc2lnbmlmaWNhbnQgZGlnaXRzIGZyb20gYSBkZWNpbWFsLCB3aGVyZSAwIDwgbiA8PSBNUERfVUlOVF9ESUdJVFMuCisgKiBBc3N1bWVzIE1QRF9VSU5UX0RJR0lUUyA9PSBNUERfUkRJR0lUUysxLCB3aGljaCBpcyB0cnVlIGZvciAzMiBhbmQgNjQgYml0CisgKiBtYWNoaW5lcy4KKyAqCisgKiBUaGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gd2lsbCBiZSBpbiBsby4gSWYgdGhlIG9wZXJhdGlvbiBpcyBpbXBvc3NpYmxlLAorICogaGkgd2lsbCBiZSBub256ZXJvLiBUaGlzIGlzIHVzZWQgdG8gaW5kaWNhdGUgYW4gZXJyb3IuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9nZXRfbXNkaWdpdHMobXBkX3VpbnRfdCAqaGksIG1wZF91aW50X3QgKmxvLCBjb25zdCBtcGRfdCAqZGVjLAorICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG4pCit7CisgICAgbXBkX3VpbnRfdCByLCB0bXA7CisKKyAgICBhc3NlcnQoMCA8IG4gJiYgbiA8PSBNUERfUkRJR0lUUysxKTsKKworICAgIF9tcGRfZGl2X3dvcmQoJnRtcCwgJnIsIGRlYy0+ZGlnaXRzLCBNUERfUkRJR0lUUyk7CisgICAgciA9IChyID09IDApID8gTVBEX1JESUdJVFMgOiByOyAvKiBkaWdpdHMgaW4gdGhlIG1vc3Qgc2lnbmlmaWNhbnQgd29yZCAqLworCisgICAgKmhpID0gMDsKKyAgICAqbG8gPSBkZWMtPmRhdGFbZGVjLT5sZW4tMV07CisgICAgaWYgKG4gPD0gcikgeworICAgICAgICAqbG8gLz0gbXBkX3BvdzEwW3Itbl07CisgICAgfQorICAgIGVsc2UgaWYgKGRlYy0+bGVuID4gMSkgeworICAgICAgICAvKiBhdCB0aGlzIHBvaW50IDEgPD0gciA8IG4gPD0gTVBEX1JESUdJVFMrMSAqLworICAgICAgICBfbXBkX211bF93b3JkcyhoaSwgbG8sICpsbywgbXBkX3BvdzEwW24tcl0pOworICAgICAgICB0bXAgPSBkZWMtPmRhdGFbZGVjLT5sZW4tMl0gLyBtcGRfcG93MTBbTVBEX1JESUdJVFMtKG4tcildOworICAgICAgICAqbG8gPSAqbG8gKyB0bXA7CisgICAgICAgIGlmICgqbG8gPCB0bXApICgqaGkpKys7CisgICAgfQorfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICBHYXRoZXJpbmcgaW5mb3JtYXRpb24gYWJvdXQgYSBkZWNpbWFsICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogVGhlIHJlYWwgc2l6ZSBvZiB0aGUgY29lZmZpY2llbnQgd2l0aG91dCBsZWFkaW5nIHplcm8gd29yZHMuICovCitzdGF0aWMgaW5saW5lIG1wZF9zc2l6ZV90CitfbXBkX3JlYWxfc2l6ZShtcGRfdWludF90ICpkYXRhLCBtcGRfc3NpemVfdCBzaXplKQoreworICAgIHdoaWxlIChzaXplID4gMSAmJiBkYXRhW3NpemUtMV0gPT0gMCkgeworICAgICAgICBzaXplLS07CisgICAgfQorCisgICAgcmV0dXJuIHNpemU7Cit9CisKKy8qIFJldHVybiBudW1iZXIgb2YgdHJhaWxpbmcgemVyb3MuIE5vIGVycm9ycyBhcmUgcG9zc2libGUuICovCittcGRfc3NpemVfdAorbXBkX3RyYWlsX3plcm9zKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgbXBkX3VpbnRfdCB3b3JkOworICAgIG1wZF9zc2l6ZV90IGksIHR6ID0gMDsKKworICAgIGZvciAoaT0wOyBpIDwgZGVjLT5sZW47ICsraSkgeworICAgICAgICBpZiAoZGVjLT5kYXRhW2ldICE9IDApIHsKKyAgICAgICAgICAgIHdvcmQgPSBkZWMtPmRhdGFbaV07CisgICAgICAgICAgICB0eiA9IGkgKiBNUERfUkRJR0lUUzsKKyAgICAgICAgICAgIHdoaWxlICh3b3JkICUgMTAgPT0gMCkgeworICAgICAgICAgICAgICAgIHdvcmQgLz0gMTA7CisgICAgICAgICAgICAgICAgdHorKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHR6OworfQorCisvKiBJbnRlZ2VyOiBVbmRlZmluZWQgZm9yIHNwZWNpYWxzICovCitzdGF0aWMgaW50CitfbXBkX2lzaW50KGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgbXBkX3NzaXplX3QgdHo7CisKKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGRlYykpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgdHogPSBtcGRfdHJhaWxfemVyb3MoZGVjKTsKKyAgICByZXR1cm4gKGRlYy0+ZXhwICsgdHogPj0gMCk7Cit9CisKKy8qIEludGVnZXIgKi8KK2ludAorbXBkX2lzaW50ZWdlcihjb25zdCBtcGRfdCAqZGVjKQoreworICAgIGlmIChtcGRfaXNzcGVjaWFsKGRlYykpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBfbXBkX2lzaW50KGRlYyk7Cit9CisKKy8qIFdvcmQgaXMgYSBwb3dlciBvZiAxMCAqLworc3RhdGljIGludAorbXBkX3dvcmRfaXNwb3cxMChtcGRfdWludF90IHdvcmQpCit7CisgICAgaW50IG47CisKKyAgICBuID0gbXBkX3dvcmRfZGlnaXRzKHdvcmQpOworICAgIGlmICh3b3JkID09IG1wZF9wb3cxMFtuLTFdKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKiBDb2VmZmljaWVudCBpcyBhIHBvd2VyIG9mIDEwICovCitzdGF0aWMgaW50CittcGRfY29lZmZfaXNwb3cxMChjb25zdCBtcGRfdCAqZGVjKQoreworICAgIGlmIChtcGRfd29yZF9pc3BvdzEwKG1wZF9tc3dvcmQoZGVjKSkpIHsKKyAgICAgICAgaWYgKF9tcGRfaXNhbGx6ZXJvKGRlYy0+ZGF0YSwgZGVjLT5sZW4tMSkpIHsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIEFsbCBkaWdpdHMgb2YgYSB3b3JkIGFyZSBuaW5lcyAqLworc3RhdGljIGludAorbXBkX3dvcmRfaXNhbGxuaW5lKG1wZF91aW50X3Qgd29yZCkKK3sKKyAgICBpbnQgbjsKKworICAgIG4gPSBtcGRfd29yZF9kaWdpdHMod29yZCk7CisgICAgaWYgKHdvcmQgPT0gbXBkX3BvdzEwW25dLTEpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIEFsbCBkaWdpdHMgb2YgdGhlIGNvZWZmaWNpZW50IGFyZSBuaW5lcyAqLworc3RhdGljIGludAorbXBkX2NvZWZmX2lzYWxsbmluZShjb25zdCBtcGRfdCAqZGVjKQoreworICAgIGlmIChtcGRfd29yZF9pc2FsbG5pbmUobXBkX21zd29yZChkZWMpKSkgeworICAgICAgICBpZiAoX21wZF9pc2FsbG5pbmUoZGVjLT5kYXRhLCBkZWMtPmxlbi0xKSkgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyogT2RkIGRlY2ltYWw6IFVuZGVmaW5lZCBmb3Igbm9uLWludGVnZXJzISAqLworaW50CittcGRfaXNvZGQoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICBtcGRfdWludF90IHEsIHI7CisgICAgYXNzZXJ0KG1wZF9pc2ludGVnZXIoZGVjKSk7CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihkZWMpKSByZXR1cm4gMDsKKyAgICBpZiAoZGVjLT5leHAgPCAwKSB7CisgICAgICAgIF9tcGRfZGl2X3dvcmQoJnEsICZyLCAtZGVjLT5leHAsIE1QRF9SRElHSVRTKTsKKyAgICAgICAgcSA9IGRlYy0+ZGF0YVtxXSAvIG1wZF9wb3cxMFtyXTsKKyAgICAgICAgcmV0dXJuIG1wZF9pc29kZHdvcmQocSk7CisgICAgfQorICAgIHJldHVybiBkZWMtPmV4cCA9PSAwICYmIG1wZF9pc29kZHdvcmQoZGVjLT5kYXRhWzBdKTsKK30KKworLyogRXZlbjogVW5kZWZpbmVkIGZvciBub24taW50ZWdlcnMhICovCitpbnQKK21wZF9pc2V2ZW4oY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gIW1wZF9pc29kZChkZWMpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgR2V0dGluZyBhbmQgc2V0dGluZyBkZWNpbWFscyAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIEludGVybmFsIGZ1bmN0aW9uOiBTZXQgYSBzdGF0aWMgZGVjaW1hbCBmcm9tIGEgdHJpcGxlLCBubyBlcnJvciBjaGVja2luZy4gKi8KK3N0YXRpYyB2b2lkCitfc3NldHRyaXBsZShtcGRfdCAqcmVzdWx0LCB1aW50OF90IHNpZ24sIG1wZF91aW50X3QgYSwgbXBkX3NzaXplX3QgZXhwKQoreworICAgIG1wZF9zZXRfZmxhZ3MocmVzdWx0LCBzaWduKTsKKyAgICByZXN1bHQtPmV4cCA9IGV4cDsKKyAgICBfbXBkX2Rpdl93b3JkKCZyZXN1bHQtPmRhdGFbMV0sICZyZXN1bHQtPmRhdGFbMF0sIGEsIE1QRF9SQURJWCk7CisgICAgcmVzdWx0LT5sZW4gPSAocmVzdWx0LT5kYXRhWzFdID09IDApID8gMSA6IDI7CisgICAgbXBkX3NldGRpZ2l0cyhyZXN1bHQpOworfQorCisvKiBJbnRlcm5hbCBmdW5jdGlvbjogU2V0IGEgZGVjaW1hbCBmcm9tIGEgdHJpcGxlLCBubyBlcnJvciBjaGVja2luZy4gKi8KK3N0YXRpYyB2b2lkCitfc2V0dHJpcGxlKG1wZF90ICpyZXN1bHQsIHVpbnQ4X3Qgc2lnbiwgbXBkX3VpbnRfdCBhLCBtcGRfc3NpemVfdCBleHApCit7CisgICAgbXBkX21pbmFsbG9jKHJlc3VsdCk7CisgICAgbXBkX3NldF9mbGFncyhyZXN1bHQsIHNpZ24pOworICAgIHJlc3VsdC0+ZXhwID0gZXhwOworICAgIF9tcGRfZGl2X3dvcmQoJnJlc3VsdC0+ZGF0YVsxXSwgJnJlc3VsdC0+ZGF0YVswXSwgYSwgTVBEX1JBRElYKTsKKyAgICByZXN1bHQtPmxlbiA9IChyZXN1bHQtPmRhdGFbMV0gPT0gMCkgPyAxIDogMjsKKyAgICBtcGRfc2V0ZGlnaXRzKHJlc3VsdCk7Cit9CisKKy8qIFNldCBhIHNwZWNpYWwgbnVtYmVyIGZyb20gYSB0cmlwbGUgKi8KK3ZvaWQKK21wZF9zZXRzcGVjaWFsKG1wZF90ICpyZXN1bHQsIHVpbnQ4X3Qgc2lnbiwgdWludDhfdCB0eXBlKQoreworICAgIG1wZF9taW5hbGxvYyhyZXN1bHQpOworICAgIHJlc3VsdC0+ZmxhZ3MgJj0gfihNUERfTkVHfE1QRF9TUEVDSUFMKTsKKyAgICByZXN1bHQtPmZsYWdzIHw9IChzaWdufHR5cGUpOworICAgIHJlc3VsdC0+ZXhwID0gcmVzdWx0LT5kaWdpdHMgPSByZXN1bHQtPmxlbiA9IDA7Cit9CisKKy8qIFNldCByZXN1bHQgb2YgTmFOIHdpdGggYW4gZXJyb3Igc3RhdHVzICovCit2b2lkCittcGRfc2V0ZXJyb3IobXBkX3QgKnJlc3VsdCwgdWludDMyX3QgZmxhZ3MsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX21pbmFsbG9jKHJlc3VsdCk7CisgICAgbXBkX3NldF9xbmFuKHJlc3VsdCk7CisgICAgbXBkX3NldF9wb3NpdGl2ZShyZXN1bHQpOworICAgIHJlc3VsdC0+ZXhwID0gcmVzdWx0LT5kaWdpdHMgPSByZXN1bHQtPmxlbiA9IDA7CisgICAgKnN0YXR1cyB8PSBmbGFnczsKK30KKworLyogcXVpZXRseSBzZXQgYSBzdGF0aWMgZGVjaW1hbCBmcm9tIGFuIG1wZF9zc2l6ZV90ICovCit2b2lkCittcGRfcXNzZXRfc3NpemUobXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3VpbnRfdCB1OworICAgIHVpbnQ4X3Qgc2lnbiA9IE1QRF9QT1M7CisKKyAgICBpZiAoYSA8IDApIHsKKyAgICAgICAgaWYgKGEgPT0gTVBEX1NTSVpFX01JTikgeworICAgICAgICAgICAgdSA9IChtcGRfdWludF90KU1QRF9TU0laRV9NQVggKworICAgICAgICAgICAgICAgICgtKE1QRF9TU0laRV9NSU4rTVBEX1NTSVpFX01BWCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdSA9IC1hOworICAgICAgICB9CisgICAgICAgIHNpZ24gPSBNUERfTkVHOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdSA9IGE7CisgICAgfQorICAgIF9zc2V0dHJpcGxlKHJlc3VsdCwgc2lnbiwgdSwgMCk7CisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworLyogcXVpZXRseSBzZXQgYSBzdGF0aWMgZGVjaW1hbCBmcm9tIGFuIG1wZF91aW50X3QgKi8KK3ZvaWQKK21wZF9xc3NldF91aW50KG1wZF90ICpyZXN1bHQsIG1wZF91aW50X3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBfc3NldHRyaXBsZShyZXN1bHQsIE1QRF9QT1MsIGEsIDApOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIHF1aWV0bHkgc2V0IGEgc3RhdGljIGRlY2ltYWwgZnJvbSBhbiBpbnQzMl90ICovCit2b2lkCittcGRfcXNzZXRfaTMyKG1wZF90ICpyZXN1bHQsIGludDMyX3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xc3NldF9zc2l6ZShyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKK30KKworLyogcXVpZXRseSBzZXQgYSBzdGF0aWMgZGVjaW1hbCBmcm9tIGEgdWludDMyX3QgKi8KK3ZvaWQKK21wZF9xc3NldF91MzIobXBkX3QgKnJlc3VsdCwgdWludDMyX3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xc3NldF91aW50KHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworfQorCisjaWZkZWYgQ09ORklHXzY0CisvKiBxdWlldGx5IHNldCBhIHN0YXRpYyBkZWNpbWFsIGZyb20gYW4gaW50NjRfdCAqLwordm9pZAorbXBkX3Fzc2V0X2k2NChtcGRfdCAqcmVzdWx0LCBpbnQ2NF90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcXNzZXRfc3NpemUocmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIHF1aWV0bHkgc2V0IGEgc3RhdGljIGRlY2ltYWwgZnJvbSBhIHVpbnQ2NF90ICovCit2b2lkCittcGRfcXNzZXRfdTY0KG1wZF90ICpyZXN1bHQsIHVpbnQ2NF90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcXNzZXRfdWludChyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKK30KKyNlbmRpZgorCisvKiBxdWlldGx5IHNldCBhIGRlY2ltYWwgZnJvbSBhbiBtcGRfc3NpemVfdCAqLwordm9pZAorbXBkX3FzZXRfc3NpemUobXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfbWluYWxsb2MocmVzdWx0KTsKKyAgICBtcGRfcXNzZXRfc3NpemUocmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIHF1aWV0bHkgc2V0IGEgZGVjaW1hbCBmcm9tIGFuIG1wZF91aW50X3QgKi8KK3ZvaWQKK21wZF9xc2V0X3VpbnQobXBkX3QgKnJlc3VsdCwgbXBkX3VpbnRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgX3NldHRyaXBsZShyZXN1bHQsIE1QRF9QT1MsIGEsIDApOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIHF1aWV0bHkgc2V0IGEgZGVjaW1hbCBmcm9tIGFuIGludDMyX3QgKi8KK3ZvaWQKK21wZF9xc2V0X2kzMihtcGRfdCAqcmVzdWx0LCBpbnQzMl90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xc2V0X3NzaXplKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworfQorCisvKiBxdWlldGx5IHNldCBhIGRlY2ltYWwgZnJvbSBhIHVpbnQzMl90ICovCit2b2lkCittcGRfcXNldF91MzIobXBkX3QgKnJlc3VsdCwgdWludDMyX3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FzZXRfdWludChyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKK30KKworI2lmIGRlZmluZWQoQ09ORklHXzMyKSAmJiAhZGVmaW5lZChMRUdBQ1lfQ09NUElMRVIpCisvKiBzZXQgYSBkZWNpbWFsIGZyb20gYSB1aW50NjRfdCAqLworc3RhdGljIHZvaWQKK19jMzJzZXR1NjQobXBkX3QgKnJlc3VsdCwgdWludDY0X3QgdSwgdWludDhfdCBzaWduLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF91aW50X3Qgd1szXTsKKyAgICB1aW50NjRfdCBxOworICAgIGludCBpLCBsZW47CisKKyAgICBsZW4gPSAwOworICAgIGRvIHsKKyAgICAgICAgcSA9IHUgLyBNUERfUkFESVg7CisgICAgICAgIHdbbGVuXSA9IChtcGRfdWludF90KSh1IC0gcSAqIE1QRF9SQURJWCk7CisgICAgICAgIHUgPSBxOyBsZW4rKzsKKyAgICB9IHdoaWxlICh1ICE9IDApOworCisgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIGxlbiwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICByZXN1bHQtPmRhdGFbaV0gPSB3W2ldOworICAgIH0KKworICAgIG1wZF9zZXRfc2lnbihyZXN1bHQsIHNpZ24pOworICAgIHJlc3VsdC0+ZXhwID0gMDsKKyAgICByZXN1bHQtPmxlbiA9IGxlbjsKKyAgICBtcGRfc2V0ZGlnaXRzKHJlc3VsdCk7Cit9CisKK3N0YXRpYyB2b2lkCitfYzMyX3FzZXRfdTY0KG1wZF90ICpyZXN1bHQsIHVpbnQ2NF90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBfYzMyc2V0dTY0KHJlc3VsdCwgYSwgTVBEX1BPUywgc3RhdHVzKTsKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisvKiBzZXQgYSBkZWNpbWFsIGZyb20gYW4gaW50NjRfdCAqLworc3RhdGljIHZvaWQKK19jMzJfcXNldF9pNjQobXBkX3QgKnJlc3VsdCwgaW50NjRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgdWludDY0X3QgdTsKKyAgICB1aW50OF90IHNpZ24gPSBNUERfUE9TOworCisgICAgaWYgKGEgPCAwKSB7CisgICAgICAgIGlmIChhID09IElOVDY0X01JTikgeworICAgICAgICAgICAgdSA9ICh1aW50NjRfdClJTlQ2NF9NQVggKyAoLShJTlQ2NF9NSU4rSU5UNjRfTUFYKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB1ID0gLWE7CisgICAgICAgIH0KKyAgICAgICAgc2lnbiA9IE1QRF9ORUc7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB1ID0gYTsKKyAgICB9CisgICAgX2MzMnNldHU2NChyZXN1bHQsIHUsIHNpZ24sIHN0YXR1cyk7CisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKyNlbmRpZiAvKiBDT05GSUdfMzIgJiYgIUxFR0FDWV9DT01QSUxFUiAqLworCisjaWZuZGVmIExFR0FDWV9DT01QSUxFUgorLyogcXVpZXRseSBzZXQgYSBkZWNpbWFsIGZyb20gYW4gaW50NjRfdCAqLwordm9pZAorbXBkX3FzZXRfaTY0KG1wZF90ICpyZXN1bHQsIGludDY0X3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisjaWZkZWYgQ09ORklHXzY0CisgICAgbXBkX3FzZXRfc3NpemUocmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7CisjZWxzZQorICAgIF9jMzJfcXNldF9pNjQocmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7CisjZW5kaWYKK30KKworLyogcXVpZXRseSBzZXQgYSBkZWNpbWFsIGZyb20gYSB1aW50NjRfdCAqLwordm9pZAorbXBkX3FzZXRfdTY0KG1wZF90ICpyZXN1bHQsIHVpbnQ2NF90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworI2lmZGVmIENPTkZJR182NAorICAgIG1wZF9xc2V0X3VpbnQocmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7CisjZWxzZQorICAgIF9jMzJfcXNldF91NjQocmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7CisjZW5kaWYKK30KKyNlbmRpZiAvKiAhTEVHQUNZX0NPTVBJTEVSICovCisKKworLyoKKyAqIFF1aWV0bHkgZ2V0IGFuIG1wZF91aW50X3QgZnJvbSBhIGRlY2ltYWwuIEFzc3VtZXMKKyAqIE1QRF9VSU5UX0RJR0lUUyA9PSBNUERfUkRJR0lUUysxLCB3aGljaCBpcyB0cnVlIGZvcgorICogMzIgYW5kIDY0IGJpdCBtYWNoaW5lcy4KKyAqCisgKiBJZiB0aGUgb3BlcmF0aW9uIGlzIGltcG9zc2libGUsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiBpcyBzZXQuCisgKi8KK3N0YXRpYyBtcGRfdWludF90CitfbXBkX3FnZXRfdWludChpbnQgdXNlX3NpZ24sIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF90IHRtcDsKKyAgICBtcGRfdWludF90IHRtcF9kYXRhWzJdOworICAgIG1wZF91aW50X3QgbG8sIGhpOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIHJldHVybiBNUERfVUlOVF9NQVg7CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvKGEpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAodXNlX3NpZ24gJiYgbXBkX2lzbmVnYXRpdmUoYSkpIHsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIHJldHVybiBNUERfVUlOVF9NQVg7CisgICAgfQorCisgICAgaWYgKGEtPmRpZ2l0cythLT5leHAgPiBNUERfUkRJR0lUUysxKSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICByZXR1cm4gTVBEX1VJTlRfTUFYOworICAgIH0KKworICAgIGlmIChhLT5leHAgPCAwKSB7CisgICAgICAgIGlmICghX21wZF9pc2ludChhKSkgeworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICByZXR1cm4gTVBEX1VJTlRfTUFYOworICAgICAgICB9CisgICAgICAgIC8qIEF0IHRoaXMgcG9pbnQgYS0+ZGlnaXRzK2EtPmV4cCA8PSBNUERfUkRJR0lUUysxLAorICAgICAgICAgKiBzbyB0aGUgc2hpZnQgZml0cy4gKi8KKyAgICAgICAgdG1wLmRhdGEgPSB0bXBfZGF0YTsKKyAgICAgICAgdG1wLmZsYWdzID0gTVBEX1NUQVRJQ3xNUERfU1RBVElDX0RBVEE7CisgICAgICAgIHRtcC5hbGxvYyA9IDI7CisgICAgICAgIG1wZF9xc3NoaWZ0cigmdG1wLCBhLCAtYS0+ZXhwKTsKKyAgICAgICAgdG1wLmV4cCA9IDA7CisgICAgICAgIGEgPSAmdG1wOworICAgIH0KKworICAgIF9tcGRfZ2V0X21zZGlnaXRzKCZoaSwgJmxvLCBhLCBNUERfUkRJR0lUUysxKTsKKyAgICBpZiAoaGkpIHsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIHJldHVybiBNUERfVUlOVF9NQVg7CisgICAgfQorCisgICAgaWYgKGEtPmV4cCA+IDApIHsKKyAgICAgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIGxvLCBtcGRfcG93MTBbYS0+ZXhwXSk7CisgICAgICAgIGlmIChoaSkgeworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICByZXR1cm4gTVBEX1VJTlRfTUFYOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGxvOworfQorCisvKgorICogU2V0cyBJbnZhbGlkX29wZXJhdGlvbiBmb3I6CisgKiAgIC0gc3BlY2lhbHMKKyAqICAgLSBuZWdhdGl2ZSBudW1iZXJzIChleGNlcHQgbmVnYXRpdmUgemVybykKKyAqICAgLSBub24taW50ZWdlcnMKKyAqICAgLSBvdmVyZmxvdworICovCittcGRfdWludF90CittcGRfcWdldF91aW50KGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHJldHVybiBfbXBkX3FnZXRfdWludCgxLCBhLCBzdGF0dXMpOworfQorCisvKiBTYW1lIGFzIGFib3ZlLCBidXQgZ2V0cyB0aGUgYWJzb2x1dGUgdmFsdWUsIGkuZS4gdGhlIHNpZ24gaXMgaWdub3JlZC4gKi8KK21wZF91aW50X3QKK21wZF9xYWJzX3VpbnQoY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgcmV0dXJuIF9tcGRfcWdldF91aW50KDAsIGEsIHN0YXR1cyk7Cit9CisKKy8qIHF1aWV0bHkgZ2V0IGFuIG1wZF9zc2l6ZV90IGZyb20gYSBkZWNpbWFsICovCittcGRfc3NpemVfdAorbXBkX3FnZXRfc3NpemUoY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3VpbnRfdCB1OworICAgIGludCBpc25lZzsKKworICAgIHUgPSBtcGRfcWFic191aW50KGEsIHN0YXR1cyk7CisgICAgaWYgKCpzdGF0dXMmTVBEX0ludmFsaWRfb3BlcmF0aW9uKSB7CisgICAgICAgIHJldHVybiBNUERfU1NJWkVfTUFYOworICAgIH0KKworICAgIGlzbmVnID0gbXBkX2lzbmVnYXRpdmUoYSk7CisgICAgaWYgKHUgPD0gTVBEX1NTSVpFX01BWCkgeworICAgICAgICByZXR1cm4gaXNuZWcgPyAtKChtcGRfc3NpemVfdCl1KSA6IChtcGRfc3NpemVfdCl1OworICAgIH0KKyAgICBlbHNlIGlmIChpc25lZyAmJiB1KyhNUERfU1NJWkVfTUlOK01QRF9TU0laRV9NQVgpID09IE1QRF9TU0laRV9NQVgpIHsKKyAgICAgICAgcmV0dXJuIE1QRF9TU0laRV9NSU47CisgICAgfQorCisgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgcmV0dXJuIE1QRF9TU0laRV9NQVg7Cit9CisKKyNpZmRlZiBDT05GSUdfNjQKKy8qIHF1aWV0bHkgZ2V0IGEgdWludDY0X3QgZnJvbSBhIGRlY2ltYWwgKi8KK3VpbnQ2NF90CittcGRfcWdldF91NjQoY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgcmV0dXJuIG1wZF9xZ2V0X3VpbnQoYSwgc3RhdHVzKTsKK30KKworLyogcXVpZXRseSBnZXQgYW4gaW50NjRfdCBmcm9tIGEgZGVjaW1hbCAqLworaW50NjRfdAorbXBkX3FnZXRfaTY0KGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHJldHVybiBtcGRfcWdldF9zc2l6ZShhLCBzdGF0dXMpOworfQorI2Vsc2UKKy8qIHF1aWV0bHkgZ2V0IGEgdWludDMyX3QgZnJvbSBhIGRlY2ltYWwgKi8KK3VpbnQzMl90CittcGRfcWdldF91MzIoY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgcmV0dXJuIG1wZF9xZ2V0X3VpbnQoYSwgc3RhdHVzKTsKK30KKworLyogcXVpZXRseSBnZXQgYW4gaW50MzJfdCBmcm9tIGEgZGVjaW1hbCAqLworaW50MzJfdAorbXBkX3FnZXRfaTMyKGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHJldHVybiBtcGRfcWdldF9zc2l6ZShhLCBzdGF0dXMpOworfQorI2VuZGlmCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgRmlsdGVyaW5nIGlucHV0IG9mIGZ1bmN0aW9ucywgZmluYWxpemluZyBvdXRwdXQgb2YgZnVuY3Rpb25zICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogQ2hlY2sgaWYgdGhlIG9wZXJhbmQgaXMgTmFOLCBjb3B5IHRvIHJlc3VsdCBhbmQgcmV0dXJuIDEgaWYgdGhpcyBpcworICogdGhlIGNhc2UuIENvcHlpbmcgY2FuIGZhaWwgc2luY2UgTmFOcyBhcmUgYWxsb3dlZCB0byBoYXZlIGEgcGF5bG9hZCB0aGF0CisgKiBkb2VzIG5vdCBmaXQgaW4gTVBEX01JTkFMTE9DLgorICovCitpbnQKK21wZF9xY2hlY2tfbmFuKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChtcGRfaXNuYW4oYSkpIHsKKyAgICAgICAgKnN0YXR1cyB8PSBtcGRfaXNzbmFuKGEpID8gTVBEX0ludmFsaWRfb3BlcmF0aW9uIDogMDsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgbXBkX3NldF9xbmFuKHJlc3VsdCk7CisgICAgICAgIF9tcGRfZml4X25hbihyZXN1bHQsIGN0eCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIENoZWNrIGlmIGVpdGhlciBvcGVyYW5kIGlzIE5hTiwgY29weSB0byByZXN1bHQgYW5kIHJldHVybiAxIGlmIHRoaXMKKyAqIGlzIHRoZSBjYXNlLiBDb3B5aW5nIGNhbiBmYWlsIHNpbmNlIE5hTnMgYXJlIGFsbG93ZWQgdG8gaGF2ZSBhIHBheWxvYWQKKyAqIHRoYXQgZG9lcyBub3QgZml0IGluIE1QRF9NSU5BTExPQy4KKyAqLworaW50CittcGRfcWNoZWNrX25hbnMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAoKGEtPmZsYWdzfGItPmZsYWdzKSYoTVBEX05BTnxNUERfU05BTikpIHsKKyAgICAgICAgY29uc3QgbXBkX3QgKmNob2ljZSA9IGI7CisgICAgICAgIGlmIChtcGRfaXNzbmFuKGEpKSB7CisgICAgICAgICAgICBjaG9pY2UgPSBhOworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobXBkX2lzc25hbihiKSkgeworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobXBkX2lzcW5hbihhKSkgeworICAgICAgICAgICAgY2hvaWNlID0gYTsKKyAgICAgICAgfQorICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBjaG9pY2UsIHN0YXR1cyk7CisgICAgICAgIG1wZF9zZXRfcW5hbihyZXN1bHQpOworICAgICAgICBfbXBkX2ZpeF9uYW4ocmVzdWx0LCBjdHgpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBDaGVjayBpZiBvbmUgb2YgdGhlIG9wZXJhbmRzIGlzIE5hTiwgY29weSB0byByZXN1bHQgYW5kIHJldHVybiAxIGlmIHRoaXMKKyAqIGlzIHRoZSBjYXNlLiBDb3B5aW5nIGNhbiBmYWlsIHNpbmNlIE5hTnMgYXJlIGFsbG93ZWQgdG8gaGF2ZSBhIHBheWxvYWQKKyAqIHRoYXQgZG9lcyBub3QgZml0IGluIE1QRF9NSU5BTExPQy4KKyAqLworc3RhdGljIGludAorbXBkX3FjaGVja18zbmFucyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF90ICpjLAorICAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKChhLT5mbGFnc3xiLT5mbGFnc3xjLT5mbGFncykmKE1QRF9OQU58TVBEX1NOQU4pKSB7CisgICAgICAgIGNvbnN0IG1wZF90ICpjaG9pY2UgPSBjOworICAgICAgICBpZiAobXBkX2lzc25hbihhKSkgeworICAgICAgICAgICAgY2hvaWNlID0gYTsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc3NuYW4oYikpIHsKKyAgICAgICAgICAgIGNob2ljZSA9IGI7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChtcGRfaXNzbmFuKGMpKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChtcGRfaXNxbmFuKGEpKSB7CisgICAgICAgICAgICBjaG9pY2UgPSBhOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc3FuYW4oYikpIHsKKyAgICAgICAgICAgIGNob2ljZSA9IGI7CisgICAgICAgIH0KKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgY2hvaWNlLCBzdGF0dXMpOworICAgICAgICBtcGRfc2V0X3FuYW4ocmVzdWx0KTsKKyAgICAgICAgX21wZF9maXhfbmFuKHJlc3VsdCwgY3R4KTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKiBDaGVjayBpZiByb3VuZGluZyBkaWdpdCAncm5kJyBsZWFkcyB0byBhbiBpbmNyZW1lbnQuICovCitzdGF0aWMgaW5saW5lIGludAorX21wZF9ybmRfaW5jcihjb25zdCBtcGRfdCAqZGVjLCBtcGRfdWludF90IHJuZCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIGludCBsZDsKKworICAgIHN3aXRjaCAoY3R4LT5yb3VuZCkgeworICAgIGNhc2UgTVBEX1JPVU5EX0RPV046IGNhc2UgTVBEX1JPVU5EX1RSVU5DOgorICAgICAgICByZXR1cm4gMDsKKyAgICBjYXNlIE1QRF9ST1VORF9IQUxGX1VQOgorICAgICAgICByZXR1cm4gKHJuZCA+PSA1KTsKKyAgICBjYXNlIE1QRF9ST1VORF9IQUxGX0VWRU46CisgICAgICAgIHJldHVybiAocm5kID4gNSkgfHwgKChybmQgPT0gNSkgJiYgbXBkX2lzb2RkY29lZmYoZGVjKSk7CisgICAgY2FzZSBNUERfUk9VTkRfQ0VJTElORzoKKyAgICAgICAgcmV0dXJuICEocm5kID09IDAgfHwgbXBkX2lzbmVnYXRpdmUoZGVjKSk7CisgICAgY2FzZSBNUERfUk9VTkRfRkxPT1I6CisgICAgICAgIHJldHVybiAhKHJuZCA9PSAwIHx8IG1wZF9pc3Bvc2l0aXZlKGRlYykpOworICAgIGNhc2UgTVBEX1JPVU5EX0hBTEZfRE9XTjoKKyAgICAgICAgcmV0dXJuIChybmQgPiA1KTsKKyAgICBjYXNlIE1QRF9ST1VORF9VUDoKKyAgICAgICAgcmV0dXJuICEocm5kID09IDApOworICAgIGNhc2UgTVBEX1JPVU5EXzA1VVA6CisgICAgICAgIGxkID0gKGludCltcGRfbHNkKGRlYy0+ZGF0YVswXSk7CisgICAgICAgIHJldHVybiAoIShybmQgPT0gMCkgJiYgKGxkID09IDAgfHwgbGQgPT0gNSkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8qIFdpdGhvdXQgYSB2YWxpZCBjb250ZXh0LCBmdXJ0aGVyIHJlc3VsdHMgd2lsbCBiZSB1bmRlZmluZWQuICovCisgICAgICAgIHJldHVybiAwOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorfQorCisvKgorICogQXBwbHkgcm91bmRpbmcgdG8gYSBkZWNpbWFsIHRoYXQgaGFzIGJlZW4gcmlnaHQtc2hpZnRlZCBpbnRvIGEgZnVsbAorICogcHJlY2lzaW9uIGRlY2ltYWwuIElmIGFuIGluY3JlbWVudCBsZWFkcyB0byBhbiBvdmVyZmxvdyBvZiB0aGUgcHJlY2lzaW9uLAorICogYWRqdXN0IHRoZSBjb2VmZmljaWVudCBhbmQgdGhlIGV4cG9uZW50IGFuZCBjaGVjayB0aGUgbmV3IGV4cG9uZW50IGZvcgorICogb3ZlcmZsb3cuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9hcHBseV9yb3VuZChtcGRfdCAqZGVjLCBtcGRfdWludF90IHJuZCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChfbXBkX3JuZF9pbmNyKGRlYywgcm5kLCBjdHgpKSB7CisgICAgICAgIC8qIFdlIGhhdmUgYSBudW1iZXIgd2l0aCBleGFjdGx5IGN0eC0+cHJlYyBkaWdpdHMuIFRoZSBpbmNyZW1lbnQKKyAgICAgICAgICogY2FuIG9ubHkgbGVhZCB0byBhbiBvdmVyZmxvdyBpZiB0aGUgZGVjaW1hbCBpcyBhbGwgbmluZXMuIEluCisgICAgICAgICAqIHRoYXQgY2FzZSwgdGhlIHJlc3VsdCBpcyBhIHBvd2VyIG9mIHRlbiB3aXRoIHByZWMrMSBkaWdpdHMuCisgICAgICAgICAqCisgICAgICAgICAqIElmIHRoZSBwcmVjaXNpb24gaXMgYSBtdWx0aXBsZSBvZiBNUERfUkRJR0lUUywgdGhpcyBzaXR1YXRpb24gaXMKKyAgICAgICAgICogZGV0ZWN0ZWQgYnkgX21wZF9iYXNlaW5jciByZXR1cm5pbmcgYSBjYXJyeS4KKyAgICAgICAgICogSWYgdGhlIHByZWNpc2lvbiBpcyBub3QgYSBtdWx0aXBsZSBvZiBNUERfUkRJR0lUUywgd2UgaGF2ZSB0bworICAgICAgICAgKiBjaGVjayBpZiB0aGUgcmVzdWx0IGhhcyBvbmUgZGlnaXQgdG9vIG1hbnkuCisgICAgICAgICAqLworICAgICAgICBtcGRfdWludF90IGNhcnJ5ID0gX21wZF9iYXNlaW5jcihkZWMtPmRhdGEsIGRlYy0+bGVuKTsKKyAgICAgICAgaWYgKGNhcnJ5KSB7CisgICAgICAgICAgICBkZWMtPmRhdGFbZGVjLT5sZW4tMV0gPSBtcGRfcG93MTBbTVBEX1JESUdJVFMtMV07CisgICAgICAgICAgICBkZWMtPmV4cCArPSAxOworICAgICAgICAgICAgX21wZF9jaGVja19leHAoZGVjLCBjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbXBkX3NldGRpZ2l0cyhkZWMpOworICAgICAgICBpZiAoZGVjLT5kaWdpdHMgPiBjdHgtPnByZWMpIHsKKyAgICAgICAgICAgIG1wZF9xc2hpZnRyX2lucGxhY2UoZGVjLCAxKTsKKyAgICAgICAgICAgIGRlYy0+ZXhwICs9IDE7CisgICAgICAgICAgICBkZWMtPmRpZ2l0cyA9IGN0eC0+cHJlYzsKKyAgICAgICAgICAgIF9tcGRfY2hlY2tfZXhwKGRlYywgY3R4LCBzdGF0dXMpOworICAgICAgICB9CisgICAgfQorfQorCisvKgorICogQXBwbHkgcm91bmRpbmcgdG8gYSBkZWNpbWFsLiBBbGxvdyBvdmVyZmxvdyBvZiB0aGUgcHJlY2lzaW9uLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfYXBwbHlfcm91bmRfZXhjZXNzKG1wZF90ICpkZWMsIG1wZF91aW50X3Qgcm5kLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChfbXBkX3JuZF9pbmNyKGRlYywgcm5kLCBjdHgpKSB7CisgICAgICAgIG1wZF91aW50X3QgY2FycnkgPSBfbXBkX2Jhc2VpbmNyKGRlYy0+ZGF0YSwgZGVjLT5sZW4pOworICAgICAgICBpZiAoY2FycnkpIHsKKyAgICAgICAgICAgIGlmICghbXBkX3FyZXNpemUoZGVjLCBkZWMtPmxlbisxLCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVjLT5kYXRhW2RlYy0+bGVuXSA9IDE7CisgICAgICAgICAgICBkZWMtPmxlbiArPSAxOworICAgICAgICB9CisgICAgICAgIG1wZF9zZXRkaWdpdHMoZGVjKTsKKyAgICB9Cit9CisKKy8qCisgKiBBcHBseSByb3VuZGluZyB0byBhIGRlY2ltYWwgdGhhdCBoYXMgYmVlbiByaWdodC1zaGlmdGVkIGludG8gYSBkZWNpbWFsCisgKiB3aXRoIGZ1bGwgcHJlY2lzaW9uIG9yIGxlc3MuIFJldHVybiBmYWlsdXJlIGlmIGFuIGluY3JlbWVudCB3b3VsZAorICogb3ZlcmZsb3cgdGhlIHByZWNpc2lvbi4KKyAqLworc3RhdGljIGlubGluZSBpbnQKK19tcGRfYXBwbHlfcm91bmRfZml0KG1wZF90ICpkZWMsIG1wZF91aW50X3Qgcm5kLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChfbXBkX3JuZF9pbmNyKGRlYywgcm5kLCBjdHgpKSB7CisgICAgICAgIG1wZF91aW50X3QgY2FycnkgPSBfbXBkX2Jhc2VpbmNyKGRlYy0+ZGF0YSwgZGVjLT5sZW4pOworICAgICAgICBpZiAoY2FycnkpIHsKKyAgICAgICAgICAgIGlmICghbXBkX3FyZXNpemUoZGVjLCBkZWMtPmxlbisxLCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWMtPmRhdGFbZGVjLT5sZW5dID0gMTsKKyAgICAgICAgICAgIGRlYy0+bGVuICs9IDE7CisgICAgICAgIH0KKyAgICAgICAgbXBkX3NldGRpZ2l0cyhkZWMpOworICAgICAgICBpZiAoZGVjLT5kaWdpdHMgPiBjdHgtPnByZWMpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihkZWMsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAxOworfQorCisvKiBDaGVjayBhIG5vcm1hbCBudW1iZXIgZm9yIG92ZXJmbG93LCB1bmRlcmZsb3csIGNsYW1waW5nLiBJZiB0aGUgb3BlcmFuZAorICAgaXMgbW9kaWZpZWQsIGl0IHdpbGwgYmUgemVybywgc3BlY2lhbCBvciAoc3ViKW5vcm1hbCB3aXRoIGEgY29lZmZpY2llbnQKKyAgIHRoYXQgZml0cyBpbnRvIHRoZSBjdXJyZW50IGNvbnRleHQgcHJlY2lzaW9uLiAqLworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2NoZWNrX2V4cChtcGRfdCAqZGVjLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3NzaXplX3QgYWRqZXhwLCBldGlueSwgc2hpZnQ7CisgICAgaW50IHJuZDsKKworICAgIGFkamV4cCA9IG1wZF9hZGpleHAoZGVjKTsKKyAgICBpZiAoYWRqZXhwID4gY3R4LT5lbWF4KSB7CisKKyAgICAgICAgaWYgKG1wZF9pc3plcm9jb2VmZihkZWMpKSB7CisgICAgICAgICAgICBkZWMtPmV4cCA9IGN0eC0+ZW1heDsKKyAgICAgICAgICAgIGlmIChjdHgtPmNsYW1wKSB7CisgICAgICAgICAgICAgICAgZGVjLT5leHAgLT0gKGN0eC0+cHJlYy0xKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1wZF96ZXJvY29lZmYoZGVjKTsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0NsYW1wZWQ7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKGN0eC0+cm91bmQpIHsKKyAgICAgICAgY2FzZSBNUERfUk9VTkRfSEFMRl9VUDogY2FzZSBNUERfUk9VTkRfSEFMRl9FVkVOOgorICAgICAgICBjYXNlIE1QRF9ST1VORF9IQUxGX0RPV046IGNhc2UgTVBEX1JPVU5EX1VQOgorICAgICAgICBjYXNlIE1QRF9ST1VORF9UUlVOQzoKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKGRlYywgbXBkX3NpZ24oZGVjKSwgTVBEX0lORik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNUERfUk9VTkRfRE9XTjogY2FzZSBNUERfUk9VTkRfMDVVUDoKKyAgICAgICAgICAgIG1wZF9xbWF4Y29lZmYoZGVjLCBjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICBkZWMtPmV4cCA9IGN0eC0+ZW1heCAtIGN0eC0+cHJlYyArIDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNUERfUk9VTkRfQ0VJTElORzoKKyAgICAgICAgICAgIGlmIChtcGRfaXNuZWdhdGl2ZShkZWMpKSB7CisgICAgICAgICAgICAgICAgbXBkX3FtYXhjb2VmZihkZWMsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBkZWMtPmV4cCA9IGN0eC0+ZW1heCAtIGN0eC0+cHJlYyArIDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChkZWMsIE1QRF9QT1MsIE1QRF9JTkYpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTVBEX1JPVU5EX0ZMT09SOgorICAgICAgICAgICAgaWYgKG1wZF9pc3Bvc2l0aXZlKGRlYykpIHsKKyAgICAgICAgICAgICAgICBtcGRfcW1heGNvZWZmKGRlYywgY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgICAgIGRlYy0+ZXhwID0gY3R4LT5lbWF4IC0gY3R4LT5wcmVjICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKGRlYywgTVBEX05FRywgTVBEX0lORik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDogLyogZGVidWcgKi8KKyAgICAgICAgICAgIGFib3J0KCk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgfQorCisgICAgICAgICpzdGF0dXMgfD0gTVBEX092ZXJmbG93fE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkOworCisgICAgfSAvKiBmb2xkIGRvd24gKi8KKyAgICBlbHNlIGlmIChjdHgtPmNsYW1wICYmIGRlYy0+ZXhwID4gbXBkX2V0b3AoY3R4KSkgeworICAgICAgICAvKiBBdCB0aGlzIHBvaW50IGFkamV4cD1leHArZGlnaXRzLTEgPD0gZW1heCBhbmQgZXhwID4gZXRvcD1lbWF4LXByZWMrMToKKyAgICAgICAgICogICAoMSkgc2hpZnQgPSBleHAgLWVtYXgrcHJlYy0xID4gMAorICAgICAgICAgKiAgICgyKSBkaWdpdHMrc2hpZnQgPSBleHArZGlnaXRzLTEgLSBlbWF4ICsgcHJlYyA8PSBwcmVjICovCisgICAgICAgIHNoaWZ0ID0gZGVjLT5leHAgLSBtcGRfZXRvcChjdHgpOworICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKGRlYywgZGVjLCBzaGlmdCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGRlYy0+ZXhwIC09IHNoaWZ0OworICAgICAgICAqc3RhdHVzIHw9IE1QRF9DbGFtcGVkOworICAgICAgICBpZiAoIW1wZF9pc3plcm9jb2VmZihkZWMpICYmIGFkamV4cCA8IGN0eC0+ZW1pbikgeworICAgICAgICAgICAgLyogVW5kZXJmbG93IGlzIGltcG9zc2libGUsIHNpbmNlIGV4cCA8IGV0aW55PWVtaW4tcHJlYysxCisgICAgICAgICAgICAgKiBhbmQgZXhwID4gZXRvcD1lbWF4LXByZWMrMSB3b3VsZCBpbXBseSBlbWF4IDwgZW1pbi4gKi8KKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX1N1Ym5vcm1hbDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChhZGpleHAgPCBjdHgtPmVtaW4pIHsKKworICAgICAgICBldGlueSA9IG1wZF9ldGlueShjdHgpOworCisgICAgICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoZGVjKSkgeworICAgICAgICAgICAgaWYgKGRlYy0+ZXhwIDwgZXRpbnkpIHsKKyAgICAgICAgICAgICAgICBkZWMtPmV4cCA9IGV0aW55OworICAgICAgICAgICAgICAgIG1wZF96ZXJvY29lZmYoZGVjKTsKKyAgICAgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9DbGFtcGVkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfU3Vibm9ybWFsOworICAgICAgICBpZiAoZGVjLT5leHAgPCBldGlueSkgeworICAgICAgICAgICAgLyogQXQgdGhpcyBwb2ludCBhZGpleHA9ZXhwK2RpZ2l0cy0xIDwgZW1pbiBhbmQgZXhwIDwgZXRpbnk9ZW1pbi1wcmVjKzE6CisgICAgICAgICAgICAgKiAgICgxKSBzaGlmdCA9IGVtaW4tcHJlYysxIC0gZXhwID4gMAorICAgICAgICAgICAgICogICAoMikgZGlnaXRzLXNoaWZ0ID0gZXhwK2RpZ2l0cy0xIC0gZW1pbiArIHByZWMgPCBwcmVjICovCisgICAgICAgICAgICBzaGlmdCA9IGV0aW55IC0gZGVjLT5leHA7CisgICAgICAgICAgICBybmQgPSAoaW50KW1wZF9xc2hpZnRyX2lucGxhY2UoZGVjLCBzaGlmdCk7CisgICAgICAgICAgICBkZWMtPmV4cCA9IGV0aW55OworICAgICAgICAgICAgLyogV2UgYWx3YXlzIGhhdmUgYSBzcGFyZSBkaWdpdCBpbiBjYXNlIG9mIGFuIGluY3JlbWVudC4gKi8KKyAgICAgICAgICAgIF9tcGRfYXBwbHlfcm91bmRfZXhjZXNzKGRlYywgcm5kLCBjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9Sb3VuZGVkOworICAgICAgICAgICAgaWYgKHJuZCkgeworICAgICAgICAgICAgICAgICpzdGF0dXMgfD0gKE1QRF9JbmV4YWN0fE1QRF9VbmRlcmZsb3cpOworICAgICAgICAgICAgICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoZGVjKSkgeworICAgICAgICAgICAgICAgICAgICBtcGRfemVyb2NvZWZmKGRlYyk7CisgICAgICAgICAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0NsYW1wZWQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8qIENhc2UgZXhwID49IGV0aW55PWVtaW4tcHJlYysxOgorICAgICAgICAgKiAgICgxKSBhZGpleHA9ZXhwK2RpZ2l0cy0xIDwgZW1pbgorICAgICAgICAgKiAgICgyKSBkaWdpdHMgPCBlbWluLWV4cCsxIDw9IHByZWMgKi8KKyAgICB9Cit9CisKKy8qIFRyYW5zY2VuZGVudGFsIGZ1bmN0aW9ucyBkbyBub3QgYWx3YXlzIHNldCBVbmRlcmZsb3cgcmVsaWFibHksCisgKiBzaW5jZSB0aGV5IG9ubHkgdXNlIGFzIG11Y2ggcHJlY2lzaW9uIGFzIGlzIG5lY2Vzc2FyeSBmb3IgY29ycmVjdAorICogcm91bmRpbmcuIElmIGEgcmVzdWx0IGxpa2UgMS4wMDAwMDAwMDAwZS0xMDEgaXMgZmluYWxpemVkLCB0aGVyZQorICogaXMgbm8gcm91bmRpbmcgZGlnaXQgdGhhdCB3b3VsZCB0cmlnZ2VyIFVuZGVyZmxvdy4gQnV0IHdlIGNhbgorICogYXNzdW1lIEluZXhhY3QsIHNvIGEgc2hvcnQgY2hlY2sgc3VmZmljZXMuICovCitzdGF0aWMgaW5saW5lIHZvaWQKK21wZF9jaGVja191bmRlcmZsb3cobXBkX3QgKmRlYywgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChtcGRfYWRqZXhwKGRlYykgPCBjdHgtPmVtaW4gJiYgIW1wZF9pc3plcm8oZGVjKSAmJgorICAgICAgICBkZWMtPmV4cCA8IG1wZF9ldGlueShjdHgpKSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX1VuZGVyZmxvdzsKKyAgICB9Cit9CisKKy8qIENoZWNrIGlmIGEgbm9ybWFsIG51bWJlciBtdXN0IGJlIHJvdW5kZWQgYWZ0ZXIgdGhlIGV4cG9uZW50IGhhcyBiZWVuIGNoZWNrZWQuICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfY2hlY2tfcm91bmQobXBkX3QgKmRlYywgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF91aW50X3Qgcm5kOworICAgIG1wZF9zc2l6ZV90IHNoaWZ0OworCisgICAgLyogbXVzdCBoYW5kbGUgc3BlY2lhbHM6IF9tcGRfY2hlY2tfZXhwKCkgY2FuIHByb2R1Y2UgaW5maW5pdGllcyBvciBOYU5zICovCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoZGVjKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGRlYy0+ZGlnaXRzID4gY3R4LT5wcmVjKSB7CisgICAgICAgIHNoaWZ0ID0gZGVjLT5kaWdpdHMgLSBjdHgtPnByZWM7CisgICAgICAgIHJuZCA9IG1wZF9xc2hpZnRyX2lucGxhY2UoZGVjLCBzaGlmdCk7CisgICAgICAgIGRlYy0+ZXhwICs9IHNoaWZ0OworICAgICAgICBfbXBkX2FwcGx5X3JvdW5kKGRlYywgcm5kLCBjdHgsIHN0YXR1cyk7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX1JvdW5kZWQ7CisgICAgICAgIGlmIChybmQpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0luZXhhY3Q7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qIEZpbmFsaXplIGFsbCBvcGVyYXRpb25zLiAqLwordm9pZAorbXBkX3FmaW5hbGl6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKG1wZF9pc3NwZWNpYWwocmVzdWx0KSkgeworICAgICAgICBpZiAobXBkX2lzbmFuKHJlc3VsdCkpIHsKKyAgICAgICAgICAgIF9tcGRfZml4X25hbihyZXN1bHQsIGN0eCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9tcGRfY2hlY2tfZXhwKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworICAgIF9tcGRfY2hlY2tfcm91bmQocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29weWluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBJbnRlcm5hbCBmdW5jdGlvbjogQ29weSBhIGRlY2ltYWwsIHNoYXJlIGRhdGEgd2l0aCBzcmM6IFVTRSBXSVRIIENBUkUhICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfY29weV9zaGFyZWQobXBkX3QgKmRlc3QsIGNvbnN0IG1wZF90ICpzcmMpCit7CisgICAgZGVzdC0+ZmxhZ3MgPSBzcmMtPmZsYWdzOworICAgIGRlc3QtPmV4cCA9IHNyYy0+ZXhwOworICAgIGRlc3QtPmRpZ2l0cyA9IHNyYy0+ZGlnaXRzOworICAgIGRlc3QtPmxlbiA9IHNyYy0+bGVuOworICAgIGRlc3QtPmFsbG9jID0gc3JjLT5hbGxvYzsKKyAgICBkZXN0LT5kYXRhID0gc3JjLT5kYXRhOworCisgICAgbXBkX3NldF9zaGFyZWRfZGF0YShkZXN0KTsKK30KKworLyoKKyAqIENvcHkgYSBkZWNpbWFsLiBJbiBjYXNlIG9mIGFuIGVycm9yLCBzdGF0dXMgaXMgc2V0IHRvIE1QRF9NYWxsb2NfZXJyb3IuCisgKi8KK2ludAorbXBkX3Fjb3B5KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChyZXN1bHQgPT0gYSkgcmV0dXJuIDE7CisKKyAgICBpZiAoIW1wZF9xcmVzaXplKHJlc3VsdCwgYS0+bGVuLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1wZF9jb3B5X2ZsYWdzKHJlc3VsdCwgYSk7CisgICAgcmVzdWx0LT5leHAgPSBhLT5leHA7CisgICAgcmVzdWx0LT5kaWdpdHMgPSBhLT5kaWdpdHM7CisgICAgcmVzdWx0LT5sZW4gPSBhLT5sZW47CisgICAgbWVtY3B5KHJlc3VsdC0+ZGF0YSwgYS0+ZGF0YSwgYS0+bGVuICogKHNpemVvZiAqcmVzdWx0LT5kYXRhKSk7CisKKyAgICByZXR1cm4gMTsKK30KKworLyoKKyAqIENvcHkgdG8gYSBkZWNpbWFsIHdpdGggYSBzdGF0aWMgYnVmZmVyLiBUaGUgY2FsbGVyIGhhcyB0byBtYWtlIHN1cmUgdGhhdAorICogdGhlIGJ1ZmZlciBpcyBiaWcgZW5vdWdoLiBDYW5ub3QgZmFpbC4KKyAqLworc3RhdGljIHZvaWQKK21wZF9xY29weV9zdGF0aWMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEpCit7CisgICAgaWYgKHJlc3VsdCA9PSBhKSByZXR1cm47CisKKyAgICBtZW1jcHkocmVzdWx0LT5kYXRhLCBhLT5kYXRhLCBhLT5sZW4gKiAoc2l6ZW9mICpyZXN1bHQtPmRhdGEpKTsKKworICAgIG1wZF9jb3B5X2ZsYWdzKHJlc3VsdCwgYSk7CisgICAgcmVzdWx0LT5leHAgPSBhLT5leHA7CisgICAgcmVzdWx0LT5kaWdpdHMgPSBhLT5kaWdpdHM7CisgICAgcmVzdWx0LT5sZW4gPSBhLT5sZW47Cit9CisKKy8qCisgKiBSZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgY29weSBvZiB0aGUgb3BlcmFuZC4gSW4gY2FzZSBvZiBhbiBlcnJvciwKKyAqIHN0YXR1cyBpcyBzZXQgdG8gTVBEX01hbGxvY19lcnJvciBhbmQgdGhlIHJldHVybiB2YWx1ZSBpcyBOVUxMLgorICovCittcGRfdCAqCittcGRfcW5jb3B5KGNvbnN0IG1wZF90ICphKQoreworICAgIG1wZF90ICpyZXN1bHQ7CisKKyAgICBpZiAoKHJlc3VsdCA9IG1wZF9xbmV3X3NpemUoYS0+bGVuKSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbWVtY3B5KHJlc3VsdC0+ZGF0YSwgYS0+ZGF0YSwgYS0+bGVuICogKHNpemVvZiAqcmVzdWx0LT5kYXRhKSk7CisgICAgbXBkX2NvcHlfZmxhZ3MocmVzdWx0LCBhKTsKKyAgICByZXN1bHQtPmV4cCA9IGEtPmV4cDsKKyAgICByZXN1bHQtPmRpZ2l0cyA9IGEtPmRpZ2l0czsKKyAgICByZXN1bHQtPmxlbiA9IGEtPmxlbjsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBDb3B5IGEgZGVjaW1hbCBhbmQgc2V0IHRoZSBzaWduIHRvIHBvc2l0aXZlLiBJbiBjYXNlIG9mIGFuIGVycm9yLCB0aGUKKyAqIHN0YXR1cyBpcyBzZXQgdG8gTVBEX01hbGxvY19lcnJvci4KKyAqLworaW50CittcGRfcWNvcHlfYWJzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmICghbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgbXBkX3NldF9wb3NpdGl2ZShyZXN1bHQpOworICAgIHJldHVybiAxOworfQorCisvKgorICogQ29weSBhIGRlY2ltYWwgYW5kIG5lZ2F0ZSB0aGUgc2lnbi4gSW4gY2FzZSBvZiBhbiBlcnJvciwgdGhlCisgKiBzdGF0dXMgaXMgc2V0IHRvIE1QRF9NYWxsb2NfZXJyb3IuCisgKi8KK2ludAorbXBkX3Fjb3B5X25lZ2F0ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAoIW1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIF9tcGRfbmVnYXRlKHJlc3VsdCk7CisgICAgcmV0dXJuIDE7Cit9CisKKy8qCisgKiBDb3B5IGEgZGVjaW1hbCwgc2V0dGluZyB0aGUgc2lnbiBvZiB0aGUgZmlyc3Qgb3BlcmFuZCB0byB0aGUgc2lnbiBvZiB0aGUKKyAqIHNlY29uZCBvcGVyYW5kLiBJbiBjYXNlIG9mIGFuIGVycm9yLCB0aGUgc3RhdHVzIGlzIHNldCB0byBNUERfTWFsbG9jX2Vycm9yLgorICovCitpbnQKK21wZF9xY29weV9zaWduKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50OF90IHNpZ25fYiA9IG1wZF9zaWduKGIpOyAvKiByZXN1bHQgbWF5IGVxdWFsIGIhICovCisKKyAgICBpZiAoIW1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIG1wZF9zZXRfc2lnbihyZXN1bHQsIHNpZ25fYik7CisgICAgcmV0dXJuIDE7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wYXJpc29ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogRm9yIGFsbCBmdW5jdGlvbnMgdGhhdCBjb21wYXJlIHR3byBvcGVyYW5kcyBhbmQgcmV0dXJuIGFuIGludCB0aGUgdXN1YWwKKyAqIGNvbnZlbnRpb24gYXBwbGllcyB0byB0aGUgcmV0dXJuIHZhbHVlOgorICoKKyAqIC0xIGlmIG9wMSA8IG9wMgorICogIDAgaWYgb3AxID09IG9wMgorICogIDEgaWYgb3AxID4gb3AyCisgKgorICogIElOVF9NQVggZm9yIGVycm9yCisgKi8KKworCisvKiBDb252ZW5pZW5jZSBtYWNyby4gSWYgYSBhbmQgYiBhcmUgbm90IGVxdWFsLCByZXR1cm4gZnJvbSB0aGUgY2FsbGluZworICogZnVuY3Rpb24gd2l0aCB0aGUgY29ycmVjdCBjb21wYXJpc29uIHZhbHVlLiAqLworI2RlZmluZSBDTVBfRVFVQUxfT1JfUkVUVVJOKGEsIGIpICBcCisgICAgICAgIGlmIChhICE9IGIpIHsgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBpZiAoYSA8IGIpIHsgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOyBcCisgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsgICAgICAgICAgXAorICAgICAgICB9CisKKy8qCisgKiBDb21wYXJlIHRoZSBkYXRhIG9mIGJpZyBhbmQgc21hbGwuIFRoaXMgZnVuY3Rpb24gZG9lcyB0aGUgZXF1aXZhbGVudAorICogb2YgZmlyc3Qgc2hpZnRpbmcgc21hbGwgdG8gdGhlIGxlZnQgYW5kIHRoZW4gY29tcGFyaW5nIHRoZSBkYXRhIG9mCisgKiBiaWcgYW5kIHNtYWxsLCBleGNlcHQgdGhhdCBubyBhbGxvY2F0aW9uIGZvciB0aGUgbGVmdCBzaGlmdCBpcyBuZWVkZWQuCisgKi8KK3N0YXRpYyBpbnQKK19tcGRfYmFzZWNtcChtcGRfdWludF90ICpiaWcsIG1wZF91aW50X3QgKnNtYWxsLCBtcGRfc2l6ZV90IG4sIG1wZF9zaXplX3QgbSwKKyAgICAgICAgICAgICBtcGRfc2l6ZV90IHNoaWZ0KQoreworI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAgICAvKiBzcHVyaW91cyB1bmluaXRpYWxpemVkIHdhcm5pbmdzICovCisgICAgbXBkX3VpbnRfdCBsPWwsIGxwcmV2PWxwcmV2LCBoPWg7CisjZWxzZQorICAgIG1wZF91aW50X3QgbCwgbHByZXYsIGg7CisjZW5kaWYKKyAgICBtcGRfdWludF90IHEsIHI7CisgICAgbXBkX3VpbnRfdCBwaCwgeDsKKworICAgIGFzc2VydChtID4gMCAmJiBuID49IG0gJiYgc2hpZnQgPiAwKTsKKworICAgIF9tcGRfZGl2X3dvcmQoJnEsICZyLCAobXBkX3VpbnRfdClzaGlmdCwgTVBEX1JESUdJVFMpOworCisgICAgaWYgKHIgIT0gMCkgeworCisgICAgICAgIHBoID0gbXBkX3BvdzEwW3JdOworCisgICAgICAgIC0tbTsgLS1uOworICAgICAgICBfbXBkX2Rpdm1vZF9wb3cxMCgmaCwgJmxwcmV2LCBzbWFsbFttLS1dLCBNUERfUkRJR0lUUy1yKTsKKyAgICAgICAgaWYgKGggIT0gMCkgeworICAgICAgICAgICAgQ01QX0VRVUFMX09SX1JFVFVSTihiaWdbbl0sIGgpCisgICAgICAgICAgICAtLW47CisgICAgICAgIH0KKyAgICAgICAgZm9yICg7IG0gIT0gTVBEX1NJWkVfTUFYOyBtLS0sbi0tKSB7CisgICAgICAgICAgICBfbXBkX2Rpdm1vZF9wb3cxMCgmaCwgJmwsIHNtYWxsW21dLCBNUERfUkRJR0lUUy1yKTsKKyAgICAgICAgICAgIHggPSBwaCAqIGxwcmV2ICsgaDsKKyAgICAgICAgICAgIENNUF9FUVVBTF9PUl9SRVRVUk4oYmlnW25dLCB4KQorICAgICAgICAgICAgbHByZXYgPSBsOworICAgICAgICB9CisgICAgICAgIHggPSBwaCAqIGxwcmV2OworICAgICAgICBDTVBfRVFVQUxfT1JfUkVUVVJOKGJpZ1txXSwgeCkKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHdoaWxlICgtLW0gIT0gTVBEX1NJWkVfTUFYKSB7CisgICAgICAgICAgICBDTVBfRVFVQUxfT1JfUkVUVVJOKGJpZ1ttK3FdLCBzbWFsbFttXSkKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAhX21wZF9pc2FsbHplcm8oYmlnLCBxKTsKK30KKworLyogQ29tcGFyZSB0d28gZGVjaW1hbHMgd2l0aCB0aGUgc2FtZSBhZGp1c3RlZCBleHBvbmVudC4gKi8KK3N0YXRpYyBpbnQKK19tcGRfY21wX3NhbWVfYWRqZXhwKGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYikKK3sKKyAgICBtcGRfc3NpemVfdCBzaGlmdCwgaTsKKworICAgIGlmIChhLT5leHAgIT0gYi0+ZXhwKSB7CisgICAgICAgIC8qIENhbm5vdCB3cmFwOiBhLT5leHAgKyBhLT5kaWdpdHMgPSBiLT5leHAgKyBiLT5kaWdpdHMsIHNvCisgICAgICAgICAqIGEtPmV4cCAtIGItPmV4cCA9IGItPmRpZ2l0cyAtIGEtPmRpZ2l0cy4gKi8KKyAgICAgICAgc2hpZnQgPSBhLT5leHAgLSBiLT5leHA7CisgICAgICAgIGlmIChzaGlmdCA+IDApIHsKKyAgICAgICAgICAgIHJldHVybiAtMSAqIF9tcGRfYmFzZWNtcChiLT5kYXRhLCBhLT5kYXRhLCBiLT5sZW4sIGEtPmxlbiwgc2hpZnQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIF9tcGRfYmFzZWNtcChhLT5kYXRhLCBiLT5kYXRhLCBhLT5sZW4sIGItPmxlbiwgLXNoaWZ0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAgICogQXQgdGhpcyBwb2ludCBhZGpleHAoYSkgPT0gYWRqZXhwKGIpIGFuZCBhLT5leHAgPT0gYi0+ZXhwLAorICAgICAqIHNvIGEtPmRpZ2l0cyA9PSBiLT5kaWdpdHMsIHRoZXJlZm9yZSBhLT5sZW4gPT0gYi0+bGVuLgorICAgICAqLworICAgIGZvciAoaSA9IGEtPmxlbi0xOyBpID49IDA7IC0taSkgeworICAgICAgICBDTVBfRVFVQUxfT1JfUkVUVVJOKGEtPmRhdGFbaV0sIGItPmRhdGFbaV0pCisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIENvbXBhcmUgdHdvIG51bWVyaWNhbCB2YWx1ZXMuICovCitzdGF0aWMgaW50CitfbXBkX2NtcChjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpCit7CisgICAgbXBkX3NzaXplX3QgYWRqZXhwX2EsIGFkamV4cF9iOworCisgICAgLyogZXF1YWwgcG9pbnRlcnMgKi8KKyAgICBpZiAoYSA9PSBiKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIGluZmluaXRpZXMgKi8KKyAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgICAgICByZXR1cm4gbXBkX2lzbmVnYXRpdmUoYikgLSBtcGRfaXNuZWdhdGl2ZShhKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbXBkX2FyaXRoX3NpZ24oYSk7CisgICAgfQorICAgIGlmIChtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICByZXR1cm4gLW1wZF9hcml0aF9zaWduKGIpOworICAgIH0KKworICAgIC8qIHplcm9zICovCisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICBpZiAobXBkX2lzemVyb2NvZWZmKGIpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLW1wZF9hcml0aF9zaWduKGIpOworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGIpKSB7CisgICAgICAgIHJldHVybiBtcGRfYXJpdGhfc2lnbihhKTsKKyAgICB9CisKKyAgICAvKiBkaWZmZXJlbnQgc2lnbnMgKi8KKyAgICBpZiAobXBkX3NpZ24oYSkgIT0gbXBkX3NpZ24oYikpIHsKKyAgICAgICAgcmV0dXJuIG1wZF9zaWduKGIpIC0gbXBkX3NpZ24oYSk7CisgICAgfQorCisgICAgLyogZGlmZmVyZW50IGFkanVzdGVkIGV4cG9uZW50cyAqLworICAgIGFkamV4cF9hID0gbXBkX2FkamV4cChhKTsKKyAgICBhZGpleHBfYiA9IG1wZF9hZGpleHAoYik7CisgICAgaWYgKGFkamV4cF9hICE9IGFkamV4cF9iKSB7CisgICAgICAgIGlmIChhZGpleHBfYSA8IGFkamV4cF9iKSB7CisgICAgICAgICAgICByZXR1cm4gLTEgKiBtcGRfYXJpdGhfc2lnbihhKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbXBkX2FyaXRoX3NpZ24oYSk7CisgICAgfQorCisgICAgLyogc2FtZSBhZGp1c3RlZCBleHBvbmVudHMgKi8KKyAgICByZXR1cm4gX21wZF9jbXBfc2FtZV9hZGpleHAoYSwgYikgKiBtcGRfYXJpdGhfc2lnbihhKTsKK30KKworLyogQ29tcGFyZSB0aGUgYWJzb2x1dGVzIG9mIHR3byBudW1lcmljYWwgdmFsdWVzLiAqLworc3RhdGljIGludAorX21wZF9jbXBfYWJzKGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYikKK3sKKyAgICBtcGRfc3NpemVfdCBhZGpleHBfYSwgYWRqZXhwX2I7CisKKyAgICAvKiBlcXVhbCBwb2ludGVycyAqLworICAgIGlmIChhID09IGIpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogaW5maW5pdGllcyAqLworICAgIGlmIChtcGRfaXNpbmZpbml0ZShhKSkgeworICAgICAgICBpZiAobXBkX2lzaW5maW5pdGUoYikpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAobXBkX2lzaW5maW5pdGUoYikpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIHplcm9zICovCisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICBpZiAobXBkX2lzemVyb2NvZWZmKGIpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYikpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgLyogZGlmZmVyZW50IGFkanVzdGVkIGV4cG9uZW50cyAqLworICAgIGFkamV4cF9hID0gbXBkX2FkamV4cChhKTsKKyAgICBhZGpleHBfYiA9IG1wZF9hZGpleHAoYik7CisgICAgaWYgKGFkamV4cF9hICE9IGFkamV4cF9iKSB7CisgICAgICAgIGlmIChhZGpleHBfYSA8IGFkamV4cF9iKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgLyogc2FtZSBhZGp1c3RlZCBleHBvbmVudHMgKi8KKyAgICByZXR1cm4gX21wZF9jbXBfc2FtZV9hZGpleHAoYSwgYik7Cit9CisKKy8qIENvbXBhcmUgdHdvIHZhbHVlcyBhbmQgcmV0dXJuIGFuIGludGVnZXIgcmVzdWx0LiAqLworaW50CittcGRfcWNtcChjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX2lzbmFuKGEpIHx8IG1wZF9pc25hbihiKSkgeworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICByZXR1cm4gSU5UX01BWDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBfbXBkX2NtcChhLCBiKTsKK30KKworLyoKKyAqIENvbXBhcmUgYSBhbmQgYiwgY29udmVydCB0aGUgdXN1YWwgaW50ZWdlciByZXN1bHQgdG8gYSBkZWNpbWFsIGFuZAorICogc3RvcmUgaXQgaW4gJ3Jlc3VsdCcuIEZvciBjb252ZW5pZW5jZSwgdGhlIGludGVnZXIgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uCisgKiBpcyByZXR1cm5lZC4gQ29tcGFyaXNvbnMgaW52b2x2aW5nIE5hTnMgcmV0dXJuIE5hTi9JTlRfTUFYLgorICovCitpbnQKK21wZF9xY29tcGFyZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGludCBjOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm4gSU5UX01BWDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGMgPSBfbXBkX2NtcChhLCBiKTsKKyAgICBfc2V0dHJpcGxlKHJlc3VsdCwgKGMgPCAwKSwgKGMgIT0gMCksIDApOworICAgIHJldHVybiBjOworfQorCisvKiBTYW1lIGFzIG1wZF9jb21wYXJlKCksIGJ1dCBzaWduYWwgZm9yIGFsbCBOYU5zLCBpLmUuIGFsc28gZm9yIHF1aWV0IE5hTnMuICovCitpbnQKK21wZF9xY29tcGFyZV9zaWduYWwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaW50IGM7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIElOVF9NQVg7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjID0gX21wZF9jbXAoYSwgYik7CisgICAgX3NldHRyaXBsZShyZXN1bHQsIChjIDwgMCksIChjICE9IDApLCAwKTsKKyAgICByZXR1cm4gYzsKK30KKworLyogQ29tcGFyZSB0aGUgb3BlcmFuZHMgdXNpbmcgYSB0b3RhbCBvcmRlci4gKi8KK2ludAorbXBkX2NtcF90b3RhbChjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpCit7CisgICAgbXBkX3QgYWEsIGJiOworICAgIGludCBuYW5fYSwgbmFuX2I7CisgICAgaW50IGM7CisKKyAgICBpZiAobXBkX3NpZ24oYSkgIT0gbXBkX3NpZ24oYikpIHsKKyAgICAgICAgcmV0dXJuIG1wZF9zaWduKGIpIC0gbXBkX3NpZ24oYSk7CisgICAgfQorCisKKyAgICBpZiAobXBkX2lzbmFuKGEpKSB7CisgICAgICAgIGMgPSAxOworICAgICAgICBpZiAobXBkX2lzbmFuKGIpKSB7CisgICAgICAgICAgICBuYW5fYSA9IChtcGRfaXNxbmFuKGEpKSA/IDEgOiAwOworICAgICAgICAgICAgbmFuX2IgPSAobXBkX2lzcW5hbihiKSkgPyAxIDogMDsKKyAgICAgICAgICAgIGlmIChuYW5fYiA9PSBuYW5fYSkgeworICAgICAgICAgICAgICAgIGlmIChhLT5sZW4gPiAwICYmIGItPmxlbiA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgX21wZF9jb3B5X3NoYXJlZCgmYWEsIGEpOworICAgICAgICAgICAgICAgICAgICBfbXBkX2NvcHlfc2hhcmVkKCZiYiwgYik7CisgICAgICAgICAgICAgICAgICAgIGFhLmV4cCA9IGJiLmV4cCA9IDA7CisgICAgICAgICAgICAgICAgICAgIC8qIGNvbXBhcmUgcGF5bG9hZCAqLworICAgICAgICAgICAgICAgICAgICBjID0gX21wZF9jbXBfYWJzKCZhYSwgJmJiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGMgPSAoYS0+bGVuID4gMCkgLSAoYi0+bGVuID4gMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYyA9IG5hbl9hIC0gbmFuX2I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAobXBkX2lzbmFuKGIpKSB7CisgICAgICAgIGMgPSAtMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGMgPSBfbXBkX2NtcF9hYnMoYSwgYik7CisgICAgICAgIGlmIChjID09IDAgJiYgYS0+ZXhwICE9IGItPmV4cCkgeworICAgICAgICAgICAgYyA9IChhLT5leHAgPCBiLT5leHApID8gLTEgOiAxOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGMgKiBtcGRfYXJpdGhfc2lnbihhKTsKK30KKworLyoKKyAqIENvbXBhcmUgYSBhbmQgYiBhY2NvcmRpbmcgdG8gYSB0b3RhbCBvcmRlciwgY29udmVydCB0aGUgdXN1YWwgaW50ZWdlciByZXN1bHQKKyAqIHRvIGEgZGVjaW1hbCBhbmQgc3RvcmUgaXQgaW4gJ3Jlc3VsdCcuIEZvciBjb252ZW5pZW5jZSwgdGhlIGludGVnZXIgcmVzdWx0CisgKiBvZiB0aGUgY29tcGFyaXNvbiBpcyByZXR1cm5lZC4KKyAqLworaW50CittcGRfY29tcGFyZV90b3RhbChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpCit7CisgICAgaW50IGM7CisKKyAgICBjID0gbXBkX2NtcF90b3RhbChhLCBiKTsKKyAgICBfc2V0dHJpcGxlKHJlc3VsdCwgKGMgPCAwKSwgKGMgIT0gMCksIDApOworICAgIHJldHVybiBjOworfQorCisvKiBDb21wYXJlIHRoZSBtYWduaXR1ZGUgb2YgdGhlIG9wZXJhbmRzIHVzaW5nIGEgdG90YWwgb3JkZXIuICovCitpbnQKK21wZF9jbXBfdG90YWxfbWFnKGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYikKK3sKKyAgICBtcGRfdCBhYSwgYmI7CisKKyAgICBfbXBkX2NvcHlfc2hhcmVkKCZhYSwgYSk7CisgICAgX21wZF9jb3B5X3NoYXJlZCgmYmIsIGIpOworCisgICAgbXBkX3NldF9wb3NpdGl2ZSgmYWEpOworICAgIG1wZF9zZXRfcG9zaXRpdmUoJmJiKTsKKworICAgIHJldHVybiBtcGRfY21wX3RvdGFsKCZhYSwgJmJiKTsKK30KKworLyoKKyAqIENvbXBhcmUgdGhlIG1hZ25pdHVkZSBvZiBhIGFuZCBiIGFjY29yZGluZyB0byBhIHRvdGFsIG9yZGVyLCBjb252ZXJ0IHRoZQorICogdGhlIHVzdWFsIGludGVnZXIgcmVzdWx0IHRvIGEgZGVjaW1hbCBhbmQgc3RvcmUgaXQgaW4gJ3Jlc3VsdCcuCisgKiBGb3IgY29udmVuaWVuY2UsIHRoZSBpbnRlZ2VyIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpcyByZXR1cm5lZC4KKyAqLworaW50CittcGRfY29tcGFyZV90b3RhbF9tYWcobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiKQoreworICAgIGludCBjOworCisgICAgYyA9IG1wZF9jbXBfdG90YWxfbWFnKGEsIGIpOworICAgIF9zZXR0cmlwbGUocmVzdWx0LCAoYyA8IDApLCAoYyAhPSAwKSwgMCk7CisgICAgcmV0dXJuIGM7Cit9CisKKy8qIERldGVybWluZSBhbiBvcmRlcmluZyBmb3Igb3BlcmFuZHMgdGhhdCBhcmUgbnVtZXJpY2FsbHkgZXF1YWwuICovCitzdGF0aWMgaW5saW5lIGludAorX21wZF9jbXBfbnVtZXF1YWwoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiKQoreworICAgIGludCBzaWduX2EsIHNpZ25fYjsKKyAgICBpbnQgYzsKKworICAgIHNpZ25fYSA9IG1wZF9zaWduKGEpOworICAgIHNpZ25fYiA9IG1wZF9zaWduKGIpOworICAgIGlmIChzaWduX2EgIT0gc2lnbl9iKSB7CisgICAgICAgIGMgPSBzaWduX2IgLSBzaWduX2E7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBjID0gKGEtPmV4cCA8IGItPmV4cCkgPyAtMSA6IDE7CisgICAgICAgIGMgKj0gbXBkX2FyaXRoX3NpZ24oYSk7CisgICAgfQorCisgICAgcmV0dXJuIGM7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgIFNoaWZ0aW5nIHRoZSBjb2VmZmljaWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogU2hpZnQgdGhlIGNvZWZmaWNpZW50IG9mIHRoZSBvcGVyYW5kIHRvIHRoZSBsZWZ0LCBubyBjaGVjayBmb3Igc3BlY2lhbHMuCisgKiBCb3RoIG9wZXJhbmRzIG1heSBiZSB0aGUgc2FtZSBwb2ludGVyLiBJZiB0aGUgcmVzdWx0IGxlbmd0aCBoYXMgdG8gYmUKKyAqIGluY3JlYXNlZCwgbXBkX3FyZXNpemUoKSBtaWdodCBmYWlsIHdpdGggTVBEX01hbGxvY19lcnJvci4KKyAqLworaW50CittcGRfcXNoaWZ0bChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgbiwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfc3NpemVfdCBzaXplOworCisgICAgYXNzZXJ0KCFtcGRfaXNzcGVjaWFsKGEpKTsKKyAgICBhc3NlcnQobiA+PSAwKTsKKworICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkgfHwgbiA9PSAwKSB7CisgICAgICAgIHJldHVybiBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgIH0KKworICAgIHNpemUgPSBtcGRfZGlnaXRzX3RvX3NpemUoYS0+ZGlnaXRzK24pOworICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBzaXplLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybiAwOyAvKiByZXN1bHQgaXMgTmFOICovCisgICAgfQorCisgICAgX21wZF9iYXNlc2hpZnRsKHJlc3VsdC0+ZGF0YSwgYS0+ZGF0YSwgc2l6ZSwgYS0+bGVuLCBuKTsKKworICAgIG1wZF9jb3B5X2ZsYWdzKHJlc3VsdCwgYSk7CisgICAgcmVzdWx0LT5leHAgPSBhLT5leHA7CisgICAgcmVzdWx0LT5kaWdpdHMgPSBhLT5kaWdpdHMrbjsKKyAgICByZXN1bHQtPmxlbiA9IHNpemU7CisKKyAgICByZXR1cm4gMTsKK30KKworLyogRGV0ZXJtaW5lIHRoZSByb3VuZGluZyBpbmRpY2F0b3IgaWYgYWxsIGRpZ2l0cyBvZiB0aGUgY29lZmZpY2llbnQgYXJlIHNoaWZ0ZWQKKyAqIG91dCBvZiB0aGUgcGljdHVyZS4gKi8KK3N0YXRpYyBtcGRfdWludF90CitfbXBkX2dldF9ybmQoY29uc3QgbXBkX3VpbnRfdCAqZGF0YSwgbXBkX3NzaXplX3QgbGVuLCBpbnQgdXNlX21zZCkKK3sKKyAgICBtcGRfdWludF90IHJuZCA9IDAsIHJlc3QgPSAwLCB3b3JkOworCisgICAgd29yZCA9IGRhdGFbbGVuLTFdOworICAgIC8qIHNwZWNpYWwgdHJlYXRtZW50IGZvciB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdCBpZiBzaGlmdCA9PSBkaWdpdHMgKi8KKyAgICBpZiAodXNlX21zZCkgeworICAgICAgICBfbXBkX2Rpdm1vZF9wb3cxMCgmcm5kLCAmcmVzdCwgd29yZCwgbXBkX3dvcmRfZGlnaXRzKHdvcmQpLTEpOworICAgICAgICBpZiAobGVuID4gMSAmJiByZXN0ID09IDApIHsKKyAgICAgICAgICAgICByZXN0ID0gIV9tcGRfaXNhbGx6ZXJvKGRhdGEsIGxlbi0xKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdCA9ICFfbXBkX2lzYWxsemVybyhkYXRhLCBsZW4pOworICAgIH0KKworICAgIHJldHVybiAocm5kID09IDAgfHwgcm5kID09IDUpID8gcm5kICsgISFyZXN0IDogcm5kOworfQorCisvKgorICogU2FtZSBhcyBtcGRfcXNoaWZ0cigpLCBidXQgJ3Jlc3VsdCcgaXMgYW4gbXBkX3Qgd2l0aCBhIHN0YXRpYyBjb2VmZmljaWVudC4KKyAqIEl0IGlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCB0aGUgY29lZmZpY2llbnQgaXMgYmlnCisgKiBlbm91Z2guIFRoZSBmdW5jdGlvbiBjYW5ub3QgZmFpbC4KKyAqLworc3RhdGljIG1wZF91aW50X3QKK21wZF9xc3NoaWZ0cihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgbikKK3sKKyAgICBtcGRfdWludF90IHJuZDsKKyAgICBtcGRfc3NpemVfdCBzaXplOworCisgICAgYXNzZXJ0KCFtcGRfaXNzcGVjaWFsKGEpKTsKKyAgICBhc3NlcnQobiA+PSAwKTsKKworICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkgfHwgbiA9PSAwKSB7CisgICAgICAgIG1wZF9xY29weV9zdGF0aWMocmVzdWx0LCBhKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKG4gPj0gYS0+ZGlnaXRzKSB7CisgICAgICAgIHJuZCA9IF9tcGRfZ2V0X3JuZChhLT5kYXRhLCBhLT5sZW4sIChuPT1hLT5kaWdpdHMpKTsKKyAgICAgICAgbXBkX3plcm9jb2VmZihyZXN1bHQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0LT5kaWdpdHMgPSBhLT5kaWdpdHMtbjsKKyAgICAgICAgc2l6ZSA9IG1wZF9kaWdpdHNfdG9fc2l6ZShyZXN1bHQtPmRpZ2l0cyk7CisgICAgICAgIHJuZCA9IF9tcGRfYmFzZXNoaWZ0cihyZXN1bHQtPmRhdGEsIGEtPmRhdGEsIGEtPmxlbiwgbik7CisgICAgICAgIHJlc3VsdC0+bGVuID0gc2l6ZTsKKyAgICB9CisKKyAgICBtcGRfY29weV9mbGFncyhyZXN1bHQsIGEpOworICAgIHJlc3VsdC0+ZXhwID0gYS0+ZXhwOworCisgICAgcmV0dXJuIHJuZDsKK30KKworLyoKKyAqIElucGxhY2Ugc2hpZnQgb2YgdGhlIGNvZWZmaWNpZW50IHRvIHRoZSByaWdodCwgbm8gY2hlY2sgZm9yIHNwZWNpYWxzLgorICogUmV0dXJucyB0aGUgcm91bmRpbmcgaW5kaWNhdG9yIGZvciBtcGRfcm5kX2luY3IoKS4KKyAqIFRoZSBmdW5jdGlvbiBjYW5ub3QgZmFpbC4KKyAqLworbXBkX3VpbnRfdAorbXBkX3FzaGlmdHJfaW5wbGFjZShtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBuKQoreworICAgIHVpbnQzMl90IGR1bW15OworICAgIG1wZF91aW50X3Qgcm5kOworICAgIG1wZF9zc2l6ZV90IHNpemU7CisKKyAgICBhc3NlcnQoIW1wZF9pc3NwZWNpYWwocmVzdWx0KSk7CisgICAgYXNzZXJ0KG4gPj0gMCk7CisKKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKHJlc3VsdCkgfHwgbiA9PSAwKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChuID49IHJlc3VsdC0+ZGlnaXRzKSB7CisgICAgICAgIHJuZCA9IF9tcGRfZ2V0X3JuZChyZXN1bHQtPmRhdGEsIHJlc3VsdC0+bGVuLCAobj09cmVzdWx0LT5kaWdpdHMpKTsKKyAgICAgICAgbXBkX3plcm9jb2VmZihyZXN1bHQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcm5kID0gX21wZF9iYXNlc2hpZnRyKHJlc3VsdC0+ZGF0YSwgcmVzdWx0LT5kYXRhLCByZXN1bHQtPmxlbiwgbik7CisgICAgICAgIHJlc3VsdC0+ZGlnaXRzIC09IG47CisgICAgICAgIHNpemUgPSBtcGRfZGlnaXRzX3RvX3NpemUocmVzdWx0LT5kaWdpdHMpOworICAgICAgICAvKiByZWR1Y2luZyB0aGUgc2l6ZSBjYW5ub3QgZmFpbCAqLworICAgICAgICBtcGRfcXJlc2l6ZShyZXN1bHQsIHNpemUsICZkdW1teSk7CisgICAgICAgIHJlc3VsdC0+bGVuID0gc2l6ZTsKKyAgICB9CisKKyAgICByZXR1cm4gcm5kOworfQorCisvKgorICogU2hpZnQgdGhlIGNvZWZmaWNpZW50IG9mIHRoZSBvcGVyYW5kIHRvIHRoZSByaWdodCwgbm8gY2hlY2sgZm9yIHNwZWNpYWxzLgorICogQm90aCBvcGVyYW5kcyBtYXkgYmUgdGhlIHNhbWUgcG9pbnRlci4gUmV0dXJucyB0aGUgcm91bmRpbmcgaW5kaWNhdG9yIHRvCisgKiBiZSB1c2VkIGJ5IG1wZF9ybmRfaW5jcigpLiBJZiB0aGUgcmVzdWx0IGxlbmd0aCBoYXMgdG8gYmUgaW5jcmVhc2VkLAorICogbXBkX3Fjb3B5KCkgb3IgbXBkX3FyZXNpemUoKSBtaWdodCBmYWlsIHdpdGggTVBEX01hbGxvY19lcnJvci4gSW4gdGhvc2UKKyAqIGNhc2VzLCBNUERfVUlOVF9NQVggaXMgcmV0dXJuZWQuCisgKi8KK21wZF91aW50X3QKK21wZF9xc2hpZnRyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBuLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF91aW50X3Qgcm5kOworICAgIG1wZF9zc2l6ZV90IHNpemU7CisKKyAgICBhc3NlcnQoIW1wZF9pc3NwZWNpYWwoYSkpOworICAgIGFzc2VydChuID49IDApOworCisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSB8fCBuID09IDApIHsKKyAgICAgICAgaWYgKCFtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm4gTVBEX1VJTlRfTUFYOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChuID49IGEtPmRpZ2l0cykgeworICAgICAgICBybmQgPSBfbXBkX2dldF9ybmQoYS0+ZGF0YSwgYS0+bGVuLCAobj09YS0+ZGlnaXRzKSk7CisgICAgICAgIG1wZF96ZXJvY29lZmYocmVzdWx0KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlc3VsdC0+ZGlnaXRzID0gYS0+ZGlnaXRzLW47CisgICAgICAgIHNpemUgPSBtcGRfZGlnaXRzX3RvX3NpemUocmVzdWx0LT5kaWdpdHMpOworICAgICAgICBpZiAocmVzdWx0ID09IGEpIHsKKyAgICAgICAgICAgIHJuZCA9IF9tcGRfYmFzZXNoaWZ0cihyZXN1bHQtPmRhdGEsIGEtPmRhdGEsIGEtPmxlbiwgbik7CisgICAgICAgICAgICAvKiByZWR1Y2luZyB0aGUgc2l6ZSBjYW5ub3QgZmFpbCAqLworICAgICAgICAgICAgbXBkX3FyZXNpemUocmVzdWx0LCBzaXplLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIHNpemUsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTVBEX1VJTlRfTUFYOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcm5kID0gX21wZF9iYXNlc2hpZnRyKHJlc3VsdC0+ZGF0YSwgYS0+ZGF0YSwgYS0+bGVuLCBuKTsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQtPmxlbiA9IHNpemU7CisgICAgfQorCisgICAgbXBkX2NvcHlfZmxhZ3MocmVzdWx0LCBhKTsKKyAgICByZXN1bHQtPmV4cCA9IGEtPmV4cDsKKworICAgIHJldHVybiBybmQ7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgIE1pc2NlbGxhbmVvdXMgb3BlcmF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBMb2dpY2FsIEFuZCAqLwordm9pZAorbXBkX3FhbmQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGNvbnN0IG1wZF90ICpiaWcgPSBhLCAqc21hbGwgPSBiOworICAgIG1wZF91aW50X3QgeCwgeSwgeiwgeGJpdCwgeWJpdDsKKyAgICBpbnQgaywgbXN3ZGlnaXRzOworICAgIG1wZF9zc2l6ZV90IGk7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpIHx8CisgICAgICAgIG1wZF9pc25lZ2F0aXZlKGEpIHx8IG1wZF9pc25lZ2F0aXZlKGIpIHx8CisgICAgICAgIGEtPmV4cCAhPSAwIHx8IGItPmV4cCAhPSAwKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoYi0+ZGlnaXRzID4gYS0+ZGlnaXRzKSB7CisgICAgICAgIGJpZyA9IGI7CisgICAgICAgIHNtYWxsID0gYTsKKyAgICB9CisgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIGJpZy0+bGVuLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKworICAgIC8qIGZ1bGwgd29yZHMgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgc21hbGwtPmxlbi0xOyBpKyspIHsKKyAgICAgICAgeCA9IHNtYWxsLT5kYXRhW2ldOworICAgICAgICB5ID0gYmlnLT5kYXRhW2ldOworICAgICAgICB6ID0gMDsKKyAgICAgICAgZm9yIChrID0gMDsgayA8IE1QRF9SRElHSVRTOyBrKyspIHsKKyAgICAgICAgICAgIHhiaXQgPSB4ICUgMTA7CisgICAgICAgICAgICB4IC89IDEwOworICAgICAgICAgICAgeWJpdCA9IHkgJSAxMDsKKyAgICAgICAgICAgIHkgLz0gMTA7CisgICAgICAgICAgICBpZiAoeGJpdCA+IDEgfHwgeWJpdCA+IDEpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICAgICAgeiArPSAoeGJpdCZ5Yml0KSA/IG1wZF9wb3cxMFtrXSA6IDA7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LT5kYXRhW2ldID0gejsKKyAgICB9CisgICAgLyogbW9zdCBzaWduaWZpY2FudCB3b3JkIG9mIHNtYWxsICovCisgICAgeCA9IHNtYWxsLT5kYXRhW2ldOworICAgIHkgPSBiaWctPmRhdGFbaV07CisgICAgeiA9IDA7CisgICAgbXN3ZGlnaXRzID0gbXBkX3dvcmRfZGlnaXRzKHgpOworICAgIGZvciAoayA9IDA7IGsgPCBtc3dkaWdpdHM7IGsrKykgeworICAgICAgICB4Yml0ID0geCAlIDEwOworICAgICAgICB4IC89IDEwOworICAgICAgICB5Yml0ID0geSAlIDEwOworICAgICAgICB5IC89IDEwOworICAgICAgICBpZiAoeGJpdCA+IDEgfHwgeWJpdCA+IDEpIHsKKyAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIH0KKyAgICAgICAgeiArPSAoeGJpdCZ5Yml0KSA/IG1wZF9wb3cxMFtrXSA6IDA7CisgICAgfQorICAgIHJlc3VsdC0+ZGF0YVtpKytdID0gejsKKworICAgIC8qIHNjYW4gdGhlIHJlc3Qgb2YgeSBmb3IgZGlnaXRzID4gMSAqLworICAgIGZvciAoOyBrIDwgTVBEX1JESUdJVFM7IGsrKykgeworICAgICAgICB5Yml0ID0geSAlIDEwOworICAgICAgICB5IC89IDEwOworICAgICAgICBpZiAoeWJpdCA+IDEpIHsKKyAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIH0KKyAgICB9CisgICAgLyogc2NhbiB0aGUgcmVzdCBvZiBiaWcgZm9yIGRpZ2l0cyA+IDEgKi8KKyAgICBmb3IgKDsgaSA8IGJpZy0+bGVuOyBpKyspIHsKKyAgICAgICAgeSA9IGJpZy0+ZGF0YVtpXTsKKyAgICAgICAgZm9yIChrID0gMDsgayA8IE1QRF9SRElHSVRTOyBrKyspIHsKKyAgICAgICAgICAgIHliaXQgPSB5ICUgMTA7CisgICAgICAgICAgICB5IC89IDEwOworICAgICAgICAgICAgaWYgKHliaXQgPiAxKSB7CisgICAgICAgICAgICAgICAgZ290byBpbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIG1wZF9jbGVhcl9mbGFncyhyZXN1bHQpOworICAgIHJlc3VsdC0+ZXhwID0gMDsKKyAgICByZXN1bHQtPmxlbiA9IF9tcGRfcmVhbF9zaXplKHJlc3VsdC0+ZGF0YSwgc21hbGwtPmxlbik7CisgICAgbXBkX3FyZXNpemUocmVzdWx0LCByZXN1bHQtPmxlbiwgc3RhdHVzKTsKKyAgICBtcGRfc2V0ZGlnaXRzKHJlc3VsdCk7CisgICAgX21wZF9jYXAocmVzdWx0LCBjdHgpOworICAgIHJldHVybjsKKworaW52YWxpZF9vcGVyYXRpb246CisgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworfQorCisvKiBDbGFzcyBvZiBhbiBvcGVyYW5kLiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgY29uc3RhbnQgbmFtZS4gKi8KK2NvbnN0IGNoYXIgKgorbXBkX2NsYXNzKGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgaWYgKG1wZF9pc25hbihhKSkgeworICAgICAgICBpZiAobXBkX2lzcW5hbihhKSkKKyAgICAgICAgICAgIHJldHVybiAiTmFOIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuICJzTmFOIjsKKyAgICB9CisgICAgZWxzZSBpZiAobXBkX2lzcG9zaXRpdmUoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpKQorICAgICAgICAgICAgcmV0dXJuICIrSW5maW5pdHkiOworICAgICAgICBlbHNlIGlmIChtcGRfaXN6ZXJvKGEpKQorICAgICAgICAgICAgcmV0dXJuICIrWmVybyI7CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc25vcm1hbChhLCBjdHgpKQorICAgICAgICAgICAgcmV0dXJuICIrTm9ybWFsIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuICIrU3Vibm9ybWFsIjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShhKSkKKyAgICAgICAgICAgIHJldHVybiAiLUluZmluaXR5IjsKKyAgICAgICAgZWxzZSBpZiAobXBkX2lzemVybyhhKSkKKyAgICAgICAgICAgIHJldHVybiAiLVplcm8iOworICAgICAgICBlbHNlIGlmIChtcGRfaXNub3JtYWwoYSwgY3R4KSkKKyAgICAgICAgICAgIHJldHVybiAiLU5vcm1hbCI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiAiLVN1Ym5vcm1hbCI7CisgICAgfQorfQorCisvKiBMb2dpY2FsIFhvciAqLwordm9pZAorbXBkX3FpbnZlcnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3VpbnRfdCB4LCB6LCB4Yml0OworICAgIG1wZF9zc2l6ZV90IGksIGRpZ2l0cywgbGVuOworICAgIG1wZF9zc2l6ZV90IHEsIHI7CisgICAgaW50IGs7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNuZWdhdGl2ZShhKSB8fCBhLT5leHAgIT0gMCkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkaWdpdHMgPSAoYS0+ZGlnaXRzIDwgY3R4LT5wcmVjKSA/IGN0eC0+cHJlYyA6IGEtPmRpZ2l0czsKKyAgICBfbXBkX2lkaXZfd29yZCgmcSwgJnIsIGRpZ2l0cywgTVBEX1JESUdJVFMpOworICAgIGxlbiA9IChyID09IDApID8gcSA6IHErMTsKKyAgICBpZiAoIW1wZF9xcmVzaXplKHJlc3VsdCwgbGVuLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgeCA9IChpIDwgYS0+bGVuKSA/IGEtPmRhdGFbaV0gOiAwOworICAgICAgICB6ID0gMDsKKyAgICAgICAgZm9yIChrID0gMDsgayA8IE1QRF9SRElHSVRTOyBrKyspIHsKKyAgICAgICAgICAgIHhiaXQgPSB4ICUgMTA7CisgICAgICAgICAgICB4IC89IDEwOworICAgICAgICAgICAgaWYgKHhiaXQgPiAxKSB7CisgICAgICAgICAgICAgICAgZ290byBpbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHogKz0gIXhiaXQgPyBtcGRfcG93MTBba10gOiAwOworICAgICAgICB9CisgICAgICAgIHJlc3VsdC0+ZGF0YVtpXSA9IHo7CisgICAgfQorCisgICAgbXBkX2NsZWFyX2ZsYWdzKHJlc3VsdCk7CisgICAgcmVzdWx0LT5leHAgPSAwOworICAgIHJlc3VsdC0+bGVuID0gX21wZF9yZWFsX3NpemUocmVzdWx0LT5kYXRhLCBsZW4pOworICAgIG1wZF9xcmVzaXplKHJlc3VsdCwgcmVzdWx0LT5sZW4sIHN0YXR1cyk7CisgICAgbXBkX3NldGRpZ2l0cyhyZXN1bHQpOworICAgIF9tcGRfY2FwKHJlc3VsdCwgY3R4KTsKKyAgICByZXR1cm47CisKK2ludmFsaWRfb3BlcmF0aW9uOgorICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKK30KKworLyogRXhwb25lbnQgb2YgdGhlIG1hZ25pdHVkZSBvZiB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdCBvZiB0aGUgb3BlcmFuZC4gKi8KK3ZvaWQKK21wZF9xbG9nYihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFuKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBNUERfUE9TLCBNUERfSU5GKTsKKyAgICB9CisgICAgZWxzZSBpZiAobXBkX2lzemVyb2NvZWZmKGEpKSB7CisgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgTVBEX05FRywgTVBEX0lORik7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0RpdmlzaW9uX2J5X3plcm87CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBtcGRfcXNldF9zc2l6ZShyZXN1bHQsIG1wZF9hZGpleHAoYSksIGN0eCwgc3RhdHVzKTsKKyAgICB9Cit9CisKKy8qIExvZ2ljYWwgT3IgKi8KK3ZvaWQKK21wZF9xb3IobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgY29uc3QgbXBkX3QgKmJpZyA9IGEsICpzbWFsbCA9IGI7CisgICAgbXBkX3VpbnRfdCB4LCB5LCB6LCB4Yml0LCB5Yml0OworICAgIGludCBrLCBtc3dkaWdpdHM7CisgICAgbXBkX3NzaXplX3QgaTsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikgfHwKKyAgICAgICAgbXBkX2lzbmVnYXRpdmUoYSkgfHwgbXBkX2lzbmVnYXRpdmUoYikgfHwKKyAgICAgICAgYS0+ZXhwICE9IDAgfHwgYi0+ZXhwICE9IDApIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChiLT5kaWdpdHMgPiBhLT5kaWdpdHMpIHsKKyAgICAgICAgYmlnID0gYjsKKyAgICAgICAgc21hbGwgPSBhOworICAgIH0KKyAgICBpZiAoIW1wZF9xcmVzaXplKHJlc3VsdCwgYmlnLT5sZW4sIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgLyogZnVsbCB3b3JkcyAqLworICAgIGZvciAoaSA9IDA7IGkgPCBzbWFsbC0+bGVuLTE7IGkrKykgeworICAgICAgICB4ID0gc21hbGwtPmRhdGFbaV07CisgICAgICAgIHkgPSBiaWctPmRhdGFbaV07CisgICAgICAgIHogPSAwOworICAgICAgICBmb3IgKGsgPSAwOyBrIDwgTVBEX1JESUdJVFM7IGsrKykgeworICAgICAgICAgICAgeGJpdCA9IHggJSAxMDsKKyAgICAgICAgICAgIHggLz0gMTA7CisgICAgICAgICAgICB5Yml0ID0geSAlIDEwOworICAgICAgICAgICAgeSAvPSAxMDsKKyAgICAgICAgICAgIGlmICh4Yml0ID4gMSB8fCB5Yml0ID4gMSkgeworICAgICAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICAgICB6ICs9ICh4Yml0fHliaXQpID8gbXBkX3BvdzEwW2tdIDogMDsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQtPmRhdGFbaV0gPSB6OworICAgIH0KKyAgICAvKiBtb3N0IHNpZ25pZmljYW50IHdvcmQgb2Ygc21hbGwgKi8KKyAgICB4ID0gc21hbGwtPmRhdGFbaV07CisgICAgeSA9IGJpZy0+ZGF0YVtpXTsKKyAgICB6ID0gMDsKKyAgICBtc3dkaWdpdHMgPSBtcGRfd29yZF9kaWdpdHMoeCk7CisgICAgZm9yIChrID0gMDsgayA8IG1zd2RpZ2l0czsgaysrKSB7CisgICAgICAgIHhiaXQgPSB4ICUgMTA7CisgICAgICAgIHggLz0gMTA7CisgICAgICAgIHliaXQgPSB5ICUgMTA7CisgICAgICAgIHkgLz0gMTA7CisgICAgICAgIGlmICh4Yml0ID4gMSB8fCB5Yml0ID4gMSkgeworICAgICAgICAgICAgZ290byBpbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgfQorICAgICAgICB6ICs9ICh4Yml0fHliaXQpID8gbXBkX3BvdzEwW2tdIDogMDsKKyAgICB9CisKKyAgICAvKiBzY2FuIGZvciBkaWdpdHMgPiAxIGFuZCBjb3B5IHRoZSByZXN0IG9mIHkgKi8KKyAgICBmb3IgKDsgayA8IE1QRF9SRElHSVRTOyBrKyspIHsKKyAgICAgICAgeWJpdCA9IHkgJSAxMDsKKyAgICAgICAgeSAvPSAxMDsKKyAgICAgICAgaWYgKHliaXQgPiAxKSB7CisgICAgICAgICAgICBnb3RvIGludmFsaWRfb3BlcmF0aW9uOworICAgICAgICB9CisgICAgICAgIHogKz0geWJpdCptcGRfcG93MTBba107CisgICAgfQorICAgIHJlc3VsdC0+ZGF0YVtpKytdID0gejsKKyAgICAvKiBzY2FuIGZvciBkaWdpdHMgPiAxIGFuZCBjb3B5IHRoZSByZXN0IG9mIGJpZyAqLworICAgIGZvciAoOyBpIDwgYmlnLT5sZW47IGkrKykgeworICAgICAgICB5ID0gYmlnLT5kYXRhW2ldOworICAgICAgICBmb3IgKGsgPSAwOyBrIDwgTVBEX1JESUdJVFM7IGsrKykgeworICAgICAgICAgICAgeWJpdCA9IHkgJSAxMDsKKyAgICAgICAgICAgIHkgLz0gMTA7CisgICAgICAgICAgICBpZiAoeWJpdCA+IDEpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJlc3VsdC0+ZGF0YVtpXSA9IGJpZy0+ZGF0YVtpXTsKKyAgICB9CisKKyAgICBtcGRfY2xlYXJfZmxhZ3MocmVzdWx0KTsKKyAgICByZXN1bHQtPmV4cCA9IDA7CisgICAgcmVzdWx0LT5sZW4gPSBfbXBkX3JlYWxfc2l6ZShyZXN1bHQtPmRhdGEsIGJpZy0+bGVuKTsKKyAgICBtcGRfcXJlc2l6ZShyZXN1bHQsIHJlc3VsdC0+bGVuLCBzdGF0dXMpOworICAgIG1wZF9zZXRkaWdpdHMocmVzdWx0KTsKKyAgICBfbXBkX2NhcChyZXN1bHQsIGN0eCk7CisgICAgcmV0dXJuOworCitpbnZhbGlkX29wZXJhdGlvbjoKKyAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7Cit9CisKKy8qCisgKiBSb3RhdGUgdGhlIGNvZWZmaWNpZW50IG9mICdhJyBieSAnYicgZGlnaXRzLiAnYicgbXVzdCBiZSBhbiBpbnRlZ2VyIHdpdGgKKyAqIGV4cG9uZW50IDAuCisgKi8KK3ZvaWQKK21wZF9xcm90YXRlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50MzJfdCB3b3Jrc3RhdHVzID0gMDsKKyAgICBNUERfTkVXX1NUQVRJQyh0bXAsMCwwLDAsMCk7CisgICAgTVBEX05FV19TVEFUSUMoYmlnLDAsMCwwLDApOworICAgIE1QRF9ORVdfU1RBVElDKHNtYWxsLDAsMCwwLDApOworICAgIG1wZF9zc2l6ZV90IG4sIGxzaGlmdCwgcnNoaWZ0OworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGItPmV4cCAhPSAwIHx8IG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG4gPSBtcGRfcWdldF9zc2l6ZShiLCAmd29ya3N0YXR1cyk7CisgICAgaWYgKHdvcmtzdGF0dXMmTVBEX0ludmFsaWRfb3BlcmF0aW9uKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobiA+IGN0eC0+cHJlYyB8fCBuIDwgLWN0eC0+cHJlYykgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpKSB7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobiA+PSAwKSB7CisgICAgICAgIGxzaGlmdCA9IG47CisgICAgICAgIHJzaGlmdCA9IGN0eC0+cHJlYy1uOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbHNoaWZ0ID0gY3R4LT5wcmVjK247CisgICAgICAgIHJzaGlmdCA9IC1uOworICAgIH0KKworICAgIGlmIChhLT5kaWdpdHMgPiBjdHgtPnByZWMpIHsKKyAgICAgICAgaWYgKCFtcGRfcWNvcHkoJnRtcCwgYSwgc3RhdHVzKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICB9CisgICAgICAgIF9tcGRfY2FwKCZ0bXAsIGN0eCk7CisgICAgICAgIGEgPSAmdG1wOworICAgIH0KKworICAgIGlmICghbXBkX3FzaGlmdGwoJmJpZywgYSwgbHNoaWZ0LCBzdGF0dXMpKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgIGdvdG8gZmluaXNoOworICAgIH0KKyAgICBfbXBkX2NhcCgmYmlnLCBjdHgpOworCisgICAgaWYgKG1wZF9xc2hpZnRyKCZzbWFsbCwgYSwgcnNoaWZ0LCBzdGF0dXMpID09IE1QRF9VSU5UX01BWCkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICB9CisgICAgX21wZF9xYWRkKHJlc3VsdCwgJmJpZywgJnNtYWxsLCBjdHgsIHN0YXR1cyk7CisKKworZmluaXNoOgorICAgIG1wZF9kZWwoJnRtcCk7CisgICAgbXBkX2RlbCgmYmlnKTsKKyAgICBtcGRfZGVsKCZzbWFsbCk7Cit9CisKKy8qCisgKiBiIG11c3QgYmUgYW4gaW50ZWdlciB3aXRoIGV4cG9uZW50IDAgYW5kIGluIHRoZSByYW5nZSArLTIqKGVtYXggKyBwcmVjKS4KKyAqIFhYWDogSW4gbXkgb3BpbmlvbiArLSgyKmVtYXggKyBwcmVjKSB3b3VsZCBiZSBtb3JlIHNlbnNpYmxlLgorICogVGhlIHJlc3VsdCBpcyBhIHdpdGggdGhlIHZhbHVlIG9mIGIgYWRkZWQgdG8gaXRzIGV4cG9uZW50LgorICovCit2b2lkCittcGRfcXNjYWxlYihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgdWludDMyX3Qgd29ya3N0YXR1cyA9IDA7CisgICAgbXBkX3VpbnRfdCBuLCBtYXhqdW1wOworI2lmbmRlZiBMRUdBQ1lfQ09NUElMRVIKKyAgICBpbnQ2NF90IGV4cDsKKyNlbHNlCisgICAgbXBkX3VpbnRfdCB4OworICAgIGludCB4X3NpZ24sIG5fc2lnbjsKKyAgICBtcGRfc3NpemVfdCBleHA7CisjZW5kaWYKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFucyhyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIGlmIChiLT5leHAgIT0gMCB8fCBtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBuID0gbXBkX3FhYnNfdWludChiLCAmd29ya3N0YXR1cyk7CisgICAgLyogdGhlIHNwZWMgZGVtYW5kcyB0aGlzICovCisgICAgbWF4anVtcCA9IDIgKiAobXBkX3VpbnRfdCkoY3R4LT5lbWF4ICsgY3R4LT5wcmVjKTsKKworICAgIGlmIChuID4gbWF4anVtcCB8fCB3b3Jrc3RhdHVzJk1QRF9JbnZhbGlkX29wZXJhdGlvbikgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpKSB7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZm5kZWYgTEVHQUNZX0NPTVBJTEVSCisgICAgZXhwID0gYS0+ZXhwICsgKGludDY0X3QpbiAqIG1wZF9hcml0aF9zaWduKGIpOworICAgIGV4cCA9IChleHAgPiBNUERfRVhQX0lORikgPyBNUERfRVhQX0lORiA6IGV4cDsKKyAgICBleHAgPSAoZXhwIDwgTVBEX0VYUF9DTEFNUCkgPyBNUERfRVhQX0NMQU1QIDogZXhwOworI2Vsc2UKKyAgICB4ID0gKGEtPmV4cCA8IDApID8gLWEtPmV4cCA6IGEtPmV4cDsKKyAgICB4X3NpZ24gPSAoYS0+ZXhwIDwgMCkgPyAxIDogMDsKKyAgICBuX3NpZ24gPSBtcGRfaXNuZWdhdGl2ZShiKSA/IDEgOiAwOworCisgICAgaWYgKHhfc2lnbiA9PSBuX3NpZ24pIHsKKyAgICAgICAgeCA9IHggKyBuOworICAgICAgICBpZiAoeCA8IG4pIHggPSBNUERfVUlOVF9NQVg7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB4X3NpZ24gPSAoeCA+PSBuKSA/IHhfc2lnbiA6IG5fc2lnbjsKKyAgICAgICAgeCA9ICh4ID49IG4pID8geCAtIG4gOiBuIC0geDsKKyAgICB9CisgICAgaWYgKCF4X3NpZ24gJiYgeCA+IE1QRF9FWFBfSU5GKSB4ID0gTVBEX0VYUF9JTkY7CisgICAgaWYgKHhfc2lnbiAmJiB4ID4gLU1QRF9FWFBfQ0xBTVApIHggPSAtTVBEX0VYUF9DTEFNUDsKKyAgICBleHAgPSB4X3NpZ24gPyAtKChtcGRfc3NpemVfdCl4KSA6IChtcGRfc3NpemVfdCl4OworI2VuZGlmCisKKyAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgIHJlc3VsdC0+ZXhwID0gKG1wZF9zc2l6ZV90KWV4cDsKKworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qCisgKiBTaGlmdCB0aGUgY29lZmZpY2llbnQgYnkgbiBkaWdpdHMsIHBvc2l0aXZlIG4gaXMgYSBsZWZ0IHNoaWZ0LiBJbiB0aGUgY2FzZQorICogb2YgYSBsZWZ0IHNoaWZ0LCB0aGUgcmVzdWx0IGlzIGRlY2FwaXRhdGVkIHRvIGZpdCB0aGUgY29udGV4dCBwcmVjaXNpb24uIElmCisgKiB5b3UgZG9uJ3Qgd2FudCB0aGF0LCB1c2UgbXBkX3NoaWZ0bCgpLgorICovCit2b2lkCittcGRfcXNoaWZ0bihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgbiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW4ocmVzdWx0LCBhLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG4gPj0gMCAmJiBuIDw9IGN0eC0+cHJlYykgeworICAgICAgICBtcGRfcXNoaWZ0bChyZXN1bHQsIGEsIG4sIHN0YXR1cyk7CisgICAgICAgIF9tcGRfY2FwKHJlc3VsdCwgY3R4KTsKKyAgICB9CisgICAgZWxzZSBpZiAobiA8IDAgJiYgbiA+PSAtY3R4LT5wcmVjKSB7CisgICAgICAgIGlmICghbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIF9tcGRfY2FwKHJlc3VsdCwgY3R4KTsKKyAgICAgICAgbXBkX3FzaGlmdHJfaW5wbGFjZShyZXN1bHQsIC1uKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICB9Cit9CisKKy8qCisgKiBTYW1lIGFzIG1wZF9zaGlmdG4oKSwgYnV0IHRoZSBzaGlmdCBpcyBzcGVjaWZpZWQgYnkgdGhlIGRlY2ltYWwgYiwgd2hpY2gKKyAqIG11c3QgYmUgYW4gaW50ZWdlciB3aXRoIGEgemVybyBleHBvbmVudC4gSW5maW5pdGllcyByZW1haW4gaW5maW5pdGllcy4KKyAqLwordm9pZAorbXBkX3FzaGlmdChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50MzJfdCB3b3Jrc3RhdHVzID0gMDsKKyAgICBtcGRfc3NpemVfdCBuOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGItPmV4cCAhPSAwIHx8IG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG4gPSBtcGRfcWdldF9zc2l6ZShiLCAmd29ya3N0YXR1cyk7CisgICAgaWYgKHdvcmtzdGF0dXMmTVBEX0ludmFsaWRfb3BlcmF0aW9uKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobiA+IGN0eC0+cHJlYyB8fCBuIDwgLWN0eC0+cHJlYykgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpKSB7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobiA+PSAwKSB7CisgICAgICAgIG1wZF9xc2hpZnRsKHJlc3VsdCwgYSwgbiwgc3RhdHVzKTsKKyAgICAgICAgX21wZF9jYXAocmVzdWx0LCBjdHgpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKCFtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgX21wZF9jYXAocmVzdWx0LCBjdHgpOworICAgICAgICBtcGRfcXNoaWZ0cl9pbnBsYWNlKHJlc3VsdCwgLW4pOworICAgIH0KK30KKworLyogTG9naWNhbCBYb3IgKi8KK3ZvaWQKK21wZF9xeG9yKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGNvbnN0IG1wZF90ICpiaWcgPSBhLCAqc21hbGwgPSBiOworICAgIG1wZF91aW50X3QgeCwgeSwgeiwgeGJpdCwgeWJpdDsKKyAgICBpbnQgaywgbXN3ZGlnaXRzOworICAgIG1wZF9zc2l6ZV90IGk7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpIHx8CisgICAgICAgIG1wZF9pc25lZ2F0aXZlKGEpIHx8IG1wZF9pc25lZ2F0aXZlKGIpIHx8CisgICAgICAgIGEtPmV4cCAhPSAwIHx8IGItPmV4cCAhPSAwKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoYi0+ZGlnaXRzID4gYS0+ZGlnaXRzKSB7CisgICAgICAgIGJpZyA9IGI7CisgICAgICAgIHNtYWxsID0gYTsKKyAgICB9CisgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIGJpZy0+bGVuLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKworICAgIC8qIGZ1bGwgd29yZHMgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgc21hbGwtPmxlbi0xOyBpKyspIHsKKyAgICAgICAgeCA9IHNtYWxsLT5kYXRhW2ldOworICAgICAgICB5ID0gYmlnLT5kYXRhW2ldOworICAgICAgICB6ID0gMDsKKyAgICAgICAgZm9yIChrID0gMDsgayA8IE1QRF9SRElHSVRTOyBrKyspIHsKKyAgICAgICAgICAgIHhiaXQgPSB4ICUgMTA7CisgICAgICAgICAgICB4IC89IDEwOworICAgICAgICAgICAgeWJpdCA9IHkgJSAxMDsKKyAgICAgICAgICAgIHkgLz0gMTA7CisgICAgICAgICAgICBpZiAoeGJpdCA+IDEgfHwgeWJpdCA+IDEpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICAgICAgeiArPSAoeGJpdF55Yml0KSA/IG1wZF9wb3cxMFtrXSA6IDA7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LT5kYXRhW2ldID0gejsKKyAgICB9CisgICAgLyogbW9zdCBzaWduaWZpY2FudCB3b3JkIG9mIHNtYWxsICovCisgICAgeCA9IHNtYWxsLT5kYXRhW2ldOworICAgIHkgPSBiaWctPmRhdGFbaV07CisgICAgeiA9IDA7CisgICAgbXN3ZGlnaXRzID0gbXBkX3dvcmRfZGlnaXRzKHgpOworICAgIGZvciAoayA9IDA7IGsgPCBtc3dkaWdpdHM7IGsrKykgeworICAgICAgICB4Yml0ID0geCAlIDEwOworICAgICAgICB4IC89IDEwOworICAgICAgICB5Yml0ID0geSAlIDEwOworICAgICAgICB5IC89IDEwOworICAgICAgICBpZiAoeGJpdCA+IDEgfHwgeWJpdCA+IDEpIHsKKyAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIH0KKyAgICAgICAgeiArPSAoeGJpdF55Yml0KSA/IG1wZF9wb3cxMFtrXSA6IDA7CisgICAgfQorCisgICAgLyogc2NhbiBmb3IgZGlnaXRzID4gMSBhbmQgY29weSB0aGUgcmVzdCBvZiB5ICovCisgICAgZm9yICg7IGsgPCBNUERfUkRJR0lUUzsgaysrKSB7CisgICAgICAgIHliaXQgPSB5ICUgMTA7CisgICAgICAgIHkgLz0gMTA7CisgICAgICAgIGlmICh5Yml0ID4gMSkgeworICAgICAgICAgICAgZ290byBpbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgfQorICAgICAgICB6ICs9IHliaXQqbXBkX3BvdzEwW2tdOworICAgIH0KKyAgICByZXN1bHQtPmRhdGFbaSsrXSA9IHo7CisgICAgLyogc2NhbiBmb3IgZGlnaXRzID4gMSBhbmQgY29weSB0aGUgcmVzdCBvZiBiaWcgKi8KKyAgICBmb3IgKDsgaSA8IGJpZy0+bGVuOyBpKyspIHsKKyAgICAgICAgeSA9IGJpZy0+ZGF0YVtpXTsKKyAgICAgICAgZm9yIChrID0gMDsgayA8IE1QRF9SRElHSVRTOyBrKyspIHsKKyAgICAgICAgICAgIHliaXQgPSB5ICUgMTA7CisgICAgICAgICAgICB5IC89IDEwOworICAgICAgICAgICAgaWYgKHliaXQgPiAxKSB7CisgICAgICAgICAgICAgICAgZ290byBpbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXN1bHQtPmRhdGFbaV0gPSBiaWctPmRhdGFbaV07CisgICAgfQorCisgICAgbXBkX2NsZWFyX2ZsYWdzKHJlc3VsdCk7CisgICAgcmVzdWx0LT5leHAgPSAwOworICAgIHJlc3VsdC0+bGVuID0gX21wZF9yZWFsX3NpemUocmVzdWx0LT5kYXRhLCBiaWctPmxlbik7CisgICAgbXBkX3FyZXNpemUocmVzdWx0LCByZXN1bHQtPmxlbiwgc3RhdHVzKTsKKyAgICBtcGRfc2V0ZGlnaXRzKHJlc3VsdCk7CisgICAgX21wZF9jYXAocmVzdWx0LCBjdHgpOworICAgIHJldHVybjsKKworaW52YWxpZF9vcGVyYXRpb246CisgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICBBcml0aG1ldGljIG9wZXJhdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIFRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBhLiBJZiBhIGlzIG5lZ2F0aXZlLCB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lCisgKiBhcyB0aGUgcmVzdWx0IG9mIHRoZSBtaW51cyBvcGVyYXRpb24uIE90aGVyd2lzZSwgdGhlIHJlc3VsdCBpcyB0aGUKKyAqIHJlc3VsdCBvZiB0aGUgcGx1cyBvcGVyYXRpb24uCisgKi8KK3ZvaWQKK21wZF9xYWJzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbihyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1wZF9pc25lZ2F0aXZlKGEpKSB7CisgICAgICAgIG1wZF9xbWludXMocmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBtcGRfcXBsdXMocmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfcHRyc3dhcChtcGRfdCAqKmEsIG1wZF90ICoqYikKK3sKKyAgICBtcGRfdCAqdCA9ICphOworICAgICphID0gKmI7CisgICAgKmIgPSB0OworfQorCisvKiBBZGQgb3Igc3VidHJhY3QgaW5maW5pdGllcy4gKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FhZGRzdWJfaW5mKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgdWludDhfdCBzaWduX2IsCisgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpKSB7CisgICAgICAgIGlmIChtcGRfc2lnbihhKSAhPSBzaWduX2IgJiYgbXBkX2lzaW5maW5pdGUoYikpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgbXBkX3NpZ24oYSksIE1QRF9JTkYpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KG1wZF9pc2luZmluaXRlKGIpKTsKKyAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIHNpZ25fYiwgTVBEX0lORik7Cit9CisKKy8qIEFkZCBvciBzdWJ0cmFjdCBub24tc3BlY2lhbCBudW1iZXJzLiAqLworc3RhdGljIHZvaWQKK19tcGRfcWFkZHN1YihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIHVpbnQ4X3Qgc2lnbl9iLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfdCAqYmlnLCAqc21hbGw7CisgICAgTVBEX05FV19TVEFUSUMoYmlnX2FsaWduZWQsMCwwLDAsMCk7CisgICAgTVBEX05FV19DT05TVCh0aW55LDAsMCwxLDEsMSwxKTsKKyAgICBtcGRfdWludF90IGNhcnJ5OworICAgIG1wZF9zc2l6ZV90IG5ld3NpemUsIHNoaWZ0OworICAgIG1wZF9zc2l6ZV90IGV4cCwgaTsKKyAgICBpbnQgc3dhcCA9IDA7CisKKworICAgIC8qIGNvbXBhcmUgZXhwb25lbnRzICovCisgICAgYmlnID0gKG1wZF90ICopYTsgc21hbGwgPSAobXBkX3QgKiliOworICAgIGlmIChiaWctPmV4cCAhPSBzbWFsbC0+ZXhwKSB7CisgICAgICAgIGlmIChzbWFsbC0+ZXhwID4gYmlnLT5leHApIHsKKyAgICAgICAgICAgIF9tcGRfcHRyc3dhcCgmYmlnLCAmc21hbGwpOworICAgICAgICAgICAgc3dhcCsrOworICAgICAgICB9CisgICAgICAgIC8qIGFsaWduIHRoZSBjb2VmZmljaWVudHMgKi8KKyAgICAgICAgaWYgKCFtcGRfaXN6ZXJvY29lZmYoYmlnKSkgeworICAgICAgICAgICAgZXhwID0gYmlnLT5leHAgLSAxOworICAgICAgICAgICAgZXhwICs9IChiaWctPmRpZ2l0cyA+IGN0eC0+cHJlYykgPyAwIDogYmlnLT5kaWdpdHMtY3R4LT5wcmVjLTE7CisgICAgICAgICAgICBpZiAobXBkX2FkamV4cChzbWFsbCkgPCBleHApIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIEF2b2lkIGh1Z2Ugc2hpZnRzIGJ5IHN1YnN0aXR1dGluZyBhIHZhbHVlIGZvciBzbWFsbCB0aGF0IGlzCisgICAgICAgICAgICAgICAgICogZ3VhcmFudGVlZCB0byBwcm9kdWNlIHRoZSBzYW1lIHJlc3VsdHMuCisgICAgICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgKiBhZGpleHAoc21hbGwpIDwgZXhwIGlmIGFuZCBvbmx5IGlmOgorICAgICAgICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICogICBiZGlnaXRzIDw9IHByZWMgQU5ECisgICAgICAgICAgICAgICAgICogICBiZGlnaXRzK3NoaWZ0ID49IHByZWMrMitzZGlnaXRzIEFORAorICAgICAgICAgICAgICAgICAqICAgZXhwID0gYmV4cCtiZGlnaXRzLXByZWMtMgorICAgICAgICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICogICAgIDEyMzQ1NjcwMDAwMDAwMDAgIC0+ICBiZGlnaXRzICsgc2hpZnQKKyAgICAgICAgICAgICAgICAgKiAgICAgLS0tLS0tLS0tLVhYMTIzNCAgLT4gIHNkaWdpdHMKKyAgICAgICAgICAgICAgICAgKiAgICAgLS0tLS0tLS0tLVgxICAgICAgLT4gIHRpbnktZGlnaXRzCisgICAgICAgICAgICAgICAgICogICAgIHwtIHByZWMgLXwKKyAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAqICAgICAgT1IKKyAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAqICAgYmRpZ2l0cyA+IHByZWMgQU5ECisgICAgICAgICAgICAgICAgICogICBzaGlmdCA+IHNkaWdpdHMgQU5ECisgICAgICAgICAgICAgICAgICogICBleHAgPSBiZXhwLTEKKyAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAqICAgICAxMjM0NTY3ODkyMTAwMDAwICAtPiAgYmRpZ2l0cyArIHNoaWZ0CisgICAgICAgICAgICAgICAgICogICAgIC0tLS0tLS0tLS1YWDEyMzQgIC0+ICBzZGlnaXRzCisgICAgICAgICAgICAgICAgICogICAgIC0tLS0tLS0tLS1YMSAgICAgIC0+ICB0aW55LWRpZ2l0cworICAgICAgICAgICAgICAgICAqICAgICB8LSBwcmVjIC18CisgICAgICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgKiBJZiB0aW55IGlzIHplcm8sIGFkZGluZyBvciBzdWJ0cmFjdGluZyBpcyBhIG5vLW9wLgorICAgICAgICAgICAgICAgICAqIE90aGVyd2lzZSwgYWRkaW5nIHRpbnkgZ2VuZXJhdGVzIGEgbm9uLXplcm8gZGlnaXQgZWl0aGVyCisgICAgICAgICAgICAgICAgICogYmVsb3cgdGhlIHJvdW5kaW5nIGRpZ2l0IG9yIHRoZSBsZWFzdCBzaWduaWZpY2FudCBkaWdpdAorICAgICAgICAgICAgICAgICAqIG9mIGJpZy4gV2hlbiBzdWJ0cmFjdGluZywgdGlueSBpcyBpbiB0aGUgc2FtZSBwb3NpdGlvbiBhcworICAgICAgICAgICAgICAgICAqIHRoZSBjYXJyeSB0aGF0IHdvdWxkIGJlIGdlbmVyYXRlZCBieSBzdWJ0cmFjdGluZyBzZGlnaXRzLgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIG1wZF9jb3B5X2ZsYWdzKCZ0aW55LCBzbWFsbCk7CisgICAgICAgICAgICAgICAgdGlueS5leHAgPSBleHA7CisgICAgICAgICAgICAgICAgdGlueS5kaWdpdHMgPSAxOworICAgICAgICAgICAgICAgIHRpbnkubGVuID0gMTsKKyAgICAgICAgICAgICAgICB0aW55LmRhdGFbMF0gPSBtcGRfaXN6ZXJvY29lZmYoc21hbGwpID8gMCA6IDE7CisgICAgICAgICAgICAgICAgc21hbGwgPSAmdGlueTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIFRoaXMgY2Fubm90IHdyYXA6IHRoZSBkaWZmZXJlbmNlIGlzIHBvc2l0aXZlIGFuZCA8PSBtYXhwcmVjICovCisgICAgICAgICAgICBzaGlmdCA9IGJpZy0+ZXhwIC0gc21hbGwtPmV4cDsKKyAgICAgICAgICAgIGlmICghbXBkX3FzaGlmdGwoJmJpZ19hbGlnbmVkLCBiaWcsIHNoaWZ0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJpZyA9ICZiaWdfYWxpZ25lZDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXN1bHQtPmV4cCA9IHNtYWxsLT5leHA7CisKKworICAgIC8qIGNvbXBhcmUgbGVuZ3RoIG9mIGNvZWZmaWNpZW50cyAqLworICAgIGlmIChiaWctPmxlbiA8IHNtYWxsLT5sZW4pIHsKKyAgICAgICAgX21wZF9wdHJzd2FwKCZiaWcsICZzbWFsbCk7CisgICAgICAgIHN3YXArKzsKKyAgICB9CisKKyAgICBuZXdzaXplID0gYmlnLT5sZW47CisgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIG5ld3NpemUsIHN0YXR1cykpIHsKKyAgICAgICAgZ290byBmaW5pc2g7CisgICAgfQorCisgICAgaWYgKG1wZF9zaWduKGEpID09IHNpZ25fYikgeworCisgICAgICAgIGNhcnJ5ID0gX21wZF9iYXNlYWRkKHJlc3VsdC0+ZGF0YSwgYmlnLT5kYXRhLCBzbWFsbC0+ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlnLT5sZW4sIHNtYWxsLT5sZW4pOworCisgICAgICAgIGlmIChjYXJyeSkgeworICAgICAgICAgICAgbmV3c2l6ZSA9IGJpZy0+bGVuICsgMTsKKyAgICAgICAgICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBuZXdzaXplLCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQtPmRhdGFbbmV3c2l6ZS0xXSA9IGNhcnJ5OworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0LT5sZW4gPSBuZXdzaXplOworICAgICAgICBtcGRfc2V0X2ZsYWdzKHJlc3VsdCwgc2lnbl9iKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChiaWctPmxlbiA9PSBzbWFsbC0+bGVuKSB7CisgICAgICAgICAgICBmb3IgKGk9YmlnLT5sZW4tMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYmlnLT5kYXRhW2ldICE9IHNtYWxsLT5kYXRhW2ldKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChiaWctPmRhdGFbaV0gPCBzbWFsbC0+ZGF0YVtpXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgX21wZF9wdHJzd2FwKCZiaWcsICZzbWFsbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzd2FwKys7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgX21wZF9iYXNlc3ViKHJlc3VsdC0+ZGF0YSwgYmlnLT5kYXRhLCBzbWFsbC0+ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgIGJpZy0+bGVuLCBzbWFsbC0+bGVuKTsKKyAgICAgICAgbmV3c2l6ZSA9IF9tcGRfcmVhbF9zaXplKHJlc3VsdC0+ZGF0YSwgYmlnLT5sZW4pOworICAgICAgICAvKiByZXNpemUgdG8gc21hbGxlciBjYW5ub3QgZmFpbCAqLworICAgICAgICAodm9pZCltcGRfcXJlc2l6ZShyZXN1bHQsIG5ld3NpemUsIHN0YXR1cyk7CisKKyAgICAgICAgcmVzdWx0LT5sZW4gPSBuZXdzaXplOworICAgICAgICBzaWduX2IgPSAoc3dhcCAmIDEpID8gc2lnbl9iIDogbXBkX3NpZ24oYSk7CisgICAgICAgIG1wZF9zZXRfZmxhZ3MocmVzdWx0LCBzaWduX2IpOworCisgICAgICAgIGlmIChtcGRfaXN6ZXJvY29lZmYocmVzdWx0KSkgeworICAgICAgICAgICAgbXBkX3NldF9wb3NpdGl2ZShyZXN1bHQpOworICAgICAgICAgICAgaWYgKGN0eC0+cm91bmQgPT0gTVBEX1JPVU5EX0ZMT09SKSB7CisgICAgICAgICAgICAgICAgbXBkX3NldF9uZWdhdGl2ZShyZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgbXBkX3NldGRpZ2l0cyhyZXN1bHQpOworCitmaW5pc2g6CisgICAgbXBkX2RlbCgmYmlnX2FsaWduZWQpOworfQorCisvKiBBZGQgYSBhbmQgYi4gTm8gc3BlY2lhbHMsIG5vIGZpbmFsaXppbmcuICovCitzdGF0aWMgdm9pZAorX21wZF9xYWRkKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgX21wZF9xYWRkc3ViKHJlc3VsdCwgYSwgYiwgbXBkX3NpZ24oYiksIGN0eCwgc3RhdHVzKTsKK30KKworLyogU3VidHJhY3QgYiBmcm9tIGEuIE5vIHNwZWNpYWxzLCBubyBmaW5hbGl6aW5nLiAqLworc3RhdGljIHZvaWQKK19tcGRfcXN1YihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgICBfbXBkX3FhZGRzdWIocmVzdWx0LCBhLCBiLCAhbXBkX3NpZ24oYiksIGN0eCwgc3RhdHVzKTsKK30KKworLyogQWRkIGEgYW5kIGIuICovCit2b2lkCittcGRfcWFkZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgX21wZF9xYWRkc3ViX2luZihyZXN1bHQsIGEsIGIsIG1wZF9zaWduKGIpLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgX21wZF9xYWRkc3ViKHJlc3VsdCwgYSwgYiwgbXBkX3NpZ24oYiksIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisvKiBBZGQgYSBhbmQgYi4gU2V0IE5hTi9JbnZhbGlkX29wZXJhdGlvbiBpZiB0aGUgcmVzdWx0IGlzIGluZXhhY3QuICovCitzdGF0aWMgdm9pZAorX21wZF9xYWRkX2V4YWN0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgdWludDMyX3Qgd29ya3N0YXR1cyA9IDA7CisKKyAgICBtcGRfcWFkZChyZXN1bHQsIGEsIGIsIGN0eCwgJndvcmtzdGF0dXMpOworICAgICpzdGF0dXMgfD0gd29ya3N0YXR1czsKKyAgICBpZiAod29ya3N0YXR1cyAmIChNUERfSW5leGFjdHxNUERfUm91bmRlZHxNUERfQ2xhbXBlZCkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgIH0KK30KKworLyogU3VidHJhY3QgYiBmcm9tIGEuICovCit2b2lkCittcGRfcXN1YihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgX21wZF9xYWRkc3ViX2luZihyZXN1bHQsIGEsIGIsICFtcGRfc2lnbihiKSwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9tcGRfcWFkZHN1YihyZXN1bHQsIGEsIGIsICFtcGRfc2lnbihiKSwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIFN1YnRyYWN0IGIgZnJvbSBhLiBTZXQgTmFOL0ludmFsaWRfb3BlcmF0aW9uIGlmIHRoZSByZXN1bHQgaXMgaW5leGFjdC4gKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FzdWJfZXhhY3QobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50MzJfdCB3b3Jrc3RhdHVzID0gMDsKKworICAgIG1wZF9xc3ViKHJlc3VsdCwgYSwgYiwgY3R4LCAmd29ya3N0YXR1cyk7CisgICAgKnN0YXR1cyB8PSB3b3Jrc3RhdHVzOworICAgIGlmICh3b3Jrc3RhdHVzICYgKE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkfE1QRF9DbGFtcGVkKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgfQorfQorCisvKiBBZGQgZGVjaW1hbCBhbmQgbXBkX3NzaXplX3QuICovCit2b2lkCittcGRfcWFkZF9zc2l6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgYiwKKyAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IG1heGNvbnRleHQ7CisgICAgTVBEX05FV19TVEFUSUMoYmIsMCwwLDAsMCk7CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisgICAgbXBkX3Fzc2V0X3NzaXplKCZiYiwgYiwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgbXBkX3FhZGQocmVzdWx0LCBhLCAmYmIsIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfZGVsKCZiYik7Cit9CisKKy8qIEFkZCBkZWNpbWFsIGFuZCBtcGRfdWludF90LiAqLwordm9pZAorbXBkX3FhZGRfdWludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3VpbnRfdCBiLAorICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjb250ZXh0OworICAgIE1QRF9ORVdfU1RBVElDKGJiLDAsMCwwLDApOworCisgICAgbXBkX21heGNvbnRleHQoJm1heGNvbnRleHQpOworICAgIG1wZF9xc3NldF91aW50KCZiYiwgYiwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgbXBkX3FhZGQocmVzdWx0LCBhLCAmYmIsIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfZGVsKCZiYik7Cit9CisKKy8qIFN1YnRyYWN0IG1wZF9zc2l6ZV90IGZyb20gZGVjaW1hbC4gKi8KK3ZvaWQKK21wZF9xc3ViX3NzaXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBiLAorICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3QgbWF4Y29udGV4dDsKKyAgICBNUERfTkVXX1NUQVRJQyhiYiwwLDAsMCwwKTsKKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjb250ZXh0KTsKKyAgICBtcGRfcXNzZXRfc3NpemUoJmJiLCBiLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBtcGRfcXN1YihyZXN1bHQsIGEsICZiYiwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9kZWwoJmJiKTsKK30KKworLyogU3VidHJhY3QgbXBkX3VpbnRfdCBmcm9tIGRlY2ltYWwuICovCit2b2lkCittcGRfcXN1Yl91aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfdWludF90IGIsCisgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IG1heGNvbnRleHQ7CisgICAgTVBEX05FV19TVEFUSUMoYmIsMCwwLDAsMCk7CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisgICAgbXBkX3Fzc2V0X3VpbnQoJmJiLCBiLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBtcGRfcXN1YihyZXN1bHQsIGEsICZiYiwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9kZWwoJmJiKTsKK30KKworLyogQWRkIGRlY2ltYWwgYW5kIGludDMyX3QuICovCit2b2lkCittcGRfcWFkZF9pMzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDMyX3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FhZGRfc3NpemUocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIEFkZCBkZWNpbWFsIGFuZCB1aW50MzJfdC4gKi8KK3ZvaWQKK21wZF9xYWRkX3UzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FhZGRfdWludChyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKworI2lmZGVmIENPTkZJR182NAorLyogQWRkIGRlY2ltYWwgYW5kIGludDY0X3QuICovCit2b2lkCittcGRfcWFkZF9pNjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDY0X3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FhZGRfc3NpemUocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIEFkZCBkZWNpbWFsIGFuZCB1aW50NjRfdC4gKi8KK3ZvaWQKK21wZF9xYWRkX3U2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDY0X3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FhZGRfdWludChyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKyNlbmRpZgorCisvKiBTdWJ0cmFjdCBpbnQzMl90IGZyb20gZGVjaW1hbC4gKi8KK3ZvaWQKK21wZF9xc3ViX2kzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50MzJfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcXN1Yl9zc2l6ZShyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKworLyogU3VidHJhY3QgdWludDMyX3QgZnJvbSBkZWNpbWFsLiAqLwordm9pZAorbXBkX3FzdWJfdTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcXN1Yl91aW50KHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorCisjaWZkZWYgQ09ORklHXzY0CisvKiBTdWJ0cmFjdCBpbnQ2NF90IGZyb20gZGVjaW1hbC4gKi8KK3ZvaWQKK21wZF9xc3ViX2k2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50NjRfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcXN1Yl9zc2l6ZShyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKworLyogU3VidHJhY3QgdWludDY0X3QgZnJvbSBkZWNpbWFsLiAqLwordm9pZAorbXBkX3FzdWJfdTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50NjRfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcXN1Yl91aW50KHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorI2VuZGlmCisKKworLyogRGl2aWRlIGluZmluaXRpZXMuICovCitzdGF0aWMgdm9pZAorX21wZF9xZGl2X2luZihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBtcGRfc2lnbihhKV5tcGRfc2lnbihiKSwgTVBEX0lORik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KG1wZF9pc2luZmluaXRlKGIpKTsKKyAgICBfc2V0dHJpcGxlKHJlc3VsdCwgbXBkX3NpZ24oYSlebXBkX3NpZ24oYiksIDAsIG1wZF9ldGlueShjdHgpKTsKKyAgICAqc3RhdHVzIHw9IE1QRF9DbGFtcGVkOworfQorCitlbnVtIHtOT19JREVBTF9FWFAsIFNFVF9JREVBTF9FWFB9OworLyogRGl2aWRlIGEgYnkgYi4gKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FkaXYoaW50IGFjdGlvbiwgbXBkX3QgKnEsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgTVBEX05FV19TVEFUSUMoYWxpZ25lZCwwLDAsMCwwKTsKKyAgICBtcGRfdWludF90IGxkOworICAgIG1wZF9zc2l6ZV90IHNoaWZ0LCBleHAsIHR6OworICAgIG1wZF9zc2l6ZV90IG5ld3NpemU7CisgICAgbXBkX3NzaXplX3QgaWRlYWxfZXhwOworICAgIG1wZF91aW50X3QgcmVtOworICAgIHVpbnQ4X3Qgc2lnbl9hID0gbXBkX3NpZ24oYSk7CisgICAgdWludDhfdCBzaWduX2IgPSBtcGRfc2lnbihiKTsKKworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHEsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIF9tcGRfcWRpdl9pbmYocSwgYSwgYiwgY3R4LCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYikpIHsKKyAgICAgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHEsIE1QRF9EaXZpc2lvbl91bmRlZmluZWQsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChxLCBzaWduX2Fec2lnbl9iLCBNUERfSU5GKTsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0RpdmlzaW9uX2J5X3plcm87CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpKSB7CisgICAgICAgIGV4cCA9IGEtPmV4cCAtIGItPmV4cDsKKyAgICAgICAgX3NldHRyaXBsZShxLCBzaWduX2Fec2lnbl9iLCAwLCBleHApOworICAgICAgICBtcGRfcWZpbmFsaXplKHEsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNoaWZ0ID0gKGItPmRpZ2l0cyAtIGEtPmRpZ2l0cykgKyBjdHgtPnByZWMgKyAxOworICAgIGlkZWFsX2V4cCA9IGEtPmV4cCAtIGItPmV4cDsKKyAgICBleHAgPSBpZGVhbF9leHAgLSBzaGlmdDsKKyAgICBpZiAoc2hpZnQgPiAwKSB7CisgICAgICAgIGlmICghbXBkX3FzaGlmdGwoJmFsaWduZWQsIGEsIHNoaWZ0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocSwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICB9CisgICAgICAgIGEgPSAmYWxpZ25lZDsKKyAgICB9CisgICAgZWxzZSBpZiAoc2hpZnQgPCAwKSB7CisgICAgICAgIHNoaWZ0ID0gLXNoaWZ0OworICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKCZhbGlnbmVkLCBiLCBzaGlmdCwgc3RhdHVzKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHEsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgfQorICAgICAgICBiID0gJmFsaWduZWQ7CisgICAgfQorCisKKyAgICBuZXdzaXplID0gYS0+bGVuIC0gYi0+bGVuICsgMTsKKyAgICBpZiAoKHEgIT0gYiAmJiBxICE9IGEpIHx8IChxID09IGIgJiYgbmV3c2l6ZSA+IGItPmxlbikpIHsKKyAgICAgICAgaWYgKCFtcGRfcXJlc2l6ZShxLCBuZXdzaXplLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocSwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICB9CisgICAgfQorCisKKyAgICBpZiAoYi0+bGVuID09IDEpIHsKKyAgICAgICAgcmVtID0gX21wZF9zaG9ydGRpdihxLT5kYXRhLCBhLT5kYXRhLCBhLT5sZW4sIGItPmRhdGFbMF0pOworICAgIH0KKyAgICBlbHNlIGlmIChiLT5sZW4gPD0gTVBEX05FV1RPTkRJVl9DVVRPRkYpIHsKKyAgICAgICAgaW50IHJldCA9IF9tcGRfYmFzZWRpdm1vZChxLT5kYXRhLCBOVUxMLCBhLT5kYXRhLCBiLT5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEtPmxlbiwgYi0+bGVuKTsKKyAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihxLCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgIH0KKyAgICAgICAgcmVtID0gcmV0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgTVBEX05FV19TVEFUSUMociwwLDAsMCwwKTsKKyAgICAgICAgX21wZF9iYXNlX25kaXZtb2QocSwgJnIsIGEsIGIsIHN0YXR1cyk7CisgICAgICAgIGlmIChtcGRfaXNzcGVjaWFsKHEpIHx8IG1wZF9pc3NwZWNpYWwoJnIpKSB7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChxLCBNUERfUE9TLCBNUERfTkFOKTsKKyAgICAgICAgICAgIG1wZF9kZWwoJnIpOworICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgIH0KKyAgICAgICAgcmVtID0gIW1wZF9pc3plcm9jb2VmZigmcik7CisgICAgICAgIG1wZF9kZWwoJnIpOworICAgICAgICBuZXdzaXplID0gcS0+bGVuOworICAgIH0KKworICAgIG5ld3NpemUgPSBfbXBkX3JlYWxfc2l6ZShxLT5kYXRhLCBuZXdzaXplKTsKKyAgICAvKiByZXNpemUgdG8gc21hbGxlciBjYW5ub3QgZmFpbCAqLworICAgIG1wZF9xcmVzaXplKHEsIG5ld3NpemUsIHN0YXR1cyk7CisgICAgbXBkX3NldF9mbGFncyhxLCBzaWduX2Fec2lnbl9iKTsKKyAgICBxLT5sZW4gPSBuZXdzaXplOworICAgIG1wZF9zZXRkaWdpdHMocSk7CisKKyAgICBzaGlmdCA9IGlkZWFsX2V4cCAtIGV4cDsKKyAgICBpZiAocmVtKSB7CisgICAgICAgIGxkID0gbXBkX2xzZChxLT5kYXRhWzBdKTsKKyAgICAgICAgaWYgKGxkID09IDAgfHwgbGQgPT0gNSkgeworICAgICAgICAgICAgcS0+ZGF0YVswXSArPSAxOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBTRVRfSURFQUxfRVhQICYmIHNoaWZ0ID4gMCkgeworICAgICAgICB0eiA9IG1wZF90cmFpbF96ZXJvcyhxKTsKKyAgICAgICAgc2hpZnQgPSAodHogPiBzaGlmdCkgPyBzaGlmdCA6IHR6OworICAgICAgICBtcGRfcXNoaWZ0cl9pbnBsYWNlKHEsIHNoaWZ0KTsKKyAgICAgICAgZXhwICs9IHNoaWZ0OworICAgIH0KKworICAgIHEtPmV4cCA9IGV4cDsKKworCitmaW5pc2g6CisgICAgbXBkX2RlbCgmYWxpZ25lZCk7CisgICAgbXBkX3FmaW5hbGl6ZShxLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIERpdmlkZSBhIGJ5IGIuICovCit2b2lkCittcGRfcWRpdihtcGRfdCAqcSwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIF9tcGRfcWRpdihTRVRfSURFQUxfRVhQLCBxLCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIEludGVybmFsIGZ1bmN0aW9uLiAqLworc3RhdGljIHZvaWQKK19tcGRfcWRpdm1vZChtcGRfdCAqcSwgbXBkX3QgKnIsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgTVBEX05FV19TVEFUSUMoYWxpZ25lZCwwLDAsMCwwKTsKKyAgICBtcGRfc3NpemVfdCBxc2l6ZSwgcnNpemU7CisgICAgbXBkX3NzaXplX3QgaWRlYWxfZXhwLCBleHBkaWZmLCBzaGlmdDsKKyAgICB1aW50OF90IHNpZ25fYSA9IG1wZF9zaWduKGEpOworICAgIHVpbnQ4X3Qgc2lnbl9hYiA9IG1wZF9zaWduKGEpXm1wZF9zaWduKGIpOworCisKKyAgICBpZGVhbF9leHAgPSAoYS0+ZXhwID4gYi0+ZXhwKSA/ICBiLT5leHAgOiBhLT5leHA7CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICBpZiAoIW1wZF9xY29weShyLCBhLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICB9CisgICAgICAgIHItPmV4cCA9IGlkZWFsX2V4cDsKKyAgICAgICAgX3NldHRyaXBsZShxLCBzaWduX2FiLCAwLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGV4cGRpZmYgPSBtcGRfYWRqZXhwKGEpIC0gbXBkX2FkamV4cChiKTsKKyAgICBpZiAoZXhwZGlmZiA8IDApIHsKKyAgICAgICAgaWYgKGEtPmV4cCA+IGItPmV4cCkgeworICAgICAgICAgICAgLyogcG9zaXRpdmUgYW5kIGxlc3MgdGhhbiBiLT5kaWdpdHMgLSBhLT5kaWdpdHMgKi8KKyAgICAgICAgICAgIHNoaWZ0ID0gYS0+ZXhwIC0gYi0+ZXhwOworICAgICAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bChyLCBhLCBzaGlmdCwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgci0+ZXhwID0gaWRlYWxfZXhwOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKCFtcGRfcWNvcHkociwgYSwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIF9zZXR0cmlwbGUocSwgc2lnbl9hYiwgMCwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGV4cGRpZmYgPiBjdHgtPnByZWMpIHsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfRGl2aXNpb25faW1wb3NzaWJsZTsKKyAgICAgICAgZ290byBuYW5yZXN1bHQ7CisgICAgfQorCisKKyAgICAvKgorICAgICAqIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZToKKyAgICAgKiAgICgxKSAwIDw9IGEtPmV4cCArIGEtPmRpZ2l0cyAtIGItPmV4cCAtIGItPmRpZ2l0cyA8PSBwcmVjCisgICAgICogICAoMikgYS0+ZXhwIC0gYi0+ZXhwID49IGItPmRpZ2l0cyAtIGEtPmRpZ2l0cworICAgICAqICAgKDMpIGEtPmV4cCAtIGItPmV4cCA8PSBwcmVjICsgYi0+ZGlnaXRzIC0gYS0+ZGlnaXRzCisgICAgICovCisgICAgaWYgKGEtPmV4cCAhPSBiLT5leHApIHsKKyAgICAgICAgc2hpZnQgPSBhLT5leHAgLSBiLT5leHA7CisgICAgICAgIGlmIChzaGlmdCA+IDApIHsKKyAgICAgICAgICAgIC8qIGJ5ICgzKSwgYWZ0ZXIgdGhlIHNoaWZ0IGEtPmRpZ2l0cyA8PSBwcmVjICsgYi0+ZGlnaXRzICovCisgICAgICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKCZhbGlnbmVkLCBhLCBzaGlmdCwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYSA9ICZhbGlnbmVkOworICAgICAgICB9CisgICAgICAgIGVsc2UgIHsKKyAgICAgICAgICAgIHNoaWZ0ID0gLXNoaWZ0OworICAgICAgICAgICAgLyogYnkgKDIpLCBhZnRlciB0aGUgc2hpZnQgYi0+ZGlnaXRzIDw9IGEtPmRpZ2l0cyAqLworICAgICAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bCgmYWxpZ25lZCwgYiwgc2hpZnQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGIgPSAmYWxpZ25lZDsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgcXNpemUgPSBhLT5sZW4gLSBiLT5sZW4gKyAxOworICAgIGlmICghKHEgPT0gYSAmJiBxc2l6ZSA8IGEtPmxlbikgJiYgIShxID09IGIgJiYgcXNpemUgPCBiLT5sZW4pKSB7CisgICAgICAgIGlmICghbXBkX3FyZXNpemUocSwgcXNpemUsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OworICAgICAgICB9CisgICAgfQorCisgICAgcnNpemUgPSBiLT5sZW47CisgICAgaWYgKCEociA9PSBhICYmIHJzaXplIDwgYS0+bGVuKSkgeworICAgICAgICBpZiAoIW1wZF9xcmVzaXplKHIsIHJzaXplLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChiLT5sZW4gPT0gMSkgeworICAgICAgICBpZiAoYS0+bGVuID09IDEpIHsKKyAgICAgICAgICAgIF9tcGRfZGl2X3dvcmQoJnEtPmRhdGFbMF0sICZyLT5kYXRhWzBdLCBhLT5kYXRhWzBdLCBiLT5kYXRhWzBdKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHItPmRhdGFbMF0gPSBfbXBkX3Nob3J0ZGl2KHEtPmRhdGEsIGEtPmRhdGEsIGEtPmxlbiwgYi0+ZGF0YVswXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoYi0+bGVuIDw9IE1QRF9ORVdUT05ESVZfQ1VUT0ZGKSB7CisgICAgICAgIGludCByZXQ7CisgICAgICAgIHJldCA9IF9tcGRfYmFzZWRpdm1vZChxLT5kYXRhLCByLT5kYXRhLCBhLT5kYXRhLCBiLT5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS0+bGVuLCBiLT5sZW4pOworICAgICAgICBpZiAocmV0ID09IC0xKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9NYWxsb2NfZXJyb3I7CisgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX21wZF9iYXNlX25kaXZtb2QocSwgciwgYSwgYiwgc3RhdHVzKTsKKyAgICAgICAgaWYgKG1wZF9pc3NwZWNpYWwocSkgfHwgbXBkX2lzc3BlY2lhbChyKSkgeworICAgICAgICAgICAgZ290byBuYW5yZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgcXNpemUgPSBxLT5sZW47CisgICAgICAgIHJzaXplID0gci0+bGVuOworICAgIH0KKworICAgIHFzaXplID0gX21wZF9yZWFsX3NpemUocS0+ZGF0YSwgcXNpemUpOworICAgIC8qIHJlc2l6ZSB0byBzbWFsbGVyIGNhbm5vdCBmYWlsICovCisgICAgbXBkX3FyZXNpemUocSwgcXNpemUsIHN0YXR1cyk7CisgICAgcS0+bGVuID0gcXNpemU7CisgICAgbXBkX3NldGRpZ2l0cyhxKTsKKyAgICBtcGRfc2V0X2ZsYWdzKHEsIHNpZ25fYWIpOworICAgIHEtPmV4cCA9IDA7CisgICAgaWYgKHEtPmRpZ2l0cyA+IGN0eC0+cHJlYykgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9EaXZpc2lvbl9pbXBvc3NpYmxlOworICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICB9CisKKyAgICByc2l6ZSA9IF9tcGRfcmVhbF9zaXplKHItPmRhdGEsIHJzaXplKTsKKyAgICAvKiByZXNpemUgdG8gc21hbGxlciBjYW5ub3QgZmFpbCAqLworICAgIG1wZF9xcmVzaXplKHIsIHJzaXplLCBzdGF0dXMpOworICAgIHItPmxlbiA9IHJzaXplOworICAgIG1wZF9zZXRkaWdpdHMocik7CisgICAgbXBkX3NldF9mbGFncyhyLCBzaWduX2EpOworICAgIHItPmV4cCA9IGlkZWFsX2V4cDsKKworb3V0OgorICAgIG1wZF9kZWwoJmFsaWduZWQpOworICAgIHJldHVybjsKKworbmFucmVzdWx0OgorICAgIG1wZF9zZXRzcGVjaWFsKHEsIE1QRF9QT1MsIE1QRF9OQU4pOworICAgIG1wZF9zZXRzcGVjaWFsKHIsIE1QRF9QT1MsIE1QRF9OQU4pOworICAgIGdvdG8gb3V0OworfQorCisvKiBJbnRlZ2VyIGRpdmlzaW9uIHdpdGggcmVtYWluZGVyLiAqLwordm9pZAorbXBkX3FkaXZtb2QobXBkX3QgKnEsIG1wZF90ICpyLCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgdWludDhfdCBzaWduID0gbXBkX3NpZ24oYSlebXBkX3NpZ24oYik7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMocSwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICBtcGRfcWNvcHkociwgcSwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpIHsKKyAgICAgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHEsIE1QRF9QT1MsIE1QRF9OQU4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocSwgc2lnbiwgTVBEX0lORik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChyLCBNUERfUE9TLCBNUERfTkFOKTsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICAgICAgaWYgKCFtcGRfcWNvcHkociwgYSwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIG1wZF9zZXRlcnJvcihxLCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1wZF9xZmluYWxpemUociwgY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgX3NldHRyaXBsZShxLCBzaWduLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvKiBkZWJ1ZyAqLworICAgICAgICBhYm9ydCgpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYikpIHsKKyAgICAgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocSwgTVBEX1BPUywgTVBEX05BTik7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChyLCBNUERfUE9TLCBNUERfTkFOKTsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0RpdmlzaW9uX3VuZGVmaW5lZDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHEsIHNpZ24sIE1QRF9JTkYpOworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwociwgTVBEX1BPUywgTVBEX05BTik7CisgICAgICAgICAgICAqc3RhdHVzIHw9IChNUERfRGl2aXNpb25fYnlfemVyb3xNUERfSW52YWxpZF9vcGVyYXRpb24pOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfbXBkX3FkaXZtb2QocSwgciwgYSwgYiwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9xZmluYWxpemUocSwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9xZmluYWxpemUociwgY3R4LCBzdGF0dXMpOworfQorCit2b2lkCittcGRfcWRpdmludChtcGRfdCAqcSwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIE1QRF9ORVdfU1RBVElDKHIsMCwwLDAsMCk7CisgICAgdWludDhfdCBzaWduID0gbXBkX3NpZ24oYSlebXBkX3NpZ24oYik7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMocSwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpICYmIG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocSwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShhKSkgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocSwgc2lnbiwgTVBEX0lORik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgICAgICBfc2V0dHJpcGxlKHEsIHNpZ24sIDAsIDApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8qIGRlYnVnICovCisgICAgICAgIGFib3J0KCk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihiKSkgeworICAgICAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocSwgTVBEX0RpdmlzaW9uX3VuZGVmaW5lZCwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHEsIHNpZ24sIE1QRF9JTkYpOworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfRGl2aXNpb25fYnlfemVybzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICBfbXBkX3FkaXZtb2QocSwgJnIsIGEsIGIsIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfZGVsKCZyKTsKKyAgICBtcGRfcWZpbmFsaXplKHEsIGN0eCwgc3RhdHVzKTsKK30KKworLyogRGl2aWRlIGRlY2ltYWwgYnkgbXBkX3NzaXplX3QuICovCit2b2lkCittcGRfcWRpdl9zc2l6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgYiwKKyAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IG1heGNvbnRleHQ7CisgICAgTVBEX05FV19TVEFUSUMoYmIsMCwwLDAsMCk7CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisgICAgbXBkX3Fzc2V0X3NzaXplKCZiYiwgYiwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgbXBkX3FkaXYocmVzdWx0LCBhLCAmYmIsIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfZGVsKCZiYik7Cit9CisKKy8qIERpdmlkZSBkZWNpbWFsIGJ5IG1wZF91aW50X3QuICovCit2b2lkCittcGRfcWRpdl91aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfdWludF90IGIsCisgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IG1heGNvbnRleHQ7CisgICAgTVBEX05FV19TVEFUSUMoYmIsMCwwLDAsMCk7CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisgICAgbXBkX3Fzc2V0X3VpbnQoJmJiLCBiLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBtcGRfcWRpdihyZXN1bHQsIGEsICZiYiwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9kZWwoJmJiKTsKK30KKworLyogRGl2aWRlIGRlY2ltYWwgYnkgaW50MzJfdC4gKi8KK3ZvaWQKK21wZF9xZGl2X2kzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50MzJfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcWRpdl9zc2l6ZShyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKworLyogRGl2aWRlIGRlY2ltYWwgYnkgdWludDMyX3QuICovCit2b2lkCittcGRfcWRpdl91MzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90IGIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xZGl2X3VpbnQocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisKKyNpZmRlZiBDT05GSUdfNjQKKy8qIERpdmlkZSBkZWNpbWFsIGJ5IGludDY0X3QuICovCit2b2lkCittcGRfcWRpdl9pNjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDY0X3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FkaXZfc3NpemUocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIERpdmlkZSBkZWNpbWFsIGJ5IHVpbnQ2NF90LiAqLwordm9pZAorbXBkX3FkaXZfdTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50NjRfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcWRpdl91aW50KHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorI2VuZGlmCisKKy8qIFBhZCB0aGUgcmVzdWx0IHdpdGggdHJhaWxpbmcgemVyb3MgaWYgaXQgaGFzIGZld2VyIGRpZ2l0cyB0aGFuIHByZWMuICovCitzdGF0aWMgdm9pZAorX21wZF96ZXJvcGFkKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAoIW1wZF9pc3NwZWNpYWwocmVzdWx0KSAmJiAhbXBkX2lzemVybyhyZXN1bHQpICYmCisgICAgICAgIHJlc3VsdC0+ZGlnaXRzIDwgY3R4LT5wcmVjKSB7CisgICAgICAgbXBkX3NzaXplX3Qgc2hpZnQgPSBjdHgtPnByZWMgLSByZXN1bHQtPmRpZ2l0czsKKyAgICAgICBtcGRfcXNoaWZ0bChyZXN1bHQsIHJlc3VsdCwgc2hpZnQsIHN0YXR1cyk7CisgICAgICAgcmVzdWx0LT5leHAgLT0gc2hpZnQ7CisgICAgfQorfQorCisvKiBDaGVjayBpZiB0aGUgcmVzdWx0IGlzIGd1YXJhbnRlZWQgdG8gYmUgb25lLiAqLworc3RhdGljIGludAorX21wZF9xZXhwX2NoZWNrX29uZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIE1QRF9ORVdfQ09OU1QobGltLDAsLShjdHgtPnByZWMrMSksMSwxLDEsOSk7CisgICAgTVBEX05FV19TSEFSRUQoYWEsIGEpOworCisgICAgbXBkX3NldF9wb3NpdGl2ZSgmYWEpOworCisgICAgLyogYWJzKGEpIDw9IDkgKiAxMCoqKC1wcmVjLTEpICovCisgICAgaWYgKF9tcGRfY21wKCZhYSwgJmxpbSkgPD0gMCkgeworICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgMCwgMSwgMCk7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX1JvdW5kZWR8TVBEX0luZXhhY3Q7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKgorICogR2V0IHRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBmb3IgdGhlIEhvcm5lciBzY2hlbWUgaW4gX21wZF9xZXhwKCkuCisgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3NzaXplX3QKK19tcGRfZ2V0X2V4cF9pdGVyYXRpb25zKGNvbnN0IG1wZF90ICpyLCBtcGRfc3NpemVfdCBwKQoreworICAgIG1wZF9zc2l6ZV90IGxvZzEwcGJ5cjsgLyogbG93ZXIgYm91bmQgZm9yIGxvZzEwKHAgLyBhYnMocikpICovCisgICAgbXBkX3NzaXplX3QgbjsKKworICAgIGFzc2VydChwID49IDEwKTsKKyAgICBhc3NlcnQoIW1wZF9pc3plcm8ocikpOworICAgIGFzc2VydCgtcCA8IG1wZF9hZGpleHAocikgJiYgbXBkX2FkamV4cChyKSA8PSAtMSk7CisKKyNpZmRlZiBDT05GSUdfNjQKKyAgICBpZiAocCA+IChtcGRfc3NpemVfdCkoMVVMTDw8NTIpKSB7CisgICAgICAgIHJldHVybiBNUERfU1NJWkVfTUFYOworICAgIH0KKyNlbmRpZgorCisgICAgLyoKKyAgICAgKiBMb3dlciBib3VuZCBmb3IgbG9nMTAocCAvIGFicyhyKSk6IGFkamV4cChwKSAtIChhZGpleHAocikgKyAxKQorICAgICAqIEF0IHRoaXMgcG9pbnQgKGZvciBDT05GSUdfNjQsIENPTkZJR18zMiBpcyBub3QgcHJvYmxlbWF0aWMpOgorICAgICAqICAgIDEpIDEwIDw9IHAgPD0gMioqNTIKKyAgICAgKiAgICAyKSAtcCA8IGFkamV4cChyKSA8PSAtMQorICAgICAqICAgIDMpIDEgPD0gbG9nMTBwYnlyIDw9IDIqKjUyICsgMTQKKyAgICAgKi8KKyAgICBsb2cxMHBieXIgPSAobXBkX3dvcmRfZGlnaXRzKHApLTEpIC0gKG1wZF9hZGpleHAocikrMSk7CisKKyAgICAvKgorICAgICAqIFRoZSBudW1lcmF0b3IgaW4gdGhlIHBhcGVyIGlzIDEuNDM1ICogcCAtIDEuMTgyLCBjYWxjdWxhdGVkCisgICAgICogZXhhY3RseS4gV2UgY29tcGVuc2F0ZSBmb3Igcm91bmRpbmcgZXJyb3JzIGJ5IHVzaW5nIDEuNDM1MDMuCisgICAgICogQUNMMiBwcm9vZnM6CisgICAgICogICAgMSkgZXhwLWl0ZXItYXBwcm94LWxvd2VyLWJvdW5kOiBUaGUgdGVybSBiZWxvdyBldmFsdWF0ZWQKKyAgICAgKiAgICAgICBpbiA1My1iaXQgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBpcyBncmVhdGVyIHRoYW4gb3IKKyAgICAgKiAgICAgICBlcXVhbCB0byB0aGUgZXhhY3QgdGVybSB1c2VkIGluIHRoZSBwYXBlci4KKyAgICAgKiAgICAyKSBleHAtaXRlci1hcHByb3gtdXBwZXItYm91bmQ6IFRoZSB0ZXJtIGJlbG93IGlzIGxlc3MgdGhhbgorICAgICAqICAgICAgIG9yIGVxdWFsIHRvIDMvMiAqIHAgPD0gMy8yICogMioqNTIuCisgICAgICovCisgICAgbiA9IChtcGRfc3NpemVfdCljZWlsKCgxLjQzNTAzKihkb3VibGUpcCAtIDEuMTgyKSAvIChkb3VibGUpbG9nMTBwYnlyKTsKKyAgICByZXR1cm4gbiA+PSAzID8gbiA6IDM7Cit9CisKKy8qCisgKiBJbnRlcm5hbCBmdW5jdGlvbiwgc3BlY2lhbHMgaGF2ZSBiZWVuIGRlYWx0IHdpdGguIEFwYXJ0IGZyb20gT3ZlcmZsb3cKKyAqIGFuZCBVbmRlcmZsb3csIHR3byBjYXNlcyBtdXN0IGJlIGNvbnNpZGVyZWQgZm9yIHRoZSBlcnJvciBvZiB0aGUgcmVzdWx0OgorICoKKyAqICAgMSkgYWJzKGEpIDw9IDkgKiAxMCoqKC1wcmVjLTEpICA9PT4gIHJlc3VsdCA9PSAxCisgKgorICogICAgICBBYnNvbHV0ZSBlcnJvcjogYWJzKDEgLSBlKip4KSA8IDEwKiooLXByZWMpCisgKiAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiAgIDIpIGFicyhhKSA+IDkgKiAxMCoqKC1wcmVjLTEpCisgKgorICogICAgICBSZWxhdGl2ZSBlcnJvcjogYWJzKHJlc3VsdCAtIGUqKngpIDwgMC41ICogMTAqKigtcHJlYykgKiBlKip4CisgKiAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBUaGUgYWxnb3JpdGhtIGlzIGZyb20gSHVsbCZBYnJoYW0sIFZhcmlhYmxlIFByZWNpc2lvbiBFeHBvbmVudGlhbCBGdW5jdGlvbiwKKyAqIEFDTSBUcmFuc2FjdGlvbnMgb24gTWF0aGVtYXRpY2FsIFNvZnR3YXJlLCBWb2wuIDEyLCBOby4gMiwgSnVuZSAxOTg2LgorICoKKyAqIE1haW4gZGlmZmVyZW5jZXM6CisgKgorICogIC0gVGhlIG51bWJlciBvZiBpdGVyYXRpb25zIGZvciB0aGUgSG9ybmVyIHNjaGVtZSBpcyBjYWxjdWxhdGVkIHVzaW5nCisgKiAgICA1My1iaXQgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYy4KKyAqCisgKiAgLSBJbiB0aGUgZXJyb3IgYW5hbHlzaXMgZm9yIEVSIChyZWxhdGl2ZSBlcnJvciBhY2N1bXVsYXRlZCBpbiB0aGUKKyAqICAgIGV2YWx1YXRpb24gb2YgdGhlIHRydW5jYXRlZCBzZXJpZXMpIHRoZSByZWR1Y2VkIG9wZXJhbmQgciBtYXkKKyAqICAgIGhhdmUgYW55IG51bWJlciBvZiBkaWdpdHMuCisgKiAgICBBQ0wyIHByb29mOiBleHBvbmVudC1yZWxhdGl2ZS1lcnJvcgorICoKKyAqICAtIFRoZSBhbmFseXNpcyBmb3IgZWFybHkgYWJvcnRpb24gaGFzIGJlZW4gYWRhcHRlZCBmb3IgdGhlIG1wZF90CisgKiAgICByYW5nZXMuCisgKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FleHAobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKyAgICBNUERfTkVXX1NUQVRJQyh0bXAsMCwwLDAsMCk7CisgICAgTVBEX05FV19TVEFUSUMoc3VtLDAsMCwwLDApOworICAgIE1QRF9ORVdfQ09OU1Qod29yZCwwLDAsMSwxLDEsMSk7CisgICAgbXBkX3NzaXplX3QgaiwgbiwgdDsKKworICAgIGFzc2VydCghbXBkX2lzc3BlY2lhbChhKSk7CisKKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpKSB7CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBNUERfUE9TLCAxLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogV2UgYXJlIGNhbGN1bGF0aW5nIGVeeCA9IGVeKHIqMTBedCkgPSAoZV5yKV4oMTBedCksIHdoZXJlIGFicyhyKSA8IDEgYW5kIHQgPj0gMC4KKyAgICAgKgorICAgICAqIElmIHQgPiAwLCB3ZSBoYXZlOgorICAgICAqCisgICAgICogICAoMSkgMC4xIDw9IHIgPCAxLCBzbyBlXjAuMSA8PSBlXnIuIElmIHQgPiBNQVhfVCwgb3ZlcmZsb3cgb2NjdXJzOgorICAgICAqCisgICAgICogICAgIE1BWC1FTUFYKzEgPCBsb2cxMChlXigwLjEqMTAqdCkpIDw9IGxvZzEwKGVeKHIqMTBedCkpIDwgYWRqZXhwKGVeKHIqMTBedCkpKzEKKyAgICAgKgorICAgICAqICAgKDIpIC0xIDwgciA8PSAtMC4xLCBzbyBlXnIgPD0gZV4tMC4xLiBJZiB0ID4gTUFYX1QsIHVuZGVyZmxvdyBvY2N1cnM6CisgICAgICoKKyAgICAgKiAgICAgYWRqZXhwKGVeKHIqMTBedCkpIDw9IGxvZzEwKGVeKHIqMTBedCkpIDw9IGxvZzEwKGVeKC0wLjEqMTBedCkpIDwgTUlOLUVUSU5ZCisgICAgICovCisjaWYgZGVmaW5lZChDT05GSUdfNjQpCisgICAgI2RlZmluZSBNUERfRVhQX01BWF9UIDE5CisjZWxpZiBkZWZpbmVkKENPTkZJR18zMikKKyAgICAjZGVmaW5lIE1QRF9FWFBfTUFYX1QgMTAKKyNlbmRpZgorICAgIHQgPSBhLT5kaWdpdHMgKyBhLT5leHA7CisgICAgdCA9ICh0ID4gMCkgPyB0IDogMDsKKyAgICBpZiAodCA+IE1QRF9FWFBfTUFYX1QpIHsKKyAgICAgICAgaWYgKG1wZF9pc3Bvc2l0aXZlKGEpKSB7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIE1QRF9QT1MsIE1QRF9JTkYpOworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfT3ZlcmZsb3d8TVBEX0luZXhhY3R8TVBEX1JvdW5kZWQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgTVBEX1BPUywgMCwgbXBkX2V0aW55KGN0eCkpOworICAgICAgICAgICAgKnN0YXR1cyB8PSAoTVBEX0luZXhhY3R8TVBEX1JvdW5kZWR8TVBEX1N1Ym5vcm1hbHwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1QRF9VbmRlcmZsb3d8TVBEX0NsYW1wZWQpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKiBhYnMoYSkgPD0gOSAqIDEwKiooLXByZWMtMSkgKi8KKyAgICBpZiAoX21wZF9xZXhwX2NoZWNrX29uZShyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbXBkX21heGNvbnRleHQoJndvcmtjdHgpOworICAgIHdvcmtjdHgucHJlYyA9IGN0eC0+cHJlYyArIHQgKyAyOworICAgIHdvcmtjdHgucHJlYyA9ICh3b3JrY3R4LnByZWMgPCAxMCkgPyAxMCA6IHdvcmtjdHgucHJlYzsKKyAgICB3b3JrY3R4LnJvdW5kID0gTVBEX1JPVU5EX0hBTEZfRVZFTjsKKworICAgIGlmICghbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlc3VsdC0+ZXhwIC09IHQ7CisKKyAgICAvKgorICAgICAqIEF0IHRoaXMgcG9pbnQ6CisgICAgICogICAgMSkgOSAqIDEwKiooLXByZWMtMSkgPCBhYnMoYSkKKyAgICAgKiAgICAyKSA5ICogMTAqKigtcHJlYy10LTEpIDwgYWJzKHIpCisgICAgICogICAgMykgbG9nMTAoOSkgLSBwcmVjIC0gdCAtIDEgPCBsb2cxMChhYnMocikpIDwgYWRqZXhwKGFicyhyKSkgKyAxCisgICAgICogICAgNCkgLSBwcmVjIC0gdCAtIDIgPCBhZGpleHAoYWJzKHIpKSA8PSAtMQorICAgICAqLworICAgIG4gPSBfbXBkX2dldF9leHBfaXRlcmF0aW9ucyhyZXN1bHQsIHdvcmtjdHgucHJlYyk7CisgICAgaWYgKG4gPT0gTVBEX1NTSVpFX01BWCkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICAgICAgcmV0dXJuOyAvKiBHQ09WX1VOTElLRUxZICovCisgICAgfQorCisgICAgX3NldHRyaXBsZSgmc3VtLCBNUERfUE9TLCAxLCAwKTsKKworICAgIGZvciAoaiA9IG4tMTsgaiA+PSAxOyBqLS0pIHsKKyAgICAgICAgd29yZC5kYXRhWzBdID0gajsKKyAgICAgICAgbXBkX3NldGRpZ2l0cygmd29yZCk7CisgICAgICAgIG1wZF9xZGl2KCZ0bXAsIHJlc3VsdCwgJndvcmQsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgICAgICBtcGRfcWZtYSgmc3VtLCAmc3VtLCAmdG1wLCAmb25lLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICB9CisKKyNpZmRlZiBDT05GSUdfNjQKKyAgICBfbXBkX3Fwb3dfdWludChyZXN1bHQsICZzdW0sIG1wZF9wb3cxMFt0XSwgTVBEX1BPUywgJndvcmtjdHgsIHN0YXR1cyk7CisjZWxzZQorICAgIGlmICh0IDw9IE1QRF9NQVhfUE9XMTApIHsKKyAgICAgICAgX21wZF9xcG93X3VpbnQocmVzdWx0LCAmc3VtLCBtcGRfcG93MTBbdF0sIE1QRF9QT1MsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdCAtPSBNUERfTUFYX1BPVzEwOworICAgICAgICBfbXBkX3Fwb3dfdWludCgmdG1wLCAmc3VtLCBtcGRfcG93MTBbTVBEX01BWF9QT1cxMF0sIE1QRF9QT1MsCisgICAgICAgICAgICAgICAgICAgICAgICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICBfbXBkX3Fwb3dfdWludChyZXN1bHQsICZ0bXAsIG1wZF9wb3cxMFt0XSwgTVBEX1BPUywgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgfQorI2VuZGlmCisKKyAgICBtcGRfZGVsKCZ0bXApOworICAgIG1wZF9kZWwoJnN1bSk7CisgICAgKnN0YXR1cyB8PSAod29ya2N0eC5zdGF0dXMmTVBEX0Vycm9ycyk7CisgICAgKnN0YXR1cyB8PSAoTVBEX0luZXhhY3R8TVBEX1JvdW5kZWQpOworfQorCisvKiBleHAoYSkgKi8KK3ZvaWQKK21wZF9xZXhwKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbihyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNuZWdhdGl2ZShhKSkgeworICAgICAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIE1QRF9QT1MsIDAsIDApOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBNUERfUE9TLCBNUERfSU5GKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkpIHsKKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIE1QRF9QT1MsIDEsIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd29ya2N0eCA9ICpjdHg7CisgICAgd29ya2N0eC5yb3VuZCA9IE1QRF9ST1VORF9IQUxGX0VWRU47CisKKyAgICBpZiAoY3R4LT5hbGxjcikgeworICAgICAgICBNUERfTkVXX1NUQVRJQyh0MSwgMCwwLDAsMCk7CisgICAgICAgIE1QRF9ORVdfU1RBVElDKHQyLCAwLDAsMCwwKTsKKyAgICAgICAgTVBEX05FV19TVEFUSUModWxwLCAwLDAsMCwwKTsKKyAgICAgICAgTVBEX05FV19TVEFUSUMoYWEsIDAsMCwwLDApOworICAgICAgICBtcGRfc3NpemVfdCBwcmVjOworICAgICAgICBtcGRfc3NpemVfdCB1bHBleHA7CisgICAgICAgIHVpbnQzMl90IHdvcmtzdGF0dXM7CisKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBhKSB7CisgICAgICAgICAgICBpZiAoIW1wZF9xY29weSgmYWEsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGEgPSAmYWE7CisgICAgICAgIH0KKworICAgICAgICB3b3JrY3R4LmNsYW1wID0gMDsKKyAgICAgICAgcHJlYyA9IGN0eC0+cHJlYyArIDM7CisgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICB3b3JrY3R4LnByZWMgPSBwcmVjOworICAgICAgICAgICAgd29ya3N0YXR1cyA9IDA7CisKKyAgICAgICAgICAgIF9tcGRfcWV4cChyZXN1bHQsIGEsICZ3b3JrY3R4LCAmd29ya3N0YXR1cyk7CisgICAgICAgICAgICAqc3RhdHVzIHw9IHdvcmtzdGF0dXM7CisKKyAgICAgICAgICAgIHVscGV4cCA9IHJlc3VsdC0+ZXhwICsgcmVzdWx0LT5kaWdpdHMgLSB3b3JrY3R4LnByZWM7CisgICAgICAgICAgICBpZiAod29ya3N0YXR1cyAmIE1QRF9VbmRlcmZsb3cpIHsKKyAgICAgICAgICAgICAgICAvKiBUaGUgZWZmZWN0aXZlIHdvcmsgcHJlY2lzaW9uIGlzIHJlc3VsdC0+ZGlnaXRzLiAqLworICAgICAgICAgICAgICAgIHVscGV4cCA9IHJlc3VsdC0+ZXhwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgX3NzZXR0cmlwbGUoJnVscCwgTVBEX1BPUywgMSwgdWxwZXhwKTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIEF0IHRoaXMgcG9pbnQgWzFdOgorICAgICAgICAgICAgICogICAxKSBhYnMocmVzdWx0IC0gZSoqeCkgPCAwLjUgKiAxMCoqKC1wcmVjKSAqIGUqKngKKyAgICAgICAgICAgICAqICAgMikgcmVzdWx0IC0gdWxwIDwgZSoqeCA8IHJlc3VsdCArIHVscAorICAgICAgICAgICAgICogICAzKSByZXN1bHQgLSB1bHAgPCByZXN1bHQgPCByZXN1bHQgKyB1bHAKKyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKiBJZiByb3VuZChyZXN1bHQtdWxwKT09cm91bmQocmVzdWx0K3VscCksIHRoZW4KKyAgICAgICAgICAgICAqIHJvdW5kKHJlc3VsdCk9PXJvdW5kKGUqKngpLiBUaGVyZWZvcmUgdGhlIHJlc3VsdAorICAgICAgICAgICAgICogaXMgY29ycmVjdGx5IHJvdW5kZWQuCisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogWzFdIElmIGFicyhhKSA8PSA5ICogMTAqKigtcHJlYy0xKSwgdXNlIHRoZSBhYnNvbHV0ZQorICAgICAgICAgICAgICogICAgIGVycm9yIGZvciBhIHNpbWlsYXIgYXJndW1lbnQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHdvcmtjdHgucHJlYyA9IGN0eC0+cHJlYzsKKyAgICAgICAgICAgIG1wZF9xYWRkKCZ0MSwgcmVzdWx0LCAmdWxwLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgICAgIG1wZF9xc3ViKCZ0MiwgcmVzdWx0LCAmdWxwLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgICAgIGlmIChtcGRfaXNzcGVjaWFsKHJlc3VsdCkgfHwgbXBkX2lzemVyb2NvZWZmKHJlc3VsdCkgfHwKKyAgICAgICAgICAgICAgICBtcGRfcWNtcCgmdDEsICZ0Miwgc3RhdHVzKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgd29ya2N0eC5jbGFtcCA9IGN0eC0+Y2xhbXA7CisgICAgICAgICAgICAgICAgX21wZF96ZXJvcGFkKHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgbXBkX2NoZWNrX3VuZGVyZmxvdyhyZXN1bHQsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByZWMgKz0gTVBEX1JESUdJVFM7CisgICAgICAgIH0KKyAgICAgICAgbXBkX2RlbCgmdDEpOworICAgICAgICBtcGRfZGVsKCZ0Mik7CisgICAgICAgIG1wZF9kZWwoJnVscCk7CisgICAgICAgIG1wZF9kZWwoJmFhKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9tcGRfcWV4cChyZXN1bHQsIGEsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICBfbXBkX3plcm9wYWQocmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgbXBkX2NoZWNrX3VuZGVyZmxvdyhyZXN1bHQsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgfQorfQorCisvKiBGdXNlZCBtdWx0aXBseS1hZGQ6IChhICogYikgKyBjLCB3aXRoIGEgc2luZ2xlIGZpbmFsIHJvdW5kaW5nLiAqLwordm9pZAorbXBkX3FmbWEobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfdCAqYywKKyAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50MzJfdCB3b3Jrc3RhdHVzID0gMDsKKyAgICBtcGRfdCAqY2MgPSAobXBkX3QgKiljOworCisgICAgaWYgKHJlc3VsdCA9PSBjKSB7CisgICAgICAgIGlmICgoY2MgPSBtcGRfcW5jb3B5KGMpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgX21wZF9xbXVsKHJlc3VsdCwgYSwgYiwgY3R4LCAmd29ya3N0YXR1cyk7CisgICAgaWYgKCEod29ya3N0YXR1cyZNUERfSW52YWxpZF9vcGVyYXRpb24pKSB7CisgICAgICAgIG1wZF9xYWRkKHJlc3VsdCwgcmVzdWx0LCBjYywgY3R4LCAmd29ya3N0YXR1cyk7CisgICAgfQorCisgICAgaWYgKGNjICE9IGMpIG1wZF9kZWwoY2MpOworICAgICpzdGF0dXMgfD0gd29ya3N0YXR1czsKK30KKworLyoKKyAqIFNjaGVkdWxlIHRoZSBvcHRpbWFsIHByZWNpc2lvbiBpbmNyZWFzZSBmb3IgdGhlIE5ld3RvbiBpdGVyYXRpb24uCisgKiAgIHYgOj0gaW5wdXQgb3BlcmFuZAorICogICB6XzAgOj0gaW5pdGlhbCBhcHByb3hpbWF0aW9uCisgKiAgIGluaXRwcmVjIDo9IG5hdHVyYWwgbnVtYmVyIHN1Y2ggdGhhdCBhYnMobG9nKHYpIC0gel8wKSA8IDEwKiotaW5pdHByZWMKKyAqICAgbWF4cHJlYyA6PSB0YXJnZXQgcHJlY2lzaW9uCisgKgorICogRm9yIGNvbnZlbmllbmNlIHRoZSBvdXRwdXQga2xpc3QgY29udGFpbnMgdGhlIGVsZW1lbnRzIGluIHJldmVyc2Ugb3JkZXI6CisgKiAgIGtsaXN0IDo9IFtrX24tMSwgLi4uLCBrXzBdLCB3aGVyZQorICogICAgIDEpIGtfMCA8PSBpbml0cHJlYyBhbmQKKyAqICAgICAyKSBhYnMobG9nKHYpIC0gcmVzdWx0KSA8IDEwKiooLTIqa19uLTEgKyAxKSA8PSAxMCoqLW1heHByZWMuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50Citsbl9zY2hlZHVsZV9wcmVjKG1wZF9zc2l6ZV90IGtsaXN0W01QRF9NQVhfUFJFQ19MT0cyXSwgbXBkX3NzaXplX3QgbWF4cHJlYywKKyAgICAgICAgICAgICAgICAgbXBkX3NzaXplX3QgaW5pdHByZWMpCit7CisgICAgbXBkX3NzaXplX3QgazsKKyAgICBpbnQgaTsKKworICAgIGFzc2VydChtYXhwcmVjID49IDIgJiYgaW5pdHByZWMgPj0gMik7CisgICAgaWYgKG1heHByZWMgPD0gaW5pdHByZWMpIHJldHVybiAtMTsKKworICAgIGkgPSAwOyBrID0gbWF4cHJlYzsKKyAgICBkbyB7CisgICAgICAgIGsgPSAoaysyKSAvIDI7CisgICAgICAgIGtsaXN0W2krK10gPSBrOworICAgIH0gd2hpbGUgKGsgPiBpbml0cHJlYyk7CisKKyAgICByZXR1cm4gaS0xOworfQorCisvKiBUaGUgY29uc3RhbnRzIGhhdmUgYmVlbiB2ZXJpZmllZCB3aXRoIGJvdGggZGVjaW1hbC5weSBhbmQgbXBmci4gKi8KKyNpZmRlZiBDT05GSUdfNjQKKyNpZiBNUERfUkRJR0lUUyAhPSAxOQorICAjZXJyb3IgIm1wZGVjaW1hbC5jOiBNUERfUkRJR0lUUyBtdXN0IGJlIDE5LiIKKyNlbmRpZgorc3RhdGljIGNvbnN0IG1wZF91aW50X3QgbXBkX2xuMTBfZGF0YVtNUERfTUlOQUxMT0NfTUFYXSA9IHsKKyAgNjk4MzcxNjMyODk4MjE3NDQwN1VMTCwgOTA4OTcwNDI4MTk3NjMzNjU4M1VMTCwgMTUxNTk2MTEzNTY0ODQ2NTQ2MVVMTCwKKyAgNDQxNjgxNjMzNTcyNzU1NTcwM1VMTCwgMjkwMDk4ODAzOTE5NDE3MDI2NVVMTCwgMjMwNzkyNTAzNzQ3Mjk4NjUwOVVMTCwKKyAgIDEwNzU5ODQzODMxOTE5MTI5MlVMTCwgMzQ2NjYyNDEwNzE4NDY2OTIzMVVMTCwgNDQ1MDA5OTc4MTMxMTQ2OTE1OVVMTCwKKyAgOTgwNzgyODA1OTc1MTE5Mzg1NFVMTCwgNzcxMzQ1Njg2MjA5MTY3MDU4NFVMTCwgMTQ5MjE5ODg0OTk3ODc0ODg3M1VMTCwKKyAgNjUyODcyODY5NjUxMTA4NjI1N1VMTCwgMjM4NTM5MjA1MTQ0NjM0MTk3MlVMTCwgODY5MjE4MDIwNTE4OTMzOTUwN1VMTCwKKyAgNjUxODc2OTc1MTAzNzQ5NzA4OFVMTCwgMjM3NTI1MzU3NzA5NzUwNTM5NVVMTCwgOTA5NTYxMDI5OTI5MTgyNDMxOFVMTCwKKyAgIDk4Mjc0ODIzODUwNDU2NDgwMVVMTCwgNTQzODYzNTkxNzc4MTE3MDU0M1VMTCwgNzU0NzMzMTU0MTQyMTgwODQyN1VMTCwKKyAgIDc1MjM3MTAzMzMxMDExOTc4NVVMTCwgMzE3MTY0MzA5NTA1OTk1MDg3OFVMTCwgOTc4NTI2NTM4MzIwNzYwNjcyNlVMTCwKKyAgMjkzMjI1ODI3OTg1MDI1ODU1MFVMTCwgNTQ5NzM0NzcyNjYyNDI1NzA5NFVMTCwgMjk3Njk3OTUyMjExMDcxODI2NFVMTCwKKyAgOTIyMTQ3NzY1Njc2MzY5Mzg2NlVMTCwgMTk3OTY1MDA0NzE0OTUxMDUwNFVMTCwgNjY3NDE4MzQ4NTcwNDQyMjUwN1VMTCwKKyAgOTcwMjc2Njg2MDU5NTI0OTY3MVVMTCwgOTI3ODA5Njc2MjcxMjc1Nzc1M1VMTCwgOTMxNDg0ODUyNDk0ODY0NDg3MVVMTCwKKyAgNjgyNjkyODI4MDg0ODExODQyOFVMTCwgIDc1NDQwMzcwODQ3NDY5OTQwMVVMTCwgIDIzMDEwNTcwMzA4OTYzNDU3MlVMTCwKKyAgMTkyOTIwMzMzNzY1ODcxNDE2NlVMTCwgNzU4OTQwMjU2Nzc2MzExMzU2OVVMTCwgNDIwODI0MTMxNDY5NTY4OTAxNlVMTCwKKyAgMjkyMjQ1NTQ0MDU3NTg5MjU3MlVMTCwgOTM1NjczNDIwNjcwNTgxMTM2NFVMTCwgMjY4NDkxNjc0NjU1MDU4Njg1NlVMTCwKKyAgIDY0NDUwNzA2NDgwMDAyNzc1MFVMTCwgOTQ3NjgzNDYzNjE2NzkyMTAxOFVMTCwgNTY1OTEyMTM3MzQ1MDc0Nzg1NlVMTCwKKyAgMjgzNTUyMjAxMTQ4MDQ2NjM3MVVMTCwgNjQ3MDgwNjg1NTY3NzQzMjE2MlVMTCwgNzE0MTc0ODAwMzY4ODA4NDAxMlVMTCwKKyAgOTYxOTQwNDQwMDIyMjEwNTEwMVVMTCwgNTUwNDg5MzQzMTQ5MzkzOTE0N1VMTCwgNjY3NDc0NDA0MjQzMjc0MzY1MVVMTCwKKyAgMjI4NzY5ODIxOTg4Njc0NjU0M1VMTCwgNzc3MzI2Mjg4NDYxNjMzNjYyMlVMTCwgMTk4NTI4MzkzNTA1MzA4OTY1M1VMTCwKKyAgNDY4MDg0Mzc5OTg5NDgyNjIzM1VMTCwgODE2ODk0ODI5MDcyMDgzMjU1NVVMTCwgODA2NzU2NjY2Mjg3MzY5MDk4N1VMTCwKKyAgNjI0ODYzMzQwOTUyNTQ2NTA4MlVMTCwgOTgyOTgzNDE5Njc3ODQwNDIyOFVMTCwgMzUyNDgwMjM1OTk3MjA1MDg5NVVMTCwKKyAgMzMyNzkwMDk2NzU3MjYwOTY3N1VMTCwgIDExMDE0ODg2Mjg3NzI5NzYwM1VMTCwgIDE3OTkxNDU0Njg0MzY0MjA3NlVMTCwKKyAgMjMwMjU4NTA5Mjk5NDA0NTY4NFVMTAorfTsKKyNlbHNlCisjaWYgTVBEX1JESUdJVFMgIT0gOQorICAjZXJyb3IgIm1wZGVjaW1hbC5jOiBNUERfUkRJR0lUUyBtdXN0IGJlIDkuIgorI2VuZGlmCitzdGF0aWMgY29uc3QgbXBkX3VpbnRfdCBtcGRfbG4xMF9kYXRhW01QRF9NSU5BTExPQ19NQVhdID0geworICA0MDE2ODI2OTJVTCwgNzA4NDc0Njk5VUwsIDcyMDc1NDQwM1VMLCAgMzA4OTYzNDVVTCwgNjAyMzAxMDU3VUwsIDc2NTg3MTQxNlVMLAorICAxOTI5MjAzMzNVTCwgNzYzMTEzNTY5VUwsIDU4OTQwMjU2N1VMLCA5NTY4OTAxNjdVTCwgIDgyNDEzMTQ2VUwsIDU4OTI1NzI0MlVMLAorICAyNDU1NDQwNTdVTCwgODExMzY0MjkyVUwsIDczNDIwNjcwNVVMLCA4Njg1NjkzNTZVTCwgMTY3NDY1NTA1VUwsIDc3NTAyNjg0OVVMLAorICA3MDY0ODAwMDJVTCwgIDE4MDY0NDUwVUwsIDYzNjE2NzkyMVVMLCA1Njk0NzY4MzRVTCwgNzM0NTA3NDc4VUwsIDE1NjU5MTIxM1VMLAorICAxNDgwNDY2MzdVTCwgMjgzNTUyMjAxVUwsIDY3NzQzMjE2MlVMLCA0NzA4MDY4NTVVTCwgODgwODQwMTI2VUwsIDQxNzQ4MDAzNlVMLAorICAyMTA1MTAxNzFVTCwgOTQwNDQwMDIyVUwsIDkzOTE0Nzk2MVVMLCA4OTM0MzE0OTNVTCwgNDM2NTE1NTA0VUwsIDQ0MDQyNDMyN1VMLAorICA2NTQzNjY3NDdVTCwgODIxOTg4Njc0VUwsIDYyMjIyODc2OVVMLCA4ODQ2MTYzMzZVTCwgNTM3NzczMjYyVUwsIDM1MDUzMDg5NlVMLAorICAzMTk4NTI4MzlVTCwgOTg5NDgyNjIzVUwsIDQ2ODA4NDM3OVVMLCA3MjA4MzI1NTVVTCwgMTY4OTQ4MjkwVUwsIDczNjkwOTg3OFVMLAorICA2NzU2NjY2MjhVTCwgNTQ2NTA4MjgwVUwsIDg2MzM0MDk1MlVMLCA0MDQyMjg2MjRVTCwgODM0MTk2Nzc4VUwsIDUwODk1OTgyOVVMLAorICAgMjM1OTk3MjBVTCwgOTY3NzM1MjQ4VUwsICA5Njc1NzI2MFVMLCA2MDMzMzI3OTBVTCwgODYyODc3Mjk3VUwsIDc2MDExMDE0OFVMLAorICA0Njg0MzY0MjBVTCwgNDAxNzk5MTQ1VUwsIDI5OTQwNDU2OFVMLCAyMzAyNTg1MDlVTAorfTsKKyNlbmRpZgorLyogX21wZF9sbjEwIGlzIHVzZWQgZGlyZWN0bHkgZm9yIHByZWNpc2lvbnMgc21hbGxlciB0aGFuIE1JTkFMTE9DX01BWCpSRElHSVRTLgorICAgT3RoZXJ3aXNlLCBpdCBzZXJ2ZXMgYXMgdGhlIGluaXRpYWwgYXBwcm94aW1hdGlvbiBmb3IgY2FsY3VsYXRpbmcgbG4oMTApLiAqLworc3RhdGljIGNvbnN0IG1wZF90IF9tcGRfbG4xMCA9IHsKKyAgTVBEX1NUQVRJQ3xNUERfQ09OU1RfREFUQSwgLShNUERfTUlOQUxMT0NfTUFYKk1QRF9SRElHSVRTLTEpLAorICBNUERfTUlOQUxMT0NfTUFYKk1QRF9SRElHSVRTLCBNUERfTUlOQUxMT0NfTUFYLCBNUERfTUlOQUxMT0NfTUFYLAorICAobXBkX3VpbnRfdCAqKW1wZF9sbjEwX2RhdGEKK307CisKKy8qCisgKiBTZXQgJ3Jlc3VsdCcgdG8gbG9nKDEwKS4KKyAqICAgVWxwIGVycm9yOiBhYnMocmVzdWx0IC0gbG9nKDEwKSkgPCB1bHAobG9nKDEwKSkKKyAqICAgUmVsYXRpdmUgZXJyb3I6IGFicyhyZXN1bHQgLSBsb2coMTApKSA8IDUgKiAxMCoqLXByZWMgKiBsb2coMTApCisgKgorICogTk9URTogVGhlIHJlbGF0aXZlIGVycm9yIGlzIG5vdCBkZXJpdmVkIGZyb20gdGhlIHVscCBlcnJvciwgYnV0CisgKiBjYWxjdWxhdGVkIHNlcGFyYXRlbHkgdXNpbmcgdGhlIGZhY3QgdGhhdCAyMy8xMCA8IGxvZygxMCkgPCAyNC8xMC4KKyAqLwordm9pZAorbXBkX3FsbjEwKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IHByZWMsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB2YXJjb250ZXh0LCBtYXhjb250ZXh0OworICAgIE1QRF9ORVdfU1RBVElDKHRtcCwgMCwwLDAsMCk7CisgICAgTVBEX05FV19DT05TVChzdGF0aWMxMCwgMCwwLDIsMSwxLDEwKTsKKyAgICBtcGRfc3NpemVfdCBrbGlzdFtNUERfTUFYX1BSRUNfTE9HMl07CisgICAgbXBkX3VpbnRfdCBybmQ7CisgICAgbXBkX3NzaXplX3Qgc2hpZnQ7CisgICAgaW50IGk7CisKKyAgICBhc3NlcnQocHJlYyA+PSAxKTsKKworICAgIHNoaWZ0ID0gTVBEX01JTkFMTE9DX01BWCpNUERfUkRJR0lUUy1wcmVjOworICAgIHNoaWZ0ID0gc2hpZnQgPCAwID8gMCA6IHNoaWZ0OworCisgICAgcm5kID0gbXBkX3FzaGlmdHIocmVzdWx0LCAmX21wZF9sbjEwLCBzaGlmdCwgc3RhdHVzKTsKKyAgICBpZiAocm5kID09IE1QRF9VSU5UX01BWCkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlc3VsdC0+ZXhwID0gLShyZXN1bHQtPmRpZ2l0cy0xKTsKKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjb250ZXh0KTsKKyAgICBpZiAocHJlYyA8IE1QRF9NSU5BTExPQ19NQVgqTVBEX1JESUdJVFMpIHsKKyAgICAgICAgbWF4Y29udGV4dC5wcmVjID0gcHJlYzsKKyAgICAgICAgX21wZF9hcHBseV9yb3VuZF9leGNlc3MocmVzdWx0LCBybmQsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgICAgICAqc3RhdHVzIHw9IChNUERfSW5leGFjdHxNUERfUm91bmRlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtcGRfbWF4Y29udGV4dCgmdmFyY29udGV4dCk7CisgICAgdmFyY29udGV4dC5yb3VuZCA9IE1QRF9ST1VORF9UUlVOQzsKKworICAgIGkgPSBsbl9zY2hlZHVsZV9wcmVjKGtsaXN0LCBwcmVjKzIsIC1yZXN1bHQtPmV4cCk7CisgICAgZm9yICg7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIHZhcmNvbnRleHQucHJlYyA9IDIqa2xpc3RbaV0rMzsKKyAgICAgICAgcmVzdWx0LT5mbGFncyBePSBNUERfTkVHOworICAgICAgICBfbXBkX3FleHAoJnRtcCwgcmVzdWx0LCAmdmFyY29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgcmVzdWx0LT5mbGFncyBePSBNUERfTkVHOworICAgICAgICBtcGRfcW11bCgmdG1wLCAmc3RhdGljMTAsICZ0bXAsICZ2YXJjb250ZXh0LCBzdGF0dXMpOworICAgICAgICBtcGRfcXN1YigmdG1wLCAmdG1wLCAmb25lLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgbXBkX3FhZGQocmVzdWx0LCByZXN1bHQsICZ0bXAsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgICAgICBpZiAobXBkX2lzc3BlY2lhbChyZXN1bHQpKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1wZF9kZWwoJnRtcCk7CisgICAgbWF4Y29udGV4dC5wcmVjID0gcHJlYzsKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgJm1heGNvbnRleHQsIHN0YXR1cyk7Cit9CisKKy8qCisgKiBJbml0aWFsIGFwcHJveGltYXRpb25zIGZvciB0aGUgbG4oKSBpdGVyYXRpb24uIFRoZSB2YWx1ZXMgaGF2ZSB0aGUKKyAqIGZvbGxvd2luZyBwcm9wZXJ0aWVzIChlc3RhYmxpc2hlZCB3aXRoIGJvdGggZGVjaW1hbC5weSBhbmQgbXBmcik6CisgKgorICogSW5kZXggMCAtIDQwMCwgbG9nYXJpdGhtcyBvZiB4IGluIFsxLjAwLCA1LjAwXToKKyAqICAgYWJzKGxuYXBwcm94W2ldICogMTAqKi0zIC0gbG9nKChpKzEwMCkvMTAwKSkgPCAxMCoqLTIKKyAqICAgYWJzKGxuYXBwcm94W2ldICogMTAqKi0zIC0gbG9nKChpKzErMTAwKS8xMDApKSA8IDEwKiotMgorICoKKyAqIEluZGV4IDQwMSAtIDg5OSwgbG9nYXJpdGhtcyBvZiB4IGluICgwLjUwMCwgMC45OTldOgorICogICBhYnMoLWxuYXBwcm94W2ldICogMTAqKi0zIC0gbG9nKChpKzEwMCkvMTAwMCkpIDwgMTAqKi0yCisgKiAgIGFicygtbG5hcHByb3hbaV0gKiAxMCoqLTMgLSBsb2coKGkrMSsxMDApLzEwMDApKSA8IDEwKiotMgorICovCitzdGF0aWMgY29uc3QgdWludDE2X3QgbG5hcHByb3hbOTAwXSA9IHsKKyAgLyogaW5kZXggMCAtIDQwMDogbG9nKChpKzEwMCkvMTAwKSAqIDEwMDAgKi8KKyAgMCwgMTAsIDIwLCAzMCwgMzksIDQ5LCA1OCwgNjgsIDc3LCA4NiwgOTUsIDEwNCwgMTEzLCAxMjIsIDEzMSwgMTQwLCAxNDgsIDE1NywKKyAgMTY2LCAxNzQsIDE4MiwgMTkxLCAxOTksIDIwNywgMjE1LCAyMjMsIDIzMSwgMjM5LCAyNDcsIDI1NSwgMjYyLCAyNzAsIDI3OCwKKyAgMjg1LCAyOTMsIDMwMCwgMzA4LCAzMTUsIDMyMiwgMzI5LCAzMzYsIDM0NCwgMzUxLCAzNTgsIDM2NSwgMzcyLCAzNzgsIDM4NSwKKyAgMzkyLCAzOTksIDQwNiwgNDEyLCA0MTksIDQyNSwgNDMyLCA0MzgsIDQ0NSwgNDUxLCA0NTcsIDQ2NCwgNDcwLCA0NzYsIDQ4MiwKKyAgNDg5LCA0OTUsIDUwMSwgNTA3LCA1MTMsIDUxOSwgNTI1LCA1MzEsIDUzNiwgNTQyLCA1NDgsIDU1NCwgNTYwLCA1NjUsIDU3MSwKKyAgNTc3LCA1ODIsIDU4OCwgNTkzLCA1OTksIDYwNCwgNjEwLCA2MTUsIDYyMSwgNjI2LCA2MzEsIDYzNywgNjQyLCA2NDcsIDY1MiwKKyAgNjU4LCA2NjMsIDY2OCwgNjczLCA2NzgsIDY4MywgNjg4LCA2OTMsIDY5OCwgNzAzLCA3MDgsIDcxMywgNzE4LCA3MjMsIDcyOCwKKyAgNzMyLCA3MzcsIDc0MiwgNzQ3LCA3NTEsIDc1NiwgNzYxLCA3NjYsIDc3MCwgNzc1LCA3NzksIDc4NCwgNzg4LCA3OTMsIDc5OCwKKyAgODAyLCA4MDYsIDgxMSwgODE1LCA4MjAsIDgyNCwgODI5LCA4MzMsIDgzNywgODQyLCA4NDYsIDg1MCwgODU0LCA4NTksIDg2MywKKyAgODY3LCA4NzEsIDg3NiwgODgwLCA4ODQsIDg4OCwgODkyLCA4OTYsIDkwMCwgOTA0LCA5MDgsIDkxMiwgOTE2LCA5MjAsIDkyNCwKKyAgOTI4LCA5MzIsIDkzNiwgOTQwLCA5NDQsIDk0OCwgOTUyLCA5NTYsIDk1OSwgOTYzLCA5NjcsIDk3MSwgOTc1LCA5NzgsIDk4MiwKKyAgOTg2LCA5OTAsIDk5MywgOTk3LCAxMDAxLCAxMDA0LCAxMDA4LCAxMDEyLCAxMDE1LCAxMDE5LCAxMDIyLCAxMDI2LCAxMDMwLAorICAxMDMzLCAxMDM3LCAxMDQwLCAxMDQ0LCAxMDQ3LCAxMDUxLCAxMDU0LCAxMDU4LCAxMDYxLCAxMDY1LCAxMDY4LCAxMDcyLCAxMDc1LAorICAxMDc4LCAxMDgyLCAxMDg1LCAxMDg5LCAxMDkyLCAxMDk1LCAxMDk5LCAxMTAyLCAxMTA1LCAxMTA5LCAxMTEyLCAxMTE1LCAxMTE4LAorICAxMTIyLCAxMTI1LCAxMTI4LCAxMTMxLCAxMTM1LCAxMTM4LCAxMTQxLCAxMTQ0LCAxMTQ3LCAxMTUxLCAxMTU0LCAxMTU3LCAxMTYwLAorICAxMTYzLCAxMTY2LCAxMTY5LCAxMTcyLCAxMTc2LCAxMTc5LCAxMTgyLCAxMTg1LCAxMTg4LCAxMTkxLCAxMTk0LCAxMTk3LCAxMjAwLAorICAxMjAzLCAxMjA2LCAxMjA5LCAxMjEyLCAxMjE1LCAxMjE4LCAxMjIxLCAxMjI0LCAxMjI3LCAxMjMwLCAxMjMzLCAxMjM1LCAxMjM4LAorICAxMjQxLCAxMjQ0LCAxMjQ3LCAxMjUwLCAxMjUzLCAxMjU2LCAxMjU4LCAxMjYxLCAxMjY0LCAxMjY3LCAxMjcwLCAxMjczLCAxMjc1LAorICAxMjc4LCAxMjgxLCAxMjg0LCAxMjg2LCAxMjg5LCAxMjkyLCAxMjk1LCAxMjk3LCAxMzAwLCAxMzAzLCAxMzA2LCAxMzA4LCAxMzExLAorICAxMzE0LCAxMzE2LCAxMzE5LCAxMzIyLCAxMzI0LCAxMzI3LCAxMzMwLCAxMzMyLCAxMzM1LCAxMzM4LCAxMzQwLCAxMzQzLCAxMzQ1LAorICAxMzQ4LCAxMzUxLCAxMzUzLCAxMzU2LCAxMzU4LCAxMzYxLCAxMzY0LCAxMzY2LCAxMzY5LCAxMzcxLCAxMzc0LCAxMzc2LCAxMzc5LAorICAxMzgxLCAxMzg0LCAxMzg2LCAxMzg5LCAxMzkxLCAxMzk0LCAxMzk2LCAxMzk5LCAxNDAxLCAxNDA0LCAxNDA2LCAxNDA5LCAxNDExLAorICAxNDEzLCAxNDE2LCAxNDE4LCAxNDIxLCAxNDIzLCAxNDI2LCAxNDI4LCAxNDMwLCAxNDMzLCAxNDM1LCAxNDM3LCAxNDQwLCAxNDQyLAorICAxNDQ1LCAxNDQ3LCAxNDQ5LCAxNDUyLCAxNDU0LCAxNDU2LCAxNDU5LCAxNDYxLCAxNDYzLCAxNDY2LCAxNDY4LCAxNDcwLCAxNDcyLAorICAxNDc1LCAxNDc3LCAxNDc5LCAxNDgyLCAxNDg0LCAxNDg2LCAxNDg4LCAxNDkxLCAxNDkzLCAxNDk1LCAxNDk3LCAxNTAwLCAxNTAyLAorICAxNTA0LCAxNTA2LCAxNTA5LCAxNTExLCAxNTEzLCAxNTE1LCAxNTE3LCAxNTIwLCAxNTIyLCAxNTI0LCAxNTI2LCAxNTI4LCAxNTMwLAorICAxNTMzLCAxNTM1LCAxNTM3LCAxNTM5LCAxNTQxLCAxNTQzLCAxNTQ1LCAxNTQ4LCAxNTUwLCAxNTUyLCAxNTU0LCAxNTU2LCAxNTU4LAorICAxNTYwLCAxNTYyLCAxNTY0LCAxNTY3LCAxNTY5LCAxNTcxLCAxNTczLCAxNTc1LCAxNTc3LCAxNTc5LCAxNTgxLCAxNTgzLCAxNTg1LAorICAxNTg3LCAxNTg5LCAxNTkxLCAxNTkzLCAxNTk1LCAxNTk3LCAxNTk5LCAxNjAxLCAxNjAzLCAxNjA1LCAxNjA3LCAxNjA5LAorICAvKiBpbmRleCA0MDEgLSA4OTk6IC1sb2coKGkrMTAwKS8xMDAwKSAqIDEwMDAgKi8KKyAgNjkxLCA2ODksIDY4NywgNjg1LCA2ODMsIDY4MSwgNjc5LCA2NzcsIDY3NSwgNjczLCA2NzEsIDY2OSwgNjY4LCA2NjYsIDY2NCwKKyAgNjYyLCA2NjAsIDY1OCwgNjU2LCA2NTQsIDY1MiwgNjUwLCA2NDgsIDY0NiwgNjQ0LCA2NDIsIDY0MSwgNjM5LCA2MzcsIDYzNSwKKyAgNjMzLCA2MzEsIDYyOSwgNjI3LCA2MjYsIDYyNCwgNjIyLCA2MjAsIDYxOCwgNjE2LCA2MTQsIDYxMiwgNjExLCA2MDksIDYwNywKKyAgNjA1LCA2MDMsIDYwMiwgNjAwLCA1OTgsIDU5NiwgNTk0LCA1OTIsIDU5MSwgNTg5LCA1ODcsIDU4NSwgNTgzLCA1ODIsIDU4MCwKKyAgNTc4LCA1NzYsIDU3NCwgNTczLCA1NzEsIDU2OSwgNTY3LCA1NjYsIDU2NCwgNTYyLCA1NjAsIDU1OSwgNTU3LCA1NTUsIDU1MywKKyAgNTUyLCA1NTAsIDU0OCwgNTQ2LCA1NDUsIDU0MywgNTQxLCA1NDAsIDUzOCwgNTM2LCA1MzQsIDUzMywgNTMxLCA1MjksIDUyOCwKKyAgNTI2LCA1MjQsIDUyMywgNTIxLCA1MTksIDUxOCwgNTE2LCA1MTQsIDUxMiwgNTExLCA1MDksIDUwOCwgNTA2LCA1MDQsIDUwMiwKKyAgNTAxLCA0OTksIDQ5OCwgNDk2LCA0OTQsIDQ5MywgNDkxLCA0ODksIDQ4OCwgNDg2LCA0ODQsIDQ4MywgNDgxLCA0ODAsIDQ3OCwKKyAgNDc2LCA0NzUsIDQ3MywgNDcyLCA0NzAsIDQ2OCwgNDY3LCA0NjUsIDQ2NCwgNDYyLCA0NjAsIDQ1OSwgNDU3LCA0NTYsIDQ1NCwKKyAgNDUzLCA0NTEsIDQ0OSwgNDQ4LCA0NDYsIDQ0NSwgNDQzLCA0NDIsIDQ0MCwgNDM4LCA0MzcsIDQzNSwgNDM0LCA0MzIsIDQzMSwKKyAgNDI5LCA0MjgsIDQyNiwgNDI1LCA0MjMsIDQyMiwgNDIwLCA0MTksIDQxNywgNDE2LCA0MTQsIDQxMiwgNDExLCA0MTAsIDQwOCwKKyAgNDA2LCA0MDUsIDQwNCwgNDAyLCA0MDAsIDM5OSwgMzk4LCAzOTYsIDM5NCwgMzkzLCAzOTIsIDM5MCwgMzg5LCAzODcsIDM4NiwKKyAgMzg0LCAzODMsIDM4MSwgMzgwLCAzNzgsIDM3NywgMzc1LCAzNzQsIDM3MiwgMzcxLCAzNzAsIDM2OCwgMzY3LCAzNjUsIDM2NCwKKyAgMzYyLCAzNjEsIDM2MCwgMzU4LCAzNTcsIDM1NSwgMzU0LCAzNTIsIDM1MSwgMzUwLCAzNDgsIDM0NywgMzQ1LCAzNDQsIDM0MiwKKyAgMzQxLCAzNDAsIDMzOCwgMzM3LCAzMzYsIDMzNCwgMzMzLCAzMzEsIDMzMCwgMzI4LCAzMjcsIDMyNiwgMzI0LCAzMjMsIDMyMiwKKyAgMzIwLCAzMTksIDMxOCwgMzE2LCAzMTUsIDMxMywgMzEyLCAzMTEsIDMwOSwgMzA4LCAzMDYsIDMwNSwgMzA0LCAzMDIsIDMwMSwKKyAgMzAwLCAyOTgsIDI5NywgMjk2LCAyOTQsIDI5MywgMjkyLCAyOTAsIDI4OSwgMjg4LCAyODYsIDI4NSwgMjg0LCAyODIsIDI4MSwKKyAgMjgwLCAyNzgsIDI3NywgMjc2LCAyNzQsIDI3MywgMjcyLCAyNzAsIDI2OSwgMjY4LCAyNjcsIDI2NSwgMjY0LCAyNjMsIDI2MSwKKyAgMjYwLCAyNTksIDI1OCwgMjU2LCAyNTUsIDI1NCwgMjUyLCAyNTEsIDI1MCwgMjQ4LCAyNDcsIDI0NiwgMjQ1LCAyNDMsIDI0MiwKKyAgMjQxLCAyNDAsIDIzOCwgMjM3LCAyMzYsIDIzNCwgMjMzLCAyMzIsIDIzMSwgMjI5LCAyMjgsIDIyNywgMjI2LCAyMjQsIDIyMywKKyAgMjIyLCAyMjEsIDIxOSwgMjE4LCAyMTcsIDIxNiwgMjE0LCAyMTMsIDIxMiwgMjExLCAyMTAsIDIwOCwgMjA3LCAyMDYsIDIwNSwKKyAgMjAzLCAyMDIsIDIwMSwgMjAwLCAxOTgsIDE5NywgMTk2LCAxOTUsIDE5NCwgMTkyLCAxOTEsIDE5MCwgMTg5LCAxODgsIDE4NiwKKyAgMTg1LCAxODQsIDE4MywgMTgyLCAxODAsIDE3OSwgMTc4LCAxNzcsIDE3NiwgMTc0LCAxNzMsIDE3MiwgMTcxLCAxNzAsIDE2OCwKKyAgMTY3LCAxNjYsIDE2NSwgMTY0LCAxNjIsIDE2MSwgMTYwLCAxNTksIDE1OCwgMTU3LCAxNTYsIDE1NCwgMTUzLCAxNTIsIDE1MSwKKyAgMTUwLCAxNDgsIDE0NywgMTQ2LCAxNDUsIDE0NCwgMTQzLCAxNDIsIDE0MCwgMTM5LCAxMzgsIDEzNywgMTM2LCAxMzUsIDEzNCwKKyAgMTMyLCAxMzEsIDEzMCwgMTI5LCAxMjgsIDEyNywgMTI2LCAxMjQsIDEyMywgMTIyLCAxMjEsIDEyMCwgMTE5LCAxMTgsIDExNiwKKyAgMTE1LCAxMTQsIDExMywgMTEyLCAxMTEsIDExMCwgMTA5LCAxMDgsIDEwNiwgMTA1LCAxMDQsIDEwMywgMTAyLCAxMDEsIDEwMCwKKyAgOTksIDk4LCA5NywgOTUsIDk0LCA5MywgOTIsIDkxLCA5MCwgODksIDg4LCA4NywgODYsIDg0LCA4MywgODIsIDgxLCA4MCwgNzksCisgIDc4LCA3NywgNzYsIDc1LCA3NCwgNzMsIDcyLCA3MCwgNjksIDY4LCA2NywgNjYsIDY1LCA2NCwgNjMsIDYyLCA2MSwgNjAsIDU5LAorICA1OCwgNTcsIDU2LCA1NCwgNTMsIDUyLCA1MSwgNTAsIDQ5LCA0OCwgNDcsIDQ2LCA0NSwgNDQsIDQzLCA0MiwgNDEsIDQwLCAzOSwKKyAgMzgsIDM3LCAzNiwgMzUsIDM0LCAzMywgMzEsIDMwLCAyOSwgMjgsIDI3LCAyNiwgMjUsIDI0LCAyMywgMjIsIDIxLCAyMCwgMTksCisgIDE4LCAxNywgMTYsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEKK307CisKKy8qCisgKiBJbnRlcm5hbCBsbigpIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3QgY2hlY2sgZm9yIHNwZWNpYWxzLCB6ZXJvIG9yIG9uZS4KKyAqIFJlbGF0aXZlIGVycm9yOiBhYnMocmVzdWx0IC0gbG9nKGEpKSA8IDAuMSAqIDEwKiotcHJlYyAqIGFicyhsb2coYSkpCisgKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FsbihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IHZhcmNvbnRleHQsIG1heGNvbnRleHQ7CisgICAgbXBkX3QgKnogPSAobXBkX3QgKikgcmVzdWx0OworICAgIE1QRF9ORVdfU1RBVElDKHYsMCwwLDAsMCk7CisgICAgTVBEX05FV19TVEFUSUModnRtcCwwLDAsMCwwKTsKKyAgICBNUERfTkVXX1NUQVRJQyh0bXAsMCwwLDAsMCk7CisgICAgbXBkX3NzaXplX3Qga2xpc3RbTVBEX01BWF9QUkVDX0xPRzJdOworICAgIG1wZF9zc2l6ZV90IG1heHByZWMsIHNoaWZ0LCB0OworICAgIG1wZF9zc2l6ZV90IGFfZGlnaXRzLCBhX2V4cDsKKyAgICBtcGRfdWludF90IGR1bW15LCB4OworICAgIGludCBpOworCisgICAgYXNzZXJ0KCFtcGRfaXNzcGVjaWFsKGEpICYmICFtcGRfaXN6ZXJvY29lZmYoYSkpOworCisgICAgLyoKKyAgICAgKiBXZSBhcmUgY2FsY3VsYXRpbmcgbG4oYSkgPSBsbih2ICogMTBedCkgPSBsbih2KSArIHQqbG4oMTApLAorICAgICAqIHdoZXJlIDAuNSA8IHYgPD0gNS4KKyAgICAgKi8KKyAgICBpZiAoIW1wZF9xY29weSgmdiwgYSwgc3RhdHVzKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICB9CisKKyAgICAvKiBJbml0aWFsIGFwcHJveGltYXRpb246IHdlIGhhdmUgYXQgbGVhc3Qgb25lIG5vbi16ZXJvIGRpZ2l0ICovCisgICAgX21wZF9nZXRfbXNkaWdpdHMoJmR1bW15LCAmeCwgJnYsIDMpOworICAgIGlmICh4IDwgMTApIHggKj0gMTA7CisgICAgaWYgKHggPCAxMDApIHggKj0gMTA7CisgICAgeCAtPSAxMDA7CisKKyAgICAvKiBhIG1heSBlcXVhbCB6ICovCisgICAgYV9kaWdpdHMgPSBhLT5kaWdpdHM7CisgICAgYV9leHAgPSBhLT5leHA7CisKKyAgICBtcGRfbWluYWxsb2Moeik7CisgICAgbXBkX2NsZWFyX2ZsYWdzKHopOworICAgIHotPmRhdGFbMF0gPSBsbmFwcHJveFt4XTsKKyAgICB6LT5sZW4gPSAxOworICAgIHotPmV4cCA9IC0zOworICAgIG1wZF9zZXRkaWdpdHMoeik7CisKKyAgICBpZiAoeCA8PSA0MDApIHsKKyAgICAgICAgLyogUmVkdWNlIHRoZSBpbnB1dCBvcGVyYW5kIHRvIDEuMDAgPD0gdiA8PSA1LjAwLiBMZXQgeSA9IHggKyAxMDAsCisgICAgICAgICAqIHNvIDEwMCA8PSB5IDw9IDUwMC4gU2luY2UgeSBjb250YWlucyB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdHMKKyAgICAgICAgICogb2YgdiwgeS8xMDAgPD0gdiA8ICh5KzEpLzEwMCBhbmQgYWJzKHogLSBsb2codikpIDwgMTAqKi0yLiAqLworICAgICAgICB2LmV4cCA9IC0oYV9kaWdpdHMgLSAxKTsKKyAgICAgICAgdCA9IGFfZXhwICsgYV9kaWdpdHMgLSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogUmVkdWNlIHRoZSBpbnB1dCBvcGVyYW5kIHRvIDAuNTAwIDwgdiA8PSAwLjk5OS4gTGV0IHkgPSB4ICsgMTAwLAorICAgICAgICAgKiBzbyA1MDAgPCB5IDw9IDk5OS4gU2luY2UgeSBjb250YWlucyB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdHMKKyAgICAgICAgICogb2YgdiwgeS8xMDAwIDw9IHYgPCAoeSsxKS8xMDAwIGFuZCBhYnMoeiAtIGxvZyh2KSkgPCAxMCoqLTIuICovCisgICAgICAgIHYuZXhwID0gLWFfZGlnaXRzOworICAgICAgICB0ID0gYV9leHAgKyBhX2RpZ2l0czsKKyAgICAgICAgbXBkX3NldF9uZWdhdGl2ZSh6KTsKKyAgICB9CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisgICAgbXBkX21heGNvbnRleHQoJnZhcmNvbnRleHQpOworICAgIHZhcmNvbnRleHQucm91bmQgPSBNUERfUk9VTkRfVFJVTkM7CisKKyAgICBtYXhwcmVjID0gY3R4LT5wcmVjICsgMjsKKyAgICBpZiAodCA9PSAwICYmICh4IDw9IDE1IHx8IHggPj0gODAwKSkgeworICAgICAgICAvKiAwLjkwMCA8PSB2IDw9IDEuMTU6IEVzdGltYXRlIHRoZSBtYWduaXR1ZGUgb2YgdGhlIGxvZ2FyaXRobS4KKyAgICAgICAgICogSWYgbG4odikgd2lsbCB1bmRlcmZsb3csIHNraXAgdGhlIGxvb3AuIE90aGVyd2lzZSwgYWRqdXN0IHRoZQorICAgICAgICAgKiBwcmVjaXNpb24gdXB3YXJkcyBpbiBvcmRlciB0byBvYnRhaW4gYSBzdWZmaWNpZW50IG51bWJlciBvZgorICAgICAgICAgKiBzaWduaWZpY2FudCBkaWdpdHMuCisgICAgICAgICAqCisgICAgICAgICAqICAgQ2FzZSB2ID4gMToKKyAgICAgICAgICogICAgICBhYnMoKHYtMSkvMTApIDwgYWJzKCh2LTEpL3YpIDwgYWJzKGxuKHYpKSA8IGFicyh2LTEpCisgICAgICAgICAqICAgQ2FzZSB2IDwgMToKKyAgICAgICAgICogICAgICBhYnModi0xKSA8IGFicyhsbih2KSkgPCBhYnMoKHYtMSkvdikgPCBhYnMoKHYtMSkqMTApCisgICAgICAgICAqLworICAgICAgICBpbnQgY21wID0gX21wZF9jbXAoJnYsICZvbmUpOworCisgICAgICAgIC8qIFVwcGVyIGJvdW5kIChhc3N1bWUgdiA+IDEpOiBhYnModi0xKSwgdW5yb3VuZGVkICovCisgICAgICAgIF9tcGRfcXN1YigmdG1wLCAmdiwgJm9uZSwgJm1heGNvbnRleHQsICZtYXhjb250ZXh0LnN0YXR1cyk7CisgICAgICAgIGlmIChtYXhjb250ZXh0LnN0YXR1cyAmIE1QRF9FcnJvcnMpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjbXAgPCAwKSB7CisgICAgICAgICAgICAvKiB2IDwgMTogYWJzKCh2LTEpKjEwKSAqLworICAgICAgICAgICAgdG1wLmV4cCArPSAxOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfYWRqZXhwKCZ0bXApIDwgbXBkX2V0aW55KGN0eCkpIHsKKyAgICAgICAgICAgIC8qIFRoZSB1cHBlciBib3VuZCBpcyBsZXNzIHRoYW4gZXRpbnk6IFVuZGVyZmxvdyB0byB6ZXJvICovCisgICAgICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgKGNtcDwwKSwgMSwgbXBkX2V0aW55KGN0eCktMSk7CisgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgfQorICAgICAgICAvKiBMb3dlciBib3VuZDogYWJzKCh2LTEpLzEwKSBvciBhYnModi0xKSAqLworICAgICAgICB0bXAuZXhwIC09IDE7CisgICAgICAgIGlmIChtcGRfYWRqZXhwKCZ0bXApIDwgMCkgeworICAgICAgICAgICAgLyogQWJzb2x1dGUgZXJyb3Igb2YgdGhlIGxvb3A6IGFicyh6IC0gbG9nKHYpKSA8IDEwKiotcC4gSWYKKyAgICAgICAgICAgICAqIHAgPSBjdHgtPnByZWMrMi1hZGpleHAobG93ZXIpLCB0aGVuIHRoZSByZWxhdGl2ZSBlcnJvciBvZgorICAgICAgICAgICAgICogdGhlIHJlc3VsdCBpcyAodXNpbmcgMTAqKmFkamV4cCh4KSA8PSBhYnMoeCkpOgorICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqICAgYWJzKHogLSBsb2codikpIC8gYWJzKGxvZyh2KSkgPCAxMCoqLXAgLyBhYnMobG9nKHYpKQorICAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PSAxMCoqKC1jdHgtPnByZWMtMikKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgbWF4cHJlYyA9IG1heHByZWMgLSBtcGRfYWRqZXhwKCZ0bXApOworICAgICAgICB9CisgICAgfQorCisgICAgaSA9IGxuX3NjaGVkdWxlX3ByZWMoa2xpc3QsIG1heHByZWMsIDIpOworICAgIGZvciAoOyBpID49IDA7IGktLSkgeworICAgICAgICB2YXJjb250ZXh0LnByZWMgPSAyKmtsaXN0W2ldKzM7CisgICAgICAgIHotPmZsYWdzIF49IE1QRF9ORUc7CisgICAgICAgIF9tcGRfcWV4cCgmdG1wLCB6LCAmdmFyY29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgei0+ZmxhZ3MgXj0gTVBEX05FRzsKKworICAgICAgICBpZiAodi5kaWdpdHMgPiB2YXJjb250ZXh0LnByZWMpIHsKKyAgICAgICAgICAgIHNoaWZ0ID0gdi5kaWdpdHMgLSB2YXJjb250ZXh0LnByZWM7CisgICAgICAgICAgICBtcGRfcXNoaWZ0cigmdnRtcCwgJnYsIHNoaWZ0LCBzdGF0dXMpOworICAgICAgICAgICAgdnRtcC5leHAgKz0gc2hpZnQ7CisgICAgICAgICAgICBtcGRfcW11bCgmdG1wLCAmdnRtcCwgJnRtcCwgJnZhcmNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfcW11bCgmdG1wLCAmdiwgJnRtcCwgJnZhcmNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIH0KKworICAgICAgICBtcGRfcXN1YigmdG1wLCAmdG1wLCAmb25lLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgbXBkX3FhZGQoeiwgeiwgJnRtcCwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIGlmIChtcGRfaXNzcGVjaWFsKHopKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAgICogQ2FzZSB0ID09IDA6CisgICAgICogICAgdCAqIGxvZygxMCkgPT0gMCwgdGhlIHJlc3VsdCBkb2VzIG5vdCBjaGFuZ2UgYW5kIHRoZSBhbmFseXNpcworICAgICAqICAgIGFib3ZlIGFwcGxpZXMuIElmIHYgPCAwLjkwMCBvciB2ID4gMS4xNSwgdGhlIHJlbGF0aXZlIGVycm9yIGlzCisgICAgICogICAgbGVzcyB0aGFuIDEwKiooLWN0eC5wcmVjLTEpLgorICAgICAqIENhc2UgdCAhPSAwOgorICAgICAqICAgICAgeiA6PSBhcHByb3gobG9nKHYpKQorICAgICAqICAgICAgeSA6PSBhcHByb3gobG9nKDEwKSkKKyAgICAgKiAgICAgIHAgOj0gbWF4cHJlYyA9IGN0eC0+cHJlYyArIDIKKyAgICAgKiAgIEFic29sdXRlIGVycm9yczoKKyAgICAgKiAgICAgIDEpIGFicyh6IC0gbG9nKHYpKSA8IDEwKiotcAorICAgICAqICAgICAgMikgYWJzKHkgLSBsb2coMTApKSA8IDEwKiotcAorICAgICAqICAgVGhlIG11bHRpcGxpY2F0aW9uIGlzIGV4YWN0LCBzbzoKKyAgICAgKiAgICAgIDMpIGFicyh0KnkgLSB0KmxvZygxMCkpIDwgdCoxMCoqLXAKKyAgICAgKiAgIFRoZSBzdW0gaXMgZXhhY3QsIHNvOgorICAgICAqICAgICAgNCkgYWJzKCh6ICsgdCp5KSAtIChsb2codikgKyB0KmxvZygxMCkpKSA8IChhYnModCkgKyAxKSAqIDEwKiotcAorICAgICAqICAgQm91bmRzIGZvciBsb2codikgYW5kIGxvZygxMCk6CisgICAgICogICAgICA1KSAtNy8xMCA8IGxvZyh2KSA8IDE3LzEwCisgICAgICogICAgICA2KSAyMy8xMCA8IGxvZygxMCkgPCAyNC8xMAorICAgICAqICAgVXNpbmcgNCksIDUpLCA2KSBhbmQgdCAhPSAwLCB0aGUgcmVsYXRpdmUgZXJyb3IgaXM6CisgICAgICoKKyAgICAgKiAgICAgIDcpIHJlbGVyciA8ICgoYWJzKHQpICsgMSkqMTAqKi1wKSAvIGFicyhsb2codikgKyB0KmxvZygxMCkpCisgICAgICogICAgICAgICAgICAgICAgPCAwLjUgKiAxMCoqKC1wICsgMSkgPSAwLjUgKiAxMCoqKC1jdHgtPnByZWMtMSkKKyAgICAgKi8KKyAgICBtcGRfcWxuMTAoJnYsIG1heHByZWMrMSwgc3RhdHVzKTsKKyAgICBtcGRfcW11bF9zc2l6ZSgmdG1wLCAmdiwgdCwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgbXBkX3FhZGQocmVzdWx0LCAmdG1wLCB6LCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKworCitmaW5pc2g6CisgICAgKnN0YXR1cyB8PSAoTVBEX0luZXhhY3R8TVBEX1JvdW5kZWQpOworICAgIG1wZF9kZWwoJnYpOworICAgIG1wZF9kZWwoJnZ0bXApOworICAgIG1wZF9kZWwoJnRtcCk7Cit9CisKKy8qIGxuKGEpICovCit2b2lkCittcGRfcWxuKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4OworICAgIG1wZF9zc2l6ZV90IGFkamV4cCwgdDsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbihyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNuZWdhdGl2ZShhKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgTVBEX1BPUywgTVBEX0lORik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIE1QRF9ORUcsIE1QRF9JTkYpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXNuZWdhdGl2ZShhKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKF9tcGRfY21wKGEsICZvbmUpID09IDApIHsKKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIE1QRF9QT1MsIDAsIDApOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8qCisgICAgICogQ2hlY2sgaWYgdGhlIHJlc3VsdCB3aWxsIG92ZXJmbG93ICgwIDwgeCwgeCAhPSAxKToKKyAgICAgKiAgIDEpIGxvZzEwKHgpIDwgMCBpZmYgYWRqZXhwKHgpIDwgMAorICAgICAqICAgMikgMCA8IHggL1wgeCA8PSB5ID09PiBhZGpleHAoeCkgPD0gYWRqZXhwKHkpCisgICAgICogICAzKSAwIDwgeCAvXCB4ICE9IDEgPT0+IDIgKiBhYnMobG9nMTAoeCkpIDwgYWJzKGxvZyh4KSkKKyAgICAgKiAgIDQpIGFkamV4cCh4KSA8PSBsb2cxMCh4KSA8IGFkamV4cCh4KSArIDEKKyAgICAgKgorICAgICAqIENhc2UgYWRqZXhwKHgpID49IDA6CisgICAgICogICA1KSAyICogYWRqZXhwKHgpIDwgYWJzKGxvZyh4KSkKKyAgICAgKiAgIENhc2UgYWRqZXhwKHgpID4gMDoKKyAgICAgKiAgICAgNikgYWRqZXhwKDIgKiBhZGpleHAoeCkpIDw9IGFkamV4cChhYnMobG9nKHgpKSkKKyAgICAgKiAgIENhc2UgYWRqZXhwKHgpID09IDA6CisgICAgICogICAgIG1wZF9leHBfZGlnaXRzKHQpLTEgPT0gMCA8PSBlbWF4ICh0aGUgc2hvcnRjdXQgaXMgbm90IHRyaWdnZXJlZCkKKyAgICAgKgorICAgICAqIENhc2UgYWRqZXhwKHgpIDwgMDoKKyAgICAgKiAgIDcpIDIgKiAoLWFkamV4cCh4KSAtIDEpIDwgYWJzKGxvZyh4KSkKKyAgICAgKiAgIENhc2UgYWRqZXhwKHgpIDwgLTE6CisgICAgICogICAgIDgpIGFkamV4cCgyICogKC1hZGpleHAoeCkgLSAxKSkgPD0gYWRqZXhwKGFicyhsb2coeCkpKQorICAgICAqICAgQ2FzZSBhZGpleHAoeCkgPT0gLTE6CisgICAgICogICAgIG1wZF9leHBfZGlnaXRzKHQpLTEgPT0gMCA8PSBlbWF4ICh0aGUgc2hvcnRjdXQgaXMgbm90IHRyaWdnZXJlZCkKKyAgICAgKi8KKyAgICBhZGpleHAgPSBtcGRfYWRqZXhwKGEpOworICAgIHQgPSAoYWRqZXhwIDwgMCkgPyAtYWRqZXhwLTEgOiBhZGpleHA7CisgICAgdCAqPSAyOworICAgIGlmIChtcGRfZXhwX2RpZ2l0cyh0KS0xID4gY3R4LT5lbWF4KSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX092ZXJmbG93fE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkOworICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIChhZGpleHA8MCksIE1QRF9JTkYpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd29ya2N0eCA9ICpjdHg7CisgICAgd29ya2N0eC5yb3VuZCA9IE1QRF9ST1VORF9IQUxGX0VWRU47CisKKyAgICBpZiAoY3R4LT5hbGxjcikgeworICAgICAgICBNUERfTkVXX1NUQVRJQyh0MSwgMCwwLDAsMCk7CisgICAgICAgIE1QRF9ORVdfU1RBVElDKHQyLCAwLDAsMCwwKTsKKyAgICAgICAgTVBEX05FV19TVEFUSUModWxwLCAwLDAsMCwwKTsKKyAgICAgICAgTVBEX05FV19TVEFUSUMoYWEsIDAsMCwwLDApOworICAgICAgICBtcGRfc3NpemVfdCBwcmVjOworCisgICAgICAgIGlmIChyZXN1bHQgPT0gYSkgeworICAgICAgICAgICAgaWYgKCFtcGRfcWNvcHkoJmFhLCBhLCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhID0gJmFhOworICAgICAgICB9CisKKyAgICAgICAgd29ya2N0eC5jbGFtcCA9IDA7CisgICAgICAgIHByZWMgPSBjdHgtPnByZWMgKyAzOworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgd29ya2N0eC5wcmVjID0gcHJlYzsKKyAgICAgICAgICAgIF9tcGRfcWxuKHJlc3VsdCwgYSwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICBfc3NldHRyaXBsZSgmdWxwLCBNUERfUE9TLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LT5leHAgKyByZXN1bHQtPmRpZ2l0cy13b3JrY3R4LnByZWMpOworCisgICAgICAgICAgICB3b3JrY3R4LnByZWMgPSBjdHgtPnByZWM7CisgICAgICAgICAgICBtcGRfcWFkZCgmdDEsIHJlc3VsdCwgJnVscCwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgICAgICAgICBtcGRfcXN1YigmdDIsIHJlc3VsdCwgJnVscCwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgICAgICAgICBpZiAobXBkX2lzc3BlY2lhbChyZXN1bHQpIHx8IG1wZF9pc3plcm9jb2VmZihyZXN1bHQpIHx8CisgICAgICAgICAgICAgICAgbXBkX3FjbXAoJnQxLCAmdDIsIHN0YXR1cykgPT0gMCkgeworICAgICAgICAgICAgICAgIHdvcmtjdHguY2xhbXAgPSBjdHgtPmNsYW1wOworICAgICAgICAgICAgICAgIG1wZF9jaGVja191bmRlcmZsb3cocmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmVjICs9IE1QRF9SRElHSVRTOworICAgICAgICB9CisgICAgICAgIG1wZF9kZWwoJnQxKTsKKyAgICAgICAgbXBkX2RlbCgmdDIpOworICAgICAgICBtcGRfZGVsKCZ1bHApOworICAgICAgICBtcGRfZGVsKCZhYSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBfbXBkX3FsbihyZXN1bHQsIGEsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICBtcGRfY2hlY2tfdW5kZXJmbG93KHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICB9Cit9CisKKy8qCisgKiBJbnRlcm5hbCBsb2cxMCgpIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3QgY2hlY2sgZm9yIHNwZWNpYWxzLCB6ZXJvIG9yIG9uZS4KKyAqIENhc2UgU0tJUF9GSU5BTElaRToKKyAqICAgUmVsYXRpdmUgZXJyb3I6IGFicyhyZXN1bHQgLSBsb2cxMChhKSkgPCAwLjEgKiAxMCoqLXByZWMgKiBhYnMobG9nMTAoYSkpCisgKiBDYXNlIERPX0ZJTkFMSVpFOgorICogICBVbHAgZXJyb3I6IGFicyhyZXN1bHQgLSBsb2cxMChhKSkgPCB1bHAobG9nMTAoYSkpCisgKi8KK2VudW0ge1NLSVBfRklOQUxJWkUsIERPX0ZJTkFMSVpFfTsKK3N0YXRpYyB2b2lkCitfbXBkX3Fsb2cxMChpbnQgYWN0aW9uLCBtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwKKyAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisgICAgTVBEX05FV19TVEFUSUMobG4xMCwwLDAsMCwwKTsKKworICAgIG1wZF9tYXhjb250ZXh0KCZ3b3JrY3R4KTsKKyAgICB3b3JrY3R4LnByZWMgPSBjdHgtPnByZWMgKyAzOworICAgIC8qIHJlbGF0aXZlIGVycm9yOiAwLjEgKiAxMCoqKC1wLTMpLiBUaGUgc3BlY2lmaWMgdW5kZXJmbG93IHNob3J0Y3V0CisgICAgICogaW4gX21wZF9xbG4oKSBkb2VzIG5vdCBjaGFuZ2UgdGhlIGZpbmFsIHJlc3VsdC4gKi8KKyAgICBfbXBkX3FsbihyZXN1bHQsIGEsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgIC8qIHJlbGF0aXZlIGVycm9yOiA1ICogMTAqKigtcC0zKSAqLworICAgIG1wZF9xbG4xMCgmbG4xMCwgd29ya2N0eC5wcmVjLCBzdGF0dXMpOworCisgICAgaWYgKGFjdGlvbiA9PSBET19GSU5BTElaRSkgeworICAgICAgICB3b3JrY3R4ID0gKmN0eDsKKyAgICAgICAgd29ya2N0eC5yb3VuZCA9IE1QRF9ST1VORF9IQUxGX0VWRU47CisgICAgfQorICAgIC8qIFNLSVBfRklOQUxJWkU6IHJlbGF0aXZlIGVycm9yOiA1ICogMTAqKigtcC0zKSAqLworICAgIF9tcGRfcWRpdihOT19JREVBTF9FWFAsIHJlc3VsdCwgcmVzdWx0LCAmbG4xMCwgJndvcmtjdHgsIHN0YXR1cyk7CisKKyAgICBtcGRfZGVsKCZsbjEwKTsKK30KKworLyogbG9nMTAoYSkgKi8KK3ZvaWQKK21wZF9xbG9nMTAobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisgICAgbXBkX3NzaXplX3QgYWRqZXhwLCB0OworCisgICAgd29ya2N0eCA9ICpjdHg7CisgICAgd29ya2N0eC5yb3VuZCA9IE1QRF9ST1VORF9IQUxGX0VWRU47CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW4ocmVzdWx0LCBhLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX2lzbmVnYXRpdmUoYSkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIE1QRF9QT1MsIE1QRF9JTkYpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkpIHsKKyAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBNUERfTkVHLCBNUERfSU5GKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzbmVnYXRpdmUoYSkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfY29lZmZfaXNwb3cxMChhKSkgeworICAgICAgICB1aW50OF90IHNpZ24gPSAwOworICAgICAgICBhZGpleHAgPSBtcGRfYWRqZXhwKGEpOworICAgICAgICBpZiAoYWRqZXhwIDwgMCkgeworICAgICAgICAgICAgc2lnbiA9IDE7CisgICAgICAgICAgICBhZGpleHAgPSAtYWRqZXhwOworICAgICAgICB9CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBzaWduLCBhZGpleHAsIDApOworICAgICAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLyoKKyAgICAgKiBDaGVjayBpZiB0aGUgcmVzdWx0IHdpbGwgb3ZlcmZsb3cgKDAgPCB4LCB4ICE9IDEpOgorICAgICAqICAgMSkgbG9nMTAoeCkgPCAwIGlmZiBhZGpleHAoeCkgPCAwCisgICAgICogICAyKSAwIDwgeCAvXCB4IDw9IHkgPT0+IGFkamV4cCh4KSA8PSBhZGpleHAoeSkKKyAgICAgKiAgIDMpIGFkamV4cCh4KSA8PSBsb2cxMCh4KSA8IGFkamV4cCh4KSArIDEKKyAgICAgKgorICAgICAqIENhc2UgYWRqZXhwKHgpID49IDA6CisgICAgICogICA0KSBhZGpleHAoeCkgPD0gYWJzKGxvZzEwKHgpKQorICAgICAqICAgQ2FzZSBhZGpleHAoeCkgPiAwOgorICAgICAqICAgICA1KSBhZGpleHAoYWRqZXhwKHgpKSA8PSBhZGpleHAoYWJzKGxvZzEwKHgpKSkKKyAgICAgKiAgIENhc2UgYWRqZXhwKHgpID09IDA6CisgICAgICogICAgIG1wZF9leHBfZGlnaXRzKHQpLTEgPT0gMCA8PSBlbWF4ICh0aGUgc2hvcnRjdXQgaXMgbm90IHRyaWdnZXJlZCkKKyAgICAgKgorICAgICAqIENhc2UgYWRqZXhwKHgpIDwgMDoKKyAgICAgKiAgIDYpIC1hZGpleHAoeCkgLSAxIDwgYWJzKGxvZzEwKHgpKQorICAgICAqICAgQ2FzZSBhZGpleHAoeCkgPCAtMToKKyAgICAgKiAgICAgNykgYWRqZXhwKC1hZGpleHAoeCkgLSAxKSA8PSBhZGpleHAoYWJzKGxvZyh4KSkpCisgICAgICogICBDYXNlIGFkamV4cCh4KSA9PSAtMToKKyAgICAgKiAgICAgbXBkX2V4cF9kaWdpdHModCktMSA9PSAwIDw9IGVtYXggKHRoZSBzaG9ydGN1dCBpcyBub3QgdHJpZ2dlcmVkKQorICAgICAqLworICAgIGFkamV4cCA9IG1wZF9hZGpleHAoYSk7CisgICAgdCA9IChhZGpleHAgPCAwKSA/IC1hZGpleHAtMSA6IGFkamV4cDsKKyAgICBpZiAobXBkX2V4cF9kaWdpdHModCktMSA+IGN0eC0+ZW1heCkgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9PdmVyZmxvd3xNUERfSW5leGFjdHxNUERfUm91bmRlZDsKKyAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCAoYWRqZXhwPDApLCBNUERfSU5GKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChjdHgtPmFsbGNyKSB7CisgICAgICAgIE1QRF9ORVdfU1RBVElDKHQxLCAwLDAsMCwwKTsKKyAgICAgICAgTVBEX05FV19TVEFUSUModDIsIDAsMCwwLDApOworICAgICAgICBNUERfTkVXX1NUQVRJQyh1bHAsIDAsMCwwLDApOworICAgICAgICBNUERfTkVXX1NUQVRJQyhhYSwgMCwwLDAsMCk7CisgICAgICAgIG1wZF9zc2l6ZV90IHByZWM7CisKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBhKSB7CisgICAgICAgICAgICBpZiAoIW1wZF9xY29weSgmYWEsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGEgPSAmYWE7CisgICAgICAgIH0KKworICAgICAgICB3b3JrY3R4LmNsYW1wID0gMDsKKyAgICAgICAgcHJlYyA9IGN0eC0+cHJlYyArIDM7CisgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICB3b3JrY3R4LnByZWMgPSBwcmVjOworICAgICAgICAgICAgX21wZF9xbG9nMTAoU0tJUF9GSU5BTElaRSwgcmVzdWx0LCBhLCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgIF9zc2V0dHJpcGxlKCZ1bHAsIE1QRF9QT1MsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQtPmV4cCArIHJlc3VsdC0+ZGlnaXRzLXdvcmtjdHgucHJlYyk7CisKKyAgICAgICAgICAgIHdvcmtjdHgucHJlYyA9IGN0eC0+cHJlYzsKKyAgICAgICAgICAgIG1wZF9xYWRkKCZ0MSwgcmVzdWx0LCAmdWxwLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgICAgIG1wZF9xc3ViKCZ0MiwgcmVzdWx0LCAmdWxwLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgICAgIGlmIChtcGRfaXNzcGVjaWFsKHJlc3VsdCkgfHwgbXBkX2lzemVyb2NvZWZmKHJlc3VsdCkgfHwKKyAgICAgICAgICAgICAgICBtcGRfcWNtcCgmdDEsICZ0Miwgc3RhdHVzKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgd29ya2N0eC5jbGFtcCA9IGN0eC0+Y2xhbXA7CisgICAgICAgICAgICAgICAgbXBkX2NoZWNrX3VuZGVyZmxvdyhyZXN1bHQsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByZWMgKz0gTVBEX1JESUdJVFM7CisgICAgICAgIH0KKyAgICAgICAgbXBkX2RlbCgmdDEpOworICAgICAgICBtcGRfZGVsKCZ0Mik7CisgICAgICAgIG1wZF9kZWwoJnVscCk7CisgICAgICAgIG1wZF9kZWwoJmFhKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9tcGRfcWxvZzEwKERPX0ZJTkFMSVpFLCByZXN1bHQsIGEsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICBtcGRfY2hlY2tfdW5kZXJmbG93KHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgfQorfQorCisvKgorICogTWF4aW11bSBvZiB0aGUgdHdvIG9wZXJhbmRzLiBBdHRlbnRpb246IElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIGFuZCB0aGUKKyAqIG90aGVyIGlzIG51bWVyaWMsIHRoZSBudW1lcmljIG9wZXJhbmQgaXMgcmV0dXJuZWQuIFRoaXMgbWF5IG5vdCBiZSB3aGF0IG9uZQorICogZXhwZWN0cy4KKyAqLwordm9pZAorbXBkX3FtYXgobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGludCBjOworCisgICAgaWYgKG1wZF9pc3FuYW4oYSkgJiYgIW1wZF9pc25hbihiKSkgeworICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBiLCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIGlmIChtcGRfaXNxbmFuKGIpICYmICFtcGRfaXNuYW4oYSkpIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGMgPSBfbXBkX2NtcChhLCBiKTsKKyAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgYyA9IF9tcGRfY21wX251bWVxdWFsKGEsIGIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGMgPCAwKSB7CisgICAgICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBiLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qCisgKiBNYXhpbXVtIG1hZ25pdHVkZTogU2FtZSBhcyBtcGRfbWF4KCksIGJ1dCBjb21wYXJlcyB0aGUgb3BlcmFuZHMgd2l0aCB0aGVpcgorICogc2lnbiBpZ25vcmVkLgorICovCit2b2lkCittcGRfcW1heF9tYWcobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpbnQgYzsKKworICAgIGlmIChtcGRfaXNxbmFuKGEpICYmICFtcGRfaXNuYW4oYikpIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYiwgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSBpZiAobXBkX2lzcW5hbihiKSAmJiAhbXBkX2lzbmFuKGEpKSB7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgaWYgKG1wZF9xY2hlY2tfbmFucyhyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBjID0gX21wZF9jbXBfYWJzKGEsIGIpOworICAgICAgICBpZiAoYyA9PSAwKSB7CisgICAgICAgICAgICBjID0gX21wZF9jbXBfbnVtZXF1YWwoYSwgYik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYyA8IDApIHsKKyAgICAgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGIsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgICAgICB9CisgICAgfQorCisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworLyoKKyAqIE1pbmltdW0gb2YgdGhlIHR3byBvcGVyYW5kcy4gQXR0ZW50aW9uOiBJZiBvbmUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTiBhbmQgdGhlCisgKiBvdGhlciBpcyBudW1lcmljLCB0aGUgbnVtZXJpYyBvcGVyYW5kIGlzIHJldHVybmVkLiBUaGlzIG1heSBub3QgYmUgd2hhdCBvbmUKKyAqIGV4cGVjdHMuCisgKi8KK3ZvaWQKK21wZF9xbWluKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpbnQgYzsKKworICAgIGlmIChtcGRfaXNxbmFuKGEpICYmICFtcGRfaXNuYW4oYikpIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYiwgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSBpZiAobXBkX2lzcW5hbihiKSAmJiAhbXBkX2lzbmFuKGEpKSB7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgaWYgKG1wZF9xY2hlY2tfbmFucyhyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBjID0gX21wZF9jbXAoYSwgYik7CisgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgIGMgPSBfbXBkX2NtcF9udW1lcXVhbChhLCBiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjIDwgMCkgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGIsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisvKgorICogTWluaW11bSBtYWduaXR1ZGU6IFNhbWUgYXMgbXBkX21pbigpLCBidXQgY29tcGFyZXMgdGhlIG9wZXJhbmRzIHdpdGggdGhlaXIKKyAqIHNpZ24gaWdub3JlZC4KKyAqLwordm9pZAorbXBkX3FtaW5fbWFnKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaW50IGM7CisKKyAgICBpZiAobXBkX2lzcW5hbihhKSAmJiAhbXBkX2lzbmFuKGIpKSB7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGIsIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgaWYgKG1wZF9pc3FuYW4oYikgJiYgIW1wZF9pc25hbihhKSkgeworICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIGlmIChtcGRfcWNoZWNrX25hbnMocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYyA9IF9tcGRfY21wX2FicyhhLCBiKTsKKyAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgYyA9IF9tcGRfY21wX251bWVxdWFsKGEsIGIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGMgPCAwKSB7CisgICAgICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYiwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIE1pbmltdW0gc3BhY2UgbmVlZGVkIGZvciB0aGUgcmVzdWx0IGFycmF5IGluIF9rYXJhdHN1YmFfcmVjKCkuICovCitzdGF0aWMgaW5saW5lIG1wZF9zaXplX3QKK19rbXVsX3Jlc3VsdHNpemUobXBkX3NpemVfdCBsYSwgbXBkX3NpemVfdCBsYikKK3sKKyAgICBtcGRfc2l6ZV90IG4sIG07CisKKyAgICBuID0gYWRkX3NpemVfdChsYSwgbGIpOworICAgIG4gPSBhZGRfc2l6ZV90KG4sIDEpOworCisgICAgbSA9IChsYSsxKS8yICsgMTsKKyAgICBtID0gbXVsX3NpemVfdChtLCAzKTsKKworICAgIHJldHVybiAobSA+IG4pID8gbSA6IG47Cit9CisKKy8qIFdvcmsgc3BhY2UgbmVlZGVkIGluIF9rYXJhdHN1YmFfcmVjKCkuIGxpbSA+PSA0ICovCitzdGF0aWMgaW5saW5lIG1wZF9zaXplX3QKK19rbXVsX3dvcmtzaXplKG1wZF9zaXplX3QgbiwgbXBkX3NpemVfdCBsaW0pCit7CisgICAgbXBkX3NpemVfdCBtOworCisgICAgaWYgKG4gPD0gbGltKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG0gPSAobisxKS8yICsgMTsKKworICAgIHJldHVybiBhZGRfc2l6ZV90KG11bF9zaXplX3QobSwgMiksIF9rbXVsX3dvcmtzaXplKG0sIGxpbSkpOworfQorCisKKyNkZWZpbmUgTVBEX0tBUkFUU1VCQV9CQVNFQ0FTRSAxNiAgLyogbXVzdCBiZSA+PSA0ICovCisKKy8qCisgKiBBZGQgdGhlIHByb2R1Y3Qgb2YgYSBhbmQgYiB0byBjLgorICogYyBtdXN0IGJlIF9rbXVsX3Jlc3VsdHNpemUobGEsIGxiKSBpbiBzaXplLgorICogdyBpcyB1c2VkIGFzIGEgd29yayBhcnJheSBhbmQgbXVzdCBiZSBfa211bF93b3Jrc2l6ZShhLCBsaW0pIGluIHNpemUuCisgKiBSb21hbiBFLiBNYWVkZXIsIFN0b3JhZ2UgQWxsb2NhdGlvbiBmb3IgdGhlIEthcmF0c3ViYSBJbnRlZ2VyIE11bHRpcGxpY2F0aW9uCisgKiBBbGdvcml0aG0uIEluICJEZXNpZ24gYW5kIGltcGxlbWVudGF0aW9uIG9mIHN5bWJvbGljIGNvbXB1dGF0aW9uIHN5c3RlbXMiLAorICogU3ByaW5nZXIsIDE5OTMsIElTQk4gMzU0MDU3MjM1WCwgOTc4MzU0MDU3MjM1MC4KKyAqLworc3RhdGljIHZvaWQKK19rYXJhdHN1YmFfcmVjKG1wZF91aW50X3QgKmMsIGNvbnN0IG1wZF91aW50X3QgKmEsIGNvbnN0IG1wZF91aW50X3QgKmIsCisgICAgICAgICAgICAgICBtcGRfdWludF90ICp3LCBtcGRfc2l6ZV90IGxhLCBtcGRfc2l6ZV90IGxiKQoreworICAgIG1wZF9zaXplX3QgbSwgbHQ7CisKKyAgICBhc3NlcnQobGEgPj0gbGIgJiYgbGIgPiAwKTsKKyAgICBhc3NlcnQobGEgPD0gTVBEX0tBUkFUU1VCQV9CQVNFQ0FTRSB8fCB3ICE9IE5VTEwpOworCisgICAgaWYgKGxhIDw9IE1QRF9LQVJBVFNVQkFfQkFTRUNBU0UpIHsKKyAgICAgICAgX21wZF9iYXNlbXVsKGMsIGEsIGIsIGxhLCBsYik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtID0gKGxhKzEpLzI7ICAvKiBjZWlsKGxhLzIpICovCisKKyAgICAvKiBsYiA8PSBtIDwgbGEgKi8KKyAgICBpZiAobGIgPD0gbSkgeworCisgICAgICAgIC8qIGxiIGNhbiBub3cgYmUgbGFyZ2VyIHRoYW4gbGEtbSAqLworICAgICAgICBpZiAobGIgPiBsYS1tKSB7CisgICAgICAgICAgICBsdCA9IGxiICsgbGIgKyAxOyAgICAgICAvKiBzcGFjZSBuZWVkZWQgZm9yIHJlc3VsdCBhcnJheSAqLworICAgICAgICAgICAgbXBkX3VpbnRfemVybyh3LCBsdCk7ICAgLyogY2xlYXIgcmVzdWx0IGFycmF5ICovCisgICAgICAgICAgICBfa2FyYXRzdWJhX3JlYyh3LCBiLCBhK20sIHcrbHQsIGxiLCBsYS1tKTsgLyogYiphaCAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbHQgPSAobGEtbSkgKyAobGEtbSkgKyAxOyAgLyogc3BhY2UgbmVlZGVkIGZvciByZXN1bHQgYXJyYXkgKi8KKyAgICAgICAgICAgIG1wZF91aW50X3plcm8odywgbHQpOyAgICAgIC8qIGNsZWFyIHJlc3VsdCBhcnJheSAqLworICAgICAgICAgICAgX2thcmF0c3ViYV9yZWModywgYSttLCBiLCB3K2x0LCBsYS1tLCBsYik7IC8qIGFoKmIgKi8KKyAgICAgICAgfQorICAgICAgICBfbXBkX2Jhc2VhZGR0byhjK20sIHcsIChsYS1tKStsYik7ICAgICAgLyogYWRkIGFoKmIqQioqbSAqLworCisgICAgICAgIGx0ID0gbSArIG0gKyAxOyAgICAgICAgIC8qIHNwYWNlIG5lZWRlZCBmb3IgdGhlIHJlc3VsdCBhcnJheSAqLworICAgICAgICBtcGRfdWludF96ZXJvKHcsIGx0KTsgICAvKiBjbGVhciByZXN1bHQgYXJyYXkgKi8KKyAgICAgICAgX2thcmF0c3ViYV9yZWModywgYSwgYiwgdytsdCwgbSwgbGIpOyAgLyogYWwqYiAqLworICAgICAgICBfbXBkX2Jhc2VhZGR0byhjLCB3LCBtK2xiKTsgICAgLyogYWRkIGFsKmIgKi8KKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogbGEgPj0gbGIgPiBtICovCisgICAgbWVtY3B5KHcsIGEsIG0gKiBzaXplb2YgKncpOworICAgIHdbbV0gPSAwOworICAgIF9tcGRfYmFzZWFkZHRvKHcsIGErbSwgbGEtbSk7CisKKyAgICBtZW1jcHkodysobSsxKSwgYiwgbSAqIHNpemVvZiAqdyk7CisgICAgd1ttKzErbV0gPSAwOworICAgIF9tcGRfYmFzZWFkZHRvKHcrKG0rMSksIGIrbSwgbGItbSk7CisKKyAgICBfa2FyYXRzdWJhX3JlYyhjK20sIHcsIHcrKG0rMSksIHcrMioobSsxKSwgbSsxLCBtKzEpOworCisgICAgbHQgPSAobGEtbSkgKyAobGEtbSkgKyAxOworICAgIG1wZF91aW50X3plcm8odywgbHQpOworCisgICAgX2thcmF0c3ViYV9yZWModywgYSttLCBiK20sIHcrbHQsIGxhLW0sIGxiLW0pOworCisgICAgX21wZF9iYXNlYWRkdG8oYysyKm0sIHcsIChsYS1tKSArIChsYi1tKSk7CisgICAgX21wZF9iYXNlc3ViZnJvbShjK20sIHcsIChsYS1tKSArIChsYi1tKSk7CisKKyAgICBsdCA9IG0gKyBtICsgMTsKKyAgICBtcGRfdWludF96ZXJvKHcsIGx0KTsKKworICAgIF9rYXJhdHN1YmFfcmVjKHcsIGEsIGIsIHcrbHQsIG0sIG0pOworICAgIF9tcGRfYmFzZWFkZHRvKGMsIHcsIG0rbSk7CisgICAgX21wZF9iYXNlc3ViZnJvbShjK20sIHcsIG0rbSk7CisKKyAgICByZXR1cm47Cit9CisKKy8qCisgKiBNdWx0aXBseSB1IGFuZCB2LCB1c2luZyBLYXJhdHN1YmEgbXVsdGlwbGljYXRpb24uIFJldHVybnMgYSBwb2ludGVyCisgKiB0byB0aGUgcmVzdWx0IG9yIE5VTEwgaW4gY2FzZSBvZiBmYWlsdXJlIChtYWxsb2MgZXJyb3IpLgorICogQ29uZGl0aW9uczogdWxlbiA+PSB2bGVuLCB1bGVuID49IDQKKyAqLworc3RhdGljIG1wZF91aW50X3QgKgorX21wZF9rbXVsKGNvbnN0IG1wZF91aW50X3QgKnUsIGNvbnN0IG1wZF91aW50X3QgKnYsCisgICAgICAgICAgbXBkX3NpemVfdCB1bGVuLCBtcGRfc2l6ZV90IHZsZW4sCisgICAgICAgICAgbXBkX3NpemVfdCAqcnNpemUpCit7CisgICAgbXBkX3VpbnRfdCAqcmVzdWx0ID0gTlVMTCwgKncgPSBOVUxMOworICAgIG1wZF9zaXplX3QgbTsKKworICAgIGFzc2VydCh1bGVuID49IDQpOworICAgIGFzc2VydCh1bGVuID49IHZsZW4pOworCisgICAgKnJzaXplID0gX2ttdWxfcmVzdWx0c2l6ZSh1bGVuLCB2bGVuKTsKKyAgICBpZiAoKHJlc3VsdCA9IG1wZF9jYWxsb2MoKnJzaXplLCBzaXplb2YgKnJlc3VsdCkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbSA9IF9rbXVsX3dvcmtzaXplKHVsZW4sIE1QRF9LQVJBVFNVQkFfQkFTRUNBU0UpOworICAgIGlmIChtICYmICgodyA9IG1wZF9jYWxsb2MobSwgc2l6ZW9mICp3KSkgPT0gTlVMTCkpIHsKKyAgICAgICAgbXBkX2ZyZWUocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgX2thcmF0c3ViYV9yZWMocmVzdWx0LCB1LCB2LCB3LCB1bGVuLCB2bGVuKTsKKworCisgICAgaWYgKHcpIG1wZF9mcmVlKHcpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworLyoKKyAqIERldGVybWluZSB0aGUgbWluaW11bSBsZW5ndGggZm9yIHRoZSBudW1iZXIgdGhlb3JldGljIHRyYW5zZm9ybS4gVmFsaWQKKyAqIHRyYW5zZm9ybSBsZW5ndGhzIGFyZSAyKipuIG9yIDMqMioqbiwgd2hlcmUgMioqbiA8PSBNUERfTUFYVFJBTlNGT1JNXzJOLgorICogVGhlIGZ1bmN0aW9uIGZpbmRzIHRoZSBzaG9ydGVzdCBsZW5ndGggbSBzdWNoIHRoYXQgcnNpemUgPD0gbS4KKyAqLworc3RhdGljIGlubGluZSBtcGRfc2l6ZV90CitfbXBkX2dldF90cmFuc2Zvcm1fbGVuKG1wZF9zaXplX3QgcnNpemUpCit7CisgICAgbXBkX3NpemVfdCBsb2cycnNpemU7CisgICAgbXBkX3NpemVfdCB4LCBzdGVwOworCisgICAgYXNzZXJ0KHJzaXplID49IDQpOworICAgIGxvZzJyc2l6ZSA9IG1wZF9ic3IocnNpemUpOworCisgICAgaWYgKHJzaXplIDw9IDEwMjQpIHsKKyAgICAgICAgLyogMioqbiBpcyBmYXN0ZXIgaW4gdGhpcyByYW5nZS4gKi8KKyAgICAgICAgeCA9ICgobXBkX3NpemVfdCkxKTw8bG9nMnJzaXplOworICAgICAgICByZXR1cm4gKHJzaXplID09IHgpID8geCA6IHg8PDE7CisgICAgfQorICAgIGVsc2UgaWYgKHJzaXplIDw9IE1QRF9NQVhUUkFOU0ZPUk1fMk4pIHsKKyAgICAgICAgeCA9ICgobXBkX3NpemVfdCkxKTw8bG9nMnJzaXplOworICAgICAgICBpZiAocnNpemUgPT0geCkgcmV0dXJuIHg7CisgICAgICAgIHN0ZXAgPSB4Pj4xOworICAgICAgICB4ICs9IHN0ZXA7CisgICAgICAgIHJldHVybiAocnNpemUgPD0geCkgPyB4IDogeCArIHN0ZXA7CisgICAgfQorICAgIGVsc2UgaWYgKHJzaXplIDw9IE1QRF9NQVhUUkFOU0ZPUk1fMk4rTVBEX01BWFRSQU5TRk9STV8yTi8yKSB7CisgICAgICAgIHJldHVybiBNUERfTUFYVFJBTlNGT1JNXzJOK01QRF9NQVhUUkFOU0ZPUk1fMk4vMjsKKyAgICB9CisgICAgZWxzZSBpZiAocnNpemUgPD0gMypNUERfTUFYVFJBTlNGT1JNXzJOKSB7CisgICAgICAgIHJldHVybiAzKk1QRF9NQVhUUkFOU0ZPUk1fMk47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gTVBEX1NJWkVfTUFYOworICAgIH0KK30KKworI2lmZGVmIFBQUk8KKyNpZm5kZWYgX01TQ19WRVIKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgc2hvcnQKK19tcGRfZ2V0X2NvbnRyb2w4Nyh2b2lkKQoreworICAgIHVuc2lnbmVkIHNob3J0IGN3OworCisgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJmbnN0Y3cgJTAiIDogIj1tIiAoY3cpKTsKKyAgICByZXR1cm4gY3c7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9zZXRfY29udHJvbDg3KHVuc2lnbmVkIHNob3J0IGN3KQoreworICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgiZmxkY3cgJTAiIDogOiAibSIgKGN3KSk7Cit9CisjZW5kaWYKKworc3RhdGljIHVuc2lnbmVkIGludAorbXBkX3NldF9mZW52KHZvaWQpCit7CisgICAgdW5zaWduZWQgaW50IGN3OworI2lmZGVmIF9NU0NfVkVSCisgICAgdW5zaWduZWQgaW50IGZsYWdzID0KKyAgICAgICAgX0VNX0lOVkFMSUR8X0VNX0RFTk9STUFMfF9FTV9aRVJPRElWSURFfF9FTV9PVkVSRkxPV3wKKyAgICAgICAgX0VNX1VOREVSRkxPV3xfRU1fSU5FWEFDVHxfUkNfQ0hPUHxfUENfNjQ7CisgICAgdW5zaWduZWQgaW50IG1hc2sgPSBfTUNXX0VNfF9NQ1dfUkN8X01DV19QQzsKKyAgICB1bnNpZ25lZCBpbnQgZHVtbXk7CisKKyAgICBfX2NvbnRyb2w4N18yKDAsIDAsICZjdywgTlVMTCk7CisgICAgX19jb250cm9sODdfMihmbGFncywgbWFzaywgJmR1bW15LCBOVUxMKTsKKyNlbHNlCisgICAgY3cgPSBfbXBkX2dldF9jb250cm9sODcoKTsKKyAgICBfbXBkX3NldF9jb250cm9sODcoY3d8MHhGM0YpOworI2VuZGlmCisgICAgcmV0dXJuIGN3OworfQorCitzdGF0aWMgdm9pZAorbXBkX3Jlc3RvcmVfZmVudih1bnNpZ25lZCBpbnQgY3cpCit7CisjaWZkZWYgX01TQ19WRVIKKyAgICB1bnNpZ25lZCBpbnQgbWFzayA9IF9NQ1dfRU18X01DV19SQ3xfTUNXX1BDOworICAgIHVuc2lnbmVkIGludCBkdW1teTsKKworICAgIF9fY29udHJvbDg3XzIoY3csIG1hc2ssICZkdW1teSwgTlVMTCk7CisjZWxzZQorICAgIF9tcGRfc2V0X2NvbnRyb2w4NygodW5zaWduZWQgc2hvcnQpY3cpOworI2VuZGlmCit9CisjZW5kaWYgLyogUFBSTyAqLworCisvKgorICogTXVsdGlwbHkgdSBhbmQgdiwgdXNpbmcgdGhlIGZhc3QgbnVtYmVyIHRoZW9yZXRpYyB0cmFuc2Zvcm0uIFJldHVybnMKKyAqIGEgcG9pbnRlciB0byB0aGUgcmVzdWx0IG9yIE5VTEwgaW4gY2FzZSBvZiBmYWlsdXJlIChtYWxsb2MgZXJyb3IpLgorICovCitzdGF0aWMgbXBkX3VpbnRfdCAqCitfbXBkX2ZudG11bChjb25zdCBtcGRfdWludF90ICp1LCBjb25zdCBtcGRfdWludF90ICp2LAorICAgICAgICAgICAgbXBkX3NpemVfdCB1bGVuLCBtcGRfc2l6ZV90IHZsZW4sCisgICAgICAgICAgICBtcGRfc2l6ZV90ICpyc2l6ZSkKK3sKKyAgICBtcGRfdWludF90ICpjMSA9IE5VTEwsICpjMiA9IE5VTEwsICpjMyA9IE5VTEwsICp2dG1wID0gTlVMTDsKKyAgICBtcGRfc2l6ZV90IG47CisKKyNpZmRlZiBQUFJPCisgICAgdW5zaWduZWQgaW50IGN3OworICAgIGN3ID0gbXBkX3NldF9mZW52KCk7CisjZW5kaWYKKworICAgICpyc2l6ZSA9IGFkZF9zaXplX3QodWxlbiwgdmxlbik7CisgICAgaWYgKChuID0gX21wZF9nZXRfdHJhbnNmb3JtX2xlbigqcnNpemUpKSA9PSBNUERfU0laRV9NQVgpIHsKKyAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgfQorCisgICAgaWYgKChjMSA9IG1wZF9jYWxsb2Mobiwgc2l6ZW9mICpjMSkpID09IE5VTEwpIHsKKyAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgfQorICAgIGlmICgoYzIgPSBtcGRfY2FsbG9jKG4sIHNpemVvZiAqYzIpKSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgIH0KKyAgICBpZiAoKGMzID0gbXBkX2NhbGxvYyhuLCBzaXplb2YgKmMzKSkgPT0gTlVMTCkgeworICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICB9CisKKyAgICBtZW1jcHkoYzEsIHUsIHVsZW4gKiAoc2l6ZW9mICpjMSkpOworICAgIG1lbWNweShjMiwgdSwgdWxlbiAqIChzaXplb2YgKmMyKSk7CisgICAgbWVtY3B5KGMzLCB1LCB1bGVuICogKHNpemVvZiAqYzMpKTsKKworICAgIGlmICh1ID09IHYpIHsKKyAgICAgICAgaWYgKCFmbnRfYXV0b2NvbnZvbHV0ZShjMSwgbiwgUDEpIHx8CisgICAgICAgICAgICAhZm50X2F1dG9jb252b2x1dGUoYzIsIG4sIFAyKSB8fAorICAgICAgICAgICAgIWZudF9hdXRvY29udm9sdXRlKGMzLCBuLCBQMykpIHsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoKHZ0bXAgPSBtcGRfY2FsbG9jKG4sIHNpemVvZiAqdnRtcCkpID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisKKyAgICAgICAgbWVtY3B5KHZ0bXAsIHYsIHZsZW4gKiAoc2l6ZW9mICp2dG1wKSk7CisgICAgICAgIGlmICghZm50X2NvbnZvbHV0ZShjMSwgdnRtcCwgbiwgUDEpKSB7CisgICAgICAgICAgICBtcGRfZnJlZSh2dG1wKTsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisKKyAgICAgICAgbWVtY3B5KHZ0bXAsIHYsIHZsZW4gKiAoc2l6ZW9mICp2dG1wKSk7CisgICAgICAgIG1wZF91aW50X3plcm8odnRtcCt2bGVuLCBuLXZsZW4pOworICAgICAgICBpZiAoIWZudF9jb252b2x1dGUoYzIsIHZ0bXAsIG4sIFAyKSkgeworICAgICAgICAgICAgbXBkX2ZyZWUodnRtcCk7CisgICAgICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIG1lbWNweSh2dG1wLCB2LCB2bGVuICogKHNpemVvZiAqdnRtcCkpOworICAgICAgICBtcGRfdWludF96ZXJvKHZ0bXArdmxlbiwgbi12bGVuKTsKKyAgICAgICAgaWYgKCFmbnRfY29udm9sdXRlKGMzLCB2dG1wLCBuLCBQMykpIHsKKyAgICAgICAgICAgIG1wZF9mcmVlKHZ0bXApOworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBtcGRfZnJlZSh2dG1wKTsKKyAgICB9CisKKyAgICBjcnQzKGMxLCBjMiwgYzMsICpyc2l6ZSk7CisKK291dDoKKyNpZmRlZiBQUFJPCisgICAgbXBkX3Jlc3RvcmVfZmVudihjdyk7CisjZW5kaWYKKyAgICBpZiAoYzIpIG1wZF9mcmVlKGMyKTsKKyAgICBpZiAoYzMpIG1wZF9mcmVlKGMzKTsKKyAgICByZXR1cm4gYzE7CisKK21hbGxvY19lcnJvcjoKKyAgICBpZiAoYzEpIG1wZF9mcmVlKGMxKTsKKyAgICBjMSA9IE5VTEw7CisgICAgZ290byBvdXQ7Cit9CisKKworLyoKKyAqIEthcmF0c3ViYSBtdWx0aXBsaWNhdGlvbiB3aXRoIEZOVC9iYXNlbXVsIGFzIHRoZSBiYXNlIGNhc2UuCisgKi8KK3N0YXRpYyBpbnQKK19rYXJhdHN1YmFfcmVjX2ZudChtcGRfdWludF90ICpjLCBjb25zdCBtcGRfdWludF90ICphLCBjb25zdCBtcGRfdWludF90ICpiLAorICAgICAgICAgICAgICAgICAgIG1wZF91aW50X3QgKncsIG1wZF9zaXplX3QgbGEsIG1wZF9zaXplX3QgbGIpCit7CisgICAgbXBkX3NpemVfdCBtLCBsdDsKKworICAgIGFzc2VydChsYSA+PSBsYiAmJiBsYiA+IDApOworICAgIGFzc2VydChsYSA8PSAzKihNUERfTUFYVFJBTlNGT1JNXzJOLzIpIHx8IHcgIT0gTlVMTCk7CisKKyAgICBpZiAobGEgPD0gMyooTVBEX01BWFRSQU5TRk9STV8yTi8yKSkgeworCisgICAgICAgIGlmIChsYiA8PSAxOTIpIHsKKyAgICAgICAgICAgIF9tcGRfYmFzZW11bChjLCBiLCBhLCBsYiwgbGEpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3VpbnRfdCAqcmVzdWx0OworICAgICAgICAgICAgbXBkX3NpemVfdCBkdW1teTsKKworICAgICAgICAgICAgaWYgKChyZXN1bHQgPSBfbXBkX2ZudG11bChhLCBiLCBsYSwgbGIsICZkdW1teSkpID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1lbWNweShjLCByZXN1bHQsIChsYStsYikgKiAoc2l6ZW9mICpyZXN1bHQpKTsKKyAgICAgICAgICAgIG1wZF9mcmVlKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgbSA9IChsYSsxKS8yOyAgLyogY2VpbChsYS8yKSAqLworCisgICAgLyogbGIgPD0gbSA8IGxhICovCisgICAgaWYgKGxiIDw9IG0pIHsKKworICAgICAgICAvKiBsYiBjYW4gbm93IGJlIGxhcmdlciB0aGFuIGxhLW0gKi8KKyAgICAgICAgaWYgKGxiID4gbGEtbSkgeworICAgICAgICAgICAgbHQgPSBsYiArIGxiICsgMTsgICAgICAgLyogc3BhY2UgbmVlZGVkIGZvciByZXN1bHQgYXJyYXkgKi8KKyAgICAgICAgICAgIG1wZF91aW50X3plcm8odywgbHQpOyAgIC8qIGNsZWFyIHJlc3VsdCBhcnJheSAqLworICAgICAgICAgICAgaWYgKCFfa2FyYXRzdWJhX3JlY19mbnQodywgYiwgYSttLCB3K2x0LCBsYiwgbGEtbSkpIHsgLyogYiphaCAqLworICAgICAgICAgICAgICAgIHJldHVybiAwOyAvKiBHQ09WX1VOTElLRUxZICovCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBsdCA9IChsYS1tKSArIChsYS1tKSArIDE7ICAvKiBzcGFjZSBuZWVkZWQgZm9yIHJlc3VsdCBhcnJheSAqLworICAgICAgICAgICAgbXBkX3VpbnRfemVybyh3LCBsdCk7ICAgICAgLyogY2xlYXIgcmVzdWx0IGFycmF5ICovCisgICAgICAgICAgICBpZiAoIV9rYXJhdHN1YmFfcmVjX2ZudCh3LCBhK20sIGIsIHcrbHQsIGxhLW0sIGxiKSkgeyAvKiBhaCpiICovCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBfbXBkX2Jhc2VhZGR0byhjK20sIHcsIChsYS1tKStsYik7IC8qIGFkZCBhaCpiKkIqKm0gKi8KKworICAgICAgICBsdCA9IG0gKyBtICsgMTsgICAgICAgICAvKiBzcGFjZSBuZWVkZWQgZm9yIHRoZSByZXN1bHQgYXJyYXkgKi8KKyAgICAgICAgbXBkX3VpbnRfemVybyh3LCBsdCk7ICAgLyogY2xlYXIgcmVzdWx0IGFycmF5ICovCisgICAgICAgIGlmICghX2thcmF0c3ViYV9yZWNfZm50KHcsIGEsIGIsIHcrbHQsIG0sIGxiKSkgeyAgLyogYWwqYiAqLworICAgICAgICAgICAgcmV0dXJuIDA7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICAgICAgfQorICAgICAgICBfbXBkX2Jhc2VhZGR0byhjLCB3LCBtK2xiKTsgICAgICAgLyogYWRkIGFsKmIgKi8KKworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICAvKiBsYSA+PSBsYiA+IG0gKi8KKyAgICBtZW1jcHkodywgYSwgbSAqIHNpemVvZiAqdyk7CisgICAgd1ttXSA9IDA7CisgICAgX21wZF9iYXNlYWRkdG8odywgYSttLCBsYS1tKTsKKworICAgIG1lbWNweSh3KyhtKzEpLCBiLCBtICogc2l6ZW9mICp3KTsKKyAgICB3W20rMSttXSA9IDA7CisgICAgX21wZF9iYXNlYWRkdG8odysobSsxKSwgYittLCBsYi1tKTsKKworICAgIGlmICghX2thcmF0c3ViYV9yZWNfZm50KGMrbSwgdywgdysobSsxKSwgdysyKihtKzEpLCBtKzEsIG0rMSkpIHsKKyAgICAgICAgcmV0dXJuIDA7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICB9CisKKyAgICBsdCA9IChsYS1tKSArIChsYS1tKSArIDE7CisgICAgbXBkX3VpbnRfemVybyh3LCBsdCk7CisKKyAgICBpZiAoIV9rYXJhdHN1YmFfcmVjX2ZudCh3LCBhK20sIGIrbSwgdytsdCwgbGEtbSwgbGItbSkpIHsKKyAgICAgICAgcmV0dXJuIDA7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICB9CisKKyAgICBfbXBkX2Jhc2VhZGR0byhjKzIqbSwgdywgKGxhLW0pICsgKGxiLW0pKTsKKyAgICBfbXBkX2Jhc2VzdWJmcm9tKGMrbSwgdywgKGxhLW0pICsgKGxiLW0pKTsKKworICAgIGx0ID0gbSArIG0gKyAxOworICAgIG1wZF91aW50X3plcm8odywgbHQpOworCisgICAgaWYgKCFfa2FyYXRzdWJhX3JlY19mbnQodywgYSwgYiwgdytsdCwgbSwgbSkpIHsKKyAgICAgICAgcmV0dXJuIDA7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICB9CisgICAgX21wZF9iYXNlYWRkdG8oYywgdywgbSttKTsKKyAgICBfbXBkX2Jhc2VzdWJmcm9tKGMrbSwgdywgbSttKTsKKworICAgIHJldHVybiAxOworfQorCisvKgorICogTXVsdGlwbHkgdSBhbmQgdiwgdXNpbmcgS2FyYXRzdWJhIG11bHRpcGxpY2F0aW9uIHdpdGggdGhlIEZOVCBhcyB0aGUKKyAqIGJhc2UgY2FzZS4gUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHJlc3VsdCBvciBOVUxMIGluIGNhc2Ugb2YgZmFpbHVyZQorICogKG1hbGxvYyBlcnJvcikuIENvbmRpdGlvbnM6IHVsZW4gPj0gdmxlbiwgdWxlbiA+PSA0LgorICovCitzdGF0aWMgbXBkX3VpbnRfdCAqCitfbXBkX2ttdWxfZm50KGNvbnN0IG1wZF91aW50X3QgKnUsIGNvbnN0IG1wZF91aW50X3QgKnYsCisgICAgICAgICAgICAgIG1wZF9zaXplX3QgdWxlbiwgbXBkX3NpemVfdCB2bGVuLAorICAgICAgICAgICAgICBtcGRfc2l6ZV90ICpyc2l6ZSkKK3sKKyAgICBtcGRfdWludF90ICpyZXN1bHQgPSBOVUxMLCAqdyA9IE5VTEw7CisgICAgbXBkX3NpemVfdCBtOworCisgICAgYXNzZXJ0KHVsZW4gPj0gNCk7CisgICAgYXNzZXJ0KHVsZW4gPj0gdmxlbik7CisKKyAgICAqcnNpemUgPSBfa211bF9yZXN1bHRzaXplKHVsZW4sIHZsZW4pOworICAgIGlmICgocmVzdWx0ID0gbXBkX2NhbGxvYygqcnNpemUsIHNpemVvZiAqcmVzdWx0KSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtID0gX2ttdWxfd29ya3NpemUodWxlbiwgMyooTVBEX01BWFRSQU5TRk9STV8yTi8yKSk7CisgICAgaWYgKG0gJiYgKCh3ID0gbXBkX2NhbGxvYyhtLCBzaXplb2YgKncpKSA9PSBOVUxMKSkgeworICAgICAgICBtcGRfZnJlZShyZXN1bHQpOyAvKiBHQ09WX1VOTElLRUxZICovCisgICAgICAgIHJldHVybiBOVUxMOyAvKiBHQ09WX1VOTElLRUxZICovCisgICAgfQorCisgICAgaWYgKCFfa2FyYXRzdWJhX3JlY19mbnQocmVzdWx0LCB1LCB2LCB3LCB1bGVuLCB2bGVuKSkgeworICAgICAgICBtcGRfZnJlZShyZXN1bHQpOworICAgICAgICByZXN1bHQgPSBOVUxMOworICAgIH0KKworCisgICAgaWYgKHcpIG1wZF9mcmVlKHcpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworLyogRGVhbCB3aXRoIHRoZSBzcGVjaWFsIGNhc2VzIG9mIG11bHRpcGx5aW5nIGluZmluaXRpZXMuICovCitzdGF0aWMgdm9pZAorX21wZF9xbXVsX2luZihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpKSB7CisgICAgICAgIGlmIChtcGRfaXN6ZXJvKGIpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIG1wZF9zaWduKGEpXm1wZF9zaWduKGIpLCBNUERfSU5GKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChtcGRfaXNpbmZpbml0ZShiKSk7CisgICAgaWYgKG1wZF9pc3plcm8oYSkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBtcGRfc2lnbihhKV5tcGRfc2lnbihiKSwgTVBEX0lORik7CisgICAgfQorfQorCisvKgorICogSW50ZXJuYWwgZnVuY3Rpb246IE11bHRpcGx5IGEgYW5kIGIuIF9tcGRfcW11bCBkZWFscyB3aXRoIHNwZWNpYWxzIGJ1dAorICogZG9lcyBOT1QgZmluYWxpemUgdGhlIHJlc3VsdC4gVGhpcyBpcyBmb3IgdXNlIGluIG1wZF9mbWEoKS4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX3FtdWwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfdCAqYmlnID0gKG1wZF90ICopYSwgKnNtYWxsID0gKG1wZF90ICopYjsKKyAgICBtcGRfdWludF90ICpyZGF0YSA9IE5VTEw7CisgICAgbXBkX3VpbnRfdCByYnVmW01QRF9NSU5BTExPQ19NQVhdOworICAgIG1wZF9zaXplX3QgcnNpemUsIGk7CisKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFucyhyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIF9tcGRfcW11bF9pbmYocmVzdWx0LCBhLCBiLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHNtYWxsLT5sZW4gPiBiaWctPmxlbikgeworICAgICAgICBfbXBkX3B0cnN3YXAoJmJpZywgJnNtYWxsKTsKKyAgICB9CisKKyAgICByc2l6ZSA9IGJpZy0+bGVuICsgc21hbGwtPmxlbjsKKworICAgIGlmIChiaWctPmxlbiA9PSAxKSB7CisgICAgICAgIF9tcGRfc2luZ2xlbXVsKHJlc3VsdC0+ZGF0YSwgYmlnLT5kYXRhWzBdLCBzbWFsbC0+ZGF0YVswXSk7CisgICAgICAgIGdvdG8gZmluaXNoOworICAgIH0KKyAgICBpZiAocnNpemUgPD0gKG1wZF9zaXplX3QpTVBEX01JTkFMTE9DX01BWCkgeworICAgICAgICBpZiAoYmlnLT5sZW4gPT0gMikgeworICAgICAgICAgICAgX21wZF9tdWxfMl9sZTIocmJ1ZiwgYmlnLT5kYXRhLCBzbWFsbC0+ZGF0YSwgc21hbGwtPmxlbik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfdWludF96ZXJvKHJidWYsIHJzaXplKTsKKyAgICAgICAgICAgIGlmIChzbWFsbC0+bGVuID09IDEpIHsKKyAgICAgICAgICAgICAgICBfbXBkX3Nob3J0bXVsKHJidWYsIGJpZy0+ZGF0YSwgYmlnLT5sZW4sIHNtYWxsLT5kYXRhWzBdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIF9tcGRfYmFzZW11bChyYnVmLCBzbWFsbC0+ZGF0YSwgYmlnLT5kYXRhLCBzbWFsbC0+bGVuLCBiaWctPmxlbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIHJzaXplLCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZm9yKGkgPSAwOyBpIDwgcnNpemU7IGkrKykgeworICAgICAgICAgICAgcmVzdWx0LT5kYXRhW2ldID0gcmJ1ZltpXTsKKyAgICAgICAgfQorICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICB9CisKKworICAgIGlmIChzbWFsbC0+bGVuIDw9IDI1NikgeworICAgICAgICByZGF0YSA9IG1wZF9jYWxsb2MocnNpemUsIHNpemVvZiAqcmRhdGEpOworICAgICAgICBpZiAocmRhdGEgIT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKHNtYWxsLT5sZW4gPT0gMSkgeworICAgICAgICAgICAgICAgIF9tcGRfc2hvcnRtdWwocmRhdGEsIGJpZy0+ZGF0YSwgYmlnLT5sZW4sIHNtYWxsLT5kYXRhWzBdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIF9tcGRfYmFzZW11bChyZGF0YSwgc21hbGwtPmRhdGEsIGJpZy0+ZGF0YSwgc21hbGwtPmxlbiwgYmlnLT5sZW4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKHJzaXplIDw9IDEwMjQpIHsKKyAgICAgICAgcmRhdGEgPSBfbXBkX2ttdWwoYmlnLT5kYXRhLCBzbWFsbC0+ZGF0YSwgYmlnLT5sZW4sIHNtYWxsLT5sZW4sICZyc2l6ZSk7CisgICAgfQorICAgIGVsc2UgaWYgKHJzaXplIDw9IDMqTVBEX01BWFRSQU5TRk9STV8yTikgeworICAgICAgICByZGF0YSA9IF9tcGRfZm50bXVsKGJpZy0+ZGF0YSwgc21hbGwtPmRhdGEsIGJpZy0+bGVuLCBzbWFsbC0+bGVuLCAmcnNpemUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmRhdGEgPSBfbXBkX2ttdWxfZm50KGJpZy0+ZGF0YSwgc21hbGwtPmRhdGEsIGJpZy0+bGVuLCBzbWFsbC0+bGVuLCAmcnNpemUpOworICAgIH0KKworICAgIGlmIChyZGF0YSA9PSBOVUxMKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobXBkX2lzZHluYW1pY19kYXRhKHJlc3VsdCkpIHsKKyAgICAgICAgbXBkX2ZyZWUocmVzdWx0LT5kYXRhKTsKKyAgICB9CisgICAgcmVzdWx0LT5kYXRhID0gcmRhdGE7CisgICAgcmVzdWx0LT5hbGxvYyA9IHJzaXplOworICAgIG1wZF9zZXRfZHluYW1pY19kYXRhKHJlc3VsdCk7CisKKworZmluaXNoOgorICAgIG1wZF9zZXRfZmxhZ3MocmVzdWx0LCBtcGRfc2lnbihhKV5tcGRfc2lnbihiKSk7CisgICAgcmVzdWx0LT5leHAgPSBiaWctPmV4cCArIHNtYWxsLT5leHA7CisgICAgcmVzdWx0LT5sZW4gPSBfbXBkX3JlYWxfc2l6ZShyZXN1bHQtPmRhdGEsIHJzaXplKTsKKyAgICAvKiByZXNpemUgdG8gc21hbGxlciBjYW5ub3QgZmFpbCAqLworICAgIG1wZF9xcmVzaXplKHJlc3VsdCwgcmVzdWx0LT5sZW4sIHN0YXR1cyk7CisgICAgbXBkX3NldGRpZ2l0cyhyZXN1bHQpOworfQorCisvKiBNdWx0aXBseSBhIGFuZCBiLiAqLwordm9pZAorbXBkX3FtdWwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIF9tcGRfcW11bChyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisvKiBNdWx0aXBseSBhIGFuZCBiLiBTZXQgTmFOL0ludmFsaWRfb3BlcmF0aW9uIGlmIHRoZSByZXN1bHQgaXMgaW5leGFjdC4gKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FtdWxfZXhhY3QobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50MzJfdCB3b3Jrc3RhdHVzID0gMDsKKworICAgIG1wZF9xbXVsKHJlc3VsdCwgYSwgYiwgY3R4LCAmd29ya3N0YXR1cyk7CisgICAgKnN0YXR1cyB8PSB3b3Jrc3RhdHVzOworICAgIGlmICh3b3Jrc3RhdHVzICYgKE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkfE1QRF9DbGFtcGVkKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgfQorfQorCisvKiBNdWx0aXBseSBkZWNpbWFsIGFuZCBtcGRfc3NpemVfdC4gKi8KK3ZvaWQKK21wZF9xbXVsX3NzaXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBiLAorICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3QgbWF4Y29udGV4dDsKKyAgICBNUERfTkVXX1NUQVRJQyhiYiwwLDAsMCwwKTsKKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjb250ZXh0KTsKKyAgICBtcGRfcXNzZXRfc3NpemUoJmJiLCBiLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBtcGRfcW11bChyZXN1bHQsIGEsICZiYiwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9kZWwoJmJiKTsKK30KKworLyogTXVsdGlwbHkgZGVjaW1hbCBhbmQgbXBkX3VpbnRfdC4gKi8KK3ZvaWQKK21wZF9xbXVsX3VpbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF91aW50X3QgYiwKKyAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3QgbWF4Y29udGV4dDsKKyAgICBNUERfTkVXX1NUQVRJQyhiYiwwLDAsMCwwKTsKKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjb250ZXh0KTsKKyAgICBtcGRfcXNzZXRfdWludCgmYmIsIGIsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIG1wZF9xbXVsKHJlc3VsdCwgYSwgJmJiLCBjdHgsIHN0YXR1cyk7CisgICAgbXBkX2RlbCgmYmIpOworfQorCit2b2lkCittcGRfcW11bF9pMzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDMyX3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FtdWxfc3NpemUocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisKK3ZvaWQKK21wZF9xbXVsX3UzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FtdWxfdWludChyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKworI2lmZGVmIENPTkZJR182NAordm9pZAorbXBkX3FtdWxfaTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQ2NF90IGIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xbXVsX3NzaXplKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorCit2b2lkCittcGRfcW11bF91NjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQ2NF90IGIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xbXVsX3VpbnQocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisjZW5kaWYKKworLyogTGlrZSB0aGUgbWludXMgb3BlcmF0b3IuICovCit2b2lkCittcGRfcW1pbnVzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFuKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobXBkX2lzemVybyhhKSAmJiBjdHgtPnJvdW5kICE9IE1QRF9ST1VORF9GTE9PUikgeworICAgICAgICBtcGRfcWNvcHlfYWJzKHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1wZF9xY29weV9uZWdhdGUocmVzdWx0LCBhLCBzdGF0dXMpOworICAgIH0KKworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIExpa2UgdGhlIHBsdXMgb3BlcmF0b3IuICovCit2b2lkCittcGRfcXBsdXMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbihyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1wZF9pc3plcm8oYSkgJiYgY3R4LT5yb3VuZCAhPSBNUERfUk9VTkRfRkxPT1IpIHsKKyAgICAgICAgbXBkX3Fjb3B5X2FicyhyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgIH0KKworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIFRoZSBsYXJnZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHRoYXQgaXMgc21hbGxlciB0aGFuIHRoZSBvcGVyYW5kLiAqLwordm9pZAorbXBkX3FuZXh0X21pbnVzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisgICAgTVBEX05FV19DT05TVCh0aW55LE1QRF9QT1MsbXBkX2V0aW55KGN0eCktMSwxLDEsMSwxKTsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbihyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXNzZXJ0KG1wZF9pc2luZmluaXRlKGEpKTsKKyAgICAgICAgaWYgKG1wZF9pc25lZ2F0aXZlKGEpKSB7CisgICAgICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX2NsZWFyX2ZsYWdzKHJlc3VsdCk7CisgICAgICAgICAgICBtcGRfcW1heGNvZWZmKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgaWYgKG1wZF9pc25hbihyZXN1bHQpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0LT5leHAgPSBtcGRfZXRvcChjdHgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgbXBkX3dvcmtjb250ZXh0KCZ3b3JrY3R4LCBjdHgpOworICAgIHdvcmtjdHgucm91bmQgPSBNUERfUk9VTkRfRkxPT1I7CisKKyAgICBpZiAoIW1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICBpZiAod29ya2N0eC5zdGF0dXMmKE1QRF9JbmV4YWN0fE1QRF9FcnJvcnMpKSB7CisgICAgICAgICpzdGF0dXMgfD0gKHdvcmtjdHguc3RhdHVzJk1QRF9FcnJvcnMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd29ya2N0eC5zdGF0dXMgPSAwOworICAgIG1wZF9xc3ViKHJlc3VsdCwgYSwgJnRpbnksICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgICpzdGF0dXMgfD0gKHdvcmtjdHguc3RhdHVzJk1QRF9FcnJvcnMpOworfQorCisvKiBUaGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGUgb3BlcmFuZC4gKi8KK3ZvaWQKK21wZF9xbmV4dF9wbHVzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKyAgICBNUERfTkVXX0NPTlNUKHRpbnksTVBEX1BPUyxtcGRfZXRpbnkoY3R4KS0xLDEsMSwxLDEpOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFuKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhc3NlcnQobXBkX2lzaW5maW5pdGUoYSkpOworICAgICAgICBpZiAobXBkX2lzcG9zaXRpdmUoYSkpIHsKKyAgICAgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfY2xlYXJfZmxhZ3MocmVzdWx0KTsKKyAgICAgICAgICAgIG1wZF9xbWF4Y29lZmYocmVzdWx0LCBjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICBpZiAobXBkX2lzbmFuKHJlc3VsdCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtcGRfc2V0X2ZsYWdzKHJlc3VsdCwgTVBEX05FRyk7CisgICAgICAgICAgICByZXN1bHQtPmV4cCA9IG1wZF9ldG9wKGN0eCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1wZF93b3JrY29udGV4dCgmd29ya2N0eCwgY3R4KTsKKyAgICB3b3JrY3R4LnJvdW5kID0gTVBEX1JPVU5EX0NFSUxJTkc7CisKKyAgICBpZiAoIW1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICBpZiAod29ya2N0eC5zdGF0dXMgJiAoTVBEX0luZXhhY3R8TVBEX0Vycm9ycykpIHsKKyAgICAgICAgKnN0YXR1cyB8PSAod29ya2N0eC5zdGF0dXMmTVBEX0Vycm9ycyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3b3JrY3R4LnN0YXR1cyA9IDA7CisgICAgbXBkX3FhZGQocmVzdWx0LCBhLCAmdGlueSwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgKnN0YXR1cyB8PSAod29ya2N0eC5zdGF0dXMmTVBEX0Vycm9ycyk7Cit9CisKKy8qCisgKiBUaGUgbnVtYmVyIGNsb3Nlc3QgdG8gdGhlIGZpcnN0IG9wZXJhbmQgdGhhdCBpcyBpbiB0aGUgZGlyZWN0aW9uIHRvd2FyZHMKKyAqIHRoZSBzZWNvbmQgb3BlcmFuZC4KKyAqLwordm9pZAorbXBkX3FuZXh0X3Rvd2FyZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpbnQgYzsKKworICAgIGlmIChtcGRfcWNoZWNrX25hbnMocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGMgPSBfbXBkX2NtcChhLCBiKTsKKyAgICBpZiAoYyA9PSAwKSB7CisgICAgICAgIG1wZF9xY29weV9zaWduKHJlc3VsdCwgYSwgYiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChjIDwgMCkgeworICAgICAgICBtcGRfcW5leHRfcGx1cyhyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1wZF9xbmV4dF9taW51cyhyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKKyAgICB9CisKKyAgICBpZiAobXBkX2lzaW5maW5pdGUocmVzdWx0KSkgeworICAgICAgICAqc3RhdHVzIHw9IChNUERfT3ZlcmZsb3d8TVBEX1JvdW5kZWR8TVBEX0luZXhhY3QpOworICAgIH0KKyAgICBlbHNlIGlmIChtcGRfYWRqZXhwKHJlc3VsdCkgPCBjdHgtPmVtaW4pIHsKKyAgICAgICAgKnN0YXR1cyB8PSAoTVBEX1VuZGVyZmxvd3xNUERfU3Vibm9ybWFsfE1QRF9Sb3VuZGVkfE1QRF9JbmV4YWN0KTsKKyAgICAgICAgaWYgKG1wZF9pc3plcm8ocmVzdWx0KSkgeworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfQ2xhbXBlZDsKKyAgICAgICAgfQorICAgIH0KK30KKworLyoKKyAqIEludGVybmFsIGZ1bmN0aW9uOiBJbnRlZ2VyIHBvd2VyIHdpdGggbXBkX3VpbnRfdCBleHBvbmVudC4gVGhlIGZ1bmN0aW9uCisgKiBjYW4gZmFpbCB3aXRoIE1QRF9NYWxsb2NfZXJyb3IuCisgKgorICogVGhlIGVycm9yIGlzIGVxdWFsIHRvIHRoZSBlcnJvciBpbmN1cnJlZCBpbiBrLTEgbXVsdGlwbGljYXRpb25zLiBBc3N1bWluZworICogdGhlIHVwcGVyIGJvdW5kIGZvciB0aGUgcmVsYXRpdmUgZXJyb3IgaW4gZWFjaCBvcGVyYXRpb246CisgKgorICogICBhYnMoZXJyKSA9IDUgKiAxMCoqLXByZWMKKyAqICAgcmVzdWx0ID0geCoqayAqICgxICsgZXJyKSoqKGstMSkKKyAqLworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX3Fwb3dfdWludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYmFzZSwgbXBkX3VpbnRfdCBleHAsCisgICAgICAgICAgICAgICB1aW50OF90IHJlc3VsdHNpZ24sIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50MzJfdCB3b3Jrc3RhdHVzID0gMDsKKyAgICBtcGRfdWludF90IG47CisKKyAgICBpZiAoZXhwID09IDApIHsKKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIHJlc3VsdHNpZ24sIDEsIDApOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIHJldHVybjsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKworICAgIGlmICghbXBkX3Fjb3B5KHJlc3VsdCwgYmFzZSwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbiA9IG1wZF9iaXRzW21wZF9ic3IoZXhwKV07CisgICAgd2hpbGUgKG4gPj49IDEpIHsKKyAgICAgICAgbXBkX3FtdWwocmVzdWx0LCByZXN1bHQsIHJlc3VsdCwgY3R4LCAmd29ya3N0YXR1cyk7CisgICAgICAgIGlmIChleHAgJiBuKSB7CisgICAgICAgICAgICBtcGRfcW11bChyZXN1bHQsIHJlc3VsdCwgYmFzZSwgY3R4LCAmd29ya3N0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc3NwZWNpYWwocmVzdWx0KSB8fAorICAgICAgICAgICAgKG1wZF9pc3plcm9jb2VmZihyZXN1bHQpICYmICh3b3Jrc3RhdHVzICYgTVBEX0NsYW1wZWQpKSkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAqc3RhdHVzIHw9IHdvcmtzdGF0dXM7CisgICAgbXBkX3NldF9zaWduKHJlc3VsdCwgcmVzdWx0c2lnbik7Cit9CisKKy8qCisgKiBJbnRlcm5hbCBmdW5jdGlvbjogSW50ZWdlciBwb3dlciB3aXRoIG1wZF90IGV4cG9uZW50LCB0YmFzZSBhbmQgdGV4cAorICogYXJlIG1vZGlmaWVkISEgRnVuY3Rpb24gY2FuIGZhaWwgd2l0aCBNUERfTWFsbG9jX2Vycm9yLgorICoKKyAqIFRoZSBlcnJvciBpcyBlcXVhbCB0byB0aGUgZXJyb3IgaW5jdXJyZWQgaW4gayBtdWx0aXBsaWNhdGlvbnMuIEFzc3VtaW5nCisgKiB0aGUgdXBwZXIgYm91bmQgZm9yIHRoZSByZWxhdGl2ZSBlcnJvciBpbiBlYWNoIG9wZXJhdGlvbjoKKyAqCisgKiAgIGFicyhlcnIpID0gNSAqIDEwKiotcHJlYworICogICByZXN1bHQgPSB4KiprICogKDEgKyBlcnIpKiprCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9xcG93X21wZChtcGRfdCAqcmVzdWx0LCBtcGRfdCAqdGJhc2UsIG1wZF90ICp0ZXhwLCB1aW50OF90IHJlc3VsdHNpZ24sCisgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50MzJfdCB3b3Jrc3RhdHVzID0gMDsKKyAgICBtcGRfY29udGV4dF90IG1heGN0eDsKKyAgICBNUERfTkVXX0NPTlNUKHR3bywwLDAsMSwxLDEsMik7CisKKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjdHgpOworCisgICAgLyogcmVzaXplIHRvIHNtYWxsZXIgY2Fubm90IGZhaWwgKi8KKyAgICBtcGRfcWNvcHkocmVzdWx0LCAmb25lLCBzdGF0dXMpOworCisgICAgd2hpbGUgKCFtcGRfaXN6ZXJvKHRleHApKSB7CisgICAgICAgIGlmIChtcGRfaXNvZGQodGV4cCkpIHsKKyAgICAgICAgICAgIG1wZF9xbXVsKHJlc3VsdCwgcmVzdWx0LCB0YmFzZSwgY3R4LCAmd29ya3N0YXR1cyk7CisgICAgICAgICAgICAqc3RhdHVzIHw9IHdvcmtzdGF0dXM7CisgICAgICAgICAgICBpZiAobXBkX2lzc3BlY2lhbChyZXN1bHQpIHx8CisgICAgICAgICAgICAgICAgKG1wZF9pc3plcm9jb2VmZihyZXN1bHQpICYmICh3b3Jrc3RhdHVzICYgTVBEX0NsYW1wZWQpKSkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1wZF9xbXVsKHRiYXNlLCB0YmFzZSwgdGJhc2UsIGN0eCwgJndvcmtzdGF0dXMpOworICAgICAgICBtcGRfcWRpdmludCh0ZXhwLCB0ZXhwLCAmdHdvLCAmbWF4Y3R4LCAmd29ya3N0YXR1cyk7CisgICAgICAgIGlmIChtcGRfaXNuYW4odGJhc2UpIHx8IG1wZF9pc25hbih0ZXhwKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgd29ya3N0YXR1cyZNUERfRXJyb3JzLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIG1wZF9zZXRfc2lnbihyZXN1bHQsIHJlc3VsdHNpZ24pOworfQorCisvKgorICogVGhlIHBvd2VyIGZ1bmN0aW9uIGZvciBpbnRlZ2VyIGV4cG9uZW50cy4gUmVsYXRpdmUgZXJyb3IgX2JlZm9yZV8gdGhlCisgKiBmaW5hbCByb3VuZGluZyB0byBwcmVjOgorICogICBhYnMocmVzdWx0IC0gYmFzZSoqZXhwKSA8IDAuMSAqIDEwKiotcHJlYyAqIGFicyhiYXNlKipleHApCisgKi8KK3N0YXRpYyB2b2lkCitfbXBkX3Fwb3dfaW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLCBjb25zdCBtcGRfdCAqZXhwLAorICAgICAgICAgICAgICB1aW50OF90IHJlc3VsdHNpZ24sCisgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisgICAgTVBEX05FV19TVEFUSUModGJhc2UsMCwwLDAsMCk7CisgICAgTVBEX05FV19TVEFUSUModGV4cCwwLDAsMCwwKTsKKyAgICBtcGRfc3NpemVfdCBuOworCisKKyAgICBtcGRfd29ya2NvbnRleHQoJndvcmtjdHgsIGN0eCk7CisgICAgd29ya2N0eC5wcmVjICs9IChleHAtPmRpZ2l0cyArIGV4cC0+ZXhwICsgMik7CisgICAgd29ya2N0eC5yb3VuZCA9IE1QRF9ST1VORF9IQUxGX0VWRU47CisgICAgd29ya2N0eC5jbGFtcCA9IDA7CisgICAgaWYgKG1wZF9pc25lZ2F0aXZlKGV4cCkpIHsKKyAgICAgICAgd29ya2N0eC5wcmVjICs9IDE7CisgICAgICAgIG1wZF9xZGl2KCZ0YmFzZSwgJm9uZSwgYmFzZSwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgIGlmICgqc3RhdHVzJk1QRF9FcnJvcnMpIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgTVBEX1BPUywgTVBEX05BTik7CisgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKCFtcGRfcWNvcHkoJnRiYXNlLCBiYXNlLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIE1QRF9QT1MsIE1QRF9OQU4pOworICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBuID0gbXBkX3FhYnNfdWludChleHAsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgaWYgKHdvcmtjdHguc3RhdHVzJk1QRF9JbnZhbGlkX29wZXJhdGlvbikgeworICAgICAgICBpZiAoIW1wZF9xY29weSgmdGV4cCwgZXhwLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIE1QRF9QT1MsIE1QRF9OQU4pOyAvKiBHQ09WX1VOTElLRUxZICovCisgICAgICAgICAgICBnb3RvIGZpbmlzaDsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgICAgICB9CisgICAgICAgIF9tcGRfcXBvd19tcGQocmVzdWx0LCAmdGJhc2UsICZ0ZXhwLCByZXN1bHRzaWduLCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9tcGRfcXBvd191aW50KHJlc3VsdCwgJnRiYXNlLCBuLCByZXN1bHRzaWduLCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICB9CisKKyAgICBpZiAobXBkX2lzaW5maW5pdGUocmVzdWx0KSkgeworICAgICAgICAvKiBmb3IgUk9VTkRfRE9XTiwgUk9VTkRfRkxPT1IsIGV0Yy4gKi8KKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIHJlc3VsdHNpZ24sIDEsIE1QRF9FWFBfSU5GKTsKKyAgICB9CisKK2ZpbmlzaDoKKyAgICBtcGRfZGVsKCZ0YmFzZSk7CisgICAgbXBkX2RlbCgmdGV4cCk7CisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworLyoKKyAqIElmIHRoZSBleHBvbmVudCBpcyBpbmZpbml0ZSBhbmQgYmFzZSBlcXVhbHMgb25lLCB0aGUgcmVzdWx0IGlzIG9uZQorICogd2l0aCBhIGNvZWZmaWNpZW50IG9mIGxlbmd0aCBwcmVjLiBPdGhlcndpc2UsIHJlc3VsdCBpcyB1bmRlZmluZWQuCisgKiBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBjb21wYXJpc29uIGFnYWluc3Qgb25lLgorICovCitzdGF0aWMgaW50CitfcWNoZWNrX3Bvd19vbmVfaW5mKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLCB1aW50OF90IHJlc3VsdHNpZ24sCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfc3NpemVfdCBzaGlmdDsKKyAgICBpbnQgY21wOworCisgICAgaWYgKChjbXAgPSBfbXBkX2NtcChiYXNlLCAmb25lKSkgPT0gMCkgeworICAgICAgICBzaGlmdCA9IGN0eC0+cHJlYy0xOworICAgICAgICBtcGRfcXNoaWZ0bChyZXN1bHQsICZvbmUsIHNoaWZ0LCBzdGF0dXMpOworICAgICAgICByZXN1bHQtPmV4cCA9IC1zaGlmdDsKKyAgICAgICAgbXBkX3NldF9mbGFncyhyZXN1bHQsIHJlc3VsdHNpZ24pOworICAgICAgICAqc3RhdHVzIHw9IChNUERfSW5leGFjdHxNUERfUm91bmRlZCk7CisgICAgfQorCisgICAgcmV0dXJuIGNtcDsKK30KKworLyoKKyAqIElmIGFicyhiYXNlKSBlcXVhbHMgb25lLCBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgcG93ZXIgb2Ygb25lIHJlc3VsdC4KKyAqIE90aGVyd2lzZSwgcmVzdWx0IGlzIHVuZGVmaW5lZC4gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcGFyaXNvbgorICogYWdhaW5zdCAxLgorICoKKyAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24gdGhhdCBkb2VzIG5vdCBjaGVjayBmb3Igc3BlY2lhbHMuCisgKi8KK3N0YXRpYyBpbnQKK19xY2hlY2tfcG93X29uZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYmFzZSwgY29uc3QgbXBkX3QgKmV4cCwKKyAgICAgICAgICAgICAgICB1aW50OF90IHJlc3VsdHNpZ24sCisgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworICAgIG1wZF9zc2l6ZV90IHNoaWZ0OworICAgIGludCBjbXA7CisKKyAgICBpZiAoKGNtcCA9IF9tcGRfY21wX2FicyhiYXNlLCAmb25lKSkgPT0gMCkgeworICAgICAgICBpZiAoX21wZF9pc2ludChleHApKSB7CisgICAgICAgICAgICBpZiAobXBkX2lzbmVnYXRpdmUoZXhwKSkgeworICAgICAgICAgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCByZXN1bHRzaWduLCAxLCAwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIDEuMDAwKiozID0gMS4wMDAwMDAwMDAgKi8KKyAgICAgICAgICAgIG1wZF9xbXVsX3NzaXplKHJlc3VsdCwgZXhwLCAtYmFzZS0+ZXhwLCBjdHgsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgICAgIGlmICh3b3Jrc3RhdHVzJk1QRF9FcnJvcnMpIHsKKyAgICAgICAgICAgICAgICAqc3RhdHVzIHw9ICh3b3Jrc3RhdHVzJk1QRF9FcnJvcnMpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogZGlnaXRzLTEgYWZ0ZXIgZXhwb25lbnRpYXRpb24gKi8KKyAgICAgICAgICAgIHNoaWZ0ID0gbXBkX3FnZXRfc3NpemUocmVzdWx0LCAmd29ya3N0YXR1cyk7CisgICAgICAgICAgICAvKiBzaGlmdCBpcyBNUERfU1NJWkVfTUFYIGlmIHJlc3VsdCBpcyB0b28gbGFyZ2UgKi8KKyAgICAgICAgICAgIGlmIChzaGlmdCA+IGN0eC0+cHJlYy0xKSB7CisgICAgICAgICAgICAgICAgc2hpZnQgPSBjdHgtPnByZWMtMTsKKyAgICAgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9Sb3VuZGVkOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc3Bvc2l0aXZlKGJhc2UpKSB7CisgICAgICAgICAgICBzaGlmdCA9IGN0eC0+cHJlYy0xOworICAgICAgICAgICAgKnN0YXR1cyB8PSAoTVBEX0luZXhhY3R8TVBEX1JvdW5kZWQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIC0yOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIH0KKyAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bChyZXN1bHQsICZvbmUsIHNoaWZ0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQtPmV4cCA9IC1zaGlmdDsKKyAgICAgICAgbXBkX3NldF9mbGFncyhyZXN1bHQsIHJlc3VsdHNpZ24pOworICAgIH0KKworICAgIHJldHVybiBjbXA7Cit9CisKKy8qCisgKiBEZXRlY3QgY2VydGFpbiBvdmVyL3VuZGVyZmxvdyBvZiB4Kip5LgorICogQUNMMiBwcm9vZjogcG93LWJvdW5kcy5saXNwLgorICoKKyAqICAgU3ltYm9sczoKKyAqCisgKiAgICAgZTogRVhQX0lORiBvciBFWFBfQ0xBTVAKKyAqICAgICB4OiBiYXNlCisgKiAgICAgeTogZXhwb25lbnQKKyAqCisgKiAgICAgb21lZ2EoZSkgPSBsb2cxMChhYnMoZSkpCisgKiAgICAgemV0YSh4KSAgPSBsb2cxMChhYnMobG9nMTAoeCkpKQorICogICAgIHRoZXRhKHkpID0gbG9nMTAoYWJzKHkpKQorICoKKyAqICAgVXBwZXIgYW5kIGxvd2VyIGJvdW5kczoKKyAqCisgKiAgICAgdWJfb21lZ2EoZSkgPSBjZWlsKGxvZzEwKGFicyhlKSkpCisgKiAgICAgbGJfdGhldGEoeSkgPSBmbG9vcihsb2cxMChhYnMoeSkpKQorICoKKyAqICAgICAgICAgICAgICAgICAgfCBmbG9vcihsb2cxMChmbG9vcihhYnMobG9nMTAoeCkpKSkpIGlmIHggPCAxLzEwIG9yIHggPj0gMTAKKyAqICAgICBsYl96ZXRhKHgpID0gfCBmbG9vcihsb2cxMChhYnMoeC0xKS8xMCkpIGlmIDEvMTAgPD0geCA8IDEKKyAqICAgICAgICAgICAgICAgICAgfCBmbG9vcihsb2cxMChhYnMoKHgtMSkvMTAwKSkpIGlmIDEgPCB4IDwgMTAKKyAqCisgKiAgIHViX29tZWdhKGUpIGFuZCBsYl90aGV0YSh5KSBhcmUgb2J2aW91c2x5IHVwcGVyIGFuZCBsb3dlciBib3VuZHMKKyAqICAgZm9yIG9tZWdhKGUpIGFuZCB0aGV0YSh5KS4KKyAqCisgKiAgIGxiX3pldGEgaXMgYSBsb3dlciBib3VuZCBmb3IgemV0YSh4KToKKyAqCisgKiAgICAgeCA8IDEvMTAgb3IgeCA+PSAxMDoKKyAqCisgKiAgICAgICBhYnMobG9nMTAoeCkpID49IDEsIHNvIHRoZSBvdXRlciBsb2cxMCBpcyB3ZWxsIGRlZmluZWQuIFNpbmNlIGxvZzEwCisgKiAgICAgICBpcyBzdHJpY3RseSBpbmNyZWFzaW5nLCB0aGUgZW5kIHJlc3VsdCBpcyBhIGxvd2VyIGJvdW5kLgorICoKKyAqICAgICAxLzEwIDw9IHggPCAxOgorICoKKyAqICAgICAgIFdlIHVzZTogbG9nMTAoeCkgPD0gKHgtMSkvbG9nKDEwKQorICogICAgICAgICAgICAgICBhYnMobG9nMTAoeCkpID49IGFicyh4LTEpL2xvZygxMCkKKyAqICAgICAgICAgICAgICAgYWJzKGxvZzEwKHgpKSA+PSBhYnMoeC0xKS8xMAorICoKKyAqICAgICAxIDwgeCA8IDEwOgorICoKKyAqICAgICAgIFdlIHVzZTogKHgtMSkvKHgqbG9nKDEwKSkgPCBsb2cxMCh4KQorICogICAgICAgICAgICAgICBhYnMoKHgtMSkvMTAwKSA8IGFicyhsb2cxMCh4KSkKKyAqCisgKiAgICAgICBYWFg6IGFicygoeC0xKS8xMCkgd291bGQgd29yaywgbmVlZCBBQ0wyIHByb29mLgorICoKKyAqCisgKiAgIExldCAoMCA8IHggPCAxIGFuZCB5IDwgMCkgb3IgKHggPiAxIGFuZCB5ID4gMCkuICAgICAgICAgICAgICAgICAgKEgxKQorICogICBMZXQgdWJfb21lZ2EoZXhwX2luZikgPCBsYl96ZXRhKHgpICsgbGJfdGhldGEoeSkgICAgICAgICAgICAgICAgIChIMikKKyAqCisgKiAgIFRoZW46CisgKiAgICAgICBsb2cxMChhYnMoZXhwX2luZikpIDwgbG9nMTAoYWJzKGxvZzEwKHgpKSkgKyBsb2cxMChhYnMoeSkpLiAgICgxKQorICogICAgICAgICAgICAgICAgICAgZXhwX2luZiA8IGxvZzEwKHgpICogeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMikKKyAqICAgICAgICAgICAgICAgMTAqKmV4cF9pbmYgPCB4Kip5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDMpCisgKgorICogICBMZXQgKDAgPCB4IDwgMSBhbmQgeSA+IDApIG9yICh4ID4gMSBhbmQgeSA8IDApLiAgICAgICAgICAgICAgICAgIChIMykKKyAqICAgTGV0IHViX29tZWdhKGV4cF9jbGFtcCkgPCBsYl96ZXRhKHgpICsgbGJfdGhldGEoeSkgICAgICAgICAgICAgICAoSDQpCisgKgorICogICBUaGVuOgorICogICAgIGxvZzEwKGFicyhleHBfY2xhbXApKSA8IGxvZzEwKGFicyhsb2cxMCh4KSkpICsgbG9nMTAoYWJzKHkpKS4gICAoNCkKKyAqICAgICAgICAgICAgICBsb2cxMCh4KSAqIHkgPCBleHBfY2xhbXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDUpCisgKiAgICAgICAgICAgICAgICAgICAgICB4Kip5IDwgMTAqKmV4cF9jbGFtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICg2KQorICoKKyAqLworc3RhdGljIG1wZF9zc2l6ZV90CitfbG93ZXJfYm91bmRfemV0YShjb25zdCBtcGRfdCAqeCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IG1heGN0eDsKKyAgICBNUERfTkVXX1NUQVRJQyhzY3JhdGNoLDAsMCwwLDApOworICAgIG1wZF9zc2l6ZV90IHQsIHU7CisKKyAgICB0ID0gbXBkX2FkamV4cCh4KTsKKyAgICBpZiAodCA+IDApIHsKKyAgICAgICAgLyogeCA+PSAxMCAtPiBmbG9vcihsb2cxMChmbG9vcihhYnMobG9nMTAoeCkpKSkpICovCisgICAgICAgIHJldHVybiBtcGRfZXhwX2RpZ2l0cyh0KSAtIDE7CisgICAgfQorICAgIGVsc2UgaWYgKHQgPCAtMSkgeworICAgICAgICAvKiB4IDwgMS8xMCAtPiBmbG9vcihsb2cxMChmbG9vcihhYnMobG9nMTAoeCkpKSkpICovCisgICAgICAgIHJldHVybiBtcGRfZXhwX2RpZ2l0cyh0KzEpIC0gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjdHgpOworICAgICAgICBtcGRfcXN1Yigmc2NyYXRjaCwgeCwgJm9uZSwgJm1heGN0eCwgc3RhdHVzKTsKKyAgICAgICAgaWYgKG1wZF9pc3NwZWNpYWwoJnNjcmF0Y2gpKSB7CisgICAgICAgICAgICBtcGRfZGVsKCZzY3JhdGNoKTsKKyAgICAgICAgICAgIHJldHVybiBNUERfU1NJWkVfTUFYOworICAgICAgICB9CisgICAgICAgIHUgPSBtcGRfYWRqZXhwKCZzY3JhdGNoKTsKKyAgICAgICAgbXBkX2RlbCgmc2NyYXRjaCk7CisKKyAgICAgICAgLyogdCA9PSAtMSwgMS8xMCA8PSB4IDwgMSAtPiBmbG9vcihsb2cxMChhYnMoeC0xKS8xMCkpCisgICAgICAgICAqIHQgPT0gMCwgIDEgPCB4IDwgMTAgICAgLT4gZmxvb3IobG9nMTAoYWJzKHgtMSkvMTAwKSkgKi8KKyAgICAgICAgcmV0dXJuICh0ID09IDApID8gdS0yIDogdS0xOworICAgIH0KK30KKworLyoKKyAqIERldGVjdCBjYXNlcyBvZiBjZXJ0YWluIG92ZXJmbG93L3VuZGVyZmxvdyBpbiB0aGUgcG93ZXIgZnVuY3Rpb24uCisgKiBBc3N1bXB0aW9uczogeCAhPSAxLCB5ICE9IDAuIFRoZSBwcm9vZiBhYm92ZSBpcyBmb3IgcG9zaXRpdmUgeC4KKyAqIElmIHggaXMgbmVnYXRpdmUgYW5kIHkgaXMgYW4gb2RkIGludGVnZXIsIHgqKnkgPT0gLShhYnMoeCkqKnkpLAorICogc28gdGhlIGFuYWx5c2lzIGRvZXMgbm90IGNoYW5nZS4KKyAqLworc3RhdGljIGludAorX3FjaGVja19wb3dfYm91bmRzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICp4LCBjb25zdCBtcGRfdCAqeSwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90IHJlc3VsdHNpZ24sCisgICAgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIE1QRF9ORVdfU0hBUkVEKGFic194LCB4KTsKKyAgICBtcGRfc3NpemVfdCB1Yl9vbWVnYSwgbGJfemV0YSwgbGJfdGhldGE7CisgICAgdWludDhfdCBzaWduOworCisgICAgbXBkX3NldF9wb3NpdGl2ZSgmYWJzX3gpOworCisgICAgbGJfdGhldGEgPSBtcGRfYWRqZXhwKHkpOworICAgIGxiX3pldGEgPSBfbG93ZXJfYm91bmRfemV0YSgmYWJzX3gsIHN0YXR1cyk7CisgICAgaWYgKGxiX3pldGEgPT0gTVBEX1NTSVpFX01BWCkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBzaWduID0gKG1wZF9hZGpleHAoJmFic194KSA8IDApIF4gbXBkX3NpZ24oeSk7CisgICAgaWYgKHNpZ24gPT0gMCkgeworICAgICAgICAvKiAoMCA8IHx4fCA8IDEgYW5kIHkgPCAwKSBvciAofHh8ID4gMSBhbmQgeSA+IDApICovCisgICAgICAgIHViX29tZWdhID0gbXBkX2V4cF9kaWdpdHMoY3R4LT5lbWF4KTsKKyAgICAgICAgaWYgKHViX29tZWdhIDwgbGJfemV0YSArIGxiX3RoZXRhKSB7CisgICAgICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgcmVzdWx0c2lnbiwgMSwgTVBEX0VYUF9JTkYpOworICAgICAgICAgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiAoMCA8IHx4fCA8IDEgYW5kIHkgPiAwKSBvciAofHh8ID4gMSBhbmQgeSA8IDApLiAqLworICAgICAgICB1Yl9vbWVnYSA9IG1wZF9leHBfZGlnaXRzKG1wZF9ldGlueShjdHgpKTsKKyAgICAgICAgaWYgKHViX29tZWdhIDwgbGJfemV0YSArIGxiX3RoZXRhKSB7CisgICAgICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgcmVzdWx0c2lnbiwgMSwgbXBkX2V0aW55KGN0eCktMSk7CisgICAgICAgICAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIFRPRE86IEltcGxlbWVudCBhbGdvcml0aG0gZm9yIGNvbXB1dGluZyBleGFjdCBwb3dlcnMgZnJvbSBkZWNpbWFsLnB5LgorICogSW4gb3JkZXIgdG8gcHJldmVudCBpbmZpbml0ZSBsb29wcywgdGhpcyBoYXMgdG8gYmUgY2FsbGVkIGJlZm9yZQorICogdXNpbmcgWml2J3Mgc3RyYXRlZ3kgZm9yIGNvcnJlY3Qgcm91bmRpbmcuCisgKi8KKy8qCitzdGF0aWMgaW50CitfbXBkX3Fwb3dfZXhhY3QobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmJhc2UsIGNvbnN0IG1wZF90ICpleHAsCisgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHJldHVybiAwOworfQorKi8KKworLyoKKyAqIFRoZSBwb3dlciBmdW5jdGlvbiBmb3IgcmVhbCBleHBvbmVudHMuCisgKiAgIFJlbGF0aXZlIGVycm9yOiBhYnMocmVzdWx0IC0gZSoqeSkgPCBlKip5ICogMS81ICogMTAqKigtcHJlYyAtIDEpCisgKi8KK3N0YXRpYyB2b2lkCitfbXBkX3Fwb3dfcmVhbChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYmFzZSwgY29uc3QgbXBkX3QgKmV4cCwKKyAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisgICAgTVBEX05FV19TVEFUSUModGV4cCwwLDAsMCwwKTsKKworICAgIGlmICghbXBkX3Fjb3B5KCZ0ZXhwLCBleHAsIHN0YXR1cykpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1wZF9tYXhjb250ZXh0KCZ3b3JrY3R4KTsKKyAgICB3b3JrY3R4LnByZWMgPSAoYmFzZS0+ZGlnaXRzID4gY3R4LT5wcmVjKSA/IGJhc2UtPmRpZ2l0cyA6IGN0eC0+cHJlYzsKKyAgICB3b3JrY3R4LnByZWMgKz0gKDQgKyBNUERfRVhQRElHSVRTKTsKKyAgICB3b3JrY3R4LnJvdW5kID0gTVBEX1JPVU5EX0hBTEZfRVZFTjsKKyAgICB3b3JrY3R4LmFsbGNyID0gY3R4LT5hbGxjcjsKKworICAgIC8qCisgICAgICogZXh0cmEgOj0gTVBEX0VYUERJR0lUUyA9IE1QRF9FWFBfTUFYX1QKKyAgICAgKiB3cCA6PSBwcmVjICsgNCArIGV4dHJhCisgICAgICogYWJzKGVycikgPCA1ICogMTAqKi13cAorICAgICAqIHkgOj0gbG9nKGJhc2UpICogZXhwCisgICAgICogQ2FsY3VsYXRlOgorICAgICAqICAgMSkgICBlKiooeSAqICgxICsgZXJyKSoqMikgKiAoMSArIGVycikKKyAgICAgKiAgICAgID0gZSoqeSAqIGUqKih5ICogKDIqZXJyICsgZXJyKioyKSkgKiAoMSArIGVycikKKyAgICAgKiAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKyAgICAgKiBSZWxhdGl2ZSBlcnJvciBvZiB0aGUgdW5kZXJsaW5lZCB0ZXJtOgorICAgICAqICAgMikgYWJzKGUqKih5ICogKDIqZXJyICsgZXJyKioyKSkgLSAxKQorICAgICAqIENhc2UgYWJzKHkpID49IDEwKipleHRyYToKKyAgICAgKiAgIDMpIGFkamV4cCh5KSsxID4gbG9nMTAoYWJzKHkpKSA+PSBleHRyYQorICAgICAqICAgVGhpcyB0cmlnZ2VycyB0aGUgT3ZlcmZsb3cvVW5kZXJmbG93IHNob3J0Y3V0IGluIF9tcGRfcWV4cCgpLAorICAgICAqICAgc28gbm8gZnVydGhlciBhbmFseXNpcyBpcyBuZWNlc3NhcnkuCisgICAgICogQ2FzZSBhYnMoeSkgPCAxMCoqZXh0cmE6CisgICAgICogICA0KSBhYnMoeSAqICgyKmVyciArIGVycioqMikpIDwgMS81ICogMTAqKigtcHJlYyAtIDIpCisgICAgICogICBVc2UgKHNlZSBfbXBkX3FleHApOgorICAgICAqICAgICA1KSBhYnMoeCkgPD0gOS8xMCAqIDEwKiotcCA9PT4gYWJzKGUqKnggLSAxKSA8IDEwKiotcAorICAgICAqICAgV2l0aCAyKSwgNCkgYW5kIDUpOgorICAgICAqICAgICA2KSBhYnMoZSoqKHkgKiAoMiplcnIgKyBlcnIqKjIpKSAtIDEpIDwgMTAqKigtcHJlYyAtIDIpCisgICAgICogICBUaGUgY29tcGxldGUgcmVsYXRpdmUgZXJyb3Igb2YgMSkgaXM6CisgICAgICogICAgIDcpIGFicyhyZXN1bHQgLSBlKip5KSA8IGUqKnkgKiAxLzUgKiAxMCoqKC1wcmVjIC0gMSkKKyAgICAgKi8KKyAgICBtcGRfcWxuKHJlc3VsdCwgYmFzZSwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgbXBkX3FtdWwocmVzdWx0LCByZXN1bHQsICZ0ZXhwLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICBtcGRfcWV4cChyZXN1bHQsIHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisKKyAgICBtcGRfZGVsKCZ0ZXhwKTsKKyAgICAqc3RhdHVzIHw9ICh3b3JrY3R4LnN0YXR1cyZNUERfRXJyb3JzKTsKKyAgICAqc3RhdHVzIHw9IChNUERfSW5leGFjdHxNUERfUm91bmRlZCk7Cit9CisKKy8qIFRoZSBwb3dlciBmdW5jdGlvbjogYmFzZSoqZXhwICovCit2b2lkCittcGRfcXBvdyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYmFzZSwgY29uc3QgbXBkX3QgKmV4cCwKKyAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50OF90IHJlc3VsdHNpZ24gPSAwOworICAgIGludCBpbnRleHAgPSAwOworICAgIGludCBjbXA7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChiYXNlKSB8fCBtcGRfaXNzcGVjaWFsKGV4cCkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFucyhyZXN1bHQsIGJhc2UsIGV4cCwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG1wZF9pc2ludGVnZXIoZXhwKSkgeworICAgICAgICBpbnRleHAgPSAxOworICAgICAgICByZXN1bHRzaWduID0gbXBkX2lzbmVnYXRpdmUoYmFzZSkgJiYgbXBkX2lzb2RkKGV4cCk7CisgICAgfQorCisgICAgaWYgKG1wZF9pc3plcm8oYmFzZSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc3plcm8oZXhwKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc25lZ2F0aXZlKGV4cCkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgcmVzdWx0c2lnbiwgTVBEX0lORik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgcmVzdWx0c2lnbiwgMCwgMCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzbmVnYXRpdmUoYmFzZSkpIHsKKyAgICAgICAgaWYgKCFpbnRleHAgfHwgbXBkX2lzaW5maW5pdGUoZXhwKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIGlmIChtcGRfaXNpbmZpbml0ZShleHApKSB7CisgICAgICAgIC8qIHBvd2VyIG9mIG9uZSAqLworICAgICAgICBjbXAgPSBfcWNoZWNrX3Bvd19vbmVfaW5mKHJlc3VsdCwgYmFzZSwgcmVzdWx0c2lnbiwgY3R4LCBzdGF0dXMpOworICAgICAgICBpZiAoY21wID09IDApIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNtcCAqPSBtcGRfYXJpdGhfc2lnbihleHApOworICAgICAgICAgICAgaWYgKGNtcCA8IDApIHsKKyAgICAgICAgICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgcmVzdWx0c2lnbiwgMCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIHJlc3VsdHNpZ24sIE1QRF9JTkYpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc2luZmluaXRlKGJhc2UpKSB7CisgICAgICAgIGlmIChtcGRfaXN6ZXJvKGV4cCkpIHsKKyAgICAgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCByZXN1bHRzaWduLCAxLCAwKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChtcGRfaXNuZWdhdGl2ZShleHApKSB7CisgICAgICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgcmVzdWx0c2lnbiwgMCwgMCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIHJlc3VsdHNpZ24sIE1QRF9JTkYpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm8oZXhwKSkgeworICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgcmVzdWx0c2lnbiwgMSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKF9xY2hlY2tfcG93X29uZShyZXN1bHQsIGJhc2UsIGV4cCwgcmVzdWx0c2lnbiwgY3R4LCBzdGF0dXMpID09IDApIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoX3FjaGVja19wb3dfYm91bmRzKHJlc3VsdCwgYmFzZSwgZXhwLCByZXN1bHRzaWduLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChpbnRleHApIHsKKyAgICAgICAgX21wZF9xcG93X2ludChyZXN1bHQsIGJhc2UsIGV4cCwgcmVzdWx0c2lnbiwgY3R4LCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX21wZF9xcG93X3JlYWwocmVzdWx0LCBiYXNlLCBleHAsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgaWYgKCFtcGRfaXNzcGVjaWFsKHJlc3VsdCkgJiYgX21wZF9jbXAocmVzdWx0LCAmb25lKSA9PSAwKSB7CisgICAgICAgICAgICBtcGRfc3NpemVfdCBzaGlmdCA9IGN0eC0+cHJlYy0xOworICAgICAgICAgICAgbXBkX3FzaGlmdGwocmVzdWx0LCAmb25lLCBzaGlmdCwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJlc3VsdC0+ZXhwID0gLXNoaWZ0OworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShyZXN1bHQpKSB7CisgICAgICAgICAgICAvKiBmb3IgUk9VTkRfRE9XTiwgUk9VTkRfRkxPT1IsIGV0Yy4gKi8KKyAgICAgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBNUERfUE9TLCAxLCBNUERfRVhQX0lORik7CisgICAgICAgIH0KKyAgICAgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKKyAgICB9Cit9CisKKy8qCisgKiBJbnRlcm5hbCBmdW5jdGlvbjogSW50ZWdlciBwb3dtb2Qgd2l0aCBtcGRfdWludF90IGV4cG9uZW50LCBiYXNlIGlzIG1vZGlmaWVkIQorICogRnVuY3Rpb24gY2FuIGZhaWwgd2l0aCBNUERfTWFsbG9jX2Vycm9yLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfcXBvd21vZF91aW50KG1wZF90ICpyZXN1bHQsIG1wZF90ICpiYXNlLCBtcGRfdWludF90IGV4cCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF90ICptb2QsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjb250ZXh0OworCisgICAgbXBkX21heGNvbnRleHQoJm1heGNvbnRleHQpOworCisgICAgLyogcmVzaXplIHRvIHNtYWxsZXIgY2Fubm90IGZhaWwgKi8KKyAgICBtcGRfcWNvcHkocmVzdWx0LCAmb25lLCBzdGF0dXMpOworCisgICAgd2hpbGUgKGV4cCA+IDApIHsKKyAgICAgICAgaWYgKGV4cCAmIDEpIHsKKyAgICAgICAgICAgIF9tcGRfcW11bF9leGFjdChyZXN1bHQsIHJlc3VsdCwgYmFzZSwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgICAgICBtcGRfcXJlbShyZXN1bHQsIHJlc3VsdCwgbW9kLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBfbXBkX3FtdWxfZXhhY3QoYmFzZSwgYmFzZSwgYmFzZSwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIG1wZF9xcmVtKGJhc2UsIGJhc2UsIG1vZCwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIGV4cCA+Pj0gMTsKKyAgICB9Cit9CisKKy8qIFRoZSBwb3dtb2QgZnVuY3Rpb246IChiYXNlKipleHApICUgbW9kICovCit2b2lkCittcGRfcXBvd21vZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYmFzZSwgY29uc3QgbXBkX3QgKmV4cCwKKyAgICAgICAgICAgIGNvbnN0IG1wZF90ICptb2QsCisgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjb250ZXh0OworICAgIE1QRF9ORVdfU1RBVElDKHRiYXNlLDAsMCwwLDApOworICAgIE1QRF9ORVdfU1RBVElDKHRleHAsMCwwLDAsMCk7CisgICAgTVBEX05FV19TVEFUSUModG1vZCwwLDAsMCwwKTsKKyAgICBNUERfTkVXX1NUQVRJQyh0bXAsMCwwLDAsMCk7CisgICAgTVBEX05FV19DT05TVCh0d28sMCwwLDEsMSwxLDIpOworICAgIG1wZF9zc2l6ZV90IHRiYXNlX2V4cCwgdGV4cF9leHA7CisgICAgbXBkX3NzaXplX3QgaTsKKyAgICBtcGRfdCB0OworICAgIG1wZF91aW50X3QgcjsKKyAgICB1aW50OF90IHNpZ247CisKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGJhc2UpIHx8IG1wZF9pc3NwZWNpYWwoZXhwKSB8fCBtcGRfaXNzcGVjaWFsKG1vZCkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfM25hbnMocmVzdWx0LCBiYXNlLCBleHAsIG1vZCwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICBpZiAoIV9tcGRfaXNpbnQoYmFzZSkgfHwgIV9tcGRfaXNpbnQoZXhwKSB8fCAhX21wZF9pc2ludChtb2QpKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKG1vZCkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtb2QtPmRpZ2l0cyttb2QtPmV4cCA+IGN0eC0+cHJlYykgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaWduID0gKG1wZF9pc25lZ2F0aXZlKGJhc2UpKSAmJiAobXBkX2lzb2RkKGV4cCkpOworICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoZXhwKSkgeworICAgICAgICBpZiAobXBkX2lzemVyb2NvZWZmKGJhc2UpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgciA9IChfbXBkX2NtcF9hYnMobW9kLCAmb25lKT09MCkgPyAwIDogMTsKKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIHNpZ24sIHIsIDApOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXNuZWdhdGl2ZShleHApKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGJhc2UpKSB7CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBzaWduLCAwLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjb250ZXh0KTsKKworICAgIG1wZF9xcmVzY2FsZSgmdG1vZCwgbW9kLCAwLCAmbWF4Y29udGV4dCwgJm1heGNvbnRleHQuc3RhdHVzKTsKKyAgICBpZiAobWF4Y29udGV4dC5zdGF0dXMmTVBEX0Vycm9ycykgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBtYXhjb250ZXh0LnN0YXR1cyZNUERfRXJyb3JzLCBzdGF0dXMpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAgbWF4Y29udGV4dC5zdGF0dXMgPSAwOworICAgIG1wZF9zZXRfcG9zaXRpdmUoJnRtb2QpOworCisgICAgbXBkX3Fyb3VuZF90b19pbnQoJnRiYXNlLCBiYXNlLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBtcGRfc2V0X3Bvc2l0aXZlKCZ0YmFzZSk7CisgICAgdGJhc2VfZXhwID0gdGJhc2UuZXhwOworICAgIHRiYXNlLmV4cCA9IDA7CisKKyAgICBtcGRfcXJvdW5kX3RvX2ludCgmdGV4cCwgZXhwLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICB0ZXhwX2V4cCA9IHRleHAuZXhwOworICAgIHRleHAuZXhwID0gMDsKKworICAgIC8qIGJhc2UgPSAoYmFzZS5pbnQgJSBtb2R1bG8gKiBwb3coMTAsIGJhc2UuZXhwLCBtb2R1bG8pKSAlIG1vZHVsbyAqLworICAgIG1wZF9xcmVtKCZ0YmFzZSwgJnRiYXNlLCAmdG1vZCwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgbXBkX3FzaGlmdGwocmVzdWx0LCAmb25lLCB0YmFzZV9leHAsIHN0YXR1cyk7CisgICAgbXBkX3FyZW0ocmVzdWx0LCByZXN1bHQsICZ0bW9kLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBfbXBkX3FtdWxfZXhhY3QoJnRiYXNlLCAmdGJhc2UsIHJlc3VsdCwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgbXBkX3FyZW0oJnRiYXNlLCAmdGJhc2UsICZ0bW9kLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBpZiAobXBkX2lzc3BlY2lhbCgmdGJhc2UpIHx8CisgICAgICAgIG1wZF9pc3NwZWNpYWwoJnRleHApIHx8CisgICAgICAgIG1wZF9pc3NwZWNpYWwoJnRtb2QpKSB7CisgICAgICAgIGdvdG8gbXBkX2Vycm9yczsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgdGV4cF9leHA7IGkrKykgeworICAgICAgICBfbXBkX3Fwb3dtb2RfdWludCgmdG1wLCAmdGJhc2UsIDEwLCAmdG1vZCwgc3RhdHVzKTsKKyAgICAgICAgdCA9IHRtcDsKKyAgICAgICAgdG1wID0gdGJhc2U7CisgICAgICAgIHRiYXNlID0gdDsKKyAgICB9CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoJnRiYXNlKSkgeworICAgICAgICBnb3RvIG1wZF9lcnJvcnM7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICB9CisKKyAgICAvKiByZXNpemUgdG8gc21hbGxlciBjYW5ub3QgZmFpbCAqLworICAgIG1wZF9xY29weShyZXN1bHQsICZvbmUsIHN0YXR1cyk7CisgICAgd2hpbGUgKG1wZF9pc2Zpbml0ZSgmdGV4cCkgJiYgIW1wZF9pc3plcm8oJnRleHApKSB7CisgICAgICAgIGlmIChtcGRfaXNvZGQoJnRleHApKSB7CisgICAgICAgICAgICBfbXBkX3FtdWxfZXhhY3QocmVzdWx0LCByZXN1bHQsICZ0YmFzZSwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgICAgICBtcGRfcXJlbShyZXN1bHQsIHJlc3VsdCwgJnRtb2QsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIF9tcGRfcW11bF9leGFjdCgmdGJhc2UsICZ0YmFzZSwgJnRiYXNlLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgbXBkX3FyZW0oJnRiYXNlLCAmdGJhc2UsICZ0bW9kLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgbXBkX3FkaXZpbnQoJnRleHAsICZ0ZXhwLCAmdHdvLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICB9CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoJnRleHApIHx8IG1wZF9pc3NwZWNpYWwoJnRiYXNlKSB8fAorICAgICAgICBtcGRfaXNzcGVjaWFsKCZ0bW9kKSB8fCBtcGRfaXNzcGVjaWFsKHJlc3VsdCkpIHsKKyAgICAgICAgLyogTVBEX01hbGxvY19lcnJvciAqLworICAgICAgICBnb3RvIG1wZF9lcnJvcnM7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBtcGRfc2V0X3NpZ24ocmVzdWx0LCBzaWduKTsKKyAgICB9CisKK291dDoKKyAgICBtcGRfZGVsKCZ0YmFzZSk7CisgICAgbXBkX2RlbCgmdGV4cCk7CisgICAgbXBkX2RlbCgmdG1vZCk7CisgICAgbXBkX2RlbCgmdG1wKTsKKyAgICByZXR1cm47CisKK21wZF9lcnJvcnM6CisgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBNUERfUE9TLCBNUERfTkFOKTsKKyAgICBnb3RvIG91dDsKK30KKwordm9pZAorbXBkX3FxdWFudGl6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50MzJfdCB3b3Jrc3RhdHVzID0gMDsKKyAgICBtcGRfc3NpemVfdCBiX2V4cCA9IGItPmV4cDsKKyAgICBtcGRfc3NpemVfdCBleHBkaWZmLCBzaGlmdDsKKyAgICBtcGRfdWludF90IHJuZDsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFucyhyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShhKSAmJiBtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoYi0+ZXhwID4gY3R4LT5lbWF4IHx8IGItPmV4cCA8IG1wZF9ldGlueShjdHgpKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtcGRfaXN6ZXJvKGEpKSB7CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBtcGRfc2lnbihhKSwgMCwgYi0+ZXhwKTsKKyAgICAgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgZXhwZGlmZiA9IGEtPmV4cCAtIGItPmV4cDsKKyAgICBpZiAoYS0+ZGlnaXRzICsgZXhwZGlmZiA+IGN0eC0+cHJlYykgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZXhwZGlmZiA+PSAwKSB7CisgICAgICAgIHNoaWZ0ID0gZXhwZGlmZjsKKyAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bChyZXN1bHQsIGEsIHNoaWZ0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LT5leHAgPSBiX2V4cDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIEF0IHRoaXMgcG9pbnQgZXhwZGlmZiA8IDAgYW5kIGEtPmRpZ2l0cytleHBkaWZmIDw9IHByZWMsCisgICAgICAgICAqIHNvIHRoZSBzaGlmdCBiZWZvcmUgYW4gaW5jcmVtZW50IHdpbGwgZml0IGluIHByZWMuICovCisgICAgICAgIHNoaWZ0ID0gLWV4cGRpZmY7CisgICAgICAgIHJuZCA9IG1wZF9xc2hpZnRyKHJlc3VsdCwgYSwgc2hpZnQsIHN0YXR1cyk7CisgICAgICAgIGlmIChybmQgPT0gTVBEX1VJTlRfTUFYKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LT5leHAgPSBiX2V4cDsKKyAgICAgICAgaWYgKCFfbXBkX2FwcGx5X3JvdW5kX2ZpdChyZXN1bHQsIHJuZCwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgd29ya3N0YXR1cyB8PSBNUERfUm91bmRlZDsKKyAgICAgICAgaWYgKHJuZCkgeworICAgICAgICAgICAgd29ya3N0YXR1cyB8PSBNUERfSW5leGFjdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtcGRfYWRqZXhwKHJlc3VsdCkgPiBjdHgtPmVtYXggfHwKKyAgICAgICAgbXBkX2FkamV4cChyZXN1bHQpIDwgbXBkX2V0aW55KGN0eCkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgKnN0YXR1cyB8PSB3b3Jrc3RhdHVzOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKK3ZvaWQKK21wZF9xcmVkdWNlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zc2l6ZV90IHNoaWZ0LCBtYXhleHAsIG1heHNoaWZ0OworICAgIHVpbnQ4X3Qgc2lnbl9hID0gbXBkX3NpZ24oYSk7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW4ocmVzdWx0LCBhLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKKyAgICBpZiAobXBkX2lzc3BlY2lhbChyZXN1bHQpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm8ocmVzdWx0KSkgeworICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgc2lnbl9hLCAwLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNoaWZ0ID0gbXBkX3RyYWlsX3plcm9zKHJlc3VsdCk7CisgICAgbWF4ZXhwID0gKGN0eC0+Y2xhbXApID8gbXBkX2V0b3AoY3R4KSA6IGN0eC0+ZW1heDsKKyAgICAvKiBBZnRlciB0aGUgZmluYWxpemluZyBhYm92ZSByZXN1bHQtPmV4cCA8PSBtYXhleHAuICovCisgICAgbWF4c2hpZnQgPSBtYXhleHAgLSByZXN1bHQtPmV4cDsKKyAgICBzaGlmdCA9IChzaGlmdCA+IG1heHNoaWZ0KSA/IG1heHNoaWZ0IDogc2hpZnQ7CisKKyAgICBtcGRfcXNoaWZ0cl9pbnBsYWNlKHJlc3VsdCwgc2hpZnQpOworICAgIHJlc3VsdC0+ZXhwICs9IHNoaWZ0OworfQorCit2b2lkCittcGRfcXJlbShtcGRfdCAqciwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIE1QRF9ORVdfU1RBVElDKHEsMCwwLDAsMCk7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMociwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IociwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHIsIGEsIHN0YXR1cyk7CisgICAgICAgICAgICBtcGRfcWZpbmFsaXplKHIsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvKiBkZWJ1ZyAqLworICAgICAgICBhYm9ydCgpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYikpIHsKKyAgICAgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHIsIE1QRF9EaXZpc2lvbl91bmRlZmluZWQsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IociwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfbXBkX3FkaXZtb2QoJnEsIHIsIGEsIGIsIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfZGVsKCZxKTsKKyAgICBtcGRfcWZpbmFsaXplKHIsIGN0eCwgc3RhdHVzKTsKK30KKwordm9pZAorbXBkX3FyZW1fbmVhcihtcGRfdCAqciwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4OworICAgIE1QRF9ORVdfU1RBVElDKGJ0bXAsMCwwLDAsMCk7CisgICAgTVBEX05FV19TVEFUSUMocSwwLDAsMCwwKTsKKyAgICBtcGRfc3NpemVfdCBleHBkaWZmLCBxZGlnaXRzOworICAgIGludCBjbXAsIGlzb2RkLCBhbGxuaW5lOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHIsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShhKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHIsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX2lzaW5maW5pdGUoYikpIHsKKyAgICAgICAgICAgIG1wZF9xY29weShyLCBhLCBzdGF0dXMpOworICAgICAgICAgICAgbXBkX3FmaW5hbGl6ZShyLCBjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLyogZGVidWcgKi8KKyAgICAgICAgYWJvcnQoKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGIpKSB7CisgICAgICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyLCAgTVBEX0RpdmlzaW9uX3VuZGVmaW5lZCwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyLCAgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAociA9PSBiKSB7CisgICAgICAgIGlmICghbXBkX3Fjb3B5KCZidG1wLCBiLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IociwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBiID0gJmJ0bXA7CisgICAgfQorCisgICAgX21wZF9xZGl2bW9kKCZxLCByLCBhLCBiLCBjdHgsIHN0YXR1cyk7CisgICAgaWYgKG1wZF9pc25hbigmcSkgfHwgbXBkX2lzbmFuKHIpKSB7CisgICAgICAgIGdvdG8gZmluaXNoOworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKHIpKSB7CisgICAgICAgIGdvdG8gZmluaXNoOworICAgIH0KKworICAgIGV4cGRpZmYgPSBtcGRfYWRqZXhwKGIpIC0gbXBkX2FkamV4cChyKTsKKyAgICBpZiAoLTEgPD0gZXhwZGlmZiAmJiBleHBkaWZmIDw9IDEpIHsKKworICAgICAgICBhbGxuaW5lID0gbXBkX2NvZWZmX2lzYWxsbmluZSgmcSk7CisgICAgICAgIHFkaWdpdHMgPSBxLmRpZ2l0czsKKyAgICAgICAgaXNvZGQgPSBtcGRfaXNvZGQoJnEpOworCisgICAgICAgIG1wZF9tYXhjb250ZXh0KCZ3b3JrY3R4KTsKKyAgICAgICAgaWYgKG1wZF9zaWduKGEpID09IG1wZF9zaWduKGIpKSB7CisgICAgICAgICAgICAvKiBzaWduKHIpID09IHNpZ24oYikgKi8KKyAgICAgICAgICAgIF9tcGRfcXN1YigmcSwgciwgYiwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBzaWduKHIpICE9IHNpZ24oYikgKi8KKyAgICAgICAgICAgIF9tcGRfcWFkZCgmcSwgciwgYiwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAod29ya2N0eC5zdGF0dXMmTVBEX0Vycm9ycykgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHIsIHdvcmtjdHguc3RhdHVzJk1QRF9FcnJvcnMsIHN0YXR1cyk7CisgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgfQorCisgICAgICAgIGNtcCA9IF9tcGRfY21wX2FicygmcSwgcik7CisgICAgICAgIGlmIChjbXAgPCAwIHx8IChjbXAgPT0gMCAmJiBpc29kZCkpIHsKKyAgICAgICAgICAgIC8qIGFicyhyKSA+IGFicyhiKS8yIG9yIGFicyhyKSA9PSBhYnMoYikvMiBhbmQgaXNvZGQocXVvdGllbnQpICovCisgICAgICAgICAgICBpZiAoYWxsbmluZSAmJiBxZGlnaXRzID09IGN0eC0+cHJlYykgeworICAgICAgICAgICAgICAgIC8qIGFicyhxdW90aWVudCkgKyAxID09IDEwKipwcmVjICovCisgICAgICAgICAgICAgICAgbXBkX3NldGVycm9yKHIsIE1QRF9EaXZpc2lvbl9pbXBvc3NpYmxlLCBzdGF0dXMpOworICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbXBkX3Fjb3B5KHIsICZxLCBzdGF0dXMpOworICAgICAgICB9CisgICAgfQorCisKK2ZpbmlzaDoKKyAgICBtcGRfZGVsKCZidG1wKTsKKyAgICBtcGRfZGVsKCZxKTsKKyAgICBtcGRfcWZpbmFsaXplKHIsIGN0eCwgc3RhdHVzKTsKK30KKworc3RhdGljIHZvaWQKK19tcGRfcXJlc2NhbGUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGV4cCwKKyAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zc2l6ZV90IGV4cGRpZmYsIHNoaWZ0OworICAgIG1wZF91aW50X3Qgcm5kOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtcGRfaXN6ZXJvKGEpKSB7CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBtcGRfc2lnbihhKSwgMCwgZXhwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGV4cGRpZmYgPSBhLT5leHAgLSBleHA7CisgICAgaWYgKGV4cGRpZmYgPj0gMCkgeworICAgICAgICBzaGlmdCA9IGV4cGRpZmY7CisgICAgICAgIGlmIChhLT5kaWdpdHMgKyBzaGlmdCA+IE1QRF9NQVhfUFJFQysxKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bChyZXN1bHQsIGEsIHNoaWZ0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LT5leHAgPSBleHA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzaGlmdCA9IC1leHBkaWZmOworICAgICAgICBybmQgPSBtcGRfcXNoaWZ0cihyZXN1bHQsIGEsIHNoaWZ0LCBzdGF0dXMpOworICAgICAgICBpZiAocm5kID09IE1QRF9VSU5UX01BWCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHJlc3VsdC0+ZXhwID0gZXhwOworICAgICAgICBfbXBkX2FwcGx5X3JvdW5kX2V4Y2VzcyhyZXN1bHQsIHJuZCwgY3R4LCBzdGF0dXMpOworICAgICAgICAqc3RhdHVzIHw9IE1QRF9Sb3VuZGVkOworICAgICAgICBpZiAocm5kKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbmV4YWN0OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1wZF9pc3N1Ym5vcm1hbChyZXN1bHQsIGN0eCkpIHsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfU3Vibm9ybWFsOworICAgIH0KK30KKworLyoKKyAqIFJlc2NhbGUgYSBudW1iZXIgc28gdGhhdCBpdCBoYXMgZXhwb25lbnQgJ2V4cCcuIERvZXMgbm90IHJlZ2FyZCBjb250ZXh0CisgKiBwcmVjaXNpb24sIGVtYXgsIGVtaW4sIGJ1dCB1c2VzIHRoZSByb3VuZGluZyBtb2RlLiBTcGVjaWFsIG51bWJlcnMgYXJlCisgKiBxdWlldGx5IGNvcGllZC4gUmVzdHJpY3Rpb25zOgorICoKKyAqICAgICBNUERfTUlOX0VUSU5ZIDw9IGV4cCA8PSBNUERfTUFYX0VNQVgrMQorICogICAgIHJlc3VsdC0+ZGlnaXRzIDw9IE1QRF9NQVhfUFJFQysxCisgKi8KK3ZvaWQKK21wZF9xcmVzY2FsZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgZXhwLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAoZXhwID4gTVBEX01BWF9FTUFYKzEgfHwgZXhwIDwgTVBEX01JTl9FVElOWSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfbXBkX3FyZXNjYWxlKHJlc3VsdCwgYSwgZXhwLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qCisgKiBTYW1lIGFzIG1wZF9xcmVzY2FsZSwgYnV0IHdpdGggcmVsYXhlZCByZXN0cmljdGlvbnMuIFRoZSByZXN1bHQgb2YgdGhpcworICogZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgZm9ybWF0dGluZyBhIG51bWJlciBhbmQgbmV2ZXIgYXMgaW5wdXQKKyAqIGZvciBvdGhlciBvcGVyYXRpb25zLgorICoKKyAqICAgICBNUERfTUlOX0VUSU5ZLU1QRF9NQVhfUFJFQyA8PSBleHAgPD0gTVBEX01BWF9FTUFYKzEKKyAqICAgICByZXN1bHQtPmRpZ2l0cyA8PSBNUERfTUFYX1BSRUMrMQorICovCit2b2lkCittcGRfcXJlc2NhbGVfZm10KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBleHAsCisgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAoZXhwID4gTVBEX01BWF9FTUFYKzEgfHwgZXhwIDwgTVBEX01JTl9FVElOWS1NUERfTUFYX1BSRUMpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgX21wZF9xcmVzY2FsZShyZXN1bHQsIGEsIGV4cCwgY3R4LCBzdGF0dXMpOworfQorCisvKiBSb3VuZCB0byBhbiBpbnRlZ2VyIGFjY29yZGluZyB0byAnYWN0aW9uJyBhbmQgY3R4LT5yb3VuZC4gKi8KK2VudW0ge1RPX0lOVF9FWEFDVCwgVE9fSU5UX1NJTEVOVCwgVE9fSU5UX1RSVU5DfTsKK3N0YXRpYyB2b2lkCitfbXBkX3Fyb3VuZF90b19pbnRlZ3JhbChpbnQgYWN0aW9uLCBtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfdWludF90IHJuZDsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbihyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGEtPmV4cCA+PSAwKSB7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgbXBkX3NpZ24oYSksIDAsIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcm5kID0gbXBkX3FzaGlmdHIocmVzdWx0LCBhLCAtYS0+ZXhwLCBzdGF0dXMpOworICAgIGlmIChybmQgPT0gTVBEX1VJTlRfTUFYKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcmVzdWx0LT5leHAgPSAwOworCisgICAgaWYgKGFjdGlvbiA9PSBUT19JTlRfRVhBQ1QgfHwgYWN0aW9uID09IFRPX0lOVF9TSUxFTlQpIHsKKyAgICAgICAgX21wZF9hcHBseV9yb3VuZF9leGNlc3MocmVzdWx0LCBybmQsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgaWYgKGFjdGlvbiA9PSBUT19JTlRfRVhBQ1QpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX1JvdW5kZWQ7CisgICAgICAgICAgICBpZiAocm5kKSB7CisgICAgICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW5leGFjdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZAorbXBkX3Fyb3VuZF90b19pbnR4KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICAodm9pZClfbXBkX3Fyb3VuZF90b19pbnRlZ3JhbChUT19JTlRfRVhBQ1QsIHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworfQorCit2b2lkCittcGRfcXJvdW5kX3RvX2ludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICAodm9pZClfbXBkX3Fyb3VuZF90b19pbnRlZ3JhbChUT19JTlRfU0lMRU5ULCByZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKK30KKwordm9pZAorbXBkX3F0cnVuYyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgICh2b2lkKV9tcGRfcXJvdW5kX3RvX2ludGVncmFsKFRPX0lOVF9UUlVOQywgcmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7Cit9CisKK3ZvaWQKK21wZF9xZmxvb3IobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHggPSAqY3R4OworICAgIHdvcmtjdHgucm91bmQgPSBNUERfUk9VTkRfRkxPT1I7CisgICAgKHZvaWQpX21wZF9xcm91bmRfdG9faW50ZWdyYWwoVE9fSU5UX1NJTEVOVCwgcmVzdWx0LCBhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3b3JrY3R4LCBzdGF0dXMpOworfQorCit2b2lkCittcGRfcWNlaWwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eCA9ICpjdHg7CisgICAgd29ya2N0eC5yb3VuZCA9IE1QRF9ST1VORF9DRUlMSU5HOworICAgICh2b2lkKV9tcGRfcXJvdW5kX3RvX2ludGVncmFsKFRPX0lOVF9TSUxFTlQsIHJlc3VsdCwgYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd29ya2N0eCwgc3RhdHVzKTsKK30KKworaW50CittcGRfc2FtZV9xdWFudHVtKGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYikKK3sKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIHJldHVybiAoKG1wZF9pc25hbihhKSAmJiBtcGRfaXNuYW4oYikpIHx8CisgICAgICAgICAgICAgICAgKG1wZF9pc2luZmluaXRlKGEpICYmIG1wZF9pc2luZmluaXRlKGIpKSk7CisgICAgfQorCisgICAgcmV0dXJuIGEtPmV4cCA9PSBiLT5leHA7Cit9CisKKy8qIFNjaGVkdWxlIHRoZSBpbmNyZWFzZSBpbiBwcmVjaXNpb24gZm9yIHRoZSBOZXd0b24gaXRlcmF0aW9uLiAqLworc3RhdGljIGlubGluZSBpbnQKK3JlY3ByX3NjaGVkdWxlX3ByZWMobXBkX3NzaXplX3Qga2xpc3RbTVBEX01BWF9QUkVDX0xPRzJdLAorICAgICAgICAgICAgICAgICAgICBtcGRfc3NpemVfdCBtYXhwcmVjLCBtcGRfc3NpemVfdCBpbml0cHJlYykKK3sKKyAgICBtcGRfc3NpemVfdCBrOworICAgIGludCBpOworCisgICAgYXNzZXJ0KG1heHByZWMgPiAwICYmIGluaXRwcmVjID4gMCk7CisgICAgaWYgKG1heHByZWMgPD0gaW5pdHByZWMpIHJldHVybiAtMTsKKworICAgIGkgPSAwOyBrID0gbWF4cHJlYzsKKyAgICBkbyB7CisgICAgICAgIGsgPSAoaysxKSAvIDI7CisgICAgICAgIGtsaXN0W2krK10gPSBrOworICAgIH0gd2hpbGUgKGsgPiBpbml0cHJlYyk7CisKKyAgICByZXR1cm4gaS0xOworfQorCisvKgorICogSW5pdGlhbCBhcHByb3hpbWF0aW9uIGZvciB0aGUgcmVjaXByb2NhbDoKKyAqICAgIGtfMCA6PSBNUERfUkRJR0lUUy0yCisgKiAgICB6XzAgOj0gMTAqKigta18wKSAqIGZsb29yKDEwKiooMiprXzAgKyAyKSAvIGZsb29yKHYgKiAxMCoqKGtfMCArIDIpKSkKKyAqIEFic29sdXRlIGVycm9yOgorICogICAgfDEvdiAtIHpfMHwgPCAxMCoqKC1rXzApCisgKiBBQ0wyIHByb29mOiBtYXhlcnJvci1pbnZlcnNlLWFwcHJveAorICovCitzdGF0aWMgdm9pZAorX21wZF9xcmVjaXByb2NhbF9hcHByb3gobXBkX3QgKnosIGNvbnN0IG1wZF90ICp2LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF91aW50X3QgcDEwZGF0YVsyXSA9IHswLCBtcGRfcG93MTBbTVBEX1JESUdJVFMtMl19OworICAgIG1wZF91aW50X3QgZHVtbXksIHdvcmQ7CisgICAgaW50IG47CisKKyAgICBhc3NlcnQodi0+ZXhwID09IC12LT5kaWdpdHMpOworCisgICAgX21wZF9nZXRfbXNkaWdpdHMoJmR1bW15LCAmd29yZCwgdiwgTVBEX1JESUdJVFMpOworICAgIG4gPSBtcGRfd29yZF9kaWdpdHMod29yZCk7CisgICAgd29yZCAqPSBtcGRfcG93MTBbTVBEX1JESUdJVFMtbl07CisKKyAgICBtcGRfcXJlc2l6ZSh6LCAyLCBzdGF0dXMpOworICAgICh2b2lkKV9tcGRfc2hvcnRkaXYoei0+ZGF0YSwgcDEwZGF0YSwgMiwgd29yZCk7CisKKyAgICBtcGRfY2xlYXJfZmxhZ3Moeik7CisgICAgei0+ZXhwID0gLShNUERfUkRJR0lUUy0yKTsKKyAgICB6LT5sZW4gPSAoei0+ZGF0YVsxXSA9PSAwKSA/IDEgOiAyOworICAgIG1wZF9zZXRkaWdpdHMoeik7Cit9CisKKy8qCisgKiBSZWNpcHJvY2FsLCBjYWxjdWxhdGVkIHdpdGggTmV3dG9uJ3MgTWV0aG9kLiBBc3N1bXB0aW9uOiByZXN1bHQgIT0gYS4KKyAqIE5PVEU6IFRoZSBjb21tZW50cyBpbiB0aGUgZnVuY3Rpb24gc2hvdyB0aGF0IGNlcnRhaW4gb3BlcmF0aW9ucyBhcmUKKyAqIGV4YWN0LiBUaGUgcHJvb2YgZm9yIHRoZSBtYXhpbXVtIGVycm9yIGlzIHRvbyBsb25nIHRvIGZpdCBpbiBoZXJlLgorICogQUNMMiBwcm9vZjogbWF4ZXJyb3ItaW52ZXJzZS1jb21wbGV0ZQorICovCitzdGF0aWMgdm9pZAorX21wZF9xcmVjaXByb2NhbChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3QgdmFyY29udGV4dCwgbWF4Y29udGV4dDsKKyAgICBtcGRfdCAqeiA9IHJlc3VsdDsgICAgICAgICAvKiBjdXJyZW50IGFwcHJveGltYXRpb24gKi8KKyAgICBtcGRfdCAqdjsgICAgICAgICAgICAgICAgICAvKiBhLCBub3JtYWxpemVkIHRvIGEgbnVtYmVyIGJldHdlZW4gMC4xIGFuZCAxICovCisgICAgTVBEX05FV19TSEFSRUQodnRtcCwgYSk7ICAgLyogdiBzaGFyZXMgZGF0YSB3aXRoIGEgKi8KKyAgICBNUERfTkVXX1NUQVRJQyhzLDAsMCwwLDApOyAvKiB0ZW1wb3JhcnkgdmFyaWFibGUgKi8KKyAgICBNUERfTkVXX1NUQVRJQyh0LDAsMCwwLDApOyAvKiB0ZW1wb3JhcnkgdmFyaWFibGUgKi8KKyAgICBNUERfTkVXX0NPTlNUKHR3bywwLDAsMSwxLDEsMik7IC8qIGNvbnN0IDIgKi8KKyAgICBtcGRfc3NpemVfdCBrbGlzdFtNUERfTUFYX1BSRUNfTE9HMl07CisgICAgbXBkX3NzaXplX3QgYWRqLCBtYXhwcmVjLCBpbml0cHJlYzsKKyAgICB1aW50OF90IHNpZ24gPSBtcGRfc2lnbihhKTsKKyAgICBpbnQgaTsKKworICAgIGFzc2VydChyZXN1bHQgIT0gYSk7CisKKyAgICB2ID0gJnZ0bXA7CisgICAgbXBkX2NsZWFyX2ZsYWdzKHYpOworICAgIGFkaiA9IHYtPmRpZ2l0cyArIHYtPmV4cDsKKyAgICB2LT5leHAgPSAtdi0+ZGlnaXRzOworCisgICAgLyogSW5pdGlhbCBhcHByb3hpbWF0aW9uICovCisgICAgX21wZF9xcmVjaXByb2NhbF9hcHByb3goeiwgdiwgc3RhdHVzKTsKKworICAgIG1wZF9tYXhjb250ZXh0KCZ2YXJjb250ZXh0KTsKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisgICAgdmFyY29udGV4dC5yb3VuZCA9IG1heGNvbnRleHQucm91bmQgPSBNUERfUk9VTkRfVFJVTkM7CisgICAgdmFyY29udGV4dC5lbWF4ID0gbWF4Y29udGV4dC5lbWF4ID0gTVBEX01BWF9FTUFYICsgMTAwOworICAgIHZhcmNvbnRleHQuZW1pbiA9IG1heGNvbnRleHQuZW1pbiA9IE1QRF9NSU5fRU1JTiAtIDEwMDsKKyAgICBtYXhjb250ZXh0LnByZWMgPSBNUERfTUFYX1BSRUMgKyAxMDA7CisKKyAgICBtYXhwcmVjID0gY3R4LT5wcmVjOworICAgIG1heHByZWMgKz0gMjsKKyAgICBpbml0cHJlYyA9IE1QRF9SRElHSVRTLTM7CisKKyAgICBpID0gcmVjcHJfc2NoZWR1bGVfcHJlYyhrbGlzdCwgbWF4cHJlYywgaW5pdHByZWMpOworICAgIGZvciAoOyBpID49IDA7IGktLSkgeworICAgICAgICAgLyogTG9vcCBpbnZhcmlhbnQ6IHotPmRpZ2l0cyA8PSBrbGlzdFtpXSs3ICovCisgICAgICAgICAvKiBMZXQgcyA6PSB6KioyLCBleGFjdCByZXN1bHQgKi8KKyAgICAgICAgX21wZF9xbXVsX2V4YWN0KCZzLCB6LCB6LCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgdmFyY29udGV4dC5wcmVjID0gMiprbGlzdFtpXSArIDU7CisgICAgICAgIGlmICh2LT5kaWdpdHMgPiB2YXJjb250ZXh0LnByZWMpIHsKKyAgICAgICAgICAgIC8qIExldCB0IDo9IHYsIHRydW5jYXRlZCB0byBuID49IDIqays1IGZyYWN0aW9uIGRpZ2l0cyAqLworICAgICAgICAgICAgbXBkX3FzaGlmdHIoJnQsIHYsIHYtPmRpZ2l0cy12YXJjb250ZXh0LnByZWMsIHN0YXR1cyk7CisgICAgICAgICAgICB0LmV4cCA9IC12YXJjb250ZXh0LnByZWM7CisgICAgICAgICAgICAvKiBMZXQgdCA6PSB0cnVuYyh2KSpzLCB0cnVuY2F0ZWQgdG8gbiA+PSAyKmsrMSBmcmFjdGlvbiBkaWdpdHMgKi8KKyAgICAgICAgICAgIG1wZF9xbXVsKCZ0LCAmdCwgJnMsICZ2YXJjb250ZXh0LCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeyAvKiB2LT5kaWdpdHMgPD0gMiprKzUgKi8KKyAgICAgICAgICAgIC8qIExldCB0IDo9IHYqcywgdHJ1bmNhdGVkIHRvIG4gPj0gMiprKzEgZnJhY3Rpb24gZGlnaXRzICovCisgICAgICAgICAgICBtcGRfcW11bCgmdCwgdiwgJnMsICZ2YXJjb250ZXh0LCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIC8qIExldCBzIDo9IDIqeiwgZXhhY3QgcmVzdWx0ICovCisgICAgICAgIF9tcGRfcW11bF9leGFjdCgmcywgeiwgJnR3bywgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIC8qIHMuZGlnaXRzIDwgdC5kaWdpdHMgPD0gMiprKzUsIHxhZGpleHAocyktYWRqZXhwKHQpfCA8PSAxLAorICAgICAgICAgKiBzbyB0aGUgc3VidHJhY3Rpb24gZ2VuZXJhdGVzIGF0IG1vc3QgMiprKzYgPD0ga2xpc3RbaSsxXSs3CisgICAgICAgICAqIGRpZ2l0cy4gVGhlIGxvb3AgaW52YXJpYW50IGlzIHByZXNlcnZlZC4gKi8KKyAgICAgICAgX21wZF9xc3ViX2V4YWN0KHosICZzLCAmdCwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgfQorCisgICAgaWYgKCFtcGRfaXNzcGVjaWFsKHopKSB7CisgICAgICAgIHotPmV4cCAtPSBhZGo7CisgICAgICAgIG1wZF9zZXRfZmxhZ3Moeiwgc2lnbik7CisgICAgfQorCisgICAgbXBkX2RlbCgmcyk7CisgICAgbXBkX2RlbCgmdCk7CisgICAgbXBkX3FmaW5hbGl6ZSh6LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qCisgKiBJbnRlcm5hbCBmdW5jdGlvbiBmb3IgbGFyZ2UgbnVtYmVyczoKKyAqCisgKiAgICAgcSwgciA9IGRpdm1vZChjb2VmZihhKSwgY29lZmYoYikpCisgKgorICogU3RyYXRlZ3k6IE11bHRpcGx5IHRoZSBkaXZpZGVuZCBieSB0aGUgcmVjaXByb2NhbCBvZiB0aGUgZGl2aXNvci4gVGhlCisgKiBpbmV4YWN0IHJlc3VsdCBpcyBmaXhlZCBieSBhIHNtYWxsIGxvb3AsIHVzaW5nIGF0IG1vc3Qgb25lIGl0ZXJhdGlvbi4KKyAqCisgKiBBQ0wyIHByb29mczoKKyAqIC0tLS0tLS0tLS0tLQorICogICAgMSkgcSBpcyBhIG5hdHVyYWwgbnVtYmVyLiAgKG5kaXZtb2QtcXVvdGllbnQtbmF0cCkKKyAqICAgIDIpIHIgaXMgYSBuYXR1cmFsIG51bWJlci4gIChuZGl2bW9kLXJlbWFpbmRlci1uYXRwKQorICogICAgMykgYSA9IHEgKiBiICsgciAgICAgICAgICAgKG5kaXZtb2QtcSpiK3I9PWEpCisgKiAgICA0KSByIDwgYiAgICAgICAgICAgICAgICAgICAobmRpdm1vZC1yZW1haW5kZXItPC1iKQorICovCitzdGF0aWMgdm9pZAorX21wZF9iYXNlX25kaXZtb2QobXBkX3QgKnEsIG1wZF90ICpyLCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKyAgICBtcGRfdCAqcXEgPSBxLCAqcnIgPSByOworICAgIG1wZF90IGFhLCBiYjsKKyAgICBpbnQgazsKKworICAgIF9tcGRfY29weV9zaGFyZWQoJmFhLCBhKTsKKyAgICBfbXBkX2NvcHlfc2hhcmVkKCZiYiwgYik7CisKKyAgICBtcGRfc2V0X3Bvc2l0aXZlKCZhYSk7CisgICAgbXBkX3NldF9wb3NpdGl2ZSgmYmIpOworICAgIGFhLmV4cCA9IDA7CisgICAgYmIuZXhwID0gMDsKKworICAgIGlmIChxID09IGEgfHwgcSA9PSBiKSB7CisgICAgICAgIGlmICgocXEgPSBtcGRfcW5ldygpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9NYWxsb2NfZXJyb3I7CisgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAociA9PSBhIHx8IHIgPT0gYikgeworICAgICAgICBpZiAoKHJyID0gbXBkX3FuZXcoKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfTWFsbG9jX2Vycm9yOworICAgICAgICAgICAgZ290byBuYW5yZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtcGRfbWF4Y29udGV4dCgmd29ya2N0eCk7CisKKyAgICAvKiBMZXQgcHJlYyA6PSBhZGlnaXRzIC0gYmRpZ2l0cyArIDQgKi8KKyAgICB3b3JrY3R4LnByZWMgPSBhLT5kaWdpdHMgLSBiLT5kaWdpdHMgKyAxICsgMzsKKyAgICBpZiAoYS0+ZGlnaXRzID4gTVBEX01BWF9QUkVDIHx8IHdvcmtjdHgucHJlYyA+IE1QRF9NQVhfUFJFQykgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9EaXZpc2lvbl9pbXBvc3NpYmxlOworICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICB9CisKKyAgICAvKiBMZXQgeCA6PSBfbXBkX3FyZWNpcHJvY2FsKGIsIHByZWMpCisgICAgICogVGhlbiB4IGlzIGJvdW5kZWQgYnk6CisgICAgICogICAgMSkgMS9iIC0gMTAqKigtcHJlYyAtIGJkaWdpdHMpIDwgeCA8IDEvYiArIDEwKiooLXByZWMgLSBiZGlnaXRzKQorICAgICAqICAgIDIpIDEvYiAtIDEwKiooLWFkaWdpdHMgLSA0KSA8IHggPCAxL2IgKyAxMCoqKC1hZGlnaXRzIC0gNCkKKyAgICAgKi8KKyAgICBfbXBkX3FyZWNpcHJvY2FsKHJyLCAmYmIsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworCisgICAgLyogR2V0IGFuIGVzdGltYXRlIGZvciB0aGUgcXVvdGllbnQuIExldCBxIDo9IGEgKiB4CisgICAgICogVGhlbiBxIGlzIGJvdW5kZWQgYnk6CisgICAgICogICAgMykgYS9iIC0gMTAqKi00IDwgcSA8IGEvYiArIDEwKiotNAorICAgICAqLworICAgIF9tcGRfcW11bChxcSwgJmFhLCByciwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgLyogVHJ1bmNhdGUgcSB0byBhbiBpbnRlZ2VyOgorICAgICAqICAgIDQpIGEvYiAtIDIgPCB0cnVuYyhxKSA8IGEvYiArIDEKKyAgICAgKi8KKyAgICBtcGRfcXRydW5jKHFxLCBxcSwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisKKyAgICB3b3JrY3R4LnByZWMgPSBhYS5kaWdpdHMgKyAzOworICAgIHdvcmtjdHguZW1heCA9IE1QRF9NQVhfRU1BWCArIDM7CisgICAgd29ya2N0eC5lbWluID0gTVBEX01JTl9FTUlOIC0gMzsKKyAgICAvKiBNdWx0aXBseSB0aGUgZXN0aW1hdGUgZm9yIHEgYnkgYjoKKyAgICAgKiAgICA1KSBhIC0gMiAqIGIgPCB0cnVuYyhxKSAqIGIgPCBhICsgYgorICAgICAqLworICAgIF9tcGRfcW11bChyciwgJmJiLCBxcSwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgLyogR2V0IHRoZSBlc3RpbWF0ZSBmb3IgciBzdWNoIHRoYXQgYSA9IHEgKiBiICsgci4gKi8KKyAgICBfbXBkX3FzdWJfZXhhY3QocnIsICZhYSwgcnIsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworCisgICAgLyogRml4IHRoZSByZXN1bHQuIEF0IHRoaXMgcG9pbnQgLWIgPCByIDwgMipiLCBzbyB0aGUgY29ycmVjdGlvbiBsb29wCisgICAgICAgdGFrZXMgYXQgbW9zdCBvbmUgaXRlcmF0aW9uLiAqLworICAgIGZvciAoayA9IDA7OyBrKyspIHsKKyAgICAgICAgaWYgKG1wZF9pc3NwZWNpYWwocXEpIHx8IG1wZF9pc3NwZWNpYWwocnIpKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9ICh3b3JrY3R4LnN0YXR1cyZNUERfRXJyb3JzKTsKKyAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OworICAgICAgICB9CisgICAgICAgIGlmIChrID4gMikgeyAvKiBBbGxvdyB0d28gaXRlcmF0aW9ucyBkZXNwaXRlIHRoZSBwcm9vZi4gKi8KKyAgICAgICAgICAgIG1wZF9lcnJfd2FybigibGlibXBkZWM6IGludGVybmFsIGVycm9yIGluICIgICAgICAgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICJfbXBkX2Jhc2VfbmRpdm1vZDogcGxlYXNlIHJlcG9ydCIpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsgICAgICAgICAgICAgICAgIC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICB9CisgICAgICAgIC8qIHIgPCAwICovCisgICAgICAgIGVsc2UgaWYgKF9tcGRfY21wKCZ6ZXJvLCBycikgPT0gMSkgeworICAgICAgICAgICAgX21wZF9xYWRkX2V4YWN0KHJyLCByciwgJmJiLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgICAgIF9tcGRfcWFkZF9leGFjdChxcSwgcXEsICZtaW51c19vbmUsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgICAgICB9CisgICAgICAgIC8qIDAgPD0gciA8IGIgKi8KKyAgICAgICAgZWxzZSBpZiAoX21wZF9jbXAocnIsICZiYikgPT0gLTEpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC8qIHIgPj0gYiAqLworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIF9tcGRfcXN1Yl9leGFjdChyciwgcnIsICZiYiwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgICAgICAgICBfbXBkX3FhZGRfZXhhY3QocXEsIHFxLCAmb25lLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChxcSAhPSBxKSB7CisgICAgICAgIGlmICghbXBkX3Fjb3B5KHEsIHFxLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgICAgICB9CisgICAgICAgIG1wZF9kZWwocXEpOworICAgIH0KKyAgICBpZiAocnIgIT0gcikgeworICAgICAgICBpZiAoIW1wZF9xY29weShyLCByciwgc3RhdHVzKSkgeworICAgICAgICAgICAgZ290byBuYW5yZXN1bHQ7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICAgICAgfQorICAgICAgICBtcGRfZGVsKHJyKTsKKyAgICB9CisKKyAgICAqc3RhdHVzIHw9ICh3b3JrY3R4LnN0YXR1cyZNUERfRXJyb3JzKTsKKyAgICByZXR1cm47CisKKworbmFucmVzdWx0OgorICAgIGlmIChxcSAmJiBxcSAhPSBxKSBtcGRfZGVsKHFxKTsKKyAgICBpZiAocnIgJiYgcnIgIT0gcikgbXBkX2RlbChycik7CisgICAgbXBkX3NldHNwZWNpYWwocSwgTVBEX1BPUywgTVBEX05BTik7CisgICAgbXBkX3NldHNwZWNpYWwociwgTVBEX1BPUywgTVBEX05BTik7Cit9CisKKy8qIExJQk1QREVDX09OTFkgKi8KKy8qCisgKiBTY2hlZHVsZSB0aGUgb3B0aW1hbCBwcmVjaXNpb24gaW5jcmVhc2UgZm9yIHRoZSBOZXd0b24gaXRlcmF0aW9uLgorICogICB2IDo9IGlucHV0IG9wZXJhbmQKKyAqICAgel8wIDo9IGluaXRpYWwgYXBwcm94aW1hdGlvbgorICogICBpbml0cHJlYyA6PSBuYXR1cmFsIG51bWJlciBzdWNoIHRoYXQgYWJzKHNxcnQodikgLSB6XzApIDwgMTAqKi1pbml0cHJlYworICogICBtYXhwcmVjIDo9IHRhcmdldCBwcmVjaXNpb24KKyAqCisgKiBGb3IgY29udmVuaWVuY2UgdGhlIG91dHB1dCBrbGlzdCBjb250YWlucyB0aGUgZWxlbWVudHMgaW4gcmV2ZXJzZSBvcmRlcjoKKyAqICAga2xpc3QgOj0gW2tfbi0xLCAuLi4sIGtfMF0sIHdoZXJlCisgKiAgICAgMSkga18wIDw9IGluaXRwcmVjIGFuZAorICogICAgIDIpIGFicyhzcXJ0KHYpIC0gcmVzdWx0KSA8IDEwKiooLTIqa19uLTEgKyAyKSA8PSAxMCoqLW1heHByZWMuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50CitpbnZyb290X3NjaGVkdWxlX3ByZWMobXBkX3NzaXplX3Qga2xpc3RbTVBEX01BWF9QUkVDX0xPRzJdLAorICAgICAgICAgICAgICAgICAgICAgIG1wZF9zc2l6ZV90IG1heHByZWMsIG1wZF9zc2l6ZV90IGluaXRwcmVjKQoreworICAgIG1wZF9zc2l6ZV90IGs7CisgICAgaW50IGk7CisKKyAgICBhc3NlcnQobWF4cHJlYyA+PSAzICYmIGluaXRwcmVjID49IDMpOworICAgIGlmIChtYXhwcmVjIDw9IGluaXRwcmVjKSByZXR1cm4gLTE7CisKKyAgICBpID0gMDsgayA9IG1heHByZWM7CisgICAgZG8geworICAgICAgICBrID0gKGsrMykgLyAyOworICAgICAgICBrbGlzdFtpKytdID0gazsKKyAgICB9IHdoaWxlIChrID4gaW5pdHByZWMpOworCisgICAgcmV0dXJuIGktMTsKK30KKworLyoKKyAqIEluaXRpYWwgYXBwcm94aW1hdGlvbiBmb3IgdGhlIGludmVyc2Ugc3F1YXJlIHJvb3QgZnVuY3Rpb24uCisgKiAgIElucHV0OgorICogICAgIHYgOj0gcmF0aW9uYWwgbnVtYmVyLCB3aXRoIDEgPD0gdiA8IDEwMAorICogICAgIHZoYXQgOj0gZmxvb3IodiAqIDEwKio2KQorICogICBPdXRwdXQ6CisgKiAgICAgeiA6PSBhcHByb3hpbWF0aW9uIHRvIDEvc3FydCh2KSwgc3VjaCB0aGF0IGFicyh6IC0gMS9zcXJ0KHYpKSA8IDEwKiotMy4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitfaW52cm9vdF9pbml0X2FwcHJveChtcGRfdCAqeiwgbXBkX3VpbnRfdCB2aGF0KQoreworICAgIG1wZF91aW50X3QgbG8gPSAxMDAwOworICAgIG1wZF91aW50X3QgaGkgPSAxMDAwMDsKKyAgICBtcGRfdWludF90IGEsIHNxOworCisgICAgYXNzZXJ0KGxvKmxvIDw9IHZoYXQgJiYgdmhhdCA8IChoaSsxKSooaGkrMSkpOworCisgICAgZm9yKDs7KSB7CisgICAgICAgIGEgPSAobG8gKyBoaSkgLyAyOworICAgICAgICBzcSA9IGEgKiBhOworICAgICAgICBpZiAodmhhdCA+PSBzcSkgeworICAgICAgICAgICAgaWYgKHZoYXQgPCBzcSArIDIqYSArIDEpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxvID0gYSArIDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBoaSA9IGEgLSAxOworICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiBBZnRlciB0aGUgYmluYXJ5IHNlYXJjaCB3ZSBoYXZlOgorICAgICAqICAxKSBhKioyIDw9IGZsb29yKHYgKiAxMCoqNikgPCAoYSArIDEpKioyCisgICAgICogVGhpcyBpbXBsaWVzOgorICAgICAqICAyKSBhKioyIDw9IHYgKiAxMCoqNiA8IChhICsgMSkqKjIKKyAgICAgKiAgMykgYSA8PSBzcXJ0KHYpICogMTAqKjMgPCBhICsgMQorICAgICAqIFNpbmNlIDEwKiozIDw9IGE6CisgICAgICogIDQpIDAgPD0gMTAqKnByZWMvYSAtIDEvc3FydCh2KSA8IDEwKiotcHJlYworICAgICAqIFdlIGhhdmU6CisgICAgICogIDUpIDEwKiozL2EgLSAxMCoqLTMgPCBmbG9vcigxMCoqOS9hKSAqIDEwKiotNiA8PSAxMCoqMy9hCisgICAgICogTWVyZ2luZyA0KSBhbmQgNSk6CisgICAgICogIDYpIGFicyhmbG9vcigxMCoqOS9hKSAqIDEwKiotNiAtIDEvc3FydCh2KSkgPCAxMCoqLTMKKyAgICAgKi8KKyAgICBtcGRfbWluYWxsb2Moeik7CisgICAgbXBkX2NsZWFyX2ZsYWdzKHopOworICAgIHotPmRhdGFbMF0gPSAxMDAwMDAwMDAwVUwgLyBhOworICAgIHotPmxlbiA9IDE7CisgICAgei0+ZXhwID0gLTY7CisgICAgbXBkX3NldGRpZ2l0cyh6KTsKK30KKworLyoKKyAqIFNldCAncmVzdWx0JyB0byAxL3NxcnQoYSkuCisgKiAgIFJlbGF0aXZlIGVycm9yOiBhYnMocmVzdWx0IC0gMS9zcXJ0KGEpKSA8IDEwKiotcHJlYyAqIDEvc3FydChhKQorICovCitzdGF0aWMgdm9pZAorX21wZF9xaW52cm9vdChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworICAgIG1wZF9jb250ZXh0X3QgdmFyY29udGV4dCwgbWF4Y29udGV4dDsKKyAgICBtcGRfdCAqeiA9IHJlc3VsdDsgICAgICAgICAvKiBjdXJyZW50IGFwcHJveGltYXRpb24gKi8KKyAgICBtcGRfdCAqdjsgICAgICAgICAgICAgICAgICAvKiBhLCBub3JtYWxpemVkIHRvIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgMTAwICovCisgICAgTVBEX05FV19TSEFSRUQodnRtcCwgYSk7ICAgLyogYnkgZGVmYXVsdCB2IHdpbGwgc2hhcmUgZGF0YSB3aXRoIGEgKi8KKyAgICBNUERfTkVXX1NUQVRJQyhzLDAsMCwwLDApOyAvKiB0ZW1wb3JhcnkgdmFyaWFibGUgKi8KKyAgICBNUERfTkVXX1NUQVRJQyh0LDAsMCwwLDApOyAvKiB0ZW1wb3JhcnkgdmFyaWFibGUgKi8KKyAgICBNUERfTkVXX0NPTlNUKG9uZV9oYWxmLDAsLTEsMSwxLDEsNSk7CisgICAgTVBEX05FV19DT05TVCh0aHJlZSwwLDAsMSwxLDEsMyk7CisgICAgbXBkX3NzaXplX3Qga2xpc3RbTVBEX01BWF9QUkVDX0xPRzJdOworICAgIG1wZF9zc2l6ZV90IGlkZWFsX2V4cCwgc2hpZnQ7CisgICAgbXBkX3NzaXplX3QgYWRqLCB0ejsKKyAgICBtcGRfc3NpemVfdCBtYXhwcmVjLCBmcmFjZGlnaXRzOworICAgIG1wZF91aW50X3QgdmhhdCwgZHVtbXk7CisgICAgaW50IGksIG47CisKKworICAgIGlkZWFsX2V4cCA9IC0oYS0+ZXhwIC0gKGEtPmV4cCAmIDEpKSAvIDI7CisKKyAgICB2ID0gJnZ0bXA7CisgICAgaWYgKHJlc3VsdCA9PSBhKSB7CisgICAgICAgIGlmICgodiA9IG1wZF9xbmNvcHkoYSkpID09IE5VTEwpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBub3JtYWxpemUgYSB0byAxIDw9IHYgPCAxMDAgKi8KKyAgICBpZiAoKHYtPmRpZ2l0cyt2LT5leHApICYgMSkgeworICAgICAgICBmcmFjZGlnaXRzID0gdi0+ZGlnaXRzIC0gMTsKKyAgICAgICAgdi0+ZXhwID0gLWZyYWNkaWdpdHM7CisgICAgICAgIG4gPSAodi0+ZGlnaXRzID4gNykgPyA3IDogKGludCl2LT5kaWdpdHM7CisgICAgICAgIC8qIExldCB2aGF0IDo9IGZsb29yKHYgKiAxMCoqKDIqaW5pdHByZWMpKSAqLworICAgICAgICBfbXBkX2dldF9tc2RpZ2l0cygmZHVtbXksICZ2aGF0LCB2LCBuKTsKKyAgICAgICAgaWYgKG4gPCA3KSB7CisgICAgICAgICAgICB2aGF0ICo9IG1wZF9wb3cxMFs3LW5dOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmcmFjZGlnaXRzID0gdi0+ZGlnaXRzIC0gMjsKKyAgICAgICAgdi0+ZXhwID0gLWZyYWNkaWdpdHM7CisgICAgICAgIG4gPSAodi0+ZGlnaXRzID4gOCkgPyA4IDogKGludCl2LT5kaWdpdHM7CisgICAgICAgIC8qIExldCB2aGF0IDo9IGZsb29yKHYgKiAxMCoqKDIqaW5pdHByZWMpKSAqLworICAgICAgICBfbXBkX2dldF9tc2RpZ2l0cygmZHVtbXksICZ2aGF0LCB2LCBuKTsKKyAgICAgICAgaWYgKG4gPCA4KSB7CisgICAgICAgICAgICB2aGF0ICo9IG1wZF9wb3cxMFs4LW5dOworICAgICAgICB9CisgICAgfQorICAgIGFkaiA9IChhLT5leHAtdi0+ZXhwKSAvIDI7CisKKyAgICAvKiBpbml0aWFsIGFwcHJveGltYXRpb24gKi8KKyAgICBfaW52cm9vdF9pbml0X2FwcHJveCh6LCB2aGF0KTsKKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjb250ZXh0KTsKKyAgICBtcGRfbWF4Y29udGV4dCgmdmFyY29udGV4dCk7CisgICAgdmFyY29udGV4dC5yb3VuZCA9IE1QRF9ST1VORF9UUlVOQzsKKyAgICBtYXhwcmVjID0gY3R4LT5wcmVjICsgMTsKKworICAgIC8qIGluaXRwcmVjID09IDMgKi8KKyAgICBpID0gaW52cm9vdF9zY2hlZHVsZV9wcmVjKGtsaXN0LCBtYXhwcmVjLCAzKTsKKyAgICBmb3IgKDsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgdmFyY29udGV4dC5wcmVjID0gMiprbGlzdFtpXSsyOworICAgICAgICBtcGRfcW11bCgmcywgeiwgeiwgJm1heGNvbnRleHQsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgaWYgKHYtPmRpZ2l0cyA+IHZhcmNvbnRleHQucHJlYykgeworICAgICAgICAgICAgc2hpZnQgPSB2LT5kaWdpdHMgLSB2YXJjb250ZXh0LnByZWM7CisgICAgICAgICAgICBtcGRfcXNoaWZ0cigmdCwgdiwgc2hpZnQsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgICAgIHQuZXhwICs9IHNoaWZ0OworICAgICAgICAgICAgbXBkX3FtdWwoJnQsICZ0LCAmcywgJnZhcmNvbnRleHQsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9xbXVsKCZ0LCB2LCAmcywgJnZhcmNvbnRleHQsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBtcGRfcXN1YigmdCwgJnRocmVlLCAmdCwgJm1heGNvbnRleHQsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgbXBkX3FtdWwoeiwgeiwgJnQsICZ2YXJjb250ZXh0LCAmd29ya3N0YXR1cyk7CisgICAgICAgIG1wZF9xbXVsKHosIHosICZvbmVfaGFsZiwgJm1heGNvbnRleHQsICZ3b3Jrc3RhdHVzKTsKKyAgICB9CisKKyAgICB6LT5leHAgLT0gYWRqOworCisgICAgdHogPSBtcGRfdHJhaWxfemVyb3MocmVzdWx0KTsKKyAgICBzaGlmdCA9IGlkZWFsX2V4cCAtIHJlc3VsdC0+ZXhwOworICAgIHNoaWZ0ID0gKHR6ID4gc2hpZnQpID8gc2hpZnQgOiB0ejsKKyAgICBpZiAoc2hpZnQgPiAwKSB7CisgICAgICAgIG1wZF9xc2hpZnRyX2lucGxhY2UocmVzdWx0LCBzaGlmdCk7CisgICAgICAgIHJlc3VsdC0+ZXhwICs9IHNoaWZ0OworICAgIH0KKworCisgICAgbXBkX2RlbCgmcyk7CisgICAgbXBkX2RlbCgmdCk7CisgICAgaWYgKHYgIT0gJnZ0bXApIG1wZF9kZWwodik7CisgICAgKnN0YXR1cyB8PSAod29ya3N0YXR1cyZNUERfRXJyb3JzKTsKKyAgICAqc3RhdHVzIHw9IChNUERfUm91bmRlZHxNUERfSW5leGFjdCk7Cit9CisKK3ZvaWQKK21wZF9xaW52cm9vdChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4OworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFuKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc25lZ2F0aXZlKGEpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLyogcG9zaXRpdmUgaW5maW5pdHkgKi8KKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIE1QRF9QT1MsIDAsIG1wZF9ldGlueShjdHgpKTsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfQ2xhbXBlZDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzemVybyhhKSkgeworICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIG1wZF9zaWduKGEpLCBNUERfSU5GKTsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfRGl2aXNpb25fYnlfemVybzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzbmVnYXRpdmUoYSkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd29ya2N0eCA9ICpjdHg7CisgICAgd29ya2N0eC5wcmVjICs9IDI7CisgICAgd29ya2N0eC5yb3VuZCA9IE1QRF9ST1VORF9IQUxGX0VWRU47CisgICAgX21wZF9xaW52cm9vdChyZXN1bHQsIGEsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisvKiBFTkQgTElCTVBERUNfT05MWSAqLworCisvKiBBbGdvcml0aG0gZnJvbSBkZWNpbWFsLnB5ICovCit2b2lkCittcGRfcXNxcnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3QgbWF4Y29udGV4dDsKKyAgICBNUERfTkVXX1NUQVRJQyhjLDAsMCwwLDApOworICAgIE1QRF9ORVdfU1RBVElDKHEsMCwwLDAsMCk7CisgICAgTVBEX05FV19TVEFUSUMociwwLDAsMCwwKTsKKyAgICBNUERfTkVXX0NPTlNUKHR3bywwLDAsMSwxLDEsMik7CisgICAgbXBkX3NzaXplX3QgcHJlYywgaWRlYWxfZXhwOworICAgIG1wZF9zc2l6ZV90IGwsIHNoaWZ0OworICAgIGludCBleGFjdCA9IDA7CisKKworICAgIGlkZWFsX2V4cCA9IChhLT5leHAgLSAoYS0+ZXhwICYgMSkpIC8gMjsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbihyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNuZWdhdGl2ZShhKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgTVBEX1BPUywgTVBEX0lORik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm8oYSkpIHsKKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIG1wZF9zaWduKGEpLCAwLCBpZGVhbF9leHApOworICAgICAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXNuZWdhdGl2ZShhKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisgICAgcHJlYyA9IGN0eC0+cHJlYyArIDE7CisKKyAgICBpZiAoIW1wZF9xY29weSgmYywgYSwgc3RhdHVzKSkgeworICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICB9CisgICAgYy5leHAgPSAwOworCisgICAgaWYgKGEtPmV4cCAmIDEpIHsKKyAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bCgmYywgJmMsIDEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisgICAgICAgIGwgPSAoYS0+ZGlnaXRzID4+IDEpICsgMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGwgPSAoYS0+ZGlnaXRzICsgMSkgPj4gMTsKKyAgICB9CisKKyAgICBzaGlmdCA9IHByZWMgLSBsOworICAgIGlmIChzaGlmdCA+PSAwKSB7CisgICAgICAgIGlmICghbXBkX3FzaGlmdGwoJmMsICZjLCAyKnNoaWZ0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICAgICAgfQorICAgICAgICBleGFjdCA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBleGFjdCA9ICFtcGRfcXNoaWZ0cl9pbnBsYWNlKCZjLCAtMipzaGlmdCk7CisgICAgfQorCisgICAgaWRlYWxfZXhwIC09IHNoaWZ0OworCisgICAgLyogZmluZCByZXN1bHQgPSBmbG9vcihzcXJ0KGMpKSB1c2luZyBOZXd0b24ncyBtZXRob2QgKi8KKyAgICBpZiAoIW1wZF9xc2hpZnRsKHJlc3VsdCwgJm9uZSwgcHJlYywgc3RhdHVzKSkgeworICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICB9CisKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBfbXBkX3FkaXZtb2QoJnEsICZyLCAmYywgcmVzdWx0LCAmbWF4Y29udGV4dCwgJm1heGNvbnRleHQuc3RhdHVzKTsKKyAgICAgICAgaWYgKG1wZF9pc3NwZWNpYWwocmVzdWx0KSB8fCBtcGRfaXNzcGVjaWFsKCZxKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgbWF4Y29udGV4dC5zdGF0dXMmTVBEX0Vycm9ycywgc3RhdHVzKTsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgICAgIGlmIChfbXBkX2NtcChyZXN1bHQsICZxKSA8PSAwKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBfbXBkX3FhZGRfZXhhY3QocmVzdWx0LCByZXN1bHQsICZxLCAmbWF4Y29udGV4dCwgJm1heGNvbnRleHQuc3RhdHVzKTsKKyAgICAgICAgaWYgKG1wZF9pc3NwZWNpYWwocmVzdWx0KSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgbWF4Y29udGV4dC5zdGF0dXMmTVBEX0Vycm9ycywgc3RhdHVzKTsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgICAgIF9tcGRfcWRpdm1vZChyZXN1bHQsICZyLCByZXN1bHQsICZ0d28sICZtYXhjb250ZXh0LCAmbWF4Y29udGV4dC5zdGF0dXMpOworICAgIH0KKworICAgIGlmIChleGFjdCkgeworICAgICAgICBfbXBkX3FtdWxfZXhhY3QoJnIsIHJlc3VsdCwgcmVzdWx0LCAmbWF4Y29udGV4dCwgJm1heGNvbnRleHQuc3RhdHVzKTsKKyAgICAgICAgaWYgKG1wZF9pc3NwZWNpYWwoJnIpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBtYXhjb250ZXh0LnN0YXR1cyZNUERfRXJyb3JzLCBzdGF0dXMpOworICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICAgICAgZXhhY3QgPSAoX21wZF9jbXAoJnIsICZjKSA9PSAwKTsKKyAgICB9CisKKyAgICBpZiAoZXhhY3QpIHsKKyAgICAgICAgaWYgKHNoaWZ0ID49IDApIHsKKyAgICAgICAgICAgIG1wZF9xc2hpZnRyX2lucGxhY2UocmVzdWx0LCBzaGlmdCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKHJlc3VsdCwgcmVzdWx0LCAtc2hpZnQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZGVhbF9leHAgKz0gc2hpZnQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpbnQgbHNkID0gKGludCltcGRfbHNkKHJlc3VsdC0+ZGF0YVswXSk7CisgICAgICAgIGlmIChsc2QgPT0gMCB8fCBsc2QgPT0gNSkgeworICAgICAgICAgICAgcmVzdWx0LT5kYXRhWzBdICs9IDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXN1bHQtPmV4cCA9IGlkZWFsX2V4cDsKKworCitvdXQ6CisgICAgbXBkX2RlbCgmYyk7CisgICAgbXBkX2RlbCgmcSk7CisgICAgbXBkX2RlbCgmcik7CisgICAgbWF4Y29udGV4dCA9ICpjdHg7CisgICAgbWF4Y29udGV4dC5yb3VuZCA9IE1QRF9ST1VORF9IQUxGX0VWRU47CisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIHJldHVybjsKKworbWFsbG9jX2Vycm9yOgorICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgZ290byBvdXQ7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZSBjb252ZXJzaW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBTcGFjZSBuZWVkZWQgdG8gcmVwcmVzZW50IGFuIGludGVnZXIgbXBkX3QgaW4gYmFzZSAnYmFzZScuICovCitzaXplX3QKK21wZF9zaXplaW5iYXNlKGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCBiYXNlKQoreworICAgIGRvdWJsZSB4OworICAgIHNpemVfdCBkaWdpdHM7CisKKyAgICBhc3NlcnQobXBkX2lzaW50ZWdlcihhKSk7CisgICAgYXNzZXJ0KGJhc2UgPj0gMik7CisKKyAgICBpZiAobXBkX2lzemVybyhhKSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBkaWdpdHMgPSBhLT5kaWdpdHMrYS0+ZXhwOworICAgIGFzc2VydChkaWdpdHMgPiAwKTsKKworI2lmZGVmIENPTkZJR182NAorICAgIC8qIGNlaWwoMjcxMTQzNzE1MjU5OTI5NCAvIGxvZzEwKDIpKSArIDQgPT0gMioqNTMgKi8KKyAgICBpZiAoZGlnaXRzID4gMjcxMTQzNzE1MjU5OTI5NFVMTCkgeworICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgfQorI2VuZGlmCisKKyAgICB4ID0gKGRvdWJsZSlkaWdpdHMgLyBsb2cxMChiYXNlKTsKKyAgICByZXR1cm4gKHggPiBTSVpFX01BWC0xKSA/IFNJWkVfTUFYIDogKHNpemVfdCl4ICsgMTsKK30KKworLyogU3BhY2UgbmVlZGVkIHRvIGltcG9ydCBhIGJhc2UgJ2Jhc2UnIGludGVnZXIgb2YgbGVuZ3RoICdzcmNsZW4nLiAqLworc3RhdGljIG1wZF9zc2l6ZV90CitfbXBkX2ltcG9ydHNpemUoc2l6ZV90IHNyY2xlbiwgdWludDMyX3QgYmFzZSkKK3sKKyAgICBkb3VibGUgeDsKKworICAgIGFzc2VydChzcmNsZW4gPiAwKTsKKyAgICBhc3NlcnQoYmFzZSA+PSAyKTsKKworI2lmIFNJWkVfTUFYID09IFVJTlQ2NF9NQVgKKyAgICBpZiAoc3JjbGVuID4gKDFVTEw8PDUzKSkgeworICAgICAgICByZXR1cm4gTVBEX1NTSVpFX01BWDsKKyAgICB9CisjZW5kaWYKKworICAgIHggPSAoZG91YmxlKXNyY2xlbiAqIChsb2cxMChiYXNlKS9NUERfUkRJR0lUUyk7CisgICAgcmV0dXJuICh4ID49IE1QRF9NQVhJTVBPUlQpID8gTVBEX1NTSVpFX01BWCA6IChtcGRfc3NpemVfdCl4ICsgMTsKK30KKworc3RhdGljIHVpbnQ4X3QKK21wZF9yZXNpemVfdTE2KHVpbnQxNl90ICoqdywgc2l6ZV90IG5tZW1iKQoreworICAgIHVpbnQ4X3QgZXJyID0gMDsKKyAgICAqdyA9IG1wZF9yZWFsbG9jKCp3LCBubWVtYiwgc2l6ZW9mICoqdywgJmVycik7CisgICAgcmV0dXJuICFlcnI7Cit9CisKK3N0YXRpYyB1aW50OF90CittcGRfcmVzaXplX3UzMih1aW50MzJfdCAqKncsIHNpemVfdCBubWVtYikKK3sKKyAgICB1aW50OF90IGVyciA9IDA7CisgICAgKncgPSBtcGRfcmVhbGxvYygqdywgbm1lbWIsIHNpemVvZiAqKncsICZlcnIpOworICAgIHJldHVybiAhZXJyOworfQorCitzdGF0aWMgc2l6ZV90CitfYmFzZWNvbnZfdG9fdTE2KHVpbnQxNl90ICoqdywgc2l6ZV90IHdsZW4sIG1wZF91aW50X3Qgd2Jhc2UsCisgICAgICAgICAgICAgICAgIG1wZF91aW50X3QgKnUsIG1wZF9zc2l6ZV90IHVsZW4pCit7CisgICAgc2l6ZV90IG4gPSAwOworCisgICAgYXNzZXJ0KHdsZW4gPiAwICYmIHVsZW4gPiAwKTsKKyAgICBhc3NlcnQod2Jhc2UgPD0gKDFVPDwxNikpOworCisgICAgZG8geworICAgICAgICBpZiAobiA+PSB3bGVuKSB7CisgICAgICAgICAgICBpZiAoIW1wZF9yZXNpemVfdTE2KHcsIG4rMSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3bGVuID0gbisxOworICAgICAgICB9CisgICAgICAgICgqdylbbisrXSA9ICh1aW50MTZfdClfbXBkX3Nob3J0ZGl2KHUsIHUsIHVsZW4sIHdiYXNlKTsKKyAgICAgICAgLyogdWxlbiBpcyBhdCBsZWFzdCAxLiB1W3VsZW4tMV0gY2FuIG9ubHkgYmUgemVybyBpZiB1bGVuID09IDEuICovCisgICAgICAgIHVsZW4gPSBfbXBkX3JlYWxfc2l6ZSh1LCB1bGVuKTsKKworICAgIH0gd2hpbGUgKHVbdWxlbi0xXSAhPSAwKTsKKworICAgIHJldHVybiBuOworfQorCitzdGF0aWMgc2l6ZV90CitfY29lZmZfZnJvbV91MTYobXBkX3QgKncsIG1wZF9zc2l6ZV90IHdsZW4sCisgICAgICAgICAgICAgICAgY29uc3QgbXBkX3VpbnRfdCAqdSwgc2l6ZV90IHVsZW4sIHVpbnQzMl90IHViYXNlLAorICAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3NzaXplX3QgbiA9IDA7CisgICAgbXBkX3VpbnRfdCBjYXJyeTsKKworICAgIGFzc2VydCh3bGVuID4gMCAmJiB1bGVuID4gMCk7CisgICAgYXNzZXJ0KHViYXNlIDw9ICgxVTw8MTYpKTsKKworICAgIHctPmRhdGFbbisrXSA9IHVbLS11bGVuXTsKKyAgICB3aGlsZSAoLS11bGVuICE9IFNJWkVfTUFYKSB7CisgICAgICAgIGNhcnJ5ID0gX21wZF9zaG9ydG11bF9jKHctPmRhdGEsIHctPmRhdGEsIG4sIHViYXNlKTsKKyAgICAgICAgaWYgKGNhcnJ5KSB7CisgICAgICAgICAgICBpZiAobiA+PSB3bGVuKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtcGRfcXJlc2l6ZSh3LCBuKzEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3bGVuID0gbisxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdy0+ZGF0YVtuKytdID0gY2Fycnk7CisgICAgICAgIH0KKyAgICAgICAgY2FycnkgPSBfbXBkX3Nob3J0YWRkKHctPmRhdGEsIG4sIHVbdWxlbl0pOworICAgICAgICBpZiAoY2FycnkpIHsKKyAgICAgICAgICAgIGlmIChuID49IHdsZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1wZF9xcmVzaXplKHcsIG4rMSwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdsZW4gPSBuKzE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3LT5kYXRhW24rK10gPSBjYXJyeTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBuOworfQorCisvKiB0YXJnZXQgYmFzZSB3YmFzZSA8IHNvdXJjZSBiYXNlIHViYXNlICovCitzdGF0aWMgc2l6ZV90CitfYmFzZWNvbnZfdG9fc21hbGxlcih1aW50MzJfdCAqKncsIHNpemVfdCB3bGVuLCB1aW50MzJfdCB3YmFzZSwKKyAgICAgICAgICAgICAgICAgICAgIG1wZF91aW50X3QgKnUsIG1wZF9zc2l6ZV90IHVsZW4sIG1wZF91aW50X3QgdWJhc2UpCit7CisgICAgc2l6ZV90IG4gPSAwOworCisgICAgYXNzZXJ0KHdsZW4gPiAwICYmIHVsZW4gPiAwKTsKKyAgICBhc3NlcnQod2Jhc2UgPCB1YmFzZSk7CisKKyAgICBkbyB7CisgICAgICAgIGlmIChuID49IHdsZW4pIHsKKyAgICAgICAgICAgIGlmICghbXBkX3Jlc2l6ZV91MzIodywgbisxKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBTSVpFX01BWDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdsZW4gPSBuKzE7CisgICAgICAgIH0KKyAgICAgICAgKCp3KVtuKytdID0gKHVpbnQzMl90KV9tcGRfc2hvcnRkaXZfYih1LCB1LCB1bGVuLCB3YmFzZSwgdWJhc2UpOworICAgICAgICAvKiB1bGVuIGlzIGF0IGxlYXN0IDEuIHVbdWxlbi0xXSBjYW4gb25seSBiZSB6ZXJvIGlmIHVsZW4gPT0gMS4gKi8KKyAgICAgICAgdWxlbiA9IF9tcGRfcmVhbF9zaXplKHUsIHVsZW4pOworCisgICAgfSB3aGlsZSAodVt1bGVuLTFdICE9IDApOworCisgICAgcmV0dXJuIG47Cit9CisKKyNpZmRlZiBDT05GSUdfMzIKKy8qIHRhcmdldCBiYXNlICd3YmFzZScgPT0gc291cmNlIGJhc2UgJ3ViYXNlJyAqLworc3RhdGljIHNpemVfdAorX2NvcHlfZXF1YWxfYmFzZSh1aW50MzJfdCAqKncsIHNpemVfdCB3bGVuLAorICAgICAgICAgICAgICAgICBjb25zdCB1aW50MzJfdCAqdSwgc2l6ZV90IHVsZW4pCit7CisgICAgaWYgKHdsZW4gPCB1bGVuKSB7CisgICAgICAgIGlmICghbXBkX3Jlc2l6ZV91MzIodywgdWxlbikpIHsKKyAgICAgICAgICAgIHJldHVybiBTSVpFX01BWDsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1lbWNweSgqdywgdSwgdWxlbiAqIChzaXplb2YgKip3KSk7CisgICAgcmV0dXJuIHVsZW47Cit9CisKKy8qIHRhcmdldCBiYXNlICd3YmFzZScgPiBzb3VyY2UgYmFzZSAndWJhc2UnICovCitzdGF0aWMgc2l6ZV90CitfYmFzZWNvbnZfdG9fbGFyZ2VyKHVpbnQzMl90ICoqdywgc2l6ZV90IHdsZW4sIG1wZF91aW50X3Qgd2Jhc2UsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF91aW50X3QgKnUsIHNpemVfdCB1bGVuLCBtcGRfdWludF90IHViYXNlKQoreworICAgIHNpemVfdCBuID0gMDsKKyAgICBtcGRfdWludF90IGNhcnJ5OworCisgICAgYXNzZXJ0KHdsZW4gPiAwICYmIHVsZW4gPiAwKTsKKyAgICBhc3NlcnQodWJhc2UgPCB3YmFzZSk7CisKKyAgICAoKncpW24rK10gPSB1Wy0tdWxlbl07CisgICAgd2hpbGUgKC0tdWxlbiAhPSBTSVpFX01BWCkgeworICAgICAgICBjYXJyeSA9IF9tcGRfc2hvcnRtdWxfYigqdywgKncsIG4sIHViYXNlLCB3YmFzZSk7CisgICAgICAgIGlmIChjYXJyeSkgeworICAgICAgICAgICAgaWYgKG4gPj0gd2xlbikgeworICAgICAgICAgICAgICAgIGlmICghbXBkX3Jlc2l6ZV91MzIodywgbisxKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdsZW4gPSBuKzE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAoKncpW24rK10gPSBjYXJyeTsKKyAgICAgICAgfQorICAgICAgICBjYXJyeSA9IF9tcGRfc2hvcnRhZGRfYigqdywgbiwgdVt1bGVuXSwgd2Jhc2UpOworICAgICAgICBpZiAoY2FycnkpIHsKKyAgICAgICAgICAgIGlmIChuID49IHdsZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1wZF9yZXNpemVfdTMyKHcsIG4rMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3bGVuID0gbisxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKCp3KVtuKytdID0gY2Fycnk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbjsKK30KKworLyogdGFyZ2V0IGJhc2Ugd2Jhc2UgPCBzb3VyY2UgYmFzZSB1YmFzZSAqLworc3RhdGljIHNpemVfdAorX2NvZWZmX2Zyb21fbGFyZ2VyX2Jhc2UobXBkX3QgKncsIHNpemVfdCB3bGVuLCBtcGRfdWludF90IHdiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgbXBkX3VpbnRfdCAqdSwgbXBkX3NzaXplX3QgdWxlbiwgbXBkX3VpbnRfdCB1YmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgc2l6ZV90IG4gPSAwOworCisgICAgYXNzZXJ0KHdsZW4gPiAwICYmIHVsZW4gPiAwKTsKKyAgICBhc3NlcnQod2Jhc2UgPCB1YmFzZSk7CisKKyAgICBkbyB7CisgICAgICAgIGlmIChuID49IHdsZW4pIHsKKyAgICAgICAgICAgIGlmICghbXBkX3FyZXNpemUodywgbisxLCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd2xlbiA9IG4rMTsKKyAgICAgICAgfQorICAgICAgICB3LT5kYXRhW24rK10gPSAodWludDMyX3QpX21wZF9zaG9ydGRpdl9iKHUsIHUsIHVsZW4sIHdiYXNlLCB1YmFzZSk7CisgICAgICAgIC8qIHVsZW4gaXMgYXQgbGVhc3QgMS4gdVt1bGVuLTFdIGNhbiBvbmx5IGJlIHplcm8gaWYgdWxlbiA9PSAxLiAqLworICAgICAgICB1bGVuID0gX21wZF9yZWFsX3NpemUodSwgdWxlbik7CisKKyAgICB9IHdoaWxlICh1W3VsZW4tMV0gIT0gMCk7CisKKyAgICByZXR1cm4gbjsKK30KKyNlbmRpZgorCisvKiB0YXJnZXQgYmFzZSAnd2Jhc2UnID4gc291cmNlIGJhc2UgJ3ViYXNlJyAqLworc3RhdGljIHNpemVfdAorX2NvZWZmX2Zyb21fc21hbGxlcl9iYXNlKG1wZF90ICp3LCBtcGRfc3NpemVfdCB3bGVuLCBtcGRfdWludF90IHdiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90ICp1LCBzaXplX3QgdWxlbiwgbXBkX3VpbnRfdCB1YmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zc2l6ZV90IG4gPSAwOworICAgIG1wZF91aW50X3QgY2Fycnk7CisKKyAgICBhc3NlcnQod2xlbiA+IDAgJiYgdWxlbiA+IDApOworICAgIGFzc2VydCh3YmFzZSA+IHViYXNlKTsKKworICAgIHctPmRhdGFbbisrXSA9IHVbLS11bGVuXTsKKyAgICB3aGlsZSAoLS11bGVuICE9IFNJWkVfTUFYKSB7CisgICAgICAgIGNhcnJ5ID0gX21wZF9zaG9ydG11bF9iKHctPmRhdGEsIHctPmRhdGEsIG4sIHViYXNlLCB3YmFzZSk7CisgICAgICAgIGlmIChjYXJyeSkgeworICAgICAgICAgICAgaWYgKG4gPj0gd2xlbikgeworICAgICAgICAgICAgICAgIGlmICghbXBkX3FyZXNpemUodywgbisxLCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTSVpFX01BWDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgd2xlbiA9IG4rMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHctPmRhdGFbbisrXSA9IGNhcnJ5OworICAgICAgICB9CisgICAgICAgIGNhcnJ5ID0gX21wZF9zaG9ydGFkZF9iKHctPmRhdGEsIG4sIHVbdWxlbl0sIHdiYXNlKTsKKyAgICAgICAgaWYgKGNhcnJ5KSB7CisgICAgICAgICAgICBpZiAobiA+PSB3bGVuKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtcGRfcXJlc2l6ZSh3LCBuKzEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3bGVuID0gbisxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdy0+ZGF0YVtuKytdID0gY2Fycnk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbjsKK30KKworLyoKKyAqIENvbnZlcnQgYW4gaW50ZWdlciBtcGRfdCB0byBhIG11bHRpcHJlY2lzaW9uIGludGVnZXIgd2l0aCBiYXNlIDw9IDIqKjE2LgorICogVGhlIGxlYXN0IHNpZ25pZmljYW50IHdvcmQgb2YgdGhlIHJlc3VsdCBpcyAoKnJkYXRhKVswXS4KKyAqCisgKiBJZiByZGF0YSBpcyBOVUxMLCBzcGFjZSBpcyBhbGxvY2F0ZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCBybGVuIGlzIGlycmVsZXZhbnQuCisgKiBJbiBjYXNlIG9mIGFuIGVycm9yIGFueSBhbGxvY2F0ZWQgc3RvcmFnZSBpcyBmcmVlZCBhbmQgcmRhdGEgaXMgc2V0IGJhY2sgdG8KKyAqIE5VTEwuCisgKgorICogSWYgcmRhdGEgaXMgbm9uLU5VTEwsIGl0IE1VU1QgYmUgYWxsb2NhdGVkIGJ5IG9uZSBvZiBsaWJtcGRlYydzIGFsbG9jYXRpb24KKyAqIGZ1bmN0aW9ucyBhbmQgcmxlbiBNVVNUIGJlIGNvcnJlY3QuIElmIG5lY2Vzc2FyeSwgdGhlIGZ1bmN0aW9uIHdpbGwgcmVzaXplCisgKiByZGF0YS4gSW4gY2FzZSBvZiBhbiBlcnJvciB0aGUgY2FsbGVyIG11c3QgZnJlZSByZGF0YS4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IEluIGNhc2Ugb2Ygc3VjY2VzcywgdGhlIGV4YWN0IGxlbmd0aCBvZiByZGF0YSwgU0laRV9NQVgKKyAqIG90aGVyd2lzZS4KKyAqLworc2l6ZV90CittcGRfcWV4cG9ydF91MTYodWludDE2X3QgKipyZGF0YSwgc2l6ZV90IHJsZW4sIHVpbnQzMl90IHJiYXNlLAorICAgICAgICAgICAgICAgIGNvbnN0IG1wZF90ICpzcmMsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgTVBEX05FV19TVEFUSUModHNyYywwLDAsMCwwKTsKKyAgICBpbnQgYWxsb2MgPSAwOyAvKiByZGF0YSA9PSBOVUxMICovCisgICAgc2l6ZV90IG47CisKKyAgICBhc3NlcnQocmJhc2UgPD0gKDFVPDwxNikpOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoc3JjKSB8fCAhX21wZF9pc2ludChzcmMpKSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgfQorCisgICAgaWYgKCpyZGF0YSA9PSBOVUxMKSB7CisgICAgICAgIHJsZW4gPSBtcGRfc2l6ZWluYmFzZShzcmMsIHJiYXNlKTsKKyAgICAgICAgaWYgKHJsZW4gPT0gU0laRV9NQVgpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworICAgICAgICB9CisgICAgICAgICpyZGF0YSA9IG1wZF9hbGxvYyhybGVuLCBzaXplb2YgKipyZGF0YSk7CisgICAgICAgIGlmICgqcmRhdGEgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgYWxsb2MgPSAxOworICAgIH0KKworICAgIGlmIChtcGRfaXN6ZXJvKHNyYykpIHsKKyAgICAgICAgKipyZGF0YSA9IDA7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGlmIChzcmMtPmV4cCA+PSAwKSB7CisgICAgICAgIGlmICghbXBkX3FzaGlmdGwoJnRzcmMsIHNyYywgc3JjLT5leHAsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAobXBkX3FzaGlmdHIoJnRzcmMsIHNyYywgLXNyYy0+ZXhwLCBzdGF0dXMpID09IE1QRF9VSU5UX01BWCkgeworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBuID0gX2Jhc2Vjb252X3RvX3UxNihyZGF0YSwgcmxlbiwgcmJhc2UsIHRzcmMuZGF0YSwgdHNyYy5sZW4pOworICAgIGlmIChuID09IFNJWkVfTUFYKSB7CisgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgIH0KKworCitvdXQ6CisgICAgbXBkX2RlbCgmdHNyYyk7CisgICAgcmV0dXJuIG47CisKK21hbGxvY19lcnJvcjoKKyAgICBpZiAoYWxsb2MpIHsKKyAgICAgICAgbXBkX2ZyZWUoKnJkYXRhKTsKKyAgICAgICAgKnJkYXRhID0gTlVMTDsKKyAgICB9CisgICAgbiA9IFNJWkVfTUFYOworICAgICpzdGF0dXMgfD0gTVBEX01hbGxvY19lcnJvcjsKKyAgICBnb3RvIG91dDsKK30KKworLyoKKyAqIENvbnZlcnQgYW4gaW50ZWdlciBtcGRfdCB0byBhIG11bHRpcHJlY2lzaW9uIGludGVnZXIgd2l0aCBiYXNlPD1VSU5UMzJfTUFYLgorICogVGhlIGxlYXN0IHNpZ25pZmljYW50IHdvcmQgb2YgdGhlIHJlc3VsdCBpcyAoKnJkYXRhKVswXS4KKyAqCisgKiBJZiByZGF0YSBpcyBOVUxMLCBzcGFjZSBpcyBhbGxvY2F0ZWQgYnkgdGhlIGZ1bmN0aW9uIGFuZCBybGVuIGlzIGlycmVsZXZhbnQuCisgKiBJbiBjYXNlIG9mIGFuIGVycm9yIGFueSBhbGxvY2F0ZWQgc3RvcmFnZSBpcyBmcmVlZCBhbmQgcmRhdGEgaXMgc2V0IGJhY2sgdG8KKyAqIE5VTEwuCisgKgorICogSWYgcmRhdGEgaXMgbm9uLU5VTEwsIGl0IE1VU1QgYmUgYWxsb2NhdGVkIGJ5IG9uZSBvZiBsaWJtcGRlYydzIGFsbG9jYXRpb24KKyAqIGZ1bmN0aW9ucyBhbmQgcmxlbiBNVVNUIGJlIGNvcnJlY3QuIElmIG5lY2Vzc2FyeSwgdGhlIGZ1bmN0aW9uIHdpbGwgcmVzaXplCisgKiByZGF0YS4gSW4gY2FzZSBvZiBhbiBlcnJvciB0aGUgY2FsbGVyIG11c3QgZnJlZSByZGF0YS4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IEluIGNhc2Ugb2Ygc3VjY2VzcywgdGhlIGV4YWN0IGxlbmd0aCBvZiByZGF0YSwgU0laRV9NQVgKKyAqIG90aGVyd2lzZS4KKyAqLworc2l6ZV90CittcGRfcWV4cG9ydF91MzIodWludDMyX3QgKipyZGF0YSwgc2l6ZV90IHJsZW4sIHVpbnQzMl90IHJiYXNlLAorICAgICAgICAgICAgICAgIGNvbnN0IG1wZF90ICpzcmMsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgTVBEX05FV19TVEFUSUModHNyYywwLDAsMCwwKTsKKyAgICBpbnQgYWxsb2MgPSAwOyAvKiByZGF0YSA9PSBOVUxMICovCisgICAgc2l6ZV90IG47CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChzcmMpIHx8ICFfbXBkX2lzaW50KHNyYykpIHsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIHJldHVybiBTSVpFX01BWDsKKyAgICB9CisKKyAgICBpZiAoKnJkYXRhID09IE5VTEwpIHsKKyAgICAgICAgcmxlbiA9IG1wZF9zaXplaW5iYXNlKHNyYywgcmJhc2UpOworICAgICAgICBpZiAocmxlbiA9PSBTSVpFX01BWCkgeworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgICAgIH0KKyAgICAgICAgKnJkYXRhID0gbXBkX2FsbG9jKHJsZW4sIHNpemVvZiAqKnJkYXRhKTsKKyAgICAgICAgaWYgKCpyZGF0YSA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICAgICAgfQorICAgICAgICBhbGxvYyA9IDE7CisgICAgfQorCisgICAgaWYgKG1wZF9pc3plcm8oc3JjKSkgeworICAgICAgICAqKnJkYXRhID0gMDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKHNyYy0+ZXhwID49IDApIHsKKyAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bCgmdHNyYywgc3JjLCBzcmMtPmV4cCwgc3RhdHVzKSkgeworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChtcGRfcXNoaWZ0cigmdHNyYywgc3JjLCAtc3JjLT5leHAsIHN0YXR1cykgPT0gTVBEX1VJTlRfTUFYKSB7CisgICAgICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworI2lmZGVmIENPTkZJR182NAorICAgIG4gPSBfYmFzZWNvbnZfdG9fc21hbGxlcihyZGF0YSwgcmxlbiwgcmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzcmMuZGF0YSwgdHNyYy5sZW4sIE1QRF9SQURJWCk7CisjZWxzZQorICAgIGlmIChyYmFzZSA9PSBNUERfUkFESVgpIHsKKyAgICAgICAgbiA9IF9jb3B5X2VxdWFsX2Jhc2UocmRhdGEsIHJsZW4sIHRzcmMuZGF0YSwgdHNyYy5sZW4pOworICAgIH0KKyAgICBlbHNlIGlmIChyYmFzZSA8IE1QRF9SQURJWCkgeworICAgICAgICBuID0gX2Jhc2Vjb252X3RvX3NtYWxsZXIocmRhdGEsIHJsZW4sIHJiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNyYy5kYXRhLCB0c3JjLmxlbiwgTVBEX1JBRElYKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG4gPSBfYmFzZWNvbnZfdG9fbGFyZ2VyKHJkYXRhLCBybGVuLCByYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHNyYy5kYXRhLCB0c3JjLmxlbiwgTVBEX1JBRElYKTsKKyAgICB9CisjZW5kaWYKKworICAgIGlmIChuID09IFNJWkVfTUFYKSB7CisgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgIH0KKworCitvdXQ6CisgICAgbXBkX2RlbCgmdHNyYyk7CisgICAgcmV0dXJuIG47CisKK21hbGxvY19lcnJvcjoKKyAgICBpZiAoYWxsb2MpIHsKKyAgICAgICAgbXBkX2ZyZWUoKnJkYXRhKTsKKyAgICAgICAgKnJkYXRhID0gTlVMTDsKKyAgICB9CisgICAgbiA9IFNJWkVfTUFYOworICAgICpzdGF0dXMgfD0gTVBEX01hbGxvY19lcnJvcjsKKyAgICBnb3RvIG91dDsKK30KKworCisvKgorICogQ29udmVydHMgYSBtdWx0aXByZWNpc2lvbiBpbnRlZ2VyIHdpdGggYmFzZSA8PSBVSU5UMTZfTUFYKzEgdG8gYW4gbXBkX3QuCisgKiBUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgd29yZCBvZiB0aGUgc291cmNlIGlzIHNyY2RhdGFbMF0uCisgKi8KK3ZvaWQKK21wZF9xaW1wb3J0X3UxNihtcGRfdCAqcmVzdWx0LAorICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90ICpzcmNkYXRhLCBzaXplX3Qgc3JjbGVuLAorICAgICAgICAgICAgICAgIHVpbnQ4X3Qgc3Jjc2lnbiwgdWludDMyX3Qgc3JjYmFzZSwKKyAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3VpbnRfdCAqdXNyYzsgLyogdWludDE2X3Qgc3JjIGNvcGllZCB0byBhbiBtcGRfdWludF90IGFycmF5ICovCisgICAgbXBkX3NzaXplX3QgcmxlbjsgLyogbGVuZ3RoIG9mIHRoZSByZXN1bHQgKi8KKyAgICBzaXplX3QgbjsKKworICAgIGFzc2VydChzcmNsZW4gPiAwKTsKKyAgICBhc3NlcnQoc3JjYmFzZSA8PSAoMVU8PDE2KSk7CisKKyAgICBybGVuID0gX21wZF9pbXBvcnRzaXplKHNyY2xlbiwgc3JjYmFzZSk7CisgICAgaWYgKHJsZW4gPT0gTVBEX1NTSVpFX01BWCkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1c3JjID0gbXBkX2FsbG9jKChtcGRfc2l6ZV90KXNyY2xlbiwgc2l6ZW9mICp1c3JjKTsKKyAgICBpZiAodXNyYyA9PSBOVUxMKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZm9yIChuID0gMDsgbiA8IHNyY2xlbjsgbisrKSB7CisgICAgICAgIHVzcmNbbl0gPSBzcmNkYXRhW25dOworICAgIH0KKworICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBybGVuLCBzdGF0dXMpKSB7CisgICAgICAgIGdvdG8gZmluaXNoOworICAgIH0KKworICAgIG4gPSBfY29lZmZfZnJvbV91MTYocmVzdWx0LCBybGVuLCB1c3JjLCBzcmNsZW4sIHNyY2Jhc2UsIHN0YXR1cyk7CisgICAgaWYgKG4gPT0gU0laRV9NQVgpIHsKKyAgICAgICAgZ290byBmaW5pc2g7CisgICAgfQorCisgICAgbXBkX3NldF9mbGFncyhyZXN1bHQsIHNyY3NpZ24pOworICAgIHJlc3VsdC0+ZXhwID0gMDsKKyAgICByZXN1bHQtPmxlbiA9IG47CisgICAgbXBkX3NldGRpZ2l0cyhyZXN1bHQpOworCisgICAgbXBkX3FyZXNpemUocmVzdWx0LCByZXN1bHQtPmxlbiwgc3RhdHVzKTsKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworCisKK2ZpbmlzaDoKKyAgICBtcGRfZnJlZSh1c3JjKTsKK30KKworLyoKKyAqIENvbnZlcnRzIGEgbXVsdGlwcmVjaXNpb24gaW50ZWdlciB3aXRoIGJhc2UgPD0gVUlOVDMyX01BWCB0byBhbiBtcGRfdC4KKyAqIFRoZSBsZWFzdCBzaWduaWZpY2FudCB3b3JkIG9mIHRoZSBzb3VyY2UgaXMgc3JjZGF0YVswXS4KKyAqLwordm9pZAorbXBkX3FpbXBvcnRfdTMyKG1wZF90ICpyZXN1bHQsCisgICAgICAgICAgICAgICAgY29uc3QgdWludDMyX3QgKnNyY2RhdGEsIHNpemVfdCBzcmNsZW4sCisgICAgICAgICAgICAgICAgdWludDhfdCBzcmNzaWduLCB1aW50MzJfdCBzcmNiYXNlLAorICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfc3NpemVfdCBybGVuOyAvKiBsZW5ndGggb2YgdGhlIHJlc3VsdCAqLworICAgIHNpemVfdCBuOworCisgICAgYXNzZXJ0KHNyY2xlbiA+IDApOworCisgICAgcmxlbiA9IF9tcGRfaW1wb3J0c2l6ZShzcmNsZW4sIHNyY2Jhc2UpOworICAgIGlmIChybGVuID09IE1QRF9TU0laRV9NQVgpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIHJsZW4sIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmZGVmIENPTkZJR182NAorICAgIG4gPSBfY29lZmZfZnJvbV9zbWFsbGVyX2Jhc2UocmVzdWx0LCBybGVuLCBNUERfUkFESVgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNkYXRhLCBzcmNsZW4sIHNyY2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMpOworI2Vsc2UKKyAgICBpZiAoc3JjYmFzZSA9PSBNUERfUkFESVgpIHsKKyAgICAgICAgaWYgKCFtcGRfcXJlc2l6ZShyZXN1bHQsIHNyY2xlbiwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1lbWNweShyZXN1bHQtPmRhdGEsIHNyY2RhdGEsIHNyY2xlbiAqIChzaXplb2YgKnNyY2RhdGEpKTsKKyAgICAgICAgbiA9IHNyY2xlbjsKKyAgICB9CisgICAgZWxzZSBpZiAoc3JjYmFzZSA8IE1QRF9SQURJWCkgeworICAgICAgICBuID0gX2NvZWZmX2Zyb21fc21hbGxlcl9iYXNlKHJlc3VsdCwgcmxlbiwgTVBEX1JBRElYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY2RhdGEsIHNyY2xlbiwgc3JjYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbXBkX3VpbnRfdCAqdXNyYyA9IG1wZF9hbGxvYygobXBkX3NpemVfdClzcmNsZW4sIHNpemVvZiAqdXNyYyk7CisgICAgICAgIGlmICh1c3JjID09IE5VTEwpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZm9yIChuID0gMDsgbiA8IHNyY2xlbjsgbisrKSB7CisgICAgICAgICAgICB1c3JjW25dID0gc3JjZGF0YVtuXTsKKyAgICAgICAgfQorCisgICAgICAgIG4gPSBfY29lZmZfZnJvbV9sYXJnZXJfYmFzZShyZXN1bHQsIHJsZW4sIE1QRF9SQURJWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzcmMsIChtcGRfc3NpemVfdClzcmNsZW4sIHNyY2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMpOworICAgICAgICBtcGRfZnJlZSh1c3JjKTsKKyAgICB9CisjZW5kaWYKKworICAgIGlmIChuID09IFNJWkVfTUFYKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtcGRfc2V0X2ZsYWdzKHJlc3VsdCwgc3Jjc2lnbik7CisgICAgcmVzdWx0LT5leHAgPSAwOworICAgIHJlc3VsdC0+bGVuID0gbjsKKyAgICBtcGRfc2V0ZGlnaXRzKHJlc3VsdCk7CisKKyAgICBtcGRfcXJlc2l6ZShyZXN1bHQsIHJlc3VsdC0+bGVuLCBzdGF0dXMpOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmY1NDcwCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaApAQCAtMCwwICsxLDgyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBNUERFQ0lNQUxfSAorI2RlZmluZSBNUERFQ0lNQUxfSAorCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZGVmaW5lIF9fU1REQ19MSU1JVF9NQUNST1MKKyNlbmRpZgorCisKKyNpZm5kZWYgX01TQ19WRVIKKyAgI2luY2x1ZGUgInB5Y29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisKKyNpZmRlZiBfTVNDX1ZFUgorICAjaW5jbHVkZSAidmNjb21wYXQuaCIKKyAgI2lmbmRlZiBVTlVTRUQKKyAgICAjZGVmaW5lIFVOVVNFRAorICAjZW5kaWYKKyAgI2RlZmluZSBNUERfUFJBR01BKHgpCisgICNkZWZpbmUgTVBEX0hJREVfU1lNQk9MU19TVEFSVAorICAjZGVmaW5lIE1QRF9ISURFX1NZTUJPTFNfRU5ECisgICNkZWZpbmUgRVhUSU5MSU5FIGV4dGVybiBpbmxpbmUKKyNlbHNlCisgICNpZmRlZiBIQVZFX1NURElOVF9ICisgICAgI2luY2x1ZGUgPHN0ZGludC5oPgorICAjZW5kaWYKKyAgI2lmZGVmIEhBVkVfSU5UVFlQRVNfSAorICAgICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorICAjZW5kaWYKKyAgI2lmbmRlZiBfX0dOVUNfU1REQ19JTkxJTkVfXworICAgICNkZWZpbmUgX19HTlVDX1NURENfSU5MSU5FX18gMQorICAjZW5kaWYKKyAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpCisgICAgI2RlZmluZSBVTlVTRUQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKKyAgI2Vsc2UKKyAgICAjZGVmaW5lIFVOVVNFRAorICAjZW5kaWYKKyAgI2lmIChkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pKSAmJiBcCisgICAgICBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+PSA0ICYmICFkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpCisgICAgI2RlZmluZSBNUERfUFJBR01BKHgpIF9QcmFnbWEoeCkKKyAgICAjZGVmaW5lIE1QRF9ISURFX1NZTUJPTFNfU1RBUlQgIkdDQyB2aXNpYmlsaXR5IHB1c2goaGlkZGVuKSIKKyAgICAjZGVmaW5lIE1QRF9ISURFX1NZTUJPTFNfRU5EICJHQ0MgdmlzaWJpbGl0eSBwb3AiCisgICNlbHNlCisgICAgI2RlZmluZSBNUERfUFJBR01BKHgpCisgICAgI2RlZmluZSBNUERfSElERV9TWU1CT0xTX1NUQVJUCisgICAgI2RlZmluZSBNUERfSElERV9TWU1CT0xTX0VORAorICAjZW5kaWYKKyAgI2RlZmluZSBFWFRJTkxJTkUKKyNlbmRpZgorCisKKy8qIFRoaXMgaGVhZGVyIGZpbGUgaXMgaW50ZXJuYWwgZm9yIHRoZSBwdXJwb3NlIG9mIGJ1aWxkaW5nIF9kZWNpbWFsLnNvLgorICogQWxsIHN5bWJvbHMgc2hvdWxkIGhhdmUgbG9jYWwgc2NvcGUgaW4gdGhlIERTTy4gKi8KK01QRF9QUkFHTUEoTVBEX0hJREVfU1lNQk9MU19TVEFSVCkKKworCisjaWYgIWRlZmluZWQoTEVHQUNZX0NPTVBJTEVSKQorICAjaWYgIWRlZmluZWQoVUlOVDY0X01BWCkKKyAgICAvKiBUaGUgZm9sbG93aW5nICNlcnJvciBpcyBqdXN0IGEgd2FybmluZy4gSWYgdGhlIGNvbXBpbGVyIGluZGVlZCBkb2VzCisgICAgICogbm90IGhhdmUgdWludDY0X3QsIGl0IGlzIHBlcmZlY3RseSBzYWZlIHRvIGNvbW1lbnQgb3V0IHRoZSAjZXJyb3IuICovCisgICAgI2Vycm9yICJXYXJuaW5nOiBDb21waWxlciB3aXRob3V0IHVpbnQ2NF90LiBDb21tZW50IG91dCB0aGlzIGxpbmUuIgorICAgICNkZWZpbmUgTEVHQUNZX0NPTVBJTEVSCisgICNlbmRpZgorI2VuZGlmCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWYgZGVmaW5lZChVTklWRVJTQUwpCisgICNpZiBkZWZpbmVkKENPTkZJR182NCkgfHwgZGVmaW5lZChDT05GSUdfMzIpCisgICAgI2Vycm9yICJjYW5ub3QgdXNlIENPTkZJR182NCBvciBDT05GSUdfMzIgd2l0aCBVTklWRVJTQUwuIgorICAjZW5kaWYKKyAgI2lmIGRlZmluZWQoX19wcGNfXykKKyAgICAjZGVmaW5lIENPTkZJR18zMgorICAgICNkZWZpbmUgQU5TSQorICAjZWxpZiBkZWZpbmVkKF9fcHBjNjRfXykKKyAgICAjZGVmaW5lIENPTkZJR182NAorICAgICNkZWZpbmUgQU5TSQorICAjZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICNkZWZpbmUgQ09ORklHXzMyCisgICAgI2RlZmluZSBBTlNJCisgICNlbGlmIGRlZmluZWQoX194ODZfNjRfXykKKyAgICAjZGVmaW5lIENPTkZJR182NAorICAgICNkZWZpbmUgQVNNCisgICNlbHNlCisgICAgI2Vycm9yICJ1bmtub3duIGFyY2hpdGVjdHVyZSBmb3IgdW5pdmVyc2FsIGJ1aWxkLiIKKyAgI2VuZGlmCisjZW5kaWYKKworCisvKiBCRUdJTiBDT05GSUdfNjQgKi8KKyNpZiBkZWZpbmVkKENPTkZJR182NCkKKy8qIHR5cGVzIGZvciBtb2R1bGFyIGFuZCBiYXNlIGFyaXRobWV0aWMgKi8KKyNkZWZpbmUgTVBEX1VJTlRfTUFYIFVJTlQ2NF9NQVgKKyNkZWZpbmUgTVBEX0JJVFNfUEVSX1VJTlQgNjQKK3R5cGVkZWYgdWludDY0X3QgbXBkX3VpbnRfdDsgIC8qIHVuc2lnbmVkIG1vZCB0eXBlICovCisKKyNkZWZpbmUgTVBEX1NJWkVfTUFYIFNJWkVfTUFYCit0eXBlZGVmIHNpemVfdCBtcGRfc2l6ZV90OyAvKiB1bnNpZ25lZCBzaXplIHR5cGUgKi8KKworLyogdHlwZSBmb3IgZXhwLCBkaWdpdHMsIGxlbiwgcHJlYyAqLworI2RlZmluZSBNUERfU1NJWkVfTUFYIElOVDY0X01BWAorI2RlZmluZSBNUERfU1NJWkVfTUlOIElOVDY0X01JTgordHlwZWRlZiBpbnQ2NF90IG1wZF9zc2l6ZV90OworI2RlZmluZSBfbXBkX3N0cnRvc3NpemUgc3RydG9sbAorCisvKiBkZWNpbWFsIGFyaXRobWV0aWMgKi8KKyNkZWZpbmUgTVBEX1JBRElYIDEwMDAwMDAwMDAwMDAwMDAwMDAwVUxMICAvKiAxMCoqMTkgKi8KKyNkZWZpbmUgTVBEX1JESUdJVFMgMTkKKyNkZWZpbmUgTVBEX01BWF9QT1cxMCAxOQorI2RlZmluZSBNUERfRVhQRElHSVRTIDE5ICAvKiBNUERfRVhQRElHSVRTIDw9IE1QRF9SRElHSVRTKzEgKi8KKworI2RlZmluZSBNUERfTUFYVFJBTlNGT1JNXzJOIDQyOTQ5NjcyOTZVTEwgICAgICAvKiAyKiozMiAqLworI2RlZmluZSBNUERfTUFYX1BSRUMgOTk5OTk5OTk5OTk5OTk5OTk5TEwKKyNkZWZpbmUgTVBEX01BWF9QUkVDX0xPRzIgNjQKKyNkZWZpbmUgTVBEX0VMSU1JVCAgMTAwMDAwMDAwMDAwMDAwMDAwMExMCisjZGVmaW5lIE1QRF9NQVhfRU1BWCAgIDk5OTk5OTk5OTk5OTk5OTk5OUxMICAgIC8qIEVMSU1JVC0xICovCisjZGVmaW5lIE1QRF9NSU5fRU1JTiAgKC05OTk5OTk5OTk5OTk5OTk5OTlMTCkgIC8qIC1FTUFYICovCisjZGVmaW5lIE1QRF9NSU5fRVRJTlkgKE1QRF9NSU5fRU1JTi0oTVBEX01BWF9QUkVDLTEpKQorI2RlZmluZSBNUERfRVhQX0lORiAyMDAwMDAwMDAwMDAwMDAwMDAxTEwKKyNkZWZpbmUgTVBEX0VYUF9DTEFNUCAoLTQwMDAwMDAwMDAwMDAwMDAwMDFMTCkKKyNkZWZpbmUgTVBEX01BWElNUE9SVCAxMDUyNjMxNTc4OTQ3MzY4NDJMIC8qIGNlaWwoKDIqTVBEX01BWF9QUkVDKS9NUERfUkRJR0lUUykgKi8KKworLyogY29udmVyc2lvbiBzcGVjaWZpZXJzICovCisjZGVmaW5lIFBSSV9tcGRfdWludF90IFBSSXU2NAorI2RlZmluZSBQUklfbXBkX3NzaXplX3QgUFJJaTY0CisvKiBFTkQgQ09ORklHXzY0ICovCisKKworLyogQkVHSU4gQ09ORklHXzMyICovCisjZWxpZiBkZWZpbmVkKENPTkZJR18zMikKKy8qIHR5cGVzIGZvciBtb2R1bGFyIGFuZCBiYXNlIGFyaXRobWV0aWMgKi8KKyNkZWZpbmUgTVBEX1VJTlRfTUFYIFVJTlQzMl9NQVgKKyNkZWZpbmUgTVBEX0JJVFNfUEVSX1VJTlQgMzIKK3R5cGVkZWYgdWludDMyX3QgbXBkX3VpbnRfdDsgIC8qIHVuc2lnbmVkIG1vZCB0eXBlICovCisKKyNpZm5kZWYgTEVHQUNZX0NPTVBJTEVSCisjZGVmaW5lIE1QRF9VVUlOVF9NQVggVUlOVDY0X01BWAordHlwZWRlZiB1aW50NjRfdCBtcGRfdXVpbnRfdDsgLyogZG91YmxlIHdpZHRoIHVuc2lnbmVkIG1vZCB0eXBlICovCisjZW5kaWYKKworI2RlZmluZSBNUERfU0laRV9NQVggU0laRV9NQVgKK3R5cGVkZWYgc2l6ZV90IG1wZF9zaXplX3Q7IC8qIHVuc2lnbmVkIHNpemUgdHlwZSAqLworCisvKiB0eXBlIGZvciBkZWMtPmxlbiwgZGVjLT5leHAsIGN0eC0+cHJlYyAqLworI2RlZmluZSBNUERfU1NJWkVfTUFYIElOVDMyX01BWAorI2RlZmluZSBNUERfU1NJWkVfTUlOIElOVDMyX01JTgordHlwZWRlZiBpbnQzMl90IG1wZF9zc2l6ZV90OworI2RlZmluZSBfbXBkX3N0cnRvc3NpemUgc3RydG9sCisKKy8qIGRlY2ltYWwgYXJpdGhtZXRpYyAqLworI2RlZmluZSBNUERfUkFESVggMTAwMDAwMDAwMFVMICAvKiAxMCoqOSAqLworI2RlZmluZSBNUERfUkRJR0lUUyA5CisjZGVmaW5lIE1QRF9NQVhfUE9XMTAgOQorI2RlZmluZSBNUERfRVhQRElHSVRTIDEwIC8qIE1QRF9FWFBESUdJVFMgPD0gTVBEX1JESUdJVFMrMSAqLworCisjZGVmaW5lIE1QRF9NQVhUUkFOU0ZPUk1fMk4gMzM1NTQ0MzJVTCAvKiAyKioyNSAqLworI2RlZmluZSBNUERfTUFYX1BSRUMgNDI1MDAwMDAwTAorI2RlZmluZSBNUERfTUFYX1BSRUNfTE9HMiAzMgorI2RlZmluZSBNUERfRUxJTUlUIDQyNTAwMDAwMUwKKyNkZWZpbmUgTVBEX01BWF9FTUFYIDQyNTAwMDAwMEwgICAgICAgIC8qIEVMSU1JVC0xICovCisjZGVmaW5lIE1QRF9NSU5fRU1JTiAoLTQyNTAwMDAwMEwpICAgICAvKiAtRU1BWCAqLworI2RlZmluZSBNUERfTUlOX0VUSU5ZIChNUERfTUlOX0VNSU4tKE1QRF9NQVhfUFJFQy0xKSkKKyNkZWZpbmUgTVBEX0VYUF9JTkYgMTAwMDAwMDAwMUwgICAgICAvKiBhbGxvd3MgZm9yIGVtYXg9OTk5OTk5OTk5IGluIHRoZSB0ZXN0cyAqLworI2RlZmluZSBNUERfRVhQX0NMQU1QICgtMjAwMDAwMDAwMUwpIC8qIGFsbG93cyBmb3IgZW1pbj0tOTk5OTk5OTk5IGluIHRoZSB0ZXN0cyAqLworI2RlZmluZSBNUERfTUFYSU1QT1JUIDk0NDQ0NDQ1TCAgICAgIC8qIGNlaWwoKDIqTVBEX01BWF9QUkVDKS9NUERfUkRJR0lUUykgKi8KKworLyogY29udmVyc2lvbiBzcGVjaWZpZXJzICovCisjZGVmaW5lIFBSSV9tcGRfdWludF90IFBSSXUzMgorI2RlZmluZSBQUklfbXBkX3NzaXplX3QgUFJJaTMyCisvKiBFTkQgQ09ORklHXzMyICovCisKKyNlbHNlCisgICNlcnJvciAiZGVmaW5lIENPTkZJR182NCBvciBDT05GSUdfMzIiCisjZW5kaWYKKy8qIEVORCBDT05GSUcgKi8KKworCisjaWYgTVBEX1NJWkVfTUFYICE9IE1QRF9VSU5UX01BWAorICAjZXJyb3IgInVuc3VwcG9ydGVkIHBsYXRmb3JtOiBuZWVkIG1wZF9zaXplX3QgPT0gbXBkX3VpbnRfdCIKKyNlbmRpZgorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworZW51bSB7CisgICAgTVBEX1JPVU5EX1VQLCAgICAgICAgICAvKiByb3VuZCBhd2F5IGZyb20gMCAgICAgICAgICAgICAgICovCisgICAgTVBEX1JPVU5EX0RPV04sICAgICAgICAvKiByb3VuZCB0b3dhcmQgMCAodHJ1bmNhdGUpICAgICAgICovCisgICAgTVBEX1JPVU5EX0NFSUxJTkcsICAgICAvKiByb3VuZCB0b3dhcmQgK2luZmluaXR5ICAgICAgICAgICovCisgICAgTVBEX1JPVU5EX0ZMT09SLCAgICAgICAvKiByb3VuZCB0b3dhcmQgLWluZmluaXR5ICAgICAgICAgICovCisgICAgTVBEX1JPVU5EX0hBTEZfVVAsICAgICAvKiAwLjUgaXMgcm91bmRlZCB1cCAgICAgICAgICAgICAgICovCisgICAgTVBEX1JPVU5EX0hBTEZfRE9XTiwgICAvKiAwLjUgaXMgcm91bmRlZCBkb3duICAgICAgICAgICAgICovCisgICAgTVBEX1JPVU5EX0hBTEZfRVZFTiwgICAvKiAwLjUgaXMgcm91bmRlZCB0byBldmVuICAgICAgICAgICovCisgICAgTVBEX1JPVU5EXzA1VVAsICAgICAgICAvKiByb3VuZCB6ZXJvIG9yIGZpdmUgYXdheSBmcm9tIDAgICovCisgICAgTVBEX1JPVU5EX1RSVU5DLCAgICAgICAvKiB0cnVuY2F0ZSwgYnV0IHNldCBpbmZpbml0eSAgICAgICovCisgICAgTVBEX1JPVU5EX0dVQVJECit9OworCitlbnVtIHsgTVBEX0NMQU1QX0RFRkFVTFQsIE1QRF9DTEFNUF9JRUVFXzc1NCwgTVBEX0NMQU1QX0dVQVJEIH07CisKK2V4dGVybiBjb25zdCBjaGFyICptcGRfcm91bmRfc3RyaW5nW01QRF9ST1VORF9HVUFSRF07CitleHRlcm4gY29uc3QgY2hhciAqbXBkX2NsYW1wX3N0cmluZ1tNUERfQ0xBTVBfR1VBUkRdOworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBtcGRfc3NpemVfdCBwcmVjOyAgIC8qIHByZWNpc2lvbiAqLworICAgIG1wZF9zc2l6ZV90IGVtYXg7ICAgLyogbWF4IHBvc2l0aXZlIGV4cCAqLworICAgIG1wZF9zc2l6ZV90IGVtaW47ICAgLyogbWluIG5lZ2F0aXZlIGV4cCAqLworICAgIHVpbnQzMl90IHRyYXBzOyAgICAgLyogc3RhdHVzIGV2ZW50cyB0aGF0IHNob3VsZCBiZSB0cmFwcGVkICovCisgICAgdWludDMyX3Qgc3RhdHVzOyAgICAvKiBzdGF0dXMgZmxhZ3MgKi8KKyAgICB1aW50MzJfdCBuZXd0cmFwOyAgIC8qIHNldCBieSBtcGRfYWRkc3RhdHVzX3JhaXNlKCkgKi8KKyAgICBpbnQgICAgICByb3VuZDsgICAgIC8qIHJvdW5kaW5nIG1vZGUgKi8KKyAgICBpbnQgICAgICBjbGFtcDsgICAgIC8qIGNsYW1wIG1vZGUgKi8KKyAgICBpbnQgICAgICBhbGxjcjsgICAgIC8qIGFsbCBmdW5jdGlvbnMgY29ycmVjdGx5IHJvdW5kZWQgKi8KK30gbXBkX2NvbnRleHRfdDsKKworCisvKiBTdGF0dXMgZmxhZ3MgKi8KKyNkZWZpbmUgTVBEX0NsYW1wZWQgICAgICAgICAgICAgMHgwMDAwMDAwMVUKKyNkZWZpbmUgTVBEX0NvbnZlcnNpb25fc3ludGF4ICAgMHgwMDAwMDAwMlUKKyNkZWZpbmUgTVBEX0RpdmlzaW9uX2J5X3plcm8gICAgMHgwMDAwMDAwNFUKKyNkZWZpbmUgTVBEX0RpdmlzaW9uX2ltcG9zc2libGUgMHgwMDAwMDAwOFUKKyNkZWZpbmUgTVBEX0RpdmlzaW9uX3VuZGVmaW5lZCAgMHgwMDAwMDAxMFUKKyNkZWZpbmUgTVBEX0ZwdV9lcnJvciAgICAgICAgICAgMHgwMDAwMDAyMFUKKyNkZWZpbmUgTVBEX0luZXhhY3QgICAgICAgICAgICAgMHgwMDAwMDA0MFUKKyNkZWZpbmUgTVBEX0ludmFsaWRfY29udGV4dCAgICAgMHgwMDAwMDA4MFUKKyNkZWZpbmUgTVBEX0ludmFsaWRfb3BlcmF0aW9uICAgMHgwMDAwMDEwMFUKKyNkZWZpbmUgTVBEX01hbGxvY19lcnJvciAgICAgICAgMHgwMDAwMDIwMFUKKyNkZWZpbmUgTVBEX05vdF9pbXBsZW1lbnRlZCAgICAgMHgwMDAwMDQwMFUKKyNkZWZpbmUgTVBEX092ZXJmbG93ICAgICAgICAgICAgMHgwMDAwMDgwMFUKKyNkZWZpbmUgTVBEX1JvdW5kZWQgICAgICAgICAgICAgMHgwMDAwMTAwMFUKKyNkZWZpbmUgTVBEX1N1Ym5vcm1hbCAgICAgICAgICAgMHgwMDAwMjAwMFUKKyNkZWZpbmUgTVBEX1VuZGVyZmxvdyAgICAgICAgICAgMHgwMDAwNDAwMFUKKyNkZWZpbmUgTVBEX01heF9zdGF0dXMgICAgICAgICAoMHgwMDAwODAwMFUtMVUpCisKKy8qIENvbmRpdGlvbnMgdGhhdCByZXN1bHQgaW4gYW4gSUVFRSA3NTQgZXhjZXB0aW9uICovCisjZGVmaW5lIE1QRF9JRUVFX0ludmFsaWRfb3BlcmF0aW9uIChNUERfQ29udmVyc2lvbl9zeW50YXggfCAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1QRF9EaXZpc2lvbl9pbXBvc3NpYmxlIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVBEX0RpdmlzaW9uX3VuZGVmaW5lZCB8ICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNUERfRnB1X2Vycm9yIHwgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1QRF9JbnZhbGlkX2NvbnRleHQgfCAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVBEX0ludmFsaWRfb3BlcmF0aW9uIHwgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNUERfTWFsbG9jX2Vycm9yKSAgICAgICAgIFwKKworLyogRXJyb3JzIHRoYXQgcmVxdWlyZSB0aGUgcmVzdWx0IG9mIGFuIG9wZXJhdGlvbiB0byBiZSBzZXQgdG8gTmFOICovCisjZGVmaW5lIE1QRF9FcnJvcnMgKE1QRF9JRUVFX0ludmFsaWRfb3BlcmF0aW9uIHwgXAorICAgICAgICAgICAgICAgICAgICBNUERfRGl2aXNpb25fYnlfemVybykKKworLyogRGVmYXVsdCB0cmFwcyAqLworI2RlZmluZSBNUERfVHJhcHMgKE1QRF9JRUVFX0ludmFsaWRfb3BlcmF0aW9uIHwgXAorICAgICAgICAgICAgICAgICAgIE1QRF9EaXZpc2lvbl9ieV96ZXJvIHwgICAgICAgXAorICAgICAgICAgICAgICAgICAgIE1QRF9PdmVyZmxvdyB8ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIE1QRF9VbmRlcmZsb3cpCisKKy8qIE9mZmljaWFsIG5hbWUgKi8KKyNkZWZpbmUgTVBEX0luc3VmZmljaWVudF9zdG9yYWdlIE1QRF9NYWxsb2NfZXJyb3IKKworLyogSUVFRSA3NTQgaW50ZXJjaGFuZ2UgZm9ybWF0IGNvbnRleHRzICovCisjZGVmaW5lIE1QRF9JRUVFX0NPTlRFWFRfTUFYX0JJVFMgNTEyIC8qIDE2Kihsb2cyKE1QRF9NQVhfRU1BWCAvIDMpLTMpICovCisjZGVmaW5lIE1QRF9ERUNJTUFMMzIgMzIKKyNkZWZpbmUgTVBEX0RFQ0lNQUw2NCA2NAorI2RlZmluZSBNUERfREVDSU1BTDEyOCAxMjgKKworCisjZGVmaW5lIE1QRF9NSU5BTExPQ19NSU4gMgorI2RlZmluZSBNUERfTUlOQUxMT0NfTUFYIDY0CitleHRlcm4gbXBkX3NzaXplX3QgTVBEX01JTkFMTE9DOworZXh0ZXJuIHZvaWQgKCogbXBkX3RyYXBoYW5kbGVyKShtcGRfY29udGV4dF90ICopOwordm9pZCBtcGRfZGZsdF90cmFwaGFuZGxlcihtcGRfY29udGV4dF90ICopOworCit2b2lkIG1wZF9zZXRtaW5hbGxvYyhtcGRfc3NpemVfdCBuKTsKK3ZvaWQgbXBkX2luaXQobXBkX2NvbnRleHRfdCAqY3R4LCBtcGRfc3NpemVfdCBwcmVjKTsKKwordm9pZCBtcGRfbWF4Y29udGV4dChtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfZGVmYXVsdGNvbnRleHQobXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2Jhc2ljY29udGV4dChtcGRfY29udGV4dF90ICpjdHgpOworaW50IG1wZF9pZWVlX2NvbnRleHQobXBkX2NvbnRleHRfdCAqY3R4LCBpbnQgYml0cyk7CisKK21wZF9zc2l6ZV90IG1wZF9nZXRwcmVjKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCk7CittcGRfc3NpemVfdCBtcGRfZ2V0ZW1heChjb25zdCBtcGRfY29udGV4dF90ICpjdHgpOworbXBkX3NzaXplX3QgbXBkX2dldGVtaW4oY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KTsKK2ludCBtcGRfZ2V0cm91bmQoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3VpbnQzMl90IG1wZF9nZXR0cmFwcyhjb25zdCBtcGRfY29udGV4dF90ICpjdHgpOwordWludDMyX3QgbXBkX2dldHN0YXR1cyhjb25zdCBtcGRfY29udGV4dF90ICpjdHgpOworaW50IG1wZF9nZXRjbGFtcChjb25zdCBtcGRfY29udGV4dF90ICpjdHgpOworaW50IG1wZF9nZXRjcihjb25zdCBtcGRfY29udGV4dF90ICpjdHgpOworCitpbnQgbXBkX3FzZXRwcmVjKG1wZF9jb250ZXh0X3QgKmN0eCwgbXBkX3NzaXplX3QgcHJlYyk7CitpbnQgbXBkX3FzZXRlbWF4KG1wZF9jb250ZXh0X3QgKmN0eCwgbXBkX3NzaXplX3QgZW1heCk7CitpbnQgbXBkX3FzZXRlbWluKG1wZF9jb250ZXh0X3QgKmN0eCwgbXBkX3NzaXplX3QgZW1pbik7CitpbnQgbXBkX3FzZXRyb3VuZChtcGRfY29udGV4dF90ICpjdHgsIGludCBuZXdyb3VuZCk7CitpbnQgbXBkX3FzZXR0cmFwcyhtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90IGZsYWdzKTsKK2ludCBtcGRfcXNldHN0YXR1cyhtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90IGZsYWdzKTsKK2ludCBtcGRfcXNldGNsYW1wKG1wZF9jb250ZXh0X3QgKmN0eCwgaW50IGMpOworaW50IG1wZF9xc2V0Y3IobXBkX2NvbnRleHRfdCAqY3R4LCBpbnQgYyk7Cit2b2lkIG1wZF9hZGRzdGF0dXNfcmFpc2UobXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCBmbGFncyk7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCBBcml0aG1ldGljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBtcGRfdCBmbGFncyAqLworI2RlZmluZSBNUERfUE9TICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMCkKKyNkZWZpbmUgTVBEX05FRyAgICAgICAgICAgICAgICAgKCh1aW50OF90KTEpCisjZGVmaW5lIE1QRF9JTkYgICAgICAgICAgICAgICAgICgodWludDhfdCkyKQorI2RlZmluZSBNUERfTkFOICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpNCkKKyNkZWZpbmUgTVBEX1NOQU4gICAgICAgICAgICAgICAgKCh1aW50OF90KTgpCisjZGVmaW5lIE1QRF9TUEVDSUFMIChNUERfSU5GfE1QRF9OQU58TVBEX1NOQU4pCisjZGVmaW5lIE1QRF9TVEFUSUMgICAgICAgICAgICAgICgodWludDhfdCkxNikKKyNkZWZpbmUgTVBEX1NUQVRJQ19EQVRBICAgICAgICAgKCh1aW50OF90KTMyKQorI2RlZmluZSBNUERfU0hBUkVEX0RBVEEgICAgICAgICAoKHVpbnQ4X3QpNjQpCisjZGVmaW5lIE1QRF9DT05TVF9EQVRBICAgICAgICAgICgodWludDhfdCkxMjgpCisjZGVmaW5lIE1QRF9EQVRBRkxBR1MgKE1QRF9TVEFUSUNfREFUQXxNUERfU0hBUkVEX0RBVEF8TVBEX0NPTlNUX0RBVEEpCisKKy8qIG1wZF90ICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdWludDhfdCBmbGFnczsKKyAgICBtcGRfc3NpemVfdCBleHA7CisgICAgbXBkX3NzaXplX3QgZGlnaXRzOworICAgIG1wZF9zc2l6ZV90IGxlbjsKKyAgICBtcGRfc3NpemVfdCBhbGxvYzsKKyAgICBtcGRfdWludF90ICpkYXRhOworfSBtcGRfdDsKKworCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWNoYXI7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICBRdWlldCwgdGhyZWFkLXNhZmUgZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBmb3JtYXQgc3BlY2lmaWNhdGlvbiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIG1wZF9zc2l6ZV90IG1pbl93aWR0aDsgLyogbWluaW11bSBmaWVsZCB3aWR0aCAqLworICAgIG1wZF9zc2l6ZV90IHByZWM7ICAgICAgLyogZnJhY3Rpb24gZGlnaXRzIG9yIHNpZ25pZmljYW50IGRpZ2l0cyAqLworICAgIGNoYXIgdHlwZTsgICAgICAgICAgICAgLyogY29udmVyc2lvbiBzcGVjaWZpZXIgKi8KKyAgICBjaGFyIGFsaWduOyAgICAgICAgICAgIC8qIGFsaWdubWVudCAqLworICAgIGNoYXIgc2lnbjsgICAgICAgICAgICAgLyogc2lnbiBwcmludGluZy9hbGlnbm1lbnQgKi8KKyAgICBjaGFyIGZpbGxbNV07ICAgICAgICAgIC8qIGZpbGwgY2hhcmFjdGVyICovCisgICAgY29uc3QgY2hhciAqZG90OyAgICAgICAvKiBkZWNpbWFsIHBvaW50ICovCisgICAgY29uc3QgY2hhciAqc2VwOyAgICAgICAvKiB0aG91c2FuZHMgc2VwYXJhdG9yICovCisgICAgY29uc3QgY2hhciAqZ3JvdXBpbmc7ICAvKiBncm91cGluZyBvZiBkaWdpdHMgKi8KK30gbXBkX3NwZWNfdDsKKworLyogb3V0cHV0IHRvIGEgc3RyaW5nICovCitjaGFyICptcGRfdG9fc2NpKGNvbnN0IG1wZF90ICpkZWMsIGludCBmbXQpOworY2hhciAqbXBkX3RvX2VuZyhjb25zdCBtcGRfdCAqZGVjLCBpbnQgZm10KTsKK21wZF9zc2l6ZV90IG1wZF90b19zY2lfc2l6ZShjaGFyICoqcmVzLCBjb25zdCBtcGRfdCAqZGVjLCBpbnQgZm10KTsKK21wZF9zc2l6ZV90IG1wZF90b19lbmdfc2l6ZShjaGFyICoqcmVzLCBjb25zdCBtcGRfdCAqZGVjLCBpbnQgZm10KTsKK2ludCBtcGRfdmFsaWRhdGVfbGNvbnYobXBkX3NwZWNfdCAqc3BlYyk7CitpbnQgbXBkX3BhcnNlX2ZtdF9zdHIobXBkX3NwZWNfdCAqc3BlYywgY29uc3QgY2hhciAqZm10LCBpbnQgY2Fwcyk7CitjaGFyICogbXBkX3Fmb3JtYXRfc3BlYyhjb25zdCBtcGRfdCAqZGVjLCBjb25zdCBtcGRfc3BlY190ICpzcGVjLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworY2hhciAqbXBkX3Fmb3JtYXQoY29uc3QgbXBkX3QgKmRlYywgY29uc3QgY2hhciAqZm10LCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworCisjZGVmaW5lIE1QRF9OVU1fRkxBR1MgMTUKKyNkZWZpbmUgTVBEX01BWF9GTEFHX1NUUklORyAyMDgKKyNkZWZpbmUgTVBEX01BWF9GTEFHX0xJU1QgKE1QRF9NQVhfRkxBR19TVFJJTkcrMTgpCisjZGVmaW5lIE1QRF9NQVhfU0lHTkFMX0xJU1QgMTIxCitpbnQgbXBkX3NucHJpbnRfZmxhZ3MoY2hhciAqZGVzdCwgaW50IG5tZW1iLCB1aW50MzJfdCBmbGFncyk7CitpbnQgbXBkX2xzbnByaW50X2ZsYWdzKGNoYXIgKmRlc3QsIGludCBubWVtYiwgdWludDMyX3QgZmxhZ3MsIGNvbnN0IGNoYXIgKmZsYWdfc3RyaW5nW10pOworaW50IG1wZF9sc25wcmludF9zaWduYWxzKGNoYXIgKmRlc3QsIGludCBubWVtYiwgdWludDMyX3QgZmxhZ3MsIGNvbnN0IGNoYXIgKnNpZ25hbF9zdHJpbmdbXSk7CisKKy8qIG91dHB1dCB0byBhIGZpbGUgKi8KK3ZvaWQgbXBkX2ZwcmludChGSUxFICpmaWxlLCBjb25zdCBtcGRfdCAqZGVjKTsKK3ZvaWQgbXBkX3ByaW50KGNvbnN0IG1wZF90ICpkZWMpOworCisvKiBhc3NpZ25tZW50IGZyb20gYSBzdHJpbmcgKi8KK3ZvaWQgbXBkX3FzZXRfc3RyaW5nKG1wZF90ICpkZWMsIGNvbnN0IGNoYXIgKnMsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CisKKy8qIHNldCB0byBOYU4gd2l0aCBlcnJvciBmbGFncyAqLwordm9pZCBtcGRfc2V0ZXJyb3IobXBkX3QgKnJlc3VsdCwgdWludDMyX3QgZmxhZ3MsIHVpbnQzMl90ICpzdGF0dXMpOworLyogc2V0IGEgc3BlY2lhbCB3aXRoIHNpZ24gYW5kIHR5cGUgKi8KK3ZvaWQgbXBkX3NldHNwZWNpYWwobXBkX3QgKmRlYywgdWludDhfdCBzaWduLCB1aW50OF90IHR5cGUpOworLyogc2V0IGNvZWZmaWNpZW50IHRvIHplcm8gb3IgYWxsIG5pbmVzICovCit2b2lkIG1wZF96ZXJvY29lZmYobXBkX3QgKnJlc3VsdCk7Cit2b2lkIG1wZF9xbWF4Y29lZmYobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKworLyogcXVpZXRseSBhc3NpZ24gYSBDIGludGVnZXIgdHlwZSB0byBhbiBtcGRfdCAqLwordm9pZCBtcGRfcXNldF9zc2l6ZShtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXNldF9pMzIobXBkX3QgKnJlc3VsdCwgaW50MzJfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXNldF91aW50KG1wZF90ICpyZXN1bHQsIG1wZF91aW50X3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FzZXRfdTMyKG1wZF90ICpyZXN1bHQsIHVpbnQzMl90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CisjaWZuZGVmIExFR0FDWV9DT01QSUxFUgordm9pZCBtcGRfcXNldF9pNjQobXBkX3QgKnJlc3VsdCwgaW50NjRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXNldF91NjQobXBkX3QgKnJlc3VsdCwgdWludDY0X3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKyNlbmRpZgorCisvKiBxdWlldGx5IGFzc2lnbiBhIEMgaW50ZWdlciB0eXBlIHRvIGFuIG1wZF90IHdpdGggYSBzdGF0aWMgY29lZmZpY2llbnQgKi8KK3ZvaWQgbXBkX3Fzc2V0X3NzaXplKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc3NldF9pMzIobXBkX3QgKnJlc3VsdCwgaW50MzJfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXNzZXRfdWludChtcGRfdCAqcmVzdWx0LCBtcGRfdWludF90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc3NldF91MzIobXBkX3QgKnJlc3VsdCwgdWludDMyX3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKworLyogcXVpZXRseSBnZXQgYSBDIGludGVnZXIgdHlwZSBmcm9tIGFuIG1wZF90ICovCittcGRfc3NpemVfdCBtcGRfcWdldF9zc2l6ZShjb25zdCBtcGRfdCAqZGVjLCB1aW50MzJfdCAqc3RhdHVzKTsKK21wZF91aW50X3QgbXBkX3FnZXRfdWludChjb25zdCBtcGRfdCAqZGVjLCB1aW50MzJfdCAqc3RhdHVzKTsKK21wZF91aW50X3QgbXBkX3FhYnNfdWludChjb25zdCBtcGRfdCAqZGVjLCB1aW50MzJfdCAqc3RhdHVzKTsKKworCisvKiBxdWlldCBmdW5jdGlvbnMgKi8KK2ludCBtcGRfcWNoZWNrX25hbihtcGRfdCAqbmFucmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK2ludCBtcGRfcWNoZWNrX25hbnMobXBkX3QgKm5hbnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWZpbmFsaXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CisKK2NvbnN0IGNoYXIgKiBtcGRfY2xhc3MoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCk7CisKK2ludCBtcGRfcWNvcHkobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsICB1aW50MzJfdCAqc3RhdHVzKTsKK21wZF90ICptcGRfcW5jb3B5KGNvbnN0IG1wZF90ICphKTsKK2ludCBtcGRfcWNvcHlfYWJzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCAqc3RhdHVzKTsKK2ludCBtcGRfcWNvcHlfbmVnYXRlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCAqc3RhdHVzKTsKK2ludCBtcGRfcWNvcHlfc2lnbihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIHVpbnQzMl90ICpzdGF0dXMpOworCit2b2lkIG1wZF9xYW5kKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FpbnZlcnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbG9nYihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FvcihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc2NhbGViKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3F4b3IobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworaW50IG1wZF9zYW1lX3F1YW50dW0oY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiKTsKKwordm9pZCBtcGRfcXJvdGF0ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CitpbnQgbXBkX3FzaGlmdGwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IG4sIHVpbnQzMl90ICpzdGF0dXMpOworbXBkX3VpbnRfdCBtcGRfcXNoaWZ0cihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgbiwgdWludDMyX3QgKnN0YXR1cyk7CittcGRfdWludF90IG1wZF9xc2hpZnRyX2lucGxhY2UobXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3Qgbik7Cit2b2lkIG1wZF9xc2hpZnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXNoaWZ0bihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgbiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKworaW50IG1wZF9xY21wKGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgdWludDMyX3QgKnN0YXR1cyk7CitpbnQgbXBkX3Fjb21wYXJlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK2ludCBtcGRfcWNvbXBhcmVfc2lnbmFsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK2ludCBtcGRfY21wX3RvdGFsKGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYik7CitpbnQgbXBkX2NtcF90b3RhbF9tYWcoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiKTsKK2ludCBtcGRfY29tcGFyZV90b3RhbChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpOworaW50IG1wZF9jb21wYXJlX3RvdGFsX21hZyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpOworCit2b2lkIG1wZF9xcm91bmRfdG9faW50eChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3Fyb3VuZF90b19pbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xdHJ1bmMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xZmxvb3IobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xY2VpbChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKwordm9pZCBtcGRfcWFicyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FtYXgobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcW1heF9tYWcobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcW1pbihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbWluX21hZyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbWludXMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xcGx1cyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FuZXh0X21pbnVzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcW5leHRfcGx1cyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FuZXh0X3Rvd2FyZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xcXVhbnRpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXJlc2NhbGUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGV4cCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FyZXNjYWxlX2ZtdChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgZXhwLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXJlZHVjZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FhZGQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWFkZF9zc2l6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FhZGRfaTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQzMl90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xYWRkX3VpbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF91aW50X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FhZGRfdTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXN1YihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc3ViX3NzaXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXN1Yl9pMzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDMyX3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FzdWJfdWludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3VpbnRfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXN1Yl91MzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbXVsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FtdWxfc3NpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbXVsX2kzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50MzJfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcW11bF91aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfdWludF90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbXVsX3UzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FmbWEobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfdCAqYywgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FkaXYobXBkX3QgKnEsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FkaXZfc3NpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xZGl2X2kzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50MzJfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWRpdl91aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfdWludF90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xZGl2X3UzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FkaXZpbnQobXBkX3QgKnEsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FyZW0obXBkX3QgKnIsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FyZW1fbmVhcihtcGRfdCAqciwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWRpdm1vZChtcGRfdCAqcSwgbXBkX3QgKnIsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3Fwb3cobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmJhc2UsIGNvbnN0IG1wZF90ICpleHAsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xcG93bW9kKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLCBjb25zdCBtcGRfdCAqZXhwLCBjb25zdCBtcGRfdCAqbW9kLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWV4cChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FsbjEwKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IHByZWMsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWxuKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWxvZzEwKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXNxcnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xaW52cm9vdChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKworCitzaXplX3QgbXBkX3NpemVpbmJhc2UoY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90IGJhc2UpOwordm9pZCBtcGRfcWltcG9ydF91MTYobXBkX3QgKnJlc3VsdCwgY29uc3QgdWludDE2X3QgKnNyY2RhdGEsIHNpemVfdCBzcmNsZW4sCisgICAgICAgICAgICAgICAgICAgICB1aW50OF90IHNyY3NpZ24sIHVpbnQzMl90IHNyY2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWltcG9ydF91MzIobXBkX3QgKnJlc3VsdCwgY29uc3QgdWludDMyX3QgKnNyY2RhdGEsIHNpemVfdCBzcmNsZW4sCisgICAgICAgICAgICAgICAgICAgICB1aW50OF90IHNyY3NpZ24sIHVpbnQzMl90IHNyY2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworc2l6ZV90IG1wZF9xZXhwb3J0X3UxNih1aW50MTZfdCAqKnJkYXRhLCBzaXplX3QgcmxlbiwgdWludDMyX3QgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXBkX3QgKnNyYywgdWludDMyX3QgKnN0YXR1cyk7CitzaXplX3QgbXBkX3FleHBvcnRfdTMyKHVpbnQzMl90ICoqcmRhdGEsIHNpemVfdCBybGVuLCB1aW50MzJfdCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtcGRfdCAqc3JjLCB1aW50MzJfdCAqc3RhdHVzKTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYWxsaW5nIGZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK2NoYXIgKiBtcGRfZm9ybWF0KGNvbnN0IG1wZF90ICpkZWMsIGNvbnN0IGNoYXIgKmZtdCwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2ltcG9ydF91MTYobXBkX3QgKnJlc3VsdCwgY29uc3QgdWludDE2X3QgKnNyY2RhdGEsIHNpemVfdCBzcmNsZW4sIHVpbnQ4X3Qgc3Jjc2lnbiwgdWludDMyX3QgYmFzZSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2ltcG9ydF91MzIobXBkX3QgKnJlc3VsdCwgY29uc3QgdWludDMyX3QgKnNyY2RhdGEsIHNpemVfdCBzcmNsZW4sIHVpbnQ4X3Qgc3Jjc2lnbiwgdWludDMyX3QgYmFzZSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3NpemVfdCBtcGRfZXhwb3J0X3UxNih1aW50MTZfdCAqKnJkYXRhLCBzaXplX3QgcmxlbiwgdWludDMyX3QgYmFzZSwgY29uc3QgbXBkX3QgKnNyYywgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3NpemVfdCBtcGRfZXhwb3J0X3UzMih1aW50MzJfdCAqKnJkYXRhLCBzaXplX3QgcmxlbiwgdWludDMyX3QgYmFzZSwgY29uc3QgbXBkX3QgKnNyYywgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2ZpbmFsaXplKG1wZF90ICpyZXN1bHQsIG1wZF9jb250ZXh0X3QgKmN0eCk7CitpbnQgbXBkX2NoZWNrX25hbihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK2ludCBtcGRfY2hlY2tfbmFucyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zZXRfc3RyaW5nKG1wZF90ICpyZXN1bHQsIGNvbnN0IGNoYXIgKnMsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9tYXhjb2VmZihtcGRfdCAqcmVzdWx0LCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3NldF9zc2l6ZShtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3NldF9pMzIobXBkX3QgKnJlc3VsdCwgaW50MzJfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3NldF91aW50KG1wZF90ICpyZXN1bHQsIG1wZF91aW50X3QgYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3NzZXRfdTMyKG1wZF90ICpyZXN1bHQsIHVpbnQzMl90IGEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zZXRfc3NpemUobXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3QgYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3NldF9pMzIobXBkX3QgKnJlc3VsdCwgaW50MzJfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc2V0X3VpbnQobXBkX3QgKnJlc3VsdCwgbXBkX3VpbnRfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc2V0X3UzMihtcGRfdCAqcmVzdWx0LCB1aW50MzJfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOworI2lmbmRlZiBMRUdBQ1lfQ09NUElMRVIKK3ZvaWQgbXBkX3NldF9pNjQobXBkX3QgKnJlc3VsdCwgaW50NjRfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc2V0X3U2NChtcGRfdCAqcmVzdWx0LCB1aW50NjRfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOworI2VuZGlmCittcGRfc3NpemVfdCBtcGRfZ2V0X3NzaXplKGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOworbXBkX3VpbnRfdCBtcGRfZ2V0X3VpbnQoY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7CittcGRfdWludF90IG1wZF9hYnNfdWludChjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2FuZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9jb3B5KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfY2Fub25pY2FsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfY29weV9hYnMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9jb3B5X25lZ2F0ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2NvcHlfc2lnbihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9pbnZlcnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9sb2diKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfb3IobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfcm90YXRlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3NjYWxlYihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zaGlmdGwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IG4sIG1wZF9jb250ZXh0X3QgKmN0eCk7CittcGRfdWludF90IG1wZF9zaGlmdHIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IG4sIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zaGlmdG4obXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IG4sIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zaGlmdChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF94b3IobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfYWJzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOworaW50IG1wZF9jbXAoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOworaW50IG1wZF9jb21wYXJlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK2ludCBtcGRfY29tcGFyZV9zaWduYWwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfYWRkKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2FkZF9zc2l6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2FkZF9pMzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDMyX3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2FkZF91aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfdWludF90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9hZGRfdTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3ViKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3N1Yl9zc2l6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3N1Yl9pMzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDMyX3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3N1Yl91aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfdWludF90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zdWJfdTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfZGl2KG1wZF90ICpxLCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9kaXZfc3NpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9kaXZfaTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQzMl90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9kaXZfdWludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3VpbnRfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfZGl2X3UzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2Rpdm1vZChtcGRfdCAqcSwgbXBkX3QgKnIsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2RpdmludChtcGRfdCAqcSwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfZXhwKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfZm1hKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX3QgKmMsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9sbihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2xvZzEwKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbWF4KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX21heF9tYWcobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbWluKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX21pbl9tYWcobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbWludXMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9tdWwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbXVsX3NzaXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbXVsX2kzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50MzJfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbXVsX3VpbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF91aW50X3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX211bF91MzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9uZXh0X21pbnVzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbmV4dF9wbHVzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbmV4dF90b3dhcmQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfcGx1cyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3BvdyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYmFzZSwgY29uc3QgbXBkX3QgKmV4cCwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3Bvd21vZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYmFzZSwgY29uc3QgbXBkX3QgKmV4cCwgY29uc3QgbXBkX3QgKm1vZCwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3F1YW50aXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3Jlc2NhbGUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGV4cCwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3JlZHVjZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3JlbShtcGRfdCAqciwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfcmVtX25lYXIobXBkX3QgKnIsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3JvdW5kX3RvX2ludHgobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9yb3VuZF90b19pbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF90cnVuYyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2Zsb29yKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfY2VpbChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3NxcnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9pbnZyb290KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBzcGVjaWZpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmZGVmIENPTkZJR182NAordm9pZCBtcGRfcXNzZXRfaTY0KG1wZF90ICpyZXN1bHQsIGludDY0X3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3Fzc2V0X3U2NChtcGRfdCAqcmVzdWx0LCB1aW50NjRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworaW50NjRfdCBtcGRfcWdldF9pNjQoY29uc3QgbXBkX3QgKmRlYywgdWludDMyX3QgKnN0YXR1cyk7Cit1aW50NjRfdCBtcGRfcWdldF91NjQoY29uc3QgbXBkX3QgKmRlYywgdWludDMyX3QgKnN0YXR1cyk7CisKK3ZvaWQgbXBkX3FhZGRfaTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQ2NF90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xYWRkX3U2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDY0X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FzdWJfaTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQ2NF90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc3ViX3U2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDY0X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FtdWxfaTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQ2NF90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbXVsX3U2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDY0X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FkaXZfaTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQ2NF90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xZGl2X3U2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDY0X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKwordm9pZCBtcGRfc3NldF9pNjQobXBkX3QgKnJlc3VsdCwgaW50NjRfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3NldF91NjQobXBkX3QgKnJlc3VsdCwgdWludDY0X3QgYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK2ludDY0X3QgbXBkX2dldF9pNjQoY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit1aW50NjRfdCBtcGRfZ2V0X3U2NChjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKKwordm9pZCBtcGRfYWRkX2k2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50NjRfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfYWRkX3U2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDY0X3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3N1Yl9pNjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDY0X3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3N1Yl91NjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQ2NF90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9kaXZfaTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQ2NF90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9kaXZfdTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50NjRfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbXVsX2k2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50NjRfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbXVsX3U2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDY0X3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKKyNlbHNlCitpbnQzMl90IG1wZF9xZ2V0X2kzMihjb25zdCBtcGRfdCAqZGVjLCB1aW50MzJfdCAqc3RhdHVzKTsKK3VpbnQzMl90IG1wZF9xZ2V0X3UzMihjb25zdCBtcGRfdCAqZGVjLCB1aW50MzJfdCAqc3RhdHVzKTsKK2ludDMyX3QgbXBkX2dldF9pMzIoY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit1aW50MzJfdCBtcGRfZ2V0X3UzMihjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKKyNlbmRpZgorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgR2V0IGF0dHJpYnV0ZXMgb2YgYSBkZWNpbWFsICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworRVhUSU5MSU5FIG1wZF9zc2l6ZV90IG1wZF9hZGpleHAoY29uc3QgbXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgbXBkX3NzaXplX3QgbXBkX2V0aW55KGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCk7CitFWFRJTkxJTkUgbXBkX3NzaXplX3QgbXBkX2V0b3AoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KTsKK0VYVElOTElORSBtcGRfdWludF90IG1wZF9tc3dvcmQoY29uc3QgbXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgaW50IG1wZF93b3JkX2RpZ2l0cyhtcGRfdWludF90IHdvcmQpOworLyogbW9zdCBzaWduaWZpY2FudCBkaWdpdCBvZiBhIHdvcmQgKi8KK0VYVElOTElORSBtcGRfdWludF90IG1wZF9tc2QobXBkX3VpbnRfdCB3b3JkKTsKKy8qIGxlYXN0IHNpZ25pZmljYW50IGRpZ2l0IG9mIGEgd29yZCAqLworRVhUSU5MSU5FIG1wZF91aW50X3QgbXBkX2xzZChtcGRfdWludF90IHdvcmQpOworLyogY29lZmZpY2llbnQgc2l6ZSBuZWVkZWQgdG8gc3RvcmUgJ2RpZ2l0cycgKi8KK0VYVElOTElORSBtcGRfc3NpemVfdCBtcGRfZGlnaXRzX3RvX3NpemUobXBkX3NzaXplX3QgZGlnaXRzKTsKKy8qIG51bWJlciBvZiBkaWdpdHMgaW4gdGhlIGV4cG9uZW50LCB1bmRlZmluZWQgZm9yIE1QRF9TU0laRV9NSU4gKi8KK0VYVElOTElORSBpbnQgbXBkX2V4cF9kaWdpdHMobXBkX3NzaXplX3QgZXhwKTsKK0VYVElOTElORSBpbnQgbXBkX2lzY2Fub25pY2FsKGNvbnN0IG1wZF90ICpkZWMgVU5VU0VEKTsKK0VYVElOTElORSBpbnQgbXBkX2lzZmluaXRlKGNvbnN0IG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNpbmZpbml0ZShjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzaW50ZWdlcihjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzbmFuKGNvbnN0IG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNuZWdhdGl2ZShjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzcG9zaXRpdmUoY29uc3QgbXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgaW50IG1wZF9pc3FuYW4oY29uc3QgbXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgaW50IG1wZF9pc3NpZ25lZChjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzc25hbihjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzc3BlY2lhbChjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzemVybyhjb25zdCBtcGRfdCAqZGVjKTsKKy8qIHVuZGVmaW5lZCBmb3Igc3BlY2lhbCBudW1iZXJzICovCitFWFRJTkxJTkUgaW50IG1wZF9pc3plcm9jb2VmZihjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzbm9ybWFsKGNvbnN0IG1wZF90ICpkZWMsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCk7CitFWFRJTkxJTkUgaW50IG1wZF9pc3N1Ym5vcm1hbChjb25zdCBtcGRfdCAqZGVjLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgpOworLyogb2RkIHdvcmQgKi8KK0VYVElOTElORSBpbnQgbXBkX2lzb2Rkd29yZChtcGRfdWludF90IHdvcmQpOworLyogb2RkIGNvZWZmaWNpZW50ICovCitFWFRJTkxJTkUgaW50IG1wZF9pc29kZGNvZWZmKGNvbnN0IG1wZF90ICpkZWMpOworLyogb2RkIGRlY2ltYWwsIG9ubHkgZGVmaW5lZCBmb3IgaW50ZWdlcnMgKi8KK2ludCBtcGRfaXNvZGQoY29uc3QgbXBkX3QgKmRlYyk7CisvKiBldmVuIGRlY2ltYWwsIG9ubHkgZGVmaW5lZCBmb3IgaW50ZWdlcnMgKi8KK2ludCBtcGRfaXNldmVuKGNvbnN0IG1wZF90ICpkZWMpOworLyogMCBpZiBkZWMgaXMgcG9zaXRpdmUsIDEgaWYgZGVjIGlzIG5lZ2F0aXZlICovCitFWFRJTkxJTkUgdWludDhfdCBtcGRfc2lnbihjb25zdCBtcGRfdCAqZGVjKTsKKy8qIDEgaWYgZGVjIGlzIHBvc2l0aXZlLCAtMSBpZiBkZWMgaXMgbmVnYXRpdmUgKi8KK0VYVElOTElORSBpbnQgbXBkX2FyaXRoX3NpZ24oY29uc3QgbXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgbG9uZyBtcGRfcmFkaXgodm9pZCk7CitFWFRJTkxJTkUgaW50IG1wZF9pc2R5bmFtaWMobXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgaW50IG1wZF9pc3N0YXRpYyhtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzZHluYW1pY19kYXRhKG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNzdGF0aWNfZGF0YShtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzc2hhcmVkX2RhdGEobXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgaW50IG1wZF9pc2NvbnN0X2RhdGEobXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgbXBkX3NzaXplX3QgbXBkX3RyYWlsX3plcm9zKGNvbnN0IG1wZF90ICpkZWMpOworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgU2V0IGF0dHJpYnV0ZXMgb2YgYSBkZWNpbWFsICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogc2V0IG51bWJlciBvZiBkZWNpbWFsIGRpZ2l0cyBpbiB0aGUgY29lZmZpY2llbnQgKi8KK0VYVElOTElORSB2b2lkIG1wZF9zZXRkaWdpdHMobXBkX3QgKnJlc3VsdCk7CitFWFRJTkxJTkUgdm9pZCBtcGRfc2V0X3NpZ24obXBkX3QgKnJlc3VsdCwgdWludDhfdCBzaWduKTsKKy8qIGNvcHkgc2lnbiBmcm9tIGFub3RoZXIgZGVjaW1hbCAqLworRVhUSU5MSU5FIHZvaWQgbXBkX3NpZ25jcHkobXBkX3QgKnJlc3VsdCwgbXBkX3QgKmEpOworRVhUSU5MSU5FIHZvaWQgbXBkX3NldF9pbmZpbml0eShtcGRfdCAqcmVzdWx0KTsKK0VYVElOTElORSB2b2lkIG1wZF9zZXRfcW5hbihtcGRfdCAqcmVzdWx0KTsKK0VYVElOTElORSB2b2lkIG1wZF9zZXRfc25hbihtcGRfdCAqcmVzdWx0KTsKK0VYVElOTElORSB2b2lkIG1wZF9zZXRfbmVnYXRpdmUobXBkX3QgKnJlc3VsdCk7CitFWFRJTkxJTkUgdm9pZCBtcGRfc2V0X3Bvc2l0aXZlKG1wZF90ICpyZXN1bHQpOworRVhUSU5MSU5FIHZvaWQgbXBkX3NldF9keW5hbWljKG1wZF90ICpyZXN1bHQpOworRVhUSU5MSU5FIHZvaWQgbXBkX3NldF9zdGF0aWMobXBkX3QgKnJlc3VsdCk7CitFWFRJTkxJTkUgdm9pZCBtcGRfc2V0X2R5bmFtaWNfZGF0YShtcGRfdCAqcmVzdWx0KTsKK0VYVElOTElORSB2b2lkIG1wZF9zZXRfc3RhdGljX2RhdGEobXBkX3QgKnJlc3VsdCk7CitFWFRJTkxJTkUgdm9pZCBtcGRfc2V0X3NoYXJlZF9kYXRhKG1wZF90ICpyZXN1bHQpOworRVhUSU5MSU5FIHZvaWQgbXBkX3NldF9jb25zdF9kYXRhKG1wZF90ICpyZXN1bHQpOworRVhUSU5MSU5FIHZvaWQgbXBkX2NsZWFyX2ZsYWdzKG1wZF90ICpyZXN1bHQpOworRVhUSU5MSU5FIHZvaWQgbXBkX3NldF9mbGFncyhtcGRfdCAqcmVzdWx0LCB1aW50OF90IGZsYWdzKTsKK0VYVElOTElORSB2b2lkIG1wZF9jb3B5X2ZsYWdzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphKTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvciBNYWNyb3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgbXBkX2Vycl9mYXRhbCguLi4pIFwKKyAgICBkbyB7ZnByaW50ZihzdGRlcnIsICIlczolZDogZXJyb3I6ICIsIF9fRklMRV9fLCBfX0xJTkVfXyk7IFwKKyAgICAgICAgZnByaW50ZihzdGRlcnIsIF9fVkFfQVJHU19fKTsgIGZwdXRjKCdcbicsIHN0ZGVycik7ICAgIFwKKyAgICAgICAgYWJvcnQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBtcGRfZXJyX3dhcm4oLi4uKSBcCisgICAgZG8ge2ZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IHdhcm5pbmc6ICIsIF9fRklMRV9fLCBfX0xJTkVfXyk7IFwKKyAgICAgICAgZnByaW50ZihzdGRlcnIsIF9fVkFfQVJHU19fKTsgZnB1dGMoJ1xuJywgc3RkZXJyKTsgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeSBoYW5kbGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitleHRlcm4gdm9pZCAqKCogbXBkX21hbGxvY2Z1bmMpKHNpemVfdCBzaXplKTsKK2V4dGVybiB2b2lkICooKiBtcGRfY2FsbG9jZnVuYykoc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSk7CitleHRlcm4gdm9pZCAqKCogbXBkX3JlYWxsb2NmdW5jKSh2b2lkICpwdHIsIHNpemVfdCBzaXplKTsKK2V4dGVybiB2b2lkICgqIG1wZF9mcmVlKSh2b2lkICpwdHIpOworCit2b2lkICptcGRfY2FsbG9jZnVuY19lbShzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplKTsKKwordm9pZCAqbXBkX2FsbG9jKG1wZF9zaXplX3Qgbm1lbWIsIG1wZF9zaXplX3Qgc2l6ZSk7Cit2b2lkICptcGRfY2FsbG9jKG1wZF9zaXplX3Qgbm1lbWIsIG1wZF9zaXplX3Qgc2l6ZSk7Cit2b2lkICptcGRfcmVhbGxvYyh2b2lkICpwdHIsIG1wZF9zaXplX3Qgbm1lbWIsIG1wZF9zaXplX3Qgc2l6ZSwgdWludDhfdCAqZXJyKTsKK3ZvaWQgKm1wZF9zaF9hbGxvYyhtcGRfc2l6ZV90IHN0cnVjdF9zaXplLCBtcGRfc2l6ZV90IG5tZW1iLCBtcGRfc2l6ZV90IHNpemUpOworCittcGRfdCAqbXBkX3FuZXcodm9pZCk7CittcGRfdCAqbXBkX25ldyhtcGRfY29udGV4dF90ICpjdHgpOworbXBkX3QgKm1wZF9xbmV3X3NpemUobXBkX3NzaXplX3Qgc2l6ZSk7Cit2b2lkIG1wZF9kZWwobXBkX3QgKmRlYyk7CisKK3ZvaWQgbXBkX3VpbnRfemVybyhtcGRfdWludF90ICpkZXN0LCBtcGRfc2l6ZV90IGxlbik7CitpbnQgbXBkX3FyZXNpemUobXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3Qgc2l6ZSwgdWludDMyX3QgKnN0YXR1cyk7CitpbnQgbXBkX3FyZXNpemVfemVybyhtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBzaXplLCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX21pbmFsbG9jKG1wZF90ICpyZXN1bHQpOworCitpbnQgbXBkX3Jlc2l6ZShtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBzaXplLCBtcGRfY29udGV4dF90ICpjdHgpOworaW50IG1wZF9yZXNpemVfemVybyhtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBzaXplLCBtcGRfY29udGV4dF90ICpjdHgpOworCisKK01QRF9QUkFHTUEoTVBEX0hJREVfU1lNQk9MU19FTkQpIC8qIHJlc3RvcmUgcHJldmlvdXMgc2NvcGUgcnVsZXMgKi8KKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30gLyogRU5EIGV4dGVybiAiQyIgKi8KKyNlbmRpZgorCisKKyNlbmRpZiAvKiBNUERFQ0lNQUxfSCAqLworCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9udW1iZXJ0aGVvcnkuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbnVtYmVydGhlb3J5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBjZTZkYwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbnVtYmVydGhlb3J5LmMKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlICJiaXRzLmgiCisjaW5jbHVkZSAidW1vZGFyaXRoLmgiCisjaW5jbHVkZSAibnVtYmVydGhlb3J5LmgiCisKKworLyogQmlnbnVtOiBJbml0aWFsaXplIHRoZSBOdW1iZXIgVGhlb3JldGljIFRyYW5zZm9ybS4gKi8KKworCisvKgorICogUmV0dXJuIHRoZSBudGggcm9vdCBvZiB1bml0eSBpbiBGKHApLiBUaGlzIGNvcnJlc3BvbmRzIHRvIGUqKigoMipwaSppKS9uKQorICogaW4gdGhlIEZvdXJpZXIgdHJhbnNmb3JtLiBXZSBoYXZlIHcqKm4gPT0gMSAobW9kIHApLgorICogICAgbiA6PSB0cmFuc2Zvcm0gbGVuZ3RoLgorICogICAgc2lnbiA6PSAtMSBmb3IgZm9yd2FyZCB0cmFuc2Zvcm0sIDEgZm9yIGJhY2t3YXJkIHRyYW5zZm9ybS4KKyAqICAgIG1vZG51bSA6PSBvbmUgb2Yge1AxLCBQMiwgUDN9LgorICovCittcGRfdWludF90CitfbXBkX2dldGtlcm5lbChtcGRfdWludF90IG4sIGludCBzaWduLCBpbnQgbW9kbnVtKQoreworICAgIG1wZF91aW50X3QgdW1vZCwgcCwgciwgeGk7CisjaWZkZWYgUFBSTworICAgIGRvdWJsZSBkbW9kOworICAgIHVpbnQzMl90IGRpbnZtb2RbM107CisjZW5kaWYKKworICAgIFNFVE1PRFVMVVMobW9kbnVtKTsKKyAgICByID0gbXBkX3Jvb3RzW21vZG51bV07IC8qIHByaW1pdGl2ZSByb290IG9mIEYocCkgKi8KKyAgICBwID0gdW1vZDsKKyAgICB4aSA9IChwLTEpIC8gbjsKKworICAgIGlmIChzaWduID09IC0xKQorICAgICAgICByZXR1cm4gUE9XTU9EKHIsIChwLTEteGkpKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQT1dNT0QociwgeGkpOworfQorCisvKgorICogSW5pdGlhbGl6ZSBhbmQgcmV0dXJuIHRyYW5zZm9ybSBwYXJhbWV0ZXJzLgorICogICAgbiA6PSB0cmFuc2Zvcm0gbGVuZ3RoLgorICogICAgc2lnbiA6PSAtMSBmb3IgZm9yd2FyZCB0cmFuc2Zvcm0sIDEgZm9yIGJhY2t3YXJkIHRyYW5zZm9ybS4KKyAqICAgIG1vZG51bSA6PSBvbmUgb2Yge1AxLCBQMiwgUDN9LgorICovCitzdHJ1Y3QgZm50X3BhcmFtcyAqCitfbXBkX2luaXRfZm50X3BhcmFtcyhtcGRfc2l6ZV90IG4sIGludCBzaWduLCBpbnQgbW9kbnVtKQoreworICAgIHN0cnVjdCBmbnRfcGFyYW1zICp0cGFyYW1zOworICAgIG1wZF91aW50X3QgdW1vZDsKKyNpZmRlZiBQUFJPCisgICAgZG91YmxlIGRtb2Q7CisgICAgdWludDMyX3QgZGludm1vZFszXTsKKyNlbmRpZgorICAgIG1wZF91aW50X3Qga2VybmVsLCB3OworICAgIG1wZF91aW50X3QgaTsKKyAgICBtcGRfc2l6ZV90IG5oYWxmOworCisgICAgYXNzZXJ0KGlzcG93ZXIyKG4pKTsKKyAgICBhc3NlcnQoc2lnbiA9PSAtMSB8fCBzaWduID09IDEpOworICAgIGFzc2VydChQMSA8PSBtb2RudW0gJiYgbW9kbnVtIDw9IFAzKTsKKworICAgIG5oYWxmID0gbi8yOworICAgIHRwYXJhbXMgPSBtcGRfc2hfYWxsb2Moc2l6ZW9mICp0cGFyYW1zLCBuaGFsZiwgc2l6ZW9mIChtcGRfdWludF90KSk7CisgICAgaWYgKHRwYXJhbXMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBTRVRNT0RVTFVTKG1vZG51bSk7CisgICAga2VybmVsID0gX21wZF9nZXRrZXJuZWwobiwgc2lnbiwgbW9kbnVtKTsKKworICAgIHRwYXJhbXMtPm1vZG51bSA9IG1vZG51bTsKKyAgICB0cGFyYW1zLT5tb2R1bHVzID0gdW1vZDsKKyAgICB0cGFyYW1zLT5rZXJuZWwgPSBrZXJuZWw7CisKKyAgICAvKiB3dGFibGVbXSA6PSB3KiowLCB3KioxLCAuLi4sIHcqKihuaGFsZi0xKSAqLworICAgIHcgPSAxOworICAgIGZvciAoaSA9IDA7IGkgPCBuaGFsZjsgaSsrKSB7CisgICAgICAgIHRwYXJhbXMtPnd0YWJsZVtpXSA9IHc7CisgICAgICAgIHcgPSBNVUxNT0Qodywga2VybmVsKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHBhcmFtczsKK30KKworLyogSW5pdGlhbGl6ZSB3dGFibGUgb2Ygc2l6ZSB0aHJlZS4gKi8KK3ZvaWQKK19tcGRfaW5pdF93M3RhYmxlKG1wZF91aW50X3QgdzN0YWJsZVszXSwgaW50IHNpZ24sIGludCBtb2RudW0pCit7CisgICAgbXBkX3VpbnRfdCB1bW9kOworI2lmZGVmIFBQUk8KKyAgICBkb3VibGUgZG1vZDsKKyAgICB1aW50MzJfdCBkaW52bW9kWzNdOworI2VuZGlmCisgICAgbXBkX3VpbnRfdCBrZXJuZWw7CisKKyAgICBTRVRNT0RVTFVTKG1vZG51bSk7CisgICAga2VybmVsID0gX21wZF9nZXRrZXJuZWwoMywgc2lnbiwgbW9kbnVtKTsKKworICAgIHczdGFibGVbMF0gPSAxOworICAgIHczdGFibGVbMV0gPSBrZXJuZWw7CisgICAgdzN0YWJsZVsyXSA9IFBPV01PRChrZXJuZWwsIDIpOworfQorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbnVtYmVydGhlb3J5LmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL251bWJlcnRoZW9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwOTIyNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL251bWJlcnRoZW9yeS5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgTlVNQkVSX1RIRU9SWV9ICisjZGVmaW5lIE5VTUJFUl9USEVPUllfSAorCisKKyNpbmNsdWRlICJjb25zdGFudHMuaCIKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKworCisvKiBJbnRlcm5hbCBoZWFkZXIgZmlsZTogYWxsIHN5bWJvbHMgaGF2ZSBsb2NhbCBzY29wZSBpbiB0aGUgRFNPICovCitNUERfUFJBR01BKE1QRF9ISURFX1NZTUJPTFNfU1RBUlQpCisKKworLyogdHJhbnNmb3JtIHBhcmFtZXRlcnMgKi8KK3N0cnVjdCBmbnRfcGFyYW1zIHsKKyAgICBpbnQgbW9kbnVtOworICAgIG1wZF91aW50X3QgbW9kdWx1czsKKyAgICBtcGRfdWludF90IGtlcm5lbDsKKyAgICBtcGRfdWludF90IHd0YWJsZVtdOworfTsKKworCittcGRfdWludF90IF9tcGRfZ2V0a2VybmVsKG1wZF91aW50X3QgbiwgaW50IHNpZ24sIGludCBtb2RudW0pOworc3RydWN0IGZudF9wYXJhbXMgKl9tcGRfaW5pdF9mbnRfcGFyYW1zKG1wZF9zaXplX3QgbiwgaW50IHNpZ24sIGludCBtb2RudW0pOwordm9pZCBfbXBkX2luaXRfdzN0YWJsZShtcGRfdWludF90IHczdGFibGVbM10sIGludCBzaWduLCBpbnQgbW9kbnVtKTsKKworCisjaWZkZWYgUFBSTworc3RhdGljIGlubGluZSB2b2lkCitwcHJvX3NldG1vZHVsdXMoaW50IG1vZG51bSwgbXBkX3VpbnRfdCAqdW1vZCwgZG91YmxlICpkbW9kLCB1aW50MzJfdCBkaW52bW9kWzNdKQoreworICAgICpkbW9kID0gKnVtb2QgPSAgbXBkX21vZHVsaVttb2RudW1dOworICAgIGRpbnZtb2RbMF0gPSBtcGRfaW52bW9kdWxpW21vZG51bV1bMF07CisgICAgZGludm1vZFsxXSA9IG1wZF9pbnZtb2R1bGlbbW9kbnVtXVsxXTsKKyAgICBkaW52bW9kWzJdID0gbXBkX2ludm1vZHVsaVttb2RudW1dWzJdOworfQorI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZAorc3RkX3NldG1vZHVsdXMoaW50IG1vZG51bSwgbXBkX3VpbnRfdCAqdW1vZCkKK3sKKyAgICAqdW1vZCA9ICBtcGRfbW9kdWxpW21vZG51bV07Cit9CisjZW5kaWYKKworCitNUERfUFJBR01BKE1QRF9ISURFX1NZTUJPTFNfRU5EKSAvKiByZXN0b3JlIHByZXZpb3VzIHNjb3BlIHJ1bGVzICovCisKKworI2VuZGlmCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9zaXhzdGVwLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3NpeHN0ZXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDA1NDJkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9zaXhzdGVwLmMKQEAgLTAsMCArMSwyMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgImJpdHMuaCIKKyNpbmNsdWRlICJkaWZyYWRpeDIuaCIKKyNpbmNsdWRlICJudW1iZXJ0aGVvcnkuaCIKKyNpbmNsdWRlICJ0cmFuc3Bvc2UuaCIKKyNpbmNsdWRlICJ1bW9kYXJpdGguaCIKKyNpbmNsdWRlICJzaXhzdGVwLmgiCisKKworLyogQmlnbnVtOiBDYWNoZSBlZmZpY2llbnQgTWF0cml4IEZvdXJpZXIgVHJhbnNmb3JtIGZvciBhcnJheXMgb2YgdGhlCisgICBmb3JtIDIqKm4gKFNlZSBsaXRlcmF0dXJlL3NpeC1zdGVwLnR4dCkuICovCisKKworLyogZm9yd2FyZCB0cmFuc2Zvcm0gd2l0aCBzaWduID0gLTEgKi8KK2ludAorc2l4X3N0ZXBfZm50KG1wZF91aW50X3QgKmEsIG1wZF9zaXplX3QgbiwgaW50IG1vZG51bSkKK3sKKyAgICBzdHJ1Y3QgZm50X3BhcmFtcyAqdHBhcmFtczsKKyAgICBtcGRfc2l6ZV90IGxvZzJuLCBDLCBSOworICAgIG1wZF91aW50X3Qga2VybmVsOworICAgIG1wZF91aW50X3QgdW1vZDsKKyNpZmRlZiBQUFJPCisgICAgZG91YmxlIGRtb2Q7CisgICAgdWludDMyX3QgZGludm1vZFszXTsKKyNlbmRpZgorICAgIG1wZF91aW50X3QgKngsIHcwLCB3MSwgd3N0ZXA7CisgICAgbXBkX3NpemVfdCBpLCBrOworCisKKyAgICBhc3NlcnQoaXNwb3dlcjIobikpOworICAgIGFzc2VydChuID49IDE2KTsKKyAgICBhc3NlcnQobiA8PSBNUERfTUFYVFJBTlNGT1JNXzJOKTsKKworICAgIGxvZzJuID0gbXBkX2JzcihuKTsKKyAgICBDID0gKChtcGRfc2l6ZV90KTEpIDw8IChsb2cybiAvIDIpOyAgLyogbnVtYmVyIG9mIGNvbHVtbnMgKi8KKyAgICBSID0gKChtcGRfc2l6ZV90KTEpIDw8IChsb2cybiAtIChsb2cybiAvIDIpKTsgLyogbnVtYmVyIG9mIHJvd3MgKi8KKworCisgICAgLyogVHJhbnNwb3NlIHRoZSBtYXRyaXguICovCisgICAgaWYgKCF0cmFuc3Bvc2VfcG93MihhLCBSLCBDKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBMZW5ndGggUiB0cmFuc2Zvcm0gb24gdGhlIHJvd3MuICovCisgICAgaWYgKCh0cGFyYW1zID0gX21wZF9pbml0X2ZudF9wYXJhbXMoUiwgLTEsIG1vZG51bSkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGZvciAoeCA9IGE7IHggPCBhK247IHggKz0gUikgeworICAgICAgICBmbnRfZGlmMih4LCBSLCB0cGFyYW1zKTsKKyAgICB9CisKKyAgICAvKiBUcmFuc3Bvc2UgdGhlIG1hdHJpeC4gKi8KKyAgICBpZiAoIXRyYW5zcG9zZV9wb3cyKGEsIEMsIFIpKSB7CisgICAgICAgIG1wZF9mcmVlKHRwYXJhbXMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBNdWx0aXBseSBlYWNoIG1hdHJpeCBlbGVtZW50IChhZGRyZXNzZWQgYnkgaSpDK2spIGJ5IHIqKihpKmspLiAqLworICAgIFNFVE1PRFVMVVMobW9kbnVtKTsKKyAgICBrZXJuZWwgPSBfbXBkX2dldGtlcm5lbChuLCAtMSwgbW9kbnVtKTsKKyAgICBmb3IgKGkgPSAxOyBpIDwgUjsgaSsrKSB7CisgICAgICAgIHcwID0gMTsgICAgICAgICAgICAgICAgICAvKiByKiooaSowKTogaW5pdGlhbCB2YWx1ZSBmb3Igaz0wICovCisgICAgICAgIHcxID0gUE9XTU9EKGtlcm5lbCwgaSk7ICAvKiByKiooaSoxKTogaW5pdGlhbCB2YWx1ZSBmb3Igaz0xICovCisgICAgICAgIHdzdGVwID0gTVVMTU9EKHcxLCB3MSk7ICAvKiByKiooMippKSAqLworICAgICAgICBmb3IgKGsgPSAwOyBrIDwgQzsgayArPSAyKSB7CisgICAgICAgICAgICBtcGRfdWludF90IHgwID0gYVtpKkMra107CisgICAgICAgICAgICBtcGRfdWludF90IHgxID0gYVtpKkMraysxXTsKKyAgICAgICAgICAgIE1VTE1PRDIoJngwLCB3MCwgJngxLCB3MSk7CisgICAgICAgICAgICBNVUxNT0QyQygmdzAsICZ3MSwgd3N0ZXApOyAgLyogcioqKGkqKGsrMikpID0gcioqKGkqaykgKiByKiooMippKSAqLworICAgICAgICAgICAgYVtpKkMra10gPSB4MDsKKyAgICAgICAgICAgIGFbaSpDK2srMV0gPSB4MTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIExlbmd0aCBDIHRyYW5zZm9ybSBvbiB0aGUgcm93cy4gKi8KKyAgICBpZiAoQyAhPSBSKSB7CisgICAgICAgIG1wZF9mcmVlKHRwYXJhbXMpOworICAgICAgICBpZiAoKHRwYXJhbXMgPSBfbXBkX2luaXRfZm50X3BhcmFtcyhDLCAtMSwgbW9kbnVtKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yICh4ID0gYTsgeCA8IGErbjsgeCArPSBDKSB7CisgICAgICAgIGZudF9kaWYyKHgsIEMsIHRwYXJhbXMpOworICAgIH0KKyAgICBtcGRfZnJlZSh0cGFyYW1zKTsKKworI2lmIDAKKyAgICAvKiBBbiB1bm9yZGVyZWQgdHJhbnNmb3JtIGlzIHN1ZmZpY2llbnQgZm9yIGNvbnZvbHV0aW9uLiAqLworICAgIC8qIFRyYW5zcG9zZSB0aGUgbWF0cml4LiAqLworICAgIGlmICghdHJhbnNwb3NlX3BvdzIoYSwgUiwgQykpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gMTsKK30KKworCisvKiByZXZlcnNlIHRyYW5zZm9ybSwgc2lnbiA9IDEgKi8KK2ludAoraW52X3NpeF9zdGVwX2ZudChtcGRfdWludF90ICphLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pCit7CisgICAgc3RydWN0IGZudF9wYXJhbXMgKnRwYXJhbXM7CisgICAgbXBkX3NpemVfdCBsb2cybiwgQywgUjsKKyAgICBtcGRfdWludF90IGtlcm5lbDsKKyAgICBtcGRfdWludF90IHVtb2Q7CisjaWZkZWYgUFBSTworICAgIGRvdWJsZSBkbW9kOworICAgIHVpbnQzMl90IGRpbnZtb2RbM107CisjZW5kaWYKKyAgICBtcGRfdWludF90ICp4LCB3MCwgdzEsIHdzdGVwOworICAgIG1wZF9zaXplX3QgaSwgazsKKworCisgICAgYXNzZXJ0KGlzcG93ZXIyKG4pKTsKKyAgICBhc3NlcnQobiA+PSAxNik7CisgICAgYXNzZXJ0KG4gPD0gTVBEX01BWFRSQU5TRk9STV8yTik7CisKKyAgICBsb2cybiA9IG1wZF9ic3Iobik7CisgICAgQyA9ICgobXBkX3NpemVfdCkxKSA8PCAobG9nMm4gLyAyKTsgLyogbnVtYmVyIG9mIGNvbHVtbnMgKi8KKyAgICBSID0gKChtcGRfc2l6ZV90KTEpIDw8IChsb2cybiAtIChsb2cybiAvIDIpKTsgLyogbnVtYmVyIG9mIHJvd3MgKi8KKworCisjaWYgMAorICAgIC8qIEFuIHVub3JkZXJlZCB0cmFuc2Zvcm0gaXMgc3VmZmljaWVudCBmb3IgY29udm9sdXRpb24uICovCisgICAgLyogVHJhbnNwb3NlIHRoZSBtYXRyaXgsIHByb2R1Y2luZyBhbiBSKkMgbWF0cml4LiAqLworICAgIGlmICghdHJhbnNwb3NlX3BvdzIoYSwgQywgUikpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorI2VuZGlmCisKKyAgICAvKiBMZW5ndGggQyB0cmFuc2Zvcm0gb24gdGhlIHJvd3MuICovCisgICAgaWYgKCh0cGFyYW1zID0gX21wZF9pbml0X2ZudF9wYXJhbXMoQywgMSwgbW9kbnVtKSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZm9yICh4ID0gYTsgeCA8IGErbjsgeCArPSBDKSB7CisgICAgICAgIGZudF9kaWYyKHgsIEMsIHRwYXJhbXMpOworICAgIH0KKworICAgIC8qIE11bHRpcGx5IGVhY2ggbWF0cml4IGVsZW1lbnQgKGFkZHJlc3NlZCBieSBpKkMraykgYnkgcioqKGkqaykuICovCisgICAgU0VUTU9EVUxVUyhtb2RudW0pOworICAgIGtlcm5lbCA9IF9tcGRfZ2V0a2VybmVsKG4sIDEsIG1vZG51bSk7CisgICAgZm9yIChpID0gMTsgaSA8IFI7IGkrKykgeworICAgICAgICB3MCA9IDE7CisgICAgICAgIHcxID0gUE9XTU9EKGtlcm5lbCwgaSk7CisgICAgICAgIHdzdGVwID0gTVVMTU9EKHcxLCB3MSk7CisgICAgICAgIGZvciAoayA9IDA7IGsgPCBDOyBrICs9IDIpIHsKKyAgICAgICAgICAgIG1wZF91aW50X3QgeDAgPSBhW2kqQytrXTsKKyAgICAgICAgICAgIG1wZF91aW50X3QgeDEgPSBhW2kqQytrKzFdOworICAgICAgICAgICAgTVVMTU9EMigmeDAsIHcwLCAmeDEsIHcxKTsKKyAgICAgICAgICAgIE1VTE1PRDJDKCZ3MCwgJncxLCB3c3RlcCk7CisgICAgICAgICAgICBhW2kqQytrXSA9IHgwOworICAgICAgICAgICAgYVtpKkMraysxXSA9IHgxOworICAgICAgICB9CisgICAgfQorCisgICAgLyogVHJhbnNwb3NlIHRoZSBtYXRyaXguICovCisgICAgaWYgKCF0cmFuc3Bvc2VfcG93MihhLCBSLCBDKSkgeworICAgICAgICBtcGRfZnJlZSh0cGFyYW1zKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogTGVuZ3RoIFIgdHJhbnNmb3JtIG9uIHRoZSByb3dzLiAqLworICAgIGlmIChSICE9IEMpIHsKKyAgICAgICAgbXBkX2ZyZWUodHBhcmFtcyk7CisgICAgICAgIGlmICgodHBhcmFtcyA9IF9tcGRfaW5pdF9mbnRfcGFyYW1zKFIsIDEsIG1vZG51bSkpID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIGZvciAoeCA9IGE7IHggPCBhK247IHggKz0gUikgeworICAgICAgICBmbnRfZGlmMih4LCBSLCB0cGFyYW1zKTsKKyAgICB9CisgICAgbXBkX2ZyZWUodHBhcmFtcyk7CisKKyAgICAvKiBUcmFuc3Bvc2UgdGhlIG1hdHJpeC4gKi8KKyAgICBpZiAoIXRyYW5zcG9zZV9wb3cyKGEsIEMsIFIpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiAxOworfQorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvc2l4c3RlcC5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9zaXhzdGVwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ2NzAwNwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvc2l4c3RlcC5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgU0lYX1NURVBfSAorI2RlZmluZSBTSVhfU1RFUF9ICisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKworLyogSW50ZXJuYWwgaGVhZGVyIGZpbGU6IGFsbCBzeW1ib2xzIGhhdmUgbG9jYWwgc2NvcGUgaW4gdGhlIERTTyAqLworTVBEX1BSQUdNQShNUERfSElERV9TWU1CT0xTX1NUQVJUKQorCisKK2ludCBzaXhfc3RlcF9mbnQobXBkX3VpbnRfdCAqYSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKTsKK2ludCBpbnZfc2l4X3N0ZXBfZm50KG1wZF91aW50X3QgKmEsIG1wZF9zaXplX3QgbiwgaW50IG1vZG51bSk7CisKKworTVBEX1BSQUdNQShNUERfSElERV9TWU1CT0xTX0VORCkgLyogcmVzdG9yZSBwcmV2aW91cyBzY29wZSBydWxlcyAqLworCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy90cmFuc3Bvc2UuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdHJhbnNwb3NlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU1ZDRiNgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdHJhbnNwb3NlLmMKQEAgLTAsMCArMSwyNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgImJpdHMuaCIKKyNpbmNsdWRlICJjb25zdGFudHMuaCIKKyNpbmNsdWRlICJ0eXBlYXJpdGguaCIKKyNpbmNsdWRlICJ0cmFuc3Bvc2UuaCIKKworCisjZGVmaW5lIEJVRlNJWkUgNDA5NgorI2RlZmluZSBTSURFIDEyOAorCisKKy8qIEJpZ251bTogVGhlIHRyYW5zcG9zZSBmdW5jdGlvbnMgYXJlIHVzZWQgZm9yIHZlcnkgbGFyZ2UgdHJhbnNmb3JtcworICAgaW4gc2l4c3RlcC5jIGFuZCBmb3Vyc3RlcC5jLiAqLworCisKKy8qIERlZmluaXRpb24gb2YgdGhlIG1hdHJpeCB0cmFuc3Bvc2UgKi8KK3ZvaWQKK3N0ZF90cmFucyhtcGRfdWludF90IGRlc3RbXSwgbXBkX3VpbnRfdCBzcmNbXSwgbXBkX3NpemVfdCByb3dzLCBtcGRfc2l6ZV90IGNvbHMpCit7CisgICAgbXBkX3NpemVfdCBpZGVzdCwgaXNyYzsKKyAgICBtcGRfc2l6ZV90IHIsIGM7CisKKyAgICBmb3IgKHIgPSAwOyByIDwgcm93czsgcisrKSB7CisgICAgICAgIGlzcmMgPSByICogY29sczsKKyAgICAgICAgaWRlc3QgPSByOworICAgICAgICBmb3IgKGMgPSAwOyBjIDwgY29sczsgYysrKSB7CisgICAgICAgICAgICBkZXN0W2lkZXN0XSA9IHNyY1tpc3JjXTsKKyAgICAgICAgICAgIGlzcmMgKz0gMTsKKyAgICAgICAgICAgIGlkZXN0ICs9IHJvd3M7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qCisgKiBTd2FwIGhhbGYtcm93cyBvZiAyXm4gKiAoMioyXm4pIG1hdHJpeC4KKyAqIEZPUldBUkRfQ1lDTEU6IGV2ZW4vb2RkIHBlcm11dGF0aW9uIG9mIHRoZSBoYWxmcm93cy4KKyAqIEJBQ0tXQVJEX0NZQ0xFOiByZXZlcnNlIHRoZSBldmVuL29kZCBwZXJtdXRhdGlvbi4KKyAqLworc3RhdGljIGludAorc3dhcF9oYWxmcm93c19wb3cyKG1wZF91aW50X3QgKm1hdHJpeCwgbXBkX3NpemVfdCByb3dzLCBtcGRfc2l6ZV90IGNvbHMsIGludCBkaXIpCit7CisgICAgbXBkX3VpbnRfdCBidWYxW0JVRlNJWkVdOworICAgIG1wZF91aW50X3QgYnVmMltCVUZTSVpFXTsKKyAgICBtcGRfdWludF90ICpyZWFkYnVmLCAqd3JpdGVidWYsICpocDsKKyAgICBtcGRfc2l6ZV90ICpkb25lLCBkYml0czsKKyAgICBtcGRfc2l6ZV90IGIgPSBCVUZTSVpFLCBzdHJpZGU7CisgICAgbXBkX3NpemVfdCBobiwgaG1heDsgLyogaGFsZnJvdyBudW1iZXIgKi8KKyAgICBtcGRfc2l6ZV90IG0sIHI9MDsKKyAgICBtcGRfc2l6ZV90IG9mZnNldDsKKyAgICBtcGRfc2l6ZV90IG5leHQ7CisKKworICAgIGFzc2VydChjb2xzID09IG11bF9zaXplX3QoMiwgcm93cykpOworCisgICAgaWYgKGRpciA9PSBGT1JXQVJEX0NZQ0xFKSB7CisgICAgICAgIHIgPSByb3dzOworICAgIH0KKyAgICBlbHNlIGlmIChkaXIgPT0gQkFDS1dBUkRfQ1lDTEUpIHsKKyAgICAgICAgciA9IDI7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhYm9ydCgpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorCisgICAgbSA9IGNvbHMgLSAxOworICAgIGhtYXggPSByb3dzOyAvKiBjeWNsZXMgc3RhcnQgYXQgb2RkIGhhbGZyb3dzICovCisgICAgZGJpdHMgPSA4ICogc2l6ZW9mICpkb25lOworICAgIGlmICgoZG9uZSA9IG1wZF9jYWxsb2MoaG1heC8oc2l6ZW9mICpkb25lKSArIDEsIHNpemVvZiAqZG9uZSkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgZm9yIChobiA9IDE7IGhuIDw9IGhtYXg7IGhuICs9IDIpIHsKKworICAgICAgICBpZiAoZG9uZVtobi9kYml0c10gJiBtcGRfYml0c1tobiVkYml0c10pIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgcmVhZGJ1ZiA9IGJ1ZjE7IHdyaXRlYnVmID0gYnVmMjsKKworICAgICAgICBmb3IgKG9mZnNldCA9IDA7IG9mZnNldCA8IGNvbHMvMjsgb2Zmc2V0ICs9IGIpIHsKKworICAgICAgICAgICAgc3RyaWRlID0gKG9mZnNldCArIGIgPCBjb2xzLzIpID8gYiA6IGNvbHMvMi1vZmZzZXQ7CisKKyAgICAgICAgICAgIGhwID0gbWF0cml4ICsgaG4qY29scy8yOworICAgICAgICAgICAgbWVtY3B5KHJlYWRidWYsIGhwK29mZnNldCwgc3RyaWRlKihzaXplb2YgKnJlYWRidWYpKTsKKyAgICAgICAgICAgIHBvaW50ZXJzd2FwKCZyZWFkYnVmLCAmd3JpdGVidWYpOworCisgICAgICAgICAgICBuZXh0ID0gbXVsbW9kX3NpemVfdChobiwgciwgbSk7CisgICAgICAgICAgICBocCA9IG1hdHJpeCArIG5leHQqY29scy8yOworCisgICAgICAgICAgICB3aGlsZSAobmV4dCAhPSBobikgeworCisgICAgICAgICAgICAgICAgbWVtY3B5KHJlYWRidWYsIGhwK29mZnNldCwgc3RyaWRlKihzaXplb2YgKnJlYWRidWYpKTsKKyAgICAgICAgICAgICAgICBtZW1jcHkoaHArb2Zmc2V0LCB3cml0ZWJ1Ziwgc3RyaWRlKihzaXplb2YgKndyaXRlYnVmKSk7CisgICAgICAgICAgICAgICAgcG9pbnRlcnN3YXAoJnJlYWRidWYsICZ3cml0ZWJ1Zik7CisKKyAgICAgICAgICAgICAgICBkb25lW25leHQvZGJpdHNdIHw9IG1wZF9iaXRzW25leHQlZGJpdHNdOworCisgICAgICAgICAgICAgICAgbmV4dCA9IG11bG1vZF9zaXplX3QobmV4dCwgciwgbSk7CisgICAgICAgICAgICAgICAgICAgIGhwID0gbWF0cml4ICsgbmV4dCpjb2xzLzI7CisKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbWVtY3B5KGhwK29mZnNldCwgd3JpdGVidWYsIHN0cmlkZSooc2l6ZW9mICp3cml0ZWJ1ZikpOworCisgICAgICAgICAgICBkb25lW2huL2RiaXRzXSB8PSBtcGRfYml0c1tobiVkYml0c107CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtcGRfZnJlZShkb25lKTsKKyAgICByZXR1cm4gMTsKK30KKworLyogSW4tcGxhY2UgdHJhbnNwb3NlIG9mIGEgc3F1YXJlIG1hdHJpeCAqLworc3RhdGljIGlubGluZSB2b2lkCitzcXVhcmV0cmFucyhtcGRfdWludF90ICpidWYsIG1wZF9zaXplX3QgY29scykKK3sKKyAgICBtcGRfdWludF90IHRtcDsKKyAgICBtcGRfc2l6ZV90IGlkZXN0LCBpc3JjOworICAgIG1wZF9zaXplX3QgciwgYzsKKworICAgIGZvciAociA9IDA7IHIgPCBjb2xzOyByKyspIHsKKyAgICAgICAgYyA9IHIrMTsKKyAgICAgICAgaXNyYyA9IHIqY29scyArIGM7CisgICAgICAgIGlkZXN0ID0gYypjb2xzICsgcjsKKyAgICAgICAgZm9yIChjID0gcisxOyBjIDwgY29sczsgYysrKSB7CisgICAgICAgICAgICB0bXAgPSBidWZbaXNyY107CisgICAgICAgICAgICBidWZbaXNyY10gPSBidWZbaWRlc3RdOworICAgICAgICAgICAgYnVmW2lkZXN0XSA9IHRtcDsKKyAgICAgICAgICAgIGlzcmMgKz0gMTsKKyAgICAgICAgICAgIGlkZXN0ICs9IGNvbHM7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qCisgKiBUcmFuc3Bvc2UgMl5uICogMl5uIG1hdHJpeC4gRm9yIGNhY2hlIGVmZmljaWVuY3ksIHRoZSBtYXRyaXggaXMgc3BsaXQgaW50bworICogc3F1YXJlIGJsb2NrcyB3aXRoIHNpZGUgbGVuZ3RoICdTSURFJy4gRmlyc3QsIHRoZSBibG9ja3MgYXJlIHRyYW5zcG9zZWQsCisgKiB0aGVuIGEgc3F1YXJlIHRyYW5wb3NpdGlvbiBpcyBkb25lIG9uIGVhY2ggaW5kaXZpZHVhbCBibG9jay4KKyAqLworc3RhdGljIHZvaWQKK3NxdWFyZXRyYW5zX3BvdzIobXBkX3VpbnRfdCAqbWF0cml4LCBtcGRfc2l6ZV90IHNpemUpCit7CisgICAgbXBkX3VpbnRfdCBidWYxW1NJREUqU0lERV07CisgICAgbXBkX3VpbnRfdCBidWYyW1NJREUqU0lERV07CisgICAgbXBkX3VpbnRfdCAqdG8sICpmcm9tOworICAgIG1wZF9zaXplX3QgYiA9IHNpemU7CisgICAgbXBkX3NpemVfdCByLCBjOworICAgIG1wZF9zaXplX3QgaTsKKworICAgIHdoaWxlIChiID4gU0lERSkgYiA+Pj0gMTsKKworICAgIGZvciAociA9IDA7IHIgPCBzaXplOyByICs9IGIpIHsKKworICAgICAgICBmb3IgKGMgPSByOyBjIDwgc2l6ZTsgYyArPSBiKSB7CisKKyAgICAgICAgICAgIGZyb20gPSBtYXRyaXggKyByKnNpemUgKyBjOworICAgICAgICAgICAgdG8gPSBidWYxOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGI7IGkrKykgeworICAgICAgICAgICAgICAgIG1lbWNweSh0bywgZnJvbSwgYiooc2l6ZW9mICp0bykpOworICAgICAgICAgICAgICAgIGZyb20gKz0gc2l6ZTsKKyAgICAgICAgICAgICAgICB0byArPSBiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3F1YXJldHJhbnMoYnVmMSwgYik7CisKKyAgICAgICAgICAgIGlmIChyID09IGMpIHsKKyAgICAgICAgICAgICAgICB0byA9IG1hdHJpeCArIHIqc2l6ZSArIGM7CisgICAgICAgICAgICAgICAgZnJvbSA9IGJ1ZjE7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGI7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBtZW1jcHkodG8sIGZyb20sIGIqKHNpemVvZiAqdG8pKTsKKyAgICAgICAgICAgICAgICAgICAgZnJvbSArPSBiOworICAgICAgICAgICAgICAgICAgICB0byArPSBzaXplOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGZyb20gPSBtYXRyaXggKyBjKnNpemUgKyByOworICAgICAgICAgICAgICAgIHRvID0gYnVmMjsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYjsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIG1lbWNweSh0bywgZnJvbSwgYiooc2l6ZW9mICp0bykpOworICAgICAgICAgICAgICAgICAgICBmcm9tICs9IHNpemU7CisgICAgICAgICAgICAgICAgICAgIHRvICs9IGI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNxdWFyZXRyYW5zKGJ1ZjIsIGIpOworCisgICAgICAgICAgICAgICAgdG8gPSBtYXRyaXggKyBjKnNpemUgKyByOworICAgICAgICAgICAgICAgIGZyb20gPSBidWYxOworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBiOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHRvLCBmcm9tLCBiKihzaXplb2YgKnRvKSk7CisgICAgICAgICAgICAgICAgICAgIGZyb20gKz0gYjsKKyAgICAgICAgICAgICAgICAgICAgdG8gKz0gc2l6ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0byA9IG1hdHJpeCArIHIqc2l6ZSArIGM7CisgICAgICAgICAgICAgICAgZnJvbSA9IGJ1ZjI7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGI7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBtZW1jcHkodG8sIGZyb20sIGIqKHNpemVvZiAqdG8pKTsKKyAgICAgICAgICAgICAgICAgICAgZnJvbSArPSBiOworICAgICAgICAgICAgICAgICAgICB0byArPSBzaXplOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworfQorCisvKgorICogSW4tcGxhY2UgdHJhbnNwb3NpdGlvbiBvZiBhIDJebiB4IDJebiBvciBhIDJebiB4ICgyKjJebikKKyAqIG9yIGEgKDIqMl5uKSB4IDJebiBtYXRyaXguCisgKi8KK2ludAordHJhbnNwb3NlX3BvdzIobXBkX3VpbnRfdCAqbWF0cml4LCBtcGRfc2l6ZV90IHJvd3MsIG1wZF9zaXplX3QgY29scykKK3sKKyAgICBtcGRfc2l6ZV90IHNpemUgPSBtdWxfc2l6ZV90KHJvd3MsIGNvbHMpOworCisgICAgYXNzZXJ0KGlzcG93ZXIyKHJvd3MpKTsKKyAgICBhc3NlcnQoaXNwb3dlcjIoY29scykpOworCisgICAgaWYgKGNvbHMgPT0gcm93cykgeworICAgICAgICBzcXVhcmV0cmFuc19wb3cyKG1hdHJpeCwgcm93cyk7CisgICAgfQorICAgIGVsc2UgaWYgKGNvbHMgPT0gbXVsX3NpemVfdCgyLCByb3dzKSkgeworICAgICAgICBpZiAoIXN3YXBfaGFsZnJvd3NfcG93MihtYXRyaXgsIHJvd3MsIGNvbHMsIEZPUldBUkRfQ1lDTEUpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBzcXVhcmV0cmFuc19wb3cyKG1hdHJpeCwgcm93cyk7CisgICAgICAgIHNxdWFyZXRyYW5zX3BvdzIobWF0cml4KyhzaXplLzIpLCByb3dzKTsKKyAgICB9CisgICAgZWxzZSBpZiAocm93cyA9PSBtdWxfc2l6ZV90KDIsIGNvbHMpKSB7CisgICAgICAgIHNxdWFyZXRyYW5zX3BvdzIobWF0cml4LCBjb2xzKTsKKyAgICAgICAgc3F1YXJldHJhbnNfcG93MihtYXRyaXgrKHNpemUvMiksIGNvbHMpOworICAgICAgICBpZiAoIXN3YXBfaGFsZnJvd3NfcG93MihtYXRyaXgsIGNvbHMsIHJvd3MsIEJBQ0tXQVJEX0NZQ0xFKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFib3J0KCk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3RyYW5zcG9zZS5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy90cmFuc3Bvc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTM0OWVlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy90cmFuc3Bvc2UuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIFRSQU5TUE9TRV9ICisjZGVmaW5lIFRSQU5TUE9TRV9ICisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKworLyogSW50ZXJuYWwgaGVhZGVyIGZpbGU6IGFsbCBzeW1ib2xzIGhhdmUgbG9jYWwgc2NvcGUgaW4gdGhlIERTTyAqLworTVBEX1BSQUdNQShNUERfSElERV9TWU1CT0xTX1NUQVJUKQorCisKK2VudW0ge0ZPUldBUkRfQ1lDTEUsIEJBQ0tXQVJEX0NZQ0xFfTsKKworCit2b2lkIHN0ZF90cmFucyhtcGRfdWludF90IGRlc3RbXSwgbXBkX3VpbnRfdCBzcmNbXSwgbXBkX3NpemVfdCByb3dzLCBtcGRfc2l6ZV90IGNvbHMpOworaW50IHRyYW5zcG9zZV9wb3cyKG1wZF91aW50X3QgKm1hdHJpeCwgbXBkX3NpemVfdCByb3dzLCBtcGRfc2l6ZV90IGNvbHMpOwordm9pZCB0cmFuc3Bvc2VfM3hwb3cyKG1wZF91aW50X3QgKm1hdHJpeCwgbXBkX3NpemVfdCByb3dzLCBtcGRfc2l6ZV90IGNvbHMpOworCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBwb2ludGVyc3dhcChtcGRfdWludF90ICoqYSwgbXBkX3VpbnRfdCAqKmIpCit7CisgICAgbXBkX3VpbnRfdCAqdG1wOworCisgICAgdG1wID0gKmI7CisgICAgKmIgPSAqYTsKKyAgICAqYSA9IHRtcDsKK30KKworCitNUERfUFJBR01BKE1QRF9ISURFX1NZTUJPTFNfRU5EKSAvKiByZXN0b3JlIHByZXZpb3VzIHNjb3BlIHJ1bGVzICovCisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3R5cGVhcml0aC5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy90eXBlYXJpdGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTQ4MTJjCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy90eXBlYXJpdGguaApAQCAtMCwwICsxLDY2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBUWVBFQVJJVEhfSAorI2RlZmluZSBUWVBFQVJJVEhfSAorCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgTG93IGxldmVsIG5hdGl2ZSBhcml0aG1ldGljIG9uIGJhc2ljIHR5cGVzICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoqICAgICAgICAgICBEb3VibGUgd2lkdGggbXVsdGlwbGljYXRpb24gYW5kIGRpdmlzaW9uCisgKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2lmIGRlZmluZWQoQ09ORklHXzY0KQorI2lmIGRlZmluZWQoQU5TSSkKKyNpZiBkZWZpbmVkKEhBVkVfVUlOVDEyOF9UKQorc3RhdGljIGlubGluZSB2b2lkCitfbXBkX211bF93b3JkcyhtcGRfdWludF90ICpoaSwgbXBkX3VpbnRfdCAqbG8sIG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiKQoreworICAgIF9fdWludDEyOF90IGhsOworCisgICAgaGwgPSAoX191aW50MTI4X3QpYSAqIGI7CisKKyAgICAqaGkgPSBobCA+PiA2NDsKKyAgICAqbG8gPSAobXBkX3VpbnRfdClobDsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2Rpdl93b3JkcyhtcGRfdWludF90ICpxLCBtcGRfdWludF90ICpyLCBtcGRfdWludF90IGhpLCBtcGRfdWludF90IGxvLAorICAgICAgICAgICAgICAgbXBkX3VpbnRfdCBkKQoreworICAgIF9fdWludDEyOF90IGhsOworCisgICAgaGwgPSAoKF9fdWludDEyOF90KWhpPDw2NCkgKyBsbzsKKyAgICAqcSA9IChtcGRfdWludF90KShobCAvIGQpOyAvKiBxdW90aWVudCBpcyBrbm93biB0byBmaXQgKi8KKyAgICAqciA9IChtcGRfdWludF90KShobCAtIChfX3VpbnQxMjhfdCkoKnEpICogZCk7Cit9CisjZWxzZQorc3RhdGljIGlubGluZSB2b2lkCitfbXBkX211bF93b3JkcyhtcGRfdWludF90ICpoaSwgbXBkX3VpbnRfdCAqbG8sIG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiKQoreworICAgIHVpbnQzMl90IHdbNF0sIGNhcnJ5OworICAgIHVpbnQzMl90IGFoLCBhbCwgYmgsIGJsOworICAgIHVpbnQ2NF90IGhsOworCisgICAgYWggPSAodWludDMyX3QpKGE+PjMyKTsgYWwgPSAodWludDMyX3QpYTsKKyAgICBiaCA9ICh1aW50MzJfdCkoYj4+MzIpOyBibCA9ICh1aW50MzJfdCliOworCisgICAgaGwgPSAodWludDY0X3QpYWwgKiBibDsKKyAgICB3WzBdID0gKHVpbnQzMl90KWhsOworICAgIGNhcnJ5ID0gKHVpbnQzMl90KShobD4+MzIpOworCisgICAgaGwgPSAodWludDY0X3QpYWggKiBibCArIGNhcnJ5OworICAgIHdbMV0gPSAodWludDMyX3QpaGw7CisgICAgd1syXSA9ICh1aW50MzJfdCkoaGw+PjMyKTsKKworICAgIGhsID0gKHVpbnQ2NF90KWFsICogYmggKyB3WzFdOworICAgIHdbMV0gPSAodWludDMyX3QpaGw7CisgICAgY2FycnkgPSAodWludDMyX3QpKGhsPj4zMik7CisKKyAgICBobCA9ICgodWludDY0X3QpYWggKiBiaCArIHdbMl0pICsgY2Fycnk7CisgICAgd1syXSA9ICh1aW50MzJfdClobDsKKyAgICB3WzNdID0gKHVpbnQzMl90KShobD4+MzIpOworCisgICAgKmhpID0gKCh1aW50NjRfdCl3WzNdPDwzMikgKyB3WzJdOworICAgICpsbyA9ICgodWludDY0X3Qpd1sxXTw8MzIpICsgd1swXTsKK30KKworLyoKKyAqIEJ5IEhlbnJ5IFMuIFdhcnJlbjogaHR0cDovL3d3dy5oYWNrZXJzZGVsaWdodC5vcmcvSERjb2RlL2Rpdmx1LmMudHh0CisgKiBodHRwOi8vd3d3LmhhY2tlcnNkZWxpZ2h0Lm9yZy9wZXJtaXNzaW9ucy5odG06CisgKiAiWW91IGFyZSBmcmVlIHRvIHVzZSwgY29weSwgYW5kIGRpc3RyaWJ1dGUgYW55IG9mIHRoZSBjb2RlIG9uIHRoaXMgd2ViCisgKiAgc2l0ZSwgd2hldGhlciBtb2RpZmllZCBieSB5b3Ugb3Igbm90LiBZb3UgbmVlZCBub3QgZ2l2ZSBhdHRyaWJ1dGlvbi4iCisgKgorICogU2xpZ2h0bHkgbW9kaWZpZWQsIGNvbW1lbnRzIGFyZSBtaW5lLgorICovCitzdGF0aWMgaW5saW5lIGludAorbmx6KHVpbnQ2NF90IHgpCit7CisgICAgaW50IG47CisKKyAgICBpZiAoeCA9PSAwKSByZXR1cm4oNjQpOworCisgICAgbiA9IDA7CisgICAgaWYgKHggPD0gMHgwMDAwMDAwMEZGRkZGRkZGKSB7biA9IG4gKzMyOyB4ID0geCA8PDMyO30KKyAgICBpZiAoeCA8PSAweDAwMDBGRkZGRkZGRkZGRkYpIHtuID0gbiArMTY7IHggPSB4IDw8MTY7fQorICAgIGlmICh4IDw9IDB4MDBGRkZGRkZGRkZGRkZGRikge24gPSBuICsgODsgeCA9IHggPDwgODt9CisgICAgaWYgKHggPD0gMHgwRkZGRkZGRkZGRkZGRkZGKSB7biA9IG4gKyA0OyB4ID0geCA8PCA0O30KKyAgICBpZiAoeCA8PSAweDNGRkZGRkZGRkZGRkZGRkYpIHtuID0gbiArIDI7IHggPSB4IDw8IDI7fQorICAgIGlmICh4IDw9IDB4N0ZGRkZGRkZGRkZGRkZGRikge24gPSBuICsgMTt9CisKKyAgICByZXR1cm4gbjsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2Rpdl93b3JkcyhtcGRfdWludF90ICpxLCBtcGRfdWludF90ICpyLCBtcGRfdWludF90IHUxLCBtcGRfdWludF90IHUwLAorICAgICAgICAgICAgICAgbXBkX3VpbnRfdCB2KQoreworICAgIGNvbnN0IG1wZF91aW50X3QgYiA9IDQyOTQ5NjcyOTY7CisgICAgbXBkX3VpbnRfdCB1bjEsIHVuMCwKKyAgICAgICAgICAgICAgIHZuMSwgdm4wLAorICAgICAgICAgICAgICAgcTEsIHEwLAorICAgICAgICAgICAgICAgdW4zMiwgdW4yMSwgdW4xMCwKKyAgICAgICAgICAgICAgIHJoYXQsIHQ7CisgICAgaW50IHM7CisKKyAgICBhc3NlcnQodTEgPCB2KTsKKworICAgIHMgPSBubHoodik7CisgICAgdiA9IHYgPDwgczsKKyAgICB2bjEgPSB2ID4+IDMyOworICAgIHZuMCA9IHYgJiAweEZGRkZGRkZGOworCisgICAgdCA9IChzID09IDApID8gMCA6IHUwID4+ICg2NCAtIHMpOworICAgIHVuMzIgPSAodTEgPDwgcykgfCB0OworICAgIHVuMTAgPSB1MCA8PCBzOworCisgICAgdW4xID0gdW4xMCA+PiAzMjsKKyAgICB1bjAgPSB1bjEwICYgMHhGRkZGRkZGRjsKKworICAgIHExID0gdW4zMiAvIHZuMTsKKyAgICByaGF0ID0gdW4zMiAtIHExKnZuMTsKK2FnYWluMToKKyAgICBpZiAocTEgPj0gYiB8fCBxMSp2bjAgPiBiKnJoYXQgKyB1bjEpIHsKKyAgICAgICAgcTEgPSBxMSAtIDE7CisgICAgICAgIHJoYXQgPSByaGF0ICsgdm4xOworICAgICAgICBpZiAocmhhdCA8IGIpIGdvdG8gYWdhaW4xOworICAgIH0KKworICAgIC8qCisgICAgICogIEJlZm9yZSBhZ2FpbjEgd2UgaGFkOgorICAgICAqICAgICAgKDEpIHExKnZuMSAgICsgcmhhdCAgICAgICAgID0gdW4zMgorICAgICAqICAgICAgKDIpIHExKnZuMSpiICsgcmhhdCpiICsgdW4xID0gdW4zMipiICsgdW4xCisgICAgICoKKyAgICAgKiAgVGhlIHN0YXRlbWVudHMgaW5zaWRlIHRoZSBpZi1jbGF1c2UgZG8gbm90IGNoYW5nZSB0aGUgdmFsdWUKKyAgICAgKiAgb2YgdGhlIGxlZnQtaGFuZCBzaWRlIG9mICgyKSwgYW5kIHRoZSBsb29wIGlzIG9ubHkgZXhpdGVkCisgICAgICogIGlmIHExKnZuMCA8PSByaGF0KmIgKyB1bjEsIHNvOgorICAgICAqCisgICAgICogICAgICAoMykgcTEqdm4xKmIgKyBxMSp2bjAgPD0gdW4zMipiICsgdW4xCisgICAgICogICAgICAoNCkgICAgICAgICAgICAgIHExKnYgPD0gdW4zMipiICsgdW4xCisgICAgICogICAgICAoNSkgICAgICAgICAgICAgICAgIDAgPD0gdW4zMipiICsgdW4xIC0gcTEqdgorICAgICAqCisgICAgICogIEJ5ICg1KSB3ZSBhcmUgY2VydGFpbiB0aGF0IHRoZSBwb3NzaWJsZSBhZGQtYmFjayBzdGVwIGZyb20KKyAgICAgKiAgS251dGgncyBhbGdvcml0aG0gRCBpcyBuZXZlciByZXF1aXJlZC4KKyAgICAgKgorICAgICAqICBTaW5jZSB0aGUgZmluYWwgcXVvdGllbnQgaXMgbGVzcyB0aGFuIDIqKjY0LCB0aGUgZm9sbG93aW5nCisgICAgICogIG11c3QgYmUgdHJ1ZToKKyAgICAgKgorICAgICAqICAgICAgKDYpIHVuMzIqYiArIHVuMSAtIHExKnYgPD0gVUlOVDY0X01BWAorICAgICAqCisgICAgICogIFRoaXMgbWVhbnMgdGhhdCBpbiB0aGUgZm9sbG93aW5nIGxpbmUsIHRoZSBoaWdoIHdvcmRzCisgICAgICogIG9mIHVuMzIqYiBhbmQgcTEqdiBjYW4gYmUgZGlzY2FyZGVkIHdpdGhvdXQgYW55IGVmZmVjdAorICAgICAqICBvbiB0aGUgcmVzdWx0LgorICAgICAqLworICAgIHVuMjEgPSB1bjMyKmIgKyB1bjEgLSBxMSp2OworCisgICAgcTAgPSB1bjIxIC8gdm4xOworICAgIHJoYXQgPSB1bjIxIC0gcTAqdm4xOworYWdhaW4yOgorICAgIGlmIChxMCA+PSBiIHx8IHEwKnZuMCA+IGIqcmhhdCArIHVuMCkgeworICAgICAgICBxMCA9IHEwIC0gMTsKKyAgICAgICAgcmhhdCA9IHJoYXQgKyB2bjE7CisgICAgICAgIGlmIChyaGF0IDwgYikgZ290byBhZ2FpbjI7CisgICAgfQorCisgICAgKnEgPSBxMSpiICsgcTA7CisgICAgKnIgPSAodW4yMSpiICsgdW4wIC0gcTAqdikgPj4gczsKK30KKyNlbmRpZgorCisvKiBFTkQgQU5TSSAqLworI2VsaWYgZGVmaW5lZChBU00pCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfbXVsX3dvcmRzKG1wZF91aW50X3QgKmhpLCBtcGRfdWludF90ICpsbywgbXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIpCit7CisgICAgbXBkX3VpbnRfdCBoLCBsOworCisgICAgX19hc21fXyAoICJtdWxxICUzXG5cdCIKKyAgICAgICAgICAgICAgOiAiPWQiIChoKSwgIj1hIiAobCkKKyAgICAgICAgICAgICAgOiAiJWEiIChhKSwgInJtIiAoYikKKyAgICAgICAgICAgICAgOiAiY2MiCisgICAgKTsKKworICAgICpoaSA9IGg7CisgICAgKmxvID0gbDsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2Rpdl93b3JkcyhtcGRfdWludF90ICpxLCBtcGRfdWludF90ICpyLCBtcGRfdWludF90IGhpLCBtcGRfdWludF90IGxvLAorICAgICAgICAgICAgICAgbXBkX3VpbnRfdCBkKQoreworICAgIG1wZF91aW50X3QgcXEsIHJyOworCisgICAgX19hc21fXyAoICJkaXZxICU0XG5cdCIKKyAgICAgICAgICAgICAgOiAiPWEiIChxcSksICI9ZCIgKHJyKQorICAgICAgICAgICAgICA6ICJhIiAobG8pLCAiZCIgKGhpKSwgInJtIiAoZCkKKyAgICAgICAgICAgICAgOiAiY2MiCisgICAgKTsKKworICAgICpxID0gcXE7CisgICAgKnIgPSBycjsKK30KKy8qIEVORCBHQ0MgQVNNICovCisjZWxpZiBkZWZpbmVkKE1BU00pCisjaW5jbHVkZSA8aW50cmluLmg+CisjcHJhZ21hIGludHJpbnNpYyhfdW11bDEyOCkKKworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX211bF93b3JkcyhtcGRfdWludF90ICpoaSwgbXBkX3VpbnRfdCAqbG8sIG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiKQoreworICAgICpsbyA9IF91bXVsMTI4KGEsIGIsIGhpKTsKK30KKwordm9pZCBfbXBkX2Rpdl93b3JkcyhtcGRfdWludF90ICpxLCBtcGRfdWludF90ICpyLCBtcGRfdWludF90IGhpLCBtcGRfdWludF90IGxvLAorICAgICAgICAgICAgICAgICAgICBtcGRfdWludF90IGQpOworCisvKiBFTkQgTUFTTSAoX01TQ19WRVIpICovCisjZWxzZQorICAjZXJyb3IgIm5lZWQgcGxhdGZvcm0gc3BlY2lmaWMgMTI4IGJpdCBtdWx0aXBsaWNhdGlvbiBhbmQgZGl2aXNpb24iCisjZW5kaWYKKworI2RlZmluZSBESVZNT0QocSwgciwgdiwgZCkgKnEgPSB2IC8gZDsgKnIgPSB2IC0gKnEgKiBkCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfZGl2bW9kX3BvdzEwKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgdiwgbXBkX3VpbnRfdCBleHApCit7CisgICAgYXNzZXJ0KGV4cCA8PSAxOSk7CisKKyAgICBpZiAoZXhwIDw9IDkpIHsKKyAgICAgICAgaWYgKGV4cCA8PSA0KSB7CisgICAgICAgICAgICBzd2l0Y2ggKGV4cCkgeworICAgICAgICAgICAgY2FzZSAwOiAqcSA9IHY7ICpyID0gMDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE6IERJVk1PRChxLCByLCB2LCAxMFVMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6IERJVk1PRChxLCByLCB2LCAxMDBVTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAzOiBESVZNT0QocSwgciwgdiwgMTAwMFVMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDQ6IERJVk1PRChxLCByLCB2LCAxMDAwMFVMKTsgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKGV4cCkgeworICAgICAgICAgICAgY2FzZSA1OiBESVZNT0QocSwgciwgdiwgMTAwMDAwVUwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNjogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDBVTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA3OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDBVTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA4OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwVUwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgOTogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwMDBVTCk7IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoZXhwIDw9IDE0KSB7CisgICAgICAgICAgICBzd2l0Y2ggKGV4cCkgeworICAgICAgICAgICAgY2FzZSAxMDogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwMDAwVUxMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDExOiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMDAwVUxMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEyOiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMDAwMFVMTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxMzogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwMDAwMDAwVUxMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE0OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMDAwMDAwVUxMKTsgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKGV4cCkgeworICAgICAgICAgICAgY2FzZSAxNTogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwMDAwMDAwMDBVTEwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTY6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDAwMDAwMDAwMFVMTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNzogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwMDAwMDAwMDAwMFVMTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxODogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwMDAwMDAwMDAwMDBVTEwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTk6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDAwMDAwMDAwMDAwMFVMTCk7IGJyZWFrOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qIEVORCBDT05GSUdfNjQgKi8KKyNlbGlmIGRlZmluZWQoQ09ORklHXzMyKQorI2lmIGRlZmluZWQoQU5TSSkKKyNpZiAhZGVmaW5lZChMRUdBQ1lfQ09NUElMRVIpCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfbXVsX3dvcmRzKG1wZF91aW50X3QgKmhpLCBtcGRfdWludF90ICpsbywgbXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIpCit7CisgICAgbXBkX3V1aW50X3QgaGw7CisKKyAgICBobCA9IChtcGRfdXVpbnRfdClhICogYjsKKworICAgICpoaSA9IGhsID4+IDMyOworICAgICpsbyA9IChtcGRfdWludF90KWhsOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfZGl2X3dvcmRzKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgaGksIG1wZF91aW50X3QgbG8sCisgICAgICAgICAgICAgICBtcGRfdWludF90IGQpCit7CisgICAgbXBkX3V1aW50X3QgaGw7CisKKyAgICBobCA9ICgobXBkX3V1aW50X3QpaGk8PDMyKSArIGxvOworICAgICpxID0gKG1wZF91aW50X3QpKGhsIC8gZCk7IC8qIHF1b3RpZW50IGlzIGtub3duIHRvIGZpdCAqLworICAgICpyID0gKG1wZF91aW50X3QpKGhsIC0gKG1wZF91dWludF90KSgqcSkgKiBkKTsKK30KKy8qIEVORCBBTlNJICsgdWludDY0X3QgKi8KKyNlbHNlCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfbXVsX3dvcmRzKG1wZF91aW50X3QgKmhpLCBtcGRfdWludF90ICpsbywgbXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIpCit7CisgICAgdWludDE2X3Qgd1s0XSwgY2Fycnk7CisgICAgdWludDE2X3QgYWgsIGFsLCBiaCwgYmw7CisgICAgdWludDMyX3QgaGw7CisKKyAgICBhaCA9ICh1aW50MTZfdCkoYT4+MTYpOyBhbCA9ICh1aW50MTZfdClhOworICAgIGJoID0gKHVpbnQxNl90KShiPj4xNik7IGJsID0gKHVpbnQxNl90KWI7CisKKyAgICBobCA9ICh1aW50MzJfdClhbCAqIGJsOworICAgIHdbMF0gPSAodWludDE2X3QpaGw7CisgICAgY2FycnkgPSAodWludDE2X3QpKGhsPj4xNik7CisKKyAgICBobCA9ICh1aW50MzJfdClhaCAqIGJsICsgY2Fycnk7CisgICAgd1sxXSA9ICh1aW50MTZfdClobDsKKyAgICB3WzJdID0gKHVpbnQxNl90KShobD4+MTYpOworCisgICAgaGwgPSAodWludDMyX3QpYWwgKiBiaCArIHdbMV07CisgICAgd1sxXSA9ICh1aW50MTZfdClobDsKKyAgICBjYXJyeSA9ICh1aW50MTZfdCkoaGw+PjE2KTsKKworICAgIGhsID0gKCh1aW50MzJfdClhaCAqIGJoICsgd1syXSkgKyBjYXJyeTsKKyAgICB3WzJdID0gKHVpbnQxNl90KWhsOworICAgIHdbM10gPSAodWludDE2X3QpKGhsPj4xNik7CisKKyAgICAqaGkgPSAoKHVpbnQzMl90KXdbM108PDE2KSArIHdbMl07CisgICAgKmxvID0gKCh1aW50MzJfdCl3WzFdPDwxNikgKyB3WzBdOworfQorCisvKgorICogQnkgSGVucnkgUy4gV2FycmVuOiBodHRwOi8vd3d3LmhhY2tlcnNkZWxpZ2h0Lm9yZy9IRGNvZGUvZGl2bHUuYy50eHQKKyAqIGh0dHA6Ly93d3cuaGFja2Vyc2RlbGlnaHQub3JnL3Blcm1pc3Npb25zLmh0bToKKyAqICJZb3UgYXJlIGZyZWUgdG8gdXNlLCBjb3B5LCBhbmQgZGlzdHJpYnV0ZSBhbnkgb2YgdGhlIGNvZGUgb24gdGhpcyB3ZWIKKyAqICBzaXRlLCB3aGV0aGVyIG1vZGlmaWVkIGJ5IHlvdSBvciBub3QuIFlvdSBuZWVkIG5vdCBnaXZlIGF0dHJpYnV0aW9uLiIKKyAqCisgKiBTbGlnaHRseSBtb2RpZmllZCwgY29tbWVudHMgYXJlIG1pbmUuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50CitubHoodWludDMyX3QgeCkKK3sKKyAgICBpbnQgbjsKKworICAgIGlmICh4ID09IDApIHJldHVybigzMik7CisKKyAgICBuID0gMDsKKyAgICBpZiAoeCA8PSAweDAwMDBGRkZGKSB7biA9IG4gKzE2OyB4ID0geCA8PDE2O30KKyAgICBpZiAoeCA8PSAweDAwRkZGRkZGKSB7biA9IG4gKyA4OyB4ID0geCA8PCA4O30KKyAgICBpZiAoeCA8PSAweDBGRkZGRkZGKSB7biA9IG4gKyA0OyB4ID0geCA8PCA0O30KKyAgICBpZiAoeCA8PSAweDNGRkZGRkZGKSB7biA9IG4gKyAyOyB4ID0geCA8PCAyO30KKyAgICBpZiAoeCA8PSAweDdGRkZGRkZGKSB7biA9IG4gKyAxO30KKworICAgIHJldHVybiBuOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfZGl2X3dvcmRzKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgdTEsIG1wZF91aW50X3QgdTAsCisgICAgICAgICAgICAgICBtcGRfdWludF90IHYpCit7CisgICAgY29uc3QgbXBkX3VpbnRfdCBiID0gNjU1MzY7CisgICAgbXBkX3VpbnRfdCB1bjEsIHVuMCwKKyAgICAgICAgICAgICAgIHZuMSwgdm4wLAorICAgICAgICAgICAgICAgcTEsIHEwLAorICAgICAgICAgICAgICAgdW4zMiwgdW4yMSwgdW4xMCwKKyAgICAgICAgICAgICAgIHJoYXQsIHQ7CisgICAgaW50IHM7CisKKyAgICBhc3NlcnQodTEgPCB2KTsKKworICAgIHMgPSBubHoodik7CisgICAgdiA9IHYgPDwgczsKKyAgICB2bjEgPSB2ID4+IDE2OworICAgIHZuMCA9IHYgJiAweEZGRkY7CisKKyAgICB0ID0gKHMgPT0gMCkgPyAwIDogdTAgPj4gKDMyIC0gcyk7CisgICAgdW4zMiA9ICh1MSA8PCBzKSB8IHQ7CisgICAgdW4xMCA9IHUwIDw8IHM7CisKKyAgICB1bjEgPSB1bjEwID4+IDE2OworICAgIHVuMCA9IHVuMTAgJiAweEZGRkY7CisKKyAgICBxMSA9IHVuMzIgLyB2bjE7CisgICAgcmhhdCA9IHVuMzIgLSBxMSp2bjE7CithZ2FpbjE6CisgICAgaWYgKHExID49IGIgfHwgcTEqdm4wID4gYipyaGF0ICsgdW4xKSB7CisgICAgICAgIHExID0gcTEgLSAxOworICAgICAgICByaGF0ID0gcmhhdCArIHZuMTsKKyAgICAgICAgaWYgKHJoYXQgPCBiKSBnb3RvIGFnYWluMTsKKyAgICB9CisKKyAgICAvKgorICAgICAqICBCZWZvcmUgYWdhaW4xIHdlIGhhZDoKKyAgICAgKiAgICAgICgxKSBxMSp2bjEgICArIHJoYXQgICAgICAgICA9IHVuMzIKKyAgICAgKiAgICAgICgyKSBxMSp2bjEqYiArIHJoYXQqYiArIHVuMSA9IHVuMzIqYiArIHVuMQorICAgICAqCisgICAgICogIFRoZSBzdGF0ZW1lbnRzIGluc2lkZSB0aGUgaWYtY2xhdXNlIGRvIG5vdCBjaGFuZ2UgdGhlIHZhbHVlCisgICAgICogIG9mIHRoZSBsZWZ0LWhhbmQgc2lkZSBvZiAoMiksIGFuZCB0aGUgbG9vcCBpcyBvbmx5IGV4aXRlZAorICAgICAqICBpZiBxMSp2bjAgPD0gcmhhdCpiICsgdW4xLCBzbzoKKyAgICAgKgorICAgICAqICAgICAgKDMpIHExKnZuMSpiICsgcTEqdm4wIDw9IHVuMzIqYiArIHVuMQorICAgICAqICAgICAgKDQpICAgICAgICAgICAgICBxMSp2IDw9IHVuMzIqYiArIHVuMQorICAgICAqICAgICAgKDUpICAgICAgICAgICAgICAgICAwIDw9IHVuMzIqYiArIHVuMSAtIHExKnYKKyAgICAgKgorICAgICAqICBCeSAoNSkgd2UgYXJlIGNlcnRhaW4gdGhhdCB0aGUgcG9zc2libGUgYWRkLWJhY2sgc3RlcCBmcm9tCisgICAgICogIEtudXRoJ3MgYWxnb3JpdGhtIEQgaXMgbmV2ZXIgcmVxdWlyZWQuCisgICAgICoKKyAgICAgKiAgU2luY2UgdGhlIGZpbmFsIHF1b3RpZW50IGlzIGxlc3MgdGhhbiAyKiozMiwgdGhlIGZvbGxvd2luZworICAgICAqICBtdXN0IGJlIHRydWU6CisgICAgICoKKyAgICAgKiAgICAgICg2KSB1bjMyKmIgKyB1bjEgLSBxMSp2IDw9IFVJTlQzMl9NQVgKKyAgICAgKgorICAgICAqICBUaGlzIG1lYW5zIHRoYXQgaW4gdGhlIGZvbGxvd2luZyBsaW5lLCB0aGUgaGlnaCB3b3JkcworICAgICAqICBvZiB1bjMyKmIgYW5kIHExKnYgY2FuIGJlIGRpc2NhcmRlZCB3aXRob3V0IGFueSBlZmZlY3QKKyAgICAgKiAgb24gdGhlIHJlc3VsdC4KKyAgICAgKi8KKyAgICB1bjIxID0gdW4zMipiICsgdW4xIC0gcTEqdjsKKworICAgIHEwID0gdW4yMSAvIHZuMTsKKyAgICByaGF0ID0gdW4yMSAtIHEwKnZuMTsKK2FnYWluMjoKKyAgICBpZiAocTAgPj0gYiB8fCBxMCp2bjAgPiBiKnJoYXQgKyB1bjApIHsKKyAgICAgICAgcTAgPSBxMCAtIDE7CisgICAgICAgIHJoYXQgPSByaGF0ICsgdm4xOworICAgICAgICBpZiAocmhhdCA8IGIpIGdvdG8gYWdhaW4yOworICAgIH0KKworICAgICpxID0gcTEqYiArIHEwOworICAgICpyID0gKHVuMjEqYiArIHVuMCAtIHEwKnYpID4+IHM7Cit9CisjZW5kaWYgLyogRU5EIEFOU0kgKyBMRUdBQ1lfQ09NUElMRVIgKi8KKworLyogRU5EIEFOU0kgKi8KKyNlbGlmIGRlZmluZWQoQVNNKQorc3RhdGljIGlubGluZSB2b2lkCitfbXBkX211bF93b3JkcyhtcGRfdWludF90ICpoaSwgbXBkX3VpbnRfdCAqbG8sIG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiKQoreworICAgIG1wZF91aW50X3QgaCwgbDsKKworICAgIF9fYXNtX18gKCAibXVsbCAlM1xuXHQiCisgICAgICAgICAgICAgIDogIj1kIiAoaCksICI9YSIgKGwpCisgICAgICAgICAgICAgIDogIiVhIiAoYSksICJybSIgKGIpCisgICAgICAgICAgICAgIDogImNjIgorICAgICk7CisKKyAgICAqaGkgPSBoOworICAgICpsbyA9IGw7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZfd29yZHMobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCBoaSwgbXBkX3VpbnRfdCBsbywKKyAgICAgICAgICAgICAgIG1wZF91aW50X3QgZCkKK3sKKyAgICBtcGRfdWludF90IHFxLCBycjsKKworICAgIF9fYXNtX18gKCAiZGl2bCAlNFxuXHQiCisgICAgICAgICAgICAgIDogIj1hIiAocXEpLCAiPWQiIChycikKKyAgICAgICAgICAgICAgOiAiYSIgKGxvKSwgImQiIChoaSksICJybSIgKGQpCisgICAgICAgICAgICAgIDogImNjIgorICAgICk7CisKKyAgICAqcSA9IHFxOworICAgICpyID0gcnI7Cit9CisvKiBFTkQgR0NDIEFTTSAqLworI2VsaWYgZGVmaW5lZChNQVNNKQorc3RhdGljIGlubGluZSB2b2lkIF9fY2RlY2wKK19tcGRfbXVsX3dvcmRzKG1wZF91aW50X3QgKmhpLCBtcGRfdWludF90ICpsbywgbXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIpCit7CisgICAgbXBkX3VpbnRfdCBoLCBsOworCisgICAgX19hc20geworICAgICAgICBtb3YgZWF4LCBhCisgICAgICAgIG11bCBiCisgICAgICAgIG1vdiBoLCBlZHgKKyAgICAgICAgbW92IGwsIGVheAorICAgIH0KKworICAgICpoaSA9IGg7CisgICAgKmxvID0gbDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIF9fY2RlY2wKK19tcGRfZGl2X3dvcmRzKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgaGksIG1wZF91aW50X3QgbG8sCisgICAgICAgICAgICAgICBtcGRfdWludF90IGQpCit7CisgICAgbXBkX3VpbnRfdCBxcSwgcnI7CisKKyAgICBfX2FzbSB7CisgICAgICAgIG1vdiBlYXgsIGxvCisgICAgICAgIG1vdiBlZHgsIGhpCisgICAgICAgIGRpdiBkCisgICAgICAgIG1vdiBxcSwgZWF4CisgICAgICAgIG1vdiByciwgZWR4CisgICAgfQorCisgICAgKnEgPSBxcTsKKyAgICAqciA9IHJyOworfQorLyogRU5EIE1BU00gKF9NU0NfVkVSKSAqLworI2Vsc2UKKyAgI2Vycm9yICJuZWVkIHBsYXRmb3JtIHNwZWNpZmljIDY0IGJpdCBtdWx0aXBsaWNhdGlvbiBhbmQgZGl2aXNpb24iCisjZW5kaWYKKworI2RlZmluZSBESVZNT0QocSwgciwgdiwgZCkgKnEgPSB2IC8gZDsgKnIgPSB2IC0gKnEgKiBkCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfZGl2bW9kX3BvdzEwKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgdiwgbXBkX3VpbnRfdCBleHApCit7CisgICAgYXNzZXJ0KGV4cCA8PSA5KTsKKworICAgIGlmIChleHAgPD0gNCkgeworICAgICAgICBzd2l0Y2ggKGV4cCkgeworICAgICAgICBjYXNlIDA6ICpxID0gdjsgKnIgPSAwOyBicmVhazsKKyAgICAgICAgY2FzZSAxOiBESVZNT0QocSwgciwgdiwgMTBVTCk7IGJyZWFrOworICAgICAgICBjYXNlIDI6IERJVk1PRChxLCByLCB2LCAxMDBVTCk7IGJyZWFrOworICAgICAgICBjYXNlIDM6IERJVk1PRChxLCByLCB2LCAxMDAwVUwpOyBicmVhazsKKyAgICAgICAgY2FzZSA0OiBESVZNT0QocSwgciwgdiwgMTAwMDBVTCk7IGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzd2l0Y2ggKGV4cCkgeworICAgICAgICBjYXNlIDU6IERJVk1PRChxLCByLCB2LCAxMDAwMDBVTCk7IGJyZWFrOworICAgICAgICBjYXNlIDY6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwVUwpOyBicmVhazsKKyAgICAgICAgY2FzZSA3OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDBVTCk7IGJyZWFrOworICAgICAgICBjYXNlIDg6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDBVTCk7IGJyZWFrOworICAgICAgICBjYXNlIDk6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDAwVUwpOyBicmVhazsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICB9CisgICAgfQorfQorLyogRU5EIENPTkZJR18zMiAqLworCisvKiBOTyBDT05GSUcgKi8KKyNlbHNlCisgICNlcnJvciAiZGVmaW5lIENPTkZJR182NCBvciBDT05GSUdfMzIiCisjZW5kaWYgLyogQ09ORklHICovCisKKworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2Rpdl93b3JkKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgdiwgbXBkX3VpbnRfdCBkKQoreworICAgICpxID0gdiAvIGQ7CisgICAgKnIgPSB2IC0gKnEgKiBkOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfaWRpdl93b3JkKG1wZF9zc2l6ZV90ICpxLCBtcGRfc3NpemVfdCAqciwgbXBkX3NzaXplX3QgdiwgbXBkX3NzaXplX3QgZCkKK3sKKyAgICAqcSA9IHYgLyBkOworICAgICpyID0gdiAtICpxICogZDsKK30KKworCisvKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiogICAgICAgICAgICAgIEFyaXRobWV0aWMgd2l0aCBvdmVyZmxvdyBjaGVja2luZworICoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qIFRoZSBmb2xsb3dpbmcgbWFjcm9zIGRvIGNhbGwgZXhpdCgpIGluIGNhc2Ugb2YgYW4gb3ZlcmZsb3cuCisgICBJZiB0aGUgbGlicmFyeSBpcyB1c2VkIGNvcnJlY3RseSAoaS5lLiB3aXRoIHZhbGlkIGNvbnRleHQKKyAgIHBhcmFtZXRlcnMpLCBzdWNoIG92ZXJmbG93cyBjYW5ub3Qgb2NjdXIuIFRoZSBtYWNyb3MgYXJlIHVzZWQKKyAgIGFzIHNhbml0eSBjaGVja3MgaW4gYSBjb3VwbGUgb2Ygc3RyYXRlZ2ljIHBsYWNlcyBhbmQgc2hvdWxkCisgICBiZSB2aWV3ZWQgYXMgYSBoYW5kd3JpdHRlbiB2ZXJzaW9uIG9mIGdjYydzIC1mdHJhcHYgb3B0aW9uLiAqLworCitzdGF0aWMgaW5saW5lIG1wZF9zaXplX3QKK2FkZF9zaXplX3QobXBkX3NpemVfdCBhLCBtcGRfc2l6ZV90IGIpCit7CisgICAgaWYgKGEgPiBNUERfU0laRV9NQVggLSBiKSB7CisgICAgICAgIG1wZF9lcnJfZmF0YWwoImFkZF9zaXplX3QoKTogb3ZlcmZsb3c6IGNoZWNrIHRoZSBjb250ZXh0Iik7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisgICAgcmV0dXJuIGEgKyBiOworfQorCitzdGF0aWMgaW5saW5lIG1wZF9zaXplX3QKK3N1Yl9zaXplX3QobXBkX3NpemVfdCBhLCBtcGRfc2l6ZV90IGIpCit7CisgICAgaWYgKGIgPiBhKSB7CisgICAgICAgIG1wZF9lcnJfZmF0YWwoInN1Yl9zaXplX3QoKTogb3ZlcmZsb3c6IGNoZWNrIHRoZSBjb250ZXh0Iik7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisgICAgcmV0dXJuIGEgLSBiOworfQorCisjaWYgTVBEX1NJWkVfTUFYICE9IE1QRF9VSU5UX01BWAorICAjZXJyb3IgImFkYXB0IG11bF9zaXplX3QoKSBhbmQgbXVsbW9kX3NpemVfdCgpIgorI2VuZGlmCisKK3N0YXRpYyBpbmxpbmUgbXBkX3NpemVfdAorbXVsX3NpemVfdChtcGRfc2l6ZV90IGEsIG1wZF9zaXplX3QgYikKK3sKKyAgICBtcGRfdWludF90IGhpLCBsbzsKKworICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCAobXBkX3VpbnRfdClhLCAobXBkX3VpbnRfdCliKTsKKyAgICBpZiAoaGkpIHsKKyAgICAgICAgbXBkX2Vycl9mYXRhbCgibXVsX3NpemVfdCgpOiBvdmVyZmxvdzogY2hlY2sgdGhlIGNvbnRleHQiKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKyAgICByZXR1cm4gbG87Cit9CisKK3N0YXRpYyBpbmxpbmUgbXBkX3NpemVfdAorYWRkX3NpemVfdF9vdmVyZmxvdyhtcGRfc2l6ZV90IGEsIG1wZF9zaXplX3QgYiwgbXBkX3NpemVfdCAqb3ZlcmZsb3cpCit7CisgICAgbXBkX3NpemVfdCByZXQ7CisKKyAgICAqb3ZlcmZsb3cgPSAwOworICAgIHJldCA9IGEgKyBiOworICAgIGlmIChyZXQgPCBhKSAqb3ZlcmZsb3cgPSAxOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgbXBkX3NpemVfdAorbXVsX3NpemVfdF9vdmVyZmxvdyhtcGRfc2l6ZV90IGEsIG1wZF9zaXplX3QgYiwgbXBkX3NpemVfdCAqb3ZlcmZsb3cpCit7CisgICAgbXBkX3VpbnRfdCBsbzsKKworICAgIF9tcGRfbXVsX3dvcmRzKChtcGRfdWludF90ICopb3ZlcmZsb3csICZsbywgKG1wZF91aW50X3QpYSwKKyAgICAgICAgICAgICAgICAgICAobXBkX3VpbnRfdCliKTsKKyAgICByZXR1cm4gbG87Cit9CisKK3N0YXRpYyBpbmxpbmUgbXBkX3NzaXplX3QKK21vZF9tcGRfc3NpemVfdChtcGRfc3NpemVfdCBhLCBtcGRfc3NpemVfdCBtKQoreworICAgIG1wZF9zc2l6ZV90IHIgPSBhICUgbTsKKyAgICByZXR1cm4gKHIgPCAwKSA/IHIgKyBtIDogcjsKK30KKworc3RhdGljIGlubGluZSBtcGRfc2l6ZV90CittdWxtb2Rfc2l6ZV90KG1wZF9zaXplX3QgYSwgbXBkX3NpemVfdCBiLCBtcGRfc2l6ZV90IG0pCit7CisgICAgbXBkX3VpbnRfdCBoaSwgbG87CisgICAgbXBkX3VpbnRfdCBxLCByOworCisgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIChtcGRfdWludF90KWEsIChtcGRfdWludF90KWIpOworICAgIF9tcGRfZGl2X3dvcmRzKCZxLCAmciwgaGksIGxvLCAobXBkX3VpbnRfdCltKTsKKworICAgIHJldHVybiByOworfQorCisKKyNlbmRpZiAvKiBUWVBFQVJJVEhfSCAqLworCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy91bW9kYXJpdGguaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdW1vZGFyaXRoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM2NzYxYgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdW1vZGFyaXRoLmgKQEAgLTAsMCArMSw2NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgVU1PREFSSVRIX0gKKyNkZWZpbmUgVU1PREFSSVRIX0gKKworCisjaW5jbHVkZSAiY29uc3RhbnRzLmgiCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSAidHlwZWFyaXRoLmgiCisKKworLyogQmlnbnVtOiBMb3cgbGV2ZWwgcm91dGluZXMgZm9yIHVuc2lnbmVkIG1vZHVsYXIgYXJpdGhtZXRpYy4gVGhlc2UgYXJlCisgICB1c2VkIGluIHRoZSBmYXN0IGNvbnZvbHV0aW9uIGZ1bmN0aW9ucyBmb3IgdmVyeSBsYXJnZSBjb2VmZmljaWVudHMuICovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICBBTlNJIG1vZHVsYXIgYXJpdGhtZXRpYyAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKy8qCisgKiBSZXN0cmljdGlvbnM6IGEgPCBtIGFuZCBiIDwgbQorICogQUNMMiBwcm9vZjogdW1vZGFyaXRoLmxpc3A6IGFkZG1vZC1jb3JyZWN0CisgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAorYWRkbW9kKG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiLCBtcGRfdWludF90IG0pCit7CisgICAgbXBkX3VpbnRfdCBzOworCisgICAgcyA9IGEgKyBiOworICAgIHMgPSAocyA8IGEpID8gcyAtIG0gOiBzOworICAgIHMgPSAocyA+PSBtKSA/IHMgLSBtIDogczsKKworICAgIHJldHVybiBzOworfQorCisvKgorICogUmVzdHJpY3Rpb25zOiBhIDwgbSBhbmQgYiA8IG0KKyAqIEFDTDIgcHJvb2Y6IHVtb2Rhcml0aC5saXNwOiBzdWJtb2QtMi1jb3JyZWN0CisgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAorc3VibW9kKG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiLCBtcGRfdWludF90IG0pCit7CisgICAgbXBkX3VpbnRfdCBkOworCisgICAgZCA9IGEgLSBiOworICAgIGQgPSAoYSA8IGIpID8gZCArIG0gOiBkOworCisgICAgcmV0dXJuIGQ7Cit9CisKKy8qCisgKiBSZXN0cmljdGlvbnM6IGEgPCAybSBhbmQgYiA8IDJtCisgKiBBQ0wyIHByb29mOiB1bW9kYXJpdGgubGlzcDogc2VjdGlvbiBleHQtc3VibW9kCisgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAorZXh0X3N1Ym1vZChtcGRfdWludF90IGEsIG1wZF91aW50X3QgYiwgbXBkX3VpbnRfdCBtKQoreworICAgIG1wZF91aW50X3QgZDsKKworICAgIGEgPSAoYSA+PSBtKSA/IGEgLSBtIDogYTsKKyAgICBiID0gKGIgPj0gbSkgPyBiIC0gbSA6IGI7CisKKyAgICBkID0gYSAtIGI7CisgICAgZCA9IChhIDwgYikgPyBkICsgbSA6IGQ7CisKKyAgICByZXR1cm4gZDsKK30KKworLyoKKyAqIFJlZHVjZSBkb3VibGUgd29yZCBtb2R1bG8gbS4KKyAqIFJlc3RyaWN0aW9uczogbSAhPSAwCisgKiBBQ0wyIHByb29mOiB1bW9kYXJpdGgubGlzcDogc2VjdGlvbiBkdy1yZWR1Y2UKKyAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90Citkd19yZWR1Y2UobXBkX3VpbnRfdCBoaSwgbXBkX3VpbnRfdCBsbywgbXBkX3VpbnRfdCBtKQoreworICAgIG1wZF91aW50X3QgcjEsIHIyLCB3OworCisgICAgX21wZF9kaXZfd29yZCgmdywgJnIxLCBoaSwgbSk7CisgICAgX21wZF9kaXZfd29yZHMoJncsICZyMiwgcjEsIGxvLCBtKTsKKworICAgIHJldHVybiByMjsKK30KKworLyoKKyAqIFN1YnRyYWN0IGRvdWJsZSB3b3JkIGZyb20gYS4KKyAqIFJlc3RyaWN0aW9uczogYSA8IG0KKyAqIEFDTDIgcHJvb2Y6IHVtb2Rhcml0aC5saXNwOiBzZWN0aW9uIGR3LXN1Ym1vZAorICovCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QKK2R3X3N1Ym1vZChtcGRfdWludF90IGEsIG1wZF91aW50X3QgaGksIG1wZF91aW50X3QgbG8sIG1wZF91aW50X3QgbSkKK3sKKyAgICBtcGRfdWludF90IGQsIHI7CisKKyAgICByID0gZHdfcmVkdWNlKGhpLCBsbywgbSk7CisgICAgZCA9IGEgLSByOworICAgIGQgPSAoYSA8IHIpID8gZCArIG0gOiBkOworCisgICAgcmV0dXJuIGQ7Cit9CisKKyNpZmRlZiBDT05GSUdfNjQKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICA2NC1iaXQgbW9kdWxhciBhcml0aG1ldGljICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogQSBwcm9vZiBvZiB0aGUgYWxnb3JpdGhtIGlzIGluIGxpdGVyYXR1cmUvbXVsbW9kLTY0LnR4dC4gQW4gQUNMMgorICogcHJvb2YgaXMgaW4gdW1vZGFyaXRoLmxpc3A6IHNlY3Rpb24gIkZhc3QgbW9kdWxhciByZWR1Y3Rpb24iLgorICoKKyAqIEFsZ29yaXRobTogY2FsY3VsYXRlIChhICogYikgJSBwOgorICoKKyAqICAgYSkgaGksIGxvIDwtIGEgKiBiICAgICAgICMgQ2FsY3VsYXRlIGEgKiBiLgorICoKKyAqICAgYikgaGksIGxvIDwtICBSKGhpLCBsbykgICMgUmVkdWNlIG1vZHVsbyBwLgorICoKKyAqICAgYykgUmVwZWF0IHN0ZXAgYikgdW50aWwgMCA8PSBoaSAqIDIqKjY0ICsgbG8gPCAyKnAuCisgKgorICogICBkKSBJZiB0aGUgcmVzdWx0IGlzIGxlc3MgdGhhbiBwLCByZXR1cm4gbG8uIE90aGVyd2lzZSByZXR1cm4gbG8gLSBwLgorICovCisKK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAoreDY0X211bG1vZChtcGRfdWludF90IGEsIG1wZF91aW50X3QgYiwgbXBkX3VpbnRfdCBtKQoreworICAgIG1wZF91aW50X3QgaGksIGxvLCB4LCB5OworCisKKyAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgYSwgYik7CisKKyAgICBpZiAobSAmICgxVUxMPDwzMikpIHsgLyogUDEgKi8KKworICAgICAgICAvKiBmaXJzdCByZWR1Y3Rpb24gKi8KKyAgICAgICAgeCA9IHkgPSBoaTsKKyAgICAgICAgaGkgPj49IDMyOworCisgICAgICAgIHggPSBsbyAtIHg7CisgICAgICAgIGlmICh4ID4gbG8pIGhpLS07CisKKyAgICAgICAgeSA8PD0gMzI7CisgICAgICAgIGxvID0geSArIHg7CisgICAgICAgIGlmIChsbyA8IHkpIGhpKys7CisKKyAgICAgICAgLyogc2Vjb25kIHJlZHVjdGlvbiAqLworICAgICAgICB4ID0geSA9IGhpOworICAgICAgICBoaSA+Pj0gMzI7CisKKyAgICAgICAgeCA9IGxvIC0geDsKKyAgICAgICAgaWYgKHggPiBsbykgaGktLTsKKworICAgICAgICB5IDw8PSAzMjsKKyAgICAgICAgbG8gPSB5ICsgeDsKKyAgICAgICAgaWYgKGxvIDwgeSkgaGkrKzsKKworICAgICAgICByZXR1cm4gKGhpIHx8IGxvID49IG0gPyBsbyAtIG0gOiBsbyk7CisgICAgfQorICAgIGVsc2UgaWYgKG0gJiAoMVVMTDw8MzQpKSB7IC8qIFAyICovCisKKyAgICAgICAgLyogZmlyc3QgcmVkdWN0aW9uICovCisgICAgICAgIHggPSB5ID0gaGk7CisgICAgICAgIGhpID4+PSAzMDsKKworICAgICAgICB4ID0gbG8gLSB4OworICAgICAgICBpZiAoeCA+IGxvKSBoaS0tOworCisgICAgICAgIHkgPDw9IDM0OworICAgICAgICBsbyA9IHkgKyB4OworICAgICAgICBpZiAobG8gPCB5KSBoaSsrOworCisgICAgICAgIC8qIHNlY29uZCByZWR1Y3Rpb24gKi8KKyAgICAgICAgeCA9IHkgPSBoaTsKKyAgICAgICAgaGkgPj49IDMwOworCisgICAgICAgIHggPSBsbyAtIHg7CisgICAgICAgIGlmICh4ID4gbG8pIGhpLS07CisKKyAgICAgICAgeSA8PD0gMzQ7CisgICAgICAgIGxvID0geSArIHg7CisgICAgICAgIGlmIChsbyA8IHkpIGhpKys7CisKKyAgICAgICAgLyogdGhpcmQgcmVkdWN0aW9uICovCisgICAgICAgIHggPSB5ID0gaGk7CisgICAgICAgIGhpID4+PSAzMDsKKworICAgICAgICB4ID0gbG8gLSB4OworICAgICAgICBpZiAoeCA+IGxvKSBoaS0tOworCisgICAgICAgIHkgPDw9IDM0OworICAgICAgICBsbyA9IHkgKyB4OworICAgICAgICBpZiAobG8gPCB5KSBoaSsrOworCisgICAgICAgIHJldHVybiAoaGkgfHwgbG8gPj0gbSA/IGxvIC0gbSA6IGxvKTsKKyAgICB9CisgICAgZWxzZSB7IC8qIFAzICovCisKKyAgICAgICAgLyogZmlyc3QgcmVkdWN0aW9uICovCisgICAgICAgIHggPSB5ID0gaGk7CisgICAgICAgIGhpID4+PSAyNDsKKworICAgICAgICB4ID0gbG8gLSB4OworICAgICAgICBpZiAoeCA+IGxvKSBoaS0tOworCisgICAgICAgIHkgPDw9IDQwOworICAgICAgICBsbyA9IHkgKyB4OworICAgICAgICBpZiAobG8gPCB5KSBoaSsrOworCisgICAgICAgIC8qIHNlY29uZCByZWR1Y3Rpb24gKi8KKyAgICAgICAgeCA9IHkgPSBoaTsKKyAgICAgICAgaGkgPj49IDI0OworCisgICAgICAgIHggPSBsbyAtIHg7CisgICAgICAgIGlmICh4ID4gbG8pIGhpLS07CisKKyAgICAgICAgeSA8PD0gNDA7CisgICAgICAgIGxvID0geSArIHg7CisgICAgICAgIGlmIChsbyA8IHkpIGhpKys7CisKKyAgICAgICAgLyogdGhpcmQgcmVkdWN0aW9uICovCisgICAgICAgIHggPSB5ID0gaGk7CisgICAgICAgIGhpID4+PSAyNDsKKworICAgICAgICB4ID0gbG8gLSB4OworICAgICAgICBpZiAoeCA+IGxvKSBoaS0tOworCisgICAgICAgIHkgPDw9IDQwOworICAgICAgICBsbyA9IHkgKyB4OworICAgICAgICBpZiAobG8gPCB5KSBoaSsrOworCisgICAgICAgIHJldHVybiAoaGkgfHwgbG8gPj0gbSA/IGxvIC0gbSA6IGxvKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAoreDY0X211bG1vZDJjKG1wZF91aW50X3QgKmEsIG1wZF91aW50X3QgKmIsIG1wZF91aW50X3QgdywgbXBkX3VpbnRfdCBtKQoreworICAgICphID0geDY0X211bG1vZCgqYSwgdywgbSk7CisgICAgKmIgPSB4NjRfbXVsbW9kKCpiLCB3LCBtKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCit4NjRfbXVsbW9kMihtcGRfdWludF90ICphMCwgbXBkX3VpbnRfdCBiMCwgbXBkX3VpbnRfdCAqYTEsIG1wZF91aW50X3QgYjEsCisgICAgICAgICAgICBtcGRfdWludF90IG0pCit7CisgICAgKmEwID0geDY0X211bG1vZCgqYTAsIGIwLCBtKTsKKyAgICAqYTEgPSB4NjRfbXVsbW9kKCphMSwgYjEsIG0pOworfQorCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QKK3g2NF9wb3dtb2QobXBkX3VpbnRfdCBiYXNlLCBtcGRfdWludF90IGV4cCwgbXBkX3VpbnRfdCB1bW9kKQoreworICAgIG1wZF91aW50X3QgciA9IDE7CisKKyAgICB3aGlsZSAoZXhwID4gMCkgeworICAgICAgICBpZiAoZXhwICYgMSkKKyAgICAgICAgICAgIHIgPSB4NjRfbXVsbW9kKHIsIGJhc2UsIHVtb2QpOworICAgICAgICBiYXNlID0geDY0X211bG1vZChiYXNlLCBiYXNlLCB1bW9kKTsKKyAgICAgICAgZXhwID4+PSAxOworICAgIH0KKworICAgIHJldHVybiByOworfQorCisvKiBFTkQgQ09ORklHXzY0ICovCisjZWxzZSAvKiBDT05GSUdfMzIgKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgIDMyLWJpdCBtb2R1bGFyIGFyaXRobWV0aWMgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZiBkZWZpbmVkKEFOU0kpCisjaWYgIWRlZmluZWQoTEVHQUNZX0NPTVBJTEVSKQorLyogSEFWRV9VSU5UNjRfVCAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90CitzdGRfbXVsbW9kKG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiLCBtcGRfdWludF90IG0pCit7CisgICAgcmV0dXJuICgobXBkX3V1aW50X3QpIGEgKiBiKSAlIG07Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorc3RkX211bG1vZDJjKG1wZF91aW50X3QgKmEsIG1wZF91aW50X3QgKmIsIG1wZF91aW50X3QgdywgbXBkX3VpbnRfdCBtKQoreworICAgICphID0gKChtcGRfdXVpbnRfdCkgKmEgKiB3KSAlIG07CisgICAgKmIgPSAoKG1wZF91dWludF90KSAqYiAqIHcpICUgbTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitzdGRfbXVsbW9kMihtcGRfdWludF90ICphMCwgbXBkX3VpbnRfdCBiMCwgbXBkX3VpbnRfdCAqYTEsIG1wZF91aW50X3QgYjEsCisgICAgICAgICAgICBtcGRfdWludF90IG0pCit7CisgICAgKmEwID0gKChtcGRfdXVpbnRfdCkgKmEwICogYjApICUgbTsKKyAgICAqYTEgPSAoKG1wZF91dWludF90KSAqYTEgKiBiMSkgJSBtOworfQorLyogRU5EIEhBVkVfVUlOVDY0X1QgKi8KKyNlbHNlCisvKiBMRUdBQ1lfQ09NUElMRVIgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAorc3RkX211bG1vZChtcGRfdWludF90IGEsIG1wZF91aW50X3QgYiwgbXBkX3VpbnRfdCBtKQoreworICAgIG1wZF91aW50X3QgaGksIGxvLCBxLCByOworICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCBhLCBiKTsKKyAgICBfbXBkX2Rpdl93b3JkcygmcSwgJnIsIGhpLCBsbywgbSk7CisgICAgcmV0dXJuIHI7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorc3RkX211bG1vZDJjKG1wZF91aW50X3QgKmEsIG1wZF91aW50X3QgKmIsIG1wZF91aW50X3QgdywgbXBkX3VpbnRfdCBtKQoreworICAgICphID0gc3RkX211bG1vZCgqYSwgdywgbSk7CisgICAgKmIgPSBzdGRfbXVsbW9kKCpiLCB3LCBtKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitzdGRfbXVsbW9kMihtcGRfdWludF90ICphMCwgbXBkX3VpbnRfdCBiMCwgbXBkX3VpbnRfdCAqYTEsIG1wZF91aW50X3QgYjEsCisgICAgICAgICAgICBtcGRfdWludF90IG0pCit7CisgICAgKmEwID0gc3RkX211bG1vZCgqYTAsIGIwLCBtKTsKKyAgICAqYTEgPSBzdGRfbXVsbW9kKCphMSwgYjEsIG0pOworfQorLyogRU5EIExFR0FDWV9DT01QSUxFUiAqLworI2VuZGlmCisKK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAorc3RkX3Bvd21vZChtcGRfdWludF90IGJhc2UsIG1wZF91aW50X3QgZXhwLCBtcGRfdWludF90IHVtb2QpCit7CisgICAgbXBkX3VpbnRfdCByID0gMTsKKworICAgIHdoaWxlIChleHAgPiAwKSB7CisgICAgICAgIGlmIChleHAgJiAxKQorICAgICAgICAgICAgciA9IHN0ZF9tdWxtb2QociwgYmFzZSwgdW1vZCk7CisgICAgICAgIGJhc2UgPSBzdGRfbXVsbW9kKGJhc2UsIGJhc2UsIHVtb2QpOworICAgICAgICBleHAgPj49IDE7CisgICAgfQorCisgICAgcmV0dXJuIHI7Cit9CisjZW5kaWYgLyogQU5TSSBDT05GSUdfMzIgKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgUGVudGl1bSBQcm8gbW9kdWxhciBhcml0aG1ldGljICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBBIHByb29mIG9mIHRoZSBhbGdvcml0aG0gaXMgaW4gbGl0ZXJhdHVyZS9tdWxtb2QtcHByby50eHQuIFRoZSBGUFUKKyAqIGNvbnRyb2wgd29yZCBtdXN0IGJlIHNldCB0byA2NC1iaXQgcHJlY2lzaW9uIGFuZCB0cnVuY2F0aW9uIG1vZGUKKyAqIHByaW9yIHRvIHVzaW5nIHRoZXNlIGZ1bmN0aW9ucy4KKyAqCisgKiBBbGdvcml0aG06IGNhbGN1bGF0ZSAoYSAqIGIpICUgcDoKKyAqCisgKiAgIHAgICAgOj0gcHJpbWUgPCAyKiozMQorICogICBwaW52IDo9IChsb25nIGRvdWJsZSkxLjAgLyBwIChwcmVjYWxjdWxhdGVkKQorICoKKyAqICAgYSkgbiA9IGEgKiBiICAgICAgICAgICAgICAjIENhbGN1bGF0ZSBleGFjdCBwcm9kdWN0LgorICogICBiKSBxZXN0ID0gbiAqIHBpbnYgICAgICAgICMgQ2FsY3VsYXRlIGVzdGltYXRlIGZvciBxID0gbiAvIHAuCisgKiAgIGMpIHEgPSAocWVzdCsyKio2MyktMioqNjMgIyBUcnVuY2F0ZSBxZXN0IHRvIHRoZSBleGFjdCBxdW90aWVudC4KKyAqICAgZCkgciA9IG4gLSBxICogcCAgICAgICAgICAjIENhbGN1bGF0ZSByZW1haW5kZXIuCisgKgorICogUmVtYXJrczoKKyAqCisgKiAgIC0gcCA9IGRtb2QgYW5kIHBpbnYgPSBkaW52bW9kLgorICogICAtIGRpbnZtb2QgcG9pbnRzIHRvIGFuIGFycmF5IG9mIHRocmVlIHVpbnQzMl90LCB3aGljaCBpcyBpbnRlcnByZXRlZAorICogICAgIGFzIGFuIDgwIGJpdCBsb25nIGRvdWJsZSBieSBmbGR0LgorICogICAtIEludGVsIGNvbXBpbGVycyBwcmlvciB0byB2ZXJzaW9uIDExIGRvIG5vdCBzZWVtIHRvIGhhbmRsZSB0aGUKKyAqICAgICBfX0dOVUNfXyBpbmxpbmUgYXNzZW1ibHkgY29ycmVjdGx5LgorICogICAtIHJhbmRvbSB0ZXN0cyBhcmUgcHJvdmlkZWQgaW4gdGVzdHMvZXh0ZW5kZWQvcHByb19tdWxtb2QuYworICovCisKKyNpZiBkZWZpbmVkKFBQUk8pCisjaWYgZGVmaW5lZChBU00pCisKKy8qIFJldHVybiAoYSAqIGIpICUgZG1vZCAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90CitwcHJvX211bG1vZChtcGRfdWludF90IGEsIG1wZF91aW50X3QgYiwgZG91YmxlICpkbW9kLCB1aW50MzJfdCAqZGludm1vZCkKK3sKKyAgICBtcGRfdWludF90IHJldHZhbDsKKworICAgIF9fYXNtX18gKAorICAgICAgICAgICAgImZpbGRsICAlMlxuXHQiCisgICAgICAgICAgICAiZmlsZGwgICUxXG5cdCIKKyAgICAgICAgICAgICJmbXVscCAgJSVzdCwgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZmxkdCAgICglNClcblx0IgorICAgICAgICAgICAgImZtdWwgICAlJXN0KDEpLCAlJXN0XG5cdCIKKyAgICAgICAgICAgICJmbGRzICAgJTVcblx0IgorICAgICAgICAgICAgImZhZGQgICAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmc3VicnAgJSVzdCwgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZmxkbCAgICglMylcblx0IgorICAgICAgICAgICAgImZtdWxwICAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmc3VicnAgJSVzdCwgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZmlzdHBsICUwXG5cdCIKKyAgICAgICAgICAgIDogIj1tIiAocmV0dmFsKQorICAgICAgICAgICAgOiAibSIgKGEpLCAibSIgKGIpLCAiciIgKGRtb2QpLCAiciIgKGRpbnZtb2QpLCAibSIgKE1QRF9UV082MykKKyAgICAgICAgICAgIDogInN0IiwgIm1lbW9yeSIKKyAgICApOworCisgICAgcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIFR3byBtb2R1bGFyIG11bHRpcGxpY2F0aW9ucyBpbiBwYXJhbGxlbDoKKyAqICAgICAgKmEwID0gKCphMCAqIHcpICUgZG1vZAorICogICAgICAqYTEgPSAoKmExICogdykgJSBkbW9kCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorcHByb19tdWxtb2QyYyhtcGRfdWludF90ICphMCwgbXBkX3VpbnRfdCAqYTEsIG1wZF91aW50X3QgdywKKyAgICAgICAgICAgICAgZG91YmxlICpkbW9kLCB1aW50MzJfdCAqZGludm1vZCkKK3sKKyAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICJmaWxkbCAgJTJcblx0IgorICAgICAgICAgICAgImZpbGRsICAoJTEpXG5cdCIKKyAgICAgICAgICAgICJmbXVsICAgJSVzdCgxKSwgJSVzdFxuXHQiCisgICAgICAgICAgICAiZnhjaCAgICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZpbGRsICAoJTApXG5cdCIKKyAgICAgICAgICAgICJmbXVscCAgJSVzdCwgJSVzdCgxKSBcblx0IgorICAgICAgICAgICAgImZsZHQgICAoJTQpXG5cdCIKKyAgICAgICAgICAgICJmbGRzICAgJTVcblx0IgorICAgICAgICAgICAgImZsZCAgICAlJXN0KDIpXG5cdCIKKyAgICAgICAgICAgICJmbXVsICAgJSVzdCgyKVxuXHQiCisgICAgICAgICAgICAiZmFkZCAgICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZzdWIgICAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmbXVsbCAgKCUzKVxuXHQiCisgICAgICAgICAgICAiZnN1YnJwICUlc3QsICUlc3QoMylcblx0IgorICAgICAgICAgICAgImZ4Y2ggICAlJXN0KDIpXG5cdCIKKyAgICAgICAgICAgICJmaXN0cGwgKCUwKVxuXHQiCisgICAgICAgICAgICAiZm11bCAgICUlc3QoMilcblx0IgorICAgICAgICAgICAgImZhZGQgICAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmc3VicCAgJSVzdCwgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZm11bGwgICglMylcblx0IgorICAgICAgICAgICAgImZzdWJycCAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmaXN0cGwgKCUxKVxuXHQiCisgICAgICAgICAgICA6IDogInIiIChhMCksICJyIiAoYTEpLCAibSIgKHcpLAorICAgICAgICAgICAgICAgICJyIiAoZG1vZCksICJyIiAoZGludm1vZCksCisgICAgICAgICAgICAgICAgIm0iIChNUERfVFdPNjMpCisgICAgICAgICAgICA6ICJzdCIsICJtZW1vcnkiCisgICAgKTsKK30KKworLyoKKyAqIFR3byBtb2R1bGFyIG11bHRpcGxpY2F0aW9ucyBpbiBwYXJhbGxlbDoKKyAqICAgICAgKmEwID0gKCphMCAqIGIwKSAlIGRtb2QKKyAqICAgICAgKmExID0gKCphMSAqIGIxKSAlIGRtb2QKKyAqLworc3RhdGljIGlubGluZSB2b2lkCitwcHJvX211bG1vZDIobXBkX3VpbnRfdCAqYTAsIG1wZF91aW50X3QgYjAsIG1wZF91aW50X3QgKmExLCBtcGRfdWludF90IGIxLAorICAgICAgICAgICAgIGRvdWJsZSAqZG1vZCwgdWludDMyX3QgKmRpbnZtb2QpCit7CisgICAgX19hc21fXyAoCisgICAgICAgICAgICAiZmlsZGwgICUzXG5cdCIKKyAgICAgICAgICAgICJmaWxkbCAgKCUyKVxuXHQiCisgICAgICAgICAgICAiZm11bHAgICUlc3QsICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZpbGRsICAlMVxuXHQiCisgICAgICAgICAgICAiZmlsZGwgICglMClcblx0IgorICAgICAgICAgICAgImZtdWxwICAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmbGR0ICAgKCU1KVxuXHQiCisgICAgICAgICAgICAiZmxkICAgICUlc3QoMilcblx0IgorICAgICAgICAgICAgImZtdWwgICAlJXN0KDEpLCAlJXN0XG5cdCIKKyAgICAgICAgICAgICJmeGNoICAgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZm11bCAgICUlc3QoMiksICUlc3Rcblx0IgorICAgICAgICAgICAgImZsZHMgICAlNlxuXHQiCisgICAgICAgICAgICAiZmxkbCAgICglNClcblx0IgorICAgICAgICAgICAgImZ4Y2ggICAlJXN0KDMpXG5cdCIKKyAgICAgICAgICAgICJmYWRkICAgJSVzdCgxKSwgJSVzdFxuXHQiCisgICAgICAgICAgICAiZnhjaCAgICUlc3QoMilcblx0IgorICAgICAgICAgICAgImZhZGQgICAlJXN0KDEpLCAlJXN0XG5cdCIKKyAgICAgICAgICAgICJmeGNoICAgJSVzdCgyKVxuXHQiCisgICAgICAgICAgICAiZnN1YiAgICUlc3QoMSksICUlc3Rcblx0IgorICAgICAgICAgICAgImZ4Y2ggICAlJXN0KDIpXG5cdCIKKyAgICAgICAgICAgICJmc3VicCAgJSVzdCwgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZnhjaCAgICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZtdWwgICAlJXN0KDIpLCAlJXN0XG5cdCIKKyAgICAgICAgICAgICJmeGNoICAgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZm11bHAgICUlc3QsICUlc3QoMilcblx0IgorICAgICAgICAgICAgImZzdWJycCAlJXN0LCAlJXN0KDMpXG5cdCIKKyAgICAgICAgICAgICJmc3VicnAgJSVzdCwgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZnhjaCAgICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZpc3RwbCAoJTIpXG5cdCIKKyAgICAgICAgICAgICJmaXN0cGwgKCUwKVxuXHQiCisgICAgICAgICAgICA6IDogInIiIChhMCksICJtIiAoYjApLCAiciIgKGExKSwgIm0iIChiMSksCisgICAgICAgICAgICAgICAgInIiIChkbW9kKSwgInIiIChkaW52bW9kKSwKKyAgICAgICAgICAgICAgICAibSIgKE1QRF9UV082MykKKyAgICAgICAgICAgIDogInN0IiwgIm1lbW9yeSIKKyAgICApOworfQorLyogRU5EIFBQUk8gR0NDIEFTTSAqLworI2VsaWYgZGVmaW5lZChNQVNNKQorCisvKiBSZXR1cm4gKGEgKiBiKSAlIGRtb2QgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdCBfX2NkZWNsCitwcHJvX211bG1vZChtcGRfdWludF90IGEsIG1wZF91aW50X3QgYiwgZG91YmxlICpkbW9kLCB1aW50MzJfdCAqZGludm1vZCkKK3sKKyAgICBtcGRfdWludF90IHJldHZhbDsKKworICAgIF9fYXNtIHsKKyAgICAgICAgbW92ICAgICBlYXgsIGRpbnZtb2QKKyAgICAgICAgbW92ICAgICBlZHgsIGRtb2QKKyAgICAgICAgZmlsZCAgICBiCisgICAgICAgIGZpbGQgICAgYQorICAgICAgICBmbXVscCAgIHN0KDEpLCBzdAorICAgICAgICBmbGQgICAgIFRCWVRFIFBUUiBbZWF4XQorICAgICAgICBmbXVsICAgIHN0LCBzdCgxKQorICAgICAgICBmbGQgICAgIE1QRF9UV082MworICAgICAgICBmYWRkICAgIHN0KDEpLCBzdAorICAgICAgICBmc3VicCAgIHN0KDEpLCBzdAorICAgICAgICBmbGQgICAgIFFXT1JEIFBUUiBbZWR4XQorICAgICAgICBmbXVscCAgIHN0KDEpLCBzdAorICAgICAgICBmc3VicCAgIHN0KDEpLCBzdAorICAgICAgICBmaXN0cCAgIHJldHZhbAorICAgIH0KKworICAgIHJldHVybiByZXR2YWw7Cit9CisKKy8qCisgKiBUd28gbW9kdWxhciBtdWx0aXBsaWNhdGlvbnMgaW4gcGFyYWxsZWw6CisgKiAgICAgICphMCA9ICgqYTAgKiB3KSAlIGRtb2QKKyAqICAgICAgKmExID0gKCphMSAqIHcpICUgZG1vZAorICovCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QgX19jZGVjbAorcHByb19tdWxtb2QyYyhtcGRfdWludF90ICphMCwgbXBkX3VpbnRfdCAqYTEsIG1wZF91aW50X3QgdywKKyAgICAgICAgICAgICAgZG91YmxlICpkbW9kLCB1aW50MzJfdCAqZGludm1vZCkKK3sKKyAgICBfX2FzbSB7CisgICAgICAgIG1vdiAgICAgZWN4LCBkbW9kCisgICAgICAgIG1vdiAgICAgZWR4LCBhMQorICAgICAgICBtb3YgICAgIGVieCwgZGludm1vZAorICAgICAgICBtb3YgICAgIGVheCwgYTAKKyAgICAgICAgZmlsZCAgICB3CisgICAgICAgIGZpbGQgICAgRFdPUkQgUFRSIFtlZHhdCisgICAgICAgIGZtdWwgICAgc3QsIHN0KDEpCisgICAgICAgIGZ4Y2ggICAgc3QoMSkKKyAgICAgICAgZmlsZCAgICBEV09SRCBQVFIgW2VheF0KKyAgICAgICAgZm11bHAgICBzdCgxKSwgc3QKKyAgICAgICAgZmxkICAgICBUQllURSBQVFIgW2VieF0KKyAgICAgICAgZmxkICAgICBNUERfVFdPNjMKKyAgICAgICAgZmxkICAgICBzdCgyKQorICAgICAgICBmbXVsICAgIHN0LCBzdCgyKQorICAgICAgICBmYWRkICAgIHN0LCBzdCgxKQorICAgICAgICBmc3ViICAgIHN0LCBzdCgxKQorICAgICAgICBmbXVsICAgIFFXT1JEIFBUUiBbZWN4XQorICAgICAgICBmc3VicCAgIHN0KDMpLCBzdAorICAgICAgICBmeGNoICAgIHN0KDIpCisgICAgICAgIGZpc3RwICAgRFdPUkQgUFRSIFtlYXhdCisgICAgICAgIGZtdWwgICAgc3QsIHN0KDIpCisgICAgICAgIGZhZGQgICAgc3QsIHN0KDEpCisgICAgICAgIGZzdWJycCAgc3QoMSksIHN0CisgICAgICAgIGZtdWwgICAgUVdPUkQgUFRSIFtlY3hdCisgICAgICAgIGZzdWJwICAgc3QoMSksIHN0CisgICAgICAgIGZpc3RwICAgRFdPUkQgUFRSIFtlZHhdCisgICAgfQorfQorCisvKgorICogVHdvIG1vZHVsYXIgbXVsdGlwbGljYXRpb25zIGluIHBhcmFsbGVsOgorICogICAgICAqYTAgPSAoKmEwICogYjApICUgZG1vZAorICogICAgICAqYTEgPSAoKmExICogYjEpICUgZG1vZAorICovCitzdGF0aWMgaW5saW5lIHZvaWQgX19jZGVjbAorcHByb19tdWxtb2QyKG1wZF91aW50X3QgKmEwLCBtcGRfdWludF90IGIwLCBtcGRfdWludF90ICphMSwgbXBkX3VpbnRfdCBiMSwKKyAgICAgICAgICAgICBkb3VibGUgKmRtb2QsIHVpbnQzMl90ICpkaW52bW9kKQoreworICAgIF9fYXNtIHsKKyAgICAgICAgbW92ICAgICBlY3gsIGRtb2QKKyAgICAgICAgbW92ICAgICBlZHgsIGExCisgICAgICAgIG1vdiAgICAgZWJ4LCBkaW52bW9kCisgICAgICAgIG1vdiAgICAgZWF4LCBhMAorICAgICAgICBmaWxkICAgIGIxCisgICAgICAgIGZpbGQgICAgRFdPUkQgUFRSIFtlZHhdCisgICAgICAgIGZtdWxwICAgc3QoMSksIHN0CisgICAgICAgIGZpbGQgICAgYjAKKyAgICAgICAgZmlsZCAgICBEV09SRCBQVFIgW2VheF0KKyAgICAgICAgZm11bHAgICBzdCgxKSwgc3QKKyAgICAgICAgZmxkICAgICBUQllURSBQVFIgW2VieF0KKyAgICAgICAgZmxkICAgICBzdCgyKQorICAgICAgICBmbXVsICAgIHN0LCBzdCgxKQorICAgICAgICBmeGNoICAgIHN0KDEpCisgICAgICAgIGZtdWwgICAgc3QsIHN0KDIpCisgICAgICAgIGZsZCAgICAgRFdPUkQgUFRSIE1QRF9UV082MworICAgICAgICBmbGQgICAgIFFXT1JEIFBUUiBbZWN4XQorICAgICAgICBmeGNoICAgIHN0KDMpCisgICAgICAgIGZhZGQgICAgc3QsIHN0KDEpCisgICAgICAgIGZ4Y2ggICAgc3QoMikKKyAgICAgICAgZmFkZCAgICBzdCwgc3QoMSkKKyAgICAgICAgZnhjaCAgICBzdCgyKQorICAgICAgICBmc3ViICAgIHN0LCBzdCgxKQorICAgICAgICBmeGNoICAgIHN0KDIpCisgICAgICAgIGZzdWJycCAgc3QoMSksIHN0CisgICAgICAgIGZ4Y2ggICAgc3QoMSkKKyAgICAgICAgZm11bCAgICBzdCwgc3QoMikKKyAgICAgICAgZnhjaCAgICBzdCgxKQorICAgICAgICBmbXVscCAgIHN0KDIpLCBzdAorICAgICAgICBmc3VicCAgIHN0KDMpLCBzdAorICAgICAgICBmc3VicCAgIHN0KDEpLCBzdAorICAgICAgICBmeGNoICAgIHN0KDEpCisgICAgICAgIGZpc3RwICAgRFdPUkQgUFRSIFtlZHhdCisgICAgICAgIGZpc3RwICAgRFdPUkQgUFRSIFtlYXhdCisgICAgfQorfQorI2VuZGlmIC8qIFBQUk8gTUFTTSAoX01TQ19WRVIpICovCisKKworLyogUmV0dXJuIChiYXNlICoqIGV4cCkgJSBkbW9kICovCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QKK3Bwcm9fcG93bW9kKG1wZF91aW50X3QgYmFzZSwgbXBkX3VpbnRfdCBleHAsIGRvdWJsZSAqZG1vZCwgdWludDMyX3QgKmRpbnZtb2QpCit7CisgICAgbXBkX3VpbnRfdCByID0gMTsKKworICAgIHdoaWxlIChleHAgPiAwKSB7CisgICAgICAgIGlmIChleHAgJiAxKQorICAgICAgICAgICAgciA9IHBwcm9fbXVsbW9kKHIsIGJhc2UsIGRtb2QsIGRpbnZtb2QpOworICAgICAgICBiYXNlID0gcHByb19tdWxtb2QoYmFzZSwgYmFzZSwgZG1vZCwgZGludm1vZCk7CisgICAgICAgIGV4cCA+Pj0gMTsKKyAgICB9CisKKyAgICByZXR1cm4gcjsKK30KKyNlbmRpZiAvKiBQUFJPICovCisjZW5kaWYgLyogQ09ORklHXzMyICovCisKKworI2VuZGlmIC8qIFVNT0RBUklUSF9IICovCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3ZjY29tcGF0LmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3ZjY29tcGF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc2ZTAzNwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNjb21wYXQuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIFZDQ09NUEFUX0gKKyNkZWZpbmUgVkNDT01QQVRfSAorCisKKy8qIFZpc3VhbCBDIGZpeGVzOiBubyBzdGRpbnQuaCwgbm8gc25wcmludGYgLi4uICovCisjaWZkZWYgX01TQ19WRVIKKyAgI2luY2x1ZGUgInZjc3RkaW50LmgiCisgICN1bmRlZiBpbmxpbmUKKyAgI2RlZmluZSBpbmxpbmUgX19pbmxpbmUKKyAgI3VuZGVmIHJhbmRvbQorICAjZGVmaW5lIHJhbmRvbSByYW5kCisgICN1bmRlZiBzcmFuZG9tCisgICNkZWZpbmUgc3JhbmRvbSBzcmFuZAorICAjdW5kZWYgc25wcmludGYKKyAgI2RlZmluZSBzbnByaW50ZiBzcHJpbnRmX3MKKyAgI2RlZmluZSBIQVZFX1NOUFJJTlRGCisgICN1bmRlZiBzdHJuY2FzZWNtcAorICAjZGVmaW5lIHN0cm5jYXNlY21wIF9zdHJuaWNtcAorICAjdW5kZWYgc3RyY2FzZWNtcAorICAjZGVmaW5lIHN0cmNhc2VjbXAgX3N0cmljbXAKKyAgI3VuZGVmIHN0cnRvbGwKKyAgI2RlZmluZSBzdHJ0b2xsIF9zdHJ0b2k2NAorICAjZGVmaW5lIHN0cmR1cCBfc3RyZHVwCisgICNkZWZpbmUgUFJJaTY0ICJJNjRpIgorICAjZGVmaW5lIFBSSXU2NCAiSTY0dSIKKyAgI2RlZmluZSBQUklpMzIgIkkzMmkiCisgICNkZWZpbmUgUFJJdTMyICJJMzJ1IgorI2VuZGlmCisKKworI2VuZGlmIC8qIFZDQ09NUEFUX0ggKi8KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNkaXY2NC5hc20gYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3ZjZGl2NjQuYXNtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxYmJhMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3ZjZGl2NjQuYXNtCkBAIC0wLDAgKzEsNDggQEAKKzsKKzsgQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCis7Cis7IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorOyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKzsgYXJlIG1ldDoKKzsKKzsgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKzsgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorOworOyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorOyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCis7ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCis7Cis7IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECis7IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorOyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorOyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorOyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorOyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworOyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKzsgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKzsgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorOyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCis7IFNVQ0ggREFNQUdFLgorOworCisKK1BVQkxJQyAgICBfbXBkX2Rpdl93b3JkcworX1RFWFQgICAgU0VHTUVOVAorcSQgPSA4CityJCA9IDE2CitoaSQgPSAyNAorbG8kID0gMzIKK2QkID0gNDAKK19tcGRfZGl2X3dvcmRzIFBST0MKKyAgICBtb3YgICAgcjEwLCByZHgKKyAgICBtb3YgICAgcmR4LCByOAorICAgIG1vdiAgICByYXgsIHI5CisgICAgZGl2ICAgIFFXT1JEIFBUUiBkJFtyc3BdCisgICAgbW92ICAgIFFXT1JEIFBUUiBbcjEwXSwgcmR4CisgICAgbW92ICAgIFFXT1JEIFBUUiBbcmN4XSwgcmF4CisgICAgcmV0ICAgIDAKK19tcGRfZGl2X3dvcmRzIEVORFAKK19URVhUICAgIEVORFMKK0VORAorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNzdGRpbnQuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNzdGRpbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2RjYWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y3N0ZGludC5oCkBAIC0wLDAgKzEsMjMyIEBACisvLyBJU08gQzl4ICBjb21wbGlhbnQgc3RkaW50LmggZm9yIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvCisvLyBCYXNlZCBvbiBJU08vSUVDIDk4OTk6VEMyIENvbW1pdHRlZSBkcmFmdCAoTWF5IDYsIDIwMDUpIFdHMTQvTjExMjQKKy8vCisvLyAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDggQWxleGFuZGVyIENoZW1lcmlzCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKy8vICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vCisvLyAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyAgIDMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCisvLyAgICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKy8vIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisvLyBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTworLy8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7CisvLyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwKKy8vIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SCisvLyBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGCisvLyBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKyNpZm5kZWYgX01TQ19WRVIgLy8gWworI2Vycm9yICJVc2UgdGhpcyBoZWFkZXIgb25seSB3aXRoIE1pY3Jvc29mdCBWaXN1YWwgQysrIGNvbXBpbGVycyEiCisjZW5kaWYgLy8gX01TQ19WRVIgXQorCisjaWZuZGVmIF9NU0NfU1RESU5UX0hfIC8vIFsKKyNkZWZpbmUgX01TQ19TVERJTlRfSF8KKworI2lmIF9NU0NfVkVSID4gMTAwMAorI3ByYWdtYSBvbmNlCisjZW5kaWYKKworI2luY2x1ZGUgPGxpbWl0cy5oPgorCisvLyBGb3IgVmlzdWFsIFN0dWRpbyA2IGluIEMrKyBtb2RlIHdyYXAgPHdjaGFyLmg+IGluY2x1ZGUgd2l0aCAnZXh0ZXJuICJDKysiIHt9JworLy8gb3IgY29tcGlsZXIgZ2l2ZSBtYW55IGVycm9ycyBsaWtlIHRoaXM6CisvLyAgIGVycm9yIEMyNzMzOiBzZWNvbmQgQyBsaW5rYWdlIG9mIG92ZXJsb2FkZWQgZnVuY3Rpb24gJ3dtZW1jaHInIG5vdCBhbGxvd2VkCisjaWYgKF9NU0NfVkVSIDwgMTMwMCkgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKKyAgIGV4dGVybiAiQysrIiB7CisjZW5kaWYKKyMgICAgIGluY2x1ZGUgPHdjaGFyLmg+CisjaWYgKF9NU0NfVkVSIDwgMTMwMCkgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKKyAgIH0KKyNlbmRpZgorCisvLyBEZWZpbmUgX1c2NCBtYWNyb3MgdG8gbWFyayB0eXBlcyBjaGFuZ2luZyB0aGVpciBzaXplLCBsaWtlIGludHB0cl90LgorI2lmbmRlZiBfVzY0CisjICBpZiAhZGVmaW5lZChfX21pZGwpICYmIChkZWZpbmVkKF9YODZfKSB8fCBkZWZpbmVkKF9NX0lYODYpKSAmJiBfTVNDX1ZFUiA+PSAxMzAwCisjICAgICBkZWZpbmUgX1c2NCBfX3c2NAorIyAgZWxzZQorIyAgICAgZGVmaW5lIF9XNjQKKyMgIGVuZGlmCisjZW5kaWYKKworCisvLyA3LjE4LjEgSW50ZWdlciB0eXBlcworCisvLyA3LjE4LjEuMSBFeGFjdC13aWR0aCBpbnRlZ2VyIHR5cGVzCit0eXBlZGVmIF9faW50OCAgICAgICAgICAgIGludDhfdDsKK3R5cGVkZWYgX19pbnQxNiAgICAgICAgICAgaW50MTZfdDsKK3R5cGVkZWYgX19pbnQzMiAgICAgICAgICAgaW50MzJfdDsKK3R5cGVkZWYgX19pbnQ2NCAgICAgICAgICAgaW50NjRfdDsKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ4ICAgdWludDhfdDsKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQxNiAgdWludDE2X3Q7Cit0eXBlZGVmIHVuc2lnbmVkIF9faW50MzIgIHVpbnQzMl90OwordHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0ICB1aW50NjRfdDsKKworLy8gNy4xOC4xLjIgTWluaW11bS13aWR0aCBpbnRlZ2VyIHR5cGVzCit0eXBlZGVmIGludDhfdCAgICBpbnRfbGVhc3Q4X3Q7Cit0eXBlZGVmIGludDE2X3QgICBpbnRfbGVhc3QxNl90OwordHlwZWRlZiBpbnQzMl90ICAgaW50X2xlYXN0MzJfdDsKK3R5cGVkZWYgaW50NjRfdCAgIGludF9sZWFzdDY0X3Q7Cit0eXBlZGVmIHVpbnQ4X3QgICB1aW50X2xlYXN0OF90OwordHlwZWRlZiB1aW50MTZfdCAgdWludF9sZWFzdDE2X3Q7Cit0eXBlZGVmIHVpbnQzMl90ICB1aW50X2xlYXN0MzJfdDsKK3R5cGVkZWYgdWludDY0X3QgIHVpbnRfbGVhc3Q2NF90OworCisvLyA3LjE4LjEuMyBGYXN0ZXN0IG1pbmltdW0td2lkdGggaW50ZWdlciB0eXBlcwordHlwZWRlZiBpbnQ4X3QgICAgaW50X2Zhc3Q4X3Q7Cit0eXBlZGVmIGludDE2X3QgICBpbnRfZmFzdDE2X3Q7Cit0eXBlZGVmIGludDMyX3QgICBpbnRfZmFzdDMyX3Q7Cit0eXBlZGVmIGludDY0X3QgICBpbnRfZmFzdDY0X3Q7Cit0eXBlZGVmIHVpbnQ4X3QgICB1aW50X2Zhc3Q4X3Q7Cit0eXBlZGVmIHVpbnQxNl90ICB1aW50X2Zhc3QxNl90OwordHlwZWRlZiB1aW50MzJfdCAgdWludF9mYXN0MzJfdDsKK3R5cGVkZWYgdWludDY0X3QgIHVpbnRfZmFzdDY0X3Q7CisKKy8vIDcuMTguMS40IEludGVnZXIgdHlwZXMgY2FwYWJsZSBvZiBob2xkaW5nIG9iamVjdCBwb2ludGVycworI2lmZGVmIF9XSU42NCAvLyBbCisgICB0eXBlZGVmIF9faW50NjQgICAgICAgICAgIGludHB0cl90OworICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0ICB1aW50cHRyX3Q7CisjZWxzZSAvLyBfV0lONjQgXVsKKyAgIHR5cGVkZWYgX1c2NCBpbnQgICAgICAgICAgICAgICBpbnRwdHJfdDsKKyAgIHR5cGVkZWYgX1c2NCB1bnNpZ25lZCBpbnQgICAgICB1aW50cHRyX3Q7CisjZW5kaWYgLy8gX1dJTjY0IF0KKworLy8gNy4xOC4xLjUgR3JlYXRlc3Qtd2lkdGggaW50ZWdlciB0eXBlcwordHlwZWRlZiBpbnQ2NF90ICAgaW50bWF4X3Q7Cit0eXBlZGVmIHVpbnQ2NF90ICB1aW50bWF4X3Q7CisKKworLy8gNy4xOC4yIExpbWl0cyBvZiBzcGVjaWZpZWQtd2lkdGggaW50ZWdlciB0eXBlcworCisjaWYgIWRlZmluZWQoX19jcGx1c3BsdXMpIHx8IGRlZmluZWQoX19TVERDX0xJTUlUX01BQ1JPUykgLy8gWyAgIFNlZSBmb290bm90ZSAyMjAgYXQgcGFnZSAyNTcgYW5kIGZvb3Rub3RlIDIyMSBhdCBwYWdlIDI1OQorCisvLyA3LjE4LjIuMSBMaW1pdHMgb2YgZXhhY3Qtd2lkdGggaW50ZWdlciB0eXBlcworI2RlZmluZSBJTlQ4X01JTiAgICAgKChpbnQ4X3QpX0k4X01JTikKKyNkZWZpbmUgSU5UOF9NQVggICAgIF9JOF9NQVgKKyNkZWZpbmUgSU5UMTZfTUlOICAgICgoaW50MTZfdClfSTE2X01JTikKKyNkZWZpbmUgSU5UMTZfTUFYICAgIF9JMTZfTUFYCisjZGVmaW5lIElOVDMyX01JTiAgICAoKGludDMyX3QpX0kzMl9NSU4pCisjZGVmaW5lIElOVDMyX01BWCAgICBfSTMyX01BWAorI2RlZmluZSBJTlQ2NF9NSU4gICAgKChpbnQ2NF90KV9JNjRfTUlOKQorI2RlZmluZSBJTlQ2NF9NQVggICAgX0k2NF9NQVgKKyNkZWZpbmUgVUlOVDhfTUFYICAgIF9VSThfTUFYCisjZGVmaW5lIFVJTlQxNl9NQVggICBfVUkxNl9NQVgKKyNkZWZpbmUgVUlOVDMyX01BWCAgIF9VSTMyX01BWAorI2RlZmluZSBVSU5UNjRfTUFYICAgX1VJNjRfTUFYCisKKy8vIDcuMTguMi4yIExpbWl0cyBvZiBtaW5pbXVtLXdpZHRoIGludGVnZXIgdHlwZXMKKyNkZWZpbmUgSU5UX0xFQVNUOF9NSU4gICAgSU5UOF9NSU4KKyNkZWZpbmUgSU5UX0xFQVNUOF9NQVggICAgSU5UOF9NQVgKKyNkZWZpbmUgSU5UX0xFQVNUMTZfTUlOICAgSU5UMTZfTUlOCisjZGVmaW5lIElOVF9MRUFTVDE2X01BWCAgIElOVDE2X01BWAorI2RlZmluZSBJTlRfTEVBU1QzMl9NSU4gICBJTlQzMl9NSU4KKyNkZWZpbmUgSU5UX0xFQVNUMzJfTUFYICAgSU5UMzJfTUFYCisjZGVmaW5lIElOVF9MRUFTVDY0X01JTiAgIElOVDY0X01JTgorI2RlZmluZSBJTlRfTEVBU1Q2NF9NQVggICBJTlQ2NF9NQVgKKyNkZWZpbmUgVUlOVF9MRUFTVDhfTUFYICAgVUlOVDhfTUFYCisjZGVmaW5lIFVJTlRfTEVBU1QxNl9NQVggIFVJTlQxNl9NQVgKKyNkZWZpbmUgVUlOVF9MRUFTVDMyX01BWCAgVUlOVDMyX01BWAorI2RlZmluZSBVSU5UX0xFQVNUNjRfTUFYICBVSU5UNjRfTUFYCisKKy8vIDcuMTguMi4zIExpbWl0cyBvZiBmYXN0ZXN0IG1pbmltdW0td2lkdGggaW50ZWdlciB0eXBlcworI2RlZmluZSBJTlRfRkFTVDhfTUlOICAgIElOVDhfTUlOCisjZGVmaW5lIElOVF9GQVNUOF9NQVggICAgSU5UOF9NQVgKKyNkZWZpbmUgSU5UX0ZBU1QxNl9NSU4gICBJTlQxNl9NSU4KKyNkZWZpbmUgSU5UX0ZBU1QxNl9NQVggICBJTlQxNl9NQVgKKyNkZWZpbmUgSU5UX0ZBU1QzMl9NSU4gICBJTlQzMl9NSU4KKyNkZWZpbmUgSU5UX0ZBU1QzMl9NQVggICBJTlQzMl9NQVgKKyNkZWZpbmUgSU5UX0ZBU1Q2NF9NSU4gICBJTlQ2NF9NSU4KKyNkZWZpbmUgSU5UX0ZBU1Q2NF9NQVggICBJTlQ2NF9NQVgKKyNkZWZpbmUgVUlOVF9GQVNUOF9NQVggICBVSU5UOF9NQVgKKyNkZWZpbmUgVUlOVF9GQVNUMTZfTUFYICBVSU5UMTZfTUFYCisjZGVmaW5lIFVJTlRfRkFTVDMyX01BWCAgVUlOVDMyX01BWAorI2RlZmluZSBVSU5UX0ZBU1Q2NF9NQVggIFVJTlQ2NF9NQVgKKworLy8gNy4xOC4yLjQgTGltaXRzIG9mIGludGVnZXIgdHlwZXMgY2FwYWJsZSBvZiBob2xkaW5nIG9iamVjdCBwb2ludGVycworI2lmZGVmIF9XSU42NCAvLyBbCisjICBkZWZpbmUgSU5UUFRSX01JTiAgIElOVDY0X01JTgorIyAgZGVmaW5lIElOVFBUUl9NQVggICBJTlQ2NF9NQVgKKyMgIGRlZmluZSBVSU5UUFRSX01BWCAgVUlOVDY0X01BWAorI2Vsc2UgLy8gX1dJTjY0IF1bCisjICBkZWZpbmUgSU5UUFRSX01JTiAgIElOVDMyX01JTgorIyAgZGVmaW5lIElOVFBUUl9NQVggICBJTlQzMl9NQVgKKyMgIGRlZmluZSBVSU5UUFRSX01BWCAgVUlOVDMyX01BWAorI2VuZGlmIC8vIF9XSU42NCBdCisKKy8vIDcuMTguMi41IExpbWl0cyBvZiBncmVhdGVzdC13aWR0aCBpbnRlZ2VyIHR5cGVzCisjZGVmaW5lIElOVE1BWF9NSU4gICBJTlQ2NF9NSU4KKyNkZWZpbmUgSU5UTUFYX01BWCAgIElOVDY0X01BWAorI2RlZmluZSBVSU5UTUFYX01BWCAgVUlOVDY0X01BWAorCisvLyA3LjE4LjMgTGltaXRzIG9mIG90aGVyIGludGVnZXIgdHlwZXMKKworI2lmZGVmIF9XSU42NCAvLyBbCisjICBkZWZpbmUgUFRSRElGRl9NSU4gIF9JNjRfTUlOCisjICBkZWZpbmUgUFRSRElGRl9NQVggIF9JNjRfTUFYCisjZWxzZSAgLy8gX1dJTjY0IF1bCisjICBkZWZpbmUgUFRSRElGRl9NSU4gIF9JMzJfTUlOCisjICBkZWZpbmUgUFRSRElGRl9NQVggIF9JMzJfTUFYCisjZW5kaWYgIC8vIF9XSU42NCBdCisKKyNkZWZpbmUgU0lHX0FUT01JQ19NSU4gIElOVF9NSU4KKyNkZWZpbmUgU0lHX0FUT01JQ19NQVggIElOVF9NQVgKKworI2lmbmRlZiBTSVpFX01BWCAvLyBbCisjICBpZmRlZiBfV0lONjQgLy8gWworIyAgICAgZGVmaW5lIFNJWkVfTUFYICBfVUk2NF9NQVgKKyMgIGVsc2UgLy8gX1dJTjY0IF1bCisjICAgICBkZWZpbmUgU0laRV9NQVggIF9VSTMyX01BWAorIyAgZW5kaWYgLy8gX1dJTjY0IF0KKyNlbmRpZiAvLyBTSVpFX01BWCBdCisKKy8vIFdDSEFSX01JTiBhbmQgV0NIQVJfTUFYIGFyZSBhbHNvIGRlZmluZWQgaW4gPHdjaGFyLmg+CisjaWZuZGVmIFdDSEFSX01JTiAvLyBbCisjICBkZWZpbmUgV0NIQVJfTUlOICAwCisjZW5kaWYgIC8vIFdDSEFSX01JTiBdCisjaWZuZGVmIFdDSEFSX01BWCAvLyBbCisjICBkZWZpbmUgV0NIQVJfTUFYICBfVUkxNl9NQVgKKyNlbmRpZiAgLy8gV0NIQVJfTUFYIF0KKworI2RlZmluZSBXSU5UX01JTiAgMAorI2RlZmluZSBXSU5UX01BWCAgX1VJMTZfTUFYCisKKyNlbmRpZiAvLyBfX1NURENfTElNSVRfTUFDUk9TIF0KKworCisvLyA3LjE4LjQgTGltaXRzIG9mIG90aGVyIGludGVnZXIgdHlwZXMKKworI2lmICFkZWZpbmVkKF9fY3BsdXNwbHVzKSB8fCBkZWZpbmVkKF9fU1REQ19DT05TVEFOVF9NQUNST1MpIC8vIFsgICBTZWUgZm9vdG5vdGUgMjI0IGF0IHBhZ2UgMjYwCisKKy8vIDcuMTguNC4xIE1hY3JvcyBmb3IgbWluaW11bS13aWR0aCBpbnRlZ2VyIGNvbnN0YW50cworCisjZGVmaW5lIElOVDhfQyh2YWwpICB2YWwjI2k4CisjZGVmaW5lIElOVDE2X0ModmFsKSB2YWwjI2kxNgorI2RlZmluZSBJTlQzMl9DKHZhbCkgdmFsIyNpMzIKKyNkZWZpbmUgSU5UNjRfQyh2YWwpIHZhbCMjaTY0CisKKyNkZWZpbmUgVUlOVDhfQyh2YWwpICB2YWwjI3VpOAorI2RlZmluZSBVSU5UMTZfQyh2YWwpIHZhbCMjdWkxNgorI2RlZmluZSBVSU5UMzJfQyh2YWwpIHZhbCMjdWkzMgorI2RlZmluZSBVSU5UNjRfQyh2YWwpIHZhbCMjdWk2NAorCisvLyA3LjE4LjQuMiBNYWNyb3MgZm9yIGdyZWF0ZXN0LXdpZHRoIGludGVnZXIgY29uc3RhbnRzCisjZGVmaW5lIElOVE1BWF9DICAgSU5UNjRfQworI2RlZmluZSBVSU5UTUFYX0MgIFVJTlQ2NF9DCisKKyNlbmRpZiAvLyBfX1NURENfQ09OU1RBTlRfTUFDUk9TIF0KKworCisjZW5kaWYgLy8gX01TQ19TVERJTlRfSF8gXQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9SRUFETUUudHh0IGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9SRUFETUUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3YjZmZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL1JFQURNRS50eHQKQEAgLTAsMCArMSwxNSBAQAorCisKK1RoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIGV4dGVuZGVkIHRlc3RzIGFuZCBhIGJlbmNobWFyayBhZ2FpbnN0IGRlY2ltYWwucHk6CisKKyAgYmVuY2gucHkgIC0+ICBCZW5jaG1hcmsgZm9yIHNtYWxsIGFuZCBsYXJnZSBwcmVjaXNpb25zLgorICBVc2FnZTogLi4vLi4vLi4vcHl0aG9uIGJlbmNoLnB5CisKKyAgZm9ybWF0aGVscGVyLnB5ICAgLT4KKyAgcmFuZGRlYy5weSAgICAgICAgLT4gIEdlbmVyYXRlIHRlc3QgY2FzZXMgZm9yIGRlY2NoZWNrLnB5LgorICByYW5kZmxvYXQucHkgICAgICAtPgorCisgIGRlY2NoZWNrLnB5ICAtPiAgUnVuIGV4dGVuZGVkIHRlc3RzLgorICBVc2FnZTogLi4vLi4vLi4vcHl0aG9uIGRlY2NoZWNrLnB5IFstLXNob3J0fC0tbWVkaXVtfC0tbG9uZ3wtLWFsbF0KKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2JlbmNoLnB5IGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9iZW5jaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTRhMjEwCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9iZW5jaC5weQpAQCAtMCwwICsxLDEzNSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTIgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjIE1vZGlmaWVkIGFuZCBleHRlbmRlZCBieSBTdGVmYW4gS3JhaC4KKyMKKworIyBVc2FnZTogLi4vLi4vLi4vcHl0aG9uIGJlbmNoLnB5CisKKworaW1wb3J0IHRpbWUKK2Zyb20gbWF0aCBpbXBvcnQgbG9nLCBjZWlsCit0cnk6CisgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9mcmVzaF9tb2R1bGUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIHRlc3QudGVzdF9zdXBwb3J0IGltcG9ydCBpbXBvcnRfZnJlc2hfbW9kdWxlCisKK0MgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdkZWNpbWFsJywgZnJlc2g9WydfZGVjaW1hbCddKQorUCA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBibG9ja2VkPVsnX2RlY2ltYWwnXSkKKworIworIyBOT1RFOiBUaGlzIGlzIHRoZSBwaSBmdW5jdGlvbiBmcm9tIHRoZSBkZWNpbWFsIGRvY3VtZW50YXRpb24sIG1vZGlmaWVkCisjIGZvciBiZW5jaG1hcmtpbmcgcHVycG9zZXMuIFNpbmNlIGZsb2F0cyBkbyBub3QgaGF2ZSBhIGNvbnRleHQsIHRoZSBoaWdoZXIKKyMgaW50ZXJtZWRpYXRlIHByZWNpc2lvbiBmcm9tIHRoZSBvcmlnaW5hbCBpcyBOT1QgdXNlZCwgc28gdGhlIG1vZGlmaWVkCisjIGFsZ29yaXRobSBvbmx5IGdpdmVzIGFuIGFwcHJveGltYXRpb24gdG8gdGhlIGNvcnJlY3RseSByb3VuZGVkIHJlc3VsdC4KKyMgRm9yIHNlcmlvdXMgdXNlLCByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBvciB0aGUgYXBwcm9wcmlhdGUgbGl0ZXJhdHVyZS4KKyMKK2RlZiBwaV9mbG9hdCgpOgorICAgICIiIm5hdGl2ZSBmbG9hdCIiIgorICAgIGxhc3RzLCB0LCBzLCBuLCBuYSwgZCwgZGEgPSAwLCAzLjAsIDMsIDEsIDAsIDAsIDI0CisgICAgd2hpbGUgcyAhPSBsYXN0czoKKyAgICAgICAgbGFzdHMgPSBzCisgICAgICAgIG4sIG5hID0gbituYSwgbmErOAorICAgICAgICBkLCBkYSA9IGQrZGEsIGRhKzMyCisgICAgICAgIHQgPSAodCAqIG4pIC8gZAorICAgICAgICBzICs9IHQKKyAgICByZXR1cm4gcworCitkZWYgcGlfY2RlY2ltYWwoKToKKyAgICAiIiJjZGVjaW1hbCIiIgorICAgIEQgPSBDLkRlY2ltYWwKKyAgICBsYXN0cywgdCwgcywgbiwgbmEsIGQsIGRhID0gRCgwKSwgRCgzKSwgRCgzKSwgRCgxKSwgRCgwKSwgRCgwKSwgRCgyNCkKKyAgICB3aGlsZSBzICE9IGxhc3RzOgorICAgICAgICBsYXN0cyA9IHMKKyAgICAgICAgbiwgbmEgPSBuK25hLCBuYSs4CisgICAgICAgIGQsIGRhID0gZCtkYSwgZGErMzIKKyAgICAgICAgdCA9ICh0ICogbikgLyBkCisgICAgICAgIHMgKz0gdAorICAgIHJldHVybiBzCisKK2RlZiBwaV9kZWNpbWFsKCk6CisgICAgIiIiZGVjaW1hbCIiIgorICAgIEQgPSBQLkRlY2ltYWwKKyAgICBsYXN0cywgdCwgcywgbiwgbmEsIGQsIGRhID0gRCgwKSwgRCgzKSwgRCgzKSwgRCgxKSwgRCgwKSwgRCgwKSwgRCgyNCkKKyAgICB3aGlsZSBzICE9IGxhc3RzOgorICAgICAgICBsYXN0cyA9IHMKKyAgICAgICAgbiwgbmEgPSBuK25hLCBuYSs4CisgICAgICAgIGQsIGRhID0gZCtkYSwgZGErMzIKKyAgICAgICAgdCA9ICh0ICogbikgLyBkCisgICAgICAgIHMgKz0gdAorICAgIHJldHVybiBzCisKK2RlZiBmYWN0b3JpYWwobiwgbSk6CisgICAgaWYgKG4gPiBtKToKKyAgICAgICAgcmV0dXJuIGZhY3RvcmlhbChtLCBuKQorICAgIGVsaWYgbSA9PSAwOgorICAgICAgICByZXR1cm4gMQorICAgIGVsaWYgbiA9PSBtOgorICAgICAgICByZXR1cm4gbgorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBmYWN0b3JpYWwobiwgKG4rbSkvLzIpICogZmFjdG9yaWFsKChuK20pLy8yICsgMSwgbSkKKworCitwcmludCgiXG4jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQorcHJpbnQoIiMgICAgICAgICAgICAgICAgICAgQ2FsY3VsYXRpbmcgcGksIDEwMDAwIGl0ZXJhdGlvbnMiKQorcHJpbnQoIiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIikKKwordG9fYmVuY2htYXJrID0gW3BpX2Zsb2F0LCBwaV9kZWNpbWFsXQoraWYgQyBpcyBub3QgTm9uZToKKyAgICB0b19iZW5jaG1hcmsuaW5zZXJ0KDEsIHBpX2NkZWNpbWFsKQorCitmb3IgcHJlYyBpbiBbOSwgMTldOgorICAgIHByaW50KCJcblByZWNpc2lvbjogJWQgZGVjaW1hbCBkaWdpdHNcbiIgJSBwcmVjKQorICAgIGZvciBmdW5jIGluIHRvX2JlbmNobWFyazoKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICBpZiBDIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgQy5nZXRjb250ZXh0KCkucHJlYyA9IHByZWMKKyAgICAgICAgUC5nZXRjb250ZXh0KCkucHJlYyA9IHByZWMKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMDApOgorICAgICAgICAgICAgeCA9IGZ1bmMoKQorICAgICAgICBwcmludCgiJXM6IiAlIGZ1bmMuX19uYW1lX18ucmVwbGFjZSgicGlfIiwgIiIpKQorICAgICAgICBwcmludCgicmVzdWx0OiAlcyIgJSBzdHIoeCkpCisgICAgICAgIHByaW50KCJ0aW1lOiAlZnNcbiIgJSAodGltZS50aW1lKCktc3RhcnQpKQorCisKK3ByaW50KCJcbiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpCitwcmludCgiIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWN0b3JpYWwiKQorcHJpbnQoIiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIikKKworaWYgQyBpcyBub3QgTm9uZToKKyAgICBjID0gQy5nZXRjb250ZXh0KCkKKyAgICBjLnByZWMgPSBDLk1BWF9QUkVDCisgICAgYy5FbWF4ID0gQy5NQVhfRU1BWAorICAgIGMuRW1pbiA9IEMuTUlOX0VNSU4KKworZm9yIG4gaW4gWzEwMDAwMCwgMTAwMDAwMF06CisKKyAgICBwcmludCgibiA9ICVkXG4iICUgbikKKworICAgIGlmIEMgaXMgbm90IE5vbmU6CisgICAgICAgICMgQyB2ZXJzaW9uIG9mIGRlY2ltYWwKKyAgICAgICAgc3RhcnRfY2FsYyA9IHRpbWUudGltZSgpCisgICAgICAgIHggPSBmYWN0b3JpYWwoQy5EZWNpbWFsKG4pLCAwKQorICAgICAgICBlbmRfY2FsYyA9IHRpbWUudGltZSgpCisgICAgICAgIHN0YXJ0X2NvbnYgPSB0aW1lLnRpbWUoKQorICAgICAgICBzeCA9IHN0cih4KQorICAgICAgICBlbmRfY29udiA9IHRpbWUudGltZSgpCisgICAgICAgIHByaW50KCJjZGVjaW1hbDoiKQorICAgICAgICBwcmludCgiY2FsY3VsYXRpb24gdGltZTogJWZzIiAlIChlbmRfY2FsYy1zdGFydF9jYWxjKSkKKyAgICAgICAgcHJpbnQoImNvbnZlcnNpb24gdGltZTogJWZzXG4iICUgKGVuZF9jb252LXN0YXJ0X2NvbnYpKQorCisgICAgIyBQeXRob24gaW50ZWdlcnMKKyAgICBzdGFydF9jYWxjID0gdGltZS50aW1lKCkKKyAgICB5ID0gZmFjdG9yaWFsKG4sIDApCisgICAgZW5kX2NhbGMgPSB0aW1lLnRpbWUoKQorICAgIHN0YXJ0X2NvbnYgPSB0aW1lLnRpbWUoKQorICAgIHN5ID0gc3RyKHkpCisgICAgZW5kX2NvbnYgPSAgdGltZS50aW1lKCkKKworICAgIHByaW50KCJpbnQ6IikKKyAgICBwcmludCgiY2FsY3VsYXRpb24gdGltZTogJWZzIiAlIChlbmRfY2FsYy1zdGFydF9jYWxjKSkKKyAgICBwcmludCgiY29udmVyc2lvbiB0aW1lOiAlZnNcblxuIiAlIChlbmRfY29udi1zdGFydF9jb252KSkKKworICAgIGlmIEMgaXMgbm90IE5vbmU6CisgICAgICAgIGFzc2VydChzeCA9PSBzeSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvYmlnbnVtLnB5IGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9iaWdudW0ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY3ZTE2MQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvYmlnbnVtLnB5CkBAIC0wLDAgKzEsNDIgQEAKKyMKKyMgVGhlc2UgdGVzdHMgcmVxdWlyZSBnbXB5IGFuZCB0ZXN0IHRoZSBsaW1pdHMgb2YgdGhlIDMyLWJpdCBidWlsZC4gVGhlCisjIGxpbWl0cyBvZiB0aGUgNjQtYml0IGJ1aWxkIGFyZSBzbyBsYXJnZSB0aGF0IHRoZXkgY2Fubm90IGJlIHRlc3RlZAorIyBvbiBhY2Nlc3NpYmxlIGhhcmR3YXJlLgorIworCitpbXBvcnQgc3lzCitmcm9tIGRlY2ltYWwgaW1wb3J0ICoKK2Zyb20gZ21weSBpbXBvcnQgbXB6CisKKworX1B5SEFTSF9NT0RVTFVTID0gc3lzLmhhc2hfaW5mby5tb2R1bHVzCisjIGhhc2ggdmFsdWVzIHRvIHVzZSBmb3IgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGluZmluaXRpZXMsIGFuZCBuYW5zCitfUHlIQVNIX0lORiA9IHN5cy5oYXNoX2luZm8uaW5mCitfUHlIQVNIX05BTiA9IHN5cy5oYXNoX2luZm8ubmFuCisKKyMgX1B5SEFTSF8xMElOViBpcyB0aGUgaW52ZXJzZSBvZiAxMCBtb2R1bG8gdGhlIHByaW1lIF9QeUhBU0hfTU9EVUxVUworX1B5SEFTSF8xMElOViA9IHBvdygxMCwgX1B5SEFTSF9NT0RVTFVTIC0gMiwgX1B5SEFTSF9NT0RVTFVTKQorCitkZWYgeGhhc2goY29lZmYsIGV4cCk6CisgICAgc2lnbiA9IDEKKyAgICBpZiBjb2VmZiA8IDA6CisgICAgICAgIHNpZ24gPSAtMQorICAgICAgICBjb2VmZiA9IC1jb2VmZgorICAgIGlmIGV4cCA+PSAwOgorICAgICAgICBleHBfaGFzaCA9IHBvdygxMCwgZXhwLCBfUHlIQVNIX01PRFVMVVMpCisgICAgZWxzZToKKyAgICAgICAgZXhwX2hhc2ggPSBwb3coX1B5SEFTSF8xMElOViwgLWV4cCwgX1B5SEFTSF9NT0RVTFVTKQorICAgIGhhc2hfID0gY29lZmYgKiBleHBfaGFzaCAlIF9QeUhBU0hfTU9EVUxVUworICAgIGFucyA9IGhhc2hfIGlmIHNpZ24gPT0gMSBlbHNlIC1oYXNoXworICAgIHJldHVybiAtMiBpZiBhbnMgPT0gLTEgZWxzZSBhbnMKKworCit4ID0gbXB6KDEwKSAqKiA0MjUwMDAwMDAgLSAxCitjb2VmZiA9IGludCh4KQorCitkID0gRGVjaW1hbCgnOScgKiA0MjUwMDAwMDAgKyAnZS04NDk5OTk5OTknKQorCitoMSA9IHhoYXNoKGNvZWZmLCAtODQ5OTk5OTk5KQoraDIgPSBoYXNoKGQpCisKK2Fzc2VydCBoMiA9PSBoMQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weSBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI4NTNhZAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKQEAgLTAsMCArMSwxMTAxIEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIworIyBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisjIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisjIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisjIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisjIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyMgU1VDSCBEQU1BR0UuCisjCisKKyMKKyMgVXNhZ2U6IHB5dGhvbiBkZWNjaGVjay5weSBbLS1zaG9ydHwtLW1lZGl1bXwtLWxvbmd8LS1hbGxdCisjCisKK2ltcG9ydCBzeXMsIHJhbmRvbQorZnJvbSBjb3B5IGltcG9ydCBjb3B5Citmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9mcmVzaF9tb2R1bGUKK2Zyb20gcmFuZGRlYyBpbXBvcnQgcmFuZGZsb2F0LCBhbGxfdW5hcnksIGFsbF9iaW5hcnksIGFsbF90ZXJuYXJ5Citmcm9tIHJhbmRkZWMgaW1wb3J0IHVuYXJ5X29wdGFyZywgYmluYXJ5X29wdGFyZywgdGVybmFyeV9vcHRhcmcKK2Zyb20gZm9ybWF0aGVscGVyIGltcG9ydCByYW5kX2Zvcm1hdCwgcmFuZF9sb2NhbGUKKworQyA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBmcmVzaD1bJ19kZWNpbWFsJ10pCitQID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZGVjaW1hbCcsIGJsb2NrZWQ9WydfZGVjaW1hbCddKQorRVhJVF9TVEFUVVMgPSAwCisKKworIyBDb250YWlucyBhbGwgY2F0ZWdvcmllcyBvZiBEZWNpbWFsIG1ldGhvZHMuCitGdW5jdGlvbnMgPSB7CisgICAgIyBQbGFpbiB1bmFyeToKKyAgICAndW5hcnknOiAoCisgICAgICAgICdfX2Fic19fJywgJ19fYm9vbF9fJywgJ19fY2VpbF9fJywgJ19fY29tcGxleF9fJywgJ19fY29weV9fJywKKyAgICAgICAgJ19fZmxvb3JfXycsICdfX2Zsb2F0X18nLCAnX19oYXNoX18nLCAnX19pbnRfXycsICdfX25lZ19fJywKKyAgICAgICAgJ19fcG9zX18nLCAnX19yZWR1Y2VfXycsICdfX3JlcHJfXycsICdfX3N0cl9fJywgJ19fdHJ1bmNfXycsCisgICAgICAgICdhZGp1c3RlZCcsICdhc190dXBsZScsICdjYW5vbmljYWwnLCAnY29uanVnYXRlJywgJ2NvcHlfYWJzJywKKyAgICAgICAgJ2NvcHlfbmVnYXRlJywgJ2lzX2Nhbm9uaWNhbCcsICdpc19maW5pdGUnLCAnaXNfaW5maW5pdGUnLAorICAgICAgICAnaXNfbmFuJywgJ2lzX3FuYW4nLCAnaXNfc2lnbmVkJywgJ2lzX3NuYW4nLCAnaXNfemVybycsICdyYWRpeCcKKyAgICApLAorICAgICMgVW5hcnkgd2l0aCBvcHRpb25hbCBjb250ZXh0OgorICAgICd1bmFyeV9jdHgnOiAoCisgICAgICAgICdleHAnLCAnaXNfbm9ybWFsJywgJ2lzX3N1Ym5vcm1hbCcsICdsbicsICdsb2cxMCcsICdsb2diJywKKyAgICAgICAgJ2xvZ2ljYWxfaW52ZXJ0JywgJ25leHRfbWludXMnLCAnbmV4dF9wbHVzJywgJ25vcm1hbGl6ZScsCisgICAgICAgICdudW1iZXJfY2xhc3MnLCAnc3FydCcsICd0b19lbmdfc3RyaW5nJworICAgICksCisgICAgIyBVbmFyeSB3aXRoIG9wdGlvbmFsIHJvdW5kaW5nIG1vZGUgYW5kIGNvbnRleHQ6CisgICAgJ3VuYXJ5X3JuZF9jdHgnOiAoJ3RvX2ludGVncmFsJywgJ3RvX2ludGVncmFsX2V4YWN0JywgJ3RvX2ludGVncmFsX3ZhbHVlJyksCisgICAgIyBQbGFpbiBiaW5hcnk6CisgICAgJ2JpbmFyeSc6ICgKKyAgICAgICAgJ19fYWRkX18nLCAnX19kaXZtb2RfXycsICdfX2VxX18nLCAnX19mbG9vcmRpdl9fJywgJ19fZ2VfXycsICdfX2d0X18nLAorICAgICAgICAnX19sZV9fJywgJ19fbHRfXycsICdfX21vZF9fJywgJ19fbXVsX18nLCAnX19uZV9fJywgJ19fcG93X18nLAorICAgICAgICAnX19yYWRkX18nLCAnX19yZGl2bW9kX18nLCAnX19yZmxvb3JkaXZfXycsICdfX3Jtb2RfXycsICdfX3JtdWxfXycsCisgICAgICAgICdfX3Jwb3dfXycsICdfX3JzdWJfXycsICdfX3J0cnVlZGl2X18nLCAnX19zdWJfXycsICdfX3RydWVkaXZfXycsCisgICAgICAgICdjb21wYXJlX3RvdGFsJywgJ2NvbXBhcmVfdG90YWxfbWFnJywgJ2NvcHlfc2lnbicsICdxdWFudGl6ZScsCisgICAgICAgICdzYW1lX3F1YW50dW0nCisgICAgKSwKKyAgICAjIEJpbmFyeSB3aXRoIG9wdGlvbmFsIGNvbnRleHQ6CisgICAgJ2JpbmFyeV9jdHgnOiAoCisgICAgICAgICdjb21wYXJlJywgJ2NvbXBhcmVfc2lnbmFsJywgJ2xvZ2ljYWxfYW5kJywgJ2xvZ2ljYWxfb3InLCAnbG9naWNhbF94b3InLAorICAgICAgICAnbWF4JywgJ21heF9tYWcnLCAnbWluJywgJ21pbl9tYWcnLCAnbmV4dF90b3dhcmQnLCAncmVtYWluZGVyX25lYXInLAorICAgICAgICAncm90YXRlJywgJ3NjYWxlYicsICdzaGlmdCcKKyAgICApLAorICAgICMgUGxhaW4gdGVybmFyeToKKyAgICAndGVybmFyeSc6ICgnX19wb3dfXycsKSwKKyAgICAjIFRlcm5hcnkgd2l0aCBvcHRpb25hbCBjb250ZXh0OgorICAgICd0ZXJuYXJ5X2N0eCc6ICgnZm1hJywpLAorICAgICMgU3BlY2lhbDoKKyAgICAnc3BlY2lhbCc6ICgnX19mb3JtYXRfXycsICdfX3JlZHVjZV9leF9fJywgJ19fcm91bmRfXycsICdmcm9tX2Zsb2F0JywKKyAgICAgICAgICAgICAgICAncXVhbnRpemUnKSwKKyAgICAjIFByb3BlcnRpZXM6CisgICAgJ3Byb3BlcnR5JzogKCdyZWFsJywgJ2ltYWcnKQorfQorCisjIENvbnRhaW5zIGFsbCBjYXRlZ29yaWVzIG9mIENvbnRleHQgbWV0aG9kcy4gVGhlIG4tYXJ5IGNsYXNzaWZpY2F0aW9uCisjIGFwcGxpZXMgdG8gdGhlIG51bWJlciBvZiBEZWNpbWFsIGFyZ3VtZW50cy4KK0NvbnRleHRGdW5jdGlvbnMgPSB7CisgICAgIyBQbGFpbiBudWxsYXJ5OgorICAgICdudWxsYXJ5JzogKCdjb250ZXh0Ll9faGFzaF9fJywgJ2NvbnRleHQuX19yZWR1Y2VfXycsICdjb250ZXh0LnJhZGl4JyksCisgICAgIyBQbGFpbiB1bmFyeToKKyAgICAndW5hcnknOiAoJ2NvbnRleHQuYWJzJywgJ2NvbnRleHQuY2Fub25pY2FsJywgJ2NvbnRleHQuY29weV9hYnMnLAorICAgICAgICAgICAgICAnY29udGV4dC5jb3B5X2RlY2ltYWwnLCAnY29udGV4dC5jb3B5X25lZ2F0ZScsCisgICAgICAgICAgICAgICdjb250ZXh0LmNyZWF0ZV9kZWNpbWFsJywgJ2NvbnRleHQuZXhwJywgJ2NvbnRleHQuaXNfY2Fub25pY2FsJywKKyAgICAgICAgICAgICAgJ2NvbnRleHQuaXNfZmluaXRlJywgJ2NvbnRleHQuaXNfaW5maW5pdGUnLCAnY29udGV4dC5pc19uYW4nLAorICAgICAgICAgICAgICAnY29udGV4dC5pc19ub3JtYWwnLCAnY29udGV4dC5pc19xbmFuJywgJ2NvbnRleHQuaXNfc2lnbmVkJywKKyAgICAgICAgICAgICAgJ2NvbnRleHQuaXNfc25hbicsICdjb250ZXh0LmlzX3N1Ym5vcm1hbCcsICdjb250ZXh0LmlzX3plcm8nLAorICAgICAgICAgICAgICAnY29udGV4dC5sbicsICdjb250ZXh0LmxvZzEwJywgJ2NvbnRleHQubG9nYicsCisgICAgICAgICAgICAgICdjb250ZXh0LmxvZ2ljYWxfaW52ZXJ0JywgJ2NvbnRleHQubWludXMnLCAnY29udGV4dC5uZXh0X21pbnVzJywKKyAgICAgICAgICAgICAgJ2NvbnRleHQubmV4dF9wbHVzJywgJ2NvbnRleHQubm9ybWFsaXplJywgJ2NvbnRleHQubnVtYmVyX2NsYXNzJywKKyAgICAgICAgICAgICAgJ2NvbnRleHQucGx1cycsICdjb250ZXh0LnNxcnQnLCAnY29udGV4dC50b19lbmdfc3RyaW5nJywKKyAgICAgICAgICAgICAgJ2NvbnRleHQudG9faW50ZWdyYWwnLCAnY29udGV4dC50b19pbnRlZ3JhbF9leGFjdCcsCisgICAgICAgICAgICAgICdjb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlJywgJ2NvbnRleHQudG9fc2NpX3N0cmluZycKKyAgICApLAorICAgICMgUGxhaW4gYmluYXJ5OgorICAgICdiaW5hcnknOiAoJ2NvbnRleHQuYWRkJywgJ2NvbnRleHQuY29tcGFyZScsICdjb250ZXh0LmNvbXBhcmVfc2lnbmFsJywKKyAgICAgICAgICAgICAgICdjb250ZXh0LmNvbXBhcmVfdG90YWwnLCAnY29udGV4dC5jb21wYXJlX3RvdGFsX21hZycsCisgICAgICAgICAgICAgICAnY29udGV4dC5jb3B5X3NpZ24nLCAnY29udGV4dC5kaXZpZGUnLCAnY29udGV4dC5kaXZpZGVfaW50JywKKyAgICAgICAgICAgICAgICdjb250ZXh0LmRpdm1vZCcsICdjb250ZXh0LmxvZ2ljYWxfYW5kJywgJ2NvbnRleHQubG9naWNhbF9vcicsCisgICAgICAgICAgICAgICAnY29udGV4dC5sb2dpY2FsX3hvcicsICdjb250ZXh0Lm1heCcsICdjb250ZXh0Lm1heF9tYWcnLAorICAgICAgICAgICAgICAgJ2NvbnRleHQubWluJywgJ2NvbnRleHQubWluX21hZycsICdjb250ZXh0Lm11bHRpcGx5JywKKyAgICAgICAgICAgICAgICdjb250ZXh0Lm5leHRfdG93YXJkJywgJ2NvbnRleHQucG93ZXInLCAnY29udGV4dC5xdWFudGl6ZScsCisgICAgICAgICAgICAgICAnY29udGV4dC5yZW1haW5kZXInLCAnY29udGV4dC5yZW1haW5kZXJfbmVhcicsICdjb250ZXh0LnJvdGF0ZScsCisgICAgICAgICAgICAgICAnY29udGV4dC5zYW1lX3F1YW50dW0nLCAnY29udGV4dC5zY2FsZWInLCAnY29udGV4dC5zaGlmdCcsCisgICAgICAgICAgICAgICAnY29udGV4dC5zdWJ0cmFjdCcKKyAgICApLAorICAgICMgUGxhaW4gdGVybmFyeToKKyAgICAndGVybmFyeSc6ICgnY29udGV4dC5mbWEnLCAnY29udGV4dC5wb3dlcicpLAorICAgICMgU3BlY2lhbDoKKyAgICAnc3BlY2lhbCc6ICgnY29udGV4dC5fX3JlZHVjZV9leF9fJywgJ2NvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCcpCit9CisKKyMgRnVuY3Rpb25zIHRoYXQgcmVxdWlyZSBhIHJlc3RyaWN0ZWQgZXhwb25lbnQgcmFuZ2UgZm9yIHJlYXNvbmFibGUgcnVudGltZXMuCitVbmFyeVJlc3RyaWN0ZWQgPSBbCisgICdfX2NlaWxfXycsICdfX2Zsb29yX18nLCAnX19pbnRfXycsICdfX2xvbmdfXycsICdfX3RydW5jX18nLAorICAndG9faW50ZWdyYWwnLCAndG9faW50ZWdyYWxfdmFsdWUnCitdCisKK0JpbmFyeVJlc3RyaWN0ZWQgPSBbJ19fcm91bmRfXyddCisKK1Rlcm5hcnlSZXN0cmljdGVkID0gWydfX3Bvd19fJywgJ2NvbnRleHQucG93ZXInXQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlmaWVkIENvbnRleHQKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIFRyYW5zbGF0ZSBzeW1ib2xzLgorQ29uZE1hcCA9IHsKKyAgICAgICAgQy5DbGFtcGVkOiAgICAgICAgICAgICBQLkNsYW1wZWQsCisgICAgICAgIEMuQ29udmVyc2lvblN5bnRheDogICAgUC5Db252ZXJzaW9uU3ludGF4LAorICAgICAgICBDLkRpdmlzaW9uQnlaZXJvOiAgICAgIFAuRGl2aXNpb25CeVplcm8sCisgICAgICAgIEMuRGl2aXNpb25JbXBvc3NpYmxlOiAgUC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICBDLkRpdmlzaW9uVW5kZWZpbmVkOiAgIFAuRGl2aXNpb25VbmRlZmluZWQsCisgICAgICAgIEMuSW5leGFjdDogICAgICAgICAgICAgUC5JbmV4YWN0LAorICAgICAgICBDLkludmFsaWRDb250ZXh0OiAgICAgIFAuSW52YWxpZENvbnRleHQsCisgICAgICAgIEMuSW52YWxpZE9wZXJhdGlvbjogICAgUC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICBDLk92ZXJmbG93OiAgICAgICAgICAgIFAuT3ZlcmZsb3csCisgICAgICAgIEMuUm91bmRlZDogICAgICAgICAgICAgUC5Sb3VuZGVkLAorICAgICAgICBDLlN1Ym5vcm1hbDogICAgICAgICAgIFAuU3Vibm9ybWFsLAorICAgICAgICBDLlVuZGVyZmxvdzogICAgICAgICAgIFAuVW5kZXJmbG93LAorICAgICAgICBDLkZsb2F0T3BlcmF0aW9uOiAgICAgIFAuRmxvYXRPcGVyYXRpb24sCit9CisKK1JvdW5kTW9kZXMgPSBbQy5ST1VORF9VUCwgQy5ST1VORF9ET1dOLCBDLlJPVU5EX0NFSUxJTkcsIEMuUk9VTkRfRkxPT1IsCisgICAgICAgICAgICAgIEMuUk9VTkRfSEFMRl9VUCwgQy5ST1VORF9IQUxGX0RPV04sIEMuUk9VTkRfSEFMRl9FVkVOLAorICAgICAgICAgICAgICBDLlJPVU5EXzA1VVBdCisKKworY2xhc3MgQ29udGV4dChvYmplY3QpOgorICAgICIiIlByb3ZpZGVzIGEgY29udmVuaWVudCB3YXkgb2Ygc3luY2luZyB0aGUgQyBhbmQgUCBjb250ZXh0cyIiIgorCisgICAgX19zbG90c19fID0gWydjJywgJ3AnXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNfY3R4PU5vbmUsIHBfY3R4PU5vbmUpOgorICAgICAgICAiIiJJbml0aWFsaXphdGlvbiBpcyBmcm9tIHRoZSBDIGNvbnRleHQiIiIKKyAgICAgICAgc2VsZi5jID0gQy5nZXRjb250ZXh0KCkgaWYgY19jdHggaXMgTm9uZSBlbHNlIGNfY3R4CisgICAgICAgIHNlbGYucCA9IFAuZ2V0Y29udGV4dCgpIGlmIHBfY3R4IGlzIE5vbmUgZWxzZSBwX2N0eAorICAgICAgICBzZWxmLnAucHJlYyA9IHNlbGYuYy5wcmVjCisgICAgICAgIHNlbGYucC5FbWluID0gc2VsZi5jLkVtaW4KKyAgICAgICAgc2VsZi5wLkVtYXggPSBzZWxmLmMuRW1heAorICAgICAgICBzZWxmLnAucm91bmRpbmcgPSBzZWxmLmMucm91bmRpbmcKKyAgICAgICAgc2VsZi5wLmNhcGl0YWxzID0gc2VsZi5jLmNhcGl0YWxzCisgICAgICAgIHNlbGYuc2V0dHJhcHMoW3NpZyBmb3Igc2lnIGluIHNlbGYuYy50cmFwcyBpZiBzZWxmLmMudHJhcHNbc2lnXV0pCisgICAgICAgIHNlbGYuc2V0c3RhdHVzKFtzaWcgZm9yIHNpZyBpbiBzZWxmLmMuZmxhZ3MgaWYgc2VsZi5jLmZsYWdzW3NpZ11dKQorICAgICAgICBzZWxmLnAuY2xhbXAgPSBzZWxmLmMuY2xhbXAKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc3RyKHNlbGYuYykgKyAnXG4nICsgc3RyKHNlbGYucCkKKworICAgIGRlZiBnZXRwcmVjKHNlbGYpOgorICAgICAgICBhc3NlcnQoc2VsZi5jLnByZWMgPT0gc2VsZi5wLnByZWMpCisgICAgICAgIHJldHVybiBzZWxmLmMucHJlYworCisgICAgZGVmIHNldHByZWMoc2VsZiwgdmFsKToKKyAgICAgICAgc2VsZi5jLnByZWMgPSB2YWwKKyAgICAgICAgc2VsZi5wLnByZWMgPSB2YWwKKworICAgIGRlZiBnZXRlbWluKHNlbGYpOgorICAgICAgICBhc3NlcnQoc2VsZi5jLkVtaW4gPT0gc2VsZi5wLkVtaW4pCisgICAgICAgIHJldHVybiBzZWxmLmMuRW1pbgorCisgICAgZGVmIHNldGVtaW4oc2VsZiwgdmFsKToKKyAgICAgICAgc2VsZi5jLkVtaW4gPSB2YWwKKyAgICAgICAgc2VsZi5wLkVtaW4gPSB2YWwKKworICAgIGRlZiBnZXRlbWF4KHNlbGYpOgorICAgICAgICBhc3NlcnQoc2VsZi5jLkVtYXggPT0gc2VsZi5wLkVtYXgpCisgICAgICAgIHJldHVybiBzZWxmLmMuRW1heAorCisgICAgZGVmIHNldGVtYXgoc2VsZiwgdmFsKToKKyAgICAgICAgc2VsZi5jLkVtYXggPSB2YWwKKyAgICAgICAgc2VsZi5wLkVtYXggPSB2YWwKKworICAgIGRlZiBnZXRyb3VuZChzZWxmKToKKyAgICAgICAgYXNzZXJ0KHNlbGYuYy5yb3VuZGluZyA9PSBzZWxmLnAucm91bmRpbmcpCisgICAgICAgIHJldHVybiBzZWxmLmMucm91bmRpbmcKKworICAgIGRlZiBzZXRyb3VuZChzZWxmLCB2YWwpOgorICAgICAgICBzZWxmLmMucm91bmRpbmcgPSB2YWwKKyAgICAgICAgc2VsZi5wLnJvdW5kaW5nID0gdmFsCisKKyAgICBkZWYgZ2V0Y2FwaXRhbHMoc2VsZik6CisgICAgICAgIGFzc2VydChzZWxmLmMuY2FwaXRhbHMgPT0gc2VsZi5wLmNhcGl0YWxzKQorICAgICAgICByZXR1cm4gc2VsZi5jLmNhcGl0YWxzCisKKyAgICBkZWYgc2V0Y2FwaXRhbHMoc2VsZiwgdmFsKToKKyAgICAgICAgc2VsZi5jLmNhcGl0YWxzID0gdmFsCisgICAgICAgIHNlbGYucC5jYXBpdGFscyA9IHZhbAorCisgICAgZGVmIGdldGNsYW1wKHNlbGYpOgorICAgICAgICBhc3NlcnQoc2VsZi5jLmNsYW1wID09IHNlbGYucC5jbGFtcCkKKyAgICAgICAgcmV0dXJuIHNlbGYuYy5jbGFtcAorCisgICAgZGVmIHNldGNsYW1wKHNlbGYsIHZhbCk6CisgICAgICAgIHNlbGYuYy5jbGFtcCA9IHZhbAorICAgICAgICBzZWxmLnAuY2xhbXAgPSB2YWwKKworICAgIHByZWMgPSBwcm9wZXJ0eShnZXRwcmVjLCBzZXRwcmVjKQorICAgIEVtaW4gPSBwcm9wZXJ0eShnZXRlbWluLCBzZXRlbWluKQorICAgIEVtYXggPSBwcm9wZXJ0eShnZXRlbWF4LCBzZXRlbWF4KQorICAgIHJvdW5kaW5nID0gcHJvcGVydHkoZ2V0cm91bmQsIHNldHJvdW5kKQorICAgIGNsYW1wID0gcHJvcGVydHkoZ2V0Y2xhbXAsIHNldGNsYW1wKQorICAgIGNhcGl0YWxzID0gcHJvcGVydHkoZ2V0Y2FwaXRhbHMsIHNldGNhcGl0YWxzKQorCisgICAgZGVmIGNsZWFyX3RyYXBzKHNlbGYpOgorICAgICAgICBzZWxmLmMuY2xlYXJfdHJhcHMoKQorICAgICAgICBmb3IgdHJhcCBpbiBzZWxmLnAudHJhcHM6CisgICAgICAgICAgICBzZWxmLnAudHJhcHNbdHJhcF0gPSBGYWxzZQorCisgICAgZGVmIGNsZWFyX3N0YXR1cyhzZWxmKToKKyAgICAgICAgc2VsZi5jLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgc2VsZi5wLmNsZWFyX2ZsYWdzKCkKKworICAgIGRlZiBzZXR0cmFwcyhzZWxmLCBsc3QpOgorICAgICAgICAiIiJsc3Q6IEMgc2lnbmFsIGxpc3QiIiIKKyAgICAgICAgc2VsZi5jbGVhcl90cmFwcygpCisgICAgICAgIGZvciBzaWduYWwgaW4gbHN0OgorICAgICAgICAgICAgc2VsZi5jLnRyYXBzW3NpZ25hbF0gPSBUcnVlCisgICAgICAgICAgICBzZWxmLnAudHJhcHNbQ29uZE1hcFtzaWduYWxdXSA9IFRydWUKKworICAgIGRlZiBzZXRzdGF0dXMoc2VsZiwgbHN0KToKKyAgICAgICAgIiIibHN0OiBDIHNpZ25hbCBsaXN0IiIiCisgICAgICAgIHNlbGYuY2xlYXJfc3RhdHVzKCkKKyAgICAgICAgZm9yIHNpZ25hbCBpbiBsc3Q6CisgICAgICAgICAgICBzZWxmLmMuZmxhZ3Nbc2lnbmFsXSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYucC5mbGFnc1tDb25kTWFwW3NpZ25hbF1dID0gVHJ1ZQorCisgICAgZGVmIGFzc2VydF9lcV9zdGF0dXMoc2VsZik6CisgICAgICAgICIiImFzc2VydCBlcXVhbGl0eSBvZiBDIGFuZCBQIHN0YXR1cyIiIgorICAgICAgICBmb3Igc2lnbmFsIGluIHNlbGYuYy5mbGFnczoKKyAgICAgICAgICAgIGlmIHNlbGYuYy5mbGFnc1tzaWduYWxdID09IChub3Qgc2VsZi5wLmZsYWdzW0NvbmRNYXBbc2lnbmFsXV0pOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisKKyMgV2UgZG9uJ3Qgd2FudCBleGNlcHRpb25zIHNvIHRoYXQgd2UgY2FuIGNvbXBhcmUgdGhlIHN0YXR1cyBmbGFncy4KK2NvbnRleHQgPSBDb250ZXh0KCkKK2NvbnRleHQuRW1pbiA9IEMuTUlOX0VNSU4KK2NvbnRleHQuRW1heCA9IEMuTUFYX0VNQVgKK2NvbnRleHQuY2xlYXJfdHJhcHMoKQorCisjIFdoZW4gY3JlYXRpbmcgZGVjaW1hbHMsIF9kZWNpbWFsIGlzIHVsdGltYXRlbHkgbGltaXRlZCBieSB0aGUgbWF4aW11bQorIyBjb250ZXh0IHZhbHVlcy4gV2UgZW11bGF0ZSB0aGlzIHJlc3RyaWN0aW9uIGZvciBkZWNpbWFsLnB5LgorbWF4Y29udGV4dCA9IFAuQ29udGV4dCgKKyAgICBwcmVjPUMuTUFYX1BSRUMsCisgICAgRW1pbj1DLk1JTl9FTUlOLAorICAgIEVtYXg9Qy5NQVhfRU1BWCwKKyAgICByb3VuZGluZz1QLlJPVU5EX0hBTEZfVVAsCisgICAgY2FwaXRhbHM9MQorKQorbWF4Y29udGV4dC5jbGFtcCA9IDAKKworZGVmIFJlc3RyaWN0ZWREZWNpbWFsKHZhbHVlKToKKyAgICBtYXhjb250ZXh0LnRyYXBzID0gY29weShjb250ZXh0LnAudHJhcHMpCisgICAgbWF4Y29udGV4dC5jbGVhcl9mbGFncygpCisgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdHJpcCgpCisgICAgZGVjID0gbWF4Y29udGV4dC5jcmVhdGVfZGVjaW1hbCh2YWx1ZSkKKyAgICBpZiBtYXhjb250ZXh0LmZsYWdzW1AuSW5leGFjdF0gb3IgXAorICAgICAgIG1heGNvbnRleHQuZmxhZ3NbUC5Sb3VuZGVkXSBvciBcCisgICAgICAgbWF4Y29udGV4dC5mbGFnc1tQLkNsYW1wZWRdIG9yIFwKKyAgICAgICBtYXhjb250ZXh0LmZsYWdzW1AuSW52YWxpZE9wZXJhdGlvbl06CisgICAgICAgIHJldHVybiBjb250ZXh0LnAuX3JhaXNlX2Vycm9yKFAuSW52YWxpZE9wZXJhdGlvbikKKyAgICBpZiBtYXhjb250ZXh0LmZsYWdzW1AuRmxvYXRPcGVyYXRpb25dOgorICAgICAgICBjb250ZXh0LnAuZmxhZ3NbUC5GbG9hdE9wZXJhdGlvbl0gPSBUcnVlCisgICAgcmV0dXJuIGRlYworCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgIFRlc3RTZXQ6IE9yZ2FuaXplIGRhdGEgYW5kIGV2ZW50cyBkdXJpbmcgYSBzaW5nbGUgdGVzdCBjYXNlCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworY2xhc3MgUmVzdHJpY3RlZExpc3QobGlzdCk6CisgICAgIiIiTGlzdCB0aGF0IGNhbiBvbmx5IGJlIG1vZGlmaWVkIGJ5IGFwcGVuZGluZyBpdGVtcy4iIiIKKyAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgbmFtZSAhPSAnYXBwZW5kJzoKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJ1bnN1cHBvcnRlZCBvcGVyYXRpb24iKQorICAgICAgICByZXR1cm4gbGlzdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpCisgICAgZGVmIHVuc3VwcG9ydGVkKHNlbGYsICpfKToKKyAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoInVuc3VwcG9ydGVkIG9wZXJhdGlvbiIpCisgICAgX19hZGRfXyA9IF9fZGVsYXR0cl9fID0gX19kZWxpdGVtX18gPSBfX2lhZGRfXyA9IF9faW11bF9fID0gdW5zdXBwb3J0ZWQKKyAgICBfX211bF9fID0gX19yZXZlcnNlZF9fID0gX19ybXVsX18gPSBfX3NldGF0dHJfXyA9IF9fc2V0aXRlbV9fID0gdW5zdXBwb3J0ZWQKKworY2xhc3MgVGVzdFNldChvYmplY3QpOgorICAgICIiIkEgVGVzdFNldCBjb250YWlucyB0aGUgb3JpZ2luYWwgaW5wdXQgb3BlcmFuZHMsIGNvbnZlcnRlZCBvcGVyYW5kcywKKyAgICAgICBQeXRob24gZXhjZXB0aW9ucyB0aGF0IG9jY3VycmVkIGVpdGhlciBkdXJpbmcgY29udmVyc2lvbiBvciBkdXJpbmcKKyAgICAgICBleGVjdXRpb24gb2YgdGhlIGFjdHVhbCBmdW5jdGlvbiwgYW5kIHRoZSBmaW5hbCByZXN1bHRzLgorCisgICAgICAgRm9yIHNhZmV0eSwgbW9zdCBhdHRyaWJ1dGVzIGFyZSBsaXN0cyB0aGF0IG9ubHkgc3VwcG9ydCB0aGUgYXBwZW5kCisgICAgICAgb3BlcmF0aW9uLgorCisgICAgICAgSWYgYSBmdW5jdGlvbiBuYW1lIGlzIHByZWZpeGVkIHdpdGggJ2NvbnRleHQuJywgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICBjb250ZXh0IG1ldGhvZCBpcyBjYWxsZWQuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNuYW1lLCBvcGVyYW5kcyk6CisgICAgICAgIGlmIGZ1bmNuYW1lLnN0YXJ0c3dpdGgoImNvbnRleHQuIik6CisgICAgICAgICAgICBzZWxmLmZ1bmNuYW1lID0gZnVuY25hbWUucmVwbGFjZSgiY29udGV4dC4iLCAiIikKKyAgICAgICAgICAgIHNlbGYuY29udGV4dGZ1bmMgPSBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZ1bmNuYW1lID0gZnVuY25hbWUKKyAgICAgICAgICAgIHNlbGYuY29udGV4dGZ1bmMgPSBGYWxzZQorICAgICAgICBzZWxmLm9wID0gb3BlcmFuZHMgICAgICAgICAgICAgICAjIHJhdyBvcGVyYW5kIHR1cGxlCisgICAgICAgIHNlbGYuY29udGV4dCA9IGNvbnRleHQgICAgICAgICAgICMgY29udGV4dCB1c2VkIGZvciB0aGUgb3BlcmF0aW9uCisgICAgICAgIHNlbGYuY29wID0gUmVzdHJpY3RlZExpc3QoKSAgICAgICMgY29udmVydGVkIEMuRGVjaW1hbCBvcGVyYW5kcworICAgICAgICBzZWxmLmNleCA9IFJlc3RyaWN0ZWRMaXN0KCkgICAgICAjIFB5dGhvbiBleGNlcHRpb25zIGZvciBDLkRlY2ltYWwKKyAgICAgICAgc2VsZi5jcmVzdWx0cyA9IFJlc3RyaWN0ZWRMaXN0KCkgIyBDLkRlY2ltYWwgcmVzdWx0cworICAgICAgICBzZWxmLnBvcCA9IFJlc3RyaWN0ZWRMaXN0KCkgICAgICAjIGNvbnZlcnRlZCBQLkRlY2ltYWwgb3BlcmFuZHMKKyAgICAgICAgc2VsZi5wZXggPSBSZXN0cmljdGVkTGlzdCgpICAgICAgIyBQeXRob24gZXhjZXB0aW9ucyBmb3IgUC5EZWNpbWFsCisgICAgICAgIHNlbGYucHJlc3VsdHMgPSBSZXN0cmljdGVkTGlzdCgpICMgUC5EZWNpbWFsIHJlc3VsdHMKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgU2tpcEhhbmRsZXI6IHNraXAga25vd24gZGlzY3JlcGFuY2llcworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2NsYXNzIFNraXBIYW5kbGVyOgorICAgICIiIkhhbmRsZSBrbm93biBkaXNjcmVwYW5jaWVzIGJldHdlZW4gZGVjaW1hbC5weSBhbmQgX2RlY2ltYWwuc28uCisgICAgICAgVGhlc2UgYXJlIGVpdGhlciBVTFAgZGlmZmVyZW5jZXMgaW4gdGhlIHBvd2VyIGZ1bmN0aW9uIG9yCisgICAgICAgZXh0cmVtZWx5IG1pbm9yIGlzc3Vlcy4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi51bHBkaWZmID0gMAorICAgICAgICBzZWxmLnBvd21vZF96ZXJvcyA9IDAKKyAgICAgICAgc2VsZi5tYXhjdHggPSBQLkNvbnRleHQoRW1heD0xMCoqMTgsIEVtaW49LTEwKioxOCkKKworICAgIGRlZiBkZWZhdWx0KHNlbGYsIHQpOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBfX2dlX18gPSAgX19ndF9fID0gX19sZV9fID0gX19sdF9fID0gX19uZV9fID0gX19lcV9fID0gZGVmYXVsdAorICAgIF9fcmVkdWNlX18gPSBfX2Zvcm1hdF9fID0gX19yZXByX18gPSBfX3N0cl9fID0gZGVmYXVsdAorCisgICAgZGVmIGhhcnJpc29uX3VscChzZWxmLCBkZWMpOgorICAgICAgICAiIiJmdHA6Ly9mdHAuaW5yaWEuZnIvSU5SSUEvcHVibGljYXRpb24vcHVibGktcGRmL1JSL1JSLTU1MDQucGRmIiIiCisgICAgICAgIGEgPSBkZWMubmV4dF9wbHVzKCkKKyAgICAgICAgYiA9IGRlYy5uZXh0X21pbnVzKCkKKyAgICAgICAgcmV0dXJuIGFicyhhIC0gYikKKworICAgIGRlZiBzdGFuZGFyZF91bHAoc2VsZiwgZGVjLCBwcmVjKToKKyAgICAgICAgcmV0dXJuIFAuX2RlY19mcm9tX3RyaXBsZSgwLCAnMScsIGRlYy5fZXhwK2xlbihkZWMuX2ludCktcHJlYykKKworICAgIGRlZiByb3VuZGluZ19kaXJlY3Rpb24oc2VsZiwgeCwgbW9kZSk6CisgICAgICAgICIiIkRldGVybWluZSB0aGUgZWZmZWN0aXZlIGRpcmVjdGlvbiBvZiB0aGUgcm91bmRpbmcgd2hlbgorICAgICAgICAgICB0aGUgZXhhY3QgcmVzdWx0IHggaXMgcm91bmRlZCBhY2NvcmRpbmcgdG8gbW9kZS4KKyAgICAgICAgICAgUmV0dXJuIC0xIGZvciBkb3dud2FyZHMsIDAgZm9yIHVuZGlyZWN0ZWQsIDEgZm9yIHVwd2FyZHMsCisgICAgICAgICAgIDIgZm9yIFJPVU5EXzA1VVAuIiIiCisgICAgICAgIGNtcCA9IDEgaWYgeC5jb21wYXJlX3RvdGFsKFAuRGVjaW1hbCgiKzAiKSkgPj0gMCBlbHNlIC0xCisKKyAgICAgICAgaWYgbW9kZSBpbiAoUC5ST1VORF9IQUxGX0VWRU4sIFAuUk9VTkRfSEFMRl9VUCwgUC5ST1VORF9IQUxGX0RPV04pOgorICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgZWxpZiBtb2RlID09IFAuUk9VTkRfQ0VJTElORzoKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIGVsaWYgbW9kZSA9PSBQLlJPVU5EX0ZMT09SOgorICAgICAgICAgICAgcmV0dXJuIC0xCisgICAgICAgIGVsaWYgbW9kZSA9PSBQLlJPVU5EX1VQOgorICAgICAgICAgICAgcmV0dXJuIGNtcAorICAgICAgICBlbGlmIG1vZGUgPT0gUC5ST1VORF9ET1dOOgorICAgICAgICAgICAgcmV0dXJuIC1jbXAKKyAgICAgICAgZWxpZiBtb2RlID09IFAuUk9VTkRfMDVVUDoKKyAgICAgICAgICAgIHJldHVybiAyCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbmV4cGVjdGVkIHJvdW5kaW5nIG1vZGU6ICVzIiAlIG1vZGUpCisKKyAgICBkZWYgY2hlY2tfdWxwZGlmZihzZWxmLCBleGFjdCwgcm91bmRlZCk6CisgICAgICAgICMgY3VycmVudCBwcmVjaXNpb24KKyAgICAgICAgcCA9IGNvbnRleHQucC5wcmVjCisKKyAgICAgICAgIyBDb252ZXJ0IGluZmluaXRpZXMgdG8gdGhlIGxhcmdlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgKyAxLgorICAgICAgICB4ID0gZXhhY3QKKyAgICAgICAgaWYgZXhhY3QuaXNfaW5maW5pdGUoKToKKyAgICAgICAgICAgIHggPSBQLl9kZWNfZnJvbV90cmlwbGUoZXhhY3QuX3NpZ24sICcxMCcsIGNvbnRleHQucC5FbWF4KQorICAgICAgICB5ID0gcm91bmRlZAorICAgICAgICBpZiByb3VuZGVkLmlzX2luZmluaXRlKCk6CisgICAgICAgICAgICB5ID0gUC5fZGVjX2Zyb21fdHJpcGxlKHJvdW5kZWQuX3NpZ24sICcxMCcsIGNvbnRleHQucC5FbWF4KQorCisgICAgICAgICMgZXJyID0gKHJvdW5kZWQgLSBleGFjdCkgLyB1bHAocm91bmRlZCkKKyAgICAgICAgc2VsZi5tYXhjdHgucHJlYyA9IHAgKiAyCisgICAgICAgIHQgPSBzZWxmLm1heGN0eC5zdWJ0cmFjdCh5LCB4KQorICAgICAgICBpZiBjb250ZXh0LmMuZmxhZ3NbQy5DbGFtcGVkXSBvciBcCisgICAgICAgICAgIGNvbnRleHQuYy5mbGFnc1tDLlVuZGVyZmxvd106CisgICAgICAgICAgICAjIFRoZSBzdGFuZGFyZCB1bHAgZG9lcyBub3Qgd29yayBpbiBVbmRlcmZsb3cgdGVycml0b3J5LgorICAgICAgICAgICAgdWxwID0gc2VsZi5oYXJyaXNvbl91bHAoeSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHVscCA9IHNlbGYuc3RhbmRhcmRfdWxwKHksIHApCisgICAgICAgICMgRXJyb3IgaW4gdWxwcy4KKyAgICAgICAgZXJyID0gc2VsZi5tYXhjdHguZGl2aWRlKHQsIHVscCkKKworICAgICAgICBkaXIgPSBzZWxmLnJvdW5kaW5nX2RpcmVjdGlvbih4LCBjb250ZXh0LnAucm91bmRpbmcpCisgICAgICAgIGlmIGRpciA9PSAwOgorICAgICAgICAgICAgaWYgUC5EZWNpbWFsKCItMC42IikgPCBlcnIgPCBQLkRlY2ltYWwoIjAuNiIpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGVsaWYgZGlyID09IDE6ICMgZGlyZWN0ZWQsIHVwd2FyZHMKKyAgICAgICAgICAgIGlmIFAuRGVjaW1hbCgiLTAuMSIpIDwgZXJyIDwgUC5EZWNpbWFsKCIxLjEiKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBlbGlmIGRpciA9PSAtMTogIyBkaXJlY3RlZCwgZG93bndhcmRzCisgICAgICAgICAgICBpZiBQLkRlY2ltYWwoIi0xLjEiKSA8IGVyciA8IFAuRGVjaW1hbCgiMC4xIik6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZWxzZTogIyBST1VORF8wNVVQCisgICAgICAgICAgICBpZiBQLkRlY2ltYWwoIi0xLjEiKSA8IGVyciA8IFAuRGVjaW1hbCgiMS4xIik6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBwcmludCgidWxwOiAlcyAgZXJyb3I6ICVzICBleGFjdDogJXMgIGNfcm91bmRlZDogJXMiCisgICAgICAgICAgICAgICUgKHVscCwgZXJyLCBleGFjdCwgcm91bmRlZCkpCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGJpbl9yZXNvbHZlX3VscChzZWxmLCB0KToKKyAgICAgICAgIiIiQ2hlY2sgaWYgcmVzdWx0cyBvZiBfZGVjaW1hbCdzIHBvd2VyIGZ1bmN0aW9uIGFyZSB3aXRoaW4gdGhlCisgICAgICAgICAgIGFsbG93ZWQgdWxwIHJhbmdlcy4iIiIKKyAgICAgICAgIyBOYU5zIGFyZSBiZXlvbmQgcmVwYWlyLgorICAgICAgICBpZiB0LnJjLmlzX25hbigpIG9yIHQucnAuaXNfbmFuKCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAjICJleGFjdCIgcmVzdWx0LCBkb3VibGUgcHJlY2lzaW9uLCBoYWxmX2V2ZW4KKyAgICAgICAgc2VsZi5tYXhjdHgucHJlYyA9IGNvbnRleHQucC5wcmVjICogMgorCisgICAgICAgIG9wMSwgb3AyID0gdC5wb3BbMF0sIHQucG9wWzFdCisgICAgICAgIGlmIHQuY29udGV4dGZ1bmM6CisgICAgICAgICAgICBleGFjdCA9IGdldGF0dHIoc2VsZi5tYXhjdHgsIHQuZnVuY25hbWUpKG9wMSwgb3AyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZXhhY3QgPSBnZXRhdHRyKG9wMSwgdC5mdW5jbmFtZSkob3AyLCBjb250ZXh0PXNlbGYubWF4Y3R4KQorCisgICAgICAgICMgX2RlY2ltYWwncyByb3VuZGVkIHJlc3VsdAorICAgICAgICByb3VuZGVkID0gUC5EZWNpbWFsKHQuY3Jlc3VsdHNbMF0pCisKKyAgICAgICAgc2VsZi51bHBkaWZmICs9IDEKKyAgICAgICAgcmV0dXJuIHNlbGYuY2hlY2tfdWxwZGlmZihleGFjdCwgcm91bmRlZCkKKworICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgQ29ycmVjdCByb3VuZGluZyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgIGRlZiByZXNvbHZlX3VuZGVyZmxvdyhzZWxmLCB0KToKKyAgICAgICAgIiIiSW4gZXh0cmVtZWx5IHJhcmUgY2FzZXMgd2hlcmUgdGhlIGluZmluaXRlIHByZWNpc2lvbiByZXN1bHQgaXMganVzdAorICAgICAgICAgICBiZWxvdyBldGlueSwgY2RlY2ltYWwgZG9lcyBub3Qgc2V0IFN1Ym5vcm1hbC9VbmRlcmZsb3cuIEV4YW1wbGU6CisKKyAgICAgICAgICAgc2V0Y29udGV4dChDb250ZXh0KHByZWM9MjEsIHJvdW5kaW5nPVJPVU5EX1VQLCBFbWluPS01NSwgRW1heD04NSkpCisgICAgICAgICAgIERlY2ltYWwoIjEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiCisgICAgICAgICAgICAgICAgICAgIjAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiCisgICAgICAgICAgICAgICAgICAgIjAwMDAwMDAwMDAwMDAwMjUiKS5sbigpCisgICAgICAgICIiIgorICAgICAgICBpZiB0LmNyZXN1bHRzICE9IHQucHJlc3VsdHM6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UgIyBSZXN1bHRzIG11c3QgYmUgaWRlbnRpY2FsLgorICAgICAgICBpZiBjb250ZXh0LmMuZmxhZ3NbQy5Sb3VuZGVkXSBhbmQgXAorICAgICAgICAgICBjb250ZXh0LmMuZmxhZ3NbQy5JbmV4YWN0XSBhbmQgXAorICAgICAgICAgICBjb250ZXh0LnAuZmxhZ3NbUC5Sb3VuZGVkXSBhbmQgXAorICAgICAgICAgICBjb250ZXh0LnAuZmxhZ3NbUC5JbmV4YWN0XToKKyAgICAgICAgICAgIHJldHVybiBUcnVlICMgU3Vibm9ybWFsL1VuZGVyZmxvdyBtYXkgYmUgbWlzc2luZy4KKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgZXhwKHNlbGYsIHQpOgorICAgICAgICAiIiJSZXNvbHZlIFVuZGVyZmxvdyBvciBVTFAgZGlmZmVyZW5jZS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYucmVzb2x2ZV91bmRlcmZsb3codCkKKworICAgIGRlZiBsb2cxMChzZWxmLCB0KToKKyAgICAgICAgIiIiUmVzb2x2ZSBVbmRlcmZsb3cgb3IgVUxQIGRpZmZlcmVuY2UuIiIiCisgICAgICAgIHJldHVybiBzZWxmLnJlc29sdmVfdW5kZXJmbG93KHQpCisKKyAgICBkZWYgbG4oc2VsZiwgdCk6CisgICAgICAgICIiIlJlc29sdmUgVW5kZXJmbG93IG9yIFVMUCBkaWZmZXJlbmNlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5yZXNvbHZlX3VuZGVyZmxvdyh0KQorCisgICAgZGVmIF9fcG93X18oc2VsZiwgdCk6CisgICAgICAgICIiIkFsd2F5cyBjYWxscyB0aGUgcmVzb2x2ZSBmdW5jdGlvbi4gQy5EZWNpbWFsIGRvZXMgbm90IGhhdmUgY29ycmVjdAorICAgICAgICAgICByb3VuZGluZyBmb3IgdGhlIHBvd2VyIGZ1bmN0aW9uLiIiIgorICAgICAgICBpZiBjb250ZXh0LmMuZmxhZ3NbQy5Sb3VuZGVkXSBhbmQgXAorICAgICAgICAgICBjb250ZXh0LmMuZmxhZ3NbQy5JbmV4YWN0XSBhbmQgXAorICAgICAgICAgICBjb250ZXh0LnAuZmxhZ3NbUC5Sb3VuZGVkXSBhbmQgXAorICAgICAgICAgICBjb250ZXh0LnAuZmxhZ3NbUC5JbmV4YWN0XToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmJpbl9yZXNvbHZlX3VscCh0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcG93ZXIgPSBfX3Jwb3dfXyA9IF9fcG93X18KKworICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBUZWNobmljYWxpdGllcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgIGRlZiBfX2Zsb2F0X18oc2VsZiwgdCk6CisgICAgICAgICIiIk5hTiBjb21wYXJpc29uIGluIHRoZSB2ZXJpZnkoKSBmdW5jdGlvbiBvYnZpb3VzbHkgZ2l2ZXMgYW4KKyAgICAgICAgICAgaW5jb3JyZWN0IGFuc3dlcjogIG5hbiA9PSBuYW4gLT4gRmFsc2UiIiIKKyAgICAgICAgaWYgdC5jb3BbMF0uaXNfbmFuKCkgYW5kIHQucG9wWzBdLmlzX25hbigpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgX19jb21wbGV4X18gPSBfX2Zsb2F0X18KKworICAgIGRlZiBfX3JhZGRfXyhzZWxmLCB0KToKKyAgICAgICAgIiIiZGVjaW1hbC5weSBnaXZlcyBwcmVjZWRlbmNlIHRvIHRoZSBmaXJzdCBOYU47IHRoaXMgaXMKKyAgICAgICAgICAgbm90IGltcG9ydGFudCwgYXMgX19yYWRkX18gd2lsbCBub3QgYmUgY2FsbGVkIGZvcgorICAgICAgICAgICB0d28gZGVjaW1hbCBhcmd1bWVudHMuIiIiCisgICAgICAgIGlmIHQucmMuaXNfbmFuKCkgYW5kIHQucnAuaXNfbmFuKCk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBfX3JtdWxfXyA9IF9fcmFkZF9fCisKKyAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBWYXJpb3VzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBkZWYgX19yb3VuZF9fKHNlbGYsIHQpOgorICAgICAgICAiIiJFeGNlcHRpb246IERlY2ltYWwoJzEnKS5fX3JvdW5kX18oLTEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCkKKyAgICAgICAgICAgU2hvdWxkIGl0IHJlYWxseSBiZSBJbnZhbGlkT3BlcmF0aW9uPyIiIgorICAgICAgICBpZiB0LnJjIGlzIE5vbmUgYW5kIHQucnAuaXNfbmFuKCk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworc2hhbmRsZXIgPSBTa2lwSGFuZGxlcigpCitkZWYgc2tpcF9lcnJvcih0KToKKyAgICByZXR1cm4gZ2V0YXR0cihzaGFuZGxlciwgdC5mdW5jbmFtZSwgc2hhbmRsZXIuZGVmYXVsdCkodCkKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgICAgICAgSGFuZGxpbmcgdmVyaWZpY2F0aW9uIGVycm9ycworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2NsYXNzIFZlcmlmeUVycm9yKEV4Y2VwdGlvbik6CisgICAgIiIiVmVyaWZpY2F0aW9uIGZhaWxlZC4iIiIKKyAgICBwYXNzCisKK2RlZiBmdW5jdGlvbl9hc19zdHJpbmcodCk6CisgICAgaWYgdC5jb250ZXh0ZnVuYzoKKyAgICAgICAgY2FyZ3MgPSB0LmNvcAorICAgICAgICBwYXJncyA9IHQucG9wCisgICAgICAgIGNmdW5jID0gImNfZnVuYzogJXMoIiAlIHQuZnVuY25hbWUKKyAgICAgICAgcGZ1bmMgPSAicF9mdW5jOiAlcygiICUgdC5mdW5jbmFtZQorICAgIGVsc2U6CisgICAgICAgIGNzZWxmLCBjYXJncyA9IHQuY29wWzBdLCB0LmNvcFsxOl0KKyAgICAgICAgcHNlbGYsIHBhcmdzID0gdC5wb3BbMF0sIHQucG9wWzE6XQorICAgICAgICBjZnVuYyA9ICJjX2Z1bmM6ICVzLiVzKCIgJSAocmVwcihjc2VsZiksIHQuZnVuY25hbWUpCisgICAgICAgIHBmdW5jID0gInBfZnVuYzogJXMuJXMoIiAlIChyZXByKHBzZWxmKSwgdC5mdW5jbmFtZSkKKworICAgIGVyciA9IGNmdW5jCisgICAgZm9yIGFyZyBpbiBjYXJnczoKKyAgICAgICAgZXJyICs9ICIlcywgIiAlIHJlcHIoYXJnKQorICAgIGVyciA9IGVyci5yc3RyaXAoIiwgIikKKyAgICBlcnIgKz0gIilcbiIKKworICAgIGVyciArPSBwZnVuYworICAgIGZvciBhcmcgaW4gcGFyZ3M6CisgICAgICAgIGVyciArPSAiJXMsICIgJSByZXByKGFyZykKKyAgICBlcnIgPSBlcnIucnN0cmlwKCIsICIpCisgICAgZXJyICs9ICIpIgorCisgICAgcmV0dXJuIGVycgorCitkZWYgcmFpc2VfZXJyb3IodCk6CisgICAgZ2xvYmFsIEVYSVRfU1RBVFVTCisKKyAgICBpZiBza2lwX2Vycm9yKHQpOgorICAgICAgICByZXR1cm4KKyAgICBFWElUX1NUQVRVUyA9IDEKKworICAgIGVyciA9ICJFcnJvciBpbiAlczpcblxuIiAlIHQuZnVuY25hbWUKKyAgICBlcnIgKz0gImlucHV0IG9wZXJhbmRzOiAlc1xuXG4iICUgKHQub3AsKQorICAgIGVyciArPSBmdW5jdGlvbl9hc19zdHJpbmcodCkKKyAgICBlcnIgKz0gIlxuXG5jX3Jlc3VsdDogJXNcbnBfcmVzdWx0OiAlc1xuXG4iICUgKHQuY3Jlc3VsdHMsIHQucHJlc3VsdHMpCisgICAgZXJyICs9ICJjX2V4Y2VwdGlvbnM6ICVzXG5wX2V4Y2VwdGlvbnM6ICVzXG5cbiIgJSAodC5jZXgsIHQucGV4KQorICAgIGVyciArPSAiJXNcblxuIiAlIHN0cih0LmNvbnRleHQpCisKKyAgICByYWlzZSBWZXJpZnlFcnJvcihlcnIpCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgICAgICAgICAgICAgICAgICAgTWFpbiB0ZXN0aW5nIGZ1bmN0aW9ucworIworIyAgVGhlIHByb2NlZHVyZSBpcyBhbHdheXMgKHQgaXMgdGhlIFRlc3RTZXQpOgorIworIyAgIGNvbnZlcnQodCkgLT4gSW5pdGlhbGl6ZSB0aGUgVGVzdFNldCBhcyBuZWNlc3NhcnkuCisjCisjICAgICAgICAgICAgICAgICBSZXR1cm4gMCBmb3IgZWFybHkgYWJvcnRpb24gKGUuZy4gaWYgYSBUeXBlRXJyb3IKKyMgICAgICAgICAgICAgICAgIG9jY3VycyBkdXJpbmcgY29udmVyc2lvbiwgdGhlcmUgaXMgbm90aGluZyB0byB0ZXN0KS4KKyMKKyMgICAgICAgICAgICAgICAgIFJldHVybiAxIGZvciBjb250aW51aW5nIHdpdGggdGhlIHRlc3QgY2FzZS4KKyMKKyMgICBjYWxsZnVuY3ModCkgLT4gQ2FsbCB0aGUgcmVsZXZhbnQgZnVuY3Rpb24gZm9yIGVhY2ggaW1wbGVtZW50YXRpb24KKyMgICAgICAgICAgICAgICAgICAgYW5kIHJlY29yZCB0aGUgcmVzdWx0cyBpbiB0aGUgVGVzdFNldC4KKyMKKyMgICB2ZXJpZnkodCkgLT4gVmVyaWZ5IHRoZSByZXN1bHRzLiBJZiB2ZXJpZmljYXRpb24gZmFpbHMsIGRldGFpbHMKKyMgICAgICAgICAgICAgICAgYXJlIHByaW50ZWQgdG8gc3Rkb3V0LgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2RlZiBjb252ZXJ0KHQsIGNvbnZzdHI9VHJ1ZSk6CisgICAgIiIiIHQgaXMgdGhlIHRlc3RzZXQuIEF0IHRoaXMgc3RhZ2UgdGhlIHRlc3RzZXQgY29udGFpbnMgYSB0dXBsZSBvZgorICAgICAgICBvcGVyYW5kcyB0Lm9wIG9mIHZhcmlvdXMgdHlwZXMuIEZvciBkZWNpbWFsIG1ldGhvZHMgdGhlIGZpcnN0CisgICAgICAgIG9wZXJhbmQgKHNlbGYpIGlzIGFsd2F5cyBjb252ZXJ0ZWQgdG8gRGVjaW1hbC4gSWYgJ2NvbnZzdHInIGlzCisgICAgICAgIHRydWUsIHN0cmluZyBvcGVyYW5kcyBhcmUgY29udmVydGVkIGFzIHdlbGwuCisKKyAgICAgICAgQ29udGV4dCBvcGVyYW5kcyBhcmUgb2YgdHlwZSBkZWNjaGVjay5Db250ZXh0LCByb3VuZGluZyBtb2RlCisgICAgICAgIG9wZXJhbmRzIGFyZSBnaXZlbiBhcyBhIHR1cGxlIChDLnJvdW5kaW5nLCBQLnJvdW5kaW5nKS4KKworICAgICAgICBPdGhlciB0eXBlcyAoZmxvYXQsIGludCwgZXRjLikgYXJlIGxlZnQgdW5jaGFuZ2VkLgorICAgICIiIgorICAgIGZvciBpLCBvcCBpbiBlbnVtZXJhdGUodC5vcCk6CisKKyAgICAgICAgY29udGV4dC5jbGVhcl9zdGF0dXMoKQorCisgICAgICAgIGlmIG9wIGluIFJvdW5kTW9kZXM6CisgICAgICAgICAgICB0LmNvcC5hcHBlbmQob3ApCisgICAgICAgICAgICB0LnBvcC5hcHBlbmQob3ApCisKKyAgICAgICAgZWxpZiBub3QgdC5jb250ZXh0ZnVuYyBhbmQgaSA9PSAwIG9yIFwKKyAgICAgICAgICAgICBjb252c3RyIGFuZCBpc2luc3RhbmNlKG9wLCBzdHIpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGMgPSBDLkRlY2ltYWwob3ApCisgICAgICAgICAgICAgICAgY2V4ID0gTm9uZQorICAgICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgYyA9IE5vbmUKKyAgICAgICAgICAgICAgICBjZXggPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcCA9IFJlc3RyaWN0ZWREZWNpbWFsKG9wKQorICAgICAgICAgICAgICAgIHBleCA9IE5vbmUKKyAgICAgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgIHAgPSBOb25lCisgICAgICAgICAgICAgICAgcGV4ID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgdC5jb3AuYXBwZW5kKGMpCisgICAgICAgICAgICB0LmNleC5hcHBlbmQoY2V4KQorICAgICAgICAgICAgdC5wb3AuYXBwZW5kKHApCisgICAgICAgICAgICB0LnBleC5hcHBlbmQocGV4KQorCisgICAgICAgICAgICBpZiBjZXggaXMgcGV4OgorICAgICAgICAgICAgICAgIGlmIHN0cihjKSAhPSBzdHIocCkgb3Igbm90IGNvbnRleHQuYXNzZXJ0X2VxX3N0YXR1cygpOgorICAgICAgICAgICAgICAgICAgICByYWlzZV9lcnJvcih0KQorICAgICAgICAgICAgICAgIGlmIGNleCBhbmQgcGV4OgorICAgICAgICAgICAgICAgICAgICAjIG5vdGhpbmcgdG8gdGVzdAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZV9lcnJvcih0KQorCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShvcCwgQ29udGV4dCk6CisgICAgICAgICAgICB0LmNvbnRleHQgPSBvcAorICAgICAgICAgICAgdC5jb3AuYXBwZW5kKG9wLmMpCisgICAgICAgICAgICB0LnBvcC5hcHBlbmQob3AucCkKKworICAgICAgICBlbHNlOgorICAgICAgICAgICAgdC5jb3AuYXBwZW5kKG9wKQorICAgICAgICAgICAgdC5wb3AuYXBwZW5kKG9wKQorCisgICAgcmV0dXJuIDEKKworZGVmIGNhbGxmdW5jcyh0KToKKyAgICAiIiIgdCBpcyB0aGUgdGVzdHNldC4gQXQgdGhpcyBzdGFnZSB0aGUgdGVzdHNldCBjb250YWlucyBvcGVyYW5kIGxpc3RzCisgICAgICAgIHQuY29wIGFuZCB0LnBvcCBmb3IgdGhlIEMgYW5kIFB5dGhvbiB2ZXJzaW9ucyBvZiBkZWNpbWFsLgorICAgICAgICBGb3IgRGVjaW1hbCBtZXRob2RzLCB0aGUgZmlyc3Qgb3BlcmFuZHMgYXJlIG9mIHR5cGUgQy5EZWNpbWFsIGFuZAorICAgICAgICBQLkRlY2ltYWwgcmVzcGVjdGl2ZWx5LiBUaGUgcmVtYWluaW5nIG9wZXJhbmRzIGNhbiBoYXZlIHZhcmlvdXMgdHlwZXMuCisgICAgICAgIEZvciBDb250ZXh0IG1ldGhvZHMsIGFsbCBvcGVyYW5kcyBjYW4gaGF2ZSBhbnkgdHlwZS4KKworICAgICAgICB0LnJjIGFuZCB0LnJwIGFyZSB0aGUgcmVzdWx0cyBvZiB0aGUgb3BlcmF0aW9uLgorICAgICIiIgorICAgIGNvbnRleHQuY2xlYXJfc3RhdHVzKCkKKworICAgIHRyeToKKyAgICAgICAgaWYgdC5jb250ZXh0ZnVuYzoKKyAgICAgICAgICAgIGNhcmdzID0gdC5jb3AKKyAgICAgICAgICAgIHQucmMgPSBnZXRhdHRyKGNvbnRleHQuYywgdC5mdW5jbmFtZSkoKmNhcmdzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY3NlbGYgPSB0LmNvcFswXQorICAgICAgICAgICAgY2FyZ3MgPSB0LmNvcFsxOl0KKyAgICAgICAgICAgIHQucmMgPSBnZXRhdHRyKGNzZWxmLCB0LmZ1bmNuYW1lKSgqY2FyZ3MpCisgICAgICAgIHQuY2V4LmFwcGVuZChOb25lKQorICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yLCBNZW1vcnlFcnJvcikgYXMgZToKKyAgICAgICAgdC5yYyA9IE5vbmUKKyAgICAgICAgdC5jZXguYXBwZW5kKGUuX19jbGFzc19fKQorCisgICAgdHJ5OgorICAgICAgICBpZiB0LmNvbnRleHRmdW5jOgorICAgICAgICAgICAgcGFyZ3MgPSB0LnBvcAorICAgICAgICAgICAgdC5ycCA9IGdldGF0dHIoY29udGV4dC5wLCB0LmZ1bmNuYW1lKSgqcGFyZ3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwc2VsZiA9IHQucG9wWzBdCisgICAgICAgICAgICBwYXJncyA9IHQucG9wWzE6XQorICAgICAgICAgICAgdC5ycCA9IGdldGF0dHIocHNlbGYsIHQuZnVuY25hbWUpKCpwYXJncykKKyAgICAgICAgdC5wZXguYXBwZW5kKE5vbmUpCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IsIE1lbW9yeUVycm9yKSBhcyBlOgorICAgICAgICB0LnJwID0gTm9uZQorICAgICAgICB0LnBleC5hcHBlbmQoZS5fX2NsYXNzX18pCisKK2RlZiB2ZXJpZnkodCwgc3RhdCk6CisgICAgIiIiIHQgaXMgdGhlIHRlc3RzZXQuIEF0IHRoaXMgc3RhZ2UgdGhlIHRlc3RzZXQgY29udGFpbnMgdGhlIGZvbGxvd2luZworICAgICAgICB0dXBsZXM6CisKKyAgICAgICAgICAgIHQub3A6IG9yaWdpbmFsIG9wZXJhbmRzCisgICAgICAgICAgICB0LmNvcDogQy5EZWNpbWFsIG9wZXJhbmRzIChzZWUgY29udmVydCBmb3IgZGV0YWlscykKKyAgICAgICAgICAgIHQucG9wOiBQLkRlY2ltYWwgb3BlcmFuZHMgKHNlZSBjb252ZXJ0IGZvciBkZXRhaWxzKQorICAgICAgICAgICAgdC5yYzogQyByZXN1bHQKKyAgICAgICAgICAgIHQucnA6IFB5dGhvbiByZXN1bHQKKworICAgICAgICB0LnJjIGFuZCB0LnJwIGNhbiBoYXZlIHZhcmlvdXMgdHlwZXMuCisgICAgIiIiCisgICAgdC5jcmVzdWx0cy5hcHBlbmQoc3RyKHQucmMpKQorICAgIHQucHJlc3VsdHMuYXBwZW5kKHN0cih0LnJwKSkKKyAgICBpZiBpc2luc3RhbmNlKHQucmMsIEMuRGVjaW1hbCkgYW5kIGlzaW5zdGFuY2UodC5ycCwgUC5EZWNpbWFsKToKKyAgICAgICAgIyBHZW5lcmFsIGNhc2U6IGJvdGggcmVzdWx0cyBhcmUgRGVjaW1hbHMuCisgICAgICAgIHQuY3Jlc3VsdHMuYXBwZW5kKHQucmMudG9fZW5nX3N0cmluZygpKQorICAgICAgICB0LmNyZXN1bHRzLmFwcGVuZCh0LnJjLmFzX3R1cGxlKCkpCisgICAgICAgIHQuY3Jlc3VsdHMuYXBwZW5kKHN0cih0LnJjLmltYWcpKQorICAgICAgICB0LmNyZXN1bHRzLmFwcGVuZChzdHIodC5yYy5yZWFsKSkKKyAgICAgICAgdC5wcmVzdWx0cy5hcHBlbmQodC5ycC50b19lbmdfc3RyaW5nKCkpCisgICAgICAgIHQucHJlc3VsdHMuYXBwZW5kKHQucnAuYXNfdHVwbGUoKSkKKyAgICAgICAgdC5wcmVzdWx0cy5hcHBlbmQoc3RyKHQucnAuaW1hZykpCisgICAgICAgIHQucHJlc3VsdHMuYXBwZW5kKHN0cih0LnJwLnJlYWwpKQorCisgICAgICAgIG5jID0gdC5yYy5udW1iZXJfY2xhc3MoKS5sc3RyaXAoJystcycpCisgICAgICAgIHN0YXRbbmNdICs9IDEKKyAgICBlbHNlOgorICAgICAgICAjIFJlc3VsdHMgZnJvbSBlLmcuIF9fZGl2bW9kX18gY2FuIG9ubHkgYmUgY29tcGFyZWQgYXMgc3RyaW5ncy4KKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodC5yYywgdHVwbGUpIGFuZCBub3QgaXNpbnN0YW5jZSh0LnJwLCB0dXBsZSk6CisgICAgICAgICAgICBpZiB0LnJjICE9IHQucnA6CisgICAgICAgICAgICAgICAgcmFpc2VfZXJyb3IodCkKKyAgICAgICAgc3RhdFt0eXBlKHQucmMpLl9fbmFtZV9fXSArPSAxCisKKyAgICAjIFRoZSByZXR1cm4gdmFsdWUgbGlzdHMgbXVzdCBiZSBlcXVhbC4KKyAgICBpZiB0LmNyZXN1bHRzICE9IHQucHJlc3VsdHM6CisgICAgICAgIHJhaXNlX2Vycm9yKHQpCisgICAgIyBUaGUgUHl0aG9uIGV4Y2VwdGlvbiBsaXN0cyAoVHlwZUVycm9yLCBldGMuKSBtdXN0IGJlIGVxdWFsLgorICAgIGlmIHQuY2V4ICE9IHQucGV4OgorICAgICAgICByYWlzZV9lcnJvcih0KQorICAgICMgVGhlIGNvbnRleHQgZmxhZ3MgbXVzdCBiZSBlcXVhbC4KKyAgICBpZiBub3QgdC5jb250ZXh0LmFzc2VydF9lcV9zdGF0dXMoKToKKyAgICAgICAgcmFpc2VfZXJyb3IodCkKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluIHRlc3QgbG9vcHMKKyMKKyMgIHRlc3RfbWV0aG9kKG1ldGhvZCwgdGVzdHNwZWNzLCB0ZXN0ZnVuYykgLT4KKyMKKyMgICAgIExvb3AgdGhyb3VnaCB2YXJpb3VzIGNvbnRleHQgc2V0dGluZ3MuIFRoZSBkZWdyZWUgb2YKKyMgICAgIHRob3JvdWdobmVzcyBpcyBkZXRlcm1pbmVkIGJ5ICd0ZXN0c3BlYycuIEZvciBlYWNoCisjICAgICBzZXR0aW5nLCBjYWxsICd0ZXN0ZnVuYycuIEdlbmVyYWxseSwgJ3Rlc3RmdW5jJyBpdHNlbGYKKyMgICAgIGEgbG9vcCwgaXRlcmF0aW5nIHRocm91Z2ggbWFueSB0ZXN0IGNhc2VzIGdlbmVyYXRlZAorIyAgICAgYnkgdGhlIGZ1bmN0aW9ucyBpbiByYW5kZGVjLnB5LgorIworIyAgdGVzdF9uLWFyeShtZXRob2QsIHByZWMsIGV4cF9yYW5nZSwgcmVzdHJpY3RlZF9yYW5nZSwgaXRyLCBzdGF0KSAtPgorIworIyAgICAgJ3Rlc3RfdW5hcnknLCAndGVzdF9iaW5hcnknIGFuZCAndGVzdF90ZXJuYXJ5JyBhcmUgdGhlCisjICAgICBtYWluIHRlc3QgZnVuY3Rpb25zIHBhc3NlZCB0byAndGVzdF9tZXRob2QnLiBUaGV5IGRlYWwKKyMgICAgIHdpdGggdGhlIHJlZ3VsYXIgY2FzZXMuIFRoZSB0aG9yb3VnaG5lc3Mgb2YgdGVzdGluZyBpcworIyAgICAgZGV0ZXJtaW5lZCBieSAnaXRyJy4KKyMKKyMgICAgICdwcmVjJywgJ2V4cF9yYW5nZScgYW5kICdyZXN0cmljdGVkX3JhbmdlJyBhcmUgcGFzc2VkCisjICAgICB0byB0aGUgdGVzdC1nZW5lcmF0aW5nIGZ1bmN0aW9ucyBhbmQgbGltaXQgdGhlIGdlbmVyYXRlZAorIyAgICAgdmFsdWVzLiBJbiBzb21lIGNhc2VzLCBmb3IgcmVhc29uYWJsZSBydW4gdGltZXMgYQorIyAgICAgbWF4aW11bSBleHBvbmVudCBvZiA5OTk5IGlzIHJlcXVpcmVkLgorIworIyAgICAgVGhlICdzdGF0JyBwYXJhbWV0ZXIgaXMgcGFzc2VkIGRvd24gdG8gdGhlICd2ZXJpZnknCisjICAgICBmdW5jdGlvbiwgd2hpY2ggcmVjb3JkcyBzdGF0aXN0aWNzIGZvciB0aGUgcmVzdWx0IHZhbHVlcy4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitkZWYgbG9nKGZtdCwgYXJncz1Ob25lKToKKyAgICBpZiBhcmdzOgorICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcnLmpvaW4oKGZtdCwgJ1xuJykpICUgYXJncykKKyAgICBlbHNlOgorICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcnLmpvaW4oKHN0cihmbXQpLCAnXG4nKSkpCisgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisKK2RlZiB0ZXN0X21ldGhvZChtZXRob2QsIHRlc3RzcGVjcywgdGVzdGZ1bmMpOgorICAgICIiIkl0ZXJhdGUgYSB0ZXN0IGZ1bmN0aW9uIHRocm91Z2ggbWFueSBjb250ZXh0IHNldHRpbmdzLiIiIgorICAgIGxvZygidGVzdGluZyAlcyAuLi4iLCBtZXRob2QpCisgICAgc3RhdCA9IGRlZmF1bHRkaWN0KGludCkKKyAgICBmb3Igc3BlYyBpbiB0ZXN0c3BlY3M6CisgICAgICAgIGlmICdzYW1wbGVzJyBpbiBzcGVjOgorICAgICAgICAgICAgc3BlY1sncHJlYyddID0gc29ydGVkKHJhbmRvbS5zYW1wbGUocmFuZ2UoMSwgMTAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjWydzYW1wbGVzJ10pKQorICAgICAgICBmb3IgcHJlYyBpbiBzcGVjWydwcmVjJ106CisgICAgICAgICAgICBjb250ZXh0LnByZWMgPSBwcmVjCisgICAgICAgICAgICBmb3IgZXhwdHMgaW4gc3BlY1snZXhwdHMnXToKKyAgICAgICAgICAgICAgICBlbWluLCBlbWF4ID0gZXhwdHMKKyAgICAgICAgICAgICAgICBpZiBlbWluID09ICdyYW5kJzoKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5FbWluID0gcmFuZG9tLnJhbmRyYW5nZSgtMTAwMCwgMCkKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5FbWF4ID0gcmFuZG9tLnJhbmRyYW5nZShwcmVjLCAxMDAwKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuRW1pbiwgY29udGV4dC5FbWF4ID0gZW1pbiwgZW1heAorICAgICAgICAgICAgICAgIGlmIHByZWMgPiBjb250ZXh0LkVtYXg6IGNvbnRpbnVlCisgICAgICAgICAgICAgICAgbG9nKCIgICAgcHJlYzogJWQgIGVtaW46ICVkICBlbWF4OiAlZCIsCisgICAgICAgICAgICAgICAgICAgIChjb250ZXh0LnByZWMsIGNvbnRleHQuRW1pbiwgY29udGV4dC5FbWF4KSkKKyAgICAgICAgICAgICAgICByZXN0cl9yYW5nZSA9IDk5OTkgaWYgY29udGV4dC5FbWF4ID4gOTk5OSBlbHNlIGNvbnRleHQuRW1heCs5OQorICAgICAgICAgICAgICAgIGZvciByb3VuZGluZyBpbiBSb3VuZE1vZGVzOgorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJvdW5kaW5nID0gcm91bmRpbmcKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5jYXBpdGFscyA9IHJhbmRvbS5yYW5kcmFuZ2UoMikKKyAgICAgICAgICAgICAgICAgICAgaWYgc3BlY1snY2xhbXAnXSA9PSAncmFuZCc6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmNsYW1wID0gcmFuZG9tLnJhbmRyYW5nZSgyKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5jbGFtcCA9IHNwZWNbJ2NsYW1wJ10KKyAgICAgICAgICAgICAgICAgICAgZXhwcmFuZ2UgPSBjb250ZXh0LmMuRW1heAorICAgICAgICAgICAgICAgICAgICB0ZXN0ZnVuYyhtZXRob2QsIHByZWMsIGV4cHJhbmdlLCByZXN0cl9yYW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY1snaXRlciddLCBzdGF0KQorICAgIGxvZygiICAgIHJlc3VsdCB0eXBlczogJXMiICUgc29ydGVkKFt0IGZvciB0IGluIHN0YXQuaXRlbXMoKV0pKQorCitkZWYgdGVzdF91bmFyeShtZXRob2QsIHByZWMsIGV4cF9yYW5nZSwgcmVzdHJpY3RlZF9yYW5nZSwgaXRyLCBzdGF0KToKKyAgICAiIiJJdGVyYXRlIGEgdW5hcnkgZnVuY3Rpb24gdGhyb3VnaCBtYW55IHRlc3QgY2FzZXMuIiIiCisgICAgaWYgbWV0aG9kIGluIFVuYXJ5UmVzdHJpY3RlZDoKKyAgICAgICAgZXhwX3JhbmdlID0gcmVzdHJpY3RlZF9yYW5nZQorICAgIGZvciBvcCBpbiBhbGxfdW5hcnkocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB0ID0gVGVzdFNldChtZXRob2QsIG9wKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBub3QgY29udmVydCh0KToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgY2FsbGZ1bmNzKHQpCisgICAgICAgICAgICB2ZXJpZnkodCwgc3RhdCkKKyAgICAgICAgZXhjZXB0IFZlcmlmeUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIGxvZyhlcnIpCisKKyAgICBpZiBub3QgbWV0aG9kLnN0YXJ0c3dpdGgoJ19fJyk6CisgICAgICAgIGZvciBvcCBpbiB1bmFyeV9vcHRhcmcocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICAgICAgdCA9IFRlc3RTZXQobWV0aG9kLCBvcCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBub3QgY29udmVydCh0KToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjYWxsZnVuY3ModCkKKyAgICAgICAgICAgICAgICB2ZXJpZnkodCwgc3RhdCkKKyAgICAgICAgICAgIGV4Y2VwdCBWZXJpZnlFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgbG9nKGVycikKKworZGVmIHRlc3RfYmluYXJ5KG1ldGhvZCwgcHJlYywgZXhwX3JhbmdlLCByZXN0cmljdGVkX3JhbmdlLCBpdHIsIHN0YXQpOgorICAgICIiIkl0ZXJhdGUgYSBiaW5hcnkgZnVuY3Rpb24gdGhyb3VnaCBtYW55IHRlc3QgY2FzZXMuIiIiCisgICAgaWYgbWV0aG9kIGluIEJpbmFyeVJlc3RyaWN0ZWQ6CisgICAgICAgIGV4cF9yYW5nZSA9IHJlc3RyaWN0ZWRfcmFuZ2UKKyAgICBmb3Igb3AgaW4gYWxsX2JpbmFyeShwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHQgPSBUZXN0U2V0KG1ldGhvZCwgb3ApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIG5vdCBjb252ZXJ0KHQpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBjYWxsZnVuY3ModCkKKyAgICAgICAgICAgIHZlcmlmeSh0LCBzdGF0KQorICAgICAgICBleGNlcHQgVmVyaWZ5RXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgbG9nKGVycikKKworICAgIGlmIG5vdCBtZXRob2Quc3RhcnRzd2l0aCgnX18nKToKKyAgICAgICAgZm9yIG9wIGluIGJpbmFyeV9vcHRhcmcocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICAgICAgdCA9IFRlc3RTZXQobWV0aG9kLCBvcCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBub3QgY29udmVydCh0KToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjYWxsZnVuY3ModCkKKyAgICAgICAgICAgICAgICB2ZXJpZnkodCwgc3RhdCkKKyAgICAgICAgICAgIGV4Y2VwdCBWZXJpZnlFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgbG9nKGVycikKKworZGVmIHRlc3RfdGVybmFyeShtZXRob2QsIHByZWMsIGV4cF9yYW5nZSwgcmVzdHJpY3RlZF9yYW5nZSwgaXRyLCBzdGF0KToKKyAgICAiIiJJdGVyYXRlIGEgdGVybmFyeSBmdW5jdGlvbiB0aHJvdWdoIG1hbnkgdGVzdCBjYXNlcy4iIiIKKyAgICBpZiBtZXRob2QgaW4gVGVybmFyeVJlc3RyaWN0ZWQ6CisgICAgICAgIGV4cF9yYW5nZSA9IHJlc3RyaWN0ZWRfcmFuZ2UKKyAgICBmb3Igb3AgaW4gYWxsX3Rlcm5hcnkocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB0ID0gVGVzdFNldChtZXRob2QsIG9wKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBub3QgY29udmVydCh0KToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgY2FsbGZ1bmNzKHQpCisgICAgICAgICAgICB2ZXJpZnkodCwgc3RhdCkKKyAgICAgICAgZXhjZXB0IFZlcmlmeUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIGxvZyhlcnIpCisKKyAgICBpZiBub3QgbWV0aG9kLnN0YXJ0c3dpdGgoJ19fJyk6CisgICAgICAgIGZvciBvcCBpbiB0ZXJuYXJ5X29wdGFyZyhwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgICAgICAgICB0ID0gVGVzdFNldChtZXRob2QsIG9wKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIG5vdCBjb252ZXJ0KHQpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGNhbGxmdW5jcyh0KQorICAgICAgICAgICAgICAgIHZlcmlmeSh0LCBzdGF0KQorICAgICAgICAgICAgZXhjZXB0IFZlcmlmeUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBsb2coZXJyKQorCitkZWYgdGVzdF9mb3JtYXQobWV0aG9kLCBwcmVjLCBleHBfcmFuZ2UsIHJlc3RyaWN0ZWRfcmFuZ2UsIGl0ciwgc3RhdCk6CisgICAgIiIiSXRlcmF0ZSB0aGUgX19mb3JtYXRfXyBtZXRob2QgdGhyb3VnaCBtYW55IHRlc3QgY2FzZXMuIiIiCisgICAgZm9yIG9wIGluIGFsbF91bmFyeShwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgICAgIGZtdDEgPSByYW5kX2Zvcm1hdChjaHIocmFuZG9tLnJhbmRyYW5nZSgzMiwgMTI4KSksICdFZUdnbicpCisgICAgICAgIGZtdDIgPSByYW5kX2xvY2FsZSgpCisgICAgICAgIGZvciBmbXQgaW4gKGZtdDEsIGZtdDIpOgorICAgICAgICAgICAgZm10b3AgPSAob3BbMF0sIGZtdCkKKyAgICAgICAgICAgIHQgPSBUZXN0U2V0KG1ldGhvZCwgZm10b3ApCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgbm90IGNvbnZlcnQodCwgY29udnN0cj1GYWxzZSk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgY2FsbGZ1bmNzKHQpCisgICAgICAgICAgICAgICAgdmVyaWZ5KHQsIHN0YXQpCisgICAgICAgICAgICBleGNlcHQgVmVyaWZ5RXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgIGxvZyhlcnIpCisgICAgZm9yIG9wIGluIGFsbF91bmFyeShwcmVjLCA5OTk5LCBpdHIpOgorICAgICAgICBmbXQxID0gcmFuZF9mb3JtYXQoY2hyKHJhbmRvbS5yYW5kcmFuZ2UoMzIsIDEyOCkpLCAnRmYlJykKKyAgICAgICAgZm10MiA9IHJhbmRfbG9jYWxlKCkKKyAgICAgICAgZm9yIGZtdCBpbiAoZm10MSwgZm10Mik6CisgICAgICAgICAgICBmbXRvcCA9IChvcFswXSwgZm10KQorICAgICAgICAgICAgdCA9IFRlc3RTZXQobWV0aG9kLCBmbXRvcCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBub3QgY29udmVydCh0LCBjb252c3RyPUZhbHNlKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjYWxsZnVuY3ModCkKKyAgICAgICAgICAgICAgICB2ZXJpZnkodCwgc3RhdCkKKyAgICAgICAgICAgIGV4Y2VwdCBWZXJpZnlFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgbG9nKGVycikKKworZGVmIHRlc3Rfcm91bmQobWV0aG9kLCBwcmVjLCBleHByYW5nZSwgcmVzdHJpY3RlZF9yYW5nZSwgaXRyLCBzdGF0KToKKyAgICAiIiJJdGVyYXRlIHRoZSBfX3JvdW5kX18gbWV0aG9kIHRocm91Z2ggbWFueSB0ZXN0IGNhc2VzLiIiIgorICAgIGZvciBvcCBpbiBhbGxfdW5hcnkocHJlYywgOTk5OSwgaXRyKToKKyAgICAgICAgbiA9IHJhbmRvbS5yYW5kcmFuZ2UoMTApCisgICAgICAgIHJvdW5kb3AgPSAob3BbMF0sIG4pCisgICAgICAgIHQgPSBUZXN0U2V0KG1ldGhvZCwgcm91bmRvcCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgbm90IGNvbnZlcnQodCk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGNhbGxmdW5jcyh0KQorICAgICAgICAgICAgdmVyaWZ5KHQsIHN0YXQpCisgICAgICAgIGV4Y2VwdCBWZXJpZnlFcnJvciBhcyBlcnI6CisgICAgICAgICAgICBsb2coZXJyKQorCitkZWYgdGVzdF9mcm9tX2Zsb2F0KG1ldGhvZCwgcHJlYywgZXhwcmFuZ2UsIHJlc3RyaWN0ZWRfcmFuZ2UsIGl0ciwgc3RhdCk6CisgICAgIiIiSXRlcmF0ZSB0aGUgX19mbG9hdF9fIG1ldGhvZCB0aHJvdWdoIG1hbnkgdGVzdCBjYXNlcy4iIiIKKyAgICBmb3Igcm91bmRpbmcgaW4gUm91bmRNb2RlczoKKyAgICAgICAgY29udGV4dC5yb3VuZGluZyA9IHJvdW5kaW5nCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMDApOgorICAgICAgICAgICAgZiA9IHJhbmRmbG9hdCgpCisgICAgICAgICAgICBvcCA9IChmLCkgaWYgbWV0aG9kLnN0YXJ0c3dpdGgoImNvbnRleHQuIikgZWxzZSAoInNOYU4iLCBmKQorICAgICAgICAgICAgdCA9IFRlc3RTZXQobWV0aG9kLCBvcCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBub3QgY29udmVydCh0KToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjYWxsZnVuY3ModCkKKyAgICAgICAgICAgICAgICB2ZXJpZnkodCwgc3RhdCkKKyAgICAgICAgICAgIGV4Y2VwdCBWZXJpZnlFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgbG9nKGVycikKKworZGVmIHJhbmRjb250ZXh0KGV4cHJhbmdlKToKKyAgICBjID0gQ29udGV4dChDLkNvbnRleHQoKSwgUC5Db250ZXh0KCkpCisgICAgYy5FbWF4ID0gcmFuZG9tLnJhbmRyYW5nZSgxLCBleHByYW5nZSsxKQorICAgIGMuRW1pbiA9IHJhbmRvbS5yYW5kcmFuZ2UoLWV4cHJhbmdlLCAwKQorICAgIG1heHByZWMgPSAxMDAgaWYgYy5FbWF4ID49IDEwMCBlbHNlIGMuRW1heAorICAgIGMucHJlYyA9IHJhbmRvbS5yYW5kcmFuZ2UoMSwgbWF4cHJlYysxKQorICAgIGMuY2xhbXAgPSByYW5kb20ucmFuZHJhbmdlKDIpCisgICAgYy5jbGVhcl90cmFwcygpCisgICAgcmV0dXJuIGMKKworZGVmIHRlc3RfcXVhbnRpemVfYXBpKG1ldGhvZCwgcHJlYywgZXhwcmFuZ2UsIHJlc3RyaWN0ZWRfcmFuZ2UsIGl0ciwgc3RhdCk6CisgICAgIiIiSXRlcmF0ZSB0aGUgJ3F1YW50aXplJyBtZXRob2QgdGhyb3VnaCBtYW55IHRlc3QgY2FzZXMsIHVzaW5nCisgICAgICAgdGhlIG9wdGlvbmFsIGFyZ3VtZW50cy4iIiIKKyAgICBmb3Igb3AgaW4gYWxsX2JpbmFyeShwcmVjLCByZXN0cmljdGVkX3JhbmdlLCBpdHIpOgorICAgICAgICBmb3Igcm91bmRpbmcgaW4gUm91bmRNb2RlczoKKyAgICAgICAgICAgIGMgPSByYW5kY29udGV4dChleHByYW5nZSkKKyAgICAgICAgICAgIHF1YW50aXplb3AgPSAob3BbMF0sIG9wWzFdLCByb3VuZGluZywgYykKKyAgICAgICAgICAgIHQgPSBUZXN0U2V0KG1ldGhvZCwgcXVhbnRpemVvcCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBub3QgY29udmVydCh0KToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjYWxsZnVuY3ModCkKKyAgICAgICAgICAgICAgICB2ZXJpZnkodCwgc3RhdCkKKyAgICAgICAgICAgIGV4Y2VwdCBWZXJpZnlFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgbG9nKGVycikKKworCitkZWYgY2hlY2tfdW50ZXN0ZWQoZnVuY2RpY3QsIGNfY2xzLCBwX2Nscyk6CisgICAgIiIiRGV0ZXJtaW5lIHVudGVzdGVkLCBDLW9ubHkgYW5kIFB5dGhvbi1vbmx5IGF0dHJpYnV0ZXMuCisgICAgICAgVW5jb21tZW50IHByaW50IGxpbmVzIGZvciBkZWJ1Z2dpbmcuIiIiCisgICAgY19hdHRyID0gc2V0KGRpcihjX2NscykpCisgICAgcF9hdHRyID0gc2V0KGRpcihwX2NscykpCisgICAgaW50ZXJzZWN0ID0gY19hdHRyICYgcF9hdHRyCisKKyAgICBmdW5jZGljdFsnY19vbmx5J10gPSB0dXBsZShzb3J0ZWQoY19hdHRyLWludGVyc2VjdCkpCisgICAgZnVuY2RpY3RbJ3Bfb25seSddID0gdHVwbGUoc29ydGVkKHBfYXR0ci1pbnRlcnNlY3QpKQorCisgICAgdGVzdGVkID0gc2V0KCkKKyAgICBmb3IgbHN0IGluIGZ1bmNkaWN0LnZhbHVlcygpOgorICAgICAgICBmb3IgdiBpbiBsc3Q6CisgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKCJjb250ZXh0LiIsICIiKSBpZiBjX2NscyA9PSBDLkNvbnRleHQgZWxzZSB2CisgICAgICAgICAgICB0ZXN0ZWQuYWRkKHYpCisKKyAgICBmdW5jZGljdFsndW50ZXN0ZWQnXSA9IHR1cGxlKHNvcnRlZChpbnRlcnNlY3QtdGVzdGVkKSkKKworICAgICNmb3Iga2V5IGluICgndW50ZXN0ZWQnLCAnY19vbmx5JywgJ3Bfb25seScpOgorICAgICMgICAgcyA9ICdDb250ZXh0JyBpZiBjX2NscyA9PSBDLkNvbnRleHQgZWxzZSAnRGVjaW1hbCcKKyAgICAjICAgIHByaW50KCJcbiVzICVzOlxuJXMiICUgKHMsIGtleSwgZnVuY2RpY3Rba2V5XSkpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKworICAgIGltcG9ydCB0aW1lCisKKyAgICByYW5kc2VlZCA9IGludCh0aW1lLnRpbWUoKSkKKyAgICByYW5kb20uc2VlZChyYW5kc2VlZCkKKworICAgICMgU2V0IHVwIHRoZSB0ZXN0c3BlY3MgbGlzdC4gQSB0ZXN0c3BlYyBpcyBzaW1wbHkgYSBkaWN0aW9uYXJ5CisgICAgIyB0aGF0IGRldGVybWluZXMgdGhlIGFtb3VudCBvZiBkaWZmZXJlbnQgY29udGV4dHMgdGhhdCAndGVzdF9tZXRob2QnCisgICAgIyB3aWxsIGdlbmVyYXRlLgorICAgIGJhc2VfZXhwdHMgPSBbKEMuTUlOX0VNSU4sIEMuTUFYX0VNQVgpXQorICAgIGlmIEMuTUFYX0VNQVggPT0gOTk5OTk5OTk5OTk5OTk5OTk5OgorICAgICAgICBiYXNlX2V4cHRzLmFwcGVuZCgoLTk5OTk5OTk5OSwgOTk5OTk5OTk5KSkKKworICAgICMgQmFzaWMgY29udGV4dHMuCisgICAgYmFzZSA9IHsKKyAgICAgICAgJ2V4cHRzJzogYmFzZV9leHB0cywKKyAgICAgICAgJ3ByZWMnOiBbXSwKKyAgICAgICAgJ2NsYW1wJzogJ3JhbmQnLAorICAgICAgICAnaXRlcic6IE5vbmUsCisgICAgICAgICdzYW1wbGVzJzogTm9uZSwKKyAgICB9CisgICAgIyBDb250ZXh0cyB3aXRoIHNtYWxsIHZhbHVlcyBmb3IgcHJlYywgZW1pbiwgZW1heC4KKyAgICBzbWFsbCA9IHsKKyAgICAgICAgJ3ByZWMnOiBbMSwgMiwgMywgNCwgNV0sCisgICAgICAgICdleHB0cyc6IFsoLTEsIDEpLCAoLTIsIDIpLCAoLTMsIDMpLCAoLTQsIDQpLCAoLTUsIDUpXSwKKyAgICAgICAgJ2NsYW1wJzogJ3JhbmQnLAorICAgICAgICAnaXRlcic6IE5vbmUKKyAgICB9CisgICAgIyBJRUVFIGludGVyY2hhbmdlIGZvcm1hdC4KKyAgICBpZWVlID0gWworICAgICAgICAjIERFQ0lNQUwzMgorICAgICAgICB7J3ByZWMnOiBbN10sICdleHB0cyc6IFsoLTk1LCA5NildLCAnY2xhbXAnOiAxLCAnaXRlcic6IE5vbmV9LAorICAgICAgICAjIERFQ0lNQUw2NAorICAgICAgICB7J3ByZWMnOiBbMTZdLCAnZXhwdHMnOiBbKC0zODMsIDM4NCldLCAnY2xhbXAnOiAxLCAnaXRlcic6IE5vbmV9LAorICAgICAgICAjIERFQ0lNQUwxMjgKKyAgICAgICAgeydwcmVjJzogWzM0XSwgJ2V4cHRzJzogWygtNjE0MywgNjE0NCldLCAnY2xhbXAnOiAxLCAnaXRlcic6IE5vbmV9CisgICAgXQorCisgICAgaWYgJy0tbWVkaXVtJyBpbiBzeXMuYXJndjoKKyAgICAgICAgYmFzZVsnZXhwdHMnXS5hcHBlbmQoKCdyYW5kJywgJ3JhbmQnKSkKKyAgICAgICAgIyA1IHJhbmRvbSBwcmVjaXNpb25zCisgICAgICAgIGJhc2VbJ3NhbXBsZXMnXSA9IDUKKyAgICAgICAgdGVzdHNwZWNzID0gW3NtYWxsXSArIGllZWUgKyBbYmFzZV0KKyAgICBpZiAnLS1sb25nJyBpbiBzeXMuYXJndjoKKyAgICAgICAgYmFzZVsnZXhwdHMnXS5hcHBlbmQoKCdyYW5kJywgJ3JhbmQnKSkKKyAgICAgICAgIyAxMCByYW5kb20gcHJlY2lzaW9ucworICAgICAgICBiYXNlWydzYW1wbGVzJ10gPSAxMAorICAgICAgICB0ZXN0c3BlY3MgPSBbc21hbGxdICsgaWVlZSArIFtiYXNlXQorICAgIGVsaWYgJy0tYWxsJyBpbiBzeXMuYXJndjoKKyAgICAgICAgYmFzZVsnZXhwdHMnXS5hcHBlbmQoKCdyYW5kJywgJ3JhbmQnKSkKKyAgICAgICAgIyBBbGwgcHJlY2lzaW9ucyBpbiBbMSwgMTAwXQorICAgICAgICBiYXNlWydzYW1wbGVzJ10gPSAxMDAKKyAgICAgICAgdGVzdHNwZWNzID0gW3NtYWxsXSArIGllZWUgKyBbYmFzZV0KKyAgICBlbHNlOiAjIC0tc2hvcnQKKyAgICAgICAgcmFuZF9pZWVlID0gcmFuZG9tLmNob2ljZShpZWVlKQorICAgICAgICBiYXNlWydpdGVyJ10gPSBzbWFsbFsnaXRlciddID0gcmFuZF9pZWVlWydpdGVyJ10gPSAxCisgICAgICAgICMgMSByYW5kb20gcHJlY2lzaW9uIGFuZCBleHBvbmVudCBwYWlyCisgICAgICAgIGJhc2VbJ3NhbXBsZXMnXSA9IDEKKyAgICAgICAgYmFzZVsnZXhwdHMnXSA9IFtyYW5kb20uY2hvaWNlKGJhc2VfZXhwdHMpXQorICAgICAgICAjIDEgcmFuZG9tIHByZWNpc2lvbiBhbmQgZXhwb25lbnQgcGFpcgorICAgICAgICBwcmVjID0gcmFuZG9tLnJhbmRyYW5nZSgxLCA2KQorICAgICAgICBzbWFsbFsncHJlYyddID0gW3ByZWNdCisgICAgICAgIHNtYWxsWydleHB0cyddID0gWygtcHJlYywgcHJlYyldCisgICAgICAgIHRlc3RzcGVjcyA9IFtzbWFsbCwgcmFuZF9pZWVlLCBiYXNlXQorCisgICAgY2hlY2tfdW50ZXN0ZWQoRnVuY3Rpb25zLCBDLkRlY2ltYWwsIFAuRGVjaW1hbCkKKyAgICBjaGVja191bnRlc3RlZChDb250ZXh0RnVuY3Rpb25zLCBDLkNvbnRleHQsIFAuQ29udGV4dCkKKworCisgICAgbG9nKCJcblxuUmFuZG9tIHNlZWQ6ICVkXG5cbiIsIHJhbmRzZWVkKQorCisgICAgIyBEZWNpbWFsIG1ldGhvZHM6CisgICAgZm9yIG1ldGhvZCBpbiBGdW5jdGlvbnNbJ3VuYXJ5J10gKyBGdW5jdGlvbnNbJ3VuYXJ5X2N0eCddICsgXAorICAgICAgICAgICAgICAgICAgRnVuY3Rpb25zWyd1bmFyeV9ybmRfY3R4J106CisgICAgICAgIHRlc3RfbWV0aG9kKG1ldGhvZCwgdGVzdHNwZWNzLCB0ZXN0X3VuYXJ5KQorCisgICAgZm9yIG1ldGhvZCBpbiBGdW5jdGlvbnNbJ2JpbmFyeSddICsgRnVuY3Rpb25zWydiaW5hcnlfY3R4J106CisgICAgICAgIHRlc3RfbWV0aG9kKG1ldGhvZCwgdGVzdHNwZWNzLCB0ZXN0X2JpbmFyeSkKKworICAgIGZvciBtZXRob2QgaW4gRnVuY3Rpb25zWyd0ZXJuYXJ5J10gKyBGdW5jdGlvbnNbJ3Rlcm5hcnlfY3R4J106CisgICAgICAgIHRlc3RfbWV0aG9kKG1ldGhvZCwgdGVzdHNwZWNzLCB0ZXN0X3Rlcm5hcnkpCisKKyAgICB0ZXN0X21ldGhvZCgnX19mb3JtYXRfXycsIHRlc3RzcGVjcywgdGVzdF9mb3JtYXQpCisgICAgdGVzdF9tZXRob2QoJ19fcm91bmRfXycsIHRlc3RzcGVjcywgdGVzdF9yb3VuZCkKKyAgICB0ZXN0X21ldGhvZCgnZnJvbV9mbG9hdCcsIHRlc3RzcGVjcywgdGVzdF9mcm9tX2Zsb2F0KQorICAgIHRlc3RfbWV0aG9kKCdxdWFudGl6ZScsIHRlc3RzcGVjcywgdGVzdF9xdWFudGl6ZV9hcGkpCisKKyAgICAjIENvbnRleHQgbWV0aG9kczoKKyAgICBmb3IgbWV0aG9kIGluIENvbnRleHRGdW5jdGlvbnNbJ3VuYXJ5J106CisgICAgICAgIHRlc3RfbWV0aG9kKG1ldGhvZCwgdGVzdHNwZWNzLCB0ZXN0X3VuYXJ5KQorCisgICAgZm9yIG1ldGhvZCBpbiBDb250ZXh0RnVuY3Rpb25zWydiaW5hcnknXToKKyAgICAgICAgdGVzdF9tZXRob2QobWV0aG9kLCB0ZXN0c3BlY3MsIHRlc3RfYmluYXJ5KQorCisgICAgZm9yIG1ldGhvZCBpbiBDb250ZXh0RnVuY3Rpb25zWyd0ZXJuYXJ5J106CisgICAgICAgIHRlc3RfbWV0aG9kKG1ldGhvZCwgdGVzdHNwZWNzLCB0ZXN0X3Rlcm5hcnkpCisKKyAgICB0ZXN0X21ldGhvZCgnY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0JywgdGVzdHNwZWNzLCB0ZXN0X2Zyb21fZmxvYXQpCisKKworICAgIHN5cy5leGl0KEVYSVRfU1RBVFVTKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9mb3JtYXRoZWxwZXIucHkgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2Zvcm1hdGhlbHBlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGEyYjM3Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9mb3JtYXRoZWxwZXIucHkKQEAgLTAsMCArMSwzNDQgQEAKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIworIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisjIFNVQ0ggREFNQUdFLgorIworCisKKyMgR2VuZXJhdGUgUEVQLTMxMDEgZm9ybWF0IHN0cmluZ3MuCisKKworaW1wb3J0IG9zLCBzeXMsIGxvY2FsZSwgcmFuZG9tCitpbXBvcnQgcGxhdGZvcm0sIHN1YnByb2Nlc3MKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBpbXBvcnRfZnJlc2hfbW9kdWxlCitmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgZmluZF9leGVjdXRhYmxlCisKK0MgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdkZWNpbWFsJywgZnJlc2g9WydfZGVjaW1hbCddKQorUCA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBibG9ja2VkPVsnX2RlY2ltYWwnXSkKKworCit3aW5kb3dzX2xhbmdfc3RyaW5ncyA9IFsKKyAgImNoaW5lc2UiLCAiY2hpbmVzZS1zaW1wbGlmaWVkIiwgImNoaW5lc2UtdHJhZGl0aW9uYWwiLCAiY3plY2giLCAiZGFuaXNoIiwKKyAgImR1dGNoIiwgImJlbGdpYW4iLCAiZW5nbGlzaCIsICJhdXN0cmFsaWFuIiwgImNhbmFkaWFuIiwgImVuZ2xpc2gtbnoiLAorICAiZW5nbGlzaC11ayIsICJlbmdsaXNoLXVzIiwgImZpbm5pc2giLCAiZnJlbmNoIiwgImZyZW5jaC1iZWxnaWFuIiwKKyAgImZyZW5jaC1jYW5hZGlhbiIsICJmcmVuY2gtc3dpc3MiLCAiZ2VybWFuIiwgImdlcm1hbi1hdXN0cmlhbiIsCisgICJnZXJtYW4tc3dpc3MiLCAiZ3JlZWsiLCAiaHVuZ2FyaWFuIiwgImljZWxhbmRpYyIsICJpdGFsaWFuIiwgIml0YWxpYW4tc3dpc3MiLAorICAiamFwYW5lc2UiLCAia29yZWFuIiwgIm5vcndlZ2lhbiIsICJub3J3ZWdpYW4tYm9rbWFsIiwgIm5vcndlZ2lhbi1ueW5vcnNrIiwKKyAgInBvbGlzaCIsICJwb3J0dWd1ZXNlIiwgInBvcnR1Z3Vlc2UtYnJhemlsIiwgInJ1c3NpYW4iLCAic2xvdmFrIiwgInNwYW5pc2giLAorICAic3BhbmlzaC1tZXhpY2FuIiwgInNwYW5pc2gtbW9kZXJuIiwgInN3ZWRpc2giLCAidHVya2lzaCIsCitdCisKK3ByZWZlcnJlZF9lbmNvZGluZyA9IHsKKyAgJ2NzX0NaJzogJ0lTTzg4NTktMicsCisgICdjc19DWi5pc284ODU5Mic6ICdJU084ODU5LTInLAorICAnY3plY2gnOiAnSVNPODg1OS0yJywKKyAgJ2Vlc3RpJzogJ0lTTzg4NTktMScsCisgICdlc3Rvbmlhbic6ICdJU084ODU5LTEnLAorICAnZXRfRUUnOiAnSVNPODg1OS0xNScsCisgICdldF9FRS5JU08tODg1OS0xNSc6ICdJU084ODU5LTE1JywKKyAgJ2V0X0VFLmlzbzg4NTkxNSc6ICdJU084ODU5LTE1JywKKyAgJ2V0X0VFLmlzbzg4NTkxJzogJ0lTTzg4NTktMScsCisgICdmaV9GSS5pc284ODU5MSc6ICdJU084ODU5LTEnLAorICAnZmlfRkknOiAnSVNPODg1OS0xNScsCisgICdmaV9GSUBldXJvJzogJ0lTTzg4NTktMTUnLAorICAnZmlfRkkuaXNvODg1OTE1QGV1cm8nOiAnSVNPODg1OS0xNScsCisgICdmaW5uaXNoJzogJ0lTTzg4NTktMScsCisgICdsdl9MVic6ICdJU084ODU5LTEzJywKKyAgJ2x2X0xWLmlzbzg4NTkxMyc6ICdJU084ODU5LTEzJywKKyAgJ25iX05PJzogJ0lTTzg4NTktMScsCisgICduYl9OTy5pc284ODU5MSc6ICdJU084ODU5LTEnLAorICAnYm9rbWFsJzogJ0lTTzg4NTktMScsCisgICdubl9OTyc6ICdJU084ODU5LTEnLAorICAnbm5fTk8uaXNvODg1OTEnOiAnSVNPODg1OS0xJywKKyAgJ25vX05PJzogJ0lTTzg4NTktMScsCisgICdub3J3ZWdpYW4nOiAnSVNPODg1OS0xJywKKyAgJ255bm9yc2snOiAnSVNPODg1OS0xJywKKyAgJ3J1X1JVJzogJ0lTTzg4NTktNScsCisgICdydV9SVS5pc284ODU5NSc6ICdJU084ODU5LTUnLAorICAncnVzc2lhbic6ICdJU084ODU5LTUnLAorICAncnVfUlUuS09JOC1SJzogJ0tPSTgtUicsCisgICdydV9SVS5rb2k4cic6ICdLT0k4LVInLAorICAncnVfUlUuQ1AxMjUxJzogJ0NQMTI1MScsCisgICdydV9SVS5jcDEyNTEnOiAnQ1AxMjUxJywKKyAgJ3NrX1NLJzogJ0lTTzg4NTktMicsCisgICdza19TSy5pc284ODU5Mic6ICdJU084ODU5LTInLAorICAnc2xvdmFrJzogJ0lTTzg4NTktMicsCisgICdzdl9GSSc6ICdJU084ODU5LTEnLAorICAnc3ZfRkkuaXNvODg1OTEnOiAnSVNPODg1OS0xJywKKyAgJ3N2X0ZJQGV1cm8nOiAnSVNPODg1OS0xNScsCisgICdzdl9GSS5pc284ODU5MTVAZXVybyc6ICdJU084ODU5LTE1JywKKyAgJ3VrX1VBJzogJ0tPSTgtVScsCisgICd1a19VQS5rb2k4dSc6ICdLT0k4LVUnCit9CisKK2ludGVnZXJzID0gWworICAiIiwKKyAgIjEiLAorICAiMTIiLAorICAiMTIzIiwKKyAgIjEyMzQiLAorICAiMTIzNDUiLAorICAiMTIzNDU2IiwKKyAgIjEyMzQ1NjciLAorICAiMTIzNDU2NzgiLAorICAiMTIzNDU2Nzg5IiwKKyAgIjEyMzQ1Njc4OTAiLAorICAiMTIzNDU2Nzg5MDEiLAorICAiMTIzNDU2Nzg5MDEyIiwKKyAgIjEyMzQ1Njc4OTAxMjMiLAorICAiMTIzNDU2Nzg5MDEyMzQiLAorICAiMTIzNDU2Nzg5MDEyMzQ1IiwKKyAgIjEyMzQ1Njc4OTAxMjM0NTYiLAorICAiMTIzNDU2Nzg5MDEyMzQ1NjciLAorICAiMTIzNDU2Nzg5MDEyMzQ1Njc4IiwKKyAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkiLAorICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiLAorICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxIiwKKyAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIiLAorXQorCitudW1iZXJzID0gWworICAiMCIsICItMCIsICIrMCIsCisgICIwLjAiLCAiLTAuMCIsICIrMC4wIiwKKyAgIjBlMCIsICItMGUwIiwgIiswZTAiLAorICAiLjAiLCAiLS4wIiwKKyAgIi4xIiwgIi0uMSIsCisgICIxLjEiLCAiLTEuMSIsCisgICIxZTEiLCAiLTFlMSIKK10KKworIyBHZXQgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGxvY2FsZXMuCitpZiBwbGF0Zm9ybS5zeXN0ZW0oKSA9PSAnV2luZG93cyc6CisgICAgbG9jYWxlX2xpc3QgPSB3aW5kb3dzX2xhbmdfc3RyaW5ncworZWxzZToKKyAgICBsb2NhbGVfbGlzdCA9IFsnQyddCisgICAgaWYgb3MucGF0aC5pc2ZpbGUoIi92YXIvbGliL2xvY2FsZXMvc3VwcG9ydGVkLmQvbG9jYWwiKToKKyAgICAgICAgIyBPbiBVYnVudHUsIGBsb2NhbGUgLWFgIGdpdmVzIHRoZSB3cm9uZyBjYXNlIGZvciBzb21lIGxvY2FsZXMsCisgICAgICAgICMgc28gd2UgZ2V0IHRoZSBjb3JyZWN0IG5hbWVzIGRpcmVjdGx5OgorICAgICAgICB3aXRoIG9wZW4oIi92YXIvbGliL2xvY2FsZXMvc3VwcG9ydGVkLmQvbG9jYWwiKSBhcyBmOgorICAgICAgICAgICAgbG9jYWxlX2xpc3QgPSBbbG9jLnNwbGl0KClbMF0gZm9yIGxvYyBpbiBmLnJlYWRsaW5lcygpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsb2Muc3RhcnRzd2l0aCgnIycpXQorICAgIGVsaWYgZmluZF9leGVjdXRhYmxlKCdsb2NhbGUnKToKKyAgICAgICAgbG9jYWxlX2xpc3QgPSBzdWJwcm9jZXNzLlBvcGVuKFsibG9jYWxlIiwgIi1hIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLmNvbW11bmljYXRlKClbMF0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbG9jYWxlX2xpc3QgPSBsb2NhbGVfbGlzdC5kZWNvZGUoKQorICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgIyBTb21lIGRpc3RyaWJ1dGlvbnMgaW5zaXN0IG9uIHVzaW5nIGxhdGluLTEgY2hhcmFjdGVycworICAgICAgICAgICAgIyBpbiB0aGVpciBsb2NhbGUgbmFtZXMuCisgICAgICAgICAgICBsb2NhbGVfbGlzdCA9IGxvY2FsZV9saXN0LmRlY29kZSgnbGF0aW4tMScpCisgICAgICAgIGxvY2FsZV9saXN0ID0gbG9jYWxlX2xpc3Quc3BsaXQoJ1xuJykKK3RyeToKKyAgICBsb2NhbGVfbGlzdC5yZW1vdmUoJycpCitleGNlcHQgVmFsdWVFcnJvcjoKKyAgICBwYXNzCisKKyMgRGViaWFuCitpZiBvcy5wYXRoLmlzZmlsZSgiL2V0Yy9sb2NhbGUuYWxpYXMiKToKKyAgICB3aXRoIG9wZW4oIi9ldGMvbG9jYWxlLmFsaWFzIikgYXMgZjoKKyAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBsaW5lID0gZi5yZWFkbGluZSgpCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBsaW5lID09ICIiOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJyMnKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgeCA9IGxpbmUuc3BsaXQoKQorICAgICAgICAgICAgaWYgbGVuKHgpID09IDI6CisgICAgICAgICAgICAgICAgaWYgeFswXSBpbiBsb2NhbGVfbGlzdDoKKyAgICAgICAgICAgICAgICAgICAgbG9jYWxlX2xpc3QucmVtb3ZlKHhbMF0pCisKKyMgRnJlZUJTRAoraWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gJ0ZyZWVCU0QnOgorICAgICMgaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jZ2kvcXVlcnktcHIuY2dpP3ByPTE0MjE3MworICAgICMgZW5fR0IuVVMtQVNDSUkgaGFzIDE2MyBhcyB0aGUgY3VycmVuY3kgc3ltYm9sLgorICAgIGZvciBsb2MgaW4gWydpdF9DSC5JU084ODU5LTEnLCAnaXRfQ0guSVNPODg1OS0xNScsICdpdF9DSC5VVEYtOCcsCisgICAgICAgICAgICAgICAgJ2l0X0lULklTTzg4NTktMScsICdpdF9JVC5JU084ODU5LTE1JywgJ2l0X0lULlVURi04JywKKyAgICAgICAgICAgICAgICAnc2xfU0kuSVNPODg1OS0yJywgJ3NsX1NJLlVURi04JywKKyAgICAgICAgICAgICAgICAnZW5fR0IuVVMtQVNDSUknXToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbG9jYWxlX2xpc3QucmVtb3ZlKGxvYykKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyMgUHJpbnQgYSB0ZXN0Y2FzZSBpbiB0aGUgZm9ybWF0IG9mIHRoZSBJQk0gdGVzdHMgKGZvciBydW50ZXN0LmMpOgorZGVmIGdldF9wcmVmZXJyZWRfZW5jb2RpbmcoKToKKyAgICBsb2MgPSBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19DVFlQRSkKKyAgICBpZiBsb2MgaW4gcHJlZmVycmVkX2VuY29kaW5nOgorICAgICAgICByZXR1cm4gcHJlZmVycmVkX2VuY29kaW5nW2xvY10KKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKCkKKworZGVmIHByaW50aXQodGVzdG5vLCBzLCBmbXQsIGVuY29kaW5nPU5vbmUpOgorICAgIGlmIG5vdCBlbmNvZGluZzoKKyAgICAgICAgZW5jb2RpbmcgPSBnZXRfcHJlZmVycmVkX2VuY29kaW5nKCkKKyAgICB0cnk6CisgICAgICAgIHJlc3VsdCA9IGZvcm1hdChQLkRlY2ltYWwocyksIGZtdCkKKyAgICAgICAgZm10ID0gc3RyKGZtdC5lbmNvZGUoZW5jb2RpbmcpKVsyOi0xXQorICAgICAgICByZXN1bHQgPSBzdHIocmVzdWx0LmVuY29kZShlbmNvZGluZykpWzI6LTFdCisgICAgICAgIGlmICInIiBpbiByZXN1bHQ6CisgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJ4Zm10JWQgIGZvcm1hdCAgJXMgICclcycgIC0+ICBcIiVzXCJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAodGVzdG5vLCBzLCBmbXQsIHJlc3VsdCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJ4Zm10JWQgIGZvcm1hdCAgJXMgICclcycgIC0+ICAnJXMnXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHRlc3RubywgcywgZm10LCByZXN1bHQpKQorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgorICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCIlcyAgJXMgICVzXG4iICUgKGVyciwgcywgZm10KSkKKworCisjIENoZWNrIGlmIGFuIGludGVnZXIgY2FuIGJlIGNvbnZlcnRlZCB0byBhIHZhbGlkIGZpbGwgY2hhcmFjdGVyLgorZGVmIGNoZWNrX2ZpbGxjaGFyKGkpOgorICAgIHRyeToKKyAgICAgICAgYyA9IGNocihpKQorICAgICAgICBjLmVuY29kZSgndXRmLTgnKS5kZWNvZGUoKQorICAgICAgICBmb3JtYXQoUC5EZWNpbWFsKDApLCBjICsgJzwxOWcnKQorICAgICAgICBpZiBjIGluICgiJyIsICciJywgJ1xcJyk6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gYworICAgIGV4Y2VwdDoKKyAgICAgICAgcmV0dXJuIE5vbmUKKworIyBHZW5lcmF0ZSBhbGwgdW5pY29kZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIGFjY2VwdGVkIGFzCisjIGZpbGwgY2hhcmFjdGVycyBieSBkZWNpbWFsLnB5LgorZGVmIGFsbF9maWxsY2hhcnMoKToKKyAgICBmb3IgaSBpbiByYW5nZSgzMiwgMHgxMTAwMDIpOgorICAgICAgICBjID0gY2hlY2tfZmlsbGNoYXIoaSkKKyAgICAgICAgaWYgYzogeWllbGQgYworCisjIFJldHVybiByYW5kb20gZmlsbCBjaGFyYWN0ZXIuCitkZWYgcmFuZF9maWxsY2hhcigpOgorICAgIHdoaWxlIDE6CisgICAgICAgIGkgPSByYW5kb20ucmFuZHJhbmdlKDMyLCAweDExMDAwMikKKyAgICAgICAgYyA9IGNoZWNrX2ZpbGxjaGFyKGkpCisgICAgICAgIGlmIGM6IHJldHVybiBjCisKKyMgR2VuZXJhdGUgcmFuZG9tIGZvcm1hdCBzdHJpbmdzCisjIFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdWy5wcmVjaXNpb25dW3R5cGVdCitkZWYgcmFuZF9mb3JtYXQoZmlsbCwgdHlwZXNwZWM9J0VlR2dGZm4lJyk6CisgICAgYWN0aXZlID0gc29ydGVkKHJhbmRvbS5zYW1wbGUocmFuZ2UoNyksIHJhbmRvbS5yYW5kcmFuZ2UoOCkpKQorICAgIGhhdmVfYWxpZ24gPSAwCisgICAgcyA9ICcnCisgICAgZm9yIGVsZW0gaW4gYWN0aXZlOgorICAgICAgICBpZiBlbGVtID09IDA6ICMgZmlsbCthbGlnbgorICAgICAgICAgICAgcyArPSBmaWxsCisgICAgICAgICAgICBzICs9IHJhbmRvbS5jaG9pY2UoJzw+PV4nKQorICAgICAgICAgICAgaGF2ZV9hbGlnbiA9IDEKKyAgICAgICAgZWxpZiBlbGVtID09IDE6ICMgc2lnbgorICAgICAgICAgICAgcyArPSByYW5kb20uY2hvaWNlKCcrLSAnKQorICAgICAgICBlbGlmIGVsZW0gPT0gMiBhbmQgbm90IGhhdmVfYWxpZ246ICMgemVyb3BhZAorICAgICAgICAgICAgcyArPSAnMCcKKyAgICAgICAgZWxpZiBlbGVtID09IDM6ICMgd2lkdGgKKyAgICAgICAgICAgIHMgKz0gc3RyKHJhbmRvbS5yYW5kcmFuZ2UoMSwgMTAwKSkKKyAgICAgICAgZWxpZiBlbGVtID09IDQ6ICMgdGhvdXNhbmRzIHNlcGFyYXRvcgorICAgICAgICAgICAgcyArPSAnLCcKKyAgICAgICAgZWxpZiBlbGVtID09IDU6ICMgcHJlYworICAgICAgICAgICAgcyArPSAnLicKKyAgICAgICAgICAgIHMgKz0gc3RyKHJhbmRvbS5yYW5kcmFuZ2UoMTAwKSkKKyAgICAgICAgZWxpZiBlbGVtID09IDY6CisgICAgICAgICAgICBpZiA0IGluIGFjdGl2ZTogYyA9IHR5cGVzcGVjLnJlcGxhY2UoJ24nLCAnJykKKyAgICAgICAgICAgIGVsc2U6IGMgPSB0eXBlc3BlYworICAgICAgICAgICAgcyArPSByYW5kb20uY2hvaWNlKGMpCisgICAgcmV0dXJuIHMKKworIyBQYXJ0aWFsbHkgYnJ1dGUgZm9yY2UgYWxsIHBvc3NpYmxlIGZvcm1hdCBzdHJpbmdzIGNvbnRhaW5pbmcgYSB0aG91c2FuZHMKKyMgc2VwYXJhdG9yLiBGYWxsIGJhY2sgdG8gcmFuZG9tIHdoZXJlIHRoZSBydW50aW1lIHdvdWxkIGJlY29tZSBleGNlc3NpdmUuCisjIFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW3R5cGVdCitkZWYgYWxsX2Zvcm1hdF9zZXAoKToKKyAgICBmb3IgYWxpZ24gaW4gKCcnLCAnPCcsICc+JywgJz0nLCAnXicpOgorICAgICAgICBmb3IgZmlsbCBpbiAoJycsICd4Jyk6CisgICAgICAgICAgICBpZiBhbGlnbiA9PSAnJzogZmlsbCA9ICcnCisgICAgICAgICAgICBmb3Igc2lnbiBpbiAoJycsICcrJywgJy0nLCAnICcpOgorICAgICAgICAgICAgICAgIGZvciB6ZXJvcGFkIGluICgnJywgJzAnKToKKyAgICAgICAgICAgICAgICAgICAgaWYgYWxpZ24gIT0gJyc6IHplcm9wYWQgPSAnJworICAgICAgICAgICAgICAgICAgICBmb3Igd2lkdGggaW4gWycnXStbc3RyKHkpIGZvciB5IGluIHJhbmdlKDEsIDE1KV0rWycxMDEnXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwcmVjIGluIFsnJ10rWycuJytzdHIoeSkgZm9yIHkgaW4gcmFuZ2UoMTUpXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZvciB0eXBlIGluICgnJywgJ0UnLCAnZScsICdHJywgJ2cnLCAnRicsICdmJywgJyUnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gcmFuZG9tLmNob2ljZSgoJycsICdFJywgJ2UnLCAnRycsICdnJywgJ0YnLCAnZicsICclJykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgJycuam9pbigoZmlsbCwgYWxpZ24sIHNpZ24sIHplcm9wYWQsIHdpZHRoLCAnLCcsIHByZWMsIHR5cGUpKQorCisjIFBhcnRpYWxseSBicnV0ZSBmb3JjZSBhbGwgcG9zc2libGUgZm9ybWF0IHN0cmluZ3Mgd2l0aCBhbiAnbicgc3BlY2lmaWVyLgorIyBbW2ZpbGxdYWxpZ25dW3NpZ25dWyNdWzBdW3dpZHRoXVssXVsucHJlY2lzaW9uXVt0eXBlXQorZGVmIGFsbF9mb3JtYXRfbG9jKCk6CisgICAgZm9yIGFsaWduIGluICgnJywgJzwnLCAnPicsICc9JywgJ14nKToKKyAgICAgICAgZm9yIGZpbGwgaW4gKCcnLCAneCcpOgorICAgICAgICAgICAgaWYgYWxpZ24gPT0gJyc6IGZpbGwgPSAnJworICAgICAgICAgICAgZm9yIHNpZ24gaW4gKCcnLCAnKycsICctJywgJyAnKToKKyAgICAgICAgICAgICAgICBmb3IgemVyb3BhZCBpbiAoJycsICcwJyk6CisgICAgICAgICAgICAgICAgICAgIGlmIGFsaWduICE9ICcnOiB6ZXJvcGFkID0gJycKKyAgICAgICAgICAgICAgICAgICAgZm9yIHdpZHRoIGluIFsnJ10rW3N0cih5KSBmb3IgeSBpbiByYW5nZSgxLCAyMCldK1snMTAxJ106CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcHJlYyBpbiBbJyddK1snLicrc3RyKHkpIGZvciB5IGluIHJhbmdlKDEsIDIwKV06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgJycuam9pbigoZmlsbCwgYWxpZ24sIHNpZ24sIHplcm9wYWQsIHdpZHRoLCBwcmVjLCAnbicpKQorCisjIEdlbmVyYXRlIHJhbmRvbSBmb3JtYXQgc3RyaW5ncyB3aXRoIGEgdW5pY29kZSBmaWxsIGNoYXJhY3RlcgorIyBbW2ZpbGxdYWxpZ25dW3NpZ25dWyNdWzBdW3dpZHRoXVssXVsucHJlY2lzaW9uXVt0eXBlXQorZGVmIHJhbmRmaWxsKGZpbGwpOgorICAgIGFjdGl2ZSA9IHNvcnRlZChyYW5kb20uc2FtcGxlKHJhbmdlKDUpLCByYW5kb20ucmFuZHJhbmdlKDYpKSkKKyAgICBzID0gJycKKyAgICBzICs9IHN0cihmaWxsKQorICAgIHMgKz0gcmFuZG9tLmNob2ljZSgnPD49XicpCisgICAgZm9yIGVsZW0gaW4gYWN0aXZlOgorICAgICAgICBpZiBlbGVtID09IDA6ICMgc2lnbgorICAgICAgICAgICAgcyArPSByYW5kb20uY2hvaWNlKCcrLSAnKQorICAgICAgICBlbGlmIGVsZW0gPT0gMTogIyB3aWR0aAorICAgICAgICAgICAgcyArPSBzdHIocmFuZG9tLnJhbmRyYW5nZSgxLCAxMDApKQorICAgICAgICBlbGlmIGVsZW0gPT0gMjogIyB0aG91c2FuZHMgc2VwYXJhdG9yCisgICAgICAgICAgICBzICs9ICcsJworICAgICAgICBlbGlmIGVsZW0gPT0gMzogIyBwcmVjCisgICAgICAgICAgICBzICs9ICcuJworICAgICAgICAgICAgcyArPSBzdHIocmFuZG9tLnJhbmRyYW5nZSgxMDApKQorICAgICAgICBlbGlmIGVsZW0gPT0gNDoKKyAgICAgICAgICAgIGlmIDIgaW4gYWN0aXZlOiBjID0gJ0VlR2dGZiUnCisgICAgICAgICAgICBlbHNlOiBjID0gJ0VlR2dGZm4lJworICAgICAgICAgICAgcyArPSByYW5kb20uY2hvaWNlKGMpCisgICAgcmV0dXJuIHMKKworIyBHZW5lcmF0ZSByYW5kb20gZm9ybWF0IHN0cmluZ3Mgd2l0aCByYW5kb20gbG9jYWxlIHNldHRpbmcKKyMgW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVt3aWR0aF1bLF1bLnByZWNpc2lvbl1bdHlwZV0KK2RlZiByYW5kX2xvY2FsZSgpOgorICAgIHRyeToKKyAgICAgICAgbG9jID0gcmFuZG9tLmNob2ljZShsb2NhbGVfbGlzdCkKKyAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQUxMLCBsb2MpCisgICAgZXhjZXB0IGxvY2FsZS5FcnJvciBhcyBlcnI6CisgICAgICAgIHBhc3MKKyAgICBhY3RpdmUgPSBzb3J0ZWQocmFuZG9tLnNhbXBsZShyYW5nZSg1KSwgcmFuZG9tLnJhbmRyYW5nZSg2KSkpCisgICAgcyA9ICcnCisgICAgaGF2ZV9hbGlnbiA9IDAKKyAgICBmb3IgZWxlbSBpbiBhY3RpdmU6CisgICAgICAgIGlmIGVsZW0gPT0gMDogIyBmaWxsK2FsaWduCisgICAgICAgICAgICBzICs9IGNocihyYW5kb20ucmFuZHJhbmdlKDMyLCAxMjgpKQorICAgICAgICAgICAgcyArPSByYW5kb20uY2hvaWNlKCc8Pj1eJykKKyAgICAgICAgICAgIGhhdmVfYWxpZ24gPSAxCisgICAgICAgIGVsaWYgZWxlbSA9PSAxOiAjIHNpZ24KKyAgICAgICAgICAgIHMgKz0gcmFuZG9tLmNob2ljZSgnKy0gJykKKyAgICAgICAgZWxpZiBlbGVtID09IDIgYW5kIG5vdCBoYXZlX2FsaWduOiAjIHplcm9wYWQKKyAgICAgICAgICAgIHMgKz0gJzAnCisgICAgICAgIGVsaWYgZWxlbSA9PSAzOiAjIHdpZHRoCisgICAgICAgICAgICBzICs9IHN0cihyYW5kb20ucmFuZHJhbmdlKDEsIDEwMCkpCisgICAgICAgIGVsaWYgZWxlbSA9PSA0OiAjIHByZWMKKyAgICAgICAgICAgIHMgKz0gJy4nCisgICAgICAgICAgICBzICs9IHN0cihyYW5kb20ucmFuZHJhbmdlKDEwMCkpCisgICAgcyArPSAnbicKKyAgICByZXR1cm4gcwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9yYW5kZGVjLnB5IGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9yYW5kZGVjLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhMGYwZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3JhbmRkZWMucHkKQEAgLTAsMCArMSw1NzcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjCisjIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMKKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisjIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisjIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorIyBTVUNIIERBTUFHRS4KKyMKKworCisjIEdlbmVyYXRlIHRlc3QgY2FzZXMgZm9yIGRlY2NoZWNrLnB5LgorCisKKyMKKyMgR3JhbW1hciBmcm9tIGh0dHA6Ly9zcGVsZW90cm92ZS5jb20vZGVjaW1hbC9kYWNvbnZzLmh0bWwKKyMKKyMgc2lnbiAgICAgICAgICAgOjo9ICAnKycgfCAnLScKKyMgZGlnaXQgICAgICAgICAgOjo9ICAnMCcgfCAnMScgfCAnMicgfCAnMycgfCAnNCcgfCAnNScgfCAnNicgfCAnNycgfAorIyAgICAgICAgICAgICAgICAgICAgICc4JyB8ICc5JworIyBpbmRpY2F0b3IgICAgICA6Oj0gICdlJyB8ICdFJworIyBkaWdpdHMgICAgICAgICA6Oj0gIGRpZ2l0IFtkaWdpdF0uLi4KKyMgZGVjaW1hbC1wYXJ0ICAgOjo9ICBkaWdpdHMgJy4nIFtkaWdpdHNdIHwgWycuJ10gZGlnaXRzCisjIGV4cG9uZW50LXBhcnQgIDo6PSAgaW5kaWNhdG9yIFtzaWduXSBkaWdpdHMKKyMgaW5maW5pdHkgICAgICAgOjo9ICAnSW5maW5pdHknIHwgJ0luZicKKyMgbmFuICAgICAgICAgICAgOjo9ICAnTmFOJyBbZGlnaXRzXSB8ICdzTmFOJyBbZGlnaXRzXQorIyBudW1lcmljLXZhbHVlICA6Oj0gIGRlY2ltYWwtcGFydCBbZXhwb25lbnQtcGFydF0gfCBpbmZpbml0eQorIyBudW1lcmljLXN0cmluZyA6Oj0gIFtzaWduXSBudW1lcmljLXZhbHVlIHwgW3NpZ25dIG5hbgorIworCisKK2Zyb20gcmFuZG9tIGltcG9ydCByYW5kcmFuZ2UsIHNhbXBsZQorZnJvbSBmcmFjdGlvbnMgaW1wb3J0IEZyYWN0aW9uCitmcm9tIHJhbmRmbG9hdCBpbXBvcnQgdW5fcmFuZGZsb2F0LCBiaW5fcmFuZGZsb2F0LCB0ZXJuX3JhbmRmbG9hdAorCisKK2RlZiBzaWduKCk6CisgICAgaWYgcmFuZHJhbmdlKDIpOgorICAgICAgICBpZiByYW5kcmFuZ2UoMik6IHJldHVybiAnKycKKyAgICAgICAgcmV0dXJuICcnCisgICAgcmV0dXJuICctJworCitkZWYgaW5kaWNhdG9yKCk6CisgICAgcmV0dXJuICJlRSJbcmFuZHJhbmdlKDIpXQorCitkZWYgZGlnaXRzKG1heHByZWMpOgorICAgIGlmIG1heHByZWMgPT0gMDogcmV0dXJuICcnCisgICAgcmV0dXJuIHN0cihyYW5kcmFuZ2UoMTAqKm1heHByZWMpKQorCitkZWYgZG90KCk6CisgICAgaWYgcmFuZHJhbmdlKDIpOiByZXR1cm4gJy4nCisgICAgcmV0dXJuICcnCisKK2RlZiBkZWNpbWFsX3BhcnQobWF4cHJlYyk6CisgICAgaWYgcmFuZHJhbmdlKDEwMCkgPiA2MDogIyBpbnRlZ2VycworICAgICAgICByZXR1cm4gZGlnaXRzKG1heHByZWMpCisgICAgaWYgcmFuZHJhbmdlKDIpOgorICAgICAgICBpbnRsZW4gPSByYW5kcmFuZ2UoMSwgbWF4cHJlYysxKQorICAgICAgICBmcmFjbGVuID0gbWF4cHJlYy1pbnRsZW4KKyAgICAgICAgaW50cGFydCA9IGRpZ2l0cyhpbnRsZW4pCisgICAgICAgIGZyYWNwYXJ0ID0gZGlnaXRzKGZyYWNsZW4pCisgICAgICAgIHJldHVybiAnJy5qb2luKChpbnRwYXJ0LCAnLicsIGZyYWNwYXJ0KSkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gJycuam9pbigoZG90KCksIGRpZ2l0cyhtYXhwcmVjKSkpCisKK2RlZiBleHBkaWdpdHMobWF4ZXhwKToKKyAgICByZXR1cm4gc3RyKHJhbmRyYW5nZShtYXhleHApKQorCitkZWYgZXhwb25lbnRfcGFydChtYXhleHApOgorICAgIHJldHVybiAnJy5qb2luKChpbmRpY2F0b3IoKSwgc2lnbigpLCBleHBkaWdpdHMobWF4ZXhwKSkpCisKK2RlZiBpbmZpbml0eSgpOgorICAgIGlmIHJhbmRyYW5nZSgyKTogcmV0dXJuICdJbmZpbml0eScKKyAgICByZXR1cm4gJ0luZicKKworZGVmIG5hbigpOgorICAgIGQgPSAnJworICAgIGlmIHJhbmRyYW5nZSgyKToKKyAgICAgICAgZCA9IGRpZ2l0cyhyYW5kcmFuZ2UoOTkpKQorICAgIGlmIHJhbmRyYW5nZSgyKToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oKCdOYU4nLCBkKSkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gJycuam9pbigoJ3NOYU4nLCBkKSkKKworZGVmIG51bWVyaWNfdmFsdWUobWF4cHJlYywgbWF4ZXhwKToKKyAgICBpZiByYW5kcmFuZ2UoMTAwKSA+IDkwOgorICAgICAgICByZXR1cm4gaW5maW5pdHkoKQorICAgIGV4cF9wYXJ0ID0gJycKKyAgICBpZiByYW5kcmFuZ2UoMTAwKSA+IDYwOgorICAgICAgICBleHBfcGFydCA9IGV4cG9uZW50X3BhcnQobWF4ZXhwKQorICAgIHJldHVybiAnJy5qb2luKChkZWNpbWFsX3BhcnQobWF4cHJlYyksIGV4cF9wYXJ0KSkKKworZGVmIG51bWVyaWNfc3RyaW5nKG1heHByZWMsIG1heGV4cCk6CisgICAgaWYgcmFuZHJhbmdlKDEwMCkgPiA5NToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oKHNpZ24oKSwgbmFuKCkpKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAnJy5qb2luKChzaWduKCksIG51bWVyaWNfdmFsdWUobWF4cHJlYywgbWF4ZXhwKSkpCisKK2RlZiByYW5kZGVjKG1heHByZWMsIG1heGV4cCk6CisgICAgcmV0dXJuIG51bWVyaWNfc3RyaW5nKG1heHByZWMsIG1heGV4cCkKKworZGVmIHJhbmRfYWRqZXhwKG1heHByZWMsIG1heGFkamV4cCk6CisgICAgZCA9IGRpZ2l0cyhtYXhwcmVjKQorICAgIG1heGV4cCA9IG1heGFkamV4cC1sZW4oZCkrMQorICAgIGlmIG1heGV4cCA9PSAwOiBtYXhleHAgPSAxCisgICAgZXhwID0gc3RyKHJhbmRyYW5nZShtYXhleHAtMiooYWJzKG1heGV4cCkpLCBtYXhleHApKQorICAgIHJldHVybiAnJy5qb2luKChzaWduKCksIGQsICdFJywgZXhwKSkKKworCitkZWYgbmRpZ2l0cyhuKToKKyAgICBpZiBuIDwgMTogcmV0dXJuIDAKKyAgICByZXR1cm4gcmFuZHJhbmdlKDEwKioobi0xKSwgMTAqKm4pCisKK2RlZiByYW5kdHVwbGUobWF4cHJlYywgbWF4ZXhwKToKKyAgICBuID0gcmFuZHJhbmdlKDEwMCkKKyAgICBzaWduID0gcmFuZHJhbmdlKDIpCisgICAgY29lZmYgPSBuZGlnaXRzKG1heHByZWMpCisgICAgaWYgbiA+PSA5NToKKyAgICAgICAgY29lZmYgPSAoKQorICAgICAgICBleHAgPSAnRicKKyAgICBlbGlmIG4gPj0gODU6CisgICAgICAgIGNvZWZmID0gdHVwbGUobWFwKGludCwgc3RyKG5kaWdpdHMobWF4cHJlYykpKSkKKyAgICAgICAgZXhwID0gIm5OIltyYW5kcmFuZ2UoMildCisgICAgZWxzZToKKyAgICAgICAgY29lZmYgPSB0dXBsZShtYXAoaW50LCBzdHIobmRpZ2l0cyhtYXhwcmVjKSkpKQorICAgICAgICBleHAgPSByYW5kcmFuZ2UoLW1heGV4cCwgbWF4ZXhwKQorICAgIHJldHVybiAoc2lnbiwgY29lZmYsIGV4cCkKKworZGVmIGZyb21fdHJpcGxlKHNpZ24sIGNvZWZmLCBleHApOgorICAgIHJldHVybiAnJy5qb2luKChzdHIoc2lnbipjb2VmZiksIGluZGljYXRvcigpLCBzdHIoZXhwKSkpCisKKworIyBDbG9zZSB0byAxMCoqbgorZGVmIHVuX2Nsb3NlX3RvX3BvdzEwKHByZWMsIG1heGV4cCwgaXRyPU5vbmUpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBsc3QgPSByYW5nZShwcmVjKzMwKQorICAgIGVsc2U6CisgICAgICAgIGxzdCA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgIG5pbmVzID0gWzEwKipuIC0gMSBmb3IgbiBpbiBsc3RdCisgICAgcG93MTAgPSBbMTAqKm4gZm9yIG4gaW4gbHN0XQorICAgIGZvciBjb2VmZiBpbiBuaW5lczoKKyAgICAgICAgeWllbGQgY29lZmYKKyAgICAgICAgeWllbGQgLWNvZWZmCisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKDEsIGNvZWZmLCByYW5kcmFuZ2UoMiptYXhleHApKQorICAgICAgICB5aWVsZCBmcm9tX3RyaXBsZSgtMSwgY29lZmYsIHJhbmRyYW5nZSgyKm1heGV4cCkpCisgICAgZm9yIGNvZWZmIGluIHBvdzEwOgorICAgICAgICB5aWVsZCBjb2VmZgorICAgICAgICB5aWVsZCAtY29lZmYKKworIyBDbG9zZSB0byAxMCoqbgorZGVmIGJpbl9jbG9zZV90b19wb3cxMChwcmVjLCBtYXhleHAsIGl0cj1Ob25lKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgbHN0ID0gcmFuZ2UocHJlYyszMCkKKyAgICBlbHNlOgorICAgICAgICBsc3QgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICBuaW5lcyA9IFsxMCoqbiAtIDEgZm9yIG4gaW4gbHN0XQorICAgIHBvdzEwID0gWzEwKipuIGZvciBuIGluIGxzdF0KKyAgICBmb3IgY29lZmYgaW4gbmluZXM6CisgICAgICAgIHlpZWxkIGNvZWZmLCAxCisgICAgICAgIHlpZWxkIC1jb2VmZiwgLTEKKyAgICAgICAgeWllbGQgMSwgY29lZmYKKyAgICAgICAgeWllbGQgLTEsIC1jb2VmZgorICAgICAgICB5aWVsZCBmcm9tX3RyaXBsZSgxLCBjb2VmZiwgcmFuZHJhbmdlKDIqbWF4ZXhwKSksIDEKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoLTEsIGNvZWZmLCByYW5kcmFuZ2UoMiptYXhleHApKSwgLTEKKyAgICAgICAgeWllbGQgMSwgZnJvbV90cmlwbGUoMSwgY29lZmYsIC1yYW5kcmFuZ2UoMiptYXhleHApKQorICAgICAgICB5aWVsZCAtMSwgZnJvbV90cmlwbGUoLTEsIGNvZWZmLCAtcmFuZHJhbmdlKDIqbWF4ZXhwKSkKKyAgICBmb3IgY29lZmYgaW4gcG93MTA6CisgICAgICAgIHlpZWxkIGNvZWZmLCAtMQorICAgICAgICB5aWVsZCAtY29lZmYsIDEKKyAgICAgICAgeWllbGQgMSwgLWNvZWZmCisgICAgICAgIHlpZWxkIC1jb2VmZiwgMQorCisjIENsb3NlIHRvIDE6CitkZWYgY2xvc2VfdG9fb25lX2dyZWF0ZXIocHJlYywgZW1heCwgZW1pbik6CisgICAgcnByZWMgPSAxMCoqcHJlYworICAgIHJldHVybiAnJy5qb2luKCgiMS4iLCAnMCcqcmFuZHJhbmdlKHByZWMpLAorICAgICAgICAgICAgICAgICAgIHN0cihyYW5kcmFuZ2UocnByZWMpKSkpCisKK2RlZiBjbG9zZV90b19vbmVfbGVzcyhwcmVjLCBlbWF4LCBlbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgcmV0dXJuICcnLmpvaW4oKCIwLjkiLCAnOScqcmFuZHJhbmdlKHByZWMpLAorICAgICAgICAgICAgICAgICAgIHN0cihyYW5kcmFuZ2UocnByZWMpKSkpCisKKyMgQ2xvc2UgdG8gMDoKK2RlZiBjbG9zZV90b196ZXJvX2dyZWF0ZXIocHJlYywgZW1heCwgZW1pbik6CisgICAgcnByZWMgPSAxMCoqcHJlYworICAgIHJldHVybiAnJy5qb2luKCgiMC4iLCAnMCcqcmFuZHJhbmdlKHByZWMpLAorICAgICAgICAgICAgICAgICAgIHN0cihyYW5kcmFuZ2UocnByZWMpKSkpCisKK2RlZiBjbG9zZV90b196ZXJvX2xlc3MocHJlYywgZW1heCwgZW1pbik6CisgICAgcnByZWMgPSAxMCoqcHJlYworICAgIHJldHVybiAnJy5qb2luKCgiLTAuIiwgJzAnKnJhbmRyYW5nZShwcmVjKSwKKyAgICAgICAgICAgICAgICAgICBzdHIocmFuZHJhbmdlKHJwcmVjKSkpKQorCisjIENsb3NlIHRvIGVtYXg6CitkZWYgY2xvc2VfdG9fZW1heF9sZXNzKHByZWMsIGVtYXgsIGVtaW4pOgorICAgIHJwcmVjID0gMTAqKnByZWMKKyAgICByZXR1cm4gJycuam9pbigoIjkuIiwgJzknKnJhbmRyYW5nZShwcmVjKSwKKyAgICAgICAgICAgICAgICAgICBzdHIocmFuZHJhbmdlKHJwcmVjKSksICJFIiwgc3RyKGVtYXgpKSkKKworZGVmIGNsb3NlX3RvX2VtYXhfZ3JlYXRlcihwcmVjLCBlbWF4LCBlbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgcmV0dXJuICcnLmpvaW4oKCIxLiIsICcwJypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpLCAiRSIsIHN0cihlbWF4KzEpKSkKKworIyBDbG9zZSB0byBlbWluOgorZGVmIGNsb3NlX3RvX2VtaW5fZ3JlYXRlcihwcmVjLCBlbWF4LCBlbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgcmV0dXJuICcnLmpvaW4oKCIxLiIsICcwJypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpLCAiRSIsIHN0cihlbWluKSkpCisKK2RlZiBjbG9zZV90b19lbWluX2xlc3MocHJlYywgZW1heCwgZW1pbik6CisgICAgcnByZWMgPSAxMCoqcHJlYworICAgIHJldHVybiAnJy5qb2luKCgiOS4iLCAnOScqcmFuZHJhbmdlKHByZWMpLAorICAgICAgICAgICAgICAgICAgIHN0cihyYW5kcmFuZ2UocnByZWMpKSwgIkUiLCBzdHIoZW1pbi0xKSkpCisKKyMgQ2xvc2UgdG8gZXRpbnk6CitkZWYgY2xvc2VfdG9fZXRpbnlfZ3JlYXRlcihwcmVjLCBlbWF4LCBlbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgZXRpbnkgPSBlbWluIC0gKHByZWMgLSAxKQorICAgIHJldHVybiAnJy5qb2luKCgiMS4iLCAnMCcqcmFuZHJhbmdlKHByZWMpLAorICAgICAgICAgICAgICAgICAgIHN0cihyYW5kcmFuZ2UocnByZWMpKSwgIkUiLCBzdHIoZXRpbnkpKSkKKworZGVmIGNsb3NlX3RvX2V0aW55X2xlc3MocHJlYywgZW1heCwgZW1pbik6CisgICAgcnByZWMgPSAxMCoqcHJlYworICAgIGV0aW55ID0gZW1pbiAtIChwcmVjIC0gMSkKKyAgICByZXR1cm4gJycuam9pbigoIjkuIiwgJzknKnJhbmRyYW5nZShwcmVjKSwKKyAgICAgICAgICAgICAgICAgICBzdHIocmFuZHJhbmdlKHJwcmVjKSksICJFIiwgc3RyKGV0aW55LTEpKSkKKworCitkZWYgY2xvc2VfdG9fbWluX2V0aW55X2dyZWF0ZXIocHJlYywgbWF4X3ByZWMsIG1pbl9lbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgZXRpbnkgPSBtaW5fZW1pbiAtIChtYXhfcHJlYyAtIDEpCisgICAgcmV0dXJuICcnLmpvaW4oKCIxLiIsICcwJypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpLCAiRSIsIHN0cihldGlueSkpKQorCitkZWYgY2xvc2VfdG9fbWluX2V0aW55X2xlc3MocHJlYywgbWF4X3ByZWMsIG1pbl9lbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgZXRpbnkgPSBtaW5fZW1pbiAtIChtYXhfcHJlYyAtIDEpCisgICAgcmV0dXJuICcnLmpvaW4oKCI5LiIsICc5JypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpLCAiRSIsIHN0cihldGlueS0xKSkpCisKKworY2xvc2VfZnVuY3MgPSBbCisgIGNsb3NlX3RvX29uZV9ncmVhdGVyLCBjbG9zZV90b19vbmVfbGVzcywgY2xvc2VfdG9femVyb19ncmVhdGVyLAorICBjbG9zZV90b196ZXJvX2xlc3MsIGNsb3NlX3RvX2VtYXhfbGVzcywgY2xvc2VfdG9fZW1heF9ncmVhdGVyLAorICBjbG9zZV90b19lbWluX2dyZWF0ZXIsIGNsb3NlX3RvX2VtaW5fbGVzcywgY2xvc2VfdG9fZXRpbnlfZ3JlYXRlciwKKyAgY2xvc2VfdG9fZXRpbnlfbGVzcywgY2xvc2VfdG9fbWluX2V0aW55X2dyZWF0ZXIsIGNsb3NlX3RvX21pbl9ldGlueV9sZXNzCitdCisKKworZGVmIHVuX2Nsb3NlX251bWJlcnMocHJlYywgZW1heCwgZW1pbiwgaXRyPU5vbmUpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBpdHIgPSAxMDAwCisgICAgZm9yIF8gaW4gcmFuZ2UoaXRyKToKKyAgICAgICAgZm9yIGZ1bmMgaW4gY2xvc2VfZnVuY3M6CisgICAgICAgICAgICB5aWVsZCBmdW5jKHByZWMsIGVtYXgsIGVtaW4pCisKK2RlZiBiaW5fY2xvc2VfbnVtYmVycyhwcmVjLCBlbWF4LCBlbWluLCBpdHI9Tm9uZSk6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGl0ciA9IDEwMDAKKyAgICBmb3IgXyBpbiByYW5nZShpdHIpOgorICAgICAgICBmb3IgZnVuYzEgaW4gY2xvc2VfZnVuY3M6CisgICAgICAgICAgICBmb3IgZnVuYzIgaW4gY2xvc2VfZnVuY3M6CisgICAgICAgICAgICAgICAgeWllbGQgZnVuYzEocHJlYywgZW1heCwgZW1pbiksIGZ1bmMyKHByZWMsIGVtYXgsIGVtaW4pCisgICAgICAgIGZvciBmdW5jIGluIGNsb3NlX2Z1bmNzOgorICAgICAgICAgICAgeWllbGQgcmFuZGRlYyhwcmVjLCBlbWF4KSwgZnVuYyhwcmVjLCBlbWF4LCBlbWluKQorICAgICAgICAgICAgeWllbGQgZnVuYyhwcmVjLCBlbWF4LCBlbWluKSwgcmFuZGRlYyhwcmVjLCBlbWF4KQorCitkZWYgdGVybl9jbG9zZV9udW1iZXJzKHByZWMsIGVtYXgsIGVtaW4sIGl0cik6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGl0ciA9IDEwMDAKKyAgICBmb3IgXyBpbiByYW5nZShpdHIpOgorICAgICAgICBmb3IgZnVuYzEgaW4gY2xvc2VfZnVuY3M6CisgICAgICAgICAgICBmb3IgZnVuYzIgaW4gY2xvc2VfZnVuY3M6CisgICAgICAgICAgICAgICAgZm9yIGZ1bmMzIGluIGNsb3NlX2Z1bmNzOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCAoZnVuYzEocHJlYywgZW1heCwgZW1pbiksIGZ1bmMyKHByZWMsIGVtYXgsIGVtaW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYzMocHJlYywgZW1heCwgZW1pbikpCisgICAgICAgIGZvciBmdW5jIGluIGNsb3NlX2Z1bmNzOgorICAgICAgICAgICAgeWllbGQgKHJhbmRkZWMocHJlYywgZW1heCksIGZ1bmMocHJlYywgZW1heCwgZW1pbiksCisgICAgICAgICAgICAgICAgICAgZnVuYyhwcmVjLCBlbWF4LCBlbWluKSkKKyAgICAgICAgICAgIHlpZWxkIChmdW5jKHByZWMsIGVtYXgsIGVtaW4pLCByYW5kZGVjKHByZWMsIGVtYXgpLAorICAgICAgICAgICAgICAgICAgIGZ1bmMocHJlYywgZW1heCwgZW1pbikpCisgICAgICAgICAgICB5aWVsZCAoZnVuYyhwcmVjLCBlbWF4LCBlbWluKSwgZnVuYyhwcmVjLCBlbWF4LCBlbWluKSwKKyAgICAgICAgICAgICAgICAgICByYW5kZGVjKHByZWMsIGVtYXgpKQorICAgICAgICBmb3IgZnVuYyBpbiBjbG9zZV9mdW5jczoKKyAgICAgICAgICAgIHlpZWxkIChyYW5kZGVjKHByZWMsIGVtYXgpLCByYW5kZGVjKHByZWMsIGVtYXgpLAorICAgICAgICAgICAgICAgICAgIGZ1bmMocHJlYywgZW1heCwgZW1pbikpCisgICAgICAgICAgICB5aWVsZCAocmFuZGRlYyhwcmVjLCBlbWF4KSwgZnVuYyhwcmVjLCBlbWF4LCBlbWluKSwKKyAgICAgICAgICAgICAgICAgICByYW5kZGVjKHByZWMsIGVtYXgpKQorICAgICAgICAgICAgeWllbGQgKGZ1bmMocHJlYywgZW1heCwgZW1pbiksIHJhbmRkZWMocHJlYywgZW1heCksCisgICAgICAgICAgICAgICAgICAgcmFuZGRlYyhwcmVjLCBlbWF4KSkKKworCisjIElmIGl0ciA9PSBOb25lLCB0ZXN0IGFsbCBkaWdpdCBsZW5ndGhzIHVwIHRvIHByZWMgKyAzMAorZGVmIHVuX2luY3JfZGlnaXRzKHByZWMsIG1heGV4cCwgaXRyKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgbHN0ID0gcmFuZ2UocHJlYyszMCkKKyAgICBlbHNlOgorICAgICAgICBsc3QgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICBmb3IgbSBpbiBsc3Q6CisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobSksIDApCisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG0pLCAwKQorICAgICAgICB5aWVsZCBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG0pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobSksIHJhbmRyYW5nZShtYXhleHApKQorCisjIElmIGl0ciA9PSBOb25lLCB0ZXN0IGFsbCBkaWdpdCBsZW5ndGhzIHVwIHRvIHByZWMgKyAzMAorIyBBbHNvIG91dHB1dCBkZWNpbWFscyBpbSB0dXBsZSBmb3JtLgorZGVmIHVuX2luY3JfZGlnaXRzX3R1cGxlKHByZWMsIG1heGV4cCwgaXRyKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgbHN0ID0gcmFuZ2UocHJlYyszMCkKKyAgICBlbHNlOgorICAgICAgICBsc3QgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICBmb3IgbSBpbiBsc3Q6CisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobSksIDApCisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG0pLCAwKQorICAgICAgICB5aWVsZCBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG0pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobSksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICAjIHRlc3QgZnJvbSB0dXBsZQorICAgICAgICB5aWVsZCAoMCwgdHVwbGUobWFwKGludCwgc3RyKG5kaWdpdHMobSkpKSksIDApCisgICAgICAgIHlpZWxkICgxLCB0dXBsZShtYXAoaW50LCBzdHIobmRpZ2l0cyhtKSkpKSwgMCkKKyAgICAgICAgeWllbGQgKDAsIHR1cGxlKG1hcChpbnQsIHN0cihuZGlnaXRzKG0pKSkpLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgeWllbGQgKDEsIHR1cGxlKG1hcChpbnQsIHN0cihuZGlnaXRzKG0pKSkpLCByYW5kcmFuZ2UobWF4ZXhwKSkKKworIyBJZiBpdHIgPT0gTm9uZSwgdGVzdCBhbGwgY29tYmluYXRpb25zIG9mIGRpZ2l0IGxlbmd0aHMgdXAgdG8gcHJlYyArIDMwCitkZWYgYmluX2luY3JfZGlnaXRzKHByZWMsIG1heGV4cCwgaXRyKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgbHN0MSA9IHJhbmdlKHByZWMrMzApCisgICAgICAgIGxzdDIgPSByYW5nZShwcmVjKzMwKQorICAgIGVsc2U6CisgICAgICAgIGxzdDEgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICAgICAgbHN0MiA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgIGZvciBtIGluIGxzdDE6CisgICAgICAgIHggPSBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG0pLCAwKQorICAgICAgICB5aWVsZCB4LCB4CisgICAgICAgIHggPSBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhtKSwgMCkKKyAgICAgICAgeWllbGQgeCwgeAorICAgICAgICB4ID0gZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhtKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgIHlpZWxkIHgsIHgKKyAgICAgICAgeCA9IGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG0pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgeWllbGQgeCwgeAorICAgIGZvciBtIGluIGxzdDE6CisgICAgICAgIGZvciBuIGluIGxzdDI6CisgICAgICAgICAgICB4ID0gZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhtKSwgMCkKKyAgICAgICAgICAgIHkgPSBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG4pLCAwKQorICAgICAgICAgICAgeWllbGQgeCwgeQorICAgICAgICAgICAgeCA9IGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG0pLCAwKQorICAgICAgICAgICAgeSA9IGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobiksIDApCisgICAgICAgICAgICB5aWVsZCB4LCB5CisgICAgICAgICAgICB4ID0gZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhtKSwgMCkKKyAgICAgICAgICAgIHkgPSBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhuKSwgMCkKKyAgICAgICAgICAgIHlpZWxkIHgsIHkKKyAgICAgICAgICAgIHggPSBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhtKSwgMCkKKyAgICAgICAgICAgIHkgPSBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhuKSwgMCkKKyAgICAgICAgICAgIHlpZWxkIHgsIHkKKyAgICAgICAgICAgIHggPSBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG0pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgICAgIHkgPSBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG4pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgICAgIHlpZWxkIHgsIHkKKyAgICAgICAgICAgIHggPSBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhtKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgICAgICB5ID0gZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhuKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgICAgICB5aWVsZCB4LCB5CisgICAgICAgICAgICB4ID0gZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhtKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgICAgICB5ID0gZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobiksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICAgICAgeWllbGQgeCwgeQorICAgICAgICAgICAgeCA9IGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG0pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgICAgIHkgPSBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhuKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgICAgICB5aWVsZCB4LCB5CisKKworZGVmIHJhbmRzaWduKCk6CisgICAgcmV0dXJuICgxLCAtMSlbcmFuZHJhbmdlKDIpXQorCisjIElmIGl0ciA9PSBOb25lLCB0ZXN0IGFsbCBjb21iaW5hdGlvbnMgb2YgZGlnaXQgbGVuZ3RocyB1cCB0byBwcmVjICsgMzAKK2RlZiB0ZXJuX2luY3JfZGlnaXRzKHByZWMsIG1heGV4cCwgaXRyKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgbHN0MSA9IHJhbmdlKHByZWMrMzApCisgICAgICAgIGxzdDIgPSByYW5nZShwcmVjKzMwKQorICAgICAgICBsc3QzID0gcmFuZ2UocHJlYyszMCkKKyAgICBlbHNlOgorICAgICAgICBsc3QxID0gc2FtcGxlKHJhbmdlKHByZWMrMzApLCBpdHIpCisgICAgICAgIGxzdDIgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICAgICAgbHN0MyA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgIGZvciBtIGluIGxzdDE6CisgICAgICAgIGZvciBuIGluIGxzdDI6CisgICAgICAgICAgICBmb3IgcCBpbiBsc3QzOgorICAgICAgICAgICAgICAgIHggPSBmcm9tX3RyaXBsZShyYW5kc2lnbigpLCBuZGlnaXRzKG0pLCAwKQorICAgICAgICAgICAgICAgIHkgPSBmcm9tX3RyaXBsZShyYW5kc2lnbigpLCBuZGlnaXRzKG4pLCAwKQorICAgICAgICAgICAgICAgIHogPSBmcm9tX3RyaXBsZShyYW5kc2lnbigpLCBuZGlnaXRzKHApLCAwKQorICAgICAgICAgICAgICAgIHlpZWxkIHgsIHksIHoKKworCisjIFRlc3RzIGZvciB0aGUgJ2xvZ2ljYWwnIGZ1bmN0aW9ucworZGVmIGJpbmRpZ2l0cyhwcmVjKToKKyAgICB6ID0gMAorICAgIGZvciBpIGluIHJhbmdlKHByZWMpOgorICAgICAgICB6ICs9IHJhbmRyYW5nZSgyKSAqIDEwKippCisgICAgcmV0dXJuIHoKKworZGVmIGxvZ2ljYWxfdW5faW5jcl9kaWdpdHMocHJlYywgaXRyKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgbHN0ID0gcmFuZ2UocHJlYyszMCkKKyAgICBlbHNlOgorICAgICAgICBsc3QgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICBmb3IgbSBpbiBsc3Q6CisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKDEsIGJpbmRpZ2l0cyhtKSwgMCkKKworZGVmIGxvZ2ljYWxfYmluX2luY3JfZGlnaXRzKHByZWMsIGl0cik6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGxzdDEgPSByYW5nZShwcmVjKzMwKQorICAgICAgICBsc3QyID0gcmFuZ2UocHJlYyszMCkKKyAgICBlbHNlOgorICAgICAgICBsc3QxID0gc2FtcGxlKHJhbmdlKHByZWMrMzApLCBpdHIpCisgICAgICAgIGxzdDIgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICBmb3IgbSBpbiBsc3QxOgorICAgICAgICB4ID0gZnJvbV90cmlwbGUoMSwgYmluZGlnaXRzKG0pLCAwKQorICAgICAgICB5aWVsZCB4LCB4CisgICAgZm9yIG0gaW4gbHN0MToKKyAgICAgICAgZm9yIG4gaW4gbHN0MjoKKyAgICAgICAgICAgIHggPSBmcm9tX3RyaXBsZSgxLCBiaW5kaWdpdHMobSksIDApCisgICAgICAgICAgICB5ID0gZnJvbV90cmlwbGUoMSwgYmluZGlnaXRzKG4pLCAwKQorICAgICAgICAgICAgeWllbGQgeCwgeQorCisKK2RlZiByYW5kaW50KCk6CisgICAgcCA9IHJhbmRyYW5nZSgxLCAxMDApCisgICAgcmV0dXJuIG5kaWdpdHMocCkgKiAoMSwtMSlbcmFuZHJhbmdlKDIpXQorCitkZWYgcmFuZGZsb2F0KCk6CisgICAgcCA9IHJhbmRyYW5nZSgxLCAxMDApCisgICAgcyA9IG51bWVyaWNfdmFsdWUocCwgMzgzKQorICAgIHRyeToKKyAgICAgICAgZiA9IGZsb2F0KG51bWVyaWNfdmFsdWUocCwgMzgzKSkKKyAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgZiA9IDAuMAorICAgIHJldHVybiBmCisKK2RlZiByYW5kY29tcGxleCgpOgorICAgIHJlYWwgPSByYW5kZmxvYXQoKQorICAgIGlmIHJhbmRyYW5nZSgxMDApID4gMzA6CisgICAgICAgIGltYWcgPSAwLjAKKyAgICBlbHNlOgorICAgICAgICBpbWFnID0gcmFuZGZsb2F0KCkKKyAgICByZXR1cm4gY29tcGxleChyZWFsLCBpbWFnKQorCitkZWYgcmFuZGZyYWN0aW9uKCk6CisgICAgbnVtID0gcmFuZGludCgpCisgICAgZGVub20gPSByYW5kaW50KCkKKyAgICBpZiBkZW5vbSA9PSAwOgorICAgICAgICBkZW5vbSA9IDEKKyAgICByZXR1cm4gRnJhY3Rpb24obnVtLCBkZW5vbSkKKworbnVtYmVyX2Z1bmNzID0gW3JhbmRpbnQsIHJhbmRmbG9hdCwgcmFuZGNvbXBsZXgsIHJhbmRmcmFjdGlvbl0KKworZGVmIHVuX3JhbmRvbV9taXhlZF9vcChpdHI9Tm9uZSk6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGl0ciA9IDEwMDAKKyAgICBmb3IgXyBpbiByYW5nZShpdHIpOgorICAgICAgICBmb3IgZnVuYyBpbiBudW1iZXJfZnVuY3M6CisgICAgICAgICAgICB5aWVsZCBmdW5jKCkKKyAgICAjIFRlc3QgZ2FyYmFnZSBpbnB1dAorICAgIGZvciB4IGluIChbJ3gnXSwgKCd5JywpLCB7J3onfSwgezE6J3onfSk6CisgICAgICAgIHlpZWxkIHgKKworZGVmIGJpbl9yYW5kb21fbWl4ZWRfb3AocHJlYywgZW1heCwgZW1pbiwgaXRyPU5vbmUpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBpdHIgPSAxMDAwCisgICAgZm9yIF8gaW4gcmFuZ2UoaXRyKToKKyAgICAgICAgZm9yIGZ1bmMgaW4gbnVtYmVyX2Z1bmNzOgorICAgICAgICAgICAgeWllbGQgcmFuZGRlYyhwcmVjLCBlbWF4KSwgZnVuYygpCisgICAgICAgICAgICB5aWVsZCBmdW5jKCksIHJhbmRkZWMocHJlYywgZW1heCkKKyAgICAgICAgZm9yIG51bWJlciBpbiBudW1iZXJfZnVuY3M6CisgICAgICAgICAgICBmb3IgZGVjIGluIGNsb3NlX2Z1bmNzOgorICAgICAgICAgICAgICAgIHlpZWxkIGRlYyhwcmVjLCBlbWF4LCBlbWluKSwgbnVtYmVyKCkKKyAgICAjIFRlc3QgZ2FyYmFnZSBpbnB1dAorICAgIGZvciB4IGluIChbJ3gnXSwgKCd5JywpLCB7J3onfSwgezE6J3onfSk6CisgICAgICAgIGZvciB5IGluIChbJ3gnXSwgKCd5JywpLCB7J3onfSwgezE6J3onfSk6CisgICAgICAgICAgICB5aWVsZCB4LCB5CisKK2RlZiB0ZXJuX3JhbmRvbV9taXhlZF9vcChwcmVjLCBlbWF4LCBlbWluLCBpdHIpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBpdHIgPSAxMDAwCisgICAgZm9yIF8gaW4gcmFuZ2UoaXRyKToKKyAgICAgICAgZm9yIGZ1bmMgaW4gbnVtYmVyX2Z1bmNzOgorICAgICAgICAgICAgeWllbGQgcmFuZGRlYyhwcmVjLCBlbWF4KSwgcmFuZGRlYyhwcmVjLCBlbWF4KSwgZnVuYygpCisgICAgICAgICAgICB5aWVsZCByYW5kZGVjKHByZWMsIGVtYXgpLCBmdW5jKCksIGZ1bmMoKQorICAgICAgICAgICAgeWllbGQgZnVuYygpLCBmdW5jKCksIGZ1bmMoKQorICAgICMgVGVzdCBnYXJiYWdlIGlucHV0CisgICAgZm9yIHggaW4gKFsneCddLCAoJ3knLCksIHsneid9LCB7MToneid9KToKKyAgICAgICAgZm9yIHkgaW4gKFsneCddLCAoJ3knLCksIHsneid9LCB7MToneid9KToKKyAgICAgICAgICAgIGZvciB6IGluIChbJ3gnXSwgKCd5JywpLCB7J3onfSwgezE6J3onfSk6CisgICAgICAgICAgICAgICAgeWllbGQgeCwgeSwgegorCitkZWYgYWxsX3VuYXJ5KHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICBmb3IgYSBpbiB1bl9jbG9zZV90b19wb3cxMChwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHlpZWxkIChhLCkKKyAgICBmb3IgYSBpbiB1bl9jbG9zZV9udW1iZXJzKHByZWMsIGV4cF9yYW5nZSwgLWV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgeWllbGQgKGEsKQorICAgIGZvciBhIGluIHVuX2luY3JfZGlnaXRzX3R1cGxlKHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgeWllbGQgKGEsKQorICAgIGZvciBhIGluIHVuX3JhbmRmbG9hdCgpOgorICAgICAgICB5aWVsZCAoYSwpCisgICAgZm9yIGEgaW4gdW5fcmFuZG9tX21peGVkX29wKGl0cik6CisgICAgICAgIHlpZWxkIChhLCkKKyAgICBmb3IgYSBpbiBsb2dpY2FsX3VuX2luY3JfZGlnaXRzKHByZWMsIGl0cik6CisgICAgICAgIHlpZWxkIChhLCkKKyAgICBmb3IgXyBpbiByYW5nZSgxMDApOgorICAgICAgICB5aWVsZCAocmFuZGRlYyhwcmVjLCBleHBfcmFuZ2UpLCkKKyAgICBmb3IgXyBpbiByYW5nZSgxMDApOgorICAgICAgICB5aWVsZCAocmFuZHR1cGxlKHByZWMsIGV4cF9yYW5nZSksKQorCitkZWYgdW5hcnlfb3B0YXJnKHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICBmb3IgXyBpbiByYW5nZSgxMDApOgorICAgICAgICB5aWVsZCByYW5kZGVjKHByZWMsIGV4cF9yYW5nZSksIE5vbmUKKyAgICAgICAgeWllbGQgcmFuZGRlYyhwcmVjLCBleHBfcmFuZ2UpLCBOb25lLCBOb25lCisKK2RlZiBhbGxfYmluYXJ5KHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICBmb3IgYSwgYiBpbiBiaW5fY2xvc2VfdG9fcG93MTAocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB5aWVsZCBhLCBiCisgICAgZm9yIGEsIGIgaW4gYmluX2Nsb3NlX251bWJlcnMocHJlYywgZXhwX3JhbmdlLCAtZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB5aWVsZCBhLCBiCisgICAgZm9yIGEsIGIgaW4gYmluX2luY3JfZGlnaXRzKHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgeWllbGQgYSwgYgorICAgIGZvciBhLCBiIGluIGJpbl9yYW5kZmxvYXQoKToKKyAgICAgICAgeWllbGQgYSwgYgorICAgIGZvciBhLCBiIGluIGJpbl9yYW5kb21fbWl4ZWRfb3AocHJlYywgZXhwX3JhbmdlLCAtZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB5aWVsZCBhLCBiCisgICAgZm9yIGEsIGIgaW4gbG9naWNhbF9iaW5faW5jcl9kaWdpdHMocHJlYywgaXRyKToKKyAgICAgICAgeWllbGQgYSwgYgorICAgIGZvciBfIGluIHJhbmdlKDEwMCk6CisgICAgICAgIHlpZWxkIHJhbmRkZWMocHJlYywgZXhwX3JhbmdlKSwgcmFuZGRlYyhwcmVjLCBleHBfcmFuZ2UpCisKK2RlZiBiaW5hcnlfb3B0YXJnKHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICBmb3IgXyBpbiByYW5nZSgxMDApOgorICAgICAgICB5aWVsZCByYW5kZGVjKHByZWMsIGV4cF9yYW5nZSksIHJhbmRkZWMocHJlYywgZXhwX3JhbmdlKSwgTm9uZQorICAgICAgICB5aWVsZCByYW5kZGVjKHByZWMsIGV4cF9yYW5nZSksIHJhbmRkZWMocHJlYywgZXhwX3JhbmdlKSwgTm9uZSwgTm9uZQorCitkZWYgYWxsX3Rlcm5hcnkocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgIGZvciBhLCBiLCBjIGluIHRlcm5fY2xvc2VfbnVtYmVycyhwcmVjLCBleHBfcmFuZ2UsIC1leHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHlpZWxkIGEsIGIsIGMKKyAgICBmb3IgYSwgYiwgYyBpbiB0ZXJuX2luY3JfZGlnaXRzKHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgeWllbGQgYSwgYiwgYworICAgIGZvciBhLCBiLCBjIGluIHRlcm5fcmFuZGZsb2F0KCk6CisgICAgICAgIHlpZWxkIGEsIGIsIGMKKyAgICBmb3IgYSwgYiwgYyBpbiB0ZXJuX3JhbmRvbV9taXhlZF9vcChwcmVjLCBleHBfcmFuZ2UsIC1leHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHlpZWxkIGEsIGIsIGMKKyAgICBmb3IgXyBpbiByYW5nZSgxMDApOgorICAgICAgICBhID0gcmFuZGRlYyhwcmVjLCAyKmV4cF9yYW5nZSkKKyAgICAgICAgYiA9IHJhbmRkZWMocHJlYywgMipleHBfcmFuZ2UpCisgICAgICAgIGMgPSByYW5kZGVjKHByZWMsIDIqZXhwX3JhbmdlKQorICAgICAgICB5aWVsZCBhLCBiLCBjCisKK2RlZiB0ZXJuYXJ5X29wdGFyZyhwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgZm9yIF8gaW4gcmFuZ2UoMTAwKToKKyAgICAgICAgYSA9IHJhbmRkZWMocHJlYywgMipleHBfcmFuZ2UpCisgICAgICAgIGIgPSByYW5kZGVjKHByZWMsIDIqZXhwX3JhbmdlKQorICAgICAgICBjID0gcmFuZGRlYyhwcmVjLCAyKmV4cF9yYW5nZSkKKyAgICAgICAgeWllbGQgYSwgYiwgYywgTm9uZQorICAgICAgICB5aWVsZCBhLCBiLCBjLCBOb25lLCBOb25lCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3JhbmRmbG9hdC5weSBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvcmFuZGZsb2F0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2ODczMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3JhbmRmbG9hdC5weQpAQCAtMCwwICsxLDI1MCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTAgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjIEFkYXB0ZWQgZnJvbSBQeXRob24ncyBMaWIvdGVzdC90ZXN0X3N0cnRvZC5weSAoYnkgTWFyayBEaWNraW5zb24pCisKKyMgTW9yZSB0ZXN0IGNhc2VzIGZvciBkZWNjaGVjay5weS4KKworaW1wb3J0IHJhbmRvbQorCitURVNUX1NJWkUgPSAyCisKKworZGVmIHRlc3Rfc2hvcnRfaGFsZndheV9jYXNlcygpOgorICAgICMgZXhhY3QgaGFsZndheSBjYXNlcyB3aXRoIGEgc21hbGwgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cworICAgIGZvciBrIGluIDAsIDUsIDEwLCAxNSwgMjA6CisgICAgICAgICMgdXBwZXIgPSBzbWFsbGVzdCBpbnRlZ2VyID49IDIqKjU0LzUqKmsKKyAgICAgICAgdXBwZXIgPSAtKC0yKio1NC8vNSoqaykKKyAgICAgICAgIyBsb3dlciA9IHNtYWxsZXN0IG9kZCBudW1iZXIgPj0gMioqNTMvNSoqaworICAgICAgICBsb3dlciA9IC0oLTIqKjUzLy81KiprKQorICAgICAgICBpZiBsb3dlciAlIDIgPT0gMDoKKyAgICAgICAgICAgIGxvd2VyICs9IDEKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAgKiBURVNUX1NJWkUpOgorICAgICAgICAgICAgIyBTZWxlY3QgYSByYW5kb20gb2RkIG4gaW4gWzIqKjUzLzUqKmssCisgICAgICAgICAgICAjIDIqKjU0LzUqKmspLiBUaGVuIG4gKiAxMCoqayBnaXZlcyBhIGhhbGZ3YXkgY2FzZQorICAgICAgICAgICAgIyB3aXRoIHNtYWxsIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMuCisgICAgICAgICAgICBuLCBlID0gcmFuZG9tLnJhbmRyYW5nZShsb3dlciwgdXBwZXIsIDIpLCBrCisKKyAgICAgICAgICAgICMgUmVtb3ZlIGFueSBhZGRpdGlvbmFsIHBvd2VycyBvZiA1LgorICAgICAgICAgICAgd2hpbGUgbiAlIDUgPT0gMDoKKyAgICAgICAgICAgICAgICBuLCBlID0gbiAvLyA1LCBlICsgMQorICAgICAgICAgICAgYXNzZXJ0IG4gJSAxMCBpbiAoMSwgMywgNywgOSkKKworICAgICAgICAgICAgIyBUcnkgbnVtYmVycyBvZiB0aGUgZm9ybSBuICogMioqcDIgKiAxMCoqZSwgcDIgPj0gMCwKKyAgICAgICAgICAgICMgdW50aWwgbiAqIDIqKnAyIGhhcyBtb3JlIHRoYW4gMjAgc2lnbmlmaWNhbnQgZGlnaXRzLgorICAgICAgICAgICAgZGlnaXRzLCBleHBvbmVudCA9IG4sIGUKKyAgICAgICAgICAgIHdoaWxlIGRpZ2l0cyA8IDEwKioyMDoKKyAgICAgICAgICAgICAgICBzID0gJ3t9ZXt9Jy5mb3JtYXQoZGlnaXRzLCBleHBvbmVudCkKKyAgICAgICAgICAgICAgICB5aWVsZCBzCisgICAgICAgICAgICAgICAgIyBTYW1lIGFnYWluLCBidXQgd2l0aCBleHRyYSB0cmFpbGluZyB6ZXJvcy4KKyAgICAgICAgICAgICAgICBzID0gJ3t9ZXt9Jy5mb3JtYXQoZGlnaXRzICogMTAqKjQwLCBleHBvbmVudCAtIDQwKQorICAgICAgICAgICAgICAgIHlpZWxkIHMKKyAgICAgICAgICAgICAgICBkaWdpdHMgKj0gMgorCisgICAgICAgICAgICAjIFRyeSBudW1iZXJzIG9mIHRoZSBmb3JtIG4gKiA1KipwMiAqIDEwKiooZSAtIHA1KSwgcDUKKyAgICAgICAgICAgICMgPj0gMCwgd2l0aCBuICogNSoqcDUgPCAxMCoqMjAuCisgICAgICAgICAgICBkaWdpdHMsIGV4cG9uZW50ID0gbiwgZQorICAgICAgICAgICAgd2hpbGUgZGlnaXRzIDwgMTAqKjIwOgorICAgICAgICAgICAgICAgIHMgPSAne31le30nLmZvcm1hdChkaWdpdHMsIGV4cG9uZW50KQorICAgICAgICAgICAgICAgIHlpZWxkIHMKKyAgICAgICAgICAgICAgICAjIFNhbWUgYWdhaW4sIGJ1dCB3aXRoIGV4dHJhIHRyYWlsaW5nIHplcm9zLgorICAgICAgICAgICAgICAgIHMgPSAne31le30nLmZvcm1hdChkaWdpdHMgKiAxMCoqNDAsIGV4cG9uZW50IC0gNDApCisgICAgICAgICAgICAgICAgeWllbGQgcworICAgICAgICAgICAgICAgIGRpZ2l0cyAqPSA1CisgICAgICAgICAgICAgICAgZXhwb25lbnQgLT0gMQorCitkZWYgdGVzdF9oYWxmd2F5X2Nhc2VzKCk6CisgICAgIyB0ZXN0IGhhbGZ3YXkgY2FzZXMgZm9yIHRoZSByb3VuZC1oYWxmLXRvLWV2ZW4gcnVsZQorICAgIGZvciBpIGluIHJhbmdlKDEwMDApOgorICAgICAgICBmb3IgaiBpbiByYW5nZShURVNUX1NJWkUpOgorICAgICAgICAgICAgIyBiaXQgcGF0dGVybiBmb3IgYSByYW5kb20gZmluaXRlIHBvc2l0aXZlIChvciArMC4wKSBmbG9hdAorICAgICAgICAgICAgYml0cyA9IHJhbmRvbS5yYW5kcmFuZ2UoMjA0NyoyKio1MikKKworICAgICAgICAgICAgIyBjb252ZXJ0IGJpdCBwYXR0ZXJuIHRvIGEgbnVtYmVyIG9mIHRoZSBmb3JtIG0gKiAyKiplCisgICAgICAgICAgICBlLCBtID0gZGl2bW9kKGJpdHMsIDIqKjUyKQorICAgICAgICAgICAgaWYgZToKKyAgICAgICAgICAgICAgICBtLCBlID0gbSArIDIqKjUyLCBlIC0gMQorICAgICAgICAgICAgZSAtPSAxMDc0CisKKyAgICAgICAgICAgICMgYWRkIDAuNSB1bHBzCisgICAgICAgICAgICBtLCBlID0gMiptICsgMSwgZSAtIDEKKworICAgICAgICAgICAgIyBjb252ZXJ0IHRvIGEgZGVjaW1hbCBzdHJpbmcKKyAgICAgICAgICAgIGlmIGUgPj0gMDoKKyAgICAgICAgICAgICAgICBkaWdpdHMgPSBtIDw8IGUKKyAgICAgICAgICAgICAgICBleHBvbmVudCA9IDAKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBtICogMioqZSA9IChtICogNSoqLWUpICogMTAqKmUKKyAgICAgICAgICAgICAgICBkaWdpdHMgPSBtICogNSoqLWUKKyAgICAgICAgICAgICAgICBleHBvbmVudCA9IGUKKyAgICAgICAgICAgIHMgPSAne31le30nLmZvcm1hdChkaWdpdHMsIGV4cG9uZW50KQorICAgICAgICAgICAgeWllbGQgcworCitkZWYgdGVzdF9ib3VuZGFyaWVzKCk6CisgICAgIyBib3VuZGFyaWVzIGV4cHJlc3NlZCBhcyB0cmlwbGVzIChuLCBlLCB1KSwgd2hlcmUKKyAgICAjIG4qMTAqKmUgaXMgYW4gYXBwcm94aW1hdGlvbiB0byB0aGUgYm91bmRhcnkgdmFsdWUgYW5kCisgICAgIyB1KjEwKiplIGlzIDF1bHAKKyAgICBib3VuZGFyaWVzID0gWworICAgICAgICAoMTAwMDAwMDAwMDAwMDAwMDAwMDAsIC0xOSwgMTExMCksICAgIyBhIHBvd2VyIG9mIDIgYm91bmRhcnkgKDEuMCkKKyAgICAgICAgKDE3OTc2OTMxMzQ4NjIzMTU5MDc3LCAyODksIDE5OTUpLCAgICMgb3ZlcmZsb3cgYm91bmRhcnkgKDIuKioxMDI0KQorICAgICAgICAoMjIyNTA3Mzg1ODUwNzIwMTM4MzEsIC0zMjcsIDQ5NDEpLCAgIyBub3JtYWwvc3Vibm9ybWFsICgyLioqLTEwMjIpCisgICAgICAgICgwLCAtMzI3LCA0OTQxKSwgICAgICAgICAgICAgICAgICAgICAjIHplcm8KKyAgICAgICAgXQorICAgIGZvciBuLCBlLCB1IGluIGJvdW5kYXJpZXM6CisgICAgICAgIGZvciBqIGluIHJhbmdlKDEwMDApOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoVEVTVF9TSVpFKToKKyAgICAgICAgICAgICAgICBkaWdpdHMgPSBuICsgcmFuZG9tLnJhbmRyYW5nZSgtMyp1LCAzKnUpCisgICAgICAgICAgICAgICAgZXhwb25lbnQgPSBlCisgICAgICAgICAgICAgICAgcyA9ICd7fWV7fScuZm9ybWF0KGRpZ2l0cywgZXhwb25lbnQpCisgICAgICAgICAgICAgICAgeWllbGQgcworICAgICAgICAgICAgbiAqPSAxMAorICAgICAgICAgICAgdSAqPSAxMAorICAgICAgICAgICAgZSAtPSAxCisKK2RlZiB0ZXN0X3VuZGVyZmxvd19ib3VuZGFyeSgpOgorICAgICMgdGVzdCB2YWx1ZXMgY2xvc2UgdG8gMioqLTEwNzUsIHRoZSB1bmRlcmZsb3cgYm91bmRhcnk7IHNpbWlsYXIKKyAgICAjIHRvIGJvdW5kYXJ5X3Rlc3RzLCBleGNlcHQgdGhhdCB0aGUgcmFuZG9tIGVycm9yIGRvZXNuJ3Qgc2NhbGUKKyAgICAjIHdpdGggbgorICAgIGZvciBleHBvbmVudCBpbiByYW5nZSgtNDAwLCAtMzIwKToKKyAgICAgICAgYmFzZSA9IDEwKiotZXhwb25lbnQgLy8gMioqMTA3NQorICAgICAgICBmb3IgaiBpbiByYW5nZShURVNUX1NJWkUpOgorICAgICAgICAgICAgZGlnaXRzID0gYmFzZSArIHJhbmRvbS5yYW5kcmFuZ2UoLTEwMDAsIDEwMDApCisgICAgICAgICAgICBzID0gJ3t9ZXt9Jy5mb3JtYXQoZGlnaXRzLCBleHBvbmVudCkKKyAgICAgICAgICAgIHlpZWxkIHMKKworZGVmIHRlc3RfYmlnY29tcCgpOgorICAgIGZvciBuZGlncyBpbiA1LCAxMCwgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDQwLCA0MSwgNTA6CisgICAgICAgIGRpZzEwID0gMTAqKm5kaWdzCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMCAqIFRFU1RfU0laRSk6CisgICAgICAgICAgICBkaWdpdHMgPSByYW5kb20ucmFuZHJhbmdlKGRpZzEwKQorICAgICAgICAgICAgZXhwb25lbnQgPSByYW5kb20ucmFuZHJhbmdlKC00MDAsIDQwMCkKKyAgICAgICAgICAgIHMgPSAne31le30nLmZvcm1hdChkaWdpdHMsIGV4cG9uZW50KQorICAgICAgICAgICAgeWllbGQgcworCitkZWYgdGVzdF9wYXJzaW5nKCk6CisgICAgIyBtYWtlICcwJyBtb3JlIGxpa2VseSB0byBiZSBjaG9zZW4gdGhhbiBvdGhlciBkaWdpdHMKKyAgICBkaWdpdHMgPSAnMDAwMDAwMTIzNDU2Nzg5JworICAgIHNpZ25zID0gKCcrJywgJy0nLCAnJykKKworICAgICMgcHV0IHRvZ2V0aGVyIHJhbmRvbSBzaG9ydCB2YWxpZCBzdHJpbmdzCisgICAgIyBcZCpbLlxkKl0/ZQorICAgIGZvciBpIGluIHJhbmdlKDEwMDApOgorICAgICAgICBmb3IgaiBpbiByYW5nZShURVNUX1NJWkUpOgorICAgICAgICAgICAgcyA9IHJhbmRvbS5jaG9pY2Uoc2lnbnMpCisgICAgICAgICAgICBpbnRwYXJ0X2xlbiA9IHJhbmRvbS5yYW5kcmFuZ2UoNSkKKyAgICAgICAgICAgIHMgKz0gJycuam9pbihyYW5kb20uY2hvaWNlKGRpZ2l0cykgZm9yIF8gaW4gcmFuZ2UoaW50cGFydF9sZW4pKQorICAgICAgICAgICAgaWYgcmFuZG9tLmNob2ljZShbVHJ1ZSwgRmFsc2VdKToKKyAgICAgICAgICAgICAgICBzICs9ICcuJworICAgICAgICAgICAgICAgIGZyYWNwYXJ0X2xlbiA9IHJhbmRvbS5yYW5kcmFuZ2UoNSkKKyAgICAgICAgICAgICAgICBzICs9ICcnLmpvaW4ocmFuZG9tLmNob2ljZShkaWdpdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBfIGluIHJhbmdlKGZyYWNwYXJ0X2xlbikpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZyYWNwYXJ0X2xlbiA9IDAKKyAgICAgICAgICAgIGlmIHJhbmRvbS5jaG9pY2UoW1RydWUsIEZhbHNlXSk6CisgICAgICAgICAgICAgICAgcyArPSByYW5kb20uY2hvaWNlKFsnZScsICdFJ10pCisgICAgICAgICAgICAgICAgcyArPSByYW5kb20uY2hvaWNlKHNpZ25zKQorICAgICAgICAgICAgICAgIGV4cG9uZW50X2xlbiA9IHJhbmRvbS5yYW5kcmFuZ2UoMSwgNCkKKyAgICAgICAgICAgICAgICBzICs9ICcnLmpvaW4ocmFuZG9tLmNob2ljZShkaWdpdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBfIGluIHJhbmdlKGV4cG9uZW50X2xlbikpCisKKyAgICAgICAgICAgIGlmIGludHBhcnRfbGVuICsgZnJhY3BhcnRfbGVuOgorICAgICAgICAgICAgICAgIHlpZWxkIHMKKwordGVzdF9wYXJ0aWN1bGFyID0gWworICAgICAjIHNxdWFyZXMKKyAgICAnMS4wMDAwMDAwMDEwMDAwMDAwMDAyNScsCisgICAgJzEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAyNScsCisgICAgJzEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI1JywKKyAgICAnMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMjUnLAorICAgICcwLjk5OTk5OTk5OTAwMDAwMDAwMDI1JywKKyAgICAnMC45OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5JyAjLi4uCisgICAgJzk5OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMjUnLAorICAgICcwLjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5JyAjLi4uCisgICAgJzk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5MDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjUnLAorCisgICAgJzEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMScsCisgICAgJzEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNScsCisgICAgJzEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMjUwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMScsCisgICAgJzEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMjQ5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5JyAjLi4uCisgICAgJzk5OTk5OTk5OTk5OTk3OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTk5OTk5OTk5OTk5OTk5OTk5OTk5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxJywKKworICAgICcwLjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5OTk5OTk5OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDI0OTk5OTk5OTk5OTk5OTk5ODAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDEnLAorICAgICcwLjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5OTk5OTk5OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDI1MDAwMDAwMTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzEnLAorCisgICAgIyB0b3VnaCBjYXNlcyBmb3IgbG4gZXRjLgorICAgICcxLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAxJywKKyAgICAnMC45OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk4OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5OScKKyAgICBdCisKKworVEVTVENBU0VTID0gWworICAgICAgW3ggZm9yIHggaW4gdGVzdF9zaG9ydF9oYWxmd2F5X2Nhc2VzKCldLAorICAgICAgW3ggZm9yIHggaW4gdGVzdF9oYWxmd2F5X2Nhc2VzKCldLAorICAgICAgW3ggZm9yIHggaW4gdGVzdF9ib3VuZGFyaWVzKCldLAorICAgICAgW3ggZm9yIHggaW4gdGVzdF91bmRlcmZsb3dfYm91bmRhcnkoKV0sCisgICAgICBbeCBmb3IgeCBpbiB0ZXN0X2JpZ2NvbXAoKV0sCisgICAgICBbeCBmb3IgeCBpbiB0ZXN0X3BhcnNpbmcoKV0sCisgICAgICB0ZXN0X3BhcnRpY3VsYXIKK10KKworZGVmIHVuX3JhbmRmbG9hdCgpOgorICAgIGZvciBpIGluIHJhbmdlKDEwMDApOgorICAgICAgICBsID0gcmFuZG9tLmNob2ljZShURVNUQ0FTRVNbOjZdKQorICAgICAgICB5aWVsZCByYW5kb20uY2hvaWNlKGwpCisgICAgZm9yIHYgaW4gdGVzdF9wYXJ0aWN1bGFyOgorICAgICAgICB5aWVsZCB2CisKK2RlZiBiaW5fcmFuZGZsb2F0KCk6CisgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgIGwxID0gcmFuZG9tLmNob2ljZShURVNUQ0FTRVMpCisgICAgICAgIGwyID0gcmFuZG9tLmNob2ljZShURVNUQ0FTRVMpCisgICAgICAgIHlpZWxkIHJhbmRvbS5jaG9pY2UobDEpLCByYW5kb20uY2hvaWNlKGwyKQorCitkZWYgdGVybl9yYW5kZmxvYXQoKToKKyAgICBmb3IgaSBpbiByYW5nZSgxMDAwKToKKyAgICAgICAgbDEgPSByYW5kb20uY2hvaWNlKFRFU1RDQVNFUykKKyAgICAgICAgbDIgPSByYW5kb20uY2hvaWNlKFRFU1RDQVNFUykKKyAgICAgICAgbDMgPSByYW5kb20uY2hvaWNlKFRFU1RDQVNFUykKKyAgICAgICAgeWllbGQgcmFuZG9tLmNob2ljZShsMSksIHJhbmRvbS5jaG9pY2UobDIpLCByYW5kb20uY2hvaWNlKGwzKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9ydW5hbGwtbWVtb3J5ZGVidWdnZXIuc2ggYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3J1bmFsbC1tZW1vcnlkZWJ1Z2dlci5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40NGZmM2IzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9ydW5hbGwtbWVtb3J5ZGVidWdnZXIuc2gKQEAgLTAsMCArMSwxNzUgQEAKKyMhL2Jpbi9zaAorCisjCisjIFB1cnBvc2U6IHRlc3Qgd2l0aCBhbmQgd2l0aG91dCB0aHJlYWRzLCBhbGwgbWFjaGluZSBjb25maWd1cmF0aW9ucywgcHlkZWJ1ZywKKyMgICAgICAgICAgcmVmbGVha3MsIHJlbGVhc2UgYnVpbGQgYW5kIHJlbGVhc2UgYnVpbGQgd2l0aCB2YWxncmluZC4KKyMKKyMgU3lub3BzaXM6IC4vcnVuYWxsLW1lbW9yeWRlYnVnZ2VyLnNoIFstLWFsbC1jb25maWdzNjQgfCAtLWFsbC1jb25maWdzMzJdCisjCisjIFJlcXVpcmVtZW50czogdmFsZ3JpbmQKKyMKKworIyBTZXQgYWRkaXRpb25hbCBDRkxBR1MgZm9yIC4vY29uZmlndXJlCitBRERfQ0ZMQUdTPQorCisKK0NPTkZJR1NfNjQ9Ing2NCB1aW50MTI4IGFuc2k2NCB1bml2ZXJzYWwiCitDT05GSUdTXzMyPSJwcHJvIGFuc2kzMiBhbnNpLWxlZ2FjeSB1bml2ZXJzYWwiCisKK1ZBTEdSSU5EPSJ2YWxncmluZCAtLXRvb2w9bWVtY2hlY2sgLS1sZWFrLXJlc29sdXRpb249aGlnaCBcCisgICAgICAgICAgLS1kYi1hdHRhY2g9eWVzIC0tc3VwcHJlc3Npb25zPU1pc2MvdmFsZ3JpbmQtcHl0aG9uLnN1cHAiCisKKyMgR2V0IGFyZ3MKK2Nhc2UgJEAgaW4KKyAgICAgKi0tYWxsLWNvbmZpZ3M2NCopCisgICAgICAgICBDT05GSUdTPSRDT05GSUdTXzY0CisgICAgICAgICA7OworICAgICAqLS1hbGwtY29uZmlnczMyKikKKyAgICAgICAgIENPTkZJR1M9JENPTkZJR1NfMzIKKyAgICAgICAgIDs7CisgICAgICopCisgICAgICAgICBDT05GSUdTPSJhdXRvIgorICAgICAgICAgOzsKK2VzYWMKKworIyBnbWFrZSByZXF1aXJlZAorR01BS0U9YHdoaWNoIGdtYWtlYAoraWYgWyBYIiRHTUFLRSIgPSBYIiIgXTsgdGhlbgorICAgIEdNQUtFPW1ha2UKK2ZpCisKKyMgUHJldHR5IHByaW50IGNvbmZpZ3VyYXRpb25zCitwcmludF9jb25maWcgKCkKK3sKKyAgICBsZW49YGVjaG8gJEAgfCB3YyAtY2AKKyAgICBtYXJnaW49IiMlImBleHByIFwoIDc0IC0gJGxlbiBcKSAvIDJgInMiCisKKyAgICBlY2hvICIiCisgICAgZWNobyAiIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iCisgICAgcHJpbnRmICRtYXJnaW4gIiIKKyAgICBlY2hvICRACisgICAgZWNobyAiIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iCisgICAgZWNobyAiIgorfQorCisKK2NkIC4uCisKKyMgdGVzdF9kZWNpbWFsOiByZWZsZWFrLCByZWd1bGFyIGFuZCBWYWxncmluZCB0ZXN0cworZm9yIGFyZ3MgaW4gIi0td2l0aG91dC10aHJlYWRzIiAiIjsgZG8KKyAgICBmb3IgY29uZmlnIGluICRDT05GSUdTOyBkbworCisgICAgICAgIHVuc2V0IFBZVEhPTl9ERUNJTUFMX1dJVEhfTUFDSElORQorICAgICAgICBsaWJtcGRlY19jb25maWc9JGNvbmZpZworICAgICAgICBpZiBbIFgiJGNvbmZpZyIgIT0gWCJhdXRvIiBdOyB0aGVuCisgICAgICAgICAgICBQWVRIT05fREVDSU1BTF9XSVRIX01BQ0hJTkU9JGNvbmZpZworICAgICAgICAgICAgZXhwb3J0IFBZVEhPTl9ERUNJTUFMX1dJVEhfTUFDSElORQorICAgICAgICBlbHNlCisgICAgICAgICAgICBsaWJtcGRlY19jb25maWc9IiIKKyAgICAgICAgZmkKKworICAgICAgICAjIyMjIyMjIyMjIyMgcmVmbGVhayB0ZXN0cyAjIyMjIyMjIyMjIworICAgICAgICBwcmludF9jb25maWcgInJlZmxlYWsgdGVzdHM6IGNvbmZpZz0kY29uZmlnIiAkYXJncworICAgICAgICBwcmludGYgIlxuYnVpbGRpbmcgcHl0aG9uIC4uLlxuXG4iCisKKyAgICAgICAgY2QgLi4vLi4vCisgICAgICAgICRHTUFLRSBkaXN0Y2xlYW4gPiAvZGV2L251bGwgMj4mMQorICAgICAgICAuL2NvbmZpZ3VyZSBDRkxBR1M9IiRBRERfQ0ZMQUdTIiAtLXdpdGgtcHlkZWJ1ZyAkYXJncyA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgICRHTUFLRSB8IGdyZXAgX2RlY2ltYWwKKworICAgICAgICBwcmludGYgIlxuXG4jID09PT09PT09PT09PT09PT09PT09PT09PSByZWZsZWFrIHRlc3RzID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iCisgICAgICAgIC4vcHl0aG9uIC1tIHRlc3QgLXVhbGwgLVIgMjoyIHRlc3RfZGVjaW1hbAorCisKKyAgICAgICAgIyMjIyMjIyMjIyMjIHJlZ3VsYXIgdGVzdHMgIyMjIyMjIyMjIyMKKyAgICAgICAgcHJpbnRfY29uZmlnICJyZWd1bGFyIHRlc3RzOiBjb25maWc9JGNvbmZpZyIgJGFyZ3MKKyAgICAgICAgcHJpbnRmICJcbmJ1aWxkaW5nIHB5dGhvbiAuLi5cblxuIgorCisgICAgICAgICRHTUFLRSBkaXN0Y2xlYW4gPiAvZGV2L251bGwgMj4mMQorICAgICAgICAuL2NvbmZpZ3VyZSBDRkxBR1M9IiRBRERfQ0ZMQUdTIiAkYXJncyA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgICRHTUFLRSB8IGdyZXAgX2RlY2ltYWwKKworICAgICAgICBwcmludGYgIlxuXG4jID09PT09PT09PT09PT09PT09PT09PT09PSByZWd1bGFyIHRlc3RzID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iCisgICAgICAgIC4vcHl0aG9uIC1tIHRlc3QgLXVhbGwgdGVzdF9kZWNpbWFsCisKKworICAgICAgICAjIyMjIyMjIyMjIyB2YWxncmluZCB0ZXN0cyAjIyMjIyMjIyMjIworICAgICAgICB2YWxncmluZD0kVkFMR1JJTkQKKyAgICAgICAgY2FzZSAiJGNvbmZpZyIgaW4KKyAgICAgICAgICAgICMgVmFsZ3JpbmQgaGFzIG5vIHN1cHBvcnQgZm9yIDgwIGJpdCBsb25nIGRvdWJsZSBhcml0aG1ldGljLgorICAgICAgICAgICAgcHBybykgdmFsZ3JpbmQ9IDs7CisgICAgICAgICAgICBhdXRvKSBjYXNlIGB1bmFtZSAtbWAgaW4KKyAgICAgICAgICAgICAgICAgICAgICBpMzg2fGk0ODZ8aTU4NnxpNjg2KSB2YWxncmluZD0gOzsKKyAgICAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgZXNhYworCisgICAgICAgIHByaW50X2NvbmZpZyAidmFsZ3JpbmQgdGVzdHM6IGNvbmZpZz0kY29uZmlnIiAkYXJncworICAgICAgICBwcmludGYgIlxuYnVpbGRpbmcgcHl0aG9uIC4uLlxuXG4iCisgICAgICAgICRHTUFLRSBkaXN0Y2xlYW4gPiAvZGV2L251bGwgMj4mMQorICAgICAgICAuL2NvbmZpZ3VyZSBDRkxBR1M9IiRBRERfQ0ZMQUdTIiAtLXdpdGhvdXQtcHltYWxsb2MgJGFyZ3MgPiAvZGV2L251bGwgMj4mMQorICAgICAgICAkR01BS0UgfCBncmVwIF9kZWNpbWFsCisKKyAgICAgICAgcHJpbnRmICJcblxuIyA9PT09PT09PT09PT09PT09PT09PT09PT0gdmFsZ3JpbmQgdGVzdHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiIKKyAgICAgICAgJHZhbGdyaW5kIC4vcHl0aG9uIC1tIHRlc3QgLXVhbGwgdGVzdF9kZWNpbWFsCisKKyAgICAgICAgY2QgTW9kdWxlcy9fZGVjaW1hbAorICAgIGRvbmUKK2RvbmUKKworIyBkZWNjaGVjaworY2QgLi4vLi4vCitmb3IgY29uZmlnIGluICRDT05GSUdTOyBkbworICAgIGZvciBhcmdzIGluICItLXdpdGhvdXQtdGhyZWFkcyIgIiI7IGRvCisKKyAgICAgICAgdW5zZXQgUFlUSE9OX0RFQ0lNQUxfV0lUSF9NQUNISU5FCisgICAgICAgIGlmIFsgWCIkY29uZmlnIiAhPSBYImF1dG8iIF07IHRoZW4KKyAgICAgICAgICAgIFBZVEhPTl9ERUNJTUFMX1dJVEhfTUFDSElORT0kY29uZmlnCisgICAgICAgICAgICBleHBvcnQgUFlUSE9OX0RFQ0lNQUxfV0lUSF9NQUNISU5FCisgICAgICAgIGZpCisKKyAgICAgICAgIyMjIyMjIyMjIyMjIGRlYnVnICMjIyMjIyMjIyMjIworICAgICAgICBwcmludF9jb25maWcgImRlY2NoZWNrOiBjb25maWc9JGNvbmZpZyAtLXdpdGgtcHlkZWJ1ZyIgJGFyZ3MKKyAgICAgICAgcHJpbnRmICJcbmJ1aWxkaW5nIHB5dGhvbiAuLi5cblxuIgorCisgICAgICAgICRHTUFLRSBkaXN0Y2xlYW4gPiAvZGV2L251bGwgMj4mMQorICAgICAgICAuL2NvbmZpZ3VyZSBDRkxBR1M9IiRBRERfQ0ZMQUdTIiAtLXdpdGgtcHlkZWJ1ZyAkYXJncyA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgICRHTUFLRSB8IGdyZXAgX2RlY2ltYWwKKworICAgICAgICBwcmludGYgIlxuXG4jID09PT09PT09PT09PT09PT09PT09PT09PT09IGRlYnVnID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iCisgICAgICAgIC4vcHl0aG9uIE1vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKKworICAgICAgICAjIyMjIyMjIyMjIyByZWd1bGFyICMjIyMjIyMjIyMjCisgICAgICAgIHByaW50X2NvbmZpZyAiZGVjY2hlY2s6IGNvbmZpZz0kY29uZmlnICIgJGFyZ3MKKyAgICAgICAgcHJpbnRmICJcbmJ1aWxkaW5nIHB5dGhvbiAuLi5cblxuIgorCisgICAgICAgICRHTUFLRSBkaXN0Y2xlYW4gPiAvZGV2L251bGwgMj4mMQorICAgICAgICAuL2NvbmZpZ3VyZSBDRkxBR1M9IiRBRERfQ0ZMQUdTIiAkYXJncyA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgICRHTUFLRSB8IGdyZXAgX2RlY2ltYWwKKworICAgICAgICBwcmludGYgIlxuXG4jID09PT09PT09PT09PT09PT09PT09PT09PSByZWd1bGFyID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iCisgICAgICAgIC4vcHl0aG9uIE1vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKKworICAgICAgICAjIyMjIyMjIyMjIyB2YWxncmluZCAjIyMjIyMjIyMjIworICAgICAgICB2YWxncmluZD0kVkFMR1JJTkQKKyAgICAgICAgY2FzZSAiJGNvbmZpZyIgaW4KKyAgICAgICAgICAgICMgVmFsZ3JpbmQgaGFzIG5vIHN1cHBvcnQgZm9yIDgwIGJpdCBsb25nIGRvdWJsZSBhcml0aG1ldGljLgorICAgICAgICAgICAgcHBybykgdmFsZ3JpbmQ9IDs7CisgICAgICAgICAgICBhdXRvKSBjYXNlIGB1bmFtZSAtbWAgaW4KKyAgICAgICAgICAgICAgICAgICAgICBpMzg2fGk0ODZ8aTU4NnxpNjg2KSB2YWxncmluZD0gOzsKKyAgICAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgZXNhYworCisgICAgICAgIHByaW50X2NvbmZpZyAidmFsZ3JpbmQgZGVjY2hlY2s6IGNvbmZpZz0kY29uZmlnICIgJGFyZ3MKKyAgICAgICAgcHJpbnRmICJcbmJ1aWxkaW5nIHB5dGhvbiAuLi5cblxuIgorCisgICAgICAgICRHTUFLRSBkaXN0Y2xlYW4gPiAvZGV2L251bGwgMj4mMQorICAgICAgICAuL2NvbmZpZ3VyZSBDRkxBR1M9IiRBRERfQ0ZMQUdTIiAtLXdpdGhvdXQtcHltYWxsb2MgJGFyZ3MgPiAvZGV2L251bGwgMj4mMQorICAgICAgICAkR01BS0UgfCBncmVwIF9kZWNpbWFsCisKKyAgICAgICAgcHJpbnRmICJcblxuIyA9PT09PT09PT09PT09PT09PT09PT09PT0gdmFsZ3JpbmQgPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIgorICAgICAgICAkdmFsZ3JpbmQgLi9weXRob24gTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQorICAgIGRvbmUKK2RvbmUKKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvcnVuYWxsLmJhdCBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvcnVuYWxsLmJhdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41YmM4NzJhCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9ydW5hbGwuYmF0CkBAIC0wLDAgKzEsMTExIEBACitARUNITyBPRkYKKworcmVtIFRlc3QgYWxsIG1hY2hpbmUgY29uZmlndXJhdGlvbnMsIHB5ZGVidWcsIHJlZmxlYWtzLCByZWxlYXNlIGJ1aWxkLgorCitjZCAuLlwuLlwuLlwKKworCitlY2hvLgorZWNobyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8gIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZGluZyBQeXRob24KK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorCitjYWxsICIlVlMxMDBDT01OVE9PTFMlXC4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiIHg2NAorbXNidWlsZCAvbm9jb25zb2xlbG9nZ2VyIC90YXJnZXQ6Y2xlYW4gUENidWlsZFxwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPVJlbGVhc2UgL3A6UGxhdGZvcm1UYXJnZXQ9eDY0Cittc2J1aWxkIC9ub2NvbnNvbGVsb2dnZXIgL3RhcmdldDpjbGVhbiBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm1UYXJnZXQ9eDY0Cittc2J1aWxkIC9ub2NvbnNvbGVsb2dnZXIgUENidWlsZFxwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPVJlbGVhc2UgL3A6UGxhdGZvcm09eDY0Cittc2J1aWxkIC9ub2NvbnNvbGVsb2dnZXIgUENidWlsZFxwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPURlYnVnIC9wOlBsYXRmb3JtPXg2NAorCitjYWxsICIlVlMxMDBDT01OVE9PTFMlXC4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiIHg4NgorbXNidWlsZCAvbm9jb25zb2xlbG9nZ2VyIFBDYnVpbGRccGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1SZWxlYXNlIC9wOlBsYXRmb3JtPVdpbjMyCittc2J1aWxkIC9ub2NvbnNvbGVsb2dnZXIgUENidWlsZFxwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPURlYnVnIC9wOlBsYXRmb3JtPVdpbjMyCitlY2hvLgorZWNoby4KKworZWNoby4KK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlY2hvICMgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZGVjaW1hbDogcGxhdGZvcm09eDY0CitlY2hvICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KKworY2QgUENidWlsZFxhbWQ2NAorCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT0gcmVmbGVhayB0ZXN0cyA9PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KK3B5dGhvbl9kLmV4ZSAtbSB0ZXN0IC11YWxsIC1SIDI6MiB0ZXN0X2RlY2ltYWwKK2VjaG8uCitlY2hvLgorCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT0gcmVndWxhciB0ZXN0cyA9PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KK3B5dGhvbi5leGUgLW0gdGVzdCAtdWFsbCB0ZXN0X2RlY2ltYWwKK2VjaG8uCitlY2hvLgorCitjZCAuLgorCitlY2hvLgorZWNobyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8gIyAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9kZWNpbWFsOiBwbGF0Zm9ybT14ODYKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT0gcmVmbGVhayB0ZXN0cyA9PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KK3B5dGhvbl9kLmV4ZSAtbSB0ZXN0IC11YWxsIC1SIDI6MiB0ZXN0X2RlY2ltYWwKK2VjaG8uCitlY2hvLgorCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT0gcmVndWxhciB0ZXN0cyA9PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KK3B5dGhvbi5leGUgLW0gdGVzdCAtdWFsbCB0ZXN0X2RlY2ltYWwKK2VjaG8uCitlY2hvLgorCitjZCBhbWQ2NAorCitlY2hvLgorZWNobyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8gIyAgICAgICAgICAgICAgICAgICAgICAgICBkZWNjaGVjazogcGxhdGZvcm09eDY0CitlY2hvICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KKworZWNobyAjID09PT09PT09PT09PT09PT09PT09IGRlYnVnIGJ1aWxkID09PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorcHl0aG9uX2QuZXhlIC4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcdGVzdHNcZGVjY2hlY2sucHkKK2VjaG8uCitlY2hvLgorCitlY2hvICMgPT09PT09PT09PT09PT09PT09PSByZWxlYXNlIGJ1aWxkID09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCitweXRob24uZXhlIC4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcdGVzdHNcZGVjY2hlY2sucHkKK2VjaG8uCitlY2hvLgorCitjZCAuLgorCitlY2hvLgorZWNobyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8gIyAgICAgICAgICAgICAgICAgICAgICAgICBkZWNjaGVjazogcGxhdGZvcm09eDg2CitlY2hvICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KK2VjaG8uCisKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PSBkZWJ1ZyBidWlsZCA9PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KK3B5dGhvbl9kLmV4ZSAuLlxNb2R1bGVzXF9kZWNpbWFsXHRlc3RzXGRlY2NoZWNrLnB5CitlY2hvLgorZWNoby4KKworZWNobyAjID09PT09PT09PT09PT09PT09PT0gcmVsZWFzZSBidWlsZCA9PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorcHl0aG9uLmV4ZSAuLlxNb2R1bGVzXF9kZWNpbWFsXHRlc3RzXGRlY2NoZWNrLnB5CitlY2hvLgorZWNoby4KKworCitjZCAuLlxNb2R1bGVzXF9kZWNpbWFsXHRlc3RzCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19lbGVtZW50dHJlZS5jIGIvTW9kdWxlcy9fZWxlbWVudHRyZWUuYwppbmRleCAxN2Q1ZDA5Li40OTQ0MWNjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19lbGVtZW50dHJlZS5jCisrKyBiL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMKQEAgLTQ4LDYgKzQ4LDcgQEAKIC8qIFNlZSBodHRwOi8vd3d3LnB5dGhvbi5vcmcvcHNmL2xpY2Vuc2UgZm9yIGxpY2Vuc2luZyBkZXRhaWxzLiAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAKICNkZWZpbmUgVkVSU0lPTiAiMS4wLjYiCiAKQEAgLTU3LDkgKzU4LDYgQEAKIC8qIExlYXZlIGRlZmluZWQgdG8gaW5jbHVkZSB0aGUgZXhwYXQtYmFzZWQgWE1MUGFyc2VyIHR5cGUgKi8KICNkZWZpbmUgVVNFX0VYUEFUCiAKLS8qIERlZmluZSB0byBkbyBhbGwgZXhwYXQgY2FsbHMgdmlhIHB5ZXhwYXQncyBlbWJlZGRlZCBleHBhdCBsaWJyYXJ5ICovCi0vKiAjZGVmaW5lIFVTRV9QWUVYUEFUX0NBUEkgKi8KLQogLyogQW4gZWxlbWVudCBjYW4gaG9sZCB0aGlzIG1hbnkgY2hpbGRyZW4gd2l0aG91dCBleHRyYSBtZW1vcnkKICAgIGFsbG9jYXRpb25zLiAqLwogI2RlZmluZSBTVEFUSUNfQ0hJTERSRU4gNApAQCAtNzAsNyArNjgsNyBAQAogICAgaGVscHMgaWYgeW91IGhhdmUgbG90cyBvZiBsZWFmIG5vZGVzIHdpdGggYXR0cmlidXRlcykuICovCiAKIC8qIEFsc28gbm90ZSB0aGF0IHB5bWFsbG9jIGFsd2F5cyBhbGxvY2F0ZXMgYmxvY2tzIGluIG11bHRpcGxlcyBvZgotICAgZWlnaHQgYnl0ZXMuICBGb3IgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBjRWxlbWVudFRyZWUsIHRoaXMgbWVhbnMKKyAgIGVpZ2h0IGJ5dGVzLiAgRm9yIHRoZSBjdXJyZW50IEMgdmVyc2lvbiBvZiBFbGVtZW50VHJlZSwgdGhpcyBtZWFucwogICAgdGhhdCB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIHNob3VsZCBiZSBhbiBldmVuIG51bWJlciwgYXQgbGVhc3Qgb24KICAgIDMyLWJpdCBwbGF0Zm9ybXMuICovCiAKQEAgLTk0LDM5ICs5MiwxNyBAQAogI2RlZmluZSBMT0NBTCh0eXBlKSBzdGF0aWMgdHlwZQogI2VuZGlmCiAKLS8qIGNvbXBhdGliaWxpdHkgbWFjcm9zICovCi0jaWYgKFBZX1ZFUlNJT05fSEVYIDwgMHgwMjA2MDAwMCkKLSNkZWZpbmUgUHlfUkVGQ05UKG9iKSAoKChQeU9iamVjdCopKG9iKSktPm9iX3JlZmNudCkKLSNkZWZpbmUgUHlfVFlQRShvYikgKCgoUHlPYmplY3QqKShvYikpLT5vYl90eXBlKQotI2VuZGlmCi0KLSNpZiAoUFlfVkVSU0lPTl9IRVggPCAweDAyMDUwMDAwKQotdHlwZWRlZiBpbnQgUHlfc3NpemVfdDsKLSNkZWZpbmUgbGVuZnVuYyBpbnF1aXJ5Ci0jZW5kaWYKLQotI2lmIChQWV9WRVJTSU9OX0hFWCA8IDB4MDIwNDAwMDApCi0jZGVmaW5lIFB5RGljdF9DaGVja0V4YWN0IFB5RGljdF9DaGVjawotCi0jaWYgIWRlZmluZWQoUHlfUkVUVVJOX05PTkUpCi0jZGVmaW5lIFB5X1JFVFVSTl9OT05FIHJldHVybiBQeV9JTkNSRUYoUHlfTm9uZSksIFB5X05vbmUKLSNlbmRpZgotI2VuZGlmCi0KIC8qIG1hY3JvcyB1c2VkIHRvIHN0b3JlICdqb2luJyBmbGFncyBpbiBzdHJpbmcgb2JqZWN0IHBvaW50ZXJzLiAgbm90ZQogICAgdGhhdCBhbGwgdXNlIG9mIHRleHQgYW5kIHRhaWwgYXMgb2JqZWN0IHBvaW50ZXJzIG11c3QgYmUgd3JhcHBlZCBpbgogICAgSk9JTl9PQkouICBzZWUgY29tbWVudHMgaW4gdGhlIEVsZW1lbnRPYmplY3QgZGVmaW5pdGlvbiBmb3IgbW9yZQogICAgaW5mby4gKi8KICNkZWZpbmUgSk9JTl9HRVQocCkgKChQeV91aW50cHRyX3QpIChwKSAmIDEpCiAjZGVmaW5lIEpPSU5fU0VUKHAsIGZsYWcpICgodm9pZCopICgoUHlfdWludHB0cl90KSAoSk9JTl9PQkoocCkpIHwgKGZsYWcpKSkKLSNkZWZpbmUgSk9JTl9PQkoocCkgKChQeU9iamVjdCopICgoUHlfdWludHB0cl90KSAocCkgJiB+MSkpCisjZGVmaW5lIEpPSU5fT0JKKHApICgoUHlPYmplY3QqKSAoKFB5X3VpbnRwdHJfdCkgKHApICYgfihQeV91aW50cHRyX3QpMSkpCiAKIC8qIGdsdWUgZnVuY3Rpb25zIChzZWUgdGhlIGluaXQgZnVuY3Rpb24gZm9yIGRldGFpbHMpICovCiBzdGF0aWMgUHlPYmplY3QqIGVsZW1lbnR0cmVlX3BhcnNlZXJyb3Jfb2JqOwotc3RhdGljIFB5T2JqZWN0KiBlbGVtZW50dHJlZV9jb3B5ZWxlbWVudF9vYmo7CiBzdGF0aWMgUHlPYmplY3QqIGVsZW1lbnR0cmVlX2RlZXBjb3B5X29iajsKLXN0YXRpYyBQeU9iamVjdCogZWxlbWVudHRyZWVfaXRlcl9vYmo7Ci1zdGF0aWMgUHlPYmplY3QqIGVsZW1lbnR0cmVlX2l0ZXJ0ZXh0X29iajsKIHN0YXRpYyBQeU9iamVjdCogZWxlbWVudHBhdGhfb2JqOwogCiAvKiBoZWxwZXJzICovCkBAIC0xNDcsMTcgKzEyMywxMSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBhcmdzID0gUHlUdXBsZV9OZXcoMik7CisgICAgYXJncyA9IFB5VHVwbGVfUGFjaygyLCBvYmplY3QsIG1lbW8pOwogICAgIGlmICghYXJncykKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9JTkNSRUYob2JqZWN0KTsgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCAoUHlPYmplY3QqKSBvYmplY3QpOwotICAgIFB5X0lOQ1JFRihtZW1vKTsgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDEsIChQeU9iamVjdCopIG1lbW8pOwotCiAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE9iamVjdChlbGVtZW50dHJlZV9kZWVwY29weV9vYmosIGFyZ3MpOwotCiAgICAgUHlfREVDUkVGKGFyZ3MpOwotCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTY1LDUzICsxMzUsMzAgQEAKIGxpc3Rfam9pbihQeU9iamVjdCogbGlzdCkKIHsKICAgICAvKiBqb2luIGxpc3QgZWxlbWVudHMgKGRlc3Ryb3lpbmcgdGhlIGxpc3QgaW4gdGhlIHByb2Nlc3MpICovCi0KICAgICBQeU9iamVjdCogam9pbmVyOwotICAgIFB5T2JqZWN0KiBmdW5jdGlvbjsKLSAgICBQeU9iamVjdCogYXJnczsKICAgICBQeU9iamVjdCogcmVzdWx0OwogCi0gICAgc3dpdGNoIChQeUxpc3RfR0VUX1NJWkUobGlzdCkpIHsKLSAgICBjYXNlIDA6Ci0gICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKLSAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZygiIik7Ci0gICAgY2FzZSAxOgotICAgICAgICByZXN1bHQgPSBQeUxpc3RfR0VUX0lURU0obGlzdCwgMCk7Ci0gICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOwotICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgLyogdHdvIG9yIG1vcmUgZWxlbWVudHM6IHNsaWNlIG91dCBhIHN1aXRhYmxlIHNlcGFyYXRvciBmcm9tIHRoZQotICAgICAgIGZpcnN0IG1lbWJlciwgYW5kIHVzZSB0aGF0IHRvIGpvaW4gdGhlIGVudGlyZSBsaXN0ICovCi0KLSAgICBqb2luZXIgPSBQeVNlcXVlbmNlX0dldFNsaWNlKFB5TGlzdF9HRVRfSVRFTShsaXN0LCAwKSwgMCwgMCk7CisgICAgam9pbmVyID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKICAgICBpZiAoIWpvaW5lcikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBmdW5jdGlvbiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoam9pbmVyLCAiam9pbiIpOwotICAgIGlmICghZnVuY3Rpb24pIHsKLSAgICAgICAgUHlfREVDUkVGKGpvaW5lcik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGFyZ3MgPSBQeVR1cGxlX05ldygxKTsKLSAgICBpZiAoIWFyZ3MpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCBsaXN0KTsKLQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoZnVuY3Rpb24sIGFyZ3MpOwotCi0gICAgUHlfREVDUkVGKGFyZ3MpOyAvKiBhbHNvIHJlbW92ZXMgbGlzdCAqLwotICAgIFB5X0RFQ1JFRihmdW5jdGlvbik7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0pvaW4oam9pbmVyLCBsaXN0KTsKICAgICBQeV9ERUNSRUYoam9pbmVyKTsKLQorICAgIGlmIChyZXN1bHQpCisgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisvKiBJcyB0aGUgZ2l2ZW4gb2JqZWN0IGFuIGVtcHR5IGRpY3Rpb25hcnk/CisqLworc3RhdGljIGludAoraXNfZW1wdHlfZGljdChQeU9iamVjdCAqb2JqKQoreworICAgIHJldHVybiBQeURpY3RfQ2hlY2tFeGFjdChvYmopICYmIFB5RGljdF9TaXplKG9iaikgPT0gMDsKK30KKworCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogdGhlIGVsZW1lbnQgdHlwZSAqLworLyogdGhlIEVsZW1lbnQgdHlwZSAqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAKQEAgLTIyNiw3ICsxNzMsNyBAQAogICAgIFB5T2JqZWN0KiAqY2hpbGRyZW47CiAKICAgICBQeU9iamVjdCogX2NoaWxkcmVuW1NUQVRJQ19DSElMRFJFTl07Ci0gICAgCisKIH0gRWxlbWVudE9iamVjdEV4dHJhOwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC0yNDksNiArMTk2LDggQEAKIAogICAgIEVsZW1lbnRPYmplY3RFeHRyYSogZXh0cmE7CiAKKyAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7IC8qIEZvciB0cF93ZWFrbGlzdG9mZnNldCAqLworCiB9IEVsZW1lbnRPYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgRWxlbWVudF9UeXBlOwpAQCAtMjU2LDEwICsyMDUsMTAgQEAKICNkZWZpbmUgRWxlbWVudF9DaGVja0V4YWN0KG9wKSAoUHlfVFlQRShvcCkgPT0gJkVsZW1lbnRfVHlwZSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qIGVsZW1lbnQgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IgKi8KKy8qIEVsZW1lbnQgY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9yICovCiAKIExPQ0FMKGludCkKLWVsZW1lbnRfbmV3X2V4dHJhKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhdHRyaWIpCitjcmVhdGVfZXh0cmEoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGF0dHJpYikKIHsKICAgICBzZWxmLT5leHRyYSA9IFB5T2JqZWN0X01hbGxvYyhzaXplb2YoRWxlbWVudE9iamVjdEV4dHJhKSk7CiAgICAgaWYgKCFzZWxmLT5leHRyYSkKQEAgLTI3OSw0NyArMjI4LDQ4IEBACiB9CiAKIExPQ0FMKHZvaWQpCi1lbGVtZW50X2RlYWxsb2NfZXh0cmEoRWxlbWVudE9iamVjdCogc2VsZikKK2RlYWxsb2NfZXh0cmEoRWxlbWVudE9iamVjdCogc2VsZikKIHsKKyAgICBFbGVtZW50T2JqZWN0RXh0cmEgKm15ZXh0cmE7CiAgICAgaW50IGk7CiAKLSAgICBQeV9ERUNSRUYoc2VsZi0+ZXh0cmEtPmF0dHJpYik7CisgICAgaWYgKCFzZWxmLT5leHRyYSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChpID0gMDsgaSA8IHNlbGYtPmV4dHJhLT5sZW5ndGg7IGkrKykKLSAgICAgICAgUHlfREVDUkVGKHNlbGYtPmV4dHJhLT5jaGlsZHJlbltpXSk7CisgICAgLyogQXZvaWQgREVDUkVGcyBjYWxsaW5nIGludG8gdGhpcyBjb2RlIGFnYWluIChjeWNsZXMsIGV0Yy4pCisgICAgKi8KKyAgICBteWV4dHJhID0gc2VsZi0+ZXh0cmE7CisgICAgc2VsZi0+ZXh0cmEgPSBOVUxMOwogCi0gICAgaWYgKHNlbGYtPmV4dHJhLT5jaGlsZHJlbiAhPSBzZWxmLT5leHRyYS0+X2NoaWxkcmVuKQotICAgICAgICBQeU9iamVjdF9GcmVlKHNlbGYtPmV4dHJhLT5jaGlsZHJlbik7CisgICAgUHlfREVDUkVGKG15ZXh0cmEtPmF0dHJpYik7CiAKLSAgICBQeU9iamVjdF9GcmVlKHNlbGYtPmV4dHJhKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbXlleHRyYS0+bGVuZ3RoOyBpKyspCisgICAgICAgIFB5X0RFQ1JFRihteWV4dHJhLT5jaGlsZHJlbltpXSk7CisKKyAgICBpZiAobXlleHRyYS0+Y2hpbGRyZW4gIT0gbXlleHRyYS0+X2NoaWxkcmVuKQorICAgICAgICBQeU9iamVjdF9GcmVlKG15ZXh0cmEtPmNoaWxkcmVuKTsKKworICAgIFB5T2JqZWN0X0ZyZWUobXlleHRyYSk7CiB9CiAKKy8qIENvbnZlbmllbmNlIGludGVybmFsIGZ1bmN0aW9uIHRvIGNyZWF0ZSBuZXcgRWxlbWVudCBvYmplY3RzIHdpdGggdGhlIGdpdmVuCisgKiB0YWcgYW5kIGF0dHJpYnV0ZXMuCisqLwogTE9DQUwoUHlPYmplY3QqKQotZWxlbWVudF9uZXcoUHlPYmplY3QqIHRhZywgUHlPYmplY3QqIGF0dHJpYikKK2NyZWF0ZV9uZXdfZWxlbWVudChQeU9iamVjdCogdGFnLCBQeU9iamVjdCogYXR0cmliKQogewogICAgIEVsZW1lbnRPYmplY3QqIHNlbGY7CiAKLSAgICBzZWxmID0gUHlPYmplY3RfTmV3KEVsZW1lbnRPYmplY3QsICZFbGVtZW50X1R5cGUpOworICAgIHNlbGYgPSBQeU9iamVjdF9HQ19OZXcoRWxlbWVudE9iamVjdCwgJkVsZW1lbnRfVHlwZSk7CiAgICAgaWYgKHNlbGYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiB1c2UgTm9uZSBmb3IgZW1wdHkgZGljdGlvbmFyaWVzICovCi0gICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGF0dHJpYikgJiYgIVB5RGljdF9TaXplKGF0dHJpYikpCi0gICAgICAgIGF0dHJpYiA9IFB5X05vbmU7Ci0KICAgICBzZWxmLT5leHRyYSA9IE5VTEw7CiAKLSAgICBpZiAoYXR0cmliICE9IFB5X05vbmUpIHsKLQotICAgICAgICBpZiAoZWxlbWVudF9uZXdfZXh0cmEoc2VsZiwgYXR0cmliKSA8IDApIHsKKyAgICBpZiAoYXR0cmliICE9IFB5X05vbmUgJiYgIWlzX2VtcHR5X2RpY3QoYXR0cmliKSkgeworICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIGF0dHJpYikgPCAwKSB7CiAgICAgICAgICAgICBQeU9iamVjdF9EZWwoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotCi0gICAgICAgIHNlbGYtPmV4dHJhLT5sZW5ndGggPSAwOwotICAgICAgICBzZWxmLT5leHRyYS0+YWxsb2NhdGVkID0gU1RBVElDX0NISUxEUkVOOwotICAgICAgICBzZWxmLT5leHRyYS0+Y2hpbGRyZW4gPSBzZWxmLT5leHRyYS0+X2NoaWxkcmVuOwotCiAgICAgfQogCiAgICAgUHlfSU5DUkVGKHRhZyk7CkBAIC0zMzEsMTEgKzI4MSwxMjggQEAKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgc2VsZi0+dGFpbCA9IFB5X05vbmU7CiAKLSAgICBBTExPQyhzaXplb2YoRWxlbWVudE9iamVjdCksICJjcmVhdGUgZWxlbWVudCIpOworICAgIHNlbGYtPndlYWtyZWZsaXN0ID0gTlVMTDsKIAorICAgIEFMTE9DKHNpemVvZihFbGVtZW50T2JqZWN0KSwgImNyZWF0ZSBlbGVtZW50Iik7CisgICAgUHlPYmplY3RfR0NfVHJhY2soc2VsZik7CiAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitlbGVtZW50X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBFbGVtZW50T2JqZWN0ICplID0gKEVsZW1lbnRPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAoZSAhPSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgZS0+dGFnID0gUHlfTm9uZTsKKworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIGUtPnRleHQgPSBQeV9Ob25lOworCisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgZS0+dGFpbCA9IFB5X05vbmU7CisKKyAgICAgICAgZS0+ZXh0cmEgPSBOVUxMOworICAgICAgICBlLT53ZWFrcmVmbGlzdCA9IE5VTEw7CisgICAgfQorICAgIHJldHVybiAoUHlPYmplY3QgKillOworfQorCisvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGV4dHJhY3RpbmcgdGhlIGF0dHJpYiBkaWN0aW9uYXJ5IGZyb20gYSBrZXl3b3JkcyBkaWN0LgorICogVGhpcyBpcyByZXF1aXJlZCBieSBzb21lIGNvbnN0cnVjdG9ycy9mdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGUgdGhhdCBjYW4KKyAqIGVpdGhlciBhY2NlcHQgYXR0cmliIGFzIGEga2V5d29yZCBhcmd1bWVudCBvciBhbGwgYXR0cmlidXRlcyBzcGxhc2hlZAorICogZGlyZWN0bHkgaW50byAqa3dkcy4KKyAqIElmIHRoZXJlIGlzIG5vICdhdHRyaWInIGtleXdvcmQsIHJldHVybiBhbiBlbXB0eSBkaWN0LgorICovCitzdGF0aWMgUHlPYmplY3QqCitnZXRfYXR0cmliX2Zyb21fa2V5d29yZHMoUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKmF0dHJpYl9zdHIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiYXR0cmliIik7CisgICAgUHlPYmplY3QgKmF0dHJpYiA9IFB5RGljdF9HZXRJdGVtKGt3ZHMsIGF0dHJpYl9zdHIpOworCisgICAgaWYgKGF0dHJpYikgeworICAgICAgICAvKiBJZiBhdHRyaWIgd2FzIGZvdW5kIGluIGt3ZHMsIGNvcHkgaXRzIHZhbHVlIGFuZCByZW1vdmUgaXQgZnJvbQorICAgICAgICAgKiBrd2RzCisgICAgICAgICAqLworICAgICAgICBpZiAoIVB5RGljdF9DaGVjayhhdHRyaWIpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cmliX3N0cik7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiYXR0cmliIG11c3QgYmUgZGljdCwgbm90ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShhdHRyaWIpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGF0dHJpYiA9IFB5RGljdF9Db3B5KGF0dHJpYik7CisgICAgICAgIFB5RGljdF9EZWxJdGVtKGt3ZHMsIGF0dHJpYl9zdHIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGF0dHJpYiA9IFB5RGljdF9OZXcoKTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYoYXR0cmliX3N0cik7CisKKyAgICBpZiAoYXR0cmliKQorICAgICAgICBQeURpY3RfVXBkYXRlKGF0dHJpYiwga3dkcyk7CisgICAgcmV0dXJuIGF0dHJpYjsKK30KKworc3RhdGljIGludAorZWxlbWVudF9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKnRhZzsKKyAgICBQeU9iamVjdCAqdG1wOworICAgIFB5T2JqZWN0ICphdHRyaWIgPSBOVUxMOworICAgIEVsZW1lbnRPYmplY3QgKnNlbGZfZWxlbTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPITpFbGVtZW50IiwgJnRhZywgJlB5RGljdF9UeXBlLCAmYXR0cmliKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKGF0dHJpYikgeworICAgICAgICAvKiBhdHRyaWIgcGFzc2VkIGFzIHBvc2l0aW9uYWwgYXJnICovCisgICAgICAgIGF0dHJpYiA9IFB5RGljdF9Db3B5KGF0dHJpYik7CisgICAgICAgIGlmICghYXR0cmliKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoa3dkcykgeworICAgICAgICAgICAgaWYgKFB5RGljdF9VcGRhdGUoYXR0cmliLCBrd2RzKSA8IDApIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cmliKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGt3ZHMpIHsKKyAgICAgICAgLyogaGF2ZSBrZXl3b3JkcyBhcmdzICovCisgICAgICAgIGF0dHJpYiA9IGdldF9hdHRyaWJfZnJvbV9rZXl3b3Jkcyhrd2RzKTsKKyAgICAgICAgaWYgKCFhdHRyaWIpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgc2VsZl9lbGVtID0gKEVsZW1lbnRPYmplY3QgKilzZWxmOworCisgICAgaWYgKGF0dHJpYiAhPSBOVUxMICYmICFpc19lbXB0eV9kaWN0KGF0dHJpYikpIHsKKyAgICAgICAgaWYgKGNyZWF0ZV9leHRyYShzZWxmX2VsZW0sIGF0dHJpYikgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cmliKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIFdlIG93biBhIHJlZmVyZW5jZSB0byBhdHRyaWIgaGVyZSBhbmQgaXQncyBubyBsb25nZXIgbmVlZGVkLiAqLworICAgIFB5X1hERUNSRUYoYXR0cmliKTsKKworICAgIC8qIFJlcGxhY2UgdGhlIG9iamVjdHMgYWxyZWFkeSBwb2ludGVkIHRvIGJ5IHRhZywgdGV4dCBhbmQgdGFpbC4gKi8KKyAgICB0bXAgPSBzZWxmX2VsZW0tPnRhZzsKKyAgICBQeV9JTkNSRUYodGFnKTsKKyAgICBzZWxmX2VsZW0tPnRhZyA9IHRhZzsKKyAgICBQeV9ERUNSRUYodG1wKTsKKworICAgIHRtcCA9IHNlbGZfZWxlbS0+dGV4dDsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgc2VsZl9lbGVtLT50ZXh0ID0gUHlfTm9uZTsKKyAgICBQeV9ERUNSRUYoSk9JTl9PQkoodG1wKSk7CisKKyAgICB0bXAgPSBzZWxmX2VsZW0tPnRhaWw7CisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIHNlbGZfZWxlbS0+dGFpbCA9IFB5X05vbmU7CisgICAgUHlfREVDUkVGKEpPSU5fT0JKKHRtcCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKIExPQ0FMKGludCkKIGVsZW1lbnRfcmVzaXplKEVsZW1lbnRPYmplY3QqIHNlbGYsIGludCBleHRyYSkKIHsKQEAgLTM0Niw3ICs0MTMsNyBAQAogICAgICAgIGVsZW1lbnRzLiAgc2V0IGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIGlmIGFsbG9jYXRpb24gZmFpbGVkICovCiAKICAgICBpZiAoIXNlbGYtPmV4dHJhKQotICAgICAgICBlbGVtZW50X25ld19leHRyYShzZWxmLCBOVUxMKTsKKyAgICAgICAgY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpOwogCiAgICAgc2l6ZSA9IHNlbGYtPmV4dHJhLT5sZW5ndGggKyBleHRyYTsKIApAQCAtMzU0LDE0ICs0MjEsMTQgQEAKICAgICAgICAgLyogdXNlIFB5dGhvbiAyLjQncyBsaXN0IGdyb3d0aCBzdHJhdGVneSAqLwogICAgICAgICBzaXplID0gKHNpemUgPj4gMykgKyAoc2l6ZSA8IDkgPyAzIDogNikgKyBzaXplOwogICAgICAgICAvKiBDb3Zlcml0eSBDSUQgIzE4MiBzaXplX2Vycm9yOiBBbGxvY2F0aW5nIDEgYnl0ZXMgdG8gcG9pbnRlciAiY2hpbGRyZW4iCi0gICAgICAgICAqIHdoaWNoIG5lZWRzIGF0IGxlYXN0IDQgYnl0ZXMuIAotICAgICAgICAgKiBBbHRob3VnaCBpdCdzIGEgZmFsc2UgYWxhcm0gYWx3YXlzIGFzc3VtZSBhdCBsZWFzdCBvbmUgY2hpbGQgdG8gCisgICAgICAgICAqIHdoaWNoIG5lZWRzIGF0IGxlYXN0IDQgYnl0ZXMuCisgICAgICAgICAqIEFsdGhvdWdoIGl0J3MgYSBmYWxzZSBhbGFybSBhbHdheXMgYXNzdW1lIGF0IGxlYXN0IG9uZSBjaGlsZCB0bwogICAgICAgICAgKiBiZSBzYWZlLgogICAgICAgICAgKi8KICAgICAgICAgc2l6ZSA9IHNpemUgPyBzaXplIDogMTsKICAgICAgICAgaWYgKHNlbGYtPmV4dHJhLT5jaGlsZHJlbiAhPSBzZWxmLT5leHRyYS0+X2NoaWxkcmVuKSB7CiAgICAgICAgICAgICAvKiBDb3Zlcml0eSBDSUQgIzE4MiBzaXplX2Vycm9yOiBBbGxvY2F0aW5nIDEgYnl0ZXMgdG8gcG9pbnRlcgotICAgICAgICAgICAgICogImNoaWxkcmVuIiwgd2hpY2ggbmVlZHMgYXQgbGVhc3QgNCBieXRlcy4gQWx0aG91Z2ggaXQncyBhIAorICAgICAgICAgICAgICogImNoaWxkcmVuIiwgd2hpY2ggbmVlZHMgYXQgbGVhc3QgNCBieXRlcy4gQWx0aG91Z2ggaXQncyBhCiAgICAgICAgICAgICAgKiBmYWxzZSBhbGFybSBhbHdheXMgYXNzdW1lIGF0IGxlYXN0IG9uZSBjaGlsZCB0byBiZSBzYWZlLgogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBjaGlsZHJlbiA9IFB5T2JqZWN0X1JlYWxsb2Moc2VsZi0+ZXh0cmEtPmNoaWxkcmVuLApAQCAtNDEyLDExICs0NzksMTEgQEAKICAgICBQeU9iamVjdCogcmVzID0gc2VsZi0+ZXh0cmEtPmF0dHJpYjsKIAogICAgIGlmIChyZXMgPT0gUHlfTm9uZSkgewotICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgLyogY3JlYXRlIG1pc3NpbmcgZGljdGlvbmFyeSAqLwogICAgICAgICByZXMgPSBQeURpY3RfTmV3KCk7CiAgICAgICAgIGlmICghcmVzKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0RFQ1JFRihQeV9Ob25lKTsKICAgICAgICAgc2VsZi0+ZXh0cmEtPmF0dHJpYiA9IHJlczsKICAgICB9CiAKQEAgLTQ2NCwzNiArNTMxLDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKLXsKLSAgICBQeU9iamVjdCogZWxlbTsKLQotICAgIFB5T2JqZWN0KiB0YWc7Ci0gICAgUHlPYmplY3QqIGF0dHJpYiA9IE5VTEw7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE8hOkVsZW1lbnQiLCAmdGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlEaWN0X1R5cGUsICZhdHRyaWIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChhdHRyaWIgfHwga3cpIHsKLSAgICAgICAgYXR0cmliID0gKGF0dHJpYikgPyBQeURpY3RfQ29weShhdHRyaWIpIDogUHlEaWN0X05ldygpOwotICAgICAgICBpZiAoIWF0dHJpYikKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoa3cpCi0gICAgICAgICAgICBQeURpY3RfVXBkYXRlKGF0dHJpYiwga3cpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgYXR0cmliID0gUHlfTm9uZTsKLSAgICB9Ci0KLSAgICBlbGVtID0gZWxlbWVudF9uZXcodGFnLCBhdHRyaWIpOwotCi0gICAgUHlfREVDUkVGKGF0dHJpYik7Ci0KLSAgICByZXR1cm4gZWxlbTsKLX0KLQotc3RhdGljIFB5T2JqZWN0Kgotc3ViZWxlbWVudChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKK3N1YmVsZW1lbnQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeU9iamVjdCogZWxlbTsKIApAQCAtNTA1LDE4ICs1NDMsMjggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5RGljdF9UeXBlLCAmYXR0cmliKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoYXR0cmliIHx8IGt3KSB7Ci0gICAgICAgIGF0dHJpYiA9IChhdHRyaWIpID8gUHlEaWN0X0NvcHkoYXR0cmliKSA6IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoYXR0cmliKSB7CisgICAgICAgIC8qIGF0dHJpYiBwYXNzZWQgYXMgcG9zaXRpb25hbCBhcmcgKi8KKyAgICAgICAgYXR0cmliID0gUHlEaWN0X0NvcHkoYXR0cmliKTsKICAgICAgICAgaWYgKCFhdHRyaWIpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKGt3KQotICAgICAgICAgICAgUHlEaWN0X1VwZGF0ZShhdHRyaWIsIGt3KTsKKyAgICAgICAgaWYgKGt3ZHMpIHsKKyAgICAgICAgICAgIGlmIChQeURpY3RfVXBkYXRlKGF0dHJpYiwga3dkcykgPCAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGt3ZHMpIHsKKyAgICAgICAgLyogaGF2ZSBrZXl3b3JkIGFyZ3MgKi8KKyAgICAgICAgYXR0cmliID0gZ2V0X2F0dHJpYl9mcm9tX2tleXdvcmRzKGt3ZHMpOworICAgICAgICBpZiAoIWF0dHJpYikKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSB7CisgICAgICAgIC8qIG5vIGF0dHJpYiBhcmcsIG5vIGt3ZHMsIHNvIG5vIGF0dHJpYnV0ZSAqLwogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIGF0dHJpYiA9IFB5X05vbmU7CiAgICAgfQogCi0gICAgZWxlbSA9IGVsZW1lbnRfbmV3KHRhZywgYXR0cmliKTsKKyAgICBlbGVtID0gY3JlYXRlX25ld19lbGVtZW50KHRhZywgYXR0cmliKTsKIAogICAgIFB5X0RFQ1JFRihhdHRyaWIpOwogCkBAIC01MjgsMjAgKzU3Niw2NSBAQAogICAgIHJldHVybiBlbGVtOwogfQogCitzdGF0aWMgaW50CitlbGVtZW50X2djX3RyYXZlcnNlKEVsZW1lbnRPYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKHNlbGYtPnRhZyk7CisgICAgUHlfVklTSVQoSk9JTl9PQkooc2VsZi0+dGV4dCkpOworICAgIFB5X1ZJU0lUKEpPSU5fT0JKKHNlbGYtPnRhaWwpKTsKKworICAgIGlmIChzZWxmLT5leHRyYSkgeworICAgICAgICBpbnQgaTsKKyAgICAgICAgUHlfVklTSVQoc2VsZi0+ZXh0cmEtPmF0dHJpYik7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHNlbGYtPmV4dHJhLT5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIFB5X1ZJU0lUKHNlbGYtPmV4dHJhLT5jaGlsZHJlbltpXSk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitlbGVtZW50X2djX2NsZWFyKEVsZW1lbnRPYmplY3QgKnNlbGYpCit7CisgICAgUHlfQ0xFQVIoc2VsZi0+dGFnKTsKKworICAgIC8qIFRoZSBmb2xsb3dpbmcgaXMgbGlrZSBQeV9DTEVBUiBmb3Igc2VsZi0+dGV4dCBhbmQgc2VsZi0+dGFpbCwgYnV0CisgICAgICogd3JpdHRlbiBleHBsaWNpdGlseSBiZWNhdXNlIHRoZSByZWFsIHBvaW50ZXJzIGhpZGUgYmVoaW5kIGFjY2VzcworICAgICAqIG1hY3Jvcy4KKyAgICAqLworICAgIGlmIChzZWxmLT50ZXh0KSB7CisgICAgICAgIFB5T2JqZWN0ICp0bXAgPSBKT0lOX09CSihzZWxmLT50ZXh0KTsKKyAgICAgICAgc2VsZi0+dGV4dCA9IE5VTEw7CisgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgIH0KKworICAgIGlmIChzZWxmLT50YWlsKSB7CisgICAgICAgIFB5T2JqZWN0ICp0bXAgPSBKT0lOX09CSihzZWxmLT50YWlsKTsKKyAgICAgICAgc2VsZi0+dGFpbCA9IE5VTEw7CisgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgIH0KKworICAgIC8qIEFmdGVyIGRyb3BwaW5nIGFsbCByZWZlcmVuY2VzIGZyb20gZXh0cmEsIGl0J3Mgbm8gbG9uZ2VyIHZhbGlkIGFueXdheSwKKyAgICAgKiBzbyBmdWxseSBkZWFsbG9jYXRlIGl0LgorICAgICovCisgICAgZGVhbGxvY19leHRyYShzZWxmKTsKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIHZvaWQKIGVsZW1lbnRfZGVhbGxvYyhFbGVtZW50T2JqZWN0KiBzZWxmKQogewotICAgIGlmIChzZWxmLT5leHRyYSkKLSAgICAgICAgZWxlbWVudF9kZWFsbG9jX2V4dHJhKHNlbGYpOworICAgIFB5T2JqZWN0X0dDX1VuVHJhY2soc2VsZik7CiAKLSAgICAvKiBkaXNjYXJkIGF0dHJpYnV0ZXMgKi8KLSAgICBQeV9ERUNSRUYoc2VsZi0+dGFnKTsKLSAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+dGV4dCkpOwotICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT50YWlsKSk7CisgICAgaWYgKHNlbGYtPndlYWtyZWZsaXN0ICE9IE5VTEwpCisgICAgICAgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnMoKFB5T2JqZWN0ICopIHNlbGYpOworCisgICAgLyogZWxlbWVudF9nY19jbGVhciBjbGVhcnMgYWxsIHJlZmVyZW5jZXMgYW5kIGRlYWxsb2NhdGVzIGV4dHJhCisgICAgKi8KKyAgICBlbGVtZW50X2djX2NsZWFyKHNlbGYpOwogCiAgICAgUkVMRUFTRShzaXplb2YoRWxlbWVudE9iamVjdCksICJkZXN0cm95IGVsZW1lbnQiKTsKLQotICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtNTYxLDE1ICs2NTQsMTIgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9jbGVhcihFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK2VsZW1lbnRfY2xlYXJtZXRob2QoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCiB7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6Y2xlYXIiKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoc2VsZi0+ZXh0cmEpIHsKLSAgICAgICAgZWxlbWVudF9kZWFsbG9jX2V4dHJhKHNlbGYpOwotICAgICAgICBzZWxmLT5leHRyYSA9IE5VTEw7Ci0gICAgfQorICAgIGRlYWxsb2NfZXh0cmEoc2VsZik7CiAKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPnRleHQpKTsKQEAgLTU5MSw3ICs2ODEsNyBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOl9fY29weV9fIikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZWxlbWVudCA9IChFbGVtZW50T2JqZWN0KikgZWxlbWVudF9uZXcoCisgICAgZWxlbWVudCA9IChFbGVtZW50T2JqZWN0KikgY3JlYXRlX25ld19lbGVtZW50KAogICAgICAgICBzZWxmLT50YWcsIChzZWxmLT5leHRyYSkgPyBzZWxmLT5leHRyYS0+YXR0cmliIDogUHlfTm9uZQogICAgICAgICApOwogICAgIGlmICghZWxlbWVudCkKQEAgLTYwNiw3ICs2OTYsNyBAQAogICAgIFB5X0lOQ1JFRihKT0lOX09CSihlbGVtZW50LT50YWlsKSk7CiAKICAgICBpZiAoc2VsZi0+ZXh0cmEpIHsKLSAgICAgICAgCisKICAgICAgICAgaWYgKGVsZW1lbnRfcmVzaXplKGVsZW1lbnQsIHNlbGYtPmV4dHJhLT5sZW5ndGgpIDwgMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGVsZW1lbnQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02MTgsNyArNzA4LDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIGVsZW1lbnQtPmV4dHJhLT5sZW5ndGggPSBzZWxmLT5leHRyYS0+bGVuZ3RoOwotICAgICAgICAKKwogICAgIH0KIAogICAgIHJldHVybiAoUHlPYmplY3QqKSBlbGVtZW50OwpAQCAtNjU0LDE0ICs3NDQsMTQgQEAKICAgICAgICAgYXR0cmliID0gUHlfTm9uZTsKICAgICB9CiAKLSAgICBlbGVtZW50ID0gKEVsZW1lbnRPYmplY3QqKSBlbGVtZW50X25ldyh0YWcsIGF0dHJpYik7CisgICAgZWxlbWVudCA9IChFbGVtZW50T2JqZWN0KikgY3JlYXRlX25ld19lbGVtZW50KHRhZywgYXR0cmliKTsKIAogICAgIFB5X0RFQ1JFRih0YWcpOwogICAgIFB5X0RFQ1JFRihhdHRyaWIpOwogCiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAKKwogICAgIHRleHQgPSBkZWVwY29weShKT0lOX09CSihzZWxmLT50ZXh0KSwgbWVtbyk7CiAgICAgaWYgKCF0ZXh0KQogICAgICAgICBnb3RvIGVycm9yOwpAQCAtNjc1LDcgKzc2NSw3IEBACiAgICAgZWxlbWVudC0+dGFpbCA9IEpPSU5fU0VUKHRhaWwsIEpPSU5fR0VUKHNlbGYtPnRhaWwpKTsKIAogICAgIGlmIChzZWxmLT5leHRyYSkgewotICAgICAgICAKKwogICAgICAgICBpZiAoZWxlbWVudF9yZXNpemUoZWxlbWVudCwgc2VsZi0+ZXh0cmEtPmxlbmd0aCkgPCAwKQogICAgICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtNjg5LDExICs3NzksMTEgQEAKICAgICAgICAgfQogCiAgICAgICAgIGVsZW1lbnQtPmV4dHJhLT5sZW5ndGggPSBzZWxmLT5leHRyYS0+bGVuZ3RoOwotICAgICAgICAKKwogICAgIH0KIAogICAgIC8qIGFkZCBvYmplY3QgdG8gbWVtbyBkaWN0aW9uYXJ5IChzbyBkZWVwY29weSB3b24ndCB2aXNpdCBpdCBhZ2FpbikgKi8KLSAgICBpZCA9IFB5TG9uZ19Gcm9tTG9uZygoUHlfdWludHB0cl90KSBzZWxmKTsKKyAgICBpZCA9IFB5TG9uZ19Gcm9tU3NpemVfdCgoUHlfdWludHB0cl90KSBzZWxmKTsKICAgICBpZiAoIWlkKQogICAgICAgICBnb3RvIGVycm9yOwogCkBAIC03MTEsNiArODAxLDE4NiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgUHlPYmplY3QqCitlbGVtZW50X3NpemVvZihQeU9iamVjdCogX3NlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIEVsZW1lbnRPYmplY3QgKnNlbGYgPSAoRWxlbWVudE9iamVjdCopX3NlbGY7CisgICAgUHlfc3NpemVfdCByZXN1bHQgPSBzaXplb2YoRWxlbWVudE9iamVjdCk7CisgICAgaWYgKHNlbGYtPmV4dHJhKSB7CisgICAgICAgIHJlc3VsdCArPSBzaXplb2YoRWxlbWVudE9iamVjdEV4dHJhKTsKKyAgICAgICAgaWYgKHNlbGYtPmV4dHJhLT5jaGlsZHJlbiAhPSBzZWxmLT5leHRyYS0+X2NoaWxkcmVuKQorICAgICAgICAgICAgcmVzdWx0ICs9IHNpemVvZihQeU9iamVjdCopICogc2VsZi0+ZXh0cmEtPmFsbG9jYXRlZDsKKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworfQorCisvKiBkaWN0IGtleXMgZm9yIGdldHN0YXRlL3NldHN0YXRlLiAqLworI2RlZmluZSBQSUNLTEVEX1RBRyAidGFnIgorI2RlZmluZSBQSUNLTEVEX0NISUxEUkVOICJfY2hpbGRyZW4iCisjZGVmaW5lIFBJQ0tMRURfQVRUUklCICJhdHRyaWIiCisjZGVmaW5lIFBJQ0tMRURfVEFJTCAidGFpbCIKKyNkZWZpbmUgUElDS0xFRF9URVhUICJ0ZXh0IgorCisvKiBfX2dldHN0YXRlX18gcmV0dXJucyBhIGZhYnJpY2F0ZWQgaW5zdGFuY2UgZGljdCBhcyBpbiB0aGUgcHVyZS1QeXRob24KKyAqIEVsZW1lbnQgaW1wbGVtZW50YXRpb24sIGZvciBpbnRlcm9wZXJhYmlsaXR5L2ludGVyY2hhbmdlYWJpbGl0eS4gIFRoaXMKKyAqIG1ha2VzIHRoZSBwdXJlLVB5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuIEFQSSwgYnV0IChhKSB0aGVyZSBhcmVuJ3QKKyAqIGFueSB1bm5lY2Vzc2FyeSBzdHJ1Y3R1cmVzIHRoZXJlOyBhbmQgKGIpIGl0IGJ1eXMgY29tcGF0aWJpbGl0eSB3aXRoIDMuMgorICogcGlja2xlcy4gIFNlZSBpc3N1ZSAjMTYwNzYuCisgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitlbGVtZW50X2dldHN0YXRlKEVsZW1lbnRPYmplY3QgKnNlbGYpCit7CisgICAgaW50IGksIG5vYXR0cmliOworICAgIFB5T2JqZWN0ICppbnN0YW5jZWRpY3QgPSBOVUxMLCAqY2hpbGRyZW47CisKKyAgICAvKiBCdWlsZCBhIGxpc3Qgb2YgY2hpbGRyZW4uICovCisgICAgY2hpbGRyZW4gPSBQeUxpc3RfTmV3KHNlbGYtPmV4dHJhID8gc2VsZi0+ZXh0cmEtPmxlbmd0aCA6IDApOworICAgIGlmICghY2hpbGRyZW4pCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGZvciAoaSA9IDA7IGkgPCBQeUxpc3RfR0VUX1NJWkUoY2hpbGRyZW4pOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKmNoaWxkID0gc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2ldOworICAgICAgICBQeV9JTkNSRUYoY2hpbGQpOworICAgICAgICBQeUxpc3RfU0VUX0lURU0oY2hpbGRyZW4sIGksIGNoaWxkKTsKKyAgICB9CisKKyAgICAvKiBDb25zdHJ1Y3QgdGhlIHN0YXRlIG9iamVjdC4gKi8KKyAgICBub2F0dHJpYiA9IChzZWxmLT5leHRyYSA9PSBOVUxMIHx8IHNlbGYtPmV4dHJhLT5hdHRyaWIgPT0gUHlfTm9uZSk7CisgICAgaWYgKG5vYXR0cmliKQorICAgICAgICBpbnN0YW5jZWRpY3QgPSBQeV9CdWlsZFZhbHVlKCJ7c09zT3N7fXNPc099IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQSUNLTEVEX1RBRywgc2VsZi0+dGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBJQ0tMRURfQ0hJTERSRU4sIGNoaWxkcmVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBJQ0tMRURfQVRUUklCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBJQ0tMRURfVEVYVCwgc2VsZi0+dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQSUNLTEVEX1RBSUwsIHNlbGYtPnRhaWwpOworICAgIGVsc2UKKyAgICAgICAgaW5zdGFuY2VkaWN0ID0gUHlfQnVpbGRWYWx1ZSgie3NPc09zT3NPc099IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQSUNLTEVEX1RBRywgc2VsZi0+dGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBJQ0tMRURfQ0hJTERSRU4sIGNoaWxkcmVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBJQ0tMRURfQVRUUklCLCBzZWxmLT5leHRyYS0+YXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBJQ0tMRURfVEVYVCwgc2VsZi0+dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQSUNLTEVEX1RBSUwsIHNlbGYtPnRhaWwpOworICAgIGlmIChpbnN0YW5jZWRpY3QpIHsKKyAgICAgICAgUHlfREVDUkVGKGNoaWxkcmVuKTsKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlZGljdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeUxpc3RfR0VUX1NJWkUoY2hpbGRyZW4pOyBpKyspCisgICAgICAgICAgICBQeV9ERUNSRUYoUHlMaXN0X0dFVF9JVEVNKGNoaWxkcmVuLCBpKSk7CisgICAgICAgIFB5X0RFQ1JFRihjaGlsZHJlbik7CisKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorZWxlbWVudF9zZXRzdGF0ZV9mcm9tX2F0dHJpYnV0ZXMoRWxlbWVudE9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGFpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjaGlsZHJlbikKK3sKKyAgICBQeV9zc2l6ZV90IGksIG5jaGlsZHJlbjsKKworICAgIGlmICghdGFnKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJ0YWcgbWF5IG5vdCBiZSBOVUxMIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0NMRUFSKHNlbGYtPnRhZyk7CisgICAgc2VsZi0+dGFnID0gdGFnOworICAgIFB5X0lOQ1JFRihzZWxmLT50YWcpOworCisgICAgUHlfQ0xFQVIoc2VsZi0+dGV4dCk7CisgICAgc2VsZi0+dGV4dCA9IHRleHQgPyB0ZXh0IDogUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYoc2VsZi0+dGV4dCk7CisKKyAgICBQeV9DTEVBUihzZWxmLT50YWlsKTsKKyAgICBzZWxmLT50YWlsID0gdGFpbCA/IHRhaWwgOiBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihzZWxmLT50YWlsKTsKKworICAgIC8qIEhhbmRsZSBBVFRSSUIgYW5kIENISUxEUkVOLiAqLworICAgIGlmICghY2hpbGRyZW4gJiYgIWF0dHJpYikKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisKKyAgICAvKiBDb21wdXRlICduY2hpbGRyZW4nLiAqLworICAgIGlmIChjaGlsZHJlbikgeworICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayhjaGlsZHJlbikpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICInX2NoaWxkcmVuJyBpcyBub3QgYSBsaXN0Iik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBuY2hpbGRyZW4gPSBQeUxpc3RfU2l6ZShjaGlsZHJlbik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBuY2hpbGRyZW4gPSAwOworICAgIH0KKworICAgIC8qIEFsbG9jYXRlICdleHRyYScuICovCisgICAgaWYgKGVsZW1lbnRfcmVzaXplKHNlbGYsIG5jaGlsZHJlbikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGFzc2VydChzZWxmLT5leHRyYSAmJiBzZWxmLT5leHRyYS0+YWxsb2NhdGVkID49IG5jaGlsZHJlbik7CisKKyAgICAvKiBDb3B5IGNoaWxkcmVuICovCisgICAgZm9yIChpID0gMDsgaSA8IG5jaGlsZHJlbjsgaSsrKSB7CisgICAgICAgIHNlbGYtPmV4dHJhLT5jaGlsZHJlbltpXSA9IFB5TGlzdF9HRVRfSVRFTShjaGlsZHJlbiwgaSk7CisgICAgICAgIFB5X0lOQ1JFRihzZWxmLT5leHRyYS0+Y2hpbGRyZW5baV0pOworICAgIH0KKworICAgIHNlbGYtPmV4dHJhLT5sZW5ndGggPSBuY2hpbGRyZW47CisgICAgc2VsZi0+ZXh0cmEtPmFsbG9jYXRlZCA9IG5jaGlsZHJlbjsKKworICAgIC8qIFN0YXNoIGF0dHJpYi4gKi8KKyAgICBpZiAoYXR0cmliKSB7CisgICAgICAgIFB5X0NMRUFSKHNlbGYtPmV4dHJhLT5hdHRyaWIpOworICAgICAgICBzZWxmLT5leHRyYS0+YXR0cmliID0gYXR0cmliOworICAgICAgICBQeV9JTkNSRUYoYXR0cmliKTsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworLyogX19zZXRzdGF0ZV9fIGZvciBFbGVtZW50IGluc3RhbmNlIGZyb20gdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbi4KKyAqICdzdGF0ZScgc2hvdWxkIGJlIHRoZSBpbnN0YW5jZSBkaWN0LgorICovCitzdGF0aWMgUHlPYmplY3QgKgorZWxlbWVudF9zZXRzdGF0ZV9mcm9tX1B5dGhvbihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0ge1BJQ0tMRURfVEFHLCBQSUNLTEVEX0FUVFJJQiwgUElDS0xFRF9URVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQSUNLTEVEX1RBSUwsIFBJQ0tMRURfQ0hJTERSRU4sIDB9OworICAgIFB5T2JqZWN0ICphcmdzOworICAgIFB5T2JqZWN0ICp0YWcsICphdHRyaWIsICp0ZXh0LCAqdGFpbCwgKmNoaWxkcmVuOworICAgIFB5T2JqZWN0ICpyZXR2YWw7CisKKyAgICB0YWcgPSBhdHRyaWIgPSB0ZXh0ID0gdGFpbCA9IGNoaWxkcmVuID0gTlVMTDsKKyAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CisgICAgaWYgKCFhcmdzKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywgc3RhdGUsICJ8JE9PT09PIiwga3dsaXN0LCAmdGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmF0dHJpYiwgJnRleHQsICZ0YWlsLCAmY2hpbGRyZW4pKQorICAgICAgICByZXR2YWwgPSBlbGVtZW50X3NldHN0YXRlX2Zyb21fYXR0cmlidXRlcyhzZWxmLCB0YWcsIGF0dHJpYiwgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFpbCwgY2hpbGRyZW4pOworICAgIGVsc2UKKyAgICAgICAgcmV0dmFsID0gTlVMTDsKKworICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZWxlbWVudF9zZXRzdGF0ZShFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgaWYgKCFQeURpY3RfQ2hlY2tFeGFjdChzdGF0ZSkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJEb24ndCBrbm93IGhvdyB0byB1bnBpY2tsZSBcIiUuMjAwUlwiIGFzIGFuIEVsZW1lbnQiLAorICAgICAgICAgICAgICAgICAgICAgc3RhdGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZQorICAgICAgICByZXR1cm4gZWxlbWVudF9zZXRzdGF0ZV9mcm9tX1B5dGhvbihzZWxmLCBzdGF0ZSk7Cit9CisKIExPQ0FMKGludCkKIGNoZWNrcGF0aChQeU9iamVjdCogdGFnKQogewpAQCAtNzIzLDEzICs5OTMsMTYgQEAKICAgICAoY2ggPT0gJy8nIHx8IGNoID09ICcqJyB8fCBjaCA9PSAnWycgfHwgY2ggPT0gJ0AnIHx8IGNoID09ICcuJykKIAogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodGFnKSkgewotICAgICAgICBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodGFnKTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VW5pY29kZV9HRVRfU0laRSh0YWcpOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChwW2ldID09ICd7JykKKyAgICAgICAgY29uc3QgUHlfc3NpemVfdCBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0YWcpOworICAgICAgICB2b2lkICpkYXRhID0gUHlVbmljb2RlX0RBVEEodGFnKTsKKyAgICAgICAgdW5zaWduZWQgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORCh0YWcpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgICAgIGlmIChjaCA9PSAneycpCiAgICAgICAgICAgICAgICAgY2hlY2sgPSAwOwotICAgICAgICAgICAgZWxzZSBpZiAocFtpXSA9PSAnfScpCisgICAgICAgICAgICBlbHNlIGlmIChjaCA9PSAnfScpCiAgICAgICAgICAgICAgICAgY2hlY2sgPSAxOwotICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sgJiYgUEFUSENIQVIocFtpXSkpCisgICAgICAgICAgICBlbHNlIGlmIChjaGVjayAmJiBQQVRIQ0hBUihjaCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CkBAIC03NzIsNiArMTA0NSwxNSBAQAogICAgIHNlcWxlbiA9IFB5U2VxdWVuY2VfU2l6ZShzZXEpOwogICAgIGZvciAoaSA9IDA7IGkgPCBzZXFsZW47IGkrKykgewogICAgICAgICBQeU9iamVjdCogZWxlbWVudCA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShzZXEsIGkpOworICAgICAgICBpZiAoIVB5T2JqZWN0X0lzSW5zdGFuY2UoZWxlbWVudCwgKFB5T2JqZWN0ICopJkVsZW1lbnRfVHlwZSkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZXEpOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYW4gRWxlbWVudCwgbm90IFwiJS4yMDBzXCIiLAorICAgICAgICAgICAgICAgIFB5X1RZUEUoZWxlbWVudCktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoZWxlbWVudF9hZGRfc3ViZWxlbWVudChzZWxmLCBlbGVtZW50KSA8IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZXEpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03ODQsMjMgKzEwNjYsMjcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9maW5kKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorZWxlbWVudF9maW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBpbnQgaTsKLQogICAgIFB5T2JqZWN0KiB0YWc7CiAgICAgUHlPYmplY3QqIG5hbWVzcGFjZXMgPSBQeV9Ob25lOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPOmZpbmQiLCAmdGFnLCAmbmFtZXNwYWNlcykpCisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCAwfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE86ZmluZCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFnLCAmbmFtZXNwYWNlcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKGNoZWNrcGF0aCh0YWcpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkKLSAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QoCi0gICAgICAgICAgICBlbGVtZW50cGF0aF9vYmosICJmaW5kIiwgIk9PTyIsIHNlbGYsIHRhZywgbmFtZXNwYWNlcworICAgIGlmIChjaGVja3BhdGgodGFnKSB8fCBuYW1lc3BhY2VzICE9IFB5X05vbmUpIHsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoZmluZCk7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgZWxlbWVudHBhdGhfb2JqLCAmUHlJZF9maW5kLCAiT09PIiwgc2VsZiwgdGFnLCBuYW1lc3BhY2VzCiAgICAgICAgICAgICApOworICAgIH0KIAogICAgIGlmICghc2VsZi0+ZXh0cmEpCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwotICAgICAgICAKKwogICAgIGZvciAoaSA9IDA7IGkgPCBzZWxmLT5leHRyYS0+bGVuZ3RoOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QqIGl0ZW0gPSBzZWxmLT5leHRyYS0+Y2hpbGRyZW5baV07CiAgICAgICAgIGlmIChFbGVtZW50X0NoZWNrRXhhY3QoaXRlbSkgJiYKQEAgLTgxNCwxOSArMTEwMCwyMiBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2ZpbmR0ZXh0KEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorZWxlbWVudF9maW5kdGV4dChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgaW50IGk7Ci0KICAgICBQeU9iamVjdCogdGFnOwogICAgIFB5T2JqZWN0KiBkZWZhdWx0X3ZhbHVlID0gUHlfTm9uZTsKICAgICBQeU9iamVjdCogbmFtZXNwYWNlcyA9IFB5X05vbmU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE9POmZpbmR0ZXh0IiwgJnRhZywgJmRlZmF1bHRfdmFsdWUsICZuYW1lc3BhY2VzKSkKKyAgICBfUHlfSURFTlRJRklFUihmaW5kdGV4dCk7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJwYXRoIiwgImRlZmF1bHQiLCAibmFtZXNwYWNlcyIsIDB9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98T086ZmluZHRleHQiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhZywgJmRlZmF1bHRfdmFsdWUsICZuYW1lc3BhY2VzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoY2hlY2twYXRoKHRhZykgfHwgbmFtZXNwYWNlcyAhPSBQeV9Ob25lKQotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZCgKLSAgICAgICAgICAgIGVsZW1lbnRwYXRoX29iaiwgImZpbmR0ZXh0IiwgIk9PT08iLCBzZWxmLCB0YWcsIGRlZmF1bHRfdmFsdWUsIG5hbWVzcGFjZXMKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICBlbGVtZW50cGF0aF9vYmosICZQeUlkX2ZpbmR0ZXh0LCAiT09PTyIsIHNlbGYsIHRhZywgZGVmYXVsdF92YWx1ZSwgbmFtZXNwYWNlcwogICAgICAgICAgICAgKTsKIAogICAgIGlmICghc2VsZi0+ZXh0cmEpIHsKQEAgLTg0MCw3ICsxMTI5LDcgQEAKIAogICAgICAgICAgICAgUHlPYmplY3QqIHRleHQgPSBlbGVtZW50X2dldF90ZXh0KGl0ZW0pOwogICAgICAgICAgICAgaWYgKHRleHQgPT0gUHlfTm9uZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfTmV3KDAsIDApOwogICAgICAgICAgICAgUHlfWElOQ1JFRih0ZXh0KTsKICAgICAgICAgICAgIHJldHVybiB0ZXh0OwogICAgICAgICB9CkBAIC04NTEsMjAgKzExNDAsMjQgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9maW5kYWxsKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorZWxlbWVudF9maW5kYWxsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBpbnQgaTsKICAgICBQeU9iamVjdCogb3V0OwotCiAgICAgUHlPYmplY3QqIHRhZzsKICAgICBQeU9iamVjdCogbmFtZXNwYWNlcyA9IFB5X05vbmU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE86ZmluZGFsbCIsICZ0YWcsICZuYW1lc3BhY2VzKSkKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIDB9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TzpmaW5kYWxsIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZuYW1lc3BhY2VzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoY2hlY2twYXRoKHRhZykgfHwgbmFtZXNwYWNlcyAhPSBQeV9Ob25lKQotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZCgKLSAgICAgICAgICAgIGVsZW1lbnRwYXRoX29iaiwgImZpbmRhbGwiLCAiT09PIiwgc2VsZiwgdGFnLCBuYW1lc3BhY2VzCisgICAgaWYgKGNoZWNrcGF0aCh0YWcpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkgeworICAgICAgICBfUHlfSURFTlRJRklFUihmaW5kYWxsKTsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICBlbGVtZW50cGF0aF9vYmosICZQeUlkX2ZpbmRhbGwsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMKICAgICAgICAgICAgICk7CisgICAgfQogCiAgICAgb3V0ID0gUHlMaXN0X05ldygwKTsKICAgICBpZiAoIW91dCkKQEAgLTg4OCwyNiArMTE4MSwzMyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2l0ZXJmaW5kKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorZWxlbWVudF9pdGVyZmluZChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlPYmplY3QqIHRhZzsKICAgICBQeU9iamVjdCogbmFtZXNwYWNlcyA9IFB5X05vbmU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE86aXRlcmZpbmQiLCAmdGFnLCAmbmFtZXNwYWNlcykpCisgICAgX1B5X0lERU5USUZJRVIoaXRlcmZpbmQpOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgMH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPOml0ZXJmaW5kIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZuYW1lc3BhY2VzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZCgKLSAgICAgICAgZWxlbWVudHBhdGhfb2JqLCAiaXRlcmZpbmQiLCAiT09PIiwgc2VsZiwgdGFnLCBuYW1lc3BhY2VzCisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgIGVsZW1lbnRwYXRoX29iaiwgJlB5SWRfaXRlcmZpbmQsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMKICAgICAgICAgKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9nZXQoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitlbGVtZW50X2dldChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3ZHMpCiB7CiAgICAgUHlPYmplY3QqIHZhbHVlOworICAgIHN0YXRpYyBjaGFyKiBrd2xpc3RbXSA9IHsia2V5IiwgImRlZmF1bHQiLCAwfTsKIAogICAgIFB5T2JqZWN0KiBrZXk7CiAgICAgUHlPYmplY3QqIGRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPOmdldCIsICZrZXksICZkZWZhdWx0X3ZhbHVlKSkKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE86Z2V0Iiwga3dsaXN0LCAma2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkZWZhdWx0X3ZhbHVlKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIXNlbGYtPmV4dHJhIHx8IHNlbGYtPmV4dHJhLT5hdHRyaWIgPT0gUHlfTm9uZSkKQEAgLTk0OSw2NyArMTI0OSwzNCBAQAogICAgIHJldHVybiBsaXN0OwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2l0ZXIoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisKK3N0YXRpYyBQeU9iamVjdCAqCitjcmVhdGVfZWxlbWVudGl0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhZywgaW50IGdldHRleHQpOworCisKK3N0YXRpYyBQeU9iamVjdCAqCitlbGVtZW50X2l0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5T2JqZWN0KiByZXN1bHQ7Ci0gICAgCiAgICAgUHlPYmplY3QqIHRhZyA9IFB5X05vbmU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzppdGVyIiwgJnRhZykpCisgICAgc3RhdGljIGNoYXIqIGt3bGlzdFtdID0geyJ0YWciLCAwfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8TzppdGVyIiwga3dsaXN0LCAmdGFnKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIWVsZW1lbnR0cmVlX2l0ZXJfb2JqKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZygKLSAgICAgICAgICAgIFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICJpdGVyIGhlbHBlciBub3QgZm91bmQiCi0gICAgICAgICAgICApOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBhcmdzID0gUHlUdXBsZV9OZXcoMik7Ci0gICAgaWYgKCFhcmdzKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0lOQ1JFRihzZWxmKTsgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCAoUHlPYmplY3QqKSBzZWxmKTsKLSAgICBQeV9JTkNSRUYodGFnKTsgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMSwgKFB5T2JqZWN0KikgdGFnKTsKLQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoZWxlbWVudHRyZWVfaXRlcl9vYmosIGFyZ3MpOwotCi0gICAgUHlfREVDUkVGKGFyZ3MpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gY3JlYXRlX2VsZW1lbnRpdGVyKHNlbGYsIHRhZywgMCk7CiB9CiAKIAogc3RhdGljIFB5T2JqZWN0KgogZWxlbWVudF9pdGVydGV4dChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKLSAgICBQeU9iamVjdCogcmVzdWx0OwotICAgIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOml0ZXJ0ZXh0IikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFlbGVtZW50dHJlZV9pdGVydGV4dF9vYmopIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgIml0ZXJ0ZXh0IGhlbHBlciBub3QgZm91bmQiCi0gICAgICAgICAgICApOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBhcmdzID0gUHlUdXBsZV9OZXcoMSk7Ci0gICAgaWYgKCFhcmdzKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0lOQ1JFRihzZWxmKTsgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCAoUHlPYmplY3QqKSBzZWxmKTsKLQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoZWxlbWVudHRyZWVfaXRlcnRleHRfb2JqLCBhcmdzKTsKLQotICAgIFB5X0RFQ1JFRihhcmdzKTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGNyZWF0ZV9lbGVtZW50aXRlcihzZWxmLCBQeV9Ob25lLCAxKTsKIH0KIAorCiBzdGF0aWMgUHlPYmplY3QqCiBlbGVtZW50X2dldGl0ZW0oUHlPYmplY3QqIHNlbGZfLCBQeV9zc2l6ZV90IGluZGV4KQogewpAQCAtMTAzOSw3ICsxMzA2LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIXNlbGYtPmV4dHJhKQotICAgICAgICBlbGVtZW50X25ld19leHRyYShzZWxmLCBOVUxMKTsKKyAgICAgICAgY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpOwogCiAgICAgaWYgKGluZGV4IDwgMCkgewogICAgICAgICBpbmRleCArPSBzZWxmLT5leHRyYS0+bGVuZ3RoOwpAQCAtMTExMCw3ICsxMzc3LDcgQEAKICAgICBpZiAoIWF0dHJpYikKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBlbGVtID0gZWxlbWVudF9uZXcodGFnLCBhdHRyaWIpOworICAgIGVsZW0gPSBjcmVhdGVfbmV3X2VsZW1lbnQodGFnLCBhdHRyaWIpOwogCiAgICAgUHlfREVDUkVGKGF0dHJpYik7CiAKQEAgLTExMTgsMzEgKzEzODUsNiBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X3JlZHVjZShFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpfX3JlZHVjZV9fIikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogSGFjayBhbGVydDogVGhpcyBtZXRob2QgaXMgdXNlZCB0byB3b3JrIGFyb3VuZCBhIF9fY29weV9fCi0gICAgICAgcHJvYmxlbSBvbiBjZXJ0YWluIDIuMyBhbmQgMi40IHZlcnNpb25zLiAgVG8gc2F2ZSB0aW1lIGFuZAotICAgICAgIHNpbXBsaWZ5IHRoZSBjb2RlLCB3ZSBjcmVhdGUgdGhlIGNvcHkgaW4gaGVyZSwgYW5kIHVzZSBhIGR1bW15Ci0gICAgICAgY29weWVsZW1lbnQgaGVscGVyIHRvIHRyaWNrIHRoZSBjb3B5IG1vZHVsZSBpbnRvIGRvaW5nIHRoZQotICAgICAgIHJpZ2h0IHRoaW5nLiAqLwotCi0gICAgaWYgKCFlbGVtZW50dHJlZV9jb3B5ZWxlbWVudF9vYmopIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgImNvcHllbGVtZW50IGhlbHBlciBub3QgZm91bmQiCi0gICAgICAgICAgICApOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgKLSAgICAgICAgIk8oTikiLCBlbGVtZW50dHJlZV9jb3B5ZWxlbWVudF9vYmosIGVsZW1lbnRfY29weShzZWxmLCBhcmdzKQotICAgICAgICApOwotfQotCi1zdGF0aWMgUHlPYmplY3QqCiBlbGVtZW50X3JlbW92ZShFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKICAgICBpbnQgaTsKQEAgLTExODksNyArMTQzMSwxMCBAQAogc3RhdGljIFB5T2JqZWN0KgogZWxlbWVudF9yZXByKEVsZW1lbnRPYmplY3QqIHNlbGYpCiB7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8RWxlbWVudCAlUiBhdCAlcD4iLCBzZWxmLT50YWcsIHNlbGYpOworICAgIGlmIChzZWxmLT50YWcpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPEVsZW1lbnQgJVIgYXQgJXA+Iiwgc2VsZi0+dGFnLCBzZWxmKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPEVsZW1lbnQgYXQgJXA+Iiwgc2VsZik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKQEAgLTEyMDMsNyArMTQ0OCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFzZWxmLT5leHRyYSkKLSAgICAgICAgZWxlbWVudF9uZXdfZXh0cmEoc2VsZiwgTlVMTCk7CisgICAgICAgIGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKTsKIAogICAgIGF0dHJpYiA9IGVsZW1lbnRfZ2V0X2F0dHJpYihzZWxmKTsKICAgICBpZiAoIWF0dHJpYikKQEAgLTEyNTAsMTMgKzE0OTUsOCBAQAogewogICAgIEVsZW1lbnRPYmplY3QqIHNlbGYgPSAoRWxlbWVudE9iamVjdCopIHNlbGZfOwogCi0jaWYgKFBZX1ZFUlNJT05fSEVYIDwgMHgwMjA1MDAwMCkKLSAgICBpZiAoUHlJbnRfQ2hlY2soaXRlbSkgfHwgUHlMb25nX0NoZWNrKGl0ZW0pKSB7Ci0gICAgICAgIGxvbmcgaSA9IFB5SW50X0FzTG9uZyhpdGVtKTsKLSNlbHNlCiAgICAgaWYgKFB5SW5kZXhfQ2hlY2soaXRlbSkpIHsKICAgICAgICAgUHlfc3NpemVfdCBpID0gUHlOdW1iZXJfQXNTc2l6ZV90KGl0ZW0sIFB5RXhjX0luZGV4RXJyb3IpOwotI2VuZGlmCiAKICAgICAgICAgaWYgKGkgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMzA3LDEzICsxNTQ3LDggQEAKIHsKICAgICBFbGVtZW50T2JqZWN0KiBzZWxmID0gKEVsZW1lbnRPYmplY3QqKSBzZWxmXzsKIAotI2lmIChQWV9WRVJTSU9OX0hFWCA8IDB4MDIwNTAwMDApCi0gICAgaWYgKFB5SW50X0NoZWNrKGl0ZW0pIHx8IFB5TG9uZ19DaGVjayhpdGVtKSkgewotICAgICAgICBsb25nIGkgPSBQeUludF9Bc0xvbmcoaXRlbSk7Ci0jZWxzZQogICAgIGlmIChQeUluZGV4X0NoZWNrKGl0ZW0pKSB7CiAgICAgICAgIFB5X3NzaXplX3QgaSA9IFB5TnVtYmVyX0FzU3NpemVfdChpdGVtLCBQeUV4Y19JbmRleEVycm9yKTsKLSNlbmRpZgogCiAgICAgICAgIGlmIChpID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTEzMjksNyArMTU2NCw3IEBACiAgICAgICAgIFB5T2JqZWN0KiBzZXEgPSBOVUxMOwogCiAgICAgICAgIGlmICghc2VsZi0+ZXh0cmEpCi0gICAgICAgICAgICBlbGVtZW50X25ld19leHRyYShzZWxmLCBOVUxMKTsKKyAgICAgICAgICAgIGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKTsKIAogICAgICAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoaXRlbSwKICAgICAgICAgICAgICAgICBzZWxmLT5leHRyYS0+bGVuZ3RoLApAQCAtMTMzNyw5ICsxNTcyLDc0IEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKLSAgICAgICAgICAgIG5ld2xlbiA9IDA7CisgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAvKiBEZWxldGUgc2xpY2UgKi8KKyAgICAgICAgICAgIHNpemVfdCBjdXI7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisKKyAgICAgICAgICAgIGlmIChzbGljZWxlbiA8PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgICAvKiBTaW5jZSB3ZSdyZSBkZWxldGluZywgdGhlIGRpcmVjdGlvbiBvZiB0aGUgcmFuZ2UgZG9lc24ndCBtYXR0ZXIsCisgICAgICAgICAgICAgKiBzbyBmb3Igc2ltcGxpY2l0eSBtYWtlIGl0IGFsd2F5cyBhc2NlbmRpbmcuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKHN0ZXAgPCAwKSB7CisgICAgICAgICAgICAgICAgc3RvcCA9IHN0YXJ0ICsgMTsKKyAgICAgICAgICAgICAgICBzdGFydCA9IHN0b3AgKyBzdGVwICogKHNsaWNlbGVuIC0gMSkgLSAxOworICAgICAgICAgICAgICAgIHN0ZXAgPSAtc3RlcDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXNzZXJ0KChzaXplX3Qpc2xpY2VsZW4gPD0gUFlfU0laRV9NQVggLyBzaXplb2YoUHlPYmplY3QgKikpOworCisgICAgICAgICAgICAvKiByZWN5Y2xlIGlzIGEgbGlzdCB0aGF0IHdpbGwgY29udGFpbiBhbGwgdGhlIGNoaWxkcmVuCisgICAgICAgICAgICAgKiBzY2hlZHVsZWQgZm9yIHJlbW92YWwuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKCEocmVjeWNsZSA9IFB5TGlzdF9OZXcoc2xpY2VsZW4pKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBUaGlzIGxvb3Agd2Fsa3Mgb3ZlciBhbGwgdGhlIGNoaWxkcmVuIHRoYXQgaGF2ZSB0byBiZSBkZWxldGVkLAorICAgICAgICAgICAgICogd2l0aCBjdXIgcG9pbnRpbmcgYXQgdGhlbS4gbnVtX21vdmVkIGlzIHRoZSBhbW91bnQgb2YgY2hpbGRyZW4KKyAgICAgICAgICAgICAqIHVudGlsIHRoZSBuZXh0IGRlbGV0ZWQgY2hpbGQgdGhhdCBoYXZlIHRvIGJlICJzaGlmdGVkIGRvd24iIHRvCisgICAgICAgICAgICAgKiBvY2N1cHkgdGhlIGRlbGV0ZWQncyBwbGFjZXMuCisgICAgICAgICAgICAgKiBOb3RlIHRoYXQgaW4gdGhlIGl0aCBpdGVyYXRpb24sIHNoaWZ0aW5nIGlzIGRvbmUgaStpIHBsYWNlcyBkb3duCisgICAgICAgICAgICAgKiBiZWNhdXNlIGkgY2hpbGRyZW4gd2VyZSBhbHJlYWR5IHJlbW92ZWQuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgZm9yIChjdXIgPSBzdGFydCwgaSA9IDA7IGN1ciA8IChzaXplX3Qpc3RvcDsgY3VyICs9IHN0ZXAsICsraSkgeworICAgICAgICAgICAgICAgIC8qIENvbXB1dGUgaG93IG1hbnkgY2hpbGRyZW4gaGF2ZSB0byBiZSBtb3ZlZCwgY2xpcHBpbmcgYXQgdGhlCisgICAgICAgICAgICAgICAgICogbGlzdCBlbmQuCisgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG51bV9tb3ZlZCA9IHN0ZXAgLSAxOworICAgICAgICAgICAgICAgIGlmIChjdXIgKyBzdGVwID49IChzaXplX3Qpc2VsZi0+ZXh0cmEtPmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICBudW1fbW92ZWQgPSBzZWxmLT5leHRyYS0+bGVuZ3RoIC0gY3VyIC0gMTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBQeUxpc3RfU0VUX0lURU0ocmVjeWNsZSwgaSwgc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2N1cl0pOworCisgICAgICAgICAgICAgICAgbWVtbW92ZSgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZXh0cmEtPmNoaWxkcmVuICsgY3VyIC0gaSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZXh0cmEtPmNoaWxkcmVuICsgY3VyICsgMSwKKyAgICAgICAgICAgICAgICAgICAgbnVtX21vdmVkICogc2l6ZW9mKFB5T2JqZWN0ICopKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogTGVmdG92ZXIgInRhaWwiIGFmdGVyIHRoZSBsYXN0IHJlbW92ZWQgY2hpbGQgKi8KKyAgICAgICAgICAgIGN1ciA9IHN0YXJ0ICsgKHNpemVfdClzbGljZWxlbiAqIHN0ZXA7CisgICAgICAgICAgICBpZiAoY3VyIDwgKHNpemVfdClzZWxmLT5leHRyYS0+bGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgbWVtbW92ZSgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZXh0cmEtPmNoaWxkcmVuICsgY3VyIC0gc2xpY2VsZW4sCisgICAgICAgICAgICAgICAgICAgIHNlbGYtPmV4dHJhLT5jaGlsZHJlbiArIGN1ciwKKyAgICAgICAgICAgICAgICAgICAgKHNlbGYtPmV4dHJhLT5sZW5ndGggLSBjdXIpICogc2l6ZW9mKFB5T2JqZWN0ICopKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2VsZi0+ZXh0cmEtPmxlbmd0aCAtPSBzbGljZWxlbjsKKworICAgICAgICAgICAgLyogRGlzY2FyZCB0aGUgcmVjeWNsZSBsaXN0IHdpdGggYWxsIHRoZSBkZWxldGVkIHN1Yi1lbGVtZW50cyAqLworICAgICAgICAgICAgUHlfWERFQ1JFRihyZWN5Y2xlKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CiAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogQSBuZXcgc2xpY2UgaXMgYWN0dWFsbHkgYmVpbmcgYXNzaWduZWQgKi8KICAgICAgICAgICAgIHNlcSA9IFB5U2VxdWVuY2VfRmFzdCh2YWx1ZSwgIiIpOwogICAgICAgICAgICAgaWYgKCFzZXEpIHsKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCkBAIC0xMzU0LDE5ICsxNjU0LDEzIEBACiAgICAgICAgIGlmIChzdGVwICE9ICAxICYmIG5ld2xlbiAhPSBzbGljZWxlbikKICAgICAgICAgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0jaWYgKFBZX1ZFUlNJT05fSEVYIDwgMHgwMjA1MDAwMCkKLSAgICAgICAgICAgICAgICAiYXR0ZW1wdCB0byBhc3NpZ24gc2VxdWVuY2Ugb2Ygc2l6ZSAlZCAiCi0gICAgICAgICAgICAgICAgInRvIGV4dGVuZGVkIHNsaWNlIG9mIHNpemUgJWQiLAotI2Vsc2UKICAgICAgICAgICAgICAgICAiYXR0ZW1wdCB0byBhc3NpZ24gc2VxdWVuY2Ugb2Ygc2l6ZSAlemQgIgogICAgICAgICAgICAgICAgICJ0byBleHRlbmRlZCBzbGljZSBvZiBzaXplICV6ZCIsCi0jZW5kaWYKICAgICAgICAgICAgICAgICBuZXdsZW4sIHNsaWNlbGVuCiAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCi0KICAgICAgICAgLyogUmVzaXplIGJlZm9yZSBjcmVhdGluZyB0aGUgcmVjeWNsZSBiaW4sIHRvIHByZXZlbnQgcmVmbGVha3MuICovCiAgICAgICAgIGlmIChuZXdsZW4gPiBzbGljZWxlbikgewogICAgICAgICAgICAgaWYgKGVsZW1lbnRfcmVzaXplKHNlbGYsIG5ld2xlbiAtIHNsaWNlbGVuKSA8IDApIHsKQEAgLTE0MzEsMjUgKzE3MjUsMjUgQEAKIAogc3RhdGljIFB5TWV0aG9kRGVmIGVsZW1lbnRfbWV0aG9kc1tdID0gewogCi0gICAgeyJjbGVhciIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9jbGVhciwgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImNsZWFyIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2NsZWFybWV0aG9kLCBNRVRIX1ZBUkFSR1N9LAogCi0gICAgeyJnZXQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZ2V0LCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiZ2V0IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2dldCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCiAgICAgeyJzZXQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfc2V0LCBNRVRIX1ZBUkFSR1N9LAogCi0gICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2ZpbmQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJmaW5kdGV4dCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9maW5kdGV4dCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImZpbmRhbGwiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZmluZGFsbCwgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZmluZCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCisgICAgeyJmaW5kdGV4dCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9maW5kdGV4dCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCisgICAgeyJmaW5kYWxsIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2ZpbmRhbGwsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFN9LAogCiAgICAgeyJhcHBlbmQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfYXBwZW5kLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZXh0ZW5kIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2V4dGVuZCwgTUVUSF9WQVJBUkdTfSwKICAgICB7Imluc2VydCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9pbnNlcnQsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJyZW1vdmUiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfcmVtb3ZlLCBNRVRIX1ZBUkFSR1N9LAogCi0gICAgeyJpdGVyIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2l0ZXIsIE1FVEhfVkFSQVJHU30sCisgICAgeyJpdGVyIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2l0ZXIsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFN9LAogICAgIHsiaXRlcnRleHQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlcnRleHQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJpdGVyZmluZCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9pdGVyZmluZCwgTUVUSF9WQVJBUkdTfSwKKyAgICB7Iml0ZXJmaW5kIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2l0ZXJmaW5kLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTfSwKIAotICAgIHsiZ2V0aXRlcmF0b3IiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlciwgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImdldGl0ZXJhdG9yIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2l0ZXIsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFN9LAogICAgIHsiZ2V0Y2hpbGRyZW4iLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZ2V0Y2hpbGRyZW4sIE1FVEhfVkFSQVJHU30sCiAKICAgICB7Iml0ZW1zIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2l0ZW1zLCBNRVRIX1ZBUkFSR1N9LApAQCAtMTQ1OSwxOCArMTc1Myw5IEBACiAKICAgICB7Il9fY29weV9fIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2NvcHksIE1FVEhfVkFSQVJHU30sCiAgICAgeyJfX2RlZXBjb3B5X18iLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZGVlcGNvcHksIE1FVEhfVkFSQVJHU30sCi0KLSAgICAvKiBTb21lIDIuMyBhbmQgMi40IHZlcnNpb25zIGRvIG5vdCBoYW5kbGUgdGhlIF9fY29weV9fIG1ldGhvZCBvbgotICAgICAgIEMgb2JqZWN0cyBjb3JyZWN0bHksIHNvIHdlIGhhdmUgdG8gZmFrZSBpdCB1c2luZyBhIF9fcmVkdWNlX18tCi0gICAgICAgYmFzZWQgaGFjayAoc2VlIHRoZSBlbGVtZW50X3JlZHVjZSBpbXBsZW1lbnRhdGlvbiBhYm92ZSBmb3IKLSAgICAgICBkZXRhaWxzKS4gKi8KLQotICAgIC8qIFRoZSBiZWhhdmlvdXIgaGFzIGJlZW4gY2hhbmdlZCBpbiAyLjMuNSBhbmQgMi40LjEsIHNvIHdlJ3JlCi0gICAgICAgdXNpbmcgYSBydW50aW1lIHRlc3QgdG8gZmlndXJlIG91dCBpZiB3ZSBuZWVkIHRvIGZha2UgdGhpbmdzCi0gICAgICAgb3Igbm93IChzZWUgdGhlIGluaXQgY29kZSBiZWxvdykuICBUaGUgZm9sbG93aW5nIGVudHJ5IGlzCi0gICAgICAgZW5hYmxlZCBvbmx5IGlmIHRoZSBoYWNrIGlzIG5lZWRlZC4gKi8KLQotICAgIHsiIV9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfcmVkdWNlLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiX19zaXplb2ZfXyIsIGVsZW1lbnRfc2l6ZW9mLCBNRVRIX05PQVJHU30sCisgICAgeyJfX2dldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pZWxlbWVudF9nZXRzdGF0ZSwgTUVUSF9OT0FSR1N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKWVsZW1lbnRfc2V0c3RhdGUsIE1FVEhfT30sCiAKICAgICB7TlVMTCwgTlVMTH0KIH07CkBAIC0xNDgzLDcgKzE3NjgsNyBAQAogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lb2JqKSkKICAgICAgICAgbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZW9iaik7Ci0gICAgCisKICAgICBpZiAobmFtZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTUxMCw3ICsxNzk1LDcgQEAKICAgICB9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAiYXR0cmliIikgPT0gMCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBpZiAoIXNlbGYtPmV4dHJhKQotICAgICAgICAgICAgZWxlbWVudF9uZXdfZXh0cmEoc2VsZiwgTlVMTCk7CisgICAgICAgICAgICBjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCk7CiAgICAgICAgIHJlcyA9IGVsZW1lbnRfZ2V0X2F0dHJpYihzZWxmKTsKICAgICB9CiAKQEAgLTE1MjEsMTYgKzE4MDYsMTUgQEAKICAgICByZXR1cm4gcmVzOwogfQogCi1zdGF0aWMgaW50Ci1lbGVtZW50X3NldGF0dHIoRWxlbWVudE9iamVjdCogc2VsZiwgY29uc3QgY2hhciogbmFtZSwgUHlPYmplY3QqIHZhbHVlKQorc3RhdGljIFB5T2JqZWN0KgorZWxlbWVudF9zZXRhdHRybyhFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogbmFtZW9iaiwgUHlPYmplY3QqIHZhbHVlKQogewotICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZygKLSAgICAgICAgICAgIFB5RXhjX0F0dHJpYnV0ZUVycm9yLAotICAgICAgICAgICAgImNhbid0IGRlbGV0ZSBlbGVtZW50IGF0dHJpYnV0ZXMiCi0gICAgICAgICAgICApOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQorICAgIGNoYXIgKm5hbWUgPSAiIjsKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWVvYmopKQorICAgICAgICBuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lb2JqKTsKKworICAgIGlmIChuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKHN0cmNtcChuYW1lLCAidGFnIikgPT0gMCkgewogICAgICAgICBQeV9ERUNSRUYoc2VsZi0+dGFnKTsKQEAgLTE1NDYsMTYgKzE4MzAsMTYgQEAKICAgICAgICAgUHlfSU5DUkVGKHNlbGYtPnRhaWwpOwogICAgIH0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJhdHRyaWIiKSA9PSAwKSB7CiAgICAgICAgIGlmICghc2VsZi0+ZXh0cmEpCi0gICAgICAgICAgICBlbGVtZW50X25ld19leHRyYShzZWxmLCBOVUxMKTsKKyAgICAgICAgICAgIGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKHNlbGYtPmV4dHJhLT5hdHRyaWIpOwogICAgICAgICBzZWxmLT5leHRyYS0+YXR0cmliID0gdmFsdWU7CiAgICAgICAgIFB5X0lOQ1JFRihzZWxmLT5leHRyYS0+YXR0cmliKTsKICAgICB9IGVsc2UgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWUpOwotICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgUHlTZXF1ZW5jZU1ldGhvZHMgZWxlbWVudF9hc19zZXF1ZW5jZSA9IHsKQEAgLTE1NzYsNTggKzE4NjAsMzQ2IEBACiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgRWxlbWVudF9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJFbGVtZW50Iiwgc2l6ZW9mKEVsZW1lbnRPYmplY3QpLCAwLAorICAgICJ4bWwuZXRyZWUuRWxlbWVudFRyZWUuRWxlbWVudCIsIHNpemVvZihFbGVtZW50T2JqZWN0KSwgMCwKICAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpZWxlbWVudF9kZWFsbG9jLCAvKiB0cF9kZWFsbG9jICovCi0gICAgMCwgLyogdHBfcHJpbnQgKi8KLSAgICAwLCAvKiB0cF9nZXRhdHRyICovCi0gICAgKHNldGF0dHJmdW5jKWVsZW1lbnRfc2V0YXR0ciwgLyogdHBfc2V0YXR0ciAqLwotICAgIDAsIC8qIHRwX3Jlc2VydmVkICovCi0gICAgKHJlcHJmdW5jKWVsZW1lbnRfcmVwciwgLyogdHBfcmVwciAqLwotICAgIDAsIC8qIHRwX2FzX251bWJlciAqLwotICAgICZlbGVtZW50X2FzX3NlcXVlbmNlLCAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgICZlbGVtZW50X2FzX21hcHBpbmcsIC8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLCAvKiB0cF9oYXNoICovCi0gICAgMCwgLyogdHBfY2FsbCAqLwotICAgIDAsIC8qIHRwX3N0ciAqLwotICAgIChnZXRhdHRyb2Z1bmMpZWxlbWVudF9nZXRhdHRybywgLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLCAvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyogdHBfZmxhZ3MgKi8KLSAgICAwLCAvKiB0cF9kb2MgKi8KLSAgICAwLCAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsIC8qIHRwX2NsZWFyICovCi0gICAgMCwgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsIC8qIHRwX2l0ZXIgKi8KLSAgICAwLCAvKiB0cF9pdGVybmV4dCAqLwotICAgIGVsZW1lbnRfbWV0aG9kcywgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsIC8qIHRwX21lbWJlcnMgKi8KKyAgICAoZGVzdHJ1Y3RvcillbGVtZW50X2RlYWxsb2MsICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgKHJlcHJmdW5jKWVsZW1lbnRfcmVwciwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgICZlbGVtZW50X2FzX3NlcXVlbmNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgJmVsZW1lbnRfYXNfbWFwcGluZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgKGdldGF0dHJvZnVuYyllbGVtZW50X2dldGF0dHJvLCAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAoc2V0YXR0cm9mdW5jKWVsZW1lbnRfc2V0YXR0cm8sICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWVsZW1lbnRfZ2NfdHJhdmVyc2UsICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KWVsZW1lbnRfZ2NfY2xlYXIsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICBvZmZzZXRvZihFbGVtZW50T2JqZWN0LCB3ZWFrcmVmbGlzdCksICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGVsZW1lbnRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKWVsZW1lbnRfaW5pdCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgZWxlbWVudF9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogRWxlbWVudCBpdGVyYXRvciAqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBFbGVtZW50SXRlck9iamVjdCByZXByZXNlbnRzIHRoZSBpdGVyYXRpb24gc3RhdGUgb3ZlciBhbiBYTUwgZWxlbWVudCBpbgorICogcHJlLW9yZGVyIHRyYXZlcnNhbC4gVG8ga2VlcCB0cmFjayBvZiB3aGljaCBzdWItZWxlbWVudCBzaG91bGQgYmUgcmV0dXJuZWQKKyAqIG5leHQsIGEgc3RhY2sgb2YgcGFyZW50cyBpcyBtYWludGFpbmVkLiBUaGlzIGlzIGEgc3RhbmRhcmQgc3RhY2stYmFzZWQKKyAqIGl0ZXJhdGl2ZSBwcmUtb3JkZXIgdHJhdmVyc2FsIG9mIGEgdHJlZS4KKyAqIFRoZSBzdGFjayBpcyBtYW5hZ2VkIHVzaW5nIGEgc2luZ2xlLWxpbmtlZCBsaXN0IHN0YXJ0aW5nIGF0IHBhcmVudF9zdGFjay4KKyAqIEVhY2ggc3RhY2sgbm9kZSBjb250YWlucyB0aGUgc2F2ZWQgcGFyZW50IHRvIHdoaWNoIHdlIHNob3VsZCByZXR1cm4gYWZ0ZXIKKyAqIHRoZSBjdXJyZW50IG9uZSBpcyBleGhhdXN0ZWQsIGFuZCB0aGUgbmV4dCBjaGlsZCB0byBleGFtaW5lIGluIHRoYXQgcGFyZW50LgorICovCit0eXBlZGVmIHN0cnVjdCBQYXJlbnRMb2NhdG9yX3QgeworICAgIEVsZW1lbnRPYmplY3QgKnBhcmVudDsKKyAgICBQeV9zc2l6ZV90IGNoaWxkX2luZGV4OworICAgIHN0cnVjdCBQYXJlbnRMb2NhdG9yX3QgKm5leHQ7Cit9IFBhcmVudExvY2F0b3I7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUGFyZW50TG9jYXRvciAqcGFyZW50X3N0YWNrOworICAgIEVsZW1lbnRPYmplY3QgKnJvb3RfZWxlbWVudDsKKyAgICBQeU9iamVjdCAqc291Z2h0X3RhZzsKKyAgICBpbnQgcm9vdF9kb25lOworICAgIGludCBnZXR0ZXh0OworfSBFbGVtZW50SXRlck9iamVjdDsKKworCitzdGF0aWMgdm9pZAorZWxlbWVudGl0ZXJfZGVhbGxvYyhFbGVtZW50SXRlck9iamVjdCAqaXQpCit7CisgICAgUGFyZW50TG9jYXRvciAqcCA9IGl0LT5wYXJlbnRfc3RhY2s7CisgICAgd2hpbGUgKHApIHsKKyAgICAgICAgUGFyZW50TG9jYXRvciAqdGVtcCA9IHA7CisgICAgICAgIFB5X1hERUNSRUYocC0+cGFyZW50KTsKKyAgICAgICAgcCA9IHAtPm5leHQ7CisgICAgICAgIFB5T2JqZWN0X0ZyZWUodGVtcCk7CisgICAgfQorCisgICAgUHlfWERFQ1JFRihpdC0+c291Z2h0X3RhZyk7CisgICAgUHlfWERFQ1JFRihpdC0+cm9vdF9lbGVtZW50KTsKKworICAgIFB5T2JqZWN0X0dDX1VuVHJhY2soaXQpOworICAgIFB5T2JqZWN0X0dDX0RlbChpdCk7Cit9CisKK3N0YXRpYyBpbnQKK2VsZW1lbnRpdGVyX3RyYXZlcnNlKEVsZW1lbnRJdGVyT2JqZWN0ICppdCwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUGFyZW50TG9jYXRvciAqcCA9IGl0LT5wYXJlbnRfc3RhY2s7CisgICAgd2hpbGUgKHApIHsKKyAgICAgICAgUHlfVklTSVQocC0+cGFyZW50KTsKKyAgICAgICAgcCA9IHAtPm5leHQ7CisgICAgfQorCisgICAgUHlfVklTSVQoaXQtPnJvb3RfZWxlbWVudCk7CisgICAgUHlfVklTSVQoaXQtPnNvdWdodF90YWcpOworICAgIHJldHVybiAwOworfQorCisvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGVsZW1lbnRpdGVyX25leHQuIEFkZCBhIG5ldyBwYXJlbnQgdG8gdGhlIHBhcmVudCBzdGFjay4KKyAqLworc3RhdGljIFBhcmVudExvY2F0b3IgKgorcGFyZW50X3N0YWNrX3B1c2hfbmV3KFBhcmVudExvY2F0b3IgKnN0YWNrLCBFbGVtZW50T2JqZWN0ICpwYXJlbnQpCit7CisgICAgUGFyZW50TG9jYXRvciAqbmV3X25vZGUgPSBQeU9iamVjdF9NYWxsb2Moc2l6ZW9mKFBhcmVudExvY2F0b3IpKTsKKyAgICBpZiAobmV3X25vZGUpIHsKKyAgICAgICAgbmV3X25vZGUtPnBhcmVudCA9IHBhcmVudDsKKyAgICAgICAgUHlfSU5DUkVGKHBhcmVudCk7CisgICAgICAgIG5ld19ub2RlLT5jaGlsZF9pbmRleCA9IDA7CisgICAgICAgIG5ld19ub2RlLT5uZXh0ID0gc3RhY2s7CisgICAgfQorICAgIHJldHVybiBuZXdfbm9kZTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2VsZW1lbnRpdGVyX25leHQoRWxlbWVudEl0ZXJPYmplY3QgKml0KQoreworICAgIC8qIFN1Yi1lbGVtZW50IGl0ZXJhdG9yLgorICAgICAqCisgICAgICogQSBzaG9ydCBub3RlIG9uIGdldHRleHQ6IHRoaXMgZnVuY3Rpb24gc2VydmVzIGJvdGggdGhlIGl0ZXIoKSBhbmQKKyAgICAgKiBpdGVydGV4dCgpIG1ldGhvZHMgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi4gSG93ZXZlciwgdGhlcmUgYXJlIGEgZmV3CisgICAgICogc21hbGwgZGlmZmVyZW5jZXMgaW4gdGhlIHdheSB0aGVzZSBpdGVyYXRpb25zIHdvcmsuIE5hbWVseToKKyAgICAgKiAgIC0gaXRlcnRleHQoKSBvbmx5IHlpZWxkcyB0ZXh0IGZyb20gbm9kZXMgdGhhdCBoYXZlIGl0LCBhbmQgY29udGludWVzCisgICAgICogICAgIGl0ZXJhdGluZyB3aGVuIGEgbm9kZSBkb2Vzbid0IGhhdmUgdGV4dCAoc28gaXQgZG9lc24ndCByZXR1cm4gYW55CisgICAgICogICAgIG5vZGUgbGlrZSBpdGVyKCkpCisgICAgICogICAtIGl0ZXJ0ZXh0KCkgYWxzbyBoYXMgdG8gaGFuZGxlIHRhaWwsIGFmdGVyIGZpbmlzaGluZyB3aXRoIGFsbCB0aGUKKyAgICAgKiAgICAgY2hpbGRyZW4gb2YgYSBub2RlLgorICAgICAqLworICAgIEVsZW1lbnRPYmplY3QgKmN1cl9wYXJlbnQ7CisgICAgUHlfc3NpemVfdCBjaGlsZF9pbmRleDsKKworICAgIHdoaWxlICgxKSB7CisgICAgICAgIC8qIEhhbmRsZSB0aGUgY2FzZSByZWFjaGVkIGluIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBpdGVyYXRpb24sIHdoZXJlCisgICAgICAgICAqIHRoZSBwYXJlbnQgc3RhY2sgaXMgZW1wdHkuIFRoZSByb290X2RvbmUgZmxhZyBnaXZlcyB1cyBpbmRpY2F0aW9uCisgICAgICAgICAqIHdoZXRoZXIgd2UndmUganVzdCBzdGFydGVkIGl0ZXJhdGluZyAoc28gcm9vdF9kb25lIGlzIDApLCBpbiB3aGljaAorICAgICAgICAgKiBjYXNlIHRoZSByb290IGlzIHJldHVybmVkLiBJZiByb290X2RvbmUgaXMgMSBhbmQgd2UncmUgaGVyZSwgdGhlCisgICAgICAgICAqIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZC4KKyAgICAgICAgICovCisgICAgICAgIGlmICghaXQtPnBhcmVudF9zdGFjay0+cGFyZW50KSB7CisgICAgICAgICAgICBpZiAoaXQtPnJvb3RfZG9uZSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBwYXJlbnRfc3RhY2tfcHVzaF9uZXcoaXQtPnBhcmVudF9zdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5yb290X2VsZW1lbnQpOworICAgICAgICAgICAgICAgIGlmICghaXQtPnBhcmVudF9zdGFjaykgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpdC0+cm9vdF9kb25lID0gMTsKKyAgICAgICAgICAgICAgICBpZiAoaXQtPnNvdWdodF90YWcgPT0gUHlfTm9uZSB8fAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXQtPnJvb3RfZWxlbWVudC0+dGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPnNvdWdodF90YWcsIFB5X0VRKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdC0+Z2V0dGV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRleHQgPSBlbGVtZW50X2dldF90ZXh0KGl0LT5yb290X2VsZW1lbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0lzVHJ1ZSh0ZXh0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihpdC0+cm9vdF9lbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilpdC0+cm9vdF9lbGVtZW50OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyogU2VlIGlmIHRoZXJlIGFyZSBjaGlsZHJlbiBsZWZ0IHRvIHRyYXZlcnNlIGluIHRoZSBjdXJyZW50IHBhcmVudC4gSWYKKyAgICAgICAgICogeWVzLCB2aXNpdCB0aGUgbmV4dCBjaGlsZC4gSWYgbm90LCBwb3AgdGhlIHN0YWNrIGFuZCB0cnkgYWdhaW4uCisgICAgICAgICAqLworICAgICAgICBjdXJfcGFyZW50ID0gaXQtPnBhcmVudF9zdGFjay0+cGFyZW50OworICAgICAgICBjaGlsZF9pbmRleCA9IGl0LT5wYXJlbnRfc3RhY2stPmNoaWxkX2luZGV4OworICAgICAgICBpZiAoY3VyX3BhcmVudC0+ZXh0cmEgJiYgY2hpbGRfaW5kZXggPCBjdXJfcGFyZW50LT5leHRyYS0+bGVuZ3RoKSB7CisgICAgICAgICAgICBFbGVtZW50T2JqZWN0ICpjaGlsZCA9IChFbGVtZW50T2JqZWN0ICopCisgICAgICAgICAgICAgICAgY3VyX3BhcmVudC0+ZXh0cmEtPmNoaWxkcmVuW2NoaWxkX2luZGV4XTsKKyAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2stPmNoaWxkX2luZGV4Kys7CisgICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrID0gcGFyZW50X3N0YWNrX3B1c2hfbmV3KGl0LT5wYXJlbnRfc3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkKTsKKyAgICAgICAgICAgIGlmICghaXQtPnBhcmVudF9zdGFjaykgeworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpdC0+Z2V0dGV4dCkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0ZXh0ID0gZWxlbWVudF9nZXRfdGV4dChjaGlsZCk7CisgICAgICAgICAgICAgICAgaWYgKCF0ZXh0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSXNUcnVlKHRleHQpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChpdC0+c291Z2h0X3RhZyA9PSBQeV9Ob25lIHx8CisgICAgICAgICAgICAgICAgUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGNoaWxkLT50YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5zb3VnaHRfdGFnLCBQeV9FUSkgPT0gMSkgeworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihjaGlsZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWNoaWxkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlPYmplY3QgKnRhaWw7CisgICAgICAgICAgICBQYXJlbnRMb2NhdG9yICpuZXh0ID0gaXQtPnBhcmVudF9zdGFjay0+bmV4dDsKKyAgICAgICAgICAgIGlmIChpdC0+Z2V0dGV4dCkgeworICAgICAgICAgICAgICAgIHRhaWwgPSBlbGVtZW50X2dldF90YWlsKGN1cl9wYXJlbnQpOworICAgICAgICAgICAgICAgIGlmICghdGFpbCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGFpbCA9IFB5X05vbmU7CisgICAgICAgICAgICBQeV9YREVDUkVGKGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudCk7CisgICAgICAgICAgICBQeU9iamVjdF9GcmVlKGl0LT5wYXJlbnRfc3RhY2spOworICAgICAgICAgICAgaXQtPnBhcmVudF9zdGFjayA9IG5leHQ7CisKKyAgICAgICAgICAgIC8qIE5vdGUgdGhhdCBleHRyYSBjb25kaXRpb24gb24gaXQtPnBhcmVudF9zdGFjay0+cGFyZW50IGhlcmU7CisgICAgICAgICAgICAgKiB0aGlzIGlzIGJlY2F1c2UgaXRlcnRleHQoKSBpcyBzdXBwb3NlZCB0byBvbmx5IHJldHVybiAqaW5uZXIqCisgICAgICAgICAgICAgKiB0ZXh0LCBub3QgdGV4dCBmb2xsb3dpbmcgdGhlIGVsZW1lbnQgaXQgYmVnYW4gaXRlcmF0aW9uIHdpdGguCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQgJiYgUHlPYmplY3RfSXNUcnVlKHRhaWwpKSB7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRhaWwpOworICAgICAgICAgICAgICAgIHJldHVybiB0YWlsOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworc3RhdGljIFB5VHlwZU9iamVjdCBFbGVtZW50SXRlcl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgIC8qIFVzaW5nIHRoZSBtb2R1bGUncyBuYW1lIHNpbmNlIHRoZSBwdXJlLVB5dGhvbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdAorICAgICAgIGhhdmUgc3VjaCBhIHR5cGUuICovCisgICAgIl9lbGVtZW50dHJlZS5fZWxlbWVudF9pdGVyYXRvciIsICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKEVsZW1lbnRJdGVyT2JqZWN0KSwgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWVsZW1lbnRpdGVyX2RlYWxsb2MsICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyllbGVtZW50aXRlcl90cmF2ZXJzZSwgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIChpdGVybmV4dGZ1bmMpZWxlbWVudGl0ZXJfbmV4dCwgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2NyZWF0ZV9lbGVtZW50aXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFnLCBpbnQgZ2V0dGV4dCkKK3sKKyAgICBFbGVtZW50SXRlck9iamVjdCAqaXQ7CisgICAgUHlPYmplY3QgKnN0YXIgPSBOVUxMOworCisgICAgaXQgPSBQeU9iamVjdF9HQ19OZXcoRWxlbWVudEl0ZXJPYmplY3QsICZFbGVtZW50SXRlcl9UeXBlKTsKKyAgICBpZiAoIWl0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIShpdC0+cGFyZW50X3N0YWNrID0gUHlPYmplY3RfTWFsbG9jKHNpemVvZihQYXJlbnRMb2NhdG9yKSkpKSB7CisgICAgICAgIFB5T2JqZWN0X0dDX0RlbChpdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudCA9IE5VTEw7CisgICAgaXQtPnBhcmVudF9zdGFjay0+Y2hpbGRfaW5kZXggPSAwOworICAgIGl0LT5wYXJlbnRfc3RhY2stPm5leHQgPSBOVUxMOworCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayh0YWcpKQorICAgICAgICBzdGFyID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIioiKTsKKyAgICBlbHNlIGlmIChQeUJ5dGVzX0NoZWNrKHRhZykpCisgICAgICAgIHN0YXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmcoIioiKTsKKworICAgIGlmIChzdGFyICYmIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCh0YWcsIHN0YXIsIFB5X0VRKSA9PSAxKQorICAgICAgICB0YWcgPSBQeV9Ob25lOworCisgICAgUHlfWERFQ1JFRihzdGFyKTsKKyAgICBpdC0+c291Z2h0X3RhZyA9IHRhZzsKKyAgICBpdC0+cm9vdF9kb25lID0gMDsKKyAgICBpdC0+Z2V0dGV4dCA9IGdldHRleHQ7CisgICAgaXQtPnJvb3RfZWxlbWVudCA9IHNlbGY7CisKKyAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgUHlfSU5DUkVGKHRhZyk7CisKKyAgICBQeU9iamVjdF9HQ19UcmFjayhpdCk7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKWl0OworfQorCisKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAvKiB0aGUgdHJlZSBidWlsZGVyIHR5cGUgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKIAotICAgIFB5T2JqZWN0KiByb290OyAvKiByb290IG5vZGUgKGZpcnN0IGNyZWF0ZWQgbm9kZSkgKi8KKyAgICBQeU9iamVjdCAqcm9vdDsgLyogcm9vdCBub2RlIChmaXJzdCBjcmVhdGVkIG5vZGUpICovCiAKLSAgICBFbGVtZW50T2JqZWN0KiB0aGlzOyAvKiBjdXJyZW50IG5vZGUgKi8KLSAgICBFbGVtZW50T2JqZWN0KiBsYXN0OyAvKiBtb3N0IHJlY2VudGx5IGNyZWF0ZWQgbm9kZSAqLworICAgIFB5T2JqZWN0ICp0aGlzOyAvKiBjdXJyZW50IG5vZGUgKi8KKyAgICBQeU9iamVjdCAqbGFzdDsgLyogbW9zdCByZWNlbnRseSBjcmVhdGVkIG5vZGUgKi8KIAotICAgIFB5T2JqZWN0KiBkYXRhOyAvKiBkYXRhIGNvbGxlY3RvciAoc3RyaW5nIG9yIGxpc3QpLCBvciBOVUxMICovCisgICAgUHlPYmplY3QgKmRhdGE7IC8qIGRhdGEgY29sbGVjdG9yIChzdHJpbmcgb3IgbGlzdCksIG9yIE5VTEwgKi8KIAotICAgIFB5T2JqZWN0KiBzdGFjazsgLyogZWxlbWVudCBzdGFjayAqLwotICAgIFB5X3NzaXplX3QgaW5kZXg7IC8qIGN1cnJlbnQgc3RhY2sgc2l6ZSAoMD1lbXB0eSkgKi8KKyAgICBQeU9iamVjdCAqc3RhY2s7IC8qIGVsZW1lbnQgc3RhY2sgKi8KKyAgICBQeV9zc2l6ZV90IGluZGV4OyAvKiBjdXJyZW50IHN0YWNrIHNpemUgKDAgbWVhbnMgZW1wdHkpICovCisKKyAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5OwogCiAgICAgLyogZWxlbWVudCB0cmFjaW5nICovCi0gICAgUHlPYmplY3QqIGV2ZW50czsgLyogbGlzdCBvZiBldmVudHMsIG9yIE5VTEwgaWYgbm90IGNvbGxlY3RpbmcgKi8KLSAgICBQeU9iamVjdCogc3RhcnRfZXZlbnRfb2JqOyAvKiBldmVudCBvYmplY3RzIChOVUxMIHRvIGlnbm9yZSkgKi8KLSAgICBQeU9iamVjdCogZW5kX2V2ZW50X29iajsKLSAgICBQeU9iamVjdCogc3RhcnRfbnNfZXZlbnRfb2JqOwotICAgIFB5T2JqZWN0KiBlbmRfbnNfZXZlbnRfb2JqOwotCisgICAgUHlPYmplY3QgKmV2ZW50czsgLyogbGlzdCBvZiBldmVudHMsIG9yIE5VTEwgaWYgbm90IGNvbGxlY3RpbmcgKi8KKyAgICBQeU9iamVjdCAqc3RhcnRfZXZlbnRfb2JqOyAvKiBldmVudCBvYmplY3RzIChOVUxMIHRvIGlnbm9yZSkgKi8KKyAgICBQeU9iamVjdCAqZW5kX2V2ZW50X29iajsKKyAgICBQeU9iamVjdCAqc3RhcnRfbnNfZXZlbnRfb2JqOworICAgIFB5T2JqZWN0ICplbmRfbnNfZXZlbnRfb2JqOwogfSBUcmVlQnVpbGRlck9iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBUcmVlQnVpbGRlcl9UeXBlOwpAQCAtMTYzNyw3NiArMjIwOSwxNTggQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAvKiBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciAqLwogCi1MT0NBTChQeU9iamVjdCopCi10cmVlYnVpbGRlcl9uZXcodm9pZCkKK3N0YXRpYyBQeU9iamVjdCAqCit0cmVlYnVpbGRlcl9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgVHJlZUJ1aWxkZXJPYmplY3QqIHNlbGY7CisgICAgVHJlZUJ1aWxkZXJPYmplY3QgKnQgPSAoVHJlZUJ1aWxkZXJPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAodCAhPSBOVUxMKSB7CisgICAgICAgIHQtPnJvb3QgPSBOVUxMOwogCi0gICAgc2VsZiA9IFB5T2JqZWN0X05ldyhUcmVlQnVpbGRlck9iamVjdCwgJlRyZWVCdWlsZGVyX1R5cGUpOwotICAgIGlmIChzZWxmID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIHQtPnRoaXMgPSBQeV9Ob25lOworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIHQtPmxhc3QgPSBQeV9Ob25lOwogCi0gICAgc2VsZi0+cm9vdCA9IE5VTEw7CisgICAgICAgIHQtPmRhdGEgPSBOVUxMOworICAgICAgICB0LT5lbGVtZW50X2ZhY3RvcnkgPSBOVUxMOworICAgICAgICB0LT5zdGFjayA9IFB5TGlzdF9OZXcoMjApOworICAgICAgICBpZiAoIXQtPnN0YWNrKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodC0+dGhpcyk7CisgICAgICAgICAgICBQeV9ERUNSRUYodC0+bGFzdCk7CisgICAgICAgICAgICBQeV9ERUNSRUYoKFB5T2JqZWN0ICopIHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgdC0+aW5kZXggPSAwOwogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHNlbGYtPnRoaXMgPSAoRWxlbWVudE9iamVjdCopIFB5X05vbmU7Ci0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgc2VsZi0+bGFzdCA9IChFbGVtZW50T2JqZWN0KikgUHlfTm9uZTsKLQotICAgIHNlbGYtPmRhdGEgPSBOVUxMOwotCi0gICAgc2VsZi0+c3RhY2sgPSBQeUxpc3RfTmV3KDIwKTsKLSAgICBzZWxmLT5pbmRleCA9IDA7Ci0KLSAgICBzZWxmLT5ldmVudHMgPSBOVUxMOwotICAgIHNlbGYtPnN0YXJ0X2V2ZW50X29iaiA9IHNlbGYtPmVuZF9ldmVudF9vYmogPSBOVUxMOwotICAgIHNlbGYtPnN0YXJ0X25zX2V2ZW50X29iaiA9IHNlbGYtPmVuZF9uc19ldmVudF9vYmogPSBOVUxMOwotCi0gICAgQUxMT0Moc2l6ZW9mKFRyZWVCdWlsZGVyT2JqZWN0KSwgImNyZWF0ZSB0cmVlYnVpbGRlciIpOwotCi0gICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7CisgICAgICAgIHQtPmV2ZW50cyA9IE5VTEw7CisgICAgICAgIHQtPnN0YXJ0X2V2ZW50X29iaiA9IHQtPmVuZF9ldmVudF9vYmogPSBOVUxMOworICAgICAgICB0LT5zdGFydF9uc19ldmVudF9vYmogPSB0LT5lbmRfbnNfZXZlbnRfb2JqID0gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIChQeU9iamVjdCAqKXQ7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXRyZWVidWlsZGVyKFB5T2JqZWN0KiBzZWxmXywgUHlPYmplY3QqIGFyZ3MpCitzdGF0aWMgaW50Cit0cmVlYnVpbGRlcl9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6VHJlZUJ1aWxkZXIiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJlbGVtZW50X2ZhY3RvcnkiLCAwfTsKKyAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5ID0gTlVMTDsKKyAgICBUcmVlQnVpbGRlck9iamVjdCAqc2VsZl90YiA9IChUcmVlQnVpbGRlck9iamVjdCAqKXNlbGY7CisgICAgUHlPYmplY3QgKnRtcDsKIAotICAgIHJldHVybiB0cmVlYnVpbGRlcl9uZXcoKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE86VHJlZUJ1aWxkZXIiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVsZW1lbnRfZmFjdG9yeSkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChlbGVtZW50X2ZhY3RvcnkpIHsKKyAgICAgICAgUHlfSU5DUkVGKGVsZW1lbnRfZmFjdG9yeSk7CisgICAgICAgIHRtcCA9IHNlbGZfdGItPmVsZW1lbnRfZmFjdG9yeTsKKyAgICAgICAgc2VsZl90Yi0+ZWxlbWVudF9mYWN0b3J5ID0gZWxlbWVudF9mYWN0b3J5OworICAgICAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3RyZWVidWlsZGVyX2djX3RyYXZlcnNlKFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChzZWxmLT5yb290KTsKKyAgICBQeV9WSVNJVChzZWxmLT50aGlzKTsKKyAgICBQeV9WSVNJVChzZWxmLT5sYXN0KTsKKyAgICBQeV9WSVNJVChzZWxmLT5kYXRhKTsKKyAgICBQeV9WSVNJVChzZWxmLT5zdGFjayk7CisgICAgUHlfVklTSVQoc2VsZi0+ZWxlbWVudF9mYWN0b3J5KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAordHJlZWJ1aWxkZXJfZ2NfY2xlYXIoVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGYpCit7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZW5kX25zX2V2ZW50X29iaik7CisgICAgUHlfQ0xFQVIoc2VsZi0+c3RhcnRfbnNfZXZlbnRfb2JqKTsKKyAgICBQeV9DTEVBUihzZWxmLT5lbmRfZXZlbnRfb2JqKTsKKyAgICBQeV9DTEVBUihzZWxmLT5zdGFydF9ldmVudF9vYmopOworICAgIFB5X0NMRUFSKHNlbGYtPmV2ZW50cyk7CisgICAgUHlfQ0xFQVIoc2VsZi0+c3RhY2spOworICAgIFB5X0NMRUFSKHNlbGYtPmRhdGEpOworICAgIFB5X0NMRUFSKHNlbGYtPmxhc3QpOworICAgIFB5X0NMRUFSKHNlbGYtPnRoaXMpOworICAgIFB5X0NMRUFSKHNlbGYtPmVsZW1lbnRfZmFjdG9yeSk7CisgICAgUHlfQ0xFQVIoc2VsZi0+cm9vdCk7CisgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkCi10cmVlYnVpbGRlcl9kZWFsbG9jKFRyZWVCdWlsZGVyT2JqZWN0KiBzZWxmKQordHJlZWJ1aWxkZXJfZGVhbGxvYyhUcmVlQnVpbGRlck9iamVjdCAqc2VsZikKIHsKLSAgICBQeV9YREVDUkVGKHNlbGYtPmVuZF9uc19ldmVudF9vYmopOwotICAgIFB5X1hERUNSRUYoc2VsZi0+c3RhcnRfbnNfZXZlbnRfb2JqKTsKLSAgICBQeV9YREVDUkVGKHNlbGYtPmVuZF9ldmVudF9vYmopOwotICAgIFB5X1hERUNSRUYoc2VsZi0+c3RhcnRfZXZlbnRfb2JqKTsKLSAgICBQeV9YREVDUkVGKHNlbGYtPmV2ZW50cyk7Ci0gICAgUHlfREVDUkVGKHNlbGYtPnN0YWNrKTsKLSAgICBQeV9YREVDUkVGKHNlbGYtPmRhdGEpOwotICAgIFB5X0RFQ1JFRihzZWxmLT5sYXN0KTsKLSAgICBQeV9ERUNSRUYoc2VsZi0+dGhpcyk7Ci0gICAgUHlfWERFQ1JFRihzZWxmLT5yb290KTsKKyAgICBQeU9iamVjdF9HQ19VblRyYWNrKHNlbGYpOworICAgIHRyZWVidWlsZGVyX2djX2NsZWFyKHNlbGYpOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Cit9CiAKLSAgICBSRUxFQVNFKHNpemVvZihUcmVlQnVpbGRlck9iamVjdCksICJkZXN0cm95IHRyZWVidWlsZGVyIik7CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogaGVscGVycyBmb3IgaGFuZGxpbmcgb2YgYXJiaXRyYXJ5IGVsZW1lbnQtbGlrZSBvYmplY3RzICovCiAKLSAgICBQeU9iamVjdF9EZWwoc2VsZik7CitzdGF0aWMgaW50Cit0cmVlYnVpbGRlcl9zZXRfZWxlbWVudF90ZXh0X29yX3RhaWwoUHlPYmplY3QgKmVsZW1lbnQsIFB5T2JqZWN0ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqZGVzdCwgX1B5X0lkZW50aWZpZXIgKm5hbWUpCit7CisgICAgaWYgKEVsZW1lbnRfQ2hlY2tFeGFjdChlbGVtZW50KSkgeworICAgICAgICBQeV9ERUNSRUYoSk9JTl9PQkooKmRlc3QpKTsKKyAgICAgICAgKmRlc3QgPSBKT0lOX1NFVChkYXRhLCBQeUxpc3RfQ2hlY2tFeGFjdChkYXRhKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKmpvaW5lZCA9IGxpc3Rfam9pbihkYXRhKTsKKyAgICAgICAgaW50IHI7CisgICAgICAgIGlmIChqb2luZWQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgciA9IF9QeU9iamVjdF9TZXRBdHRySWQoZWxlbWVudCwgbmFtZSwgam9pbmVkKTsKKyAgICAgICAgUHlfREVDUkVGKGpvaW5lZCk7CisgICAgICAgIHJldHVybiByOworICAgIH0KK30KKworLyogVGhlc2UgdHdvIGZ1bmN0aW9ucyBzdGVhbCBhIHJlZmVyZW5jZSB0byBkYXRhICovCitzdGF0aWMgaW50Cit0cmVlYnVpbGRlcl9zZXRfZWxlbWVudF90ZXh0KFB5T2JqZWN0ICplbGVtZW50LCBQeU9iamVjdCAqZGF0YSkKK3sKKyAgICBfUHlfSURFTlRJRklFUih0ZXh0KTsKKyAgICByZXR1cm4gdHJlZWJ1aWxkZXJfc2V0X2VsZW1lbnRfdGV4dF9vcl90YWlsKAorICAgICAgICBlbGVtZW50LCBkYXRhLCAmKChFbGVtZW50T2JqZWN0ICopIGVsZW1lbnQpLT50ZXh0LCAmUHlJZF90ZXh0KTsKK30KKworc3RhdGljIGludAordHJlZWJ1aWxkZXJfc2V0X2VsZW1lbnRfdGFpbChQeU9iamVjdCAqZWxlbWVudCwgUHlPYmplY3QgKmRhdGEpCit7CisgICAgX1B5X0lERU5USUZJRVIodGFpbCk7CisgICAgcmV0dXJuIHRyZWVidWlsZGVyX3NldF9lbGVtZW50X3RleHRfb3JfdGFpbCgKKyAgICAgICAgZWxlbWVudCwgZGF0YSwgJigoRWxlbWVudE9iamVjdCAqKSBlbGVtZW50KS0+dGFpbCwgJlB5SWRfdGFpbCk7Cit9CisKK3N0YXRpYyBpbnQKK3RyZWVidWlsZGVyX2FkZF9zdWJlbGVtZW50KFB5T2JqZWN0ICplbGVtZW50LCBQeU9iamVjdCAqY2hpbGQpCit7CisgICAgX1B5X0lERU5USUZJRVIoYXBwZW5kKTsKKyAgICBpZiAoRWxlbWVudF9DaGVja0V4YWN0KGVsZW1lbnQpKSB7CisgICAgICAgIEVsZW1lbnRPYmplY3QgKmVsZW0gPSAoRWxlbWVudE9iamVjdCAqKSBlbGVtZW50OworICAgICAgICByZXR1cm4gZWxlbWVudF9hZGRfc3ViZWxlbWVudChlbGVtLCBjaGlsZCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqcmVzOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGVsZW1lbnQsICZQeUlkX2FwcGVuZCwgIk8iLCBjaGlsZCk7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qIGhhbmRsZXJzICovCiAKIExPQ0FMKFB5T2JqZWN0KikKLXRyZWVidWlsZGVyX2hhbmRsZV94bWwoVHJlZUJ1aWxkZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBlbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QqIHN0YW5kYWxvbmUpCi17Ci0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLUxPQ0FMKFB5T2JqZWN0KikKIHRyZWVidWlsZGVyX2hhbmRsZV9zdGFydChUcmVlQnVpbGRlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIHRhZywKICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCogYXR0cmliKQogewpAQCAtMTcxNSwyNyArMjM2OSwyOSBAQAogCiAgICAgaWYgKHNlbGYtPmRhdGEpIHsKICAgICAgICAgaWYgKHNlbGYtPnRoaXMgPT0gc2VsZi0+bGFzdCkgewotICAgICAgICAgICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPmxhc3QtPnRleHQpKTsKLSAgICAgICAgICAgIHNlbGYtPmxhc3QtPnRleHQgPSBKT0lOX1NFVCgKLSAgICAgICAgICAgICAgICBzZWxmLT5kYXRhLCBQeUxpc3RfQ2hlY2tFeGFjdChzZWxmLT5kYXRhKQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+bGFzdC0+dGFpbCkpOwotICAgICAgICAgICAgc2VsZi0+bGFzdC0+dGFpbCA9IEpPSU5fU0VUKAotICAgICAgICAgICAgICAgIHNlbGYtPmRhdGEsIFB5TGlzdF9DaGVja0V4YWN0KHNlbGYtPmRhdGEpCi0gICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGlmICh0cmVlYnVpbGRlcl9zZXRfZWxlbWVudF90ZXh0KHNlbGYtPmxhc3QsIHNlbGYtPmRhdGEpKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHRyZWVidWlsZGVyX3NldF9lbGVtZW50X3RhaWwoc2VsZi0+bGFzdCwgc2VsZi0+ZGF0YSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgc2VsZi0+ZGF0YSA9IE5VTEw7CiAgICAgfQogCi0gICAgbm9kZSA9IGVsZW1lbnRfbmV3KHRhZywgYXR0cmliKTsKLSAgICBpZiAoIW5vZGUpCisgICAgaWYgKHNlbGYtPmVsZW1lbnRfZmFjdG9yeSkgeworICAgICAgICBub2RlID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHNlbGYtPmVsZW1lbnRfZmFjdG9yeSwgIk9PIiwgdGFnLCBhdHRyaWIpOworICAgIH0gZWxzZSB7CisgICAgICAgIG5vZGUgPSBjcmVhdGVfbmV3X2VsZW1lbnQodGFnLCBhdHRyaWIpOworICAgIH0KKyAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgdGhpcyA9IChQeU9iamVjdCopIHNlbGYtPnRoaXM7CisgICAgdGhpcyA9IHNlbGYtPnRoaXM7CiAKICAgICBpZiAodGhpcyAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIGlmIChlbGVtZW50X2FkZF9zdWJlbGVtZW50KChFbGVtZW50T2JqZWN0KikgdGhpcywgbm9kZSkgPCAwKQorICAgICAgICBpZiAodHJlZWJ1aWxkZXJfYWRkX3N1YmVsZW1lbnQodGhpcywgbm9kZSkgPCAwKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoc2VsZi0+cm9vdCkgewpAQCAtMTc2MSwxOSArMjQxNywxNyBAQAogCiAgICAgUHlfREVDUkVGKHRoaXMpOwogICAgIFB5X0lOQ1JFRihub2RlKTsKLSAgICBzZWxmLT50aGlzID0gKEVsZW1lbnRPYmplY3QqKSBub2RlOworICAgIHNlbGYtPnRoaXMgPSBub2RlOwogCiAgICAgUHlfREVDUkVGKHNlbGYtPmxhc3QpOwogICAgIFB5X0lOQ1JFRihub2RlKTsKLSAgICBzZWxmLT5sYXN0ID0gKEVsZW1lbnRPYmplY3QqKSBub2RlOworICAgIHNlbGYtPmxhc3QgPSBub2RlOwogCiAgICAgaWYgKHNlbGYtPnN0YXJ0X2V2ZW50X29iaikgewogICAgICAgICBQeU9iamVjdCogcmVzOwogICAgICAgICBQeU9iamVjdCogYWN0aW9uID0gc2VsZi0+c3RhcnRfZXZlbnRfb2JqOwotICAgICAgICByZXMgPSBQeVR1cGxlX05ldygyKTsKKyAgICAgICAgcmVzID0gUHlUdXBsZV9QYWNrKDIsIGFjdGlvbiwgbm9kZSk7CiAgICAgICAgIGlmIChyZXMpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihhY3Rpb24pOyBQeVR1cGxlX1NFVF9JVEVNKHJlcywgMCwgKFB5T2JqZWN0KikgYWN0aW9uKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihub2RlKTsgICBQeVR1cGxlX1NFVF9JVEVNKHJlcywgMSwgKFB5T2JqZWN0Kikgbm9kZSk7CiAgICAgICAgICAgICBQeUxpc3RfQXBwZW5kKHNlbGYtPmV2ZW50cywgcmVzKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICB9IGVsc2UKQEAgLTE3OTEsNyArMjQ0NSw3IEBACiB0cmVlYnVpbGRlcl9oYW5kbGVfZGF0YShUcmVlQnVpbGRlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIGRhdGEpCiB7CiAgICAgaWYgKCFzZWxmLT5kYXRhKSB7Ci0gICAgICAgIGlmIChzZWxmLT5sYXN0ID09IChFbGVtZW50T2JqZWN0KikgUHlfTm9uZSkgeworICAgICAgICBpZiAoc2VsZi0+bGFzdCA9PSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAvKiBpZ25vcmUgY2FsbHMgdG8gZGF0YSBiZWZvcmUgdGhlIGZpcnN0IGNhbGwgdG8gc3RhcnQgKi8KICAgICAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgICAgICB9CkBAIC0xODAxLDYgKzI0NTUsNyBAQAogICAgICAgICAvKiBtb3JlIHRoYW4gb25lIGl0ZW07IHVzZSBhIGxpc3QgdG8gY29sbGVjdCBpdGVtcyAqLwogICAgICAgICBpZiAoUHlCeXRlc19DaGVja0V4YWN0KHNlbGYtPmRhdGEpICYmIFB5X1JFRkNOVChzZWxmLT5kYXRhKSA9PSAxICYmCiAgICAgICAgICAgICBQeUJ5dGVzX0NoZWNrRXhhY3QoZGF0YSkgJiYgUHlCeXRlc19HRVRfU0laRShkYXRhKSA9PSAxKSB7CisgICAgICAgICAgICAvKiBYWFggdGhpcyBjb2RlIHBhdGggdW51c2VkIGluIFB5dGhvbiAzPyAqLwogICAgICAgICAgICAgLyogZXhwYXQgb2Z0ZW4gZ2VuZXJhdGVzIHNpbmdsZSBjaGFyYWN0ZXIgZGF0YSBzZWN0aW9uczsgaGFuZGxlCiAgICAgICAgICAgICAgICB0aGUgbW9zdCBjb21tb24gY2FzZSBieSByZXNpemluZyB0aGUgZXhpc3Rpbmcgc3RyaW5nLi4uICovCiAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYtPmRhdGEpOwpAQCAtMTgzMCwxNSArMjQ4NSwxMSBAQAogCiAgICAgaWYgKHNlbGYtPmRhdGEpIHsKICAgICAgICAgaWYgKHNlbGYtPnRoaXMgPT0gc2VsZi0+bGFzdCkgewotICAgICAgICAgICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPmxhc3QtPnRleHQpKTsKLSAgICAgICAgICAgIHNlbGYtPmxhc3QtPnRleHQgPSBKT0lOX1NFVCgKLSAgICAgICAgICAgICAgICBzZWxmLT5kYXRhLCBQeUxpc3RfQ2hlY2tFeGFjdChzZWxmLT5kYXRhKQotICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICBpZiAodHJlZWJ1aWxkZXJfc2V0X2VsZW1lbnRfdGV4dChzZWxmLT5sYXN0LCBzZWxmLT5kYXRhKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT5sYXN0LT50YWlsKSk7Ci0gICAgICAgICAgICBzZWxmLT5sYXN0LT50YWlsID0gSk9JTl9TRVQoCi0gICAgICAgICAgICAgICAgc2VsZi0+ZGF0YSwgUHlMaXN0X0NoZWNrRXhhY3Qoc2VsZi0+ZGF0YSkKLSAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgaWYgKHRyZWVidWlsZGVyX3NldF9lbGVtZW50X3RhaWwoc2VsZi0+bGFzdCwgc2VsZi0+ZGF0YSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgc2VsZi0+ZGF0YSA9IE5VTEw7CiAgICAgfQpAQCAtMTg1OCwxNyArMjUwOSwxNSBAQAogCiAgICAgUHlfREVDUkVGKHNlbGYtPmxhc3QpOwogCi0gICAgc2VsZi0+bGFzdCA9IChFbGVtZW50T2JqZWN0Kikgc2VsZi0+dGhpczsKLSAgICBzZWxmLT50aGlzID0gKEVsZW1lbnRPYmplY3QqKSBpdGVtOworICAgIHNlbGYtPmxhc3QgPSBzZWxmLT50aGlzOworICAgIHNlbGYtPnRoaXMgPSBpdGVtOwogCiAgICAgaWYgKHNlbGYtPmVuZF9ldmVudF9vYmopIHsKICAgICAgICAgUHlPYmplY3QqIHJlczsKICAgICAgICAgUHlPYmplY3QqIGFjdGlvbiA9IHNlbGYtPmVuZF9ldmVudF9vYmo7CiAgICAgICAgIFB5T2JqZWN0KiBub2RlID0gKFB5T2JqZWN0Kikgc2VsZi0+bGFzdDsKLSAgICAgICAgcmVzID0gUHlUdXBsZV9OZXcoMik7CisgICAgICAgIHJlcyA9IFB5VHVwbGVfUGFjaygyLCBhY3Rpb24sIG5vZGUpOwogICAgICAgICBpZiAocmVzKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoYWN0aW9uKTsgUHlUdXBsZV9TRVRfSVRFTShyZXMsIDAsIChQeU9iamVjdCopIGFjdGlvbik7Ci0gICAgICAgICAgICBQeV9JTkNSRUYobm9kZSk7ICAgUHlUdXBsZV9TRVRfSVRFTShyZXMsIDEsIChQeU9iamVjdCopIG5vZGUpOwogICAgICAgICAgICAgUHlMaXN0X0FwcGVuZChzZWxmLT5ldmVudHMsIHJlcyk7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgfSBlbHNlCkBAIC0xOTE0LDggKzI1NjMsMTIgQEAKICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXMsIDEsIHBhcmNlbCk7CiAgICAgICAgIFB5TGlzdF9BcHBlbmQoc2VsZi0+ZXZlbnRzLCByZXMpOwogICAgICAgICBQeV9ERUNSRUYocmVzKTsKLSAgICB9IGVsc2UKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0RFQ1JFRihhY3Rpb24pOworICAgICAgICBQeV9ERUNSRUYocGFyY2VsKTsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsgLyogRklYTUU6IHByb3BhZ2F0ZSBlcnJvciAqLworICAgIH0KIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTE5NzcsNTUgKzI2MzAsNTQgQEAKICAgICByZXR1cm4gdHJlZWJ1aWxkZXJfaGFuZGxlX3N0YXJ0KHNlbGYsIHRhZywgYXR0cmliKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotdHJlZWJ1aWxkZXJfeG1sKFRyZWVCdWlsZGVyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBQeU9iamVjdCogZW5jb2Rpbmc7Ci0gICAgUHlPYmplY3QqIHN0YW5kYWxvbmU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzp4bWwiLCAmZW5jb2RpbmcsICZzdGFuZGFsb25lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gdHJlZWJ1aWxkZXJfaGFuZGxlX3htbChzZWxmLCBlbmNvZGluZywgc3RhbmRhbG9uZSk7Ci19Ci0KIHN0YXRpYyBQeU1ldGhvZERlZiB0cmVlYnVpbGRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJkYXRhIiwgKFB5Q0Z1bmN0aW9uKSB0cmVlYnVpbGRlcl9kYXRhLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsic3RhcnQiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyX3N0YXJ0LCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZW5kIiwgKFB5Q0Z1bmN0aW9uKSB0cmVlYnVpbGRlcl9lbmQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ4bWwiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyX3htbCwgTUVUSF9WQVJBUkdTfSwKICAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKSB0cmVlYnVpbGRlcl9jbG9zZSwgTUVUSF9WQVJBUkdTfSwKICAgICB7TlVMTCwgTlVMTH0KIH07CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgVHJlZUJ1aWxkZXJfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiVHJlZUJ1aWxkZXIiLCBzaXplb2YoVHJlZUJ1aWxkZXJPYmplY3QpLCAwLAorICAgICJ4bWwuZXRyZWUuRWxlbWVudFRyZWUuVHJlZUJ1aWxkZXIiLCBzaXplb2YoVHJlZUJ1aWxkZXJPYmplY3QpLCAwLAogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3Rvcil0cmVlYnVpbGRlcl9kZWFsbG9jLCAvKiB0cF9kZWFsbG9jICovCi0gICAgMCwgLyogdHBfcHJpbnQgKi8KLSAgICAwLCAvKiB0cF9nZXRhdHRyICovCi0gICAgMCwgLyogdHBfc2V0YXR0ciAqLwotICAgIDAsIC8qIHRwX3Jlc2VydmVkICovCi0gICAgMCwgLyogdHBfcmVwciAqLwotICAgIDAsIC8qIHRwX2FzX251bWJlciAqLwotICAgIDAsIC8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgMCwgLyogdHBfYXNfbWFwcGluZyAqLwotICAgIDAsIC8qIHRwX2hhc2ggKi8KLSAgICAwLCAvKiB0cF9jYWxsICovCi0gICAgMCwgLyogdHBfc3RyICovCi0gICAgMCwgLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLCAvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyogdHBfZmxhZ3MgKi8KLSAgICAwLCAvKiB0cF9kb2MgKi8KLSAgICAwLCAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsIC8qIHRwX2NsZWFyICovCi0gICAgMCwgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsIC8qIHRwX2l0ZXIgKi8KLSAgICAwLCAvKiB0cF9pdGVybmV4dCAqLwotICAgIHRyZWVidWlsZGVyX21ldGhvZHMsIC8qIHRwX21ldGhvZHMgKi8KLSAgICAwLCAvKiB0cF9tZW1iZXJzICovCisgICAgKGRlc3RydWN0b3IpdHJlZWJ1aWxkZXJfZGVhbGxvYywgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyl0cmVlYnVpbGRlcl9nY190cmF2ZXJzZSwgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSl0cmVlYnVpbGRlcl9nY19jbGVhciwgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICB0cmVlYnVpbGRlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYyl0cmVlYnVpbGRlcl9pbml0LCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIHRyZWVidWlsZGVyX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCkBAIC0yMDM0LDQwICsyNjg2LDM5IEBACiAjaWYgZGVmaW5lZChVU0VfRVhQQVQpCiAKICNpbmNsdWRlICJleHBhdC5oIgotCi0jaWYgZGVmaW5lZChVU0VfUFlFWFBBVF9DQVBJKQogI2luY2x1ZGUgInB5ZXhwYXQuaCIKLXN0YXRpYyBzdHJ1Y3QgUHlFeHBhdF9DQVBJKiBleHBhdF9jYXBpOworc3RhdGljIHN0cnVjdCBQeUV4cGF0X0NBUEkgKmV4cGF0X2NhcGk7CiAjZGVmaW5lIEVYUEFUKGZ1bmMpIChleHBhdF9jYXBpLT5mdW5jKQotI2Vsc2UKLSNkZWZpbmUgRVhQQVQoZnVuYykgKFhNTF8jI2Z1bmMpCi0jZW5kaWYKKworc3RhdGljIFhNTF9NZW1vcnlfSGFuZGxpbmdfU3VpdGUgRXhwYXRNZW1vcnlIYW5kbGVyID0geworICAgIFB5T2JqZWN0X01hbGxvYywgUHlPYmplY3RfUmVhbGxvYywgUHlPYmplY3RfRnJlZX07CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAKICAgICBYTUxfUGFyc2VyIHBhcnNlcjsKIAotICAgIFB5T2JqZWN0KiB0YXJnZXQ7Ci0gICAgUHlPYmplY3QqIGVudGl0eTsKKyAgICBQeU9iamVjdCAqdGFyZ2V0OworICAgIFB5T2JqZWN0ICplbnRpdHk7CiAKLSAgICBQeU9iamVjdCogbmFtZXM7CisgICAgUHlPYmplY3QgKm5hbWVzOwogCi0gICAgUHlPYmplY3QqIGhhbmRsZV94bWw7CisgICAgUHlPYmplY3QgKmhhbmRsZV9zdGFydDsKKyAgICBQeU9iamVjdCAqaGFuZGxlX2RhdGE7CisgICAgUHlPYmplY3QgKmhhbmRsZV9lbmQ7CiAKLSAgICBQeU9iamVjdCogaGFuZGxlX3N0YXJ0OwotICAgIFB5T2JqZWN0KiBoYW5kbGVfZGF0YTsKLSAgICBQeU9iamVjdCogaGFuZGxlX2VuZDsKKyAgICBQeU9iamVjdCAqaGFuZGxlX2NvbW1lbnQ7CisgICAgUHlPYmplY3QgKmhhbmRsZV9waTsKKyAgICBQeU9iamVjdCAqaGFuZGxlX2RvY3R5cGU7CiAKLSAgICBQeU9iamVjdCogaGFuZGxlX2NvbW1lbnQ7Ci0gICAgUHlPYmplY3QqIGhhbmRsZV9waTsKLQotICAgIFB5T2JqZWN0KiBoYW5kbGVfY2xvc2U7CisgICAgUHlPYmplY3QgKmhhbmRsZV9jbG9zZTsKIAogfSBYTUxQYXJzZXJPYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgWE1MUGFyc2VyX1R5cGU7CiAKKyNkZWZpbmUgWE1MUGFyc2VyX0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmWE1MUGFyc2VyX1R5cGUpCisKIC8qIGhlbHBlcnMgKi8KIAogTE9DQUwoUHlPYmplY3QqKQpAQCAtMjA3Niw3ICsyNzI3LDcgQEAKICAgICAvKiBjb252ZXJ0IGEgVVRGLTggdGFnL2F0dHJpYnV0ZSBuYW1lIGZyb20gdGhlIGV4cGF0IHBhcnNlcgogICAgICAgIHRvIGEgdW5pdmVyc2FsIG5hbWUgc3RyaW5nICovCiAKLSAgICBpbnQgc2l6ZSA9IHN0cmxlbihzdHJpbmcpOworICAgIFB5X3NzaXplX3Qgc2l6ZSA9IChQeV9zc2l6ZV90KSBzdHJsZW4oc3RyaW5nKTsKICAgICBQeU9iamVjdCoga2V5OwogICAgIFB5T2JqZWN0KiB2YWx1ZTsKIApAQCAtMjA5NSw3ICsyNzQ2LDcgQEAKIAogICAgICAgICBQeU9iamVjdCogdGFnOwogICAgICAgICBjaGFyKiBwOwotICAgICAgICBpbnQgaTsKKyAgICAgICAgUHlfc3NpemVfdCBpOwogCiAgICAgICAgIC8qIGxvb2sgZm9yIG5hbWVzcGFjZSBzZXBhcmF0b3IgKi8KICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykKQEAgLTIxMTMsNyArMjc2NCw3IEBACiAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICAgICAgICAgIHRhZyA9IGtleTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICAvKiBkZWNvZGUgdW5pdmVyc2FsIG5hbWUgKi8KICAgICAgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHRhZyk7CiAgICAgICAgIHZhbHVlID0gUHlVbmljb2RlX0RlY29kZVVURjgocCwgc2l6ZSwgInN0cmljdCIpOwpAQCAtMjEzNSwyMCArMjc4NiwzOSBAQAogICAgIHJldHVybiB2YWx1ZTsKIH0KIAorLyogU2V0IHRoZSBQYXJzZUVycm9yIGV4Y2VwdGlvbiB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLgorICogSWYgbWVzc2FnZSBpcyBub3QgTlVMTCwgaXQncyB1c2VkIGFzIHRoZSBlcnJvciBzdHJpbmcuIE90aGVyd2lzZSwgdGhlCisgKiBtZXNzYWdlIHN0cmluZyBpcyB0aGUgZGVmYXVsdCBmb3IgdGhlIGdpdmVuIGVycm9yX2NvZGUuCisqLwogc3RhdGljIHZvaWQKLWV4cGF0X3NldF9lcnJvcihjb25zdCBjaGFyKiBtZXNzYWdlLCBpbnQgbGluZSwgaW50IGNvbHVtbikKK2V4cGF0X3NldF9lcnJvcihlbnVtIFhNTF9FcnJvciBlcnJvcl9jb2RlLCBpbnQgbGluZSwgaW50IGNvbHVtbiwgY2hhciAqbWVzc2FnZSkKIHsKLSAgICBQeU9iamVjdCAqZXJyb3I7Ci0gICAgUHlPYmplY3QgKnBvc2l0aW9uOwotICAgIGNoYXIgYnVmZmVyWzI1Nl07CisgICAgUHlPYmplY3QgKmVycm1zZywgKmVycm9yLCAqcG9zaXRpb24sICpjb2RlOwogCi0gICAgc3ByaW50ZihidWZmZXIsICIlLjEwMHM6IGxpbmUgJWQsIGNvbHVtbiAlZCIsIG1lc3NhZ2UsIGxpbmUsIGNvbHVtbik7CisgICAgZXJybXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzOiBsaW5lICVkLCBjb2x1bW4gJWQiLAorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPyBtZXNzYWdlIDogRVhQQVQoRXJyb3JTdHJpbmcpKGVycm9yX2NvZGUpLAorICAgICAgICAgICAgICAgIGxpbmUsIGNvbHVtbik7CisgICAgaWYgKGVycm1zZyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CiAKLSAgICBlcnJvciA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihlbGVtZW50dHJlZV9wYXJzZWVycm9yX29iaiwgInMiLCBidWZmZXIpOworICAgIGVycm9yID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGVsZW1lbnR0cmVlX3BhcnNlZXJyb3Jfb2JqLCAiTyIsIGVycm1zZyk7CisgICAgUHlfREVDUkVGKGVycm1zZyk7CiAgICAgaWYgKCFlcnJvcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgLyogYWRkIHBvc2l0aW9uIGF0dHJpYnV0ZSAqLworICAgIC8qIEFkZCBjb2RlIGFuZCBwb3NpdGlvbiBhdHRyaWJ1dGVzICovCisgICAgY29kZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZyllcnJvcl9jb2RlKTsKKyAgICBpZiAoIWNvZGUpIHsKKyAgICAgICAgUHlfREVDUkVGKGVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhlcnJvciwgImNvZGUiLCBjb2RlKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYoZXJyb3IpOworICAgICAgICBQeV9ERUNSRUYoY29kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUHlfREVDUkVGKGNvZGUpOworCiAgICAgcG9zaXRpb24gPSBQeV9CdWlsZFZhbHVlKCIoaWkpIiwgbGluZSwgY29sdW1uKTsKICAgICBpZiAoIXBvc2l0aW9uKSB7CiAgICAgICAgIFB5X0RFQ1JFRihlcnJvcik7CkBAIC0yMjAwLDkgKzI4NzAsMTAgQEAKICAgICAgICAgY2hhciBtZXNzYWdlWzEyOF0gPSAidW5kZWZpbmVkIGVudGl0eSAiOwogICAgICAgICBzdHJuY2F0KG1lc3NhZ2UsIGRhdGFfaW4sIGRhdGFfbGVuIDwgMTAwP2RhdGFfbGVuOjEwMCk7CiAgICAgICAgIGV4cGF0X3NldF9lcnJvcigKLSAgICAgICAgICAgIG1lc3NhZ2UsCisgICAgICAgICAgICBYTUxfRVJST1JfVU5ERUZJTkVEX0VOVElUWSwKICAgICAgICAgICAgIEVYUEFUKEdldEVycm9yTGluZU51bWJlcikoc2VsZi0+cGFyc2VyKSwKLSAgICAgICAgICAgIEVYUEFUKEdldEVycm9yQ29sdW1uTnVtYmVyKShzZWxmLT5wYXJzZXIpCisgICAgICAgICAgICBFWFBBVChHZXRFcnJvckNvbHVtbk51bWJlcikoc2VsZi0+cGFyc2VyKSwKKyAgICAgICAgICAgIG1lc3NhZ2UKICAgICAgICAgICAgICk7CiAgICAgfQogCkBAIC0yMjQ3LDIxICsyOTE4LDE4IEBACiAgICAgICAgICAgICBhdHRyaWJfaW4gKz0gMjsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgYXR0cmliID0gUHlfTm9uZTsKKyAgICAgICAgLyogUGFzcyBhbiBlbXB0eSBkaWN0aW9uYXJ5IG9uICovCisgICAgICAgIGF0dHJpYiA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgaWYgKCFhdHRyaWIpCisgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKFRyZWVCdWlsZGVyX0NoZWNrRXhhY3Qoc2VsZi0+dGFyZ2V0KSkKKyAgICBpZiAoVHJlZUJ1aWxkZXJfQ2hlY2tFeGFjdChzZWxmLT50YXJnZXQpKSB7CiAgICAgICAgIC8qIHNob3J0Y3V0ICovCiAgICAgICAgIHJlcyA9IHRyZWVidWlsZGVyX2hhbmRsZV9zdGFydCgoVHJlZUJ1aWxkZXJPYmplY3QqKSBzZWxmLT50YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcsIGF0dHJpYik7CisgICAgfQogICAgIGVsc2UgaWYgKHNlbGYtPmhhbmRsZV9zdGFydCkgewotICAgICAgICBpZiAoYXR0cmliID09IFB5X05vbmUpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyaWIpOwotICAgICAgICAgICAgYXR0cmliID0gUHlEaWN0X05ldygpOwotICAgICAgICAgICAgaWYgKCFhdHRyaWIpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5oYW5kbGVfc3RhcnQsICJPTyIsIHRhZywgYXR0cmliKTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzID0gTlVMTDsKQEAgLTIzNzIsNiArMzA0MCw3OCBAQAogfQogCiBzdGF0aWMgdm9pZAorZXhwYXRfc3RhcnRfZG9jdHlwZV9oYW5kbGVyKFhNTFBhcnNlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBYTUxfQ2hhciAqZG9jdHlwZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFhNTF9DaGFyICpzeXNpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBYTUxfQ2hhciAqcHViaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhhc19pbnRlcm5hbF9zdWJzZXQpCit7CisgICAgUHlPYmplY3QgKnNlbGZfcHlvYmogPSAoUHlPYmplY3QgKilzZWxmOworICAgIFB5T2JqZWN0ICpkb2N0eXBlX25hbWVfb2JqLCAqc3lzaWRfb2JqLCAqcHViaWRfb2JqOworICAgIFB5T2JqZWN0ICpwYXJzZXJfZG9jdHlwZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CisKKyAgICBkb2N0eXBlX25hbWVfb2JqID0gbWFrZXVuaXZlcnNhbChzZWxmLCBkb2N0eXBlX25hbWUpOworICAgIGlmICghZG9jdHlwZV9uYW1lX29iaikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHN5c2lkKSB7CisgICAgICAgIHN5c2lkX29iaiA9IG1ha2V1bml2ZXJzYWwoc2VsZiwgc3lzaWQpOworICAgICAgICBpZiAoIXN5c2lkX29iaikgeworICAgICAgICAgICAgUHlfREVDUkVGKGRvY3R5cGVfbmFtZV9vYmopOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICBzeXNpZF9vYmogPSBQeV9Ob25lOworICAgIH0KKworICAgIGlmIChwdWJpZCkgeworICAgICAgICBwdWJpZF9vYmogPSBtYWtldW5pdmVyc2FsKHNlbGYsIHB1YmlkKTsKKyAgICAgICAgaWYgKCFwdWJpZF9vYmopIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihkb2N0eXBlX25hbWVfb2JqKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzeXNpZF9vYmopOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICBwdWJpZF9vYmogPSBQeV9Ob25lOworICAgIH0KKworICAgIC8qIElmIHRoZSB0YXJnZXQgaGFzIGEgaGFuZGxlciBmb3IgZG9jdHlwZSwgY2FsbCBpdC4gKi8KKyAgICBpZiAoc2VsZi0+aGFuZGxlX2RvY3R5cGUpIHsKKyAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHNlbGYtPmhhbmRsZV9kb2N0eXBlLCAiT09PIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3R5cGVfbmFtZV9vYmosIHB1YmlkX29iaiwgc3lzaWRfb2JqKTsKKyAgICAgICAgUHlfQ0xFQVIocmVzKTsKKyAgICB9CisKKyAgICAvKiBOb3cgc2VlIGlmIHRoZSBwYXJzZXIgaXRzZWxmIGhhcyBhIGRvY3R5cGUgbWV0aG9kLiBJZiB5ZXMgYW5kIGl0J3MKKyAgICAgKiBhIHN1YmNsYXNzLCBjYWxsIGl0IGJ1dCB3YXJuIGFib3V0IGRlcHJlY2F0aW9uLiBJZiBpdCdzIG5vdCBhIHN1YmNsYXNzCisgICAgICogKGkuZS4gdmFuaWxsYSBYTUxQYXJzZXIpLCBkbyBub3RoaW5nLgorICAgICAqLworICAgIHBhcnNlcl9kb2N0eXBlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzZWxmX3B5b2JqLCAiZG9jdHlwZSIpOworICAgIGlmIChwYXJzZXJfZG9jdHlwZSkgeworICAgICAgICBpZiAoIVhNTFBhcnNlcl9DaGVja0V4YWN0KHNlbGZfcHlvYmopKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBtZXRob2Qgb2YgWE1MUGFyc2VyIGlzIGRlcHJlY2F0ZWQuICBEZWZpbmUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBkb2N0eXBlKCkgbWV0aG9kIG9uIHRoZSBUcmVlQnVpbGRlciB0YXJnZXQuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSA8IDApIHsKKyAgICAgICAgICAgICAgICBnb3RvIGNsZWFyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHBhcnNlcl9kb2N0eXBlLCAiT09PIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N0eXBlX25hbWVfb2JqLCBwdWJpZF9vYmosIHN5c2lkX29iaik7CisgICAgICAgICAgICBQeV9DTEVBUihyZXMpOworICAgICAgICB9CisgICAgfQorCitjbGVhcjoKKyAgICBQeV9YREVDUkVGKHBhcnNlcl9kb2N0eXBlKTsKKyAgICBQeV9ERUNSRUYoZG9jdHlwZV9uYW1lX29iaik7CisgICAgUHlfREVDUkVGKHB1YmlkX29iaik7CisgICAgUHlfREVDUkVGKHN5c2lkX29iaik7Cit9CisKK3N0YXRpYyB2b2lkCiBleHBhdF9waV9oYW5kbGVyKFhNTFBhcnNlck9iamVjdCogc2VsZiwgY29uc3QgWE1MX0NoYXIqIHRhcmdldF9pbiwKICAgICAgICAgICAgICAgICAgY29uc3QgWE1MX0NoYXIqIGRhdGFfaW4pCiB7CkBAIC0yMzk5LDI5ICszMTM5LDMzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX0VuY29kaW5nICppbmZvKQogewogICAgIFB5T2JqZWN0KiB1OwotICAgIFB5X1VOSUNPREUqIHA7CiAgICAgdW5zaWduZWQgY2hhciBzWzI1Nl07CiAgICAgaW50IGk7CisgICAgdm9pZCAqZGF0YTsKKyAgICB1bnNpZ25lZCBpbnQga2luZDsKIAogICAgIG1lbXNldChpbmZvLCAwLCBzaXplb2YoWE1MX0VuY29kaW5nKSk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspCiAgICAgICAgIHNbaV0gPSBpOwotICAgIAorCiAgICAgdSA9IFB5VW5pY29kZV9EZWNvZGUoKGNoYXIqKSBzLCAyNTYsIG5hbWUsICJyZXBsYWNlIik7CiAgICAgaWYgKCF1KQogICAgICAgICByZXR1cm4gWE1MX1NUQVRVU19FUlJPUjsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHUpKQorICAgICAgICByZXR1cm4gWE1MX1NUQVRVU19FUlJPUjsKIAotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUodSkgIT0gMjU2KSB7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHUpICE9IDI1NikgewogICAgICAgICBQeV9ERUNSRUYodSk7CiAgICAgICAgIHJldHVybiBYTUxfU1RBVFVTX0VSUk9SOwogICAgIH0KIAotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1KTsKLQorICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1KTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodSk7CiAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7Ci0gICAgICAgIGlmIChwW2ldICE9IFB5X1VOSUNPREVfUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKQotICAgICAgICAgICAgaW5mby0+bWFwW2ldID0gcFtpXTsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBpZiAoY2ggIT0gUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVIpCisgICAgICAgICAgICBpbmZvLT5tYXBbaV0gPSBjaDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaW5mby0+bWFwW2ldID0gLTE7CiAgICAgfQpAQCAtMjQzMiwxNDUgKzMxNzYsMTU3IEBACiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciAqLwogCi1zdGF0aWMgUHlPYmplY3QqCi14bWxwYXJzZXIoUHlPYmplY3QqIHNlbGZfLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQorc3RhdGljIFB5T2JqZWN0ICoKK3htbHBhcnNlcl9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgWE1MUGFyc2VyT2JqZWN0KiBzZWxmOwotICAgIC8qIEZJWE1FOiBkb2VzIHRoaXMgbmVlZCB0byBiZSBzdGF0aWM/ICovCi0gICAgc3RhdGljIFhNTF9NZW1vcnlfSGFuZGxpbmdfU3VpdGUgbWVtb3J5X2hhbmRsZXI7Ci0KLSAgICBQeU9iamVjdCogdGFyZ2V0ID0gTlVMTDsKLSAgICBjaGFyKiBlbmNvZGluZyA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIqIGt3bGlzdFtdID0geyAidGFyZ2V0IiwgImVuY29kaW5nIiwgTlVMTCB9OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifE96OlhNTFBhcnNlciIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFyZ2V0LCAmZW5jb2RpbmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotI2lmIGRlZmluZWQoVVNFX1BZRVhQQVRfQ0FQSSkKLSAgICBpZiAoIWV4cGF0X2NhcGkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgUHlFeGNfUnVudGltZUVycm9yLCAiY2Fubm90IGxvYWQgZGlzcGF0Y2ggdGFibGUgZnJvbSBweWV4cGF0IgotICAgICAgICAgICAgKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgWE1MUGFyc2VyT2JqZWN0ICpzZWxmID0gKFhNTFBhcnNlck9iamVjdCAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOworICAgIGlmIChzZWxmKSB7CisgICAgICAgIHNlbGYtPnBhcnNlciA9IE5VTEw7CisgICAgICAgIHNlbGYtPnRhcmdldCA9IHNlbGYtPmVudGl0eSA9IHNlbGYtPm5hbWVzID0gTlVMTDsKKyAgICAgICAgc2VsZi0+aGFuZGxlX3N0YXJ0ID0gc2VsZi0+aGFuZGxlX2RhdGEgPSBzZWxmLT5oYW5kbGVfZW5kID0gTlVMTDsKKyAgICAgICAgc2VsZi0+aGFuZGxlX2NvbW1lbnQgPSBzZWxmLT5oYW5kbGVfcGkgPSBzZWxmLT5oYW5kbGVfY2xvc2UgPSBOVUxMOworICAgICAgICBzZWxmLT5oYW5kbGVfZG9jdHlwZSA9IE5VTEw7CiAgICAgfQotI2VuZGlmCisgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7Cit9CiAKLSAgICBzZWxmID0gUHlPYmplY3RfTmV3KFhNTFBhcnNlck9iamVjdCwgJlhNTFBhcnNlcl9UeXBlKTsKLSAgICBpZiAoc2VsZiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBpbnQKK3htbHBhcnNlcl9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgWE1MUGFyc2VyT2JqZWN0ICpzZWxmX3hwID0gKFhNTFBhcnNlck9iamVjdCAqKXNlbGY7CisgICAgUHlPYmplY3QgKnRhcmdldCA9IE5VTEwsICpodG1sID0gTlVMTDsKKyAgICBjaGFyICplbmNvZGluZyA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJodG1sIiwgInRhcmdldCIsICJlbmNvZGluZyIsIDB9OwogCi0gICAgc2VsZi0+ZW50aXR5ID0gUHlEaWN0X05ldygpOwotICAgIGlmICghc2VsZi0+ZW50aXR5KSB7Ci0gICAgICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgICAKLSAgICBzZWxmLT5uYW1lcyA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoIXNlbGYtPm5hbWVzKSB7Ci0gICAgICAgIFB5T2JqZWN0X0RlbChzZWxmLT5lbnRpdHkpOwotICAgICAgICBQeU9iamVjdF9EZWwoc2VsZik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T096OlhNTFBhcnNlciIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaHRtbCwgJnRhcmdldCwgJmVuY29kaW5nKSkgeworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgbWVtb3J5X2hhbmRsZXIubWFsbG9jX2ZjbiA9IFB5T2JqZWN0X01hbGxvYzsKLSAgICBtZW1vcnlfaGFuZGxlci5yZWFsbG9jX2ZjbiA9IFB5T2JqZWN0X1JlYWxsb2M7Ci0gICAgbWVtb3J5X2hhbmRsZXIuZnJlZV9mY24gPSBQeU9iamVjdF9GcmVlOworICAgIHNlbGZfeHAtPmVudGl0eSA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoIXNlbGZfeHAtPmVudGl0eSkKKyAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgc2VsZi0+cGFyc2VyID0gRVhQQVQoUGFyc2VyQ3JlYXRlX01NKShlbmNvZGluZywgJm1lbW9yeV9oYW5kbGVyLCAifSIpOwotICAgIGlmICghc2VsZi0+cGFyc2VyKSB7Ci0gICAgICAgIFB5T2JqZWN0X0RlbChzZWxmLT5uYW1lcyk7Ci0gICAgICAgIFB5T2JqZWN0X0RlbChzZWxmLT5lbnRpdHkpOwotICAgICAgICBQeU9iamVjdF9EZWwoc2VsZik7CisgICAgc2VsZl94cC0+bmFtZXMgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKCFzZWxmX3hwLT5uYW1lcykgeworICAgICAgICBQeV9DTEVBUihzZWxmX3hwLT5lbnRpdHkpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgc2VsZl94cC0+cGFyc2VyID0gRVhQQVQoUGFyc2VyQ3JlYXRlX01NKShlbmNvZGluZywgJkV4cGF0TWVtb3J5SGFuZGxlciwgIn0iKTsKKyAgICBpZiAoIXNlbGZfeHAtPnBhcnNlcikgeworICAgICAgICBQeV9DTEVBUihzZWxmX3hwLT5lbnRpdHkpOworICAgICAgICBQeV9DTEVBUihzZWxmX3hwLT5uYW1lcyk7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgLyogc2V0dXAgdGFyZ2V0IGhhbmRsZXJzICovCi0gICAgaWYgKCF0YXJnZXQpIHsKLSAgICAgICAgdGFyZ2V0ID0gdHJlZWJ1aWxkZXJfbmV3KCk7Ci0gICAgICAgIGlmICghdGFyZ2V0KSB7Ci0gICAgICAgICAgICBFWFBBVChQYXJzZXJGcmVlKShzZWxmLT5wYXJzZXIpOwotICAgICAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYtPm5hbWVzKTsKLSAgICAgICAgICAgIFB5T2JqZWN0X0RlbChzZWxmLT5lbnRpdHkpOwotICAgICAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKKyAgICBpZiAodGFyZ2V0KSB7CiAgICAgICAgIFB5X0lOQ1JFRih0YXJnZXQpOwotICAgIHNlbGYtPnRhcmdldCA9IHRhcmdldDsKKyAgICB9IGVsc2UgeworICAgICAgICB0YXJnZXQgPSB0cmVlYnVpbGRlcl9uZXcoJlRyZWVCdWlsZGVyX1R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXRhcmdldCkgeworICAgICAgICAgICAgUHlfQ0xFQVIoc2VsZl94cC0+ZW50aXR5KTsKKyAgICAgICAgICAgIFB5X0NMRUFSKHNlbGZfeHAtPm5hbWVzKTsKKyAgICAgICAgICAgIEVYUEFUKFBhcnNlckZyZWUpKHNlbGZfeHAtPnBhcnNlcik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisgICAgc2VsZl94cC0+dGFyZ2V0ID0gdGFyZ2V0OwogCi0gICAgc2VsZi0+aGFuZGxlX3htbCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAieG1sIik7Ci0gICAgc2VsZi0+aGFuZGxlX3N0YXJ0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJzdGFydCIpOwotICAgIHNlbGYtPmhhbmRsZV9kYXRhID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJkYXRhIik7Ci0gICAgc2VsZi0+aGFuZGxlX2VuZCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiZW5kIik7Ci0gICAgc2VsZi0+aGFuZGxlX2NvbW1lbnQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImNvbW1lbnQiKTsKLSAgICBzZWxmLT5oYW5kbGVfcGkgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgInBpIik7Ci0gICAgc2VsZi0+aGFuZGxlX2Nsb3NlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJjbG9zZSIpOworICAgIHNlbGZfeHAtPmhhbmRsZV9zdGFydCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAic3RhcnQiKTsKKyAgICBzZWxmX3hwLT5oYW5kbGVfZGF0YSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiZGF0YSIpOworICAgIHNlbGZfeHAtPmhhbmRsZV9lbmQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImVuZCIpOworICAgIHNlbGZfeHAtPmhhbmRsZV9jb21tZW50ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJjb21tZW50Iik7CisgICAgc2VsZl94cC0+aGFuZGxlX3BpID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJwaSIpOworICAgIHNlbGZfeHAtPmhhbmRsZV9jbG9zZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiY2xvc2UiKTsKKyAgICBzZWxmX3hwLT5oYW5kbGVfZG9jdHlwZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiZG9jdHlwZSIpOwogCiAgICAgUHlFcnJfQ2xlYXIoKTsKIAogICAgIC8qIGNvbmZpZ3VyZSBwYXJzZXIgKi8KLSAgICBFWFBBVChTZXRVc2VyRGF0YSkoc2VsZi0+cGFyc2VyLCBzZWxmKTsKKyAgICBFWFBBVChTZXRVc2VyRGF0YSkoc2VsZl94cC0+cGFyc2VyLCBzZWxmX3hwKTsKICAgICBFWFBBVChTZXRFbGVtZW50SGFuZGxlcikoCi0gICAgICAgIHNlbGYtPnBhcnNlciwKKyAgICAgICAgc2VsZl94cC0+cGFyc2VyLAogICAgICAgICAoWE1MX1N0YXJ0RWxlbWVudEhhbmRsZXIpIGV4cGF0X3N0YXJ0X2hhbmRsZXIsCiAgICAgICAgIChYTUxfRW5kRWxlbWVudEhhbmRsZXIpIGV4cGF0X2VuZF9oYW5kbGVyCiAgICAgICAgICk7CiAgICAgRVhQQVQoU2V0RGVmYXVsdEhhbmRsZXJFeHBhbmQpKAotICAgICAgICBzZWxmLT5wYXJzZXIsCisgICAgICAgIHNlbGZfeHAtPnBhcnNlciwKICAgICAgICAgKFhNTF9EZWZhdWx0SGFuZGxlcikgZXhwYXRfZGVmYXVsdF9oYW5kbGVyCiAgICAgICAgICk7CiAgICAgRVhQQVQoU2V0Q2hhcmFjdGVyRGF0YUhhbmRsZXIpKAotICAgICAgICBzZWxmLT5wYXJzZXIsCisgICAgICAgIHNlbGZfeHAtPnBhcnNlciwKICAgICAgICAgKFhNTF9DaGFyYWN0ZXJEYXRhSGFuZGxlcikgZXhwYXRfZGF0YV9oYW5kbGVyCiAgICAgICAgICk7Ci0gICAgaWYgKHNlbGYtPmhhbmRsZV9jb21tZW50KQorICAgIGlmIChzZWxmX3hwLT5oYW5kbGVfY29tbWVudCkKICAgICAgICAgRVhQQVQoU2V0Q29tbWVudEhhbmRsZXIpKAotICAgICAgICAgICAgc2VsZi0+cGFyc2VyLAorICAgICAgICAgICAgc2VsZl94cC0+cGFyc2VyLAogICAgICAgICAgICAgKFhNTF9Db21tZW50SGFuZGxlcikgZXhwYXRfY29tbWVudF9oYW5kbGVyCiAgICAgICAgICAgICApOwotICAgIGlmIChzZWxmLT5oYW5kbGVfcGkpCisgICAgaWYgKHNlbGZfeHAtPmhhbmRsZV9waSkKICAgICAgICAgRVhQQVQoU2V0UHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlcikoCi0gICAgICAgICAgICBzZWxmLT5wYXJzZXIsCisgICAgICAgICAgICBzZWxmX3hwLT5wYXJzZXIsCiAgICAgICAgICAgICAoWE1MX1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIpIGV4cGF0X3BpX2hhbmRsZXIKICAgICAgICAgICAgICk7CisgICAgRVhQQVQoU2V0U3RhcnREb2N0eXBlRGVjbEhhbmRsZXIpKAorICAgICAgICBzZWxmX3hwLT5wYXJzZXIsCisgICAgICAgIChYTUxfU3RhcnREb2N0eXBlRGVjbEhhbmRsZXIpIGV4cGF0X3N0YXJ0X2RvY3R5cGVfaGFuZGxlcgorICAgICAgICApOwogICAgIEVYUEFUKFNldFVua25vd25FbmNvZGluZ0hhbmRsZXIpKAotICAgICAgICBzZWxmLT5wYXJzZXIsCisgICAgICAgIHNlbGZfeHAtPnBhcnNlciwKICAgICAgICAgKFhNTF9Vbmtub3duRW5jb2RpbmdIYW5kbGVyKSBleHBhdF91bmtub3duX2VuY29kaW5nX2hhbmRsZXIsIE5VTEwKICAgICAgICAgKTsKIAotICAgIEFMTE9DKHNpemVvZihYTUxQYXJzZXJPYmplY3QpLCAiY3JlYXRlIGV4cGF0cGFyc2VyIik7CisgICAgcmV0dXJuIDA7Cit9CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKK3N0YXRpYyBpbnQKK3htbHBhcnNlcl9nY190cmF2ZXJzZShYTUxQYXJzZXJPYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKHNlbGYtPmhhbmRsZV9jbG9zZSk7CisgICAgUHlfVklTSVQoc2VsZi0+aGFuZGxlX3BpKTsKKyAgICBQeV9WSVNJVChzZWxmLT5oYW5kbGVfY29tbWVudCk7CisgICAgUHlfVklTSVQoc2VsZi0+aGFuZGxlX2VuZCk7CisgICAgUHlfVklTSVQoc2VsZi0+aGFuZGxlX2RhdGEpOworICAgIFB5X1ZJU0lUKHNlbGYtPmhhbmRsZV9zdGFydCk7CisKKyAgICBQeV9WSVNJVChzZWxmLT50YXJnZXQpOworICAgIFB5X1ZJU0lUKHNlbGYtPmVudGl0eSk7CisgICAgUHlfVklTSVQoc2VsZi0+bmFtZXMpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3htbHBhcnNlcl9nY19jbGVhcihYTUxQYXJzZXJPYmplY3QgKnNlbGYpCit7CisgICAgRVhQQVQoUGFyc2VyRnJlZSkoc2VsZi0+cGFyc2VyKTsKKworICAgIFB5X0NMRUFSKHNlbGYtPmhhbmRsZV9jbG9zZSk7CisgICAgUHlfQ0xFQVIoc2VsZi0+aGFuZGxlX3BpKTsKKyAgICBQeV9DTEVBUihzZWxmLT5oYW5kbGVfY29tbWVudCk7CisgICAgUHlfQ0xFQVIoc2VsZi0+aGFuZGxlX2VuZCk7CisgICAgUHlfQ0xFQVIoc2VsZi0+aGFuZGxlX2RhdGEpOworICAgIFB5X0NMRUFSKHNlbGYtPmhhbmRsZV9zdGFydCk7CisgICAgUHlfQ0xFQVIoc2VsZi0+aGFuZGxlX2RvY3R5cGUpOworCisgICAgUHlfQ0xFQVIoc2VsZi0+dGFyZ2V0KTsKKyAgICBQeV9DTEVBUihzZWxmLT5lbnRpdHkpOworICAgIFB5X0NMRUFSKHNlbGYtPm5hbWVzKTsKKworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZAogeG1scGFyc2VyX2RlYWxsb2MoWE1MUGFyc2VyT2JqZWN0KiBzZWxmKQogewotICAgIEVYUEFUKFBhcnNlckZyZWUpKHNlbGYtPnBhcnNlcik7Ci0KLSAgICBQeV9YREVDUkVGKHNlbGYtPmhhbmRsZV9jbG9zZSk7Ci0gICAgUHlfWERFQ1JFRihzZWxmLT5oYW5kbGVfcGkpOwotICAgIFB5X1hERUNSRUYoc2VsZi0+aGFuZGxlX2NvbW1lbnQpOwotICAgIFB5X1hERUNSRUYoc2VsZi0+aGFuZGxlX2VuZCk7Ci0gICAgUHlfWERFQ1JFRihzZWxmLT5oYW5kbGVfZGF0YSk7Ci0gICAgUHlfWERFQ1JFRihzZWxmLT5oYW5kbGVfc3RhcnQpOwotICAgIFB5X1hERUNSRUYoc2VsZi0+aGFuZGxlX3htbCk7Ci0KLSAgICBQeV9ERUNSRUYoc2VsZi0+dGFyZ2V0KTsKLSAgICBQeV9ERUNSRUYoc2VsZi0+ZW50aXR5KTsKLSAgICBQeV9ERUNSRUYoc2VsZi0+bmFtZXMpOwotCi0gICAgUkVMRUFTRShzaXplb2YoWE1MUGFyc2VyT2JqZWN0KSwgImRlc3Ryb3kgZXhwYXRwYXJzZXIiKTsKLQotICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKKyAgICBQeU9iamVjdF9HQ19VblRyYWNrKHNlbGYpOworICAgIHhtbHBhcnNlcl9nY19jbGVhcihzZWxmKTsKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOwogfQogCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogbWV0aG9kcyAoaW4gYWxwaGFiZXRpY2FsIG9yZGVyKSAqLwotCiBMT0NBTChQeU9iamVjdCopCiBleHBhdF9wYXJzZShYTUxQYXJzZXJPYmplY3QqIHNlbGYsIGNoYXIqIGRhdGEsIGludCBkYXRhX2xlbiwgaW50IGZpbmFsKQogewpAQCAtMjU4Myw5ICszMzM5LDEwIEBACiAKICAgICBpZiAoIW9rKSB7CiAgICAgICAgIGV4cGF0X3NldF9lcnJvcigKLSAgICAgICAgICAgIEVYUEFUKEVycm9yU3RyaW5nKShFWFBBVChHZXRFcnJvckNvZGUpKHNlbGYtPnBhcnNlcikpLAorICAgICAgICAgICAgRVhQQVQoR2V0RXJyb3JDb2RlKShzZWxmLT5wYXJzZXIpLAogICAgICAgICAgICAgRVhQQVQoR2V0RXJyb3JMaW5lTnVtYmVyKShzZWxmLT5wYXJzZXIpLAotICAgICAgICAgICAgRVhQQVQoR2V0RXJyb3JDb2x1bW5OdW1iZXIpKHNlbGYtPnBhcnNlcikKKyAgICAgICAgICAgIEVYUEFUKEdldEVycm9yQ29sdW1uTnVtYmVyKShzZWxmLT5wYXJzZXIpLAorICAgICAgICAgICAgTlVMTAogICAgICAgICAgICAgKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjYzNiw2ICszMzkzLDcgQEAKIAogICAgIFB5T2JqZWN0KiByZWFkZXI7CiAgICAgUHlPYmplY3QqIGJ1ZmZlcjsKKyAgICBQeU9iamVjdCogdGVtcDsKICAgICBQeU9iamVjdCogcmVzOwogCiAgICAgUHlPYmplY3QqIGZpbGVvYmo7CkBAIC0yNjQ1LDcgKzM0MDMsNyBAQAogICAgIHJlYWRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZmlsZW9iaiwgInJlYWQiKTsKICAgICBpZiAoIXJlYWRlcikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgCisKICAgICAvKiByZWFkIGZyb20gb3BlbiBmaWxlIG9iamVjdCAqLwogICAgIGZvciAoOzspIHsKIApAQCAtMjY1Nyw3ICszNDE1LDIyIEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghUHlCeXRlc19DaGVja0V4YWN0KGJ1ZmZlcikgfHwgUHlCeXRlc19HRVRfU0laRShidWZmZXIpID09IDApIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGJ1ZmZlcikpIHsKKyAgICAgICAgICAgIC8qIEEgdW5pY29kZSBvYmplY3QgaXMgZW5jb2RlZCBpbnRvIGJ5dGVzIHVzaW5nIFVURi04ICovCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKGJ1ZmZlcikgPT0gMCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihidWZmZXIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGVtcCA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoYnVmZmVyLCAidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpOworICAgICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CisgICAgICAgICAgICBpZiAoIXRlbXApIHsKKyAgICAgICAgICAgICAgICAvKiBQcm9wYWdhdGUgZXhjZXB0aW9uIGZyb20gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyAqLworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZWFkZXIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnVmZmVyID0gdGVtcDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICghUHlCeXRlc19DaGVja0V4YWN0KGJ1ZmZlcikgfHwgUHlCeXRlc19HRVRfU0laRShidWZmZXIpID09IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihidWZmZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI2ODksNyArMzQ2MiwxMyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi14bWxwYXJzZXJfc2V0ZXZlbnRzKFhNTFBhcnNlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit4bWxwYXJzZXJfZG9jdHlwZShYTUxQYXJzZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QqCit4bWxwYXJzZXJfc2V0ZXZlbnRzKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QqIGFyZ3MpCiB7CiAgICAgLyogYWN0aXZhdGUgZWxlbWVudCBldmVudCByZXBvcnRpbmcgKi8KIApAQCAtMjcwNSw3ICszNDg0LDcgQEAKICAgICBpZiAoIVRyZWVCdWlsZGVyX0NoZWNrRXhhY3Qoc2VsZi0+dGFyZ2V0KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoCiAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiZXZlbnQgaGFuZGxpbmcgb25seSBzdXBwb3J0ZWQgZm9yIGNFbGVtZW50VHJlZS5UcmVlYnVpbGRlciAiCisgICAgICAgICAgICAiZXZlbnQgaGFuZGxpbmcgb25seSBzdXBwb3J0ZWQgZm9yIEVsZW1lbnRUcmVlLlRyZWVCdWlsZGVyICIKICAgICAgICAgICAgICJ0YXJnZXRzIgogICAgICAgICAgICAgKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNzE4LDEwICszNDk3LDEwIEBACiAgICAgdGFyZ2V0LT5ldmVudHMgPSBldmVudHM7CiAKICAgICAvKiBjbGVhciBvdXQgZXhpc3RpbmcgZXZlbnRzICovCi0gICAgUHlfWERFQ1JFRih0YXJnZXQtPnN0YXJ0X2V2ZW50X29iaik7IHRhcmdldC0+c3RhcnRfZXZlbnRfb2JqID0gTlVMTDsKLSAgICBQeV9YREVDUkVGKHRhcmdldC0+ZW5kX2V2ZW50X29iaik7IHRhcmdldC0+ZW5kX2V2ZW50X29iaiA9IE5VTEw7Ci0gICAgUHlfWERFQ1JFRih0YXJnZXQtPnN0YXJ0X25zX2V2ZW50X29iaik7IHRhcmdldC0+c3RhcnRfbnNfZXZlbnRfb2JqID0gTlVMTDsKLSAgICBQeV9YREVDUkVGKHRhcmdldC0+ZW5kX25zX2V2ZW50X29iaik7IHRhcmdldC0+ZW5kX25zX2V2ZW50X29iaiA9IE5VTEw7CisgICAgUHlfQ0xFQVIodGFyZ2V0LT5zdGFydF9ldmVudF9vYmopOworICAgIFB5X0NMRUFSKHRhcmdldC0+ZW5kX2V2ZW50X29iaik7CisgICAgUHlfQ0xFQVIodGFyZ2V0LT5zdGFydF9uc19ldmVudF9vYmopOworICAgIFB5X0NMRUFSKHRhcmdldC0+ZW5kX25zX2V2ZW50X29iaik7CiAKICAgICBpZiAoZXZlbnRfc2V0ID09IFB5X05vbmUpIHsKICAgICAgICAgLyogZGVmYXVsdCBpcyAiZW5kIiBvbmx5ICovCkBAIC0yNzkzLDEwICszNTcyLDExIEBACiAgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbikgeG1scGFyc2VyX2Nsb3NlLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiX3BhcnNlIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXJfcGFyc2UsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJfc2V0ZXZlbnRzIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXJfc2V0ZXZlbnRzLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiZG9jdHlwZSIsIChQeUNGdW5jdGlvbikgeG1scGFyc2VyX2RvY3R5cGUsIE1FVEhfVkFSQVJHU30sCiAgICAge05VTEwsIE5VTEx9CiB9OwogCi1zdGF0aWMgUHlPYmplY3QqICAKK3N0YXRpYyBQeU9iamVjdCoKIHhtbHBhcnNlcl9nZXRhdHRybyhYTUxQYXJzZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBuYW1lb2JqKQogewogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobmFtZW9iaikpIHsKQEAgLTI4MjIsMzMgKzM2MDIsNDQgQEAKIAogc3RhdGljIFB5VHlwZU9iamVjdCBYTUxQYXJzZXJfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiWE1MUGFyc2VyIiwgc2l6ZW9mKFhNTFBhcnNlck9iamVjdCksIDAsCisgICAgInhtbC5ldHJlZS5FbGVtZW50VHJlZS5YTUxQYXJzZXIiLCBzaXplb2YoWE1MUGFyc2VyT2JqZWN0KSwgMCwKICAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpeG1scGFyc2VyX2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLCAvKiB0cF9wcmludCAqLwotICAgIDAsIC8qIHRwX2dldGF0dHIgKi8KLSAgICAwLCAvKiB0cF9zZXRhdHRyICovCi0gICAgMCwgLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAwLCAvKiB0cF9yZXByICovCi0gICAgMCwgLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLCAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgLyogdHBfaGFzaCAqLwotICAgIDAsIC8qIHRwX2NhbGwgKi8KLSAgICAwLCAvKiB0cF9zdHIgKi8KLSAgICAoZ2V0YXR0cm9mdW5jKXhtbHBhcnNlcl9nZXRhdHRybywgLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLCAvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyogdHBfZmxhZ3MgKi8KLSAgICAwLCAvKiB0cF9kb2MgKi8KLSAgICAwLCAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsIC8qIHRwX2NsZWFyICovCi0gICAgMCwgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsIC8qIHRwX2l0ZXIgKi8KLSAgICAwLCAvKiB0cF9pdGVybmV4dCAqLwotICAgIHhtbHBhcnNlcl9tZXRob2RzLCAvKiB0cF9tZXRob2RzICovCi0gICAgMCwgLyogdHBfbWVtYmVycyAqLworICAgIChkZXN0cnVjdG9yKXhtbHBhcnNlcl9kZWFsbG9jLCAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAoZ2V0YXR0cm9mdW5jKXhtbHBhcnNlcl9nZXRhdHRybywgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8IFB5X1RQRkxBR1NfSEFWRV9HQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpeG1scGFyc2VyX2djX3RyYXZlcnNlLCAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpeG1scGFyc2VyX2djX2NsZWFyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgeG1scGFyc2VyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2MpeG1scGFyc2VyX2luaXQsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICB4bWxwYXJzZXJfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCiAjZW5kaWYKQEAgLTI4NTcsMTMgKzM2NDgsNyBAQAogLyogcHl0aG9uIG1vZHVsZSBpbnRlcmZhY2UgKi8KIAogc3RhdGljIFB5TWV0aG9kRGVmIF9mdW5jdGlvbnNbXSA9IHsKLSAgICB7IkVsZW1lbnQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKLSAgICB7IlN1YkVsZW1lbnQiLCAoUHlDRnVuY3Rpb24pIHN1YmVsZW1lbnQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKLSAgICB7IlRyZWVCdWlsZGVyIiwgKFB5Q0Z1bmN0aW9uKSB0cmVlYnVpbGRlciwgTUVUSF9WQVJBUkdTfSwKLSNpZiBkZWZpbmVkKFVTRV9FWFBBVCkKLSAgICB7IlhNTFBhcnNlciIsIChQeUNGdW5jdGlvbikgeG1scGFyc2VyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCi0gICAgeyJYTUxUcmVlQnVpbGRlciIsIChQeUNGdW5jdGlvbikgeG1scGFyc2VyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCi0jZW5kaWYKKyAgICB7IlN1YkVsZW1lbnQiLCAoUHlDRnVuY3Rpb24pIHN1YmVsZW1lbnQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFN9LAogICAgIHtOVUxMLCBOVUxMfQogfTsKIApAQCAtMjg4Myw5ICszNjY4LDcgQEAKIFB5TU9ESU5JVF9GVU5DCiBQeUluaXRfX2VsZW1lbnR0cmVlKHZvaWQpCiB7Ci0gICAgUHlPYmplY3QqIG07Ci0gICAgUHlPYmplY3QqIGc7Ci0gICAgY2hhciogYm9vdHN0cmFwOworICAgIFB5T2JqZWN0ICptLCAqdGVtcDsKIAogICAgIC8qIEluaXRpYWxpemUgb2JqZWN0IHR5cGVzICovCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmVHJlZUJ1aWxkZXJfVHlwZSkgPCAwKQpAQCAtMjkwMSwyMTIgKzM2ODQsMTUgQEAKICAgICBpZiAoIW0pCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgLyogVGhlIGNvZGUgYmVsb3cgcmVxdWlyZXMgdGhhdCB0aGUgbW9kdWxlIGdldHMgYWxyZWFkeSBhZGRlZAotICAgICAgIHRvIHN5cy5tb2R1bGVzLiAqLwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBfZWxlbWVudHRyZWVtb2R1bGUubV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIG0pOworICAgIGlmICghKHRlbXAgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImNvcHkiKSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGVsZW1lbnR0cmVlX2RlZXBjb3B5X29iaiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGVtcCwgImRlZXBjb3B5Iik7CisgICAgUHlfWERFQ1JFRih0ZW1wKTsKIAotICAgIC8qIHB5dGhvbiBnbHVlIGNvZGUgKi8KLQotICAgIGcgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKCFnKQorICAgIGlmICghKGVsZW1lbnRwYXRoX29iaiA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgieG1sLmV0cmVlLkVsZW1lbnRQYXRoIikpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGcsICJfX2J1aWx0aW5zX18iLCBQeUV2YWxfR2V0QnVpbHRpbnMoKSk7Ci0KLSAgICBib290c3RyYXAgPSAoCi0KLSAgICAgICAgImZyb20gY29weSBpbXBvcnQgY29weSwgZGVlcGNvcHlcbiIKLQotICAgICAgICAidHJ5OlxuIgotICAgICAgICAiICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWVcbiIKLSAgICAgICAgImV4Y2VwdCBJbXBvcnRFcnJvcjpcbiIKLSAgICAgICAgIiAgaW1wb3J0IEVsZW1lbnRUcmVlXG4iCi0gICAgICAgICJFVCA9IEVsZW1lbnRUcmVlXG4iCi0gICAgICAgICJkZWwgRWxlbWVudFRyZWVcbiIKLQotICAgICAgICAiaW1wb3J0IF9lbGVtZW50dHJlZSBhcyBjRWxlbWVudFRyZWVcbiIKLQotICAgICAgICAidHJ5OlxuIiAvKiBjaGVjayBpZiBjb3B5IHdvcmtzIGFzIGlzICovCi0gICAgICAgICIgIGNvcHkoY0VsZW1lbnRUcmVlLkVsZW1lbnQoJ3gnKSlcbiIKLSAgICAgICAgImV4Y2VwdDpcbiIKLSAgICAgICAgIiAgZGVmIGNvcHllbGVtZW50KGVsZW0pOlxuIgotICAgICAgICAiICAgIHJldHVybiBlbGVtXG4iCi0KLSAgICAgICAgImNsYXNzIENvbW1lbnRQcm94eTpcbiIKLSAgICAgICAgIiBkZWYgX19jYWxsX18oc2VsZiwgdGV4dD1Ob25lKTpcbiIKLSAgICAgICAgIiAgZWxlbWVudCA9IGNFbGVtZW50VHJlZS5FbGVtZW50KEVULkNvbW1lbnQpXG4iCi0gICAgICAgICIgIGVsZW1lbnQudGV4dCA9IHRleHRcbiIKLSAgICAgICAgIiAgcmV0dXJuIGVsZW1lbnRcbiIKLSAgICAgICAgIiBkZWYgX19lcV9fKHNlbGYsIG90aGVyKTpcbiIKLSAgICAgICAgIiAgcmV0dXJuIEVULkNvbW1lbnQgPT0gb3RoZXJcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5Db21tZW50ID0gQ29tbWVudFByb3h5KClcbiIKLQotICAgICAgICAiY2xhc3MgRWxlbWVudFRyZWUoRVQuRWxlbWVudFRyZWUpOlxuIiAvKiBwdWJsaWMgKi8KLSAgICAgICAgIiAgZGVmIHBhcnNlKHNlbGYsIHNvdXJjZSwgcGFyc2VyPU5vbmUpOlxuIgotICAgICAgICAiICAgIGNsb3NlX3NvdXJjZSA9IEZhbHNlXG4iCi0gICAgICAgICIgICAgaWYgbm90IGhhc2F0dHIoc291cmNlLCAncmVhZCcpOlxuIgotICAgICAgICAiICAgICAgc291cmNlID0gb3Blbihzb3VyY2UsICdyYicpXG4iCi0gICAgICAgICIgICAgICBjbG9zZV9zb3VyY2UgPSBUcnVlXG4iCi0gICAgICAgICIgICAgdHJ5OlxuIgotICAgICAgICAiICAgICAgaWYgcGFyc2VyIGlzIG5vdCBOb25lOlxuIgotICAgICAgICAiICAgICAgICB3aGlsZSAxOlxuIgotICAgICAgICAiICAgICAgICAgIGRhdGEgPSBzb3VyY2UucmVhZCg2NTUzNilcbiIKLSAgICAgICAgIiAgICAgICAgICBpZiBub3QgZGF0YTpcbiIKLSAgICAgICAgIiAgICAgICAgICAgIGJyZWFrXG4iCi0gICAgICAgICIgICAgICAgICAgcGFyc2VyLmZlZWQoZGF0YSlcbiIKLSAgICAgICAgIiAgICAgICAgc2VsZi5fcm9vdCA9IHBhcnNlci5jbG9zZSgpXG4iCi0gICAgICAgICIgICAgICBlbHNlOlxuIiAKLSAgICAgICAgIiAgICAgICAgcGFyc2VyID0gY0VsZW1lbnRUcmVlLlhNTFBhcnNlcigpXG4iCi0gICAgICAgICIgICAgICAgIHNlbGYuX3Jvb3QgPSBwYXJzZXIuX3BhcnNlKHNvdXJjZSlcbiIKLSAgICAgICAgIiAgICAgIHJldHVybiBzZWxmLl9yb290XG4iCi0gICAgICAgICIgICAgZmluYWxseTpcbiIKLSAgICAgICAgIiAgICAgIGlmIGNsb3NlX3NvdXJjZTpcbiIKLSAgICAgICAgIiAgICAgICAgc291cmNlLmNsb3NlKClcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5FbGVtZW50VHJlZSA9IEVsZW1lbnRUcmVlXG4iCi0KLSAgICAgICAgImRlZiBpdGVyKG5vZGUsIHRhZz1Ob25lKTpcbiIgLyogaGVscGVyICovCi0gICAgICAgICIgIGlmIHRhZyA9PSAnKic6XG4iCi0gICAgICAgICIgICAgdGFnID0gTm9uZVxuIgotICAgICAgICAiICBpZiB0YWcgaXMgTm9uZSBvciBub2RlLnRhZyA9PSB0YWc6XG4iCi0gICAgICAgICIgICAgeWllbGQgbm9kZVxuIgotICAgICAgICAiICBmb3Igbm9kZSBpbiBub2RlOlxuIgotICAgICAgICAiICAgIGZvciBub2RlIGluIGl0ZXIobm9kZSwgdGFnKTpcbiIKLSAgICAgICAgIiAgICAgIHlpZWxkIG5vZGVcbiIKLQotICAgICAgICAiZGVmIGl0ZXJ0ZXh0KG5vZGUpOlxuIiAvKiBoZWxwZXIgKi8KLSAgICAgICAgIiAgaWYgbm9kZS50ZXh0OlxuIgotICAgICAgICAiICAgIHlpZWxkIG5vZGUudGV4dFxuIgotICAgICAgICAiICBmb3IgZSBpbiBub2RlOlxuIgotICAgICAgICAiICAgIGZvciBzIGluIGUuaXRlcnRleHQoKTpcbiIKLSAgICAgICAgIiAgICAgIHlpZWxkIHNcbiIKLSAgICAgICAgIiAgICBpZiBlLnRhaWw6XG4iCi0gICAgICAgICIgICAgICB5aWVsZCBlLnRhaWxcbiIKLQotICAgICAgICAiZGVmIHBhcnNlKHNvdXJjZSwgcGFyc2VyPU5vbmUpOlxuIiAvKiBwdWJsaWMgKi8KLSAgICAgICAgIiAgdHJlZSA9IEVsZW1lbnRUcmVlKClcbiIKLSAgICAgICAgIiAgdHJlZS5wYXJzZShzb3VyY2UsIHBhcnNlcilcbiIKLSAgICAgICAgIiAgcmV0dXJuIHRyZWVcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5wYXJzZSA9IHBhcnNlXG4iCi0KLSAgICAgICAgImNsYXNzIGl0ZXJwYXJzZTpcbiIKLSAgICAgICAgIiByb290ID0gTm9uZVxuIgotICAgICAgICAiIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlLCBldmVudHM9Tm9uZSk6XG4iCi0gICAgICAgICIgIHNlbGYuX2Nsb3NlX2ZpbGUgPSBGYWxzZVxuIgotICAgICAgICAiICBpZiBub3QgaGFzYXR0cihmaWxlLCAncmVhZCcpOlxuIgotICAgICAgICAiICAgIGZpbGUgPSBvcGVuKGZpbGUsICdyYicpXG4iCi0gICAgICAgICIgICAgc2VsZi5fY2xvc2VfZmlsZSA9IFRydWVcbiIKLSAgICAgICAgIiAgc2VsZi5fZmlsZSA9IGZpbGVcbiIKLSAgICAgICAgIiAgc2VsZi5fZXZlbnRzID0gW11cbiIKLSAgICAgICAgIiAgc2VsZi5faW5kZXggPSAwXG4iCi0gICAgICAgICIgIHNlbGYuX2Vycm9yID0gTm9uZVxuIgotICAgICAgICAiICBzZWxmLnJvb3QgPSBzZWxmLl9yb290ID0gTm9uZVxuIgotICAgICAgICAiICBiID0gY0VsZW1lbnRUcmVlLlRyZWVCdWlsZGVyKClcbiIKLSAgICAgICAgIiAgc2VsZi5fcGFyc2VyID0gY0VsZW1lbnRUcmVlLlhNTFBhcnNlcihiKVxuIgotICAgICAgICAiICBzZWxmLl9wYXJzZXIuX3NldGV2ZW50cyhzZWxmLl9ldmVudHMsIGV2ZW50cylcbiIKLSAgICAgICAgIiBkZWYgX19uZXh0X18oc2VsZik6XG4iCi0gICAgICAgICIgIHdoaWxlIDE6XG4iCi0gICAgICAgICIgICAgdHJ5OlxuIgotICAgICAgICAiICAgICAgaXRlbSA9IHNlbGYuX2V2ZW50c1tzZWxmLl9pbmRleF1cbiIKLSAgICAgICAgIiAgICAgIHNlbGYuX2luZGV4ICs9IDFcbiIKLSAgICAgICAgIiAgICAgIHJldHVybiBpdGVtXG4iCi0gICAgICAgICIgICAgZXhjZXB0IEluZGV4RXJyb3I6XG4iCi0gICAgICAgICIgICAgICBwYXNzXG4iCi0gICAgICAgICIgICAgaWYgc2VsZi5fZXJyb3I6XG4iCi0gICAgICAgICIgICAgICBlID0gc2VsZi5fZXJyb3JcbiIKLSAgICAgICAgIiAgICAgIHNlbGYuX2Vycm9yID0gTm9uZVxuIgotICAgICAgICAiICAgICAgcmFpc2UgZVxuIgotICAgICAgICAiICAgIGlmIHNlbGYuX3BhcnNlciBpcyBOb25lOlxuIgotICAgICAgICAiICAgICAgc2VsZi5yb290ID0gc2VsZi5fcm9vdFxuIgotICAgICAgICAiICAgICAgaWYgc2VsZi5fY2xvc2VfZmlsZTpcbiIKLSAgICAgICAgIiAgICAgICAgc2VsZi5fZmlsZS5jbG9zZSgpXG4iCi0gICAgICAgICIgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uXG4iCi0gICAgICAgICIgICAgIyBsb2FkIGV2ZW50IGJ1ZmZlclxuIgotICAgICAgICAiICAgIGRlbCBzZWxmLl9ldmVudHNbOl1cbiIKLSAgICAgICAgIiAgICBzZWxmLl9pbmRleCA9IDBcbiIKLSAgICAgICAgIiAgICBkYXRhID0gc2VsZi5fZmlsZS5yZWFkKDE2Mzg0KVxuIgotICAgICAgICAiICAgIGlmIGRhdGE6XG4iCi0gICAgICAgICIgICAgICB0cnk6XG4iCi0gICAgICAgICIgICAgICAgIHNlbGYuX3BhcnNlci5mZWVkKGRhdGEpXG4iCi0gICAgICAgICIgICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZXhjOlxuIgotICAgICAgICAiICAgICAgICBzZWxmLl9lcnJvciA9IGV4Y1xuIgotICAgICAgICAiICAgIGVsc2U6XG4iCi0gICAgICAgICIgICAgICBzZWxmLl9yb290ID0gc2VsZi5fcGFyc2VyLmNsb3NlKClcbiIKLSAgICAgICAgIiAgICAgIHNlbGYuX3BhcnNlciA9IE5vbmVcbiIKLSAgICAgICAgIiBkZWYgX19pdGVyX18oc2VsZik6XG4iCi0gICAgICAgICIgIHJldHVybiBzZWxmXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUuaXRlcnBhcnNlID0gaXRlcnBhcnNlXG4iCi0KLSAgICAgICAgImNsYXNzIFBJUHJveHk6XG4iCi0gICAgICAgICIgZGVmIF9fY2FsbF9fKHNlbGYsIHRhcmdldCwgdGV4dD1Ob25lKTpcbiIKLSAgICAgICAgIiAgZWxlbWVudCA9IGNFbGVtZW50VHJlZS5FbGVtZW50KEVULlBJKVxuIgotICAgICAgICAiICBlbGVtZW50LnRleHQgPSB0YXJnZXRcbiIKLSAgICAgICAgIiAgaWYgdGV4dDpcbiIKLSAgICAgICAgIiAgICBlbGVtZW50LnRleHQgPSBlbGVtZW50LnRleHQgKyAnICcgKyB0ZXh0XG4iCi0gICAgICAgICIgIHJldHVybiBlbGVtZW50XG4iCi0gICAgICAgICIgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6XG4iCi0gICAgICAgICIgIHJldHVybiBFVC5QSSA9PSBvdGhlclxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLlBJID0gY0VsZW1lbnRUcmVlLlByb2Nlc3NpbmdJbnN0cnVjdGlvbiA9IFBJUHJveHkoKVxuIgotCi0gICAgICAgICJkZWYgWE1MKHRleHQpOlxuIiAvKiBwdWJsaWMgKi8KLSAgICAgICAgIiAgcGFyc2VyID0gY0VsZW1lbnRUcmVlLlhNTFBhcnNlcigpXG4iCi0gICAgICAgICIgIHBhcnNlci5mZWVkKHRleHQpXG4iCi0gICAgICAgICIgIHJldHVybiBwYXJzZXIuY2xvc2UoKVxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLlhNTCA9IGNFbGVtZW50VHJlZS5mcm9tc3RyaW5nID0gWE1MXG4iCi0KLSAgICAgICAgImRlZiBYTUxJRCh0ZXh0KTpcbiIgLyogcHVibGljICovCi0gICAgICAgICIgIHRyZWUgPSBYTUwodGV4dClcbiIKLSAgICAgICAgIiAgaWRzID0ge31cbiIKLSAgICAgICAgIiAgZm9yIGVsZW0gaW4gdHJlZS5pdGVyKCk6XG4iCi0gICAgICAgICIgICAgaWQgPSBlbGVtLmdldCgnaWQnKVxuIgotICAgICAgICAiICAgIGlmIGlkOlxuIgotICAgICAgICAiICAgICAgaWRzW2lkXSA9IGVsZW1cbiIKLSAgICAgICAgIiAgcmV0dXJuIHRyZWUsIGlkc1xuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLlhNTElEID0gWE1MSURcbiIKLQotICAgICAgICAidHJ5OlxuIgotICAgICAgICAiIHJlZ2lzdGVyX25hbWVzcGFjZSA9IEVULnJlZ2lzdGVyX25hbWVzcGFjZVxuIgotICAgICAgICAiZXhjZXB0IEF0dHJpYnV0ZUVycm9yOlxuIgotICAgICAgICAiIGRlZiByZWdpc3Rlcl9uYW1lc3BhY2UocHJlZml4LCB1cmkpOlxuIgotICAgICAgICAiICBFVC5fbmFtZXNwYWNlX21hcFt1cmldID0gcHJlZml4XG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUucmVnaXN0ZXJfbmFtZXNwYWNlID0gcmVnaXN0ZXJfbmFtZXNwYWNlXG4iCi0KLSAgICAgICAgImNFbGVtZW50VHJlZS5kdW1wID0gRVQuZHVtcFxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLkVsZW1lbnRQYXRoID0gRWxlbWVudFBhdGggPSBFVC5FbGVtZW50UGF0aFxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLmlzZWxlbWVudCA9IEVULmlzZWxlbWVudFxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLlFOYW1lID0gRVQuUU5hbWVcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS50b3N0cmluZyA9IEVULnRvc3RyaW5nXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUuZnJvbXN0cmluZ2xpc3QgPSBFVC5mcm9tc3RyaW5nbGlzdFxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLnRvc3RyaW5nbGlzdCA9IEVULnRvc3RyaW5nbGlzdFxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLlZFUlNJT04gPSAnIiBWRVJTSU9OICInXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUuX192ZXJzaW9uX18gPSAnIiBWRVJTSU9OICInXG4iCi0KLSAgICAgICApOwotCi0gICAgaWYgKCFQeVJ1bl9TdHJpbmcoYm9vdHN0cmFwLCBQeV9maWxlX2lucHV0LCBnLCBOVUxMKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBlbGVtZW50cGF0aF9vYmogPSBQeURpY3RfR2V0SXRlbVN0cmluZyhnLCAiRWxlbWVudFBhdGgiKTsKLQotICAgIGVsZW1lbnR0cmVlX2NvcHllbGVtZW50X29iaiA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGcsICJjb3B5ZWxlbWVudCIpOwotICAgIGlmIChlbGVtZW50dHJlZV9jb3B5ZWxlbWVudF9vYmopIHsKLSAgICAgICAgLyogcmVkdWNlIGhhY2sgbmVlZGVkOyBlbmFibGUgcmVkdWNlIG1ldGhvZCAqLwotICAgICAgICBQeU1ldGhvZERlZiogbXA7Ci0gICAgICAgIGZvciAobXAgPSBlbGVtZW50X21ldGhvZHM7IG1wLT5tbF9uYW1lOyBtcCsrKQotICAgICAgICAgICAgaWYgKG1wLT5tbF9tZXRoID09IChQeUNGdW5jdGlvbikgZWxlbWVudF9yZWR1Y2UpIHsKLSAgICAgICAgICAgICAgICBtcC0+bWxfbmFtZSA9ICJfX3JlZHVjZV9fIjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLQotICAgIGVsZW1lbnR0cmVlX2RlZXBjb3B5X29iaiA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGcsICJkZWVwY29weSIpOwotICAgIGVsZW1lbnR0cmVlX2l0ZXJfb2JqID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZywgIml0ZXIiKTsKLSAgICBlbGVtZW50dHJlZV9pdGVydGV4dF9vYmogPSBQeURpY3RfR2V0SXRlbVN0cmluZyhnLCAiaXRlcnRleHQiKTsKLQotI2lmIGRlZmluZWQoVVNFX1BZRVhQQVRfQ0FQSSkKLSAgICAvKiBsaW5rIGFnYWluc3QgcHlleHBhdCwgaWYgcG9zc2libGUgKi8KKyAgICAvKiBsaW5rIGFnYWluc3QgcHlleHBhdCAqLwogICAgIGV4cGF0X2NhcGkgPSBQeUNhcHN1bGVfSW1wb3J0KFB5RXhwYXRfQ0FQU1VMRV9OQU1FLCAwKTsKICAgICBpZiAoZXhwYXRfY2FwaSkgewogICAgICAgICAvKiBjaGVjayB0aGF0IGl0J3MgdXNhYmxlICovCkBAIC0zMTIyLDEzICszNzA4LDIzIEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotI2VuZGlmCiAKICAgICBlbGVtZW50dHJlZV9wYXJzZWVycm9yX29iaiA9IFB5RXJyX05ld0V4Y2VwdGlvbigKLSAgICAgICAgImNFbGVtZW50VHJlZS5QYXJzZUVycm9yIiwgUHlFeGNfU3ludGF4RXJyb3IsIE5VTEwKKyAgICAgICAgInhtbC5ldHJlZS5FbGVtZW50VHJlZS5QYXJzZUVycm9yIiwgUHlFeGNfU3ludGF4RXJyb3IsIE5VTEwKICAgICAgICAgKTsKICAgICBQeV9JTkNSRUYoZWxlbWVudHRyZWVfcGFyc2VlcnJvcl9vYmopOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiUGFyc2VFcnJvciIsIGVsZW1lbnR0cmVlX3BhcnNlZXJyb3Jfb2JqKTsKIAorICAgIFB5X0lOQ1JFRigoUHlPYmplY3QgKikmRWxlbWVudF9UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkVsZW1lbnQiLCAoUHlPYmplY3QgKikmRWxlbWVudF9UeXBlKTsKKworICAgIFB5X0lOQ1JFRigoUHlPYmplY3QgKikmVHJlZUJ1aWxkZXJfVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJUcmVlQnVpbGRlciIsIChQeU9iamVjdCAqKSZUcmVlQnVpbGRlcl9UeXBlKTsKKworI2lmIGRlZmluZWQoVVNFX0VYUEFUKQorICAgIFB5X0lOQ1JFRigoUHlPYmplY3QgKikmWE1MUGFyc2VyX1R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiWE1MUGFyc2VyIiwgKFB5T2JqZWN0ICopJlhNTFBhcnNlcl9UeXBlKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIG07CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMgYi9Nb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjViMjllMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYwpAQCAtMCwwICsxLDE0MiBAQAorLyogVGhpcyBpcyBidWlsdCBhcyBhIHN0YW5kLWFsb25lIGV4ZWN1dGFibGUgYnkgdGhlIE1ha2VmaWxlLCBhbmQgaGVscHMgdHVybgorICAgTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IGludG8gYSBmcm96ZW4gbW9kdWxlIGluIFB5dGhvbi9pbXBvcnRsaWIuaAorKi8KKworI2luY2x1ZGUgPFB5dGhvbi5oPgorI2luY2x1ZGUgPG1hcnNoYWwuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpZm5kZWYgTVNfV0lORE9XUworI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisKKworLyogVG8gYXZvaWQgYSBjaXJjdWxhciBkZXBlbmRlbmN5IG9uIGZyb3plbi5vLCB3ZSBjcmVhdGUgb3VyIG93biBzdHJ1Y3R1cmUKKyAgIG9mIGZyb3plbiBtb2R1bGVzIGluc3RlYWQsIGxlZnQgZGVsaWJlcmF0ZWx5IGJsYW5rIHNvIGFzIHRvIGF2b2lkCisgICB1bmludGVudGlvbmFsIGltcG9ydCBvZiBhIHN0YWxlIHZlcnNpb24gb2YgX2Zyb3plbl9pbXBvcnRsaWIuICovCisKK3N0YXRpYyBzdHJ1Y3QgX2Zyb3plbiBfUHlJbXBvcnRfRnJvemVuTW9kdWxlc1tdID0geworICAgIHswLCAwLCAwfSAvKiBzZW50aW5lbCAqLworfTsKKworI2lmbmRlZiBNU19XSU5ET1dTCisvKiBPbiBXaW5kb3dzLCB0aGlzIGxpbmtzIHdpdGggdGhlIHJlZ3VsYXIgcHl0aG9uWFkuZGxsLCBzbyB0aGlzIHZhcmlhYmxlIGNvbWVzCisgICBmcm9tIGZyb3plbi5vYmouIEluIHRoZSBNYWtlZmlsZSwgZnJvemVuLm8gaXMgbm90IGxpbmtlZCBpbnRvIHRoaXMgZXhlY3V0YWJsZSwKKyAgIHNvIHdlIGRlZmluZSB0aGUgdmFyaWFibGUgaGVyZS4gKi8KK3N0cnVjdCBfZnJvemVuICpQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzOworI2VuZGlmCisKK2NvbnN0IGNoYXIgaGVhZGVyW10gPSAiLyogQXV0by1nZW5lcmF0ZWQgYnkgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jICovIjsKKworaW50CittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgICAgY2hhciAqaW5wYXRoLCAqb3V0cGF0aDsKKyAgICBGSUxFICppbmZpbGUsICpvdXRmaWxlID0gTlVMTDsKKyAgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgICBzaXplX3QgdGV4dF9zaXplLCBkYXRhX3NpemUsIG47CisgICAgY2hhciAqdGV4dDsKKyAgICB1bnNpZ25lZCBjaGFyICpkYXRhOworICAgIFB5T2JqZWN0ICpjb2RlLCAqbWFyc2hhbGxlZDsKKworICAgIFB5SW1wb3J0X0Zyb3plbk1vZHVsZXMgPSBfUHlJbXBvcnRfRnJvemVuTW9kdWxlczsKKworICAgIGlmIChhcmdjICE9IDMpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJuZWVkIHRvIHNwZWNpZnkgaW5wdXQgYW5kIG91dHB1dCBwYXRoc1xuIik7CisgICAgICAgIHJldHVybiAyOworICAgIH0KKyAgICBpbnBhdGggPSBhcmd2WzFdOworICAgIG91dHBhdGggPSBhcmd2WzJdOworICAgIGluZmlsZSA9IGZvcGVuKGlucGF0aCwgInJiIik7CisgICAgaWYgKGluZmlsZSA9PSBOVUxMKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY2Fubm90IG9wZW4gJyVzJyBmb3IgcmVhZGluZ1xuIiwgaW5wYXRoKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChmc3RhdChmaWxlbm8oaW5maWxlKSwgJnN0KSkgeworICAgICAgICBmY2xvc2UoaW5maWxlKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJjYW5ub3QgZnN0YXQgJyVzJ1xuIiwgaW5wYXRoKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHRleHRfc2l6ZSA9IHN0LnN0X3NpemU7CisgICAgdGV4dCA9IChjaGFyICopIG1hbGxvYyh0ZXh0X3NpemUgKyAxKTsKKyAgICBpZiAodGV4dCA9PSBOVUxMKSB7CisgICAgICAgIGZjbG9zZShpbmZpbGUpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNvdWxkIG5vdCBhbGxvY2F0ZSAlbGQgYnl0ZXNcbiIsIChsb25nKSB0ZXh0X3NpemUpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgbiA9IGZyZWFkKHRleHQsIDEsIHRleHRfc2l6ZSwgaW5maWxlKTsKKyAgICBmY2xvc2UoaW5maWxlKTsKKyAgICBpbmZpbGUgPSBOVUxMOworICAgIGlmIChuIDwgdGV4dF9zaXplKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAicmVhZCB0b28gc2hvcnQ6IGdvdCAlbGQgaW5zdGVhZCBvZiAlbGQgYnl0ZXNcbiIsCisgICAgICAgICAgICAgICAgKGxvbmcpIG4sIChsb25nKSB0ZXh0X3NpemUpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgdGV4dFt0ZXh0X3NpemVdID0gJ1wwJzsKKworICAgIFB5X05vVXNlclNpdGVEaXJlY3RvcnkrKzsKKyAgICBQeV9Ob1NpdGVGbGFnKys7CisgICAgUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnKys7CisKKyAgICBQeV9TZXRQcm9ncmFtTmFtZShMIi4vX2ZyZWV6ZV9pbXBvcnRsaWIiKTsKKyAgICAvKiBEb24ndCBpbnN0YWxsIGltcG9ydGxpYiwgc2luY2UgaXQgY291bGQgZXhlY3V0ZSBvdXRkYXRlZCBieXRlY29kZS4gKi8KKyAgICBfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoMSwgMCk7CisKKyAgICBjb2RlID0gUHlfQ29tcGlsZVN0cmluZ0V4RmxhZ3ModGV4dCwgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXA+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfZmlsZV9pbnB1dCwgTlVMTCwgMCk7CisgICAgaWYgKGNvZGUgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBtYXJzaGFsbGVkID0gUHlNYXJzaGFsX1dyaXRlT2JqZWN0VG9TdHJpbmcoY29kZSwgUHlfTUFSU0hBTF9WRVJTSU9OKTsKKyAgICBQeV9ERUNSRUYoY29kZSk7CisgICAgaWYgKG1hcnNoYWxsZWQgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrRXhhY3QobWFyc2hhbGxlZCkpOworICAgIGRhdGEgPSAodW5zaWduZWQgY2hhciAqKSBQeUJ5dGVzX0FTX1NUUklORyhtYXJzaGFsbGVkKTsKKyAgICBkYXRhX3NpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKG1hcnNoYWxsZWQpOworCisgICAgLyogT3BlbiB0aGUgZmlsZSBpbiB0ZXh0IG1vZGUuIFRoZSBoZyBjaGVja291dCBzaG91bGQgYmUgdXNpbmcgdGhlIGVvbCBleHRlbnNpb24sCisgICAgICAgd2hpY2ggaW4gdHVybiBzaG91bGQgY2F1c2UgdGhlIEVPTCBzdHlsZSBtYXRjaCB0aGUgQyBsaWJyYXJ5J3MgdGV4dCBtb2RlICovCisgICAgb3V0ZmlsZSA9IGZvcGVuKG91dHBhdGgsICJ3Iik7CisgICAgaWYgKG91dGZpbGUgPT0gTlVMTCkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNhbm5vdCBvcGVuICclcycgZm9yIHdyaXRpbmdcbiIsIG91dHBhdGgpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgZnByaW50ZihvdXRmaWxlLCAiJXNcbiIsIGhlYWRlcik7CisgICAgZnByaW50ZihvdXRmaWxlLCAidW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliW10gPSB7XG4iKTsKKyAgICBmb3IgKG4gPSAwOyBuIDwgZGF0YV9zaXplOyBuICs9IDE2KSB7CisgICAgICAgIHNpemVfdCBpLCBlbmQgPSBQeV9NSU4obiArIDE2LCBkYXRhX3NpemUpOworICAgICAgICBmcHJpbnRmKG91dGZpbGUsICIgICAgIik7CisgICAgICAgIGZvciAoaSA9IG47IGkgPCBlbmQ7IGkrKykgeworICAgICAgICAgICAgZnByaW50ZihvdXRmaWxlLCAiJWQsIiwgKHVuc2lnbmVkIGludCkgZGF0YVtpXSk7CisgICAgICAgIH0KKyAgICAgICAgZnByaW50ZihvdXRmaWxlLCAiXG4iKTsKKyAgICB9CisgICAgZnByaW50ZihvdXRmaWxlLCAifTtcbiIpOworCisgICAgUHlfREVDUkVGKG1hcnNoYWxsZWQpOworCisgICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoaW5maWxlKQorICAgICAgICBmY2xvc2UoaW5maWxlKTsKKyAgICBpZiAob3V0ZmlsZSkgeworICAgICAgICBpZiAoZmVycm9yKG91dGZpbGUpKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImVycm9yIHdoZW4gd3JpdGluZyB0byAnJXMnXG4iLCBvdXRwYXRoKTsKKyAgICAgICAgICAgIGZjbG9zZShvdXRmaWxlKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGZjbG9zZShvdXRmaWxlKTsKKyAgICB9CisgICAgcmV0dXJuIDA7CisKK2Vycm9yOgorICAgIFB5RXJyX1ByaW50KCk7CisgICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoaW5maWxlKQorICAgICAgICBmY2xvc2UoaW5maWxlKTsKKyAgICBpZiAob3V0ZmlsZSkKKyAgICAgICAgZmNsb3NlKG91dGZpbGUpOworICAgIHJldHVybiAxOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMgYi9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYwppbmRleCBhMGVhM2FiLi41N2RmYmEwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYworKysgYi9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYwpAQCAtMTU1LDQ0ICsxNTUsOCBAQAogICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KIH07CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wYXJ0aWFsX2dldF9kaWN0KHBhcnRpYWxvYmplY3QgKnB0bykKLXsKLSAgICBpZiAocHRvLT5kaWN0ID09IE5VTEwpIHsKLSAgICAgICAgcHRvLT5kaWN0ID0gUHlEaWN0X05ldygpOwotICAgICAgICBpZiAocHRvLT5kaWN0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfSU5DUkVGKHB0by0+ZGljdCk7Ci0gICAgcmV0dXJuIHB0by0+ZGljdDsKLX0KLQotc3RhdGljIGludAotcGFydGlhbF9zZXRfZGljdChwYXJ0aWFsb2JqZWN0ICpwdG8sIFB5T2JqZWN0ICp2YWx1ZSkKLXsKLSAgICBQeU9iamVjdCAqdG1wOwotCi0gICAgLyogSXQgaXMgaWxsZWdhbCB0byBkZWwgcC5fX2RpY3RfXyAqLwotICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiYSBwYXJ0aWFsIG9iamVjdCdzIGRpY3Rpb25hcnkgbWF5IG5vdCBiZSBkZWxldGVkIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgLyogQ2FuIG9ubHkgc2V0IF9fZGljdF9fIHRvIGEgZGljdGlvbmFyeSAqLwotICAgIGlmICghUHlEaWN0X0NoZWNrKHZhbHVlKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInNldHRpbmcgcGFydGlhbCBvYmplY3QncyBkaWN0aW9uYXJ5IHRvIGEgbm9uLWRpY3QiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICB0bXAgPSBwdG8tPmRpY3Q7Ci0gICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBwdG8tPmRpY3QgPSB2YWx1ZTsKLSAgICBQeV9YREVDUkVGKHRtcCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBQeUdldFNldERlZiBwYXJ0aWFsX2dldHNldGxpc3RbXSA9IHsKLSAgICB7Il9fZGljdF9fIiwgKGdldHRlcilwYXJ0aWFsX2dldF9kaWN0LCAoc2V0dGVyKXBhcnRpYWxfc2V0X2RpY3R9LAorICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3R9LAogICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLwogfTsKIApAQCAtMzMwLDYgKzI5NCwxNzYgQEAKIH07CiAKIAorLyogY21wX3RvX2tleSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKmNtcDsKKyAgICBQeU9iamVjdCAqb2JqZWN0OworfSBrZXlvYmplY3Q7CisKK3N0YXRpYyB2b2lkCitrZXlvYmplY3RfZGVhbGxvYyhrZXlvYmplY3QgKmtvKQoreworICAgIFB5X0RFQ1JFRihrby0+Y21wKTsKKyAgICBQeV9YREVDUkVGKGtvLT5vYmplY3QpOworICAgIFB5T2JqZWN0X0ZSRUUoa28pOworfQorCitzdGF0aWMgaW50CitrZXlvYmplY3RfdHJhdmVyc2Uoa2V5b2JqZWN0ICprbywgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoa28tPmNtcCk7CisgICAgaWYgKGtvLT5vYmplY3QpCisgICAgICAgIFB5X1ZJU0lUKGtvLT5vYmplY3QpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitrZXlvYmplY3RfY2xlYXIoa2V5b2JqZWN0ICprbykKK3sKKyAgICBQeV9DTEVBUihrby0+Y21wKTsKKyAgICBpZiAoa28tPm9iamVjdCkKKyAgICAgICAgUHlfQ0xFQVIoa28tPm9iamVjdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU1lbWJlckRlZiBrZXlvYmplY3RfbWVtYmVyc1tdID0geworICAgIHsib2JqIiwgVF9PQkpFQ1QsCisgICAgIG9mZnNldG9mKGtleW9iamVjdCwgb2JqZWN0KSwgMCwKKyAgICAgUHlEb2NfU1RSKCJWYWx1ZSB3cmFwcGVkIGJ5IGEga2V5IGZ1bmN0aW9uLiIpfSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitrZXlvYmplY3RfY2FsbChrZXlvYmplY3QgKmtvLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpOworCitzdGF0aWMgUHlPYmplY3QgKgora2V5b2JqZWN0X3JpY2hjb21wYXJlKFB5T2JqZWN0ICprbywgUHlPYmplY3QgKm90aGVyLCBpbnQgb3ApOworCitzdGF0aWMgUHlUeXBlT2JqZWN0IGtleW9iamVjdF90eXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImZ1bmN0b29scy5LZXlXcmFwcGVyIiwgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihrZXlvYmplY3QpLCAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWtleW9iamVjdF9kZWFsbG9jLCAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgICh0ZXJuYXJ5ZnVuYylrZXlvYmplY3RfY2FsbCwgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWtleW9iamVjdF90cmF2ZXJzZSwgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KWtleW9iamVjdF9jbGVhciwgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAga2V5b2JqZWN0X3JpY2hjb21wYXJlLCAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBrZXlvYmplY3RfbWVtYmVycywgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCit9OworCitzdGF0aWMgUHlPYmplY3QgKgora2V5b2JqZWN0X2NhbGwoa2V5b2JqZWN0ICprbywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpvYmplY3Q7CisgICAga2V5b2JqZWN0ICpyZXN1bHQ7CisgICAgc3RhdGljIGNoYXIgKmt3YXJnc1tdID0geyJvYmoiLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPOksiLCBrd2FyZ3MsICZvYmplY3QpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSBQeU9iamVjdF9OZXcoa2V5b2JqZWN0LCAma2V5b2JqZWN0X3R5cGUpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoa28tPmNtcCk7CisgICAgcmVzdWx0LT5jbXAgPSBrby0+Y21wOworICAgIFB5X0lOQ1JFRihvYmplY3QpOworICAgIHJlc3VsdC0+b2JqZWN0ID0gb2JqZWN0OworICAgIHJldHVybiAoUHlPYmplY3QgKilyZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitrZXlvYmplY3RfcmljaGNvbXBhcmUoUHlPYmplY3QgKmtvLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIFB5T2JqZWN0ICphcmdzOworICAgIFB5T2JqZWN0ICp4OworICAgIFB5T2JqZWN0ICp5OworICAgIFB5T2JqZWN0ICpjb21wYXJlOworICAgIFB5T2JqZWN0ICphbnN3ZXI7CisgICAgc3RhdGljIFB5T2JqZWN0ICp6ZXJvOworCisgICAgaWYgKHplcm8gPT0gTlVMTCkgeworICAgICAgICB6ZXJvID0gUHlMb25nX0Zyb21Mb25nKDApOworICAgICAgICBpZiAoIXplcm8pCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlfVFlQRShvdGhlcikgIT0gJmtleW9iamVjdF90eXBlKXsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIm90aGVyIGFyZ3VtZW50IG11c3QgYmUgSyBpbnN0YW5jZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgY29tcGFyZSA9ICgoa2V5b2JqZWN0ICopIGtvKS0+Y21wOworICAgIGFzc2VydChjb21wYXJlICE9IE5VTEwpOworICAgIHggPSAoKGtleW9iamVjdCAqKSBrbyktPm9iamVjdDsKKyAgICB5ID0gKChrZXlvYmplY3QgKikgb3RoZXIpLT5vYmplY3Q7CisgICAgaWYgKCF4IHx8ICF5KXsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCAib2JqZWN0Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIENhbGwgdGhlIHVzZXIncyBjb21wYXJpc29uIGZ1bmN0aW9uIGFuZCB0cmFuc2xhdGUgdGhlIDMtd2F5CisgICAgICogcmVzdWx0IGludG8gdHJ1ZSBvciBmYWxzZSAob3IgZXJyb3IpLgorICAgICAqLworICAgIGFyZ3MgPSBQeVR1cGxlX05ldygyKTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoeCk7CisgICAgUHlfSU5DUkVGKHkpOworICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgeCk7CisgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAxLCB5KTsKKyAgICByZXMgPSBQeU9iamVjdF9DYWxsKGNvbXBhcmUsIGFyZ3MsIE5VTEwpOworICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGFuc3dlciA9IFB5T2JqZWN0X1JpY2hDb21wYXJlKHJlcywgemVybywgb3ApOworICAgIFB5X0RFQ1JFRihyZXMpOworICAgIHJldHVybiBhbnN3ZXI7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmdW5jdG9vbHNfY21wX3RvX2tleShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpjbXA7CisgICAgc3RhdGljIGNoYXIgKmt3YXJnc1tdID0geyJteWNtcCIsIE5VTEx9OworICAgIGtleW9iamVjdCAqb2JqZWN0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk86Y21wX3RvX2tleSIsIGt3YXJncywgJmNtcCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG9iamVjdCA9IFB5T2JqZWN0X05ldyhrZXlvYmplY3QsICZrZXlvYmplY3RfdHlwZSk7CisgICAgaWYgKCFvYmplY3QpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRihjbXApOworICAgIG9iamVjdC0+Y21wID0gY21wOworICAgIG9iamVjdC0+b2JqZWN0ID0gTlVMTDsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopb2JqZWN0OworfQorCitQeURvY19TVFJWQVIoZnVuY3Rvb2xzX2NtcF90b19rZXlfZG9jLAorIkNvbnZlcnQgYSBjbXA9IGZ1bmN0aW9uIGludG8gYSBrZXk9IGZ1bmN0aW9uLiIpOworCiAvKiByZWR1Y2UgKHVzZWQgdG8gYmUgYSBidWlsdGluKSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQxMyw2ICs1NDcsOCBAQAogCiBzdGF0aWMgUHlNZXRob2REZWYgbW9kdWxlX21ldGhvZHNbXSA9IHsKICAgICB7InJlZHVjZSIsICAgICAgICAgIGZ1bmN0b29sc19yZWR1Y2UsICAgICBNRVRIX1ZBUkFSR1MsIGZ1bmN0b29sc19yZWR1Y2VfZG9jfSwKKyAgICB7ImNtcF90b19rZXkiLCAgICAgIChQeUNGdW5jdGlvbilmdW5jdG9vbHNfY21wX3RvX2tleSwKKyAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgZnVuY3Rvb2xzX2NtcF90b19rZXlfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZ2VzdGFsdC5jIGIvTW9kdWxlcy9fZ2VzdGFsdC5jCmluZGV4IGE0NTc4MGYuLmNkMzA2ODMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2dlc3RhbHQuYworKysgYi9Nb2R1bGVzL19nZXN0YWx0LmMKQEAgLTMzLDcgKzMzLDcgQEAKIGNvbnZlcnRfdG9fT1NUeXBlKFB5T2JqZWN0ICp2LCBPU1R5cGUgKnByKQogewogICAgIHVpbnQzMl90IHRtcDsKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh2KSB8fCBQeVVuaWNvZGVfR2V0U2l6ZSh2KSAhPSA0KSB7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodikgfHwgUHlVbmljb2RlX0dldExlbmd0aCh2KSAhPSA0KSB7CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgIk9TVHlwZSBhcmcgbXVzdCBiZSBzdHJpbmcgb2YgNCBjaGFycyIpOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faGFzaG9wZW5zc2wuYyBiL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMKaW5kZXggOGJjZjcxZC4uM2FiMWMwYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faGFzaG9wZW5zc2wuYworKysgYi9Nb2R1bGVzL19oYXNob3BlbnNzbC5jCkBAIC0yMDEsMTMgKzIwMSwxMSBAQAogCiAgICAgLyogTWFrZSBoZXggdmVyc2lvbiBvZiB0aGUgZGlnZXN0ICovCiAgICAgZm9yKGk9aj0wOyBpPGRpZ2VzdF9zaXplOyBpKyspIHsKLSAgICAgICAgY2hhciBjOworICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldID4+IDQpICYgMHhmOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICB9CiAgICAgcmV0dmFsID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKGhleF9kaWdlc3QsIGRpZ2VzdF9zaXplICogMik7CiAgICAgUHlNZW1fRnJlZShoZXhfZGlnZXN0KTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2hlYXBxbW9kdWxlLmMgYi9Nb2R1bGVzL19oZWFwcW1vZHVsZS5jCmluZGV4IGJlZTYxZGQuLmYzNzdlOWMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2hlYXBxbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9faGVhcHFtb2R1bGUuYwpAQCAtMTQ2LDcgKzE0Niw3IEBACiB9CiAKIFB5RG9jX1NUUlZBUihoZWFwcHVzaF9kb2MsCi0iUHVzaCBpdGVtIG9udG8gaGVhcCwgbWFpbnRhaW5pbmcgdGhlIGhlYXAgaW52YXJpYW50LiIpOworImhlYXBwdXNoKGhlYXAsIGl0ZW0pIC0+IE5vbmUuIFB1c2ggaXRlbSBvbnRvIGhlYXAsIG1haW50YWluaW5nIHRoZSBoZWFwIGludmFyaWFudC4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGhlYXBwb3AoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpoZWFwKQpAQCAtMjE0LDcgKzIxNCw3IEBACiB9CiAKIFB5RG9jX1NUUlZBUihoZWFwcmVwbGFjZV9kb2MsCi0iUG9wIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQgc21hbGxlc3QgdmFsdWUsIGFuZCBhZGQgdGhlIG5ldyBpdGVtLlxuXAorImhlYXByZXBsYWNlKGhlYXAsIGl0ZW0pIC0+IHZhbHVlLiBQb3AgYW5kIHJldHVybiB0aGUgY3VycmVudCBzbWFsbGVzdCB2YWx1ZSwgYW5kIGFkZCB0aGUgbmV3IGl0ZW0uXG5cCiBcblwKIFRoaXMgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBoZWFwcG9wKCkgZm9sbG93ZWQgYnkgaGVhcHB1c2goKSwgYW5kIGNhbiBiZVxuXAogbW9yZSBhcHByb3ByaWF0ZSB3aGVuIHVzaW5nIGEgZml4ZWQtc2l6ZSBoZWFwLiAgTm90ZSB0aGF0IHRoZSB2YWx1ZVxuXApAQCAtMjYxLDcgKzI2MSw3IEBACiB9CiAKIFB5RG9jX1NUUlZBUihoZWFwcHVzaHBvcF9kb2MsCi0iUHVzaCBpdGVtIG9uIHRoZSBoZWFwLCB0aGVuIHBvcCBhbmQgcmV0dXJuIHRoZSBzbWFsbGVzdCBpdGVtXG5cCisiaGVhcHB1c2hwb3AoaGVhcCwgaXRlbSkgLT4gdmFsdWUuIFB1c2ggaXRlbSBvbiB0aGUgaGVhcCwgdGhlbiBwb3AgYW5kIHJldHVybiB0aGUgc21hbGxlc3QgaXRlbVxuXAogZnJvbSB0aGUgaGVhcC4gVGhlIGNvbWJpbmVkIGFjdGlvbiBydW5zIG1vcmUgZWZmaWNpZW50bHkgdGhhblxuXAogaGVhcHB1c2goKSBmb2xsb3dlZCBieSBhIHNlcGFyYXRlIGNhbGwgdG8gaGVhcHBvcCgpLiIpOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuYyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCmluZGV4IGZlOTFhNTkuLmI1Y2QxNzYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCkBAIC0xLDkgKzEsOSBAQAogLyoKICAgICBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IEkvTyBsaWIgYXMgZGVmaW5lZCBieSBQRVAgMzExNiAtICJOZXcgSS9PIgotICAgIAorCiAgICAgQ2xhc3NlcyBkZWZpbmVkIGhlcmU6IFVuc3VwcG9ydGVkT3BlcmF0aW9uLCBCbG9ja2luZ0lPRXJyb3IuCiAgICAgRnVuY3Rpb25zIGRlZmluZWQgaGVyZTogb3BlbigpLgotICAgIAorCiAgICAgTW9zdGx5IHdyaXR0ZW4gYnkgQW1hdXJ5IEZvcmdlb3QgZCdBcmMKICovCiAKQEAgLTM2LDYgKzM2LDcgQEAKIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZDsKIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZDE7CiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWRhYmxlOworUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkYWxsOwogUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkaW50bzsKIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZGxpbmU7CiBQeU9iamVjdCAqX1B5SU9fc3RyX3Jlc2V0OwpAQCAtOTAsOTQgKzkxLDExIEBACiAMCiAKIC8qCi0gKiBCbG9ja2luZ0lPRXJyb3IgZXh0ZW5kcyBJT0Vycm9yCi0gKi8KLQotc3RhdGljIGludAotYmxvY2tpbmdpb2Vycm9yX2luaXQoUHlCbG9ja2luZ0lPRXJyb3JPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLAotICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3ZHMpCi17Ci0gICAgUHlPYmplY3QgKm15ZXJybm8gPSBOVUxMLCAqc3RyZXJyb3IgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpiYXNlYXJncyA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCB3cml0dGVuID0gMDsKLQotICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKLQotICAgIHNlbGYtPndyaXR0ZW4gPSAwOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT098bjpCbG9ja2luZ0lPRXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbXllcnJubywgJnN0cmVycm9yLCAmd3JpdHRlbikpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIGJhc2VhcmdzID0gUHlUdXBsZV9QYWNrKDIsIG15ZXJybm8sIHN0cmVycm9yKTsKLSAgICBpZiAoYmFzZWFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIC8qIFRoaXMgd2lsbCB0YWtlIGNhcmUgb2YgaW5pdGlhbGl6aW5nIG9mIG15ZXJybm8gYW5kIHN0cmVycm9yIG1lbWJlcnMgKi8KLSAgICBpZiAoKChQeVR5cGVPYmplY3QgKilQeUV4Y19JT0Vycm9yKS0+dHBfaW5pdCgKLSAgICAgICAgICAgICAgICAoUHlPYmplY3QgKilzZWxmLCBiYXNlYXJncywga3dkcykgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKGJhc2VhcmdzKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBQeV9ERUNSRUYoYmFzZWFyZ3MpOwotCi0gICAgc2VsZi0+d3JpdHRlbiA9IHdyaXR0ZW47Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBQeU1lbWJlckRlZiBibG9ja2luZ2lvZXJyb3JfbWVtYmVyc1tdID0gewotICAgIHsiY2hhcmFjdGVyc193cml0dGVuIiwgVF9QWVNTSVpFVCwgb2Zmc2V0b2YoUHlCbG9ja2luZ0lPRXJyb3JPYmplY3QsIHdyaXR0ZW4pLCAwfSwKLSAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCi19OwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IF9QeUV4Y19CbG9ja2luZ0lPRXJyb3IgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIkJsb2NraW5nSU9FcnJvciIsIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKFB5QmxvY2tpbmdJT0Vycm9yT2JqZWN0KSwgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZWFsbG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2ggKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLCAvKnRwX2ZsYWdzKi8KLSAgICBQeURvY19TVFIoIkV4Y2VwdGlvbiByYWlzZWQgd2hlbiBJL08gd291bGQgYmxvY2sgIgotICAgICAgICAgICAgICAib24gYSBub24tYmxvY2tpbmcgSS9PIHN0cmVhbSIpLCAvKiB0cF9kb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgYmxvY2tpbmdpb2Vycm9yX21lbWJlcnMsICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAoaW5pdHByb2MpYmxvY2tpbmdpb2Vycm9yX2luaXQsIC8qIHRwX2luaXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCi19OwotUHlPYmplY3QgKlB5RXhjX0Jsb2NraW5nSU9FcnJvciA9IChQeU9iamVjdCAqKSZfUHlFeGNfQmxvY2tpbmdJT0Vycm9yOwotDAotCi0vKgogICogVGhlIG1haW4gb3BlbigpIGZ1bmN0aW9uCiAgKi8KIFB5RG9jX1NUUlZBUihvcGVuX2RvYywKICJvcGVuKGZpbGUsIG1vZGU9J3InLCBidWZmZXJpbmc9LTEsIGVuY29kaW5nPU5vbmUsXG4iCi0iICAgICBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUpIC0+IGZpbGUgb2JqZWN0XG4iCisiICAgICBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUsIG9wZW5lcj1Ob25lKSAtPiBmaWxlIG9iamVjdFxuIgogIlxuIgogIk9wZW4gZmlsZSBhbmQgcmV0dXJuIGEgc3RyZWFtLiAgUmFpc2UgSU9FcnJvciB1cG9uIGZhaWx1cmUuXG4iCiAiXG4iCkBAIC0xOTAsMTggKzEwOCwyMCBAQAogIm1vZGUgaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBtb2RlIGluIHdoaWNoIHRoZSBmaWxlXG4iCiAiaXMgb3BlbmVkLiBJdCBkZWZhdWx0cyB0byAncicgd2hpY2ggbWVhbnMgb3BlbiBmb3IgcmVhZGluZyBpbiB0ZXh0XG4iCiAibW9kZS4gIE90aGVyIGNvbW1vbiB2YWx1ZXMgYXJlICd3JyBmb3Igd3JpdGluZyAodHJ1bmNhdGluZyB0aGUgZmlsZSBpZlxuIgotIml0IGFscmVhZHkgZXhpc3RzKSwgYW5kICdhJyBmb3IgYXBwZW5kaW5nICh3aGljaCBvbiBzb21lIFVuaXggc3lzdGVtcyxcbiIKLSJtZWFucyB0aGF0IGFsbCB3cml0ZXMgYXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgcmVnYXJkbGVzcyBvZiB0aGVcbiIKLSJjdXJyZW50IHNlZWsgcG9zaXRpb24pLiBJbiB0ZXh0IG1vZGUsIGlmIGVuY29kaW5nIGlzIG5vdCBzcGVjaWZpZWQgdGhlXG4iCi0iZW5jb2RpbmcgdXNlZCBpcyBwbGF0Zm9ybSBkZXBlbmRlbnQuIChGb3IgcmVhZGluZyBhbmQgd3JpdGluZyByYXdcbiIKLSJieXRlcyB1c2UgYmluYXJ5IG1vZGUgYW5kIGxlYXZlIGVuY29kaW5nIHVuc3BlY2lmaWVkLikgVGhlIGF2YWlsYWJsZVxuIgotIm1vZGVzIGFyZTpcbiIKKyJpdCBhbHJlYWR5IGV4aXN0cyksICd4JyBmb3IgY3JlYXRpbmcgYW5kIHdyaXRpbmcgdG8gYSBuZXcgZmlsZSwgYW5kXG4iCisiJ2EnIGZvciBhcHBlbmRpbmcgKHdoaWNoIG9uIHNvbWUgVW5peCBzeXN0ZW1zLCBtZWFucyB0aGF0IGFsbCB3cml0ZXNcbiIKKyJhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IHNlZWsgcG9zaXRpb24pLlxuIgorIkluIHRleHQgbW9kZSwgaWYgZW5jb2RpbmcgaXMgbm90IHNwZWNpZmllZCB0aGUgZW5jb2RpbmcgdXNlZCBpcyBwbGF0Zm9ybVxuIgorImRlcGVuZGVudDogbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSBpcyBjYWxsZWQgdG8gZ2V0IHRoZVxuIgorImN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLiAoRm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgcmF3IGJ5dGVzIHVzZSBiaW5hcnlcbiIKKyJtb2RlIGFuZCBsZWF2ZSBlbmNvZGluZyB1bnNwZWNpZmllZC4pIFRoZSBhdmFpbGFibGUgbW9kZXMgYXJlOlxuIgogIlxuIgogIj09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIKICJDaGFyYWN0ZXIgTWVhbmluZ1xuIgogIi0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIKICIncicgICAgICAgb3BlbiBmb3IgcmVhZGluZyAoZGVmYXVsdClcbiIKICIndycgICAgICAgb3BlbiBmb3Igd3JpdGluZywgdHJ1bmNhdGluZyB0aGUgZmlsZSBmaXJzdFxuIgorIid4JyAgICAgICBjcmVhdGUgYSBuZXcgZmlsZSBhbmQgb3BlbiBpdCBmb3Igd3JpdGluZ1xuIgogIidhJyAgICAgICBvcGVuIGZvciB3cml0aW5nLCBhcHBlbmRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSBpZiBpdCBleGlzdHNcbiIKICInYicgICAgICAgYmluYXJ5IG1vZGVcbiIKICIndCcgICAgICAgdGV4dCBtb2RlIChkZWZhdWx0KVxuIgpAQCAtMjEyLDcgKzEzMiw4IEBACiAiXG4iCiAiVGhlIGRlZmF1bHQgbW9kZSBpcyAncnQnIChvcGVuIGZvciByZWFkaW5nIHRleHQpLiBGb3IgYmluYXJ5IHJhbmRvbVxuIgogImFjY2VzcywgdGhlIG1vZGUgJ3crYicgb3BlbnMgYW5kIHRydW5jYXRlcyB0aGUgZmlsZSB0byAwIGJ5dGVzLCB3aGlsZVxuIgotIidyK2InIG9wZW5zIHRoZSBmaWxlIHdpdGhvdXQgdHJ1bmNhdGlvbi5cbiIKKyIncitiJyBvcGVucyB0aGUgZmlsZSB3aXRob3V0IHRydW5jYXRpb24uIFRoZSAneCcgbW9kZSBpbXBsaWVzICd3JyBhbmRcbiIKKyJyYWlzZXMgYW4gYEZpbGVFeGlzdHNFcnJvcmAgaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMuXG4iCiAiXG4iCiAiUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBmaWxlcyBvcGVuZWQgaW4gYmluYXJ5IGFuZCB0ZXh0IG1vZGVzLFxuIgogImV2ZW4gd2hlbiB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtIGRvZXNuJ3QuIEZpbGVzIG9wZW5lZCBpblxuIgpAQCAtMjcyLDYgKzE5MywxMiBAQAogIndoZW4gdGhlIGZpbGUgaXMgY2xvc2VkLiBUaGlzIGRvZXMgbm90IHdvcmsgd2hlbiBhIGZpbGUgbmFtZSBpcyBnaXZlblxuIgogImFuZCBtdXN0IGJlIFRydWUgaW4gdGhhdCBjYXNlLlxuIgogIlxuIgorIkEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieSBwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZVxuIgorInVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZmlsZSBvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieVxuIgorImNhbGxpbmcgKm9wZW5lciogd2l0aCAoKmZpbGUqLCAqZmxhZ3MqKS4gKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlblxuIgorImZpbGUgZGVzY3JpcHRvciAocGFzc2luZyBvcy5vcGVuIGFzICpvcGVuZXIqIHJlc3VsdHMgaW4gZnVuY3Rpb25hbGl0eVxuIgorInNpbWlsYXIgdG8gcGFzc2luZyBOb25lKS5cbiIKKyJcbiIKICJvcGVuKCkgcmV0dXJucyBhIGZpbGUgb2JqZWN0IHdob3NlIHR5cGUgZGVwZW5kcyBvbiB0aGUgbW9kZSwgYW5kXG4iCiAidGhyb3VnaCB3aGljaCB0aGUgc3RhbmRhcmQgZmlsZSBvcGVyYXRpb25zIHN1Y2ggYXMgcmVhZGluZyBhbmQgd3JpdGluZ1xuIgogImFyZSBwZXJmb3JtZWQuIFdoZW4gb3BlbigpIGlzIHVzZWQgdG8gb3BlbiBhIGZpbGUgaW4gYSB0ZXh0IG1vZGUgKCd3JyxcbiIKQEAgLTI5MiwyNiArMjE5LDI5IEBACiB7CiAgICAgY2hhciAqa3dsaXN0W10gPSB7ImZpbGUiLCAibW9kZSIsICJidWZmZXJpbmciLAogICAgICAgICAgICAgICAgICAgICAgICJlbmNvZGluZyIsICJlcnJvcnMiLCAibmV3bGluZSIsCi0gICAgICAgICAgICAgICAgICAgICAgImNsb3NlZmQiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqZmlsZTsKKyAgICAgICAgICAgICAgICAgICAgICAiY2xvc2VmZCIsICJvcGVuZXIiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqZmlsZSwgKm9wZW5lciA9IFB5X05vbmU7CiAgICAgY2hhciAqbW9kZSA9ICJyIjsKICAgICBpbnQgYnVmZmVyaW5nID0gLTEsIGNsb3NlZmQgPSAxOwogICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTCwgKmVycm9ycyA9IE5VTEwsICpuZXdsaW5lID0gTlVMTDsKICAgICB1bnNpZ25lZCBpOwogCi0gICAgaW50IHJlYWRpbmcgPSAwLCB3cml0aW5nID0gMCwgYXBwZW5kaW5nID0gMCwgdXBkYXRpbmcgPSAwOworICAgIGludCBjcmVhdGluZyA9IDAsIHJlYWRpbmcgPSAwLCB3cml0aW5nID0gMCwgYXBwZW5kaW5nID0gMCwgdXBkYXRpbmcgPSAwOwogICAgIGludCB0ZXh0ID0gMCwgYmluYXJ5ID0gMCwgdW5pdmVyc2FsID0gMDsKIAotICAgIGNoYXIgcmF3bW9kZVs1XSwgKm07Ci0gICAgaW50IGxpbmVfYnVmZmVyaW5nOwotICAgIGxvbmcgaXNhdHR5OworICAgIGNoYXIgcmF3bW9kZVs2XSwgKm07CisgICAgaW50IGxpbmVfYnVmZmVyaW5nLCBpc2F0dHk7CiAKICAgICBQeU9iamVjdCAqcmF3LCAqbW9kZW9iaiA9IE5VTEwsICpidWZmZXIgPSBOVUxMLCAqd3JhcHBlciA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xzaXp6emk6b3BlbiIsIGt3bGlzdCwKKyAgICBfUHlfSURFTlRJRklFUihpc2F0dHkpOworICAgIF9QeV9JREVOVElGSUVSKGZpbGVubyk7CisgICAgX1B5X0lERU5USUZJRVIobW9kZSk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xzaXp6emlPOm9wZW4iLCBrd2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpbGUsICZtb2RlLCAmYnVmZmVyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlbmNvZGluZywgJmVycm9ycywgJm5ld2xpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNsb3NlZmQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNsb3NlZmQsICZvcGVuZXIpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMzI3LDYgKzI1Nyw5IEBACiAgICAgICAgIGNoYXIgYyA9IG1vZGVbaV07CiAKICAgICAgICAgc3dpdGNoIChjKSB7CisgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgY3JlYXRpbmcgPSAxOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ3InOgogICAgICAgICAgICAgcmVhZGluZyA9IDE7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM2Myw2ICsyOTYsNyBAQAogICAgIH0KIAogICAgIG0gPSByYXdtb2RlOworICAgIGlmIChjcmVhdGluZykgICoobSsrKSA9ICd4JzsKICAgICBpZiAocmVhZGluZykgICAqKG0rKykgPSAncic7CiAgICAgaWYgKHdyaXRpbmcpICAgKihtKyspID0gJ3cnOwogICAgIGlmIChhcHBlbmRpbmcpICoobSsrKSA9ICdhJzsKQEAgLTM4NSw5ICszMTksOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAocmVhZGluZyArIHdyaXRpbmcgKyBhcHBlbmRpbmcgPiAxKSB7CisgICAgaWYgKGNyZWF0aW5nICsgcmVhZGluZyArIHdyaXRpbmcgKyBhcHBlbmRpbmcgPiAxKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBleGFjdGx5IG9uZSBvZiByZWFkL3dyaXRlL2FwcGVuZCBtb2RlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIGV4YWN0bHkgb25lIG9mIGNyZWF0ZS9yZWFkL3dyaXRlL2FwcGVuZCBtb2RlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNDExLDcgKzM0NSw3IEBACiAKICAgICAvKiBDcmVhdGUgdGhlIFJhdyBmaWxlIHN0cmVhbSAqLwogICAgIHJhdyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QgKikmUHlGaWxlSU9fVHlwZSwKLQkJCQkiT3NpIiwgZmlsZSwgcmF3bW9kZSwgY2xvc2VmZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPc2lPIiwgZmlsZSwgcmF3bW9kZSwgY2xvc2VmZCwgb3BlbmVyKTsKICAgICBpZiAocmF3ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC00MjEsNyArMzU1LDcgQEAKIAogICAgIC8qIGJ1ZmZlcmluZyAqLwogICAgIHsKLSAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QocmF3LCAiaXNhdHR5IiwgTlVMTCk7CisgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJhdywgJlB5SWRfaXNhdHR5LCBOVUxMKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgaXNhdHR5ID0gUHlMb25nX0FzTG9uZyhyZXMpOwpAQCAtNDQyLDEyICszNzYsMTIgQEAKICNpZmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0JMS1NJWkUKICAgICAgICAgewogICAgICAgICAgICAgc3RydWN0IHN0YXQgc3Q7Ci0gICAgICAgICAgICBpbnQgZmlsZW5vOwotICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QocmF3LCAiZmlsZW5vIiwgTlVMTCk7CisgICAgICAgICAgICBsb25nIGZpbGVubzsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJhdywgJlB5SWRfZmlsZW5vLCBOVUxMKTsKICAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgICAgICAgICBmaWxlbm8gPSBfUHlMb25nX0FzSW50KHJlcyk7CisgICAgICAgICAgICBmaWxlbm8gPSBQeUxvbmdfQXNMb25nKHJlcyk7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgICAgIGlmIChmaWxlbm8gPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtNDgxLDcgKzQxNSw3IEBACiAKICAgICAgICAgaWYgKHVwZGF0aW5nKQogICAgICAgICAgICAgQnVmZmVyZWRfY2xhc3MgPSAoUHlPYmplY3QgKikmUHlCdWZmZXJlZFJhbmRvbV9UeXBlOwotICAgICAgICBlbHNlIGlmICh3cml0aW5nIHx8IGFwcGVuZGluZykKKyAgICAgICAgZWxzZSBpZiAoY3JlYXRpbmcgfHwgd3JpdGluZyB8fCBhcHBlbmRpbmcpCiAgICAgICAgICAgICBCdWZmZXJlZF9jbGFzcyA9IChQeU9iamVjdCAqKSZQeUJ1ZmZlcmVkV3JpdGVyX1R5cGU7CiAgICAgICAgIGVsc2UgaWYgKHJlYWRpbmcpCiAgICAgICAgICAgICBCdWZmZXJlZF9jbGFzcyA9IChQeU9iamVjdCAqKSZQeUJ1ZmZlcmVkUmVhZGVyX1R5cGU7CkBAIC01MTQsNyArNDQ4LDcgQEAKICAgICBpZiAod3JhcHBlciA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcod3JhcHBlciwgIm1vZGUiLCBtb2Rlb2JqKSA8IDApCisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQod3JhcHBlciwgJlB5SWRfbW9kZSwgbW9kZW9iaikgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIFB5X0RFQ1JFRihtb2Rlb2JqKTsKICAgICByZXR1cm4gd3JhcHBlcjsKQEAgLTU3Nyw3ICs1MTEsNyBAQAogCiAKIC8qIEJhc2ljYWxseSB0aGUgIm4iIGZvcm1hdCBjb2RlIHdpdGggdGhlIGFiaWxpdHkgdG8gdHVybiBOb25lIGludG8gLTEuICovCi1pbnQgCitpbnQKIF9QeUlPX0NvbnZlcnRTc2l6ZV90KFB5T2JqZWN0ICpvYmosIHZvaWQgKnJlc3VsdCkgewogICAgIFB5X3NzaXplX3QgbGltaXQ7CiAgICAgaWYgKG9iaiA9PSBQeV9Ob25lKSB7CkBAIC02MDQsNyArNTM4LDYgQEAKICAgICBfUHlJT19TdGF0ZSAqc3RhdGUgPSBJT19NT0RfU1RBVEUobW9kKTsKICAgICBpZiAoIXN0YXRlLT5pbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgUHlfVklTSVQoc3RhdGUtPm9zX21vZHVsZSk7CiAgICAgaWYgKHN0YXRlLT5sb2NhbGVfbW9kdWxlICE9IE5VTEwpIHsKICAgICAgICAgUHlfVklTSVQoc3RhdGUtPmxvY2FsZV9tb2R1bGUpOwogICAgIH0KQEAgLTYxOCw3ICs1NTEsNiBAQAogICAgIF9QeUlPX1N0YXRlICpzdGF0ZSA9IElPX01PRF9TVEFURShtb2QpOwogICAgIGlmICghc3RhdGUtPmluaXRpYWxpemVkKQogICAgICAgICByZXR1cm4gMDsKLSAgICBQeV9DTEVBUihzdGF0ZS0+b3NfbW9kdWxlKTsKICAgICBpZiAoc3RhdGUtPmxvY2FsZV9tb2R1bGUgIT0gTlVMTCkKICAgICAgICAgUHlfQ0xFQVIoc3RhdGUtPmxvY2FsZV9tb2R1bGUpOwogICAgIFB5X0NMRUFSKHN0YXRlLT51bnN1cHBvcnRlZF9vcGVyYXRpb24pOwpAQCAtNjYyLDExICs1OTQsNiBAQAogICAgIHN0YXRlID0gSU9fTU9EX1NUQVRFKG0pOwogICAgIHN0YXRlLT5pbml0aWFsaXplZCA9IDA7CiAKLSAgICAvKiBwdXQgb3MgaW4gdGhlIG1vZHVsZSBzdGF0ZSAqLwotICAgIHN0YXRlLT5vc19tb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIm9zIik7Ci0gICAgaWYgKHN0YXRlLT5vc19tb2R1bGUgPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsOwotCiAjZGVmaW5lIEFERF9UWVBFKHR5cGUsIG5hbWUpIFwKICAgICBpZiAoUHlUeXBlX1JlYWR5KHR5cGUpIDwgMCkgXAogICAgICAgICBnb3RvIGZhaWw7IFwKQEAgLTY5MSw5ICs2MTgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT51bnN1cHBvcnRlZF9vcGVyYXRpb24pIDwgMCkKICAgICAgICAgZ290byBmYWlsOwogCi0gICAgLyogQmxvY2tpbmdJT0Vycm9yICovCi0gICAgX1B5RXhjX0Jsb2NraW5nSU9FcnJvci50cF9iYXNlID0gKFB5VHlwZU9iamVjdCAqKSBQeUV4Y19JT0Vycm9yOwotICAgIEFERF9UWVBFKCZfUHlFeGNfQmxvY2tpbmdJT0Vycm9yLCAiQmxvY2tpbmdJT0Vycm9yIik7CisgICAgLyogQmxvY2tpbmdJT0Vycm9yLCBmb3IgY29tcGF0aWJpbGl0eSAqLworICAgIFB5X0lOQ1JFRihQeUV4Y19CbG9ja2luZ0lPRXJyb3IpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkJsb2NraW5nSU9FcnJvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikgUHlFeGNfQmxvY2tpbmdJT0Vycm9yKSA8IDApCisgICAgICAgIGdvdG8gZmFpbDsKIAogICAgIC8qIENvbmNyZXRlIGJhc2UgdHlwZXMgb2YgdGhlIElPIEFCQ3MuCiAgICAgICAgKHRoZSBBQkNzIHRoZW1zZWx2ZXMgYXJlIGRlY2xhcmVkIHRocm91Z2ggaW5oZXJpdGFuY2UgaW4gaW8ucHkpCkBAIC03NTksNiArNjg4LDcgQEAKICAgICBBRERfSU5URVJORUQocmVhZCkKICAgICBBRERfSU5URVJORUQocmVhZDEpCiAgICAgQUREX0lOVEVSTkVEKHJlYWRhYmxlKQorICAgIEFERF9JTlRFUk5FRChyZWFkYWxsKQogICAgIEFERF9JTlRFUk5FRChyZWFkaW50bykKICAgICBBRERfSU5URVJORUQocmVhZGxpbmUpCiAgICAgQUREX0lOVEVSTkVEKHJlc2V0KQpAQCAtNzg5LDcgKzcxOSw2IEBACiAgICAgcmV0dXJuIG07CiAKICAgZmFpbDoKLSAgICBQeV9YREVDUkVGKHN0YXRlLT5vc19tb2R1bGUpOwogICAgIFB5X1hERUNSRUYoc3RhdGUtPnVuc3VwcG9ydGVkX29wZXJhdGlvbik7CiAgICAgUHlfREVDUkVGKG0pOwogICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmggYi9Nb2R1bGVzL19pby9faW9tb2R1bGUuaAppbmRleCBhYThiZmQ2Li4wZmU5MGEzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuaAorKysgYi9Nb2R1bGVzL19pby9faW9tb2R1bGUuaApAQCAtNTAsMTIgKzUwLDEyIEBACiAgICBgKmNvbnN1bWVkYC4KICAgIElmIG5vdCBmb3VuZCwgcmV0dXJucyAtMSBhbmQgc2V0cyBgKmNvbnN1bWVkYCB0byB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMKICAgIHdoaWNoIGNhbiBiZSBzYWZlbHkgcHV0IGFzaWRlIHVudGlsIGFub3RoZXIgc2VhcmNoLgotICAgCi0gICBOT1RFOiBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgYGVuZGAgbXVzdCBwb2ludCB0byBhIE5VTCBjaGFyYWN0ZXIgKCdcMCcpLiAKKworICAgTk9URTogZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIGBlbmRgIG11c3QgcG9pbnQgdG8gYSBOVUwgY2hhcmFjdGVyICgnXDAnKS4KICAgIE90aGVyd2lzZSwgdGhlIGZ1bmN0aW9uIHdpbGwgc2NhbiBmdXJ0aGVyIGFuZCByZXR1cm4gZ2FyYmFnZS4gKi8KIGV4dGVybiBQeV9zc2l6ZV90IF9QeUlPX2ZpbmRfbGluZV9lbmRpbmcoCiAgICAgaW50IHRyYW5zbGF0ZWQsIGludCB1bml2ZXJzYWwsIFB5T2JqZWN0ICpyZWFkbmwsCi0gICAgUHlfVU5JQ09ERSAqc3RhcnQsIFB5X1VOSUNPREUgKmVuZCwgUHlfc3NpemVfdCAqY29uc3VtZWQpOworICAgIGludCBraW5kLCBjaGFyICpzdGFydCwgY2hhciAqZW5kLCBQeV9zc2l6ZV90ICpjb25zdW1lZCk7CiAKIC8qIFJldHVybiAxIGlmIGFuIEVudmlyb25tZW50RXJyb3Igd2l0aCBlcnJubyA9PSBFSU5UUiBpcyBzZXQgKGFuZCB0aGVuCiAgICBjbGVhcnMgdGhlIGVycm9yIGluZGljYXRvciksIDAgb3RoZXJ3aXNlLgpAQCAtNjUsMTUgKzY1LDYgQEAKIAogI2RlZmluZSBERUZBVUxUX0JVRkZFUl9TSVpFICg4ICogMTAyNCkgIC8qIGJ5dGVzICovCiAKLXR5cGVkZWYgc3RydWN0IHsKLSAgICBQeUV4Y2VwdGlvbl9IRUFECi0gICAgUHlPYmplY3QgKm15ZXJybm87Ci0gICAgUHlPYmplY3QgKnN0cmVycm9yOwotICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsgLyogTm90IHVzZWQsIGJ1dCBwYXJ0IG9mIHRoZSBJT0Vycm9yIG9iamVjdCAqLwotICAgIFB5X3NzaXplX3Qgd3JpdHRlbjsKLX0gUHlCbG9ja2luZ0lPRXJyb3JPYmplY3Q7Ci1leHRlcm4gUHlPYmplY3QgKlB5RXhjX0Jsb2NraW5nSU9FcnJvcjsKLQogLyoKICAqIE9mZnNldCB0eXBlIGZvciBwb3NpdGlvbmluZy4KICAqLwpAQCAtMTM4LDcgKzEyOSw2IEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBpbnQgaW5pdGlhbGl6ZWQ7Ci0gICAgUHlPYmplY3QgKm9zX21vZHVsZTsKICAgICBQeU9iamVjdCAqbG9jYWxlX21vZHVsZTsKIAogICAgIFB5T2JqZWN0ICp1bnN1cHBvcnRlZF9vcGVyYXRpb247CkBAIC0xNjAsNiArMTUwLDcgQEAKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWQ7CiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkMTsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWRhYmxlOworZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZGFsbDsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWRpbnRvOwogZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZGxpbmU7CiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9yZXNldDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYyBiL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYwppbmRleCBhODI3OGQ0Li4yYjM5ZjY2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9idWZmZXJlZGlvLmMKKysrIGIvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jCkBAIC0xLDkgKzEsOSBAQAogLyoKICAgICBBbiBpbXBsZW1lbnRhdGlvbiBvZiBCdWZmZXJlZCBJL08gYXMgZGVmaW5lZCBieSBQRVAgMzExNiAtICJOZXcgSS9PIgotICAgIAorCiAgICAgQ2xhc3NlcyBkZWZpbmVkIGhlcmU6IEJ1ZmZlcmVkSU9CYXNlLCBCdWZmZXJlZFJlYWRlciwgQnVmZmVyZWRXcml0ZXIsCiAgICAgQnVmZmVyZWRSYW5kb20uCi0gICAgCisKICAgICBXcml0dGVuIGJ5IEFtYXVyeSBGb3JnZW90IGQnQXJjIGFuZCBBbnRvaW5lIFBpdHJvdQogKi8KIApAQCAtMTMsNiArMTMsMjAgQEAKICNpbmNsdWRlICJweXRocmVhZC5oIgogI2luY2x1ZGUgIl9pb21vZHVsZS5oIgogCitfUHlfSURFTlRJRklFUihjbG9zZSk7CitfUHlfSURFTlRJRklFUihfZGVhbGxvY193YXJuKTsKK19QeV9JREVOVElGSUVSKGZsdXNoKTsKK19QeV9JREVOVElGSUVSKGlzYXR0eSk7CitfUHlfSURFTlRJRklFUihtb2RlKTsKK19QeV9JREVOVElGSUVSKG5hbWUpOworX1B5X0lERU5USUZJRVIocGVlayk7CitfUHlfSURFTlRJRklFUihyZWFkKTsKK19QeV9JREVOVElGSUVSKHJlYWQxKTsKK19QeV9JREVOVElGSUVSKHJlYWRhYmxlKTsKK19QeV9JREVOVElGSUVSKHJlYWRpbnRvKTsKK19QeV9JREVOVElGSUVSKHdyaXRhYmxlKTsKK19QeV9JREVOVElGSUVSKHdyaXRlKTsKKwogLyoKICAqIEJ1ZmZlcmVkSU9CYXNlIGNsYXNzLCBpbmhlcml0cyBmcm9tIElPQmFzZS4KICAqLwpAQCAtMzgsMTIgKzUyLDEzIEBACiAgICAgUHlfYnVmZmVyIGJ1ZjsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqZGF0YTsKKyAgICBfUHlfSURFTlRJRklFUihyZWFkKTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidyo6cmVhZGludG8iLCAmYnVmKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBkYXRhID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLCAicmVhZCIsICJuIiwgYnVmLmxlbik7CisgICAgZGF0YSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfcmVhZCwgIm4iLCBidWYubGVuKTsKICAgICBpZiAoZGF0YSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCkBAIC0xOTgsNyArMjEzLDcgQEAKICAgICBpbnQgcmVhZGFibGU7CiAgICAgaW50IHdyaXRhYmxlOwogICAgIGludCBkZWFsbG9jYXRpbmc7Ci0gICAgCisKICAgICAvKiBUcnVlIGlmIHRoaXMgaXMgYSB2YW5pbGxhIEJ1ZmZlcmVkIG9iamVjdCAocmF0aGVyIHRoYW4gYSB1c2VyIGRlcml2ZWQKICAgICAgICBjbGFzcykgKmFuZCogdGhlIHJhdyBzdHJlYW0gaXMgYSB2YW5pbGxhIEZpbGVJTyBvYmplY3QuICovCiAgICAgaW50IGZhc3RfY2xvc2VkX2NoZWNrczsKQEAgLTIzNyw3ICsyNTIsNyBAQAogCiAvKgogICAgIEltcGxlbWVudGF0aW9uIG5vdGVzOgotICAgIAorCiAgICAgKiBCdWZmZXJlZFJlYWRlciwgQnVmZmVyZWRXcml0ZXIgYW5kIEJ1ZmZlcmVkUmFuZG9tIHRyeSB0byBzaGFyZSBtb3N0CiAgICAgICBtZXRob2RzICh0aGlzIGlzIGhlbHBlZCBieSB0aGUgbWVtYmVycyBgcmVhZGFibGVgIGFuZCBgd3JpdGFibGVgLCB3aGljaAogICAgICAgYXJlIGluaXRpYWxpemVkIGluIHRoZSByZXNwZWN0aXZlIGNvbnN0cnVjdG9ycykKQEAgLTI1NSw3ICsyNzAsNyBAQAogICAgIE5PVEU6IHdlIHNob3VsZCB0cnkgdG8gbWFpbnRhaW4gYmxvY2sgYWxpZ25tZW50IG9mIHJlYWRzIGFuZCB3cml0ZXMgdG8gdGhlCiAgICAgcmF3IHN0cmVhbSAoYWNjb3JkaW5nIHRvIHRoZSBidWZmZXIgc2l6ZSksIGJ1dCBmb3Igbm93IGl0IGlzIG9ubHkgZG9uZQogICAgIGluIHJlYWQoKSBhbmQgZnJpZW5kcy4KLSAgICAKKwogKi8KIAogLyogVGhlc2UgbWFjcm9zIHByb3RlY3QgdGhlIGJ1ZmZlcmVkIG9iamVjdCBhZ2FpbnN0IGNvbmN1cnJlbnQgb3BlcmF0aW9ucy4gKi8KQEAgLTQyMSw3ICs0MzYsNyBAQAogewogICAgIGlmIChzZWxmLT5vayAmJiBzZWxmLT5yYXcpIHsKICAgICAgICAgUHlPYmplY3QgKnI7Ci0gICAgICAgIHIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPnJhdywgIl9kZWFsbG9jX3dhcm4iLCAiTyIsIHNvdXJjZSk7CisgICAgICAgIHIgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPnJhdywgJlB5SWRfX2RlYWxsb2Nfd2FybiwgIk8iLCBzb3VyY2UpOwogICAgICAgICBpZiAocikKICAgICAgICAgICAgIFB5X0RFQ1JFRihyKTsKICAgICAgICAgZWxzZQpAQCAtNDY5LDcgKzQ4NCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRfY2xvc2UoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMLCAqZXhjID0gTlVMTCwgKnZhbCwgKnRiOwogICAgIGludCByOwogCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZikKQEAgLTQ5NywxMyArNTEyLDI5IEBACiAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MoKFB5T2JqZWN0ICopc2VsZiwgX1B5SU9fc3RyX2ZsdXNoLCBOVUxMKTsKICAgICBpZiAoIUVOVEVSX0JVRkZFUkVEKHNlbGYpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocmVzID09IE5VTEwpIHsKLSAgICAgICAgZ290byBlbmQ7Ci0gICAgfQotICAgIFB5X1hERUNSRUYocmVzKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7CisgICAgZWxzZQorICAgICAgICBQeV9ERUNSRUYocmVzKTsKIAogICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNlbGYtPnJhdywgX1B5SU9fc3RyX2Nsb3NlLCBOVUxMKTsKIAorICAgIGlmIChleGMgIT0gTlVMTCkgeworICAgICAgICBpZiAocmVzICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0NMRUFSKHJlcyk7CisgICAgICAgICAgICBQeUVycl9SZXN0b3JlKGV4YywgdmFsLCB0Yik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsMjsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihleGMpOworICAgICAgICAgICAgUHlfWERFQ1JFRih0Yik7CisgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsMiwgJnRiKTsKKyAgICAgICAgICAgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbigmZXhjLCAmdmFsMiwgJnRiKTsKKyAgICAgICAgICAgIFB5RXhjZXB0aW9uX1NldENvbnRleHQodmFsMiwgdmFsKTsKKyAgICAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXhjLCB2YWwyLCB0Yik7CisgICAgICAgIH0KKyAgICB9CisKIGVuZDoKICAgICBMRUFWRV9CVUZGRVJFRChzZWxmKQogICAgIHJldHVybiByZXM7CkBAIC01NTQsMTQgKzU4NSwxNCBAQAogYnVmZmVyZWRfbmFtZV9nZXQoYnVmZmVyZWQgKnNlbGYsIHZvaWQgKmNvbnRleHQpCiB7CiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZikKLSAgICByZXR1cm4gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzZWxmLT5yYXcsICJuYW1lIik7CisgICAgcmV0dXJuIF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZi0+cmF3LCAmUHlJZF9uYW1lKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkX21vZGVfZ2V0KGJ1ZmZlcmVkICpzZWxmLCB2b2lkICpjb250ZXh0KQogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpCi0gICAgcmV0dXJuIFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc2VsZi0+cmF3LCAibW9kZSIpOworICAgIHJldHVybiBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYtPnJhdywgJlB5SWRfbW9kZSk7CiB9CiAKIC8qIExvd2VyLWxldmVsIEFQSXMgKi8KQEAgLTYwMCwxNCArNjMxLDE1IEBACiBzdGF0aWMgdm9pZAogX2J1ZmZlcmVkd3JpdGVyX3Jlc2V0X2J1ZihidWZmZXJlZCAqc2VsZik7CiBzdGF0aWMgUHlPYmplY3QgKgotX2J1ZmZlcmVkcmVhZGVyX3BlZWtfdW5sb2NrZWQoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3QpOworX2J1ZmZlcmVkcmVhZGVyX3BlZWtfdW5sb2NrZWQoYnVmZmVyZWQgKnNlbGYpOwogc3RhdGljIFB5T2JqZWN0ICoKIF9idWZmZXJlZHJlYWRlcl9yZWFkX2FsbChidWZmZXJlZCAqc2VsZik7CiBzdGF0aWMgUHlPYmplY3QgKgogX2J1ZmZlcmVkcmVhZGVyX3JlYWRfZmFzdChidWZmZXJlZCAqc2VsZiwgUHlfc3NpemVfdCk7CiBzdGF0aWMgUHlPYmplY3QgKgogX2J1ZmZlcmVkcmVhZGVyX3JlYWRfZ2VuZXJpYyhidWZmZXJlZCAqc2VsZiwgUHlfc3NpemVfdCk7Ci0KK3N0YXRpYyBQeV9zc2l6ZV90CitfYnVmZmVyZWRyZWFkZXJfcmF3X3JlYWQoYnVmZmVyZWQgKnNlbGYsIGNoYXIgKnN0YXJ0LCBQeV9zc2l6ZV90IGxlbik7CiAKIC8qCiAgKiBIZWxwZXJzCkBAIC02MzEsMTQgKzY2MywxNCBAQAogX2J1ZmZlcmVkX2NoZWNrX2Jsb2NraW5nX2Vycm9yKHZvaWQpCiB7CiAgICAgUHlPYmplY3QgKnQsICp2LCAqdGI7Ci0gICAgUHlCbG9ja2luZ0lPRXJyb3JPYmplY3QgKmVycjsKKyAgICBQeU9TRXJyb3JPYmplY3QgKmVycjsKIAogICAgIFB5RXJyX0ZldGNoKCZ0LCAmdiwgJnRiKTsKICAgICBpZiAodiA9PSBOVUxMIHx8ICFQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXModiwgUHlFeGNfQmxvY2tpbmdJT0Vycm9yKSkgewogICAgICAgICBQeUVycl9SZXN0b3JlKHQsIHYsIHRiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVyciA9IChQeUJsb2NraW5nSU9FcnJvck9iamVjdCAqKSB2OworICAgIGVyciA9IChQeU9TRXJyb3JPYmplY3QgKikgdjsKICAgICAvKiBUT0RPOiBzYW5pdHkgY2hlY2sgKGVyci0+d3JpdHRlbiA+PSAwKSAqLwogICAgIFB5RXJyX1Jlc3RvcmUodCwgdiwgdGIpOwogICAgIHJldHVybiAmZXJyLT53cml0dGVuOwpAQCAtNjU4LDcgKzY5MCw3IEBACiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JT0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJSYXcgc3RyZWFtIHJldHVybmVkIGludmFsaWQgcG9zaXRpb24gJSIgUFlfUFJJZE9GRiwKLQkJCSAoUFlfT0ZGX1RfQ09NUEFUKW4pOworICAgICAgICAgICAgICAgICAgICAgICAgIChQWV9PRkZfVF9DT01QQVQpbik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgc2VsZi0+YWJzX3BvcyA9IG47CkBAIC02OTEsNyArNzIzLDcgQEAKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0lPRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhdyBzdHJlYW0gcmV0dXJuZWQgaW52YWxpZCBwb3NpdGlvbiAlIiBQWV9QUklkT0ZGLAotCQkJIChQWV9PRkZfVF9DT01QQVQpbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgKFBZX09GRl9UX0NPTVBBVCluKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBzZWxmLT5hYnNfcG9zID0gbjsKQEAgLTgzMiw3ICs4NjQsNyBAQAogICAgICAgICAgICAgZ290byBlbmQ7CiAgICAgICAgIFB5X0NMRUFSKHJlcyk7CiAgICAgfQotICAgIHJlcyA9IF9idWZmZXJlZHJlYWRlcl9wZWVrX3VubG9ja2VkKHNlbGYsIG4pOworICAgIHJlcyA9IF9idWZmZXJlZHJlYWRlcl9wZWVrX3VubG9ja2VkKHNlbGYpOwogCiBlbmQ6CiAgICAgTEVBVkVfQlVGRkVSRUQoc2VsZikKQEAgLTg5Niw2MSArOTI4LDExMiBAQAogICAgIGlmIChuID09IDApCiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwogCi0gICAgaWYgKCFFTlRFUl9CVUZGRVJFRChzZWxmKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgCiAgICAgLyogUmV0dXJuIHVwIHRvIG4gYnl0ZXMuICBJZiBhdCBsZWFzdCBvbmUgYnl0ZSBpcyBidWZmZXJlZCwgd2UKICAgICAgICBvbmx5IHJldHVybiBidWZmZXJlZCBieXRlcy4gIE90aGVyd2lzZSwgd2UgZG8gb25lIHJhdyByZWFkLiAqLwogCi0gICAgLyogWFhYOiB0aGlzIG1pbWlja3MgdGhlIGlvLnB5IGltcGxlbWVudGF0aW9uIGJ1dCBpcyBwcm9iYWJseSB3cm9uZy4KLSAgICAgICBJZiB3ZSBuZWVkIHRvIHJlYWQgZnJvbSB0aGUgcmF3IHN0cmVhbSwgdGhlbiB3ZSBjb3VsZCBhY3R1YWxseSByZWFkCi0gICAgICAgYWxsIGBuYCBieXRlcyBhc2tlZCBieSB0aGUgY2FsbGVyIChhbmQgcG9zc2libHkgbW9yZSwgc28gYXMgdG8gZmlsbAotICAgICAgIG91ciBidWZmZXIgZm9yIHRoZSBuZXh0IHJlYWRzKS4gKi8KLQogICAgIGhhdmUgPSBQeV9TQUZFX0RPV05DQVNUKFJFQURBSEVBRChzZWxmKSwgUHlfb2ZmX3QsIFB5X3NzaXplX3QpOwogICAgIGlmIChoYXZlID4gMCkgewotICAgICAgICBpZiAobiA+IGhhdmUpCi0gICAgICAgICAgICBuID0gaGF2ZTsKLSAgICAgICAgcmVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzZWxmLT5idWZmZXIgKyBzZWxmLT5wb3MsIG4pOwotICAgICAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVuZDsKLSAgICAgICAgc2VsZi0+cG9zICs9IG47Ci0gICAgICAgIGdvdG8gZW5kOworICAgICAgICBuID0gUHlfTUlOKGhhdmUsIG4pOworICAgICAgICByZXMgPSBfYnVmZmVyZWRyZWFkZXJfcmVhZF9mYXN0KHNlbGYsIG4pOworICAgICAgICBhc3NlcnQocmVzICE9IFB5X05vbmUpOworICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KLQotICAgIGlmIChzZWxmLT53cml0YWJsZSkgewotICAgICAgICByZXMgPSBidWZmZXJlZF9mbHVzaF9hbmRfcmV3aW5kX3VubG9ja2VkKHNlbGYpOwotICAgICAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVuZDsKKyAgICByZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG4pOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFFTlRFUl9CVUZGRVJFRChzZWxmKSkgewogICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCi0gICAgLyogRmlsbCB0aGUgYnVmZmVyIGZyb20gdGhlIHJhdyBzdHJlYW0sIGFuZCBjb3B5IGl0IHRvIHRoZSByZXN1bHQuICovCiAgICAgX2J1ZmZlcmVkcmVhZGVyX3Jlc2V0X2J1ZihzZWxmKTsKLSAgICByID0gX2J1ZmZlcmVkcmVhZGVyX2ZpbGxfYnVmZmVyKHNlbGYpOwotICAgIGlmIChyID09IC0xKQotICAgICAgICBnb3RvIGVuZDsKKyAgICByID0gX2J1ZmZlcmVkcmVhZGVyX3Jhd19yZWFkKHNlbGYsIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyksIG4pOworICAgIExFQVZFX0JVRkZFUkVEKHNlbGYpCisgICAgaWYgKHIgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBpZiAociA9PSAtMikKICAgICAgICAgciA9IDA7CiAgICAgaWYgKG4gPiByKQotICAgICAgICBuID0gcjsKLSAgICByZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHNlbGYtPmJ1ZmZlciwgbik7Ci0gICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICBnb3RvIGVuZDsKLSAgICBzZWxmLT5wb3MgPSBuOwotCi1lbmQ6Ci0gICAgTEVBVkVfQlVGRkVSRUQoc2VsZikKKyAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZyZXMsIHIpOwogICAgIHJldHVybiByZXM7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWZmZXJlZF9yZWFkaW50byhidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgUHlfYnVmZmVyIGJ1ZjsKKyAgICBQeV9zc2l6ZV90IG4sIHdyaXR0ZW4gPSAwLCByZW1haW5pbmc7CisgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CisKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKQotICAgIAotICAgIC8qIFRPRE86IHVzZSByYXcucmVhZGludG8oKSAob3IgYSBkaXJlY3QgY29weSBmcm9tIG91ciBidWZmZXIpIGluc3RlYWQhICovCi0gICAgcmV0dXJuIGJ1ZmZlcmVkaW9iYXNlX3JlYWRpbnRvKChQeU9iamVjdCAqKXNlbGYsIGFyZ3MpOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ3KjpyZWFkaW50byIsICZidWYpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG4gPSBQeV9TQUZFX0RPV05DQVNUKFJFQURBSEVBRChzZWxmKSwgUHlfb2ZmX3QsIFB5X3NzaXplX3QpOworICAgIGlmIChuID4gMCkgeworICAgICAgICBpZiAobiA+PSBidWYubGVuKSB7CisgICAgICAgICAgICBtZW1jcHkoYnVmLmJ1Ziwgc2VsZi0+YnVmZmVyICsgc2VsZi0+cG9zLCBidWYubGVuKTsKKyAgICAgICAgICAgIHNlbGYtPnBvcyArPSBidWYubGVuOworICAgICAgICAgICAgcmVzID0gUHlMb25nX0Zyb21Tc2l6ZV90KGJ1Zi5sZW4pOworICAgICAgICAgICAgZ290byBlbmRfdW5sb2NrZWQ7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KGJ1Zi5idWYsIHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgbik7CisgICAgICAgIHNlbGYtPnBvcyArPSBuOworICAgICAgICB3cml0dGVuID0gbjsKKyAgICB9CisKKyAgICBpZiAoIUVOVEVSX0JVRkZFUkVEKHNlbGYpKQorICAgICAgICBnb3RvIGVuZF91bmxvY2tlZDsKKworICAgIGlmIChzZWxmLT53cml0YWJsZSkgeworICAgICAgICByZXMgPSBidWZmZXJlZF9mbHVzaF9hbmRfcmV3aW5kX3VubG9ja2VkKHNlbGYpOworICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVuZDsKKyAgICAgICAgUHlfQ0xFQVIocmVzKTsKKyAgICB9CisKKyAgICBfYnVmZmVyZWRyZWFkZXJfcmVzZXRfYnVmKHNlbGYpOworICAgIHNlbGYtPnBvcyA9IDA7CisKKyAgICBmb3IgKHJlbWFpbmluZyA9IGJ1Zi5sZW4gLSB3cml0dGVuOworICAgICAgICAgcmVtYWluaW5nID4gMDsKKyAgICAgICAgIHdyaXR0ZW4gKz0gbiwgcmVtYWluaW5nIC09IG4pIHsKKyAgICAgICAgLyogSWYgcmVtYWluaW5nIGJ5dGVzIGlzIGxhcmdlciB0aGFuIGludGVybmFsIGJ1ZmZlciBzaXplLCBjb3B5CisgICAgICAgICAqIGRpcmVjdGx5IGludG8gY2FsbGVyJ3MgYnVmZmVyLiAqLworICAgICAgICBpZiAocmVtYWluaW5nID4gc2VsZi0+YnVmZmVyX3NpemUpIHsKKyAgICAgICAgICAgIG4gPSBfYnVmZmVyZWRyZWFkZXJfcmF3X3JlYWQoc2VsZiwgKGNoYXIgKikgYnVmLmJ1ZiArIHdyaXR0ZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBuID0gX2J1ZmZlcmVkcmVhZGVyX2ZpbGxfYnVmZmVyKHNlbGYpOworICAgICAgICAgICAgaWYgKG4gPiAwKSB7CisgICAgICAgICAgICAgICAgaWYgKG4gPiByZW1haW5pbmcpCisgICAgICAgICAgICAgICAgICAgIG4gPSByZW1haW5pbmc7CisgICAgICAgICAgICAgICAgbWVtY3B5KChjaGFyICopIGJ1Zi5idWYgKyB3cml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5idWZmZXIgKyBzZWxmLT5wb3MsIG4pOworICAgICAgICAgICAgICAgIHNlbGYtPnBvcyArPSBuOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvKiBzaG9ydCBjaXJjdWl0ICovCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKG4gPT0gMCB8fCAobiA9PSAtMiAmJiB3cml0dGVuID4gMCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKG4gPCAwKSB7CisgICAgICAgICAgICBpZiAobiA9PSAtMikgeworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgICAgICAgICByZXMgPSBQeV9Ob25lOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgIH0KKyAgICB9CisgICAgcmVzID0gUHlMb25nX0Zyb21Tc2l6ZV90KHdyaXR0ZW4pOworCitlbmQ6CisgICAgTEVBVkVfQlVGRkVSRUQoc2VsZik7CitlbmRfdW5sb2NrZWQ6CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKyAgICByZXR1cm4gcmVzOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTEwMSw5ICsxMTg0LDIwIEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6c2VlayIsICZ0YXJnZXRvYmosICZ3aGVuY2UpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAod2hlbmNlIDwgMCB8fCB3aGVuY2UgPiAyKSB7CisKKyAgICAvKiBEbyBzb21lIGVycm9yIGNoZWNraW5nIGluc3RlYWQgb2YgdHJ1c3RpbmcgT1MgJ3NlZWsoKScKKyAgICAqKiBlcnJvciBkZXRlY3Rpb24sIGp1c3QgaW4gY2FzZS4KKyAgICAqLworICAgIGlmICgod2hlbmNlIDwgMCB8fCB3aGVuY2UgPjIpCisjaWZkZWYgU0VFS19IT0xFCisgICAgICAgICYmICh3aGVuY2UgIT0gU0VFS19IT0xFKQorI2VuZGlmCisjaWZkZWYgU0VFS19EQVRBCisgICAgICAgICYmICh3aGVuY2UgIT0gU0VFS19EQVRBKQorI2VuZGlmCisgICAgICAgICkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJ3aGVuY2UgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDIsIG5vdCAlZCIsIHdoZW5jZSk7CisgICAgICAgICAgICAgICAgICAgICAid2hlbmNlIHZhbHVlICVkIHVuc3VwcG9ydGVkIiwgd2hlbmNlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0xMTE2LDcgKzEyMTAsMTEgQEAKICAgICBpZiAodGFyZ2V0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKHdoZW5jZSAhPSAyICYmIHNlbGYtPnJlYWRhYmxlKSB7CisgICAgLyogU0VFS19TRVQgYW5kIFNFRUtfQ1VSIGFyZSBzcGVjaWFsIGJlY2F1c2Ugd2UgY291bGQgc2VlayBpbnNpZGUgdGhlCisgICAgICAgYnVmZmVyLiBPdGhlciB3aGVuY2UgdmFsdWVzIG11c3QgYmUgbWFuYWdlZCB3aXRob3V0IHRoaXMgb3B0aW1pemF0aW9uLgorICAgICAgIFNvbWUgT3BlcmF0aW5nIFN5c3RlbXMgY2FuIHByb3ZpZGUgYWRkaXRpb25hbCB2YWx1ZXMsIGxpa2UKKyAgICAgICBTRUVLX0hPTEUvU0VFS19EQVRBLiAqLworICAgIGlmICgoKHdoZW5jZSA9PSAwKSB8fCAod2hlbmNlID09IDEpKSAmJiBzZWxmLT5yZWFkYWJsZSkgewogICAgICAgICBQeV9vZmZfdCBjdXJyZW50LCBhdmFpbDsKICAgICAgICAgLyogQ2hlY2sgaWYgc2Vla2luZyBsZWF2ZXMgdXMgaW5zaWRlIHRoZSBjdXJyZW50IGJ1ZmZlciwKICAgICAgICAgICAgc28gYXMgdG8gcmV0dXJuIHF1aWNrbHkgaWYgcG9zc2libGUuIEFsc28sIHdlIG5lZWRuJ3QgdGFrZSB0aGUKQEAgLTEyNDIsNyArMTM0MCw3IEBACiB7CiAgICAgUHlPYmplY3QgKm5hbWVvYmosICpyZXM7CiAKLSAgICBuYW1lb2JqID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QgKikgc2VsZiwgIm5hbWUiKTsKKyAgICBuYW1lb2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKikgc2VsZiwgJlB5SWRfbmFtZSk7CiAgICAgaWYgKG5hbWVvYmogPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMTM2OCwzMyArMTQ2Niw2MCBAQAogX2J1ZmZlcmVkcmVhZGVyX3JlYWRfYWxsKGJ1ZmZlcmVkICpzZWxmKQogewogICAgIFB5X3NzaXplX3QgY3VycmVudF9zaXplOwotICAgIFB5T2JqZWN0ICpyZXMsICpkYXRhID0gTlVMTDsKLSAgICBQeU9iamVjdCAqY2h1bmtzID0gUHlMaXN0X05ldygwKTsKLQotICAgIGlmIChjaHVua3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlPYmplY3QgKnJlcywgKmRhdGEgPSBOVUxMLCAqY2h1bmssICpjaHVua3M7CiAKICAgICAvKiBGaXJzdCBjb3B5IHdoYXQgd2UgaGF2ZSBpbiB0aGUgY3VycmVudCBidWZmZXIuICovCiAgICAgY3VycmVudF9zaXplID0gUHlfU0FGRV9ET1dOQ0FTVChSRUFEQUhFQUQoc2VsZiksIFB5X29mZl90LCBQeV9zc2l6ZV90KTsKICAgICBpZiAoY3VycmVudF9zaXplKSB7CiAgICAgICAgIGRhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKAogICAgICAgICAgICAgc2VsZi0+YnVmZmVyICsgc2VsZi0+cG9zLCBjdXJyZW50X3NpemUpOwotICAgICAgICBpZiAoZGF0YSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoY2h1bmtzKTsKKyAgICAgICAgaWYgKGRhdGEgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgICAgIHNlbGYtPnBvcyArPSBjdXJyZW50X3NpemU7CiAgICAgfQogICAgIC8qIFdlJ3JlIGdvaW5nIHBhc3QgdGhlIGJ1ZmZlcidzIGJvdW5kcywgZmx1c2ggaXQgKi8KICAgICBpZiAoc2VsZi0+d3JpdGFibGUpIHsKICAgICAgICAgcmVzID0gYnVmZmVyZWRfZmx1c2hfYW5kX3Jld2luZF91bmxvY2tlZChzZWxmKTsKLSAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoY2h1bmtzKTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICAgICAgUHlfQ0xFQVIocmVzKTsKICAgICB9CiAgICAgX2J1ZmZlcmVkcmVhZGVyX3Jlc2V0X2J1ZihzZWxmKTsKKworICAgIGlmIChQeU9iamVjdF9IYXNBdHRyKHNlbGYtPnJhdywgX1B5SU9fc3RyX3JlYWRhbGwpKSB7CisgICAgICAgIGNodW5rID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+cmF3LCBfUHlJT19zdHJfcmVhZGFsbCwgTlVMTCk7CisgICAgICAgIGlmIChjaHVuayA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChjaHVuayAhPSBQeV9Ob25lICYmICFQeUJ5dGVzX0NoZWNrKGNodW5rKSkgeworICAgICAgICAgICAgUHlfWERFQ1JFRihkYXRhKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihjaHVuayk7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVhZGFsbCgpIHNob3VsZCByZXR1cm4gYnl0ZXMiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChjaHVuayA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICBpZiAoY3VycmVudF9zaXplID09IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIGNodW5rOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGNodW5rKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjdXJyZW50X3NpemUpIHsKKyAgICAgICAgICAgIFB5Qnl0ZXNfQ29uY2F0KCZkYXRhLCBjaHVuayk7CisgICAgICAgICAgICBQeV9ERUNSRUYoY2h1bmspOworICAgICAgICAgICAgaWYgKGRhdGEgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiBkYXRhOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBjaHVuazsKKyAgICB9CisKKyAgICBjaHVua3MgPSBQeUxpc3RfTmV3KDApOworICAgIGlmIChjaHVua3MgPT0gTlVMTCkgeworICAgICAgICBQeV9YREVDUkVGKGRhdGEpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICB3aGlsZSAoMSkgewogICAgICAgICBpZiAoZGF0YSkgewogICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoY2h1bmtzLCBkYXRhKSA8IDApIHsKQEAgLTE1NTYsNyArMTY4MSw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fYnVmZmVyZWRyZWFkZXJfcGVla191bmxvY2tlZChidWZmZXJlZCAqc2VsZiwgUHlfc3NpemVfdCBuKQorX2J1ZmZlcmVkcmVhZGVyX3BlZWtfdW5sb2NrZWQoYnVmZmVyZWQgKnNlbGYpCiB7CiAgICAgUHlfc3NpemVfdCBoYXZlLCByOwogCkBAIC0xNTk4LDYgKzE3MjMsNyBAQAogICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsicGVlayIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9wZWVrLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsicmVhZDEiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfcmVhZDEsIE1FVEhfVkFSQVJHU30sCisgICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkaW50bywgTUVUSF9WQVJBUkdTfSwKICAgICB7InJlYWRsaW5lIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsic2VlayIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9zZWVrLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsidGVsbCIsIChQeUNGdW5jdGlvbilidWZmZXJlZF90ZWxsLCBNRVRIX05PQVJHU30sCkBAIC0xNjYzLDE1ICsxNzg5LDYgQEAKIAwKIAogCi1zdGF0aWMgaW50Ci1jb21wbGFpbl9hYm91dF9tYXhfYnVmZmVyX3NpemUodm9pZCkKLXsKLSAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICJtYXhfYnVmZmVyX3NpemUgaXMgZGVwcmVjYXRlZCIsIDEpIDwgMCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KIC8qCiAgKiBjbGFzcyBCdWZmZXJlZFdyaXRlcgogICovCkBAIC0xNjgwLDcgKzE3OTcsNyBAQAogICAgICJcbiIKICAgICAiVGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBCdWZmZXJlZFdyaXRlciBmb3IgdGhlIGdpdmVuIHdyaXRlYWJsZSByYXdcbiIKICAgICAic3RyZWFtLiBJZiB0aGUgYnVmZmVyX3NpemUgaXMgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0b1xuIgotICAgICJERUZBVUxUX0JVRkZFUl9TSVpFLiBtYXhfYnVmZmVyX3NpemUgaXNuJ3QgdXNlZCBhbnltb3JlLlxuIgorICAgICJERUZBVUxUX0JVRkZFUl9TSVpFLlxuIgogICAgICk7CiAKIHN0YXRpYyB2b2lkCkBAIC0xNjkzLDIzICsxODEwLDE4IEBACiBzdGF0aWMgaW50CiBidWZmZXJlZHdyaXRlcl9pbml0KGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgLyogVE9ETzogcHJvcGVybHkgZGVwcmVjYXRlIG1heF9idWZmZXJfc2l6ZSAqLwotICAgIGNoYXIgKmt3bGlzdFtdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCAibWF4X2J1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgY2hhciAqa3dsaXN0W10gPSB7InJhdyIsICJidWZmZXJfc2l6ZSIsIE5VTEx9OwogICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOwotICAgIFB5X3NzaXplX3QgbWF4X2J1ZmZlcl9zaXplID0gLTIzNDsKICAgICBQeU9iamVjdCAqcmF3OwogCiAgICAgc2VsZi0+b2sgPSAwOwogICAgIHNlbGYtPmRldGFjaGVkID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfG5uOkJ1ZmZlcmVkV3JpdGVyIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyYXcsICZidWZmZXJfc2l6ZSwgJm1heF9idWZmZXJfc2l6ZSkpIHsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xuOkJ1ZmZlcmVkV3JpdGVyIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyYXcsICZidWZmZXJfc2l6ZSkpIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGlmIChtYXhfYnVmZmVyX3NpemUgIT0gLTIzNCAmJiAhY29tcGxhaW5fYWJvdXRfbWF4X2J1ZmZlcl9zaXplKCkpCi0gICAgICAgIHJldHVybiAtMTsKLQogICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfd3JpdGFibGUocmF3LCBQeV9UcnVlKSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAKQEAgLTIwOTEsMTYgKzIyMDMsMTIgQEAKIHsKICAgICBQeU9iamVjdCAqcmVhZGVyLCAqd3JpdGVyOwogICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOwotICAgIFB5X3NzaXplX3QgbWF4X2J1ZmZlcl9zaXplID0gLTIzNDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT098bm46QnVmZmVyZWRSV1BhaXIiLCAmcmVhZGVyLCAmd3JpdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmYnVmZmVyX3NpemUsICZtYXhfYnVmZmVyX3NpemUpKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT3xuOkJ1ZmZlcmVkUldQYWlyIiwgJnJlYWRlciwgJndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1ZmZlcl9zaXplKSkgewogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgaWYgKG1heF9idWZmZXJfc2l6ZSAhPSAtMjM0ICYmICFjb21wbGFpbl9hYm91dF9tYXhfYnVmZmVyX3NpemUoKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCiAgICAgaWYgKF9QeUlPQmFzZV9jaGVja19yZWFkYWJsZShyZWFkZXIsIFB5X1RydWUpID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3dyaXRhYmxlKHdyaXRlciwgUHlfVHJ1ZSkgPT0gTlVMTCkKQEAgLTIxNDgsMTMgKzIyNTYsMTMgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLV9mb3J3YXJkX2NhbGwoYnVmZmVyZWQgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICphcmdzKQorX2ZvcndhcmRfY2FsbChidWZmZXJlZCAqc2VsZiwgX1B5X0lkZW50aWZpZXIgKm5hbWUsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpmdW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QgKilzZWxmLCBuYW1lKTsKKyAgICBQeU9iamVjdCAqZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopc2VsZiwgbmFtZSk7CiAgICAgUHlPYmplY3QgKnJldDsKIAogICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1lKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1lLT5zdHJpbmcpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTIxNjYsNjYgKzIyNzQsNjYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWZmZXJlZHJ3cGFpcl9yZWFkKHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAicmVhZCIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgJlB5SWRfcmVhZCwgYXJncyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWZmZXJlZHJ3cGFpcl9wZWVrKHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAicGVlayIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgJlB5SWRfcGVlaywgYXJncyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWZmZXJlZHJ3cGFpcl9yZWFkMShyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgInJlYWQxIiwgYXJncyk7CisgICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAmUHlJZF9yZWFkMSwgYXJncyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWZmZXJlZHJ3cGFpcl9yZWFkaW50byhyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgInJlYWRpbnRvIiwgYXJncyk7CisgICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAmUHlJZF9yZWFkaW50bywgYXJncyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWZmZXJlZHJ3cGFpcl93cml0ZShyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgIndyaXRlIiwgYXJncyk7CisgICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+d3JpdGVyLCAmUHlJZF93cml0ZSwgYXJncyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWZmZXJlZHJ3cGFpcl9mbHVzaChyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgImZsdXNoIiwgYXJncyk7CisgICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+d3JpdGVyLCAmUHlJZF9mbHVzaCwgYXJncyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWZmZXJlZHJ3cGFpcl9yZWFkYWJsZShyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgInJlYWRhYmxlIiwgYXJncyk7CisgICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAmUHlJZF9yZWFkYWJsZSwgYXJncyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWZmZXJlZHJ3cGFpcl93cml0YWJsZShyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgIndyaXRhYmxlIiwgYXJncyk7CisgICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+d3JpdGVyLCAmUHlJZF93cml0YWJsZSwgYXJncyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWZmZXJlZHJ3cGFpcl9jbG9zZShyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpyZXQgPSBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgImNsb3NlIiwgYXJncyk7CisgICAgUHlPYmplY3QgKnJldCA9IF9mb3J3YXJkX2NhbGwoc2VsZi0+d3JpdGVyLCAmUHlJZF9jbG9zZSwgYXJncyk7CiAgICAgaWYgKHJldCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9ERUNSRUYocmV0KTsKIAotICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgImNsb3NlIiwgYXJncyk7CisgICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAmUHlJZF9jbG9zZSwgYXJncyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWZmZXJlZHJ3cGFpcl9pc2F0dHkocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqcmV0ID0gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICJpc2F0dHkiLCBhcmdzKTsKKyAgICBQeU9iamVjdCAqcmV0ID0gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICZQeUlkX2lzYXR0eSwgYXJncyk7CiAKICAgICBpZiAocmV0ICE9IFB5X0ZhbHNlKSB7CiAgICAgICAgIC8qIGVpdGhlciBUcnVlIG9yIGV4Y2VwdGlvbiAqLwpAQCAtMjIzMyw3ICsyMzQxLDcgQEAKICAgICB9CiAgICAgUHlfREVDUkVGKHJldCk7CiAKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICJpc2F0dHkiLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICZQeUlkX2lzYXR0eSwgYXJncyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yMzI1LDI4ICsyNDMzLDI0IEBACiAgICAgIlxuIgogICAgICJUaGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIHJlYWRlciBhbmQgd3JpdGVyIGZvciBhIHNlZWthYmxlIHN0cmVhbSxcbiIKICAgICAicmF3LCBnaXZlbiBpbiB0aGUgZmlyc3QgYXJndW1lbnQuIElmIHRoZSBidWZmZXJfc2l6ZSBpcyBvbWl0dGVkIGl0XG4iCi0gICAgImRlZmF1bHRzIHRvIERFRkFVTFRfQlVGRkVSX1NJWkUuIG1heF9idWZmZXJfc2l6ZSBpc24ndCB1c2VkIGFueW1vcmUuXG4iCisgICAgImRlZmF1bHRzIHRvIERFRkFVTFRfQlVGRkVSX1NJWkUuXG4iCiAgICAgKTsKIAogc3RhdGljIGludAogYnVmZmVyZWRyYW5kb21faW5pdChidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCAibWF4X2J1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgY2hhciAqa3dsaXN0W10gPSB7InJhdyIsICJidWZmZXJfc2l6ZSIsIE5VTEx9OwogICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOwotICAgIFB5X3NzaXplX3QgbWF4X2J1ZmZlcl9zaXplID0gLTIzNDsKICAgICBQeU9iamVjdCAqcmF3OwogCiAgICAgc2VsZi0+b2sgPSAwOwogICAgIHNlbGYtPmRldGFjaGVkID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfG5uOkJ1ZmZlcmVkUmFuZG9tIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyYXcsICZidWZmZXJfc2l6ZSwgJm1heF9idWZmZXJfc2l6ZSkpIHsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xuOkJ1ZmZlcmVkUmFuZG9tIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyYXcsICZidWZmZXJfc2l6ZSkpIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGlmIChtYXhfYnVmZmVyX3NpemUgIT0gLTIzNCAmJiAhY29tcGxhaW5fYWJvdXRfbWF4X2J1ZmZlcl9zaXplKCkpCi0gICAgICAgIHJldHVybiAtMTsKLQogICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfc2Vla2FibGUocmF3LCBQeV9UcnVlKSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKF9QeUlPQmFzZV9jaGVja19yZWFkYWJsZShyYXcsIFB5X1RydWUpID09IE5VTEwpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9ieXRlc2lvLmMgYi9Nb2R1bGVzL19pby9ieXRlc2lvLmMKaW5kZXggNDE2NDUzMy4uNTQ4NDBiYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vYnl0ZXNpby5jCisrKyBiL01vZHVsZXMvX2lvL2J5dGVzaW8uYwpAQCAtOTYyLDEzICs5NjIsMTEgQEAKIGJ5dGVzaW9idWZfZ2V0YnVmZmVyKGJ5dGVzaW9idWYgKm9iaiwgUHlfYnVmZmVyICp2aWV3LCBpbnQgZmxhZ3MpCiB7CiAgICAgaW50IHJldDsKLSAgICB2b2lkICpwdHI7CiAgICAgYnl0ZXNpbyAqYiA9IChieXRlc2lvICopIG9iai0+c291cmNlOwogICAgIGlmICh2aWV3ID09IE5VTEwpIHsKICAgICAgICAgYi0+ZXhwb3J0cysrOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgcHRyID0gKHZvaWQgKikgb2JqOwogICAgIHJldCA9IFB5QnVmZmVyX0ZpbGxJbmZvKHZpZXcsIChQeU9iamVjdCopb2JqLCBiLT5idWYsIGItPnN0cmluZ19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGZsYWdzKTsKICAgICBpZiAocmV0ID49IDApIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2ZpbGVpby5jIGIvTW9kdWxlcy9faW8vZmlsZWlvLmMKaW5kZXggYWQ0YTdlNi4uOGMxZmFiZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vZmlsZWlvLmMKKysrIGIvTW9kdWxlcy9faW8vZmlsZWlvLmMKQEAgLTQ2LDYgKzQ2LDcgQEAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgaW50IGZkOworICAgIHVuc2lnbmVkIGludCBjcmVhdGVkIDogMTsKICAgICB1bnNpZ25lZCBpbnQgcmVhZGFibGUgOiAxOwogICAgIHVuc2lnbmVkIGludCB3cml0YWJsZSA6IDE7CiAgICAgc2lnbmVkIGludCBzZWVrYWJsZSA6IDI7IC8qIC0xIG1lYW5zIHVua25vd24gKi8KQEAgLTEyMiw2ICsxMjMsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGZpbGVpb19jbG9zZShmaWxlaW8gKnNlbGYpCiB7CisgICAgX1B5X0lERU5USUZJRVIoY2xvc2UpOwogICAgIGlmICghc2VsZi0+Y2xvc2VmZCkgewogICAgICAgICBzZWxmLT5mZCA9IC0xOwogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTEzNyw4ICsxMzksOCBAQAogICAgIGlmIChlcnJubyA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0KikmUHlSYXdJT0Jhc2VfVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2xvc2UiLCAiTyIsIHNlbGYpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCopJlB5UmF3SU9CYXNlX1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfY2xvc2UsICJPIiwgc2VsZik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xNTEsNiArMTUzLDcgQEAKICAgICBzZWxmID0gKGZpbGVpbyAqKSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CiAgICAgICAgIHNlbGYtPmZkID0gLTE7CisgICAgICAgIHNlbGYtPmNyZWF0ZWQgPSAwOwogICAgICAgICBzZWxmLT5yZWFkYWJsZSA9IDA7CiAgICAgICAgIHNlbGYtPndyaXRhYmxlID0gMDsKICAgICAgICAgc2VsZi0+c2Vla2FibGUgPSAtMTsKQEAgLTIwNCw5ICsyMDcsOSBAQAogZmlsZWlvX2luaXQoUHlPYmplY3QgKm9zZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgZmlsZWlvICpzZWxmID0gKGZpbGVpbyAqKSBvc2VsZjsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpbGUiLCAibW9kZSIsICJjbG9zZWZkIiwgTlVMTH07CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJmaWxlIiwgIm1vZGUiLCAiY2xvc2VmZCIsICJvcGVuZXIiLCBOVUxMfTsKICAgICBjb25zdCBjaGFyICpuYW1lID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbmFtZW9iaiwgKnN0cmluZ29iaiA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWVvYmosICpzdHJpbmdvYmogPSBOVUxMLCAqb3BlbmVyID0gUHlfTm9uZTsKICAgICBjaGFyICptb2RlID0gInIiOwogICAgIGNoYXIgKnM7CiAjaWZkZWYgTVNfV0lORE9XUwpAQCAtMjMwLDggKzIzMyw5IEBACiAgICAgICAgICAgICBzZWxmLT5mZCA9IC0xOwogICAgIH0KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfHNpOmZpbGVpbyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmbmFtZW9iaiwgJm1vZGUsICZjbG9zZWZkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xzaU86ZmlsZWlvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZuYW1lb2JqLCAmbW9kZSwgJmNsb3NlZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wZW5lcikpCiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmIChQeUZsb2F0X0NoZWNrKG5hbWVvYmopKSB7CkBAIC0yNTgsOSArMjYyLDEwIEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVtYmVkZGVkIE5VTCBjaGFyYWN0ZXIiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQotICAgICAgICB3aWRlbmFtZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKG5hbWVvYmopOwotICAgIH0KLSAgICBpZiAod2lkZW5hbWUgPT0gTlVMTCkKKyAgICAgICAgd2lkZW5hbWUgPSBQeVVuaWNvZGVfQXNVbmljb2RlKG5hbWVvYmopOworICAgICAgICBpZiAod2lkZW5hbWUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UKICNlbmRpZgogICAgIGlmIChmZCA8IDApCiAgICAgewpAQCAtMjczLDE1ICsyNzgsMjMgQEAKICAgICBzID0gbW9kZTsKICAgICB3aGlsZSAoKnMpIHsKICAgICAgICAgc3dpdGNoICgqcysrKSB7Ci0gICAgICAgIGNhc2UgJ3InOgorICAgICAgICBjYXNlICd4JzoKICAgICAgICAgICAgIGlmIChyd2EpIHsKICAgICAgICAgICAgIGJhZF9tb2RlOgogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTXVzdCBoYXZlIGV4YWN0bHkgb25lIG9mIHJlYWQvd3JpdGUvYXBwZW5kICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk11c3QgaGF2ZSBleGFjdGx5IG9uZSBvZiBjcmVhdGUvcmVhZC93cml0ZS9hcHBlbmQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZSBhbmQgYXQgbW9zdCBvbmUgcGx1cyIpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByd2EgPSAxOworICAgICAgICAgICAgc2VsZi0+Y3JlYXRlZCA9IDE7CisgICAgICAgICAgICBzZWxmLT53cml0YWJsZSA9IDE7CisgICAgICAgICAgICBmbGFncyB8PSBPX0VYQ0wgfCBPX0NSRUFUOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ3InOgorICAgICAgICAgICAgaWYgKHJ3YSkKKyAgICAgICAgICAgICAgICBnb3RvIGJhZF9tb2RlOworICAgICAgICAgICAgcndhID0gMTsKICAgICAgICAgICAgIHNlbGYtPnJlYWRhYmxlID0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICd3JzoKQEAgLTM0NywyMCArMzYwLDQwIEBACiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBlcnJubyA9IDA7CisgICAgICAgIGlmIChvcGVuZXIgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKHdpZGVuYW1lICE9IE5VTEwpCi0gICAgICAgICAgICBzZWxmLT5mZCA9IF93b3Blbih3aWRlbmFtZSwgZmxhZ3MsIDA2NjYpOwotICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAod2lkZW5hbWUgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICBzZWxmLT5mZCA9IF93b3Blbih3aWRlbmFtZSwgZmxhZ3MsIDA2NjYpOworICAgICAgICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgICAgICBzZWxmLT5mZCA9IG9wZW4obmFtZSwgZmxhZ3MsIDA2NjYpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgICAgIHNlbGYtPmZkID0gb3BlbihuYW1lLCBmbGFncywgMDY2Nik7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlPYmplY3QgKmZkb2JqID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5lciwgIk9pIiwgbmFtZW9iaiwgZmxhZ3MpOworICAgICAgICAgICAgaWYgKGZkb2JqID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGlmICghUHlMb25nX0NoZWNrKGZkb2JqKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmZG9iaik7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBpbnRlZ2VyIGZyb20gb3BlbmVyIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2VsZi0+ZmQgPSBfUHlMb25nX0FzSW50KGZkb2JqKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmZG9iaik7CisgICAgICAgICAgICBpZiAoc2VsZi0+ZmQgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgZmRfaXNfb3duID0gMTsKICAgICAgICAgaWYgKHNlbGYtPmZkIDwgMCkgewogI2lmZGVmIE1TX1dJTkRPV1MKICAgICAgICAgICAgIGlmICh3aWRlbmFtZSAhPSBOVUxMKQotICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhVbmljb2RlRmlsZW5hbWUoUHlFeGNfSU9FcnJvciwgd2lkZW5hbWUpOworICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19JT0Vycm9yLCBuYW1lb2JqKTsKICAgICAgICAgICAgIGVsc2UKICNlbmRpZgogICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZShQeUV4Y19JT0Vycm9yLCBuYW1lKTsKQEAgLTUyOSwzNiArNTYyLDUzIEBACiB9CiAKIHN0YXRpYyBzaXplX3QKLW5ld19idWZmZXJzaXplKGZpbGVpbyAqc2VsZiwgc2l6ZV90IGN1cnJlbnRzaXplKQoteworbmV3X2J1ZmZlcnNpemUoZmlsZWlvICpzZWxmLCBzaXplX3QgY3VycmVudHNpemUKICNpZmRlZiBIQVZFX0ZTVEFUCi0gICAgb2ZmX3QgcG9zLCBlbmQ7Ci0gICAgc3RydWN0IHN0YXQgc3Q7Ci0gICAgaWYgKGZzdGF0KHNlbGYtPmZkLCAmc3QpID09IDApIHsKLSAgICAgICAgZW5kID0gc3Quc3Rfc2l6ZTsKLSAgICAgICAgcG9zID0gbHNlZWsoc2VsZi0+ZmQsIDBMLCBTRUVLX0NVUik7CisgICAgICAgICAgICAgICAsIFB5X29mZl90IHBvcywgUHlfb2ZmX3QgZW5kCisjZW5kaWYKKyAgICAgICAgICAgICAgICkKK3sKKyAgICBzaXplX3QgYWRkZW5kOworI2lmZGVmIEhBVkVfRlNUQVQKKyAgICBpZiAoZW5kICE9IChQeV9vZmZfdCktMSkgewogICAgICAgICAvKiBGaWxlcyBjbGFpbWluZyBhIHNpemUgc21hbGxlciB0aGFuIFNNQUxMQ0hVTksgbWF5CiAgICAgICAgICAgIGFjdHVhbGx5IGJlIHN0cmVhbWluZyBwc2V1ZG8tZmlsZXMuIEluIHRoaXMgY2FzZSwgd2UKICAgICAgICAgICAgYXBwbHkgdGhlIG1vcmUgYWdncmVzc2l2ZSBhbGdvcml0aG0gYmVsb3cuCiAgICAgICAgICovCiAgICAgICAgIGlmIChlbmQgPj0gU01BTExDSFVOSyAmJiBlbmQgPj0gcG9zICYmIHBvcyA+PSAwKSB7CiAgICAgICAgICAgICAvKiBBZGQgMSBzbyBpZiB0aGUgZmlsZSB3ZXJlIHRvIGdyb3cgd2UnZCBub3RpY2UuICovCi0gICAgICAgICAgICByZXR1cm4gY3VycmVudHNpemUgKyBlbmQgLSBwb3MgKyAxOworICAgICAgICAgICAgUHlfb2ZmX3QgYnVmc2l6ZSA9IGN1cnJlbnRzaXplICsgZW5kIC0gcG9zICsgMTsKKyAgICAgICAgICAgIGlmIChidWZzaXplIDwgUFlfU1NJWkVfVF9NQVgpCisgICAgICAgICAgICAgICAgcmV0dXJuIChzaXplX3QpYnVmc2l6ZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gUFlfU1NJWkVfVF9NQVg7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKICAgICAvKiBFeHBhbmQgdGhlIGJ1ZmZlciBieSBhbiBhbW91bnQgcHJvcG9ydGlvbmFsIHRvIHRoZSBjdXJyZW50IHNpemUsCi0gICAgICAgZ2l2aW5nIHVzIGFtb3J0aXplZCBsaW5lYXItdGltZSBiZWhhdmlvci4gVXNlIGEgbGVzcy10aGFuLWRvdWJsZQotICAgICAgIGdyb3d0aCBmYWN0b3IgdG8gYXZvaWQgZXhjZXNzaXZlIGFsbG9jYXRpb24uICovCi0gICAgcmV0dXJuIGN1cnJlbnRzaXplICsgKGN1cnJlbnRzaXplID4+IDMpICsgNjsKKyAgICAgICBnaXZpbmcgdXMgYW1vcnRpemVkIGxpbmVhci10aW1lIGJlaGF2aW9yLiAgRm9yIGJpZ2dlciBzaXplcywgdXNlIGEKKyAgICAgICBsZXNzLXRoYW4tZG91YmxlIGdyb3d0aCBmYWN0b3IgdG8gYXZvaWQgZXhjZXNzaXZlIGFsbG9jYXRpb24uICovCisgICAgaWYgKGN1cnJlbnRzaXplID4gNjU1MzYpCisgICAgICAgIGFkZGVuZCA9IGN1cnJlbnRzaXplID4+IDM7CisgICAgZWxzZQorICAgICAgICBhZGRlbmQgPSAyNTYgKyBjdXJyZW50c2l6ZTsKKyAgICBpZiAoYWRkZW5kIDwgU01BTExDSFVOSykKKyAgICAgICAgLyogQXZvaWQgdGlueSByZWFkKCkgY2FsbHMuICovCisgICAgICAgIGFkZGVuZCA9IFNNQUxMQ0hVTks7CisgICAgcmV0dXJuIGFkZGVuZCArIGN1cnJlbnRzaXplOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogZmlsZWlvX3JlYWRhbGwoZmlsZWlvICpzZWxmKQogeworI2lmZGVmIEhBVkVfRlNUQVQKKyAgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgICBQeV9vZmZfdCBwb3MsIGVuZDsKKyNlbmRpZgogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUHlfc3NpemVfdCB0b3RhbCA9IDA7CiAgICAgUHlfc3NpemVfdCBuOworICAgIHNpemVfdCBuZXdzaXplOwogCiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKQEAgLTU2OSw4ICs2MTksMjMgQEAKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisjaWZkZWYgSEFWRV9GU1RBVAorI2lmIGRlZmluZWQoTVNfV0lONjQpIHx8IGRlZmluZWQoTVNfV0lORE9XUykKKyAgICBwb3MgPSBfbHNlZWtpNjQoc2VsZi0+ZmQsIDBMLCBTRUVLX0NVUik7CisjZWxzZQorICAgIHBvcyA9IGxzZWVrKHNlbGYtPmZkLCAwTCwgU0VFS19DVVIpOworI2VuZGlmCisgICAgaWYgKGZzdGF0KHNlbGYtPmZkLCAmc3QpID09IDApCisgICAgICAgIGVuZCA9IHN0LnN0X3NpemU7CisgICAgZWxzZQorICAgICAgICBlbmQgPSAoUHlfb2ZmX3QpLTE7CisjZW5kaWYKICAgICB3aGlsZSAoMSkgewotICAgICAgICBzaXplX3QgbmV3c2l6ZSA9IG5ld19idWZmZXJzaXplKHNlbGYsIHRvdGFsKTsKKyNpZmRlZiBIQVZFX0ZTVEFUCisgICAgICAgIG5ld3NpemUgPSBuZXdfYnVmZmVyc2l6ZShzZWxmLCB0b3RhbCwgcG9zLCBlbmQpOworI2Vsc2UKKyAgICAgICAgbmV3c2l6ZSA9IG5ld19idWZmZXJzaXplKHNlbGYsIHRvdGFsKTsKKyNlbmRpZgogICAgICAgICBpZiAobmV3c2l6ZSA+IFBZX1NTSVpFX1RfTUFYIHx8IG5ld3NpemUgPD0gMCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgInVuYm91bmRlZCByZWFkIHJldHVybmVkIG1vcmUgYnl0ZXMgIgpAQCAtNjI1LDYgKzY5MCw5IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICB0b3RhbCArPSBuOworI2lmZGVmIEhBVkVfRlNUQVQKKyAgICAgICAgcG9zICs9IG47CisjZW5kaWYKICAgICB9CiAKICAgICBpZiAoUHlCeXRlc19HRVRfU0laRShyZXN1bHQpID4gdG90YWwpIHsKQEAgLTkzOCw2ICsxMDA2LDEyIEBACiBzdGF0aWMgY2hhciAqCiBtb2RlX3N0cmluZyhmaWxlaW8gKnNlbGYpCiB7CisgICAgaWYgKHNlbGYtPmNyZWF0ZWQpIHsKKyAgICAgICAgaWYgKHNlbGYtPnJlYWRhYmxlKQorICAgICAgICAgICAgcmV0dXJuICJ4YisiOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gInhiIjsKKyAgICB9CiAgICAgaWYgKHNlbGYtPnJlYWRhYmxlKSB7CiAgICAgICAgIGlmIChzZWxmLT53cml0YWJsZSkKICAgICAgICAgICAgIHJldHVybiAicmIrIjsKQEAgLTk1MSwxMiArMTAyNSwxMyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGZpbGVpb19yZXByKGZpbGVpbyAqc2VsZikKIHsKKyAgICBfUHlfSURFTlRJRklFUihuYW1lKTsKICAgICBQeU9iamVjdCAqbmFtZW9iaiwgKnJlczsKIAogICAgIGlmIChzZWxmLT5mZCA8IDApCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPF9pby5GaWxlSU8gW2Nsb3NlZF0+Iik7CiAKLSAgICBuYW1lb2JqID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QgKikgc2VsZiwgIm5hbWUiKTsKKyAgICBuYW1lb2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKikgc2VsZiwgJlB5SWRfbmFtZSk7CiAgICAgaWYgKG5hbWVvYmogPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtOTk2LDEzICsxMDcxLDE5IEBACiAKIAogUHlEb2NfU1RSVkFSKGZpbGVpb19kb2MsCi0iZmlsZShuYW1lOiBzdHJbLCBtb2RlOiBzdHJdKSAtPiBmaWxlIElPIG9iamVjdFxuIgorImZpbGUobmFtZTogc3RyWywgbW9kZTogc3RyXVssIG9wZW5lcjogTm9uZV0pIC0+IGZpbGUgSU8gb2JqZWN0XG4iCiAiXG4iCi0iT3BlbiBhIGZpbGUuICBUaGUgbW9kZSBjYW4gYmUgJ3InLCAndycgb3IgJ2EnIGZvciByZWFkaW5nIChkZWZhdWx0KSxcbiIKLSJ3cml0aW5nIG9yIGFwcGVuZGluZy4gIFRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4iCi0id2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOyBpdCB3aWxsIGJlIHRydW5jYXRlZCB3aGVuXG4iCi0ib3BlbmVkIGZvciB3cml0aW5nLiAgQWRkIGEgJysnIHRvIHRoZSBtb2RlIHRvIGFsbG93IHNpbXVsdGFuZW91c1xuIgotInJlYWRpbmcgYW5kIHdyaXRpbmcuIik7CisiT3BlbiBhIGZpbGUuICBUaGUgbW9kZSBjYW4gYmUgJ3InLCAndycsICd4JyBvciAnYScgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLFxuIgorIndyaXRpbmcsIGV4Y2x1c2l2ZSBjcmVhdGlvbiBvciBhcHBlbmRpbmcuICBUaGUgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgaWYgaXRcbiIKKyJkb2Vzbid0IGV4aXN0IHdoZW4gb3BlbmVkIGZvciB3cml0aW5nIG9yIGFwcGVuZGluZzsgaXQgd2lsbCBiZSB0cnVuY2F0ZWRcbiIKKyJ3aGVuIG9wZW5lZCBmb3Igd3JpdGluZy4gIEEgYEZpbGVFeGlzdHNFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYgaXQgYWxyZWFkeVxuIgorImV4aXN0cyB3aGVuIG9wZW5lZCBmb3IgY3JlYXRpbmcuIE9wZW5pbmcgYSBmaWxlIGZvciBjcmVhdGluZyBpbXBsaWVzXG4iCisid3JpdGluZyBzbyB0aGlzIG1vZGUgYmVoYXZlcyBpbiBhIHNpbWlsYXIgd2F5IHRvICd3Jy5BZGQgYSAnKycgdG8gdGhlIG1vZGVcbiIKKyJ0byBhbGxvdyBzaW11bHRhbmVvdXMgcmVhZGluZyBhbmQgd3JpdGluZy4gQSBjdXN0b20gb3BlbmVyIGNhbiBiZSB1c2VkIGJ5XG4iCisicGFzc2luZyBhIGNhbGxhYmxlIGFzICpvcGVuZXIqLiBUaGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlXG4iCisib2JqZWN0IGlzIHRoZW4gb2J0YWluZWQgYnkgY2FsbGluZyBvcGVuZXIgd2l0aCAoKm5hbWUqLCAqZmxhZ3MqKS5cbiIKKyIqb3BlbmVyKiBtdXN0IHJldHVybiBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciAocGFzc2luZyBvcy5vcGVuIGFzICpvcGVuZXIqXG4iCisicmVzdWx0cyBpbiBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gcGFzc2luZyBOb25lKS4iKTsKIAogUHlEb2NfU1RSVkFSKHJlYWRfZG9jLAogInJlYWQoc2l6ZTogaW50KSAtPiBieXRlcy4gIHJlYWQgYXQgbW9zdCBzaXplIGJ5dGVzLCByZXR1cm5lZCBhcyBieXRlcy5cbiIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2lvYmFzZS5jIGIvTW9kdWxlcy9faW8vaW9iYXNlLmMKaW5kZXggYWU4OTc5Ny4uZTM4NDczYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vaW9iYXNlLmMKKysrIGIvTW9kdWxlcy9faW8vaW9iYXNlLmMKQEAgLTU5LDggKzU5LDkgQEAKICAgIG9mIHRoZSBJT0Jhc2Ugb2JqZWN0IHJhdGhlciB0aGFuIHRoZSB2aXJ0dWFsIGBjbG9zZWRgIGF0dHJpYnV0ZSBhcyByZXR1cm5lZAogICAgYnkgd2hhdGV2ZXIgc3ViY2xhc3MuICovCiAKK19QeV9JREVOVElGSUVSKF9fSU9CYXNlX2Nsb3NlZCk7CiAjZGVmaW5lIElTX0NMT1NFRChzZWxmKSBcCi0gICAgUHlPYmplY3RfSGFzQXR0clN0cmluZyhzZWxmLCAiX19JT0Jhc2VfY2xvc2VkIikKKyAgICBfUHlPYmplY3RfSGFzQXR0cklkKHNlbGYsICZQeUlkX19fSU9CYXNlX2Nsb3NlZCkKIAogLyogSW50ZXJuYWwgbWV0aG9kcyAqLwogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTk3LDcgKzk4LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBpb2Jhc2VfdGVsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgInNlZWsiLCAiaWkiLCAwLCAxKTsKKyAgICBfUHlfSURFTlRJRklFUihzZWVrKTsKKworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYsICZQeUlkX3NlZWssICJpaSIsIDAsIDEpOwogfQogCiBQeURvY19TVFJWQVIoaW9iYXNlX3RydW5jYXRlX2RvYywKQEAgLTE1NiwxOSArMTU5LDYgQEAKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKElTX0NMT1NFRChzZWxmKSk7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1pb2Jhc2VfZ2V0X2RpY3QoUHlPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlPYmplY3QgKipkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIoc2VsZik7Ci0gICAgUHlPYmplY3QgKmRpY3Q7Ci0gICAgYXNzZXJ0KGRpY3RwdHIpOwotICAgIGRpY3QgPSAqZGljdHB0cjsKLSAgICBpZiAoZGljdCA9PSBOVUxMKQotICAgICAgICBkaWN0ID0gKmRpY3RwdHIgPSBQeURpY3RfTmV3KCk7Ci0gICAgUHlfWElOQ1JFRihkaWN0KTsKLSAgICByZXR1cm4gZGljdDsKLX0KLQogUHlPYmplY3QgKgogX1B5SU9CYXNlX2NoZWNrX2Nsb3NlZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0xOTAsMTIgKzE4MCwxMyBAQAogaW9iYXNlX2Nsb3NlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmVzOworICAgIF9QeV9JREVOVElGSUVSKF9fSU9CYXNlX2Nsb3NlZCk7CiAKICAgICBpZiAoSVNfQ0xPU0VEKHNlbGYpKQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIAogICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNlbGYsIF9QeUlPX3N0cl9mbHVzaCwgTlVMTCk7Ci0gICAgUHlPYmplY3RfU2V0QXR0clN0cmluZyhzZWxmLCAiX19JT0Jhc2VfY2xvc2VkIiwgUHlfVHJ1ZSk7CisgICAgX1B5T2JqZWN0X1NldEF0dHJJZChzZWxmLCAmUHlJZF9fX0lPQmFzZV9jbG9zZWQsIFB5X1RydWUpOwogICAgIGlmIChyZXMgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC00NjQsMTIgKzQ1NSwxNCBAQAogICAgIGludCBoYXNfcGVlayA9IDA7CiAgICAgUHlPYmplY3QgKmJ1ZmZlciwgKnJlc3VsdDsKICAgICBQeV9zc2l6ZV90IG9sZF9zaXplID0gLTE7CisgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CisgICAgX1B5X0lERU5USUZJRVIocGVlayk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkbGluZSIsICZfUHlJT19Db252ZXJ0U3NpemVfdCwgJmxpbWl0KSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhzZWxmLCAicGVlayIpKQorICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKHNlbGYsICZQeUlkX3BlZWspKQogICAgICAgICBoYXNfcGVlayA9IDE7CiAKICAgICBidWZmZXIgPSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKQEAgLTQ4MSw3ICs0NzQsNyBAQAogICAgICAgICBQeU9iamVjdCAqYjsKIAogICAgICAgICBpZiAoaGFzX3BlZWspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpyZWFkYWhlYWQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYsICJwZWVrIiwgImkiLCAxKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZWFkYWhlYWQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYsICZQeUlkX3BlZWssICJpIiwgMSk7CiAgICAgICAgICAgICBpZiAocmVhZGFoZWFkID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAvKiBOT1RFOiBQeUVycl9TZXRGcm9tRXJybm8oKSBjYWxscyBQeUVycl9DaGVja1NpZ25hbHMoKQogICAgICAgICAgICAgICAgICAgIHdoZW4gRUlOVFIgb2NjdXJzIHNvIHdlIG5lZWRuJ3QgZG8gaXQgb3Vyc2VsdmVzLiAqLwpAQCAtNTIxLDcgKzUxNCw3IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYocmVhZGFoZWFkKTsKICAgICAgICAgfQogCi0gICAgICAgIGIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYsICJyZWFkIiwgIm4iLCBucmVhZGFoZWFkKTsKKyAgICAgICAgYiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfcmVhZCwgIm4iLCBucmVhZGFoZWFkKTsKICAgICAgICAgaWYgKGIgPT0gTlVMTCkgewogICAgICAgICAgICAgLyogTk9URTogUHlFcnJfU2V0RnJvbUVycm5vKCkgY2FsbHMgUHlFcnJfQ2hlY2tTaWduYWxzKCkKICAgICAgICAgICAgICAgIHdoZW4gRUlOVFIgb2NjdXJzIHNvIHdlIG5lZWRuJ3QgZG8gaXQgb3Vyc2VsdmVzLiAqLwpAQCAtNjEzLDcgKzYwNiw5IEBACiAgICAgICAgIC8qIFhYWCBzcGVjaWFsLWNhc2luZyB0aGlzIG1hZGUgc2Vuc2UgaW4gdGhlIFB5dGhvbiB2ZXJzaW9uIGluIG9yZGVyCiAgICAgICAgICAgIHRvIHJlbW92ZSB0aGUgYnl0ZWNvZGUgaW50ZXJwcmV0YXRpb24gb3ZlcmhlYWQsIGJ1dCBpdCBjb3VsZAogICAgICAgICAgICBwcm9iYWJseSBiZSByZW1vdmVkIGhlcmUuICovCi0gICAgICAgIFB5T2JqZWN0ICpyZXQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHJlc3VsdCwgImV4dGVuZCIsICJPIiwgc2VsZik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGV4dGVuZCk7CisgICAgICAgIFB5T2JqZWN0ICpyZXQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJlc3VsdCwgJlB5SWRfZXh0ZW5kLCAiTyIsIHNlbGYpOworCiAgICAgICAgIGlmIChyZXQgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTcxOSw3ICs3MTQsNyBAQAogfTsKIAogc3RhdGljIFB5R2V0U2V0RGVmIGlvYmFzZV9nZXRzZXRbXSA9IHsKLSAgICB7Il9fZGljdF9fIiwgKGdldHRlcilpb2Jhc2VfZ2V0X2RpY3QsIE5VTEwsIE5VTEx9LAorICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgTlVMTCwgTlVMTH0sCiAgICAgeyJjbG9zZWQiLCAoZ2V0dGVyKWlvYmFzZV9jbG9zZWRfZ2V0LCBOVUxMLCBOVUxMfSwKICAgICB7TlVMTH0KIH07CkBAIC03OTYsOCArNzkxLDExIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChuIDwgMCkKLSAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgInJlYWRhbGwiLCBOVUxMKTsKKyAgICBpZiAobiA8IDApIHsKKyAgICAgICAgX1B5X0lERU5USUZJRVIocmVhZGFsbCk7CisKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfcmVhZGFsbCwgTlVMTCk7CisgICAgfQogCiAgICAgLyogVE9ETzogYWxsb2NhdGUgYSBieXRlcyBvYmplY3QgZGlyZWN0bHkgaW5zdGVhZCBhbmQgbWFudWFsbHkgY29uc3RydWN0CiAgICAgICAgYSB3cml0YWJsZSBtZW1vcnl2aWV3IHBvaW50aW5nIHRvIGl0LiAqLwpAQCAtODM4LDggKzgzNiw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgUHlPYmplY3QgKmRhdGEgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYsICJyZWFkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpIiwgREVGQVVMVF9CVUZGRVJfU0laRSk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHJlYWQpOworICAgICAgICBQeU9iamVjdCAqZGF0YSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpIiwgREVGQVVMVF9CVUZGRVJfU0laRSk7CiAgICAgICAgIGlmICghZGF0YSkgewogICAgICAgICAgICAgLyogTk9URTogUHlFcnJfU2V0RnJvbUVycm5vKCkgY2FsbHMgUHlFcnJfQ2hlY2tTaWduYWxzKCkKICAgICAgICAgICAgICAgIHdoZW4gRUlOVFIgb2NjdXJzIHNvIHdlIG5lZWRuJ3QgZG8gaXQgb3Vyc2VsdmVzLiAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vc3RyaW5naW8uYyBiL01vZHVsZXMvX2lvL3N0cmluZ2lvLmMKaW5kZXggMWYxZmE0MC4uOWQ3Mzg4NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vc3RyaW5naW8uYworKysgYi9Nb2R1bGVzL19pby9zdHJpbmdpby5jCkBAIC0xLDE5ICsxLDMyIEBACiAjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKKyNpbmNsdWRlICJhY2N1LmgiCiAjaW5jbHVkZSAiX2lvbW9kdWxlLmgiCiAKIC8qIEltcGxlbWVudGF0aW9uIG5vdGU6IHRoZSBidWZmZXIgaXMgYWx3YXlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgbG9uZ2VyCiAgICB0aGFuIHRoZSBlbmNsb3NlZCBzdHJpbmcsIGZvciBwcm9wZXIgZnVuY3Rpb25pbmcgb2YgX1B5SU9fZmluZF9saW5lX2VuZGluZy4KICovCiAKKyNkZWZpbmUgU1RBVEVfUkVBTElaRUQgMQorI2RlZmluZSBTVEFURV9BQ0NVTVVMQVRJTkcgMgorCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5X1VOSUNPREUgKmJ1ZjsKKyAgICBQeV9VQ1M0ICpidWY7CiAgICAgUHlfc3NpemVfdCBwb3M7CiAgICAgUHlfc3NpemVfdCBzdHJpbmdfc2l6ZTsKICAgICBzaXplX3QgYnVmX3NpemU7CiAKKyAgICAvKiBUaGUgc3RyaW5naW8gb2JqZWN0IGNhbiBiZSBpbiB0d28gc3RhdGVzOiBhY2N1bXVsYXRpbmcgb3IgcmVhbGl6ZWQuCisgICAgICAgSW4gYWNjdW11bGF0aW5nIHN0YXRlLCB0aGUgaW50ZXJuYWwgYnVmZmVyIGNvbnRhaW5zIG5vdGhpbmcgYW5kCisgICAgICAgdGhlIGNvbnRlbnRzIGFyZSBnaXZlbiBieSB0aGUgZW1iZWRkZWQgX1B5QWNjdSBzdHJ1Y3R1cmUuCisgICAgICAgSW4gcmVhbGl6ZWQgc3RhdGUsIHRoZSBpbnRlcm5hbCBidWZmZXIgaXMgbWVhbmluZ2Z1bCBhbmQgdGhlCisgICAgICAgX1B5QWNjdSBpcyBkZXN0cm95ZWQuCisgICAgKi8KKyAgICBpbnQgc3RhdGU7CisgICAgX1B5QWNjdSBhY2N1OworCiAgICAgY2hhciBvazsgLyogaW5pdGlhbGl6ZWQ/ICovCiAgICAgY2hhciBjbG9zZWQ7CiAgICAgY2hhciByZWFkdW5pdmVyc2FsOwpAQCAtMjEsNyArMzQsNyBAQAogICAgIFB5T2JqZWN0ICpkZWNvZGVyOwogICAgIFB5T2JqZWN0ICpyZWFkbmw7CiAgICAgUHlPYmplY3QgKndyaXRlbmw7Ci0gICAgCisKICAgICBQeU9iamVjdCAqZGljdDsKICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CiB9IHN0cmluZ2lvOwpAQCAtNDAsNiArNTMsMTEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7IFwKICAgICB9CiAKKyNkZWZpbmUgRU5TVVJFX1JFQUxJWkVEKHNlbGYpIFwKKyAgICBpZiAocmVhbGl6ZShzZWxmKSA8IDApIHsgXAorICAgICAgICByZXR1cm4gTlVMTDsgXAorICAgIH0KKwogUHlEb2NfU1RSVkFSKHN0cmluZ2lvX2RvYywKICAgICAiVGV4dCBJL08gaW1wbGVtZW50YXRpb24gdXNpbmcgYW4gaW4tbWVtb3J5IGJ1ZmZlci5cbiIKICAgICAiXG4iCkBAIC01Niw3ICs3NCw3IEBACiAgICAgLyogSGVyZSwgdW5zaWduZWQgdHlwZXMgYXJlIHVzZWQgdG8gYXZvaWQgZGVhbGluZyB3aXRoIHNpZ25lZCBpbnRlZ2VyCiAgICAgICAgb3ZlcmZsb3csIHdoaWNoIGlzIHVuZGVmaW5lZCBpbiBDLiAqLwogICAgIHNpemVfdCBhbGxvYyA9IHNlbGYtPmJ1Zl9zaXplOwotICAgIFB5X1VOSUNPREUgKm5ld19idWYgPSBOVUxMOworICAgIFB5X1VDUzQgKm5ld19idWYgPSBOVUxMOwogCiAgICAgYXNzZXJ0KHNlbGYtPmJ1ZiAhPSBOVUxMKTsKIApAQCAtODQsMTAgKzEwMiw5IEBACiAgICAgICAgIGFsbG9jID0gc2l6ZSArIDE7CiAgICAgfQogCi0gICAgaWYgKGFsbG9jID4gKChzaXplX3QpLTEpIC8gc2l6ZW9mKFB5X1VOSUNPREUpKQorICAgIGlmIChhbGxvYyA+IFBZX1NJWkVfTUFYIC8gc2l6ZW9mKFB5X1VDUzQpKQogICAgICAgICBnb3RvIG92ZXJmbG93OwotICAgIG5ld19idWYgPSAoUHlfVU5JQ09ERSAqKVB5TWVtX1JlYWxsb2Moc2VsZi0+YnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2MgKiBzaXplb2YoUHlfVU5JQ09ERSkpOworICAgIG5ld19idWYgPSAoUHlfVUNTNCAqKVB5TWVtX1JlYWxsb2Moc2VsZi0+YnVmLCBhbGxvYyAqIHNpemVvZihQeV9VQ1M0KSk7CiAgICAgaWYgKG5ld19idWYgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gLTE7CkBAIC0xMDMsMTQgKzEyMCw2MiBAQAogICAgIHJldHVybiAtMTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK21ha2VfaW50ZXJtZWRpYXRlKHN0cmluZ2lvICpzZWxmKQoreworICAgIFB5T2JqZWN0ICppbnRlcm1lZGlhdGUgPSBfUHlBY2N1X0ZpbmlzaCgmc2VsZi0+YWNjdSk7CisgICAgc2VsZi0+c3RhdGUgPSBTVEFURV9SRUFMSVpFRDsKKyAgICBpZiAoaW50ZXJtZWRpYXRlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChfUHlBY2N1X0luaXQoJnNlbGYtPmFjY3UpIHx8CisgICAgICAgIF9QeUFjY3VfQWNjdW11bGF0ZSgmc2VsZi0+YWNjdSwgaW50ZXJtZWRpYXRlKSkgeworICAgICAgICBQeV9ERUNSRUYoaW50ZXJtZWRpYXRlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHNlbGYtPnN0YXRlID0gU1RBVEVfQUNDVU1VTEFUSU5HOworICAgIHJldHVybiBpbnRlcm1lZGlhdGU7Cit9CisKK3N0YXRpYyBpbnQKK3JlYWxpemUoc3RyaW5naW8gKnNlbGYpCit7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlPYmplY3QgKmludGVybWVkaWF0ZTsKKworICAgIGlmIChzZWxmLT5zdGF0ZSA9PSBTVEFURV9SRUFMSVpFRCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgYXNzZXJ0KHNlbGYtPnN0YXRlID09IFNUQVRFX0FDQ1VNVUxBVElORyk7CisgICAgc2VsZi0+c3RhdGUgPSBTVEFURV9SRUFMSVpFRDsKKworICAgIGludGVybWVkaWF0ZSA9IF9QeUFjY3VfRmluaXNoKCZzZWxmLT5hY2N1KTsKKyAgICBpZiAoaW50ZXJtZWRpYXRlID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIEFwcGVuZCB0aGUgaW50ZXJtZWRpYXRlIHN0cmluZyB0byB0aGUgaW50ZXJuYWwgYnVmZmVyLgorICAgICAgIFRoZSBsZW5ndGggc2hvdWxkIGJlIGVxdWFsIHRvIHRoZSBjdXJyZW50IGN1cnNvciBwb3NpdGlvbi4KKyAgICAgKi8KKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnRlcm1lZGlhdGUpOworICAgIGlmIChyZXNpemVfYnVmZmVyKHNlbGYsIGxlbikgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihpbnRlcm1lZGlhdGUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICghUHlVbmljb2RlX0FzVUNTNChpbnRlcm1lZGlhdGUsIHNlbGYtPmJ1ZiwgbGVuLCAwKSkgeworICAgICAgICBQeV9ERUNSRUYoaW50ZXJtZWRpYXRlKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5X0RFQ1JFRihpbnRlcm1lZGlhdGUpOworICAgIHJldHVybiAwOworfQorCiAvKiBJbnRlcm5hbCByb3V0aW5lIGZvciB3cml0aW5nIGEgd2hvbGUgUHlVbmljb2RlIG9iamVjdCB0byB0aGUgYnVmZmVyIG9mIGEKICAgIFN0cmluZ0lPIG9iamVjdC4gUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG9yIC0xIG9uIGVycm9yLiAqLwogc3RhdGljIFB5X3NzaXplX3QKIHdyaXRlX3N0cihzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKm9iaikKIHsKLSAgICBQeV9VTklDT0RFICpzdHI7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlPYmplY3QgKmRlY29kZWQgPSBOVUxMOworCiAgICAgYXNzZXJ0KHNlbGYtPmJ1ZiAhPSBOVUxMKTsKICAgICBhc3NlcnQoc2VsZi0+cG9zID49IDApOwogCkBAIC0xMzIsOSArMTk3LDExIEBACiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soZGVjb2RlZCkpOwotICAgIHN0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKGRlY29kZWQpOwotICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShkZWNvZGVkKTsKLQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoZGVjb2RlZCkpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlY29kZWQpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGRlY29kZWQpOwogICAgIGFzc2VydChsZW4gPj0gMCk7CiAKICAgICAvKiBUaGlzIG92ZXJmbG93IGNoZWNrIGlzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnkuIEhvd2V2ZXIsIGl0IGF2b2lkcyB1cyB0bwpAQCAtMTQ1LDYgKzIxMiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIm5ldyBwb3NpdGlvbiB0b28gbGFyZ2UiKTsKICAgICAgICAgZ290byBmYWlsOwogICAgIH0KKworICAgIGlmIChzZWxmLT5zdGF0ZSA9PSBTVEFURV9BQ0NVTVVMQVRJTkcpIHsKKyAgICAgICAgaWYgKHNlbGYtPnN0cmluZ19zaXplID09IHNlbGYtPnBvcykgeworICAgICAgICAgICAgaWYgKF9QeUFjY3VfQWNjdW11bGF0ZSgmc2VsZi0+YWNjdSwgZGVjb2RlZCkpCisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgZ290byBzdWNjZXNzOworICAgICAgICB9CisgICAgICAgIGlmIChyZWFsaXplKHNlbGYpKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgIH0KKwogICAgIGlmIChzZWxmLT5wb3MgKyBsZW4gPiBzZWxmLT5zdHJpbmdfc2l6ZSkgewogICAgICAgICBpZiAocmVzaXplX2J1ZmZlcihzZWxmLCBzZWxmLT5wb3MgKyBsZW4pIDwgMCkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTE2MSwxOCArMjM5LDIyIEBACiAKICAgICAgICAgKi8KICAgICAgICAgbWVtc2V0KHNlbGYtPmJ1ZiArIHNlbGYtPnN0cmluZ19zaXplLCAnXDAnLAotICAgICAgICAgICAgICAgKHNlbGYtPnBvcyAtIHNlbGYtPnN0cmluZ19zaXplKSAqIHNpemVvZihQeV9VTklDT0RFKSk7CisgICAgICAgICAgICAgICAoc2VsZi0+cG9zIC0gc2VsZi0+c3RyaW5nX3NpemUpICogc2l6ZW9mKFB5X1VDUzQpKTsKICAgICB9CiAKICAgICAvKiBDb3B5IHRoZSBkYXRhIHRvIHRoZSBpbnRlcm5hbCBidWZmZXIsIG92ZXJ3cml0aW5nIHNvbWUgb2YgdGhlCiAgICAgICAgZXhpc3RpbmcgZGF0YSBpZiBzZWxmLT5wb3MgPCBzZWxmLT5zdHJpbmdfc2l6ZS4gKi8KLSAgICBtZW1jcHkoc2VsZi0+YnVmICsgc2VsZi0+cG9zLCBzdHIsIGxlbiAqIHNpemVvZihQeV9VTklDT0RFKSk7Ci0gICAgc2VsZi0+cG9zICs9IGxlbjsKKyAgICBpZiAoIVB5VW5pY29kZV9Bc1VDUzQoZGVjb2RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+YnVmICsgc2VsZi0+cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5idWZfc2l6ZSAtIHNlbGYtPnBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMCkpCisgICAgICAgIGdvdG8gZmFpbDsKIAorc3VjY2VzczoKICAgICAvKiBTZXQgdGhlIG5ldyBsZW5ndGggb2YgdGhlIGludGVybmFsIHN0cmluZyBpZiBpdCBoYXMgY2hhbmdlZC4gKi8KLSAgICBpZiAoc2VsZi0+c3RyaW5nX3NpemUgPCBzZWxmLT5wb3MpIHsKKyAgICBzZWxmLT5wb3MgKz0gbGVuOworICAgIGlmIChzZWxmLT5zdHJpbmdfc2l6ZSA8IHNlbGYtPnBvcykKICAgICAgICAgc2VsZi0+c3RyaW5nX3NpemUgPSBzZWxmLT5wb3M7Ci0gICAgfQogCiAgICAgUHlfREVDUkVGKGRlY29kZWQpOwogICAgIHJldHVybiAwOwpAQCAtMTkwLDcgKzI3MiwxMCBAQAogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHNlbGYtPmJ1Ziwgc2VsZi0+c3RyaW5nX3NpemUpOworICAgIGlmIChzZWxmLT5zdGF0ZSA9PSBTVEFURV9BQ0NVTVVMQVRJTkcpCisgICAgICAgIHJldHVybiBtYWtlX2ludGVybWVkaWF0ZShzZWxmKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwgc2VsZi0+YnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0cmluZ19zaXplKTsKIH0KIAogUHlEb2NfU1RSVkFSKHN0cmluZ2lvX3RlbGxfZG9jLApAQCAtMjE0LDcgKzI5OSw3IEBACiBzdHJpbmdpb19yZWFkKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeV9zc2l6ZV90IHNpemUsIG47Ci0gICAgUHlfVU5JQ09ERSAqb3V0cHV0OworICAgIFB5X1VDUzQgKm91dHB1dDsKICAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKIAogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwpAQCAtMjQ1LDIxICszMzAsMjkgQEAKICAgICAgICAgICAgIHNpemUgPSAwOwogICAgIH0KIAorICAgIC8qIE9wdGltaXphdGlvbiBmb3Igc2VlaygwKTsgcmVhZCgpICovCisgICAgaWYgKHNlbGYtPnN0YXRlID09IFNUQVRFX0FDQ1VNVUxBVElORyAmJiBzZWxmLT5wb3MgPT0gMCAmJiBzaXplID09IG4pIHsKKyAgICAgICAgUHlPYmplY3QgKnJlc3VsdCA9IG1ha2VfaW50ZXJtZWRpYXRlKHNlbGYpOworICAgICAgICBzZWxmLT5wb3MgPSBzZWxmLT5zdHJpbmdfc2l6ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBFTlNVUkVfUkVBTElaRUQoc2VsZik7CiAgICAgb3V0cHV0ID0gc2VsZi0+YnVmICsgc2VsZi0+cG9zOwogICAgIHNlbGYtPnBvcyArPSBzaXplOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUob3V0cHV0LCBzaXplKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwgb3V0cHV0LCBzaXplKTsKIH0KIAogLyogSW50ZXJuYWwgaGVscGVyLCB1c2VkIGJ5IHN0cmluZ2lvX3JlYWRsaW5lIGFuZCBzdHJpbmdpb19pdGVybmV4dCAqLwogc3RhdGljIFB5T2JqZWN0ICoKIF9zdHJpbmdpb19yZWFkbGluZShzdHJpbmdpbyAqc2VsZiwgUHlfc3NpemVfdCBsaW1pdCkKIHsKLSAgICBQeV9VTklDT0RFICpzdGFydCwgKmVuZCwgb2xkX2NoYXI7CisgICAgUHlfVUNTNCAqc3RhcnQsICplbmQsIG9sZF9jaGFyOwogICAgIFB5X3NzaXplX3QgbGVuLCBjb25zdW1lZDsKIAogICAgIC8qIEluIGNhc2Ugb2Ygb3ZlcnNlZWssIHJldHVybiB0aGUgZW1wdHkgc3RyaW5nICovCiAgICAgaWYgKHNlbGYtPnBvcyA+PSBzZWxmLT5zdHJpbmdfc2l6ZSkKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9OZXcoMCwgMCk7CiAKICAgICBzdGFydCA9IHNlbGYtPmJ1ZiArIHNlbGYtPnBvczsKICAgICBpZiAobGltaXQgPCAwIHx8IGxpbWl0ID4gc2VsZi0+c3RyaW5nX3NpemUgLSBzZWxmLT5wb3MpCkBAIC0yNzAsMTQgKzM2MywxNCBAQAogICAgICplbmQgPSAnXDAnOwogICAgIGxlbiA9IF9QeUlPX2ZpbmRfbGluZV9lbmRpbmcoCiAgICAgICAgIHNlbGYtPnJlYWR0cmFuc2xhdGUsIHNlbGYtPnJlYWR1bml2ZXJzYWwsIHNlbGYtPnJlYWRubCwKLSAgICAgICAgc3RhcnQsIGVuZCwgJmNvbnN1bWVkKTsKKyAgICAgICAgUHlVbmljb2RlXzRCWVRFX0tJTkQsIChjaGFyKilzdGFydCwgKGNoYXIqKWVuZCwgJmNvbnN1bWVkKTsKICAgICAqZW5kID0gb2xkX2NoYXI7CiAgICAgLyogSWYgd2UgaGF2ZW4ndCBmb3VuZCBhbnkgbGluZSBlbmRpbmcsIHdlIGp1c3QgcmV0dXJuIGV2ZXJ5dGhpbmcKICAgICAgICAoYGNvbnN1bWVkYCBpcyBpZ25vcmVkKS4gKi8KICAgICBpZiAobGVuIDwgMCkKICAgICAgICAgbGVuID0gbGltaXQ7CiAgICAgc2VsZi0+cG9zICs9IGxlbjsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHN0YXJ0LCBsZW4pOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELCBzdGFydCwgbGVuKTsKIH0KIAogUHlEb2NfU1RSVkFSKHN0cmluZ2lvX3JlYWRsaW5lX2RvYywKQEAgLTI5NSw2ICszODgsNyBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86cmVhZGxpbmUiLCAmYXJnKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOworICAgIEVOU1VSRV9SRUFMSVpFRChzZWxmKTsKIAogICAgIGlmIChQeU51bWJlcl9DaGVjayhhcmcpKSB7CiAgICAgICAgIGxpbWl0ID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgUHlFeGNfT3ZlcmZsb3dFcnJvcik7CkBAIC0zMTYsNiArNDEwLDcgQEAKIAogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKKyAgICBFTlNVUkVfUkVBTElaRUQoc2VsZik7CiAKICAgICBpZiAoUHlfVFlQRShzZWxmKSA9PSAmUHlTdHJpbmdJT19UeXBlKSB7CiAgICAgICAgIC8qIFNraXAgbWV0aG9kIGNhbGwgb3ZlcmhlYWQgZm9yIHNwZWVkICovCkBAIC0zMzcsNyArNDMyLDcgQEAKICAgICBpZiAobGluZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUobGluZSkgPT0gMCkgeworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChsaW5lKSA9PSAwKSB7CiAgICAgICAgIC8qIFJlYWNoZWQgRU9GICovCiAgICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zODYsNiArNDgxLDcgQEAKICAgICB9CiAKICAgICBpZiAoc2l6ZSA8IHNlbGYtPnN0cmluZ19zaXplKSB7CisgICAgICAgIEVOU1VSRV9SRUFMSVpFRChzZWxmKTsKICAgICAgICAgaWYgKHJlc2l6ZV9idWZmZXIoc2VsZiwgc2l6ZSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHNlbGYtPnN0cmluZ19zaXplID0gc2l6ZTsKQEAgLTQ2Miw4ICs1NTgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKLSAgICBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKG9iaik7CisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CiAKICAgICBpZiAoc2l6ZSA+IDAgJiYgd3JpdGVfc3RyKHNlbGYsIG9iaikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ4NCw2ICs1ODIsNyBAQAogICAgIC8qIEZyZWUgdXAgc29tZSBtZW1vcnkgKi8KICAgICBpZiAocmVzaXplX2J1ZmZlcihzZWxmLCAwKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIF9QeUFjY3VfRGVzdHJveSgmc2VsZi0+YWNjdSk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+cmVhZG5sKTsKICAgICBQeV9DTEVBUihzZWxmLT53cml0ZW5sKTsKICAgICBQeV9DTEVBUihzZWxmLT5kZWNvZGVyKTsKQEAgLTUxMyw2ICs2MTIsNyBAQAogICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPmJ1Zik7CiAgICAgICAgIHNlbGYtPmJ1ZiA9IE5VTEw7CiAgICAgfQorICAgIF9QeUFjY3VfRGVzdHJveSgmc2VsZi0+YWNjdSk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+cmVhZG5sKTsKICAgICBQeV9DTEVBUihzZWxmLT53cml0ZW5sKTsKICAgICBQeV9DTEVBUihzZWxmLT5kZWNvZGVyKTsKQEAgLTUzNSw3ICs2MzUsNyBAQAogICAgIC8qIHRwX2FsbG9jIGluaXRpYWxpemVzIGFsbCB0aGUgZmllbGRzIHRvIHplcm8uIFNvIHdlIGRvbid0IGhhdmUgdG8KICAgICAgICBpbml0aWFsaXplIHRoZW0gaGVyZS4gKi8KIAotICAgIHNlbGYtPmJ1ZiA9IChQeV9VTklDT0RFICopUHlNZW1fTWFsbG9jKDApOworICAgIHNlbGYtPmJ1ZiA9IChQeV9VQ1M0ICopUHlNZW1fTWFsbG9jKDApOwogICAgIGlmIChzZWxmLT5idWYgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwpAQCAtNTUxLDYgKzY1MSw3IEBACiAgICAgUHlPYmplY3QgKnZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmV3bGluZV9vYmogPSBOVUxMOwogICAgIGNoYXIgKm5ld2xpbmUgPSAiXG4iOworICAgIFB5X3NzaXplX3QgdmFsdWVfbGVuOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPTzpfX2luaXRfXyIsIGt3bGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWUsICZuZXdsaW5lX29iaikpCkBAIC01OTIsNiArNjkzLDcgQEAKIAogICAgIHNlbGYtPm9rID0gMDsKIAorICAgIF9QeUFjY3VfRGVzdHJveSgmc2VsZi0+YWNjdSk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+cmVhZG5sKTsKICAgICBQeV9DTEVBUihzZWxmLT53cml0ZW5sKTsKICAgICBQeV9DTEVBUihzZWxmLT5kZWNvZGVyKTsKQEAgLTYyOCwxOSArNzMwLDI3IEBACiAgICAgLyogTm93IGV2ZXJ5dGhpbmcgaXMgc2V0IHVwLCByZXNpemUgYnVmZmVyIHRvIHNpemUgb2YgaW5pdGlhbCB2YWx1ZSwKICAgICAgICBhbmQgY29weSBpdCAqLwogICAgIHNlbGYtPnN0cmluZ19zaXplID0gMDsKLSAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT0gUHlfTm9uZSkgewotICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HZXRTaXplKHZhbHVlKTsKKyAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT0gUHlfTm9uZSkKKyAgICAgICAgdmFsdWVfbGVuID0gUHlVbmljb2RlX0dldExlbmd0aCh2YWx1ZSk7CisgICAgZWxzZQorICAgICAgICB2YWx1ZV9sZW4gPSAwOworICAgIGlmICh2YWx1ZV9sZW4gPiAwKSB7CiAgICAgICAgIC8qIFRoaXMgaXMgYSBoZXVyaXN0aWMsIGZvciBuZXdsaW5lIHRyYW5zbGF0aW9uIG1pZ2h0IGNoYW5nZQogICAgICAgICAgICB0aGUgc3RyaW5nIGxlbmd0aC4gKi8KLSAgICAgICAgaWYgKHJlc2l6ZV9idWZmZXIoc2VsZiwgbGVuKSA8IDApCisgICAgICAgIGlmIChyZXNpemVfYnVmZmVyKHNlbGYsIDApIDwgMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgc2VsZi0+c3RhdGUgPSBTVEFURV9SRUFMSVpFRDsKICAgICAgICAgc2VsZi0+cG9zID0gMDsKICAgICAgICAgaWYgKHdyaXRlX3N0cihzZWxmLCB2YWx1ZSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBlbHNlIHsKKyAgICAgICAgLyogRW1wdHkgc3RyaW5naW8gb2JqZWN0LCB3ZSBjYW4gc3RhcnQgYnkgYWNjdW11bGF0aW5nICovCiAgICAgICAgIGlmIChyZXNpemVfYnVmZmVyKHNlbGYsIDApIDwgMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKF9QeUFjY3VfSW5pdCgmc2VsZi0+YWNjdSkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHNlbGYtPnN0YXRlID0gU1RBVEVfQUNDVU1VTEFUSU5HOwogICAgIH0KICAgICBzZWxmLT5wb3MgPSAwOwogCkBAIC03NjAsMTEgKzg3MCwyMiBAQAogICAgICAgIG9uY2UgYnkgX19pbml0X18uIFNvIHdlIGRvIG5vdCB0YWtlIGFueSBjaGFuY2UgYW5kIHJlcGxhY2Ugb2JqZWN0J3MKICAgICAgICBidWZmZXIgY29tcGxldGVseS4gKi8KICAgICB7Ci0gICAgICAgIFB5X1VOSUNPREUgKmJ1ZiA9IFB5VW5pY29kZV9BU19VTklDT0RFKFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIDApKTsKLSAgICAgICAgUHlfc3NpemVfdCBidWZzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIDApKTsKLSAgICAgICAgaWYgKHJlc2l6ZV9idWZmZXIoc2VsZiwgYnVmc2l6ZSkgPCAwKQorICAgICAgICBQeU9iamVjdCAqaXRlbTsKKyAgICAgICAgUHlfVUNTNCAqYnVmOworICAgICAgICBQeV9zc2l6ZV90IGJ1ZnNpemU7CisKKyAgICAgICAgaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIDApOworICAgICAgICBidWYgPSBQeVVuaWNvZGVfQXNVQ1M0Q29weShpdGVtKTsKKyAgICAgICAgaWYgKGJ1ZiA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIG1lbWNweShzZWxmLT5idWYsIGJ1ZiwgYnVmc2l6ZSAqIHNpemVvZihQeV9VTklDT0RFKSk7CisgICAgICAgIGJ1ZnNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpdGVtKTsKKworICAgICAgICBpZiAocmVzaXplX2J1ZmZlcihzZWxmLCBidWZzaXplKSA8IDApIHsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIG1lbWNweShzZWxmLT5idWYsIGJ1ZiwgYnVmc2l6ZSAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKICAgICAgICAgc2VsZi0+c3RyaW5nX3NpemUgPSBidWZzaXplOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vdGV4dGlvLmMgYi9Nb2R1bGVzL19pby90ZXh0aW8uYwppbmRleCBhODIzMWJlLi5jZmY5YzZlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby90ZXh0aW8uYworKysgYi9Nb2R1bGVzL19pby90ZXh0aW8uYwpAQCAtMTEsNiArMTEsMjcgQEAKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJfaW9tb2R1bGUuaCIKIAorX1B5X0lERU5USUZJRVIoY2xvc2UpOworX1B5X0lERU5USUZJRVIoX2RlYWxsb2Nfd2Fybik7CitfUHlfSURFTlRJRklFUihkZWNvZGUpOworX1B5X0lERU5USUZJRVIoZmlsZW5vKTsKK19QeV9JREVOVElGSUVSKGZsdXNoKTsKK19QeV9JREVOVElGSUVSKGdldHByZWZlcnJlZGVuY29kaW5nKTsKK19QeV9JREVOVElGSUVSKGlzYXR0eSk7CitfUHlfSURFTlRJRklFUihtb2RlKTsKK19QeV9JREVOVElGSUVSKG5hbWUpOworX1B5X0lERU5USUZJRVIocmF3KTsKK19QeV9JREVOVElGSUVSKHJlYWQpOworX1B5X0lERU5USUZJRVIocmVhZDEpOworX1B5X0lERU5USUZJRVIocmVhZGFibGUpOworX1B5X0lERU5USUZJRVIocmVwbGFjZSk7CitfUHlfSURFTlRJRklFUihyZXNldCk7CitfUHlfSURFTlRJRklFUihzZWVrKTsKK19QeV9JREVOVElGSUVSKHNlZWthYmxlKTsKK19QeV9JREVOVElGSUVSKHNldHN0YXRlKTsKK19QeV9JREVOVElGSUVSKHRlbGwpOworX1B5X0lERU5USUZJRVIod3JpdGFibGUpOworCiAvKiBUZXh0SU9CYXNlICovCiAKIFB5RG9jX1NUUlZBUih0ZXh0aW9iYXNlX2RvYywKQEAgLTI0OCw2ICsyNjksMTAgQEAKICAgICAgICAgUHlfREVDUkVGKGRlY29kZWQpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoZGVjb2RlZCkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWNvZGVkKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjgzLDE4ICszMDgsMjMgQEAKICAgICBpZiAoY2hlY2tfZGVjb2RlZChvdXRwdXQpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBvdXRwdXRfbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKG91dHB1dCk7CisgICAgb3V0cHV0X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG91dHB1dCk7CiAgICAgaWYgKHNlbGYtPnBlbmRpbmdjciAmJiAoZmluYWwgfHwgb3V0cHV0X2xlbiA+IDApKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKm91dDsKLSAgICAgICAgUHlPYmplY3QgKm1vZGlmaWVkID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIG91dHB1dF9sZW4gKyAxKTsKKyAgICAgICAgLyogUHJlZml4IG91dHB1dCB3aXRoIENSICovCisgICAgICAgIGludCBraW5kOworICAgICAgICBQeU9iamVjdCAqbW9kaWZpZWQ7CisgICAgICAgIGNoYXIgKm91dDsKKworICAgICAgICBtb2RpZmllZCA9IFB5VW5pY29kZV9OZXcob3V0cHV0X2xlbiArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUob3V0cHV0KSk7CiAgICAgICAgIGlmIChtb2RpZmllZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgb3V0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUobW9kaWZpZWQpOwotICAgICAgICBvdXRbMF0gPSAnXHInOwotICAgICAgICBtZW1jcHkob3V0ICsgMSwgUHlVbmljb2RlX0FTX1VOSUNPREUob3V0cHV0KSwKLSAgICAgICAgICAgICAgIG91dHB1dF9sZW4gKiBzaXplb2YoUHlfVU5JQ09ERSkpOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQobW9kaWZpZWQpOworICAgICAgICBvdXQgPSBQeVVuaWNvZGVfREFUQShtb2RpZmllZCk7CisgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBQeVVuaWNvZGVfREFUQShtb2RpZmllZCksIDAsICdccicpOworICAgICAgICBtZW1jcHkob3V0ICsga2luZCwgUHlVbmljb2RlX0RBVEEob3V0cHV0KSwga2luZCAqIG91dHB1dF9sZW4pOwogICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKLSAgICAgICAgb3V0cHV0ID0gbW9kaWZpZWQ7CisgICAgICAgIG91dHB1dCA9IG1vZGlmaWVkOyAvKiBvdXRwdXQgcmVtYWlucyByZWFkeSAqLwogICAgICAgICBzZWxmLT5wZW5kaW5nY3IgPSAwOwogICAgICAgICBvdXRwdXRfbGVuKys7CiAgICAgfQpAQCAtMzA0LDIxICszMzQsMTMgQEAKICAgICAgKi8KICAgICBpZiAoIWZpbmFsKSB7CiAgICAgICAgIGlmIChvdXRwdXRfbGVuID4gMAotICAgICAgICAgICAgJiYgUHlVbmljb2RlX0FTX1VOSUNPREUob3V0cHV0KVtvdXRwdXRfbGVuIC0gMV0gPT0gJ1xyJykgewotCi0gICAgICAgICAgICBpZiAoUHlfUkVGQ05UKG91dHB1dCkgPT0gMSkgewotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZvdXRwdXQsIG91dHB1dF9sZW4gLSAxKSA8IDApCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbW9kaWZpZWQgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKG91dHB1dCksCi0gICAgICAgICAgICAgICAgICAgIG91dHB1dF9sZW4gLSAxKTsKLSAgICAgICAgICAgICAgICBpZiAobW9kaWZpZWQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKLSAgICAgICAgICAgICAgICBvdXRwdXQgPSBtb2RpZmllZDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICYmIFB5VW5pY29kZV9SRUFEX0NIQVIob3V0cHV0LCBvdXRwdXRfbGVuIC0gMSkgPT0gJ1xyJykKKyAgICAgICAgeworICAgICAgICAgICAgUHlPYmplY3QgKm1vZGlmaWVkID0gUHlVbmljb2RlX1N1YnN0cmluZyhvdXRwdXQsIDAsIG91dHB1dF9sZW4gLTEpOworICAgICAgICAgICAgaWYgKG1vZGlmaWVkID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOworICAgICAgICAgICAgb3V0cHV0ID0gbW9kaWZpZWQ7CiAgICAgICAgICAgICBzZWxmLT5wZW5kaW5nY3IgPSAxOwogICAgICAgICB9CiAgICAgfQpAQCAtMzI2LDEzICszNDgsMTUgQEAKICAgICAvKiBSZWNvcmQgd2hpY2ggbmV3bGluZXMgYXJlIHJlYWQgYW5kIGRvIG5ld2xpbmUgdHJhbnNsYXRpb24gaWYgZGVzaXJlZCwKICAgICAgICBhbGwgaW4gb25lIHBhc3MuICovCiAgICAgewotICAgICAgICBQeV9VTklDT0RFICppbl9zdHI7CisgICAgICAgIHZvaWQgKmluX3N0cjsKICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgIGludCBzZWVubmwgPSBzZWxmLT5zZWVubmw7CiAgICAgICAgIGludCBvbmx5X2xmID0gMDsKKyAgICAgICAgaW50IGtpbmQ7CiAKLSAgICAgICAgaW5fc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUob3V0cHV0KTsKLSAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKG91dHB1dCk7CisgICAgICAgIGluX3N0ciA9IFB5VW5pY29kZV9EQVRBKG91dHB1dCk7CisgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG91dHB1dCk7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChvdXRwdXQpOwogCiAgICAgICAgIGlmIChsZW4gPT0gMCkKICAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7CkBAIC0zNDEsNyArMzY1LDcgQEAKICAgICAgICAgICAgZm9yIHRoZSBcciAqYnl0ZSogd2l0aCB0aGUgbGliYydzIG9wdGltaXplZCBtZW1jaHIuCiAgICAgICAgICAgICovCiAgICAgICAgIGlmIChzZWVubmwgPT0gU0VFTl9MRiB8fCBzZWVubmwgPT0gMCkgewotICAgICAgICAgICAgb25seV9sZiA9IChtZW1jaHIoaW5fc3RyLCAnXHInLCBsZW4gKiBzaXplb2YoUHlfVU5JQ09ERSkpID09IE5VTEwpOworICAgICAgICAgICAgb25seV9sZiA9IChtZW1jaHIoaW5fc3RyLCAnXHInLCBraW5kICogbGVuKSA9PSBOVUxMKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChvbmx5X2xmKSB7CkBAIC0zNDksNTEgKzM3Myw1MSBAQAogICAgICAgICAgICAgICAgKHRoZXJlJ3Mgbm90aGluZyBlbHNlIHRvIGJlIGRvbmUsIGV2ZW4gd2hlbiBpbiB0cmFuc2xhdGlvbiBtb2RlKQogICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGlmIChzZWVubmwgPT0gMCAmJgotICAgICAgICAgICAgICAgIG1lbWNocihpbl9zdHIsICdcbicsIGxlbiAqIHNpemVvZihQeV9VTklDT0RFKSkgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKnMsICplbmQ7Ci0gICAgICAgICAgICAgICAgcyA9IGluX3N0cjsKLSAgICAgICAgICAgICAgICBlbmQgPSBpbl9zdHIgKyBsZW47Ci0gICAgICAgICAgICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGM7Ci0gICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgbG9vcCBmb3Igbm9uLWNvbnRyb2wgY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKnMgPiAnXG4nKQotICAgICAgICAgICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgICAgICBjID0gKnMrKzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xuJykgewotICAgICAgICAgICAgICAgICAgICAgICAgc2Vlbm5sIHw9IFNFRU5fTEY7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBtZW1jaHIoaW5fc3RyLCAnXG4nLCBraW5kICogbGVuKSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpCisgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0xGOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGkgPSAwOworICAgICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGM7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IGxvb3AgZm9yIG5vbi1jb250cm9sIGNoYXJhY3RlcnMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChQeVVuaWNvZGVfUkVBRChraW5kLCBpbl9zdHIsIGkpID4gJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgaW5fc3RyLCBpKyspOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xuJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0xGOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj0gbGVuKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzID4gZW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogRmluaXNoZWQ6IHdlIGhhdmUgc2Nhbm5lZCBmb3IgbmV3bGluZXMsIGFuZCBub25lIG9mIHRoZW0KICAgICAgICAgICAgICAgIG5lZWQgdHJhbnNsYXRpbmcgKi8KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmICghc2VsZi0+dHJhbnNsYXRlKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICpzLCAqZW5kOworICAgICAgICAgICAgUHlfc3NpemVfdCBpID0gMDsKICAgICAgICAgICAgIC8qIFdlIGhhdmUgYWxyZWFkeSBzZWVuIGFsbCBuZXdsaW5lIHR5cGVzLCBubyBuZWVkIHRvIHNjYW4gYWdhaW4gKi8KICAgICAgICAgICAgIGlmIChzZWVubmwgPT0gU0VFTl9BTEwpCiAgICAgICAgICAgICAgICAgZ290byBlbmRzY2FuOwotICAgICAgICAgICAgcyA9IGluX3N0cjsKLSAgICAgICAgICAgIGVuZCA9IGluX3N0ciArIGxlbjsKICAgICAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGM7CisgICAgICAgICAgICAgICAgUHlfVUNTNCBjOwogICAgICAgICAgICAgICAgIC8qIEZhc3QgbG9vcCBmb3Igbm9uLWNvbnRyb2wgY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgICAgIHdoaWxlICgqcyA+ICdccicpCi0gICAgICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICBjID0gKnMrKzsKKyAgICAgICAgICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgaW5fc3RyLCBpKSA+ICdccicpCisgICAgICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgaW5fc3RyLCBpKyspOwogICAgICAgICAgICAgICAgIGlmIChjID09ICdcbicpCiAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0xGOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1xyJykgewotICAgICAgICAgICAgICAgICAgICBpZiAoKnMgPT0gJ1xuJykgeworICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgaW5fc3RyLCBpKSA9PSAnXG4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWVubmwgfD0gU0VFTl9DUkxGOwotICAgICAgICAgICAgICAgICAgICAgICAgcysrOworICAgICAgICAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0NSOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocyA+IGVuZCkKKyAgICAgICAgICAgICAgICBpZiAoaSA+PSBsZW4pCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlmIChzZWVubmwgPT0gU0VFTl9BTEwpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDAyLDYxICs0MjYsNTEgQEAKICAgICAgICAgICAgIDsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp0cmFuc2xhdGVkID0gTlVMTDsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKm91dF9zdHI7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICppbiwgKm91dCwgKmVuZDsKLSAgICAgICAgICAgIGlmIChQeV9SRUZDTlQob3V0cHV0KSAhPSAxKSB7Ci0gICAgICAgICAgICAgICAgLyogV2UgY291bGQgdHJ5IHRvIG9wdGltaXplIHRoaXMgc28gdGhhdCB3ZSBvbmx5IGRvIGEgY29weQotICAgICAgICAgICAgICAgICAgIHdoZW4gdGhlcmUgaXMgc29tZXRoaW5nIHRvIHRyYW5zbGF0ZS4gT24gdGhlIG90aGVyIGhhbmQsCi0gICAgICAgICAgICAgICAgICAgbW9zdCBkZWNvZGVycyBzaG91bGQgb25seSBvdXRwdXQgbm9uLXNoYXJlZCBzdHJpbmdzLCBpLmUuCi0gICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb24gaXMgZG9uZSBpbiBwbGFjZS4gKi8KLSAgICAgICAgICAgICAgICB0cmFuc2xhdGVkID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIGxlbik7Ci0gICAgICAgICAgICAgICAgaWYgKHRyYW5zbGF0ZWQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBhc3NlcnQoUHlfUkVGQ05UKHRyYW5zbGF0ZWQpID09IDEpOwotICAgICAgICAgICAgICAgIG1lbWNweShQeVVuaWNvZGVfQVNfVU5JQ09ERSh0cmFuc2xhdGVkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUob3V0cHV0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgbGVuICogc2l6ZW9mKFB5X1VOSUNPREUpKTsKKyAgICAgICAgICAgIHZvaWQgKnRyYW5zbGF0ZWQ7CisgICAgICAgICAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKG91dHB1dCk7CisgICAgICAgICAgICB2b2lkICppbl9zdHIgPSBQeVVuaWNvZGVfREFUQShvdXRwdXQpOworICAgICAgICAgICAgUHlfc3NpemVfdCBpbiwgb3V0OworICAgICAgICAgICAgLyogWFhYOiBQcmV2aW91cyBpbi1wbGFjZSB0cmFuc2xhdGlvbiBoZXJlIGlzIGRpc2FibGVkIGFzCisgICAgICAgICAgICAgICByZXNpemluZyBpcyBub3QgcG9zc2libGUgYW55bW9yZSAqLworICAgICAgICAgICAgLyogV2UgY291bGQgdHJ5IHRvIG9wdGltaXplIHRoaXMgc28gdGhhdCB3ZSBvbmx5IGRvIGEgY29weQorICAgICAgICAgICAgICAgd2hlbiB0aGVyZSBpcyBzb21ldGhpbmcgdG8gdHJhbnNsYXRlLiBPbiB0aGUgb3RoZXIgaGFuZCwKKyAgICAgICAgICAgICAgIHdlIGFscmVhZHkga25vdyB0aGVyZSBpcyBhIFxyIGJ5dGUsIHNvIGNoYW5jZXMgYXJlIGhpZ2gKKyAgICAgICAgICAgICAgIHRoYXQgc29tZXRoaW5nIG5lZWRzIHRvIGJlIGRvbmUuICovCisgICAgICAgICAgICB0cmFuc2xhdGVkID0gUHlNZW1fTWFsbG9jKGtpbmQgKiBsZW4pOworICAgICAgICAgICAgaWYgKHRyYW5zbGF0ZWQgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWQgPSBvdXRwdXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBvdXRfc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUodHJhbnNsYXRlZCk7Ci0gICAgICAgICAgICBpbiA9IGluX3N0cjsKLSAgICAgICAgICAgIG91dCA9IG91dF9zdHI7Ci0gICAgICAgICAgICBlbmQgPSBpbl9zdHIgKyBsZW47CisgICAgICAgICAgICBpbiA9IG91dCA9IDA7CiAgICAgICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjOworICAgICAgICAgICAgICAgIFB5X1VDUzQgYzsKICAgICAgICAgICAgICAgICAvKiBGYXN0IGxvb3AgZm9yIG5vbi1jb250cm9sIGNoYXJhY3RlcnMgKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAoKGMgPSAqaW4rKykgPiAnXHInKQotICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSBjOworICAgICAgICAgICAgICAgIHdoaWxlICgoYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGluX3N0ciwgaW4rKykpID4gJ1xyJykKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIHRyYW5zbGF0ZWQsIG91dCsrLCBjKTsKICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXG4nKSB7Ci0gICAgICAgICAgICAgICAgICAgICpvdXQrKyA9IGM7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCB0cmFuc2xhdGVkLCBvdXQrKywgYyk7CiAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0xGOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xyJykgewotICAgICAgICAgICAgICAgICAgICBpZiAoKmluID09ICdcbicpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGluX3N0ciwgaW4pID09ICdcbicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGluKys7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWVubmwgfD0gU0VFTl9DUkxGOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0NSOwotICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSAnXG4nOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgdHJhbnNsYXRlZCwgb3V0KyssICdcbicpOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGluID4gZW5kKQorICAgICAgICAgICAgICAgIGlmIChpbiA+IGxlbikKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgKm91dCsrID0gYzsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgdHJhbnNsYXRlZCwgb3V0KyssIGMpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHRyYW5zbGF0ZWQgIT0gb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgb3V0cHV0ID0gdHJhbnNsYXRlZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChvdXQgLSBvdXRfc3RyICE9IGxlbikgewotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZvdXRwdXQsIG91dCAtIG91dF9zdHIpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOworICAgICAgICAgICAgb3V0cHV0ID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShraW5kLCB0cmFuc2xhdGVkLCBvdXQpOworICAgICAgICAgICAgUHlNZW1fRnJlZSh0cmFuc2xhdGVkKTsKKyAgICAgICAgICAgIGlmICghb3V0cHV0KQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIHNlbGYtPnNlZW5ubCB8PSBzZWVubmw7CiAgICAgfQpAQCAtNTIzLDggKzUzNyw4IEBACiAgICAgZmxhZyA+Pj0gMTsKIAogICAgIGlmIChzZWxmLT5kZWNvZGVyICE9IFB5X05vbmUpCi0gICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmRlY29kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZXRzdGF0ZSIsICIoKE9LKSkiLCBidWZmZXIsIGZsYWcpOworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5kZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9zZXRzdGF0ZSwgIigoT0spKSIsIGJ1ZmZlciwgZmxhZyk7CiAgICAgZWxzZQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KQEAgLTYyNiw3ICs2NDAsNyBAQAogICAgICJDaGFyYWN0ZXIgYW5kIGxpbmUgYmFzZWQgbGF5ZXIgb3ZlciBhIEJ1ZmZlcmVkSU9CYXNlIG9iamVjdCwgYnVmZmVyLlxuIgogICAgICJcbiIKICAgICAiZW5jb2RpbmcgZ2l2ZXMgdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHRoYXQgdGhlIHN0cmVhbSB3aWxsIGJlXG4iCi0gICAgImRlY29kZWQgb3IgZW5jb2RlZCB3aXRoLiBJdCBkZWZhdWx0cyB0byBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcuXG4iCisgICAgImRlY29kZWQgb3IgZW5jb2RlZCB3aXRoLiBJdCBkZWZhdWx0cyB0byBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpLlxuIgogICAgICJcbiIKICAgICAiZXJyb3JzIGRldGVybWluZXMgdGhlIHN0cmljdG5lc3Mgb2YgZW5jb2RpbmcgYW5kIGRlY29kaW5nIChzZWUgdGhlXG4iCiAgICAgImNvZGVjcy5yZWdpc3RlcikgYW5kIGRlZmF1bHRzIHRvIFwic3RyaWN0XCIuXG4iCkBAIC02OTYsMTIgKzcxMCwxNiBAQAogICAgIFB5T2JqZWN0ICpwZW5kaW5nX2J5dGVzOyAgICAgICAvKiBsaXN0IG9mIGJ5dGVzIG9iamVjdHMgd2FpdGluZyB0byBiZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0dGVuLCBvciBOVUxMICovCiAgICAgUHlfc3NpemVfdCBwZW5kaW5nX2J5dGVzX2NvdW50OwotICAgIFB5T2JqZWN0ICpzbmFwc2hvdDsKKwogICAgIC8qIHNuYXBzaG90IGlzIGVpdGhlciBOb25lLCBvciBhIHR1cGxlIChkZWNfZmxhZ3MsIG5leHRfaW5wdXQpIHdoZXJlCiAgICAgICogZGVjX2ZsYWdzIGlzIHRoZSBzZWNvbmQgKGludGVnZXIpIGl0ZW0gb2YgdGhlIGRlY29kZXIgc3RhdGUgYW5kCiAgICAgICogbmV4dF9pbnB1dCBpcyB0aGUgY2h1bmsgb2YgaW5wdXQgYnl0ZXMgdGhhdCBjb21lcyBuZXh0IGFmdGVyIHRoZQogICAgICAqIHNuYXBzaG90IHBvaW50LiAgV2UgdXNlIHRoaXMgdG8gcmVjb25zdHJ1Y3QgZGVjb2RlciBzdGF0ZXMgaW4gdGVsbCgpLgogICAgICAqLworICAgIFB5T2JqZWN0ICpzbmFwc2hvdDsKKyAgICAvKiBCeXRlcy10by1jaGFyYWN0ZXJzIHJhdGlvIGZvciB0aGUgY3VycmVudCBjaHVuay4gU2VydmVzIGFzIGlucHV0IGZvcgorICAgICAgIHRoZSBoZXVyaXN0aWMgaW4gdGVsbCgpLiAqLworICAgIGRvdWJsZSBiMmNyYXRpbzsKIAogICAgIC8qIENhY2hlIHJhdyBvYmplY3QgaWYgaXQncyBhIEZpbGVJTyBvYmplY3QgKi8KICAgICBQeU9iamVjdCAqcmF3OwpAQCAtNzE3LDI1ICs3MzUsMjEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBhc2NpaV9lbmNvZGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqdGV4dCkKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUFTQ0lJKFB5VW5pY29kZV9BU19VTklDT0RFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyh0ZXh0LCBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHV0ZjE2YmVfZW5jb2RlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKnRleHQpCiB7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVVVEYxNihQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycyksIDEpOworICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjE2KHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSwgMSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB1dGYxNmxlX2VuY29kZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICp0ZXh0KQogewotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGMTYoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpLCAtMSk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYodGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpLCAtMSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC03NDksMjUgKzc2MywyMiBAQAogICAgICAgICByZXR1cm4gdXRmMTZsZV9lbmNvZGUoc2VsZiwgdGV4dCk7CiAjZW5kaWYKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVVVEYxNihQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycyksIDApOworICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjE2KHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSwgMCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB1dGYzMmJlX2VuY29kZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICp0ZXh0KQogewotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGMzIoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpLCAxKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVVVEYzMih0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycyksIDEpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdXRmMzJsZV9lbmNvZGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqdGV4dCkKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjMyKFB5VW5pY29kZV9BU19VTklDT0RFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSwgLTEpOworICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjMyKHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSwgLTEpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNzgxLDI1ICs3OTIsMjAgQEAKICAgICAgICAgcmV0dXJuIHV0ZjMybGVfZW5jb2RlKHNlbGYsIHRleHQpOwogI2VuZGlmCiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGMzIoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpLCAwKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVVVEYzMih0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycyksIDApOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdXRmOF9lbmNvZGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqdGV4dCkKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHRleHQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycykpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogbGF0aW4xX2VuY29kZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICp0ZXh0KQogewotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xKFB5VW5pY29kZV9BU19VTklDT0RFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyh0ZXh0LCBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpKTsKIH0KIAogLyogTWFwIG5vcm1hbGl6ZWQgZW5jb2RpbmcgbmFtZXMgb250byB0aGUgc3BlY2lhbGl6ZWQgZW5jb2RpbmcgZnVuY3MgKi8KQEAgLTg2OCwxMSArODc0LDEyIEBACiAgICAgc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkID0gMDsKICAgICBzZWxmLT5wZW5kaW5nX2J5dGVzX2NvdW50ID0gMDsKICAgICBzZWxmLT5lbmNvZGVmdW5jID0gTlVMTDsKKyAgICBzZWxmLT5iMmNyYXRpbyA9IDAuMDsKIAogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7CiAgICAgICAgIC8qIFRyeSBvcy5kZXZpY2VfZW5jb2RpbmcoZmlsZW5vKSAqLwogICAgICAgICBQeU9iamVjdCAqZmlsZW5vOwotICAgICAgICBmaWxlbm8gPSBQeU9iamVjdF9DYWxsTWV0aG9kKGJ1ZmZlciwgImZpbGVubyIsIE5VTEwpOworICAgICAgICBmaWxlbm8gPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGJ1ZmZlciwgJlB5SWRfZmlsZW5vLCBOVUxMKTsKICAgICAgICAgLyogSWdub3JlIG9ubHkgQXR0cmlidXRlRXJyb3IgYW5kIFVuc3VwcG9ydGVkT3BlcmF0aW9uICovCiAgICAgICAgIGlmIChmaWxlbm8gPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpIHx8CkBAIC04ODQsOSArODkxLDEzIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzZWxmLT5lbmNvZGluZyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc3RhdGUtPm9zX21vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGV2aWNlX2VuY29kaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTiIsIGZpbGVubyk7CisgICAgICAgICAgICBpbnQgZmQgPSBfUHlMb25nX0FzSW50KGZpbGVubyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZmlsZW5vKTsKKyAgICAgICAgICAgIGlmIChmZCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2VsZi0+ZW5jb2RpbmcgPSBfUHlfZGV2aWNlX2VuY29kaW5nKGZkKTsKICAgICAgICAgICAgIGlmIChzZWxmLT5lbmNvZGluZyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBlbHNlIGlmICghUHlVbmljb2RlX0NoZWNrKHNlbGYtPmVuY29kaW5nKSkKQEAgLTkwMyw4ICs5MTQsOCBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgIHVzZV9sb2NhbGU6Ci0gICAgICAgICAgICBzZWxmLT5lbmNvZGluZyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoCi0gICAgICAgICAgICAgICAgc3RhdGUtPmxvY2FsZV9tb2R1bGUsICJnZXRwcmVmZXJyZWRlbmNvZGluZyIsIE5VTEwpOworICAgICAgICAgICAgc2VsZi0+ZW5jb2RpbmcgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgICAgIHN0YXRlLT5sb2NhbGVfbW9kdWxlLCAmUHlJZF9nZXRwcmVmZXJyZWRlbmNvZGluZywgIk8iLCBQeV9GYWxzZSk7CiAgICAgICAgICAgICBpZiAoc2VsZi0+ZW5jb2RpbmcgPT0gTlVMTCkgewogICAgICAgICAgICAgICBjYXRjaF9JbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICAvKgpAQCAtOTY5LDcgKzk4MCw3IEBACiAjZW5kaWYKIAogICAgIC8qIEJ1aWxkIHRoZSBkZWNvZGVyIG9iamVjdCAqLwotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoYnVmZmVyLCAicmVhZGFibGUiLCBOVUxMKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGJ1ZmZlciwgJlB5SWRfcmVhZGFibGUsIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICByID0gUHlPYmplY3RfSXNUcnVlKHJlcyk7CkBAIC05OTQsNyArMTAwNSw3IEBACiAgICAgfQogCiAgICAgLyogQnVpbGQgdGhlIGVuY29kZXIgb2JqZWN0ICovCi0gICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChidWZmZXIsICJ3cml0YWJsZSIsIE5VTEwpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoYnVmZmVyLCAmUHlJZF93cml0YWJsZSwgTlVMTCk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIHIgPSBQeU9iamVjdF9Jc1RydWUocmVzKTsKQEAgLTEwMTEsNyArMTAyMiw3IEBACiAgICAgICAgIGNpID0gX1B5Q29kZWNfTG9va3VwKGVuY29kaW5nKTsKICAgICAgICAgaWYgKGNpID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICByZXMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGNpLCAibmFtZSIpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNpLCAmUHlJZF9uYW1lKTsKICAgICAgICAgUHlfREVDUkVGKGNpKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCkBAIC0xMDM4LDcgKzEwNDksNyBAQAogICAgIGlmIChQeV9UWVBFKGJ1ZmZlcikgPT0gJlB5QnVmZmVyZWRSZWFkZXJfVHlwZSB8fAogICAgICAgICBQeV9UWVBFKGJ1ZmZlcikgPT0gJlB5QnVmZmVyZWRXcml0ZXJfVHlwZSB8fAogICAgICAgICBQeV9UWVBFKGJ1ZmZlcikgPT0gJlB5QnVmZmVyZWRSYW5kb21fVHlwZSkgewotICAgICAgICByYXcgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGJ1ZmZlciwgInJhdyIpOworICAgICAgICByYXcgPSBfUHlPYmplY3RfR2V0QXR0cklkKGJ1ZmZlciwgJlB5SWRfcmF3KTsKICAgICAgICAgLyogQ2FjaGUgdGhlIHJhdyBGaWxlSU8gb2JqZWN0IHRvIHNwZWVkIHVwICdjbG9zZWQnIGNoZWNrcyAqLwogICAgICAgICBpZiAocmF3ID09IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKQEAgLTEwNTIsNyArMTA2Myw3IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYocmF3KTsKICAgICB9CiAKLSAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGJ1ZmZlciwgInNlZWthYmxlIiwgTlVMTCk7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChidWZmZXIsICZQeUlkX3NlZWthYmxlLCBOVUxMKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgciA9IFB5T2JqZWN0X0lzVHJ1ZShyZXMpOwpAQCAtMTA2MSw3ICsxMDcyLDcgQEAKICAgICAgICAgZ290byBlcnJvcjsKICAgICBzZWxmLT5zZWVrYWJsZSA9IHNlbGYtPnRlbGxpbmcgPSByOwogCi0gICAgc2VsZi0+aGFzX3JlYWQxID0gUHlPYmplY3RfSGFzQXR0clN0cmluZyhidWZmZXIsICJyZWFkMSIpOworICAgIHNlbGYtPmhhc19yZWFkMSA9IF9QeU9iamVjdF9IYXNBdHRySWQoYnVmZmVyLCAmUHlJZF9yZWFkMSk7CiAKICAgICBzZWxmLT5lbmNvZGluZ19zdGFydF9vZl9zdHJlYW0gPSAwOwogICAgIGlmIChzZWxmLT5zZWVrYWJsZSAmJiBzZWxmLT5lbmNvZGVyKSB7CkBAIC0xMjI3LDE4ICsxMjM4LDYgQEAKICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1QeV9MT0NBTF9JTkxJTkUoY29uc3QgUHlfVU5JQ09ERSAqKQotZmluZGNoYXIoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBQeV9VTklDT0RFIGNoKQotewotICAgIC8qIGxpa2Ugd2NzY2hyLCBidXQgZG9lc24ndCBzdG9wIGF0IE5VTEwgY2hhcmFjdGVycyAqLwotICAgIHdoaWxlIChzaXplLS0gPiAwKSB7Ci0gICAgICAgIGlmICgqcyA9PSBjaCkKLSAgICAgICAgICAgIHJldHVybiBzOwotICAgICAgICBzKys7Ci0gICAgfQotICAgIHJldHVybiBOVUxMOwotfQotCiAvKiBGbHVzaCB0aGUgaW50ZXJuYWwgd3JpdGUgYnVmZmVyLiBUaGlzIGRvZXNuJ3QgZXhwbGljaXRseSBmbHVzaCB0aGUKICAgIHVuZGVybHlpbmcgYnVmZmVyZWQgb2JqZWN0LCB0aG91Z2guICovCiBzdGF0aWMgaW50CkBAIC0xMjg2LDYgKzEyODUsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHRleHQpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKIAogICAgIGlmIChzZWxmLT5lbmNvZGVyID09IE5VTEwpCkBAIC0xMjkzLDE2ICsxMjk1LDE1IEBACiAKICAgICBQeV9JTkNSRUYodGV4dCk7CiAKLSAgICB0ZXh0bGVuID0gUHlVbmljb2RlX0dldFNpemUodGV4dCk7CisgICAgdGV4dGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHRleHQpOwogCiAgICAgaWYgKChzZWxmLT53cml0ZXRyYW5zbGF0ZSAmJiBzZWxmLT53cml0ZW5sICE9IE5VTEwpIHx8IHNlbGYtPmxpbmVfYnVmZmVyaW5nKQotICAgICAgICBpZiAoZmluZGNoYXIoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksICdcbicpKQorICAgICAgICBpZiAoUHlVbmljb2RlX0ZpbmRDaGFyKHRleHQsICdcbicsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHRleHQpLCAxKSAhPSAtMSkKICAgICAgICAgICAgIGhhc2xmID0gMTsKIAogICAgIGlmIChoYXNsZiAmJiBzZWxmLT53cml0ZXRyYW5zbGF0ZSAmJiBzZWxmLT53cml0ZW5sICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKm5ld3RleHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKAotICAgICAgICAgICAgdGV4dCwgInJlcGxhY2UiLCAic3MiLCAiXG4iLCBzZWxmLT53cml0ZW5sKTsKKyAgICAgICAgUHlPYmplY3QgKm5ld3RleHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgdGV4dCwgJlB5SWRfcmVwbGFjZSwgInNzIiwgIlxuIiwgc2VsZi0+d3JpdGVubCk7CiAgICAgICAgIFB5X0RFQ1JFRih0ZXh0KTsKICAgICAgICAgaWYgKG5ld3RleHQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTMxMyw4ICsxMzE0LDcgQEAKICAgICAgICAgbmVlZGZsdXNoID0gMTsKICAgICBlbHNlIGlmIChzZWxmLT5saW5lX2J1ZmZlcmluZyAmJgogICAgICAgICAoaGFzbGYgfHwKLSAgICAgICAgIGZpbmRjaGFyKFB5VW5pY29kZV9BU19VTklDT0RFKHRleHQpLAotICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHRleHQpLCAnXHInKSkpCisgICAgICAgICBQeVVuaWNvZGVfRmluZENoYXIodGV4dCwgJ1xyJywgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgodGV4dCksIDEpICE9IC0xKSkKICAgICAgICAgbmVlZGZsdXNoID0gMTsKIAogICAgIC8qIFhYWCBXaGF0IGlmIHdlIHdlcmUganVzdCByZWFkaW5nPyAqLwpAQCAtMTM1OCw3ICsxMzU4LDcgQEAKICAgICBQeV9DTEVBUihzZWxmLT5zbmFwc2hvdCk7CiAKICAgICBpZiAoc2VsZi0+ZGVjb2RlcikgewotICAgICAgICByZXQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmRlY29kZXIsICJyZXNldCIsIE5VTEwpOworICAgICAgICByZXQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmRlY29kZXIsICZQeUlkX3Jlc2V0LCBOVUxMKTsKICAgICAgICAgaWYgKHJldCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5X0RFQ1JFRihyZXQpOwpAQCAtMTM4Niw3ICsxMzg2LDggQEAKICAgICBpZiAoc2VsZi0+ZGVjb2RlZF9jaGFycyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwogCi0gICAgYXZhaWwgPSAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYtPmRlY29kZWRfY2hhcnMpCisgICAgLyogZGVjb2RlZF9jaGFycyBpcyBndWFyYW50ZWVkIHRvIGJlICJyZWFkeSIuICovCisgICAgYXZhaWwgPSAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZi0+ZGVjb2RlZF9jaGFycykKICAgICAgICAgICAgICAtIHNlbGYtPmRlY29kZWRfY2hhcnNfdXNlZCk7CiAKICAgICBhc3NlcnQoYXZhaWwgPj0gMCk7CkBAIC0xMzk1LDkgKzEzOTYsOSBAQAogICAgICAgICBuID0gYXZhaWw7CiAKICAgICBpZiAoc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkID4gMCB8fCBuIDwgYXZhaWwpIHsKLSAgICAgICAgY2hhcnMgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoCi0gICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmLT5kZWNvZGVkX2NoYXJzKQotICAgICAgICAgICAgKyBzZWxmLT5kZWNvZGVkX2NoYXJzX3VzZWQsIG4pOworICAgICAgICBjaGFycyA9IFB5VW5pY29kZV9TdWJzdHJpbmcoc2VsZi0+ZGVjb2RlZF9jaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmRlY29kZWRfY2hhcnNfdXNlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmRlY29kZWRfY2hhcnNfdXNlZCArIG4pOwogICAgICAgICBpZiAoY2hhcnMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTE0MTMsMTIgKzE0MTQsMTMgQEAKIC8qIFJlYWQgYW5kIGRlY29kZSB0aGUgbmV4dCBjaHVuayBvZiBkYXRhIGZyb20gdGhlIEJ1ZmZlcmVkUmVhZGVyLgogICovCiBzdGF0aWMgaW50Ci10ZXh0aW93cmFwcGVyX3JlYWRfY2h1bmsodGV4dGlvICpzZWxmKQordGV4dGlvd3JhcHBlcl9yZWFkX2NodW5rKHRleHRpbyAqc2VsZiwgUHlfc3NpemVfdCBzaXplX2hpbnQpCiB7CiAgICAgUHlPYmplY3QgKmRlY19idWZmZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpkZWNfZmxhZ3MgPSBOVUxMOwogICAgIFB5T2JqZWN0ICppbnB1dF9jaHVuayA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmRlY29kZWRfY2hhcnMsICpjaHVua19zaXplOworICAgIFB5X3NzaXplX3QgbmJ5dGVzLCBuY2hhcnM7CiAgICAgaW50IGVvZjsKIAogICAgIC8qIFRoZSByZXR1cm4gdmFsdWUgaXMgVHJ1ZSB1bmxlc3MgRU9GIHdhcyByZWFjaGVkLiAgVGhlIGRlY29kZWQgc3RyaW5nIGlzCkBAIC0xNDU0LDcgKzE0NTYsMTAgQEAKICAgICB9CiAKICAgICAvKiBSZWFkIGEgY2h1bmssIGRlY29kZSBpdCwgYW5kIHB1dCB0aGUgcmVzdWx0IGluIHNlbGYuX2RlY29kZWRfY2hhcnMuICovCi0gICAgY2h1bmtfc2l6ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5jaHVua19zaXplKTsKKyAgICBpZiAoc2l6ZV9oaW50ID4gMCkgeworICAgICAgICBzaXplX2hpbnQgPSAoUHlfc3NpemVfdCkoUHlfTUFYKHNlbGYtPmIyY3JhdGlvLCAxLjApICogc2l6ZV9oaW50KTsKKyAgICB9CisgICAgY2h1bmtfc2l6ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChQeV9NQVgoc2VsZi0+Y2h1bmtfc2l6ZSwgc2l6ZV9oaW50KSk7CiAgICAgaWYgKGNodW5rX3NpemUgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsOwogICAgIGlucHV0X2NodW5rID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+YnVmZmVyLApAQCAtMTQ3MSw3ICsxNDc2LDggQEAKICAgICAgICAgZ290byBmYWlsOwogICAgIH0KIAotICAgIGVvZiA9IChQeUJ5dGVzX1NpemUoaW5wdXRfY2h1bmspID09IDApOworICAgIG5ieXRlcyA9IFB5Qnl0ZXNfU2l6ZShpbnB1dF9jaHVuayk7CisgICAgZW9mID0gKG5ieXRlcyA9PSAwKTsKIAogICAgIGlmIChQeV9UWVBFKHNlbGYtPmRlY29kZXIpID09ICZQeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfVHlwZSkgewogICAgICAgICBkZWNvZGVkX2NoYXJzID0gX1B5SW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGUoCkBAIC0xNDg1LDcgKzE0OTEsMTIgQEAKICAgICBpZiAoY2hlY2tfZGVjb2RlZChkZWNvZGVkX2NoYXJzKSA8IDApCiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB0ZXh0aW93cmFwcGVyX3NldF9kZWNvZGVkX2NoYXJzKHNlbGYsIGRlY29kZWRfY2hhcnMpOwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoZGVjb2RlZF9jaGFycykgPiAwKQorICAgIG5jaGFycyA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGRlY29kZWRfY2hhcnMpOworICAgIGlmIChuY2hhcnMgPiAwKQorICAgICAgICBzZWxmLT5iMmNyYXRpbyA9IChkb3VibGUpIG5ieXRlcyAvIG5jaGFyczsKKyAgICBlbHNlCisgICAgICAgIHNlbGYtPmIyY3JhdGlvID0gMC4wOworICAgIGlmIChuY2hhcnMgPiAwKQogICAgICAgICBlb2YgPSAwOwogCiAgICAgaWYgKHNlbGYtPnRlbGxpbmcpIHsKQEAgLTE1MzksMTIgKzE1NTAsMTcgQEAKIAogICAgIGlmIChuIDwgMCkgewogICAgICAgICAvKiBSZWFkIGV2ZXJ5dGhpbmcgKi8KLSAgICAgICAgUHlPYmplY3QgKmJ5dGVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5idWZmZXIsICJyZWFkIiwgTlVMTCk7CisgICAgICAgIFB5T2JqZWN0ICpieXRlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF9yZWFkLCBOVUxMKTsKICAgICAgICAgUHlPYmplY3QgKmRlY29kZWQ7CiAgICAgICAgIGlmIChieXRlcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICBkZWNvZGVkID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+ZGVjb2RlciwgX1B5SU9fc3RyX2RlY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzLCBQeV9UcnVlLCBOVUxMKTsKKworICAgICAgICBpZiAoUHlfVFlQRShzZWxmLT5kZWNvZGVyKSA9PSAmUHlJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX1R5cGUpCisgICAgICAgICAgICBkZWNvZGVkID0gX1B5SW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGUoc2VsZi0+ZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlcywgMSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRlY29kZWQgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncygKKyAgICAgICAgICAgICAgICBzZWxmLT5kZWNvZGVyLCBfUHlJT19zdHJfZGVjb2RlLCBieXRlcywgUHlfVHJ1ZSwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CiAgICAgICAgIGlmIChjaGVja19kZWNvZGVkKGRlY29kZWQpIDwgMCkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTE1NzAsMTEgKzE1ODYsMTMgQEAKICAgICAgICAgcmVzdWx0ID0gdGV4dGlvd3JhcHBlcl9nZXRfZGVjb2RlZF9jaGFycyhzZWxmLCBuKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICByZW1haW5pbmcgLT0gUHlVbmljb2RlX0dFVF9TSVpFKHJlc3VsdCk7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVzdWx0KSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgcmVtYWluaW5nIC09IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlc3VsdCk7CiAKICAgICAgICAgLyogS2VlcCByZWFkaW5nIGNodW5rcyB1bnRpbCB3ZSBoYXZlIG4gY2hhcmFjdGVycyB0byByZXR1cm4gKi8KICAgICAgICAgd2hpbGUgKHJlbWFpbmluZyA+IDApIHsKLSAgICAgICAgICAgIHJlcyA9IHRleHRpb3dyYXBwZXJfcmVhZF9jaHVuayhzZWxmKTsKKyAgICAgICAgICAgIHJlcyA9IHRleHRpb3dyYXBwZXJfcmVhZF9jaHVuayhzZWxmLCByZW1haW5pbmcpOwogICAgICAgICAgICAgaWYgKHJlcyA8IDApIHsKICAgICAgICAgICAgICAgICAvKiBOT1RFOiBQeUVycl9TZXRGcm9tRXJybm8oKSBjYWxscyBQeUVycl9DaGVja1NpZ25hbHMoKQogICAgICAgICAgICAgICAgICAgIHdoZW4gRUlOVFIgb2NjdXJzIHNvIHdlIG5lZWRuJ3QgZG8gaXQgb3Vyc2VsdmVzLiAqLwpAQCAtMTU5MCwxMyArMTYwOCwxNCBAQAogICAgICAgICAgICAgICAgIGlmIChjaHVua3MgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoY2h1bmtzLCByZXN1bHQpIDwgMCkKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXN1bHQpID4gMCAmJgorICAgICAgICAgICAgICAgIFB5TGlzdF9BcHBlbmQoY2h1bmtzLCByZXN1bHQpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgIHJlc3VsdCA9IHRleHRpb3dyYXBwZXJfZ2V0X2RlY29kZWRfY2hhcnMoc2VsZiwgcmVtYWluaW5nKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICByZW1haW5pbmcgLT0gUHlVbmljb2RlX0dFVF9TSVpFKHJlc3VsdCk7CisgICAgICAgICAgICByZW1haW5pbmcgLT0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzdWx0KTsKICAgICAgICAgfQogICAgICAgICBpZiAoY2h1bmtzICE9IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCAmJiBQeUxpc3RfQXBwZW5kKGNodW5rcywgcmVzdWx0KSA8IDApCkBAIC0xNjE2LDM2ICsxNjM1LDM5IEBACiB9CiAKIAotLyogTk9URTogYGVuZGAgbXVzdCBwb2ludCB0byB0aGUgcmVhbCBlbmQgb2YgdGhlIFB5X1VOSUNPREUgc3RvcmFnZSwKKy8qIE5PVEU6IGBlbmRgIG11c3QgcG9pbnQgdG8gdGhlIHJlYWwgZW5kIG9mIHRoZSBQeV9VQ1M0IHN0b3JhZ2UsCiAgICB0aGF0IGlzIHRvIHRoZSBOVUwgY2hhcmFjdGVyLiBPdGhlcndpc2UgdGhlIGZ1bmN0aW9uIHdpbGwgcHJvZHVjZQogICAgaW5jb3JyZWN0IHJlc3VsdHMuICovCi1zdGF0aWMgUHlfVU5JQ09ERSAqCi1maW5kX2NvbnRyb2xfY2hhcihQeV9VTklDT0RFICpzdGFydCwgUHlfVU5JQ09ERSAqZW5kLCBQeV9VTklDT0RFIGNoKQorc3RhdGljIGNoYXIgKgorZmluZF9jb250cm9sX2NoYXIoaW50IGtpbmQsIGNoYXIgKnMsIGNoYXIgKmVuZCwgUHlfVUNTNCBjaCkKIHsKLSAgICBQeV9VTklDT0RFICpzID0gc3RhcnQ7CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgYXNzZXJ0KGNoIDwgMjU2KTsKKyAgICAgICAgcmV0dXJuIChjaGFyICopIG1lbWNocigodm9pZCAqKSBzLCAoY2hhcikgY2gsIGVuZCAtIHMpOworICAgIH0KICAgICBmb3IgKDs7KSB7Ci0gICAgICAgIHdoaWxlICgqcyA+IGNoKQotICAgICAgICAgICAgcysrOwotICAgICAgICBpZiAoKnMgPT0gY2gpCisgICAgICAgIHdoaWxlIChQeVVuaWNvZGVfUkVBRChraW5kLCBzLCAwKSA+IGNoKQorICAgICAgICAgICAgcyArPSBraW5kOworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgcywgMCkgPT0gY2gpCiAgICAgICAgICAgICByZXR1cm4gczsKICAgICAgICAgaWYgKHMgPT0gZW5kKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHMrKzsKKyAgICAgICAgcyArPSBraW5kOwogICAgIH0KIH0KIAogUHlfc3NpemVfdAogX1B5SU9fZmluZF9saW5lX2VuZGluZygKICAgICBpbnQgdHJhbnNsYXRlZCwgaW50IHVuaXZlcnNhbCwgUHlPYmplY3QgKnJlYWRubCwKLSAgICBQeV9VTklDT0RFICpzdGFydCwgUHlfVU5JQ09ERSAqZW5kLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKKyAgICBpbnQga2luZCwgY2hhciAqc3RhcnQsIGNoYXIgKmVuZCwgUHlfc3NpemVfdCAqY29uc3VtZWQpCiB7Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBlbmQgLSBzdGFydDsKKyAgICBQeV9zc2l6ZV90IGxlbiA9ICgoY2hhciopZW5kIC0gKGNoYXIqKXN0YXJ0KS9raW5kOwogCiAgICAgaWYgKHRyYW5zbGF0ZWQpIHsKICAgICAgICAgLyogTmV3bGluZXMgYXJlIGFscmVhZHkgdHJhbnNsYXRlZCwgb25seSBzZWFyY2ggZm9yIFxuICovCi0gICAgICAgIFB5X1VOSUNPREUgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKHN0YXJ0LCBlbmQsICdcbicpOworICAgICAgICBjaGFyICpwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihraW5kLCBzdGFydCwgZW5kLCAnXG4nKTsKICAgICAgICAgaWYgKHBvcyAhPSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIHBvcyAtIHN0YXJ0ICsgMTsKKyAgICAgICAgICAgIHJldHVybiAocG9zIC0gc3RhcnQpL2tpbmQgKyAxOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICpjb25zdW1lZCA9IGxlbjsKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTE2NTUsNjMgKzE2NzcsNjYgQEAKICAgICAgICAgLyogVW5pdmVyc2FsIG5ld2xpbmUgc2VhcmNoLiBGaW5kIGFueSBvZiBcciwgXHJcbiwgXG4KICAgICAgICAgICogVGhlIGRlY29kZXIgZW5zdXJlcyB0aGF0IFxyXG4gYXJlIG5vdCBzcGxpdCBpbiB0d28gcGllY2VzCiAgICAgICAgICAqLwotICAgICAgICBQeV9VTklDT0RFICpzID0gc3RhcnQ7CisgICAgICAgIGNoYXIgKnMgPSBzdGFydDsKICAgICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgUHlfVU5JQ09ERSBjaDsKKyAgICAgICAgICAgIFB5X1VDUzQgY2g7CiAgICAgICAgICAgICAvKiBGYXN0IHBhdGggZm9yIG5vbi1jb250cm9sIGNoYXJzLiBUaGUgbG9vcCBhbHdheXMgZW5kcwotICAgICAgICAgICAgICAgc2luY2UgdGhlIFB5X1VOSUNPREUgc3RvcmFnZSBpcyBOVUwtdGVybWluYXRlZC4gKi8KLSAgICAgICAgICAgIHdoaWxlICgqcyA+ICdccicpCi0gICAgICAgICAgICAgICAgcysrOworICAgICAgICAgICAgICAgc2luY2UgdGhlIFVuaWNvZGUgc3RyaW5nIGlzIE5VTC10ZXJtaW5hdGVkLiAqLworICAgICAgICAgICAgd2hpbGUgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHMsIDApID4gJ1xyJykKKyAgICAgICAgICAgICAgICBzICs9IGtpbmQ7CiAgICAgICAgICAgICBpZiAocyA+PSBlbmQpIHsKICAgICAgICAgICAgICAgICAqY29uc3VtZWQgPSBsZW47CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2ggPSAqcysrOworICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBzLCAwKTsKKyAgICAgICAgICAgIHMgKz0ga2luZDsKICAgICAgICAgICAgIGlmIChjaCA9PSAnXG4nKQotICAgICAgICAgICAgICAgIHJldHVybiBzIC0gc3RhcnQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIChzIC0gc3RhcnQpL2tpbmQ7CiAgICAgICAgICAgICBpZiAoY2ggPT0gJ1xyJykgewotICAgICAgICAgICAgICAgIGlmICgqcyA9PSAnXG4nKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyAtIHN0YXJ0ICsgMTsKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgcywgMCkgPT0gJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChzIC0gc3RhcnQpL2tpbmQgKyAxOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgLSBzdGFydDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChzIC0gc3RhcnQpL2tpbmQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIE5vbi11bml2ZXJzYWwgbW9kZS4gKi8KLSAgICAgICAgUHlfc3NpemVfdCByZWFkbmxfbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlYWRubCk7Ci0gICAgICAgIFB5X1VOSUNPREUgKm5sID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVhZG5sKTsKKyAgICAgICAgUHlfc3NpemVfdCByZWFkbmxfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVhZG5sKTsKKyAgICAgICAgY2hhciAqbmwgPSBQeVVuaWNvZGVfREFUQShyZWFkbmwpOworICAgICAgICAvKiBBc3N1bWUgdGhhdCByZWFkbmwgaXMgYW4gQVNDSUkgY2hhcmFjdGVyLiAqLworICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQocmVhZG5sKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CiAgICAgICAgIGlmIChyZWFkbmxfbGVuID09IDEpIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKHN0YXJ0LCBlbmQsIG5sWzBdKTsKKyAgICAgICAgICAgIGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHN0YXJ0LCBlbmQsIG5sWzBdKTsKICAgICAgICAgICAgIGlmIChwb3MgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gcG9zIC0gc3RhcnQgKyAxOworICAgICAgICAgICAgICAgIHJldHVybiAocG9zIC0gc3RhcnQpL2tpbmQgKyAxOwogICAgICAgICAgICAgKmNvbnN1bWVkID0gbGVuOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlfVU5JQ09ERSAqcyA9IHN0YXJ0OwotICAgICAgICAgICAgUHlfVU5JQ09ERSAqZSA9IGVuZCAtIHJlYWRubF9sZW4gKyAxOwotICAgICAgICAgICAgUHlfVU5JQ09ERSAqcG9zOworICAgICAgICAgICAgY2hhciAqcyA9IHN0YXJ0OworICAgICAgICAgICAgY2hhciAqZSA9IGVuZCAtIChyZWFkbmxfbGVuIC0gMSkqa2luZDsKKyAgICAgICAgICAgIGNoYXIgKnBvczsKICAgICAgICAgICAgIGlmIChlIDwgcykKICAgICAgICAgICAgICAgICBlID0gczsKICAgICAgICAgICAgIHdoaWxlIChzIDwgZSkgewogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihzLCBlbmQsIG5sWzBdKTsKKyAgICAgICAgICAgICAgICBjaGFyICpwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihraW5kLCBzLCBlbmQsIG5sWzBdKTsKICAgICAgICAgICAgICAgICBpZiAocG9zID09IE5VTEwgfHwgcG9zID49IGUpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCByZWFkbmxfbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBvc1tpXSAhPSBubFtpXSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHBvcywgaSkgIT0gbmxbaV0pCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGkgPT0gcmVhZG5sX2xlbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvcyAtIHN0YXJ0ICsgcmVhZG5sX2xlbjsKLSAgICAgICAgICAgICAgICBzID0gcG9zICsgMTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChwb3MgLSBzdGFydCkva2luZCArIHJlYWRubF9sZW47CisgICAgICAgICAgICAgICAgcyA9IHBvcyArIGtpbmQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihlLCBlbmQsIG5sWzBdKTsKKyAgICAgICAgICAgIHBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIGUsIGVuZCwgbmxbMF0pOwogICAgICAgICAgICAgaWYgKHBvcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgICpjb25zdW1lZCA9IGxlbjsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAqY29uc3VtZWQgPSBwb3MgLSBzdGFydDsKKyAgICAgICAgICAgICAgICAqY29uc3VtZWQgPSAocG9zIC0gc3RhcnQpL2tpbmQ7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNzMyLDE1ICsxNzU3LDE2IEBACiAgICAgY2h1bmtlZCA9IDA7CiAKICAgICB3aGlsZSAoMSkgewotICAgICAgICBQeV9VTklDT0RFICpwdHI7CisgICAgICAgIGNoYXIgKnB0cjsKICAgICAgICAgUHlfc3NpemVfdCBsaW5lX2xlbjsKKyAgICAgICAgaW50IGtpbmQ7CiAgICAgICAgIFB5X3NzaXplX3QgY29uc3VtZWQgPSAwOwogCiAgICAgICAgIC8qIEZpcnN0LCBnZXQgc29tZSBkYXRhIGlmIG5lY2Vzc2FyeSAqLwogICAgICAgICByZXMgPSAxOwogICAgICAgICB3aGlsZSAoIXNlbGYtPmRlY29kZWRfY2hhcnMgfHwKLSAgICAgICAgICAgICAgICFQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZi0+ZGVjb2RlZF9jaGFycykpIHsKLSAgICAgICAgICAgIHJlcyA9IHRleHRpb3dyYXBwZXJfcmVhZF9jaHVuayhzZWxmKTsKKyAgICAgICAgICAgICAgICFQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmLT5kZWNvZGVkX2NoYXJzKSkgeworICAgICAgICAgICAgcmVzID0gdGV4dGlvd3JhcHBlcl9yZWFkX2NodW5rKHNlbGYsIDApOwogICAgICAgICAgICAgaWYgKHJlcyA8IDApIHsKICAgICAgICAgICAgICAgICAvKiBOT1RFOiBQeUVycl9TZXRGcm9tRXJybm8oKSBjYWxscyBQeUVycl9DaGVja1NpZ25hbHMoKQogICAgICAgICAgICAgICAgICAgIHdoZW4gRUlOVFIgb2NjdXJzIHNvIHdlIG5lZWRuJ3QgZG8gaXQgb3Vyc2VsdmVzLiAqLwpAQCAtMTc3MCwxOCArMTc5NiwyNCBAQAogICAgICAgICAgICAgYXNzZXJ0KHNlbGYtPmRlY29kZWRfY2hhcnNfdXNlZCA9PSAwKTsKICAgICAgICAgICAgIGxpbmUgPSBQeVVuaWNvZGVfQ29uY2F0KHJlbWFpbmluZywgc2VsZi0+ZGVjb2RlZF9jaGFycyk7CiAgICAgICAgICAgICBzdGFydCA9IDA7Ci0gICAgICAgICAgICBvZmZzZXRfdG9fYnVmZmVyID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlbWFpbmluZyk7CisgICAgICAgICAgICBvZmZzZXRfdG9fYnVmZmVyID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVtYWluaW5nKTsKICAgICAgICAgICAgIFB5X0NMRUFSKHJlbWFpbmluZyk7CiAgICAgICAgICAgICBpZiAobGluZSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGxpbmUpID09IC0xKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KIAotICAgICAgICBwdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShsaW5lKTsKLSAgICAgICAgbGluZV9sZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUobGluZSk7CisgICAgICAgIHB0ciA9IFB5VW5pY29kZV9EQVRBKGxpbmUpOworICAgICAgICBsaW5lX2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGxpbmUpOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQobGluZSk7CiAKICAgICAgICAgZW5kcG9zID0gX1B5SU9fZmluZF9saW5lX2VuZGluZygKICAgICAgICAgICAgIHNlbGYtPnJlYWR0cmFuc2xhdGUsIHNlbGYtPnJlYWR1bml2ZXJzYWwsIHNlbGYtPnJlYWRubCwKLSAgICAgICAgICAgIHB0ciArIHN0YXJ0LCBwdHIgKyBsaW5lX2xlbiwgJmNvbnN1bWVkKTsKKyAgICAgICAgICAgIGtpbmQsCisgICAgICAgICAgICBwdHIgKyBraW5kICogc3RhcnQsCisgICAgICAgICAgICBwdHIgKyBraW5kICogbGluZV9sZW4sCisgICAgICAgICAgICAmY29uc3VtZWQpOwogICAgICAgICBpZiAoZW5kcG9zID49IDApIHsKICAgICAgICAgICAgIGVuZHBvcyArPSBzdGFydDsKICAgICAgICAgICAgIGlmIChsaW1pdCA+PSAwICYmIChlbmRwb3MgLSBzdGFydCkgKyBjaHVua2VkID49IGxpbWl0KQpAQCAtMTgwNSwyMSArMTgzNywyMCBAQAogICAgICAgICAgICAgICAgIGlmIChjaHVua3MgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHMgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocHRyICsgc3RhcnQsIGVuZHBvcyAtIHN0YXJ0KTsKKyAgICAgICAgICAgIHMgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGxpbmUsIHN0YXJ0LCBlbmRwb3MpOwogICAgICAgICAgICAgaWYgKHMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoY2h1bmtzLCBzKSA8IDApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocyk7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNodW5rZWQgKz0gUHlVbmljb2RlX0dFVF9TSVpFKHMpOworICAgICAgICAgICAgY2h1bmtlZCArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKICAgICAgICAgfQogICAgICAgICAvKiBUaGVyZSBtYXkgYmUgc29tZSByZW1haW5pbmcgYnl0ZXMgd2UnbGwgaGF2ZSB0byBwcmVwZW5kIHRvIHRoZQogICAgICAgICAgICBuZXh0IGNodW5rIG9mIGRhdGEgKi8KICAgICAgICAgaWYgKGVuZHBvcyA8IGxpbmVfbGVuKSB7Ci0gICAgICAgICAgICByZW1haW5pbmcgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoCi0gICAgICAgICAgICAgICAgICAgIHB0ciArIGVuZHBvcywgbGluZV9sZW4gLSBlbmRwb3MpOworICAgICAgICAgICAgcmVtYWluaW5nID0gUHlVbmljb2RlX1N1YnN0cmluZyhsaW5lLCBlbmRwb3MsIGxpbmVfbGVuKTsKICAgICAgICAgICAgIGlmIChyZW1haW5pbmcgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CkBAIC0xODMxLDE5ICsxODYyLDEyIEBACiAgICAgaWYgKGxpbmUgIT0gTlVMTCkgewogICAgICAgICAvKiBPdXIgbGluZSBlbmRzIGluIHRoZSBjdXJyZW50IGJ1ZmZlciAqLwogICAgICAgICBzZWxmLT5kZWNvZGVkX2NoYXJzX3VzZWQgPSBlbmRwb3MgLSBvZmZzZXRfdG9fYnVmZmVyOwotICAgICAgICBpZiAoc3RhcnQgPiAwIHx8IGVuZHBvcyA8IFB5VW5pY29kZV9HRVRfU0laRShsaW5lKSkgewotICAgICAgICAgICAgaWYgKHN0YXJ0ID09IDAgJiYgUHlfUkVGQ05UKGxpbmUpID09IDEpIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmbGluZSwgZW5kcG9zKSA8IDApCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqcyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKGxpbmUpICsgc3RhcnQsIGVuZHBvcyAtIHN0YXJ0KTsKLSAgICAgICAgICAgICAgICBQeV9DTEVBUihsaW5lKTsKLSAgICAgICAgICAgICAgICBpZiAocyA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIGxpbmUgPSBzOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAoc3RhcnQgPiAwIHx8IGVuZHBvcyA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKGxpbmUpKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcyA9IFB5VW5pY29kZV9TdWJzdHJpbmcobGluZSwgc3RhcnQsIGVuZHBvcyk7CisgICAgICAgICAgICBQeV9DTEVBUihsaW5lKTsKKyAgICAgICAgICAgIGlmIChzID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGxpbmUgPSBzOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChyZW1haW5pbmcgIT0gTlVMTCkgewpAQCAtMTg1NywxNiArMTg4MSwyMCBAQAogICAgICAgICBQeV9DTEVBUihyZW1haW5pbmcpOwogICAgIH0KICAgICBpZiAoY2h1bmtzICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKGxpbmUgIT0gTlVMTCAmJiBQeUxpc3RfQXBwZW5kKGNodW5rcywgbGluZSkgPCAwKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgUHlfQ0xFQVIobGluZSk7CisgICAgICAgIGlmIChsaW5lICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGNodW5rcywgbGluZSkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBQeV9ERUNSRUYobGluZSk7CisgICAgICAgIH0KICAgICAgICAgbGluZSA9IFB5VW5pY29kZV9Kb2luKF9QeUlPX2VtcHR5X3N0ciwgY2h1bmtzKTsKICAgICAgICAgaWYgKGxpbmUgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIFB5X0RFQ1JFRihjaHVua3MpOworICAgICAgICBQeV9DTEVBUihjaHVua3MpOwogICAgIH0KLSAgICBpZiAobGluZSA9PSBOVUxMKQotICAgICAgICBsaW5lID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOworICAgIGlmIChsaW5lID09IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKF9QeUlPX2VtcHR5X3N0cik7CisgICAgICAgIGxpbmUgPSBfUHlJT19lbXB0eV9zdHI7CisgICAgfQogCiAgICAgcmV0dXJuIGxpbmU7CiAKQEAgLTE5ODksOCArMjAxNyw4IEBACiAgICAgaWYgKGNvb2tpZS0+c3RhcnRfcG9zID09IDAgJiYgY29va2llLT5kZWNfZmxhZ3MgPT0gMCkKICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+ZGVjb2RlciwgX1B5SU9fc3RyX3Jlc2V0LCBOVUxMKTsKICAgICBlbHNlCi0gICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+ZGVjb2RlciwgInNldHN0YXRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKCh5aSkpIiwgIiIsIGNvb2tpZS0+ZGVjX2ZsYWdzKTsKKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5kZWNvZGVyLCAmUHlJZF9zZXRzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKCh5aSkpIiwgIiIsIGNvb2tpZS0+ZGVjX2ZsYWdzKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBQeV9ERUNSRUYocmVzKTsKQEAgLTIwNTQsMTMgKzIwODIsMTIgQEAKICAgICAgICAgICogc3luYyB0aGUgdW5kZXJseWluZyBidWZmZXIgd2l0aCB0aGUgY3VycmVudCBwb3NpdGlvbi4KICAgICAgICAgICovCiAgICAgICAgIFB5X0RFQ1JFRihjb29raWVPYmopOwotICAgICAgICBjb29raWVPYmogPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJ0ZWxsIiwgTlVMTCk7CisgICAgICAgIGNvb2tpZU9iaiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfdGVsbCwgTlVMTCk7CiAgICAgICAgIGlmIChjb29raWVPYmogPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAgICAgZWxzZSBpZiAod2hlbmNlID09IDIpIHsKICAgICAgICAgLyogc2VlayByZWxhdGl2ZSB0byBlbmQgb2YgZmlsZSAqLwotCiAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChjb29raWVPYmosIF9QeUlPX3plcm8sIFB5X0VRKTsKICAgICAgICAgaWYgKGNtcCA8IDApCiAgICAgICAgICAgICBnb3RvIGZhaWw7CkBAIC0yMDcwLDcgKzIwOTcsNyBAQAogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CiAKLSAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKilzZWxmLCAiZmx1c2giLCBOVUxMKTsKKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC0yMDc4LDEzICsyMTA1LDEzIEBACiAgICAgICAgIHRleHRpb3dyYXBwZXJfc2V0X2RlY29kZWRfY2hhcnMoc2VsZiwgTlVMTCk7CiAgICAgICAgIFB5X0NMRUFSKHNlbGYtPnNuYXBzaG90KTsKICAgICAgICAgaWYgKHNlbGYtPmRlY29kZXIpIHsKLSAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+ZGVjb2RlciwgInJlc2V0IiwgTlVMTCk7CisgICAgICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmRlY29kZXIsICZQeUlkX3Jlc2V0LCBOVUxMKTsKICAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgfQogCi0gICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+YnVmZmVyLCAic2VlayIsICJpaSIsIDAsIDIpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfc2VlaywgImlpIiwgMCwgMik7CiAgICAgICAgIFB5X1hERUNSRUYoY29va2llT2JqKTsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CkBAIC0yMTM3LDggKzIxNjQsOCBAQAogCiAgICAgaWYgKGNvb2tpZS5jaGFyc190b19za2lwKSB7CiAgICAgICAgIC8qIEp1c3QgbGlrZSBfcmVhZF9jaHVuaywgZmVlZCB0aGUgZGVjb2RlciBhbmQgc2F2ZSBhIHNuYXBzaG90LiAqLwotICAgICAgICBQeU9iamVjdCAqaW5wdXRfY2h1bmsgPSBQeU9iamVjdF9DYWxsTWV0aG9kKAotICAgICAgICAgICAgc2VsZi0+YnVmZmVyLCAicmVhZCIsICJpIiwgY29va2llLmJ5dGVzX3RvX2ZlZWQpOworICAgICAgICBQeU9iamVjdCAqaW5wdXRfY2h1bmsgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgc2VsZi0+YnVmZmVyLCAmUHlJZF9yZWFkLCAiaSIsIGNvb2tpZS5ieXRlc190b19mZWVkKTsKICAgICAgICAgUHlPYmplY3QgKmRlY29kZWQ7CiAKICAgICAgICAgaWYgKGlucHV0X2NodW5rID09IE5VTEwpCkBAIC0yMTU5LDggKzIxODYsOCBAQAogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CiAKLSAgICAgICAgZGVjb2RlZCA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+ZGVjb2RlciwgImRlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPaSIsIGlucHV0X2NodW5rLCAoaW50KWNvb2tpZS5uZWVkX2VvZik7CisgICAgICAgIGRlY29kZWQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmRlY29kZXIsICZQeUlkX2RlY29kZSwKKyAgICAgICAgICAgICJPaSIsIGlucHV0X2NodW5rLCAoaW50KWNvb2tpZS5uZWVkX2VvZik7CiAKICAgICAgICAgaWYgKGNoZWNrX2RlY29kZWQoZGVjb2RlZCkgPCAwKQogICAgICAgICAgICAgZ290byBmYWlsOwpAQCAtMjE2OCw3ICsyMTk1LDcgQEAKICAgICAgICAgdGV4dGlvd3JhcHBlcl9zZXRfZGVjb2RlZF9jaGFycyhzZWxmLCBkZWNvZGVkKTsKIAogICAgICAgICAvKiBTa2lwIGNoYXJzX3RvX3NraXAgb2YgdGhlIGRlY29kZWQgY2hhcmFjdGVycy4gKi8KLSAgICAgICAgaWYgKFB5VW5pY29kZV9HZXRTaXplKHNlbGYtPmRlY29kZWRfY2hhcnMpIDwgY29va2llLmNoYXJzX3RvX3NraXApIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9HZXRMZW5ndGgoc2VsZi0+ZGVjb2RlZF9jaGFycykgPCBjb29raWUuY2hhcnNfdG9fc2tpcCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsICJjYW4ndCByZXN0b3JlIGxvZ2ljYWwgZmlsZSBwb3NpdGlvbiIpOwogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CkBAIC0yMjAwLDggKzIyMjcsMTIgQEAKICAgICBjb29raWVfdHlwZSBjb29raWUgPSB7MCwwLDAsMCwwfTsKICAgICBQeU9iamVjdCAqbmV4dF9pbnB1dDsKICAgICBQeV9zc2l6ZV90IGNoYXJzX3RvX3NraXAsIGNoYXJzX2RlY29kZWQ7CisgICAgUHlfc3NpemVfdCBza2lwX2J5dGVzLCBza2lwX2JhY2s7CiAgICAgUHlPYmplY3QgKnNhdmVkX3N0YXRlID0gTlVMTDsKICAgICBjaGFyICppbnB1dCwgKmlucHV0X2VuZDsKKyAgICBjaGFyICpkZWNfYnVmZmVyOworICAgIFB5X3NzaXplX3QgZGVjX2J1ZmZlcl9sZW47CisgICAgaW50IGRlY19mbGFnczsKIAogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKQEAgLTIyMTgsMTcgKzIyNDksMTcgQEAKIAogICAgIGlmIChfdGV4dGlvd3JhcHBlcl93cml0ZWZsdXNoKHNlbGYpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKilzZWxmLCAiZmx1c2giLCBOVUxMKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2ZsdXNoLCBOVUxMKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZmFpbDsKICAgICBQeV9ERUNSRUYocmVzKTsKIAotICAgIHBvc29iaiA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+YnVmZmVyLCAidGVsbCIsIE5VTEwpOworICAgIHBvc29iaiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF90ZWxsLCBOVUxMKTsKICAgICBpZiAocG9zb2JqID09IE5VTEwpCiAgICAgICAgIGdvdG8gZmFpbDsKIAogICAgIGlmIChzZWxmLT5kZWNvZGVyID09IE5VTEwgfHwgc2VsZi0+c25hcHNob3QgPT0gTlVMTCkgewotICAgICAgICBhc3NlcnQgKHNlbGYtPmRlY29kZWRfY2hhcnMgPT0gTlVMTCB8fCBQeVVuaWNvZGVfR2V0U2l6ZShzZWxmLT5kZWNvZGVkX2NoYXJzKSA9PSAwKTsKKyAgICAgICAgYXNzZXJ0IChzZWxmLT5kZWNvZGVkX2NoYXJzID09IE5VTEwgfHwgUHlVbmljb2RlX0dldExlbmd0aChzZWxmLT5kZWNvZGVkX2NoYXJzKSA9PSAwKTsKICAgICAgICAgcmV0dXJuIHBvc29iajsKICAgICB9CiAKQEAgLTIyMzcsNiArMjI2OCw3IEBACiAjZWxzZQogICAgIGNvb2tpZS5zdGFydF9wb3MgPSBQeUxvbmdfQXNMb25nKHBvc29iaik7CiAjZW5kaWYKKyAgICBQeV9ERUNSRUYocG9zb2JqKTsKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgZ290byBmYWlsOwogCkBAIC0yMjUxLDU2ICsyMjgzLDk3IEBACiAgICAgLyogSG93IG1hbnkgZGVjb2RlZCBjaGFyYWN0ZXJzIGhhdmUgYmVlbiB1c2VkIHVwIHNpbmNlIHRoZSBzbmFwc2hvdD8gKi8KICAgICBpZiAoc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkID09IDApICB7CiAgICAgICAgIC8qIFdlIGhhdmVuJ3QgbW92ZWQgZnJvbSB0aGUgc25hcHNob3QgcG9pbnQuICovCi0gICAgICAgIFB5X0RFQ1JFRihwb3NvYmopOwogICAgICAgICByZXR1cm4gdGV4dGlvd3JhcHBlcl9idWlsZF9jb29raWUoJmNvb2tpZSk7CiAgICAgfQogCiAgICAgY2hhcnNfdG9fc2tpcCA9IHNlbGYtPmRlY29kZWRfY2hhcnNfdXNlZDsKIAotICAgIC8qIFN0YXJ0aW5nIGZyb20gdGhlIHNuYXBzaG90IHBvc2l0aW9uLCB3ZSB3aWxsIHdhbGsgdGhlIGRlY29kZXIKLSAgICAgKiBmb3J3YXJkIHVudGlsIGl0IGdpdmVzIHVzIGVub3VnaCBkZWNvZGVkIGNoYXJhY3RlcnMuCi0gICAgICovCisgICAgLyogRGVjb2RlciBzdGF0ZSB3aWxsIGJlIHJlc3RvcmVkIGF0IHRoZSBlbmQgKi8KICAgICBzYXZlZF9zdGF0ZSA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNlbGYtPmRlY29kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlJT19zdHJfZ2V0c3RhdGUsIE5VTEwpOwogICAgIGlmIChzYXZlZF9zdGF0ZSA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWw7CiAKLSAgICAvKiBOb3RlIG91ciBpbml0aWFsIHN0YXJ0IHBvaW50LiAqLwotICAgIGlmIChfdGV4dGlvd3JhcHBlcl9kZWNvZGVyX3NldHN0YXRlKHNlbGYsICZjb29raWUpIDwgMCkKLSAgICAgICAgZ290byBmYWlsOworI2RlZmluZSBERUNPREVSX0dFVFNUQVRFKCkgZG8geyBcCisgICAgICAgIFB5T2JqZWN0ICpfc3RhdGUgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5kZWNvZGVyLCBcCisgICAgICAgICAgICBfUHlJT19zdHJfZ2V0c3RhdGUsIE5VTEwpOyBcCisgICAgICAgIGlmIChfc3RhdGUgPT0gTlVMTCkgXAorICAgICAgICAgICAgZ290byBmYWlsOyBcCisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoX3N0YXRlLCAiKHkjaSkiLCAmZGVjX2J1ZmZlciwgJmRlY19idWZmZXJfbGVuLCAmZGVjX2ZsYWdzKSkgeyBcCisgICAgICAgICAgICBQeV9ERUNSRUYoX3N0YXRlKTsgXAorICAgICAgICAgICAgZ290byBmYWlsOyBcCisgICAgICAgIH0gXAorICAgICAgICBQeV9ERUNSRUYoX3N0YXRlKTsgXAorICAgIH0gd2hpbGUgKDApCiAKLSAgICAvKiBGZWVkIHRoZSBkZWNvZGVyIG9uZSBieXRlIGF0IGEgdGltZS4gIEFzIHdlIGdvLCBub3RlIHRoZQotICAgICAqIG5lYXJlc3QgInNhZmUgc3RhcnQgcG9pbnQiIGJlZm9yZSB0aGUgY3VycmVudCBsb2NhdGlvbgotICAgICAqIChhIHBvaW50IHdoZXJlIHRoZSBkZWNvZGVyIGhhcyBub3RoaW5nIGJ1ZmZlcmVkLCBzbyBzZWVrKCkKKyNkZWZpbmUgREVDT0RFUl9ERUNPREUoc3RhcnQsIGxlbiwgcmVzKSBkbyB7IFwKKyAgICAgICAgUHlPYmplY3QgKl9kZWNvZGVkID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCggXAorICAgICAgICAgICAgc2VsZi0+ZGVjb2RlciwgJlB5SWRfZGVjb2RlLCAieSMiLCBzdGFydCwgbGVuKTsgXAorICAgICAgICBpZiAoY2hlY2tfZGVjb2RlZChfZGVjb2RlZCkgPCAwKSBcCisgICAgICAgICAgICBnb3RvIGZhaWw7IFwKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoX2RlY29kZWQpOyBcCisgICAgICAgIFB5X0RFQ1JFRihfZGVjb2RlZCk7IFwKKyAgICB9IHdoaWxlICgwKQorCisgICAgLyogRmFzdCBzZWFyY2ggZm9yIGFuIGFjY2VwdGFibGUgc3RhcnQgcG9pbnQsIGNsb3NlIHRvIG91cgorICAgICAgIGN1cnJlbnQgcG9zICovCisgICAgc2tpcF9ieXRlcyA9IChQeV9zc2l6ZV90KSAoc2VsZi0+YjJjcmF0aW8gKiBjaGFyc190b19za2lwKTsKKyAgICBza2lwX2JhY2sgPSAxOworICAgIGFzc2VydChza2lwX2JhY2sgPD0gUHlCeXRlc19HRVRfU0laRShuZXh0X2lucHV0KSk7CisgICAgaW5wdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhuZXh0X2lucHV0KTsKKyAgICB3aGlsZSAoc2tpcF9ieXRlcyA+IDApIHsKKyAgICAgICAgLyogRGVjb2RlIHVwIHRvIHRlbXB0YXRpdmUgc3RhcnQgcG9pbnQgKi8KKyAgICAgICAgaWYgKF90ZXh0aW93cmFwcGVyX2RlY29kZXJfc2V0c3RhdGUoc2VsZiwgJmNvb2tpZSkgPCAwKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBERUNPREVSX0RFQ09ERShpbnB1dCwgc2tpcF9ieXRlcywgY2hhcnNfZGVjb2RlZCk7CisgICAgICAgIGlmIChjaGFyc19kZWNvZGVkIDw9IGNoYXJzX3RvX3NraXApIHsKKyAgICAgICAgICAgIERFQ09ERVJfR0VUU1RBVEUoKTsKKyAgICAgICAgICAgIGlmIChkZWNfYnVmZmVyX2xlbiA9PSAwKSB7CisgICAgICAgICAgICAgICAgLyogQmVmb3JlIHBvcyBhbmQgbm8gYnl0ZXMgYnVmZmVyZWQgaW4gZGVjb2RlciA9PiBPSyAqLworICAgICAgICAgICAgICAgIGNvb2tpZS5kZWNfZmxhZ3MgPSBkZWNfZmxhZ3M7CisgICAgICAgICAgICAgICAgY2hhcnNfdG9fc2tpcCAtPSBjaGFyc19kZWNvZGVkOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogU2tpcCBiYWNrIGJ5IGJ1ZmZlcmVkIGFtb3VudCBhbmQgcmVzZXQgaGV1cmlzdGljICovCisgICAgICAgICAgICBza2lwX2J5dGVzIC09IGRlY19idWZmZXJfbGVuOworICAgICAgICAgICAgc2tpcF9iYWNrID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIFdlJ3JlIHRvbyBmYXIgYWhlYWQsIHNraXAgYmFjayBhIGJpdCAqLworICAgICAgICAgICAgc2tpcF9ieXRlcyAtPSBza2lwX2JhY2s7CisgICAgICAgICAgICBza2lwX2JhY2sgKj0gMjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc2tpcF9ieXRlcyA8PSAwKSB7CisgICAgICAgIHNraXBfYnl0ZXMgPSAwOworICAgICAgICBpZiAoX3RleHRpb3dyYXBwZXJfZGVjb2Rlcl9zZXRzdGF0ZShzZWxmLCAmY29va2llKSA8IDApCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgLyogTm90ZSBvdXIgaW5pdGlhbCBzdGFydCBwb2ludC4gKi8KKyAgICBjb29raWUuc3RhcnRfcG9zICs9IHNraXBfYnl0ZXM7CisgICAgY29va2llLmNoYXJzX3RvX3NraXAgPSBjaGFyc190b19za2lwOworICAgIGlmIChjaGFyc190b19za2lwID09IDApCisgICAgICAgIGdvdG8gZmluYWxseTsKKworICAgIC8qIFdlIHNob3VsZCBiZSBjbG9zZSB0byB0aGUgZGVzaXJlZCBwb3NpdGlvbi4gIE5vdyBmZWVkIHRoZSBkZWNvZGVyIG9uZQorICAgICAqIGJ5dGUgYXQgYSB0aW1lIHVudGlsIHdlIHJlYWNoIHRoZSBgY2hhcnNfdG9fc2tpcGAgdGFyZ2V0LgorICAgICAqIEFzIHdlIGdvLCBub3RlIHRoZSBuZWFyZXN0ICJzYWZlIHN0YXJ0IHBvaW50IiBiZWZvcmUgdGhlIGN1cnJlbnQKKyAgICAgKiBsb2NhdGlvbiAoYSBwb2ludCB3aGVyZSB0aGUgZGVjb2RlciBoYXMgbm90aGluZyBidWZmZXJlZCwgc28gc2VlaygpCiAgICAgICogY2FuIHNhZmVseSBzdGFydCBmcm9tIHRoZXJlIGFuZCBhZHZhbmNlIHRvIHRoaXMgbG9jYXRpb24pLgogICAgICAqLwogICAgIGNoYXJzX2RlY29kZWQgPSAwOwogICAgIGlucHV0ID0gUHlCeXRlc19BU19TVFJJTkcobmV4dF9pbnB1dCk7CiAgICAgaW5wdXRfZW5kID0gaW5wdXQgKyBQeUJ5dGVzX0dFVF9TSVpFKG5leHRfaW5wdXQpOworICAgIGlucHV0ICs9IHNraXBfYnl0ZXM7CiAgICAgd2hpbGUgKGlucHV0IDwgaW5wdXRfZW5kKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpzdGF0ZTsKLSAgICAgICAgY2hhciAqZGVjX2J1ZmZlcjsKLSAgICAgICAgUHlfc3NpemVfdCBkZWNfYnVmZmVyX2xlbjsKLSAgICAgICAgaW50IGRlY19mbGFnczsKKyAgICAgICAgUHlfc3NpemVfdCBuOwogCi0gICAgICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgKLSAgICAgICAgICAgIHNlbGYtPmRlY29kZXIsICJkZWNvZGUiLCAieSMiLCBpbnB1dCwgMSk7Ci0gICAgICAgIGlmIChjaGVja19kZWNvZGVkKGRlY29kZWQpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgY2hhcnNfZGVjb2RlZCArPSBQeVVuaWNvZGVfR0VUX1NJWkUoZGVjb2RlZCk7Ci0gICAgICAgIFB5X0RFQ1JFRihkZWNvZGVkKTsKLQorICAgICAgICBERUNPREVSX0RFQ09ERShpbnB1dCwgMSwgbik7CisgICAgICAgIC8qIFdlIGdvdCBuIGNoYXJzIGZvciAxIGJ5dGUgKi8KKyAgICAgICAgY2hhcnNfZGVjb2RlZCArPSBuOwogICAgICAgICBjb29raWUuYnl0ZXNfdG9fZmVlZCArPSAxOwotCi0gICAgICAgIHN0YXRlID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+ZGVjb2RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlJT19zdHJfZ2V0c3RhdGUsIE5VTEwpOwotICAgICAgICBpZiAoc3RhdGUgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShzdGF0ZSwgIih5I2kpIiwgJmRlY19idWZmZXIsICZkZWNfYnVmZmVyX2xlbiwgJmRlY19mbGFncykpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdGF0ZSk7Ci0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKHN0YXRlKTsKKyAgICAgICAgREVDT0RFUl9HRVRTVEFURSgpOwogCiAgICAgICAgIGlmIChkZWNfYnVmZmVyX2xlbiA9PSAwICYmIGNoYXJzX2RlY29kZWQgPD0gY2hhcnNfdG9fc2tpcCkgewogICAgICAgICAgICAgLyogRGVjb2RlciBidWZmZXIgaXMgZW1wdHksIHNvIHRoaXMgaXMgYSBzYWZlIHN0YXJ0IHBvaW50LiAqLwpAQCAtMjMxNiwxMSArMjM4OSwxMSBAQAogICAgIH0KICAgICBpZiAoaW5wdXQgPT0gaW5wdXRfZW5kKSB7CiAgICAgICAgIC8qIFdlIGRpZG4ndCBnZXQgZW5vdWdoIGRlY29kZWQgZGF0YTsgc2lnbmFsIEVPRiB0byBnZXQgbW9yZS4gKi8KLSAgICAgICAgUHlPYmplY3QgKmRlY29kZWQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKAotICAgICAgICAgICAgc2VsZi0+ZGVjb2RlciwgImRlY29kZSIsICJ5aSIsICIiLCAvKiBmaW5hbCA9ICovIDEpOworICAgICAgICBQeU9iamVjdCAqZGVjb2RlZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICBzZWxmLT5kZWNvZGVyLCAmUHlJZF9kZWNvZGUsICJ5aSIsICIiLCAvKiBmaW5hbCA9ICovIDEpOwogICAgICAgICBpZiAoY2hlY2tfZGVjb2RlZChkZWNvZGVkKSA8IDApCiAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIGNoYXJzX2RlY29kZWQgKz0gUHlVbmljb2RlX0dFVF9TSVpFKGRlY29kZWQpOworICAgICAgICBjaGFyc19kZWNvZGVkICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGRlY29kZWQpOwogICAgICAgICBQeV9ERUNSRUYoZGVjb2RlZCk7CiAgICAgICAgIGNvb2tpZS5uZWVkX2VvZiA9IDE7CiAKQEAgLTIzMzEsOSArMjQwNCw4IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiBmaW5hbGx5ICovCi0gICAgUHlfWERFQ1JFRihwb3NvYmopOwotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+ZGVjb2RlciwgInNldHN0YXRlIiwgIihPKSIsIHNhdmVkX3N0YXRlKTsKK2ZpbmFsbHk6CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5kZWNvZGVyLCAmUHlJZF9zZXRzdGF0ZSwgIihPKSIsIHNhdmVkX3N0YXRlKTsKICAgICBQeV9ERUNSRUYoc2F2ZWRfc3RhdGUpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMzQzLDEzICsyNDE1LDEyIEBACiAgICAgY29va2llLmNoYXJzX3RvX3NraXAgPSBQeV9TQUZFX0RPV05DQVNUKGNoYXJzX3RvX3NraXAsIFB5X3NzaXplX3QsIGludCk7CiAgICAgcmV0dXJuIHRleHRpb3dyYXBwZXJfYnVpbGRfY29va2llKCZjb29raWUpOwogCi0gIGZhaWw6Ci0gICAgUHlfWERFQ1JFRihwb3NvYmopOworZmFpbDoKICAgICBpZiAoc2F2ZWRfc3RhdGUpIHsKICAgICAgICAgUHlPYmplY3QgKnR5cGUsICp2YWx1ZSwgKnRyYWNlYmFjazsKICAgICAgICAgUHlFcnJfRmV0Y2goJnR5cGUsICZ2YWx1ZSwgJnRyYWNlYmFjayk7CiAKLSAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5kZWNvZGVyLCAic2V0c3RhdGUiLCAiKE8pIiwgc2F2ZWRfc3RhdGUpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmRlY29kZXIsICZQeUlkX3NldHN0YXRlLCAiKE8pIiwgc2F2ZWRfc3RhdGUpOwogICAgICAgICBQeV9ERUNSRUYoc2F2ZWRfc3RhdGUpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIzODksNyArMjQ2MCw3IEBACiAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxfaW8uVGV4dElPV3JhcHBlciIpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgbmFtZW9iaiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopIHNlbGYsICJuYW1lIik7CisgICAgbmFtZW9iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopIHNlbGYsICZQeUlkX25hbWUpOwogICAgIGlmIChuYW1lb2JqID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTI0MDUsNyArMjQ3Niw3IEBACiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBtb2Rlb2JqID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QgKikgc2VsZiwgIm1vZGUiKTsKKyAgICBtb2Rlb2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKikgc2VsZiwgJlB5SWRfbW9kZSk7CiAgICAgaWYgKG1vZGVvYmogPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMjQzNywzNSArMjUwOCwzNSBAQAogdGV4dGlvd3JhcHBlcl9maWxlbm8odGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5idWZmZXIsICJmaWxlbm8iLCBOVUxMKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX2ZpbGVubywgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0ZXh0aW93cmFwcGVyX3NlZWthYmxlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+YnVmZmVyLCAic2Vla2FibGUiLCBOVUxMKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX3NlZWthYmxlLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHRleHRpb3dyYXBwZXJfcmVhZGFibGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5idWZmZXIsICJyZWFkYWJsZSIsIE5VTEwpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfcmVhZGFibGUsIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdGV4dGlvd3JhcHBlcl93cml0YWJsZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmJ1ZmZlciwgIndyaXRhYmxlIiwgTlVMTCk7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF93cml0YWJsZSwgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0ZXh0aW93cmFwcGVyX2lzYXR0eSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmJ1ZmZlciwgImlzYXR0eSIsIE5VTEwpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfaXNhdHR5LCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI0ODQsNyArMjU1NSw3IEBACiAgICAgc2VsZi0+dGVsbGluZyA9IHNlbGYtPnNlZWthYmxlOwogICAgIGlmIChfdGV4dGlvd3JhcHBlcl93cml0ZWZsdXNoKHNlbGYpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+YnVmZmVyLCAiZmx1c2giLCBOVUxMKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX2ZsdXNoLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI1MDYsMjEgKzI1NzcsMzcgQEAKICAgICAgICAgUHlfUkVUVVJOX05PTkU7IC8qIHN0cmVhbSBhbHJlYWR5IGNsb3NlZCAqLwogICAgIH0KICAgICBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEwsICp2YWwsICp0YjsKICAgICAgICAgaWYgKHNlbGYtPmRlYWxsb2NhdGluZykgewotICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5idWZmZXIsICJfZGVhbGxvY193YXJuIiwgIk8iLCBzZWxmKTsKKyAgICAgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF9fZGVhbGxvY193YXJuLCAiTyIsIHNlbGYpOwogICAgICAgICAgICAgaWYgKHJlcykKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICB9Ci0gICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopc2VsZiwgImZsdXNoIiwgTlVMTCk7Ci0gICAgICAgIGlmIChyZXMgPT0gTlVMTCkgewotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9mbHVzaCwgTlVMTCk7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogCi0gICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmJ1ZmZlciwgImNsb3NlIiwgTlVMTCk7CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF9jbG9zZSwgTlVMTCk7CisgICAgICAgIGlmIChleGMgIT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKHJlcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfQ0xFQVIocmVzKTsKKyAgICAgICAgICAgICAgICBQeUVycl9SZXN0b3JlKGV4YywgdmFsLCB0Yik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsMjsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZXhjKTsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRiKTsKKyAgICAgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsMiwgJnRiKTsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV4YywgJnZhbDIsICZ0Yik7CisgICAgICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0Q29udGV4dCh2YWwyLCB2YWwpOworICAgICAgICAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXhjLCB2YWwyLCB0Yik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiB9CiAKQEAgLTI1NDgsMTAgKzI2MzUsMTAgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChsaW5lID09IE5VTEwpCisgICAgaWYgKGxpbmUgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkobGluZSkgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShsaW5lKSA9PSAwKSB7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGxpbmUpID09IDApIHsKICAgICAgICAgLyogUmVhY2hlZCBFT0Ygb3Igd291bGQgaGF2ZSBibG9ja2VkICovCiAgICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKICAgICAgICAgUHlfQ0xFQVIoc2VsZi0+c25hcHNob3QpOwpAQCAtMjU2Niw3ICsyNjUzLDcgQEAKIHRleHRpb3dyYXBwZXJfbmFtZV9nZXQodGV4dGlvICpzZWxmLCB2b2lkICpjb250ZXh0KQogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwotICAgIHJldHVybiBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYtPmJ1ZmZlciwgIm5hbWUiKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLT5idWZmZXIsICZQeUlkX25hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fanNvbi5jIGIvTW9kdWxlcy9fanNvbi5jCmluZGV4IDAxNDM2YjYuLmRiNDVjMjggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2pzb24uYworKysgYi9Nb2R1bGVzL19qc29uLmMKQEAgLTEsNSArMSw3IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisjaW5jbHVkZSAiYWNjdS5oIgorCiAjaWYgUFlfVkVSU0lPTl9IRVggPCAweDAyMDYwMDAwICYmICFkZWZpbmVkKFB5X1RZUEUpCiAjZGVmaW5lIFB5X1RZUEUob2IpICAgICAoKChQeU9iamVjdCopKG9iKSktPm9iX3R5cGUpCiAjZW5kaWYKQEAgLTc2LDYgKzc4LDIxIEBACiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgoram9pbl9saXN0X3VuaWNvZGUoUHlPYmplY3QgKmxzdCkKK3sKKyAgICAvKiByZXR1cm4gdScnLmpvaW4obHN0KSAqLworICAgIHN0YXRpYyBQeU9iamVjdCAqc2VwID0gTlVMTDsKKyAgICBpZiAoc2VwID09IE5VTEwpIHsKKyAgICAgICAgc2VwID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKKyAgICAgICAgaWYgKHNlcCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeVVuaWNvZGVfSm9pbihzZXAsIGxzdCk7Cit9CisKKy8qIEZvcndhcmQgZGVjbHMgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKIGFzY2lpX2VzY2FwZV91bmljb2RlKFB5T2JqZWN0ICpweXN0cik7CiBzdGF0aWMgUHlPYmplY3QgKgogcHlfZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWkoUHlPYmplY3QqIHNlbGYgVU5VU0VELCBQeU9iamVjdCAqcHlzdHIpOwpAQCAtMTAxLDExICsxMTgsMTEgQEAKIHN0YXRpYyBpbnQKIGVuY29kZXJfY2xlYXIoUHlPYmplY3QgKnNlbGYpOwogc3RhdGljIGludAotZW5jb2Rlcl9saXN0ZW5jb2RlX2xpc3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBQeU9iamVjdCAqcnZhbCwgUHlPYmplY3QgKnNlcSwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpOworZW5jb2Rlcl9saXN0ZW5jb2RlX2xpc3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBfUHlBY2N1ICphY2MsIFB5T2JqZWN0ICpzZXEsIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKTsKIHN0YXRpYyBpbnQKLWVuY29kZXJfbGlzdGVuY29kZV9vYmooUHlFbmNvZGVyT2JqZWN0ICpzLCBQeU9iamVjdCAqcnZhbCwgUHlPYmplY3QgKm9iaiwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpOworZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihQeUVuY29kZXJPYmplY3QgKnMsIF9QeUFjY3UgKmFjYywgUHlPYmplY3QgKm9iaiwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpOwogc3RhdGljIGludAotZW5jb2Rlcl9saXN0ZW5jb2RlX2RpY3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBQeU9iamVjdCAqcnZhbCwgUHlPYmplY3QgKmRjdCwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpOworZW5jb2Rlcl9saXN0ZW5jb2RlX2RpY3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBfUHlBY2N1ICphY2MsIFB5T2JqZWN0ICpkY3QsIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKTsKIHN0YXRpYyBQeU9iamVjdCAqCiBfZW5jb2RlZF9jb25zdChQeU9iamVjdCAqb2JqKTsKIHN0YXRpYyB2b2lkCkBAIC0xMjIsMTMgKzEzOSw2IEBACiAjZGVmaW5lIFNfQ0hBUihjKSAoYyA+PSAnICcgJiYgYyA8PSAnficgJiYgYyAhPSAnXFwnICYmIGMgIT0gJyInKQogI2RlZmluZSBJU19XSElURVNQQUNFKGMpICgoKGMpID09ICcgJykgfHwgKChjKSA9PSAnXHQnKSB8fCAoKGMpID09ICdcbicpIHx8ICgoYykgPT0gJ1xyJykpCiAKLSNkZWZpbmUgTUlOX0VYUEFOU0lPTiA2Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0jZGVmaW5lIE1BWF9FWFBBTlNJT04gKDIgKiBNSU5fRVhQQU5TSU9OKQotI2Vsc2UKLSNkZWZpbmUgTUFYX0VYUEFOU0lPTiBNSU5fRVhQQU5TSU9OCi0jZW5kaWYKLQogc3RhdGljIGludAogX2NvbnZlcnRQeUludF9Bc1NzaXplX3QoUHlPYmplY3QgKm8sIFB5X3NzaXplX3QgKnNpemVfcHRyKQogewpAQCAtMTQ3LDcgKzE1Nyw3IEBACiB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci1hc2NpaV9lc2NhcGVfdW5pY2hhcihQeV9VTklDT0RFIGMsIFB5X1VOSUNPREUgKm91dHB1dCwgUHlfc3NpemVfdCBjaGFycykKK2FzY2lpX2VzY2FwZV91bmljaGFyKFB5X1VDUzQgYywgdW5zaWduZWQgY2hhciAqb3V0cHV0LCBQeV9zc2l6ZV90IGNoYXJzKQogewogICAgIC8qIEVzY2FwZSB1bmljb2RlIGNvZGUgcG9pbnQgYyB0byBBU0NJSSBlc2NhcGUgc2VxdWVuY2VzCiAgICAgaW4gY2hhciAqb3V0cHV0LiBvdXRwdXQgbXVzdCBoYXZlIGF0IGxlYXN0IDEyIGJ5dGVzIHVudXNlZCB0bwpAQCAtMTYyLDI1ICsxNzIsMjMgQEAKICAgICAgICAgY2FzZSAnXHInOiBvdXRwdXRbY2hhcnMrK10gPSAncic7IGJyZWFrOwogICAgICAgICBjYXNlICdcdCc6IG91dHB1dFtjaGFycysrXSA9ICd0JzsgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCiAgICAgICAgICAgICBpZiAoYyA+PSAweDEwMDAwKSB7CiAgICAgICAgICAgICAgICAgLyogVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyICovCi0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSB2ID0gYyAtIDB4MTAwMDA7CisgICAgICAgICAgICAgICAgUHlfVUNTNCB2ID0gYyAtIDB4MTAwMDA7CiAgICAgICAgICAgICAgICAgYyA9IDB4ZDgwMCB8ICgodiA+PiAxMCkgJiAweDNmZik7CiAgICAgICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gJ3UnOwotICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyA+PiAgOCkgJiAweGZdOwotICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyA+PiAgNCkgJiAweGZdOwotICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyAgICAgICkgJiAweGZdOworICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyA+PiAxMikgJiAweGZdOworICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyA+PiAgOCkgJiAweGZdOworICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyA+PiAgNCkgJiAweGZdOworICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyAgICAgICkgJiAweGZdOwogICAgICAgICAgICAgICAgIGMgPSAweGRjMDAgfCAodiAmIDB4M2ZmKTsKICAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAnXFwnOwogICAgICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAndSc7Ci0gICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAiMDEyMzQ1Njc4OWFiY2RlZiJbKGMgPj4gMTIpICYgMHhmXTsKLSAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyA+PiAgOCkgJiAweGZdOwotICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gIjAxMjM0NTY3ODlhYmNkZWYiWyhjID4+ICA0KSAmIDB4Zl07Ci0gICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAiMDEyMzQ1Njc4OWFiY2RlZiJbKGMgICAgICApICYgMHhmXTsKKyAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyA+PiAxMikgJiAweGZdOworICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gUHlfaGV4ZGlnaXRzWyhjID4+ICA4KSAmIDB4Zl07CisgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSBQeV9oZXhkaWdpdHNbKGMgPj4gIDQpICYgMHhmXTsKKyAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyAgICAgICkgJiAweGZdOwogICAgIH0KICAgICByZXR1cm4gY2hhcnM7CiB9CkBAIC0xOTIsNTQgKzIwMCw1NSBAQAogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeV9zc2l6ZV90IGlucHV0X2NoYXJzOwogICAgIFB5X3NzaXplX3Qgb3V0cHV0X3NpemU7Ci0gICAgUHlfc3NpemVfdCBtYXhfb3V0cHV0X3NpemU7CiAgICAgUHlfc3NpemVfdCBjaGFyczsKICAgICBQeU9iamVjdCAqcnZhbDsKLSAgICBQeV9VTklDT0RFICpvdXRwdXQ7Ci0gICAgUHlfVU5JQ09ERSAqaW5wdXRfdW5pY29kZTsKKyAgICB2b2lkICppbnB1dDsKKyAgICB1bnNpZ25lZCBjaGFyICpvdXRwdXQ7CisgICAgaW50IGtpbmQ7CiAKLSAgICBpbnB1dF9jaGFycyA9IFB5VW5pY29kZV9HRVRfU0laRShweXN0cik7Ci0gICAgaW5wdXRfdW5pY29kZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHB5c3RyKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHB5c3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAvKiBPbmUgY2hhciBpbnB1dCBjYW4gYmUgdXAgdG8gNiBjaGFycyBvdXRwdXQsIGVzdGltYXRlIDQgb2YgdGhlc2UgKi8KLSAgICBvdXRwdXRfc2l6ZSA9IDIgKyAoTUlOX0VYUEFOU0lPTiAqIDQpICsgaW5wdXRfY2hhcnM7Ci0gICAgbWF4X291dHB1dF9zaXplID0gMiArIChpbnB1dF9jaGFycyAqIE1BWF9FWFBBTlNJT04pOwotICAgIHJ2YWwgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgb3V0cHV0X3NpemUpOworICAgIGlucHV0X2NoYXJzID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHlzdHIpOworICAgIGlucHV0ID0gUHlVbmljb2RlX0RBVEEocHlzdHIpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChweXN0cik7CisKKyAgICAvKiBDb21wdXRlIHRoZSBvdXRwdXQgc2l6ZSAqLworICAgIGZvciAoaSA9IDAsIG91dHB1dF9zaXplID0gMjsgaSA8IGlucHV0X2NoYXJzOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgaW5wdXQsIGkpOworICAgICAgICBpZiAoU19DSEFSKGMpKQorICAgICAgICAgICAgb3V0cHV0X3NpemUrKzsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2goYykgeworICAgICAgICAgICAgY2FzZSAnXFwnOiBjYXNlICciJzogY2FzZSAnXGInOiBjYXNlICdcZic6CisgICAgICAgICAgICBjYXNlICdcbic6IGNhc2UgJ1xyJzogY2FzZSAnXHQnOgorICAgICAgICAgICAgICAgIG91dHB1dF9zaXplICs9IDI7IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBvdXRwdXRfc2l6ZSArPSBjID49IDB4MTAwMDAgPyAxMiA6IDY7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBydmFsID0gUHlVbmljb2RlX05ldyhvdXRwdXRfc2l6ZSwgMTI3KTsKICAgICBpZiAocnZhbCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBvdXRwdXQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShydmFsKTsKKyAgICBvdXRwdXQgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShydmFsKTsKICAgICBjaGFycyA9IDA7CiAgICAgb3V0cHV0W2NoYXJzKytdID0gJyInOwogICAgIGZvciAoaSA9IDA7IGkgPCBpbnB1dF9jaGFyczsgaSsrKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgYyA9IGlucHV0X3VuaWNvZGVbaV07CisgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGlucHV0LCBpKTsKICAgICAgICAgaWYgKFNfQ0hBUihjKSkgewogICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gYzsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNoYXJzID0gYXNjaWlfZXNjYXBlX3VuaWNoYXIoYywgb3V0cHV0LCBjaGFycyk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG91dHB1dF9zaXplIC0gY2hhcnMgPCAoMSArIE1BWF9FWFBBTlNJT04pKSB7Ci0gICAgICAgICAgICAvKiBUaGVyZSdzIG1vcmUgdGhhbiBmb3VyLCBzbyBsZXQncyByZXNpemUgYnkgYSBsb3QgKi8KLSAgICAgICAgICAgIFB5X3NzaXplX3QgbmV3X291dHB1dF9zaXplID0gb3V0cHV0X3NpemUgKiAyOwotICAgICAgICAgICAgLyogVGhpcyBpcyBhbiB1cHBlciBib3VuZCAqLwotICAgICAgICAgICAgaWYgKG5ld19vdXRwdXRfc2l6ZSA+IG1heF9vdXRwdXRfc2l6ZSkgewotICAgICAgICAgICAgICAgIG5ld19vdXRwdXRfc2l6ZSA9IG1heF9vdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBvdXRwdXQgc2l6ZSBjaGFuZ2VkIGJlZm9yZSByZXNpemluZyAqLwotICAgICAgICAgICAgaWYgKG5ld19vdXRwdXRfc2l6ZSAhPSBvdXRwdXRfc2l6ZSkgewotICAgICAgICAgICAgICAgIG91dHB1dF9zaXplID0gbmV3X291dHB1dF9zaXplOwotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZydmFsLCBvdXRwdXRfc2l6ZSkgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG91dHB1dCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJ2YWwpOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgfQogICAgIG91dHB1dFtjaGFycysrXSA9ICciJzsKLSAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmcnZhbCwgY2hhcnMpID09IC0xKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyNpZmRlZiBQeV9ERUJVRworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocnZhbCwgMSkpOworI2VuZGlmCiAgICAgcmV0dXJuIHJ2YWw7CiB9CiAKQEAgLTI2NywxOSArMjc2LDYgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWpvaW5fbGlzdF91bmljb2RlKFB5T2JqZWN0ICpsc3QpCi17Ci0gICAgLyogcmV0dXJuIHUnJy5qb2luKGxzdCkgKi8KLSAgICBzdGF0aWMgUHlPYmplY3QgKnNlcCA9IE5VTEw7Ci0gICAgaWYgKHNlcCA9PSBOVUxMKSB7Ci0gICAgICAgIHNlcCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7Ci0gICAgICAgIGlmIChzZXAgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0pvaW4oc2VwLCBsc3QpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgogX2J1aWxkX3J2YWxfaW5kZXhfdHVwbGUoUHlPYmplY3QgKnJ2YWwsIFB5X3NzaXplX3QgaWR4KSB7CiAgICAgLyogcmV0dXJuIChydmFsLCBpZHgpIHR1cGxlLCBzdGVhbGluZyByZWZlcmVuY2UgdG8gcnZhbCAqLwogICAgIFB5T2JqZWN0ICp0cGw7CkBAIC0zMzMsMjIgKzMyOSwzMCBAQAogICAgIFJldHVybiB2YWx1ZSBpcyBhIG5ldyBQeVVuaWNvZGUKICAgICAqLwogICAgIFB5T2JqZWN0ICpydmFsID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShweXN0cik7CisgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlfc3NpemVfdCBiZWdpbiA9IGVuZCAtIDE7Ci0gICAgUHlfc3NpemVfdCBuZXh0ID0gYmVnaW47Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAqYnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUocHlzdHIpOworICAgIFB5X3NzaXplX3QgbmV4dCAvKiA9IGJlZ2luICovOworICAgIGNvbnN0IHZvaWQgKmJ1ZjsKKyAgICBpbnQga2luZDsKICAgICBQeU9iamVjdCAqY2h1bmtzID0gTlVMTDsKICAgICBQeU9iamVjdCAqY2h1bmsgPSBOVUxMOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShweXN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiAwOworCisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHlzdHIpOworICAgIGJ1ZiA9IFB5VW5pY29kZV9EQVRBKHB5c3RyKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocHlzdHIpOworCiAgICAgaWYgKGVuZCA8IDAgfHwgbGVuIDw9IGVuZCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImVuZCBpcyBvdXQgb2YgYm91bmRzIik7CiAgICAgICAgIGdvdG8gYmFpbDsKICAgICB9CiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgLyogRmluZCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgb3IgdGhlIG5leHQgZXNjYXBlICovCi0gICAgICAgIFB5X1VOSUNPREUgYyA9IDA7CisgICAgICAgIFB5X1VDUzQgYyA9IDA7CiAgICAgICAgIGZvciAobmV4dCA9IGVuZDsgbmV4dCA8IGxlbjsgbmV4dCsrKSB7Ci0gICAgICAgICAgICBjID0gYnVmW25leHRdOworICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGJ1ZiwgbmV4dCk7CiAgICAgICAgICAgICBpZiAoYyA9PSAnIicgfHwgYyA9PSAnXFwnKSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zNjQsNyArMzY4LDEwIEBACiAgICAgICAgIC8qIFBpY2sgdXAgdGhpcyBjaHVuayBpZiBpdCdzIG5vdCB6ZXJvIGxlbmd0aCAqLwogICAgICAgICBpZiAobmV4dCAhPSBlbmQpIHsKICAgICAgICAgICAgIEFQUEVORF9PTERfQ0hVTksKLSAgICAgICAgICAgIGNodW5rID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKCZidWZbZW5kXSwgbmV4dCAtIGVuZCk7CisgICAgICAgICAgICAgICAgY2h1bmsgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKAorICAgICAgICAgICAgICAgICAgICBraW5kLAorICAgICAgICAgICAgICAgICAgICAoY2hhciopYnVmICsga2luZCAqIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgbmV4dCAtIGVuZCk7CiAgICAgICAgICAgICBpZiAoY2h1bmsgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgIH0KQEAgLTM3OCw3ICszODUsNyBAQAogICAgICAgICAgICAgcmFpc2VfZXJybXNnKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIHN0YXJ0aW5nIGF0IiwgcHlzdHIsIGJlZ2luKTsKICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgfQotICAgICAgICBjID0gYnVmW25leHRdOworICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgYnVmLCBuZXh0KTsKICAgICAgICAgaWYgKGMgIT0gJ3UnKSB7CiAgICAgICAgICAgICAvKiBOb24tdW5pY29kZSBiYWNrc2xhc2ggZXNjYXBlcyAqLwogICAgICAgICAgICAgZW5kID0gbmV4dCArIDE7CkBAIC00MDgsNyArNDE1LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qIERlY29kZSA0IGhleCBkaWdpdHMgKi8KICAgICAgICAgICAgIGZvciAoOyBuZXh0IDwgZW5kOyBuZXh0KyspIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGRpZ2l0ID0gYnVmW25leHRdOworICAgICAgICAgICAgICAgIFB5X1VDUzQgZGlnaXQgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBidWYsIG5leHQpOwogICAgICAgICAgICAgICAgIGMgPDw9IDQ7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChkaWdpdCkgewogICAgICAgICAgICAgICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6CkBAIC00MjUsMjIgKzQzMiwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKICAgICAgICAgICAgIC8qIFN1cnJvZ2F0ZSBwYWlyICovCiAgICAgICAgICAgICBpZiAoKGMgJiAweGZjMDApID09IDB4ZDgwMCkgewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgYzIgPSAwOworICAgICAgICAgICAgICAgIFB5X1VDUzQgYzIgPSAwOwogICAgICAgICAgICAgICAgIGlmIChlbmQgKyA2ID49IGxlbikgewogICAgICAgICAgICAgICAgICAgICByYWlzZV9lcnJtc2coIlVucGFpcmVkIGhpZ2ggc3Vycm9nYXRlIiwgcHlzdHIsIGVuZCAtIDUpOwogICAgICAgICAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChidWZbbmV4dCsrXSAhPSAnXFwnIHx8IGJ1ZltuZXh0KytdICE9ICd1JykgeworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBidWYsIG5leHQrKykgIT0gJ1xcJyB8fAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBidWYsIG5leHQrKykgIT0gJ3UnKSB7CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2Vycm1zZygiVW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUiLCBweXN0ciwgZW5kIC0gNSk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZW5kICs9IDY7CiAgICAgICAgICAgICAgICAgLyogRGVjb2RlIDQgaGV4IGRpZ2l0cyAqLwogICAgICAgICAgICAgICAgIGZvciAoOyBuZXh0IDwgZW5kOyBuZXh0KyspIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBkaWdpdCA9IGJ1ZltuZXh0XTsKKyAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBkaWdpdCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGJ1ZiwgbmV4dCk7CiAgICAgICAgICAgICAgICAgICAgIGMyIDw8PSA0OwogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGRpZ2l0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6CkBAIC00NjcsMTAgKzQ3NCw5IEBACiAgICAgICAgICAgICAgICAgcmFpc2VfZXJybXNnKCJVbnBhaXJlZCBsb3cgc3Vycm9nYXRlIiwgcHlzdHIsIGVuZCAtIDUpOwogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICB9CiAgICAgICAgIEFQUEVORF9PTERfQ0hVTksKLSAgICAgICAgY2h1bmsgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoJmMsIDEpOworICAgICAgICBjaHVuayA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsICZjLCAxKTsKICAgICAgICAgaWYgKGNodW5rID09IE5VTEwpIHsKICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgfQpAQCAtNjA4LDggKzYxNCw5IEBACiAKICAgICBSZXR1cm5zIGEgbmV3IFB5T2JqZWN0ICh1c3VhbGx5IGEgZGljdCwgYnV0IG9iamVjdF9ob29rIGNhbiBjaGFuZ2UgdGhhdCkKICAgICAqLwotICAgIFB5X1VOSUNPREUgKnN0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKHB5c3RyKTsKLSAgICBQeV9zc2l6ZV90IGVuZF9pZHggPSBQeVVuaWNvZGVfR0VUX1NJWkUocHlzdHIpIC0gMTsKKyAgICB2b2lkICpzdHI7CisgICAgaW50IGtpbmQ7CisgICAgUHlfc3NpemVfdCBlbmRfaWR4OwogICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpydmFsID0gTlVMTDsKICAgICBQeU9iamVjdCAqa2V5ID0gTlVMTDsKQEAgLTYxNyw2ICs2MjQsMTMgQEAKICAgICBpbnQgaGFzX3BhaXJzX2hvb2sgPSAocy0+b2JqZWN0X3BhaXJzX2hvb2sgIT0gUHlfTm9uZSk7CiAgICAgUHlfc3NpemVfdCBuZXh0X2lkeDsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocHlzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN0ciA9IFB5VW5pY29kZV9EQVRBKHB5c3RyKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocHlzdHIpOworICAgIGVuZF9pZHggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChweXN0cikgLSAxOworCiAgICAgaWYgKGhhc19wYWlyc19ob29rKQogICAgICAgICBydmFsID0gUHlMaXN0X05ldygwKTsKICAgICBlbHNlCkBAIC02MjUsMTUgKzYzOSwxNSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIHNraXAgd2hpdGVzcGFjZSBhZnRlciB7ICovCi0gICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0Uoc3RyW2lkeF0pKSBpZHgrKzsKKyAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLHN0ciwgaWR4KSkpIGlkeCsrOwogCiAgICAgLyogb25seSBsb29wIGlmIHRoZSBvYmplY3QgaXMgbm9uLWVtcHR5ICovCi0gICAgaWYgKGlkeCA8PSBlbmRfaWR4ICYmIHN0cltpZHhdICE9ICd9JykgeworICAgIGlmIChpZHggPD0gZW5kX2lkeCAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJ30nKSB7CiAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCkgewogICAgICAgICAgICAgUHlPYmplY3QgKm1lbW9rZXk7CiAKICAgICAgICAgICAgIC8qIHJlYWQga2V5ICovCi0gICAgICAgICAgICBpZiAoc3RyW2lkeF0gIT0gJyInKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpICE9ICciJykgewogICAgICAgICAgICAgICAgIHJhaXNlX2Vycm1zZygiRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcyIsIHB5c3RyLCBpZHgpOwogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgIH0KQEAgLTY1MywxMyArNjY3LDEzIEBACiAgICAgICAgICAgICBpZHggPSBuZXh0X2lkeDsKIAogICAgICAgICAgICAgLyogc2tpcCB3aGl0ZXNwYWNlIGJldHdlZW4ga2V5IGFuZCA6IGRlbGltaXRlciwgcmVhZCA6LCBza2lwIHdoaXRlc3BhY2UgKi8KLSAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKHN0cltpZHhdKSkgaWR4Kys7Ci0gICAgICAgICAgICBpZiAoaWR4ID4gZW5kX2lkeCB8fCBzdHJbaWR4XSAhPSAnOicpIHsKKyAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkpIGlkeCsrOworICAgICAgICAgICAgaWYgKGlkeCA+IGVuZF9pZHggfHwgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpICE9ICc6JykgewogICAgICAgICAgICAgICAgIHJhaXNlX2Vycm1zZygiRXhwZWN0aW5nICc6JyBkZWxpbWl0ZXIiLCBweXN0ciwgaWR4KTsKICAgICAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZHgrKzsKLSAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKHN0cltpZHhdKSkgaWR4Kys7CisgICAgICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkpKSBpZHgrKzsKIAogICAgICAgICAgICAgLyogcmVhZCBhbnkgSlNPTiB0ZXJtICovCiAgICAgICAgICAgICB2YWwgPSBzY2FuX29uY2VfdW5pY29kZShzLCBweXN0ciwgaWR4LCAmbmV4dF9pZHgpOwpAQCAtNjg3LDI2ICs3MDEsMjYgQEAKICAgICAgICAgICAgIGlkeCA9IG5leHRfaWR4OwogCiAgICAgICAgICAgICAvKiBza2lwIHdoaXRlc3BhY2UgYmVmb3JlIH0gb3IgLCAqLwotICAgICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0Uoc3RyW2lkeF0pKSBpZHgrKzsKKyAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkpIGlkeCsrOwogCiAgICAgICAgICAgICAvKiBiYWlsIGlmIHRoZSBvYmplY3QgaXMgY2xvc2VkIG9yIHdlIGRpZG4ndCBnZXQgdGhlICwgZGVsaW1pdGVyICovCiAgICAgICAgICAgICBpZiAoaWR4ID4gZW5kX2lkeCkgYnJlYWs7Ci0gICAgICAgICAgICBpZiAoc3RyW2lkeF0gPT0gJ30nKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICd9JykgewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoc3RyW2lkeF0gIT0gJywnKSB7CisgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJywnKSB7CiAgICAgICAgICAgICAgICAgcmFpc2VfZXJybXNnKCJFeHBlY3RpbmcgJywnIGRlbGltaXRlciIsIHB5c3RyLCBpZHgpOwogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlkeCsrOwogCiAgICAgICAgICAgICAvKiBza2lwIHdoaXRlc3BhY2UgYWZ0ZXIgLCBkZWxpbWl0ZXIgKi8KLSAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKHN0cltpZHhdKSkgaWR4Kys7CisgICAgICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkpKSBpZHgrKzsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8qIHZlcmlmeSB0aGF0IGlkeCA8IGVuZF9pZHgsIHN0cltpZHhdIHNob3VsZCBiZSAnfScgKi8KLSAgICBpZiAoaWR4ID4gZW5kX2lkeCB8fCBzdHJbaWR4XSAhPSAnfScpIHsKKyAgICBpZiAoaWR4ID4gZW5kX2lkeCB8fCBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJ30nKSB7CiAgICAgICAgIHJhaXNlX2Vycm1zZygiRXhwZWN0aW5nIG9iamVjdCIsIHB5c3RyLCBlbmRfaWR4KTsKICAgICAgICAgZ290byBiYWlsOwogICAgIH0KQEAgLTc0MiwxOSArNzU2LDI3IEBACiAKICAgICBSZXR1cm5zIGEgbmV3IFB5TGlzdAogICAgICovCi0gICAgUHlfVU5JQ09ERSAqc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocHlzdHIpOwotICAgIFB5X3NzaXplX3QgZW5kX2lkeCA9IFB5VW5pY29kZV9HRVRfU0laRShweXN0cikgLSAxOworICAgIHZvaWQgKnN0cjsKKyAgICBpbnQga2luZDsKKyAgICBQeV9zc2l6ZV90IGVuZF9pZHg7CiAgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJ2YWwgPSBQeUxpc3RfTmV3KDApOwogICAgIFB5X3NzaXplX3QgbmV4dF9pZHg7CiAgICAgaWYgKHJ2YWwgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHB5c3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzdHIgPSBQeVVuaWNvZGVfREFUQShweXN0cik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHB5c3RyKTsKKyAgICBlbmRfaWR4ID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHlzdHIpIC0gMTsKKwogICAgIC8qIHNraXAgd2hpdGVzcGFjZSBhZnRlciBbICovCi0gICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0Uoc3RyW2lkeF0pKSBpZHgrKzsKKyAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkpKSBpZHgrKzsKIAogICAgIC8qIG9ubHkgbG9vcCBpZiB0aGUgYXJyYXkgaXMgbm9uLWVtcHR5ICovCi0gICAgaWYgKGlkeCA8PSBlbmRfaWR4ICYmIHN0cltpZHhdICE9ICddJykgeworICAgIGlmIChpZHggPD0gZW5kX2lkeCAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJ10nKSB7CiAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCkgewogCiAgICAgICAgICAgICAvKiByZWFkIGFueSBKU09OIHRlcm0gICovCkBAIC03NjksMjYgKzc5MSwyNiBAQAogICAgICAgICAgICAgaWR4ID0gbmV4dF9pZHg7CiAKICAgICAgICAgICAgIC8qIHNraXAgd2hpdGVzcGFjZSBiZXR3ZWVuIHRlcm0gYW5kICwgKi8KLSAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKHN0cltpZHhdKSkgaWR4Kys7CisgICAgICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkpKSBpZHgrKzsKIAogICAgICAgICAgICAgLyogYmFpbCBpZiB0aGUgYXJyYXkgaXMgY2xvc2VkIG9yIHdlIGRpZG4ndCBnZXQgdGhlICwgZGVsaW1pdGVyICovCiAgICAgICAgICAgICBpZiAoaWR4ID4gZW5kX2lkeCkgYnJlYWs7Ci0gICAgICAgICAgICBpZiAoc3RyW2lkeF0gPT0gJ10nKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICddJykgewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoc3RyW2lkeF0gIT0gJywnKSB7CisgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJywnKSB7CiAgICAgICAgICAgICAgICAgcmFpc2VfZXJybXNnKCJFeHBlY3RpbmcgJywnIGRlbGltaXRlciIsIHB5c3RyLCBpZHgpOwogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlkeCsrOwogCiAgICAgICAgICAgICAvKiBza2lwIHdoaXRlc3BhY2UgYWZ0ZXIgLCAqLwotICAgICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0Uoc3RyW2lkeF0pKSBpZHgrKzsKKyAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkpIGlkeCsrOwogICAgICAgICB9CiAgICAgfQogCi0gICAgLyogdmVyaWZ5IHRoYXQgaWR4IDwgZW5kX2lkeCwgc3RyW2lkeF0gc2hvdWxkIGJlICddJyAqLwotICAgIGlmIChpZHggPiBlbmRfaWR4IHx8IHN0cltpZHhdICE9ICddJykgeworICAgIC8qIHZlcmlmeSB0aGF0IGlkeCA8IGVuZF9pZHgsIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSBzaG91bGQgYmUgJ10nICovCisgICAgaWYgKGlkeCA+IGVuZF9pZHggfHwgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpICE9ICddJykgewogICAgICAgICByYWlzZV9lcnJtc2coIkV4cGVjdGluZyBvYmplY3QiLCBweXN0ciwgZW5kX2lkeCk7CiAgICAgICAgIGdvdG8gYmFpbDsKICAgICB9CkBAIC04MjAsNyArODQyLDcgQEAKIAogICAgIC8qIHJ2YWwgPSBwYXJzZV9jb25zdGFudChjb25zdGFudCkgKi8KICAgICBydmFsID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzLT5wYXJzZV9jb25zdGFudCwgY3N0ciwgTlVMTCk7Ci0gICAgaWR4ICs9IFB5VW5pY29kZV9HRVRfU0laRShjc3RyKTsKKyAgICBpZHggKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoY3N0cik7CiAgICAgUHlfREVDUkVGKGNzdHIpOwogICAgICpuZXh0X2lkeF9wdHIgPSBpZHg7CiAgICAgcmV0dXJuIHJ2YWw7CkBAIC04MzcsMTUgKzg1OSwyNCBAQAogICAgICAgICBQeUludCwgUHlMb25nLCBvciBQeUZsb2F0LgogICAgICAgICBNYXkgcmV0dXJuIG90aGVyIHR5cGVzIGlmIHBhcnNlX2ludCBvciBwYXJzZV9mbG9hdCBhcmUgc2V0CiAgICAgKi8KLSAgICBQeV9VTklDT0RFICpzdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShweXN0cik7Ci0gICAgUHlfc3NpemVfdCBlbmRfaWR4ID0gUHlVbmljb2RlX0dFVF9TSVpFKHB5c3RyKSAtIDE7CisgICAgdm9pZCAqc3RyOworICAgIGludCBraW5kOworICAgIFB5X3NzaXplX3QgZW5kX2lkeDsKICAgICBQeV9zc2l6ZV90IGlkeCA9IHN0YXJ0OwogICAgIGludCBpc19mbG9hdCA9IDA7CiAgICAgUHlPYmplY3QgKnJ2YWw7Ci0gICAgUHlPYmplY3QgKm51bXN0cjsKKyAgICBQeU9iamVjdCAqbnVtc3RyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqY3VzdG9tX2Z1bmM7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHB5c3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzdHIgPSBQeVVuaWNvZGVfREFUQShweXN0cik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHB5c3RyKTsKKyAgICBlbmRfaWR4ID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHlzdHIpIC0gMTsKIAogICAgIC8qIHJlYWQgYSBzaWduIGlmIGl0J3MgdGhlcmUsIG1ha2Ugc3VyZSBpdCdzIG5vdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgKi8KLSAgICBpZiAoc3RyW2lkeF0gPT0gJy0nKSB7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA9PSAnLScpIHsKICAgICAgICAgaWR4Kys7CiAgICAgICAgIGlmIChpZHggPiBlbmRfaWR4KSB7CiAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOwpAQCAtODU0LDEyICs4ODUsMTIgQEAKICAgICB9CiAKICAgICAvKiByZWFkIGFzIG1hbnkgaW50ZWdlciBkaWdpdHMgYXMgd2UgZmluZCBhcyBsb25nIGFzIGl0IGRvZXNuJ3Qgc3RhcnQgd2l0aCAwICovCi0gICAgaWYgKHN0cltpZHhdID49ICcxJyAmJiBzdHJbaWR4XSA8PSAnOScpIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID49ICcxJyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPD0gJzknKSB7CiAgICAgICAgIGlkeCsrOwotICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgc3RyW2lkeF0gPj0gJzAnICYmIHN0cltpZHhdIDw9ICc5JykgaWR4Kys7CisgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPj0gJzAnICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA8PSAnOScpIGlkeCsrOwogICAgIH0KICAgICAvKiBpZiBpdCBzdGFydHMgd2l0aCAwIHdlIG9ubHkgZXhwZWN0IG9uZSBpbnRlZ2VyIGRpZ2l0ICovCi0gICAgZWxzZSBpZiAoc3RyW2lkeF0gPT0gJzAnKSB7CisgICAgZWxzZSBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICcwJykgewogICAgICAgICBpZHgrKzsKICAgICB9CiAgICAgLyogbm8gaW50ZWdlciBkaWdpdHMsIGVycm9yICovCkBAIC04NjksMjUgKzkwMCwyNSBAQAogICAgIH0KIAogICAgIC8qIGlmIHRoZSBuZXh0IGNoYXIgaXMgJy4nIGZvbGxvd2VkIGJ5IGEgZGlnaXQgdGhlbiByZWFkIGFsbCBmbG9hdCBkaWdpdHMgKi8KLSAgICBpZiAoaWR4IDwgZW5kX2lkeCAmJiBzdHJbaWR4XSA9PSAnLicgJiYgc3RyW2lkeCArIDFdID49ICcwJyAmJiBzdHJbaWR4ICsgMV0gPD0gJzknKSB7CisgICAgaWYgKGlkeCA8IGVuZF9pZHggJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICcuJyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDEpID49ICcwJyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDEpIDw9ICc5JykgewogICAgICAgICBpc19mbG9hdCA9IDE7CiAgICAgICAgIGlkeCArPSAyOwotICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgc3RyW2lkeF0gPj0gJzAnICYmIHN0cltpZHhdIDw9ICc5JykgaWR4Kys7CisgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPj0gJzAnICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA8PSAnOScpIGlkeCsrOwogICAgIH0KIAogICAgIC8qIGlmIHRoZSBuZXh0IGNoYXIgaXMgJ2UnIG9yICdFJyB0aGVuIG1heWJlIHJlYWQgdGhlIGV4cG9uZW50IChvciBiYWNrdHJhY2spICovCi0gICAgaWYgKGlkeCA8IGVuZF9pZHggJiYgKHN0cltpZHhdID09ICdlJyB8fCBzdHJbaWR4XSA9PSAnRScpKSB7CisgICAgaWYgKGlkeCA8IGVuZF9pZHggJiYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA9PSAnZScgfHwgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICdFJykpIHsKICAgICAgICAgUHlfc3NpemVfdCBlX3N0YXJ0ID0gaWR4OwogICAgICAgICBpZHgrKzsKIAogICAgICAgICAvKiByZWFkIGFuIGV4cG9uZW50IHNpZ24gaWYgcHJlc2VudCAqLwotICAgICAgICBpZiAoaWR4IDwgZW5kX2lkeCAmJiAoc3RyW2lkeF0gPT0gJy0nIHx8IHN0cltpZHhdID09ICcrJykpIGlkeCsrOworICAgICAgICBpZiAoaWR4IDwgZW5kX2lkeCAmJiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICctJyB8fCBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPT0gJysnKSkgaWR4Kys7CiAKICAgICAgICAgLyogcmVhZCBhbGwgZGlnaXRzICovCi0gICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBzdHJbaWR4XSA+PSAnMCcgJiYgc3RyW2lkeF0gPD0gJzknKSBpZHgrKzsKKyAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA+PSAnMCcgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpIDw9ICc5JykgaWR4Kys7CiAKICAgICAgICAgLyogaWYgd2UgZ290IGEgZGlnaXQsIHRoZW4gcGFyc2UgYXMgZmxvYXQuIGlmIG5vdCwgYmFja3RyYWNrICovCi0gICAgICAgIGlmIChzdHJbaWR4IC0gMV0gPj0gJzAnICYmIHN0cltpZHggLSAxXSA8PSAnOScpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4IC0gMSkgPj0gJzAnICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4IC0gMSkgPD0gJzknKSB7CiAgICAgICAgICAgICBpc19mbG9hdCA9IDE7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC04OTUsMjIgKzkyNiwzOSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgLyogY29weSB0aGUgc2VjdGlvbiB3ZSBkZXRlcm1pbmVkIHRvIGJlIGEgbnVtYmVyICovCi0gICAgbnVtc3RyID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKCZzdHJbc3RhcnRdLCBpZHggLSBzdGFydCk7Ci0gICAgaWYgKG51bXN0ciA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoaXNfZmxvYXQpIHsKLSAgICAgICAgLyogcGFyc2UgYXMgYSBmbG9hdCB1c2luZyBhIGZhc3QgcGF0aCBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBjYWxsIHVzZXIgZGVmaW5lZCBtZXRob2QgKi8KLSAgICAgICAgaWYgKHMtPnBhcnNlX2Zsb2F0ICE9IChQeU9iamVjdCAqKSZQeUZsb2F0X1R5cGUpIHsKLSAgICAgICAgICAgIHJ2YWwgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHMtPnBhcnNlX2Zsb2F0LCBudW1zdHIsIE5VTEwpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcnZhbCA9IFB5RmxvYXRfRnJvbVN0cmluZyhudW1zdHIpOwotICAgICAgICB9CisgICAgaWYgKGlzX2Zsb2F0ICYmIHMtPnBhcnNlX2Zsb2F0ICE9IChQeU9iamVjdCAqKSZQeUZsb2F0X1R5cGUpCisgICAgICAgIGN1c3RvbV9mdW5jID0gcy0+cGFyc2VfZmxvYXQ7CisgICAgZWxzZSBpZiAoIWlzX2Zsb2F0ICYmIHMtPnBhcnNlX2ludCAhPSAoUHlPYmplY3QgKikgJlB5TG9uZ19UeXBlKQorICAgICAgICBjdXN0b21fZnVuYyA9IHMtPnBhcnNlX2ludDsKKyAgICBlbHNlCisgICAgICAgIGN1c3RvbV9mdW5jID0gTlVMTDsKKworICAgIGlmIChjdXN0b21fZnVuYykgeworICAgICAgICAvKiBjb3B5IHRoZSBzZWN0aW9uIHdlIGRldGVybWluZWQgdG8gYmUgYSBudW1iZXIgKi8KKyAgICAgICAgbnVtc3RyID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShraW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKilzdHIgKyBraW5kICogc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWR4IC0gc3RhcnQpOworICAgICAgICBpZiAobnVtc3RyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcnZhbCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoY3VzdG9tX2Z1bmMsIG51bXN0ciwgTlVMTCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICAvKiBubyBmYXN0IHBhdGggZm9yIHVuaWNvZGUgLT4gaW50LCBqdXN0IGNhbGwgKi8KLSAgICAgICAgcnZhbCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Mocy0+cGFyc2VfaW50LCBudW1zdHIsIE5VTEwpOworICAgICAgICBQeV9zc2l6ZV90IGksIG47CisgICAgICAgIGNoYXIgKmJ1ZjsKKyAgICAgICAgLyogU3RyYWlnaHQgY29udmVyc2lvbiB0byBBU0NJSSwgdG8gYXZvaWQgY29zdGx5IGNvbnZlcnNpb24gb2YKKyAgICAgICAgICAgZGVjaW1hbCB1bmljb2RlIGRpZ2l0cyAod2hpY2ggY2Fubm90IGFwcGVhciBoZXJlKSAqLworICAgICAgICBuID0gaWR4IC0gc3RhcnQ7CisgICAgICAgIG51bXN0ciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbik7CisgICAgICAgIGlmIChudW1zdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBidWYgPSBQeUJ5dGVzX0FTX1NUUklORyhudW1zdHIpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBidWZbaV0gPSAoY2hhcikgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpICsgc3RhcnQpOworICAgICAgICB9CisgICAgICAgIGlmIChpc19mbG9hdCkKKyAgICAgICAgICAgIHJ2YWwgPSBQeUZsb2F0X0Zyb21TdHJpbmcobnVtc3RyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcnZhbCA9IFB5TG9uZ19Gcm9tU3RyaW5nKGJ1ZiwgTlVMTCwgMTApOwogICAgIH0KICAgICBQeV9ERUNSRUYobnVtc3RyKTsKICAgICAqbmV4dF9pZHhfcHRyID0gaWR4OwpAQCAtOTI4LDEzICs5NzYsMjMgQEAKICAgICBSZXR1cm5zIGEgbmV3IFB5T2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0ZXJtLgogICAgICovCiAgICAgUHlPYmplY3QgKnJlczsKLSAgICBQeV9VTklDT0RFICpzdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShweXN0cik7Ci0gICAgUHlfc3NpemVfdCBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX1NJWkUocHlzdHIpOworICAgIHZvaWQgKnN0cjsKKyAgICBpbnQga2luZDsKKyAgICBQeV9zc2l6ZV90IGxlbmd0aDsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocHlzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN0ciA9IFB5VW5pY29kZV9EQVRBKHB5c3RyKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocHlzdHIpOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHB5c3RyKTsKKwogICAgIGlmIChpZHggPj0gbGVuZ3RoKSB7CiAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBzd2l0Y2ggKHN0cltpZHhdKSB7CisKKyAgICBzd2l0Y2ggKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkgewogICAgICAgICBjYXNlICciJzoKICAgICAgICAgICAgIC8qIHN0cmluZyAqLwogICAgICAgICAgICAgcmV0dXJuIHNjYW5zdHJpbmdfdW5pY29kZShweXN0ciwgaWR4ICsgMSwKQEAgLTk1OCw3ICsxMDE2LDcgQEAKICAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgIGNhc2UgJ24nOgogICAgICAgICAgICAgLyogbnVsbCAqLwotICAgICAgICAgICAgaWYgKChpZHggKyAzIDwgbGVuZ3RoKSAmJiBzdHJbaWR4ICsgMV0gPT0gJ3UnICYmIHN0cltpZHggKyAyXSA9PSAnbCcgJiYgc3RyW2lkeCArIDNdID09ICdsJykgeworICAgICAgICAgICAgaWYgKChpZHggKyAzIDwgbGVuZ3RoKSAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDEpID09ICd1JyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDIpID09ICdsJyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDMpID09ICdsJykgewogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgICAgICAgICAqbmV4dF9pZHhfcHRyID0gaWR4ICsgNDsKICAgICAgICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKQEAgLTk2Niw3ICsxMDI0LDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICd0JzoKICAgICAgICAgICAgIC8qIHRydWUgKi8KLSAgICAgICAgICAgIGlmICgoaWR4ICsgMyA8IGxlbmd0aCkgJiYgc3RyW2lkeCArIDFdID09ICdyJyAmJiBzdHJbaWR4ICsgMl0gPT0gJ3UnICYmIHN0cltpZHggKyAzXSA9PSAnZScpIHsKKyAgICAgICAgICAgIGlmICgoaWR4ICsgMyA8IGxlbmd0aCkgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAxKSA9PSAncicgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAyKSA9PSAndScgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAzKSA9PSAnZScpIHsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfVHJ1ZSk7CiAgICAgICAgICAgICAgICAgKm5leHRfaWR4X3B0ciA9IGlkeCArIDQ7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5X1RydWU7CkBAIC05NzQsNyArMTAzMiwxMCBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ2YnOgogICAgICAgICAgICAgLyogZmFsc2UgKi8KLSAgICAgICAgICAgIGlmICgoaWR4ICsgNCA8IGxlbmd0aCkgJiYgc3RyW2lkeCArIDFdID09ICdhJyAmJiBzdHJbaWR4ICsgMl0gPT0gJ2wnICYmIHN0cltpZHggKyAzXSA9PSAncycgJiYgc3RyW2lkeCArIDRdID09ICdlJykgeworICAgICAgICAgICAgaWYgKChpZHggKyA0IDwgbGVuZ3RoKSAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDEpID09ICdhJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMikgPT0gJ2wnICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAzKSA9PSAncycgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDQpID09ICdlJykgewogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9GYWxzZSk7CiAgICAgICAgICAgICAgICAgKm5leHRfaWR4X3B0ciA9IGlkeCArIDU7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5X0ZhbHNlOwpAQCAtOTgyLDE5ICsxMDQzLDMzIEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAnTic6CiAgICAgICAgICAgICAvKiBOYU4gKi8KLSAgICAgICAgICAgIGlmICgoaWR4ICsgMiA8IGxlbmd0aCkgJiYgc3RyW2lkeCArIDFdID09ICdhJyAmJiBzdHJbaWR4ICsgMl0gPT0gJ04nKSB7CisgICAgICAgICAgICBpZiAoKGlkeCArIDIgPCBsZW5ndGgpICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMSkgPT0gJ2EnICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAyKSA9PSAnTicpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gX3BhcnNlX2NvbnN0YW50KHMsICJOYU4iLCBpZHgsIG5leHRfaWR4X3B0cik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAnSSc6CiAgICAgICAgICAgICAvKiBJbmZpbml0eSAqLwotICAgICAgICAgICAgaWYgKChpZHggKyA3IDwgbGVuZ3RoKSAmJiBzdHJbaWR4ICsgMV0gPT0gJ24nICYmIHN0cltpZHggKyAyXSA9PSAnZicgJiYgc3RyW2lkeCArIDNdID09ICdpJyAmJiBzdHJbaWR4ICsgNF0gPT0gJ24nICYmIHN0cltpZHggKyA1XSA9PSAnaScgJiYgc3RyW2lkeCArIDZdID09ICd0JyAmJiBzdHJbaWR4ICsgN10gPT0gJ3knKSB7CisgICAgICAgICAgICBpZiAoKGlkeCArIDcgPCBsZW5ndGgpICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMSkgPT0gJ24nICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAyKSA9PSAnZicgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDMpID09ICdpJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgNCkgPT0gJ24nICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyA1KSA9PSAnaScgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDYpID09ICd0JyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgNykgPT0gJ3knKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIF9wYXJzZV9jb25zdGFudChzLCAiSW5maW5pdHkiLCBpZHgsIG5leHRfaWR4X3B0cik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAnLSc6CiAgICAgICAgICAgICAvKiAtSW5maW5pdHkgKi8KLSAgICAgICAgICAgIGlmICgoaWR4ICsgOCA8IGxlbmd0aCkgJiYgc3RyW2lkeCArIDFdID09ICdJJyAmJiBzdHJbaWR4ICsgMl0gPT0gJ24nICYmIHN0cltpZHggKyAzXSA9PSAnZicgJiYgc3RyW2lkeCArIDRdID09ICdpJyAmJiBzdHJbaWR4ICsgNV0gPT0gJ24nICYmIHN0cltpZHggKyA2XSA9PSAnaScgJiYgc3RyW2lkeCArIDddID09ICd0JyAmJiBzdHJbaWR4ICsgOF0gPT0gJ3knKSB7CisgICAgICAgICAgICBpZiAoKGlkeCArIDggPCBsZW5ndGgpICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMSkgPT0gJ0knICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAyKSA9PSAnbicgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDMpID09ICdmJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgNCkgPT0gJ2knICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyA1KSA9PSAnbicgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDYpID09ICdpJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgNykgPT0gJ3QnICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyA4KSA9PSAneScpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gX3BhcnNlX2NvbnN0YW50KHMsICItSW5maW5pdHkiLCBpZHgsIG5leHRfaWR4X3B0cik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyMTAsMjIgKzEyODUsMjIgQEAKICAgICAvKiBQeXRob24gY2FsbGFibGUgaW50ZXJmYWNlIHRvIGVuY29kZV9saXN0ZW5jb2RlX29iaiAqLwogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsib2JqIiwgIl9jdXJyZW50X2luZGVudF9sZXZlbCIsIE5VTEx9OwogICAgIFB5T2JqZWN0ICpvYmo7Ci0gICAgUHlPYmplY3QgKnJ2YWw7CiAgICAgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWw7CiAgICAgUHlFbmNvZGVyT2JqZWN0ICpzOworICAgIF9QeUFjY3UgYWNjOworCiAgICAgYXNzZXJ0KFB5RW5jb2Rlcl9DaGVjayhzZWxmKSk7CiAgICAgcyA9IChQeUVuY29kZXJPYmplY3QgKilzZWxmOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPTyY6X2l0ZXJlbmNvZGUiLCBrd2xpc3QsCiAgICAgICAgICZvYmosIF9jb252ZXJ0UHlJbnRfQXNTc2l6ZV90LCAmaW5kZW50X2xldmVsKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcnZhbCA9IFB5TGlzdF9OZXcoMCk7Ci0gICAgaWYgKHJ2YWwgPT0gTlVMTCkKKyAgICBpZiAoX1B5QWNjdV9Jbml0KCZhY2MpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihzLCBydmFsLCBvYmosIGluZGVudF9sZXZlbCkpIHsKLSAgICAgICAgUHlfREVDUkVGKHJ2YWwpOworICAgIGlmIChlbmNvZGVyX2xpc3RlbmNvZGVfb2JqKHMsICZhY2MsIG9iaiwgaW5kZW50X2xldmVsKSkgeworICAgICAgICBfUHlBY2N1X0Rlc3Ryb3koJmFjYyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gcnZhbDsKKyAgICByZXR1cm4gX1B5QWNjdV9GaW5pc2hBc0xpc3QoJmFjYyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMjk3LDE4ICsxMzcyLDE5IEBACiB9CiAKIHN0YXRpYyBpbnQKLV9zdGVhbF9saXN0X2FwcGVuZChQeU9iamVjdCAqbHN0LCBQeU9iamVjdCAqc3RvbGVuKQorX3N0ZWFsX2FjY3VtdWxhdGUoX1B5QWNjdSAqYWNjLCBQeU9iamVjdCAqc3RvbGVuKQogewogICAgIC8qIEFwcGVuZCBzdG9sZW4gYW5kIHRoZW4gZGVjcmVtZW50IGl0cyByZWZlcmVuY2UgY291bnQgKi8KLSAgICBpbnQgcnZhbCA9IFB5TGlzdF9BcHBlbmQobHN0LCBzdG9sZW4pOworICAgIGludCBydmFsID0gX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgc3RvbGVuKTsKICAgICBQeV9ERUNSRUYoc3RvbGVuKTsKICAgICByZXR1cm4gcnZhbDsKIH0KIAogc3RhdGljIGludAotZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihQeUVuY29kZXJPYmplY3QgKnMsIFB5T2JqZWN0ICpydmFsLCBQeU9iamVjdCAqb2JqLCBQeV9zc2l6ZV90IGluZGVudF9sZXZlbCkKK2VuY29kZXJfbGlzdGVuY29kZV9vYmooUHlFbmNvZGVyT2JqZWN0ICpzLCBfUHlBY2N1ICphY2MsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmosIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKQogewotICAgIC8qIEVuY29kZSBQeXRob24gb2JqZWN0IG9iaiB0byBhIEpTT04gdGVybSwgcnZhbCBpcyBhIFB5TGlzdCAqLworICAgIC8qIEVuY29kZSBQeXRob24gb2JqZWN0IG9iaiB0byBhIEpTT04gdGVybSAqLwogICAgIFB5T2JqZWN0ICpuZXdvYmo7CiAgICAgaW50IHJ2OwogCkBAIC0xMzE2LDM4ICsxMzkyLDM4IEBACiAgICAgICAgIFB5T2JqZWN0ICpjc3RyID0gX2VuY29kZWRfY29uc3Qob2JqKTsKICAgICAgICAgaWYgKGNzdHIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgcmV0dXJuIF9zdGVhbF9saXN0X2FwcGVuZChydmFsLCBjc3RyKTsKKyAgICAgICAgcmV0dXJuIF9zdGVhbF9hY2N1bXVsYXRlKGFjYywgY3N0cik7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKQogICAgIHsKICAgICAgICAgUHlPYmplY3QgKmVuY29kZWQgPSBlbmNvZGVyX2VuY29kZV9zdHJpbmcocywgb2JqKTsKICAgICAgICAgaWYgKGVuY29kZWQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgcmV0dXJuIF9zdGVhbF9saXN0X2FwcGVuZChydmFsLCBlbmNvZGVkKTsKKyAgICAgICAgcmV0dXJuIF9zdGVhbF9hY2N1bXVsYXRlKGFjYywgZW5jb2RlZCk7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjayhvYmopKSB7CiAgICAgICAgIFB5T2JqZWN0ICplbmNvZGVkID0gUHlPYmplY3RfU3RyKG9iaik7CiAgICAgICAgIGlmIChlbmNvZGVkID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJldHVybiBfc3RlYWxfbGlzdF9hcHBlbmQocnZhbCwgZW5jb2RlZCk7CisgICAgICAgIHJldHVybiBfc3RlYWxfYWNjdW11bGF0ZShhY2MsIGVuY29kZWQpOwogICAgIH0KICAgICBlbHNlIGlmIChQeUZsb2F0X0NoZWNrKG9iaikpIHsKICAgICAgICAgUHlPYmplY3QgKmVuY29kZWQgPSBlbmNvZGVyX2VuY29kZV9mbG9hdChzLCBvYmopOwogICAgICAgICBpZiAoZW5jb2RlZCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICByZXR1cm4gX3N0ZWFsX2xpc3RfYXBwZW5kKHJ2YWwsIGVuY29kZWQpOworICAgICAgICByZXR1cm4gX3N0ZWFsX2FjY3VtdWxhdGUoYWNjLCBlbmNvZGVkKTsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlMaXN0X0NoZWNrKG9iaikgfHwgUHlUdXBsZV9DaGVjayhvYmopKSB7CiAgICAgICAgIGlmIChQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoIiB3aGlsZSBlbmNvZGluZyBhIEpTT04gb2JqZWN0IikpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJ2ID0gZW5jb2Rlcl9saXN0ZW5jb2RlX2xpc3QocywgcnZhbCwgb2JqLCBpbmRlbnRfbGV2ZWwpOworICAgICAgICBydiA9IGVuY29kZXJfbGlzdGVuY29kZV9saXN0KHMsIGFjYywgb2JqLCBpbmRlbnRfbGV2ZWwpOwogICAgICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKICAgICAgICAgcmV0dXJuIHJ2OwogICAgIH0KICAgICBlbHNlIGlmIChQeURpY3RfQ2hlY2sob2JqKSkgewogICAgICAgICBpZiAoUHlfRW50ZXJSZWN1cnNpdmVDYWxsKCIgd2hpbGUgZW5jb2RpbmcgYSBKU09OIG9iamVjdCIpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBydiA9IGVuY29kZXJfbGlzdGVuY29kZV9kaWN0KHMsIHJ2YWwsIG9iaiwgaW5kZW50X2xldmVsKTsKKyAgICAgICAgcnYgPSBlbmNvZGVyX2xpc3RlbmNvZGVfZGljdChzLCBhY2MsIG9iaiwgaW5kZW50X2xldmVsKTsKICAgICAgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7CiAgICAgICAgIHJldHVybiBydjsKICAgICB9CkBAIC0xMzc4LDcgKzE0NTQsNyBAQAogCiAgICAgICAgIGlmIChQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoIiB3aGlsZSBlbmNvZGluZyBhIEpTT04gb2JqZWN0IikpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJ2ID0gZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihzLCBydmFsLCBuZXdvYmosIGluZGVudF9sZXZlbCk7CisgICAgICAgIHJ2ID0gZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihzLCBhY2MsIG5ld29iaiwgaW5kZW50X2xldmVsKTsKICAgICAgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7CiAKICAgICAgICAgUHlfREVDUkVGKG5ld29iaik7CkBAIC0xMzk4LDkgKzE0NzQsMTAgQEAKIH0KIAogc3RhdGljIGludAotZW5jb2Rlcl9saXN0ZW5jb2RlX2RpY3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBQeU9iamVjdCAqcnZhbCwgUHlPYmplY3QgKmRjdCwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpCitlbmNvZGVyX2xpc3RlbmNvZGVfZGljdChQeUVuY29kZXJPYmplY3QgKnMsIF9QeUFjY3UgKmFjYywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkY3QsIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKQogewotICAgIC8qIEVuY29kZSBQeXRob24gZGljdCBkY3QgYSBKU09OIHRlcm0sIHJ2YWwgaXMgYSBQeUxpc3QgKi8KKyAgICAvKiBFbmNvZGUgUHl0aG9uIGRpY3QgZGN0IGEgSlNPTiB0ZXJtICovCiAgICAgc3RhdGljIFB5T2JqZWN0ICpvcGVuX2RpY3QgPSBOVUxMOwogICAgIHN0YXRpYyBQeU9iamVjdCAqY2xvc2VfZGljdCA9IE5VTEw7CiAgICAgc3RhdGljIFB5T2JqZWN0ICplbXB0eV9kaWN0ID0gTlVMTDsKQEAgLTE0MjAsNyArMTQ5Nyw3IEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmIChQeV9TSVpFKGRjdCkgPT0gMCkKLSAgICAgICAgcmV0dXJuIFB5TGlzdF9BcHBlbmQocnZhbCwgZW1wdHlfZGljdCk7CisgICAgICAgIHJldHVybiBfUHlBY2N1X0FjY3VtdWxhdGUoYWNjLCBlbXB0eV9kaWN0KTsKIAogICAgIGlmIChzLT5tYXJrZXJzICE9IFB5X05vbmUpIHsKICAgICAgICAgaW50IGhhc19rZXk7CkBAIC0xNDM4LDcgKzE1MTUsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKFB5TGlzdF9BcHBlbmQocnZhbCwgb3Blbl9kaWN0KSkKKyAgICBpZiAoX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgb3Blbl9kaWN0KSkKICAgICAgICAgZ290byBiYWlsOwogCiAgICAgaWYgKHMtPmluZGVudCAhPSBQeV9Ob25lKSB7CkBAIC0xNTI1LDcgKzE2MDIsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlkeCkgewotICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQocnZhbCwgcy0+aXRlbV9zZXBhcmF0b3IpKQorICAgICAgICAgICAgaWYgKF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIHMtPml0ZW1fc2VwYXJhdG9yKSkKICAgICAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgIH0KIApAQCAtMTUzMywxNiArMTYxMCwxNiBAQAogICAgICAgICBQeV9DTEVBUihrc3RyKTsKICAgICAgICAgaWYgKGVuY29kZWQgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gYmFpbDsKLSAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQocnZhbCwgZW5jb2RlZCkpIHsKKyAgICAgICAgaWYgKF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIGVuY29kZWQpKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZW5jb2RlZCk7CiAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKGVuY29kZWQpOwotICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChydmFsLCBzLT5rZXlfc2VwYXJhdG9yKSkKKyAgICAgICAgaWYgKF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIHMtPmtleV9zZXBhcmF0b3IpKQogICAgICAgICAgICAgZ290byBiYWlsOwogCiAgICAgICAgIHZhbHVlID0gUHlUdXBsZV9HRVRfSVRFTShpdGVtLCAxKTsKLSAgICAgICAgaWYgKGVuY29kZXJfbGlzdGVuY29kZV9vYmoocywgcnZhbCwgdmFsdWUsIGluZGVudF9sZXZlbCkpCisgICAgICAgIGlmIChlbmNvZGVyX2xpc3RlbmNvZGVfb2JqKHMsIGFjYywgdmFsdWUsIGluZGVudF9sZXZlbCkpCiAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgIGlkeCArPSAxOwogICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CkBAIC0xNTU2LDE0ICsxNjMzLDEzIEBACiAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgIFB5X0NMRUFSKGlkZW50KTsKICAgICB9CisgICAgLyogVE9ETyBET0VTIE5PVCBSVU47IGRlYWQgY29kZQogICAgIGlmIChzLT5pbmRlbnQgIT0gUHlfTm9uZSkgewotICAgICAgICAvKiBUT0RPOiBET0VTIE5PVCBSVU4gKi8KICAgICAgICAgaW5kZW50X2xldmVsIC09IDE7Ci0gICAgICAgIC8qCi0gICAgICAgICAgICB5aWVsZCAnXG4nICsgKCcgJyAqIChfaW5kZW50ICogX2N1cnJlbnRfaW5kZW50X2xldmVsKSkKLSAgICAgICAgKi8KLSAgICB9Ci0gICAgaWYgKFB5TGlzdF9BcHBlbmQocnZhbCwgY2xvc2VfZGljdCkpCisKKyAgICAgICAgeWllbGQgJ1xuJyArICgnICcgKiAoX2luZGVudCAqIF9jdXJyZW50X2luZGVudF9sZXZlbCkpCisgICAgfSovCisgICAgaWYgKF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIGNsb3NlX2RpY3QpKQogICAgICAgICBnb3RvIGJhaWw7CiAgICAgcmV0dXJuIDA7CiAKQEAgLTE1NzcsOSArMTY1MywxMCBAQAogCiAKIHN0YXRpYyBpbnQKLWVuY29kZXJfbGlzdGVuY29kZV9saXN0KFB5RW5jb2Rlck9iamVjdCAqcywgUHlPYmplY3QgKnJ2YWwsIFB5T2JqZWN0ICpzZXEsIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKQorZW5jb2Rlcl9saXN0ZW5jb2RlX2xpc3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBfUHlBY2N1ICphY2MsCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc2VxLCBQeV9zc2l6ZV90IGluZGVudF9sZXZlbCkKIHsKLSAgICAvKiBFbmNvZGUgUHl0aG9uIGxpc3Qgc2VxIHRvIGEgSlNPTiB0ZXJtLCBydmFsIGlzIGEgUHlMaXN0ICovCisgICAgLyogRW5jb2RlIFB5dGhvbiBsaXN0IHNlcSB0byBhIEpTT04gdGVybSAqLwogICAgIHN0YXRpYyBQeU9iamVjdCAqb3Blbl9hcnJheSA9IE5VTEw7CiAgICAgc3RhdGljIFB5T2JqZWN0ICpjbG9zZV9hcnJheSA9IE5VTEw7CiAgICAgc3RhdGljIFB5T2JqZWN0ICplbXB0eV9hcnJheSA9IE5VTEw7CkBAIC0xNjAwLDcgKzE2NzcsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShzX2Zhc3QpID09IDApIHsKICAgICAgICAgUHlfREVDUkVGKHNfZmFzdCk7Ci0gICAgICAgIHJldHVybiBQeUxpc3RfQXBwZW5kKHJ2YWwsIGVtcHR5X2FycmF5KTsKKyAgICAgICAgcmV0dXJuIF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIGVtcHR5X2FycmF5KTsKICAgICB9CiAKICAgICBpZiAocy0+bWFya2VycyAhPSBQeV9Ob25lKSB7CkBAIC0xNjE5LDcgKzE2OTYsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKFB5TGlzdF9BcHBlbmQocnZhbCwgb3Blbl9hcnJheSkpCisgICAgaWYgKF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIG9wZW5fYXJyYXkpKQogICAgICAgICBnb3RvIGJhaWw7CiAgICAgaWYgKHMtPmluZGVudCAhPSBQeV9Ob25lKSB7CiAgICAgICAgIC8qIFRPRE86IERPRVMgTk9UIFJVTiAqLwpAQCAtMTYzMywxMCArMTcxMCwxMCBAQAogICAgIGZvciAoaSA9IDA7IGkgPCBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoc19mYXN0KTsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICpvYmogPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oc19mYXN0LCBpKTsKICAgICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKHJ2YWwsIHMtPml0ZW1fc2VwYXJhdG9yKSkKKyAgICAgICAgICAgIGlmIChfUHlBY2N1X0FjY3VtdWxhdGUoYWNjLCBzLT5pdGVtX3NlcGFyYXRvcikpCiAgICAgICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICB9Ci0gICAgICAgIGlmIChlbmNvZGVyX2xpc3RlbmNvZGVfb2JqKHMsIHJ2YWwsIG9iaiwgaW5kZW50X2xldmVsKSkKKyAgICAgICAgaWYgKGVuY29kZXJfbGlzdGVuY29kZV9vYmoocywgYWNjLCBvYmosIGluZGVudF9sZXZlbCkpCiAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgfQogICAgIGlmIChpZGVudCAhPSBOVUxMKSB7CkBAIC0xNjQ0LDE0ICsxNzIxLDE0IEBACiAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgIFB5X0NMRUFSKGlkZW50KTsKICAgICB9CisKKyAgICAvKiBUT0RPOiBET0VTIE5PVCBSVU4KICAgICBpZiAocy0+aW5kZW50ICE9IFB5X05vbmUpIHsKLSAgICAgICAgLyogVE9ETzogRE9FUyBOT1QgUlVOICovCiAgICAgICAgIGluZGVudF9sZXZlbCAtPSAxOwotICAgICAgICAvKgotICAgICAgICAgICAgeWllbGQgJ1xuJyArICgnICcgKiAoX2luZGVudCAqIF9jdXJyZW50X2luZGVudF9sZXZlbCkpCi0gICAgICAgICovCi0gICAgfQotICAgIGlmIChQeUxpc3RfQXBwZW5kKHJ2YWwsIGNsb3NlX2FycmF5KSkKKworICAgICAgICB5aWVsZCAnXG4nICsgKCcgJyAqIChfaW5kZW50ICogX2N1cnJlbnRfaW5kZW50X2xldmVsKSkKKyAgICB9Ki8KKyAgICBpZiAoX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgY2xvc2VfYXJyYXkpKQogICAgICAgICBnb3RvIGJhaWw7CiAgICAgUHlfREVDUkVGKHNfZmFzdCk7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19sb2NhbGVtb2R1bGUuYyBiL01vZHVsZXMvX2xvY2FsZW1vZHVsZS5jCmluZGV4IDEwMDFkZDIuLmNjNjg4YmEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2xvY2FsZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2xvY2FsZW1vZHVsZS5jCkBAIC00Miw0MyArNDIsNiBAQAogCiBzdGF0aWMgUHlPYmplY3QgKkVycm9yOwogCi0vKiBDb252ZXJ0IGEgY2hhciogdG8gYSBVbmljb2RlIG9iamVjdCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgbG9jYWxlICovCi1zdGF0aWMgUHlPYmplY3QqCi1zdHIydW5pKGNvbnN0IGNoYXIqIHMpCi17Ci0jaWZkZWYgSEFWRV9CUk9LRU5fTUJTVE9XQ1MKLSAgICBzaXplX3QgbmVlZGVkID0gc3RybGVuKHMpOwotI2Vsc2UKLSAgICBzaXplX3QgbmVlZGVkID0gbWJzdG93Y3MoTlVMTCwgcywgMCk7Ci0jZW5kaWYKLSAgICBzaXplX3QgcmVzMTsKLSAgICB3Y2hhcl90IHNtYWxsYnVmWzMwXTsKLSAgICB3Y2hhcl90ICpkZXN0OwotICAgIFB5T2JqZWN0ICpyZXMyOwotICAgIGlmIChuZWVkZWQgPT0gKHNpemVfdCktMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkNhbm5vdCBjb252ZXJ0IGJ5dGUgdG8gc3RyaW5nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAobmVlZGVkKnNpemVvZih3Y2hhcl90KSA8IHNpemVvZihzbWFsbGJ1ZikpCi0gICAgICAgIGRlc3QgPSBzbWFsbGJ1ZjsKLSAgICBlbHNlIHsKLSAgICAgICAgZGVzdCA9IFB5TWVtX01hbGxvYygobmVlZGVkKzEpKnNpemVvZih3Y2hhcl90KSk7Ci0gICAgICAgIGlmICghZGVzdCkKLSAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIH0KLSAgICAvKiBUaGlzIHNob3VsZG4ndCBmYWlsIG5vdyAqLwotICAgIHJlczEgPSBtYnN0b3djcyhkZXN0LCBzLCBuZWVkZWQrMSk7Ci0jaWZkZWYgSEFWRV9CUk9LRU5fTUJTVE9XQ1MKLSAgICBhc3NlcnQocmVzMSAhPSAoc2l6ZV90KS0xKTsKLSNlbHNlCi0gICAgYXNzZXJ0KHJlczEgPT0gbmVlZGVkKTsKLSNlbmRpZgotICAgIHJlczIgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGRlc3QsIHJlczEpOwotICAgIGlmIChkZXN0ICE9IHNtYWxsYnVmKQotICAgICAgICBQeU1lbV9GcmVlKGRlc3QpOwotICAgIHJldHVybiByZXMyOwotfQotCiAvKiBzdXBwb3J0IGZ1bmN0aW9ucyBmb3IgZm9ybWF0dGluZyBmbG9hdGluZyBwb2ludCBudW1iZXJzICovCiAKIFB5RG9jX1NUUlZBUihzZXRsb2NhbGVfX2RvY19fLApAQCAtMTQ5LDcgKzExMiw3IEBACiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJ1bnN1cHBvcnRlZCBsb2NhbGUgc2V0dGluZyIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmVzdWx0X29iamVjdCA9IHN0cjJ1bmkocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0X29iamVjdCA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUocmVzdWx0LCBOVUxMKTsKICAgICAgICAgaWYgKCFyZXN1bHRfb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKQEAgLTE1OSw3ICsxMjIsNyBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAibG9jYWxlIHF1ZXJ5IGZhaWxlZCIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmVzdWx0X29iamVjdCA9IHN0cjJ1bmkocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0X29iamVjdCA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUocmVzdWx0LCBOVUxMKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdF9vYmplY3Q7CiB9CkBAIC0xODUsNyArMTQ4LDcgQEAKICAgICAgICBpbnZvbHZlZCBoZXJlaW4gKi8KIAogI2RlZmluZSBSRVNVTFRfU1RSSU5HKHMpXAotICAgIHggPSBzdHIydW5pKGwtPnMpOyAgIFwKKyAgICB4ID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZShsLT5zLCBOVUxMKTsgICBcCiAgICAgaWYgKCF4KSBnb3RvIGZhaWxlZDtcCiAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcocmVzdWx0LCAjcywgeCk7XAogICAgIFB5X1hERUNSRUYoeCkKQEAgLTI3MSw1MSArMjM0LDQzIEBACiBzdGF0aWMgUHlPYmplY3QqCiBQeUxvY2FsZV9zdHJ4ZnJtKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKLSAgICBQeV9VTklDT0RFICpzMDsKLSAgICBQeV9zc2l6ZV90IG4wOwotICAgIHdjaGFyX3QgKnMsICpidWYgPSBOVUxMOwotICAgIHNpemVfdCBuMSwgbjI7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBQeV9zc2l6ZV90IG4xOworICAgIHdjaGFyX3QgKnMgPSBOVUxMLCAqYnVmID0gTlVMTDsKKyAgICBzaXplX3QgbjI7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0jaWYgUHlfVU5JQ09ERV9TSVpFICE9IFNJWkVPRl9XQ0hBUl9UCi0gICAgUHlfc3NpemVfdCBpOwotI2VuZGlmCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInUjOnN0cnhmcm0iLCAmczAsICZuMCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOnN0cnhmcm0iLCAmc3RyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSNpZiBQeV9VTklDT0RFX1NJWkUgPT0gU0laRU9GX1dDSEFSX1QKLSAgICBzID0gKHdjaGFyX3QgKikgczA7Ci0jZWxzZQotICAgIHMgPSBQeU1lbV9NYWxsb2MoKG4wKzEpKnNpemVvZih3Y2hhcl90KSk7Ci0gICAgaWYgKCFzKQotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICBmb3IgKGk9MDsgaTw9bjA7IGkrKykKLSAgICAgICAgc1tpXSA9IHMwW2ldOwotI2VuZGlmCisgICAgcyA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHN0ciwgJm4xKTsKKyAgICBpZiAocyA9PSBOVUxMKQorICAgICAgICBnb3RvIGV4aXQ7CiAKICAgICAvKiBhc3N1bWUgbm8gY2hhbmdlIGluIHNpemUsIGZpcnN0ICovCi0gICAgbjEgPSB3Y3NsZW4ocykgKyAxOwotICAgIGJ1ZiA9IFB5TWVtX01hbGxvYyhuMSpzaXplb2Yod2NoYXJfdCkpOworICAgIG4xID0gbjEgKyAxOworICAgIGJ1ZiA9IFB5TWVtX01hbGxvYyhuMSAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgaWYgKCFidWYpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgZ290byBleGl0OwogICAgIH0KICAgICBuMiA9IHdjc3hmcm0oYnVmLCBzLCBuMSk7Ci0gICAgaWYgKG4yID49IG4xKSB7CisgICAgaWYgKG4yID49IChzaXplX3QpbjEpIHsKICAgICAgICAgLyogbW9yZSBzcGFjZSBuZWVkZWQgKi8KLSAgICAgICAgYnVmID0gUHlNZW1fUmVhbGxvYyhidWYsIChuMisxKSpzaXplb2Yod2NoYXJfdCkpOwotICAgICAgICBpZiAoIWJ1ZikgeworICAgICAgICB3Y2hhcl90ICogbmV3X2J1ZiA9IFB5TWVtX1JlYWxsb2MoYnVmLCAobjIrMSkqc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgaWYgKCFuZXdfYnVmKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CisgICAgICAgIGJ1ZiA9IG5ld19idWY7CiAgICAgICAgIG4yID0gd2NzeGZybShidWYsIHMsIG4yKzEpOwogICAgIH0KICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGJ1ZiwgbjIpOwotIGV4aXQ6Ci0gICAgaWYgKGJ1ZikgUHlNZW1fRnJlZShidWYpOwotI2lmIFB5X1VOSUNPREVfU0laRSAhPSBTSVpFT0ZfV0NIQVJfVAotICAgIFB5TWVtX0ZyZWUocyk7Ci0jZW5kaWYKK2V4aXQ6CisgICAgaWYgKGJ1ZikKKyAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgIGlmIChzKQorICAgICAgICBQeU1lbV9GcmVlKHMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYKQEAgLTQ4NSw3ICs0NDAsNyBAQAogICAgICAgICAgICAgICAgaW5zdGVhZCBvZiBhbiBlbXB0eSBzdHJpbmcgZm9yIG5sX2xhbmdpbmZvKEVSQSkuICAqLwogICAgICAgICAgICAgY29uc3QgY2hhciAqcmVzdWx0ID0gbmxfbGFuZ2luZm8oaXRlbSk7CiAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgIT0gTlVMTCA/IHJlc3VsdCA6ICIiOwotICAgICAgICAgICAgcmV0dXJuIHN0cjJ1bmkocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHJlc3VsdCwgTlVMTCk7CiAgICAgICAgIH0KICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInVuc3VwcG9ydGVkIGxhbmdpbmZvIGNvbnN0YW50Iik7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC01MDQsNyArNDU5LDcgQEAKICAgICBjaGFyICppbjsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiLCAmaW4pKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3RyMnVuaShnZXR0ZXh0KGluKSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoZ2V0dGV4dChpbiksIE5VTEwpOwogfQogCiBQeURvY19TVFJWQVIoZGdldHRleHRfX2RvY19fLApAQCAtNTE3LDcgKzQ3Miw3IEBACiAgICAgY2hhciAqZG9tYWluLCAqaW47CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ6cyIsICZkb21haW4sICZpbikpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzdHIydW5pKGRnZXR0ZXh0KGRvbWFpbiwgaW4pKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxvY2FsZShkZ2V0dGV4dChkb21haW4sIGluKSwgTlVMTCk7CiB9CiAKIFB5RG9jX1NUUlZBUihkY2dldHRleHRfX2RvY19fLApAQCAtNTMxLDcgKzQ4Niw3IEBACiAgICAgaW50IGNhdGVnb3J5OwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAienNpIiwgJmRvbWFpbiwgJm1zZ2lkLCAmY2F0ZWdvcnkpKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3RyMnVuaShkY2dldHRleHQoZG9tYWluLG1zZ2lkLGNhdGVnb3J5KSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoZGNnZXR0ZXh0KGRvbWFpbixtc2dpZCxjYXRlZ29yeSksIE5VTEwpOwogfQogCiBQeURvY19TVFJWQVIodGV4dGRvbWFpbl9fZG9jX18sCkBAIC01NDksNyArNTA0LDcgQEAKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIHN0cjJ1bmkoZG9tYWluKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxvY2FsZShkb21haW4sIE5VTEwpOwogfQogCiBQeURvY19TVFJWQVIoYmluZHRleHRkb21haW5fX2RvY19fLApAQCAtNTgxLDcgKzUzNiw3IEBACiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJlc3VsdCA9IHN0cjJ1bmkoY3VycmVudF9kaXJuYW1lKTsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKGN1cnJlbnRfZGlybmFtZSwgTlVMTCk7CiAgICAgUHlfWERFQ1JFRihkaXJuYW1lX2J5dGVzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNTk5LDcgKzU1NCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGNvZGVzZXQgPSBiaW5kX3RleHRkb21haW5fY29kZXNldChkb21haW4sIGNvZGVzZXQpOwogICAgIGlmIChjb2Rlc2V0KQotICAgICAgICByZXR1cm4gc3RyMnVuaShjb2Rlc2V0KTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoY29kZXNldCwgTlVMTCk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2xzcHJvZi5jIGIvTW9kdWxlcy9fbHNwcm9mLmMKaW5kZXggY2M0MTJiZi4uYjBhMjI2YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbHNwcm9mLmMKKysrIGIvTW9kdWxlcy9fbHNwcm9mLmMKQEAgLTE3NiwzNiArMTc2LDI5IEBACiAgICAgaWYgKGZuLT5tX3NlbGYgPT0gTlVMTCkgewogICAgICAgICAvKiBidWlsdC1pbiBmdW5jdGlvbjogbG9vayB1cCB0aGUgbW9kdWxlIG5hbWUgKi8KICAgICAgICAgUHlPYmplY3QgKm1vZCA9IGZuLT5tX21vZHVsZTsKLSAgICAgICAgY29uc3QgY2hhciAqbW9kbmFtZTsKLSAgICAgICAgaWYgKG1vZCAmJiBQeVVuaWNvZGVfQ2hlY2sobW9kKSkgewotICAgICAgICAgICAgLyogWFhYOiBUaGUgZm9sbG93aW5nIHdpbGwgdHJ1bmNhdGUgbW9kdWxlIG5hbWVzIHdpdGggZW1iZWRkZWQKLSAgICAgICAgICAgICAqIG51bGwtY2hhcmFjdGVycy4gIEl0IGlzIHVubGlrZWx5IHRoYXQgdGhpcyBjYW4gaGFwcGVuIGluCi0gICAgICAgICAgICAgKiBwcmFjdGljZSBhbmQgdGhlIGNvbmNlcXVlbmNlcyBhcmUgbm90IHNlcmlvdXMgZW5vdWdoIHRvCi0gICAgICAgICAgICAgKiBpbnRyb2R1Y2UgZXh0cmEgY2hlY2tzIGhlcmUuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIG1vZG5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG1vZCk7Ci0gICAgICAgICAgICBpZiAobW9kbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgbW9kbmFtZSA9ICI8ZW5jb2RpbmcgZXJyb3I+IjsKLSAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBQeU9iamVjdCAqbW9kbmFtZSA9IE5VTEw7CisgICAgICAgIGlmIChtb2QgIT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhtb2QpKSB7CisgICAgICAgICAgICAgICAgbW9kbmFtZSA9IG1vZDsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYobW9kbmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChQeU1vZHVsZV9DaGVjayhtb2QpKSB7CisgICAgICAgICAgICAgICAgbW9kbmFtZSA9IFB5TW9kdWxlX0dldE5hbWVPYmplY3QobW9kKTsKKyAgICAgICAgICAgICAgICBpZiAobW9kbmFtZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG1vZCAmJiBQeU1vZHVsZV9DaGVjayhtb2QpKSB7Ci0gICAgICAgICAgICBtb2RuYW1lID0gUHlNb2R1bGVfR2V0TmFtZShtb2QpOwotICAgICAgICAgICAgaWYgKG1vZG5hbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICAgICAgbW9kbmFtZSA9ICJidWlsdGlucyI7CisgICAgICAgIGlmIChtb2RuYW1lICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhtb2RuYW1lLCAiYnVpbHRpbnMiKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPCVVLiVzPiIsIG1vZG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm4tPm1fbWwtPm1sX25hbWUpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtb2RuYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKG1vZG5hbWUpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgbW9kbmFtZSA9ICJidWlsdGlucyI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHN0cmNtcChtb2RuYW1lLCAiYnVpbHRpbnMiKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8JXMuJXM+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuLT5tX21sLT5tbF9uYW1lKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8JXM+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbi0+bV9tbC0+bWxfbmFtZSk7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPCVzPiIsIGZuLT5tX21sLT5tbF9uYW1lKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIGJ1aWx0LWluIG1ldGhvZDogdHJ5IHRvIHJldHVybgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbHptYW1vZHVsZS5jIGIvTW9kdWxlcy9fbHptYW1vZHVsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ODJhNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19sem1hbW9kdWxlLmMKQEAgLTAsMCArMSwxMjg2IEBACisvKiBfbHptYSAtIExvdy1sZXZlbCBQeXRob24gaW50ZXJmYWNlIHRvIGxpYmx6bWEuCisKKyAgIEluaXRpYWwgaW1wbGVtZW50YXRpb24gYnkgUGVyIMOYeXZpbmQgS2FybHNlbi4KKyAgIFJld3JpdHRlbiBieSBOYWRlZW0gVmF3ZGEuCisKKyovCisKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgorCisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisjaWZkZWYgV0lUSF9USFJFQUQKKyNpbmNsdWRlICJweXRocmVhZC5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPGx6bWEuaD4KKworCisjaWZuZGVmIFBZX0xPTkdfTE9ORworI2Vycm9yICJUaGlzIG1vZHVsZSByZXF1aXJlcyBQWV9MT05HX0xPTkcgdG8gYmUgZGVmaW5lZCIKKyNlbmRpZgorCisKKyNpZmRlZiBXSVRIX1RIUkVBRAorI2RlZmluZSBBQ1FVSVJFX0xPQ0sob2JqKSBkbyB7IFwKKyAgICBpZiAoIVB5VGhyZWFkX2FjcXVpcmVfbG9jaygob2JqKS0+bG9jaywgMCkpIHsgXAorICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTIFwKKyAgICAgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKChvYmopLT5sb2NrLCAxKTsgXAorICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUyBcCisgICAgfSB9IHdoaWxlICgwKQorI2RlZmluZSBSRUxFQVNFX0xPQ0sob2JqKSBQeVRocmVhZF9yZWxlYXNlX2xvY2soKG9iaiktPmxvY2spCisjZWxzZQorI2RlZmluZSBBQ1FVSVJFX0xPQ0sob2JqKQorI2RlZmluZSBSRUxFQVNFX0xPQ0sob2JqKQorI2VuZGlmCisKKworLyogQ29udGFpbmVyIGZvcm1hdHM6ICovCitlbnVtIHsKKyAgICBGT1JNQVRfQVVUTywKKyAgICBGT1JNQVRfWFosCisgICAgRk9STUFUX0FMT05FLAorICAgIEZPUk1BVF9SQVcsCit9OworCisjZGVmaW5lIExaTUFfQ0hFQ0tfVU5LTk9XTiAoTFpNQV9DSEVDS19JRF9NQVggKyAxKQorCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgbHptYV9zdHJlYW0gbHpzOworICAgIGludCBmbHVzaGVkOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CisjZW5kaWYKK30gQ29tcHJlc3NvcjsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBsem1hX3N0cmVhbSBsenM7CisgICAgaW50IGNoZWNrOworICAgIGNoYXIgZW9mOworICAgIFB5T2JqZWN0ICp1bnVzZWRfZGF0YTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOworI2VuZGlmCit9IERlY29tcHJlc3NvcjsKKworLyogTFpNQUVycm9yIGNsYXNzIG9iamVjdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqRXJyb3I7CisKKy8qIEFuIGVtcHR5IHR1cGxlLCB1c2VkIGJ5IHRoZSBmaWx0ZXIgc3BlY2lmaWVyIHBhcnNpbmcgY29kZS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqZW1wdHlfdHVwbGU7CisKKworLyogSGVscGVyIGZ1bmN0aW9ucy4gKi8KKworc3RhdGljIGludAorY2F0Y2hfbHptYV9lcnJvcihsem1hX3JldCBsenJldCkKK3sKKyAgICBzd2l0Y2ggKGx6cmV0KSB7CisgICAgICAgIGNhc2UgTFpNQV9PSzoKKyAgICAgICAgY2FzZSBMWk1BX0dFVF9DSEVDSzoKKyAgICAgICAgY2FzZSBMWk1BX05PX0NIRUNLOgorICAgICAgICBjYXNlIExaTUFfU1RSRUFNX0VORDoKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIExaTUFfVU5TVVBQT1JURURfQ0hFQ0s6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJVbnN1cHBvcnRlZCBpbnRlZ3JpdHkgY2hlY2siKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIExaTUFfTUVNX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIExaTUFfTUVNTElNSVRfRVJST1I6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJNZW1vcnkgdXNhZ2UgbGltaXQgZXhjZWVkZWQiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIExaTUFfRk9STUFUX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAiSW5wdXQgZm9ybWF0IG5vdCBzdXBwb3J0ZWQgYnkgZGVjb2RlciIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgTFpNQV9PUFRJT05TX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAiSW52YWxpZCBvciB1bnN1cHBvcnRlZCBvcHRpb25zIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBMWk1BX0RBVEFfRVJST1I6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJDb3JydXB0IGlucHV0IGRhdGEiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIExaTUFfQlVGX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAiSW5zdWZmaWNpZW50IGJ1ZmZlciBzcGFjZSIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgTFpNQV9QUk9HX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAiSW50ZXJuYWwgZXJyb3IiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KEVycm9yLCAiVW5yZWNvZ25pemVkIGVycm9yIGZyb20gbGlibHptYTogJWQiLCBsenJldCk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICB9Cit9CisKKyNpZiBCVUZTSVogPCA4MTkyCisjZGVmaW5lIElOSVRJQUxfQlVGRkVSX1NJWkUgODE5MgorI2Vsc2UKKyNkZWZpbmUgSU5JVElBTF9CVUZGRVJfU0laRSBCVUZTSVoKKyNlbmRpZgorCitzdGF0aWMgaW50Citncm93X2J1ZmZlcihQeU9iamVjdCAqKmJ1ZikKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoKmJ1Zik7CisgICAgcmV0dXJuIF9QeUJ5dGVzX1Jlc2l6ZShidWYsIHNpemUgKyAoc2l6ZSA+PiAzKSArIDYpOworfQorCisKKy8qIFNvbWUgY3VzdG9tIHR5cGUgY29udmVyc2lvbnMgZm9yIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcygpLAorICAgc2luY2UgdGhlIHByZWRlZmluZWQgY29udmVyc2lvbiBzcGVjaWZpZXJzIGRvIG5vdCBzdWl0IG91ciBuZWVkczoKKworICAgICAgdWludDMyX3QgLSB0aGUgIkkiICh1bnNpZ25lZCBpbnQpIHNwZWNpZmllciBpcyB0aGUgcmlnaHQgc2l6ZSwgYnV0CisgICAgICBzaWxlbnRseSBpZ25vcmVzIG92ZXJmbG93cyBvbiBjb252ZXJzaW9uLgorCisgICAgICBsem1hX3ZsaSAtIHRoZSAiSyIgKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgc3BlY2lmaWVyIGlzIHRoZSByaWdodAorICAgICAgc2l6ZSwgYnV0IGxpa2UgIkkiIGl0IHNpbGVudGx5IGlnbm9yZXMgb3ZlcmZsb3dzIG9uIGNvbnZlcnNpb24uCisKKyAgICAgIGx6bWFfbW9kZSBhbmQgbHptYV9tYXRjaF9maW5kZXIgLSB0aGVzZSBhcmUgZW51bWVyYXRpb24gdHlwZXMsIGFuZAorICAgICAgc28gdGhlIHNpemUgb2YgZWFjaCBpcyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLiBXb3JzZSwgZGlmZmVyZW50CisgICAgICBlbnVtIHR5cGVzIGNhbiBiZSBvZiBkaWZmZXJlbnQgc2l6ZXMgd2l0aGluIHRoZSBzYW1lIHByb2dyYW0sIHNvCisgICAgICB0byBiZSBzdHJpY3RseSBjb3JyZWN0LCB3ZSBuZWVkIHRvIGRlZmluZSB0d28gc2VwYXJhdGUgY29udmVydGVycy4KKyAqLworCisjZGVmaW5lIElOVF9UWVBFX0NPTlZFUlRFUl9GVU5DKFRZUEUsIEZVTkNOQU1FKSBcCisgICAgc3RhdGljIGludCBcCisgICAgRlVOQ05BTUUoUHlPYmplY3QgKm9iaiwgdm9pZCAqcHRyKSBcCisgICAgeyBcCisgICAgICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWw7IFwKKyAgICAgICAgXAorICAgICAgICB2YWwgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKG9iaik7IFwKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIFwKKyAgICAgICAgICAgIHJldHVybiAwOyBcCisgICAgICAgIGlmICgodW5zaWduZWQgUFlfTE9OR19MT05HKShUWVBFKXZhbCAhPSB2YWwpIHsgXAorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgdG9vIGxhcmdlIGZvciAiICNUWVBFICIgdHlwZSIpOyBcCisgICAgICAgICAgICByZXR1cm4gMDsgXAorICAgICAgICB9IFwKKyAgICAgICAgKihUWVBFICopcHRyID0gKFRZUEUpdmFsOyBcCisgICAgICAgIHJldHVybiAxOyBcCisgICAgfQorCitJTlRfVFlQRV9DT05WRVJURVJfRlVOQyh1aW50MzJfdCwgdWludDMyX2NvbnZlcnRlcikKK0lOVF9UWVBFX0NPTlZFUlRFUl9GVU5DKGx6bWFfdmxpLCBsem1hX3ZsaV9jb252ZXJ0ZXIpCitJTlRfVFlQRV9DT05WRVJURVJfRlVOQyhsem1hX21vZGUsIGx6bWFfbW9kZV9jb252ZXJ0ZXIpCitJTlRfVFlQRV9DT05WRVJURVJfRlVOQyhsem1hX21hdGNoX2ZpbmRlciwgbHptYV9tZl9jb252ZXJ0ZXIpCisKKyN1bmRlZiBJTlRfVFlQRV9DT05WRVJURVJfRlVOQworCisKKy8qIEZpbHRlciBzcGVjaWZpZXIgcGFyc2luZy4KKworICAgVGhpcyBjb2RlIGhhbmRsZXMgY29udmVydGluZyBmaWx0ZXIgc3BlY2lmaWVycyAoUHl0aG9uIGRpY3RzKSBpbnRvCisgICB0aGUgQyBsem1hX2ZpbHRlciBzdHJ1Y3RzIGV4cGVjdGVkIGJ5IGxpYmx6bWEuICovCisKK3N0YXRpYyB2b2lkICoKK3BhcnNlX2ZpbHRlcl9zcGVjX2x6bWEoUHlPYmplY3QgKnNwZWMpCit7CisgICAgc3RhdGljIGNoYXIgKm9wdG5hbWVzW10gPSB7ImlkIiwgInByZXNldCIsICJkaWN0X3NpemUiLCAibGMiLCAibHAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYiIsICJtb2RlIiwgIm5pY2VfbGVuIiwgIm1mIiwgImRlcHRoIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmlkOworICAgIFB5T2JqZWN0ICpwcmVzZXRfb2JqOworICAgIHVpbnQzMl90IHByZXNldCA9IExaTUFfUFJFU0VUX0RFRkFVTFQ7CisgICAgbHptYV9vcHRpb25zX2x6bWEgKm9wdGlvbnM7CisKKyAgICAvKiBGaXJzdCwgZmlsbCBpbiBkZWZhdWx0IHZhbHVlcyBmb3IgYWxsIHRoZSBvcHRpb25zIHVzaW5nIGEgcHJlc2V0LgorICAgICAgIFRoZW4sIG92ZXJyaWRlIHRoZSBkZWZhdWx0cyB3aXRoIGFueSB2YWx1ZXMgZ2l2ZW4gYnkgdGhlIGNhbGxlci4gKi8KKworICAgIHByZXNldF9vYmogPSBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZyhzcGVjLCAicHJlc2V0Iik7CisgICAgaWYgKHByZXNldF9vYmogPT0gTlVMTCkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnQgb2sgPSB1aW50MzJfY29udmVydGVyKHByZXNldF9vYmosICZwcmVzZXQpOworICAgICAgICBQeV9ERUNSRUYocHJlc2V0X29iaik7CisgICAgICAgIGlmICghb2spCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBvcHRpb25zID0gKGx6bWFfb3B0aW9uc19sem1hICopUHlNZW1fTWFsbG9jKHNpemVvZiAqb3B0aW9ucyk7CisgICAgaWYgKG9wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgbWVtc2V0KG9wdGlvbnMsIDAsIHNpemVvZiAqb3B0aW9ucyk7CisKKyAgICBpZiAobHptYV9sem1hX3ByZXNldChvcHRpb25zLCBwcmVzZXQpKSB7CisgICAgICAgIFB5TWVtX0ZyZWUob3B0aW9ucyk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChFcnJvciwgIkludmFsaWQgY29tcHJlc3Npb24gcHJlc2V0OiAlZCIsIHByZXNldCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGVtcHR5X3R1cGxlLCBzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ8T09PJk8mTyZPJk8mTyZPJk8mIiwgb3B0bmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlkLCAmcHJlc2V0X29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfY29udmVydGVyLCAmb3B0aW9ucy0+ZGljdF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl9jb252ZXJ0ZXIsICZvcHRpb25zLT5sYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfY29udmVydGVyLCAmb3B0aW9ucy0+bHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX2NvbnZlcnRlciwgJm9wdGlvbnMtPnBiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx6bWFfbW9kZV9jb252ZXJ0ZXIsICZvcHRpb25zLT5tb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl9jb252ZXJ0ZXIsICZvcHRpb25zLT5uaWNlX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsem1hX21mX2NvbnZlcnRlciwgJm9wdGlvbnMtPm1mLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl9jb252ZXJ0ZXIsICZvcHRpb25zLT5kZXB0aCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmaWx0ZXIgc3BlY2lmaWVyIGZvciBMWk1BIGZpbHRlciIpOworICAgICAgICBQeU1lbV9GcmVlKG9wdGlvbnMpOworICAgICAgICBvcHRpb25zID0gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIG9wdGlvbnM7Cit9CisKK3N0YXRpYyB2b2lkICoKK3BhcnNlX2ZpbHRlcl9zcGVjX2RlbHRhKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHN0YXRpYyBjaGFyICpvcHRuYW1lc1tdID0geyJpZCIsICJkaXN0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKmlkOworICAgIHVpbnQzMl90IGRpc3QgPSAxOworICAgIGx6bWFfb3B0aW9uc19kZWx0YSAqb3B0aW9uczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGVtcHR5X3R1cGxlLCBzcGVjLCAifE9PJiIsIG9wdG5hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpZCwgdWludDMyX2NvbnZlcnRlciwgJmRpc3QpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZmlsdGVyIHNwZWNpZmllciBmb3IgZGVsdGEgZmlsdGVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG9wdGlvbnMgPSAobHptYV9vcHRpb25zX2RlbHRhICopUHlNZW1fTWFsbG9jKHNpemVvZiAqb3B0aW9ucyk7CisgICAgaWYgKG9wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgbWVtc2V0KG9wdGlvbnMsIDAsIHNpemVvZiAqb3B0aW9ucyk7CisgICAgb3B0aW9ucy0+dHlwZSA9IExaTUFfREVMVEFfVFlQRV9CWVRFOworICAgIG9wdGlvbnMtPmRpc3QgPSBkaXN0OworICAgIHJldHVybiBvcHRpb25zOworfQorCitzdGF0aWMgdm9pZCAqCitwYXJzZV9maWx0ZXJfc3BlY19iY2ooUHlPYmplY3QgKnNwZWMpCit7CisgICAgc3RhdGljIGNoYXIgKm9wdG5hbWVzW10gPSB7ImlkIiwgInN0YXJ0X29mZnNldCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICppZDsKKyAgICB1aW50MzJfdCBzdGFydF9vZmZzZXQgPSAwOworICAgIGx6bWFfb3B0aW9uc19iY2ogKm9wdGlvbnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhlbXB0eV90dXBsZSwgc3BlYywgInxPTyYiLCBvcHRuYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaWQsIHVpbnQzMl9jb252ZXJ0ZXIsICZzdGFydF9vZmZzZXQpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZmlsdGVyIHNwZWNpZmllciBmb3IgQkNKIGZpbHRlciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBvcHRpb25zID0gKGx6bWFfb3B0aW9uc19iY2ogKilQeU1lbV9NYWxsb2Moc2l6ZW9mICpvcHRpb25zKTsKKyAgICBpZiAob3B0aW9ucyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBtZW1zZXQob3B0aW9ucywgMCwgc2l6ZW9mICpvcHRpb25zKTsKKyAgICBvcHRpb25zLT5zdGFydF9vZmZzZXQgPSBzdGFydF9vZmZzZXQ7CisgICAgcmV0dXJuIG9wdGlvbnM7Cit9CisKK3N0YXRpYyB2b2lkICoKK3BhcnNlX2ZpbHRlcl9zcGVjKGx6bWFfZmlsdGVyICpmLCBQeU9iamVjdCAqc3BlYykKK3sKKyAgICBQeU9iamVjdCAqaWRfb2JqOworCisgICAgaWYgKCFQeU1hcHBpbmdfQ2hlY2soc3BlYykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJGaWx0ZXIgc3BlY2lmaWVyIG11c3QgYmUgYSBkaWN0IG9yIGRpY3QtbGlrZSBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlkX29iaiA9IFB5TWFwcGluZ19HZXRJdGVtU3RyaW5nKHNwZWMsICJpZCIpOworICAgIGlmIChpZF9vYmogPT0gTlVMTCkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmlsdGVyIHNwZWNpZmllciBtdXN0IGhhdmUgYW4gXCJpZFwiIGVudHJ5Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBmLT5pZCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcoaWRfb2JqKTsKKyAgICBQeV9ERUNSRUYoaWRfb2JqKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzd2l0Y2ggKGYtPmlkKSB7CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfTFpNQTE6CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfTFpNQTI6CisgICAgICAgICAgICBmLT5vcHRpb25zID0gcGFyc2VfZmlsdGVyX3NwZWNfbHptYShzcGVjKTsKKyAgICAgICAgICAgIHJldHVybiBmLT5vcHRpb25zOworICAgICAgICBjYXNlIExaTUFfRklMVEVSX0RFTFRBOgorICAgICAgICAgICAgZi0+b3B0aW9ucyA9IHBhcnNlX2ZpbHRlcl9zcGVjX2RlbHRhKHNwZWMpOworICAgICAgICAgICAgcmV0dXJuIGYtPm9wdGlvbnM7CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfWDg2OgorICAgICAgICBjYXNlIExaTUFfRklMVEVSX1BPV0VSUEM6CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfSUE2NDoKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9BUk06CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfQVJNVEhVTUI6CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfU1BBUkM6CisgICAgICAgICAgICBmLT5vcHRpb25zID0gcGFyc2VfZmlsdGVyX3NwZWNfYmNqKHNwZWMpOworICAgICAgICAgICAgcmV0dXJuIGYtPm9wdGlvbnM7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIkludmFsaWQgZmlsdGVyIElEOiAlbGx1IiwgZi0+aWQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorZnJlZV9maWx0ZXJfY2hhaW4obHptYV9maWx0ZXIgZmlsdGVyc1tdKQoreworICAgIGludCBpOworCisgICAgZm9yIChpID0gMDsgZmlsdGVyc1tpXS5pZCAhPSBMWk1BX1ZMSV9VTktOT1dOOyBpKyspCisgICAgICAgIFB5TWVtX0ZyZWUoZmlsdGVyc1tpXS5vcHRpb25zKTsKK30KKworc3RhdGljIGludAorcGFyc2VfZmlsdGVyX2NoYWluX3NwZWMobHptYV9maWx0ZXIgZmlsdGVyc1tdLCBQeU9iamVjdCAqZmlsdGVyc3BlY3MpCit7CisgICAgUHlfc3NpemVfdCBpLCBudW1fZmlsdGVyczsKKworICAgIG51bV9maWx0ZXJzID0gUHlTZXF1ZW5jZV9MZW5ndGgoZmlsdGVyc3BlY3MpOworICAgIGlmIChudW1fZmlsdGVycyA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChudW1fZmlsdGVycyA+IExaTUFfRklMVEVSU19NQVgpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiVG9vIG1hbnkgZmlsdGVycyAtIGxpYmx6bWEgc3VwcG9ydHMgYSBtYXhpbXVtIG9mICVkIiwKKyAgICAgICAgICAgICAgICAgICAgIExaTUFfRklMVEVSU19NQVgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IG51bV9maWx0ZXJzOyBpKyspIHsKKyAgICAgICAgaW50IG9rID0gMTsKKyAgICAgICAgUHlPYmplY3QgKnNwZWMgPSBQeVNlcXVlbmNlX0dldEl0ZW0oZmlsdGVyc3BlY3MsIGkpOworICAgICAgICBpZiAoc3BlYyA9PSBOVUxMIHx8IHBhcnNlX2ZpbHRlcl9zcGVjKCZmaWx0ZXJzW2ldLCBzcGVjKSA9PSBOVUxMKQorICAgICAgICAgICAgb2sgPSAwOworICAgICAgICBQeV9YREVDUkVGKHNwZWMpOworICAgICAgICBpZiAoIW9rKSB7CisgICAgICAgICAgICBmaWx0ZXJzW2ldLmlkID0gTFpNQV9WTElfVU5LTk9XTjsKKyAgICAgICAgICAgIGZyZWVfZmlsdGVyX2NoYWluKGZpbHRlcnMpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIGZpbHRlcnNbbnVtX2ZpbHRlcnNdLmlkID0gTFpNQV9WTElfVU5LTk9XTjsKKyAgICByZXR1cm4gMDsKK30KKworCisvKiBGaWx0ZXIgc3BlY2lmaWVyIGNvbnN0cnVjdGlvbi4KKworICAgVGhpcyBjb2RlIGhhbmRsZXMgY29udmVydGluZyBDIGx6bWFfZmlsdGVyIHN0cnVjdHMgaW50bworICAgUHl0aG9uLWxldmVsIGZpbHRlciBzcGVjaWZpZXJzIChyZXByZXNlbnRlZCBhcyBkaWN0cykuICovCisKK3N0YXRpYyBpbnQKK3NwZWNfYWRkX2ZpZWxkKFB5T2JqZWN0ICpzcGVjLCBfUHlfSWRlbnRpZmllciAqa2V5LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsdWUpCit7CisgICAgaW50IHN0YXR1czsKKyAgICBQeU9iamVjdCAqdmFsdWVfb2JqZWN0OworCisgICAgdmFsdWVfb2JqZWN0ID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHZhbHVlKTsKKyAgICBpZiAodmFsdWVfb2JqZWN0ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHN0YXR1cyA9IF9QeURpY3RfU2V0SXRlbUlkKHNwZWMsIGtleSwgdmFsdWVfb2JqZWN0KTsKKyAgICBQeV9ERUNSRUYodmFsdWVfb2JqZWN0KTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbGRfZmlsdGVyX3NwZWMoY29uc3QgbHptYV9maWx0ZXIgKmYpCit7CisgICAgUHlPYmplY3QgKnNwZWM7CisKKyAgICBzcGVjID0gUHlEaWN0X05ldygpOworICAgIGlmIChzcGVjID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisjZGVmaW5lIEFERF9GSUVMRChTT1VSQ0UsIEZJRUxEKSBcCisgICAgZG8geyBcCisgICAgICAgIF9QeV9JREVOVElGSUVSKEZJRUxEKTsgXAorICAgICAgICBpZiAoc3BlY19hZGRfZmllbGQoc3BlYywgJlB5SWRfIyNGSUVMRCwgU09VUkNFLT5GSUVMRCkgPT0gLTEpIFwKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7XAorICAgIH0gd2hpbGUgKDApCisKKyAgICBBRERfRklFTEQoZiwgaWQpOworCisgICAgc3dpdGNoIChmLT5pZCkgeworICAgICAgICAvKiBGb3IgTFpNQTEgZmlsdGVycywgbHptYV9wcm9wZXJ0aWVzX3tlbmNvZGUsZGVjb2RlfSgpIG9ubHkgbG9vayBhdCB0aGUKKyAgICAgICAgICAgbGMsIGxwLCBwYiwgYW5kIGRpY3Rfc2l6ZSBmaWVsZHMuIEZvciBMWk1BMiBmaWx0ZXJzLCBvbmx5IHRoZQorICAgICAgICAgICBkaWN0X3NpemUgZmllbGQgaXMgdXNlZC4gKi8KKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9MWk1BMTogeworICAgICAgICAgICAgbHptYV9vcHRpb25zX2x6bWEgKm9wdGlvbnMgPSBmLT5vcHRpb25zOworICAgICAgICAgICAgQUREX0ZJRUxEKG9wdGlvbnMsIGxjKTsKKyAgICAgICAgICAgIEFERF9GSUVMRChvcHRpb25zLCBscCk7CisgICAgICAgICAgICBBRERfRklFTEQob3B0aW9ucywgcGIpOworICAgICAgICAgICAgQUREX0ZJRUxEKG9wdGlvbnMsIGRpY3Rfc2l6ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIExaTUFfRklMVEVSX0xaTUEyOiB7CisgICAgICAgICAgICBsem1hX29wdGlvbnNfbHptYSAqb3B0aW9ucyA9IGYtPm9wdGlvbnM7CisgICAgICAgICAgICBBRERfRklFTEQob3B0aW9ucywgZGljdF9zaXplKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfREVMVEE6IHsKKyAgICAgICAgICAgIGx6bWFfb3B0aW9uc19kZWx0YSAqb3B0aW9ucyA9IGYtPm9wdGlvbnM7CisgICAgICAgICAgICBBRERfRklFTEQob3B0aW9ucywgZGlzdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIExaTUFfRklMVEVSX1g4NjoKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9QT1dFUlBDOgorICAgICAgICBjYXNlIExaTUFfRklMVEVSX0lBNjQ6CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfQVJNOgorICAgICAgICBjYXNlIExaTUFfRklMVEVSX0FSTVRIVU1COgorICAgICAgICBjYXNlIExaTUFfRklMVEVSX1NQQVJDOiB7CisgICAgICAgICAgICBsem1hX29wdGlvbnNfYmNqICpvcHRpb25zID0gZi0+b3B0aW9uczsKKyAgICAgICAgICAgIEFERF9GSUVMRChvcHRpb25zLCBzdGFydF9vZmZzZXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiSW52YWxpZCBmaWx0ZXIgSUQ6ICVsbHUiLCBmLT5pZCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworI3VuZGVmIEFERF9GSUVMRAorCisgICAgcmV0dXJuIHNwZWM7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihzcGVjKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworCisvKiBMWk1BQ29tcHJlc3NvciBjbGFzcy4gKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbXByZXNzKENvbXByZXNzb3IgKmMsIHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBsZW4sIGx6bWFfYWN0aW9uIGFjdGlvbikKK3sKKyAgICBzaXplX3QgZGF0YV9zaXplID0gMDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBJTklUSUFMX0JVRkZFUl9TSVpFKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGMtPmx6cy5uZXh0X2luID0gZGF0YTsKKyAgICBjLT5senMuYXZhaWxfaW4gPSBsZW47CisgICAgYy0+bHpzLm5leHRfb3V0ID0gKHVpbnQ4X3QgKilQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgIGMtPmx6cy5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCk7CisgICAgZm9yICg7OykgeworICAgICAgICBsem1hX3JldCBsenJldDsKKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGx6cmV0ID0gbHptYV9jb2RlKCZjLT5senMsIGFjdGlvbik7CisgICAgICAgIGRhdGFfc2l6ZSA9IChjaGFyICopYy0+bHpzLm5leHRfb3V0IC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKGNhdGNoX2x6bWFfZXJyb3IobHpyZXQpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKChhY3Rpb24gPT0gTFpNQV9SVU4gJiYgYy0+bHpzLmF2YWlsX2luID09IDApIHx8CisgICAgICAgICAgICAoYWN0aW9uID09IExaTUFfRklOSVNIICYmIGx6cmV0ID09IExaTUFfU1RSRUFNX0VORCkpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2UgaWYgKGMtPmx6cy5hdmFpbF9vdXQgPT0gMCkgeworICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpID09IC0xKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBjLT5senMubmV4dF9vdXQgPSAodWludDhfdCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkgKyBkYXRhX3NpemU7CisgICAgICAgICAgICBjLT5senMuYXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpIC0gZGF0YV9zaXplOworICAgICAgICB9CisgICAgfQorICAgIGlmIChkYXRhX3NpemUgIT0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpKQorICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIGRhdGFfc2l6ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIHJldHVybiByZXN1bHQ7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlEb2NfU1RSVkFSKENvbXByZXNzb3JfY29tcHJlc3NfZG9jLAorImNvbXByZXNzKGRhdGEpIC0+IGJ5dGVzXG4iCisiXG4iCisiUHJvdmlkZSBkYXRhIHRvIHRoZSBjb21wcmVzc29yIG9iamVjdC4gUmV0dXJucyBhIGNodW5rIG9mXG4iCisiY29tcHJlc3NlZCBkYXRhIGlmIHBvc3NpYmxlLCBvciBiXCJcIiBvdGhlcndpc2UuXG4iCisiXG4iCisiV2hlbiB5b3UgaGF2ZSBmaW5pc2hlZCBwcm92aWRpbmcgZGF0YSB0byB0aGUgY29tcHJlc3NvciwgY2FsbCB0aGVcbiIKKyJmbHVzaCgpIG1ldGhvZCB0byBmaW5pc2ggdGhlIGNvbnZlcnNpb24gcHJvY2Vzcy5cbiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorQ29tcHJlc3Nvcl9jb21wcmVzcyhDb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9idWZmZXIgYnVmZmVyOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kjpjb21wcmVzcyIsICZidWZmZXIpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKKyAgICBpZiAoc2VsZi0+Zmx1c2hlZCkKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJDb21wcmVzc29yIGhhcyBiZWVuIGZsdXNoZWQiKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IGNvbXByZXNzKHNlbGYsIGJ1ZmZlci5idWYsIGJ1ZmZlci5sZW4sIExaTUFfUlVOKTsKKyAgICBSRUxFQVNFX0xPQ0soc2VsZik7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQeURvY19TVFJWQVIoQ29tcHJlc3Nvcl9mbHVzaF9kb2MsCisiZmx1c2goKSAtPiBieXRlc1xuIgorIlxuIgorIkZpbmlzaCB0aGUgY29tcHJlc3Npb24gcHJvY2Vzcy4gUmV0dXJucyB0aGUgY29tcHJlc3NlZCBkYXRhIGxlZnRcbiIKKyJpbiBpbnRlcm5hbCBidWZmZXJzLlxuIgorIlxuIgorIlRoZSBjb21wcmVzc29yIG9iamVjdCBjYW5ub3QgYmUgdXNlZCBhZnRlciB0aGlzIG1ldGhvZCBpcyBjYWxsZWQuXG4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0NvbXByZXNzb3JfZmx1c2goQ29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKKyAgICBpZiAoc2VsZi0+Zmx1c2hlZCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIlJlcGVhdGVkIGNhbGwgdG8gZmx1c2goKSIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNlbGYtPmZsdXNoZWQgPSAxOworICAgICAgICByZXN1bHQgPSBjb21wcmVzcyhzZWxmLCBOVUxMLCAwLCBMWk1BX0ZJTklTSCk7CisgICAgfQorICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50CitDb21wcmVzc29yX2luaXRfeHoobHptYV9zdHJlYW0gKmx6cywgaW50IGNoZWNrLCB1aW50MzJfdCBwcmVzZXQsCisgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZpbHRlcnNwZWNzKQoreworICAgIGx6bWFfcmV0IGx6cmV0OworCisgICAgaWYgKGZpbHRlcnNwZWNzID09IFB5X05vbmUpIHsKKyAgICAgICAgbHpyZXQgPSBsem1hX2Vhc3lfZW5jb2RlcihsenMsIHByZXNldCwgY2hlY2spOworICAgIH0gZWxzZSB7CisgICAgICAgIGx6bWFfZmlsdGVyIGZpbHRlcnNbTFpNQV9GSUxURVJTX01BWCArIDFdOworCisgICAgICAgIGlmIChwYXJzZV9maWx0ZXJfY2hhaW5fc3BlYyhmaWx0ZXJzLCBmaWx0ZXJzcGVjcykgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGx6cmV0ID0gbHptYV9zdHJlYW1fZW5jb2RlcihsenMsIGZpbHRlcnMsIGNoZWNrKTsKKyAgICAgICAgZnJlZV9maWx0ZXJfY2hhaW4oZmlsdGVycyk7CisgICAgfQorICAgIGlmIChjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK0NvbXByZXNzb3JfaW5pdF9hbG9uZShsem1hX3N0cmVhbSAqbHpzLCB1aW50MzJfdCBwcmVzZXQsIFB5T2JqZWN0ICpmaWx0ZXJzcGVjcykKK3sKKyAgICBsem1hX3JldCBsenJldDsKKworICAgIGlmIChmaWx0ZXJzcGVjcyA9PSBQeV9Ob25lKSB7CisgICAgICAgIGx6bWFfb3B0aW9uc19sem1hIG9wdGlvbnM7CisKKyAgICAgICAgaWYgKGx6bWFfbHptYV9wcmVzZXQoJm9wdGlvbnMsIHByZXNldCkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChFcnJvciwgIkludmFsaWQgY29tcHJlc3Npb24gcHJlc2V0OiAlZCIsIHByZXNldCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgbHpyZXQgPSBsem1hX2Fsb25lX2VuY29kZXIobHpzLCAmb3B0aW9ucyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbHptYV9maWx0ZXIgZmlsdGVyc1tMWk1BX0ZJTFRFUlNfTUFYICsgMV07CisKKyAgICAgICAgaWYgKHBhcnNlX2ZpbHRlcl9jaGFpbl9zcGVjKGZpbHRlcnMsIGZpbHRlcnNwZWNzKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKGZpbHRlcnNbMF0uaWQgPT0gTFpNQV9GSUxURVJfTFpNQTEgJiYKKyAgICAgICAgICAgIGZpbHRlcnNbMV0uaWQgPT0gTFpNQV9WTElfVU5LTk9XTikgeworICAgICAgICAgICAgbHpyZXQgPSBsem1hX2Fsb25lX2VuY29kZXIobHpzLCBmaWx0ZXJzWzBdLm9wdGlvbnMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZmlsdGVyIGNoYWluIGZvciBGT1JNQVRfQUxPTkUgLSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBzaW5nbGUgTFpNQTEgZmlsdGVyIik7CisgICAgICAgICAgICBsenJldCA9IExaTUFfUFJPR19FUlJPUjsKKyAgICAgICAgfQorICAgICAgICBmcmVlX2ZpbHRlcl9jaGFpbihmaWx0ZXJzKTsKKyAgICB9CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkgfHwgY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitDb21wcmVzc29yX2luaXRfcmF3KGx6bWFfc3RyZWFtICpsenMsIFB5T2JqZWN0ICpmaWx0ZXJzcGVjcykKK3sKKyAgICBsem1hX2ZpbHRlciBmaWx0ZXJzW0xaTUFfRklMVEVSU19NQVggKyAxXTsKKyAgICBsem1hX3JldCBsenJldDsKKworICAgIGlmIChmaWx0ZXJzcGVjcyA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIk11c3Qgc3BlY2lmeSBmaWx0ZXJzIGZvciBGT1JNQVRfUkFXIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHBhcnNlX2ZpbHRlcl9jaGFpbl9zcGVjKGZpbHRlcnMsIGZpbHRlcnNwZWNzKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGx6cmV0ID0gbHptYV9yYXdfZW5jb2RlcihsenMsIGZpbHRlcnMpOworICAgIGZyZWVfZmlsdGVyX2NoYWluKGZpbHRlcnMpOworICAgIGlmIChjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK0NvbXByZXNzb3JfaW5pdChDb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqYXJnX25hbWVzW10gPSB7ImZvcm1hdCIsICJjaGVjayIsICJwcmVzZXQiLCAiZmlsdGVycyIsIE5VTEx9OworICAgIGludCBmb3JtYXQgPSBGT1JNQVRfWFo7CisgICAgaW50IGNoZWNrID0gLTE7CisgICAgdWludDMyX3QgcHJlc2V0ID0gTFpNQV9QUkVTRVRfREVGQVVMVDsKKyAgICBQeU9iamVjdCAqcHJlc2V0X29iaiA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKmZpbHRlcnNwZWNzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifGlpT086TFpNQUNvbXByZXNzb3IiLCBhcmdfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCwgJmNoZWNrLCAmcHJlc2V0X29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlsdGVyc3BlY3MpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoZm9ybWF0ICE9IEZPUk1BVF9YWiAmJiBjaGVjayAhPSAtMSAmJiBjaGVjayAhPSBMWk1BX0NIRUNLX05PTkUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZWdyaXR5IGNoZWNrcyBhcmUgb25seSBzdXBwb3J0ZWQgYnkgRk9STUFUX1haIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAocHJlc2V0X29iaiAhPSBQeV9Ob25lICYmIGZpbHRlcnNwZWNzICE9IFB5X05vbmUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgYm90aCBwcmVzZXQgYW5kIGZpbHRlciBjaGFpbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHByZXNldF9vYmogIT0gUHlfTm9uZSkKKyAgICAgICAgaWYgKCF1aW50MzJfY29udmVydGVyKHByZXNldF9vYmosICZwcmVzZXQpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworICAgIGlmIChzZWxmLT5sb2NrID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLCAiVW5hYmxlIHRvIGFsbG9jYXRlIGxvY2siKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyNlbmRpZgorCisgICAgc2VsZi0+Zmx1c2hlZCA9IDA7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgY2FzZSBGT1JNQVRfWFo6CisgICAgICAgICAgICBpZiAoY2hlY2sgPT0gLTEpCisgICAgICAgICAgICAgICAgY2hlY2sgPSBMWk1BX0NIRUNLX0NSQzY0OworICAgICAgICAgICAgaWYgKENvbXByZXNzb3JfaW5pdF94eigmc2VsZi0+bHpzLCBjaGVjaywgcHJlc2V0LCBmaWx0ZXJzcGVjcykgIT0gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGNhc2UgRk9STUFUX0FMT05FOgorICAgICAgICAgICAgaWYgKENvbXByZXNzb3JfaW5pdF9hbG9uZSgmc2VsZi0+bHpzLCBwcmVzZXQsIGZpbHRlcnNwZWNzKSAhPSAwKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY2FzZSBGT1JNQVRfUkFXOgorICAgICAgICAgICAgaWYgKENvbXByZXNzb3JfaW5pdF9yYXcoJnNlbGYtPmx6cywgZmlsdGVyc3BlY3MpICE9IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgY29udGFpbmVyIGZvcm1hdDogJWQiLCBmb3JtYXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7CisgICAgc2VsZi0+bG9jayA9IE5VTEw7CisjZW5kaWYKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyB2b2lkCitDb21wcmVzc29yX2RlYWxsb2MoQ29tcHJlc3NvciAqc2VsZikKK3sKKyAgICBsem1hX2VuZCgmc2VsZi0+bHpzKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmLT5sb2NrICE9IE5VTEwpCisgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKKyNlbmRpZgorICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBDb21wcmVzc29yX21ldGhvZHNbXSA9IHsKKyAgICB7ImNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKUNvbXByZXNzb3JfY29tcHJlc3MsIE1FVEhfVkFSQVJHUywKKyAgICAgQ29tcHJlc3Nvcl9jb21wcmVzc19kb2N9LAorICAgIHsiZmx1c2giLCAoUHlDRnVuY3Rpb24pQ29tcHJlc3Nvcl9mbHVzaCwgTUVUSF9OT0FSR1MsCisgICAgIENvbXByZXNzb3JfZmx1c2hfZG9jfSwKKyAgICB7TlVMTH0KK307CisKK1B5RG9jX1NUUlZBUihDb21wcmVzc29yX2RvYywKKyJMWk1BQ29tcHJlc3Nvcihmb3JtYXQ9Rk9STUFUX1haLCBjaGVjaz0tMSwgcHJlc2V0PU5vbmUsIGZpbHRlcnM9Tm9uZSlcbiIKKyJcbiIKKyJDcmVhdGUgYSBjb21wcmVzc29yIG9iamVjdCBmb3IgY29tcHJlc3NpbmcgZGF0YSBpbmNyZW1lbnRhbGx5LlxuIgorIlxuIgorImZvcm1hdCBzcGVjaWZpZXMgdGhlIGNvbnRhaW5lciBmb3JtYXQgdG8gdXNlIGZvciB0aGUgb3V0cHV0LiBUaGlzIGNhblxuIgorImJlIEZPUk1BVF9YWiAoZGVmYXVsdCksIEZPUk1BVF9BTE9ORSwgb3IgRk9STUFUX1JBVy5cbiIKKyJcbiIKKyJjaGVjayBzcGVjaWZpZXMgdGhlIGludGVncml0eSBjaGVjayB0byB1c2UuIEZvciBGT1JNQVRfWFosIHRoZSBkZWZhdWx0XG4iCisiaXMgQ0hFQ0tfQ1JDNjQuIEZPUk1BVF9BTE9ORSBhbmQgRk9STUFUX1JBVyBkbyBub3Qgc3Vwb3J0IGludGVncml0eVxuIgorImNoZWNrczsgZm9yIHRoZXNlIGZvcm1hdHMsIGNoZWNrIG11c3QgYmUgb21pdHRlZCwgb3IgYmUgQ0hFQ0tfTk9ORS5cbiIKKyJcbiIKKyJUaGUgc2V0dGluZ3MgdXNlZCBieSB0aGUgY29tcHJlc3NvciBjYW4gYmUgc3BlY2lmaWVkIGVpdGhlciBhcyBhXG4iCisicHJlc2V0IGNvbXByZXNzaW9uIGxldmVsICh3aXRoIHRoZSAncHJlc2V0JyBhcmd1bWVudCksIG9yIGluIGRldGFpbFxuIgorImFzIGEgY3VzdG9tIGZpbHRlciBjaGFpbiAod2l0aCB0aGUgJ2ZpbHRlcnMnIGFyZ3VtZW50KS4gRm9yIEZPUk1BVF9YWlxuIgorImFuZCBGT1JNQVRfQUxPTkUsIHRoZSBkZWZhdWx0IGlzIHRvIHVzZSB0aGUgUFJFU0VUX0RFRkFVTFQgcHJlc2V0XG4iCisibGV2ZWwuIEZvciBGT1JNQVRfUkFXLCB0aGUgY2FsbGVyIG11c3QgYWx3YXlzIHNwZWNpZnkgYSBmaWx0ZXIgY2hhaW47XG4iCisidGhlIHJhdyBjb21wcmVzc29yIGRvZXMgbm90IHN1cHBvcnQgcHJlc2V0IGNvbXByZXNzaW9uIGxldmVscy5cbiIKKyJcbiIKKyJwcmVzZXQgKGlmIHByb3ZpZGVkKSBzaG91bGQgYmUgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgMC05LCBvcHRpb25hbGx5XG4iCisiT1ItZWQgd2l0aCB0aGUgY29uc3RhbnQgUFJFU0VUX0VYVFJFTUUuXG4iCisiXG4iCisiZmlsdGVycyAoaWYgcHJvdmlkZWQpIHNob3VsZCBiZSBhIHNlcXVlbmNlIG9mIGRpY3RzLiBFYWNoIGRpY3Qgc2hvdWxkXG4iCisiaGF2ZSBhbiBlbnRyeSBmb3IgXCJpZFwiIGluZGljYXRpbmcgdGhlIElEIG9mIHRoZSBmaWx0ZXIsIHBsdXNcbiIKKyJhZGRpdGlvbmFsIGVudHJpZXMgZm9yIG9wdGlvbnMgdG8gdGhlIGZpbHRlci5cbiIKKyJcbiIKKyJGb3Igb25lLXNob3QgY29tcHJlc3Npb24sIHVzZSB0aGUgY29tcHJlc3MoKSBmdW5jdGlvbiBpbnN0ZWFkLlxuIik7CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgQ29tcHJlc3Nvcl90eXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfbHptYS5MWk1BQ29tcHJlc3NvciIsICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoQ29tcHJlc3NvciksICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0cnVjdG9yKUNvbXByZXNzb3JfZGVhbGxvYywgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBDb21wcmVzc29yX2RvYywgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIENvbXByZXNzb3JfbWV0aG9kcywgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKUNvbXByZXNzb3JfaW5pdCwgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKKy8qIExaTUFEZWNvbXByZXNzb3IgY2xhc3MuICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNvbXByZXNzKERlY29tcHJlc3NvciAqZCwgdWludDhfdCAqZGF0YSwgc2l6ZV90IGxlbikKK3sKKyAgICBzaXplX3QgZGF0YV9zaXplID0gMDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBJTklUSUFMX0JVRkZFUl9TSVpFKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGQtPmx6cy5uZXh0X2luID0gZGF0YTsKKyAgICBkLT5senMuYXZhaWxfaW4gPSBsZW47CisgICAgZC0+bHpzLm5leHRfb3V0ID0gKHVpbnQ4X3QgKilQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgIGQtPmx6cy5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCk7CisgICAgZm9yICg7OykgeworICAgICAgICBsem1hX3JldCBsenJldDsKKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGx6cmV0ID0gbHptYV9jb2RlKCZkLT5senMsIExaTUFfUlVOKTsKKyAgICAgICAgZGF0YV9zaXplID0gKGNoYXIgKilkLT5senMubmV4dF9vdXQgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAobHpyZXQgPT0gTFpNQV9HRVRfQ0hFQ0sgfHwgbHpyZXQgPT0gTFpNQV9OT19DSEVDSykKKyAgICAgICAgICAgIGQtPmNoZWNrID0gbHptYV9nZXRfY2hlY2soJmQtPmx6cyk7CisgICAgICAgIGlmIChsenJldCA9PSBMWk1BX1NUUkVBTV9FTkQpIHsKKyAgICAgICAgICAgIGQtPmVvZiA9IDE7CisgICAgICAgICAgICBpZiAoZC0+bHpzLmF2YWlsX2luID4gMCkgeworICAgICAgICAgICAgICAgIFB5X0NMRUFSKGQtPnVudXNlZF9kYXRhKTsKKyAgICAgICAgICAgICAgICBkLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoCisgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKWQtPmx6cy5uZXh0X2luLCBkLT5senMuYXZhaWxfaW4pOworICAgICAgICAgICAgICAgIGlmIChkLT51bnVzZWRfZGF0YSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0gZWxzZSBpZiAoZC0+bHpzLmF2YWlsX2luID09IDApIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2UgaWYgKGQtPmx6cy5hdmFpbF9vdXQgPT0gMCkgeworICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpID09IC0xKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBkLT5senMubmV4dF9vdXQgPSAodWludDhfdCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkgKyBkYXRhX3NpemU7CisgICAgICAgICAgICBkLT5senMuYXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpIC0gZGF0YV9zaXplOworICAgICAgICB9CisgICAgfQorICAgIGlmIChkYXRhX3NpemUgIT0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpKQorICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIGRhdGFfc2l6ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIHJldHVybiByZXN1bHQ7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlEb2NfU1RSVkFSKERlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2RvYywKKyJkZWNvbXByZXNzKGRhdGEpIC0+IGJ5dGVzXG4iCisiXG4iCisiUHJvdmlkZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LiBSZXR1cm5zIGEgY2h1bmsgb2ZcbiIKKyJkZWNvbXByZXNzZWQgZGF0YSBpZiBwb3NzaWJsZSwgb3IgYlwiXCIgb3RoZXJ3aXNlLlxuIgorIlxuIgorIkF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSBpc1xuIgorInJlYWNoZWQgcmFpc2VzIGFuIEVPRkVycm9yLiBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZVxuIgorInN0cmVhbSBpcyBpZ25vcmVkLCBhbmQgc2F2ZWQgaW4gdGhlIHVudXNlZF9kYXRhIGF0dHJpYnV0ZS5cbiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorRGVjb21wcmVzc29yX2RlY29tcHJlc3MoRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9idWZmZXIgYnVmZmVyOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjpkZWNvbXByZXNzIiwgJmJ1ZmZlcikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQUNRVUlSRV9MT0NLKHNlbGYpOworICAgIGlmIChzZWxmLT5lb2YpCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19FT0ZFcnJvciwgIkFscmVhZHkgYXQgZW5kIG9mIHN0cmVhbSIpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gZGVjb21wcmVzcyhzZWxmLCBidWZmZXIuYnVmLCBidWZmZXIubGVuKTsKKyAgICBSRUxFQVNFX0xPQ0soc2VsZik7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50CitEZWNvbXByZXNzb3JfaW5pdF9yYXcobHptYV9zdHJlYW0gKmx6cywgUHlPYmplY3QgKmZpbHRlcnNwZWNzKQoreworICAgIGx6bWFfZmlsdGVyIGZpbHRlcnNbTFpNQV9GSUxURVJTX01BWCArIDFdOworICAgIGx6bWFfcmV0IGx6cmV0OworCisgICAgaWYgKHBhcnNlX2ZpbHRlcl9jaGFpbl9zcGVjKGZpbHRlcnMsIGZpbHRlcnNwZWNzKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGx6cmV0ID0gbHptYV9yYXdfZGVjb2RlcihsenMsIGZpbHRlcnMpOworICAgIGZyZWVfZmlsdGVyX2NoYWluKGZpbHRlcnMpOworICAgIGlmIChjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK0RlY29tcHJlc3Nvcl9pbml0KERlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmFyZ19uYW1lc1tdID0geyJmb3JtYXQiLCAibWVtbGltaXQiLCAiZmlsdGVycyIsIE5VTEx9OworICAgIGNvbnN0IHVpbnQzMl90IGRlY29kZXJfZmxhZ3MgPSBMWk1BX1RFTExfQU5ZX0NIRUNLIHwgTFpNQV9URUxMX05PX0NIRUNLOworICAgIGludCBmb3JtYXQgPSBGT1JNQVRfQVVUTzsKKyAgICB1aW50NjRfdCBtZW1saW1pdCA9IFVJTlQ2NF9NQVg7CisgICAgUHlPYmplY3QgKm1lbWxpbWl0X29iaiA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKmZpbHRlcnNwZWNzID0gUHlfTm9uZTsKKyAgICBsem1hX3JldCBsenJldDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifGlPTzpMWk1BRGVjb21wcmVzc29yIiwgYXJnX25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsICZtZW1saW1pdF9vYmosICZmaWx0ZXJzcGVjcykpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChtZW1saW1pdF9vYmogIT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoZm9ybWF0ID09IEZPUk1BVF9SQVcpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3BlY2lmeSBtZW1vcnkgbGltaXQgd2l0aCBGT1JNQVRfUkFXIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgbWVtbGltaXQgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKG1lbWxpbWl0X29iaik7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChmb3JtYXQgPT0gRk9STUFUX1JBVyAmJiBmaWx0ZXJzcGVjcyA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIk11c3Qgc3BlY2lmeSBmaWx0ZXJzIGZvciBGT1JNQVRfUkFXIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgaWYgKGZvcm1hdCAhPSBGT1JNQVRfUkFXICYmIGZpbHRlcnNwZWNzICE9IFB5X05vbmUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgZmlsdGVycyBleGNlcHQgd2l0aCBGT1JNQVRfUkFXIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgaWYgKHNlbGYtPmxvY2sgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsICJVbmFibGUgdG8gYWxsb2NhdGUgbG9jayIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorI2VuZGlmCisKKyAgICBzZWxmLT5jaGVjayA9IExaTUFfQ0hFQ0tfVU5LTk9XTjsKKyAgICBzZWxmLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CisgICAgaWYgKHNlbGYtPnVudXNlZF9kYXRhID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAgICBjYXNlIEZPUk1BVF9BVVRPOgorICAgICAgICAgICAgbHpyZXQgPSBsem1hX2F1dG9fZGVjb2Rlcigmc2VsZi0+bHpzLCBtZW1saW1pdCwgZGVjb2Rlcl9mbGFncyk7CisgICAgICAgICAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjYXNlIEZPUk1BVF9YWjoKKyAgICAgICAgICAgIGx6cmV0ID0gbHptYV9zdHJlYW1fZGVjb2Rlcigmc2VsZi0+bHpzLCBtZW1saW1pdCwgZGVjb2Rlcl9mbGFncyk7CisgICAgICAgICAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjYXNlIEZPUk1BVF9BTE9ORToKKyAgICAgICAgICAgIHNlbGYtPmNoZWNrID0gTFpNQV9DSEVDS19OT05FOworICAgICAgICAgICAgbHpyZXQgPSBsem1hX2Fsb25lX2RlY29kZXIoJnNlbGYtPmx6cywgbWVtbGltaXQpOworICAgICAgICAgICAgaWYgKGNhdGNoX2x6bWFfZXJyb3IobHpyZXQpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY2FzZSBGT1JNQVRfUkFXOgorICAgICAgICAgICAgc2VsZi0+Y2hlY2sgPSBMWk1BX0NIRUNLX05PTkU7CisgICAgICAgICAgICBpZiAoRGVjb21wcmVzc29yX2luaXRfcmF3KCZzZWxmLT5senMsIGZpbHRlcnNwZWNzKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBjb250YWluZXIgZm9ybWF0OiAlZCIsIGZvcm1hdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKK2Vycm9yOgorICAgIFB5X0NMRUFSKHNlbGYtPnVudXNlZF9kYXRhKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKKyAgICBzZWxmLT5sb2NrID0gTlVMTDsKKyNlbmRpZgorICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIHZvaWQKK0RlY29tcHJlc3Nvcl9kZWFsbG9jKERlY29tcHJlc3NvciAqc2VsZikKK3sKKyAgICBsem1hX2VuZCgmc2VsZi0+bHpzKTsKKyAgICBQeV9DTEVBUihzZWxmLT51bnVzZWRfZGF0YSk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoc2VsZi0+bG9jayAhPSBOVUxMKQorICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7CisjZW5kaWYKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgRGVjb21wcmVzc29yX21ldGhvZHNbXSA9IHsKKyAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pRGVjb21wcmVzc29yX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywKKyAgICAgRGVjb21wcmVzc29yX2RlY29tcHJlc3NfZG9jfSwKKyAgICB7TlVMTH0KK307CisKK1B5RG9jX1NUUlZBUihEZWNvbXByZXNzb3JfY2hlY2tfZG9jLAorIklEIG9mIHRoZSBpbnRlZ3JpdHkgY2hlY2sgdXNlZCBieSB0aGUgaW5wdXQgc3RyZWFtLiIpOworCitQeURvY19TVFJWQVIoRGVjb21wcmVzc29yX2VvZl9kb2MsCisiVHJ1ZSBpZiB0aGUgZW5kLW9mLXN0cmVhbSBtYXJrZXIgaGFzIGJlZW4gcmVhY2hlZC4iKTsKKworUHlEb2NfU1RSVkFSKERlY29tcHJlc3Nvcl91bnVzZWRfZGF0YV9kb2MsCisiRGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBjb21wcmVzc2VkIHN0cmVhbS4iKTsKKworc3RhdGljIFB5TWVtYmVyRGVmIERlY29tcHJlc3Nvcl9tZW1iZXJzW10gPSB7CisgICAgeyJjaGVjayIsIFRfSU5ULCBvZmZzZXRvZihEZWNvbXByZXNzb3IsIGNoZWNrKSwgUkVBRE9OTFksCisgICAgIERlY29tcHJlc3Nvcl9jaGVja19kb2N9LAorICAgIHsiZW9mIiwgVF9CT09MLCBvZmZzZXRvZihEZWNvbXByZXNzb3IsIGVvZiksIFJFQURPTkxZLAorICAgICBEZWNvbXByZXNzb3JfZW9mX2RvY30sCisgICAgeyJ1bnVzZWRfZGF0YSIsIFRfT0JKRUNUX0VYLCBvZmZzZXRvZihEZWNvbXByZXNzb3IsIHVudXNlZF9kYXRhKSwgUkVBRE9OTFksCisgICAgIERlY29tcHJlc3Nvcl91bnVzZWRfZGF0YV9kb2N9LAorICAgIHtOVUxMfQorfTsKKworUHlEb2NfU1RSVkFSKERlY29tcHJlc3Nvcl9kb2MsCisiTFpNQURlY29tcHJlc3Nvcihmb3JtYXQ9Rk9STUFUX0FVVE8sIG1lbWxpbWl0PU5vbmUsIGZpbHRlcnM9Tm9uZSlcbiIKKyJcbiIKKyJDcmVhdGUgYSBkZWNvbXByZXNzb3Igb2JqZWN0IGZvciBkZWNvbXByZXNzaW5nIGRhdGEgaW5jcmVtZW50YWxseS5cbiIKKyJcbiIKKyJmb3JtYXQgc3BlY2lmaWVzIHRoZSBjb250YWluZXIgZm9ybWF0IG9mIHRoZSBpbnB1dCBzdHJlYW0uIElmIHRoaXMgaXNcbiIKKyJGT1JNQVRfQVVUTyAodGhlIGRlZmF1bHQpLCB0aGUgZGVjb21wcmVzc29yIHdpbGwgYXV0b21hdGljYWxseSBkZXRlY3RcbiIKKyJ3aGV0aGVyIHRoZSBpbnB1dCBpcyBGT1JNQVRfWFogb3IgRk9STUFUX0FMT05FLiBTdHJlYW1zIGNyZWF0ZWQgd2l0aFxuIgorIkZPUk1BVF9SQVcgY2Fubm90IGJlIGF1dG9kZXRlY3RlZC5cbiIKKyJcbiIKKyJtZW1saW1pdCBjYW4gYmUgc3BlY2lmaWVkIHRvIGxpbWl0IHRoZSBhbW91bnQgb2YgbWVtb3J5IHVzZWQgYnkgdGhlXG4iCisiZGVjb21wcmVzc29yLiBUaGlzIHdpbGwgY2F1c2UgZGVjb21wcmVzc2lvbiB0byBmYWlsIGlmIHRoZSBpbnB1dFxuIgorImNhbm5vdCBiZSBkZWNvbXByZXNzZWQgd2l0aGluIHRoZSBnaXZlbiBsaW1pdC5cbiIKKyJcbiIKKyJmaWx0ZXJzIHNwZWNpZmllcyBhIGN1c3RvbSBmaWx0ZXIgY2hhaW4uIFRoaXMgYXJndW1lbnQgaXMgcmVxdWlyZWQgZm9yXG4iCisiRk9STUFUX1JBVywgYW5kIG5vdCBhY2NlcHRlZCB3aXRoIGFueSBvdGhlciBmb3JtYXQuIFdoZW4gcHJvdmlkZWQsXG4iCisidGhpcyBzaG91bGQgYmUgYSBzZXF1ZW5jZSBvZiBkaWN0cywgZWFjaCBpbmRpY2F0aW5nIHRoZSBJRCBhbmQgb3B0aW9uc1xuIgorImZvciBhIHNpbmdsZSBmaWx0ZXIuXG4iCisiXG4iCisiRm9yIG9uZS1zaG90IGRlY29tcHJlc3Npb24sIHVzZSB0aGUgZGVjb21wcmVzcygpIGZ1bmN0aW9uIGluc3RlYWQuXG4iKTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBEZWNvbXByZXNzb3JfdHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2x6bWEuTFpNQURlY29tcHJlc3NvciIsICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKERlY29tcHJlc3NvciksICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3RvcilEZWNvbXByZXNzb3JfZGVhbGxvYywgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgRGVjb21wcmVzc29yX2RvYywgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBEZWNvbXByZXNzb3JfbWV0aG9kcywgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgRGVjb21wcmVzc29yX21lbWJlcnMsICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYylEZWNvbXByZXNzb3JfaW5pdCwgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworCisvKiBNb2R1bGUtbGV2ZWwgZnVuY3Rpb25zLiAqLworCitQeURvY19TVFJWQVIoaXNfY2hlY2tfc3VwcG9ydGVkX2RvYywKKyJpc19jaGVja19zdXBwb3J0ZWQoY2hlY2tfaWQpIC0+IGJvb2xcbiIKKyJcbiIKKyJUZXN0IHdoZXRoZXIgdGhlIGdpdmVuIGludGVncml0eSBjaGVjayBpcyBzdXBwb3J0ZWQuXG4iCisiXG4iCisiQWx3YXlzIHJldHVybnMgVHJ1ZSBmb3IgQ0hFQ0tfTk9ORSBhbmQgQ0hFQ0tfQ1JDMzIuXG4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2lzX2NoZWNrX3N1cHBvcnRlZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGNoZWNrX2lkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmlzX2NoZWNrX3N1cHBvcnRlZCIsICZjaGVja19pZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhsem1hX2NoZWNrX2lzX3N1cHBvcnRlZChjaGVja19pZCkpOworfQorCisKK1B5RG9jX1NUUlZBUihfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2RvYywKKyJfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKGZpbHRlcikgLT4gYnl0ZXNcbiIKKyJcbiIKKyJSZXR1cm4gYSBieXRlcyBvYmplY3QgZW5jb2RpbmcgdGhlIG9wdGlvbnMgKHByb3BlcnRpZXMpIG9mIHRoZSBmaWx0ZXJcbiIKKyJzcGVjaWZpZWQgYnkgKmZpbHRlciogKGEgZGljdCkuXG4iCisiXG4iCisiVGhlIHJlc3VsdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBmaWx0ZXIgSUQgaXRzZWxmLCBvbmx5IHRoZSBvcHRpb25zLlxuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqZmlsdGVyc3BlYzsKKyAgICBsem1hX2ZpbHRlciBmaWx0ZXI7CisgICAgbHptYV9yZXQgbHpyZXQ7CisgICAgdWludDMyX3QgZW5jb2RlZF9zaXplOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLCAmZmlsdGVyc3BlYykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHBhcnNlX2ZpbHRlcl9zcGVjKCZmaWx0ZXIsIGZpbHRlcnNwZWMpID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbHpyZXQgPSBsem1hX3Byb3BlcnRpZXNfc2l6ZSgmZW5jb2RlZF9zaXplLCAmZmlsdGVyKTsKKyAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGVuY29kZWRfc2l6ZSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgbHpyZXQgPSBsem1hX3Byb3BlcnRpZXNfZW5jb2RlKAorICAgICAgICAgICAgJmZpbHRlciwgKHVpbnQ4X3QgKilQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpKTsKKyAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBQeU1lbV9GcmVlKGZpbHRlci5vcHRpb25zKTsKKyAgICByZXR1cm4gcmVzdWx0OworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgUHlNZW1fRnJlZShmaWx0ZXIub3B0aW9ucyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworUHlEb2NfU1RSVkFSKF9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXNfZG9jLAorIl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoZmlsdGVyX2lkLCBlbmNvZGVkX3Byb3BzKSAtPiBkaWN0XG4iCisiXG4iCisiUmV0dXJuIGEgZGljdCBkZXNjcmliaW5nIGEgZmlsdGVyIHdpdGggSUQgKmZpbHRlcl9pZCosIGFuZCBvcHRpb25zXG4iCisiKHByb3BlcnRpZXMpIGRlY29kZWQgZnJvbSB0aGUgYnl0ZXMgb2JqZWN0ICplbmNvZGVkX3Byb3BzKi5cbiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfYnVmZmVyIGVuY29kZWRfcHJvcHM7CisgICAgbHptYV9maWx0ZXIgZmlsdGVyOworICAgIGx6bWFfcmV0IGx6cmV0OworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnkqOl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsem1hX3ZsaV9jb252ZXJ0ZXIsICZmaWx0ZXIuaWQsICZlbmNvZGVkX3Byb3BzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBsenJldCA9IGx6bWFfcHJvcGVydGllc19kZWNvZGUoCisgICAgICAgICAgICAmZmlsdGVyLCBOVUxMLCBlbmNvZGVkX3Byb3BzLmJ1ZiwgZW5jb2RlZF9wcm9wcy5sZW4pOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJmVuY29kZWRfcHJvcHMpOworICAgIGlmIChjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXN1bHQgPSBidWlsZF9maWx0ZXJfc3BlYygmZmlsdGVyKTsKKworICAgIC8qIFdlIHVzZSB2YW5pbGxhIGZyZWUoKSBoZXJlIGluc3RlYWQgb2YgUHlNZW1fRnJlZSgpIC0gZmlsdGVyLm9wdGlvbnMgd2FzCisgICAgICAgYWxsb2NhdGVkIGJ5IGx6bWFfcHJvcGVydGllc19kZWNvZGUoKSB1c2luZyB0aGUgZGVmYXVsdCBhbGxvY2F0b3IuICovCisgICAgZnJlZShmaWx0ZXIub3B0aW9ucyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKiBNb2R1bGUgaW5pdGlhbGl6YXRpb24uICovCisKK3N0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVfbWV0aG9kc1tdID0geworICAgIHsiaXNfY2hlY2tfc3VwcG9ydGVkIiwgKFB5Q0Z1bmN0aW9uKWlzX2NoZWNrX3N1cHBvcnRlZCwKKyAgICAgTUVUSF9WQVJBUkdTLCBpc19jaGVja19zdXBwb3J0ZWRfZG9jfSwKKyAgICB7Il9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLCAoUHlDRnVuY3Rpb24pX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcywKKyAgICAgTUVUSF9WQVJBUkdTLCBfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2RvY30sCisgICAgeyJfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwgKFB5Q0Z1bmN0aW9uKV9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMsCisgICAgIE1FVEhfVkFSQVJHUywgX2RlY29kZV9maWx0ZXJfcHJvcGVydGllc19kb2N9LAorICAgIHtOVUxMfQorfTsKKworc3RhdGljIFB5TW9kdWxlRGVmIF9sem1hbW9kdWxlID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAiX2x6bWEiLAorICAgIE5VTEwsCisgICAgLTEsCisgICAgbW9kdWxlX21ldGhvZHMsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKK307CisKKy8qIFNvbWUgb2Ygb3VyIGNvbnN0YW50cyBhcmUgbW9yZSB0aGFuIDMyIGJpdHMgd2lkZSwgc28gUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQKKyAgIHdvdWxkIG5vdCB3b3JrIGNvcnJlY3RseSBvbiBwbGF0Zm9ybXMgd2l0aCAzMi1iaXQgbG9uZ3MuICovCitzdGF0aWMgaW50Cittb2R1bGVfYWRkX2ludF9jb25zdGFudChQeU9iamVjdCAqbSwgY29uc3QgY2hhciAqbmFtZSwgUFlfTE9OR19MT05HIHZhbHVlKQoreworICAgIFB5T2JqZWN0ICpvID0gUHlMb25nX0Zyb21Mb25nTG9uZyh2YWx1ZSk7CisgICAgaWYgKG8gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgbmFtZSwgbykgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgUHlfREVDUkVGKG8pOworICAgIHJldHVybiAtMTsKK30KKworI2RlZmluZSBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBtYWNybykgXAorICAgIG1vZHVsZV9hZGRfaW50X2NvbnN0YW50KG0sICNtYWNybywgTFpNQV8gIyMgbWFjcm8pCisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX2x6bWEodm9pZCkKK3sKKyAgICBQeU9iamVjdCAqbTsKKworICAgIGVtcHR5X3R1cGxlID0gUHlUdXBsZV9OZXcoMCk7CisgICAgaWYgKGVtcHR5X3R1cGxlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmX2x6bWFtb2R1bGUpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZPUk1BVF9BVVRPKSA9PSAtMSB8fAorICAgICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGT1JNQVRfWFopID09IC0xIHx8CisgICAgICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZPUk1BVF9BTE9ORSkgPT0gLTEgfHwKKyAgICAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRk9STUFUX1JBVykgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgQ0hFQ0tfTk9ORSkgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgQ0hFQ0tfQ1JDMzIpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIENIRUNLX0NSQzY0KSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBDSEVDS19TSEEyNTYpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIENIRUNLX0lEX01BWCkgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgQ0hFQ0tfVU5LTk9XTikgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgRklMVEVSX0xaTUExKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBGSUxURVJfTFpNQTIpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIEZJTFRFUl9ERUxUQSkgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgRklMVEVSX1g4NikgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgRklMVEVSX0lBNjQpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIEZJTFRFUl9BUk0pID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIEZJTFRFUl9BUk1USFVNQikgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgRklMVEVSX1NQQVJDKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBGSUxURVJfUE9XRVJQQykgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgTUZfSEMzKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBNRl9IQzQpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIE1GX0JUMikgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgTUZfQlQzKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBNRl9CVDQpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIE1PREVfRkFTVCkgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgTU9ERV9OT1JNQUwpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIFBSRVNFVF9ERUZBVUxUKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBQUkVTRVRfRVhUUkVNRSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgRXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jKAorICAgICAgICAgICAgIl9sem1hLkxaTUFFcnJvciIsICJDYWxsIHRvIGxpYmx6bWEgZmFpbGVkLiIsIE5VTEwsIE5VTEwpOworICAgIGlmIChFcnJvciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoRXJyb3IpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkxaTUFFcnJvciIsIEVycm9yKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZDb21wcmVzc29yX3R5cGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoJkNvbXByZXNzb3JfdHlwZSk7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiTFpNQUNvbXByZXNzb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopJkNvbXByZXNzb3JfdHlwZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmRGVjb21wcmVzc29yX3R5cGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoJkRlY29tcHJlc3Nvcl90eXBlKTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJMWk1BRGVjb21wcmVzc29yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSZEZWNvbXByZXNzb3JfdHlwZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIG07Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5oIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAyZDVhYS4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNTI3ICswLDAgQEAKLS8qCi0gKiBEZWZpbml0aW9uIG9mIGEgYENvbm5lY3Rpb25gIHR5cGUuCi0gKiBVc2VkIGJ5IGBzb2NrZXRfY29ubmVjdGlvbi5jYCBhbmQgYHBpcGVfY29ubmVjdGlvbi5jYC4KLSAqCi0gKiBjb25uZWN0aW9uLmgKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrIC0tLSBzZWUgQ09QWUlORy50eHQKLSAqLwotCi0jaWZuZGVmIENPTk5FQ1RJT05fSAotI2RlZmluZSBDT05ORUNUSU9OX0gKLQotLyoKLSAqIFJlYWQvd3JpdGUgZmxhZ3MKLSAqLwotCi0jZGVmaW5lIFJFQURBQkxFIDEKLSNkZWZpbmUgV1JJVEFCTEUgMgotCi0jZGVmaW5lIENIRUNLX1JFQURBQkxFKHNlbGYpIFwKLSAgICBpZiAoIShzZWxmLT5mbGFncyAmIFJFQURBQkxFKSkgeyBcCi0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsICJjb25uZWN0aW9uIGlzIHdyaXRlLW9ubHkiKTsgXAotICAgIHJldHVybiBOVUxMOyBcCi0gICAgfQotCi0jZGVmaW5lIENIRUNLX1dSSVRBQkxFKHNlbGYpIFwKLSAgICBpZiAoIShzZWxmLT5mbGFncyAmIFdSSVRBQkxFKSkgeyBcCi0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsICJjb25uZWN0aW9uIGlzIHJlYWQtb25seSIpOyBcCi0gICAgcmV0dXJuIE5VTEw7IFwKLSAgICB9Ci0KLS8qCi0gKiBBbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24KLSAqLwotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCi17Ci0gICAgQ29ubmVjdGlvbk9iamVjdCAqc2VsZjsKLSAgICBIQU5ETEUgaGFuZGxlOwotICAgIEJPT0wgcmVhZGFibGUgPSBUUlVFLCB3cml0YWJsZSA9IFRSVUU7Ci0KLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImhhbmRsZSIsICJyZWFkYWJsZSIsICJ3cml0YWJsZSIsIE5VTEx9OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgRl9IQU5ETEUgInxpaSIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLCAmcmVhZGFibGUsICZ3cml0YWJsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSB8fCAoUHlfc3NpemVfdCloYW5kbGUgPCAwKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JT0Vycm9yLCAiaW52YWxpZCBoYW5kbGUgJXpkIiwKLSAgICAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KWhhbmRsZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmICghcmVhZGFibGUgJiYgIXdyaXRhYmxlKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImVpdGhlciByZWFkYWJsZSBvciB3cml0YWJsZSBtdXN0IGJlIHRydWUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgc2VsZiA9IFB5T2JqZWN0X05ldyhDb25uZWN0aW9uT2JqZWN0LCB0eXBlKTsKLSAgICBpZiAoc2VsZiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHNlbGYtPndlYWtyZWZsaXN0ID0gTlVMTDsKLSAgICBzZWxmLT5oYW5kbGUgPSBoYW5kbGU7Ci0gICAgc2VsZi0+ZmxhZ3MgPSAwOwotCi0gICAgaWYgKHJlYWRhYmxlKQotICAgICAgICBzZWxmLT5mbGFncyB8PSBSRUFEQUJMRTsKLSAgICBpZiAod3JpdGFibGUpCi0gICAgICAgIHNlbGYtPmZsYWdzIHw9IFdSSVRBQkxFOwotICAgIGFzc2VydChzZWxmLT5mbGFncyA+PSAxICYmIHNlbGYtPmZsYWdzIDw9IDMpOwotCi0gICAgcmV0dXJuIChQeU9iamVjdCopc2VsZjsKLX0KLQotc3RhdGljIHZvaWQKLWNvbm5lY3Rpb25fZGVhbGxvYyhDb25uZWN0aW9uT2JqZWN0KiBzZWxmKQotewotICAgIGlmIChzZWxmLT53ZWFrcmVmbGlzdCAhPSBOVUxMKQotICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKChQeU9iamVjdCopc2VsZik7Ci0KLSAgICBpZiAoc2VsZi0+aGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgQ0xPU0Uoc2VsZi0+aGFuZGxlKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICB9Ci0gICAgUHlPYmplY3RfRGVsKHNlbGYpOwotfQotCi0vKgotICogRnVuY3Rpb25zIGZvciB0cmFuc2ZlcnJpbmcgYnVmZmVycwotICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX3NlbmRieXRlcyhDb25uZWN0aW9uT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeV9idWZmZXIgcGJ1ZmZlcjsKLSAgICBjaGFyICpidWZmZXI7Ci0gICAgUHlfc3NpemVfdCBsZW5ndGgsIG9mZnNldD0wLCBzaXplPVBZX1NTSVpFX1RfTUlOOwotICAgIGludCByZXM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9SQlVGRkVSICIqfCIgRl9QWV9TU0laRV9UIEZfUFlfU1NJWkVfVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBidWZmZXIsICZvZmZzZXQsICZzaXplKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYnVmZmVyID0gcGJ1ZmZlci5idWY7Ci0gICAgbGVuZ3RoID0gcGJ1ZmZlci5sZW47Ci0KLSAgICBDSEVDS19XUklUQUJMRShzZWxmKTsgLyogWFhYIHJlbGVhc2UgYnVmZmVyIGluIGNhc2Ugb2YgZmFpbHVyZSAqLwotCi0gICAgaWYgKG9mZnNldCA8IDApIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1ZmZlcik7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAib2Zmc2V0IGlzIG5lZ2F0aXZlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAobGVuZ3RoIDwgb2Zmc2V0KSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWZmZXIpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImJ1ZmZlciBsZW5ndGggPCBvZmZzZXQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKHNpemUgPT0gUFlfU1NJWkVfVF9NSU4pIHsKLSAgICAgICAgc2l6ZSA9IGxlbmd0aCAtIG9mZnNldDsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoc2l6ZSA8IDApIHsKLSAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWZmZXIpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJzaXplIGlzIG5lZ2F0aXZlIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZSA+IGxlbmd0aCkgewotICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1ZmZlcik7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnVmZmVyIGxlbmd0aCA8IG9mZnNldCArIHNpemUiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmVzID0gY29ubl9zZW5kX3N0cmluZyhzZWxmLCBidWZmZXIgKyBvZmZzZXQsIHNpemUpOwotCi0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1ZmZlcik7Ci0gICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIG1wX1NldEVycm9yKFB5RXhjX0lPRXJyb3IsIHJlcyk7Ci0gICAgfQotCi0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX3JlY3ZieXRlcyhDb25uZWN0aW9uT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjaGFyICpmcmVlbWUgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgcmVzLCBtYXhsZW5ndGggPSBQWV9TU0laRV9UX01BWDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifCIgRl9QWV9TU0laRV9ULCAmbWF4bGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBDSEVDS19SRUFEQUJMRShzZWxmKTsKLQotICAgIGlmIChtYXhsZW5ndGggPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF4bGVuZ3RoIDwgMCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICByZXMgPSBjb25uX3JlY3Zfc3RyaW5nKHNlbGYsIHNlbGYtPmJ1ZmZlciwgQ09OTkVDVElPTl9CVUZGRVJfU0laRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZmcmVlbWUsIG1heGxlbmd0aCk7Ci0KLSAgICBpZiAocmVzIDwgMCkgewotICAgICAgICBpZiAocmVzID09IE1QX0JBRF9NRVNTQUdFX0xFTkdUSCkgewotICAgICAgICAgICAgaWYgKChzZWxmLT5mbGFncyAmIFdSSVRBQkxFKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgICAgIENMT1NFKHNlbGYtPmhhbmRsZSk7Ci0gICAgICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgICAgICBzZWxmLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc2VsZi0+ZmxhZ3MgPSBXUklUQUJMRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtcF9TZXRFcnJvcihQeUV4Y19JT0Vycm9yLCByZXMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChmcmVlbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzZWxmLT5idWZmZXIsIHJlcyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGZyZWVtZSwgcmVzKTsKLSAgICAgICAgICAgIFB5TWVtX0ZyZWUoZnJlZW1lKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX3JlY3ZieXRlc19pbnRvKENvbm5lY3Rpb25PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGNoYXIgKmZyZWVtZSA9IE5VTEwsICpidWZmZXIgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgcmVzLCBsZW5ndGgsIG9mZnNldCA9IDA7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0KLSAgICBDSEVDS19SRUFEQUJMRShzZWxmKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidyp8IiBGX1BZX1NTSVpFX1QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmb2Zmc2V0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBidWZmZXIgPSBwYnVmLmJ1ZjsKLSAgICBsZW5ndGggPSBwYnVmLmxlbjsKLQotICAgIGlmIChvZmZzZXQgPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgb2Zmc2V0Iik7Ci0gICAgICAgIGdvdG8gX2Vycm9yOwotICAgIH0KLQotICAgIGlmIChvZmZzZXQgPiBsZW5ndGgpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJvZmZzZXQgdG9vIGxhcmdlIik7Ci0gICAgICAgIGdvdG8gX2Vycm9yOwotICAgIH0KLQotICAgIHJlcyA9IGNvbm5fcmVjdl9zdHJpbmcoc2VsZiwgYnVmZmVyK29mZnNldCwgbGVuZ3RoLW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZmcmVlbWUsIFBZX1NTSVpFX1RfTUFYKTsKLQotICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgIGlmIChyZXMgPT0gTVBfQkFEX01FU1NBR0VfTEVOR1RIKSB7Ci0gICAgICAgICAgICBpZiAoKHNlbGYtPmZsYWdzICYgV1JJVEFCTEUpID09IDApIHsKLSAgICAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICAgICAgQ0xPU0Uoc2VsZi0+aGFuZGxlKTsKLSAgICAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgICAgIHNlbGYtPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzZWxmLT5mbGFncyA9IFdSSVRBQkxFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG1wX1NldEVycm9yKFB5RXhjX0lPRXJyb3IsIHJlcyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGZyZWVtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBQeUludF9Gcm9tU3NpemVfdChyZXMpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKEJ1ZmZlclRvb1Nob3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZfUkJVRkZFUiAiIyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZW1lLCByZXMpOwotICAgICAgICAgICAgUHlNZW1fRnJlZShmcmVlbWUpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChCdWZmZXJUb29TaG9ydCwgcmVzdWx0KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGdvdG8gX2Vycm9yOwotICAgICAgICB9Ci0gICAgfQotCi1fY2xlYW51cDoKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICByZXR1cm4gcmVzdWx0OwotCi1fZXJyb3I6Ci0gICAgcmVzdWx0ID0gTlVMTDsKLSAgICBnb3RvIF9jbGVhbnVwOwotfQotCi0vKgotICogRnVuY3Rpb25zIGZvciB0cmFuc2ZlcnJpbmcgb2JqZWN0cwotICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX3NlbmRfb2JqKENvbm5lY3Rpb25PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCi17Ci0gICAgY2hhciAqYnVmZmVyOwotICAgIGludCByZXM7Ci0gICAgUHlfc3NpemVfdCBsZW5ndGg7Ci0gICAgUHlPYmplY3QgKnBpY2tsZWRfc3RyaW5nID0gTlVMTDsKLQotICAgIENIRUNLX1dSSVRBQkxFKHNlbGYpOwotCi0gICAgcGlja2xlZF9zdHJpbmcgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHBpY2tsZV9kdW1wcywgb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNrbGVfcHJvdG9jb2wsIE5VTEwpOwotICAgIGlmICghcGlja2xlZF9zdHJpbmcpCi0gICAgICAgIGdvdG8gZmFpbHVyZTsKLQotICAgIGlmIChQeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZShwaWNrbGVkX3N0cmluZywgJmJ1ZmZlciwgJmxlbmd0aCkgPCAwKQotICAgICAgICBnb3RvIGZhaWx1cmU7Ci0KLSAgICByZXMgPSBjb25uX3NlbmRfc3RyaW5nKHNlbGYsIGJ1ZmZlciwgKGludClsZW5ndGgpOwotCi0gICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgbXBfU2V0RXJyb3IoUHlFeGNfSU9FcnJvciwgcmVzKTsKLSAgICAgICAgZ290byBmYWlsdXJlOwotICAgIH0KLQotICAgIFB5X1hERUNSRUYocGlja2xlZF9zdHJpbmcpOwotICAgIFB5X1JFVFVSTl9OT05FOwotCi0gIGZhaWx1cmU6Ci0gICAgUHlfWERFQ1JFRihwaWNrbGVkX3N0cmluZyk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX3JlY3Zfb2JqKENvbm5lY3Rpb25PYmplY3QgKnNlbGYpCi17Ci0gICAgY2hhciAqZnJlZW1lID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHJlczsKLSAgICBQeU9iamVjdCAqdGVtcCA9IE5VTEwsICpyZXN1bHQgPSBOVUxMOwotCi0gICAgQ0hFQ0tfUkVBREFCTEUoc2VsZik7Ci0KLSAgICByZXMgPSBjb25uX3JlY3Zfc3RyaW5nKHNlbGYsIHNlbGYtPmJ1ZmZlciwgQ09OTkVDVElPTl9CVUZGRVJfU0laRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZmcmVlbWUsIFBZX1NTSVpFX1RfTUFYKTsKLQotICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgIGlmIChyZXMgPT0gTVBfQkFEX01FU1NBR0VfTEVOR1RIKSB7Ci0gICAgICAgICAgICBpZiAoKHNlbGYtPmZsYWdzICYgV1JJVEFCTEUpID09IDApIHsKLSAgICAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICAgICAgQ0xPU0Uoc2VsZi0+aGFuZGxlKTsKLSAgICAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgICAgIHNlbGYtPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzZWxmLT5mbGFncyA9IFdSSVRBQkxFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG1wX1NldEVycm9yKFB5RXhjX0lPRXJyb3IsIHJlcyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGZyZWVtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICB0ZW1wID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzZWxmLT5idWZmZXIsIHJlcyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0ZW1wID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShmcmVlbWUsIHJlcyk7Ci0gICAgICAgICAgICBQeU1lbV9GcmVlKGZyZWVtZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAodGVtcCkKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhwaWNrbGVfbG9hZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCwgTlVMTCk7Ci0gICAgUHlfWERFQ1JFRih0ZW1wKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKgotICogT3RoZXIgZnVuY3Rpb25zCi0gKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLWNvbm5lY3Rpb25fcG9sbChDb25uZWN0aW9uT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqdGltZW91dF9vYmogPSBOVUxMOwotICAgIGRvdWJsZSB0aW1lb3V0ID0gMC4wOwotICAgIGludCByZXM7Ci0KLSAgICBDSEVDS19SRUFEQUJMRShzZWxmKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8iLCAmdGltZW91dF9vYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmICh0aW1lb3V0X29iaiA9PSBOVUxMKSB7Ci0gICAgICAgIHRpbWVvdXQgPSAwLjA7Ci0gICAgfSBlbHNlIGlmICh0aW1lb3V0X29iaiA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIHRpbWVvdXQgPSAtMS4wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJsb2NrIGZvcmV2ZXIgKi8KLSAgICB9IGVsc2UgewotICAgICAgICB0aW1lb3V0ID0gUHlGbG9hdF9Bc0RvdWJsZSh0aW1lb3V0X29iaik7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmICh0aW1lb3V0IDwgMC4wKQotICAgICAgICAgICAgdGltZW91dCA9IDAuMDsKLSAgICB9Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gY29ubl9wb2xsKHNlbGYsIHRpbWVvdXQsIF9zYXZlKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgc3dpdGNoIChyZXMpIHsKLSAgICBjYXNlIFRSVUU6Ci0gICAgICAgIFB5X1JFVFVSTl9UUlVFOwotICAgIGNhc2UgRkFMU0U6Ci0gICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gbXBfU2V0RXJyb3IoUHlFeGNfSU9FcnJvciwgcmVzKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX2ZpbGVubyhDb25uZWN0aW9uT2JqZWN0KiBzZWxmKQotewotICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsICJoYW5kbGUgaXMgaW52YWxpZCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5SW50X0Zyb21Mb25nKChsb25nKXNlbGYtPmhhbmRsZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX2Nsb3NlKENvbm5lY3Rpb25PYmplY3QgKnNlbGYpCi17Ci0gICAgaWYgKHNlbGYtPmhhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIENMT1NFKHNlbGYtPmhhbmRsZSk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIHNlbGYtPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotICAgIH0KLQotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9yZXByKENvbm5lY3Rpb25PYmplY3QgKnNlbGYpCi17Ci0gICAgc3RhdGljIGNoYXIgKmNvbm5fdHlwZVtdID0geyJyZWFkLW9ubHkiLCAid3JpdGUtb25seSIsICJyZWFkLXdyaXRlIn07Ci0KLSAgICBhc3NlcnQoc2VsZi0+ZmxhZ3MgPj0gMSAmJiBzZWxmLT5mbGFncyA8PSAzKTsKLSAgICByZXR1cm4gRlJPTV9GT1JNQVQoIjwlcyAlcywgaGFuZGxlICV6ZD4iLAotICAgICAgICAgICAgICAgICAgICAgICBjb25uX3R5cGVbc2VsZi0+ZmxhZ3MgLSAxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgQ09OTkVDVElPTl9OQU1FLCAoUHlfc3NpemVfdClzZWxmLT5oYW5kbGUpOwotfQotCi0vKgotICogR2V0dGVycyBhbmQgc2V0dGVycwotICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX2Nsb3NlZChDb25uZWN0aW9uT2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQotewotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9yZWFkYWJsZShDb25uZWN0aW9uT2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQotewotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpKHNlbGYtPmZsYWdzICYgUkVBREFCTEUpKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWNvbm5lY3Rpb25fd3JpdGFibGUoQ29ubmVjdGlvbk9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLXsKLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKShzZWxmLT5mbGFncyAmIFdSSVRBQkxFKSk7Ci19Ci0KLS8qCi0gKiBUYWJsZXMKLSAqLwotCi1zdGF0aWMgUHlNZXRob2REZWYgY29ubmVjdGlvbl9tZXRob2RzW10gPSB7Ci0gICAgeyJzZW5kX2J5dGVzIiwgKFB5Q0Z1bmN0aW9uKWNvbm5lY3Rpb25fc2VuZGJ5dGVzLCBNRVRIX1ZBUkFSR1MsCi0gICAgICJzZW5kIHRoZSBieXRlIGRhdGEgZnJvbSBhIHJlYWRhYmxlIGJ1ZmZlci1saWtlIG9iamVjdCJ9LAotICAgIHsicmVjdl9ieXRlcyIsIChQeUNGdW5jdGlvbiljb25uZWN0aW9uX3JlY3ZieXRlcywgTUVUSF9WQVJBUkdTLAotICAgICAicmVjZWl2ZSBieXRlIGRhdGEgYXMgYSBzdHJpbmcifSwKLSAgICB7InJlY3ZfYnl0ZXNfaW50byIsKFB5Q0Z1bmN0aW9uKWNvbm5lY3Rpb25fcmVjdmJ5dGVzX2ludG8sTUVUSF9WQVJBUkdTLAotICAgICAicmVjZWl2ZSBieXRlIGRhdGEgaW50byBhIHdyaXRlYWJsZSBidWZmZXItbGlrZSBvYmplY3RcbiIKLSAgICAgInJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyByZWFkIn0sCi0KLSAgICB7InNlbmQiLCAoUHlDRnVuY3Rpb24pY29ubmVjdGlvbl9zZW5kX29iaiwgTUVUSF9PLAotICAgICAic2VuZCBhIChwaWNrbGFibGUpIG9iamVjdCJ9LAotICAgIHsicmVjdiIsIChQeUNGdW5jdGlvbiljb25uZWN0aW9uX3JlY3Zfb2JqLCBNRVRIX05PQVJHUywKLSAgICAgInJlY2VpdmUgYSAocGlja2xhYmxlKSBvYmplY3QifSwKLQotICAgIHsicG9sbCIsIChQeUNGdW5jdGlvbiljb25uZWN0aW9uX3BvbGwsIE1FVEhfVkFSQVJHUywKLSAgICAgIndoZXRoZXIgdGhlcmUgaXMgYW55IGlucHV0IGF2YWlsYWJsZSB0byBiZSByZWFkIn0sCi0gICAgeyJmaWxlbm8iLCAoUHlDRnVuY3Rpb24pY29ubmVjdGlvbl9maWxlbm8sIE1FVEhfTk9BUkdTLAotICAgICAiZmlsZSBkZXNjcmlwdG9yIG9yIGhhbmRsZSBvZiB0aGUgY29ubmVjdGlvbiJ9LAotICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pY29ubmVjdGlvbl9jbG9zZSwgTUVUSF9OT0FSR1MsCi0gICAgICJjbG9zZSB0aGUgY29ubmVjdGlvbiJ9LAotCi0gICAge05VTEx9ICAvKiBTZW50aW5lbCAqLwotfTsKLQotc3RhdGljIFB5R2V0U2V0RGVmIGNvbm5lY3Rpb25fZ2V0c2V0W10gPSB7Ci0gICAgeyJjbG9zZWQiLCAoZ2V0dGVyKWNvbm5lY3Rpb25fY2xvc2VkLCBOVUxMLAotICAgICAiVHJ1ZSBpZiB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQiLCBOVUxMfSwKLSAgICB7InJlYWRhYmxlIiwgKGdldHRlciljb25uZWN0aW9uX3JlYWRhYmxlLCBOVUxMLAotICAgICAiVHJ1ZSBpZiB0aGUgY29ubmVjdGlvbiBpcyByZWFkYWJsZSIsIE5VTEx9LAotICAgIHsid3JpdGFibGUiLCAoZ2V0dGVyKWNvbm5lY3Rpb25fd3JpdGFibGUsIE5VTEwsCi0gICAgICJUcnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIHdyaXRhYmxlIiwgTlVMTH0sCi0gICAge05VTEx9Ci19OwotCi0vKgotICogQ29ubmVjdGlvbiB0eXBlCi0gKi8KLQotUHlEb2NfU1RSVkFSKGNvbm5lY3Rpb25fZG9jLAotICAgICAgICAgICAgICJDb25uZWN0aW9uIHR5cGUgd2hvc2UgY29uc3RydWN0b3Igc2lnbmF0dXJlIGlzXG5cbiIKLSAgICAgICAgICAgICAiICAgIENvbm5lY3Rpb24oaGFuZGxlLCByZWFkYWJsZT1UcnVlLCB3cml0YWJsZT1UcnVlKS5cblxuIgotICAgICAgICAgICAgICJUaGUgY29uc3RydWN0b3IgZG9lcyAqbm90KiBkdXBsaWNhdGUgdGhlIGhhbmRsZS4iKTsKLQotUHlUeXBlT2JqZWN0IENPTk5FQ1RJT05fVFlQRSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAvKiB0cF9uYW1lICAgICAgICAgICAqLyAiX211bHRpcHJvY2Vzc2luZy4iIENPTk5FQ1RJT05fTkFNRSwKLSAgICAvKiB0cF9iYXNpY3NpemUgICAgICAqLyBzaXplb2YoQ29ubmVjdGlvbk9iamVjdCksCi0gICAgLyogdHBfaXRlbXNpemUgICAgICAgKi8gMCwKLSAgICAvKiB0cF9kZWFsbG9jICAgICAgICAqLyAoZGVzdHJ1Y3Rvciljb25uZWN0aW9uX2RlYWxsb2MsCi0gICAgLyogdHBfcHJpbnQgICAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9nZXRhdHRyICAgICAgICAqLyAwLAotICAgIC8qIHRwX3NldGF0dHIgICAgICAgICovIDAsCi0gICAgLyogdHBfcmVzZXJ2ZWQgICAgICAgKi8gMCwKLSAgICAvKiB0cF9yZXByICAgICAgICAgICAqLyAocmVwcmZ1bmMpY29ubmVjdGlvbl9yZXByLAotICAgIC8qIHRwX2FzX251bWJlciAgICAgICovIDAsCi0gICAgLyogdHBfYXNfc2VxdWVuY2UgICAgKi8gMCwKLSAgICAvKiB0cF9hc19tYXBwaW5nICAgICAqLyAwLAotICAgIC8qIHRwX2hhc2ggICAgICAgICAgICovIDAsCi0gICAgLyogdHBfY2FsbCAgICAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9zdHIgICAgICAgICAgICAqLyAwLAotICAgIC8qIHRwX2dldGF0dHJvICAgICAgICovIDAsCi0gICAgLyogdHBfc2V0YXR0cm8gICAgICAgKi8gMCwKLSAgICAvKiB0cF9hc19idWZmZXIgICAgICAqLyAwLAotICAgIC8qIHRwX2ZsYWdzICAgICAgICAgICovIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RQRkxBR1NfSEFWRV9XRUFLUkVGUywKLSAgICAvKiB0cF9kb2MgICAgICAgICAgICAqLyBjb25uZWN0aW9uX2RvYywKLSAgICAvKiB0cF90cmF2ZXJzZSAgICAgICAqLyAwLAotICAgIC8qIHRwX2NsZWFyICAgICAgICAgICovIDAsCi0gICAgLyogdHBfcmljaGNvbXBhcmUgICAgKi8gMCwKLSAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLyBvZmZzZXRvZihDb25uZWN0aW9uT2JqZWN0LCB3ZWFrcmVmbGlzdCksCi0gICAgLyogdHBfaXRlciAgICAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9pdGVybmV4dCAgICAgICAqLyAwLAotICAgIC8qIHRwX21ldGhvZHMgICAgICAgICovIGNvbm5lY3Rpb25fbWV0aG9kcywKLSAgICAvKiB0cF9tZW1iZXJzICAgICAgICAqLyAwLAotICAgIC8qIHRwX2dldHNldCAgICAgICAgICovIGNvbm5lY3Rpb25fZ2V0c2V0LAotICAgIC8qIHRwX2Jhc2UgICAgICAgICAgICovIDAsCi0gICAgLyogdHBfZGljdCAgICAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9kZXNjcl9nZXQgICAgICAqLyAwLAotICAgIC8qIHRwX2Rlc2NyX3NldCAgICAgICovIDAsCi0gICAgLyogdHBfZGljdG9mZnNldCAgICAgKi8gMCwKLSAgICAvKiB0cF9pbml0ICAgICAgICAgICAqLyAwLAotICAgIC8qIHRwX2FsbG9jICAgICAgICAgICovIDAsCi0gICAgLyogdHBfbmV3ICAgICAgICAgICAgKi8gY29ubmVjdGlvbl9uZXcsCi19OwotCi0jZW5kaWYgLyogQ09OTkVDVElPTl9IICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmMgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmMKaW5kZXggZWUyNTBlMC4uZWIwNWM2MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jCisrKyBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYwpAQCAtMywyMCArMywxMyBAQAogICoKICAqIG11bHRpcHJvY2Vzc2luZy5jCiAgKgotICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyayAtLS0gc2VlIENPUFlJTkcudHh0CisgKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCisgKiBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiAgKi8KIAogI2luY2x1ZGUgIm11bHRpcHJvY2Vzc2luZy5oIgogCi0jaWYgKGRlZmluZWQoQ01TR19MRU4pICYmIGRlZmluZWQoU0NNX1JJR0hUUykpCi0gICAgI2RlZmluZSBIQVZFX0ZEX1RSQU5TRkVSIDEKLSNlbHNlCi0gICAgI2RlZmluZSBIQVZFX0ZEX1RSQU5TRkVSIDAKLSNlbmRpZgogCi1QeU9iamVjdCAqY3JlYXRlX3dpbjMyX25hbWVzcGFjZSh2b2lkKTsKLQotUHlPYmplY3QgKnBpY2tsZV9kdW1wcywgKnBpY2tsZV9sb2FkcywgKnBpY2tsZV9wcm90b2NvbDsKIFB5T2JqZWN0ICpQcm9jZXNzRXJyb3IsICpCdWZmZXJUb29TaG9ydDsKIAogLyoKQEAgLTQ5LDE2ICs0Miw2IEBACiAgICAgY2FzZSBNUF9NRU1PUllfRVJST1I6CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTVBfRU5EX09GX0ZJTEU6Ci0gICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfRU9GRXJyb3IpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1QX0VBUkxZX0VORF9PRl9GSUxFOgotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJnb3QgZW5kIG9mIGZpbGUgZHVyaW5nIG1lc3NhZ2UiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNUF9CQURfTUVTU0FHRV9MRU5HVEg6Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAiYmFkIG1lc3NhZ2UgbGVuZ3RoIik7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgTVBfRVhDRVBUSU9OX0hBU19CRUVOX1NFVDoKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTY4LDE3MCArNTEsODIgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotCi0vKgotICogV2luZG93cyBvbmx5Ci0gKi8KLQogI2lmZGVmIE1TX1dJTkRPV1MKLQotLyogT24gV2luZG93cyB3ZSBzZXQgYW4gZXZlbnQgdG8gc2lnbmFsIEN0cmwtQzsgY29tcGFyZSB3aXRoIHRpbWVtb2R1bGUuYyAqLwotCi1IQU5ETEUgc2lnaW50X2V2ZW50ID0gTlVMTDsKLQotc3RhdGljIEJPT0wgV0lOQVBJCi1Qcm9jZXNzaW5nQ3RybEhhbmRsZXIoRFdPUkQgZHdDdHJsVHlwZSkKLXsKLSAgICBTZXRFdmVudChzaWdpbnRfZXZlbnQpOwotICAgIHJldHVybiBGQUxTRTsKLX0KLQotLyoKLSAqIFVuaXggb25seQotICovCi0KLSNlbHNlIC8qICFNU19XSU5ET1dTICovCi0KLSNpZiBIQVZFX0ZEX1RSQU5TRkVSCi0KLS8qIEZ1bmN0aW9ucyBmb3IgdHJhbnNmZXJyaW5nIGZpbGUgZGVzY3JpcHRvcnMgYmV0d2VlbiBwcm9jZXNzZXMuCi0gICBSZWltcGxlbWVudHMgc29tZSBvZiB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZmRjcmVkCi0gICBtb2R1bGUgYXQgaHR0cDovL3d3dy5tY2EtbHRkLmNvbS9yZXNvdXJjZXMvZmRjcmVkXzEudGd6LiAqLwotLyogQmFzZWQgaW4gaHR0cDovL3Jlc2luLmNzb2Z0Lm5ldC9jZ2ktYmluL21hbi5jZ2k/c2VjdGlvbj0zJnRvcGljPUNNU0dfREFUQSAqLwotCiBzdGF0aWMgUHlPYmplY3QgKgotbXVsdGlwcm9jZXNzaW5nX3NlbmRmZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCittdWx0aXByb2Nlc3NpbmdfY2xvc2Vzb2NrZXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGludCBjb25uLCBmZCwgcmVzOwotICAgIHN0cnVjdCBpb3ZlYyBkdW1teV9pb3Y7Ci0gICAgY2hhciBkdW1teV9jaGFyOwotICAgIHN0cnVjdCBtc2doZHIgbXNnOwotICAgIHN0cnVjdCBjbXNnaGRyICpjbXNnOwotICAgIHVuaW9uIHsKLSAgICAgICAgc3RydWN0IGNtc2doZHIgaGRyOwotICAgICAgICB1bnNpZ25lZCBjaGFyIGJ1ZltDTVNHX1NQQUNFKHNpemVvZihpbnQpKV07Ci0gICAgfSBjbXNnYnVmOworICAgIEhBTkRMRSBoYW5kbGU7CisgICAgaW50IHJldDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWkiLCAmY29ubiwgJmZkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgIjpjbG9zZXNvY2tldCIgLCAmaGFuZGxlKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBkdW1teV9pb3YuaW92X2Jhc2UgPSAmZHVtbXlfY2hhcjsKLSAgICBkdW1teV9pb3YuaW92X2xlbiA9IDE7Ci0KLSAgICBtZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykpOwotICAgIG1zZy5tc2dfY29udHJvbCA9ICZjbXNnYnVmLmJ1ZjsKLSAgICBtc2cubXNnX2NvbnRyb2xsZW4gPSBzaXplb2YoY21zZ2J1Zi5idWYpOwotICAgIG1zZy5tc2dfaW92ID0gJmR1bW15X2lvdjsKLSAgICBtc2cubXNnX2lvdmxlbiA9IDE7Ci0KLSAgICBjbXNnID0gQ01TR19GSVJTVEhEUigmbXNnKTsKLSAgICBjbXNnLT5jbXNnX2xlbiA9IENNU0dfTEVOKHNpemVvZihpbnQpKTsKLSAgICBjbXNnLT5jbXNnX2xldmVsID0gU09MX1NPQ0tFVDsKLSAgICBjbXNnLT5jbXNnX3R5cGUgPSBTQ01fUklHSFRTOwotICAgICogKGludCAqKSBDTVNHX0RBVEEoY21zZykgPSBmZDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBzZW5kbXNnKGNvbm4sICZtc2csIDApOworICAgIHJldCA9IGNsb3Nlc29ja2V0KChTT0NLRVQpIGhhbmRsZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgIGlmIChyZXQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1tdWx0aXByb2Nlc3NpbmdfcmVjdmZkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK211bHRpcHJvY2Vzc2luZ19yZWN2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBpbnQgY29ubiwgZmQsIHJlczsKLSAgICBjaGFyIGR1bW15X2NoYXI7Ci0gICAgc3RydWN0IGlvdmVjIGR1bW15X2lvdjsKLSAgICBzdHJ1Y3QgbXNnaGRyIG1zZyA9IHswfTsKLSAgICBzdHJ1Y3QgY21zZ2hkciAqY21zZzsKLSAgICB1bmlvbiB7Ci0gICAgICAgIHN0cnVjdCBjbXNnaGRyIGhkcjsKLSAgICAgICAgdW5zaWduZWQgY2hhciBidWZbQ01TR19TUEFDRShzaXplb2YoaW50KSldOwotICAgIH0gY21zZ2J1ZjsKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIGludCBzaXplLCBucmVhZDsKKyAgICBQeU9iamVjdCAqYnVmOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiwgJmNvbm4pKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAiaTpyZWN2IiAsICZoYW5kbGUsICZzaXplKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBkdW1teV9pb3YuaW92X2Jhc2UgPSAmZHVtbXlfY2hhcjsKLSAgICBkdW1teV9pb3YuaW92X2xlbiA9IDE7Ci0KLSAgICBtZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykpOwotICAgIG1zZy5tc2dfY29udHJvbCA9ICZjbXNnYnVmLmJ1ZjsKLSAgICBtc2cubXNnX2NvbnRyb2xsZW4gPSBzaXplb2YoY21zZ2J1Zi5idWYpOwotICAgIG1zZy5tc2dfaW92ID0gJmR1bW15X2lvdjsKLSAgICBtc2cubXNnX2lvdmxlbiA9IDE7Ci0KLSAgICBjbXNnID0gQ01TR19GSVJTVEhEUigmbXNnKTsKLSAgICBjbXNnLT5jbXNnX2xldmVsID0gU09MX1NPQ0tFVDsKLSAgICBjbXNnLT5jbXNnX3R5cGUgPSBTQ01fUklHSFRTOwotICAgIGNtc2ctPmNtc2dfbGVuID0gQ01TR19MRU4oc2l6ZW9mKGludCkpOwotICAgIG1zZy5tc2dfY29udHJvbGxlbiA9IGNtc2ctPmNtc2dfbGVuOworICAgIGJ1ZiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CisgICAgaWYgKCFidWYpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IHJlY3Ztc2coY29ubiwgJm1zZywgMCk7CisgICAgbnJlYWQgPSByZWN2KChTT0NLRVQpIGhhbmRsZSwgUHlCeXRlc19BU19TVFJJTkcoYnVmKSwgc2l6ZSwgMCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotCi0gICAgaWYgKG1zZy5tc2dfY29udHJvbGxlbiA8IENNU0dfTEVOKHNpemVvZihpbnQpKSB8fAotICAgICAgICAoY21zZyA9IENNU0dfRklSU1RIRFIoJm1zZykpID09IE5VTEwgfHwKLSAgICAgICAgY21zZy0+Y21zZ19sZXZlbCAhPSBTT0xfU09DS0VUIHx8Ci0gICAgICAgIGNtc2ctPmNtc2dfdHlwZSAhPSBTQ01fUklHSFRTIHx8Ci0gICAgICAgIGNtc2ctPmNtc2dfbGVuIDwgQ01TR19MRU4oc2l6ZW9mKGludCkpKSB7Ci0gICAgICAgIC8qIElmIGF0IGxlYXN0IG9uZSBjb250cm9sIG1lc3NhZ2UgaXMgcHJlc2VudCwgdGhlcmUgc2hvdWxkIGJlCi0gICAgICAgICAgIG5vIHJvb20gZm9yIGFueSBmdXJ0aGVyIGRhdGEgaW4gdGhlIGJ1ZmZlci4gKi8KLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIk5vIGZpbGUgZGVzY3JpcHRvciByZWNlaXZlZCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAobnJlYWQgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihidWYpOworICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgV1NBR2V0TGFzdEVycm9yKCkpOwogICAgIH0KLQotICAgIGZkID0gKiAoaW50ICopIENNU0dfREFUQShjbXNnKTsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIGZkKTsKKyAgICBfUHlCeXRlc19SZXNpemUoJmJ1ZiwgbnJlYWQpOworICAgIHJldHVybiBidWY7CiB9CiAKLSNlbmRpZiAvKiBIQVZFX0ZEX1RSQU5TRkVSICovCi0KLSNlbmRpZiAvKiAhTVNfV0lORE9XUyAqLwotCi0KLS8qCi0gKiBBbGwgcGxhdGZvcm1zCi0gKi8KLQotc3RhdGljIFB5T2JqZWN0KgotbXVsdGlwcm9jZXNzaW5nX2FkZHJlc3Nfb2ZfYnVmZmVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQorc3RhdGljIFB5T2JqZWN0ICoKK211bHRpcHJvY2Vzc2luZ19zZW5kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICB2b2lkICpidWZmZXI7Ci0gICAgUHlfc3NpemVfdCBidWZmZXJfbGVuOworICAgIEhBTkRMRSBoYW5kbGU7CisgICAgUHlfYnVmZmVyIGJ1ZjsKKyAgICBpbnQgcmV0OwogCi0gICAgaWYgKFB5T2JqZWN0X0FzV3JpdGVCdWZmZXIob2JqLCAmYnVmZmVyLCAmYnVmZmVyX2xlbikgPCAwKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAieSo6c2VuZCIgLCAmaGFuZGxlLCAmYnVmKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTiIgRl9QWV9TU0laRV9ULAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tVm9pZFB0cihidWZmZXIpLCBidWZmZXJfbGVuKTsKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmV0ID0gc2VuZCgoU09DS0VUKSBoYW5kbGUsIGJ1Zi5idWYsIGJ1Zi5sZW4sIDApOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgV1NBR2V0TGFzdEVycm9yKCkpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocmV0KTsKIH0KIAorI2VuZGlmCiAKIC8qCiAgKiBGdW5jdGlvbiB0YWJsZQogICovCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVfbWV0aG9kc1tdID0gewotICAgIHsiYWRkcmVzc19vZl9idWZmZXIiLCBtdWx0aXByb2Nlc3NpbmdfYWRkcmVzc19vZl9idWZmZXIsIE1FVEhfTywKLSAgICAgImFkZHJlc3Nfb2ZfYnVmZmVyKG9iaikgLT4gaW50XG4iCi0gICAgICJSZXR1cm4gYWRkcmVzcyBvZiBvYmogYXNzdW1pbmcgb2JqIHN1cHBvcnRzIGJ1ZmZlciBpbnRlZmFjZSJ9LAotI2lmIEhBVkVfRkRfVFJBTlNGRVIKLSAgICB7InNlbmRmZCIsIG11bHRpcHJvY2Vzc2luZ19zZW5kZmQsIE1FVEhfVkFSQVJHUywKLSAgICAgInNlbmRmZChzb2NrZmQsIGZkKSAtPiBOb25lXG4iCi0gICAgICJTZW5kIGZpbGUgZGVzY3JpcHRvciBnaXZlbiBieSBmZCBvdmVyIHRoZSB1bml4IGRvbWFpbiBzb2NrZXRcbiIKLSAgICAgIndob3NlIGZpbGUgZGVjcmlwdG9yIGlzIHNvY2tmZCJ9LAotICAgIHsicmVjdmZkIiwgbXVsdGlwcm9jZXNzaW5nX3JlY3ZmZCwgTUVUSF9WQVJBUkdTLAotICAgICAicmVjdmZkKHNvY2tmZCkgLT4gZmRcbiIKLSAgICAgIlJlY2VpdmUgYSBmaWxlIGRlc2NyaXB0b3Igb3ZlciBhIHVuaXggZG9tYWluIHNvY2tldFxuIgotICAgICAid2hvc2UgZmlsZSBkZWNyaXB0b3IgaXMgc29ja2ZkIn0sCisjaWZkZWYgTVNfV0lORE9XUworICAgIHsiY2xvc2Vzb2NrZXQiLCBtdWx0aXByb2Nlc3NpbmdfY2xvc2Vzb2NrZXQsIE1FVEhfVkFSQVJHUywgIiJ9LAorICAgIHsicmVjdiIsIG11bHRpcHJvY2Vzc2luZ19yZWN2LCBNRVRIX1ZBUkFSR1MsICIifSwKKyAgICB7InNlbmQiLCBtdWx0aXByb2Nlc3Npbmdfc2VuZCwgTUVUSF9WQVJBUkdTLCAiIn0sCiAjZW5kaWYKICAgICB7TlVMTH0KIH07CkBAIC0yNTcsMjIgKzE1MiwxMyBAQAogUHlNT0RJTklUX0ZVTkMKIFB5SW5pdF9fbXVsdGlwcm9jZXNzaW5nKHZvaWQpCiB7Ci0gICAgUHlPYmplY3QgKm1vZHVsZSwgKnRlbXAsICp2YWx1ZTsKKyAgICBQeU9iamVjdCAqbW9kdWxlLCAqdGVtcCwgKnZhbHVlID0gTlVMTDsKIAogICAgIC8qIEluaXRpYWxpemUgbW9kdWxlICovCiAgICAgbW9kdWxlID0gUHlNb2R1bGVfQ3JlYXRlKCZtdWx0aXByb2Nlc3NpbmdfbW9kdWxlKTsKICAgICBpZiAoIW1vZHVsZSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAvKiBHZXQgY29weSBvZiBvYmplY3RzIGZyb20gcGlja2xlICovCi0gICAgdGVtcCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZShQSUNLTEVfTU9EVUxFKTsKLSAgICBpZiAoIXRlbXApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBpY2tsZV9kdW1wcyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGVtcCwgImR1bXBzIik7Ci0gICAgcGlja2xlX2xvYWRzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0ZW1wLCAibG9hZHMiKTsKLSAgICBwaWNrbGVfcHJvdG9jb2wgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRlbXAsICJISUdIRVNUX1BST1RPQ09MIik7Ci0gICAgUHlfWERFQ1JFRih0ZW1wKTsKLQogICAgIC8qIEdldCBjb3B5IG9mIEJ1ZmZlclRvb1Nob3J0ICovCiAgICAgdGVtcCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgibXVsdGlwcm9jZXNzaW5nIik7CiAgICAgaWYgKCF0ZW1wKQpAQCAtMjgwLDEyICsxNjYsNiBAQAogICAgIEJ1ZmZlclRvb1Nob3J0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0ZW1wLCAiQnVmZmVyVG9vU2hvcnQiKTsKICAgICBQeV9YREVDUkVGKHRlbXApOwogCi0gICAgLyogQWRkIGNvbm5lY3Rpb24gdHlwZSB0byBtb2R1bGUgKi8KLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZDb25uZWN0aW9uVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9JTkNSRUYoJkNvbm5lY3Rpb25UeXBlKTsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobW9kdWxlLCAiQ29ubmVjdGlvbiIsIChQeU9iamVjdCopJkNvbm5lY3Rpb25UeXBlKTsKLQogI2lmIGRlZmluZWQoTVNfV0lORE9XUykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAoZGVmaW5lZChIQVZFX1NFTV9PUEVOKSAmJiAhZGVmaW5lZChQT1NJWF9TRU1BUEhPUkVTX05PVF9FTkFCTEVEKSkKICAgICAvKiBBZGQgU2VtTG9jayB0eXBlIHRvIG1vZHVsZSAqLwpAQCAtMzA4LDMyICsxODgsNiBAQAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtb2R1bGUsICJTZW1Mb2NrIiwgKFB5T2JqZWN0KikmU2VtTG9ja1R5cGUpOwogI2VuZGlmCiAKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgLyogQWRkIFBpcGVDb25uZWN0aW9uIHRvIG1vZHVsZSAqLwotICAgIGlmIChQeVR5cGVfUmVhZHkoJlBpcGVDb25uZWN0aW9uVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9JTkNSRUYoJlBpcGVDb25uZWN0aW9uVHlwZSk7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG1vZHVsZSwgIlBpcGVDb25uZWN0aW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0KikmUGlwZUNvbm5lY3Rpb25UeXBlKTsKLQotICAgIC8qIEluaXRpYWxpemUgd2luMzIgY2xhc3MgYW5kIGFkZCB0byBtdWx0aXByb2Nlc3NpbmcgKi8KLSAgICB0ZW1wID0gY3JlYXRlX3dpbjMyX25hbWVzcGFjZSgpOwotICAgIGlmICghdGVtcCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG1vZHVsZSwgIndpbjMyIiwgdGVtcCk7Ci0KLSAgICAvKiBJbml0aWFsaXplIHRoZSBldmVudCBoYW5kbGUgdXNlZCB0byBzaWduYWwgQ3RybC1DICovCi0gICAgc2lnaW50X2V2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwgVFJVRSwgRkFMU0UsIE5VTEwpOwotICAgIGlmICghc2lnaW50X2V2ZW50KSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKCFTZXRDb25zb2xlQ3RybEhhbmRsZXIoUHJvY2Vzc2luZ0N0cmxIYW5kbGVyLCBUUlVFKSkgewotICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotI2VuZGlmCi0KICAgICAvKiBBZGQgY29uZmlndXJhdGlvbiBtYWNyb3MgKi8KICAgICB0ZW1wID0gUHlEaWN0X05ldygpOwogICAgIGlmICghdGVtcCkKQEAgLTM0Myw3ICsxOTcsNyBAQAogICAgIHZhbHVlID0gUHlfQnVpbGRWYWx1ZSgiaSIsIG5hbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7IFB5X0RFQ1JFRih0ZW1wKTsgcmV0dXJuIE5VTEw7IH0gICAgICAgICAgXAogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyh0ZW1wLCAjbmFtZSwgdmFsdWUpIDwgMCkgeyAgICAgICAgICAgXAotICAgICAgICBQeV9ERUNSRUYodGVtcCk7IFB5X0RFQ1JFRih2YWx1ZSk7IHJldHVybiBOVUxMOyB9ICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsgUHlfREVDUkVGKHZhbHVlKTsgcmV0dXJuIE5VTEw7IH0gICAgICAgICBcCiAgICAgUHlfREVDUkVGKHZhbHVlKQogCiAjaWYgZGVmaW5lZChIQVZFX1NFTV9PUEVOKSAmJiAhZGVmaW5lZChQT1NJWF9TRU1BUEhPUkVTX05PVF9FTkFCTEVEKQpAQCAtMzUyLDkgKzIwNiw2IEBACiAjaWZkZWYgSEFWRV9TRU1fVElNRURXQUlUCiAgICAgQUREX0ZMQUcoSEFWRV9TRU1fVElNRURXQUlUKTsKICNlbmRpZgotI2lmZGVmIEhBVkVfRkRfVFJBTlNGRVIKLSAgICBBRERfRkxBRyhIQVZFX0ZEX1RSQU5TRkVSKTsKLSNlbmRpZgogI2lmZGVmIEhBVkVfQlJPS0VOX1NFTV9HRVRWQUxVRQogICAgIEFERF9GTEFHKEhBVkVfQlJPS0VOX1NFTV9HRVRWQUxVRSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuaCBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuaAppbmRleCAxNDQyNWRlLi5lM2RlOWJhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmgKKysrIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5oCkBAIC0zLDEyICszLDYgQEAKIAogI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCiAKLSNpZmRlZiBfX3N1bgotLyogVGhlIGNvbnRyb2wgbWVzc2FnZSBBUEkgaXMgb25seSBhdmFpbGFibGUgb24gU29sYXJpcyAKLSAgIGlmIFhQRyA0LjIgb3IgbGF0ZXIgaXMgcmVxdWVzdGVkLiAqLwotI2RlZmluZSBfWE9QRU5fU09VUkNFIDUwMAotI2VuZGlmCi0KICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJweXRocmVhZC5oIgpAQCAtMjksMTAgKzIzLDYgQEAKICMgIGRlZmluZSBTRU1fVkFMVUVfTUFYIExPTkdfTUFYCiAjZWxzZQogIyAgaW5jbHVkZSA8ZmNudGwuaD4gICAgICAgICAgICAgICAgIC8qIE9fQ1JFQVQgYW5kIE9fRVhDTCAqLwotIyAgaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotIyAgaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotIyAgaW5jbHVkZSA8c3lzL3Vpby5oPgotIyAgaW5jbHVkZSA8YXJwYS9pbmV0Lmg+ICAgICAgICAgICAgIC8qIGh0b25sKCkgYW5kIG50b2hsKCkgKi8KICMgIGlmIGRlZmluZWQoSEFWRV9TRU1fT1BFTikgJiYgIWRlZmluZWQoUE9TSVhfU0VNQVBIT1JFU19OT1RfRU5BQkxFRCkKICMgICAgaW5jbHVkZSA8c2VtYXBob3JlLmg+CiAgICAgIHR5cGVkZWYgc2VtX3QgKlNFTV9IQU5ETEU7CkBAIC02NCwyMCArNTQsNiBAQAogCiAKIC8qCi0gKiBNYWtlIHN1cmUgUHlfc3NpemVfdCBhdmFpbGFibGUKLSAqLwotCi0jaWYgUFlfVkVSU0lPTl9IRVggPCAweDAyMDUwMDAwICYmICFkZWZpbmVkKFBZX1NTSVpFX1RfTUlOKQotICAgdHlwZWRlZiBpbnQgUHlfc3NpemVfdDsKLSMgIGRlZmluZSBQWV9TU0laRV9UX01BWCBJTlRfTUFYCi0jICBkZWZpbmUgUFlfU1NJWkVfVF9NSU4gSU5UX01JTgotIyAgZGVmaW5lIEZfUFlfU1NJWkVfVCAiaSIKLSMgIGRlZmluZSBQeUludF9Gcm9tU3NpemVfdChuKSBQeUludF9Gcm9tTG9uZygobG9uZyluKQotI2Vsc2UKLSMgIGRlZmluZSBGX1BZX1NTSVpFX1QgIm4iCi0jZW5kaWYKLQotLyoKICAqIEZvcm1hdCBjb2RlcwogICovCiAKQEAgLTEwNSwxMiArODEsNiBAQAogIyAgZGVmaW5lIFRfU0VNX0hBTkRMRSBUX1BPSU5URVIKICNlbmRpZgogCi0jaWYgUFlfVkVSU0lPTl9IRVggPj0gMHgwMzAwMDAwMAotIyAgZGVmaW5lIEZfUkJVRkZFUiAieSIKLSNlbHNlCi0jICBkZWZpbmUgRl9SQlVGRkVSICJzIgotI2VuZGlmCi0KIC8qCiAgKiBFcnJvciBjb2RlcyB3aGljaCBjYW4gYmUgcmV0dXJuZWQgYnkgZnVuY3Rpb25zIGNhbGxlZCB3aXRob3V0IEdJTAogICovCkBAIC0xMTgsMTEgKzg4LDggQEAKICNkZWZpbmUgTVBfU1VDQ0VTUyAoMCkKICNkZWZpbmUgTVBfU1RBTkRBUkRfRVJST1IgKC0xKQogI2RlZmluZSBNUF9NRU1PUllfRVJST1IgKC0xMDAxKQotI2RlZmluZSBNUF9FTkRfT0ZfRklMRSAoLTEwMDIpCi0jZGVmaW5lIE1QX0VBUkxZX0VORF9PRl9GSUxFICgtMTAwMykKLSNkZWZpbmUgTVBfQkFEX01FU1NBR0VfTEVOR1RIICgtMTAwNCkKLSNkZWZpbmUgTVBfU09DS0VUX0VSUk9SICgtMTAwNSkKLSNkZWZpbmUgTVBfRVhDRVBUSU9OX0hBU19CRUVOX1NFVCAoLTEwMDYpCisjZGVmaW5lIE1QX1NPQ0tFVF9FUlJPUiAoLTEwMDIpCisjZGVmaW5lIE1QX0VYQ0VQVElPTl9IQVNfQkVFTl9TRVQgKC0xMDAzKQogCiBQeU9iamVjdCAqbXBfU2V0RXJyb3IoUHlPYmplY3QgKlR5cGUsIGludCBudW0pOwogCkBAIC0xMzAsNTcgKzk3LDE0IEBACiAgKiBFeHRlcm5zIC0gbm90IGFsbCB3aWxsIHJlYWxseSBleGlzdCBvbiBhbGwgcGxhdGZvcm1zCiAgKi8KIAotZXh0ZXJuIFB5T2JqZWN0ICpwaWNrbGVfZHVtcHM7Ci1leHRlcm4gUHlPYmplY3QgKnBpY2tsZV9sb2FkczsKLWV4dGVybiBQeU9iamVjdCAqcGlja2xlX3Byb3RvY29sOwogZXh0ZXJuIFB5T2JqZWN0ICpCdWZmZXJUb29TaG9ydDsKIGV4dGVybiBQeVR5cGVPYmplY3QgU2VtTG9ja1R5cGU7Ci1leHRlcm4gUHlUeXBlT2JqZWN0IENvbm5lY3Rpb25UeXBlOwogZXh0ZXJuIFB5VHlwZU9iamVjdCBQaXBlQ29ubmVjdGlvblR5cGU7Ci1leHRlcm4gSEFORExFIHNpZ2ludF9ldmVudDsKLQotLyoKLSAqIFB5M2sgY29tcGF0aWJpbGl0eQotICovCi0KLSNpZiBQWV9WRVJTSU9OX0hFWCA+PSAweDAzMDAwMDAwCi0jICBkZWZpbmUgUElDS0xFX01PRFVMRSAicGlja2xlIgotIyAgZGVmaW5lIEZST01fRk9STUFUIFB5VW5pY29kZV9Gcm9tRm9ybWF0Ci0jICBkZWZpbmUgUHlJbnRfRnJvbUxvbmcgUHlMb25nX0Zyb21Mb25nCi0jICBkZWZpbmUgUHlJbnRfRnJvbVNzaXplX3QgUHlMb25nX0Zyb21Tc2l6ZV90Ci0jZWxzZQotIyAgZGVmaW5lIFBJQ0tMRV9NT0RVTEUgImNQaWNrbGUiCi0jICBkZWZpbmUgRlJPTV9GT1JNQVQgUHlTdHJpbmdfRnJvbUZvcm1hdAotI2VuZGlmCi0KLSNpZm5kZWYgUHlWYXJPYmplY3RfSEVBRF9JTklUCi0jICBkZWZpbmUgUHlWYXJPYmplY3RfSEVBRF9JTklUKHR5cGUsIHNpemUpIFB5T2JqZWN0X0hFQURfSU5JVCh0eXBlKSBzaXplLAotI2VuZGlmCi0KLSNpZm5kZWYgUHlfVFBGTEFHU19IQVZFX1dFQUtSRUZTCi0jICBkZWZpbmUgUHlfVFBGTEFHU19IQVZFX1dFQUtSRUZTIDAKLSNlbmRpZgotCi0vKgotICogQ29ubmVjdGlvbiBkZWZpbml0aW9uCi0gKi8KLQotI2RlZmluZSBDT05ORUNUSU9OX0JVRkZFUl9TSVpFIDEwMjQKLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5T2JqZWN0X0hFQUQKLSAgICBIQU5ETEUgaGFuZGxlOwotICAgIGludCBmbGFnczsKLSAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7Ci0gICAgY2hhciBidWZmZXJbQ09OTkVDVElPTl9CVUZGRVJfU0laRV07Ci19IENvbm5lY3Rpb25PYmplY3Q7CiAKIC8qCiAgKiBNaXNjZWxsYW5lb3VzCiAgKi8KIAotI2RlZmluZSBNQVhfTUVTU0FHRV9MRU5HVEggMHg3ZmZmZmZmZgotCiAjaWZuZGVmIE1JTgogIyAgZGVmaW5lIE1JTih4LCB5KSAoKHgpIDwgKHkpID8geCA6IHkpCiAjICBkZWZpbmUgTUFYKHgsIHkpICgoeCkgPiAoeSkgPyB4IDogeSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9waXBlX2Nvbm5lY3Rpb24uYyBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9waXBlX2Nvbm5lY3Rpb24uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVkZGUwYy4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvcGlwZV9jb25uZWN0aW9uLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotLyoKLSAqIEEgdHlwZSB3aGljaCB3cmFwcyBhIHBpcGUgaGFuZGxlIGluIG1lc3NhZ2Ugb3JpZW50ZWQgbW9kZQotICoKLSAqIHBpcGVfY29ubmVjdGlvbi5jCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyayAtLS0gc2VlIENPUFlJTkcudHh0Ci0gKi8KLQotI2luY2x1ZGUgIm11bHRpcHJvY2Vzc2luZy5oIgotCi0jZGVmaW5lIENMT1NFKGgpIENsb3NlSGFuZGxlKGgpCi0KLS8qCi0gKiBTZW5kIHN0cmluZyB0byB0aGUgcGlwZTsgYXNzdW1lcyBpbiBtZXNzYWdlIG9yaWVudGVkIG1vZGUKLSAqLwotCi1zdGF0aWMgUHlfc3NpemVfdAotY29ubl9zZW5kX3N0cmluZyhDb25uZWN0aW9uT2JqZWN0ICpjb25uLCBjaGFyICpzdHJpbmcsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgRFdPUkQgYW1vdW50X3dyaXR0ZW47Ci0gICAgQk9PTCByZXQ7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmV0ID0gV3JpdGVGaWxlKGNvbm4tPmhhbmRsZSwgc3RyaW5nLCBsZW5ndGgsICZhbW91bnRfd3JpdHRlbiwgTlVMTCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmIChyZXQgPT0gMCAmJiBHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9OT19TWVNURU1fUkVTT1VSQ0VTKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiQ2Fubm5vdCBzZW5kICUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgYnl0ZXMgb3ZlciBjb25uZWN0aW9uIiwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIE1QX1NUQU5EQVJEX0VSUk9SOwotICAgIH0KLQotICAgIHJldHVybiByZXQgPyBNUF9TVUNDRVNTIDogTVBfU1RBTkRBUkRfRVJST1I7Ci19Ci0KLS8qCi0gKiBBdHRlbXB0cyB0byByZWFkIGludG8gYnVmZmVyLCBvciBpZiBidWZmZXIgdG9vIHNtYWxsIGludG8gKm5ld2J1ZmZlci4KLSAqCi0gKiBSZXR1cm5zIG51bWJlciBvZiBieXRlcyByZWFkLiAgQXNzdW1lcyBpbiBtZXNzYWdlIG9yaWVudGVkIG1vZGUuCi0gKi8KLQotc3RhdGljIFB5X3NzaXplX3QKLWNvbm5fcmVjdl9zdHJpbmcoQ29ubmVjdGlvbk9iamVjdCAqY29ubiwgY2hhciAqYnVmZmVyLAotICAgICAgICAgICAgICAgICBzaXplX3QgYnVmbGVuZ3RoLCBjaGFyICoqbmV3YnVmZmVyLCBzaXplX3QgbWF4bGVuZ3RoKQotewotICAgIERXT1JEIGxlZnQsIGxlbmd0aCwgZnVsbF9sZW5ndGgsIGVycjsKLSAgICBCT09MIHJldDsKLSAgICAqbmV3YnVmZmVyID0gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXQgPSBSZWFkRmlsZShjb25uLT5oYW5kbGUsIGJ1ZmZlciwgTUlOKGJ1Zmxlbmd0aCwgbWF4bGVuZ3RoKSwKLSAgICAgICAgICAgICAgICAgICZsZW5ndGgsIE5VTEwpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJldCkKLSAgICAgICAgcmV0dXJuIGxlbmd0aDsKLQotICAgIGVyciA9IEdldExhc3RFcnJvcigpOwotICAgIGlmIChlcnIgIT0gRVJST1JfTU9SRV9EQVRBKSB7Ci0gICAgICAgIGlmIChlcnIgPT0gRVJST1JfQlJPS0VOX1BJUEUpCi0gICAgICAgICAgICByZXR1cm4gTVBfRU5EX09GX0ZJTEU7Ci0gICAgICAgIHJldHVybiBNUF9TVEFOREFSRF9FUlJPUjsKLSAgICB9Ci0KLSAgICBpZiAoIVBlZWtOYW1lZFBpcGUoY29ubi0+aGFuZGxlLCBOVUxMLCAwLCBOVUxMLCBOVUxMLCAmbGVmdCkpCi0gICAgICAgIHJldHVybiBNUF9TVEFOREFSRF9FUlJPUjsKLQotICAgIGZ1bGxfbGVuZ3RoID0gbGVuZ3RoICsgbGVmdDsKLSAgICBpZiAoZnVsbF9sZW5ndGggPiBtYXhsZW5ndGgpCi0gICAgICAgIHJldHVybiBNUF9CQURfTUVTU0FHRV9MRU5HVEg7Ci0KLSAgICAqbmV3YnVmZmVyID0gUHlNZW1fTWFsbG9jKGZ1bGxfbGVuZ3RoKTsKLSAgICBpZiAoKm5ld2J1ZmZlciA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTVBfTUVNT1JZX0VSUk9SOwotCi0gICAgbWVtY3B5KCpuZXdidWZmZXIsIGJ1ZmZlciwgbGVuZ3RoKTsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXQgPSBSZWFkRmlsZShjb25uLT5oYW5kbGUsICpuZXdidWZmZXIrbGVuZ3RoLCBsZWZ0LCAmbGVuZ3RoLCBOVUxMKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXQpIHsKLSAgICAgICAgYXNzZXJ0KGxlbmd0aCA9PSBsZWZ0KTsKLSAgICAgICAgcmV0dXJuIGZ1bGxfbGVuZ3RoOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5TWVtX0ZyZWUoKm5ld2J1ZmZlcik7Ci0gICAgICAgIHJldHVybiBNUF9TVEFOREFSRF9FUlJPUjsKLSAgICB9Ci19Ci0KLS8qCi0gKiBDaGVjayB3aGV0aGVyIGFueSBkYXRhIGlzIGF2YWlsYWJsZSBmb3IgcmVhZGluZwotICovCi0KLXN0YXRpYyBpbnQKLWNvbm5fcG9sbChDb25uZWN0aW9uT2JqZWN0ICpjb25uLCBkb3VibGUgdGltZW91dCwgUHlUaHJlYWRTdGF0ZSAqX3NhdmUpCi17Ci0gICAgRFdPUkQgYnl0ZXMsIGRlYWRsaW5lLCBkZWxheTsKLSAgICBpbnQgZGlmZmVyZW5jZSwgcmVzOwotICAgIEJPT0wgYmxvY2sgPSBGQUxTRTsKLQotICAgIGlmICghUGVla05hbWVkUGlwZShjb25uLT5oYW5kbGUsIE5VTEwsIDAsIE5VTEwsICZieXRlcywgTlVMTCkpCi0gICAgICAgIHJldHVybiBNUF9TVEFOREFSRF9FUlJPUjsKLQotICAgIGlmICh0aW1lb3V0ID09IDAuMCkKLSAgICAgICAgcmV0dXJuIGJ5dGVzID4gMDsKLQotICAgIGlmICh0aW1lb3V0IDwgMC4wKQotICAgICAgICBibG9jayA9IFRSVUU7Ci0gICAgZWxzZQotICAgICAgICAvKiBYWFggZG9lcyBub3QgY2hlY2sgZm9yIG92ZXJmbG93ICovCi0gICAgICAgIGRlYWRsaW5lID0gR2V0VGlja0NvdW50KCkgKyAoRFdPUkQpKDEwMDAgKiB0aW1lb3V0ICsgMC41KTsKLQotICAgIFNsZWVwKDApOwotCi0gICAgZm9yIChkZWxheSA9IDEgOyA7IGRlbGF5ICs9IDEpIHsKLSAgICAgICAgaWYgKCFQZWVrTmFtZWRQaXBlKGNvbm4tPmhhbmRsZSwgTlVMTCwgMCwgTlVMTCwgJmJ5dGVzLCBOVUxMKSkKLSAgICAgICAgICAgIHJldHVybiBNUF9TVEFOREFSRF9FUlJPUjsKLSAgICAgICAgZWxzZSBpZiAoYnl0ZXMgPiAwKQotICAgICAgICAgICAgcmV0dXJuIFRSVUU7Ci0KLSAgICAgICAgaWYgKCFibG9jaykgewotICAgICAgICAgICAgZGlmZmVyZW5jZSA9IGRlYWRsaW5lIC0gR2V0VGlja0NvdW50KCk7Ci0gICAgICAgICAgICBpZiAoZGlmZmVyZW5jZSA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgICAgICAgICAgaWYgKChpbnQpZGVsYXkgPiBkaWZmZXJlbmNlKQotICAgICAgICAgICAgICAgIGRlbGF5ID0gZGlmZmVyZW5jZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChkZWxheSA+IDIwKQotICAgICAgICAgICAgZGVsYXkgPSAyMDsKLQotICAgICAgICBTbGVlcChkZWxheSk7Ci0KLSAgICAgICAgLyogY2hlY2sgZm9yIHNpZ25hbHMgKi8KLSAgICAgICAgUHlfQkxPQ0tfVEhSRUFEUwotICAgICAgICByZXMgPSBQeUVycl9DaGVja1NpZ25hbHMoKTsKLSAgICAgICAgUHlfVU5CTE9DS19USFJFQURTCi0KLSAgICAgICAgaWYgKHJlcykKLSAgICAgICAgICAgIHJldHVybiBNUF9FWENFUFRJT05fSEFTX0JFRU5fU0VUOwotICAgIH0KLX0KLQotLyoKLSAqICJjb25uZWN0aW9uLmgiIGRlZmluZXMgdGhlIFBpcGVDb25uZWN0aW9uIHR5cGUgdXNpbmcgdGhlIGRlZmluaXRpb25zIGFib3ZlCi0gKi8KLQotI2RlZmluZSBDT05ORUNUSU9OX05BTUUgIlBpcGVDb25uZWN0aW9uIgotI2RlZmluZSBDT05ORUNUSU9OX1RZUEUgUGlwZUNvbm5lY3Rpb25UeXBlCi0KLSNpbmNsdWRlICJjb25uZWN0aW9uLmgiCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3Npbmcvc2VtYXBob3JlLmMgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3Npbmcvc2VtYXBob3JlLmMKaW5kZXggMWVlMjI0ZC4uMmMyYjAyMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3NlbWFwaG9yZS5jCisrKyBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9zZW1hcGhvcmUuYwpAQCAtMyw3ICszLDggQEAKICAqCiAgKiBzZW1hcGhvcmUuYwogICoKLSAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsgLS0tIHNlZSBDT1BZSU5HLnR4dAorICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyaworICogTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogICovCiAKICNpbmNsdWRlICJtdWx0aXByb2Nlc3NpbmcuaCIKQEAgLTYyLDcgKzYzLDggQEAKICAgICBpbnQgYmxvY2tpbmcgPSAxOwogICAgIGRvdWJsZSB0aW1lb3V0OwogICAgIFB5T2JqZWN0ICp0aW1lb3V0X29iaiA9IFB5X05vbmU7Ci0gICAgRFdPUkQgcmVzLCBmdWxsX21zZWNzLCBtc2Vjcywgc3RhcnQsIHRpY2tzOworICAgIERXT1JEIHJlcywgZnVsbF9tc2VjcywgbmhhbmRsZXM7CisgICAgSEFORExFIGhhbmRsZXNbMl0sIHNpZ2ludF9ldmVudDsKIAogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiYmxvY2siLCAidGltZW91dCIsIE5VTEx9OwogCkBAIC05Niw1MyArOTgsNDAgQEAKICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CiAgICAgfQogCi0gICAgLyogY2hlY2sgd2hldGhlciB3ZSBjYW4gYWNxdWlyZSB3aXRob3V0IGJsb2NraW5nICovCisgICAgLyogY2hlY2sgd2hldGhlciB3ZSBjYW4gYWNxdWlyZSB3aXRob3V0IHJlbGVhc2luZyB0aGUgR0lMIGFuZCBibG9ja2luZyAqLwogICAgIGlmIChXYWl0Rm9yU2luZ2xlT2JqZWN0KHNlbGYtPmhhbmRsZSwgMCkgPT0gV0FJVF9PQkpFQ1RfMCkgewogICAgICAgICBzZWxmLT5sYXN0X3RpZCA9IEdldEN1cnJlbnRUaHJlYWRJZCgpOwogICAgICAgICArK3NlbGYtPmNvdW50OwogICAgICAgICBQeV9SRVRVUk5fVFJVRTsKICAgICB9CiAKLSAgICBtc2VjcyA9IGZ1bGxfbXNlY3M7Ci0gICAgc3RhcnQgPSBHZXRUaWNrQ291bnQoKTsKLQotICAgIGZvciAoIDsgOyApIHsKLSAgICAgICAgSEFORExFIGhhbmRsZXNbMl0gPSB7c2VsZi0+aGFuZGxlLCBzaWdpbnRfZXZlbnR9OwotCi0gICAgICAgIC8qIGRvIHRoZSB3YWl0ICovCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgUmVzZXRFdmVudChzaWdpbnRfZXZlbnQpOwotICAgICAgICByZXMgPSBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKDIsIGhhbmRsZXMsIEZBTFNFLCBtc2Vjcyk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgLyogaGFuZGxlIHJlc3VsdCAqLwotICAgICAgICBpZiAocmVzICE9IFdBSVRfT0JKRUNUXzAgKyAxKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgLyogZ290IFNJR0lOVCBzbyBnaXZlIHNpZ25hbCBoYW5kbGVyIGEgY2hhbmNlIHRvIHJ1biAqLwotICAgICAgICBTbGVlcCgxKTsKLQotICAgICAgICAvKiBpZiB0aGlzIGlzIG1haW4gdGhyZWFkIGxldCBLZXlib2FyZEludGVycnVwdCBiZSByYWlzZWQgKi8KLSAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgLyogcmVjYWxjdWxhdGUgdGltZW91dCAqLwotICAgICAgICBpZiAobXNlY3MgIT0gSU5GSU5JVEUpIHsKLSAgICAgICAgICAgIHRpY2tzID0gR2V0VGlja0NvdW50KCk7Ci0gICAgICAgICAgICBpZiAoKERXT1JEKSh0aWNrcyAtIHN0YXJ0KSA+PSBmdWxsX21zZWNzKQotICAgICAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKLSAgICAgICAgICAgIG1zZWNzID0gZnVsbF9tc2VjcyAtICh0aWNrcyAtIHN0YXJ0KTsKLSAgICAgICAgfQorICAgIC8qIHByZXBhcmUgbGlzdCBvZiBoYW5kbGVzICovCisgICAgbmhhbmRsZXMgPSAwOworICAgIGhhbmRsZXNbbmhhbmRsZXMrK10gPSBzZWxmLT5oYW5kbGU7CisgICAgaWYgKF9QeU9TX0lzTWFpblRocmVhZCgpKSB7CisgICAgICAgIHNpZ2ludF9ldmVudCA9IF9QeU9TX1NpZ2ludEV2ZW50KCk7CisgICAgICAgIGFzc2VydChzaWdpbnRfZXZlbnQgIT0gTlVMTCk7CisgICAgICAgIGhhbmRsZXNbbmhhbmRsZXMrK10gPSBzaWdpbnRfZXZlbnQ7CiAgICAgfQogCisgICAgLyogZG8gdGhlIHdhaXQgKi8KKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgaWYgKHNpZ2ludF9ldmVudCAhPSBOVUxMKQorICAgICAgICBSZXNldEV2ZW50KHNpZ2ludF9ldmVudCk7CisgICAgcmVzID0gV2FpdEZvck11bHRpcGxlT2JqZWN0cyhuaGFuZGxlcywgaGFuZGxlcywgRkFMU0UsIGZ1bGxfbXNlY3MpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKICAgICAvKiBoYW5kbGUgcmVzdWx0ICovCiAgICAgc3dpdGNoIChyZXMpIHsKICAgICBjYXNlIFdBSVRfVElNRU9VVDoKICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgIGNhc2UgV0FJVF9PQkpFQ1RfMDoKKyAgICBjYXNlIFdBSVRfT0JKRUNUXzAgKyAwOgogICAgICAgICBzZWxmLT5sYXN0X3RpZCA9IEdldEN1cnJlbnRUaHJlYWRJZCgpOwogICAgICAgICArK3NlbGYtPmNvdW50OwogICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICBjYXNlIFdBSVRfT0JKRUNUXzAgKyAxOgorICAgICAgICBlcnJubyA9IEVJTlRSOworICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgIGNhc2UgV0FJVF9GQUlMRUQ6CiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKICAgICBkZWZhdWx0OgpAQCAtNDkwLDcgKzQ3OSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2VtbG9ja19jb3VudChTZW1Mb2NrT2JqZWN0ICpzZWxmKQogewotICAgIHJldHVybiBQeUludF9Gcm9tTG9uZygobG9uZylzZWxmLT5jb3VudCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylzZWxmLT5jb3VudCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC01MTQsNyArNTAzLDcgQEAKICAgICAgICB0aGUgbnVtYmVyIG9mIHdhaXRpbmcgdGhyZWFkcyAqLwogICAgIGlmIChzdmFsIDwgMCkKICAgICAgICAgc3ZhbCA9IDA7Ci0gICAgcmV0dXJuIFB5SW50X0Zyb21Mb25nKChsb25nKXN2YWwpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpc3ZhbCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3NvY2tldF9jb25uZWN0aW9uLmMgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3Npbmcvc29ja2V0X2Nvbm5lY3Rpb24uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZiYzM3Ny4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3Npbmcvc29ja2V0X2Nvbm5lY3Rpb24uYworKysgL2Rldi9udWxsCkBAIC0xLDIzOCArMCwwIEBACi0vKgotICogQSB0eXBlIHdoaWNoIHdyYXBzIGEgc29ja2V0Ci0gKgotICogc29ja2V0X2Nvbm5lY3Rpb24uYwotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsgLS0tIHNlZSBDT1BZSU5HLnR4dAotICovCi0KLSNpbmNsdWRlICJtdWx0aXByb2Nlc3NpbmcuaCIKLQotI2lmIGRlZmluZWQoSEFWRV9QT0xMKSAmJiAhZGVmaW5lZChIQVZFX0JST0tFTl9QT0xMKQotIyAgaW5jbHVkZSAicG9sbC5oIgotI2VuZGlmCi0KLSNpZmRlZiBNU19XSU5ET1dTCi0jICBkZWZpbmUgV1JJVEUoaCwgYnVmZmVyLCBsZW5ndGgpIHNlbmQoKFNPQ0tFVCloLCBidWZmZXIsIGxlbmd0aCwgMCkKLSMgIGRlZmluZSBSRUFEKGgsIGJ1ZmZlciwgbGVuZ3RoKSByZWN2KChTT0NLRVQpaCwgYnVmZmVyLCBsZW5ndGgsIDApCi0jICBkZWZpbmUgQ0xPU0UoaCkgY2xvc2Vzb2NrZXQoKFNPQ0tFVCloKQotI2Vsc2UKLSMgIGRlZmluZSBXUklURShoLCBidWZmZXIsIGxlbmd0aCkgd3JpdGUoaCwgYnVmZmVyLCBsZW5ndGgpCi0jICBkZWZpbmUgUkVBRChoLCBidWZmZXIsIGxlbmd0aCkgcmVhZChoLCBidWZmZXIsIGxlbmd0aCkKLSMgIGRlZmluZSBDTE9TRShoKSBjbG9zZShoKQotI2VuZGlmCi0KLS8qCi0gKiBTZW5kIHN0cmluZyB0byBmaWxlIGRlc2NyaXB0b3IKLSAqLwotCi1zdGF0aWMgUHlfc3NpemVfdAotX2Nvbm5fc2VuZGFsbChIQU5ETEUgaCwgY2hhciAqc3RyaW5nLCBzaXplX3QgbGVuZ3RoKQotewotICAgIGNoYXIgKnAgPSBzdHJpbmc7Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0KLSAgICB3aGlsZSAobGVuZ3RoID4gMCkgewotICAgICAgICByZXMgPSBXUklURShoLCBwLCBsZW5ndGgpOwotICAgICAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBNUF9TT0NLRVRfRVJST1I7Ci0gICAgICAgIGxlbmd0aCAtPSByZXM7Ci0gICAgICAgIHAgKz0gcmVzOwotICAgIH0KLQotICAgIHJldHVybiBNUF9TVUNDRVNTOwotfQotCi0vKgotICogUmVjZWl2ZSBzdHJpbmcgb2YgZXhhY3QgbGVuZ3RoIGZyb20gZmlsZSBkZXNjcmlwdG9yCi0gKi8KLQotc3RhdGljIFB5X3NzaXplX3QKLV9jb25uX3JlY3ZhbGwoSEFORExFIGgsIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBzaXplX3QgcmVtYWluaW5nID0gbGVuZ3RoOwotICAgIFB5X3NzaXplX3QgdGVtcDsKLSAgICBjaGFyICpwID0gYnVmZmVyOwotCi0gICAgd2hpbGUgKHJlbWFpbmluZyA+IDApIHsKLSAgICAgICAgdGVtcCA9IFJFQUQoaCwgcCwgcmVtYWluaW5nKTsKLSAgICAgICAgaWYgKHRlbXAgPD0gMCkgewotICAgICAgICAgICAgaWYgKHRlbXAgPT0gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVtYWluaW5nID09IGxlbmd0aCA/Ci0gICAgICAgICAgICAgICAgICAgIE1QX0VORF9PRl9GSUxFIDogTVBfRUFSTFlfRU5EX09GX0ZJTEU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRlbXA7Ci0gICAgICAgIH0KLSAgICAgICAgcmVtYWluaW5nIC09IHRlbXA7Ci0gICAgICAgIHAgKz0gdGVtcDsKLSAgICB9Ci0KLSAgICByZXR1cm4gTVBfU1VDQ0VTUzsKLX0KLQotLyoKLSAqIFNlbmQgYSBzdHJpbmcgcHJlcGVuZGVkIGJ5IHRoZSBzdHJpbmcgbGVuZ3RoIGluIG5ldHdvcmsgYnl0ZSBvcmRlcgotICovCi0KLXN0YXRpYyBQeV9zc2l6ZV90Ci1jb25uX3NlbmRfc3RyaW5nKENvbm5lY3Rpb25PYmplY3QgKmNvbm4sIGNoYXIgKnN0cmluZywgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBQeV9zc2l6ZV90IHJlczsKLSAgICAvKiBUaGUgImhlYWRlciIgb2YgdGhlIG1lc3NhZ2UgaXMgYSAzMiBiaXQgdW5zaWduZWQgbnVtYmVyIChpbgotICAgICAgIG5ldHdvcmsgb3JkZXIpIHdoaWNoIHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSAiYm9keSIuICBJZgotICAgICAgIHRoZSBtZXNzYWdlIGlzIHNob3J0ZXIgdGhhbiBhYm91dCAxNmtiIHRoZW4gaXQgaXMgcXVpY2tlciB0bwotICAgICAgIGNvbWJpbmUgdGhlICJoZWFkZXIiIGFuZCB0aGUgImJvZHkiIG9mIHRoZSBtZXNzYWdlIGFuZCBzZW5kCi0gICAgICAgdGhlbSBhdCBvbmNlLiAqLwotICAgIGlmIChsZW5ndGggPCAoMTYqMTAyNCkpIHsKLSAgICAgICAgY2hhciAqbWVzc2FnZTsKLQotICAgICAgICBtZXNzYWdlID0gUHlNZW1fTWFsbG9jKGxlbmd0aCs0KTsKLSAgICAgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBNUF9NRU1PUllfRVJST1I7Ci0KLSAgICAgICAgKihVSU5UMzIqKW1lc3NhZ2UgPSBodG9ubCgoVUlOVDMyKWxlbmd0aCk7Ci0gICAgICAgIG1lbWNweShtZXNzYWdlKzQsIHN0cmluZywgbGVuZ3RoKTsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICByZXMgPSBfY29ubl9zZW5kYWxsKGNvbm4tPmhhbmRsZSwgbWVzc2FnZSwgbGVuZ3RoKzQpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBQeU1lbV9GcmVlKG1lc3NhZ2UpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFVJTlQzMiBsZW5idWZmOwotCi0gICAgICAgIGlmIChsZW5ndGggPiBNQVhfTUVTU0FHRV9MRU5HVEgpCi0gICAgICAgICAgICByZXR1cm4gTVBfQkFEX01FU1NBR0VfTEVOR1RIOwotCi0gICAgICAgIGxlbmJ1ZmYgPSBodG9ubCgoVUlOVDMyKWxlbmd0aCk7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzID0gX2Nvbm5fc2VuZGFsbChjb25uLT5oYW5kbGUsIChjaGFyKikmbGVuYnVmZiwgNCkgfHwKLSAgICAgICAgICAgIF9jb25uX3NlbmRhbGwoY29ubi0+aGFuZGxlLCBzdHJpbmcsIGxlbmd0aCk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8qCi0gKiBBdHRlbXB0cyB0byByZWFkIGludG8gYnVmZmVyLCBvciBmYWlsaW5nIHRoYXQgaW50byAqbmV3YnVmZmVyCi0gKgotICogUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgcmVhZC4KLSAqLwotCi1zdGF0aWMgUHlfc3NpemVfdAotY29ubl9yZWN2X3N0cmluZyhDb25uZWN0aW9uT2JqZWN0ICpjb25uLCBjaGFyICpidWZmZXIsCi0gICAgICAgICAgICAgICAgIHNpemVfdCBidWZsZW5ndGgsIGNoYXIgKipuZXdidWZmZXIsIHNpemVfdCBtYXhsZW5ndGgpCi17Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0gICAgVUlOVDMyIHVsZW5ndGg7Ci0KLSAgICAqbmV3YnVmZmVyID0gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBfY29ubl9yZWN2YWxsKGNvbm4tPmhhbmRsZSwgKGNoYXIqKSZ1bGVuZ3RoLCA0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcmVzOwotCi0gICAgdWxlbmd0aCA9IG50b2hsKHVsZW5ndGgpOwotICAgIGlmICh1bGVuZ3RoID4gbWF4bGVuZ3RoKQotICAgICAgICByZXR1cm4gTVBfQkFEX01FU1NBR0VfTEVOR1RIOwotCi0gICAgaWYgKHVsZW5ndGggPiBidWZsZW5ndGgpIHsKLSAgICAgICAgKm5ld2J1ZmZlciA9IGJ1ZmZlciA9IFB5TWVtX01hbGxvYygoc2l6ZV90KXVsZW5ndGgpOwotICAgICAgICBpZiAoYnVmZmVyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTVBfTUVNT1JZX0VSUk9SOwotICAgIH0KLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBfY29ubl9yZWN2YWxsKGNvbm4tPmhhbmRsZSwgYnVmZmVyLCAoc2l6ZV90KXVsZW5ndGgpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAocmVzID49IDApIHsKLSAgICAgICAgcmVzID0gKFB5X3NzaXplX3QpdWxlbmd0aDsKLSAgICB9IGVsc2UgaWYgKCpuZXdidWZmZXIgIT0gTlVMTCkgewotICAgICAgICBQeU1lbV9GcmVlKCpuZXdidWZmZXIpOwotICAgICAgICAqbmV3YnVmZmVyID0gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotLyoKLSAqIENoZWNrIHdoZXRoZXIgYW55IGRhdGEgaXMgYXZhaWxhYmxlIGZvciByZWFkaW5nIC0tIG5lZyB0aW1lb3V0IGJsb2NrcwotICovCi0KLXN0YXRpYyBpbnQKLWNvbm5fcG9sbChDb25uZWN0aW9uT2JqZWN0ICpjb25uLCBkb3VibGUgdGltZW91dCwgUHlUaHJlYWRTdGF0ZSAqX3NhdmUpCi17Ci0jaWYgZGVmaW5lZChIQVZFX1BPTEwpICYmICFkZWZpbmVkKEhBVkVfQlJPS0VOX1BPTEwpCi0gICAgaW50IHJlczsKLSAgICBzdHJ1Y3QgcG9sbGZkIHA7Ci0KLSAgICBwLmZkID0gKGludCljb25uLT5oYW5kbGU7Ci0gICAgcC5ldmVudHMgPSBQT0xMSU4gfCBQT0xMUFJJOwotICAgIHAucmV2ZW50cyA9IDA7Ci0KLSAgICBpZiAodGltZW91dCA8IDApIHsKLSAgICAgICAgcmVzID0gcG9sbCgmcCwgMSwgLTEpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlcyA9IHBvbGwoJnAsIDEsIChpbnQpKHRpbWVvdXQgKiAxMDAwICsgMC41KSk7Ci0gICAgfQotCi0gICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgcmV0dXJuIE1QX1NPQ0tFVF9FUlJPUjsKLSAgICB9IGVsc2UgaWYgKHAucmV2ZW50cyAmIChQT0xMTlZBTHxQT0xMRVJSKSkgewotICAgICAgICBQeV9CTE9DS19USFJFQURTCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAicG9sbCgpIGdhdmUgUE9MTE5WQUwgb3IgUE9MTEVSUiIpOwotICAgICAgICBQeV9VTkJMT0NLX1RIUkVBRFMKLSAgICAgICAgcmV0dXJuIE1QX0VYQ0VQVElPTl9IQVNfQkVFTl9TRVQ7Ci0gICAgfSBlbHNlIGlmIChwLnJldmVudHMgIT0gMCkgewotICAgICAgICByZXR1cm4gVFJVRTsKLSAgICB9IGVsc2UgewotICAgICAgICBhc3NlcnQocmVzID09IDApOwotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQotI2Vsc2UKLSAgICBpbnQgcmVzOwotICAgIGZkX3NldCByZmRzOwotCi0gICAgLyoKLSAgICAgKiBWZXJpZnkgdGhlIGhhbmRsZSwgaXNzdWUgMzMyMS4gTm90IHJlcXVpcmVkIGZvciB3aW5kb3dzLgotICAgICAqLwotICAgICNpZm5kZWYgTVNfV0lORE9XUwotICAgICAgICBpZiAoKChpbnQpY29ubi0+aGFuZGxlKSA8IDAgfHwgKChpbnQpY29ubi0+aGFuZGxlKSA+PSBGRF9TRVRTSVpFKSB7Ci0gICAgICAgICAgICBQeV9CTE9DS19USFJFQURTCi0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwgImhhbmRsZSBvdXQgb2YgcmFuZ2UgaW4gc2VsZWN0KCkiKTsKLSAgICAgICAgICAgIFB5X1VOQkxPQ0tfVEhSRUFEUwotICAgICAgICAgICAgcmV0dXJuIE1QX0VYQ0VQVElPTl9IQVNfQkVFTl9TRVQ7Ci0gICAgICAgIH0KLSAgICAjZW5kaWYKLQotICAgIEZEX1pFUk8oJnJmZHMpOwotICAgIEZEX1NFVCgoU09DS0VUKWNvbm4tPmhhbmRsZSwgJnJmZHMpOwotCi0gICAgaWYgKHRpbWVvdXQgPCAwLjApIHsKLSAgICAgICAgcmVzID0gc2VsZWN0KChpbnQpY29ubi0+aGFuZGxlKzEsICZyZmRzLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSAgICB9IGVsc2UgewotICAgICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKLSAgICAgICAgdHYudHZfc2VjID0gKGxvbmcpdGltZW91dDsKLSAgICAgICAgdHYudHZfdXNlYyA9IChsb25nKSgodGltZW91dCAtIHR2LnR2X3NlYykgKiAxZTYgKyAwLjUpOwotICAgICAgICByZXMgPSBzZWxlY3QoKGludCljb25uLT5oYW5kbGUrMSwgJnJmZHMsIE5VTEwsIE5VTEwsICZ0dik7Ci0gICAgfQotCi0gICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgcmV0dXJuIE1QX1NPQ0tFVF9FUlJPUjsKLSAgICB9IGVsc2UgaWYgKEZEX0lTU0VUKGNvbm4tPmhhbmRsZSwgJnJmZHMpKSB7Ci0gICAgICAgIHJldHVybiBUUlVFOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGFzc2VydChyZXMgPT0gMCk7Ci0gICAgICAgIHJldHVybiBGQUxTRTsKLSAgICB9Ci0jZW5kaWYKLX0KLQotLyoKLSAqICJjb25uZWN0aW9uLmgiIGRlZmluZXMgdGhlIENvbm5lY3Rpb24gdHlwZSB1c2luZyBkZWZzIGFib3ZlCi0gKi8KLQotI2RlZmluZSBDT05ORUNUSU9OX05BTUUgIkNvbm5lY3Rpb24iCi0jZGVmaW5lIENPTk5FQ1RJT05fVFlQRSBDb25uZWN0aW9uVHlwZQotCi0jaW5jbHVkZSAiY29ubmVjdGlvbi5oIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3dpbjMyX2Z1bmN0aW9ucy5jIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3dpbjMyX2Z1bmN0aW9ucy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTM0OGM0Li4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy93aW4zMl9mdW5jdGlvbnMuYworKysgL2Rldi9udWxsCkBAIC0xLDI2NyArMCwwIEBACi0vKgotICogV2luMzIgZnVuY3Rpb25zIHVzZWQgYnkgbXVsdGlwcm9jZXNzaW5nIHBhY2thZ2UKLSAqCi0gKiB3aW4zMl9mdW5jdGlvbnMuYwotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsgLS0tIHNlZSBDT1BZSU5HLnR4dAotICovCi0KLSNpbmNsdWRlICJtdWx0aXByb2Nlc3NpbmcuaCIKLQotCi0jZGVmaW5lIFdJTjMyX0ZVTkNUSU9OKGZ1bmMpIFwKLSAgICB7I2Z1bmMsIChQeUNGdW5jdGlvbil3aW4zMl8gIyMgZnVuYywgTUVUSF9WQVJBUkdTIHwgTUVUSF9TVEFUSUMsICIifQotCi0jZGVmaW5lIFdJTjMyX0NPTlNUQU5UKGZtdCwgY29uKSBcCi0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoV2luMzJUeXBlLnRwX2RpY3QsICNjb24sIFB5X0J1aWxkVmFsdWUoZm10LCBjb24pKQotCi0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9DbG9zZUhhbmRsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgSEFORExFIGhPYmplY3Q7Ci0gICAgQk9PTCBzdWNjZXNzOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFLCAmaE9iamVjdCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHN1Y2Nlc3MgPSBDbG9zZUhhbmRsZShoT2JqZWN0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0KLSAgICBQeV9SRVRVUk5fTk9ORTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXdpbjMyX0Nvbm5lY3ROYW1lZFBpcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIEhBTkRMRSBoTmFtZWRQaXBlOwotICAgIExQT1ZFUkxBUFBFRCBscE92ZXJsYXBwZWQ7Ci0gICAgQk9PTCBzdWNjZXNzOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFIEZfUE9JTlRFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmhOYW1lZFBpcGUsICZscE92ZXJsYXBwZWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzdWNjZXNzID0gQ29ubmVjdE5hbWVkUGlwZShoTmFtZWRQaXBlLCBscE92ZXJsYXBwZWQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLQotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotd2luMzJfQ3JlYXRlRmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgTFBDVFNUUiBscEZpbGVOYW1lOwotICAgIERXT1JEIGR3RGVzaXJlZEFjY2VzczsKLSAgICBEV09SRCBkd1NoYXJlTW9kZTsKLSAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZWN1cml0eUF0dHJpYnV0ZXM7Ci0gICAgRFdPUkQgZHdDcmVhdGlvbkRpc3Bvc2l0aW9uOwotICAgIERXT1JEIGR3RmxhZ3NBbmRBdHRyaWJ1dGVzOwotICAgIEhBTkRMRSBoVGVtcGxhdGVGaWxlOwotICAgIEhBTkRMRSBoYW5kbGU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiIEZfRFdPUkQgRl9EV09SRCBGX1BPSU5URVIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRl9EV09SRCBGX0RXT1JEIEZfSEFORExFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbHBGaWxlTmFtZSwgJmR3RGVzaXJlZEFjY2VzcywgJmR3U2hhcmVNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbHBTZWN1cml0eUF0dHJpYnV0ZXMsICZkd0NyZWF0aW9uRGlzcG9zaXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkd0ZsYWdzQW5kQXR0cmlidXRlcywgJmhUZW1wbGF0ZUZpbGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBoYW5kbGUgPSBDcmVhdGVGaWxlKGxwRmlsZU5hbWUsIGR3RGVzaXJlZEFjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGR3U2hhcmVNb2RlLCBscFNlY3VyaXR5QXR0cmlidXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGR3Q3JlYXRpb25EaXNwb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGR3RmxhZ3NBbmRBdHRyaWJ1dGVzLCBoVGVtcGxhdGVGaWxlKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9IQU5ETEUsIGhhbmRsZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9DcmVhdGVOYW1lZFBpcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIExQQ1RTVFIgbHBOYW1lOwotICAgIERXT1JEIGR3T3Blbk1vZGU7Ci0gICAgRFdPUkQgZHdQaXBlTW9kZTsKLSAgICBEV09SRCBuTWF4SW5zdGFuY2VzOwotICAgIERXT1JEIG5PdXRCdWZmZXJTaXplOwotICAgIERXT1JEIG5JbkJ1ZmZlclNpemU7Ci0gICAgRFdPUkQgbkRlZmF1bHRUaW1lT3V0OwotICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFNlY3VyaXR5QXR0cmlidXRlczsKLSAgICBIQU5ETEUgaGFuZGxlOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiBGX0RXT1JEIEZfRFdPUkQgRl9EV09SRAotICAgICAgICAgICAgICAgICAgICAgICAgICBGX0RXT1JEIEZfRFdPUkQgRl9EV09SRCBGX1BPSU5URVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZscE5hbWUsICZkd09wZW5Nb2RlLCAmZHdQaXBlTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5NYXhJbnN0YW5jZXMsICZuT3V0QnVmZmVyU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5JbkJ1ZmZlclNpemUsICZuRGVmYXVsdFRpbWVPdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZscFNlY3VyaXR5QXR0cmlidXRlcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGhhbmRsZSA9IENyZWF0ZU5hbWVkUGlwZShscE5hbWUsIGR3T3Blbk1vZGUsIGR3UGlwZU1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5NYXhJbnN0YW5jZXMsIG5PdXRCdWZmZXJTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuSW5CdWZmZXJTaXplLCBuRGVmYXVsdFRpbWVPdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxwU2VjdXJpdHlBdHRyaWJ1dGVzKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9IQU5ETEUsIGhhbmRsZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9FeGl0UHJvY2VzcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgVUlOVCB1RXhpdENvZGU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkkiLCAmdUV4aXRDb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAjaWYgZGVmaW5lZChQeV9ERUJVRykKLSAgICAgICAgU2V0RXJyb3JNb2RlKFNFTV9GQUlMQ1JJVElDQUxFUlJPUlN8U0VNX05PQUxJR05NRU5URkFVTFRFWENFUFR8U0VNX05PR1BGQVVMVEVSUk9SQk9YfFNFTV9OT09QRU5GSUxFRVJST1JCT1gpOwotICAgICAgICBfQ3J0U2V0UmVwb3J0TW9kZShfQ1JUX0FTU0VSVCwgX0NSVERCR19NT0RFX0RFQlVHKTsKLSAgICAjZW5kaWYKLQotCi0gICAgRXhpdFByb2Nlc3ModUV4aXRDb2RlKTsKLQotICAgIHJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotd2luMzJfR2V0TGFzdEVycm9yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0RXT1JELCBHZXRMYXN0RXJyb3IoKSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9PcGVuUHJvY2VzcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgRFdPUkQgZHdEZXNpcmVkQWNjZXNzOwotICAgIEJPT0wgYkluaGVyaXRIYW5kbGU7Ci0gICAgRFdPUkQgZHdQcm9jZXNzSWQ7Ci0gICAgSEFORExFIGhhbmRsZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0RXT1JEICJpIiBGX0RXT1JELAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZHdEZXNpcmVkQWNjZXNzLCAmYkluaGVyaXRIYW5kbGUsICZkd1Byb2Nlc3NJZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaGFuZGxlID0gT3BlblByb2Nlc3MoZHdEZXNpcmVkQWNjZXNzLCBiSW5oZXJpdEhhbmRsZSwgZHdQcm9jZXNzSWQpOwotICAgIGlmIChoYW5kbGUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9IQU5ETEUsIGhhbmRsZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgSEFORExFIGhOYW1lZFBpcGU7Ci0gICAgUHlPYmplY3QgKm9BcmdzWzNdOwotICAgIERXT1JEIGR3QXJnc1szXSwgKnBBcmdzWzNdID0ge05VTEwsIE5VTEwsIE5VTEx9OwotICAgIGludCBpOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICJPT08iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmaE5hbWVkUGlwZSwgJm9BcmdzWzBdLCAmb0FyZ3NbMV0sICZvQXJnc1syXSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlFcnJfQ2xlYXIoKTsKLQotICAgIGZvciAoaSA9IDAgOyBpIDwgMyA7IGkrKykgewotICAgICAgICBpZiAob0FyZ3NbaV0gIT0gUHlfTm9uZSkgewotICAgICAgICAgICAgZHdBcmdzW2ldID0gUHlMb25nX0FzVW5zaWduZWRMb25nTWFzayhvQXJnc1tpXSk7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIHBBcmdzW2ldID0gJmR3QXJnc1tpXTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoaE5hbWVkUGlwZSwgcEFyZ3NbMF0sIHBBcmdzWzFdLCBwQXJnc1syXSkpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLQotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotd2luMzJfV2FpdE5hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgTFBDVFNUUiBscE5hbWVkUGlwZU5hbWU7Ci0gICAgRFdPUkQgblRpbWVPdXQ7Ci0gICAgQk9PTCBzdWNjZXNzOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiBGX0RXT1JELCAmbHBOYW1lZFBpcGVOYW1lLCAmblRpbWVPdXQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzdWNjZXNzID0gV2FpdE5hbWVkUGlwZShscE5hbWVkUGlwZU5hbWUsIG5UaW1lT3V0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0KLSAgICBQeV9SRVRVUk5fTk9ORTsKLX0KLQotc3RhdGljIFB5TWV0aG9kRGVmIHdpbjMyX21ldGhvZHNbXSA9IHsKLSAgICBXSU4zMl9GVU5DVElPTihDbG9zZUhhbmRsZSksCi0gICAgV0lOMzJfRlVOQ1RJT04oR2V0TGFzdEVycm9yKSwKLSAgICBXSU4zMl9GVU5DVElPTihPcGVuUHJvY2VzcyksCi0gICAgV0lOMzJfRlVOQ1RJT04oRXhpdFByb2Nlc3MpLAotICAgIFdJTjMyX0ZVTkNUSU9OKENvbm5lY3ROYW1lZFBpcGUpLAotICAgIFdJTjMyX0ZVTkNUSU9OKENyZWF0ZUZpbGUpLAotICAgIFdJTjMyX0ZVTkNUSU9OKENyZWF0ZU5hbWVkUGlwZSksCi0gICAgV0lOMzJfRlVOQ1RJT04oU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUpLAotICAgIFdJTjMyX0ZVTkNUSU9OKFdhaXROYW1lZFBpcGUpLAotICAgIHtOVUxMfQotfTsKLQotCi1QeVR5cGVPYmplY3QgV2luMzJUeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotfTsKLQotCi1QeU9iamVjdCAqCi1jcmVhdGVfd2luMzJfbmFtZXNwYWNlKHZvaWQpCi17Ci0gICAgV2luMzJUeXBlLnRwX25hbWUgPSAiX211bHRpcHJvY2Vzc2luZy53aW4zMiI7Ci0gICAgV2luMzJUeXBlLnRwX21ldGhvZHMgPSB3aW4zMl9tZXRob2RzOwotICAgIGlmIChQeVR5cGVfUmVhZHkoJldpbjMyVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9JTkNSRUYoJldpbjMyVHlwZSk7Ci0KLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9BTFJFQURZX0VYSVNUUyk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfTk9fREFUQSk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfUElQRV9CVVNZKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9QSVBFX0NPTk5FQ1RFRCk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfU0VNX1RJTUVPVVQpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIEdFTkVSSUNfUkVBRCk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgR0VORVJJQ19XUklURSk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgSU5GSU5JVEUpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIE5NUFdBSVRfV0FJVF9GT1JFVkVSKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBPUEVOX0VYSVNUSU5HKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBQSVBFX0FDQ0VTU19EVVBMRVgpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfQUNDRVNTX0lOQk9VTkQpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfUkVBRE1PREVfTUVTU0FHRSk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9UWVBFX01FU1NBR0UpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfVU5MSU1JVEVEX0lOU1RBTkNFUyk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9XQUlUKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBQUk9DRVNTX0FMTF9BQ0NFU1MpOwotCi0gICAgV0lOMzJfQ09OU1RBTlQoImkiLCBOVUxMKTsKLQotICAgIHJldHVybiAoUHlPYmplY3QqKSZXaW4zMlR5cGU7Ci19CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19waWNrbGUuYyBiL01vZHVsZXMvX3BpY2tsZS5jCmluZGV4IDE4ZWFhMzguLmMyMTNhNTEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3BpY2tsZS5jCisrKyBiL01vZHVsZXMvX3BpY2tsZS5jCkBAIC0zMTksNiArMzE5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0cyB0byBzdXBwb3J0IHNlbGYtcmVmZXJlbnRpYWwgb2JqZWN0cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNrbGluZy4gKi8KICAgICBQeU9iamVjdCAqcGVyc19mdW5jOyAgICAgICAgLyogcGVyc2lzdGVudF9pZCgpIG1ldGhvZCwgY2FuIGJlIE5VTEwgKi8KKyAgICBQeU9iamVjdCAqZGlzcGF0Y2hfdGFibGU7ICAgLyogcHJpdmF0ZSBkaXNwYXRjaF90YWJsZSwgY2FuIGJlIE5VTEwgKi8KICAgICBQeU9iamVjdCAqYXJnOwogCiAgICAgUHlPYmplY3QgKndyaXRlOyAgICAgICAgICAgIC8qIHdyaXRlKCkgbWV0aG9kIG9mIHRoZSBvdXRwdXQgc3RyZWFtLiAqLwpAQCAtNjA1LDcgKzYwNiw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyogSGVscGVycyBmb3IgY3JlYXRpbmcgdGhlIGFyZ3VtZW50IHR1cGxlIHBhc3NlZCB0byBmdW5jdGlvbnMuIFRoaXMgaGFzIHRoZQotICAgcGVyZm9ybWFuY2UgYWR2YW50YWdlIG9mIGNhbGxpbmcgUHlUdXBsZV9OZXcoKSBvbmx5IG9uY2UuIAorICAgcGVyZm9ybWFuY2UgYWR2YW50YWdlIG9mIGNhbGxpbmcgUHlUdXBsZV9OZXcoKSBvbmx5IG9uY2UuCiAKICAgIFhYWChhdmFzc2Fsb3R0aSk6IElubGluZSBkaXJlY3RseSBpbiBfUGlja2xlcl9GYXN0Q2FsbCgpIGFuZAogICAgX1VucGlja2xlcl9GYXN0Q2FsbCgpLiAqLwpAQCAtNzY0LDYgKzc2NSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc2VsZi0+cGVyc19mdW5jID0gTlVMTDsKKyAgICBzZWxmLT5kaXNwYXRjaF90YWJsZSA9IE5VTEw7CiAgICAgc2VsZi0+YXJnID0gTlVMTDsKICAgICBzZWxmLT53cml0ZSA9IE5VTEw7CiAgICAgc2VsZi0+cHJvdG8gPSAwOwpAQCAtODEzLDcgKzgxNSw3IEBACiAgICAgZml4X2ltcG9ydHMgPSBQeU9iamVjdF9Jc1RydWUoZml4X2ltcG9ydHNfb2JqKTsKICAgICBpZiAoZml4X2ltcG9ydHMgPT0gLTEpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICAKKwogICAgIHNlbGYtPnByb3RvID0gcHJvdG87CiAgICAgc2VsZi0+YmluID0gcHJvdG8gPiAwOwogICAgIHNlbGYtPmZpeF9pbXBvcnRzID0gZml4X2ltcG9ydHMgJiYgcHJvdG8gPCAzOwpAQCAtODI2LDggKzgyOCw5IEBACiBzdGF0aWMgaW50CiBfUGlja2xlcl9TZXRPdXRwdXRTdHJlYW0oUGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZpbGUpCiB7CisgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOwogICAgIGFzc2VydChmaWxlICE9IE5VTEwpOwotICAgIHNlbGYtPndyaXRlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmaWxlLCAid3JpdGUiKTsKKyAgICBzZWxmLT53cml0ZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoZmlsZSwgJlB5SWRfd3JpdGUpOwogICAgIGlmIChzZWxmLT53cml0ZSA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCkBAIC05MDksNyArOTEyLDcgQEAKICAgICBQeV9zc2l6ZV90IHJlYWRfc2l6ZSwgcHJlZmV0Y2hlZF9zaXplID0gMDsKIAogICAgIGFzc2VydChzZWxmLT5yZWFkICE9IE5VTEwpOwotICAgIAorCiAgICAgaWYgKF9VbnBpY2tsZXJfU2tpcENvbnN1bWVkKHNlbGYpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC0xMDM3LDcgKzEwNDAsNyBAQAogICAgICAgICBzZWxmLT5uZXh0X3JlYWRfaWR4ID0gbnVtX3JlYWQ7CiAgICAgICAgIHJldHVybiBfVW5waWNrbGVyX0NvcHlMaW5lKHNlbGYsIHNlbGYtPmlucHV0X2J1ZmZlciwgbnVtX3JlYWQsIHJlc3VsdCk7CiAgICAgfQotIAorCiAgICAgLyogSWYgd2UgZ2V0IGhlcmUsIHdlJ3ZlIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgaW5wdXQgc3RyaW5nLiBSZXR1cm4gdGhlCiAgICAgICAgcmVtYWluaW5nIHN0cmluZyBhbmQgbGV0IHRoZSBjYWxsZXIgZmlndXJlIGl0IG91dC4gKi8KICAgICAqcmVzdWx0ID0gc2VsZi0+aW5wdXRfYnVmZmVyICsgc2VsZi0+bmV4dF9yZWFkX2lkeDsKQEAgLTExNzMsMTUgKzExNzYsMTkgQEAKIHN0YXRpYyBpbnQKIF9VbnBpY2tsZXJfU2V0SW5wdXRTdHJlYW0oVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSkKIHsKLSAgICBzZWxmLT5wZWVrID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmaWxlLCAicGVlayIpOworICAgIF9QeV9JREVOVElGSUVSKHBlZWspOworICAgIF9QeV9JREVOVElGSUVSKHJlYWQpOworICAgIF9QeV9JREVOVElGSUVSKHJlYWRsaW5lKTsKKworICAgIHNlbGYtPnBlZWsgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZpbGUsICZQeUlkX3BlZWspOwogICAgIGlmIChzZWxmLT5wZWVrID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBzZWxmLT5yZWFkID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmaWxlLCAicmVhZCIpOwotICAgIHNlbGYtPnJlYWRsaW5lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmaWxlLCAicmVhZGxpbmUiKTsKKyAgICBzZWxmLT5yZWFkID0gX1B5T2JqZWN0X0dldEF0dHJJZChmaWxlLCAmUHlJZF9yZWFkKTsKKyAgICBzZWxmLT5yZWFkbGluZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoZmlsZSwgJlB5SWRfcmVhZGxpbmUpOwogICAgIGlmIChzZWxmLT5yZWFkbGluZSA9PSBOVUxMIHx8IHNlbGYtPnJlYWQgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLApAQCAtMTU0Myw3ICsxNTUwLDEwIEBACiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIHNhdmVfaW50KHNlbGYsIHZhbCk7CisjaWYgU0laRU9GX0xPTkcgPiA0CisgICAgICAgIGlmICh2YWwgPD0gMHg3ZmZmZmZmZkwgJiYgdmFsID49IC0weDgwMDAwMDAwTCkKKyNlbmRpZgorICAgICAgICAgICAgcmV0dXJuIHNhdmVfaW50KHNlbGYsIHZhbCk7CiAKICAgICBpZiAoc2VsZi0+cHJvdG8gPj0gMikgewogICAgICAgICAvKiBMaW5lYXItdGltZSBwaWNrbGluZy4gKi8KQEAgLTE1OTgsNyArMTYwOCw3IEBACiAgICAgICAgICAqIGJpdHMuCiAgICAgICAgICAqLwogICAgICAgICBpZiAoc2lnbiA8IDAgJiYKLSAgICAgICAgICAgIG5ieXRlcyA+IDEgJiYgCisgICAgICAgICAgICBuYnl0ZXMgPiAxICYmCiAgICAgICAgICAgICBwZGF0YVtuYnl0ZXMgLSAxXSA9PSAweGZmICYmCiAgICAgICAgICAgICAocGRhdGFbbmJ5dGVzIC0gMl0gJiAweDgwKSAhPSAwKSB7CiAgICAgICAgICAgICBuYnl0ZXMtLTsKQEAgLTE2NjQsNyArMTY3NCw3IEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGlmIChfUGlja2xlcl9Xcml0ZShzZWxmLCBwZGF0YSwgOSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgfSAKKyAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaW50IHJlc3VsdCA9IC0xOwogICAgICAgICBjaGFyICpidWYgPSBOVUxMOwpAQCAtMTc3OCw3ICsxNzg4LDcgQEAKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3Qgc2VyaWFsaXplIGEgYnl0ZXMgb2JqZWN0IGxhcmdlciB0aGFuIDRHQiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3Qgc2VyaWFsaXplIGEgYnl0ZXMgb2JqZWN0IGxhcmdlciB0aGFuIDQgR2lCIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7ICAgICAgICAgIC8qIHN0cmluZyB0b28gbGFyZ2UgKi8KICAgICAgICAgfQogCkBAIC0xNzk4LDkwICsxODA4LDY1IEBACiAvKiBBIGNvcHkgb2YgUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUoKSB0aGF0IGFsc28gdHJhbnNsYXRlcwogICAgYmFja3NsYXNoIGFuZCBuZXdsaW5lIGNoYXJhY3RlcnMgdG8gXHVYWFhYIGVzY2FwZXMuICovCiBzdGF0aWMgUHlPYmplY3QgKgotcmF3X3VuaWNvZGVfZXNjYXBlKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKK3Jhd191bmljb2RlX2VzY2FwZShQeU9iamVjdCAqb2JqKQogewogICAgIFB5T2JqZWN0ICpyZXByLCAqcmVzdWx0OwogICAgIGNoYXIgKnA7Ci0gICAgY2hhciAqcTsKKyAgICBQeV9zc2l6ZV90IGksIHNpemUsIGV4cGFuZHNpemU7CisgICAgdm9pZCAqZGF0YTsKKyAgICB1bnNpZ25lZCBpbnQga2luZDsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyICpoZXhkaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgIGNvbnN0IFB5X3NzaXplX3QgZXhwYW5kc2l6ZSA9IDEwOwotI2Vsc2UKLSAgICBjb25zdCBQeV9zc2l6ZV90IGV4cGFuZHNpemUgPSA2OwotI2VuZGlmCi0gICAgCisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKG9iaik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKG9iaik7CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpCisgICAgICAgIGV4cGFuZHNpemUgPSAxMDsKKyAgICBlbHNlCisgICAgICAgIGV4cGFuZHNpemUgPSA2OworCiAgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAvIGV4cGFuZHNpemUpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIAogICAgIHJlcHIgPSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBleHBhbmRzaXplICogc2l6ZSk7CiAgICAgaWYgKHJlcHIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNpemUgPT0gMCkKICAgICAgICAgZ290byBkb25lOwogCi0gICAgcCA9IHEgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVwcik7Ci0gICAgd2hpbGUgKHNpemUtLSA+IDApIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9ICpzKys7Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCisgICAgcCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXByKTsKKyAgICBmb3IgKGk9MDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAgICAgICAgIC8qIE1hcCAzMi1iaXQgY2hhcmFjdGVycyB0byAnXFV4eHh4eHh4eCcgKi8KICAgICAgICAgaWYgKGNoID49IDB4MTAwMDApIHsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMjApICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDE1XTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDE1XTsKICAgICAgICAgfQotICAgICAgICBlbHNlCi0jZWxzZQotICAgICAgICAgICAgLyogTWFwIFVURi0xNiBzdXJyb2dhdGUgcGFpcnMgdG8gJ1xVMDB4eHh4eHgnICovCi0gICAgICAgICAgICBpZiAoY2ggPj0gMHhEODAwICYmIGNoIDwgMHhEQzAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjaDI7Ci0gICAgICAgICAgICAgICAgUHlfVUNTNCB1Y3M7Ci0KLSAgICAgICAgICAgICAgICBjaDIgPSAqcysrOwotICAgICAgICAgICAgICAgIHNpemUtLTsKLSAgICAgICAgICAgICAgICBpZiAoY2gyID49IDB4REMwMCAmJiBjaDIgPD0gMHhERkZGKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVjcyA9ICgoKGNoICYgMHgwM0ZGKSA8PCAxMCkgfCAoY2gyICYgMHgwM0ZGKSkgKyAweDAwMDEwMDAwOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDI4KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyNCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjApICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDE2KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gOCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gNCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW3VjcyAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBGYWxsIHRocm91Z2g6IGlzb2xhdGVkIHN1cnJvZ2F0ZXMgYXJlIGNvcGllZCBhcy1pcyAqLwotICAgICAgICAgICAgICAgIHMtLTsKLSAgICAgICAgICAgICAgICBzaXplKys7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdXh4eHgnICovCi0gICAgICAgIGlmIChjaCA+PSAyNTYgfHwgY2ggPT0gJ1xcJyB8fCBjaCA9PSAnXG4nKSB7CisgICAgICAgIGVsc2UgaWYgKGNoID49IDI1NiB8fCBjaCA9PSAnXFwnIHx8IGNoID09ICdcbicpIHsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICd1JzsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMTVdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAxNV07CiAgICAgICAgIH0KICAgICAgICAgLyogQ29weSBldmVyeXRoaW5nIGVsc2UgYXMtaXMgKi8KICAgICAgICAgZWxzZQogICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKICAgICB9Ci0gICAgc2l6ZSA9IHAgLSBxOworICAgIHNpemUgPSBwIC0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlcHIpOwogCi0gIGRvbmU6Citkb25lOgogICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlcHIpLCBzaXplKTsKICAgICBQeV9ERUNSRUYocmVwcik7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE4OTYsMTYgKzE4ODEsMTQgQEAKICAgICBpZiAoc2VsZi0+YmluKSB7CiAgICAgICAgIGNoYXIgcGRhdGFbNV07CiAKLSAgICAgICAgZW5jb2RlZCA9IFB5VW5pY29kZV9FbmNvZGVVVEY4KFB5VW5pY29kZV9BU19VTklDT0RFKG9iaiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVwYXNzIik7CisgICAgICAgIGVuY29kZWQgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKG9iaiwgInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKTsKICAgICAgICAgaWYgKGVuY29kZWQgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoZW5jb2RlZCk7CiAgICAgICAgIGlmIChzaXplID4gMHhmZmZmZmZmZkwpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3Qgc2VyaWFsaXplIGEgc3RyaW5nIGxhcmdlciB0aGFuIDRHQiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3Qgc2VyaWFsaXplIGEgc3RyaW5nIGxhcmdlciB0aGFuIDQgR2lCIik7CiAgICAgICAgICAgICBnb3RvIGVycm9yOyAgICAgICAgICAvKiBzdHJpbmcgdG9vIGxhcmdlICovCiAgICAgICAgIH0KIApAQCAtMTkyNCw4ICsxOTA3LDcgQEAKICAgICBlbHNlIHsKICAgICAgICAgY29uc3QgY2hhciB1bmljb2RlX29wID0gVU5JQ09ERTsKIAotICAgICAgICBlbmNvZGVkID0gcmF3X3VuaWNvZGVfZXNjYXBlKFB5VW5pY29kZV9BU19VTklDT0RFKG9iaiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKG9iaikpOworICAgICAgICBlbmNvZGVkID0gcmF3X3VuaWNvZGVfZXNjYXBlKG9iaik7CiAgICAgICAgIGlmIChlbmNvZGVkID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCkBAIC0yNTQ0LDcgKzI1MjYsOSBAQAogICAgICAgICAgICAgc3RhdHVzID0gYmF0Y2hfZGljdF9leGFjdChzZWxmLCBvYmopOwogICAgICAgICAgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpdGVtcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qob2JqLCAiaXRlbXMiLCAiKCkiKTsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKGl0ZW1zKTsKKworICAgICAgICAgICAgaXRlbXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG9iaiwgJlB5SWRfaXRlbXMsICIoKSIpOwogICAgICAgICAgICAgaWYgKGl0ZW1zID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIGl0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZW1zKTsKQEAgLTI4MjgsNiArMjgxMiwzMCBAQAogfQogCiBzdGF0aWMgaW50CitzYXZlX2VsbGlwc2lzKFBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCit7CisgICAgUHlPYmplY3QgKnN0ciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJFbGxpcHNpcyIpOworICAgIGludCByZXM7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmVzID0gc2F2ZV9nbG9iYWwoc2VsZiwgUHlfRWxsaXBzaXMsIHN0cik7CisgICAgUHlfREVDUkVGKHN0cik7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIGludAorc2F2ZV9ub3RpbXBsZW1lbnRlZChQaWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQoreworICAgIFB5T2JqZWN0ICpzdHIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiTm90SW1wbGVtZW50ZWQiKTsKKyAgICBpbnQgcmVzOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJlcyA9IHNhdmVfZ2xvYmFsKHNlbGYsIFB5X05vdEltcGxlbWVudGVkLCBzdHIpOworICAgIFB5X0RFQ1JFRihzdHIpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBpbnQKIHNhdmVfcGVycyhQaWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqZnVuYykKIHsKICAgICBQeU9iamVjdCAqcGlkID0gTlVMTDsKQEAgLTI4ODEsNiArMjg4OSwyOCBAQAogICAgIHJldHVybiBzdGF0dXM7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfY2xhc3MoUHlPYmplY3QgKm9iaikKK3sKKyAgICBQeU9iamVjdCAqY2xzOworICAgIHN0YXRpYyBQeU9iamVjdCAqc3RyX2NsYXNzOworCisgICAgaWYgKHN0cl9jbGFzcyA9PSBOVUxMKSB7CisgICAgICAgIHN0cl9jbGFzcyA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2NsYXNzX18iKTsKKyAgICAgICAgaWYgKHN0cl9jbGFzcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGNscyA9IFB5T2JqZWN0X0dldEF0dHIob2JqLCBzdHJfY2xhc3MpOworICAgIGlmIChjbHMgPT0gTlVMTCkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICBjbHMgPSAoUHlPYmplY3QgKikgUHlfVFlQRShvYmopOworICAgICAgICAgICAgUHlfSU5DUkVGKGNscyk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGNsczsKK30KKwogLyogV2UncmUgc2F2aW5nIG9iaiwgYW5kIGFyZ3MgaXMgdGhlIDItdGhydS01IHR1cGxlIHJldHVybmVkIGJ5IHRoZQogICogYXBwcm9wcmlhdGUgX19yZWR1Y2VfXyBtZXRob2QgZm9yIG9iai4KICAqLwpAQCAtMjk0NiwxNyArMjk3NiwxOCBAQAogICAgIC8qIFByb3RvY29sIDIgc3BlY2lhbCBjYXNlOiBpZiBjYWxsYWJsZSdzIG5hbWUgaXMgX19uZXdvYmpfXywgdXNlCiAgICAgICAgTkVXT0JKLiAqLwogICAgIGlmICh1c2VfbmV3b2JqKSB7Ci0gICAgICAgIHN0YXRpYyBQeU9iamVjdCAqbmV3b2JqX3N0ciA9IE5VTEw7Ci0gICAgICAgIFB5T2JqZWN0ICpuYW1lX3N0cjsKKyAgICAgICAgc3RhdGljIFB5T2JqZWN0ICpuZXdvYmpfc3RyID0gTlVMTCwgKm5hbWVfc3RyID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3QgKm5hbWU7CiAKICAgICAgICAgaWYgKG5ld29ial9zdHIgPT0gTlVMTCkgewogICAgICAgICAgICAgbmV3b2JqX3N0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX25ld29ial9fIik7Ci0gICAgICAgICAgICBpZiAobmV3b2JqX3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgbmFtZV9zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19uYW1lX18iKTsKKyAgICAgICAgICAgIGlmIChuZXdvYmpfc3RyID09IE5VTEwgfHwgbmFtZV9zdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KIAotICAgICAgICBuYW1lX3N0ciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoY2FsbGFibGUsICJfX25hbWVfXyIpOwotICAgICAgICBpZiAobmFtZV9zdHIgPT0gTlVMTCkgeworICAgICAgICBuYW1lID0gUHlPYmplY3RfR2V0QXR0cihjYWxsYWJsZSwgbmFtZV9zdHIpOworICAgICAgICBpZiAobmFtZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTI5NjQsOSArMjk5NSw5IEBACiAgICAgICAgICAgICB1c2VfbmV3b2JqID0gMDsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHVzZV9uZXdvYmogPSBQeVVuaWNvZGVfQ2hlY2sobmFtZV9zdHIpICYmIAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlKG5hbWVfc3RyLCBuZXdvYmpfc3RyKSA9PSAwOwotICAgICAgICAgICAgUHlfREVDUkVGKG5hbWVfc3RyKTsKKyAgICAgICAgICAgIHVzZV9uZXdvYmogPSBQeVVuaWNvZGVfQ2hlY2sobmFtZSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQ29tcGFyZShuYW1lLCBuZXdvYmpfc3RyKSA9PSAwOworICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICh1c2VfbmV3b2JqKSB7CkBAIC0yOTgyLDIwICszMDEzLDE0IEBACiAgICAgICAgIH0KIAogICAgICAgICBjbHMgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3R1cCwgMCk7Ci0gICAgICAgIGlmICghUHlPYmplY3RfSGFzQXR0clN0cmluZyhjbHMsICJfX25ld19fIikpIHsKKyAgICAgICAgaWYgKCFQeVR5cGVfQ2hlY2soY2xzKSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFBpY2tsaW5nRXJyb3IsICJhcmdzWzBdIGZyb20gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX25ld29ial9fIGFyZ3MgaGFzIG5vIF9fbmV3X18iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19uZXdvYmpfXyBhcmdzIGlzIG5vdCBhIHR5cGUiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChvYmogIT0gTlVMTCkgewotICAgICAgICAgICAgb2JqX2NsYXNzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJfX2NsYXNzX18iKTsKLSAgICAgICAgICAgIGlmIChvYmpfY2xhc3MgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9ial9jbGFzcyA9IGdldF9jbGFzcyhvYmopOwogICAgICAgICAgICAgcCA9IG9ial9jbGFzcyAhPSBjbHM7ICAgIC8qIHRydWUgaWZmIGEgcHJvYmxlbSAqLwogICAgICAgICAgICAgUHlfREVDUkVGKG9ial9jbGFzcyk7CiAgICAgICAgICAgICBpZiAocCkgewpAQCAtMzA2OSw3ICszMDk0LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKHN0YXRlKSB7Ci0gICAgICAgIGlmIChzYXZlKHNlbGYsIHN0YXRlLCAwKSA8IDAgfHwgCisgICAgICAgIGlmIChzYXZlKHNlbGYsIHN0YXRlLCAwKSA8IDAgfHwKICAgICAgICAgICAgIF9QaWNrbGVyX1dyaXRlKHNlbGYsICZidWlsZF9vcCwgMSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTMxMTMsNiArMzEzOCwxNCBAQAogICAgICAgICBzdGF0dXMgPSBzYXZlX25vbmUoc2VsZiwgb2JqKTsKICAgICAgICAgZ290byBkb25lOwogICAgIH0KKyAgICBlbHNlIGlmIChvYmogPT0gUHlfRWxsaXBzaXMpIHsKKyAgICAgICAgc3RhdHVzID0gc2F2ZV9lbGxpcHNpcyhzZWxmLCBvYmopOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorICAgIGVsc2UgaWYgKG9iaiA9PSBQeV9Ob3RJbXBsZW1lbnRlZCkgeworICAgICAgICBzdGF0dXMgPSBzYXZlX25vdGltcGxlbWVudGVkKHNlbGYsIG9iaik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CiAgICAgZWxzZSBpZiAob2JqID09IFB5X0ZhbHNlIHx8IG9iaiA9PSBQeV9UcnVlKSB7CiAgICAgICAgIHN0YXR1cyA9IHNhdmVfYm9vbChzZWxmLCBvYmopOwogICAgICAgICBnb3RvIGRvbmU7CkBAIC0zMTc3LDE3ICszMjEwLDI0IEBACiAgICAgLyogWFhYOiBUaGlzIHBhcnQgbmVlZHMgc29tZSB1bml0IHRlc3RzLiAqLwogCiAgICAgLyogR2V0IGEgcmVkdWN0aW9uIGNhbGxhYmxlLCBhbmQgY2FsbCBpdC4gIFRoaXMgbWF5IGNvbWUgZnJvbQotICAgICAqIGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUsIHRoZSBvYmplY3QncyBfX3JlZHVjZV9leF9fIG1ldGhvZCwKLSAgICAgKiBvciB0aGUgb2JqZWN0J3MgX19yZWR1Y2VfXyBtZXRob2QuCisgICAgICogc2VsZi5kaXNwYXRjaF90YWJsZSwgY29weXJlZy5kaXNwYXRjaF90YWJsZSwgdGhlIG9iamVjdCdzCisgICAgICogX19yZWR1Y2VfZXhfXyBtZXRob2QsIG9yIHRoZSBvYmplY3QncyBfX3JlZHVjZV9fIG1ldGhvZC4KICAgICAgKi8KLSAgICByZWR1Y2VfZnVuYyA9IFB5RGljdF9HZXRJdGVtKGRpc3BhdGNoX3RhYmxlLCAoUHlPYmplY3QgKil0eXBlKTsKKyAgICBpZiAoc2VsZi0+ZGlzcGF0Y2hfdGFibGUgPT0gTlVMTCkgeworICAgICAgICByZWR1Y2VfZnVuYyA9IFB5RGljdF9HZXRJdGVtKGRpc3BhdGNoX3RhYmxlLCAoUHlPYmplY3QgKil0eXBlKTsKKyAgICAgICAgLyogUHlEaWN0X0dldEl0ZW0oKSB1bmxpa2UgUHlPYmplY3RfR2V0SXRlbSgpIGFuZAorICAgICAgICAgICBQeU9iamVjdF9HZXRBdHRyKCkgcmV0dXJucyBhIGJvcnJvd2VkIHJlZiAqLworICAgICAgICBQeV9YSU5DUkVGKHJlZHVjZV9mdW5jKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZWR1Y2VfZnVuYyA9IFB5T2JqZWN0X0dldEl0ZW0oc2VsZi0+ZGlzcGF0Y2hfdGFibGUsIChQeU9iamVjdCAqKXR5cGUpOworICAgICAgICBpZiAocmVkdWNlX2Z1bmMgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQorICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KICAgICBpZiAocmVkdWNlX2Z1bmMgIT0gTlVMTCkgewotICAgICAgICAvKiBIZXJlLCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSByZWR1Y2VfZnVuYyBvYmplY3QgcmV0dXJuZWQgYnkKLSAgICAgICAgICAgUHlEaWN0X0dldEl0ZW0gbmVlZHMgdG8gYmUgaW5jcmVhc2VkIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgb25lCi0gICAgICAgICAgIHJldHVybmVkIGJ5IFB5T2JqZWN0X0dldEF0dHIuIFRoaXMgaXMgYWxsb3cgdXMgdG8gYmxpbmRseSBERUNSRUYKLSAgICAgICAgICAgcmVkdWNlX2Z1bmMgYXQgdGhlIGVuZCBvZiB0aGUgc2F2ZSgpIHJvdXRpbmUuCi0gICAgICAgICovCi0gICAgICAgIFB5X0lOQ1JFRihyZWR1Y2VfZnVuYyk7CiAgICAgICAgIFB5X0lOQ1JFRihvYmopOwogICAgICAgICByZWR1Y2VfdmFsdWUgPSBfUGlja2xlcl9GYXN0Q2FsbChzZWxmLCByZWR1Y2VfZnVuYywgb2JqKTsKICAgICB9CkBAIC0zMzIzLDcgKzMzNjMsNyBAQAogICAgICAgIERldmVsb3BlcnMgb2Z0ZW4gZm9yZ2V0IHRvIGNhbGwgX19pbml0X18oKSBpbiB0aGVpciBzdWJjbGFzc2VzLCB3aGljaAogICAgICAgIHdvdWxkIHRyaWdnZXIgYSBzZWdmYXVsdCB3aXRob3V0IHRoaXMgY2hlY2suICovCiAgICAgaWYgKHNlbGYtPndyaXRlID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFBpY2tsaW5nRXJyb3IsIAorICAgICAgICBQeUVycl9Gb3JtYXQoUGlja2xpbmdFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJQaWNrbGVyLl9faW5pdF9fKCkgd2FzIG5vdCBjYWxsZWQgYnkgJXMuX19pbml0X18oKSIsCiAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMzYwLDYgKzM0MDAsNyBAQAogICAgIFB5X1hERUNSRUYoc2VsZi0+b3V0cHV0X2J1ZmZlcik7CiAgICAgUHlfWERFQ1JFRihzZWxmLT53cml0ZSk7CiAgICAgUHlfWERFQ1JFRihzZWxmLT5wZXJzX2Z1bmMpOworICAgIFB5X1hERUNSRUYoc2VsZi0+ZGlzcGF0Y2hfdGFibGUpOwogICAgIFB5X1hERUNSRUYoc2VsZi0+YXJnKTsKICAgICBQeV9YREVDUkVGKHNlbGYtPmZhc3RfbWVtbyk7CiAKQEAgLTMzNzMsNiArMzQxNCw3IEBACiB7CiAgICAgUHlfVklTSVQoc2VsZi0+d3JpdGUpOwogICAgIFB5X1ZJU0lUKHNlbGYtPnBlcnNfZnVuYyk7CisgICAgUHlfVklTSVQoc2VsZi0+ZGlzcGF0Y2hfdGFibGUpOwogICAgIFB5X1ZJU0lUKHNlbGYtPmFyZyk7CiAgICAgUHlfVklTSVQoc2VsZi0+ZmFzdF9tZW1vKTsKICAgICByZXR1cm4gMDsKQEAgLTMzODQsNiArMzQyNiw3IEBACiAgICAgUHlfQ0xFQVIoc2VsZi0+b3V0cHV0X2J1ZmZlcik7CiAgICAgUHlfQ0xFQVIoc2VsZi0+d3JpdGUpOwogICAgIFB5X0NMRUFSKHNlbGYtPnBlcnNfZnVuYyk7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZGlzcGF0Y2hfdGFibGUpOwogICAgIFB5X0NMRUFSKHNlbGYtPmFyZyk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+ZmFzdF9tZW1vKTsKIApAQCAtMzQyNyw2ICszNDcwLDggQEAKICAgICBQeU9iamVjdCAqZmlsZTsKICAgICBQeU9iamVjdCAqcHJvdG9fb2JqID0gTlVMTDsKICAgICBQeU9iamVjdCAqZml4X2ltcG9ydHMgPSBQeV9UcnVlOworICAgIF9QeV9JREVOVElGSUVSKHBlcnNpc3RlbnRfaWQpOworICAgIF9QeV9JREVOVElGSUVSKGRpc3BhdGNoX3RhYmxlKTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9POlBpY2tsZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmZpbGUsICZwcm90b19vYmosICZmaXhfaW1wb3J0cykpCkBAIC0zNDYyLDEyICszNTA3LDE5IEBACiAgICAgc2VsZi0+ZmFzdF9uZXN0aW5nID0gMDsKICAgICBzZWxmLT5mYXN0X21lbW8gPSBOVUxMOwogICAgIHNlbGYtPnBlcnNfZnVuYyA9IE5VTEw7Ci0gICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcoKFB5T2JqZWN0ICopc2VsZiwgInBlcnNpc3RlbnRfaWQiKSkgewotICAgICAgICBzZWxmLT5wZXJzX2Z1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKXNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcnNpc3RlbnRfaWQiKTsKKyAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9wZXJzaXN0ZW50X2lkKSkgeworICAgICAgICBzZWxmLT5wZXJzX2Z1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfcGVyc2lzdGVudF9pZCk7CiAgICAgICAgIGlmIChzZWxmLT5wZXJzX2Z1bmMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgc2VsZi0+ZGlzcGF0Y2hfdGFibGUgPSBOVUxMOworICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2Rpc3BhdGNoX3RhYmxlKSkgeworICAgICAgICBzZWxmLT5kaXNwYXRjaF90YWJsZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX2Rpc3BhdGNoX3RhYmxlKTsKKyAgICAgICAgaWYgKHNlbGYtPmRpc3BhdGNoX3RhYmxlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIHJldHVybiAwOwogfQogCkBAIC0zNzQ5LDYgKzM4MDEsNyBAQAogc3RhdGljIFB5TWVtYmVyRGVmIFBpY2tsZXJfbWVtYmVyc1tdID0gewogICAgIHsiYmluIiwgVF9JTlQsIG9mZnNldG9mKFBpY2tsZXJPYmplY3QsIGJpbil9LAogICAgIHsiZmFzdCIsIFRfSU5ULCBvZmZzZXRvZihQaWNrbGVyT2JqZWN0LCBmYXN0KX0sCisgICAgeyJkaXNwYXRjaF90YWJsZSIsIFRfT0JKRUNUX0VYLCBvZmZzZXRvZihQaWNrbGVyT2JqZWN0LCBkaXNwYXRjaF90YWJsZSl9LAogICAgIHtOVUxMfQogfTsKIApAQCAtMzgwMyw3ICszODU2LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2lzX2djKi8KIH07CiAKLS8qIFRlbXBvcmFyeSBoZWxwZXIgZm9yIGNhbGxpbmcgc2VsZi5maW5kX2NsYXNzKCkuIAorLyogVGVtcG9yYXJ5IGhlbHBlciBmb3IgY2FsbGluZyBzZWxmLmZpbmRfY2xhc3MoKS4KIAogICAgWFhYOiBJdCB3b3VsZCBiZSBuaWNlIHRvIGFibGUgdG8gYXZvaWQgUHl0aG9uIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQsIGJ5CiAgICB1c2luZyBkaXJlY3RseSB0aGUgQyB2ZXJzaW9uIG9mIGZpbmRfY2xhc3MoKSwgd2hlbiBmaW5kX2NsYXNzKCkgaXMgbm90CkBAIC0zODEzLDggKzM4NjYsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmaW5kX2NsYXNzKFVucGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm1vZHVsZV9uYW1lLCBQeU9iamVjdCAqZ2xvYmFsX25hbWUpCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopc2VsZiwgImZpbmRfY2xhc3MiLCAiT08iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lLCBnbG9iYWxfbmFtZSk7CisgICAgX1B5X0lERU5USUZJRVIoZmluZF9jbGFzcyk7CisKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9maW5kX2NsYXNzLCAiT08iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lLCBnbG9iYWxfbmFtZSk7CiB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90CkBAIC0zODU2LDcgKzM5MTEsNyBAQAogICAgICAgICByZXR1cm4gYmFkX3JlYWRsaW5lKCk7CiAKICAgICBlcnJubyA9IDA7Ci0gICAgLyogWFhYOiBTaG91bGQgdGhlIGJhc2UgYXJndW1lbnQgb2Ygc3RydG9sKCkgYmUgZXhwbGljaXRseSBzZXQgdG8gMTA/IAorICAgIC8qIFhYWDogU2hvdWxkIHRoZSBiYXNlIGFyZ3VtZW50IG9mIHN0cnRvbCgpIGJlIGV4cGxpY2l0bHkgc2V0IHRvIDEwPwogICAgICAgIFhYWChhdmFzc2Fsb3R0aSk6IFNob3VsZCB0aGlzIHVzZXMgUHlPU19zdHJ0b2woKT8gKi8KICAgICB4ID0gc3RydG9sKHMsICZlbmRwdHIsIDApOwogCkBAIC00MjIxLDcgKzQyNzYsNyBAQAogCiAgICAgeCA9IGNhbGNfYmluaW50KHMsIDQpOwogICAgIGlmICh4IDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoVW5waWNrbGluZ0Vycm9yLCAKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFVucGlja2xpbmdFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJCSU5TVFJJTkcgcGlja2xlIGhhcyBuZWdhdGl2ZSBieXRlIGNvdW50Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC00NDE4LDE2ICs0NDczLDE5IEBACiBpbnN0YW50aWF0ZShQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2dldGluaXRhcmdzX18pOwogICAgIC8qIENhbGxlciBtdXN0IGFzc3VyZSBhcmdzIGFyZSBhIHR1cGxlLiAgTm9ybWFsbHksIGFyZ3MgY29tZSBmcm9tCiAgICAgICAgUGRhdGFfcG9wdHVwbGUgd2hpY2ggcGFja3Mgb2JqZWN0cyBmcm9tIHRoZSB0b3Agb2YgdGhlIHN0YWNrCiAgICAgICAgaW50byBhIG5ld2x5IGNyZWF0ZWQgdHVwbGUuICovCiAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwogICAgIGlmIChQeV9TSVpFKGFyZ3MpID4gMCB8fCAhUHlUeXBlX0NoZWNrKGNscykgfHwKLSAgICAgICAgUHlPYmplY3RfSGFzQXR0clN0cmluZyhjbHMsICJfX2dldGluaXRhcmdzX18iKSkgeworICAgICAgICBfUHlPYmplY3RfSGFzQXR0cklkKGNscywgJlB5SWRfX19nZXRpbml0YXJnc19fKSkgewogICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGNscywgYXJncyk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGNscywgIl9fbmV3X18iLCAiTyIsIGNscyk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3X18pOworCisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoY2xzLCAmUHlJZF9fX25ld19fLCAiTyIsIGNscyk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC00OTY4LDggKzUwMjYsOSBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlPYmplY3QgKmFwcGVuZF9mdW5jOworICAgICAgICBfUHlfSURFTlRJRklFUihhcHBlbmQpOwogCi0gICAgICAgIGFwcGVuZF9mdW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhsaXN0LCAiYXBwZW5kIik7CisgICAgICAgIGFwcGVuZF9mdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChsaXN0LCAmUHlJZF9hcHBlbmQpOwogICAgICAgICBpZiAoYXBwZW5kX2Z1bmMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgZm9yIChpID0geDsgaSA8IGxlbjsgaSsrKSB7CkBAIC01MDE1LDcgKzUwNzQsNyBAQAogICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CiAgICAgaWYgKGxlbiA9PSB4KSAgLyogbm90aGluZyB0byBkbyAqLwogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoKGxlbiAtIHgpICUgMiAhPSAwKSB7IAorICAgIGlmICgobGVuIC0geCkgJSAyICE9IDApIHsKICAgICAgICAgLyogQ3VycnVwdCBvciBob3N0aWxlIHBpY2tsZSAtLSB3ZSBuZXZlciB3cml0ZSBvbmUgbGlrZSB0aGlzLiAqLwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoVW5waWNrbGluZ0Vycm9yLCAib2RkIG51bWJlciBvZiBpdGVtcyBmb3IgU0VUSVRFTVMiKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNTA1Niw2ICs1MTE1LDcgQEAKICAgICBQeU9iamVjdCAqc3RhdGUsICppbnN0LCAqc2xvdHN0YXRlOwogICAgIFB5T2JqZWN0ICpzZXRzdGF0ZTsKICAgICBpbnQgc3RhdHVzID0gMDsKKyAgICBfUHlfSURFTlRJRklFUihfX3NldHN0YXRlX18pOwogCiAgICAgLyogU3RhY2sgaXMgLi4uIGluc3RhbmNlLCBzdGF0ZS4gIFdlIHdhbnQgdG8gbGVhdmUgaW5zdGFuY2UgYXQKICAgICAgKiB0aGUgc3RhY2sgdG9wLCBwb3NzaWJseSBtdXRhdGVkIHZpYSBpbnN0YW5jZS5fX3NldHN0YXRlX18oc3RhdGUpLgpAQCAtNTA2OSw3ICs1MTI5LDcgQEAKIAogICAgIGluc3QgPSBzZWxmLT5zdGFjay0+ZGF0YVtQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDFdOwogCi0gICAgc2V0c3RhdGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGluc3QsICJfX3NldHN0YXRlX18iKTsKKyAgICBzZXRzdGF0ZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoaW5zdCwgJlB5SWRfX19zZXRzdGF0ZV9fKTsKICAgICBpZiAoc2V0c3RhdGUgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtNTExMiwxMiArNTE3MiwxMyBAQAogICAgICAgICBQeU9iamVjdCAqZGljdDsKICAgICAgICAgUHlPYmplY3QgKmRfa2V5LCAqZF92YWx1ZTsKICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CiAKICAgICAgICAgaWYgKCFQeURpY3RfQ2hlY2soc3RhdGUpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoVW5waWNrbGluZ0Vycm9yLCAic3RhdGUgaXMgbm90IGEgZGljdGlvbmFyeSIpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpbnN0LCAiX19kaWN0X18iKTsKKyAgICAgICAgZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoaW5zdCwgJlB5SWRfX19kaWN0X18pOwogICAgICAgICBpZiAoZGljdCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtNTM3Miw3ICs1NDMzLDcgQEAKICAgICAgICBub3QgY2FsbCBVbnBpY2tsZXIuX19pbml0X18oKS4gSGVyZSwgd2Ugc2ltcGx5IGVuc3VyZSB0aGF0IHNlbGYtPnJlYWQKICAgICAgICBpcyBub3QgTlVMTC4gKi8KICAgICBpZiAoc2VsZi0+cmVhZCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChVbnBpY2tsaW5nRXJyb3IsIAorICAgICAgICBQeUVycl9Gb3JtYXQoVW5waWNrbGluZ0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgIlVucGlja2xlci5fX2luaXRfXygpIHdhcyBub3QgY2FsbGVkIGJ5ICVzLl9faW5pdF9fKCkiLAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTQ3NCw3ICs1NTM1LDcgQEAKICAgICAgICAgZ2xvYmFsID0gUHlPYmplY3RfR2V0QXR0cihtb2R1bGUsIGdsb2JhbF9uYW1lKTsKICAgICAgICAgUHlfREVDUkVGKG1vZHVsZSk7CiAgICAgfQotICAgIGVsc2UgeyAKKyAgICBlbHNlIHsKICAgICAgICAgZ2xvYmFsID0gUHlPYmplY3RfR2V0QXR0cihtb2R1bGUsIGdsb2JhbF9uYW1lKTsKICAgICB9CiAgICAgcmV0dXJuIGdsb2JhbDsKQEAgLTU1ODIsNiArNTY0Myw3IEBACiAgICAgUHlPYmplY3QgKmZpeF9pbXBvcnRzID0gUHlfVHJ1ZTsKICAgICBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAgICAgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihwZXJzaXN0ZW50X2xvYWQpOwogCiAgICAgLyogWFhYOiBUaGF0IGlzIGFuIGhvcnJpYmxlIGVycm9yIG1lc3NhZ2UuIEJ1dCwgSSBkb24ndCBrbm93IGhvdyB0byBkbwogICAgICAgIGJldHRlci4uLiAqLwpAQCAtNTYxNiw5ICs1Njc4LDkgQEAKICAgICBpZiAoc2VsZi0+Zml4X2ltcG9ydHMgPT0gLTEpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKChQeU9iamVjdCAqKXNlbGYsICJwZXJzaXN0ZW50X2xvYWQiKSkgewotICAgICAgICBzZWxmLT5wZXJzX2Z1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKXNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcnNpc3RlbnRfbG9hZCIpOworICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX3BlcnNpc3RlbnRfbG9hZCkpIHsKKyAgICAgICAgc2VsZi0+cGVyc19mdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX3BlcnNpc3RlbnRfbG9hZCk7CiAgICAgICAgIGlmIChzZWxmLT5wZXJzX2Z1bmMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC01NjUxLDcgKzU3MTMsNyBAQAogICogaW50ZW50aW9uYWwsIGFzIHRoZXNlIHNob3VsZCBiZSB0cmVhdGVkIGFzIGJsYWNrLWJveCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgogICoKICAqIFdlIGRvLCBob3dldmVyLCBoYXZlIHRvIGltcGxlbWVudCBwaWNrbGluZy91bnBpY2tsaW5nIHN1cHBvcnQgYmVjYXVzZSBvZgotICogcmVhbC13b3JsZCBjb2RlIGxpa2UgY3ZzMnN2bi4gCisgKiByZWFsLXdvcmxkIGNvZGUgbGlrZSBjdnMyc3ZuLgogICovCiAKIHR5cGVkZWYgc3RydWN0IHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Bvc2l4c3VicHJvY2Vzcy5jIGIvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKaW5kZXggMTljYTMxZi4uMDdkNzA5NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKKysrIGIvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKQEAgLTQ3LDcgKzQ3LDkgQEAKIF9lbmFibGVfZ2MoUHlPYmplY3QgKmdjX21vZHVsZSkKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZ2NfbW9kdWxlLCAiZW5hYmxlIiwgTlVMTCk7CisgICAgX1B5X0lERU5USUZJRVIoZW5hYmxlKTsKKworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZ2NfbW9kdWxlLCAmUHlJZF9lbmFibGUsIE5VTEwpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDE7CiAgICAgUHlfREVDUkVGKHJlc3VsdCk7CkBAIC03OCw3ICs4MCw3IEBACiAgKiB0aGF0IHByb3Blcmx5IHN1cHBvcnRzIC9kZXYvZmQuCiAgKi8KIHN0YXRpYyBpbnQKLV9pc19mZGVzY2ZzX21vdW50ZWRfb25fZGV2X2ZkKCkKK19pc19mZGVzY2ZzX21vdW50ZWRfb25fZGV2X2ZkKHZvaWQpCiB7CiAgICAgc3RydWN0IHN0YXQgZGV2X3N0YXQ7CiAgICAgc3RydWN0IHN0YXQgZGV2X2ZkX3N0YXQ7CkBAIC0xNzQsMTcgKzE3NiwxMSBAQAogICogVGhpcyBzdHJ1Y3R1cmUgaXMgdmVyeSBvbGQgYW5kIHN0YWJsZTogSXQgd2lsbCBub3QgY2hhbmdlIHVubGVzcyB0aGUga2VybmVsCiAgKiBjaG9vc2VzIHRvIGJyZWFrIGNvbXBhdGliaWxpdHkgd2l0aCBhbGwgZXhpc3RpbmcgYmluYXJpZXMuICBIaWdobHkgVW5saWtlbHkuCiAgKi8KLXN0cnVjdCBsaW51eF9kaXJlbnQgewotI2lmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX0lMUDMyX18pCi0gICAvKiBTdXBwb3J0IHRoZSB3YWNreSB4MzIgQUJJIChmYWtlIDMyLWJpdCB1c2Vyc3BhY2Ugc3BlYWtpbmcgdG8geDg2XzY0Ci0gICAgKiBrZXJuZWwgaW50ZXJmYWNlcykgLSBodHRwczovL3NpdGVzLmdvb2dsZS5jb20vc2l0ZS94MzJhYmkvICovCitzdHJ1Y3QgbGludXhfZGlyZW50NjQgewogICAgdW5zaWduZWQgbG9uZyBsb25nIGRfaW5vOwotICAgdW5zaWduZWQgbG9uZyBsb25nIGRfb2ZmOwotI2Vsc2UKLSAgIHVuc2lnbmVkIGxvbmcgIGRfaW5vOyAgICAgICAgLyogSW5vZGUgbnVtYmVyICovCi0gICB1bnNpZ25lZCBsb25nICBkX29mZjsgICAgICAgIC8qIE9mZnNldCB0byBuZXh0IGxpbnV4X2RpcmVudCAqLwotI2VuZGlmCisgICBsb25nIGxvbmcgZF9vZmY7CiAgICB1bnNpZ25lZCBzaG9ydCBkX3JlY2xlbjsgICAgIC8qIExlbmd0aCBvZiB0aGlzIGxpbnV4X2RpcmVudCAqLworICAgdW5zaWduZWQgY2hhciAgZF90eXBlOwogICAgY2hhciAgICAgICAgICAgZF9uYW1lWzI1Nl07ICAvKiBGaWxlbmFtZSAobnVsbC10ZXJtaW5hdGVkKSAqLwogfTsKIApAQCAtMjI2LDE2ICsyMjIsMTYgQEAKICAgICAgICAgX2Nsb3NlX2Zkc19ieV9icnV0ZV9mb3JjZShzdGFydF9mZCwgZW5kX2ZkLCBweV9mZHNfdG9fa2VlcCk7CiAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2UgewotICAgICAgICBjaGFyIGJ1ZmZlcltzaXplb2Yoc3RydWN0IGxpbnV4X2RpcmVudCldOworICAgICAgICBjaGFyIGJ1ZmZlcltzaXplb2Yoc3RydWN0IGxpbnV4X2RpcmVudDY0KV07CiAgICAgICAgIGludCBieXRlczsKLSAgICAgICAgd2hpbGUgKChieXRlcyA9IHN5c2NhbGwoU1lTX2dldGRlbnRzLCBmZF9kaXJfZmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgbGludXhfZGlyZW50ICopYnVmZmVyLAorICAgICAgICB3aGlsZSAoKGJ5dGVzID0gc3lzY2FsbChTWVNfZ2V0ZGVudHM2NCwgZmRfZGlyX2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGxpbnV4X2RpcmVudDY0ICopYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoYnVmZmVyKSkpID4gMCkgewotICAgICAgICAgICAgc3RydWN0IGxpbnV4X2RpcmVudCAqZW50cnk7CisgICAgICAgICAgICBzdHJ1Y3QgbGludXhfZGlyZW50NjQgKmVudHJ5OwogICAgICAgICAgICAgaW50IG9mZnNldDsKICAgICAgICAgICAgIGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IDwgYnl0ZXM7IG9mZnNldCArPSBlbnRyeS0+ZF9yZWNsZW4pIHsKICAgICAgICAgICAgICAgICBpbnQgZmQ7Ci0gICAgICAgICAgICAgICAgZW50cnkgPSAoc3RydWN0IGxpbnV4X2RpcmVudCAqKShidWZmZXIgKyBvZmZzZXQpOworICAgICAgICAgICAgICAgIGVudHJ5ID0gKHN0cnVjdCBsaW51eF9kaXJlbnQ2NCAqKShidWZmZXIgKyBvZmZzZXQpOwogICAgICAgICAgICAgICAgIGlmICgoZmQgPSBfcG9zX2ludF9mcm9tX2FzY2lpKGVudHJ5LT5kX25hbWUpKSA8IDApCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAgLyogTm90IGEgbnVtYmVyLiAqLwogICAgICAgICAgICAgICAgIGlmIChmZCAhPSBmZF9kaXJfZmQgJiYgZmQgPj0gc3RhcnRfZmQgJiYgZmQgPCBlbmRfZmQgJiYKQEAgLTUwNiw3ICs1MDIsNyBAQAogc3VicHJvY2Vzc19mb3JrX2V4ZWMoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpnY19tb2R1bGUgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpleGVjdXRhYmxlX2xpc3QsICpweV9jbG9zZV9mZHMsICpweV9mZHNfdG9fa2VlcDsKKyAgICBQeU9iamVjdCAqZXhlY3V0YWJsZV9saXN0LCAqcHlfZmRzX3RvX2tlZXA7CiAgICAgUHlPYmplY3QgKmVudl9saXN0LCAqcHJlZXhlY19mbjsKICAgICBQeU9iamVjdCAqcHJvY2Vzc19hcmdzLCAqY29udmVydGVkX2FyZ3MgPSBOVUxMLCAqZmFzdF9hcmdzID0gTlVMTDsKICAgICBQeU9iamVjdCAqcHJlZXhlY19mbl9hcmdzX3R1cGxlID0gTlVMTDsKQEAgLTUyMSwxNyArNTE3LDE0IEBACiAgICAgUHlfc3NpemVfdCBhcmdfbnVtOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKAotICAgICAgICAgICAgYXJncywgIk9PT09PT2lpaWlpaWlpaWlPOmZvcmtfZXhlYyIsCi0gICAgICAgICAgICAmcHJvY2Vzc19hcmdzLCAmZXhlY3V0YWJsZV9saXN0LCAmcHlfY2xvc2VfZmRzLCAmcHlfZmRzX3RvX2tlZXAsCisgICAgICAgICAgICBhcmdzLCAiT09wT09PaWlpaWlpaWlpaU86Zm9ya19leGVjIiwKKyAgICAgICAgICAgICZwcm9jZXNzX2FyZ3MsICZleGVjdXRhYmxlX2xpc3QsICZjbG9zZV9mZHMsICZweV9mZHNfdG9fa2VlcCwKICAgICAgICAgICAgICZjd2Rfb2JqLCAmZW52X2xpc3QsCiAgICAgICAgICAgICAmcDJjcmVhZCwgJnAyY3dyaXRlLCAmYzJwcmVhZCwgJmMycHdyaXRlLAogICAgICAgICAgICAgJmVycnJlYWQsICZlcnJ3cml0ZSwgJmVycnBpcGVfcmVhZCwgJmVycnBpcGVfd3JpdGUsCiAgICAgICAgICAgICAmcmVzdG9yZV9zaWduYWxzLCAmY2FsbF9zZXRzaWQsICZwcmVleGVjX2ZuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBjbG9zZV9mZHMgPSBQeU9iamVjdF9Jc1RydWUocHlfY2xvc2VfZmRzKTsKLSAgICBpZiAoY2xvc2VfZmRzIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKGNsb3NlX2ZkcyAmJiBlcnJwaXBlX3dyaXRlIDwgMykgeyAgLyogcHJlY29uZGl0aW9uICovCiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZXJycGlwZV93cml0ZSBtdXN0IGJlID49IDMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01NDgsMTAgKzU0MSwxMyBAQAogICAgIC8qIFdlIG5lZWQgdG8gY2FsbCBnYy5kaXNhYmxlKCkgd2hlbiB3ZSdsbCBiZSBjYWxsaW5nIHByZWV4ZWNfZm4gKi8KICAgICBpZiAocHJlZXhlY19mbiAhPSBQeV9Ob25lKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGlzZW5hYmxlZCk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGRpc2FibGUpOworICAgICAgICAKICAgICAgICAgZ2NfbW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJnYyIpOwogICAgICAgICBpZiAoZ2NfbW9kdWxlID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChnY19tb2R1bGUsICJpc2VuYWJsZWQiLCBOVUxMKTsKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChnY19tb2R1bGUsICZQeUlkX2lzZW5hYmxlZCwgTlVMTCk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGdjX21vZHVsZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTU2Miw3ICs1NTgsNyBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGdjX21vZHVsZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGdjX21vZHVsZSwgImRpc2FibGUiLCBOVUxMKTsKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChnY19tb2R1bGUsICZQeUlkX2Rpc2FibGUsIE5VTEwpOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihnY19tb2R1bGUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYyBiL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCmluZGV4IGJjOWIwNGEuLjY1NDBhYjkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCkBAIC0yMTAsNyArMjEwLDcgQEAKICAgICBQeU9iamVjdCAqbWFza2xvd2VyID0gTlVMTDsKICAgICBQeU9iamVjdCAqdGhpcnR5dHdvID0gTlVMTDsKICAgICBQeU9iamVjdCAqbiA9IE5VTEw7Ci0gICAgdW5zaWduZWQgbG9uZyAqa2V5ID0gTlVMTDsKKyAgICB1bnNpZ25lZCBsb25nICpuZXdfa2V5LCAqa2V5ID0gTlVMTDsKICAgICB1bnNpZ25lZCBsb25nIGtleW1heDsgICAgICAgICAgICAgICAvKiAjIG9mIGFsbG9jYXRlZCBzbG90cyBpbiBrZXkgKi8KICAgICB1bnNpZ25lZCBsb25nIGtleXVzZWQ7ICAgICAgICAgICAgICAvKiAjIG9mIHVzZWQgc2xvdHMgaW4ga2V5ICovCiAgICAgaW50IGVycjsKQEAgLTIyOCwxNiArMjI4LDE3IEBACiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQotICAgIC8qIElmIHRoZSBhcmcgaXMgYW4gaW50IG9yIGxvbmcsIHVzZSBpdHMgYWJzb2x1dGUgdmFsdWU7IGVsc2UgdXNlCi0gICAgICogdGhlIGFic29sdXRlIHZhbHVlIG9mIGl0cyBoYXNoIGNvZGUuCisgICAgLyogVGhpcyBhbGdvcml0aG0gcmVsaWVzIG9uIHRoZSBudW1iZXIgYmVpbmcgdW5zaWduZWQuCisgICAgICogU286IGlmIHRoZSBhcmcgaXMgYSBQeUxvbmcsIHVzZSBpdHMgYWJzb2x1dGUgdmFsdWUuCisgICAgICogT3RoZXJ3aXNlIHVzZSBpdHMgaGFzaCB2YWx1ZSwgY2FzdCB0byB1bnNpZ25lZC4KICAgICAgKi8KICAgICBpZiAoUHlMb25nX0NoZWNrKGFyZykpCiAgICAgICAgIG4gPSBQeU51bWJlcl9BYnNvbHV0ZShhcmcpOwogICAgIGVsc2UgewotICAgICAgICBsb25nIGhhc2ggPSBQeU9iamVjdF9IYXNoKGFyZyk7CisgICAgICAgIFB5X2hhc2hfdCBoYXNoID0gUHlPYmplY3RfSGFzaChhcmcpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIGdvdG8gRG9uZTsKLSAgICAgICAgbiA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKWhhc2gpOworICAgICAgICBuID0gUHlMb25nX0Zyb21TaXplX3QoKHNpemVfdCloYXNoKTsKICAgICB9CiAgICAgaWYgKG4gPT0gTlVMTCkKICAgICAgICAgZ290byBEb25lOwpAQCAtMjgzLDE0ICsyODQsMTYgQEAKICAgICAgICAgbiA9IG5ld247CiAgICAgICAgIGlmIChrZXl1c2VkID49IGtleW1heCkgewogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBiaWdnZXIgPSBrZXltYXggPDwgMTsKLSAgICAgICAgICAgIGlmICgoYmlnZ2VyID4+IDEpICE9IGtleW1heCkgeworICAgICAgICAgICAgaWYgKChiaWdnZXIgPj4gMSkgIT0ga2V5bWF4IHx8CisgICAgICAgICAgICAgICAgYmlnZ2VyID4gUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoKmtleSkpIHsKICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgICAgIGdvdG8gRG9uZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGtleSA9ICh1bnNpZ25lZCBsb25nICopUHlNZW1fUmVhbGxvYyhrZXksCisgICAgICAgICAgICBuZXdfa2V5ID0gKHVuc2lnbmVkIGxvbmcgKilQeU1lbV9SZWFsbG9jKGtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpZ2dlciAqIHNpemVvZigqa2V5KSk7Ci0gICAgICAgICAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgICAgICBpZiAobmV3X2tleSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICAgICAgICAgIGtleSA9IG5ld19rZXk7CiAgICAgICAgICAgICBrZXltYXggPSBiaWdnZXI7CiAgICAgICAgIH0KICAgICAgICAgYXNzZXJ0KGtleXVzZWQgPCBrZXltYXgpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMgYi9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYwppbmRleCA3MzVhMjQyLi4zNjkzMzYzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYwpAQCAtMjE3LDggKzIxNyw2IEBACiAgICAgcHlzcWxpdGVfTm9kZSogcHRyOwogICAgIFB5T2JqZWN0KiBwcmV2a2V5OwogICAgIFB5T2JqZWN0KiBuZXh0a2V5OwotICAgIFB5T2JqZWN0KiBmbXRfYXJnczsKLSAgICBQeU9iamVjdCogdGVtcGxhdGU7CiAgICAgUHlPYmplY3QqIGRpc3BsYXlfc3RyOwogCiAgICAgcHRyID0gc2VsZi0+Zmlyc3Q7CkBAIC0yMjksMzYgKzIyNywyMSBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHJldmtleSA9IFB5X05vbmU7CiAgICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKHByZXZrZXkpOwogCiAgICAgICAgIGlmIChwdHItPm5leHQpIHsKICAgICAgICAgICAgIG5leHRrZXkgPSBwdHItPm5leHQtPmtleTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG5leHRrZXkgPSBQeV9Ob25lOwogICAgICAgICB9Ci0gICAgICAgIFB5X0lOQ1JFRihuZXh0a2V5KTsKIAotICAgICAgICBmbXRfYXJncyA9IFB5X0J1aWxkVmFsdWUoIk9PTyIsIHByZXZrZXksIHB0ci0+a2V5LCBuZXh0a2V5KTsKLSAgICAgICAgaWYgKCFmbXRfYXJncykgewotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiJXMgPC0gJXMgLT4lc1xuIik7Ci0gICAgICAgIGlmICghdGVtcGxhdGUpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmbXRfYXJncyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBkaXNwbGF5X3N0ciA9IFB5VW5pY29kZV9Gb3JtYXQodGVtcGxhdGUsIGZtdF9hcmdzKTsKLSAgICAgICAgUHlfREVDUkVGKHRlbXBsYXRlKTsKLSAgICAgICAgUHlfREVDUkVGKGZtdF9hcmdzKTsKKyAgICAgICAgZGlzcGxheV9zdHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVMgPC0gJVMgLT4gJVNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmtleSwgcHRyLT5rZXksIG5leHRrZXkpOwogICAgICAgICBpZiAoIWRpc3BsYXlfc3RyKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBQeU9iamVjdF9QcmludChkaXNwbGF5X3N0ciwgc3Rkb3V0LCBQeV9QUklOVF9SQVcpOwogICAgICAgICBQeV9ERUNSRUYoZGlzcGxheV9zdHIpOwogCi0gICAgICAgIFB5X0RFQ1JFRihwcmV2a2V5KTsKLSAgICAgICAgUHlfREVDUkVGKG5leHRrZXkpOwotCiAgICAgICAgIHB0ciA9IHB0ci0+bmV4dDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMgYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCmluZGV4IGQ1MmJlYTQuLjI4YmQ2NDcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYwpAQCAtNjc3LDcgKzY3Nyw3IEBACiB7CiAgICAgUHlPYmplY3QqIGZ1bmN0aW9uX3Jlc3VsdDsKICAgICBQeU9iamVjdCoqIGFnZ3JlZ2F0ZV9pbnN0YW5jZTsKLSAgICBQeU9iamVjdCogYWdncmVnYXRlX2NsYXNzOworICAgIF9QeV9JREVOVElGSUVSKGZpbmFsaXplKTsKICAgICBpbnQgb2s7CiAKICNpZmRlZiBXSVRIX1RIUkVBRApAQCAtNjg2LDggKzY4Niw2IEBACiAgICAgdGhyZWFkc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOwogI2VuZGlmCiAKLSAgICBhZ2dyZWdhdGVfY2xhc3MgPSAoUHlPYmplY3QqKXNxbGl0ZTNfdXNlcl9kYXRhKGNvbnRleHQpOwotCiAgICAgYWdncmVnYXRlX2luc3RhbmNlID0gKFB5T2JqZWN0Kiopc3FsaXRlM19hZ2dyZWdhdGVfY29udGV4dChjb250ZXh0LCBzaXplb2YoUHlPYmplY3QqKSk7CiAgICAgaWYgKCEqYWdncmVnYXRlX2luc3RhbmNlKSB7CiAgICAgICAgIC8qIHRoaXMgYnJhbmNoIGlzIGV4ZWN1dGVkIGlmIHRoZXJlIHdhcyBhbiBleGNlcHRpb24gaW4gdGhlIGFnZ3JlZ2F0ZSdzCkBAIC02OTYsNyArNjk0LDcgQEAKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICBmdW5jdGlvbl9yZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKCphZ2dyZWdhdGVfaW5zdGFuY2UsICJmaW5hbGl6ZSIsICIiKTsKKyAgICBmdW5jdGlvbl9yZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKCphZ2dyZWdhdGVfaW5zdGFuY2UsICZQeUlkX2ZpbmFsaXplLCAiIik7CiAgICAgUHlfREVDUkVGKCphZ2dyZWdhdGVfaW5zdGFuY2UpOwogCiAgICAgb2sgPSAwOwpAQCAtOTE2LDYgKzkxNCwzOCBAQAogICAgIHJldHVybiByYzsKIH0KIAorc3RhdGljIHZvaWQgX3RyYWNlX2NhbGxiYWNrKHZvaWQqIHVzZXJfYXJnLCBjb25zdCBjaGFyKiBzdGF0ZW1lbnRfc3RyaW5nKQoreworICAgIFB5T2JqZWN0ICpweV9zdGF0ZW1lbnQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOworCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeUdJTFN0YXRlX1NUQVRFIGdpbHN0YXRlOworCisgICAgZ2lsc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOworI2VuZGlmCisgICAgcHlfc3RhdGVtZW50ID0gUHlVbmljb2RlX0RlY29kZVVURjgoc3RhdGVtZW50X3N0cmluZywKKyAgICAgICAgICAgIHN0cmxlbihzdGF0ZW1lbnRfc3RyaW5nKSwgInJlcGxhY2UiKTsKKyAgICBpZiAocHlfc3RhdGVtZW50KSB7CisgICAgICAgIHJldCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoKFB5T2JqZWN0Kil1c2VyX2FyZywgcHlfc3RhdGVtZW50LCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKHB5X3N0YXRlbWVudCk7CisgICAgfQorCisgICAgaWYgKHJldCkgeworICAgICAgICBQeV9ERUNSRUYocmV0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzKSB7CisgICAgICAgICAgICBQeUVycl9QcmludCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlHSUxTdGF0ZV9SZWxlYXNlKGdpbHN0YXRlKTsKKyNlbmRpZgorfQorCiBzdGF0aWMgUHlPYmplY3QqIHB5c3FsaXRlX2Nvbm5lY3Rpb25fc2V0X2F1dGhvcml6ZXIocHlzcWxpdGVfQ29ubmVjdGlvbiogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrd2FyZ3MpCiB7CiAgICAgUHlPYmplY3QqIGF1dGhvcml6ZXJfY2I7CkBAIC05NzUsNiArMTAwNSwzNCBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCitzdGF0aWMgUHlPYmplY3QqIHB5c3FsaXRlX2Nvbm5lY3Rpb25fc2V0X3RyYWNlX2NhbGxiYWNrKHB5c3FsaXRlX0Nvbm5lY3Rpb24qIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3dhcmdzKQoreworICAgIFB5T2JqZWN0KiB0cmFjZV9jYWxsYmFjazsKKworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsgInRyYWNlX2NhbGxiYWNrIiwgTlVMTCB9OworCisgICAgaWYgKCFweXNxbGl0ZV9jaGVja190aHJlYWQoc2VsZikgfHwgIXB5c3FsaXRlX2NoZWNrX2Nvbm5lY3Rpb24oc2VsZikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpzZXRfdHJhY2VfY2FsbGJhY2siLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZ0cmFjZV9jYWxsYmFjaykpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHRyYWNlX2NhbGxiYWNrID09IFB5X05vbmUpIHsKKyAgICAgICAgLyogTm9uZSBjbGVhcnMgdGhlIHRyYWNlIGNhbGxiYWNrIHByZXZpb3VzbHkgc2V0ICovCisgICAgICAgIHNxbGl0ZTNfdHJhY2Uoc2VsZi0+ZGIsIDAsICh2b2lkKikwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oc2VsZi0+ZnVuY3Rpb25fcGluYm9hcmQsIHRyYWNlX2NhbGxiYWNrLCBQeV9Ob25lKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBzcWxpdGUzX3RyYWNlKHNlbGYtPmRiLCBfdHJhY2VfY2FsbGJhY2ssIHRyYWNlX2NhbGxiYWNrKTsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dXJuIFB5X05vbmU7Cit9CisKICNpZmRlZiBIQVZFX0xPQURfRVhURU5TSU9OCiBzdGF0aWMgUHlPYmplY3QqIHB5c3FsaXRlX2VuYWJsZV9sb2FkX2V4dGVuc2lvbihweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKQEAgLTExODAsOCArMTIzOCw5IEBACiAgICAgUHlPYmplY3QqIGN1cnNvciA9IDA7CiAgICAgUHlPYmplY3QqIHJlc3VsdCA9IDA7CiAgICAgUHlPYmplY3QqIG1ldGhvZCA9IDA7CisgICAgX1B5X0lERU5USUZJRVIoY3Vyc29yKTsKIAotICAgIGN1cnNvciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0KilzZWxmLCAiY3Vyc29yIiwgIiIpOworICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsICIiKTsKICAgICBpZiAoIWN1cnNvcikgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTEyMDksOCArMTI2OCw5IEBACiAgICAgUHlPYmplY3QqIGN1cnNvciA9IDA7CiAgICAgUHlPYmplY3QqIHJlc3VsdCA9IDA7CiAgICAgUHlPYmplY3QqIG1ldGhvZCA9IDA7CisgICAgX1B5X0lERU5USUZJRVIoY3Vyc29yKTsKIAotICAgIGN1cnNvciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0KilzZWxmLCAiY3Vyc29yIiwgIiIpOworICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsICIiKTsKICAgICBpZiAoIWN1cnNvcikgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTEyMzgsOCArMTI5OCw5IEBACiAgICAgUHlPYmplY3QqIGN1cnNvciA9IDA7CiAgICAgUHlPYmplY3QqIHJlc3VsdCA9IDA7CiAgICAgUHlPYmplY3QqIG1ldGhvZCA9IDA7CisgICAgX1B5X0lERU5USUZJRVIoY3Vyc29yKTsKIAotICAgIGN1cnNvciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0KilzZWxmLCAiY3Vyc29yIiwgIiIpOworICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsICIiKTsKICAgICBpZiAoIWN1cnNvcikgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTEzOTQsMTAgKzE0NTUsMTIgQEAKICAgICBQeU9iamVjdCogdXBwZXJjYXNlX25hbWUgPSAwOwogICAgIFB5T2JqZWN0KiBuYW1lOwogICAgIFB5T2JqZWN0KiByZXR2YWw7Ci0gICAgUHlfVU5JQ09ERSogY2hrOwogICAgIFB5X3NzaXplX3QgaSwgbGVuOworICAgIF9QeV9JREVOVElGSUVSKHVwcGVyKTsKICAgICBjaGFyICp1cHBlcmNhc2VfbmFtZV9zdHI7CiAgICAgaW50IHJjOworICAgIHVuc2lnbmVkIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAKICAgICBpZiAoIXB5c3FsaXRlX2NoZWNrX3RocmVhZChzZWxmKSB8fCAhcHlzcWxpdGVfY2hlY2tfY29ubmVjdGlvbihzZWxmKSkgewogICAgICAgICBnb3RvIGZpbmFsbHk7CkBAIC0xNDA3LDE3ICsxNDcwLDIxIEBACiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICB9CiAKLSAgICB1cHBlcmNhc2VfbmFtZSA9IFB5T2JqZWN0X0NhbGxNZXRob2QobmFtZSwgInVwcGVyIiwgIiIpOworICAgIHVwcGVyY2FzZV9uYW1lID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChuYW1lLCAmUHlJZF91cHBlciwgIiIpOwogICAgIGlmICghdXBwZXJjYXNlX25hbWUpIHsKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIH0KIAotICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRSh1cHBlcmNhc2VfbmFtZSk7Ci0gICAgY2hrID0gUHlVbmljb2RlX0FTX1VOSUNPREUodXBwZXJjYXNlX25hbWUpOwotICAgIGZvciAoaT0wOyBpPGxlbjsgaSsrLCBjaGsrKykgewotICAgICAgICBpZiAoKCpjaGsgPj0gJzAnICYmICpjaGsgPD0gJzknKQotICAgICAgICAgfHwgKCpjaGsgPj0gJ0EnICYmICpjaGsgPD0gJ1onKQotICAgICAgICAgfHwgKCpjaGsgPT0gJ18nKSkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVwcGVyY2FzZV9uYW1lKSkKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVwcGVyY2FzZV9uYW1lKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodXBwZXJjYXNlX25hbWUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1cHBlcmNhc2VfbmFtZSk7CisgICAgZm9yIChpPTA7IGk8bGVuOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBpZiAoKGNoID49ICcwJyAmJiBjaCA8PSAnOScpCisgICAgICAgICB8fCAoY2ggPj0gJ0EnICYmIGNoIDw9ICdaJykKKyAgICAgICAgIHx8IChjaCA9PSAnXycpKQogICAgICAgICB7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTE1MzYsNiArMTYwMyw4IEBACiAgICAgI2VuZGlmCiAgICAgeyJzZXRfcHJvZ3Jlc3NfaGFuZGxlciIsIChQeUNGdW5jdGlvbilweXNxbGl0ZV9jb25uZWN0aW9uX3NldF9wcm9ncmVzc19oYW5kbGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKICAgICAgICAgUHlEb2NfU1RSKCJTZXRzIHByb2dyZXNzIGhhbmRsZXIgY2FsbGJhY2suIE5vbi1zdGFuZGFyZC4iKX0sCisgICAgeyJzZXRfdHJhY2VfY2FsbGJhY2siLCAoUHlDRnVuY3Rpb24pcHlzcWxpdGVfY29ubmVjdGlvbl9zZXRfdHJhY2VfY2FsbGJhY2ssIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICAgICBQeURvY19TVFIoIlNldHMgYSB0cmFjZSBjYWxsYmFjayBjYWxsZWQgZm9yIGVhY2ggU1FMIHN0YXRlbWVudCAocGFzc2VkIGFzIHVuaWNvZGUpLiBOb24tc3RhbmRhcmQuIil9LAogICAgIHsiZXhlY3V0ZSIsIChQeUNGdW5jdGlvbilweXNxbGl0ZV9jb25uZWN0aW9uX2V4ZWN1dGUsIE1FVEhfVkFSQVJHUywKICAgICAgICAgUHlEb2NfU1RSKCJFeGVjdXRlcyBhIFNRTCBzdGF0ZW1lbnQuIE5vbi1zdGFuZGFyZC4iKX0sCiAgICAgeyJleGVjdXRlbWFueSIsIChQeUNGdW5jdGlvbilweXNxbGl0ZV9jb25uZWN0aW9uX2V4ZWN1dGVtYW55LCBNRVRIX1ZBUkFSR1MsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uaAppbmRleCBjOGUyZjdjLi4wYzk3MzRjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmgKQEAgLTgzLDggKzgzLDcgQEAKIAogICAgIC8qIERldGVybWluZXMgaG93IGJ5dGVzdHJpbmdzIGZyb20gU1FMaXRlIGFyZSBjb252ZXJ0ZWQgdG8gUHl0aG9uIG9iamVjdHM6CiAgICAgICogLSBQeVVuaWNvZGVfVHlwZTogICAgICAgIFB5dGhvbiBVbmljb2RlIG9iamVjdHMgYXJlIGNvbnN0cnVjdGVkIGZyb20gVVRGLTggYnl0ZXN0cmluZ3MKLSAgICAgKiAtIE9wdGltaXplZFVuaWNvZGU6ICAgICAgTGlrZSBiZWZvcmUsIGJ1dCBmb3IgQVNDSUkgZGF0YSwgb25seSBQeVN0cmluZ3MgYXJlIGNyZWF0ZWQuCi0gICAgICogLSBQeUJ5dGVzX1R5cGU6ICAgICAgICAgUHlTdHJpbmdzIGFyZSBjcmVhdGVkIGFzLWlzLgorICAgICAqIC0gUHlCeXRlc19UeXBlOiAgICAgICAgICBUaGUgYnl0ZXN0cmluZ3MgYXJlIHJldHVybmVkIGFzLWlzLgogICAgICAqIC0gQW55IGN1c3RvbSBjYWxsYWJsZTogICBBbnkgb2JqZWN0IHJldHVybmVkIGZyb20gdGhlIGNhbGxhYmxlIGNhbGxlZCB3aXRoIHRoZSBieXRlc3RyaW5nCiAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHNpbmdsZSBwYXJhbWV0ZXIuCiAgICAgICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMgYi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKaW5kZXggZmM0YjYwOC4uMTAwNWQ4OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYwpAQCAtMTE4LDExICsxMTgsOSBAQAogCiBzdGF0aWMgdm9pZCBweXNxbGl0ZV9jdXJzb3JfZGVhbGxvYyhweXNxbGl0ZV9DdXJzb3IqIHNlbGYpCiB7Ci0gICAgaW50IHJjOwotCiAgICAgLyogUmVzZXQgdGhlIHN0YXRlbWVudCBpZiB0aGUgdXNlciBoYXMgbm90IGNsb3NlZCB0aGUgY3Vyc29yICovCiAgICAgaWYgKHNlbGYtPnN0YXRlbWVudCkgewotICAgICAgICByYyA9IHB5c3FsaXRlX3N0YXRlbWVudF9yZXNldChzZWxmLT5zdGF0ZW1lbnQpOworICAgICAgICBweXNxbGl0ZV9zdGF0ZW1lbnRfcmVzZXQoc2VsZi0+c3RhdGVtZW50KTsKICAgICAgICAgUHlfREVDUkVGKHNlbGYtPnN0YXRlbWVudCk7CiAgICAgfQogCkBAIC0xNDQsOCArMTQyLDkgQEAKIHsKICAgICBQeU9iamVjdCogdXBjYXNlX2tleTsKICAgICBQeU9iamVjdCogcmV0dmFsOworICAgIF9QeV9JREVOVElGSUVSKHVwcGVyKTsKIAotICAgIHVwY2FzZV9rZXkgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGtleSwgInVwcGVyIiwgIiIpOworICAgIHVwY2FzZV9rZXkgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGtleSwgJlB5SWRfdXBwZXIsICIiKTsKICAgICBpZiAoIXVwY2FzZV9rZXkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjYwLDExICsyNTksNiBAQAogICAgIH0KIH0KIAotUHlPYmplY3QqIHB5c3FsaXRlX3VuaWNvZGVfZnJvbV9zdHJpbmcoY29uc3QgY2hhciogdmFsX3N0ciwgUHlfc3NpemVfdCBzaXplLCBpbnQgb3B0aW1pemUpCi17Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSh2YWxfc3RyLCBzaXplKTsKLX0KLQogLyoKICAqIFJldHVybnMgYSByb3cgZnJvbSB0aGUgY3VycmVudGx5IGFjdGl2ZSBTUUxpdGUgc3RhdGVtZW50CiAgKgpAQCAtMzQyLDEyICszMzYsOCBAQAogICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x0eXBlID09IFNRTElURV9URVhUKSB7CiAgICAgICAgICAgICAgICAgdmFsX3N0ciA9IChjb25zdCBjaGFyKilzcWxpdGUzX2NvbHVtbl90ZXh0KHNlbGYtPnN0YXRlbWVudC0+c3QsIGkpOwogICAgICAgICAgICAgICAgIG5ieXRlcyA9IHNxbGl0ZTNfY29sdW1uX2J5dGVzKHNlbGYtPnN0YXRlbWVudC0+c3QsIGkpOwotICAgICAgICAgICAgICAgIGlmICgoc2VsZi0+Y29ubmVjdGlvbi0+dGV4dF9mYWN0b3J5ID09IChQeU9iamVjdCopJlB5VW5pY29kZV9UeXBlKQotICAgICAgICAgICAgICAgICAgICB8fCAoc2VsZi0+Y29ubmVjdGlvbi0+dGV4dF9mYWN0b3J5ID09IHB5c3FsaXRlX09wdGltaXplZFVuaWNvZGUpKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgY29udmVydGVkID0gcHlzcWxpdGVfdW5pY29kZV9mcm9tX3N0cmluZyh2YWxfc3RyLCBuYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5jb25uZWN0aW9uLT50ZXh0X2ZhY3RvcnkgPT0gcHlzcWxpdGVfT3B0aW1pemVkVW5pY29kZSA/IDEgOiAwKTsKLQorICAgICAgICAgICAgICAgIGlmIChzZWxmLT5jb25uZWN0aW9uLT50ZXh0X2ZhY3RvcnkgPT0gKFB5T2JqZWN0KikmUHlVbmljb2RlX1R5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udmVydGVkID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKHZhbF9zdHIsIG5ieXRlcyk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY29udmVydGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb2xuYW1lID0gc3FsaXRlM19jb2x1bW5fbmFtZShzZWxmLT5zdGF0ZW1lbnQtPnN0LCBpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29sbmFtZSkgewpAQCAtNDQ1LDcgKzQzNSw2IEBACiAgICAgaW50IHN0YXRlbWVudF90eXBlOwogICAgIFB5T2JqZWN0KiBkZXNjcmlwdG9yOwogICAgIFB5T2JqZWN0KiBzZWNvbmRfYXJndW1lbnQgPSBOVUxMOwotICAgIGludCBhbGxvd184Yml0X2NoYXJzOwogCiAgICAgaWYgKCFjaGVja19jdXJzb3Ioc2VsZikpIHsKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTQ1NCwxMCArNDQzLDYgQEAKICAgICBzZWxmLT5sb2NrZWQgPSAxOwogICAgIHNlbGYtPnJlc2V0ID0gMDsKIAotICAgIC8qIE1ha2Ugc2hvb3RpbmcgeW91cnNlbGYgaW4gdGhlIGZvb3Qgd2l0aCBub3QgdXRmLTggZGVjb2RhYmxlIDgtYml0LXN0cmluZ3MgaGFyZGVyICovCi0gICAgYWxsb3dfOGJpdF9jaGFycyA9ICgoc2VsZi0+Y29ubmVjdGlvbi0+dGV4dF9mYWN0b3J5ICE9IChQeU9iamVjdCopJlB5VW5pY29kZV9UeXBlKSAmJgotICAgICAgICAoc2VsZi0+Y29ubmVjdGlvbi0+dGV4dF9mYWN0b3J5ICE9IHB5c3FsaXRlX09wdGltaXplZFVuaWNvZGUpKTsKLQogICAgIFB5X1hERUNSRUYoc2VsZi0+bmV4dF9yb3cpOwogICAgIHNlbGYtPm5leHRfcm93ID0gTlVMTDsKIApAQCAtNTIxLDcgKzUwNiw3IEBACiAKICAgICBpZiAoc2VsZi0+c3RhdGVtZW50ICE9IE5VTEwpIHsKICAgICAgICAgLyogVGhlcmUgaXMgYW4gYWN0aXZlIHN0YXRlbWVudCAqLwotICAgICAgICByYyA9IHB5c3FsaXRlX3N0YXRlbWVudF9yZXNldChzZWxmLT5zdGF0ZW1lbnQpOworICAgICAgICBweXNxbGl0ZV9zdGF0ZW1lbnRfcmVzZXQoc2VsZi0+c3RhdGVtZW50KTsKICAgICB9CiAKICAgICBvcGVyYXRpb25fY3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKG9wZXJhdGlvbiwgJm9wZXJhdGlvbl9sZW4pOwpAQCAtNjE2LDcgKzYwMSw3IEBACiAKICAgICAgICAgcHlzcWxpdGVfc3RhdGVtZW50X21hcmtfZGlydHkoc2VsZi0+c3RhdGVtZW50KTsKIAotICAgICAgICBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXJzKHNlbGYtPnN0YXRlbWVudCwgcGFyYW1ldGVycywgYWxsb3dfOGJpdF9jaGFycyk7CisgICAgICAgIHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcnMoc2VsZi0+c3RhdGVtZW50LCBwYXJhbWV0ZXJzKTsKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KQEAgLTcyNyw3ICs3MTIsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgaWYgKG11bHRpcGxlKSB7Ci0gICAgICAgICAgICByYyA9IHB5c3FsaXRlX3N0YXRlbWVudF9yZXNldChzZWxmLT5zdGF0ZW1lbnQpOworICAgICAgICAgICAgcHlzcWxpdGVfc3RhdGVtZW50X3Jlc2V0KHNlbGYtPnN0YXRlbWVudCk7CiAgICAgICAgIH0KICAgICAgICAgUHlfWERFQ1JFRihwYXJhbWV0ZXJzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvbWljcm9wcm90b2NvbHMuYyBiL01vZHVsZXMvX3NxbGl0ZS9taWNyb3Byb3RvY29scy5jCmluZGV4IGM3MzBhZmEuLjIyNjFiODAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9taWNyb3Byb3RvY29scy5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9taWNyb3Byb3RvY29scy5jCkBAIC05NSw3ICs5NSw5IEBACiAKICAgICAvKiB0cnkgdG8gaGF2ZSB0aGUgcHJvdG9jb2wgYWRhcHQgdGhpcyBvYmplY3QqLwogICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHByb3RvLCAiX19hZGFwdF9fIikpIHsKLSAgICAgICAgUHlPYmplY3QgKmFkYXB0ZWQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHByb3RvLCAiX19hZGFwdF9fIiwgIk8iLCBvYmopOworICAgICAgICBfUHlfSURFTlRJRklFUihfX2FkYXB0X18pOworICAgICAgICBQeU9iamVjdCAqYWRhcHRlZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHJvdG8sICZQeUlkX19fYWRhcHRfXywgIk8iLCBvYmopOworCiAgICAgICAgIGlmIChhZGFwdGVkKSB7CiAgICAgICAgICAgICBpZiAoYWRhcHRlZCAhPSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFkYXB0ZWQ7CkBAIC0xMTAsNyArMTEyLDkgQEAKIAogICAgIC8qIGFuZCBmaW5hbGx5IHRyeSB0byBoYXZlIHRoZSBvYmplY3QgYWRhcHQgaXRzZWxmICovCiAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiX19jb25mb3JtX18iKSkgewotICAgICAgICBQeU9iamVjdCAqYWRhcHRlZCA9IFB5T2JqZWN0X0NhbGxNZXRob2Qob2JqLCAiX19jb25mb3JtX18iLCJPIiwgcHJvdG8pOworICAgICAgICBfUHlfSURFTlRJRklFUihfX2NvbmZvcm1fXyk7CisgICAgICAgIFB5T2JqZWN0ICphZGFwdGVkID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvYmosICZQeUlkX19fY29uZm9ybV9fLCJPIiwgcHJvdG8pOworCiAgICAgICAgIGlmIChhZGFwdGVkKSB7CiAgICAgICAgICAgICBpZiAoYWRhcHRlZCAhPSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFkYXB0ZWQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMgYi9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMKaW5kZXggY2JjM2I4ZS4uYmVhNmQ2YSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuYwpAQCAtMzcsNyArMzcsNyBAQAogCiBQeU9iamVjdCogcHlzcWxpdGVfRXJyb3IsICpweXNxbGl0ZV9XYXJuaW5nLCAqcHlzcWxpdGVfSW50ZXJmYWNlRXJyb3IsICpweXNxbGl0ZV9EYXRhYmFzZUVycm9yLAogICAgICpweXNxbGl0ZV9JbnRlcm5hbEVycm9yLCAqcHlzcWxpdGVfT3BlcmF0aW9uYWxFcnJvciwgKnB5c3FsaXRlX1Byb2dyYW1taW5nRXJyb3IsCi0gICAgKnB5c3FsaXRlX0ludGVncml0eUVycm9yLCAqcHlzcWxpdGVfRGF0YUVycm9yLCAqcHlzcWxpdGVfTm90U3VwcG9ydGVkRXJyb3IsICpweXNxbGl0ZV9PcHRpbWl6ZWRVbmljb2RlOworICAgICpweXNxbGl0ZV9JbnRlZ3JpdHlFcnJvciwgKnB5c3FsaXRlX0RhdGFFcnJvciwgKnB5c3FsaXRlX05vdFN1cHBvcnRlZEVycm9yOwogCiBQeU9iamVjdCogY29udmVydGVyczsKIGludCBfZW5hYmxlX2NhbGxiYWNrX3RyYWNlYmFja3M7CkBAIC0xNzksMTMgKzE3OSwxNCBAQAogICAgIFB5T2JqZWN0KiBuYW1lID0gTlVMTDsKICAgICBQeU9iamVjdCogY2FsbGFibGU7CiAgICAgUHlPYmplY3QqIHJldHZhbCA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIodXBwZXIpOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVTyIsICZvcmlnX25hbWUsICZjYWxsYWJsZSkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgLyogY29udmVydCB0aGUgbmFtZSB0byB1cHBlciBjYXNlICovCi0gICAgbmFtZSA9IFB5T2JqZWN0X0NhbGxNZXRob2Qob3JpZ19uYW1lLCAidXBwZXIiLCAiIik7CisgICAgbmFtZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob3JpZ19uYW1lLCAmUHlJZF91cHBlciwgIiIpOwogICAgIGlmICghbmFtZSkgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTQwNiwxMyArNDA3LDEzIEBACiAgICAgfQogICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJOb3RTdXBwb3J0ZWRFcnJvciIsIHB5c3FsaXRlX05vdFN1cHBvcnRlZEVycm9yKTsKIAotICAgIC8qIFdlIGp1c3QgbmVlZCAic29tZXRoaW5nIiB1bmlxdWUgZm9yIHB5c3FsaXRlX09wdGltaXplZFVuaWNvZGUuIEl0IGRvZXMgbm90IHJlYWxseQotICAgICAqIG5lZWQgdG8gYmUgYSBzdHJpbmcgc3ViY2xhc3MuIEp1c3QgYW55dGhpbmcgdGhhdCBjYW4gYWN0IGFzIGEgc3BlY2lhbAotICAgICAqIG1hcmtlciBmb3IgdXMuIFNvIEkgcHVsbGVkIFB5Q2VsbF9UeXBlIG91dCBvZiBteSBtYWdpYyBoYXQuCi0gICAgICovCi0gICAgUHlfSU5DUkVGKChQeU9iamVjdCopJlB5Q2VsbF9UeXBlKTsKLSAgICBweXNxbGl0ZV9PcHRpbWl6ZWRVbmljb2RlID0gKFB5T2JqZWN0KikmUHlDZWxsX1R5cGU7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgIk9wdGltaXplZFVuaWNvZGUiLCBweXNxbGl0ZV9PcHRpbWl6ZWRVbmljb2RlKTsKKyAgICAvKiBJbiBQeXRob24gMi54LCBzZXR0aW5nIENvbm5lY3Rpb24udGV4dF9mYWN0b3J5IHRvCisgICAgICAgT3B0aW1pemVkVW5pY29kZSBjYXVzZWQgVW5pY29kZSBvYmplY3RzIHRvIGJlIHJldHVybmVkIGZvcgorICAgICAgIG5vbi1BU0NJSSBkYXRhIGFuZCBieXRlc3RyaW5ncyB0byBiZSByZXR1cm5lZCBmb3IgQVNDSUkgZGF0YS4KKyAgICAgICBOb3cgT3B0aW1pemVkVW5pY29kZSBpcyBhbiBhbGlhcyBmb3Igc3RyLCBzbyBpdCBoYXMgbm8KKyAgICAgICBlZmZlY3QuICovCisgICAgUHlfSU5DUkVGKChQeU9iamVjdCopJlB5VW5pY29kZV9UeXBlKTsKKyAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiT3B0aW1pemVkVW5pY29kZSIsIChQeU9iamVjdCopJlB5VW5pY29kZV9UeXBlKTsKIAogICAgIC8qIFNldCBpbnRlZ2VyIGNvbnN0YW50cyAqLwogICAgIGZvciAoaSA9IDA7IF9pbnRfY29uc3RhbnRzW2ldLmNvbnN0YW50X25hbWUgIT0gMDsgaSsrKSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmggYi9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmgKaW5kZXggMGVkZGI2Ny4uYjUxNzI0YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuaApAQCAtMzgsOCArMzgsNiBAQAogZXh0ZXJuIFB5T2JqZWN0KiBweXNxbGl0ZV9EYXRhRXJyb3I7CiBleHRlcm4gUHlPYmplY3QqIHB5c3FsaXRlX05vdFN1cHBvcnRlZEVycm9yOwogCi1leHRlcm4gUHlPYmplY3QqIHB5c3FsaXRlX09wdGltaXplZFVuaWNvZGU7Ci0KIC8qIHRoZSBmdW5jdGlvbnMgdGltZS50aW1lKCkgYW5kIHRpbWUuc2xlZXAoKSAqLwogZXh0ZXJuIFB5T2JqZWN0KiB0aW1lX3RpbWU7CiBleHRlcm4gUHlPYmplY3QqIHRpbWVfc2xlZXA7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvcm93LmMgYi9Nb2R1bGVzL19zcWxpdGUvcm93LmMKaW5kZXggM2Q0NDA5NC4uYjUwNjU4YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL3Jvdy5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9yb3cuYwpAQCAtMTczLDEwICsxNzMsOSBAQAogCiBzdGF0aWMgUHlPYmplY3QqIHB5c3FsaXRlX3Jvd19yaWNoY29tcGFyZShweXNxbGl0ZV9Sb3cgKnNlbGYsIFB5T2JqZWN0ICpfb3RoZXIsIGludCBvcGlkKQogewotICAgIGlmIChvcGlkICE9IFB5X0VRICYmIG9waWQgIT0gUHlfTkUpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAob3BpZCAhPSBQeV9FUSAmJiBvcGlkICE9IFB5X05FKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisKICAgICBpZiAoUHlUeXBlX0lzU3VidHlwZShQeV9UWVBFKF9vdGhlciksICZweXNxbGl0ZV9Sb3dUeXBlKSkgewogICAgICAgICBweXNxbGl0ZV9Sb3cgKm90aGVyID0gKHB5c3FsaXRlX1JvdyAqKV9vdGhlcjsKICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlKHNlbGYtPmRlc2NyaXB0aW9uLCBvdGhlci0+ZGVzY3JpcHRpb24sIG9waWQpOwpAQCAtMTg2LDggKzE4NSw3IEBACiAgICAgICAgICAgICByZXR1cm4gUHlPYmplY3RfUmljaENvbXBhcmUoc2VsZi0+ZGF0YSwgb3RoZXItPmRhdGEsIG9waWQpOwogICAgICAgICB9CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAogUHlNYXBwaW5nTWV0aG9kcyBweXNxbGl0ZV9yb3dfYXNfbWFwcGluZyA9IHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuYyBiL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuYwppbmRleCAwOWQ5NWQ5Li40NzFhMDY3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5jCkBAIC04OCw3ICs4OCw3IEBACiAgICAgcmV0dXJuIHJjOwogfQogCi1pbnQgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVyKHB5c3FsaXRlX1N0YXRlbWVudCogc2VsZiwgaW50IHBvcywgUHlPYmplY3QqIHBhcmFtZXRlciwgaW50IGFsbG93XzhiaXRfY2hhcnMpCitpbnQgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVyKHB5c3FsaXRlX1N0YXRlbWVudCogc2VsZiwgaW50IHBvcywgUHlPYmplY3QqIHBhcmFtZXRlcikKIHsKICAgICBpbnQgcmMgPSBTUUxJVEVfT0s7CiAgICAgY29uc3QgY2hhciogYnVmZmVyOwpAQCAtMTY5LDcgKzE2OSw3IEBACiAgICAgfQogfQogCi12b2lkIHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcnMocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmLCBQeU9iamVjdCogcGFyYW1ldGVycywgaW50IGFsbG93XzhiaXRfY2hhcnMpCit2b2lkIHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcnMocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmLCBQeU9iamVjdCogcGFyYW1ldGVycykKIHsKICAgICBQeU9iamVjdCogY3VycmVudF9wYXJhbTsKICAgICBQeU9iamVjdCogYWRhcHRlZDsKQEAgLTIyMyw3ICsyMjMsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcmMgPSBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXIoc2VsZiwgaSArIDEsIGFkYXB0ZWQsIGFsbG93XzhiaXRfY2hhcnMpOworICAgICAgICAgICAgcmMgPSBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXIoc2VsZiwgaSArIDEsIGFkYXB0ZWQpOwogICAgICAgICAgICAgUHlfREVDUkVGKGFkYXB0ZWQpOwogCiAgICAgICAgICAgICBpZiAocmMgIT0gU1FMSVRFX09LKSB7CkBAIC0yNjgsNyArMjY4LDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHJjID0gcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVyKHNlbGYsIGksIGFkYXB0ZWQsIGFsbG93XzhiaXRfY2hhcnMpOworICAgICAgICAgICAgcmMgPSBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXIoc2VsZiwgaSwgYWRhcHRlZCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoYWRhcHRlZCk7CiAKICAgICAgICAgICAgIGlmIChyYyAhPSBTUUxJVEVfT0spIHsKQEAgLTM3MiwxMSArMzcyLDkgQEAKIAogdm9pZCBweXNxbGl0ZV9zdGF0ZW1lbnRfZGVhbGxvYyhweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYpCiB7Ci0gICAgaW50IHJjOwotCiAgICAgaWYgKHNlbGYtPnN0KSB7CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmMgPSBzcWxpdGUzX2ZpbmFsaXplKHNlbGYtPnN0KTsKKyAgICAgICAgc3FsaXRlM19maW5hbGl6ZShzZWxmLT5zdCk7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmggYi9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmgKaW5kZXggZTVkYTQyZS4uNDY4MTQ0MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuaApAQCAtNDYsOCArNDYsOCBAQAogaW50IHB5c3FsaXRlX3N0YXRlbWVudF9jcmVhdGUocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmLCBweXNxbGl0ZV9Db25uZWN0aW9uKiBjb25uZWN0aW9uLCBQeU9iamVjdCogc3FsKTsKIHZvaWQgcHlzcWxpdGVfc3RhdGVtZW50X2RlYWxsb2MocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmKTsKIAotaW50IHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcihweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYsIGludCBwb3MsIFB5T2JqZWN0KiBwYXJhbWV0ZXIsIGludCBhbGxvd184Yml0X2NoYXJzKTsKLXZvaWQgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVycyhweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYsIFB5T2JqZWN0KiBwYXJhbWV0ZXJzLCBpbnQgYWxsb3dfOGJpdF9jaGFycyk7CitpbnQgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVyKHB5c3FsaXRlX1N0YXRlbWVudCogc2VsZiwgaW50IHBvcywgUHlPYmplY3QqIHBhcmFtZXRlcik7Cit2b2lkIHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcnMocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmLCBQeU9iamVjdCogcGFyYW1ldGVycyk7CiAKIGludCBweXNxbGl0ZV9zdGF0ZW1lbnRfcmVjb21waWxlKHB5c3FsaXRlX1N0YXRlbWVudCogc2VsZiwgUHlPYmplY3QqIHBhcmFtZXRlcnMpOwogaW50IHB5c3FsaXRlX3N0YXRlbWVudF9maW5hbGl6ZShweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3JlLmMgYi9Nb2R1bGVzL19zcmUuYwppbmRleCBlNzYxNDRkLi43ZTQ0N2E5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcmUuYworKysgYi9Nb2R1bGVzL19zcmUuYwpAQCAtMTYzLDIxICsxNjMsMTcgQEAKIAogLyogdW5pY29kZS1zcGVjaWZpYyBjaGFyYWN0ZXIgcHJlZGljYXRlcyAqLwogCi0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCi0KLSNkZWZpbmUgU1JFX1VOSV9JU19ESUdJVChjaCkgUHlfVU5JQ09ERV9JU0RFQ0lNQUwoKFB5X1VOSUNPREUpKGNoKSkKLSNkZWZpbmUgU1JFX1VOSV9JU19TUEFDRShjaCkgUHlfVU5JQ09ERV9JU1NQQUNFKChQeV9VTklDT0RFKShjaCkpCi0jZGVmaW5lIFNSRV9VTklfSVNfTElORUJSRUFLKGNoKSBQeV9VTklDT0RFX0lTTElORUJSRUFLKChQeV9VTklDT0RFKShjaCkpCi0jZGVmaW5lIFNSRV9VTklfSVNfQUxOVU0oY2gpIFB5X1VOSUNPREVfSVNBTE5VTSgoUHlfVU5JQ09ERSkoY2gpKQotI2RlZmluZSBTUkVfVU5JX0lTX1dPUkQoY2gpIChTUkVfVU5JX0lTX0FMTlVNKChjaCkpIHx8IChjaCkgPT0gJ18nKQorI2RlZmluZSBTUkVfVU5JX0lTX0RJR0lUKGNoKSBQeV9VTklDT0RFX0lTREVDSU1BTChjaCkKKyNkZWZpbmUgU1JFX1VOSV9JU19TUEFDRShjaCkgUHlfVU5JQ09ERV9JU1NQQUNFKGNoKQorI2RlZmluZSBTUkVfVU5JX0lTX0xJTkVCUkVBSyhjaCkgUHlfVU5JQ09ERV9JU0xJTkVCUkVBSyhjaCkKKyNkZWZpbmUgU1JFX1VOSV9JU19BTE5VTShjaCkgUHlfVU5JQ09ERV9JU0FMTlVNKGNoKQorI2RlZmluZSBTUkVfVU5JX0lTX1dPUkQoY2gpIChTUkVfVU5JX0lTX0FMTlVNKGNoKSB8fCAoY2gpID09ICdfJykKIAogc3RhdGljIHVuc2lnbmVkIGludCBzcmVfbG93ZXJfdW5pY29kZSh1bnNpZ25lZCBpbnQgY2gpCiB7Ci0gICAgcmV0dXJuICh1bnNpZ25lZCBpbnQpIFB5X1VOSUNPREVfVE9MT1dFUigoUHlfVU5JQ09ERSkoY2gpKTsKKyAgICByZXR1cm4gKHVuc2lnbmVkIGludCkgUHlfVU5JQ09ERV9UT0xPV0VSKGNoKTsKIH0KIAotI2VuZGlmCi0KIExPQ0FMKGludCkKIHNyZV9jYXRlZ29yeShTUkVfQ09ERSBjYXRlZ29yeSwgdW5zaWduZWQgaW50IGNoKQogewpAQCAtMjA1LDcgKzIwMSw2IEBACiAgICAgY2FzZSBTUkVfQ0FURUdPUllfTE9DX05PVF9XT1JEOgogICAgICAgICByZXR1cm4gIVNSRV9MT0NfSVNfV09SRChjaCk7CiAKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKICAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfRElHSVQ6CiAgICAgICAgIHJldHVybiBTUkVfVU5JX0lTX0RJR0lUKGNoKTsKICAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfTk9UX0RJR0lUOgpAQCAtMjIyLDI0ICsyMTcsNiBAQAogICAgICAgICByZXR1cm4gU1JFX1VOSV9JU19MSU5FQlJFQUsoY2gpOwogICAgIGNhc2UgU1JFX0NBVEVHT1JZX1VOSV9OT1RfTElORUJSRUFLOgogICAgICAgICByZXR1cm4gIVNSRV9VTklfSVNfTElORUJSRUFLKGNoKTsKLSNlbHNlCi0gICAgY2FzZSBTUkVfQ0FURUdPUllfVU5JX0RJR0lUOgotICAgICAgICByZXR1cm4gU1JFX0lTX0RJR0lUKGNoKTsKLSAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfTk9UX0RJR0lUOgotICAgICAgICByZXR1cm4gIVNSRV9JU19ESUdJVChjaCk7Ci0gICAgY2FzZSBTUkVfQ0FURUdPUllfVU5JX1NQQUNFOgotICAgICAgICByZXR1cm4gU1JFX0lTX1NQQUNFKGNoKTsKLSAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfTk9UX1NQQUNFOgotICAgICAgICByZXR1cm4gIVNSRV9JU19TUEFDRShjaCk7Ci0gICAgY2FzZSBTUkVfQ0FURUdPUllfVU5JX1dPUkQ6Ci0gICAgICAgIHJldHVybiBTUkVfTE9DX0lTX1dPUkQoY2gpOwotICAgIGNhc2UgU1JFX0NBVEVHT1JZX1VOSV9OT1RfV09SRDoKLSAgICAgICAgcmV0dXJuICFTUkVfTE9DX0lTX1dPUkQoY2gpOwotICAgIGNhc2UgU1JFX0NBVEVHT1JZX1VOSV9MSU5FQlJFQUs6Ci0gICAgICAgIHJldHVybiBTUkVfSVNfTElORUJSRUFLKGNoKTsKLSAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfTk9UX0xJTkVCUkVBSzoKLSAgICAgICAgcmV0dXJuICFTUkVfSVNfTElORUJSRUFLKGNoKTsKLSNlbmRpZgogICAgIH0KICAgICByZXR1cm4gMDsKIH0KQEAgLTI4MCw2ICsyNTcsNyBAQAogLyogZ2VuZXJhdGUgOC1iaXQgdmVyc2lvbiAqLwogCiAjZGVmaW5lIFNSRV9DSEFSIHVuc2lnbmVkIGNoYXIKKyNkZWZpbmUgU1JFX0NIQVJHRVQoc3RhdGUsIGJ1ZiwgaW5kZXgpICgodW5zaWduZWQgY2hhciopYnVmKVtpbmRleF0KICNkZWZpbmUgU1JFX0FUIHNyZV9hdAogI2RlZmluZSBTUkVfQ09VTlQgc3JlX2NvdW50CiAjZGVmaW5lIFNSRV9DSEFSU0VUIHNyZV9jaGFyc2V0CkBAIC0yODcsMTUgKzI2NSwxMSBAQAogI2RlZmluZSBTUkVfTUFUQ0ggc3JlX21hdGNoCiAjZGVmaW5lIFNSRV9NQVRDSF9DT05URVhUIHNyZV9tYXRjaF9jb250ZXh0CiAjZGVmaW5lIFNSRV9TRUFSQ0ggc3JlX3NlYXJjaAotI2RlZmluZSBTUkVfTElURVJBTF9URU1QTEFURSBzcmVfbGl0ZXJhbF90ZW1wbGF0ZQotCi0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAKICNkZWZpbmUgU1JFX1JFQ1VSU0lWRQogI2luY2x1ZGUgIl9zcmUuYyIKICN1bmRlZiBTUkVfUkVDVVJTSVZFCiAKLSN1bmRlZiBTUkVfTElURVJBTF9URU1QTEFURQogI3VuZGVmIFNSRV9TRUFSQ0gKICN1bmRlZiBTUkVfTUFUQ0gKICN1bmRlZiBTUkVfTUFUQ0hfQ09OVEVYVApAQCAtMzA0LDEwICsyNzgsMTUgQEAKICN1bmRlZiBTUkVfQ09VTlQKICN1bmRlZiBTUkVfQVQKICN1bmRlZiBTUkVfQ0hBUgorI3VuZGVmIFNSRV9DSEFSR0VUCiAKLS8qIGdlbmVyYXRlIDE2LWJpdCB1bmljb2RlIHZlcnNpb24gKi8KKy8qIGdlbmVyYXRlIDgvMTYvMzItYml0IHVuaWNvZGUgdmVyc2lvbiAqLwogCi0jZGVmaW5lIFNSRV9DSEFSIFB5X1VOSUNPREUKKyNkZWZpbmUgU1JFX0NIQVIgdm9pZAorI2RlZmluZSBTUkVfQ0hBUkdFVChzdGF0ZSwgYnVmLCBpbmRleCkgXAorICAgICgoc3RhdGUtPmNoYXJzaXplPT0xKSA/ICgoUHlfVUNTMSopYnVmKVtpbmRleF0gOiBcCisgICAgIChzdGF0ZS0+Y2hhcnNpemU9PTIpID8gKChQeV9VQ1MyKilidWYpW2luZGV4XSA6IFwKKyAgICAgKChQeV9VQ1M0KilidWYpW2luZGV4XSkKICNkZWZpbmUgU1JFX0FUIHNyZV91YXQKICNkZWZpbmUgU1JFX0NPVU5UIHNyZV91Y291bnQKICNkZWZpbmUgU1JFX0NIQVJTRVQgc3JlX3VjaGFyc2V0CkBAIC0zMTUsOCArMjk0LDYgQEAKICNkZWZpbmUgU1JFX01BVENIIHNyZV91bWF0Y2gKICNkZWZpbmUgU1JFX01BVENIX0NPTlRFWFQgc3JlX3VtYXRjaF9jb250ZXh0CiAjZGVmaW5lIFNSRV9TRUFSQ0ggc3JlX3VzZWFyY2gKLSNkZWZpbmUgU1JFX0xJVEVSQUxfVEVNUExBVEUgc3JlX3VsaXRlcmFsX3RlbXBsYXRlCi0jZW5kaWYKIAogI2VuZGlmIC8qIFNSRV9SRUNVUlNJVkUgKi8KIApAQCAtMzI3LDcgKzMwNCw3IEBACiAgICBzZXR0aW5ncyAqLwogCiBMT0NBTChpbnQpCi1TUkVfQVQoU1JFX1NUQVRFKiBzdGF0ZSwgU1JFX0NIQVIqIHB0ciwgU1JFX0NPREUgYXQpCitTUkVfQVQoU1JFX1NUQVRFKiBzdGF0ZSwgY2hhciogcHRyLCBTUkVfQ09ERSBhdCkKIHsKICAgICAvKiBjaGVjayBpZiBwb2ludGVyIGlzIGF0IGdpdmVuIHBvc2l0aW9uICovCiAKQEAgLTM0MSwxNiArMzE4LDE2IEBACiAKICAgICBjYXNlIFNSRV9BVF9CRUdJTk5JTkdfTElORToKICAgICAgICAgcmV0dXJuICgodm9pZCopIHB0ciA9PSBzdGF0ZS0+YmVnaW5uaW5nIHx8Ci0gICAgICAgICAgICAgICAgU1JFX0lTX0xJTkVCUkVBSygoaW50KSBwdHJbLTFdKSk7CisgICAgICAgICAgICAgICAgU1JFX0lTX0xJTkVCUkVBSygoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAtMSkpKTsKIAogICAgIGNhc2UgU1JFX0FUX0VORDoKLSAgICAgICAgcmV0dXJuICgoKHZvaWQqKSAocHRyKzEpID09IHN0YXRlLT5lbmQgJiYKLSAgICAgICAgICAgICAgICAgU1JFX0lTX0xJTkVCUkVBSygoaW50KSBwdHJbMF0pKSB8fAorICAgICAgICByZXR1cm4gKCgodm9pZCopIChwdHIrc3RhdGUtPmNoYXJzaXplKSA9PSBzdGF0ZS0+ZW5kICYmCisgICAgICAgICAgICAgICAgIFNSRV9JU19MSU5FQlJFQUsoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpKSB8fAogICAgICAgICAgICAgICAgICgodm9pZCopIHB0ciA9PSBzdGF0ZS0+ZW5kKSk7CiAKICAgICBjYXNlIFNSRV9BVF9FTkRfTElORToKICAgICAgICAgcmV0dXJuICgodm9pZCopIHB0ciA9PSBzdGF0ZS0+ZW5kIHx8Ci0gICAgICAgICAgICAgICAgU1JFX0lTX0xJTkVCUkVBSygoaW50KSBwdHJbMF0pKTsKKyAgICAgICAgICAgICAgICBTUkVfSVNfTElORUJSRUFLKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApKSk7CiAKICAgICBjYXNlIFNSRV9BVF9FTkRfU1RSSU5HOgogICAgICAgICByZXR1cm4gKCh2b2lkKikgcHRyID09IHN0YXRlLT5lbmQpOwpAQCAtMzU5LDU3ICszMzYsNTUgQEAKICAgICAgICAgaWYgKHN0YXRlLT5iZWdpbm5pbmcgPT0gc3RhdGUtPmVuZCkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB0aGF0cCA9ICgodm9pZCopIHB0ciA+IHN0YXRlLT5iZWdpbm5pbmcpID8KLSAgICAgICAgICAgIFNSRV9JU19XT1JEKChpbnQpIHB0clstMV0pIDogMDsKKyAgICAgICAgICAgIFNSRV9JU19XT1JEKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIC0xKSkgOiAwOwogICAgICAgICB0aGlzcCA9ICgodm9pZCopIHB0ciA8IHN0YXRlLT5lbmQpID8KLSAgICAgICAgICAgIFNSRV9JU19XT1JEKChpbnQpIHB0clswXSkgOiAwOworICAgICAgICAgICAgU1JFX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpIDogMDsKICAgICAgICAgcmV0dXJuIHRoaXNwICE9IHRoYXRwOwogCiAgICAgY2FzZSBTUkVfQVRfTk9OX0JPVU5EQVJZOgogICAgICAgICBpZiAoc3RhdGUtPmJlZ2lubmluZyA9PSBzdGF0ZS0+ZW5kKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHRoYXRwID0gKCh2b2lkKikgcHRyID4gc3RhdGUtPmJlZ2lubmluZykgPwotICAgICAgICAgICAgU1JFX0lTX1dPUkQoKGludCkgcHRyWy0xXSkgOiAwOworICAgICAgICAgICAgU1JFX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgLTEpKSA6IDA7CiAgICAgICAgIHRoaXNwID0gKCh2b2lkKikgcHRyIDwgc3RhdGUtPmVuZCkgPwotICAgICAgICAgICAgU1JFX0lTX1dPUkQoKGludCkgcHRyWzBdKSA6IDA7CisgICAgICAgICAgICBTUkVfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkgOiAwOwogICAgICAgICByZXR1cm4gdGhpc3AgPT0gdGhhdHA7CiAKICAgICBjYXNlIFNSRV9BVF9MT0NfQk9VTkRBUlk6CiAgICAgICAgIGlmIChzdGF0ZS0+YmVnaW5uaW5nID09IHN0YXRlLT5lbmQpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgdGhhdHAgPSAoKHZvaWQqKSBwdHIgPiBzdGF0ZS0+YmVnaW5uaW5nKSA/Ci0gICAgICAgICAgICBTUkVfTE9DX0lTX1dPUkQoKGludCkgcHRyWy0xXSkgOiAwOworICAgICAgICAgICAgU1JFX0xPQ19JU19XT1JEKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIC0xKSkgOiAwOwogICAgICAgICB0aGlzcCA9ICgodm9pZCopIHB0ciA8IHN0YXRlLT5lbmQpID8KLSAgICAgICAgICAgIFNSRV9MT0NfSVNfV09SRCgoaW50KSBwdHJbMF0pIDogMDsKKyAgICAgICAgICAgIFNSRV9MT0NfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkgOiAwOwogICAgICAgICByZXR1cm4gdGhpc3AgIT0gdGhhdHA7CiAKICAgICBjYXNlIFNSRV9BVF9MT0NfTk9OX0JPVU5EQVJZOgogICAgICAgICBpZiAoc3RhdGUtPmJlZ2lubmluZyA9PSBzdGF0ZS0+ZW5kKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHRoYXRwID0gKCh2b2lkKikgcHRyID4gc3RhdGUtPmJlZ2lubmluZykgPwotICAgICAgICAgICAgU1JFX0xPQ19JU19XT1JEKChpbnQpIHB0clstMV0pIDogMDsKKyAgICAgICAgICAgIFNSRV9MT0NfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAtMSkpIDogMDsKICAgICAgICAgdGhpc3AgPSAoKHZvaWQqKSBwdHIgPCBzdGF0ZS0+ZW5kKSA/Ci0gICAgICAgICAgICBTUkVfTE9DX0lTX1dPUkQoKGludCkgcHRyWzBdKSA6IDA7CisgICAgICAgICAgICBTUkVfTE9DX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpIDogMDsKICAgICAgICAgcmV0dXJuIHRoaXNwID09IHRoYXRwOwogCi0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAgICAgY2FzZSBTUkVfQVRfVU5JX0JPVU5EQVJZOgogICAgICAgICBpZiAoc3RhdGUtPmJlZ2lubmluZyA9PSBzdGF0ZS0+ZW5kKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHRoYXRwID0gKCh2b2lkKikgcHRyID4gc3RhdGUtPmJlZ2lubmluZykgPwotICAgICAgICAgICAgU1JFX1VOSV9JU19XT1JEKChpbnQpIHB0clstMV0pIDogMDsKKyAgICAgICAgICAgIFNSRV9VTklfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAtMSkpIDogMDsKICAgICAgICAgdGhpc3AgPSAoKHZvaWQqKSBwdHIgPCBzdGF0ZS0+ZW5kKSA/Ci0gICAgICAgICAgICBTUkVfVU5JX0lTX1dPUkQoKGludCkgcHRyWzBdKSA6IDA7CisgICAgICAgICAgICBTUkVfVU5JX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpIDogMDsKICAgICAgICAgcmV0dXJuIHRoaXNwICE9IHRoYXRwOwogCiAgICAgY2FzZSBTUkVfQVRfVU5JX05PTl9CT1VOREFSWToKICAgICAgICAgaWYgKHN0YXRlLT5iZWdpbm5pbmcgPT0gc3RhdGUtPmVuZCkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB0aGF0cCA9ICgodm9pZCopIHB0ciA+IHN0YXRlLT5iZWdpbm5pbmcpID8KLSAgICAgICAgICAgIFNSRV9VTklfSVNfV09SRCgoaW50KSBwdHJbLTFdKSA6IDA7CisgICAgICAgICAgICBTUkVfVU5JX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgLTEpKSA6IDA7CiAgICAgICAgIHRoaXNwID0gKCh2b2lkKikgcHRyIDwgc3RhdGUtPmVuZCkgPwotICAgICAgICAgICAgU1JFX1VOSV9JU19XT1JEKChpbnQpIHB0clswXSkgOiAwOworICAgICAgICAgICAgU1JFX1VOSV9JU19XT1JEKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApKSA6IDA7CiAgICAgICAgIHJldHVybiB0aGlzcCA9PSB0aGF0cDsKLSNlbmRpZgogCiAgICAgfQogCkBAIC00NzYsNyArNDUxLDcgQEAKICAgICAgICAgICAgIGNvdW50ID0gKihzZXQrKyk7CiAKICAgICAgICAgICAgIGlmIChzaXplb2YoU1JFX0NPREUpID09IDIpIHsKLSAgICAgICAgICAgICAgICBibG9jayA9ICgodW5zaWduZWQgY2hhciopc2V0KVtjaCA+PiA4XTsKKyAgICAgICAgICAgICAgICBibG9jayA9ICgoY2hhciopc2V0KVtjaCA+PiA4XTsKICAgICAgICAgICAgICAgICBzZXQgKz0gMTI4OwogICAgICAgICAgICAgICAgIGlmIChzZXRbYmxvY2sqMTYgKyAoKGNoICYgMjU1KT4+NCldICYgKDEgPDwgKGNoICYgMTUpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9rOwpAQCAtNDg2LDcgKzQ2MSw3IEBACiAgICAgICAgICAgICAgICAgLyogIShjICYgfk4pID09IChjIDwgTisxKSBmb3IgYW55IHVuc2lnbmVkIGMsIHRoaXMgYXZvaWRzCiAgICAgICAgICAgICAgICAgICogd2FybmluZ3Mgd2hlbiBjJ3MgdHlwZSBzdXBwb3J0cyBvbmx5IG51bWJlcnMgPCBOKzEgKi8KICAgICAgICAgICAgICAgICBpZiAoIShjaCAmIH42NTUzNSkpCi0gICAgICAgICAgICAgICAgICAgIGJsb2NrID0gKCh1bnNpZ25lZCBjaGFyKilzZXQpW2NoID4+IDhdOworICAgICAgICAgICAgICAgICAgICBibG9jayA9ICgoY2hhciopc2V0KVtjaCA+PiA4XTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGJsb2NrID0gLTE7CiAgICAgICAgICAgICAgICAgc2V0ICs9IDY0OwpAQCAtNTEyLDI4ICs0ODcsMjkgQEAKIFNSRV9DT1VOVChTUkVfU1RBVEUqIHN0YXRlLCBTUkVfQ09ERSogcGF0dGVybiwgUHlfc3NpemVfdCBtYXhjb3VudCkKIHsKICAgICBTUkVfQ09ERSBjaHI7Ci0gICAgU1JFX0NIQVIqIHB0ciA9IChTUkVfQ0hBUiAqKXN0YXRlLT5wdHI7Ci0gICAgU1JFX0NIQVIqIGVuZCA9IChTUkVfQ0hBUiAqKXN0YXRlLT5lbmQ7CisgICAgY2hhciogcHRyID0gKGNoYXIgKilzdGF0ZS0+cHRyOworICAgIGNoYXIqIGVuZCA9IChjaGFyICopc3RhdGUtPmVuZDsKICAgICBQeV9zc2l6ZV90IGk7CiAKICAgICAvKiBhZGp1c3QgZW5kICovCi0gICAgaWYgKG1heGNvdW50IDwgZW5kIC0gcHRyICYmIG1heGNvdW50ICE9IFNSRV9NQVhSRVBFQVQpCi0gICAgICAgIGVuZCA9IHB0ciArIG1heGNvdW50OworICAgIGlmIChtYXhjb3VudCA8IChlbmQgLSBwdHIpIC8gc3RhdGUtPmNoYXJzaXplICYmIG1heGNvdW50ICE9IFNSRV9NQVhSRVBFQVQpCisgICAgICAgIGVuZCA9IHB0ciArIG1heGNvdW50KnN0YXRlLT5jaGFyc2l6ZTsKIAogICAgIHN3aXRjaCAocGF0dGVyblswXSkgewogCiAgICAgY2FzZSBTUkVfT1BfSU46CiAgICAgICAgIC8qIHJlcGVhdGVkIHNldCAqLwogICAgICAgICBUUkFDRSgoInwlcHwlcHxDT1VOVCBJTlxuIiwgcGF0dGVybiwgcHRyKSk7Ci0gICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgU1JFX0NIQVJTRVQocGF0dGVybiArIDIsICpwdHIpKQotICAgICAgICAgICAgcHRyKys7CisgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYKKyAgICAgICAgICAgICAgIFNSRV9DSEFSU0VUKHBhdHRlcm4gKyAyLCBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkpCisgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU1JFX09QX0FOWToKICAgICAgICAgLyogcmVwZWF0ZWQgZG90IHdpbGRjYXJkLiAqLwogICAgICAgICBUUkFDRSgoInwlcHwlcHxDT1VOVCBBTllcbiIsIHBhdHRlcm4sIHB0cikpOwotICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmICFTUkVfSVNfTElORUJSRUFLKCpwdHIpKQotICAgICAgICAgICAgcHRyKys7CisgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgIVNSRV9JU19MSU5FQlJFQUsoU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpKQorICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNSRV9PUF9BTllfQUxMOgpAQCAtNTQ3LDM4ICs1MjMsMzggQEAKICAgICAgICAgLyogcmVwZWF0ZWQgbGl0ZXJhbCAqLwogICAgICAgICBjaHIgPSBwYXR0ZXJuWzFdOwogICAgICAgICBUUkFDRSgoInwlcHwlcHxDT1VOVCBMSVRFUkFMICVkXG4iLCBwYXR0ZXJuLCBwdHIsIGNocikpOwotICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIChTUkVfQ09ERSkgKnB0ciA9PSBjaHIpCi0gICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAoU1JFX0NPREUpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApID09IGNocikKKyAgICAgICAgICAgIHB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTUkVfT1BfTElURVJBTF9JR05PUkU6CiAgICAgICAgIC8qIHJlcGVhdGVkIGxpdGVyYWwgKi8KICAgICAgICAgY2hyID0gcGF0dGVyblsxXTsKICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8Q09VTlQgTElURVJBTF9JR05PUkUgJWRcbiIsIHBhdHRlcm4sIHB0ciwgY2hyKSk7Ci0gICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgKFNSRV9DT0RFKSBzdGF0ZS0+bG93ZXIoKnB0cikgPT0gY2hyKQotICAgICAgICAgICAgcHRyKys7CisgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgKFNSRV9DT0RFKSBzdGF0ZS0+bG93ZXIoU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpID09IGNocikKKyAgICAgICAgICAgIHB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTUkVfT1BfTk9UX0xJVEVSQUw6CiAgICAgICAgIC8qIHJlcGVhdGVkIG5vbi1saXRlcmFsICovCiAgICAgICAgIGNociA9IHBhdHRlcm5bMV07CiAgICAgICAgIFRSQUNFKCgifCVwfCVwfENPVU5UIE5PVF9MSVRFUkFMICVkXG4iLCBwYXR0ZXJuLCBwdHIsIGNocikpOwotICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIChTUkVfQ09ERSkgKnB0ciAhPSBjaHIpCi0gICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAoU1JFX0NPREUpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApICE9IGNocikKKyAgICAgICAgICAgIHB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTUkVfT1BfTk9UX0xJVEVSQUxfSUdOT1JFOgogICAgICAgICAvKiByZXBlYXRlZCBub24tbGl0ZXJhbCAqLwogICAgICAgICBjaHIgPSBwYXR0ZXJuWzFdOwogICAgICAgICBUUkFDRSgoInwlcHwlcHxDT1VOVCBOT1RfTElURVJBTF9JR05PUkUgJWRcbiIsIHBhdHRlcm4sIHB0ciwgY2hyKSk7Ci0gICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgKFNSRV9DT0RFKSBzdGF0ZS0+bG93ZXIoKnB0cikgIT0gY2hyKQotICAgICAgICAgICAgcHRyKys7CisgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgKFNSRV9DT0RFKSBzdGF0ZS0+bG93ZXIoU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpICE9IGNocikKKyAgICAgICAgICAgIHB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoKICAgICAgICAgLyogcmVwZWF0ZWQgc2luZ2xlIGNoYXJhY3RlciBwYXR0ZXJuICovCiAgICAgICAgIFRSQUNFKCgifCVwfCVwfENPVU5UIFNVQlBBVFRFUk5cbiIsIHBhdHRlcm4sIHB0cikpOwotICAgICAgICB3aGlsZSAoKFNSRV9DSEFSKikgc3RhdGUtPnB0ciA8IGVuZCkgeworICAgICAgICB3aGlsZSAoKGNoYXIqKSBzdGF0ZS0+cHRyIDwgZW5kKSB7CiAgICAgICAgICAgICBpID0gU1JFX01BVENIKHN0YXRlLCBwYXR0ZXJuKTsKICAgICAgICAgICAgIGlmIChpIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gaTsKQEAgLTU4NiwxMiArNTYyLDEyIEBACiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8Q09VTlQgJWRcbiIsIHBhdHRlcm4sIHB0ciwKLSAgICAgICAgICAgICAgIChTUkVfQ0hBUiopIHN0YXRlLT5wdHIgLSBwdHIpKTsKLSAgICAgICAgcmV0dXJuIChTUkVfQ0hBUiopIHN0YXRlLT5wdHIgLSBwdHI7CisgICAgICAgICAgICAgICAoKGNoYXIqKXN0YXRlLT5wdHIgLSBwdHIpL3N0YXRlLT5jaGFyc2l6ZSkpOworICAgICAgICByZXR1cm4gKChjaGFyKilzdGF0ZS0+cHRyIC0gcHRyKS9zdGF0ZS0+Y2hhcnNpemU7CiAgICAgfQogCi0gICAgVFJBQ0UoKCJ8JXB8JXB8Q09VTlQgJWRcbiIsIHBhdHRlcm4sIHB0ciwgcHRyIC0gKFNSRV9DSEFSKikgc3RhdGUtPnB0cikpOwotICAgIHJldHVybiBwdHIgLSAoU1JFX0NIQVIqKSBzdGF0ZS0+cHRyOworICAgIFRSQUNFKCgifCVwfCVwfENPVU5UICVkXG4iLCBwYXR0ZXJuLCBwdHIsIChwdHIgLSAoY2hhciopIHN0YXRlLT5wdHIpL3N0YXRlLT5jaGFyc2l6ZSkpOworICAgIHJldHVybiAocHRyIC0gKGNoYXIqKSBzdGF0ZS0+cHRyKS9zdGF0ZS0+Y2hhcnNpemU7CiB9CiAKICNpZiAwIC8qIG5vdCB1c2VkIGluIHRoaXMgcmVsZWFzZSAqLwpAQCAtNjAyLDE5ICs1NzgsMTkgQEAKICAgICAgICByZXR1cm5zIHRoZSBudW1iZXIgb2YgU1JFX0NPREUgb2JqZWN0cyB0byBza2lwIGlmIHN1Y2Nlc3NmdWwsIDAKICAgICAgICBpZiBubyBtYXRjaCAqLwogCi0gICAgU1JFX0NIQVIqIGVuZCA9IHN0YXRlLT5lbmQ7Ci0gICAgU1JFX0NIQVIqIHB0ciA9IHN0YXRlLT5wdHI7CisgICAgY2hhciogZW5kID0gc3RhdGUtPmVuZDsKKyAgICBjaGFyKiBwdHIgPSBzdGF0ZS0+cHRyOwogICAgIFB5X3NzaXplX3QgaTsKIAogICAgIC8qIGNoZWNrIG1pbmltYWwgbGVuZ3RoICovCi0gICAgaWYgKHBhdHRlcm5bM10gJiYgKGVuZCAtIHB0cikgPCBwYXR0ZXJuWzNdKQorICAgIGlmIChwYXR0ZXJuWzNdICYmIChlbmQgLSBwdHIpL3N0YXRlLT5jaGFyc2l6ZSA8IHBhdHRlcm5bM10pCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLyogY2hlY2sga25vd24gcHJlZml4ICovCiAgICAgaWYgKHBhdHRlcm5bMl0gJiBTUkVfSU5GT19QUkVGSVggJiYgcGF0dGVybls1XSA+IDEpIHsKICAgICAgICAgLyogPGxlbmd0aD4gPHNraXA+IDxwcmVmaXggZGF0YT4gPG92ZXJsYXAgZGF0YT4gKi8KICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBhdHRlcm5bNV07IGkrKykKLSAgICAgICAgICAgIGlmICgoU1JFX0NPREUpIHB0cltpXSAhPSBwYXR0ZXJuWzcgKyBpXSkKKyAgICAgICAgICAgIGlmICgoU1JFX0NPREUpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIGkpICE9IHBhdHRlcm5bNyArIGldKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gcGF0dGVyblswXSArIDIgKiBwYXR0ZXJuWzZdOwogICAgIH0KQEAgLTc4Myw3ICs3NTksNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5X3NzaXplX3QgbGFzdF9jdHhfcG9zOwogICAgIFB5X3NzaXplX3QganVtcDsKLSAgICBTUkVfQ0hBUiogcHRyOworICAgIGNoYXIqIHB0cjsKICAgICBTUkVfQ09ERSogcGF0dGVybjsKICAgICBQeV9zc2l6ZV90IGNvdW50OwogICAgIFB5X3NzaXplX3QgbGFzdG1hcms7CkBAIC03OTksNyArNzc1LDcgQEAKIExPQ0FMKFB5X3NzaXplX3QpCiBTUkVfTUFUQ0goU1JFX1NUQVRFKiBzdGF0ZSwgU1JFX0NPREUqIHBhdHRlcm4pCiB7Ci0gICAgU1JFX0NIQVIqIGVuZCA9IChTUkVfQ0hBUiAqKXN0YXRlLT5lbmQ7CisgICAgY2hhciogZW5kID0gKGNoYXIqKXN0YXRlLT5lbmQ7CiAgICAgUHlfc3NpemVfdCBhbGxvY19wb3MsIGN0eF9wb3MgPSAtMTsKICAgICBQeV9zc2l6ZV90IGksIHJldCA9IDA7CiAgICAgUHlfc3NpemVfdCBqdW1wOwpAQCAtODE4LDE0ICs3OTQsMTQgQEAKIAogZW50cmFuY2U6CiAKLSAgICBjdHgtPnB0ciA9IChTUkVfQ0hBUiAqKXN0YXRlLT5wdHI7CisgICAgY3R4LT5wdHIgPSAoY2hhciAqKXN0YXRlLT5wdHI7CiAKICAgICBpZiAoY3R4LT5wYXR0ZXJuWzBdID09IFNSRV9PUF9JTkZPKSB7CiAgICAgICAgIC8qIG9wdGltaXphdGlvbiBpbmZvIGJsb2NrICovCiAgICAgICAgIC8qIDxJTkZPPiA8MT1za2lwPiA8Mj1mbGFncz4gPDM9bWluPiAuLi4gKi8KLSAgICAgICAgaWYgKGN0eC0+cGF0dGVyblszXSAmJiAoZW5kIC0gY3R4LT5wdHIpIDwgY3R4LT5wYXR0ZXJuWzNdKSB7CisgICAgICAgIGlmIChjdHgtPnBhdHRlcm5bM10gJiYgKGVuZCAtIGN0eC0+cHRyKS9zdGF0ZS0+Y2hhcnNpemUgPCBjdHgtPnBhdHRlcm5bM10pIHsKICAgICAgICAgICAgIFRSQUNFKCgicmVqZWN0IChnb3QgJWQgY2hhcnMsIG5lZWQgJWQpXG4iLAotICAgICAgICAgICAgICAgICAgIChlbmQgLSBjdHgtPnB0ciksIGN0eC0+cGF0dGVyblszXSkpOworICAgICAgICAgICAgICAgICAgIChlbmQgLSBjdHgtPnB0cikvc3RhdGUtPmNoYXJzaXplLCBjdHgtPnBhdHRlcm5bM10pKTsKICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICB9CiAgICAgICAgIGN0eC0+cGF0dGVybiArPSBjdHgtPnBhdHRlcm5bMV0gKyAxOwpAQCAtODY1LDEwICs4NDEsMTAgQEAKICAgICAgICAgICAgIC8qIDxMSVRFUkFMPiA8Y29kZT4gKi8KICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfExJVEVSQUwgJWRcbiIsIGN0eC0+cGF0dGVybiwKICAgICAgICAgICAgICAgICAgICBjdHgtPnB0ciwgKmN0eC0+cGF0dGVybikpOwotICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCAoU1JFX0NPREUpIGN0eC0+cHRyWzBdICE9IGN0eC0+cGF0dGVyblswXSkKKyAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgKFNSRV9DT0RFKSBTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApICE9IGN0eC0+cGF0dGVyblswXSkKICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgIGN0eC0+cGF0dGVybisrOwotICAgICAgICAgICAgY3R4LT5wdHIrKzsKKyAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU1JFX09QX05PVF9MSVRFUkFMOgpAQCAtODc2LDEwICs4NTIsMTAgQEAKICAgICAgICAgICAgIC8qIDxOT1RfTElURVJBTD4gPGNvZGU+ICovCiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxOT1RfTElURVJBTCAlZFxuIiwgY3R4LT5wYXR0ZXJuLAogICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyLCAqY3R4LT5wYXR0ZXJuKSk7Ci0gICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8IChTUkVfQ09ERSkgY3R4LT5wdHJbMF0gPT0gY3R4LT5wYXR0ZXJuWzBdKQorICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCAoU1JFX0NPREUpIFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkgPT0gY3R4LT5wYXR0ZXJuWzBdKQogICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgY3R4LT5wYXR0ZXJuKys7Ci0gICAgICAgICAgICBjdHgtPnB0cisrOworICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTUkVfT1BfU1VDQ0VTUzoKQEAgLTkwMiwxOSArODc4LDE5IEBACiAgICAgICAgICAgICAvKiA8Q0FURUdPUlk+IDxjb2RlPiAqLwogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8Q0FURUdPUlkgJWRcbiIsIGN0eC0+cGF0dGVybiwKICAgICAgICAgICAgICAgICAgICBjdHgtPnB0ciwgKmN0eC0+cGF0dGVybikpOwotICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCAhc3JlX2NhdGVnb3J5KGN0eC0+cGF0dGVyblswXSwgY3R4LT5wdHJbMF0pKQorICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCAhc3JlX2NhdGVnb3J5KGN0eC0+cGF0dGVyblswXSwgU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSkpCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICBjdHgtPnBhdHRlcm4rKzsKLSAgICAgICAgICAgIGN0eC0+cHRyKys7CisgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNSRV9PUF9BTlk6CiAgICAgICAgICAgICAvKiBtYXRjaCBhbnl0aGluZyAoZXhjZXB0IGEgbmV3bGluZSkgKi8KICAgICAgICAgICAgIC8qIDxBTlk+ICovCiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxBTllcbiIsIGN0eC0+cGF0dGVybiwgY3R4LT5wdHIpKTsKLSAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgU1JFX0lTX0xJTkVCUkVBSyhjdHgtPnB0clswXSkpCi0gICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7Ci0gICAgICAgICAgICBjdHgtPnB0cisrOworICAgICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgU1JFX0lTX0xJTkVCUkVBSyhTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApKSkKKyAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CisgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNSRV9PUF9BTllfQUxMOgpAQCAtOTIzLDQ3ICs4OTksNDcgQEAKICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfEFOWV9BTExcbiIsIGN0eC0+cGF0dGVybiwgY3R4LT5wdHIpKTsKICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQpCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7Ci0gICAgICAgICAgICBjdHgtPnB0cisrOworICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTUkVfT1BfSU46CiAgICAgICAgICAgICAvKiBtYXRjaCBzZXQgbWVtYmVyIChvciBub25fbWVtYmVyKSAqLwogICAgICAgICAgICAgLyogPElOPiA8c2tpcD4gPHNldD4gKi8KICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfElOXG4iLCBjdHgtPnBhdHRlcm4sIGN0eC0+cHRyKSk7Ci0gICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8ICFTUkVfQ0hBUlNFVChjdHgtPnBhdHRlcm4gKyAxLCAqY3R4LT5wdHIpKQotICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOworICAgICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgIVNSRV9DSEFSU0VUKGN0eC0+cGF0dGVybiArIDEsIFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkpKQorICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgIGN0eC0+cGF0dGVybiArPSBjdHgtPnBhdHRlcm5bMF07Ci0gICAgICAgICAgICBjdHgtPnB0cisrOworICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTUkVfT1BfTElURVJBTF9JR05PUkU6CiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxMSVRFUkFMX0lHTk9SRSAlZFxuIiwKICAgICAgICAgICAgICAgICAgICBjdHgtPnBhdHRlcm4sIGN0eC0+cHRyLCBjdHgtPnBhdHRlcm5bMF0pKTsKICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwKLSAgICAgICAgICAgICAgICBzdGF0ZS0+bG93ZXIoKmN0eC0+cHRyKSAhPSBzdGF0ZS0+bG93ZXIoKmN0eC0+cGF0dGVybikpCisgICAgICAgICAgICAgICAgc3RhdGUtPmxvd2VyKFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkpICE9IHN0YXRlLT5sb3dlcigqY3R4LT5wYXR0ZXJuKSkKICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgIGN0eC0+cGF0dGVybisrOwotICAgICAgICAgICAgY3R4LT5wdHIrKzsKKyAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU1JFX09QX05PVF9MSVRFUkFMX0lHTk9SRToKICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfE5PVF9MSVRFUkFMX0lHTk9SRSAlZFxuIiwKICAgICAgICAgICAgICAgICAgICBjdHgtPnBhdHRlcm4sIGN0eC0+cHRyLCAqY3R4LT5wYXR0ZXJuKSk7CiAgICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8Ci0gICAgICAgICAgICAgICAgc3RhdGUtPmxvd2VyKCpjdHgtPnB0cikgPT0gc3RhdGUtPmxvd2VyKCpjdHgtPnBhdHRlcm4pKQorICAgICAgICAgICAgICAgIHN0YXRlLT5sb3dlcihTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApKSA9PSBzdGF0ZS0+bG93ZXIoKmN0eC0+cGF0dGVybikpCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICBjdHgtPnBhdHRlcm4rKzsKLSAgICAgICAgICAgIGN0eC0+cHRyKys7CisgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNSRV9PUF9JTl9JR05PUkU6CiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxJTl9JR05PUkVcbiIsIGN0eC0+cGF0dGVybiwgY3R4LT5wdHIpKTsKICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQKICAgICAgICAgICAgICAgICB8fCAhU1JFX0NIQVJTRVQoY3R4LT5wYXR0ZXJuKzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTUkVfQ09ERSlzdGF0ZS0+bG93ZXIoKmN0eC0+cHRyKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTUkVfQ09ERSlzdGF0ZS0+bG93ZXIoU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSkpKQogICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgY3R4LT5wYXR0ZXJuICs9IGN0eC0+cGF0dGVyblswXTsKLSAgICAgICAgICAgIGN0eC0+cHRyKys7CisgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNSRV9PUF9KVU1QOgpAQCAtOTg2LDExICs5NjIsMTEgQEAKICAgICAgICAgICAgIGZvciAoOyBjdHgtPnBhdHRlcm5bMF07IGN0eC0+cGF0dGVybiArPSBjdHgtPnBhdHRlcm5bMF0pIHsKICAgICAgICAgICAgICAgICBpZiAoY3R4LT5wYXR0ZXJuWzFdID09IFNSRV9PUF9MSVRFUkFMICYmCiAgICAgICAgICAgICAgICAgICAgIChjdHgtPnB0ciA+PSBlbmQgfHwKLSAgICAgICAgICAgICAgICAgICAgIChTUkVfQ09ERSkgKmN0eC0+cHRyICE9IGN0eC0+cGF0dGVyblsyXSkpCisgICAgICAgICAgICAgICAgICAgICAoU1JFX0NPREUpIFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkgIT0gY3R4LT5wYXR0ZXJuWzJdKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKGN0eC0+cGF0dGVyblsxXSA9PSBTUkVfT1BfSU4gJiYKICAgICAgICAgICAgICAgICAgICAgKGN0eC0+cHRyID49IGVuZCB8fAotICAgICAgICAgICAgICAgICAgICAgIVNSRV9DSEFSU0VUKGN0eC0+cGF0dGVybiArIDMsIChTUkVfQ09ERSkgKmN0eC0+cHRyKSkpCisgICAgICAgICAgICAgICAgICAgICAhU1JFX0NIQVJTRVQoY3R4LT5wYXR0ZXJuICsgMywgKFNSRV9DT0RFKSBTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIHN0YXRlLT5wdHIgPSBjdHgtPnB0cjsKICAgICAgICAgICAgICAgICBET19KVU1QKEpVTVBfQlJBTkNILCBqdW1wX2JyYW5jaCwgY3R4LT5wYXR0ZXJuKzEpOwpAQCAtMTAyMSw3ICs5OTcsNyBAQAogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8UkVQRUFUX09ORSAlZCAlZFxuIiwgY3R4LT5wYXR0ZXJuLCBjdHgtPnB0ciwKICAgICAgICAgICAgICAgICAgICBjdHgtPnBhdHRlcm5bMV0sIGN0eC0+cGF0dGVyblsyXSkpOwogCi0gICAgICAgICAgICBpZiAoY3R4LT5wdHIgKyBjdHgtPnBhdHRlcm5bMV0gPiBlbmQpCisgICAgICAgICAgICBpZiAoY3R4LT5wdHIgKyBzdGF0ZS0+Y2hhcnNpemUgKiBjdHgtPnBhdHRlcm5bMV0gPiBlbmQpCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7IC8qIGNhbm5vdCBtYXRjaCAqLwogCiAgICAgICAgICAgICBzdGF0ZS0+cHRyID0gY3R4LT5wdHI7CkBAIC0xMDMwLDcgKzEwMDYsNyBAQAogICAgICAgICAgICAgUkVUVVJOX09OX0VSUk9SKHJldCk7CiAgICAgICAgICAgICBEQVRBX0xPT0tVUF9BVChTUkVfTUFUQ0hfQ09OVEVYVCwgY3R4LCBjdHhfcG9zKTsKICAgICAgICAgICAgIGN0eC0+Y291bnQgPSByZXQ7Ci0gICAgICAgICAgICBjdHgtPnB0ciArPSBjdHgtPmNvdW50OworICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplICogY3R4LT5jb3VudDsKIAogICAgICAgICAgICAgLyogd2hlbiB3ZSBhcnJpdmUgaGVyZSwgY291bnQgY29udGFpbnMgdGhlIG51bWJlciBvZgogICAgICAgICAgICAgICAgbWF0Y2hlcywgYW5kIGN0eC0+cHRyIHBvaW50cyB0byB0aGUgdGFpbCBvZiB0aGUgdGFyZ2V0CkBAIC0xMDU0LDggKzEwMzAsOSBAQAogICAgICAgICAgICAgICAgIGN0eC0+dS5jaHIgPSBjdHgtPnBhdHRlcm5bY3R4LT5wYXR0ZXJuWzBdKzFdOwogICAgICAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGN0eC0+Y291bnQgPj0gKFB5X3NzaXplX3QpIGN0eC0+cGF0dGVyblsxXSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC0+cHRyID49IGVuZCB8fCAqY3R4LT5wdHIgIT0gY3R4LT51LmNocikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyLS07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4LT5wdHIgPj0gZW5kIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSAhPSBjdHgtPnUuY2hyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIgLT0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5jb3VudC0tOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChjdHgtPmNvdW50IDwgKFB5X3NzaXplX3QpIGN0eC0+cGF0dGVyblsxXSkKQEAgLTEwNzAsNyArMTA0Nyw3IEBACiAKICAgICAgICAgICAgICAgICAgICAgTEFTVE1BUktfUkVTVE9SRSgpOwogCi0gICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyLS07CisgICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyIC09IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgY3R4LT5jb3VudC0tOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMTA4NCw3ICsxMDYxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9PTl9FUlJPUihyZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX1NVQ0NFU1M7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHItLTsKKyAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIgLT0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgICAgICAgICBjdHgtPmNvdW50LS07CiAgICAgICAgICAgICAgICAgICAgIExBU1RNQVJLX1JFU1RPUkUoKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMTA0LDcgKzEwODEsNyBAQAogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8TUlOX1JFUEVBVF9PTkUgJWQgJWRcbiIsIGN0eC0+cGF0dGVybiwgY3R4LT5wdHIsCiAgICAgICAgICAgICAgICAgICAgY3R4LT5wYXR0ZXJuWzFdLCBjdHgtPnBhdHRlcm5bMl0pKTsKIAotICAgICAgICAgICAgaWYgKGN0eC0+cHRyICsgY3R4LT5wYXR0ZXJuWzFdID4gZW5kKQorICAgICAgICAgICAgaWYgKGN0eC0+cHRyICsgc3RhdGUtPmNoYXJzaXplICogY3R4LT5wYXR0ZXJuWzFdID4gZW5kKQogICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOyAvKiBjYW5ub3QgbWF0Y2ggKi8KIAogICAgICAgICAgICAgc3RhdGUtPnB0ciA9IGN0eC0+cHRyOwpAQCAtMTEyMSw3ICsxMDk4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICAgICAgLyogYWR2YW5jZSBwYXN0IG1pbmltdW0gbWF0Y2hlcyBvZiByZXBlYXQgKi8KICAgICAgICAgICAgICAgICBjdHgtPmNvdW50ID0gcmV0OwotICAgICAgICAgICAgICAgIGN0eC0+cHRyICs9IGN0eC0+Y291bnQ7CisgICAgICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplICogY3R4LT5jb3VudDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGN0eC0+cGF0dGVybltjdHgtPnBhdHRlcm5bMF1dID09IFNSRV9PUF9TVUNDRVNTKSB7CkBAIC0xMTQ4LDcgKzExMjUsNyBAQAogICAgICAgICAgICAgICAgICAgICBpZiAocmV0ID09IDApCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHJldCA9PSAxKTsKLSAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIrKzsKKyAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgICAgICAgICBjdHgtPmNvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgIExBU1RNQVJLX1JFU1RPUkUoKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMzI1LDE0ICsxMzAyLDE2IEBACiAgICAgICAgICAgICAgICAgaWYgKGdyb3VwcmVmID49IHN0YXRlLT5sYXN0bWFyaykgewogICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBTUkVfQ0hBUiogcCA9IChTUkVfQ0hBUiopIHN0YXRlLT5tYXJrW2dyb3VwcmVmXTsKLSAgICAgICAgICAgICAgICAgICAgU1JFX0NIQVIqIGUgPSAoU1JFX0NIQVIqKSBzdGF0ZS0+bWFya1tncm91cHJlZisxXTsKKyAgICAgICAgICAgICAgICAgICAgY2hhciogcCA9IChjaGFyKikgc3RhdGUtPm1hcmtbZ3JvdXByZWZdOworICAgICAgICAgICAgICAgICAgICBjaGFyKiBlID0gKGNoYXIqKSBzdGF0ZS0+bWFya1tncm91cHJlZisxXTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFwIHx8ICFlIHx8IGUgPCBwKQogICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCAqY3R4LT5wdHIgIT0gKnApCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSAhPSBTUkVfQ0hBUkdFVChzdGF0ZSwgcCwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwKys7IGN0eC0+cHRyKys7CisgICAgICAgICAgICAgICAgICAgICAgICBwICs9IHN0YXRlLT5jaGFyc2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTEzNDksMTUgKzEzMjgsMTcgQEAKICAgICAgICAgICAgICAgICBpZiAoZ3JvdXByZWYgPj0gc3RhdGUtPmxhc3RtYXJrKSB7CiAgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFNSRV9DSEFSKiBwID0gKFNSRV9DSEFSKikgc3RhdGUtPm1hcmtbZ3JvdXByZWZdOwotICAgICAgICAgICAgICAgICAgICBTUkVfQ0hBUiogZSA9IChTUkVfQ0hBUiopIHN0YXRlLT5tYXJrW2dyb3VwcmVmKzFdOworICAgICAgICAgICAgICAgICAgICBjaGFyKiBwID0gKGNoYXIqKSBzdGF0ZS0+bWFya1tncm91cHJlZl07CisgICAgICAgICAgICAgICAgICAgIGNoYXIqIGUgPSAoY2hhciopIHN0YXRlLT5tYXJrW2dyb3VwcmVmKzFdOwogICAgICAgICAgICAgICAgICAgICBpZiAoIXAgfHwgIWUgfHwgZSA8IHApCiAgICAgICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHAgPCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmxvd2VyKCpjdHgtPnB0cikgIT0gc3RhdGUtPmxvd2VyKCpwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bG93ZXIoU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSkgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bG93ZXIoU1JFX0NIQVJHRVQoc3RhdGUsIHAsIDApKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHArKzsgY3R4LT5wdHIrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHAgKz0gc3RhdGUtPmNoYXJzaXplOworICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMTM5MSw3ICsxMzcyLDcgQEAKICAgICAgICAgICAgIC8qIDxBU1NFUlQ+IDxza2lwPiA8YmFjaz4gPHBhdHRlcm4+ICovCiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxBU1NFUlQgJWRcbiIsIGN0eC0+cGF0dGVybiwKICAgICAgICAgICAgICAgICAgICBjdHgtPnB0ciwgY3R4LT5wYXR0ZXJuWzFdKSk7Ci0gICAgICAgICAgICBzdGF0ZS0+cHRyID0gY3R4LT5wdHIgLSBjdHgtPnBhdHRlcm5bMV07CisgICAgICAgICAgICBzdGF0ZS0+cHRyID0gY3R4LT5wdHIgLSBzdGF0ZS0+Y2hhcnNpemUgKiBjdHgtPnBhdHRlcm5bMV07CiAgICAgICAgICAgICBpZiAoc3RhdGUtPnB0ciA8IHN0YXRlLT5iZWdpbm5pbmcpCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICBET19KVU1QKEpVTVBfQVNTRVJULCBqdW1wX2Fzc2VydCwgY3R4LT5wYXR0ZXJuKzIpOwpAQCAtMTQwNCw3ICsxMzg1LDcgQEAKICAgICAgICAgICAgIC8qIDxBU1NFUlRfTk9UPiA8c2tpcD4gPGJhY2s+IDxwYXR0ZXJuPiAqLwogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8QVNTRVJUX05PVCAlZFxuIiwgY3R4LT5wYXR0ZXJuLAogICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyLCBjdHgtPnBhdHRlcm5bMV0pKTsKLSAgICAgICAgICAgIHN0YXRlLT5wdHIgPSBjdHgtPnB0ciAtIGN0eC0+cGF0dGVyblsxXTsKKyAgICAgICAgICAgIHN0YXRlLT5wdHIgPSBjdHgtPnB0ciAtIHN0YXRlLT5jaGFyc2l6ZSAqIGN0eC0+cGF0dGVyblsxXTsKICAgICAgICAgICAgIGlmIChzdGF0ZS0+cHRyID49IHN0YXRlLT5iZWdpbm5pbmcpIHsKICAgICAgICAgICAgICAgICBET19KVU1QKEpVTVBfQVNTRVJUX05PVCwganVtcF9hc3NlcnRfbm90LCBjdHgtPnBhdHRlcm4rMik7CiAgICAgICAgICAgICAgICAgaWYgKHJldCkgewpAQCAtMTQ4Niw4ICsxNDY3LDggQEAKIExPQ0FMKFB5X3NzaXplX3QpCiBTUkVfU0VBUkNIKFNSRV9TVEFURSogc3RhdGUsIFNSRV9DT0RFKiBwYXR0ZXJuKQogewotICAgIFNSRV9DSEFSKiBwdHIgPSAoU1JFX0NIQVIgKilzdGF0ZS0+c3RhcnQ7Ci0gICAgU1JFX0NIQVIqIGVuZCA9IChTUkVfQ0hBUiAqKXN0YXRlLT5lbmQ7CisgICAgY2hhciogcHRyID0gKGNoYXIqKXN0YXRlLT5zdGFydDsKKyAgICBjaGFyKiBlbmQgPSAoY2hhciopc3RhdGUtPmVuZDsKICAgICBQeV9zc2l6ZV90IHN0YXR1cyA9IDA7CiAgICAgUHlfc3NpemVfdCBwcmVmaXhfbGVuID0gMDsKICAgICBQeV9zc2l6ZV90IHByZWZpeF9za2lwID0gMDsKQEAgLTE1MDUsOSArMTQ4Niw5IEBACiAgICAgICAgIGlmIChwYXR0ZXJuWzNdID4gMSkgewogICAgICAgICAgICAgLyogYWRqdXN0IGVuZCBwb2ludCAoYnV0IG1ha2Ugc3VyZSB3ZSBsZWF2ZSBhdCBsZWFzdCBvbmUKICAgICAgICAgICAgICAgIGNoYXJhY3RlciBpbiB0aGVyZSwgc28gbGl0ZXJhbCBzZWFyY2ggd2lsbCB3b3JrKSAqLwotICAgICAgICAgICAgZW5kIC09IHBhdHRlcm5bM10tMTsKKyAgICAgICAgICAgIGVuZCAtPSAocGF0dGVyblszXS0xKSAqIHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgIGlmIChlbmQgPD0gcHRyKQotICAgICAgICAgICAgICAgIGVuZCA9IHB0cisxOworICAgICAgICAgICAgICAgIGVuZCA9IHB0ciArIHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChmbGFncyAmIFNSRV9JTkZPX1BSRUZJWCkgewpAQCAtMTUzMywxMCArMTUxNCwxMCBAQAogICAgICAgICAvKiBwYXR0ZXJuIHN0YXJ0cyB3aXRoIGEga25vd24gcHJlZml4LiAgdXNlIHRoZSBvdmVybGFwCiAgICAgICAgICAgIHRhYmxlIHRvIHNraXAgZm9yd2FyZCBhcyBmYXN0IGFzIHdlIHBvc3NpYmx5IGNhbiAqLwogICAgICAgICBQeV9zc2l6ZV90IGkgPSAwOwotICAgICAgICBlbmQgPSAoU1JFX0NIQVIgKilzdGF0ZS0+ZW5kOworICAgICAgICBlbmQgPSAoY2hhciAqKXN0YXRlLT5lbmQ7CiAgICAgICAgIHdoaWxlIChwdHIgPCBlbmQpIHsKICAgICAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgICAgICBpZiAoKFNSRV9DT0RFKSBwdHJbMF0gIT0gcHJlZml4W2ldKSB7CisgICAgICAgICAgICAgICAgaWYgKChTUkVfQ09ERSkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkgIT0gcHJlZml4W2ldKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghaSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBlbHNlCkBAIC0xNTQ1LDggKzE1MjYsOCBAQAogICAgICAgICAgICAgICAgICAgICBpZiAoKytpID09IHByZWZpeF9sZW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvdW5kIGEgcG90ZW50aWFsIG1hdGNoICovCiAgICAgICAgICAgICAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxTRUFSQ0ggU0NBTlxuIiwgcGF0dGVybiwgcHRyKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+c3RhcnQgPSBwdHIgKyAxIC0gcHJlZml4X2xlbjsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5wdHIgPSBwdHIgKyAxIC0gcHJlZml4X2xlbiArIHByZWZpeF9za2lwOworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPnN0YXJ0ID0gcHRyIC0gKHByZWZpeF9sZW4gLSAxKSAqIHN0YXRlLT5jaGFyc2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5wdHIgPSBwdHIgLSAocHJlZml4X2xlbiAtIHByZWZpeF9za2lwIC0gMSkgKiBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBTUkVfSU5GT19MSVRFUkFMKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOyAvKiB3ZSBnb3QgYWxsIG9mIGl0ICovCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBTUkVfTUFUQ0goc3RhdGUsIHBhdHRlcm4gKyAyKnByZWZpeF9za2lwKTsKQEAgLTE1NTgsNyArMTUzOSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHB0cisrOworICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xNTY4LDE1ICsxNTQ5LDE2IEBACiAgICAgICAgIC8qIHBhdHRlcm4gc3RhcnRzIHdpdGggYSBsaXRlcmFsIGNoYXJhY3Rlci4gIHRoaXMgaXMgdXNlZAogICAgICAgICAgICBmb3Igc2hvcnQgcHJlZml4ZXMsIGFuZCBpZiBmYXN0IHNlYXJjaCBpcyBkaXNhYmxlZCAqLwogICAgICAgICBTUkVfQ09ERSBjaHIgPSBwYXR0ZXJuWzFdOwotICAgICAgICBlbmQgPSAoU1JFX0NIQVIgKilzdGF0ZS0+ZW5kOworICAgICAgICBlbmQgPSAoY2hhciopc3RhdGUtPmVuZDsKICAgICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAoU1JFX0NPREUpIHB0clswXSAhPSBjaHIpCi0gICAgICAgICAgICAgICAgcHRyKys7CisgICAgICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIChTUkVfQ09ERSkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkgIT0gY2hyKQorICAgICAgICAgICAgICAgIHB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBpZiAocHRyID49IGVuZCkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfFNFQVJDSCBMSVRFUkFMXG4iLCBwYXR0ZXJuLCBwdHIpKTsKICAgICAgICAgICAgIHN0YXRlLT5zdGFydCA9IHB0cjsKLSAgICAgICAgICAgIHN0YXRlLT5wdHIgPSArK3B0cjsKKyAgICAgICAgICAgIHB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CisgICAgICAgICAgICBzdGF0ZS0+cHRyID0gcHRyOwogICAgICAgICAgICAgaWYgKGZsYWdzICYgU1JFX0lORk9fTElURVJBTCkKICAgICAgICAgICAgICAgICByZXR1cm4gMTsgLyogd2UgZ290IGFsbCBvZiBpdCAqLwogICAgICAgICAgICAgc3RhdHVzID0gU1JFX01BVENIKHN0YXRlLCBwYXR0ZXJuICsgMik7CkBAIC0xNTg1LDEwICsxNTY3LDEwIEBACiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGNoYXJzZXQpIHsKICAgICAgICAgLyogcGF0dGVybiBzdGFydHMgd2l0aCBhIGNoYXJhY3RlciBmcm9tIGEga25vd24gc2V0ICovCi0gICAgICAgIGVuZCA9IChTUkVfQ0hBUiAqKXN0YXRlLT5lbmQ7CisgICAgICAgIGVuZCA9IChjaGFyKilzdGF0ZS0+ZW5kOwogICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmICFTUkVfQ0hBUlNFVChjaGFyc2V0LCBwdHJbMF0pKQotICAgICAgICAgICAgICAgIHB0cisrOworICAgICAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAhU1JFX0NIQVJTRVQoY2hhcnNldCwgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpKQorICAgICAgICAgICAgICAgIHB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBpZiAocHRyID49IGVuZCkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfFNFQVJDSCBDSEFSU0VUXG4iLCBwYXR0ZXJuLCBwdHIpKTsKQEAgLTE1OTcsMTMgKzE1NzksMTQgQEAKICAgICAgICAgICAgIHN0YXR1cyA9IFNSRV9NQVRDSChzdGF0ZSwgcGF0dGVybik7CiAgICAgICAgICAgICBpZiAoc3RhdHVzICE9IDApCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgICAgIHB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgLyogZ2VuZXJhbCBjYXNlICovCiAgICAgICAgIHdoaWxlIChwdHIgPD0gZW5kKSB7CiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxTRUFSQ0hcbiIsIHBhdHRlcm4sIHB0cikpOwotICAgICAgICAgICAgc3RhdGUtPnN0YXJ0ID0gc3RhdGUtPnB0ciA9IHB0cisrOworICAgICAgICAgICAgc3RhdGUtPnN0YXJ0ID0gc3RhdGUtPnB0ciA9IHB0cjsKKyAgICAgICAgICAgIHB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBzdGF0dXMgPSBTUkVfTUFUQ0goc3RhdGUsIHBhdHRlcm4pOwogICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAwKQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTYxMiwxNiArMTU5NSw2IEBACiAgICAgcmV0dXJuIHN0YXR1czsKIH0KIAotTE9DQUwoaW50KQotU1JFX0xJVEVSQUxfVEVNUExBVEUoU1JFX0NIQVIqIHB0ciwgUHlfc3NpemVfdCBsZW4pCi17Ci0gICAgLyogY2hlY2sgaWYgZ2l2ZW4gc3RyaW5nIGlzIGEgbGl0ZXJhbCB0ZW1wbGF0ZSAoaS5lLiBubyBlc2NhcGVzKSAqLwotICAgIHdoaWxlIChsZW4tLSA+IDApCi0gICAgICAgIGlmICgqcHRyKysgPT0gJ1xcJykKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiAxOwotfQotCiAjaWYgIWRlZmluZWQoU1JFX1JFQ1VSU0lWRSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTE2MjksNyArMTYwMiwyNCBAQAogCiAvKiBzZWUgc3JlLmggZm9yIG9iamVjdCBkZWNsYXJhdGlvbnMgKi8KIHN0YXRpYyBQeU9iamVjdCpwYXR0ZXJuX25ld19tYXRjaChQYXR0ZXJuT2JqZWN0KiwgU1JFX1NUQVRFKiwgaW50KTsKLXN0YXRpYyBQeU9iamVjdCpwYXR0ZXJuX3NjYW5uZXIoUGF0dGVybk9iamVjdCosIFB5T2JqZWN0Kik7CitzdGF0aWMgUHlPYmplY3QqcGF0dGVybl9zY2FubmVyKFBhdHRlcm5PYmplY3QqLCBQeU9iamVjdCosIFB5T2JqZWN0KiBrdyk7CisKK3N0YXRpYyBpbnQKK3NyZV9saXRlcmFsX3RlbXBsYXRlKGludCBjaGFyc2l6ZSwgY2hhciogcHRyLCBQeV9zc2l6ZV90IGxlbikKK3sKKyAgICAvKiBjaGVjayBpZiBnaXZlbiBzdHJpbmcgaXMgYSBsaXRlcmFsIHRlbXBsYXRlIChpLmUuIG5vIGVzY2FwZXMpICovCisgICAgc3RydWN0IHsKKyAgICAgICAgaW50IGNoYXJzaXplOworICAgIH0gc3RhdGUgPSB7CisgICAgICAgIGNoYXJzaXplCisgICAgfTsKKyAgICB3aGlsZSAobGVuLS0gPiAwKSB7CisgICAgICAgIGlmIChTUkVfQ0hBUkdFVCgoJnN0YXRlKSwgcHRyLCAwKSA9PSAnXFwnKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHB0ciArPSBjaGFyc2l6ZTsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzcmVfY29kZXNpemUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCkBAIC0xNjQ2LDExICsxNjM2LDcgQEAKICAgICBpZiAoZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEUpCiAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpIiwgc3JlX2xvd2VyX2xvY2FsZShjaGFyYWN0ZXIpKTsKICAgICBpZiAoZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFKQotI2lmIGRlZmluZWQoSEFWRV9VTklDT0RFKQogICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIHNyZV9sb3dlcl91bmljb2RlKGNoYXJhY3RlcikpOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBzcmVfbG93ZXJfbG9jYWxlKGNoYXJhY3RlcikpOwotI2VuZGlmCiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBzcmVfbG93ZXIoY2hhcmFjdGVyKSk7CiB9CiAKQEAgLTE2NjksNyArMTY1NSw5IEBACiB9CiAKIHN0YXRpYyB2b2lkKgotZ2V0c3RyaW5nKFB5T2JqZWN0KiBzdHJpbmcsIFB5X3NzaXplX3QqIHBfbGVuZ3RoLCBpbnQqIHBfY2hhcnNpemUsIFB5X2J1ZmZlciAqdmlldykKK2dldHN0cmluZyhQeU9iamVjdCogc3RyaW5nLCBQeV9zc2l6ZV90KiBwX2xlbmd0aCwKKyAgICAgICAgICBpbnQqIHBfbG9naWNhbF9jaGFyc2l6ZSwgaW50KiBwX2NoYXJzaXplLAorICAgICAgICAgIFB5X2J1ZmZlciAqdmlldykKIHsKICAgICAvKiBnaXZlbiBhIHB5dGhvbiBvYmplY3QsIHJldHVybiBhIGRhdGEgcG9pbnRlciwgYSBsZW5ndGggKGluCiAgICAgICAgY2hhcmFjdGVycyksIGFuZCBhIGNoYXJhY3RlciBzaXplLiAgcmV0dXJuIE5VTEwgaWYgdGhlIG9iamVjdApAQCAtMTY4MywxMyArMTY3MSwxNiBAQAogICAgIC8qIFVuaWNvZGUgb2JqZWN0cyBkbyBub3Qgc3VwcG9ydCB0aGUgYnVmZmVyIEFQSS4gU28sIGdldCB0aGUgZGF0YQogICAgICAgIGRpcmVjdGx5IGluc3RlYWQuICovCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhzdHJpbmcpKSB7Ci0gICAgICAgIHB0ciA9ICh2b2lkICopUHlVbmljb2RlX0FTX0RBVEEoc3RyaW5nKTsKLSAgICAgICAgKnBfbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9TSVpFKHN0cmluZyk7Ci0gICAgICAgICpwX2NoYXJzaXplID0gc2l6ZW9mKFB5X1VOSUNPREUpOworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cmluZykgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcHRyID0gUHlVbmljb2RlX0RBVEEoc3RyaW5nKTsKKyAgICAgICAgKnBfbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKTsKKyAgICAgICAgKnBfY2hhcnNpemUgPSBQeVVuaWNvZGVfS0lORChzdHJpbmcpOworICAgICAgICAqcF9sb2dpY2FsX2NoYXJzaXplID0gNDsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CiAKLSAgICAvKiBnZXQgcG9pbnRlciB0byBzdHJpbmcgYnVmZmVyICovCisgICAgLyogZ2V0IHBvaW50ZXIgdG8gYnl0ZSBzdHJpbmcgYnVmZmVyICovCiAgICAgdmlldy0+bGVuID0gLTE7CiAgICAgYnVmZmVyID0gUHlfVFlQRShzdHJpbmcpLT50cF9hc19idWZmZXI7CiAgICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+YmZfZ2V0YnVmZmVyIHx8CkBAIC0xNzEyLDEwICsxNzAzLDYgQEAKIAogICAgIGlmIChQeUJ5dGVzX0NoZWNrKHN0cmluZykgfHwgYnl0ZXMgPT0gc2l6ZSkKICAgICAgICAgY2hhcnNpemUgPSAxOwotI2lmIGRlZmluZWQoSEFWRV9VTklDT0RFKQotICAgIGVsc2UgaWYgKGJ5dGVzID09IChQeV9zc2l6ZV90KSAoc2l6ZSAqIHNpemVvZihQeV9VTklDT0RFKSkpCi0gICAgICAgIGNoYXJzaXplID0gc2l6ZW9mKFB5X1VOSUNPREUpOwotI2VuZGlmCiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJidWZmZXIgc2l6ZSBtaXNtYXRjaCIpOwogICAgICAgICBnb3RvIGVycjsKQEAgLTE3MjMsNiArMTcxMCw3IEBACiAKICAgICAqcF9sZW5ndGggPSBzaXplOwogICAgICpwX2NoYXJzaXplID0gY2hhcnNpemU7CisgICAgKnBfbG9naWNhbF9jaGFyc2l6ZSA9IGNoYXJzaXplOwogCiAgICAgaWYgKHB0ciA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKQEAgLTE3NDMsNyArMTczMSw3IEBACiAgICAgLyogcHJlcGFyZSBzdGF0ZSBvYmplY3QgKi8KIAogICAgIFB5X3NzaXplX3QgbGVuZ3RoOwotICAgIGludCBjaGFyc2l6ZTsKKyAgICBpbnQgbG9naWNhbF9jaGFyc2l6ZSwgY2hhcnNpemU7CiAgICAgdm9pZCogcHRyOwogCiAgICAgbWVtc2V0KHN0YXRlLCAwLCBzaXplb2YoU1JFX1NUQVRFKSk7CkBAIC0xNzUyLDE4ICsxNzQwLDE4IEBACiAgICAgc3RhdGUtPmxhc3RpbmRleCA9IC0xOwogCiAgICAgc3RhdGUtPmJ1ZmZlci5idWYgPSBOVUxMOwotICAgIHB0ciA9IGdldHN0cmluZyhzdHJpbmcsICZsZW5ndGgsICZjaGFyc2l6ZSwgJnN0YXRlLT5idWZmZXIpOworICAgIHB0ciA9IGdldHN0cmluZyhzdHJpbmcsICZsZW5ndGgsICZsb2dpY2FsX2NoYXJzaXplLCAmY2hhcnNpemUsICZzdGF0ZS0+YnVmZmVyKTsKICAgICBpZiAoIXB0cikKICAgICAgICAgZ290byBlcnI7CiAKLSAgICBpZiAoY2hhcnNpemUgPT0gMSAmJiBwYXR0ZXJuLT5jaGFyc2l6ZSA+IDEpIHsKKyAgICBpZiAobG9naWNhbF9jaGFyc2l6ZSA9PSAxICYmIHBhdHRlcm4tPmxvZ2ljYWxfY2hhcnNpemUgPiAxKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0JCQkiY2FuJ3QgdXNlIGEgc3RyaW5nIHBhdHRlcm4gb24gYSBieXRlcy1saWtlIG9iamVjdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHVzZSBhIHN0cmluZyBwYXR0ZXJuIG9uIGEgYnl0ZXMtbGlrZSBvYmplY3QiKTsKICAgICAgICAgZ290byBlcnI7CiAgICAgfQotICAgIGlmIChjaGFyc2l6ZSA+IDEgJiYgcGF0dGVybi0+Y2hhcnNpemUgPT0gMSkgeworICAgIGlmIChsb2dpY2FsX2NoYXJzaXplID4gMSAmJiBwYXR0ZXJuLT5sb2dpY2FsX2NoYXJzaXplID09IDEpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLQkJCSJjYW4ndCB1c2UgYSBieXRlcyBwYXR0ZXJuIG9uIGEgc3RyaW5nLWxpa2Ugb2JqZWN0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgdXNlIGEgYnl0ZXMgcGF0dGVybiBvbiBhIHN0cmluZy1saWtlIG9iamVjdCIpOwogICAgICAgICBnb3RvIGVycjsKICAgICB9CiAKQEAgLTE3NzgsNiArMTc2Niw3IEBACiAgICAgZWxzZSBpZiAoZW5kID4gbGVuZ3RoKQogICAgICAgICBlbmQgPSBsZW5ndGg7CiAKKyAgICBzdGF0ZS0+bG9naWNhbF9jaGFyc2l6ZSA9IGxvZ2ljYWxfY2hhcnNpemU7CiAgICAgc3RhdGUtPmNoYXJzaXplID0gY2hhcnNpemU7CiAKICAgICBzdGF0ZS0+YmVnaW5uaW5nID0gcHRyOwpAQCAtMTc5MywxMSArMTc4Miw3IEBACiAgICAgaWYgKHBhdHRlcm4tPmZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFKQogICAgICAgICBzdGF0ZS0+bG93ZXIgPSBzcmVfbG93ZXJfbG9jYWxlOwogICAgIGVsc2UgaWYgKHBhdHRlcm4tPmZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSkKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKICAgICAgICAgc3RhdGUtPmxvd2VyID0gc3JlX2xvd2VyX3VuaWNvZGU7Ci0jZWxzZQotICAgICAgICBzdGF0ZS0+bG93ZXIgPSBzcmVfbG93ZXJfbG9jYWxlOwotI2VuZGlmCiAgICAgZWxzZQogICAgICAgICBzdGF0ZS0+bG93ZXIgPSBzcmVfbG93ZXI7CiAKQEAgLTE5MDQsMTIgKzE4ODksMTAgQEAKIAogICAgIFRSQUNFKCgifCVwfCVwfE1BVENIXG4iLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZiksIHN0YXRlLnB0cikpOwogCi0gICAgaWYgKHN0YXRlLmNoYXJzaXplID09IDEpIHsKKyAgICBpZiAoc3RhdGUubG9naWNhbF9jaGFyc2l6ZSA9PSAxKSB7CiAgICAgICAgIHN0YXR1cyA9IHNyZV9tYXRjaCgmc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSk7CiAgICAgfSBlbHNlIHsKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKICAgICAgICAgc3RhdHVzID0gc3JlX3VtYXRjaCgmc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICBUUkFDRSgoInwlcHwlcHxFTkRcbiIsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSwgc3RhdGUucHRyKSk7CkBAIC0xOTQxLDEyICsxOTI0LDEwIEBACiAKICAgICBUUkFDRSgoInwlcHwlcHxTRUFSQ0hcbiIsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSwgc3RhdGUucHRyKSk7CiAKLSAgICBpZiAoc3RhdGUuY2hhcnNpemUgPT0gMSkgeworICAgIGlmIChzdGF0ZS5sb2dpY2FsX2NoYXJzaXplID09IDEpIHsKICAgICAgICAgc3RhdHVzID0gc3JlX3NlYXJjaCgmc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSk7CiAgICAgfSBlbHNlIHsKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKICAgICAgICAgc3RhdHVzID0gc3JlX3VzZWFyY2goJnN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZikpOwotI2VuZGlmCiAgICAgfQogCiAgICAgVFJBQ0UoKCJ8JXB8JXB8RU5EXG4iLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZiksIHN0YXRlLnB0cikpOwpAQCAtMjA4OCwxNiArMjA2OSwxNCBAQAogCiAgICAgICAgIHN0YXRlLnB0ciA9IHN0YXRlLnN0YXJ0OwogCi0gICAgICAgIGlmIChzdGF0ZS5jaGFyc2l6ZSA9PSAxKSB7CisgICAgICAgIGlmIChzdGF0ZS5sb2dpY2FsX2NoYXJzaXplID09IDEpIHsKICAgICAgICAgICAgIHN0YXR1cyA9IHNyZV9zZWFyY2goJnN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZikpOwogICAgICAgICB9IGVsc2UgewotI2lmIGRlZmluZWQoSEFWRV9VTklDT0RFKQogICAgICAgICAgICAgc3RhdHVzID0gc3JlX3VzZWFyY2goJnN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZikpOwotI2VuZGlmCiAgICAgICAgIH0KIAotCWlmIChQeUVycl9PY2N1cnJlZCgpKQotCSAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICAgICAgaWYgKHN0YXR1cyA8PSAwKSB7CiAgICAgICAgICAgICBpZiAoc3RhdHVzID09IDApCkBAIC0yMTU5LDEzICsyMTM4LDEzIEBACiAKICNpZiBQWV9WRVJTSU9OX0hFWCA+PSAweDAyMDIwMDAwCiBzdGF0aWMgUHlPYmplY3QqCi1wYXR0ZXJuX2ZpbmRpdGVyKFBhdHRlcm5PYmplY3QqIHBhdHRlcm4sIFB5T2JqZWN0KiBhcmdzKQorcGF0dGVybl9maW5kaXRlcihQYXR0ZXJuT2JqZWN0KiBwYXR0ZXJuLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQogewogICAgIFB5T2JqZWN0KiBzY2FubmVyOwogICAgIFB5T2JqZWN0KiBzZWFyY2g7CiAgICAgUHlPYmplY3QqIGl0ZXJhdG9yOwogCi0gICAgc2Nhbm5lciA9IHBhdHRlcm5fc2Nhbm5lcihwYXR0ZXJuLCBhcmdzKTsKKyAgICBzY2FubmVyID0gcGF0dGVybl9zY2FubmVyKHBhdHRlcm4sIGFyZ3MsIGt3KTsKICAgICBpZiAoIXNjYW5uZXIpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0yMjE4LDE2ICsyMTk3LDE0IEBACiAKICAgICAgICAgc3RhdGUucHRyID0gc3RhdGUuc3RhcnQ7CiAKLSAgICAgICAgaWYgKHN0YXRlLmNoYXJzaXplID09IDEpIHsKKyAgICAgICAgaWYgKHN0YXRlLmxvZ2ljYWxfY2hhcnNpemUgPT0gMSkgewogICAgICAgICAgICAgc3RhdHVzID0gc3JlX3NlYXJjaCgmc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAgICAgICAgICAgICBzdGF0dXMgPSBzcmVfdXNlYXJjaCgmc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSk7Ci0jZW5kaWYKICAgICAgICAgfQogCi0JaWYgKFB5RXJyX09jY3VycmVkKCkpCi0JICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKIAogICAgICAgICBpZiAoc3RhdHVzIDw9IDApIHsKICAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gMCkKQEAgLTIzMDgsNyArMjI4NSw3IEBACiAgICAgaW50IHN0YXR1czsKICAgICBQeV9zc2l6ZV90IG47CiAgICAgUHlfc3NpemVfdCBpLCBiLCBlOwotICAgIGludCBiaW50OworICAgIGludCBsb2dpY2FsX2NoYXJzaXplLCBjaGFyc2l6ZTsKICAgICBpbnQgZmlsdGVyX2lzX2NhbGxhYmxlOwogICAgIFB5X2J1ZmZlciB2aWV3OwogCkBAIC0yMzIxLDE2ICsyMjk4LDEwIEBACiAgICAgICAgIC8qIGlmIG5vdCBjYWxsYWJsZSwgY2hlY2sgaWYgaXQncyBhIGxpdGVyYWwgc3RyaW5nICovCiAgICAgICAgIGludCBsaXRlcmFsOwogICAgICAgICB2aWV3LmJ1ZiA9IE5VTEw7Ci0gICAgICAgIHB0ciA9IGdldHN0cmluZyhwdGVtcGxhdGUsICZuLCAmYmludCwgJnZpZXcpOwotICAgICAgICBiID0gYmludDsKKyAgICAgICAgcHRyID0gZ2V0c3RyaW5nKHB0ZW1wbGF0ZSwgJm4sICZsb2dpY2FsX2NoYXJzaXplLCAmY2hhcnNpemUsICZ2aWV3KTsKKyAgICAgICAgYiA9IGNoYXJzaXplOwogICAgICAgICBpZiAocHRyKSB7Ci0gICAgICAgICAgICBpZiAoYiA9PSAxKSB7Ci0JCSAgICBsaXRlcmFsID0gc3JlX2xpdGVyYWxfdGVtcGxhdGUoKHVuc2lnbmVkIGNoYXIgKilwdHIsIG4pOwotICAgICAgICAgICAgfSBlbHNlIHsKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKLQkJICAgIGxpdGVyYWwgPSBzcmVfdWxpdGVyYWxfdGVtcGxhdGUoKFB5X1VOSUNPREUgKilwdHIsIG4pOwotI2VuZGlmCi0gICAgICAgICAgICB9CisgICAgICAgICAgICBsaXRlcmFsID0gc3JlX2xpdGVyYWxfdGVtcGxhdGUoYiwgcHRyLCBuKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICBsaXRlcmFsID0gMDsKQEAgLTIzNzQsMTYgKzIzNDUsMTQgQEAKIAogICAgICAgICBzdGF0ZS5wdHIgPSBzdGF0ZS5zdGFydDsKIAotICAgICAgICBpZiAoc3RhdGUuY2hhcnNpemUgPT0gMSkgeworICAgICAgICBpZiAoc3RhdGUubG9naWNhbF9jaGFyc2l6ZSA9PSAxKSB7CiAgICAgICAgICAgICBzdGF0dXMgPSBzcmVfc2VhcmNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpKTsKICAgICAgICAgfSBlbHNlIHsKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKICAgICAgICAgICAgIHN0YXR1cyA9IHNyZV91c2VhcmNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpKTsKLSNlbmRpZgogICAgICAgICB9CiAKLQlpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLQkgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgICAgIGlmIChzdGF0dXMgPD0gMCkgewogICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAwKQpAQCAtMjU2NCwzNSArMjUzMywzNSBAQAogfQogCiBQeURvY19TVFJWQVIocGF0dGVybl9tYXRjaF9kb2MsCi0ibWF0Y2goc3RyaW5nWywgcG9zWywgZW5kcG9zXV0pIC0+IG1hdGNoIG9iamVjdCBvciBOb25lLlxuXG5cCisibWF0Y2goc3RyaW5nWywgcG9zWywgZW5kcG9zXV0pIC0+IG1hdGNoIG9iamVjdCBvciBOb25lLlxuXAogICAgIE1hdGNoZXMgemVybyBvciBtb3JlIGNoYXJhY3RlcnMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIik7CiAKIFB5RG9jX1NUUlZBUihwYXR0ZXJuX3NlYXJjaF9kb2MsCi0ic2VhcmNoKHN0cmluZ1ssIHBvc1ssIGVuZHBvc11dKSAtPiBtYXRjaCBvYmplY3Qgb3IgTm9uZS5cblxuXAorInNlYXJjaChzdHJpbmdbLCBwb3NbLCBlbmRwb3NdXSkgLT4gbWF0Y2ggb2JqZWN0IG9yIE5vbmUuXG5cCiAgICAgU2NhbiB0aHJvdWdoIHN0cmluZyBsb29raW5nIGZvciBhIG1hdGNoLCBhbmQgcmV0dXJuIGEgY29ycmVzcG9uZGluZ1xuXAogICAgIG1hdGNoIG9iamVjdCBpbnN0YW5jZS4gUmV0dXJuIE5vbmUgaWYgbm8gcG9zaXRpb24gaW4gdGhlIHN0cmluZyBtYXRjaGVzLiIpOwogCiBQeURvY19TVFJWQVIocGF0dGVybl9zcGxpdF9kb2MsCi0ic3BsaXQoc3RyaW5nWywgbWF4c3BsaXQgPSAwXSkgIC0+IGxpc3QuXG5cblwKKyJzcGxpdChzdHJpbmdbLCBtYXhzcGxpdCA9IDBdKSAgLT4gbGlzdC5cblwKICAgICBTcGxpdCBzdHJpbmcgYnkgdGhlIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4uIik7CiAKIFB5RG9jX1NUUlZBUihwYXR0ZXJuX2ZpbmRhbGxfZG9jLAotImZpbmRhbGwoc3RyaW5nWywgcG9zWywgZW5kcG9zXV0pIC0+IGxpc3QuXG5cblwKKyJmaW5kYWxsKHN0cmluZ1ssIHBvc1ssIGVuZHBvc11dKSAtPiBsaXN0LlxuXAogICAgUmV0dXJuIGEgbGlzdCBvZiBhbGwgbm9uLW92ZXJsYXBwaW5nIG1hdGNoZXMgb2YgcGF0dGVybiBpbiBzdHJpbmcuIik7CiAKIFB5RG9jX1NUUlZBUihwYXR0ZXJuX2ZpbmRpdGVyX2RvYywKLSJmaW5kaXRlcihzdHJpbmdbLCBwb3NbLCBlbmRwb3NdXSkgLT4gaXRlcmF0b3IuXG5cblwKKyJmaW5kaXRlcihzdHJpbmdbLCBwb3NbLCBlbmRwb3NdXSkgLT4gaXRlcmF0b3IuXG5cCiAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIG5vbi1vdmVybGFwcGluZyBtYXRjaGVzIGZvciB0aGUgXG5cCiAgICAgUkUgcGF0dGVybiBpbiBzdHJpbmcuIEZvciBlYWNoIG1hdGNoLCB0aGUgaXRlcmF0b3IgcmV0dXJucyBhXG5cCiAgICAgbWF0Y2ggb2JqZWN0LiIpOwogCiBQeURvY19TVFJWQVIocGF0dGVybl9zdWJfZG9jLAotInN1YihyZXBsLCBzdHJpbmdbLCBjb3VudCA9IDBdKSAtPiBuZXdzdHJpbmcuXG5cblwKKyJzdWIocmVwbCwgc3RyaW5nWywgY291bnQgPSAwXSkgLT4gbmV3c3RyaW5nLlxuXAogICAgIFJldHVybiB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IHJlcGxhY2luZyB0aGUgbGVmdG1vc3Qgbm9uLW92ZXJsYXBwaW5nXG5cCiAgICAgb2NjdXJyZW5jZXMgb2YgcGF0dGVybiBpbiBzdHJpbmcgYnkgdGhlIHJlcGxhY2VtZW50IHJlcGwuIik7CiAKIFB5RG9jX1NUUlZBUihwYXR0ZXJuX3N1Ym5fZG9jLAotInN1Ym4ocmVwbCwgc3RyaW5nWywgY291bnQgPSAwXSkgLT4gKG5ld3N0cmluZywgbnVtYmVyIG9mIHN1YnMpXG5cblwKKyJzdWJuKHJlcGwsIHN0cmluZ1ssIGNvdW50ID0gMF0pIC0+IChuZXdzdHJpbmcsIG51bWJlciBvZiBzdWJzKVxuXAogICAgIFJldHVybiB0aGUgdHVwbGUgKG5ld19zdHJpbmcsIG51bWJlcl9vZl9zdWJzX21hZGUpIGZvdW5kIGJ5IHJlcGxhY2luZ1xuXAogICAgIHRoZSBsZWZ0bW9zdCBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2YgcGF0dGVybiB3aXRoIHRoZVxuXAogICAgIHJlcGxhY2VtZW50IHJlcGwuIik7CkBAIC0yNjAxLDIyICsyNTcwLDIyIEBACiAKIHN0YXRpYyBQeU1ldGhvZERlZiBwYXR0ZXJuX21ldGhvZHNbXSA9IHsKICAgICB7Im1hdGNoIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX21hdGNoLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLQlwYXR0ZXJuX21hdGNoX2RvY30sCisgICAgICAgIHBhdHRlcm5fbWF0Y2hfZG9jfSwKICAgICB7InNlYXJjaCIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9zZWFyY2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotCXBhdHRlcm5fc2VhcmNoX2RvY30sCisgICAgICAgIHBhdHRlcm5fc2VhcmNoX2RvY30sCiAgICAgeyJzdWIiLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fc3ViLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLQlwYXR0ZXJuX3N1Yl9kb2N9LAorICAgICAgICBwYXR0ZXJuX3N1Yl9kb2N9LAogICAgIHsic3VibiIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9zdWJuLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLQlwYXR0ZXJuX3N1Ym5fZG9jfSwKKyAgICAgICAgcGF0dGVybl9zdWJuX2RvY30sCiAgICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9zcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0JcGF0dGVybl9zcGxpdF9kb2N9LAorICAgICAgICBwYXR0ZXJuX3NwbGl0X2RvY30sCiAgICAgeyJmaW5kYWxsIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX2ZpbmRhbGwsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotCXBhdHRlcm5fZmluZGFsbF9kb2N9LAorICAgICAgICBwYXR0ZXJuX2ZpbmRhbGxfZG9jfSwKICNpZiBQWV9WRVJTSU9OX0hFWCA+PSAweDAyMDIwMDAwCi0gICAgeyJmaW5kaXRlciIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9maW5kaXRlciwgTUVUSF9WQVJBUkdTLAotCXBhdHRlcm5fZmluZGl0ZXJfZG9jfSwKKyAgICB7ImZpbmRpdGVyIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX2ZpbmRpdGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKKyAgICAgICAgcGF0dGVybl9maW5kaXRlcl9kb2N9LAogI2VuZGlmCi0gICAgeyJzY2FubmVyIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3NjYW5uZXIsIE1FVEhfVkFSQVJHU30sCisgICAgeyJzY2FubmVyIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3NjYW5uZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKICAgICB7Il9fY29weV9fIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX2NvcHksIE1FVEhfTk9BUkdTfSwKICAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9kZWVwY29weSwgTUVUSF9PfSwKICAgICB7TlVMTCwgTlVMTH0KQEAgLTI2MzUsMzEgKzI2MDQsMzEgQEAKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiXyIgU1JFX01PRFVMRSAiLlNSRV9QYXR0ZXJuIiwKICAgICBzaXplb2YoUGF0dGVybk9iamVjdCksIHNpemVvZihTUkVfQ09ERSksCi0gICAgKGRlc3RydWN0b3IpcGF0dGVybl9kZWFsbG9jLAkvKiB0cF9kZWFsbG9jICovCi0gICAgMCwJCQkJCS8qIHRwX3ByaW50ICovCi0gICAgMCwJCQkJCS8qIHRwX2dldGF0dHIgKi8KLSAgICAwLAkJCQkJLyogdHBfc2V0YXR0ciAqLwotICAgIDAsCQkJCQkvKiB0cF9yZXNlcnZlZCAqLwotICAgIDAsCQkJCQkvKiB0cF9yZXByICovCi0gICAgMCwJCQkJCS8qIHRwX2FzX251bWJlciAqLwotICAgIDAsCQkJCQkvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsCQkJCQkvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwJCQkJCS8qIHRwX2hhc2ggKi8KLSAgICAwLAkJCQkJLyogdHBfY2FsbCAqLwotICAgIDAsCQkJCQkvKiB0cF9zdHIgKi8KLSAgICAwLAkJCQkJLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLAkJCQkJLyogdHBfc2V0YXR0cm8gKi8KLSAgICAwLAkJCQkJLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULAkJCS8qIHRwX2ZsYWdzICovCi0gICAgcGF0dGVybl9kb2MsCQkJLyogdHBfZG9jICovCi0gICAgMCwJCQkJCS8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwJCQkJCS8qIHRwX2NsZWFyICovCi0gICAgMCwJCQkJCS8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgb2Zmc2V0b2YoUGF0dGVybk9iamVjdCwgd2Vha3JlZmxpc3QpLAkvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsCQkJCQkvKiB0cF9pdGVyICovCi0gICAgMCwJCQkJCS8qIHRwX2l0ZXJuZXh0ICovCi0gICAgcGF0dGVybl9tZXRob2RzLAkJCS8qIHRwX21ldGhvZHMgKi8KLSAgICBwYXR0ZXJuX21lbWJlcnMsCQkJLyogdHBfbWVtYmVycyAqLworICAgIChkZXN0cnVjdG9yKXBhdHRlcm5fZGVhbGxvYywgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBwYXR0ZXJuX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICBvZmZzZXRvZihQYXR0ZXJuT2JqZWN0LCB3ZWFrcmVmbGlzdCksICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgcGF0dGVybl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIHBhdHRlcm5fbWVtYmVycywgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KIH07CiAKIHN0YXRpYyBpbnQgX3ZhbGlkYXRlKFBhdHRlcm5PYmplY3QgKnNlbGYpOyAvKiBGb3J3YXJkICovCkBAIC0yNzAwLDEzICsyNjY5LDYgQEAKICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICpvID0gUHlMaXN0X0dFVF9JVEVNKGNvZGUsIGkpOwogICAgICAgICB1bnNpZ25lZCBsb25nIHZhbHVlID0gUHlMb25nX0FzVW5zaWduZWRMb25nKG8pOwotICAgICAgICBpZiAodmFsdWUgPT0gKHVuc2lnbmVkIGxvbmcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZ3VsYXIgZXhwcmVzc2lvbiBjb2RlIHNpemUgbGltaXQgZXhjZWVkZWQiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAgICAgIHNlbGYtPmNvZGVbaV0gPSAoU1JFX0NPREUpIHZhbHVlOwogICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHNlbGYtPmNvZGVbaV0gIT0gdmFsdWUpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLApAQCAtMjcyMCwxMSArMjY4MiwxNCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAocGF0dGVybiA9PSBQeV9Ob25lKQorICAgIGlmIChwYXR0ZXJuID09IFB5X05vbmUpIHsKKyAgICAgICAgc2VsZi0+bG9naWNhbF9jaGFyc2l6ZSA9IC0xOwogICAgICAgICBzZWxmLT5jaGFyc2l6ZSA9IC0xOworICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlfc3NpemVfdCBwX2xlbmd0aDsKLSAgICAgICAgaWYgKCFnZXRzdHJpbmcocGF0dGVybiwgJnBfbGVuZ3RoLCAmc2VsZi0+Y2hhcnNpemUsICZzZWxmLT52aWV3KSkgeworICAgICAgICBpZiAoIWdldHN0cmluZyhwYXR0ZXJuLCAmcF9sZW5ndGgsICZzZWxmLT5sb2dpY2FsX2NoYXJzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAmc2VsZi0+Y2hhcnNpemUsICZzZWxmLT52aWV3KSkgewogICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTI5ODksMTMgKzI5NTQsMTMgQEAKICAgICAgICAgICAgICAgICAgICA8SU5GTz4gPDE9c2tpcD4gPDI9ZmxhZ3M+IDwzPW1pbj4gPDQ9bWF4PjsKICAgICAgICAgICAgICAgICAgICBJZiBTUkVfSU5GT19QUkVGSVggb3IgU1JFX0lORk9fQ0hBUlNFVCBpcyBpbiB0aGUgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgbW9yZSBmb2xsb3dzLiAqLwotICAgICAgICAgICAgICAgIFNSRV9DT0RFIGZsYWdzLCBtaW4sIG1heCwgaTsKKyAgICAgICAgICAgICAgICBTUkVfQ09ERSBmbGFncywgaTsKICAgICAgICAgICAgICAgICBTUkVfQ09ERSAqbmV3Y29kZTsKICAgICAgICAgICAgICAgICBHRVRfU0tJUDsKICAgICAgICAgICAgICAgICBuZXdjb2RlID0gY29kZStza2lwLTE7CiAgICAgICAgICAgICAgICAgR0VUX0FSRzsgZmxhZ3MgPSBhcmc7Ci0gICAgICAgICAgICAgICAgR0VUX0FSRzsgbWluID0gYXJnOwotICAgICAgICAgICAgICAgIEdFVF9BUkc7IG1heCA9IGFyZzsKKyAgICAgICAgICAgICAgICBHRVRfQVJHOworICAgICAgICAgICAgICAgIEdFVF9BUkc7CiAgICAgICAgICAgICAgICAgLyogQ2hlY2sgdGhhdCBvbmx5IHZhbGlkIGZsYWdzIGFyZSBwcmVzZW50ICovCiAgICAgICAgICAgICAgICAgaWYgKChmbGFncyAmIH4oU1JFX0lORk9fUFJFRklYIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTUkVfSU5GT19MSVRFUkFMIHwKQEAgLTMwMTEsOSArMjk3Niw5IEBACiAgICAgICAgICAgICAgICAgICAgIEZBSUw7CiAgICAgICAgICAgICAgICAgLyogVmFsaWRhdGUgdGhlIHByZWZpeCAqLwogICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIFNSRV9JTkZPX1BSRUZJWCkgewotICAgICAgICAgICAgICAgICAgICBTUkVfQ09ERSBwcmVmaXhfbGVuLCBwcmVmaXhfc2tpcDsKKyAgICAgICAgICAgICAgICAgICAgU1JFX0NPREUgcHJlZml4X2xlbjsKICAgICAgICAgICAgICAgICAgICAgR0VUX0FSRzsgcHJlZml4X2xlbiA9IGFyZzsKLSAgICAgICAgICAgICAgICAgICAgR0VUX0FSRzsgcHJlZml4X3NraXAgPSBhcmc7CisgICAgICAgICAgICAgICAgICAgIEdFVF9BUkc7CiAgICAgICAgICAgICAgICAgICAgIC8qIEhlcmUgY29tZXMgdGhlIHByZWZpeCBzdHJpbmcgKi8KICAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUrcHJlZml4X2xlbiA8IGNvZGUgfHwgY29kZStwcmVmaXhfbGVuID4gbmV3Y29kZSkKICAgICAgICAgICAgICAgICAgICAgICAgIEZBSUw7CkBAIC0zMjYwLDggKzMyMjUsOCBAQAogICAgIFB5X3NzaXplX3QgaTsKIAogICAgIGlmIChpbmRleCA9PSBOVUxMKQotCS8qIERlZmF1bHQgdmFsdWUgKi8KLQlyZXR1cm4gMDsKKyAgICAgICAgLyogRGVmYXVsdCB2YWx1ZSAqLworICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChQeUxvbmdfQ2hlY2soaW5kZXgpKQogICAgICAgICByZXR1cm4gUHlMb25nX0FzU3NpemVfdChpbmRleCk7CkBAIC0zNTg5LDM2ICszNTU0LDM2IEBACiBNYXRjaCBvYmplY3RzIGFsd2F5cyBoYXZlIGEgYm9vbGVhbiB2YWx1ZSBvZiBUcnVlLiIpOwogCiBQeURvY19TVFJWQVIobWF0Y2hfZ3JvdXBfZG9jLAotImdyb3VwKFtncm91cDEsIC4uLl0pIC0+IHN0ciBvciB0dXBsZS5cblxuXAorImdyb3VwKFtncm91cDEsIC4uLl0pIC0+IHN0ciBvciB0dXBsZS5cblwKICAgICBSZXR1cm4gc3ViZ3JvdXAocykgb2YgdGhlIG1hdGNoIGJ5IGluZGljZXMgb3IgbmFtZXMuXG5cCiAgICAgRm9yIDAgcmV0dXJucyB0aGUgZW50aXJlIG1hdGNoLiIpOwogCiBQeURvY19TVFJWQVIobWF0Y2hfc3RhcnRfZG9jLAotInN0YXJ0KFtncm91cD0wXSkgLT4gaW50LlxuXG5cCisic3RhcnQoW2dyb3VwPTBdKSAtPiBpbnQuXG5cCiAgICAgUmV0dXJuIGluZGV4IG9mIHRoZSBzdGFydCBvZiB0aGUgc3Vic3RyaW5nIG1hdGNoZWQgYnkgZ3JvdXAuIik7CiAKIFB5RG9jX1NUUlZBUihtYXRjaF9lbmRfZG9jLAotImVuZChbZ3JvdXA9MF0pIC0+IGludC5cblxuXAorImVuZChbZ3JvdXA9MF0pIC0+IGludC5cblwKICAgICBSZXR1cm4gaW5kZXggb2YgdGhlIGVuZCBvZiB0aGUgc3Vic3RyaW5nIG1hdGNoZWQgYnkgZ3JvdXAuIik7CiAKIFB5RG9jX1NUUlZBUihtYXRjaF9zcGFuX2RvYywKLSJzcGFuKFtncm91cF0pIC0+IHR1cGxlLlxuXG5cCisic3BhbihbZ3JvdXBdKSAtPiB0dXBsZS5cblwKICAgICBGb3IgTWF0Y2hPYmplY3QgbSwgcmV0dXJuIHRoZSAyLXR1cGxlIChtLnN0YXJ0KGdyb3VwKSwgbS5lbmQoZ3JvdXApKS4iKTsKIAogUHlEb2NfU1RSVkFSKG1hdGNoX2dyb3Vwc19kb2MsCi0iZ3JvdXBzKFtkZWZhdWx0PU5vbmVdKSAtPiB0dXBsZS5cblxuXAorImdyb3VwcyhbZGVmYXVsdD1Ob25lXSkgLT4gdHVwbGUuXG5cCiAgICAgUmV0dXJuIGEgdHVwbGUgY29udGFpbmluZyBhbGwgdGhlIHN1Ymdyb3VwcyBvZiB0aGUgbWF0Y2gsIGZyb20gMS5cblwKICAgICBUaGUgZGVmYXVsdCBhcmd1bWVudCBpcyB1c2VkIGZvciBncm91cHNcblwKICAgICB0aGF0IGRpZCBub3QgcGFydGljaXBhdGUgaW4gdGhlIG1hdGNoIik7CiAKIFB5RG9jX1NUUlZBUihtYXRjaF9ncm91cGRpY3RfZG9jLAotImdyb3VwZGljdChbZGVmYXVsdD1Ob25lXSkgLT4gZGljdC5cblxuXAorImdyb3VwZGljdChbZGVmYXVsdD1Ob25lXSkgLT4gZGljdC5cblwKICAgICBSZXR1cm4gYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYWxsIHRoZSBuYW1lZCBzdWJncm91cHMgb2YgdGhlIG1hdGNoLFxuXAogICAgIGtleWVkIGJ5IHRoZSBzdWJncm91cCBuYW1lLiBUaGUgZGVmYXVsdCBhcmd1bWVudCBpcyB1c2VkIGZvciBncm91cHNcblwKICAgICB0aGF0IGRpZCBub3QgcGFydGljaXBhdGUgaW4gdGhlIG1hdGNoIik7CiAKIFB5RG9jX1NUUlZBUihtYXRjaF9leHBhbmRfZG9jLAotImV4cGFuZCh0ZW1wbGF0ZSkgLT4gc3RyLlxuXG5cCisiZXhwYW5kKHRlbXBsYXRlKSAtPiBzdHIuXG5cCiAgICAgUmV0dXJuIHRoZSBzdHJpbmcgb2J0YWluZWQgYnkgZG9pbmcgYmFja3NsYXNoIHN1YnN0aXR1dGlvblxuXAogICAgIG9uIHRoZSBzdHJpbmcgdGVtcGxhdGUsIGFzIGRvbmUgYnkgdGhlIHN1YigpIG1ldGhvZC4iKTsKIApAQCAtMzY5NCwzMiArMzY1OSwzMiBAQAogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLDApCiAgICAgIl8iIFNSRV9NT0RVTEUgIi5TUkVfTWF0Y2giLAogICAgIHNpemVvZihNYXRjaE9iamVjdCksIHNpemVvZihQeV9zc2l6ZV90KSwKLSAgICAoZGVzdHJ1Y3RvciltYXRjaF9kZWFsbG9jLAkvKiB0cF9kZWFsbG9jICovCi0gICAgMCwJCQkJLyogdHBfcHJpbnQgKi8KLSAgICAwLAkJCQkvKiB0cF9nZXRhdHRyICovCi0gICAgMCwJCQkJLyogdHBfc2V0YXR0ciAqLwotICAgIDAsCQkJCS8qIHRwX3Jlc2VydmVkICovCi0gICAgMCwJCQkJLyogdHBfcmVwciAqLwotICAgIDAsCQkJCS8qIHRwX2FzX251bWJlciAqLwotICAgIDAsCQkJCS8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgMCwJCQkJLyogdHBfYXNfbWFwcGluZyAqLwotICAgIDAsCQkJCS8qIHRwX2hhc2ggKi8KLSAgICAwLAkJCQkvKiB0cF9jYWxsICovCi0gICAgMCwJCQkJLyogdHBfc3RyICovCi0gICAgMCwJCQkJLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLAkJCQkvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsCQkJCS8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwJCS8qIHRwX2ZsYWdzICovCi0gICAgbWF0Y2hfZG9jLAkJCS8qIHRwX2RvYyAqLwotICAgIDAsCQkJCS8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwJCQkJLyogdHBfY2xlYXIgKi8KLSAgICAwLAkJCQkvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsCQkJCS8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwJCQkJLyogdHBfaXRlciAqLwotICAgIDAsCQkJCS8qIHRwX2l0ZXJuZXh0ICovCi0gICAgbWF0Y2hfbWV0aG9kcywJCS8qIHRwX21ldGhvZHMgKi8KLSAgICBtYXRjaF9tZW1iZXJzLAkJLyogdHBfbWVtYmVycyAqLwotICAgIG1hdGNoX2dldHNldCwgIAkgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIChkZXN0cnVjdG9yKW1hdGNoX2RlYWxsb2MsICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgbWF0Y2hfZG9jLCAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgbWF0Y2hfbWV0aG9kcywgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBtYXRjaF9tZW1iZXJzLCAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIG1hdGNoX2dldHNldCwgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KIH07CiAKIHN0YXRpYyBQeU9iamVjdCoKQEAgLTM4MDgsMTIgKzM3NzMsMTAgQEAKIAogICAgIHN0YXRlLT5wdHIgPSBzdGF0ZS0+c3RhcnQ7CiAKLSAgICBpZiAoc3RhdGUtPmNoYXJzaXplID09IDEpIHsKKyAgICBpZiAoc3RhdGUtPmxvZ2ljYWxfY2hhcnNpemUgPT0gMSkgewogICAgICAgICBzdGF0dXMgPSBzcmVfbWF0Y2goc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmLT5wYXR0ZXJuKSk7CiAgICAgfSBlbHNlIHsKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKICAgICAgICAgc3RhdHVzID0gc3JlX3VtYXRjaChzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYtPnBhdHRlcm4pKTsKLSNlbmRpZgogICAgIH0KICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zODQxLDEyICszODA0LDEwIEBACiAKICAgICBzdGF0ZS0+cHRyID0gc3RhdGUtPnN0YXJ0OwogCi0gICAgaWYgKHN0YXRlLT5jaGFyc2l6ZSA9PSAxKSB7CisgICAgaWYgKHN0YXRlLT5sb2dpY2FsX2NoYXJzaXplID09IDEpIHsKICAgICAgICAgc3RhdHVzID0gc3JlX3NlYXJjaChzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYtPnBhdHRlcm4pKTsKICAgICB9IGVsc2UgewotI2lmIGRlZmluZWQoSEFWRV9VTklDT0RFKQogICAgICAgICBzdGF0dXMgPSBzcmVfdXNlYXJjaChzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYtPnBhdHRlcm4pKTsKLSNlbmRpZgogICAgIH0KICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zODcwLDcgKzM4MzEsNyBAQAogCiAjZGVmaW5lIFNDQU5fT0ZGKHgpIG9mZnNldG9mKFNjYW5uZXJPYmplY3QsIHgpCiBzdGF0aWMgUHlNZW1iZXJEZWYgc2Nhbm5lcl9tZW1iZXJzW10gPSB7Ci0gICAgeyJwYXR0ZXJuIiwJVF9PQkpFQ1QsCVNDQU5fT0ZGKHBhdHRlcm4pLAlSRUFET05MWX0sCisgICAgeyJwYXR0ZXJuIiwgVF9PQkpFQ1QsIFNDQU5fT0ZGKHBhdHRlcm4pLCBSRUFET05MWX0sCiAgICAge05VTEx9ICAvKiBTZW50aW5lbCAqLwogfTsKIApAQCAtMzg3OSwzNSArMzg0MCwzNSBAQAogICAgICJfIiBTUkVfTU9EVUxFICIuU1JFX1NjYW5uZXIiLAogICAgIHNpemVvZihTY2FubmVyT2JqZWN0KSwgMCwKICAgICAoZGVzdHJ1Y3RvcilzY2FubmVyX2RlYWxsb2MsLyogdHBfZGVhbGxvYyAqLwotICAgIDAsCQkJCS8qIHRwX3ByaW50ICovCi0gICAgMCwJCQkJLyogdHBfZ2V0YXR0ciAqLwotICAgIDAsCQkJCS8qIHRwX3NldGF0dHIgKi8KLSAgICAwLAkJCQkvKiB0cF9yZXNlcnZlZCAqLwotICAgIDAsCQkJCS8qIHRwX3JlcHIgKi8KLSAgICAwLAkJCQkvKiB0cF9hc19udW1iZXIgKi8KLSAgICAwLAkJCQkvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsCQkJCS8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLAkJCQkvKiB0cF9oYXNoICovCi0gICAgMCwJCQkJLyogdHBfY2FsbCAqLwotICAgIDAsCQkJCS8qIHRwX3N0ciAqLwotICAgIDAsCQkJCS8qIHRwX2dldGF0dHJvICovCi0gICAgMCwJCQkJLyogdHBfc2V0YXR0cm8gKi8KLSAgICAwLAkJCQkvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsCQkvKiB0cF9mbGFncyAqLwotICAgIDAsCQkJCS8qIHRwX2RvYyAqLwotICAgIDAsCQkJCS8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwJCQkJLyogdHBfY2xlYXIgKi8KLSAgICAwLAkJCQkvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsCQkJCS8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwJCQkJLyogdHBfaXRlciAqLwotICAgIDAsCQkJCS8qIHRwX2l0ZXJuZXh0ICovCi0gICAgc2Nhbm5lcl9tZXRob2RzLAkJLyogdHBfbWV0aG9kcyAqLwotICAgIHNjYW5uZXJfbWVtYmVycywJCS8qIHRwX21lbWJlcnMgKi8KLSAgICAwLAkJCQkvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBzY2FubmVyX21ldGhvZHMsICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIHNjYW5uZXJfbWVtYmVycywgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogfTsKIAogc3RhdGljIFB5T2JqZWN0KgotcGF0dGVybl9zY2FubmVyKFBhdHRlcm5PYmplY3QqIHBhdHRlcm4sIFB5T2JqZWN0KiBhcmdzKQorcGF0dGVybl9zY2FubmVyKFBhdHRlcm5PYmplY3QqIHBhdHRlcm4sIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCiB7CiAgICAgLyogY3JlYXRlIHNlYXJjaCBzdGF0ZSBvYmplY3QgKi8KIApAQCAtMzkxNiw3ICszODc3LDkgQEAKICAgICBQeU9iamVjdCogc3RyaW5nOwogICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfG5uOnNjYW5uZXIiLCAmc3RyaW5nLCAmc3RhcnQsICZlbmQpKQorICAgIHN0YXRpYyBjaGFyKiBrd2xpc3RbXSA9IHsgInNvdXJjZSIsICJwb3MiLCAiZW5kcG9zIiwgTlVMTCB9OworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiT3xubjpzY2FubmVyIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJpbmcsICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogY3JlYXRlIHNjYW5uZXIgb2JqZWN0ICovCkBAIC0zOTQ1LDE1ICszOTA4LDE1IEBACiB9OwogCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIHNyZW1vZHVsZSA9IHsKLQlQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0JIl8iIFNSRV9NT0RVTEUsCi0JTlVMTCwKLQktMSwKLQlfZnVuY3Rpb25zLAotCU5VTEwsCi0JTlVMTCwKLQlOVUxMLAotCU5VTEwKKyAgICAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICAgICAiXyIgU1JFX01PRFVMRSwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgLTEsCisgICAgICAgIF9mdW5jdGlvbnMsCisgICAgICAgIE5VTEwsCisgICAgICAgIE5VTEwsCisgICAgICAgIE5VTEwsCisgICAgICAgIE5VTEwKIH07CiAKIFB5TU9ESU5JVF9GVU5DIFB5SW5pdF9fc3JlKHZvaWQpCkBAIC0zOTY5LDcgKzM5MzIsNyBAQAogCiAgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmc3JlbW9kdWxlKTsKICAgICBpZiAobSA9PSBOVUxMKQotICAgIAlyZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7CiAKICAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNSRV9NQUdJQyk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zc2wuYyBiL01vZHVsZXMvX3NzbC5jCmluZGV4IGU5ZGU4Y2EuLmFiYjQ4YjkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NzbC5jCisrKyBiL01vZHVsZXMvX3NzbC5jCkBAIC0xOCwxNiArMTgsMjEgQEAKIAogI2lmZGVmIFdJVEhfVEhSRUFECiAjaW5jbHVkZSAicHl0aHJlYWQuaCIKKyNkZWZpbmUgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEU19TKHNhdmUpIFwKKyAgICBkbyB7IGlmIChfc3NsX2xvY2tzX2NvdW50PjApIHsgKHNhdmUpID0gUHlFdmFsX1NhdmVUaHJlYWQoKTsgfSB9IHdoaWxlICgwKQorI2RlZmluZSBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEU19TKHNhdmUpIFwKKyAgICBkbyB7IGlmIChfc3NsX2xvY2tzX2NvdW50PjApIHsgUHlFdmFsX1Jlc3RvcmVUaHJlYWQoc2F2ZSk7IH0gfSB3aGlsZSAoMCkKICNkZWZpbmUgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUyB7IFwKICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGUgKl9zYXZlID0gTlVMTDsgIFwKLSAgICAgICAgICAgIGlmIChfc3NsX2xvY2tzX2NvdW50PjApIHtfc2F2ZSA9IFB5RXZhbF9TYXZlVGhyZWFkKCk7fQotI2RlZmluZSBQeVNTTF9CTE9DS19USFJFQURTICAgICBpZiAoX3NzbF9sb2Nrc19jb3VudD4wKXtQeUV2YWxfUmVzdG9yZVRocmVhZChfc2F2ZSl9OwotI2RlZmluZSBQeVNTTF9VTkJMT0NLX1RIUkVBRFMgICBpZiAoX3NzbF9sb2Nrc19jb3VudD4wKXtfc2F2ZSA9IFB5RXZhbF9TYXZlVGhyZWFkKCl9OwotI2RlZmluZSBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUyBpZiAoX3NzbF9sb2Nrc19jb3VudD4wKXtQeUV2YWxfUmVzdG9yZVRocmVhZChfc2F2ZSk7fSBcCi0gICAgICAgICB9CisgICAgICAgICAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTX1MoX3NhdmUpOworI2RlZmluZSBQeVNTTF9CTE9DS19USFJFQURTICAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEU19TKF9zYXZlKTsKKyNkZWZpbmUgUHlTU0xfVU5CTE9DS19USFJFQURTICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEU19TKF9zYXZlKTsKKyNkZWZpbmUgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFNfUyhfc2F2ZSk7IH0KIAogI2Vsc2UgICAvKiBubyBXSVRIX1RIUkVBRCAqLwogCisjZGVmaW5lIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFNfUyhzYXZlKQorI2RlZmluZSBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEU19TKHNhdmUpCiAjZGVmaW5lIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKICNkZWZpbmUgUHlTU0xfQkxPQ0tfVEhSRUFEUwogI2RlZmluZSBQeVNTTF9VTkJMT0NLX1RIUkVBRFMKQEAgLTcxLDYgKzc2LDE2IEBACiAgICAgUFlfU1NMX1ZFUlNJT05fVExTMQogfTsKIAorc3RydWN0IHB5X3NzbF9lcnJvcl9jb2RlIHsKKyAgICBjb25zdCBjaGFyICptbmVtb25pYzsKKyAgICBpbnQgbGlicmFyeSwgcmVhc29uOworfTsKKworc3RydWN0IHB5X3NzbF9saWJyYXJ5X2NvZGUgeworICAgIGNvbnN0IGNoYXIgKmxpYnJhcnk7CisgICAgaW50IGNvZGU7Cit9OworCiAvKiBJbmNsdWRlIHN5bWJvbHMgZnJvbSBfc29ja2V0IG1vZHVsZSAqLwogI2luY2x1ZGUgInNvY2tldG1vZHVsZS5oIgogCkBAIC05Miw4ICsxMDcsMjEgQEAKICNpbmNsdWRlICJvcGVuc3NsL2Vyci5oIgogI2luY2x1ZGUgIm9wZW5zc2wvcmFuZC5oIgogCisvKiBJbmNsdWRlIGdlbmVyYXRlZCBkYXRhIChlcnJvciBjb2RlcykgKi8KKyNpbmNsdWRlICJfc3NsX2RhdGEuaCIKKwogLyogU1NMIGVycm9yIG9iamVjdCAqLwogc3RhdGljIFB5T2JqZWN0ICpQeVNTTEVycm9yT2JqZWN0Oworc3RhdGljIFB5T2JqZWN0ICpQeVNTTFplcm9SZXR1cm5FcnJvck9iamVjdDsKK3N0YXRpYyBQeU9iamVjdCAqUHlTU0xXYW50UmVhZEVycm9yT2JqZWN0Oworc3RhdGljIFB5T2JqZWN0ICpQeVNTTFdhbnRXcml0ZUVycm9yT2JqZWN0Oworc3RhdGljIFB5T2JqZWN0ICpQeVNTTFN5c2NhbGxFcnJvck9iamVjdDsKK3N0YXRpYyBQeU9iamVjdCAqUHlTU0xFT0ZFcnJvck9iamVjdDsKKworLyogRXJyb3IgbWFwcGluZ3MgKi8KK3N0YXRpYyBQeU9iamVjdCAqZXJyX2NvZGVzX3RvX25hbWVzOworc3RhdGljIFB5T2JqZWN0ICplcnJfbmFtZXNfdG9fY29kZXM7CitzdGF0aWMgUHlPYmplY3QgKmxpYl9jb2Rlc190b19uYW1lczsKIAogI2lmZGVmIFdJVEhfVEhSRUFECiAKQEAgLTEyNCw5ICsxNTIsMzUgQEAKICMgdW5kZWYgSEFWRV9TU0xfQ1RYX0NMRUFSX09QVElPTlMKICNlbmRpZgogCisvKiBJbiBjYXNlIG9mICd0bHMtdW5pcXVlJyBpdCB3aWxsIGJlIDEyIGJ5dGVzIGZvciBUTFMsIDM2IGJ5dGVzIGZvcgorICogb2xkZXIgU1NMLCBidXQgbGV0J3MgYmUgc2FmZSAqLworI2RlZmluZSBQeVNTTF9DQl9NQVhMRU4gMTI4CisKKy8qIFNTTF9nZXRfZmluaXNoZWQgZ290IGFkZGVkIHRvIE9wZW5TU0wgaW4gMC45LjUgKi8KKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MDA5MDUwMGZMCisjIGRlZmluZSBIQVZFX09QRU5TU0xfRklOSVNIRUQgMQorI2Vsc2UKKyMgZGVmaW5lIEhBVkVfT1BFTlNTTF9GSU5JU0hFRCAwCisjZW5kaWYKKworLyogRUNESCBzdXBwb3J0IGdvdCBhZGRlZCB0byBPcGVuU1NMIGluIDAuOS44ICovCisjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA8IDB4MDA5MDgwMGZMICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fRUNESCkKKyMgZGVmaW5lIE9QRU5TU0xfTk9fRUNESAorI2VuZGlmCisKKy8qIGNvbXByZXNzaW9uIHN1cHBvcnQgZ290IGFkZGVkIHRvIE9wZW5TU0wgaW4gMC45LjggKi8KKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgwMDkwODAwZkwgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19DT01QKQorIyBkZWZpbmUgT1BFTlNTTF9OT19DT01QCisjZW5kaWYKKworCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFNTTF9DVFggKmN0eDsKKyNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECisgICAgY2hhciAqbnBuX3Byb3RvY29sczsKKyAgICBpbnQgbnBuX3Byb3RvY29sc19sZW47CisjZW5kaWYKIH0gUHlTU0xDb250ZXh0OwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC0xMzUsNiArMTg5LDcgQEAKICAgICBTU0wgKnNzbDsKICAgICBYNTA5ICpwZWVyX2NlcnQ7CiAgICAgaW50IHNodXRkb3duX3NlZW5femVybzsKKyAgICBlbnVtIHB5X3NzbF9zZXJ2ZXJfb3JfY2xpZW50IHNvY2tldF90eXBlOwogfSBQeVNTTFNvY2tldDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBQeVNTTENvbnRleHRfVHlwZTsKQEAgLTE2NSwzNiArMjIwLDE1MiBAQAogI2RlZmluZSBFUlJTVFIxKHgseSx6KSAoeCAiOiIgeSAiOiAiIHopCiAjZGVmaW5lIEVSUlNUUih4KSBFUlJTVFIxKCJfc3NsLmMiLCBTVFJJTkdJRlkyKF9fTElORV9fKSwgeCkKIAotLyogWFhYIEl0IG1pZ2h0IGJlIGhlbHBmdWwgdG8gYXVnbWVudCB0aGUgZXJyb3IgbWVzc2FnZSBnZW5lcmF0ZWQKLSAgIGJlbG93IHdpdGggdGhlIG5hbWUgb2YgdGhlIFNTTCBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlZCB0aGUgZXJyb3IuCi0gICBJIGV4cGVjdCBpdCdzIG9idmlvdXMgbW9zdCBvZiB0aGUgdGltZS4KLSovCisKKy8qCisgKiBTU0wgZXJyb3JzLgorICovCisKK1B5RG9jX1NUUlZBUihTU0xFcnJvcl9kb2MsCisiQW4gZXJyb3Igb2NjdXJyZWQgaW4gdGhlIFNTTCBpbXBsZW1lbnRhdGlvbi4iKTsKKworUHlEb2NfU1RSVkFSKFNTTFplcm9SZXR1cm5FcnJvcl9kb2MsCisiU1NML1RMUyBzZXNzaW9uIGNsb3NlZCBjbGVhbmx5LiIpOworCitQeURvY19TVFJWQVIoU1NMV2FudFJlYWRFcnJvcl9kb2MsCisiTm9uLWJsb2NraW5nIFNTTCBzb2NrZXQgbmVlZHMgdG8gcmVhZCBtb3JlIGRhdGFcbiIKKyJiZWZvcmUgdGhlIHJlcXVlc3RlZCBvcGVyYXRpb24gY2FuIGJlIGNvbXBsZXRlZC4iKTsKKworUHlEb2NfU1RSVkFSKFNTTFdhbnRXcml0ZUVycm9yX2RvYywKKyJOb24tYmxvY2tpbmcgU1NMIHNvY2tldCBuZWVkcyB0byB3cml0ZSBtb3JlIGRhdGFcbiIKKyJiZWZvcmUgdGhlIHJlcXVlc3RlZCBvcGVyYXRpb24gY2FuIGJlIGNvbXBsZXRlZC4iKTsKKworUHlEb2NfU1RSVkFSKFNTTFN5c2NhbGxFcnJvcl9kb2MsCisiU3lzdGVtIGVycm9yIHdoZW4gYXR0ZW1wdGluZyBTU0wgb3BlcmF0aW9uLiIpOworCitQeURvY19TVFJWQVIoU1NMRU9GRXJyb3JfZG9jLAorIlNTTC9UTFMgY29ubmVjdGlvbiB0ZXJtaW5hdGVkIGFicnVwdGx5LiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorU1NMRXJyb3Jfc3RyKFB5T1NFcnJvck9iamVjdCAqc2VsZikKK3sKKyAgICBpZiAoc2VsZi0+c3RyZXJyb3IgIT0gTlVMTCAmJiBQeVVuaWNvZGVfQ2hlY2soc2VsZi0+c3RyZXJyb3IpKSB7CisgICAgICAgIFB5X0lOQ1JFRihzZWxmLT5zdHJlcnJvcik7CisgICAgICAgIHJldHVybiBzZWxmLT5zdHJlcnJvcjsKKyAgICB9CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlPYmplY3RfU3RyKHNlbGYtPmFyZ3MpOworfQorCitzdGF0aWMgUHlUeXBlX1Nsb3Qgc3NsZXJyb3JfdHlwZV9zbG90c1tdID0geworICAgIHtQeV90cF9iYXNlLCBOVUxMfSwgIC8qIEZpbGxlZCBvdXQgaW4gbW9kdWxlIGluaXQgYXMgaXQncyBub3QgYSBjb25zdGFudCAqLworICAgIHtQeV90cF9kb2MsIFNTTEVycm9yX2RvY30sCisgICAge1B5X3RwX3N0ciwgU1NMRXJyb3Jfc3RyfSwKKyAgICB7MCwgMH0sCit9OworCitzdGF0aWMgUHlUeXBlX1NwZWMgc3NsZXJyb3JfdHlwZV9zcGVjID0geworICAgICJzc2wuU1NMRXJyb3IiLAorICAgIHNpemVvZihQeU9TRXJyb3JPYmplY3QpLAorICAgIDAsCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSwKKyAgICBzc2xlcnJvcl90eXBlX3Nsb3RzCit9OworCitzdGF0aWMgdm9pZAorZmlsbF9hbmRfc2V0X3NzbGVycm9yKFB5T2JqZWN0ICp0eXBlLCBpbnQgc3NsX2Vycm5vLCBjb25zdCBjaGFyICplcnJzdHIsCisgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVubywgdW5zaWduZWQgbG9uZyBlcnJjb2RlKQoreworICAgIFB5T2JqZWN0ICplcnJfdmFsdWUgPSBOVUxMLCAqcmVhc29uX29iaiA9IE5VTEwsICpsaWJfb2JqID0gTlVMTDsKKyAgICBQeU9iamVjdCAqaW5pdF92YWx1ZSwgKm1zZywgKmtleTsKKyAgICBfUHlfSURFTlRJRklFUihyZWFzb24pOworICAgIF9QeV9JREVOVElGSUVSKGxpYnJhcnkpOworCisgICAgaWYgKGVycmNvZGUgIT0gMCkgeworICAgICAgICBpbnQgbGliLCByZWFzb247CisKKyAgICAgICAgbGliID0gRVJSX0dFVF9MSUIoZXJyY29kZSk7CisgICAgICAgIHJlYXNvbiA9IEVSUl9HRVRfUkVBU09OKGVycmNvZGUpOworICAgICAgICBrZXkgPSBQeV9CdWlsZFZhbHVlKCJpaSIsIGxpYiwgcmVhc29uKTsKKyAgICAgICAgaWYgKGtleSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICByZWFzb25fb2JqID0gUHlEaWN0X0dldEl0ZW0oZXJyX2NvZGVzX3RvX25hbWVzLCBrZXkpOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgaWYgKHJlYXNvbl9vYmogPT0gTlVMTCkgeworICAgICAgICAgICAgLyogWFhYIGlmIHJlYXNvbiA8IDEwMCwgaXQgbWlnaHQgcmVmbGVjdCBhIGxpYnJhcnkgbnVtYmVyICghISkgKi8KKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAga2V5ID0gUHlMb25nX0Zyb21Mb25nKGxpYik7CisgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgbGliX29iaiA9IFB5RGljdF9HZXRJdGVtKGxpYl9jb2Rlc190b19uYW1lcywga2V5KTsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIGlmIChsaWJfb2JqID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVycnN0ciA9PSBOVUxMKQorICAgICAgICAgICAgZXJyc3RyID0gRVJSX3JlYXNvbl9lcnJvcl9zdHJpbmcoZXJyY29kZSk7CisgICAgfQorICAgIGlmIChlcnJzdHIgPT0gTlVMTCkKKyAgICAgICAgZXJyc3RyID0gInVua25vd24gZXJyb3IiOworCisgICAgaWYgKHJlYXNvbl9vYmogJiYgbGliX29iaikKKyAgICAgICAgbXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIlslUzogJVNdICVzIChfc3NsLmM6JWQpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGliX29iaiwgcmVhc29uX29iaiwgZXJyc3RyLCBsaW5lbm8pOworICAgIGVsc2UgaWYgKGxpYl9vYmopCisgICAgICAgIG1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJbJVNdICVzIChfc3NsLmM6JWQpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGliX29iaiwgZXJyc3RyLCBsaW5lbm8pOworICAgIGVsc2UKKyAgICAgICAgbXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzIChfc3NsLmM6JWQpIiwgZXJyc3RyLCBsaW5lbm8pOworCisgICAgaWYgKG1zZyA9PSBOVUxMKQorICAgICAgICBnb3RvIGZhaWw7CisgICAgaW5pdF92YWx1ZSA9IFB5X0J1aWxkVmFsdWUoImlOIiwgc3NsX2Vycm5vLCBtc2cpOworICAgIGVycl92YWx1ZSA9IFB5T2JqZWN0X0NhbGxPYmplY3QodHlwZSwgaW5pdF92YWx1ZSk7CisgICAgUHlfREVDUkVGKGluaXRfdmFsdWUpOworICAgIGlmIChlcnJfdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsOworICAgIGlmIChyZWFzb25fb2JqID09IE5VTEwpCisgICAgICAgIHJlYXNvbl9vYmogPSBQeV9Ob25lOworICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKGVycl92YWx1ZSwgJlB5SWRfcmVhc29uLCByZWFzb25fb2JqKSkKKyAgICAgICAgZ290byBmYWlsOworICAgIGlmIChsaWJfb2JqID09IE5VTEwpCisgICAgICAgIGxpYl9vYmogPSBQeV9Ob25lOworICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKGVycl92YWx1ZSwgJlB5SWRfbGlicmFyeSwgbGliX29iaikpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBQeUVycl9TZXRPYmplY3QodHlwZSwgZXJyX3ZhbHVlKTsKK2ZhaWw6CisgICAgUHlfWERFQ1JFRihlcnJfdmFsdWUpOworfQogCiBzdGF0aWMgUHlPYmplY3QgKgogUHlTU0xfU2V0RXJyb3IoUHlTU0xTb2NrZXQgKm9iaiwgaW50IHJldCwgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0gICAgY2hhciBidWZbMjA0OF07Ci0gICAgY2hhciAqZXJyc3RyOworICAgIFB5T2JqZWN0ICp0eXBlID0gUHlTU0xFcnJvck9iamVjdDsKKyAgICBjaGFyICplcnJzdHIgPSBOVUxMOwogICAgIGludCBlcnI7CiAgICAgZW51bSBweV9zc2xfZXJyb3IgcCA9IFBZX1NTTF9FUlJPUl9OT05FOworICAgIHVuc2lnbmVkIGxvbmcgZSA9IDA7CiAKICAgICBhc3NlcnQocmV0IDw9IDApOworICAgIGUgPSBFUlJfcGVla19sYXN0X2Vycm9yKCk7CiAKICAgICBpZiAob2JqLT5zc2wgIT0gTlVMTCkgewogICAgICAgICBlcnIgPSBTU0xfZ2V0X2Vycm9yKG9iai0+c3NsLCByZXQpOwogCiAgICAgICAgIHN3aXRjaCAoZXJyKSB7CiAgICAgICAgIGNhc2UgU1NMX0VSUk9SX1pFUk9fUkVUVVJOOgotICAgICAgICAgICAgZXJyc3RyID0gIlRMUy9TU0wgY29ubmVjdGlvbiBoYXMgYmVlbiBjbG9zZWQiOworICAgICAgICAgICAgZXJyc3RyID0gIlRMUy9TU0wgY29ubmVjdGlvbiBoYXMgYmVlbiBjbG9zZWQgKEVPRikiOworICAgICAgICAgICAgdHlwZSA9IFB5U1NMWmVyb1JldHVybkVycm9yT2JqZWN0OwogICAgICAgICAgICAgcCA9IFBZX1NTTF9FUlJPUl9aRVJPX1JFVFVSTjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNTTF9FUlJPUl9XQU5UX1JFQUQ6CiAgICAgICAgICAgICBlcnJzdHIgPSAiVGhlIG9wZXJhdGlvbiBkaWQgbm90IGNvbXBsZXRlIChyZWFkKSI7CisgICAgICAgICAgICB0eXBlID0gUHlTU0xXYW50UmVhZEVycm9yT2JqZWN0OwogICAgICAgICAgICAgcCA9IFBZX1NTTF9FUlJPUl9XQU5UX1JFQUQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTU0xfRVJST1JfV0FOVF9XUklURToKICAgICAgICAgICAgIHAgPSBQWV9TU0xfRVJST1JfV0FOVF9XUklURTsKKyAgICAgICAgICAgIHR5cGUgPSBQeVNTTFdhbnRXcml0ZUVycm9yT2JqZWN0OwogICAgICAgICAgICAgZXJyc3RyID0gIlRoZSBvcGVyYXRpb24gZGlkIG5vdCBjb21wbGV0ZSAod3JpdGUpIjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNTTF9FUlJPUl9XQU5UX1g1MDlfTE9PS1VQOgpAQCAtMjA3LDgwICszNzgsNjQgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNTTF9FUlJPUl9TWVNDQUxMOgogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIGUgPSBFUlJfZ2V0X2Vycm9yKCk7CiAgICAgICAgICAgICBpZiAoZSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgUHlTb2NrZXRTb2NrT2JqZWN0ICpzCiAgICAgICAgICAgICAgICAgICA9IChQeVNvY2tldFNvY2tPYmplY3QgKikgUHlXZWFrcmVmX0dldE9iamVjdChvYmotPlNvY2tldCk7CiAgICAgICAgICAgICAgICAgaWYgKHJldCA9PSAwIHx8ICgoKFB5T2JqZWN0ICopcykgPT0gUHlfTm9uZSkpIHsKICAgICAgICAgICAgICAgICAgICAgcCA9IFBZX1NTTF9FUlJPUl9FT0Y7CisgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBQeVNTTEVPRkVycm9yT2JqZWN0OwogICAgICAgICAgICAgICAgICAgICBlcnJzdHIgPSAiRU9GIG9jY3VycmVkIGluIHZpb2xhdGlvbiBvZiBwcm90b2NvbCI7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXQgPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgLyogdW5kZXJseWluZyBCSU8gcmVwb3J0ZWQgYW4gSS9PIGVycm9yICovCiAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihzKTsKICAgICAgICAgICAgICAgICAgICAgRVJSX2NsZWFyX2Vycm9yKCk7Ci0gICAgICAgICAgICAgICAgICAgIHYgPSBzLT5lcnJvcmhhbmRsZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgcy0+ZXJyb3JoYW5kbGVyKCk7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHY7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8qIHBvc3NpYmxlPyAqLwogICAgICAgICAgICAgICAgICAgICBwID0gUFlfU1NMX0VSUk9SX1NZU0NBTEw7CisgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBQeVNTTFN5c2NhbGxFcnJvck9iamVjdDsKICAgICAgICAgICAgICAgICAgICAgZXJyc3RyID0gIlNvbWUgSS9PIGVycm9yIG9jY3VycmVkIjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHAgPSBQWV9TU0xfRVJST1JfU1lTQ0FMTDsKLSAgICAgICAgICAgICAgICAvKiBYWFggUHJvdGVjdGVkIGJ5IGdsb2JhbCBpbnRlcnByZXRlciBsb2NrICovCi0gICAgICAgICAgICAgICAgZXJyc3RyID0gRVJSX2Vycm9yX3N0cmluZyhlLCBOVUxMKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgU1NMX0VSUk9SX1NTTDoKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBlID0gRVJSX2dldF9lcnJvcigpOwogICAgICAgICAgICAgcCA9IFBZX1NTTF9FUlJPUl9TU0w7Ci0gICAgICAgICAgICBpZiAoZSAhPSAwKQotICAgICAgICAgICAgICAgIC8qIFhYWCBQcm90ZWN0ZWQgYnkgZ2xvYmFsIGludGVycHJldGVyIGxvY2sgKi8KLSAgICAgICAgICAgICAgICBlcnJzdHIgPSBFUlJfZXJyb3Jfc3RyaW5nKGUsIE5VTEwpOwotICAgICAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAvKiBwb3NzaWJsZT8gKi8KKyAgICAgICAgICAgIGlmIChlID09IDApCisgICAgICAgICAgICAgICAgLyogcG9zc2libGU/ICovCiAgICAgICAgICAgICAgICAgZXJyc3RyID0gIkEgZmFpbHVyZSBpbiB0aGUgU1NMIGxpYnJhcnkgb2NjdXJyZWQiOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHAgPSBQWV9TU0xfRVJST1JfSU5WQUxJRF9FUlJPUl9DT0RFOwogICAgICAgICAgICAgZXJyc3RyID0gIkludmFsaWQgZXJyb3IgY29kZSI7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBlcnJzdHIgPSBFUlJfZXJyb3Jfc3RyaW5nKEVSUl9wZWVrX2xhc3RfZXJyb3IoKSwgTlVMTCk7CiAgICAgfQotICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIl9zc2wuYzolZDogJXMiLCBsaW5lbm8sIGVycnN0cik7CisgICAgZmlsbF9hbmRfc2V0X3NzbGVycm9yKHR5cGUsIHAsIGVycnN0ciwgbGluZW5vLCBlKTsKICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKLSAgICB2ID0gUHlfQnVpbGRWYWx1ZSgiKGlzKSIsIHAsIGJ1Zik7Ci0gICAgaWYgKHYgIT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlTU0xFcnJvck9iamVjdCwgdik7Ci0gICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICB9CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc2V0U1NMRXJyb3IgKGNoYXIgKmVycnN0ciwgaW50IGVycmNvZGUsIGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZW5vKSB7CiAKLSAgICBjaGFyIGJ1ZlsyMDQ4XTsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIGlmIChlcnJzdHIgPT0gTlVMTCkgeworICAgIGlmIChlcnJzdHIgPT0gTlVMTCkKICAgICAgICAgZXJyY29kZSA9IEVSUl9wZWVrX2xhc3RfZXJyb3IoKTsKLSAgICAgICAgZXJyc3RyID0gRVJSX2Vycm9yX3N0cmluZyhlcnJjb2RlLCBOVUxMKTsKLSAgICB9Ci0gICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiX3NzbC5jOiVkOiAlcyIsIGxpbmVubywgZXJyc3RyKTsKKyAgICBlbHNlCisgICAgICAgIGVycmNvZGUgPSAwOworICAgIGZpbGxfYW5kX3NldF9zc2xlcnJvcihQeVNTTEVycm9yT2JqZWN0LCBlcnJjb2RlLCBlcnJzdHIsIGxpbmVubywgZXJyY29kZSk7CiAgICAgRVJSX2NsZWFyX2Vycm9yKCk7Ci0gICAgdiA9IFB5X0J1aWxkVmFsdWUoIihpcykiLCBlcnJjb2RlLCBidWYpOwotICAgIGlmICh2ICE9IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5U1NMRXJyb3JPYmplY3QsIHYpOwotICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgfQogICAgIHJldHVybiBOVUxMOwogfQogCisvKgorICogU1NMIG9iamVjdHMKKyAqLworCiBzdGF0aWMgUHlTU0xTb2NrZXQgKgogbmV3UHlTU0xTb2NrZXQoU1NMX0NUWCAqY3R4LCBQeVNvY2tldFNvY2tPYmplY3QgKnNvY2ssCiAgICAgICAgICAgICAgICBlbnVtIHB5X3NzbF9zZXJ2ZXJfb3JfY2xpZW50IHNvY2tldF90eXBlLApAQCAtMzI4LDYgKzQ4Myw3IEBACiAgICAgICAgIFNTTF9zZXRfYWNjZXB0X3N0YXRlKHNlbGYtPnNzbCk7CiAgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKIAorICAgIHNlbGYtPnNvY2tldF90eXBlID0gc29ja2V0X3R5cGU7CiAgICAgc2VsZi0+U29ja2V0ID0gUHlXZWFrcmVmX05ld1JlZigoUHlPYmplY3QgKikgc29jaywgTlVMTCk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0zNTYsNyArNTEyLDYgQEAKIAogICAgIC8qIEFjdHVhbGx5IG5lZ290aWF0ZSBTU0wgY29ubmVjdGlvbiAqLwogICAgIC8qIFhYWCBJZiBTU0xfZG9faGFuZHNoYWtlKCkgcmV0dXJucyAwLCBpdCdzIGFsc28gYSBmYWlsdXJlLiAqLwotICAgIHNvY2tzdGF0ZSA9IDA7CiAgICAgZG8gewogICAgICAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIHJldCA9IFNTTF9kb19oYW5kc2hha2Uoc2VsZi0+c3NsKTsKQEAgLTg4MiwxOSArMTAzNywxNSBAQAogICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwogICAgIGludCBsZW47CiAgICAgaW50IHZlcmlmaWNhdGlvbjsKLSAgICBQeU9iamVjdCAqYmluYXJ5X21vZGUgPSBQeV9Ob25lOwotICAgIGludCBiOworICAgIGludCBiaW5hcnlfbW9kZSA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPOnBlZXJfY2VydGlmaWNhdGUiLCAmYmluYXJ5X21vZGUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifHA6cGVlcl9jZXJ0aWZpY2F0ZSIsICZiaW5hcnlfbW9kZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFzZWxmLT5wZWVyX2NlcnQpCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogCi0gICAgYiA9IFB5T2JqZWN0X0lzVHJ1ZShiaW5hcnlfbW9kZSk7Ci0gICAgaWYgKGIgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoYikgeworICAgIGlmIChiaW5hcnlfbW9kZSkgewogICAgICAgICAvKiByZXR1cm4gY2VydCBpbiBERVItZW5jb2RlZCBmb3JtYXQgKi8KIAogICAgICAgICB1bnNpZ25lZCBjaGFyICpieXRlc19idWYgPSBOVUxMOwpAQCAtOTgwLDYgKzExMzEsMzkgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKK3N0YXRpYyBQeU9iamVjdCAqUHlTU0xfc2VsZWN0ZWRfbnBuX3Byb3RvY29sKFB5U1NMU29ja2V0ICpzZWxmKSB7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqb3V0OworICAgIHVuc2lnbmVkIGludCBvdXRsZW47CisKKyAgICBTU0xfZ2V0MF9uZXh0X3Byb3RvX25lZ290aWF0ZWQoc2VsZi0+c3NsLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dCwgJm91dGxlbik7CisKKyAgICBpZiAob3V0ID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKikgb3V0LCBvdXRsZW4pOworfQorI2VuZGlmCisKK3N0YXRpYyBQeU9iamVjdCAqUHlTU0xfY29tcHJlc3Npb24oUHlTU0xTb2NrZXQgKnNlbGYpIHsKKyNpZmRlZiBPUEVOU1NMX05PX0NPTVAKKyAgICBQeV9SRVRVUk5fTk9ORTsKKyNlbHNlCisgICAgY29uc3QgQ09NUF9NRVRIT0QgKmNvbXBfbWV0aG9kOworICAgIGNvbnN0IGNoYXIgKnNob3J0X25hbWU7CisKKyAgICBpZiAoc2VsZi0+c3NsID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIGNvbXBfbWV0aG9kID0gU1NMX2dldF9jdXJyZW50X2NvbXByZXNzaW9uKHNlbGYtPnNzbCk7CisgICAgaWYgKGNvbXBfbWV0aG9kID09IE5VTEwgfHwgY29tcF9tZXRob2QtPnR5cGUgPT0gTklEX3VuZGVmKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICBzaG9ydF9uYW1lID0gT0JKX25pZDJzbihjb21wX21ldGhvZC0+dHlwZSk7CisgICAgaWYgKHNob3J0X25hbWUgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoc2hvcnRfbmFtZSk7CisjZW5kaWYKK30KKwogc3RhdGljIHZvaWQgUHlTU0xfZGVhbGxvYyhQeVNTTFNvY2tldCAqc2VsZikKIHsKICAgICBpZiAoc2VsZi0+cGVlcl9jZXJ0KSAgICAgICAgLyogUG9zc2libGUgbm90IHRvIGhhdmUgb25lPyAqLwpAQCAtMTEwMCw3ICsxMjg0LDYgQEAKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgZG8gewotICAgICAgICBlcnIgPSAwOwogICAgICAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIGxlbiA9IFNTTF93cml0ZShzZWxmLT5zc2wsIGJ1Zi5idWYsIGJ1Zi5sZW4pOwogICAgICAgICBlcnIgPSBTU0xfZ2V0X2Vycm9yKHNlbGYtPnNzbCwgbGVuKTsKQEAgLTEyMzYsNyArMTQxOSw2IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgZG8gewotICAgICAgICBlcnIgPSAwOwogICAgICAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIGNvdW50ID0gU1NMX3JlYWQoc2VsZi0+c3NsLCBtZW0sIGxlbik7CiAgICAgICAgIGVyciA9IFNTTF9nZXRfZXJyb3Ioc2VsZi0+c3NsLCBjb3VudCk7CkBAIC0xMzg4LDYgKzE1NzAsNDEgQEAKIERvZXMgdGhlIFNTTCBzaHV0ZG93biBoYW5kc2hha2Ugd2l0aCB0aGUgcmVtb3RlIGVuZCwgYW5kIHJldHVybnNcblwKIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuIik7CiAKKyNpZiBIQVZFX09QRU5TU0xfRklOSVNIRUQKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTF90bHNfdW5pcXVlX2NiKFB5U1NMU29ja2V0ICpzZWxmKQoreworICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOworICAgIGNoYXIgYnVmW1B5U1NMX0NCX01BWExFTl07CisgICAgaW50IGxlbjsKKworICAgIGlmIChTU0xfc2Vzc2lvbl9yZXVzZWQoc2VsZi0+c3NsKSBeICFzZWxmLT5zb2NrZXRfdHlwZSkgeworICAgICAgICAvKiBpZiBzZXNzaW9uIGlzIHJlc3VtZWQgWE9SIHdlIGFyZSB0aGUgY2xpZW50ICovCisgICAgICAgIGxlbiA9IFNTTF9nZXRfZmluaXNoZWQoc2VsZi0+c3NsLCBidWYsIFB5U1NMX0NCX01BWExFTik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBpZiBhIG5ldyBzZXNzaW9uIFhPUiB3ZSBhcmUgdGhlIHNlcnZlciAqLworICAgICAgICBsZW4gPSBTU0xfZ2V0X3BlZXJfZmluaXNoZWQoc2VsZi0+c3NsLCBidWYsIFB5U1NMX0NCX01BWExFTik7CisgICAgfQorCisgICAgLyogSXQgY2Fubm90IGJlIG5lZ2F0aXZlIGluIGN1cnJlbnQgT3BlblNTTCB2ZXJzaW9uIGFzIG9mIEp1bHkgMjAxMSAqLworICAgIGFzc2VydChsZW4gPj0gMCk7CisgICAgaWYgKGxlbiA9PSAwKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKworICAgIHJldHZhbCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBsZW4pOworCisgICAgcmV0dXJuIHJldHZhbDsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMX3Rsc191bmlxdWVfY2JfZG9jLAorInRsc191bmlxdWVfY2IoKSAtPiBieXRlc1xuXAorXG5cCitSZXR1cm5zIHRoZSAndGxzLXVuaXF1ZScgY2hhbm5lbCBiaW5kaW5nIGRhdGEsIGFzIGRlZmluZWQgYnkgUkZDIDU5MjkuXG5cCitcblwKK0lmIHRoZSBUTFMgaGFuZHNoYWtlIGlzIG5vdCB5ZXQgY29tcGxldGUsIE5vbmUgaXMgcmV0dXJuZWQiKTsKKworI2VuZGlmIC8qIEhBVkVfT1BFTlNTTF9GSU5JU0hFRCAqLwogCiBzdGF0aWMgUHlNZXRob2REZWYgUHlTU0xNZXRob2RzW10gPSB7CiAgICAgeyJkb19oYW5kc2hha2UiLCAoUHlDRnVuY3Rpb24pUHlTU0xfU1NMZG9faGFuZHNoYWtlLCBNRVRIX05PQVJHU30sCkBAIC0xNDAwLDggKzE2MTcsMTYgQEAKICAgICB7InBlZXJfY2VydGlmaWNhdGUiLCAoUHlDRnVuY3Rpb24pUHlTU0xfcGVlcmNlcnQsIE1FVEhfVkFSQVJHUywKICAgICAgUHlTU0xfcGVlcmNlcnRfZG9jfSwKICAgICB7ImNpcGhlciIsIChQeUNGdW5jdGlvbilQeVNTTF9jaXBoZXIsIE1FVEhfTk9BUkdTfSwKKyNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECisgICAgeyJzZWxlY3RlZF9ucG5fcHJvdG9jb2wiLCAoUHlDRnVuY3Rpb24pUHlTU0xfc2VsZWN0ZWRfbnBuX3Byb3RvY29sLCBNRVRIX05PQVJHU30sCisjZW5kaWYKKyAgICB7ImNvbXByZXNzaW9uIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX2NvbXByZXNzaW9uLCBNRVRIX05PQVJHU30sCiAgICAgeyJzaHV0ZG93biIsIChQeUNGdW5jdGlvbilQeVNTTF9TU0xzaHV0ZG93biwgTUVUSF9OT0FSR1MsCiAgICAgIFB5U1NMX1NTTHNodXRkb3duX2RvY30sCisjaWYgSEFWRV9PUEVOU1NMX0ZJTklTSEVECisgICAgeyJ0bHNfdW5pcXVlX2NiIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX3Rsc191bmlxdWVfY2IsIE1FVEhfTk9BUkdTLAorICAgICBQeVNTTF90bHNfdW5pcXVlX2NiX2RvY30sCisjZW5kaWYKICAgICB7TlVMTCwgTlVMTH0KIH07CiAKQEAgLTE0ODgsNiArMTcxMyw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBzZWxmLT5jdHggPSBjdHg7CisjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorICAgIHNlbGYtPm5wbl9wcm90b2NvbHMgPSBOVUxMOworI2VuZGlmCiAgICAgLyogRGVmYXVsdHMgKi8KICAgICBTU0xfQ1RYX3NldF92ZXJpZnkoc2VsZi0+Y3R4LCBTU0xfVkVSSUZZX05PTkUsIE5VTEwpOwogICAgIFNTTF9DVFhfc2V0X29wdGlvbnMoc2VsZi0+Y3R4LApAQCAtMTUwNSw2ICsxNzMzLDkgQEAKIGNvbnRleHRfZGVhbGxvYyhQeVNTTENvbnRleHQgKnNlbGYpCiB7CiAgICAgU1NMX0NUWF9mcmVlKHNlbGYtPmN0eCk7CisjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorICAgIFB5TWVtX0ZyZWUoc2VsZi0+bnBuX3Byb3RvY29scyk7CisjZW5kaWYKICAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKHNlbGYpOwogfQogCkBAIC0xNTI5LDYgKzE3NjAsOTEgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKKy8qIHRoaXMgY2FsbGJhY2sgZ2V0cyBwYXNzZWQgdG8gU1NMX0NUWF9zZXRfbmV4dF9wcm90b3NfYWR2ZXJ0aXNlX2NiICovCitzdGF0aWMgaW50CitfYWR2ZXJ0aXNlTlBOX2NiKFNTTCAqcywgCisgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKipkYXRhLCB1bnNpZ25lZCBpbnQgKmxlbiwgCisgICAgICAgICAgICAgICAgIHZvaWQgKmFyZ3MpCit7CisgICAgUHlTU0xDb250ZXh0ICpzc2xfY3R4ID0gKFB5U1NMQ29udGV4dCAqKSBhcmdzOworCisgICAgaWYgKHNzbF9jdHgtPm5wbl9wcm90b2NvbHMgPT0gTlVMTCkgeworICAgICAgICAqZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopICIiOworICAgICAgICAqbGVuID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICAqZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopIHNzbF9jdHgtPm5wbl9wcm90b2NvbHM7CisgICAgICAgICpsZW4gPSBzc2xfY3R4LT5ucG5fcHJvdG9jb2xzX2xlbjsKKyAgICB9CisKKyAgICByZXR1cm4gU1NMX1RMU0VYVF9FUlJfT0s7Cit9CisvKiB0aGlzIGNhbGxiYWNrIGdldHMgcGFzc2VkIHRvIFNTTF9DVFhfc2V0X25leHRfcHJvdG9fc2VsZWN0X2NiICovCitzdGF0aWMgaW50Citfc2VsZWN0TlBOX2NiKFNTTCAqcywgCisgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKipvdXQsIHVuc2lnbmVkIGNoYXIgKm91dGxlbiwKKyAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2VydmVyLCB1bnNpZ25lZCBpbnQgc2VydmVyX2xlbiwKKyAgICAgICAgICAgICAgdm9pZCAqYXJncykKK3sKKyAgICBQeVNTTENvbnRleHQgKnNzbF9jdHggPSAoUHlTU0xDb250ZXh0ICopIGFyZ3M7CisKKyAgICB1bnNpZ25lZCBjaGFyICpjbGllbnQgPSAodW5zaWduZWQgY2hhciAqKSBzc2xfY3R4LT5ucG5fcHJvdG9jb2xzOworICAgIGludCBjbGllbnRfbGVuOworCisgICAgaWYgKGNsaWVudCA9PSBOVUxMKSB7CisgICAgICAgIGNsaWVudCA9ICh1bnNpZ25lZCBjaGFyICopICIiOworICAgICAgICBjbGllbnRfbGVuID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBjbGllbnRfbGVuID0gc3NsX2N0eC0+bnBuX3Byb3RvY29sc19sZW47CisgICAgfQorCisgICAgU1NMX3NlbGVjdF9uZXh0X3Byb3RvKG91dCwgb3V0bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIsIHNlcnZlcl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudCwgY2xpZW50X2xlbik7CisKKyAgICByZXR1cm4gU1NMX1RMU0VYVF9FUlJfT0s7Cit9CisjZW5kaWYKKworc3RhdGljIFB5T2JqZWN0ICoKK19zZXRfbnBuX3Byb3RvY29scyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKKyAgICBQeV9idWZmZXIgcHJvdG9zOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjpzZXRfbnBuX3Byb3RvY29scyIsICZwcm90b3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChzZWxmLT5ucG5fcHJvdG9jb2xzICE9IE5VTEwpIHsKKyAgICAgICAgUHlNZW1fRnJlZShzZWxmLT5ucG5fcHJvdG9jb2xzKTsKKyAgICB9CisKKyAgICBzZWxmLT5ucG5fcHJvdG9jb2xzID0gUHlNZW1fTWFsbG9jKHByb3Rvcy5sZW4pOworICAgIGlmIChzZWxmLT5ucG5fcHJvdG9jb2xzID09IE5VTEwpIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHJvdG9zKTsKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgfQorICAgIG1lbWNweShzZWxmLT5ucG5fcHJvdG9jb2xzLCBwcm90b3MuYnVmLCBwcm90b3MubGVuKTsKKyAgICBzZWxmLT5ucG5fcHJvdG9jb2xzX2xlbiA9IChpbnQpIHByb3Rvcy5sZW47CisKKyAgICAvKiBzZXQgYm90aCBzZXJ2ZXIgYW5kIGNsaWVudCBjYWxsYmFja3MsIGJlY2F1c2UgdGhlIGNvbnRleHQgY2FuCisgICAgICogYmUgdXNlZCB0byBjcmVhdGUgYm90aCB0eXBlcyBvZiBzb2NrZXRzICovCisgICAgU1NMX0NUWF9zZXRfbmV4dF9wcm90b3NfYWR2ZXJ0aXNlZF9jYihzZWxmLT5jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYWR2ZXJ0aXNlTlBOX2NiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZik7CisgICAgU1NMX0NUWF9zZXRfbmV4dF9wcm90b19zZWxlY3RfY2Ioc2VsZi0+Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxlY3ROUE5fY2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZik7CisKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwcm90b3MpOworICAgIFB5X1JFVFVSTl9OT05FOworI2Vsc2UKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIlRoZSBOUE4gZXh0ZW5zaW9uIHJlcXVpcmVzIE9wZW5TU0wgMS4wLjEgb3IgbGF0ZXIuIik7CisgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIGdldF92ZXJpZnlfbW9kZShQeVNTTENvbnRleHQgKnNlbGYsIHZvaWQgKmMpCiB7CkBAIC0xNTk1LDE5ICsxOTExLDExOCBAQAogICAgIHJldHVybiAwOwogfQogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlUaHJlYWRTdGF0ZSAqdGhyZWFkX3N0YXRlOworICAgIFB5T2JqZWN0ICpjYWxsYWJsZTsKKyAgICBjaGFyICpwYXNzd29yZDsKKyAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgaW50IGVycm9yOworfSBfUHlTU0xQYXNzd29yZEluZm87CisKK3N0YXRpYyBpbnQKK19wd2luZm9fc2V0KF9QeVNTTFBhc3N3b3JkSW5mbyAqcHdfaW5mbywgUHlPYmplY3QqIHBhc3N3b3JkLAorICAgICAgICAgICAgY29uc3QgY2hhciAqYmFkX3R5cGVfZXJyb3IpCit7CisgICAgLyogU2V0IHRoZSBwYXNzd29yZCBhbmQgc2l6ZSBmaWVsZHMgb2YgYSBfUHlTU0xQYXNzd29yZEluZm8gc3RydWN0CisgICAgICAgZnJvbSBhIHVuaWNvZGUsIGJ5dGVzLCBvciBieXRlIGFycmF5IG9iamVjdC4KKyAgICAgICBUaGUgcGFzc3dvcmQgZmllbGQgd2lsbCBiZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYW5kIG11c3QgYmUgZnJlZWQKKyAgICAgICBieSB0aGUgY2FsbGVyICovCisgICAgUHlPYmplY3QgKnBhc3N3b3JkX2J5dGVzID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpkYXRhID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IHNpemU7CisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHBhc3N3b3JkKSkgeworICAgICAgICBwYXNzd29yZF9ieXRlcyA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcocGFzc3dvcmQsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXBhc3N3b3JkX2J5dGVzKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGRhdGEgPSBQeUJ5dGVzX0FTX1NUUklORyhwYXNzd29yZF9ieXRlcyk7CisgICAgICAgIHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKHBhc3N3b3JkX2J5dGVzKTsKKyAgICB9IGVsc2UgaWYgKFB5Qnl0ZXNfQ2hlY2socGFzc3dvcmQpKSB7CisgICAgICAgIGRhdGEgPSBQeUJ5dGVzX0FTX1NUUklORyhwYXNzd29yZCk7CisgICAgICAgIHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKHBhc3N3b3JkKTsKKyAgICB9IGVsc2UgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKHBhc3N3b3JkKSkgeworICAgICAgICBkYXRhID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHBhc3N3b3JkKTsKKyAgICAgICAgc2l6ZSA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHBhc3N3b3JkKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBiYWRfdHlwZV9lcnJvcik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgZnJlZShwd19pbmZvLT5wYXNzd29yZCk7CisgICAgcHdfaW5mby0+cGFzc3dvcmQgPSBtYWxsb2Moc2l6ZSk7CisgICAgaWYgKCFwd19pbmZvLT5wYXNzd29yZCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidW5hYmxlIHRvIGFsbG9jYXRlIHBhc3N3b3JkIGJ1ZmZlciIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBtZW1jcHkocHdfaW5mby0+cGFzc3dvcmQsIGRhdGEsIHNpemUpOworICAgIHB3X2luZm8tPnNpemUgPSBzaXplOworCisgICAgUHlfWERFQ1JFRihwYXNzd29yZF9ieXRlcyk7CisgICAgcmV0dXJuIDE7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYocGFzc3dvcmRfYnl0ZXMpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitfcGFzc3dvcmRfY2FsbGJhY2soY2hhciAqYnVmLCBpbnQgc2l6ZSwgaW50IHJ3ZmxhZywgdm9pZCAqdXNlcmRhdGEpCit7CisgICAgX1B5U1NMUGFzc3dvcmRJbmZvICpwd19pbmZvID0gKF9QeVNTTFBhc3N3b3JkSW5mbyopIHVzZXJkYXRhOworICAgIFB5T2JqZWN0ICpmbl9yZXQgPSBOVUxMOworCisgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFNfUyhwd19pbmZvLT50aHJlYWRfc3RhdGUpOworCisgICAgaWYgKHB3X2luZm8tPmNhbGxhYmxlKSB7CisgICAgICAgIGZuX3JldCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MocHdfaW5mby0+Y2FsbGFibGUsIE5VTEwpOworICAgICAgICBpZiAoIWZuX3JldCkgeworICAgICAgICAgICAgLyogVE9ETzogSXQgd291bGQgYmUgbmljZSB0byBtb3ZlIF9jdHlwZXNfYWRkX3RyYWNlYmFjaygpIGludG8gdGhlCisgICAgICAgICAgICAgICBjb3JlIHB5dGhvbiBBUEksIHNvIHdlIGNvdWxkIHVzZSBpdCB0byBhZGQgYSBmcmFtZSBoZXJlICovCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFfcHdpbmZvX3NldChwd19pbmZvLCBmbl9yZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3N3b3JkIGNhbGxiYWNrIG11c3QgcmV0dXJuIGEgc3RyaW5nIikpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgUHlfQ0xFQVIoZm5fcmV0KTsKKyAgICB9CisKKyAgICBpZiAocHdfaW5mby0+c2l6ZSA+IHNpemUpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAicGFzc3dvcmQgY2Fubm90IGJlIGxvbmdlciB0aGFuICVkIGJ5dGVzIiwgc2l6ZSk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEU19TKHB3X2luZm8tPnRocmVhZF9zdGF0ZSk7CisgICAgbWVtY3B5KGJ1ZiwgcHdfaW5mby0+cGFzc3dvcmQsIHB3X2luZm8tPnNpemUpOworICAgIHJldHVybiBwd19pbmZvLT5zaXplOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGZuX3JldCk7CisgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEU19TKHB3X2luZm8tPnRocmVhZF9zdGF0ZSk7CisgICAgcHdfaW5mby0+ZXJyb3IgPSAxOworICAgIHJldHVybiAtMTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIGxvYWRfY2VydF9jaGFpbihQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsiY2VydGZpbGUiLCAia2V5ZmlsZSIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpjZXJ0ZmlsZSwgKmtleWZpbGUgPSBOVUxMOworICAgIGNoYXIgKmt3bGlzdFtdID0geyJjZXJ0ZmlsZSIsICJrZXlmaWxlIiwgInBhc3N3b3JkIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmNlcnRmaWxlLCAqa2V5ZmlsZSA9IE5VTEwsICpwYXNzd29yZCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNlcnRmaWxlX2J5dGVzID0gTlVMTCwgKmtleWZpbGVfYnl0ZXMgPSBOVUxMOworICAgIHBlbV9wYXNzd29yZF9jYiAqb3JpZ19wYXNzd2RfY2IgPSBzZWxmLT5jdHgtPmRlZmF1bHRfcGFzc3dkX2NhbGxiYWNrOworICAgIHZvaWQgKm9yaWdfcGFzc3dkX3VzZXJkYXRhID0gc2VsZi0+Y3R4LT5kZWZhdWx0X3Bhc3N3ZF9jYWxsYmFja191c2VyZGF0YTsKKyAgICBfUHlTU0xQYXNzd29yZEluZm8gcHdfaW5mbyA9IHsgTlVMTCwgTlVMTCwgTlVMTCwgMCwgMCB9OwogICAgIGludCByOwogCiAgICAgZXJybm8gPSAwOwogICAgIEVSUl9jbGVhcl9lcnJvcigpOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsCi0gICAgICAgICJPfE86bG9hZF9jZXJ0X2NoYWluIiwga3dsaXN0LAotICAgICAgICAmY2VydGZpbGUsICZrZXlmaWxlKSkKKyAgICAgICAgIk98T086bG9hZF9jZXJ0X2NoYWluIiwga3dsaXN0LAorICAgICAgICAmY2VydGZpbGUsICZrZXlmaWxlLCAmcGFzc3dvcmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoa2V5ZmlsZSA9PSBQeV9Ob25lKQogICAgICAgICBrZXlmaWxlID0gTlVMTDsKQEAgLTE2MjEsMTIgKzIwMzYsMjYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJrZXlmaWxlIHNob3VsZCBiZSBhIHZhbGlkIGZpbGVzeXN0ZW0gcGF0aCIpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCisgICAgaWYgKHBhc3N3b3JkICYmIHBhc3N3b3JkICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKFB5Q2FsbGFibGVfQ2hlY2socGFzc3dvcmQpKSB7CisgICAgICAgICAgICBwd19pbmZvLmNhbGxhYmxlID0gcGFzc3dvcmQ7CisgICAgICAgIH0gZWxzZSBpZiAoIV9wd2luZm9fc2V0KCZwd19pbmZvLCBwYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3N3b3JkIHNob3VsZCBiZSBhIHN0cmluZyBvciBjYWxsYWJsZSIpKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFNTTF9DVFhfc2V0X2RlZmF1bHRfcGFzc3dkX2NiKHNlbGYtPmN0eCwgX3Bhc3N3b3JkX2NhbGxiYWNrKTsKKyAgICAgICAgU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2JfdXNlcmRhdGEoc2VsZi0+Y3R4LCAmcHdfaW5mbyk7CisgICAgfQorICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFNfUyhwd19pbmZvLnRocmVhZF9zdGF0ZSk7CiAgICAgciA9IFNTTF9DVFhfdXNlX2NlcnRpZmljYXRlX2NoYWluX2ZpbGUoc2VsZi0+Y3R4LAogICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhjZXJ0ZmlsZV9ieXRlcykpOwotICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCisgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFNfUyhwd19pbmZvLnRocmVhZF9zdGF0ZSk7CiAgICAgaWYgKHIgIT0gMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gMCkgeworICAgICAgICBpZiAocHdfaW5mby5lcnJvcikgeworICAgICAgICAgICAgRVJSX2NsZWFyX2Vycm9yKCk7CisgICAgICAgICAgICAvKiB0aGUgcGFzc3dvcmQgY2FsbGJhY2sgaGFzIGFscmVhZHkgc2V0IHRoZSBlcnJvciBpbmZvcm1hdGlvbiAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGVycm5vICE9IDApIHsKICAgICAgICAgICAgIEVSUl9jbGVhcl9lcnJvcigpOwogICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICB9CkBAIC0xNjM1LDMzICsyMDY0LDQzIEBACiAgICAgICAgIH0KICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFNfUyhwd19pbmZvLnRocmVhZF9zdGF0ZSk7CiAgICAgciA9IFNTTF9DVFhfdXNlX1ByaXZhdGVLZXlfZmlsZShzZWxmLT5jdHgsCiAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGtleWZpbGUgPyBrZXlmaWxlX2J5dGVzIDogY2VydGZpbGVfYnl0ZXMpLAogICAgICAgICBTU0xfRklMRVRZUEVfUEVNKTsKLSAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X1hERUNSRUYoa2V5ZmlsZV9ieXRlcyk7Ci0gICAgUHlfWERFQ1JFRihjZXJ0ZmlsZV9ieXRlcyk7CisgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFNfUyhwd19pbmZvLnRocmVhZF9zdGF0ZSk7CisgICAgUHlfQ0xFQVIoa2V5ZmlsZV9ieXRlcyk7CisgICAgUHlfQ0xFQVIoY2VydGZpbGVfYnl0ZXMpOwogICAgIGlmIChyICE9IDEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IDApIHsKKyAgICAgICAgaWYgKHB3X2luZm8uZXJyb3IpIHsKKyAgICAgICAgICAgIEVSUl9jbGVhcl9lcnJvcigpOworICAgICAgICAgICAgLyogdGhlIHBhc3N3b3JkIGNhbGxiYWNrIGhhcyBhbHJlYWR5IHNldCB0aGUgZXJyb3IgaW5mb3JtYXRpb24gKi8KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlcnJubyAhPSAwKSB7CiAgICAgICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIF9zZXRTU0xFcnJvcihOVUxMLCAwLCBfX0ZJTEVfXywgX19MSU5FX18pOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCisgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEU19TKHB3X2luZm8udGhyZWFkX3N0YXRlKTsKICAgICByID0gU1NMX0NUWF9jaGVja19wcml2YXRlX2tleShzZWxmLT5jdHgpOwotICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCisgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFNfUyhwd19pbmZvLnRocmVhZF9zdGF0ZSk7CiAgICAgaWYgKHIgIT0gMSkgewogICAgICAgICBfc2V0U1NMRXJyb3IoTlVMTCwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQorICAgIFNTTF9DVFhfc2V0X2RlZmF1bHRfcGFzc3dkX2NiKHNlbGYtPmN0eCwgb3JpZ19wYXNzd2RfY2IpOworICAgIFNTTF9DVFhfc2V0X2RlZmF1bHRfcGFzc3dkX2NiX3VzZXJkYXRhKHNlbGYtPmN0eCwgb3JpZ19wYXNzd2RfdXNlcmRhdGEpOworICAgIGZyZWUocHdfaW5mby5wYXNzd29yZCk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiAKIGVycm9yOgorICAgIFNTTF9DVFhfc2V0X2RlZmF1bHRfcGFzc3dkX2NiKHNlbGYtPmN0eCwgb3JpZ19wYXNzd2RfY2IpOworICAgIFNTTF9DVFhfc2V0X2RlZmF1bHRfcGFzc3dkX2NiX3VzZXJkYXRhKHNlbGYtPmN0eCwgb3JpZ19wYXNzd2RfdXNlcmRhdGEpOworICAgIGZyZWUocHdfaW5mby5wYXNzd29yZCk7CiAgICAgUHlfWERFQ1JFRihrZXlmaWxlX2J5dGVzKTsKICAgICBQeV9YREVDUkVGKGNlcnRmaWxlX2J5dGVzKTsKICAgICByZXR1cm4gTlVMTDsKQEAgLTE3MjQsNiArMjE2MywzOSBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgorbG9hZF9kaF9wYXJhbXMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqZmlsZXBhdGgpCit7CisgICAgRklMRSAqZjsKKyAgICBESCAqZGg7CisKKyAgICBmID0gX1B5X2ZvcGVuKGZpbGVwYXRoLCAicmIiKTsKKyAgICBpZiAoZiA9PSBOVUxMKSB7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19PU0Vycm9yLCBmaWxlcGF0aCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlcnJubyA9IDA7CisgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGRoID0gUEVNX3JlYWRfREhwYXJhbXMoZiwgTlVMTCwgTlVMTCwgTlVMTCk7CisgICAgZmNsb3NlKGYpOworICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCisgICAgaWYgKGRoID09IE5VTEwpIHsKKyAgICAgICAgaWYgKGVycm5vICE9IDApIHsKKyAgICAgICAgICAgIEVSUl9jbGVhcl9lcnJvcigpOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIGZpbGVwYXRoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIF9zZXRTU0xFcnJvcihOVUxMLCAwLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoU1NMX0NUWF9zZXRfdG1wX2RoKHNlbGYtPmN0eCwgZGgpID09IDApCisgICAgICAgIF9zZXRTU0xFcnJvcihOVUxMLCAwLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgIERIX2ZyZWUoZGgpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogY29udGV4dF93cmFwX3NvY2tldChQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBjaGFyICprd2xpc3RbXSA9IHsic29jayIsICJzZXJ2ZXJfc2lkZSIsICJzZXJ2ZXJfaG9zdG5hbWUiLCBOVUxMfTsKQEAgLTE4MDgsNiArMjI4MCwzNSBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisjaWZuZGVmIE9QRU5TU0xfTk9fRUNESAorc3RhdGljIFB5T2JqZWN0ICoKK3NldF9lY2RoX2N1cnZlKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKm5hbWUpCit7CisgICAgUHlPYmplY3QgKm5hbWVfYnl0ZXM7CisgICAgaW50IG5pZDsKKyAgICBFQ19LRVkgKmtleTsKKworICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKG5hbWUsICZuYW1lX2J5dGVzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sobmFtZV9ieXRlcykpOworICAgIG5pZCA9IE9CSl9zbjJuaWQoUHlCeXRlc19BU19TVFJJTkcobmFtZV9ieXRlcykpOworICAgIFB5X0RFQ1JFRihuYW1lX2J5dGVzKTsKKyAgICBpZiAobmlkID09IDApIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBlbGxpcHRpYyBjdXJ2ZSBuYW1lICVSIiwgbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBrZXkgPSBFQ19LRVlfbmV3X2J5X2N1cnZlX25hbWUobmlkKTsKKyAgICBpZiAoa2V5ID09IE5VTEwpIHsKKyAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBTU0xfQ1RYX3NldF90bXBfZWNkaChzZWxmLT5jdHgsIGtleSk7CisgICAgRUNfS0VZX2ZyZWUoa2V5KTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgorCiBzdGF0aWMgUHlHZXRTZXREZWYgY29udGV4dF9nZXRzZXRsaXN0W10gPSB7CiAgICAgeyJvcHRpb25zIiwgKGdldHRlcikgZ2V0X29wdGlvbnMsCiAgICAgICAgICAgICAgICAgKHNldHRlcikgc2V0X29wdGlvbnMsIE5VTEx9LApAQCAtMTgyMSwxNCArMjMyMiwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBOVUxMfSwKICAgICB7InNldF9jaXBoZXJzIiwgKFB5Q0Z1bmN0aW9uKSBzZXRfY2lwaGVycywKICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAgICB7Il9zZXRfbnBuX3Byb3RvY29scyIsIChQeUNGdW5jdGlvbikgX3NldF9ucG5fcHJvdG9jb2xzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLCBOVUxMfSwKICAgICB7ImxvYWRfY2VydF9jaGFpbiIsIChQeUNGdW5jdGlvbikgbG9hZF9jZXJ0X2NoYWluLAogICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgTlVMTH0sCisgICAgeyJsb2FkX2RoX3BhcmFtcyIsIChQeUNGdW5jdGlvbikgbG9hZF9kaF9wYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfTywgTlVMTH0sCiAgICAgeyJsb2FkX3ZlcmlmeV9sb2NhdGlvbnMiLCAoUHlDRnVuY3Rpb24pIGxvYWRfdmVyaWZ5X2xvY2F0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIE5VTEx9LAogICAgIHsic2Vzc2lvbl9zdGF0cyIsIChQeUNGdW5jdGlvbikgc2Vzc2lvbl9zdGF0cywKICAgICAgICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgTlVMTH0sCiAgICAgeyJzZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMiLCAoUHlDRnVuY3Rpb24pIHNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyNpZm5kZWYgT1BFTlNTTF9OT19FQ0RICisgICAgeyJzZXRfZWNkaF9jdXJ2ZSIsIChQeUNGdW5jdGlvbikgc2V0X2VjZGhfY3VydmUsCisgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfTywgTlVMTH0sCisjZW5kaWYKICAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xODk5LDYgKzI0MDgsNjkgQEAKIGJvdW5kIG9uIHRoZSBlbnRyb3B5IGNvbnRhaW5lZCBpbiBzdHJpbmcuICBTZWUgUkZDIDE3NTAuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCitQeVNTTF9SQU5EKGludCBsZW4sIGludCBwc2V1ZG8pCit7CisgICAgaW50IG9rOworICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICB1bnNpZ25lZCBsb25nIGVycjsKKyAgICBjb25zdCBjaGFyICplcnJzdHI7CisgICAgUHlPYmplY3QgKnY7CisKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbGVuKTsKKyAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHBzZXVkbykgeworICAgICAgICBvayA9IFJBTkRfcHNldWRvX2J5dGVzKCh1bnNpZ25lZCBjaGFyKilQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksIGxlbik7CisgICAgICAgIGlmIChvayA9PSAwIHx8IG9rID09IDEpCisgICAgICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTk8iLCBieXRlcywgb2sgPT0gMSA/IFB5X1RydWUgOiBQeV9GYWxzZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBvayA9IFJBTkRfYnl0ZXMoKHVuc2lnbmVkIGNoYXIqKVB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgbGVuKTsKKyAgICAgICAgaWYgKG9rID09IDEpCisgICAgICAgICAgICByZXR1cm4gYnl0ZXM7CisgICAgfQorICAgIFB5X0RFQ1JFRihieXRlcyk7CisKKyAgICBlcnIgPSBFUlJfZ2V0X2Vycm9yKCk7CisgICAgZXJyc3RyID0gRVJSX3JlYXNvbl9lcnJvcl9zdHJpbmcoZXJyKTsKKyAgICB2ID0gUHlfQnVpbGRWYWx1ZSgiKGtzKSIsIGVyciwgZXJyc3RyKTsKKyAgICBpZiAodiAhPSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldE9iamVjdChQeVNTTEVycm9yT2JqZWN0LCB2KTsKKyAgICAgICAgUHlfREVDUkVGKHYpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX1JBTkRfYnl0ZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBsZW47CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOlJBTkRfYnl0ZXMiLCAmbGVuKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5U1NMX1JBTkQobGVuLCAwKTsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMX1JBTkRfYnl0ZXNfZG9jLAorIlJBTkRfYnl0ZXMobikgLT4gYnl0ZXNcblwKK1xuXAorR2VuZXJhdGUgbiBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcgcHNldWRvLXJhbmRvbSBieXRlcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX1JBTkRfcHNldWRvX2J5dGVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgbGVuOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpSQU5EX3BzZXVkb19ieXRlcyIsICZsZW4pKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlTU0xfUkFORChsZW4sIDEpOworfQorCitQeURvY19TVFJWQVIoUHlTU0xfUkFORF9wc2V1ZG9fYnl0ZXNfZG9jLAorIlJBTkRfcHNldWRvX2J5dGVzKG4pIC0+IChieXRlcywgaXNfY3J5cHRvZ3JhcGhpYylcblwKK1xuXAorR2VuZXJhdGUgbiBwc2V1ZG8tcmFuZG9tIGJ5dGVzLiBpc19jcnlwdG9ncmFwaGljIGlzIFRydWUgaWYgdGhlIGJ5dGVzXAorZ2VuZXJhdGVkIGFyZSBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCiBQeVNTTF9SQU5EX3N0YXR1cyhQeU9iamVjdCAqc2VsZikKIHsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFJBTkRfc3RhdHVzKCkpOwpAQCAtMTk1MSw2ICsyNTIzLDEwIEBACiAjaWZkZWYgSEFWRV9PUEVOU1NMX1JBTkQKICAgICB7IlJBTkRfYWRkIiwgICAgICAgICAgICBQeVNTTF9SQU5EX2FkZCwgTUVUSF9WQVJBUkdTLAogICAgICBQeVNTTF9SQU5EX2FkZF9kb2N9LAorICAgIHsiUkFORF9ieXRlcyIsICAgICAgICAgIFB5U1NMX1JBTkRfYnl0ZXMsIE1FVEhfVkFSQVJHUywKKyAgICAgUHlTU0xfUkFORF9ieXRlc19kb2N9LAorICAgIHsiUkFORF9wc2V1ZG9fYnl0ZXMiLCAgIFB5U1NMX1JBTkRfcHNldWRvX2J5dGVzLCBNRVRIX1ZBUkFSR1MsCisgICAgIFB5U1NMX1JBTkRfcHNldWRvX2J5dGVzX2RvY30sCiAgICAgeyJSQU5EX2VnZCIsICAgICAgICAgICAgUHlTU0xfUkFORF9lZ2QsIE1FVEhfVkFSQVJHUywKICAgICAgUHlTU0xfUkFORF9lZ2RfZG9jfSwKICAgICB7IlJBTkRfc3RhdHVzIiwgICAgICAgICAoUHlDRnVuY3Rpb24pUHlTU0xfUkFORF9zdGF0dXMsIE1FVEhfTk9BUkdTLApAQCAtMjA3MSw2ICsyNjQ3LDggQEAKICAgICB1bnNpZ25lZCBsb25nIGxpYnZlcjsKICAgICB1bnNpZ25lZCBpbnQgbWFqb3IsIG1pbm9yLCBmaXgsIHBhdGNoLCBzdGF0dXM7CiAgICAgUHlTb2NrZXRNb2R1bGVfQVBJT2JqZWN0ICpzb2NrZXRfYXBpOworICAgIHN0cnVjdCBweV9zc2xfZXJyb3JfY29kZSAqZXJyY29kZTsKKyAgICBzdHJ1Y3QgcHlfc3NsX2xpYnJhcnlfY29kZSAqbGliY29kZTsKIAogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5U1NMQ29udGV4dF9UeXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjEwMCwxMiArMjY3OCwzOCBAQAogICAgIE9wZW5TU0xfYWRkX2FsbF9hbGdvcml0aG1zKCk7CiAKICAgICAvKiBBZGQgc3ltYm9scyB0byBtb2R1bGUgZGljdCAqLwotICAgIFB5U1NMRXJyb3JPYmplY3QgPSBQeUVycl9OZXdFeGNlcHRpb24oInNzbC5TU0xFcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVNvY2tldE1vZHVsZS5lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIHNzbGVycm9yX3R5cGVfc2xvdHNbMF0ucGZ1bmMgPSBQeUV4Y19PU0Vycm9yOworICAgIFB5U1NMRXJyb3JPYmplY3QgPSBQeVR5cGVfRnJvbVNwZWMoJnNzbGVycm9yX3R5cGVfc3BlYyk7CiAgICAgaWYgKFB5U1NMRXJyb3JPYmplY3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xFcnJvciIsIFB5U1NMRXJyb3JPYmplY3QpICE9IDApCisKKyAgICBQeVNTTFplcm9SZXR1cm5FcnJvck9iamVjdCA9IFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MoCisgICAgICAgICJzc2wuU1NMWmVyb1JldHVybkVycm9yIiwgU1NMWmVyb1JldHVybkVycm9yX2RvYywKKyAgICAgICAgUHlTU0xFcnJvck9iamVjdCwgTlVMTCk7CisgICAgUHlTU0xXYW50UmVhZEVycm9yT2JqZWN0ID0gUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYygKKyAgICAgICAgInNzbC5TU0xXYW50UmVhZEVycm9yIiwgU1NMV2FudFJlYWRFcnJvcl9kb2MsCisgICAgICAgIFB5U1NMRXJyb3JPYmplY3QsIE5VTEwpOworICAgIFB5U1NMV2FudFdyaXRlRXJyb3JPYmplY3QgPSBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jKAorICAgICAgICAic3NsLlNTTFdhbnRXcml0ZUVycm9yIiwgU1NMV2FudFdyaXRlRXJyb3JfZG9jLAorICAgICAgICBQeVNTTEVycm9yT2JqZWN0LCBOVUxMKTsKKyAgICBQeVNTTFN5c2NhbGxFcnJvck9iamVjdCA9IFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MoCisgICAgICAgICJzc2wuU1NMU3lzY2FsbEVycm9yIiwgU1NMU3lzY2FsbEVycm9yX2RvYywKKyAgICAgICAgUHlTU0xFcnJvck9iamVjdCwgTlVMTCk7CisgICAgUHlTU0xFT0ZFcnJvck9iamVjdCA9IFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MoCisgICAgICAgICJzc2wuU1NMRU9GRXJyb3IiLCBTU0xFT0ZFcnJvcl9kb2MsCisgICAgICAgIFB5U1NMRXJyb3JPYmplY3QsIE5VTEwpOworICAgIGlmIChQeVNTTFplcm9SZXR1cm5FcnJvck9iamVjdCA9PSBOVUxMCisgICAgICAgIHx8IFB5U1NMV2FudFJlYWRFcnJvck9iamVjdCA9PSBOVUxMCisgICAgICAgIHx8IFB5U1NMV2FudFdyaXRlRXJyb3JPYmplY3QgPT0gTlVMTAorICAgICAgICB8fCBQeVNTTFN5c2NhbGxFcnJvck9iamVjdCA9PSBOVUxMCisgICAgICAgIHx8IFB5U1NMRU9GRXJyb3JPYmplY3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xFcnJvciIsIFB5U1NMRXJyb3JPYmplY3QpICE9IDAKKyAgICAgICAgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNTTFplcm9SZXR1cm5FcnJvciIsIFB5U1NMWmVyb1JldHVybkVycm9yT2JqZWN0KSAhPSAwCisgICAgICAgIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xXYW50UmVhZEVycm9yIiwgUHlTU0xXYW50UmVhZEVycm9yT2JqZWN0KSAhPSAwCisgICAgICAgIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xXYW50V3JpdGVFcnJvciIsIFB5U1NMV2FudFdyaXRlRXJyb3JPYmplY3QpICE9IDAKKyAgICAgICAgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNTTFN5c2NhbGxFcnJvciIsIFB5U1NMU3lzY2FsbEVycm9yT2JqZWN0KSAhPSAwCisgICAgICAgIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xFT0ZFcnJvciIsIFB5U1NMRU9GRXJyb3JPYmplY3QpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX1NTTENvbnRleHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmUHlTU0xDb250ZXh0X1R5cGUpICE9IDApCkBAIC0yMTU4LDYgKzI3NjIsMTYgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfTk9fU1NMdjIiLCBTU0xfT1BfTk9fU1NMdjIpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9OT19TU0x2MyIsIFNTTF9PUF9OT19TU0x2Myk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX05PX1RMU3YxIiwgU1NMX09QX05PX1RMU3YxKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfU0lOR0xFX0RIX1VTRSIsIFNTTF9PUF9TSU5HTEVfREhfVVNFKTsKKyNpZmRlZiBTU0xfT1BfU0lOR0xFX0VDREhfVVNFCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX1NJTkdMRV9FQ0RIX1VTRSIsIFNTTF9PUF9TSU5HTEVfRUNESF9VU0UpOworI2VuZGlmCisjaWZkZWYgU1NMX09QX05PX0NPTVBSRVNTSU9OCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX05PX0NPTVBSRVNTSU9OIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfT1BfTk9fQ09NUFJFU1NJT04pOworI2VuZGlmCiAKICNpZmRlZiBTU0xfQ1RSTF9TRVRfVExTRVhUX0hPU1ROQU1FCiAgICAgciA9IFB5X1RydWU7CkBAIC0yMTY3LDYgKzI3ODEsNzQgQEAKICAgICBQeV9JTkNSRUYocik7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfU05JIiwgcik7CiAKKyNpZiBIQVZFX09QRU5TU0xfRklOSVNIRUQKKyAgICByID0gUHlfVHJ1ZTsKKyNlbHNlCisgICAgciA9IFB5X0ZhbHNlOworI2VuZGlmCisgICAgUHlfSU5DUkVGKHIpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiSEFTX1RMU19VTklRVUUiLCByKTsKKworI2lmZGVmIE9QRU5TU0xfTk9fRUNESAorICAgIHIgPSBQeV9GYWxzZTsKKyNlbHNlCisgICAgciA9IFB5X1RydWU7CisjZW5kaWYKKyAgICBQeV9JTkNSRUYocik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfRUNESCIsIHIpOworCisjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorICAgIHIgPSBQeV9UcnVlOworI2Vsc2UKKyAgICByID0gUHlfRmFsc2U7CisjZW5kaWYKKyAgICBQeV9JTkNSRUYocik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfTlBOIiwgcik7CisKKyAgICAvKiBNYXBwaW5ncyBmb3IgZXJyb3IgY29kZXMgKi8KKyAgICBlcnJfY29kZXNfdG9fbmFtZXMgPSBQeURpY3RfTmV3KCk7CisgICAgZXJyX25hbWVzX3RvX2NvZGVzID0gUHlEaWN0X05ldygpOworICAgIGlmIChlcnJfY29kZXNfdG9fbmFtZXMgPT0gTlVMTCB8fCBlcnJfbmFtZXNfdG9fY29kZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZXJyY29kZSA9IGVycm9yX2NvZGVzOworICAgIHdoaWxlIChlcnJjb2RlLT5tbmVtb25pYyAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICptbmVtbywgKmtleTsKKyAgICAgICAgbW5lbW8gPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhlcnJjb2RlLT5tbmVtb25pYyk7CisgICAgICAgIGtleSA9IFB5X0J1aWxkVmFsdWUoImlpIiwgZXJyY29kZS0+bGlicmFyeSwgZXJyY29kZS0+cmVhc29uKTsKKyAgICAgICAgaWYgKG1uZW1vID09IE5VTEwgfHwga2V5ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKGVycl9jb2Rlc190b19uYW1lcywga2V5LCBtbmVtbykpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKGVycl9uYW1lc190b19jb2RlcywgbW5lbW8sIGtleSkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIFB5X0RFQ1JFRihtbmVtbyk7CisgICAgICAgIGVycmNvZGUrKzsKKyAgICB9CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyX2NvZGVzX3RvX25hbWVzIiwgZXJyX2NvZGVzX3RvX25hbWVzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyX25hbWVzX3RvX2NvZGVzIiwgZXJyX25hbWVzX3RvX2NvZGVzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBsaWJfY29kZXNfdG9fbmFtZXMgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGxpYl9jb2Rlc190b19uYW1lcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsaWJjb2RlID0gbGlicmFyeV9jb2RlczsKKyAgICB3aGlsZSAobGliY29kZS0+bGlicmFyeSAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICptbmVtbywgKmtleTsKKyAgICAgICAga2V5ID0gUHlMb25nX0Zyb21Mb25nKGxpYmNvZGUtPmNvZGUpOworICAgICAgICBtbmVtbyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGxpYmNvZGUtPmxpYnJhcnkpOworICAgICAgICBpZiAoa2V5ID09IE5VTEwgfHwgbW5lbW8gPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0obGliX2NvZGVzX3RvX25hbWVzLCBrZXksIG1uZW1vKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgUHlfREVDUkVGKG1uZW1vKTsKKyAgICAgICAgbGliY29kZSsrOworICAgIH0KKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJsaWJfY29kZXNfdG9fbmFtZXMiLCBsaWJfY29kZXNfdG9fbmFtZXMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAKICAgICAvKiBPcGVuU1NMIHZlcnNpb24gKi8KICAgICAvKiBTU0xlYXkoKSBnaXZlcyB1cyB0aGUgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSBsaW5rZWQgYWdhaW5zdCwKICAgICAgICB3aGljaCBjb3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgaGVhZGVycyB2ZXJzaW9uLgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3NsX2RhdGEuaCBiL01vZHVsZXMvX3NzbF9kYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFhOGQ3YgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NzbF9kYXRhLmgKQEAgLTAsMCArMSwxNjUzIEBACisvKiBGaWxlIGdlbmVyYXRlZCBieSBUb29scy9zc2wvbWFrZV9zc2xfZGF0YS5weSAqLworLyogR2VuZXJhdGVkIG9uIDIwMTItMDUtMTZUMjM6NTY6NDAuOTgxMzgyICovCisKK3N0YXRpYyBzdHJ1Y3QgcHlfc3NsX2xpYnJhcnlfY29kZSBsaWJyYXJ5X2NvZGVzW10gPSB7CisgICAgeyJQRU0iLCBFUlJfTElCX1BFTX0sCisgICAgeyJTU0wiLCBFUlJfTElCX1NTTH0sCisgICAgeyJYNTA5IiwgRVJSX0xJQl9YNTA5fSwKKyAgICB7IE5VTEwgfQorfTsKKworc3RhdGljIHN0cnVjdCBweV9zc2xfZXJyb3JfY29kZSBlcnJvcl9jb2Rlc1tdID0geworICAjaWZkZWYgUEVNX1JfQkFEX0JBU0U2NF9ERUNPREUKKyAgICB7IkJBRF9CQVNFNjRfREVDT0RFIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9CQVNFNjRfREVDT0RFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9CQVNFNjRfREVDT0RFIiwgRVJSX0xJQl9QRU0sIDEwMH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfQkFEX0RFQ1JZUFQKKyAgICB7IkJBRF9ERUNSWVBUIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9ERUNSWVBUfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9ERUNSWVBUIiwgRVJSX0xJQl9QRU0sIDEwMX0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfQkFEX0VORF9MSU5FCisgICAgeyJCQURfRU5EX0xJTkUiLCBFUlJfTElCX1BFTSwgUEVNX1JfQkFEX0VORF9MSU5FfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9FTkRfTElORSIsIEVSUl9MSUJfUEVNLCAxMDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0JBRF9JVl9DSEFSUworICAgIHsiQkFEX0lWX0NIQVJTIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9JVl9DSEFSU30sCisgICNlbHNlCisgICAgeyJCQURfSVZfQ0hBUlMiLCBFUlJfTElCX1BFTSwgMTAzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9CQURfTUFHSUNfTlVNQkVSCisgICAgeyJCQURfTUFHSUNfTlVNQkVSIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9NQUdJQ19OVU1CRVJ9LAorICAjZWxzZQorICAgIHsiQkFEX01BR0lDX05VTUJFUiIsIEVSUl9MSUJfUEVNLCAxMTZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0JBRF9QQVNTV09SRF9SRUFECisgICAgeyJCQURfUEFTU1dPUkRfUkVBRCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9CQURfUEFTU1dPUkRfUkVBRH0sCisgICNlbHNlCisgICAgeyJCQURfUEFTU1dPUkRfUkVBRCIsIEVSUl9MSUJfUEVNLCAxMDR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0JBRF9WRVJTSU9OX05VTUJFUgorICAgIHsiQkFEX1ZFUlNJT05fTlVNQkVSIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9WRVJTSU9OX05VTUJFUn0sCisgICNlbHNlCisgICAgeyJCQURfVkVSU0lPTl9OVU1CRVIiLCBFUlJfTElCX1BFTSwgMTE3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9CSU9fV1JJVEVfRkFJTFVSRQorICAgIHsiQklPX1dSSVRFX0ZBSUxVUkUiLCBFUlJfTElCX1BFTSwgUEVNX1JfQklPX1dSSVRFX0ZBSUxVUkV9LAorICAjZWxzZQorICAgIHsiQklPX1dSSVRFX0ZBSUxVUkUiLCBFUlJfTElCX1BFTSwgMTE4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9DSVBIRVJfSVNfTlVMTAorICAgIHsiQ0lQSEVSX0lTX05VTEwiLCBFUlJfTElCX1BFTSwgUEVNX1JfQ0lQSEVSX0lTX05VTEx9LAorICAjZWxzZQorICAgIHsiQ0lQSEVSX0lTX05VTEwiLCBFUlJfTElCX1BFTSwgMTI3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9FUlJPUl9DT05WRVJUSU5HX1BSSVZBVEVfS0VZCisgICAgeyJFUlJPUl9DT05WRVJUSU5HX1BSSVZBVEVfS0VZIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0VSUk9SX0NPTlZFUlRJTkdfUFJJVkFURV9LRVl9LAorICAjZWxzZQorICAgIHsiRVJST1JfQ09OVkVSVElOR19QUklWQVRFX0tFWSIsIEVSUl9MSUJfUEVNLCAxMTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0VYUEVDVElOR19QUklWQVRFX0tFWV9CTE9CCisgICAgeyJFWFBFQ1RJTkdfUFJJVkFURV9LRVlfQkxPQiIsIEVSUl9MSUJfUEVNLCBQRU1fUl9FWFBFQ1RJTkdfUFJJVkFURV9LRVlfQkxPQn0sCisgICNlbHNlCisgICAgeyJFWFBFQ1RJTkdfUFJJVkFURV9LRVlfQkxPQiIsIEVSUl9MSUJfUEVNLCAxMTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0VYUEVDVElOR19QVUJMSUNfS0VZX0JMT0IKKyAgICB7IkVYUEVDVElOR19QVUJMSUNfS0VZX0JMT0IiLCBFUlJfTElCX1BFTSwgUEVNX1JfRVhQRUNUSU5HX1BVQkxJQ19LRVlfQkxPQn0sCisgICNlbHNlCisgICAgeyJFWFBFQ1RJTkdfUFVCTElDX0tFWV9CTE9CIiwgRVJSX0xJQl9QRU0sIDEyMH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfSU5DT05TSVNURU5UX0hFQURFUgorICAgIHsiSU5DT05TSVNURU5UX0hFQURFUiIsIEVSUl9MSUJfUEVNLCBQRU1fUl9JTkNPTlNJU1RFTlRfSEVBREVSfSwKKyAgI2Vsc2UKKyAgICB7IklOQ09OU0lTVEVOVF9IRUFERVIiLCBFUlJfTElCX1BFTSwgMTIxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9LRVlCTE9CX0hFQURFUl9QQVJTRV9FUlJPUgorICAgIHsiS0VZQkxPQl9IRUFERVJfUEFSU0VfRVJST1IiLCBFUlJfTElCX1BFTSwgUEVNX1JfS0VZQkxPQl9IRUFERVJfUEFSU0VfRVJST1J9LAorICAjZWxzZQorICAgIHsiS0VZQkxPQl9IRUFERVJfUEFSU0VfRVJST1IiLCBFUlJfTElCX1BFTSwgMTIyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9LRVlCTE9CX1RPT19TSE9SVAorICAgIHsiS0VZQkxPQl9UT09fU0hPUlQiLCBFUlJfTElCX1BFTSwgUEVNX1JfS0VZQkxPQl9UT09fU0hPUlR9LAorICAjZWxzZQorICAgIHsiS0VZQkxPQl9UT09fU0hPUlQiLCBFUlJfTElCX1BFTSwgMTIzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9OT1RfREVLX0lORk8KKyAgICB7Ik5PVF9ERUtfSU5GTyIsIEVSUl9MSUJfUEVNLCBQRU1fUl9OT1RfREVLX0lORk99LAorICAjZWxzZQorICAgIHsiTk9UX0RFS19JTkZPIiwgRVJSX0xJQl9QRU0sIDEwNX0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfTk9UX0VOQ1JZUFRFRAorICAgIHsiTk9UX0VOQ1JZUFRFRCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9OT1RfRU5DUllQVEVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PVF9FTkNSWVBURUQiLCBFUlJfTElCX1BFTSwgMTA2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9OT1RfUFJPQ19UWVBFCisgICAgeyJOT1RfUFJPQ19UWVBFIiwgRVJSX0xJQl9QRU0sIFBFTV9SX05PVF9QUk9DX1RZUEV9LAorICAjZWxzZQorICAgIHsiTk9UX1BST0NfVFlQRSIsIEVSUl9MSUJfUEVNLCAxMDd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX05PX1NUQVJUX0xJTkUKKyAgICB7Ik5PX1NUQVJUX0xJTkUiLCBFUlJfTElCX1BFTSwgUEVNX1JfTk9fU1RBUlRfTElORX0sCisgICNlbHNlCisgICAgeyJOT19TVEFSVF9MSU5FIiwgRVJSX0xJQl9QRU0sIDEwOH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfUFJPQkxFTVNfR0VUVElOR19QQVNTV09SRAorICAgIHsiUFJPQkxFTVNfR0VUVElOR19QQVNTV09SRCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9QUk9CTEVNU19HRVRUSU5HX1BBU1NXT1JEfSwKKyAgI2Vsc2UKKyAgICB7IlBST0JMRU1TX0dFVFRJTkdfUEFTU1dPUkQiLCBFUlJfTElCX1BFTSwgMTA5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9QVUJMSUNfS0VZX05PX1JTQQorICAgIHsiUFVCTElDX0tFWV9OT19SU0EiLCBFUlJfTElCX1BFTSwgUEVNX1JfUFVCTElDX0tFWV9OT19SU0F9LAorICAjZWxzZQorICAgIHsiUFVCTElDX0tFWV9OT19SU0EiLCBFUlJfTElCX1BFTSwgMTEwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9QVktfREFUQV9UT09fU0hPUlQKKyAgICB7IlBWS19EQVRBX1RPT19TSE9SVCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9QVktfREFUQV9UT09fU0hPUlR9LAorICAjZWxzZQorICAgIHsiUFZLX0RBVEFfVE9PX1NIT1JUIiwgRVJSX0xJQl9QRU0sIDEyNH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfUFZLX1RPT19TSE9SVAorICAgIHsiUFZLX1RPT19TSE9SVCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9QVktfVE9PX1NIT1JUfSwKKyAgI2Vsc2UKKyAgICB7IlBWS19UT09fU0hPUlQiLCBFUlJfTElCX1BFTSwgMTI1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9SRUFEX0tFWQorICAgIHsiUkVBRF9LRVkiLCBFUlJfTElCX1BFTSwgUEVNX1JfUkVBRF9LRVl9LAorICAjZWxzZQorICAgIHsiUkVBRF9LRVkiLCBFUlJfTElCX1BFTSwgMTExfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9TSE9SVF9IRUFERVIKKyAgICB7IlNIT1JUX0hFQURFUiIsIEVSUl9MSUJfUEVNLCBQRU1fUl9TSE9SVF9IRUFERVJ9LAorICAjZWxzZQorICAgIHsiU0hPUlRfSEVBREVSIiwgRVJSX0xJQl9QRU0sIDExMn0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfVU5TVVBQT1JURURfQ0lQSEVSCisgICAgeyJVTlNVUFBPUlRFRF9DSVBIRVIiLCBFUlJfTElCX1BFTSwgUEVNX1JfVU5TVVBQT1JURURfQ0lQSEVSfSwKKyAgI2Vsc2UKKyAgICB7IlVOU1VQUE9SVEVEX0NJUEhFUiIsIEVSUl9MSUJfUEVNLCAxMTN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX1VOU1VQUE9SVEVEX0VOQ1JZUFRJT04KKyAgICB7IlVOU1VQUE9SVEVEX0VOQ1JZUFRJT04iLCBFUlJfTElCX1BFTSwgUEVNX1JfVU5TVVBQT1JURURfRU5DUllQVElPTn0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9FTkNSWVBUSU9OIiwgRVJSX0xJQl9QRU0sIDExNH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfVU5TVVBQT1JURURfS0VZX0NPTVBPTkVOVFMKKyAgICB7IlVOU1VQUE9SVEVEX0tFWV9DT01QT05FTlRTIiwgRVJSX0xJQl9QRU0sIFBFTV9SX1VOU1VQUE9SVEVEX0tFWV9DT01QT05FTlRTfSwKKyAgI2Vsc2UKKyAgICB7IlVOU1VQUE9SVEVEX0tFWV9DT01QT05FTlRTIiwgRVJSX0xJQl9QRU0sIDEyNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQVBQX0RBVEFfSU5fSEFORFNIQUtFCisgICAgeyJBUFBfREFUQV9JTl9IQU5EU0hBS0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfQVBQX0RBVEFfSU5fSEFORFNIQUtFfSwKKyAgI2Vsc2UKKyAgICB7IkFQUF9EQVRBX0lOX0hBTkRTSEFLRSIsIEVSUl9MSUJfU1NMLCAxMDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0FUVEVNUFRfVE9fUkVVU0VfU0VTU0lPTl9JTl9ESUZGRVJFTlRfQ09OVEVYVAorICAgIHsiQVRURU1QVF9UT19SRVVTRV9TRVNTSU9OX0lOX0RJRkZFUkVOVF9DT05URVhUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0FUVEVNUFRfVE9fUkVVU0VfU0VTU0lPTl9JTl9ESUZGRVJFTlRfQ09OVEVYVH0sCisgICNlbHNlCisgICAgeyJBVFRFTVBUX1RPX1JFVVNFX1NFU1NJT05fSU5fRElGRkVSRU5UX0NPTlRFWFQiLCBFUlJfTElCX1NTTCwgMjcyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfQUxFUlRfUkVDT1JECisgICAgeyJCQURfQUxFUlRfUkVDT1JEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9BTEVSVF9SRUNPUkR9LAorICAjZWxzZQorICAgIHsiQkFEX0FMRVJUX1JFQ09SRCIsIEVSUl9MSUJfU1NMLCAxMDF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9BVVRIRU5USUNBVElPTl9UWVBFCisgICAgeyJCQURfQVVUSEVOVElDQVRJT05fVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfQVVUSEVOVElDQVRJT05fVFlQRX0sCisgICNlbHNlCisgICAgeyJCQURfQVVUSEVOVElDQVRJT05fVFlQRSIsIEVSUl9MSUJfU1NMLCAxMDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9DSEFOR0VfQ0lQSEVSX1NQRUMKKyAgICB7IkJBRF9DSEFOR0VfQ0lQSEVSX1NQRUMiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0NIQU5HRV9DSVBIRVJfU1BFQ30sCisgICNlbHNlCisgICAgeyJCQURfQ0hBTkdFX0NJUEhFUl9TUEVDIiwgRVJSX0xJQl9TU0wsIDEwM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0NIRUNLU1VNCisgICAgeyJCQURfQ0hFQ0tTVU0iLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0NIRUNLU1VNfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9DSEVDS1NVTSIsIEVSUl9MSUJfU1NMLCAxMDR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9EQVRBX1JFVFVSTkVEX0JZX0NBTExCQUNLCisgICAgeyJCQURfREFUQV9SRVRVUk5FRF9CWV9DQUxMQkFDSyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfREFUQV9SRVRVUk5FRF9CWV9DQUxMQkFDS30sCisgICNlbHNlCisgICAgeyJCQURfREFUQV9SRVRVUk5FRF9CWV9DQUxMQkFDSyIsIEVSUl9MSUJfU1NMLCAxMDZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9ERUNPTVBSRVNTSU9OCisgICAgeyJCQURfREVDT01QUkVTU0lPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfREVDT01QUkVTU0lPTn0sCisgICNlbHNlCisgICAgeyJCQURfREVDT01QUkVTU0lPTiIsIEVSUl9MSUJfU1NMLCAxMDd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9ESF9HX0xFTkdUSAorICAgIHsiQkFEX0RIX0dfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9ESF9HX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfREhfR19MRU5HVEgiLCBFUlJfTElCX1NTTCwgMTA4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfREhfUFVCX0tFWV9MRU5HVEgKKyAgICB7IkJBRF9ESF9QVUJfS0VZX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfREhfUFVCX0tFWV9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX0RIX1BVQl9LRVlfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDEwOX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0RIX1BfTEVOR1RICisgICAgeyJCQURfREhfUF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0RIX1BfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9ESF9QX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAxMTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9ESUdFU1RfTEVOR1RICisgICAgeyJCQURfRElHRVNUX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfRElHRVNUX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfRElHRVNUX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAxMTF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9EU0FfU0lHTkFUVVJFCisgICAgeyJCQURfRFNBX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfRFNBX1NJR05BVFVSRX0sCisgICNlbHNlCisgICAgeyJCQURfRFNBX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCAxMTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9FQ0NfQ0VSVAorICAgIHsiQkFEX0VDQ19DRVJUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9FQ0NfQ0VSVH0sCisgICNlbHNlCisgICAgeyJCQURfRUNDX0NFUlQiLCBFUlJfTElCX1NTTCwgMzA0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfRUNEU0FfU0lHTkFUVVJFCisgICAgeyJCQURfRUNEU0FfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9FQ0RTQV9TSUdOQVRVUkV9LAorICAjZWxzZQorICAgIHsiQkFEX0VDRFNBX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCAzMDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9FQ1BPSU5UCisgICAgeyJCQURfRUNQT0lOVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfRUNQT0lOVH0sCisgICNlbHNlCisgICAgeyJCQURfRUNQT0lOVCIsIEVSUl9MSUJfU1NMLCAzMDZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9IQU5EU0hBS0VfTEVOR1RICisgICAgeyJCQURfSEFORFNIQUtFX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfSEFORFNIQUtFX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfSEFORFNIQUtFX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAzMzJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9IRUxMT19SRVFVRVNUCisgICAgeyJCQURfSEVMTE9fUkVRVUVTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfSEVMTE9fUkVRVUVTVH0sCisgICNlbHNlCisgICAgeyJCQURfSEVMTE9fUkVRVUVTVCIsIEVSUl9MSUJfU1NMLCAxMDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9MRU5HVEgKKyAgICB7IkJBRF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDI3MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX01BQ19ERUNPREUKKyAgICB7IkJBRF9NQUNfREVDT0RFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9NQUNfREVDT0RFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9NQUNfREVDT0RFIiwgRVJSX0xJQl9TU0wsIDExM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX01BQ19MRU5HVEgKKyAgICB7IkJBRF9NQUNfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9NQUNfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9NQUNfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDMzM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX01FU1NBR0VfVFlQRQorICAgIHsiQkFEX01FU1NBR0VfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfTUVTU0FHRV9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9NRVNTQUdFX1RZUEUiLCBFUlJfTElCX1NTTCwgMTE0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUEFDS0VUX0xFTkdUSAorICAgIHsiQkFEX1BBQ0tFVF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1BBQ0tFVF9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX1BBQ0tFVF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMTE1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUFJPVE9DT0xfVkVSU0lPTl9OVU1CRVIKKyAgICB7IkJBRF9QUk9UT0NPTF9WRVJTSU9OX05VTUJFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfUFJPVE9DT0xfVkVSU0lPTl9OVU1CRVJ9LAorICAjZWxzZQorICAgIHsiQkFEX1BST1RPQ09MX1ZFUlNJT05fTlVNQkVSIiwgRVJSX0xJQl9TU0wsIDExNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1BTS19JREVOVElUWV9ISU5UX0xFTkdUSAorICAgIHsiQkFEX1BTS19JREVOVElUWV9ISU5UX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfUFNLX0lERU5USVRZX0hJTlRfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9QU0tfSURFTlRJVFlfSElOVF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMzE2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUkVTUE9OU0VfQVJHVU1FTlQKKyAgICB7IkJBRF9SRVNQT05TRV9BUkdVTUVOVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfUkVTUE9OU0VfQVJHVU1FTlR9LAorICAjZWxzZQorICAgIHsiQkFEX1JFU1BPTlNFX0FSR1VNRU5UIiwgRVJSX0xJQl9TU0wsIDExN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1JTQV9ERUNSWVBUCisgICAgeyJCQURfUlNBX0RFQ1JZUFQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1JTQV9ERUNSWVBUfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9SU0FfREVDUllQVCIsIEVSUl9MSUJfU1NMLCAxMTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9SU0FfRU5DUllQVAorICAgIHsiQkFEX1JTQV9FTkNSWVBUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9SU0FfRU5DUllQVH0sCisgICNlbHNlCisgICAgeyJCQURfUlNBX0VOQ1JZUFQiLCBFUlJfTElCX1NTTCwgMTE5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUlNBX0VfTEVOR1RICisgICAgeyJCQURfUlNBX0VfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9SU0FfRV9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX1JTQV9FX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAxMjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9SU0FfTU9EVUxVU19MRU5HVEgKKyAgICB7IkJBRF9SU0FfTU9EVUxVU19MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1JTQV9NT0RVTFVTX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfUlNBX01PRFVMVVNfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDEyMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1JTQV9TSUdOQVRVUkUKKyAgICB7IkJBRF9SU0FfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9SU0FfU0lHTkFUVVJFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9SU0FfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIDEyMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1NJR05BVFVSRQorICAgIHsiQkFEX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfU0lHTkFUVVJFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9TSUdOQVRVUkUiLCBFUlJfTElCX1NTTCwgMTIzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfU1NMX0ZJTEVUWVBFCisgICAgeyJCQURfU1NMX0ZJTEVUWVBFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9TU0xfRklMRVRZUEV9LAorICAjZWxzZQorICAgIHsiQkFEX1NTTF9GSUxFVFlQRSIsIEVSUl9MSUJfU1NMLCAxMjR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9TU0xfU0VTU0lPTl9JRF9MRU5HVEgKKyAgICB7IkJBRF9TU0xfU0VTU0lPTl9JRF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1NTTF9TRVNTSU9OX0lEX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfU1NMX1NFU1NJT05fSURfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDEyNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1NUQVRFCisgICAgeyJCQURfU1RBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1NUQVRFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9TVEFURSIsIEVSUl9MSUJfU1NMLCAxMjZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9XUklURV9SRVRSWQorICAgIHsiQkFEX1dSSVRFX1JFVFJZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9XUklURV9SRVRSWX0sCisgICNlbHNlCisgICAgeyJCQURfV1JJVEVfUkVUUlkiLCBFUlJfTElCX1NTTCwgMTI3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CSU9fTk9UX1NFVAorICAgIHsiQklPX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQklPX05PVF9TRVR9LAorICAjZWxzZQorICAgIHsiQklPX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgMTI4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CTE9DS19DSVBIRVJfUEFEX0lTX1dST05HCisgICAgeyJCTE9DS19DSVBIRVJfUEFEX0lTX1dST05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JMT0NLX0NJUEhFUl9QQURfSVNfV1JPTkd9LAorICAjZWxzZQorICAgIHsiQkxPQ0tfQ0lQSEVSX1BBRF9JU19XUk9ORyIsIEVSUl9MSUJfU1NMLCAxMjl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JOX0xJQgorICAgIHsiQk5fTElCIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JOX0xJQn0sCisgICNlbHNlCisgICAgeyJCTl9MSUIiLCBFUlJfTElCX1NTTCwgMTMwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DQV9ETl9MRU5HVEhfTUlTTUFUQ0gKKyAgICB7IkNBX0ROX0xFTkdUSF9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DQV9ETl9MRU5HVEhfTUlTTUFUQ0h9LAorICAjZWxzZQorICAgIHsiQ0FfRE5fTEVOR1RIX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIDEzMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0FfRE5fVE9PX0xPTkcKKyAgICB7IkNBX0ROX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NBX0ROX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IkNBX0ROX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDEzMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0NTX1JFQ0VJVkVEX0VBUkxZCisgICAgeyJDQ1NfUkVDRUlWRURfRUFSTFkiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ0NTX1JFQ0VJVkVEX0VBUkxZfSwKKyAgI2Vsc2UKKyAgICB7IkNDU19SRUNFSVZFRF9FQVJMWSIsIEVSUl9MSUJfU1NMLCAxMzN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NFUlRJRklDQVRFX1ZFUklGWV9GQUlMRUQKKyAgICB7IkNFUlRJRklDQVRFX1ZFUklGWV9GQUlMRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ0VSVElGSUNBVEVfVkVSSUZZX0ZBSUxFRH0sCisgICNlbHNlCisgICAgeyJDRVJUSUZJQ0FURV9WRVJJRllfRkFJTEVEIiwgRVJSX0xJQl9TU0wsIDEzNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0VSVF9MRU5HVEhfTUlTTUFUQ0gKKyAgICB7IkNFUlRfTEVOR1RIX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NFUlRfTEVOR1RIX01JU01BVENIfSwKKyAgI2Vsc2UKKyAgICB7IkNFUlRfTEVOR1RIX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIDEzNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0hBTExFTkdFX0lTX0RJRkZFUkVOVAorICAgIHsiQ0hBTExFTkdFX0lTX0RJRkZFUkVOVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DSEFMTEVOR0VfSVNfRElGRkVSRU5UfSwKKyAgI2Vsc2UKKyAgICB7IkNIQUxMRU5HRV9JU19ESUZGRVJFTlQiLCBFUlJfTElCX1NTTCwgMTM2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DSVBIRVJfQ09ERV9XUk9OR19MRU5HVEgKKyAgICB7IkNJUEhFUl9DT0RFX1dST05HX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DSVBIRVJfQ09ERV9XUk9OR19MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQ0lQSEVSX0NPREVfV1JPTkdfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDEzN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0lQSEVSX09SX0hBU0hfVU5BVkFJTEFCTEUKKyAgICB7IkNJUEhFUl9PUl9IQVNIX1VOQVZBSUxBQkxFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NJUEhFUl9PUl9IQVNIX1VOQVZBSUxBQkxFfSwKKyAgI2Vsc2UKKyAgICB7IkNJUEhFUl9PUl9IQVNIX1VOQVZBSUxBQkxFIiwgRVJSX0xJQl9TU0wsIDEzOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0lQSEVSX1RBQkxFX1NSQ19FUlJPUgorICAgIHsiQ0lQSEVSX1RBQkxFX1NSQ19FUlJPUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DSVBIRVJfVEFCTEVfU1JDX0VSUk9SfSwKKyAgI2Vsc2UKKyAgICB7IkNJUEhFUl9UQUJMRV9TUkNfRVJST1IiLCBFUlJfTElCX1NTTCwgMTM5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DTElFTlRIRUxMT19UTFNFWFQKKyAgICB7IkNMSUVOVEhFTExPX1RMU0VYVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DTElFTlRIRUxMT19UTFNFWFR9LAorICAjZWxzZQorICAgIHsiQ0xJRU5USEVMTE9fVExTRVhUIiwgRVJSX0xJQl9TU0wsIDIyNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ09NUFJFU1NFRF9MRU5HVEhfVE9PX0xPTkcKKyAgICB7IkNPTVBSRVNTRURfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NPTVBSRVNTRURfTEVOR1RIX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IkNPTVBSRVNTRURfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDE0MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ09NUFJFU1NJT05fRElTQUJMRUQKKyAgICB7IkNPTVBSRVNTSU9OX0RJU0FCTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NPTVBSRVNTSU9OX0RJU0FCTEVEfSwKKyAgI2Vsc2UKKyAgICB7IkNPTVBSRVNTSU9OX0RJU0FCTEVEIiwgRVJSX0xJQl9TU0wsIDM0M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ09NUFJFU1NJT05fRkFJTFVSRQorICAgIHsiQ09NUFJFU1NJT05fRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DT01QUkVTU0lPTl9GQUlMVVJFfSwKKyAgI2Vsc2UKKyAgICB7IkNPTVBSRVNTSU9OX0ZBSUxVUkUiLCBFUlJfTElCX1NTTCwgMTQxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DT01QUkVTU0lPTl9JRF9OT1RfV0lUSElOX1BSSVZBVEVfUkFOR0UKKyAgICB7IkNPTVBSRVNTSU9OX0lEX05PVF9XSVRISU5fUFJJVkFURV9SQU5HRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DT01QUkVTU0lPTl9JRF9OT1RfV0lUSElOX1BSSVZBVEVfUkFOR0V9LAorICAjZWxzZQorICAgIHsiQ09NUFJFU1NJT05fSURfTk9UX1dJVEhJTl9QUklWQVRFX1JBTkdFIiwgRVJSX0xJQl9TU0wsIDMwN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ09NUFJFU1NJT05fTElCUkFSWV9FUlJPUgorICAgIHsiQ09NUFJFU1NJT05fTElCUkFSWV9FUlJPUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DT01QUkVTU0lPTl9MSUJSQVJZX0VSUk9SfSwKKyAgI2Vsc2UKKyAgICB7IkNPTVBSRVNTSU9OX0xJQlJBUllfRVJST1IiLCBFUlJfTElCX1NTTCwgMTQyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DT05ORUNUSU9OX0lEX0lTX0RJRkZFUkVOVAorICAgIHsiQ09OTkVDVElPTl9JRF9JU19ESUZGRVJFTlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ09OTkVDVElPTl9JRF9JU19ESUZGRVJFTlR9LAorICAjZWxzZQorICAgIHsiQ09OTkVDVElPTl9JRF9JU19ESUZGRVJFTlQiLCBFUlJfTElCX1NTTCwgMTQzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DT05ORUNUSU9OX1RZUEVfTk9UX1NFVAorICAgIHsiQ09OTkVDVElPTl9UWVBFX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ09OTkVDVElPTl9UWVBFX05PVF9TRVR9LAorICAjZWxzZQorICAgIHsiQ09OTkVDVElPTl9UWVBFX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgMTQ0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DT09LSUVfTUlTTUFUQ0gKKyAgICB7IkNPT0tJRV9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DT09LSUVfTUlTTUFUQ0h9LAorICAjZWxzZQorICAgIHsiQ09PS0lFX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIDMwOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfREFUQV9CRVRXRUVOX0NDU19BTkRfRklOSVNIRUQKKyAgICB7IkRBVEFfQkVUV0VFTl9DQ1NfQU5EX0ZJTklTSEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RBVEFfQkVUV0VFTl9DQ1NfQU5EX0ZJTklTSEVEfSwKKyAgI2Vsc2UKKyAgICB7IkRBVEFfQkVUV0VFTl9DQ1NfQU5EX0ZJTklTSEVEIiwgRVJSX0xJQl9TU0wsIDE0NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfREFUQV9MRU5HVEhfVE9PX0xPTkcKKyAgICB7IkRBVEFfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RBVEFfTEVOR1RIX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IkRBVEFfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDE0Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfREVDUllQVElPTl9GQUlMRUQKKyAgICB7IkRFQ1JZUFRJT05fRkFJTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RFQ1JZUFRJT05fRkFJTEVEfSwKKyAgI2Vsc2UKKyAgICB7IkRFQ1JZUFRJT05fRkFJTEVEIiwgRVJSX0xJQl9TU0wsIDE0N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfREVDUllQVElPTl9GQUlMRURfT1JfQkFEX1JFQ09SRF9NQUMKKyAgICB7IkRFQ1JZUFRJT05fRkFJTEVEX09SX0JBRF9SRUNPUkRfTUFDIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RFQ1JZUFRJT05fRkFJTEVEX09SX0JBRF9SRUNPUkRfTUFDfSwKKyAgI2Vsc2UKKyAgICB7IkRFQ1JZUFRJT05fRkFJTEVEX09SX0JBRF9SRUNPUkRfTUFDIiwgRVJSX0xJQl9TU0wsIDI4MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfREhfUFVCTElDX1ZBTFVFX0xFTkdUSF9JU19XUk9ORworICAgIHsiREhfUFVCTElDX1ZBTFVFX0xFTkdUSF9JU19XUk9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9ESF9QVUJMSUNfVkFMVUVfTEVOR1RIX0lTX1dST05HfSwKKyAgI2Vsc2UKKyAgICB7IkRIX1BVQkxJQ19WQUxVRV9MRU5HVEhfSVNfV1JPTkciLCBFUlJfTElCX1NTTCwgMTQ4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9ESUdFU1RfQ0hFQ0tfRkFJTEVECisgICAgeyJESUdFU1RfQ0hFQ0tfRkFJTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RJR0VTVF9DSEVDS19GQUlMRUR9LAorICAjZWxzZQorICAgIHsiRElHRVNUX0NIRUNLX0ZBSUxFRCIsIEVSUl9MSUJfU1NMLCAxNDl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0RUTFNfTUVTU0FHRV9UT09fQklHCisgICAgeyJEVExTX01FU1NBR0VfVE9PX0JJRyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9EVExTX01FU1NBR0VfVE9PX0JJR30sCisgICNlbHNlCisgICAgeyJEVExTX01FU1NBR0VfVE9PX0JJRyIsIEVSUl9MSUJfU1NMLCAzMzR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0RVUExJQ0FURV9DT01QUkVTU0lPTl9JRAorICAgIHsiRFVQTElDQVRFX0NPTVBSRVNTSU9OX0lEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RVUExJQ0FURV9DT01QUkVTU0lPTl9JRH0sCisgICNlbHNlCisgICAgeyJEVVBMSUNBVEVfQ09NUFJFU1NJT05fSUQiLCBFUlJfTElCX1NTTCwgMzA5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9FQ0NfQ0VSVF9OT1RfRk9SX0tFWV9BR1JFRU1FTlQKKyAgICB7IkVDQ19DRVJUX05PVF9GT1JfS0VZX0FHUkVFTUVOVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FQ0NfQ0VSVF9OT1RfRk9SX0tFWV9BR1JFRU1FTlR9LAorICAjZWxzZQorICAgIHsiRUNDX0NFUlRfTk9UX0ZPUl9LRVlfQUdSRUVNRU5UIiwgRVJSX0xJQl9TU0wsIDMxN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRUNDX0NFUlRfTk9UX0ZPUl9TSUdOSU5HCisgICAgeyJFQ0NfQ0VSVF9OT1RfRk9SX1NJR05JTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfRUNDX0NFUlRfTk9UX0ZPUl9TSUdOSU5HfSwKKyAgI2Vsc2UKKyAgICB7IkVDQ19DRVJUX05PVF9GT1JfU0lHTklORyIsIEVSUl9MSUJfU1NMLCAzMTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0VDQ19DRVJUX1NIT1VMRF9IQVZFX1JTQV9TSUdOQVRVUkUKKyAgICB7IkVDQ19DRVJUX1NIT1VMRF9IQVZFX1JTQV9TSUdOQVRVUkUiLCBFUlJfTElCX1NTTCwgU1NMX1JfRUNDX0NFUlRfU0hPVUxEX0hBVkVfUlNBX1NJR05BVFVSRX0sCisgICNlbHNlCisgICAgeyJFQ0NfQ0VSVF9TSE9VTERfSEFWRV9SU0FfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIDMyMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRUNDX0NFUlRfU0hPVUxEX0hBVkVfU0hBMV9TSUdOQVRVUkUKKyAgICB7IkVDQ19DRVJUX1NIT1VMRF9IQVZFX1NIQTFfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0VDQ19DRVJUX1NIT1VMRF9IQVZFX1NIQTFfU0lHTkFUVVJFfSwKKyAgI2Vsc2UKKyAgICB7IkVDQ19DRVJUX1NIT1VMRF9IQVZFX1NIQTFfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIDMyM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRUNHUk9VUF9UT09fTEFSR0VfRk9SX0NJUEhFUgorICAgIHsiRUNHUk9VUF9UT09fTEFSR0VfRk9SX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FQ0dST1VQX1RPT19MQVJHRV9GT1JfQ0lQSEVSfSwKKyAgI2Vsc2UKKyAgICB7IkVDR1JPVVBfVE9PX0xBUkdFX0ZPUl9DSVBIRVIiLCBFUlJfTElCX1NTTCwgMzEwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9FTkNSWVBURURfTEVOR1RIX1RPT19MT05HCisgICAgeyJFTkNSWVBURURfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0VOQ1JZUFRFRF9MRU5HVEhfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiRU5DUllQVEVEX0xFTkdUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAxNTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0VSUk9SX0dFTkVSQVRJTkdfVE1QX1JTQV9LRVkKKyAgICB7IkVSUk9SX0dFTkVSQVRJTkdfVE1QX1JTQV9LRVkiLCBFUlJfTElCX1NTTCwgU1NMX1JfRVJST1JfR0VORVJBVElOR19UTVBfUlNBX0tFWX0sCisgICNlbHNlCisgICAgeyJFUlJPUl9HRU5FUkFUSU5HX1RNUF9SU0FfS0VZIiwgRVJSX0xJQl9TU0wsIDI4Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRVJST1JfSU5fUkVDRUlWRURfQ0lQSEVSX0xJU1QKKyAgICB7IkVSUk9SX0lOX1JFQ0VJVkVEX0NJUEhFUl9MSVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0VSUk9SX0lOX1JFQ0VJVkVEX0NJUEhFUl9MSVNUfSwKKyAgI2Vsc2UKKyAgICB7IkVSUk9SX0lOX1JFQ0VJVkVEX0NJUEhFUl9MSVNUIiwgRVJSX0xJQl9TU0wsIDE1MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRVhDRVNTSVZFX01FU1NBR0VfU0laRQorICAgIHsiRVhDRVNTSVZFX01FU1NBR0VfU0laRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FWENFU1NJVkVfTUVTU0FHRV9TSVpFfSwKKyAgI2Vsc2UKKyAgICB7IkVYQ0VTU0lWRV9NRVNTQUdFX1NJWkUiLCBFUlJfTElCX1NTTCwgMTUyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9FWFRSQV9EQVRBX0lOX01FU1NBR0UKKyAgICB7IkVYVFJBX0RBVEFfSU5fTUVTU0FHRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FWFRSQV9EQVRBX0lOX01FU1NBR0V9LAorICAjZWxzZQorICAgIHsiRVhUUkFfREFUQV9JTl9NRVNTQUdFIiwgRVJSX0xJQl9TU0wsIDE1M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfR09UX0FfRklOX0JFRk9SRV9BX0NDUworICAgIHsiR09UX0FfRklOX0JFRk9SRV9BX0NDUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9HT1RfQV9GSU5fQkVGT1JFX0FfQ0NTfSwKKyAgI2Vsc2UKKyAgICB7IkdPVF9BX0ZJTl9CRUZPUkVfQV9DQ1MiLCBFUlJfTElCX1NTTCwgMTU0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9IVFRQU19QUk9YWV9SRVFVRVNUCisgICAgeyJIVFRQU19QUk9YWV9SRVFVRVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0hUVFBTX1BST1hZX1JFUVVFU1R9LAorICAjZWxzZQorICAgIHsiSFRUUFNfUFJPWFlfUkVRVUVTVCIsIEVSUl9MSUJfU1NMLCAxNTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0hUVFBfUkVRVUVTVAorICAgIHsiSFRUUF9SRVFVRVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0hUVFBfUkVRVUVTVH0sCisgICNlbHNlCisgICAgeyJIVFRQX1JFUVVFU1QiLCBFUlJfTElCX1NTTCwgMTU2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9JTExFR0FMX1BBRERJTkcKKyAgICB7IklMTEVHQUxfUEFERElORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTExFR0FMX1BBRERJTkd9LAorICAjZWxzZQorICAgIHsiSUxMRUdBTF9QQURESU5HIiwgRVJSX0xJQl9TU0wsIDI4M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfSU5DT05TSVNURU5UX0NPTVBSRVNTSU9OCisgICAgeyJJTkNPTlNJU1RFTlRfQ09NUFJFU1NJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfSU5DT05TSVNURU5UX0NPTVBSRVNTSU9OfSwKKyAgI2Vsc2UKKyAgICB7IklOQ09OU0lTVEVOVF9DT01QUkVTU0lPTiIsIEVSUl9MSUJfU1NMLCAzNDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lOVkFMSURfQ0hBTExFTkdFX0xFTkdUSAorICAgIHsiSU5WQUxJRF9DSEFMTEVOR0VfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0lOVkFMSURfQ0hBTExFTkdFX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX0NIQUxMRU5HRV9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMTU4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9JTlZBTElEX0NPTU1BTkQKKyAgICB7IklOVkFMSURfQ09NTUFORCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTlZBTElEX0NPTU1BTkR9LAorICAjZWxzZQorICAgIHsiSU5WQUxJRF9DT01NQU5EIiwgRVJSX0xJQl9TU0wsIDI4MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfSU5WQUxJRF9DT01QUkVTU0lPTl9BTEdPUklUSE0KKyAgICB7IklOVkFMSURfQ09NUFJFU1NJT05fQUxHT1JJVEhNIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0lOVkFMSURfQ09NUFJFU1NJT05fQUxHT1JJVEhNfSwKKyAgI2Vsc2UKKyAgICB7IklOVkFMSURfQ09NUFJFU1NJT05fQUxHT1JJVEhNIiwgRVJSX0xJQl9TU0wsIDM0MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfSU5WQUxJRF9QVVJQT1NFCisgICAgeyJJTlZBTElEX1BVUlBPU0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfSU5WQUxJRF9QVVJQT1NFfSwKKyAgI2Vsc2UKKyAgICB7IklOVkFMSURfUFVSUE9TRSIsIEVSUl9MSUJfU1NMLCAyNzh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lOVkFMSURfU1RBVFVTX1JFU1BPTlNFCisgICAgeyJJTlZBTElEX1NUQVRVU19SRVNQT05TRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTlZBTElEX1NUQVRVU19SRVNQT05TRX0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX1NUQVRVU19SRVNQT05TRSIsIEVSUl9MSUJfU1NMLCAzMjh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lOVkFMSURfVElDS0VUX0tFWVNfTEVOR1RICisgICAgeyJJTlZBTElEX1RJQ0tFVF9LRVlTX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTlZBTElEX1RJQ0tFVF9LRVlTX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX1RJQ0tFVF9LRVlTX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAzMjV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lOVkFMSURfVFJVU1QKKyAgICB7IklOVkFMSURfVFJVU1QiLCBFUlJfTElCX1NTTCwgU1NMX1JfSU5WQUxJRF9UUlVTVH0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX1RSVVNUIiwgRVJSX0xJQl9TU0wsIDI3OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS0VZX0FSR19UT09fTE9ORworICAgIHsiS0VZX0FSR19UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LRVlfQVJHX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IktFWV9BUkdfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgMjg0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1CisgICAgeyJLUkI1IiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjV9LAorICAjZWxzZQorICAgIHsiS1JCNSIsIEVSUl9MSUJfU1NMLCAyODV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0tSQjVfQ19DQ19QUklOQworICAgIHsiS1JCNV9DX0NDX1BSSU5DIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfQ19DQ19QUklOQ30sCisgICNlbHNlCisgICAgeyJLUkI1X0NfQ0NfUFJJTkMiLCBFUlJfTElCX1NTTCwgMjg2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X0NfR0VUX0NSRUQKKyAgICB7IktSQjVfQ19HRVRfQ1JFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LUkI1X0NfR0VUX0NSRUR9LAorICAjZWxzZQorICAgIHsiS1JCNV9DX0dFVF9DUkVEIiwgRVJSX0xJQl9TU0wsIDI4N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS1JCNV9DX0lOSVQKKyAgICB7IktSQjVfQ19JTklUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfQ19JTklUfSwKKyAgI2Vsc2UKKyAgICB7IktSQjVfQ19JTklUIiwgRVJSX0xJQl9TU0wsIDI4OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS1JCNV9DX01LX1JFUQorICAgIHsiS1JCNV9DX01LX1JFUSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LUkI1X0NfTUtfUkVRfSwKKyAgI2Vsc2UKKyAgICB7IktSQjVfQ19NS19SRVEiLCBFUlJfTElCX1NTTCwgMjg5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfQkFEX1RJQ0tFVAorICAgIHsiS1JCNV9TX0JBRF9USUNLRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfS1JCNV9TX0JBRF9USUNLRVR9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX0JBRF9USUNLRVQiLCBFUlJfTElCX1NTTCwgMjkwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfSU5JVAorICAgIHsiS1JCNV9TX0lOSVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfS1JCNV9TX0lOSVR9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX0lOSVQiLCBFUlJfTElCX1NTTCwgMjkxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfUkRfUkVRCisgICAgeyJLUkI1X1NfUkRfUkVRIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfU19SRF9SRVF9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX1JEX1JFUSIsIEVSUl9MSUJfU1NMLCAyOTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0tSQjVfU19US1RfRVhQSVJFRAorICAgIHsiS1JCNV9TX1RLVF9FWFBJUkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfU19US1RfRVhQSVJFRH0sCisgICNlbHNlCisgICAgeyJLUkI1X1NfVEtUX0VYUElSRUQiLCBFUlJfTElCX1NTTCwgMjkzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfVEtUX05ZVgorICAgIHsiS1JCNV9TX1RLVF9OWVYiLCBFUlJfTElCX1NTTCwgU1NMX1JfS1JCNV9TX1RLVF9OWVZ9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX1RLVF9OWVYiLCBFUlJfTElCX1NTTCwgMjk0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfVEtUX1NLRVcKKyAgICB7IktSQjVfU19US1RfU0tFVyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LUkI1X1NfVEtUX1NLRVd9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX1RLVF9TS0VXIiwgRVJSX0xJQl9TU0wsIDI5NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTEVOR1RIX01JU01BVENICisgICAgeyJMRU5HVEhfTUlTTUFUQ0giLCBFUlJfTElCX1NTTCwgU1NMX1JfTEVOR1RIX01JU01BVENIfSwKKyAgI2Vsc2UKKyAgICB7IkxFTkdUSF9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCAxNTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0xFTkdUSF9UT09fU0hPUlQKKyAgICB7IkxFTkdUSF9UT09fU0hPUlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTEVOR1RIX1RPT19TSE9SVH0sCisgICNlbHNlCisgICAgeyJMRU5HVEhfVE9PX1NIT1JUIiwgRVJSX0xJQl9TU0wsIDE2MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTElCUkFSWV9CVUcKKyAgICB7IkxJQlJBUllfQlVHIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0xJQlJBUllfQlVHfSwKKyAgI2Vsc2UKKyAgICB7IkxJQlJBUllfQlVHIiwgRVJSX0xJQl9TU0wsIDI3NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTElCUkFSWV9IQVNfTk9fQ0lQSEVSUworICAgIHsiTElCUkFSWV9IQVNfTk9fQ0lQSEVSUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9MSUJSQVJZX0hBU19OT19DSVBIRVJTfSwKKyAgI2Vsc2UKKyAgICB7IkxJQlJBUllfSEFTX05PX0NJUEhFUlMiLCBFUlJfTElCX1NTTCwgMTYxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NRVNTQUdFX1RPT19MT05HCisgICAgeyJNRVNTQUdFX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01FU1NBR0VfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiTUVTU0FHRV9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAyOTZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfREhfRFNBX0NFUlQKKyAgICB7Ik1JU1NJTkdfREhfRFNBX0NFUlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19ESF9EU0FfQ0VSVH0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX0RIX0RTQV9DRVJUIiwgRVJSX0xJQl9TU0wsIDE2Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19ESF9LRVkKKyAgICB7Ik1JU1NJTkdfREhfS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfREhfS0VZfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfREhfS0VZIiwgRVJSX0xJQl9TU0wsIDE2M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19ESF9SU0FfQ0VSVAorICAgIHsiTUlTU0lOR19ESF9SU0FfQ0VSVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX0RIX1JTQV9DRVJUfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfREhfUlNBX0NFUlQiLCBFUlJfTElCX1NTTCwgMTY0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX0RTQV9TSUdOSU5HX0NFUlQKKyAgICB7Ik1JU1NJTkdfRFNBX1NJR05JTkdfQ0VSVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX0RTQV9TSUdOSU5HX0NFUlR9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19EU0FfU0lHTklOR19DRVJUIiwgRVJSX0xJQl9TU0wsIDE2NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19FWFBPUlRfVE1QX0RIX0tFWQorICAgIHsiTUlTU0lOR19FWFBPUlRfVE1QX0RIX0tFWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX0VYUE9SVF9UTVBfREhfS0VZfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfRVhQT1JUX1RNUF9ESF9LRVkiLCBFUlJfTElCX1NTTCwgMTY2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX0VYUE9SVF9UTVBfUlNBX0tFWQorICAgIHsiTUlTU0lOR19FWFBPUlRfVE1QX1JTQV9LRVkiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19FWFBPUlRfVE1QX1JTQV9LRVl9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19FWFBPUlRfVE1QX1JTQV9LRVkiLCBFUlJfTElCX1NTTCwgMTY3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX1JTQV9DRVJUSUZJQ0FURQorICAgIHsiTUlTU0lOR19SU0FfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19SU0FfQ0VSVElGSUNBVEV9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19SU0FfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgMTY4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX1JTQV9FTkNSWVBUSU5HX0NFUlQKKyAgICB7Ik1JU1NJTkdfUlNBX0VOQ1JZUFRJTkdfQ0VSVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX1JTQV9FTkNSWVBUSU5HX0NFUlR9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19SU0FfRU5DUllQVElOR19DRVJUIiwgRVJSX0xJQl9TU0wsIDE2OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19SU0FfU0lHTklOR19DRVJUCisgICAgeyJNSVNTSU5HX1JTQV9TSUdOSU5HX0NFUlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19SU0FfU0lHTklOR19DRVJUfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfUlNBX1NJR05JTkdfQ0VSVCIsIEVSUl9MSUJfU1NMLCAxNzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfVE1QX0RIX0tFWQorICAgIHsiTUlTU0lOR19UTVBfREhfS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfVE1QX0RIX0tFWX0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX1RNUF9ESF9LRVkiLCBFUlJfTElCX1NTTCwgMTcxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX1RNUF9FQ0RIX0tFWQorICAgIHsiTUlTU0lOR19UTVBfRUNESF9LRVkiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19UTVBfRUNESF9LRVl9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19UTVBfRUNESF9LRVkiLCBFUlJfTElCX1NTTCwgMzExfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX1RNUF9SU0FfS0VZCisgICAgeyJNSVNTSU5HX1RNUF9SU0FfS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfVE1QX1JTQV9LRVl9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19UTVBfUlNBX0tFWSIsIEVSUl9MSUJfU1NMLCAxNzJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfVE1QX1JTQV9QS0VZCisgICAgeyJNSVNTSU5HX1RNUF9SU0FfUEtFWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX1RNUF9SU0FfUEtFWX0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX1RNUF9SU0FfUEtFWSIsIEVSUl9MSUJfU1NMLCAxNzN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfVkVSSUZZX01FU1NBR0UKKyAgICB7Ik1JU1NJTkdfVkVSSUZZX01FU1NBR0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19WRVJJRllfTUVTU0FHRX0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX1ZFUklGWV9NRVNTQUdFIiwgRVJSX0xJQl9TU0wsIDE3NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9OX1NTTFYyX0lOSVRJQUxfUEFDS0VUCisgICAgeyJOT05fU1NMVjJfSU5JVElBTF9QQUNLRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9OX1NTTFYyX0lOSVRJQUxfUEFDS0VUfSwKKyAgI2Vsc2UKKyAgICB7Ik5PTl9TU0xWMl9JTklUSUFMX1BBQ0tFVCIsIEVSUl9MSUJfU1NMLCAxNzV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NFUlRJRklDQVRFU19SRVRVUk5FRAorICAgIHsiTk9fQ0VSVElGSUNBVEVTX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NFUlRJRklDQVRFU19SRVRVUk5FRH0sCisgICNlbHNlCisgICAgeyJOT19DRVJUSUZJQ0FURVNfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgMTc2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DRVJUSUZJQ0FURV9BU1NJR05FRAorICAgIHsiTk9fQ0VSVElGSUNBVEVfQVNTSUdORUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0VSVElGSUNBVEVfQVNTSUdORUR9LAorICAjZWxzZQorICAgIHsiTk9fQ0VSVElGSUNBVEVfQVNTSUdORUQiLCBFUlJfTElCX1NTTCwgMTc3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DRVJUSUZJQ0FURV9SRVRVUk5FRAorICAgIHsiTk9fQ0VSVElGSUNBVEVfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0VSVElGSUNBVEVfUkVUVVJORUR9LAorICAjZWxzZQorICAgIHsiTk9fQ0VSVElGSUNBVEVfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgMTc4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DRVJUSUZJQ0FURV9TRVQKKyAgICB7Ik5PX0NFUlRJRklDQVRFX1NFVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DRVJUSUZJQ0FURV9TRVR9LAorICAjZWxzZQorICAgIHsiTk9fQ0VSVElGSUNBVEVfU0VUIiwgRVJSX0xJQl9TU0wsIDE3OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ0VSVElGSUNBVEVfU1BFQ0lGSUVECisgICAgeyJOT19DRVJUSUZJQ0FURV9TUEVDSUZJRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0VSVElGSUNBVEVfU1BFQ0lGSUVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NFUlRJRklDQVRFX1NQRUNJRklFRCIsIEVSUl9MSUJfU1NMLCAxODB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NJUEhFUlNfQVZBSUxBQkxFCisgICAgeyJOT19DSVBIRVJTX0FWQUlMQUJMRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DSVBIRVJTX0FWQUlMQUJMRX0sCisgICNlbHNlCisgICAgeyJOT19DSVBIRVJTX0FWQUlMQUJMRSIsIEVSUl9MSUJfU1NMLCAxODF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NJUEhFUlNfUEFTU0VECisgICAgeyJOT19DSVBIRVJTX1BBU1NFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DSVBIRVJTX1BBU1NFRH0sCisgICNlbHNlCisgICAgeyJOT19DSVBIRVJTX1BBU1NFRCIsIEVSUl9MSUJfU1NMLCAxODJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NJUEhFUlNfU1BFQ0lGSUVECisgICAgeyJOT19DSVBIRVJTX1NQRUNJRklFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DSVBIRVJTX1NQRUNJRklFRH0sCisgICNlbHNlCisgICAgeyJOT19DSVBIRVJTX1NQRUNJRklFRCIsIEVSUl9MSUJfU1NMLCAxODN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NJUEhFUl9MSVNUCisgICAgeyJOT19DSVBIRVJfTElTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DSVBIRVJfTElTVH0sCisgICNlbHNlCisgICAgeyJOT19DSVBIRVJfTElTVCIsIEVSUl9MSUJfU1NMLCAxODR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NJUEhFUl9NQVRDSAorICAgIHsiTk9fQ0lQSEVSX01BVENIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NJUEhFUl9NQVRDSH0sCisgICNlbHNlCisgICAgeyJOT19DSVBIRVJfTUFUQ0giLCBFUlJfTElCX1NTTCwgMTg1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DTElFTlRfQ0VSVF9NRVRIT0QKKyAgICB7Ik5PX0NMSUVOVF9DRVJUX01FVEhPRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DTElFTlRfQ0VSVF9NRVRIT0R9LAorICAjZWxzZQorICAgIHsiTk9fQ0xJRU5UX0NFUlRfTUVUSE9EIiwgRVJSX0xJQl9TU0wsIDMzMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ0xJRU5UX0NFUlRfUkVDRUlWRUQKKyAgICB7Ik5PX0NMSUVOVF9DRVJUX1JFQ0VJVkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NMSUVOVF9DRVJUX1JFQ0VJVkVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NMSUVOVF9DRVJUX1JFQ0VJVkVEIiwgRVJSX0xJQl9TU0wsIDE4Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ09NUFJFU1NJT05fU1BFQ0lGSUVECisgICAgeyJOT19DT01QUkVTU0lPTl9TUEVDSUZJRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ09NUFJFU1NJT05fU1BFQ0lGSUVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NPTVBSRVNTSU9OX1NQRUNJRklFRCIsIEVSUl9MSUJfU1NMLCAxODd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0dPU1RfQ0VSVElGSUNBVEVfU0VOVF9CWV9QRUVSCisgICAgeyJOT19HT1NUX0NFUlRJRklDQVRFX1NFTlRfQllfUEVFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19HT1NUX0NFUlRJRklDQVRFX1NFTlRfQllfUEVFUn0sCisgICNlbHNlCisgICAgeyJOT19HT1NUX0NFUlRJRklDQVRFX1NFTlRfQllfUEVFUiIsIEVSUl9MSUJfU1NMLCAzMzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX01FVEhPRF9TUEVDSUZJRUQKKyAgICB7Ik5PX01FVEhPRF9TUEVDSUZJRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fTUVUSE9EX1NQRUNJRklFRH0sCisgICNlbHNlCisgICAgeyJOT19NRVRIT0RfU1BFQ0lGSUVEIiwgRVJSX0xJQl9TU0wsIDE4OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fUFJJVkFURUtFWQorICAgIHsiTk9fUFJJVkFURUtFWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19QUklWQVRFS0VZfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX1BSSVZBVEVLRVkiLCBFUlJfTElCX1NTTCwgMTg5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19QUklWQVRFX0tFWV9BU1NJR05FRAorICAgIHsiTk9fUFJJVkFURV9LRVlfQVNTSUdORUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fUFJJVkFURV9LRVlfQVNTSUdORUR9LAorICAjZWxzZQorICAgIHsiTk9fUFJJVkFURV9LRVlfQVNTSUdORUQiLCBFUlJfTElCX1NTTCwgMTkwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19QUk9UT0NPTFNfQVZBSUxBQkxFCisgICAgeyJOT19QUk9UT0NPTFNfQVZBSUxBQkxFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1BST1RPQ09MU19BVkFJTEFCTEV9LAorICAjZWxzZQorICAgIHsiTk9fUFJPVE9DT0xTX0FWQUlMQUJMRSIsIEVSUl9MSUJfU1NMLCAxOTF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX1BVQkxJQ0tFWQorICAgIHsiTk9fUFVCTElDS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1BVQkxJQ0tFWX0sCisgICNlbHNlCisgICAgeyJOT19QVUJMSUNLRVkiLCBFUlJfTElCX1NTTCwgMTkyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19SRU5FR09USUFUSU9OCisgICAgeyJOT19SRU5FR09USUFUSU9OIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1JFTkVHT1RJQVRJT059LAorICAjZWxzZQorICAgIHsiTk9fUkVORUdPVElBVElPTiIsIEVSUl9MSUJfU1NMLCAzMzl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX1JFUVVJUkVEX0RJR0VTVAorICAgIHsiTk9fUkVRVUlSRURfRElHRVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1JFUVVJUkVEX0RJR0VTVH0sCisgICNlbHNlCisgICAgeyJOT19SRVFVSVJFRF9ESUdFU1QiLCBFUlJfTElCX1NTTCwgMzI0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19TSEFSRURfQ0lQSEVSCisgICAgeyJOT19TSEFSRURfQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1NIQVJFRF9DSVBIRVJ9LAorICAjZWxzZQorICAgIHsiTk9fU0hBUkVEX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCAxOTN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX1ZFUklGWV9DQUxMQkFDSworICAgIHsiTk9fVkVSSUZZX0NBTExCQUNLIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1ZFUklGWV9DQUxMQkFDS30sCisgICNlbHNlCisgICAgeyJOT19WRVJJRllfQ0FMTEJBQ0siLCBFUlJfTElCX1NTTCwgMTk0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OVUxMX1NTTF9DVFgKKyAgICB7Ik5VTExfU1NMX0NUWCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OVUxMX1NTTF9DVFh9LAorICAjZWxzZQorICAgIHsiTlVMTF9TU0xfQ1RYIiwgRVJSX0xJQl9TU0wsIDE5NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTlVMTF9TU0xfTUVUSE9EX1BBU1NFRAorICAgIHsiTlVMTF9TU0xfTUVUSE9EX1BBU1NFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OVUxMX1NTTF9NRVRIT0RfUEFTU0VEfSwKKyAgI2Vsc2UKKyAgICB7Ik5VTExfU1NMX01FVEhPRF9QQVNTRUQiLCBFUlJfTElCX1NTTCwgMTk2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9PTERfU0VTU0lPTl9DSVBIRVJfTk9UX1JFVFVSTkVECisgICAgeyJPTERfU0VTU0lPTl9DSVBIRVJfTk9UX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX09MRF9TRVNTSU9OX0NJUEhFUl9OT1RfUkVUVVJORUR9LAorICAjZWxzZQorICAgIHsiT0xEX1NFU1NJT05fQ0lQSEVSX05PVF9SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCAxOTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX09MRF9TRVNTSU9OX0NPTVBSRVNTSU9OX0FMR09SSVRITV9OT1RfUkVUVVJORUQKKyAgICB7Ik9MRF9TRVNTSU9OX0NPTVBSRVNTSU9OX0FMR09SSVRITV9OT1RfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfT0xEX1NFU1NJT05fQ09NUFJFU1NJT05fQUxHT1JJVEhNX05PVF9SRVRVUk5FRH0sCisgICNlbHNlCisgICAgeyJPTERfU0VTU0lPTl9DT01QUkVTU0lPTl9BTEdPUklUSE1fTk9UX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIDM0NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfT05MWV9UTFNfQUxMT1dFRF9JTl9GSVBTX01PREUKKyAgICB7Ik9OTFlfVExTX0FMTE9XRURfSU5fRklQU19NT0RFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX09OTFlfVExTX0FMTE9XRURfSU5fRklQU19NT0RFfSwKKyAgI2Vsc2UKKyAgICB7Ik9OTFlfVExTX0FMTE9XRURfSU5fRklQU19NT0RFIiwgRVJSX0xJQl9TU0wsIDI5N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfT1BBUVVFX1BSRl9JTlBVVF9UT09fTE9ORworICAgIHsiT1BBUVVFX1BSRl9JTlBVVF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9PUEFRVUVfUFJGX0lOUFVUX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7Ik9QQVFVRV9QUkZfSU5QVVRfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgMzI3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QQUNLRVRfTEVOR1RIX1RPT19MT05HCisgICAgeyJQQUNLRVRfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BBQ0tFVF9MRU5HVEhfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiUEFDS0VUX0xFTkdUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAxOTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BBUlNFX1RMU0VYVAorICAgIHsiUEFSU0VfVExTRVhUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BBUlNFX1RMU0VYVH0sCisgICNlbHNlCisgICAgeyJQQVJTRV9UTFNFWFQiLCBFUlJfTElCX1NTTCwgMjI3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QQVRIX1RPT19MT05HCisgICAgeyJQQVRIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BBVEhfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiUEFUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAyNzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BFRVJfRElEX05PVF9SRVRVUk5fQV9DRVJUSUZJQ0FURQorICAgIHsiUEVFUl9ESURfTk9UX1JFVFVSTl9BX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BFRVJfRElEX05PVF9SRVRVUk5fQV9DRVJUSUZJQ0FURX0sCisgICNlbHNlCisgICAgeyJQRUVSX0RJRF9OT1RfUkVUVVJOX0FfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgMTk5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QRUVSX0VSUk9SCisgICAgeyJQRUVSX0VSUk9SIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BFRVJfRVJST1J9LAorICAjZWxzZQorICAgIHsiUEVFUl9FUlJPUiIsIEVSUl9MSUJfU1NMLCAyMDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BFRVJfRVJST1JfQ0VSVElGSUNBVEUKKyAgICB7IlBFRVJfRVJST1JfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfUEVFUl9FUlJPUl9DRVJUSUZJQ0FURX0sCisgICNlbHNlCisgICAgeyJQRUVSX0VSUk9SX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDIwMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUEVFUl9FUlJPUl9OT19DRVJUSUZJQ0FURQorICAgIHsiUEVFUl9FUlJPUl9OT19DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QRUVSX0VSUk9SX05PX0NFUlRJRklDQVRFfSwKKyAgI2Vsc2UKKyAgICB7IlBFRVJfRVJST1JfTk9fQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgMjAyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QRUVSX0VSUk9SX05PX0NJUEhFUgorICAgIHsiUEVFUl9FUlJPUl9OT19DSVBIRVIiLCBFUlJfTElCX1NTTCwgU1NMX1JfUEVFUl9FUlJPUl9OT19DSVBIRVJ9LAorICAjZWxzZQorICAgIHsiUEVFUl9FUlJPUl9OT19DSVBIRVIiLCBFUlJfTElCX1NTTCwgMjAzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QRUVSX0VSUk9SX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFX1RZUEUKKyAgICB7IlBFRVJfRVJST1JfVU5TVVBQT1JURURfQ0VSVElGSUNBVEVfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QRUVSX0VSUk9SX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFX1RZUEV9LAorICAjZWxzZQorICAgIHsiUEVFUl9FUlJPUl9VTlNVUFBPUlRFRF9DRVJUSUZJQ0FURV9UWVBFIiwgRVJSX0xJQl9TU0wsIDIwNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFJFX01BQ19MRU5HVEhfVE9PX0xPTkcKKyAgICB7IlBSRV9NQUNfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BSRV9NQUNfTEVOR1RIX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IlBSRV9NQUNfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDIwNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFJPQkxFTVNfTUFQUElOR19DSVBIRVJfRlVOQ1RJT05TCisgICAgeyJQUk9CTEVNU19NQVBQSU5HX0NJUEhFUl9GVU5DVElPTlMiLCBFUlJfTElCX1NTTCwgU1NMX1JfUFJPQkxFTVNfTUFQUElOR19DSVBIRVJfRlVOQ1RJT05TfSwKKyAgI2Vsc2UKKyAgICB7IlBST0JMRU1TX01BUFBJTkdfQ0lQSEVSX0ZVTkNUSU9OUyIsIEVSUl9MSUJfU1NMLCAyMDZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BST1RPQ09MX0lTX1NIVVRET1dOCisgICAgeyJQUk9UT0NPTF9JU19TSFVURE9XTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QUk9UT0NPTF9JU19TSFVURE9XTn0sCisgICNlbHNlCisgICAgeyJQUk9UT0NPTF9JU19TSFVURE9XTiIsIEVSUl9MSUJfU1NMLCAyMDd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BTS19JREVOVElUWV9OT1RfRk9VTkQKKyAgICB7IlBTS19JREVOVElUWV9OT1RfRk9VTkQiLCBFUlJfTElCX1NTTCwgU1NMX1JfUFNLX0lERU5USVRZX05PVF9GT1VORH0sCisgICNlbHNlCisgICAgeyJQU0tfSURFTlRJVFlfTk9UX0ZPVU5EIiwgRVJSX0xJQl9TU0wsIDIyM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFNLX05PX0NMSUVOVF9DQgorICAgIHsiUFNLX05PX0NMSUVOVF9DQiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QU0tfTk9fQ0xJRU5UX0NCfSwKKyAgI2Vsc2UKKyAgICB7IlBTS19OT19DTElFTlRfQ0IiLCBFUlJfTElCX1NTTCwgMjI0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QU0tfTk9fU0VSVkVSX0NCCisgICAgeyJQU0tfTk9fU0VSVkVSX0NCIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BTS19OT19TRVJWRVJfQ0J9LAorICAjZWxzZQorICAgIHsiUFNLX05PX1NFUlZFUl9DQiIsIEVSUl9MSUJfU1NMLCAyMjV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BVQkxJQ19LRVlfRU5DUllQVF9FUlJPUgorICAgIHsiUFVCTElDX0tFWV9FTkNSWVBUX0VSUk9SIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BVQkxJQ19LRVlfRU5DUllQVF9FUlJPUn0sCisgICNlbHNlCisgICAgeyJQVUJMSUNfS0VZX0VOQ1JZUFRfRVJST1IiLCBFUlJfTElCX1NTTCwgMjA4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QVUJMSUNfS0VZX0lTX05PVF9SU0EKKyAgICB7IlBVQkxJQ19LRVlfSVNfTk9UX1JTQSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QVUJMSUNfS0VZX0lTX05PVF9SU0F9LAorICAjZWxzZQorICAgIHsiUFVCTElDX0tFWV9JU19OT1RfUlNBIiwgRVJSX0xJQl9TU0wsIDIwOX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFVCTElDX0tFWV9OT1RfUlNBCisgICAgeyJQVUJMSUNfS0VZX05PVF9SU0EiLCBFUlJfTElCX1NTTCwgU1NMX1JfUFVCTElDX0tFWV9OT1RfUlNBfSwKKyAgI2Vsc2UKKyAgICB7IlBVQkxJQ19LRVlfTk9UX1JTQSIsIEVSUl9MSUJfU1NMLCAyMTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFQURfQklPX05PVF9TRVQKKyAgICB7IlJFQURfQklPX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVBRF9CSU9fTk9UX1NFVH0sCisgICNlbHNlCisgICAgeyJSRUFEX0JJT19OT1RfU0VUIiwgRVJSX0xJQl9TU0wsIDIxMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVBRF9USU1FT1VUX0VYUElSRUQKKyAgICB7IlJFQURfVElNRU9VVF9FWFBJUkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFQURfVElNRU9VVF9FWFBJUkVEfSwKKyAgI2Vsc2UKKyAgICB7IlJFQURfVElNRU9VVF9FWFBJUkVEIiwgRVJSX0xJQl9TU0wsIDMxMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVBRF9XUk9OR19QQUNLRVRfVFlQRQorICAgIHsiUkVBRF9XUk9OR19QQUNLRVRfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRUFEX1dST05HX1BBQ0tFVF9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlJFQURfV1JPTkdfUEFDS0VUX1RZUEUiLCBFUlJfTElCX1NTTCwgMjEyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRUNPUkRfTEVOR1RIX01JU01BVENICisgICAgeyJSRUNPUkRfTEVOR1RIX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFQ09SRF9MRU5HVEhfTUlTTUFUQ0h9LAorICAjZWxzZQorICAgIHsiUkVDT1JEX0xFTkdUSF9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCAyMTN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFQ09SRF9UT09fTEFSR0UKKyAgICB7IlJFQ09SRF9UT09fTEFSR0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVDT1JEX1RPT19MQVJHRX0sCisgICNlbHNlCisgICAgeyJSRUNPUkRfVE9PX0xBUkdFIiwgRVJSX0xJQl9TU0wsIDIxNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVDT1JEX1RPT19TTUFMTAorICAgIHsiUkVDT1JEX1RPT19TTUFMTCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRUNPUkRfVE9PX1NNQUxMfSwKKyAgI2Vsc2UKKyAgICB7IlJFQ09SRF9UT09fU01BTEwiLCBFUlJfTElCX1NTTCwgMjk4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRU5FR09USUFURV9FWFRfVE9PX0xPTkcKKyAgICB7IlJFTkVHT1RJQVRFX0VYVF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRU5FR09USUFURV9FWFRfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiUkVORUdPVElBVEVfRVhUX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDMzNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVORUdPVElBVElPTl9FTkNPRElOR19FUlIKKyAgICB7IlJFTkVHT1RJQVRJT05fRU5DT0RJTkdfRVJSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFTkVHT1RJQVRJT05fRU5DT0RJTkdfRVJSfSwKKyAgI2Vsc2UKKyAgICB7IlJFTkVHT1RJQVRJT05fRU5DT0RJTkdfRVJSIiwgRVJSX0xJQl9TU0wsIDMzNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVORUdPVElBVElPTl9NSVNNQVRDSAorICAgIHsiUkVORUdPVElBVElPTl9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRU5FR09USUFUSU9OX01JU01BVENIfSwKKyAgI2Vsc2UKKyAgICB7IlJFTkVHT1RJQVRJT05fTUlTTUFUQ0giLCBFUlJfTElCX1NTTCwgMzM3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRVFVSVJFRF9DSVBIRVJfTUlTU0lORworICAgIHsiUkVRVUlSRURfQ0lQSEVSX01JU1NJTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVRVUlSRURfQ0lQSEVSX01JU1NJTkd9LAorICAjZWxzZQorICAgIHsiUkVRVUlSRURfQ0lQSEVSX01JU1NJTkciLCBFUlJfTElCX1NTTCwgMjE1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRVFVSVJFRF9DT01QUkVTU1NJT05fQUxHT1JJVEhNX01JU1NJTkcKKyAgICB7IlJFUVVJUkVEX0NPTVBSRVNTU0lPTl9BTEdPUklUSE1fTUlTU0lORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRVFVSVJFRF9DT01QUkVTU1NJT05fQUxHT1JJVEhNX01JU1NJTkd9LAorICAjZWxzZQorICAgIHsiUkVRVUlSRURfQ09NUFJFU1NTSU9OX0FMR09SSVRITV9NSVNTSU5HIiwgRVJSX0xJQl9TU0wsIDM0Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVVU0VfQ0VSVF9MRU5HVEhfTk9UX1pFUk8KKyAgICB7IlJFVVNFX0NFUlRfTEVOR1RIX05PVF9aRVJPIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFVVNFX0NFUlRfTEVOR1RIX05PVF9aRVJPfSwKKyAgI2Vsc2UKKyAgICB7IlJFVVNFX0NFUlRfTEVOR1RIX05PVF9aRVJPIiwgRVJSX0xJQl9TU0wsIDIxNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVVU0VfQ0VSVF9UWVBFX05PVF9aRVJPCisgICAgeyJSRVVTRV9DRVJUX1RZUEVfTk9UX1pFUk8iLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVVU0VfQ0VSVF9UWVBFX05PVF9aRVJPfSwKKyAgI2Vsc2UKKyAgICB7IlJFVVNFX0NFUlRfVFlQRV9OT1RfWkVSTyIsIEVSUl9MSUJfU1NMLCAyMTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFVVNFX0NJUEhFUl9MSVNUX05PVF9aRVJPCisgICAgeyJSRVVTRV9DSVBIRVJfTElTVF9OT1RfWkVSTyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRVVTRV9DSVBIRVJfTElTVF9OT1RfWkVST30sCisgICNlbHNlCisgICAgeyJSRVVTRV9DSVBIRVJfTElTVF9OT1RfWkVSTyIsIEVSUl9MSUJfU1NMLCAyMTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NDU1ZfUkVDRUlWRURfV0hFTl9SRU5FR09USUFUSU5HCisgICAgeyJTQ1NWX1JFQ0VJVkVEX1dIRU5fUkVORUdPVElBVElORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TQ1NWX1JFQ0VJVkVEX1dIRU5fUkVORUdPVElBVElOR30sCisgICNlbHNlCisgICAgeyJTQ1NWX1JFQ0VJVkVEX1dIRU5fUkVORUdPVElBVElORyIsIEVSUl9MSUJfU1NMLCAzNDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NFUlZFUkhFTExPX1RMU0VYVAorICAgIHsiU0VSVkVSSEVMTE9fVExTRVhUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NFUlZFUkhFTExPX1RMU0VYVH0sCisgICNlbHNlCisgICAgeyJTRVJWRVJIRUxMT19UTFNFWFQiLCBFUlJfTElCX1NTTCwgMjc1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TRVNTSU9OX0lEX0NPTlRFWFRfVU5JTklUSUFMSVpFRAorICAgIHsiU0VTU0lPTl9JRF9DT05URVhUX1VOSU5JVElBTElaRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfU0VTU0lPTl9JRF9DT05URVhUX1VOSU5JVElBTElaRUR9LAorICAjZWxzZQorICAgIHsiU0VTU0lPTl9JRF9DT05URVhUX1VOSU5JVElBTElaRUQiLCBFUlJfTElCX1NTTCwgMjc3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TSE9SVF9SRUFECisgICAgeyJTSE9SVF9SRUFEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NIT1JUX1JFQUR9LAorICAjZWxzZQorICAgIHsiU0hPUlRfUkVBRCIsIEVSUl9MSUJfU1NMLCAyMTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NJR05BVFVSRV9GT1JfTk9OX1NJR05JTkdfQ0VSVElGSUNBVEUKKyAgICB7IlNJR05BVFVSRV9GT1JfTk9OX1NJR05JTkdfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfU0lHTkFUVVJFX0ZPUl9OT05fU0lHTklOR19DRVJUSUZJQ0FURX0sCisgICNlbHNlCisgICAgeyJTSUdOQVRVUkVfRk9SX05PTl9TSUdOSU5HX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDIyMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMMjNfRE9JTkdfU0VTU0lPTl9JRF9SRVVTRQorICAgIHsiU1NMMjNfRE9JTkdfU0VTU0lPTl9JRF9SRVVTRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0wyM19ET0lOR19TRVNTSU9OX0lEX1JFVVNFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTDIzX0RPSU5HX1NFU1NJT05fSURfUkVVU0UiLCBFUlJfTElCX1NTTCwgMjIxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0wyX0NPTk5FQ1RJT05fSURfVE9PX0xPTkcKKyAgICB7IlNTTDJfQ09OTkVDVElPTl9JRF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0wyX0NPTk5FQ1RJT05fSURfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiU1NMMl9DT05ORUNUSU9OX0lEX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDI5OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMM19FWFRfSU5WQUxJRF9FQ1BPSU5URk9STUFUCisgICAgeyJTU0wzX0VYVF9JTlZBTElEX0VDUE9JTlRGT1JNQVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMM19FWFRfSU5WQUxJRF9FQ1BPSU5URk9STUFUfSwKKyAgI2Vsc2UKKyAgICB7IlNTTDNfRVhUX0lOVkFMSURfRUNQT0lOVEZPUk1BVCIsIEVSUl9MSUJfU1NMLCAzMjF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTDNfRVhUX0lOVkFMSURfU0VSVkVSTkFNRQorICAgIHsiU1NMM19FWFRfSU5WQUxJRF9TRVJWRVJOQU1FIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTDNfRVhUX0lOVkFMSURfU0VSVkVSTkFNRX0sCisgICNlbHNlCisgICAgeyJTU0wzX0VYVF9JTlZBTElEX1NFUlZFUk5BTUUiLCBFUlJfTElCX1NTTCwgMzE5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0wzX0VYVF9JTlZBTElEX1NFUlZFUk5BTUVfVFlQRQorICAgIHsiU1NMM19FWFRfSU5WQUxJRF9TRVJWRVJOQU1FX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMM19FWFRfSU5WQUxJRF9TRVJWRVJOQU1FX1RZUEV9LAorICAjZWxzZQorICAgIHsiU1NMM19FWFRfSU5WQUxJRF9TRVJWRVJOQU1FX1RZUEUiLCBFUlJfTElCX1NTTCwgMzIwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0wzX1NFU1NJT05fSURfVE9PX0xPTkcKKyAgICB7IlNTTDNfU0VTU0lPTl9JRF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0wzX1NFU1NJT05fSURfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiU1NMM19TRVNTSU9OX0lEX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDMwMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMM19TRVNTSU9OX0lEX1RPT19TSE9SVAorICAgIHsiU1NMM19TRVNTSU9OX0lEX1RPT19TSE9SVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0wzX1NFU1NJT05fSURfVE9PX1NIT1JUfSwKKyAgI2Vsc2UKKyAgICB7IlNTTDNfU0VTU0lPTl9JRF9UT09fU0hPUlQiLCBFUlJfTElCX1NTTCwgMjIyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9CQURfQ0VSVElGSUNBVEUKKyAgICB7IlNTTFYzX0FMRVJUX0JBRF9DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9CQURfQ0VSVElGSUNBVEV9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfQkFEX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDEwNDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTFYzX0FMRVJUX0JBRF9SRUNPUkRfTUFDCisgICAgeyJTU0xWM19BTEVSVF9CQURfUkVDT1JEX01BQyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9CQURfUkVDT1JEX01BQ30sCisgICNlbHNlCisgICAgeyJTU0xWM19BTEVSVF9CQURfUkVDT1JEX01BQyIsIEVSUl9MSUJfU1NMLCAxMDIwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9FWFBJUkVECisgICAgeyJTU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9FWFBJUkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX0NFUlRJRklDQVRFX0VYUElSRUR9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfRVhQSVJFRCIsIEVSUl9MSUJfU1NMLCAxMDQ1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9SRVZPS0VECisgICAgeyJTU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9SRVZPS0VEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX0NFUlRJRklDQVRFX1JFVk9LRUR9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfUkVWT0tFRCIsIEVSUl9MSUJfU1NMLCAxMDQ0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9VTktOT1dOCisgICAgeyJTU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9VTktOT1dOIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX0NFUlRJRklDQVRFX1VOS05PV059LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfVU5LTk9XTiIsIEVSUl9MSUJfU1NMLCAxMDQ2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9ERUNPTVBSRVNTSU9OX0ZBSUxVUkUKKyAgICB7IlNTTFYzX0FMRVJUX0RFQ09NUFJFU1NJT05fRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9ERUNPTVBSRVNTSU9OX0ZBSUxVUkV9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfREVDT01QUkVTU0lPTl9GQUlMVVJFIiwgRVJSX0xJQl9TU0wsIDEwMzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTFYzX0FMRVJUX0hBTkRTSEFLRV9GQUlMVVJFCisgICAgeyJTU0xWM19BTEVSVF9IQU5EU0hBS0VfRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9IQU5EU0hBS0VfRkFJTFVSRX0sCisgICNlbHNlCisgICAgeyJTU0xWM19BTEVSVF9IQU5EU0hBS0VfRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCAxMDQwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9JTExFR0FMX1BBUkFNRVRFUgorICAgIHsiU1NMVjNfQUxFUlRfSUxMRUdBTF9QQVJBTUVURVIiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMVjNfQUxFUlRfSUxMRUdBTF9QQVJBTUVURVJ9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfSUxMRUdBTF9QQVJBTUVURVIiLCBFUlJfTElCX1NTTCwgMTA0N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMVjNfQUxFUlRfTk9fQ0VSVElGSUNBVEUKKyAgICB7IlNTTFYzX0FMRVJUX05PX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX05PX0NFUlRJRklDQVRFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTFYzX0FMRVJUX05PX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDEwNDF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTFYzX0FMRVJUX1VORVhQRUNURURfTUVTU0FHRQorICAgIHsiU1NMVjNfQUxFUlRfVU5FWFBFQ1RFRF9NRVNTQUdFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX1VORVhQRUNURURfTUVTU0FHRX0sCisgICNlbHNlCisgICAgeyJTU0xWM19BTEVSVF9VTkVYUEVDVEVEX01FU1NBR0UiLCBFUlJfTElCX1NTTCwgMTAxMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMVjNfQUxFUlRfVU5TVVBQT1JURURfQ0VSVElGSUNBVEUKKyAgICB7IlNTTFYzX0FMRVJUX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTFYzX0FMRVJUX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDEwNDN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9DVFhfSEFTX05PX0RFRkFVTFRfU1NMX1ZFUlNJT04KKyAgICB7IlNTTF9DVFhfSEFTX05PX0RFRkFVTFRfU1NMX1ZFUlNJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMX0NUWF9IQVNfTk9fREVGQVVMVF9TU0xfVkVSU0lPTn0sCisgICNlbHNlCisgICAgeyJTU0xfQ1RYX0hBU19OT19ERUZBVUxUX1NTTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIDIyOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMX0hBTkRTSEFLRV9GQUlMVVJFCisgICAgeyJTU0xfSEFORFNIQUtFX0ZBSUxVUkUiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMX0hBTkRTSEFLRV9GQUlMVVJFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTF9IQU5EU0hBS0VfRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCAyMjl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9MSUJSQVJZX0hBU19OT19DSVBIRVJTCisgICAgeyJTU0xfTElCUkFSWV9IQVNfTk9fQ0lQSEVSUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xfTElCUkFSWV9IQVNfTk9fQ0lQSEVSU30sCisgICNlbHNlCisgICAgeyJTU0xfTElCUkFSWV9IQVNfTk9fQ0lQSEVSUyIsIEVSUl9MSUJfU1NMLCAyMzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0NBTExCQUNLX0ZBSUxFRAorICAgIHsiU1NMX1NFU1NJT05fSURfQ0FMTEJBQ0tfRkFJTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0NBTExCQUNLX0ZBSUxFRH0sCisgICNlbHNlCisgICAgeyJTU0xfU0VTU0lPTl9JRF9DQUxMQkFDS19GQUlMRUQiLCBFUlJfTElCX1NTTCwgMzAxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xfU0VTU0lPTl9JRF9DT05GTElDVAorICAgIHsiU1NMX1NFU1NJT05fSURfQ09ORkxJQ1QiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMX1NFU1NJT05fSURfQ09ORkxJQ1R9LAorICAjZWxzZQorICAgIHsiU1NMX1NFU1NJT05fSURfQ09ORkxJQ1QiLCBFUlJfTElCX1NTTCwgMzAyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xfU0VTU0lPTl9JRF9DT05URVhUX1RPT19MT05HCisgICAgeyJTU0xfU0VTU0lPTl9JRF9DT05URVhUX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0NPTlRFWFRfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiU1NMX1NFU1NJT05fSURfQ09OVEVYVF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAyNzN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0hBU19CQURfTEVOR1RICisgICAgeyJTU0xfU0VTU0lPTl9JRF9IQVNfQkFEX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xfU0VTU0lPTl9JRF9IQVNfQkFEX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJTU0xfU0VTU0lPTl9JRF9IQVNfQkFEX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAzMDN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0lTX0RJRkZFUkVOVAorICAgIHsiU1NMX1NFU1NJT05fSURfSVNfRElGRkVSRU5UIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0lTX0RJRkZFUkVOVH0sCisgICNlbHNlCisgICAgeyJTU0xfU0VTU0lPTl9JRF9JU19ESUZGRVJFTlQiLCBFUlJfTElCX1NTTCwgMjMxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9BQ0NFU1NfREVOSUVECisgICAgeyJUTFNWMV9BTEVSVF9BQ0NFU1NfREVOSUVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX0FDQ0VTU19ERU5JRUR9LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfQUNDRVNTX0RFTklFRCIsIEVSUl9MSUJfU1NMLCAxMDQ5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9ERUNPREVfRVJST1IKKyAgICB7IlRMU1YxX0FMRVJUX0RFQ09ERV9FUlJPUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9ERUNPREVfRVJST1J9LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfREVDT0RFX0VSUk9SIiwgRVJSX0xJQl9TU0wsIDEwNTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX0RFQ1JZUFRJT05fRkFJTEVECisgICAgeyJUTFNWMV9BTEVSVF9ERUNSWVBUSU9OX0ZBSUxFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9ERUNSWVBUSU9OX0ZBSUxFRH0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9ERUNSWVBUSU9OX0ZBSUxFRCIsIEVSUl9MSUJfU1NMLCAxMDIxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9ERUNSWVBUX0VSUk9SCisgICAgeyJUTFNWMV9BTEVSVF9ERUNSWVBUX0VSUk9SIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX0RFQ1JZUFRfRVJST1J9LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfREVDUllQVF9FUlJPUiIsIEVSUl9MSUJfU1NMLCAxMDUxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9FWFBPUlRfUkVTVFJJQ1RJT04KKyAgICB7IlRMU1YxX0FMRVJUX0VYUE9SVF9SRVNUUklDVElPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9FWFBPUlRfUkVTVFJJQ1RJT059LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfRVhQT1JUX1JFU1RSSUNUSU9OIiwgRVJSX0xJQl9TU0wsIDEwNjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX0lOU1VGRklDSUVOVF9TRUNVUklUWQorICAgIHsiVExTVjFfQUxFUlRfSU5TVUZGSUNJRU5UX1NFQ1VSSVRZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX0lOU1VGRklDSUVOVF9TRUNVUklUWX0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9JTlNVRkZJQ0lFTlRfU0VDVVJJVFkiLCBFUlJfTElCX1NTTCwgMTA3MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfSU5URVJOQUxfRVJST1IKKyAgICB7IlRMU1YxX0FMRVJUX0lOVEVSTkFMX0VSUk9SIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX0lOVEVSTkFMX0VSUk9SfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX0lOVEVSTkFMX0VSUk9SIiwgRVJSX0xJQl9TU0wsIDEwODB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX05PX1JFTkVHT1RJQVRJT04KKyAgICB7IlRMU1YxX0FMRVJUX05PX1JFTkVHT1RJQVRJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQUxFUlRfTk9fUkVORUdPVElBVElPTn0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9OT19SRU5FR09USUFUSU9OIiwgRVJSX0xJQl9TU0wsIDExMDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX1BST1RPQ09MX1ZFUlNJT04KKyAgICB7IlRMU1YxX0FMRVJUX1BST1RPQ09MX1ZFUlNJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQUxFUlRfUFJPVE9DT0xfVkVSU0lPTn0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9QUk9UT0NPTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIDEwNzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX1JFQ09SRF9PVkVSRkxPVworICAgIHsiVExTVjFfQUxFUlRfUkVDT1JEX09WRVJGTE9XIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX1JFQ09SRF9PVkVSRkxPV30sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9SRUNPUkRfT1ZFUkZMT1ciLCBFUlJfTElCX1NTTCwgMTAyMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfVU5LTk9XTl9DQQorICAgIHsiVExTVjFfQUxFUlRfVU5LTk9XTl9DQSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9VTktOT1dOX0NBfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX1VOS05PV05fQ0EiLCBFUlJfTElCX1NTTCwgMTA0OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfVVNFUl9DQU5DRUxMRUQKKyAgICB7IlRMU1YxX0FMRVJUX1VTRVJfQ0FOQ0VMTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX1VTRVJfQ0FOQ0VMTEVEfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX1VTRVJfQ0FOQ0VMTEVEIiwgRVJSX0xJQl9TU0wsIDEwOTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0JBRF9DRVJUSUZJQ0FURV9IQVNIX1ZBTFVFCisgICAgeyJUTFNWMV9CQURfQ0VSVElGSUNBVEVfSEFTSF9WQUxVRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9CQURfQ0VSVElGSUNBVEVfSEFTSF9WQUxVRX0sCisgICNlbHNlCisgICAgeyJUTFNWMV9CQURfQ0VSVElGSUNBVEVfSEFTSF9WQUxVRSIsIEVSUl9MSUJfU1NMLCAxMTE0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9CQURfQ0VSVElGSUNBVEVfU1RBVFVTX1JFU1BPTlNFCisgICAgeyJUTFNWMV9CQURfQ0VSVElGSUNBVEVfU1RBVFVTX1JFU1BPTlNFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0JBRF9DRVJUSUZJQ0FURV9TVEFUVVNfUkVTUE9OU0V9LAorICAjZWxzZQorICAgIHsiVExTVjFfQkFEX0NFUlRJRklDQVRFX1NUQVRVU19SRVNQT05TRSIsIEVSUl9MSUJfU1NMLCAxMTEzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9DRVJUSUZJQ0FURV9VTk9CVEFJTkFCTEUKKyAgICB7IlRMU1YxX0NFUlRJRklDQVRFX1VOT0JUQUlOQUJMRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9DRVJUSUZJQ0FURV9VTk9CVEFJTkFCTEV9LAorICAjZWxzZQorICAgIHsiVExTVjFfQ0VSVElGSUNBVEVfVU5PQlRBSU5BQkxFIiwgRVJSX0xJQl9TU0wsIDExMTF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX1VOUkVDT0dOSVpFRF9OQU1FCisgICAgeyJUTFNWMV9VTlJFQ09HTklaRURfTkFNRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9VTlJFQ09HTklaRURfTkFNRX0sCisgICNlbHNlCisgICAgeyJUTFNWMV9VTlJFQ09HTklaRURfTkFNRSIsIEVSUl9MSUJfU1NMLCAxMTEyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9VTlNVUFBPUlRFRF9FWFRFTlNJT04KKyAgICB7IlRMU1YxX1VOU1VQUE9SVEVEX0VYVEVOU0lPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9VTlNVUFBPUlRFRF9FWFRFTlNJT059LAorICAjZWxzZQorICAgIHsiVExTVjFfVU5TVVBQT1JURURfRVhURU5TSU9OIiwgRVJSX0xJQl9TU0wsIDExMTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU19DTElFTlRfQ0VSVF9SRVFfV0lUSF9BTk9OX0NJUEhFUgorICAgIHsiVExTX0NMSUVOVF9DRVJUX1JFUV9XSVRIX0FOT05fQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU19DTElFTlRfQ0VSVF9SRVFfV0lUSF9BTk9OX0NJUEhFUn0sCisgICNlbHNlCisgICAgeyJUTFNfQ0xJRU5UX0NFUlRfUkVRX1dJVEhfQU5PTl9DSVBIRVIiLCBFUlJfTElCX1NTTCwgMjMyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNfSU5WQUxJRF9FQ1BPSU5URk9STUFUX0xJU1QKKyAgICB7IlRMU19JTlZBTElEX0VDUE9JTlRGT1JNQVRfTElTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNfSU5WQUxJRF9FQ1BPSU5URk9STUFUX0xJU1R9LAorICAjZWxzZQorICAgIHsiVExTX0lOVkFMSURfRUNQT0lOVEZPUk1BVF9MSVNUIiwgRVJSX0xJQl9TU0wsIDE1N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTX1BFRVJfRElEX05PVF9SRVNQT05EX1dJVEhfQ0VSVElGSUNBVEVfTElTVAorICAgIHsiVExTX1BFRVJfRElEX05PVF9SRVNQT05EX1dJVEhfQ0VSVElGSUNBVEVfTElTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNfUEVFUl9ESURfTk9UX1JFU1BPTkRfV0lUSF9DRVJUSUZJQ0FURV9MSVNUfSwKKyAgI2Vsc2UKKyAgICB7IlRMU19QRUVSX0RJRF9OT1RfUkVTUE9ORF9XSVRIX0NFUlRJRklDQVRFX0xJU1QiLCBFUlJfTElCX1NTTCwgMjMzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNfUlNBX0VOQ1JZUFRFRF9WQUxVRV9MRU5HVEhfSVNfV1JPTkcKKyAgICB7IlRMU19SU0FfRU5DUllQVEVEX1ZBTFVFX0xFTkdUSF9JU19XUk9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNfUlNBX0VOQ1JZUFRFRF9WQUxVRV9MRU5HVEhfSVNfV1JPTkd9LAorICAjZWxzZQorICAgIHsiVExTX1JTQV9FTkNSWVBURURfVkFMVUVfTEVOR1RIX0lTX1dST05HIiwgRVJSX0xJQl9TU0wsIDIzNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVFJJRURfVE9fVVNFX1VOU1VQUE9SVEVEX0NJUEhFUgorICAgIHsiVFJJRURfVE9fVVNFX1VOU1VQUE9SVEVEX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UUklFRF9UT19VU0VfVU5TVVBQT1JURURfQ0lQSEVSfSwKKyAgI2Vsc2UKKyAgICB7IlRSSUVEX1RPX1VTRV9VTlNVUFBPUlRFRF9DSVBIRVIiLCBFUlJfTElCX1NTTCwgMjM1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkFCTEVfVE9fREVDT0RFX0RIX0NFUlRTCisgICAgeyJVTkFCTEVfVE9fREVDT0RFX0RIX0NFUlRTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19ERUNPREVfREhfQ0VSVFN9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0RFQ09ERV9ESF9DRVJUUyIsIEVSUl9MSUJfU1NMLCAyMzZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19ERUNPREVfRUNESF9DRVJUUworICAgIHsiVU5BQkxFX1RPX0RFQ09ERV9FQ0RIX0NFUlRTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19ERUNPREVfRUNESF9DRVJUU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fREVDT0RFX0VDREhfQ0VSVFMiLCBFUlJfTElCX1NTTCwgMzEzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkFCTEVfVE9fRVhUUkFDVF9QVUJMSUNfS0VZCisgICAgeyJVTkFCTEVfVE9fRVhUUkFDVF9QVUJMSUNfS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19FWFRSQUNUX1BVQkxJQ19LRVl9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0VYVFJBQ1RfUFVCTElDX0tFWSIsIEVSUl9MSUJfU1NMLCAyMzd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19GSU5EX0RIX1BBUkFNRVRFUlMKKyAgICB7IlVOQUJMRV9UT19GSU5EX0RIX1BBUkFNRVRFUlMiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5BQkxFX1RPX0ZJTkRfREhfUEFSQU1FVEVSU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fRklORF9ESF9QQVJBTUVURVJTIiwgRVJSX0xJQl9TU0wsIDIzOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5BQkxFX1RPX0ZJTkRfRUNESF9QQVJBTUVURVJTCisgICAgeyJVTkFCTEVfVE9fRklORF9FQ0RIX1BBUkFNRVRFUlMiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5BQkxFX1RPX0ZJTkRfRUNESF9QQVJBTUVURVJTfSwKKyAgI2Vsc2UKKyAgICB7IlVOQUJMRV9UT19GSU5EX0VDREhfUEFSQU1FVEVSUyIsIEVSUl9MSUJfU1NMLCAzMTR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19GSU5EX1BVQkxJQ19LRVlfUEFSQU1FVEVSUworICAgIHsiVU5BQkxFX1RPX0ZJTkRfUFVCTElDX0tFWV9QQVJBTUVURVJTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19GSU5EX1BVQkxJQ19LRVlfUEFSQU1FVEVSU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fRklORF9QVUJMSUNfS0VZX1BBUkFNRVRFUlMiLCBFUlJfTElCX1NTTCwgMjM5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkFCTEVfVE9fRklORF9TU0xfTUVUSE9ECisgICAgeyJVTkFCTEVfVE9fRklORF9TU0xfTUVUSE9EIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19GSU5EX1NTTF9NRVRIT0R9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0ZJTkRfU1NMX01FVEhPRCIsIEVSUl9MSUJfU1NMLCAyNDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19MT0FEX1NTTDJfTUQ1X1JPVVRJTkVTCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wyX01ENV9ST1VUSU5FUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkFCTEVfVE9fTE9BRF9TU0wyX01ENV9ST1VUSU5FU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wyX01ENV9ST1VUSU5FUyIsIEVSUl9MSUJfU1NMLCAyNDF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19MT0FEX1NTTDNfTUQ1X1JPVVRJTkVTCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wzX01ENV9ST1VUSU5FUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkFCTEVfVE9fTE9BRF9TU0wzX01ENV9ST1VUSU5FU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wzX01ENV9ST1VUSU5FUyIsIEVSUl9MSUJfU1NMLCAyNDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19MT0FEX1NTTDNfU0hBMV9ST1VUSU5FUworICAgIHsiVU5BQkxFX1RPX0xPQURfU1NMM19TSEExX1JPVVRJTkVTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19MT0FEX1NTTDNfU0hBMV9ST1VUSU5FU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wzX1NIQTFfUk9VVElORVMiLCBFUlJfTElCX1NTTCwgMjQzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkVYUEVDVEVEX01FU1NBR0UKKyAgICB7IlVORVhQRUNURURfTUVTU0FHRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkVYUEVDVEVEX01FU1NBR0V9LAorICAjZWxzZQorICAgIHsiVU5FWFBFQ1RFRF9NRVNTQUdFIiwgRVJSX0xJQl9TU0wsIDI0NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5FWFBFQ1RFRF9SRUNPUkQKKyAgICB7IlVORVhQRUNURURfUkVDT1JEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VORVhQRUNURURfUkVDT1JEfSwKKyAgI2Vsc2UKKyAgICB7IlVORVhQRUNURURfUkVDT1JEIiwgRVJSX0xJQl9TU0wsIDI0NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5JTklUSUFMSVpFRAorICAgIHsiVU5JTklUSUFMSVpFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTklOSVRJQUxJWkVEfSwKKyAgI2Vsc2UKKyAgICB7IlVOSU5JVElBTElaRUQiLCBFUlJfTElCX1NTTCwgMjc2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX0FMRVJUX1RZUEUKKyAgICB7IlVOS05PV05fQUxFUlRfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX0FMRVJUX1RZUEV9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9BTEVSVF9UWVBFIiwgRVJSX0xJQl9TU0wsIDI0Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5LTk9XTl9DRVJUSUZJQ0FURV9UWVBFCisgICAgeyJVTktOT1dOX0NFUlRJRklDQVRFX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9DRVJUSUZJQ0FURV9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fQ0VSVElGSUNBVEVfVFlQRSIsIEVSUl9MSUJfU1NMLCAyNDd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOS05PV05fQ0lQSEVSX1JFVFVSTkVECisgICAgeyJVTktOT1dOX0NJUEhFUl9SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX0NJUEhFUl9SRVRVUk5FRH0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX0NJUEhFUl9SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCAyNDh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOS05PV05fQ0lQSEVSX1RZUEUKKyAgICB7IlVOS05PV05fQ0lQSEVSX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9DSVBIRVJfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX0NJUEhFUl9UWVBFIiwgRVJSX0xJQl9TU0wsIDI0OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5LTk9XTl9LRVlfRVhDSEFOR0VfVFlQRQorICAgIHsiVU5LTk9XTl9LRVlfRVhDSEFOR0VfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX0tFWV9FWENIQU5HRV9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fS0VZX0VYQ0hBTkdFX1RZUEUiLCBFUlJfTElCX1NTTCwgMjUwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX1BLRVlfVFlQRQorICAgIHsiVU5LTk9XTl9QS0VZX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9QS0VZX1RZUEV9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9QS0VZX1RZUEUiLCBFUlJfTElCX1NTTCwgMjUxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX1BST1RPQ09MCisgICAgeyJVTktOT1dOX1BST1RPQ09MIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOS05PV05fUFJPVE9DT0x9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9QUk9UT0NPTCIsIEVSUl9MSUJfU1NMLCAyNTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOS05PV05fUkVNT1RFX0VSUk9SX1RZUEUKKyAgICB7IlVOS05PV05fUkVNT1RFX0VSUk9SX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9SRU1PVEVfRVJST1JfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX1JFTU9URV9FUlJPUl9UWVBFIiwgRVJSX0xJQl9TU0wsIDI1M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5LTk9XTl9TU0xfVkVSU0lPTgorICAgIHsiVU5LTk9XTl9TU0xfVkVSU0lPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX1NTTF9WRVJTSU9OfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fU1NMX1ZFUlNJT04iLCBFUlJfTElCX1NTTCwgMjU0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX1NUQVRFCisgICAgeyJVTktOT1dOX1NUQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOS05PV05fU1RBVEV9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9TVEFURSIsIEVSUl9MSUJfU1NMLCAyNTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU0FGRV9MRUdBQ1lfUkVORUdPVElBVElPTl9ESVNBQkxFRAorICAgIHsiVU5TQUZFX0xFR0FDWV9SRU5FR09USUFUSU9OX0RJU0FCTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOU0FGRV9MRUdBQ1lfUkVORUdPVElBVElPTl9ESVNBQkxFRH0sCisgICNlbHNlCisgICAgeyJVTlNBRkVfTEVHQUNZX1JFTkVHT1RJQVRJT05fRElTQUJMRUQiLCBFUlJfTElCX1NTTCwgMzM4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTlNVUFBPUlRFRF9DSVBIRVIKKyAgICB7IlVOU1VQUE9SVEVEX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9DSVBIRVJ9LAorICAjZWxzZQorICAgIHsiVU5TVVBQT1JURURfQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIDI1Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5TVVBQT1JURURfQ09NUFJFU1NJT05fQUxHT1JJVEhNCisgICAgeyJVTlNVUFBPUlRFRF9DT01QUkVTU0lPTl9BTEdPUklUSE0iLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5TVVBQT1JURURfQ09NUFJFU1NJT05fQUxHT1JJVEhNfSwKKyAgI2Vsc2UKKyAgICB7IlVOU1VQUE9SVEVEX0NPTVBSRVNTSU9OX0FMR09SSVRITSIsIEVSUl9MSUJfU1NMLCAyNTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX0RJR0VTVF9UWVBFCisgICAgeyJVTlNVUFBPUlRFRF9ESUdFU1RfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9ESUdFU1RfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9ESUdFU1RfVFlQRSIsIEVSUl9MSUJfU1NMLCAzMjZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX0VMTElQVElDX0NVUlZFCisgICAgeyJVTlNVUFBPUlRFRF9FTExJUFRJQ19DVVJWRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9FTExJUFRJQ19DVVJWRX0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9FTExJUFRJQ19DVVJWRSIsIEVSUl9MSUJfU1NMLCAzMTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX1BST1RPQ09MCisgICAgeyJVTlNVUFBPUlRFRF9QUk9UT0NPTCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9QUk9UT0NPTH0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9QUk9UT0NPTCIsIEVSUl9MSUJfU1NMLCAyNTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX1NTTF9WRVJTSU9OCisgICAgeyJVTlNVUFBPUlRFRF9TU0xfVkVSU0lPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9TU0xfVkVSU0lPTn0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9TU0xfVkVSU0lPTiIsIEVSUl9MSUJfU1NMLCAyNTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX1NUQVRVU19UWVBFCisgICAgeyJVTlNVUFBPUlRFRF9TVEFUVVNfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9TVEFUVVNfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9TVEFUVVNfVFlQRSIsIEVSUl9MSUJfU1NMLCAzMjl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1dSSVRFX0JJT19OT1RfU0VUCisgICAgeyJXUklURV9CSU9fTk9UX1NFVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9XUklURV9CSU9fTk9UX1NFVH0sCisgICNlbHNlCisgICAgeyJXUklURV9CSU9fTk9UX1NFVCIsIEVSUl9MSUJfU1NMLCAyNjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1dST05HX0NJUEhFUl9SRVRVUk5FRAorICAgIHsiV1JPTkdfQ0lQSEVSX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1dST05HX0NJUEhFUl9SRVRVUk5FRH0sCisgICNlbHNlCisgICAgeyJXUk9OR19DSVBIRVJfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgMjYxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9XUk9OR19NRVNTQUdFX1RZUEUKKyAgICB7IldST05HX01FU1NBR0VfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9XUk9OR19NRVNTQUdFX1RZUEV9LAorICAjZWxzZQorICAgIHsiV1JPTkdfTUVTU0FHRV9UWVBFIiwgRVJSX0xJQl9TU0wsIDI2Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfV1JPTkdfTlVNQkVSX09GX0tFWV9CSVRTCisgICAgeyJXUk9OR19OVU1CRVJfT0ZfS0VZX0JJVFMiLCBFUlJfTElCX1NTTCwgU1NMX1JfV1JPTkdfTlVNQkVSX09GX0tFWV9CSVRTfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX05VTUJFUl9PRl9LRVlfQklUUyIsIEVSUl9MSUJfU1NMLCAyNjN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1dST05HX1NJR05BVFVSRV9MRU5HVEgKKyAgICB7IldST05HX1NJR05BVFVSRV9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfV1JPTkdfU0lHTkFUVVJFX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJXUk9OR19TSUdOQVRVUkVfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDI2NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfV1JPTkdfU0lHTkFUVVJFX1NJWkUKKyAgICB7IldST05HX1NJR05BVFVSRV9TSVpFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1dST05HX1NJR05BVFVSRV9TSVpFfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX1NJR05BVFVSRV9TSVpFIiwgRVJSX0xJQl9TU0wsIDI2NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfV1JPTkdfU1NMX1ZFUlNJT04KKyAgICB7IldST05HX1NTTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1dST05HX1NTTF9WRVJTSU9OfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX1NTTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIDI2Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfV1JPTkdfVkVSU0lPTl9OVU1CRVIKKyAgICB7IldST05HX1ZFUlNJT05fTlVNQkVSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1dST05HX1ZFUlNJT05fTlVNQkVSfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX1ZFUlNJT05fTlVNQkVSIiwgRVJSX0xJQl9TU0wsIDI2N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfWDUwOV9MSUIKKyAgICB7Ilg1MDlfTElCIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1g1MDlfTElCfSwKKyAgI2Vsc2UKKyAgICB7Ilg1MDlfTElCIiwgRVJSX0xJQl9TU0wsIDI2OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfWDUwOV9WRVJJRklDQVRJT05fU0VUVVBfUFJPQkxFTVMKKyAgICB7Ilg1MDlfVkVSSUZJQ0FUSU9OX1NFVFVQX1BST0JMRU1TIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1g1MDlfVkVSSUZJQ0FUSU9OX1NFVFVQX1BST0JMRU1TfSwKKyAgI2Vsc2UKKyAgICB7Ilg1MDlfVkVSSUZJQ0FUSU9OX1NFVFVQX1BST0JMRU1TIiwgRVJSX0xJQl9TU0wsIDI2OX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0JBRF9YNTA5X0ZJTEVUWVBFCisgICAgeyJCQURfWDUwOV9GSUxFVFlQRSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX0JBRF9YNTA5X0ZJTEVUWVBFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9YNTA5X0ZJTEVUWVBFIiwgRVJSX0xJQl9YNTA5LCAxMDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9CQVNFNjRfREVDT0RFX0VSUk9SCisgICAgeyJCQVNFNjRfREVDT0RFX0VSUk9SIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfQkFTRTY0X0RFQ09ERV9FUlJPUn0sCisgICNlbHNlCisgICAgeyJCQVNFNjRfREVDT0RFX0VSUk9SIiwgRVJSX0xJQl9YNTA5LCAxMTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9DQU5UX0NIRUNLX0RIX0tFWQorICAgIHsiQ0FOVF9DSEVDS19ESF9LRVkiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9DQU5UX0NIRUNLX0RIX0tFWX0sCisgICNlbHNlCisgICAgeyJDQU5UX0NIRUNLX0RIX0tFWSIsIEVSUl9MSUJfWDUwOSwgMTE0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfQ0VSVF9BTFJFQURZX0lOX0hBU0hfVEFCTEUKKyAgICB7IkNFUlRfQUxSRUFEWV9JTl9IQVNIX1RBQkxFIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfQ0VSVF9BTFJFQURZX0lOX0hBU0hfVEFCTEV9LAorICAjZWxzZQorICAgIHsiQ0VSVF9BTFJFQURZX0lOX0hBU0hfVEFCTEUiLCBFUlJfTElCX1g1MDksIDEwMX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0VSUl9BU04xX0xJQgorICAgIHsiRVJSX0FTTjFfTElCIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfRVJSX0FTTjFfTElCfSwKKyAgI2Vsc2UKKyAgICB7IkVSUl9BU04xX0xJQiIsIEVSUl9MSUJfWDUwOSwgMTAyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfSU5WQUxJRF9ESVJFQ1RPUlkKKyAgICB7IklOVkFMSURfRElSRUNUT1JZIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfSU5WQUxJRF9ESVJFQ1RPUll9LAorICAjZWxzZQorICAgIHsiSU5WQUxJRF9ESVJFQ1RPUlkiLCBFUlJfTElCX1g1MDksIDExM30sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0lOVkFMSURfRklFTERfTkFNRQorICAgIHsiSU5WQUxJRF9GSUVMRF9OQU1FIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfSU5WQUxJRF9GSUVMRF9OQU1FfSwKKyAgI2Vsc2UKKyAgICB7IklOVkFMSURfRklFTERfTkFNRSIsIEVSUl9MSUJfWDUwOSwgMTE5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfSU5WQUxJRF9UUlVTVAorICAgIHsiSU5WQUxJRF9UUlVTVCIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX0lOVkFMSURfVFJVU1R9LAorICAjZWxzZQorICAgIHsiSU5WQUxJRF9UUlVTVCIsIEVSUl9MSUJfWDUwOSwgMTIzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfS0VZX1RZUEVfTUlTTUFUQ0gKKyAgICB7IktFWV9UWVBFX01JU01BVENIIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfS0VZX1RZUEVfTUlTTUFUQ0h9LAorICAjZWxzZQorICAgIHsiS0VZX1RZUEVfTUlTTUFUQ0giLCBFUlJfTElCX1g1MDksIDExNX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0tFWV9WQUxVRVNfTUlTTUFUQ0gKKyAgICB7IktFWV9WQUxVRVNfTUlTTUFUQ0giLCBFUlJfTElCX1g1MDksIFg1MDlfUl9LRVlfVkFMVUVTX01JU01BVENIfSwKKyAgI2Vsc2UKKyAgICB7IktFWV9WQUxVRVNfTUlTTUFUQ0giLCBFUlJfTElCX1g1MDksIDExNn0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0xPQURJTkdfQ0VSVF9ESVIKKyAgICB7IkxPQURJTkdfQ0VSVF9ESVIiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9MT0FESU5HX0NFUlRfRElSfSwKKyAgI2Vsc2UKKyAgICB7IkxPQURJTkdfQ0VSVF9ESVIiLCBFUlJfTElCX1g1MDksIDEwM30sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0xPQURJTkdfREVGQVVMVFMKKyAgICB7IkxPQURJTkdfREVGQVVMVFMiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9MT0FESU5HX0RFRkFVTFRTfSwKKyAgI2Vsc2UKKyAgICB7IkxPQURJTkdfREVGQVVMVFMiLCBFUlJfTElCX1g1MDksIDEwNH0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX01FVEhPRF9OT1RfU1VQUE9SVEVECisgICAgeyJNRVRIT0RfTk9UX1NVUFBPUlRFRCIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX01FVEhPRF9OT1RfU1VQUE9SVEVEfSwKKyAgI2Vsc2UKKyAgICB7Ik1FVEhPRF9OT1RfU1VQUE9SVEVEIiwgRVJSX0xJQl9YNTA5LCAxMjR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9OT19DRVJUX1NFVF9GT1JfVVNfVE9fVkVSSUZZCisgICAgeyJOT19DRVJUX1NFVF9GT1JfVVNfVE9fVkVSSUZZIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfTk9fQ0VSVF9TRVRfRk9SX1VTX1RPX1ZFUklGWX0sCisgICNlbHNlCisgICAgeyJOT19DRVJUX1NFVF9GT1JfVVNfVE9fVkVSSUZZIiwgRVJSX0xJQl9YNTA5LCAxMDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9QVUJMSUNfS0VZX0RFQ09ERV9FUlJPUgorICAgIHsiUFVCTElDX0tFWV9ERUNPREVfRVJST1IiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9QVUJMSUNfS0VZX0RFQ09ERV9FUlJPUn0sCisgICNlbHNlCisgICAgeyJQVUJMSUNfS0VZX0RFQ09ERV9FUlJPUiIsIEVSUl9MSUJfWDUwOSwgMTI1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfUFVCTElDX0tFWV9FTkNPREVfRVJST1IKKyAgICB7IlBVQkxJQ19LRVlfRU5DT0RFX0VSUk9SIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfUFVCTElDX0tFWV9FTkNPREVfRVJST1J9LAorICAjZWxzZQorICAgIHsiUFVCTElDX0tFWV9FTkNPREVfRVJST1IiLCBFUlJfTElCX1g1MDksIDEyNn0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX1NIT1VMRF9SRVRSWQorICAgIHsiU0hPVUxEX1JFVFJZIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfU0hPVUxEX1JFVFJZfSwKKyAgI2Vsc2UKKyAgICB7IlNIT1VMRF9SRVRSWSIsIEVSUl9MSUJfWDUwOSwgMTA2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfVU5BQkxFX1RPX0ZJTkRfUEFSQU1FVEVSU19JTl9DSEFJTgorICAgIHsiVU5BQkxFX1RPX0ZJTkRfUEFSQU1FVEVSU19JTl9DSEFJTiIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1VOQUJMRV9UT19GSU5EX1BBUkFNRVRFUlNfSU5fQ0hBSU59LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0ZJTkRfUEFSQU1FVEVSU19JTl9DSEFJTiIsIEVSUl9MSUJfWDUwOSwgMTA3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfVU5BQkxFX1RPX0dFVF9DRVJUU19QVUJMSUNfS0VZCisgICAgeyJVTkFCTEVfVE9fR0VUX0NFUlRTX1BVQkxJQ19LRVkiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9VTkFCTEVfVE9fR0VUX0NFUlRTX1BVQkxJQ19LRVl9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0dFVF9DRVJUU19QVUJMSUNfS0VZIiwgRVJSX0xJQl9YNTA5LCAxMDh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9VTktOT1dOX0tFWV9UWVBFCisgICAgeyJVTktOT1dOX0tFWV9UWVBFIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfVU5LTk9XTl9LRVlfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX0tFWV9UWVBFIiwgRVJSX0xJQl9YNTA5LCAxMTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9VTktOT1dOX05JRAorICAgIHsiVU5LTk9XTl9OSUQiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9VTktOT1dOX05JRH0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX05JRCIsIEVSUl9MSUJfWDUwOSwgMTA5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfVU5LTk9XTl9QVVJQT1NFX0lECisgICAgeyJVTktOT1dOX1BVUlBPU0VfSUQiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9VTktOT1dOX1BVUlBPU0VfSUR9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9QVVJQT1NFX0lEIiwgRVJSX0xJQl9YNTA5LCAxMjF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9VTktOT1dOX1RSVVNUX0lECisgICAgeyJVTktOT1dOX1RSVVNUX0lEIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfVU5LTk9XTl9UUlVTVF9JRH0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX1RSVVNUX0lEIiwgRVJSX0xJQl9YNTA5LCAxMjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9VTlNVUFBPUlRFRF9BTEdPUklUSE0KKyAgICB7IlVOU1VQUE9SVEVEX0FMR09SSVRITSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1VOU1VQUE9SVEVEX0FMR09SSVRITX0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9BTEdPUklUSE0iLCBFUlJfTElCX1g1MDksIDExMX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX1dST05HX0xPT0tVUF9UWVBFCisgICAgeyJXUk9OR19MT09LVVBfVFlQRSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1dST05HX0xPT0tVUF9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX0xPT0tVUF9UWVBFIiwgRVJSX0xJQl9YNTA5LCAxMTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9XUk9OR19UWVBFCisgICAgeyJXUk9OR19UWVBFIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfV1JPTkdfVFlQRX0sCisgICNlbHNlCisgICAgeyJXUk9OR19UWVBFIiwgRVJSX0xJQl9YNTA5LCAxMjJ9LAorICAjZW5kaWYKKyAgICB7IE5VTEwgfQorfTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3N0cnVjdC5jIGIvTW9kdWxlcy9fc3RydWN0LmMKaW5kZXggM2YyMDUxOC4uMjg0ODYxNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3RydWN0LmMKKysrIGIvTW9kdWxlcy9fc3RydWN0LmMKQEAgLTU4LDYgKzU4LDcgQEAKIHR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBmbG9hdCB4OyB9IHN0X2Zsb2F0OwogdHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IGRvdWJsZSB4OyB9IHN0X2RvdWJsZTsKIHR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyB2b2lkICp4OyB9IHN0X3ZvaWRfcDsKK3R5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBzaXplX3QgeDsgfSBzdF9zaXplX3Q7CiAKICNkZWZpbmUgU0hPUlRfQUxJR04gKHNpemVvZihzdF9zaG9ydCkgLSBzaXplb2Yoc2hvcnQpKQogI2RlZmluZSBJTlRfQUxJR04gKHNpemVvZihzdF9pbnQpIC0gc2l6ZW9mKGludCkpCkBAIC02NSw2ICs2Niw3IEBACiAjZGVmaW5lIEZMT0FUX0FMSUdOIChzaXplb2Yoc3RfZmxvYXQpIC0gc2l6ZW9mKGZsb2F0KSkKICNkZWZpbmUgRE9VQkxFX0FMSUdOIChzaXplb2Yoc3RfZG91YmxlKSAtIHNpemVvZihkb3VibGUpKQogI2RlZmluZSBWT0lEX1BfQUxJR04gKHNpemVvZihzdF92b2lkX3ApIC0gc2l6ZW9mKHZvaWQgKikpCisjZGVmaW5lIFNJWkVfVF9BTElHTiAoc2l6ZW9mKHN0X3NpemVfdCkgLSBzaXplb2Yoc2l6ZV90KSkKIAogLyogV2UgY2FuJ3Qgc3VwcG9ydCBxIGFuZCBRIGluIG5hdGl2ZSBtb2RlIHVubGVzcyB0aGUgY29tcGlsZXIgZG9lczsKICAgIGluIHN0ZCBtb2RlLCB0aGV5J3JlIDggYnl0ZXMgb24gYWxsIHBsYXRmb3Jtcy4gKi8KQEAgLTIxMyw2ICsyMTUsNTIgQEAKIAogI2VuZGlmCiAKKy8qIFNhbWUsIGJ1dCBoYW5kbGluZyBQeV9zc2l6ZV90ICovCisKK3N0YXRpYyBpbnQKK2dldF9zc2l6ZV90KFB5T2JqZWN0ICp2LCBQeV9zc2l6ZV90ICpwKQoreworICAgIFB5X3NzaXplX3QgeDsKKworICAgIHYgPSBnZXRfcHlsb25nKHYpOworICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHYpKTsKKyAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh2KTsKKyAgICBQeV9ERUNSRUYodik7CisgICAgaWYgKHggPT0gKFB5X3NzaXplX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhTdHJ1Y3RFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgKnAgPSB4OworICAgIHJldHVybiAwOworfQorCisvKiBTYW1lLCBidXQgaGFuZGxpbmcgc2l6ZV90ICovCisKK3N0YXRpYyBpbnQKK2dldF9zaXplX3QoUHlPYmplY3QgKnYsIHNpemVfdCAqcCkKK3sKKyAgICBzaXplX3QgeDsKKworICAgIHYgPSBnZXRfcHlsb25nKHYpOworICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHYpKTsKKyAgICB4ID0gUHlMb25nX0FzU2l6ZV90KHYpOworICAgIFB5X0RFQ1JFRih2KTsKKyAgICBpZiAoeCA9PSAoc2l6ZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoU3RydWN0RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgICpwID0geDsKKyAgICByZXR1cm4gMDsKK30KKwogCiAjZGVmaW5lIFJBTkdFX0VSUk9SKHgsIGYsIGZsYWcsIG1hc2spIHJldHVybiBfcmFuZ2VfZXJyb3IoZiwgZmxhZykKIApAQCAtMzY5LDYgKzQxNywyMyBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyh4KTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK251X3NzaXplX3QoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQoreworICAgIFB5X3NzaXplX3QgeDsKKyAgICBtZW1jcHkoKGNoYXIgKikmeCwgcCwgc2l6ZW9mIHgpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoeCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitudV9zaXplX3QoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQoreworICAgIHNpemVfdCB4OworICAgIG1lbWNweSgoY2hhciAqKSZ4LCBwLCBzaXplb2YgeCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU2l6ZV90KHgpOworfQorCisKIC8qIE5hdGl2ZSBtb2RlIGRvZXNuJ3Qgc3VwcG9ydCBxIG9yIFEgdW5sZXNzIHRoZSBwbGF0Zm9ybSBDIHN1cHBvcnRzCiAgICBsb25nIGxvbmcgKG9yLCBvbiBXaW5kb3dzLCBfX2ludDY0KS4gKi8KIApAQCAtNTU4LDYgKzYyMywyNiBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50CitucF9zc2l6ZV90KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisgICAgUHlfc3NpemVfdCB4OworICAgIGlmIChnZXRfc3NpemVfdCh2LCAmeCkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgbWVtY3B5KHAsIChjaGFyICopJngsIHNpemVvZiB4KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorbnBfc2l6ZV90KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisgICAgc2l6ZV90IHg7CisgICAgaWYgKGdldF9zaXplX3QodiwgJngpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIG1lbWNweShwLCAoY2hhciAqKSZ4LCBzaXplb2YgeCk7CisgICAgcmV0dXJuIDA7Cit9CisKICNpZmRlZiBIQVZFX0xPTkdfTE9ORwogCiBzdGF0aWMgaW50CkBAIC02NTEsNiArNzM2LDggQEAKICAgICB7J0knLCAgICAgICBzaXplb2YoaW50KSwgICAgSU5UX0FMSUdOLCAgICAgIG51X3VpbnQsICAgICAgICBucF91aW50fSwKICAgICB7J2wnLCAgICAgICBzaXplb2YobG9uZyksICAgTE9OR19BTElHTiwgICAgIG51X2xvbmcsICAgICAgICBucF9sb25nfSwKICAgICB7J0wnLCAgICAgICBzaXplb2YobG9uZyksICAgTE9OR19BTElHTiwgICAgIG51X3Vsb25nLCAgICAgICBucF91bG9uZ30sCisgICAgeyduJywgICAgICAgc2l6ZW9mKHNpemVfdCksIFNJWkVfVF9BTElHTiwgICBudV9zc2l6ZV90LCAgICAgbnBfc3NpemVfdH0sCisgICAgeydOJywgICAgICAgc2l6ZW9mKHNpemVfdCksIFNJWkVfVF9BTElHTiwgICBudV9zaXplX3QsICAgICAgbnBfc2l6ZV90fSwKICNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgIHsncScsICAgICAgIHNpemVvZihQWV9MT05HX0xPTkcpLCBMT05HX0xPTkdfQUxJR04sIG51X2xvbmdsb25nLCBucF9sb25nbG9uZ30sCiAgICAgeydRJywgICAgICAgc2l6ZW9mKFBZX0xPTkdfTE9ORyksIExPTkdfTE9OR19BTElHTiwgbnVfdWxvbmdsb25nLG5wX3Vsb25nbG9uZ30sCkBAIC0xOTc0LDcgKzIwNjEsOCBAQAogICBsOmxvbmc7IEw6dW5zaWduZWQgbG9uZzsgZjpmbG9hdDsgZDpkb3VibGUuXG5cCiBTcGVjaWFsIGNhc2VzIChwcmVjZWRpbmcgZGVjaW1hbCBjb3VudCBpbmRpY2F0ZXMgbGVuZ3RoKTpcblwKICAgczpzdHJpbmcgKGFycmF5IG9mIGNoYXIpOyBwOiBwYXNjYWwgc3RyaW5nICh3aXRoIGNvdW50IGJ5dGUpLlxuXAotU3BlY2lhbCBjYXNlIChvbmx5IGF2YWlsYWJsZSBpbiBuYXRpdmUgZm9ybWF0KTpcblwKK1NwZWNpYWwgY2FzZXMgKG9ubHkgYXZhaWxhYmxlIGluIG5hdGl2ZSBmb3JtYXQpOlxuXAorICBuOnNzaXplX3Q7IE46c2l6ZV90O1xuXAogICBQOmFuIGludGVnZXIgdHlwZSB0aGF0IGlzIHdpZGUgZW5vdWdoIHRvIGhvbGQgYSBwb2ludGVyLlxuXAogU3BlY2lhbCBjYXNlIChub3QgaW4gbmF0aXZlIG1vZGUgdW5sZXNzICdsb25nIGxvbmcnIGluIHBsYXRmb3JtIEMpOlxuXAogICBxOmxvbmcgbG9uZzsgUTp1bnNpZ25lZCBsb25nIGxvbmdcblwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Rlc3RidWZmZXIuYyBiL01vZHVsZXMvX3Rlc3RidWZmZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTY2NjZlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fdGVzdGJ1ZmZlci5jCkBAIC0wLDAgKzEsMjg3NSBAQAorLyogQyBFeHRlbnNpb24gbW9kdWxlIHRvIHRlc3QgYWxsIGFzcGVjdHMgb2YgUEVQLTMxMTguCisgICBXcml0dGVuIGJ5IFN0ZWZhbiBLcmFoLiAqLworCisKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgorCisjaW5jbHVkZSAiUHl0aG9uLmgiCisKKworLyogc3RydWN0IG1vZHVsZSAqLworUHlPYmplY3QgKnN0cnVjdG1vZHVsZSA9IE5VTEw7CitQeU9iamVjdCAqU3RydWN0ID0gTlVMTDsKK1B5T2JqZWN0ICpjYWxjc2l6ZSA9IE5VTEw7CisKKy8qIGNhY2hlIHNpbXBsZSBmb3JtYXQgc3RyaW5nICovCitzdGF0aWMgY29uc3QgY2hhciAqc2ltcGxlX2ZtdCA9ICJCIjsKK1B5T2JqZWN0ICpzaW1wbGVfZm9ybWF0ID0gTlVMTDsKKyNkZWZpbmUgU0lNUExFX0ZPUk1BVChmbXQpIChmbXQgPT0gTlVMTCB8fCBzdHJjbXAoZm10LCAiQiIpID09IDApCisjZGVmaW5lIEZJWF9GT1JNQVQoZm10KSAoZm10ID09IE5VTEwgPyAiQiIgOiBmbXQpCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5EQXJyYXkgT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgUHlUeXBlT2JqZWN0IE5EQXJyYXlfVHlwZTsKKyNkZWZpbmUgTkRBcnJheV9DaGVjayh2KSAoUHlfVFlQRSh2KSA9PSAmTkRBcnJheV9UeXBlKQorCisjZGVmaW5lIENIRUNLX0xJU1RfT1JfVFVQTEUodikgXAorICAgIGlmICghUHlMaXN0X0NoZWNrKHYpICYmICFQeVR1cGxlX0NoZWNrKHYpKSB7IFwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgICAgICAgICBcCisgICAgICAgICAgICAjdiAiIG11c3QgYmUgYSBsaXN0IG9yIGEgdHVwbGUiKTsgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisKKyNkZWZpbmUgUHlNZW1fWEZyZWUodikgXAorICAgIGRvIHsgaWYgKHYpIFB5TWVtX0ZyZWUodik7IH0gd2hpbGUgKDApCisKKy8qIE1heGltdW0gbnVtYmVyIG9mIGRpbWVuc2lvbnMuICovCisjZGVmaW5lIE5EX01BWF9ORElNICgyICogUHlCVUZfTUFYX05ESU0pCisKKy8qIENoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2Ygc3Vib2Zmc2V0cyBpbiB0aGUgZmlyc3QgZGltZW5zaW9uLiAqLworI2RlZmluZSBIQVZFX1BUUihzdWJvZmZzZXRzKSAoc3Vib2Zmc2V0cyAmJiBzdWJvZmZzZXRzWzBdID49IDApCisvKiBBZGp1c3QgcHRyIGlmIHN1Ym9mZnNldHMgYXJlIHByZXNlbnQuICovCisjZGVmaW5lIEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzKSBcCisgICAgKEhBVkVfUFRSKHN1Ym9mZnNldHMpID8gKigoY2hhcioqKXB0cikgKyBzdWJvZmZzZXRzWzBdIDogcHRyKQorCisvKiBEZWZhdWx0OiBOdW1QeSBzdHlsZSAoc3RyaWRlcyksIHJlYWQtb25seSwgbm8gdmFyLWV4cG9ydCwgQy1zdHlsZSBsYXlvdXQgKi8KKyNkZWZpbmUgTkRfREVGQVVMVCAgICAgICAgICAweDAwMAorLyogVXNlciBjb25maWd1cmFibGUgZmxhZ3MgZm9yIHRoZSBuZGFycmF5ICovCisjZGVmaW5lIE5EX1ZBUkVYUE9SVCAgICAgICAgMHgwMDEgICAvKiBjaGFuZ2UgbGF5b3V0IHdoaWxlIGJ1ZmZlcnMgYXJlIGV4cG9ydGVkICovCisvKiBVc2VyIGNvbmZpZ3VyYWJsZSBmbGFncyBmb3IgZWFjaCBiYXNlIGJ1ZmZlciAqLworI2RlZmluZSBORF9XUklUQUJMRSAgICAgICAgIDB4MDAyICAgLyogbWFyayBiYXNlIGJ1ZmZlciBhcyB3cml0YWJsZSAqLworI2RlZmluZSBORF9GT1JUUkFOICAgICAgICAgIDB4MDA0ICAgLyogRm9ydHJhbiBjb250aWd1b3VzIGxheW91dCAqLworI2RlZmluZSBORF9TQ0FMQVIgICAgICAgICAgIDB4MDA4ICAgLyogc2NhbGFyOiBuZGltID0gMCAqLworI2RlZmluZSBORF9QSUwgICAgICAgICAgICAgIDB4MDEwICAgLyogY29udmVydCB0byBQSUwtc3R5bGUgYXJyYXkgKHN1Ym9mZnNldHMpICovCisjZGVmaW5lIE5EX1JFRElSRUNUICAgICAgICAgMHgwMjAgICAvKiByZWRpcmVjdCBidWZmZXIgcmVxdWVzdHMgKi8KKyNkZWZpbmUgTkRfR0VUQlVGX0ZBSUwgICAgICAweDA0MCAgIC8qIHRyaWdnZXIgZ2V0YnVmZmVyIGZhaWx1cmUgKi8KKyNkZWZpbmUgTkRfR0VUQlVGX1VOREVGSU5FRCAweDA4MCAgIC8qIHVuZGVmaW5lZCB2aWV3Lm9iaiAqLworLyogSW50ZXJuYWwgZmxhZ3MgZm9yIHRoZSBiYXNlIGJ1ZmZlciAqLworI2RlZmluZSBORF9DICAgICAgICAgICAgICAgIDB4MTAwICAgLyogQyBjb250aWd1b3VzIGxheW91dCAoZGVmYXVsdCkgKi8KKyNkZWZpbmUgTkRfT1dOX0FSUkFZUyAgICAgICAweDIwMCAgIC8qIGNvbnN1bWVyIG93bnMgYXJyYXlzICovCisKKy8qIG5kYXJyYXkgcHJvcGVydGllcyAqLworI2RlZmluZSBORF9JU19DT05TVU1FUihuZCkgXAorICAgICgoKE5EQXJyYXlPYmplY3QgKiluZCktPmhlYWQgPT0gJigoTkRBcnJheU9iamVjdCAqKW5kKS0+c3RhdGljYnVmKQorCisvKiBuZGJ1Zi0+ZmxhZ3MgcHJvcGVydGllcyAqLworI2RlZmluZSBORF9DX0NPTlRJR1VPVVMoZmxhZ3MpICghIShmbGFncyYoTkRfU0NBTEFSfE5EX0MpKSkKKyNkZWZpbmUgTkRfRk9SVFJBTl9DT05USUdVT1VTKGZsYWdzKSAoISEoZmxhZ3MmKE5EX1NDQUxBUnxORF9GT1JUUkFOKSkpCisjZGVmaW5lIE5EX0FOWV9DT05USUdVT1VTKGZsYWdzKSAoISEoZmxhZ3MmKE5EX1NDQUxBUnxORF9DfE5EX0ZPUlRSQU4pKSkKKworLyogZ2V0YnVmZmVyKCkgcmVxdWVzdHMgKi8KKyNkZWZpbmUgUkVRX0lORElSRUNUKGZsYWdzKSAoKGZsYWdzJlB5QlVGX0lORElSRUNUKSA9PSBQeUJVRl9JTkRJUkVDVCkKKyNkZWZpbmUgUkVRX0NfQ09OVElHVU9VUyhmbGFncykgKChmbGFncyZQeUJVRl9DX0NPTlRJR1VPVVMpID09IFB5QlVGX0NfQ09OVElHVU9VUykKKyNkZWZpbmUgUkVRX0ZfQ09OVElHVU9VUyhmbGFncykgKChmbGFncyZQeUJVRl9GX0NPTlRJR1VPVVMpID09IFB5QlVGX0ZfQ09OVElHVU9VUykKKyNkZWZpbmUgUkVRX0FOWV9DT05USUdVT1VTKGZsYWdzKSAoKGZsYWdzJlB5QlVGX0FOWV9DT05USUdVT1VTKSA9PSBQeUJVRl9BTllfQ09OVElHVU9VUykKKyNkZWZpbmUgUkVRX1NUUklERVMoZmxhZ3MpICgoZmxhZ3MmUHlCVUZfU1RSSURFUykgPT0gUHlCVUZfU1RSSURFUykKKyNkZWZpbmUgUkVRX1NIQVBFKGZsYWdzKSAoKGZsYWdzJlB5QlVGX05EKSA9PSBQeUJVRl9ORCkKKyNkZWZpbmUgUkVRX1dSSVRBQkxFKGZsYWdzKSAoZmxhZ3MmUHlCVUZfV1JJVEFCTEUpCisjZGVmaW5lIFJFUV9GT1JNQVQoZmxhZ3MpIChmbGFncyZQeUJVRl9GT1JNQVQpCisKKworLyogU2luZ2xlIG5vZGUgb2YgYSBsaXN0IG9mIGJhc2UgYnVmZmVycy4gVGhlIGxpc3QgaXMgbmVlZGVkIHRvIGltcGxlbWVudAorICAgY2hhbmdlcyBpbiBtZW1vcnkgbGF5b3V0IHdoaWxlIGV4cG9ydGVkIGJ1ZmZlcnMgYXJlIGFjdGl2ZS4gKi8KK3N0YXRpYyBQeVR5cGVPYmplY3QgTkRBcnJheV9UeXBlOworCitzdHJ1Y3QgbmRidWY7Cit0eXBlZGVmIHN0cnVjdCBuZGJ1ZiB7CisgICAgc3RydWN0IG5kYnVmICpuZXh0OworICAgIHN0cnVjdCBuZGJ1ZiAqcHJldjsKKyAgICBQeV9zc2l6ZV90IGxlbjsgICAgIC8qIGxlbmd0aCBvZiBkYXRhICovCisgICAgUHlfc3NpemVfdCBvZmZzZXQ7ICAvKiBzdGFydCBvZiB0aGUgYXJyYXkgcmVsYXRpdmUgdG8gZGF0YSAqLworICAgIGNoYXIgKmRhdGE7ICAgICAgICAgLyogcmF3IGRhdGEgKi8KKyAgICBpbnQgZmxhZ3M7ICAgICAgICAgIC8qIGNhcGFiaWxpdGllcyBvZiB0aGUgYmFzZSBidWZmZXIgKi8KKyAgICBQeV9zc2l6ZV90IGV4cG9ydHM7IC8qIG51bWJlciBvZiBleHBvcnRzICovCisgICAgUHlfYnVmZmVyIGJhc2U7ICAgICAvKiBiYXNlIGJ1ZmZlciAqLworfSBuZGJ1Zl90OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGludCBmbGFnczsgICAgICAgICAgLyogbmRhcnJheSBmbGFncyAqLworICAgIG5kYnVmX3Qgc3RhdGljYnVmOyAgLyogc3RhdGljIGJ1ZmZlciBmb3IgcmUtZXhwb3J0aW5nIG1vZGUgKi8KKyAgICBuZGJ1Zl90ICpoZWFkOyAgICAgIC8qIGN1cnJlbnRseSBhY3RpdmUgYmFzZSBidWZmZXIgKi8KK30gTkRBcnJheU9iamVjdDsKKworCitzdGF0aWMgbmRidWZfdCAqCituZGJ1Zl9uZXcoUHlfc3NpemVfdCBuaXRlbXMsIFB5X3NzaXplX3QgaXRlbXNpemUsIFB5X3NzaXplX3Qgb2Zmc2V0LCBpbnQgZmxhZ3MpCit7CisgICAgbmRidWZfdCAqbmRidWY7CisgICAgUHlfYnVmZmVyICpiYXNlOworICAgIFB5X3NzaXplX3QgbGVuOworCisgICAgbGVuID0gbml0ZW1zICogaXRlbXNpemU7CisgICAgaWYgKG9mZnNldCAlIGl0ZW1zaXplKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgIm9mZnNldCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgaXRlbXNpemUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCtpdGVtc2l6ZSA+IGxlbikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm9mZnNldCBvdXQgb2YgYm91bmRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG5kYnVmID0gUHlNZW1fTWFsbG9jKHNpemVvZiAqbmRidWYpOworICAgIGlmIChuZGJ1ZiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG5kYnVmLT5uZXh0ID0gTlVMTDsKKyAgICBuZGJ1Zi0+cHJldiA9IE5VTEw7CisgICAgbmRidWYtPmxlbiA9IGxlbjsKKyAgICBuZGJ1Zi0+b2Zmc2V0PSBvZmZzZXQ7CisKKyAgICBuZGJ1Zi0+ZGF0YSA9IFB5TWVtX01hbGxvYyhsZW4pOworICAgIGlmIChuZGJ1Zi0+ZGF0YSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIFB5TWVtX0ZyZWUobmRidWYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBuZGJ1Zi0+ZmxhZ3MgPSBmbGFnczsKKyAgICBuZGJ1Zi0+ZXhwb3J0cyA9IDA7CisKKyAgICBiYXNlID0gJm5kYnVmLT5iYXNlOworICAgIGJhc2UtPm9iaiA9IE5VTEw7CisgICAgYmFzZS0+YnVmID0gbmRidWYtPmRhdGE7CisgICAgYmFzZS0+bGVuID0gbGVuOworICAgIGJhc2UtPml0ZW1zaXplID0gMTsKKyAgICBiYXNlLT5yZWFkb25seSA9IDA7CisgICAgYmFzZS0+Zm9ybWF0ID0gTlVMTDsKKyAgICBiYXNlLT5uZGltID0gMTsKKyAgICBiYXNlLT5zaGFwZSA9IE5VTEw7CisgICAgYmFzZS0+c3RyaWRlcyA9IE5VTEw7CisgICAgYmFzZS0+c3Vib2Zmc2V0cyA9IE5VTEw7CisgICAgYmFzZS0+aW50ZXJuYWwgPSBuZGJ1ZjsKKworICAgIHJldHVybiBuZGJ1ZjsKK30KKworc3RhdGljIHZvaWQKK25kYnVmX2ZyZWUobmRidWZfdCAqbmRidWYpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kYnVmLT5iYXNlOworCisgICAgUHlNZW1fWEZyZWUobmRidWYtPmRhdGEpOworICAgIFB5TWVtX1hGcmVlKGJhc2UtPmZvcm1hdCk7CisgICAgUHlNZW1fWEZyZWUoYmFzZS0+c2hhcGUpOworICAgIFB5TWVtX1hGcmVlKGJhc2UtPnN0cmlkZXMpOworICAgIFB5TWVtX1hGcmVlKGJhc2UtPnN1Ym9mZnNldHMpOworCisgICAgUHlNZW1fRnJlZShuZGJ1Zik7Cit9CisKK3N0YXRpYyB2b2lkCituZGJ1Zl9wdXNoKE5EQXJyYXlPYmplY3QgKm5kLCBuZGJ1Zl90ICplbHQpCit7CisgICAgZWx0LT5uZXh0ID0gbmQtPmhlYWQ7CisgICAgaWYgKG5kLT5oZWFkKSBuZC0+aGVhZC0+cHJldiA9IGVsdDsKKyAgICBuZC0+aGVhZCA9IGVsdDsKKyAgICBlbHQtPnByZXYgPSBOVUxMOworfQorCitzdGF0aWMgdm9pZAorbmRidWZfZGVsZXRlKE5EQXJyYXlPYmplY3QgKm5kLCBuZGJ1Zl90ICplbHQpCit7CisgICAgaWYgKGVsdC0+cHJldikKKyAgICAgICAgZWx0LT5wcmV2LT5uZXh0ID0gZWx0LT5uZXh0OworICAgIGVsc2UKKyAgICAgICAgbmQtPmhlYWQgPSBlbHQtPm5leHQ7CisgICAgCisgICAgaWYgKGVsdC0+bmV4dCkKKyAgICAgICAgZWx0LT5uZXh0LT5wcmV2ID0gZWx0LT5wcmV2OworCisgICAgbmRidWZfZnJlZShlbHQpOworfQorCitzdGF0aWMgdm9pZAorbmRidWZfcG9wKE5EQXJyYXlPYmplY3QgKm5kKQoreworICAgIG5kYnVmX2RlbGV0ZShuZCwgbmQtPmhlYWQpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZDsKKworICAgIG5kID0gUHlPYmplY3RfTmV3KE5EQXJyYXlPYmplY3QsICZOREFycmF5X1R5cGUpOworICAgIGlmIChuZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG5kLT5mbGFncyA9IDA7CisgICAgbmQtPmhlYWQgPSBOVUxMOworICAgIHJldHVybiAoUHlPYmplY3QgKiluZDsKK30KKworc3RhdGljIHZvaWQKK25kYXJyYXlfZGVhbGxvYyhOREFycmF5T2JqZWN0ICpzZWxmKQoreworICAgIGlmIChzZWxmLT5oZWFkKSB7CisgICAgICAgIGlmIChORF9JU19DT05TVU1FUihzZWxmKSkgeworICAgICAgICAgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgICAgICAgICBpZiAoc2VsZi0+aGVhZC0+ZmxhZ3MgJiBORF9PV05fQVJSQVlTKSB7CisgICAgICAgICAgICAgICAgUHlNZW1fWEZyZWUoYmFzZS0+c2hhcGUpOworICAgICAgICAgICAgICAgIFB5TWVtX1hGcmVlKGJhc2UtPnN0cmlkZXMpOworICAgICAgICAgICAgICAgIFB5TWVtX1hGcmVlKGJhc2UtPnN1Ym9mZnNldHMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZShiYXNlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHdoaWxlIChzZWxmLT5oZWFkKQorICAgICAgICAgICAgICAgIG5kYnVmX3BvcChzZWxmKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKK3N0YXRpYyBpbnQKK25kYXJyYXlfaW5pdF9zdGF0aWNidWYoUHlPYmplY3QgKmV4cG9ydGVyLCBOREFycmF5T2JqZWN0ICpuZCwgaW50IGZsYWdzKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZuZC0+c3RhdGljYnVmLmJhc2U7CisKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGV4cG9ydGVyLCBiYXNlLCBmbGFncykgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBuZC0+aGVhZCA9ICZuZC0+c3RhdGljYnVmOworCisgICAgbmQtPmhlYWQtPm5leHQgPSBOVUxMOworICAgIG5kLT5oZWFkLT5wcmV2ID0gTlVMTDsKKyAgICBuZC0+aGVhZC0+bGVuID0gLTE7CisgICAgbmQtPmhlYWQtPm9mZnNldCA9IC0xOworICAgIG5kLT5oZWFkLT5kYXRhID0gTlVMTDsKKworICAgIG5kLT5oZWFkLT5mbGFncyA9IGJhc2UtPnJlYWRvbmx5ID8gMCA6IE5EX1dSSVRBQkxFOworICAgIG5kLT5oZWFkLT5leHBvcnRzID0gMDsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAoraW5pdF9mbGFncyhuZGJ1Zl90ICpuZGJ1ZikKK3sKKyAgICBpZiAobmRidWYtPmJhc2UubmRpbSA9PSAwKQorICAgICAgICBuZGJ1Zi0+ZmxhZ3MgfD0gTkRfU0NBTEFSOworICAgIGlmIChuZGJ1Zi0+YmFzZS5zdWJvZmZzZXRzKQorICAgICAgICBuZGJ1Zi0+ZmxhZ3MgfD0gTkRfUElMOworICAgIGlmIChQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoJm5kYnVmLT5iYXNlLCAnQycpKQorICAgICAgICBuZGJ1Zi0+ZmxhZ3MgfD0gTkRfQzsKKyAgICBpZiAoUHlCdWZmZXJfSXNDb250aWd1b3VzKCZuZGJ1Zi0+YmFzZSwgJ0YnKSkKKyAgICAgICAgbmRidWYtPmZsYWdzIHw9IE5EX0ZPUlRSQU47Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyL0xpc3QgY29udmVyc2lvbnMgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgUHlfc3NpemVfdCAqc3RyaWRlc19mcm9tX3NoYXBlKGNvbnN0IG5kYnVmX3QgKiwgaW50IGZsYWdzKTsKKworLyogR2V0IG51bWJlciBvZiBtZW1iZXJzIGluIGEgc3RydWN0OiBzZWUgaXNzdWUgIzEyNzQwICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5X3NzaXplX3Qgc19zaXplOworICAgIFB5X3NzaXplX3Qgc19sZW47Cit9IFB5UGFydGlhbFN0cnVjdE9iamVjdDsKKworc3RhdGljIFB5X3NzaXplX3QKK2dldF9ubWVtYihQeU9iamVjdCAqcykKK3sKKyAgICByZXR1cm4gKChQeVBhcnRpYWxTdHJ1Y3RPYmplY3QgKilzKS0+c19sZW47Cit9CisKKy8qIFBhY2sgYWxsIGl0ZW1zIGludG8gdGhlIGJ1ZmZlciBvZiAnb2JqJy4gVGhlICdmb3JtYXQnIHBhcmFtZXRlciBtdXN0IGJlCisgICBpbiBzdHJ1Y3QgbW9kdWxlIHN5bnRheC4gRm9yIHN0YW5kYXJkIEMgdHlwZXMsIGEgc2luZ2xlIGl0ZW0gaXMgYW4gaW50ZWdlci4KKyAgIEZvciBjb21wb3VuZCB0eXBlcywgYSBzaW5nbGUgaXRlbSBpcyBhIHR1cGxlIG9mIGludGVnZXJzLiAqLworc3RhdGljIGludAorcGFja19mcm9tX2xpc3QoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKml0ZW1zLCBQeU9iamVjdCAqZm9ybWF0LAorICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpdGVtc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqc3RydWN0b2JqLCAqcGFja19pbnRvOworICAgIFB5T2JqZWN0ICphcmdzLCAqb2Zmc2V0OworICAgIFB5T2JqZWN0ICppdGVtLCAqdG1wOworICAgIFB5X3NzaXplX3Qgbml0ZW1zOyAvKiBudW1iZXIgb2YgaXRlbXMgKi8KKyAgICBQeV9zc2l6ZV90IG5tZW1iOyAgLyogbnVtYmVyIG9mIG1lbWJlcnMgaW4gYSBzaW5nbGUgaXRlbSAqLworICAgIFB5X3NzaXplX3QgaSwgajsKKyAgICBpbnQgcmV0ID0gMDsKKworICAgIGFzc2VydChQeU9iamVjdF9DaGVja0J1ZmZlcihvYmopKTsKKyAgICBhc3NlcnQoUHlMaXN0X0NoZWNrKGl0ZW1zKSB8fCBQeVR1cGxlX0NoZWNrKGl0ZW1zKSk7CisKKyAgICBzdHJ1Y3RvYmogPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFN0cnVjdCwgZm9ybWF0LCBOVUxMKTsKKyAgICBpZiAoc3RydWN0b2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIG5pdGVtcyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShpdGVtcyk7CisgICAgbm1lbWIgPSBnZXRfbm1lbWIoc3RydWN0b2JqKTsKKyAgICBhc3NlcnQobm1lbWIgPj0gMSk7CisKKyAgICBwYWNrX2ludG8gPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHN0cnVjdG9iaiwgInBhY2tfaW50byIpOworICAgIGlmIChwYWNrX2ludG8gPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoc3RydWN0b2JqKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIG5tZW1iID49IDEgKi8KKyAgICBhcmdzID0gUHlUdXBsZV9OZXcoMiArIG5tZW1iKTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihwYWNrX2ludG8pOworICAgICAgICBQeV9ERUNSRUYoc3RydWN0b2JqKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIG9mZnNldCA9IE5VTEw7CisgICAgZm9yIChpID0gMDsgaSA8IG5pdGVtczsgaSsrKSB7CisgICAgICAgIC8qIExvb3AgaW52YXJpYW50OiBhcmdzW2pdIGFyZSBib3Jyb3dlZCByZWZlcmVuY2VzIG9yIE5VTEwuICovCisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgb2JqKTsKKyAgICAgICAgZm9yIChqID0gMTsgaiA8IDIrbm1lbWI7IGorKykKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgaiwgTlVMTCk7CisKKyAgICAgICAgUHlfWERFQ1JFRihvZmZzZXQpOworICAgICAgICBvZmZzZXQgPSBQeUxvbmdfRnJvbVNzaXplX3QoaSppdGVtc2l6ZSk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0ID0gLTE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDEsIG9mZnNldCk7CisKKyAgICAgICAgaXRlbSA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShpdGVtcywgaSk7CisgICAgICAgIGlmICgoUHlCeXRlc19DaGVjayhpdGVtKSB8fCBQeUxvbmdfQ2hlY2soaXRlbSkgfHwKKyAgICAgICAgICAgICBQeUZsb2F0X0NoZWNrKGl0ZW0pKSAmJiBubWVtYiA9PSAxKSB7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDIsIGl0ZW0pOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKChQeUxpc3RfQ2hlY2soaXRlbSkgfHwgUHlUdXBsZV9DaGVjayhpdGVtKSkgJiYKKyAgICAgICAgICAgICAgICAgUHlTZXF1ZW5jZV9MZW5ndGgoaXRlbSkgPT0gbm1lbWIpIHsKKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBubWVtYjsgaisrKSB7CisgICAgICAgICAgICAgICAgdG1wID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGl0ZW0sIGopOworICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMitqLCB0bXApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1pc21hdGNoIGJldHdlZW4gaW5pdGlhbGl6ZXIgZWxlbWVudCBhbmQgZm9ybWF0IHN0cmluZyIpOworICAgICAgICAgICAgcmV0ID0gLTE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxPYmplY3QocGFja19pbnRvLCBhcmdzKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXQgPSAtMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgIH0KKworICAgIFB5X0lOQ1JFRihvYmopOyAvKiBhcmdzWzBdICovCisgICAgLyogYXJnc1sxXTogb2Zmc2V0IGlzIGVpdGhlciBOVUxMIG9yIHNob3VsZCBiZSBkZWFsbG9jJ2QgKi8KKyAgICBmb3IgKGkgPSAyOyBpIDwgMitubWVtYjsgaSsrKSB7CisgICAgICAgIHRtcCA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CisgICAgICAgIFB5X1hJTkNSRUYodG1wKTsKKyAgICB9CisgICAgUHlfREVDUkVGKGFyZ3MpOworCisgICAgUHlfREVDUkVGKHBhY2tfaW50byk7CisgICAgUHlfREVDUkVGKHN0cnVjdG9iaik7CisgICAgcmV0dXJuIHJldDsKKworfQorCisvKiBQYWNrIHNpbmdsZSBlbGVtZW50ICovCitzdGF0aWMgaW50CitwYWNrX3NpbmdsZShjaGFyICpwdHIsIFB5T2JqZWN0ICppdGVtLCBjb25zdCBjaGFyICpmbXQsIFB5X3NzaXplX3QgaXRlbXNpemUpCit7CisgICAgUHlPYmplY3QgKnN0cnVjdG9iaiA9IE5VTEwsICpwYWNrX2ludG8gPSBOVUxMLCAqYXJncyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZvcm1hdCA9IE5VTEwsICptdmlldyA9IE5VTEwsICp6ZXJvID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGksIG5tZW1iOworICAgIGludCByZXQgPSAtMTsKKyAgICBQeU9iamVjdCAqeDsKKworICAgIGlmIChmbXQgPT0gTlVMTCkgZm10ID0gIkIiOworCisgICAgZm9ybWF0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoZm10KTsKKyAgICBpZiAoZm9ybWF0ID09IE5VTEwpCisgICAgICAgIGdvdG8gb3V0OworCisgICAgc3RydWN0b2JqID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhTdHJ1Y3QsIGZvcm1hdCwgTlVMTCk7CisgICAgaWYgKHN0cnVjdG9iaiA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIG5tZW1iID0gZ2V0X25tZW1iKHN0cnVjdG9iaik7CisgICAgYXNzZXJ0KG5tZW1iID49IDEpOworCisgICAgbXZpZXcgPSBQeU1lbW9yeVZpZXdfRnJvbU1lbW9yeShwdHIsIGl0ZW1zaXplLCBQeUJVRl9XUklURSk7CisgICAgaWYgKG12aWV3ID09IE5VTEwpCisgICAgICAgIGdvdG8gb3V0OworCisgICAgemVybyA9IFB5TG9uZ19Gcm9tTG9uZygwKTsKKyAgICBpZiAoemVybyA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHBhY2tfaW50byA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RydWN0b2JqLCAicGFja19pbnRvIik7CisgICAgaWYgKHBhY2tfaW50byA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIGFyZ3MgPSBQeVR1cGxlX05ldygyK25tZW1iKTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgbXZpZXcpOworICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMSwgemVybyk7CisKKyAgICBpZiAoKFB5Qnl0ZXNfQ2hlY2soaXRlbSkgfHwgUHlMb25nX0NoZWNrKGl0ZW0pIHx8CisgICAgICAgICBQeUZsb2F0X0NoZWNrKGl0ZW0pKSAmJiBubWVtYiA9PSAxKSB7CisgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDIsIGl0ZW0pOworICAgIH0KKyAgICBlbHNlIGlmICgoUHlMaXN0X0NoZWNrKGl0ZW0pIHx8IFB5VHVwbGVfQ2hlY2soaXRlbSkpICYmCisgICAgICAgICAgICAgUHlTZXF1ZW5jZV9MZW5ndGgoaXRlbSkgPT0gbm1lbWIpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG5tZW1iOyBpKyspIHsKKyAgICAgICAgICAgIHggPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oaXRlbSwgaSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDIraSwgeCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgIm1pc21hdGNoIGJldHdlZW4gaW5pdGlhbGl6ZXIgZWxlbWVudCBhbmQgZm9ybWF0IHN0cmluZyIpOworICAgICAgICBnb3RvIGFyZ3Nfb3V0OworICAgIH0KKworICAgIHggPSBQeU9iamVjdF9DYWxsT2JqZWN0KHBhY2tfaW50bywgYXJncyk7CisgICAgaWYgKHggIT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoeCk7CisgICAgICAgIHJldCA9IDA7CisgICAgfQorCisKK2FyZ3Nfb3V0OgorICAgIGZvciAoaSA9IDA7IGkgPCAyK25tZW1iOyBpKyspCisgICAgICAgIFB5X1hJTkNSRUYoUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKSk7CisgICAgUHlfWERFQ1JFRihhcmdzKTsKK291dDoKKyAgICBQeV9YREVDUkVGKHBhY2tfaW50byk7CisgICAgUHlfWERFQ1JFRih6ZXJvKTsKKyAgICBQeV9YREVDUkVGKG12aWV3KTsKKyAgICBQeV9YREVDUkVGKHN0cnVjdG9iaik7CisgICAgUHlfWERFQ1JFRihmb3JtYXQpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkCitjb3B5X3JlYyhjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSwgUHlfc3NpemVfdCBuZGltLCBQeV9zc2l6ZV90IGl0ZW1zaXplLAorICAgICAgICAgY2hhciAqZHB0ciwgY29uc3QgUHlfc3NpemVfdCAqZHN0cmlkZXMsIGNvbnN0IFB5X3NzaXplX3QgKmRzdWJvZmZzZXRzLAorICAgICAgICAgY2hhciAqc3B0ciwgY29uc3QgUHlfc3NpemVfdCAqc3N0cmlkZXMsIGNvbnN0IFB5X3NzaXplX3QgKnNzdWJvZmZzZXRzLAorICAgICAgICAgY2hhciAqbWVtKQoreworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGFzc2VydChuZGltID49IDEpOworCisgICAgaWYgKG5kaW0gPT0gMSkgeworICAgICAgICBpZiAoIUhBVkVfUFRSKGRzdWJvZmZzZXRzKSAmJiAhSEFWRV9QVFIoc3N1Ym9mZnNldHMpICYmCisgICAgICAgICAgICBkc3RyaWRlc1swXSA9PSBpdGVtc2l6ZSAmJiBzc3RyaWRlc1swXSA9PSBpdGVtc2l6ZSkgeworICAgICAgICAgICAgbWVtbW92ZShkcHRyLCBzcHRyLCBzaGFwZVswXSAqIGl0ZW1zaXplKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNoYXIgKnA7CisgICAgICAgICAgICBhc3NlcnQobWVtICE9IE5VTEwpOworICAgICAgICAgICAgZm9yIChpPTAsIHA9bWVtOyBpPHNoYXBlWzBdOyBwKz1pdGVtc2l6ZSwgc3B0cis9c3N0cmlkZXNbMF0sIGkrKykgeworICAgICAgICAgICAgICAgIGNoYXIgKnhzcHRyID0gQURKVVNUX1BUUihzcHRyLCBzc3Vib2Zmc2V0cyk7CisgICAgICAgICAgICAgICAgbWVtY3B5KHAsIHhzcHRyLCBpdGVtc2l6ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGk9MCwgcD1tZW07IGk8c2hhcGVbMF07IHArPWl0ZW1zaXplLCBkcHRyKz1kc3RyaWRlc1swXSwgaSsrKSB7CisgICAgICAgICAgICAgICAgY2hhciAqeGRwdHIgPSBBREpVU1RfUFRSKGRwdHIsIGRzdWJvZmZzZXRzKTsKKyAgICAgICAgICAgICAgICBtZW1jcHkoeGRwdHIsIHAsIGl0ZW1zaXplKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IHNoYXBlWzBdOyBkcHRyKz1kc3RyaWRlc1swXSwgc3B0cis9c3N0cmlkZXNbMF0sIGkrKykgeworICAgICAgICBjaGFyICp4ZHB0ciA9IEFESlVTVF9QVFIoZHB0ciwgZHN1Ym9mZnNldHMpOworICAgICAgICBjaGFyICp4c3B0ciA9IEFESlVTVF9QVFIoc3B0ciwgc3N1Ym9mZnNldHMpOworCisgICAgICAgIGNvcHlfcmVjKHNoYXBlKzEsIG5kaW0tMSwgaXRlbXNpemUsCisgICAgICAgICAgICAgICAgIHhkcHRyLCBkc3RyaWRlcysxLCBkc3Vib2Zmc2V0cyA/IGRzdWJvZmZzZXRzKzEgOiBOVUxMLAorICAgICAgICAgICAgICAgICB4c3B0ciwgc3N0cmlkZXMrMSwgc3N1Ym9mZnNldHMgPyBzc3Vib2Zmc2V0cysxIDogTlVMTCwKKyAgICAgICAgICAgICAgICAgbWVtKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK2NtcF9zdHJ1Y3R1cmUoUHlfYnVmZmVyICpkZXN0LCBQeV9idWZmZXIgKnNyYykKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBpZiAoc3RyY21wKEZJWF9GT1JNQVQoZGVzdC0+Zm9ybWF0KSwgRklYX0ZPUk1BVChzcmMtPmZvcm1hdCkpICE9IDAgfHwKKyAgICAgICAgZGVzdC0+aXRlbXNpemUgIT0gc3JjLT5pdGVtc2l6ZSB8fAorICAgICAgICBkZXN0LT5uZGltICE9IHNyYy0+bmRpbSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgZm9yIChpID0gMDsgaSA8IGRlc3QtPm5kaW07IGkrKykgeworICAgICAgICBpZiAoZGVzdC0+c2hhcGVbaV0gIT0gc3JjLT5zaGFwZVtpXSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKGRlc3QtPnNoYXBlW2ldID09IDApCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyogQ29weSBzcmMgdG8gZGVzdC4gQm90aCBidWZmZXJzIG11c3QgaGF2ZSB0aGUgc2FtZSBmb3JtYXQsIGl0ZW1zaXplLAorICAgbmRpbSBhbmQgc2hhcGUuIENvcHlpbmcgaXMgYXRvbWljLCB0aGUgZnVuY3Rpb24gbmV2ZXIgZmFpbHMgd2l0aAorICAgYSBwYXJ0aWFsIGNvcHkuICovCitzdGF0aWMgaW50Citjb3B5X2J1ZmZlcihQeV9idWZmZXIgKmRlc3QsIFB5X2J1ZmZlciAqc3JjKQoreworICAgIGNoYXIgKm1lbSA9IE5VTEw7CisKKyAgICBhc3NlcnQoZGVzdC0+bmRpbSA+IDApOworCisgICAgaWYgKGNtcF9zdHJ1Y3R1cmUoZGVzdCwgc3JjKSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAibmRhcnJheSBhc3NpZ25tZW50OiBsdmFsdWUgYW5kIHJ2YWx1ZSBoYXZlIGRpZmZlcmVudCBzdHJ1Y3R1cmVzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoKGRlc3QtPnN1Ym9mZnNldHMgJiYgZGVzdC0+c3Vib2Zmc2V0c1tkZXN0LT5uZGltLTFdID49IDApIHx8CisgICAgICAgIChzcmMtPnN1Ym9mZnNldHMgJiYgc3JjLT5zdWJvZmZzZXRzW3NyYy0+bmRpbS0xXSA+PSAwKSB8fAorICAgICAgICBkZXN0LT5zdHJpZGVzW2Rlc3QtPm5kaW0tMV0gIT0gZGVzdC0+aXRlbXNpemUgfHwKKyAgICAgICAgc3JjLT5zdHJpZGVzW3NyYy0+bmRpbS0xXSAhPSBzcmMtPml0ZW1zaXplKSB7CisgICAgICAgIG1lbSA9IFB5TWVtX01hbGxvYyhkZXN0LT5zaGFwZVtkZXN0LT5uZGltLTFdICogZGVzdC0+aXRlbXNpemUpOworICAgICAgICBpZiAobWVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb3B5X3JlYyhkZXN0LT5zaGFwZSwgZGVzdC0+bmRpbSwgZGVzdC0+aXRlbXNpemUsCisgICAgICAgICAgICAgZGVzdC0+YnVmLCBkZXN0LT5zdHJpZGVzLCBkZXN0LT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgIHNyYy0+YnVmLCBzcmMtPnN0cmlkZXMsIHNyYy0+c3Vib2Zmc2V0cywKKyAgICAgICAgICAgICBtZW0pOworCisgICAgUHlNZW1fWEZyZWUobWVtKTsKKyAgICByZXR1cm4gMDsKK30KKworCisvKiBVbnBhY2sgc2luZ2xlIGVsZW1lbnQgKi8KK3N0YXRpYyBQeU9iamVjdCAqCit1bnBhY2tfc2luZ2xlKGNoYXIgKnB0ciwgY29uc3QgY2hhciAqZm10LCBQeV9zc2l6ZV90IGl0ZW1zaXplKQoreworICAgIFB5T2JqZWN0ICp4LCAqdW5wYWNrX2Zyb20sICptdmlldzsKKworICAgIGlmIChmbXQgPT0gTlVMTCkgeworICAgICAgICBmbXQgPSAiQiI7CisgICAgICAgIGl0ZW1zaXplID0gMTsKKyAgICB9CisKKyAgICB1bnBhY2tfZnJvbSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RydWN0bW9kdWxlLCAidW5wYWNrX2Zyb20iKTsKKyAgICBpZiAodW5wYWNrX2Zyb20gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBtdmlldyA9IFB5TWVtb3J5Vmlld19Gcm9tTWVtb3J5KHB0ciwgaXRlbXNpemUsIFB5QlVGX1JFQUQpOworICAgIGlmIChtdmlldyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRih1bnBhY2tfZnJvbSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHggPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24odW5wYWNrX2Zyb20sICJzTyIsIGZtdCwgbXZpZXcpOworICAgIFB5X0RFQ1JFRih1bnBhY2tfZnJvbSk7CisgICAgUHlfREVDUkVGKG12aWV3KTsKKyAgICBpZiAoeCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKHgpID09IDEpIHsKKyAgICAgICAgUHlPYmplY3QgKnRtcCA9IFB5VHVwbGVfR0VUX0lURU0oeCwgMCk7CisgICAgICAgIFB5X0lOQ1JFRih0bXApOworICAgICAgICBQeV9ERUNSRUYoeCk7CisgICAgICAgIHJldHVybiB0bXA7CisgICAgfQorCisgICAgcmV0dXJuIHg7Cit9CisKKy8qIFVucGFjayBhIG11bHRpLWRpbWVuc2lvbmFsIG1hdHJpeCBpbnRvIGEgbmVzdGVkIGxpc3QuIFJldHVybiBhIHNjYWxhcgorICAgZm9yIG5kaW0gPSAwLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK3VucGFja19yZWMoUHlPYmplY3QgKnVucGFja19mcm9tLCBjaGFyICpwdHIsIFB5T2JqZWN0ICptdmlldywgY2hhciAqaXRlbSwKKyAgICAgICAgICAgY29uc3QgUHlfc3NpemVfdCAqc2hhcGUsIGNvbnN0IFB5X3NzaXplX3QgKnN0cmlkZXMsCisgICAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgKnN1Ym9mZnNldHMsIFB5X3NzaXplX3QgbmRpbSwgUHlfc3NpemVfdCBpdGVtc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqbHN0LCAqeDsKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBhc3NlcnQobmRpbSA+PSAwKTsKKyAgICBhc3NlcnQoc2hhcGUgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHN0cmlkZXMgIT0gTlVMTCk7CisKKyAgICBpZiAobmRpbSA9PSAwKSB7CisgICAgICAgIG1lbWNweShpdGVtLCBwdHIsIGl0ZW1zaXplKTsKKyAgICAgICAgeCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3ModW5wYWNrX2Zyb20sIG12aWV3LCBOVUxMKTsKKyAgICAgICAgaWYgKHggPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlUdXBsZV9HRVRfU0laRSh4KSA9PSAxKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdG1wID0gUHlUdXBsZV9HRVRfSVRFTSh4LCAwKTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih0bXApOworICAgICAgICAgICAgUHlfREVDUkVGKHgpOworICAgICAgICAgICAgcmV0dXJuIHRtcDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geDsKKyAgICB9CisKKyAgICBsc3QgPSBQeUxpc3RfTmV3KHNoYXBlWzBdKTsKKyAgICBpZiAobHN0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZm9yIChpID0gMDsgaSA8IHNoYXBlWzBdOyBwdHIrPXN0cmlkZXNbMF0sIGkrKykgeworICAgICAgICBjaGFyICpuZXh0cHRyID0gQURKVVNUX1BUUihwdHIsIHN1Ym9mZnNldHMpOworCisgICAgICAgIHggPSB1bnBhY2tfcmVjKHVucGFja19mcm9tLCBuZXh0cHRyLCBtdmlldywgaXRlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUrMSwgc3RyaWRlcysxLCBzdWJvZmZzZXRzID8gc3Vib2Zmc2V0cysxIDogTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgbmRpbS0xLCBpdGVtc2l6ZSk7CisgICAgICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsc3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBQeUxpc3RfU0VUX0lURU0obHN0LCBpLCB4KTsKKyAgICB9CisKKyAgICByZXR1cm4gbHN0OworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2FzX2xpc3QoTkRBcnJheU9iamVjdCAqbmQpCit7CisgICAgUHlPYmplY3QgKnN0cnVjdG9iaiA9IE5VTEwsICp1bnBhY2tfZnJvbSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmxzdCA9IE5VTEwsICptdmlldyA9IE5VTEw7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kLT5oZWFkLT5iYXNlOworICAgIFB5X3NzaXplX3QgKnNoYXBlID0gYmFzZS0+c2hhcGU7CisgICAgUHlfc3NpemVfdCAqc3RyaWRlcyA9IGJhc2UtPnN0cmlkZXM7CisgICAgUHlfc3NpemVfdCBzaW1wbGVfc2hhcGVbMV07CisgICAgUHlfc3NpemVfdCBzaW1wbGVfc3RyaWRlc1sxXTsKKyAgICBjaGFyICppdGVtID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZm9ybWF0OworICAgIGNoYXIgKmZtdCA9IGJhc2UtPmZvcm1hdDsKKworICAgIGJhc2UgPSAmbmQtPmhlYWQtPmJhc2U7CisKKyAgICBpZiAoZm10ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAibmRhcnJheTogdG9saXN0KCkgZG9lcyBub3Qgc3VwcG9ydCBmb3JtYXQ9TlVMTCwgdXNlICIKKyAgICAgICAgICAgICJ0b2J5dGVzKCkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChzaGFwZSA9PSBOVUxMKSB7CisgICAgICAgIGFzc2VydChORF9DX0NPTlRJR1VPVVMobmQtPmhlYWQtPmZsYWdzKSk7CisgICAgICAgIGFzc2VydChiYXNlLT5zdHJpZGVzID09IE5VTEwpOworICAgICAgICBhc3NlcnQoYmFzZS0+bmRpbSA8PSAxKTsKKyAgICAgICAgc2hhcGUgPSBzaW1wbGVfc2hhcGU7CisgICAgICAgIHNoYXBlWzBdID0gYmFzZS0+bGVuOworICAgICAgICBzdHJpZGVzID0gc2ltcGxlX3N0cmlkZXM7CisgICAgICAgIHN0cmlkZXNbMF0gPSBiYXNlLT5pdGVtc2l6ZTsKKyAgICB9CisgICAgZWxzZSBpZiAoc3RyaWRlcyA9PSBOVUxMKSB7CisgICAgICAgIGFzc2VydChORF9DX0NPTlRJR1VPVVMobmQtPmhlYWQtPmZsYWdzKSk7CisgICAgICAgIHN0cmlkZXMgPSBzdHJpZGVzX2Zyb21fc2hhcGUobmQtPmhlYWQsIDApOworICAgICAgICBpZiAoc3RyaWRlcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9ybWF0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoZm10KTsKKyAgICBpZiAoZm9ybWF0ID09IE5VTEwpCisgICAgICAgIGdvdG8gb3V0OworCisgICAgc3RydWN0b2JqID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhTdHJ1Y3QsIGZvcm1hdCwgTlVMTCk7CisgICAgUHlfREVDUkVGKGZvcm1hdCk7CisgICAgaWYgKHN0cnVjdG9iaiA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHVucGFja19mcm9tID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzdHJ1Y3RvYmosICJ1bnBhY2tfZnJvbSIpOworICAgIGlmICh1bnBhY2tfZnJvbSA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIGl0ZW0gPSBQeU1lbV9NYWxsb2MoYmFzZS0+aXRlbXNpemUpOworICAgIGlmIChpdGVtID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgbXZpZXcgPSBQeU1lbW9yeVZpZXdfRnJvbU1lbW9yeShpdGVtLCBiYXNlLT5pdGVtc2l6ZSwgUHlCVUZfV1JJVEUpOworICAgIGlmIChtdmlldyA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIGxzdCA9IHVucGFja19yZWModW5wYWNrX2Zyb20sIGJhc2UtPmJ1ZiwgbXZpZXcsIGl0ZW0sCisgICAgICAgICAgICAgICAgICAgICBzaGFwZSwgc3RyaWRlcywgYmFzZS0+c3Vib2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAgIGJhc2UtPm5kaW0sIGJhc2UtPml0ZW1zaXplKTsKKworb3V0OgorICAgIFB5X1hERUNSRUYobXZpZXcpOworICAgIFB5TWVtX1hGcmVlKGl0ZW0pOworICAgIFB5X1hERUNSRUYodW5wYWNrX2Zyb20pOworICAgIFB5X1hERUNSRUYoc3RydWN0b2JqKTsKKyAgICBpZiAoc3RyaWRlcyAhPSBiYXNlLT5zdHJpZGVzICYmIHN0cmlkZXMgIT0gc2ltcGxlX3N0cmlkZXMpCisgICAgICAgIFB5TWVtX1hGcmVlKHN0cmlkZXMpOworCisgICAgcmV0dXJuIGxzdDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemUgbmRidWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgICBTdGF0ZSBvZiBhIG5ldyBuZGJ1ZiBkdXJpbmcgaW5pdGlhbGl6YXRpb24uICdPSycgbWVhbnMgdGhhdCBpbml0aWFsaXphdGlvbgorICAgaXMgY29tcGxldGUuICdQVFInIG1lYW5zIHRoYXQgYSBwb2ludGVyIGhhcyBiZWVuIGluaXRpYWxpemVkLCBidXQgdGhlCisgICBzdGF0ZSBvZiB0aGUgbWVtb3J5IGlzIHN0aWxsIHVuZGVmaW5lZCBhbmQgbmRidWYtPm9mZnNldCBpcyBkaXNyZWdhcmRlZC4KKworICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8ICAgICAgICAgICAgICAgICB8IG5kYnVmX25ldyB8IGluaXRfc2ltcGxlIHwgaW5pdF9zdHJ1Y3R1cmUgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IG5leHQgICAgICAgICAgICB8IE9LIChOVUxMKSB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IHByZXYgICAgICAgICAgICB8IE9LIChOVUxMKSB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGxlbiAgICAgICAgICAgICB8ICAgIE9LICAgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IG9mZnNldCAgICAgICAgICB8ICAgIE9LICAgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGRhdGEgICAgICAgICAgICB8ICAgIFBUUiAgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGZsYWdzICAgICAgICAgICB8ICAgIHVzZXIgICB8ICAgIHVzZXIgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGV4cG9ydHMgICAgICAgICB8ICAgT0sgKDApICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2Uub2JqICAgICAgICB8IE9LIChOVUxMKSB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2UuYnVmICAgICAgICB8ICAgIFBUUiAgICB8ICAgICBQVFIgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2UubGVuICAgICAgICB8IGxlbihkYXRhKSB8ICBsZW4oZGF0YSkgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2UuaXRlbXNpemUgICB8ICAgICAxICAgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2UucmVhZG9ubHkgICB8ICAgICAwICAgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2UuZm9ybWF0ICAgICB8ICAgIE5VTEwgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfCAgCisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5uZGltICAgICAgIHwgICAgIDEgICAgIHwgICAgICAxICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5zaGFwZSAgICAgIHwgICAgTlVMTCAgIHwgICAgTlVMTCAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5zdHJpZGVzICAgIHwgICAgTlVMTCAgIHwgICAgTlVMTCAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5zdWJvZmZzZXRzIHwgICAgTlVMTCAgIHwgICAgTlVMTCAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5pbnRlcm5hbCAgIHwgICAgT0sgICAgIHwgICAgT0sgICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisKKyovCisKK3N0YXRpYyBQeV9zc2l6ZV90CitnZXRfaXRlbXNpemUoUHlPYmplY3QgKmZvcm1hdCkKK3sKKyAgICBQeU9iamVjdCAqdG1wOworICAgIFB5X3NzaXplX3QgaXRlbXNpemU7CisKKyAgICB0bXAgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGNhbGNzaXplLCBmb3JtYXQsIE5VTEwpOworICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGl0ZW1zaXplID0gUHlMb25nX0FzU3NpemVfdCh0bXApOworICAgIFB5X0RFQ1JFRih0bXApOworCisgICAgcmV0dXJuIGl0ZW1zaXplOworfQorCitzdGF0aWMgY2hhciAqCitnZXRfZm9ybWF0KFB5T2JqZWN0ICpmb3JtYXQpCit7CisgICAgUHlPYmplY3QgKnRtcDsKKyAgICBjaGFyICpmbXQ7CisKKyAgICB0bXAgPSBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhmb3JtYXQpOworICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm10ID0gUHlNZW1fTWFsbG9jKFB5Qnl0ZXNfR0VUX1NJWkUodG1wKSsxKTsKKyAgICBpZiAoZm10ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBzdHJjcHkoZm10LCBQeUJ5dGVzX0FTX1NUUklORyh0bXApKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKworICAgIHJldHVybiBmbXQ7Cit9CisKK3N0YXRpYyBpbnQKK2luaXRfc2ltcGxlKG5kYnVmX3QgKm5kYnVmLCBQeU9iamVjdCAqaXRlbXMsIFB5T2JqZWN0ICpmb3JtYXQsCisgICAgICAgICAgICBQeV9zc2l6ZV90IGl0ZW1zaXplKQoreworICAgIFB5T2JqZWN0ICptdmlldzsKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmbmRidWYtPmJhc2U7CisgICAgaW50IHJldDsKKworICAgIG12aWV3ID0gUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoYmFzZSk7CisgICAgaWYgKG12aWV3ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldCA9IHBhY2tfZnJvbV9saXN0KG12aWV3LCBpdGVtcywgZm9ybWF0LCBpdGVtc2l6ZSk7CisgICAgUHlfREVDUkVGKG12aWV3KTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgYmFzZS0+cmVhZG9ubHkgPSAhKG5kYnVmLT5mbGFncyAmIE5EX1dSSVRBQkxFKTsKKyAgICBiYXNlLT5pdGVtc2l6ZSA9IGl0ZW1zaXplOworICAgIGJhc2UtPmZvcm1hdCA9IGdldF9mb3JtYXQoZm9ybWF0KTsKKyAgICBpZiAoYmFzZS0+Zm9ybWF0ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlfc3NpemVfdCAqCitzZXFfYXNfc3NpemVfYXJyYXkoUHlPYmplY3QgKnNlcSwgUHlfc3NpemVfdCBsZW4sIGludCBpc19zaGFwZSkKK3sKKyAgICBQeV9zc2l6ZV90ICpkZXN0OworICAgIFB5X3NzaXplX3QgeCwgaTsKKworICAgIGRlc3QgPSBQeU1lbV9NYWxsb2MobGVuICogKHNpemVvZiAqZGVzdCkpOworICAgIGlmIChkZXN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICp0bXAgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oc2VxLCBpKTsKKyAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodG1wKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImVsZW1lbnRzIG9mICVzIG11c3QgYmUgaW50ZWdlcnMiLAorICAgICAgICAgICAgICAgIGlzX3NoYXBlID8gInNoYXBlIiA6ICJzdHJpZGVzIik7CisgICAgICAgICAgICBQeU1lbV9GcmVlKGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodG1wKTsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNfc2hhcGUgJiYgeCA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJlbGVtZW50cyBvZiBzaGFwZSBtdXN0IGJlIGludGVnZXJzID49IDAiKTsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBkZXN0W2ldID0geDsKKyAgICB9CisKKyAgICByZXR1cm4gZGVzdDsKK30KKworc3RhdGljIFB5X3NzaXplX3QgKgorc3RyaWRlc19mcm9tX3NoYXBlKGNvbnN0IG5kYnVmX3QgKm5kYnVmLCBpbnQgZmxhZ3MpCit7CisgICAgY29uc3QgUHlfYnVmZmVyICpiYXNlID0gJm5kYnVmLT5iYXNlOworICAgIFB5X3NzaXplX3QgKnMsIGk7CisKKyAgICBzID0gUHlNZW1fTWFsbG9jKGJhc2UtPm5kaW0gKiAoc2l6ZW9mICpzKSk7CisgICAgaWYgKHMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZmxhZ3MgJiBORF9GT1JUUkFOKSB7CisgICAgICAgIHNbMF0gPSBiYXNlLT5pdGVtc2l6ZTsKKyAgICAgICAgZm9yIChpID0gMTsgaSA8IGJhc2UtPm5kaW07IGkrKykKKyAgICAgICAgICAgIHNbaV0gPSBzW2ktMV0gKiBiYXNlLT5zaGFwZVtpLTFdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc1tiYXNlLT5uZGltLTFdID0gYmFzZS0+aXRlbXNpemU7CisgICAgICAgIGZvciAoaSA9IGJhc2UtPm5kaW0tMjsgaSA+PSAwOyBpLS0pCisgICAgICAgICAgICBzW2ldID0gc1tpKzFdICogYmFzZS0+c2hhcGVbaSsxXTsKKyAgICB9CisKKyAgICByZXR1cm4gczsKK30KKworLyogQm91bmRzIGNoZWNrOgorCisgICAgIGxlbiA6PSBjb21wbGV0ZSBsZW5ndGggb2YgYWxsb2NhdGVkIG1lbW9yeQorICAgICBvZmZzZXQgOj0gc3RhcnQgb2YgdGhlIGFycmF5CisKKyAgICAgQSBzaW5nbGUgYXJyYXkgZWxlbWVudCBpcyBpbmRleGVkIGJ5OgorCisgICAgICAgaSA9IGluZGljZXNbMF0gKiBzdHJpZGVzWzBdICsgaW5kaWNlc1sxXSAqIHN0cmlkZXNbMV0gKyAuLi4KKworICAgICBpbWluIGlzIHJlYWNoZWQgd2hlbiBhbGwgaW5kaWNlc1tuXSBjb21iaW5lZCB3aXRoIHBvc2l0aXZlIHN0cmlkZXMgYXJlIDAKKyAgICAgYW5kIGFsbCBpbmRpY2VzIGNvbWJpbmVkIHdpdGggbmVnYXRpdmUgc3RyaWRlcyBhcmUgc2hhcGVbbl0tMSwgd2hpY2ggaXMKKyAgICAgdGhlIG1heGltdW0gaW5kZXggZm9yIHRoZSBudGggZGltZW5zaW9uLgorCisgICAgIGltYXggaXMgcmVhY2hlZCB3aGVuIGFsbCBpbmRpY2VzW25dIGNvbWJpbmVkIHdpdGggbmVnYXRpdmUgc3RyaWRlcyBhcmUgMAorICAgICBhbmQgYWxsIGluZGljZXMgY29tYmluZWQgd2l0aCBwb3NpdGl2ZSBzdHJpZGVzIGFyZSBzaGFwZVtuXS0xLgorKi8KK3N0YXRpYyBpbnQKK3ZlcmlmeV9zdHJ1Y3R1cmUoUHlfc3NpemVfdCBsZW4sIFB5X3NzaXplX3QgaXRlbXNpemUsIFB5X3NzaXplX3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSwgY29uc3QgUHlfc3NpemVfdCAqc3RyaWRlcywKKyAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuZGltKQoreworICAgIFB5X3NzaXplX3QgaW1pbiwgaW1heDsKKyAgICBQeV9zc2l6ZV90IG47CisKKyAgICBhc3NlcnQobmRpbSA+PSAwKTsKKworICAgIGlmIChuZGltID09IDAgJiYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0K2l0ZW1zaXplID4gbGVuKSkKKyAgICAgICAgZ290byBpbnZhbGlkX2NvbWJpbmF0aW9uOworCisgICAgZm9yIChuID0gMDsgbiA8IG5kaW07IG4rKykKKyAgICAgICAgaWYgKHN0cmlkZXNbbl0gJSBpdGVtc2l6ZSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAic3RyaWRlcyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgaXRlbXNpemUiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgZm9yIChuID0gMDsgbiA8IG5kaW07IG4rKykKKyAgICAgICAgaWYgKHNoYXBlW25dID09IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgIGltaW4gPSBpbWF4ID0gMDsKKyAgICBmb3IgKG4gPSAwOyBuIDwgbmRpbTsgbisrKQorICAgICAgICBpZiAoc3RyaWRlc1tuXSA8PSAwKQorICAgICAgICAgICAgaW1pbiArPSAoc2hhcGVbbl0tMSkgKiBzdHJpZGVzW25dOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbWF4ICs9IChzaGFwZVtuXS0xKSAqIHN0cmlkZXNbbl07CisKKyAgICBpZiAoaW1pbiArIG9mZnNldCA8IDAgfHwgaW1heCArIG9mZnNldCArIGl0ZW1zaXplID4gbGVuKQorICAgICAgICBnb3RvIGludmFsaWRfY29tYmluYXRpb247CisKKyAgICByZXR1cm4gMDsKKworCitpbnZhbGlkX2NvbWJpbmF0aW9uOgorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAiaW52YWxpZCBjb21iaW5hdGlvbiBvZiBidWZmZXIsIHNoYXBlIGFuZCBzdHJpZGVzIik7CisgICAgcmV0dXJuIC0xOworfQorCisvKgorICAgQ29udmVydCBhIE51bVB5LXN0eWxlIGFycmF5IHRvIGFuIGFycmF5IHVzaW5nIHN1Ym9mZnNldHMgdG8gc3RyaWRlIGluCisgICB0aGUgZmlyc3QgZGltZW5zaW9uLiBSZXF1aXJlbWVudHM6IG5kaW0gPiAwLgorCisgICBDb250aWd1b3VzIGV4YW1wbGUKKyAgID09PT09PT09PT09PT09PT09PQorCisgICAgIElucHV0OgorICAgICAtLS0tLS0KKyAgICAgICBzaGFwZSAgICAgID0gezIsIDIsIDN9OworICAgICAgIHN0cmlkZXMgICAgPSB7NiwgMywgMX07CisgICAgICAgc3Vib2Zmc2V0cyA9IE5VTEw7CisgICAgICAgZGF0YSAgICAgICA9IHswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTF9OworICAgICAgIGJ1ZiAgICAgICAgPSAmZGF0YVswXQorCisgICAgIE91dHB1dDoKKyAgICAgLS0tLS0tLQorICAgICAgIHNoYXBlICAgICAgPSB7MiwgMiwgM307CisgICAgICAgc3RyaWRlcyAgICA9IHtzaXplb2YoY2hhciAqKSwgMywgMX07CisgICAgICAgc3Vib2Zmc2V0cyA9IHswLCAtMSwgLTF9OworICAgICAgIGRhdGEgICAgICAgPSB7cDEsIHAyLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTF9OworICAgICAgICAgICAgICAgICAgICAgfCAgIHwgICBeICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICBgLS0tJy0tLScgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgIGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0nCisgICAgICAgYnVmICAgICAgICA9ICZkYXRhWzBdCisKKyAgICAgU28sIGluIHRoZSBleGFtcGxlIHRoZSBpbnB1dCByZXNlbWJsZXMgdGhlIHRocmVlLWRpbWVuc2lvbmFsIGFycmF5CisgICAgIGNoYXIgdlsyXVsyXVszXSwgd2hpbGUgdGhlIG91dHB1dCByZXNlbWJsZXMgYW4gYXJyYXkgb2YgdHdvIHBvaW50ZXJzCisgICAgIHRvIHR3by1kaW1lbnNpb25hbCBhcnJheXM6IGNoYXIgKCp2WzJdKVsyXVszXS4KKworCisgICBOb24tY29udGlndW91cyBleGFtcGxlOgorICAgPT09PT09PT09PT09PT09PT09PT09PT0KKworICAgICBJbnB1dCAod2l0aCBvZmZzZXQgYW5kIG5lZ2F0aXZlIHN0cmlkZXMpOgorICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgIHNoYXBlICAgICAgPSB7MiwgMiwgM307CisgICAgICAgc3RyaWRlcyAgICA9IHstNiwgMywgLTF9OworICAgICAgIG9mZnNldCAgICAgPSA4CisgICAgICAgc3Vib2Zmc2V0cyA9IE5VTEw7CisgICAgICAgZGF0YSAgICAgICA9IHswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTF9OworCisgICAgIE91dHB1dDoKKyAgICAgLS0tLS0tLQorICAgICAgIHNoYXBlICAgICAgPSB7MiwgMiwgM307CisgICAgICAgc3RyaWRlcyAgICA9IHstc2l6ZW9mKGNoYXIgKiksIDMsIC0xfTsKKyAgICAgICBzdWJvZmZzZXRzID0gezIsIC0xLCAtMX07CisgICAgICAgbmV3ZGF0YSAgICA9IHtwMSwgcDIsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMX07CisgICAgICAgICAgICAgICAgICAgICB8ICAgfCAgIF4gICAgIF4gICAgICAgICAgIF4gICAgIF4KKyAgICAgICAgICAgICAgICAgICAgIGAtLS0nLS0tJyAgICAgfCAgICAgICAgICAgfCAgICAgYC0gcDIrc3Vib2Zmc2V0c1swXQorICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBgLS0tLS0tLS0tLS18LS0tIHAxK3N1Ym9mZnNldHNbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICBgLS0tLS0tLS0tLS0tLS0tLS0tLS0tJworICAgICAgIGJ1ZiAgICAgICAgPSAmbmV3ZGF0YVsxXSAgIyBzdHJpZGluZyBiYWNrd2FyZHMgb3ZlciB0aGUgcG9pbnRlcnMuCisKKyAgICAgc3Vib2Zmc2V0c1swXSBpcyB0aGUgc2FtZSBhcyB0aGUgb2Zmc2V0IHRoYXQgb25lIHdvdWxkIHNwZWNpZnkgaWYKKyAgICAgdGhlIHR3byB7MiwgM30gc3ViYXJyYXlzIHdlcmUgY3JlYXRlZCBkaXJlY3RseSwgaGVuY2UgdGhlIG5hbWUuCisqLworc3RhdGljIGludAoraW5pdF9zdWJvZmZzZXRzKG5kYnVmX3QgKm5kYnVmKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZuZGJ1Zi0+YmFzZTsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LCBzdGVwOworICAgIFB5X3NzaXplX3QgaW1pbiwgc3Vib2Zmc2V0MDsKKyAgICBQeV9zc2l6ZV90IGFkZHNpemU7CisgICAgUHlfc3NpemVfdCBuOworICAgIGNoYXIgKmRhdGE7CisKKyAgICBhc3NlcnQoYmFzZS0+bmRpbSA+IDApOworICAgIGFzc2VydChiYXNlLT5zdWJvZmZzZXRzID09IE5VTEwpOworCisgICAgLyogQWxsb2NhdGUgbmV3IGRhdGEgd2l0aCBhZGRpdGlvbmFsIHNwYWNlIGZvciBzaGFwZVswXSBwb2ludGVycy4gKi8KKyAgICBhZGRzaXplID0gYmFzZS0+c2hhcGVbMF0gKiAoc2l6ZW9mIChjaGFyICopKTsKKworICAgIC8qIEFsaWduIGFycmF5IHN0YXJ0IHRvIGEgbXVsdGlwbGUgb2YgOC4gKi8KKyAgICBhZGRzaXplID0gOCAqICgoYWRkc2l6ZSArIDcpIC8gOCk7CisKKyAgICBkYXRhID0gUHlNZW1fTWFsbG9jKG5kYnVmLT5sZW4gKyBhZGRzaXplKTsKKyAgICBpZiAoZGF0YSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBtZW1jcHkoZGF0YSArIGFkZHNpemUsIG5kYnVmLT5kYXRhLCBuZGJ1Zi0+bGVuKTsKKworICAgIFB5TWVtX0ZyZWUobmRidWYtPmRhdGEpOworICAgIG5kYnVmLT5kYXRhID0gZGF0YTsKKyAgICBuZGJ1Zi0+bGVuICs9IGFkZHNpemU7CisgICAgYmFzZS0+YnVmID0gbmRidWYtPmRhdGE7CisKKyAgICAvKiBpbWluOiBtaW5pbXVtIGluZGV4IG9mIHRoZSBpbnB1dCBhcnJheSByZWxhdGl2ZSB0byBuZGJ1Zi0+b2Zmc2V0LgorICAgICAgIHN1Ym9mZnNldDA6IG9mZnNldCBmb3IgZWFjaCBzdWItYXJyYXkgb2YgdGhlIG91dHB1dC4gVGhpcyBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICBzYW1lIGFzIGNhbGN1bGF0aW5nIC1pbWluJyBmb3IgYSBzdWItYXJyYXkgb2YgbmRpbS0xLiAqLworICAgIGltaW4gPSBzdWJvZmZzZXQwID0gMDsKKyAgICBmb3IgKG4gPSAwOyBuIDwgYmFzZS0+bmRpbTsgbisrKSB7CisgICAgICAgIGlmIChiYXNlLT5zaGFwZVtuXSA9PSAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChiYXNlLT5zdHJpZGVzW25dIDw9IDApIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgeCA9IChiYXNlLT5zaGFwZVtuXS0xKSAqIGJhc2UtPnN0cmlkZXNbbl07CisgICAgICAgICAgICBpbWluICs9IHg7CisgICAgICAgICAgICBzdWJvZmZzZXQwICs9IChuID49IDEpID8gLXggOiAwOworICAgICAgICB9CisgICAgfQorCisgICAgLyogSW5pdGlhbGl6ZSB0aGUgYXJyYXkgb2YgcG9pbnRlcnMgdG8gdGhlIHN1Yi1hcnJheXMuICovCisgICAgc3RhcnQgPSBhZGRzaXplICsgbmRidWYtPm9mZnNldCArIGltaW47CisgICAgc3RlcCA9IGJhc2UtPnN0cmlkZXNbMF0gPCAwID8gLWJhc2UtPnN0cmlkZXNbMF0gOiBiYXNlLT5zdHJpZGVzWzBdOworCisgICAgZm9yIChuID0gMDsgbiA8IGJhc2UtPnNoYXBlWzBdOyBuKyspCisgICAgICAgICgoY2hhciAqKiliYXNlLT5idWYpW25dID0gKGNoYXIgKiliYXNlLT5idWYgKyBzdGFydCArIG4qc3RlcDsKKworICAgIC8qIEluaXRpYWxpemUgc3Vib2Zmc2V0cy4gKi8KKyAgICBiYXNlLT5zdWJvZmZzZXRzID0gUHlNZW1fTWFsbG9jKGJhc2UtPm5kaW0gKiAoc2l6ZW9mICpiYXNlLT5zdWJvZmZzZXRzKSk7CisgICAgaWYgKGJhc2UtPnN1Ym9mZnNldHMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGJhc2UtPnN1Ym9mZnNldHNbMF0gPSBzdWJvZmZzZXQwOworICAgIGZvciAobiA9IDE7IG4gPCBiYXNlLT5uZGltOyBuKyspCisgICAgICAgIGJhc2UtPnN1Ym9mZnNldHNbbl0gPSAtMTsKKworICAgIC8qIEFkanVzdCBzdHJpZGVzIGZvciB0aGUgZmlyc3QgKHplcm90aCkgZGltZW5zaW9uLiAqLworICAgIGlmIChiYXNlLT5zdHJpZGVzWzBdID49IDApIHsKKyAgICAgICAgYmFzZS0+c3RyaWRlc1swXSA9IHNpemVvZihjaGFyICopOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogU3RyaWRpbmcgYmFja3dhcmRzLiAqLworICAgICAgICBiYXNlLT5zdHJpZGVzWzBdID0gLShQeV9zc2l6ZV90KXNpemVvZihjaGFyICopOworICAgICAgICBpZiAoYmFzZS0+c2hhcGVbMF0gPiAwKQorICAgICAgICAgICAgYmFzZS0+YnVmID0gKGNoYXIgKiliYXNlLT5idWYgKyAoYmFzZS0+c2hhcGVbMF0tMSkgKiBzaXplb2YoY2hhciAqKTsKKyAgICB9CisKKyAgICBuZGJ1Zi0+ZmxhZ3MgJj0gfihORF9DfE5EX0ZPUlRSQU4pOworICAgIG5kYnVmLT5vZmZzZXQgPSAwOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAoraW5pdF9sZW4oUHlfYnVmZmVyICpiYXNlKQoreworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGJhc2UtPmxlbiA9IDE7CisgICAgZm9yIChpID0gMDsgaSA8IGJhc2UtPm5kaW07IGkrKykKKyAgICAgICAgYmFzZS0+bGVuICo9IGJhc2UtPnNoYXBlW2ldOworICAgIGJhc2UtPmxlbiAqPSBiYXNlLT5pdGVtc2l6ZTsKK30KKworc3RhdGljIGludAoraW5pdF9zdHJ1Y3R1cmUobmRidWZfdCAqbmRidWYsIFB5T2JqZWN0ICpzaGFwZSwgUHlPYmplY3QgKnN0cmlkZXMsCisgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5kaW0pCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kYnVmLT5iYXNlOworCisgICAgYmFzZS0+bmRpbSA9IChpbnQpbmRpbTsKKyAgICBpZiAobmRpbSA9PSAwKSB7CisgICAgICAgIGlmIChuZGJ1Zi0+ZmxhZ3MgJiBORF9QSUwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIm5kaW0gPSAwIGNhbm5vdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggTkRfUElMIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgbmRidWYtPmZsYWdzIHw9IChORF9TQ0FMQVJ8TkRfQ3xORF9GT1JUUkFOKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogc2hhcGUgKi8KKyAgICBiYXNlLT5zaGFwZSA9IHNlcV9hc19zc2l6ZV9hcnJheShzaGFwZSwgbmRpbSwgMSk7CisgICAgaWYgKGJhc2UtPnNoYXBlID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIHN0cmlkZXMgKi8KKyAgICBpZiAoc3RyaWRlcykgeworICAgICAgICBiYXNlLT5zdHJpZGVzID0gc2VxX2FzX3NzaXplX2FycmF5KHN0cmlkZXMsIG5kaW0sIDApOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYmFzZS0+c3RyaWRlcyA9IHN0cmlkZXNfZnJvbV9zaGFwZShuZGJ1ZiwgbmRidWYtPmZsYWdzKTsKKyAgICB9CisgICAgaWYgKGJhc2UtPnN0cmlkZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh2ZXJpZnlfc3RydWN0dXJlKGJhc2UtPmxlbiwgYmFzZS0+aXRlbXNpemUsIG5kYnVmLT5vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZS0+c2hhcGUsIGJhc2UtPnN0cmlkZXMsIG5kaW0pIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogYnVmICovCisgICAgYmFzZS0+YnVmID0gbmRidWYtPmRhdGEgKyBuZGJ1Zi0+b2Zmc2V0OworCisgICAgLyogbGVuICovCisgICAgaW5pdF9sZW4oYmFzZSk7CisKKyAgICAvKiBuZGJ1Zi0+ZmxhZ3MgKi8KKyAgICBpZiAoUHlCdWZmZXJfSXNDb250aWd1b3VzKGJhc2UsICdDJykpCisgICAgICAgIG5kYnVmLT5mbGFncyB8PSBORF9DOworICAgIGlmIChQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoYmFzZSwgJ0YnKSkKKyAgICAgICAgbmRidWYtPmZsYWdzIHw9IE5EX0ZPUlRSQU47CisKKworICAgIC8qIGNvbnZlcnQgbnVtcHkgYXJyYXkgdG8gc3Vib2Zmc2V0IHJlcHJlc2VudGF0aW9uICovCisgICAgaWYgKG5kYnVmLT5mbGFncyAmIE5EX1BJTCkgeworICAgICAgICAvKiBtb2RpZmllcyBiYXNlLT5idWYsIGJhc2UtPnN0cmlkZXMgYW5kIGJhc2UtPnN1Ym9mZnNldHMgKiovCisgICAgICAgIHJldHVybiBpbml0X3N1Ym9mZnNldHMobmRidWYpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgbmRidWZfdCAqCitpbml0X25kYnVmKFB5T2JqZWN0ICppdGVtcywgUHlPYmplY3QgKnNoYXBlLCBQeU9iamVjdCAqc3RyaWRlcywKKyAgICAgICAgICAgUHlfc3NpemVfdCBvZmZzZXQsIFB5T2JqZWN0ICpmb3JtYXQsIGludCBmbGFncykKK3sKKyAgICBuZGJ1Zl90ICpuZGJ1ZjsKKyAgICBQeV9zc2l6ZV90IG5kaW07CisgICAgUHlfc3NpemVfdCBuaXRlbXM7CisgICAgUHlfc3NpemVfdCBpdGVtc2l6ZTsKKworICAgIC8qIG5kaW0gPSBsZW4oc2hhcGUpICovCisgICAgQ0hFQ0tfTElTVF9PUl9UVVBMRShzaGFwZSkKKyAgICBuZGltID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHNoYXBlKTsKKyAgICBpZiAobmRpbSA+IE5EX01BWF9ORElNKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgIm5kaW0gbXVzdCBub3QgZXhjZWVkICVkIiwgTkRfTUFYX05ESU0pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBsZW4oc3RyaWRlcykgPSBsZW4oc2hhcGUpICovCisgICAgaWYgKHN0cmlkZXMpIHsKKyAgICAgICAgQ0hFQ0tfTElTVF9PUl9UVVBMRShzdHJpZGVzKQorICAgICAgICBpZiAoUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHN0cmlkZXMpID09IDApCisgICAgICAgICAgICBzdHJpZGVzID0gTlVMTDsKKyAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBORF9GT1JUUkFOKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJORF9GT1JUUkFOIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggc3RyaWRlcyIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHN0cmlkZXMpICE9IG5kaW0pIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJsZW4oc2hhcGUpICE9IGxlbihzdHJpZGVzKSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBpdGVtc2l6ZSAqLworICAgIGl0ZW1zaXplID0gZ2V0X2l0ZW1zaXplKGZvcm1hdCk7CisgICAgaWYgKGl0ZW1zaXplIDw9IDApIHsKKyAgICAgICAgaWYgKGl0ZW1zaXplID09IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJpdGVtc2l6ZSBtdXN0IG5vdCBiZSB6ZXJvIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogY29udmVydCBzY2FsYXIgdG8gbGlzdCAqLworICAgIGlmIChuZGltID09IDApIHsKKyAgICAgICAgaXRlbXMgPSBQeV9CdWlsZFZhbHVlKCIoTykiLCBpdGVtcyk7CisgICAgICAgIGlmIChpdGVtcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBDSEVDS19MSVNUX09SX1RVUExFKGl0ZW1zKQorICAgICAgICBQeV9JTkNSRUYoaXRlbXMpOworICAgIH0KKworICAgIC8qIG51bWJlciBvZiBpdGVtcyAqLworICAgIG5pdGVtcyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShpdGVtcyk7CisgICAgaWYgKG5pdGVtcyA9PSAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgImluaXRpYWxpemVyIGxpc3Qgb3IgdHVwbGUgbXVzdCBub3QgYmUgZW1wdHkiKTsKKyAgICAgICAgUHlfREVDUkVGKGl0ZW1zKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbmRidWYgPSBuZGJ1Zl9uZXcobml0ZW1zLCBpdGVtc2l6ZSwgb2Zmc2V0LCBmbGFncyk7CisgICAgaWYgKG5kYnVmID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGl0ZW1zKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisKKyAgICBpZiAoaW5pdF9zaW1wbGUobmRidWYsIGl0ZW1zLCBmb3JtYXQsIGl0ZW1zaXplKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKGluaXRfc3RydWN0dXJlKG5kYnVmLCBzaGFwZSwgc3RyaWRlcywgbmRpbSkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgUHlfREVDUkVGKGl0ZW1zKTsKKyAgICByZXR1cm4gbmRidWY7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihpdGVtcyk7CisgICAgbmRidWZfZnJlZShuZGJ1Zik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIGluaXRpYWxpemUgYW5kIHB1c2ggYSBuZXcgYmFzZSBvbnRvIHRoZSBsaW5rZWQgbGlzdCAqLworc3RhdGljIGludAorbmRhcnJheV9wdXNoX2Jhc2UoTkRBcnJheU9iamVjdCAqbmQsIFB5T2JqZWN0ICppdGVtcywKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzaGFwZSwgUHlPYmplY3QgKnN0cmlkZXMsCisgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldCwgUHlPYmplY3QgKmZvcm1hdCwgaW50IGZsYWdzKQoreworICAgIG5kYnVmX3QgKm5kYnVmOworCisgICAgbmRidWYgPSBpbml0X25kYnVmKGl0ZW1zLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0LCBmb3JtYXQsIGZsYWdzKTsKKyAgICBpZiAobmRidWYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgbmRidWZfcHVzaChuZCwgbmRidWYpOworICAgIHJldHVybiAwOworfQorCisjZGVmaW5lIFB5QlVGX1VOVVNFRCAweDEwMDAwCitzdGF0aWMgaW50CituZGFycmF5X2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZCA9IChOREFycmF5T2JqZWN0ICopc2VsZjsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7CisgICAgICAgICJvYmoiLCAic2hhcGUiLCAic3RyaWRlcyIsICJvZmZzZXQiLCAiZm9ybWF0IiwgImZsYWdzIiwgImdldGJ1ZiIsIE5VTEwKKyAgICB9OworICAgIFB5T2JqZWN0ICp2ID0gTlVMTDsgIC8qIGluaXRpYWxpemVyOiBzY2FsYXIsIGxpc3QsIHR1cGxlIG9yIGJhc2Ugb2JqZWN0ICovCisgICAgUHlPYmplY3QgKnNoYXBlID0gTlVMTDsgICAvKiBzaXplIG9mIGVhY2ggZGltZW5zaW9uICovCisgICAgUHlPYmplY3QgKnN0cmlkZXMgPSBOVUxMOyAvKiBudW1iZXIgb2YgYnl0ZXMgdG8gdGhlIG5leHQgZWx0IGluIGVhY2ggZGltICovCisgICAgUHlfc3NpemVfdCBvZmZzZXQgPSAwOyAgICAgICAgICAgIC8qIGJ1ZmZlciBvZmZzZXQgKi8KKyAgICBQeU9iamVjdCAqZm9ybWF0ID0gc2ltcGxlX2Zvcm1hdDsgLyogc3RydWN0IG1vZHVsZSBzcGVjaWZpZXI6ICJCIiAqLworICAgIGludCBmbGFncyA9IE5EX0RFRkFVTFQ7ICAgICAgICAgICAvKiBiYXNlIGJ1ZmZlciBhbmQgbmRhcnJheSBmbGFncyAqLworCisgICAgaW50IGdldGJ1ZiA9IFB5QlVGX1VOVVNFRDsgLyogcmUtZXhwb3J0ZXI6IGdldGJ1ZmZlciByZXF1ZXN0IGZsYWdzICovCisKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9Pbk9paSIsIGt3bGlzdCwKKyAgICAgICAgICAgICZ2LCAmc2hhcGUsICZzdHJpZGVzLCAmb2Zmc2V0LCAmZm9ybWF0LCAmZmxhZ3MsICZnZXRidWYpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiBOREFycmF5T2JqZWN0IGlzIHJlLWV4cG9ydGVyICovCisgICAgaWYgKFB5T2JqZWN0X0NoZWNrQnVmZmVyKHYpICYmIHNoYXBlID09IE5VTEwpIHsKKyAgICAgICAgaWYgKHN0cmlkZXMgfHwgb2Zmc2V0IHx8IGZvcm1hdCAhPSBzaW1wbGVfZm9ybWF0IHx8CisgICAgICAgICAgICAhKGZsYWdzID09IE5EX0RFRkFVTFQgfHwgZmxhZ3MgPT0gTkRfUkVESVJFQ1QpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgImNvbnN0cnVjdGlvbiBmcm9tIGV4cG9ydGVyIG9iamVjdCBvbmx5IHRha2VzICdvYmonLCAnZ2V0YnVmJyAiCisgICAgICAgICAgICAgICAiYW5kICdmbGFncycgYXJndW1lbnRzIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBnZXRidWYgPSAoZ2V0YnVmID09IFB5QlVGX1VOVVNFRCkgPyBQeUJVRl9GVUxMX1JPIDogZ2V0YnVmOworCisgICAgICAgIGlmIChuZGFycmF5X2luaXRfc3RhdGljYnVmKHYsIG5kLCBnZXRidWYpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICBpbml0X2ZsYWdzKG5kLT5oZWFkKTsKKyAgICAgICAgbmQtPmhlYWQtPmZsYWdzIHw9IGZsYWdzOworCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIE5EQXJyYXlPYmplY3QgaXMgdGhlIG9yaWdpbmFsIGJhc2Ugb2JqZWN0LiAqLworICAgIGlmIChnZXRidWYgIT0gUHlCVUZfVU5VU0VEKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiZ2V0YnVmIGFyZ3VtZW50IG9ubHkgdmFsaWQgZm9yIGNvbnN0cnVjdGlvbiBmcm9tIGV4cG9ydGVyICIKKyAgICAgICAgICAgICJvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoc2hhcGUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgInNoYXBlIGlzIGEgcmVxdWlyZWQgYXJndW1lbnQgd2hlbiBjb25zdHJ1Y3RpbmcgZnJvbSAiCisgICAgICAgICAgICAibGlzdCwgdHVwbGUgb3Igc2NhbGFyIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoZmxhZ3MgJiBORF9WQVJFWFBPUlQpIHsKKyAgICAgICAgbmQtPmZsYWdzIHw9IE5EX1ZBUkVYUE9SVDsKKyAgICAgICAgZmxhZ3MgJj0gfk5EX1ZBUkVYUE9SVDsKKyAgICB9CisKKyAgICAvKiBJbml0aWFsaXplIGFuZCBwdXNoIHRoZSBmaXJzdCBiYXNlIGJ1ZmZlciBvbnRvIHRoZSBsaW5rZWQgbGlzdC4gKi8KKyAgICByZXR1cm4gbmRhcnJheV9wdXNoX2Jhc2UobmQsIHYsIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQsIGZvcm1hdCwgZmxhZ3MpOworfQorCisvKiBQdXNoIGFuIGFkZGl0aW9uYWwgYmFzZSBvbnRvIHRoZSBsaW5rZWQgbGlzdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X3B1c2goUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZCA9IChOREFycmF5T2JqZWN0ICopc2VsZjsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7CisgICAgICAgICJpdGVtcyIsICJzaGFwZSIsICJzdHJpZGVzIiwgIm9mZnNldCIsICJmb3JtYXQiLCAiZmxhZ3MiLCBOVUxMCisgICAgfTsKKyAgICBQeU9iamVjdCAqaXRlbXMgPSBOVUxMOyAgIC8qIGluaXRpYWxpemVyOiBzY2FsYXIsIGxpc3Qgb3IgdHVwbGUgKi8KKyAgICBQeU9iamVjdCAqc2hhcGUgPSBOVUxMOyAgIC8qIHNpemUgb2YgZWFjaCBkaW1lbnNpb24gKi8KKyAgICBQeU9iamVjdCAqc3RyaWRlcyA9IE5VTEw7IC8qIG51bWJlciBvZiBieXRlcyB0byB0aGUgbmV4dCBlbHQgaW4gZWFjaCBkaW0gKi8KKyAgICBQeU9iamVjdCAqZm9ybWF0ID0gc2ltcGxlX2Zvcm1hdDsgIC8qIHN0cnVjdCBtb2R1bGUgc3BlY2lmaWVyOiAiQiIgKi8KKyAgICBQeV9zc2l6ZV90IG9mZnNldCA9IDA7ICAgICAgICAgICAgIC8qIGJ1ZmZlciBvZmZzZXQgKi8KKyAgICBpbnQgZmxhZ3MgPSBORF9ERUZBVUxUOyAgICAgICAgICAgIC8qIGJhc2UgYnVmZmVyIGZsYWdzICovCisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT098T25PaSIsIGt3bGlzdCwKKyAgICAgICAgICAgICZpdGVtcywgJnNoYXBlLCAmc3RyaWRlcywgJm9mZnNldCwgJmZvcm1hdCwgJmZsYWdzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZmxhZ3MgJiBORF9WQVJFWFBPUlQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiTkRfVkFSRVhQT1JUIGZsYWcgY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgb2JqZWN0IGNyZWF0aW9uIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoTkRfSVNfQ09OU1VNRVIobmQpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJzdHJ1Y3R1cmUgb2YgcmUtZXhwb3J0aW5nIG9iamVjdCBpcyBpbW11dGFibGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICghKG5kLT5mbGFncyZORF9WQVJFWFBPUlQpICYmIG5kLT5oZWFkLT5leHBvcnRzID4gMCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAiY2Fubm90IGNoYW5nZSBzdHJ1Y3R1cmU6ICV6ZCBleHBvcnRlZCBidWZmZXIlcyIsCisgICAgICAgICAgICBuZC0+aGVhZC0+ZXhwb3J0cywgbmQtPmhlYWQtPmV4cG9ydHM9PTEgPyAiIiA6ICJzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChuZGFycmF5X3B1c2hfYmFzZShuZCwgaXRlbXMsIHNoYXBlLCBzdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsIGZvcm1hdCwgZmxhZ3MpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKy8qIFBvcCBhIGJhc2UgZnJvbSB0aGUgbGlua2VkIGxpc3QgKGlmIHBvc3NpYmxlKS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X3BvcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIE5EQXJyYXlPYmplY3QgKm5kID0gKE5EQXJyYXlPYmplY3QgKilzZWxmOworICAgIGlmIChORF9JU19DT05TVU1FUihuZCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgInN0cnVjdHVyZSBvZiByZS1leHBvcnRpbmcgb2JqZWN0IGlzIGltbXV0YWJsZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKG5kLT5oZWFkLT5leHBvcnRzID4gMCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAiY2Fubm90IGNoYW5nZSBzdHJ1Y3R1cmU6ICV6ZCBleHBvcnRlZCBidWZmZXIlcyIsCisgICAgICAgICAgICBuZC0+aGVhZC0+ZXhwb3J0cywgbmQtPmhlYWQtPmV4cG9ydHM9PTEgPyAiIiA6ICJzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAobmQtPmhlYWQtPm5leHQgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibGlzdCBvbmx5IGhhcyBhIHNpbmdsZSBiYXNlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG5kYnVmX3BvcChuZCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGludAorbmRhcnJheV9nZXRidWYoTkRBcnJheU9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICp2aWV3LCBpbnQgZmxhZ3MpCit7CisgICAgbmRidWZfdCAqbmRidWYgPSBzZWxmLT5oZWFkOworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZuZGJ1Zi0+YmFzZTsKKyAgICBpbnQgYmFzZWZsYWdzID0gbmRidWYtPmZsYWdzOworCisgICAgLyogcmVkaXJlY3QgbW9kZSAqLworICAgIGlmIChiYXNlLT5vYmogIT0gTlVMTCAmJiAoYmFzZWZsYWdzJk5EX1JFRElSRUNUKSkgeworICAgICAgICByZXR1cm4gUHlPYmplY3RfR2V0QnVmZmVyKGJhc2UtPm9iaiwgdmlldywgZmxhZ3MpOworICAgIH0KKworICAgIC8qIHN0YXJ0IHdpdGggY29tcGxldGUgaW5mb3JtYXRpb24gKi8KKyAgICAqdmlldyA9ICpiYXNlOworICAgIHZpZXctPm9iaiA9IE5VTEw7CisKKyAgICAvKiByZWNvbnN0cnVjdCBmb3JtYXQgKi8KKyAgICBpZiAodmlldy0+Zm9ybWF0ID09IE5VTEwpCisgICAgICAgIHZpZXctPmZvcm1hdCA9ICJCIjsKKworICAgIGlmIChiYXNlLT5uZGltICE9IDAgJiYKKyAgICAgICAgKChSRVFfU0hBUEUoZmxhZ3MpICYmIGJhc2UtPnNoYXBlID09IE5VTEwpIHx8CisgICAgICAgICAoUkVRX1NUUklERVMoZmxhZ3MpICYmIGJhc2UtPnN0cmlkZXMgPT0gTlVMTCkpKSB7CisgICAgICAgIC8qIFRoZSBuZGFycmF5IGlzIGEgcmUtZXhwb3J0ZXIgdGhhdCBoYXMgYmVlbiBjcmVhdGVkIHdpdGhvdXQgZnVsbAorICAgICAgICAgICBpbmZvcm1hdGlvbiBmb3IgdGVzdGluZyBwdXJwb3Nlcy4gSW4gdGhpcyBwYXJ0aWN1bGFyIGNhc2UgdGhlCisgICAgICAgICAgIG5kYXJyYXkgaXMgbm90IGEgUEVQLTMxMTggY29tcGxpYW50IGJ1ZmZlciBwcm92aWRlci4gKi8KKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgInJlLWV4cG9ydGVyIGRvZXMgbm90IHByb3ZpZGUgZm9ybWF0LCBzaGFwZSBvciBzdHJpZGVzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoYmFzZWZsYWdzICYgTkRfR0VUQlVGX0ZBSUwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgIk5EX0dFVEJVRl9GQUlMOiBmb3JjZWQgdGVzdCBleGNlcHRpb24iKTsKKyAgICAgICAgaWYgKGJhc2VmbGFncyAmIE5EX0dFVEJVRl9VTkRFRklORUQpCisgICAgICAgICAgICB2aWV3LT5vYmogPSAoUHlPYmplY3QgKikweDE7IC8qIHdyb25nIGJ1dCBwZXJtaXR0ZWQgaW4gPD0gMy4yICovCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoUkVRX1dSSVRBQkxFKGZsYWdzKSAmJiBiYXNlLT5yZWFkb25seSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibmRhcnJheSBpcyBub3Qgd3JpdGFibGUiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoIVJFUV9GT1JNQVQoZmxhZ3MpKSB7CisgICAgICAgIC8qIE5VTEwgaW5kaWNhdGVzIHRoYXQgdGhlIGJ1ZmZlcidzIGRhdGEgdHlwZSBoYXMgYmVlbiBjYXN0IHRvICdCJy4KKyAgICAgICAgICAgdmlldy0+aXRlbXNpemUgaXMgdGhlIF9wcmV2aW91c18gaXRlbXNpemUuIElmIHNoYXBlIGlzIHByZXNlbnQsCisgICAgICAgICAgIHRoZSBlcXVhbGl0eSBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplID0gbGVuIHN0aWxsIGhvbGRzIGF0IHRoaXMKKyAgICAgICAgICAgcG9pbnQuIFRoZSBlcXVhbGl0eSBjYWxjc2l6ZShmb3JtYXQpID0gaXRlbXNpemUgZG9lcyBfbm90XyBob2xkCisgICAgICAgICAgIGZyb20gaGVyZSBvbiEgKi8KKyAgICAgICAgdmlldy0+Zm9ybWF0ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUkVRX0NfQ09OVElHVU9VUyhmbGFncykgJiYgIU5EX0NfQ09OVElHVU9VUyhiYXNlZmxhZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJuZGFycmF5IGlzIG5vdCBDLWNvbnRpZ3VvdXMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoUkVRX0ZfQ09OVElHVU9VUyhmbGFncykgJiYgIU5EX0ZPUlRSQU5fQ09OVElHVU9VUyhiYXNlZmxhZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJuZGFycmF5IGlzIG5vdCBGb3J0cmFuIGNvbnRpZ3VvdXMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoUkVRX0FOWV9DT05USUdVT1VTKGZsYWdzKSAmJiAhTkRfQU5ZX0NPTlRJR1VPVVMoYmFzZWZsYWdzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibmRhcnJheSBpcyBub3QgY29udGlndW91cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICghUkVRX0lORElSRUNUKGZsYWdzKSAmJiAoYmFzZWZsYWdzICYgTkRfUElMKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibmRhcnJheSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgd2l0aG91dCBzdWJvZmZzZXRzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKCFSRVFfU1RSSURFUyhmbGFncykpIHsKKyAgICAgICAgaWYgKCFORF9DX0NPTlRJR1VPVVMoYmFzZWZsYWdzKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgICAgICJuZGFycmF5IGlzIG5vdCBDLWNvbnRpZ3VvdXMiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICB2aWV3LT5zdHJpZGVzID0gTlVMTDsKKyAgICB9CisgICAgaWYgKCFSRVFfU0hBUEUoZmxhZ3MpKSB7CisgICAgICAgIC8qIFB5QlVGX1NJTVBMRSBvciBQeUJVRl9XUklUQUJMRTogYXQgdGhpcyBwb2ludCBidWYgaXMgQy1jb250aWd1b3VzLAorICAgICAgICAgICBzbyBiYXNlLT5idWYgPSBuZGJ1Zi0+ZGF0YS4gKi8KKyAgICAgICAgaWYgKHZpZXctPmZvcm1hdCAhPSBOVUxMKSB7CisgICAgICAgICAgICAvKiBQeUJVRl9TSU1QTEV8UHlCVUZfRk9STUFUIGFuZCBQeUJVRl9XUklUQUJMRXxQeUJVRl9GT1JNQVQgZG8KKyAgICAgICAgICAgICAgIG5vdCBtYWtlIHNlbnNlLiAqLworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgICAgICJuZGFycmF5OiBjYW5ub3QgY2FzdCB0byB1bnNpZ25lZCBieXRlcyBpZiB0aGUgZm9ybWF0IGZsYWcgIgorICAgICAgICAgICAgICAgICJpcyBwcmVzZW50Iik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgLyogcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSA9IGxlbiBhbmQgY2FsY3NpemUoZm9ybWF0KSA9IGl0ZW1zaXplCisgICAgICAgICAgIGRvIF9ub3RfIGhvbGQgZnJvbSBoZXJlIG9uISAqLworICAgICAgICB2aWV3LT5uZGltID0gMTsKKyAgICAgICAgdmlldy0+c2hhcGUgPSBOVUxMOworICAgIH0KKworICAgIHZpZXctPm9iaiA9IChQeU9iamVjdCAqKXNlbGY7CisgICAgUHlfSU5DUkVGKHZpZXctPm9iaik7CisgICAgc2VsZi0+aGVhZC0+ZXhwb3J0cysrOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK25kYXJyYXlfcmVsZWFzZWJ1ZihOREFycmF5T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnZpZXcpCit7CisgICAgaWYgKCFORF9JU19DT05TVU1FUihzZWxmKSkgeworICAgICAgICBuZGJ1Zl90ICpuZGJ1ZiA9IHZpZXctPmludGVybmFsOworICAgICAgICBpZiAoLS1uZGJ1Zi0+ZXhwb3J0cyA9PSAwICYmIG5kYnVmICE9IHNlbGYtPmhlYWQpCisgICAgICAgICAgICBuZGJ1Zl9kZWxldGUoc2VsZiwgbmRidWYpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlCdWZmZXJQcm9jcyBuZGFycmF5X2FzX2J1ZmZlciA9IHsKKyAgICAoZ2V0YnVmZmVycHJvYyluZGFycmF5X2dldGJ1ZiwgICAgICAgIC8qIGJmX2dldGJ1ZmZlciAqLworICAgIChyZWxlYXNlYnVmZmVycHJvYyluZGFycmF5X3JlbGVhc2VidWYgLyogYmZfcmVsZWFzZWJ1ZmZlciAqLworfTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4aW5nL3NsaWNpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBjaGFyICoKK3B0cl9mcm9tX2luZGV4KFB5X2J1ZmZlciAqYmFzZSwgUHlfc3NpemVfdCBpbmRleCkKK3sKKyAgICBjaGFyICpwdHI7CisgICAgUHlfc3NpemVfdCBuaXRlbXM7IC8qIGl0ZW1zIGluIHRoZSBmaXJzdCBkaW1lbnNpb24gKi8KKworICAgIGlmIChiYXNlLT5zaGFwZSkKKyAgICAgICAgbml0ZW1zID0gYmFzZS0+c2hhcGVbMF07CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydChiYXNlLT5uZGltID09IDEgJiYgU0lNUExFX0ZPUk1BVChiYXNlLT5mb3JtYXQpKTsKKyAgICAgICAgbml0ZW1zID0gYmFzZS0+bGVuOworICAgIH0KKworICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgaW5kZXggKz0gbml0ZW1zOworICAgIH0KKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IG5pdGVtcykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgImluZGV4IG91dCBvZiBib3VuZHMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcHRyID0gKGNoYXIgKiliYXNlLT5idWY7CisKKyAgICBpZiAoYmFzZS0+c3RyaWRlcyA9PSBOVUxMKQorICAgICAgICAgcHRyICs9IGJhc2UtPml0ZW1zaXplICogaW5kZXg7CisgICAgZWxzZQorICAgICAgICAgcHRyICs9IGJhc2UtPnN0cmlkZXNbMF0gKiBpbmRleDsKKworICAgIHB0ciA9IEFESlVTVF9QVFIocHRyLCBiYXNlLT5zdWJvZmZzZXRzKTsKKworICAgIHJldHVybiBwdHI7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2l0ZW0oTkRBcnJheU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCkKK3sKKyAgICBuZGJ1Zl90ICpuZGJ1ZiA9IHNlbGYtPmhlYWQ7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kYnVmLT5iYXNlOworICAgIGNoYXIgKnB0cjsKKworICAgIGlmIChiYXNlLT5uZGltID09IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImludmFsaWQgaW5kZXhpbmcgb2Ygc2NhbGFyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHB0ciA9IHB0cl9mcm9tX2luZGV4KGJhc2UsIGluZGV4KTsKKyAgICBpZiAocHRyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGJhc2UtPm5kaW0gPT0gMSkgeworICAgICAgICByZXR1cm4gdW5wYWNrX3NpbmdsZShwdHIsIGJhc2UtPmZvcm1hdCwgYmFzZS0+aXRlbXNpemUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgTkRBcnJheU9iamVjdCAqbmQ7CisgICAgICAgIFB5X2J1ZmZlciAqc3VidmlldzsKKworICAgICAgICBuZCA9IChOREFycmF5T2JqZWN0ICopbmRhcnJheV9uZXcoJk5EQXJyYXlfVHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmIChuZCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgaWYgKG5kYXJyYXlfaW5pdF9zdGF0aWNidWYoKFB5T2JqZWN0ICopc2VsZiwgbmQsIFB5QlVGX0ZVTExfUk8pIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKG5kKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgc3VidmlldyA9ICZuZC0+c3RhdGljYnVmLmJhc2U7CisKKyAgICAgICAgc3Vidmlldy0+YnVmID0gcHRyOworICAgICAgICBzdWJ2aWV3LT5sZW4gLz0gc3Vidmlldy0+c2hhcGVbMF07CisKKyAgICAgICAgc3Vidmlldy0+bmRpbS0tOworICAgICAgICBzdWJ2aWV3LT5zaGFwZSsrOworICAgICAgICBpZiAoc3Vidmlldy0+c3RyaWRlcykgc3Vidmlldy0+c3RyaWRlcysrOworICAgICAgICBpZiAoc3Vidmlldy0+c3Vib2Zmc2V0cykgc3Vidmlldy0+c3Vib2Zmc2V0cysrOworCisgICAgICAgIGluaXRfZmxhZ3MoJm5kLT5zdGF0aWNidWYpOworCisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKiluZDsKKyAgICB9Cit9CisKKy8qCisgIEZvciBlYWNoIGRpbWVuc2lvbiwgd2UgZ2V0IHZhbGlkIChzdGFydCwgc3RvcCwgc3RlcCwgc2xpY2VsZW5ndGgpIHF1YWRydXBsZXMKKyAgZnJvbSBQeVNsaWNlX0dldEluZGljZXNFeCgpLgorCisgIFNsaWNpbmcgTnVtUHkgYXJyYXlzCisgID09PT09PT09PT09PT09PT09PT09CisKKyAgICBBIHBvaW50ZXIgdG8gYW4gZWxlbWVudCBpbiBhIE51bVB5IGFycmF5IGlzIGRlZmluZWQgYnk6CisKKyAgICAgIHB0ciA9IChjaGFyICopYnVmICsgaW5kaWNlc1swXSAqIHN0cmlkZXNbMF0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4gKworICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzW25kaW0tMV0gKiBzdHJpZGVzW25kaW0tMV0KKworICAgIEFkanVzdCBidWY6CisgICAgLS0tLS0tLS0tLS0KKyAgICAgIEFkZGluZyBzdGFydFtuXSBmb3IgZWFjaCBkaW1lbnNpb24gZWZmZWN0aXZlbHkgYWRkcyB0aGUgY29uc3RhbnQ6CisKKyAgICAgICAgYyA9IHN0YXJ0WzBdICogc3RyaWRlc1swXSArIC4uLiArIHN0YXJ0W25kaW0tMV0gKiBzdHJpZGVzW25kaW0tMV0KKworICAgICAgVGhlcmVmb3JlIGluaXRfc2xpY2UoKSBhZGRzIGFsbCBzdGFydFtuXSBkaXJlY3RseSB0byBidWYuCisKKyAgICBBZGp1c3Qgc2hhcGU6CisgICAgLS0tLS0tLS0tLS0tLQorICAgICAgT2J2aW91c2x5IHNoYXBlW25dID0gc2xpY2VsZW5ndGhbbl0KKworICAgIEFkanVzdCBzdHJpZGVzOgorICAgIC0tLS0tLS0tLS0tLS0tLQorICAgICAgSW4gdGhlIG9yaWdpbmFsIGFycmF5LCB0aGUgbmV4dCBlbGVtZW50IGluIGEgZGltZW5zaW9uIGlzIHJlYWNoZWQKKyAgICAgIGJ5IGFkZGluZyBzdHJpZGVzW25dIHRvIHRoZSBwb2ludGVyLiBJbiB0aGUgc2xpY2VkIGFycmF5LCBlbGVtZW50cworICAgICAgbWF5IGJlIHNraXBwZWQsIHNvIHRoZSBuZXh0IGVsZW1lbnQgaXMgcmVhY2hlZCBieSBhZGRpbmc6CisKKyAgICAgICAgc3RyaWRlc1tuXSAqIHN0ZXBbbl0KKworICBTbGljaW5nIFBJTCBhcnJheXMKKyAgPT09PT09PT09PT09PT09PT09CisKKyAgICBMYXlvdXQ6CisgICAgLS0tLS0tLQorICAgICAgSW4gdGhlIGZpcnN0ICh6ZXJvdGgpIGRpbWVuc2lvbiwgUElMIGFycmF5cyBoYXZlIGFuIGFycmF5IG9mIHBvaW50ZXJzCisgICAgICB0byBzdWItYXJyYXlzIG9mIG5kaW0tMS4gU3RyaWRpbmcgaW4gdGhlIGZpcnN0IGRpbWVuc2lvbiBpcyBkb25lIGJ5CisgICAgICBnZXR0aW5nIHRoZSBpbmRleCBvZiB0aGUgbnRoIHBvaW50ZXIsIGRlcmVmZXJlbmNlIGl0IGFuZCB0aGVuIGFkZCBhCisgICAgICBzdWJvZmZzZXQgdG8gaXQuIFRoZSBhcnJheXMgcG9pbnRlZCB0byBjYW4gYmVzdCBiZSBzZWVuIGEgcmVndWxhcgorICAgICAgTnVtUHkgYXJyYXlzLgorCisgICAgQWRqdXN0IGJ1ZjoKKyAgICAtLS0tLS0tLS0tLQorICAgICAgSW4gdGhlIG9yaWdpbmFsIGFycmF5LCBidWYgcG9pbnRzIHRvIGEgbG9jYXRpb24gKHVzdWFsbHkgdGhlIHN0YXJ0KQorICAgICAgaW4gdGhlIGFycmF5IG9mIHBvaW50ZXJzLiBGb3IgdGhlIHNsaWNlZCBhcnJheSwgc3RhcnRbMF0gY2FuIGJlCisgICAgICBhZGRlZCB0byBidWYgaW4gdGhlIHNhbWUgbWFubmVyIGFzIGZvciBOdW1QeSBhcnJheXMuCisKKyAgICBBZGp1c3Qgc3Vib2Zmc2V0czoKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIER1ZSB0byB0aGUgZGVyZWZlcmVuY2luZyBzdGVwIGluIHRoZSBhZGRyZXNzaW5nIHNjaGVtZSwgaXQgaXMgbm90CisgICAgICBwb3NzaWJsZSB0byBhZGp1c3QgYnVmIGZvciBoaWdoZXIgZGltZW5zaW9ucy4gUmVjYWxsIHRoYXQgdGhlCisgICAgICBzdWItYXJyYXlzIHBvaW50ZWQgdG8gYXJlIHJlZ3VsYXIgTnVtUHkgYXJyYXlzLCBzbyBmb3IgZWFjaCBvZgorICAgICAgdGhvc2UgYXJyYXlzIGFkZGluZyBzdGFydFtuXSBlZmZlY3RpdmVseSBhZGRzIHRoZSBjb25zdGFudDoKKworICAgICAgICBjID0gc3RhcnRbMV0gKiBzdHJpZGVzWzFdICsgLi4uICsgc3RhcnRbbmRpbS0xXSAqIHN0cmlkZXNbbmRpbS0xXQorCisgICAgICBUaGlzIGNvbnN0YW50IGlzIGFkZGVkIHRvIHN1Ym9mZnNldHNbMF0uIHN1Ym9mZnNldHNbMF0gaW4gdHVybiBpcworICAgICAgYWRkZWQgdG8gZWFjaCBwb2ludGVyIHJpZ2h0IGFmdGVyIGRlcmVmZXJlbmNpbmcuCisKKyAgICBBZGp1c3Qgc2hhcGUgYW5kIHN0cmlkZXM6CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgU2hhcGUgYW5kIHN0cmlkZXMgYXJlIG5vdCBpbmZsdWVuY2VkIGJ5IHRoZSBkZXJlZmVyZW5jaW5nIHN0ZXAsIHNvCisgICAgICB0aGV5IGFyZSBhZGp1c3RlZCBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgZm9yIE51bVB5IGFycmF5cy4KKworICBNdWx0aXBsZSBsZXZlbHMgb2Ygc3Vib2Zmc2V0cworICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgICBGb3IgYSBjb25zdHJ1Y3QgbGlrZSBhbiBhcnJheSBvZiBwb2ludGVycyB0byBhcnJheSBvZiBwb2ludGVycyB0bworICAgICAgc3ViLWFycmF5cyBvZiBuZGltLTI6CisKKyAgICAgICAgc3Vib2Zmc2V0c1swXSA9IHN0YXJ0WzFdICogc3RyaWRlc1sxXQorICAgICAgICBzdWJvZmZzZXRzWzFdID0gc3RhcnRbMl0gKiBzdHJpZGVzWzJdICsgLi4uCisqLworc3RhdGljIGludAoraW5pdF9zbGljZShQeV9idWZmZXIgKmJhc2UsIFB5T2JqZWN0ICprZXksIGludCBkaW0pCit7CisgICAgUHlfc3NpemVfdCBzdGFydCwgc3RvcCwgc3RlcCwgc2xpY2VsZW5ndGg7CisKKyAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoa2V5LCBiYXNlLT5zaGFwZVtkaW1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZzdG9wLCAmc3RlcCwgJnNsaWNlbGVuZ3RoKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworCisgICAgaWYgKGJhc2UtPnN1Ym9mZnNldHMgPT0gTlVMTCB8fCBkaW0gPT0gMCkgeworICAgIGFkanVzdF9idWY6CisgICAgICAgIGJhc2UtPmJ1ZiA9IChjaGFyICopYmFzZS0+YnVmICsgYmFzZS0+c3RyaWRlc1tkaW1dICogc3RhcnQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9zc2l6ZV90IG4gPSBkaW0tMTsKKyAgICAgICAgd2hpbGUgKG4gPj0gMCAmJiBiYXNlLT5zdWJvZmZzZXRzW25dIDwgMCkKKyAgICAgICAgICAgIG4tLTsKKyAgICAgICAgaWYgKG4gPCAwKQorICAgICAgICAgICAgZ290byBhZGp1c3RfYnVmOyAvKiBhbGwgc3Vib2Zmc2V0cyBhcmUgbmVnYXRpdmUgKi8KKyAgICAgICAgYmFzZS0+c3Vib2Zmc2V0c1tuXSA9IGJhc2UtPnN1Ym9mZnNldHNbbl0gKyBiYXNlLT5zdHJpZGVzW2RpbV0gKiBzdGFydDsKKyAgICB9CisgICAgYmFzZS0+c2hhcGVbZGltXSA9IHNsaWNlbGVuZ3RoOworICAgIGJhc2UtPnN0cmlkZXNbZGltXSA9IGJhc2UtPnN0cmlkZXNbZGltXSAqIHN0ZXA7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorY29weV9zdHJ1Y3R1cmUoUHlfYnVmZmVyICpiYXNlKQoreworICAgIFB5X3NzaXplX3QgKnNoYXBlID0gTlVMTCwgKnN0cmlkZXMgPSBOVUxMLCAqc3Vib2Zmc2V0cyA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgc2hhcGUgPSBQeU1lbV9NYWxsb2MoYmFzZS0+bmRpbSAqIChzaXplb2YgKnNoYXBlKSk7CisgICAgc3RyaWRlcyA9IFB5TWVtX01hbGxvYyhiYXNlLT5uZGltICogKHNpemVvZiAqc3RyaWRlcykpOworICAgIGlmIChzaGFwZSA9PSBOVUxMIHx8IHN0cmlkZXMgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJfbm9tZW07CisKKyAgICBzdWJvZmZzZXRzID0gTlVMTDsKKyAgICBpZiAoYmFzZS0+c3Vib2Zmc2V0cykgeworICAgICAgICBzdWJvZmZzZXRzID0gUHlNZW1fTWFsbG9jKGJhc2UtPm5kaW0gKiAoc2l6ZW9mICpzdWJvZmZzZXRzKSk7CisgICAgICAgIGlmIChzdWJvZmZzZXRzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycl9ub21lbTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgYmFzZS0+bmRpbTsgaSsrKSB7CisgICAgICAgIHNoYXBlW2ldID0gYmFzZS0+c2hhcGVbaV07CisgICAgICAgIHN0cmlkZXNbaV0gPSBiYXNlLT5zdHJpZGVzW2ldOworICAgICAgICBpZiAoc3Vib2Zmc2V0cykKKyAgICAgICAgICAgIHN1Ym9mZnNldHNbaV0gPSBiYXNlLT5zdWJvZmZzZXRzW2ldOworICAgIH0KKworICAgIGJhc2UtPnNoYXBlID0gc2hhcGU7CisgICAgYmFzZS0+c3RyaWRlcyA9IHN0cmlkZXM7CisgICAgYmFzZS0+c3Vib2Zmc2V0cyA9IHN1Ym9mZnNldHM7CisKKyAgICByZXR1cm4gMDsKKworZXJyX25vbWVtOgorICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgUHlNZW1fWEZyZWUoc2hhcGUpOworICAgIFB5TWVtX1hGcmVlKHN0cmlkZXMpOworICAgIFB5TWVtX1hGcmVlKHN1Ym9mZnNldHMpOworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfc3Vic2NyaXB0KE5EQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXkpCit7CisgICAgTkRBcnJheU9iamVjdCAqbmQ7CisgICAgbmRidWZfdCAqbmRidWY7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisKKyAgICBpZiAoYmFzZS0+bmRpbSA9PSAwKSB7CisgICAgICAgIGlmIChQeVR1cGxlX0NoZWNrKGtleSkgJiYgUHlUdXBsZV9HRVRfU0laRShrZXkpID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiB1bnBhY2tfc2luZ2xlKGJhc2UtPmJ1ZiwgYmFzZS0+Zm9ybWF0LCBiYXNlLT5pdGVtc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoa2V5ID09IFB5X0VsbGlwc2lzKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJpbnZhbGlkIGluZGV4aW5nIG9mIHNjYWxhciIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKFB5SW5kZXhfQ2hlY2soa2V5KSkgeworICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChrZXkpOworICAgICAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gbmRhcnJheV9pdGVtKHNlbGYsIGluZGV4KTsKKyAgICB9CisKKyAgICBuZCA9IChOREFycmF5T2JqZWN0ICopbmRhcnJheV9uZXcoJk5EQXJyYXlfVHlwZSwgTlVMTCwgTlVMTCk7CisgICAgaWYgKG5kID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogbmV3IG5kYXJyYXkgaXMgYSBjb25zdW1lciAqLworICAgIGlmIChuZGFycmF5X2luaXRfc3RhdGljYnVmKChQeU9iamVjdCAqKXNlbGYsIG5kLCBQeUJVRl9GVUxMX1JPKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKG5kKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogY29weSBzaGFwZSwgc3RyaWRlcyBhbmQgc3Vib2Zmc2V0cyAqLworICAgIG5kYnVmID0gbmQtPmhlYWQ7CisgICAgYmFzZSA9ICZuZGJ1Zi0+YmFzZTsKKyAgICBpZiAoY29weV9zdHJ1Y3R1cmUoYmFzZSkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihuZCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBuZGJ1Zi0+ZmxhZ3MgfD0gTkRfT1dOX0FSUkFZUzsKKworICAgIGlmIChQeVNsaWNlX0NoZWNrKGtleSkpIHsKKyAgICAgICAgLyogb25lLWRpbWVuc2lvbmFsIHNsaWNlICovCisgICAgICAgIGlmIChpbml0X3NsaWNlKGJhc2UsIGtleSwgMCkgPCAwKQorICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7CisgICAgfQorICAgIGVsc2UgaWYgUHlUdXBsZV9DaGVjayhrZXkpIHsKKyAgICAgICAgLyogbXVsdGktZGltZW5zaW9uYWwgc2xpY2UgKi8KKyAgICAgICAgUHlPYmplY3QgKnR1cGxlID0ga2V5OworICAgICAgICBQeV9zc2l6ZV90IGksIG47CisKKyAgICAgICAgbiA9IFB5VHVwbGVfR0VUX1NJWkUodHVwbGUpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBrZXkgPSBQeVR1cGxlX0dFVF9JVEVNKHR1cGxlLCBpKTsKKyAgICAgICAgICAgIGlmICghUHlTbGljZV9DaGVjayhrZXkpKQorICAgICAgICAgICAgICAgIGdvdG8gdHlwZV9lcnJvcjsKKyAgICAgICAgICAgIGlmIChpbml0X3NsaWNlKGJhc2UsIGtleSwgKGludClpKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGdvdG8gdHlwZV9lcnJvcjsKKyAgICB9CisKKyAgICBpbml0X2xlbihiYXNlKTsKKyAgICBpbml0X2ZsYWdzKG5kYnVmKTsKKworICAgIHJldHVybiAoUHlPYmplY3QgKiluZDsKKworCit0eXBlX2Vycm9yOgorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICJjYW5ub3QgaW5kZXggbWVtb3J5IHVzaW5nIFwiJS4yMDBzXCIiLAorICAgICAgICBrZXktPm9iX3R5cGUtPnRwX25hbWUpOworZXJyX29jY3VycmVkOgorICAgIFB5X0RFQ1JFRihuZCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworc3RhdGljIGludAorbmRhcnJheV9hc3Nfc3Vic2NyaXB0KE5EQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZDsKKyAgICBQeV9idWZmZXIgKmRlc3QgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKyAgICBQeV9idWZmZXIgc3JjOworICAgIGNoYXIgKnB0cjsKKyAgICBQeV9zc2l6ZV90IGluZGV4OworICAgIGludCByZXQgPSAtMTsKKworICAgIGlmIChkZXN0LT5yZWFkb25seSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAibmRhcnJheSBpcyBub3Qgd3JpdGFibGUiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAibmRhcnJheSBkYXRhIGNhbm5vdCBiZSBkZWxldGVkIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKGRlc3QtPm5kaW0gPT0gMCkgeworICAgICAgICBpZiAoa2V5ID09IFB5X0VsbGlwc2lzIHx8CisgICAgICAgICAgICAoUHlUdXBsZV9DaGVjayhrZXkpICYmIFB5VHVwbGVfR0VUX1NJWkUoa2V5KSA9PSAwKSkgeworICAgICAgICAgICAgcHRyID0gKGNoYXIgKilkZXN0LT5idWY7CisgICAgICAgICAgICByZXR1cm4gcGFja19zaW5nbGUocHRyLCB2YWx1ZSwgZGVzdC0+Zm9ybWF0LCBkZXN0LT5pdGVtc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiaW52YWxpZCBpbmRleGluZyBvZiBzY2FsYXIiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoZGVzdC0+bmRpbSA9PSAxICYmIFB5SW5kZXhfQ2hlY2soa2V5KSkgeworICAgICAgICAvKiBydmFsdWUgbXVzdCBiZSBhIHNpbmdsZSBpdGVtICovCisgICAgICAgIGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChrZXkpOworICAgICAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwdHIgPSBwdHJfZnJvbV9pbmRleChkZXN0LCBpbmRleCk7CisgICAgICAgICAgICBpZiAocHRyID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHJldHVybiBwYWNrX3NpbmdsZShwdHIsIHZhbHVlLCBkZXN0LT5mb3JtYXQsIGRlc3QtPml0ZW1zaXplKTsKKyAgICB9CisKKyAgICAvKiBydmFsdWUgbXVzdCBiZSBhbiBleHBvcnRlciAqLworICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIodmFsdWUsICZzcmMsIFB5QlVGX0ZVTExfUk8pID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBuZCA9IChOREFycmF5T2JqZWN0ICopbmRhcnJheV9zdWJzY3JpcHQoc2VsZiwga2V5KTsKKyAgICBpZiAobmQgIT0gTlVMTCkgeworICAgICAgICBkZXN0ID0gJm5kLT5oZWFkLT5iYXNlOworICAgICAgICByZXQgPSBjb3B5X2J1ZmZlcihkZXN0LCAmc3JjKTsKKyAgICAgICAgUHlfREVDUkVGKG5kKTsKKyAgICB9CisKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzcmMpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitzbGljZV9pbmRpY2VzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0LCAqa2V5LCAqdG1wOworICAgIFB5X3NzaXplX3Qgc1s0XTsgLyogc3RhcnQsIHN0b3AsIHN0ZXAsIHNsaWNlbGVuZ3RoICovCisgICAgUHlfc3NpemVfdCBpLCBsZW47CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9uIiwgJmtleSwgJmxlbikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICghUHlTbGljZV9DaGVjayhrZXkpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHNsaWNlIG9iamVjdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KGtleSwgbGVuLCAmc1swXSwgJnNbMV0sICZzWzJdLCAmc1szXSkgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldCA9IFB5VHVwbGVfTmV3KDQpOworICAgIGlmIChyZXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisgICAgICAgIHRtcCA9IFB5TG9uZ19Gcm9tU3NpemVfdChzW2ldKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXQsIGksIHRtcCk7CisgICAgfQorCisgICAgcmV0dXJuIHJldDsKKworZXJyb3I6CisgICAgUHlfREVDUkVGKHJldCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworc3RhdGljIFB5TWFwcGluZ01ldGhvZHMgbmRhcnJheV9hc19tYXBwaW5nID0geworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbXBfbGVuZ3RoICovCisgICAgKGJpbmFyeWZ1bmMpbmRhcnJheV9zdWJzY3JpcHQsICAgICAgICAvKiBtcF9zdWJzY3JpcHQgKi8KKyAgICAob2Jqb2JqYXJncHJvYyluZGFycmF5X2Fzc19zdWJzY3JpcHQgIC8qIG1wX2Fzc19zdWJzY3JpcHQgKi8KK307CisKK3N0YXRpYyBQeVNlcXVlbmNlTWV0aG9kcyBuZGFycmF5X2FzX3NlcXVlbmNlID0geworICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfbGVuZ3RoICovCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9jb25jYXQgKi8KKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX3JlcGVhdCAqLworICAgICAgICAoc3NpemVhcmdmdW5jKW5kYXJyYXlfaXRlbSwgICAgICAgLyogc3FfaXRlbSAqLworfTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBQeU9iamVjdCAqCitzc2l6ZV9hcnJheV9hc190dXBsZShQeV9zc2l6ZV90ICphcnJheSwgUHlfc3NpemVfdCBsZW4pCit7CisgICAgUHlPYmplY3QgKnR1cGxlLCAqeDsKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBpZiAoYXJyYXkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5VHVwbGVfTmV3KDApOworCisgICAgdHVwbGUgPSBQeVR1cGxlX05ldyhsZW4pOworICAgIGlmICh0dXBsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICB4ID0gUHlMb25nX0Zyb21Tc2l6ZV90KGFycmF5W2ldKTsKKyAgICAgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHR1cGxlKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odHVwbGUsIGksIHgpOworICAgIH0KKworICAgIHJldHVybiB0dXBsZTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X2ZsYWdzKE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5oZWFkLT5mbGFncyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2dldF9vZmZzZXQoTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBuZGJ1Zl90ICpuZGJ1ZiA9IHNlbGYtPmhlYWQ7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChuZGJ1Zi0+b2Zmc2V0KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X29iaihOREFycmF5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT5oZWFkLT5iYXNlOworCisgICAgaWYgKGJhc2UtPm9iaiA9PSBOVUxMKSB7IAorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgUHlfSU5DUkVGKGJhc2UtPm9iaik7CisgICAgcmV0dXJuIGJhc2UtPm9iajsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X25ieXRlcyhOREFycmF5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT5oZWFkLT5iYXNlOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoYmFzZS0+bGVuKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X3JlYWRvbmx5KE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhiYXNlLT5yZWFkb25seSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2dldF9pdGVtc2l6ZShOREFycmF5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT5oZWFkLT5iYXNlOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoYmFzZS0+aXRlbXNpemUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9nZXRfZm9ybWF0KE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgY2hhciAqZm10ID0gYmFzZS0+Zm9ybWF0ID8gYmFzZS0+Zm9ybWF0IDogIiI7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGZtdCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2dldF9uZGltKE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChiYXNlLT5uZGltKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X3NoYXBlKE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgcmV0dXJuIHNzaXplX2FycmF5X2FzX3R1cGxlKGJhc2UtPnNoYXBlLCBiYXNlLT5uZGltKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X3N0cmlkZXMoTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKyAgICByZXR1cm4gc3NpemVfYXJyYXlfYXNfdHVwbGUoYmFzZS0+c3RyaWRlcywgYmFzZS0+bmRpbSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2dldF9zdWJvZmZzZXRzKE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgcmV0dXJuIHNzaXplX2FycmF5X2FzX3R1cGxlKGJhc2UtPnN1Ym9mZnNldHMsIGJhc2UtPm5kaW0pOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9jX2NvbnRpZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIE5EQXJyYXlPYmplY3QgKm5kID0gKE5EQXJyYXlPYmplY3QgKilzZWxmOworICAgIGludCByZXQgPSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoJm5kLT5oZWFkLT5iYXNlLCAnQycpOworCisgICAgaWYgKHJldCAhPSBORF9DX0NPTlRJR1VPVVMobmQtPmhlYWQtPmZsYWdzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgInJlc3VsdHMgZnJvbSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoKSBhbmQgZmxhZ3MgZGlmZmVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJldCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2ZvcnRyYW5fY29udGlnKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgTkRBcnJheU9iamVjdCAqbmQgPSAoTkRBcnJheU9iamVjdCAqKXNlbGY7CisgICAgaW50IHJldCA9IFB5QnVmZmVyX0lzQ29udGlndW91cygmbmQtPmhlYWQtPmJhc2UsICdGJyk7CisKKyAgICBpZiAocmV0ICE9IE5EX0ZPUlRSQU5fQ09OVElHVU9VUyhuZC0+aGVhZC0+ZmxhZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAicmVzdWx0cyBmcm9tIFB5QnVmZmVyX0lzQ29udGlndW91cygpIGFuZCBmbGFncyBkaWZmZXIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmV0KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfY29udGlnKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgTkRBcnJheU9iamVjdCAqbmQgPSAoTkRBcnJheU9iamVjdCAqKXNlbGY7CisgICAgaW50IHJldCA9IFB5QnVmZmVyX0lzQ29udGlndW91cygmbmQtPmhlYWQtPmJhc2UsICdBJyk7CisKKyAgICBpZiAocmV0ICE9IE5EX0FOWV9DT05USUdVT1VTKG5kLT5oZWFkLT5mbGFncykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICJyZXN1bHRzIGZyb20gUHlCdWZmZXJfSXNDb250aWd1b3VzKCkgYW5kIGZsYWdzIGRpZmZlciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXQpOworfQorCisKK3N0YXRpYyBQeUdldFNldERlZiBuZGFycmF5X2dldHNldCBbXSA9Cit7CisgIC8qIG5kYnVmICovCisgIHsgImZsYWdzIiwgICAgICAgIChnZXR0ZXIpbmRhcnJheV9nZXRfZmxhZ3MsICAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgIHsgIm9mZnNldCIsICAgICAgIChnZXR0ZXIpbmRhcnJheV9nZXRfb2Zmc2V0LCAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgIC8qIG5kYnVmLmJhc2UgKi8KKyAgeyAib2JqIiwgICAgICAgICAgKGdldHRlciluZGFycmF5X2dldF9vYmosICAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAibmJ5dGVzIiwgICAgICAgKGdldHRlciluZGFycmF5X2dldF9uYnl0ZXMsICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAicmVhZG9ubHkiLCAgICAgKGdldHRlciluZGFycmF5X2dldF9yZWFkb25seSwgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAiaXRlbXNpemUiLCAgICAgKGdldHRlciluZGFycmF5X2dldF9pdGVtc2l6ZSwgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAiZm9ybWF0IiwgICAgICAgKGdldHRlciluZGFycmF5X2dldF9mb3JtYXQsICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAibmRpbSIsICAgICAgICAgKGdldHRlciluZGFycmF5X2dldF9uZGltLCAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAic2hhcGUiLCAgICAgICAgKGdldHRlciluZGFycmF5X2dldF9zaGFwZSwgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAic3RyaWRlcyIsICAgICAgKGdldHRlciluZGFycmF5X2dldF9zdHJpZGVzLCAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAic3Vib2Zmc2V0cyIsICAgKGdldHRlciluZGFycmF5X2dldF9zdWJvZmZzZXRzLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAiY19jb250aWd1b3VzIiwgKGdldHRlciluZGFycmF5X2NfY29udGlnLCAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAiZl9jb250aWd1b3VzIiwgKGdldHRlciluZGFycmF5X2ZvcnRyYW5fY29udGlnLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAiY29udGlndW91cyIsICAgKGdldHRlciluZGFycmF5X2NvbnRpZywgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAge05VTEx9Cit9OworCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV90b2xpc3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICByZXR1cm4gbmRhcnJheV9hc19saXN0KChOREFycmF5T2JqZWN0ICopc2VsZik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X3RvYnl0ZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICBuZGJ1Zl90ICpuZGJ1ZiA9ICgoTkRBcnJheU9iamVjdCAqKXNlbGYpLT5oZWFkOworICAgIFB5X2J1ZmZlciAqc3JjID0gJm5kYnVmLT5iYXNlOworICAgIFB5X2J1ZmZlciBkZXN0OworICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOworICAgIGNoYXIgKm1lbTsKKworICAgIGlmIChORF9DX0NPTlRJR1VPVVMobmRidWYtPmZsYWdzKSkKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc3JjLT5idWYsIHNyYy0+bGVuKTsKKworICAgIGFzc2VydChzcmMtPnNoYXBlICE9IE5VTEwpOworICAgIGFzc2VydChzcmMtPnN0cmlkZXMgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHNyYy0+bmRpbSA+IDApOworCisgICAgbWVtID0gUHlNZW1fTWFsbG9jKHNyYy0+bGVuKTsKKyAgICBpZiAobWVtID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZGVzdCA9ICpzcmM7CisgICAgZGVzdC5idWYgPSBtZW07CisgICAgZGVzdC5zdWJvZmZzZXRzID0gTlVMTDsKKyAgICBkZXN0LnN0cmlkZXMgPSBzdHJpZGVzX2Zyb21fc2hhcGUobmRidWYsIDApOworICAgIGlmIChkZXN0LnN0cmlkZXMgPT0gTlVMTCkKKyAgICAgICAgZ290byBvdXQ7CisgICAgaWYgKGNvcHlfYnVmZmVyKCZkZXN0LCBzcmMpIDwgMCkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKG1lbSwgc3JjLT5sZW4pOworCitvdXQ6CisgICAgUHlNZW1fWEZyZWUoZGVzdC5zdHJpZGVzKTsKKyAgICBQeU1lbV9GcmVlKG1lbSk7CisgICAgcmV0dXJuIHJldDsKK30KKworLyogYWRkIHJlZHVuZGFudCAobmVnYXRpdmUpIHN1Ym9mZnNldHMgZm9yIHRlc3RpbmcgKi8KK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2FkZF9zdWJvZmZzZXRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgTkRBcnJheU9iamVjdCAqbmQgPSAoTkRBcnJheU9iamVjdCAqKXNlbGY7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kLT5oZWFkLT5iYXNlOworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGlmIChiYXNlLT5zdWJvZmZzZXRzICE9IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJjYW5ub3QgYWRkIHN1Ym9mZnNldHMgdG8gUElMLXN0eWxlIGFycmF5Iik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKGJhc2UtPnN0cmlkZXMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImNhbm5vdCBhZGQgc3Vib2Zmc2V0cyB0byBhcnJheSB3aXRob3V0IHN0cmlkZXMiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGJhc2UtPnN1Ym9mZnNldHMgPSBQeU1lbV9NYWxsb2MoYmFzZS0+bmRpbSAqIChzaXplb2YgKmJhc2UtPnN1Ym9mZnNldHMpKTsKKyAgICBpZiAoYmFzZS0+c3Vib2Zmc2V0cyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBiYXNlLT5uZGltOyBpKyspCisgICAgICAgIGJhc2UtPnN1Ym9mZnNldHNbaV0gPSAtMTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisvKiBUZXN0IFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyKCk6IHJldHVybiBhIG1lbW9yeXZpZXcgZnJvbSBhIHN0YXRpYyBidWZmZXIuCisgICBPYnZpb3VzbHkgdGhpcyBpcyBmcmFnaWxlIGFuZCBvbmx5IG9uZSBzdWNoIHZpZXcgbWF5IGJlIGFjdGl2ZSBhdCBhbnkKKyAgIHRpbWUuIE5ldmVyIHVzZSBhbnl0aGluZyBsaWtlIHRoaXMgaW4gcmVhbCBjb2RlISAqLworc3RhdGljIGNoYXIgKmluZm9idWYgPSBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfbWVtb3J5dmlld19mcm9tX2J1ZmZlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIGNvbnN0IE5EQXJyYXlPYmplY3QgKm5kID0gKE5EQXJyYXlPYmplY3QgKilzZWxmOworICAgIGNvbnN0IFB5X2J1ZmZlciAqdmlldyA9ICZuZC0+aGVhZC0+YmFzZTsKKyAgICBjb25zdCBuZGJ1Zl90ICpuZGJ1ZjsKKyAgICBzdGF0aWMgY2hhciBmb3JtYXRbTkRfTUFYX05ESU0rMV07CisgICAgc3RhdGljIFB5X3NzaXplX3Qgc2hhcGVbTkRfTUFYX05ESU1dOworICAgIHN0YXRpYyBQeV9zc2l6ZV90IHN0cmlkZXNbTkRfTUFYX05ESU1dOworICAgIHN0YXRpYyBQeV9zc2l6ZV90IHN1Ym9mZnNldHNbTkRfTUFYX05ESU1dOworICAgIHN0YXRpYyBQeV9idWZmZXIgaW5mbzsKKyAgICBjaGFyICpwOworCisgICAgaWYgKCFORF9JU19DT05TVU1FUihuZCkpCisgICAgICAgIG5kYnVmID0gbmQtPmhlYWQ7IC8qIHNlbGYgaXMgbmRhcnJheS9vcmlnaW5hbCBleHBvcnRlciAqLworICAgIGVsc2UgaWYgKE5EQXJyYXlfQ2hlY2sodmlldy0+b2JqKSAmJiAhTkRfSVNfQ09OU1VNRVIodmlldy0+b2JqKSkKKyAgICAgICAgLyogc2VsZiBpcyBuZGFycmF5IGFuZCBjb25zdW1lciBmcm9tIG5kYXJyYXkvb3JpZ2luYWwgZXhwb3J0ZXIgKi8KKyAgICAgICAgbmRidWYgPSAoKE5EQXJyYXlPYmplY3QgKil2aWV3LT5vYmopLT5oZWFkOworICAgIGVsc2UgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAibWVtb3J5dmlld19mcm9tX2J1ZmZlcigpOiBuZGFycmF5IG11c3QgYmUgb3JpZ2luYWwgZXhwb3J0ZXIgb3IgIgorICAgICAgICAiY29uc3VtZXIgZnJvbSBuZGFycmF5L29yaWdpbmFsIGV4cG9ydGVyIik7CisgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpbmZvID0gKnZpZXc7CisgICAgcCA9IFB5TWVtX1JlYWxsb2MoaW5mb2J1ZiwgbmRidWYtPmxlbik7CisgICAgaWYgKHAgPT0gTlVMTCkgeworICAgICAgICBQeU1lbV9GcmVlKGluZm9idWYpOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBpbmZvYnVmID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpbmZvYnVmID0gcDsKKyAgICB9CisgICAgLyogY29weSB0aGUgY29tcGxldGUgcmF3IGRhdGEgKi8KKyAgICBtZW1jcHkoaW5mb2J1ZiwgbmRidWYtPmRhdGEsIG5kYnVmLT5sZW4pOworICAgIGluZm8uYnVmID0gaW5mb2J1ZiArICgoY2hhciAqKXZpZXctPmJ1ZiAtIG5kYnVmLT5kYXRhKTsKKworICAgIGlmICh2aWV3LT5mb3JtYXQpIHsKKyAgICAgICAgaWYgKHN0cmxlbih2aWV3LT5mb3JtYXQpID4gTkRfTUFYX05ESU0pIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1lbW9yeXZpZXdfZnJvbV9idWZmZXI6IGZvcm1hdCBpcyBsaW1pdGVkIHRvICVkIGNoYXJhY3RlcnMiLAorICAgICAgICAgICAgICAgIE5EX01BWF9ORElNKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzdHJjcHkoZm9ybWF0LCB2aWV3LT5mb3JtYXQpOworICAgICAgICBpbmZvLmZvcm1hdCA9IGZvcm1hdDsKKyAgICB9CisgICAgaWYgKHZpZXctPm5kaW0gPiBORF9NQVhfTkRJTSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXdfZnJvbV9idWZmZXI6IG5kaW0gaXMgbGltaXRlZCB0byAlZCIsIE5EX01BWF9ORElNKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAodmlldy0+c2hhcGUpIHsKKyAgICAgICAgbWVtY3B5KHNoYXBlLCB2aWV3LT5zaGFwZSwgdmlldy0+bmRpbSAqIHNpemVvZihQeV9zc2l6ZV90KSk7CisgICAgICAgIGluZm8uc2hhcGUgPSBzaGFwZTsKKyAgICB9CisgICAgaWYgKHZpZXctPnN0cmlkZXMpIHsKKyAgICAgICAgbWVtY3B5KHN0cmlkZXMsIHZpZXctPnN0cmlkZXMsIHZpZXctPm5kaW0gKiBzaXplb2YoUHlfc3NpemVfdCkpOworICAgICAgICBpbmZvLnN0cmlkZXMgPSBzdHJpZGVzOworICAgIH0KKyAgICBpZiAodmlldy0+c3Vib2Zmc2V0cykgeworICAgICAgICBtZW1jcHkoc3Vib2Zmc2V0cywgdmlldy0+c3Vib2Zmc2V0cywgdmlldy0+bmRpbSAqIHNpemVvZihQeV9zc2l6ZV90KSk7CisgICAgICAgIGluZm8uc3Vib2Zmc2V0cyA9IHN1Ym9mZnNldHM7CisgICAgfQorCisgICAgcmV0dXJuIFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyKCZpbmZvKTsKK30KKworLyogR2V0IGEgc2luZ2xlIGl0ZW0gZnJvbSBidWZvYmogYXQgdGhlIGxvY2F0aW9uIHNwZWNpZmllZCBieSBzZXEuCisgICBzZXEgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIGluZGljZXMuIFRoZSBwdXJwb3NlIG9mIHRoaXMgZnVuY3Rpb24KKyAgIGlzIHRvIGNoZWNrIG90aGVyIGZ1bmN0aW9ucyBhZ2FpbnN0IFB5QnVmZmVyX0dldFBvaW50ZXIoKS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfcG9pbnRlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldCA9IE5VTEwsICpidWZvYmosICpzZXE7CisgICAgUHlfYnVmZmVyIHZpZXc7CisgICAgUHlfc3NpemVfdCBpbmRpY2VzW05EX01BWF9ORElNXTsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgdm9pZCAqcHRyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTyIsICZidWZvYmosICZzZXEpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIENIRUNLX0xJU1RfT1JfVFVQTEUoc2VxKTsKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGJ1Zm9iaiwgJnZpZXcsIFB5QlVGX0ZVTExfUk8pIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAodmlldy5uZGltID4gTkRfTUFYX05ESU0pIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiZ2V0X3BvaW50ZXIoKTogbmRpbSA+ICVkIiwgTkRfTUFYX05ESU0pOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAgaWYgKFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShzZXEpICE9IHZpZXcubmRpbSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJnZXRfcG9pbnRlcigpOiBsZW4oaW5kaWNlcykgIT0gbmRpbSIpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgdmlldy5uZGltOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnggPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oc2VxLCBpKTsKKyAgICAgICAgaW5kaWNlc1tpXSA9IFB5TG9uZ19Bc1NzaXplX3QoeCk7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIGlmIChpbmRpY2VzW2ldIDwgMCB8fCBpbmRpY2VzW2ldID49IHZpZXcuc2hhcGVbaV0pIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJnZXRfcG9pbnRlcigpOiBpbnZhbGlkIGluZGV4ICV6ZCBhdCBwb3NpdGlvbiAlemQiLAorICAgICAgICAgICAgICAgIGluZGljZXNbaV0sIGkpOworICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdHIgPSBQeUJ1ZmZlcl9HZXRQb2ludGVyKCZ2aWV3LCBpbmRpY2VzKTsKKyAgICByZXQgPSB1bnBhY2tfc2luZ2xlKHB0ciwgdmlldy5mb3JtYXQsIHZpZXcuaXRlbXNpemUpOworCitvdXQ6CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2dldF9zaXplb2Zfdm9pZF9wKFB5T2JqZWN0ICpzZWxmKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbVNpemVfdChzaXplb2Yodm9pZCAqKSk7Cit9CisKK3N0YXRpYyBjaGFyCitnZXRfYXNjaWlfb3JkZXIoUHlPYmplY3QgKm9yZGVyKQoreworICAgIFB5T2JqZWN0ICphc2NpaV9vcmRlcjsKKyAgICBjaGFyIG9yZDsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKG9yZGVyKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgIm9yZGVyIG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIENIQVJfTUFYOworICAgIH0KKworICAgIGFzY2lpX29yZGVyID0gUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcob3JkZXIpOworICAgIGlmIChhc2NpaV9vcmRlciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBDSEFSX01BWDsKKyAgICB9CisKKyAgICBvcmQgPSBQeUJ5dGVzX0FTX1NUUklORyhhc2NpaV9vcmRlcilbMF07CisgICAgUHlfREVDUkVGKGFzY2lpX29yZGVyKTsKKworICAgIGlmIChvcmQgIT0gJ0MnICYmIG9yZCAhPSAnRicgJiYgb3JkICE9ICdBJykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJpbnZhbGlkIG9yZGVyLCBtdXN0IGJlIEMsIEYgb3IgQSIpOworICAgICAgICByZXR1cm4gQ0hBUl9NQVg7CisgICAgfQorCisgICAgcmV0dXJuIG9yZDsKK30KKworLyogR2V0IGEgY29udGlndW91cyBtZW1vcnl2aWV3LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2dldF9jb250aWd1b3VzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb2JqOworICAgIFB5T2JqZWN0ICpidWZmZXJ0eXBlOworICAgIFB5T2JqZWN0ICpvcmRlcjsKKyAgICBsb25nIHR5cGU7CisgICAgY2hhciBvcmQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PTyIsICZvYmosICZidWZmZXJ0eXBlLCAmb3JkZXIpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghUHlMb25nX0NoZWNrKGJ1ZmZlcnR5cGUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiYnVmZmVydHlwZSBtdXN0IGJlIFB5QlVGX1JFQUQgb3IgUHlCVUZfV1JJVEUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgdHlwZSA9IFB5TG9uZ19Bc0xvbmcoYnVmZmVydHlwZSk7CisgICAgaWYgKHR5cGUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHR5cGUgIT0gUHlCVUZfUkVBRCAmJiB0eXBlICE9IFB5QlVGX1dSSVRFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgImludmFsaWQgYnVmZmVyIHR5cGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb3JkID0gZ2V0X2FzY2lpX29yZGVyKG9yZGVyKTsKKyAgICBpZiAob3JkID09IENIQVJfTUFYKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cyhvYmosIChpbnQpdHlwZSwgb3JkKTsKK30KKworLyogUHlCdWZmZXJfVG9Db250aWd1b3VzKCkgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitweV9idWZmZXJfdG9fY29udGlndW91cyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBQeU9iamVjdCAqb3JkZXI7CisgICAgUHlPYmplY3QgKnJldCA9IE5VTEw7CisgICAgaW50IGZsYWdzOworICAgIGNoYXIgb3JkOworICAgIFB5X2J1ZmZlciB2aWV3OworICAgIGNoYXIgKmJ1ZiA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PaSIsICZvYmosICZvcmRlciwgJmZsYWdzKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKG9iaiwgJnZpZXcsIGZsYWdzKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb3JkID0gZ2V0X2FzY2lpX29yZGVyKG9yZGVyKTsKKyAgICBpZiAob3JkID09IENIQVJfTUFYKSB7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGJ1ZiA9IFB5TWVtX01hbGxvYyh2aWV3Lmxlbik7CisgICAgaWYgKGJ1ZiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGlmIChQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoYnVmLCAmdmlldywgdmlldy5sZW4sIG9yZCkgPCAwKSB7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCB2aWV3Lmxlbik7CisKK291dDoKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKKyAgICBQeU1lbV9YRnJlZShidWYpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQKK2ZtdGNtcChjb25zdCBjaGFyICpmbXQxLCBjb25zdCBjaGFyICpmbXQyKQoreworICAgIGlmIChmbXQxID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIGZtdDIgPT0gTlVMTCB8fCBzdHJjbXAoZm10MiwgIkIiKSA9PSAwOworICAgIH0KKyAgICBpZiAoZm10MiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBmbXQxID09IE5VTEwgfHwgc3RyY21wKGZtdDEsICJCIikgPT0gMDsKKyAgICB9CisgICAgcmV0dXJuIHN0cmNtcChmbXQxLCBmbXQyKSA9PSAwOworfQorCitzdGF0aWMgaW50CithcnJheWNtcChjb25zdCBQeV9zc2l6ZV90ICphMSwgY29uc3QgUHlfc3NpemVfdCAqYTIsIGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlLAorICAgICAgICAgUHlfc3NpemVfdCBuZGltKQoreworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGlmIChuZGltID09IDEgJiYgc2hhcGUgJiYgc2hhcGVbMF0gPT0gMSkgeworICAgICAgICAvKiBUaGlzIGlzIGZvciBjb21wYXJpbmcgc3RyaWRlczogRm9yIGV4YW1wbGUsIHRoZSBhcnJheQorICAgICAgICAgICBbMTc1XSwgc2hhcGU9WzFdLCBzdHJpZGVzPVstNV0gaXMgY29uc2lkZXJlZCBjb250aWd1b3VzLiAqLworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmRpbTsgaSsrKSB7CisgICAgICAgIGlmIChhMVtpXSAhPSBhMltpXSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworLyogQ29tcGFyZSB0d28gY29udGlndW91cyBidWZmZXJzIGZvciBwaHlzaWNhbCBlcXVhbGl0eS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitjbXBfY29udGlnKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqYjEsICpiMjsgLyogYnVmZmVyIG9iamVjdHMgKi8KKyAgICBQeV9idWZmZXIgdjEsIHYyOworICAgIFB5T2JqZWN0ICpyZXQ7CisgICAgaW50IGVxdWFsID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08iLCAmYjEsICZiMikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihiMSwgJnYxLCBQeUJVRl9GVUxMX1JPKSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJjbXBfY29udGlnOiBmaXJzdCBhcmd1bWVudCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGJ1ZmZlciAiCisgICAgICAgICAgICAicHJvdG9jb2wiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYjIsICZ2MiwgUHlCVUZfRlVMTF9STykgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiY21wX2NvbnRpZzogc2Vjb25kIGFyZ3VtZW50IGRvZXMgbm90IGltcGxlbWVudCB0aGUgYnVmZmVyICIKKyAgICAgICAgICAgICJwcm90b2NvbCIpOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2MSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghKFB5QnVmZmVyX0lzQ29udGlndW91cygmdjEsICdDJykmJlB5QnVmZmVyX0lzQ29udGlndW91cygmdjIsICdDJykpICYmCisgICAgICAgICEoUHlCdWZmZXJfSXNDb250aWd1b3VzKCZ2MSwgJ0YnKSYmUHlCdWZmZXJfSXNDb250aWd1b3VzKCZ2MiwgJ0YnKSkpIHsKKyAgICAgICAgZ290byByZXN1bHQ7CisgICAgfQorCisgICAgLyogcmVhZG9ubHkgbWF5IGRpZmZlciBpZiBjcmVhdGVkIGZyb20gbm9uLWNvbnRpZ3VvdXMgKi8KKyAgICBpZiAodjEubGVuICE9IHYyLmxlbiB8fAorICAgICAgICB2MS5pdGVtc2l6ZSAhPSB2Mi5pdGVtc2l6ZSB8fAorICAgICAgICB2MS5uZGltICE9IHYyLm5kaW0gfHwKKyAgICAgICAgIWZtdGNtcCh2MS5mb3JtYXQsIHYyLmZvcm1hdCkgfHwKKyAgICAgICAgISF2MS5zaGFwZSAhPSAhIXYyLnNoYXBlIHx8CisgICAgICAgICEhdjEuc3RyaWRlcyAhPSAhIXYyLnN0cmlkZXMgfHwKKyAgICAgICAgISF2MS5zdWJvZmZzZXRzICE9ICEhdjIuc3Vib2Zmc2V0cykgeworICAgICAgICBnb3RvIHJlc3VsdDsKKyAgICB9CisKKyAgICBpZiAoKHYxLnNoYXBlICYmICFhcnJheWNtcCh2MS5zaGFwZSwgdjIuc2hhcGUsIE5VTEwsIHYxLm5kaW0pKSB8fAorICAgICAgICAodjEuc3RyaWRlcyAmJiAhYXJyYXljbXAodjEuc3RyaWRlcywgdjIuc3RyaWRlcywgdjEuc2hhcGUsIHYxLm5kaW0pKSB8fAorICAgICAgICAodjEuc3Vib2Zmc2V0cyAmJiAhYXJyYXljbXAodjEuc3Vib2Zmc2V0cywgdjIuc3Vib2Zmc2V0cywgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxLm5kaW0pKSkgeworICAgICAgICBnb3RvIHJlc3VsdDsKKyAgICB9CisKKyAgICBpZiAobWVtY21wKChjaGFyICopdjEuYnVmLCAoY2hhciAqKXYyLmJ1ZiwgdjEubGVuKSAhPSAwKSB7CisgICAgICAgIGdvdG8gcmVzdWx0OworICAgIH0KKworICAgIGVxdWFsID0gMTsKKworcmVzdWx0OgorICAgIFB5QnVmZmVyX1JlbGVhc2UoJnYxKTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2Mik7CisKKyAgICByZXQgPSBlcXVhbCA/IFB5X1RydWUgOiBQeV9GYWxzZTsgCisgICAgUHlfSU5DUkVGKHJldCk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2lzX2NvbnRpZ3VvdXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgUHlPYmplY3QgKm9yZGVyOworICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOworICAgIFB5X2J1ZmZlciB2aWV3OworICAgIGNoYXIgb3JkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTyIsICZvYmosICZvcmRlcikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihvYmosICZ2aWV3LCBQeUJVRl9GVUxMX1JPKSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJpc19jb250aWd1b3VzOiBvYmplY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBidWZmZXIgIgorICAgICAgICAgICAgInByb3RvY29sIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG9yZCA9IGdldF9hc2NpaV9vcmRlcihvcmRlcik7CisgICAgaWYgKG9yZCA9PSBDSEFSX01BWCkgeworICAgICAgICBnb3RvIHJlbGVhc2U7CisgICAgfQorCisgICAgcmV0ID0gUHlCdWZmZXJfSXNDb250aWd1b3VzKCZ2aWV3LCBvcmQpID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOworICAgIFB5X0lOQ1JFRihyZXQpOworCityZWxlYXNlOgorICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBQeV9oYXNoX3QKK25kYXJyYXlfaGFzaChQeU9iamVjdCAqc2VsZikKK3sKKyAgICBjb25zdCBOREFycmF5T2JqZWN0ICpuZCA9IChOREFycmF5T2JqZWN0ICopc2VsZjsKKyAgICBjb25zdCBQeV9idWZmZXIgKnZpZXcgPSAmbmQtPmhlYWQtPmJhc2U7CisgICAgUHlPYmplY3QgKmJ5dGVzOworICAgIFB5X2hhc2hfdCBoYXNoOworCisgICAgaWYgKCF2aWV3LT5yZWFkb25seSkgeworICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgImNhbm5vdCBoYXNoIHdyaXRhYmxlIG5kYXJyYXkgb2JqZWN0Iik7CisgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICh2aWV3LT5vYmogIT0gTlVMTCAmJiBQeU9iamVjdF9IYXNoKHZpZXctPm9iaikgPT0gLTEpIHsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBieXRlcyA9IG5kYXJyYXlfdG9ieXRlcyhzZWxmLCBOVUxMKTsKKyAgICBpZiAoYnl0ZXMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goYnl0ZXMpOworICAgIFB5X0RFQ1JFRihieXRlcyk7CisgICAgcmV0dXJuIGhhc2g7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIG5kYXJyYXlfbWV0aG9kcyBbXSA9Cit7CisgICAgeyAidG9saXN0IiwgbmRhcnJheV90b2xpc3QsIE1FVEhfTk9BUkdTLCBOVUxMIH0sCisgICAgeyAidG9ieXRlcyIsIG5kYXJyYXlfdG9ieXRlcywgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgICB7ICJwdXNoIiwgKFB5Q0Z1bmN0aW9uKW5kYXJyYXlfcHVzaCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIE5VTEwgfSwKKyAgICB7ICJwb3AiLCBuZGFycmF5X3BvcCwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgICB7ICJhZGRfc3Vib2Zmc2V0cyIsIG5kYXJyYXlfYWRkX3N1Ym9mZnNldHMsIE1FVEhfTk9BUkdTLCBOVUxMIH0sCisgICAgeyAibWVtb3J5dmlld19mcm9tX2J1ZmZlciIsIG5kYXJyYXlfbWVtb3J5dmlld19mcm9tX2J1ZmZlciwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgTkRBcnJheV9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJuZGFycmF5IiwgICAgICAgICAgICAgICAgICAgLyogTmFtZSBvZiB0aGlzIHR5cGUgKi8KKyAgICBzaXplb2YoTkRBcnJheU9iamVjdCksICAgICAgIC8qIEJhc2ljIG9iamVjdCBzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJdGVtIHNpemUgZm9yIHZhcm9iamVjdCAqLworICAgIChkZXN0cnVjdG9yKW5kYXJyYXlfZGVhbGxvYywgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgICZuZGFycmF5X2FzX3NlcXVlbmNlLCAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAmbmRhcnJheV9hc19tYXBwaW5nLCAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAoaGFzaGZ1bmMpbmRhcnJheV9oYXNoLCAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgJm5kYXJyYXlfYXNfYnVmZmVyLCAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIG5kYXJyYXlfbWV0aG9kcywgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIG5kYXJyYXlfZ2V0c2V0LCAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIG5kYXJyYXlfaW5pdCwgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBuZGFycmF5X25ldywgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRpY0FycmF5IE9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFN0YXRpY0FycmF5X1R5cGU7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgaW50IGxlZ2FjeV9tb2RlOyAvKiBpZiB0cnVlLCB1c2UgdGhlIHZpZXcub2JqPT1OVUxMIGhhY2sgKi8KK30gU3RhdGljQXJyYXlPYmplY3Q7CisKK3N0YXRpYyBjaGFyIHN0YXRpY19tZW1bMTJdID0gezAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTF9Oworc3RhdGljIFB5X3NzaXplX3Qgc3RhdGljX3NoYXBlWzFdID0gezEyfTsKK3N0YXRpYyBQeV9zc2l6ZV90IHN0YXRpY19zdHJpZGVzWzFdID0gezF9Oworc3RhdGljIFB5X2J1ZmZlciBzdGF0aWNfYnVmZmVyID0geworICAgIHN0YXRpY19tZW0sICAgICAvKiBidWYgKi8KKyAgICBOVUxMLCAgICAgICAgICAgLyogb2JqICovCisgICAgMTIsICAgICAgICAgICAgIC8qIGxlbiAqLworICAgIDEsICAgICAgICAgICAgICAvKiBpdGVtc2l6ZSAqLworICAgIDEsICAgICAgICAgICAgICAvKiByZWFkb25seSAqLworICAgIDEsICAgICAgICAgICAgICAvKiBuZGltICovCisgICAgIkIiLCAgICAgICAgICAgIC8qIGZvcm1hdCAqLworICAgIHN0YXRpY19zaGFwZSwgICAvKiBzaGFwZSAqLworICAgIHN0YXRpY19zdHJpZGVzLCAvKiBzdHJpZGVzICovCisgICAgTlVMTCwgICAgICAgICAgIC8qIHN1Ym9mZnNldHMgKi8KKyAgICBOVUxMICAgICAgICAgICAgLyogaW50ZXJuYWwgKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitzdGF0aWNhcnJheV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKVB5T2JqZWN0X05ldyhTdGF0aWNBcnJheU9iamVjdCwgJlN0YXRpY0FycmF5X1R5cGUpOworfQorCitzdGF0aWMgaW50CitzdGF0aWNhcnJheV9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgU3RhdGljQXJyYXlPYmplY3QgKmEgPSAoU3RhdGljQXJyYXlPYmplY3QgKilzZWxmOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsKKyAgICAgICAgImxlZ2FjeV9tb2RlIiwgTlVMTAorICAgIH07CisgICAgUHlPYmplY3QgKmxlZ2FjeV9tb2RlID0gUHlfRmFsc2U7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE8iLCBrd2xpc3QsICZsZWdhY3lfbW9kZSkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGEtPmxlZ2FjeV9tb2RlID0gKGxlZ2FjeV9tb2RlICE9IFB5X0ZhbHNlKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3N0YXRpY2FycmF5X2RlYWxsb2MoU3RhdGljQXJyYXlPYmplY3QgKnNlbGYpCit7CisgICAgUHlPYmplY3RfRGVsKHNlbGYpOworfQorCisvKiBSZXR1cm4gYSBidWZmZXIgZm9yIGEgUHlCVUZfRlVMTF9STyByZXF1ZXN0LiBGbGFncyBhcmUgbm90IGNoZWNrZWQsCisgICB3aGljaCBtYWtlcyB0aGlzIG9iamVjdCBhIG5vbi1jb21wbGlhbnQgZXhwb3J0ZXIhICovCitzdGF0aWMgaW50CitzdGF0aWNhcnJheV9nZXRidWYoU3RhdGljQXJyYXlPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKQoreworICAgICp2aWV3ID0gc3RhdGljX2J1ZmZlcjsKKworICAgIGlmIChzZWxmLT5sZWdhY3lfbW9kZSkgeworICAgICAgICB2aWV3LT5vYmogPSBOVUxMOyAvKiBEb24ndCB1c2UgdGhpcyBpbiBuZXcgY29kZS4gKi8KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHZpZXctPm9iaiA9IChQeU9iamVjdCAqKXNlbGY7CisgICAgICAgIFB5X0lOQ1JFRih2aWV3LT5vYmopOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlCdWZmZXJQcm9jcyBzdGF0aWNhcnJheV9hc19idWZmZXIgPSB7CisgICAgKGdldGJ1ZmZlcnByb2Mpc3RhdGljYXJyYXlfZ2V0YnVmLCAvKiBiZl9nZXRidWZmZXIgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJmX3JlbGVhc2VidWZmZXIgKi8KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgU3RhdGljQXJyYXlfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAic3RhdGljYXJyYXkiLCAgICAgICAgICAgICAgICAgICAvKiBOYW1lIG9mIHRoaXMgdHlwZSAqLworICAgIHNpemVvZihTdGF0aWNBcnJheU9iamVjdCksICAgICAgIC8qIEJhc2ljIG9iamVjdCBzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSXRlbSBzaXplIGZvciB2YXJvYmplY3QgKi8KKyAgICAoZGVzdHJ1Y3RvcilzdGF0aWNhcnJheV9kZWFsbG9jLCAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgJnN0YXRpY2FycmF5X2FzX2J1ZmZlciwgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgc3RhdGljYXJyYXlfaW5pdCwgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgc3RhdGljYXJyYXlfbmV3LCAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKK3N0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgX3Rlc3RidWZmZXJfZnVuY3Rpb25zW10gPSB7CisgICAgeyJzbGljZV9pbmRpY2VzIiwgc2xpY2VfaW5kaWNlcywgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAgICB7ImdldF9wb2ludGVyIiwgZ2V0X3BvaW50ZXIsIE1FVEhfVkFSQVJHUywgTlVMTH0sCisgICAgeyJnZXRfc2l6ZW9mX3ZvaWRfcCIsIChQeUNGdW5jdGlvbilnZXRfc2l6ZW9mX3ZvaWRfcCwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHsiZ2V0X2NvbnRpZ3VvdXMiLCBnZXRfY29udGlndW91cywgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAgICB7InB5X2J1ZmZlcl90b19jb250aWd1b3VzIiwgcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMsIE1FVEhfVkFSQVJHUywgTlVMTH0sCisgICAgeyJpc19jb250aWd1b3VzIiwgaXNfY29udGlndW91cywgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAgICB7ImNtcF9jb250aWciLCBjbXBfY29udGlnLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfdGVzdGJ1ZmZlcm1vZHVsZSA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgIl90ZXN0YnVmZmVyIiwKKyAgICBOVUxMLAorICAgIC0xLAorICAgIF90ZXN0YnVmZmVyX2Z1bmN0aW9ucywKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMCit9OworCisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RidWZmZXIodm9pZCkKK3sKKyAgICBQeU9iamVjdCAqbTsKKworICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJl90ZXN0YnVmZmVybW9kdWxlKTsKKyAgICBpZiAobSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X1RZUEUoJk5EQXJyYXlfVHlwZSkgPSAmUHlUeXBlX1R5cGU7CisgICAgUHlfSU5DUkVGKCZOREFycmF5X1R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAibmRhcnJheSIsIChQeU9iamVjdCAqKSZOREFycmF5X1R5cGUpOworCisgICAgUHlfVFlQRSgmU3RhdGljQXJyYXlfVHlwZSkgPSAmUHlUeXBlX1R5cGU7CisgICAgUHlfSU5DUkVGKCZTdGF0aWNBcnJheV9UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInN0YXRpY2FycmF5IiwgKFB5T2JqZWN0ICopJlN0YXRpY0FycmF5X1R5cGUpOworCisgICAgc3RydWN0bW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJzdHJ1Y3QiKTsKKyAgICBpZiAoc3RydWN0bW9kdWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgU3RydWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzdHJ1Y3Rtb2R1bGUsICJTdHJ1Y3QiKTsKKyAgICBjYWxjc2l6ZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RydWN0bW9kdWxlLCAiY2FsY3NpemUiKTsKKyAgICBpZiAoU3RydWN0ID09IE5VTEwgfHwgY2FsY3NpemUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzaW1wbGVfZm9ybWF0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoc2ltcGxlX2ZtdCk7CisgICAgaWYgKHNpbXBsZV9mb3JtYXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkRfTUFYX05ESU0iLCBORF9NQVhfTkRJTSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX1ZBUkVYUE9SVCIsIE5EX1ZBUkVYUE9SVCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX1dSSVRBQkxFIiwgTkRfV1JJVEFCTEUpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORF9GT1JUUkFOIiwgTkRfRk9SVFJBTik7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX1NDQUxBUiIsIE5EX1NDQUxBUik7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX1BJTCIsIE5EX1BJTCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX0dFVEJVRl9GQUlMIiwgTkRfR0VUQlVGX0ZBSUwpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORF9HRVRCVUZfVU5ERUZJTkVEIiwgTkRfR0VUQlVGX1VOREVGSU5FRCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX1JFRElSRUNUIiwgTkRfUkVESVJFQ1QpOworCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX1NJTVBMRSIsIFB5QlVGX1NJTVBMRSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX1dSSVRBQkxFIiwgUHlCVUZfV1JJVEFCTEUpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9GT1JNQVQiLCBQeUJVRl9GT1JNQVQpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9ORCIsIFB5QlVGX05EKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfU1RSSURFUyIsIFB5QlVGX1NUUklERVMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9JTkRJUkVDVCIsIFB5QlVGX0lORElSRUNUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfQ19DT05USUdVT1VTIiwgUHlCVUZfQ19DT05USUdVT1VTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfRl9DT05USUdVT1VTIiwgUHlCVUZfRl9DT05USUdVT1VTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfQU5ZX0NPTlRJR1VPVVMiLCBQeUJVRl9BTllfQ09OVElHVU9VUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX0ZVTEwiLCBQeUJVRl9GVUxMKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfRlVMTF9STyIsIFB5QlVGX0ZVTExfUk8pOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9SRUNPUkRTIiwgUHlCVUZfUkVDT1JEUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX1JFQ09SRFNfUk8iLCBQeUJVRl9SRUNPUkRTX1JPKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfU1RSSURFRCIsIFB5QlVGX1NUUklERUQpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9TVFJJREVEX1JPIiwgUHlCVUZfU1RSSURFRF9STyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX0NPTlRJRyIsIFB5QlVGX0NPTlRJRyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX0NPTlRJR19STyIsIFB5QlVGX0NPTlRJR19STyk7CisKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfUkVBRCIsIFB5QlVGX1JFQUQpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9XUklURSIsIFB5QlVGX1dSSVRFKTsKKworICAgIHJldHVybiBtOworfQorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYyBiL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKaW5kZXggOTRiNmU2Ny4uMmY0MzgxMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYworKysgYi9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCkBAIC0yMiwxNCArMjIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHJhaXNlVGVzdEVycm9yKGNvbnN0IGNoYXIqIHRlc3RfbmFtZSwgY29uc3QgY2hhciogbXNnKQogewotICAgIGNoYXIgYnVmWzIwNDhdOwotCi0gICAgaWYgKHN0cmxlbih0ZXN0X25hbWUpICsgc3RybGVuKG1zZykgPiBzaXplb2YoYnVmKSAtIDUwKQotICAgICAgICBQeUVycl9TZXRTdHJpbmcoVGVzdEVycm9yLCAiaW50ZXJuYWwgZXJyb3IgbXNnIHRvbyBsYXJnZSIpOwotICAgIGVsc2UgewotICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlczogJXMiLCB0ZXN0X25hbWUsIG1zZyk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhUZXN0RXJyb3IsIGJ1Zik7Ci0gICAgfQorICAgIFB5RXJyX0Zvcm1hdChUZXN0RXJyb3IsICIlczogJXMiLCB0ZXN0X25hbWUsIG1zZyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTQzLDExICszNiw5IEBACiBzaXplb2ZfZXJyb3IoY29uc3QgY2hhciogZmF0bmFtZSwgY29uc3QgY2hhciogdHlwbmFtZSwKICAgICBpbnQgZXhwZWN0ZWQsIGludCBnb3QpCiB7Ci0gICAgY2hhciBidWZbMTAyNF07Ci0gICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLAotICAgICAgICAiJS4yMDBzICNkZWZpbmUgPT0gJWQgYnV0IHNpemVvZiglLjIwMHMpID09ICVkIiwKKyAgICBQeUVycl9Gb3JtYXQoVGVzdEVycm9yLAorICAgICAgICAiJXMgI2RlZmluZSA9PSAlZCBidXQgc2l6ZW9mKCVzKSA9PSAlZCIsCiAgICAgICAgIGZhdG5hbWUsIGV4cGVjdGVkLCB0eXBuYW1lLCBnb3QpOwotICAgIFB5RXJyX1NldFN0cmluZyhUZXN0RXJyb3IsIGJ1Zik7CiAgICAgcmV0dXJuIChQeU9iamVjdCopTlVMTDsKIH0KIApAQCAtMjg0LDk1ICsyNzUsNiBAQAogfQogCiAKLS8qIElzc3VlICM3Mzg1OiBDaGVjayB0aGF0IG1lbW9yeXZpZXcoKSBkb2VzIG5vdCBjcmFzaAotICogICB3aGVuIGJmX2dldGJ1ZmZlciByZXR1cm5zIGFuIGVycm9yCi0gKi8KLQotc3RhdGljIGludAotYnJva2VuX2J1ZmZlcl9nZXRidWZmZXIoUHlPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKQotewotICAgIFB5RXJyX1NldFN0cmluZygKLSAgICAgICAgVGVzdEVycm9yLAotICAgICAgICAidGVzdF9icm9rZW5fbWVtb3J5dmlldzogZXhwZWN0ZWQgZXJyb3IgaW4gYmZfZ2V0YnVmZmVyIik7Ci0gICAgcmV0dXJuIC0xOwotfQotCi1zdGF0aWMgUHlCdWZmZXJQcm9jcyBtZW1vcnl2aWV3dGVzdGVyX2FzX2J1ZmZlciA9IHsKLSAgICAoZ2V0YnVmZmVycHJvYylicm9rZW5fYnVmZmVyX2dldGJ1ZmZlciwgICAgIC8qIGJmX2dldGJ1ZmZlciAqLwotICAgIDAsICAgICAgICAgIC8qIGJmX3JlbGVhc2VidWZmZXIgKi8KLX07Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgX01lbW9yeVZpZXdUZXN0ZXJfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAibWVtb3J5dmlld3Rlc3RlciIsICAgICAgICAgLyogTmFtZSBvZiB0aGlzIHR5cGUgKi8KLSAgICBzaXplb2YoUHlPYmplY3QpLCAgICAgICAgICAgLyogQmFzaWMgb2JqZWN0IHNpemUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSXRlbSBzaXplIGZvciB2YXJvYmplY3QgKi8KLSAgICAoZGVzdHJ1Y3RvcilQeU9iamVjdF9EZWwsIC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwotICAgICZtZW1vcnl2aWV3dGVzdGVyX2FzX2J1ZmZlciwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgLyogdHBfZmxhZ3MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KLX07Ci0KLXN0YXRpYyBQeU9iamVjdCoKLXRlc3RfYnJva2VuX21lbW9yeXZpZXcoUHlPYmplY3QqIHNlbGYpCi17Ci0gICAgUHlPYmplY3QgKm9iaiA9IFB5T2JqZWN0X05ldyhQeU9iamVjdCwgJl9NZW1vcnlWaWV3VGVzdGVyX1R5cGUpOwotICAgIFB5T2JqZWN0ICpyZXM7Ci0KLSAgICBpZiAob2JqID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgVGVzdEVycm9yLAotICAgICAgICAgICAgInRlc3RfYnJva2VuX21lbW9yeXZpZXc6IGZhaWxlZCB0byBjcmVhdGUgb2JqZWN0Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHJlcyA9IFB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0KG9iaik7Ci0gICAgaWYgKHJlcyB8fCAhUHlFcnJfT2NjdXJyZWQoKSl7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZygKLSAgICAgICAgICAgIFRlc3RFcnJvciwKLSAgICAgICAgICAgICJ0ZXN0X2Jyb2tlbl9tZW1vcnl2aWV3OiBtZW1vcnl2aWV3KCkgZGlkbid0IHJhaXNlIGFuIEV4Y2VwdGlvbiIpOwotICAgICAgICBQeV9YREVDUkVGKHJlcyk7Ci0gICAgICAgIFB5X0RFQ1JFRihvYmopOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBQeUVycl9DbGVhcigpOwotICAgIFB5X0RFQ1JFRihvYmopOwotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi0KIC8qIFRlc3RzIG9mIFB5TG9uZ197QXMsIEZyb219e1Vuc2lnbmVkLH1Mb25nKCksIGFuZCAoI2lmZGVmIEhBVkVfTE9OR19MT05HKQogICAgUHlMb25nX3tBcywgRnJvbX17VW5zaWduZWQsfUxvbmdMb25nKCkuCiAKQEAgLTc3OCw2ICs2ODAsNjggQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAorLyogVGVzdCB0aGUgUHlMb25nX0Fze1NpemUsU3NpemV9X3QgQVBJLiBBdCBwcmVzZW50IHRoaXMganVzdCB0ZXN0cyB0aGF0CisgICBub24taW50ZWdlciBhcmd1bWVudHMgYXJlIGhhbmRsZWQgY29ycmVjdGx5LiBJdCBzaG91bGQgYmUgZXh0ZW5kZWQgdG8KKyAgIHRlc3Qgb3ZlcmZsb3cgaGFuZGxpbmcuCisgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfbG9uZ19hc19zaXplX3QoUHlPYmplY3QgKnNlbGYpCit7CisgICAgc2l6ZV90IG91dF91OworICAgIFB5X3NzaXplX3Qgb3V0X3M7CisKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisKKyAgICBvdXRfdSA9IFB5TG9uZ19Bc1NpemVfdChQeV9Ob25lKTsKKyAgICBpZiAob3V0X3UgIT0gKHNpemVfdCktMSB8fCAhUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X2xvbmdfYXNfc2l6ZV90IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeUxvbmdfQXNTaXplX3QoTm9uZSkgZGlkbid0IGNvbXBsYWluIik7CisgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCisgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9sb25nX2FzX3NpemVfdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHlMb25nX0FzU2l6ZV90KE5vbmUpIHJhaXNlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic29tZXRoaW5nIG90aGVyIHRoYW4gVHlwZUVycm9yIik7CisgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgIG91dF9zID0gUHlMb25nX0FzU3NpemVfdChQeV9Ob25lKTsKKyAgICBpZiAob3V0X3MgIT0gKFB5X3NzaXplX3QpLTEgfHwgIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9sb25nX2FzX3NpemVfdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHlMb25nX0FzU3NpemVfdChOb25lKSBkaWRuJ3QgY29tcGxhaW4iKTsKKyAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X2xvbmdfYXNfc2l6ZV90IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeUxvbmdfQXNTc2l6ZV90KE5vbmUpIHJhaXNlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic29tZXRoaW5nIG90aGVyIHRoYW4gVHlwZUVycm9yIik7CisgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgIC8qIFB5X0lOQ1JFRihQeV9Ob25lKSBvbWl0dGVkIC0gd2UgYWxyZWFkeSBoYXZlIGEgcmVmZXJlbmNlIHRvIGl0LiAqLworICAgIHJldHVybiBQeV9Ob25lOworfQorCisvKiBUZXN0IHRoZSBQeUxvbmdfQXNEb3VibGUgQVBJLiBBdCBwcmVzZW50IHRoaXMganVzdCB0ZXN0cyB0aGF0CisgICBub24taW50ZWdlciBhcmd1bWVudHMgYXJlIGhhbmRsZWQgY29ycmVjdGx5LgorICovCisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X2xvbmdfYXNfZG91YmxlKFB5T2JqZWN0ICpzZWxmKQoreworICAgIGRvdWJsZSBvdXQ7CisKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisKKyAgICBvdXQgPSBQeUxvbmdfQXNEb3VibGUoUHlfTm9uZSk7CisgICAgaWYgKG91dCAhPSAtMS4wIHx8ICFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3RfbG9uZ19hc19kb3VibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5TG9uZ19Bc0RvdWJsZShOb25lKSBkaWRuJ3QgY29tcGxhaW4iKTsKKyAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X2xvbmdfYXNfZG91YmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeUxvbmdfQXNEb3VibGUoTm9uZSkgcmFpc2VkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb21ldGhpbmcgb3RoZXIgdGhhbiBUeXBlRXJyb3IiKTsKKyAgICBQeUVycl9DbGVhcigpOworCisgICAgLyogUHlfSU5DUkVGKFB5X05vbmUpIG9taXR0ZWQgLSB3ZSBhbHJlYWR5IGhhdmUgYSByZWZlcmVuY2UgdG8gaXQuICovCisgICAgcmV0dXJuIFB5X05vbmU7Cit9CisKIC8qIFRlc3QgdGhlIEwgY29kZSBmb3IgUHlBcmdfUGFyc2VUdXBsZS4gIFRoaXMgc2hvdWxkIGRlbGl2ZXIgYSBQWV9MT05HX0xPTkcKICAgIGZvciBib3RoIGxvbmcgYW5kIGludCBhcmd1bWVudHMuICBUaGUgdGVzdCBtYXkgbGVhayBhIGxpdHRsZSBtZW1vcnkgaWYKICAgIGl0IGZhaWxzLgpAQCAtODM3LDcgKzgwMSw4IEBACiB9CiAKIC8qIHRlc3QgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzICovCi1zdGF0aWMgUHlPYmplY3QgKmdldGFyZ3Nfa2V5d29yZHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorc3RhdGljIFB5T2JqZWN0ICoKK2dldGFyZ3Nfa2V5d29yZHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJhcmcxIiwiYXJnMiIsImFyZzMiLCJhcmc0IiwiYXJnNSIsIE5VTEx9OwogICAgIHN0YXRpYyBjaGFyICpmbXQ9IihpaSlpfChpKGlpKSkoaWlpKWkiOwpAQCAtODUyLDYgKzgxNywyMSBAQAogICAgICAgICBpbnRfYXJnc1s1XSwgaW50X2FyZ3NbNl0sIGludF9hcmdzWzddLCBpbnRfYXJnc1s4XSwgaW50X2FyZ3NbOV0pOwogfQogCisvKiB0ZXN0IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyBrZXl3b3JkLW9ubHkgYXJndW1lbnRzICovCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0YXJnc19rZXl3b3JkX29ubHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJyZXF1aXJlZCIsICJvcHRpb25hbCIsICJrZXl3b3JkX29ubHkiLCBOVUxMfTsKKyAgICBpbnQgcmVxdWlyZWQgPSAtMTsKKyAgICBpbnQgb3B0aW9uYWwgPSAtMTsKKyAgICBpbnQga2V5d29yZF9vbmx5ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpfGkkaSIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXF1aXJlZCwgJm9wdGlvbmFsLCAma2V5d29yZF9vbmx5KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImlpaSIsIHJlcXVpcmVkLCBvcHRpb25hbCwga2V5d29yZF9vbmx5KTsKK30KKwogLyogRnVuY3Rpb25zIHRvIGNhbGwgUHlBcmdfUGFyc2VUdXBsZSB3aXRoIGludGVnZXIgZm9ybWF0IGNvZGVzLAogICAgYW5kIHJldHVybiB0aGUgcmVzdWx0LgogKi8KQEAgLTkzNiw2ICs5MTYsMTUgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHZhbHVlKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2dldGFyZ3NfcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHZhbHVlOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicCIsICZ2YWx1ZSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcodmFsdWUpOworfQorCiAjaWZkZWYgSEFWRV9MT05HX0xPTkcKIHN0YXRpYyBQeU9iamVjdCAqCiBnZXRhcmdzX0woUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMTAxMiw2ICsxMDAxLDE1IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitnZXRhcmdzX2MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNoYXIgYzsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImMiLCAmYykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCZjLCAxKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGdldGFyZ3NfcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgY2hhciAqc3RyOwpAQCAtMTE5Nyw1MSArMTE5NSw3MyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotdGVzdF9idWdfNzQxNChQeU9iamVjdCAqc2VsZikKK3BhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgLyogSXNzdWUgIzc0MTQ6IGZvciBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMsICdDJyBjb2RlIHdhc24ndCBiZWluZwotICAgICAgIHNraXBwZWQgcHJvcGVybHkgaW4gc2tpcGl0ZW0oKSAqLwotICAgIGludCBhID0gMCwgYiA9IDAsIHJlc3VsdDsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsiYSIsICJiIiwgTlVMTH07Ci0gICAgUHlPYmplY3QgKnR1cGxlID0gTlVMTCwgKmRpY3QgPSBOVUxMLCAqYl9zdHI7CisgICAgUHlPYmplY3QgKnN1Yl9hcmdzOworICAgIFB5T2JqZWN0ICpzdWJfa3dhcmdzOworICAgIGNoYXIgKnN1Yl9mb3JtYXQ7CisgICAgUHlPYmplY3QgKnN1Yl9rZXl3b3JkczsKIAotICAgIHR1cGxlID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgaWYgKHR1cGxlID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbHVyZTsKLSAgICBkaWN0ID0gUHlEaWN0X05ldygpOwotICAgIGlmIChkaWN0ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbHVyZTsKLSAgICBiX3N0ciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJiIik7Ci0gICAgaWYgKGJfc3RyID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbHVyZTsKLSAgICByZXN1bHQgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiYiIsIGJfc3RyKTsKLSAgICBQeV9ERUNSRUYoYl9zdHIpOwotICAgIGlmIChyZXN1bHQgPCAwKQotICAgICAgICBnb3RvIGZhaWx1cmU7CisgICAgUHlfc3NpemVfdCBpLCBzaXplOworICAgIGNoYXIgKmtleXdvcmRzWzggKyAxXTsgLyogc3BhY2UgZm9yIE5VTEwgYXQgZW5kICovCisgICAgUHlPYmplY3QgKm87CisgICAgUHlPYmplY3QgKmNvbnZlcnRlZFs4XTsKIAotICAgIHJlc3VsdCA9IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcyh0dXBsZSwgZGljdCwgInxDQyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmEsICZiKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgZ290byBmYWlsdXJlOworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAKLSAgICBpZiAoYSAhPSAwKQotICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3RfYnVnXzc0MTQiLAotICAgICAgICAgICAgIkMgZm9ybWF0IGNvZGUgbm90IHNraXBwZWQgcHJvcGVybHkiKTsKLSAgICBpZiAoYiAhPSAnYicpCi0gICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9idWdfNzQxNCIsCi0gICAgICAgICAgICAiQyBmb3JtYXQgY29kZSByZXR1cm5lZCB3cm9uZyB2YWx1ZSIpOworICAgIGRvdWJsZSBidWZmZXJzWzhdWzRdOyAvKiBkb3VibGUgZW5zdXJlcyBhbGlnbm1lbnQgd2hlcmUgbmVjZXNzYXJ5ICovCiAKLSAgICBQeV9ERUNSRUYoZGljdCk7Ci0gICAgUHlfREVDUkVGKHR1cGxlKTsKLSAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PeU86cGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzIiwKKyAgICAgICAgJnN1Yl9hcmdzLCAmc3ViX2t3YXJncywKKyAgICAgICAgJnN1Yl9mb3JtYXQsICZzdWJfa2V5d29yZHMpKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotICBmYWlsdXJlOgotICAgIFB5X1hERUNSRUYoZGljdCk7Ci0gICAgUHlfWERFQ1JFRih0dXBsZSk7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCEoUHlMaXN0X0NoZWNrRXhhY3Qoc3ViX2tleXdvcmRzKSB8fCBQeVR1cGxlX0NoZWNrRXhhY3Qoc3ViX2tleXdvcmRzKSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAicGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzOiBzdWJfa2V5d29yZHMgbXVzdCBiZSBlaXRoZXIgbGlzdCBvciB0dXBsZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtZW1zZXQoYnVmZmVycywgMCwgc2l6ZW9mKGJ1ZmZlcnMpKTsKKyAgICBtZW1zZXQoY29udmVydGVkLCAwLCBzaXplb2YoY29udmVydGVkKSk7CisgICAgbWVtc2V0KGtleXdvcmRzLCAwLCBzaXplb2Yoa2V5d29yZHMpKTsKKworICAgIHNpemUgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoc3ViX2tleXdvcmRzKTsKKyAgICBpZiAoc2l6ZSA+IDgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAicGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzOiB0b28gbWFueSBrZXl3b3JkcyBpbiBzdWJfa2V5d29yZHMiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgbyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShzdWJfa2V5d29yZHMsIGkpOworICAgICAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihvLCAodm9pZCAqKShjb252ZXJ0ZWQgKyBpKSkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJwYXJzZV90dXBsZV9hbmRfa2V5d29yZHM6IGNvdWxkIG5vdCBjb252ZXJ0IGtleXdvcmRzWyV6ZF0gdG8gbmFycm93IHN0cmluZyIsIGkpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIGtleXdvcmRzW2ldID0gUHlCeXRlc19BU19TVFJJTkcoY29udmVydGVkW2ldKTsKKyAgICB9CisKKyAgICByZXN1bHQgPSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoc3ViX2FyZ3MsIHN1Yl9rd2FyZ3MsCisgICAgICAgIHN1Yl9mb3JtYXQsIGtleXdvcmRzLAorICAgICAgICBidWZmZXJzICsgMCwgYnVmZmVycyArIDEsIGJ1ZmZlcnMgKyAyLCBidWZmZXJzICsgMywKKyAgICAgICAgYnVmZmVycyArIDQsIGJ1ZmZlcnMgKyA1LCBidWZmZXJzICsgNiwgYnVmZmVycyArIDcpOworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgfQorCitleGl0OgorICAgIHNpemUgPSBzaXplb2YoY29udmVydGVkKSAvIHNpemVvZihjb252ZXJ0ZWRbMF0pOworICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgUHlfWERFQ1JFRihjb252ZXJ0ZWRbaV0pOworICAgIH0KKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCi0KIHN0YXRpYyB2b2xhdGlsZSBpbnQgeDsKIAogLyogVGVzdCB0aGUgdSBhbmQgdSMgY29kZXMgZm9yIFB5QXJnX1BhcnNlVHVwbGUuIE1heSBsZWFrIG1lbW9yeSBpbiBjYXNlCkBAIC0xMjkzLDcgKzEzMTMsNyBAQAogdGVzdF9aX2NvZGUoUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKnR1cGxlLCAqb2JqOwotICAgIFB5X1VOSUNPREUgKnZhbHVlMSwgKnZhbHVlMjsKKyAgICBjb25zdCBQeV9VTklDT0RFICp2YWx1ZTEsICp2YWx1ZTI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCiAgICAgdHVwbGUgPSBQeVR1cGxlX05ldygyKTsKQEAgLTEzNDcsNiArMTM2Nyw3IEBACiAjaWYgZGVmaW5lZChTSVpFT0ZfV0NIQVJfVCkgJiYgKFNJWkVPRl9XQ0hBUl9UID09IDQpCiAgICAgY29uc3Qgd2NoYXJfdCB3dGV4dFsyXSA9IHsod2NoYXJfdCkweDEwQUJDRHV9OwogICAgIHNpemVfdCB3dGV4dGxlbiA9IDE7CisgICAgY29uc3Qgd2NoYXJfdCBpbnZhbGlkWzFdID0geyh3Y2hhcl90KTB4MTEwMDAwdX07CiAjZWxzZQogICAgIGNvbnN0IHdjaGFyX3Qgd3RleHRbM10gPSB7KHdjaGFyX3QpMHhEQkVBdSwgKHdjaGFyX3QpMHhERkNEdX07CiAgICAgc2l6ZV90IHd0ZXh0bGVuID0gMjsKQEAgLTEzNjMsNyArMTM4NCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUod2lkZSkgIT0gUHlVbmljb2RlX0dFVF9TSVpFKHV0ZjgpKSB7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHdpZGUpICE9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHV0ZjgpKSB7CiAgICAgICAgIFB5X0RFQ1JFRih3aWRlKTsKICAgICAgICAgUHlfREVDUkVGKHV0ZjgpOwogICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3Rfd2lkZWNoYXIiLApAQCAtMTM4Miw2ICsxNDAzLDIzIEBACiAKICAgICBQeV9ERUNSRUYod2lkZSk7CiAgICAgUHlfREVDUkVGKHV0ZjgpOworCisjaWYgZGVmaW5lZChTSVpFT0ZfV0NIQVJfVCkgJiYgKFNJWkVPRl9XQ0hBUl9UID09IDQpCisgICAgd2lkZSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoaW52YWxpZCwgMSk7CisgICAgaWYgKHdpZGUgPT0gTlVMTCkKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF93aWRlY2hhciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihMXCJcXFUwMDExMDAwMFwiLCAxKSBkaWRuJ3QgZmFpbCIpOworCisgICAgd2lkZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShpbnZhbGlkLCAxKTsKKyAgICBpZiAod2lkZSA9PSBOVUxMKQorICAgICAgICBQeUVycl9DbGVhcigpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X3dpZGVjaGFyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTFwiXFxVMDAxMTAwMDBcIiwgMSkgZGlkbid0IGZhaWwiKTsKKyNlbmRpZgorCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTE0ODMsNiArMTUyMSwyOSBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZV9sZWdhY3lfc3RyaW5nKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9VTklDT0RFICpkYXRhOworICAgIFB5X3NzaXplX3QgbGVuOworICAgIFB5T2JqZWN0ICp1OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ1IyIsICZkYXRhLCAmbGVuKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB1ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIGxlbik7CisgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBtZW1jcHkoUHlVbmljb2RlX0FTX1VOSUNPREUodSksIGRhdGEsIGxlbiAqIHNpemVvZihQeV9VTklDT0RFKSk7CisKKyAgICBpZiAobGVuID4gMCkgeyAvKiBUaGUgZW1wdHkgc3RyaW5nIGlzIGFsd2F5cyByZWFkeS4gKi8KKyAgICAgICAgYXNzZXJ0KCFQeVVuaWNvZGVfSVNfUkVBRFkodSkpOworICAgIH0KKworICAgIHJldHVybiB1OworfQorCitzdGF0aWMgUHlPYmplY3QgKgogZ2V0YXJnc193X3N0YXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X2J1ZmZlciBidWZmZXI7CkBAIC0xNTc2LDcgKzE2MzcsNyBAQAogICAgICAgICAgICAgIHstMHhmZmZmZmZmTCwgMjgsIC0xfX07CiAgICAgaW50IGk7CiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHRlc3RjYXNlcykgLyBzaXplb2Yoc3RydWN0IHRyaXBsZSk7ICsraSkgeworICAgIGZvciAoaSA9IDA7IGkgPCBQeV9BUlJBWV9MRU5HVEgodGVzdGNhc2VzKTsgKytpKSB7CiAgICAgICAgIFB5T2JqZWN0ICpwbG9uZyA9IFB5TG9uZ19Gcm9tTG9uZyh0ZXN0Y2FzZXNbaV0uaW5wdXQpOwogICAgICAgICBzaXplX3QgbmJpdHMgPSBfUHlMb25nX051bUJpdHMocGxvbmcpOwogICAgICAgICBpbnQgc2lnbiA9IF9QeUxvbmdfU2lnbihwbG9uZyk7CkBAIC0xNjMyLDYgKzE2OTMsMjkgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3Rfc2V0X2V4Y19pbmZvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb3JpZ19leGM7CisgICAgUHlPYmplY3QgKm5ld190eXBlLCAqbmV3X3ZhbHVlLCAqbmV3X3RiOworICAgIFB5T2JqZWN0ICp0eXBlLCAqdmFsdWUsICp0YjsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PTzp0ZXN0X3NldF9leGNfaW5mbyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfdHlwZSwgJm5ld192YWx1ZSwgJm5ld190YikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlFcnJfR2V0RXhjSW5mbygmdHlwZSwgJnZhbHVlLCAmdGIpOworCisgICAgUHlfSU5DUkVGKG5ld190eXBlKTsKKyAgICBQeV9JTkNSRUYobmV3X3ZhbHVlKTsKKyAgICBQeV9JTkNSRUYobmV3X3RiKTsKKyAgICBQeUVycl9TZXRFeGNJbmZvKG5ld190eXBlLCBuZXdfdmFsdWUsIG5ld190Yik7CisKKyAgICBvcmlnX2V4YyA9IFB5VHVwbGVfUGFjaygzLCB0eXBlID8gdHlwZSA6IFB5X05vbmUsIHZhbHVlID8gdmFsdWUgOiBQeV9Ob25lLCB0YiA/IHRiIDogUHlfTm9uZSk7CisgICAgUHlfWERFQ1JFRih0eXBlKTsKKyAgICBQeV9YREVDUkVGKHZhbHVlKTsKKyAgICBQeV9YREVDUkVGKHRiKTsKKyAgICByZXR1cm4gb3JpZ19leGM7Cit9CiAKIHN0YXRpYyBpbnQgdGVzdF9ydW5fY291bnRlciA9IDA7CiAKQEAgLTE3ODYsMTMgKzE4NzAsMTIgQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGNoYXIgKm1zZzsKLSAgICBzdGF0aWMgY29uc3QgUHlfVU5JQ09ERSBvbmVbXSA9IHsnMScsIDB9OwogCiAjZGVmaW5lIENIRUNLXzFfRk9STUFUKEZPUk1BVCwgVFlQRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChGT1JNQVQsIChUWVBFKTEpOyAgICAgICAgICAgICAgICAgXAogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoUHlfVU5JQ09ERV9zdHJjbXAoUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KSwgb25lKSkgeyAgICAgXAorICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhyZXN1bHQsICIxIikpIHsgICAgIFwKICAgICAgICAgbXNnID0gRk9STUFUICIgZmFpbGVkIGF0IDEiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBnb3RvIEZhaWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTIzMTcsNiArMjQwMCwxNCBAQAogICAgIFB5VGhyZWFkU3RhdGVfU3dhcChOVUxMKTsKIAogICAgIHN1YnN0YXRlID0gUHlfTmV3SW50ZXJwcmV0ZXIoKTsKKyAgICBpZiAoc3Vic3RhdGUgPT0gTlVMTCkgeworICAgICAgICAvKiBTaW5jZSBubyBuZXcgdGhyZWFkIHN0YXRlIHdhcyBjcmVhdGVkLCB0aGVyZSBpcyBubyBleGNlcHRpb24gdG8KKyAgICAgICAgICAgcHJvcGFnYXRlOyByYWlzZSBhIGZyZXNoIG9uZSBhZnRlciBzd2FwcGluZyBpbiB0aGUgb2xkIHRocmVhZAorICAgICAgICAgICBzdGF0ZS4gKi8KKyAgICAgICAgUHlUaHJlYWRTdGF0ZV9Td2FwKG1haW5zdGF0ZSk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJzdWItaW50ZXJwcmV0ZXIgY3JlYXRpb24gZmFpbGVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByID0gUHlSdW5fU2ltcGxlU3RyaW5nKGNvZGUpOwogICAgIFB5X0VuZEludGVycHJldGVyKHN1YnN0YXRlKTsKIApAQCAtMjMyNSw2ICsyNDE2LDQ0IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfcHl0aW1lX29iamVjdF90b190aW1lX3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgdGltZV90IHNlYzsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86cHl0aW1lX29iamVjdF90b190aW1lX3QiLCAmb2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lX3Qob2JqLCAmc2VjKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIF9QeUxvbmdfRnJvbVRpbWVfdChzZWMpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9weXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgdGltZV90IHNlYzsKKyAgICBsb25nIHVzZWM7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnB5dGltZV9vYmplY3RfdG9fdGltZXZhbCIsICZvYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWV2YWwob2JqLCAmc2VjLCAmdXNlYykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJObCIsIF9QeUxvbmdfRnJvbVRpbWVfdChzZWMpLCB1c2VjKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfcHl0aW1lX29iamVjdF90b190aW1lc3BlYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICB0aW1lX3Qgc2VjOworICAgIGxvbmcgbnNlYzsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86cHl0aW1lX29iamVjdF90b190aW1lc3BlYyIsICZvYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKG9iaiwgJnNlYywgJm5zZWMpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmwiLCBfUHlMb25nX0Zyb21UaW1lX3Qoc2VjKSwgbnNlYyk7Cit9CisKIAogc3RhdGljIFB5TWV0aG9kRGVmIFRlc3RNZXRob2RzW10gPSB7CiAgICAgeyJyYWlzZV9leGNlcHRpb24iLCAgICAgICAgIHJhaXNlX2V4Y2VwdGlvbiwgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCkBAIC0yMzM0LDE0ICsyNDYzLDE1IEBACiAgICAgeyJ0ZXN0X2xpc3RfYXBpIiwgICAgICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X2xpc3RfYXBpLCAgICAgIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfZGljdF9pdGVyYXRpb24iLCAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfZGljdF9pdGVyYXRpb24sTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9sYXp5X2hhc2hfaW5oZXJpdGFuY2UiLCAgICAgIChQeUNGdW5jdGlvbil0ZXN0X2xhenlfaGFzaF9pbmhlcml0YW5jZSxNRVRIX05PQVJHU30sCi0gICAgeyJ0ZXN0X2Jyb2tlbl9tZW1vcnl2aWV3IiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfYnJva2VuX21lbW9yeXZpZXcsTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9sb25nX2FwaSIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9sb25nX2FwaSwgICAgICBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X2xvbmdfYW5kX292ZXJmbG93IiwgKFB5Q0Z1bmN0aW9uKXRlc3RfbG9uZ19hbmRfb3ZlcmZsb3csCiAgICAgIE1FVEhfTk9BUkdTfSwKKyAgICB7InRlc3RfbG9uZ19hc19kb3VibGUiLCAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbG9uZ19hc19kb3VibGUsTUVUSF9OT0FSR1N9LAorICAgIHsidGVzdF9sb25nX2FzX3NpemVfdCIsICAgICAoUHlDRnVuY3Rpb24pdGVzdF9sb25nX2FzX3NpemVfdCxNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X2xvbmdfbnVtYml0cyIsICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X2xvbmdfbnVtYml0cywgIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3Rfa19jb2RlIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3Rfa19jb2RlLCAgICAgICAgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9lbXB0eV9hcmdwYXJzZSIsIChQeUNGdW5jdGlvbil0ZXN0X2VtcHR5X2FyZ3BhcnNlLE1FVEhfTk9BUkdTfSwKLSAgICB7InRlc3RfYnVnXzc0MTQiLCAoUHlDRnVuY3Rpb24pdGVzdF9idWdfNzQxNCwgTUVUSF9OT0FSR1N9LAorICAgIHsicGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzIiwgcGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsidGVzdF9udWxsX3N0cmluZ3MiLCAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9udWxsX3N0cmluZ3MsICBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X3N0cmluZ19mcm9tX2Zvcm1hdCIsIChQeUNGdW5jdGlvbil0ZXN0X3N0cmluZ19mcm9tX2Zvcm1hdCwgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF93aXRoX2RvY3N0cmluZyIsIChQeUNGdW5jdGlvbil0ZXN0X3dpdGhfZG9jc3RyaW5nLCBNRVRIX05PQVJHUywKQEAgLTIzNTIsNiArMjQ4Miw4IEBACiAgICAgeyJnZXRhcmdzX3R1cGxlIiwgICAgICAgICAgIGdldGFyZ3NfdHVwbGUsICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX2tleXdvcmRzIiwgKFB5Q0Z1bmN0aW9uKWdldGFyZ3Nfa2V5d29yZHMsCiAgICAgICBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCisgICAgeyJnZXRhcmdzX2tleXdvcmRfb25seSIsIChQeUNGdW5jdGlvbilnZXRhcmdzX2tleXdvcmRfb25seSwKKyAgICAgIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKICAgICB7ImdldGFyZ3NfYiIsICAgICAgICAgICAgICAgZ2V0YXJnc19iLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfQiIsICAgICAgICAgICAgICAgZ2V0YXJnc19CLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfaCIsICAgICAgICAgICAgICAgZ2V0YXJnc19oLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTIzNjEsNiArMjQ5Myw3IEBACiAgICAgeyJnZXRhcmdzX2kiLCAgICAgICAgICAgICAgIGdldGFyZ3NfaSwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX2wiLCAgICAgICAgICAgICAgIGdldGFyZ3NfbCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX24iLCAgICAgICAgICAgICAgIGdldGFyZ3NfbiwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCisgICAgeyJnZXRhcmdzX3AiLCAgICAgICAgICAgICAgIGdldGFyZ3NfcCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAjaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICB7ImdldGFyZ3NfTCIsICAgICAgICAgICAgICAgZ2V0YXJnc19MLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfSyIsICAgICAgICAgICAgICAgZ2V0YXJnc19LLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTIzNjksNiArMjUwMiw3IEBACiAgICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X2xvbmdfbG9uZ19hbmRfb3ZlcmZsb3csIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfTF9jb2RlIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfTF9jb2RlLCAgICAgICAgTUVUSF9OT0FSR1N9LAogI2VuZGlmCisgICAgeyJnZXRhcmdzX2MiLCAgICAgICAgICAgICAgIGdldGFyZ3NfYywgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX3MiLCAgICAgICAgICAgICAgIGdldGFyZ3NfcywgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX3Nfc3RhciIsICAgICAgICAgIGdldGFyZ3Nfc19zdGFyLCAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX3NfaGFzaCIsICAgICAgICAgIGdldGFyZ3Nfc19oYXNoLCAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCkBAIC0yMzk1LDYgKzI1MjksNyBAQAogICAgIHsidW5pY29kZV9hc3dpZGVjaGFyc3RyaW5nIix1bmljb2RlX2Fzd2lkZWNoYXJzdHJpbmcsICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsidW5pY29kZV9lbmNvZGVkZWNpbWFsIiwgICB1bmljb2RlX2VuY29kZWRlY2ltYWwsICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsidW5pY29kZV90cmFuc2Zvcm1kZWNpbWFsdG9hc2NpaSIsIHVuaWNvZGVfdHJhbnNmb3JtZGVjaW1hbHRvYXNjaWksIE1FVEhfVkFSQVJHU30sCisgICAgeyJ1bmljb2RlX2xlZ2FjeV9zdHJpbmciLCAgIHVuaWNvZGVfbGVnYWN5X3N0cmluZywgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICB7Il90ZXN0X3RocmVhZF9zdGF0ZSIsICAgICAgdGVzdF90aHJlYWRfc3RhdGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7Il9wZW5kaW5nX3RocmVhZGZ1bmMiLCAgICAgcGVuZGluZ190aHJlYWRmdW5jLCAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTI0MDQsNiArMjUzOSw3IEBACiAjZW5kaWYKICAgICB7InRyYWNlYmFja19wcmludCIsICAgICAgICAgdHJhY2ViYWNrX3ByaW50LCAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImV4Y2VwdGlvbl9wcmludCIsICAgICAgICAgZXhjZXB0aW9uX3ByaW50LCAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKKyAgICB7InNldF9leGNfaW5mbyIsICAgICAgICAgICAgdGVzdF9zZXRfZXhjX2luZm8sICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImFyZ3BhcnNpbmciLCAgICAgICAgICAgICAgYXJncGFyc2luZywgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImNvZGVfbmV3ZW1wdHkiLCAgICAgICAgICAgY29kZV9uZXdlbXB0eSwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7Im1ha2VfZXhjZXB0aW9uX3dpdGhfZG9jIiwgKFB5Q0Z1bmN0aW9uKW1ha2VfZXhjZXB0aW9uX3dpdGhfZG9jLApAQCAtMjQxMiw2ICsyNTQ4LDkgQEAKICAgICAgTUVUSF9OT0FSR1N9LAogICAgIHsiY3Jhc2hfbm9fY3VycmVudF90aHJlYWQiLCAoUHlDRnVuY3Rpb24pY3Jhc2hfbm9fY3VycmVudF90aHJlYWQsIE1FVEhfTk9BUkdTfSwKICAgICB7InJ1bl9pbl9zdWJpbnRlcnAiLCAgICAgICAgcnVuX2luX3N1YmludGVycCwgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKKyAgICB7InB5dGltZV9vYmplY3RfdG9fdGltZV90IiwgdGVzdF9weXRpbWVfb2JqZWN0X3RvX3RpbWVfdCwgIE1FVEhfVkFSQVJHU30sCisgICAgeyJweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwiLCB0ZXN0X3B5dGltZV9vYmplY3RfdG9fdGltZXZhbCwgIE1FVEhfVkFSQVJHU30sCisgICAgeyJweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjIiwgdGVzdF9weXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjLCAgTUVUSF9WQVJBUkdTfSwKICAgICB7TlVMTCwgTlVMTH0gLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTI1OTQsNyArMjczMyw2IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfVFlQRSgmX0hhc2hJbmhlcml0YW5jZVRlc3Rlcl9UeXBlKT0mUHlUeXBlX1R5cGU7Ci0gICAgUHlfVFlQRSgmX01lbW9yeVZpZXdUZXN0ZXJfVHlwZSk9JlB5VHlwZV9UeXBlOwogCiAgICAgUHlfVFlQRSgmdGVzdF9zdHJ1Y3RtZW1iZXJzVHlwZSk9JlB5VHlwZV9UeXBlOwogICAgIFB5X0lOQ1JFRigmdGVzdF9zdHJ1Y3RtZW1iZXJzVHlwZSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190aHJlYWRtb2R1bGUuYyBiL01vZHVsZXMvX3RocmVhZG1vZHVsZS5jCmluZGV4IDRmOGVjMmQuLmQxZGM2MWQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3RocmVhZG1vZHVsZS5jCisrKyBiL01vZHVsZXMvX3RocmVhZG1vZHVsZS5jCkBAIC0yMyw2ICsyMyw3IEBACiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrX2xvY2s7CiAgICAgUHlPYmplY3QgKmluX3dlYWtyZWZsaXN0OworICAgIGNoYXIgbG9ja2VkOyAvKiBmb3Igc2FuaXR5IGNoZWNraW5nICovCiB9IGxvY2tvYmplY3Q7CiAKIHN0YXRpYyB2b2lkCkBAIC0zMiw5ICszMyw4IEBACiAgICAgICAgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnMoKFB5T2JqZWN0ICopIHNlbGYpOwogICAgIGlmIChzZWxmLT5sb2NrX2xvY2sgIT0gTlVMTCkgewogICAgICAgICAvKiBVbmxvY2sgdGhlIGxvY2sgc28gaXQncyBzYWZlIHRvIGZyZWUgaXQgKi8KLSAgICAgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHNlbGYtPmxvY2tfbG9jaywgMCk7Ci0gICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhzZWxmLT5sb2NrX2xvY2spOwotCisgICAgICAgIGlmIChzZWxmLT5sb2NrZWQpCisgICAgICAgICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2soc2VsZi0+bG9ja19sb2NrKTsKICAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2tfbG9jayk7CiAgICAgfQogICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKQEAgLTUzLDYgKzUzLDcgQEAKICAgICBfUHlUaW1lX3RpbWV2YWwgY3VydGltZTsKICAgICBfUHlUaW1lX3RpbWV2YWwgZW5kdGltZTsKIAorCiAgICAgaWYgKG1pY3Jvc2Vjb25kcyA+IDApIHsKICAgICAgICAgX1B5VGltZV9nZXR0aW1lb2ZkYXkoJmVuZHRpbWUpOwogICAgICAgICBlbmR0aW1lLnR2X3NlYyArPSBtaWNyb3NlY29uZHMgLyAoMTAwMCAqIDEwMDApOwpAQCAtNjEsOSArNjIsMTMgQEAKIAogCiAgICAgZG8gewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHIgPSBQeVRocmVhZF9hY3F1aXJlX2xvY2tfdGltZWQobG9jaywgbWljcm9zZWNvbmRzLCAxKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgLyogZmlyc3QgYSBzaW1wbGUgbm9uLWJsb2NraW5nIHRyeSB3aXRob3V0IHJlbGVhc2luZyB0aGUgR0lMICovCisgICAgICAgIHIgPSBQeVRocmVhZF9hY3F1aXJlX2xvY2tfdGltZWQobG9jaywgMCwgMCk7CisgICAgICAgIGlmIChyID09IFBZX0xPQ0tfRkFJTFVSRSAmJiBtaWNyb3NlY29uZHMgIT0gMCkgeworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgciA9IFB5VGhyZWFkX2FjcXVpcmVfbG9ja190aW1lZChsb2NrLCBtaWNyb3NlY29uZHMsIDEpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgfSAKIAogICAgICAgICBpZiAociA9PSBQWV9MT0NLX0lOVFIpIHsKICAgICAgICAgICAgIC8qIFJ1biBzaWduYWwgaGFuZGxlcnMgaWYgd2Ugd2VyZSBpbnRlcnJ1cHRlZC4gIFByb3BhZ2F0ZQpAQCAtNzUsNyArODAsNyBAQAogCiAgICAgICAgICAgICAvKiBJZiB3ZSdyZSB1c2luZyBhIHRpbWVvdXQsIHJlY29tcHV0ZSB0aGUgdGltZW91dCBhZnRlciBwcm9jZXNzaW5nCiAgICAgICAgICAgICAgKiBzaWduYWxzLCBzaW5jZSB0aG9zZSBjYW4gdGFrZSB0aW1lLiAgKi8KLSAgICAgICAgICAgIGlmIChtaWNyb3NlY29uZHMgPj0gMCkgeworICAgICAgICAgICAgaWYgKG1pY3Jvc2Vjb25kcyA+IDApIHsKICAgICAgICAgICAgICAgICBfUHlUaW1lX2dldHRpbWVvZmRheSgmY3VydGltZSk7CiAgICAgICAgICAgICAgICAgbWljcm9zZWNvbmRzID0gKChlbmR0aW1lLnR2X3NlYyAtIGN1cnRpbWUudHZfc2VjKSAqIDEwMDAwMDAgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5kdGltZS50dl91c2VjIC0gY3VydGltZS50dl91c2VjKSk7CkBAIC0xMzQsNiArMTM5LDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgaWYgKHIgPT0gUFlfTE9DS19BQ1FVSVJFRCkKKyAgICAgICAgc2VsZi0+bG9ja2VkID0gMTsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHIgPT0gUFlfTE9DS19BQ1FVSVJFRCk7CiB9CiAKQEAgLTE1MiwxMyArMTU5LDEzIEBACiBsb2NrX1B5VGhyZWFkX3JlbGVhc2VfbG9jayhsb2Nrb2JqZWN0ICpzZWxmKQogewogICAgIC8qIFNhbml0eSBjaGVjazogdGhlIGxvY2sgbXVzdCBiZSBsb2NrZWQgKi8KLSAgICBpZiAoUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHNlbGYtPmxvY2tfbG9jaywgMCkpIHsKLSAgICAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHNlbGYtPmxvY2tfbG9jayk7CisgICAgaWYgKCFzZWxmLT5sb2NrZWQpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFRocmVhZEVycm9yLCAicmVsZWFzZSB1bmxvY2tlZCBsb2NrIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhzZWxmLT5sb2NrX2xvY2spOworICAgIHNlbGYtPmxvY2tlZCA9IDA7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQpAQCAtMTc0LDExICsxODEsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGxvY2tfbG9ja2VkX2xvY2sobG9ja29iamVjdCAqc2VsZikKIHsKLSAgICBpZiAoUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHNlbGYtPmxvY2tfbG9jaywgMCkpIHsKLSAgICAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHNlbGYtPmxvY2tfbG9jayk7Ci0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMEwpOwotICAgIH0KLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDFMKTsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKXNlbGYtPmxvY2tlZCk7CiB9CiAKIFB5RG9jX1NUUlZBUihsb2NrZWRfZG9jLApAQCAtMzEyLDE0ICszMTUsNyBAQAogICAgICAgICBzZWxmLT5ybG9ja19jb3VudCA9IGNvdW50OwogICAgICAgICBQeV9SRVRVUk5fVFJVRTsKICAgICB9Ci0KLSAgICBpZiAoc2VsZi0+cmxvY2tfY291bnQgPiAwIHx8Ci0gICAgICAgICFQeVRocmVhZF9hY3F1aXJlX2xvY2soc2VsZi0+cmxvY2tfbG9jaywgMCkpIHsKLSAgICAgICAgaWYgKG1pY3Jvc2Vjb25kcyA9PSAwKSB7Ci0gICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7Ci0gICAgICAgIH0KLSAgICAgICAgciA9IGFjcXVpcmVfdGltZWQoc2VsZi0+cmxvY2tfbG9jaywgbWljcm9zZWNvbmRzKTsKLSAgICB9CisgICAgciA9IGFjcXVpcmVfdGltZWQoc2VsZi0+cmxvY2tfbG9jaywgbWljcm9zZWNvbmRzKTsKICAgICBpZiAociA9PSBQWV9MT0NLX0FDUVVJUkVEKSB7CiAgICAgICAgIGFzc2VydChzZWxmLT5ybG9ja19jb3VudCA9PSAwKTsKICAgICAgICAgc2VsZi0+cmxvY2tfb3duZXIgPSB0aWQ7CkBAIC00MTMsNiArNDA5LDEyIEBACiAgICAgbG9uZyBvd25lcjsKICAgICB1bnNpZ25lZCBsb25nIGNvdW50OwogCisgICAgaWYgKHNlbGYtPnJsb2NrX2NvdW50ID09IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgcmVsZWFzZSB1bi1hY3F1aXJlZCBsb2NrIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIG93bmVyID0gc2VsZi0+cmxvY2tfb3duZXI7CiAgICAgY291bnQgPSBzZWxmLT5ybG9ja19jb3VudDsKICAgICBzZWxmLT5ybG9ja19jb3VudCA9IDA7CkBAIC01NDEsNiArNTQzLDcgQEAKICAgICBpZiAoc2VsZiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzZWxmLT5sb2NrX2xvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgc2VsZi0+bG9ja2VkID0gMDsKICAgICBzZWxmLT5pbl93ZWFrcmVmbGlzdCA9IE5VTEw7CiAgICAgaWYgKHNlbGYtPmxvY2tfbG9jayA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKQEAgLTEyMjUsMTEgKzEyMjgsOSBAQAogCiBzdGF0aWMgUHlNZXRob2REZWYgdGhyZWFkX21ldGhvZHNbXSA9IHsKICAgICB7InN0YXJ0X25ld190aHJlYWQiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXRocmVhZF9QeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9uZXdfZG9jfSwKKyAgICAgTUVUSF9WQVJBUkdTLCBzdGFydF9uZXdfZG9jfSwKICAgICB7InN0YXJ0X25ldyIsICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRocmVhZF9QeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9uZXdfZG9jfSwKKyAgICAgTUVUSF9WQVJBUkdTLCBzdGFydF9uZXdfZG9jfSwKICAgICB7ImFsbG9jYXRlX2xvY2siLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRocmVhZF9QeVRocmVhZF9hbGxvY2F0ZV9sb2NrLAogICAgICBNRVRIX05PQVJHUywgYWxsb2NhdGVfZG9jfSwKICAgICB7ImFsbG9jYXRlIiwgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRocmVhZF9QeVRocmVhZF9hbGxvY2F0ZV9sb2NrLApAQCAtMTI0NSw4ICsxMjQ2LDcgQEAKICAgICB7Il9jb3VudCIsICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRocmVhZF9fY291bnQsCiAgICAgIE1FVEhfTk9BUkdTLCBfY291bnRfZG9jfSwKICAgICB7InN0YWNrX3NpemUiLCAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRocmVhZF9zdGFja19zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja19zaXplX2RvY30sCisgICAgIE1FVEhfVkFSQVJHUywgc3RhY2tfc2l6ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTEzMTAsNyArMTMxMCw5IEBACiAKICAgICAvKiBBZGQgYSBzeW1ib2xpYyBjb25zdGFudCAqLwogICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwotICAgIFRocmVhZEVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJfdGhyZWFkLmVycm9yIiwgTlVMTCwgTlVMTCk7CisgICAgVGhyZWFkRXJyb3IgPSBQeUV4Y19SdW50aW1lRXJyb3I7CisgICAgUHlfSU5DUkVGKFRocmVhZEVycm9yKTsKKwogICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJlcnJvciIsIFRocmVhZEVycm9yKTsKICAgICBMb2NrdHlwZS50cF9kb2MgPSBsb2NrX2RvYzsKICAgICBQeV9JTkNSRUYoJkxvY2t0eXBlKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3RpbWUuYyBiL01vZHVsZXMvX3RpbWUuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBjYzhlMS4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL190aW1lLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0jaW5jbHVkZSAiUHl0aG9uLmgiCi0jaW5jbHVkZSAiX3RpbWUuaCIKLQotLyogRXhwb3NlZCBpbiB0aW1lZnVuY3MuaC4gKi8KLXRpbWVfdAotX1B5VGltZV9Eb3VibGVUb1RpbWV0KGRvdWJsZSB4KQotewotICAgIHRpbWVfdCByZXN1bHQ7Ci0gICAgZG91YmxlIGRpZmY7Ci0KLSAgICByZXN1bHQgPSAodGltZV90KXg7Ci0gICAgLyogSG93IG11Y2ggaW5mbyBkaWQgd2UgbG9zZT8gIHRpbWVfdCBtYXkgYmUgYW4gaW50ZWdyYWwgb3IKLSAgICAgKiBmbG9hdGluZyB0eXBlLCBhbmQgd2UgZG9uJ3Qga25vdyB3aGljaC4gIElmIGl0J3MgaW50ZWdyYWwsCi0gICAgICogd2UgZG9uJ3Qga25vdyB3aGV0aGVyIEMgdHJ1bmNhdGVzLCByb3VuZHMsIHJldHVybnMgdGhlIGZsb29yLAotICAgICAqIGV0Yy4gIElmIHdlIGxvc3QgYSBzZWNvbmQgb3IgbW9yZSwgdGhlIEMgcm91bmRpbmcgaXMKLSAgICAgKiB1bnJlYXNvbmFibGUsIG9yIHRoZSBpbnB1dCBqdXN0IGRvZXNuJ3QgZml0IGluIGEgdGltZV90OwotICAgICAqIGNhbGwgaXQgYW4gZXJyb3IgcmVnYXJkbGVzcy4gIE5vdGUgdGhhdCB0aGUgb3JpZ2luYWwgY2FzdCB0bwotICAgICAqIHRpbWVfdCBjYW4gY2F1c2UgYSBDIGVycm9yIHRvbywgYnV0IG5vdGhpbmcgd2UgY2FuIGRvIHRvCi0gICAgICogd29yayBhcm91bmQgdGhhdC4KLSAgICAgKi8KLSAgICBkaWZmID0geCAtIChkb3VibGUpcmVzdWx0OwotICAgIGlmIChkaWZmIDw9IC0xLjAgfHwgZGlmZiA+PSAxLjApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSBmb3IgcGxhdGZvcm0gdGltZV90Iik7Ci0gICAgICAgIHJlc3VsdCA9ICh0aW1lX3QpLTE7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190aW1lLmggYi9Nb2R1bGVzL190aW1lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxNjU5M2IuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fdGltZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0vKiBYWFg6IEl0IGlzIHByb2JhYmx5IGJlc3QgdG8gbW92ZSB0aW1lZnVuY3MuaCBjb250ZW50IGluIGhlcmUsIGFuZAotICAgcmVtb3ZlIGl0IGJ1dCB1c2VyIGNvZGUgbWF5IHJlbHkgb24gaXQuICovCi0jaW5jbHVkZSAidGltZWZ1bmNzLmgiCmRpZmYgLS1naXQgYS9Nb2R1bGVzL190a2ludGVyLmMgYi9Nb2R1bGVzL190a2ludGVyLmMKaW5kZXggYzZhM2UzOC4uZDE4YzdmMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGtpbnRlci5jCisrKyBiL01vZHVsZXMvX3RraW50ZXIuYwpAQCAtODAsMTggKzgwLDYgQEAKICNlcnJvciAiVGsgb2xkZXIgdGhhbiA4LjMuMSBub3Qgc3VwcG9ydGVkIgogI2VuZGlmCiAKLS8qIFVuaWNvZGUgY29udmVyc2lvbiBhc3N1bWVzIHRoYXQgVGNsX1VuaUNoYXIgaXMgdHdvIGJ5dGVzLgotICAgV2UgY2Fubm90IHRlc3QgdGhpcyBkaXJlY3RseSwgc28gd2UgdGVzdCBVVEYtOCBzaXplIGluc3RlYWQsCi0gICBleHBlY3RpbmcgdGhhdCBUQ0xfVVRGX01BWCBpcyBjaGFuZ2VkIGlmIFRjbCBldmVyIHN1cHBvcnRzCi0gICBlaXRoZXIgVVRGLTE2IG9yIFVDUy00LgotICAgUmVkaGF0IDggc2V0cyBUQ0xfVVRGX01BWCB0byA2LCBhbmQgdXNlcyB3Y2hhcl90IGZvcgotICAgVGNsX1VuaWNoYXIuIFRoaXMgaXMgYWxzbyBvayBhcyBsb25nIGFzIFB5dGhvbiB1c2VzIFVDUy00LAotICAgYXMgd2VsbC4KLSovCi0jaWYgVENMX1VURl9NQVggIT0gMyAmJiAhKGRlZmluZWQoUHlfVU5JQ09ERV9XSURFKSAmJiBUQ0xfVVRGX01BWD09NikKLSNlcnJvciAidW5zdXBwb3J0ZWQgVGNsIGNvbmZpZ3VyYXRpb24iCi0jZW5kaWYKLQogI2lmICEoZGVmaW5lZChNU19XSU5ET1dTKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pKQogI2RlZmluZSBIQVZFX0NSRUFURUZJTEVIQU5ETEVSCiAjZW5kaWYKQEAgLTk3NSw0MCArOTYzLDQ2IEBACiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqaW5idWYgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2YWx1ZSk7Ci0gICAgICAgIFB5X3NzaXplX3Qgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRSh2YWx1ZSk7Ci0gICAgICAgIC8qIFRoaXMgI2lmZGVmIGFzc3VtZXMgdGhhdCBUY2wgdXNlcyBVQ1MtMi4KLSAgICAgICAgICAgU2VlIFRDTF9VVEZfTUFYIHRlc3QgYWJvdmUuICovCi0jaWYgZGVmaW5lZChQeV9VTklDT0RFX1dJREUpICYmIFRDTF9VVEZfTUFYID09IDMKKyAgICAgICAgdm9pZCAqaW5idWY7CisgICAgICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICAgICAgaW50IGtpbmQ7CiAgICAgICAgIFRjbF9VbmlDaGFyICpvdXRidWYgPSBOVUxMOwogICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIHNpemVfdCBhbGxvY3NpemUgPSAoKHNpemVfdClzaXplKSAqIHNpemVvZihUY2xfVW5pQ2hhcik7Ci0gICAgICAgIGlmIChhbGxvY3NpemUgPj0gc2l6ZSkKLSAgICAgICAgICAgIG91dGJ1ZiA9IChUY2xfVW5pQ2hhciopY2thbGxvYyhhbGxvY3NpemUpOworICAgICAgICBzaXplX3QgYWxsb2NzaXplOworCisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodmFsdWUpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgaW5idWYgPSBQeVVuaWNvZGVfREFUQSh2YWx1ZSk7CisgICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh2YWx1ZSk7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh2YWx1ZSk7CisgICAgICAgIGFsbG9jc2l6ZSA9ICgoc2l6ZV90KXNpemUpICogc2l6ZW9mKFRjbF9VbmlDaGFyKTsKKyAgICAgICAgb3V0YnVmID0gKFRjbF9VbmlDaGFyKilja2FsbG9jKGFsbG9jc2l6ZSk7CiAgICAgICAgIC8qIEVsc2Ugb3ZlcmZsb3cgb2NjdXJyZWQsIGFuZCB3ZSB0YWtlIHRoZSBuZXh0IGV4aXQgKi8KICAgICAgICAgaWYgKCFvdXRidWYpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoaW5idWZbaV0gPj0gMHgxMDAwMCkgeworICAgICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGluYnVmLCBpKTsKKyAgICAgICAgICAgIC8qIFdlIGNhbm5vdCB0ZXN0IGZvciBzaXplb2YoVGNsX1VuaUNoYXIpIGRpcmVjdGx5LAorICAgICAgICAgICAgICAgc28gd2UgdGVzdCBmb3IgVVRGLTggc2l6ZSBpbnN0ZWFkLiAqLworI2lmIFRDTF9VVEZfTUFYID09IDMKKyAgICAgICAgICAgIGlmIChjaCA+PSAweDEwMDAwKSB7CiAgICAgICAgICAgICAgICAgLyogVGNsIGRvZXNuJ3QgZG8gVVRGLTE2LCB5ZXQuICovCiAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFRraW50ZXJfVGNsRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFyYWN0ZXIgVSsleCBpcyBhYm92ZSB0aGUgcmFuZ2UgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKFUrMDAwMC1VK0ZGRkYpIGFsbG93ZWQgYnkgVGNsIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5idWZbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaCk7CiAgICAgICAgICAgICAgICAgY2tmcmVlKEZSRUVDQVNUIG91dGJ1Zik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBvdXRidWZbaV0gPSBpbmJ1ZltpXTsKKyNlbmRpZgorICAgICAgICAgICAgb3V0YnVmW2ldID0gY2g7CiAgICAgICAgIH0KICAgICAgICAgcmVzdWx0ID0gVGNsX05ld1VuaWNvZGVPYmoob3V0YnVmLCBzaXplKTsKICAgICAgICAgY2tmcmVlKEZSRUVDQVNUIG91dGJ1Zik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0jZWxzZQotICAgICAgICByZXR1cm4gVGNsX05ld1VuaWNvZGVPYmooaW5idWYsIHNpemUpOwotI2VuZGlmCi0KICAgICB9CiAgICAgZWxzZSBpZihQeVRjbE9iamVjdF9DaGVjayh2YWx1ZSkpIHsKICAgICAgICAgVGNsX09iaiAqdiA9ICgoUHlUY2xPYmplY3QqKXZhbHVlKS0+dmFsdWU7CkBAIC0xMDkwLDI0ICsxMDg0LDE0IEBACiAgICAgfQogCiAgICAgaWYgKHZhbHVlLT50eXBlUHRyID09IGFwcC0+U3RyaW5nVHlwZSkgewotI2lmIGRlZmluZWQoUHlfVU5JQ09ERV9XSURFKSAmJiBUQ0xfVVRGX01BWD09MwotICAgICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgICAgICBpbnQgc2l6ZTsKLSAgICAgICAgVGNsX1VuaUNoYXIgKmlucHV0OwotICAgICAgICBQeV9VTklDT0RFICpvdXRwdXQ7Ci0KLSAgICAgICAgc2l6ZSA9IFRjbF9HZXRDaGFyTGVuZ3RoKHZhbHVlKTsKLSAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHNpemUpOwotICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpbnB1dCA9IFRjbF9HZXRVbmljb2RlKHZhbHVlKTsKLSAgICAgICAgb3V0cHV0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KTsKLSAgICAgICAgd2hpbGUgKHNpemUtLSkKLSAgICAgICAgICAgICpvdXRwdXQrKyA9ICppbnB1dCsrOwotICAgICAgICByZXR1cm4gcmVzdWx0OworI2lmIFRDTF9VVEZfTUFYPT0zCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKAorICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0tJTkQsIFRjbF9HZXRVbmljb2RlKHZhbHVlKSwKKyAgICAgICAgICAgIFRjbF9HZXRDaGFyTGVuZ3RoKHZhbHVlKSk7CiAjZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKFRjbF9HZXRVbmljb2RlKHZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUY2xfR2V0Q2hhckxlbmd0aCh2YWx1ZSkpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YSgKKyAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9LSU5ELCBUY2xfR2V0VW5pY29kZSh2YWx1ZSksCisgICAgICAgICAgICBUY2xfR2V0Q2hhckxlbmd0aCh2YWx1ZSkpOwogI2VuZGlmCiAgICAgfQogCkBAIC0xMzU5LDYgKzEzNDMsMTEgQEAKICAgICBjaGFyICpjbWQ7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAKKyAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxjYWxsIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjQiLAorICAgICAgICAgICAgICAgICAgICAgMSkgPCAwKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIENIRUNLX1RDTF9BUFBBUlRNRU5UOwogCiAgICAgY21kICA9IE1lcmdlKGFyZ3MpOwpAQCAtMTQwOCw2ICsxMzk3LDExIEBACiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgaW50IGVycjsKIAorICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgImdsb2JhbGV2YWwgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICAgICAxKSA8IDApCisgICAgICAgIHJldHVybiAwOworCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmdsb2JhbGV2YWwiLCAmc2NyaXB0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTE5NzAsOSArMTk2NCwxNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFRrYXBwX01lcmdlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpzID0gTWVyZ2UoYXJncyk7CisgICAgY2hhciAqczsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKIAorICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgIm1lcmdlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjQiLAorICAgICAgICAgICAgICAgICAgICAgMSkgPCAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHMgPSBNZXJnZShhcmdzKTsKKwogICAgIGlmIChzKSB7CiAgICAgICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHMpOwogICAgICAgICBja2ZyZWUocyk7CkBAIC0yMDA3LDcgKzIwMDgsNyBAQAogUHl0aG9uQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogewogICAgIFB5dGhvbkNtZF9DbGllbnREYXRhICpkYXRhID0gKFB5dGhvbkNtZF9DbGllbnREYXRhICopY2xpZW50RGF0YTsKLSAgICBQeU9iamVjdCAqc2VsZiwgKmZ1bmMsICphcmcsICpyZXM7CisgICAgUHlPYmplY3QgKmZ1bmMsICphcmcsICpyZXM7CiAgICAgaW50IGksIHJ2OwogICAgIFRjbF9PYmogKm9ial9yZXM7CiAKQEAgLTIwMTYsNyArMjAxNyw2IEBACiAgICAgLyogVEJEOiBubyBlcnJvciBjaGVja2luZyBoZXJlIHNpbmNlIHdlIGtub3csIHZpYSB0aGUKICAgICAgKiBUa2FwcF9DcmVhdGVDb21tYW5kKCkgdGhhdCB0aGUgY2xpZW50IGRhdGEgaXMgYSB0d28tdHVwbGUKICAgICAgKi8KLSAgICBzZWxmID0gZGF0YS0+c2VsZjsKICAgICBmdW5jID0gZGF0YS0+ZnVuYzsKIAogICAgIC8qIENyZWF0ZSBhcmd1bWVudCBsaXN0IChhcmd2MSwgLi4uLCBhcmd2TikgKi8KQEAgLTI0MTUsMTEgKzI0MTUsOSBAQAogVGt0dF9SZXByKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFRrdHRPYmplY3QgKnYgPSAoVGt0dE9iamVjdCAqKXNlbGY7Ci0gICAgY2hhciBidWZbMTAwXTsKLQotICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIjx0a3RpbWVydG9rZW4gYXQgJXAlcz4iLCB2LAotICAgICAgICAgICAgICAgICAgICB2LT5mdW5jID09IE5VTEwgPyAiLCBoYW5kbGVyIGRlbGV0ZWQiIDogIiIpOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhidWYpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPHRrdGltZXJ0b2tlbiBhdCAlcCVzPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtPmZ1bmMgPT0gTlVMTCA/ICIsIGhhbmRsZXIgZGVsZXRlZCIgOiAiIik7CiB9CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgVGt0dF9UeXBlID0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3dpbmFwaS5jIGIvTW9kdWxlcy9fd2luYXBpLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA3NDg5MQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3dpbmFwaS5jCkBAIC0wLDAgKzEsMTMyOCBAQAorLyoKKyAqIFN1cHBvcnQgcm91dGluZXMgZnJvbSB0aGUgV2luZG93cyBBUEkKKyAqCisgKiBUaGlzIG1vZHVsZSB3YXMgb3JpZ2luYWxseSBjcmVhdGVkIGJ5IG1lcmdpbmcgUEMvX3N1YnByb2Nlc3MuYyB3aXRoCisgKiBNb2R1bGVzL19tdWx0aXByb2Nlc3Npbmcvd2luMzJfZnVuY3Rpb25zLmMuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA0IGJ5IEZyZWRyaWsgTHVuZGggPGZyZWRyaWtAcHl0aG9ud2FyZS5jb20+CisgKiBDb3B5cmlnaHQgKGMpIDIwMDQgYnkgU2VjcmV0IExhYnMgQUIsIGh0dHA6Ly93d3cucHl0aG9ud2FyZS5jb20KKyAqIENvcHlyaWdodCAoYykgMjAwNCBieSBQZXRlciBBc3RyYW5kIDxhc3RyYW5kQGx5c2F0b3IubGl1LnNlPgorICoKKyAqIEJ5IG9idGFpbmluZywgdXNpbmcsIGFuZC9vciBjb3B5aW5nIHRoaXMgc29mdHdhcmUgYW5kL29yIGl0cworICogYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uLCB5b3UgYWdyZWUgdGhhdCB5b3UgaGF2ZSByZWFkLCB1bmRlcnN0b29kLAorICogYW5kIHdpbGwgY29tcGx5IHdpdGggdGhlIGZvbGxvd2luZyB0ZXJtcyBhbmQgY29uZGl0aW9uczoKKyAqCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAorICogaXRzIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlzCisgKiBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluCisgKiBhbGwgY29waWVzLCBhbmQgdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uCisgKiBub3RpY2UgYXBwZWFyIGluIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YgdGhlCisgKiBhdXRob3JzIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvCisgKiBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IKKyAqIHBlcm1pc3Npb24uCisgKgorICogVEhFIEFVVEhPUlMgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUsCisgKiBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVDVCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUworICogT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAorICogTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KKyAqIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgorICoKKyAqLworCisvKiBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuICovCisvKiBTZWUgaHR0cDovL3d3dy5weXRob24ub3JnLzIuNC9saWNlbnNlIGZvciBsaWNlbnNpbmcgZGV0YWlscy4gKi8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorCisjZGVmaW5lIFdJTkRPV1NfTEVBTl9BTkRfTUVBTgorI2luY2x1ZGUgIndpbmRvd3MuaCIKKyNpbmNsdWRlIDxjcnRkYmcuaD4KKworI2lmIGRlZmluZWQoTVNfV0lOMzIpICYmICFkZWZpbmVkKE1TX1dJTjY0KQorI2RlZmluZSBIQU5ETEVfVE9fUFlOVU0oaGFuZGxlKSBcCisgICAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKHVuc2lnbmVkIGxvbmcpIGhhbmRsZSkKKyNkZWZpbmUgUFlOVU1fVE9fSEFORExFKG9iaikgKChIQU5ETEUpUHlMb25nX0FzVW5zaWduZWRMb25nKG9iaikpCisjZGVmaW5lIEZfUE9JTlRFUiAiayIKKyNkZWZpbmUgVF9QT0lOVEVSIFRfVUxPTkcKKyNlbHNlCisjZGVmaW5lIEhBTkRMRV9UT19QWU5VTShoYW5kbGUpIFwKKyAgICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoKHVuc2lnbmVkIGxvbmcgbG9uZykgaGFuZGxlKQorI2RlZmluZSBQWU5VTV9UT19IQU5ETEUob2JqKSAoKEhBTkRMRSlQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKG9iaikpCisjZGVmaW5lIEZfUE9JTlRFUiAiSyIKKyNkZWZpbmUgVF9QT0lOVEVSIFRfVUxPTkdMT05HCisjZW5kaWYKKworI2RlZmluZSBGX0hBTkRMRSBGX1BPSU5URVIKKyNkZWZpbmUgRl9EV09SRCAiayIKKyNkZWZpbmUgRl9CT09MICJpIgorI2RlZmluZSBGX1VJTlQgIkkiCisKKyNkZWZpbmUgVF9IQU5ETEUgVF9QT0lOVEVSCisKKy8qIEdyYWIgQ2FuY2VsSW9FeCBkeW5hbWljYWxseSBmcm9tIGtlcm5lbDMyICovCitzdGF0aWMgaW50IGhhc19DYW5jZWxJb0V4ID0gLTE7CitzdGF0aWMgQk9PTCAoQ0FMTEJBQ0sgKlB5X0NhbmNlbElvRXgpKEhBTkRMRSwgTFBPVkVSTEFQUEVEKTsKKworc3RhdGljIGludAorY2hlY2tfQ2FuY2VsSW9FeCgpCit7CisgICAgaWYgKGhhc19DYW5jZWxJb0V4ID09IC0xKQorICAgIHsKKyAgICAgICAgSElOU1RBTkNFIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZSgiS0VSTkVMMzIiKTsKKyAgICAgICAgKiAoRkFSUFJPQyAqKSAmUHlfQ2FuY2VsSW9FeCA9IEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5jZWxJb0V4Iik7CisgICAgICAgIGhhc19DYW5jZWxJb0V4ID0gKFB5X0NhbmNlbElvRXggIT0gTlVMTCk7CisgICAgfQorICAgIHJldHVybiBoYXNfQ2FuY2VsSW9FeDsKK30KKworCisvKgorICogQSBQeXRob24gb2JqZWN0IHdyYXBwaW5nIGFuIE9WRVJMQVBQRUQgc3RydWN0dXJlIGFuZCBvdGhlciB1c2VmdWwgZGF0YQorICogZm9yIG92ZXJsYXBwZWQgSS9PCisgKi8KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBPVkVSTEFQUEVEIG92ZXJsYXBwZWQ7CisgICAgLyogRm9yIGNvbnZlbmllbmNlLCB3ZSBzdG9yZSB0aGUgZmlsZSBoYW5kbGUgdG9vICovCisgICAgSEFORExFIGhhbmRsZTsKKyAgICAvKiBXaGV0aGVyIHRoZXJlJ3MgSS9PIGluIGZsaWdodCAqLworICAgIGludCBwZW5kaW5nOworICAgIC8qIFdoZXRoZXIgSS9PIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgKi8KKyAgICBpbnQgY29tcGxldGVkOworICAgIC8qIEJ1ZmZlciB1c2VkIGZvciByZWFkaW5nIChvcHRpb25hbCkgKi8KKyAgICBQeU9iamVjdCAqcmVhZF9idWZmZXI7CisgICAgLyogQnVmZmVyIHVzZWQgZm9yIHdyaXRpbmcgKG9wdGlvbmFsKSAqLworICAgIFB5X2J1ZmZlciB3cml0ZV9idWZmZXI7Cit9IE92ZXJsYXBwZWRPYmplY3Q7CisKK3N0YXRpYyB2b2lkCitvdmVybGFwcGVkX2RlYWxsb2MoT3ZlcmxhcHBlZE9iamVjdCAqc2VsZikKK3sKKyAgICBEV09SRCBieXRlczsKKyAgICBpbnQgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgaWYgKHNlbGYtPnBlbmRpbmcpIHsKKyAgICAgICAgLyogbWFrZSBpdCBhIHByb2dyYW1taW5nIGVycm9yIHRvIGRlYWxsb2NhdGUgd2hpbGUgb3BlcmF0aW9uCisgICAgICAgICAgIGlzIHBlbmRpbmcsIGV2ZW4gaWYgd2UgY2FuIHNhZmVseSBjYW5jZWwgaXQgKi8KKyAgICAgICAgaWYgKGNoZWNrX0NhbmNlbElvRXgoKSAmJgorICAgICAgICAgICAgICAgIFB5X0NhbmNlbElvRXgoc2VsZi0+aGFuZGxlLCAmc2VsZi0+b3ZlcmxhcHBlZCkpCisgICAgICAgICAgICBHZXRPdmVybGFwcGVkUmVzdWx0KHNlbGYtPmhhbmRsZSwgJnNlbGYtPm92ZXJsYXBwZWQsICZieXRlcywgVFJVRSk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiSS9PIG9wZXJhdGlvbnMgc3RpbGwgaW4gZmxpZ2h0IHdoaWxlIGRlc3Ryb3lpbmcgIgorICAgICAgICAgICAgICAgICAgICAgICAgIk92ZXJsYXBwZWQgb2JqZWN0LCB0aGUgcHJvY2VzcyBtYXkgY3Jhc2giKTsKKyAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKE5VTEwpOworICAgIH0KKyAgICBDbG9zZUhhbmRsZShzZWxmLT5vdmVybGFwcGVkLmhFdmVudCk7CisgICAgU2V0TGFzdEVycm9yKGVycik7CisgICAgaWYgKHNlbGYtPndyaXRlX2J1ZmZlci5vYmopCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNlbGYtPndyaXRlX2J1ZmZlcik7CisgICAgUHlfQ0xFQVIoc2VsZi0+cmVhZF9idWZmZXIpOworICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK292ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdChPdmVybGFwcGVkT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqd2FpdG9iaikKK3sKKyAgICBpbnQgd2FpdDsKKyAgICBCT09MIHJlczsKKyAgICBEV09SRCB0cmFuc2ZlcnJlZCA9IDA7CisgICAgRFdPUkQgZXJyOworCisgICAgd2FpdCA9IFB5T2JqZWN0X0lzVHJ1ZSh3YWl0b2JqKTsKKyAgICBpZiAod2FpdCA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXMgPSBHZXRPdmVybGFwcGVkUmVzdWx0KHNlbGYtPmhhbmRsZSwgJnNlbGYtPm92ZXJsYXBwZWQsICZ0cmFuc2ZlcnJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXQgIT0gMCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGVyciA9IHJlcyA/IEVSUk9SX1NVQ0NFU1MgOiBHZXRMYXN0RXJyb3IoKTsKKyAgICBzd2l0Y2ggKGVycikgeworICAgICAgICBjYXNlIEVSUk9SX1NVQ0NFU1M6CisgICAgICAgIGNhc2UgRVJST1JfTU9SRV9EQVRBOgorICAgICAgICBjYXNlIEVSUk9SX09QRVJBVElPTl9BQk9SVEVEOgorICAgICAgICAgICAgc2VsZi0+Y29tcGxldGVkID0gMTsKKyAgICAgICAgICAgIHNlbGYtPnBlbmRpbmcgPSAwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRVJST1JfSU9fSU5DT01QTEVURToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgc2VsZi0+cGVuZGluZyA9IDA7CisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgZXJyKTsKKyAgICB9CisgICAgaWYgKHNlbGYtPmNvbXBsZXRlZCAmJiBzZWxmLT5yZWFkX2J1ZmZlciAhPSBOVUxMKSB7CisgICAgICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrRXhhY3Qoc2VsZi0+cmVhZF9idWZmZXIpKTsKKyAgICAgICAgaWYgKHRyYW5zZmVycmVkICE9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZi0+cmVhZF9idWZmZXIpICYmCisgICAgICAgICAgICBfUHlCeXRlc19SZXNpemUoJnNlbGYtPnJlYWRfYnVmZmVyLCB0cmFuc2ZlcnJlZCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIklJIiwgKHVuc2lnbmVkKSB0cmFuc2ZlcnJlZCwgKHVuc2lnbmVkKSBlcnIpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorb3ZlcmxhcHBlZF9nZXRidWZmZXIoT3ZlcmxhcHBlZE9iamVjdCAqc2VsZikKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIGlmICghc2VsZi0+Y29tcGxldGVkKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IGdldCByZWFkIGJ1ZmZlciBiZWZvcmUgR2V0T3ZlcmxhcHBlZFJlc3VsdCgpICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWxzIHRoZSBvcGVyYXRpb24gY29tcGxldGVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXMgPSBzZWxmLT5yZWFkX2J1ZmZlciA/IHNlbGYtPnJlYWRfYnVmZmVyIDogUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYocmVzKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorb3ZlcmxhcHBlZF9jYW5jZWwoT3ZlcmxhcHBlZE9iamVjdCAqc2VsZikKK3sKKyAgICBCT09MIHJlcyA9IFRSVUU7CisKKyAgICBpZiAoc2VsZi0+cGVuZGluZykgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGlmIChjaGVja19DYW5jZWxJb0V4KCkpCisgICAgICAgICAgICByZXMgPSBQeV9DYW5jZWxJb0V4KHNlbGYtPmhhbmRsZSwgJnNlbGYtPm92ZXJsYXBwZWQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXMgPSBDYW5jZWxJbyhzZWxmLT5oYW5kbGUpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKworICAgIC8qIENhbmNlbElvRXggcmV0dXJucyBFUlJPUl9OT1RfRk9VTkQgaWYgdGhlIEkvTyBjb21wbGV0ZWQgaW4tYmV0d2VlbiAqLworICAgIGlmICghcmVzICYmIEdldExhc3RFcnJvcigpICE9IEVSUk9SX05PVF9GT1VORCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIDApOworICAgIHNlbGYtPnBlbmRpbmcgPSAwOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgb3ZlcmxhcHBlZF9tZXRob2RzW10gPSB7CisgICAgeyJHZXRPdmVybGFwcGVkUmVzdWx0IiwgKFB5Q0Z1bmN0aW9uKSBvdmVybGFwcGVkX0dldE92ZXJsYXBwZWRSZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9PLCBOVUxMfSwKKyAgICB7ImdldGJ1ZmZlciIsIChQeUNGdW5jdGlvbikgb3ZlcmxhcHBlZF9nZXRidWZmZXIsIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyAgICB7ImNhbmNlbCIsIChQeUNGdW5jdGlvbikgb3ZlcmxhcHBlZF9jYW5jZWwsIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeU1lbWJlckRlZiBvdmVybGFwcGVkX21lbWJlcnNbXSA9IHsKKyAgICB7ImV2ZW50IiwgVF9IQU5ETEUsCisgICAgIG9mZnNldG9mKE92ZXJsYXBwZWRPYmplY3QsIG92ZXJsYXBwZWQpICsgb2Zmc2V0b2YoT1ZFUkxBUFBFRCwgaEV2ZW50KSwKKyAgICAgUkVBRE9OTFksICJvdmVybGFwcGVkIGV2ZW50IGhhbmRsZSJ9LAorICAgIHtOVUxMfQorfTsKKworUHlUeXBlT2JqZWN0IE92ZXJsYXBwZWRUeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgIC8qIHRwX25hbWUgICAgICAgICAgICovICJfd2luYXBpLk92ZXJsYXBwZWQiLAorICAgIC8qIHRwX2Jhc2ljc2l6ZSAgICAgICovIHNpemVvZihPdmVybGFwcGVkT2JqZWN0KSwKKyAgICAvKiB0cF9pdGVtc2l6ZSAgICAgICAqLyAwLAorICAgIC8qIHRwX2RlYWxsb2MgICAgICAgICovIChkZXN0cnVjdG9yKSBvdmVybGFwcGVkX2RlYWxsb2MsCisgICAgLyogdHBfcHJpbnQgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9nZXRhdHRyICAgICAgICAqLyAwLAorICAgIC8qIHRwX3NldGF0dHIgICAgICAgICovIDAsCisgICAgLyogdHBfcmVzZXJ2ZWQgICAgICAgKi8gMCwKKyAgICAvKiB0cF9yZXByICAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX2FzX251bWJlciAgICAgICovIDAsCisgICAgLyogdHBfYXNfc2VxdWVuY2UgICAgKi8gMCwKKyAgICAvKiB0cF9hc19tYXBwaW5nICAgICAqLyAwLAorICAgIC8qIHRwX2hhc2ggICAgICAgICAgICovIDAsCisgICAgLyogdHBfY2FsbCAgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9zdHIgICAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX2dldGF0dHJvICAgICAgICovIDAsCisgICAgLyogdHBfc2V0YXR0cm8gICAgICAgKi8gMCwKKyAgICAvKiB0cF9hc19idWZmZXIgICAgICAqLyAwLAorICAgIC8qIHRwX2ZsYWdzICAgICAgICAgICovIFB5X1RQRkxBR1NfREVGQVVMVCwKKyAgICAvKiB0cF9kb2MgICAgICAgICAgICAqLyAiT1ZFUkxBUFBFRCBzdHJ1Y3R1cmUgd3JhcHBlciIsCisgICAgLyogdHBfdHJhdmVyc2UgICAgICAgKi8gMCwKKyAgICAvKiB0cF9jbGVhciAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX3JpY2hjb21wYXJlICAgICovIDAsCisgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8gMCwKKyAgICAvKiB0cF9pdGVyICAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX2l0ZXJuZXh0ICAgICAgICovIDAsCisgICAgLyogdHBfbWV0aG9kcyAgICAgICAgKi8gb3ZlcmxhcHBlZF9tZXRob2RzLAorICAgIC8qIHRwX21lbWJlcnMgICAgICAgICovIG92ZXJsYXBwZWRfbWVtYmVycywKKyAgICAvKiB0cF9nZXRzZXQgICAgICAgICAqLyAwLAorICAgIC8qIHRwX2Jhc2UgICAgICAgICAgICovIDAsCisgICAgLyogdHBfZGljdCAgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9kZXNjcl9nZXQgICAgICAqLyAwLAorICAgIC8qIHRwX2Rlc2NyX3NldCAgICAgICovIDAsCisgICAgLyogdHBfZGljdG9mZnNldCAgICAgKi8gMCwKKyAgICAvKiB0cF9pbml0ICAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX2FsbG9jICAgICAgICAgICovIDAsCisgICAgLyogdHBfbmV3ICAgICAgICAgICAgKi8gMCwKK307CisKK3N0YXRpYyBPdmVybGFwcGVkT2JqZWN0ICoKK25ld19vdmVybGFwcGVkKEhBTkRMRSBoYW5kbGUpCit7CisgICAgT3ZlcmxhcHBlZE9iamVjdCAqc2VsZjsKKworICAgIHNlbGYgPSBQeU9iamVjdF9OZXcoT3ZlcmxhcHBlZE9iamVjdCwgJk92ZXJsYXBwZWRUeXBlKTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHNlbGYtPmhhbmRsZSA9IGhhbmRsZTsKKyAgICBzZWxmLT5yZWFkX2J1ZmZlciA9IE5VTEw7CisgICAgc2VsZi0+cGVuZGluZyA9IDA7CisgICAgc2VsZi0+Y29tcGxldGVkID0gMDsKKyAgICBtZW1zZXQoJnNlbGYtPm92ZXJsYXBwZWQsIDAsIHNpemVvZihPVkVSTEFQUEVEKSk7CisgICAgbWVtc2V0KCZzZWxmLT53cml0ZV9idWZmZXIsIDAsIHNpemVvZihQeV9idWZmZXIpKTsKKyAgICAvKiBNYW51YWwgcmVzZXQsIGluaXRpYWxseSBub24tc2lnbmFsbGVkICovCisgICAgc2VsZi0+b3ZlcmxhcHBlZC5oRXZlbnQgPSBDcmVhdGVFdmVudChOVUxMLCBUUlVFLCBGQUxTRSwgTlVMTCk7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiB3aW5kb3dzIEFQSSBmdW5jdGlvbnMgKi8KKworUHlEb2NfU1RSVkFSKENsb3NlSGFuZGxlX2RvYywKKyJDbG9zZUhhbmRsZShoYW5kbGUpIC0+IE5vbmVcblwKK1xuXAorQ2xvc2UgaGFuZGxlLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0Nsb3NlSGFuZGxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBIQU5ETEUgaE9iamVjdDsKKyAgICBCT09MIHN1Y2Nlc3M7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgIjpDbG9zZUhhbmRsZSIsICZoT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgc3VjY2VzcyA9IENsb3NlSGFuZGxlKGhPYmplY3QpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0Nvbm5lY3ROYW1lZFBpcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBIQU5ETEUgaE5hbWVkUGlwZTsKKyAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOworICAgIEJPT0wgc3VjY2VzczsKKyAgICBPdmVybGFwcGVkT2JqZWN0ICpvdmVybGFwcGVkID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImhhbmRsZSIsICJvdmVybGFwcGVkIiwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZfSEFORExFICJ8IiBGX0JPT0wsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaE5hbWVkUGlwZSwgJnVzZV9vdmVybGFwcGVkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAodXNlX292ZXJsYXBwZWQpIHsKKyAgICAgICAgb3ZlcmxhcHBlZCA9IG5ld19vdmVybGFwcGVkKGhOYW1lZFBpcGUpOworICAgICAgICBpZiAoIW92ZXJsYXBwZWQpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgc3VjY2VzcyA9IENvbm5lY3ROYW1lZFBpcGUoaE5hbWVkUGlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGFwcGVkID8gJm92ZXJsYXBwZWQtPm92ZXJsYXBwZWQgOiBOVUxMKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKG92ZXJsYXBwZWQpIHsKKyAgICAgICAgaW50IGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAvKiBPdmVybGFwcGVkIENvbm5lY3ROYW1lZFBpcGUgbmV2ZXIgcmV0dXJucyBhIHN1Y2Nlc3MgY29kZSAqLworICAgICAgICBhc3NlcnQoc3VjY2VzcyA9PSAwKTsKKyAgICAgICAgaWYgKGVyciA9PSBFUlJPUl9JT19QRU5ESU5HKQorICAgICAgICAgICAgb3ZlcmxhcHBlZC0+cGVuZGluZyA9IDE7CisgICAgICAgIGVsc2UgaWYgKGVyciA9PSBFUlJPUl9QSVBFX0NPTk5FQ1RFRCkKKyAgICAgICAgICAgIFNldEV2ZW50KG92ZXJsYXBwZWQtPm92ZXJsYXBwZWQuaEV2ZW50KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9ERUNSRUYob3ZlcmxhcHBlZCk7CisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZXJyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopIG92ZXJsYXBwZWQ7CisgICAgfQorICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfQ3JlYXRlRmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgTFBDVFNUUiBscEZpbGVOYW1lOworICAgIERXT1JEIGR3RGVzaXJlZEFjY2VzczsKKyAgICBEV09SRCBkd1NoYXJlTW9kZTsKKyAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZWN1cml0eUF0dHJpYnV0ZXM7CisgICAgRFdPUkQgZHdDcmVhdGlvbkRpc3Bvc2l0aW9uOworICAgIERXT1JEIGR3RmxhZ3NBbmRBdHRyaWJ1dGVzOworICAgIEhBTkRMRSBoVGVtcGxhdGVGaWxlOworICAgIEhBTkRMRSBoYW5kbGU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiIEZfRFdPUkQgRl9EV09SRCBGX1BPSU5URVIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRl9EV09SRCBGX0RXT1JEIEZfSEFORExFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmbHBGaWxlTmFtZSwgJmR3RGVzaXJlZEFjY2VzcywgJmR3U2hhcmVNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmbHBTZWN1cml0eUF0dHJpYnV0ZXMsICZkd0NyZWF0aW9uRGlzcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICZkd0ZsYWdzQW5kQXR0cmlidXRlcywgJmhUZW1wbGF0ZUZpbGUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBoYW5kbGUgPSBDcmVhdGVGaWxlKGxwRmlsZU5hbWUsIGR3RGVzaXJlZEFjY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGR3U2hhcmVNb2RlLCBscFNlY3VyaXR5QXR0cmlidXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGR3Q3JlYXRpb25EaXNwb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGR3RmxhZ3NBbmRBdHRyaWJ1dGVzLCBoVGVtcGxhdGVGaWxlKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9IQU5ETEUsIGhhbmRsZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfQ3JlYXRlTmFtZWRQaXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBMUENUU1RSIGxwTmFtZTsKKyAgICBEV09SRCBkd09wZW5Nb2RlOworICAgIERXT1JEIGR3UGlwZU1vZGU7CisgICAgRFdPUkQgbk1heEluc3RhbmNlczsKKyAgICBEV09SRCBuT3V0QnVmZmVyU2l6ZTsKKyAgICBEV09SRCBuSW5CdWZmZXJTaXplOworICAgIERXT1JEIG5EZWZhdWx0VGltZU91dDsKKyAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZWN1cml0eUF0dHJpYnV0ZXM7CisgICAgSEFORExFIGhhbmRsZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyIgRl9EV09SRCBGX0RXT1JEIEZfRFdPUkQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRl9EV09SRCBGX0RXT1JEIEZfRFdPUkQgRl9QT0lOVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmbHBOYW1lLCAmZHdPcGVuTW9kZSwgJmR3UGlwZU1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZuTWF4SW5zdGFuY2VzLCAmbk91dEJ1ZmZlclNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZuSW5CdWZmZXJTaXplLCAmbkRlZmF1bHRUaW1lT3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAmbHBTZWN1cml0eUF0dHJpYnV0ZXMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBoYW5kbGUgPSBDcmVhdGVOYW1lZFBpcGUobHBOYW1lLCBkd09wZW5Nb2RlLCBkd1BpcGVNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuTWF4SW5zdGFuY2VzLCBuT3V0QnVmZmVyU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbkluQnVmZmVyU2l6ZSwgbkRlZmF1bHRUaW1lT3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscFNlY3VyaXR5QXR0cmlidXRlcyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKEZfSEFORExFLCBoYW5kbGUpOworfQorCitQeURvY19TVFJWQVIoQ3JlYXRlUGlwZV9kb2MsCisiQ3JlYXRlUGlwZShwaXBlX2F0dHJzLCBzaXplKSAtPiAocmVhZF9oYW5kbGUsIHdyaXRlX2hhbmRsZSlcblwKK1xuXAorQ3JlYXRlIGFuIGFub255bW91cyBwaXBlLCBhbmQgcmV0dXJuIGhhbmRsZXMgdG8gdGhlIHJlYWQgYW5kXG5cCit3cml0ZSBlbmRzIG9mIHRoZSBwaXBlLlxuXAorXG5cCitwaXBlX2F0dHJzIGlzIGlnbm9yZWQgaW50ZXJuYWxseSBhbmQgY2FuIGJlIE5vbmUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfQ3JlYXRlUGlwZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgSEFORExFIHJlYWRfcGlwZTsKKyAgICBIQU5ETEUgd3JpdGVfcGlwZTsKKyAgICBCT09MIHJlc3VsdDsKKworICAgIFB5T2JqZWN0KiBwaXBlX2F0dHJpYnV0ZXM7IC8qIGlnbm9yZWQgKi8KKyAgICBEV09SRCBzaXplOworCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyIgRl9EV09SRCAiOkNyZWF0ZVBpcGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBpcGVfYXR0cmlidXRlcywgJnNpemUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXN1bHQgPSBDcmVhdGVQaXBlKCZyZWFkX3BpcGUsICZ3cml0ZV9waXBlLCBOVUxMLCBzaXplKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCEgcmVzdWx0KQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoCisgICAgICAgICJOTiIsIEhBTkRMRV9UT19QWU5VTShyZWFkX3BpcGUpLCBIQU5ETEVfVE9fUFlOVU0od3JpdGVfcGlwZSkpOworfQorCisvKiBoZWxwZXJzIGZvciBjcmVhdGVwcm9jZXNzICovCisKK3N0YXRpYyB1bnNpZ25lZCBsb25nCitnZXR1bG9uZyhQeU9iamVjdCogb2JqLCBjaGFyKiBuYW1lKQoreworICAgIFB5T2JqZWN0KiB2YWx1ZTsKKyAgICB1bnNpZ25lZCBsb25nIHJldDsKKworICAgIHZhbHVlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosIG5hbWUpOworICAgIGlmICghIHZhbHVlKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7IC8qIEZJWE1FOiBwcm9wYWdhdGUgZXJyb3I/ICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXQgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcodmFsdWUpOworICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIEhBTkRMRQorZ2V0aGFuZGxlKFB5T2JqZWN0KiBvYmosIGNoYXIqIG5hbWUpCit7CisgICAgUHlPYmplY3QqIHZhbHVlOworICAgIEhBTkRMRSByZXQ7CisKKyAgICB2YWx1ZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCBuYW1lKTsKKyAgICBpZiAoISB2YWx1ZSkgeworICAgICAgICBQeUVycl9DbGVhcigpOyAvKiBGSVhNRTogcHJvcGFnYXRlIGVycm9yPyAqLworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHZhbHVlID09IFB5X05vbmUpCisgICAgICAgIHJldCA9IE5VTEw7CisgICAgZWxzZQorICAgICAgICByZXQgPSBQWU5VTV9UT19IQU5ETEUodmFsdWUpOworICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIFB5T2JqZWN0KgorZ2V0ZW52aXJvbm1lbnQoUHlPYmplY3QqIGVudmlyb25tZW50KQoreworICAgIFB5X3NzaXplX3QgaSwgZW52c2l6ZSwgdG90YWxzaXplOworICAgIFB5X1VDUzQgKmJ1ZmZlciA9IE5VTEwsICpwLCAqZW5kOworICAgIFB5T2JqZWN0ICprZXlzLCAqdmFsdWVzLCAqcmVzOworCisgICAgLyogY29udmVydCBlbnZpcm9ubWVudCBkaWN0aW9uYXJ5IHRvIHdpbmRvd3MgZW52aXJvbWVudCBzdHJpbmcgKi8KKyAgICBpZiAoISBQeU1hcHBpbmdfQ2hlY2soZW52aXJvbm1lbnQpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZygKKyAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwgImVudmlyb25tZW50IG11c3QgYmUgZGljdGlvbmFyeSBvciBOb25lIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGVudnNpemUgPSBQeU1hcHBpbmdfTGVuZ3RoKGVudmlyb25tZW50KTsKKworICAgIGtleXMgPSBQeU1hcHBpbmdfS2V5cyhlbnZpcm9ubWVudCk7CisgICAgdmFsdWVzID0gUHlNYXBwaW5nX1ZhbHVlcyhlbnZpcm9ubWVudCk7CisgICAgaWYgKCFrZXlzIHx8ICF2YWx1ZXMpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICB0b3RhbHNpemUgPSAxOyAvKiB0cmFpbGluZyBudWxsIGNoYXJhY3RlciAqLworICAgIGZvciAoaSA9IDA7IGkgPCBlbnZzaXplOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QqIGtleSA9IFB5TGlzdF9HRVRfSVRFTShrZXlzLCBpKTsKKyAgICAgICAgUHlPYmplY3QqIHZhbHVlID0gUHlMaXN0X0dFVF9JVEVNKHZhbHVlcywgaSk7CisKKyAgICAgICAgaWYgKCEgUHlVbmljb2RlX0NoZWNrKGtleSkgfHwgISBQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJlbnZpcm9ubWVudCBjYW4gb25seSBjb250YWluIHN0cmluZ3MiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgdG90YWxzaXplICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGtleSkgKyAxOyAgICAvKiArMSBmb3IgJz0nICovCisgICAgICAgIHRvdGFsc2l6ZSArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh2YWx1ZSkgKyAxOyAgLyogKzEgZm9yICdcMCcgKi8KKyAgICB9CisKKyAgICBidWZmZXIgPSBQeU1lbV9NYWxsb2ModG90YWxzaXplICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICBpZiAoISBidWZmZXIpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcCA9IGJ1ZmZlcjsKKyAgICBlbmQgPSBidWZmZXIgKyB0b3RhbHNpemU7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgZW52c2l6ZTsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0KiBrZXkgPSBQeUxpc3RfR0VUX0lURU0oa2V5cywgaSk7CisgICAgICAgIFB5T2JqZWN0KiB2YWx1ZSA9IFB5TGlzdF9HRVRfSVRFTSh2YWx1ZXMsIGkpOworICAgICAgICBpZiAoIVB5VW5pY29kZV9Bc1VDUzQoa2V5LCBwLCBlbmQgLSBwLCAwKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHAgKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoa2V5KTsKKyAgICAgICAgKnArKyA9ICc9JzsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfQXNVQ1M0KHZhbHVlLCBwLCBlbmQgLSBwLCAwKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHAgKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgodmFsdWUpOworICAgICAgICAqcCsrID0gJ1wwJzsKKyAgICB9CisKKyAgICAvKiBhZGQgdHJhaWxpbmcgbnVsbCBieXRlICovCisgICAgKnArKyA9ICdcMCc7CisgICAgYXNzZXJ0KHAgPT0gZW5kKTsKKworICAgIFB5X1hERUNSRUYoa2V5cyk7CisgICAgUHlfWERFQ1JFRih2YWx1ZXMpOworCisgICAgcmVzID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwgYnVmZmVyLCBwIC0gYnVmZmVyKTsKKyAgICBQeU1lbV9GcmVlKGJ1ZmZlcik7CisgICAgcmV0dXJuIHJlczsKKworIGVycm9yOgorICAgIFB5TWVtX0ZyZWUoYnVmZmVyKTsKKyAgICBQeV9YREVDUkVGKGtleXMpOworICAgIFB5X1hERUNSRUYodmFsdWVzKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlEb2NfU1RSVkFSKENyZWF0ZVByb2Nlc3NfZG9jLAorIkNyZWF0ZVByb2Nlc3MoYXBwX25hbWUsIGNtZF9saW5lLCBwcm9jX2F0dHJzLCB0aHJlYWRfYXR0cnMsXG5cCisgICAgICAgICAgICAgICBpbmhlcml0LCBmbGFncywgZW52X21hcHBpbmcsIGN1cmRpcixcblwKKyAgICAgICAgICAgICAgIHN0YXJ0dXBfaW5mbykgLT4gKHByb2NfaGFuZGxlLCB0aHJlYWRfaGFuZGxlLFxuXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkLCB0aWQpXG5cCitcblwKK0NyZWF0ZSBhIG5ldyBwcm9jZXNzIGFuZCBpdHMgcHJpbWFyeSB0aHJlYWQuIFRoZSByZXR1cm5cblwKK3ZhbHVlIGlzIGEgdHVwbGUgb2YgdGhlIHByb2Nlc3MgaGFuZGxlLCB0aHJlYWQgaGFuZGxlLFxuXAorcHJvY2VzcyBJRCwgYW5kIHRocmVhZCBJRC5cblwKK1xuXAorcHJvY19hdHRycyBhbmQgdGhyZWFkX2F0dHJzIGFyZSBpZ25vcmVkIGludGVybmFsbHkgYW5kIGNhbiBiZSBOb25lLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0NyZWF0ZVByb2Nlc3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIEJPT0wgcmVzdWx0OworICAgIFBST0NFU1NfSU5GT1JNQVRJT04gcGk7CisgICAgU1RBUlRVUElORk9XIHNpOworICAgIFB5T2JqZWN0KiBlbnZpcm9ubWVudDsKKyAgICB3Y2hhcl90ICp3ZW52aXJvbm1lbnQ7CisKKyAgICB3Y2hhcl90KiBhcHBsaWNhdGlvbl9uYW1lOworICAgIHdjaGFyX3QqIGNvbW1hbmRfbGluZTsKKyAgICBQeU9iamVjdCogcHJvY2Vzc19hdHRyaWJ1dGVzOyAvKiBpZ25vcmVkICovCisgICAgUHlPYmplY3QqIHRocmVhZF9hdHRyaWJ1dGVzOyAvKiBpZ25vcmVkICovCisgICAgQk9PTCBpbmhlcml0X2hhbmRsZXM7CisgICAgRFdPUkQgY3JlYXRpb25fZmxhZ3M7CisgICAgUHlPYmplY3QqIGVudl9tYXBwaW5nOworICAgIHdjaGFyX3QqIGN1cnJlbnRfZGlyZWN0b3J5OworICAgIFB5T2JqZWN0KiBzdGFydHVwX2luZm87CisKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaWk9PIiBGX0JPT0wgRl9EV09SRCAiT1pPOkNyZWF0ZVByb2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tbWFuZF9saW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb2Nlc3NfYXR0cmlidXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aHJlYWRfYXR0cmlidXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmhlcml0X2hhbmRsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3JlYXRpb25fZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmZW52X21hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3VycmVudF9kaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnR1cF9pbmZvKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBaZXJvTWVtb3J5KCZzaSwgc2l6ZW9mKHNpKSk7CisgICAgc2kuY2IgPSBzaXplb2Yoc2kpOworCisgICAgLyogbm90ZTogd2Ugb25seSBzdXBwb3J0IGEgc21hbGwgc3Vic2V0IG9mIGFsbCBTSSBhdHRyaWJ1dGVzICovCisgICAgc2kuZHdGbGFncyA9IGdldHVsb25nKHN0YXJ0dXBfaW5mbywgImR3RmxhZ3MiKTsKKyAgICBzaS53U2hvd1dpbmRvdyA9IChXT1JEKWdldHVsb25nKHN0YXJ0dXBfaW5mbywgIndTaG93V2luZG93Iik7CisgICAgc2kuaFN0ZElucHV0ID0gZ2V0aGFuZGxlKHN0YXJ0dXBfaW5mbywgImhTdGRJbnB1dCIpOworICAgIHNpLmhTdGRPdXRwdXQgPSBnZXRoYW5kbGUoc3RhcnR1cF9pbmZvLCAiaFN0ZE91dHB1dCIpOworICAgIHNpLmhTdGRFcnJvciA9IGdldGhhbmRsZShzdGFydHVwX2luZm8sICJoU3RkRXJyb3IiKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZW52X21hcHBpbmcgIT0gUHlfTm9uZSkgeworICAgICAgICBlbnZpcm9ubWVudCA9IGdldGVudmlyb25tZW50KGVudl9tYXBwaW5nKTsKKyAgICAgICAgaWYgKCEgZW52aXJvbm1lbnQpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgd2Vudmlyb25tZW50ID0gUHlVbmljb2RlX0FzVW5pY29kZShlbnZpcm9ubWVudCk7CisgICAgICAgIGlmICh3ZW52aXJvbm1lbnQgPT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgICAgUHlfWERFQ1JFRihlbnZpcm9ubWVudCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZW52aXJvbm1lbnQgPSBOVUxMOworICAgICAgICB3ZW52aXJvbm1lbnQgPSBOVUxMOworICAgIH0KKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXN1bHQgPSBDcmVhdGVQcm9jZXNzVyhhcHBsaWNhdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZF9saW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0X2hhbmRsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGlvbl9mbGFncyB8IENSRUFURV9VTklDT0RFX0VOVklST05NRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vudmlyb25tZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9kaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGkpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBQeV9YREVDUkVGKGVudmlyb25tZW50KTsKKworICAgIGlmICghIHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOTmtrIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVfVE9fUFlOVU0ocGkuaFByb2Nlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRV9UT19QWU5VTShwaS5oVGhyZWFkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwaS5kd1Byb2Nlc3NJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwaS5kd1RocmVhZElkKTsKK30KKworUHlEb2NfU1RSVkFSKER1cGxpY2F0ZUhhbmRsZV9kb2MsCisiRHVwbGljYXRlSGFuZGxlKHNvdXJjZV9wcm9jX2hhbmRsZSwgc291cmNlX2hhbmRsZSxcblwKKyAgICAgICAgICAgICAgICAgdGFyZ2V0X3Byb2NfaGFuZGxlLCB0YXJnZXRfaGFuZGxlLCBhY2Nlc3MsXG5cCisgICAgICAgICAgICAgICAgIGluaGVyaXRbLCBvcHRpb25zXSkgLT4gaGFuZGxlXG5cCitcblwKK1JldHVybiBhIGR1cGxpY2F0ZSBoYW5kbGUgb2JqZWN0LlxuXAorXG5cCitUaGUgZHVwbGljYXRlIGhhbmRsZSByZWZlcnMgdG8gdGhlIHNhbWUgb2JqZWN0IGFzIHRoZSBvcmlnaW5hbFxuXAoraGFuZGxlLiBUaGVyZWZvcmUsIGFueSBjaGFuZ2VzIHRvIHRoZSBvYmplY3QgYXJlIHJlZmxlY3RlZFxuXAordGhyb3VnaCBib3RoIGhhbmRsZXMuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfRHVwbGljYXRlSGFuZGxlKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBIQU5ETEUgdGFyZ2V0X2hhbmRsZTsKKyAgICBCT09MIHJlc3VsdDsKKworICAgIEhBTkRMRSBzb3VyY2VfcHJvY2Vzc19oYW5kbGU7CisgICAgSEFORExFIHNvdXJjZV9oYW5kbGU7CisgICAgSEFORExFIHRhcmdldF9wcm9jZXNzX2hhbmRsZTsKKyAgICBEV09SRCBkZXNpcmVkX2FjY2VzczsKKyAgICBCT09MIGluaGVyaXRfaGFuZGxlOworICAgIERXT1JEIG9wdGlvbnMgPSAwOworCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRl9IQU5ETEUgRl9IQU5ETEUgRl9IQU5ETEUgRl9EV09SRCBGX0JPT0wgRl9EV09SRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIjpEdXBsaWNhdGVIYW5kbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNvdXJjZV9wcm9jZXNzX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZzb3VyY2VfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhcmdldF9wcm9jZXNzX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZkZXNpcmVkX2FjY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmhlcml0X2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25zKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzdWx0ID0gRHVwbGljYXRlSGFuZGxlKAorICAgICAgICBzb3VyY2VfcHJvY2Vzc19oYW5kbGUsCisgICAgICAgIHNvdXJjZV9oYW5kbGUsCisgICAgICAgIHRhcmdldF9wcm9jZXNzX2hhbmRsZSwKKyAgICAgICAgJnRhcmdldF9oYW5kbGUsCisgICAgICAgIGRlc2lyZWRfYWNjZXNzLAorICAgICAgICBpbmhlcml0X2hhbmRsZSwKKyAgICAgICAgb3B0aW9ucworICAgICk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghIHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKworICAgIHJldHVybiBIQU5ETEVfVE9fUFlOVU0odGFyZ2V0X2hhbmRsZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfRXhpdFByb2Nlc3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFVJTlQgdUV4aXRDb2RlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfVUlOVCwgJnVFeGl0Q29kZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgI2lmIGRlZmluZWQoUHlfREVCVUcpCisgICAgICAgIFNldEVycm9yTW9kZShTRU1fRkFJTENSSVRJQ0FMRVJST1JTfFNFTV9OT0FMSUdOTUVOVEZBVUxURVhDRVBUfAorICAgICAgICAgICAgICAgICAgICAgU0VNX05PR1BGQVVMVEVSUk9SQk9YfFNFTV9OT09QRU5GSUxFRVJST1JCT1gpOworICAgICAgICBfQ3J0U2V0UmVwb3J0TW9kZShfQ1JUX0FTU0VSVCwgX0NSVERCR19NT0RFX0RFQlVHKTsKKyAgICAjZW5kaWYKKworICAgIEV4aXRQcm9jZXNzKHVFeGl0Q29kZSk7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlEb2NfU1RSVkFSKEdldEN1cnJlbnRQcm9jZXNzX2RvYywKKyJHZXRDdXJyZW50UHJvY2VzcygpIC0+IGhhbmRsZVxuXAorXG5cCitSZXR1cm4gYSBoYW5kbGUgb2JqZWN0IGZvciB0aGUgY3VycmVudCBwcm9jZXNzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0dldEN1cnJlbnRQcm9jZXNzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6R2V0Q3VycmVudFByb2Nlc3MiKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gSEFORExFX1RPX1BZTlVNKEdldEN1cnJlbnRQcm9jZXNzKCkpOworfQorCitQeURvY19TVFJWQVIoR2V0RXhpdENvZGVQcm9jZXNzX2RvYywKKyJHZXRFeGl0Q29kZVByb2Nlc3MoaGFuZGxlKSAtPiBFeGl0IGNvZGVcblwKK1xuXAorUmV0dXJuIHRoZSB0ZXJtaW5hdGlvbiBzdGF0dXMgb2YgdGhlIHNwZWNpZmllZCBwcm9jZXNzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0dldEV4aXRDb2RlUHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgRFdPUkQgZXhpdF9jb2RlOworICAgIEJPT0wgcmVzdWx0OworCisgICAgSEFORExFIHByb2Nlc3M7CisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAiOkdldEV4aXRDb2RlUHJvY2VzcyIsICZwcm9jZXNzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXN1bHQgPSBHZXRFeGl0Q29kZVByb2Nlc3MocHJvY2VzcywgJmV4aXRfY29kZSk7CisKKyAgICBpZiAoISByZXN1bHQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoZXhpdF9jb2RlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9HZXRMYXN0RXJyb3IoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKEZfRFdPUkQsIEdldExhc3RFcnJvcigpKTsKK30KKworUHlEb2NfU1RSVkFSKEdldE1vZHVsZUZpbGVOYW1lX2RvYywKKyJHZXRNb2R1bGVGaWxlTmFtZShtb2R1bGUpIC0+IHBhdGhcblwKK1xuXAorUmV0dXJuIHRoZSBmdWxseS1xdWFsaWZpZWQgcGF0aCBmb3IgdGhlIGZpbGUgdGhhdCBjb250YWluc1xuXAordGhlIHNwZWNpZmllZCBtb2R1bGUuIFRoZSBtb2R1bGUgbXVzdCBoYXZlIGJlZW4gbG9hZGVkIGJ5IHRoZVxuXAorY3VycmVudCBwcm9jZXNzLlxuXAorXG5cCitUaGUgbW9kdWxlIHBhcmFtZXRlciBzaG91bGQgYmUgYSBoYW5kbGUgdG8gdGhlIGxvYWRlZCBtb2R1bGVcblwKK3dob3NlIHBhdGggaXMgYmVpbmcgcmVxdWVzdGVkLiBJZiB0aGlzIHBhcmFtZXRlciBpcyAwLCBcblwKK0dldE1vZHVsZUZpbGVOYW1lIHJldHJpZXZlcyB0aGUgcGF0aCBvZiB0aGUgZXhlY3V0YWJsZSBmaWxlXG5cCitvZiB0aGUgY3VycmVudCBwcm9jZXNzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0dldE1vZHVsZUZpbGVOYW1lKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBCT09MIHJlc3VsdDsKKyAgICBITU9EVUxFIG1vZHVsZTsKKyAgICBXQ0hBUiBmaWxlbmFtZVtNQVhfUEFUSF07CisKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICI6R2V0TW9kdWxlRmlsZU5hbWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1vZHVsZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzdWx0ID0gR2V0TW9kdWxlRmlsZU5hbWVXKG1vZHVsZSwgZmlsZW5hbWUsIE1BWF9QQVRIKTsKKyAgICBmaWxlbmFtZVtNQVhfUEFUSC0xXSA9ICdcMCc7CisKKyAgICBpZiAoISByZXN1bHQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihmaWxlbmFtZSwgd2NzbGVuKGZpbGVuYW1lKSk7Cit9CisKK1B5RG9jX1NUUlZBUihHZXRTdGRIYW5kbGVfZG9jLAorIkdldFN0ZEhhbmRsZShoYW5kbGUpIC0+IGludGVnZXJcblwKK1xuXAorUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBzcGVjaWZpZWQgc3RhbmRhcmQgZGV2aWNlXG5cCisoU1REX0lOUFVUX0hBTkRMRSwgU1REX09VVFBVVF9IQU5ETEUsIFNURF9FUlJPUl9IQU5ETEUpLlxuXAorVGhlIGludGVnZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBoYW5kbGUgb2JqZWN0IGlzIHJldHVybmVkLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0dldFN0ZEhhbmRsZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBEV09SRCBzdGRfaGFuZGxlOworCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0RXT1JEICI6R2V0U3RkSGFuZGxlIiwgJnN0ZF9oYW5kbGUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBoYW5kbGUgPSBHZXRTdGRIYW5kbGUoc3RkX2hhbmRsZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisKKyAgICBpZiAoISBoYW5kbGUpIHsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICB9CisKKyAgICAvKiBub3RlOiByZXR1cm5zIGludGVnZXIsIG5vdCBoYW5kbGUgb2JqZWN0ICovCisgICAgcmV0dXJuIEhBTkRMRV9UT19QWU5VTShoYW5kbGUpOworfQorCitQeURvY19TVFJWQVIoR2V0VmVyc2lvbl9kb2MsCisiR2V0VmVyc2lvbigpIC0+IHZlcnNpb25cblwKK1xuXAorUmV0dXJuIHRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0dldFZlcnNpb24oUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpHZXRWZXJzaW9uIikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKEdldFZlcnNpb24oKSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfT3BlblByb2Nlc3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIERXT1JEIGR3RGVzaXJlZEFjY2VzczsKKyAgICBCT09MIGJJbmhlcml0SGFuZGxlOworICAgIERXT1JEIGR3UHJvY2Vzc0lkOworICAgIEhBTkRMRSBoYW5kbGU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9EV09SRCBGX0JPT0wgRl9EV09SRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmR3RGVzaXJlZEFjY2VzcywgJmJJbmhlcml0SGFuZGxlLCAmZHdQcm9jZXNzSWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGhhbmRsZSA9IE9wZW5Qcm9jZXNzKGR3RGVzaXJlZEFjY2VzcywgYkluaGVyaXRIYW5kbGUsIGR3UHJvY2Vzc0lkKTsKKyAgICBpZiAoaGFuZGxlID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKEZfSEFORExFLCBoYW5kbGUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX1BlZWtOYW1lZFBpcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIEhBTkRMRSBoYW5kbGU7CisgICAgaW50IHNpemUgPSAwOworICAgIFB5T2JqZWN0ICpidWYgPSBOVUxMOworICAgIERXT1JEIG5yZWFkLCBuYXZhaWwsIG5sZWZ0OworICAgIEJPT0wgcmV0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICJ8aTpQZWVrTmFtZWRQaXBlIiAsICZoYW5kbGUsICZzaXplKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBzaXplIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChzaXplKSB7CisgICAgICAgIGJ1ZiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CisgICAgICAgIGlmICghYnVmKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmV0ID0gUGVla05hbWVkUGlwZShoYW5kbGUsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZiksIHNpemUsICZucmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmF2YWlsLCAmbmxlZnQpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAoIXJldCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGJ1Zik7CisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgMCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYnVmLCBucmVhZCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5paSIsIGJ1ZiwgbmF2YWlsLCBubGVmdCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJldCA9IFBlZWtOYW1lZFBpcGUoaGFuZGxlLCBOVUxMLCAwLCBOVUxMLCAmbmF2YWlsLCAmbmxlZnQpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAoIXJldCkgeworICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIDApOworICAgICAgICB9CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpaSIsIG5hdmFpbCwgbmxlZnQpOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9SZWFkRmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIEhBTkRMRSBoYW5kbGU7CisgICAgaW50IHNpemU7CisgICAgRFdPUkQgbnJlYWQ7CisgICAgUHlPYmplY3QgKmJ1ZjsKKyAgICBCT09MIHJldDsKKyAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOworICAgIERXT1JEIGVycjsKKyAgICBPdmVybGFwcGVkT2JqZWN0ICpvdmVybGFwcGVkID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImhhbmRsZSIsICJzaXplIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRl9IQU5ETEUgIml8aTpSZWFkRmlsZSIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLCAmc2l6ZSwgJnVzZV9vdmVybGFwcGVkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBidWYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOworICAgIGlmICghYnVmKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAodXNlX292ZXJsYXBwZWQpIHsKKyAgICAgICAgb3ZlcmxhcHBlZCA9IG5ld19vdmVybGFwcGVkKGhhbmRsZSk7CisgICAgICAgIGlmICghb3ZlcmxhcHBlZCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGJ1Zik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICAvKiBTdGVhbHMgcmVmZXJlbmNlIHRvIGJ1ZiAqLworICAgICAgICBvdmVybGFwcGVkLT5yZWFkX2J1ZmZlciA9IGJ1ZjsKKyAgICB9CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmV0ID0gUmVhZEZpbGUoaGFuZGxlLCBQeUJ5dGVzX0FTX1NUUklORyhidWYpLCBzaXplLCAmbnJlYWQsCisgICAgICAgICAgICAgICAgICAgb3ZlcmxhcHBlZCA/ICZvdmVybGFwcGVkLT5vdmVybGFwcGVkIDogTlVMTCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGVyciA9IHJldCA/IDAgOiBHZXRMYXN0RXJyb3IoKTsKKworICAgIGlmIChvdmVybGFwcGVkKSB7CisgICAgICAgIGlmICghcmV0KSB7CisgICAgICAgICAgICBpZiAoZXJyID09IEVSUk9SX0lPX1BFTkRJTkcpCisgICAgICAgICAgICAgICAgb3ZlcmxhcHBlZC0+cGVuZGluZyA9IDE7CisgICAgICAgICAgICBlbHNlIGlmIChlcnIgIT0gRVJST1JfTU9SRV9EQVRBKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG92ZXJsYXBwZWQpOworICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTkkiLCAoUHlPYmplY3QgKikgb3ZlcmxhcHBlZCwgZXJyKTsKKyAgICB9CisKKyAgICBpZiAoIXJldCAmJiBlcnIgIT0gRVJST1JfTU9SRV9EQVRBKSB7CisgICAgICAgIFB5X0RFQ1JFRihidWYpOworICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgMCk7CisgICAgfQorICAgIGlmIChfUHlCeXRlc19SZXNpemUoJmJ1ZiwgbnJlYWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTkkiLCBidWYsIGVycik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIEhBTkRMRSBoTmFtZWRQaXBlOworICAgIFB5T2JqZWN0ICpvQXJnc1szXTsKKyAgICBEV09SRCBkd0FyZ3NbM10sICpwQXJnc1szXSA9IHtOVUxMLCBOVUxMLCBOVUxMfTsKKyAgICBpbnQgaTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAiT09PIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmhOYW1lZFBpcGUsICZvQXJnc1swXSwgJm9BcmdzWzFdLCAmb0FyZ3NbMl0pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5RXJyX0NsZWFyKCk7CisKKyAgICBmb3IgKGkgPSAwIDsgaSA8IDMgOyBpKyspIHsKKyAgICAgICAgaWYgKG9BcmdzW2ldICE9IFB5X05vbmUpIHsKKyAgICAgICAgICAgIGR3QXJnc1tpXSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sob0FyZ3NbaV0pOworICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBwQXJnc1tpXSA9ICZkd0FyZ3NbaV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIVNldE5hbWVkUGlwZUhhbmRsZVN0YXRlKGhOYW1lZFBpcGUsIHBBcmdzWzBdLCBwQXJnc1sxXSwgcEFyZ3NbMl0pKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKFRlcm1pbmF0ZVByb2Nlc3NfZG9jLAorIlRlcm1pbmF0ZVByb2Nlc3MoaGFuZGxlLCBleGl0X2NvZGUpIC0+IE5vbmVcblwKK1xuXAorVGVybWluYXRlIHRoZSBzcGVjaWZpZWQgcHJvY2VzcyBhbmQgYWxsIG9mIGl0cyB0aHJlYWRzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIEJPT0wgcmVzdWx0OworCisgICAgSEFORExFIHByb2Nlc3M7CisgICAgVUlOVCBleGl0X2NvZGU7CisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSBGX1VJTlQgIjpUZXJtaW5hdGVQcm9jZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcm9jZXNzLCAmZXhpdF9jb2RlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXN1bHQgPSBUZXJtaW5hdGVQcm9jZXNzKHByb2Nlc3MsIGV4aXRfY29kZSk7CisKKyAgICBpZiAoISByZXN1bHQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dXJuIFB5X05vbmU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfV2FpdE5hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgTFBDVFNUUiBscE5hbWVkUGlwZU5hbWU7CisgICAgRFdPUkQgblRpbWVPdXQ7CisgICAgQk9PTCBzdWNjZXNzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiBGX0RXT1JELCAmbHBOYW1lZFBpcGVOYW1lLCAmblRpbWVPdXQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBzdWNjZXNzID0gV2FpdE5hbWVkUGlwZShscE5hbWVkUGlwZU5hbWUsIG5UaW1lT3V0KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBEV09SRCByZXN1bHQ7CisgICAgUHlPYmplY3QgKmhhbmRsZV9zZXE7CisgICAgSEFORExFIGhhbmRsZXNbTUFYSU1VTV9XQUlUX09CSkVDVFNdOworICAgIEhBTkRMRSBzaWdpbnRfZXZlbnQgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbmhhbmRsZXMsIGk7CisgICAgQk9PTCB3YWl0X2ZsYWc7CisgICAgRFdPUkQgbWlsbGlzZWNvbmRzID0gSU5GSU5JVEU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8iIEZfQk9PTCAifCIgRl9EV09SRAorICAgICAgICAgICAgICAgICAgICAgICAgICAiOldhaXRGb3JNdWx0aXBsZU9iamVjdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlX3NlcSwgJndhaXRfZmxhZywgJm1pbGxpc2Vjb25kcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKGhhbmRsZV9zZXEpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAic2VxdWVuY2UgdHlwZSBleHBlY3RlZCwgZ290ICclcyciLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShoYW5kbGVfc2VxKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBuaGFuZGxlcyA9IFB5U2VxdWVuY2VfTGVuZ3RoKGhhbmRsZV9zZXEpOworICAgIGlmIChuaGFuZGxlcyA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKG5oYW5kbGVzIDwgMCB8fCBuaGFuZGxlcyA+PSBNQVhJTVVNX1dBSVRfT0JKRUNUUyAtIDEpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAibmVlZCBhdCBtb3N0ICV6ZCBoYW5kbGVzLCBnb3QgYSBzZXF1ZW5jZSBvZiBsZW5ndGggJXpkIiwKKyAgICAgICAgICAgICAgICAgICAgIE1BWElNVU1fV0FJVF9PQkpFQ1RTIC0gMSwgbmhhbmRsZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IG5oYW5kbGVzOyBpKyspIHsKKyAgICAgICAgSEFORExFIGg7CisgICAgICAgIFB5T2JqZWN0ICp2ID0gUHlTZXF1ZW5jZV9HZXRJdGVtKGhhbmRsZV9zZXEsIGkpOworICAgICAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UodiwgRl9IQU5ETEUsICZoKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaGFuZGxlc1tpXSA9IGg7CisgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICB9CisgICAgLyogSWYgdGhpcyBpcyB0aGUgbWFpbiB0aHJlYWQgdGhlbiBtYWtlIHRoZSB3YWl0IGludGVycnVwdGlibGUKKyAgICAgICBieSBDdHJsLUMgdW5sZXNzIHdlIGFyZSB3YWl0aW5nIGZvciAqYWxsKiBoYW5kbGVzICovCisgICAgaWYgKCF3YWl0X2ZsYWcgJiYgX1B5T1NfSXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgc2lnaW50X2V2ZW50ID0gX1B5T1NfU2lnaW50RXZlbnQoKTsKKyAgICAgICAgYXNzZXJ0KHNpZ2ludF9ldmVudCAhPSBOVUxMKTsKKyAgICAgICAgaGFuZGxlc1tuaGFuZGxlcysrXSA9IHNpZ2ludF9ldmVudDsKKyAgICB9CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgaWYgKHNpZ2ludF9ldmVudCAhPSBOVUxMKQorICAgICAgICBSZXNldEV2ZW50KHNpZ2ludF9ldmVudCk7CisgICAgcmVzdWx0ID0gV2FpdEZvck11bHRpcGxlT2JqZWN0cygoRFdPUkQpIG5oYW5kbGVzLCBoYW5kbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdF9mbGFnLCBtaWxsaXNlY29uZHMpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0ID09IFdBSVRfRkFJTEVEKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgMCk7CisgICAgZWxzZSBpZiAoc2lnaW50X2V2ZW50ICE9IE5VTEwgJiYgcmVzdWx0ID09IFdBSVRfT0JKRUNUXzAgKyBuaGFuZGxlcyAtIDEpIHsKKyAgICAgICAgZXJybm8gPSBFSU5UUjsKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICB9CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChpbnQpIHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUihXYWl0Rm9yU2luZ2xlT2JqZWN0X2RvYywKKyJXYWl0Rm9yU2luZ2xlT2JqZWN0KGhhbmRsZSwgdGltZW91dCkgLT4gcmVzdWx0XG5cCitcblwKK1dhaXQgdW50aWwgdGhlIHNwZWNpZmllZCBvYmplY3QgaXMgaW4gdGhlIHNpZ25hbGVkIHN0YXRlIG9yXG5cCit0aGUgdGltZS1vdXQgaW50ZXJ2YWwgZWxhcHNlcy4gVGhlIHRpbWVvdXQgdmFsdWUgaXMgc3BlY2lmaWVkXG5cCitpbiBtaWxsaXNlY29uZHMuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfV2FpdEZvclNpbmdsZU9iamVjdChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgRFdPUkQgcmVzdWx0OworCisgICAgSEFORExFIGhhbmRsZTsKKyAgICBEV09SRCBtaWxsaXNlY29uZHM7CisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSBGX0RXT1JEICI6V2FpdEZvclNpbmdsZU9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1pbGxpc2Vjb25kcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlc3VsdCA9IFdhaXRGb3JTaW5nbGVPYmplY3QoaGFuZGxlLCBtaWxsaXNlY29uZHMpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0ID09IFdBSVRfRkFJTEVEKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHJlc3VsdCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfV3JpdGVGaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBQeV9idWZmZXIgX2J1ZiwgKmJ1ZjsKKyAgICBQeU9iamVjdCAqYnVmb2JqOworICAgIERXT1JEIHdyaXR0ZW47CisgICAgQk9PTCByZXQ7CisgICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKKyAgICBEV09SRCBlcnI7CisgICAgT3ZlcmxhcHBlZE9iamVjdCAqb3ZlcmxhcHBlZCA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJoYW5kbGUiLCAiYnVmZmVyIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKworICAgIC8qIEZpcnN0IGdldCBoYW5kbGUgYW5kIHVzZV9vdmVybGFwcGVkIHRvIGtub3cgd2hpY2ggUHlfYnVmZmVyIHRvIHVzZSAqLworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRl9IQU5ETEUgIk98aTpXcml0ZUZpbGUiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZSwgJmJ1Zm9iaiwgJnVzZV9vdmVybGFwcGVkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAodXNlX292ZXJsYXBwZWQpIHsKKyAgICAgICAgb3ZlcmxhcHBlZCA9IG5ld19vdmVybGFwcGVkKGhhbmRsZSk7CisgICAgICAgIGlmICghb3ZlcmxhcHBlZCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBidWYgPSAmb3ZlcmxhcHBlZC0+d3JpdGVfYnVmZmVyOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIGJ1ZiA9ICZfYnVmOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShidWZvYmosICJ5KiIsIGJ1ZikpIHsKKyAgICAgICAgUHlfWERFQ1JFRihvdmVybGFwcGVkKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJldCA9IFdyaXRlRmlsZShoYW5kbGUsIGJ1Zi0+YnVmLCBidWYtPmxlbiwgJndyaXR0ZW4sCisgICAgICAgICAgICAgICAgICAgIG92ZXJsYXBwZWQgPyAmb3ZlcmxhcHBlZC0+b3ZlcmxhcHBlZCA6IE5VTEwpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBlcnIgPSByZXQgPyAwIDogR2V0TGFzdEVycm9yKCk7CisKKyAgICBpZiAob3ZlcmxhcHBlZCkgeworICAgICAgICBpZiAoIXJldCkgeworICAgICAgICAgICAgaWYgKGVyciA9PSBFUlJPUl9JT19QRU5ESU5HKQorICAgICAgICAgICAgICAgIG92ZXJsYXBwZWQtPnBlbmRpbmcgPSAxOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG92ZXJsYXBwZWQpOworICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTkkiLCAoUHlPYmplY3QgKikgb3ZlcmxhcHBlZCwgZXJyKTsKKyAgICB9CisKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKGJ1Zik7CisgICAgaWYgKCFyZXQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCAwKTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiSUkiLCB3cml0dGVuLCBlcnIpOworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZiB3aW5hcGlfZnVuY3Rpb25zW10gPSB7CisgICAgeyJDbG9zZUhhbmRsZSIsIHdpbmFwaV9DbG9zZUhhbmRsZSwgTUVUSF9WQVJBUkdTLAorICAgICBDbG9zZUhhbmRsZV9kb2N9LAorICAgIHsiQ29ubmVjdE5hbWVkUGlwZSIsIChQeUNGdW5jdGlvbil3aW5hcGlfQ29ubmVjdE5hbWVkUGlwZSwKKyAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgIiJ9LAorICAgIHsiQ3JlYXRlRmlsZSIsIHdpbmFwaV9DcmVhdGVGaWxlLCBNRVRIX1ZBUkFSR1MsCisgICAgICIifSwKKyAgICB7IkNyZWF0ZU5hbWVkUGlwZSIsIHdpbmFwaV9DcmVhdGVOYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywKKyAgICAgIiJ9LAorICAgIHsiQ3JlYXRlUGlwZSIsIHdpbmFwaV9DcmVhdGVQaXBlLCBNRVRIX1ZBUkFSR1MsCisgICAgIENyZWF0ZVBpcGVfZG9jfSwKKyAgICB7IkNyZWF0ZVByb2Nlc3MiLCB3aW5hcGlfQ3JlYXRlUHJvY2VzcywgTUVUSF9WQVJBUkdTLAorICAgICBDcmVhdGVQcm9jZXNzX2RvY30sCisgICAgeyJEdXBsaWNhdGVIYW5kbGUiLCB3aW5hcGlfRHVwbGljYXRlSGFuZGxlLCBNRVRIX1ZBUkFSR1MsCisgICAgIER1cGxpY2F0ZUhhbmRsZV9kb2N9LAorICAgIHsiRXhpdFByb2Nlc3MiLCB3aW5hcGlfRXhpdFByb2Nlc3MsIE1FVEhfVkFSQVJHUywKKyAgICAgIiJ9LAorICAgIHsiR2V0Q3VycmVudFByb2Nlc3MiLCB3aW5hcGlfR2V0Q3VycmVudFByb2Nlc3MsIE1FVEhfVkFSQVJHUywKKyAgICAgR2V0Q3VycmVudFByb2Nlc3NfZG9jfSwKKyAgICB7IkdldEV4aXRDb2RlUHJvY2VzcyIsIHdpbmFwaV9HZXRFeGl0Q29kZVByb2Nlc3MsIE1FVEhfVkFSQVJHUywKKyAgICAgR2V0RXhpdENvZGVQcm9jZXNzX2RvY30sCisgICAgeyJHZXRMYXN0RXJyb3IiLCB3aW5hcGlfR2V0TGFzdEVycm9yLCBNRVRIX05PQVJHUywKKyAgICAgR2V0Q3VycmVudFByb2Nlc3NfZG9jfSwKKyAgICB7IkdldE1vZHVsZUZpbGVOYW1lIiwgd2luYXBpX0dldE1vZHVsZUZpbGVOYW1lLCBNRVRIX1ZBUkFSR1MsCisgICAgIEdldE1vZHVsZUZpbGVOYW1lX2RvY30sCisgICAgeyJHZXRTdGRIYW5kbGUiLCB3aW5hcGlfR2V0U3RkSGFuZGxlLCBNRVRIX1ZBUkFSR1MsCisgICAgIEdldFN0ZEhhbmRsZV9kb2N9LAorICAgIHsiR2V0VmVyc2lvbiIsIHdpbmFwaV9HZXRWZXJzaW9uLCBNRVRIX1ZBUkFSR1MsCisgICAgIEdldFZlcnNpb25fZG9jfSwKKyAgICB7Ik9wZW5Qcm9jZXNzIiwgd2luYXBpX09wZW5Qcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCisgICAgICIifSwKKyAgICB7IlBlZWtOYW1lZFBpcGUiLCB3aW5hcGlfUGVla05hbWVkUGlwZSwgTUVUSF9WQVJBUkdTLAorICAgICAiIn0sCisgICAgeyJSZWFkRmlsZSIsIChQeUNGdW5jdGlvbil3aW5hcGlfUmVhZEZpbGUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICIifSwKKyAgICB7IlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlIiwgd2luYXBpX1NldE5hbWVkUGlwZUhhbmRsZVN0YXRlLCBNRVRIX1ZBUkFSR1MsCisgICAgICIifSwKKyAgICB7IlRlcm1pbmF0ZVByb2Nlc3MiLCB3aW5hcGlfVGVybWluYXRlUHJvY2VzcywgTUVUSF9WQVJBUkdTLAorICAgICBUZXJtaW5hdGVQcm9jZXNzX2RvY30sCisgICAgeyJXYWl0TmFtZWRQaXBlIiwgd2luYXBpX1dhaXROYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywKKyAgICAgIiJ9LAorICAgIHsiV2FpdEZvck11bHRpcGxlT2JqZWN0cyIsIHdpbmFwaV9XYWl0Rm9yTXVsdGlwbGVPYmplY3RzLCBNRVRIX1ZBUkFSR1MsCisgICAgICIifSwKKyAgICB7IldhaXRGb3JTaW5nbGVPYmplY3QiLCB3aW5hcGlfV2FpdEZvclNpbmdsZU9iamVjdCwgTUVUSF9WQVJBUkdTLAorICAgICBXYWl0Rm9yU2luZ2xlT2JqZWN0X2RvY30sCisgICAgeyJXcml0ZUZpbGUiLCAoUHlDRnVuY3Rpb24pd2luYXBpX1dyaXRlRmlsZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgIiJ9LAorICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiB3aW5hcGlfbW9kdWxlID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAiX3dpbmFwaSIsCisgICAgTlVMTCwKKyAgICAtMSwKKyAgICB3aW5hcGlfZnVuY3Rpb25zLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwKK307CisKKyNkZWZpbmUgV0lOQVBJX0NPTlNUQU5UKGZtdCwgY29uKSBcCisgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgI2NvbiwgUHlfQnVpbGRWYWx1ZShmbXQsIGNvbikpCisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3dpbmFwaSh2b2lkKQoreworICAgIFB5T2JqZWN0ICpkOworICAgIFB5T2JqZWN0ICptOworCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmT3ZlcmxhcHBlZFR5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZ3aW5hcGlfbW9kdWxlKTsKKyAgICBpZiAobSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBkID0gUHlNb2R1bGVfR2V0RGljdChtKTsKKworICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJPdmVybGFwcGVkIiwgKFB5T2JqZWN0ICopICZPdmVybGFwcGVkVHlwZSk7CisKKyAgICAvKiBjb25zdGFudHMgKi8KKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgQ1JFQVRFX05FV19DT05TT0xFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgQ1JFQVRFX05FV19QUk9DRVNTX0dST1VQKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRFVQTElDQVRFX1NBTUVfQUNDRVNTKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRFVQTElDQVRFX0NMT1NFX1NPVVJDRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX0FMUkVBRFlfRVhJU1RTKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfQlJPS0VOX1BJUEUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9JT19QRU5ESU5HKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfTU9SRV9EQVRBKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfTkVUTkFNRV9ERUxFVEVEKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfTk9fU1lTVEVNX1JFU09VUkNFUyk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX01PUkVfREFUQSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX05FVE5BTUVfREVMRVRFRCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX05PX0RBVEEpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9OT19TWVNURU1fUkVTT1VSQ0VTKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfT1BFUkFUSU9OX0FCT1JURUQpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9QSVBFX0JVU1kpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9QSVBFX0NPTk5FQ1RFRCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX1NFTV9USU1FT1VUKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRklMRV9GTEFHX0ZJUlNUX1BJUEVfSU5TVEFOQ0UpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBGSUxFX0ZMQUdfT1ZFUkxBUFBFRCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEZJTEVfR0VORVJJQ19SRUFEKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRklMRV9HRU5FUklDX1dSSVRFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgR0VORVJJQ19SRUFEKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgR0VORVJJQ19XUklURSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIElORklOSVRFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgTk1QV0FJVF9XQUlUX0ZPUkVWRVIpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBPUEVOX0VYSVNUSU5HKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9BQ0NFU1NfRFVQTEVYKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9BQ0NFU1NfSU5CT1VORCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfUkVBRE1PREVfTUVTU0FHRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfVFlQRV9NRVNTQUdFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9VTkxJTUlURURfSU5TVEFOQ0VTKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9XQUlUKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgUFJPQ0VTU19BTExfQUNDRVNTKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgUFJPQ0VTU19EVVBfSEFORExFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgU1RBUlRGX1VTRVNIT1dXSU5ET1cpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBTVEFSVEZfVVNFU1RESEFORExFUyk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFNURF9JTlBVVF9IQU5ETEUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBTVERfT1VUUFVUX0hBTkRMRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFNURF9FUlJPUl9IQU5ETEUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBTVElMTF9BQ1RJVkUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBTV19ISURFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgV0FJVF9PQkpFQ1RfMCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFdBSVRfVElNRU9VVCk7CisKKyAgICBXSU5BUElfQ09OU1RBTlQoImkiLCBOVUxMKTsKKworICAgIHJldHVybiBtOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hcnJheW1vZHVsZS5jIGIvTW9kdWxlcy9hcnJheW1vZHVsZS5jCmluZGV4IDQ3NWFjYjQuLjk2YzllNWIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYXJyYXltb2R1bGUuYworKysgYi9Nb2R1bGVzL2FycmF5bW9kdWxlLmMKQEAgLTIyLDcgKzIyLDcgQEAKICAqIGZ1bmN0aW9ucyBhcmVuJ3QgdmlzaWJsZSB5ZXQuCiAgKi8KIHN0cnVjdCBhcnJheWRlc2NyIHsKLSAgICBQeV9VTklDT0RFIHR5cGVjb2RlOworICAgIGNoYXIgdHlwZWNvZGU7CiAgICAgaW50IGl0ZW1zaXplOwogICAgIFB5T2JqZWN0ICogKCpnZXRpdGVtKShzdHJ1Y3QgYXJyYXlvYmplY3QgKiwgUHlfc3NpemVfdCk7CiAgICAgaW50ICgqc2V0aXRlbSkoc3RydWN0IGFycmF5b2JqZWN0ICosIFB5X3NzaXplX3QsIFB5T2JqZWN0ICopOwpAQCAtMzU2LDYgKzM1Niw1OSBAQAogICAgIHJldHVybiAwOwogfQogCisjaWZkZWYgSEFWRV9MT05HX0xPTkcKKworc3RhdGljIFB5T2JqZWN0ICoKK3FfZ2V0aXRlbShhcnJheW9iamVjdCAqYXAsIFB5X3NzaXplX3QgaSkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoKFBZX0xPTkdfTE9ORyAqKWFwLT5vYl9pdGVtKVtpXSk7Cit9CisKK3N0YXRpYyBpbnQKK3Ffc2V0aXRlbShhcnJheW9iamVjdCAqYXAsIFB5X3NzaXplX3QgaSwgUHlPYmplY3QgKnYpCit7CisgICAgUFlfTE9OR19MT05HIHg7CisgICAgaWYgKCFQeUFyZ19QYXJzZSh2LCAiTDthcnJheSBpdGVtIG11c3QgYmUgaW50ZWdlciIsICZ4KSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChpID49IDApCisgICAgICAgICgoUFlfTE9OR19MT05HICopYXAtPm9iX2l0ZW0pW2ldID0geDsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1FRX2dldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGkpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygKKyAgICAgICAgKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcgKilhcC0+b2JfaXRlbSlbaV0pOworfQorCitzdGF0aWMgaW50CitRUV9zZXRpdGVtKGFycmF5b2JqZWN0ICphcCwgUHlfc3NpemVfdCBpLCBQeU9iamVjdCAqdikKK3sKKyAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeDsKKyAgICBpZiAoUHlMb25nX0NoZWNrKHYpKSB7CisgICAgICAgIHggPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKHYpOworICAgICAgICBpZiAoeCA9PSAodW5zaWduZWQgUFlfTE9OR19MT05HKSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUFlfTE9OR19MT05HIHk7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UodiwgIkw7YXJyYXkgaXRlbSBtdXN0IGJlIGludGVnZXIiLCAmeSkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmICh5IDwgMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgInVuc2lnbmVkIGxvbmcgbG9uZyBpcyBsZXNzIHRoYW4gbWluaW11bSIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHggPSAodW5zaWduZWQgUFlfTE9OR19MT05HKXk7CisgICAgfQorCisgICAgaWYgKGkgPj0gMCkKKyAgICAgICAgKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcgKilhcC0+b2JfaXRlbSlbaV0gPSB4OworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKIHN0YXRpYyBQeU9iamVjdCAqCiBmX2dldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGkpCiB7CkBAIC00MDYsNiArNDU5LDEwIEBACiAgICAgeydJJywgc2l6ZW9mKGludCksIElJX2dldGl0ZW0sIElJX3NldGl0ZW0sICJJIiwgMSwgMH0sCiAgICAgeydsJywgc2l6ZW9mKGxvbmcpLCBsX2dldGl0ZW0sIGxfc2V0aXRlbSwgImwiLCAxLCAxfSwKICAgICB7J0wnLCBzaXplb2YobG9uZyksIExMX2dldGl0ZW0sIExMX3NldGl0ZW0sICJMIiwgMSwgMH0sCisjaWZkZWYgSEFWRV9MT05HX0xPTkcKKyAgICB7J3EnLCBzaXplb2YoUFlfTE9OR19MT05HKSwgcV9nZXRpdGVtLCBxX3NldGl0ZW0sICJxIiwgMSwgMX0sCisgICAgeydRJywgc2l6ZW9mKFBZX0xPTkdfTE9ORyksIFFRX2dldGl0ZW0sIFFRX3NldGl0ZW0sICJRIiwgMSwgMH0sCisjZW5kaWYKICAgICB7J2YnLCBzaXplb2YoZmxvYXQpLCBmX2dldGl0ZW0sIGZfc2V0aXRlbSwgImYiLCAwLCAwfSwKICAgICB7J2QnLCBzaXplb2YoZG91YmxlKSwgZF9nZXRpdGVtLCBkX3NldGl0ZW0sICJkIiwgMCwgMH0sCiAgICAgeydcMCcsIDAsIDAsIDAsIDAsIDAsIDB9IC8qIFNlbnRpbmVsICovCkBAIC00MjYsMTEgKzQ4MywxMSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBuYnl0ZXMgPSBzaXplICogZGVzY3ItPml0ZW1zaXplOwogICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgIGlmIChuYnl0ZXMgLyBkZXNjci0+aXRlbXNpemUgIT0gKHNpemVfdClzaXplKSB7CisgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAvIGRlc2NyLT5pdGVtc2l6ZSkgewogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICB9CisgICAgbmJ5dGVzID0gc2l6ZSAqIGRlc2NyLT5pdGVtc2l6ZTsKICAgICBvcCA9IChhcnJheW9iamVjdCAqKSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAob3AgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTUxNCwxMCArNTcxLDggQEAKICAgICBQeV9zc2l6ZV90IGksIGs7CiAgICAgUHlPYmplY3QgKnJlczsKIAotICAgIGlmICghYXJyYXlfQ2hlY2sodikgfHwgIWFycmF5X0NoZWNrKHcpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFhcnJheV9DaGVjayh2KSB8fCAhYXJyYXlfQ2hlY2sodykpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAogICAgIHZhID0gKGFycmF5b2JqZWN0ICopdjsKICAgICB3YSA9IChhcnJheW9iamVjdCAqKXc7CkBAIC04NzYsNyArOTMxLDYgQEAKICAgICBpZiAoUHlfU0laRShzZWxmKSA+IDApIHsKICAgICAgICAgaWYgKG4gPCAwKQogICAgICAgICAgICAgbiA9IDA7Ci0gICAgICAgIGl0ZW1zID0gc2VsZi0+b2JfaXRlbTsKICAgICAgICAgaWYgKChzZWxmLT5vYl9kZXNjci0+aXRlbXNpemUgIT0gMCkgJiYKICAgICAgICAgICAgIChQeV9TSVpFKHNlbGYpID4gUFlfU1NJWkVfVF9NQVggLyBzZWxmLT5vYl9kZXNjci0+aXRlbXNpemUpKSB7CiAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTExOTEsMTggKzEyNDUsMjMgQEAKICAgICBQeU9iamVjdCAqZiwgKmIsICpyZXM7CiAgICAgUHlfc3NpemVfdCBpdGVtc2l6ZSA9IHNlbGYtPm9iX2Rlc2NyLT5pdGVtc2l6ZTsKICAgICBQeV9zc2l6ZV90IG4sIG5ieXRlczsKKyAgICBfUHlfSURFTlRJRklFUihyZWFkKTsKICAgICBpbnQgbm90X2Vub3VnaF9ieXRlczsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT246ZnJvbWZpbGUiLCAmZiwgJm4pKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIG5ieXRlcyA9IG4gKiBpdGVtc2l6ZTsKLSAgICBpZiAobmJ5dGVzIDwgMCB8fCBuYnl0ZXMvaXRlbXNpemUgIT0gbikgeworICAgIGlmIChuIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIGNvdW50Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAobiA+IFBZX1NTSVpFX1RfTUFYIC8gaXRlbXNpemUpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIG5ieXRlcyA9IG4gKiBpdGVtc2l6ZTsKIAotICAgIGIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGYsICJyZWFkIiwgIm4iLCBuYnl0ZXMpOworICAgIGIgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX3JlYWQsICJuIiwgbmJ5dGVzKTsKICAgICBpZiAoYiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTI1OSwxMiArMTMxOCwxNCBAQAogICAgICAgICBjaGFyKiBwdHIgPSBzZWxmLT5vYl9pdGVtICsgaSpCTE9DS1NJWkU7CiAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSA9IEJMT0NLU0laRTsKICAgICAgICAgUHlPYmplY3QgKmJ5dGVzLCAqcmVzOworICAgICAgICBfUHlfSURFTlRJRklFUih3cml0ZSk7CisKICAgICAgICAgaWYgKGkqQkxPQ0tTSVpFICsgc2l6ZSA+IG5ieXRlcykKICAgICAgICAgICAgIHNpemUgPSBuYnl0ZXMgLSBpKkJMT0NLU0laRTsKICAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHB0ciwgc2l6ZSk7CiAgICAgICAgIGlmIChieXRlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZiwgIndyaXRlIiwgIk8iLCBieXRlcyk7CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfd3JpdGUsICJPIiwgYnl0ZXMpOwogICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE0NTYsNyArMTUxNyw3IEBACiB7CiAgICAgUHlfVU5JQ09ERSAqdXN0cjsKICAgICBQeV9zc2l6ZV90IG47Ci0gICAgUHlfVU5JQ09ERSB0eXBlY29kZTsKKyAgICBjaGFyIHR5cGVjb2RlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ1Izpmcm9tdW5pY29kZSIsICZ1c3RyLCAmbikpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTQ5MSw3ICsxNTUyLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBhcnJheV90b3VuaWNvZGUoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCiB7Ci0gICAgUHlfVU5JQ09ERSB0eXBlY29kZTsKKyAgICBjaGFyIHR5cGVjb2RlOwogICAgIHR5cGVjb2RlID0gc2VsZi0+b2JfZGVzY3ItPnR5cGVjb2RlOwogICAgIGlmICh0eXBlY29kZSAhPSAndScpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCkBAIC0xNjAxLDcgKzE2NjIsNyBAQAogICogYmUgZm91bmQuCiAgKi8KIHN0YXRpYyBlbnVtIG1hY2hpbmVfZm9ybWF0X2NvZGUKLXR5cGVjb2RlX3RvX21mb3JtYXRfY29kZShpbnQgdHlwZWNvZGUpCit0eXBlY29kZV90b19tZm9ybWF0X2NvZGUoY2hhciB0eXBlY29kZSkKIHsKICNpZmRlZiBXT1JEU19CSUdFTkRJQU4KICAgICBjb25zdCBpbnQgaXNfYmlnX2VuZGlhbiA9IDE7CkBAIC0xNjcxLDYgKzE3MzIsMTYgQEAKICAgICAgICAgaW50c2l6ZSA9IHNpemVvZihsb25nKTsKICAgICAgICAgaXNfc2lnbmVkID0gMDsKICAgICAgICAgYnJlYWs7CisjaWYgSEFWRV9MT05HX0xPTkcKKyAgICBjYXNlICdxJzoKKyAgICAgICAgaW50c2l6ZSA9IHNpemVvZihQWV9MT05HX0xPTkcpOworICAgICAgICBpc19zaWduZWQgPSAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlICdRJzoKKyAgICAgICAgaW50c2l6ZSA9IHNpemVvZihQWV9MT05HX0xPTkcpOworICAgICAgICBpc19zaWduZWQgPSAwOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBVTktOT1dOX0ZPUk1BVDsKICAgICB9CkBAIC0xNzAxLDcgKzE3NzIsNyBAQAogICogTlVMTCBpcyByZXR1cm5lZCB0byBpbmRpY2F0ZSBhIGZhaWx1cmUuCiAgKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1tYWtlX2FycmF5KFB5VHlwZU9iamVjdCAqYXJyYXl0eXBlLCBQeV9VTklDT0RFIHR5cGVjb2RlLCBQeU9iamVjdCAqaXRlbXMpCittYWtlX2FycmF5KFB5VHlwZU9iamVjdCAqYXJyYXl0eXBlLCBjaGFyIHR5cGVjb2RlLCBQeU9iamVjdCAqaXRlbXMpCiB7CiAgICAgUHlPYmplY3QgKm5ld19hcmdzOwogICAgIFB5T2JqZWN0ICphcnJheV9vYmo7CkBAIC0xNzEwLDcgKzE3ODEsNyBAQAogICAgIGFzc2VydChhcnJheXR5cGUgIT0gTlVMTCk7CiAgICAgYXNzZXJ0KGl0ZW1zICE9IE5VTEwpOwogCi0gICAgdHlwZWNvZGVfb2JqID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKCZ0eXBlY29kZSwgMSk7CisgICAgdHlwZWNvZGVfb2JqID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKHR5cGVjb2RlKTsKICAgICBpZiAodHlwZWNvZGVfb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xNzQwLDE3ICsxODExLDE0IEBACiAgICAgUHlPYmplY3QgKml0ZW1zOwogICAgIFB5T2JqZWN0ICpjb252ZXJ0ZWRfaXRlbXM7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBpbnQgdHlwZWNvZGVfaW50OwotICAgIFB5X1VOSUNPREUgdHlwZWNvZGU7CisgICAgaW50IHR5cGVjb2RlOwogICAgIGVudW0gbWFjaGluZV9mb3JtYXRfY29kZSBtZm9ybWF0X2NvZGU7CiAgICAgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPQ2lPOmFycmF5Ll9hcnJheV9yZWNvbnN0cnVjdG9yIiwKLSAgICAgICAgICAgICAgICAgICAgJmFycmF5dHlwZSwgJnR5cGVjb2RlX2ludCwgJm1mb3JtYXRfY29kZSwgJml0ZW1zKSkKKyAgICAgICAgICAgICAgICAgICAgJmFycmF5dHlwZSwgJnR5cGVjb2RlLCAmbWZvcm1hdF9jb2RlLCAmaXRlbXMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHR5cGVjb2RlID0gKFB5X1VOSUNPREUpdHlwZWNvZGVfaW50OwotCiAgICAgaWYgKCFQeVR5cGVfQ2hlY2soYXJyYXl0eXBlKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgImZpcnN0IGFyZ3VtZW50IG11c3QgYSB0eXBlIG9iamVjdCwgbm90ICUuMjAwcyIsCkBAIC0xNzY0LDcgKzE4MzIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZm9yIChkZXNjciA9IGRlc2NyaXB0b3JzOyBkZXNjci0+dHlwZWNvZGUgIT0gJ1wwJzsgZGVzY3IrKykgewotICAgICAgICBpZiAoZGVzY3ItPnR5cGVjb2RlID09IHR5cGVjb2RlKQorICAgICAgICBpZiAoKGludClkZXNjci0+dHlwZWNvZGUgPT0gdHlwZWNvZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgaWYgKGRlc2NyLT50eXBlY29kZSA9PSAnXDAnKSB7CkBAIC0xNzg2LDkgKzE4NTQsOSBAQAogICAgIH0KIAogICAgIC8qIEZhc3QgcGF0aDogTm8gZGVjb2RpbmcgaGFzIHRvIGJlIGRvbmUuICovCi0gICAgaWYgKG1mb3JtYXRfY29kZSA9PSB0eXBlY29kZV90b19tZm9ybWF0X2NvZGUodHlwZWNvZGUpIHx8CisgICAgaWYgKG1mb3JtYXRfY29kZSA9PSB0eXBlY29kZV90b19tZm9ybWF0X2NvZGUoKGNoYXIpdHlwZWNvZGUpIHx8CiAgICAgICAgIG1mb3JtYXRfY29kZSA9PSBVTktOT1dOX0ZPUk1BVCkgewotICAgICAgICByZXR1cm4gbWFrZV9hcnJheShhcnJheXR5cGUsIHR5cGVjb2RlLCBpdGVtcyk7CisgICAgICAgIHJldHVybiBtYWtlX2FycmF5KGFycmF5dHlwZSwgKGNoYXIpdHlwZWNvZGUsIGl0ZW1zKTsKICAgICB9CiAKICAgICAvKiBTbG93IHBhdGg6IERlY29kZSB0aGUgYnl0ZSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBtYWNoaW5lCkBAIC0xOTM0LDcgKzIwMDIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICByZXN1bHQgPSBtYWtlX2FycmF5KGFycmF5dHlwZSwgdHlwZWNvZGUsIGNvbnZlcnRlZF9pdGVtcyk7CisgICAgcmVzdWx0ID0gbWFrZV9hcnJheShhcnJheXR5cGUsIChjaGFyKXR5cGVjb2RlLCBjb252ZXJ0ZWRfaXRlbXMpOwogICAgIFB5X0RFQ1JFRihjb252ZXJ0ZWRfaXRlbXMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xOTQ5LDE0ICsyMDE3LDE2IEBACiAgICAgaW50IG1mb3JtYXRfY29kZTsKICAgICBzdGF0aWMgUHlPYmplY3QgKmFycmF5X3JlY29uc3RydWN0b3IgPSBOVUxMOwogICAgIGxvbmcgcHJvdG9jb2w7CisgICAgX1B5X0lERU5USUZJRVIoX2FycmF5X3JlY29uc3RydWN0b3IpOworICAgIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKIAogICAgIGlmIChhcnJheV9yZWNvbnN0cnVjdG9yID09IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKmFycmF5X21vZHVsZSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiYXJyYXkiKTsKICAgICAgICAgaWYgKGFycmF5X21vZHVsZSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGFycmF5X3JlY29uc3RydWN0b3IgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKAorICAgICAgICBhcnJheV9yZWNvbnN0cnVjdG9yID0gX1B5T2JqZWN0X0dldEF0dHJJZCgKICAgICAgICAgICAgIGFycmF5X21vZHVsZSwKLSAgICAgICAgICAgICJfYXJyYXlfcmVjb25zdHJ1Y3RvciIpOworICAgICAgICAgICAgJlB5SWRfX2FycmF5X3JlY29uc3RydWN0b3IpOwogICAgICAgICBQeV9ERUNSRUYoYXJyYXlfbW9kdWxlKTsKICAgICAgICAgaWYgKGFycmF5X3JlY29uc3RydWN0b3IgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTk3MSw3ICsyMDQxLDcgQEAKICAgICBpZiAocHJvdG9jb2wgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QgKilhcnJheSwgIl9fZGljdF9fIik7CisgICAgZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopYXJyYXksICZQeUlkX19fZGljdF9fKTsKICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIwMjMsOCArMjA5Myw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYXJyYXlfZ2V0X3R5cGVjb2RlKGFycmF5b2JqZWN0ICphLCB2b2lkICpjbG9zdXJlKQogewotICAgIFB5X1VOSUNPREUgdGMgPSBhLT5vYl9kZXNjci0+dHlwZWNvZGU7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgmdGMsIDEpOworICAgIGNoYXIgdHlwZWNvZGUgPSBhLT5vYl9kZXNjci0+dHlwZWNvZGU7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT3JkaW5hbCh0eXBlY29kZSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yMDQ0LDcgKzIxMTQsNyBAQAogc3RhdGljIFB5TWV0aG9kRGVmIGFycmF5X21ldGhvZHNbXSA9IHsKICAgICB7ImFwcGVuZCIsICAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9hcHBlbmQsICAgICAgTUVUSF9PLAogICAgICBhcHBlbmRfZG9jfSwKLSAgICB7ImJ1ZmZlcl9pbmZvIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2J1ZmZlcl9pbmZvLCBNRVRIX05PQVJHUywKKyAgICB7ImJ1ZmZlcl9pbmZvIiwgICAgIChQeUNGdW5jdGlvbilhcnJheV9idWZmZXJfaW5mbywgTUVUSF9OT0FSR1MsCiAgICAgIGJ1ZmZlcl9pbmZvX2RvY30sCiAgICAgeyJieXRlc3dhcCIsICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfYnl0ZXN3YXAsICAgIE1FVEhfTk9BUkdTLAogICAgICBieXRlc3dhcF9kb2N9LApAQCAtMjA1Miw5ICsyMTIyLDkgQEAKICAgICAgY29weV9kb2N9LAogICAgIHsiY291bnQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2NvdW50LCAgICAgICBNRVRIX08sCiAgICAgIGNvdW50X2RvY30sCi0gICAgeyJfX2RlZXBjb3B5X18iLChQeUNGdW5jdGlvbilhcnJheV9jb3B5LCAgICAgICAgICAgIE1FVEhfTywKKyAgICB7Il9fZGVlcGNvcHlfXyIsICAgIChQeUNGdW5jdGlvbilhcnJheV9jb3B5LCAgICAgICAgTUVUSF9PLAogICAgICBjb3B5X2RvY30sCi0gICAgeyJleHRlbmQiLCAgICAgIChQeUNGdW5jdGlvbilhcnJheV9leHRlbmQsICAgICAgICAgIE1FVEhfTywKKyAgICB7ImV4dGVuZCIsICAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9leHRlbmQsICAgICAgTUVUSF9PLAogICAgICBleHRlbmRfZG9jfSwKICAgICB7ImZyb21maWxlIiwgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9mcm9tZmlsZSwgICAgTUVUSF9WQVJBUkdTLAogICAgICBmcm9tZmlsZV9kb2N9LApAQCAtMjA3MiwxNCArMjE0MiwxMiBAQAogICAgICBpbnNlcnRfZG9jfSwKICAgICB7InBvcCIsICAgICAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9wb3AsICAgICAgICAgTUVUSF9WQVJBUkdTLAogICAgICBwb3BfZG9jfSwKLSAgICB7Il9fcmVkdWNlX2V4X18iLCAoUHlDRnVuY3Rpb24pYXJyYXlfcmVkdWNlX2V4LCAgICAgTUVUSF9PLAorICAgIHsiX19yZWR1Y2VfZXhfXyIsICAgKFB5Q0Z1bmN0aW9uKWFycmF5X3JlZHVjZV9leCwgICBNRVRIX08sCiAgICAgIHJlZHVjZV9kb2N9LAogICAgIHsicmVtb3ZlIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X3JlbW92ZSwgICAgICBNRVRIX08sCiAgICAgIHJlbW92ZV9kb2N9LAogICAgIHsicmV2ZXJzZSIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X3JldmVyc2UsICAgICBNRVRIX05PQVJHUywKICAgICAgcmV2ZXJzZV9kb2N9LAotLyogICAgICB7InNvcnQiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X3NvcnQsICAgICAgICBNRVRIX1ZBUkFSR1MsCi0gICAgc29ydF9kb2N9LCovCiAgICAgeyJ0b2ZpbGUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfdG9maWxlLCAgICAgIE1FVEhfTywKICAgICAgdG9maWxlX2RvY30sCiAgICAgeyJ0b2xpc3QiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfdG9saXN0LCAgICAgIE1FVEhfTk9BUkdTLApAQCAtMjA4OCw3ICsyMTU2LDcgQEAKICAgICAgdG9zdHJpbmdfZG9jfSwKICAgICB7InRvYnl0ZXMiLCAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV90b2J5dGVzLCAgICAgTUVUSF9OT0FSR1MsCiAgICAgIHRvYnl0ZXNfZG9jfSwKLSAgICB7InRvdW5pY29kZSIsICAgKFB5Q0Z1bmN0aW9uKWFycmF5X3RvdW5pY29kZSwgICAgICAgTUVUSF9OT0FSR1MsCisgICAgeyJ0b3VuaWNvZGUiLCAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfdG91bmljb2RlLCAgIE1FVEhfTk9BUkdTLAogICAgICB0b3VuaWNvZGVfZG9jfSwKICAgICB7Il9fc2l6ZW9mX18iLCAgICAgIChQeUNGdW5jdGlvbilhcnJheV9zaXplb2YsICAgICAgTUVUSF9OT0FSR1MsCiAgICAgIHNpemVvZl9kb2N9LApAQCAtMjA5OCw3ICsyMTY2LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBhcnJheV9yZXByKGFycmF5b2JqZWN0ICphKQogewotICAgIFB5X1VOSUNPREUgdHlwZWNvZGU7CisgICAgY2hhciB0eXBlY29kZTsKICAgICBQeU9iamVjdCAqcywgKnYgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbGVuOwogCkBAIC0yMTEyLDYgKzIxODAsOCBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIHYgPSBhcnJheV90b2xpc3QoYSwgTlVMTCk7CiAgICAgfQorICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJhcnJheSgnJWMnLCAlUikiLCAoaW50KXR5cGVjb2RlLCB2KTsKICAgICBQeV9ERUNSRUYodik7CkBAIC0yMzAzLDcgKzIzNzMsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYtPm9iX2l0ZW0gKyAoY3VyICsgMSkgKiBpdGVtc2l6ZSwKICAgICAgICAgICAgICAgICBsaW0gKiBpdGVtc2l6ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY3VyID0gc3RhcnQgKyBzbGljZWxlbmd0aCAqIHN0ZXA7CisgICAgICAgIGN1ciA9IHN0YXJ0ICsgKHNpemVfdClzbGljZWxlbmd0aCAqIHN0ZXA7CiAgICAgICAgIGlmIChjdXIgPCAoc2l6ZV90KVB5X1NJWkUoc2VsZikpIHsKICAgICAgICAgICAgIG1lbW1vdmUoc2VsZi0+b2JfaXRlbSArIChjdXItc2xpY2VsZW5ndGgpICogaXRlbXNpemUsCiAgICAgICAgICAgICAgICAgc2VsZi0+b2JfaXRlbSArIGN1ciAqIGl0ZW1zaXplLApAQCAtMjQ4Nyw3ICsyNTU3LDE3IEBACiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoaW5pdGlhbCAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVjayhpbml0aWFsKSkgIHsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG4gPSBQeVVuaWNvZGVfR0VUX0RBVEFfU0laRShpbml0aWFsKTsKKyAgICAgICAgICAgICAgICBQeV9VTklDT0RFICp1c3RyOworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbjsKKworICAgICAgICAgICAgICAgIHVzdHIgPSBQeVVuaWNvZGVfQXNVbmljb2RlKGluaXRpYWwpOworICAgICAgICAgICAgICAgIGlmICh1c3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBuID0gUHlVbmljb2RlX0dFVF9EQVRBX1NJWkUoaW5pdGlhbCk7CiAgICAgICAgICAgICAgICAgaWYgKG4gPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGFycmF5b2JqZWN0ICpzZWxmID0gKGFycmF5b2JqZWN0ICopYTsKICAgICAgICAgICAgICAgICAgICAgY2hhciAqaXRlbSA9IHNlbGYtPm9iX2l0ZW07CkBAIC0yNDk5LDcgKzI1NzksNyBAQAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHNlbGYtPm9iX2l0ZW0gPSBpdGVtOwogICAgICAgICAgICAgICAgICAgICBQeV9TSVpFKHNlbGYpID0gbiAvIHNpemVvZihQeV9VTklDT0RFKTsKLSAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGl0ZW0sIFB5VW5pY29kZV9BU19EQVRBKGluaXRpYWwpLCBuKTsKKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGl0ZW0sIHVzdHIsIG4pOwogICAgICAgICAgICAgICAgICAgICBzZWxmLT5hbGxvY2F0ZWQgPSBQeV9TSVpFKHNlbGYpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTI1MjAsNyArMjYwMCwxMSBAQAogICAgICAgICB9CiAgICAgfQogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgICAgICJiYWQgdHlwZWNvZGUgKG11c3QgYmUgYiwgQiwgdSwgaCwgSCwgaSwgSSwgbCwgTCwgcSwgUSwgZiBvciBkKSIpOworI2Vsc2UKICAgICAgICAgImJhZCB0eXBlY29kZSAobXVzdCBiZSBiLCBCLCB1LCBoLCBILCBpLCBJLCBsLCBMLCBmIG9yIGQpIik7CisjZW5kaWYKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMjU0MywxMiArMjYyNywxOCBAQAogICAgICdJJyAgICAgICAgIHVuc2lnbmVkIGludGVnZXIgICAyIFxuXAogICAgICdsJyAgICAgICAgIHNpZ25lZCBpbnRlZ2VyICAgICA0IFxuXAogICAgICdMJyAgICAgICAgIHVuc2lnbmVkIGludGVnZXIgICA0IFxuXAorICAgICdxJyAgICAgICAgIHNpZ25lZCBpbnRlZ2VyICAgICA4IChzZWUgbm90ZSkgXG5cCisgICAgJ1EnICAgICAgICAgdW5zaWduZWQgaW50ZWdlciAgIDggKHNlZSBub3RlKSBcblwKICAgICAnZicgICAgICAgICBmbG9hdGluZyBwb2ludCAgICAgNCBcblwKICAgICAnZCcgICAgICAgICBmbG9hdGluZyBwb2ludCAgICAgOCBcblwKIFxuXAogTk9URTogVGhlICd1JyB0eXBlY29kZSBjb3JyZXNwb25kcyB0byBQeXRob24ncyB1bmljb2RlIGNoYXJhY3Rlci4gT24gXG5cCiBuYXJyb3cgYnVpbGRzIHRoaXMgaXMgMi1ieXRlcyBvbiB3aWRlIGJ1aWxkcyB0aGlzIGlzIDQtYnl0ZXMuXG5cCiBcblwKK05PVEU6IFRoZSAncScgYW5kICdRJyB0eXBlIGNvZGVzIGFyZSBvbmx5IGF2YWlsYWJsZSBpZiB0aGUgcGxhdGZvcm0gXG5cCitDIGNvbXBpbGVyIHVzZWQgdG8gYnVpbGQgUHl0aG9uIHN1cHBvcnRzICdsb25nIGxvbmcnLCBvciwgb24gV2luZG93cywgXG5cCisnX19pbnQ2NCcuXG5cCitcblwKIFRoZSBjb25zdHJ1Y3RvciBpczpcblwKIFxuXAogYXJyYXkodHlwZWNvZGUgWywgaW5pdGlhbGl6ZXJdKSAtLSBjcmVhdGUgYSBuZXcgYXJyYXlcblwKQEAgLTI2OTMsNiArMjc4MywzNCBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlpdGVyX3JlZHVjZShhcnJheWl0ZXJvYmplY3QgKml0KQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbiIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPmFvLCBpdC0+aW5kZXgpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlpdGVyX3NldHN0YXRlKGFycmF5aXRlcm9iamVjdCAqaXQsIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChzdGF0ZSk7CisgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpbmRleCA8IDApCisgICAgICAgIGluZGV4ID0gMDsKKyAgICBpdC0+aW5kZXggPSBpbmRleDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHNldHN0YXRlX2RvYywgIlNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4iKTsKK3N0YXRpYyBQeU1ldGhvZERlZiBhcnJheWl0ZXJfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5aXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbilhcnJheWl0ZXJfc2V0c3RhdGUsIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgTlVMTH0gLyogc2VudGluZWwgKi8KK307CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlBcnJheUl0ZXJfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiYXJyYXlpdGVyYXRvciIsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwpAQCAtMjcyMiw3ICsyODQwLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWFycmF5aXRlcl9uZXh0LCAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgYXJyYXlpdGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KIH07CiAKIApAQCAtMjc1Miw5ICsyODcwLDkgQEAKIFB5SW5pdF9hcnJheSh2b2lkKQogewogICAgIFB5T2JqZWN0ICptOworICAgIGNoYXIgYnVmZmVyW1B5X0FSUkFZX0xFTkdUSChkZXNjcmlwdG9ycyldLCAqcDsKICAgICBQeU9iamVjdCAqdHlwZWNvZGVzOwogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IDA7Ci0gICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqcDsKICAgICBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZBcnJheXR5cGUpIDwgMCkKQEAgLTI3NzMsMTMgKzI4OTEsMTMgQEAKICAgICAgICAgc2l6ZSsrOwogICAgIH0KIAotICAgIHR5cGVjb2RlcyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodHlwZWNvZGVzKTsKKyAgICBwID0gYnVmZmVyOwogICAgIGZvciAoZGVzY3IgPSBkZXNjcmlwdG9yczsgZGVzY3ItPnR5cGVjb2RlICE9ICdcMCc7IGRlc2NyKyspIHsKICAgICAgICAgKnArKyA9IChjaGFyKWRlc2NyLT50eXBlY29kZTsKICAgICB9CisgICAgdHlwZWNvZGVzID0gUHlVbmljb2RlX0RlY29kZUFTQ0lJKGJ1ZmZlciwgcCAtIGJ1ZmZlciwgTlVMTCk7CiAKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInR5cGVjb2RlcyIsIChQeU9iamVjdCAqKXR5cGVjb2Rlcyk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ0eXBlY29kZXMiLCB0eXBlY29kZXMpOwogCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfREVDUkVGKG0pOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hdGV4aXRtb2R1bGUuYyBiL01vZHVsZXMvYXRleGl0bW9kdWxlLmMKaW5kZXggMWVlN2VhZC4uZjY4ZDgwNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hdGV4aXRtb2R1bGUuYworKysgYi9Nb2R1bGVzL2F0ZXhpdG1vZHVsZS5jCkBAIC0yMTEsNiArMjExLDE0IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKK3N0YXRpYyB2b2lkCithdGV4aXRfZnJlZShQeU9iamVjdCAqbSkKK3sKKyAgICBhdGV4aXRtb2R1bGVfc3RhdGUgKm1vZHN0YXRlOworICAgIG1vZHN0YXRlID0gR0VUX0FURVhJVF9TVEFURShtKTsKKyAgICBQeU1lbV9GcmVlKG1vZHN0YXRlLT5hdGV4aXRfY2FsbGJhY2tzKTsKK30KKwogUHlEb2NfU1RSVkFSKGF0ZXhpdF91bnJlZ2lzdGVyX19kb2NfXywKICJ1bnJlZ2lzdGVyKGZ1bmMpIC0+IE5vbmVcblwKIFxuXApAQCAtMjc1LDcgKzI4Myw3IEBACiAJTlVMTCwKIAlOVUxMLAogCU5VTEwsCi0JTlVMTAorCShmcmVlZnVuYylhdGV4aXRfZnJlZQogfTsKIAogUHlNT0RJTklUX0ZVTkMKZGlmZiAtLWdpdCBhL01vZHVsZXMvYXVkaW9vcC5jIGIvTW9kdWxlcy9hdWRpb29wLmMKaW5kZXggNWM2OTI1OC4uN2U0MGJiZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hdWRpb29wLmMKKysrIGIvTW9kdWxlcy9hdWRpb29wLmMKQEAgLTUzMCw3ICs1MzAsNiBAQAogCiAgICAgYmVzdF9yZXN1bHQgPSByZXN1bHQ7CiAgICAgYmVzdF9qID0gMDsKLSAgICBqID0gMDsKIAogICAgIGZvciAoIGo9MTsgajw9bGVuMS1sZW4yOyBqKyspIHsKICAgICAgICAgYWpfbTEgPSAoZG91YmxlKWNwMVtqLTFdOwpAQCAtNjE2LDcgKzYxNSw2IEBACiAKICAgICBiZXN0X3Jlc3VsdCA9IHJlc3VsdDsKICAgICBiZXN0X2ogPSAwOwotICAgIGogPSAwOwogCiAgICAgZm9yICggaj0xOyBqPD1sZW4xLWxlbjI7IGorKykgewogICAgICAgICBhal9tMSA9IChkb3VibGUpY3AxW2otMV07CkBAIC0xMTAzLDggKzExMDEsNyBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoQXVkaW9vcEVycm9yLCAiIyBvZiBjaGFubmVscyBzaG91bGQgYmUgPj0gMSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgYnl0ZXNfcGVyX2ZyYW1lID0gc2l6ZSAqIG5jaGFubmVsczsKLSAgICBpZiAoYnl0ZXNfcGVyX2ZyYW1lIC8gbmNoYW5uZWxzICE9IHNpemUpIHsKKyAgICBpZiAoc2l6ZSA+IElOVF9NQVggLyBuY2hhbm5lbHMpIHsKICAgICAgICAgLyogVGhpcyBvdmVyZmxvdyB0ZXN0IGlzIHJpZ29yb3VzbHkgY29ycmVjdCBiZWNhdXNlCiAgICAgICAgICAgIGJvdGggbXVsdGlwbGljYW5kcyBhcmUgPj0gMS4gIFVzZSB0aGUgYXJndW1lbnQgbmFtZXMKICAgICAgICAgICAgZnJvbSB0aGUgZG9jcyBmb3IgdGhlIGVycm9yIG1zZy4gKi8KQEAgLTExMTIsNiArMTEwOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGggKiBuY2hhbm5lbHMgdG9vIGJpZyBmb3IgYSBDIGludCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgYnl0ZXNfcGVyX2ZyYW1lID0gc2l6ZSAqIG5jaGFubmVsczsKICAgICBpZiAod2VpZ2h0QSA8IDEgfHwgd2VpZ2h0QiA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEF1ZGlvb3BFcnJvciwKICAgICAgICAgICAgICJ3ZWlnaHRBIHNob3VsZCBiZSA+PSAxLCB3ZWlnaHRCIHNob3VsZCBiZSA+PSAwIik7CkBAIC0xNDMxLDcgKzE0MjksNiBAQAogICAgIGlmICggc3RhdGUgPT0gUHlfTm9uZSApIHsKICAgICAgICAgLyogRmlyc3QgdGltZSwgaXQgc2VlbXMuIFNldCBkZWZhdWx0cyAqLwogICAgICAgICB2YWxwcmVkID0gMDsKLSAgICAgICAgc3RlcCA9IDc7CiAgICAgICAgIGluZGV4ID0gMDsKICAgICB9IGVsc2UgaWYgKCAhUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgImlpIiwgJnZhbHByZWQsICZpbmRleCkgKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE1MzIsNyArMTUyOSw2IEBACiAgICAgaWYgKCBzdGF0ZSA9PSBQeV9Ob25lICkgewogICAgICAgICAvKiBGaXJzdCB0aW1lLCBpdCBzZWVtcy4gU2V0IGRlZmF1bHRzICovCiAgICAgICAgIHZhbHByZWQgPSAwOwotICAgICAgICBzdGVwID0gNzsKICAgICAgICAgaW5kZXggPSAwOwogICAgIH0gZWxzZSBpZiAoICFQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiaWkiLCAmdmFscHJlZCwgJmluZGV4KSApCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9iaW5hc2NpaS5jIGIvTW9kdWxlcy9iaW5hc2NpaS5jCmluZGV4IDc0ZGI3MzkuLjM0MGVjOWMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYmluYXNjaWkuYworKysgYi9Nb2R1bGVzL2JpbmFzY2lpLmMKQEAgLTE4Myw2ICsxODMsNDQgQEAKICAgICAweDZlMTcsIDB4N2UzNiwgMHg0ZTU1LCAweDVlNzQsIDB4MmU5MywgMHgzZWIyLCAweDBlZDEsIDB4MWVmMCwKIH07CiAKK3N0YXRpYyBpbnQKK2FzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIoUHlPYmplY3QgKmFyZywgUHlfYnVmZmVyICpidWYpCit7CisgICAgaWYgKGFyZyA9PSBOVUxMKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoYnVmKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGFyZykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmICghUHlVbmljb2RlX0lTX0FTQ0lJKGFyZykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgYXJndW1lbnQgc2hvdWxkIGNvbnRhaW4gb25seSBBU0NJSSBjaGFyYWN0ZXJzIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQoYXJnKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CisgICAgICAgIGJ1Zi0+YnVmID0gKHZvaWQgKikgUHlVbmljb2RlXzFCWVRFX0RBVEEoYXJnKTsKKyAgICAgICAgYnVmLT5sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChhcmcpOworICAgICAgICBidWYtPm9iaiA9IE5VTEw7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgYnVmLCBQeUJVRl9TSU1QTEUpICE9IDApIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBzaG91bGQgYmUgYnl0ZXMsIGJ1ZmZlciBvciBBU0NJSSBzdHJpbmcsICIKKyAgICAgICAgICAgICAgICAgICAgICJub3QgJVIiLCBQeV9UWVBFKGFyZykpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKCFQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoYnVmLCAnQycpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgc2hvdWxkIGJlIGEgY29udGlndW91cyBidWZmZXIsICIKKyAgICAgICAgICAgICAgICAgICAgICJub3QgJVIiLCBQeV9UWVBFKGFyZykpOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKGJ1Zik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gUHlfQ0xFQU5VUF9TVVBQT1JURUQ7Cit9CisKKwogUHlEb2NfU1RSVkFSKGRvY19hMmJfdXUsICIoYXNjaWkpIC0+IGJpbi4gRGVjb2RlIGEgbGluZSBvZiB1dWVuY29kZWQgZGF0YSIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTk2LDcgKzIzNCw3IEBACiAgICAgUHlPYmplY3QgKnJ2OwogICAgIFB5X3NzaXplX3QgYXNjaWlfbGVuLCBiaW5fbGVuOwogCi0gICAgaWYgKCAhUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6YTJiX3V1IiwgJnBhc2NpaSkgKQorICAgIGlmICggIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOmEyYl91dSIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZwYXNjaWkpICkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXNjaWlfZGF0YSA9IHBhc2NpaS5idWY7CiAgICAgYXNjaWlfbGVuID0gcGFzY2lpLmxlbjsKQEAgLTM3MCw3ICs0MDgsNyBAQAogICAgIFB5X3NzaXplX3QgYXNjaWlfbGVuLCBiaW5fbGVuOwogICAgIGludCBxdWFkX3BvcyA9IDA7CiAKLSAgICBpZiAoICFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjphMmJfYmFzZTY0IiwgJnBhc2NpaSkgKQorICAgIGlmICggIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOmEyYl9iYXNlNjQiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmcGFzY2lpKSApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGFzY2lpX2RhdGEgPSBwYXNjaWkuYnVmOwogICAgIGFzY2lpX2xlbiA9IHBhc2NpaS5sZW47CkBAIC01NDYsNyArNTg0LDcgQEAKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBpbnQgZG9uZSA9IDA7CiAKLSAgICBpZiAoICFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjphMmJfaHF4IiwgJnBhc2NpaSkgKQorICAgIGlmICggIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOmEyYl9ocXgiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmcGFzY2lpKSApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGFzY2lpX2RhdGEgPSBwYXNjaWkuYnVmOwogICAgIGxlbiA9IHBhc2NpaS5sZW47CkBAIC0xMDc4LDEzICsxMTE2LDExIEBACiAKICAgICAvKiBtYWtlIGhleCB2ZXJzaW9uIG9mIHN0cmluZywgdGFrZW4gZnJvbSBzaGFtb2R1bGUuYyAqLwogICAgIGZvciAoaT1qPTA7IGkgPCBhcmdsZW47IGkrKykgewotICAgICAgICBjaGFyIGM7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKICAgICAgICAgYyA9IChhcmdidWZbaV0gPj4gNCkgJiAweGY7Ci0gICAgICAgIGMgPSAoYz45KSA/IGMrJ2EnLTEwIDogYyArICcwJzsKLSAgICAgICAgcmV0YnVmW2orK10gPSBjOworICAgICAgICByZXRidWZbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICAgICAgYyA9IGFyZ2J1ZltpXSAmIDB4ZjsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICByZXRidWZbaisrXSA9IGM7CisgICAgICAgIHJldGJ1ZltqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgIH0KICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYXJnKTsKICAgICByZXR1cm4gcmV0dmFsOwpAQCAtMTEyMSw3ICsxMTU3LDcgQEAKICAgICBjaGFyKiByZXRidWY7CiAgICAgUHlfc3NpemVfdCBpLCBqOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjphMmJfaGV4IiwgJnBhcmcpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6YTJiX2hleCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZwYXJnKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXJnYnVmID0gcGFyZy5idWY7CiAgICAgYXJnbGVuID0gcGFyZy5sZW47CkBAIC0xMTk5LDggKzEyMzUsOCBAQAogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZGF0YSIsICJoZWFkZXIiLCBOVUxMfTsKICAgICBpbnQgaGVhZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfGkiLCBrd2xpc3QsICZwZGF0YSwKLSAgICAgICAgICAmaGVhZGVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpOmEyYl9xcCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmcGRhdGEsICZoZWFkZXIpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBkYXRhID0gcGRhdGEuYnVmOwogICAgIGRhdGFsZW4gPSBwZGF0YS5sZW47CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2J6Mm1vZHVsZS5jIGIvTW9kdWxlcy9iejJtb2R1bGUuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmU5OWRmOS4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL2J6Mm1vZHVsZS5jCisrKyAvZGV2L251bGwKQEAgLTEsMjE5MyArMCwwIEBACi0vKgotCi1weXRob24tYnoyIC0gcHl0aG9uIGJ6MiBsaWJyYXJ5IGludGVyZmFjZQotCi1Db3B5cmlnaHQgKGMpIDIwMDIgIEd1c3Rhdm8gTmllbWV5ZXIgPG5pZW1leWVyQGNvbmVjdGl2YS5jb20+Ci1Db3B5cmlnaHQgKGMpIDIwMDIgIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBBbGwgUmlnaHRzIFJlc2VydmVkCi0KLSovCi0KLSNpbmNsdWRlICJQeXRob24uaCIKLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPGJ6bGliLmg+Ci0jaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCi0KLSNpZmRlZiBXSVRIX1RIUkVBRAotI2luY2x1ZGUgInB5dGhyZWFkLmgiCi0jZW5kaWYKLQotc3RhdGljIGNoYXIgX19hdXRob3JfX1tdID0KLSJUaGUgYnoyIHB5dGhvbiBtb2R1bGUgd2FzIHdyaXR0ZW4gYnk6XG5cCi1cblwKLSAgICBHdXN0YXZvIE5pZW1leWVyIDxuaWVtZXllckBjb25lY3RpdmEuY29tPlxuXAotIjsKLQotLyogT3VyIHZlcnkgb3duIG9mZl90LWxpa2UgdHlwZSwgNjQtYml0IGlmIHBvc3NpYmxlICovCi0vKiBjb3BpZWQgZnJvbSBPYmplY3RzL2ZpbGVvYmplY3QuYyAqLwotI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCi10eXBlZGVmIG9mZl90IFB5X29mZl90OwotI2VsaWYgU0laRU9GX09GRl9UID49IDgKLXR5cGVkZWYgb2ZmX3QgUHlfb2ZmX3Q7Ci0jZWxpZiBTSVpFT0ZfRlBPU19UID49IDgKLXR5cGVkZWYgZnBvc190IFB5X29mZl90OwotI2Vsc2UKLSNlcnJvciAiTGFyZ2UgZmlsZSBzdXBwb3J0LCBidXQgbmVpdGhlciBvZmZfdCBub3IgZnBvc190IGlzIGxhcmdlIGVub3VnaC4iCi0jZW5kaWYKLQotI2RlZmluZSBCVUYodikgUHlCeXRlc19BU19TVFJJTkcodikKLQotI2RlZmluZSBNT0RFX0NMT1NFRCAgIDAKLSNkZWZpbmUgTU9ERV9SRUFEICAgICAxCi0jZGVmaW5lIE1PREVfUkVBRF9FT0YgMgotI2RlZmluZSBNT0RFX1dSSVRFICAgIDMKLQotCi0jaWZuZGVmIEJaX0NPTkZJR19FUlJPUgotCi0jZGVmaW5lIEJaMl9ielJlYWQgYnpSZWFkCi0jZGVmaW5lIEJaMl9ielJlYWRPcGVuIGJ6UmVhZE9wZW4KLSNkZWZpbmUgQloyX2J6UmVhZENsb3NlIGJ6UmVhZENsb3NlCi0jZGVmaW5lIEJaMl9ieldyaXRlIGJ6V3JpdGUKLSNkZWZpbmUgQloyX2J6V3JpdGVPcGVuIGJ6V3JpdGVPcGVuCi0jZGVmaW5lIEJaMl9ieldyaXRlQ2xvc2UgYnpXcml0ZUNsb3NlCi0jZGVmaW5lIEJaMl9iekNvbXByZXNzIGJ6Q29tcHJlc3MKLSNkZWZpbmUgQloyX2J6Q29tcHJlc3NJbml0IGJ6Q29tcHJlc3NJbml0Ci0jZGVmaW5lIEJaMl9iekNvbXByZXNzRW5kIGJ6Q29tcHJlc3NFbmQKLSNkZWZpbmUgQloyX2J6RGVjb21wcmVzcyBiekRlY29tcHJlc3MKLSNkZWZpbmUgQloyX2J6RGVjb21wcmVzc0luaXQgYnpEZWNvbXByZXNzSW5pdAotI2RlZmluZSBCWjJfYnpEZWNvbXByZXNzRW5kIGJ6RGVjb21wcmVzc0VuZAotCi0jZW5kaWYgLyogISBCWl9DT05GSUdfRVJST1IgKi8KLQotCi0jaWZkZWYgV0lUSF9USFJFQUQKLSNkZWZpbmUgQUNRVUlSRV9MT0NLKG9iaikgZG8geyBcCi0gICAgaWYgKCFQeVRocmVhZF9hY3F1aXJlX2xvY2sob2JqLT5sb2NrLCAwKSkgeyBcCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMgXAotICAgICAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2sob2JqLT5sb2NrLCAxKTsgXAotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUyBcCi0gICAgfSB9IHdoaWxlKDApCi0jZGVmaW5lIFJFTEVBU0VfTE9DSyhvYmopIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhvYmotPmxvY2spCi0jZWxzZQotI2RlZmluZSBBQ1FVSVJFX0xPQ0sob2JqKQotI2RlZmluZSBSRUxFQVNFX0xPQ0sob2JqKQotI2VuZGlmCi0KLSNkZWZpbmUgTUlOKFgsIFkpICgoKFgpIDwgKFkpKSA/IChYKSA6IChZKSkKLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBTdHJ1Y3R1cmUgZGVmaW5pdGlvbnMuICovCi0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBQeU9iamVjdF9IRUFECi0gICAgRklMRSAqcmF3ZnA7Ci0KLSAgICBjaGFyKiBmX2J1ZjsgICAgICAgICAgICAgICAgLyogQWxsb2NhdGVkIHJlYWRhaGVhZCBidWZmZXIgKi8KLSAgICBjaGFyKiBmX2J1ZmVuZDsgICAgICAgICAgICAgLyogUG9pbnRzIGFmdGVyIGxhc3Qgb2NjdXBpZWQgcG9zaXRpb24gKi8KLSAgICBjaGFyKiBmX2J1ZnB0cjsgICAgICAgICAgICAgLyogQ3VycmVudCBidWZmZXIgcG9zaXRpb24gKi8KLQotICAgIEJaRklMRSAqZnA7Ci0gICAgaW50IG1vZGU7Ci0gICAgUHlfb2ZmX3QgcG9zOwotICAgIFB5X29mZl90IHNpemU7Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKLSNlbmRpZgotfSBCWjJGaWxlT2JqZWN0OwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgUHlPYmplY3RfSEVBRAotICAgIGJ6X3N0cmVhbSBienM7Ci0gICAgaW50IHJ1bm5pbmc7Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKLSNlbmRpZgotfSBCWjJDb21wT2JqZWN0OwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgUHlPYmplY3RfSEVBRAotICAgIGJ6X3N0cmVhbSBienM7Ci0gICAgaW50IHJ1bm5pbmc7Ci0gICAgUHlPYmplY3QgKnVudXNlZF9kYXRhOwotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7Ci0jZW5kaWYKLX0gQloyRGVjb21wT2JqZWN0OwotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIFV0aWxpdHkgZnVuY3Rpb25zLiAqLwotCi0vKiBSZWZ1c2UgcmVndWxhciBJL08gaWYgdGhlcmUncyBkYXRhIGluIHRoZSBpdGVyYXRpb24tYnVmZmVyLgotICogTWl4aW5nIHRoZW0gd291bGQgY2F1c2UgZGF0YSB0byBhcnJpdmUgb3V0IG9mIG9yZGVyLCBhcyB0aGUgcmVhZCoKLSAqIG1ldGhvZHMgZG9uJ3QgdXNlIHRoZSBpdGVyYXRpb24gYnVmZmVyLiAqLwotc3RhdGljIGludAotY2hlY2tfaXRlcmJ1ZmZlcmVkKEJaMkZpbGVPYmplY3QgKmYpCi17Ci0gICAgaWYgKGYtPmZfYnVmICE9IE5VTEwgJiYKLSAgICAgICAgKGYtPmZfYnVmZW5kIC0gZi0+Zl9idWZwdHIpID4gMCAmJgotICAgICAgICBmLT5mX2J1ZlswXSAhPSAnXDAnKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgIk1peGluZyBpdGVyYXRpb24gYW5kIHJlYWQgbWV0aG9kcyB3b3VsZCBsb3NlIGRhdGEiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIGludAotVXRpbF9DYXRjaEJaMkVycm9yKGludCBiemVycm9yKQotewotICAgIGludCByZXQgPSAwOwotICAgIHN3aXRjaChiemVycm9yKSB7Ci0gICAgICAgIGNhc2UgQlpfT0s6Ci0gICAgICAgIGNhc2UgQlpfU1RSRUFNX0VORDoKLSAgICAgICAgICAgIGJyZWFrOwotCi0jaWZkZWYgQlpfQ09ORklHX0VSUk9SCi0gICAgICAgIGNhc2UgQlpfQ09ORklHX0VSUk9SOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgYnoyIGxpYnJhcnkgd2FzIG5vdCBjb21waWxlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvcnJlY3RseSIpOwotICAgICAgICAgICAgcmV0ID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCi0KLSAgICAgICAgY2FzZSBCWl9QQVJBTV9FUlJPUjoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgYnoyIGxpYnJhcnkgaGFzIHJlY2VpdmVkIHdyb25nICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyIpOwotICAgICAgICAgICAgcmV0ID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQlpfTUVNX0VSUk9SOgotICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIHJldCA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEJaX0RBVEFfRVJST1I6Ci0gICAgICAgIGNhc2UgQlpfREFUQV9FUlJPUl9NQUdJQzoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAiaW52YWxpZCBkYXRhIHN0cmVhbSIpOwotICAgICAgICAgICAgcmV0ID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQlpfSU9fRVJST1I6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwgInVua25vd24gSU8gZXJyb3IiKTsKLSAgICAgICAgICAgIHJldCA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEJaX1VORVhQRUNURURfRU9GOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0VPRkVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21wcmVzc2VkIGZpbGUgZW5kZWQgYmVmb3JlIHRoZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvZ2ljYWwgZW5kLW9mLXN0cmVhbSB3YXMgZGV0ZWN0ZWQiKTsKLSAgICAgICAgICAgIHJldCA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEJaX1NFUVVFTkNFX0VSUk9SOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAid3Jvbmcgc2VxdWVuY2Ugb2YgYnoyIGxpYnJhcnkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tYW5kcyB1c2VkIik7Ci0gICAgICAgICAgICByZXQgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiByZXQ7Ci19Ci0KLSNpZiBCVUZTSVogPCA4MTkyCi0jZGVmaW5lIFNNQUxMQ0hVTksgODE5MgotI2Vsc2UKLSNkZWZpbmUgU01BTExDSFVOSyBCVUZTSVoKLSNlbmRpZgotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOm5ld19idWZmZXJzaXplKCkuICovCi1zdGF0aWMgc2l6ZV90Ci1VdGlsX05ld0J1ZmZlclNpemUoc2l6ZV90IGN1cnJlbnRzaXplKQotewotICAgIC8qIEV4cGFuZCB0aGUgYnVmZmVyIGJ5IGFuIGFtb3VudCBwcm9wb3J0aW9uYWwgdG8gdGhlIGN1cnJlbnQgc2l6ZSwKLSAgICAgICBnaXZpbmcgdXMgYW1vcnRpemVkIGxpbmVhci10aW1lIGJlaGF2aW9yLiBVc2UgYSBsZXNzLXRoYW4tZG91YmxlCi0gICAgICAgZ3Jvd3RoIGZhY3RvciB0byBhdm9pZCBleGNlc3NpdmUgYWxsb2NhdGlvbi4gKi8KLSAgICByZXR1cm4gY3VycmVudHNpemUgKyAoY3VycmVudHNpemUgPj4gMykgKyA2OwotfQotCi1zdGF0aWMgaW50Ci1VdGlsX0dyb3dCdWZmZXIoUHlPYmplY3QgKipidWYpCi17Ci0gICAgc2l6ZV90IHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKCpidWYpOwotICAgIHNpemVfdCBuZXdfc2l6ZSA9IFV0aWxfTmV3QnVmZmVyU2l6ZShzaXplKTsKLSAgICBpZiAobmV3X3NpemUgPiBzaXplKSB7Ci0gICAgICAgIHJldHVybiBfUHlCeXRlc19SZXNpemUoYnVmLCBuZXdfc2l6ZSk7Ci0gICAgfSBlbHNlIHsgIC8qIG92ZXJmbG93ICovCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0byBhbGxvY2F0ZSBidWZmZXIgLSBvdXRwdXQgdG9vIGxhcmdlIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci19Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6Z2V0X2xpbmUoKS4gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1VdGlsX0dldExpbmUoQloyRmlsZU9iamVjdCAqZiwgaW50IG4pCi17Ci0gICAgY2hhciBjOwotICAgIGNoYXIgKmJ1ZiwgKmVuZDsKLSAgICBzaXplX3QgdG90YWxfdl9zaXplOyAgICAgICAgLyogdG90YWwgIyBvZiBzbG90cyBpbiBidWZmZXIgKi8KLSAgICBzaXplX3QgdXNlZF92X3NpemU7ICAgICAgICAgLyogIyB1c2VkIHNsb3RzIGluIGJ1ZmZlciAqLwotICAgIHNpemVfdCBpbmNyZW1lbnQ7ICAgICAgIC8qIGFtb3VudCB0byBpbmNyZW1lbnQgdGhlIGJ1ZmZlciAqLwotICAgIFB5T2JqZWN0ICp2OwotICAgIGludCBiemVycm9yOwotICAgIGludCBieXRlc19yZWFkOwotCi0gICAgdG90YWxfdl9zaXplID0gbiA+IDAgPyBuIDogMTAwOwotICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgdG90YWxfdl9zaXplKTsKLSAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGJ1ZiA9IEJVRih2KTsKLSAgICBlbmQgPSBidWYgKyB0b3RhbF92X3NpemU7Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgZG8gewotICAgICAgICAgICAgYnl0ZXNfcmVhZCA9IEJaMl9ielJlYWQoJmJ6ZXJyb3IsIGYtPmZwLCAmYywgMSk7Ci0gICAgICAgICAgICBmLT5wb3MrKzsKLSAgICAgICAgICAgIGlmIChieXRlc19yZWFkID09IDApCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAqYnVmKysgPSBjOwotICAgICAgICB9IHdoaWxlIChiemVycm9yID09IEJaX09LICYmIGMgIT0gJ1xuJyAmJiBidWYgIT0gZW5kKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgewotICAgICAgICAgICAgZi0+c2l6ZSA9IGYtPnBvczsKLSAgICAgICAgICAgIGYtPm1vZGUgPSBNT0RFX1JFQURfRU9GOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZSBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGMgPT0gJ1xuJykKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAvKiBNdXN0IGJlIGJlY2F1c2UgYnVmID09IGVuZCAqLwotICAgICAgICBpZiAobiA+IDApCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgdXNlZF92X3NpemUgPSB0b3RhbF92X3NpemU7Ci0gICAgICAgIGluY3JlbWVudCA9IHRvdGFsX3Zfc2l6ZSA+PiAyOyAvKiBtaWxkIGV4cG9uZW50aWFsIGdyb3d0aCAqLwotICAgICAgICB0b3RhbF92X3NpemUgKz0gaW5jcmVtZW50OwotICAgICAgICBpZiAodG90YWxfdl9zaXplID4gSU5UX01BWCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgImxpbmUgaXMgbG9uZ2VyIHRoYW4gYSBQeXRob24gc3RyaW5nIGNhbiBob2xkIik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZ2LCB0b3RhbF92X3NpemUpIDwgMCkgewotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgYnVmID0gQlVGKHYpICsgdXNlZF92X3NpemU7Ci0gICAgICAgIGVuZCA9IEJVRih2KSArIHRvdGFsX3Zfc2l6ZTsKLSAgICB9Ci0KLSAgICB1c2VkX3Zfc2l6ZSA9IGJ1ZiAtIEJVRih2KTsKLSAgICBpZiAodXNlZF92X3NpemUgIT0gdG90YWxfdl9zaXplKSB7Ci0gICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnYsIHVzZWRfdl9zaXplKSA8IDApIHsKLSAgICAgICAgICAgIHYgPSBOVUxMOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB2OwotfQotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOmRyb3BfcmVhZGFoZWFkKCkuICovCi1zdGF0aWMgdm9pZAotVXRpbF9Ecm9wUmVhZEFoZWFkKEJaMkZpbGVPYmplY3QgKmYpCi17Ci0gICAgaWYgKGYtPmZfYnVmICE9IE5VTEwpIHsKLSAgICAgICAgUHlNZW1fRnJlZShmLT5mX2J1Zik7Ci0gICAgICAgIGYtPmZfYnVmID0gTlVMTDsKLSAgICB9Ci19Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6cmVhZGFoZWFkKCkuICovCi1zdGF0aWMgaW50Ci1VdGlsX1JlYWRBaGVhZChCWjJGaWxlT2JqZWN0ICpmLCBpbnQgYnVmc2l6ZSkKLXsKLSAgICBpbnQgY2h1bmtzaXplOwotICAgIGludCBiemVycm9yOwotCi0gICAgaWYgKGYtPmZfYnVmICE9IE5VTEwpIHsKLSAgICAgICAgaWYoKGYtPmZfYnVmZW5kIC0gZi0+Zl9idWZwdHIpID49IDEpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgVXRpbF9Ecm9wUmVhZEFoZWFkKGYpOwotICAgIH0KLSAgICBpZiAoZi0+bW9kZSA9PSBNT0RFX1JFQURfRU9GKSB7Ci0gICAgICAgIGYtPmZfYnVmcHRyID0gZi0+Zl9idWY7Ci0gICAgICAgIGYtPmZfYnVmZW5kID0gZi0+Zl9idWY7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBpZiAoKGYtPmZfYnVmID0gUHlNZW1fTWFsbG9jKGJ1ZnNpemUpKSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGNodW5rc2l6ZSA9IEJaMl9ielJlYWQoJmJ6ZXJyb3IsIGYtPmZwLCBmLT5mX2J1ZiwgYnVmc2l6ZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBmLT5wb3MgKz0gY2h1bmtzaXplOwotICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgZi0+c2l6ZSA9IGYtPnBvczsKLSAgICAgICAgZi0+bW9kZSA9IE1PREVfUkVBRF9FT0Y7Ci0gICAgfSBlbHNlIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgVXRpbF9Ecm9wUmVhZEFoZWFkKGYpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGYtPmZfYnVmcHRyID0gZi0+Zl9idWY7Ci0gICAgZi0+Zl9idWZlbmQgPSBmLT5mX2J1ZiArIGNodW5rc2l6ZTsKLSAgICByZXR1cm4gMDsKLX0KLQotLyogVGhpcyBpcyBhIGhhY2tlZCB2ZXJzaW9uIG9mIFB5dGhvbidzCi0gKiBmaWxlb2JqZWN0LmM6cmVhZGFoZWFkX2dldF9saW5lX3NraXAoKS4gKi8KLXN0YXRpYyBQeUJ5dGVzT2JqZWN0ICoKLVV0aWxfUmVhZEFoZWFkR2V0TGluZVNraXAoQloyRmlsZU9iamVjdCAqZiwgaW50IHNraXAsIGludCBidWZzaXplKQotewotICAgIFB5Qnl0ZXNPYmplY3QqIHM7Ci0gICAgY2hhciAqYnVmcHRyOwotICAgIGNoYXIgKmJ1ZjsKLSAgICBpbnQgbGVuOwotCi0gICAgaWYgKGYtPmZfYnVmID09IE5VTEwpCi0gICAgICAgIGlmIChVdGlsX1JlYWRBaGVhZChmLCBidWZzaXplKSA8IDApCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGxlbiA9IGYtPmZfYnVmZW5kIC0gZi0+Zl9idWZwdHI7Ci0gICAgaWYgKGxlbiA9PSAwKQotICAgICAgICByZXR1cm4gKFB5Qnl0ZXNPYmplY3QgKikKLSAgICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2tpcCk7Ci0gICAgYnVmcHRyID0gbWVtY2hyKGYtPmZfYnVmcHRyLCAnXG4nLCBsZW4pOwotICAgIGlmIChidWZwdHIgIT0gTlVMTCkgewotICAgICAgICBidWZwdHIrKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ291bnQgdGhlICdcbicgKi8KLSAgICAgICAgbGVuID0gYnVmcHRyIC0gZi0+Zl9idWZwdHI7Ci0gICAgICAgIHMgPSAoUHlCeXRlc09iamVjdCAqKQotICAgICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBza2lwK2xlbik7Ci0gICAgICAgIGlmIChzID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgbWVtY3B5KFB5Qnl0ZXNfQVNfU1RSSU5HKHMpK3NraXAsIGYtPmZfYnVmcHRyLCBsZW4pOwotICAgICAgICBmLT5mX2J1ZnB0ciA9IGJ1ZnB0cjsKLSAgICAgICAgaWYgKGJ1ZnB0ciA9PSBmLT5mX2J1ZmVuZCkKLSAgICAgICAgICAgIFV0aWxfRHJvcFJlYWRBaGVhZChmKTsKLSAgICB9IGVsc2UgewotICAgICAgICBidWZwdHIgPSBmLT5mX2J1ZnB0cjsKLSAgICAgICAgYnVmID0gZi0+Zl9idWY7Ci0gICAgICAgIGYtPmZfYnVmID0gTlVMTDsgICAgICAgICAgICAgICAgLyogRm9yY2UgbmV3IHJlYWRhaGVhZCBidWZmZXIgKi8KLSAgICAgICAgcyA9IFV0aWxfUmVhZEFoZWFkR2V0TGluZVNraXAoZiwgc2tpcCtsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZnNpemUgKyAoYnVmc2l6ZT4+MikpOwotICAgICAgICBpZiAocyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcocykrc2tpcCwgYnVmcHRyLCBsZW4pOwotICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7Ci0gICAgfQotICAgIHJldHVybiBzOwotfQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIE1ldGhvZHMgb2YgQloyRmlsZS4gKi8KLQotUHlEb2NfU1RSVkFSKEJaMkZpbGVfcmVhZF9fZG9jX18sCi0icmVhZChbc2l6ZV0pIC0+IHN0cmluZ1xuXAotXG5cCi1SZWFkIGF0IG1vc3Qgc2l6ZSB1bmNvbXByZXNzZWQgYnl0ZXMsIHJldHVybmVkIGFzIGEgc3RyaW5nLiBJZiB0aGUgc2l6ZVxuXAotYXJndW1lbnQgaXMgbmVnYXRpdmUgb3Igb21pdHRlZCwgcmVhZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC5cblwKLSIpOwotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOmZpbGVfcmVhZCgpLiAqLwotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfcmVhZChCWjJGaWxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBsb25nIGJ5dGVzcmVxdWVzdGVkID0gLTE7Ci0gICAgc2l6ZV90IGJ5dGVzcmVhZCwgYnVmZmVyc2l6ZSwgY2h1bmtzaXplOwotICAgIGludCBiemVycm9yOwotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bDpyZWFkIiwgJmJ5dGVzcmVxdWVzdGVkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgc3dpdGNoIChzZWxmLT5tb2RlKSB7Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEX0VPRjoKLSAgICAgICAgICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoIiIsIDApOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICBjYXNlIE1PREVfQ0xPU0VEOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIGlzIG5vdCByZWFkeSBmb3IgcmVhZGluZyIpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLQotICAgIC8qIHJlZnVzZSB0byBtaXggd2l0aCBmLm5leHQoKSAqLwotICAgIGlmIChjaGVja19pdGVyYnVmZmVyZWQoc2VsZikpCi0gICAgICAgIGdvdG8gY2xlYW51cDsKLQotICAgIGlmIChieXRlc3JlcXVlc3RlZCA8IDApCi0gICAgICAgIGJ1ZmZlcnNpemUgPSBVdGlsX05ld0J1ZmZlclNpemUoKHNpemVfdCkwKTsKLSAgICBlbHNlCi0gICAgICAgIGJ1ZmZlcnNpemUgPSBieXRlc3JlcXVlc3RlZDsKLSAgICBpZiAoYnVmZmVyc2l6ZSA+IElOVF9NQVgpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVxdWVzdGVkIG51bWJlciBvZiBieXRlcyBpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAibW9yZSB0aGFuIGEgUHl0aG9uIHN0cmluZyBjYW4gaG9sZCIpOwotICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgfQotICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCBidWZmZXJzaXplKTsKLSAgICBpZiAocmV0ID09IE5VTEwgfHwgYnVmZmVyc2l6ZSA9PSAwKQotICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgYnl0ZXNyZWFkID0gMDsKLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBjaHVua3NpemUgPSBCWjJfYnpSZWFkKCZiemVycm9yLCBzZWxmLT5mcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCVUYocmV0KStieXRlc3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyc2l6ZS1ieXRlc3JlYWQpOwotICAgICAgICBzZWxmLT5wb3MgKz0gY2h1bmtzaXplOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBieXRlc3JlYWQgKz0gY2h1bmtzaXplOwotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICBzZWxmLT5zaXplID0gc2VsZi0+cG9zOwotICAgICAgICAgICAgc2VsZi0+bW9kZSA9IE1PREVfUkVBRF9FT0Y7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmV0KTsKLSAgICAgICAgICAgIHJldCA9IE5VTEw7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ5dGVzcmVxdWVzdGVkIDwgMCkgewotICAgICAgICAgICAgYnVmZmVyc2l6ZSA9IFV0aWxfTmV3QnVmZmVyU2l6ZShidWZmZXJzaXplKTsKLSAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJldCwgYnVmZmVyc2l6ZSkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgcmV0ID0gTlVMTDsKLSAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoYnl0ZXNyZWFkICE9IGJ1ZmZlcnNpemUpIHsKLSAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmV0LCBieXRlc3JlYWQpIDwgMCkgewotICAgICAgICAgICAgcmV0ID0gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLQotY2xlYW51cDoKLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotUHlEb2NfU1RSVkFSKEJaMkZpbGVfcmVhZGxpbmVfX2RvY19fLAotInJlYWRsaW5lKFtzaXplXSkgLT4gc3RyaW5nXG5cCi1cblwKLVJldHVybiB0aGUgbmV4dCBsaW5lIGZyb20gdGhlIGZpbGUsIGFzIGEgc3RyaW5nLCByZXRhaW5pbmcgbmV3bGluZS5cblwKLUEgbm9uLW5lZ2F0aXZlIHNpemUgYXJndW1lbnQgd2lsbCBsaW1pdCB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG9cblwKLXJldHVybiAoYW4gaW5jb21wbGV0ZSBsaW5lIG1heSBiZSByZXR1cm5lZCB0aGVuKS4gUmV0dXJuIGFuIGVtcHR5XG5cCi1zdHJpbmcgYXQgRU9GLlxuXAotIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX3JlYWRsaW5lKEJaMkZpbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotICAgIGludCBzaXplaGludCA9IC0xOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpyZWFkbGluZSIsICZzaXplaGludCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIHN3aXRjaCAoc2VsZi0+bW9kZSkgewotICAgICAgICBjYXNlIE1PREVfUkVBRDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1PREVfUkVBRF9FT0Y6Ci0gICAgICAgICAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgY2FzZSBNT0RFX0NMT1NFRDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSBpcyBub3QgcmVhZHkgZm9yIHJlYWRpbmciKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICB9Ci0KLSAgICAvKiByZWZ1c2UgdG8gbWl4IHdpdGggZi5uZXh0KCkgKi8KLSAgICBpZiAoY2hlY2tfaXRlcmJ1ZmZlcmVkKHNlbGYpKQotICAgICAgICBnb3RvIGNsZWFudXA7Ci0KLSAgICBpZiAoc2l6ZWhpbnQgPT0gMCkKLSAgICAgICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7Ci0gICAgZWxzZQotICAgICAgICByZXQgPSBVdGlsX0dldExpbmUoc2VsZiwgKHNpemVoaW50IDwgMCkgPyAwIDogc2l6ZWhpbnQpOwotCi1jbGVhbnVwOgotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICByZXR1cm4gcmV0OwotfQotCi1QeURvY19TVFJWQVIoQloyRmlsZV9yZWFkbGluZXNfX2RvY19fLAotInJlYWRsaW5lcyhbc2l6ZV0pIC0+IGxpc3RcblwKLVxuXAotQ2FsbCByZWFkbGluZSgpIHJlcGVhdGVkbHkgYW5kIHJldHVybiBhIGxpc3Qgb2YgbGluZXMgcmVhZC5cblwKLVRoZSBvcHRpb25hbCBzaXplIGFyZ3VtZW50LCBpZiBnaXZlbiwgaXMgYW4gYXBwcm94aW1hdGUgYm91bmQgb24gdGhlXG5cCi10b3RhbCBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGxpbmVzIHJldHVybmVkLlxuXAotIik7Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6ZmlsZV9yZWFkbGluZXMoKS4gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX3JlYWRsaW5lcyhCWjJGaWxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBsb25nIHNpemVoaW50ID0gMDsKLSAgICBQeU9iamVjdCAqbGlzdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmxpbmU7Ci0gICAgY2hhciBzbWFsbF9idWZmZXJbU01BTExDSFVOS107Ci0gICAgY2hhciAqYnVmZmVyID0gc21hbGxfYnVmZmVyOwotICAgIHNpemVfdCBidWZmZXJzaXplID0gU01BTExDSFVOSzsKLSAgICBQeU9iamVjdCAqYmlnX2J1ZmZlciA9IE5VTEw7Ci0gICAgc2l6ZV90IG5maWxsZWQgPSAwOwotICAgIHNpemVfdCBucmVhZDsKLSAgICBzaXplX3QgdG90YWxyZWFkID0gMDsKLSAgICBjaGFyICpwLCAqcSwgKmVuZDsKLSAgICBpbnQgZXJyOwotICAgIGludCBzaG9ydHJlYWQgPSAwOwotICAgIGludCBiemVycm9yOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bDpyZWFkbGluZXMiLCAmc2l6ZWhpbnQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBzd2l0Y2ggKHNlbGYtPm1vZGUpIHsKLSAgICAgICAgY2FzZSBNT0RFX1JFQUQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNT0RFX1JFQURfRU9GOgotICAgICAgICAgICAgbGlzdCA9IFB5TGlzdF9OZXcoMCk7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIGNhc2UgTU9ERV9DTE9TRUQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgaXMgbm90IHJlYWR5IGZvciByZWFkaW5nIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgfQotCi0gICAgLyogcmVmdXNlIHRvIG1peCB3aXRoIGYubmV4dCgpICovCi0gICAgaWYgKGNoZWNrX2l0ZXJidWZmZXJlZChzZWxmKSkKLSAgICAgICAgZ290byBjbGVhbnVwOwotCi0gICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkKLSAgICAgICAgZ290byBjbGVhbnVwOwotCi0gICAgZm9yICg7OykgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIG5yZWFkID0gQloyX2J6UmVhZCgmYnplcnJvciwgc2VsZi0+ZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIrbmZpbGxlZCwgYnVmZmVyc2l6ZS1uZmlsbGVkKTsKLSAgICAgICAgc2VsZi0+cG9zICs9IG5yZWFkOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICBzZWxmLT5zaXplID0gc2VsZi0+cG9zOwotICAgICAgICAgICAgc2VsZi0+bW9kZSA9IE1PREVfUkVBRF9FT0Y7Ci0gICAgICAgICAgICBpZiAobnJlYWQgPT0gMCkgewotICAgICAgICAgICAgICAgIHNpemVoaW50ID0gMDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNob3J0cmVhZCA9IDE7Ci0gICAgICAgIH0gZWxzZSBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgIGVycm9yOgotICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOwotICAgICAgICAgICAgbGlzdCA9IE5VTEw7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIH0KLSAgICAgICAgdG90YWxyZWFkICs9IG5yZWFkOwotICAgICAgICBwID0gbWVtY2hyKGJ1ZmZlcituZmlsbGVkLCAnXG4nLCBucmVhZCk7Ci0gICAgICAgIGlmICghc2hvcnRyZWFkICYmIHAgPT0gTlVMTCkgewotICAgICAgICAgICAgLyogTmVlZCBhIGxhcmdlciBidWZmZXIgdG8gZml0IHRoaXMgbGluZSAqLwotICAgICAgICAgICAgbmZpbGxlZCArPSBucmVhZDsKLSAgICAgICAgICAgIGJ1ZmZlcnNpemUgKj0gMjsKLSAgICAgICAgICAgIGlmIChidWZmZXJzaXplID4gSU5UX01BWCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICJsaW5lIGlzIGxvbmdlciB0aGFuIGEgUHl0aG9uIHN0cmluZyBjYW4gaG9sZCIpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYmlnX2J1ZmZlciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgLyogQ3JlYXRlIHRoZSBiaWcgYnVmZmVyICovCi0gICAgICAgICAgICAgICAgYmlnX2J1ZmZlciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoCi0gICAgICAgICAgICAgICAgICAgIE5VTEwsIGJ1ZmZlcnNpemUpOwotICAgICAgICAgICAgICAgIGlmIChiaWdfYnVmZmVyID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgYnVmZmVyID0gUHlCeXRlc19BU19TVFJJTkcoYmlnX2J1ZmZlcik7Ci0gICAgICAgICAgICAgICAgbWVtY3B5KGJ1ZmZlciwgc21hbGxfYnVmZmVyLCBuZmlsbGVkKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIC8qIEdyb3cgdGhlIGJpZyBidWZmZXIgKi8KLSAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZiaWdfYnVmZmVyLCBidWZmZXJzaXplKSA8IDApewotICAgICAgICAgICAgICAgICAgICBiaWdfYnVmZmVyID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnVmZmVyID0gUHlCeXRlc19BU19TVFJJTkcoYmlnX2J1ZmZlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBlbmQgPSBidWZmZXIrbmZpbGxlZCtucmVhZDsKLSAgICAgICAgcSA9IGJ1ZmZlcjsKLSAgICAgICAgd2hpbGUgKHAgIT0gTlVMTCkgewotICAgICAgICAgICAgLyogUHJvY2VzcyBjb21wbGV0ZSBsaW5lcyAqLwotICAgICAgICAgICAgcCsrOwotICAgICAgICAgICAgbGluZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocSwgcC1xKTsKLSAgICAgICAgICAgIGlmIChsaW5lID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIGVyciA9IFB5TGlzdF9BcHBlbmQobGlzdCwgbGluZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobGluZSk7Ci0gICAgICAgICAgICBpZiAoZXJyICE9IDApCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIHEgPSBwOwotICAgICAgICAgICAgcCA9IG1lbWNocihxLCAnXG4nLCBlbmQtcSk7Ci0gICAgICAgIH0KLSAgICAgICAgLyogTW92ZSB0aGUgcmVtYWluaW5nIGluY29tcGxldGUgbGluZSB0byB0aGUgc3RhcnQgKi8KLSAgICAgICAgbmZpbGxlZCA9IGVuZC1xOwotICAgICAgICBtZW1tb3ZlKGJ1ZmZlciwgcSwgbmZpbGxlZCk7Ci0gICAgICAgIGlmIChzaXplaGludCA+IDApCi0gICAgICAgICAgICBpZiAodG90YWxyZWFkID49IChzaXplX3Qpc2l6ZWhpbnQpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChzaG9ydHJlYWQpIHsKLSAgICAgICAgICAgIHNpemVoaW50ID0gMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChuZmlsbGVkICE9IDApIHsKLSAgICAgICAgLyogUGFydGlhbCBsYXN0IGxpbmUgKi8KLSAgICAgICAgbGluZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmZmVyLCBuZmlsbGVkKTsKLSAgICAgICAgaWYgKGxpbmUgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGlmIChzaXplaGludCA+IDApIHsKLSAgICAgICAgICAgIC8qIE5lZWQgdG8gY29tcGxldGUgdGhlIGxhc3QgbGluZSAqLwotICAgICAgICAgICAgUHlPYmplY3QgKnJlc3QgPSBVdGlsX0dldExpbmUoc2VsZiwgMCk7Ci0gICAgICAgICAgICBpZiAocmVzdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpbmUpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeUJ5dGVzX0NvbmNhdCgmbGluZSwgcmVzdCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVzdCk7Ci0gICAgICAgICAgICBpZiAobGluZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgZXJyID0gUHlMaXN0X0FwcGVuZChsaXN0LCBsaW5lKTsKLSAgICAgICAgUHlfREVDUkVGKGxpbmUpOwotICAgICAgICBpZiAoZXJyICE9IDApCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQotICBjbGVhbnVwOgotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICBpZiAoYmlnX2J1ZmZlcikgewotICAgICAgICBQeV9ERUNSRUYoYmlnX2J1ZmZlcik7Ci0gICAgfQotICAgIHJldHVybiBsaXN0OwotfQotCi1QeURvY19TVFJWQVIoQloyRmlsZV93cml0ZV9fZG9jX18sCi0id3JpdGUoZGF0YSkgLT4gTm9uZVxuXAotXG5cCi1Xcml0ZSB0aGUgJ2RhdGEnIHN0cmluZyB0byBmaWxlLiBOb3RlIHRoYXQgZHVlIHRvIGJ1ZmZlcmluZywgY2xvc2UoKSBtYXlcblwKLWJlIG5lZWRlZCBiZWZvcmUgdGhlIGZpbGUgb24gZGlzayByZWZsZWN0cyB0aGUgZGF0YSB3cml0dGVuLlxuXAotIik7Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6ZmlsZV93cml0ZSgpLiAqLwotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfd3JpdGUoQloyRmlsZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgY2hhciAqYnVmOwotICAgIGludCBsZW47Ci0gICAgaW50IGJ6ZXJyb3I7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOndyaXRlIiwgJnBidWYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBidWYgPSBwYnVmLmJ1ZjsKLSAgICBsZW4gPSBwYnVmLmxlbjsKLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBzd2l0Y2ggKHNlbGYtPm1vZGUpIHsKLSAgICAgICAgY2FzZSBNT0RFX1dSSVRFOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBNT0RFX0NMT1NFRDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIGlzIG5vdCByZWFkeSBmb3Igd3JpdGluZyIpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBCWjJfYnpXcml0ZSAoJmJ6ZXJyb3IsIHNlbGYtPmZwLCBidWYsIGxlbik7Ci0gICAgc2VsZi0+cG9zICs9IGxlbjsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgfQotCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldCA9IFB5X05vbmU7Ci0KLWNsZWFudXA6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX3dyaXRlbGluZXNfX2RvY19fLAotIndyaXRlbGluZXMoc2VxdWVuY2Vfb2Zfc3RyaW5ncykgLT4gTm9uZVxuXAotXG5cCi1Xcml0ZSB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB0byB0aGUgZmlsZS4gTm90ZSB0aGF0IG5ld2xpbmVzIGFyZSBub3RcblwKLWFkZGVkLiBUaGUgc2VxdWVuY2UgY2FuIGJlIGFueSBpdGVyYWJsZSBvYmplY3QgcHJvZHVjaW5nIHN0cmluZ3MuIFRoaXMgaXNcblwKLWVxdWl2YWxlbnQgdG8gY2FsbGluZyB3cml0ZSgpIGZvciBlYWNoIHN0cmluZy5cblwKLSIpOwotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOmZpbGVfd3JpdGVsaW5lcygpLiAqLwotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfd3JpdGVsaW5lcyhCWjJGaWxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VxKQotewotI2RlZmluZSBDSFVOS1NJWkUgMTAwMAotICAgIFB5T2JqZWN0ICpsaXN0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqaXRlciA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmxpbmU7Ci0gICAgaW50IGksIGosIGluZGV4LCBsZW4sIGlzbGlzdDsKLSAgICBpbnQgYnplcnJvcjsKLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBzd2l0Y2ggKHNlbGYtPm1vZGUpIHsKLSAgICAgICAgY2FzZSBNT0RFX1dSSVRFOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBNT0RFX0NMT1NFRDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSBpcyBub3QgcmVhZHkgZm9yIHdyaXRpbmciKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgaXNsaXN0ID0gUHlMaXN0X0NoZWNrKHNlcSk7Ci0gICAgaWYgICghaXNsaXN0KSB7Ci0gICAgICAgIGl0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKHNlcSk7Ci0gICAgICAgIGlmIChpdGVyID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgIndyaXRlbGluZXMoKSByZXF1aXJlcyBhbiBpdGVyYWJsZSBhcmd1bWVudCIpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBsaXN0ID0gUHlMaXN0X05ldyhDSFVOS1NJWkUpOwotICAgICAgICBpZiAobGlzdCA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICAvKiBTdHJhdGVneTogc2x1cnAgQ0hVTktTSVpFIGxpbmVzIGludG8gYSBwcml2YXRlIGxpc3QsCi0gICAgICAgY2hlY2tpbmcgdGhhdCB0aGV5IGFyZSBhbGwgc3RyaW5ncywgdGhlbiB3cml0ZSB0aGF0IGxpc3QKLSAgICAgICB3aXRob3V0IGhvbGRpbmcgdGhlIGludGVycHJldGVyIGxvY2ssIHRoZW4gY29tZSBiYWNrIGZvciBtb3JlLiAqLwotICAgIGZvciAoaW5kZXggPSAwOyA7IGluZGV4ICs9IENIVU5LU0laRSkgewotICAgICAgICBpZiAoaXNsaXN0KSB7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKGxpc3QpOwotICAgICAgICAgICAgbGlzdCA9IFB5TGlzdF9HZXRTbGljZShzZXEsIGluZGV4LCBpbmRleCtDSFVOS1NJWkUpOwotICAgICAgICAgICAgaWYgKGxpc3QgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgaiA9IFB5TGlzdF9HRVRfU0laRShsaXN0KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBDSFVOS1NJWkU7IGorKykgewotICAgICAgICAgICAgICAgIGxpbmUgPSBQeUl0ZXJfTmV4dChpdGVyKTsKLSAgICAgICAgICAgICAgICBpZiAobGluZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5TGlzdF9TZXRJdGVtKGxpc3QsIGosIGxpbmUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChqID09IDApCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAvKiBDaGVjayB0aGF0IGFsbCBlbnRyaWVzIGFyZSBpbmRlZWQgYnl0ZSBzdHJpbmdzLiBJZiBub3QsCi0gICAgICAgICAgIGFwcGx5IHRoZSBzYW1lIHJ1bGVzIGFzIGZvciBmaWxlLndyaXRlKCkgYW5kCi0gICAgICAgICAgIGNvbnZlcnQgdGhlIHJldHMgdG8gc3RyaW5ncy4gVGhpcyBpcyBzbG93LCBidXQKLSAgICAgICAgICAgc2VlbXMgdG8gYmUgdGhlIG9ubHkgd2F5IHNpbmNlIGFsbCBjb252ZXJzaW9uIEFQSXMKLSAgICAgICAgICAgY291bGQgcG90ZW50aWFsbHkgZXhlY3V0ZSBQeXRob24gY29kZS4gKi8KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGo7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQeUxpc3RfR0VUX0lURU0obGlzdCwgaSk7Ci0gICAgICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2sodikpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpidWZmZXI7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcih2LCAmYnVmZmVyLCAmbGVuKSkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndyaXRlbGluZXMoKSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBiZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYSBzZXF1ZW5jZSBvZiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMgb2JqZWN0cyIpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBsaW5lID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbik7Ci0gICAgICAgICAgICAgICAgaWYgKGxpbmUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGxpc3QsIGksIGxpbmUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLyogU2luY2Ugd2UgYXJlIHJlbGVhc2luZyB0aGUgZ2xvYmFsIGxvY2ssIHRoZQotICAgICAgICAgICBmb2xsb3dpbmcgY29kZSBtYXkgKm5vdCogZXhlY3V0ZSBQeXRob24gY29kZS4gKi8KLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgajsgaSsrKSB7Ci0gICAgICAgICAgICBsaW5lID0gUHlMaXN0X0dFVF9JVEVNKGxpc3QsIGkpOwotICAgICAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShsaW5lKTsKLSAgICAgICAgICAgIEJaMl9ieldyaXRlICgmYnplcnJvciwgc2VsZi0+ZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcobGluZSksIGxlbik7Ci0gICAgICAgICAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgICAgIFB5X0JMT0NLX1RIUkVBRFMKLSAgICAgICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgIGlmIChqIDwgQ0hVTktTSVpFKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldCA9IFB5X05vbmU7Ci0KLSAgZXJyb3I6Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIFB5X1hERUNSRUYobGlzdCk7Ci0gICAgUHlfWERFQ1JFRihpdGVyKTsKLSAgICByZXR1cm4gcmV0OwotI3VuZGVmIENIVU5LU0laRQotfQotCi1QeURvY19TVFJWQVIoQloyRmlsZV9zZWVrX19kb2NfXywKLSJzZWVrKG9mZnNldCBbLCB3aGVuY2VdKSAtPiBOb25lXG5cCi1cblwKLU1vdmUgdG8gbmV3IGZpbGUgcG9zaXRpb24uIEFyZ3VtZW50IG9mZnNldCBpcyBhIGJ5dGUgY291bnQuIE9wdGlvbmFsXG5cCi1hcmd1bWVudCB3aGVuY2UgZGVmYXVsdHMgdG8gMCAob2Zmc2V0IGZyb20gc3RhcnQgb2YgZmlsZSwgb2Zmc2V0XG5cCi1zaG91bGQgYmUgPj0gMCk7IG90aGVyIHZhbHVlcyBhcmUgMSAobW92ZSByZWxhdGl2ZSB0byBjdXJyZW50IHBvc2l0aW9uLFxuXAotcG9zaXRpdmUgb3IgbmVnYXRpdmUpLCBhbmQgMiAobW92ZSByZWxhdGl2ZSB0byBlbmQgb2YgZmlsZSwgdXN1YWxseVxuXAotbmVnYXRpdmUsIGFsdGhvdWdoIG1hbnkgcGxhdGZvcm1zIGFsbG93IHNlZWtpbmcgYmV5b25kIHRoZSBlbmQgb2YgYSBmaWxlKS5cblwKLVxuXAotTm90ZSB0aGF0IHNlZWtpbmcgb2YgYnoyIGZpbGVzIGlzIGVtdWxhdGVkLCBhbmQgZGVwZW5kaW5nIG9uIHRoZSBwYXJhbWV0ZXJzXG5cCi10aGUgb3BlcmF0aW9uIG1heSBiZSBleHRyZW1lbHkgc2xvdy5cblwKLSIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV9zZWVrKEJaMkZpbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGludCB3aGVyZSA9IDA7Ci0gICAgUHlPYmplY3QgKm9mZm9iajsKLSAgICBQeV9vZmZfdCBvZmZzZXQ7Ci0gICAgY2hhciBzbWFsbF9idWZmZXJbU01BTExDSFVOS107Ci0gICAgY2hhciAqYnVmZmVyID0gc21hbGxfYnVmZmVyOwotICAgIHNpemVfdCBidWZmZXJzaXplID0gU01BTExDSFVOSzsKLSAgICBQeV9vZmZfdCBieXRlc3JlYWQgPSAwOwotICAgIHNpemVfdCByZWFkc2l6ZTsKLSAgICBpbnQgY2h1bmtzaXplOwotICAgIGludCBiemVycm9yOwotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6c2VlayIsICZvZmZvYmosICZ3aGVyZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCi0gICAgb2Zmc2V0ID0gUHlMb25nX0FzTG9uZyhvZmZvYmopOwotI2Vsc2UKLSAgICBvZmZzZXQgPSBQeUxvbmdfQ2hlY2sob2Zmb2JqKSA/Ci0gICAgICAgIFB5TG9uZ19Bc0xvbmdMb25nKG9mZm9iaikgOiBQeUxvbmdfQXNMb25nKG9mZm9iaik7Ci0jZW5kaWYKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgVXRpbF9Ecm9wUmVhZEFoZWFkKHNlbGYpOwotICAgIHN3aXRjaCAoc2VsZi0+bW9kZSkgewotICAgICAgICBjYXNlIE1PREVfUkVBRDoKLSAgICAgICAgY2FzZSBNT0RFX1JFQURfRU9GOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBNT0RFX0NMT1NFRDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWVrIHdvcmtzIG9ubHkgd2hpbGUgcmVhZGluZyIpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLQotICAgIGlmICh3aGVyZSA9PSAyKSB7Ci0gICAgICAgIGlmIChzZWxmLT5zaXplID09IC0xKSB7Ci0gICAgICAgICAgICBhc3NlcnQoc2VsZi0+bW9kZSAhPSBNT0RFX1JFQURfRU9GKTsKLSAgICAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICAgICAgY2h1bmtzaXplID0gQloyX2J6UmVhZCgmYnplcnJvciwgc2VsZi0+ZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIsIGJ1ZmZlcnNpemUpOwotICAgICAgICAgICAgICAgIHNlbGYtPnBvcyArPSBjaHVua3NpemU7Ci0gICAgICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgICAgICAgICAgICAgIGJ5dGVzcmVhZCArPSBjaHVua3NpemU7Ci0gICAgICAgICAgICAgICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgewotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2VsZi0+bW9kZSA9IE1PREVfUkVBRF9FT0Y7Ci0gICAgICAgICAgICBzZWxmLT5zaXplID0gc2VsZi0+cG9zOwotICAgICAgICAgICAgYnl0ZXNyZWFkID0gMDsKLSAgICAgICAgfQotICAgICAgICBvZmZzZXQgPSBzZWxmLT5zaXplICsgb2Zmc2V0OwotICAgIH0gZWxzZSBpZiAod2hlcmUgPT0gMSkgewotICAgICAgICBvZmZzZXQgPSBzZWxmLT5wb3MgKyBvZmZzZXQ7Ci0gICAgfQotCi0gICAgLyogQmVmb3JlIGdldHRpbmcgaGVyZSwgb2Zmc2V0IG11c3QgYmUgdGhlIGFic29sdXRlIHBvc2l0aW9uIHRoZSBmaWxlCi0gICAgICogcG9pbnRlciBzaG91bGQgYmUgc2V0IHRvLiAqLwotCi0gICAgaWYgKG9mZnNldCA+PSBzZWxmLT5wb3MpIHsKLSAgICAgICAgLyogd2UgY2FuIG1vdmUgZm9yd2FyZCAqLwotICAgICAgICBvZmZzZXQgLT0gc2VsZi0+cG9zOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIHdlIGNhbm5vdCBtb3ZlIGJhY2ssIHNvIHJld2luZCB0aGUgc3RyZWFtICovCi0gICAgICAgIEJaMl9ielJlYWRDbG9zZSgmYnplcnJvciwgc2VsZi0+ZnApOwotICAgICAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICB9Ci0gICAgICAgIHJld2luZChzZWxmLT5yYXdmcCk7Ci0gICAgICAgIHNlbGYtPnBvcyA9IDA7Ci0gICAgICAgIHNlbGYtPmZwID0gQloyX2J6UmVhZE9wZW4oJmJ6ZXJyb3IsIHNlbGYtPnJhd2ZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIE5VTEwsIDApOwotICAgICAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICB9Ci0gICAgICAgIHNlbGYtPm1vZGUgPSBNT0RFX1JFQUQ7Ci0gICAgfQotCi0gICAgaWYgKG9mZnNldCA8PSAwIHx8IHNlbGYtPm1vZGUgPT0gTU9ERV9SRUFEX0VPRikKLSAgICAgICAgZ290byBleGl0OwotCi0gICAgLyogQmVmb3JlIGdldHRpbmcgaGVyZSwgb2Zmc2V0IG11c3QgYmUgc2V0IHRvIHRoZSBudW1iZXIgb2YgYnl0ZXMKLSAgICAgKiB0byB3YWxrIGZvcndhcmQuICovCi0gICAgZm9yICg7OykgewotICAgICAgICBpZiAob2Zmc2V0LWJ5dGVzcmVhZCA+IGJ1ZmZlcnNpemUpCi0gICAgICAgICAgICByZWFkc2l6ZSA9IGJ1ZmZlcnNpemU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIC8qIG9mZnNldCBtaWdodCBiZSB3aWRlciB0aGF0IHJlYWRzaXplLCBidXQgdGhlIHJlc3VsdAotICAgICAgICAgICAgICogb2YgdGhlIHN1YnRyYWN0aW9uIGlzIGJvdW5kIGJ5IGJ1ZmZlcnNpemUgKHNlZSB0aGUKLSAgICAgICAgICAgICAqIGNvbmRpdGlvbiBhYm92ZSkuIGJ1ZmZlcnNpemUgaXMgODE5Mi4gKi8KLSAgICAgICAgICAgIHJlYWRzaXplID0gKHNpemVfdCkob2Zmc2V0LWJ5dGVzcmVhZCk7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgY2h1bmtzaXplID0gQloyX2J6UmVhZCgmYnplcnJvciwgc2VsZi0+ZnAsIGJ1ZmZlciwgcmVhZHNpemUpOwotICAgICAgICBzZWxmLT5wb3MgKz0gY2h1bmtzaXplOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBieXRlc3JlYWQgKz0gY2h1bmtzaXplOwotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICBzZWxmLT5zaXplID0gc2VsZi0+cG9zOwotICAgICAgICAgICAgc2VsZi0+bW9kZSA9IE1PREVfUkVBRF9FT0Y7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ5dGVzcmVhZCA9PSBvZmZzZXQpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLWV4aXQ6Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldCA9IFB5X05vbmU7Ci0KLWNsZWFudXA6Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX3RlbGxfX2RvY19fLAotInRlbGwoKSAtPiBpbnRcblwKLVxuXAotUmV0dXJuIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24sIGFuIGludGVnZXIgKG1heSBiZSBhIGxvbmcgaW50ZWdlcikuXG5cCi0iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfdGVsbChCWjJGaWxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLQotICAgIGlmIChzZWxmLT5tb2RlID09IE1PREVfQ0xPU0VEKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLQotI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCi0gICAgcmV0ID0gUHlMb25nX0Zyb21Mb25nKHNlbGYtPnBvcyk7Ci0jZWxzZQotICAgIHJldCA9IFB5TG9uZ19Gcm9tTG9uZ0xvbmcoc2VsZi0+cG9zKTsKLSNlbmRpZgotCi1jbGVhbnVwOgotICAgIHJldHVybiByZXQ7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX2Nsb3NlX19kb2NfXywKLSJjbG9zZSgpIC0+IE5vbmUgb3IgKHBlcmhhcHMpIGFuIGludGVnZXJcblwKLVxuXAotQ2xvc2UgdGhlIGZpbGUuIFNldHMgZGF0YSBhdHRyaWJ1dGUgLmNsb3NlZCB0byB0cnVlLiBBIGNsb3NlZCBmaWxlXG5cCi1jYW5ub3QgYmUgdXNlZCBmb3IgZnVydGhlciBJL08gb3BlcmF0aW9ucy4gY2xvc2UoKSBtYXkgYmUgY2FsbGVkIG1vcmVcblwKLXRoYW4gb25jZSB3aXRob3V0IGVycm9yLlxuXAotIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX2Nsb3NlKEJaMkZpbGVPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgaW50IGJ6ZXJyb3IgPSBCWl9PSzsKLQotICAgIGlmIChzZWxmLT5tb2RlID09IE1PREVfQ0xPU0VEKSB7Ci0gICAgICAgIFB5X1JFVFVSTl9OT05FOwotICAgIH0KLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBzd2l0Y2ggKHNlbGYtPm1vZGUpIHsKLSAgICAgICAgY2FzZSBNT0RFX1JFQUQ6Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEX0VPRjoKLSAgICAgICAgICAgIEJaMl9ielJlYWRDbG9zZSgmYnplcnJvciwgc2VsZi0+ZnApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTU9ERV9XUklURToKLSAgICAgICAgICAgIEJaMl9ieldyaXRlQ2xvc2UoJmJ6ZXJyb3IsIHNlbGYtPmZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBOVUxMLCBOVUxMKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBzZWxmLT5tb2RlID0gTU9ERV9DTE9TRUQ7Ci0gICAgZmNsb3NlKHNlbGYtPnJhd2ZwKTsKLSAgICBzZWxmLT5yYXdmcCA9IE5VTEw7Ci0gICAgaWYgKGJ6ZXJyb3IgPT0gQlpfT0spIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXQgPSBQeV9Ob25lOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgIH0KLQotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICByZXR1cm4gcmV0OwotfQotCi1QeURvY19TVFJWQVIoQloyRmlsZV9lbnRlcl9kb2MsCi0iX19lbnRlcl9fKCkgLT4gc2VsZi4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfZW50ZXIoQloyRmlsZU9iamVjdCAqc2VsZikKLXsKLSAgICBpZiAoc2VsZi0+bW9kZSA9PSBNT0RFX0NMT1NFRCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKSBzZWxmOwotfQotCi1QeURvY19TVFJWQVIoQloyRmlsZV9leGl0X2RvYywKLSJfX2V4aXRfXygqZXhjaW5mbykgLT4gTm9uZS4gIENsb3NlcyB0aGUgZmlsZS4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfZXhpdChCWjJGaWxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKikgc2VsZiwgImNsb3NlIiwgTlVMTCk7Ci0gICAgaWYgKCFyZXQpCi0gICAgICAgIC8qIElmIGVycm9yIG9jY3VycmVkLCBwYXNzIHRocm91Z2ggKi8KLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfREVDUkVGKHJldCk7Ci0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLQotc3RhdGljIFB5T2JqZWN0ICpCWjJGaWxlX2dldGl0ZXIoQloyRmlsZU9iamVjdCAqc2VsZik7Ci0KLXN0YXRpYyBQeU1ldGhvZERlZiBCWjJGaWxlX21ldGhvZHNbXSA9IHsKLSAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pQloyRmlsZV9yZWFkLCBNRVRIX1ZBUkFSR1MsIEJaMkZpbGVfcmVhZF9fZG9jX199LAotICAgIHsicmVhZGxpbmUiLCAoUHlDRnVuY3Rpb24pQloyRmlsZV9yZWFkbGluZSwgTUVUSF9WQVJBUkdTLCBCWjJGaWxlX3JlYWRsaW5lX19kb2NfX30sCi0gICAgeyJyZWFkbGluZXMiLCAoUHlDRnVuY3Rpb24pQloyRmlsZV9yZWFkbGluZXMsIE1FVEhfVkFSQVJHUywgQloyRmlsZV9yZWFkbGluZXNfX2RvY19ffSwKLSAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKUJaMkZpbGVfd3JpdGUsIE1FVEhfVkFSQVJHUywgQloyRmlsZV93cml0ZV9fZG9jX199LAotICAgIHsid3JpdGVsaW5lcyIsIChQeUNGdW5jdGlvbilCWjJGaWxlX3dyaXRlbGluZXMsIE1FVEhfTywgQloyRmlsZV93cml0ZWxpbmVzX19kb2NfX30sCi0gICAgeyJzZWVrIiwgKFB5Q0Z1bmN0aW9uKUJaMkZpbGVfc2VlaywgTUVUSF9WQVJBUkdTLCBCWjJGaWxlX3NlZWtfX2RvY19ffSwKLSAgICB7InRlbGwiLCAoUHlDRnVuY3Rpb24pQloyRmlsZV90ZWxsLCBNRVRIX05PQVJHUywgQloyRmlsZV90ZWxsX19kb2NfX30sCi0gICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilCWjJGaWxlX2Nsb3NlLCBNRVRIX05PQVJHUywgQloyRmlsZV9jbG9zZV9fZG9jX199LAotICAgIHsiX19lbnRlcl9fIiwgKFB5Q0Z1bmN0aW9uKUJaMkZpbGVfZW50ZXIsIE1FVEhfTk9BUkdTLCBCWjJGaWxlX2VudGVyX2RvY30sCi0gICAgeyJfX2V4aXRfXyIsIChQeUNGdW5jdGlvbilCWjJGaWxlX2V4aXQsIE1FVEhfVkFSQVJHUywgQloyRmlsZV9leGl0X2RvY30sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KLX07Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBHZXR0ZXJzIGFuZCBzZXR0ZXJzIG9mIEJaMkZpbGUuICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX2dldF9jbG9zZWQoQloyRmlsZU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLXsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNlbGYtPm1vZGUgPT0gTU9ERV9DTE9TRUQpOwotfQotCi1zdGF0aWMgUHlHZXRTZXREZWYgQloyRmlsZV9nZXRzZXRbXSA9IHsKLSAgICB7ImNsb3NlZCIsIChnZXR0ZXIpQloyRmlsZV9nZXRfY2xvc2VkLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAiVHJ1ZSBpZiB0aGUgZmlsZSBpcyBjbG9zZWQifSwKLSAgICB7TlVMTH0gICAgICAvKiBTZW50aW5lbCAqLwotfTsKLQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIFNsb3QgZGVmaW5pdGlvbnMgZm9yIEJaMkZpbGVfVHlwZS4gKi8KLQotc3RhdGljIGludAotQloyRmlsZV9pbml0KEJaMkZpbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlsZW5hbWUiLCAibW9kZSIsICJidWZmZXJpbmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcHJlc3NsZXZlbCIsIDB9OwotICAgIFB5T2JqZWN0ICpuYW1lX29iaiA9IE5VTEw7Ci0gICAgY2hhciAqbmFtZTsKLSAgICBjaGFyICptb2RlID0gInIiOwotICAgIGludCBidWZmZXJpbmcgPSAtMTsKLSAgICBpbnQgY29tcHJlc3NsZXZlbCA9IDk7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0gICAgaW50IG1vZGVfY2hhciA9IDA7Ci0KLSAgICBzZWxmLT5zaXplID0gLTE7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxzaWk6QloyRmlsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZuYW1lX29iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbW9kZSwgJmJ1ZmZlcmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tcHJlc3NsZXZlbCkpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIG5hbWUgPSBQeUJ5dGVzX0FzU3RyaW5nKG5hbWVfb2JqKTsKLSAgICBpZiAoY29tcHJlc3NsZXZlbCA8IDEgfHwgY29tcHJlc3NsZXZlbCA+IDkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiY29tcHJlc3NsZXZlbCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgOSIpOwotICAgICAgICBQeV9ERUNSRUYobmFtZV9vYmopOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgZm9yICg7OykgewotICAgICAgICBpbnQgZXJyb3IgPSAwOwotICAgICAgICBzd2l0Y2ggKCptb2RlKSB7Ci0gICAgICAgICAgICBjYXNlICdyJzoKLSAgICAgICAgICAgIGNhc2UgJ3cnOgotICAgICAgICAgICAgICAgIGlmIChtb2RlX2NoYXIpCi0gICAgICAgICAgICAgICAgICAgIGVycm9yID0gMTsKLSAgICAgICAgICAgICAgICBtb2RlX2NoYXIgPSAqbW9kZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgY2FzZSAnYic6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZXJyb3IgPSAxOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbW9kZSBjaGFyICVjIiwgKm1vZGUpOwotICAgICAgICAgICAgUHlfREVDUkVGKG5hbWVfb2JqKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBtb2RlKys7Ci0gICAgICAgIGlmICgqbW9kZSA9PSAnXDAnKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKG1vZGVfY2hhciA9PSAwKSB7Ci0gICAgICAgIG1vZGVfY2hhciA9ICdyJzsKLSAgICB9Ci0KLSAgICBtb2RlID0gKG1vZGVfY2hhciA9PSAncicpID8gInJiIiA6ICJ3YiI7Ci0KLSAgICBzZWxmLT5yYXdmcCA9IGZvcGVuKG5hbWUsIG1vZGUpOwotICAgIFB5X0RFQ1JFRihuYW1lX29iaik7Ci0gICAgaWYgKHNlbGYtPnJhd2ZwID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIC8qIFhYWCBJZ25vcmUgYnVmZmVyaW5nICovCi0KLSAgICAvKiBGcm9tIG5vdyBvbiwgd2UgaGF2ZSBzdHVmZiB0byBkZWFsbG9jLCBzbyBqdW1wIHRvIGVycm9yIGxhYmVsCi0gICAgICogaW5zdGVhZCBvZiByZXR1cm5pbmcgKi8KLQotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKLSAgICBpZiAoIXNlbGYtPmxvY2spIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLCAidW5hYmxlIHRvIGFsbG9jYXRlIGxvY2siKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmIChtb2RlX2NoYXIgPT0gJ3InKQotICAgICAgICBzZWxmLT5mcCA9IEJaMl9ielJlYWRPcGVuKCZiemVycm9yLCBzZWxmLT5yYXdmcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCBOVUxMLCAwKTsKLSAgICBlbHNlCi0gICAgICAgIHNlbGYtPmZwID0gQloyX2J6V3JpdGVPcGVuKCZiemVycm9yLCBzZWxmLT5yYXdmcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NsZXZlbCwgMCwgMCk7Ci0KLSAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgc2VsZi0+bW9kZSA9IChtb2RlX2NoYXIgPT0gJ3InKSA/IE1PREVfUkVBRCA6IE1PREVfV1JJVEU7Ci0KLSAgICByZXR1cm4gMDsKLQotZXJyb3I6Ci0gICAgZmNsb3NlKHNlbGYtPnJhd2ZwKTsKLSAgICBzZWxmLT5yYXdmcCA9IE5VTEw7Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBpZiAoc2VsZi0+bG9jaykgewotICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7Ci0gICAgICAgIHNlbGYtPmxvY2sgPSBOVUxMOwotICAgIH0KLSNlbmRpZgotICAgIHJldHVybiAtMTsKLX0KLQotc3RhdGljIHZvaWQKLUJaMkZpbGVfZGVhbGxvYyhCWjJGaWxlT2JqZWN0ICpzZWxmKQotewotICAgIGludCBiemVycm9yOwotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgaWYgKHNlbGYtPmxvY2spCi0gICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKLSNlbmRpZgotICAgIHN3aXRjaCAoc2VsZi0+bW9kZSkgewotICAgICAgICBjYXNlIE1PREVfUkVBRDoKLSAgICAgICAgY2FzZSBNT0RFX1JFQURfRU9GOgotICAgICAgICAgICAgQloyX2J6UmVhZENsb3NlKCZiemVycm9yLCBzZWxmLT5mcCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNT0RFX1dSSVRFOgotICAgICAgICAgICAgQloyX2J6V3JpdGVDbG9zZSgmYnplcnJvciwgc2VsZi0+ZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIE5VTEwsIE5VTEwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIFV0aWxfRHJvcFJlYWRBaGVhZChzZWxmKTsKLSAgICBpZiAoc2VsZi0+cmF3ZnAgIT0gTlVMTCkKLSAgICAgICAgZmNsb3NlKHNlbGYtPnJhd2ZwKTsKLSAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOwotfQotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOmZpbGVfZ2V0aXRlcigpLiAqLwotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfZ2V0aXRlcihCWjJGaWxlT2JqZWN0ICpzZWxmKQotewotICAgIGlmIChzZWxmLT5tb2RlID09IE1PREVfQ0xPU0VEKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0lOQ1JFRigoUHlPYmplY3QqKXNlbGYpOwotICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwotfQotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOmZpbGVfaXRlcm5leHQoKS4gKi8KLSNkZWZpbmUgUkVBREFIRUFEX0JVRlNJWkUgODE5Mgotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfaXRlcm5leHQoQloyRmlsZU9iamVjdCAqc2VsZikKLXsKLSAgICBQeUJ5dGVzT2JqZWN0KiByZXQ7Ci0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIGlmIChzZWxmLT5tb2RlID09IE1PREVfQ0xPU0VEKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0ID0gVXRpbF9SZWFkQWhlYWRHZXRMaW5lU2tpcChzZWxmLCAwLCBSRUFEQUhFQURfQlVGU0laRSk7Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIGlmIChyZXQgPT0gTlVMTCB8fCBQeUJ5dGVzX0dFVF9TSVpFKHJldCkgPT0gMCkgewotICAgICAgICBQeV9YREVDUkVGKHJldCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gKFB5T2JqZWN0ICopcmV0OwotfQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIEJaMkZpbGVfVHlwZSBkZWZpbml0aW9uLiAqLwotCi1QeURvY19WQVIoQloyRmlsZV9fZG9jX18pID0KLVB5RG9jX1NUUigKLSJCWjJGaWxlKG5hbWUgWywgbW9kZT0ncicsIGJ1ZmZlcmluZz0wLCBjb21wcmVzc2xldmVsPTldKSAtPiBmaWxlIG9iamVjdFxuXAotXG5cCi1PcGVuIGEgYnoyIGZpbGUuIFRoZSBtb2RlIGNhbiBiZSAncicgb3IgJ3cnLCBmb3IgcmVhZGluZyAoZGVmYXVsdCkgb3JcblwKLXdyaXRpbmcuIFdoZW4gb3BlbmVkIGZvciB3cml0aW5nLCB0aGUgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgaWYgaXQgZG9lc24ndFxuXAotZXhpc3QsIGFuZCB0cnVuY2F0ZWQgb3RoZXJ3aXNlLiBJZiB0aGUgYnVmZmVyaW5nIGFyZ3VtZW50IGlzIGdpdmVuLCAwIG1lYW5zXG5cCi11bmJ1ZmZlcmVkLCBhbmQgbGFyZ2VyIG51bWJlcnMgc3BlY2lmeSB0aGUgYnVmZmVyIHNpemUuIElmIGNvbXByZXNzbGV2ZWxcblwKLWlzIGdpdmVuLCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgOS5cblwKLURhdGEgcmVhZCBpcyBhbHdheXMgcmV0dXJuZWQgaW4gYnl0ZXM7IGRhdGEgd3JpdHRlbiBvdWdodCB0byBiZSBieXRlcy5cblwKLSIpOwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IEJaMkZpbGVfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiYnoyLkJaMkZpbGUiLCAgICAgICAgICAgICAgLyp0cF9uYW1lKi8KLSAgICBzaXplb2YoQloyRmlsZU9iamVjdCksICAgICAgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KLSAgICAoZGVzdHJ1Y3RvcilCWjJGaWxlX2RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwvKnRwX2dldGF0dHJvKi8KLSAgICBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciwvKnRwX3NldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUfFB5X1RQRkxBR1NfQkFTRVRZUEUsIC8qdHBfZmxhZ3MqLwotICAgIEJaMkZpbGVfX2RvY19fLCAgICAgICAgIC8qdHBfZG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3RyYXZlcnNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KLSAgICAoZ2V0aXRlcmZ1bmMpQloyRmlsZV9nZXRpdGVyLCAvKnRwX2l0ZXIqLwotICAgIChpdGVybmV4dGZ1bmMpQloyRmlsZV9pdGVybmV4dCwgLyp0cF9pdGVybmV4dCovCi0gICAgQloyRmlsZV9tZXRob2RzLCAgICAgICAgLyp0cF9tZXRob2RzKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9tZW1iZXJzKi8KLSAgICBCWjJGaWxlX2dldHNldCwgICAgICAgICAvKnRwX2dldHNldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9iYXNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3QqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3JfZ2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX3NldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0b2Zmc2V0Ki8KLSAgICAoaW5pdHByb2MpQloyRmlsZV9pbml0LCAvKnRwX2luaXQqLwotICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgIC8qdHBfYWxsb2MqLwotICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgIC8qdHBfbmV3Ki8KLSAgICBQeU9iamVjdF9GcmVlLCAgICAgICAgICAvKnRwX2ZyZWUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXNfZ2MqLwotfTsKLQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIE1ldGhvZHMgb2YgQloyQ29tcC4gKi8KLQotUHlEb2NfU1RSVkFSKEJaMkNvbXBfY29tcHJlc3NfX2RvY19fLAotImNvbXByZXNzKGRhdGEpIC0+IHN0cmluZ1xuXAotXG5cCi1Qcm92aWRlIG1vcmUgZGF0YSB0byB0aGUgY29tcHJlc3NvciBvYmplY3QuIEl0IHdpbGwgcmV0dXJuIGNodW5rcyBvZlxuXAotY29tcHJlc3NlZCBkYXRhIHdoZW5ldmVyIHBvc3NpYmxlLiBXaGVuIHlvdSd2ZSBmaW5pc2hlZCBwcm92aWRpbmcgZGF0YVxuXAotdG8gY29tcHJlc3MsIGNhbGwgdGhlIGZsdXNoKCkgbWV0aG9kIHRvIGZpbmlzaCB0aGUgY29tcHJlc3Npb24gcHJvY2VzcyxcblwKLWFuZCByZXR1cm4gd2hhdCBpcyBsZWZ0IGluIHRoZSBpbnRlcm5hbCBidWZmZXJzLlxuXAotIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJDb21wX2NvbXByZXNzKEJaMkNvbXBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5X2J1ZmZlciBwZGF0YTsKLSAgICBzaXplX3QgaW5wdXRfbGVmdDsKLSAgICBzaXplX3Qgb3V0cHV0X3NpemUgPSAwOwotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotICAgIGJ6X3N0cmVhbSAqYnpzID0gJnNlbGYtPmJ6czsKLSAgICBpbnQgYnplcnJvcjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6Y29tcHJlc3MiLCAmcGRhdGEpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChwZGF0YS5sZW4gPT0gMCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKLSAgICB9Ci0KLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgaWYgKCFzZWxmLT5ydW5uaW5nKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInRoaXMgb2JqZWN0IHdhcyBhbHJlYWR5IGZsdXNoZWQiKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFNNQUxMQ0hVTkspOwotICAgIGlmICghcmV0KQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgYnpzLT5uZXh0X2luID0gcGRhdGEuYnVmOwotICAgIGJ6cy0+YXZhaWxfaW4gPSBNSU4ocGRhdGEubGVuLCBVSU5UX01BWCk7Ci0gICAgaW5wdXRfbGVmdCA9IHBkYXRhLmxlbiAtIGJ6cy0+YXZhaWxfaW47Ci0KLSAgICBienMtPm5leHRfb3V0ID0gQlVGKHJldCk7Ci0gICAgYnpzLT5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCk7Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGNoYXIgKnNhdmVkX25leHRfb3V0OwotCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgc2F2ZWRfbmV4dF9vdXQgPSBienMtPm5leHRfb3V0OwotICAgICAgICBiemVycm9yID0gQloyX2J6Q29tcHJlc3MoYnpzLCBCWl9SVU4pOwotICAgICAgICBvdXRwdXRfc2l6ZSArPSBienMtPm5leHRfb3V0IC0gc2F2ZWRfbmV4dF9vdXQ7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgaWYgKGJ6ZXJyb3IgIT0gQlpfUlVOX09LKSB7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGlmIChienMtPmF2YWlsX2luID09IDApIHsKLSAgICAgICAgICAgIGlmIChpbnB1dF9sZWZ0ID09IDApCi0gICAgICAgICAgICAgICAgYnJlYWs7IC8qIG5vIG1vcmUgaW5wdXQgZGF0YSAqLwotICAgICAgICAgICAgYnpzLT5hdmFpbF9pbiA9IE1JTihpbnB1dF9sZWZ0LCBVSU5UX01BWCk7Ci0gICAgICAgICAgICBpbnB1dF9sZWZ0IC09IGJ6cy0+YXZhaWxfaW47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ6cy0+YXZhaWxfb3V0ID09IDApIHsKLSAgICAgICAgICAgIHNpemVfdCBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSAtIG91dHB1dF9zaXplOwotICAgICAgICAgICAgaWYgKGJ1ZmZlcl9sZWZ0ID09IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoVXRpbF9Hcm93QnVmZmVyKCZyZXQpIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBCWjJfYnpDb21wcmVzc0VuZChienMpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBienMtPm5leHRfb3V0ID0gQlVGKHJldCkgKyBvdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgICAgICBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSAtIG91dHB1dF9zaXplOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnpzLT5hdmFpbF9vdXQgPSBNSU4oYnVmZmVyX2xlZnQsIFVJTlRfTUFYKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJldCwgb3V0cHV0X3NpemUpIDwgMCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgcmV0dXJuIHJldDsKLQotZXJyb3I6Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICBQeV9YREVDUkVGKHJldCk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJDb21wX2ZsdXNoX19kb2NfXywKLSJmbHVzaCgpIC0+IHN0cmluZ1xuXAotXG5cCi1GaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MgYW5kIHJldHVybiB3aGF0IGlzIGxlZnQgaW4gaW50ZXJuYWwgYnVmZmVycy5cblwKLVlvdSBtdXN0IG5vdCB1c2UgdGhlIGNvbXByZXNzb3Igb2JqZWN0IGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QuXG5cCi0iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkNvbXBfZmx1c2goQloyQ29tcE9iamVjdCAqc2VsZikKLXsKLSAgICBzaXplX3Qgb3V0cHV0X3NpemUgPSAwOwotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotICAgIGJ6X3N0cmVhbSAqYnpzID0gJnNlbGYtPmJ6czsKLSAgICBpbnQgYnplcnJvcjsKLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBpZiAoIXNlbGYtPnJ1bm5pbmcpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJvYmplY3Qgd2FzIGFscmVhZHkgZmx1c2hlZCIpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBzZWxmLT5ydW5uaW5nID0gMDsKLQotICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgU01BTExDSFVOSyk7Ci0gICAgaWYgKCFyZXQpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBienMtPm5leHRfb3V0ID0gQlVGKHJldCk7Ci0gICAgYnpzLT5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCk7Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGNoYXIgKnNhdmVkX25leHRfb3V0OwotCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgc2F2ZWRfbmV4dF9vdXQgPSBienMtPm5leHRfb3V0OwotICAgICAgICBiemVycm9yID0gQloyX2J6Q29tcHJlc3MoYnpzLCBCWl9GSU5JU0gpOwotICAgICAgICBvdXRwdXRfc2l6ZSArPSBienMtPm5leHRfb3V0IC0gc2F2ZWRfbmV4dF9vdXQ7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZSBpZiAoYnplcnJvciAhPSBCWl9GSU5JU0hfT0spIHsKLSAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ6cy0+YXZhaWxfb3V0ID09IDApIHsKLSAgICAgICAgICAgIHNpemVfdCBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSAtIG91dHB1dF9zaXplOwotICAgICAgICAgICAgaWYgKGJ1ZmZlcl9sZWZ0ID09IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoVXRpbF9Hcm93QnVmZmVyKCZyZXQpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBienMtPm5leHRfb3V0ID0gQlVGKHJldCkgKyBvdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgICAgICBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSAtIG91dHB1dF9zaXplOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnpzLT5hdmFpbF9vdXQgPSBNSU4oYnVmZmVyX2xlZnQsIFVJTlRfTUFYKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChvdXRwdXRfc2l6ZSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCkpCi0gICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJldCwgb3V0cHV0X3NpemUpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgcmV0dXJuIHJldDsKLQotZXJyb3I6Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIFB5X1hERUNSRUYocmV0KTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIFB5TWV0aG9kRGVmIEJaMkNvbXBfbWV0aG9kc1tdID0gewotICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pQloyQ29tcF9jb21wcmVzcywgTUVUSF9WQVJBUkdTLAotICAgICBCWjJDb21wX2NvbXByZXNzX19kb2NfX30sCi0gICAgeyJmbHVzaCIsIChQeUNGdW5jdGlvbilCWjJDb21wX2ZsdXNoLCBNRVRIX05PQVJHUywKLSAgICAgQloyQ29tcF9mbHVzaF9fZG9jX199LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCi19OwotCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogU2xvdCBkZWZpbml0aW9ucyBmb3IgQloyQ29tcF9UeXBlLiAqLwotCi1zdGF0aWMgaW50Ci1CWjJDb21wX2luaXQoQloyQ29tcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCi17Ci0gICAgaW50IGNvbXByZXNzbGV2ZWwgPSA5OwotICAgIGludCBiemVycm9yOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiY29tcHJlc3NsZXZlbCIsIDB9OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGk6QloyQ29tcHJlc3NvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmY29tcHJlc3NsZXZlbCkpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIGlmIChjb21wcmVzc2xldmVsIDwgMSB8fCBjb21wcmVzc2xldmVsID4gOSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjb21wcmVzc2xldmVsIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA5Iik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOwotICAgIGlmICghc2VsZi0+bG9jaykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsICJ1bmFibGUgdG8gYWxsb2NhdGUgbG9jayIpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSNlbmRpZgotCi0gICAgbWVtc2V0KCZzZWxmLT5ienMsIDAsIHNpemVvZihiel9zdHJlYW0pKTsKLSAgICBiemVycm9yID0gQloyX2J6Q29tcHJlc3NJbml0KCZzZWxmLT5ienMsIGNvbXByZXNzbGV2ZWwsIDAsIDApOwotICAgIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICBzZWxmLT5ydW5uaW5nID0gMTsKLQotICAgIHJldHVybiAwOwotZXJyb3I6Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBpZiAoc2VsZi0+bG9jaykgewotICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7Ci0gICAgICAgIHNlbGYtPmxvY2sgPSBOVUxMOwotICAgIH0KLSNlbmRpZgotICAgIHJldHVybiAtMTsKLX0KLQotc3RhdGljIHZvaWQKLUJaMkNvbXBfZGVhbGxvYyhCWjJDb21wT2JqZWN0ICpzZWxmKQotewotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgaWYgKHNlbGYtPmxvY2spCi0gICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKLSNlbmRpZgotICAgIEJaMl9iekNvbXByZXNzRW5kKCZzZWxmLT5ienMpOwotICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Ci19Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBCWjJDb21wX1R5cGUgZGVmaW5pdGlvbi4gKi8KLQotUHlEb2NfU1RSVkFSKEJaMkNvbXBfX2RvY19fLAotIkJaMkNvbXByZXNzb3IoW2NvbXByZXNzbGV2ZWw9OV0pIC0+IGNvbXByZXNzb3Igb2JqZWN0XG5cCi1cblwKLUNyZWF0ZSBhIG5ldyBjb21wcmVzc29yIG9iamVjdC4gVGhpcyBvYmplY3QgbWF5IGJlIHVzZWQgdG8gY29tcHJlc3NcblwKLWRhdGEgc2VxdWVudGlhbGx5LiBJZiB5b3Ugd2FudCB0byBjb21wcmVzcyBkYXRhIGluIG9uZSBzaG90LCB1c2UgdGhlXG5cCi1jb21wcmVzcygpIGZ1bmN0aW9uIGluc3RlYWQuIFRoZSBjb21wcmVzc2xldmVsIHBhcmFtZXRlciwgaWYgZ2l2ZW4sXG5cCi1tdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgOS5cblwKLSIpOwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IEJaMkNvbXBfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiYnoyLkJaMkNvbXByZXNzb3IiLCAgICAgICAgLyp0cF9uYW1lKi8KLSAgICBzaXplb2YoQloyQ29tcE9iamVjdCksICAgICAgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KLSAgICAoZGVzdHJ1Y3RvcilCWjJDb21wX2RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwvKnRwX2dldGF0dHJvKi8KLSAgICBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciwvKnRwX3NldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUfFB5X1RQRkxBR1NfQkFTRVRZUEUsIC8qdHBfZmxhZ3MqLwotICAgIEJaMkNvbXBfX2RvY19fLCAgICAgICAgIC8qdHBfZG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3RyYXZlcnNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQqLwotICAgIEJaMkNvbXBfbWV0aG9kcywgICAgICAgIC8qdHBfbWV0aG9kcyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9tZW1iZXJzKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldHNldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9iYXNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3QqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3JfZ2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX3NldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0b2Zmc2V0Ki8KLSAgICAoaW5pdHByb2MpQloyQ29tcF9pbml0LCAvKnRwX2luaXQqLwotICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgIC8qdHBfYWxsb2MqLwotICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgIC8qdHBfbmV3Ki8KLSAgICBQeU9iamVjdF9GcmVlLCAgICAgICAgICAvKnRwX2ZyZWUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXNfZ2MqLwotfTsKLQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIE1lbWJlcnMgb2YgQloyRGVjb21wLiAqLwotCi0jdW5kZWYgT0ZGCi0jZGVmaW5lIE9GRih4KSBvZmZzZXRvZihCWjJEZWNvbXBPYmplY3QsIHgpCi0KLXN0YXRpYyBQeU1lbWJlckRlZiBCWjJEZWNvbXBfbWVtYmVyc1tdID0gewotICAgIHsidW51c2VkX2RhdGEiLCBUX09CSkVDVCwgT0ZGKHVudXNlZF9kYXRhKSwgUkVBRE9OTFl9LAotICAgIHtOVUxMfSAgICAgIC8qIFNlbnRpbmVsICovCi19OwotCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogTWV0aG9kcyBvZiBCWjJEZWNvbXAuICovCi0KLVB5RG9jX1NUUlZBUihCWjJEZWNvbXBfZGVjb21wcmVzc19fZG9jX18sCi0iZGVjb21wcmVzcyhkYXRhKSAtPiBzdHJpbmdcblwKLVxuXAotUHJvdmlkZSBtb3JlIGRhdGEgdG8gdGhlIGRlY29tcHJlc3NvciBvYmplY3QuIEl0IHdpbGwgcmV0dXJuIGNodW5rc1xuXAotb2YgZGVjb21wcmVzc2VkIGRhdGEgd2hlbmV2ZXIgcG9zc2libGUuIElmIHlvdSB0cnkgdG8gZGVjb21wcmVzcyBkYXRhXG5cCi1hZnRlciB0aGUgZW5kIG9mIHN0cmVhbSBpcyBmb3VuZCwgRU9GRXJyb3Igd2lsbCBiZSByYWlzZWQuIElmIGFueSBkYXRhXG5cCi13YXMgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0sIGl0J2xsIGJlIGlnbm9yZWQgYW5kIHNhdmVkIGluXG5cCi11bnVzZWRfZGF0YSBhdHRyaWJ1dGUuXG5cCi0iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkRlY29tcF9kZWNvbXByZXNzKEJaMkRlY29tcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlfYnVmZmVyIHBkYXRhOwotICAgIHNpemVfdCBpbnB1dF9sZWZ0OwotICAgIHNpemVfdCBvdXRwdXRfc2l6ZSA9IDA7Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgYnpfc3RyZWFtICpienMgPSAmc2VsZi0+YnpzOwotICAgIGludCBiemVycm9yOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjpkZWNvbXByZXNzIiwgJnBkYXRhKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgaWYgKCFzZWxmLT5ydW5uaW5nKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19FT0ZFcnJvciwgImVuZCBvZiBzdHJlYW0gd2FzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxyZWFkeSBmb3VuZCIpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQotICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgU01BTExDSFVOSyk7Ci0gICAgaWYgKCFyZXQpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBienMtPm5leHRfaW4gPSBwZGF0YS5idWY7Ci0gICAgYnpzLT5hdmFpbF9pbiA9IE1JTihwZGF0YS5sZW4sIFVJTlRfTUFYKTsKLSAgICBpbnB1dF9sZWZ0ID0gcGRhdGEubGVuIC0gYnpzLT5hdmFpbF9pbjsKLQotICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KTsKLSAgICBienMtPmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KTsKLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgY2hhciAqc2F2ZWRfbmV4dF9vdXQ7Ci0KLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBzYXZlZF9uZXh0X291dCA9IGJ6cy0+bmV4dF9vdXQ7Ci0gICAgICAgIGJ6ZXJyb3IgPSBCWjJfYnpEZWNvbXByZXNzKGJ6cyk7Ci0gICAgICAgIG91dHB1dF9zaXplICs9IGJ6cy0+bmV4dF9vdXQgLSBzYXZlZF9uZXh0X291dDsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICBzZWxmLT5ydW5uaW5nID0gMDsKLSAgICAgICAgICAgIGlucHV0X2xlZnQgKz0gYnpzLT5hdmFpbF9pbjsKLSAgICAgICAgICAgIGlmIChpbnB1dF9sZWZ0ICE9IDApIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZi0+dW51c2VkX2RhdGEpOwotICAgICAgICAgICAgICAgIHNlbGYtPnVudXNlZF9kYXRhID0KLSAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShienMtPm5leHRfaW4sIGlucHV0X2xlZnQpOwotICAgICAgICAgICAgICAgIGlmIChzZWxmLT51bnVzZWRfZGF0YSA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ6cy0+YXZhaWxfaW4gPT0gMCkgewotICAgICAgICAgICAgaWYgKGlucHV0X2xlZnQgPT0gMCkKLSAgICAgICAgICAgICAgICBicmVhazsgLyogbm8gbW9yZSBpbnB1dCBkYXRhICovCi0gICAgICAgICAgICBienMtPmF2YWlsX2luID0gTUlOKGlucHV0X2xlZnQsIFVJTlRfTUFYKTsKLSAgICAgICAgICAgIGlucHV0X2xlZnQgLT0gYnpzLT5hdmFpbF9pbjsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnpzLT5hdmFpbF9vdXQgPT0gMCkgewotICAgICAgICAgICAgc2l6ZV90IGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXQpIC0gb3V0cHV0X3NpemU7Ci0gICAgICAgICAgICBpZiAoYnVmZmVyX2xlZnQgPT0gMCkgewotICAgICAgICAgICAgICAgIGlmIChVdGlsX0dyb3dCdWZmZXIoJnJldCkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIEJaMl9iekRlY29tcHJlc3NFbmQoYnpzKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpICsgb3V0cHV0X3NpemU7Ci0gICAgICAgICAgICAgICAgYnVmZmVyX2xlZnQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCkgLSBvdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJ6cy0+YXZhaWxfb3V0ID0gTUlOKGJ1ZmZlcl9sZWZ0LCBVSU5UX01BWCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAob3V0cHV0X3NpemUgIT0gUHlCeXRlc19HRVRfU0laRShyZXQpKQotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXQsIG91dHB1dF9zaXplKSA8IDApCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICByZXR1cm4gcmV0OwotCi1lcnJvcjoKLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgIFB5X1hERUNSRUYocmV0KTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIFB5TWV0aG9kRGVmIEJaMkRlY29tcF9tZXRob2RzW10gPSB7Ci0gICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKUJaMkRlY29tcF9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1MsIEJaMkRlY29tcF9kZWNvbXByZXNzX19kb2NfX30sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KLX07Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBTbG90IGRlZmluaXRpb25zIGZvciBCWjJEZWNvbXBfVHlwZS4gKi8KLQotc3RhdGljIGludAotQloyRGVjb21wX2luaXQoQloyRGVjb21wT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKLXsKLSAgICBpbnQgYnplcnJvcjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkJaMkRlY29tcHJlc3NvciIpKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7Ci0gICAgaWYgKCFzZWxmLT5sb2NrKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwgInVuYWJsZSB0byBhbGxvY2F0ZSBsb2NrIik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBzZWxmLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoIiIsIDApOwotICAgIGlmICghc2VsZi0+dW51c2VkX2RhdGEpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBtZW1zZXQoJnNlbGYtPmJ6cywgMCwgc2l6ZW9mKGJ6X3N0cmVhbSkpOwotICAgIGJ6ZXJyb3IgPSBCWjJfYnpEZWNvbXByZXNzSW5pdCgmc2VsZi0+YnpzLCAwLCAwKTsKLSAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgc2VsZi0+cnVubmluZyA9IDE7Ci0KLSAgICByZXR1cm4gMDsKLQotZXJyb3I6Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBpZiAoc2VsZi0+bG9jaykgewotICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7Ci0gICAgICAgIHNlbGYtPmxvY2sgPSBOVUxMOwotICAgIH0KLSNlbmRpZgotICAgIFB5X0NMRUFSKHNlbGYtPnVudXNlZF9kYXRhKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLXN0YXRpYyB2b2lkCi1CWjJEZWNvbXBfZGVhbGxvYyhCWjJEZWNvbXBPYmplY3QgKnNlbGYpCi17Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBpZiAoc2VsZi0+bG9jaykKLSAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOwotI2VuZGlmCi0gICAgUHlfWERFQ1JFRihzZWxmLT51bnVzZWRfZGF0YSk7Ci0gICAgQloyX2J6RGVjb21wcmVzc0VuZCgmc2VsZi0+YnpzKTsKLSAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOwotfQotCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogQloyRGVjb21wX1R5cGUgZGVmaW5pdGlvbi4gKi8KLQotUHlEb2NfU1RSVkFSKEJaMkRlY29tcF9fZG9jX18sCi0iQloyRGVjb21wcmVzc29yKCkgLT4gZGVjb21wcmVzc29yIG9iamVjdFxuXAotXG5cCi1DcmVhdGUgYSBuZXcgZGVjb21wcmVzc29yIG9iamVjdC4gVGhpcyBvYmplY3QgbWF5IGJlIHVzZWQgdG8gZGVjb21wcmVzc1xuXAotZGF0YSBzZXF1ZW50aWFsbHkuIElmIHlvdSB3YW50IHRvIGRlY29tcHJlc3MgZGF0YSBpbiBvbmUgc2hvdCwgdXNlIHRoZVxuXAotZGVjb21wcmVzcygpIGZ1bmN0aW9uIGluc3RlYWQuXG5cCi0iKTsKLQotc3RhdGljIFB5VHlwZU9iamVjdCBCWjJEZWNvbXBfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiYnoyLkJaMkRlY29tcHJlc3NvciIsICAgICAgLyp0cF9uYW1lKi8KLSAgICBzaXplb2YoQloyRGVjb21wT2JqZWN0KSwgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KLSAgICAoZGVzdHJ1Y3RvcilCWjJEZWNvbXBfZGVhbGxvYywgLyp0cF9kZWFsbG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2gqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwotICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLC8qdHBfZ2V0YXR0cm8qLwotICAgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyLC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFR8UHlfVFBGTEFHU19CQVNFVFlQRSwgLyp0cF9mbGFncyovCi0gICAgQloyRGVjb21wX19kb2NfXywgICAgICAgLyp0cF9kb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCovCi0gICAgQloyRGVjb21wX21ldGhvZHMsICAgICAgLyp0cF9tZXRob2RzKi8KLSAgICBCWjJEZWNvbXBfbWVtYmVycywgICAgICAvKnRwX21lbWJlcnMqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0c2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9nZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3Jfc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQqLwotICAgIChpbml0cHJvYylCWjJEZWNvbXBfaW5pdCwgLyp0cF9pbml0Ki8KLSAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAvKnRwX2FsbG9jKi8KLSAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAvKnRwX25ldyovCi0gICAgUHlPYmplY3RfRnJlZSwgICAgICAgICAgLyp0cF9mcmVlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2lzX2djKi8KLX07Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBNb2R1bGUgZnVuY3Rpb25zLiAqLwotCi1QeURvY19TVFJWQVIoYnoyX2NvbXByZXNzX19kb2NfXywKLSJjb21wcmVzcyhkYXRhIFssIGNvbXByZXNzbGV2ZWw9OV0pIC0+IHN0cmluZ1xuXAotXG5cCi1Db21wcmVzcyBkYXRhIGluIG9uZSBzaG90LiBJZiB5b3Ugd2FudCB0byBjb21wcmVzcyBkYXRhIHNlcXVlbnRpYWxseSxcblwKLXVzZSBhbiBpbnN0YW5jZSBvZiBCWjJDb21wcmVzc29yIGluc3RlYWQuIFRoZSBjb21wcmVzc2xldmVsIHBhcmFtZXRlciwgaWZcblwKLWdpdmVuLCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgOS5cblwKLSIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotYnoyX2NvbXByZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKLXsKLSAgICBpbnQgY29tcHJlc3NsZXZlbD05OwotICAgIGludCBhY3Rpb247Ci0gICAgUHlfYnVmZmVyIHBkYXRhOwotICAgIHNpemVfdCBpbnB1dF9sZWZ0OwotICAgIHNpemVfdCBvdXRwdXRfc2l6ZSA9IDA7Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgYnpfc3RyZWFtIF9ienM7Ci0gICAgYnpfc3RyZWFtICpienMgPSAmX2J6czsKLSAgICBpbnQgYnplcnJvcjsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImRhdGEiLCAiY29tcHJlc3NsZXZlbCIsIDB9OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8aSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmcGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbXByZXNzbGV2ZWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChjb21wcmVzc2xldmVsIDwgMSB8fCBjb21wcmVzc2xldmVsID4gOSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjb21wcmVzc2xldmVsIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA5Iik7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBTTUFMTENIVU5LKTsKLSAgICBpZiAoIXJldCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIG1lbXNldChienMsIDAsIHNpemVvZihiel9zdHJlYW0pKTsKLQotICAgIGJ6cy0+bmV4dF9pbiA9IHBkYXRhLmJ1ZjsKLSAgICBienMtPmF2YWlsX2luID0gTUlOKHBkYXRhLmxlbiwgVUlOVF9NQVgpOwotICAgIGlucHV0X2xlZnQgPSBwZGF0YS5sZW4gLSBienMtPmF2YWlsX2luOwotCi0gICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpOwotICAgIGJ6cy0+YXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXQpOwotCi0gICAgYnplcnJvciA9IEJaMl9iekNvbXByZXNzSW5pdChienMsIGNvbXByZXNzbGV2ZWwsIDAsIDApOwotICAgIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICBQeV9ERUNSRUYocmV0KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgYWN0aW9uID0gaW5wdXRfbGVmdCA+IDAgPyBCWl9SVU4gOiBCWl9GSU5JU0g7Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGNoYXIgKnNhdmVkX25leHRfb3V0OwotCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgc2F2ZWRfbmV4dF9vdXQgPSBienMtPm5leHRfb3V0OwotICAgICAgICBiemVycm9yID0gQloyX2J6Q29tcHJlc3MoYnpzLCBhY3Rpb24pOwotICAgICAgICBvdXRwdXRfc2l6ZSArPSBienMtPm5leHRfb3V0IC0gc2F2ZWRfbmV4dF9vdXQ7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZSBpZiAoYnplcnJvciAhPSBCWl9SVU5fT0sgJiYgYnplcnJvciAhPSBCWl9GSU5JU0hfT0spIHsKLSAgICAgICAgICAgIEJaMl9iekNvbXByZXNzRW5kKGJ6cyk7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmV0KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChhY3Rpb24gPT0gQlpfUlVOICYmIGJ6cy0+YXZhaWxfaW4gPT0gMCkgewotICAgICAgICAgICAgaWYgKGlucHV0X2xlZnQgPT0gMCkgewotICAgICAgICAgICAgICAgIGFjdGlvbiA9IEJaX0ZJTklTSDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYnpzLT5hdmFpbF9pbiA9IE1JTihpbnB1dF9sZWZ0LCBVSU5UX01BWCk7Ci0gICAgICAgICAgICAgICAgaW5wdXRfbGVmdCAtPSBienMtPmF2YWlsX2luOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChienMtPmF2YWlsX291dCA9PSAwKSB7Ci0gICAgICAgICAgICBzaXplX3QgYnVmZmVyX2xlZnQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCkgLSBvdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgIGlmIChidWZmZXJfbGVmdCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFV0aWxfR3Jvd0J1ZmZlcigmcmV0KSA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgQloyX2J6Q29tcHJlc3NFbmQoYnpzKTsKLSAgICAgICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpICsgb3V0cHV0X3NpemU7Ci0gICAgICAgICAgICAgICAgYnVmZmVyX2xlZnQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCkgLSBvdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJ6cy0+YXZhaWxfb3V0ID0gTUlOKGJ1ZmZlcl9sZWZ0LCBVSU5UX01BWCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAob3V0cHV0X3NpemUgIT0gUHlCeXRlc19HRVRfU0laRShyZXQpKQotICAgICAgICBfUHlCeXRlc19SZXNpemUoJnJldCwgb3V0cHV0X3NpemUpOyAgLyogU2V0cyByZXQgdG8gTlVMTCBvbiBmYWlsdXJlLiAqLwotCi0gICAgQloyX2J6Q29tcHJlc3NFbmQoYnpzKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotUHlEb2NfU1RSVkFSKGJ6Ml9kZWNvbXByZXNzX19kb2NfXywKLSJkZWNvbXByZXNzKGRhdGEpIC0+IGRlY29tcHJlc3NlZCBkYXRhXG5cCi1cblwKLURlY29tcHJlc3MgZGF0YSBpbiBvbmUgc2hvdC4gSWYgeW91IHdhbnQgdG8gZGVjb21wcmVzcyBkYXRhIHNlcXVlbnRpYWxseSxcblwKLXVzZSBhbiBpbnN0YW5jZSBvZiBCWjJEZWNvbXByZXNzb3IgaW5zdGVhZC5cblwKLSIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotYnoyX2RlY29tcHJlc3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5X2J1ZmZlciBwZGF0YTsKLSAgICBzaXplX3QgaW5wdXRfbGVmdDsKLSAgICBzaXplX3Qgb3V0cHV0X3NpemUgPSAwOwotICAgIFB5T2JqZWN0ICpyZXQ7Ci0gICAgYnpfc3RyZWFtIF9ienM7Ci0gICAgYnpfc3RyZWFtICpienMgPSAmX2J6czsKLSAgICBpbnQgYnplcnJvcjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6ZGVjb21wcmVzcyIsICZwZGF0YSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHBkYXRhLmxlbiA9PSAwKSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoIiIsIDApOwotICAgIH0KLQotICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgU01BTExDSFVOSyk7Ci0gICAgaWYgKCFyZXQpIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBtZW1zZXQoYnpzLCAwLCBzaXplb2YoYnpfc3RyZWFtKSk7Ci0KLSAgICBienMtPm5leHRfaW4gPSBwZGF0YS5idWY7Ci0gICAgYnpzLT5hdmFpbF9pbiA9IE1JTihwZGF0YS5sZW4sIFVJTlRfTUFYKTsKLSAgICBpbnB1dF9sZWZ0ID0gcGRhdGEubGVuIC0gYnpzLT5hdmFpbF9pbjsKLQotICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KTsKLSAgICBienMtPmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KTsKLQotICAgIGJ6ZXJyb3IgPSBCWjJfYnpEZWNvbXByZXNzSW5pdChienMsIDAsIDApOwotICAgIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgUHlfREVDUkVGKHJldCk7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgZm9yICg7OykgewotICAgICAgICBjaGFyICpzYXZlZF9uZXh0X291dDsKLQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHNhdmVkX25leHRfb3V0ID0gYnpzLT5uZXh0X291dDsKLSAgICAgICAgYnplcnJvciA9IEJaMl9iekRlY29tcHJlc3MoYnpzKTsKLSAgICAgICAgb3V0cHV0X3NpemUgKz0gYnpzLT5uZXh0X291dCAtIHNhdmVkX25leHRfb3V0OwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgICAgIEJaMl9iekRlY29tcHJlc3NFbmQoYnpzKTsKLSAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXQpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ6cy0+YXZhaWxfaW4gPT0gMCkgewotICAgICAgICAgICAgaWYgKGlucHV0X2xlZnQgPT0gMCkgewotICAgICAgICAgICAgICAgIEJaMl9iekRlY29tcHJlc3NFbmQoYnpzKTsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkbid0IGZpbmQgZW5kIG9mIHN0cmVhbSIpOwotICAgICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmV0KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJ6cy0+YXZhaWxfaW4gPSBNSU4oaW5wdXRfbGVmdCwgVUlOVF9NQVgpOwotICAgICAgICAgICAgaW5wdXRfbGVmdCAtPSBienMtPmF2YWlsX2luOwotICAgICAgICB9Ci0gICAgICAgIGlmIChienMtPmF2YWlsX291dCA9PSAwKSB7Ci0gICAgICAgICAgICBzaXplX3QgYnVmZmVyX2xlZnQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCkgLSBvdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgIGlmIChidWZmZXJfbGVmdCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFV0aWxfR3Jvd0J1ZmZlcigmcmV0KSA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgQloyX2J6RGVjb21wcmVzc0VuZChienMpOwotICAgICAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBienMtPm5leHRfb3V0ID0gQlVGKHJldCkgKyBvdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgICAgICBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSAtIG91dHB1dF9zaXplOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnpzLT5hdmFpbF9vdXQgPSBNSU4oYnVmZmVyX2xlZnQsIFVJTlRfTUFYKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChvdXRwdXRfc2l6ZSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCkpCi0gICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmcmV0LCBvdXRwdXRfc2l6ZSk7ICAvKiBTZXRzIHJldCB0byBOVUxMIG9uIGZhaWx1cmUuICovCi0KLSAgICBCWjJfYnpEZWNvbXByZXNzRW5kKGJ6cyk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBQeU1ldGhvZERlZiBiejJfbWV0aG9kc1tdID0gewotICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pIGJ6Ml9jb21wcmVzcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0gICAgICAgIGJ6Ml9jb21wcmVzc19fZG9jX199LAotICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbikgYnoyX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywKLSAgICAgICAgYnoyX2RlY29tcHJlc3NfX2RvY19ffSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwotfTsKLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBJbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gKi8KLQotUHlEb2NfU1RSVkFSKGJ6Ml9fZG9jX18sCi0iVGhlIHB5dGhvbiBiejIgbW9kdWxlIHByb3ZpZGVzIGEgY29tcHJlaGVuc2l2ZSBpbnRlcmZhY2UgZm9yXG5cCi10aGUgYnoyIGNvbXByZXNzaW9uIGxpYnJhcnkuIEl0IGltcGxlbWVudHMgYSBjb21wbGV0ZSBmaWxlXG5cCi1pbnRlcmZhY2UsIG9uZSBzaG90IChkZSljb21wcmVzc2lvbiBmdW5jdGlvbnMsIGFuZCB0eXBlcyBmb3JcblwKLXNlcXVlbnRpYWwgKGRlKWNvbXByZXNzaW9uLlxuXAotIik7Ci0KLQotc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBiejJtb2R1bGUgPSB7Ci0gICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAotICAgICJiejIiLAotICAgIGJ6Ml9fZG9jX18sCi0gICAgLTEsCi0gICAgYnoyX21ldGhvZHMsCi0gICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTAotfTsKLQotUHlNT0RJTklUX0ZVTkMKLVB5SW5pdF9iejIodm9pZCkKLXsKLSAgICBQeU9iamVjdCAqbTsKLQotICAgIGlmIChQeVR5cGVfUmVhZHkoJkJaMkZpbGVfVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZCWjJDb21wX1R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHlwZV9SZWFkeSgmQloyRGVjb21wX1R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZiejJtb2R1bGUpOwotICAgIGlmIChtID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJfX2F1dGhvcl9fIiwgUHlVbmljb2RlX0Zyb21TdHJpbmcoX19hdXRob3JfXykpOwotCi0gICAgUHlfSU5DUkVGKCZCWjJGaWxlX1R5cGUpOwotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQloyRmlsZSIsIChQeU9iamVjdCAqKSZCWjJGaWxlX1R5cGUpOwotCi0gICAgUHlfSU5DUkVGKCZCWjJDb21wX1R5cGUpOwotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQloyQ29tcHJlc3NvciIsIChQeU9iamVjdCAqKSZCWjJDb21wX1R5cGUpOwotCi0gICAgUHlfSU5DUkVGKCZCWjJEZWNvbXBfVHlwZSk7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJCWjJEZWNvbXByZXNzb3IiLCAoUHlPYmplY3QgKikmQloyRGVjb21wX1R5cGUpOwotICAgIHJldHVybiBtOwotfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19jbi5jIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19jbi5jCmluZGV4IGFiNGU2NTkuLjllOWU5NmMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfY24uYworKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2NuLmMKQEAgLTg1LDcgKzg1LDcgQEAKICAgICAgICAgVFJZTUFQX0RFQyhnYjIzMTIsICoqb3V0YnVmLCBjIF4gMHg4MCwgSU4yIF4gMHg4MCkgewogICAgICAgICAgICAgTkVYVCgyLCAxKQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgcmV0dXJuIDI7CisgICAgICAgIGVsc2UgcmV0dXJuIDE7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC0xNDEsNyArMTQxLDcgQEAKICAgICAgICAgUkVRVUlSRV9JTkJVRigyKQogCiAgICAgICAgIEdCS19ERUNPREUoYywgSU4yLCAqKm91dGJ1ZikKLSAgICAgICAgZWxzZSByZXR1cm4gMjsKKyAgICAgICAgZWxzZSByZXR1cm4gMTsKIAogICAgICAgICBORVhUKDIsIDEpCiAgICAgfQpAQCAtMjY3LDcgKzI2Nyw3IEBACiAgICAgICAgICAgICBjMyA9IElOMzsKICAgICAgICAgICAgIGM0ID0gSU40OwogICAgICAgICAgICAgaWYgKGMgPCAweDgxIHx8IGMzIDwgMHg4MSB8fCBjNCA8IDB4MzAgfHwgYzQgPiAweDM5KQotICAgICAgICAgICAgICAgIHJldHVybiA0OworICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgYyAtPSAweDgxOyAgYzIgLT0gMHgzMDsKICAgICAgICAgICAgIGMzIC09IDB4ODE7IGM0IC09IDB4MzA7CiAKQEAgLTI5MiwxMiArMjkyLDEyIEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiA0OworICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KIAogICAgICAgICBHQktfREVDT0RFKGMsIGMyLCAqKm91dGJ1ZikKICAgICAgICAgZWxzZSBUUllNQVBfREVDKGdiMTgwMzBleHQsICoqb3V0YnVmLCBjLCBjMik7Ci0gICAgICAgIGVsc2UgcmV0dXJuIDI7CisgICAgICAgIGVsc2UgcmV0dXJuIDE7CiAKICAgICAgICAgTkVYVCgyLCAxKQogICAgIH0KQEAgLTQwMCw3ICs0MDAsNyBAQAogICAgICAgICAgICAgZWxzZSBpZiAoYzIgPT0gJ1xuJykKICAgICAgICAgICAgICAgICA7IC8qIGxpbmUtY29udGludWF0aW9uICovCiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICBORVhUKDIsIDApOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTQxOSw3ICs0MTksNyBAQAogICAgICAgICAgICAgICAgIE5FWFQoMiwgMSkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19oay5jIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19oay5jCmluZGV4IDU1OGE0MmYuLmQzYWQwNGIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaGsuYworKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2hrLmMKQEAgLTE2MSw3ICsxNjEsNyBAQAogICAgICAgICBjYXNlIDB4ODg2NDogV1JJVEUyKDB4MDBjYSwgMHgwMzBjKTsgYnJlYWs7CiAgICAgICAgIGNhc2UgMHg4OGEzOiBXUklURTIoMHgwMGVhLCAweDAzMDQpOyBicmVhazsKICAgICAgICAgY2FzZSAweDg4YTU6IFdSSVRFMigweDAwZWEsIDB4MDMwYyk7IGJyZWFrOwotICAgICAgICBkZWZhdWx0OiByZXR1cm4gMjsKKyAgICAgICAgZGVmYXVsdDogcmV0dXJuIDE7CiAgICAgICAgIH0KIAogICAgICAgICBORVhUKDIsIDIpIC8qIGFsbCBkZWNvZGVkIGNvZGVwb2ludHMgYXJlIHBhaXJzLCBhYm92ZS4gKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaXNvMjAyMi5jIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19pc28yMDIyLmMKaW5kZXggMjVjMWEzNi4uY2JjMTU0MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19pc28yMDIyLmMKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19pc28yMDIyLmMKQEAgLTEyMyw3ICsxMjMsNyBAQAogCiBDT0RFQ19JTklUKGlzbzIwMjIpCiB7Ci0gICAgY29uc3Qgc3RydWN0IGlzbzIwMjJfZGVzaWduYXRpb24gKmRlc2lnID0gQ09ORklHX0RFU0lHTkFUSU9OUzsKKyAgICBjb25zdCBzdHJ1Y3QgaXNvMjAyMl9kZXNpZ25hdGlvbiAqZGVzaWc7CiAgICAgZm9yIChkZXNpZyA9IENPTkZJR19ERVNJR05BVElPTlM7IGRlc2lnLT5tYXJrOyBkZXNpZysrKQogICAgICAgICBpZiAoZGVzaWctPmluaXRpYWxpemVyICE9IE5VTEwgJiYgZGVzaWctPmluaXRpYWxpemVyKCkgIT0gMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfanAuYyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfanAuYwppbmRleCBhMDVlMDFiLi5hNTAwNjk2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2pwLmMKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19qcC5jCkBAIC0xMTIsNyArMTEyLDcgQEAKICAgICAgICAgVFJZTUFQX0RFQyhjcDkzMmV4dCwgKipvdXRidWYsIGMsIGMyKTsKICAgICAgICAgZWxzZSBpZiAoKGMgPj0gMHg4MSAmJiBjIDw9IDB4OWYpIHx8IChjID49IDB4ZTAgJiYgYyA8PSAweGVhKSl7CiAgICAgICAgICAgICBpZiAoYzIgPCAweDQwIHx8IChjMiA+IDB4N2UgJiYgYzIgPCAweDgwKSB8fCBjMiA+IDB4ZmMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgICAgIGMgPSAoYyA8IDB4ZTAgPyBjIC0gMHg4MSA6IGMgLSAweGMxKTsKICAgICAgICAgICAgIGMyID0gKGMyIDwgMHg4MCA/IGMyIC0gMHg0MCA6IGMyIC0gMHg0MSk7CkBAIC0xMjAsNyArMTIwLDcgQEAKICAgICAgICAgICAgIGMyID0gKGMyIDwgMHg1ZSA/IGMyIDogYzIgLSAweDVlKSArIDB4MjE7CiAKICAgICAgICAgICAgIFRSWU1BUF9ERUMoamlzeDAyMDgsICoqb3V0YnVmLCBjLCBjMik7Ci0gICAgICAgICAgICBlbHNlIHJldHVybiAyOworICAgICAgICAgICAgZWxzZSByZXR1cm4gMTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChjID49IDB4ZjAgJiYgYyA8PSAweGY5KSB7CiAgICAgICAgICAgICBpZiAoKGMyID49IDB4NDAgJiYgYzIgPD0gMHg3ZSkgfHwKQEAgLTEyOCwxMCArMTI4LDEwIEBACiAgICAgICAgICAgICAgICAgT1VUMSgweGUwMDAgKyAxODggKiAoYyAtIDB4ZjApICsKICAgICAgICAgICAgICAgICAgICAgIChjMiA8IDB4ODAgPyBjMiAtIDB4NDAgOiBjMiAtIDB4NDEpKQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgTkVYVCgyLCAxKQogICAgIH0KQEAgLTI1Niw3ICsyNTYsNyBAQAogICAgICAgICAgICAgICAgIE5FWFQoMiwgMSkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChjID09IDB4OGYpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYzIsIGMzOwpAQCAtMjc0LDcgKzI3NCw3IEBACiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIFRSWU1BUF9ERUMoamlzeDAyMTIsICoqb3V0YnVmLCBjMiwgYzMpIDsKLSAgICAgICAgICAgIGVsc2UgcmV0dXJuIDM7CisgICAgICAgICAgICBlbHNlIHJldHVybiAxOwogICAgICAgICAgICAgTkVYVCgzLCAxKQogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpAQCAtMzAwLDcgKzMwMCw3IEBACiAgICAgICAgICAgICAgICAgTkVYVCgyLCAyKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSByZXR1cm4gMjsKKyAgICAgICAgICAgIGVsc2UgcmV0dXJuIDE7CiAgICAgICAgICAgICBORVhUKDIsIDEpCiAgICAgICAgIH0KICAgICB9CkBAIC0zODgsNyArMzg4LDcgQEAKICAgICAgICAgICAgICAgICBORVhUKDIsIDEpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoYyA9PSAweDhmKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMyLCBjMzsKQEAgLTQwMSw3ICs0MDEsNyBAQAogICAgICAgICAgICAgICAgIE5FWFQoMywgMSkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYzI7CkBAIC00MTcsNyArNDE3LDcgQEAKICNlbmRpZgogICAgICAgICAgICAgICAgIFRSWU1BUF9ERUMoamlzeDAyMDgsICoqb3V0YnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyBeIDB4ODAsIGMyIF4gMHg4MCkgOwotICAgICAgICAgICAgZWxzZSByZXR1cm4gMjsKKyAgICAgICAgICAgIGVsc2UgcmV0dXJuIDE7CiAgICAgICAgICAgICBORVhUKDIsIDEpCiAgICAgICAgIH0KICAgICB9CkBAIC01MDIsNyArNTAyLDcgQEAKICAgICAgICAgICAgIFJFUVVJUkVfSU5CVUYoMikKICAgICAgICAgICAgIGMyID0gSU4yOwogICAgICAgICAgICAgaWYgKGMyIDwgMHg0MCB8fCAoYzIgPiAweDdlICYmIGMyIDwgMHg4MCkgfHwgYzIgPiAweGZjKQotICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgIHJldHVybiAxOwogCiAgICAgICAgICAgICBjMSA9IChjIDwgMHhlMCA/IGMgLSAweDgxIDogYyAtIDB4YzEpOwogICAgICAgICAgICAgYzIgPSAoYzIgPCAweDgwID8gYzIgLSAweDQwIDogYzIgLSAweDQxKTsKQEAgLTUyMiwxMCArNTIyLDEwIEBACiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICByZXR1cm4gMTsKIAogICAgICAgICBORVhUKDEsIDEpIC8qIEpJUyBYIDAyMDEgKi8KICAgICB9CkBAIC02NDUsNyArNjQ1LDcgQEAKICAgICAgICAgICAgIFJFUVVJUkVfSU5CVUYoMikKICAgICAgICAgICAgIGMyID0gSU4yOwogICAgICAgICAgICAgaWYgKGMyIDwgMHg0MCB8fCAoYzIgPiAweDdlICYmIGMyIDwgMHg4MCkgfHwgYzIgPiAweGZjKQotICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgIHJldHVybiAxOwogCiAgICAgICAgICAgICBjMSA9IChjIDwgMHhlMCA/IGMgLSAweDgxIDogYyAtIDB4YzEpOwogICAgICAgICAgICAgYzIgPSAoYzIgPCAweDgwID8gYzIgLSAweDQwIDogYzIgLSAweDQxKTsKQEAgLTY3MSw3ICs2NzEsNyBAQAogICAgICAgICAgICAgICAgICAgICBORVhUX09VVCgyKQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICBORVhUX0lOKDIpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsgLyogUGxhbmUgMiAqLwpAQCAtNjg5LDEzICs2ODksMTMgQEAKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIE5FWFQoMiwgMSkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgTkVYVCgxLCAxKSAvKiBKSVMgWCAwMjAxICovCiAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19rci5jIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19rci5jCmluZGV4IDkyNzJlMzYuLmY1Njk3ZGQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3Nfa3IuYworKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2tyLmMKQEAgLTEyMyw3ICsxMjMsNyBAQAogICAgICAgICAgICAgaWYgKCgqaW5idWYpWzJdICE9IEVVQ0tSX0pBTU9fRklSU1RCWVRFIHx8CiAgICAgICAgICAgICAgICAgKCppbmJ1ZilbNF0gIT0gRVVDS1JfSkFNT19GSVJTVEJZVEUgfHwKICAgICAgICAgICAgICAgICAoKmluYnVmKVs2XSAhPSBFVUNLUl9KQU1PX0ZJUlNUQllURSkKLSAgICAgICAgICAgICAgICByZXR1cm4gODsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKIAogICAgICAgICAgICAgYyA9ICgqaW5idWYpWzNdOwogICAgICAgICAgICAgaWYgKDB4YTEgPD0gYyAmJiBjIDw9IDB4YmUpCkBAIC0xNDMsNyArMTQzLDcgQEAKICAgICAgICAgICAgICAgICBqb25nID0gTk9ORTsKIAogICAgICAgICAgICAgaWYgKGNobyA9PSBOT05FIHx8IGp1bmcgPT0gTk9ORSB8fCBqb25nID09IE5PTkUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDg7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgICAgIE9VVDEoMHhhYzAwICsgY2hvKjU4OCArIGp1bmcqMjggKyBqb25nKTsKICAgICAgICAgICAgIE5FWFQoOCwgMSkKQEAgLTE1Miw3ICsxNTIsNyBAQAogICAgICAgICAgICAgTkVYVCgyLCAxKQogICAgICAgICB9CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC0yMDgsNyArMjA4LDcgQEAKICAgICAgICAgUkVRVUlSRV9JTkJVRigyKQogICAgICAgICBUUllNQVBfREVDKGtzeDEwMDEsICoqb3V0YnVmLCBjIF4gMHg4MCwgSU4yIF4gMHg4MCk7CiAgICAgICAgIGVsc2UgVFJZTUFQX0RFQyhjcDk0OWV4dCwgKipvdXRidWYsIGMsIElOMik7Ci0gICAgICAgIGVsc2UgcmV0dXJuIDI7CisgICAgICAgIGVsc2UgcmV0dXJuIDE7CiAKICAgICAgICAgTkVYVCgyLCAxKQogICAgIH0KQEAgLTM3NSw3ICszNzUsNyBAQAogICAgICAgICAgICAgaV9qb25nID0gam9oYWJpZHhfam9uZ3Nlb25nW2Nfam9uZ107CiAKICAgICAgICAgICAgIGlmIChpX2NobyA9PSBOT05FIHx8IGlfanVuZyA9PSBOT05FIHx8IGlfam9uZyA9PSBOT05FKQotICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgIHJldHVybiAxOwogCiAgICAgICAgICAgICAvKiB3ZSBkb24ndCB1c2UgVSsxMTAwIGhhbmd1bCBqYW1vIHlldC4gKi8KICAgICAgICAgICAgIGlmIChpX2NobyA9PSBGSUxMKSB7CkBAIC0zOTEsNyArMzkxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIE9VVDEoMHgzMTAwIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgam9oYWJqYW1vX2p1bmdzZW9uZ1tjX2p1bmddKQogICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKGlfanVuZyA9PSBGSUxMKSB7CkBAIC0zOTksNyArMzk5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIE9VVDEoMHgzMTAwIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgam9oYWJqYW1vX2Nob3Nlb25nW2NfY2hvXSkKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBPVVQxKDB4YWMwMCArCkBAIC00MTQsNyArNDE0LDcgQEAKICAgICAgICAgICAgICAgICBjMiA8IDB4MzEgfHwgKGMyID49IDB4ODAgJiYgYzIgPCAweDkxKSB8fAogICAgICAgICAgICAgICAgIChjMiAmIDB4N2YpID09IDB4N2YgfHwKICAgICAgICAgICAgICAgICAoYyA9PSAweGRhICYmIChjMiA+PSAweGExICYmIGMyIDw9IDB4ZDMpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdDEsIHQyOwogCkBAIC00MjUsNyArNDI1LDcgQEAKICAgICAgICAgICAgICAgICB0MiA9ICh0MiA8IDB4NWUgPyB0MiA6IHQyIC0gMHg1ZSkgKyAweDIxOwogCiAgICAgICAgICAgICAgICAgVFJZTUFQX0RFQyhrc3gxMDAxLCAqKm91dGJ1ZiwgdDEsIHQyKTsKLSAgICAgICAgICAgICAgICBlbHNlIHJldHVybiAyOworICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgTkVYVCgyLCAxKQogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX3R3LmMgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX3R3LmMKaW5kZXggMzhjZjcyMy4uOTE2Mjk4ZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc190dy5jCisrKyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfdHcuYwpAQCAtNTUsNyArNTUsNyBAQAogICAgICAgICBUUllNQVBfREVDKGJpZzUsICoqb3V0YnVmLCBjLCBJTjIpIHsKICAgICAgICAgICAgIE5FWFQoMiwgMSkKICAgICAgICAgfQotICAgICAgICBlbHNlIHJldHVybiAyOworICAgICAgICBlbHNlIHJldHVybiAxOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMTA5LDcgKzEwOSw3IEBACiAKICAgICAgICAgVFJZTUFQX0RFQyhjcDk1MGV4dCwgKipvdXRidWYsIGMsIElOMik7CiAgICAgICAgIGVsc2UgVFJZTUFQX0RFQyhiaWc1LCAqKm91dGJ1ZiwgYywgSU4yKTsKLSAgICAgICAgZWxzZSByZXR1cm4gMjsKKyAgICAgICAgZWxzZSByZXR1cm4gMTsKIAogICAgICAgICBORVhUKDIsIDEpCiAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMuYyBiL01vZHVsZXMvY2prY29kZWNzL211bHRpYnl0ZWNvZGVjLmMKaW5kZXggN2IwNGYwMjAuLmMwMzJjZGIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL211bHRpYnl0ZWNvZGVjLmMKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMuYwpAQCAtMzE2LDE1ICszMTYsMTUgQEAKICAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAKICAgICBpZiAoIVB5VHVwbGVfQ2hlY2socmV0b2JqKSB8fCBQeVR1cGxlX0dFVF9TSVpFKHJldG9iaikgIT0gMiB8fAotICAgICAgICAhUHlVbmljb2RlX0NoZWNrKCh0b2JqID0gUHlUdXBsZV9HRVRfSVRFTShyZXRvYmosIDApKSkgfHwKKyAgICAgICAgKCFQeVVuaWNvZGVfQ2hlY2soKHRvYmogPSBQeVR1cGxlX0dFVF9JVEVNKHJldG9iaiwgMCkpKSAmJiAhUHlCeXRlc19DaGVjayh0b2JqKSkgfHwKICAgICAgICAgIVB5TG9uZ19DaGVjayhQeVR1cGxlX0dFVF9JVEVNKHJldG9iaiwgMSkpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiKHVuaWNvZGUsIGludCkgdHVwbGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICIoc3RyLCBpbnQpIHR1cGxlIik7CiAgICAgICAgIGdvdG8gZXJyb3JleGl0OwogICAgIH0KIAotICAgIHsKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHRvYmopKSB7CiAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnVyYXcgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh0b2JqKTsKIAogICAgICAgICByZXRzdHIgPSBtdWx0aWJ5dGVjb2RlY19lbmNvZGUoY29kZWMsIHN0YXRlLCAmdXJhdywKQEAgLTMzMyw2ICszMzMsMTAgQEAKICAgICAgICAgaWYgKHJldHN0ciA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9JTkNSRUYodG9iaik7CisgICAgICAgIHJldHN0ciA9IHRvYmo7CisgICAgfQogCiAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2socmV0c3RyKSk7CiAgICAgcmV0c3Ryc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0c3RyKTsKQEAgLTQzOSwxNCArNDQzLDE2IEBACiAgICAgICAgICFQeUxvbmdfQ2hlY2soUHlUdXBsZV9HRVRfSVRFTShyZXRvYmosIDEpKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImRlY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gIgotICAgICAgICAgICAgICAgICAgICAgICAgIih1bmljb2RlLCBpbnQpIHR1cGxlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAiKHN0ciwgaW50KSB0dXBsZSIpOwogICAgICAgICBnb3RvIGVycm9yZXhpdDsKICAgICB9CiAKKyAgICBpZiAoUHlVbmljb2RlX0FzVW5pY29kZShyZXR1bmkpID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3JleGl0OwogICAgIHJldHVuaXNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUocmV0dW5pKTsKICAgICBpZiAocmV0dW5pc2l6ZSA+IDApIHsKICAgICAgICAgUkVRVUlSRV9ERUNPREVCVUZGRVIoYnVmLCByZXR1bmlzaXplKTsKLSAgICAgICAgbWVtY3B5KChjaGFyICopYnVmLT5vdXRidWYsIFB5VW5pY29kZV9BU19EQVRBKHJldHVuaSksCisgICAgICAgIG1lbWNweSgoY2hhciAqKWJ1Zi0+b3V0YnVmLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXR1bmkpLAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dW5pc2l6ZSAqIFB5X1VOSUNPREVfU0laRSk7CiAgICAgICAgIGJ1Zi0+b3V0YnVmICs9IHJldHVuaXNpemU7CiAgICAgfQpAQCAtNDgzLDYgKzQ4OSw3IEBACiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwogCiAgICAgYnVmLmV4Y29iaiA9IE5VTEw7CisgICAgYnVmLm91dG9iaiA9IE5VTEw7CiAgICAgYnVmLmluYnVmID0gYnVmLmluYnVmX3RvcCA9ICpkYXRhOwogICAgIGJ1Zi5pbmJ1Zl9lbmQgPSBidWYuaW5idWZfdG9wICsgZGF0YWxlbjsKIApAQCAtNTczLDggKzU4MCwxMSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgZGF0YSA9IFB5VW5pY29kZV9BU19VTklDT0RFKGFyZyk7Ci0gICAgZGF0YWxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShhcmcpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShhcmcsICZkYXRhbGVuKTsKKyAgICBpZiAoZGF0YSA9PSBOVUxMKSB7CisgICAgICAgIFB5X1hERUNSRUYodWN2dCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIGVycm9yY2IgPSBpbnRlcm5hbF9lcnJvcl9jYWxsYmFjayhlcnJvcnMpOwogICAgIGlmIChlcnJvcmNiID09IE5VTEwpIHsKQEAgLTYyNyw3ICs2MzcsNyBAQAogICAgIGlmIChkYXRhbGVuID09IDApIHsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwogICAgICAgICBFUlJPUl9ERUNSRUYoZXJyb3JjYik7Ci0gICAgICAgIHJldHVybiBtYWtlX3R1cGxlKFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKSwgMCk7CisgICAgICAgIHJldHVybiBtYWtlX3R1cGxlKFB5VW5pY29kZV9OZXcoMCwgMCksIDApOwogICAgIH0KIAogICAgIGJ1Zi5leGNvYmogPSBOVUxMOwpAQCAtNjM3LDYgKzY0Nyw4IEBACiAgICAgaWYgKGJ1Zi5vdXRvYmogPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAgICAgYnVmLm91dGJ1ZiA9IFB5VW5pY29kZV9BU19VTklDT0RFKGJ1Zi5vdXRvYmopOworICAgIGlmIChidWYub3V0YnVmID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3JleGl0OwogICAgIGJ1Zi5vdXRidWZfZW5kID0gYnVmLm91dGJ1ZiArIFB5VW5pY29kZV9HRVRfU0laRShidWYub3V0b2JqKTsKIAogICAgIGlmIChzZWxmLT5jb2RlYy0+ZGVjaW5pdCAhPSBOVUxMICYmCkBAIC03NDIsNiArNzU0LDcgQEAKICAgICBQeU9iamVjdCAqdWN2dCwgKnIgPSBOVUxMOwogICAgIFB5X1VOSUNPREUgKmluYnVmLCAqaW5idWZfZW5kLCAqaW5idWZfdG1wID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGRhdGFsZW4sIG9yaWdwZW5kaW5nOworICAgIHdjaGFyX3QgKmRhdGE7CiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHVuaXN0cikpCiAgICAgICAgIHVjdnQgPSBOVUxMOwpAQCAtNzUxLDEzICs3NjQsMTUgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBlbHNlIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaXN0cikpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgImNvdWxkbid0IGNvbnZlcnQgdGhlIG9iamVjdCB0byB1bmljb2RlLiIpOworICAgICAgICAgICAgICAgICJjb3VsZG4ndCBjb252ZXJ0IHRoZSBvYmplY3QgdG8gc3RyLiIpOwogICAgICAgICAgICAgUHlfREVDUkVGKHVjdnQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBkYXRhbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHVuaXN0cik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHVuaXN0ciwgJmRhdGFsZW4pOworICAgIGlmIChkYXRhID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3JleGl0OwogICAgIG9yaWdwZW5kaW5nID0gY3R4LT5wZW5kaW5nc2l6ZTsKIAogICAgIGlmIChvcmlncGVuZGluZyA+IDApIHsKQEAgLTg0OCw3ICs4NjMsOSBAQAogICAgICAgICBidWYtPm91dG9iaiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzaXplKTsKICAgICAgICAgaWYgKGJ1Zi0+b3V0b2JqID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGJ1Zi0+b3V0YnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUoYnVmLT5vdXRvYmopOworICAgICAgICBidWYtPm91dGJ1ZiA9IFB5VW5pY29kZV9Bc1VuaWNvZGUoYnVmLT5vdXRvYmopOworICAgICAgICBpZiAoYnVmLT5vdXRidWYgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgYnVmLT5vdXRidWZfZW5kID0gYnVmLT5vdXRidWYgKwogICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoYnVmLT5vdXRvYmopOwogICAgIH0KQEAgLTkwMCwxMSArOTE3LDE3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbWJpZW5jb2Rlcl9yZXNldChNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYpCiB7Ci0gICAgaWYgKHNlbGYtPmNvZGVjLT5kZWNyZXNldCAhPSBOVUxMICYmCi0gICAgICAgIHNlbGYtPmNvZGVjLT5kZWNyZXNldCgmc2VsZi0+c3RhdGUsIHNlbGYtPmNvZGVjLT5jb25maWcpICE9IDApCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIExvbmdlc3Qgb3V0cHV0OiA0IGJ5dGVzIChiJ1x4MEZceDFGKEInKSB3aXRoIElTTyAyMDIyICovCisgICAgdW5zaWduZWQgY2hhciBidWZmZXJbNF0sICpvdXRidWY7CisgICAgUHlfc3NpemVfdCByOworICAgIGlmIChzZWxmLT5jb2RlYy0+ZW5jcmVzZXQgIT0gTlVMTCkgeworICAgICAgICBvdXRidWYgPSBidWZmZXI7CisgICAgICAgIHIgPSBzZWxmLT5jb2RlYy0+ZW5jcmVzZXQoJnNlbGYtPnN0YXRlLCBzZWxmLT5jb2RlYy0+Y29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRidWYsIHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgaWYgKHIgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBzZWxmLT5wZW5kaW5nc2l6ZSA9IDA7Ci0KICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtMTI0Niw3ICsxMjY5LDcgQEAKICAgICBQeV9zc2l6ZV90IHJzaXplLCBmaW5hbHNpemUgPSAwOwogCiAgICAgaWYgKHNpemVoaW50ID09IDApCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgMCk7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfTmV3KDAsIDApOwogCiAgICAgYnVmLm91dG9iaiA9IGJ1Zi5leGNvYmogPSBOVUxMOwogICAgIGNyZXMgPSBOVUxMOwpAQCAtMTU3MiwxMiArMTU5NSwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmlzdHIpCiB7CiAgICAgUHlPYmplY3QgKnN0ciwgKndyOworICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKIAogICAgIHN0ciA9IGVuY29kZXJfZW5jb2RlX3N0YXRlZnVsKFNUQVRFRlVMX0VDVFgoc2VsZiksIHVuaXN0ciwgMCk7CiAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICB3ciA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+c3RyZWFtLCAid3JpdGUiLCAiTyIsIHN0cik7CisgICAgd3IgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPnN0cmVhbSwgJlB5SWRfd3JpdGUsICJPIiwgc3RyKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICBpZiAod3IgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTY0Myw3ICsxNjY3LDkgQEAKICAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhwd3J0KSk7CiAgICAgaWYgKFB5Qnl0ZXNfU2l6ZShwd3J0KSA+IDApIHsKICAgICAgICAgUHlPYmplY3QgKndyOwotICAgICAgICB3ciA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+c3RyZWFtLCAid3JpdGUiLCAiTyIsIHB3cnQpOworICAgICAgICBfUHlfSURFTlRJRklFUih3cml0ZSk7CisKKyAgICAgICAgd3IgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPnN0cmVhbSwgJlB5SWRfd3JpdGUsICJPIiwgcHdydCk7CiAgICAgICAgIGlmICh3ciA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocHdydCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvY29uZmlnLmMuaW4gYi9Nb2R1bGVzL2NvbmZpZy5jLmluCmluZGV4IDM0ZDQ0ZDUuLjdhMjRlMmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY29uZmlnLmMuaW4KKysrIGIvTW9kdWxlcy9jb25maWcuYy5pbgpAQCAtMzksMTMgKzM5LDEyIEBACiAgICAgeyJtYXJzaGFsIiwgUHlNYXJzaGFsX0luaXR9LAogCiAgICAgLyogVGhpcyBsaXZlcyBpbiBpbXBvcnQuYyAqLwotICAgIHsiaW1wIiwgUHlJbml0X2ltcH0sCisgICAgeyJfaW1wIiwgUHlJbml0X2ltcH0sCiAKICAgICAvKiBUaGlzIGxpdmVzIGluIFB5dGhvbi9QeXRob24tYXN0LmMgKi8KICAgICB7Il9hc3QiLCBQeUluaXRfX2FzdH0sCiAKICAgICAvKiBUaGVzZSBlbnRyaWVzIGFyZSBoZXJlIGZvciBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMgKi8KLSAgICB7Il9fbWFpbl9fIiwgTlVMTH0sCiAgICAgeyJidWlsdGlucyIsIE5VTEx9LAogICAgIHsic3lzIiwgTlVMTH0sCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvZXJybm9tb2R1bGUuYyBiL01vZHVsZXMvZXJybm9tb2R1bGUuYwppbmRleCA4NjcyMGFmLi4wNmVkNTNhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2Vycm5vbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9lcnJub21vZHVsZS5jCkBAIC03LDYgKzcsMzMgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CisvKiBUaGUgZm9sbG93aW5nIGNvbnN0YW50cyB3ZXJlIGFkZGVkIHRvIGVycm5vLmggaW4gVlMyMDEwIGJ1dCBoYXZlCisgICBwcmVmZXJyZWQgV1NBIGVxdWl2YWxlbnRzLiAqLworI3VuZGVmIEVBRERSSU5VU0UKKyN1bmRlZiBFQUREUk5PVEFWQUlMCisjdW5kZWYgRUFGTk9TVVBQT1JUCisjdW5kZWYgRUFMUkVBRFkKKyN1bmRlZiBFQ09OTkFCT1JURUQKKyN1bmRlZiBFQ09OTlJFRlVTRUQKKyN1bmRlZiBFQ09OTlJFU0VUCisjdW5kZWYgRURFU1RBRERSUkVRCisjdW5kZWYgRUhPU1RVTlJFQUNICisjdW5kZWYgRUlOUFJPR1JFU1MKKyN1bmRlZiBFSVNDT05OCisjdW5kZWYgRUxPT1AKKyN1bmRlZiBFTVNHU0laRQorI3VuZGVmIEVORVRET1dOCisjdW5kZWYgRU5FVFJFU0VUCisjdW5kZWYgRU5FVFVOUkVBQ0gKKyN1bmRlZiBFTk9CVUZTCisjdW5kZWYgRU5PUFJPVE9PUFQKKyN1bmRlZiBFTk9UQ09OTgorI3VuZGVmIEVOT1RTT0NLCisjdW5kZWYgRU9QTk9UU1VQUAorI3VuZGVmIEVQUk9UT05PU1VQUE9SVAorI3VuZGVmIEVQUk9UT1RZUEUKKyN1bmRlZiBFVElNRURPVVQKKyN1bmRlZiBFV09VTERCTE9DSwogI2VuZGlmCiAKIC8qCkBAIC04NCw2ICsxMTEsOCBAQAogICAgICAqIFRoZSBuYW1lcyBhbmQgY29tbWVudHMgYXJlIGJvcnJvd2VkIGZyb20gbGludXgvaW5jbHVkZS9lcnJuby5oLAogICAgICAqIHdoaWNoIHNob3VsZCBiZSBwcmV0dHkgYWxsLWluY2x1c2l2ZS4gIEhvd2V2ZXIsIHRoZSBTb2xhcmlzIHNwZWNpZmljCiAgICAgICogbmFtZXMgYW5kIGNvbW1lbnRzIGFyZSBib3Jyb3dlZCBmcm9tIHN5cy9lcnJuby5oIGluIFNvbGFyaXMuCisgICAgICogTWFjT1NYIHNwZWNpZmljIG5hbWVzIGFuZCBjb21tZW50cyBhcmUgYm9ycm93ZWQgZnJvbSBzeXMvZXJybm8uaCBpbgorICAgICAqIE1hY09TWC4KICAgICAgKi8KIAogI2lmZGVmIEVOT0RFVgpAQCAtODQ4LDYgKzg3Nyw1OSBAQAogICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRU5PVEFDVElWRSIsIEVOT1RBQ1RJVkUsICJGYWNpbGl0eSBpcyBub3QgYWN0aXZlIik7CiAjZW5kaWYKIAorICAgIC8qIE1hY09TWCBzcGVjaWZpYyBlcnJub3MgKi8KKyNpZmRlZiBFQVVUSAorICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRUFVVEgiLCBFQVVUSCwgIkF1dGhlbnRpY2F0aW9uIGVycm9yIik7CisjZW5kaWYKKyNpZmRlZiBFQkFEQVJDSAorICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRUJBREFSQ0giLCBFQkFEQVJDSCwgIkJhZCBDUFUgdHlwZSBpbiBleGVjdXRhYmxlIik7CisjZW5kaWYKKyNpZmRlZiBFQkFERVhFQworICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRUJBREVYRUMiLCBFQkFERVhFQywgIkJhZCBleGVjdXRhYmxlIChvciBzaGFyZWQgbGlicmFyeSkiKTsKKyNlbmRpZgorI2lmZGVmIEVCQURNQUNITworICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRUJBRE1BQ0hPIiwgRUJBRE1BQ0hPLCAiTWFsZm9ybWVkIE1hY2gtbyBmaWxlIik7CisjZW5kaWYKKyNpZmRlZiBFQkFEUlBDCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFQkFEUlBDIiwgRUJBRFJQQywgIlJQQyBzdHJ1Y3QgaXMgYmFkIik7CisjZW5kaWYKKyNpZmRlZiBFREVWRVJSCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFREVWRVJSIiwgRURFVkVSUiwgIkRldmljZSBlcnJvciIpOworI2VuZGlmCisjaWZkZWYgRUZUWVBFCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFRlRZUEUiLCBFRlRZUEUsICJJbmFwcHJvcHJpYXRlIGZpbGUgdHlwZSBvciBmb3JtYXQiKTsKKyNlbmRpZgorI2lmZGVmIEVORUVEQVVUSAorICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRU5FRURBVVRIIiwgRU5FRURBVVRILCAiTmVlZCBhdXRoZW50aWNhdG9yIik7CisjZW5kaWYKKyNpZmRlZiBFTk9BVFRSCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFTk9BVFRSIiwgRU5PQVRUUiwgIkF0dHJpYnV0ZSBub3QgZm91bmQiKTsKKyNlbmRpZgorI2lmZGVmIEVOT1BPTElDWQorICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRU5PUE9MSUNZIiwgRU5PUE9MSUNZLCAiUG9saWN5IG5vdCBmb3VuZCIpOworI2VuZGlmCisjaWZkZWYgRVBST0NMSU0KKyAgICBpbnNjb2RlKGQsIGRzLCBkZSwgIkVQUk9DTElNIiwgRVBST0NMSU0sICJUb28gbWFueSBwcm9jZXNzZXMiKTsKKyNlbmRpZgorI2lmZGVmIEVQUk9DVU5BVkFJTAorICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRVBST0NVTkFWQUlMIiwgRVBST0NVTkFWQUlMLCAiQmFkIHByb2NlZHVyZSBmb3IgcHJvZ3JhbSIpOworI2VuZGlmCisjaWZkZWYgRVBST0dNSVNNQVRDSAorICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRVBST0dNSVNNQVRDSCIsIEVQUk9HTUlTTUFUQ0gsICJQcm9ncmFtIHZlcnNpb24gd3JvbmciKTsKKyNlbmRpZgorI2lmZGVmIEVQUk9HVU5BVkFJTAorICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRVBST0dVTkFWQUlMIiwgRVBST0dVTkFWQUlMLCAiUlBDIHByb2cuIG5vdCBhdmFpbCIpOworI2VuZGlmCisjaWZkZWYgRVBXUk9GRgorICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRVBXUk9GRiIsIEVQV1JPRkYsICJEZXZpY2UgcG93ZXIgaXMgb2ZmIik7CisjZW5kaWYKKyNpZmRlZiBFUlBDTUlTTUFUQ0gKKyAgICBpbnNjb2RlKGQsIGRzLCBkZSwgIkVSUENNSVNNQVRDSCIsIEVSUENNSVNNQVRDSCwgIlJQQyB2ZXJzaW9uIHdyb25nIik7CisjZW5kaWYKKyNpZmRlZiBFU0hMSUJWRVJTCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFU0hMSUJWRVJTIiwgRVNITElCVkVSUywgIlNoYXJlZCBsaWJyYXJ5IHZlcnNpb24gbWlzbWF0Y2giKTsKKyNlbmRpZgorCiAgICAgUHlfREVDUkVGKGRlKTsKICAgICByZXR1cm4gbTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvZmF1bHRoYW5kbGVyLmMgYi9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMzYzZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jCkBAIC0wLDAgKzEsMTE1MiBAQAorI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInB5dGhyZWFkLmgiCisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8b2JqZWN0Lmg+CisjaW5jbHVkZSA8ZnJhbWVvYmplY3QuaD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9TSUdNQVNLKSAmJiAhZGVmaW5lZChIQVZFX0JST0tFTl9QVEhSRUFEX1NJR01BU0spCisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKKy8qIEFsbG9jYXRlIGF0IG1heGltdW0gMTAwIE1CIG9mIHRoZSBzdGFjayB0byByYWlzZSB0aGUgc3RhY2sgb3ZlcmZsb3cgKi8KKyNkZWZpbmUgU1RBQ0tfT1ZFUkZMT1dfTUFYX1NJWkUgKDEwMCoxMDI0KjEwMjQpCisKKyNpZmRlZiBXSVRIX1RIUkVBRAorIyAgZGVmaW5lIEZBVUxUSEFORExFUl9MQVRFUgorI2VuZGlmCisKKyNpZm5kZWYgTVNfV0lORE9XUworICAgLyogcmVnaXN0ZXIoKSBpcyB1c2VsZXNzIG9uIFdpbmRvd3MsIGJlY2F1c2Ugb25seSBTSUdTRUdWLCBTSUdBQlJUIGFuZAorICAgICAgU0lHSUxMIGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBwcm9jZXNzLCBhbmQgdGhlc2Ugc2lnbmFscyBjYW4gb25seSBiZSB1c2VkCisgICAgICB3aXRoIGVuYWJsZSgpLCBub3QgdXNpbmcgcmVnaXN0ZXIoKSAqLworIyAgZGVmaW5lIEZBVUxUSEFORExFUl9VU0VSCisjZW5kaWYKKworI2RlZmluZSBQVVRTKGZkLCBzdHIpIHdyaXRlKGZkLCBzdHIsIHN0cmxlbihzdHIpKQorCisjaWZkZWYgSEFWRV9TSUdBQ1RJT04KK3R5cGVkZWYgc3RydWN0IHNpZ2FjdGlvbiBfUHlfc2lnaGFuZGxlcl90OworI2Vsc2UKK3R5cGVkZWYgUHlPU19zaWdoYW5kbGVyX3QgX1B5X3NpZ2hhbmRsZXJfdDsKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW50IHNpZ251bTsKKyAgICBpbnQgZW5hYmxlZDsKKyAgICBjb25zdCBjaGFyKiBuYW1lOworICAgIF9QeV9zaWdoYW5kbGVyX3QgcHJldmlvdXM7CisgICAgaW50IGFsbF90aHJlYWRzOworfSBmYXVsdF9oYW5kbGVyX3Q7CisKK3N0YXRpYyBzdHJ1Y3QgeworICAgIGludCBlbmFibGVkOworICAgIFB5T2JqZWN0ICpmaWxlOworICAgIGludCBmZDsKKyAgICBpbnQgYWxsX3RocmVhZHM7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7Cit9IGZhdGFsX2Vycm9yID0gezAsIE5VTEwsIC0xLCAwfTsKKworI2lmZGVmIEZBVUxUSEFORExFUl9MQVRFUgorc3RhdGljIHN0cnVjdCB7CisgICAgUHlPYmplY3QgKmZpbGU7CisgICAgaW50IGZkOworICAgIFBZX1RJTUVPVVRfVCB0aW1lb3V0X3VzOyAgIC8qIHRpbWVvdXQgaW4gbWljcm9zZWNvbmRzICovCisgICAgaW50IHJlcGVhdDsKKyAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKKyAgICBpbnQgZXhpdDsKKyAgICBjaGFyICpoZWFkZXI7CisgICAgc2l6ZV90IGhlYWRlcl9sZW47CisgICAgLyogVGhlIG1haW4gdGhyZWFkIGFsd2F5cyBob2xkcyB0aGlzIGxvY2suIEl0IGlzIG9ubHkgcmVsZWFzZWQgd2hlbgorICAgICAgIGZhdWx0aGFuZGxlcl90aHJlYWQoKSBpcyBpbnRlcnJ1cHRlZCBiZWZvcmUgdGhpcyB0aHJlYWQgZXhpdHMsIG9yIGF0CisgICAgICAgUHl0aG9uIGV4aXQuICovCisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGNhbmNlbF9ldmVudDsKKyAgICAvKiByZWxlYXNlZCBieSBjaGlsZCB0aHJlYWQgd2hlbiBqb2luZWQgKi8KKyAgICBQeVRocmVhZF90eXBlX2xvY2sgcnVubmluZzsKK30gdGhyZWFkOworI2VuZGlmCisKKyNpZmRlZiBGQVVMVEhBTkRMRVJfVVNFUgordHlwZWRlZiBzdHJ1Y3QgeworICAgIGludCBlbmFibGVkOworICAgIFB5T2JqZWN0ICpmaWxlOworICAgIGludCBmZDsKKyAgICBpbnQgYWxsX3RocmVhZHM7CisgICAgaW50IGNoYWluOworICAgIF9QeV9zaWdoYW5kbGVyX3QgcHJldmlvdXM7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7Cit9IHVzZXJfc2lnbmFsX3Q7CisKK3N0YXRpYyB1c2VyX3NpZ25hbF90ICp1c2VyX3NpZ25hbHM7CisKKy8qIHRoZSBmb2xsb3dpbmcgbWFjcm9zIGNvbWUgZnJvbSBQeXRob246IE1vZHVsZXMvc2lnbmFsbW9kdWxlLmMgKi8KKyNpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiAhZGVmaW5lZChQWUNDX0dDQykKKyNkZWZpbmUgTlNJRyAxMgorI2VuZGlmCisjaWZuZGVmIE5TSUcKKyMgaWYgZGVmaW5lZChfTlNJRykKKyMgIGRlZmluZSBOU0lHIF9OU0lHICAgICAgICAgICAgLyogRm9yIEJTRC9TeXNWICovCisjIGVsaWYgZGVmaW5lZChfU0lHTUFYKQorIyAgZGVmaW5lIE5TSUcgKF9TSUdNQVggKyAxKSAgICAvKiBGb3IgUU5YICovCisjIGVsaWYgZGVmaW5lZChTSUdNQVgpCisjICBkZWZpbmUgTlNJRyAoU0lHTUFYICsgMSkgICAgIC8qIEZvciBkamdwcCAqLworIyBlbHNlCisjICBkZWZpbmUgTlNJRyA2NCAgICAgICAgICAgICAgIC8qIFVzZSBhIHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZSAqLworIyBlbmRpZgorI2VuZGlmCisKK3N0YXRpYyB2b2lkIGZhdWx0aGFuZGxlcl91c2VyKGludCBzaWdudW0pOworI2VuZGlmIC8qIEZBVUxUSEFORExFUl9VU0VSICovCisKKworc3RhdGljIGZhdWx0X2hhbmRsZXJfdCBmYXVsdGhhbmRsZXJfaGFuZGxlcnNbXSA9IHsKKyNpZmRlZiBTSUdCVVMKKyAgICB7U0lHQlVTLCAwLCAiQnVzIGVycm9yIiwgfSwKKyNlbmRpZgorI2lmZGVmIFNJR0lMTAorICAgIHtTSUdJTEwsIDAsICJJbGxlZ2FsIGluc3RydWN0aW9uIiwgfSwKKyNlbmRpZgorICAgIHtTSUdGUEUsIDAsICJGbG9hdGluZyBwb2ludCBleGNlcHRpb24iLCB9LAorICAgIHtTSUdBQlJULCAwLCAiQWJvcnRlZCIsIH0sCisgICAgLyogZGVmaW5lIFNJR1NFR1YgYXQgdGhlIGVuZCB0byBtYWtlIGl0IHRoZSBkZWZhdWx0IGNob2ljZSBpZiBzZWFyY2hpbmcgdGhlCisgICAgICAgaGFuZGxlciBmYWlscyBpbiBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IoKSAqLworICAgIHtTSUdTRUdWLCAwLCAiU2VnbWVudGF0aW9uIGZhdWx0IiwgfQorfTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGZhdWx0aGFuZGxlcl9uc2lnbmFscyA9IFwKKyAgICBQeV9BUlJBWV9MRU5HVEgoZmF1bHRoYW5kbGVyX2hhbmRsZXJzKTsKKworI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKK3N0YXRpYyBzdGFja190IHN0YWNrOworI2VuZGlmCisKKworLyogR2V0IHRoZSBmaWxlIGRlc2NyaXB0b3Igb2YgYSBmaWxlIGJ5IGNhbGxpbmcgaXRzIGZpbGVubygpIG1ldGhvZCBhbmQgdGhlbgorICAgY2FsbCBpdHMgZmx1c2goKSBtZXRob2QuCisKKyAgIElmIGZpbGUgaXMgTlVMTCBvciBQeV9Ob25lLCB1c2Ugc3lzLnN0ZGVyciBhcyB0aGUgbmV3IGZpbGUuCisKKyAgIE9uIHN1Y2Nlc3MsIHJldHVybiB0aGUgbmV3IGZpbGUgYW5kIHdyaXRlIHRoZSBmaWxlIGRlc2NyaXB0b3IgaW50byAqcF9mZC4KKyAgIE9uIGVycm9yLCByZXR1cm4gTlVMTC4gKi8KKworc3RhdGljIFB5T2JqZWN0KgorZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oUHlPYmplY3QgKmZpbGUsIGludCAqcF9mZCkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKGZpbGVubyk7CisgICAgX1B5X0lERU5USUZJRVIoZmx1c2gpOworICAgIGxvbmcgZmRfbG9uZzsKKyAgICBpbnQgZmQ7CisKKyAgICBpZiAoZmlsZSA9PSBOVUxMIHx8IGZpbGUgPT0gUHlfTm9uZSkgeworICAgICAgICBmaWxlID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRlcnIiKTsKKyAgICAgICAgaWYgKGZpbGUgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgInVuYWJsZSB0byBnZXQgc3lzLnN0ZGVyciIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbGUsICZQeUlkX2ZpbGVubywgIiIpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmZCA9IC0xOworICAgIGlmIChQeUxvbmdfQ2hlY2socmVzdWx0KSkgeworICAgICAgICBmZF9sb25nID0gUHlMb25nX0FzTG9uZyhyZXN1bHQpOworICAgICAgICBpZiAoMCA8PSBmZF9sb25nICYmIGZkX2xvbmcgPCBJTlRfTUFYKQorICAgICAgICAgICAgZmQgPSAoaW50KWZkX2xvbmc7CisgICAgfQorICAgIFB5X0RFQ1JFRihyZXN1bHQpOworCisgICAgaWYgKGZkID09IC0xKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZS5maWxlbm8oKSBpcyBub3QgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgIiIpOworICAgIGlmIChyZXN1bHQgIT0gTlVMTCkKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgZWxzZSB7CisgICAgICAgIC8qIGlnbm9yZSBmbHVzaCgpIGVycm9yICovCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgfQorICAgICpwX2ZkID0gZmQ7CisgICAgcmV0dXJuIGZpbGU7Cit9CisKKy8qIEdldCB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkOiBvbmx5IGNhbGwgdGhpcyBmdW5jdGlvbiBpZiB0aGUgY3VycmVudAorICAgdGhyZWFkIGhvbGRzIHRoZSBHSUwuIFJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4gKi8KK3N0YXRpYyBQeVRocmVhZFN0YXRlKgorZ2V0X3RocmVhZF9zdGF0ZSh2b2lkKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidW5hYmxlIHRvIGdldCB0aGUgY3VycmVudCB0aHJlYWQgc3RhdGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiB0c3RhdGU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2ZhdWx0aGFuZGxlcl9kdW1wX3RyYWNlYmFja19weShQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpbGUiLCAiYWxsX3RocmVhZHMiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqZmlsZSA9IE5VTEw7CisgICAgaW50IGFsbF90aHJlYWRzID0gMTsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgY29uc3QgY2hhciAqZXJybXNnOworICAgIGludCBmZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKKyAgICAgICAgInxPaTpkdW1wX3RyYWNlYmFjayIsIGt3bGlzdCwKKyAgICAgICAgJmZpbGUsICZhbGxfdGhyZWFkcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZmlsZSA9IGZhdWx0aGFuZGxlcl9nZXRfZmlsZW5vKGZpbGUsICZmZCk7CisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB0c3RhdGUgPSBnZXRfdGhyZWFkX3N0YXRlKCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChhbGxfdGhyZWFkcykgeworICAgICAgICBlcnJtc2cgPSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIHRzdGF0ZS0+aW50ZXJwLCB0c3RhdGUpOworICAgICAgICBpZiAoZXJybXNnICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIGVycm1zZyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX1B5X0R1bXBUcmFjZWJhY2soZmQsIHRzdGF0ZSk7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCisKKy8qIEhhbmRsZXIgZm9yIFNJR1NFR1YsIFNJR0ZQRSwgU0lHQUJSVCwgU0lHQlVTIGFuZCBTSUdJTEwgc2lnbmFscy4KKworICAgRGlzcGxheSB0aGUgY3VycmVudCBQeXRob24gdHJhY2ViYWNrLCByZXN0b3JlIHRoZSBwcmV2aW91cyBoYW5kbGVyIGFuZCBjYWxsCisgICB0aGUgcHJldmlvdXMgaGFuZGxlci4KKworICAgT24gV2luZG93cywgZG9uJ3QgZXhwbGljaXRseSBjYWxsIHRoZSBwcmV2aW91cyBoYW5kbGVyLCBiZWNhdXNlIHRoZSBXaW5kb3dzCisgICBzaWduYWwgaGFuZGxlciB3b3VsZCBub3QgYmUgY2FsbGVkIChmb3IgYW4gdW5rbm93biByZWFzb24pLiBUaGUgZXhlY3V0aW9uIG9mCisgICB0aGUgcHJvZ3JhbSBjb250aW51ZXMgYXQgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKCkgZXhpdCwgYnV0IHRoZSBzYW1lCisgICBpbnN0cnVjdGlvbiB3aWxsIHJhaXNlIHRoZSBzYW1lIGZhdWx0IChzaWduYWwpLCBhbmQgc28gdGhlIHByZXZpb3VzIGhhbmRsZXIKKyAgIHdpbGwgYmUgY2FsbGVkLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbC1zYWZlIGFuZCBzaG91bGQgb25seSBjYWxsIHNpZ25hbC1zYWZlIGZ1bmN0aW9ucy4gKi8KKworc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcihpbnQgc2lnbnVtKQoreworICAgIGNvbnN0IGludCBmZCA9IGZhdGFsX2Vycm9yLmZkOworICAgIHVuc2lnbmVkIGludCBpOworICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlciA9IE5VTEw7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87CisKKyAgICBpZiAoIWZhdGFsX2Vycm9yLmVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoaT0wOyBpIDwgZmF1bHRoYW5kbGVyX25zaWduYWxzOyBpKyspIHsKKyAgICAgICAgaGFuZGxlciA9ICZmYXVsdGhhbmRsZXJfaGFuZGxlcnNbaV07CisgICAgICAgIGlmIChoYW5kbGVyLT5zaWdudW0gPT0gc2lnbnVtKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChoYW5kbGVyID09IE5VTEwpIHsKKyAgICAgICAgLyogZmF1bHRoYW5kbGVyX25zaWduYWxzID09IDAgKHVubGlrZWx5KSAqLworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogcmVzdG9yZSB0aGUgcHJldmlvdXMgaGFuZGxlciAqLworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgKHZvaWQpc2lnYWN0aW9uKHNpZ251bSwgJmhhbmRsZXItPnByZXZpb3VzLCBOVUxMKTsKKyNlbHNlCisgICAgKHZvaWQpc2lnbmFsKHNpZ251bSwgaGFuZGxlci0+cHJldmlvdXMpOworI2VuZGlmCisgICAgaGFuZGxlci0+ZW5hYmxlZCA9IDA7CisKKyAgICBQVVRTKGZkLCAiRmF0YWwgUHl0aG9uIGVycm9yOiAiKTsKKyAgICBQVVRTKGZkLCBoYW5kbGVyLT5uYW1lKTsKKyAgICBQVVRTKGZkLCAiXG5cbiIpOworCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAvKiBTSUdTRUdWLCBTSUdGUEUsIFNJR0FCUlQsIFNJR0JVUyBhbmQgU0lHSUxMIGFyZSBzeW5jaHJvbm91cyBzaWduYWxzIGFuZAorICAgICAgIGFyZSB0aHVzIGRlbGl2ZXJlZCB0byB0aGUgdGhyZWFkIHRoYXQgY2F1c2VkIHRoZSBmYXVsdC4gR2V0IHRoZSBQeXRob24KKyAgICAgICB0aHJlYWQgc3RhdGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLgorCisgICAgICAgUHlUaHJlYWRTdGF0ZV9HZXQoKSBkb2Vzbid0IGdpdmUgdGhlIHN0YXRlIG9mIHRoZSB0aHJlYWQgdGhhdCBjYXVzZWQgdGhlCisgICAgICAgZmF1bHQgaWYgdGhlIHRocmVhZCByZWxlYXNlZCB0aGUgR0lMLCBhbmQgc28gdGhpcyBmdW5jdGlvbiBjYW5ub3QgYmUKKyAgICAgICB1c2VkLiBSZWFkIHRoZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSAoVExTKSBpbnN0ZWFkOiBjYWxsCisgICAgICAgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKS4gKi8KKyAgICB0c3RhdGUgPSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpOworI2Vsc2UKKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOworI2VuZGlmCisKKyAgICBpZiAoZmF0YWxfZXJyb3IuYWxsX3RocmVhZHMpCisgICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgZmF0YWxfZXJyb3IuaW50ZXJwLCB0c3RhdGUpOworICAgIGVsc2UgeworICAgICAgICBpZiAodHN0YXRlICE9IE5VTEwpCisgICAgICAgICAgICBfUHlfRHVtcFRyYWNlYmFjayhmZCwgdHN0YXRlKTsKKyAgICB9CisKKyAgICBlcnJubyA9IHNhdmVfZXJybm87CisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChzaWdudW0gPT0gU0lHU0VHVikgeworICAgICAgICAvKiBkb24ndCBleHBsaWNpdGx5IGNhbGwgdGhlIHByZXZpb3VzIGhhbmRsZXIgZm9yIFNJR1NFR1YgaW4gdGhpcyBzaWduYWwKKyAgICAgICAgICAgaGFuZGxlciwgYmVjYXVzZSB0aGUgV2luZG93cyBzaWduYWwgaGFuZGxlciB3b3VsZCBub3QgYmUgY2FsbGVkICovCisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICAvKiBjYWxsIHRoZSBwcmV2aW91cyBzaWduYWwgaGFuZGxlcjogaXQgaXMgY2FsbGVkIGltbWVkaWF0bHkgaWYgd2UgdXNlCisgICAgICAgc2lnYWN0aW9uKCkgdGhhbmtzIHRvIFNBX05PREVGRVIgZmxhZywgb3RoZXJ3aXNlIGl0IGlzIGRlZmVycmVkICovCisgICAgcmFpc2Uoc2lnbnVtKTsKK30KKworLyogSW5zdGFsbCB0aGUgaGFuZGxlciBmb3IgZmF0YWwgc2lnbmFscywgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKCkuICovCisKK3N0YXRpYyBQeU9iamVjdCoKK2ZhdWx0aGFuZGxlcl9lbmFibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlsZSIsICJhbGxfdGhyZWFkcyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpmaWxlID0gTlVMTDsKKyAgICBpbnQgYWxsX3RocmVhZHMgPSAxOworICAgIHVuc2lnbmVkIGludCBpOworICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlcjsKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOworI2VuZGlmCisgICAgaW50IGVycjsKKyAgICBpbnQgZmQ7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAorICAgICAgICAifE9pOmVuYWJsZSIsIGt3bGlzdCwgJmZpbGUsICZhbGxfdGhyZWFkcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZmlsZSA9IGZhdWx0aGFuZGxlcl9nZXRfZmlsZW5vKGZpbGUsICZmZCk7CisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB0c3RhdGUgPSBnZXRfdGhyZWFkX3N0YXRlKCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X1hERUNSRUYoZmF0YWxfZXJyb3IuZmlsZSk7CisgICAgUHlfSU5DUkVGKGZpbGUpOworICAgIGZhdGFsX2Vycm9yLmZpbGUgPSBmaWxlOworICAgIGZhdGFsX2Vycm9yLmZkID0gZmQ7CisgICAgZmF0YWxfZXJyb3IuYWxsX3RocmVhZHMgPSBhbGxfdGhyZWFkczsKKyAgICBmYXRhbF9lcnJvci5pbnRlcnAgPSB0c3RhdGUtPmludGVycDsKKworICAgIGlmICghZmF0YWxfZXJyb3IuZW5hYmxlZCkgeworICAgICAgICBmYXRhbF9lcnJvci5lbmFibGVkID0gMTsKKworICAgICAgICBmb3IgKGk9MDsgaSA8IGZhdWx0aGFuZGxlcl9uc2lnbmFsczsgaSsrKSB7CisgICAgICAgICAgICBoYW5kbGVyID0gJmZhdWx0aGFuZGxlcl9oYW5kbGVyc1tpXTsKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgICAgICAgICAgYWN0aW9uLnNhX2hhbmRsZXIgPSBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3I7CisgICAgICAgICAgICBzaWdlbXB0eXNldCgmYWN0aW9uLnNhX21hc2spOworICAgICAgICAgICAgLyogRG8gbm90IHByZXZlbnQgdGhlIHNpZ25hbCBmcm9tIGJlaW5nIHJlY2VpdmVkIGZyb20gd2l0aGluCisgICAgICAgICAgICAgICBpdHMgb3duIHNpZ25hbCBoYW5kbGVyICovCisgICAgICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgPSBTQV9OT0RFRkVSOworI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKKyAgICAgICAgICAgIGlmIChzdGFjay5zc19zcCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgLyogQ2FsbCB0aGUgc2lnbmFsIGhhbmRsZXIgb24gYW4gYWx0ZXJuYXRlIHNpZ25hbCBzdGFjaworICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkIGJ5IHNpZ2FsdHN0YWNrKCkgKi8KKyAgICAgICAgICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgfD0gU0FfT05TVEFDSzsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgZXJyID0gc2lnYWN0aW9uKGhhbmRsZXItPnNpZ251bSwgJmFjdGlvbiwgJmhhbmRsZXItPnByZXZpb3VzKTsKKyNlbHNlCisgICAgICAgICAgICBoYW5kbGVyLT5wcmV2aW91cyA9IHNpZ25hbChoYW5kbGVyLT5zaWdudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IpOworICAgICAgICAgICAgZXJyID0gKGhhbmRsZXItPnByZXZpb3VzID09IFNJR19FUlIpOworI2VuZGlmCisgICAgICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX1J1bnRpbWVFcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBoYW5kbGVyLT5lbmFibGVkID0gMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl9kaXNhYmxlKHZvaWQpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgZmF1bHRfaGFuZGxlcl90ICpoYW5kbGVyOworCisgICAgaWYgKGZhdGFsX2Vycm9yLmVuYWJsZWQpIHsKKyAgICAgICAgZmF0YWxfZXJyb3IuZW5hYmxlZCA9IDA7CisgICAgICAgIGZvciAoaT0wOyBpIDwgZmF1bHRoYW5kbGVyX25zaWduYWxzOyBpKyspIHsKKyAgICAgICAgICAgIGhhbmRsZXIgPSAmZmF1bHRoYW5kbGVyX2hhbmRsZXJzW2ldOworICAgICAgICAgICAgaWYgKCFoYW5kbGVyLT5lbmFibGVkKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgICAgICAgICAodm9pZClzaWdhY3Rpb24oaGFuZGxlci0+c2lnbnVtLCAmaGFuZGxlci0+cHJldmlvdXMsIE5VTEwpOworI2Vsc2UKKyAgICAgICAgICAgICh2b2lkKXNpZ25hbChoYW5kbGVyLT5zaWdudW0sIGhhbmRsZXItPnByZXZpb3VzKTsKKyNlbmRpZgorICAgICAgICAgICAgaGFuZGxlci0+ZW5hYmxlZCA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9DTEVBUihmYXRhbF9lcnJvci5maWxlKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorZmF1bHRoYW5kbGVyX2Rpc2FibGVfcHkoUHlPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKCFmYXRhbF9lcnJvci5lbmFibGVkKSB7CisgICAgICAgIFB5X0lOQ1JFRihQeV9GYWxzZSk7CisgICAgICAgIHJldHVybiBQeV9GYWxzZTsKKyAgICB9CisgICAgZmF1bHRoYW5kbGVyX2Rpc2FibGUoKTsKKyAgICBQeV9JTkNSRUYoUHlfVHJ1ZSk7CisgICAgcmV0dXJuIFB5X1RydWU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2ZhdWx0aGFuZGxlcl9pc19lbmFibGVkKFB5T2JqZWN0ICpzZWxmKQoreworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoZmF0YWxfZXJyb3IuZW5hYmxlZCk7Cit9CisKKyNpZmRlZiBGQVVMVEhBTkRMRVJfTEFURVIKKworc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl90aHJlYWQodm9pZCAqdW51c2VkKQoreworICAgIFB5TG9ja1N0YXR1cyBzdDsKKyAgICBjb25zdCBjaGFyKiBlcnJtc2c7CisgICAgUHlUaHJlYWRTdGF0ZSAqY3VycmVudDsKKyAgICBpbnQgb2s7CisjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfU0lHTUFTSykgJiYgIWRlZmluZWQoSEFWRV9CUk9LRU5fUFRIUkVBRF9TSUdNQVNLKQorICAgIHNpZ3NldF90IHNldDsKKworICAgIC8qIHdlIGRvbid0IHdhbnQgdG8gcmVjZWl2ZSBhbnkgc2lnbmFsICovCisgICAgc2lnZmlsbHNldCgmc2V0KTsKKyAgICBwdGhyZWFkX3NpZ21hc2soU0lHX1NFVE1BU0ssICZzZXQsIE5VTEwpOworI2VuZGlmCisKKyAgICBkbyB7CisgICAgICAgIHN0ID0gUHlUaHJlYWRfYWNxdWlyZV9sb2NrX3RpbWVkKHRocmVhZC5jYW5jZWxfZXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZC50aW1lb3V0X3VzLCAwKTsKKyAgICAgICAgaWYgKHN0ID09IFBZX0xPQ0tfQUNRVUlSRUQpIHsKKyAgICAgICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0aHJlYWQuY2FuY2VsX2V2ZW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC8qIFRpbWVvdXQgPT4gZHVtcCB0cmFjZWJhY2sgKi8KKyAgICAgICAgYXNzZXJ0KHN0ID09IFBZX0xPQ0tfRkFJTFVSRSk7CisKKyAgICAgICAgLyogZ2V0IHRoZSB0aHJlYWQgaG9sZGluZyB0aGUgR0lMLCBOVUxMIGlmIG5vIHRocmVhZCBob2xkIHRoZSBHSUwgKi8KKyAgICAgICAgY3VycmVudCA9IF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KTsKKworICAgICAgICB3cml0ZSh0aHJlYWQuZmQsIHRocmVhZC5oZWFkZXIsIHRocmVhZC5oZWFkZXJfbGVuKTsKKworICAgICAgICBlcnJtc2cgPSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHModGhyZWFkLmZkLCB0aHJlYWQuaW50ZXJwLCBjdXJyZW50KTsKKyAgICAgICAgb2sgPSAoZXJybXNnID09IE5VTEwpOworCisgICAgICAgIGlmICh0aHJlYWQuZXhpdCkKKyAgICAgICAgICAgIF9leGl0KDEpOworICAgIH0gd2hpbGUgKG9rICYmIHRocmVhZC5yZXBlYXQpOworCisgICAgLyogVGhlIG9ubHkgd2F5IG91dCAqLworICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0aHJlYWQucnVubmluZyk7Cit9CisKK3N0YXRpYyB2b2lkCitjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIodm9pZCkKK3sKKyAgICAvKiBOb3RpZnkgY2FuY2VsbGF0aW9uICovCisgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHRocmVhZC5jYW5jZWxfZXZlbnQpOworCisgICAgLyogV2FpdCBmb3IgdGhyZWFkIHRvIGpvaW4gKi8KKyAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2sodGhyZWFkLnJ1bm5pbmcsIDEpOworICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0aHJlYWQucnVubmluZyk7CisKKyAgICAvKiBUaGUgbWFpbiB0aHJlYWQgc2hvdWxkIGFsd2F5cyBob2xkIHRoZSBjYW5jZWxfZXZlbnQgbG9jayAqLworICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayh0aHJlYWQuY2FuY2VsX2V2ZW50LCAxKTsKKworICAgIFB5X0NMRUFSKHRocmVhZC5maWxlKTsKKyAgICBpZiAodGhyZWFkLmhlYWRlcikgeworICAgICAgICBmcmVlKHRocmVhZC5oZWFkZXIpOworICAgICAgICB0aHJlYWQuaGVhZGVyID0gTlVMTDsKKyAgICB9Cit9CisKK3N0YXRpYyBjaGFyKgorZm9ybWF0X3RpbWVvdXQoZG91YmxlIHRpbWVvdXQpCit7CisgICAgdW5zaWduZWQgbG9uZyB1cywgc2VjLCBtaW4sIGhvdXI7CisgICAgZG91YmxlIGludHBhcnQsIGZyYWNwYXJ0OworICAgIGNoYXIgYnVmZmVyWzEwMF07CisKKyAgICBmcmFjcGFydCA9IG1vZGYodGltZW91dCwgJmludHBhcnQpOworICAgIHNlYyA9ICh1bnNpZ25lZCBsb25nKWludHBhcnQ7CisgICAgdXMgPSAodW5zaWduZWQgbG9uZykoZnJhY3BhcnQgKiAxZTYpOworICAgIG1pbiA9IHNlYyAvIDYwOworICAgIHNlYyAlPSA2MDsKKyAgICBob3VyID0gbWluIC8gNjA7CisgICAgbWluICU9IDYwOworCisgICAgaWYgKHVzICE9IDApCisgICAgICAgIFB5T1Nfc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAiVGltZW91dCAoJWx1OiUwMmx1OiUwMmx1LiUwNmx1KSFcbiIsCisgICAgICAgICAgICAgICAgICAgICAgaG91ciwgbWluLCBzZWMsIHVzKTsKKyAgICBlbHNlCisgICAgICAgIFB5T1Nfc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAiVGltZW91dCAoJWx1OiUwMmx1OiUwMmx1KSFcbiIsCisgICAgICAgICAgICAgICAgICAgICAgaG91ciwgbWluLCBzZWMpOworCisgICAgcmV0dXJuIHN0cmR1cChidWZmZXIpOworfQorCitzdGF0aWMgUHlPYmplY3QqCitmYXVsdGhhbmRsZXJfZHVtcF90cmFjZWJhY2tfbGF0ZXIoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsidGltZW91dCIsICJyZXBlYXQiLCAiZmlsZSIsICJleGl0IiwgTlVMTH07CisgICAgZG91YmxlIHRpbWVvdXQ7CisgICAgUFlfVElNRU9VVF9UIHRpbWVvdXRfdXM7CisgICAgaW50IHJlcGVhdCA9IDA7CisgICAgUHlPYmplY3QgKmZpbGUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgZXhpdCA9IDA7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIGNoYXIgKmhlYWRlcjsKKyAgICBzaXplX3QgaGVhZGVyX2xlbjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKKyAgICAgICAgImR8aU9pOmR1bXBfdHJhY2ViYWNrX2xhdGVyIiwga3dsaXN0LAorICAgICAgICAmdGltZW91dCwgJnJlcGVhdCwgJmZpbGUsICZleGl0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCh0aW1lb3V0ICogMWU2KSA+PSAoZG91YmxlKSBQWV9USU1FT1VUX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgICJ0aW1lb3V0IHZhbHVlIGlzIHRvbyBsYXJnZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdGltZW91dF91cyA9IChQWV9USU1FT1VUX1QpKHRpbWVvdXQgKiAxZTYpOworICAgIGlmICh0aW1lb3V0X3VzIDw9IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ0aW1lb3V0IG11c3QgYmUgZ3JlYXRlciB0aGFuIDAiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgdHN0YXRlID0gZ2V0X3RocmVhZF9zdGF0ZSgpOworICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmaWxlID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oZmlsZSwgJmZkKTsKKyAgICBpZiAoZmlsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIGZvcm1hdCB0aGUgdGltZW91dCAqLworICAgIGhlYWRlciA9IGZvcm1hdF90aW1lb3V0KHRpbWVvdXQpOworICAgIGlmIChoZWFkZXIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgaGVhZGVyX2xlbiA9IHN0cmxlbihoZWFkZXIpOworCisgICAgLyogQ2FuY2VsIHByZXZpb3VzIHRocmVhZCwgaWYgcnVubmluZyAqLworICAgIGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpOworCisgICAgUHlfWERFQ1JFRih0aHJlYWQuZmlsZSk7CisgICAgUHlfSU5DUkVGKGZpbGUpOworICAgIHRocmVhZC5maWxlID0gZmlsZTsKKyAgICB0aHJlYWQuZmQgPSBmZDsKKyAgICB0aHJlYWQudGltZW91dF91cyA9IHRpbWVvdXRfdXM7CisgICAgdGhyZWFkLnJlcGVhdCA9IHJlcGVhdDsKKyAgICB0aHJlYWQuaW50ZXJwID0gdHN0YXRlLT5pbnRlcnA7CisgICAgdGhyZWFkLmV4aXQgPSBleGl0OworICAgIHRocmVhZC5oZWFkZXIgPSBoZWFkZXI7CisgICAgdGhyZWFkLmhlYWRlcl9sZW4gPSBoZWFkZXJfbGVuOworCisgICAgLyogQXJtIHRoZXNlIGxvY2tzIHRvIHNlcnZlIGFzIGV2ZW50cyB3aGVuIHJlbGVhc2VkICovCisgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHRocmVhZC5ydW5uaW5nLCAxKTsKKworICAgIGlmIChQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkKGZhdWx0aGFuZGxlcl90aHJlYWQsIE5VTEwpID09IC0xKSB7CisgICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0aHJlYWQucnVubmluZyk7CisgICAgICAgIFB5X0NMRUFSKHRocmVhZC5maWxlKTsKKyAgICAgICAgZnJlZShoZWFkZXIpOworICAgICAgICB0aHJlYWQuaGVhZGVyID0gTlVMTDsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ1bmFibGUgdG8gc3RhcnQgd2F0Y2hkb2cgdGhyZWFkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QqCitmYXVsdGhhbmRsZXJfY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyX3B5KFB5T2JqZWN0ICpzZWxmKQoreworICAgIGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmICAvKiBGQVVMVEhBTkRMRVJfTEFURVIgKi8KKworI2lmZGVmIEZBVUxUSEFORExFUl9VU0VSCitzdGF0aWMgaW50CitmYXVsdGhhbmRsZXJfcmVnaXN0ZXIoaW50IHNpZ251bSwgaW50IGNoYWluLCBfUHlfc2lnaGFuZGxlcl90ICpwX3ByZXZpb3VzKQoreworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rpb247CisgICAgYWN0aW9uLnNhX2hhbmRsZXIgPSBmYXVsdGhhbmRsZXJfdXNlcjsKKyAgICBzaWdlbXB0eXNldCgmYWN0aW9uLnNhX21hc2spOworICAgIC8qIGlmIHRoZSBzaWduYWwgaXMgcmVjZWl2ZWQgd2hpbGUgdGhlIGtlcm5lbCBpcyBleGVjdXRpbmcgYSBzeXN0ZW0KKyAgICAgICBjYWxsLCB0cnkgdG8gcmVzdGFydCB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiBpbnRlcnJ1cHRpbmcgaXQgYW5kCisgICAgICAgcmV0dXJuIEVJTlRSLiAqLworICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX1JFU1RBUlQ7CisgICAgaWYgKGNoYWluKSB7CisgICAgICAgIC8qIGRvIG5vdCBwcmV2ZW50IHRoZSBzaWduYWwgZnJvbSBiZWluZyByZWNlaXZlZCBmcm9tIHdpdGhpbiBpdHMKKyAgICAgICAgICAgb3duIHNpZ25hbCBoYW5kbGVyICovCisgICAgICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX05PREVGRVI7CisgICAgfQorI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKKyAgICBpZiAoc3RhY2suc3Nfc3AgIT0gTlVMTCkgeworICAgICAgICAvKiBDYWxsIHRoZSBzaWduYWwgaGFuZGxlciBvbiBhbiBhbHRlcm5hdGUgc2lnbmFsIHN0YWNrCisgICAgICAgICAgIHByb3ZpZGVkIGJ5IHNpZ2FsdHN0YWNrKCkgKi8KKyAgICAgICAgYWN0aW9uLnNhX2ZsYWdzIHw9IFNBX09OU1RBQ0s7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHNpZ2FjdGlvbihzaWdudW0sICZhY3Rpb24sIHBfcHJldmlvdXMpOworI2Vsc2UKKyAgICBfUHlfc2lnaGFuZGxlcl90IHByZXZpb3VzOworICAgIHByZXZpb3VzID0gc2lnbmFsKHNpZ251bSwgZmF1bHRoYW5kbGVyX3VzZXIpOworICAgIGlmIChwX3ByZXZpb3VzICE9IE5VTEwpCisgICAgICAgICpwX3ByZXZpb3VzID0gcHJldmlvdXM7CisgICAgcmV0dXJuIChwcmV2aW91cyA9PSBTSUdfRVJSKTsKKyNlbmRpZgorfQorCisvKiBIYW5kbGVyIG9mIHVzZXIgc2lnbmFscyAoZS5nLiBTSUdVU1IxKS4KKworICAgRHVtcCB0aGUgdHJhY2ViYWNrIG9mIHRoZSBjdXJyZW50IHRocmVhZCwgb3Igb2YgYWxsIHRocmVhZHMgaWYKKyAgIHRocmVhZC5hbGxfdGhyZWFkcyBpcyB0cnVlLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlIGFuZCBzaG91bGQgb25seSBjYWxsIHNpZ25hbCBzYWZlIGZ1bmN0aW9ucy4gKi8KKworc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl91c2VyKGludCBzaWdudW0pCit7CisgICAgdXNlcl9zaWduYWxfdCAqdXNlcjsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgaW50IHNhdmVfZXJybm8gPSBlcnJubzsKKworICAgIHVzZXIgPSAmdXNlcl9zaWduYWxzW3NpZ251bV07CisgICAgaWYgKCF1c2VyLT5lbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIC8qIFB5VGhyZWFkU3RhdGVfR2V0KCkgZG9lc24ndCBnaXZlIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCB0aHJlYWQgaWYKKyAgICAgICB0aGUgdGhyZWFkIGRvZXNuJ3QgaG9sZCB0aGUgR0lMLiBSZWFkIHRoZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSAoVExTKQorICAgICAgIGluc3RlYWQ6IGNhbGwgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKS4gKi8KKyAgICB0c3RhdGUgPSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpOworI2Vsc2UKKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOworI2VuZGlmCisKKyAgICBpZiAodXNlci0+YWxsX3RocmVhZHMpCisgICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyh1c2VyLT5mZCwgdXNlci0+aW50ZXJwLCB0c3RhdGUpOworICAgIGVsc2UgeworICAgICAgICBpZiAodHN0YXRlICE9IE5VTEwpCisgICAgICAgICAgICBfUHlfRHVtcFRyYWNlYmFjayh1c2VyLT5mZCwgdHN0YXRlKTsKKyAgICB9CisjaWZkZWYgSEFWRV9TSUdBQ1RJT04KKyAgICBpZiAodXNlci0+Y2hhaW4pIHsKKyAgICAgICAgKHZvaWQpc2lnYWN0aW9uKHNpZ251bSwgJnVzZXItPnByZXZpb3VzLCBOVUxMKTsKKyAgICAgICAgZXJybm8gPSBzYXZlX2Vycm5vOworCisgICAgICAgIC8qIGNhbGwgdGhlIHByZXZpb3VzIHNpZ25hbCBoYW5kbGVyICovCisgICAgICAgIHJhaXNlKHNpZ251bSk7CisKKyAgICAgICAgc2F2ZV9lcnJubyA9IGVycm5vOworICAgICAgICAodm9pZClmYXVsdGhhbmRsZXJfcmVnaXN0ZXIoc2lnbnVtLCB1c2VyLT5jaGFpbiwgTlVMTCk7CisgICAgICAgIGVycm5vID0gc2F2ZV9lcnJubzsKKyAgICB9CisjZWxzZQorICAgIGlmICh1c2VyLT5jaGFpbikgeworICAgICAgICBlcnJubyA9IHNhdmVfZXJybm87CisgICAgICAgIC8qIGNhbGwgdGhlIHByZXZpb3VzIHNpZ25hbCBoYW5kbGVyICovCisgICAgICAgIHVzZXItPnByZXZpb3VzKHNpZ251bSk7CisgICAgfQorI2VuZGlmCit9CisKK3N0YXRpYyBpbnQKK2NoZWNrX3NpZ251bShpbnQgc2lnbnVtKQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yIChpPTA7IGkgPCBmYXVsdGhhbmRsZXJfbnNpZ25hbHM7IGkrKykgeworICAgICAgICBpZiAoZmF1bHRoYW5kbGVyX2hhbmRsZXJzW2ldLnNpZ251bSA9PSBzaWdudW0pIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbCAlaSBjYW5ub3QgYmUgcmVnaXN0ZXJlZCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgZW5hYmxlKCkgaW5zdGVhZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbnVtKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIGlmIChzaWdudW0gPCAxIHx8IE5TSUcgPD0gc2lnbnVtKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAic2lnbmFsIG51bWJlciBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgUHlPYmplY3QqCitmYXVsdGhhbmRsZXJfcmVnaXN0ZXJfcHkoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzaWdudW0iLCAiZmlsZSIsICJhbGxfdGhyZWFkcyIsICJjaGFpbiIsIE5VTEx9OworICAgIGludCBzaWdudW07CisgICAgUHlPYmplY3QgKmZpbGUgPSBOVUxMOworICAgIGludCBhbGxfdGhyZWFkcyA9IDE7CisgICAgaW50IGNoYWluID0gMDsKKyAgICBpbnQgZmQ7CisgICAgdXNlcl9zaWduYWxfdCAqdXNlcjsKKyAgICBfUHlfc2lnaGFuZGxlcl90IHByZXZpb3VzOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICBpbnQgZXJyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAorICAgICAgICAiaXxPaWk6cmVnaXN0ZXIiLCBrd2xpc3QsCisgICAgICAgICZzaWdudW0sICZmaWxlLCAmYWxsX3RocmVhZHMsICZjaGFpbikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFjaGVja19zaWdudW0oc2lnbnVtKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB0c3RhdGUgPSBnZXRfdGhyZWFkX3N0YXRlKCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZpbGUgPSBmYXVsdGhhbmRsZXJfZ2V0X2ZpbGVubyhmaWxlLCAmZmQpOworICAgIGlmIChmaWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHVzZXJfc2lnbmFscyA9PSBOVUxMKSB7CisgICAgICAgIHVzZXJfc2lnbmFscyA9IGNhbGxvYyhOU0lHLCBzaXplb2YodXNlcl9zaWduYWxfdCkpOworICAgICAgICBpZiAodXNlcl9zaWduYWxzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICB9CisgICAgdXNlciA9ICZ1c2VyX3NpZ25hbHNbc2lnbnVtXTsKKworICAgIGlmICghdXNlci0+ZW5hYmxlZCkgeworICAgICAgICBlcnIgPSBmYXVsdGhhbmRsZXJfcmVnaXN0ZXIoc2lnbnVtLCBjaGFpbiwgJnByZXZpb3VzKTsKKyAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9YREVDUkVGKHVzZXItPmZpbGUpOworICAgIFB5X0lOQ1JFRihmaWxlKTsKKyAgICB1c2VyLT5maWxlID0gZmlsZTsKKyAgICB1c2VyLT5mZCA9IGZkOworICAgIHVzZXItPmFsbF90aHJlYWRzID0gYWxsX3RocmVhZHM7CisgICAgdXNlci0+Y2hhaW4gPSBjaGFpbjsKKyAgICB1c2VyLT5wcmV2aW91cyA9IHByZXZpb3VzOworICAgIHVzZXItPmludGVycCA9IHRzdGF0ZS0+aW50ZXJwOworICAgIHVzZXItPmVuYWJsZWQgPSAxOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBpbnQKK2ZhdWx0aGFuZGxlcl91bnJlZ2lzdGVyKHVzZXJfc2lnbmFsX3QgKnVzZXIsIGludCBzaWdudW0pCit7CisgICAgaWYgKCF1c2VyLT5lbmFibGVkKQorICAgICAgICByZXR1cm4gMDsKKyAgICB1c2VyLT5lbmFibGVkID0gMDsKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgICh2b2lkKXNpZ2FjdGlvbihzaWdudW0sICZ1c2VyLT5wcmV2aW91cywgTlVMTCk7CisjZWxzZQorICAgICh2b2lkKXNpZ25hbChzaWdudW0sIHVzZXItPnByZXZpb3VzKTsKKyNlbmRpZgorICAgIFB5X0NMRUFSKHVzZXItPmZpbGUpOworICAgIHVzZXItPmZkID0gLTE7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2ZhdWx0aGFuZGxlcl91bnJlZ2lzdGVyX3B5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgc2lnbnVtOworICAgIHVzZXJfc2lnbmFsX3QgKnVzZXI7CisgICAgaW50IGNoYW5nZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTp1bnJlZ2lzdGVyIiwgJnNpZ251bSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFjaGVja19zaWdudW0oc2lnbnVtKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAodXNlcl9zaWduYWxzID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKworICAgIHVzZXIgPSAmdXNlcl9zaWduYWxzW3NpZ251bV07CisgICAgY2hhbmdlID0gZmF1bHRoYW5kbGVyX3VucmVnaXN0ZXIodXNlciwgc2lnbnVtKTsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKGNoYW5nZSk7Cit9CisjZW5kaWYgICAvKiBGQVVMVEhBTkRMRVJfVVNFUiAqLworCisKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfcmVhZF9udWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB2b2xhdGlsZSBpbnQgKng7CisgICAgdm9sYXRpbGUgaW50IHk7CisgICAgaW50IHJlbGVhc2VfZ2lsID0gMDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOl9yZWFkX251bGwiLCAmcmVsZWFzZV9naWwpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHggPSBOVUxMOworICAgIGlmIChyZWxlYXNlX2dpbCkgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHkgPSAqeDsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IGVsc2UKKyAgICAgICAgeSA9ICp4OworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoeSk7CisKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ZhdWx0aGFuZGxlcl9zaWdzZWd2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisgICAgLyogRm9yIFNJR1NFR1YsIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcigpIHJlc3RvcmVzIHRoZSBwcmV2aW91cyBzaWduYWwKKyAgICAgICBoYW5kbGVyIGFuZCB0aGVuIGdpdmVzIGJhY2sgdGhlIGV4ZWN1dGlvbiBmbG93IHRvIHRoZSBwcm9ncmFtICh3aXRob3V0CisgICAgICAgZXhwbGljaXRseSBjYWxsaW5nIHRoZSBwcmV2aW91cyBlcnJvciBoYW5kbGVyKS4gSW4gYSBub3JtYWwgY2FzZSwgdGhlCisgICAgICAgU0lHU0VHViB3YXMgcmFpc2VkIGJ5IHRoZSBrZXJuZWwgYmVjYXVzZSBvZiBhIGZhdWx0LCBhbmQgc28gaWYgdGhlCisgICAgICAgcHJvZ3JhbSByZXRyaWVzIHRvIGV4ZWN1dGUgdGhlIHNhbWUgaW5zdHJ1Y3Rpb24sIHRoZSBmYXVsdCB3aWxsIGJlCisgICAgICAgcmFpc2VkIGFnYWluLgorCisgICAgICAgSGVyZSB0aGUgZmF1bHQgaXMgc2ltdWxhdGVkIGJ5IGEgZmFrZSBTSUdTRUdWIHNpZ25hbCByYWlzZWQgYnkgdGhlCisgICAgICAgYXBwbGljYXRpb24uIFdlIGhhdmUgdG8gcmFpc2UgU0lHU0VHViBhdCBsZWFzZSB0d2ljZTogb25jZSBmb3IKKyAgICAgICBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IoKSwgYW5kIG9uZSBtb3JlIHRpbWUgZm9yIHRoZSBwcmV2aW91cyBzaWduYWwKKyAgICAgICBoYW5kbGVyLiAqLworICAgIHdoaWxlKDEpCisgICAgICAgIHJhaXNlKFNJR1NFR1YpOworI2Vsc2UKKyAgICByYWlzZShTSUdTRUdWKTsKKyNlbmRpZgorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZmF1bHRoYW5kbGVyX3NpZ2ZwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgLyogRG8gYW4gaW50ZWdlciBkaXZpc2lvbiBieSB6ZXJvOiByYWlzZSBhIFNJR0ZQRSBvbiBJbnRlbCBDUFUsIGJ1dCBub3Qgb24KKyAgICAgICBQb3dlclBDLiBVc2Ugdm9sYXRpbGUgdG8gZGlzYWJsZSBjb21waWxlLXRpbWUgb3B0aW1pemF0aW9ucy4gKi8KKyAgICB2b2xhdGlsZSBpbnQgeCA9IDEsIHkgPSAwLCB6OworICAgIHogPSB4IC8geTsKKyAgICAvKiBJZiB0aGUgZGl2aXNpb24gYnkgemVybyBkaWRuJ3QgcmFpc2UgYSBTSUdGUEUgKGUuZy4gb24gUG93ZXJQQyksCisgICAgICAgcmFpc2UgaXQgbWFudWFsbHkuICovCisgICAgcmFpc2UoU0lHRlBFKTsKKyAgICAvKiBUaGlzIGxpbmUgaXMgbmV2ZXIgcmVhY2hlZCwgYnV0IHdlIHByZXRlbmQgdG8gbWFrZSBzb21ldGhpbmcgd2l0aCB6CisgICAgICAgdG8gc2lsZW5jZSBhIGNvbXBpbGVyIHdhcm5pbmcuICovCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh6KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ZhdWx0aGFuZGxlcl9zaWdhYnJ0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyNpZmRlZiBfTVNDX1ZFUgorICAgIC8qIFZpc3VhbCBTdHVkaW86IGNvbmZpZ3VyZSBhYm9ydCgpIHRvIG5vdCBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2Ugbm9yCisgICAgICAgb3BlbiBhIHBvcHVwIGFza2luZyB0byByZXBvcnQgdGhlIGZhdWx0LiAqLworICAgIF9zZXRfYWJvcnRfYmVoYXZpb3IoMCwgX1dSSVRFX0FCT1JUX01TRyB8IF9DQUxMX1JFUE9SVEZBVUxUKTsKKyNlbmRpZgorICAgIGFib3J0KCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKyNpZmRlZiBTSUdCVVMKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfc2lnYnVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByYWlzZShTSUdCVVMpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKKyNpZmRlZiBTSUdJTEwKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfc2lnaWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByYWlzZShTSUdJTEwpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3JfcHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNoYXIgKm1lc3NhZ2U7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5OmZhdGFsX2Vycm9yIiwgJm1lc3NhZ2UpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9GYXRhbEVycm9yKG1lc3NhZ2UpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisjaWYgZGVmaW5lZChIQVZFX1NJR0FMVFNUQUNLKSAmJiBkZWZpbmVkKEhBVkVfU0lHQUNUSU9OKQorc3RhdGljIHZvaWQqCitzdGFja19vdmVyZmxvdyh2b2lkICptaW5fc3AsIHZvaWQgKm1heF9zcCwgc2l6ZV90ICpkZXB0aCkKK3sKKyAgICAvKiBhbGxvY2F0ZSA0MDk2IGJ5dGVzIG9uIHRoZSBzdGFjayBhdCBlYWNoIGNhbGwgKi8KKyAgICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcls0MDk2XTsKKyAgICB2b2lkICpzcCA9ICZidWZmZXI7CisgICAgKmRlcHRoICs9IDE7CisgICAgaWYgKHNwIDwgbWluX3NwIHx8IG1heF9zcCA8IHNwKQorICAgICAgICByZXR1cm4gc3A7CisgICAgYnVmZmVyWzBdID0gMTsKKyAgICBidWZmZXJbNDA5NV0gPSAwOworICAgIHJldHVybiBzdGFja19vdmVyZmxvdyhtaW5fc3AsIG1heF9zcCwgZGVwdGgpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZmF1bHRoYW5kbGVyX3N0YWNrX292ZXJmbG93KFB5T2JqZWN0ICpzZWxmKQoreworICAgIHNpemVfdCBkZXB0aCwgc2l6ZTsKKyAgICBjaGFyICpzcCA9IChjaGFyICopJmRlcHRoLCAqc3RvcDsKKworICAgIGRlcHRoID0gMDsKKyAgICBzdG9wID0gc3RhY2tfb3ZlcmZsb3coc3AgLSBTVEFDS19PVkVSRkxPV19NQVhfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3AgKyBTVEFDS19PVkVSRkxPV19NQVhfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmRlcHRoKTsKKyAgICBpZiAoc3AgPCBzdG9wKQorICAgICAgICBzaXplID0gc3RvcCAtIHNwOworICAgIGVsc2UKKyAgICAgICAgc2l6ZSA9IHNwIC0gc3RvcDsKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAidW5hYmxlIHRvIHJhaXNlIGEgc3RhY2sgb3ZlcmZsb3cgKGFsbG9jYXRlZCAlenUgYnl0ZXMgIgorICAgICAgICAib24gdGhlIHN0YWNrLCAlenUgcmVjdXJzaXZlIGNhbGxzKSIsCisgICAgICAgIHNpemUsIGRlcHRoKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgorCisKK3N0YXRpYyBpbnQKK2ZhdWx0aGFuZGxlcl90cmF2ZXJzZShQeU9iamVjdCAqbW9kdWxlLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyNpZmRlZiBGQVVMVEhBTkRMRVJfVVNFUgorICAgIHVuc2lnbmVkIGludCBzaWdudW07CisjZW5kaWYKKworI2lmZGVmIEZBVUxUSEFORExFUl9MQVRFUgorICAgIFB5X1ZJU0lUKHRocmVhZC5maWxlKTsKKyNlbmRpZgorI2lmZGVmIEZBVUxUSEFORExFUl9VU0VSCisgICAgaWYgKHVzZXJfc2lnbmFscyAhPSBOVUxMKSB7CisgICAgICAgIGZvciAoc2lnbnVtPTA7IHNpZ251bSA8IE5TSUc7IHNpZ251bSsrKQorICAgICAgICAgICAgUHlfVklTSVQodXNlcl9zaWduYWxzW3NpZ251bV0uZmlsZSk7CisgICAgfQorI2VuZGlmCisgICAgUHlfVklTSVQoZmF0YWxfZXJyb3IuZmlsZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5RG9jX1NUUlZBUihtb2R1bGVfZG9jLAorImZhdWx0aGFuZGxlciBtb2R1bGUuIik7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVfbWV0aG9kc1tdID0geworICAgIHsiZW5hYmxlIiwKKyAgICAgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9lbmFibGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICBQeURvY19TVFIoImVuYWJsZShmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUpOiAiCisgICAgICAgICAgICAgICAiZW5hYmxlIHRoZSBmYXVsdCBoYW5kbGVyIil9LAorICAgIHsiZGlzYWJsZSIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfZGlzYWJsZV9weSwgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiZGlzYWJsZSgpOiBkaXNhYmxlIHRoZSBmYXVsdCBoYW5kbGVyIil9LAorICAgIHsiaXNfZW5hYmxlZCIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfaXNfZW5hYmxlZCwgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiaXNfZW5hYmxlZCgpLT5ib29sOiBjaGVjayBpZiB0aGUgaGFuZGxlciBpcyBlbmFibGVkIil9LAorICAgIHsiZHVtcF90cmFjZWJhY2siLAorICAgICAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX2R1bXBfdHJhY2ViYWNrX3B5LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKKyAgICAgUHlEb2NfU1RSKCJkdW1wX3RyYWNlYmFjayhmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUpOiAiCisgICAgICAgICAgICAgICAiZHVtcCB0aGUgdHJhY2ViYWNrIG9mIHRoZSBjdXJyZW50IHRocmVhZCwgb3Igb2YgYWxsIHRocmVhZHMgIgorICAgICAgICAgICAgICAgImlmIGFsbF90aHJlYWRzIGlzIFRydWUsIGludG8gZmlsZSIpfSwKKyNpZmRlZiBGQVVMVEhBTkRMRVJfTEFURVIKKyAgICB7ImR1bXBfdHJhY2ViYWNrX2xhdGVyIiwKKyAgICAgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9kdW1wX3RyYWNlYmFja19sYXRlciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCisgICAgIFB5RG9jX1NUUigiZHVtcF90cmFjZWJhY2tfbGF0ZXIodGltZW91dCwgcmVwZWF0PUZhbHNlLCBmaWxlPXN5cy5zdGRlcnJuLCBleGl0PUZhbHNlKTpcbiIKKyAgICAgICAgICAgICAgICJkdW1wIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRocmVhZHMgaW4gdGltZW91dCBzZWNvbmRzLFxuIgorICAgICAgICAgICAgICAgIm9yIGVhY2ggdGltZW91dCBzZWNvbmRzIGlmIHJlcGVhdCBpcyBUcnVlLiBJZiBleGl0IGlzIFRydWUsICIKKyAgICAgICAgICAgICAgICJjYWxsIF9leGl0KDEpIHdoaWNoIGlzIG5vdCBzYWZlLiIpfSwKKyAgICB7ImNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlciIsCisgICAgIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyX3B5LCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKTpcbmNhbmNlbCB0aGUgcHJldmlvdXMgY2FsbCAiCisgICAgICAgICAgICAgICAidG8gZHVtcF90cmFjZWJhY2tfbGF0ZXIoKS4iKX0sCisjZW5kaWYKKworI2lmZGVmIEZBVUxUSEFORExFUl9VU0VSCisgICAgeyJyZWdpc3RlciIsCisgICAgIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfcmVnaXN0ZXJfcHksIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICBQeURvY19TVFIoInJlZ2lzdGVyKHNpZ251bSwgZmlsZT1zeXMuc3RkZXJyLCBhbGxfdGhyZWFkcz1UcnVlLCBjaGFpbj1GYWxzZSk6ICIKKyAgICAgICAgICAgICAgICJyZWdpc3RlciBhbiBoYW5kbGVyIGZvciB0aGUgc2lnbmFsICdzaWdudW0nOiBkdW1wIHRoZSAiCisgICAgICAgICAgICAgICAidHJhY2ViYWNrIG9mIHRoZSBjdXJyZW50IHRocmVhZCwgb3Igb2YgYWxsIHRocmVhZHMgaWYgIgorICAgICAgICAgICAgICAgImFsbF90aHJlYWRzIGlzIFRydWUsIGludG8gZmlsZSIpfSwKKyAgICB7InVucmVnaXN0ZXIiLAorICAgICBmYXVsdGhhbmRsZXJfdW5yZWdpc3Rlcl9weSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCisgICAgIFB5RG9jX1NUUigidW5yZWdpc3RlcihzaWdudW0pOiB1bnJlZ2lzdGVyIHRoZSBoYW5kbGVyIG9mIHRoZSBzaWduYWwgIgorICAgICAgICAgICAgICAgICInc2lnbnVtJyByZWdpc3RlcmVkIGJ5IHJlZ2lzdGVyKCkiKX0sCisjZW5kaWYKKworICAgIHsiX3JlYWRfbnVsbCIsIGZhdWx0aGFuZGxlcl9yZWFkX251bGwsIE1FVEhfVkFSQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfcmVhZF9udWxsKHJlbGVhc2VfZ2lsPUZhbHNlKTogcmVhZCBmcm9tIE5VTEwsIHJhaXNlICIKKyAgICAgICAgICAgICAgICJhIFNJR1NFR1Ygb3IgU0lHQlVTIHNpZ25hbCBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtIil9LAorICAgIHsiX3NpZ3NlZ3YiLCBmYXVsdGhhbmRsZXJfc2lnc2VndiwgTUVUSF9WQVJBUkdTLAorICAgICBQeURvY19TVFIoIl9zaWdzZWd2KCk6IHJhaXNlIGEgU0lHU0VHViBzaWduYWwiKX0sCisgICAgeyJfc2lnYWJydCIsIGZhdWx0aGFuZGxlcl9zaWdhYnJ0LCBNRVRIX1ZBUkFSR1MsCisgICAgIFB5RG9jX1NUUigiX3NpZ2FicnQoKTogcmFpc2UgYSBTSUdBQlJUIHNpZ25hbCIpfSwKKyAgICB7Il9zaWdmcGUiLCAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX3NpZ2ZwZSwgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiX3NpZ2ZwZSgpOiByYWlzZSBhIFNJR0ZQRSBzaWduYWwiKX0sCisjaWZkZWYgU0lHQlVTCisgICAgeyJfc2lnYnVzIiwgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9zaWdidXMsIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoIl9zaWdidXMoKTogcmFpc2UgYSBTSUdCVVMgc2lnbmFsIil9LAorI2VuZGlmCisjaWZkZWYgU0lHSUxMCisgICAgeyJfc2lnaWxsIiwgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9zaWdpbGwsIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoIl9zaWdpbGwoKTogcmFpc2UgYSBTSUdJTEwgc2lnbmFsIil9LAorI2VuZGlmCisgICAgeyJfZmF0YWxfZXJyb3IiLCBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3JfcHksIE1FVEhfVkFSQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfZmF0YWxfZXJyb3IobWVzc2FnZSk6IGNhbGwgUHlfRmF0YWxFcnJvcihtZXNzYWdlKSIpfSwKKyNpZiBkZWZpbmVkKEhBVkVfU0lHQUxUU1RBQ0spICYmIGRlZmluZWQoSEFWRV9TSUdBQ1RJT04pCisgICAgeyJfc3RhY2tfb3ZlcmZsb3ciLCAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX3N0YWNrX292ZXJmbG93LCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfc3RhY2tfb3ZlcmZsb3coKTogcmVjdXJzaXZlIGNhbGwgdG8gcmFpc2UgYSBzdGFjayBvdmVyZmxvdyIpfSwKKyNlbmRpZgorICAgIHtOVUxMLCBOVUxMfSAgLyogc2VudGluZWwgKi8KK307CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgbW9kdWxlX2RlZiA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgImZhdWx0aGFuZGxlciIsCisgICAgbW9kdWxlX2RvYywKKyAgICAwLCAvKiBub24tbmVnYXRpdmUgc2l6ZSB0byBiZSBhYmxlIHRvIHVubG9hZCB0aGUgbW9kdWxlICovCisgICAgbW9kdWxlX21ldGhvZHMsCisgICAgTlVMTCwKKyAgICBmYXVsdGhhbmRsZXJfdHJhdmVyc2UsCisgICAgTlVMTCwKKyAgICBOVUxMCit9OworCitQeU1PRElOSVRfRlVOQworUHlJbml0X2ZhdWx0aGFuZGxlcih2b2lkKQoreworICAgIHJldHVybiBQeU1vZHVsZV9DcmVhdGUoJm1vZHVsZV9kZWYpOworfQorCisvKiBDYWxsIGZhdWx0aGFuZGxlci5lbmFibGUoKSBpZiB0aGUgUFlUSE9ORkFVTFRIQU5ETEVSIGVudmlyb25tZW50IHZhcmlhYmxlCisgICBpcyBkZWZpbmVkLCBvciBpZiBzeXMuX3hvcHRpb25zIGhhcyBhICdmYXVsdGhhbmRsZXInIGtleS4gKi8KKworc3RhdGljIGludAorZmF1bHRoYW5kbGVyX2Vudl9vcHRpb25zKHZvaWQpCit7CisgICAgUHlPYmplY3QgKnhvcHRpb25zLCAqa2V5LCAqbW9kdWxlLCAqcmVzOworICAgIF9QeV9JREVOVElGSUVSKGVuYWJsZSk7CisKKyAgICBpZiAoIVB5X0dFVEVOVigiUFlUSE9ORkFVTFRIQU5ETEVSIikpIHsKKyAgICAgICAgaW50IGhhc19rZXk7CisKKyAgICAgICAgeG9wdGlvbnMgPSBQeVN5c19HZXRYT3B0aW9ucygpOworICAgICAgICBpZiAoeG9wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICBrZXkgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiZmF1bHRoYW5kbGVyIik7CisgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICBoYXNfa2V5ID0gUHlEaWN0X0NvbnRhaW5zKHhvcHRpb25zLCBrZXkpOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgaWYgKCFoYXNfa2V5KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgbW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJmYXVsdGhhbmRsZXIiKTsKKyAgICBpZiAobW9kdWxlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG1vZHVsZSwgJlB5SWRfZW5hYmxlLCAiIik7CisgICAgUHlfREVDUkVGKG1vZHVsZSk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgUHlfREVDUkVGKHJlcyk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBfUHlGYXVsdGhhbmRsZXJfSW5pdCh2b2lkKQoreworI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKKyAgICBpbnQgZXJyOworCisgICAgLyogVHJ5IHRvIGFsbG9jYXRlIGFuIGFsdGVybmF0ZSBzdGFjayBmb3IgZmF1bHRoYW5kbGVyKCkgc2lnbmFsIGhhbmRsZXIgdG8KKyAgICAgKiBiZSBhYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSBvbiB0aGUgc3RhY2ssIGV2ZW4gb24gYSBzdGFjayBvdmVyZmxvdy4gSWYgaXQKKyAgICAgKiBmYWlscywgaWdub3JlIHRoZSBlcnJvci4gKi8KKyAgICBzdGFjay5zc19mbGFncyA9IDA7CisgICAgc3RhY2suc3Nfc2l6ZSA9IFNJR1NUS1NaOworICAgIHN0YWNrLnNzX3NwID0gUHlNZW1fTWFsbG9jKHN0YWNrLnNzX3NpemUpOworICAgIGlmIChzdGFjay5zc19zcCAhPSBOVUxMKSB7CisgICAgICAgIGVyciA9IHNpZ2FsdHN0YWNrKCZzdGFjaywgTlVMTCk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoc3RhY2suc3Nfc3ApOworICAgICAgICAgICAgc3RhY2suc3Nfc3AgPSBOVUxMOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisjaWZkZWYgRkFVTFRIQU5ETEVSX0xBVEVSCisgICAgdGhyZWFkLmZpbGUgPSBOVUxMOworICAgIHRocmVhZC5jYW5jZWxfZXZlbnQgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgdGhyZWFkLnJ1bm5pbmcgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgaWYgKCF0aHJlYWQuY2FuY2VsX2V2ZW50IHx8ICF0aHJlYWQucnVubmluZykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBhbGxvY2F0ZSBsb2NrcyBmb3IgZmF1bHRoYW5kbGVyIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHRocmVhZC5jYW5jZWxfZXZlbnQsIDEpOworI2VuZGlmCisKKyAgICByZXR1cm4gZmF1bHRoYW5kbGVyX2Vudl9vcHRpb25zKCk7Cit9CisKK3ZvaWQgX1B5RmF1bHRoYW5kbGVyX0Zpbmkodm9pZCkKK3sKKyNpZmRlZiBGQVVMVEhBTkRMRVJfVVNFUgorICAgIHVuc2lnbmVkIGludCBzaWdudW07CisjZW5kaWYKKworI2lmZGVmIEZBVUxUSEFORExFUl9MQVRFUgorICAgIC8qIGxhdGVyICovCisgICAgaWYgKHRocmVhZC5jYW5jZWxfZXZlbnQpIHsKKyAgICAgICAgY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCk7CisgICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0aHJlYWQuY2FuY2VsX2V2ZW50KTsKKyAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHRocmVhZC5jYW5jZWxfZXZlbnQpOworICAgICAgICB0aHJlYWQuY2FuY2VsX2V2ZW50ID0gTlVMTDsKKyAgICB9CisgICAgaWYgKHRocmVhZC5ydW5uaW5nKSB7CisgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayh0aHJlYWQucnVubmluZyk7CisgICAgICAgIHRocmVhZC5ydW5uaW5nID0gTlVMTDsKKyAgICB9CisjZW5kaWYKKworI2lmZGVmIEZBVUxUSEFORExFUl9VU0VSCisgICAgLyogdXNlciAqLworICAgIGlmICh1c2VyX3NpZ25hbHMgIT0gTlVMTCkgeworICAgICAgICBmb3IgKHNpZ251bT0wOyBzaWdudW0gPCBOU0lHOyBzaWdudW0rKykKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlcl91bnJlZ2lzdGVyKCZ1c2VyX3NpZ25hbHNbc2lnbnVtXSwgc2lnbnVtKTsKKyAgICAgICAgZnJlZSh1c2VyX3NpZ25hbHMpOworICAgICAgICB1c2VyX3NpZ25hbHMgPSBOVUxMOworICAgIH0KKyNlbmRpZgorCisgICAgLyogZmF0YWwgKi8KKyAgICBmYXVsdGhhbmRsZXJfZGlzYWJsZSgpOworI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKKyAgICBpZiAoc3RhY2suc3Nfc3AgIT0gTlVMTCkgeworICAgICAgICBQeU1lbV9GcmVlKHN0YWNrLnNzX3NwKTsKKyAgICAgICAgc3RhY2suc3Nfc3AgPSBOVUxMOworICAgIH0KKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9mY250bG1vZHVsZS5jIGIvTW9kdWxlcy9mY250bG1vZHVsZS5jCmluZGV4IGJmYzU5ODUuLjZiN2UzZmMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZmNudGxtb2R1bGUuYworKysgYi9Nb2R1bGVzL2ZjbnRsbW9kdWxlLmMKQEAgLTU0MCwxMCArNTQwLDEzIEBACiAgICAgaWYgKGlucyhkLCAiRl9TSExDSyIsIChsb25nKUZfU0hMQ0spKSByZXR1cm4gLTE7CiAjZW5kaWYKIAotLyogT1MgWCAoYW5kIG1heWJlIG90aGVycykgbGV0IHlvdSB0ZWxsIHRoZSBzdG9yYWdlIGRldmljZSB0byBmbHVzaCB0byBwaHlzaWNhbCBtZWRpYSAqLworLyogT1MgWCBzcGVjaWZpY3MgKi8KICNpZmRlZiBGX0ZVTExGU1lOQwogICAgIGlmIChpbnMoZCwgIkZfRlVMTEZTWU5DIiwgKGxvbmcpRl9GVUxMRlNZTkMpKSByZXR1cm4gLTE7CiAjZW5kaWYKKyNpZmRlZiBGX05PQ0FDSEUKKyAgICBpZiAoaW5zKGQsICJGX05PQ0FDSEUiLCAobG9uZylGX05PQ0FDSEUpKSByZXR1cm4gLTE7CisjZW5kaWYKIAogLyogRm9yIEZfe0dFVHxTRVR9RkwgKi8KICNpZmRlZiBGRF9DTE9FWEVDCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2ZwZWN0bG1vZHVsZS5jIGIvTW9kdWxlcy9mcGVjdGxtb2R1bGUuYwppbmRleCAxYmI1MWNmLi42YWYyZjgyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2ZwZWN0bG1vZHVsZS5jCisrKyBiL01vZHVsZXMvZnBlY3RsbW9kdWxlLmMKQEAgLTE3NCwxNyArMTc0LDYgQEAKICAgICBmcF9lbmFibGUoVFJQX0lOVkFMSUQgfCBUUlBfRElWX0JZX1pFUk8gfCBUUlBfT1ZFUkZMT1cpOwogICAgIFB5T1Nfc2V0c2lnKFNJR0ZQRSwgaGFuZGxlcik7CiAKLS8qLS0gREVDIEFMUEhBIE9TRiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0jZWxpZiBkZWZpbmVkKF9fYWxwaGEpICYmIGRlZmluZWQoX19vc2ZfXykKLSAgICAvKiBSZWZlcmVuY2VzOiAgIGV4Y2VwdGlvbl9pbnRybywgaWVlZSBtYW4gcGFnZXMgKi8KLSAgICAvKiBjYyAtYyAtSS91c3IvbG9jYWwvcHl0aG9uL2luY2x1ZGUgZnBlY3RsbW9kdWxlLmMgKi8KLSAgICAvKiBsZCAtc2hhcmVkIC1vIGZwZWN0bG1vZHVsZS5zbyBmcGVjdGxtb2R1bGUubyAqLwotI2luY2x1ZGUgPG1hY2hpbmUvZnB1Lmg+Ci0gICAgdW5zaWduZWQgbG9uZyBmcF9jb250cm9sID0KLSAgICBJRUVFX1RSQVBfRU5BQkxFX0lOViB8IElFRUVfVFJBUF9FTkFCTEVfRFpFIHwgSUVFRV9UUkFQX0VOQUJMRV9PVkY7Ci0gICAgaWVlZV9zZXRfZnBfY29udHJvbChmcF9jb250cm9sKTsKLSAgICBQeU9TX3NldHNpZyhTSUdGUEUsIGhhbmRsZXIpOwotCiAvKi0tIERFQyBBTFBIQSBMSU5VWCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogI2VsaWYgZGVmaW5lZChfX2FscGhhKSAmJiBkZWZpbmVkKGxpbnV4KQogI2luY2x1ZGUgPGFzbS9mcHUuaD4KZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2Nfd2Vha3JlZi50eHQgYi9Nb2R1bGVzL2djX3dlYWtyZWYudHh0CmluZGV4IGQ3YmU2YzMuLjJmMTg0MDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZ2Nfd2Vha3JlZi50eHQKKysrIGIvTW9kdWxlcy9nY193ZWFrcmVmLnR4dApAQCAtMTUsOCArMTUsOCBAQAogaGlzdG9yaWNhbGx5IGNvbW1vbiBidWcpLCB0cF9jbGVhciBlbXB0aWVzIGFuIGluc3RhbmNlJ3MgX19kaWN0X18sIGFuZAogImltcG9zc2libGUiIEF0dHJpYnV0ZUVycm9ycyByZXN1bHQuICBBdCB3b3JzdCwgdHBfY2xlYXIgbGVhdmVzIGJlaGluZCBhbgogaW5zYW5lIG9iamVjdCBhdCB0aGUgQyBsZXZlbCwgYW5kIHNlZ2ZhdWx0cyByZXN1bHQgKGhpc3RvcmljYWxseSwgbW9zdAotb2Z0ZW4gYnkgc2V0dGluZyBhIG5ldy1zdHlsZSBjbGFzcydzIG1ybyBwb2ludGVyIHRvIE5VTEwsIGFmdGVyIHdoaWNoCi1hdHRyaWJ1dGUgbG9va3VwcyBwZXJmb3JtZWQgYnkgdGhlIGNsYXNzIGNhbiBzZWdmYXVsdCkuCitvZnRlbiBieSBzZXR0aW5nIGEgY2xhc3MncyBtcm8gcG9pbnRlciB0byBOVUxMLCBhZnRlciB3aGljaCBhdHRyaWJ1dGUKK2xvb2t1cHMgcGVyZm9ybWVkIGJ5IHRoZSBjbGFzcyBjYW4gc2VnZmF1bHQpLgogCiBPVE9ILCBpdCdzIE9LIHRvIHJ1biBQeXRob24tbGV2ZWwgY29kZSB0aGF0IGNhbid0IGFjY2VzcyB1bnJlYWNoYWJsZQogb2JqZWN0cywgYW5kIHNvbWV0aW1lcyB0aGF0J3MgbmVjZXNzYXJ5LiAgVGhlIGNoaWVmIGV4YW1wbGUgaXMgdGhlIGNhbGxiYWNrCkBAIC0xMTksNyArMTE5LDcgQEAKIGl0IHRvb2sgcXVpdGUgYSB3aGlsZSB0byBkcmVhbSB1cCBmYWlsaW5nIHRlc3QgY2FzZXMuICBab3BlMyBzYXcgc2VnZmF1bHRzCiBkdXJpbmcgc2h1dGRvd24sIGR1cmluZyB0aGUgc2Vjb25kIGNhbGwgb2YgZ2MgaW4gUHlfRmluYWxpemUsIGFmdGVyIG1vc3QKIG1vZHVsZXMgaGFkIGJlZW4gdG9ybiBkb3duLiAgVGhhdCBjcmVhdGVzIG1hbnkgdHJhc2ggY3ljbGVzIChlc3AuIHRob3NlCi1pbnZvbHZpbmcgbmV3LXN0eWxlIGNsYXNzZXMpLCBtYWtpbmcgdGhlIHByb2JsZW0gbXVjaCBtb3JlIGxpa2VseS4gIE9uY2UgeW91CitpbnZvbHZpbmcgY2xhc3NlcyksIG1ha2luZyB0aGUgcHJvYmxlbSBtdWNoIG1vcmUgbGlrZWx5LiAgT25jZSB5b3UKIGtub3cgd2hhdCdzIHJlcXVpcmVkIHRvIHByb3Zva2UgdGhlIHByb2JsZW0sIHRob3VnaCwgaXQncyBlYXN5IHRvIGNyZWF0ZQogdGVzdHMgdGhhdCBzZWdmYXVsdCBiZWZvcmUgc2h1dGRvd24uCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2Ntb2R1bGUuYyBiL01vZHVsZXMvZ2Ntb2R1bGUuYwppbmRleCA4YzUyNGY4Li5mNzgyZGQwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2djbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9nY21vZHVsZS5jCkBAIC02NSwxNyArNjUsMTcgQEAKIC8qIFB5dGhvbiBzdHJpbmcgdG8gdXNlIGlmIHVuaGFuZGxlZCBleGNlcHRpb24gb2NjdXJzICovCiBzdGF0aWMgUHlPYmplY3QgKmdjX3N0ciA9IE5VTEw7CiAKLS8qIFB5dGhvbiBzdHJpbmcgdXNlZCB0byBsb29rIGZvciBfX2RlbF9fIGF0dHJpYnV0ZS4gKi8KLXN0YXRpYyBQeU9iamVjdCAqZGVsc3RyID0gTlVMTDsKKy8qIGEgbGlzdCBvZiBjYWxsYmFja3MgdG8gYmUgaW52b2tlZCB3aGVuIGNvbGxlY3Rpb24gaXMgcGVyZm9ybWVkICovCitzdGF0aWMgUHlPYmplY3QgKmNhbGxiYWNrcyA9IE5VTEw7CiAKLS8qIFRoaXMgaXMgdGhlIG51bWJlciBvZiBvYmplY3RzIHdobyBzdXJ2aXZlZCB0aGUgbGFzdCBmdWxsIGNvbGxlY3Rpb24uIEl0CisvKiBUaGlzIGlzIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyB0aGF0IHN1cnZpdmVkIHRoZSBsYXN0IGZ1bGwgY29sbGVjdGlvbi4gSXQKICAgIGFwcHJveGltYXRlcyB0aGUgbnVtYmVyIG9mIGxvbmcgbGl2ZWQgb2JqZWN0cyB0cmFja2VkIGJ5IHRoZSBHQy4KIAogICAgKGJ5ICJmdWxsIGNvbGxlY3Rpb24iLCB3ZSBtZWFuIGEgY29sbGVjdGlvbiBvZiB0aGUgb2xkZXN0IGdlbmVyYXRpb24pLgogKi8KIHN0YXRpYyBQeV9zc2l6ZV90IGxvbmdfbGl2ZWRfdG90YWwgPSAwOwogCi0vKiBUaGlzIGlzIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyB3aG8gc3Vydml2ZWQgYWxsICJub24tZnVsbCIgY29sbGVjdGlvbnMsCisvKiBUaGlzIGlzIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyB0aGF0IHN1cnZpdmVkIGFsbCAibm9uLWZ1bGwiIGNvbGxlY3Rpb25zLAogICAgYW5kIGFyZSBhd2FpdGluZyB0byB1bmRlcmdvIGEgZnVsbCBjb2xsZWN0aW9uIGZvciB0aGUgZmlyc3QgdGltZS4KIAogKi8KQEAgLTczMSw4ICs3MzEsOCBAQAogc3RhdGljIHZvaWQKIGRlYnVnX2N5Y2xlKGNoYXIgKm1zZywgUHlPYmplY3QgKm9wKQogewotICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJnYzogJS4xMDBzIDwlLjEwMHMgJXA+XG4iLAotICAgICAgICAgICAgICAgICAgICAgIG1zZywgUHlfVFlQRShvcCktPnRwX25hbWUsIG9wKTsKKyAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImdjOiAlcyA8JXMgJXA+XG4iLAorICAgICAgICAgICAgICAgICAgICAgICBtc2csIFB5X1RZUEUob3ApLT50cF9uYW1lLCBvcCk7CiB9CiAKIC8qIEhhbmRsZSB1bmNvbGxlY3RhYmxlIGdhcmJhZ2UgKGN5Y2xlcyB3aXRoIGZpbmFsaXplcnMsIGFuZCBzdHVmZiByZWFjaGFibGUKQEAgLTgxMyw2ICs4MTMsOSBAQAogICAgICh2b2lkKVB5VHVwbGVfQ2xlYXJGcmVlTGlzdCgpOwogICAgICh2b2lkKVB5VW5pY29kZV9DbGVhckZyZWVMaXN0KCk7CiAgICAgKHZvaWQpUHlGbG9hdF9DbGVhckZyZWVMaXN0KCk7CisgICAgKHZvaWQpUHlMaXN0X0NsZWFyRnJlZUxpc3QoKTsKKyAgICAodm9pZClQeURpY3RfQ2xlYXJGcmVlTGlzdCgpOworICAgICh2b2lkKVB5U2V0X0NsZWFyRnJlZUxpc3QoKTsKIH0KIAogc3RhdGljIGRvdWJsZQpAQCAtODIwLDcgKzgyMyw5IEBACiB7CiAgICAgZG91YmxlIHJlc3VsdCA9IDA7CiAgICAgaWYgKHRtb2QgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqZiA9IFB5T2JqZWN0X0NhbGxNZXRob2QodG1vZCwgInRpbWUiLCBOVUxMKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIodGltZSk7CisKKyAgICAgICAgUHlPYmplY3QgKmYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRtb2QsICZQeUlkX3RpbWUsIE5VTEwpOwogICAgICAgICBpZiAoZiA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICB9CkBAIC04MzYsNyArODQxLDcgQEAKIC8qIFRoaXMgaXMgdGhlIG1haW4gZnVuY3Rpb24uICBSZWFkIHRoaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlCiAgKiBjb2xsZWN0aW9uIHByb2Nlc3Mgd29ya3MuICovCiBzdGF0aWMgUHlfc3NpemVfdAotY29sbGVjdChpbnQgZ2VuZXJhdGlvbikKK2NvbGxlY3QoaW50IGdlbmVyYXRpb24sIFB5X3NzaXplX3QgKm5fY29sbGVjdGVkLCBQeV9zc2l6ZV90ICpuX3VuY29sbGVjdGFibGUpCiB7CiAgICAgaW50IGk7CiAgICAgUHlfc3NpemVfdCBtID0gMDsgLyogIyBvYmplY3RzIGNvbGxlY3RlZCAqLwpAQCAtODQ4LDEyICs4NTMsNiBAQAogICAgIFB5R0NfSGVhZCAqZ2M7CiAgICAgZG91YmxlIHQxID0gMC4wOwogCi0gICAgaWYgKGRlbHN0ciA9PSBOVUxMKSB7Ci0gICAgICAgIGRlbHN0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2RlbF9fIik7Ci0gICAgICAgIGlmIChkZWxzdHIgPT0gTlVMTCkKLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImdjIGNvdWxkbid0IGFsbG9jYXRlIFwiX19kZWxfX1wiIik7Ci0gICAgfQotCiAgICAgaWYgKGRlYnVnICYgREVCVUdfU1RBVFMpIHsKICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImdjOiBjb2xsZWN0aW5nIGdlbmVyYXRpb24gJWQuLi5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRpb24pOwpAQCAtOTkzLDkgKzk5Miw2NCBAQAogICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoZ2Nfc3RyKTsKICAgICAgICAgUHlfRmF0YWxFcnJvcigidW5leHBlY3RlZCBleGNlcHRpb24gZHVyaW5nIGdhcmJhZ2UgY29sbGVjdGlvbiIpOwogICAgIH0KKworICAgIGlmIChuX2NvbGxlY3RlZCkKKyAgICAgICAgKm5fY29sbGVjdGVkID0gbTsKKyAgICBpZiAobl91bmNvbGxlY3RhYmxlKQorICAgICAgICAqbl91bmNvbGxlY3RhYmxlID0gbjsKICAgICByZXR1cm4gbittOwogfQogCisvKiBJbnZva2UgcHJvZ3Jlc3MgY2FsbGJhY2tzIHRvIG5vdGlmeSBjbGllbnRzIHRoYXQgZ2FyYmFnZSBjb2xsZWN0aW9uCisgKiBpcyBzdGFydGluZyBvciBzdG9wcGluZworICovCitzdGF0aWMgdm9pZAoraW52b2tlX2djX2NhbGxiYWNrKGNvbnN0IGNoYXIgKnBoYXNlLCBpbnQgZ2VuZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGxlY3RlZCwgUHlfc3NpemVfdCB1bmNvbGxlY3RhYmxlKQoreworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeU9iamVjdCAqaW5mbyA9IE5VTEw7CisKKyAgICAvKiB3ZSBtYXkgZ2V0IGNhbGxlZCB2ZXJ5IGVhcmx5ICovCisgICAgaWYgKGNhbGxiYWNrcyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgLyogVGhlIGxvY2FsIHZhcmlhYmxlIGNhbm5vdCBiZSByZWJvdW5kLCBjaGVjayBpdCBmb3Igc2FuaXR5ICovCisgICAgYXNzZXJ0KGNhbGxiYWNrcyAhPSBOVUxMICYmIFB5TGlzdF9DaGVja0V4YWN0KGNhbGxiYWNrcykpOworICAgIGlmIChQeUxpc3RfR0VUX1NJWkUoY2FsbGJhY2tzKSAhPSAwKSB7CisgICAgICAgIGluZm8gPSBQeV9CdWlsZFZhbHVlKCJ7c2lzbnNufSIsCisgICAgICAgICAgICAiZ2VuZXJhdGlvbiIsIGdlbmVyYXRpb24sCisgICAgICAgICAgICAiY29sbGVjdGVkIiwgY29sbGVjdGVkLAorICAgICAgICAgICAgInVuY29sbGVjdGFibGUiLCB1bmNvbGxlY3RhYmxlKTsKKyAgICAgICAgaWYgKGluZm8gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKE5VTEwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIGZvciAoaT0wOyBpPFB5TGlzdF9HRVRfU0laRShjYWxsYmFja3MpOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnIsICpjYiA9IFB5TGlzdF9HRVRfSVRFTShjYWxsYmFja3MsIGkpOworICAgICAgICBQeV9JTkNSRUYoY2IpOyAvKiBtYWtlIHN1cmUgY2IgZG9lc24ndCBnbyBhd2F5ICovCisgICAgICAgIHIgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2IsICJzTyIsIHBoYXNlLCBpbmZvKTsKKyAgICAgICAgUHlfWERFQ1JFRihyKTsKKyAgICAgICAgaWYgKHIgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShjYik7CisgICAgICAgIFB5X0RFQ1JFRihjYik7CisgICAgfQorICAgIFB5X1hERUNSRUYoaW5mbyk7Cit9CisKKy8qIFBlcmZvcm0gZ2FyYmFnZSBjb2xsZWN0aW9uIG9mIGEgZ2VuZXJhdGlvbiBhbmQgaW52b2tlCisgKiBwcm9ncmVzcyBjYWxsYmFja3MuCisgKi8KK3N0YXRpYyBQeV9zc2l6ZV90Citjb2xsZWN0X3dpdGhfY2FsbGJhY2soaW50IGdlbmVyYXRpb24pCit7CisgICAgUHlfc3NpemVfdCByZXN1bHQsIGNvbGxlY3RlZCwgdW5jb2xsZWN0YWJsZTsKKyAgICBpbnZva2VfZ2NfY2FsbGJhY2soInN0YXJ0IiwgZ2VuZXJhdGlvbiwgMCwgMCk7CisgICAgcmVzdWx0ID0gY29sbGVjdChnZW5lcmF0aW9uLCAmY29sbGVjdGVkLCAmdW5jb2xsZWN0YWJsZSk7CisgICAgaW52b2tlX2djX2NhbGxiYWNrKCJzdG9wIiwgZ2VuZXJhdGlvbiwgY29sbGVjdGVkLCB1bmNvbGxlY3RhYmxlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgUHlfc3NpemVfdAogY29sbGVjdF9nZW5lcmF0aW9ucyh2b2lkKQogewpAQCAtMTAxNCw3ICsxMDY4LDcgQEAKICAgICAgICAgICAgIGlmIChpID09IE5VTV9HRU5FUkFUSU9OUyAtIDEKICAgICAgICAgICAgICAgICAmJiBsb25nX2xpdmVkX3BlbmRpbmcgPCBsb25nX2xpdmVkX3RvdGFsIC8gNCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG4gPSBjb2xsZWN0KGkpOworICAgICAgICAgICAgbiA9IGNvbGxlY3Rfd2l0aF9jYWxsYmFjayhpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtMTA4NSw3ICsxMTM5LDcgQEAKICAgICAgICAgbiA9IDA7IC8qIGFscmVhZHkgY29sbGVjdGluZywgZG9uJ3QgZG8gYW55dGhpbmcgKi8KICAgICBlbHNlIHsKICAgICAgICAgY29sbGVjdGluZyA9IDE7Ci0gICAgICAgIG4gPSBjb2xsZWN0KGdlbmFyZyk7CisgICAgICAgIG4gPSBjb2xsZWN0X3dpdGhfY2FsbGJhY2soZ2VuYXJnKTsKICAgICAgICAgY29sbGVjdGluZyA9IDA7CiAgICAgfQogCkBAIC0xMzc4LDYgKzE0MzIsMTUgQEAKICAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJnYXJiYWdlIiwgZ2FyYmFnZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIGlmIChjYWxsYmFja3MgPT0gTlVMTCkgeworICAgICAgICBjYWxsYmFja3MgPSBQeUxpc3RfTmV3KDApOworICAgICAgICBpZiAoY2FsbGJhY2tzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfSU5DUkVGKGNhbGxiYWNrcyk7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiY2FsbGJhY2tzIiwgY2FsbGJhY2tzKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgLyogSW1wb3J0aW5nIGNhbid0IGJlIGRvbmUgaW4gY29sbGVjdCgpIGJlY2F1c2UgY29sbGVjdCgpCiAgICAgICogY2FuIGJlIGNhbGxlZCB2aWEgUHlHQ19Db2xsZWN0KCkgaW4gUHlfRmluYWxpemUoKS4KICAgICAgKiBUaGlzIHdvdWxkbid0IGJlIGEgcHJvYmxlbSwgZXhjZXB0IHRoYXQgPGluaXRpYWxpemVkPiBpcwpAQCAtMTQxMCw3ICsxNDczLDcgQEAKICAgICAgICAgbiA9IDA7IC8qIGFscmVhZHkgY29sbGVjdGluZywgZG9uJ3QgZG8gYW55dGhpbmcgKi8KICAgICBlbHNlIHsKICAgICAgICAgY29sbGVjdGluZyA9IDE7Ci0gICAgICAgIG4gPSBjb2xsZWN0KE5VTV9HRU5FUkFUSU9OUyAtIDEpOworICAgICAgICBuID0gY29sbGVjdF93aXRoX2NhbGxiYWNrKE5VTV9HRU5FUkFUSU9OUyAtIDEpOwogICAgICAgICBjb2xsZWN0aW5nID0gMDsKICAgICB9CiAKQEAgLTE0NDcsNiArMTUxMCw3IEBACiAgICAgICAgICAgICBQeV9YREVDUkVGKGJ5dGVzKTsKICAgICAgICAgfQogICAgIH0KKyAgICBQeV9DTEVBUihjYWxsYmFja3MpOwogfQogCiAvKiBmb3IgZGVidWdnaW5nICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2dldGJ1aWxkaW5mby5jIGIvTW9kdWxlcy9nZXRidWlsZGluZm8uYwppbmRleCA3MDY5YjZlLi4wOTcxYTY0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2dldGJ1aWxkaW5mby5jCisrKyBiL01vZHVsZXMvZ2V0YnVpbGRpbmZvLmMKQEAgLTIwLDE0ICsyMCw2IEBACiAjZW5kaWYKICNlbmRpZgogCi0vKiBvbiB1bml4LCBTVk5WRVJTSU9OIGlzIHBhc3NlZCBvbiB0aGUgY29tbWFuZCBsaW5lLgotICogb24gV2luZG93cywgdGhlIHN0cmluZyBpcyBpbnRlcnBvbGF0ZWQgdXNpbmcKLSAqIHN1YndjcmV2LmV4ZQotICovCi0jaWZuZGVmIFNWTlZFUlNJT04KLSNkZWZpbmUgU1ZOVkVSU0lPTiAiJFdDUkFOR0UkJFdDTU9EUz9NOiQiCi0jZW5kaWYKLQogLyogWFhYIE9ubHkgdW5peCBidWlsZCBwcm9jZXNzIGhhcyBiZWVuIHRlc3RlZCAqLwogI2lmbmRlZiBIR1ZFUlNJT04KICNkZWZpbmUgSEdWRVJTSU9OICIiCkBAIC01NywxNiArNDksNiBAQAogfQogCiBjb25zdCBjaGFyICoKLV9QeV9zdm52ZXJzaW9uKHZvaWQpCi17Ci0gICAgLyogdGhlIGZvbGxvd2luZyBzdHJpbmcgY2FuIGJlIG1vZGlmaWVkIGJ5IHN1YndjcmV2LmV4ZSAqLwotICAgIHN0YXRpYyBjb25zdCBjaGFyIHN2bnZlcnNpb25bXSA9IFNWTlZFUlNJT047Ci0gICAgaWYgKHN2bnZlcnNpb25bMF0gIT0gJyQnKQotICAgICAgICByZXR1cm4gc3ZudmVyc2lvbjsgLyogaXQgd2FzIGludGVycG9sYXRlZCwgb3IgcGFzc2VkIG9uIGNvbW1hbmQgbGluZSAqLwotICAgIHJldHVybiAiVW52ZXJzaW9uZWQgZGlyZWN0b3J5IjsKLX0KLQotY29uc3QgY2hhciAqCiBfUHlfaGd2ZXJzaW9uKHZvaWQpCiB7CiAgICAgcmV0dXJuIEhHVkVSU0lPTjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2V0cGF0aC5jIGIvTW9kdWxlcy9nZXRwYXRoLmMKaW5kZXggYjdmOTU3My4uYjk4YzUyMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9nZXRwYXRoLmMKKysrIGIvTW9kdWxlcy9nZXRwYXRoLmMKQEAgLTI2MCw2ICsyNjAsNTkgQEAKICAgICB3Y3NjcHkocGF0aCwgYnVmZmVyKTsKIH0KIAorLyogc2VhcmNoIGZvciBhIHByZWZpeCB2YWx1ZSBpbiBhbiBlbnZpcm9ubWVudCBmaWxlLiBJZiBmb3VuZCwgY29weSBpdAorICAgdG8gdGhlIHByb3ZpZGVkIGJ1ZmZlciwgd2hpY2ggaXMgZXhwZWN0ZWQgdG8gYmUgbm8gbW9yZSB0aGFuIE1BWFBBVEhMRU4KKyAgIGJ5dGVzIGxvbmcuCisqLworCitzdGF0aWMgaW50CitmaW5kX2Vudl9jb25maWdfdmFsdWUoRklMRSAqIGVudl9maWxlLCBjb25zdCB3Y2hhcl90ICoga2V5LCB3Y2hhcl90ICogdmFsdWUpCit7CisgICAgaW50IHJlc3VsdCA9IDA7IC8qIG1lYW5pbmcgbm90IGZvdW5kICovCisgICAgY2hhciBidWZmZXJbTUFYUEFUSExFTioyKzFdOyAgLyogYWxsb3cgZXh0cmEgZm9yIGtleSwgJz0nLCBldGMuICovCisKKyAgICBmc2VlayhlbnZfZmlsZSwgMCwgU0VFS19TRVQpOworICAgIHdoaWxlICghZmVvZihlbnZfZmlsZSkpIHsKKyAgICAgICAgY2hhciAqIHAgPSBmZ2V0cyhidWZmZXIsIE1BWFBBVEhMRU4qMiwgZW52X2ZpbGUpOworICAgICAgICB3Y2hhcl90IHRtcGJ1ZmZlcltNQVhQQVRITEVOKjIrMV07CisgICAgICAgIFB5T2JqZWN0ICogZGVjb2RlZDsKKyAgICAgICAgaW50IG47CisKKyAgICAgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBuID0gc3RybGVuKHApOworICAgICAgICBpZiAocFtuIC0gMV0gIT0gJ1xuJykgeworICAgICAgICAgICAgLyogbGluZSBoYXMgb3ZlcmZsb3dlZCAtIGJhaWwgKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChwWzBdID09ICcjJykgICAgLyogQ29tbWVudCAtIHNraXAgKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZVVURjgoYnVmZmVyLCBuLCAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgICAgIGlmIChkZWNvZGVkICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgazsKKyAgICAgICAgICAgIHdjaGFyX3QgKiBzdGF0ZTsKKyAgICAgICAgICAgIGsgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhcihkZWNvZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcGJ1ZmZlciwgTUFYUEFUSExFTiAqIDIpOworICAgICAgICAgICAgUHlfREVDUkVGKGRlY29kZWQpOworICAgICAgICAgICAgaWYgKGsgPj0gMCkgeworICAgICAgICAgICAgICAgIHdjaGFyX3QgKiB0b2sgPSB3Y3N0b2sodG1wYnVmZmVyLCBMIiBcdFxyXG4iLCAmc3RhdGUpOworICAgICAgICAgICAgICAgIGlmICgodG9rICE9IE5VTEwpICYmICF3Y3NjbXAodG9rLCBrZXkpKSB7CisgICAgICAgICAgICAgICAgICAgIHRvayA9IHdjc3RvayhOVUxMLCBMIiBcdCIsICZzdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgodG9rICE9IE5VTEwpICYmICF3Y3NjbXAodG9rLCBMIj0iKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdG9rID0gd2NzdG9rKE5VTEwsIEwiXHJcbiIsICZzdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y3NuY3B5KHZhbHVlLCB0b2ssIE1BWFBBVEhMRU4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogLyogc2VhcmNoX2Zvcl9wcmVmaXggcmVxdWlyZXMgdGhhdCBhcmd2MF9wYXRoIGJlIG5vIG1vcmUgdGhhbiBNQVhQQVRITEVOCiAgICBieXRlcyBsb25nLgogKi8KQEAgLTQwNiw3ICs0NTksNyBAQAogICAgIHN0YXRpYyB3Y2hhcl90IGRlbGltaXRlclsyXSA9IHtERUxJTSwgJ1wwJ307CiAgICAgc3RhdGljIHdjaGFyX3Qgc2VwYXJhdG9yWzJdID0ge1NFUCwgJ1wwJ307CiAgICAgY2hhciAqX3J0cHlwYXRoID0gUHlfR0VURU5WKCJQWVRIT05QQVRIIik7IC8qIFhYWCB1c2Ugd2lkZSB2ZXJzaW9uIG9uIFdpbmRvd3MgKi8KLSAgICB3Y2hhcl90IHJ0cHlwYXRoW01BWFBBVEhMRU4rMV07CisgICAgd2NoYXJfdCAqcnRweXBhdGggPSBOVUxMOwogICAgIHdjaGFyX3QgKmhvbWUgPSBQeV9HZXRQeXRob25Ib21lKCk7CiAgICAgY2hhciAqX3BhdGggPSBnZXRlbnYoIlBBVEgiKTsKICAgICB3Y2hhcl90ICpwYXRoX2J1ZmZlciA9IE5VTEw7CkBAIC00MjEsNiArNDc0LDcgQEAKICAgICB3Y2hhcl90ICpkZWZwYXRoOwogI2lmZGVmIFdJVEhfTkVYVF9GUkFNRVdPUksKICAgICBOU01vZHVsZSBweXRob25Nb2R1bGU7CisgICAgY29uc3QgY2hhciogICAgbW9kUGF0aDsKICNlbmRpZgogI2lmZGVmIF9fQVBQTEVfXwogI2lmIE1BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gTUFDX09TX1hfVkVSU0lPTl8xMF80CkBAIC01MTUsOCArNTY5LDggQEAKICAgICAqLwogICAgIHB5dGhvbk1vZHVsZSA9IE5TTW9kdWxlRm9yU3ltYm9sKE5TTG9va3VwQW5kQmluZFN5bWJvbCgiX1B5X0luaXRpYWxpemUiKSk7CiAgICAgLyogVXNlIGR5bGliIGZ1bmN0aW9ucyB0byBmaW5kIG91dCB3aGVyZSB0aGUgZnJhbWV3b3JrIHdhcyBsb2FkZWQgZnJvbSAqLwotICAgIGJ1ZiA9ICh3Y2hhcl90ICopTlNMaWJyYXJ5TmFtZUZvck1vZHVsZShweXRob25Nb2R1bGUpOwotICAgIGlmIChidWYgIT0gTlVMTCkgeworICAgIG1vZFBhdGggPSBOU0xpYnJhcnlOYW1lRm9yTW9kdWxlKHB5dGhvbk1vZHVsZSk7CisgICAgaWYgKG1vZFBhdGggIT0gTlVMTCkgewogICAgICAgICAvKiBXZSdyZSBpbiBhIGZyYW1ld29yay4gKi8KICAgICAgICAgLyogU2VlIGlmIHdlIG1pZ2h0IGJlIGluIHRoZSBidWlsZCBkaXJlY3RvcnkuIFRoZSBmcmFtZXdvcmsgaW4gdGhlCiAgICAgICAgICoqIGJ1aWxkIGRpcmVjdG9yeSBpcyBpbmNvbXBsZXRlLCBpdCBvbmx5IGhhcyB0aGUgLmR5bGliIGFuZCBhIGZldwpAQCAtNTI1LDcgKzU3OSwxMiBAQAogICAgICAgICAqKiBiZSBydW5uaW5nIHRoZSBpbnRlcnByZXRlciBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LCBzbyB3ZSB1c2UgdGhlCiAgICAgICAgICoqIGJ1aWxkLWRpcmVjdG9yeS1zcGVjaWZpYyBsb2dpYyB0byBmaW5kIExpYiBhbmQgc3VjaC4KICAgICAgICAgKi8KLSAgICAgICAgd2NzbmNweShhcmd2MF9wYXRoLCBidWYsIE1BWFBBVEhMRU4pOworICAgICAgICB3Y2hhcl90KiB3YnVmID0gX1B5X2NoYXIyd2NoYXIobW9kUGF0aCwgTlVMTCk7CisgICAgICAgIGlmICh3YnVmID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbm5vdCBkZWNvZGUgZnJhbWV3b3JrIGxvY2F0aW9uIik7CisgICAgICAgIH0KKworICAgICAgICB3Y3NuY3B5KGFyZ3YwX3BhdGgsIHdidWYsIE1BWFBBVEhMRU4pOwogICAgICAgICByZWR1Y2UoYXJndjBfcGF0aCk7CiAgICAgICAgIGpvaW5wYXRoKGFyZ3YwX3BhdGgsIGxpYl9weXRob24pOwogICAgICAgICBqb2lucGF0aChhcmd2MF9wYXRoLCBMQU5ETUFSSyk7CkBAIC01MzYsOCArNTk1LDkgQEAKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8qIFVzZSB0aGUgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkgYXMgdGhlIHByb2dwYXRoICovCi0gICAgICAgICAgICB3Y3NuY3B5KGFyZ3YwX3BhdGgsIGJ1ZiwgTUFYUEFUSExFTik7CisgICAgICAgICAgICB3Y3NuY3B5KGFyZ3YwX3BhdGgsIHdidWYsIE1BWFBBVEhMRU4pOwogICAgICAgICB9CisgICAgICAgIFB5TWVtX0ZyZWUod2J1Zik7CiAgICAgfQogI2VuZGlmCiAKQEAgLTU2NSw2ICs2MjUsNDAgQEAKICAgICAgICBNQVhQQVRITEVOIGJ5dGVzIGxvbmcuCiAgICAgKi8KIAorICAgIC8qIFNlYXJjaCBmb3IgYW4gZW52aXJvbm1lbnQgY29uZmlndXJhdGlvbiBmaWxlLCBmaXJzdCBpbiB0aGUKKyAgICAgICBleGVjdXRhYmxlJ3MgZGlyZWN0b3J5IGFuZCB0aGVuIGluIHRoZSBwYXJlbnQgZGlyZWN0b3J5LgorICAgICAgIElmIGZvdW5kLCBvcGVuIGl0IGZvciB1c2Ugd2hlbiBzZWFyY2hpbmcgZm9yIHByZWZpeGVzLgorICAgICovCisKKyAgICB7CisgICAgICAgIHdjaGFyX3QgdG1wYnVmZmVyW01BWFBBVEhMRU4rMV07CisgICAgICAgIHdjaGFyX3QgKmVudl9jZmcgPSBMInB5dmVudi5jZmciOworICAgICAgICBGSUxFICogZW52X2ZpbGUgPSBOVUxMOworCisgICAgICAgIHdjc2NweSh0bXBidWZmZXIsIGFyZ3YwX3BhdGgpOworCisgICAgICAgIGpvaW5wYXRoKHRtcGJ1ZmZlciwgZW52X2NmZyk7CisgICAgICAgIGVudl9maWxlID0gX1B5X3dmb3Blbih0bXBidWZmZXIsIEwiciIpOworICAgICAgICBpZiAoZW52X2ZpbGUgPT0gTlVMTCkgeworICAgICAgICAgICAgZXJybm8gPSAwOworICAgICAgICAgICAgcmVkdWNlKHRtcGJ1ZmZlcik7CisgICAgICAgICAgICByZWR1Y2UodG1wYnVmZmVyKTsKKyAgICAgICAgICAgIGpvaW5wYXRoKHRtcGJ1ZmZlciwgZW52X2NmZyk7CisgICAgICAgICAgICBlbnZfZmlsZSA9IF9QeV93Zm9wZW4odG1wYnVmZmVyLCBMInIiKTsKKyAgICAgICAgICAgIGlmIChlbnZfZmlsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZXJybm8gPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChlbnZfZmlsZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAvKiBMb29rIGZvciBhICdob21lJyB2YXJpYWJsZSBhbmQgc2V0IGFyZ3YwX3BhdGggdG8gaXQsIGlmIGZvdW5kICovCisgICAgICAgICAgICBpZiAoZmluZF9lbnZfY29uZmlnX3ZhbHVlKGVudl9maWxlLCBMImhvbWUiLCB0bXBidWZmZXIpKSB7CisgICAgICAgICAgICAgICAgd2NzY3B5KGFyZ3YwX3BhdGgsIHRtcGJ1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmY2xvc2UoZW52X2ZpbGUpOworICAgICAgICAgICAgZW52X2ZpbGUgPSBOVUxMOworICAgICAgICB9CisgICAgfQorCiAgICAgaWYgKCEocGZvdW5kID0gc2VhcmNoX2Zvcl9wcmVmaXgoYXJndjBfcGF0aCwgaG9tZSwgX3ByZWZpeCkpKSB7CiAgICAgICAgIGlmICghUHlfRnJvemVuRmxhZykKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLApAQCAtNjA2LDEyICs3MDAsMTIgQEAKICAgICBidWZzeiA9IDA7CiAKICAgICBpZiAoX3J0cHlwYXRoKSB7Ci0gICAgICAgIHNpemVfdCBzID0gbWJzdG93Y3MocnRweXBhdGgsIF9ydHB5cGF0aCwgc2l6ZW9mKHJ0cHlwYXRoKS9zaXplb2Yod2NoYXJfdCkpOwotICAgICAgICBpZiAocyA9PSAoc2l6ZV90KS0xIHx8IHMgPj1zaXplb2YocnRweXBhdGgpKQotICAgICAgICAgICAgLyogWFhYIGRlYWwgd2l0aCBlcnJvcnMgbW9yZSBncmFjZWZ1bGx5ICovCisgICAgICAgIHNpemVfdCBydHB5cGF0aF9sZW47CisgICAgICAgIHJ0cHlwYXRoID0gX1B5X2NoYXIyd2NoYXIoX3J0cHlwYXRoLCAmcnRweXBhdGhfbGVuKTsKKyAgICAgICAgaWYgKHJ0cHlwYXRoICE9IE5VTEwpCisgICAgICAgICAgICBidWZzeiArPSBydHB5cGF0aF9sZW4gKyAxOworICAgICAgICBlbHNlCiAgICAgICAgICAgICBfcnRweXBhdGggPSBOVUxMOwotICAgICAgICBpZiAoX3J0cHlwYXRoKQotICAgICAgICAgICAgYnVmc3ogKz0gd2NzbGVuKHJ0cHlwYXRoKSArIDE7CiAgICAgfQogCiAgICAgZGVmcGF0aCA9IF9weXRob25wYXRoOwpAQCAtNjQ1LDcgKzczOSw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBSdW4tdGltZSB2YWx1ZSBvZiAkUFlUSE9OUEFUSCBnb2VzIGZpcnN0ICovCi0gICAgICAgIGlmIChfcnRweXBhdGgpIHsKKyAgICAgICAgaWYgKHJ0cHlwYXRoKSB7CiAgICAgICAgICAgICB3Y3NjcHkoYnVmLCBydHB5cGF0aCk7CiAgICAgICAgICAgICB3Y3NjYXQoYnVmLCBkZWxpbWl0ZXIpOwogICAgICAgICB9CkBAIC03MTksNiArODEzLDggQEAKICAgICBQeU1lbV9GcmVlKF9weXRob25wYXRoKTsKICAgICBQeU1lbV9GcmVlKF9wcmVmaXgpOwogICAgIFB5TWVtX0ZyZWUoX2V4ZWNfcHJlZml4KTsKKyAgICBpZiAocnRweXBhdGggIT0gTlVMTCkKKyAgICAgICAgUHlNZW1fRnJlZShydHB5cGF0aCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYyBiL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMKaW5kZXggNTJhMzhhNS4uNjQ0MTA0ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYworKysgYi9Nb2R1bGVzL2l0ZXJ0b29sc21vZHVsZS5jCkBAIC0xMzQsNiArMTM0LDUzIEBACiAgICAgcmV0dXJuIHI7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitncm91cGJ5X3JlZHVjZShncm91cGJ5b2JqZWN0ICpseikKK3sKKyAgICAvKiByZWR1Y2UgYXMgYSAnbmV3JyBjYWxsIHdpdGggYW4gb3B0aW9uYWwgJ3NldHN0YXRlJyBpZiBncm91cGJ5CisgICAgICogaGFzIHN0YXJ0ZWQKKyAgICAgKi8KKyAgICBQeU9iamVjdCAqdmFsdWU7CisgICAgaWYgKGx6LT50Z3RrZXkgJiYgbHotPmN1cnJrZXkgJiYgbHotPmN1cnJ2YWx1ZSkKKyAgICAgICAgdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJPKE9PKShPT08pIiwgUHlfVFlQRShseiksCisgICAgICAgICAgICBsei0+aXQsIGx6LT5rZXlmdW5jLCBsei0+Y3VycmtleSwgbHotPmN1cnJ2YWx1ZSwgbHotPnRndGtleSk7CisgICAgZWxzZQorICAgICAgICB2YWx1ZSA9IFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksCisgICAgICAgICAgICBsei0+aXQsIGx6LT5rZXlmdW5jKTsKKworICAgIHJldHVybiB2YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorZ3JvdXBieV9zZXRzdGF0ZShncm91cGJ5b2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5T2JqZWN0ICpjdXJya2V5LCAqY3VycnZhbHVlLCAqdGd0a2V5OworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk9PTyIsICZjdXJya2V5LCAmY3VycnZhbHVlLCAmdGd0a2V5KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfQ0xFQVIobHotPmN1cnJrZXkpOworICAgIGx6LT5jdXJya2V5ID0gY3VycmtleTsKKyAgICBQeV9JTkNSRUYobHotPmN1cnJrZXkpOworICAgIFB5X0NMRUFSKGx6LT5jdXJydmFsdWUpOworICAgIGx6LT5jdXJydmFsdWUgPSBjdXJydmFsdWU7CisgICAgUHlfSU5DUkVGKGx6LT5jdXJydmFsdWUpOworICAgIFB5X0NMRUFSKGx6LT50Z3RrZXkpOworICAgIGx6LT50Z3RrZXkgPSB0Z3RrZXk7CisgICAgUHlfSU5DUkVGKGx6LT50Z3RrZXkpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0c3RhdGVfZG9jLCAiU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlNZXRob2REZWYgZ3JvdXBieV9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pZ3JvdXBieV9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWdyb3VwYnlfc2V0c3RhdGUsICAgIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihncm91cGJ5X2RvYywKICJncm91cGJ5KGl0ZXJhYmxlWywga2V5ZnVuY10pIC0+IGNyZWF0ZSBhbiBpdGVyYXRvciB3aGljaCByZXR1cm5zXG5cCiAoa2V5LCBzdWItaXRlcmF0b3IpIGdyb3VwZWQgYnkgZWFjaCB2YWx1ZSBvZiBrZXkodmFsdWUpLlxuIik7CkBAIC0xNjgsNyArMjE1LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWdyb3VwYnlfbmV4dCwgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBncm91cGJ5X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTE5NCw2ICsyNDEsMTcgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgX2dyb3VwZXJfdHlwZTsKIAogc3RhdGljIFB5T2JqZWN0ICoKK19ncm91cGVyX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqcGFyZW50LCAqdGd0a2V5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIU8iLCAmZ3JvdXBieV90eXBlLCAmcGFyZW50LCAmdGd0a2V5KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gX2dyb3VwZXJfY3JlYXRlKChncm91cGJ5b2JqZWN0KikgcGFyZW50LCB0Z3RrZXkpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogX2dyb3VwZXJfY3JlYXRlKGdyb3VwYnlvYmplY3QgKnBhcmVudCwgUHlPYmplY3QgKnRndGtleSkKIHsKICAgICBfZ3JvdXBlcm9iamVjdCAqaWdvOwpAQCAtMjY5LDYgKzMyNywyMCBAQAogICAgIHJldHVybiByOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorX2dyb3VwZXJfcmVkdWNlKF9ncm91cGVyb2JqZWN0ICpseikKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGx6KSwKKyAgICAgICAgICAgIGx6LT5wYXJlbnQsIGx6LT50Z3RrZXkpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgX2dyb3VwZXJfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKV9ncm91cGVyX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCisKIHN0YXRpYyBQeVR5cGVPYmplY3QgX2dyb3VwZXJfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiaXRlcnRvb2xzLl9ncm91cGVyIiwgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCkBAIC0yOTgsNyArMzcwLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKV9ncm91cGVyX25leHQsICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBfZ3JvdXBlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTMwOCw3ICszODAsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBfZ3JvdXBlcl9uZXcsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCkBAIC0zNDQsNyArNDE2LDcgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgdGVlZGF0YW9iamVjdF90eXBlOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdGVlZGF0YW9iamVjdF9uZXcoUHlPYmplY3QgKml0KQordGVlZGF0YW9iamVjdF9uZXdpbnRlcm5hbChQeU9iamVjdCAqaXQpCiB7CiAgICAgdGVlZGF0YW9iamVjdCAqdGRvOwogCkBAIC0zNjQsNyArNDM2LDcgQEAKIHRlZWRhdGFvYmplY3RfanVtcGxpbmsodGVlZGF0YW9iamVjdCAqdGRvKQogewogICAgIGlmICh0ZG8tPm5leHRsaW5rID09IE5VTEwpCi0gICAgICAgIHRkby0+bmV4dGxpbmsgPSB0ZWVkYXRhb2JqZWN0X25ldyh0ZG8tPml0KTsKKyAgICAgICAgdGRvLT5uZXh0bGluayA9IHRlZWRhdGFvYmplY3RfbmV3aW50ZXJuYWwodGRvLT5pdCk7CiAgICAgUHlfWElOQ1JFRih0ZG8tPm5leHRsaW5rKTsKICAgICByZXR1cm4gdGRvLT5uZXh0bGluazsKIH0KQEAgLTQzNywxMSArNTA5LDgxIEBACiAgICAgUHlPYmplY3RfR0NfRGVsKHRkbyk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCit0ZWVkYXRhb2JqZWN0X3JlZHVjZSh0ZWVkYXRhb2JqZWN0ICp0ZG8pCit7CisgICAgaW50IGk7CisgICAgLyogY3JlYXRlIGEgdGVtcG9yYXJ5IGxpc3Qgb2YgYWxyZWFkeSBpdGVyYXRlZCB2YWx1ZXMgKi8KKyAgICBQeU9iamVjdCAqdmFsdWVzID0gUHlMaXN0X05ldyh0ZG8tPm51bXJlYWQpOworICAgIGlmICghdmFsdWVzKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmb3IgKGk9MCA7IGk8dGRvLT5udW1yZWFkIDsgaSsrKSB7CisgICAgICAgIFB5X0lOQ1JFRih0ZG8tPnZhbHVlc1tpXSk7CisgICAgICAgIFB5TGlzdF9TRVRfSVRFTSh2YWx1ZXMsIGksIHRkby0+dmFsdWVzW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT05PKSIsIFB5X1RZUEUodGRvKSwgdGRvLT5pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgdGRvLT5uZXh0bGluayA/IHRkby0+bmV4dGxpbmsgOiBQeV9Ob25lKTsKK30KKworc3RhdGljIFB5VHlwZU9iamVjdCB0ZWVkYXRhb2JqZWN0X3R5cGU7CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZWVkYXRhb2JqZWN0X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCit7CisgICAgdGVlZGF0YW9iamVjdCAqdGRvOworICAgIFB5T2JqZWN0ICppdCwgKnZhbHVlcywgKm5leHQ7CisgICAgUHlfc3NpemVfdCBpLCBsZW47CisKKyAgICBhc3NlcnQodHlwZSA9PSAmdGVlZGF0YW9iamVjdF90eXBlKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PIU8iLCAmaXQsICZQeUxpc3RfVHlwZSwgJnZhbHVlcywgJm5leHQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHRkbyA9ICh0ZWVkYXRhb2JqZWN0ICopdGVlZGF0YW9iamVjdF9uZXdpbnRlcm5hbChpdCk7CisgICAgaWYgKCF0ZG8pCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHZhbHVlcyk7CisgICAgaWYgKGxlbiA+IExJTktDRUxMUykKKyAgICAgICAgZ290byBlcnI7CisgICAgZm9yIChpPTA7IGk8bGVuOyBpKyspIHsKKyAgICAgICAgdGRvLT52YWx1ZXNbaV0gPSBQeUxpc3RfR0VUX0lURU0odmFsdWVzLCBpKTsKKyAgICAgICAgUHlfSU5DUkVGKHRkby0+dmFsdWVzW2ldKTsKKyAgICB9CisgICAgLyogbGVuIDw9IExJTktDRUxMUyA8IElOVF9NQVggKi8KKyAgICB0ZG8tPm51bXJlYWQgPSBQeV9TQUZFX0RPV05DQVNUKGxlbiwgUHlfc3NpemVfdCwgaW50KTsKKworICAgIGlmIChsZW4gPT0gTElOS0NFTExTKSB7CisgICAgICAgIGlmIChuZXh0ICE9IFB5X05vbmUpIHsKKyAgICAgICAgICAgIGlmIChQeV9UWVBFKG5leHQpICE9ICZ0ZWVkYXRhb2JqZWN0X3R5cGUpCisgICAgICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgICAgICBhc3NlcnQodGRvLT5uZXh0bGluayA9PSBOVUxMKTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihuZXh0KTsKKyAgICAgICAgICAgIHRkby0+bmV4dGxpbmsgPSBuZXh0OworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG5leHQgIT0gUHlfTm9uZSkKKyAgICAgICAgICAgIGdvdG8gZXJyOyAvKiBzaG91bGRuJ3QgaGF2ZSBhIG5leHQgaWYgd2UgYXJlIG5vdCBmdWxsICovCisgICAgfQorICAgIHJldHVybiAoUHlPYmplY3QqKXRkbzsKKworZXJyOgorICAgIFB5X1hERUNSRUYodGRvKTsKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkludmFsaWQgYXJndW1lbnRzIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiB0ZWVkYXRhb2JqZWN0X21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbil0ZWVkYXRhb2JqZWN0X3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIodGVlZGF0YW9iamVjdF9kb2MsICJEYXRhIGNvbnRhaW5lciBjb21tb24gdG8gbXVsdGlwbGUgdGVlIG9iamVjdHMuIik7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgdGVlZGF0YW9iamVjdF90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgwLCAwKSAgICAgICAgIC8qIE11c3QgZmlsbCBpbiB0eXBlIHZhbHVlIGxhdGVyICovCi0gICAgIml0ZXJ0b29scy50ZWVfZGF0YW9iamVjdCIsICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgIml0ZXJ0b29scy5fdGVlX2RhdGFvYmplY3QiLCAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKHRlZWRhdGFvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwpAQCAtNDY4LDcgKzYxMCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICB0ZWVkYXRhb2JqZWN0X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtNDc4LDcgKzYyMCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgdGVlZGF0YW9iamVjdF9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKQEAgLTU0Nyw3ICs2ODksNyBAQAogICAgIHRvID0gUHlPYmplY3RfR0NfTmV3KHRlZW9iamVjdCwgJnRlZV90eXBlKTsKICAgICBpZiAodG8gPT0gTlVMTCkKICAgICAgICAgZ290byBkb25lOwotICAgIHRvLT5kYXRhb2JqID0gKHRlZWRhdGFvYmplY3QgKil0ZWVkYXRhb2JqZWN0X25ldyhpdCk7CisgICAgdG8tPmRhdGFvYmogPSAodGVlZGF0YW9iamVjdCAqKXRlZWRhdGFvYmplY3RfbmV3aW50ZXJuYWwoaXQpOwogICAgIGlmICghdG8tPmRhdGFvYmopIHsKICAgICAgICAgUHlPYmplY3RfR0NfRGVsKHRvKTsKICAgICAgICAgdG8gPSBOVUxMOwpAQCAtNTY3LDcgKzcwOSw3IEBACiB7CiAgICAgUHlPYmplY3QgKml0ZXJhYmxlOwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidGVlIiwgMSwgMSwgJml0ZXJhYmxlKSkKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJfdGVlIiwgMSwgMSwgJml0ZXJhYmxlKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIHRlZV9mcm9taXRlcmFibGUoaXRlcmFibGUpOwogfQpAQCAtNTg5LDE3ICs3MzEsNDMgQEAKICAgICBQeU9iamVjdF9HQ19EZWwodG8pOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgordGVlX3JlZHVjZSh0ZWVvYmplY3QgKnRvKQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKCgpKShPaSkiLCBQeV9UWVBFKHRvKSwgdG8tPmRhdGFvYmosIHRvLT5pbmRleCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZWVfc2V0c3RhdGUodGVlb2JqZWN0ICp0bywgUHlPYmplY3QgKnN0YXRlKQoreworICAgIHRlZWRhdGFvYmplY3QgKnRkbzsKKyAgICBpbnQgaW5kZXg7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiTyFpIiwgJnRlZWRhdGFvYmplY3RfdHlwZSwgJnRkbywgJmluZGV4KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IExJTktDRUxMUykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfQ0xFQVIodG8tPmRhdGFvYmopOworICAgIHRvLT5kYXRhb2JqID0gdGRvOworICAgIFB5X0lOQ1JFRih0by0+ZGF0YW9iaik7CisgICAgdG8tPmluZGV4ID0gaW5kZXg7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKIFB5RG9jX1NUUlZBUih0ZWVvYmplY3RfZG9jLAogIkl0ZXJhdG9yIHdyYXBwZWQgdG8gbWFrZSBpdCBjb3B5YWJsZSIpOwogCiBzdGF0aWMgUHlNZXRob2REZWYgdGVlX21ldGhvZHNbXSA9IHsKICAgICB7Il9fY29weV9fIiwgICAgICAgIChQeUNGdW5jdGlvbil0ZWVfY29weSwgIE1FVEhfTk9BUkdTLCB0ZWVjb3B5X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pdGVlX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pdGVlX3NldHN0YXRlLCAgICBNRVRIX08sIHNldHN0YXRlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgdGVlX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIml0ZXJ0b29scy50ZWUiLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgICJpdGVydG9vbHMuX3RlZSIsICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KICAgICBzaXplb2YodGVlb2JqZWN0KSwgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KQEAgLTY0NSw2ICs4MTMsNyBAQAogewogICAgIFB5X3NzaXplX3QgaSwgbj0yOwogICAgIFB5T2JqZWN0ICppdCwgKml0ZXJhYmxlLCAqY29weWFibGUsICpyZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIoX19jb3B5X18pOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfG4iLCAmaXRlcmFibGUsICZuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02NjIsNyArODMxLDcgQEAKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoIVB5T2JqZWN0X0hhc0F0dHJTdHJpbmcoaXQsICJfX2NvcHlfXyIpKSB7CisgICAgaWYgKCFfUHlPYmplY3RfSGFzQXR0cklkKGl0LCAmUHlJZF9fX2NvcHlfXykpIHsKICAgICAgICAgY29weWFibGUgPSB0ZWVfZnJvbWl0ZXJhYmxlKGl0KTsKICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgaWYgKGNvcHlhYmxlID09IE5VTEwpIHsKQEAgLTY3Myw3ICs4NDIsOCBAQAogICAgICAgICBjb3B5YWJsZSA9IGl0OwogICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCAwLCBjb3B5YWJsZSk7CiAgICAgZm9yIChpPTEgOyBpPG4gOyBpKyspIHsKLSAgICAgICAgY29weWFibGUgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGNvcHlhYmxlLCAiX19jb3B5X18iLCBOVUxMKTsKKworICAgICAgICBjb3B5YWJsZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoY29weWFibGUsICZQeUlkX19fY29weV9fLCBOVUxMKTsKICAgICAgICAgaWYgKGNvcHlhYmxlID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03ODgsNiArOTU4LDM4IEBACiAgICAgfQogfQogCitzdGF0aWMgUHlPYmplY3QgKgorY3ljbGVfcmVkdWNlKGN5Y2xlb2JqZWN0ICpseikKK3sKKyAgICAvKiBDcmVhdGUgYSBuZXcgY3ljbGUgd2l0aCB0aGUgaXRlcmF0b3IgdHVwbGUsIHRoZW4gc2V0CisgICAgICogdGhlIHNhdmVkIHN0YXRlIG9uIGl0LgorICAgICAqLworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE8pKE9pKSIsIFB5X1RZUEUobHopLAorICAgICAgICBsei0+aXQsIGx6LT5zYXZlZCwgbHotPmZpcnN0cGFzcyk7CisgICAgfQorCitzdGF0aWMgUHlPYmplY3QgKgorY3ljbGVfc2V0c3RhdGUoY3ljbGVvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlPYmplY3QgKnNhdmVkPU5VTEw7CisgICAgaW50IGZpcnN0cGFzczsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJPaSIsICZzYXZlZCwgJmZpcnN0cGFzcykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0NMRUFSKGx6LT5zYXZlZCk7CisgICAgbHotPnNhdmVkID0gc2F2ZWQ7CisgICAgUHlfWElOQ1JFRihsei0+c2F2ZWQpOworICAgIGx6LT5maXJzdHBhc3MgPSBmaXJzdHBhc3MgIT0gMDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIGN5Y2xlX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbiljeWNsZV9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWN5Y2xlX3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoY3ljbGVfZG9jLAogImN5Y2xlKGl0ZXJhYmxlKSAtLT4gY3ljbGUgb2JqZWN0XG5cCiBcblwKQEAgLTgyNCw3ICsxMDI2LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWN5Y2xlX25leHQsICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBjeWNsZV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTkzMiw2ICsxMTM0LDMxIEBACiAgICAgfQogfQogCitzdGF0aWMgUHlPYmplY3QgKgorZHJvcHdoaWxlX3JlZHVjZShkcm9wd2hpbGVvYmplY3QgKmx6KQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKWwiLCBQeV9UWVBFKGx6KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsei0+ZnVuYywgbHotPml0LCBsei0+c3RhcnQpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZHJvcHdoaWxlX3NldHN0YXRlKGRyb3B3aGlsZW9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBpbnQgc3RhcnQgPSBQeU9iamVjdF9Jc1RydWUoc3RhdGUpOworICAgIGlmIChzdGFydCA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGx6LT5zdGFydCA9IHN0YXJ0OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgZHJvcHdoaWxlX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilkcm9wd2hpbGVfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbilkcm9wd2hpbGVfc2V0c3RhdGUsICAgIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihkcm9wd2hpbGVfZG9jLAogImRyb3B3aGlsZShwcmVkaWNhdGUsIGl0ZXJhYmxlKSAtLT4gZHJvcHdoaWxlIG9iamVjdFxuXAogXG5cCkBAIC05NjgsNyArMTE5NSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylkcm9wd2hpbGVfbmV4dCwgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgZHJvcHdoaWxlX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMTA2NCw3ICsxMjkxLDcgQEAKICAgICB9CiAgICAgb2sgPSBQeU9iamVjdF9Jc1RydWUoZ29vZCk7CiAgICAgUHlfREVDUkVGKGdvb2QpOwotICAgIGlmIChvayA+IDApCisgICAgaWYgKG9rID09IDEpCiAgICAgICAgIHJldHVybiBpdGVtOwogICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICBpZiAob2sgPT0gMCkKQEAgLTEwNzIsNiArMTI5OSwzMCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgordGFrZXdoaWxlX3JlZHVjZSh0YWtld2hpbGVvYmplY3QgKmx6KQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKWwiLCBQeV9UWVBFKGx6KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsei0+ZnVuYywgbHotPml0LCBsei0+c3RvcCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0YWtld2hpbGVfcmVkdWNlX3NldHN0YXRlKHRha2V3aGlsZW9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBpbnQgc3RvcCA9IFB5T2JqZWN0X0lzVHJ1ZShzdGF0ZSk7CisgICAgaWYgKHN0b3AgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsei0+c3RvcCA9IHN0b3A7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiB0YWtld2hpbGVfcmVkdWNlX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbil0YWtld2hpbGVfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbil0YWtld2hpbGVfcmVkdWNlX3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OwogUHlEb2NfU1RSVkFSKHRha2V3aGlsZV9kb2MsCiAidGFrZXdoaWxlKHByZWRpY2F0ZSwgaXRlcmFibGUpIC0tPiB0YWtld2hpbGUgb2JqZWN0XG5cCiBcblwKQEAgLTExMDgsNyArMTM1OSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyl0YWtld2hpbGVfbmV4dCwgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgdGFrZXdoaWxlX3JlZHVjZV9tZXRob2RzLCAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0xMjY0LDYgKzE1MTUsNDQgQEAKICAgICByZXR1cm4gaXRlbTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2lzbGljZV9yZWR1Y2UoaXNsaWNlb2JqZWN0ICpseikKK3sKKyAgICAvKiBXaGVuIHVucGlja2xlZCwgZ2VuZXJhdGUgYSBuZXcgb2JqZWN0IHdpdGggdGhlIHNhbWUgYm91bmRzLAorICAgICAqIHRoZW4gJ3NldHN0YXRlJyB3aXRoIHRoZSBuZXh0IGFuZCBjb3VudAorICAgICAqLworICAgIFB5T2JqZWN0ICpzdG9wOworICAgIGlmIChsei0+c3RvcCA9PSAtMSkgeworICAgICAgICBzdG9wID0gUHlfTm9uZTsKKyAgICAgICAgUHlfSU5DUkVGKHN0b3ApOworICAgIH0gZWxzZSB7CisgICAgICAgIHN0b3AgPSBQeUxvbmdfRnJvbVNzaXplX3QobHotPnN0b3ApOworICAgICAgICBpZiAoc3RvcCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9uTm4pbiIsIFB5X1RZUEUobHopLAorICAgICAgICBsei0+aXQsIGx6LT5uZXh0LCBzdG9wLCBsei0+c3RlcCwKKyAgICAgICAgbHotPmNudCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitpc2xpY2Vfc2V0c3RhdGUoaXNsaWNlb2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X3NzaXplX3QgY250ID0gUHlMb25nX0FzU3NpemVfdChzdGF0ZSk7CisgICAgaWYgKGNudCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsei0+Y250ID0gY250OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgaXNsaWNlX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilpc2xpY2VfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbilpc2xpY2Vfc2V0c3RhdGUsICAgIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihpc2xpY2VfZG9jLAogImlzbGljZShpdGVyYWJsZSwgW3N0YXJ0LF0gc3RvcCBbLCBzdGVwXSkgLS0+IGlzbGljZSBvYmplY3RcblwKIFxuXApAQCAtMTMwNCw3ICsxNTkzLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWlzbGljZV9uZXh0LCAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBpc2xpY2VfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTEzOTksNiArMTY4OCwxOSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitzdGFybWFwX3JlZHVjZShzdGFybWFwb2JqZWN0ICpseikKK3sKKyAgICAvKiBKdXN0IHBpY2tsZSB0aGUgaXRlcmF0b3IgKi8KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGx6KSwgbHotPmZ1bmMsIGx6LT5pdCk7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBzdGFybWFwX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilzdGFybWFwX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoc3Rhcm1hcF9kb2MsCiAic3Rhcm1hcChmdW5jdGlvbiwgc2VxdWVuY2UpIC0tPiBzdGFybWFwIG9iamVjdFxuXAogXG5cCkBAIC0xNDM1LDcgKzE3MzcsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpc3Rhcm1hcF9uZXh0LCAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIHN0YXJtYXBfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMTU1NCw2ICsxODU2LDQxIEBACiAgICAgcmV0dXJuIGNoYWluX25leHQobHopOyAgICAgICAgICAgICAgICAgICAgICAvKiByZWN1cnNlIGFuZCB1c2UgbmV4dCBhY3RpdmUgKi8KIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2NoYWluX3JlZHVjZShjaGFpbm9iamVjdCAqbHopCit7CisgICAgaWYgKGx6LT5zb3VyY2UpIHsKKyAgICAgICAgLyogd2UgY2FuJ3QgcGlja2xlIGZ1bmN0aW9uIG9iamVjdHMgKGl0ZXJ0b29scy5mcm9tX2l0ZXJhYmxlKSBzbworICAgICAgICAgKiB3ZSBtdXN0IHVzZSBzZXRzdGF0ZSB0byByZXBsYWNlIHRoZSBpdGVyYWJsZS4gIE9uZSBkYXkgd2UKKyAgICAgICAgICogd2lsbCBmaXggcGlja2xpbmcgb2YgZnVuY3Rpb25zCisgICAgICAgICAqLworICAgICAgICBpZiAobHotPmFjdGl2ZSkgeworICAgICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKShPTykiLCBQeV9UWVBFKGx6KSwgbHotPnNvdXJjZSwgbHotPmFjdGl2ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTygpKE8pIiwgUHlfVFlQRShseiksIGx6LT5zb3VyY2UpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKSIsIFB5X1RZUEUobHopKTsgLyogZXhoYXVzdGVkICovCisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY2hhaW5fc2V0c3RhdGUoY2hhaW5vYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlPYmplY3QgKnNvdXJjZSwgKmFjdGl2ZT1OVUxMOworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJPfE8iLCAmc291cmNlLCAmYWN0aXZlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9DTEVBUihsei0+c291cmNlKTsKKyAgICBsei0+c291cmNlID0gc291cmNlOworICAgIFB5X0lOQ1JFRihsei0+c291cmNlKTsKKyAgICBQeV9DTEVBUihsei0+YWN0aXZlKTsKKyAgICBsei0+YWN0aXZlID0gYWN0aXZlOworICAgIFB5X1hJTkNSRUYobHotPmFjdGl2ZSk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKIFB5RG9jX1NUUlZBUihjaGFpbl9kb2MsCiAiY2hhaW4oKml0ZXJhYmxlcykgLS0+IGNoYWluIG9iamVjdFxuXAogXG5cCkBAIC0xNTcwLDYgKzE5MDcsMTAgQEAKIHN0YXRpYyBQeU1ldGhvZERlZiBjaGFpbl9tZXRob2RzW10gPSB7CiAgICAgeyJmcm9tX2l0ZXJhYmxlIiwgKFB5Q0Z1bmN0aW9uKSBjaGFpbl9uZXdfZnJvbV9pdGVyYWJsZSwgICAgICAgICAgICBNRVRIX08gfCBNRVRIX0NMQVNTLAogICAgICAgICBjaGFpbl9mcm9tX2l0ZXJhYmxlX2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pY2hhaW5fcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbiljaGFpbl9zZXRzdGF0ZSwgICAgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMTgxMCw2ICsyMTUxLDgzIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitwcm9kdWN0X3JlZHVjZShwcm9kdWN0b2JqZWN0ICpseikKK3sKKyAgICBpZiAobHotPnN0b3BwZWQpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKCkpIiwgUHlfVFlQRShseikpOworICAgIH0gZWxzZSBpZiAobHotPnJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPTyIsIFB5X1RZUEUobHopLCBsei0+cG9vbHMpOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICppbmRpY2VzOworICAgICAgICBQeV9zc2l6ZV90IG4sIGk7CisKKyAgICAgICAgLyogd2UgbXVzdCBwaWNrbGUgdGhlIGluZGljZXMgdXNlIHRoZW0gZm9yIHNldHN0YXRlLCBhbmQKKyAgICAgICAgICogYWRkaXRpb25hbGx5IGluZGljYXRlIHRoYXQgdGhlIGl0ZXJhdG9yIGhhcyBzdGFydGVkCisgICAgICAgICAqLworICAgICAgICBuID0gUHlUdXBsZV9HRVRfU0laRShsei0+cG9vbHMpOworICAgICAgICBpbmRpY2VzID0gUHlUdXBsZV9OZXcobik7CisgICAgICAgIGlmIChpbmRpY2VzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZm9yIChpPTA7IGk8bjsgaSsrKXsKKyAgICAgICAgICAgIFB5T2JqZWN0KiBpbmRleCA9IFB5TG9uZ19Gcm9tU3NpemVfdChsei0+aW5kaWNlc1tpXSk7CisgICAgICAgICAgICBpZiAoIWluZGV4KSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGluZGljZXMpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShpbmRpY2VzLCBpLCBpbmRleCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk9PTiIsIFB5X1RZUEUobHopLCBsei0+cG9vbHMsIGluZGljZXMpOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Byb2R1Y3Rfc2V0c3RhdGUocHJvZHVjdG9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5X3NzaXplX3QgbiwgaTsKKworICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKGx6LT5wb29scyk7CisgICAgaWYgKCFQeVR1cGxlX0NoZWNrKHN0YXRlKSB8fCBQeVR1cGxlX0dFVF9TSVpFKHN0YXRlKSAhPSBuKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBhcmd1bWVudHMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGZvciAoaT0wOyBpPG47IGkrKykKKyAgICB7CisgICAgICAgIFB5T2JqZWN0KiBpbmRleE9iamVjdCA9IFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIGkpOworICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChpbmRleE9iamVjdCk7CisgICAgICAgIGlmIChpbmRleCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOyAvKiBub3QgYW4gaW50ZWdlciAqLworICAgICAgICAvKiBjbGFtcCB0aGUgaW5kZXggKi8KKyAgICAgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgZWxzZSBpZiAoaW5kZXggPiBuLTEpCisgICAgICAgICAgICBpbmRleCA9IG4tMTsKKyAgICAgICAgbHotPmluZGljZXNbaV0gPSBpbmRleDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBQeVR1cGxlX05ldyhuKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpPTA7IGk8bjsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpwb29sID0gUHlUdXBsZV9HRVRfSVRFTShsei0+cG9vbHMsIGkpOworICAgICAgICBQeU9iamVjdCAqZWxlbWVudCA9IFB5VHVwbGVfR0VUX0lURU0ocG9vbCwgbHotPmluZGljZXNbaV0pOworICAgICAgICBQeV9JTkNSRUYoZWxlbWVudCk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCBpLCBlbGVtZW50KTsKKyAgICB9CisgICAgUHlfQ0xFQVIobHotPnJlc3VsdCk7CisgICAgbHotPnJlc3VsdCA9IHJlc3VsdDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIHByb2R1Y3RfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXByb2R1Y3RfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbilwcm9kdWN0X3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIocHJvZHVjdF9kb2MsCiAicHJvZHVjdCgqaXRlcmFibGVzKSAtLT4gcHJvZHVjdCBvYmplY3RcblwKIFxuXApAQCAtMTg1NCw3ICsyMjcyLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKXByb2R1Y3RfbmV4dCwgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBwcm9kdWN0X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTIwNDEsNiArMjQ1OSw4NiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorY29tYmluYXRpb25zX3JlZHVjZShjb21iaW5hdGlvbnNvYmplY3QgKmx6KQoreworICAgIGlmIChsei0+cmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT24pIiwgUHlfVFlQRShseiksIGx6LT5wb29sLCBsei0+cik7CisgICAgfSBlbHNlIGlmIChsei0+c3RvcHBlZCkgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTygoKW4pIiwgUHlfVFlQRShseiksIGx6LT5yKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdCAqaW5kaWNlczsKKyAgICAgICAgUHlfc3NpemVfdCBpOworCisgICAgICAgIC8qIHdlIG11c3QgcGlja2xlIHRoZSBpbmRpY2VzIGFuZCB1c2UgdGhlbSBmb3Igc2V0c3RhdGUgKi8KKyAgICAgICAgaW5kaWNlcyA9IFB5VHVwbGVfTmV3KGx6LT5yKTsKKyAgICAgICAgaWYgKCFpbmRpY2VzKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGZvciAoaT0wOyBpPGx6LT5yOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIFB5T2JqZWN0KiBpbmRleCA9IFB5TG9uZ19Gcm9tU3NpemVfdChsei0+aW5kaWNlc1tpXSk7CisgICAgICAgICAgICBpZiAoIWluZGV4KSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGluZGljZXMpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShpbmRpY2VzLCBpLCBpbmRleCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPbilOIiwgUHlfVFlQRShseiksIGx6LT5wb29sLCBsei0+ciwgaW5kaWNlcyk7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29tYmluYXRpb25zX3NldHN0YXRlKGNvbWJpbmF0aW9uc29iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeV9zc2l6ZV90IG4gPSBQeVR1cGxlX0dFVF9TSVpFKGx6LT5wb29sKTsKKworICAgIGlmICghUHlUdXBsZV9DaGVjayhzdGF0ZSkgfHwgUHlUdXBsZV9HRVRfU0laRShzdGF0ZSkgIT0gbHotPnIpCisgICAgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoaT0wOyBpPGx6LT5yOyBpKyspCisgICAgeworICAgICAgICBQeV9zc2l6ZV90IG1heDsKKyAgICAgICAgUHlPYmplY3QqIGluZGV4T2JqZWN0ID0gUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgaSk7CisgICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KGluZGV4T2JqZWN0KTsKKyAgICAgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgLyogbm90IGFuIGludGVnZXIgKi8KKyAgICAgICAgbWF4ID0gaSArIG4gLSBsei0+cjsKKyAgICAgICAgLyogY2xhbXAgdGhlIGluZGV4IChiZXdhcmUgb2YgbmVnYXRpdmUgbWF4KSAqLworICAgICAgICBpZiAoaW5kZXggPiBtYXgpCisgICAgICAgICAgICBpbmRleCA9IG1heDsKKyAgICAgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgbHotPmluZGljZXNbaV0gPSBpbmRleDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBQeVR1cGxlX05ldyhsei0+cik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICplbGVtZW50ID0gUHlUdXBsZV9HRVRfSVRFTShsei0+cG9vbCwgbHotPmluZGljZXNbaV0pOworICAgICAgICBQeV9JTkNSRUYoZWxlbWVudCk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCBpLCBlbGVtZW50KTsKKyAgICB9CisKKyAgICBQeV9DTEVBUihsei0+cmVzdWx0KTsKKyAgICBsei0+cmVzdWx0ID0gcmVzdWx0OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgY29tYmluYXRpb25zX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbiljb21iaW5hdGlvbnNfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbiljb21iaW5hdGlvbnNfc2V0c3RhdGUsICAgIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihjb21iaW5hdGlvbnNfZG9jLAogImNvbWJpbmF0aW9ucyhpdGVyYWJsZSwgcikgLS0+IGNvbWJpbmF0aW9ucyBvYmplY3RcblwKIFxuXApAQCAtMjA0OSwxMSArMjU0NywxMSBAQAogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IGNvbWJpbmF0aW9uc190eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJpdGVydG9vbHMuY29tYmluYXRpb25zIiwgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgICJpdGVydG9vbHMuY29tYmluYXRpb25zIiwgICAgICAgICAgIC8qIHRwX25hbWUgKi8KICAgICBzaXplb2YoY29tYmluYXRpb25zb2JqZWN0KSwgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3Rvciljb21iaW5hdGlvbnNfZGVhbGxvYywgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAoZGVzdHJ1Y3Rvciljb21iaW5hdGlvbnNfZGVhbGxvYywgICAvKiB0cF9kZWFsbG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwpAQCAtMjA3MCwxNCArMjU2OCwxNCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8CiAgICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KLSAgICBjb21iaW5hdGlvbnNfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpY29tYmluYXRpb25zX3RyYXZlcnNlLCAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICBjb21iaW5hdGlvbnNfZG9jLCAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWNvbWJpbmF0aW9uc190cmF2ZXJzZSwvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAoaXRlcm5leHRmdW5jKWNvbWJpbmF0aW9uc19uZXh0LCAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIChpdGVybmV4dGZ1bmMpY29tYmluYXRpb25zX25leHQsICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgY29tYmluYXRpb25zX21ldGhvZHMsICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0yMDg3LDcgKzI1ODUsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICBjb21iaW5hdGlvbnNfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIGNvbWJpbmF0aW9uc19uZXcsICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKQEAgLTIyODYsNiArMjc4NCw4MiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorY3dyX3JlZHVjZShjd3JvYmplY3QgKmx6KQoreworICAgIGlmIChsei0+cmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT24pIiwgUHlfVFlQRShseiksIGx6LT5wb29sLCBsei0+cik7CisgICAgfSBlbHNlIGlmIChsei0+c3RvcHBlZCkgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTygoKW4pIiwgUHlfVFlQRShseiksIGx6LT5yKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdCAqaW5kaWNlczsKKyAgICAgICAgUHlfc3NpemVfdCBpOworCisgICAgICAgIC8qIHdlIG11c3QgcGlja2xlIHRoZSBpbmRpY2VzIGFuZCB1c2UgdGhlbSBmb3Igc2V0c3RhdGUgKi8KKyAgICAgICAgaW5kaWNlcyA9IFB5VHVwbGVfTmV3KGx6LT5yKTsKKyAgICAgICAgaWYgKCFpbmRpY2VzKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGZvciAoaT0wOyBpPGx6LT5yOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIFB5T2JqZWN0KiBpbmRleCA9IFB5TG9uZ19Gcm9tU3NpemVfdChsei0+aW5kaWNlc1tpXSk7CisgICAgICAgICAgICBpZiAoIWluZGV4KSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGluZGljZXMpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShpbmRpY2VzLCBpLCBpbmRleCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPbilOIiwgUHlfVFlQRShseiksIGx6LT5wb29sLCBsei0+ciwgaW5kaWNlcyk7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorY3dyX3NldHN0YXRlKGN3cm9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5X3NzaXplX3QgbiwgaTsKKworICAgIGlmICghUHlUdXBsZV9DaGVjayhzdGF0ZSkgfHwgUHlUdXBsZV9HRVRfU0laRShzdGF0ZSkgIT0gbHotPnIpCisgICAgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKGx6LT5wb29sKTsKKyAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKQorICAgIHsKKyAgICAgICAgUHlPYmplY3QqIGluZGV4T2JqZWN0ID0gUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgaSk7CisgICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KGluZGV4T2JqZWN0KTsKKyAgICAgICAgaWYgKGluZGV4IDwgMCAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7IC8qIG5vdCBhbiBpbnRlZ2VyICovCisgICAgICAgIC8qIGNsYW1wIHRoZSBpbmRleCAqLworICAgICAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICBlbHNlIGlmIChpbmRleCA+IG4tMSkKKyAgICAgICAgICAgIGluZGV4ID0gbi0xOworICAgICAgICBsei0+aW5kaWNlc1tpXSA9IGluZGV4OworICAgIH0KKyAgICByZXN1bHQgPSBQeVR1cGxlX05ldyhsei0+cik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICplbGVtZW50ID0gUHlUdXBsZV9HRVRfSVRFTShsei0+cG9vbCwgbHotPmluZGljZXNbaV0pOworICAgICAgICBQeV9JTkNSRUYoZWxlbWVudCk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCBpLCBlbGVtZW50KTsKKyAgICB9CisgICAgUHlfQ0xFQVIobHotPnJlc3VsdCk7CisgICAgbHotPnJlc3VsdCA9IHJlc3VsdDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIGN3cl9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pY3dyX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pY3dyX3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoY3dyX2RvYywKICJjb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudChpdGVyYWJsZSwgcikgLS0+IGNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50IG9iamVjdFxuXAogXG5cCkBAIC0yMjk1LDExICsyODY5LDExIEBACiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgY3dyX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIml0ZXJ0b29scy5jb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudCIsICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwotICAgIHNpemVvZihjd3JvYmplY3QpLCAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgICJpdGVydG9vbHMuY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQiLCAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKGN3cm9iamVjdCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3Rvciljd3JfZGVhbGxvYywgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgKGRlc3RydWN0b3IpY3dyX2RlYWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCkBAIC0yMzExLDE5ICsyODg1LDE5IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KLSAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAotICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgY3dyX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKWN3cl90cmF2ZXJzZSwgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIGN3cl9kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWN3cl90cmF2ZXJzZSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgKGl0ZXJuZXh0ZnVuYyljd3JfbmV4dCwgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIChpdGVybmV4dGZ1bmMpY3dyX25leHQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGN3cl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTIzMzMsOCArMjkwNyw4IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIGN3cl9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCi0gICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIGN3cl9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAogCkBAIC0yNTU4LDYgKzMxMzIsMTE1IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitwZXJtdXRhdGlvbnNfcmVkdWNlKHBlcm11dGF0aW9uc29iamVjdCAqcG8pCit7CisgICAgaWYgKHBvLT5yZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPbikiLCBQeV9UWVBFKHBvKSwgcG8tPnBvb2wsIHBvLT5yKTsKKyAgICB9IGVsc2UgaWYgKHBvLT5zdG9wcGVkKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKCgpbikiLCBQeV9UWVBFKHBvKSwgcG8tPnIpOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICppbmRpY2VzPU5VTEwsICpjeWNsZXM9TlVMTDsKKyAgICAgICAgUHlfc3NpemVfdCBuLCBpOworCisgICAgICAgIC8qIHdlIG11c3QgcGlja2xlIHRoZSBpbmRpY2VzIGFuZCBjeWNsZXMgYW5kIHVzZSB0aGVtIGZvciBzZXRzdGF0ZSAqLworICAgICAgICBuID0gUHlUdXBsZV9HRVRfU0laRShwby0+cG9vbCk7CisgICAgICAgIGluZGljZXMgPSBQeVR1cGxlX05ldyhuKTsKKyAgICAgICAgaWYgKGluZGljZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICBmb3IgKGk9MDsgaTxuOyBpKyspeworICAgICAgICAgICAgUHlPYmplY3QqIGluZGV4ID0gUHlMb25nX0Zyb21Tc2l6ZV90KHBvLT5pbmRpY2VzW2ldKTsKKyAgICAgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGluZGljZXMsIGksIGluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIGN5Y2xlcyA9IFB5VHVwbGVfTmV3KHBvLT5yKTsKKyAgICAgICAgaWYgKGN5Y2xlcyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgIGZvciAoaT0wOyBpPHBvLT5yOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIFB5T2JqZWN0KiBpbmRleCA9IFB5TG9uZ19Gcm9tU3NpemVfdChwby0+Y3ljbGVzW2ldKTsKKyAgICAgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGN5Y2xlcywgaSwgaW5kZXgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9uKShOTikiLCBQeV9UWVBFKHBvKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG8tPnBvb2wsIHBvLT5yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzLCBjeWNsZXMpOworICAgIGVycjoKKyAgICAgICAgUHlfWERFQ1JFRihpbmRpY2VzKTsKKyAgICAgICAgUHlfWERFQ1JFRihjeWNsZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitwZXJtdXRhdGlvbnNfc2V0c3RhdGUocGVybXV0YXRpb25zb2JqZWN0ICpwbywgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5T2JqZWN0ICppbmRpY2VzLCAqY3ljbGVzLCAqcmVzdWx0OworICAgIFB5X3NzaXplX3QgbiwgaTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk8hTyEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlUdXBsZV9UeXBlLCAmaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VHVwbGVfVHlwZSwgJmN5Y2xlcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbiA9IFB5VHVwbGVfR0VUX1NJWkUocG8tPnBvb2wpOworICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGluZGljZXMpICE9IG4gfHwKKyAgICAgICAgUHlUdXBsZV9HRVRfU0laRShjeWNsZXMpICE9IHBvLT5yKQorICAgIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGFyZ3VtZW50cyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGk9MDsgaTxuOyBpKyspCisgICAgeworICAgICAgICBQeU9iamVjdCogaW5kZXhPYmplY3QgPSBQeVR1cGxlX0dFVF9JVEVNKGluZGljZXMsIGkpOworICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChpbmRleE9iamVjdCk7CisgICAgICAgIGlmIChpbmRleCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOyAvKiBub3QgYW4gaW50ZWdlciAqLworICAgICAgICAvKiBjbGFtcCB0aGUgaW5kZXggKi8KKyAgICAgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgZWxzZSBpZiAoaW5kZXggPiBuLTEpCisgICAgICAgICAgICBpbmRleCA9IG4tMTsKKyAgICAgICAgcG8tPmluZGljZXNbaV0gPSBpbmRleDsKKyAgICB9CisKKyAgICBmb3IgKGk9MDsgaTxwby0+cjsgaSsrKQorICAgIHsKKyAgICAgICAgUHlPYmplY3QqIGluZGV4T2JqZWN0ID0gUHlUdXBsZV9HRVRfSVRFTShjeWNsZXMsIGkpOworICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChpbmRleE9iamVjdCk7CisgICAgICAgIGlmIChpbmRleCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOyAvKiBub3QgYW4gaW50ZWdlciAqLworICAgICAgICBpZiAoaW5kZXggPCAxKQorICAgICAgICAgICAgaW5kZXggPSAxOworICAgICAgICBlbHNlIGlmIChpbmRleCA+IG4taSkKKyAgICAgICAgICAgIGluZGV4ID0gbi1pOworICAgICAgICBwby0+Y3ljbGVzW2ldID0gaW5kZXg7CisgICAgfQorICAgIHJlc3VsdCA9IFB5VHVwbGVfTmV3KHBvLT5yKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGZvciAoaT0wOyBpPHBvLT5yOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKmVsZW1lbnQgPSBQeVR1cGxlX0dFVF9JVEVNKHBvLT5wb29sLCBwby0+aW5kaWNlc1tpXSk7CisgICAgICAgIFB5X0lOQ1JFRihlbGVtZW50KTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIGksIGVsZW1lbnQpOworICAgIH0KKyAgICBQeV9DTEVBUihwby0+cmVzdWx0KTsKKyAgICBwby0+cmVzdWx0ID0gcmVzdWx0OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgcGVybXVhdGlvbnNfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXBlcm11dGF0aW9uc19yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKXBlcm11dGF0aW9uc19zZXRzdGF0ZSwgICAgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKHBlcm11dGF0aW9uc19kb2MsCiAicGVybXV0YXRpb25zKGl0ZXJhYmxlWywgcl0pIC0tPiBwZXJtdXRhdGlvbnMgb2JqZWN0XG5cCiBcblwKQEAgLTI1OTQsNyArMzI3Nyw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylwZXJtdXRhdGlvbnNfbmV4dCwgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBwZXJtdWF0aW9uc19tZXRob2RzLCAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTI2MTQsNiArMzI5Nyw3IEBACiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5T2JqZWN0ICp0b3RhbDsKICAgICBQeU9iamVjdCAqaXQ7CisgICAgUHlPYmplY3QgKmJpbm9wOwogfSBhY2N1bXVsYXRlb2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IGFjY3VtdWxhdGVfdHlwZTsKQEAgLTI2MjEsMTIgKzMzMDUsMTQgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBhY2N1bXVsYXRlX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBzdGF0aWMgY2hhciAqa3dhcmdzW10gPSB7Iml0ZXJhYmxlIiwgTlVMTH07CisgICAgc3RhdGljIGNoYXIgKmt3YXJnc1tdID0geyJpdGVyYWJsZSIsICJmdW5jIiwgTlVMTH07CiAgICAgUHlPYmplY3QgKml0ZXJhYmxlOwogICAgIFB5T2JqZWN0ICppdDsKKyAgICBQeU9iamVjdCAqYmlub3AgPSBQeV9Ob25lOwogICAgIGFjY3VtdWxhdGVvYmplY3QgKmx6OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk86YWNjdW11bGF0ZSIsIGt3YXJncywgJml0ZXJhYmxlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPOmFjY3VtdWxhdGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJncywgJml0ZXJhYmxlLCAmYmlub3ApKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIEdldCBpdGVyYXRvci4gKi8KQEAgLTI2NDEsNiArMzMyNywxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBpZiAoYmlub3AgIT0gUHlfTm9uZSkgeworICAgICAgICBQeV9YSU5DUkVGKGJpbm9wKTsKKyAgICAgICAgbHotPmJpbm9wID0gYmlub3A7CisgICAgfQogICAgIGx6LT50b3RhbCA9IE5VTEw7CiAgICAgbHotPml0ID0gaXQ7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWx6OwpAQCAtMjY1MCw2ICszMzQwLDcgQEAKIGFjY3VtdWxhdGVfZGVhbGxvYyhhY2N1bXVsYXRlb2JqZWN0ICpseikKIHsKICAgICBQeU9iamVjdF9HQ19VblRyYWNrKGx6KTsKKyAgICBQeV9YREVDUkVGKGx6LT5iaW5vcCk7CiAgICAgUHlfWERFQ1JFRihsei0+dG90YWwpOwogICAgIFB5X1hERUNSRUYobHotPml0KTsKICAgICBQeV9UWVBFKGx6KS0+dHBfZnJlZShseik7CkBAIC0yNjU4LDYgKzMzNDksNyBAQAogc3RhdGljIGludAogYWNjdW11bGF0ZV90cmF2ZXJzZShhY2N1bXVsYXRlb2JqZWN0ICpseiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7CisgICAgUHlfVklTSVQobHotPmJpbm9wKTsKICAgICBQeV9WSVNJVChsei0+aXQpOwogICAgIFB5X1ZJU0lUKGx6LT50b3RhbCk7CiAgICAgcmV0dXJuIDA7CkBAIC0yNjc4LDcgKzMzNzAsMTAgQEAKICAgICAgICAgcmV0dXJuIGx6LT50b3RhbDsKICAgICB9CiAKLSAgICBuZXd0b3RhbCA9IFB5TnVtYmVyX0FkZChsei0+dG90YWwsIHZhbCk7CisgICAgaWYgKGx6LT5iaW5vcCA9PSBOVUxMKQorICAgICAgICBuZXd0b3RhbCA9IFB5TnVtYmVyX0FkZChsei0+dG90YWwsIHZhbCk7CisgICAgZWxzZQorICAgICAgICBuZXd0b3RhbCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MobHotPmJpbm9wLCBsei0+dG90YWwsIHZhbCwgTlVMTCk7CiAgICAgUHlfREVDUkVGKHZhbCk7CiAgICAgaWYgKG5ld3RvdGFsID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjY5MSwxMCArMzM4NiwzNSBAQAogICAgIHJldHVybiBuZXd0b3RhbDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2FjY3VtdWxhdGVfcmVkdWNlKGFjY3VtdWxhdGVvYmplY3QgKmx6KQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKU8iLCBQeV9UWVBFKGx6KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsei0+aXQsIGx6LT5iaW5vcD9sei0+Ymlub3A6UHlfTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsei0+dG90YWw/bHotPnRvdGFsOlB5X05vbmUpOworIH0KKworc3RhdGljIFB5T2JqZWN0ICoKK2FjY3VtdWxhdGVfc2V0c3RhdGUoYWNjdW11bGF0ZW9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeV9DTEVBUihsei0+dG90YWwpOworICAgIGx6LT50b3RhbCA9IHN0YXRlOworICAgIFB5X0lOQ1JFRihsei0+dG90YWwpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgYWNjdW11bGF0ZV9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pYWNjdW11bGF0ZV9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWFjY3VtdWxhdGVfc2V0c3RhdGUsICAgIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihhY2N1bXVsYXRlX2RvYywKLSJhY2N1bXVsYXRlKGl0ZXJhYmxlKSAtLT4gYWNjdW11bGF0ZSBvYmplY3RcblwKKyJhY2N1bXVsYXRlKGl0ZXJhYmxlWywgZnVuY10pIC0tPiBhY2N1bXVsYXRlIG9iamVjdFxuXAogXG5cCi1SZXR1cm4gc2VyaWVzIG9mIGFjY3VtdWxhdGVkIHN1bXMuIik7CitSZXR1cm4gc2VyaWVzIG9mIGFjY3VtdWxhdGVkIHN1bXMgKG9yIG90aGVyIGJpbmFyeSBmdW5jdGlvbiByZXN1bHRzKS4iKTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBhY2N1bXVsYXRlX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCkBAIC0yNzI2LDcgKzM0NDYsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpYWNjdW11bGF0ZV9uZXh0LCAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGFjY3VtdWxhdGVfbWV0aG9kcywgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMjgzOCwxMSArMzU1OCwyNCBAQAogICAgICAgICBpZiAob2sgPT0gMSkKICAgICAgICAgICAgIHJldHVybiBkYXR1bTsKICAgICAgICAgUHlfREVDUkVGKGRhdHVtKTsKLSAgICAgICAgaWYgKG9rID09IC0xKQorICAgICAgICBpZiAob2sgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogfQogCitzdGF0aWMgUHlPYmplY3QgKgorY29tcHJlc3NfcmVkdWNlKGNvbXByZXNzb2JqZWN0ICpseikKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGx6KSwKKyAgICAgICAgbHotPmRhdGEsIGx6LT5zZWxlY3RvcnMpOworICAgIH0KKworc3RhdGljIFB5TWV0aG9kRGVmIGNvbXByZXNzX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbiljb21wcmVzc19yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGNvbXByZXNzX2RvYywKICJjb21wcmVzcyhkYXRhLCBzZWxlY3RvcnMpIC0tPiBpdGVyYXRvciBvdmVyIHNlbGVjdGVkIGRhdGFcblwKIFxuXApAQCAtMjg4MCw3ICszNjEzLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWNvbXByZXNzX25leHQsICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGNvbXByZXNzX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0yOTg5LDYgKzM3MjIsMTkgQEAKICAgICB9CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitmaWx0ZXJmYWxzZV9yZWR1Y2UoZmlsdGVyZmFsc2VvYmplY3QgKmx6KQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUobHopLAorICAgICAgICBsei0+ZnVuYywgbHotPml0KTsKKyAgICB9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBmaWx0ZXJmYWxzZV9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pZmlsdGVyZmFsc2VfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihmaWx0ZXJmYWxzZV9kb2MsCiAiZmlsdGVyZmFsc2UoZnVuY3Rpb24gb3IgTm9uZSwgc2VxdWVuY2UpIC0tPiBmaWx0ZXJmYWxzZSBvYmplY3RcblwKIFxuXApAQCAtMzAyNSw3ICszNzcxLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWZpbHRlcmZhbHNlX25leHQsICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBmaWx0ZXJmYWxzZV9tZXRob2RzLCAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTMyMTksMTEgKzM5NjUsOSBAQAogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKG4pIiwgUHlfVFlQRShseiksIGx6LT5jbnQpOwogfQogCi1QeURvY19TVFJWQVIoY291bnRfcmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7Ci0KIHN0YXRpYyBQeU1ldGhvZERlZiBjb3VudF9tZXRob2RzW10gPSB7CiAgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pY291bnRfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAotICAgICBjb3VudF9yZWR1Y2VfZG9jfSwKKyAgICAgcmVkdWNlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0zMzY0LDggKzQxMDgsMjEgQEAKIAogUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywgIlByaXZhdGUgbWV0aG9kIHJldHVybmluZyBhbiBlc3RpbWF0ZSBvZiBsZW4obGlzdChpdCkpLiIpOwogCitzdGF0aWMgUHlPYmplY3QgKgorcmVwZWF0X3JlZHVjZShyZXBlYXRvYmplY3QgKnJvKQoreworICAgIC8qIHVucGlja2xlIHRoaXMgc28gdGhhdCBhIG5ldyByZXBlYXQgaXRlcmF0b3IgaXMgY29uc3RydWN0ZWQgd2l0aCBhbgorICAgICAqIG9iamVjdCwgdGhlbiBjYWxsIF9fc2V0c3RhdGVfXyBvbiBpdCB0byBzZXQgY250CisgICAgICovCisgICAgaWYgKHJvLT5jbnQgPj0gMCkKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT24pIiwgUHlfVFlQRShybyksIHJvLT5lbGVtZW50LCByby0+Y250KTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE8pIiwgUHlfVFlQRShybyksIHJvLT5lbGVtZW50KTsKK30KKwogc3RhdGljIFB5TWV0aG9kRGVmIHJlcGVhdF9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pcmVwZWF0X2xlbiwgTUVUSF9OT0FSR1MsIGxlbmd0aF9oaW50X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pcmVwZWF0X3JlZHVjZSwgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0zNTkxLDYgKzQzNDgsNDkgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QgKgoremlwX2xvbmdlc3RfcmVkdWNlKHppcGxvbmdlc3RvYmplY3QgKmx6KQoreworCisgICAgLyogQ3JlYXRlIGEgbmV3IHR1cGxlIHdpdGggZW1wdHkgc2VxdWVuY2VzIHdoZXJlIGFwcHJvcHJpYXRlIHRvIHBpY2tsZS4KKyAgICAgKiBUaGVuIHVzZSBzZXRzdGF0ZSB0byBzZXQgdGhlIGZpbGx2YWx1ZQorICAgICAqLworICAgIGludCBpOworICAgIFB5T2JqZWN0ICphcmdzID0gUHlUdXBsZV9OZXcoUHlUdXBsZV9HRVRfU0laRShsei0+aXR0dXBsZSkpOworICAgIGlmIChhcmdzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGZvciAoaT0wOyBpPFB5VHVwbGVfR0VUX1NJWkUobHotPml0dHVwbGUpOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKmVsZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGx6LT5pdHR1cGxlLCBpKTsKKyAgICAgICAgaWYgKGVsZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgZWxlbSA9IFB5VHVwbGVfTmV3KDApOworICAgICAgICAgICAgaWYgKGVsZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBQeV9JTkNSRUYoZWxlbSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgaSwgZWxlbSk7CisgICAgfQorICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPTk8iLCBQeV9UWVBFKGx6KSwgYXJncywgbHotPmZpbGx2YWx1ZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit6aXBfbG9uZ2VzdF9zZXRzdGF0ZSh6aXBsb25nZXN0b2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X0NMRUFSKGx6LT5maWxsdmFsdWUpOworICAgIGx6LT5maWxsdmFsdWUgPSBzdGF0ZTsKKyAgICBQeV9JTkNSRUYobHotPmZpbGx2YWx1ZSk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiB6aXBfbG9uZ2VzdF9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pemlwX2xvbmdlc3RfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbil6aXBfbG9uZ2VzdF9zZXRzdGF0ZSwgICAgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKHppcF9sb25nZXN0X2RvYywKICJ6aXBfbG9uZ2VzdChpdGVyMSBbLGl0ZXIyIFsuLi5dXSwgW2ZpbGx2YWx1ZT1Ob25lXSkgLS0+IHppcF9sb25nZXN0IG9iamVjdFxuXAogXG5cCkBAIC0zNjMyLDcgKzQ0MzIsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpemlwX2xvbmdlc3RfbmV4dCwgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIHppcF9sb25nZXN0X21ldGhvZHMsICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMzY1Nyw3ICs0NDU3LDcgQEAKIHJlcGVhdChlbGVtIFssbl0pIC0tPiBlbGVtLCBlbGVtLCBlbGVtLCAuLi4gZW5kbGVzc2x5IG9yIHVwIHRvIG4gdGltZXNcblwKIFxuXAogSXRlcmF0b3JzIHRlcm1pbmF0aW5nIG9uIHRoZSBzaG9ydGVzdCBpbnB1dCBzZXF1ZW5jZTpcblwKLWFjY3VtdWxhdGUocCwgc3RhcnQ9MCkgLS0+IHAwLCBwMCtwMSwgcDArcDErcDJcblwKK2FjY3VtdWxhdGUocFssIGZ1bmNdKSAtLT4gcDAsIHAwK3AxLCBwMCtwMStwMlxuXAogY2hhaW4ocCwgcSwgLi4uKSAtLT4gcDAsIHAxLCAuLi4gcGxhc3QsIHEwLCBxMSwgLi4uIFxuXAogY29tcHJlc3MoZGF0YSwgc2VsZWN0b3JzKSAtLT4gKGRbMF0gaWYgc1swXSksIChkWzFdIGlmIHNbMV0pLCAuLi5cblwKIGRyb3B3aGlsZShwcmVkLCBzZXEpIC0tPiBzZXFbbl0sIHNlcVtuKzFdLCBzdGFydGluZyB3aGVuIHByZWQgZmFpbHNcblwKQEAgLTM3MjAsNiArNDUyMCw5IEBACiAgICAgICAgICZwcm9kdWN0X3R5cGUsCiAgICAgICAgICZyZXBlYXRfdHlwZSwKICAgICAgICAgJmdyb3VwYnlfdHlwZSwKKyAgICAgICAgJl9ncm91cGVyX3R5cGUsCisgICAgICAgICZ0ZWVfdHlwZSwKKyAgICAgICAgJnRlZWRhdGFvYmplY3RfdHlwZSwKICAgICAgICAgTlVMTAogICAgIH07CiAKQEAgLTM3MzcsMTEgKzQ1NDAsNSBAQAogICAgICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgbmFtZSsxLCAoUHlPYmplY3QgKil0eXBlbGlzdFtpXSk7CiAgICAgfQogCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmdGVlZGF0YW9iamVjdF90eXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVR5cGVfUmVhZHkoJnRlZV90eXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVR5cGVfUmVhZHkoJl9ncm91cGVyX3R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIG07CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL21haW4uYyBiL01vZHVsZXMvbWFpbi5jCmluZGV4IDE3YWViYWUuLjRkMmUwM2EgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbWFpbi5jCisrKyBiL01vZHVsZXMvbWFpbi5jCkBAIC02LDYgKzYsNyBAQAogI2luY2x1ZGUgPGxvY2FsZS5oPgogCiAjaWZkZWYgX19WTVMKKyNlcnJvciAiUEVQIDExOiBWTVMgaXMgbm93IHVuc3VwcG9ydGVkLCBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy40IgogI2luY2x1ZGUgPHVuaXhsaWIuaD4KICNlbmRpZgogCkBAIC03Miw5ICs3Myw2IEBACiAtTyAgICAgOiBvcHRpbWl6ZSBnZW5lcmF0ZWQgYnl0ZWNvZGUgc2xpZ2h0bHk7IGFsc28gUFlUSE9OT1BUSU1JWkU9eFxuXAogLU9PICAgIDogcmVtb3ZlIGRvYy1zdHJpbmdzIGluIGFkZGl0aW9uIHRvIHRoZSAtTyBvcHRpbWl6YXRpb25zXG5cCiAtcSAgICAgOiBkb24ndCBwcmludCB2ZXJzaW9uIGFuZCBjb3B5cmlnaHQgbWVzc2FnZXMgb24gaW50ZXJhY3RpdmUgc3RhcnR1cFxuXAotLVIgICAgIDogdXNlIGEgcHNldWRvLXJhbmRvbSBzYWx0IHRvIG1ha2UgaGFzaCgpIHZhbHVlcyBvZiB2YXJpb3VzIHR5cGVzIGJlXG5cCi0gICAgICAgICB1bnByZWRpY3RhYmxlIGJldHdlZW4gc2VwYXJhdGUgaW52b2NhdGlvbnMgb2YgdGhlIGludGVycHJldGVyLCBhc1xuXAotICAgICAgICAgYSBkZWZlbmNlIGFnYWluc3QgZGVuaWFsLW9mLXNlcnZpY2UgYXR0YWNrc1xuXAogLXMgICAgIDogZG9uJ3QgYWRkIHVzZXIgc2l0ZSBkaXJlY3RvcnkgdG8gc3lzLnBhdGg7IGFsc28gUFlUSE9OTk9VU0VSU0lURVxuXAogLVMgICAgIDogZG9uJ3QgaW1wbHkgJ2ltcG9ydCBzaXRlJyBvbiBpbml0aWFsaXphdGlvblxuXAogIjsKQEAgLTEwMiwxMyArMTAwLDE0IEBACiAiUFlUSE9OSE9NRSAgIDogYWx0ZXJuYXRlIDxwcmVmaXg+IGRpcmVjdG9yeSAob3IgPHByZWZpeD4lYzxleGVjX3ByZWZpeD4pLlxuIgogIiAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IG1vZHVsZSBzZWFyY2ggcGF0aCB1c2VzICVzLlxuIgogIlBZVEhPTkNBU0VPSyA6IGlnbm9yZSBjYXNlIGluICdpbXBvcnQnIHN0YXRlbWVudHMgKFdpbmRvd3MpLlxuIgotIlBZVEhPTklPRU5DT0RJTkc6IEVuY29kaW5nWzplcnJvcnNdIHVzZWQgZm9yIHN0ZGluL3N0ZG91dC9zdGRlcnIuXG5cCisiUFlUSE9OSU9FTkNPRElORzogRW5jb2RpbmdbOmVycm9yc10gdXNlZCBmb3Igc3RkaW4vc3Rkb3V0L3N0ZGVyci5cbiIKKyJQWVRIT05GQVVMVEhBTkRMRVI6IGR1bXAgdGhlIFB5dGhvbiB0cmFjZWJhY2sgb24gZmF0YWwgZXJyb3JzLlxuXAogIjsKIHN0YXRpYyBjaGFyICp1c2FnZV82ID0gIlwKLVBZVEhPTkhBU0hTRUVEOiBpZiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byAncmFuZG9tJywgdGhlIGVmZmVjdCBpcyB0aGUgc2FtZVxuXAotICAgYXMgc3BlY2lmeWluZyB0aGUgLVIgb3B0aW9uOiBhIHJhbmRvbSB2YWx1ZSBpcyB1c2VkIHRvIHNlZWQgdGhlIGhhc2hlcyBvZlxuXAotICAgc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWUgb2JqZWN0cy4gIEl0IGNhbiBhbHNvIGJlIHNldCB0byBhbiBpbnRlZ2VyXG5cCi0gICBpbiB0aGUgcmFuZ2UgWzAsNDI5NDk2NzI5NV0gdG8gZ2V0IGhhc2ggdmFsdWVzIHdpdGggYSBwcmVkaWN0YWJsZSBzZWVkLlxuXAorUFlUSE9OSEFTSFNFRUQ6IGlmIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvICdyYW5kb20nLCBhIHJhbmRvbSB2YWx1ZSBpcyB1c2VkXG5cCisgICB0byBzZWVkIHRoZSBoYXNoZXMgb2Ygc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWUgb2JqZWN0cy4gIEl0IGNhbiBhbHNvIGJlXG5cCisgICBzZXQgdG8gYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgWzAsNDI5NDk2NzI5NV0gdG8gZ2V0IGhhc2ggdmFsdWVzIHdpdGggYVxuXAorICAgcHJlZGljdGFibGUgc2VlZC5cblwKICI7CiAKIHN0YXRpYyBpbnQKQEAgLTIyNSw3ICsyMjQsNyBAQAogICAgIGlmIChpbXBvcnRlciA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgaWYgKGltcG9ydGVyLT5vYl90eXBlID09ICZQeU51bGxJbXBvcnRlcl9UeXBlKSB7CisgICAgaWYgKGltcG9ydGVyID09IFB5X05vbmUpIHsKICAgICAgICAgUHlfREVDUkVGKGFyZ3YwKTsKICAgICAgICAgUHlfREVDUkVGKGltcG9ydGVyKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMzQ2LDIxICszNDUsMTMgQEAKICAgICAgICAgICAgICAgIG5vdCBpbnRlcnByZXRlciBvcHRpb25zLiAqLwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgc3dpdGNoIChjKSB7Ci0gICAgICAgIGNhc2UgJ0UnOgorICAgICAgICBpZiAoYyA9PSAnRScpIHsKICAgICAgICAgICAgIFB5X0lnbm9yZUVudmlyb25tZW50RmxhZysrOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1InOgotICAgICAgICAgICAgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnKys7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICAvKiBUaGUgdmFyaWFibGUgaXMgb25seSB0ZXN0ZWQgZm9yIGV4aXN0ZW5jZSBoZXJlOyBfUHlSYW5kb21fSW5pdCB3aWxsCi0gICAgICAgY2hlY2sgaXRzIHZhbHVlIGZ1cnRoZXIuICovCi0gICAgaWYgKCFQeV9IYXNoUmFuZG9taXphdGlvbkZsYWcgJiYKLSAgICAgICAgKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkhBU0hTRUVEIikpICYmICpwICE9ICdcMCcpCi0gICAgICAgIFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IDE7CiAKKyAgICBQeV9IYXNoUmFuZG9taXphdGlvbkZsYWcgPSAxOwogICAgIF9QeVJhbmRvbV9Jbml0KCk7CiAKICAgICBQeVN5c19SZXNldFdhcm5PcHRpb25zKCk7CkBAIC00NjcsNyArNDU4LDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ1InOgotICAgICAgICAgICAgLyogQWxyZWFkeSBoYW5kbGVkIGFib3ZlICovCisgICAgICAgICAgICAvKiBJZ25vcmVkICovCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAvKiBUaGlzIHNwYWNlIHJlc2VydmVkIGZvciBvdGhlciBvcHRpb25zICovCkBAIC01MzQsMTYgKzUyNSwxMyBAQAogICAgICAgICAgICAgLyogVXNlIHV0Zi04IG9uIE1hYyBPUyBYICovCiAgICAgICAgICAgICB1bmljb2RlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcocCk7CiAjZWxzZQotICAgICAgICAgICAgd2NoYXJfdCAqd2NoYXI7Ci0gICAgICAgICAgICBzaXplX3QgbGVuOwotICAgICAgICAgICAgd2NoYXIgPSBfUHlfY2hhcjJ3Y2hhcihwLCAmbGVuKTsKLSAgICAgICAgICAgIGlmICh3Y2hhciA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod2NoYXIsIGxlbik7Ci0gICAgICAgICAgICBQeU1lbV9GcmVlKHdjaGFyKTsKKyAgICAgICAgICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHAsICJzdXJyb2dhdGVlc2NhcGUiKTsKICNlbmRpZgotICAgICAgICAgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgICAgIGlmICh1bmljb2RlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAvKiBpZ25vcmUgZXJyb3JzICovCisgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlKHVuaWNvZGUpOwogICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwogICAgICAgICB9CkBAIC02MTgsNyArNjA2LDYgQEAKICAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkVYRUNVVEFCTEUiKSkgJiYgKnAgIT0gJ1wwJykgewogICAgICAgICB3Y2hhcl90KiBidWZmZXI7CiAgICAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4ocCkgKyAxOwotICAgICAgICBzaXplX3QgcjsKIAogICAgICAgICBidWZmZXIgPSBtYWxsb2MobGVuICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICAgICAgaWYgKGJ1ZmZlciA9PSBOVUxMKSB7CkBAIC02MjYsMTEgKzYxMywzMyBAQAogICAgICAgICAgICAgICAgIm5vdCBlbm91Z2ggbWVtb3J5IHRvIGNvcHkgUFlUSE9ORVhFQ1VUQUJMRSIpOwogICAgICAgICB9CiAKLSAgICAgICAgciA9IG1ic3Rvd2NzKGJ1ZmZlciwgcCwgbGVuKTsKKyAgICAgICAgbWJzdG93Y3MoYnVmZmVyLCBwLCBsZW4pOwogICAgICAgICBQeV9TZXRQcm9ncmFtTmFtZShidWZmZXIpOwogICAgICAgICAvKiBidWZmZXIgaXMgbm93IGhhbmRlZCBvZmYgLSBkbyBub3QgZnJlZSAqLwogICAgIH0gZWxzZSB7CisjaWZkZWYgV0lUSF9ORVhUX0ZSQU1FV09SSworICAgICAgICBjaGFyKiBweXZlbnZfbGF1bmNoZXIgPSBnZXRlbnYoIl9fUFlWRU5WX0xBVU5DSEVSX18iKTsKKworICAgICAgICBpZiAocHl2ZW52X2xhdW5jaGVyICYmICpweXZlbnZfbGF1bmNoZXIpIHsKKyAgICAgICAgICAgIC8qIFVzZWQgYnkgTWFjL1Rvb2xzL3B5dGhvbncuYyB0byBmb3J3YXJkCisgICAgICAgICAgICAgKiB0aGUgYXJndjAgb2YgdGhlIHN0dWIgZXhlY3V0YWJsZQorICAgICAgICAgICAgICovCisgICAgICAgICAgICB3Y2hhcl90KiB3YnVmID0gX1B5X2NoYXIyd2NoYXIocHl2ZW52X2xhdW5jaGVyLCBOVUxMKTsKKworICAgICAgICAgICAgaWYgKHdidWYgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbm5vdCBkZWNvZGUgX19QWVZFTlZfTEFVTkNIRVJfXyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfU2V0UHJvZ3JhbU5hbWUod2J1Zik7CisKKyAgICAgICAgICAgIC8qIERvbid0IGZyZWUgd2J1ZiwgdGhlIGFyZ3VtZW50IHRvIFB5X1NldFByb2dyYW1OYW1lCisgICAgICAgICAgICAgKiBtdXN0IHJlbWFpbiB2YWxpZCB1bnRpbCB0aGUgUHlfRmluYWxpemUgaXMgY2FsbGVkLgorICAgICAgICAgICAgICovCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeV9TZXRQcm9ncmFtTmFtZShhcmd2WzBdKTsKKyAgICAgICAgfQorI2Vsc2UKICAgICAgICAgUHlfU2V0UHJvZ3JhbU5hbWUoYXJndlswXSk7CisjZW5kaWYKICAgICB9CiAjZWxzZQogICAgIFB5X1NldFByb2dyYW1OYW1lKGFyZ3ZbMF0pOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tYXRobW9kdWxlLmMgYi9Nb2R1bGVzL21hdGhtb2R1bGUuYwppbmRleCAxNDJlY2E0Li4zZmE1MmQwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL21hdGhtb2R1bGUuYworKysgYi9Nb2R1bGVzL21hdGhtb2R1bGUuYwpAQCAtNTUsMTEgKzU1LDYgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJfbWF0aC5oIgogCi0jaWZkZWYgX09TRl9TT1VSQ0UKLS8qIE9TRjEgNS4xIGRvZXNuJ3QgbWFrZSB0aGlzIGF2YWlsYWJsZSB3aXRoIFhPUEVOX1NPVVJDRV9FWFRFTkRFRCBkZWZpbmVkICovCi1leHRlcm4gZG91YmxlIGNvcHlzaWduKGRvdWJsZSwgZG91YmxlKTsKLSNlbmRpZgotCiAvKgogICAgc2luKHBpKngpLCBnaXZpbmcgYWNjdXJhdGUgcmVzdWx0cyBmb3IgYWxsIGZpbml0ZSB4IChlc3BlY2lhbGx5IHgKICAgIGludGVncmFsIG9yIGNsb3NlIHRvIGFuIGludGVnZXIpLiAgVGhpcyBpcyBoZXJlIGZvciB1c2UgaW4gdGhlCkBAIC0yNDQsNyArMjM5LDggQEAKICAgICB9CiAgICAgaWYgKHggPT0gMC4wKSB7CiAgICAgICAgIGVycm5vID0gRURPTTsKLSAgICAgICAgcmV0dXJuIDEuMC94OyAvKiB0Z2FtbWEoKy0wLjApID0gKy1pbmYsIGRpdmlkZS1ieS16ZXJvICovCisgICAgICAgIC8qIHRnYW1tYSgrLTAuMCkgPSArLWluZiwgZGl2aWRlLWJ5LXplcm8gKi8KKyAgICAgICAgcmV0dXJuIGNvcHlzaWduKFB5X0hVR0VfVkFMLCB4KTsKICAgICB9CiAKICAgICAvKiBpbnRlZ2VyIGFyZ3VtZW50cyAqLwpAQCAtNTgyLDYgKzU3OCw2MSBAQAogICAgIH0KIH0KIAorLyoKKyAgIGxvZzI6IGxvZyB0byBiYXNlIDIuCisKKyAgIFVzZXMgYW4gYWxnb3JpdGhtIHRoYXQgc2hvdWxkOgorCisgICAgIChhKSBwcm9kdWNlIGV4YWN0IHJlc3VsdHMgZm9yIHBvd2VycyBvZiAyLCBhbmQKKyAgICAgKGIpIGdpdmUgYSBtb25vdG9uaWMgbG9nMiAoZm9yIHBvc2l0aXZlIGZpbml0ZSBmbG9hdHMpLAorICAgICAgICAgYXNzdW1pbmcgdGhhdCB0aGUgc3lzdGVtIGxvZyBpcyBtb25vdG9uaWMuCisqLworCitzdGF0aWMgZG91YmxlCittX2xvZzIoZG91YmxlIHgpCit7CisgICAgaWYgKCFQeV9JU19GSU5JVEUoeCkpIHsKKyAgICAgICAgaWYgKFB5X0lTX05BTih4KSkKKyAgICAgICAgICAgIHJldHVybiB4OyAvKiBsb2cyKG5hbikgPSBuYW4gKi8KKyAgICAgICAgZWxzZSBpZiAoeCA+IDAuMCkKKyAgICAgICAgICAgIHJldHVybiB4OyAvKiBsb2cyKCtpbmYpID0gK2luZiAqLworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGVycm5vID0gRURPTTsKKyAgICAgICAgICAgIHJldHVybiBQeV9OQU47IC8qIGxvZzIoLWluZikgPSBuYW4sIGludmFsaWQtb3BlcmF0aW9uICovCisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoeCA+IDAuMCkgeworI2lmZGVmIEhBVkVfTE9HMgorICAgICAgICByZXR1cm4gbG9nMih4KTsKKyNlbHNlCisgICAgICAgIGRvdWJsZSBtOworICAgICAgICBpbnQgZTsKKyAgICAgICAgbSA9IGZyZXhwKHgsICZlKTsKKyAgICAgICAgLyogV2Ugd2FudCBsb2cyKG0gKiAyKiplKSA9PSBsb2cobSkgLyBsb2coMikgKyBlLiAgQ2FyZSBpcyBuZWVkZWQgd2hlbgorICAgICAgICAgKiB4IGlzIGp1c3QgZ3JlYXRlciB0aGFuIDEuMDogaW4gdGhhdCBjYXNlIGUgaXMgMSwgbG9nKG0pIGlzIG5lZ2F0aXZlLAorICAgICAgICAgKiBhbmQgd2UgZ2V0IHNpZ25pZmljYW50IGNhbmNlbGxhdGlvbiBlcnJvciBmcm9tIHRoZSBhZGRpdGlvbiBvZgorICAgICAgICAgKiBsb2cobSkgLyBsb2coMikgdG8gZS4gIFRoZSBzbGlnaHQgcmV3cml0ZSBvZiB0aGUgZXhwcmVzc2lvbiBiZWxvdworICAgICAgICAgKiBhdm9pZHMgdGhpcyBwcm9ibGVtLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKHggPj0gMS4wKSB7CisgICAgICAgICAgICByZXR1cm4gbG9nKDIuMCAqIG0pIC8gbG9nKDIuMCkgKyAoZSAtIDEpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGxvZyhtKSAvIGxvZygyLjApICsgZTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorICAgIGVsc2UgaWYgKHggPT0gMC4wKSB7CisgICAgICAgIGVycm5vID0gRURPTTsKKyAgICAgICAgcmV0dXJuIC1QeV9IVUdFX1ZBTDsgLyogbG9nMigwKSA9IC1pbmYsIGRpdmlkZS1ieS16ZXJvICovCisgICAgfQorICAgIGVsc2UgeworICAgICAgICBlcnJubyA9IEVET007CisgICAgICAgIHJldHVybiBQeV9OQU47IC8qIGxvZzIoLWluZikgPSBuYW4sIGludmFsaWQtb3BlcmF0aW9uICovCisgICAgfQorfQorCiBzdGF0aWMgZG91YmxlCiBtX2xvZzEwKGRvdWJsZSB4KQogewpAQCAtODM2LDEwICs4ODcsMTAgQEAKICAgICAgICJhdGFuaCh4KVxuXG5SZXR1cm4gdGhlIGh5cGVyYm9saWMgYXJjIHRhbmdlbnQgKG1lYXN1cmVkIGluIHJhZGlhbnMpIG9mIHguIikKIAogc3RhdGljIFB5T2JqZWN0ICogbWF0aF9jZWlsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbnVtYmVyKSB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpjZWlsX3N0ciA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX19jZWlsX18pOwogICAgIFB5T2JqZWN0ICptZXRob2QsICpyZXN1bHQ7CiAKLSAgICBtZXRob2QgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChudW1iZXIsICJfX2NlaWxfXyIsICZjZWlsX3N0cik7CisgICAgbWV0aG9kID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobnVtYmVyLCAmUHlJZF9fX2NlaWxfXyk7CiAgICAgaWYgKG1ldGhvZCA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC04NzQsMTAgKzkyNSwxMCBAQAogICAgICAgImZhYnMoeClcblxuUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgZmxvYXQgeC4iKQogCiBzdGF0aWMgUHlPYmplY3QgKiBtYXRoX2Zsb29yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbnVtYmVyKSB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpmbG9vcl9zdHIgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fZmxvb3JfXyk7CiAgICAgUHlPYmplY3QgKm1ldGhvZCwgKnJlc3VsdDsKIAotICAgIG1ldGhvZCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG51bWJlciwgIl9fZmxvb3JfXyIsICZmbG9vcl9zdHIpOworICAgIG1ldGhvZCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG51bWJlciwgJlB5SWRfX19mbG9vcl9fKTsKICAgICBpZiAobWV0aG9kID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzODMsNyArMTQzNCw3IEBACiAgICAgfQogCiAgICAgLyogdXNlIGxvb2t1cCB0YWJsZSBpZiB4IGlzIHNtYWxsICovCi0gICAgaWYgKHggPCAobG9uZykoc2l6ZW9mKFNtYWxsRmFjdG9yaWFscykvc2l6ZW9mKFNtYWxsRmFjdG9yaWFsc1swXSkpKQorICAgIGlmICh4IDwgKGxvbmcpUHlfQVJSQVlfTEVOR1RIKFNtYWxsRmFjdG9yaWFscykpCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhTbWFsbEZhY3RvcmlhbHNbeF0pOwogCiAgICAgLyogZWxzZSBleHByZXNzIGluIHRoZSBmb3JtIG9kZF9wYXJ0ICogMioqdHdvX3ZhbHVhdGlvbiwgYW5kIGNvbXB1dGUgYXMKQEAgLTE0MTAsNyArMTQ2MSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbWF0aF90cnVuYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm51bWJlcikKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKnRydW5jX3N0ciA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX190cnVuY19fKTsKICAgICBQeU9iamVjdCAqdHJ1bmMsICpyZXN1bHQ7CiAKICAgICBpZiAoUHlfVFlQRShudW1iZXIpLT50cF9kaWN0ID09IE5VTEwpIHsKQEAgLTE0MTgsNyArMTQ2OSw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICB0cnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG51bWJlciwgIl9fdHJ1bmNfXyIsICZ0cnVuY19zdHIpOworICAgIHRydW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobnVtYmVyLCAmUHlJZF9fX3RydW5jX18pOwogICAgIGlmICh0cnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCkBAIC0xNjI3LDYgKzE2NzgsMTUgQEAKIElmIHRoZSBiYXNlIG5vdCBzcGVjaWZpZWQsIHJldHVybnMgdGhlIG5hdHVyYWwgbG9nYXJpdGhtIChiYXNlIGUpIG9mIHguIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCittYXRoX2xvZzIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgcmV0dXJuIGxvZ2hlbHBlcihhcmcsIG1fbG9nMiwgImxvZzIiKTsKK30KKworUHlEb2NfU1RSVkFSKG1hdGhfbG9nMl9kb2MsCisibG9nMih4KVxuXG5SZXR1cm4gdGhlIGJhc2UgMiBsb2dhcml0aG0gb2YgeC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKIG1hdGhfbG9nMTAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgcmV0dXJuIGxvZ2hlbHBlcihhcmcsIG1fbG9nMTAsICJsb2cxMCIpOwpAQCAtMTg5OCw2ICsxOTU4LDcgQEAKICAgICB7ImxvZyIsICAgICAgICAgICAgIG1hdGhfbG9nLCAgICAgICBNRVRIX1ZBUkFSR1MsICAgbWF0aF9sb2dfZG9jfSwKICAgICB7ImxvZzFwIiwgICAgICAgICAgIG1hdGhfbG9nMXAsICAgICBNRVRIX08sICAgICAgICAgbWF0aF9sb2cxcF9kb2N9LAogICAgIHsibG9nMTAiLCAgICAgICAgICAgbWF0aF9sb2cxMCwgICAgIE1FVEhfTywgICAgICAgICBtYXRoX2xvZzEwX2RvY30sCisgICAgeyJsb2cyIiwgICAgICAgICAgICBtYXRoX2xvZzIsICAgICAgTUVUSF9PLCAgICAgICAgIG1hdGhfbG9nMl9kb2N9LAogICAgIHsibW9kZiIsICAgICAgICAgICAgbWF0aF9tb2RmLCAgICAgIE1FVEhfTywgICAgICAgICBtYXRoX21vZGZfZG9jfSwKICAgICB7InBvdyIsICAgICAgICAgICAgIG1hdGhfcG93LCAgICAgICBNRVRIX1ZBUkFSR1MsICAgbWF0aF9wb3dfZG9jfSwKICAgICB7InJhZGlhbnMiLCAgICAgICAgIG1hdGhfcmFkaWFucywgICBNRVRIX08sICAgICAgICAgbWF0aF9yYWRpYW5zX2RvY30sCmRpZmYgLS1naXQgYS9Nb2R1bGVzL21kNW1vZHVsZS5jIGIvTW9kdWxlcy9tZDVtb2R1bGUuYwppbmRleCAyMDg5MzBkLi4xMmUxODdjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL21kNW1vZHVsZS5jCisrKyBiL01vZHVsZXMvbWQ1bW9kdWxlLmMKQEAgLTIxMCw3ICsyMTAsOCBAQAogICAgSW5pdGlhbGl6ZSB0aGUgaGFzaCBzdGF0ZQogICAgQHBhcmFtIHNoYTEgICBUaGUgaGFzaCBzdGF0ZSB5b3Ugd2lzaCB0byBpbml0aWFsaXplCiAqLwotdm9pZCBtZDVfaW5pdChzdHJ1Y3QgbWQ1X3N0YXRlICptZDUpCitzdGF0aWMgdm9pZAorbWQ1X2luaXQoc3RydWN0IG1kNV9zdGF0ZSAqbWQ1KQogewogICAgIGFzc2VydChtZDUgIT0gTlVMTCk7CiAgICAgbWQ1LT5zdGF0ZVswXSA9IDB4Njc0NTIzMDFVTDsKQEAgLTIyNyw4ICsyMjgsOCBAQAogICAgQHBhcmFtIGluICAgICBUaGUgZGF0YSB0byBoYXNoCiAgICBAcGFyYW0gaW5sZW4gIFRoZSBsZW5ndGggb2YgdGhlIGRhdGEgKG9jdGV0cykKICovCi12b2lkIG1kNV9wcm9jZXNzKHN0cnVjdCBtZDVfc3RhdGUgKm1kNSwKLSAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgUHlfc3NpemVfdCBpbmxlbikKK3N0YXRpYyB2b2lkCittZDVfcHJvY2VzcyhzdHJ1Y3QgbWQ1X3N0YXRlICptZDUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCBQeV9zc2l6ZV90IGlubGVuKQogewogICAgIFB5X3NzaXplX3QgbjsKIApAQCAtMjQzLDcgKzI0NCw3IEBACiAgICAgICAgICAgIGluICAgICAgICAgICAgICs9IE1ENV9CTE9DS1NJWkU7CiAgICAgICAgICAgIGlubGVuICAgICAgICAgIC09IE1ENV9CTE9DS1NJWkU7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgIG4gPSBNSU4oaW5sZW4sIChNRDVfQkxPQ0tTSVpFIC0gbWQ1LT5jdXJsZW4pKTsKKyAgICAgICAgICAgbiA9IE1JTihpbmxlbiwgKFB5X3NzaXplX3QpKE1ENV9CTE9DS1NJWkUgLSBtZDUtPmN1cmxlbikpOwogICAgICAgICAgICBtZW1jcHkobWQ1LT5idWYgKyBtZDUtPmN1cmxlbiwgaW4sIChzaXplX3Qpbik7CiAgICAgICAgICAgIG1kNS0+Y3VybGVuICAgICs9IG47CiAgICAgICAgICAgIGluICAgICAgICAgICAgICs9IG47CkBAIC0yNjIsNyArMjYzLDggQEAKICAgIEBwYXJhbSBzaGExICBUaGUgaGFzaCBzdGF0ZQogICAgQHBhcmFtIG91dCBbb3V0XSBUaGUgZGVzdGluYXRpb24gb2YgdGhlIGhhc2ggKDE2IGJ5dGVzKQogKi8KLXZvaWQgbWQ1X2RvbmUoc3RydWN0IG1kNV9zdGF0ZSAqbWQ1LCB1bnNpZ25lZCBjaGFyICpvdXQpCitzdGF0aWMgdm9pZAorbWQ1X2RvbmUoc3RydWN0IG1kNV9zdGF0ZSAqbWQ1LCB1bnNpZ25lZCBjaGFyICpvdXQpCiB7CiAgICAgaW50IGk7CiAKQEAgLTM3Niw3ICszNzgsNyBAQAogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W01ENV9ESUdFU1RTSVpFXTsKICAgICBzdHJ1Y3QgbWQ1X3N0YXRlIHRlbXA7CiAgICAgUHlPYmplY3QgKnJldHZhbDsKLSAgICBQeV9VTklDT0RFICpoZXhfZGlnZXN0OworICAgIFB5X1VDUzEgKmhleF9kaWdlc3Q7CiAgICAgaW50IGksIGo7CiAKICAgICAvKiBHZXQgdGhlIHJhdyAoYmluYXJ5KSBkaWdlc3QgdmFsdWUgKi8KQEAgLTM4NCwyNSArMzg2LDIyIEBACiAgICAgbWQ1X2RvbmUoJnRlbXAsIGRpZ2VzdCk7CiAKICAgICAvKiBDcmVhdGUgYSBuZXcgc3RyaW5nICovCi0gICAgcmV0dmFsID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIE1ENV9ESUdFU1RTSVpFICogMik7CisgICAgcmV0dmFsID0gUHlVbmljb2RlX05ldyhNRDVfRElHRVNUU0laRSAqIDIsIDEyNyk7CiAgICAgaWYgKCFyZXR2YWwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBoZXhfZGlnZXN0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmV0dmFsKTsKLSAgICBpZiAoIWhleF9kaWdlc3QpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGhleF9kaWdlc3QgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXR2YWwpOwogCiAgICAgLyogTWFrZSBoZXggdmVyc2lvbiBvZiB0aGUgZGlnZXN0ICovCiAgICAgZm9yKGk9aj0wOyBpPE1ENV9ESUdFU1RTSVpFOyBpKyspIHsKLSAgICAgICAgY2hhciBjOworICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldID4+IDQpICYgMHhmOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICB9CisjaWZkZWYgUHlfREVCVUcKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJldHZhbCwgMSkpOworI2VuZGlmCiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tbWFwbW9kdWxlLmMgYi9Nb2R1bGVzL21tYXBtb2R1bGUuYwppbmRleCAzNTJkZDUyLi4xMTA3ZWI4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL21tYXBtb2R1bGUuYworKysgYi9Nb2R1bGVzL21tYXBtb2R1bGUuYwpAQCAtNzgsOCArNzgsNiBAQAogIyAgZGVmaW5lIE1BUF9BTk9OWU1PVVMgTUFQX0FOT04KICNlbmRpZgogCi1zdGF0aWMgUHlPYmplY3QgKm1tYXBfbW9kdWxlX2Vycm9yOwotCiB0eXBlZGVmIGVudW0KIHsKICAgICBBQ0NFU1NfREVGQVVMVCwKQEAgLTI0MCwxNSArMjM4LDM3IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLyogQmFzaWNhbGx5IHRoZSAibiIgZm9ybWF0IGNvZGUgd2l0aCB0aGUgYWJpbGl0eSB0byB0dXJuIE5vbmUgaW50byAtMS4gKi8KK3N0YXRpYyBpbnQKK21tYXBfY29udmVydF9zc2l6ZV90KFB5T2JqZWN0ICpvYmosIHZvaWQgKnJlc3VsdCkgeworICAgIFB5X3NzaXplX3QgbGltaXQ7CisgICAgaWYgKG9iaiA9PSBQeV9Ob25lKSB7CisgICAgICAgIGxpbWl0ID0gLTE7CisgICAgfQorICAgIGVsc2UgaWYgKFB5TnVtYmVyX0NoZWNrKG9iaikpIHsKKyAgICAgICAgbGltaXQgPSBQeU51bWJlcl9Bc1NzaXplX3Qob2JqLCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKKyAgICAgICAgaWYgKGxpbWl0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiaW50ZWdlciBhcmd1bWVudCBleHBlY3RlZCwgZ290ICclLjIwMHMnIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAqKChQeV9zc2l6ZV90ICopcmVzdWx0KSA9IGxpbWl0OworICAgIHJldHVybiAxOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogbW1hcF9yZWFkX21ldGhvZChtbWFwX29iamVjdCAqc2VsZiwKICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCBudW1fYnl0ZXMsIG47CisgICAgUHlfc3NpemVfdCBudW1fYnl0ZXMgPSAtMSwgbjsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCiAgICAgQ0hFQ0tfVkFMSUQoTlVMTCk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuOnJlYWQiLCAmbnVtX2J5dGVzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkIiwgbW1hcF9jb252ZXJ0X3NzaXplX3QsICZudW1fYnl0ZXMpKQogICAgICAgICByZXR1cm4oTlVMTCk7CiAKICAgICAvKiBzaWxlbnRseSAnYWRqdXN0JyBvdXQtb2YtcmFuZ2UgcmVxdWVzdHMgKi8KQEAgLTQzNyw3ICs0NTcsNyBAQAogICAgIHsKICAgICAgICAgc3RydWN0IHN0YXQgYnVmOwogICAgICAgICBpZiAoLTEgPT0gZnN0YXQoc2VsZi0+ZmQsICZidWYpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8obW1hcF9tb2R1bGVfZXJyb3IpOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICNpZmRlZiBIQVZFX0xBUkdFRklMRV9TVVBQT1JUCkBAIC01MjcsNyArNTQ3LDcgQEAKICAgICAgICAgdm9pZCAqbmV3bWFwOwogCiAgICAgICAgIGlmIChmdHJ1bmNhdGUoc2VsZi0+ZmQsIHNlbGYtPm9mZnNldCArIG5ld19zaXplKSA9PSAtMSkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKG1tYXBfbW9kdWxlX2Vycm9yKTsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKQEAgLTU0Miw3ICs1NjIsNyBAQAogI2VuZGlmCiAgICAgICAgIGlmIChuZXdtYXAgPT0gKHZvaWQgKiktMSkKICAgICAgICAgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKG1tYXBfbW9kdWxlX2Vycm9yKTsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIHNlbGYtPmRhdGEgPSBuZXdtYXA7CkBAIC01ODMsNyArNjAzLDcgQEAKICAgICAvKiBYWFggc2VtYW50aWNzIG9mIHJldHVybiB2YWx1ZT8gKi8KICAgICAvKiBYWFggZmxhZ3MgZm9yIG1zeW5jPyAqLwogICAgIGlmICgtMSA9PSBtc3luYyhzZWxmLT5kYXRhICsgb2Zmc2V0LCBzaXplLCBNU19TWU5DKSkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8obW1hcF9tb2R1bGVfZXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKDApOwpAQCAtNjQ1LDkgKzY2NSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8qIGJvdW5kcyBjaGVjayB0aGUgdmFsdWVzICovCi0gICAgICAgIGlmIChjbnQgPCAwIHx8IChjbnQgKyBkZXN0KSA8IGNudCB8fCAoY250ICsgc3JjKSA8IGNudCB8fAotICAgICAgICAgICBzcmMgPCAwIHx8IHNyYyA+IHNlbGYtPnNpemUgfHwgKHNyYyArIGNudCkgPiBzZWxmLT5zaXplIHx8Ci0gICAgICAgICAgIGRlc3QgPCAwIHx8IGRlc3QgPiBzZWxmLT5zaXplIHx8IChkZXN0ICsgY250KSA+IHNlbGYtPnNpemUpIHsKKyAgICAgICAgaWYgKChjbnQgKyBkZXN0KSA8IGNudCB8fCAoY250ICsgc3JjKSA8IGNudCB8fAorICAgICAgICAgICBzcmMgPiBzZWxmLT5zaXplIHx8IChzcmMgKyBjbnQpID4gc2VsZi0+c2l6ZSB8fAorICAgICAgICAgICBkZXN0ID4gc2VsZi0+c2l6ZSB8fCAoZGVzdCArIGNudCkgPiBzZWxmLT5zaXplKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAic291cmNlLCBkZXN0aW5hdGlvbiwgb3IgY291bnQgb3V0IG9mIHJhbmdlIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTY4MCw3ICs3MDAsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG1tYXBfX2V4aXRfX21ldGhvZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgImNsb3NlIiwgTlVMTCk7CisgICAgX1B5X0lERU5USUZJRVIoY2xvc2UpOworCisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfY2xvc2UsIE5VTEwpOwogfQogCiBzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIG1tYXBfb2JqZWN0X21ldGhvZHNbXSA9IHsKQEAgLTkzNywxMyArOTU5LDEzIEBACiB9CiAKIHN0YXRpYyBQeVNlcXVlbmNlTWV0aG9kcyBtbWFwX2FzX3NlcXVlbmNlID0gewotICAgIChsZW5mdW5jKW1tYXBfbGVuZ3RoLCAgICAgICAgICAgICAgICAgICAgICAvKnNxX2xlbmd0aCovCi0gICAgKGJpbmFyeWZ1bmMpbW1hcF9jb25jYXQsICAgICAgICAgICAgICAgICAgIC8qc3FfY29uY2F0Ki8KLSAgICAoc3NpemVhcmdmdW5jKW1tYXBfcmVwZWF0LCAgICAgICAgICAgICAgICAgLypzcV9yZXBlYXQqLwotICAgIChzc2l6ZWFyZ2Z1bmMpbW1hcF9pdGVtLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qc3FfaXRlbSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypzcV9zbGljZSovCi0gICAgKHNzaXplb2JqYXJncHJvYyltbWFwX2Fzc19pdGVtLCAgICAgICAgICAgIC8qc3FfYXNzX2l0ZW0qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qc3FfYXNzX3NsaWNlKi8KKyAgICAobGVuZnVuYyltbWFwX2xlbmd0aCwgICAgICAgICAgICAvKnNxX2xlbmd0aCovCisgICAgKGJpbmFyeWZ1bmMpbW1hcF9jb25jYXQsICAgICAgICAgLypzcV9jb25jYXQqLworICAgIChzc2l6ZWFyZ2Z1bmMpbW1hcF9yZXBlYXQsICAgICAgIC8qc3FfcmVwZWF0Ki8KKyAgICAoc3NpemVhcmdmdW5jKW1tYXBfaXRlbSwgICAgICAgICAvKnNxX2l0ZW0qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qc3Ffc2xpY2UqLworICAgIChzc2l6ZW9iamFyZ3Byb2MpbW1hcF9hc3NfaXRlbSwgIC8qc3FfYXNzX2l0ZW0qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qc3FfYXNzX3NsaWNlKi8KIH07CiAKIHN0YXRpYyBQeU1hcHBpbmdNZXRob2RzIG1tYXBfYXNfbWFwcGluZyA9IHsKQEAgLTEwMDUsNyArMTAyNyw3IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwogICAgICZtbWFwX2FzX2J1ZmZlciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgICAgICAgIC8qdHBfZmxhZ3MqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgLyp0cF9mbGFncyovCiAgICAgbW1hcF9kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RvYyovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KQEAgLTEwMjEsMTAgKzEwNDMsMTAgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCiAgICAgbmV3X21tYXBfb2JqZWN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KLSAgICBQeU9iamVjdF9EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIFB5T2JqZWN0X0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAogCkBAIC0xMDc1LDggKzEwOTcsOCBAQAogICAgIGludCBkZXZ6ZXJvID0gLTE7CiAgICAgaW50IGFjY2VzcyA9IChpbnQpQUNDRVNTX0RFRkFVTFQ7CiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ImZpbGVubyIsICJsZW5ndGgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbGFncyIsICJwcm90IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIiwgIm9mZnNldCIsIE5VTEx9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbGFncyIsICJwcm90IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIiwgIm9mZnNldCIsIE5VTEx9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkaWN0LCAiaU98aWlpIiBfUHlfUEFSU0VfT0ZGX1QsIGtleXdvcmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmZCwgJm1hcF9zaXplX29iaiwgJmZsYWdzLCAmcHJvdCwKQEAgLTExODQsNyArMTIwNiw3IEBACiAgICAgICAgIGZkID0gZGV2emVybyA9IG9wZW4oIi9kZXYvemVybyIsIE9fUkRXUik7CiAgICAgICAgIGlmIChkZXZ6ZXJvID09IC0xKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobV9vYmopOwotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKG1tYXBfbW9kdWxlX2Vycm9yKTsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAjZW5kaWYKQEAgLTExOTIsNyArMTIxNCw3IEBACiAgICAgICAgIG1fb2JqLT5mZCA9IGR1cChmZCk7CiAgICAgICAgIGlmIChtX29iai0+ZmQgPT0gLTEpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihtX29iaik7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8obW1hcF9tb2R1bGVfZXJyb3IpOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMjA4LDcgKzEyMzAsNyBAQAogICAgIGlmIChtX29iai0+ZGF0YSA9PSAoY2hhciAqKS0xKSB7CiAgICAgICAgIG1fb2JqLT5kYXRhID0gTlVMTDsKICAgICAgICAgUHlfREVDUkVGKG1fb2JqKTsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKG1tYXBfbW9kdWxlX2Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgbV9vYmotPmFjY2VzcyA9IChhY2Nlc3NfbW9kZSlhY2Nlc3M7CkBAIC0xMjQxLDggKzEyNjMsOCBAQAogICAgIGludCBhY2Nlc3MgPSAoYWNjZXNzX21vZGUpQUNDRVNTX0RFRkFVTFQ7CiAgICAgRFdPUkQgZmxQcm90ZWN0LCBkd0Rlc2lyZWRBY2Nlc3M7CiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ICJmaWxlbm8iLCAibGVuZ3RoIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhZ25hbWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIiwgIm9mZnNldCIsIE5VTEwgfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhZ25hbWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIiwgIm9mZnNldCIsIE5VTEwgfTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgImlPfHppTCIsIGtleXdvcmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaWxlbm8sICZtYXBfc2l6ZV9vYmosCkBAIC0xMjg5LDEyICsxMzExLDEyIEBACiAgICAgaWYgKGZpbGVubyAhPSAtMSAmJiBmaWxlbm8gIT0gMCkgewogICAgICAgICAvKiBFbnN1cmUgdGhhdCBmaWxlbm8gaXMgd2l0aGluIHRoZSBDUlQncyB2YWxpZCByYW5nZSAqLwogICAgICAgICBpZiAoX1B5VmVyaWZ5X2ZkKGZpbGVubykgPT0gMCkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKG1tYXBfbW9kdWxlX2Vycm9yKTsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGZoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlbm8pOwogICAgICAgICBpZiAoZmg9PShIQU5ETEUpLTEpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhtbWFwX21vZHVsZV9lcnJvcik7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICAvKiBXaW45eCBhcHBlYXJzIHRvIG5lZWQgdXMgc2Vla2VkIHRvIHplcm8gKi8KQEAgLTE0NTYsMTEgKzE0NzgsNyBAQAogICAgIGRpY3QgPSBQeU1vZHVsZV9HZXREaWN0KG1vZHVsZSk7CiAgICAgaWYgKCFkaWN0KQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBtbWFwX21vZHVsZV9lcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigibW1hcC5lcnJvciIsCi0gICAgICAgIFB5RXhjX0Vudmlyb25tZW50RXJyb3IgLCBOVUxMKTsKLSAgICBpZiAobW1hcF9tb2R1bGVfZXJyb3IgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgImVycm9yIiwgbW1hcF9tb2R1bGVfZXJyb3IpOworICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJlcnJvciIsIFB5RXhjX09TRXJyb3IpOwogICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJtbWFwIiwgKFB5T2JqZWN0KikgJm1tYXBfb2JqZWN0X3R5cGUpOwogI2lmZGVmIFBST1RfRVhFQwogICAgIHNldGludChkaWN0LCAiUFJPVF9FWEVDIiwgUFJPVF9FWEVDKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvbmlzbW9kdWxlLmMgYi9Nb2R1bGVzL25pc21vZHVsZS5jCmluZGV4IGE4MWNhOGMuLjBhZjQ5NWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbmlzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9uaXNtb2R1bGUuYwpAQCAtNDExLDcgKzQxMSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZvciAobWFwcyA9IG1hcHM7IG1hcHM7IG1hcHMgPSBtYXBzLT5uZXh0KSB7CisgICAgZm9yICg7IG1hcHM7IG1hcHMgPSBtYXBzLT5uZXh0KSB7CiAgICAgICAgIFB5T2JqZWN0ICpzdHIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhtYXBzLT5tYXApOwogICAgICAgICBpZiAoIXN0ciB8fCBQeUxpc3RfQXBwZW5kKGxpc3QsIHN0cikgPCAwKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL29wZXJhdG9yLmMgYi9Nb2R1bGVzL29wZXJhdG9yLmMKaW5kZXggODY2ZWMzYS4uMTJmZGFkNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9vcGVyYXRvci5jCisrKyBiL01vZHVsZXMvb3BlcmF0b3IuYwpAQCAtMTU5LDYgKzE1OSwxNDMgQEAKICN1bmRlZiBzcGFtMgogI3VuZGVmIHNwYW0xbwogI3VuZGVmIHNwYW0xbworCisvKiBjb21wYXJlX2RpZ2VzdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogdGltaW5nIHNhZmUgY29tcGFyZQorICoKKyAqIFJldHVybnMgMSBvZiB0aGUgc3RyaW5ncyBhcmUgZXF1YWwuCisgKiBJbiBjYXNlIG9mIGxlbihhKSAhPSBsZW4oYikgdGhlIGZ1bmN0aW9uIHRyaWVzIHRvIGtlZXAgdGhlIHRpbWluZworICogZGVwZW5kZW50IG9uIHRoZSBsZW5ndGggb2YgYi4gQ1BVIGNhY2hlIGxvY2FsbHkgbWF5IHN0aWxsIGFsdGVyIHRpbWluZworICogYSBiaXQuCisgKi8KK3N0YXRpYyBpbnQKK190c2NtcChjb25zdCB1bnNpZ25lZCBjaGFyICphLCBjb25zdCB1bnNpZ25lZCBjaGFyICpiLAorICAgICAgICBQeV9zc2l6ZV90IGxlbl9hLCBQeV9zc2l6ZV90IGxlbl9iKQoreworICAgIC8qIFRoZSB2b2xhdGlsZSB0eXBlIGRlY2xhcmF0aW9ucyBtYWtlIHN1cmUgdGhhdCB0aGUgY29tcGlsZXIgaGFzIG5vCisgICAgICogY2hhbmNlIHRvIG9wdGltaXplIGFuZCBmb2xkIHRoZSBjb2RlIGluIGFueSB3YXkgdGhhdCBtYXkgY2hhbmdlCisgICAgICogdGhlIHRpbWluZy4KKyAgICAgKi8KKyAgICB2b2xhdGlsZSBQeV9zc2l6ZV90IGxlbmd0aDsKKyAgICB2b2xhdGlsZSBjb25zdCB1bnNpZ25lZCBjaGFyICpsZWZ0OworICAgIHZvbGF0aWxlIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnJpZ2h0OworICAgIFB5X3NzaXplX3QgaTsKKyAgICB1bnNpZ25lZCBjaGFyIHJlc3VsdDsKKworICAgIC8qIGxvb3AgY291bnQgZGVwZW5kcyBvbiBsZW5ndGggb2YgYiAqLworICAgIGxlbmd0aCA9IGxlbl9iOworICAgIGxlZnQgPSBOVUxMOworICAgIHJpZ2h0ID0gYjsKKworICAgIC8qIGRvbid0IHVzZSBlbHNlIGhlcmUgdG8ga2VlcCB0aGUgYW1vdW50IG9mIENQVSBpbnN0cnVjdGlvbnMgY29uc3RhbnQsCisgICAgICogdm9sYXRpbGUgZm9yY2VzIHJlLWV2YWx1YXRpb24KKyAgICAgKiAgKi8KKyAgICBpZiAobGVuX2EgPT0gbGVuZ3RoKSB7CisgICAgICAgIGxlZnQgPSAqKCh2b2xhdGlsZSBjb25zdCB1bnNpZ25lZCBjaGFyKiopJmEpOworICAgICAgICByZXN1bHQgPSAwOworICAgIH0KKyAgICBpZiAobGVuX2EgIT0gbGVuZ3RoKSB7CisgICAgICAgIGxlZnQgPSBiOworICAgICAgICByZXN1bHQgPSAxOworICAgIH0KKworICAgIGZvciAoaT0wOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgcmVzdWx0IHw9ICpsZWZ0KysgXiAqcmlnaHQrKzsKKyAgICB9CisKKyAgICByZXR1cm4gKHJlc3VsdCA9PSAwKTsKK30KKworUHlEb2NfU1RSVkFSKGNvbXBhcmVfZGlnZXN0X19kb2NfXywKKyJjb21wYXJlX2RpZ2VzdChhLCBiKSAtPiBib29sXG4iCisiXG4iCisiUmV0dXJuICdhID09IGInLiAgVGhpcyBmdW5jdGlvbiB1c2VzIGFuIGFwcHJvYWNoIGRlc2lnbmVkIHRvIHByZXZlbnRcbiIKKyJ0aW1pbmcgYW5hbHlzaXMsIG1ha2luZyBpdCBhcHByb3ByaWF0ZSBmb3IgY3J5cHRvZ3JhcGh5LlxuIgorImEgYW5kIGIgbXVzdCBib3RoIGJlIG9mIHRoZSBzYW1lIHR5cGU6IGVpdGhlciBzdHIgKEFTQ0lJIG9ubHkpLFxuIgorIm9yIGFueSB0eXBlIHRoYXQgc3VwcG9ydHMgdGhlIGJ1ZmZlciBwcm90b2NvbCAoZS5nLiBieXRlcykuXG4iCisiXG4iCisiTm90ZTogSWYgYSBhbmQgYiBhcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIG9yIGlmIGFuIGVycm9yIG9jY3VycyxcbiIKKyJhIHRpbWluZyBhdHRhY2sgY291bGQgdGhlb3JldGljYWxseSByZXZlYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG4iCisidHlwZXMgYW5kIGxlbmd0aHMgb2YgYSBhbmQgYi0tYnV0IG5vdCB0aGVpciB2YWx1ZXMuXG4iKTsKKworc3RhdGljIFB5T2JqZWN0KgorY29tcGFyZV9kaWdlc3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICphLCAqYjsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POmNvbXBhcmVfZGlnZXN0IiwgJmEsICZiKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBBU0NJSSB1bmljb2RlIHN0cmluZyAqLworICAgIGlmKFB5VW5pY29kZV9DaGVjayhhKSAmJiBQeVVuaWNvZGVfQ2hlY2soYikpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShhKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoYikgPT0gLTEpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmICghUHlVbmljb2RlX0lTX0FTQ0lJKGEpIHx8ICFQeVVuaWNvZGVfSVNfQVNDSUkoYikpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBhcmluZyBzdHJpbmdzIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3Qgc3VwcG9ydGVkIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHJjID0gX3RzY21wKFB5VW5pY29kZV9EQVRBKGEpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfREFUQShiKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoYSksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKGIpKTsKKyAgICB9CisgICAgLyogZmFsbGJhY2sgdG8gYnVmZmVyIGludGVyZmFjZSBmb3IgYnl0ZXMsIGJ5dGVzYXJyYXkgYW5kIG90aGVyICovCisgICAgZWxzZSB7CisgICAgICAgIFB5X2J1ZmZlciB2aWV3X2E7CisgICAgICAgIFB5X2J1ZmZlciB2aWV3X2I7CisKKyAgICAgICAgaWYgKChQeU9iamVjdF9DaGVja0J1ZmZlcihhKSA9PSAwKSAmIChQeU9iamVjdF9DaGVja0J1ZmZlcihiKSA9PSAwKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgb3BlcmFuZCB0eXBlcyhzKSBvciBjb21iaW5hdGlvbiBvZiB0eXBlczogIgorICAgICAgICAgICAgICAgICAgICAgICAgICInJS4xMDBzJyBhbmQgJyUuMTAwcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoYSktPnRwX25hbWUsIFB5X1RZUEUoYiktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGEsICZ2aWV3X2EsIFB5QlVGX1NJTVBMRSkgPT0gLTEpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmICh2aWV3X2EubmRpbSA+IDEpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQnVmZmVyIG11c3QgYmUgc2luZ2xlIGRpbWVuc2lvbiIpOworICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlld19hKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihiLCAmdmlld19iLCBQeUJVRl9TSU1QTEUpID09IC0xKSB7CisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3X2EpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZpZXdfYi5uZGltID4gMSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCdWZmZXIgbXVzdCBiZSBzaW5nbGUgZGltZW5zaW9uIik7CisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3X2EpOworICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlld19iKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcmMgPSBfdHNjbXAoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXZpZXdfYS5idWYsCisgICAgICAgICAgICAgICAgICAgIChjb25zdCB1bnNpZ25lZCBjaGFyKil2aWV3X2IuYnVmLAorICAgICAgICAgICAgICAgICAgICB2aWV3X2EubGVuLAorICAgICAgICAgICAgICAgICAgICB2aWV3X2IubGVuKTsKKworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3X2EpOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3X2IpOworICAgIH0KKworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmMpOworfQorCisvKiBvcGVyYXRvciBtZXRob2RzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKICNkZWZpbmUgc3BhbTEoT1AsRE9DKSB7I09QLCBPUCwgTUVUSF9WQVJBUkdTLCBQeURvY19TVFIoRE9DKX0sCiAjZGVmaW5lIHNwYW0yKE9QLEFMVE9QLERPQykgeyNPUCwgb3BfIyNPUCwgTUVUSF9WQVJBUkdTLCBQeURvY19TVFIoRE9DKX0sIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsjQUxUT1AsIG9wXyMjT1AsIE1FVEhfVkFSQVJHUywgUHlEb2NfU1RSKERPQyl9LApAQCAtMjI3LDYgKzM2NCw4IEBACiBzcGFtMihndCxfX2d0X18sICJndChhLCBiKSAtLSBTYW1lIGFzIGE+Yi4iKQogc3BhbTIoZ2UsX19nZV9fLCAiZ2UoYSwgYikgLS0gU2FtZSBhcyBhPj1iLiIpCiAKKyAgICB7Il9jb21wYXJlX2RpZ2VzdCIsIChQeUNGdW5jdGlvbiljb21wYXJlX2RpZ2VzdCwgTUVUSF9WQVJBUkdTLAorICAgICBjb21wYXJlX2RpZ2VzdF9fZG9jX199LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiAKIH07CkBAIC00MDIsNyArNTQxLDggQEAKICAgICBmb3IgKGlkeCA9IDA7IGlkeCA8IG5hdHRyczsgKytpZHgpIHsKICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGlkeCk7CiAgICAgICAgIFB5X3NzaXplX3QgaXRlbV9sZW47Ci0gICAgICAgIFB5X1VOSUNPREUgKml0ZW1fYnVmZmVyOworICAgICAgICB2b2lkICpkYXRhOworICAgICAgICB1bnNpZ25lZCBpbnQga2luZDsKICAgICAgICAgaW50IGRvdF9jb3VudDsKIAogICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhpdGVtKSkgewpAQCAtNDExLDEzICs1NTEsMTggQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGl0ZW1fbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKGl0ZW0pOwotICAgICAgICBpdGVtX2J1ZmZlciA9IFB5VW5pY29kZV9BU19VTklDT0RFKGl0ZW0pOworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGl0ZW0pKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpdGVtX2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGl0ZW0pOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoaXRlbSk7CisgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShpdGVtKTsKIAogICAgICAgICAvKiBjaGVjayB3aGV0aGVyZSB0aGUgc3RyaW5nIGlzIGRvdHRlZCAqLwogICAgICAgICBkb3RfY291bnQgPSAwOwogICAgICAgICBmb3IgKGNoYXJfaWR4ID0gMDsgY2hhcl9pZHggPCBpdGVtX2xlbjsgKytjaGFyX2lkeCkgewotICAgICAgICAgICAgaWYgKGl0ZW1fYnVmZmVyW2NoYXJfaWR4XSA9PSAoUHlfVU5JQ09ERSknLicpCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgY2hhcl9pZHgpID09ICcuJykKICAgICAgICAgICAgICAgICArK2RvdF9jb3VudDsKICAgICAgICAgfQogCkBAIC00MzgsMTIgKzU4MywxMiBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmb3IgKDsgZG90X2NvdW50ID4gMDsgLS1kb3RfY291bnQpIHsKLSAgICAgICAgICAgICAgICB3aGlsZSAoaXRlbV9idWZmZXJbdW5pYnVmZl90aWxsXSAhPSAoUHlfVU5JQ09ERSknLicpIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgdW5pYnVmZl90aWxsKSAhPSAnLicpIHsKICAgICAgICAgICAgICAgICAgICAgKyt1bmlidWZmX3RpbGw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGF0dHJfY2hhaW5faXRlbSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbV9idWZmZXIgKyB1bmlidWZmX2Zyb20sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWJ1ZmZfdGlsbCAtIHVuaWJ1ZmZfZnJvbSk7CisgICAgICAgICAgICAgICAgYXR0cl9jaGFpbl9pdGVtID0gUHlVbmljb2RlX1N1YnN0cmluZyhpdGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlidWZmX2Zyb20sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWJ1ZmZfdGlsbCk7CiAgICAgICAgICAgICAgICAgaWYgKGF0dHJfY2hhaW5faXRlbSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyX2NoYWluKTsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGF0dHIpOwpAQCAtNDU2LDkgKzYwMSw4IEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8qIG5vdyBhZGQgdGhlIGxhc3QgZG90bGVzcyBuYW1lICovCi0gICAgICAgICAgICBhdHRyX2NoYWluX2l0ZW0gPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbV9idWZmZXIgKyB1bmlidWZmX2Zyb20sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbV9sZW4gLSB1bmlidWZmX2Zyb20pOworICAgICAgICAgICAgYXR0cl9jaGFpbl9pdGVtID0gUHlVbmljb2RlX1N1YnN0cmluZyhpdGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlidWZmX2Zyb20sIGl0ZW1fbGVuKTsKICAgICAgICAgICAgIGlmIChhdHRyX2NoYWluX2l0ZW0gPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyX2NoYWluKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMgYi9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMKaW5kZXggMGFjMWNiMy4uNTBlMjY2ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9vc3NhdWRpb2Rldi5jCisrKyBiL01vZHVsZXMvb3NzYXVkaW9kZXYuYwpAQCAtMjE0LDYgKzIxNCwyMSBAQAogICogSGVscGVyIGZ1bmN0aW9ucwogICovCiAKKy8qIENoZWNrIGlmIGEgZ2l2ZW4gZmlsZSBkZXNjcmlwdG9yIGlzIHZhbGlkIChpLmUuIGhhc24ndCBiZWVuIGNsb3NlZCkuCisgKiBJZiB0cnVlLCByZXR1cm4gMS4gT3RoZXJ3aXNlLCByYWlzZSBWYWx1ZUVycm9yIGFuZCByZXR1cm4gMC4KKyAqLworc3RhdGljIGludCBfaXNfZmRfdmFsaWQoaW50IGZkKQoreworICAgIC8qIHRoZSBGRCBpcyBzZXQgdG8gLTEgaW4gb3NzX2Nsb3NlKCkvb3NzX21peGVyX2Nsb3NlKCkgKi8KKyAgICBpZiAoZmQgPj0gMCkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJPcGVyYXRpb24gb24gY2xvc2VkIE9TUyBkZXZpY2UuIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwogLyogX2RvX2lvY3RsXzEoKSBpcyBhIHByaXZhdGUgaGVscGVyIGZ1bmN0aW9uIHVzZWQgZm9yIHRoZSBPU1MgaW9jdGxzIC0tCiAgICBTTkRDVExfRFNQX3tTRVRGTVQsQ0hBTk5FTFMsU1BFRUR9IC0tIHRoYXQgYXJlIGNhbGxlZCBmcm9tIEMKICAgIGxpa2UgdGhpczoKQEAgLTMwMSw2ICszMTYsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19ub25ibG9jayhvc3NfYXVkaW9fdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgLyogSG1tbTogaXQgZG9lc24ndCBhcHBlYXIgdG8gYmUgcG9zc2libGUgdG8gcmV0dXJuIHRvIGJsb2NraW5nCiAgICAgICAgbW9kZSBvbmNlIHdlJ3JlIGluIG5vbi1ibG9ja2luZyBtb2RlISAqLwogICAgIGlmIChpb2N0bChzZWxmLT5mZCwgU05EQ1RMX0RTUF9OT05CTE9DSywgTlVMTCkgPT0gLTEpCkBAIC0zMTIsNiArMzMwLDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3Nfc2V0Zm10KG9zc19hdWRpb190ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIF9kb19pb2N0bF8xKHNlbGYtPmZkLCBhcmdzLCAic2V0Zm10IiwgU05EQ1RMX0RTUF9TRVRGTVQpOwogfQogCkBAIC0zMTksNiArMzQwLDEwIEBACiBvc3NfZ2V0Zm10cyhvc3NfYXVkaW9fdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKIHsKICAgICBpbnQgbWFzazsKKworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoaW9jdGwoc2VsZi0+ZmQsIFNORENUTF9EU1BfR0VURk1UUywgJm1hc2spID09IC0xKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcobWFzayk7CkBAIC0zMjcsMzAgKzM1Miw0NSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19jaGFubmVscyhvc3NfYXVkaW9fdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBfZG9faW9jdGxfMShzZWxmLT5mZCwgYXJncywgImNoYW5uZWxzIiwgU05EQ1RMX0RTUF9DSEFOTkVMUyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3Nfc3BlZWQob3NzX2F1ZGlvX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gX2RvX2lvY3RsXzEoc2VsZi0+ZmQsIGFyZ3MsICJzcGVlZCIsIFNORENUTF9EU1BfU1BFRUQpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX3N5bmMob3NzX2F1ZGlvX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gX2RvX2lvY3RsXzAoc2VsZi0+ZmQsIGFyZ3MsICJzeW5jIiwgU05EQ1RMX0RTUF9TWU5DKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19yZXNldChvc3NfYXVkaW9fdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBfZG9faW9jdGxfMChzZWxmLT5mZCwgYXJncywgInJlc2V0IiwgU05EQ1RMX0RTUF9SRVNFVCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3NfcG9zdChvc3NfYXVkaW9fdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBfZG9faW9jdGxfMChzZWxmLT5mZCwgYXJncywgInBvc3QiLCBTTkRDVExfRFNQX1BPU1QpOwogfQogCkBAIC0zNjUsNiArNDA1LDkgQEAKICAgICBjaGFyICpjcDsKICAgICBQeU9iamVjdCAqcnY7CiAKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnJlYWQiLCAmc2l6ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJ2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKQEAgLTM5Miw2ICs0MzUsOSBAQAogICAgIGNoYXIgKmNwOwogICAgIGludCBydiwgc2l6ZTsKIAorICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjOndyaXRlIiwgJmNwLCAmc2l6ZSkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNDIzLDYgKzQ2OSw5IEBACiAgICAgICAgbW9kZSwgdGhlIGJlaGF2aW91ciBvZiB3cml0ZSgpIGFuZCB3cml0ZWFsbCgpIGZyb20gUHl0aG9uIGlzCiAgICAgICAgaW5kaXN0aW5ndWlzaGFibGUuICovCiAKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Izp3cml0ZSIsICZjcCwgJnNpemUpKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtNDgyLDEwICs1MzEsMTIgQEAKICAgICByZXR1cm4gc2VsZjsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICogCitzdGF0aWMgUHlPYmplY3QgKgogb3NzX2V4aXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCiB7Ci0gICAgUHlPYmplY3QgKnJldCA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgImNsb3NlIiwgTlVMTCk7CisgICAgX1B5X0lERU5USUZJRVIoY2xvc2UpOworCisgICAgUHlPYmplY3QgKnJldCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfY2xvc2UsIE5VTEwpOwogICAgIGlmICghcmV0KQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9ERUNSRUYocmV0KTsKQEAgLTQ5NSw2ICs1NDYsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19maWxlbm8ob3NzX2F1ZGlvX3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+ZmQpOwogfQogCkBAIC01MDksNiArNTYzLDkgQEAKICAgICBpbnQgZm10LCBjaGFubmVscywgcmF0ZTsKICAgICBQeU9iamVjdCAqIHJ2OyAgICAgICAgICAgICAgICAgICAgLyogcmV0dXJuIHR1cGxlIChmbXQsIGNoYW5uZWxzLCByYXRlKSAqLwogCisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlpfGk6c2V0cGFyYW1ldGVycyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3YW50ZWRfZm10LCAmd2FudGVkX2NoYW5uZWxzLCAmd2FudGVkX3JhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJpY3QpKQpAQCAtNTk5LDYgKzY1Niw5IEBACiAgICAgYXVkaW9fYnVmX2luZm8gYWk7CiAgICAgaW50IG5jaGFubmVscz0wLCBzc2l6ZT0wOwogCisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChfc3NpemUoc2VsZiwgJm5jaGFubmVscywgJnNzaXplKSA8IDAgfHwgIW5jaGFubmVscyB8fCAhc3NpemUpIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTYxOCw2ICs2NzgsOSBAQAogICAgIGF1ZGlvX2J1Zl9pbmZvIGFpOwogICAgIGludCBuY2hhbm5lbHM9MCwgc3NpemU9MDsKIAorICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoX3NzaXplKHNlbGYsICZuY2hhbm5lbHMsICZzc2l6ZSkgPCAwIHx8ICFuY2hhbm5lbHMgfHwgIXNzaXplKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02MzgsNiArNzAxLDkgQEAKICAgICBhdWRpb19idWZfaW5mbyBhaTsKICAgICBpbnQgbmNoYW5uZWxzPTAsIHNzaXplPTA7CiAKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKF9zc2l6ZShzZWxmLCAmbmNoYW5uZWxzLCAmc3NpemUpIDwgMCB8fCAhbmNoYW5uZWxzIHx8ICFzc2l6ZSkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjU1LDYgKzcyMSw5IEBACiAgICAgY291bnRfaW5mbyBpbmZvOwogICAgIGludCByZXE7CiAKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKHNlbGYtPm1vZGUgPT0gT19SRE9OTFkpCiAgICAgICAgIHJlcSA9IFNORENUTF9EU1BfR0VUSVBUUjsKICAgICBlbHNlCkBAIC02ODUsNiArNzU0LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3NfbWl4ZXJfZmlsZW5vKG9zc19taXhlcl90ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmZkKTsKIH0KIApAQCAtNjkzLDYgKzc2NSw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX21peGVyX2NvbnRyb2xzKG9zc19taXhlcl90ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIF9kb19pb2N0bF8xX2ludGVybmFsKHNlbGYtPmZkLCBhcmdzLCAiY29udHJvbHMiLAogICAgICAgICBTT1VORF9NSVhFUl9SRUFEX0RFVk1BU0spOwogfQpAQCAtNzAwLDYgKzc3NSw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX21peGVyX3N0ZXJlb2NvbnRyb2xzKG9zc19taXhlcl90ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIF9kb19pb2N0bF8xX2ludGVybmFsKHNlbGYtPmZkLCBhcmdzLCAic3RlcmVvY29udHJvbHMiLAogICAgICAgICBTT1VORF9NSVhFUl9SRUFEX1NURVJFT0RFVlMpOwogfQpAQCAtNzA3LDYgKzc4NSw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX21peGVyX3JlY2NvbnRyb2xzKG9zc19taXhlcl90ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIF9kb19pb2N0bF8xX2ludGVybmFsKHNlbGYtPmZkLCBhcmdzLCAicmVjY29udHJvbHMiLAogICAgICAgICBTT1VORF9NSVhFUl9SRUFEX1JFQ01BU0spOwogfQpAQCAtNzE2LDYgKzc5Nyw5IEBACiB7CiAgICAgaW50IGNoYW5uZWwsIHZvbHVtZTsKIAorICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICAvKiBDYW4ndCB1c2UgX2RvX2lvY3RsXzEgYmVjYXVzZSBvZiBlbmNvZGVkIGFyZyB0aGluZ3kuICovCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmdldCIsICZjaGFubmVsKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03MzYsNiArODIwLDkgQEAKIHsKICAgICBpbnQgY2hhbm5lbCwgdm9sdW1lLCBsZWZ0Vm9sLCByaWdodFZvbDsKIAorICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICAvKiBDYW4ndCB1c2UgX2RvX2lvY3RsXzEgYmVjYXVzZSBvZiBlbmNvZGVkIGFyZyB0aGluZ3kuICovCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpKGlpKTpzZXQiLCAmY2hhbm5lbCwgJmxlZnRWb2wsICZyaWdodFZvbCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzYxLDYgKzg0OCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX21peGVyX2dldF9yZWNzcmMob3NzX21peGVyX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gX2RvX2lvY3RsXzFfaW50ZXJuYWwoc2VsZi0+ZmQsIGFyZ3MsICJnZXRfcmVjc3JjIiwKICAgICAgICAgU09VTkRfTUlYRVJfUkVBRF9SRUNTUkMpOwogfQpAQCAtNzY4LDYgKzg1OCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX21peGVyX3NldF9yZWNzcmMob3NzX21peGVyX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gX2RvX2lvY3RsXzEoc2VsZi0+ZmQsIGFyZ3MsICJzZXRfcmVjc3JjIiwKICAgICAgICAgU09VTkRfTUlYRVJfV1JJVEVfUkVDU1JDKTsKIH0KQEAgLTk3MSw4ICsxMDY0LDggQEAKICAgICBpbnQgbnVtX2NvbnRyb2xzOwogICAgIGludCBpOwogCi0gICAgbnVtX2NvbnRyb2xzID0gc2l6ZW9mKGNvbnRyb2xfbGFiZWxzKSAvIHNpemVvZihjb250cm9sX2xhYmVsc1swXSk7Ci0gICAgYXNzZXJ0KG51bV9jb250cm9scyA9PSBzaXplb2YoY29udHJvbF9uYW1lcykgLyBzaXplb2YoY29udHJvbF9uYW1lc1swXSkpOworICAgIG51bV9jb250cm9scyA9IFB5X0FSUkFZX0xFTkdUSChjb250cm9sX2xhYmVscyk7CisgICAgYXNzZXJ0KG51bV9jb250cm9scyA9PSBQeV9BUlJBWV9MRU5HVEgoY29udHJvbF9uYW1lcykpOwogCiAgICAgbGFiZWxzID0gUHlMaXN0X05ldyhudW1fY29udHJvbHMpOwogICAgIG5hbWVzID0gUHlMaXN0X05ldyhudW1fY29udHJvbHMpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYyBiL01vZHVsZXMvcGFyc2VybW9kdWxlLmMKaW5kZXggOTQ5N2FhZS4uZTg2ZmU0ZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYworKysgYi9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jCkBAIC0zMDAsMjUgKzMwMCwyNSBAQAogCiAgICAgLyogQ29udmVydCByZXR1cm4gdmFsdWUgdG8gYSBCb29sZWFuICovCiAgICAgc3dpdGNoIChvcCkgewotICAgIGNhc2UgUHlfRVE6CisgICAgICBjYXNlIFB5X0VROgogICAgICAgICB2ID0gVEVTVF9DT05EKHJlc3VsdCA9PSAwKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQeV9ORToKKyAgICAgIGNhc2UgUHlfTkU6CiAgICAgICAgIHYgPSBURVNUX0NPTkQocmVzdWx0ICE9IDApOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFB5X0xFOgorICAgICAgY2FzZSBQeV9MRToKICAgICAgICAgdiA9IFRFU1RfQ09ORChyZXN1bHQgPD0gMCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHlfR0U6CisgICAgICBjYXNlIFB5X0dFOgogICAgICAgICB2ID0gVEVTVF9DT05EKHJlc3VsdCA+PSAwKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQeV9MVDoKKyAgICAgIGNhc2UgUHlfTFQ6CiAgICAgICAgIHYgPSBURVNUX0NPTkQocmVzdWx0IDwgMCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHlfR1Q6CisgICAgICBjYXNlIFB5X0dUOgogICAgICAgICB2ID0gVEVTVF9DT05EKHJlc3VsdCA+IDApOwogICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgorICAgICAgZGVmYXVsdDoKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMzgyLDQwICszODIsMjggQEAKIHN0YXRpYyBQeU9iamVjdCoKIHBhcnNlcl9zdDJ0dXBsZShQeVNUX09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKLSAgICBQeU9iamVjdCAqbGluZV9vcHRpb24gPSAwOwotICAgIFB5T2JqZWN0ICpjb2xfb3B0aW9uID0gMDsKKyAgICBpbnQgbGluZV9pbmZvID0gMDsKKyAgICBpbnQgY29sX2luZm8gPSAwOwogICAgIFB5T2JqZWN0ICpyZXMgPSAwOwogICAgIGludCBvazsKIAogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJzdCIsICJsaW5lX2luZm8iLCAiY29sX2luZm8iLCBOVUxMfTsKIAogICAgIGlmIChzZWxmID09IE5VTEwgfHwgUHlNb2R1bGVfQ2hlY2soc2VsZikpIHsKLSAgICAgICAgb2sgPSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJPIXxPTzpzdDJ0dXBsZSIsIGtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlTVF9UeXBlLCAmc2VsZiwgJmxpbmVfb3B0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29sX29wdGlvbik7CisgICAgICAgIG9rID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiTyF8cHA6c3QydHVwbGUiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5U1RfVHlwZSwgJnNlbGYsICZsaW5lX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb2xfaW5mbyk7CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgb2sgPSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8T086dG90dXBsZSIsICZrZXl3b3Jkc1sxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxpbmVfb3B0aW9uLCAmY29sX29wdGlvbik7CisgICAgICAgIG9rID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifHBwOnRvdHVwbGUiLCAma2V5d29yZHNbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsaW5lX2luZm8sICZjb2xfaW5mbyk7CiAgICAgaWYgKG9rICE9IDApIHsKLSAgICAgICAgaW50IGxpbmVubyA9IDA7Ci0gICAgICAgIGludCBjb2xfb2Zmc2V0ID0gMDsKLSAgICAgICAgaWYgKGxpbmVfb3B0aW9uICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGxpbmVubyA9IFB5T2JqZWN0X0lzVHJ1ZShsaW5lX29wdGlvbik7Ci0gICAgICAgICAgICBpZiAobGluZW5vIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoY29sX29wdGlvbiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBjb2xfb2Zmc2V0ID0gUHlPYmplY3RfSXNUcnVlKGNvbF9vcHRpb24pOwotICAgICAgICAgICAgaWYgKGNvbF9vZmZzZXQgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgICAgIC8qCiAgICAgICAgICAqICBDb252ZXJ0IFNUIGludG8gYSB0dXBsZSByZXByZXNlbnRhdGlvbi4gIFVzZSBHdWlkbydzIGZ1bmN0aW9uLAogICAgICAgICAgKiAgc2luY2UgaXQncyBrbm93biB0byB3b3JrIGFscmVhZHkuCiAgICAgICAgICAqLwogICAgICAgICByZXMgPSBub2RlMnR1cGxlKCgoUHlTVF9PYmplY3QqKXNlbGYpLT5zdF9ub2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfTmV3LCBQeVR1cGxlX1NldEl0ZW0sIGxpbmVubywgY29sX29mZnNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9OZXcsIFB5VHVwbGVfU2V0SXRlbSwgbGluZV9pbmZvLCBjb2xfaW5mbyk7CiAgICAgfQogICAgIHJldHVybiAocmVzKTsKIH0KQEAgLTQzMCwzOSArNDE4LDI3IEBACiBzdGF0aWMgUHlPYmplY3QqCiBwYXJzZXJfc3QybGlzdChQeVNUX09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKLSAgICBQeU9iamVjdCAqbGluZV9vcHRpb24gPSAwOwotICAgIFB5T2JqZWN0ICpjb2xfb3B0aW9uID0gMDsKKyAgICBpbnQgbGluZV9pbmZvID0gMDsKKyAgICBpbnQgY29sX2luZm8gPSAwOwogICAgIFB5T2JqZWN0ICpyZXMgPSAwOwogICAgIGludCBvazsKIAogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJzdCIsICJsaW5lX2luZm8iLCAiY29sX2luZm8iLCBOVUxMfTsKIAogICAgIGlmIChzZWxmID09IE5VTEwgfHwgUHlNb2R1bGVfQ2hlY2soc2VsZikpCi0gICAgICAgIG9rID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiTyF8T086c3QybGlzdCIsIGtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlTVF9UeXBlLCAmc2VsZiwgJmxpbmVfb3B0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29sX29wdGlvbik7CisgICAgICAgIG9rID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiTyF8cHA6c3QybGlzdCIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlTVF9UeXBlLCAmc2VsZiwgJmxpbmVfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbF9pbmZvKTsKICAgICBlbHNlCi0gICAgICAgIG9rID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifE9POnRvbGlzdCIsICZrZXl3b3Jkc1sxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxpbmVfb3B0aW9uLCAmY29sX29wdGlvbik7CisgICAgICAgIG9rID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifHBwOnRvbGlzdCIsICZrZXl3b3Jkc1sxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxpbmVfaW5mbywgJmNvbF9pbmZvKTsKICAgICBpZiAob2spIHsKLSAgICAgICAgaW50IGxpbmVubyA9IDA7Ci0gICAgICAgIGludCBjb2xfb2Zmc2V0ID0gMDsKLSAgICAgICAgaWYgKGxpbmVfb3B0aW9uICE9IDApIHsKLSAgICAgICAgICAgIGxpbmVubyA9IFB5T2JqZWN0X0lzVHJ1ZShsaW5lX29wdGlvbik7Ci0gICAgICAgICAgICBpZiAobGluZW5vIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoY29sX29wdGlvbiAhPSAwKSB7Ci0gICAgICAgICAgICBjb2xfb2Zmc2V0ID0gUHlPYmplY3RfSXNUcnVlKGNvbF9vcHRpb24pOwotICAgICAgICAgICAgaWYgKGNvbF9vZmZzZXQgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgICAgIC8qCiAgICAgICAgICAqICBDb252ZXJ0IFNUIGludG8gYSB0dXBsZSByZXByZXNlbnRhdGlvbi4gIFVzZSBHdWlkbydzIGZ1bmN0aW9uLAogICAgICAgICAgKiAgc2luY2UgaXQncyBrbm93biB0byB3b3JrIGFscmVhZHkuCiAgICAgICAgICAqLwogICAgICAgICByZXMgPSBub2RlMnR1cGxlKHNlbGYtPnN0X25vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X05ldywgUHlMaXN0X1NldEl0ZW0sIGxpbmVubywgY29sX29mZnNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X05ldywgUHlMaXN0X1NldEl0ZW0sIGxpbmVfaW5mbywgY29sX2luZm8pOwogICAgIH0KICAgICByZXR1cm4gKHJlcyk7CiB9CkBAIC02MDAsOCArNTc2LDEwIEBACiAgICAgICAgICAgICBpZiAocmVzKQogICAgICAgICAgICAgICAgICgoUHlTVF9PYmplY3QgKilyZXMpLT5zdF9mbGFncy5jZl9mbGFncyA9IGZsYWdzICYgUHlDRl9NQVNLOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UKKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQeVBhcnNlcl9TZXRFcnJvcigmZXJyKTsKKyAgICAgICAgfQorICAgICAgICBQeVBhcnNlcl9DbGVhckVycm9yKCZlcnIpOwogICAgIH0KICAgICByZXR1cm4gKHJlcyk7CiB9CkBAIC03NDcsNyArNzI1LDcgQEAKICAgICAgICAgLyogZWxlbSBtdXN0IGFsd2F5cyBiZSBhIHNlcXVlbmNlLCBob3dldmVyIHNpbXBsZSAqLwogICAgICAgICBQeU9iamVjdCogZWxlbSA9IFB5U2VxdWVuY2VfR2V0SXRlbSh0dXBsZSwgaSk7CiAgICAgICAgIGludCBvayA9IGVsZW0gIT0gTlVMTDsKLSAgICAgICAgbG9uZyAgdHlwZSA9IDA7CisgICAgICAgIGludCB0eXBlID0gMDsKICAgICAgICAgY2hhciAqc3RybiA9IDA7CiAKICAgICAgICAgaWYgKG9rKQpAQCAtNzU4LDggKzczNiwxNCBAQAogICAgICAgICAgICAgICAgIG9rID0gMDsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG9rID0gUHlMb25nX0NoZWNrKHRlbXApOwotICAgICAgICAgICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICAgICAgICAgdHlwZSA9IFB5TG9uZ19BU19MT05HKHRlbXApOworICAgICAgICAgICAgICAgIGlmIChvaykgeworICAgICAgICAgICAgICAgICAgICB0eXBlID0gX1B5TG9uZ19Bc0ludCh0ZW1wKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRlbXApOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC03OTUsOCArNzc5LDE2IEBACiAgICAgICAgICAgICBpZiAobGVuID09IDMpIHsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbyA9IFB5U2VxdWVuY2VfR2V0SXRlbShlbGVtLCAyKTsKICAgICAgICAgICAgICAgICBpZiAobyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChQeUxvbmdfQ2hlY2sobykpCi0gICAgICAgICAgICAgICAgICAgICAgICAqbGluZV9udW0gPSBQeUxvbmdfQVNfTE9ORyhvKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5TG9uZ19DaGVjayhvKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bSA9IF9QeUxvbmdfQXNJbnQobyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVtID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICpsaW5lX251bSA9IG51bTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChwYXJzZXJfZXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoaXJkIGl0ZW0gaW4gdGVybWluYWwgbm9kZSBtdXN0IGJlIGFuIgpAQCAtOTk1LDYgKzk4Nyw3IEBACiBWQUxJREFURVIodGVzdGxpc3RfY29tcCk7ICAgICAgIFZBTElEQVRFUih5aWVsZF9leHByKTsKIFZBTElEQVRFUihvcl90ZXN0KTsKIFZBTElEQVRFUih0ZXN0X25vY29uZCk7ICAgICAgICAgVkFMSURBVEVSKGxhbWJkZWZfbm9jb25kKTsKK1ZBTElEQVRFUih5aWVsZF9hcmcpOwogCiAjdW5kZWYgVkFMSURBVEVSCiAKQEAgLTE2NTUsMjIgKzE2NDgsNDkgQEAKIH0KIAogCi0vKiB5aWVsZF9leHByOiAneWllbGQnIFt0ZXN0bGlzdF0KKy8qIHlpZWxkX2V4cHI6ICd5aWVsZCcgW3lpZWxkX2FyZ10KICAqLwogc3RhdGljIGludAogdmFsaWRhdGVfeWllbGRfZXhwcihub2RlICp0cmVlKQogewogICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCB5aWVsZF9leHByKQotICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gMSkgfHwgKG5jaCA9PSAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJ5aWVsZCIpKTsKLQotICAgIGlmIChyZXMgJiYgKG5jaCA9PSAyKSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdGxpc3QoQ0hJTEQodHJlZSwgMSkpOwotCi0gICAgcmV0dXJuIChyZXMpOworICAgIGlmIChuY2ggPCAxIHx8IG5jaCA+IDIpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghdmFsaWRhdGVfbnR5cGUodHJlZSwgeWllbGRfZXhwcikpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgInlpZWxkIikpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChuY2ggPT0gMikgeworICAgICAgICBpZiAoIXZhbGlkYXRlX3lpZWxkX2FyZyhDSElMRCh0cmVlLCAxKSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7CiB9CiAKKy8qIHlpZWxkX2FyZzogJ2Zyb20nIHRlc3QgfCB0ZXN0bGlzdAorICovCitzdGF0aWMgaW50Cit2YWxpZGF0ZV95aWVsZF9hcmcobm9kZSAqdHJlZSkKK3sKKyAgICBpbnQgbmNoID0gTkNIKHRyZWUpOworICAgIGlmICghdmFsaWRhdGVfbnR5cGUodHJlZSwgeWllbGRfYXJnKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgc3dpdGNoIChuY2gpIHsKKyAgICAgIGNhc2UgMToKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV90ZXN0bGlzdChDSElMRCh0cmVlLCBuY2ggLSAxKSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDI6CisgICAgICAgIGlmICghdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImZyb20iKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoIXZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQogCiAvKiB5aWVsZF9zdG10OiB5aWVsZF9leHByCiAgKi8KQEAgLTIxNjUsMTYgKzIxODUsMTYgQEAKICAgICAgICAgICovCiAgICAgICAgIHRyZWUgPSBDSElMRCh0cmVlLCAwKTsKICAgICAgICAgc3dpdGNoIChUWVBFKHRyZWUpKSB7Ci0gICAgICAgICAgICBjYXNlIExFU1M6Ci0gICAgICAgICAgICBjYXNlIEdSRUFURVI6Ci0gICAgICAgICAgICBjYXNlIEVRRVFVQUw6Ci0gICAgICAgICAgICBjYXNlIEVRVUFMOgotICAgICAgICAgICAgY2FzZSBMRVNTRVFVQUw6Ci0gICAgICAgICAgICBjYXNlIEdSRUFURVJFUVVBTDoKLSAgICAgICAgICAgIGNhc2UgTk9URVFVQUw6CisgICAgICAgICAgY2FzZSBMRVNTOgorICAgICAgICAgIGNhc2UgR1JFQVRFUjoKKyAgICAgICAgICBjYXNlIEVRRVFVQUw6CisgICAgICAgICAgY2FzZSBFUVVBTDoKKyAgICAgICAgICBjYXNlIExFU1NFUVVBTDoKKyAgICAgICAgICBjYXNlIEdSRUFURVJFUVVBTDoKKyAgICAgICAgICBjYXNlIE5PVEVRVUFMOgogICAgICAgICAgICAgICByZXMgPSAxOwogICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgTkFNRToKKyAgICAgICAgICBjYXNlIE5BTUU6CiAgICAgICAgICAgICAgIHJlcyA9ICgoc3RyY21wKFNUUih0cmVlKSwgImluIikgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgIHx8IChzdHJjbXAoU1RSKHRyZWUpLCAiaXMiKSA9PSAwKSk7CiAgICAgICAgICAgICAgIGlmICghcmVzKSB7CkBAIC0yNzE5LDkgKzI3MzksOSBAQAogewogICAgIGludCBuY2ggPSBOQ0godHJlZSk7CiAgICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBhcmd1bWVudCkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikgfHwgKG5jaCA9PSAzKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpKTsKLQorICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gMSkgfHwgKG5jaCA9PSAyKSB8fCAobmNoID09IDMpKSk7CisgICAgaWYgKHJlcykgCisgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpOwogICAgIGlmIChyZXMgJiYgKG5jaCA9PSAyKSkKICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgMSkpOwogICAgIGVsc2UgaWYgKHJlcyAmJiAobmNoID09IDMpKQpAQCAtMzM1NiwxMCArMzM3NiwxMyBAQAogICAgIGNvcHlyZWcgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJjb3B5cmVnIik7CiAgICAgaWYgKGNvcHlyZWcgIT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqZnVuYywgKnBpY2tsZXI7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHBpY2tsZSk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHNlcXVlbmNlMnN0KTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX3BpY2tsZXIpOwogCi0gICAgICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGNvcHlyZWcsICJwaWNrbGUiKTsKLSAgICAgICAgcGlja2xlX2NvbnN0cnVjdG9yID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtb2R1bGUsICJzZXF1ZW5jZTJzdCIpOwotICAgICAgICBwaWNrbGVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtb2R1bGUsICJfcGlja2xlciIpOworICAgICAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChjb3B5cmVnLCAmUHlJZF9waWNrbGUpOworICAgICAgICBwaWNrbGVfY29uc3RydWN0b3IgPSBfUHlPYmplY3RfR2V0QXR0cklkKG1vZHVsZSwgJlB5SWRfc2VxdWVuY2Uyc3QpOworICAgICAgICBwaWNrbGVyID0gX1B5T2JqZWN0X0dldEF0dHJJZChtb2R1bGUsICZQeUlkX19waWNrbGVyKTsKICAgICAgICAgUHlfWElOQ1JFRihwaWNrbGVfY29uc3RydWN0b3IpOwogICAgICAgICBpZiAoKGZ1bmMgIT0gTlVMTCkgJiYgKHBpY2tsZV9jb25zdHJ1Y3RvciAhPSBOVUxMKQogICAgICAgICAgICAgJiYgKHBpY2tsZXIgIT0gTlVMTCkpIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcG9zaXhtb2R1bGUuYyBiL01vZHVsZXMvcG9zaXhtb2R1bGUuYwppbmRleCAzNGRmZjExLi45MTM1MmQ0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9wb3NpeG1vZHVsZS5jCkBAIC0zMSw2ICszMSw3IEBACiAjZW5kaWYKIAogI2lmIGRlZmluZWQoX19WTVMpCisjICAgIGVycm9yICJQRVAgMTE6IFZNUyBpcyBub3cgdW5zdXBwb3J0ZWQsIGNvZGUgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjQiCiAjICAgIGluY2x1ZGUgPHVuaXhpby5oPgogI2VuZGlmIC8qIGRlZmluZWQoX19WTVMpICovCiAKQEAgLTQ2LDYgKzQ3LDcgQEAKIAogCiAjaWYgZGVmaW5lZChQWU9TX09TMikKKyNlcnJvciAiUEVQIDExOiBPUy8yIGlzIG5vdyB1bnN1cHBvcnRlZCwgY29kZSB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNCIKICNkZWZpbmUgIElOQ0xfRE9TCiAjZGVmaW5lICBJTkNMX0RPU0VSUk9SUwogI2RlZmluZSAgSU5DTF9ET1NQUk9DRVNTCkBAIC02MCw2ICs2MiwxMCBAQAogI2luY2x1ZGUgIm9zZGVmcy5oIgogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1NZU19VSU9fSAorI2luY2x1ZGUgPHN5cy91aW8uaD4KKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2VuZGlmIC8qIEhBVkVfU1lTX1RZUEVTX0ggKi8KQEAgLTk2LDYgKzEwMiw0OCBAQAogI2luY2x1ZGUgPGxhbmdpbmZvLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU1lTX1NFTkRGSUxFX0gKKyNpbmNsdWRlIDxzeXMvc2VuZGZpbGUuaD4KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TQ0hFRF9ICisjaW5jbHVkZSA8c2NoZWQuaD4KKyNlbmRpZgorCisjaWYgIWRlZmluZWQoQ1BVX0FMTE9DKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUQUZGSU5JVFkpCisjdW5kZWYgSEFWRV9TQ0hFRF9TRVRBRkZJTklUWQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1hBVFRSX0gpICYmIGRlZmluZWQoX19HTElCQ19fKQorI2RlZmluZSBVU0VfWEFUVFJTCisjZW5kaWYKKworI2lmZGVmIFVTRV9YQVRUUlMKKyNpbmNsdWRlIDxzeXMveGF0dHIuaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0RMRkNOX0gKKyNpbmNsdWRlIDxkbGZjbi5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisjICBkZWZpbmUgVEVSTVNJWkVfVVNFX0NPTklPCisjZWxpZiBkZWZpbmVkKEhBVkVfU1lTX0lPQ1RMX0gpCisjICBpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyMgIGlmIGRlZmluZWQoSEFWRV9URVJNSU9TX0gpCisjICAgIGluY2x1ZGUgPHRlcm1pb3MuaD4KKyMgIGVuZGlmCisjICBpZiBkZWZpbmVkKFRJT0NHV0lOU1opCisjICAgIGRlZmluZSBURVJNU0laRV9VU0VfSU9DVEwKKyMgIGVuZGlmCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworCiAvKiBWYXJpb3VzIGNvbXBpbGVycyBoYXZlIG9ubHkgY2VydGFpbiBwb3NpeCBmdW5jdGlvbnMgKi8KIC8qIFhYWCBHb3NoIEkgd2lzaCB0aGVzZSB3ZXJlIGFsbCBtb3ZlZCBpbnRvIHB5Y29uZmlnLmggKi8KICNpZiBkZWZpbmVkKFBZQ0NfVkFDUFApICYmIGRlZmluZWQoUFlPU19PUzIpCkBAIC0xNTgsNiArMjA2LDkgQEAKICNlbmRpZiAgLyogISBfX1dBVENPTUNfXyB8fCBfX1FOWF9fICovCiAjZW5kaWYgLyogISBfX0lCTUNfXyAqLwogCisKKworCiAjaWZuZGVmIF9NU0NfVkVSCiAKICNpZiBkZWZpbmVkKF9fc2dpKSYmX0NPTVBJTEVSX1ZFUlNJT04+PTcwMApAQCAtMzMxLDEwICszODIsMTIgQEAKICN1bmRlZiBTVFJVQ1RfU1RBVAogI2lmIGRlZmluZWQoTVNfV0lONjQpIHx8IGRlZmluZWQoTVNfV0lORE9XUykKICMgICAgICAgZGVmaW5lIFNUQVQgd2luMzJfc3RhdAorIyAgICAgICBkZWZpbmUgTFNUQVQgd2luMzJfbHN0YXQKICMgICAgICAgZGVmaW5lIEZTVEFUIHdpbjMyX2ZzdGF0CiAjICAgICAgIGRlZmluZSBTVFJVQ1RfU1RBVCBzdHJ1Y3Qgd2luMzJfc3RhdAogI2Vsc2UKICMgICAgICAgZGVmaW5lIFNUQVQgc3RhdAorIyAgICAgICBkZWZpbmUgTFNUQVQgbHN0YXQKICMgICAgICAgZGVmaW5lIEZTVEFUIGZzdGF0CiAjICAgICAgIGRlZmluZSBTVFJVQ1RfU1RBVCBzdHJ1Y3Qgc3RhdAogI2VuZGlmCkBAIC0zNTEsNiArNDA0LDE4IEBACiAjZW5kaWYKIAogCisjaWZkZWYgTVNfV0lORE9XUworc3RhdGljIGludAord2luMzJfd2Fybl9ieXRlc19hcGkoKQoreworICAgIHJldHVybiBQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAiVGhlIFdpbmRvd3MgYnl0ZXMgQVBJIGhhcyBiZWVuIGRlcHJlY2F0ZWQsICIKKyAgICAgICAgInVzZSBVbmljb2RlIGZpbGVuYW1lcyBpbnN0ZWFkIiwKKyAgICAgICAgMSk7Cit9CisjZW5kaWYKKworCiAjaWZuZGVmIE1TX1dJTkRPV1MKIFB5T2JqZWN0ICoKIF9QeUxvbmdfRnJvbVVpZCh1aWRfdCB1aWQpCkBAIC00NzgsNiArNTQzLDM5MyBAQAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogCisjaWZkZWYgQVRfRkRDV0QKKy8qCisgKiBXaHkgdGhlIChpbnQpIGNhc3Q/ICBTb2xhcmlzIDEwIGRlZmluZXMgQVRfRkRDV0QgYXMgMHhmZmQxOTU1MyAoLTMwNDE5NjUpOworICogd2l0aG91dCB0aGUgaW50IGNhc3QsIHRoZSB2YWx1ZSBnZXRzIGludGVycHJldGVkIGFzIHVpbnQgKDQyOTE5MjUzMzEpLAorICogd2hpY2ggZG9lc24ndCBwbGF5IG5pY2VseSB3aXRoIGFsbCB0aGUgaW5pdGlhbGl6ZXIgbGluZXMgaW4gdGhpcyBmaWxlIHRoYXQKKyAqIGxvb2sgbGlrZSB0aGlzOgorICogICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgKi8KKyNkZWZpbmUgREVGQVVMVF9ESVJfRkQgKGludClBVF9GRENXRAorI2Vsc2UKKyNkZWZpbmUgREVGQVVMVF9ESVJfRkQgKC0xMDApCisjZW5kaWYKKworc3RhdGljIGludAorX2ZkX2NvbnZlcnRlcihQeU9iamVjdCAqbywgaW50ICpwLCBjb25zdCBjaGFyICphbGxvd2VkKQoreworICAgIGludCBvdmVyZmxvdzsKKyAgICBsb25nIGxvbmdfdmFsdWUgPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cobywgJm92ZXJmbG93KTsKKyAgICBpZiAoUHlGbG9hdF9DaGVjayhvKSB8fAorICAgICAgICAobG9uZ192YWx1ZSA9PSAtMSAmJiAhb3ZlcmZsb3cgJiYgUHlFcnJfT2NjdXJyZWQoKSkpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBzaG91bGQgYmUgJXMsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZCwgUHlfVFlQRShvKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAob3ZlcmZsb3cgPiAwIHx8IGxvbmdfdmFsdWUgPiBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25lZCBpbnRlZ2VyIGlzIGdyZWF0ZXIgdGhhbiBtYXhpbXVtIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAob3ZlcmZsb3cgPCAwIHx8IGxvbmdfdmFsdWUgPCBJTlRfTUlOKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25lZCBpbnRlZ2VyIGlzIGxlc3MgdGhhbiBtaW5pbXVtIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAqcCA9IChpbnQpbG9uZ192YWx1ZTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorZGlyX2ZkX2NvbnZlcnRlcihQeU9iamVjdCAqbywgdm9pZCAqcCkKK3sKKyAgICBpZiAobyA9PSBQeV9Ob25lKSB7CisgICAgICAgICooaW50ICopcCA9IERFRkFVTFRfRElSX0ZEOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIF9mZF9jb252ZXJ0ZXIobywgKGludCAqKXAsICJpbnRlZ2VyIik7Cit9CisKKworCisvKgorICogQSBQeUFyZ19QYXJzZVR1cGxlICJjb252ZXJ0ZXIiIGZ1bmN0aW9uCisgKiB0aGF0IGhhbmRsZXMgZmlsZXN5c3RlbSBwYXRocyBpbiB0aGUgbWFubmVyCisgKiBwcmVmZXJyZWQgYnkgdGhlIG9zIG1vZHVsZS4KKyAqCisgKiBwYXRoX2NvbnZlcnRlciBhY2NlcHRzIChVbmljb2RlKSBzdHJpbmdzIGFuZCB0aGVpcgorICogc3ViY2xhc3NlcywgYW5kIGJ5dGVzIGFuZCB0aGVpciBzdWJjbGFzc2VzLiAgV2hhdAorICogaXQgZG9lcyB3aXRoIHRoZSBhcmd1bWVudCBkZXBlbmRzIG9uIHRoZSBwbGF0Zm9ybToKKyAqCisgKiAgICogT24gV2luZG93cywgaWYgd2UgZ2V0IGEgKFVuaWNvZGUpIHN0cmluZyB3ZQorICogICAgIGV4dHJhY3QgdGhlIHdjaGFyX3QgKiBhbmQgcmV0dXJuIGl0OyBpZiB3ZSBnZXQKKyAqICAgICBieXRlcyB3ZSBleHRyYWN0IHRoZSBjaGFyICogYW5kIHJldHVybiB0aGF0LgorICoKKyAqICAgKiBPbiBhbGwgb3RoZXIgcGxhdGZvcm1zLCBzdHJpbmdzIGFyZSBlbmNvZGVkCisgKiAgICAgdG8gYnl0ZXMgdXNpbmcgUHlVbmljb2RlX0ZTQ29udmVydGVyLCB0aGVuIHdlCisgKiAgICAgZXh0cmFjdCB0aGUgY2hhciAqIGZyb20gdGhlIGJ5dGVzIG9iamVjdCBhbmQKKyAqICAgICByZXR1cm4gdGhhdC4KKyAqCisgKiBwYXRoX2NvbnZlcnRlciBhbHNvIG9wdGlvbmFsbHkgYWNjZXB0cyBzaWduZWQKKyAqIGludGVnZXJzIChyZXByZXNlbnRpbmcgb3BlbiBmaWxlIGRlc2NyaXB0b3JzKSBpbnN0ZWFkCisgKiBvZiBwYXRoIHN0cmluZ3MuCisgKgorICogSW5wdXQgZmllbGRzOgorICogICBwYXRoLm51bGxhYmxlCisgKiAgICAgSWYgbm9uemVybywgdGhlIHBhdGggaXMgcGVybWl0dGVkIHRvIGJlIE5vbmUuCisgKiAgIHBhdGguYWxsb3dfZmQKKyAqICAgICBJZiBub256ZXJvLCB0aGUgcGF0aCBpcyBwZXJtaXR0ZWQgdG8gYmUgYSBmaWxlIGhhbmRsZQorICogICAgIChhIHNpZ25lZCBpbnQpIGluc3RlYWQgb2YgYSBzdHJpbmcuCisgKiAgIHBhdGguZnVuY3Rpb25fbmFtZQorICogICAgIElmIG5vbi1OVUxMLCBwYXRoX2NvbnZlcnRlciB3aWxsIHVzZSB0aGF0IGFzIHRoZSBuYW1lCisgKiAgICAgb2YgdGhlIGZ1bmN0aW9uIGluIGVycm9yIG1lc3NhZ2VzLgorICogICAgIChJZiBwYXRoLmFyZ3VtZW50X25hbWUgaXMgTlVMTCBpdCBvbWl0cyB0aGUgZnVuY3Rpb24gbmFtZS4pCisgKiAgIHBhdGguYXJndW1lbnRfbmFtZQorICogICAgIElmIG5vbi1OVUxMLCBwYXRoX2NvbnZlcnRlciB3aWxsIHVzZSB0aGF0IGFzIHRoZSBuYW1lCisgKiAgICAgb2YgdGhlIHBhcmFtZXRlciBpbiBlcnJvciBtZXNzYWdlcy4KKyAqICAgICAoSWYgcGF0aC5hcmd1bWVudF9uYW1lIGlzIE5VTEwgaXQgdXNlcyAicGF0aCIuKQorICoKKyAqIE91dHB1dCBmaWVsZHM6CisgKiAgIHBhdGgud2lkZQorICogICAgIFBvaW50cyB0byB0aGUgcGF0aCBpZiBpdCB3YXMgZXhwcmVzc2VkIGFzIFVuaWNvZGUKKyAqICAgICBhbmQgd2FzIG5vdCBlbmNvZGVkLiAgKE9ubHkgdXNlZCBvbiBXaW5kb3dzLikKKyAqICAgcGF0aC5uYXJyb3cKKyAqICAgICBQb2ludHMgdG8gdGhlIHBhdGggaWYgaXQgd2FzIGV4cHJlc3NlZCBhcyBieXRlcywKKyAqICAgICBvciBpdCB3YXMgVW5pY29kZSBhbmQgd2FzIGVuY29kZWQgdG8gYnl0ZXMuCisgKiAgIHBhdGguZmQKKyAqICAgICBDb250YWlucyBhIGZpbGUgZGVzY3JpcHRvciBpZiBwYXRoLmFjY2VwdF9mZCB3YXMgdHJ1ZQorICogICAgIGFuZCB0aGUgY2FsbGVyIHByb3ZpZGVkIGEgc2lnbmVkIGludGVnZXIgaW5zdGVhZCBvZiBhbnkKKyAqICAgICBzb3J0IG9mIHN0cmluZy4KKyAqCisgKiAgICAgV0FSTklORzogaWYgeW91ciAicGF0aCIgcGFyYW1ldGVyIGlzIG9wdGlvbmFsLCBhbmQgaXMKKyAqICAgICB1bnNwZWNpZmllZCwgcGF0aF9jb252ZXJ0ZXIgd2lsbCBuZXZlciBnZXQgY2FsbGVkLgorICogICAgIFNvIGlmIHlvdSBzZXQgYWxsb3dfZmQsIHlvdSAqTVVTVCogaW5pdGlhbGl6ZSBwYXRoLmZkID0gLTEKKyAqICAgICB5b3Vyc2VsZiEKKyAqICAgcGF0aC5sZW5ndGgKKyAqICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBwYXRoIGluIGNoYXJhY3RlcnMsIGlmIHNwZWNpZmllZCBhcworICogICAgIGEgc3RyaW5nLgorICogICBwYXRoLm9iamVjdAorICogICAgIFRoZSBvcmlnaW5hbCBvYmplY3QgcGFzc2VkIGluLgorICogICBwYXRoLmNsZWFudXAKKyAqICAgICBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuICBNYXkgcG9pbnQgdG8gYSB0ZW1wb3Jhcnkgb2JqZWN0LgorICogICAgIChQYXkgbm8gYXR0ZW50aW9uIHRvIHRoZSBtYW4gYmVoaW5kIHRoZSBjdXJ0YWluLikKKyAqCisgKiAgIEF0IG1vc3Qgb25lIG9mIHBhdGgud2lkZSBvciBwYXRoLm5hcnJvdyB3aWxsIGJlIG5vbi1OVUxMLgorICogICBJZiBwYXRoIHdhcyBOb25lIGFuZCBwYXRoLm51bGxhYmxlIHdhcyBzZXQsCisgKiAgICAgb3IgaWYgcGF0aCB3YXMgYW4gaW50ZWdlciBhbmQgcGF0aC5hbGxvd19mZCB3YXMgc2V0LAorICogICAgIGJvdGggcGF0aC53aWRlIGFuZCBwYXRoLm5hcnJvdyB3aWxsIGJlIE5VTEwKKyAqICAgICBhbmQgcGF0aC5sZW5ndGggd2lsbCBiZSAwLgorICoKKyAqICAgcGF0aF9jb252ZXJ0ZXIgdGFrZXMgY2FyZSB0byBub3Qgd3JpdGUgdG8gdGhlIHBhdGhfdAorICogICB1bmxlc3MgaXQncyBzdWNjZXNzZnVsLiAgSG93ZXZlciBpdCBtdXN0IHJlc2V0IHRoZQorICogICAiY2xlYW51cCIgZmllbGQgZWFjaCB0aW1lIGl0J3MgY2FsbGVkLgorICoKKyAqIFVzZSBhcyBmb2xsb3dzOgorICogICAgICBwYXRoX3QgcGF0aDsKKyAqICAgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICogICAgICBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJiIsIHBhdGhfY29udmVydGVyLCAmcGF0aCk7CisgKiAgICAgIC8vIC4uLiB1c2UgdmFsdWVzIGZyb20gcGF0aCAuLi4KKyAqICAgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAqCisgKiAoTm90ZSB0aGF0IGlmIFB5QXJnX1BhcnNlIGZhaWxzIHlvdSBkb24ndCBuZWVkIHRvIGNhbGwKKyAqIHBhdGhfY2xlYW51cCgpLiAgSG93ZXZlciBpdCBpcyBzYWZlIHRvIGRvIHNvLikKKyAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGNoYXIgKmZ1bmN0aW9uX25hbWU7CisgICAgY2hhciAqYXJndW1lbnRfbmFtZTsKKyAgICBpbnQgbnVsbGFibGU7CisgICAgaW50IGFsbG93X2ZkOworICAgIHdjaGFyX3QgKndpZGU7CisgICAgY2hhciAqbmFycm93OworICAgIGludCBmZDsKKyAgICBQeV9zc2l6ZV90IGxlbmd0aDsKKyAgICBQeU9iamVjdCAqb2JqZWN0OworICAgIFB5T2JqZWN0ICpjbGVhbnVwOworfSBwYXRoX3Q7CisKK3N0YXRpYyB2b2lkCitwYXRoX2NsZWFudXAocGF0aF90ICpwYXRoKSB7CisgICAgaWYgKHBhdGgtPmNsZWFudXApIHsKKyAgICAgICAgUHlfREVDUkVGKHBhdGgtPmNsZWFudXApOworICAgICAgICBwYXRoLT5jbGVhbnVwID0gTlVMTDsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK3BhdGhfY29udmVydGVyKFB5T2JqZWN0ICpvLCB2b2lkICpwKSB7CisgICAgcGF0aF90ICpwYXRoID0gKHBhdGhfdCAqKXA7CisgICAgUHlPYmplY3QgKnVuaWNvZGUsICpieXRlczsKKyAgICBQeV9zc2l6ZV90IGxlbmd0aDsKKyAgICBjaGFyICpuYXJyb3c7CisKKyNkZWZpbmUgRk9STUFUX0VYQ0VQVElPTihleGMsIGZtdCkgXAorICAgIFB5RXJyX0Zvcm1hdChleGMsICIlcyVzIiBmbXQsIFwKKyAgICAgICAgcGF0aC0+ZnVuY3Rpb25fbmFtZSA/IHBhdGgtPmZ1bmN0aW9uX25hbWUgOiAiIiwgXAorICAgICAgICBwYXRoLT5mdW5jdGlvbl9uYW1lID8gIjogIiAgICAgICAgICAgICAgICA6ICIiLCBcCisgICAgICAgIHBhdGgtPmFyZ3VtZW50X25hbWUgPyBwYXRoLT5hcmd1bWVudF9uYW1lIDogInBhdGgiKQorCisgICAgLyogUHlfQ0xFQU5VUF9TVVBQT1JURUQgc3VwcG9ydCAqLworICAgIGlmIChvID09IE5VTEwpIHsKKyAgICAgICAgcGF0aF9jbGVhbnVwKHBhdGgpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICAvKiBlbnN1cmUgaXQncyBhbHdheXMgc2FmZSB0byBjYWxsIHBhdGhfY2xlYW51cCgpICovCisgICAgcGF0aC0+Y2xlYW51cCA9IE5VTEw7CisKKyAgICBpZiAobyA9PSBQeV9Ob25lKSB7CisgICAgICAgIGlmICghcGF0aC0+bnVsbGFibGUpIHsKKyAgICAgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3BlY2lmeSBOb25lIGZvciAlcyBhcmd1bWVudCIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcGF0aC0+d2lkZSA9IE5VTEw7CisgICAgICAgIHBhdGgtPm5hcnJvdyA9IE5VTEw7CisgICAgICAgIHBhdGgtPmxlbmd0aCA9IDA7CisgICAgICAgIHBhdGgtPm9iamVjdCA9IG87CisgICAgICAgIHBhdGgtPmZkID0gLTE7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChvKTsKKyAgICBpZiAodW5pY29kZSkgeworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgd2NoYXJfdCAqd2lkZTsKKyAgICAgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpOworICAgICAgICBpZiAobGVuZ3RoID4gMzI3NjcpIHsKKyAgICAgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgIiVzIHRvbyBsb25nIGZvciBXaW5kb3dzIik7CisgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHdpZGUgPSBQeVVuaWNvZGVfQXNVbmljb2RlKHVuaWNvZGUpOworICAgICAgICBpZiAoIXdpZGUpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgcGF0aC0+d2lkZSA9IHdpZGU7CisgICAgICAgIHBhdGgtPm5hcnJvdyA9IE5VTEw7CisgICAgICAgIHBhdGgtPmxlbmd0aCA9IGxlbmd0aDsKKyAgICAgICAgcGF0aC0+b2JqZWN0ID0gbzsKKyAgICAgICAgcGF0aC0+ZmQgPSAtMTsKKyAgICAgICAgcGF0aC0+Y2xlYW51cCA9IHVuaWNvZGU7CisgICAgICAgIHJldHVybiBQeV9DTEVBTlVQX1NVUFBPUlRFRDsKKyNlbHNlCisgICAgICAgIGludCBjb252ZXJ0ZWQgPSBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIodW5pY29kZSwgJmJ5dGVzKTsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgICAgICBpZiAoIWNvbnZlcnRlZCkKKyAgICAgICAgICAgIGJ5dGVzID0gTlVMTDsKKyNlbmRpZgorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0NoZWNrQnVmZmVyKG8pKQorICAgICAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21PYmplY3Qobyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJ5dGVzID0gTlVMTDsKKyAgICAgICAgaWYgKCFieXRlcykgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIGlmIChwYXRoLT5hbGxvd19mZCkgeworICAgICAgICAgICAgICAgIGludCBmZDsKKyAgICAgICAgICAgICAgICBpbnQgcmVzdWx0ID0gX2ZkX2NvbnZlcnRlcihvLCAmZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nLCBieXRlcyBvciBpbnRlZ2VyIik7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgICAgICAgICBwYXRoLT53aWRlID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgcGF0aC0+bmFycm93ID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgcGF0aC0+bGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgcGF0aC0+b2JqZWN0ID0gbzsKKyAgICAgICAgICAgICAgICAgICAgcGF0aC0+ZmQgPSBmZDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWJ5dGVzKSB7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVHlwZUVycm9yLCAiaWxsZWdhbCB0eXBlIGZvciAlcyBwYXJhbWV0ZXIiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKSB7CisgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyNlbmRpZgorCisgICAgbGVuZ3RoID0gUHlCeXRlc19HRVRfU0laRShieXRlcyk7CisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChsZW5ndGggPiBNQVhfUEFUSCkgeworICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICIlcyB0b28gbG9uZyBmb3IgV2luZG93cyIpOworICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisjZW5kaWYKKworICAgIG5hcnJvdyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKTsKKyAgICBpZiAobGVuZ3RoICE9IHN0cmxlbihuYXJyb3cpKSB7CisgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIE5VTCBjaGFyYWN0ZXIgaW4gJXMiKTsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcGF0aC0+d2lkZSA9IE5VTEw7CisgICAgcGF0aC0+bmFycm93ID0gbmFycm93OworICAgIHBhdGgtPmxlbmd0aCA9IGxlbmd0aDsKKyAgICBwYXRoLT5vYmplY3QgPSBvOworICAgIHBhdGgtPmZkID0gLTE7CisgICAgcGF0aC0+Y2xlYW51cCA9IGJ5dGVzOworICAgIHJldHVybiBQeV9DTEVBTlVQX1NVUFBPUlRFRDsKK30KKworc3RhdGljIHZvaWQKK2FyZ3VtZW50X3VuYXZhaWxhYmxlX2Vycm9yKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGNoYXIgKmFyZ3VtZW50X25hbWUpIHsKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgIiVzJXMlcyB1bmF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtIiwKKyAgICAgICAgKGZ1bmN0aW9uX25hbWUgIT0gTlVMTCkgPyBmdW5jdGlvbl9uYW1lIDogIiIsCisgICAgICAgIChmdW5jdGlvbl9uYW1lICE9IE5VTEwpID8gIjogIjogIiIsCisgICAgICAgIGFyZ3VtZW50X25hbWUpOworfQorCitzdGF0aWMgaW50CitkaXJfZmRfdW5hdmFpbGFibGUoUHlPYmplY3QgKm8sIHZvaWQgKnApCit7CisgICAgaW50IGRpcl9mZDsKKyAgICBpZiAoIWRpcl9mZF9jb252ZXJ0ZXIobywgJmRpcl9mZCkpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHsKKyAgICAgICAgYXJndW1lbnRfdW5hdmFpbGFibGVfZXJyb3IoTlVMTCwgImRpcl9mZCIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgKihpbnQgKilwID0gZGlyX2ZkOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CitmZF9zcGVjaWZpZWQoY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGZkKSB7CisgICAgaWYgKGZkID09IC0xKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGFyZ3VtZW50X3VuYXZhaWxhYmxlX2Vycm9yKGZ1bmN0aW9uX25hbWUsICJmZCIpOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Citmb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBmb2xsb3dfc3ltbGlua3MpIHsKKyAgICBpZiAoZm9sbG93X3N5bWxpbmtzKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGFyZ3VtZW50X3VuYXZhaWxhYmxlX2Vycm9yKGZ1bmN0aW9uX25hbWUsICJmb2xsb3dfc3ltbGlua3MiKTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorcGF0aF9hbmRfZGlyX2ZkX2ludmFsaWQoY2hhciAqZnVuY3Rpb25fbmFtZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKSB7CisgICAgaWYgKCFwYXRoLT5uYXJyb3cgJiYgIXBhdGgtPndpZGUgJiYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJXM6IGNhbid0IHNwZWNpZnkgZGlyX2ZkIHdpdGhvdXQgbWF0Y2hpbmcgcGF0aCIsCisgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9uYW1lKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitkaXJfZmRfYW5kX2ZkX2ludmFsaWQoY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGRpcl9mZCwgaW50IGZkKSB7CisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpICYmIChmZCAhPSAtMSkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJXM6IGNhbid0IHNwZWNpZnkgYm90aCBkaXJfZmQgYW5kIGZkIiwKKyAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX25hbWUpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2ZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZChjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcykgeworICAgIGlmICgoZmQgPiAwKSAmJiAoIWZvbGxvd19zeW1saW5rcykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJXM6IGNhbm5vdCB1c2UgZmQgYW5kIGZvbGxvd19zeW1saW5rcyB0b2dldGhlciIsCisgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9uYW1lKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitkaXJfZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBkaXJfZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpIHsKKyAgICBpZiAoKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgJiYgKCFmb2xsb3dfc3ltbGlua3MpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiVzOiBjYW5ub3QgdXNlIGRpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIHRvZ2V0aGVyIiwKKyAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX25hbWUpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIEEgaGVscGVyIHVzZWQgYnkgYSBudW1iZXIgb2YgUE9TSVgtb25seSBmdW5jdGlvbnMgKi8KKyNpZm5kZWYgTVNfV0lORE9XUworc3RhdGljIGludAorX3BhcnNlX29mZl90KFB5T2JqZWN0KiBhcmcsIHZvaWQqIGFkZHIpCit7CisjaWYgIWRlZmluZWQoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCkKKyAgICAqKChvZmZfdCopYWRkcikgPSBQeUxvbmdfQXNMb25nKGFyZyk7CisjZWxzZQorICAgICooKG9mZl90KilhZGRyKSA9IFB5TG9uZ19Bc0xvbmdMb25nKGFyZyk7CisjZW5kaWYKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIDE7Cit9CisjZW5kaWYKKwogI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMAogLyogTWljcm9zb2Z0IENSVCBpbiBWUzIwMDUgYW5kIGhpZ2hlciB3aWxsIHZlcmlmeSB0aGF0IGEgZmlsZWhhbmRsZSBpcwogICogdmFsaWQgYW5kIHJhaXNlIGFuIGFzc2VydGlvbiBpZiBpdCBpc24ndC4KQEAgLTYyOSw2ICsxMDgxLDcgQEAKIAogICAgIHJldHVybiBUUlVFOwogfQorCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAvKiBSZXR1cm4gYSBkaWN0aW9uYXJ5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIFBPU0lYIGVudmlyb25tZW50IHRhYmxlICovCkBAIC03ODUsNyArMTIzOCw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9lcnJvcl91bmljb2RlKGNoYXIqIGZ1bmN0aW9uLCBQeV9VTklDT0RFKiBmaWxlbmFtZSkKK3dpbjMyX2Vycm9yX3VuaWNvZGUoY2hhciogZnVuY3Rpb24sIHdjaGFyX3QqIGZpbGVuYW1lKQogewogICAgIC8qIFhYWCAtIHNlZSB3aW4zMl9lcnJvciBmb3IgY29tbWVudHMgb24gJ2Z1bmN0aW9uJyAqLwogICAgIGVycm5vID0gR2V0TGFzdEVycm9yKCk7CkBAIC03OTUsMjUgKzEyNDgsNDggQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGVycm5vKTsKIH0KIAotc3RhdGljIGludAotY29udmVydF90b191bmljb2RlKFB5T2JqZWN0ICoqcGFyYW0pCitzdGF0aWMgUHlPYmplY3QgKgord2luMzJfZXJyb3Jfb2JqZWN0KGNoYXIqIGZ1bmN0aW9uLCBQeU9iamVjdCogZmlsZW5hbWUpCiB7Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KCpwYXJhbSkpCi0gICAgICAgIFB5X0lOQ1JFRigqcGFyYW0pOwotICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjaygqcGFyYW0pKQotICAgICAgICAvKiBGb3IgYSBVbmljb2RlIHN1YnR5cGUgdGhhdCdzIG5vdCBhIFVuaWNvZGUgb2JqZWN0LAotICAgICAgICAgICByZXR1cm4gYSB0cnVlIFVuaWNvZGUgb2JqZWN0IHdpdGggdGhlIHNhbWUgZGF0YS4gKi8KLSAgICAgICAgKnBhcmFtID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKFB5VW5pY29kZV9BU19VTklDT0RFKCpwYXJhbSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoKnBhcmFtKSk7CisgICAgLyogWFhYIC0gc2VlIHdpbjMyX2Vycm9yIGZvciBjb21tZW50cyBvbiAnZnVuY3Rpb24nICovCisgICAgZXJybm8gPSBHZXRMYXN0RXJyb3IoKTsKKyAgICBpZiAoZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdCgKKyAgICAgICAgICAgICAgICAgICAgUHlFeGNfV2luZG93c0Vycm9yLAorICAgICAgICAgICAgICAgICAgICBlcnJubywKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUpOwogICAgIGVsc2UKLSAgICAgICAgKnBhcmFtID0gUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KCpwYXJhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaWN0Iik7Ci0gICAgcmV0dXJuICgqcGFyYW0pICE9IE5VTEw7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnJubyk7CiB9CiAKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKKy8qCisgKiBTb21lIGZ1bmN0aW9ucyByZXR1cm4gV2luMzIgZXJyb3JzLCBvdGhlcnMgb25seSBldmVyIHVzZSBwb3NpeF9lcnJvcgorICogKHRoaXMgaXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggZXhjZXB0aW9ucykKKyAqLworc3RhdGljIFB5T2JqZWN0ICoKK3BhdGhfcG9zaXhfZXJyb3IoY2hhciAqZnVuY3Rpb25fbmFtZSwgcGF0aF90ICpwYXRoKQoreworICAgIGlmIChwYXRoLT5uYXJyb3cpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2ZpbGVuYW1lKHBhdGgtPm5hcnJvdyk7CisgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitwYXRoX2Vycm9yKGNoYXIgKmZ1bmN0aW9uX25hbWUsIHBhdGhfdCAqcGF0aCkKK3sKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKHBhdGgtPm5hcnJvdykKKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yKGZ1bmN0aW9uX25hbWUsIHBhdGgtPm5hcnJvdyk7CisgICAgaWYgKHBhdGgtPndpZGUpCisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKGZ1bmN0aW9uX25hbWUsIHBhdGgtPndpZGUpOworICAgIHJldHVybiB3aW4zMl9lcnJvcihmdW5jdGlvbl9uYW1lLCBOVUxMKTsKKyNlbHNlCisgICAgcmV0dXJuIHBhdGhfcG9zaXhfZXJyb3IoZnVuY3Rpb25fbmFtZSwgcGF0aCk7CisjZW5kaWYKK30KKwogI2lmIGRlZmluZWQoUFlPU19PUzIpCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogICAgICAgICBIZWxwZXIgRnVuY3Rpb24gdG8gVHJpbSBhbmQgRm9ybWF0IE9TLzIgTWVzc2FnZXMKQEAgLTkzMiwzMiArMTQwOCw2IEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF8yc3RyKFB5T2JqZWN0ICphcmdzLAotICAgICAgICAgICBjaGFyICpmb3JtYXQsCi0gICAgICAgICAgIGludCAoKmZ1bmMpKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKSkKLXsKLSAgICBQeU9iamVjdCAqb3BhdGgxID0gTlVMTCwgKm9wYXRoMiA9IE5VTEw7Ci0gICAgY2hhciAqcGF0aDEsICpwYXRoMjsKLSAgICBpbnQgcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgyKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcGF0aDEgPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoMSk7Ci0gICAgcGF0aDIgPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoMik7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9ICgqZnVuYykocGF0aDEsIHBhdGgyKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X0RFQ1JFRihvcGF0aDEpOwotICAgIFB5X0RFQ1JFRihvcGF0aDIpOwotICAgIGlmIChyZXMgIT0gMCkKLSAgICAgICAgLyogWFhYIGhvdyB0byByZXBvcnQgYm90aCBwYXRoMSBhbmQgcGF0aDI/Pz8gKi8KLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotfQogCiAjaWZkZWYgTVNfV0lORE9XUwogc3RhdGljIFB5T2JqZWN0KgpAQCAtOTY2LDIyICsxNDE2LDI4IEBACiAgICAgICAgICAgIGNoYXIqIHdmb3JtYXQsIEJPT0wgKF9fc3RkY2FsbCAqZnVuY1cpKExQV1NUUikpCiB7CiAgICAgUHlPYmplY3QgKnVuaTsKLSAgICBjaGFyICphbnNpOworICAgIGNvbnN0IGNoYXIgKmFuc2k7CiAgICAgQk9PTCByZXN1bHQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgd2Zvcm1hdCwgJnVuaSkpCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgZWxzZSB7CisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgd2Zvcm1hdCwgJnVuaSkpCisgICAgeworICAgICAgICB3Y2hhcl90ICp3c3RyID0gUHlVbmljb2RlX0FzVW5pY29kZSh1bmkpOworICAgICAgICBpZiAod3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzdWx0ID0gZnVuY1coUHlVbmljb2RlX0FzVW5pY29kZSh1bmkpKTsKKyAgICAgICAgcmVzdWx0ID0gZnVuY1cod3N0cik7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoZnVuYywgUHlVbmljb2RlX0FzVW5pY29kZSh1bmkpKTsKKyAgICAgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoZnVuYywgdW5pKTsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9CisgICAgUHlFcnJfQ2xlYXIoKTsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBmb3JtYXQsICZhbnNpKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHdpbjMyX3dhcm5fYnl0ZXNfYXBpKCkpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXN1bHQgPSBmdW5jQShhbnNpKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwpAQCAtMTE5NiwxOCArMTY1MiwxOSBAQAogCiAvKiBHcmFiIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSBkeW5hbWljYWxseSBmcm9tIGtlcm5lbDMyICovCiBzdGF0aWMgaW50IGhhc19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUgPSAwOwotc3RhdGljIERXT1JEIChDQUxMQkFDSyAqUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlQSkoSEFORExFLCBMUFNUUiwgRFdPUkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCk7CiBzdGF0aWMgRFdPUkQgKENBTExCQUNLICpQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKShIQU5ETEUsIExQV1NUUiwgRFdPUkQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCk7CiBzdGF0aWMgaW50CiBjaGVja19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUoKQogewogICAgIEhJTlNUQU5DRSBoS2VybmVsMzI7CisgICAgRFdPUkQgKENBTExCQUNLICpQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVBKShIQU5ETEUsIExQU1RSLCBEV09SRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEKTsKKwogICAgIC8qIG9ubHkgcmVjaGVjayAqLwogICAgIGlmICghaGFzX0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSkKICAgICB7Ci0gICAgICAgIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZSgiS0VSTkVMMzIiKTsKKyAgICAgICAgaEtlcm5lbDMyID0gR2V0TW9kdWxlSGFuZGxlVyhMIktFUk5FTDMyIik7CiAgICAgICAgICooRkFSUFJPQyopJlB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZUEgPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlQSIpOwogICAgICAgICAqKEZBUlBST0MqKSZQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLApAQCAtMTUxNCw3ICsxOTcxLDEwIEBACiAgICAgSEFORExFIGg7CiAgICAgaW50IHR5cGU7CiAKLSAgICBoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlX251bWJlcik7CisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmlsZV9udW1iZXIpKQorICAgICAgICBoID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisgICAgZWxzZQorICAgICAgICBoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlX251bWJlcik7CiAKICAgICAvKiBQcm90b2NvbCB2aW9sYXRpb246IHdlIGV4cGxpY2l0bHkgY2xlYXIgZXJybm8sIGluc3RlYWQgb2YKICAgICAgICBzZXR0aW5nIGl0IHRvIGEgUE9TSVggZXJyb3IuIENhbGxlcnMgc2hvdWxkIHVzZSBHZXRMYXN0RXJyb3IuICovCkBAIC0xNTU4LDcgKzIwMTgsNyBAQAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogUHlEb2NfU1RSVkFSKHN0YXRfcmVzdWx0X19kb2NfXywKLSJzdGF0X3Jlc3VsdDogUmVzdWx0IGZyb20gc3RhdCBvciBsc3RhdC5cblxuXAorInN0YXRfcmVzdWx0OiBSZXN1bHQgZnJvbSBzdGF0LCBmc3RhdCwgb3IgbHN0YXQuXG5cblwKIFRoaXMgb2JqZWN0IG1heSBiZSBhY2Nlc3NlZCBlaXRoZXIgYXMgYSB0dXBsZSBvZlxuXAogICAobW9kZSwgaW5vLCBkZXYsIG5saW5rLCB1aWQsIGdpZCwgc2l6ZSwgYXRpbWUsIG10aW1lLCBjdGltZSlcblwKIG9yIHZpYSB0aGUgYXR0cmlidXRlcyBzdF9tb2RlLCBzdF9pbm8sIHN0X2Rldiwgc3RfbmxpbmssIHN0X3VpZCwgYW5kIHNvIG9uLlxuXApAQCAtMTU4Myw2ICsyMDQzLDkgQEAKICAgICB7InN0X2F0aW1lIiwgICAidGltZSBvZiBsYXN0IGFjY2VzcyJ9LAogICAgIHsic3RfbXRpbWUiLCAgICJ0aW1lIG9mIGxhc3QgbW9kaWZpY2F0aW9uIn0sCiAgICAgeyJzdF9jdGltZSIsICAgInRpbWUgb2YgbGFzdCBjaGFuZ2UifSwKKyAgICB7InN0X2F0aW1lX25zIiwgICAidGltZSBvZiBsYXN0IGFjY2VzcyBpbiBuYW5vc2Vjb25kcyJ9LAorICAgIHsic3RfbXRpbWVfbnMiLCAgICJ0aW1lIG9mIGxhc3QgbW9kaWZpY2F0aW9uIGluIG5hbm9zZWNvbmRzIn0sCisgICAgeyJzdF9jdGltZV9ucyIsICAgInRpbWUgb2YgbGFzdCBjaGFuZ2UgaW4gbmFub3NlY29uZHMifSwKICNpZmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0JMS1NJWkUKICAgICB7InN0X2Jsa3NpemUiLCAiYmxvY2tzaXplIGZvciBmaWxlc3lzdGVtIEkvTyJ9LAogI2VuZGlmCkBAIC0xNjA1LDkgKzIwNjgsOSBAQAogfTsKIAogI2lmZGVmIEhBVkVfU1RSVUNUX1NUQVRfU1RfQkxLU0laRQotI2RlZmluZSBTVF9CTEtTSVpFX0lEWCAxMworI2RlZmluZSBTVF9CTEtTSVpFX0lEWCAxNgogI2Vsc2UKLSNkZWZpbmUgU1RfQkxLU0laRV9JRFggMTIKKyNkZWZpbmUgU1RfQkxLU0laRV9JRFggMTUKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9TVFJVQ1RfU1RBVF9TVF9CTE9DS1MKQEAgLTE2NzYsOSArMjEzOSwzOSBAQAogICAgIDEwCiB9OwogCisjaWYgZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQorUHlEb2NfU1RSVkFSKHdhaXRpZF9yZXN1bHRfX2RvY19fLAorIndhaXRpZF9yZXN1bHQ6IFJlc3VsdCBmcm9tIHdhaXRpZC5cblxuXAorVGhpcyBvYmplY3QgbWF5IGJlIGFjY2Vzc2VkIGVpdGhlciBhcyBhIHR1cGxlIG9mXG5cCisgIChzaV9waWQsIHNpX3VpZCwgc2lfc2lnbm8sIHNpX3N0YXR1cywgc2lfY29kZSksXG5cCitvciB2aWEgdGhlIGF0dHJpYnV0ZXMgc2lfcGlkLCBzaV91aWQsIGFuZCBzbyBvbi5cblwKK1xuXAorU2VlIG9zLndhaXRpZCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iKTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgd2FpdGlkX3Jlc3VsdF9maWVsZHNbXSA9IHsKKyAgICB7InNpX3BpZCIsICB9LAorICAgIHsic2lfdWlkIiwgfSwKKyAgICB7InNpX3NpZ25vIiwgfSwKKyAgICB7InNpX3N0YXR1cyIsICB9LAorICAgIHsic2lfY29kZSIsIH0sCisgICAgezB9Cit9OworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIHdhaXRpZF9yZXN1bHRfZGVzYyA9IHsKKyAgICAid2FpdGlkX3Jlc3VsdCIsIC8qIG5hbWUgKi8KKyAgICB3YWl0aWRfcmVzdWx0X19kb2NfXywgLyogZG9jICovCisgICAgd2FpdGlkX3Jlc3VsdF9maWVsZHMsCisgICAgNQorfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgV2FpdGlkUmVzdWx0VHlwZTsKKyNlbmRpZgorCiBzdGF0aWMgaW50IGluaXRpYWxpemVkOwogc3RhdGljIFB5VHlwZU9iamVjdCBTdGF0UmVzdWx0VHlwZTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgU3RhdFZGU1Jlc3VsdFR5cGU7CisjaWYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFBBUkFNKSB8fCBkZWZpbmVkKEhBVkVfU0NIRURfU0VUU0NIRURVTEVSKQorc3RhdGljIFB5VHlwZU9iamVjdCBTY2hlZFBhcmFtVHlwZTsKKyNlbmRpZgogc3RhdGljIG5ld2Z1bmMgc3RydWN0c2VxX25ldzsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE3MjEsNiArMjIxNCwxMCBAQAogICAgIGludCBuZXd2YWwgPSAtMTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOnN0YXRfZmxvYXRfdGltZXMiLCAmbmV3dmFsKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAic3RhdF9mbG9hdF90aW1lcygpIGlzIGRlcHJlY2F0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgMSkpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChuZXd2YWwgPT0gLTEpCiAgICAgICAgIC8qIFJldHVybiBvbGQgdmFsdWUgKi8KICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhfc3RhdF9mbG9hdF90aW1lcyk7CkBAIC0xNzI5LDI1ICsyMjI2LDUwIEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqYmlsbGlvbiA9IE5VTEw7CisKIHN0YXRpYyB2b2lkCiBmaWxsX3RpbWUoUHlPYmplY3QgKnYsIGludCBpbmRleCwgdGltZV90IHNlYywgdW5zaWduZWQgbG9uZyBuc2VjKQogewotICAgIFB5T2JqZWN0ICpmdmFsLCppdmFsOwotI2lmIFNJWkVPRl9USU1FX1QgPiBTSVpFT0ZfTE9ORwotICAgIGl2YWwgPSBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpc2VjKTsKLSNlbHNlCi0gICAgaXZhbCA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylzZWMpOwotI2VuZGlmCi0gICAgaWYgKCFpdmFsKQotICAgICAgICByZXR1cm47CisgICAgUHlPYmplY3QgKnMgPSBfUHlMb25nX0Zyb21UaW1lX3Qoc2VjKTsKKyAgICBQeU9iamVjdCAqbnNfZnJhY3Rpb25hbCA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKG5zZWMpOworICAgIFB5T2JqZWN0ICpzX2luX25zID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbnNfdG90YWwgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmbG9hdF9zID0gTlVMTDsKKworICAgIGlmICghKHMgJiYgbnNfZnJhY3Rpb25hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIHNfaW5fbnMgPSBQeU51bWJlcl9NdWx0aXBseShzLCBiaWxsaW9uKTsKKyAgICBpZiAoIXNfaW5fbnMpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIG5zX3RvdGFsID0gUHlOdW1iZXJfQWRkKHNfaW5fbnMsIG5zX2ZyYWN0aW9uYWwpOworICAgIGlmICghbnNfdG90YWwpCisgICAgICAgIGdvdG8gZXhpdDsKKwogICAgIGlmIChfc3RhdF9mbG9hdF90aW1lcykgewotICAgICAgICBmdmFsID0gUHlGbG9hdF9Gcm9tRG91YmxlKHNlYyArIDFlLTkqbnNlYyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZnZhbCA9IGl2YWw7Ci0gICAgICAgIFB5X0lOQ1JFRihmdmFsKTsKKyAgICAgICAgZmxvYXRfcyA9IFB5RmxvYXRfRnJvbURvdWJsZShzZWMgKyAxZS05Km5zZWMpOworICAgICAgICBpZiAoIWZsb2F0X3MpCisgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgaW5kZXgsIGl2YWwpOwotICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgaW5kZXgrMywgZnZhbCk7CisgICAgZWxzZSB7CisgICAgICAgIGZsb2F0X3MgPSBzOworICAgICAgICBQeV9JTkNSRUYoZmxvYXRfcyk7CisgICAgfQorCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCBpbmRleCwgcyk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCBpbmRleCszLCBmbG9hdF9zKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIGluZGV4KzYsIG5zX3RvdGFsKTsKKyAgICBzID0gTlVMTDsKKyAgICBmbG9hdF9zID0gTlVMTDsKKyAgICBuc190b3RhbCA9IE5VTEw7CitleGl0OgorICAgIFB5X1hERUNSRUYocyk7CisgICAgUHlfWERFQ1JFRihuc19mcmFjdGlvbmFsKTsKKyAgICBQeV9YREVDUkVGKHNfaW5fbnMpOworICAgIFB5X1hERUNSRUYobnNfdG90YWwpOworICAgIFB5X1hERUNSRUYoZmxvYXRfcyk7CiB9CiAKIC8qIHBhY2sgYSBzeXN0ZW0gc3RhdCBDIHN0cnVjdHVyZSBpbnRvIHRoZSBQeXRob24gc3RhdCB0dXBsZQpAQCAtMTg1NSwxMjYgKzIzNzcsMjM4IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9kb19zdGF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywKLSAgICAgICAgICAgICAgY2hhciAqZm9ybWF0LAotI2lmZGVmIF9fVk1TCi0gICAgICAgICAgICAgIGludCAoKnN0YXRmdW5jKShjb25zdCBjaGFyICosIFNUUlVDVF9TVEFUICosIC4uLiksCi0jZWxzZQotICAgICAgICAgICAgICBpbnQgKCpzdGF0ZnVuYykoY29uc3QgY2hhciAqLCBTVFJVQ1RfU1RBVCAqKSwKLSNlbmRpZgotICAgICAgICAgICAgICBjaGFyICp3Zm9ybWF0LAotICAgICAgICAgICAgICBpbnQgKCp3c3RhdGZ1bmMpKGNvbnN0IFB5X1VOSUNPREUgKiwgU1RSVUNUX1NUQVQgKikpCi17Ci0gICAgU1RSVUNUX1NUQVQgc3Q7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7Ci0gICAgaW50IHJlczsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIFB5VW5pY29kZU9iamVjdCAqcG87Ci0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgd2Zvcm1hdCwgJnBvKSkgewotICAgICAgICBQeV9VTklDT0RFICp3cGF0aCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHBvKTsKLQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICAvKiBQeVVuaWNvZGVfQVNfVU5JQ09ERSByZXN1bHQgT0sgd2l0aG91dAotICAgICAgICAgICAgICAgdGhyZWFkIGxvY2sgYXMgaXQgaXMgYSBzaW1wbGUgZGVyZWZlcmVuY2UuICovCi0gICAgICAgIHJlcyA9IHdzdGF0ZnVuYyh3cGF0aCwgJnN0KTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgICAgICBpZiAocmVzICE9IDApCi0gICAgICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgic3RhdCIsIHdwYXRoKTsKLSAgICAgICAgcmV0dXJuIF9weXN0YXRfZnJvbXN0cnVjdHN0YXQoJnN0KTsKLSAgICB9Ci0gICAgLyogRHJvcCB0aGUgYXJndW1lbnQgcGFyc2luZyBlcnJvciBhcyBuYXJyb3cgc3RyaW5ncwotICAgICAgIGFyZSBhbHNvIHZhbGlkLiAqLwotICAgIFB5RXJyX0NsZWFyKCk7Ci0jZW5kaWYKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSAoKnN0YXRmdW5jKShwYXRoLCAmc3QpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAocmVzICE9IDApIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIHJlc3VsdCA9IHdpbjMyX2Vycm9yKCJzdGF0IiwgcGF0aCk7Ci0jZWxzZQotICAgICAgICByZXN1bHQgPSBwb3NpeF9lcnJvcl93aXRoX2ZpbGVuYW1lKHBhdGgpOwotI2VuZGlmCi0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gX3B5c3RhdF9mcm9tc3RydWN0c3RhdCgmc3QpOwotCi0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiAvKiBQT1NJWCBtZXRob2RzICovCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9hY2Nlc3NfX2RvY19fLAotImFjY2VzcyhwYXRoLCBtb2RlKSAtPiBUcnVlIGlmIGdyYW50ZWQsIEZhbHNlIG90aGVyd2lzZVxuXG5cCi1Vc2UgdGhlIHJlYWwgdWlkL2dpZCB0byB0ZXN0IGZvciBhY2Nlc3MgdG8gYSBwYXRoLiAgTm90ZSB0aGF0IG1vc3RcblwKLW9wZXJhdGlvbnMgd2lsbCB1c2UgdGhlIGVmZmVjdGl2ZSB1aWQvZ2lkLCB0aGVyZWZvcmUgdGhpcyByb3V0aW5lIGNhblxuXAotYmUgdXNlZCBpbiBhIHN1aWQvc2dpZCBlbnZpcm9ubWVudCB0byB0ZXN0IGlmIHRoZSBpbnZva2luZyB1c2VyIGhhcyB0aGVcblwKLXNwZWNpZmllZCBhY2Nlc3MgdG8gdGhlIHBhdGguICBUaGUgbW9kZSBhcmd1bWVudCBjYW4gYmUgRl9PSyB0byB0ZXN0XG5cCi1leGlzdGVuY2UsIG9yIHRoZSBpbmNsdXNpdmUtT1Igb2YgUl9PSywgV19PSywgYW5kIFhfT0suIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9hY2Nlc3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfZG9fc3RhdChjaGFyICpmdW5jdGlvbl9uYW1lLCBwYXRoX3QgKnBhdGgsCisgICAgICAgICAgICAgIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7CisgICAgU1RSVUNUX1NUQVQgc3Q7CisgICAgaW50IHJlc3VsdDsKKworI2lmICFkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKEhBVkVfRlNUQVRBVCkgJiYgIWRlZmluZWQoSEFWRV9MU1RBVCkKKyAgICBpZiAoZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZChmdW5jdGlvbl9uYW1lLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorCisgICAgaWYgKHBhdGhfYW5kX2Rpcl9mZF9pbnZhbGlkKCJzdGF0IiwgcGF0aCwgZGlyX2ZkKSB8fAorICAgICAgICBkaXJfZmRfYW5kX2ZkX2ludmFsaWQoInN0YXQiLCBkaXJfZmQsIHBhdGgtPmZkKSB8fAorICAgICAgICBmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoInN0YXQiLCBwYXRoLT5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgaWYgKHBhdGgtPmZkICE9IC0xKQorICAgICAgICByZXN1bHQgPSBGU1RBVChwYXRoLT5mZCwgJnN0KTsKKyAgICBlbHNlCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChwYXRoLT53aWRlKSB7CisgICAgICAgIGlmIChmb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICByZXN1bHQgPSB3aW4zMl9zdGF0X3cocGF0aC0+d2lkZSwgJnN0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gd2luMzJfbHN0YXRfdyhwYXRoLT53aWRlLCAmc3QpOworICAgIH0KKyAgICBlbHNlCisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfTFNUQVQpIHx8IGRlZmluZWQoTVNfV0lORE9XUykKKyAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpKQorICAgICAgICByZXN1bHQgPSBMU1RBVChwYXRoLT5uYXJyb3csICZzdCk7CisgICAgZWxzZQorI2VuZGlmCisjaWZkZWYgSEFWRV9GU1RBVEFUCisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8ICFmb2xsb3dfc3ltbGlua3MpCisgICAgICAgIHJlc3VsdCA9IGZzdGF0YXQoZGlyX2ZkLCBwYXRoLT5uYXJyb3csICZzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3MgPyAwIDogQVRfU1lNTElOS19OT0ZPTExPVyk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IFNUQVQocGF0aC0+bmFycm93LCAmc3QpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKCJzdGF0IiwgcGF0aCk7CisKKyAgICByZXR1cm4gX3B5c3RhdF9mcm9tc3RydWN0c3RhdCgmc3QpOworfQorCitQeURvY19TVFJWQVIocG9zaXhfc3RhdF9fZG9jX18sCisic3RhdChwYXRoLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpIC0+IHN0YXQgcmVzdWx0XG5cblwKK1BlcmZvcm0gYSBzdGF0IHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBwYXRoLlxuXAorXG5cCitwYXRoIG1heSBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIGEgc3RyaW5nIG9yIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorICBkaXJfZmQgbWF5IG5vdCBiZSBzdXBwb3J0ZWQgb24geW91ciBwbGF0Zm9ybTsgaWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nXG5cCisgIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCisgIGxpbmssIHN0YXQgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlIHRoZVxuXAorICBsaW5rIHBvaW50cyB0by5cblwKK0l0IGlzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoIGFzXG5cCisgIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc3RhdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlOworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIHBhdGguYWxsb3dfZmQgPSAxOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJnA6c3RhdCIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisjaWZkZWYgSEFWRV9GU1RBVEFUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQsCisjZWxzZQorICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQsCisjZW5kaWYKKyAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybl92YWx1ZSA9IHBvc2l4X2RvX3N0YXQoInN0YXQiLCAmcGF0aCwgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X2xzdGF0X19kb2NfXywKKyJsc3RhdChwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkgLT4gc3RhdCByZXN1bHRcblxuXAorTGlrZSBzdGF0KCksIGJ1dCBkbyBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLlxuXAorRXF1aXZhbGVudCB0byBzdGF0KHBhdGgsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9sc3RhdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAwOworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOmxzdGF0Iiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyNpZmRlZiBIQVZFX0ZTVEFUQVQKKyAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAorI2Vsc2UKKyAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCisjZW5kaWYKKyAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuX3ZhbHVlID0gcG9zaXhfZG9fc3RhdCgic3RhdCIsICZwYXRoLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIocG9zaXhfYWNjZXNzX19kb2NfXywKKyJhY2Nlc3MocGF0aCwgbW9kZSwgKiwgZGlyX2ZkPU5vbmUsIGVmZmVjdGl2ZV9pZHM9RmFsc2UsXAorIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCitVc2UgdGhlIHJlYWwgdWlkL2dpZCB0byB0ZXN0IGZvciBhY2Nlc3MgdG8gYSBwYXRoLiAgUmV0dXJucyBUcnVlIGlmIGdyYW50ZWQsXG5cCitGYWxzZSBvdGhlcndpc2UuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitJZiBlZmZlY3RpdmVfaWRzIGlzIFRydWUsIGFjY2VzcyB3aWxsIHVzZSB0aGUgZWZmZWN0aXZlIHVpZC9naWQgaW5zdGVhZCBvZlxuXAorICB0aGUgcmVhbCB1aWQvZ2lkLlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCisgIGxpbmssIGFjY2VzcyB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG5cCisgIGxpbmsgcG9pbnRzIHRvLlxuXAorZGlyX2ZkLCBlZmZlY3RpdmVfaWRzLCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWRcblwKKyAgb24geW91ciBwbGF0Zm9ybS4gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYVxuXAorICBOb3RJbXBsZW1lbnRlZEVycm9yLlxuXAorXG5cCitOb3RlIHRoYXQgbW9zdCBvcGVyYXRpb25zIHdpbGwgdXNlIHRoZSBlZmZlY3RpdmUgdWlkL2dpZCwgdGhlcmVmb3JlIHRoaXNcblwKKyAgcm91dGluZSBjYW4gYmUgdXNlZCBpbiBhIHN1aWQvc2dpZCBlbnZpcm9ubWVudCB0byB0ZXN0IGlmIHRoZSBpbnZva2luZyB1c2VyXG5cCisgIGhhcyB0aGUgc3BlY2lmaWVkIGFjY2VzcyB0byB0aGUgcGF0aC5cblwKK1RoZSBtb2RlIGFyZ3VtZW50IGNhbiBiZSBGX09LIHRvIHRlc3QgZXhpc3RlbmNlLCBvciB0aGUgaW5jbHVzaXZlLU9SXG5cCisgIG9mIFJfT0ssIFdfT0ssIGFuZCBYX09LLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfYWNjZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsICJlZmZlY3RpdmVfaWRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoOwogICAgIGludCBtb2RlOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZWZmZWN0aXZlX2lkcyA9IDA7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgRFdPUkQgYXR0cjsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnBvOwotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVaTphY2Nlc3MiLCAmcG8sICZtb2RlKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIC8qIFB5VW5pY29kZV9BU19VTklDT0RFIE9LIHdpdGhvdXQgdGhyZWFkIGxvY2sgYXMKLSAgICAgICAgICAgaXQgaXMgYSBzaW1wbGUgZGVyZWZlcmVuY2UuICovCi0gICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1coUHlVbmljb2RlX0FTX1VOSUNPREUocG8pKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgZ290byBmaW5pc2g7Ci0gICAgfQotICAgIC8qIERyb3AgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZXJyb3IgYXMgbmFycm93IHN0cmluZ3MKLSAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICBQeUVycl9DbGVhcigpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpOmFjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci1maW5pc2g6Ci0gICAgaWYgKGF0dHIgPT0gMHhGRkZGRkZGRikKLSAgICAgICAgLyogRmlsZSBkb2VzIG5vdCBleGlzdCwgb3IgY2Fubm90IHJlYWQgYXR0cmlidXRlcyAqLwotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwotICAgIC8qIEFjY2VzcyBpcyBwb3NzaWJsZSBpZiBlaXRoZXIgd3JpdGUgYWNjZXNzIHdhc24ndCByZXF1ZXN0ZWQsIG9yCi0gICAgICAgdGhlIGZpbGUgaXNuJ3QgcmVhZC1vbmx5LCBvciBpZiBpdCdzIGEgZGlyZWN0b3J5LCBhcyB0aGVyZSBhcmUKLSAgICAgICBubyByZWFkLW9ubHkgZGlyZWN0b3JpZXMgb24gV2luZG93cy4gKi8KLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKCEobW9kZSAmIDIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAhKGF0dHIgJiBGSUxFX0FUVFJJQlVURV9SRUFET05MWSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChhdHRyICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSk7CiAjZWxzZQotICAgIGludCByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6YWNjZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgsICZtb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBhY2Nlc3MocGF0aCwgbW9kZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzID09IDApOworICAgIGludCByZXN1bHQ7CiAjZW5kaWYKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8JE8mcHA6YWNjZXNzIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsCisjaWZkZWYgSEFWRV9GQUNDRVNTQVQKKyAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZCwKKyNlbHNlCisgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZCwKKyNlbmRpZgorICAgICAgICAmZWZmZWN0aXZlX2lkcywgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisjaWZuZGVmIEhBVkVfRkFDQ0VTU0FUCisgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImFjY2VzcyIsIGZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIGlmIChlZmZlY3RpdmVfaWRzKSB7CisgICAgICAgIGFyZ3VtZW50X3VuYXZhaWxhYmxlX2Vycm9yKCJhY2Nlc3MiLCAiZWZmZWN0aXZlX2lkcyIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChwYXRoLndpZGUgIT0gTlVMTCkKKyAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLndpZGUpOworICAgIGVsc2UKKyAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoLm5hcnJvdyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIC8qCisgICAgICogQWNjZXNzIGlzIHBvc3NpYmxlIGlmCisgICAgICogICAqIHdlIGRpZG4ndCBnZXQgYSAtMSwgYW5kCisgICAgICogICAgICogd3JpdGUgYWNjZXNzIHdhc24ndCByZXF1ZXN0ZWQsCisgICAgICogICAgICogb3IgdGhlIGZpbGUgaXNuJ3QgcmVhZC1vbmx5LAorICAgICAqICAgICAqIG9yIGl0J3MgYSBkaXJlY3RvcnkuCisgICAgICogKERpcmVjdG9yaWVzIGNhbm5vdCBiZSByZWFkLW9ubHkgb24gV2luZG93cy4pCisgICAgKi8KKyAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoCisgICAgICAgIChhdHRyICE9IDB4RkZGRkZGRkYpICYmCisgICAgICAgICAgICAoIShtb2RlICYgMikgfHwKKyAgICAgICAgICAgICEoYXR0ciAmIEZJTEVfQVRUUklCVVRFX1JFQURPTkxZKSB8fAorICAgICAgICAgICAgKGF0dHIgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpKSk7CisjZWxzZQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfRkFDQ0VTU0FUCisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8CisgICAgICAgIGVmZmVjdGl2ZV9pZHMgfHwKKyAgICAgICAgIWZvbGxvd19zeW1saW5rcykgeworICAgICAgICBpbnQgZmxhZ3MgPSAwOworICAgICAgICBpZiAoIWZvbGxvd19zeW1saW5rcykKKyAgICAgICAgICAgIGZsYWdzIHw9IEFUX1NZTUxJTktfTk9GT0xMT1c7CisgICAgICAgIGlmIChlZmZlY3RpdmVfaWRzKQorICAgICAgICAgICAgZmxhZ3MgfD0gQVRfRUFDQ0VTUzsKKyAgICAgICAgcmVzdWx0ID0gZmFjY2Vzc2F0KGRpcl9mZCwgcGF0aC5uYXJyb3csIG1vZGUsIGZsYWdzKTsKKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IGFjY2VzcyhwYXRoLm5hcnJvdywgbW9kZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoIXJlc3VsdCk7CisjZW5kaWYKKworI2lmbmRlZiBIQVZFX0ZBQ0NFU1NBVAorZXhpdDoKKyNlbmRpZgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAogI2lmbmRlZiBGX09LCkBAIC0yMDQ1LDI3ICsyNjc5LDY2IEBACiAKIFB5RG9jX1NUUlZBUihwb3NpeF9jaGRpcl9fZG9jX18sCiAiY2hkaXIocGF0aClcblxuXAotQ2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBzcGVjaWZpZWQgcGF0aC4iKTsKK0NoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgc3BlY2lmaWVkIHBhdGguXG5cCitcblwKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2NoZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X2NoZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgcmV0dXJuIHdpbjMyXzFzdHIoYXJncywgImNoZGlyIiwgInk6Y2hkaXIiLCB3aW4zMl9jaGRpciwgIlU6Y2hkaXIiLCB3aW4zMl93Y2hkaXIpOwotI2VsaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykKLSAgICByZXR1cm4gcG9zaXhfMXN0cihhcmdzLCAiTyY6Y2hkaXIiLCBfY2hkaXIyKTsKLSNlbGlmIGRlZmluZWQoX19WTVMpCi0gICAgcmV0dXJuIHBvc2l4XzFzdHIoYXJncywgIk8mOmNoZGlyIiwgKGludCAoKikoY29uc3QgY2hhciAqKSljaGRpcik7Ci0jZWxzZQotICAgIHJldHVybiBwb3NpeF8xc3RyKGFyZ3MsICJPJjpjaGRpciIsIGNoZGlyKTsKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisjaWZkZWYgSEFWRV9GQ0hESVIKKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKICNlbmRpZgorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmNoZGlyIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aAorICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKHBhdGgud2lkZSkKKyAgICAgICAgcmVzdWx0ID0gd2luMzJfd2NoZGlyKHBhdGgud2lkZSk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSB3aW4zMl9jaGRpcihwYXRoLm5hcnJvdyk7CisgICAgcmVzdWx0ID0gIXJlc3VsdDsgLyogb24gdW5peCwgc3VjY2VzcyA9IDAsIG9uIHdpbmRvd3MsIHN1Y2Nlc3MgPSAhMCAqLworI2VsaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykKKyAgICByZXN1bHQgPSBfY2hkaXIyKHBhdGgubmFycm93KTsKKyNlbHNlCisjaWZkZWYgSEFWRV9GQ0hESVIKKyAgICBpZiAocGF0aC5mZCAhPSAtMSkKKyAgICAgICAgcmVzdWx0ID0gZmNoZGlyKHBhdGguZmQpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBjaGRpcihwYXRoLm5hcnJvdyk7CisjZW5kaWYKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJjaGRpciIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAogI2lmZGVmIEhBVkVfRkNIRElSCiBQeURvY19TVFJWQVIocG9zaXhfZmNoZGlyX19kb2NfXywKLSJmY2hkaXIoZmlsZGVzKVxuXG5cCi1DaGFuZ2UgdG8gdGhlIGRpcmVjdG9yeSBvZiB0aGUgZ2l2ZW4gZmlsZSBkZXNjcmlwdG9yLiAgZmlsZGVzIG11c3QgYmVcblwKLW9wZW5lZCBvbiBhIGRpcmVjdG9yeSwgbm90IGEgZmlsZS4iKTsKKyJmY2hkaXIoZmQpXG5cblwKK0NoYW5nZSB0byB0aGUgZGlyZWN0b3J5IG9mIHRoZSBnaXZlbiBmaWxlIGRlc2NyaXB0b3IuICBmZCBtdXN0IGJlXG5cCitvcGVuZWQgb24gYSBkaXJlY3RvcnksIG5vdCBhIGZpbGUuICBFcXVpdmFsZW50IHRvIG9zLmNoZGlyKGZkKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X2ZjaGRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZkb2JqKQpAQCAtMjA3Niw4NyArMjc0OSwxNTUgQEAKIAogCiBQeURvY19TVFJWQVIocG9zaXhfY2htb2RfX2RvY19fLAotImNobW9kKHBhdGgsIG1vZGUpXG5cblwKLUNoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIGEgZmlsZS4iKTsKKyJjaG1vZChwYXRoLCBtb2RlLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKK0NoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIGEgZmlsZS5cblwKK1xuXAorcGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cblwKK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCBjaG1vZCB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZSB0aGVcblwKKyAgbGluayBwb2ludHMgdG8uXG5cCitJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhc1xuXAorICBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKK2Rpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jaG1vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9jaG1vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoID0gTlVMTDsKLSAgICBjaGFyICpwYXRoID0gTlVMTDsKLSAgICBpbnQgaTsKLSAgICBpbnQgcmVzOworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBtb2RlOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgRFdPUkQgYXR0cjsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnBvOwotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVaXw6Y2htb2QiLCAmcG8sICZpKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1coUHlVbmljb2RlX0FTX1VOSUNPREUocG8pKTsKLSAgICAgICAgaWYgKGF0dHIgIT0gMHhGRkZGRkZGRikgewotICAgICAgICAgICAgaWYgKGkgJiBfU19JV1JJVEUpCi0gICAgICAgICAgICAgICAgYXR0ciAmPSB+RklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXR0ciB8PSBGSUxFX0FUVFJJQlVURV9SRUFET05MWTsKLSAgICAgICAgICAgIHJlcyA9IFNldEZpbGVBdHRyaWJ1dGVzVyhQeVVuaWNvZGVfQVNfVU5JQ09ERShwbyksIGF0dHIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmICghcmVzKQotICAgICAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoImNobW9kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHBvKSk7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgfQotICAgIC8qIERyb3AgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZXJyb3IgYXMgbmFycm93IHN0cmluZ3MKLSAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICBQeUVycl9DbGVhcigpOworI2VuZGlmCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpjaG1vZCIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wYXRoLCAmaSkpCisjaWZkZWYgSEFWRV9GQ0hNT0RBVAorICAgIGludCBmY2htb2RhdF9ub2ZvbGxvd191bnN1cHBvcnRlZCA9IDA7CisjZW5kaWYKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyNpZmRlZiBIQVZFX0ZDSE1PRAorICAgIHBhdGguYWxsb3dfZmQgPSAxOworI2VuZGlmCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpfCRPJnA6Y2htb2QiLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAmbW9kZSwKKyNpZmRlZiBIQVZFX0ZDSE1PREFUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQsCisjZWxzZQorICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQsCisjZW5kaWYKKyAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKKworI2lmICEoZGVmaW5lZChIQVZFX0ZDSE1PREFUKSB8fCBkZWZpbmVkKEhBVkVfTENITU9EKSkKKyAgICBpZiAoZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgiY2htb2QiLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisjZW5kaWYKKworI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoKTsKLSAgICBpZiAoYXR0ciAhPSAweEZGRkZGRkZGKSB7Ci0gICAgICAgIGlmIChpICYgX1NfSVdSSVRFKQorICAgIGlmIChwYXRoLndpZGUpCisgICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC53aWRlKTsKKyAgICBlbHNlCisgICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc0EocGF0aC5uYXJyb3cpOworICAgIGlmIChhdHRyID09IDB4RkZGRkZGRkYpCisgICAgICAgIHJlc3VsdCA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChtb2RlICYgX1NfSVdSSVRFKQogICAgICAgICAgICAgYXR0ciAmPSB+RklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGF0dHIgfD0gRklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7Ci0gICAgICAgIHJlcyA9IFNldEZpbGVBdHRyaWJ1dGVzQShwYXRoLCBhdHRyKTsKKyAgICAgICAgaWYgKHBhdGgud2lkZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IFNldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLndpZGUsIGF0dHIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBTZXRGaWxlQXR0cmlidXRlc0EocGF0aC5uYXJyb3csIGF0dHIpOworICAgIH0KKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJjaG1vZCIsIHBhdGgub2JqZWN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgSEFWRV9GQ0hNT0QKKyAgICBpZiAocGF0aC5mZCAhPSAtMSkKKyAgICAgICAgcmVzdWx0ID0gZmNobW9kKHBhdGguZmQsIG1vZGUpOworICAgIGVsc2UKKyNlbmRpZgorI2lmZGVmIEhBVkVfTENITU9ECisgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAoZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKSkKKyAgICAgICAgcmVzdWx0ID0gbGNobW9kKHBhdGgubmFycm93LCBtb2RlKTsKKyAgICBlbHNlCisjZW5kaWYKKyNpZmRlZiBIQVZFX0ZDSE1PREFUCisgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8ICFmb2xsb3dfc3ltbGlua3MpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogZmNobW9kYXQoKSBkb2Vzbid0IGN1cnJlbnRseSBzdXBwb3J0IEFUX1NZTUxJTktfTk9GT0xMT1chCisgICAgICAgICAqIFRoZSBkb2N1bWVudGF0aW9uIHNwZWNpZmljYWxseSBzaG93cyBob3cgdG8gdXNlIGl0LAorICAgICAgICAgKiBhbmQgdGhlbiBzYXlzIGl0IGlzbid0IGltcGxlbWVudGVkIHlldC4KKyAgICAgICAgICogKHRydWUgb24gbGludXggd2l0aCBnbGliYyAyLjE1LCBhbmQgb3BlbmluZGlhbmEgMy54KQorICAgICAgICAgKgorICAgICAgICAgKiBPbmNlIGl0IGlzIHN1cHBvcnRlZCwgb3MuY2htb2Qgd2lsbCBhdXRvbWF0aWNhbGx5CisgICAgICAgICAqIHN1cHBvcnQgZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3M9RmFsc2UuICAoSG9wZWZ1bGx5LikKKyAgICAgICAgICogVW50aWwgdGhlbiwgd2UgbmVlZCB0byBiZSBjYXJlZnVsIHdoYXQgZXhjZXB0aW9uIHdlIHJhaXNlLgorICAgICAgICAgKi8KKyAgICAgICAgcmVzdWx0ID0gZmNobW9kYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzID8gMCA6IEFUX1NZTUxJTktfTk9GT0xMT1cpOworICAgICAgICAvKgorICAgICAgICAgKiBCdXQgd2FpdCEgIFdlIGNhbid0IHRocm93IHRoZSBleGNlcHRpb24gd2l0aG91dCBhbGxvd2luZyB0aHJlYWRzLAorICAgICAgICAgKiBhbmQgd2UgY2FuJ3QgZG8gdGhhdCBpbiB0aGlzIG5lc3RlZCBzY29wZS4gIChNYWNybyB0cmlja2VyeSwgc2lnaC4pCisgICAgICAgICAqLworICAgICAgICBmY2htb2RhdF9ub2ZvbGxvd191bnN1cHBvcnRlZCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgKChlcnJubyA9PSBFTk9UU1VQKSB8fCAoZXJybm8gPT0gRU9QTk9UU1VQUCkpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgIWZvbGxvd19zeW1saW5rczsKICAgICB9CiAgICAgZWxzZQotICAgICAgICByZXMgPSAwOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKCFyZXMpIHsKLSAgICAgICAgd2luMzJfZXJyb3IoImNobW9kIiwgcGF0aCk7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLSNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpjaG1vZCIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wYXRoLCAmaSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gY2htb2QocGF0aCwgaSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9wYXRoKTsKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKICNlbmRpZgorICAgICAgICByZXN1bHQgPSBjaG1vZChwYXRoLm5hcnJvdywgbW9kZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQpIHsKKyNpZmRlZiBIQVZFX0ZDSE1PREFUCisgICAgICAgIGlmIChmY2htb2RhdF9ub2ZvbGxvd191bnN1cHBvcnRlZCkgeworICAgICAgICAgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyAgICAgICAgICAgICAgICBkaXJfZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJjaG1vZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgiY2htb2QiLCBmb2xsb3dfc3ltbGlua3MpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigiY2htb2QiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisjZW5kaWYKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKKwogI2lmZGVmIEhBVkVfRkNITU9ECiBQeURvY19TVFJWQVIocG9zaXhfZmNobW9kX19kb2NfXywKICJmY2htb2QoZmQsIG1vZGUpXG5cblwKIENoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIHRoZSBmaWxlIGdpdmVuIGJ5IGZpbGVcblwKLWRlc2NyaXB0b3IgZmQuIik7CitkZXNjcmlwdG9yIGZkLiAgRXF1aXZhbGVudCB0byBvcy5jaG1vZChmZCwgbW9kZSkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9mY2htb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMjE3Nyw3ICsyOTE4LDggQEAKIFB5RG9jX1NUUlZBUihwb3NpeF9sY2htb2RfX2RvY19fLAogImxjaG1vZChwYXRoLCBtb2RlKVxuXG5cCiBDaGFuZ2UgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiBhIGZpbGUuIElmIHBhdGggaXMgYSBzeW1saW5rLCB0aGlzXG5cCi1hZmZlY3RzIHRoZSBsaW5rIGl0c2VsZiByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0LiIpOworYWZmZWN0cyB0aGUgbGluayBpdHNlbGYgcmF0aGVyIHRoYW4gdGhlIHRhcmdldC5cblwKK0VxdWl2YWxlbnQgdG8gY2htb2QocGF0aCwgbW9kZSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X2xjaG1vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0yMjAzLDI4ICsyOTQ1LDU2IEBACiAKICNpZmRlZiBIQVZFX0NIRkxBR1MKIFB5RG9jX1NUUlZBUihwb3NpeF9jaGZsYWdzX19kb2NfXywKLSJjaGZsYWdzKHBhdGgsIGZsYWdzKVxuXG5cCi1TZXQgZmlsZSBmbGFncy4iKTsKKyJjaGZsYWdzKHBhdGgsIGZsYWdzLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAorU2V0IGZpbGUgZmxhZ3MuXG5cCitcblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCBjaGZsYWdzIHdpbGwgY2hhbmdlIGZsYWdzIG9uIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZVxuXAorICBmaWxlIHRoZSBsaW5rIHBvaW50cyB0by5cblwKK2ZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uICBJZiBpdCBpc1xuXAordW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY2hmbGFncyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9jaGZsYWdzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKKyAgICBwYXRoX3QgcGF0aDsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwotICAgIGludCByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJms6Y2hmbGFncyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLCAmZmxhZ3MpKQorICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZTsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJmt8JGk6Y2hmbGFncyIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZmbGFncywgJmZvbGxvd19zeW1saW5rcykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKKworI2lmbmRlZiBIQVZFX0xDSEZMQUdTCisgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImNoZmxhZ3MiLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisjZW5kaWYKKwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBjaGZsYWdzKHBhdGgsIGZsYWdzKTsKKyNpZmRlZiBIQVZFX0xDSEZMQUdTCisgICAgaWYgKCFmb2xsb3dfc3ltbGlua3MpCisgICAgICAgIHJlc3VsdCA9IGxjaGZsYWdzKHBhdGgubmFycm93LCBmbGFncyk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IGNoZmxhZ3MocGF0aC5uYXJyb3csIGZsYWdzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob3BhdGgpOwotICAgIFB5X0RFQ1JFRihvcGF0aCk7CisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfcG9zaXhfZXJyb3IoImNoZmxhZ3MiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAjZW5kaWYgLyogSEFWRV9DSEZMQUdTICovCiAKQEAgLTIyMzIsNyArMzAwMiw4IEBACiBQeURvY19TVFJWQVIocG9zaXhfbGNoZmxhZ3NfX2RvY19fLAogImxjaGZsYWdzKHBhdGgsIGZsYWdzKVxuXG5cCiBTZXQgZmlsZSBmbGFncy5cblwKLVRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLiIpOworVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuXG5cCitFcXVpdmFsZW50IHRvIGNoZmxhZ3MocGF0aCwgZmxhZ3MsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9sY2hmbGFncyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0yMjgwLDYgKzMwNTEsMjEgQEAKIH0KICNlbmRpZiAvKiBIQVZFX0ZTWU5DICovCiAKKyNpZmRlZiBIQVZFX1NZTkMKK1B5RG9jX1NUUlZBUihwb3NpeF9zeW5jX19kb2NfXywKKyJzeW5jKClcblxuXAorRm9yY2Ugd3JpdGUgb2YgZXZlcnl0aGluZyB0byBkaXNrLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc3luYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK3sKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgc3luYygpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKKwogI2lmZGVmIEhBVkVfRkRBVEFTWU5DCiAKICNpZmRlZiBfX2hwdXgKQEAgLTIzMDEsMzEgKzMwODcsMTAzIEBACiAKICNpZmRlZiBIQVZFX0NIT1dOCiBQeURvY19TVFJWQVIocG9zaXhfY2hvd25fX2RvY19fLAotImNob3duKHBhdGgsIHVpZCwgZ2lkKVxuXG5cCi1DaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiBwYXRoIHRvIHRoZSBudW1lcmljIHVpZCBhbmQgZ2lkLiIpOworImNob3duKHBhdGgsIHVpZCwgZ2lkLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKK0NoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHBhdGggdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuXG5cCitcblwKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi5cblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgY2hvd24gd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG5cCisgIGxpbmsgcG9pbnRzIHRvLlxuXAorSXQgaXMgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGggYXNcblwKKyAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCitkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY2hvd24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfY2hvd24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOworICAgIHBhdGhfdCBwYXRoOwogICAgIHVpZF90IHVpZDsKICAgICBnaWRfdCBnaWQ7Ci0gICAgaW50IHJlczsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyZPJjpjaG93biIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKQorICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgInVpZCIsICJnaWQiLCAiZGlyX2ZkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisjaWZkZWYgSEFWRV9GQ0hPV04KKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKKyNlbmRpZgorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZPJnwkTyZwOmNob3duIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkLAorI2lmZGVmIEhBVkVfRkNIT1dOQVQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkLAorI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQsCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOworCisjaWYgIShkZWZpbmVkKEhBVkVfTENIT1dOKSB8fCBkZWZpbmVkKEhBVkVfRkNIT1dOQVQpKQorICAgIGlmIChmb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKCJjaG93biIsIGZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyNlbmRpZgorICAgIGlmIChkaXJfZmRfYW5kX2ZkX2ludmFsaWQoImNob3duIiwgZGlyX2ZkLCBwYXRoLmZkKSB8fAorICAgICAgICBmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoImNob3duIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworCisjaWZkZWYgX19BUFBMRV9fCisgICAgLyoKKyAgICAgKiBUaGlzIGlzIGZvciBNYWMgT1MgWCAxMC4zLCB3aGljaCBkb2Vzbid0IGhhdmUgbGNob3duLgorICAgICAqIChCdXQgd2Ugc3RpbGwgaGF2ZSBhbiBsY2hvd24gc3ltYm9sIGJlY2F1c2Ugb2Ygd2Vhay1saW5raW5nLikKKyAgICAgKiBJdCBkb2Vzbid0IGhhdmUgZmNob3duYXQgZWl0aGVyLiAgU28gdGhlcmUncyBubyBwb3NzaWJpbGl0eQorICAgICAqIG9mIGEgZ3JhY2VmdWwgZmFpbG92ZXIuCisgICAgICovCisgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAobGNob3duID09IE5VTEwpKSB7CisgICAgICAgIGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImNob3duIiwgZm9sbG93X3N5bWxpbmtzKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbmRpZgorCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGNob3duKHBhdGgsIHVpZCwgZ2lkKTsKKyNpZmRlZiBIQVZFX0ZDSE9XTgorICAgIGlmIChwYXRoLmZkICE9IC0xKQorICAgICAgICByZXN1bHQgPSBmY2hvd24ocGF0aC5mZCwgdWlkLCBnaWQpOworICAgIGVsc2UKKyNlbmRpZgorI2lmZGVmIEhBVkVfTENIT1dOCisgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAoZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKSkKKyAgICAgICAgcmVzdWx0ID0gbGNob3duKHBhdGgubmFycm93LCB1aWQsIGdpZCk7CisgICAgZWxzZQorI2VuZGlmCisjaWZkZWYgSEFWRV9GQ0hPV05BVAorICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fCAoIWZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJlc3VsdCA9IGZjaG93bmF0KGRpcl9mZCwgcGF0aC5uYXJyb3csIHVpZCwgZ2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3MgPyAwIDogQVRfU1lNTElOS19OT0ZPTExPVyk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IGNob3duKHBhdGgubmFycm93LCB1aWQsIGdpZCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9wYXRoKTsKLSAgICBQeV9ERUNSRUYob3BhdGgpOworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX3Bvc2l4X2Vycm9yKCJjaG93biIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KICNlbmRpZiAvKiBIQVZFX0NIT1dOICovCiAKQEAgLTIzMzMsNyArMzE5MSw3IEBACiBQeURvY19TVFJWQVIocG9zaXhfZmNob3duX19kb2NfXywKICJmY2hvd24oZmQsIHVpZCwgZ2lkKVxuXG5cCiBDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiB0aGUgZmlsZSBnaXZlbiBieSBmaWxlIGRlc2NyaXB0b3JcblwKLWZkIHRvIHRoZSBudW1lcmljIHVpZCBhbmQgZ2lkLiIpOworZmQgdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuICBFcXVpdmFsZW50IHRvIG9zLmNob3duKGZkLCB1aWQsIGdpZCkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9mY2hvd24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMjM1OSw3ICszMjE3LDggQEAKIFB5RG9jX1NUUlZBUihwb3NpeF9sY2hvd25fX2RvY19fLAogImxjaG93bihwYXRoLCB1aWQsIGdpZClcblxuXAogQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgcGF0aCB0byB0aGUgbnVtZXJpYyB1aWQgYW5kIGdpZC5cblwKLVRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLiIpOworVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuXG5cCitFcXVpdmFsZW50IHRvIG9zLmNob3duKHBhdGgsIHVpZCwgZ2lkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfbGNob3duKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTI0MjMsNiArMzI4Miw5IEBACiAgICAgICAgIGlmICh3YnVmMiAhPSB3YnVmKSBmcmVlKHdidWYyKTsKICAgICAgICAgcmV0dXJuIHJlc29iajsKICAgICB9CisKKyAgICBpZiAod2luMzJfd2Fybl9ieXRlc19hcGkoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAjZW5kaWYKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKQEAgLTI0NjAsMTUwICszMzIyLDIyNiBAQAogfQogI2VuZGlmCiAKKyNpZiAoKCFkZWZpbmVkKEhBVkVfTElOSykpICYmIGRlZmluZWQoTVNfV0lORE9XUykpCisjZGVmaW5lIEhBVkVfTElOSyAxCisjZW5kaWYKIAogI2lmZGVmIEhBVkVfTElOSwogUHlEb2NfU1RSVkFSKHBvc2l4X2xpbmtfX2RvY19fLAotImxpbmsoc3JjLCBkc3QpXG5cblwKLUNyZWF0ZSBhIGhhcmQgbGluayB0byBhIGZpbGUuIik7CisibGluayhzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCitDcmVhdGUgYSBoYXJkIGxpbmsgdG8gYSBmaWxlLlxuXAorXG5cCitJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG5cCisgIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSByZXNwZWN0aXZlIHBhdGggc3RyaW5nIChzcmMgb3IgZHN0KVxuXAorICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2Ygc3JjIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgbGluayB3aWxsIGNyZWF0ZSBhIGxpbmsgdG8gdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlXG5cCisgIGZpbGUgdGhlIGxpbmsgcG9pbnRzIHRvLlxuXAorc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCwgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXJcblwKKyAgcGxhdGZvcm0uICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGFcblwKKyAgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgcmV0dXJuIHBvc2l4XzJzdHIoYXJncywgIk8mTyY6bGluayIsIGxpbmspOwotfQotI2VuZGlmIC8qIEhBVkVfTElOSyAqLwotCisgICAgcGF0aF90IHNyYywgZHN0OworICAgIGludCBzcmNfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGRzdF9kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKICNpZmRlZiBNU19XSU5ET1dTCi1QeURvY19TVFJWQVIod2luMzJfbGlua19fZG9jX18sCi0ibGluayhzcmMsIGRzdClcblxuXAotQ3JlYXRlIGEgaGFyZCBsaW5rIHRvIGEgZmlsZS4iKTsKKyAgICBCT09MIHJlc3VsdDsKKyNlbHNlCisgICAgaW50IHJlc3VsdDsKKyNlbmRpZgogCi1zdGF0aWMgUHlPYmplY3QgKgotd2luMzJfbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKm9zcmMsICpvZHN0OwotICAgIGNoYXIgKnNyYywgKmRzdDsKLSAgICBCT09MIHJzbHQ7Ci0KLSAgICBQeVVuaWNvZGVPYmplY3QgKnVzcmMsICp1ZHN0OwotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVVTpsaW5rIiwgJnVzcmMsICZ1ZHN0KSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJzbHQgPSBDcmVhdGVIYXJkTGlua1coUHlVbmljb2RlX0FTX1VOSUNPREUodWRzdCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodXNyYyksIE5VTEwpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgIGlmIChyc2x0ID09IDApCi0gICAgICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoImxpbmsiLCBOVUxMKTsKLQotICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICB9Ci0KLSAgICAvKiBOYXJyb3cgc3RyaW5ncyBhbHNvIHZhbGlkLiAqLwotICAgIFB5RXJyX0NsZWFyKCk7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyY6bGluayIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9zcmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9kc3QpKQorICAgIG1lbXNldCgmc3JjLCAwLCBzaXplb2Yoc3JjKSk7CisgICAgbWVtc2V0KCZkc3QsIDAsIHNpemVvZihkc3QpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfE8mTyZwOmxpbmsiLCBrZXl3b3JkcywKKyAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLAorICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZkc3QsCisgICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwKKyAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkLAorICAgICAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgc3JjID0gUHlCeXRlc19Bc1N0cmluZyhvc3JjKTsKLSAgICBkc3QgPSBQeUJ5dGVzX0FzU3RyaW5nKG9kc3QpOworI2lmbmRlZiBIQVZFX0xJTktBVAorICAgIGlmICgoc3JjX2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwgKGRzdF9kaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpKSB7CisgICAgICAgIGFyZ3VtZW50X3VuYXZhaWxhYmxlX2Vycm9yKCJsaW5rIiwgInNyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbmRpZgogCisgICAgaWYgKChzcmMubmFycm93ICYmIGRzdC53aWRlKSB8fCAoc3JjLndpZGUgJiYgZHN0Lm5hcnJvdykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibGluazogc3JjIGFuZCBkc3QgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJzbHQgPSBDcmVhdGVIYXJkTGlua0EoZHN0LCBzcmMsIE5VTEwpOworICAgIGlmIChzcmMud2lkZSkKKyAgICAgICAgcmVzdWx0ID0gQ3JlYXRlSGFyZExpbmtXKGRzdC53aWRlLCBzcmMud2lkZSwgTlVMTCk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBDcmVhdGVIYXJkTGlua0EoZHN0Lm5hcnJvdywgc3JjLm5hcnJvdywgTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIFB5X0RFQ1JFRihvc3JjKTsKLSAgICBQeV9ERUNSRUYob2RzdCk7Ci0gICAgaWYgKHJzbHQgPT0gMCkKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yKCJsaW5rIiwgTlVMTCk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJsaW5rIiwgZHN0Lm9iamVjdCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisjZWxzZQorICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBIQVZFX0xJTktBVAorICAgIGlmICgoc3JjX2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwKKyAgICAgICAgKGRzdF9kaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8CisgICAgICAgICghZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmVzdWx0ID0gbGlua2F0KHNyY19kaXJfZmQsIHNyYy5uYXJyb3csCisgICAgICAgICAgICBkc3RfZGlyX2ZkLCBkc3QubmFycm93LAorICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzID8gQVRfU1lNTElOS19GT0xMT1cgOiAwKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gbGluayhzcmMubmFycm93LCBkc3QubmFycm93KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgUHlfUkVUVVJOX05PTkU7CisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJsaW5rIiwgJmRzdCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmc3JjKTsKKyAgICBwYXRoX2NsZWFudXAoJmRzdCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCisjZW5kaWYKKwogCiAKIFB5RG9jX1NUUlZBUihwb3NpeF9saXN0ZGlyX19kb2NfXywKLSJsaXN0ZGlyKFtwYXRoXSkgLT4gbGlzdF9vZl9zdHJpbmdzXG5cblwKLVJldHVybiBhIGxpc3QgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGVudHJpZXMgaW4gdGhlIGRpcmVjdG9yeS5cblwKLVxuXAotICAgIHBhdGg6IHBhdGggb2YgZGlyZWN0b3J5IHRvIGxpc3QgKGRlZmF1bHQ6ICcuJylcblwKLVxuXAorImxpc3RkaXIocGF0aD0nLicpIC0+IGxpc3Rfb2ZfZmlsZW5hbWVzXG5cblwKK1JldHVybiBhIGxpc3QgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuXG5cCiBUaGUgbGlzdCBpcyBpbiBhcmJpdHJhcnkgb3JkZXIuICBJdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzcGVjaWFsXG5cCi1lbnRyaWVzICcuJyBhbmQgJy4uJyBldmVuIGlmIHRoZXkgYXJlIHByZXNlbnQgaW4gdGhlIGRpcmVjdG9yeS4iKTsKK2VudHJpZXMgJy4nIGFuZCAnLi4nIGV2ZW4gaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgZGlyZWN0b3J5LlxuXAorXG5cCitwYXRoIGNhbiBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIHN0ciBvciBieXRlcy4gIElmIHBhdGggaXMgYnl0ZXMsXG5cCisgIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBhbHNvIGJlIGJ5dGVzOyBpbiBhbGwgb3RoZXIgY2lyY3Vtc3RhbmNlc1xuXAorICB0aGUgZmlsZW5hbWVzIHJldHVybmVkIHdpbGwgYmUgc3RyLlxuXAorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yO1xuXAorICB0aGUgZmlsZSBkZXNjcmlwdG9yIG11c3QgcmVmZXIgdG8gYSBkaXJlY3RvcnkuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9saXN0ZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X2xpc3RkaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogeworICAgIHBhdGhfdCBwYXRoOworICAgIFB5T2JqZWN0ICpsaXN0ID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIGludCBmZCA9IC0xOworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChIQVZFX09QRU5ESVIpCisgICAgUHlPYmplY3QgKnY7CisgICAgSEFORExFIGhGaW5kRmlsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOworICAgIEJPT0wgcmVzdWx0OworICAgIFdJTjMyX0ZJTkRfREFUQSBGaWxlRGF0YTsKKyAgICBjaGFyIG5hbWVidWZbTUFYX1BBVEgrNV07IC8qIE92ZXJhbGxvY2F0ZSBmb3IgXFwqLipcMCAqLworICAgIGNoYXIgKmJ1ZnB0ciA9IG5hbWVidWY7CisgICAgLyogb25seSBjbGFpbSB0byBoYXZlIHNwYWNlIGZvciBNQVhfUEFUSCAqLworICAgIFB5X3NzaXplX3QgbGVuID0gc2l6ZW9mKG5hbWVidWYpLTU7CisgICAgUHlPYmplY3QgKnBvID0gTlVMTDsKKyAgICB3Y2hhcl90ICp3bmFtZWJ1ZiA9IE5VTEw7CisjZWxpZiBkZWZpbmVkKFBZT1NfT1MyKQorI2lmbmRlZiBNQVhfUEFUSAorI2RlZmluZSBNQVhfUEFUSCAgICBDQ0hNQVhQQVRICisjZW5kaWYKKyAgICBjaGFyICpwdDsKKyAgICBQeU9iamVjdCAqdjsKKyAgICBjaGFyIG5hbWVidWZbTUFYX1BBVEgrNV07CisgICAgSERJUiAgaGRpciA9IDE7CisgICAgVUxPTkcgc3JjaGNudCA9IDE7CisgICAgRklMRUZJTkRCVUYzICAgZXA7CisgICAgQVBJUkVUIHJjOworI2Vsc2UKKyAgICBQeU9iamVjdCAqdjsKKyAgICBESVIgKmRpcnAgPSBOVUxMOworICAgIHN0cnVjdCBkaXJlbnQgKmVwOworICAgIGludCByZXR1cm5fc3RyOyAvKiBpZiBmYWxzZSwgcmV0dXJuIGJ5dGVzICovCisjZW5kaWYKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBwYXRoLm51bGxhYmxlID0gMTsKKyNpZmRlZiBIQVZFX0ZET1BFTkRJUgorICAgIHBhdGguYWxsb3dfZmQgPSAxOworICAgIHBhdGguZmQgPSAtMTsKKyNlbmRpZgorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPJjpsaXN0ZGlyIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aAorICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIC8qIFhYWCBTaG91bGQgcmVkbyB0aGlzIHB1dHRpbmcgdGhlIChub3cgZm91cikgdmVyc2lvbnMgb2Ygb3BlbmRpcgogICAgICAgIGluIHNlcGFyYXRlIGZpbGVzIGluc3RlYWQgb2YgaGF2aW5nIHRoZW0gYWxsIGhlcmUuLi4gKi8KICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKEhBVkVfT1BFTkRJUikKLQotICAgIFB5T2JqZWN0ICpkLCAqdjsKLSAgICBIQU5ETEUgaEZpbmRGaWxlOwotICAgIEJPT0wgcmVzdWx0OwotICAgIFdJTjMyX0ZJTkRfREFUQSBGaWxlRGF0YTsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciBuYW1lYnVmW01BWF9QQVRIKzVdOyAvKiBPdmVyYWxsb2NhdGUgZm9yIFxcKi4qXDAgKi8KLSAgICBjaGFyICpidWZwdHIgPSBuYW1lYnVmOwotICAgIFB5X3NzaXplX3QgbGVuID0gc2l6ZW9mKG5hbWVidWYpLTU7IC8qIG9ubHkgY2xhaW0gdG8gaGF2ZSBzcGFjZSBmb3IgTUFYX1BBVEggKi8KLQotICAgIFB5T2JqZWN0ICpwbyA9IE5VTEw7Ci0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxVOmxpc3RkaXIiLCAmcG8pKSB7CisgICAgaWYgKCFwYXRoLm5hcnJvdykgewogICAgICAgICBXSU4zMl9GSU5EX0RBVEFXIHdGaWxlRGF0YTsKLSAgICAgICAgUHlfVU5JQ09ERSAqd25hbWVidWYsICpwb193Y2hhcnM7CisgICAgICAgIHdjaGFyX3QgKnBvX3djaGFyczsKIAotICAgICAgICBpZiAocG8gPT0gTlVMTCkgeyAvKiBEZWZhdWx0IGFyZzogIi4iICovCisgICAgICAgIGlmICghcGF0aC53aWRlKSB7IC8qIERlZmF1bHQgYXJnOiAiLiIgKi8KICAgICAgICAgICAgIHBvX3djaGFycyA9IEwiLiI7CiAgICAgICAgICAgICBsZW4gPSAxOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcG9fd2NoYXJzID0gUHlVbmljb2RlX0FTX1VOSUNPREUocG8pOwotICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHBvKTsKKyAgICAgICAgICAgIHBvX3djaGFycyA9IHBhdGgud2lkZTsKKyAgICAgICAgICAgIGxlbiA9IHdjc2xlbihwYXRoLndpZGUpOwogICAgICAgICB9Ci0gICAgICAgIC8qIE92ZXJhbGxvY2F0ZSBmb3IgXFwqLipcMCAqLworICAgICAgICAvKiBUaGUgKzUgaXMgc28gd2UgY2FuIGFwcGVuZCAiXFwqLipcMCIgKi8KICAgICAgICAgd25hbWVidWYgPSBtYWxsb2MoKGxlbiArIDUpICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICAgICAgaWYgKCF3bmFtZWJ1ZikgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgICAgIHdjc2NweSh3bmFtZWJ1ZiwgcG9fd2NoYXJzKTsKICAgICAgICAgaWYgKGxlbiA+IDApIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgd2NoID0gd25hbWVidWZbbGVuLTFdOworICAgICAgICAgICAgd2NoYXJfdCB3Y2ggPSB3bmFtZWJ1ZltsZW4tMV07CiAgICAgICAgICAgICBpZiAod2NoICE9IEwnLycgJiYgd2NoICE9IEwnXFwnICYmIHdjaCAhPSBMJzonKQogICAgICAgICAgICAgICAgIHduYW1lYnVmW2xlbisrXSA9IEwnXFwnOwogICAgICAgICAgICAgd2NzY3B5KHduYW1lYnVmICsgbGVuLCBMIiouKiIpOwogICAgICAgICB9Ci0gICAgICAgIGlmICgoZCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKLSAgICAgICAgICAgIGZyZWUod25hbWVidWYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgfQogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIGhGaW5kRmlsZSA9IEZpbmRGaXJzdEZpbGVXKHduYW1lYnVmLCAmd0ZpbGVEYXRhKTsKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICAgICAgaWYgKGhGaW5kRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICAgICAgaW50IGVycm9yID0gR2V0TGFzdEVycm9yKCk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IgPT0gRVJST1JfRklMRV9OT1RfRk9VTkQpIHsKLSAgICAgICAgICAgICAgICBmcmVlKHduYW1lYnVmKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKKyAgICAgICAgICAgIGlmIChlcnJvciA9PSBFUlJPUl9GSUxFX05PVF9GT1VORCkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICBsaXN0ID0gTlVMTDsKICAgICAgICAgICAgIHdpbjMyX2Vycm9yX3VuaWNvZGUoIkZpbmRGaXJzdEZpbGVXIiwgd25hbWVidWYpOwotICAgICAgICAgICAgZnJlZSh3bmFtZWJ1Zik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgfQogICAgICAgICBkbyB7CiAgICAgICAgICAgICAvKiBTa2lwIG92ZXIgLiBhbmQgLi4gKi8KICAgICAgICAgICAgIGlmICh3Y3NjbXAod0ZpbGVEYXRhLmNGaWxlTmFtZSwgTCIuIikgIT0gMCAmJgogICAgICAgICAgICAgICAgIHdjc2NtcCh3RmlsZURhdGEuY0ZpbGVOYW1lLCBMIi4uIikgIT0gMCkgewotICAgICAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUod0ZpbGVEYXRhLmNGaWxlTmFtZSwgd2NzbGVuKHdGaWxlRGF0YS5jRmlsZU5hbWUpKTsKKyAgICAgICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3RmlsZURhdGEuY0ZpbGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjc2xlbih3RmlsZURhdGEuY0ZpbGVOYW1lKSk7CiAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgICAgIGQgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBOVUxMOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoZCwgdikgIT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIHYpICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgICAgIGQgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBOVUxMOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwpAQCAtMjYxNCwzOCArMzU1MiwxNiBAQAogICAgICAgICAgICAgLyogRmluZE5leHRGaWxlIHNldHMgZXJyb3IgdG8gRVJST1JfTk9fTU9SRV9GSUxFUyBpZgogICAgICAgICAgICAgICAgaXQgZ290IHRvIHRoZSBlbmQgb2YgdGhlIGRpcmVjdG9yeS4gKi8KICAgICAgICAgICAgIGlmICghcmVzdWx0ICYmIEdldExhc3RFcnJvcigpICE9IEVSUk9SX05PX01PUkVfRklMRVMpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgd2luMzJfZXJyb3JfdW5pY29kZSgiRmluZE5leHRGaWxlVyIsIHduYW1lYnVmKTsKLSAgICAgICAgICAgICAgICBGaW5kQ2xvc2UoaEZpbmRGaWxlKTsKLSAgICAgICAgICAgICAgICBmcmVlKHduYW1lYnVmKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IHdpbjMyX2Vycm9yX3VuaWNvZGUoIkZpbmROZXh0RmlsZVciLCB3bmFtZWJ1Zik7CisgICAgICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICAgICAgfQogICAgICAgICB9IHdoaWxlIChyZXN1bHQgPT0gVFJVRSk7CiAKLSAgICAgICAgaWYgKEZpbmRDbG9zZShoRmluZEZpbGUpID09IEZBTFNFKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICB3aW4zMl9lcnJvcl91bmljb2RlKCJGaW5kQ2xvc2UiLCB3bmFtZWJ1Zik7Ci0gICAgICAgICAgICBmcmVlKHduYW1lYnVmKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGZyZWUod25hbWVidWYpOwotICAgICAgICByZXR1cm4gZDsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICAvKiBEcm9wIHRoZSBhcmd1bWVudCBwYXJzaW5nIGVycm9yIGFzIG5hcnJvdyBzdHJpbmdzCi0gICAgICAgYXJlIGFsc28gdmFsaWQuICovCi0gICAgUHlFcnJfQ2xlYXIoKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6bGlzdGRpciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUob3BhdGgpKzEgPiBNQVhfUEFUSCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInBhdGggdG9vIGxvbmciKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHN0cmNweShuYW1lYnVmLCBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKSk7Ci0gICAgbGVuID0gUHlPYmplY3RfU2l6ZShvcGF0aCk7Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKKyAgICBzdHJjcHkobmFtZWJ1ZiwgcGF0aC5uYXJyb3cpOworICAgIGxlbiA9IHBhdGgubGVuZ3RoOwogICAgIGlmIChsZW4gPiAwKSB7CiAgICAgICAgIGNoYXIgY2ggPSBuYW1lYnVmW2xlbi0xXTsKICAgICAgICAgaWYgKGNoICE9IFNFUCAmJiBjaCAhPSBBTFRTRVAgJiYgY2ggIT0gJzonKQpAQCAtMjY1Myw3ICszNTY5LDcgQEAKICAgICAgICAgc3RyY3B5KG5hbWVidWYgKyBsZW4sICIqLioiKTsKICAgICB9CiAKLSAgICBpZiAoKGQgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKQorICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtMjY2Miw5ICszNTc4LDEwIEBACiAgICAgaWYgKGhGaW5kRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICBpbnQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKICAgICAgICAgaWYgKGVycm9yID09IEVSUk9SX0ZJTEVfTk9UX0ZPVU5EKQotICAgICAgICAgICAgcmV0dXJuIGQ7Ci0gICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yKCJGaW5kRmlyc3RGaWxlIiwgbmFtZWJ1Zik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgbGlzdCA9IHdpbjMyX2Vycm9yKCJGaW5kRmlyc3RGaWxlIiwgbmFtZWJ1Zik7CisgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAgICAgZG8gewogICAgICAgICAvKiBTa2lwIG92ZXIgLiBhbmQgLi4gKi8KQEAgLTI2NzIsMTQgKzM1ODksMTQgQEAKICAgICAgICAgICAgIHN0cmNtcChGaWxlRGF0YS5jRmlsZU5hbWUsICIuLiIpICE9IDApIHsKICAgICAgICAgICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmcoRmlsZURhdGEuY0ZpbGVOYW1lKTsKICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgZCA9IE5VTEw7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgICAgIGxpc3QgPSBOVUxMOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoZCwgdikgIT0gMCkgeworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgdikgIT0gMCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgZCA9IE5VTEw7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgICAgIGxpc3QgPSBOVUxMOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlfREVDUkVGKHYpOwpAQCAtMjY5MCw0NiArMzYwNywzMyBAQAogICAgICAgICAvKiBGaW5kTmV4dEZpbGUgc2V0cyBlcnJvciB0byBFUlJPUl9OT19NT1JFX0ZJTEVTIGlmCiAgICAgICAgICAgIGl0IGdvdCB0byB0aGUgZW5kIG9mIHRoZSBkaXJlY3RvcnkuICovCiAgICAgICAgIGlmICghcmVzdWx0ICYmIEdldExhc3RFcnJvcigpICE9IEVSUk9SX05PX01PUkVfRklMRVMpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgIHdpbjMyX2Vycm9yKCJGaW5kTmV4dEZpbGUiLCBuYW1lYnVmKTsKLSAgICAgICAgICAgIEZpbmRDbG9zZShoRmluZEZpbGUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICBsaXN0ID0gd2luMzJfZXJyb3IoIkZpbmROZXh0RmlsZSIsIG5hbWVidWYpOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgfSB3aGlsZSAocmVzdWx0ID09IFRSVUUpOwogCi0gICAgaWYgKEZpbmRDbG9zZShoRmluZEZpbGUpID09IEZBTFNFKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yKCJGaW5kQ2xvc2UiLCBuYW1lYnVmKTsKK2V4aXQ6CisgICAgaWYgKGhGaW5kRmlsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgeworICAgICAgICBpZiAoRmluZENsb3NlKGhGaW5kRmlsZSkgPT0gRkFMU0UpIHsKKyAgICAgICAgICAgIGlmIChsaXN0ICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IHdpbjMyX2Vycm9yX29iamVjdCgiRmluZENsb3NlIiwgcGF0aC5vYmplY3QpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQorICAgIGlmICh3bmFtZWJ1ZikKKyAgICAgICAgZnJlZSh3bmFtZWJ1Zik7CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKIAotICAgIHJldHVybiBkOworICAgIHJldHVybiBsaXN0OwogCiAjZWxpZiBkZWZpbmVkKFBZT1NfT1MyKQotCi0jaWZuZGVmIE1BWF9QQVRICi0jZGVmaW5lIE1BWF9QQVRIICAgIENDSE1BWFBBVEgKLSNlbmRpZgotICAgIFB5T2JqZWN0ICpvbmFtZTsKLSAgICBjaGFyICpuYW1lLCAqcHQ7Ci0gICAgUHlfc3NpemVfdCBsZW47Ci0gICAgUHlPYmplY3QgKmQsICp2OwotICAgIGNoYXIgbmFtZWJ1ZltNQVhfUEFUSCs1XTsKLSAgICBIRElSICBoZGlyID0gMTsKLSAgICBVTE9ORyBzcmNoY250ID0gMTsKLSAgICBGSUxFRklOREJVRjMgICBlcDsKLSAgICBBUElSRVQgcmM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOmxpc3RkaXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvbmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIG5hbWUgPSBQeUJ5dGVzX0FzU3RyaW5nKG9uYW1lKTsKLSAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKG9uYW1lKTsKLSAgICBpZiAobGVuID49IE1BWF9QQVRIKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvbmFtZSk7CisgICAgaWYgKHBhdGgubGVuZ3RoID49IE1BWF9QQVRIKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAicGF0aCB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICBzdHJjcHkobmFtZWJ1ZiwgbmFtZSk7CisgICAgc3RyY3B5KG5hbWVidWYsIHBhdGgubmFycm93KTsKICAgICBmb3IgKHB0ID0gbmFtZWJ1ZjsgKnB0OyBwdCsrKQogICAgICAgICBpZiAoKnB0ID09IEFMVFNFUCkKICAgICAgICAgICAgICpwdCA9IFNFUDsKQEAgLTI3MzcsOSArMzY0MSw4IEBACiAgICAgICAgIG5hbWVidWZbbGVuKytdID0gU0VQOwogICAgIHN0cmNweShuYW1lYnVmICsgbGVuLCAiKi4qIik7CiAKLSAgICBpZiAoKGQgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KIAogICAgIHJjID0gRG9zRmluZEZpcnN0KG5hbWVidWYsICAgICAgICAgLyogV2lsZGNhcmQgUGF0dGVybiB0byBNYXRjaCAqLwpAQCAtMjc1MSw3ICszNjU0LDkgQEAKIAogICAgIGlmIChyYyAhPSBOT19FUlJPUikgewogICAgICAgICBlcnJubyA9IEVOT0VOVDsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9uYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICBsaXN0ID0gcG9zaXhfZXJyb3Jfd2l0aF9maWxlbmFtZShwYXRoLm5hcnJvdyk7CisgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAKICAgICBpZiAoc3JjaGNudCA+IDApIHsgLyogSWYgRGlyZWN0b3J5IGlzIE5PVCBUb3RhbGx5IEVtcHR5LCAqLwpAQCAtMjc2Nyw1NSArMzY3Miw3MCBAQAogCiAgICAgICAgICAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nKG5hbWVidWYpOwogICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICBkID0gTlVMTDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChkLCB2KSAhPSAwKSB7CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsaXN0LCB2KSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICBkID0gTlVMTDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIH0gd2hpbGUgKERvc0ZpbmROZXh0KGhkaXIsICZlcCwgc2l6ZW9mKGVwKSwgJnNyY2hjbnQpID09IE5PX0VSUk9SICYmIHNyY2hjbnQgPiAwKTsKICAgICB9CiAKLSAgICBQeV9ERUNSRUYob25hbWUpOwotICAgIHJldHVybiBkOworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIGxpc3Q7CiAjZWxzZQotICAgIFB5T2JqZWN0ICpvbmFtZTsKLSAgICBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpkLCAqdjsKLSAgICBESVIgKmRpcnA7Ci0gICAgc3RydWN0IGRpcmVudCAqZXA7Ci0gICAgaW50IGFyZ19pc191bmljb2RlID0gMTsKIAogICAgIGVycm5vID0gMDsKLSAgICAvKiB2IGlzIG5ldmVyIHJlYWQsIHNvIGl0IGRvZXMgbm90IG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQgeWV0LiAqLwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifFU6bGlzdGRpciIsICZ2KSkgewotICAgICAgICBhcmdfaXNfdW5pY29kZSA9IDA7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgfQotICAgIG9uYW1lID0gTlVMTDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpsaXN0ZGlyIiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb25hbWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAob25hbWUgPT0gTlVMTCkgeyAvKiBEZWZhdWx0IGFyZzogIi4iICovCi0gICAgICAgIG9uYW1lID0gUHlCeXRlc19Gcm9tU3RyaW5nKCIuIik7Ci0gICAgfQotICAgIG5hbWUgPSBQeUJ5dGVzX0FzU3RyaW5nKG9uYW1lKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgZGlycCA9IG9wZW5kaXIobmFtZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoZGlycCA9PSBOVUxMKSB7Ci0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2FsbG9jYXRlZF9maWxlbmFtZShvbmFtZSk7Ci0gICAgfQotICAgIGlmICgoZCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKKyNpZmRlZiBIQVZFX0ZET1BFTkRJUgorICAgIGlmIChwYXRoLmZkICE9IC0xKSB7CisgICAgICAgIC8qIGNsb3NlZGlyKCkgY2xvc2VzIHRoZSBGRCwgc28gd2UgZHVwbGljYXRlIGl0ICovCiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgY2xvc2VkaXIoZGlycCk7CisgICAgICAgIGZkID0gZHVwKHBhdGguZmQpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBQeV9ERUNSRUYob25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBpZiAoZmQgPT0gLTEpIHsKKyAgICAgICAgICAgIGxpc3QgPSBwb3NpeF9lcnJvcigpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuX3N0ciA9IDE7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBkaXJwID0gZmRvcGVuZGlyKGZkKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgeworICAgICAgICBjaGFyICpuYW1lOworICAgICAgICBpZiAocGF0aC5uYXJyb3cpIHsKKyAgICAgICAgICAgIG5hbWUgPSBwYXRoLm5hcnJvdzsKKyAgICAgICAgICAgIC8qIG9ubHkgcmV0dXJuIGJ5dGVzIGlmIHRoZXkgc3BlY2lmaWVkIGEgYnl0ZXMgb2JqZWN0ICovCisgICAgICAgICAgICByZXR1cm5fc3RyID0gIShQeUJ5dGVzX0NoZWNrKHBhdGgub2JqZWN0KSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBuYW1lID0gIi4iOworICAgICAgICAgICAgcmV0dXJuX3N0ciA9IDE7CisgICAgICAgIH0KKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGRpcnAgPSBvcGVuZGlyKG5hbWUpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKworICAgIGlmIChkaXJwID09IE5VTEwpIHsKKyAgICAgICAgbGlzdCA9IHBhdGhfZXJyb3IoImxpc3RkaXIiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQogICAgIGZvciAoOzspIHsKICAgICAgICAgZXJybm8gPSAwOwpAQCAtMjgyNiwzOCArMzc0Niw0MyBAQAogICAgICAgICAgICAgaWYgKGVycm5vID09IDApIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgICAgIGNsb3NlZGlyKGRpcnApOwotICAgICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2FsbG9jYXRlZF9maWxlbmFtZShvbmFtZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgICAgIGxpc3QgPSBwYXRoX2Vycm9yKCJsaXN0ZGlyIiwgJnBhdGgpOworICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoZXAtPmRfbmFtZVswXSA9PSAnLicgJiYKICAgICAgICAgICAgIChOQU1MRU4oZXApID09IDEgfHwKICAgICAgICAgICAgICAoZXAtPmRfbmFtZVsxXSA9PSAnLicgJiYgTkFNTEVOKGVwKSA9PSAyKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKGFyZ19pc191bmljb2RlKQorICAgICAgICBpZiAocmV0dXJuX3N0cikKICAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShlcC0+ZF9uYW1lLCBOQU1MRU4oZXApKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoZXAtPmRfbmFtZSwgTkFNTEVOKGVwKSk7CiAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0NMRUFSKGQpOworICAgICAgICAgICAgUHlfQ0xFQVIobGlzdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChkLCB2KSAhPSAwKSB7CisgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIHYpICE9IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIFB5X0NMRUFSKGQpOworICAgICAgICAgICAgUHlfQ0xFQVIobGlzdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgfQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBjbG9zZWRpcihkaXJwKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X0RFQ1JFRihvbmFtZSk7CiAKLSAgICByZXR1cm4gZDsKK2V4aXQ6CisgICAgaWYgKGRpcnAgIT0gTlVMTCkgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGlmIChmZCA+IC0xKQorICAgICAgICAgICAgcmV3aW5kZGlyKGRpcnApOworICAgICAgICBjbG9zZWRpcihkaXJwKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9CisKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIGxpc3Q7CiAKICNlbmRpZiAvKiB3aGljaCBPUyAqLwogfSAgLyogZW5kIG9mIHBvc2l4X2xpc3RkaXIgKi8KQEAgLTI4NjcsMzEgKzM3OTIsMzUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9fZ2V0ZnVsbHBhdGhuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKKyAgICBjb25zdCBjaGFyICpwYXRoOwogICAgIGNoYXIgb3V0YnVmW01BWF9QQVRIKjJdOwogICAgIGNoYXIgKnRlbXA7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIFB5VW5pY29kZU9iamVjdCAqcG87Ci0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Ol9nZXRmdWxscGF0aG5hbWUiLCAmcG8pKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKndwYXRoID0gUHlVbmljb2RlX0FTX1VOSUNPREUocG8pOwotICAgICAgICBQeV9VTklDT0RFIHdvdXRidWZbTUFYX1BBVEgqMl0sICp3b3V0YnVmcCA9IHdvdXRidWY7Ci0gICAgICAgIFB5X1VOSUNPREUgKnd0ZW1wOworICAgIFB5T2JqZWN0ICpwbzsKKworICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfDpfZ2V0ZnVsbHBhdGhuYW1lIiwgJnBvKSkKKyAgICB7CisgICAgICAgIHdjaGFyX3QgKndwYXRoOworICAgICAgICB3Y2hhcl90IHdvdXRidWZbTUFYX1BBVEgqMl0sICp3b3V0YnVmcCA9IHdvdXRidWY7CisgICAgICAgIHdjaGFyX3QgKnd0ZW1wOwogICAgICAgICBEV09SRCByZXN1bHQ7CiAgICAgICAgIFB5T2JqZWN0ICp2OworCisgICAgICAgIHdwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShwbyk7CisgICAgICAgIGlmICh3cGF0aCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHJlc3VsdCA9IEdldEZ1bGxQYXRoTmFtZVcod3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHdvdXRidWYpL3NpemVvZih3b3V0YnVmWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9BUlJBWV9MRU5HVEgod291dGJ1ZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd291dGJ1ZiwgJnd0ZW1wKTsKLSAgICAgICAgaWYgKHJlc3VsdCA+IHNpemVvZih3b3V0YnVmKS9zaXplb2Yod291dGJ1ZlswXSkpIHsKLSAgICAgICAgICAgIHdvdXRidWZwID0gbWFsbG9jKHJlc3VsdCAqIHNpemVvZihQeV9VTklDT0RFKSk7CisgICAgICAgIGlmIChyZXN1bHQgPiBQeV9BUlJBWV9MRU5HVEgod291dGJ1ZikpIHsKKyAgICAgICAgICAgIHdvdXRidWZwID0gbWFsbG9jKHJlc3VsdCAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgICAgICAgICBpZiAoIXdvdXRidWZwKQogICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyh3cGF0aCwgcmVzdWx0LCB3b3V0YnVmcCwgJnd0ZW1wKTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSh3b3V0YnVmcCwgd2NzbGVuKHdvdXRidWZwKSk7CisgICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3b3V0YnVmcCwgd2NzbGVuKHdvdXRidWZwKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHYgPSB3aW4zMl9lcnJvcl91bmljb2RlKCJHZXRGdWxsUGF0aE5hbWVXIiwgd3BhdGgpOworICAgICAgICAgICAgdiA9IHdpbjMyX2Vycm9yX29iamVjdCgiR2V0RnVsbFBhdGhOYW1lVyIsIHBvKTsKICAgICAgICAgaWYgKHdvdXRidWZwICE9IHdvdXRidWYpCiAgICAgICAgICAgICBmcmVlKHdvdXRidWZwKTsKICAgICAgICAgcmV0dXJuIHY7CkBAIC0yOTAwLDE4ICszODI5LDE2IEBACiAgICAgICAgYXJlIGFsc28gdmFsaWQuICovCiAgICAgUHlFcnJfQ2xlYXIoKTsKIAotI2VuZGlmCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlIChhcmdzLCAiTyY6X2dldGZ1bGxwYXRobmFtZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlIChhcmdzLCAieTpfZ2V0ZnVsbHBhdGhuYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXRoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIGlmICghR2V0RnVsbFBhdGhOYW1lKHBhdGgsIHNpemVvZihvdXRidWYpL3NpemVvZihvdXRidWZbMF0pLAorICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIUdldEZ1bGxQYXRoTmFtZShwYXRoLCBQeV9BUlJBWV9MRU5HVEgob3V0YnVmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRidWYsICZ0ZW1wKSkgewogICAgICAgICB3aW4zMl9lcnJvcigiR2V0RnVsbFBhdGhOYW1lIiwgcGF0aCk7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9ERUNSRUYob3BhdGgpOwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soUHlUdXBsZV9HZXRJdGVtKGFyZ3MsIDApKSkgewogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZShvdXRidWYsIHN0cmxlbihvdXRidWYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nLCBOVUxMKTsKQEAgLTI5MjksMTIgKzM4NTYsMTQgQEAKICAgICBpbnQgYnVmX3NpemU7CiAgICAgd2NoYXJfdCAqdGFyZ2V0X3BhdGg7CiAgICAgaW50IHJlc3VsdF9sZW5ndGg7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqcG8sICpyZXN1bHQ7CiAgICAgd2NoYXJfdCAqcGF0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidXw6X2dldGZpbmFscGF0aG5hbWUiLCAmcGF0aCkpIHsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Ol9nZXRmaW5hbHBhdGhuYW1lIiwgJnBvKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBvKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmKCFjaGVja19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUoKSkgewogICAgICAgICAvKiBJZiB0aGUgT1MgZG9lc24ndCBoYXZlIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSwgcmV0dXJuIGEKQEAgLTI5NTMsMTggKzM4ODIsMTUgQEAKICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsCiAgICAgICAgIE5VTEwpOwogCi0gICAgaWYoaEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoIkdldEZpbmFsUGF0aE5hbXlCeUhhbmRsZSIsIHBhdGgpOwotICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IGdldCBhIGhhbmRsZSB0byBmaWxlLiIpOwotICAgIH0KKyAgICBpZihoRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiQ3JlYXRlRmlsZVciLCBwbyk7CiAKICAgICAvKiBXZSBoYXZlIGEgZ29vZCBoYW5kbGUgdG8gdGhlIHRhcmdldCwgdXNlIGl0IHRvIGRldGVybWluZSB0aGUKICAgICAgICB0YXJnZXQgcGF0aCBuYW1lLiAqLwogICAgIGJ1Zl9zaXplID0gUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoRmlsZSwgMCwgMCwgVk9MVU1FX05BTUVfTlQpOwogCiAgICAgaWYoIWJ1Zl9zaXplKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgiR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlIiwgcGF0aCk7CisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSIsIHBvKTsKIAogICAgIHRhcmdldF9wYXRoID0gKHdjaGFyX3QgKiltYWxsb2MoKGJ1Zl9zaXplKzEpKnNpemVvZih3Y2hhcl90KSk7CiAgICAgaWYoIXRhcmdldF9wYXRoKQpAQCAtMjk3MywxMyArMzg5OSwxMyBAQAogICAgIHJlc3VsdF9sZW5ndGggPSBQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhGaWxlLCB0YXJnZXRfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZfc2l6ZSwgVk9MVU1FX05BTUVfRE9TKTsKICAgICBpZighcmVzdWx0X2xlbmd0aCkKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoIkdldEZpbmFsUGF0aE5hbXlCeUhhbmRsZSIsIHBhdGgpOworICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGaW5hbFBhdGhOYW15QnlIYW5kbGUiLCBwbyk7CiAKICAgICBpZighQ2xvc2VIYW5kbGUoaEZpbGUpKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgiR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlIiwgcGF0aCk7CisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoIkNsb3NlSGFuZGxlIiwgcG8pOwogCiAgICAgdGFyZ2V0X3BhdGhbcmVzdWx0X2xlbmd0aF0gPSAwOwotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSh0YXJnZXRfcGF0aCwgcmVzdWx0X2xlbmd0aCk7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih0YXJnZXRfcGF0aCwgcmVzdWx0X2xlbmd0aCk7CiAgICAgZnJlZSh0YXJnZXRfcGF0aCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIApAQCAtMzAxNiwxMyArMzk0MiwxNCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X19pc2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpwbzsKKyAgICBjb25zdCBjaGFyICpwYXRoOworICAgIFB5T2JqZWN0ICpwbzsKICAgICBEV09SRCBhdHRyaWJ1dGVzOwogCiAgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Ol9pc2RpciIsICZwbykpIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqd3BhdGggPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShwbyk7CisgICAgICAgIHdjaGFyX3QgKndwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShwbyk7CisgICAgICAgIGlmICh3cGF0aCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAgICAgYXR0cmlidXRlcyA9IEdldEZpbGVBdHRyaWJ1dGVzVyh3cGF0aCk7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKQpAQCAtMzAzMywxMSArMzk2MCwxMCBAQAogICAgICAgIGFyZSBhbHNvIHZhbGlkLiAqLwogICAgIFB5RXJyX0NsZWFyKCk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOl9pc2RpciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInk6X2lzZGlyIiwgJnBhdGgpKQogICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKKyAgICBpZiAod2luMzJfd2Fybl9ieXRlc19hcGkoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXR0cmlidXRlcyA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoKTsKICAgICBpZiAoYXR0cmlidXRlcyA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykKICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwpAQCAtMzA1MSw2OSArMzk3Nyw3MiBAQAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogUHlEb2NfU1RSVkFSKHBvc2l4X21rZGlyX19kb2NfXywKLSJta2RpcihwYXRoIFssIG1vZGU9MDc3N10pXG5cblwKLUNyZWF0ZSBhIGRpcmVjdG9yeS4iKTsKKyJta2RpcihwYXRoLCBtb2RlPTBvNzc3LCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAorQ3JlYXRlIGEgZGlyZWN0b3J5LlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLlxuXAorXG5cCitUaGUgbW9kZSBhcmd1bWVudCBpcyBpZ25vcmVkIG9uIFdpbmRvd3MuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9ta2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9ta2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgaW50IHJlczsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKKyAgICBwYXRoX3QgcGF0aDsKICAgICBpbnQgbW9kZSA9IDA3Nzc7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHJlc3VsdDsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpJE8mOm1rZGlyIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsCisjaWZkZWYgSEFWRV9NS0RJUkFUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKKyNlbHNlCisgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAorI2VuZGlmCisgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIFB5VW5pY29kZU9iamVjdCAqcG87Ci0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8aTpta2RpciIsICZwbywgJm1vZGUpKSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgLyogUHlVbmljb2RlX0FTX1VOSUNPREUgT0sgd2l0aG91dCB0aHJlYWQgbG9jayBhcwotICAgICAgICAgICBpdCBpcyBhIHNpbXBsZSBkZXJlZmVyZW5jZS4gKi8KLSAgICAgICAgcmVzID0gQ3JlYXRlRGlyZWN0b3J5VyhQeVVuaWNvZGVfQVNfVU5JQ09ERShwbyksIE5VTEwpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoIXJlcykKLSAgICAgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJta2RpciIsIFB5VW5pY29kZV9BU19VTklDT0RFKHBvKSk7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgfQotICAgIC8qIERyb3AgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZXJyb3IgYXMgbmFycm93IHN0cmluZ3MKLSAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICBQeUVycl9DbGVhcigpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ8aTpta2RpciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgLyogUHlVbmljb2RlX0FTX1VOSUNPREUgT0sgd2l0aG91dCB0aHJlYWQgbG9jayBhcwotICAgICAgIGl0IGlzIGEgc2ltcGxlIGRlcmVmZXJlbmNlLiAqLwotICAgIHJlcyA9IENyZWF0ZURpcmVjdG9yeUEocGF0aCwgTlVMTCk7CisgICAgaWYgKHBhdGgud2lkZSkKKyAgICAgICAgcmVzdWx0ID0gQ3JlYXRlRGlyZWN0b3J5VyhwYXRoLndpZGUsIE5VTEwpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gQ3JlYXRlRGlyZWN0b3J5QShwYXRoLm5hcnJvdywgTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoIXJlcykgewotICAgICAgICB3aW4zMl9lcnJvcigibWtkaXIiLCBwYXRoKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotI2Vsc2UKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ8aTpta2RpciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0jaWYgKCBkZWZpbmVkKF9fV0FUQ09NQ19fKSB8fCBkZWZpbmVkKFBZQ0NfVkFDUFApICkgJiYgIWRlZmluZWQoX19RTlhfXykKLSAgICByZXMgPSBta2RpcihwYXRoKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSB3aW4zMl9lcnJvcl9vYmplY3QoIm1rZGlyIiwgcGF0aC5vYmplY3QpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogI2Vsc2UKLSAgICByZXMgPSBta2RpcihwYXRoLCBtb2RlKTsKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWYgSEFWRV9NS0RJUkFUCisgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyAgICAgICAgcmVzdWx0ID0gbWtkaXJhdChkaXJfZmQsIHBhdGgubmFycm93LCBtb2RlKTsKKyAgICBlbHNlCisjZW5kaWYKKyNpZiAoIGRlZmluZWQoX19XQVRDT01DX18pIHx8IGRlZmluZWQoUFlDQ19WQUNQUCkgKSAmJiAhZGVmaW5lZChfX1FOWF9fKQorICAgICAgICByZXN1bHQgPSBta2RpcihwYXRoLm5hcnJvdyk7CisjZWxzZQorICAgICAgICByZXN1bHQgPSBta2RpcihwYXRoLm5hcnJvdywgbW9kZSk7CiAjZW5kaWYKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob3BhdGgpOwotICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoIm1rZGlyIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogI2VuZGlmCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAogCkBAIC0zMTU5LDc5ICs0MDg4LDIyMCBAQAogfQogI2VuZGlmIC8qIEhBVkVfTklDRSAqLwogCi1QeURvY19TVFJWQVIocG9zaXhfcmVuYW1lX19kb2NfXywKLSJyZW5hbWUob2xkLCBuZXcpXG5cblwKLVJlbmFtZSBhIGZpbGUgb3IgZGlyZWN0b3J5LiIpOworCisjaWZkZWYgSEFWRV9HRVRQUklPUklUWQorUHlEb2NfU1RSVkFSKHBvc2l4X2dldHByaW9yaXR5X19kb2NfXywKKyJnZXRwcmlvcml0eSh3aGljaCwgd2hvKSAtPiBjdXJyZW50X3ByaW9yaXR5XG5cblwKK0dldCBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9yZW5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfZ2V0cHJpb3JpdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBQeU9iamVjdCAqbzEsICpvMjsKLSAgICBjaGFyICpwMSwgKnAyOwotICAgIEJPT0wgcmVzdWx0OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086cmVuYW1lIiwgJm8xLCAmbzIpKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIGlmICghY29udmVydF90b191bmljb2RlKCZvMSkpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgaWYgKCFjb252ZXJ0X3RvX3VuaWNvZGUoJm8yKSkgewotICAgICAgICBQeV9ERUNSRUYobzEpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzdWx0ID0gTW92ZUZpbGVXKFB5VW5pY29kZV9Bc1VuaWNvZGUobzEpLAotICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXNVbmljb2RlKG8yKSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9ERUNSRUYobzEpOwotICAgIFB5X0RFQ1JFRihvMik7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcigicmVuYW1lIiwgTlVMTCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotZXJyb3I6Ci0gICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNzOnJlbmFtZSIsICZwMSwgJnAyKSkKKyAgICBpbnQgd2hpY2gsIHdobywgcmV0dmFsOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaSIsICZ3aGljaCwgJndobykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXN1bHQgPSBNb3ZlRmlsZUEocDEsIHAyKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoInJlbmFtZSIsIE5VTEwpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBlcnJubyA9IDA7CisgICAgcmV0dmFsID0gZ2V0cHJpb3JpdHkod2hpY2gsIHdobyk7CisgICAgaWYgKGVycm5vICE9IDApCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpcmV0dmFsKTsKK30KKyNlbmRpZiAvKiBIQVZFX0dFVFBSSU9SSVRZICovCisKKworI2lmZGVmIEhBVkVfU0VUUFJJT1JJVFkKK1B5RG9jX1NUUlZBUihwb3NpeF9zZXRwcmlvcml0eV9fZG9jX18sCisic2V0cHJpb3JpdHkod2hpY2gsIHdobywgcHJpbykgLT4gTm9uZVxuXG5cCitTZXQgcHJvZ3JhbSBzY2hlZHVsaW5nIHByaW9yaXR5LiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2V0cHJpb3JpdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCB3aGljaCwgd2hvLCBwcmlvLCByZXR2YWw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpaSIsICZ3aGljaCwgJndobywgJnByaW8pKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR2YWwgPSBzZXRwcmlvcml0eSh3aGljaCwgd2hvLCBwcmlvKTsKKyAgICBpZiAocmV0dmFsID09IC0xKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZiAvKiBIQVZFX1NFVFBSSU9SSVRZICovCisKKworc3RhdGljIFB5T2JqZWN0ICoKK2ludGVybmFsX3JlbmFtZShQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncywgaW50IGlzX3JlcGxhY2UpCit7CisgICAgY2hhciAqZnVuY3Rpb25fbmFtZSA9IGlzX3JlcGxhY2UgPyAicmVwbGFjZSIgOiAicmVuYW1lIjsKKyAgICBwYXRoX3Qgc3JjOworICAgIHBhdGhfdCBkc3Q7CisgICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBkaXJfZmRfc3BlY2lmaWVkOworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNoYXIgZm9ybWF0WzI0XTsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCBOVUxMfTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBCT09MIHJlc3VsdDsKKyAgICBpbnQgZmxhZ3MgPSBpc19yZXBsYWNlID8gTU9WRUZJTEVfUkVQTEFDRV9FWElTVElORyA6IDA7CiAjZWxzZQotICAgIHJldHVybiBwb3NpeF8yc3RyKGFyZ3MsICJPJk8mOnJlbmFtZSIsIHJlbmFtZSk7CisgICAgaW50IHJlc3VsdDsKICNlbmRpZgorCisgICAgbWVtc2V0KCZzcmMsIDAsIHNpemVvZihzcmMpKTsKKyAgICBtZW1zZXQoJmRzdCwgMCwgc2l6ZW9mKGRzdCkpOworICAgIHN0cmNweShmb3JtYXQsICJPJk8mfCRPJk8mOiIpOworICAgIHN0cmNhdChmb3JtYXQsIGZ1bmN0aW9uX25hbWUpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgZm9ybWF0LCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmZHN0LAorICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwKKyAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGRpcl9mZF9zcGVjaWZpZWQgPSAoc3JjX2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgKGRzdF9kaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpOworI2lmbmRlZiBIQVZFX1JFTkFNRUFUCisgICAgaWYgKGRpcl9mZF9zcGVjaWZpZWQpIHsKKyAgICAgICAgYXJndW1lbnRfdW5hdmFpbGFibGVfZXJyb3IoZnVuY3Rpb25fbmFtZSwgInNyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKChzcmMubmFycm93ICYmIGRzdC53aWRlKSB8fCAoc3JjLndpZGUgJiYgZHN0Lm5hcnJvdykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJXM6IHNyYyBhbmQgZHN0IG11c3QgYmUgdGhlIHNhbWUgdHlwZSIsIGZ1bmN0aW9uX25hbWUpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoc3JjLndpZGUpCisgICAgICAgIHJlc3VsdCA9IE1vdmVGaWxlRXhXKHNyYy53aWRlLCBkc3Qud2lkZSwgZmxhZ3MpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gTW92ZUZpbGVFeEEoc3JjLm5hcnJvdywgZHN0Lm5hcnJvdywgZmxhZ3MpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSB3aW4zMl9lcnJvcl9vYmplY3QoZnVuY3Rpb25fbmFtZSwgZHN0Lm9iamVjdCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyNlbHNlCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfUkVOQU1FQVQKKyAgICBpZiAoZGlyX2ZkX3NwZWNpZmllZCkKKyAgICAgICAgcmVzdWx0ID0gcmVuYW1lYXQoc3JjX2Rpcl9mZCwgc3JjLm5hcnJvdywgZHN0X2Rpcl9mZCwgZHN0Lm5hcnJvdyk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IHJlbmFtZShzcmMubmFycm93LCBkc3QubmFycm93KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKGZ1bmN0aW9uX25hbWUsICZkc3QpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZzcmMpOworICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCitQeURvY19TVFJWQVIocG9zaXhfcmVuYW1lX19kb2NfXywKKyJyZW5hbWUoc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lKVxuXG5cCitSZW5hbWUgYSBmaWxlIG9yIGRpcmVjdG9yeS5cblwKK1xuXAorSWYgZWl0aGVyIHNyY19kaXJfZmQgb3IgZHN0X2Rpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZVxuXAorICBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcmVzcGVjdGl2ZSBwYXRoIHN0cmluZyAoc3JjIG9yIGRzdClcblwKKyAgc2hvdWxkIGJlIHJlbGF0aXZlOyB0aGUgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitzcmNfZGlyX2ZkIGFuZCBkc3RfZGlyX2ZkLCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfcmVuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICByZXR1cm4gaW50ZXJuYWxfcmVuYW1lKGFyZ3MsIGt3YXJncywgMCk7Cit9CisKK1B5RG9jX1NUUlZBUihwb3NpeF9yZXBsYWNlX19kb2NfXywKKyJyZXBsYWNlKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSlcblxuXAorUmVuYW1lIGEgZmlsZSBvciBkaXJlY3RvcnksIG92ZXJ3cml0aW5nIHRoZSBkZXN0aW5hdGlvbi5cblwKK1xuXAorSWYgZWl0aGVyIHNyY19kaXJfZmQgb3IgZHN0X2Rpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZVxuXAorICBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcmVzcGVjdGl2ZSBwYXRoIHN0cmluZyAoc3JjIG9yIGRzdClcblwKKyAgc2hvdWxkIGJlIHJlbGF0aXZlOyB0aGUgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitzcmNfZGlyX2ZkIGFuZCBkc3RfZGlyX2ZkLCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfcmVwbGFjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgcmV0dXJuIGludGVybmFsX3JlbmFtZShhcmdzLCBrd2FyZ3MsIDEpOworfQogCiBQeURvY19TVFJWQVIocG9zaXhfcm1kaXJfX2RvY19fLAotInJtZGlyKHBhdGgpXG5cblwKLVJlbW92ZSBhIGRpcmVjdG9yeS4iKTsKKyJybWRpcihwYXRoLCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAorUmVtb3ZlIGEgZGlyZWN0b3J5LlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcm1kaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfcm1kaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICByZXR1cm4gd2luMzJfMXN0cihhcmdzLCAicm1kaXIiLCAieTpybWRpciIsIFJlbW92ZURpcmVjdG9yeUEsICJVOnJtZGlyIiwgUmVtb3ZlRGlyZWN0b3J5Vyk7CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOnJtZGlyIiwga2V5d29yZHMsCisgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisjaWZkZWYgSEFWRV9VTkxJTktBVAorICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAogI2Vsc2UKLSAgICByZXR1cm4gcG9zaXhfMXN0cihhcmdzLCAiTyY6cm1kaXIiLCBybWRpcik7CisgICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKICNlbmRpZgotfQorICAgICAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLQotUHlEb2NfU1RSVkFSKHBvc2l4X3N0YXRfX2RvY19fLAotInN0YXQocGF0aCkgLT4gc3RhdCByZXN1bHRcblxuXAotUGVyZm9ybSBhIHN0YXQgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zdGF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiBwb3NpeF9kb19zdGF0KHNlbGYsIGFyZ3MsICJPJjpzdGF0IiwgU1RBVCwgIlU6c3RhdCIsIHdpbjMyX3N0YXRfdyk7CisgICAgaWYgKHBhdGgud2lkZSkKKyAgICAgICAgcmVzdWx0ID0gUmVtb3ZlRGlyZWN0b3J5VyhwYXRoLndpZGUpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUmVtb3ZlRGlyZWN0b3J5QShwYXRoLm5hcnJvdyk7CisgICAgcmVzdWx0ID0gIXJlc3VsdDsgLyogV2luZG93cywgc3VjY2Vzcz0xLCBVTklYLCBzdWNjZXNzPTAgKi8KICNlbHNlCi0gICAgcmV0dXJuIHBvc2l4X2RvX3N0YXQoc2VsZiwgYXJncywgIk8mOnN0YXQiLCBTVEFULCBOVUxMLCBOVUxMKTsKKyNpZmRlZiBIQVZFX1VOTElOS0FUCisgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyAgICAgICAgcmVzdWx0ID0gdW5saW5rYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgQVRfUkVNT1ZFRElSKTsKKyAgICBlbHNlCiAjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gcm1kaXIocGF0aC5uYXJyb3cpOworI2VuZGlmCisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigicm1kaXIiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKIApAQCAtMzMyMywxNjMgKzQzOTMsNDY4IEBACiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiBQeURvY19TVFJWQVIocG9zaXhfdW5saW5rX19kb2NfXywKLSJ1bmxpbmsocGF0aClcblxuXAotUmVtb3ZlIGEgZmlsZSAoc2FtZSBhcyByZW1vdmUocGF0aCkpLiIpOworInVubGluayhwYXRoLCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAorUmVtb3ZlIGEgZmlsZSAoc2FtZSBhcyByZW1vdmUoKSkuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIFB5RG9jX1NUUlZBUihwb3NpeF9yZW1vdmVfX2RvY19fLAotInJlbW92ZShwYXRoKVxuXG5cCi1SZW1vdmUgYSBmaWxlIChzYW1lIGFzIHVubGluayhwYXRoKSkuIik7CisicmVtb3ZlKHBhdGgsICosIGRpcl9mZD1Ob25lKVxuXG5cCitSZW1vdmUgYSBmaWxlIChzYW1lIGFzIHVubGluaygpKS5cblwKK1xuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3VubGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF91bmxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICByZXR1cm4gd2luMzJfMXN0cihhcmdzLCAicmVtb3ZlIiwgInk6cmVtb3ZlIiwgRGVsZXRlRmlsZUEsCi0gICAgICAgICAgICAgICAgICAgICAgIlU6cmVtb3ZlIiwgUHlfRGVsZXRlRmlsZVcpOworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjp1bmxpbmsiLCBrZXl3b3JkcywKKyAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyNpZmRlZiBIQVZFX1VOTElOS0FUCisgICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCiAjZWxzZQotICAgIHJldHVybiBwb3NpeF8xc3RyKGFyZ3MsICJPJjpyZW1vdmUiLCB1bmxpbmspOworICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCiAjZW5kaWYKKyAgICAgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAocGF0aC53aWRlKQorICAgICAgICByZXN1bHQgPSBQeV9EZWxldGVGaWxlVyhwYXRoLndpZGUpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gRGVsZXRlRmlsZUEocGF0aC5uYXJyb3cpOworICAgIHJlc3VsdCA9ICFyZXN1bHQ7IC8qIFdpbmRvd3MsIHN1Y2Nlc3M9MSwgVU5JWCwgc3VjY2Vzcz0wICovCisjZWxzZQorI2lmZGVmIEhBVkVfVU5MSU5LQVQKKyAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICByZXN1bHQgPSB1bmxpbmthdChkaXJfZmQsIHBhdGgubmFycm93LCAwKTsKKyAgICBlbHNlCisjZW5kaWYgLyogSEFWRV9VTkxJTktBVCAqLworICAgICAgICByZXN1bHQgPSB1bmxpbmsocGF0aC5uYXJyb3cpOworI2VuZGlmCisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigidW5saW5rIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCiAKLSNpZmRlZiBIQVZFX1VOQU1FCiBQeURvY19TVFJWQVIocG9zaXhfdW5hbWVfX2RvY19fLAotInVuYW1lKCkgLT4gKHN5c25hbWUsIG5vZGVuYW1lLCByZWxlYXNlLCB2ZXJzaW9uLCBtYWNoaW5lKVxuXG5cCi1SZXR1cm4gYSB0dXBsZSBpZGVudGlmeWluZyB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLiIpOworInVuYW1lKCkgLT4gdW5hbWVfcmVzdWx0XG5cblwKK1JldHVybiBhbiBvYmplY3QgaWRlbnRpZnlpbmcgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbS5cblwKK1RoZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgbmFtZWQgdHVwbGUgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczpcblwKKyAgKHN5c25hbWUsIG5vZGVuYW1lLCByZWxlYXNlLCB2ZXJzaW9uLCBtYWNoaW5lKSIpOwogCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9GaWVsZCB1bmFtZV9yZXN1bHRfZmllbGRzW10gPSB7CisgICAgeyJzeXNuYW1lIiwgICAgIm9wZXJhdGluZyBzeXN0ZW0gbmFtZSJ9LAorICAgIHsibm9kZW5hbWUiLCAgICJuYW1lIG9mIG1hY2hpbmUgb24gbmV0d29yayAoaW1wbGVtZW50YXRpb24tZGVmaW5lZCkifSwKKyAgICB7InJlbGVhc2UiLCAgICAib3BlcmF0aW5nIHN5c3RlbSByZWxlYXNlIn0sCisgICAgeyJ2ZXJzaW9uIiwgICAgIm9wZXJhdGluZyBzeXN0ZW0gdmVyc2lvbiJ9LAorICAgIHsibWFjaGluZSIsICAgICJoYXJkd2FyZSBpZGVudGlmaWVyIn0sCisgICAge05VTEx9Cit9OworCitQeURvY19TVFJWQVIodW5hbWVfcmVzdWx0X19kb2NfXywKKyJ1bmFtZV9yZXN1bHQ6IFJlc3VsdCBmcm9tIG9zLnVuYW1lKCkuXG5cblwKK1RoaXMgb2JqZWN0IG1heSBiZSBhY2Nlc3NlZCBlaXRoZXIgYXMgYSB0dXBsZSBvZlxuXAorICAoc3lzbmFtZSwgbm9kZW5hbWUsIHJlbGVhc2UsIHZlcnNpb24sIG1hY2hpbmUpLFxuXAorb3IgdmlhIHRoZSBhdHRyaWJ1dGVzIHN5c25hbWUsIG5vZGVuYW1lLCByZWxlYXNlLCB2ZXJzaW9uLCBhbmQgbWFjaGluZS5cblwKK1xuXAorU2VlIG9zLnVuYW1lIGZvciBtb3JlIGluZm9ybWF0aW9uLiIpOworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIHVuYW1lX3Jlc3VsdF9kZXNjID0geworICAgICJ1bmFtZV9yZXN1bHQiLCAvKiBuYW1lICovCisgICAgdW5hbWVfcmVzdWx0X19kb2NfXywgLyogZG9jICovCisgICAgdW5hbWVfcmVzdWx0X2ZpZWxkcywKKyAgICA1Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFVuYW1lUmVzdWx0VHlwZTsKKworCisjaWZkZWYgSEFWRV9VTkFNRQogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X3VuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQogewogICAgIHN0cnVjdCB1dHNuYW1lIHU7CiAgICAgaW50IHJlczsKKyAgICBQeU9iamVjdCAqdmFsdWU7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmVzID0gdW5hbWUoJnUpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoc3Nzc3MpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1LnN5c25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdS5ub2RlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1LnJlbGVhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdS52ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgIHUubWFjaGluZSk7CisKKyAgICB2YWx1ZSA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZVbmFtZVJlc3VsdFR5cGUpOworICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworI2RlZmluZSBTRVQoaSwgZmllbGQpIFwKKyAgICB7IFwKKyAgICBQeU9iamVjdCAqbyA9IFB5VW5pY29kZV9EZWNvZGVBU0NJSShmaWVsZCwgc3RybGVuKGZpZWxkKSwgTlVMTCk7IFwKKyAgICBpZiAoIW8pIHsgXAorICAgICAgICBQeV9ERUNSRUYodmFsdWUpOyBcCisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfSBcCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2YWx1ZSwgaSwgbyk7IFwKKyAgICB9IFwKKworICAgIFNFVCgwLCB1LnN5c25hbWUpOworICAgIFNFVCgxLCB1Lm5vZGVuYW1lKTsKKyAgICBTRVQoMiwgdS5yZWxlYXNlKTsKKyAgICBTRVQoMywgdS52ZXJzaW9uKTsKKyAgICBTRVQoNCwgdS5tYWNoaW5lKTsKKworI3VuZGVmIFNFVAorCisgICAgcmV0dXJuIHZhbHVlOwogfQogI2VuZGlmIC8qIEhBVkVfVU5BTUUgKi8KIAotc3RhdGljIGludAotZXh0cmFjdF90aW1lKFB5T2JqZWN0ICp0LCB0aW1lX3QqIHNlYywgbG9uZyogdXNlYykKLXsKLSAgICB0aW1lX3QgaW50dmFsOwotICAgIGlmIChQeUZsb2F0X0NoZWNrKHQpKSB7Ci0gICAgICAgIGRvdWJsZSB0dmFsID0gUHlGbG9hdF9Bc0RvdWJsZSh0KTsKLSAgICAgICAgUHlPYmplY3QgKmludG9iaiA9IFB5TnVtYmVyX0xvbmcodCk7Ci0gICAgICAgIGlmICghaW50b2JqKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotI2lmIFNJWkVPRl9USU1FX1QgPiBTSVpFT0ZfTE9ORwotICAgICAgICBpbnR2YWwgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhpbnRvYmopOwotI2Vsc2UKLSAgICAgICAgaW50dmFsID0gUHlMb25nX0FzTG9uZyhpbnRvYmopOwotI2VuZGlmCi0gICAgICAgIFB5X0RFQ1JFRihpbnRvYmopOwotICAgICAgICBpZiAoaW50dmFsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICpzZWMgPSBpbnR2YWw7Ci0gICAgICAgICp1c2VjID0gKGxvbmcpKCh0dmFsIC0gaW50dmFsKSAqIDFlNik7IC8qIGNhbid0IGV4Y2VlZCAxMDAwMDAwICovCi0gICAgICAgIGlmICgqdXNlYyA8IDApCi0gICAgICAgICAgICAvKiBJZiByb3VuZGluZyBnYXZlIHVzIGEgbmVnYXRpdmUgbnVtYmVyLAotICAgICAgICAgICAgICAgdHJ1bmNhdGUuICAqLwotICAgICAgICAgICAgKnVzZWMgPSAwOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0jaWYgU0laRU9GX1RJTUVfVCA+IFNJWkVPRl9MT05HCi0gICAgaW50dmFsID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sodCk7Ci0jZWxzZQotICAgIGludHZhbCA9IFB5TG9uZ19Bc0xvbmcodCk7Ci0jZW5kaWYKLSAgICBpZiAoaW50dmFsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICAqc2VjID0gaW50dmFsOwotICAgICp1c2VjID0gMDsKLSAgICByZXR1cm4gMDsKLX0KIAogUHlEb2NfU1RSVkFSKHBvc2l4X3V0aW1lX19kb2NfXywKLSJ1dGltZShwYXRoLCAoYXRpbWUsIG10aW1lKSlcblwKLXV0aW1lKHBhdGgsIE5vbmUpXG5cblwKLVNldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lIG9mIHRoZSBmaWxlIHRvIHRoZSBnaXZlbiB2YWx1ZXMuICBJZiB0aGVcblwKLXNlY29uZCBmb3JtIGlzIHVzZWQsIHNldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lcyB0byB0aGUgY3VycmVudCB0aW1lLiIpOworInV0aW1lKHBhdGgsIHRpbWVzPU5vbmUsICosIG5zPU5vbmUsIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblwKK1NldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lIG9mIHBhdGguXG5cCitcblwKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi5cblwKK1xuXAorSWYgdGltZXMgaXMgbm90IE5vbmUsIGl0IG11c3QgYmUgYSB0dXBsZSAoYXRpbWUsIG10aW1lKTtcblwKKyAgICBhdGltZSBhbmQgbXRpbWUgc2hvdWxkIGJlIGV4cHJlc3NlZCBhcyBmbG9hdCBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaC5cblwKK0lmIG5zIGlzIG5vdCBOb25lLCBpdCBtdXN0IGJlIGEgdHVwbGUgKGF0aW1lX25zLCBtdGltZV9ucyk7XG5cCisgICAgYXRpbWVfbnMgYW5kIG10aW1lX25zIHNob3VsZCBiZSBleHByZXNzZWQgYXMgaW50ZWdlciBuYW5vc2Vjb25kc1xuXAorICAgIHNpbmNlIHRoZSBlcG9jaC5cblwKK0lmIGJvdGggdGltZXMgYW5kIG5zIGFyZSBOb25lLCB1dGltZSB1c2VzIHRoZSBjdXJyZW50IHRpbWUuXG5cCitTcGVjaWZ5aW5nIHR1cGxlcyBmb3IgYm90aCB0aW1lcyBhbmQgbnMgaXMgYW4gZXJyb3IuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgdXRpbWUgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG5cCisgIGxpbmsgcG9pbnRzIHRvLlxuXAorSXQgaXMgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGhcblwKKyAgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCitkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGF2YWlsYWJsZSBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3V0aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgUHlPYmplY3QgKmFyZzsKLSAgICBQeVVuaWNvZGVPYmplY3QgKm9id3BhdGg7Ci0gICAgd2NoYXJfdCAqd3BhdGggPSBOVUxMOwotICAgIFB5T2JqZWN0ICpvYXBhdGg7Ci0gICAgY2hhciAqYXBhdGg7Ci0gICAgSEFORExFIGhGaWxlOwotICAgIHRpbWVfdCBhdGltZXNlYywgbXRpbWVzZWM7Ci0gICAgbG9uZyBhdXNlYywgbXVzZWM7Ci0gICAgRklMRVRJTUUgYXRpbWUsIG10aW1lOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGludCAgICBub3c7CisgICAgdGltZV90IGF0aW1lX3M7CisgICAgbG9uZyAgIGF0aW1lX25zOworICAgIHRpbWVfdCBtdGltZV9zOworICAgIGxvbmcgICBtdGltZV9uczsKK30gdXRpbWVfdDsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVT3w6dXRpbWUiLCAmb2J3cGF0aCwgJmFyZykpIHsKLSAgICAgICAgd3BhdGggPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYndwYXRoKTsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBoRmlsZSA9IENyZWF0ZUZpbGVXKHdwYXRoLCBGSUxFX1dSSVRFX0FUVFJJQlVURVMsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgT1BFTl9FWElTVElORywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywgTlVMTCk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmIChoRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJ1dGltZSIsIHdwYXRoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgLyogRHJvcCB0aGUgYXJndW1lbnQgcGFyc2luZyBlcnJvciBhcyBuYXJyb3cgc3RyaW5ncwotICAgICAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKy8qCisgKiB0aGVzZSBtYWNyb3MgYXNzdW1lIHRoYXQgInV0aW1lIiBpcyBhIHBvaW50ZXIgdG8gYSB1dGltZV90CisgKiB0aGV5IGFsc28gaW50ZW50aW9uYWxseSBsZWFrIHRoZSBkZWNsYXJhdGlvbiBvZiBhIHBvaW50ZXIgbmFtZWQgInRpbWUiCisgKi8KKyNkZWZpbmUgVVRJTUVfVE9fVElNRVNQRUMgXAorICAgIHN0cnVjdCB0aW1lc3BlYyB0c1syXTsgXAorICAgIHN0cnVjdCB0aW1lc3BlYyAqdGltZTsgXAorICAgIGlmICh1dGltZS0+bm93KSBcCisgICAgICAgIHRpbWUgPSBOVUxMOyBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgdHNbMF0udHZfc2VjID0gdXRpbWUtPmF0aW1lX3M7IFwKKyAgICAgICAgdHNbMF0udHZfbnNlYyA9IHV0aW1lLT5hdGltZV9uczsgXAorICAgICAgICB0c1sxXS50dl9zZWMgPSB1dGltZS0+bXRpbWVfczsgXAorICAgICAgICB0c1sxXS50dl9uc2VjID0gdXRpbWUtPm10aW1lX25zOyBcCisgICAgICAgIHRpbWUgPSB0czsgXAorICAgIH0gXAogCi0gICAgaWYgKCF3cGF0aCkgewotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTzp1dGltZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvYXBhdGgsICZhcmcpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGFwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvYXBhdGgpOwotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZUEoYXBhdGgsIEZJTEVfV1JJVEVfQVRUUklCVVRFUywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBPUEVOX0VYSVNUSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTLCBOVUxMKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgICAgICB3aW4zMl9lcnJvcigidXRpbWUiLCBhcGF0aCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob2FwYXRoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihvYXBhdGgpOworI2RlZmluZSBVVElNRV9UT19USU1FVkFMIFwKKyAgICBzdHJ1Y3QgdGltZXZhbCB0dlsyXTsgXAorICAgIHN0cnVjdCB0aW1ldmFsICp0aW1lOyBcCisgICAgaWYgKHV0aW1lLT5ub3cpIFwKKyAgICAgICAgdGltZSA9IE5VTEw7IFwKKyAgICBlbHNlIHsgXAorICAgICAgICB0dlswXS50dl9zZWMgPSB1dGltZS0+YXRpbWVfczsgXAorICAgICAgICB0dlswXS50dl91c2VjID0gdXRpbWUtPmF0aW1lX25zIC8gMTAwMDsgXAorICAgICAgICB0dlsxXS50dl9zZWMgPSB1dGltZS0+bXRpbWVfczsgXAorICAgICAgICB0dlsxXS50dl91c2VjID0gdXRpbWUtPm10aW1lX25zIC8gMTAwMDsgXAorICAgICAgICB0aW1lID0gdHY7IFwKKyAgICB9IFwKKworI2RlZmluZSBVVElNRV9UT19VVElNQlVGIFwKKyAgICBzdHJ1Y3QgdXRpbWJ1ZiB1WzJdOyBcCisgICAgc3RydWN0IHV0aW1idWYgKnRpbWU7IFwKKyAgICBpZiAodXRpbWUtPm5vdykgXAorICAgICAgICB0aW1lID0gTlVMTDsgXAorICAgIGVsc2UgeyBcCisgICAgICAgIHUuYWN0aW1lID0gdXRpbWUtPmF0aW1lX3M7IFwKKyAgICAgICAgdS5tb2R0aW1lID0gdXRpbWUtPm10aW1lX3M7IFwKKyAgICAgICAgdGltZSA9IHU7IFwKICAgICB9CiAKLSAgICBpZiAoYXJnID09IFB5X05vbmUpIHsKKyNkZWZpbmUgVVRJTUVfVE9fVElNRV9UIFwKKyAgICB0aW1lX3QgdGltZXRbMl07IFwKKyAgICBzdHJ1Y3QgdGltZXQgdGltZTsgXAorICAgIGlmICh1dGltZS0+bm93KSBcCisgICAgICAgIHRpbWUgPSBOVUxMOyBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgdGltZXRbMF0gPSB1dGltZS0+YXRpbWVfczsgXAorICAgICAgICB0aW1ldFsxXSA9IHV0aW1lLT5tdGltZV9zOyBcCisgICAgICAgIHRpbWUgPSAmdGltZXQ7IFwKKyAgICB9IFwKKworCisjZGVmaW5lIFVUSU1FX0hBVkVfRElSX0ZEIChkZWZpbmVkKEhBVkVfRlVUSU1FU0FUKSB8fCBkZWZpbmVkKEhBVkVfVVRJTUVOU0FUKSkKKworI2lmIFVUSU1FX0hBVkVfRElSX0ZECisKK3N0YXRpYyBpbnQKK3V0aW1lX2Rpcl9mZCh1dGltZV90ICp1dGltZSwgaW50IGRpcl9mZCwgY2hhciAqcGF0aCwgaW50IGZvbGxvd19zeW1saW5rcykKK3sKKyNpZmRlZiBIQVZFX1VUSU1FTlNBVAorICAgIGludCBmbGFncyA9IGZvbGxvd19zeW1saW5rcyA/IDAgOiBBVF9TWU1MSU5LX05PRk9MTE9XOworICAgIFVUSU1FX1RPX1RJTUVTUEVDOworICAgIHJldHVybiB1dGltZW5zYXQoZGlyX2ZkLCBwYXRoLCB0aW1lLCBmbGFncyk7CisjZWxpZiBkZWZpbmVkKEhBVkVfRlVUSU1FU0FUKQorICAgIFVUSU1FX1RPX1RJTUVWQUw7CisgICAgLyoKKyAgICAgKiBmb2xsb3dfc3ltbGlua3Mgd2lsbCBuZXZlciBiZSBmYWxzZSBoZXJlOworICAgICAqIHdlIG9ubHkgYWxsb3cgIWZvbGxvd19zeW1saW5rcyBhbmQgZGlyX2ZkIHRvZ2V0aGVyCisgICAgICogaWYgd2UgaGF2ZSB1dGltZW5zYXQoKQorICAgICAqLworICAgIGFzc2VydChmb2xsb3dfc3ltbGlua3MpOworICAgIHJldHVybiBmdXRpbWVzYXQoZGlyX2ZkLCBwYXRoLCB0aW1lKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKworI2RlZmluZSBVVElNRV9IQVZFX0ZEIChkZWZpbmVkKEhBVkVfRlVUSU1FUykgfHwgZGVmaW5lZChIQVZFX0ZVVElNRU5TKSkKKworI2lmIFVUSU1FX0hBVkVfRkQKKworc3RhdGljIGludAordXRpbWVfZmQodXRpbWVfdCAqdXRpbWUsIGludCBmZCkKK3sKKyNpZmRlZiBIQVZFX0ZVVElNRU5TCisgICAgVVRJTUVfVE9fVElNRVNQRUM7CisgICAgcmV0dXJuIGZ1dGltZW5zKGZkLCB0aW1lKTsKKyNlbHNlCisgICAgVVRJTUVfVE9fVElNRVZBTDsKKyAgICByZXR1cm4gZnV0aW1lcyhmZCwgdGltZSk7CisjZW5kaWYKK30KKworI2VuZGlmCisKKworI2RlZmluZSBVVElNRV9IQVZFX05PRk9MTE9XX1NZTUxJTktTIFwKKyAgICAgICAgKGRlZmluZWQoSEFWRV9VVElNRU5TQVQpIHx8IGRlZmluZWQoSEFWRV9MVVRJTUVTKSkKKworI2lmIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKKworc3RhdGljIGludAordXRpbWVfbm9mb2xsb3dfc3ltbGlua3ModXRpbWVfdCAqdXRpbWUsIGNoYXIgKnBhdGgpCit7CisjaWZkZWYgSEFWRV9VVElNRU5TQVQKKyAgICBVVElNRV9UT19USU1FU1BFQzsKKyAgICByZXR1cm4gdXRpbWVuc2F0KERFRkFVTFRfRElSX0ZELCBwYXRoLCB0aW1lLCBBVF9TWU1MSU5LX05PRk9MTE9XKTsKKyNlbHNlCisgICAgVVRJTUVfVE9fVElNRVZBTDsKKyAgICByZXR1cm4gbHV0aW1lcyhwYXRoLCB0aW1lKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKworI2lmbmRlZiBNU19XSU5ET1dTCisKK3N0YXRpYyBpbnQKK3V0aW1lX2RlZmF1bHQodXRpbWVfdCAqdXRpbWUsIGNoYXIgKnBhdGgpCit7CisjaWZkZWYgSEFWRV9VVElNRU5TQVQKKyAgICBVVElNRV9UT19USU1FU1BFQzsKKyAgICByZXR1cm4gdXRpbWVuc2F0KERFRkFVTFRfRElSX0ZELCBwYXRoLCB0aW1lLCAwKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9VVElNRVMpCisgICAgVVRJTUVfVE9fVElNRVZBTDsKKyAgICByZXR1cm4gdXRpbWVzKHBhdGgsIHRpbWUpOworI2VsaWYgZGVmaW5lZChIQVZFX1VUSU1FX0gpCisgICAgVVRJTUVfVE9fVVRJTUJVRjsKKyAgICByZXR1cm4gdXRpbWUocGF0aCwgdGltZSk7CisjZWxzZQorICAgIFVUSU1FX1RPX1RJTUVfVDsKKyAgICByZXR1cm4gdXRpbWUocGF0aCwgdGltZSk7CisjZW5kaWYKK30KKworI2VuZGlmCisKK3N0YXRpYyBpbnQKK3NwbGl0X3B5X2xvbmdfdG9fc19hbmRfbnMoUHlPYmplY3QgKnB5X2xvbmcsIHRpbWVfdCAqcywgbG9uZyAqbnMpCit7CisgICAgaW50IHJlc3VsdCA9IDA7CisgICAgUHlPYmplY3QgKmRpdm1vZDsKKyAgICBkaXZtb2QgPSBQeU51bWJlcl9EaXZtb2QocHlfbG9uZywgYmlsbGlvbik7CisgICAgaWYgKCFkaXZtb2QpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAqcyA9IF9QeUxvbmdfQXNUaW1lX3QoUHlUdXBsZV9HRVRfSVRFTShkaXZtb2QsIDApKTsKKyAgICBpZiAoKCpzID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgKm5zID0gUHlMb25nX0FzTG9uZyhQeVR1cGxlX0dFVF9JVEVNKGRpdm1vZCwgMSkpOworICAgIGlmICgoKm5zID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICByZXN1bHQgPSAxOworZXhpdDoKKyAgICBQeV9YREVDUkVGKGRpdm1vZCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3V0aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBQeU9iamVjdCAqdGltZXMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpucyA9IE5VTEw7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAidGltZXMiLCAibnMiLCAiZGlyX2ZkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKworICAgIHV0aW1lX3QgdXRpbWU7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgSEFORExFIGhGaWxlOworICAgIEZJTEVUSU1FIGF0aW1lLCBtdGltZTsKKyNlbHNlCisgICAgaW50IHJlc3VsdDsKKyNlbmRpZgorCisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisjaWYgVVRJTUVfSEFWRV9GRAorICAgIHBhdGguYWxsb3dfZmQgPSAxOworI2VuZGlmCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAorICAgICAgICAgICAgIk8mfE8kT08mcDp1dGltZSIsIGtleXdvcmRzLAorICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAgICAgJnRpbWVzLCAmbnMsCisjaWYgVVRJTUVfSEFWRV9ESVJfRkQKKyAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQsCisjZWxzZQorICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkLAorI2VuZGlmCisgICAgICAgICAgICAmZm9sbG93X3N5bWxpbmtzCisgICAgICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICh0aW1lcyAmJiAodGltZXMgIT0gUHlfTm9uZSkgJiYgbnMpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAidXRpbWU6IHlvdSBtYXkgc3BlY2lmeSBlaXRoZXIgJ3RpbWVzJyIKKyAgICAgICAgICAgICAgICAgICAgICIgb3IgJ25zJyBidXQgbm90IGJvdGgiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIGlmICh0aW1lcyAmJiAodGltZXMgIT0gUHlfTm9uZSkpIHsKKyAgICAgICAgaWYgKCFQeVR1cGxlX0NoZWNrRXhhY3QodGltZXMpIHx8IChQeVR1cGxlX1NpemUodGltZXMpICE9IDIpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ1dGltZTogJ3RpbWVzJyBtdXN0IGJlIGVpdGhlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiIGEgdHVwbGUgb2YgdHdvIGludHMgb3IgTm9uZSIpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIHV0aW1lLm5vdyA9IDA7CisgICAgICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXNwZWMoUHlUdXBsZV9HRVRfSVRFTSh0aW1lcywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnV0aW1lLmF0aW1lX3MsICZ1dGltZS5hdGltZV9ucykgPT0gLTEgfHwKKyAgICAgICAgICAgIF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhQeVR1cGxlX0dFVF9JVEVNKHRpbWVzLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXRpbWUubXRpbWVfcywgJnV0aW1lLm10aW1lX25zKSA9PSAtMSkgeworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKG5zKSB7CisgICAgICAgIGlmICghUHlUdXBsZV9DaGVja0V4YWN0KG5zKSB8fCAoUHlUdXBsZV9TaXplKG5zKSAhPSAyKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidXRpbWU6ICducycgbXVzdCBiZSBhIHR1cGxlIG9mIHR3byBpbnRzIik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgdXRpbWUubm93ID0gMDsKKyAgICAgICAgaWYgKCFzcGxpdF9weV9sb25nX3RvX3NfYW5kX25zKFB5VHVwbGVfR0VUX0lURU0obnMsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXRpbWUuYXRpbWVfcywgJnV0aW1lLmF0aW1lX25zKSB8fAorICAgICAgICAgICAgIXNwbGl0X3B5X2xvbmdfdG9fc19hbmRfbnMoUHlUdXBsZV9HRVRfSVRFTShucywgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXRpbWUubXRpbWVfcywgJnV0aW1lLm10aW1lX25zKSkgeworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiB0aW1lcyBhbmQgbnMgYXJlIGJvdGggTm9uZS91bnNwZWNpZmllZC4gdXNlICJub3ciLiAqLworICAgICAgICB1dGltZS5ub3cgPSAxOworICAgIH0KKworI2lmICFVVElNRV9IQVZFX05PRk9MTE9XX1NZTUxJTktTCisgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoInV0aW1lIiwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworI2VuZGlmCisKKyAgICBpZiAocGF0aF9hbmRfZGlyX2ZkX2ludmFsaWQoInV0aW1lIiwgJnBhdGgsIGRpcl9mZCkgfHwKKyAgICAgICAgZGlyX2ZkX2FuZF9mZF9pbnZhbGlkKCJ1dGltZSIsIGRpcl9mZCwgcGF0aC5mZCkgfHwKKyAgICAgICAgZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJ1dGltZSIsIHBhdGguZmQsIGZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKworI2lmICFkZWZpbmVkKEhBVkVfVVRJTUVOU0FUKQorICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSAmJiAoIWZvbGxvd19zeW1saW5rcykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAidXRpbWU6IGNhbm5vdCB1c2UgZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgIgorICAgICAgICAgICAgICAgICAgICAgInRvZ2V0aGVyIG9uIHRoaXMgcGxhdGZvcm0iKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbmRpZgorCisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocGF0aC53aWRlKQorICAgICAgICBoRmlsZSA9IENyZWF0ZUZpbGVXKHBhdGgud2lkZSwgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOworICAgIGVsc2UKKyAgICAgICAgaEZpbGUgPSBDcmVhdGVGaWxlQShwYXRoLm5hcnJvdywgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIHdpbjMyX2Vycm9yX29iamVjdCgidXRpbWUiLCBwYXRoLm9iamVjdCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICBpZiAodXRpbWUubm93KSB7CiAgICAgICAgIFNZU1RFTVRJTUUgbm93OwogICAgICAgICBHZXRTeXN0ZW1UaW1lKCZub3cpOwogICAgICAgICBpZiAoIVN5c3RlbVRpbWVUb0ZpbGVUaW1lKCZub3csICZtdGltZSkgfHwKICAgICAgICAgICAgICFTeXN0ZW1UaW1lVG9GaWxlVGltZSgmbm93LCAmYXRpbWUpKSB7CiAgICAgICAgICAgICB3aW4zMl9lcnJvcigidXRpbWUiLCBOVUxMKTsKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgfQogICAgIH0KLSAgICBlbHNlIGlmICghUHlUdXBsZV9DaGVjayhhcmcpIHx8IFB5VHVwbGVfU2l6ZShhcmcpICE9IDIpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1dGltZSgpIGFyZyAyIG11c3QgYmUgYSB0dXBsZSAoYXRpbWUsIG10aW1lKSIpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQogICAgIGVsc2UgewotICAgICAgICBpZiAoZXh0cmFjdF90aW1lKFB5VHVwbGVfR0VUX0lURU0oYXJnLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmYXRpbWVzZWMsICZhdXNlYykgPT0gLTEpCi0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIHRpbWVfdF90b19GSUxFX1RJTUUoYXRpbWVzZWMsIDEwMDAqYXVzZWMsICZhdGltZSk7Ci0gICAgICAgIGlmIChleHRyYWN0X3RpbWUoUHlUdXBsZV9HRVRfSVRFTShhcmcsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICZtdGltZXNlYywgJm11c2VjKSA9PSAtMSkKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgdGltZV90X3RvX0ZJTEVfVElNRShtdGltZXNlYywgMTAwMCptdXNlYywgJm10aW1lKTsKKyAgICAgICAgdGltZV90X3RvX0ZJTEVfVElNRSh1dGltZS5hdGltZV9zLCB1dGltZS5hdGltZV9ucywgJmF0aW1lKTsKKyAgICAgICAgdGltZV90X3RvX0ZJTEVfVElNRSh1dGltZS5tdGltZV9zLCB1dGltZS5tdGltZV9ucywgJm10aW1lKTsKICAgICB9CiAgICAgaWYgKCFTZXRGaWxlVGltZShoRmlsZSwgTlVMTCwgJmF0aW1lLCAmbXRpbWUpKSB7CiAgICAgICAgIC8qIEF2b2lkIHB1dHRpbmcgdGhlIGZpbGUgbmFtZSBpbnRvIHRoZSBlcnJvciBoZXJlLApAQCAtMzQ4Nyw5MyArNDg2Miw1MiBAQAogICAgICAgICAgICBzb21ldGhpbmcgaXMgd3Jvbmcgd2l0aCB0aGUgZmlsZSwgd2hlbiBpdCBhbHNvCiAgICAgICAgICAgIGNvdWxkIGJlIHRoZSB0aW1lIHN0YW1wIHRoYXQgZ2l2ZXMgYSBwcm9ibGVtLiAqLwogICAgICAgICB3aW4zMl9lcnJvcigidXRpbWUiLCBOVUxMKTsKLSAgICAgICAgZ290byBkb25lOworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXN1bHQgPSBQeV9Ob25lOwotZG9uZToKLSAgICBDbG9zZUhhbmRsZShoRmlsZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKLSAgICB0aW1lX3QgYXRpbWUsIG10aW1lOwotICAgIGxvbmcgYXVzZWMsIG11c2VjOwotICAgIGludCByZXM7Ci0gICAgUHlPYmplY3QqIGFyZzsKKyNpZiBVVElNRV9IQVZFX05PRk9MTE9XX1NZTUxJTktTCisgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAoZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKSkKKyAgICAgICAgcmVzdWx0ID0gdXRpbWVfbm9mb2xsb3dfc3ltbGlua3MoJnV0aW1lLCBwYXRoLm5hcnJvdyk7CisgICAgZWxzZQorI2VuZGlmCiAKLSNpZiBkZWZpbmVkKEhBVkVfVVRJTUVTKQotICAgIHN0cnVjdCB0aW1ldmFsIGJ1ZlsyXTsKLSNkZWZpbmUgQVRJTUUgYnVmWzBdLnR2X3NlYwotI2RlZmluZSBNVElNRSBidWZbMV0udHZfc2VjCi0jZWxpZiBkZWZpbmVkKEhBVkVfVVRJTUVfSCkKLS8qIFhYWCBzaG91bGQgZGVmaW5lIHN0cnVjdCB1dGltYnVmIGluc3RlYWQsIGFib3ZlICovCi0gICAgc3RydWN0IHV0aW1idWYgYnVmOwotI2RlZmluZSBBVElNRSBidWYuYWN0aW1lCi0jZGVmaW5lIE1USU1FIGJ1Zi5tb2R0aW1lCi0jZGVmaW5lIFVUSU1FX0FSRyAmYnVmCi0jZWxzZSAvKiBIQVZFX1VUSU1FUyAqLwotICAgIHRpbWVfdCBidWZbMl07Ci0jZGVmaW5lIEFUSU1FIGJ1ZlswXQotI2RlZmluZSBNVElNRSBidWZbMV0KLSNkZWZpbmUgVVRJTUVfQVJHIGJ1ZgotI2VuZGlmIC8qIEhBVkVfVVRJTUVTICovCisjaWYgVVRJTUVfSEFWRV9ESVJfRkQKKyAgICBpZiAoKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwgKCFmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXN1bHQgPSB1dGltZV9kaXJfZmQoJnV0aW1lLCBkaXJfZmQsIHBhdGgubmFycm93LCBmb2xsb3dfc3ltbGlua3MpOworICAgIGVsc2UKKyNlbmRpZgogCisjaWYgVVRJTUVfSEFWRV9GRAorICAgIGlmIChwYXRoLmZkICE9IC0xKQorICAgICAgICByZXN1bHQgPSB1dGltZV9mZCgmdXRpbWUsIHBhdGguZmQpOworICAgIGVsc2UKKyNlbmRpZgogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk86dXRpbWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBpZiAoYXJnID09IFB5X05vbmUpIHsKLSAgICAgICAgLyogb3B0aW9uYWwgdGltZSB2YWx1ZXMgbm90IGdpdmVuICovCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzID0gdXRpbWUocGF0aCwgTlVMTCk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgcmVzdWx0ID0gdXRpbWVfZGVmYXVsdCgmdXRpbWUsIHBhdGgubmFycm93KTsKKworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0IDwgMCkgeworICAgICAgICAvKiBzZWUgcHJldmlvdXMgY29tbWVudCBhYm91dCBub3QgcHV0dGluZyBmaWxlbmFtZSBpbiBlcnJvciBoZXJlICovCisgICAgICAgIHJldHVybl92YWx1ZSA9IHBvc2l4X2Vycm9yKCk7CisgICAgICAgIGdvdG8gZXhpdDsKICAgICB9Ci0gICAgZWxzZSBpZiAoIVB5VHVwbGVfQ2hlY2soYXJnKSB8fCBQeVR1cGxlX1NpemUoYXJnKSAhPSAyKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidXRpbWUoKSBhcmcgMiBtdXN0IGJlIGEgdHVwbGUgKGF0aW1lLCBtdGltZSkiKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoZXh0cmFjdF90aW1lKFB5VHVwbGVfR0VUX0lURU0oYXJnLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmYXRpbWUsICZhdXNlYykgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoZXh0cmFjdF90aW1lKFB5VHVwbGVfR0VUX0lURU0oYXJnLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmbXRpbWUsICZtdXNlYykgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBBVElNRSA9IGF0aW1lOwotICAgICAgICBNVElNRSA9IG10aW1lOwotI2lmZGVmIEhBVkVfVVRJTUVTCi0gICAgICAgIGJ1ZlswXS50dl91c2VjID0gYXVzZWM7Ci0gICAgICAgIGJ1ZlsxXS50dl91c2VjID0gbXVzZWM7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzID0gdXRpbWVzKHBhdGgsIGJ1Zik7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0jZWxzZQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJlcyA9IHV0aW1lKHBhdGgsIFVUSU1FX0FSRyk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0jZW5kaWYgLyogSEFWRV9VVElNRVMgKi8KLSAgICB9Ci0gICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9wYXRoKTsKLSAgICB9Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci0jdW5kZWYgVVRJTUVfQVJHCi0jdW5kZWYgQVRJTUUKLSN1bmRlZiBNVElNRQorCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwotfQogCisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKGhGaWxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICBDbG9zZUhhbmRsZShoRmlsZSk7CisjZW5kaWYKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQogCiAvKiBQcm9jZXNzIG9wZXJhdGlvbnMgKi8KIApAQCAtMzYxOCw3OSArNDk1Miw3IEBACiB9CiAjZW5kaWYKIAotCi0jaWZkZWYgSEFWRV9FWEVDVgotUHlEb2NfU1RSVkFSKHBvc2l4X2V4ZWN2X19kb2NfXywKLSJleGVjdihwYXRoLCBhcmdzKVxuXG5cCi1FeGVjdXRlIGFuIGV4ZWN1dGFibGUgcGF0aCB3aXRoIGFyZ3VtZW50cywgcmVwbGFjaW5nIGN1cnJlbnQgcHJvY2Vzcy5cblwKLVxuXAotICAgIHBhdGg6IHBhdGggb2YgZXhlY3V0YWJsZSBmaWxlXG5cCi0gICAgYXJnczogdHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9leGVjdihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7Ci0gICAgUHlPYmplY3QgKmFyZ3Y7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0OwotICAgIFB5X3NzaXplX3QgaSwgYXJnYzsKLSAgICBQeU9iamVjdCAqKCpnZXRpdGVtKShQeU9iamVjdCAqLCBQeV9zc2l6ZV90KTsKLQotICAgIC8qIGV4ZWN2IGhhcyB0d28gYXJndW1lbnRzOiAocGF0aCwgYXJndiksIHdoZXJlCi0gICAgICAgYXJndiBpcyBhIGxpc3Qgb3IgdHVwbGUgb2Ygc3RyaW5ncy4gKi8KLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPOmV4ZWN2IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmb3BhdGgsICZhcmd2KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIGlmIChQeUxpc3RfQ2hlY2soYXJndikpIHsKLSAgICAgICAgYXJnYyA9IFB5TGlzdF9TaXplKGFyZ3YpOwotICAgICAgICBnZXRpdGVtID0gUHlMaXN0X0dldEl0ZW07Ci0gICAgfQotICAgIGVsc2UgaWYgKFB5VHVwbGVfQ2hlY2soYXJndikpIHsKLSAgICAgICAgYXJnYyA9IFB5VHVwbGVfU2l6ZShhcmd2KTsKLSAgICAgICAgZ2V0aXRlbSA9IFB5VHVwbGVfR2V0SXRlbTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJleGVjdigpIGFyZyAyIG11c3QgYmUgYSB0dXBsZSBvciBsaXN0Iik7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoYXJnYyA8IDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJleGVjdigpIGFyZyAyIG11c3Qgbm90IGJlIGVtcHR5Iik7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGFyZ3ZsaXN0ID0gUHlNZW1fTkVXKGNoYXIgKiwgYXJnYysxKTsKLSAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0gICAgZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykgewotICAgICAgICBpZiAoIWZzY29udmVydF9zdHJkdXAoKCpnZXRpdGVtKShhcmd2LCBpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcmd2bGlzdFtpXSkpIHsKLSAgICAgICAgICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBpKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4ZWN2KCkgYXJnIDIgbXVzdCBjb250YWluIG9ubHkgc3RyaW5ncyIpOwotICAgICAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgIH0KLSAgICB9Ci0gICAgYXJndmxpc3RbYXJnY10gPSBOVUxMOwotCi0gICAgZXhlY3YocGF0aCwgYXJndmxpc3QpOwotCi0gICAgLyogSWYgd2UgZ2V0IGhlcmUgaXQncyBkZWZpbml0ZWx5IGFuIGVycm9yICovCi0KLSAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgYXJnYyk7Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLX0KLQorI2lmIGRlZmluZWQoSEFWRV9FWEVDVikgfHwgZGVmaW5lZCAoSEFWRV9GRVhFQ1ZFKQogc3RhdGljIGNoYXIqKgogcGFyc2VfZW52bGlzdChQeU9iamVjdCogZW52LCBQeV9zc2l6ZV90ICplbnZjX3B0cikKIHsKQEAgLTM3NzIsODcgKzUwMzQsMTYyIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBjaGFyKioKK3BhcnNlX2FyZ2xpc3QoUHlPYmplY3QqIGFyZ3YsIFB5X3NzaXplX3QgKmFyZ2MpCit7CisgICAgaW50IGk7CisgICAgY2hhciAqKmFyZ3ZsaXN0ID0gUHlNZW1fTkVXKGNoYXIgKiwgKmFyZ2MrMSk7CisgICAgaWYgKGFyZ3ZsaXN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCAqYXJnYzsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0KiBpdGVtID0gUHlTZXF1ZW5jZV9JVEVNKGFyZ3YsIGkpOworICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBpZiAoIWZzY29udmVydF9zdHJkdXAoaXRlbSwgJmFyZ3ZsaXN0W2ldKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICB9CisgICAgYXJndmxpc3RbKmFyZ2NdID0gTlVMTDsKKyAgICByZXR1cm4gYXJndmxpc3Q7CitmYWlsOgorICAgICphcmdjID0gaTsKKyAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgKmFyZ2MpOworICAgIHJldHVybiBOVUxMOworfQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0VYRUNWCitQeURvY19TVFJWQVIocG9zaXhfZXhlY3ZfX2RvY19fLAorImV4ZWN2KHBhdGgsIGFyZ3MpXG5cblwKK0V4ZWN1dGUgYW4gZXhlY3V0YWJsZSBwYXRoIHdpdGggYXJndW1lbnRzLCByZXBsYWNpbmcgY3VycmVudCBwcm9jZXNzLlxuXAorXG5cCisgICAgcGF0aDogcGF0aCBvZiBleGVjdXRhYmxlIGZpbGVcblwKKyAgICBhcmdzOiB0dXBsZSBvciBsaXN0IG9mIHN0cmluZ3MiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X2V4ZWN2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb3BhdGg7CisgICAgY2hhciAqcGF0aDsKKyAgICBQeU9iamVjdCAqYXJndjsKKyAgICBjaGFyICoqYXJndmxpc3Q7CisgICAgUHlfc3NpemVfdCBhcmdjOworCisgICAgLyogZXhlY3YgaGFzIHR3byBhcmd1bWVudHM6IChwYXRoLCBhcmd2KSwgd2hlcmUKKyAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzLiAqLworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk86ZXhlY3YiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZvcGF0aCwgJmFyZ3YpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7CisgICAgaWYgKCFQeUxpc3RfQ2hlY2soYXJndikgJiYgIVB5VHVwbGVfQ2hlY2soYXJndikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdigpIGFyZyAyIG11c3QgYmUgYSB0dXBsZSBvciBsaXN0Iik7CisgICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBhcmdjID0gUHlTZXF1ZW5jZV9TaXplKGFyZ3YpOworICAgIGlmIChhcmdjIDwgMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImV4ZWN2KCkgYXJnIDIgbXVzdCBub3QgYmUgZW1wdHkiKTsKKyAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgYXJndmxpc3QgPSBwYXJzZV9hcmdsaXN0KGFyZ3YsICZhcmdjKTsKKyAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYob3BhdGgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBleGVjdihwYXRoLCBhcmd2bGlzdCk7CisKKyAgICAvKiBJZiB3ZSBnZXQgaGVyZSBpdCdzIGRlZmluaXRlbHkgYW4gZXJyb3IgKi8KKworICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBhcmdjKTsKKyAgICBQeV9ERUNSRUYob3BhdGgpOworICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworfQorCiBQeURvY19TVFJWQVIocG9zaXhfZXhlY3ZlX19kb2NfXywKICJleGVjdmUocGF0aCwgYXJncywgZW52KVxuXG5cCiBFeGVjdXRlIGEgcGF0aCB3aXRoIGFyZ3VtZW50cyBhbmQgZW52aXJvbm1lbnQsIHJlcGxhY2luZyBjdXJyZW50IHByb2Nlc3MuXG5cCiBcblwKICAgICBwYXRoOiBwYXRoIG9mIGV4ZWN1dGFibGUgZmlsZVxuXAogICAgIGFyZ3M6IHR1cGxlIG9yIGxpc3Qgb2YgYXJndW1lbnRzXG5cCi0gICAgZW52OiBkaWN0aW9uYXJ5IG9mIHN0cmluZ3MgbWFwcGluZyB0byBzdHJpbmdzIik7CisgICAgZW52OiBkaWN0aW9uYXJ5IG9mIHN0cmluZ3MgbWFwcGluZyB0byBzdHJpbmdzXG5cCitcblwKK09uIHNvbWUgcGxhdGZvcm1zLCB5b3UgbWF5IHNwZWNpZnkgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yIHBhdGg7XG5cCisgIGV4ZWN2ZSB3aWxsIGV4ZWN1dGUgdGhlIHByb2dyYW0gdGhlIGZpbGUgZGVzY3JpcHRvciBpcyBvcGVuIHRvLlxuXAorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZXhlY3ZlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X2V4ZWN2ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7CisgICAgcGF0aF90IHBhdGg7CiAgICAgUHlPYmplY3QgKmFyZ3YsICplbnY7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0OworICAgIGNoYXIgKiphcmd2bGlzdCA9IE5VTEw7CiAgICAgY2hhciAqKmVudmxpc3Q7Ci0gICAgUHlfc3NpemVfdCBpLCBhcmdjLCBlbnZjOwotICAgIFB5T2JqZWN0ICooKmdldGl0ZW0pKFB5T2JqZWN0ICosIFB5X3NzaXplX3QpOwotICAgIFB5X3NzaXplX3QgbGFzdGFyZyA9IDA7CisgICAgUHlfc3NpemVfdCBhcmdjLCBlbnZjOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImFyZ3YiLCAiZW52aXJvbm1lbnQiLCBOVUxMfTsKIAogICAgIC8qIGV4ZWN2ZSBoYXMgdGhyZWUgYXJndW1lbnRzOiAocGF0aCwgYXJndiwgZW52KSwgd2hlcmUKICAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzIGFuZCBlbnYgaXMgYSBkaWN0aW9uYXJ5CiAgICAgICAgbGlrZSBwb3NpeC5lbnZpcm9uLiAqLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk9POmV4ZWN2ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wYXRoLCAmYXJndiwgJmVudikpCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworI2lmZGVmIEhBVkVfRkVYRUNWRQorICAgIHBhdGguYWxsb3dfZmQgPSAxOworI2VuZGlmCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPTzpleGVjdmUiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmYXJndiwgJmVudgorICAgICAgICAgICAgICAgICAgICAgICAgICApKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7Ci0gICAgaWYgKFB5TGlzdF9DaGVjayhhcmd2KSkgewotICAgICAgICBhcmdjID0gUHlMaXN0X1NpemUoYXJndik7Ci0gICAgICAgIGdldGl0ZW0gPSBQeUxpc3RfR2V0SXRlbTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoUHlUdXBsZV9DaGVjayhhcmd2KSkgewotICAgICAgICBhcmdjID0gUHlUdXBsZV9TaXplKGFyZ3YpOwotICAgICAgICBnZXRpdGVtID0gUHlUdXBsZV9HZXRJdGVtOwotICAgIH0KLSAgICBlbHNlIHsKKworICAgIGlmICghUHlMaXN0X0NoZWNrKGFyZ3YpICYmICFQeVR1cGxlX0NoZWNrKGFyZ3YpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3ZlKCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKLSAgICAgICAgZ290byBmYWlsXzA7CisgICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3ZlOiBhcmd2IG11c3QgYmUgYSB0dXBsZSBvciBsaXN0Iik7CisgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CisgICAgYXJnYyA9IFB5U2VxdWVuY2VfU2l6ZShhcmd2KTsKICAgICBpZiAoIVB5TWFwcGluZ19DaGVjayhlbnYpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3ZlKCkgYXJnIDMgbXVzdCBiZSBhIG1hcHBpbmcgb2JqZWN0Iik7Ci0gICAgICAgIGdvdG8gZmFpbF8wOworICAgICAgICAgICAgICAgICAgICAgICAgImV4ZWN2ZTogZW52aXJvbm1lbnQgbXVzdCBiZSBhIG1hcHBpbmcgb2JqZWN0Iik7CisgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAKLSAgICBhcmd2bGlzdCA9IFB5TWVtX05FVyhjaGFyICosIGFyZ2MrMSk7CisgICAgYXJndmxpc3QgPSBwYXJzZV9hcmdsaXN0KGFyZ3YsICZhcmdjKTsKICAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICBnb3RvIGZhaWxfMDsKKyAgICAgICAgZ290byBmYWlsOwogICAgIH0KLSAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7Ci0gICAgICAgIGlmICghZnNjb252ZXJ0X3N0cmR1cCgoKmdldGl0ZW0pKGFyZ3YsIGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFyZ3ZsaXN0W2ldKSkKLSAgICAgICAgewotICAgICAgICAgICAgbGFzdGFyZyA9IGk7Ci0gICAgICAgICAgICBnb3RvIGZhaWxfMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBsYXN0YXJnID0gYXJnYzsKLSAgICBhcmd2bGlzdFthcmdjXSA9IE5VTEw7CiAKICAgICBlbnZsaXN0ID0gcGFyc2VfZW52bGlzdChlbnYsICZlbnZjKTsKICAgICBpZiAoZW52bGlzdCA9PSBOVUxMKQotICAgICAgICBnb3RvIGZhaWxfMTsKKyAgICAgICAgZ290byBmYWlsOwogCi0gICAgZXhlY3ZlKHBhdGgsIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKKyNpZmRlZiBIQVZFX0ZFWEVDVkUKKyAgICBpZiAocGF0aC5mZCA+IC0xKQorICAgICAgICBmZXhlY3ZlKHBhdGguZmQsIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgZXhlY3ZlKHBhdGgubmFycm93LCBhcmd2bGlzdCwgZW52bGlzdCk7CiAKICAgICAvKiBJZiB3ZSBnZXQgaGVyZSBpdCdzIGRlZmluaXRlbHkgYW4gZXJyb3IgKi8KIAotICAgICh2b2lkKSBwb3NpeF9lcnJvcigpOworICAgIHBhdGhfcG9zaXhfZXJyb3IoImV4ZWN2ZSIsICZwYXRoKTsKIAogICAgIHdoaWxlICgtLWVudmMgPj0gMCkKICAgICAgICAgUHlNZW1fREVMKGVudmxpc3RbZW52Y10pOwogICAgIFB5TWVtX0RFTChlbnZsaXN0KTsKLSAgZmFpbF8xOgotICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBsYXN0YXJnKTsKLSAgZmFpbF8wOgotICAgIFB5X0RFQ1JFRihvcGF0aCk7CisgIGZhaWw6CisgICAgaWYgKGFyZ3ZsaXN0KQorICAgICAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgYXJnYyk7CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKICAgICByZXR1cm4gTlVMTDsKIH0KICNlbmRpZiAvKiBIQVZFX0VYRUNWICovCkBAIC00Mjk3LDYgKzU2MzQsNDA1IEBACiB9CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU0NIRURfSAorCisjaWZkZWYgSEFWRV9TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYCisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X19kb2NfXywKKyJzY2hlZF9nZXRfcHJpb3JpdHlfbWF4KHBvbGljeSlcblxuXAorR2V0IHRoZSBtYXhpbXVtIHNjaGVkdWxpbmcgcHJpb3JpdHkgZm9yICpwb2xpY3kqLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21heChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHBvbGljeSwgbWF4OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnNjaGVkX2dldF9wcmlvcml0eV9tYXgiLCAmcG9saWN5KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbWF4ID0gc2NoZWRfZ2V0X3ByaW9yaXR5X21heChwb2xpY3kpOworICAgIGlmIChtYXggPCAwKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG1heCk7Cit9CisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWluX19kb2NfXywKKyJzY2hlZF9nZXRfcHJpb3JpdHlfbWluKHBvbGljeSlcblxuXAorR2V0IHRoZSBtaW5pbXVtIHNjaGVkdWxpbmcgcHJpb3JpdHkgZm9yICpwb2xpY3kqLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHBvbGljeSwgbWluOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnNjaGVkX2dldF9wcmlvcml0eV9taW4iLCAmcG9saWN5KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbWluID0gc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihwb2xpY3kpOworICAgIGlmIChtaW4gPCAwKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG1pbik7Cit9CisKKyNlbmRpZiAvKiBIQVZFX1NDSEVEX0dFVF9QUklPUklUWV9NQVggKi8KKworI2lmZGVmIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRzY2hlZHVsZXJfX2RvY19fLAorInNjaGVkX2dldHNjaGVkdWxlcihwaWQpXG5cblwKK0dldCB0aGUgc2NoZWR1bGluZyBwb2xpY3kgZm9yIHRoZSBwcm9jZXNzIHdpdGggYSBQSUQgb2YgKnBpZCouXG5cCitQYXNzaW5nIGEgUElEIG9mIDAgcmV0dXJucyB0aGUgc2NoZWR1bGluZyBwb2xpY3kgZm9yIHRoZSBjYWxsaW5nIHByb2Nlc3MuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9nZXRzY2hlZHVsZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHBpZF90IHBpZDsKKyAgICBpbnQgcG9saWN5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRzY2hlZHVsZXIiLCAmcGlkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcG9saWN5ID0gc2NoZWRfZ2V0c2NoZWR1bGVyKHBpZCk7CisgICAgaWYgKHBvbGljeSA8IDApCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocG9saWN5KTsKK30KKworI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUU0NIRURVTEVSKSB8fCBkZWZpbmVkKEhBVkVfU0NIRURfU0VUUEFSQU0pCisKK3N0YXRpYyBQeU9iamVjdCAqCitzY2hlZF9wYXJhbV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmVzLCAqcHJpb3JpdHk7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzY2hlZF9wcmlvcml0eSIsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpzY2hlZF9wYXJhbSIsIGt3bGlzdCwgJnByaW9yaXR5KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcodHlwZSk7CisgICAgaWYgKCFyZXMpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRihwcmlvcml0eSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXMsIDAsIHByaW9yaXR5KTsKKyAgICByZXR1cm4gcmVzOworfQorCitQeURvY19TVFJWQVIoc2NoZWRfcGFyYW1fX2RvY19fLAorInNjaGVkX3BhcmFtKHNjaGVkX3ByaW9yaXR5KTogQSBzY2hlZHVsaW5nIHBhcmFtZXRlci5cblxuXAorQ3VycmVudCBoYXMgb25seSBvbmUgZmllbGQ6IHNjaGVkX3ByaW9yaXR5Iik7CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHNjaGVkX3BhcmFtX2ZpZWxkc1tdID0geworICAgIHsic2NoZWRfcHJpb3JpdHkiLCAidGhlIHNjaGVkdWxpbmcgcHJpb3JpdHkifSwKKyAgICB7MH0KK307CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0Rlc2Mgc2NoZWRfcGFyYW1fZGVzYyA9IHsKKyAgICAic2NoZWRfcGFyYW0iLCAvKiBuYW1lICovCisgICAgc2NoZWRfcGFyYW1fX2RvY19fLCAvKiBkb2MgKi8KKyAgICBzY2hlZF9wYXJhbV9maWVsZHMsCisgICAgMQorfTsKKworc3RhdGljIGludAorY29udmVydF9zY2hlZF9wYXJhbShQeU9iamVjdCAqcGFyYW0sIHN0cnVjdCBzY2hlZF9wYXJhbSAqcmVzKQoreworICAgIGxvbmcgcHJpb3JpdHk7CisKKyAgICBpZiAoUHlfVFlQRShwYXJhbSkgIT0gJlNjaGVkUGFyYW1UeXBlKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJtdXN0IGhhdmUgYSBzY2hlZF9wYXJhbSBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHByaW9yaXR5ID0gUHlMb25nX0FzTG9uZyhQeVN0cnVjdFNlcXVlbmNlX0dFVF9JVEVNKHBhcmFtLCAwKSk7CisgICAgaWYgKHByaW9yaXR5ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChwcmlvcml0eSA+IElOVF9NQVggfHwgcHJpb3JpdHkgPCBJTlRfTUlOKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAic2NoZWRfcHJpb3JpdHkgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXMtPnNjaGVkX3ByaW9yaXR5ID0gUHlfU0FGRV9ET1dOQ0FTVChwcmlvcml0eSwgbG9uZywgaW50KTsKKyAgICByZXR1cm4gMTsKK30KKworI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUgorCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfc2V0c2NoZWR1bGVyX19kb2NfXywKKyJzY2hlZF9zZXRzY2hlZHVsZXIocGlkLCBwb2xpY3ksIHBhcmFtKVxuXG5cCitTZXQgdGhlIHNjaGVkdWxpbmcgcG9saWN5LCAqcG9saWN5KiwgZm9yICpwaWQqLlxuXAorSWYgKnBpZCogaXMgMCwgdGhlIGNhbGxpbmcgcHJvY2VzcyBpcyBjaGFuZ2VkLlxuXAorKnBhcmFtKiBpcyBhbiBpbnN0YW5jZSBvZiBzY2hlZF9wYXJhbS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3NjaGVkX3NldHNjaGVkdWxlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIGludCBwb2xpY3k7CisgICAgc3RydWN0IHNjaGVkX3BhcmFtIHBhcmFtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgImlPJjpzY2hlZF9zZXRzY2hlZHVsZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmcGlkLCAmcG9saWN5LCAmY29udmVydF9zY2hlZF9wYXJhbSwgJnBhcmFtKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKgorICAgICoqIHNjaGVkX3NldHNjaGVkdWxlcigpIHJldHVybnMgMCBpbiBMaW51eCwgYnV0IHRoZSBwcmV2aW91cworICAgICoqIHNjaGVkdWxpbmcgcG9saWN5IHVuZGVyIFNvbGFyaXMvSWxsdW1vcywgYW5kIG90aGVycy4KKyAgICAqKiBPbiBlcnJvciwgLTEgaXMgcmV0dXJuZWQgaW4gYWxsIE9wZXJhdGluZyBTeXN0ZW1zLgorICAgICovCisgICAgaWYgKHNjaGVkX3NldHNjaGVkdWxlcihwaWQsIHBvbGljeSwgJnBhcmFtKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TQ0hFRF9TRVRQQVJBTQorCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfZ2V0cGFyYW1fX2RvY19fLAorInNjaGVkX2dldHBhcmFtKHBpZCkgLT4gc2NoZWRfcGFyYW1cblxuXAorUmV0dXJucyBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgZm9yIHRoZSBwcm9jZXNzIHdpdGggKnBpZCogYXMgYW4gaW5zdGFuY2Ugb2YgdGhlXG5cCitzY2hlZF9wYXJhbSBjbGFzcy4gQSBQSUQgb2YgMCBtZWFucyB0aGUgY2FsbGluZyBwcm9jZXNzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfZ2V0cGFyYW0oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHBpZF90IHBpZDsKKyAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW07CisgICAgUHlPYmplY3QgKnJlcywgKnByaW9yaXR5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRwYXJhbSIsICZwaWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc2NoZWRfZ2V0cGFyYW0ocGlkLCAmcGFyYW0pKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXMgPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmU2NoZWRQYXJhbVR5cGUpOworICAgIGlmICghcmVzKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwcmlvcml0eSA9IFB5TG9uZ19Gcm9tTG9uZyhwYXJhbS5zY2hlZF9wcmlvcml0eSk7CisgICAgaWYgKCFwcmlvcml0eSkgeworICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzLCAwLCBwcmlvcml0eSk7CisgICAgcmV0dXJuIHJlczsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX3NldHBhcmFtX19kb2NfXywKKyJzY2hlZF9zZXRwYXJhbShwaWQsIHBhcmFtKVxuXG5cCitTZXQgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIGZvciBhIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCouXG5cCitBIFBJRCBvZiAwIG1lYW5zIHRoZSBjYWxsaW5nIHByb2Nlc3MuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9zZXRwYXJhbShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICJPJjpzY2hlZF9zZXRwYXJhbSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZwaWQsICZjb252ZXJ0X3NjaGVkX3BhcmFtLCAmcGFyYW0pKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc2NoZWRfc2V0cGFyYW0ocGlkLCAmcGFyYW0pKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NDSEVEX1JSX0dFVF9JTlRFUlZBTAorCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfcnJfZ2V0X2ludGVydmFsX19kb2NfXywKKyJzY2hlZF9ycl9nZXRfaW50ZXJ2YWwocGlkKSAtPiBmbG9hdFxuXG5cCitSZXR1cm4gdGhlIHJvdW5kLXJvYmluIHF1YW50dW0gZm9yIHRoZSBwcm9jZXNzIHdpdGggUElEICpwaWQqIGluIHNlY29uZHMuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9ycl9nZXRfaW50ZXJ2YWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHBpZF90IHBpZDsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgaW50ZXJ2YWw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX3JyX2dldF9pbnRlcnZhbCIsICZwaWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc2NoZWRfcnJfZ2V0X2ludGVydmFsKHBpZCwgJmludGVydmFsKSkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoZG91YmxlKWludGVydmFsLnR2X3NlYyArIDFlLTkqaW50ZXJ2YWwudHZfbnNlYyk7Cit9CisKKyNlbmRpZgorCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfeWllbGRfX2RvY19fLAorInNjaGVkX3lpZWxkKClcblxuXAorVm9sdW50YXJpbHkgcmVsaW5xdWlzaCB0aGUgQ1BVLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfeWllbGQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCit7CisgICAgaWYgKHNjaGVkX3lpZWxkKCkpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisjaWZkZWYgSEFWRV9TQ0hFRF9TRVRBRkZJTklUWQorCisvKiBUaGUgbWluaW11bSBudW1iZXIgb2YgQ1BVcyBhbGxvY2F0ZWQgaW4gYSBjcHVfc2V0X3QgKi8KK3N0YXRpYyBjb25zdCBpbnQgTkNQVVNfU1RBUlQgPSBzaXplb2YodW5zaWduZWQgbG9uZykgKiBDSEFSX0JJVDsKKworUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX3NldGFmZmluaXR5X19kb2NfXywKKyJzY2hlZF9zZXRhZmZpbml0eShwaWQsIGNwdV9zZXQpXG5cblwKK1NldCB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCogdG8gKmNwdV9zZXQqLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfc2V0YWZmaW5pdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHBpZF90IHBpZDsKKyAgICBpbnQgbmNwdXM7CisgICAgc2l6ZV90IHNldHNpemU7CisgICAgY3B1X3NldF90ICptYXNrID0gTlVMTDsKKyAgICBQeU9iamVjdCAqaXRlcmFibGUsICppdGVyYXRvciA9IE5VTEwsICppdGVtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIk86c2NoZWRfc2V0YWZmaW5pdHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmcGlkLCAmaXRlcmFibGUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGl0ZXJhdG9yID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZSk7CisgICAgaWYgKGl0ZXJhdG9yID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbmNwdXMgPSBOQ1BVU19TVEFSVDsKKyAgICBzZXRzaXplID0gQ1BVX0FMTE9DX1NJWkUobmNwdXMpOworICAgIG1hc2sgPSBDUFVfQUxMT0MobmNwdXMpOworICAgIGlmIChtYXNrID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgQ1BVX1pFUk9fUyhzZXRzaXplLCBtYXNrKTsKKworICAgIHdoaWxlICgoaXRlbSA9IFB5SXRlcl9OZXh0KGl0ZXJhdG9yKSkpIHsKKyAgICAgICAgbG9uZyBjcHU7CisgICAgICAgIGlmICghUHlMb25nX0NoZWNrKGl0ZW0pKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGFuIGl0ZXJhdG9yIG9mIGludHMsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJidXQgaXRlcmF0b3IgeWllbGRlZCAlUiIsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGl0ZW0pKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgY3B1ID0gUHlMb25nX0FzTG9uZyhpdGVtKTsKKyAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICBpZiAoY3B1IDwgMCkgeworICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgQ1BVIG51bWJlciIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3B1ID4gSU5UX01BWCAtIDEpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAiQ1BVIG51bWJlciB0b28gbGFyZ2UiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNwdSA+PSBuY3B1cykgeworICAgICAgICAgICAgLyogR3JvdyBDUFUgbWFzayB0byBmaXQgdGhlIENQVSBudW1iZXIgKi8KKyAgICAgICAgICAgIGludCBuZXduY3B1cyA9IG5jcHVzOworICAgICAgICAgICAgY3B1X3NldF90ICpuZXdtYXNrOworICAgICAgICAgICAgc2l6ZV90IG5ld3NldHNpemU7CisgICAgICAgICAgICB3aGlsZSAobmV3bmNwdXMgPD0gY3B1KSB7CisgICAgICAgICAgICAgICAgaWYgKG5ld25jcHVzID4gSU5UX01BWCAvIDIpCisgICAgICAgICAgICAgICAgICAgIG5ld25jcHVzID0gY3B1ICsgMTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG5ld25jcHVzID0gbmV3bmNwdXMgKiAyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbmV3bWFzayA9IENQVV9BTExPQyhuZXduY3B1cyk7CisgICAgICAgICAgICBpZiAobmV3bWFzayA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbmV3c2V0c2l6ZSA9IENQVV9BTExPQ19TSVpFKG5ld25jcHVzKTsKKyAgICAgICAgICAgIENQVV9aRVJPX1MobmV3c2V0c2l6ZSwgbmV3bWFzayk7CisgICAgICAgICAgICBtZW1jcHkobmV3bWFzaywgbWFzaywgc2V0c2l6ZSk7CisgICAgICAgICAgICBDUFVfRlJFRShtYXNrKTsKKyAgICAgICAgICAgIHNldHNpemUgPSBuZXdzZXRzaXplOworICAgICAgICAgICAgbWFzayA9IG5ld21hc2s7CisgICAgICAgICAgICBuY3B1cyA9IG5ld25jcHVzOworICAgICAgICB9CisgICAgICAgIENQVV9TRVRfUyhjcHUsIHNldHNpemUsIG1hc2spOworICAgIH0KKyAgICBQeV9DTEVBUihpdGVyYXRvcik7CisKKyAgICBpZiAoc2NoZWRfc2V0YWZmaW5pdHkocGlkLCBzZXRzaXplLCBtYXNrKSkgeworICAgICAgICBwb3NpeF9lcnJvcigpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBDUFVfRlJFRShtYXNrKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKKworZXJyb3I6CisgICAgaWYgKG1hc2spCisgICAgICAgIENQVV9GUkVFKG1hc2spOworICAgIFB5X1hERUNSRUYoaXRlcmF0b3IpOworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfZ2V0YWZmaW5pdHlfX2RvY19fLAorInNjaGVkX2dldGFmZmluaXR5KHBpZCwgbmNwdXMpIC0+IGNwdV9zZXRcblxuXAorUmV0dXJuIHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKi5cblwKK1RoZSByZXR1cm5lZCBjcHVfc2V0IHdpbGwgYmUgb2Ygc2l6ZSAqbmNwdXMqLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfZ2V0YWZmaW5pdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHBpZF90IHBpZDsKKyAgICBpbnQgY3B1LCBuY3B1cywgY291bnQ7CisgICAgc2l6ZV90IHNldHNpemU7CisgICAgY3B1X3NldF90ICptYXNrID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0YWZmaW5pdHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmcGlkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBuY3B1cyA9IE5DUFVTX1NUQVJUOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIHNldHNpemUgPSBDUFVfQUxMT0NfU0laRShuY3B1cyk7CisgICAgICAgIG1hc2sgPSBDUFVfQUxMT0MobmNwdXMpOworICAgICAgICBpZiAobWFzayA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGlmIChzY2hlZF9nZXRhZmZpbml0eShwaWQsIHNldHNpemUsIG1hc2spID09IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgQ1BVX0ZSRUUobWFzayk7CisgICAgICAgIGlmIChlcnJubyAhPSBFSU5WQUwpCisgICAgICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgaWYgKG5jcHVzID4gSU5UX01BWCAvIDIpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAiY291bGQgbm90IGFsbG9jYXRlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYSBsYXJnZSBlbm91Z2ggQ1BVIHNldCIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbmNwdXMgPSBuY3B1cyAqIDI7CisgICAgfQorCisgICAgcmVzID0gUHlTZXRfTmV3KE5VTEwpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBmb3IgKGNwdSA9IDAsIGNvdW50ID0gQ1BVX0NPVU5UX1Moc2V0c2l6ZSwgbWFzayk7IGNvdW50OyBjcHUrKykgeworICAgICAgICBpZiAoQ1BVX0lTU0VUX1MoY3B1LCBzZXRzaXplLCBtYXNrKSkgeworICAgICAgICAgICAgUHlPYmplY3QgKmNwdV9udW0gPSBQeUxvbmdfRnJvbUxvbmcoY3B1KTsKKyAgICAgICAgICAgIC0tY291bnQ7CisgICAgICAgICAgICBpZiAoY3B1X251bSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBpZiAoUHlTZXRfQWRkKHJlcywgY3B1X251bSkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY3B1X251bSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihjcHVfbnVtKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBDUFVfRlJFRShtYXNrKTsKKyAgICByZXR1cm4gcmVzOworCitlcnJvcjoKKyAgICBpZiAobWFzaykKKyAgICAgICAgQ1BVX0ZSRUUobWFzayk7CisgICAgUHlfWERFQ1JFRihyZXMpOworICAgIHJldHVybiBOVUxMOworfQorCisjZW5kaWYgLyogSEFWRV9TQ0hFRF9TRVRBRkZJTklUWSAqLworCisjZW5kaWYgLyogSEFWRV9TQ0hFRF9IICovCisKIC8qIEFJWCB1c2VzIC9kZXYvcHRjIGJ1dCBpcyBvdGhlcndpc2UgdGhlIHNhbWUgYXMgL2Rldi9wdG14ICovCiAvKiBJUklYIGhhcyBib3RoIC9kZXYvcHRjIGFuZCAvZGV2L3B0bXgsIHVzZSBwdG14ICovCiAjaWYgZGVmaW5lZChIQVZFX0RFVl9QVEMpICYmICFkZWZpbmVkKEhBVkVfREVWX1BUTVgpCkBAIC00NDIzLDYgKzYxNTksNyBAQAogfQogI2VuZGlmCiAKKwogI2lmZGVmIEhBVkVfR0VURUdJRAogUHlEb2NfU1RSVkFSKHBvc2l4X2dldGVnaWRfX2RvY19fLAogImdldGVnaWQoKSAtPiBlZ2lkXG5cblwKQEAgLTQ0NzIsNiArNjIwOSw4MCBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVBpZChnZXRwaWQoKSk7CiB9CiAKKyNpZmRlZiBIQVZFX0dFVEdST1VQTElTVAorUHlEb2NfU1RSVkFSKHBvc2l4X2dldGdyb3VwbGlzdF9fZG9jX18sCisiZ2V0Z3JvdXBsaXN0KHVzZXIsIGdyb3VwKSAtPiBsaXN0IG9mIGdyb3VwcyB0byB3aGljaCBhIHVzZXIgYmVsb25nc1xuXG5cCitSZXR1cm5zIGEgbGlzdCBvZiBncm91cHMgdG8gd2hpY2ggYSB1c2VyIGJlbG9uZ3MuXG5cblwKKyAgICB1c2VyOiB1c2VybmFtZSB0byBsb29rdXBcblwKKyAgICBncm91cDogYmFzZSBncm91cCBpZCBvZiB0aGUgdXNlciIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfZ2V0Z3JvdXBsaXN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyNpZmRlZiBOR1JPVVBTX01BWAorI2RlZmluZSBNQVhfR1JPVVBTIE5HUk9VUFNfTUFYCisjZWxzZQorICAgIC8qIGRlZmluZWQgdG8gYmUgMTYgb24gU29sYXJpczcsIHNvIHRoaXMgc2hvdWxkIGJlIGEgc21hbGwgbnVtYmVyICovCisjZGVmaW5lIE1BWF9HUk9VUFMgNjQKKyNlbmRpZgorCisgICAgY29uc3QgY2hhciAqdXNlcjsKKyAgICBpbnQgaSwgbmdyb3VwczsKKyAgICBQeU9iamVjdCAqbGlzdDsKKyNpZmRlZiBfX0FQUExFX18KKyAgICBpbnQgKmdyb3VwcywgYmFzZWdpZDsKKyNlbHNlCisgICAgZ2lkX3QgKmdyb3VwcywgYmFzZWdpZDsKKyNlbmRpZgorICAgIG5ncm91cHMgPSBNQVhfR1JPVVBTOworCisjaWZkZWYgX19BUFBMRV9fCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzaTpnZXRncm91cGxpc3QiLCAmdXNlciwgJmJhc2VnaWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbHNlCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTyY6Z2V0Z3JvdXBsaXN0IiwgJnVzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmYmFzZWdpZCkpCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCisKKyNpZmRlZiBfX0FQUExFX18KKyAgICBncm91cHMgPSBQeU1lbV9NYWxsb2Mobmdyb3VwcyAqIHNpemVvZihpbnQpKTsKKyNlbHNlCisgICAgZ3JvdXBzID0gUHlNZW1fTWFsbG9jKG5ncm91cHMgKiBzaXplb2YoZ2lkX3QpKTsKKyNlbmRpZgorICAgIGlmIChncm91cHMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisKKyAgICBpZiAoZ2V0Z3JvdXBsaXN0KHVzZXIsIGJhc2VnaWQsIGdyb3VwcywgJm5ncm91cHMpID09IC0xKSB7CisgICAgICAgIFB5TWVtX0RlbChncm91cHMpOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisKKyAgICBsaXN0ID0gUHlMaXN0X05ldyhuZ3JvdXBzKTsKKyAgICBpZiAobGlzdCA9PSBOVUxMKSB7CisgICAgICAgIFB5TWVtX0RlbChncm91cHMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmdyb3VwczsgaSsrKSB7CisjaWZkZWYgX19BUFBMRV9fCisgICAgICAgIFB5T2JqZWN0ICpvID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKHVuc2lnbmVkIGxvbmcpZ3JvdXBzW2ldKTsKKyNlbHNlCisgICAgICAgIFB5T2JqZWN0ICpvID0gX1B5TG9uZ19Gcm9tR2lkKGdyb3Vwc1tpXSk7CisjZW5kaWYKKyAgICAgICAgaWYgKG8gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgUHlNZW1fRGVsKGdyb3Vwcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeUxpc3RfU0VUX0lURU0obGlzdCwgaSwgbyk7CisgICAgfQorCisgICAgUHlNZW1fRGVsKGdyb3Vwcyk7CisKKyAgICByZXR1cm4gbGlzdDsKK30KKyNlbmRpZgogCiAjaWZkZWYgSEFWRV9HRVRHUk9VUFMKIFB5RG9jX1NUUlZBUihwb3NpeF9nZXRncm91cHNfX2RvY19fLApAQCAtNDcyMCw3ICs2NTMxLDcgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgd2NoYXJfdCB1c2VyX25hbWVbVU5MRU4gKyAxXTsKLSAgICBEV09SRCBudW1fY2hhcnMgPSBzaXplb2YodXNlcl9uYW1lKS9zaXplb2YodXNlcl9uYW1lWzBdKTsKKyAgICBEV09SRCBudW1fY2hhcnMgPSBQeV9BUlJBWV9MRU5HVEgodXNlcl9uYW1lKTsKIAogICAgIGlmIChHZXRVc2VyTmFtZVcodXNlcl9uYW1lLCAmbnVtX2NoYXJzKSkgewogICAgICAgICAvKiBudW1fY2hhcnMgaXMgdGhlIG51bWJlciBvZiB1bmljb2RlIGNoYXJzIHBsdXMgbnVsbCB0ZXJtaW5hdG9yICovCkBAIC01MDYxLDYgKzY4NzIsNyBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgc3RhdGljIFB5T2JqZWN0ICpzdHJ1Y3RfcnVzYWdlOworICAgIF9QeV9JREVOVElGSUVSKHN0cnVjdF9ydXNhZ2UpOwogCiAgICAgaWYgKHBpZCA9PSAtMSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CkBAIC01MDY5LDcgKzY4ODEsNyBAQAogICAgICAgICBQeU9iamVjdCAqbSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soInJlc291cmNlIik7CiAgICAgICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc3RydWN0X3J1c2FnZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobSwgInN0cnVjdF9ydXNhZ2UiKTsKKyAgICAgICAgc3RydWN0X3J1c2FnZSA9IF9QeU9iamVjdF9HZXRBdHRySWQobSwgJlB5SWRfc3RydWN0X3J1c2FnZSk7CiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgaWYgKHN0cnVjdF9ydXNhZ2UgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTE2NSw2ICs2OTc3LDU1IEBACiB9CiAjZW5kaWYgLyogSEFWRV9XQUlUNCAqLwogCisjaWYgZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQorUHlEb2NfU1RSVkFSKHBvc2l4X3dhaXRpZF9fZG9jX18sCisid2FpdGlkKGlkdHlwZSwgaWQsIG9wdGlvbnMpIC0+IHdhaXRpZF9yZXN1bHRcblxuXAorV2FpdCBmb3IgdGhlIGNvbXBsZXRpb24gb2Ygb25lIG9yIG1vcmUgY2hpbGQgcHJvY2Vzc2VzLlxuXG5cCitpZHR5cGUgY2FuIGJlIFBfUElELCBQX1BHSUQgb3IgUF9BTEwuXG5cCitpZCBzcGVjaWZpZXMgdGhlIHBpZCB0byB3YWl0IG9uLlxuXAorb3B0aW9ucyBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBPUmluZyBvZiBvbmUgb3IgbW9yZSBvZiBXRVhJVEVELCBXU1RPUFBFRFxuXAorb3IgV0NPTlRJTlVFRCBhbmQgYWRkaXRpb25hbGx5IG1heSBiZSBPUmVkIHdpdGggV05PSEFORyBvciBXTk9XQUlULlxuXAorUmV0dXJucyBlaXRoZXIgd2FpdGlkX3Jlc3VsdCBvciBOb25lIGlmIFdOT0hBTkcgaXMgc3BlY2lmaWVkIGFuZCB0aGVyZSBhcmVcblwKK25vIGNoaWxkcmVuIGluIGEgd2FpdGFibGUgc3RhdGUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF93YWl0aWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgaWR0eXBlX3QgaWR0eXBlOworICAgIGlkX3QgaWQ7CisgICAgaW50IG9wdGlvbnMsIHJlczsKKyAgICBzaWdpbmZvX3Qgc2k7CisgICAgc2kuc2lfcGlkID0gMDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiIF9QeV9QQVJTRV9QSUQgImk6d2FpdGlkIiwgJmlkdHlwZSwgJmlkLCAmb3B0aW9ucykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXMgPSB3YWl0aWQoaWR0eXBlLCBpZCwgJnNpLCBvcHRpb25zKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChyZXMgPT0gLTEpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworCisgICAgaWYgKHNpLnNpX3BpZCA9PSAwKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKworICAgIHJlc3VsdCA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZXYWl0aWRSZXN1bHRUeXBlKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgMCwgUHlMb25nX0Zyb21QaWQoc2kuc2lfcGlkKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDEsIF9QeUxvbmdfRnJvbVVpZChzaS5zaV91aWQpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgMiwgUHlMb25nX0Zyb21Mb25nKChsb25nKShzaS5zaV9zaWdubykpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgMywgUHlMb25nX0Zyb21Mb25nKChsb25nKShzaS5zaV9zdGF0dXMpKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDQsIFB5TG9uZ19Gcm9tTG9uZygobG9uZykoc2kuc2lfY29kZSkpKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9XQUlUUElECiBQeURvY19TVFJWQVIocG9zaXhfd2FpdHBpZF9fZG9jX18sCiAid2FpdHBpZChwaWQsIG9wdGlvbnMpIC0+IChwaWQsIHN0YXR1cylcblxuXApAQCAtNTIzOCwxMDYgKzcwOTksMjI2IEBACiAjZW5kaWYKIAogCi1QeURvY19TVFJWQVIocG9zaXhfbHN0YXRfX2RvY19fLAotImxzdGF0KHBhdGgpIC0+IHN0YXQgcmVzdWx0XG5cblwKLUxpa2Ugc3RhdChwYXRoKSwgYnV0IGRvIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9sc3RhdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0jaWZkZWYgSEFWRV9MU1RBVAotICAgIHJldHVybiBwb3NpeF9kb19zdGF0KHNlbGYsIGFyZ3MsICJPJjpsc3RhdCIsIGxzdGF0LCBOVUxMLCBOVUxMKTsKLSNlbHNlIC8qICFIQVZFX0xTVEFUICovCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiBwb3NpeF9kb19zdGF0KHNlbGYsIGFyZ3MsICJPJjpsc3RhdCIsIHdpbjMyX2xzdGF0LCAiVTpsc3RhdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgd2luMzJfbHN0YXRfdyk7Ci0jZWxzZQotICAgIHJldHVybiBwb3NpeF9kb19zdGF0KHNlbGYsIGFyZ3MsICJPJjpsc3RhdCIsIFNUQVQsIE5VTEwsIE5VTEwpOworI2lmIGRlZmluZWQoSEFWRV9SRUFETElOSykgfHwgZGVmaW5lZChNU19XSU5ET1dTKQorUHlEb2NfU1RSVkFSKHJlYWRsaW5rX19kb2NfXywKKyJyZWFkbGluayhwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkgLT4gcGF0aFxuXG5cCitSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXRoIHRvIHdoaWNoIHRoZSBzeW1ib2xpYyBsaW5rIHBvaW50cy5cblwKK1xuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKICNlbmRpZgotI2VuZGlmIC8qICFIQVZFX0xTVEFUICovCi19Ci0KIAogI2lmZGVmIEhBVkVfUkVBRExJTksKLVB5RG9jX1NUUlZBUihwb3NpeF9yZWFkbGlua19fZG9jX18sCi0icmVhZGxpbmsocGF0aCkgLT4gcGF0aFxuXG5cCi1SZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXRoIHRvIHdoaWNoIHRoZSBzeW1ib2xpYyBsaW5rIHBvaW50cy4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3JlYWRsaW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X3JlYWRsaW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCogdjsKLSAgICBjaGFyIGJ1ZltNQVhQQVRITEVOXTsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKLSAgICBpbnQgbjsKLSAgICBpbnQgYXJnX2lzX3VuaWNvZGUgPSAwOworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBjaGFyIGJ1ZmZlcltNQVhQQVRITEVOXTsKKyAgICBzc2l6ZV90IGxlbmd0aDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6cmVhZGxpbmsiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCkpCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpyZWFkbGluayIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisjaWZkZWYgSEFWRV9SRUFETElOS0FUCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKKyNlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICB2ID0gUHlTZXF1ZW5jZV9HZXRJdGVtKGFyZ3MsIDApOwotICAgIGlmICh2ID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKFB5VW5pY29kZV9DaGVjayh2KSkgewotICAgICAgICBhcmdfaXNfdW5pY29kZSA9IDE7Ci0gICAgfQotICAgIFB5X0RFQ1JFRih2KTsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBuID0gcmVhZGxpbmsocGF0aCwgYnVmLCAoaW50KSBzaXplb2YgYnVmKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChuIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9wYXRoKTsKLQotICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgaWYgKGFyZ19pc191bmljb2RlKQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoYnVmLCBuKTsKKyNpZmRlZiBIQVZFX1JFQURMSU5LQVQKKyAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICBsZW5ndGggPSByZWFkbGlua2F0KGRpcl9mZCwgcGF0aC5uYXJyb3csIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBuKTsKKyNlbmRpZgorICAgICAgICBsZW5ndGggPSByZWFkbGluayhwYXRoLm5hcnJvdywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChsZW5ndGggPCAwKSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfcG9zaXhfZXJyb3IoInJlYWRsaW5rIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhwYXRoLm9iamVjdCkpCisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKGJ1ZmZlciwgbGVuZ3RoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmZmVyLCBsZW5ndGgpOworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CisKKwogI2VuZGlmIC8qIEhBVkVfUkVBRExJTksgKi8KIAogCi0jaWYgZGVmaW5lZChIQVZFX1NZTUxJTkspICYmICFkZWZpbmVkKE1TX1dJTkRPV1MpCisjaWZkZWYgSEFWRV9TWU1MSU5LCiBQeURvY19TVFJWQVIocG9zaXhfc3ltbGlua19fZG9jX18sCi0ic3ltbGluayhzcmMsIGRzdClcblxuXAotQ3JlYXRlIGEgc3ltYm9saWMgbGluayBwb2ludGluZyB0byBzcmMgbmFtZWQgZHN0LiIpOworInN5bWxpbmsoc3JjLCBkc3QsIHRhcmdldF9pc19kaXJlY3Rvcnk9RmFsc2UsICosIGRpcl9mZD1Ob25lKVxuXG5cCitDcmVhdGUgYSBzeW1ib2xpYyBsaW5rIHBvaW50aW5nIHRvIHNyYyBuYW1lZCBkc3QuXG5cblwKK3RhcmdldF9pc19kaXJlY3RvcnkgaXMgcmVxdWlyZWQgb24gV2luZG93cyBpZiB0aGUgdGFyZ2V0IGlzIHRvIGJlXG5cCisgIGludGVycHJldGVkIGFzIGEgZGlyZWN0b3J5LiAgKE9uIFdpbmRvd3MsIHN5bWxpbmsgcmVxdWlyZXNcblwKKyAgV2luZG93cyA2LjAgb3IgZ3JlYXRlciwgYW5kIHJhaXNlcyBhIE5vdEltcGxlbWVudGVkRXJyb3Igb3RoZXJ3aXNlLilcblwKKyAgdGFyZ2V0X2lzX2RpcmVjdG9yeSBpcyBpZ25vcmVkIG9uIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy5cblwKK1xuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworLyogR3JhYiBDcmVhdGVTeW1ib2xpY0xpbmtXIGR5bmFtaWNhbGx5IGZyb20ga2VybmVsMzIgKi8KK3N0YXRpYyBEV09SRCAoQ0FMTEJBQ0sgKlB5X0NyZWF0ZVN5bWJvbGljTGlua1cpKExQV1NUUiwgTFBXU1RSLCBEV09SRCkgPSBOVUxMOworc3RhdGljIERXT1JEIChDQUxMQkFDSyAqUHlfQ3JlYXRlU3ltYm9saWNMaW5rQSkoTFBTVFIsIExQU1RSLCBEV09SRCkgPSBOVUxMOworc3RhdGljIGludAorY2hlY2tfQ3JlYXRlU3ltYm9saWNMaW5rKCkKK3sKKyAgICBISU5TVEFOQ0UgaEtlcm5lbDMyOworICAgIC8qIG9ubHkgcmVjaGVjayAqLworICAgIGlmIChQeV9DcmVhdGVTeW1ib2xpY0xpbmtXICYmIFB5X0NyZWF0ZVN5bWJvbGljTGlua0EpCisgICAgICAgIHJldHVybiAxOworICAgIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZVcoTCJLRVJORUwzMiIpOworICAgICooRkFSUFJPQyopJlB5X0NyZWF0ZVN5bWJvbGljTGlua1cgPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDcmVhdGVTeW1ib2xpY0xpbmtXIik7CisgICAgKihGQVJQUk9DKikmUHlfQ3JlYXRlU3ltYm9saWNMaW5rQSA9IEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGlua0EiKTsKKyAgICByZXR1cm4gKFB5X0NyZWF0ZVN5bWJvbGljTGlua1cgJiYgUHlfQ3JlYXRlU3ltYm9saWNMaW5rQSk7Cit9CisKKyNlbmRpZgogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc3ltbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9zeW1saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICByZXR1cm4gcG9zaXhfMnN0cihhcmdzLCAiTyZPJjpzeW1saW5rIiwgc3ltbGluayk7CisgICAgcGF0aF90IHNyYzsKKyAgICBwYXRoX3QgZHN0OworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgdGFyZ2V0X2lzX2RpcmVjdG9yeSA9IDA7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAidGFyZ2V0X2lzX2RpcmVjdG9yeSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcl9mZCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7CisjaWZkZWYgTVNfV0lORE9XUworICAgIERXT1JEIHJlc3VsdDsKKyNlbHNlCisgICAgaW50IHJlc3VsdDsKKyNlbmRpZgorCisgICAgbWVtc2V0KCZzcmMsIDAsIHNpemVvZihzcmMpKTsKKyAgICBzcmMuYXJndW1lbnRfbmFtZSA9ICJzcmMiOworICAgIG1lbXNldCgmZHN0LCAwLCBzaXplb2YoZHN0KSk7CisgICAgZHN0LmFyZ3VtZW50X25hbWUgPSAiZHN0IjsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoIWNoZWNrX0NyZWF0ZVN5bWJvbGljTGluaygpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGluayBmdW5jdGlvbnMgbm90IGZvdW5kIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICBpZiAoIXdpbjMyX2Nhbl9zeW1saW5rKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAic3ltYm9saWMgbGluayBwcml2aWxlZ2Ugbm90IGhlbGQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfGkkTyY6c3ltbGluayIsCisgICAgICAgICAgICBrZXl3b3JkcywKKyAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLAorICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZkc3QsCisgICAgICAgICAgICAmdGFyZ2V0X2lzX2RpcmVjdG9yeSwKKyNpZmRlZiBIQVZFX1NZTUxJTktBVAorICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAorI2Vsc2UKKyAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAorI2VuZGlmCisgICAgICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICgoc3JjLm5hcnJvdyAmJiBkc3Qud2lkZSkgfHwgKHNyYy53aWRlICYmIGRzdC5uYXJyb3cpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgInN5bWxpbms6IHNyYyBhbmQgZHN0IG11c3QgYmUgdGhlIHNhbWUgdHlwZSIpOworICAgICAgICByZXR1cm5fdmFsdWUgPSBOVUxMOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoZHN0LndpZGUpCisgICAgICAgIHJlc3VsdCA9IFB5X0NyZWF0ZVN5bWJvbGljTGlua1coZHN0LndpZGUsIHNyYy53aWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rQShkc3QubmFycm93LCBzcmMubmFycm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSB3aW4zMl9lcnJvcl9vYmplY3QoInN5bWxpbmsiLCBzcmMub2JqZWN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworI2Vsc2UKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZiBIQVZFX1NZTUxJTktBVAorICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgIHJlc3VsdCA9IHN5bWxpbmthdChzcmMubmFycm93LCBkaXJfZmQsIGRzdC5uYXJyb3cpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBzeW1saW5rKHNyYy5uYXJyb3csIGRzdC5uYXJyb3cpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoInN5bWxpbmsiLCAmZHN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgZ290byBleGl0OyAvKiBzaWxlbmNlICJ1bnVzZWQgbGFiZWwiIHdhcm5pbmcgKi8KK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZzcmMpOworICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQorCiAjZW5kaWYgLyogSEFWRV9TWU1MSU5LICovCiAKKwogI2lmICFkZWZpbmVkKEhBVkVfUkVBRExJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykKIAotUHlEb2NfU1RSVkFSKHdpbl9yZWFkbGlua19fZG9jX18sCi0icmVhZGxpbmsocGF0aCkgLT4gcGF0aFxuXG5cCi1SZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXRoIHRvIHdoaWNoIHRoZSBzeW1ib2xpYyBsaW5rIHBvaW50cy4iKTsKLQotLyogV2luZG93cyByZWFkbGluayBpbXBsZW1lbnRhdGlvbiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLXdpbl9yZWFkbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5fcmVhZGxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIHdjaGFyX3QgKnBhdGg7CiAgICAgRFdPUkQgbl9ieXRlc19yZXR1cm5lZDsKICAgICBEV09SRCBpb19yZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqcG8sICpyZXN1bHQ7CisgICAgICAgIGludCBkaXJfZmQ7CiAgICAgSEFORExFIHJlcGFyc2VfcG9pbnRfaGFuZGxlOwogCiAgICAgY2hhciB0YXJnZXRfYnVmZmVyW01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFXTsKICAgICBSRVBBUlNFX0RBVEFfQlVGRkVSICpyZGIgPSAoUkVQQVJTRV9EQVRBX0JVRkZFUiAqKXRhcmdldF9idWZmZXI7CiAgICAgd2NoYXJfdCAqcHJpbnRfbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAgICAgICAgICAgInU6cmVhZGxpbmsiLAotICAgICAgICAgICAgICAgICAgJnBhdGgpKQorICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiVXwkTyY6cmVhZGxpbmsiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnBvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShwbyk7CisgICAgaWYgKHBhdGggPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBGaXJzdCBnZXQgYSBoYW5kbGUgdG8gdGhlIHJlcGFyc2UgcG9pbnQgKi8KQEAgLTUzNTMsOSArNzMzNCw3IEBACiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChyZXBhcnNlX3BvaW50X2hhbmRsZT09SU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgewotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgicmVhZGxpbmsiLCBwYXRoKTsKLSAgICB9CisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoInJlYWRsaW5rIiwgcG8pOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIC8qIE5ldyBjYWxsIERldmljZUlvQ29udHJvbCB0byByZWFkIHRoZSByZXBhcnNlIHBvaW50ICovCkBAIC01MzcxLDkgKzczNTAsNyBAQAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoaW9fcmVzdWx0PT0wKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoInJlYWRsaW5rIiwgcGF0aCk7Ci0gICAgfQorICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJyZWFkbGluayIsIHBvKTsKIAogICAgIGlmIChyZGItPlJlcGFyc2VUYWcgIT0gSU9fUkVQQVJTRV9UQUdfU1lNTElOSykKICAgICB7CkBAIC01MzkxLDgwICs3MzY4LDc2IEBACiAKICNlbmRpZiAvKiAhZGVmaW5lZChIQVZFX1JFQURMSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCiAKLSNpZiBkZWZpbmVkKEhBVkVfU1lNTElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKQogCi0vKiBHcmFiIENyZWF0ZVN5bWJvbGljTGlua1cgZHluYW1pY2FsbHkgZnJvbSBrZXJuZWwzMiAqLwotc3RhdGljIGludCBoYXNfQ3JlYXRlU3ltYm9saWNMaW5rVyA9IDA7Ci1zdGF0aWMgRFdPUkQgKENBTExCQUNLICpQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKShMUFdTVFIsIExQV1NUUiwgRFdPUkQpOwotc3RhdGljIGludAotY2hlY2tfQ3JlYXRlU3ltYm9saWNMaW5rVygpCi17Ci0gICAgSElOU1RBTkNFIGhLZXJuZWwzMjsKLSAgICAvKiBvbmx5IHJlY2hlY2sgKi8KLSAgICBpZiAoaGFzX0NyZWF0ZVN5bWJvbGljTGlua1cpCi0gICAgICAgIHJldHVybiBoYXNfQ3JlYXRlU3ltYm9saWNMaW5rVzsKLSAgICBoS2VybmVsMzIgPSBHZXRNb2R1bGVIYW5kbGUoIktFUk5FTDMyIik7Ci0gICAgKihGQVJQUk9DKikmUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyA9IEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGlua1ciKTsKLSAgICBpZiAoUHlfQ3JlYXRlU3ltYm9saWNMaW5rVykKLSAgICAgICAgaGFzX0NyZWF0ZVN5bWJvbGljTGlua1cgPSAxOwotICAgIHJldHVybiBoYXNfQ3JlYXRlU3ltYm9saWNMaW5rVzsKLX0KK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHRpbWVzX3Jlc3VsdF9maWVsZHNbXSA9IHsKKyAgICB7InVzZXIiLCAgICAidXNlciB0aW1lIn0sCisgICAgeyJzeXN0ZW0iLCAgICJzeXN0ZW0gdGltZSJ9LAorICAgIHsiY2hpbGRyZW5fdXNlciIsICAgICJ1c2VyIHRpbWUgb2YgY2hpbGRyZW4ifSwKKyAgICB7ImNoaWxkcmVuX3N5c3RlbSIsICAgICJzeXN0ZW0gdGltZSBvZiBjaGlsZHJlbiJ9LAorICAgIHsiZWxhcHNlZCIsICAgICJlbGFwc2VkIHRpbWUgc2luY2UgYW4gYXJiaXRyYXJ5IHBvaW50IGluIHRoZSBwYXN0In0sCisgICAge05VTEx9Cit9OwogCi1QeURvY19TVFJWQVIod2luX3N5bWxpbmtfX2RvY19fLAotInN5bWxpbmsoc3JjLCBkc3QsIHRhcmdldF9pc19kaXJlY3Rvcnk9RmFsc2UpXG5cblwKLUNyZWF0ZSBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdG8gc3JjIG5hbWVkIGRzdC5cblwKLXRhcmdldF9pc19kaXJlY3RvcnkgaXMgcmVxdWlyZWQgaWYgdGhlIHRhcmdldCBpcyB0byBiZSBpbnRlcnByZXRlZCBhc1xuXAotYSBkaXJlY3RvcnkuXG5cCi1UaGlzIGZ1bmN0aW9uIHJlcXVpcmVzIFdpbmRvd3MgNi4wIG9yIGdyZWF0ZXIsIGFuZCByYWlzZXMgYVxuXAotTm90SW1wbGVtZW50ZWRFcnJvciBvdGhlcndpc2UuIik7CitQeURvY19TVFJWQVIodGltZXNfcmVzdWx0X19kb2NfXywKKyJ0aW1lc19yZXN1bHQ6IFJlc3VsdCBmcm9tIG9zLnRpbWVzKCkuXG5cblwKK1RoaXMgb2JqZWN0IG1heSBiZSBhY2Nlc3NlZCBlaXRoZXIgYXMgYSB0dXBsZSBvZlxuXAorICAodXNlciwgc3lzdGVtLCBjaGlsZHJlbl91c2VyLCBjaGlsZHJlbl9zeXN0ZW0sIGVsYXBzZWQpLFxuXAorb3IgdmlhIHRoZSBhdHRyaWJ1dGVzIHVzZXIsIHN5c3RlbSwgY2hpbGRyZW5fdXNlciwgY2hpbGRyZW5fc3lzdGVtLFxuXAorYW5kIGVsYXBzZWQuXG5cCitcblwKK1NlZSBvcy50aW1lcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iKTsKIAotc3RhdGljIFB5T2JqZWN0ICoKLXdpbl9zeW1saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKLXsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNyYyIsICJkZXN0IiwgInRhcmdldF9pc19kaXJlY3RvcnkiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqc3JjLCAqZGVzdDsKLSAgICBpbnQgdGFyZ2V0X2lzX2RpcmVjdG9yeSA9IDA7Ci0gICAgRFdPUkQgcmVzOworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRGVzYyB0aW1lc19yZXN1bHRfZGVzYyA9IHsKKyAgICAidGltZXNfcmVzdWx0IiwgLyogbmFtZSAqLworICAgIHRpbWVzX3Jlc3VsdF9fZG9jX18sIC8qIGRvYyAqLworICAgIHRpbWVzX3Jlc3VsdF9maWVsZHMsCisgICAgNQorfTsKIAotICAgIGlmICghY2hlY2tfQ3JlYXRlU3ltYm9saWNMaW5rVygpKQotICAgIHsKLSAgICAgICAgLyogcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciAqLwotICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCi0gICAgICAgICAgICAiQ3JlYXRlU3ltYm9saWNMaW5rVyBub3QgZm91bmQiKTsKLSAgICB9Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT098aTpzeW1saW5rIiwKLSAgICAgICAga3dsaXN0LCAmc3JjLCAmZGVzdCwgJnRhcmdldF9pc19kaXJlY3RvcnkpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeVR5cGVPYmplY3QgVGltZXNSZXN1bHRUeXBlOwogCi0gICAgaWYgKHdpbjMyX2Nhbl9zeW1saW5rID09IDApCi0gICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfT1NFcnJvciwgInN5bWJvbGljIGxpbmsgcHJpdmlsZWdlIG5vdCBoZWxkIik7Ci0KLSAgICBpZiAoIWNvbnZlcnRfdG9fdW5pY29kZSgmc3JjKSkgeyByZXR1cm4gTlVMTDsgfQotICAgIGlmICghY29udmVydF90b191bmljb2RlKCZkZXN0KSkgewotICAgICAgICBQeV9ERUNSRUYoc3JjKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IFB5X0NyZWF0ZVN5bWJvbGljTGlua1coCi0gICAgICAgIFB5VW5pY29kZV9Bc1VuaWNvZGUoZGVzdCksCi0gICAgICAgIFB5VW5pY29kZV9Bc1VuaWNvZGUoc3JjKSwKLSAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9ERUNSRUYoc3JjKTsKLSAgICBQeV9ERUNSRUYoZGVzdCk7Ci0gICAgaWYgKCFyZXMpCi0gICAgewotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgic3ltbGluayIsIFB5VW5pY29kZV9Bc1VuaWNvZGUoc3JjKSk7Ci0gICAgfQotCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotfQotI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TWU1MSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisjaWZkZWYgTVNfV0lORE9XUworI2RlZmluZSBIQVZFX1RJTUVTICAvKiBtYW5kYXRvcnksIGZvciB0aGUgbWV0aG9kIHRhYmxlICovCisjZW5kaWYKIAogI2lmZGVmIEhBVkVfVElNRVMKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWxkX3RpbWVzX3Jlc3VsdChkb3VibGUgdXNlciwgZG91YmxlIHN5c3RlbSwKKyAgICBkb3VibGUgY2hpbGRyZW5fdXNlciwgZG91YmxlIGNoaWxkcmVuX3N5c3RlbSwKKyAgICBkb3VibGUgZWxhcHNlZCkKK3sKKyAgICBQeU9iamVjdCAqdmFsdWUgPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmVGltZXNSZXN1bHRUeXBlKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyNkZWZpbmUgU0VUKGksIGZpZWxkKSBcCisgICAgeyBcCisgICAgUHlPYmplY3QgKm8gPSBQeUZsb2F0X0Zyb21Eb3VibGUoZmllbGQpOyBcCisgICAgaWYgKCFvKSB7IFwKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsgXAorICAgICAgICByZXR1cm4gTlVMTDsgXAorICAgIH0gXAorICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odmFsdWUsIGksIG8pOyBcCisgICAgfSBcCisKKyAgICBTRVQoMCwgdXNlcik7CisgICAgU0VUKDEsIHN5c3RlbSk7CisgICAgU0VUKDIsIGNoaWxkcmVuX3VzZXIpOworICAgIFNFVCgzLCBjaGlsZHJlbl9zeXN0ZW0pOworICAgIFNFVCg0LCBlbGFwc2VkKTsKKworI3VuZGVmIFNFVAorCisgICAgcmV0dXJuIHZhbHVlOworfQorCitQeURvY19TVFJWQVIocG9zaXhfdGltZXNfX2RvY19fLAorInRpbWVzKCkgLT4gdGltZXNfcmVzdWx0XG5cblwKK1JldHVybiBhbiBvYmplY3QgY29udGFpbmluZyBmbG9hdGluZyBwb2ludCBudW1iZXJzIGluZGljYXRpbmcgcHJvY2Vzc1xuXAordGltZXMuICBUaGUgb2JqZWN0IGJlaGF2ZXMgbGlrZSBhIG5hbWVkIHR1cGxlIHdpdGggdGhlc2UgZmllbGRzOlxuXAorICAodXRpbWUsIHN0aW1lLCBjdXRpbWUsIGNzdGltZSwgZWxhcHNlZF90aW1lKSIpOworCiAjaWYgZGVmaW5lZChQWUNDX1ZBQ1BQKSAmJiBkZWZpbmVkKFBZT1NfT1MyKQogc3RhdGljIGxvbmcKIHN5c3RlbV91cHRpbWUodm9pZCkKQEAgLTU0ODIsMzggKzc0NTUsMTQgQEAKIHBvc2l4X3RpbWVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQogewogICAgIC8qIEN1cnJlbnRseSBPbmx5IFVwdGltZSBpcyBQcm92aWRlZCAtLSBPdGhlcnMgTGF0ZXIgKi8KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiZGRkZGQiLAorICAgIHJldHVybiBidWlsZF90aW1lc19yZXN1bHQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSkwIC8qIHQudG1zX3V0aW1lIC8gSFogKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSkwIC8qIHQudG1zX3N0aW1lIC8gSFogKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSkwIC8qIHQudG1zX2N1dGltZSAvIEhaICovLAogICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpMCAvKiB0LnRtc19jc3RpbWUgLyBIWiAqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXN5c3RlbV91cHRpbWUoKSAvIDEwMDApOwogfQotI2Vsc2UgLyogbm90IE9TMiAqLwotI2RlZmluZSBORUVEX1RJQ0tTX1BFUl9TRUNPTkQKLXN0YXRpYyBsb25nIHRpY2tzX3Blcl9zZWNvbmQgPSAtMTsKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF90aW1lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKLXsKLSAgICBzdHJ1Y3QgdG1zIHQ7Ci0gICAgY2xvY2tfdCBjOwotICAgIGVycm5vID0gMDsKLSAgICBjID0gdGltZXMoJnQpOwotICAgIGlmIChjID09IChjbG9ja190KSAtMSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImRkZGRkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXQudG1zX3V0aW1lIC8gdGlja3NfcGVyX3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXQudG1zX3N0aW1lIC8gdGlja3NfcGVyX3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXQudG1zX2N1dGltZSAvIHRpY2tzX3Blcl9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl0LnRtc19jc3RpbWUgLyB0aWNrc19wZXJfc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpYyAvIHRpY2tzX3Blcl9zZWNvbmQpOwotfQotI2VuZGlmIC8qIG5vdCBPUzIgKi8KLSNlbmRpZiAvKiBIQVZFX1RJTUVTICovCi0KLQotI2lmZGVmIE1TX1dJTkRPV1MKLSNkZWZpbmUgSEFWRV9USU1FUyAgICAgIC8qIHNvIHRoZSBtZXRob2QgdGFibGUgd2lsbCBwaWNrIGl0IHVwICovCisjZWxpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfdGltZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCiB7CkBAIC01NTI2LDggKzc0NzUsNyBAQAogICAgICAgIDFlNyBpcyBvbmUgc2Vjb25kIGluIHN1Y2ggdW5pdHM7IDFlLTcgdGhlIGludmVyc2UuCiAgICAgICAgNDI5LjQ5NjcyOTYgaXMgMioqMzIgLyAxZTcgb3IgMioqMzIgKiAxZS03LgogICAgICovCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoCi0gICAgICAgICJkZGRkZCIsCisgICAgcmV0dXJuIGJ1aWxkX3RpbWVzX3Jlc3VsdCgKICAgICAgICAgKGRvdWJsZSkodXNlci5kd0hpZ2hEYXRlVGltZSo0MjkuNDk2NzI5NiArCiAgICAgICAgICAgICAgICAgIHVzZXIuZHdMb3dEYXRlVGltZSoxZS03KSwKICAgICAgICAgKGRvdWJsZSkoa2VybmVsLmR3SGlnaERhdGVUaW1lKjQyOS40OTY3Mjk2ICsKQEAgLTU1MzYsMTQgKzc0ODQsMjkgQEAKICAgICAgICAgKGRvdWJsZSkwLAogICAgICAgICAoZG91YmxlKTApOwogfQotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KLQotI2lmZGVmIEhBVkVfVElNRVMKLVB5RG9jX1NUUlZBUihwb3NpeF90aW1lc19fZG9jX18sCi0idGltZXMoKSAtPiAodXRpbWUsIHN0aW1lLCBjdXRpbWUsIGNzdGltZSwgZWxhcHNlZF90aW1lKVxuXG5cCi1SZXR1cm4gYSB0dXBsZSBvZiBmbG9hdGluZyBwb2ludCBudW1iZXJzIGluZGljYXRpbmcgcHJvY2VzcyB0aW1lcy4iKTsKKyNlbHNlIC8qIE5laXRoZXIgV2luZG93cyBub3IgT1MvMiAqLworI2RlZmluZSBORUVEX1RJQ0tTX1BFUl9TRUNPTkQKK3N0YXRpYyBsb25nIHRpY2tzX3Blcl9zZWNvbmQgPSAtMTsKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF90aW1lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK3sKKyAgICBzdHJ1Y3QgdG1zIHQ7CisgICAgY2xvY2tfdCBjOworICAgIGVycm5vID0gMDsKKyAgICBjID0gdGltZXMoJnQpOworICAgIGlmIChjID09IChjbG9ja190KSAtMSkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgcmV0dXJuIGJ1aWxkX3RpbWVzX3Jlc3VsdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXQudG1zX3V0aW1lIC8gdGlja3NfcGVyX3NlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXQudG1zX3N0aW1lIC8gdGlja3NfcGVyX3NlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXQudG1zX2N1dGltZSAvIHRpY2tzX3Blcl9zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl0LnRtc19jc3RpbWUgLyB0aWNrc19wZXJfc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpYyAvIHRpY2tzX3Blcl9zZWNvbmQpOworfQogI2VuZGlmCiAKKyNlbmRpZiAvKiBIQVZFX1RJTUVTICovCisKIAogI2lmZGVmIEhBVkVfR0VUU0lECiBQeURvY19TVFJWQVIocG9zaXhfZ2V0c2lkX19kb2NfXywKQEAgLTU2NDIsNDkgKzc2MDUsNjggQEAKIC8qIEZ1bmN0aW9ucyBhY3Rpbmcgb24gZmlsZSBkZXNjcmlwdG9ycyAqLwogCiBQeURvY19TVFJWQVIocG9zaXhfb3Blbl9fZG9jX18sCi0ib3BlbihmaWxlbmFtZSwgZmxhZyBbLCBtb2RlPTA3NzddKSAtPiBmZFxuXG5cCi1PcGVuIGEgZmlsZSAoZm9yIGxvdyBsZXZlbCBJTykuIik7Cisib3BlbihwYXRoLCBmbGFncywgbW9kZT0wbzc3NywgKiwgZGlyX2ZkPU5vbmUpXG5cblwKK09wZW4gYSBmaWxlIGZvciBsb3cgbGV2ZWwgSU8uICBSZXR1cm5zIGEgZmlsZSBoYW5kbGUgKGludGVnZXIpLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfb3BlbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9vcGVuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCAqb2ZpbGU7Ci0gICAgY2hhciAqZmlsZTsKLSAgICBpbnQgZmxhZzsKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBpbnQgZmxhZ3M7CiAgICAgaW50IG1vZGUgPSAwNzc3OworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZmQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKIAotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBQeVVuaWNvZGVPYmplY3QgKnBvOwotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVaXxpOm9wZW4iLCAmcG8sICZmbGFnLCAmbW9kZSkpIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAvKiBQeVVuaWNvZGVfQVNfVU5JQ09ERSBPSyB3aXRob3V0IHRocmVhZAotICAgICAgICAgICBsb2NrIGFzIGl0IGlzIGEgc2ltcGxlIGRlcmVmZXJlbmNlLiAqLwotICAgICAgICBmZCA9IF93b3BlbihQeVVuaWNvZGVfQVNfVU5JQ09ERShwbyksIGZsYWcsIG1vZGUpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoZmQgPCAwKQotICAgICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpZmQpOwotICAgIH0KLSAgICAvKiBEcm9wIHRoZSBhcmd1bWVudCBwYXJzaW5nIGVycm9yIGFzIG5hcnJvdyBzdHJpbmdzCi0gICAgICAgYXJlIGFsc28gdmFsaWQuICovCi0gICAgUHlFcnJfQ2xlYXIoKTsKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpfGkkTyY6b3BlbiIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICZmbGFncywgJm1vZGUsCisjaWZkZWYgSEFWRV9PUEVOQVQKKyAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAorI2Vsc2UKKyAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCiAjZW5kaWYKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpfGk6b3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZmxhZywgJm1vZGUpKQorICAgICAgICApKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmaWxlID0gUHlCeXRlc19Bc1N0cmluZyhvZmlsZSk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGZkID0gb3BlbihmaWxlLCBmbGFnLCBtb2RlKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChmZCA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2FsbG9jYXRlZF9maWxlbmFtZShvZmlsZSk7Ci0gICAgUHlfREVDUkVGKG9maWxlKTsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKWZkKTsKLX0KIAorICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKHBhdGgud2lkZSkKKyAgICAgICAgZmQgPSBfd29wZW4ocGF0aC53aWRlLCBmbGFncywgbW9kZSk7CisgICAgZWxzZQorI2VuZGlmCisjaWZkZWYgSEFWRV9PUEVOQVQKKyAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICBmZCA9IG9wZW5hdChkaXJfZmQsIHBhdGgubmFycm93LCBmbGFncywgbW9kZSk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIGZkID0gb3BlbihwYXRoLm5hcnJvdywgZmxhZ3MsIG1vZGUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoZmQgPT0gLTEpIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIC8qIGZvcmNlIHVzZSBvZiBwb3NpeF9lcnJvciBoZXJlIGZvciBleGFjdCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAqLworICAgICAgICBpZiAocGF0aC53aWRlKQorICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoIm9wZW4iLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpZmQpOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KIAogUHlEb2NfU1RSVkFSKHBvc2l4X2Nsb3NlX19kb2NfXywKICJjbG9zZShmZClcblxuXApAQCAtNTczOSw5ICs3NzIxLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgZmQgPSBkdXAoZmQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKGZkIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylmZCk7CkBAIC01NzYwLDE1ICs3NzQwLDQyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghX1B5VmVyaWZ5X2ZkX2R1cDIoZmQsIGZkMikpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXMgPSBkdXAyKGZkLCBmZDIpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAorI2lmZGVmIEhBVkVfTE9DS0YKK1B5RG9jX1NUUlZBUihwb3NpeF9sb2NrZl9fZG9jX18sCisibG9ja2YoZmQsIGNtZCwgbGVuKVxuXG5cCitBcHBseSwgdGVzdCBvciByZW1vdmUgYSBQT1NJWCBsb2NrIG9uIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXG5cCitmZCBpcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKK2NtZCBzcGVjaWZpZXMgdGhlIGNvbW1hbmQgdG8gdXNlIC0gb25lIG9mIEZfTE9DSywgRl9UTE9DSywgRl9VTE9DSyBvclxuXAorRl9URVNULlxuXAorbGVuIHNwZWNpZmllcyB0aGUgc2VjdGlvbiBvZiB0aGUgZmlsZSB0byBsb2NrLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfbG9ja2YoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBmZCwgY21kLCByZXM7CisgICAgb2ZmX3QgbGVuOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPJjpsb2NrZiIsCisgICAgICAgICAgICAmZmQsICZjbWQsIF9wYXJzZV9vZmZfdCwgJmxlbikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlcyA9IGxvY2tmKGZkLCBjbWQsIGxlbik7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXMgPCAwKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKIAogUHlEb2NfU1RSVkFSKHBvc2l4X2xzZWVrX19kb2NfXywKICJsc2VlayhmZCwgcG9zLCBob3cpIC0+IG5ld3Bvc1xuXG5cCkBAIC01Nzk5LDggKzc4MDYsNyBAQAogI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCiAgICAgcG9zID0gUHlMb25nX0FzTG9uZyhwb3NvYmopOwogI2Vsc2UKLSAgICBwb3MgPSBQeUxvbmdfQ2hlY2socG9zb2JqKSA/Ci0gICAgICAgIFB5TG9uZ19Bc0xvbmdMb25nKHBvc29iaikgOiBQeUxvbmdfQXNMb25nKHBvc29iaik7CisgICAgcG9zID0gUHlMb25nX0FzTG9uZ0xvbmcocG9zb2JqKTsKICNlbmRpZgogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTU4NjAsNiArNzg2NiwxNDAgQEAKICAgICByZXR1cm4gYnVmZmVyOwogfQogCisjaWYgKGRlZmluZWQoSEFWRV9TRU5ERklMRSkgJiYgKGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgXAorICAgIHx8IGRlZmluZWQoX19BUFBMRV9fKSkpIHx8IGRlZmluZWQoSEFWRV9SRUFEVikgfHwgZGVmaW5lZChIQVZFX1dSSVRFVikKK3N0YXRpYyBQeV9zc2l6ZV90Citpb3Zfc2V0dXAoc3RydWN0IGlvdmVjICoqaW92LCBQeV9idWZmZXIgKipidWYsIFB5T2JqZWN0ICpzZXEsIGludCBjbnQsIGludCB0eXBlKQoreworICAgIGludCBpLCBqOworICAgIFB5X3NzaXplX3QgYmxlbiwgdG90YWwgPSAwOworCisgICAgKmlvdiA9IFB5TWVtX05ldyhzdHJ1Y3QgaW92ZWMsIGNudCk7CisgICAgaWYgKCppb3YgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gdG90YWw7CisgICAgfQorCisgICAgKmJ1ZiA9IFB5TWVtX05ldyhQeV9idWZmZXIsIGNudCk7CisgICAgaWYgKCpidWYgPT0gTlVMTCkgeworICAgICAgICBQeU1lbV9EZWwoKmlvdik7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiB0b3RhbDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgY250OyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeVNlcXVlbmNlX0dldEl0ZW0oc2VxLCBpKTsKKyAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihpdGVtLCAmKCpidWYpW2ldLCB0eXBlKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgKCppb3YpW2ldLmlvdl9iYXNlID0gKCpidWYpW2ldLmJ1ZjsKKyAgICAgICAgYmxlbiA9ICgqYnVmKVtpXS5sZW47CisgICAgICAgICgqaW92KVtpXS5pb3ZfbGVuID0gYmxlbjsKKyAgICAgICAgdG90YWwgKz0gYmxlbjsKKyAgICB9CisgICAgcmV0dXJuIHRvdGFsOworCitmYWlsOgorICAgIFB5TWVtX0RlbCgqaW92KTsKKyAgICBmb3IgKGogPSAwOyBqIDwgaTsgaisrKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJigqYnVmKVtqXSk7CisgICAgfQorICAgIFB5TWVtX0RlbCgqYnVmKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK2lvdl9jbGVhbnVwKHN0cnVjdCBpb3ZlYyAqaW92LCBQeV9idWZmZXIgKmJ1ZiwgaW50IGNudCkKK3sKKyAgICBpbnQgaTsKKyAgICBQeU1lbV9EZWwoaW92KTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgY250OyBpKyspIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmW2ldKTsKKyAgICB9CisgICAgUHlNZW1fRGVsKGJ1Zik7Cit9CisjZW5kaWYKKworI2lmZGVmIEhBVkVfUkVBRFYKK1B5RG9jX1NUUlZBUihwb3NpeF9yZWFkdl9fZG9jX18sCisicmVhZHYoZmQsIGJ1ZmZlcnMpIC0+IGJ5dGVzcmVhZFxuXG5cCitSZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IgaW50byBhIG51bWJlciBvZiB3cml0YWJsZSBidWZmZXJzLiBidWZmZXJzXG5cCitpcyBhbiBhcmJpdHJhcnkgc2VxdWVuY2Ugb2Ygd3JpdGFibGUgYnVmZmVycy5cblwKK1JldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyByZWFkLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfcmVhZHYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBmZCwgY250OworICAgIFB5X3NzaXplX3QgbjsKKyAgICBQeU9iamVjdCAqc2VxOworICAgIHN0cnVjdCBpb3ZlYyAqaW92OworICAgIFB5X2J1ZmZlciAqYnVmOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpyZWFkdiIsICZmZCwgJnNlcSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhzZXEpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAicmVhZHYoKSBhcmcgMiBtdXN0IGJlIGEgc2VxdWVuY2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGNudCA9IFB5U2VxdWVuY2VfU2l6ZShzZXEpOworCisgICAgaWYgKCFpb3Zfc2V0dXAoJmlvdiwgJmJ1Ziwgc2VxLCBjbnQsIFB5QlVGX1dSSVRBQkxFKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgbiA9IHJlYWR2KGZkLCBpb3YsIGNudCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlvdl9jbGVhbnVwKGlvdiwgYnVmLCBjbnQpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qobik7Cit9CisjZW5kaWYKKworI2lmZGVmIEhBVkVfUFJFQUQKK1B5RG9jX1NUUlZBUihwb3NpeF9wcmVhZF9fZG9jX18sCisicHJlYWQoZmQsIGJ1ZmZlcnNpemUsIG9mZnNldCkgLT4gc3RyaW5nXG5cblwKK1JlYWQgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciwgZmQsIGF0IGEgcG9zaXRpb24gb2Ygb2Zmc2V0LiBJdCB3aWxsIHJlYWQgdXBcblwKK3RvIGJ1ZmZlcnNpemUgbnVtYmVyIG9mIGJ5dGVzLiBUaGUgZmlsZSBvZmZzZXQgcmVtYWlucyB1bmNoYW5nZWQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9wcmVhZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGZkLCBzaXplOworICAgIG9mZl90IG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IG47CisgICAgUHlPYmplY3QgKmJ1ZmZlcjsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTyY6cHJlYWQiLCAmZmQsICZzaXplLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgfQorICAgIGJ1ZmZlciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCBzaXplKTsKKyAgICBpZiAoYnVmZmVyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgfQorICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBuID0gcHJlYWQoZmQsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZmZlciksIHNpemUsIG9mZnNldCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAobiA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIH0KKyAgICBpZiAobiAhPSBzaXplKQorICAgICAgICBfUHlCeXRlc19SZXNpemUoJmJ1ZmZlciwgbik7CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKyNlbmRpZgogCiBQeURvY19TVFJWQVIocG9zaXhfd3JpdGVfX2RvY19fLAogIndyaXRlKGZkLCBzdHJpbmcpIC0+IGJ5dGVzd3JpdHRlblxuXG5cCkBAIC01ODk0LDEwICs4MDM0LDE0OSBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZSk7CiB9CiAKKyNpZmRlZiBIQVZFX1NFTkRGSUxFCitQeURvY19TVFJWQVIocG9zaXhfc2VuZGZpbGVfX2RvY19fLAorInNlbmRmaWxlKG91dCwgaW4sIG9mZnNldCwgbmJ5dGVzKSAtPiBieXRlc3dyaXR0ZW5cblwKK3NlbmRmaWxlKG91dCwgaW4sIG9mZnNldCwgbmJ5dGVzLCBoZWFkZXJzPU5vbmUsIHRyYWlsZXJzPU5vbmUsIGZsYWdzPTApXG5cCisgICAgICAgICAgICAtPiBieXRlc3dyaXR0ZW5cblwKK0NvcHkgbmJ5dGVzIGJ5dGVzIGZyb20gZmlsZSBkZXNjcmlwdG9yIGluIHRvIGZpbGUgZGVzY3JpcHRvciBvdXQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zZW5kZmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RpY3QpCit7CisgICAgaW50IGluLCBvdXQ7CisgICAgUHlfc3NpemVfdCByZXQ7CisgICAgb2ZmX3Qgb2Zmc2V0OworCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZm5kZWYgX19BUFBMRV9fCisgICAgUHlfc3NpemVfdCBsZW47CisjZW5kaWYKKyAgICBQeU9iamVjdCAqaGVhZGVycyA9IE5VTEwsICp0cmFpbGVycyA9IE5VTEw7CisgICAgUHlfYnVmZmVyICpoYnVmLCAqdGJ1ZjsKKyAgICBvZmZfdCBzYnl0ZXM7CisgICAgc3RydWN0IHNmX2hkdHIgc2Y7CisgICAgaW50IGZsYWdzID0gMDsKKyAgICBzZi5oZWFkZXJzID0gTlVMTDsKKyAgICBzZi50cmFpbGVycyA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7Im91dCIsICJpbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvZmZzZXQiLCAiY291bnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVhZGVycyIsICJ0cmFpbGVycyIsICJmbGFncyIsIE5VTEx9OworCisjaWZkZWYgX19BUFBMRV9fCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkaWN0LCAiaWlPJk8mfE9PaTpzZW5kZmlsZSIsCisgICAgICAgIGtleXdvcmRzLCAmb3V0LCAmaW4sIF9wYXJzZV9vZmZfdCwgJm9mZnNldCwgX3BhcnNlX29mZl90LCAmc2J5dGVzLAorI2Vsc2UKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJpaU8mbnxPT2k6c2VuZGZpbGUiLAorICAgICAgICBrZXl3b3JkcywgJm91dCwgJmluLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQsICZsZW4sCisjZW5kaWYKKyAgICAgICAgICAgICAgICAmaGVhZGVycywgJnRyYWlsZXJzLCAmZmxhZ3MpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGhlYWRlcnMgIT0gTlVMTCkgeworICAgICAgICBpZiAoIVB5U2VxdWVuY2VfQ2hlY2soaGVhZGVycykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgInNlbmRmaWxlKCkgaGVhZGVycyBtdXN0IGJlIGEgc2VxdWVuY2Ugb3IgTm9uZSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGkgPSAwOyAvKiBBdm9pZCB1bmluaXRpYWxpemVkIHdhcm5pbmcgKi8KKyAgICAgICAgICAgIHNmLmhkcl9jbnQgPSBQeVNlcXVlbmNlX1NpemUoaGVhZGVycyk7CisgICAgICAgICAgICBpZiAoc2YuaGRyX2NudCA+IDAgJiYKKyAgICAgICAgICAgICAgICAhKGkgPSBpb3Zfc2V0dXAoJihzZi5oZWFkZXJzKSwgJmhidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMsIHNmLmhkcl9jbnQsIFB5QlVGX1NJTVBMRSkpKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworI2lmZGVmIF9fQVBQTEVfXworICAgICAgICAgICAgc2J5dGVzICs9IGk7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAodHJhaWxlcnMgIT0gTlVMTCkgeworICAgICAgICBpZiAoIVB5U2VxdWVuY2VfQ2hlY2sodHJhaWxlcnMpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJzZW5kZmlsZSgpIHRyYWlsZXJzIG11c3QgYmUgYSBzZXF1ZW5jZSBvciBOb25lIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaSA9IDA7IC8qIEF2b2lkIHVuaW5pdGlhbGl6ZWQgd2FybmluZyAqLworICAgICAgICAgICAgc2YudHJsX2NudCA9IFB5U2VxdWVuY2VfU2l6ZSh0cmFpbGVycyk7CisgICAgICAgICAgICBpZiAoc2YudHJsX2NudCA+IDAgJiYKKyAgICAgICAgICAgICAgICAhKGkgPSBpb3Zfc2V0dXAoJihzZi50cmFpbGVycyksICZ0YnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpbGVycywgc2YudHJsX2NudCwgUHlCVUZfU0lNUExFKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisjaWZkZWYgX19BUFBMRV9fCisgICAgICAgICAgICBzYnl0ZXMgKz0gaTsKKyNlbmRpZgorICAgICAgICB9CisgICAgfQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIF9fQVBQTEVfXworICAgIHJldCA9IHNlbmRmaWxlKGluLCBvdXQsIG9mZnNldCwgJnNieXRlcywgJnNmLCBmbGFncyk7CisjZWxzZQorICAgIHJldCA9IHNlbmRmaWxlKGluLCBvdXQsIG9mZnNldCwgbGVuLCAmc2YsICZzYnl0ZXMsIGZsYWdzKTsKKyNlbmRpZgorICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoc2YuaGVhZGVycyAhPSBOVUxMKQorICAgICAgICBpb3ZfY2xlYW51cChzZi5oZWFkZXJzLCBoYnVmLCBzZi5oZHJfY250KTsKKyAgICBpZiAoc2YudHJhaWxlcnMgIT0gTlVMTCkKKyAgICAgICAgaW92X2NsZWFudXAoc2YudHJhaWxlcnMsIHRidWYsIHNmLnRybF9jbnQpOworCisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgaWYgKChlcnJubyA9PSBFQUdBSU4pIHx8IChlcnJubyA9PSBFQlVTWSkpIHsKKyAgICAgICAgICAgIGlmIChzYnl0ZXMgIT0gMCkgeworICAgICAgICAgICAgICAgIC8vIHNvbWUgZGF0YSBoYXMgYmVlbiBzZW50CisgICAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gbm8gZGF0YSBoYXMgYmVlbiBzZW50OyB1cHBlciBhcHBsaWNhdGlvbiBpcyBzdXBwb3NlZAorICAgICAgICAgICAgICAgIC8vIHRvIHJldHJ5IG9uIEVBR0FJTiBvciBFQlVTWQorICAgICAgICAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIH0KKyAgICBnb3RvIGRvbmU7CisKK2RvbmU6CisgICAgI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJsIiwgc2J5dGVzKTsKKyAgICAjZWxzZQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTCIsIHNieXRlcyk7CisgICAgI2VuZGlmCisKKyNlbHNlCisgICAgUHlfc3NpemVfdCBjb3VudDsKKyAgICBQeU9iamVjdCAqb2Zmb2JqOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJvdXQiLCAiaW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2Zmc2V0IiwgImNvdW50IiwgTlVMTH07CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkaWN0LCAiaWlPbjpzZW5kZmlsZSIsCisgICAgICAgICAgICBrZXl3b3JkcywgJm91dCwgJmluLCAmb2Zmb2JqLCAmY291bnQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNpZmRlZiBsaW51eAorICAgIGlmIChvZmZvYmogPT0gUHlfTm9uZSkgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJldCA9IHNlbmRmaWxlKG91dCwgaW4sIE5VTEwsIGNvdW50KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKHJldCA8IDApCisgICAgICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIm4iLCByZXQpOworICAgIH0KKyNlbmRpZgorICAgIGlmICghX3BhcnNlX29mZl90KG9mZm9iaiwgJm9mZnNldCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXQgPSBzZW5kZmlsZShvdXQsIGluLCAmb2Zmc2V0LCBjb3VudCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIm4iLCByZXQpOworI2VuZGlmCit9CisjZW5kaWYKIAogUHlEb2NfU1RSVkFSKHBvc2l4X2ZzdGF0X19kb2NfXywKICJmc3RhdChmZCkgLT4gc3RhdCByZXN1bHRcblxuXAotTGlrZSBzdGF0KCksIGJ1dCBmb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuIik7CitMaWtlIHN0YXQoKSwgYnV0IGZvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKK0VxdWl2YWxlbnQgdG8gc3RhdChmZD1mZCkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9mc3RhdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC01OTExLDggKzgxOTAsNiBAQAogICAgIC8qIG9uIE9wZW5WTVMgd2UgbXVzdCBlbnN1cmUgdGhhdCBhbGwgYnl0ZXMgYXJlIHdyaXR0ZW4gdG8gdGhlIGZpbGUgKi8KICAgICBmc3luYyhmZCk7CiAjZW5kaWYKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXMgPSBGU1RBVChmZCwgJnN0KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwpAQCAtNTk1NSw5ICs4MjMyLDcgQEAKICAgICBIRklMRSByZWFkLCB3cml0ZTsKICAgICBBUElSRVQgcmM7CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmMgPSBEb3NDcmVhdGVQaXBlKCAmcmVhZCwgJndyaXRlLCA0MDk2KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyYyAhPSBOT19FUlJPUikKICAgICAgICAgcmV0dXJuIG9zMl9lcnJvcihyYyk7CiAKQEAgLTU5NjYsOSArODI0MSw3IEBACiAjaWYgIWRlZmluZWQoTVNfV0lORE9XUykKICAgICBpbnQgZmRzWzJdOwogICAgIGludCByZXM7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJlcyA9IHBpcGUoZmRzKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyZXMgIT0gMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihpaSkiLCBmZHNbMF0sIGZkc1sxXSk7CkBAIC01OTc2LDkgKzgyNDksNyBAQAogICAgIEhBTkRMRSByZWFkLCB3cml0ZTsKICAgICBpbnQgcmVhZF9mZCwgd3JpdGVfZmQ7CiAgICAgQk9PTCBvazsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgb2sgPSBDcmVhdGVQaXBlKCZyZWFkLCAmd3JpdGUsIE5VTEwsIDApOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKCFvaykKICAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yKCJDcmVhdGVQaXBlIiwgTlVMTCk7CiAgICAgcmVhZF9mZCA9IF9vcGVuX29zZmhhbmRsZSgoUHlfaW50cHRyX3QpcmVhZCwgMCk7CkBAIC01OTg5LDY2ICs4MjYwLDIxNCBAQAogfQogI2VuZGlmICAvKiBIQVZFX1BJUEUgKi8KIAotCi0jaWZkZWYgSEFWRV9NS0ZJRk8KLVB5RG9jX1NUUlZBUihwb3NpeF9ta2ZpZm9fX2RvY19fLAotIm1rZmlmbyhmaWxlbmFtZSBbLCBtb2RlPTA2NjZdKVxuXG5cCi1DcmVhdGUgYSBGSUZPIChhIFBPU0lYIG5hbWVkIHBpcGUpLiIpOworI2lmZGVmIEhBVkVfUElQRTIKK1B5RG9jX1NUUlZBUihwb3NpeF9waXBlMl9fZG9jX18sCisicGlwZTIoZmxhZ3MpIC0+IChyZWFkX2VuZCwgd3JpdGVfZW5kKVxuXG5cCitDcmVhdGUgYSBwaXBlIHdpdGggZmxhZ3Mgc2V0IGF0b21pY2FsbHkuXG5cCitmbGFncyBjYW4gYmUgY29uc3RydWN0ZWQgYnkgT1JpbmcgdG9nZXRoZXIgb25lIG9yIG1vcmUgb2YgdGhlc2UgdmFsdWVzOlxuXAorT19OT05CTE9DSywgT19DTE9FWEVDLlxuXAorIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9ta2ZpZm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfcGlwZTIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKmZpbGVuYW1lOwotICAgIGludCBtb2RlID0gMDY2NjsKKyAgICBpbnQgZmxhZ3M7CisgICAgaW50IGZkc1syXTsKICAgICBpbnQgcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ8aTpta2ZpZm8iLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm1vZGUpKQorCisgICAgZmxhZ3MgPSBfUHlMb25nX0FzSW50KGFyZyk7CisgICAgaWYgKGZsYWdzID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZpbGVuYW1lID0gUHlCeXRlc19BU19TVFJJTkcob3BhdGgpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBta2ZpZm8oZmlsZW5hbWUsIG1vZGUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBpZiAocmVzIDwgMCkKKworICAgIHJlcyA9IHBpcGUyKGZkcywgZmxhZ3MpOworICAgIGlmIChyZXMgIT0gMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoaWkpIiwgZmRzWzBdLCBmZHNbMV0pOworfQorI2VuZGlmIC8qIEhBVkVfUElQRTIgKi8KKworI2lmZGVmIEhBVkVfV1JJVEVWCitQeURvY19TVFJWQVIocG9zaXhfd3JpdGV2X19kb2NfXywKKyJ3cml0ZXYoZmQsIGJ1ZmZlcnMpIC0+IGJ5dGVzd3JpdHRlblxuXG5cCitXcml0ZSB0aGUgY29udGVudHMgb2YgYnVmZmVycyB0byBhIGZpbGUgZGVzY3JpcHRvciwgd2hlcmUgYnVmZmVycyBpcyBhblxuXAorYXJiaXRyYXJ5IHNlcXVlbmNlIG9mIGJ1ZmZlcnMuXG5cCitSZXR1cm5zIHRoZSB0b3RhbCBieXRlcyB3cml0dGVuLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfd3JpdGV2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgZmQsIGNudDsKKyAgICBQeV9zc2l6ZV90IHJlczsKKyAgICBQeU9iamVjdCAqc2VxOworICAgIHN0cnVjdCBpb3ZlYyAqaW92OworICAgIFB5X2J1ZmZlciAqYnVmOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86d3JpdGV2IiwgJmZkLCAmc2VxKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKHNlcSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJ3cml0ZXYoKSBhcmcgMiBtdXN0IGJlIGEgc2VxdWVuY2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGNudCA9IFB5U2VxdWVuY2VfU2l6ZShzZXEpOworCisgICAgaWYgKCFpb3Zfc2V0dXAoJmlvdiwgJmJ1Ziwgc2VxLCBjbnQsIFB5QlVGX1NJTVBMRSkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlcyA9IHdyaXRldihmZCwgaW92LCBjbnQpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpb3ZfY2xlYW51cChpb3YsIGJ1ZiwgY250KTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7CiB9CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfUFdSSVRFCitQeURvY19TVFJWQVIocG9zaXhfcHdyaXRlX19kb2NfXywKKyJwd3JpdGUoZmQsIHN0cmluZywgb2Zmc2V0KSAtPiBieXRlc3dyaXR0ZW5cblxuXAorV3JpdGUgc3RyaW5nIHRvIGEgZmlsZSBkZXNjcmlwdG9yLCBmZCwgZnJvbSBvZmZzZXQsIGxlYXZpbmcgdGhlIGZpbGVcblwKK29mZnNldCB1bmNoYW5nZWQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9wd3JpdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X2J1ZmZlciBwYnVmOworICAgIGludCBmZDsKKyAgICBvZmZfdCBvZmZzZXQ7CisgICAgUHlfc3NpemVfdCBzaXplOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSpPJjpwd3JpdGUiLCAmZmQsICZwYnVmLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgfQorICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBzaXplID0gcHdyaXRlKGZkLCBwYnVmLmJ1ZiwgKHNpemVfdClwYnVmLmxlbiwgb2Zmc2V0KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOworICAgIGlmIChzaXplIDwgMCkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzaXplKTsKK30KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9NS0ZJRk8KK1B5RG9jX1NUUlZBUihwb3NpeF9ta2ZpZm9fX2RvY19fLAorIm1rZmlmbyhwYXRoLCBtb2RlPTBvNjY2LCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAorQ3JlYXRlIGEgRklGTyAoYSBQT1NJWCBuYW1lZCBwaXBlKS5cblwKK1xuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X21rZmlmbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IG1vZGUgPSAwNjY2OworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aSRPJjpta2ZpZm8iLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAmbW9kZSwKKyNpZmRlZiBIQVZFX01LRklGT0FUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKKyNlbHNlCisgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAorI2VuZGlmCisgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfTUtGSUZPQVQKKyAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICByZXN1bHQgPSBta2ZpZm9hdChkaXJfZmQsIHBhdGgubmFycm93LCBtb2RlKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gbWtmaWZvKHBhdGgubmFycm93LCBtb2RlKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKyNlbmRpZgogCiAjaWYgZGVmaW5lZChIQVZFX01LTk9EKSAmJiBkZWZpbmVkKEhBVkVfTUFLRURFVikKIFB5RG9jX1NUUlZBUihwb3NpeF9ta25vZF9fZG9jX18sCi0ibWtub2QoZmlsZW5hbWUgWywgbW9kZT0wNjAwLCBkZXZpY2VdKVxuXG5cCisibWtub2QoZmlsZW5hbWUsIG1vZGU9MG82MDAsIGRldmljZT0wLCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAogQ3JlYXRlIGEgZmlsZXN5c3RlbSBub2RlIChmaWxlLCBkZXZpY2Ugc3BlY2lhbCBmaWxlIG9yIG5hbWVkIHBpcGUpXG5cCiBuYW1lZCBmaWxlbmFtZS4gbW9kZSBzcGVjaWZpZXMgYm90aCB0aGUgcGVybWlzc2lvbnMgdG8gdXNlIGFuZCB0aGVcblwKIHR5cGUgb2Ygbm9kZSB0byBiZSBjcmVhdGVkLCBiZWluZyBjb21iaW5lZCAoYml0d2lzZSBPUikgd2l0aCBvbmUgb2ZcblwKIFNfSUZSRUcsIFNfSUZDSFIsIFNfSUZCTEssIGFuZCBTX0lGSUZPLiBGb3IgU19JRkNIUiBhbmQgU19JRkJMSyxcblwKIGRldmljZSBkZWZpbmVzIHRoZSBuZXdseSBjcmVhdGVkIGRldmljZSBzcGVjaWFsIGZpbGUgKHByb2JhYmx5IHVzaW5nXG5cCi1vcy5tYWtlZGV2KCkpLCBvdGhlcndpc2UgaXQgaXMgaWdub3JlZC4iKTsKK29zLm1ha2VkZXYoKSksIG90aGVyd2lzZSBpdCBpcyBpZ25vcmVkLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9ta25vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9ta25vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKmZpbGVuYW1lOwotICAgIGludCBtb2RlID0gMDYwMDsKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBpbnQgbW9kZSA9IDA2NjY7CiAgICAgaW50IGRldmljZSA9IDA7Ci0gICAgaW50IHJlczsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mfGlpOm1rbm9kIiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZtb2RlLCAmZGV2aWNlKSkKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRldmljZSIsICJkaXJfZmQiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpaSRPJjpta25vZCIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICZtb2RlLCAmZGV2aWNlLAorI2lmZGVmIEhBVkVfTUtOT0RBVAorICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCisjZWxzZQorICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKKyNlbmRpZgorICAgICAgICApKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmaWxlbmFtZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG9wYXRoKTsKKwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBta25vZChmaWxlbmFtZSwgbW9kZSwgZGV2aWNlKTsKKyNpZmRlZiBIQVZFX01LTk9EQVQKKyAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICByZXN1bHQgPSBta25vZGF0KGRpcl9mZCwgcGF0aC5uYXJyb3csIG1vZGUsIGRldmljZSk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IG1rbm9kKHBhdGgubmFycm93LCBtb2RlLCBkZXZpY2UpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisKKyAgICBpZiAocmVzdWx0IDwgMCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwb3NpeF9lcnJvcigpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogI2VuZGlmCiAKQEAgLTYxMDUsMTggKzg1MjQsOCBAQAogICAgIGludCBmZDsKICAgICBvZmZfdCBsZW5ndGg7CiAgICAgaW50IHJlczsKLSAgICBQeU9iamVjdCAqbGVub2JqOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpmdHJ1bmNhdGUiLCAmZmQsICZsZW5vYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCi0gICAgbGVuZ3RoID0gUHlMb25nX0FzTG9uZyhsZW5vYmopOwotI2Vsc2UKLSAgICBsZW5ndGggPSBQeUxvbmdfQ2hlY2sobGVub2JqKSA/Ci0gICAgICAgIFB5TG9uZ19Bc0xvbmdMb25nKGxlbm9iaikgOiBQeUxvbmdfQXNMb25nKGxlbm9iaik7Ci0jZW5kaWYKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJjpmdHJ1bmNhdGUiLCAmZmQsIF9wYXJzZV9vZmZfdCwgJmxlbmd0aCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtNjEyOSw2ICs4NTM4LDEwOSBAQAogfQogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1RSVU5DQVRFCitQeURvY19TVFJWQVIocG9zaXhfdHJ1bmNhdGVfX2RvY19fLAorInRydW5jYXRlKHBhdGgsIGxlbmd0aClcblxuXAorVHJ1bmNhdGUgdGhlIGZpbGUgZ2l2ZW4gYnkgcGF0aCB0byBsZW5ndGggYnl0ZXMuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3RydW5jYXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBvZmZfdCBsZW5ndGg7CisgICAgaW50IHJlczsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJsZW5ndGgiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyNpZmRlZiBIQVZFX0ZUUlVOQ0FURQorICAgIHBhdGguYWxsb3dfZmQgPSAxOworI2VuZGlmCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJjp0cnVuY2F0ZSIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcGFyc2Vfb2ZmX3QsICZsZW5ndGgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBIQVZFX0ZUUlVOQ0FURQorICAgIGlmIChwYXRoLmZkICE9IC0xKQorICAgICAgICByZXMgPSBmdHJ1bmNhdGUocGF0aC5mZCwgbGVuZ3RoKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmVzID0gdHJ1bmNhdGUocGF0aC5uYXJyb3csIGxlbmd0aCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgcmVzdWx0ID0gcGF0aF9wb3NpeF9lcnJvcigidHJ1bmNhdGUiLCAmcGF0aCk7CisgICAgZWxzZSB7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgcmVzdWx0ID0gUHlfTm9uZTsKKyAgICB9CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1BPU0lYX0ZBTExPQ0FURQorUHlEb2NfU1RSVkFSKHBvc2l4X3Bvc2l4X2ZhbGxvY2F0ZV9fZG9jX18sCisicG9zaXhfZmFsbG9jYXRlKGZkLCBvZmZzZXQsIGxlbilcblxuXAorRW5zdXJlcyB0aGF0IGVub3VnaCBkaXNrIHNwYWNlIGlzIGFsbG9jYXRlZCBmb3IgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZkXG5cCitzdGFydGluZyBmcm9tIG9mZnNldCBhbmQgY29udGludWluZyBmb3IgbGVuIGJ5dGVzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfcG9zaXhfZmFsbG9jYXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBvZmZfdCBsZW4sIG9mZnNldDsKKyAgICBpbnQgcmVzLCBmZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTyY6cG9zaXhfZmFsbG9jYXRlIiwKKyAgICAgICAgICAgICZmZCwgX3BhcnNlX29mZl90LCAmb2Zmc2V0LCBfcGFyc2Vfb2ZmX3QsICZsZW4pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXMgPSBwb3NpeF9mYWxsb2NhdGUoZmQsIG9mZnNldCwgbGVuKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChyZXMgIT0gMCkgeworICAgICAgICBlcnJubyA9IHJlczsKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1BPU0lYX0ZBRFZJU0UKK1B5RG9jX1NUUlZBUihwb3NpeF9wb3NpeF9mYWR2aXNlX19kb2NfXywKKyJwb3NpeF9mYWR2aXNlKGZkLCBvZmZzZXQsIGxlbiwgYWR2aWNlKVxuXG5cCitBbm5vdW5jZXMgYW4gaW50ZW50aW9uIHRvIGFjY2VzcyBkYXRhIGluIGEgc3BlY2lmaWMgcGF0dGVybiB0aHVzIGFsbG93aW5nXG5cCit0aGUga2VybmVsIHRvIG1ha2Ugb3B0aW1pemF0aW9ucy5cblwKK1RoZSBhZHZpY2UgYXBwbGllcyB0byB0aGUgcmVnaW9uIG9mIHRoZSBmaWxlIHNwZWNpZmllZCBieSBmZCBzdGFydGluZyBhdFxuXAorb2Zmc2V0IGFuZCBjb250aW51aW5nIGZvciBsZW4gYnl0ZXMuXG5cCithZHZpY2UgaXMgb25lIG9mIFBPU0lYX0ZBRFZfTk9STUFMLCBQT1NJWF9GQURWX1NFUVVFTlRJQUwsXG5cCitQT1NJWF9GQURWX1JBTkRPTSwgUE9TSVhfRkFEVl9OT1JFVVNFLCBQT1NJWF9GQURWX1dJTExORUVEIG9yXG5cCitQT1NJWF9GQURWX0RPTlRORUVELiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfcG9zaXhfZmFkdmlzZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgb2ZmX3QgbGVuLCBvZmZzZXQ7CisgICAgaW50IHJlcywgZmQsIGFkdmljZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTyZpOnBvc2l4X2ZhZHZpc2UiLAorICAgICAgICAgICAgJmZkLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQsIF9wYXJzZV9vZmZfdCwgJmxlbiwgJmFkdmljZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlcyA9IHBvc2l4X2ZhZHZpc2UoZmQsIG9mZnNldCwgbGVuLCBhZHZpY2UpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHJlcyAhPSAwKSB7CisgICAgICAgIGVycm5vID0gcmVzOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKKwogI2lmZGVmIEhBVkVfUFVURU5WCiBQeURvY19TVFJWQVIocG9zaXhfcHV0ZW52X19kb2NfXywKICJwdXRlbnYoa2V5LCB2YWx1ZSlcblxuXApAQCAtNjE0MSwyMyArODY1Myw0MCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X3B1dGVudihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgUHlPYmplY3QgKm5ld3N0ciA9IE5VTEw7CiAjaWZkZWYgTVNfV0lORE9XUwotICAgIHdjaGFyX3QgKnMxLCAqczI7CisgICAgUHlPYmplY3QgKm9zMSwgKm9zMjsKICAgICB3Y2hhcl90ICpuZXdlbnY7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlVVOnB1dGVudiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZvczEsICZvczIpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG5ld3N0ciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVT0lVSIsIG9zMSwgb3MyKTsKKyAgICBpZiAobmV3c3RyID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKF9NQVhfRU5WIDwgUHlVbmljb2RlX0dFVF9MRU5HVEgobmV3c3RyKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJ0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbG9uZ2VyIHRoYW4gJXUgY2hhcmFjdGVycyIsCisgICAgICAgICAgICAgICAgICAgICBfTUFYX0VOVik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgbmV3ZW52ID0gUHlVbmljb2RlX0FzVW5pY29kZShuZXdzdHIpOworICAgIGlmIChuZXdlbnYgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoX3dwdXRlbnYobmV3ZW52KSkgeworICAgICAgICBwb3NpeF9lcnJvcigpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KICNlbHNlCiAgICAgUHlPYmplY3QgKm9zMSwgKm9zMjsKICAgICBjaGFyICpzMSwgKnMyOwogICAgIGNoYXIgKm5ld2VudjsKLSNlbmRpZgotICAgIFB5T2JqZWN0ICpuZXdzdHIgPSBOVUxMOwotICAgIHNpemVfdCBsZW47CiAKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJ1dTpwdXRlbnYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmczEsICZzMikpCi0gICAgICAgIHJldHVybiBOVUxMOwotI2Vsc2UKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIk8mTyY6cHV0ZW52IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3MxLApAQCAtNjE2NSw1OCArODY5NCwxNCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzMSA9IFB5Qnl0ZXNfQXNTdHJpbmcob3MxKTsKICAgICBzMiA9IFB5Qnl0ZXNfQXNTdHJpbmcob3MyKTsKLSNlbmRpZgogCi0jaWYgZGVmaW5lZChQWU9TX09TMikKLSAgICBpZiAoc3RyaWNtcChzMSwgIkJFR0lOTElCUEFUSCIpID09IDApIHsKLSAgICAgICAgQVBJUkVUIHJjOwotCi0gICAgICAgIHJjID0gRG9zU2V0RXh0TElCUEFUSChzMiwgQkVHSU5fTElCUEFUSCk7Ci0gICAgICAgIGlmIChyYyAhPSBOT19FUlJPUikgewotICAgICAgICAgICAgb3MyX2Vycm9yKHJjKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLQotICAgIH0gZWxzZSBpZiAoc3RyaWNtcChzMSwgIkVORExJQlBBVEgiKSA9PSAwKSB7Ci0gICAgICAgIEFQSVJFVCByYzsKLQotICAgICAgICByYyA9IERvc1NldEV4dExJQlBBVEgoczIsIEVORF9MSUJQQVRIKTsKLSAgICAgICAgaWYgKHJjICE9IE5PX0VSUk9SKSB7Ci0gICAgICAgICAgICBvczJfZXJyb3IocmMpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0jZW5kaWYKLSAgICAvKiBYWFggVGhpcyBjYW4gbGVhayBtZW1vcnkgLS0gbm90IGVhc3kgdG8gZml4IDotKCAqLwotICAgIC8qIGxlbiBpbmNsdWRlcyBzcGFjZSBmb3IgYSB0cmFpbGluZyBcMDsgdGhlIHNpemUgYXJnIHRvCi0gICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSBkb2VzIG5vdCBjb3VudCB0aGF0ICovCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIGxlbiA9IHdjc2xlbihzMSkgKyB3Y3NsZW4oczIpICsgMjsKLSAgICBpZiAoX01BWF9FTlYgPCAobGVuIC0gMSkpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAidGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIGxvbmdlciB0aGFuICV1IGNoYXJhY3RlcnMiLAotICAgICAgICAgICAgICAgICAgICAgX01BWF9FTlYpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBuZXdzdHIgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgKGludClsZW4gLSAxKTsKLSNlbHNlCi0gICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShvczEpICsgUHlCeXRlc19HRVRfU0laRShvczIpICsgMjsKLSAgICBuZXdzdHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIChpbnQpbGVuIC0gMSk7Ci0jZW5kaWYKKyAgICBuZXdzdHIgPSBQeUJ5dGVzX0Zyb21Gb3JtYXQoIiVzPSVzIiwgczEsIHMyKTsKICAgICBpZiAobmV3c3RyID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIG5ld2VudiA9IFB5VW5pY29kZV9Bc1VuaWNvZGUobmV3c3RyKTsKLSAgICBfc253cHJpbnRmKG5ld2VudiwgbGVuLCBMIiVzPSVzIiwgczEsIHMyKTsKLSAgICBpZiAoX3dwdXRlbnYobmV3ZW52KSkgewotICAgICAgICBwb3NpeF9lcnJvcigpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSNlbHNlCisKICAgICBuZXdlbnYgPSBQeUJ5dGVzX0FTX1NUUklORyhuZXdzdHIpOwotICAgIFB5T1Nfc25wcmludGYobmV3ZW52LCBsZW4sICIlcz0lcyIsIHMxLCBzMik7CiAgICAgaWYgKHB1dGVudihuZXdlbnYpKSB7CiAgICAgICAgIHBvc2l4X2Vycm9yKCk7CiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC02MjI3LDEzICs4NzEyLDcgQEAKICAgICAgKiB0aGlzIHdpbGwgY2F1c2UgcHJldmlvdXMgdmFsdWUgdG8gYmUgY29sbGVjdGVkLiAgVGhpcyBoYXMgdG8KICAgICAgKiBoYXBwZW4gYWZ0ZXIgdGhlIHJlYWwgcHV0ZW52KCkgY2FsbCBiZWNhdXNlIHRoZSBvbGQgdmFsdWUKICAgICAgKiB3YXMgc3RpbGwgYWNjZXNzaWJsZSB1bnRpbCB0aGVuLiAqLwotICAgIGlmIChQeURpY3RfU2V0SXRlbShwb3NpeF9wdXRlbnZfZ2FyYmFnZSwKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCksCi0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgICBvczEsCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgbmV3c3RyKSkgeworICAgIGlmIChQeURpY3RfU2V0SXRlbShwb3NpeF9wdXRlbnZfZ2FyYmFnZSwgb3MxLCBuZXdzdHIpKSB7CiAgICAgICAgIC8qIHJlYWxseSBub3QgbXVjaCB3ZSBjYW4gZG87IGp1c3QgbGVhayAqLwogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIH0KQEAgLTYyNDEsMTAgKzg3MjAsNiBAQAogICAgICAgICBQeV9ERUNSRUYobmV3c3RyKTsKICAgICB9CiAKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotICAgIH0KLSNlbmRpZgotCiAjaWZuZGVmIE1TX1dJTkRPV1MKICAgICBQeV9ERUNSRUYob3MxKTsKICAgICBQeV9ERUNSRUYob3MyKTsKQEAgLTYyNjksMjMgKzg3NDQsMjIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF91bnNldGVudihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKm9zMTsKLSAgICBjaGFyICpzMTsKKyAgICBQeU9iamVjdCAqbmFtZTsKICNpZm5kZWYgSEFWRV9CUk9LRU5fVU5TRVRFTlYKICAgICBpbnQgZXJyOwogI2VuZGlmCiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOnVuc2V0ZW52IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3MxKSkKKworICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgczEgPSBQeUJ5dGVzX0FzU3RyaW5nKG9zMSk7CiAKICNpZmRlZiBIQVZFX0JST0tFTl9VTlNFVEVOVgotICAgIHVuc2V0ZW52KHMxKTsKKyAgICB1bnNldGVudihQeUJ5dGVzX0FTX1NUUklORyhuYW1lKSk7CiAjZWxzZQotICAgIGVyciA9IHVuc2V0ZW52KHMxKTsKKyAgICBlcnIgPSB1bnNldGVudihQeUJ5dGVzX0FTX1NUUklORyhuYW1lKSk7CiAgICAgaWYgKGVycikgewotICAgICAgICBQeV9ERUNSRUYob3MxKTsKKyAgICAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICB9CiAjZW5kaWYKQEAgLTYyOTUsMTIgKzg3NjksMTEgQEAKICAgICAgKiBoYXBwZW4gYWZ0ZXIgdGhlIHJlYWwgdW5zZXRlbnYoKSBjYWxsIGJlY2F1c2UgdGhlCiAgICAgICogb2xkIHZhbHVlIHdhcyBzdGlsbCBhY2Nlc3NpYmxlIHVudGlsIHRoZW4uCiAgICAgICovCi0gICAgaWYgKFB5RGljdF9EZWxJdGVtKHBvc2l4X3B1dGVudl9nYXJiYWdlLCBvczEpKSB7CisgICAgaWYgKFB5RGljdF9EZWxJdGVtKHBvc2l4X3B1dGVudl9nYXJiYWdlLCBuYW1lKSkgewogICAgICAgICAvKiByZWFsbHkgbm90IG11Y2ggd2UgY2FuIGRvOyBqdXN0IGxlYWsgKi8KICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICB9Ci0KLSAgICBQeV9ERUNSRUYob3MxKTsKKyAgICBQeV9ERUNSRUYobmFtZSk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogdW5zZXRlbnYgKi8KQEAgLTYzMjIsNyArODc5NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAic3RyZXJyb3IoKSBhcmd1bWVudCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhtZXNzYWdlKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxvY2FsZShtZXNzYWdlLCAic3Vycm9nYXRlZXNjYXBlIik7CiB9CiAKIApAQCAtNjUyOCw3ICs5MDAxLDggQEAKIAogUHlEb2NfU1RSVkFSKHBvc2l4X2ZzdGF0dmZzX19kb2NfXywKICJmc3RhdHZmcyhmZCkgLT4gc3RhdHZmcyByZXN1bHRcblxuXAotUGVyZm9ybSBhbiBmc3RhdHZmcyBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gZmQuIik7CitQZXJmb3JtIGFuIGZzdGF0dmZzIHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBmZC5cblwKK0VxdWl2YWxlbnQgdG8gc3RhdHZmcyhmZCkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9mc3RhdHZmcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC02NTUzLDMxICs5MDI3LDg3IEBACiAjaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KIAogUHlEb2NfU1RSVkFSKHBvc2l4X3N0YXR2ZnNfX2RvY19fLAotInN0YXR2ZnMocGF0aCkgLT4gc3RhdHZmcyByZXN1bHRcblxuXAotUGVyZm9ybSBhIHN0YXR2ZnMgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguIik7Cisic3RhdHZmcyhwYXRoKVxuXG5cCitQZXJmb3JtIGEgc3RhdHZmcyBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC5cblwKK1xuXAorcGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cblwKK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc3RhdHZmcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9zdGF0dmZzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGgsICpyZXN1bHQgPSBOVUxMOwotICAgIGNoYXIgKnBhdGg7Ci0gICAgaW50IHJlczsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoOworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgc3RydWN0IHN0YXR2ZnMgc3Q7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpzdGF0dmZzIiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19BU19TVFJJTkcob3BhdGgpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBzdGF0dmZzKHBhdGgsICZzdCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzICE9IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2FsbG9jYXRlZF9maWxlbmFtZShvcGF0aCk7CiAKLSAgICByZXN1bHQgPSBfcHlzdGF0dmZzX2Zyb21zdHJ1Y3RzdGF0dmZzKHN0KTsKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworI2lmZGVmIEhBVkVfRlNUQVRWRlMKKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKKyNlbmRpZgorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOnN0YXR2ZnMiLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoCisgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfRlNUQVRWRlMKKyAgICBpZiAocGF0aC5mZCAhPSAtMSkgeworI2lmZGVmIF9fQVBQTEVfXworICAgICAgICAvKiBoYW5kbGUgd2Vhay1saW5raW5nIG9uIE1hYyBPUyBYIDEwLjMgKi8KKyAgICAgICAgaWYgKGZzdGF0dmZzID09IE5VTEwpIHsKKyAgICAgICAgICAgIGZkX3NwZWNpZmllZCgic3RhdHZmcyIsIHBhdGguZmQpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gZnN0YXR2ZnMocGF0aC5mZCwgJnN0KTsKKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IHN0YXR2ZnMocGF0aC5uYXJyb3csICZzdCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9wb3NpeF9lcnJvcigic3RhdHZmcyIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IF9weXN0YXR2ZnNfZnJvbXN0cnVjdHN0YXR2ZnMoc3QpOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KICNlbmRpZiAvKiBIQVZFX1NUQVRWRlMgKi8KIAorI2lmZGVmIE1TX1dJTkRPV1MKK1B5RG9jX1NUUlZBUih3aW4zMl9fZ2V0ZGlza3VzYWdlX19kb2NfXywKKyJfZ2V0ZGlza3VzYWdlKHBhdGgpIC0+ICh0b3RhbCwgZnJlZSlcblxuXAorUmV0dXJuIGRpc2sgdXNhZ2Ugc3RhdGlzdGljcyBhYm91dCB0aGUgZ2l2ZW4gcGF0aCBhcyAodG90YWwsIGZyZWUpIHR1cGxlLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luMzJfX2dldGRpc2t1c2FnZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgQk9PTCByZXR2YWw7CisgICAgVUxBUkdFX0lOVEVHRVIgXywgdG90YWwsIGZyZWU7CisgICAgY29uc3Qgd2NoYXJfdCAqcGF0aDsKKworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgInUiLCAmcGF0aCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJldHZhbCA9IEdldERpc2tGcmVlU3BhY2VFeFcocGF0aCwgJl8sICZ0b3RhbCwgJmZyZWUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHJldHZhbCA9PSAwKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKExMKSIsIHRvdGFsLlF1YWRQYXJ0LCBmcmVlLlF1YWRQYXJ0KTsKK30KKyNlbmRpZgorCisKIC8qIFRoaXMgaXMgdXNlZCBmb3IgZnBhdGhjb25mKCksIHBhdGhjb25mKCksIGNvbmZzdHIoKSBhbmQgc3lzY29uZigpLgogICogSXQgbWFwcyBzdHJpbmdzIHJlcHJlc2VudGluZyBjb25maWd1cmF0aW9uIHZhcmlhYmxlIG5hbWVzIHRvCiAgKiBpbnRlZ2VyIHZhbHVlcywgYWxsb3dpbmcgdGhvc2UgZnVuY3Rpb25zIHRvIGJlIGNhbGxlZCB3aXRoIHRoZQpAQCAtNjc2NCwzMSArOTI5NCw0NSBAQAogUHlEb2NfU1RSVkFSKHBvc2l4X3BhdGhjb25mX19kb2NfXywKICJwYXRoY29uZihwYXRoLCBuYW1lKSAtPiBpbnRlZ2VyXG5cblwKIFJldHVybiB0aGUgY29uZmlndXJhdGlvbiBsaW1pdCBuYW1lIGZvciB0aGUgZmlsZSBvciBkaXJlY3RvcnkgcGF0aC5cblwKLUlmIHRoZXJlIGlzIG5vIGxpbWl0LCByZXR1cm4gLTEuIik7CitJZiB0aGVyZSBpcyBubyBsaW1pdCwgcmV0dXJuIC0xLlxuXAorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9wYXRoY29uZihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9wYXRoY29uZihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CisgICAgcGF0aF90IHBhdGg7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgaW50IG5hbWU7Ci0gICAgY2hhciAqcGF0aDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lIiwgTlVMTH07CiAKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic08mOnBhdGhjb25mIiwgJnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpIHsKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisjaWZkZWYgSEFWRV9GUEFUSENPTkYKKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKKyNlbmRpZgorICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJjpwYXRoY29uZiIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpIHsKICAgICBsb25nIGxpbWl0OwogCiAgICAgZXJybm8gPSAwOwotICAgIGxpbWl0ID0gcGF0aGNvbmYocGF0aCwgbmFtZSk7CisjaWZkZWYgSEFWRV9GUEFUSENPTkYKKyAgICBpZiAocGF0aC5mZCAhPSAtMSkKKyAgICAgICAgbGltaXQgPSBmcGF0aGNvbmYocGF0aC5mZCwgbmFtZSk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIGxpbWl0ID0gcGF0aGNvbmYocGF0aC5uYXJyb3csIG5hbWUpOwogICAgIGlmIChsaW1pdCA9PSAtMSAmJiBlcnJubyAhPSAwKSB7CiAgICAgICAgIGlmIChlcnJubyA9PSBFSU5WQUwpCiAgICAgICAgICAgICAvKiBjb3VsZCBiZSBhIHBhdGggb3IgbmFtZSBwcm9ibGVtICovCiAgICAgICAgICAgICBwb3NpeF9lcnJvcigpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwb3NpeF9lcnJvcl93aXRoX2ZpbGVuYW1lKHBhdGgpOworICAgICAgICAgICAgcmVzdWx0ID0gcGF0aF9wb3NpeF9lcnJvcigicGF0aGNvbmYiLCAmcGF0aCk7CiAgICAgfQogICAgIGVsc2UKICAgICAgICAgcmVzdWx0ID0gUHlMb25nX0Zyb21Mb25nKGxpbWl0KTsKICAgICB9CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogI2VuZGlmCkBAIC03NjQwLDkgKzEwMTg0LDEwIEBACiAgICAgUHlPYmplY3QgKm9maWxlcGF0aDsKICAgICBjaGFyICpmaWxlcGF0aDsKICAgICBjaGFyICpvcGVyYXRpb24gPSBOVUxMOworICAgIHdjaGFyX3QgKndwYXRoLCAqd29wZXJhdGlvbjsKICAgICBISU5TVEFOQ0UgcmM7CiAKLSAgICBQeU9iamVjdCAqdW5pcGF0aCwgKndvcGVyYXRpb24gPSBOVUxMOworICAgIFB5T2JqZWN0ICp1bmlwYXRoLCAqdW9wZXJhdGlvbiA9IE5VTEw7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHM6c3RhcnRmaWxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVuaXBhdGgsICZvcGVyYXRpb24pKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC03NjUwLDI2ICsxMDE5NSwzNSBAQAogICAgIH0KIAogICAgIGlmIChvcGVyYXRpb24pIHsKLSAgICAgICAgd29wZXJhdGlvbiA9IFB5VW5pY29kZV9EZWNvZGVBU0NJSShvcGVyYXRpb24sCisgICAgICAgIHVvcGVyYXRpb24gPSBQeVVuaWNvZGVfRGVjb2RlQVNDSUkob3BlcmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihvcGVyYXRpb24pLCBOVUxMKTsKLSAgICAgICAgaWYgKCF3b3BlcmF0aW9uKSB7CisgICAgICAgIGlmICghdW9wZXJhdGlvbikgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIG9wZXJhdGlvbiA9IE5VTEw7CiAgICAgICAgICAgICBnb3RvIG5vcm1hbDsKICAgICAgICAgfQogICAgIH0KIAorICAgIHdwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZSh1bmlwYXRoKTsKKyAgICBpZiAod3BhdGggPT0gTlVMTCkKKyAgICAgICAgZ290byBub3JtYWw7CisgICAgaWYgKHVvcGVyYXRpb24pIHsKKyAgICAgICAgd29wZXJhdGlvbiA9IFB5VW5pY29kZV9Bc1VuaWNvZGUodW9wZXJhdGlvbik7CisgICAgICAgIGlmICh3b3BlcmF0aW9uID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIG5vcm1hbDsKKyAgICB9CisgICAgZWxzZQorICAgICAgICB3b3BlcmF0aW9uID0gTlVMTDsKKwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByYyA9IFNoZWxsRXhlY3V0ZVcoKEhXTkQpMCwgd29wZXJhdGlvbiA/IFB5VW5pY29kZV9BU19VTklDT0RFKHdvcGVyYXRpb24pIDogMCwKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodW5pcGF0aCksCi0gICAgICAgIE5VTEwsIE5VTEwsIFNXX1NIT1dOT1JNQUwpOworICAgIHJjID0gU2hlbGxFeGVjdXRlVygoSFdORCkwLCB3b3BlcmF0aW9uLCB3cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgU1dfU0hPV05PUk1BTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIFB5X1hERUNSRUYod29wZXJhdGlvbik7CisgICAgUHlfWERFQ1JFRih1b3BlcmF0aW9uKTsKICAgICBpZiAocmMgPD0gKEhJTlNUQU5DRSkzMikgewotICAgICAgICBQeU9iamVjdCAqZXJydmFsID0gd2luMzJfZXJyb3JfdW5pY29kZSgic3RhcnRmaWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodW5pcGF0aCkpOwotICAgICAgICByZXR1cm4gZXJydmFsOworICAgICAgICB3aW4zMl9lcnJvcl9vYmplY3QoInN0YXJ0ZmlsZSIsIHVuaXBhdGgpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwpAQCAtNzY3OSw2ICsxMDIzMywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvZmlsZXBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcGVyYXRpb24pKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAod2luMzJfd2Fybl9ieXRlc19hcGkoKSkgeworICAgICAgICBQeV9ERUNSRUYob2ZpbGVwYXRoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGZpbGVwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvZmlsZXBhdGgpOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByYyA9IFNoZWxsRXhlY3V0ZSgoSFdORCkwLCBvcGVyYXRpb24sIGZpbGVwYXRoLApAQCAtNzcyMyw2MiArMTAyODEsMTEgQEAKIGRldmljZV9lbmNvZGluZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaW50IGZkOworCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmRldmljZV9lbmNvZGluZyIsICZmZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSB8fCAhaXNhdHR5KGZkKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgIH0KLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoTVNfV0lONjQpCi0gICAgaWYgKGZkID09IDApIHsKLSAgICAgICAgY2hhciBidWZbMTAwXTsKLSAgICAgICAgc3ByaW50ZihidWYsICJjcCVkIiwgR2V0Q29uc29sZUNQKCkpOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoYnVmKTsKLSAgICB9Ci0gICAgaWYgKGZkID09IDEgfHwgZmQgPT0gMikgewotICAgICAgICBjaGFyIGJ1ZlsxMDBdOwotICAgICAgICBzcHJpbnRmKGJ1ZiwgImNwJWQiLCBHZXRDb25zb2xlT3V0cHV0Q1AoKSk7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhidWYpOwotICAgIH0KLSNlbGlmIGRlZmluZWQoQ09ERVNFVCkKLSAgICB7Ci0gICAgICAgIGNoYXIgKmNvZGVzZXQgPSBubF9sYW5naW5mbyhDT0RFU0VUKTsKLSAgICAgICAgaWYgKGNvZGVzZXQgIT0gTlVMTCAmJiBjb2Rlc2V0WzBdICE9IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoY29kZXNldCk7Ci0gICAgfQotI2VuZGlmCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotfQogCi1QeURvY19TVFJWQVIocG9zaXhfdXJhbmRvbV9fZG9jX18sCi0idXJhbmRvbShuKSAtPiBzdHJcblxuXAotUmV0dXJuIG4gcmFuZG9tIGJ5dGVzIHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHVzZS4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3VyYW5kb20oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5X3NzaXplX3Qgc2l6ZTsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIGludCByZXQ7Ci0KLSAgICAgLyogUmVhZCBhcmd1bWVudHMgKi8KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm46dXJhbmRvbSIsICZzaXplKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNpemUgPCAwKQotICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZ2F0aXZlIGFyZ3VtZW50IG5vdCBhbGxvd2VkIik7Ci0gICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0ID0gX1B5T1NfVVJhbmRvbShQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShyZXN1bHQpKTsKLSAgICBpZiAocmV0ID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gX1B5X2RldmljZV9lbmNvZGluZyhmZCk7CiB9CiAKICNpZmRlZiBIQVZFX1NFVFJFU1VJRApAQCAtNzc4OSw2ICsxMDI5Niw3IEBACiBzdGF0aWMgUHlPYmplY3QqCiBwb3NpeF9zZXRyZXN1aWQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICAvKiBXZSBhc3N1bWUgdWlkX3QgaXMgbm8gbGFyZ2VyIHRoYW4gYSBsb25nLiAqLwogICAgIHVpZF90IHJ1aWQsIGV1aWQsIHN1aWQ7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mTyY6c2V0cmVzdWlkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZydWlkLApAQCAtNzg1NSwyMSArMTAzNjMsNDY4IEBACiB9CiAjZW5kaWYKIAorI2lmZGVmIFVTRV9YQVRUUlMKKworUHlEb2NfU1RSVkFSKHBvc2l4X2dldHhhdHRyX19kb2NfXywKKyJnZXR4YXR0cihwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKSAtPiB2YWx1ZVxuXG5cCitSZXR1cm4gdGhlIHZhbHVlIG9mIGV4dGVuZGVkIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgb24gcGF0aC5cblwKK1xuXAorcGF0aCBtYXkgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCisgIGxpbmssIGdldHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuXAorICB0aGUgbGluayBwb2ludHMgdG8uIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9nZXR4YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgcGF0aF90IHBhdGg7CisgICAgcGF0aF90IGF0dHJpYnV0ZTsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBQeU9iamVjdCAqYnVmZmVyID0gTlVMTDsKKyAgICBpbnQgaTsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgbWVtc2V0KCZhdHRyaWJ1dGUsIDAsIHNpemVvZihhdHRyaWJ1dGUpKTsKKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRwOmdldHhhdHRyIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsCisgICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoImdldHhhdHRyIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworCisgICAgZm9yIChpID0gMDsgOyBpKyspIHsKKyAgICAgICAgdm9pZCAqcHRyOworICAgICAgICBzc2l6ZV90IHJlc3VsdDsKKyAgICAgICAgc3RhdGljIFB5X3NzaXplX3QgYnVmZmVyX3NpemVzW10gPSB7MTI4LCBYQVRUUl9TSVpFX01BWCwgMH07CisgICAgICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZXNbaV07CisgICAgICAgIGlmICghYnVmZmVyX3NpemUpIHsKKyAgICAgICAgICAgIHBhdGhfZXJyb3IoImdldHhhdHRyIiwgJnBhdGgpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIGJ1ZmZlciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnVmZmVyX3NpemUpOworICAgICAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcHRyID0gUHlCeXRlc19BU19TVFJJTkcoYnVmZmVyKTsKKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOworICAgICAgICBpZiAocGF0aC5mZCA+PSAwKQorICAgICAgICAgICAgcmVzdWx0ID0gZmdldHhhdHRyKHBhdGguZmQsIGF0dHJpYnV0ZS5uYXJyb3csIHB0ciwgYnVmZmVyX3NpemUpOworICAgICAgICBlbHNlIGlmIChmb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICByZXN1bHQgPSBnZXR4YXR0cihwYXRoLm5hcnJvdywgYXR0cmlidXRlLm5hcnJvdywgcHRyLCBidWZmZXJfc2l6ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IGxnZXR4YXR0cihwYXRoLm5hcnJvdywgYXR0cmlidXRlLm5hcnJvdywgcHRyLCBidWZmZXJfc2l6ZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTOworCisgICAgICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKKyAgICAgICAgICAgIGJ1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICBpZiAoZXJybm8gPT0gRVJBTkdFKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcGF0aF9lcnJvcigiZ2V0eGF0dHIiLCAmcGF0aCk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVzdWx0ICE9IGJ1ZmZlcl9zaXplKSB7CisgICAgICAgICAgICAvKiBDYW4gb25seSBzaHJpbmsuICovCisgICAgICAgICAgICBfUHlCeXRlc19SZXNpemUoJmJ1ZmZlciwgcmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICBwYXRoX2NsZWFudXAoJmF0dHJpYnV0ZSk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X3NldHhhdHRyX19kb2NfXywKKyJzZXR4YXR0cihwYXRoLCBhdHRyaWJ1dGUsIHZhbHVlLCBmbGFncz0wLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAorU2V0IGV4dGVuZGVkIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgb24gcGF0aCB0byB2YWx1ZS5cblwKK3BhdGggbWF5IGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCBzZXR4YXR0ciB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuXAorICB0aGUgbGluayBwb2ludHMgdG8uIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zZXR4YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgcGF0aF90IHBhdGg7CisgICAgcGF0aF90IGF0dHJpYnV0ZTsKKyAgICBQeV9idWZmZXIgdmFsdWU7CisgICAgaW50IGZsYWdzID0gMDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJ2YWx1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsYWdzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIHBhdGguYWxsb3dfZmQgPSAxOworICAgIG1lbXNldCgmYXR0cmlidXRlLCAwLCBzaXplb2YoYXR0cmlidXRlKSk7CisgICAgbWVtc2V0KCZ2YWx1ZSwgMCwgc2l6ZW9mKHZhbHVlKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnkqfGkkcDpzZXR4YXR0ciIsCisgICAgICAgIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLAorICAgICAgICAmdmFsdWUsICZmbGFncywKKyAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgic2V0eGF0dHIiLCBwYXRoLmZkLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOworICAgIGlmIChwYXRoLmZkID4gLTEpCisgICAgICAgIHJlc3VsdCA9IGZzZXR4YXR0cihwYXRoLmZkLCBhdHRyaWJ1dGUubmFycm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuYnVmLCB2YWx1ZS5sZW4sIGZsYWdzKTsKKyAgICBlbHNlIGlmIChmb2xsb3dfc3ltbGlua3MpCisgICAgICAgIHJlc3VsdCA9IHNldHhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuYnVmLCB2YWx1ZS5sZW4sIGZsYWdzKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IGxzZXR4YXR0cihwYXRoLm5hcnJvdywgYXR0cmlidXRlLm5hcnJvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmJ1ZiwgdmFsdWUubGVuLCBmbGFncyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFM7CisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoInNldHhhdHRyIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYocmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHBhdGhfY2xlYW51cCgmYXR0cmlidXRlKTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2YWx1ZSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIocG9zaXhfcmVtb3ZleGF0dHJfX2RvY19fLAorInJlbW92ZXhhdHRyKHBhdGgsIGF0dHJpYnV0ZSwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKK1JlbW92ZSBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGguXG5cCitwYXRoIG1heSBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgcmVtb3ZleGF0dHIgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcblwKKyAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfcmVtb3ZleGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHBhdGhfdCBwYXRoOworICAgIHBhdGhfdCBhdHRyaWJ1dGU7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgbWVtc2V0KCZhdHRyaWJ1dGUsIDAsIHNpemVvZihhdHRyaWJ1dGUpKTsKKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRwOnJlbW92ZXhhdHRyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgicmVtb3ZleGF0dHIiLCBwYXRoLmZkLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOworICAgIGlmIChwYXRoLmZkID4gLTEpCisgICAgICAgIHJlc3VsdCA9IGZyZW1vdmV4YXR0cihwYXRoLmZkLCBhdHRyaWJ1dGUubmFycm93KTsKKyAgICBlbHNlIGlmIChmb2xsb3dfc3ltbGlua3MpCisgICAgICAgIHJlc3VsdCA9IHJlbW92ZXhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93KTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IGxyZW1vdmV4YXR0cihwYXRoLm5hcnJvdywgYXR0cmlidXRlLm5hcnJvdyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFM7CisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoInJlbW92ZXhhdHRyIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYocmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHBhdGhfY2xlYW51cCgmYXR0cmlidXRlKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihwb3NpeF9saXN0eGF0dHJfX2RvY19fLAorImxpc3R4YXR0cihwYXRoPScuJywgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKK1JldHVybiBhIGxpc3Qgb2YgZXh0ZW5kZWQgYXR0cmlidXRlcyBvbiBwYXRoLlxuXAorXG5cCitwYXRoIG1heSBiZSBlaXRoZXIgTm9uZSwgYSBzdHJpbmcsIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAoraWYgcGF0aCBpcyBOb25lLCBsaXN0eGF0dHIgd2lsbCBleGFtaW5lIHRoZSBjdXJyZW50IGRpcmVjdG9yeS5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCBsaXN0eGF0dHIgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG5cCisgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X2xpc3R4YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgUHlfc3NpemVfdCBpOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIGNoYXIgKmJ1ZmZlciA9IE5VTEw7CisgICAgY2hhciAqbmFtZTsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKKyAgICBwYXRoLmZkID0gLTE7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE8mJHA6bGlzdHhhdHRyIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgibGlzdHhhdHRyIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworCisgICAgbmFtZSA9IHBhdGgubmFycm93ID8gcGF0aC5uYXJyb3cgOiAiLiI7CisgICAgZm9yIChpID0gMDsgOyBpKyspIHsKKyAgICAgICAgY2hhciAqc3RhcnQsICp0cmFjZSwgKmVuZDsKKyAgICAgICAgc3NpemVfdCBsZW5ndGg7CisgICAgICAgIHN0YXRpYyBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplc1tdID0geyAyNTYsIFhBVFRSX0xJU1RfTUFYLCAwIH07CisgICAgICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZXNbaV07CisgICAgICAgIGlmICghYnVmZmVyX3NpemUpIHsKKyAgICAgICAgICAgIC8qIEVSQU5HRSAqLworICAgICAgICAgICAgcGF0aF9lcnJvcigibGlzdHhhdHRyIiwgJnBhdGgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnVmZmVyID0gUHlNZW1fTUFMTE9DKGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgaWYgKCFidWZmZXIpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7CisgICAgICAgIGlmIChwYXRoLmZkID4gLTEpCisgICAgICAgICAgICBsZW5ndGggPSBmbGlzdHhhdHRyKHBhdGguZmQsIGJ1ZmZlciwgYnVmZmVyX3NpemUpOworICAgICAgICBlbHNlIGlmIChmb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICBsZW5ndGggPSBsaXN0eGF0dHIobmFtZSwgYnVmZmVyLCBidWZmZXJfc2l6ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxlbmd0aCA9IGxsaXN0eGF0dHIobmFtZSwgYnVmZmVyLCBidWZmZXJfc2l6ZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTOworCisgICAgICAgIGlmIChsZW5ndGggPCAwKSB7CisgICAgICAgICAgICBpZiAoZXJybm8gPT0gRVJBTkdFKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcGF0aF9lcnJvcigibGlzdHhhdHRyIiwgJnBhdGgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgPSBQeUxpc3RfTmV3KDApOworICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisKKyAgICAgICAgZW5kID0gYnVmZmVyICsgbGVuZ3RoOworICAgICAgICBmb3IgKHRyYWNlID0gc3RhcnQgPSBidWZmZXI7IHRyYWNlICE9IGVuZDsgdHJhY2UrKykgeworICAgICAgICAgICAgaWYgKCEqdHJhY2UpIHsKKyAgICAgICAgICAgICAgICBpbnQgZXJyb3I7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmF0dHJpYnV0ZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZSAtIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICBpZiAoIWF0dHJpYnV0ZSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlcnJvciA9IFB5TGlzdF9BcHBlbmQocmVzdWx0LCBhdHRyaWJ1dGUpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyaWJ1dGUpOworICAgICAgICAgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGFydCA9IHRyYWNlICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIGJyZWFrOworICAgIH0KK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICBpZiAoYnVmZmVyKQorICAgICAgICBQeU1lbV9GUkVFKGJ1ZmZlcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2VuZGlmIC8qIFVTRV9YQVRUUlMgKi8KKworCitQeURvY19TVFJWQVIocG9zaXhfdXJhbmRvbV9fZG9jX18sCisidXJhbmRvbShuKSAtPiBzdHJcblxuXAorUmV0dXJuIG4gcmFuZG9tIGJ5dGVzIHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHVzZS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3VyYW5kb20oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIGludCByZXQ7CisKKyAgICAgLyogUmVhZCBhcmd1bWVudHMgKi8KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm46dXJhbmRvbSIsICZzaXplKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNpemUgPCAwKQorICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZ2F0aXZlIGFyZ3VtZW50IG5vdCBhbGxvd2VkIik7CisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0ID0gX1B5T1NfVVJhbmRvbShQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShyZXN1bHQpKTsKKyAgICBpZiAocmV0ID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogVGVybWluYWwgc2l6ZSBxdWVyeWluZyAqLworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFRlcm1pbmFsU2l6ZVR5cGU7CisKK1B5RG9jX1NUUlZBUihUZXJtaW5hbFNpemVfZG9jc3RyaW5nLAorICAgICJBIHR1cGxlIG9mIChjb2x1bW5zLCBsaW5lcykgZm9yIGhvbGRpbmcgdGVybWluYWwgd2luZG93IHNpemUiKTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgVGVybWluYWxTaXplX2ZpZWxkc1tdID0geworICAgIHsiY29sdW1ucyIsICJ3aWR0aCBvZiB0aGUgdGVybWluYWwgd2luZG93IGluIGNoYXJhY3RlcnMifSwKKyAgICB7ImxpbmVzIiwgImhlaWdodCBvZiB0aGUgdGVybWluYWwgd2luZG93IGluIGNoYXJhY3RlcnMifSwKKyAgICB7TlVMTCwgTlVMTH0KK307CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0Rlc2MgVGVybWluYWxTaXplX2Rlc2MgPSB7CisgICAgIm9zLnRlcm1pbmFsX3NpemUiLAorICAgIFRlcm1pbmFsU2l6ZV9kb2NzdHJpbmcsCisgICAgVGVybWluYWxTaXplX2ZpZWxkcywKKyAgICAyLAorfTsKKworI2lmIGRlZmluZWQoVEVSTVNJWkVfVVNFX0NPTklPKSB8fCBkZWZpbmVkKFRFUk1TSVpFX1VTRV9JT0NUTCkKK1B5RG9jX1NUUlZBUih0ZXJtc2l6ZV9fZG9jX18sCisgICAgIlJldHVybiB0aGUgc2l6ZSBvZiB0aGUgdGVybWluYWwgd2luZG93IGFzIChjb2x1bW5zLCBsaW5lcykuXG4iICAgICAgICBcCisgICAgIlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIlRoZSBvcHRpb25hbCBhcmd1bWVudCBmZCAoZGVmYXVsdCBzdGFuZGFyZCBvdXRwdXQpIHNwZWNpZmllc1xuIiAgICAgICBcCisgICAgIndoaWNoIGZpbGUgZGVzY3JpcHRvciBzaG91bGQgYmUgcXVlcmllZC5cbiIgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIklmIHRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgbm90IGNvbm5lY3RlZCB0byBhIHRlcm1pbmFsLCBhbiBPU0Vycm9yXG4iICBcCisgICAgImlzIHRocm93bi5cbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIlRoaXMgZnVuY3Rpb24gd2lsbCBvbmx5IGJlIGRlZmluZWQgaWYgYW4gaW1wbGVtZW50YXRpb24gaXNcbiIgICAgICAgICBcCisgICAgImF2YWlsYWJsZSBmb3IgdGhpcyBzeXN0ZW0uXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgInNodXRpbC5nZXRfdGVybWluYWxfc2l6ZSBpcyB0aGUgaGlnaC1sZXZlbCBmdW5jdGlvbiB3aGljaCBzaG91bGQgXG4iICBcCisgICAgIm5vcm1hbGx5IGJlIHVzZWQsIG9zLmdldF90ZXJtaW5hbF9zaXplIGlzIHRoZSBsb3ctbGV2ZWwgaW1wbGVtZW50YXRpb24uIik7CisKK3N0YXRpYyBQeU9iamVjdCoKK2dldF90ZXJtaW5hbF9zaXplKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgY29sdW1ucywgbGluZXM7CisgICAgUHlPYmplY3QgKnRlcm1zaXplOworCisgICAgaW50IGZkID0gZmlsZW5vKHN0ZG91dCk7CisgICAgLyogVW5kZXIgc29tZSBjb25kaXRpb25zIHN0ZG91dCBtYXkgbm90IGJlIGNvbm5lY3RlZCBhbmQKKyAgICAgKiBmaWxlbm8oc3Rkb3V0KSBtYXkgcG9pbnQgdG8gYW4gaW52YWxpZCBmaWxlIGRlc2NyaXB0b3IuIEZvciBleGFtcGxlCisgICAgICogR1VJIGFwcHMgZG9uJ3QgaGF2ZSB2YWxpZCBzdGFuZGFyZCBzdHJlYW1zIGJ5IGRlZmF1bHQuCisgICAgICoKKyAgICAgKiBJZiB0aGlzIGhhcHBlbnMsIGFuZCB0aGUgb3B0aW9uYWwgZmQgYXJndW1lbnQgaXMgbm90IHByZXNlbnQsCisgICAgICogdGhlIGlvY3RsIGJlbG93IHdpbGwgZmFpbCByZXR1cm5pbmcgRUJBREYuIFRoaXMgaXMgd2hhdCB3ZSB3YW50LgorICAgICAqLworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aSIsICZmZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisjaWZkZWYgVEVSTVNJWkVfVVNFX0lPQ1RMCisgICAgeworICAgICAgICBzdHJ1Y3Qgd2luc2l6ZSB3OworICAgICAgICBpZiAoaW9jdGwoZmQsIFRJT0NHV0lOU1osICZ3KSkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIGNvbHVtbnMgPSB3LndzX2NvbDsKKyAgICAgICAgbGluZXMgPSB3LndzX3JvdzsKKyAgICB9CisjZW5kaWYgLyogVEVSTVNJWkVfVVNFX0lPQ1RMICovCisKKyNpZmRlZiBURVJNU0laRV9VU0VfQ09OSU8KKyAgICB7CisgICAgICAgIERXT1JEIG5oYW5kbGU7CisgICAgICAgIEhBTkRMRSBoYW5kbGU7CisgICAgICAgIENPTlNPTEVfU0NSRUVOX0JVRkZFUl9JTkZPIGNzYmk7CisgICAgICAgIHN3aXRjaCAoZmQpIHsKKyAgICAgICAgY2FzZSAwOiBuaGFuZGxlID0gU1REX0lOUFVUX0hBTkRMRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE6IG5oYW5kbGUgPSBTVERfT1VUUFVUX0hBTkRMRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6IG5oYW5kbGUgPSBTVERfRVJST1JfSEFORExFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJiYWQgZmlsZSBkZXNjcmlwdG9yIik7CisgICAgICAgIH0KKyAgICAgICAgaGFuZGxlID0gR2V0U3RkSGFuZGxlKG5oYW5kbGUpOworICAgICAgICBpZiAoaGFuZGxlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KFB5RXhjX09TRXJyb3IsICJoYW5kbGUgY2Fubm90IGJlIHJldHJpZXZlZCIpOworICAgICAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgICAgIGlmICghR2V0Q29uc29sZVNjcmVlbkJ1ZmZlckluZm8oaGFuZGxlLCAmY3NiaSkpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICAgICAgY29sdW1ucyA9IGNzYmkuc3JXaW5kb3cuUmlnaHQgLSBjc2JpLnNyV2luZG93LkxlZnQgKyAxOworICAgICAgICBsaW5lcyA9IGNzYmkuc3JXaW5kb3cuQm90dG9tIC0gY3NiaS5zcldpbmRvdy5Ub3AgKyAxOworICAgIH0KKyNlbmRpZiAvKiBURVJNU0laRV9VU0VfQ09OSU8gKi8KKworICAgIHRlcm1zaXplID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcoJlRlcm1pbmFsU2l6ZVR5cGUpOworICAgIGlmICh0ZXJtc2l6ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHRlcm1zaXplLCAwLCBQeUxvbmdfRnJvbUxvbmcoY29sdW1ucykpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odGVybXNpemUsIDEsIFB5TG9uZ19Gcm9tTG9uZyhsaW5lcykpOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X0RFQ1JFRih0ZXJtc2l6ZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gdGVybXNpemU7Cit9CisjZW5kaWYgLyogZGVmaW5lZChURVJNU0laRV9VU0VfQ09OSU8pIHx8IGRlZmluZWQoVEVSTVNJWkVfVVNFX0lPQ1RMKSAqLworCisKIHN0YXRpYyBQeU1ldGhvZERlZiBwb3NpeF9tZXRob2RzW10gPSB7Ci0gICAgeyJhY2Nlc3MiLCAgICAgICAgICBwb3NpeF9hY2Nlc3MsIE1FVEhfVkFSQVJHUywgcG9zaXhfYWNjZXNzX19kb2NfX30sCisgICAgeyJhY2Nlc3MiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfYWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2FjY2Vzc19fZG9jX199LAogI2lmZGVmIEhBVkVfVFRZTkFNRQogICAgIHsidHR5bmFtZSIsICAgICAgICAgcG9zaXhfdHR5bmFtZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF90dHluYW1lX19kb2NfX30sCiAjZW5kaWYKLSAgICB7ImNoZGlyIiwgICAgICAgICAgIHBvc2l4X2NoZGlyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2NoZGlyX19kb2NfX30sCisgICAgeyJjaGRpciIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfY2hkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfY2hkaXJfX2RvY19ffSwKICNpZmRlZiBIQVZFX0NIRkxBR1MKLSAgICB7ImNoZmxhZ3MiLCAgICAgICAgIHBvc2l4X2NoZmxhZ3MsIE1FVEhfVkFSQVJHUywgcG9zaXhfY2hmbGFnc19fZG9jX199LAorICAgIHsiY2hmbGFncyIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2NoZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfY2hmbGFnc19fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfQ0hGTEFHUyAqLwotICAgIHsiY2htb2QiLCAgICAgICAgICAgcG9zaXhfY2htb2QsIE1FVEhfVkFSQVJHUywgcG9zaXhfY2htb2RfX2RvY19ffSwKKyAgICB7ImNobW9kIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9jaG1vZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9jaG1vZF9fZG9jX199LAogI2lmZGVmIEhBVkVfRkNITU9ECiAgICAgeyJmY2htb2QiLCAgICAgICAgICBwb3NpeF9mY2htb2QsIE1FVEhfVkFSQVJHUywgcG9zaXhfZmNobW9kX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9GQ0hNT0QgKi8KICNpZmRlZiBIQVZFX0NIT1dOCi0gICAgeyJjaG93biIsICAgICAgICAgICBwb3NpeF9jaG93biwgTUVUSF9WQVJBUkdTLCBwb3NpeF9jaG93bl9fZG9jX199LAorICAgIHsiY2hvd24iLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2Nob3duLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2Nob3duX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9DSE9XTiAqLwogI2lmZGVmIEhBVkVfTENITU9ECiAgICAgeyJsY2htb2QiLCAgICAgICAgICBwb3NpeF9sY2htb2QsIE1FVEhfVkFSQVJHUywgcG9zaXhfbGNobW9kX19kb2NfX30sCkBAIC03ODk1LDMyICsxMDg1MCw1NyBAQAogICAgIHsiZ2V0Y3dkYiIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2dldGN3ZF9ieXRlcywKICAgICBNRVRIX05PQVJHUywgcG9zaXhfZ2V0Y3dkYl9fZG9jX199LAogI2VuZGlmCi0jaWZkZWYgSEFWRV9MSU5LCi0gICAgeyJsaW5rIiwgICAgICAgICAgICBwb3NpeF9saW5rLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xpbmtfX2RvY19ffSwKKyNpZiBkZWZpbmVkKEhBVkVfTElOSykgfHwgZGVmaW5lZChNU19XSU5ET1dTKQorICAgIHsibGluayIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2xpbmssCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbGlua19fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfTElOSyAqLwotICAgIHsibGlzdGRpciIsICAgICAgICAgcG9zaXhfbGlzdGRpciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9saXN0ZGlyX19kb2NfX30sCi0gICAgeyJsc3RhdCIsICAgICAgICAgICBwb3NpeF9sc3RhdCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9sc3RhdF9fZG9jX199LAotICAgIHsibWtkaXIiLCAgICAgICAgICAgcG9zaXhfbWtkaXIsIE1FVEhfVkFSQVJHUywgcG9zaXhfbWtkaXJfX2RvY19ffSwKKyAgICB7Imxpc3RkaXIiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9saXN0ZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2xpc3RkaXJfX2RvY19ffSwKKyAgICB7ImxzdGF0IiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9sc3RhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9sc3RhdF9fZG9jX199LAorICAgIHsibWtkaXIiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X21rZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X21rZGlyX19kb2NfX30sCiAjaWZkZWYgSEFWRV9OSUNFCiAgICAgeyJuaWNlIiwgICAgICAgICAgICBwb3NpeF9uaWNlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X25pY2VfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX05JQ0UgKi8KKyNpZmRlZiBIQVZFX0dFVFBSSU9SSVRZCisgICAgeyJnZXRwcmlvcml0eSIsICAgICBwb3NpeF9nZXRwcmlvcml0eSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9nZXRwcmlvcml0eV9fZG9jX199LAorI2VuZGlmIC8qIEhBVkVfR0VUUFJJT1JJVFkgKi8KKyNpZmRlZiBIQVZFX1NFVFBSSU9SSVRZCisgICAgeyJzZXRwcmlvcml0eSIsICAgICBwb3NpeF9zZXRwcmlvcml0eSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zZXRwcmlvcml0eV9fZG9jX199LAorI2VuZGlmIC8qIEhBVkVfU0VUUFJJT1JJVFkgKi8KICNpZmRlZiBIQVZFX1JFQURMSU5LCi0gICAgeyJyZWFkbGluayIsICAgICAgICBwb3NpeF9yZWFkbGluaywgTUVUSF9WQVJBUkdTLCBwb3NpeF9yZWFkbGlua19fZG9jX199LAorICAgIHsicmVhZGxpbmsiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3JlYWRsaW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRsaW5rX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9SRUFETElOSyAqLwogI2lmICFkZWZpbmVkKEhBVkVfUkVBRExJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykKLSAgICB7InJlYWRsaW5rIiwgICAgICAgIHdpbl9yZWFkbGluaywgTUVUSF9WQVJBUkdTLCB3aW5fcmVhZGxpbmtfX2RvY19ffSwKKyAgICB7InJlYWRsaW5rIiwgICAgICAgIChQeUNGdW5jdGlvbil3aW5fcmVhZGxpbmssCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGxpbmtfX2RvY19ffSwKICNlbmRpZiAvKiAhZGVmaW5lZChIQVZFX1JFQURMSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCi0gICAgeyJyZW5hbWUiLCAgICAgICAgICBwb3NpeF9yZW5hbWUsIE1FVEhfVkFSQVJHUywgcG9zaXhfcmVuYW1lX19kb2NfX30sCi0gICAgeyJybWRpciIsICAgICAgICAgICBwb3NpeF9ybWRpciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9ybWRpcl9fZG9jX199LAotICAgIHsic3RhdCIsICAgICAgICAgICAgcG9zaXhfc3RhdCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zdGF0X19kb2NfX30sCisgICAgeyJyZW5hbWUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfcmVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3JlbmFtZV9fZG9jX199LAorICAgIHsicmVwbGFjZSIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3JlcGxhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfcmVwbGFjZV9fZG9jX199LAorICAgIHsicm1kaXIiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3JtZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3JtZGlyX19kb2NfX30sCisgICAgeyJzdGF0IiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfc3RhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9zdGF0X19kb2NfX30sCiAgICAgeyJzdGF0X2Zsb2F0X3RpbWVzIiwgc3RhdF9mbG9hdF90aW1lcywgTUVUSF9WQVJBUkdTLCBzdGF0X2Zsb2F0X3RpbWVzX19kb2NfX30sCi0jaWYgZGVmaW5lZChIQVZFX1NZTUxJTkspICYmICFkZWZpbmVkKE1TX1dJTkRPV1MpCi0gICAgeyJzeW1saW5rIiwgICAgICAgICBwb3NpeF9zeW1saW5rLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3N5bWxpbmtfX2RvY19ffSwKKyNpZiBkZWZpbmVkKEhBVkVfU1lNTElOSykKKyAgICB7InN5bWxpbmsiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9zeW1saW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3N5bWxpbmtfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX1NZTUxJTksgKi8KLSNpZiBkZWZpbmVkKEhBVkVfU1lNTElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKQotICAgIHsic3ltbGluayIsIChQeUNGdW5jdGlvbil3aW5fc3ltbGluaywgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgd2luX3N5bWxpbmtfX2RvY19ffSwKLSNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lNTElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKSAqLwogI2lmZGVmIEhBVkVfU1lTVEVNCiAgICAgeyJzeXN0ZW0iLCAgICAgICAgICBwb3NpeF9zeXN0ZW0sIE1FVEhfVkFSQVJHUywgcG9zaXhfc3lzdGVtX19kb2NfX30sCiAjZW5kaWYKQEAgLTc5MjgsMTYgKzEwOTA4LDIzIEBACiAjaWZkZWYgSEFWRV9VTkFNRQogICAgIHsidW5hbWUiLCAgICAgICAgICAgcG9zaXhfdW5hbWUsIE1FVEhfTk9BUkdTLCBwb3NpeF91bmFtZV9fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfVU5BTUUgKi8KLSAgICB7InVubGluayIsICAgICAgICAgIHBvc2l4X3VubGluaywgTUVUSF9WQVJBUkdTLCBwb3NpeF91bmxpbmtfX2RvY19ffSwKLSAgICB7InJlbW92ZSIsICAgICAgICAgIHBvc2l4X3VubGluaywgTUVUSF9WQVJBUkdTLCBwb3NpeF9yZW1vdmVfX2RvY19ffSwKLSAgICB7InV0aW1lIiwgICAgICAgICAgIHBvc2l4X3V0aW1lLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3V0aW1lX19kb2NfX30sCisgICAgeyJ1bmxpbmsiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfdW5saW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3VubGlua19fZG9jX199LAorICAgIHsicmVtb3ZlIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3VubGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9yZW1vdmVfX2RvY19ffSwKKyAgICB7InV0aW1lIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF91dGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHBvc2l4X3V0aW1lX19kb2NfX30sCiAjaWZkZWYgSEFWRV9USU1FUwogICAgIHsidGltZXMiLCAgICAgICAgICAgcG9zaXhfdGltZXMsIE1FVEhfTk9BUkdTLCBwb3NpeF90aW1lc19fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfVElNRVMgKi8KICAgICB7Il9leGl0IiwgICAgICAgICAgIHBvc2l4X19leGl0LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X19leGl0X19kb2NfX30sCiAjaWZkZWYgSEFWRV9FWEVDVgogICAgIHsiZXhlY3YiLCAgICAgICAgICAgcG9zaXhfZXhlY3YsIE1FVEhfVkFSQVJHUywgcG9zaXhfZXhlY3ZfX2RvY19ffSwKLSAgICB7ImV4ZWN2ZSIsICAgICAgICAgIHBvc2l4X2V4ZWN2ZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9leGVjdmVfX2RvY19ffSwKKyAgICB7ImV4ZWN2ZSIsICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9leGVjdmUsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfZXhlY3ZlX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9FWEVDViAqLwogI2lmZGVmIEhBVkVfU1BBV05WCiAgICAgeyJzcGF3bnYiLCAgICAgICAgICBwb3NpeF9zcGF3bnYsIE1FVEhfVkFSQVJHUywgcG9zaXhfc3Bhd252X19kb2NfX30sCkBAIC03OTUzLDYgKzEwOTQwLDMyIEBACiAjaWZkZWYgSEFWRV9GT1JLCiAgICAgeyJmb3JrIiwgICAgICAgICAgICBwb3NpeF9mb3JrLCBNRVRIX05PQVJHUywgcG9zaXhfZm9ya19fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfRk9SSyAqLworI2lmZGVmIEhBVkVfU0NIRURfSAorI2lmZGVmIEhBVkVfU0NIRURfR0VUX1BSSU9SSVRZX01BWAorICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsIHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9tYXgsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21heF9fZG9jX199LAorICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsIHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9taW4sIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9fZG9jX199LAorI2VuZGlmCisjaWZkZWYgSEFWRV9TQ0hFRF9TRVRQQVJBTQorICAgIHsic2NoZWRfZ2V0cGFyYW0iLCBwb3NpeF9zY2hlZF9nZXRwYXJhbSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9nZXRwYXJhbV9fZG9jX199LAorI2VuZGlmCisjaWZkZWYgSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIKKyAgICB7InNjaGVkX2dldHNjaGVkdWxlciIsIHBvc2l4X3NjaGVkX2dldHNjaGVkdWxlciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9nZXRzY2hlZHVsZXJfX2RvY19ffSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfU0NIRURfUlJfR0VUX0lOVEVSVkFMCisgICAgeyJzY2hlZF9ycl9nZXRfaW50ZXJ2YWwiLCBwb3NpeF9zY2hlZF9ycl9nZXRfaW50ZXJ2YWwsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfcnJfZ2V0X2ludGVydmFsX19kb2NfX30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVFBBUkFNCisgICAgeyJzY2hlZF9zZXRwYXJhbSIsIHBvc2l4X3NjaGVkX3NldHBhcmFtLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX3NldHBhcmFtX19kb2NfX30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUgorICAgIHsic2NoZWRfc2V0c2NoZWR1bGVyIiwgcG9zaXhfc2NoZWRfc2V0c2NoZWR1bGVyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX3NldHNjaGVkdWxlcl9fZG9jX199LAorI2VuZGlmCisgICAgeyJzY2hlZF95aWVsZCIsICAgICBwb3NpeF9zY2hlZF95aWVsZCwgTUVUSF9OT0FSR1MsIHBvc2l4X3NjaGVkX3lpZWxkX19kb2NfX30sCisjaWZkZWYgSEFWRV9TQ0hFRF9TRVRBRkZJTklUWQorICAgIHsic2NoZWRfc2V0YWZmaW5pdHkiLCBwb3NpeF9zY2hlZF9zZXRhZmZpbml0eSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9zZXRhZmZpbml0eV9fZG9jX199LAorICAgIHsic2NoZWRfZ2V0YWZmaW5pdHkiLCBwb3NpeF9zY2hlZF9nZXRhZmZpbml0eSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9nZXRhZmZpbml0eV9fZG9jX199LAorI2VuZGlmCisjZW5kaWYgLyogSEFWRV9TQ0hFRF9IICovCiAjaWYgZGVmaW5lZChIQVZFX09QRU5QVFkpIHx8IGRlZmluZWQoSEFWRV9fR0VUUFRZKSB8fCBkZWZpbmVkKEhBVkVfREVWX1BUTVgpCiAgICAgeyJvcGVucHR5IiwgICAgICAgICBwb3NpeF9vcGVucHR5LCBNRVRIX05PQVJHUywgcG9zaXhfb3BlbnB0eV9fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfT1BFTlBUWSB8fCBIQVZFX19HRVRQVFkgfHwgSEFWRV9ERVZfUFRNWCAqLwpAQCAtNzk2OCw2ICsxMDk4MSw5IEBACiAjaWZkZWYgSEFWRV9HRVRHSUQKICAgICB7ImdldGdpZCIsICAgICAgICAgIHBvc2l4X2dldGdpZCwgTUVUSF9OT0FSR1MsIHBvc2l4X2dldGdpZF9fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfR0VUR0lEICovCisjaWZkZWYgSEFWRV9HRVRHUk9VUExJU1QKKyAgICB7ImdldGdyb3VwbGlzdCIsICAgIHBvc2l4X2dldGdyb3VwbGlzdCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9nZXRncm91cGxpc3RfX2RvY19ffSwKKyNlbmRpZgogI2lmZGVmIEhBVkVfR0VUR1JPVVBTCiAgICAgeyJnZXRncm91cHMiLCAgICAgICBwb3NpeF9nZXRncm91cHMsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRncm91cHNfX2RvY19ffSwKICNlbmRpZgpAQCAtNzk5Niw3ICsxMTAxMiw2IEBACiAjaWZkZWYgTVNfV0lORE9XUwogICAgIHsic3RhcnRmaWxlIiwgICAgICAgd2luMzJfc3RhcnRmaWxlLCBNRVRIX1ZBUkFSR1MsIHdpbjMyX3N0YXJ0ZmlsZV9fZG9jX199LAogICAgIHsia2lsbCIsICAgIHdpbjMyX2tpbGwsIE1FVEhfVkFSQVJHUywgd2luMzJfa2lsbF9fZG9jX199LAotICAgIHsibGluayIsICAgIHdpbjMyX2xpbmssIE1FVEhfVkFSQVJHUywgd2luMzJfbGlua19fZG9jX199LAogI2VuZGlmCiAjaWZkZWYgSEFWRV9TRVRVSUQKICAgICB7InNldHVpZCIsICAgICAgICAgIHBvc2l4X3NldHVpZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zZXR1aWRfX2RvY19ffSwKQEAgLTgwMzcsNiArMTEwNTIsOSBAQAogI2lmZGVmIEhBVkVfV0FJVDQKICAgICB7IndhaXQ0IiwgICAgICAgICAgIHBvc2l4X3dhaXQ0LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dhaXQ0X19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9XQUlUNCAqLworI2lmIGRlZmluZWQoSEFWRV9XQUlUSUQpICYmICFkZWZpbmVkKF9fQVBQTEVfXykKKyAgICB7IndhaXRpZCIsICAgICAgICAgIHBvc2l4X3dhaXRpZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF93YWl0aWRfX2RvY19ffSwKKyNlbmRpZgogI2lmIGRlZmluZWQoSEFWRV9XQUlUUElEKSB8fCBkZWZpbmVkKEhBVkVfQ1dBSVQpCiAgICAgeyJ3YWl0cGlkIiwgICAgICAgICBwb3NpeF93YWl0cGlkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dhaXRwaWRfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX1dBSVRQSUQgKi8KQEAgLTgwNTUsMjUgKzExMDczLDUzIEBACiAjaWZkZWYgSEFWRV9UQ1NFVFBHUlAKICAgICB7InRjc2V0cGdycCIsICAgICAgIHBvc2l4X3Rjc2V0cGdycCwgTUVUSF9WQVJBUkdTLCBwb3NpeF90Y3NldHBncnBfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX1RDU0VUUEdSUCAqLwotICAgIHsib3BlbiIsICAgICAgICAgICAgcG9zaXhfb3BlbiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9vcGVuX19kb2NfX30sCisgICAgeyJvcGVuIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfb3BlbixcCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfb3Blbl9fZG9jX199LAogICAgIHsiY2xvc2UiLCAgICAgICAgICAgcG9zaXhfY2xvc2UsIE1FVEhfVkFSQVJHUywgcG9zaXhfY2xvc2VfX2RvY19ffSwKICAgICB7ImNsb3NlcmFuZ2UiLCAgICAgIHBvc2l4X2Nsb3NlcmFuZ2UsIE1FVEhfVkFSQVJHUywgcG9zaXhfY2xvc2VyYW5nZV9fZG9jX199LAogICAgIHsiZGV2aWNlX2VuY29kaW5nIiwgZGV2aWNlX2VuY29kaW5nLCBNRVRIX1ZBUkFSR1MsIGRldmljZV9lbmNvZGluZ19fZG9jX199LAogICAgIHsiZHVwIiwgICAgICAgICAgICAgcG9zaXhfZHVwLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2R1cF9fZG9jX199LAogICAgIHsiZHVwMiIsICAgICAgICAgICAgcG9zaXhfZHVwMiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9kdXAyX19kb2NfX30sCisjaWZkZWYgSEFWRV9MT0NLRgorICAgIHsibG9ja2YiLCAgICAgICAgICAgcG9zaXhfbG9ja2YsIE1FVEhfVkFSQVJHUywgcG9zaXhfbG9ja2ZfX2RvY19ffSwKKyNlbmRpZgogICAgIHsibHNlZWsiLCAgICAgICAgICAgcG9zaXhfbHNlZWssIE1FVEhfVkFSQVJHUywgcG9zaXhfbHNlZWtfX2RvY19ffSwKICAgICB7InJlYWQiLCAgICAgICAgICAgIHBvc2l4X3JlYWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfcmVhZF9fZG9jX199LAorI2lmZGVmIEhBVkVfUkVBRFYKKyAgICB7InJlYWR2IiwgICAgICAgICAgIHBvc2l4X3JlYWR2LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3JlYWR2X19kb2NfX30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1BSRUFECisgICAgeyJwcmVhZCIsICAgICAgICAgICBwb3NpeF9wcmVhZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9wcmVhZF9fZG9jX199LAorI2VuZGlmCiAgICAgeyJ3cml0ZSIsICAgICAgICAgICBwb3NpeF93cml0ZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF93cml0ZV9fZG9jX199LAorI2lmZGVmIEhBVkVfV1JJVEVWCisgICAgeyJ3cml0ZXYiLCAgICAgICAgICBwb3NpeF93cml0ZXYsIE1FVEhfVkFSQVJHUywgcG9zaXhfd3JpdGV2X19kb2NfX30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1BXUklURQorICAgIHsicHdyaXRlIiwgICAgICAgICAgcG9zaXhfcHdyaXRlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3B3cml0ZV9fZG9jX199LAorI2VuZGlmCisjaWZkZWYgSEFWRV9TRU5ERklMRQorICAgIHsic2VuZGZpbGUiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3NlbmRmaWxlLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3NlbmRmaWxlX19kb2NfX30sCisjZW5kaWYKICAgICB7ImZzdGF0IiwgICAgICAgICAgIHBvc2l4X2ZzdGF0LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2ZzdGF0X19kb2NfX30sCiAgICAgeyJpc2F0dHkiLCAgICAgICAgICBwb3NpeF9pc2F0dHksIE1FVEhfVkFSQVJHUywgcG9zaXhfaXNhdHR5X19kb2NfX30sCiAjaWZkZWYgSEFWRV9QSVBFCiAgICAgeyJwaXBlIiwgICAgICAgICAgICBwb3NpeF9waXBlLCBNRVRIX05PQVJHUywgcG9zaXhfcGlwZV9fZG9jX199LAogI2VuZGlmCisjaWZkZWYgSEFWRV9QSVBFMgorICAgIHsicGlwZTIiLCAgICAgICAgICAgcG9zaXhfcGlwZTIsIE1FVEhfTywgcG9zaXhfcGlwZTJfX2RvY19ffSwKKyNlbmRpZgogI2lmZGVmIEhBVkVfTUtGSUZPCi0gICAgeyJta2ZpZm8iLCAgICAgICAgICBwb3NpeF9ta2ZpZm8sIE1FVEhfVkFSQVJHUywgcG9zaXhfbWtmaWZvX19kb2NfX30sCisgICAgeyJta2ZpZm8iLCAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbWtmaWZvLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X21rZmlmb19fZG9jX199LAogI2VuZGlmCiAjaWYgZGVmaW5lZChIQVZFX01LTk9EKSAmJiBkZWZpbmVkKEhBVkVfTUFLRURFVikKLSAgICB7Im1rbm9kIiwgICAgICAgICAgIHBvc2l4X21rbm9kLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X21rbm9kX19kb2NfX30sCisgICAgeyJta25vZCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbWtub2QsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbWtub2RfX2RvY19ffSwKICNlbmRpZgogI2lmZGVmIEhBVkVfREVWSUNFX01BQ1JPUwogICAgIHsibWFqb3IiLCAgICAgICAgICAgcG9zaXhfbWFqb3IsIE1FVEhfVkFSQVJHUywgcG9zaXhfbWFqb3JfX2RvY19ffSwKQEAgLTgwODMsNiArMTExMjksMTcgQEAKICNpZmRlZiBIQVZFX0ZUUlVOQ0FURQogICAgIHsiZnRydW5jYXRlIiwgICAgICAgcG9zaXhfZnRydW5jYXRlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2Z0cnVuY2F0ZV9fZG9jX199LAogI2VuZGlmCisjaWZkZWYgSEFWRV9UUlVOQ0FURQorICAgIHsidHJ1bmNhdGUiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3RydW5jYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3RydW5jYXRlX19kb2NfX30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1BPU0lYX0ZBTExPQ0FURQorICAgIHsicG9zaXhfZmFsbG9jYXRlIiwgcG9zaXhfcG9zaXhfZmFsbG9jYXRlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3Bvc2l4X2ZhbGxvY2F0ZV9fZG9jX199LAorI2VuZGlmCisjaWZkZWYgSEFWRV9QT1NJWF9GQURWSVNFCisgICAgeyJwb3NpeF9mYWR2aXNlIiwgICBwb3NpeF9wb3NpeF9mYWR2aXNlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3Bvc2l4X2ZhZHZpc2VfX2RvY19ffSwKKyNlbmRpZgogI2lmZGVmIEhBVkVfUFVURU5WCiAgICAgeyJwdXRlbnYiLCAgICAgICAgICBwb3NpeF9wdXRlbnYsIE1FVEhfVkFSQVJHUywgcG9zaXhfcHV0ZW52X19kb2NfX30sCiAjZW5kaWYKQEAgLTgwOTYsNiArMTExNTMsOSBAQAogI2lmZGVmIEhBVkVfRlNZTkMKICAgICB7ImZzeW5jIiwgICAgICAgcG9zaXhfZnN5bmMsIE1FVEhfTywgcG9zaXhfZnN5bmNfX2RvY19ffSwKICNlbmRpZgorI2lmZGVmIEhBVkVfU1lOQworICAgIHsic3luYyIsICAgICAgICBwb3NpeF9zeW5jLCBNRVRIX05PQVJHUywgcG9zaXhfc3luY19fZG9jX199LAorI2VuZGlmCiAjaWZkZWYgSEFWRV9GREFUQVNZTkMKICAgICB7ImZkYXRhc3luYyIsICAgcG9zaXhfZmRhdGFzeW5jLCAgTUVUSF9PLCBwb3NpeF9mZGF0YXN5bmNfX2RvY19ffSwKICNlbmRpZgpAQCAtODEyOSw3ICsxMTE4OSw5IEBACiAgICAgeyJmc3RhdHZmcyIsICAgICAgICBwb3NpeF9mc3RhdHZmcywgTUVUSF9WQVJBUkdTLCBwb3NpeF9mc3RhdHZmc19fZG9jX199LAogI2VuZGlmCiAjaWYgZGVmaW5lZChIQVZFX1NUQVRWRlMpICYmIGRlZmluZWQoSEFWRV9TWVNfU1RBVFZGU19IKQotICAgIHsic3RhdHZmcyIsICAgICAgICAgcG9zaXhfc3RhdHZmcywgTUVUSF9WQVJBUkdTLCBwb3NpeF9zdGF0dmZzX19kb2NfX30sCisgICAgeyJzdGF0dmZzIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfc3RhdHZmcywKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9zdGF0dmZzX19kb2NfX30sCiAjZW5kaWYKICNpZmRlZiBIQVZFX0NPTkZTVFIKICAgICB7ImNvbmZzdHIiLCAgICAgICAgIHBvc2l4X2NvbmZzdHIsIE1FVEhfVkFSQVJHUywgcG9zaXhfY29uZnN0cl9fZG9jX199LApAQCAtODE0MSw3ICsxMTIwMyw5IEBACiAgICAgeyJmcGF0aGNvbmYiLCAgICAgICBwb3NpeF9mcGF0aGNvbmYsIE1FVEhfVkFSQVJHUywgcG9zaXhfZnBhdGhjb25mX19kb2NfX30sCiAjZW5kaWYKICNpZmRlZiBIQVZFX1BBVEhDT05GCi0gICAgeyJwYXRoY29uZiIsICAgICAgICBwb3NpeF9wYXRoY29uZiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9wYXRoY29uZl9fZG9jX199LAorICAgIHsicGF0aGNvbmYiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3BhdGhjb25mLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3BhdGhjb25mX19kb2NfX30sCiAjZW5kaWYKICAgICB7ImFib3J0IiwgICAgICAgICAgIHBvc2l4X2Fib3J0LCBNRVRIX05PQVJHUywgcG9zaXhfYWJvcnRfX2RvY19ffSwKICNpZmRlZiBNU19XSU5ET1dTCkBAIC04MTQ5LDYgKzExMjEzLDcgQEAKICAgICB7Il9nZXRmaW5hbHBhdGhuYW1lIiwgICAgICAgcG9zaXhfX2dldGZpbmFscGF0aG5hbWUsIE1FVEhfVkFSQVJHUywgTlVMTH0sCiAgICAgeyJfZ2V0ZmlsZWluZm9ybWF0aW9uIiwgICAgIHBvc2l4X19nZXRmaWxlaW5mb3JtYXRpb24sIE1FVEhfVkFSQVJHUywgTlVMTH0sCiAgICAgeyJfaXNkaXIiLCAgICAgICAgICAgICAgICAgIHBvc2l4X19pc2RpciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9faXNkaXJfX2RvY19ffSwKKyAgICB7Il9nZXRkaXNrdXNhZ2UiLCAgICAgICAgICAgd2luMzJfX2dldGRpc2t1c2FnZSwgTUVUSF9WQVJBUkdTLCB3aW4zMl9fZ2V0ZGlza3VzYWdlX19kb2NfX30sCiAjZW5kaWYKICNpZmRlZiBIQVZFX0dFVExPQURBVkcKICAgICB7ImdldGxvYWRhdmciLCAgICAgIHBvc2l4X2dldGxvYWRhdmcsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRsb2FkYXZnX19kb2NfX30sCkBAIC04MTY2LDYgKzExMjMxLDI0IEBACiAjaWZkZWYgSEFWRV9HRVRSRVNHSUQKICAgICB7ImdldHJlc2dpZCIsICAgICAgIHBvc2l4X2dldHJlc2dpZCwgTUVUSF9OT0FSR1MsIHBvc2l4X2dldHJlc2dpZF9fZG9jX199LAogI2VuZGlmCisKKyNpZmRlZiBVU0VfWEFUVFJTCisgICAgeyJzZXR4YXR0ciIsIChQeUNGdW5jdGlvbilwb3NpeF9zZXR4YXR0ciwKKyAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgcG9zaXhfc2V0eGF0dHJfX2RvY19ffSwKKyAgICB7ImdldHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKXBvc2l4X2dldHhhdHRyLAorICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICBwb3NpeF9nZXR4YXR0cl9fZG9jX199LAorICAgIHsicmVtb3ZleGF0dHIiLCAoUHlDRnVuY3Rpb24pcG9zaXhfcmVtb3ZleGF0dHIsCisgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgIHBvc2l4X3JlbW92ZXhhdHRyX19kb2NfX30sCisgICAgeyJsaXN0eGF0dHIiLCAoUHlDRnVuY3Rpb24pcG9zaXhfbGlzdHhhdHRyLAorICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICBwb3NpeF9saXN0eGF0dHJfX2RvY19ffSwKKyNlbmRpZgorI2lmIGRlZmluZWQoVEVSTVNJWkVfVVNFX0NPTklPKSB8fCBkZWZpbmVkKFRFUk1TSVpFX1VTRV9JT0NUTCkKKyAgICB7ImdldF90ZXJtaW5hbF9zaXplIiwgZ2V0X3Rlcm1pbmFsX3NpemUsIE1FVEhfVkFSQVJHUywgdGVybXNpemVfX2RvY19ffSwKKyNlbmRpZgogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApAQCAtODMzMyw2ICsxMTQxNiw5IEBACiAjaWZkZWYgT19URVhUCiAgICAgaWYgKGlucyhkLCAiT19URVhUIiwgKGxvbmcpT19URVhUKSkgcmV0dXJuIC0xOwogI2VuZGlmCisjaWZkZWYgT19YQVRUUgorICAgIGlmIChpbnMoZCwgIk9fWEFUVFIiLCAobG9uZylPX1hBVFRSKSkgcmV0dXJuIC0xOworI2VuZGlmCiAjaWZkZWYgT19MQVJHRUZJTEUKICAgICBpZiAoaW5zKGQsICJPX0xBUkdFRklMRSIsIChsb25nKU9fTEFSR0VGSUxFKSkgcmV0dXJuIC0xOwogI2VuZGlmCkBAIC04MzQyLDYgKzExNDI4LDM4IEBACiAjaWZkZWYgT19FWExPQ0sKICAgICBpZiAoaW5zKGQsICJPX0VYTE9DSyIsIChsb25nKU9fRVhMT0NLKSkgcmV0dXJuIC0xOwogI2VuZGlmCisjaWZkZWYgT19FWEVDCisgICAgaWYgKGlucyhkLCAiT19FWEVDIiwgKGxvbmcpT19FWEVDKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgT19TRUFSQ0gKKyAgICBpZiAoaW5zKGQsICJPX1NFQVJDSCIsIChsb25nKU9fU0VBUkNIKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgT19UVFlfSU5JVAorICAgIGlmIChpbnMoZCwgIk9fVFRZX0lOSVQiLCAobG9uZylPX1RUWV9JTklUKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUFJJT19QUk9DRVNTCisgICAgaWYgKGlucyhkLCAiUFJJT19QUk9DRVNTIiwgKGxvbmcpUFJJT19QUk9DRVNTKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUFJJT19QR1JQCisgICAgaWYgKGlucyhkLCAiUFJJT19QR1JQIiwgKGxvbmcpUFJJT19QR1JQKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUFJJT19VU0VSCisgICAgaWYgKGlucyhkLCAiUFJJT19VU0VSIiwgKGxvbmcpUFJJT19VU0VSKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgT19DTE9FWEVDCisgICAgaWYgKGlucyhkLCAiT19DTE9FWEVDIiwgKGxvbmcpT19DTE9FWEVDKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgT19BQ0NNT0RFCisgICAgaWYgKGlucyhkLCAiT19BQ0NNT0RFIiwgKGxvbmcpT19BQ0NNT0RFKSkgcmV0dXJuIC0xOworI2VuZGlmCisKKworI2lmZGVmIFNFRUtfSE9MRQorICAgIGlmIChpbnMoZCwgIlNFRUtfSE9MRSIsIChsb25nKVNFRUtfSE9MRSkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFNFRUtfREFUQQorICAgIGlmIChpbnMoZCwgIlNFRUtfREFUQSIsIChsb25nKVNFRUtfREFUQSkpIHJldHVybiAtMTsKKyNlbmRpZgogCiAvKiBNUyBXaW5kb3dzICovCiAjaWZkZWYgT19OT0lOSEVSSVQKQEAgLTgzODQsNiArMTE1MDIsMTAgQEAKICAgICAvKiBEbyBub3QgZm9sbG93IGxpbmtzLiAgICAgICovCiAgICAgaWYgKGlucyhkLCAiT19OT0ZPTExPVyIsIChsb25nKU9fTk9GT0xMT1cpKSByZXR1cm4gLTE7CiAjZW5kaWYKKyNpZmRlZiBPX05PTElOS1MKKyAgICAvKiBGYWlscyBpZiBsaW5rIGNvdW50IG9mIHRoZSBuYW1lZCBmaWxlIGlzIGdyZWF0ZXIgdGhhbiAxICovCisgICAgaWYgKGlucyhkLCAiT19OT0xJTktTIiwgKGxvbmcpT19OT0xJTktTKSkgcmV0dXJuIC0xOworI2VuZGlmCiAjaWZkZWYgT19OT0FUSU1FCiAgICAgLyogRG8gbm90IHVwZGF0ZSB0aGUgYWNjZXNzIHRpbWUuICovCiAgICAgaWYgKGlucyhkLCAiT19OT0FUSU1FIiwgKGxvbmcpT19OT0FUSU1FKSkgcmV0dXJuIC0xOwpAQCAtODQ1MCw2ICsxMTU3Miw3OSBAQAogICAgIGlmIChpbnMoZCwgIlNUX05PU1VJRCIsIChsb25nKVNUX05PU1VJRCkpIHJldHVybiAtMTsKICNlbmRpZiAvKiBTVF9OT1NVSUQgKi8KIAorICAgIC8qIEZyZWVCU0Qgc2VuZGZpbGUoKSBjb25zdGFudHMgKi8KKyNpZmRlZiBTRl9OT0RJU0tJTworICAgIGlmIChpbnMoZCwgIlNGX05PRElTS0lPIiwgKGxvbmcpU0ZfTk9ESVNLSU8pKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBTRl9NTk9XQUlUCisgICAgaWYgKGlucyhkLCAiU0ZfTU5PV0FJVCIsIChsb25nKVNGX01OT1dBSVQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBTRl9TWU5DCisgICAgaWYgKGlucyhkLCAiU0ZfU1lOQyIsIChsb25nKVNGX1NZTkMpKSByZXR1cm4gLTE7CisjZW5kaWYKKworICAgIC8qIGNvbnN0YW50cyBmb3IgcG9zaXhfZmFkdmlzZSAqLworI2lmZGVmIFBPU0lYX0ZBRFZfTk9STUFMCisgICAgaWYgKGlucyhkLCAiUE9TSVhfRkFEVl9OT1JNQUwiLCAobG9uZylQT1NJWF9GQURWX05PUk1BTCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFBPU0lYX0ZBRFZfU0VRVUVOVElBTAorICAgIGlmIChpbnMoZCwgIlBPU0lYX0ZBRFZfU0VRVUVOVElBTCIsIChsb25nKVBPU0lYX0ZBRFZfU0VRVUVOVElBTCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFBPU0lYX0ZBRFZfUkFORE9NCisgICAgaWYgKGlucyhkLCAiUE9TSVhfRkFEVl9SQU5ET00iLCAobG9uZylQT1NJWF9GQURWX1JBTkRPTSkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFBPU0lYX0ZBRFZfTk9SRVVTRQorICAgIGlmIChpbnMoZCwgIlBPU0lYX0ZBRFZfTk9SRVVTRSIsIChsb25nKVBPU0lYX0ZBRFZfTk9SRVVTRSkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFBPU0lYX0ZBRFZfV0lMTE5FRUQKKyAgICBpZiAoaW5zKGQsICJQT1NJWF9GQURWX1dJTExORUVEIiwgKGxvbmcpUE9TSVhfRkFEVl9XSUxMTkVFRCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFBPU0lYX0ZBRFZfRE9OVE5FRUQKKyAgICBpZiAoaW5zKGQsICJQT1NJWF9GQURWX0RPTlRORUVEIiwgKGxvbmcpUE9TSVhfRkFEVl9ET05UTkVFRCkpIHJldHVybiAtMTsKKyNlbmRpZgorCisgICAgLyogY29uc3RhbnRzIGZvciB3YWl0aWQgKi8KKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChIQVZFX1dBSVRJRCkKKyAgICBpZiAoaW5zKGQsICJQX1BJRCIsIChsb25nKVBfUElEKSkgcmV0dXJuIC0xOworICAgIGlmIChpbnMoZCwgIlBfUEdJRCIsIChsb25nKVBfUEdJRCkpIHJldHVybiAtMTsKKyAgICBpZiAoaW5zKGQsICJQX0FMTCIsIChsb25nKVBfQUxMKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgV0VYSVRFRAorICAgIGlmIChpbnMoZCwgIldFWElURUQiLCAobG9uZylXRVhJVEVEKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgV05PV0FJVAorICAgIGlmIChpbnMoZCwgIldOT1dBSVQiLCAobG9uZylXTk9XQUlUKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgV1NUT1BQRUQKKyAgICBpZiAoaW5zKGQsICJXU1RPUFBFRCIsIChsb25nKVdTVE9QUEVEKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgQ0xEX0VYSVRFRAorICAgIGlmIChpbnMoZCwgIkNMRF9FWElURUQiLCAobG9uZylDTERfRVhJVEVEKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgQ0xEX0RVTVBFRAorICAgIGlmIChpbnMoZCwgIkNMRF9EVU1QRUQiLCAobG9uZylDTERfRFVNUEVEKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgQ0xEX1RSQVBQRUQKKyAgICBpZiAoaW5zKGQsICJDTERfVFJBUFBFRCIsIChsb25nKUNMRF9UUkFQUEVEKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgQ0xEX0NPTlRJTlVFRAorICAgIGlmIChpbnMoZCwgIkNMRF9DT05USU5VRUQiLCAobG9uZylDTERfQ09OVElOVUVEKSkgcmV0dXJuIC0xOworI2VuZGlmCisKKyAgICAvKiBjb25zdGFudHMgZm9yIGxvY2tmICovCisjaWZkZWYgRl9MT0NLCisgICAgaWYgKGlucyhkLCAiRl9MT0NLIiwgKGxvbmcpRl9MT0NLKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgRl9UTE9DSworICAgIGlmIChpbnMoZCwgIkZfVExPQ0siLCAobG9uZylGX1RMT0NLKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgRl9VTE9DSworICAgIGlmIChpbnMoZCwgIkZfVUxPQ0siLCAobG9uZylGX1VMT0NLKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgRl9URVNUCisgICAgaWYgKGlucyhkLCAiRl9URVNUIiwgKGxvbmcpRl9URVNUKSkgcmV0dXJuIC0xOworI2VuZGlmCisKICNpZmRlZiBIQVZFX1NQQVdOVgogI2lmIGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19HQ0MpCiAgICAgaWYgKGlucyhkLCAiUF9XQUlUIiwgKGxvbmcpUF9XQUlUKSkgcmV0dXJuIC0xOwpAQCAtODQ4MSw2ICsxMTY3Niw2NCBAQAogI2VuZGlmCiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU0NIRURfSAorICAgIGlmIChpbnMoZCwgIlNDSEVEX09USEVSIiwgKGxvbmcpU0NIRURfT1RIRVIpKSByZXR1cm4gLTE7CisgICAgaWYgKGlucyhkLCAiU0NIRURfRklGTyIsIChsb25nKVNDSEVEX0ZJRk8pKSByZXR1cm4gLTE7CisgICAgaWYgKGlucyhkLCAiU0NIRURfUlIiLCAobG9uZylTQ0hFRF9SUikpIHJldHVybiAtMTsKKyNpZmRlZiBTQ0hFRF9TUE9SQURJQworICAgIGlmIChpbnMoZCwgIlNDSEVEX1NQT1JBRElDIiwgKGxvbmcpU0NIRURfU1BPUkFESUMpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFNDSEVEX0JBVENICisgICAgaWYgKGlucyhkLCAiU0NIRURfQkFUQ0giLCAobG9uZylTQ0hFRF9CQVRDSCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFNDSEVEX0lETEUKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9JRExFIiwgKGxvbmcpU0NIRURfSURMRSkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFNDSEVEX1JFU0VUX09OX0ZPUksKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9SRVNFVF9PTl9GT1JLIiwgKGxvbmcpU0NIRURfUkVTRVRfT05fRk9SSykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFNDSEVEX1NZUworICAgIGlmIChpbnMoZCwgIlNDSEVEX1NZUyIsIChsb25nKVNDSEVEX1NZUykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFNDSEVEX0lBCisgICAgaWYgKGlucyhkLCAiU0NIRURfSUEiLCAobG9uZylTQ0hFRF9JQSkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFNDSEVEX0ZTUworICAgIGlmIChpbnMoZCwgIlNDSEVEX0ZTUyIsIChsb25nKVNDSEVEX0ZTUykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFNDSEVEX0ZYCisgICAgaWYgKGlucyhkLCAiU0NIRURfRlgiLCAobG9uZylTQ0hFRF9GU1MpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgVVNFX1hBVFRSUworICAgIGlmIChpbnMoZCwgIlhBVFRSX0NSRUFURSIsIChsb25nKVhBVFRSX0NSRUFURSkpIHJldHVybiAtMTsKKyAgICBpZiAoaW5zKGQsICJYQVRUUl9SRVBMQUNFIiwgKGxvbmcpWEFUVFJfUkVQTEFDRSkpIHJldHVybiAtMTsKKyAgICBpZiAoaW5zKGQsICJYQVRUUl9TSVpFX01BWCIsIChsb25nKVhBVFRSX1NJWkVfTUFYKSkgcmV0dXJuIC0xOworI2VuZGlmCisKKyNpZmRlZiBSVExEX0xBWlkKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8oZCwgUlRMRF9MQVpZKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUlRMRF9OT1cKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8oZCwgUlRMRF9OT1cpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBSVExEX0dMT0JBTAorICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhkLCBSVExEX0dMT0JBTCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFJUTERfTE9DQUwKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8oZCwgUlRMRF9MT0NBTCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFJUTERfTk9ERUxFVEUKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8oZCwgUlRMRF9OT0RFTEVURSkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFJUTERfTk9MT0FECisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKGQsIFJUTERfTk9MT0FEKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUlRMRF9ERUVQQklORAorICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhkLCBSVExEX0RFRVBCSU5EKSkgcmV0dXJuIC0xOworI2VuZGlmCisKICNpZiBkZWZpbmVkKFBZT1NfT1MyKQogICAgIGlmIChpbnNlcnR2YWx1ZXMoZCkpIHJldHVybiAtMTsKICNlbmRpZgpAQCAtODUxNCwxMCArMTE3NjcsMTM4IEBACiB9OwogCiAKK3N0YXRpYyBjaGFyICpoYXZlX2Z1bmN0aW9uc1tdID0geworCisjaWZkZWYgSEFWRV9GQUNDRVNTQVQKKyAgICAiSEFWRV9GQUNDRVNTQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZDSERJUgorICAgICJIQVZFX0ZDSERJUiIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRkNITU9ECisgICAgIkhBVkVfRkNITU9EIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GQ0hNT0RBVAorICAgICJIQVZFX0ZDSE1PREFUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GQ0hPV04KKyAgICAiSEFWRV9GQ0hPV04iLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZFWEVDVkUKKyAgICAiSEFWRV9GRVhFQ1ZFIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GRE9QRU5ESVIKKyAgICAiSEFWRV9GRE9QRU5ESVIiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZQQVRIQ09ORgorICAgICJIQVZFX0ZQQVRIQ09ORiIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRlNUQVRBVAorICAgICJIQVZFX0ZTVEFUQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZTVEFUVkZTCisgICAgIkhBVkVfRlNUQVRWRlMiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZUUlVOQ0FURQorICAgICJIQVZFX0ZUUlVOQ0FURSIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRlVUSU1FTlMKKyAgICAiSEFWRV9GVVRJTUVOUyIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRlVUSU1FUworICAgICJIQVZFX0ZVVElNRVMiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZVVElNRVNBVAorICAgICJIQVZFX0ZVVElNRVNBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTElOS0FUCisgICAgIkhBVkVfTElOS0FUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9MQ0hGTEFHUworICAgICJIQVZFX0xDSEZMQUdTIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9MQ0hNT0QKKyAgICAiSEFWRV9MQ0hNT0QiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xDSE9XTgorICAgICJIQVZFX0xDSE9XTiIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTFNUQVQKKyAgICAiSEFWRV9MU1RBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTFVUSU1FUworICAgICJIQVZFX0xVVElNRVMiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX01LRElSQVQKKyAgICAiSEFWRV9NS0RJUkFUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9NS0ZJRk9BVAorICAgICJIQVZFX01LRklGT0FUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9NS05PREFUCisgICAgIkhBVkVfTUtOT0RBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfT1BFTkFUCisgICAgIkhBVkVfT1BFTkFUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9SRUFETElOS0FUCisgICAgIkhBVkVfUkVBRExJTktBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfUkVOQU1FQVQKKyAgICAiSEFWRV9SRU5BTUVBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfU1lNTElOS0FUCisgICAgIkhBVkVfU1lNTElOS0FUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9VTkxJTktBVAorICAgICJIQVZFX1VOTElOS0FUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9VVElNRU5TQVQKKyAgICAiSEFWRV9VVElNRU5TQVQiLAorI2VuZGlmCisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgIk1TX1dJTkRPV1MiLAorI2VuZGlmCisKKyAgICBOVUxMCit9OworCisKIFB5TU9ESU5JVF9GVU5DCiBJTklURlVOQyh2b2lkKQogewogICAgIFB5T2JqZWN0ICptLCAqdjsKKyAgICBQeU9iamVjdCAqbGlzdDsKKyAgICBjaGFyICoqdHJhY2U7CiAKICNpZiBkZWZpbmVkKEhBVkVfU1lNTElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKQogICAgIHdpbjMyX2Nhbl9zeW1saW5rID0gZW5hYmxlX3N5bWxpbmsoKTsKQEAgLTg1NDksNiArMTE5MzAsMTEgQEAKICNlbmRpZgogCiAgICAgaWYgKCFpbml0aWFsaXplZCkgeworI2lmIGRlZmluZWQoSEFWRV9XQUlUSUQpICYmICFkZWZpbmVkKF9fQVBQTEVfXykKKyAgICAgICAgd2FpdGlkX3Jlc3VsdF9kZXNjLm5hbWUgPSBNT0ROQU1FICIud2FpdGlkX3Jlc3VsdCI7CisgICAgICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJldhaXRpZFJlc3VsdFR5cGUsICZ3YWl0aWRfcmVzdWx0X2Rlc2MpOworI2VuZGlmCisKICAgICAgICAgc3RhdF9yZXN1bHRfZGVzYy5uYW1lID0gTU9ETkFNRSAiLnN0YXRfcmVzdWx0IjsKICAgICAgICAgc3RhdF9yZXN1bHRfZGVzYy5maWVsZHNbN10ubmFtZSA9IFB5U3RydWN0U2VxdWVuY2VfVW5uYW1lZEZpZWxkOwogICAgICAgICBzdGF0X3Jlc3VsdF9kZXNjLmZpZWxkc1s4XS5uYW1lID0gUHlTdHJ1Y3RTZXF1ZW5jZV9Vbm5hbWVkRmllbGQ7CkBAIC04NTY4LDEzICsxMTk1NCwzOCBAQAogICAgICAgICB0aWNrc19wZXJfc2Vjb25kID0gNjA7IC8qIG1hZ2ljIGZhbGxiYWNrIHZhbHVlOyBtYXkgYmUgYm9ndXMgKi8KICMgIGVuZGlmCiAjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRQQVJBTSkgfHwgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUikKKyAgICAgICAgc2NoZWRfcGFyYW1fZGVzYy5uYW1lID0gTU9ETkFNRSAiLnNjaGVkX3BhcmFtIjsKKyAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmU2NoZWRQYXJhbVR5cGUsICZzY2hlZF9wYXJhbV9kZXNjKTsKKyAgICAgICAgU2NoZWRQYXJhbVR5cGUudHBfbmV3ID0gc2NoZWRfcGFyYW1fbmV3OworI2VuZGlmCisKKyAgICAgICAgLyogaW5pdGlhbGl6ZSBUZXJtaW5hbFNpemVfaW5mbyAqLworICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZUZXJtaW5hbFNpemVUeXBlLCAmVGVybWluYWxTaXplX2Rlc2MpOwogICAgIH0KKyNpZiBkZWZpbmVkKEhBVkVfV0FJVElEKSAmJiAhZGVmaW5lZChfX0FQUExFX18pCisgICAgUHlfSU5DUkVGKChQeU9iamVjdCopICZXYWl0aWRSZXN1bHRUeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIndhaXRpZF9yZXN1bHQiLCAoUHlPYmplY3QqKSAmV2FpdGlkUmVzdWx0VHlwZSk7CisjZW5kaWYKICAgICBQeV9JTkNSRUYoKFB5T2JqZWN0KikgJlN0YXRSZXN1bHRUeXBlKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInN0YXRfcmVzdWx0IiwgKFB5T2JqZWN0KikgJlN0YXRSZXN1bHRUeXBlKTsKICAgICBQeV9JTkNSRUYoKFB5T2JqZWN0KikgJlN0YXRWRlNSZXN1bHRUeXBlKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInN0YXR2ZnNfcmVzdWx0IiwKICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0KikgJlN0YXRWRlNSZXN1bHRUeXBlKTsKLSAgICBpbml0aWFsaXplZCA9IDE7CisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUUEFSQU0pIHx8IGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIpCisgICAgUHlfSU5DUkVGKCZTY2hlZFBhcmFtVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJzY2hlZF9wYXJhbSIsIChQeU9iamVjdCAqKSZTY2hlZFBhcmFtVHlwZSk7CisjZW5kaWYKKworICAgIHRpbWVzX3Jlc3VsdF9kZXNjLm5hbWUgPSBNT0ROQU1FICIudGltZXNfcmVzdWx0IjsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZUaW1lc1Jlc3VsdFR5cGUsICZ0aW1lc19yZXN1bHRfZGVzYyk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ0aW1lc19yZXN1bHQiLCAoUHlPYmplY3QgKikmVGltZXNSZXN1bHRUeXBlKTsKKworICAgIHVuYW1lX3Jlc3VsdF9kZXNjLm5hbWUgPSBNT0ROQU1FICIudW5hbWVfcmVzdWx0IjsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZVbmFtZVJlc3VsdFR5cGUsICZ1bmFtZV9yZXN1bHRfZGVzYyk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ1bmFtZV9yZXN1bHQiLCAoUHlPYmplY3QgKikmVW5hbWVSZXN1bHRUeXBlKTsKIAogI2lmZGVmIF9fQVBQTEVfXwogICAgIC8qCkBAIC04NTg0LDcgKzExOTk1LDcgQEAKICAgICAgKiBjdXJyZW50bHkgYWN0aXZlIHBsYXRmb3JtLgogICAgICAqCiAgICAgICogVGhpcyBibG9jayBhbGxvdyBvbmUgdG8gdXNlIGEgcHl0aG9uIGJpbmFyeSB0aGF0IHdhcyBidWlsZCBvbgotICAgICAqIE9TWCAxMC40IG9uIE9TWCAxMC4zLCB3aXRob3V0IGxvb3NpbmcgYWNjZXNzIHRvIG5ldyBBUElzIG9uCisgICAgICogT1NYIDEwLjQgb24gT1NYIDEwLjMsIHdpdGhvdXQgbG9zaW5nIGFjY2VzcyB0byBuZXcgQVBJcyBvbgogICAgICAqIE9TWCAxMC40LgogICAgICAqLwogI2lmZGVmIEhBVkVfRlNUQVRWRlMKQEAgLTg2MTMsNiArMTIwMjQsNDMgQEAKIAogCiAjZW5kaWYgLyogX19BUFBMRV9fICovCisKKyAgICBQeV9JTkNSRUYoJlRlcm1pbmFsU2l6ZVR5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAidGVybWluYWxfc2l6ZSIsIChQeU9iamVjdCopICZUZXJtaW5hbFNpemVUeXBlKTsKKworICAgIGJpbGxpb24gPSBQeUxvbmdfRnJvbUxvbmcoMTAwMDAwMDAwMCk7CisgICAgaWYgKCFiaWxsaW9uKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIHN1cHByZXNzICJmdW5jdGlvbiBub3QgdXNlZCIgd2FybmluZ3MgKi8KKyAgICB7CisgICAgaW50IGlnbm9yZWQ7CisgICAgZmRfc3BlY2lmaWVkKCIiLCAtMSk7CisgICAgZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgiIiwgMSk7CisgICAgZGlyX2ZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgiY2htb2QiLCBERUZBVUxUX0RJUl9GRCwgMSk7CisgICAgZGlyX2ZkX2NvbnZlcnRlcihQeV9Ob25lLCAmaWdub3JlZCk7CisgICAgZGlyX2ZkX3VuYXZhaWxhYmxlKFB5X05vbmUsICZpZ25vcmVkKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIHByb3ZpZGUgbGlzdCBvZiBsb2NhbGx5IGF2YWlsYWJsZSBmdW5jdGlvbnMKKyAgICAgKiBzbyBvcy5weSBjYW4gcG9wdWxhdGUgc3VwcG9ydF8qIGxpc3RzCisgICAgICovCisgICAgbGlzdCA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKCFsaXN0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmb3IgKHRyYWNlID0gaGF2ZV9mdW5jdGlvbnM7ICp0cmFjZTsgdHJhY2UrKykgeworICAgICAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9EZWNvZGVBU0NJSSgqdHJhY2UsIHN0cmxlbigqdHJhY2UpLCBOVUxMKTsKKyAgICAgICAgaWYgKCF1bmljb2RlKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIHVuaWNvZGUpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICB9CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJfaGF2ZV9mdW5jdGlvbnMiLCBsaXN0KTsKKworICAgIGluaXRpYWxpemVkID0gMTsKKwogICAgIHJldHVybiBtOwogCiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3B5ZXhwYXQuYyBiL01vZHVsZXMvcHlleHBhdC5jCmluZGV4IDlkMjJkM2EuLjAyMmIwY2IgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcHlleHBhdC5jCisrKyBiL01vZHVsZXMvcHlleHBhdC5jCkBAIC0xMDAsMTYgKzEwMCwxNyBAQAogc2V0X2Vycm9yKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBlbnVtIFhNTF9FcnJvciBjb2RlKQogewogICAgIFB5T2JqZWN0ICplcnI7Ci0gICAgY2hhciBidWZmZXJbMjU2XTsKKyAgICBQeU9iamVjdCAqYnVmZmVyOwogICAgIFhNTF9QYXJzZXIgcGFyc2VyID0gc2VsZi0+aXRzZWxmOwogICAgIGludCBsaW5lbm8gPSBYTUxfR2V0RXJyb3JMaW5lTnVtYmVyKHBhcnNlcik7CiAgICAgaW50IGNvbHVtbiA9IFhNTF9HZXRFcnJvckNvbHVtbk51bWJlcihwYXJzZXIpOwogCi0gICAgLyogVGhlcmUgaXMgbm8gcmlzayBvZiBvdmVyZmxvd2luZyB0aGlzIGJ1ZmZlciwgc2luY2UKLSAgICAgICBldmVuIGZvciA2NC1iaXQgaW50ZWdlcnMsIHRoZXJlIGlzIHN1ZmZpY2llbnQgc3BhY2UuICovCi0gICAgc3ByaW50ZihidWZmZXIsICIlLjIwMHM6IGxpbmUgJWksIGNvbHVtbiAlaSIsCi0gICAgICAgICAgICBYTUxfRXJyb3JTdHJpbmcoY29kZSksIGxpbmVubywgY29sdW1uKTsKLSAgICBlcnIgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oRXJyb3JPYmplY3QsICJzIiwgYnVmZmVyKTsKKyAgICBidWZmZXIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXM6IGxpbmUgJWksIGNvbHVtbiAlaSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX0Vycm9yU3RyaW5nKGNvZGUpLCBsaW5lbm8sIGNvbHVtbik7CisgICAgaWYgKGJ1ZmZlciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBlcnIgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oRXJyb3JPYmplY3QsICJPIiwgYnVmZmVyKTsKKyAgICBQeV9ERUNSRUYoYnVmZmVyKTsKICAgICBpZiAoICBlcnIgIT0gTlVMTAogICAgICAgICAgICYmIHNldF9lcnJvcl9hdHRyKGVyciwgImNvZGUiLCBjb2RlKQogICAgICAgICAgICYmIHNldF9lcnJvcl9hdHRyKGVyciwgIm9mZnNldCIsIGNvbHVtbikKQEAgLTc5MywxMyArNzk0LDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhkYXRhKSkgewotICAgICAgICBQeU9iamVjdCAqYnl0ZXM7Ci0gICAgICAgIGJ5dGVzID0gUHlVbmljb2RlX0FzVVRGOFN0cmluZyhkYXRhKTsKLSAgICAgICAgaWYgKGJ5dGVzID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgdmlldy5idWYgPSBOVUxMOwotICAgICAgICBzID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpOwotICAgICAgICBzbGVuID0gUHlCeXRlc19HRVRfU0laRShieXRlcyk7CisgICAgICAgIHMgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShkYXRhLCAmc2xlbik7CisgICAgICAgIGlmIChzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgLyogRXhwbGljaXRseSBzZXQgVVRGLTggZW5jb2RpbmcuIFJldHVybiBjb2RlIGlnbm9yZWQuICovCiAgICAgICAgICh2b2lkKVhNTF9TZXRFbmNvZGluZyhzZWxmLT5pdHNlbGYsICJ1dGYtOCIpOwogICAgIH0KQEAgLTg3Nyw5ICs4NzUsOSBAQAogewogICAgIGludCBydiA9IDE7CiAgICAgUHlPYmplY3QgKnJlYWRtZXRob2QgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKHJlYWQpOwogCi0KLSAgICByZWFkbWV0aG9kID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmLCAicmVhZCIpOworICAgIHJlYWRtZXRob2QgPSBfUHlPYmplY3RfR2V0QXR0cklkKGYsICZQeUlkX3JlYWQpOwogICAgIGlmIChyZWFkbWV0aG9kID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBtdXN0IGhhdmUgJ3JlYWQnIGF0dHJpYnV0ZSIpOwpAQCAtMTA2NywxNiArMTA2NSwxMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHhtbHBhcnNlX1VzZUZvcmVpZ25EVEQoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpmbGFnb2JqID0gTlVMTDsKICAgICBpbnQgZmxhZyA9IDE7CiAgICAgZW51bSBYTUxfRXJyb3IgcmM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzpVc2VGb3JlaWduRFREIiwgJmZsYWdvYmopKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifHA6VXNlRm9yZWlnbkRURCIsICZmbGFnKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGZsYWdvYmogIT0gTlVMTCkgewotICAgICAgICBmbGFnID0gUHlPYmplY3RfSXNUcnVlKGZsYWdvYmopOwotICAgICAgICBpZiAoZmxhZyA8IDApCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgcmMgPSBYTUxfVXNlRm9yZWlnbkRURChzZWxmLT5pdHNlbGYsIGZsYWcgPyBYTUxfVFJVRSA6IFhNTF9GQUxTRSk7CiAgICAgaWYgKHJjICE9IFhNTF9FUlJPUl9OT05FKSB7CiAgICAgICAgIHJldHVybiBzZXRfZXJyb3Ioc2VsZiwgcmMpOwpAQCAtMTEzOSwxNyArMTEzMSwyMiBAQAogICAgIFB5VW5pY29kZU9iamVjdCAqX3Vfc3RyaW5nID0gTlVMTDsKICAgICBpbnQgcmVzdWx0ID0gMDsKICAgICBpbnQgaTsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogCiAgICAgLyogWWVzLCBzdXBwb3J0cyBvbmx5IDhiaXQgZW5jb2RpbmdzICovCiAgICAgX3Vfc3RyaW5nID0gKFB5VW5pY29kZU9iamVjdCAqKQogICAgICAgICBQeVVuaWNvZGVfRGVjb2RlKHRlbXBsYXRlX2J1ZmZlciwgMjU2LCBuYW1lLCAicmVwbGFjZSIpOwogCi0gICAgaWYgKF91X3N0cmluZyA9PSBOVUxMKQorICAgIGlmIChfdV9zdHJpbmcgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoX3Vfc3RyaW5nKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAorICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChfdV9zdHJpbmcpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShfdV9zdHJpbmcpOworCiAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7CiAgICAgICAgIC8qIFN0dXBpZCB0byBhY2Nlc3MgZGlyZWN0bHksIGJ1dCBmYXN0ICovCi0gICAgICAgIFB5X1VOSUNPREUgYyA9IF91X3N0cmluZy0+c3RyW2ldOworICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKICAgICAgICAgaWYgKGMgPT0gUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVIpCiAgICAgICAgICAgICBpbmZvLT5tYXBbaV0gPSAtMTsKICAgICAgICAgZWxzZQpAQCAtMTI3MywxMSArMTI3MCwxMyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHhtbHBhcnNlX2dldGF0dHJvKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbmFtZW9iaikKIHsKLSAgICBQeV9VTklDT0RFICpuYW1lOworICAgIFB5X1VDUzQgZmlyc3RfY2hhcjsKICAgICBpbnQgaGFuZGxlcm51bSA9IC0xOwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sobmFtZW9iaikpCiAgICAgICAgIGdvdG8gZ2VuZXJpYzsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKG5hbWVvYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGhhbmRsZXJudW0gPSBoYW5kbGVybmFtZTJpbnQobmFtZW9iaik7CiAKQEAgLTEyODksOCArMTI4OCw4IEBACiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgbmFtZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKG5hbWVvYmopOwotICAgIGlmIChuYW1lWzBdID09ICdFJykgeworICAgIGZpcnN0X2NoYXIgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKG5hbWVvYmosIDApOworICAgIGlmIChmaXJzdF9jaGFyID09ICdFJykgewogICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZW9iaiwgIkVycm9yQ29kZSIpID09IDApCiAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9HZXRFcnJvckNvZGUoc2VsZi0+aXRzZWxmKSk7CkBAIC0xMzA0LDcgKzEzMDMsNyBAQAogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfR2V0RXJyb3JCeXRlSW5kZXgoc2VsZi0+aXRzZWxmKSk7CiAgICAgfQotICAgIGlmIChuYW1lWzBdID09ICdDJykgeworICAgIGlmIChmaXJzdF9jaGFyID09ICdDJykgewogICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZW9iaiwgIkN1cnJlbnRMaW5lTnVtYmVyIikgPT0gMCkKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX0dldEN1cnJlbnRMaW5lTnVtYmVyKHNlbGYtPml0c2VsZikpOwpAQCAtMTMxNSw3ICsxMzE0LDcgQEAKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX0dldEN1cnJlbnRCeXRlSW5kZXgoc2VsZi0+aXRzZWxmKSk7CiAgICAgfQotICAgIGlmIChuYW1lWzBdID09ICdiJykgeworICAgIGlmIChmaXJzdF9jaGFyID09ICdiJykgewogICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZW9iaiwgImJ1ZmZlcl9zaXplIikgPT0gMCkKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHNlbGYtPmJ1ZmZlcl9zaXplKTsKICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWVvYmosICJidWZmZXJfdGV4dCIpID09IDApCkBAIC0xNzA5LDcgKzE3MDgsNiBAQAogICAgIFB5T2JqZWN0ICplcnJvcnNfbW9kdWxlOwogICAgIFB5T2JqZWN0ICptb2RlbG1vZF9uYW1lOwogICAgIFB5T2JqZWN0ICptb2RlbF9tb2R1bGU7Ci0gICAgUHlPYmplY3QgKnZlcnNpb247CiAgICAgUHlPYmplY3QgKnN5c19tb2R1bGVzOwogICAgIFB5T2JqZWN0ICp0bXBudW0sICp0bXBzdHI7CiAgICAgUHlPYmplY3QgKmNvZGVzX2RpY3Q7CkBAIC0xNzQ2LDEwICsxNzQ0LDYgQEAKICAgICBQeV9JTkNSRUYoJlhtbHBhcnNldHlwZSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJYTUxQYXJzZXJUeXBlIiwgKFB5T2JqZWN0ICopICZYbWxwYXJzZXR5cGUpOwogCi0gICAgdmVyc2lvbiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKFBZX1ZFUlNJT04pOwotICAgIGlmICghdmVyc2lvbikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJfX3ZlcnNpb25fXyIsIHZlcnNpb24pOwogICAgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJFWFBBVF9WRVJTSU9OIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKSBYTUxfRXhwYXRWZXJzaW9uKCkpOwogICAgIHsKQEAgLTE5NDIsNiArMTkzNiw3IEBACiAgICAgY2FwaS5TZXRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyID0gWE1MX1NldFByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXI7CiAgICAgY2FwaS5TZXRVbmtub3duRW5jb2RpbmdIYW5kbGVyID0gWE1MX1NldFVua25vd25FbmNvZGluZ0hhbmRsZXI7CiAgICAgY2FwaS5TZXRVc2VyRGF0YSA9IFhNTF9TZXRVc2VyRGF0YTsKKyAgICBjYXBpLlNldFN0YXJ0RG9jdHlwZURlY2xIYW5kbGVyID0gWE1MX1NldFN0YXJ0RG9jdHlwZURlY2xIYW5kbGVyOwogCiAgICAgLyogZXhwb3J0IHVzaW5nIGNhcHN1bGUgKi8KICAgICBjYXBpX29iamVjdCA9IFB5Q2Fwc3VsZV9OZXcoJmNhcGksIFB5RXhwYXRfQ0FQU1VMRV9OQU1FLCBOVUxMKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcHl0aG9uLmMgYi9Nb2R1bGVzL3B5dGhvbi5jCmluZGV4IDJiZTY5ZjEuLjJjMDhiOTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcHl0aG9uLmMKKysrIGIvTW9kdWxlcy9weXRob24uYwpAQCAtNDMsNiArNDMsNyBAQAogICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKICAgICAgICAgYXJndl9jb3B5W2ldID0gX1B5X2NoYXIyd2NoYXIoYXJndltpXSwgTlVMTCk7CiAgICAgICAgIGlmICghYXJndl9jb3B5W2ldKSB7CisgICAgICAgICAgICBmcmVlKG9sZGxvYyk7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhdGFsIFB5dGhvbiBlcnJvcjogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmFibGUgdG8gZGVjb2RlIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnQgIyVpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKyAxKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcmVhZGxpbmUuYyBiL01vZHVsZXMvcmVhZGxpbmUuYwppbmRleCA0ZDU0ZGFkLi5hNzEwNjUyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3JlYWRsaW5lLmMKKysrIGIvTW9kdWxlcy9yZWFkbGluZS5jCkBAIC0yMzUsMTAgKzIzNSw5IEBACiAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAic2V0XyUuNTBzKGZ1bmMpOiBhcmd1bWVudCBub3QgY2FsbGFibGUiLAotICAgICAgICAgICAgICAgICAgICAgIGZ1bmNuYW1lKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgYnVmKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJzZXRfJS41MHMoZnVuYyk6IGFyZ3VtZW50IG5vdCBjYWxsYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICBmdW5jbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTg5Miw3ICs4OTEsNyBAQAogI2VuZGlmCiAKICNpZmRlZiBfX0FQUExFX18KLSAgICAvKiB0aGUgbGliZWRpdCByZWFkbGluZSBlbXVsYXRpb24gcmVzZXRzIGtleSBiaW5kaW5ncyBldGMgCisgICAgLyogdGhlIGxpYmVkaXQgcmVhZGxpbmUgZW11bGF0aW9uIHJlc2V0cyBrZXkgYmluZGluZ3MgZXRjCiAgICAgICogd2hlbiBjYWxsaW5nIHJsX2luaXRpYWxpemUuICBTbyBjYWxsIGl0IHVwZnJvbnQKICAgICAgKi8KICAgICBpZiAodXNpbmdfbGliZWRpdF9lbXVsYXRpb24pCkBAIC05MzIsMTEgKzkzMSwxMSBAQAogICAgICAqLwogI2lmZGVmIF9fQVBQTEVfXwogICAgIGlmICh1c2luZ19saWJlZGl0X2VtdWxhdGlvbikKLQlybF9yZWFkX2luaXRfZmlsZShOVUxMKTsKKyAgICAgICAgcmxfcmVhZF9pbml0X2ZpbGUoTlVMTCk7CiAgICAgZWxzZQogI2VuZGlmIC8qIF9fQVBQTEVfXyAqLwogICAgICAgICBybF9pbml0aWFsaXplKCk7Ci0gICAgCisKICAgICBSRVNUT1JFX0xPQ0FMRShzYXZlZF9sb2NhbGUpCiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvcmVzb3VyY2UuYyBiL01vZHVsZXMvcmVzb3VyY2UuYwppbmRleCBjYWRmOWU2Li5iMjk0YThjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Jlc291cmNlLmMKKysrIGIvTW9kdWxlcy9yZXNvdXJjZS5jCkBAIC0xOCw4ICsxOCw2IEBACiAKICNkZWZpbmUgZG91YmxldGltZShUVikgKChkb3VibGUpKFRWKS50dl9zZWMgKyAoVFYpLnR2X3VzZWMgKiAwLjAwMDAwMSkKIAotc3RhdGljIFB5T2JqZWN0ICpSZXNvdXJjZUVycm9yOwotCiBQeURvY19TVFJWQVIoc3RydWN0X3J1c2FnZV9fZG9jX18sCiAic3RydWN0X3J1c2FnZTogUmVzdWx0IGZyb20gZ2V0cnVzYWdlLlxuXG4iCiAiVGhpcyBvYmplY3QgbWF5IGJlIGFjY2Vzc2VkIGVpdGhlciBhcyBhIHR1cGxlIG9mXG4iCkBAIC03Myw3ICs3MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgd2hvIHBhcmFtZXRlciIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFJlc291cmNlRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTI1LDcgKzEyMyw3IEBACiAgICAgfQogCiAgICAgaWYgKGdldHJsaW1pdChyZXNvdXJjZSwgJnJsKSA9PSAtMSkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUmVzb3VyY2VFcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0xOTUsNyArMTkzLDcgQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgYWxsb3dlZCB0byByYWlzZSBtYXhpbXVtIGxpbWl0Iik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhSZXNvdXJjZUVycm9yKTsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgUHlfREVDUkVGKGxpbWl0cyk7CkBAIC0yNjMsMTIgKzI2MSw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogQWRkIHNvbWUgc3ltYm9saWMgY29uc3RhbnRzIHRvIHRoZSBtb2R1bGUgKi8KLSAgICBpZiAoUmVzb3VyY2VFcnJvciA9PSBOVUxMKSB7Ci0gICAgICAgIFJlc291cmNlRXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oInJlc291cmNlLmVycm9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKLSAgICB9Ci0gICAgUHlfSU5DUkVGKFJlc291cmNlRXJyb3IpOwotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyb3IiLCBSZXNvdXJjZUVycm9yKTsKKyAgICBQeV9JTkNSRUYoUHlFeGNfT1NFcnJvcik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlcnJvciIsIFB5RXhjX09TRXJyb3IpOwogICAgIGlmICghaW5pdGlhbGl6ZWQpCiAgICAgICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJlN0cnVjdFJVc2FnZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cnVjdF9ydXNhZ2VfZGVzYyk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jIGIvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYwppbmRleCA3ODYzYWFhLi4wNmFiY2YxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMKQEAgLTcsNiArNywxNCBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgPHN0cnVjdG1lbWJlci5oPgogCisjaWZkZWYgSEFWRV9TWVNfREVWUE9MTF9ICisjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisjaW5jbHVkZSA8c3lzL2RldnBvbGwuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjZW5kaWYKKwogI2lmZGVmIF9fQVBQTEVfXwogICAgIC8qIFBlcmZvcm0gcnVudGltZSB0ZXN0aW5nIGZvciBhIGJyb2tlbiBwb2xsIG9uIE9TWCB0byBtYWtlIGl0IGVhc2llcgogICAgICAqIHRvIHVzZSB0aGUgc2FtZSBiaW5hcnkgb24gbXVsdGlwbGUgcmVsZWFzZXMgb2YgdGhlIE9TLgpAQCAtNTQsOCArNjIsNiBAQAogIyAgZW5kaWYKICNlbmRpZgogCi1zdGF0aWMgUHlPYmplY3QgKlNlbGVjdEVycm9yOwotCiAvKiBsaXN0IG9mIFB5dGhvbiBvYmplY3RzIGFuZCB0aGVpciBmaWxlIGRlc2NyaXB0b3IgKi8KIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdCAqb2JqOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG93bmVkIHJlZmVyZW5jZSAqLwpAQCAtMTk4LDkgKzIwNCw3IEBACiAgICAgUHlPYmplY3QgKnJldCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnRvdXQgPSBQeV9Ob25lOwogICAgIGZkX3NldCBpZmRzZXQsIG9mZHNldCwgZWZkc2V0OwotICAgIGRvdWJsZSB0aW1lb3V0OwogICAgIHN0cnVjdCB0aW1ldmFsIHR2LCAqdHZwOwotICAgIGxvbmcgc2Vjb25kczsKICAgICBpbnQgaW1heCwgb21heCwgZW1heCwgbWF4OwogICAgIGludCBuOwogCkBAIC0yMTcsMTggKzIyMSwzMSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHRpbWVvdXQgPSBQeUZsb2F0X0FzRG91YmxlKHRvdXQpOwotICAgICAgICBpZiAodGltZW91dCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgdGltZV90IHNlYzsKKyAgICAgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1ldmFsKHRvdXQsICZzZWMsICZ0di50dl91c2VjKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAodGltZW91dCA+IChkb3VibGUpTE9OR19NQVgpIHsKKyAgICAgICAgYXNzZXJ0KHNpemVvZih0di50dl9zZWMpID09IHNpemVvZihsb25nKSk7CisjaWYgU0laRU9GX1RJTUVfVCA+IFNJWkVPRl9MT05HCisgICAgICAgIGlmIChzZWMgPiBMT05HX01BWCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgcGVyaW9kIHRvbyBsb25nIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgaXMgdG9vIGxhcmdlIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBzZWNvbmRzID0gKGxvbmcpdGltZW91dDsKLSAgICAgICAgdGltZW91dCA9IHRpbWVvdXQgLSAoZG91YmxlKXNlY29uZHM7Ci0gICAgICAgIHR2LnR2X3NlYyA9IHNlY29uZHM7Ci0gICAgICAgIHR2LnR2X3VzZWMgPSAobG9uZykodGltZW91dCAqIDFFNik7CisjZW5kaWYKKyAgICAgICAgdHYudHZfc2VjID0gKGxvbmcpc2VjOworI2Vsc2UKKyAgICAgICAgLyogNjQtYml0IE9TIFggaGFzIHN0cnVjdCB0aW1ldmFsLnR2X3VzZWMgYXMgYW4gaW50IChhbmQgdGh1cyBzdGlsbCA0CisgICAgICAgICAgIGJ5dGVzIGFzIHJlcXVpcmVkKSwgYnV0IG5vIGxvbmdlciBkZWZpbmVkIGJ5IGEgbG9uZy4gKi8KKyAgICAgICAgbG9uZyB0dl91c2VjOworICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWV2YWwodG91dCwgJnR2LnR2X3NlYywgJnR2X3VzZWMpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHR2LnR2X3VzZWMgPSB0dl91c2VjOworI2VuZGlmCisgICAgICAgIGlmICh0di50dl9zZWMgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInRpbWVvdXQgbXVzdCBiZSBub24tbmVnYXRpdmUiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIHR2cCA9ICZ0djsKICAgICB9CiAKQEAgLTI2NywxMSArMjg0LDExIEBACiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKG4gPT0gU09DS0VUX0VSUk9SKSB7Ci0gICAgICAgIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFNlbGVjdEVycm9yLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX09TRXJyb3IsIFdTQUdldExhc3RFcnJvcigpKTsKICAgICB9CiAjZWxzZQogICAgIGlmIChuIDwgMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oU2VsZWN0RXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgfQogI2VuZGlmCiAgICAgZWxzZSB7CkBAIC00MjIsNyArNDM5LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9HZXRJdGVtKHNlbGYtPmRpY3QsIGtleSkgPT0gTlVMTCkgewogICAgICAgICBlcnJubyA9IEVOT0VOVDsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC01MjIsNyArNTM5LDcgQEAKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHBvbGxfcmVzdWx0IDwgMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oU2VsZWN0RXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNjQ4LDYgKzY2NSwzMzkgQEAKICAgICBwb2xsX21ldGhvZHMsICAgICAgICAgICAgICAgLyp0cF9tZXRob2RzKi8KIH07CiAKKyNpZmRlZiBIQVZFX1NZU19ERVZQT0xMX0gKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgaW50IGZkX2RldnBvbGw7CisgICAgaW50IG1heF9uX2ZkczsKKyAgICBpbnQgbl9mZHM7CisgICAgc3RydWN0IHBvbGxmZCAqZmRzOworfSBkZXZwb2xsT2JqZWN0OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IGRldnBvbGxfVHlwZTsKKworc3RhdGljIGludCBkZXZwb2xsX2ZsdXNoKGRldnBvbGxPYmplY3QgKnNlbGYpCit7CisgICAgaW50IHNpemUsIG47CisKKyAgICBpZiAoIXNlbGYtPm5fZmRzKSByZXR1cm4gMDsKKworICAgIHNpemUgPSBzaXplb2Yoc3RydWN0IHBvbGxmZCkqc2VsZi0+bl9mZHM7CisgICAgc2VsZi0+bl9mZHMgPSAwOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIG4gPSB3cml0ZShzZWxmLT5mZF9kZXZwb2xsLCBzZWxmLT5mZHMsIHNpemUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAobiA9PSAtMSApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChuIDwgc2l6ZSkgeworICAgICAgICAvKgorICAgICAgICAqKiBEYXRhIHdyaXRlZCB0byAvZGV2L3BvbGwgaXMgYSBiaW5hcnkgZGF0YSBzdHJ1Y3R1cmUuIEl0IGlzIG5vdAorICAgICAgICAqKiBjbGVhciB3aGF0IHRvIGRvIGlmIGEgcGFydGlhbCB3cml0ZSBvY2N1cnJlZC4gRm9yIG5vdywgcmFpc2UKKyAgICAgICAgKiogYW4gZXhjZXB0aW9uIGFuZCBzZWUgaWYgd2UgYWN0dWFsbHkgZm91bmQgdGhpcyBwcm9ibGVtIGluCisgICAgICAgICoqIHRoZSB3aWxkLgorICAgICAgICAqKiBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTYzOTcuCisgICAgICAgICovCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JT0Vycm9yLCAiZmFpbGVkIHRvIHdyaXRlIGFsbCBwb2xsZmRzLiAiCisgICAgICAgICAgICAgICAgIlBsZWFzZSwgcmVwb3J0IGF0IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvLiAiCisgICAgICAgICAgICAgICAgIkRhdGEgdG8gcmVwb3J0OiBTaXplIHRyaWVkOiAlZCwgYWN0dWFsIHNpemUgd3JpdHRlbjogJWQuIiwKKyAgICAgICAgICAgICAgICBzaXplLCBuKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ludGVybmFsX2RldnBvbGxfcmVnaXN0ZXIoZGV2cG9sbE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIGludCByZW1vdmUpCit7CisgICAgUHlPYmplY3QgKm87CisgICAgaW50IGZkLCBldmVudHMgPSBQT0xMSU4gfCBQT0xMUFJJIHwgUE9MTE9VVDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xpOnJlZ2lzdGVyIiwgJm8sICZldmVudHMpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZkID0gUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcihvKTsKKyAgICBpZiAoZmQgPT0gLTEpIHJldHVybiBOVUxMOworCisgICAgaWYgKHJlbW92ZSkgeworICAgICAgICBzZWxmLT5mZHNbc2VsZi0+bl9mZHNdLmZkID0gZmQ7CisgICAgICAgIHNlbGYtPmZkc1tzZWxmLT5uX2Zkc10uZXZlbnRzID0gUE9MTFJFTU9WRTsKKworICAgICAgICBpZiAoKytzZWxmLT5uX2ZkcyA9PSBzZWxmLT5tYXhfbl9mZHMpIHsKKyAgICAgICAgICAgIGlmIChkZXZwb2xsX2ZsdXNoKHNlbGYpKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgc2VsZi0+ZmRzW3NlbGYtPm5fZmRzXS5mZCA9IGZkOworICAgIHNlbGYtPmZkc1tzZWxmLT5uX2Zkc10uZXZlbnRzID0gZXZlbnRzOworCisgICAgaWYgKCsrc2VsZi0+bl9mZHMgPT0gc2VsZi0+bWF4X25fZmRzKSB7CisgICAgICAgIGlmIChkZXZwb2xsX2ZsdXNoKHNlbGYpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihkZXZwb2xsX3JlZ2lzdGVyX2RvYywKKyJyZWdpc3RlcihmZCBbLCBldmVudG1hc2tdICkgLT4gTm9uZVxuXG5cCitSZWdpc3RlciBhIGZpbGUgZGVzY3JpcHRvciB3aXRoIHRoZSBwb2xsaW5nIG9iamVjdC5cblwKK2ZkIC0tIGVpdGhlciBhbiBpbnRlZ2VyLCBvciBhbiBvYmplY3Qgd2l0aCBhIGZpbGVubygpIG1ldGhvZCByZXR1cm5pbmcgYW5cblwKKyAgICAgIGludC5cblwKK2V2ZW50cyAtLSBhbiBvcHRpb25hbCBiaXRtYXNrIGRlc2NyaWJpbmcgdGhlIHR5cGUgb2YgZXZlbnRzIHRvIGNoZWNrIGZvciIpOworCitzdGF0aWMgUHlPYmplY3QgKgorZGV2cG9sbF9yZWdpc3RlcihkZXZwb2xsT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gaW50ZXJuYWxfZGV2cG9sbF9yZWdpc3RlcihzZWxmLCBhcmdzLCAwKTsKK30KKworUHlEb2NfU1RSVkFSKGRldnBvbGxfbW9kaWZ5X2RvYywKKyJtb2RpZnkoZmRbLCBldmVudG1hc2tdKSAtPiBOb25lXG5cblwKK01vZGlmeSBhIHBvc3NpYmxlIGFscmVhZHkgcmVnaXN0ZXJlZCBmaWxlIGRlc2NyaXB0b3IuXG5cCitmZCAtLSBlaXRoZXIgYW4gaW50ZWdlciwgb3IgYW4gb2JqZWN0IHdpdGggYSBmaWxlbm8oKSBtZXRob2QgcmV0dXJuaW5nIGFuXG5cCisgICAgICBpbnQuXG5cCitldmVudHMgLS0gYW4gb3B0aW9uYWwgYml0bWFzayBkZXNjcmliaW5nIHRoZSB0eXBlIG9mIGV2ZW50cyB0byBjaGVjayBmb3IiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2RldnBvbGxfbW9kaWZ5KGRldnBvbGxPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBpbnRlcm5hbF9kZXZwb2xsX3JlZ2lzdGVyKHNlbGYsIGFyZ3MsIDEpOworfQorCisKK1B5RG9jX1NUUlZBUihkZXZwb2xsX3VucmVnaXN0ZXJfZG9jLAorInVucmVnaXN0ZXIoZmQpIC0+IE5vbmVcblxuXAorUmVtb3ZlIGEgZmlsZSBkZXNjcmlwdG9yIGJlaW5nIHRyYWNrZWQgYnkgdGhlIHBvbGxpbmcgb2JqZWN0LiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorZGV2cG9sbF91bnJlZ2lzdGVyKGRldnBvbGxPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvKQoreworICAgIGludCBmZDsKKworICAgIGZkID0gUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvciggbyApOworICAgIGlmIChmZCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzZWxmLT5mZHNbc2VsZi0+bl9mZHNdLmZkID0gZmQ7CisgICAgc2VsZi0+ZmRzW3NlbGYtPm5fZmRzXS5ldmVudHMgPSBQT0xMUkVNT1ZFOworCisgICAgaWYgKCsrc2VsZi0+bl9mZHMgPT0gc2VsZi0+bWF4X25fZmRzKSB7CisgICAgICAgIGlmIChkZXZwb2xsX2ZsdXNoKHNlbGYpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihkZXZwb2xsX3BvbGxfZG9jLAorInBvbGwoIFt0aW1lb3V0XSApIC0+IGxpc3Qgb2YgKGZkLCBldmVudCkgMi10dXBsZXNcblxuXAorUG9sbHMgdGhlIHNldCBvZiByZWdpc3RlcmVkIGZpbGUgZGVzY3JpcHRvcnMsIHJldHVybmluZyBhIGxpc3QgY29udGFpbmluZyBcblwKK2FueSBkZXNjcmlwdG9ycyB0aGF0IGhhdmUgZXZlbnRzIG9yIGVycm9ycyB0byByZXBvcnQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZXZwb2xsX3BvbGwoZGV2cG9sbE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgc3RydWN0IGR2cG9sbCBkdnA7CisgICAgUHlPYmplY3QgKnJlc3VsdF9saXN0ID0gTlVMTCwgKnRvdXQgPSBOVUxMOworICAgIGludCBwb2xsX3Jlc3VsdCwgaTsKKyAgICBsb25nIHRpbWVvdXQ7CisgICAgUHlPYmplY3QgKnZhbHVlLCAqbnVtMSwgKm51bTI7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJwb2xsIiwgMCwgMSwgJnRvdXQpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIENoZWNrIHZhbHVlcyBmb3IgdGltZW91dCAqLworICAgIGlmICh0b3V0ID09IE5VTEwgfHwgdG91dCA9PSBQeV9Ob25lKQorICAgICAgICB0aW1lb3V0ID0gLTE7CisgICAgZWxzZSBpZiAoIVB5TnVtYmVyX0NoZWNrKHRvdXQpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIGFuIGludGVnZXIgb3IgTm9uZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHRvdXQgPSBQeU51bWJlcl9Mb25nKHRvdXQpOworICAgICAgICBpZiAoIXRvdXQpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgdGltZW91dCA9IFB5TG9uZ19Bc0xvbmcodG91dCk7CisgICAgICAgIFB5X0RFQ1JFRih0b3V0KTsKKyAgICAgICAgaWYgKHRpbWVvdXQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICgodGltZW91dCA8IC0xKSB8fCAodGltZW91dCA+IElOVF9NQVgpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgaXMgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChkZXZwb2xsX2ZsdXNoKHNlbGYpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGR2cC5kcF9mZHMgPSBzZWxmLT5mZHM7CisgICAgZHZwLmRwX25mZHMgPSBzZWxmLT5tYXhfbl9mZHM7CisgICAgZHZwLmRwX3RpbWVvdXQgPSB0aW1lb3V0OworCisgICAgLyogY2FsbCBkZXZwb2xsKCkgKi8KKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcG9sbF9yZXN1bHQgPSBpb2N0bChzZWxmLT5mZF9kZXZwb2xsLCBEUF9QT0xMLCAmZHZwKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHBvbGxfcmVzdWx0IDwgMCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIGJ1aWxkIHRoZSByZXN1bHQgbGlzdCAqLworCisgICAgcmVzdWx0X2xpc3QgPSBQeUxpc3RfTmV3KHBvbGxfcmVzdWx0KTsKKyAgICBpZiAoIXJlc3VsdF9saXN0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHBvbGxfcmVzdWx0OyBpKyspIHsKKyAgICAgICAgICAgIG51bTEgPSBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+ZmRzW2ldLmZkKTsKKyAgICAgICAgICAgIG51bTIgPSBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+ZmRzW2ldLnJldmVudHMpOworICAgICAgICAgICAgaWYgKChudW0xID09IE5VTEwpIHx8IChudW0yID09IE5VTEwpKSB7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihudW0xKTsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKG51bTIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YWx1ZSA9IFB5VHVwbGVfUGFjaygyLCBudW0xLCBudW0yKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihudW0xKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihudW0yKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBpZiAoKFB5TGlzdF9TZXRJdGVtKHJlc3VsdF9saXN0LCBpLCB2YWx1ZSkpID09IC0xKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdF9saXN0OworCisgIGVycm9yOgorICAgIFB5X0RFQ1JFRihyZXN1bHRfbGlzdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBkZXZwb2xsX21ldGhvZHNbXSA9IHsKKyAgICB7InJlZ2lzdGVyIiwgICAgICAgIChQeUNGdW5jdGlvbilkZXZwb2xsX3JlZ2lzdGVyLAorICAgICBNRVRIX1ZBUkFSR1MsICBkZXZwb2xsX3JlZ2lzdGVyX2RvY30sCisgICAgeyJtb2RpZnkiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pZGV2cG9sbF9tb2RpZnksCisgICAgIE1FVEhfVkFSQVJHUywgIGRldnBvbGxfbW9kaWZ5X2RvY30sCisgICAgeyJ1bnJlZ2lzdGVyIiwgICAgICAoUHlDRnVuY3Rpb24pZGV2cG9sbF91bnJlZ2lzdGVyLAorICAgICBNRVRIX08sICAgICAgICBkZXZwb2xsX3VucmVnaXN0ZXJfZG9jfSwKKyAgICB7InBvbGwiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilkZXZwb2xsX3BvbGwsCisgICAgIE1FVEhfVkFSQVJHUywgIGRldnBvbGxfcG9sbF9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitzdGF0aWMgZGV2cG9sbE9iamVjdCAqCituZXdEZXZQb2xsT2JqZWN0KHZvaWQpCit7CisgICAgZGV2cG9sbE9iamVjdCAqc2VsZjsKKyAgICBpbnQgZmRfZGV2cG9sbCwgbGltaXRfcmVzdWx0OworICAgIHN0cnVjdCBwb2xsZmQgKmZkczsKKyAgICBzdHJ1Y3QgcmxpbWl0IGxpbWl0OworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIC8qCisgICAgKiogSWYgd2UgdHJ5IHRvIHByb2Nlc3MgbW9yZSB0aGF0IGdldHJsaW1pdCgpCisgICAgKiogZmRzLCB0aGUga2VybmVsIHdpbGwgZ2l2ZSBhbiBlcnJvciwgc28KKyAgICAqKiB3ZSBzZXQgdGhlIGxpbWl0IGhlcmUuIEl0IGlzIGEgZHluYW1pYworICAgICoqIHZhbHVlLCBiZWNhdXNlIHdlIGNhbiBjaGFuZ2UgcmxpbWl0KCkgYW55dGltZS4KKyAgICAqLworICAgIGxpbWl0X3Jlc3VsdCA9IGdldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmbGltaXQpOworICAgIGlmIChsaW1pdF9yZXN1bHQgIT0gLTEpCisgICAgICAgIGZkX2RldnBvbGwgPSBvcGVuKCIvZGV2L3BvbGwiLCBPX1JEV1IpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAobGltaXRfcmVzdWx0ID09IC0xKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChmZF9kZXZwb2xsID09IC0xKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZShQeUV4Y19JT0Vycm9yLCAiL2Rldi9wb2xsIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZkcyA9IFB5TWVtX05FVyhzdHJ1Y3QgcG9sbGZkLCBsaW1pdC5ybGltX2N1cik7CisgICAgaWYgKGZkcyA9PSBOVUxMKSB7CisgICAgICAgIGNsb3NlKGZkX2RldnBvbGwpOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzZWxmID0gUHlPYmplY3RfTmV3KGRldnBvbGxPYmplY3QsICZkZXZwb2xsX1R5cGUpOworICAgIGlmIChzZWxmID09IE5VTEwpIHsKKyAgICAgICAgY2xvc2UoZmRfZGV2cG9sbCk7CisgICAgICAgIFB5TWVtX0RFTChmZHMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgc2VsZi0+ZmRfZGV2cG9sbCA9IGZkX2RldnBvbGw7CisgICAgc2VsZi0+bWF4X25fZmRzID0gbGltaXQucmxpbV9jdXI7CisgICAgc2VsZi0+bl9mZHMgPSAwOworICAgIHNlbGYtPmZkcyA9IGZkczsKKworICAgIHJldHVybiBzZWxmOworfQorCitzdGF0aWMgdm9pZAorZGV2cG9sbF9kZWFsbG9jKGRldnBvbGxPYmplY3QgKnNlbGYpCit7CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGNsb3NlKHNlbGYtPmZkX2RldnBvbGwpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBQeU1lbV9ERUwoc2VsZi0+ZmRzKTsKKworICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKK30KKworc3RhdGljIFB5VHlwZU9iamVjdCBkZXZwb2xsX1R5cGUgPSB7CisgICAgLyogVGhlIG9iX3R5cGUgZmllbGQgbXVzdCBiZSBpbml0aWFsaXplZCBpbiB0aGUgbW9kdWxlIGluaXQgZnVuY3Rpb24KKyAgICAgKiB0byBiZSBwb3J0YWJsZSB0byBXaW5kb3dzIHdpdGhvdXQgdXNpbmcgQysrLiAqLworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJzZWxlY3QuZGV2cG9sbCIsICAgICAgICAgICAvKnRwX25hbWUqLworICAgIHNpemVvZihkZXZwb2xsT2JqZWN0KSwgICAgICAvKnRwX2Jhc2ljc2l6ZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3RvcilkZXZwb2xsX2RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgLyp0cF9mbGFncyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZG9jKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF90cmF2ZXJzZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF93ZWFrbGlzdG9mZnNldCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQqLworICAgIGRldnBvbGxfbWV0aG9kcywgICAgICAgICAgICAvKnRwX21ldGhvZHMqLworfTsKKyNlbmRpZiAgLyogSEFWRV9TWVNfREVWUE9MTF9IICovCisKKworCiBQeURvY19TVFJWQVIocG9sbF9kb2MsCiAiUmV0dXJucyBhIHBvbGxpbmcgb2JqZWN0LCB3aGljaCBzdXBwb3J0cyByZWdpc3RlcmluZyBhbmRcblwKIHVucmVnaXN0ZXJpbmcgZmlsZSBkZXNjcmlwdG9ycywgYW5kIHRoZW4gcG9sbGluZyB0aGVtIGZvciBJL08gZXZlbnRzLiIpOwpAQCAtNjU4LDYgKzEwMDgsMTkgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbmV3UG9sbE9iamVjdCgpOwogfQogCisjaWZkZWYgSEFWRV9TWVNfREVWUE9MTF9ICitQeURvY19TVFJWQVIoZGV2cG9sbF9kb2MsCisiUmV0dXJucyBhIHBvbGxpbmcgb2JqZWN0LCB3aGljaCBzdXBwb3J0cyByZWdpc3RlcmluZyBhbmRcblwKK3VucmVnaXN0ZXJpbmcgZmlsZSBkZXNjcmlwdG9ycywgYW5kIHRoZW4gcG9sbGluZyB0aGVtIGZvciBJL08gZXZlbnRzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorc2VsZWN0X2RldnBvbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCit7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKW5ld0RldlBvbGxPYmplY3QoKTsKK30KKyNlbmRpZgorCisKICNpZmRlZiBfX0FQUExFX18KIC8qCiAgKiBPbiBzb21lIHN5c3RlbXMgcG9sbCgpIHNldHMgZXJybm8gb24gaW52YWxpZCBmaWxlIGRlc2NyaXB0b3JzLiBXZSB0ZXN0CkBAIC03MzMsMjAgKzEwOTYsMTAgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLW5ld1B5RXBvbGxfT2JqZWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgaW50IHNpemVoaW50LCBTT0NLRVQgZmQpCituZXdQeUVwb2xsX09iamVjdChQeVR5cGVPYmplY3QgKnR5cGUsIGludCBzaXplaGludCwgaW50IGZsYWdzLCBTT0NLRVQgZmQpCiB7CiAgICAgcHlFcG9sbF9PYmplY3QgKnNlbGY7CiAKLSAgICBpZiAoc2l6ZWhpbnQgPT0gLTEpIHsKLSAgICAgICAgc2l6ZWhpbnQgPSBGRF9TRVRTSVpFLTE7Ci0gICAgfQotICAgIGVsc2UgaWYgKHNpemVoaW50IDwgMSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJzaXplaGludCBtdXN0IGJlIGdyZWF0ZXIgemVybywgZ290ICVkIiwKLSAgICAgICAgICAgICAgICAgICAgIHNpemVoaW50KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCiAgICAgYXNzZXJ0KHR5cGUgIT0gTlVMTCAmJiB0eXBlLT50cF9hbGxvYyAhPSBOVUxMKTsKICAgICBzZWxmID0gKHB5RXBvbGxfT2JqZWN0ICopIHR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwogICAgIGlmIChzZWxmID09IE5VTEwpCkBAIC03NTQsNiArMTEwNywxMSBAQAogCiAgICAgaWYgKGZkID09IC0xKSB7CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBIQVZFX0VQT0xMX0NSRUFURTEKKyAgICAgICAgaWYgKGZsYWdzKQorICAgICAgICAgICAgc2VsZi0+ZXBmZCA9IGVwb2xsX2NyZWF0ZTEoZmxhZ3MpOworICAgICAgICBlbHNlCisjZW5kaWYKICAgICAgICAgc2VsZi0+ZXBmZCA9IGVwb2xsX2NyZWF0ZShzaXplaGludCk7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgfQpAQCAtNzYyLDcgKzExMjAsNyBAQAogICAgIH0KICAgICBpZiAoc2VsZi0+ZXBmZCA8IDApIHsKICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwpAQCAtNzcyLDE0ICsxMTMwLDE4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcHllcG9sbF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgaW50IHNpemVoaW50ID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzaXplaGludCIsIE5VTEx9OworICAgIGludCBmbGFncyA9IDAsIHNpemVoaW50ID0gRkRfU0VUU0laRSAtIDE7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzaXplaGludCIsICJmbGFncyIsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxpOmVwb2xsIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaXplaGludCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxpaTplcG9sbCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2l6ZWhpbnQsICZmbGFncykpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzaXplaGludCA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBzaXplaGludCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKLSAgICByZXR1cm4gbmV3UHlFcG9sbF9PYmplY3QodHlwZSwgc2l6ZWhpbnQsIC0xKTsKKyAgICByZXR1cm4gbmV3UHlFcG9sbF9PYmplY3QodHlwZSwgc2l6ZWhpbnQsIGZsYWdzLCAtMSk7CiB9CiAKIApAQCAtNzk1LDcgKzExNTcsNyBAQAogewogICAgIGVycm5vID0gcHllcG9sbF9pbnRlcm5hbF9jbG9zZShzZWxmKTsKICAgICBpZiAoZXJybm8gPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC04MzcsNyArMTE5OSw3IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmZyb21mZCIsICZmZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIG5ld1B5RXBvbGxfT2JqZWN0KChQeVR5cGVPYmplY3QqKWNscywgLTEsIGZkKTsKKyAgICByZXR1cm4gbmV3UHlFcG9sbF9PYmplY3QoKFB5VHlwZU9iamVjdCopY2xzLCBGRF9TRVRTSVpFIC0gMSwgMCwgZmQpOwogfQogCiBQeURvY19TVFJWQVIocHllcG9sbF9mcm9tZmRfZG9jLApAQCAtODg4LDcgKzEyNTAsNyBAQAogICAgIH0KIAogICAgIGlmIChyZXN1bHQgPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC05MTIsNyArMTI3NCw3IEBACiBQeURvY19TVFJWQVIocHllcG9sbF9yZWdpc3Rlcl9kb2MsCiAicmVnaXN0ZXIoZmRbLCBldmVudG1hc2tdKSAtPiBOb25lXG5cCiBcblwKLVJlZ2lzdGVycyBhIG5ldyBmZCBvciByYWlzZXMgYW4gSU9FcnJvciBpZiB0aGUgZmQgaXMgYWxyZWFkeSByZWdpc3RlcmVkLlxuXAorUmVnaXN0ZXJzIGEgbmV3IGZkIG9yIHJhaXNlcyBhbiBPU0Vycm9yIGlmIHRoZSBmZCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuXG5cCiBmZCBpcyB0aGUgdGFyZ2V0IGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgb3BlcmF0aW9uLlxuXAogZXZlbnRzIGlzIGEgYml0IHNldCBjb21wb3NlZCBvZiB0aGUgdmFyaW91cyBFUE9MTCBjb25zdGFudHM7IHRoZSBkZWZhdWx0XG5cCiBpcyBFUE9MTF9JTiB8IEVQT0xMX09VVCB8IEVQT0xMX1BSSS5cblwKQEAgLTEwMTEsNyArMTM3Myw3IEBACiAgICAgbmZkcyA9IGVwb2xsX3dhaXQoc2VsZi0+ZXBmZCwgZXZzLCBtYXhldmVudHMsIHRpbWVvdXQpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKG5mZHMgPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIApAQCAtMTA2Niw3ICsxNDI4LDcgQEAKIH07CiAKIFB5RG9jX1NUUlZBUihweWVwb2xsX2RvYywKLSJzZWxlY3QuZXBvbGwoW3NpemVoaW50PS0xXSlcblwKKyJzZWxlY3QuZXBvbGwoc2l6ZWhpbnQ9LTEsIGZsYWdzPTApXG5cCiBcblwKIFJldHVybnMgYW4gZXBvbGxpbmcgb2JqZWN0XG5cCiBcblwKQEAgLTE0MDIsNyArMTc2NCw3IEBACiAgICAgfQogICAgIGlmIChzZWxmLT5rcWZkIDwgMCkgewogICAgICAgICBQeV9ERUNSRUYoc2VsZik7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CkBAIC0xNDM0LDcgKzE3OTYsNyBAQAogewogICAgIGVycm5vID0ga3F1ZXVlX3F1ZXVlX2ludGVybmFsX2Nsb3NlKHNlbGYpOwogICAgIGlmIChlcnJubyA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTE0OTcsNyArMTg1OSw3IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgc3RydWN0IGtldmVudCAqZXZsID0gTlVMTDsKICAgICBzdHJ1Y3Qga2V2ZW50ICpjaGwgPSBOVUxMOwotICAgIHN0cnVjdCB0aW1lc3BlYyB0aW1lb3V0c3BlYzsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdGltZW91dDsKICAgICBzdHJ1Y3QgdGltZXNwZWMgKnB0aW1lb3V0c3BlYzsKIAogICAgIGlmIChzZWxmLT5rcWZkIDwgMCkKQEAgLTE1MTcsMjggKzE4NzksMTYgQEAKICAgICAgICAgcHRpbWVvdXRzcGVjID0gTlVMTDsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlOdW1iZXJfQ2hlY2sob3RpbWVvdXQpKSB7Ci0gICAgICAgIGRvdWJsZSB0aW1lb3V0OwotICAgICAgICBsb25nIHNlY29uZHM7CisgICAgICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXNwZWMob3RpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRpbWVvdXQudHZfc2VjLCAmdGltZW91dC50dl9uc2VjKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgICAgIHRpbWVvdXQgPSBQeUZsb2F0X0FzRG91YmxlKG90aW1lb3V0KTsKLSAgICAgICAgaWYgKHRpbWVvdXQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAodGltZW91dCA+IChkb3VibGUpTE9OR19NQVgpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IHBlcmlvZCB0b28gbG9uZyIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHRpbWVvdXQgPCAwKSB7CisgICAgICAgIGlmICh0aW1lb3V0LnR2X3NlYyA8IDApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IG11c3QgYmUgcG9zaXRpdmUgb3IgTm9uZSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLQotICAgICAgICBzZWNvbmRzID0gKGxvbmcpdGltZW91dDsKLSAgICAgICAgdGltZW91dCA9IHRpbWVvdXQgLSAoZG91YmxlKXNlY29uZHM7Ci0gICAgICAgIHRpbWVvdXRzcGVjLnR2X3NlYyA9IHNlY29uZHM7Ci0gICAgICAgIHRpbWVvdXRzcGVjLnR2X25zZWMgPSAobG9uZykodGltZW91dCAqIDFFOSk7Ci0gICAgICAgIHB0aW1lb3V0c3BlYyA9ICZ0aW1lb3V0c3BlYzsKKyAgICAgICAgcHRpbWVvdXRzcGVjID0gJnRpbWVvdXQ7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLApAQCAtMTcxNSw2ICsyMDY1LDExIEBACiB9OwogCiAjZW5kaWYgLyogSEFWRV9LUVVFVUUgKi8KKworCisKKworCiAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KIAogUHlEb2NfU1RSVkFSKHNlbGVjdF9kb2MsCkBAIC0xNzQ2LDYgKzIxMDEsOSBAQAogI2lmIGRlZmluZWQoSEFWRV9QT0xMKSAmJiAhZGVmaW5lZChIQVZFX0JST0tFTl9QT0xMKQogICAgIHsicG9sbCIsICAgICAgICAgICAgc2VsZWN0X3BvbGwsICAgIE1FVEhfTk9BUkdTLCAgICBwb2xsX2RvY30sCiAjZW5kaWYgLyogSEFWRV9QT0xMICovCisjaWZkZWYgSEFWRV9TWVNfREVWUE9MTF9ICisgICAgeyJkZXZwb2xsIiwgICAgICAgICBzZWxlY3RfZGV2cG9sbCwgTUVUSF9OT0FSR1MsICAgIGRldnBvbGxfZG9jfSwKKyNlbmRpZgogICAgIHswLCAgICAgICAgIDB9LCAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTE3NjgsNiArMjEyNiw5IEBACiAgICAgTlVMTAogfTsKIAorCisKKwogUHlNT0RJTklUX0ZVTkMKIFB5SW5pdF9zZWxlY3Qodm9pZCkKIHsKQEAgLTE3NzYsOSArMjEzNyw4IEBACiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBTZWxlY3RFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigic2VsZWN0LmVycm9yIiwgTlVMTCwgTlVMTCk7Ci0gICAgUHlfSU5DUkVGKFNlbGVjdEVycm9yKTsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImVycm9yIiwgU2VsZWN0RXJyb3IpOworICAgIFB5X0lOQ1JFRihQeUV4Y19PU0Vycm9yKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImVycm9yIiwgUHlFeGNfT1NFcnJvcik7CiAKICNpZmRlZiBQSVBFX0JVRgogI2lmZGVmIEhBVkVfQlJPS0VOX1BJUEVfQlVGCkBAIC0xODI1LDYgKzIxODUsMTEgQEAKICAgICB9CiAjZW5kaWYgLyogSEFWRV9QT0xMICovCiAKKyNpZmRlZiBIQVZFX1NZU19ERVZQT0xMX0gKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZkZXZwb2xsX1R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKKwogI2lmZGVmIEhBVkVfRVBPTEwKICAgICBQeV9UWVBFKCZweUVwb2xsX1R5cGUpID0gJlB5VHlwZV9UeXBlOwogICAgIGlmIChQeVR5cGVfUmVhZHkoJnB5RXBvbGxfVHlwZSkgPCAwKQpAQCAtMTg0OSw2ICsyMjE0LDEwIEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVQT0xMV1JOT1JNIiwgRVBPTExXUk5PUk0pOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFUE9MTFdSQkFORCIsIEVQT0xMV1JCQU5EKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiRVBPTExNU0ciLCBFUE9MTE1TRyk7CisKKyNpZmRlZiBFUE9MTF9DTE9FWEVDCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVQT0xMX0NMT0VYRUMiLCBFUE9MTF9DTE9FWEVDKTsKKyNlbmRpZgogI2VuZGlmIC8qIEhBVkVfRVBPTEwgKi8KIAogI2lmZGVmIEhBVkVfS1FVRVVFCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NoYTFtb2R1bGUuYyBiL01vZHVsZXMvc2hhMW1vZHVsZS5jCmluZGV4IGIyNWJkNDQuLjA5Yjg3ZWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2hhMW1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2hhMW1vZHVsZS5jCkBAIC0xODQsNyArMTg0LDggQEAKICAgIEluaXRpYWxpemUgdGhlIGhhc2ggc3RhdGUKICAgIEBwYXJhbSBzaGExICAgVGhlIGhhc2ggc3RhdGUgeW91IHdpc2ggdG8gaW5pdGlhbGl6ZQogKi8KLXZvaWQgc2hhMV9pbml0KHN0cnVjdCBzaGExX3N0YXRlICpzaGExKQorc3RhdGljIHZvaWQKK3NoYTFfaW5pdChzdHJ1Y3Qgc2hhMV9zdGF0ZSAqc2hhMSkKIHsKICAgIGFzc2VydChzaGExICE9IE5VTEwpOwogICAgc2hhMS0+c3RhdGVbMF0gPSAweDY3NDUyMzAxVUw7CkBAIC0yMDIsNyArMjAzLDggQEAKICAgIEBwYXJhbSBpbiAgICAgVGhlIGRhdGEgdG8gaGFzaAogICAgQHBhcmFtIGlubGVuICBUaGUgbGVuZ3RoIG9mIHRoZSBkYXRhIChvY3RldHMpCiAqLwotdm9pZCBzaGExX3Byb2Nlc3Moc3RydWN0IHNoYTFfc3RhdGUgKnNoYTEsCitzdGF0aWMgdm9pZAorc2hhMV9wcm9jZXNzKHN0cnVjdCBzaGExX3N0YXRlICpzaGExLAogICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIFB5X3NzaXplX3QgaW5sZW4pCiB7CiAgICAgUHlfc3NpemVfdCBuOwpAQCAtMjE4LDcgKzIyMCw3IEBACiAgICAgICAgICAgIGluICAgICAgICAgICAgICs9IFNIQTFfQkxPQ0tTSVpFOwogICAgICAgICAgICBpbmxlbiAgICAgICAgICAtPSBTSEExX0JMT0NLU0laRTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgbiA9IE1JTihpbmxlbiwgKFNIQTFfQkxPQ0tTSVpFIC0gc2hhMS0+Y3VybGVuKSk7CisgICAgICAgICAgIG4gPSBNSU4oaW5sZW4sIChQeV9zc2l6ZV90KShTSEExX0JMT0NLU0laRSAtIHNoYTEtPmN1cmxlbikpOwogICAgICAgICAgICBtZW1jcHkoc2hhMS0+YnVmICsgc2hhMS0+Y3VybGVuLCBpbiwgKHNpemVfdCluKTsKICAgICAgICAgICAgc2hhMS0+Y3VybGVuICAgKz0gbjsKICAgICAgICAgICAgaW4gICAgICAgICAgICAgKz0gbjsKQEAgLTIzNyw3ICsyMzksOCBAQAogICAgQHBhcmFtIHNoYTEgIFRoZSBoYXNoIHN0YXRlCiAgICBAcGFyYW0gb3V0IFtvdXRdIFRoZSBkZXN0aW5hdGlvbiBvZiB0aGUgaGFzaCAoMjAgYnl0ZXMpCiAqLwotdm9pZCBzaGExX2RvbmUoc3RydWN0IHNoYTFfc3RhdGUgKnNoYTEsIHVuc2lnbmVkIGNoYXIgKm91dCkKK3N0YXRpYyB2b2lkCitzaGExX2RvbmUoc3RydWN0IHNoYTFfc3RhdGUgKnNoYTEsIHVuc2lnbmVkIGNoYXIgKm91dCkKIHsKICAgICBpbnQgaTsKIApAQCAtMzUyLDcgKzM1NSw3IEBACiAgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbU0hBMV9ESUdFU1RTSVpFXTsKICAgICBzdHJ1Y3Qgc2hhMV9zdGF0ZSB0ZW1wOwogICAgIFB5T2JqZWN0ICpyZXR2YWw7Ci0gICAgUHlfVU5JQ09ERSAqaGV4X2RpZ2VzdDsKKyAgICBQeV9VQ1MxICpoZXhfZGlnZXN0OwogICAgIGludCBpLCBqOwogCiAgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCkBAIC0zNjAsMjUgKzM2MywyMiBAQAogICAgIHNoYTFfZG9uZSgmdGVtcCwgZGlnZXN0KTsKIAogICAgIC8qIENyZWF0ZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXR2YWwgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgU0hBMV9ESUdFU1RTSVpFICogMik7CisgICAgcmV0dmFsID0gUHlVbmljb2RlX05ldyhTSEExX0RJR0VTVFNJWkUgKiAyLCAxMjcpOwogICAgIGlmICghcmV0dmFsKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJldHZhbCk7Ci0gICAgaWYgKCFoZXhfZGlnZXN0KSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBoZXhfZGlnZXN0ID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmV0dmFsKTsKIAogICAgIC8qIE1ha2UgaGV4IHZlcnNpb24gb2YgdGhlIGRpZ2VzdCAqLwogICAgIGZvcihpPWo9MDsgaTxTSEExX0RJR0VTVFNJWkU7IGkrKykgewotICAgICAgICBjaGFyIGM7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gPj4gNCkgJiAweGY7Ci0gICAgICAgIGMgPSAoYz45KSA/IGMrJ2EnLTEwIDogYyArICcwJzsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gYzsKKyAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgICAgICBjID0gKGRpZ2VzdFtpXSAmIDB4Zik7Ci0gICAgICAgIGMgPSAoYz45KSA/IGMrJ2EnLTEwIDogYyArICcwJzsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gYzsKKyAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgIH0KKyNpZmRlZiBQeV9ERUJVRworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmV0dmFsLCAxKSk7CisjZW5kaWYKICAgICByZXR1cm4gcmV0dmFsOwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NoYTI1Nm1vZHVsZS5jIGIvTW9kdWxlcy9zaGEyNTZtb2R1bGUuYwppbmRleCA4NjE3MjEwLi45ZjZiNDE2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NoYTI1Nm1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2hhMjU2bW9kdWxlLmMKQEAgLTQ0NSw3ICs0NDUsNyBAQAogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQV9ESUdFU1RTSVpFXTsKICAgICBTSEFvYmplY3QgdGVtcDsKICAgICBQeU9iamVjdCAqcmV0dmFsOwotICAgIFB5X1VOSUNPREUgKmhleF9kaWdlc3Q7CisgICAgUHlfVUNTMSAqaGV4X2RpZ2VzdDsKICAgICBpbnQgaSwgajsKIAogICAgIC8qIEdldCB0aGUgcmF3IChiaW5hcnkpIGRpZ2VzdCB2YWx1ZSAqLwpAQCAtNDUzLDI1ICs0NTMsMjIgQEAKICAgICBzaGFfZmluYWwoZGlnZXN0LCAmdGVtcCk7CiAKICAgICAvKiBDcmVhdGUgYSBuZXcgc3RyaW5nICovCi0gICAgcmV0dmFsID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNlbGYtPmRpZ2VzdHNpemUgKiAyKTsKKyAgICByZXR2YWwgPSBQeVVuaWNvZGVfTmV3KHNlbGYtPmRpZ2VzdHNpemUgKiAyLCAxMjcpOwogICAgIGlmICghcmV0dmFsKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJldHZhbCk7Ci0gICAgaWYgKCFoZXhfZGlnZXN0KSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBoZXhfZGlnZXN0ID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmV0dmFsKTsKIAogICAgIC8qIE1ha2UgaGV4IHZlcnNpb24gb2YgdGhlIGRpZ2VzdCAqLwogICAgIGZvcihpPWo9MDsgaTxzZWxmLT5kaWdlc3RzaXplOyBpKyspIHsKLSAgICAgICAgY2hhciBjOworICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldID4+IDQpICYgMHhmOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICB9CisjaWZkZWYgUHlfREVCVUcKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJldHZhbCwgMSkpOworI2VuZGlmCiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYyBiL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKaW5kZXggMGZhYWY1Yy4uNTUzNmZkNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jCkBAIC01MTEsNyArNTExLDcgQEAKICAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEFfRElHRVNUU0laRV07CiAgICAgU0hBb2JqZWN0IHRlbXA7CiAgICAgUHlPYmplY3QgKnJldHZhbDsKLSAgICBQeV9VTklDT0RFICpoZXhfZGlnZXN0OworICAgIFB5X1VDUzEgKmhleF9kaWdlc3Q7CiAgICAgaW50IGksIGo7CiAKICAgICAvKiBHZXQgdGhlIHJhdyAoYmluYXJ5KSBkaWdlc3QgdmFsdWUgKi8KQEAgLTUxOSwyNSArNTE5LDIyIEBACiAgICAgc2hhNTEyX2ZpbmFsKGRpZ2VzdCwgJnRlbXApOwogCiAgICAgLyogQ3JlYXRlIGEgbmV3IHN0cmluZyAqLwotICAgIHJldHZhbCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzZWxmLT5kaWdlc3RzaXplICogMik7CisgICAgcmV0dmFsID0gUHlVbmljb2RlX05ldyhzZWxmLT5kaWdlc3RzaXplICogMiwgMTI3KTsKICAgICBpZiAoIXJldHZhbCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGhleF9kaWdlc3QgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXR2YWwpOwotICAgIGlmICghaGV4X2RpZ2VzdCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJldHZhbCk7CiAKICAgICAvKiBNYWtlIGhleCB2ZXJzaW9uIG9mIHRoZSBkaWdlc3QgKi8KICAgICBmb3IgKGk9aj0wOyBpPHNlbGYtPmRpZ2VzdHNpemU7IGkrKykgewotICAgICAgICBjaGFyIGM7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gPj4gNCkgJiAweGY7Ci0gICAgICAgIGMgPSAoYz45KSA/IGMrJ2EnLTEwIDogYyArICcwJzsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gYzsKKyAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgICAgICBjID0gKGRpZ2VzdFtpXSAmIDB4Zik7Ci0gICAgICAgIGMgPSAoYz45KSA/IGMrJ2EnLTEwIDogYyArICcwJzsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gYzsKKyAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgIH0KKyNpZmRlZiBQeV9ERUJVRworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmV0dmFsLCAxKSk7CisjZW5kaWYKICAgICByZXR1cm4gcmV0dmFsOwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jIGIvTW9kdWxlcy9zaWduYWxtb2R1bGUuYwppbmRleCA5Y2FlNDU0Li40MWFjYmZhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKQEAgLTQsNiArNCw5IEBACiAvKiBYWFggU2lnbmFscyBzaG91bGQgYmUgcmVjb3JkZWQgcGVyIHRocmVhZCwgbm93IHdlIGhhdmUgdGhyZWFkIHN0YXRlLiAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCisjaWZuZGVmIE1TX1dJTkRPV1MKKyNpbmNsdWRlICJwb3NpeG1vZHVsZS5oIgorI2VuZGlmCiAKICNpZmRlZiBNU19XSU5ET1dTCiAjaW5jbHVkZSA8V2luZG93cy5oPgpAQCAtMjIsNiArMjUsMTQgQEAKICNpbmNsdWRlIDxzeXMvdGltZS5oPgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9TSUdNQVNLKSAmJiAhZGVmaW5lZChIQVZFX0JST0tFTl9QVEhSRUFEX1NJR01BU0spCisjICBkZWZpbmUgUFlQVEhSRUFEX1NJR01BU0sKKyNlbmRpZgorCisjaWYgZGVmaW5lZChQWVBUSFJFQURfU0lHTUFTSykgJiYgZGVmaW5lZChIQVZFX1BUSFJFQURfSCkKKyMgIGluY2x1ZGUgPHB0aHJlYWQuaD4KKyNlbmRpZgorCiAjaWZuZGVmIFNJR19FUlIKICNkZWZpbmUgU0lHX0VSUiAoKFB5T1Nfc2lnaGFuZGxlcl90KSgtMSkpCiAjZW5kaWYKQEAgLTEwMSw2ICsxMTIsMTAgQEAKIAogc3RhdGljIFB5T1Nfc2lnaGFuZGxlcl90IG9sZF9zaWdpbnRoYW5kbGVyID0gU0lHX0RGTDsKIAorI2lmZGVmIE1TX1dJTkRPV1MKK3N0YXRpYyBIQU5ETEUgc2lnaW50X2V2ZW50ID0gTlVMTDsKKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9HRVRJVElNRVIKIHN0YXRpYyBQeU9iamVjdCAqSXRpbWVyRXJyb3I7CiAKQEAgLTE2OCwxNSArMTgzLDE5IEBACiBzdGF0aWMgdm9pZAogdHJpcF9zaWduYWwoaW50IHNpZ19udW0pCiB7CisgICAgdW5zaWduZWQgY2hhciBieXRlOworCiAgICAgSGFuZGxlcnNbc2lnX251bV0udHJpcHBlZCA9IDE7CisgICAgaWYgKHdha2V1cF9mZCAhPSAtMSkgeworICAgICAgICBieXRlID0gKHVuc2lnbmVkIGNoYXIpc2lnX251bTsKKyAgICAgICAgd3JpdGUod2FrZXVwX2ZkLCAmYnl0ZSwgMSk7CisgICAgfQogICAgIGlmIChpc190cmlwcGVkKQogICAgICAgICByZXR1cm47CiAgICAgLyogU2V0IGlzX3RyaXBwZWQgYWZ0ZXIgc2V0dGluZyAudHJpcHBlZCwgYXMgaXQgZ2V0cwogICAgICAgIGNsZWFyZWQgaW4gUHlFcnJfQ2hlY2tTaWduYWxzKCkgYmVmb3JlIC50cmlwcGVkLiAqLwogICAgIGlzX3RyaXBwZWQgPSAxOwogICAgIFB5X0FkZFBlbmRpbmdDYWxsKGNoZWNrc2lnbmFsc193aXRoYXJnLCBOVUxMKTsKLSAgICBpZiAod2FrZXVwX2ZkICE9IC0xKQotICAgICAgICB3cml0ZSh3YWtldXBfZmQsICJcMCIsIDEpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjE3LDYgKzIzNiwxMSBAQAogICAgIC8qIElzc3VlICMxMDMxMTogYXN5bmNocm9ub3VzbHkgZXhlY3V0aW5nIHNpZ25hbCBoYW5kbGVycyBzaG91bGQgbm90CiAgICAgICAgbXV0YXRlIGVycm5vIHVuZGVyIHRoZSBmZWV0IG9mIHVuc3VzcGVjdGluZyBDIGNvZGUuICovCiAgICAgZXJybm8gPSBzYXZlX2Vycm5vOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChzaWdfbnVtID09IFNJR0lOVCkKKyAgICAgICAgU2V0RXZlbnQoc2lnaW50X2V2ZW50KTsKKyNlbmRpZgogfQogCiAKQEAgLTMxMyw3ICszMzcsNyBAQAogICAgIGVsc2UKICAgICAgICAgZnVuYyA9IHNpZ25hbF9oYW5kbGVyOwogICAgIGlmIChQeU9TX3NldHNpZyhzaWdfbnVtLCBmdW5jKSA9PSBTSUdfRVJSKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19SdW50aW1lRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBvbGRfaGFuZGxlciA9IEhhbmRsZXJzW3NpZ19udW1dLmZ1bmM7CkBAIC0zODIsNyArNDA2LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChzaWdpbnRlcnJ1cHQoc2lnX251bSwgZmxhZyk8MCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfUnVudGltZUVycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTQwNiw3ICs0MzAsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAjZW5kaWYKLSAgICBpZiAoZmQgIT0gLTEgJiYgZnN0YXQoZmQsICZidWYpICE9IDApIHsKKyAgICBpZiAoZmQgIT0gLTEgJiYgKCFfUHlWZXJpZnlfZmQoZmQpIHx8IGZzdGF0KGZkLCAmYnVmKSAhPSAwKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgZmQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNDk1LDYgKzUxOSwzNDEgQEAKIFJldHVybnMgY3VycmVudCB2YWx1ZSBvZiBnaXZlbiBpdGltZXIuIik7CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoUFlQVEhSRUFEX1NJR01BU0spIHx8IGRlZmluZWQoSEFWRV9TSUdXQUlUKSB8fCBcCisgICAgICAgIGRlZmluZWQoSEFWRV9TSUdXQUlUSU5GTykgfHwgZGVmaW5lZChIQVZFX1NJR1RJTUVEV0FJVCkKKy8qIENvbnZlcnQgYW4gaXRlcmFibGUgdG8gYSBzaWdzZXQuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByZXR1cm4gLTEgYW5kIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4gKi8KKworc3RhdGljIGludAoraXRlcmFibGVfdG9fc2lnc2V0KFB5T2JqZWN0ICppdGVyYWJsZSwgc2lnc2V0X3QgKm1hc2spCit7CisgICAgaW50IHJlc3VsdCA9IC0xOworICAgIFB5T2JqZWN0ICppdGVyYXRvciwgKml0ZW07CisgICAgbG9uZyBzaWdudW07CisgICAgaW50IGVycjsKKworICAgIHNpZ2VtcHR5c2V0KG1hc2spOworCisgICAgaXRlcmF0b3IgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHdoaWxlICgxKQorICAgIHsKKyAgICAgICAgaXRlbSA9IFB5SXRlcl9OZXh0KGl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHNpZ251bSA9IFB5TG9uZ19Bc0xvbmcoaXRlbSk7CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgaWYgKHNpZ251bSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKDAgPCBzaWdudW0gJiYgc2lnbnVtIDwgTlNJRykKKyAgICAgICAgICAgIGVyciA9IHNpZ2FkZHNldChtYXNrLCAoaW50KXNpZ251bSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVyciA9IDE7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWwgbnVtYmVyICVsZCBvdXQgb2YgcmFuZ2UiLCBzaWdudW0pOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXN1bHQgPSAwOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGl0ZXJhdG9yKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFBZUFRIUkVBRF9TSUdNQVNLKSB8fCBkZWZpbmVkKEhBVkVfU0lHUEVORElORykKK3N0YXRpYyBQeU9iamVjdCoKK3NpZ3NldF90b19zZXQoc2lnc2V0X3QgbWFzaykKK3sKKyAgICBQeU9iamVjdCAqc2lnbnVtLCAqcmVzdWx0OworICAgIGludCBzaWc7CisKKyAgICByZXN1bHQgPSBQeVNldF9OZXcoMCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZvciAoc2lnID0gMTsgc2lnIDwgTlNJRzsgc2lnKyspIHsKKyAgICAgICAgaWYgKHNpZ2lzbWVtYmVyKCZtYXNrLCBzaWcpICE9IDEpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvKiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgaXQgaXMgYSBtZW1iZXIgYnkgYWRkaW5nIHRoZSBzaWduYWwgdG8KKyAgICAgICAgICAgdGhlIHJlc3VsdCBsaXN0LiAgSWdub3JlIHRoZSBvdGhlciBjYXNlcyBiZWNhdXNlIHRoZXkgbWVhbiB0aGUKKyAgICAgICAgICAgc2lnbmFsIGlzbid0IGEgbWVtYmVyIG9mIHRoZSBtYXNrIG9yIHRoZSBzaWduYWwgd2FzIGludmFsaWQsCisgICAgICAgICAgIGFuZCBhbiBpbnZhbGlkIHNpZ25hbCBtdXN0IGhhdmUgYmVlbiBvdXIgZmF1bHQgaW4gY29uc3RydWN0aW5nCisgICAgICAgICAgIHRoZSBsb29wIGJvdW5kYXJpZXMuICovCisgICAgICAgIHNpZ251bSA9IFB5TG9uZ19Gcm9tTG9uZyhzaWcpOworICAgICAgICBpZiAoc2lnbnVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5U2V0X0FkZChyZXN1bHQsIHNpZ251bSkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzaWdudW0pOworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYoc2lnbnVtKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCisjaWZkZWYgUFlQVEhSRUFEX1NJR01BU0sKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfcHRocmVhZF9zaWdtYXNrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgaG93OworICAgIFB5T2JqZWN0ICpzaWduYWxzOworICAgIHNpZ3NldF90IG1hc2ssIHByZXZpb3VzOworICAgIGludCBlcnI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnB0aHJlYWRfc2lnbWFzayIsICZob3csICZzaWduYWxzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoaXRlcmFibGVfdG9fc2lnc2V0KHNpZ25hbHMsICZtYXNrKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBlcnIgPSBwdGhyZWFkX3NpZ21hc2soaG93LCAmbWFzaywgJnByZXZpb3VzKTsKKyAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgZXJybm8gPSBlcnI7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogaWYgc2lnbmFscyB3YXMgdW5ibG9ja2VkLCBzaWduYWwgaGFuZGxlcnMgaGF2ZSBiZWVuIGNhbGxlZCAqLworICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gc2lnc2V0X3RvX3NldChwcmV2aW91cyk7Cit9CisKK1B5RG9jX1NUUlZBUihzaWduYWxfcHRocmVhZF9zaWdtYXNrX2RvYywKKyJwdGhyZWFkX3NpZ21hc2soaG93LCBtYXNrKSAtPiBvbGQgbWFza1xuXAorXG5cCitGZXRjaCBhbmQvb3IgY2hhbmdlIHRoZSBzaWduYWwgbWFzayBvZiB0aGUgY2FsbGluZyB0aHJlYWQuIik7CisjZW5kaWYgICAvKiAjaWZkZWYgUFlQVEhSRUFEX1NJR01BU0sgKi8KKworCisjaWZkZWYgSEFWRV9TSUdQRU5ESU5HCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ3BlbmRpbmcoUHlPYmplY3QgKnNlbGYpCit7CisgICAgaW50IGVycjsKKyAgICBzaWdzZXRfdCBtYXNrOworICAgIGVyciA9IHNpZ3BlbmRpbmcoJm1hc2spOworICAgIGlmIChlcnIpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgcmV0dXJuIHNpZ3NldF90b19zZXQobWFzayk7Cit9CisKK1B5RG9jX1NUUlZBUihzaWduYWxfc2lncGVuZGluZ19kb2MsCisic2lncGVuZGluZygpIC0+IGxpc3RcblwKK1xuXAorRXhhbWluZSBwZW5kaW5nIHNpZ25hbHMuIik7CisjZW5kaWYgICAvKiAjaWZkZWYgSEFWRV9TSUdQRU5ESU5HICovCisKKworI2lmZGVmIEhBVkVfU0lHV0FJVAorc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9zaWd3YWl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqc2lnbmFsczsKKyAgICBzaWdzZXRfdCBzZXQ7CisgICAgaW50IGVyciwgc2lnbnVtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnNpZ3dhaXQiLCAmc2lnbmFscykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGl0ZXJhYmxlX3RvX3NpZ3NldChzaWduYWxzLCAmc2V0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgZXJyID0gc2lnd2FpdCgmc2V0LCAmc2lnbnVtKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChlcnIpIHsKKyAgICAgICAgZXJybm8gPSBlcnI7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgfQorCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzaWdudW0pOworfQorCitQeURvY19TVFJWQVIoc2lnbmFsX3NpZ3dhaXRfZG9jLAorInNpZ3dhaXQoc2lnc2V0KSAtPiBzaWdudW1cblwKK1xuXAorV2FpdCBhIHNpZ25hbC4iKTsKKyNlbmRpZiAgIC8qICNpZmRlZiBIQVZFX1NJR1BFTkRJTkcgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TSUdXQUlUSU5GTykgfHwgZGVmaW5lZChIQVZFX1NJR1RJTUVEV0FJVCkKK3N0YXRpYyBpbnQgaW5pdGlhbGl6ZWQ7CitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9GaWVsZCBzdHJ1Y3Rfc2lnaW5mb19maWVsZHNbXSA9IHsKKyAgICB7InNpX3NpZ25vIiwgICAgICAgICJzaWduYWwgbnVtYmVyIn0sCisgICAgeyJzaV9jb2RlIiwgICAgICAgICAic2lnbmFsIGNvZGUifSwKKyAgICB7InNpX2Vycm5vIiwgICAgICAgICJlcnJubyBhc3NvY2lhdGVkIHdpdGggdGhpcyBzaWduYWwifSwKKyAgICB7InNpX3BpZCIsICAgICAgICAgICJzZW5kaW5nIHByb2Nlc3MgSUQifSwKKyAgICB7InNpX3VpZCIsICAgICAgICAgICJyZWFsIHVzZXIgSUQgb2Ygc2VuZGluZyBwcm9jZXNzIn0sCisgICAgeyJzaV9zdGF0dXMiLCAgICAgICAiZXhpdCB2YWx1ZSBvciBzaWduYWwifSwKKyAgICB7InNpX2JhbmQiLCAgICAgICAgICJiYW5kIGV2ZW50IGZvciBTSUdQT0xMIn0sCisgICAgezB9Cit9OworCitQeURvY19TVFJWQVIoc3RydWN0X3NpZ2luZm9fX2RvY19fLAorInN0cnVjdF9zaWdpbmZvOiBSZXN1bHQgZnJvbSBzaWd3YWl0aW5mbyBvciBzaWd0aW1lZHdhaXQuXG5cblwKK1RoaXMgb2JqZWN0IG1heSBiZSBhY2Nlc3NlZCBlaXRoZXIgYXMgYSB0dXBsZSBvZlxuXAorKHNpX3NpZ25vLCBzaV9jb2RlLCBzaV9lcnJubywgc2lfcGlkLCBzaV91aWQsIHNpX3N0YXR1cywgc2lfYmFuZCksXG5cCitvciB2aWEgdGhlIGF0dHJpYnV0ZXMgc2lfc2lnbm8sIHNpX2NvZGUsIGFuZCBzbyBvbi4iKTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRGVzYyBzdHJ1Y3Rfc2lnaW5mb19kZXNjID0geworICAgICJzaWduYWwuc3RydWN0X3NpZ2luZm8iLCAgICAgICAgICAgLyogbmFtZSAqLworICAgIHN0cnVjdF9zaWdpbmZvX19kb2NfXywgICAgICAgLyogZG9jICovCisgICAgc3RydWN0X3NpZ2luZm9fZmllbGRzLCAgICAgICAvKiBmaWVsZHMgKi8KKyAgICA3ICAgICAgICAgIC8qIG5faW5fc2VxdWVuY2UgKi8KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgU2lnaW5mb1R5cGU7CisKK3N0YXRpYyBQeU9iamVjdCAqCitmaWxsX3NpZ2luZm8oc2lnaW5mb190ICpzaSkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcoJlNpZ2luZm9UeXBlKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgMCwgUHlMb25nX0Zyb21Mb25nKChsb25nKShzaS0+c2lfc2lnbm8pKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDEsIFB5TG9uZ19Gcm9tTG9uZygobG9uZykoc2ktPnNpX2NvZGUpKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDIsIFB5TG9uZ19Gcm9tTG9uZygobG9uZykoc2ktPnNpX2Vycm5vKSkpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCAzLCBQeUxvbmdfRnJvbVBpZChzaS0+c2lfcGlkKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDQsIF9QeUxvbmdfRnJvbVVpZChzaS0+c2lfdWlkKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZygobG9uZykoc2ktPnNpX3N0YXR1cykpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgNiwgUHlMb25nX0Zyb21Mb25nKHNpLT5zaV9iYW5kKSk7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKworI2lmZGVmIEhBVkVfU0lHV0FJVElORk8KK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfc2lnd2FpdGluZm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpzaWduYWxzOworICAgIHNpZ3NldF90IHNldDsKKyAgICBzaWdpbmZvX3Qgc2k7CisgICAgaW50IGVycjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpzaWd3YWl0aW5mbyIsICZzaWduYWxzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoaXRlcmFibGVfdG9fc2lnc2V0KHNpZ25hbHMsICZzZXQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBlcnIgPSBzaWd3YWl0aW5mbygmc2V0LCAmc2kpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKGVyciA9PSAtMSkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKworICAgIHJldHVybiBmaWxsX3NpZ2luZm8oJnNpKTsKK30KKworUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWd3YWl0aW5mb19kb2MsCisic2lnd2FpdGluZm8oc2lnc2V0KSAtPiBzdHJ1Y3Rfc2lnaW5mb1xuXAorXG5cCitXYWl0IHN5bmNocm9ub3VzbHkgZm9yIGEgc2lnbmFsIHVudGlsIG9uZSBvZiB0aGUgc2lnbmFscyBpbiAqc2lnc2V0KiBpc1xuXAorZGVsaXZlcmVkLlxuXAorUmV0dXJucyBhIHN0cnVjdF9zaWdpbmZvIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNpZ25hbC4iKTsKKyNlbmRpZiAgIC8qICNpZmRlZiBIQVZFX1NJR1dBSVRJTkZPICovCisKKyNpZmRlZiBIQVZFX1NJR1RJTUVEV0FJVAorc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9zaWd0aW1lZHdhaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpzaWduYWxzLCAqdGltZW91dDsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgYnVmOworICAgIHNpZ3NldF90IHNldDsKKyAgICBzaWdpbmZvX3Qgc2k7CisgICAgaW50IGVycjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086c2lndGltZWR3YWl0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnNpZ25hbHMsICZ0aW1lb3V0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKHRpbWVvdXQsICZidWYudHZfc2VjLCAmYnVmLnR2X25zZWMpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChidWYudHZfc2VjIDwgMCB8fCBidWYudHZfbnNlYyA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ0aW1lb3V0IG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQoc2lnbmFscywgJnNldCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGVyciA9IHNpZ3RpbWVkd2FpdCgmc2V0LCAmc2ksICZidWYpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKGVyciA9PSAtMSkgeworICAgICAgICBpZiAoZXJybm8gPT0gRUFHQUlOKQorICAgICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgfQorCisgICAgcmV0dXJuIGZpbGxfc2lnaW5mbygmc2kpOworfQorCitQeURvY19TVFJWQVIoc2lnbmFsX3NpZ3RpbWVkd2FpdF9kb2MsCisic2lndGltZWR3YWl0KHNpZ3NldCwgKHRpbWVvdXRfc2VjLCB0aW1lb3V0X25zZWMpKSAtPiBzdHJ1Y3Rfc2lnaW5mb1xuXAorXG5cCitMaWtlIHNpZ3dhaXRpbmZvKCksIGJ1dCB3aXRoIGEgdGltZW91dCBzcGVjaWZpZWQgYXMgYSB0dXBsZSBvZiAoc2Vjb25kcyxcblwKK25hbm9zZWNvbmRzKS4iKTsKKyNlbmRpZiAgIC8qICNpZmRlZiBIQVZFX1NJR1RJTUVEV0FJVCAqLworCisKKyNpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9LSUxMKSAmJiBkZWZpbmVkKFdJVEhfVEhSRUFEKQorc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9wdGhyZWFkX2tpbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGxvbmcgdGlkOworICAgIGludCBzaWdudW07CisgICAgaW50IGVycjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibGk6cHRocmVhZF9raWxsIiwgJnRpZCwgJnNpZ251bSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZXJyID0gcHRocmVhZF9raWxsKChwdGhyZWFkX3QpdGlkLCBzaWdudW0pOworICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICBlcnJubyA9IGVycjsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiB0aGUgc2lnbmFsIG1heSBoYXZlIGJlZW4gc2VuZCB0byB0aGUgY3VycmVudCB0aHJlYWQgKi8KKyAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihzaWduYWxfcHRocmVhZF9raWxsX2RvYywKKyJwdGhyZWFkX2tpbGwodGhyZWFkX2lkLCBzaWdudW0pXG5cCitcblwKK1NlbmQgYSBzaWduYWwgdG8gYSB0aHJlYWQuIik7CisjZW5kaWYgICAvKiAjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfS0lMTCkgJiYgZGVmaW5lZChXSVRIX1RIUkVBRCkgKi8KKworCiAKIC8qIExpc3Qgb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSAqLwogc3RhdGljIFB5TWV0aG9kRGVmIHNpZ25hbF9tZXRob2RzW10gPSB7CkBAIC01MTUsMTAgKzg3NCwzNCBAQAogI2VuZGlmCiAjaWZkZWYgSEFWRV9QQVVTRQogICAgIHsicGF1c2UiLCAgICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3BhdXNlLAotICAgICBNRVRIX05PQVJHUyxwYXVzZV9kb2N9LAorICAgICBNRVRIX05PQVJHUywgcGF1c2VfZG9jfSwKICNlbmRpZgogICAgIHsiZGVmYXVsdF9pbnRfaGFuZGxlciIsIHNpZ25hbF9kZWZhdWx0X2ludF9oYW5kbGVyLAogICAgICBNRVRIX1ZBUkFSR1MsIGRlZmF1bHRfaW50X2hhbmRsZXJfZG9jfSwKKyNpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9LSUxMKSAmJiBkZWZpbmVkKFdJVEhfVEhSRUFEKQorICAgIHsicHRocmVhZF9raWxsIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3B0aHJlYWRfa2lsbCwKKyAgICAgTUVUSF9WQVJBUkdTLCBzaWduYWxfcHRocmVhZF9raWxsX2RvY30sCisjZW5kaWYKKyNpZmRlZiBQWVBUSFJFQURfU0lHTUFTSworICAgIHsicHRocmVhZF9zaWdtYXNrIiwgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3B0aHJlYWRfc2lnbWFzaywKKyAgICAgTUVUSF9WQVJBUkdTLCBzaWduYWxfcHRocmVhZF9zaWdtYXNrX2RvY30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NJR1BFTkRJTkcKKyAgICB7InNpZ3BlbmRpbmciLCAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9zaWdwZW5kaW5nLAorICAgICBNRVRIX05PQVJHUywgc2lnbmFsX3NpZ3BlbmRpbmdfZG9jfSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfU0lHV0FJVAorICAgIHsic2lnd2FpdCIsICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ3dhaXQsCisgICAgIE1FVEhfVkFSQVJHUywgc2lnbmFsX3NpZ3dhaXRfZG9jfSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfU0lHV0FJVElORk8KKyAgICB7InNpZ3dhaXRpbmZvIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9zaWd3YWl0aW5mbywKKyAgICAgTUVUSF9WQVJBUkdTLCBzaWduYWxfc2lnd2FpdGluZm9fZG9jfSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfU0lHVElNRURXQUlUCisgICAgeyJzaWd0aW1lZHdhaXQiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilzaWduYWxfc2lndGltZWR3YWl0LAorICAgICBNRVRIX1ZBUkFSR1MsIHNpZ25hbF9zaWd0aW1lZHdhaXRfZG9jfSwKKyNlbmRpZgogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTU4Nyw2ICs5NzAsMTUgQEAKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorI2lmIGRlZmluZWQoSEFWRV9TSUdXQUlUSU5GTykgfHwgZGVmaW5lZChIQVZFX1NJR1RJTUVEV0FJVCkKKyAgICBpZiAoIWluaXRpYWxpemVkKQorICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZTaWdpbmZvVHlwZSwgJnN0cnVjdF9zaWdpbmZvX2Rlc2MpOworCisgICAgUHlfSU5DUkVGKChQeU9iamVjdCopICZTaWdpbmZvVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJzdHJ1Y3Rfc2lnaW5mbyIsIChQeU9iamVjdCopICZTaWdpbmZvVHlwZSk7CisgICAgaW5pdGlhbGl6ZWQgPSAxOworI2VuZGlmCisKICAgICAvKiBBZGQgc29tZSBzeW1ib2xpYyBjb25zdGFudHMgdG8gdGhlIG1vZHVsZSAqLwogICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwogCkBAIC02MDMsNiArOTk1LDE5IEBACiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICBQeV9ERUNSRUYoeCk7CiAKKyNpZmRlZiBTSUdfQkxPQ0sKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHX0JMT0NLKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKKyNlbmRpZgorI2lmZGVmIFNJR19VTkJMT0NLCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR19VTkJMT0NLKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKKyNlbmRpZgorI2lmZGVmIFNJR19TRVRNQVNLCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR19TRVRNQVNLKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKKyNlbmRpZgorCiAgICAgeCA9IEludEhhbmRsZXIgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhkLCAiZGVmYXVsdF9pbnRfaGFuZGxlciIpOwogICAgIGlmICgheCkKICAgICAgICAgZ290byBmaW5hbGx5OwpAQCAtODU1LDYgKzEyNjAsMTEgQEAKICAgICBQeV9ERUNSRUYoeCk7CiAjZW5kaWYKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAvKiBDcmVhdGUgbWFudWFsLXJlc2V0IGV2ZW50LCBpbml0aWFsbHkgdW5zZXQgKi8KKyAgICBzaWdpbnRfZXZlbnQgPSBDcmVhdGVFdmVudChOVUxMLCBUUlVFLCBGQUxTRSwgRkFMU0UpOworI2VuZGlmCisKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIG0gPSBOVUxMOwpAQCAtOTYwLDkgKzEzNzAsOCBAQAogdm9pZAogUHlPU19Jbml0SW50ZXJydXB0cyh2b2lkKQogewotICAgIFB5T2JqZWN0ICptID0gUHlJbml0X3NpZ25hbCgpOworICAgIFB5T2JqZWN0ICptID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJzaWduYWwiKTsKICAgICBpZiAobSkgewotICAgICAgICBfUHlJbXBvcnRfRml4dXBCdWlsdGluKG0sICJzaWduYWwiKTsKICAgICAgICAgUHlfREVDUkVGKG0pOwogICAgIH0KIH0KQEAgLTEwMTcsMyArMTQyNiwyNSBAQAogICAgIF9QeUltcG9ydF9SZUluaXRMb2NrKCk7CiAjZW5kaWYKIH0KKworaW50CitfUHlPU19Jc01haW5UaHJlYWQodm9pZCkKK3sKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIHJldHVybiBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCkgPT0gbWFpbl90aHJlYWQ7CisjZWxzZQorICAgIHJldHVybiAxOworI2VuZGlmCit9CisKKyNpZmRlZiBNU19XSU5ET1dTCit2b2lkICpfUHlPU19TaWdpbnRFdmVudCh2b2lkKQoreworICAgIC8qIFJldHVybnMgYSBtYW51YWwtcmVzZXQgZXZlbnQgd2hpY2ggZ2V0cyB0cmlwcGVkIHdoZW5ldmVyCisgICAgICAgU0lHSU5UIGlzIHJlY2VpdmVkLgorCisgICAgICAgUHl0aG9uLmggZG9lcyBub3QgaW5jbHVkZSB3aW5kb3dzLmggc28gd2UgZG8gY2Fubm90IHVzZSBIQU5ETEUKKyAgICAgICBhcyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhpcyBmdW5jdGlvbi4gIFdlIHVzZSB2b2lkKiBpbnN0ZWFkLiAqLworICAgIHJldHVybiBzaWdpbnRfZXZlbnQ7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmMgYi9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jCmluZGV4IGUwMjc2MjUuLmE2ZjhjNWEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYwpAQCAtNDIsNiArNDIsOSBAQAogLSBzb2NrZXQuaW5ldF9udG9hKHBhY2tlZCBJUCkgLT4gSVAgYWRkcmVzcyBzdHJpbmcKIC0gc29ja2V0LmdldGRlZmF1bHR0aW1lb3V0KCkgLT4gTm9uZSB8IGZsb2F0CiAtIHNvY2tldC5zZXRkZWZhdWx0dGltZW91dChOb25lIHwgZmxvYXQpCistIHNvY2tldC5pZl9uYW1laW5kZXgoKSAtPiBsaXN0IG9mIHR1cGxlcyAoaWZfaW5kZXgsIGlmX25hbWUpCistIHNvY2tldC5pZl9uYW1ldG9pbmRleChuYW1lKSAtPiBjb3JyZXNwb25kaW5nIGludGVyZmFjZSBpbmRleAorLSBzb2NrZXQuaWZfaW5kZXh0b25hbWUoaW5kZXgpIC0+IGNvcnJlc3BvbmRpbmcgaW50ZXJmYWNlIG5hbWUKIC0gYW4gSW50ZXJuZXQgc29ja2V0IGFkZHJlc3MgaXMgYSBwYWlyIChob3N0bmFtZSwgcG9ydCkKICAgd2hlcmUgaG9zdG5hbWUgY2FuIGJlIGFueXRoaW5nIHJlY29nbml6ZWQgYnkgZ2V0aG9zdGJ5bmFtZSgpCiAgIChpbmNsdWRpbmcgdGhlIGRkLmRkLmRkLmRkIG5vdGF0aW9uKSBhbmQgcG9ydCBpcyBpbiBob3N0IGJ5dGUgb3JkZXIKQEAgLTEzMyw2ICsxMzYsOSBAQAogc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWUpIC0tIHNldCBzb2NrZXQgb3B0aW9uc1xuXAogc2V0dGltZW91dChOb25lIHwgZmxvYXQpIC0tIHNldCBvciBjbGVhciB0aGUgdGltZW91dFxuXAogc2h1dGRvd24oaG93KSAtLSBzaHV0IGRvd24gdHJhZmZpYyBpbiBvbmUgb3IgYm90aCBkaXJlY3Rpb25zXG5cCitpZl9uYW1laW5kZXgoKSAtLSByZXR1cm4gYWxsIG5ldHdvcmsgaW50ZXJmYWNlIGluZGljZXMgYW5kIG5hbWVzXG5cCitpZl9uYW1ldG9pbmRleChuYW1lKSAtLSByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJmYWNlIGluZGV4XG5cCitpZl9pbmRleHRvbmFtZShpbmRleCkgLS0gcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIGludGVyZmFjZSBuYW1lXG5cCiBcblwKICBbKl0gbm90IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zISIpOwogCkBAIC0xNTAsMTIgKzE1NiwxNiBAQAogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl82X0FSRwogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKF9fT3BlbkJTRF9fKQorIyBpbmNsdWRlIDxzeXMvdWlvLmg+CisjZW5kaWYKKwogI2lmbmRlZiBXSVRIX1RIUkVBRAogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUgogI2VuZGlmCiAKICNpZmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUgotIyBpZiBkZWZpbmVkKF9BSVgpIHx8IGRlZmluZWQoX19vc2ZfXykKKyMgaWYgZGVmaW5lZChfQUlYKQogIyAgZGVmaW5lIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHCiAjIGVsaWYgZGVmaW5lZChfX3N1bikgfHwgZGVmaW5lZChfX3NnaSkKICMgIGRlZmluZSBIQVZFX0dFVEhPU1RCWU5BTUVfUl81X0FSRwpAQCAtMjA4LDYgKzIxOCwxMSBAQAogIyAgaW5jbHVkZSA8aW9jdGwuaD4KICNlbmRpZgogCisjaWZkZWYgX19BUFBMRV9fCisjIGluY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2VuZGlmCisKKwogI2lmIGRlZmluZWQoUFlPU19PUzIpCiAjIGRlZmluZSAgSU5DTF9ET1MKICMgZGVmaW5lICBJTkNMX0RPU0VSUk9SUwpAQCAtMjUwLDYgKzI2NSwxNCBAQAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9ORVRfSUZfSAorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2VuZGlmCisKIC8qIEdlbmVyaWMgc29ja2V0IG9iamVjdCBkZWZpbml0aW9ucyBhbmQgaW5jbHVkZXMgKi8KICNkZWZpbmUgUHlTb2NrZXRfQlVJTERJTkdfU09DS0VUCiAjaW5jbHVkZSAic29ja2V0bW9kdWxlLmgiCkBAIC0yNjAsNiArMjgzLDcgQEAKIAogLyogTm9uLU1TIFdJTkRPV1MgaW5jbHVkZXMgKi8KICMgaW5jbHVkZSA8bmV0ZGIuaD4KKyMgaW5jbHVkZSA8dW5pc3RkLmg+CiAKIC8qIEhlYWRlcnMgbmVlZGVkIGZvciBpbmV0X250b2EoKSBhbmQgaW5ldF9hZGRyKCkgKi8KICMgaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX1ZBQ1BQKQpAQCAtMzU3LDcgKzM4MSw3IEBACiAgICAgICAgIHJldHVybiBJTlZBTElEX1NPQ0tFVDsKIAogICAgIHJldHVybiBXU0FTb2NrZXQoRlJPTV9QUk9UT0NPTF9JTkZPLCBGUk9NX1BST1RPQ09MX0lORk8sCi0gICAgICAgICAgICAgICAgICAgICBGUk9NX1BST1RPQ09MX0lORk8sICZpbmZvLCAwLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgIEZST01fUFJPVE9DT0xfSU5GTywgJmluZm8sIDAsIFdTQV9GTEFHX09WRVJMQVBQRUQpOwogfQogI2RlZmluZSBTT0NLRVRDTE9TRSBjbG9zZXNvY2tldAogI2Vsc2UKQEAgLTM2Niw2ICszOTAsNyBAQAogI2VuZGlmCiAKICNpZmRlZiBNU19XSU4zMgorI3VuZGVmIEVBRk5PU1VQUE9SVAogI2RlZmluZSBFQUZOT1NVUFBPUlQgV1NBRUFGTk9TVVBQT1JUCiAjZGVmaW5lIHNucHJpbnRmIF9zbnByaW50ZgogI2VuZGlmCkBAIC00MTcsNyArNDQyLDggQEAKICNkZWZpbmUgU0VHTUVOVF9TSVpFICgzMiAqIDEwMjQgLTEpCiAjZW5kaWYKIAotI2RlZmluZSBTQVMyU0EoeCkgICAgICAgKChzdHJ1Y3Qgc29ja2FkZHIgKikoeCkpCisvKiBDb252ZXJ0ICJzb2NrX2FkZHJfdCAqIiB0byAic3RydWN0IHNvY2thZGRyICoiLiAqLworI2RlZmluZSBTQVMyU0EoeCkgICAgICAgKCYoKHgpLT5zYSkpCiAKIC8qCiAgKiBDb25zdGFudHMgZm9yIGdldG5hbWVpbmZvKCkKQEAgLTQzOCw3ICs0NjQsNiBAQAogCiAvKiBHbG9iYWwgdmFyaWFibGUgaG9sZGluZyB0aGUgZXhjZXB0aW9uIHR5cGUgZm9yIGVycm9ycyBkZXRlY3RlZAogICAgYnkgdGhpcyBtb2R1bGUgKGJ1dCBub3QgYXJndW1lbnQgdHlwZSBvciBtZW1vcnkgZXJyb3JzLCBldGMuKS4gKi8KLXN0YXRpYyBQeU9iamVjdCAqc29ja2V0X2Vycm9yOwogc3RhdGljIFB5T2JqZWN0ICpzb2NrZXRfaGVycm9yOwogc3RhdGljIFB5T2JqZWN0ICpzb2NrZXRfZ2FpZXJyb3I7CiBzdGF0aWMgUHlPYmplY3QgKnNvY2tldF90aW1lb3V0OwpAQCAtNDU1LDYgKzQ4MCwxNyBAQAogI2luY2x1ZGUgPHN5cy9wb2xsLmg+CiAjZW5kaWYKIAorLyogTGFyZ2VzdCB2YWx1ZSB0byB0cnkgdG8gc3RvcmUgaW4gYSBzb2NrbGVuX3QgKHVzZWQgd2hlbiBoYW5kbGluZworICAgYW5jaWxsYXJ5IGRhdGEpLiAgUE9TSVggcmVxdWlyZXMgc29ja2xlbl90IHRvIGhvbGQgYXQgbGVhc3QKKyAgICgyKiozMSktMSBhbmQgcmVjb21tZW5kcyBhZ2FpbnN0IHN0b3JpbmcgbGFyZ2VyIHZhbHVlcywgYnV0CisgICBzb2NrbGVuX3Qgd2FzIG9yaWdpbmFsbHkgaW50IGluIHRoZSBCU0QgaW50ZXJmYWNlLCBzbyB0byBiZSBvbiB0aGUKKyAgIHNhZmUgc2lkZSB3ZSB1c2UgdGhlIHNtYWxsZXIgb2YgKDIqKjMxKS0xIGFuZCBJTlRfTUFYLiAqLworI2lmIElOVF9NQVggPiAweDdmZmZmZmZmCisjZGVmaW5lIFNPQ0tMRU5fVF9MSU1JVCAweDdmZmZmZmZmCisjZWxzZQorI2RlZmluZSBTT0NLTEVOX1RfTElNSVQgSU5UX01BWAorI2VuZGlmCisKICNpZmRlZiBIQVZFX1BPTEwKIC8qIEluc3RlYWQgb2Ygc2VsZWN0KCksIHdlJ2xsIHVzZSBwb2xsKCkgc2luY2UgcG9sbCgpIHdvcmtzIG9uIGFueSBmZC4gKi8KICNkZWZpbmUgSVNfU0VMRUNUQUJMRShzKSAxCkBAIC00NjgsNyArNTA0LDcgQEAKIHN0YXRpYyBQeU9iamVjdCoKIHNlbGVjdF9lcnJvcih2b2lkKQogewotICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJ1bmFibGUgdG8gc2VsZWN0IG9uIHNvY2tldCIpOworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAidW5hYmxlIHRvIHNlbGVjdCBvbiBzb2NrZXQiKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtNDk1LDcgKzUzMSw3IEBACiAgICAgICAgcmVjb2duaXplcyB0aGUgZXJyb3IgY29kZXMgdXNlZCBieSBib3RoIEdldExhc3RFcnJvcigpIGFuZAogICAgICAgIFdTQUdldExhc3RFcnJvciAqLwogICAgIGlmIChlcnJfbm8pCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0Vycihzb2NrZXRfZXJyb3IsIGVycl9ubyk7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19PU0Vycm9yLCBlcnJfbm8pOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiAhZGVmaW5lZChQWUNDX0dDQykKQEAgLTUyNiw3ICs1NjIsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgdiA9IFB5X0J1aWxkVmFsdWUoIihpcykiLCBteWVycm9yY29kZSwgb3V0YnVmKTsKICAgICAgICAgICAgIGlmICh2ICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3Qoc29ja2V0X2Vycm9yLCB2KTsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfT1NFcnJvciwgdik7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01MzQsNyArNTcwLDcgQEAKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oc29ja2V0X2Vycm9yKTsKKyAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogfQogCiAKQEAgLTg1MywxMyArODg5LDEzIEBACiAjZW5kaWYKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGZyZWVhZGRyaW5mbyhyZXMpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBhZGRyZXNzIGZhbWlseSIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXMtPmFpX25leHQpIHsKICAgICAgICAgICAgIGZyZWVhZGRyaW5mbyhyZXMpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICJ3aWxkY2FyZCByZXNvbHZlZCB0byBtdWx0aXBsZSBhZGRyZXNzIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KQEAgLTg3Miw3ICs5MDgsNyBAQAogICAgIGlmIChuYW1lWzBdID09ICc8JyAmJiBzdHJjbXAobmFtZSwgIjxicm9hZGNhc3Q+IikgPT0gMCkgewogICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbjsKICAgICAgICAgaWYgKGFmICE9IEFGX0lORVQgJiYgYWYgIT0gQUZfVU5TUEVDKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgImFkZHJlc3MgZmFtaWx5IG1pc21hdGNoZWQiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpAQCAtOTMwLDcgKzk2Niw3IEBACiAgICAgICAgIHJldHVybiAxNjsKICNlbmRpZgogICAgIGRlZmF1bHQ6Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJ1bmtub3duIGFkZHJlc3MgZmFtaWx5Iik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAidW5rbm93biBhZGRyZXNzIGZhbWlseSIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogfQpAQCAtOTc5LDcgKzEwMTUsNyBAQAogICAgICAgICBiZGFkZHItPmJbNV0gPSBiNTsKICAgICAgICAgcmV0dXJuIDY7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImJhZCBibHVldG9vdGggYWRkcmVzcyIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImJhZCBibHVldG9vdGggYWRkcmVzcyIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogfQpAQCAtMTA0NCw3ICsxMDgwLDcgQEAKICNlbmRpZiAvKiBsaW51eCAqLwogICAgICAgICB7CiAgICAgICAgICAgICAvKiByZWd1bGFyIE5VTEwtdGVybWluYXRlZCBzdHJpbmcgKi8KLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhhLT5zdW5fcGF0aCk7CisgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChhLT5zdW5fcGF0aCk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYgLyogQUZfVU5JWCAqLwpAQCAtMTE5MCw2ICsxMjI2LDQyIEBACiAgICAgfQogI2VuZGlmCiAKKyNpZmRlZiBBRl9DQU4KKyAgICBjYXNlIEFGX0NBTjoKKyAgICB7CisgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9jYW4gKmEgPSAoc3RydWN0IHNvY2thZGRyX2NhbiAqKWFkZHI7CisgICAgICAgIGNoYXIgKmlmbmFtZSA9ICIiOworICAgICAgICBzdHJ1Y3QgaWZyZXEgaWZyOworICAgICAgICAvKiBuZWVkIHRvIGxvb2sgdXAgaW50ZXJmYWNlIG5hbWUgZ2l2ZW4gaW5kZXggKi8KKyAgICAgICAgaWYgKGEtPmNhbl9pZmluZGV4KSB7CisgICAgICAgICAgICBpZnIuaWZyX2lmaW5kZXggPSBhLT5jYW5faWZpbmRleDsKKyAgICAgICAgICAgIGlmIChpb2N0bChzb2NrZmQsIFNJT0NHSUZOQU1FLCAmaWZyKSA9PSAwKQorICAgICAgICAgICAgICAgIGlmbmFtZSA9IGlmci5pZnJfbmFtZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPJmgiLCBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS0+Y2FuX2ZhbWlseSk7CisgICAgfQorI2VuZGlmCisKKyNpZmRlZiBQRl9TWVNURU0KKyAgICBjYXNlIFBGX1NZU1RFTToKKyAgICAgICAgc3dpdGNoKHByb3RvKSB7CisjaWZkZWYgU1lTUFJPVE9fQ09OVFJPTAorICAgICAgICBjYXNlIFNZU1BST1RPX0NPTlRST0w6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9jdGwgKmEgPSAoc3RydWN0IHNvY2thZGRyX2N0bCAqKWFkZHI7CisgICAgICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKElJKSIsIGEtPnNjX2lkLCBhLT5zY191bml0KTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBhZGRyZXNzIHR5cGUiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisjZW5kaWYKKwogICAgIC8qIE1vcmUgY2FzZXMgaGVyZS4uLiAqLwogCiAgICAgZGVmYXVsdDoKQEAgLTEyMjEsMTcgKzEyOTMsMjcgQEAKICAgICAgICAgc3RydWN0IHNvY2thZGRyX3VuKiBhZGRyOwogICAgICAgICBjaGFyICpwYXRoOwogICAgICAgICBpbnQgbGVuOwotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZ3MsICJzIyIsICZwYXRoLCAmbGVuKSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpbnQgcmV0dmFsID0gMDsKKworICAgICAgICAvKiBQRVAgMzgzLiAgTm90IHVzaW5nIFB5VW5pY29kZV9GU0NvbnZlcnRlciBzaW5jZSB3ZSBuZWVkIHRvCisgICAgICAgICAgIGFsbG93IGVtYmVkZGVkIG51bGxzIG9uIExpbnV4LiAqLworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZ3MpKSB7CisgICAgICAgICAgICBpZiAoKGFyZ3MgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KGFyZ3MpKSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5X0lOQ1JFRihhcmdzKTsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShhcmdzLCAieSMiLCAmcGF0aCwgJmxlbikpCisgICAgICAgICAgICBnb3RvIHVuaXhfb3V0OwogCiAgICAgICAgIGFkZHIgPSAoc3RydWN0IHNvY2thZGRyX3VuKilhZGRyX3JldDsKICNpZmRlZiBsaW51eAogICAgICAgICBpZiAobGVuID4gMCAmJiBwYXRoWzBdID09IDApIHsKICAgICAgICAgICAgIC8qIExpbnV4IGFic3RyYWN0IG5hbWVzcGFjZSBleHRlbnNpb24gKi8KICAgICAgICAgICAgIGlmIChsZW4gPiBzaXplb2YgYWRkci0+c3VuX3BhdGgpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUZfVU5JWCBwYXRoIHRvbyBsb25nIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgZ290byB1bml4X291dDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlCkBAIC0xMjM5LDkgKzEzMjEsOSBAQAogICAgICAgICB7CiAgICAgICAgICAgICAvKiByZWd1bGFyIE5VTEwtdGVybWluYXRlZCBzdHJpbmcgKi8KICAgICAgICAgICAgIGlmIChsZW4gPj0gc2l6ZW9mIGFkZHItPnN1bl9wYXRoKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFGX1VOSVggcGF0aCB0b28gbG9uZyIpOwotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIGdvdG8gdW5peF9vdXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhZGRyLT5zdW5fcGF0aFtsZW5dID0gMDsKICAgICAgICAgfQpAQCAtMTI1Miw3ICsxMzM0LDEwIEBACiAjZWxzZQogICAgICAgICAqbGVuX3JldCA9IGxlbiArIG9mZnNldG9mKHN0cnVjdCBzb2NrYWRkcl91biwgc3VuX3BhdGgpOwogI2VuZGlmCi0gICAgICAgIHJldHVybiAxOworICAgICAgICByZXR2YWwgPSAxOworICAgIHVuaXhfb3V0OgorICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgIHJldHVybiByZXR2YWw7CiAgICAgfQogI2VuZGlmIC8qIEFGX1VOSVggKi8KIApAQCAtMTI4MCw2ICsxMzY1LDExIEBACiAgICAgfQogI2VuZGlmCiAKKyNpZmRlZiBBRl9SRFMKKyAgICBjYXNlIEFGX1JEUzoKKyAgICAgICAgLyogUkRTIHNvY2tldHMgdXNlIHNvY2thZGRyX2luOiBmYWxsLXRocm91Z2ggKi8KKyNlbmRpZgorCiAgICAgY2FzZSBBRl9JTkVUOgogICAgIHsKICAgICAgICAgc3RydWN0IHNvY2thZGRyX2luKiBhZGRyOwpAQCAtMTM3Niw3ICsxNDY2LDcgQEAKICAgICAgICAgICAgIF9CVF9MMl9NRU1CKGFkZHIsIGZhbWlseSkgPSBBRl9CTFVFVE9PVEg7CiAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNpIiwgJnN0cmFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJl9CVF9MMl9NRU1CKGFkZHIsIHBzbSkpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRyYXJnOiAiCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid3JvbmcgZm9ybWF0Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CkBAIC0xMzk1LDcgKzE0ODUsNyBAQAogICAgICAgICAgICAgX0JUX1JDX01FTUIoYWRkciwgZmFtaWx5KSA9IEFGX0JMVUVUT09USDsKICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic2kiLCAmc3RyYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmX0JUX1JDX01FTUIoYWRkciwgY2hhbm5lbCkpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRyYXJnOiAiCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid3JvbmcgZm9ybWF0Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CkBAIC0xNDEzLDcgKzE1MDMsNyBAQAogCiAgICAgICAgICAgICAgICAgICAgICAgICBfQlRfSENJX01FTUIoYWRkciwgZmFtaWx5KSA9IEFGX0JMVUVUT09USDsKICAgICAgICAgICAgIGlmIChzdHJhZGRyID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6ICIKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImdldHNvY2thZGRyYXJnOiAiCiAgICAgICAgICAgICAgICAgICAgICJ3cm9uZyBmb3JtYXQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KQEAgLTE0MjIsNyArMTUxMiw3IEBACiAjZWxzZQogICAgICAgICAgICAgX0JUX0hDSV9NRU1CKGFkZHIsIGZhbWlseSkgPSBBRl9CTFVFVE9PVEg7CiAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiLCAmX0JUX0hDSV9NRU1CKGFkZHIsIGRldikpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRyYXJnOiAiCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid3JvbmcgZm9ybWF0Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CkBAIC0xNDM5LDcgKzE1MjksNyBAQAogICAgICAgICAgICAgYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHJfc2NvICopYWRkcl9yZXQ7CiAgICAgICAgICAgICBfQlRfU0NPX01FTUIoYWRkciwgZmFtaWx5KSA9IEFGX0JMVUVUT09USDsKICAgICAgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhhcmdzKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndyb25nIGZvcm1hdCIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQpAQCAtMTQ1Miw3ICsxNTQyLDcgQEAKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6IHVua25vd24gQmx1ZXRvb3RoIHByb3RvY29sIik7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImdldHNvY2thZGRyYXJnOiB1bmtub3duIEJsdWV0b290aCBwcm90b2NvbCIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTY0LDEwICsxNjU0LDExNiBAQAogICAgIH0KICNlbmRpZgogCisjaWZkZWYgQUZfQ0FOCisgICAgY2FzZSBBRl9DQU46CisgICAgICAgIHN3aXRjaCAocy0+c29ja19wcm90bykgeworICAgICAgICBjYXNlIENBTl9SQVc6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9jYW4gKmFkZHI7CisgICAgICAgICAgICBQeU9iamVjdCAqaW50ZXJmYWNlTmFtZTsKKyAgICAgICAgICAgIHN0cnVjdCBpZnJlcSBpZnI7CisgICAgICAgICAgICBhZGRyID0gKHN0cnVjdCBzb2NrYWRkcl9jYW4gKilhZGRyX3JldDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworCisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mIiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbnRlcmZhY2VOYW1lKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShpbnRlcmZhY2VOYW1lKTsKKworICAgICAgICAgICAgaWYgKGxlbiA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWZyLmlmcl9pZmluZGV4ID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobGVuIDwgc2l6ZW9mKGlmci5pZnJfbmFtZSkpIHsKKyAgICAgICAgICAgICAgICBzdHJuY3B5KGlmci5pZnJfbmFtZSwgUHlCeXRlc19BU19TVFJJTkcoaW50ZXJmYWNlTmFtZSksIHNpemVvZihpZnIuaWZyX25hbWUpKTsKKyAgICAgICAgICAgICAgICBpZnIuaWZyX25hbWVbKHNpemVvZihpZnIuaWZyX25hbWUpKS0xXSA9ICdcMCc7CisgICAgICAgICAgICAgICAgaWYgKGlvY3RsKHMtPnNvY2tfZmQsIFNJT0NHSUZJTkRFWCwgJmlmcikgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIHMtPmVycm9yaGFuZGxlcigpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaW50ZXJmYWNlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBRl9DQU4gaW50ZXJmYWNlIG5hbWUgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaW50ZXJmYWNlTmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFkZHItPmNhbl9mYW1pbHkgPSBBRl9DQU47CisgICAgICAgICAgICBhZGRyLT5jYW5faWZpbmRleCA9IGlmci5pZnJfaWZpbmRleDsKKworICAgICAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YoKmFkZHIpOworICAgICAgICAgICAgUHlfREVDUkVGKGludGVyZmFjZU5hbWUpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZXRzb2NrYWRkcmFyZzogdW5zdXBwb3J0ZWQgQ0FOIHByb3RvY29sIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICAKKyNpZmRlZiBQRl9TWVNURU0KKyAgICBjYXNlIFBGX1NZU1RFTToKKyAgICAgICAgc3dpdGNoIChzLT5zb2NrX3Byb3RvKSB7CisjaWZkZWYgU1lTUFJPVE9fQ09OVFJPTAorICAgICAgICBjYXNlIFNZU1BST1RPX0NPTlRST0w6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9jdGwgKmFkZHI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFkZHIgPSAoc3RydWN0IHNvY2thZGRyX2N0bCAqKWFkZHJfcmV0OworICAgICAgICAgICAgYWRkci0+c2NfZmFtaWx5ID0gQUZfU1lTVEVNOworICAgICAgICAgICAgYWRkci0+c3Nfc3lzYWRkciA9IEFGX1NZU19DT05UUk9MOyAKKworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhhcmdzKSkgeworICAgICAgICAgICAgICAgIHN0cnVjdCBjdGxfaW5mbyBpbmZvOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjdGxfbmFtZTsKKworICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2UoYXJncywgIk8mIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmY3RsX25hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKGN0bF9uYW1lKSA+IHNpemVvZihpbmZvLmN0bF9uYW1lKSkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm92aWRlZCBzdHJpbmcgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGN0bF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0cm5jcHkoaW5mby5jdGxfbmFtZSwgUHlCeXRlc19BU19TVFJJTkcoY3RsX25hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGluZm8uY3RsX25hbWUpKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY3RsX25hbWUpOworCisgICAgICAgICAgICAgICAgaWYgKGlvY3RsKHMtPnNvY2tfZmQsIENUTElPQ0dJTkZPLCAmaW5mbykpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgZmluZCBrZXJuZWwgY29udHJvbCB3aXRoIHByb3ZpZGVkIG5hbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGFkZHItPnNjX2lkID0gaW5mby5jdGxfaWQ7CisgICAgICAgICAgICAgICAgYWRkci0+c2NfdW5pdCA9IDA7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJJSSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoYWRkci0+c2NfaWQpLCAmKGFkZHItPnNjX3VuaXQpKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgc3RyIG9yIHR1cGxlIG9mIHR3byBpbnRzIik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YoKmFkZHIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdldHNvY2thZGRyYXJnOiB1bnN1cHBvcnRlZCBQRl9TWVNURU0gcHJvdG9jb2wiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisjZW5kaWYKKwogICAgIC8qIE1vcmUgY2FzZXMgaGVyZS4uLiAqLwogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRyYXJnOiBiYWQgZmFtaWx5Iik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6IGJhZCBmYW1pbHkiKTsKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICB9CkBAIC0xNTk4LDYgKzE3OTQsMTEgQEAKICAgICAgICB9CiAjZW5kaWYKIAorI2lmZGVmIEFGX1JEUworICAgIGNhc2UgQUZfUkRTOgorICAgICAgICAvKiBSRFMgc29ja2V0cyB1c2Ugc29ja2FkZHJfaW46IGZhbGwtdGhyb3VnaCAqLworI2VuZGlmCisKICAgICBjYXNlIEFGX0lORVQ6CiAgICAgewogICAgICAgICAqbGVuX3JldCA9IHNpemVvZiAoc3RydWN0IHNvY2thZGRyX2luKTsKQEAgLTE2MzMsNyArMTgzNCw3IEBACiAgICAgICAgICAgICByZXR1cm4gMTsKICNlbmRpZgogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRybGVuOiAiCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImdldHNvY2thZGRybGVuOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVua25vd24gQlQgcHJvdG9jb2wiKTsKICAgICAgICAgICAgIHJldHVybiAwOwogCkBAIC0xNjU3LDE2ICsxODU4LDE1MSBAQAogICAgIH0KICNlbmRpZgogCisjaWZkZWYgQUZfQ0FOCisgICAgY2FzZSBBRl9DQU46CisgICAgeworICAgICAgICAqbGVuX3JldCA9IHNpemVvZiAoc3RydWN0IHNvY2thZGRyX2Nhbik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgCisjaWZkZWYgUEZfU1lTVEVNCisgICAgY2FzZSBQRl9TWVNURU06CisgICAgICAgIHN3aXRjaChzLT5zb2NrX3Byb3RvKSB7CisjaWZkZWYgU1lTUFJPVE9fQ09OVFJPTAorICAgICAgICBjYXNlIFNZU1BST1RPX0NPTlRST0w6CisgICAgICAgICAgICAqbGVuX3JldCA9IHNpemVvZiAoc3RydWN0IHNvY2thZGRyX2N0bCk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyNlbmRpZgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmxlbjogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIFBGX1NZU1RFTSBwcm90b2NvbCIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgLyogTW9yZSBjYXNlcyBoZXJlLi4uICovCiAKICAgICBkZWZhdWx0OgotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAiZ2V0c29ja2FkZHJsZW46IGJhZCBmYW1pbHkiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmxlbjogYmFkIGZhbWlseSIpOwogICAgICAgICByZXR1cm4gMDsKIAogICAgIH0KIH0KIAogCisvKiBTdXBwb3J0IGZ1bmN0aW9ucyBmb3IgdGhlIHNlbmRtc2coKSBhbmQgcmVjdm1zZ1tfaW50b10oKSBtZXRob2RzLgorICAgQ3VycmVudGx5LCB0aGVzZSBtZXRob2RzIGFyZSBvbmx5IGNvbXBpbGVkIGlmIHRoZSBSRkMgMjI5Mi8zNTQyCisgICBDTVNHX0xFTigpIG1hY3JvIGlzIGF2YWlsYWJsZS4gIE9sZGVyIHN5c3RlbXMgc2VlbSB0byBoYXZlIHVzZWQKKyAgIHNpemVvZihzdHJ1Y3QgY21zZ2hkcikgKyAobGVuZ3RoKSB3aGVyZSBDTVNHX0xFTigpIGlzIHVzZWQgbm93LCBzbworICAgaXQgbWF5IGJlIHBvc3NpYmxlIHRvIGRlZmluZSBDTVNHX0xFTigpIHRoYXQgd2F5IGlmIGl0J3Mgbm90CisgICBwcm92aWRlZC4gIFNvbWUgYXJjaGl0ZWN0dXJlcyBtaWdodCBuZWVkIGV4dHJhIHBhZGRpbmcgYWZ0ZXIgdGhlCisgICBjbXNnaGRyLCBob3dldmVyLCBhbmQgQ01TR19MRU4oKSB3b3VsZCBoYXZlIHRvIHRha2UgYWNjb3VudCBvZgorICAgdGhpcy4gKi8KKyNpZmRlZiBDTVNHX0xFTgorLyogSWYgbGVuZ3RoIGlzIGluIHJhbmdlLCBzZXQgKnJlc3VsdCB0byBDTVNHX0xFTihsZW5ndGgpIGFuZCByZXR1cm4KKyAgIHRydWU7IG90aGVyd2lzZSwgcmV0dXJuIGZhbHNlLiAqLworc3RhdGljIGludAorZ2V0X0NNU0dfTEVOKHNpemVfdCBsZW5ndGgsIHNpemVfdCAqcmVzdWx0KQoreworICAgIHNpemVfdCB0bXA7CisKKyAgICBpZiAobGVuZ3RoID4gKFNPQ0tMRU5fVF9MSU1JVCAtIENNU0dfTEVOKDApKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgdG1wID0gQ01TR19MRU4obGVuZ3RoKTsKKyAgICBpZiAodG1wID4gU09DS0xFTl9UX0xJTUlUIHx8IHRtcCA8IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgKnJlc3VsdCA9IHRtcDsKKyAgICByZXR1cm4gMTsKK30KKworI2lmZGVmIENNU0dfU1BBQ0UKKy8qIElmIGxlbmd0aCBpcyBpbiByYW5nZSwgc2V0ICpyZXN1bHQgdG8gQ01TR19TUEFDRShsZW5ndGgpIGFuZCByZXR1cm4KKyAgIHRydWU7IG90aGVyd2lzZSwgcmV0dXJuIGZhbHNlLiAqLworc3RhdGljIGludAorZ2V0X0NNU0dfU1BBQ0Uoc2l6ZV90IGxlbmd0aCwgc2l6ZV90ICpyZXN1bHQpCit7CisgICAgc2l6ZV90IHRtcDsKKworICAgIC8qIFVzZSBDTVNHX1NQQUNFKDEpIGhlcmUgaW4gb3JkZXIgdG8gdGFrZSBhY2NvdW50IG9mIHRoZSBwYWRkaW5nCisgICAgICAgbmVjZXNzYXJ5IGJlZm9yZSAqYW5kKiBhZnRlciB0aGUgZGF0YS4gKi8KKyAgICBpZiAobGVuZ3RoID4gKFNPQ0tMRU5fVF9MSU1JVCAtIENNU0dfU1BBQ0UoMSkpKQorICAgICAgICByZXR1cm4gMDsKKyAgICB0bXAgPSBDTVNHX1NQQUNFKGxlbmd0aCk7CisgICAgaWYgKHRtcCA+IFNPQ0tMRU5fVF9MSU1JVCB8fCB0bXAgPCBsZW5ndGgpCisgICAgICAgIHJldHVybiAwOworICAgICpyZXN1bHQgPSB0bXA7CisgICAgcmV0dXJuIDE7Cit9CisjZW5kaWYKKworLyogUmV0dXJuIHRydWUgaWZmIG1zZy0+bXNnX2NvbnRyb2xsZW4gaXMgdmFsaWQsIGNtc2doIGlzIGEgdmFsaWQKKyAgIHBvaW50ZXIgaW4gbXNnLT5tc2dfY29udHJvbCB3aXRoIGF0IGxlYXN0ICJzcGFjZSIgYnl0ZXMgYWZ0ZXIgaXQsCisgICBhbmQgaXRzIGNtc2dfbGVuIG1lbWJlciBpbnNpZGUgdGhlIGJ1ZmZlci4gKi8KK3N0YXRpYyBpbnQKK2Ntc2dfbWluX3NwYWNlKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IGNtc2doZHIgKmNtc2doLCBzaXplX3Qgc3BhY2UpCit7CisgICAgc2l6ZV90IGNtc2dfb2Zmc2V0OworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY21zZ19sZW5fZW5kID0gKG9mZnNldG9mKHN0cnVjdCBjbXNnaGRyLCBjbXNnX2xlbikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihjbXNnaC0+Y21zZ19sZW4pKTsKKworICAgIC8qIE5vdGUgdGhhdCBQT1NJWCBhbGxvd3MgbXNnX2NvbnRyb2xsZW4gdG8gYmUgb2Ygc2lnbmVkIHR5cGUuICovCisgICAgaWYgKGNtc2doID09IE5VTEwgfHwgbXNnLT5tc2dfY29udHJvbCA9PSBOVUxMIHx8IG1zZy0+bXNnX2NvbnRyb2xsZW4gPCAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoc3BhY2UgPCBjbXNnX2xlbl9lbmQpCisgICAgICAgIHNwYWNlID0gY21zZ19sZW5fZW5kOworICAgIGNtc2dfb2Zmc2V0ID0gKGNoYXIgKiljbXNnaCAtIChjaGFyICopbXNnLT5tc2dfY29udHJvbDsKKyAgICByZXR1cm4gKGNtc2dfb2Zmc2V0IDw9IChzaXplX3QpLTEgLSBzcGFjZSAmJgorICAgICAgICAgICAgY21zZ19vZmZzZXQgKyBzcGFjZSA8PSBtc2ctPm1zZ19jb250cm9sbGVuKTsKK30KKworLyogSWYgcG9pbnRlciBDTVNHX0RBVEEoY21zZ2gpIGlzIGluIGJ1ZmZlciBtc2ctPm1zZ19jb250cm9sLCBzZXQKKyAgICpzcGFjZSB0byBudW1iZXIgb2YgYnl0ZXMgZm9sbG93aW5nIGl0IGluIHRoZSBidWZmZXIgYW5kIHJldHVybgorICAgdHJ1ZTsgb3RoZXJ3aXNlLCByZXR1cm4gZmFsc2UuICBBc3N1bWVzIGNtc2doLCBtc2ctPm1zZ19jb250cm9sIGFuZAorICAgbXNnLT5tc2dfY29udHJvbGxlbiBhcmUgdmFsaWQuICovCitzdGF0aWMgaW50CitnZXRfY21zZ19kYXRhX3NwYWNlKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IGNtc2doZHIgKmNtc2doLCBzaXplX3QgKnNwYWNlKQoreworICAgIHNpemVfdCBkYXRhX29mZnNldDsKKyAgICBjaGFyICpkYXRhX3B0cjsKKworICAgIGlmICgoZGF0YV9wdHIgPSAoY2hhciAqKUNNU0dfREFUQShjbXNnaCkpID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworICAgIGRhdGFfb2Zmc2V0ID0gZGF0YV9wdHIgLSAoY2hhciAqKW1zZy0+bXNnX2NvbnRyb2w7CisgICAgaWYgKGRhdGFfb2Zmc2V0ID4gbXNnLT5tc2dfY29udHJvbGxlbikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgKnNwYWNlID0gbXNnLT5tc2dfY29udHJvbGxlbiAtIGRhdGFfb2Zmc2V0OworICAgIHJldHVybiAxOworfQorCisvKiBJZiBjbXNnaCBpcyBpbnZhbGlkIG9yIG5vdCBjb250YWluZWQgaW4gdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5CisgICBtc2ctPm1zZ19jb250cm9sLCByZXR1cm4gLTEuICBJZiBjbXNnaCBpcyB2YWxpZCBhbmQgaXRzIGFzc29jaWF0ZWQKKyAgIGRhdGEgaXMgZW50aXJlbHkgY29udGFpbmVkIGluIHRoZSBidWZmZXIsIHNldCAqZGF0YV9sZW4gdG8gdGhlCisgICBsZW5ndGggb2YgdGhlIGFzc29jaWF0ZWQgZGF0YSBhbmQgcmV0dXJuIDAuICBJZiBvbmx5IHBhcnQgb2YgdGhlCisgICBhc3NvY2lhdGVkIGRhdGEgaXMgY29udGFpbmVkIGluIHRoZSBidWZmZXIgYnV0IGNtc2doIGlzIG90aGVyd2lzZQorICAgdmFsaWQsIHNldCAqZGF0YV9sZW4gdG8gdGhlIGxlbmd0aCBjb250YWluZWQgaW4gdGhlIGJ1ZmZlciBhbmQKKyAgIHJldHVybiAxLiAqLworc3RhdGljIGludAorZ2V0X2Ntc2dfZGF0YV9sZW4oc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3QgY21zZ2hkciAqY21zZ2gsIHNpemVfdCAqZGF0YV9sZW4pCit7CisgICAgc2l6ZV90IHNwYWNlLCBjbXNnX2RhdGFfbGVuOworCisgICAgaWYgKCFjbXNnX21pbl9zcGFjZShtc2csIGNtc2doLCBDTVNHX0xFTigwKSkgfHwKKyAgICAgICAgY21zZ2gtPmNtc2dfbGVuIDwgQ01TR19MRU4oMCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBjbXNnX2RhdGFfbGVuID0gY21zZ2gtPmNtc2dfbGVuIC0gQ01TR19MRU4oMCk7CisgICAgaWYgKCFnZXRfY21zZ19kYXRhX3NwYWNlKG1zZywgY21zZ2gsICZzcGFjZSkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoc3BhY2UgPj0gY21zZ19kYXRhX2xlbikgeworICAgICAgICAqZGF0YV9sZW4gPSBjbXNnX2RhdGFfbGVuOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgKmRhdGFfbGVuID0gc3BhY2U7CisgICAgcmV0dXJuIDE7Cit9CisjZW5kaWYgICAgLyogQ01TR19MRU4gKi8KKworCiAvKiBzLl9hY2NlcHQoKSAtPiAoZmQsIGFkZHJlc3MpICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xODg5LDcgKzIyMjUsNyBAQAogI2Vsc2UKICAgICBpZiAoYnVmbGVuIDw9IDAgfHwgYnVmbGVuID4gMTAyNCkgewogI2VuZGlmCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImdldHNvY2tvcHQgYnVmbGVuIG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yNjIwLDYgKzI5NTYsMzMxIEBACiBMaWtlIHJlY3ZfaW50byhidWZmZXJbLCBuYnl0ZXNbLCBmbGFnc11dKSBidXQgYWxzbyByZXR1cm4gdGhlIHNlbmRlcidzIGFkZHJlc3MgaW5mby4iKTsKIAogCisvKiBUaGUgc2VuZG1zZygpIGFuZCByZWN2bXNnW19pbnRvXSgpIG1ldGhvZHMgcmVxdWlyZSBhIHdvcmtpbmcKKyAgIENNU0dfTEVOKCkuICBTZWUgdGhlIGNvbW1lbnQgbmVhciBnZXRfQ01TR19MRU4oKS4gKi8KKyNpZmRlZiBDTVNHX0xFTgorLyoKKyAqIENhbGwgcmVjdm1zZygpIHdpdGggdGhlIHN1cHBsaWVkIGlvdmVjIHN0cnVjdHVyZXMsIGZsYWdzLCBhbmQKKyAqIGFuY2lsbGFyeSBkYXRhIGJ1ZmZlciBzaXplIChjb250cm9sbGVuKS4gIFJldHVybnMgdGhlIHR1cGxlIHJldHVybgorICogdmFsdWUgZm9yIHJlY3Ztc2coKSBvciByZWN2bXNnX2ludG8oKSwgd2l0aCB0aGUgZmlyc3QgaXRlbSBwcm92aWRlZAorICogYnkgdGhlIHN1cHBsaWVkIG1ha2V2YWwoKSBmdW5jdGlvbi4gIG1ha2V2YWwoKSB3aWxsIGJlIGNhbGxlZCB3aXRoCisgKiB0aGUgbGVuZ3RoIHJlYWQgYW5kIG1ha2V2YWxfZGF0YSBhcyBhcmd1bWVudHMsIGFuZCBtdXN0IHJldHVybiBhCisgKiBuZXcgcmVmZXJlbmNlICh3aGljaCB3aWxsIGJlIGRlY3JlZmVkIGlmIHRoZXJlIGlzIGEgc3Vic2VxdWVudAorICogZXJyb3IpLiAgT24gZXJyb3IsIGNsb3NlcyBhbnkgZmlsZSBkZXNjcmlwdG9ycyByZWNlaXZlZCB2aWEKKyAqIFNDTV9SSUdIVFMuCisgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitzb2NrX3JlY3Ztc2dfZ3V0cyhQeVNvY2tldFNvY2tPYmplY3QgKnMsIHN0cnVjdCBpb3ZlYyAqaW92LCBpbnQgaW92bGVuLAorICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLCBQeV9zc2l6ZV90IGNvbnRyb2xsZW4sCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKCptYWtldmFsKShzc2l6ZV90LCB2b2lkICopLCB2b2lkICptYWtldmFsX2RhdGEpCit7CisgICAgc3NpemVfdCBieXRlc19yZWNlaXZlZCA9IC0xOworICAgIGludCB0aW1lb3V0OworICAgIHNvY2tfYWRkcl90IGFkZHJidWY7CisgICAgc29ja2xlbl90IGFkZHJidWZsZW47CisgICAgc3RydWN0IG1zZ2hkciBtc2cgPSB7MH07CisgICAgUHlPYmplY3QgKmNtc2dfbGlzdCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOworICAgIHZvaWQgKmNvbnRyb2xidWYgPSBOVUxMOworICAgIHN0cnVjdCBjbXNnaGRyICpjbXNnaDsKKyAgICBzaXplX3QgY21zZ2RhdGFsZW4gPSAwOworICAgIGludCBjbXNnX3N0YXR1czsKKworICAgIC8qIFhYWDogUE9TSVggc2F5cyB0aGF0IG1zZ19uYW1lIGFuZCBtc2dfbmFtZWxlbiAic2hhbGwgYmUKKyAgICAgICBpZ25vcmVkIiB3aGVuIHRoZSBzb2NrZXQgaXMgY29ubmVjdGVkIChMaW51eCBmaWxscyB0aGVtIGluCisgICAgICAgYW55d2F5IGZvciBBRl9VTklYIHNvY2tldHMgYXQgbGVhc3QpLiAgTm9ybWFsbHkgbXNnX25hbWVsZW4KKyAgICAgICBzZWVtcyB0byBiZSBzZXQgdG8gMCBpZiB0aGVyZSdzIG5vIGFkZHJlc3MsIGJ1dCB0cnkgdG8KKyAgICAgICBpbml0aWFsaXplIG1zZ19uYW1lIHRvIHNvbWV0aGluZyB0aGF0IHdvbid0IGJlIG1pc3Rha2VuIGZvciBhCisgICAgICAgcmVhbCBhZGRyZXNzIGlmIHRoYXQgZG9lc24ndCBoYXBwZW4uICovCisgICAgaWYgKCFnZXRzb2NrYWRkcmxlbihzLCAmYWRkcmJ1ZmxlbikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG1lbXNldCgmYWRkcmJ1ZiwgMCwgYWRkcmJ1Zmxlbik7CisgICAgU0FTMlNBKCZhZGRyYnVmKS0+c2FfZmFtaWx5ID0gQUZfVU5TUEVDOworCisgICAgaWYgKGNvbnRyb2xsZW4gPCAwIHx8IGNvbnRyb2xsZW4gPiBTT0NLTEVOX1RfTElNSVQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBhbmNpbGxhcnkgZGF0YSBidWZmZXIgbGVuZ3RoIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoY29udHJvbGxlbiA+IDAgJiYgKGNvbnRyb2xidWYgPSBQeU1lbV9NYWxsb2MoY29udHJvbGxlbikpID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworCisgICAgLyogTWFrZSB0aGUgc3lzdGVtIGNhbGwuICovCisgICAgaWYgKCFJU19TRUxFQ1RBQkxFKHMpKSB7CisgICAgICAgIHNlbGVjdF9lcnJvcigpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgQkVHSU5fU0VMRUNUX0xPT1AocykKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOworICAgIG1zZy5tc2dfbmFtZSA9IFNBUzJTQSgmYWRkcmJ1Zik7CisgICAgbXNnLm1zZ19uYW1lbGVuID0gYWRkcmJ1ZmxlbjsKKyAgICBtc2cubXNnX2lvdiA9IGlvdjsKKyAgICBtc2cubXNnX2lvdmxlbiA9IGlvdmxlbjsKKyAgICBtc2cubXNnX2NvbnRyb2wgPSBjb250cm9sYnVmOworICAgIG1zZy5tc2dfY29udHJvbGxlbiA9IGNvbnRyb2xsZW47CisgICAgdGltZW91dCA9IGludGVybmFsX3NlbGVjdF9leChzLCAwLCBpbnRlcnZhbCk7CisgICAgaWYgKCF0aW1lb3V0KQorICAgICAgICBieXRlc19yZWNlaXZlZCA9IHJlY3Ztc2cocy0+c29ja19mZCwgJm1zZywgZmxhZ3MpOworICAgIFB5X0VORF9BTExPV19USFJFQURTOworICAgIGlmICh0aW1lb3V0ID09IDEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF90aW1lb3V0LCAidGltZWQgb3V0Iik7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgRU5EX1NFTEVDVF9MT09QKHMpCisKKyAgICBpZiAoYnl0ZXNfcmVjZWl2ZWQgPCAwKSB7CisgICAgICAgIHMtPmVycm9yaGFuZGxlcigpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgLyogTWFrZSBsaXN0IG9mIChsZXZlbCwgdHlwZSwgZGF0YSkgdHVwbGVzIGZyb20gY29udHJvbCBtZXNzYWdlcy4gKi8KKyAgICBpZiAoKGNtc2dfbGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyX2Nsb3NlZmRzOworICAgIC8qIENoZWNrIGZvciBlbXB0eSBhbmNpbGxhcnkgZGF0YSBhcyBvbGQgQ01TR19GSVJTVEhEUigpCisgICAgICAgaW1wbGVtZW50YXRpb25zIGRpZG4ndCBkbyBzby4gKi8KKyAgICBmb3IgKGNtc2doID0gKChtc2cubXNnX2NvbnRyb2xsZW4gPiAwKSA/IENNU0dfRklSU1RIRFIoJm1zZykgOiBOVUxMKTsKKyAgICAgICAgIGNtc2doICE9IE5VTEw7IGNtc2doID0gQ01TR19OWFRIRFIoJm1zZywgY21zZ2gpKSB7CisgICAgICAgIFB5T2JqZWN0ICpieXRlcywgKnR1cGxlOworICAgICAgICBpbnQgdG1wOworCisgICAgICAgIGNtc2dfc3RhdHVzID0gZ2V0X2Ntc2dfZGF0YV9sZW4oJm1zZywgY21zZ2gsICZjbXNnZGF0YWxlbik7CisgICAgICAgIGlmIChjbXNnX3N0YXR1cyAhPSAwKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX1J1bnRpbWVXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVjZWl2ZWQgbWFsZm9ybWVkIG9yIGltcHJvcGVybHktdHJ1bmNhdGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuY2lsbGFyeSBkYXRhIiwgMSkgPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBlcnJfY2xvc2VmZHM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNtc2dfc3RhdHVzIDwgMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoY21zZ2RhdGFsZW4gPiBQWV9TU0laRV9UX01BWCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJjb250cm9sIG1lc3NhZ2UgdG9vIGxvbmciKTsKKyAgICAgICAgICAgIGdvdG8gZXJyX2Nsb3NlZmRzOworICAgICAgICB9CisKKyAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopQ01TR19EQVRBKGNtc2doKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc2dkYXRhbGVuKTsKKyAgICAgICAgdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCJpaU4iLCAoaW50KWNtc2doLT5jbXNnX2xldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCljbXNnaC0+Y21zZ190eXBlLCBieXRlcyk7CisgICAgICAgIGlmICh0dXBsZSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJfY2xvc2VmZHM7CisgICAgICAgIHRtcCA9IFB5TGlzdF9BcHBlbmQoY21zZ19saXN0LCB0dXBsZSk7CisgICAgICAgIFB5X0RFQ1JFRih0dXBsZSk7CisgICAgICAgIGlmICh0bXAgIT0gMCkKKyAgICAgICAgICAgIGdvdG8gZXJyX2Nsb3NlZmRzOworCisgICAgICAgIGlmIChjbXNnX3N0YXR1cyAhPSAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dmFsID0gUHlfQnVpbGRWYWx1ZSgiTk9pTiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKm1ha2V2YWwpKGJ5dGVzX3JlY2VpdmVkLCBtYWtldmFsX2RhdGEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zZ19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltc2cubXNnX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZXNvY2thZGRyKHMtPnNvY2tfZmQsIFNBUzJTQSgmYWRkcmJ1ZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtc2cubXNnX25hbWVsZW4gPiBhZGRyYnVmbGVuKSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJidWZsZW4gOiBtc2cubXNnX25hbWVsZW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnNvY2tfcHJvdG8pKTsKKyAgICBpZiAocmV0dmFsID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyX2Nsb3NlZmRzOworCitmaW5hbGx5OgorICAgIFB5X1hERUNSRUYoY21zZ19saXN0KTsKKyAgICBQeU1lbV9GcmVlKGNvbnRyb2xidWYpOworICAgIHJldHVybiByZXR2YWw7CisKK2Vycl9jbG9zZWZkczoKKyNpZmRlZiBTQ01fUklHSFRTCisgICAgLyogQ2xvc2UgYWxsIGRlc2NyaXB0b3JzIGNvbWluZyBmcm9tIFNDTV9SSUdIVFMsIHNvIHRoZXkgZG9uJ3QgbGVhay4gKi8KKyAgICBmb3IgKGNtc2doID0gKChtc2cubXNnX2NvbnRyb2xsZW4gPiAwKSA/IENNU0dfRklSU1RIRFIoJm1zZykgOiBOVUxMKTsKKyAgICAgICAgIGNtc2doICE9IE5VTEw7IGNtc2doID0gQ01TR19OWFRIRFIoJm1zZywgY21zZ2gpKSB7CisgICAgICAgIGNtc2dfc3RhdHVzID0gZ2V0X2Ntc2dfZGF0YV9sZW4oJm1zZywgY21zZ2gsICZjbXNnZGF0YWxlbik7CisgICAgICAgIGlmIChjbXNnX3N0YXR1cyA8IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGNtc2doLT5jbXNnX2xldmVsID09IFNPTF9TT0NLRVQgJiYKKyAgICAgICAgICAgIGNtc2doLT5jbXNnX3R5cGUgPT0gU0NNX1JJR0hUUykgeworICAgICAgICAgICAgc2l6ZV90IG51bWZkczsKKyAgICAgICAgICAgIGludCAqZmRwOworCisgICAgICAgICAgICBudW1mZHMgPSBjbXNnZGF0YWxlbiAvIHNpemVvZihpbnQpOworICAgICAgICAgICAgZmRwID0gKGludCAqKUNNU0dfREFUQShjbXNnaCk7CisgICAgICAgICAgICB3aGlsZSAobnVtZmRzLS0gPiAwKQorICAgICAgICAgICAgICAgIGNsb3NlKCpmZHArKyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNtc2dfc3RhdHVzICE9IDApCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisjZW5kaWYgLyogU0NNX1JJR0hUUyAqLworICAgIGdvdG8gZmluYWxseTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorbWFrZXZhbF9yZWN2bXNnKHNzaXplX3QgcmVjZWl2ZWQsIHZvaWQgKmRhdGEpCit7CisgICAgUHlPYmplY3QgKipidWYgPSBkYXRhOworCisgICAgaWYgKHJlY2VpdmVkIDwgUHlCeXRlc19HRVRfU0laRSgqYnVmKSkKKyAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKGJ1ZiwgcmVjZWl2ZWQpOworICAgIFB5X1hJTkNSRUYoKmJ1Zik7CisgICAgcmV0dXJuICpidWY7Cit9CisKKy8qIHMucmVjdm1zZyhidWZzaXplWywgYW5jYnVmc2l6ZVssIGZsYWdzXV0pIG1ldGhvZCAqLworCitzdGF0aWMgUHlPYmplY3QgKgorc29ja19yZWN2bXNnKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCBidWZzaXplLCBhbmNidWZzaXplID0gMDsKKyAgICBpbnQgZmxhZ3MgPSAwOworICAgIHN0cnVjdCBpb3ZlYyBpb3Y7CisgICAgUHlPYmplY3QgKmJ1ZiA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufG5pOnJlY3Ztc2ciLCAmYnVmc2l6ZSwgJmFuY2J1ZnNpemUsICZmbGFncykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGJ1ZnNpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgYnVmZmVyIHNpemUgaW4gcmVjdm1zZygpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoKGJ1ZiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnVmc2l6ZSkpID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlvdi5pb3ZfYmFzZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1Zik7CisgICAgaW92Lmlvdl9sZW4gPSBidWZzaXplOworCisgICAgLyogTm90ZSB0aGF0IHdlJ3JlIHBhc3NpbmcgYSBwb2ludGVyIHRvICpvdXIgcG9pbnRlciogdG8gdGhlIGJ5dGVzCisgICAgICAgb2JqZWN0IGhlcmUgKCZidWYpOyBtYWtldmFsX3JlY3Ztc2coKSBtYXkgaW5jcmVmIHRoZSBvYmplY3QsIG9yCisgICAgICAgZGVhbGxvY2F0ZSBpdCBhbmQgc2V0IG91ciBwb2ludGVyIHRvIE5VTEwuICovCisgICAgcmV0dmFsID0gc29ja19yZWN2bXNnX2d1dHMocywgJmlvdiwgMSwgZmxhZ3MsIGFuY2J1ZnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1ha2V2YWxfcmVjdm1zZywgJmJ1Zik7CisgICAgUHlfWERFQ1JFRihidWYpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5RG9jX1NUUlZBUihyZWN2bXNnX2RvYywKKyJyZWN2bXNnKGJ1ZnNpemVbLCBhbmNidWZzaXplWywgZmxhZ3NdXSkgLT4gKGRhdGEsIGFuY2RhdGEsIG1zZ19mbGFncywgYWRkcmVzcylcblwKK1xuXAorUmVjZWl2ZSBub3JtYWwgZGF0YSAodXAgdG8gYnVmc2l6ZSBieXRlcykgYW5kIGFuY2lsbGFyeSBkYXRhIGZyb20gdGhlXG5cCitzb2NrZXQuICBUaGUgYW5jYnVmc2l6ZSBhcmd1bWVudCBzZXRzIHRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZVxuXAoraW50ZXJuYWwgYnVmZmVyIHVzZWQgdG8gcmVjZWl2ZSB0aGUgYW5jaWxsYXJ5IGRhdGE7IGl0IGRlZmF1bHRzIHRvIDAsXG5cCittZWFuaW5nIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgd2lsbCBiZSByZWNlaXZlZC4gIEFwcHJvcHJpYXRlIGJ1ZmZlclxuXAorc2l6ZXMgZm9yIGFuY2lsbGFyeSBkYXRhIGNhbiBiZSBjYWxjdWxhdGVkIHVzaW5nIENNU0dfU1BBQ0UoKSBvclxuXAorQ01TR19MRU4oKSwgYW5kIGl0ZW1zIHdoaWNoIGRvIG5vdCBmaXQgaW50byB0aGUgYnVmZmVyIG1pZ2h0IGJlXG5cCit0cnVuY2F0ZWQgb3IgZGlzY2FyZGVkLiAgVGhlIGZsYWdzIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDAgYW5kIGhhcyB0aGVcblwKK3NhbWUgbWVhbmluZyBhcyBmb3IgcmVjdigpLlxuXAorXG5cCitUaGUgcmV0dXJuIHZhbHVlIGlzIGEgNC10dXBsZTogKGRhdGEsIGFuY2RhdGEsIG1zZ19mbGFncywgYWRkcmVzcykuXG5cCitUaGUgZGF0YSBpdGVtIGlzIGEgYnl0ZXMgb2JqZWN0IGhvbGRpbmcgdGhlIG5vbi1hbmNpbGxhcnkgZGF0YVxuXAorcmVjZWl2ZWQuICBUaGUgYW5jZGF0YSBpdGVtIGlzIGEgbGlzdCBvZiB6ZXJvIG9yIG1vcmUgdHVwbGVzXG5cCisoY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEpIHJlcHJlc2VudGluZyB0aGUgYW5jaWxsYXJ5IGRhdGFcblwKKyhjb250cm9sIG1lc3NhZ2VzKSByZWNlaXZlZDogY21zZ19sZXZlbCBhbmQgY21zZ190eXBlIGFyZSBpbnRlZ2Vyc1xuXAorc3BlY2lmeWluZyB0aGUgcHJvdG9jb2wgbGV2ZWwgYW5kIHByb3RvY29sLXNwZWNpZmljIHR5cGUgcmVzcGVjdGl2ZWx5LFxuXAorYW5kIGNtc2dfZGF0YSBpcyBhIGJ5dGVzIG9iamVjdCBob2xkaW5nIHRoZSBhc3NvY2lhdGVkIGRhdGEuICBUaGVcblwKK21zZ19mbGFncyBpdGVtIGlzIHRoZSBiaXR3aXNlIE9SIG9mIHZhcmlvdXMgZmxhZ3MgaW5kaWNhdGluZ1xuXAorY29uZGl0aW9ucyBvbiB0aGUgcmVjZWl2ZWQgbWVzc2FnZTsgc2VlIHlvdXIgc3lzdGVtIGRvY3VtZW50YXRpb24gZm9yXG5cCitkZXRhaWxzLiAgSWYgdGhlIHJlY2VpdmluZyBzb2NrZXQgaXMgdW5jb25uZWN0ZWQsIGFkZHJlc3MgaXMgdGhlXG5cCithZGRyZXNzIG9mIHRoZSBzZW5kaW5nIHNvY2tldCwgaWYgYXZhaWxhYmxlOyBvdGhlcndpc2UsIGl0cyB2YWx1ZSBpc1xuXAordW5zcGVjaWZpZWQuXG5cCitcblwKK0lmIHJlY3Ztc2coKSByYWlzZXMgYW4gZXhjZXB0aW9uIGFmdGVyIHRoZSBzeXN0ZW0gY2FsbCByZXR1cm5zLCBpdFxuXAord2lsbCBmaXJzdCBhdHRlbXB0IHRvIGNsb3NlIGFueSBmaWxlIGRlc2NyaXB0b3JzIHJlY2VpdmVkIHZpYSB0aGVcblwKK1NDTV9SSUdIVFMgbWVjaGFuaXNtLiIpOworCisKK3N0YXRpYyBQeU9iamVjdCAqCittYWtldmFsX3JlY3Ztc2dfaW50byhzc2l6ZV90IHJlY2VpdmVkLCB2b2lkICpkYXRhKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVjZWl2ZWQpOworfQorCisvKiBzLnJlY3Ztc2dfaW50byhidWZmZXJzWywgYW5jYnVmc2l6ZVssIGZsYWdzXV0pIG1ldGhvZCAqLworCitzdGF0aWMgUHlPYmplY3QgKgorc29ja19yZWN2bXNnX2ludG8oUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IGFuY2J1ZnNpemUgPSAwOworICAgIGludCBmbGFncyA9IDA7CisgICAgc3RydWN0IGlvdmVjICppb3ZzID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGksIG5pdGVtcywgbmJ1ZnMgPSAwOworICAgIFB5X2J1ZmZlciAqYnVmcyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmJ1ZmZlcnNfYXJnLCAqZmFzdCwgKnJldHZhbCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98bmk6cmVjdm1zZ19pbnRvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1ZmZlcnNfYXJnLCAmYW5jYnVmc2l6ZSwgJmZsYWdzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoKGZhc3QgPSBQeVNlcXVlbmNlX0Zhc3QoYnVmZmVyc19hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWN2bXNnX2ludG8oKSBhcmd1bWVudCAxIG11c3QgYmUgYW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlcmFibGUiKSkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbml0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGZhc3QpOworICAgIGlmIChuaXRlbXMgPiBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAicmVjdm1zZ19pbnRvKCkgYXJndW1lbnQgMSBpcyB0b28gbG9uZyIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgLyogRmlsbCBpbiBhbiBpb3ZlYyBmb3IgZWFjaCBpdGVtLCBhbmQgc2F2ZSB0aGUgUHlfYnVmZmVyCisgICAgICAgc3RydWN0cyB0byByZWxlYXNlIGFmdGVyd2FyZHMuICovCisgICAgaWYgKG5pdGVtcyA+IDAgJiYgKChpb3ZzID0gUHlNZW1fTmV3KHN0cnVjdCBpb3ZlYywgbml0ZW1zKSkgPT0gTlVMTCB8fAorICAgICAgICAgICAgICAgICAgICAgICAoYnVmcyA9IFB5TWVtX05ldyhQeV9idWZmZXIsIG5pdGVtcykpID09IE5VTEwpKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgZm9yICg7IG5idWZzIDwgbml0ZW1zOyBuYnVmcysrKSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGZhc3QsIG5idWZzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidyo7cmVjdm1zZ19pbnRvKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuIGl0ZXJhYmxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAib2Ygc2luZ2xlLXNlZ21lbnQgcmVhZC13cml0ZSBidWZmZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmYnVmc1tuYnVmc10pKQorICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICBpb3ZzW25idWZzXS5pb3ZfYmFzZSA9IGJ1ZnNbbmJ1ZnNdLmJ1ZjsKKyAgICAgICAgaW92c1tuYnVmc10uaW92X2xlbiA9IGJ1ZnNbbmJ1ZnNdLmxlbjsKKyAgICB9CisKKyAgICByZXR2YWwgPSBzb2NrX3JlY3Ztc2dfZ3V0cyhzLCBpb3ZzLCBuaXRlbXMsIGZsYWdzLCBhbmNidWZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYWtldmFsX3JlY3Ztc2dfaW50bywgTlVMTCk7CitmaW5hbGx5OgorICAgIGZvciAoaSA9IDA7IGkgPCBuYnVmczsgaSsrKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZzW2ldKTsKKyAgICBQeU1lbV9GcmVlKGJ1ZnMpOworICAgIFB5TWVtX0ZyZWUoaW92cyk7CisgICAgUHlfREVDUkVGKGZhc3QpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5RG9jX1NUUlZBUihyZWN2bXNnX2ludG9fZG9jLAorInJlY3Ztc2dfaW50byhidWZmZXJzWywgYW5jYnVmc2l6ZVssIGZsYWdzXV0pIC0+IChuYnl0ZXMsIGFuY2RhdGEsIG1zZ19mbGFncywgYWRkcmVzcylcblwKK1xuXAorUmVjZWl2ZSBub3JtYWwgZGF0YSBhbmQgYW5jaWxsYXJ5IGRhdGEgZnJvbSB0aGUgc29ja2V0LCBzY2F0dGVyaW5nIHRoZVxuXAorbm9uLWFuY2lsbGFyeSBkYXRhIGludG8gYSBzZXJpZXMgb2YgYnVmZmVycy4gIFRoZSBidWZmZXJzIGFyZ3VtZW50XG5cCittdXN0IGJlIGFuIGl0ZXJhYmxlIG9mIG9iamVjdHMgdGhhdCBleHBvcnQgd3JpdGFibGUgYnVmZmVyc1xuXAorKGUuZy4gYnl0ZWFycmF5IG9iamVjdHMpOyB0aGVzZSB3aWxsIGJlIGZpbGxlZCB3aXRoIHN1Y2Nlc3NpdmUgY2h1bmtzXG5cCitvZiB0aGUgbm9uLWFuY2lsbGFyeSBkYXRhIHVudGlsIGl0IGhhcyBhbGwgYmVlbiB3cml0dGVuIG9yIHRoZXJlIGFyZVxuXAorbm8gbW9yZSBidWZmZXJzLiAgVGhlIGFuY2J1ZnNpemUgYXJndW1lbnQgc2V0cyB0aGUgc2l6ZSBpbiBieXRlcyBvZlxuXAordGhlIGludGVybmFsIGJ1ZmZlciB1c2VkIHRvIHJlY2VpdmUgdGhlIGFuY2lsbGFyeSBkYXRhOyBpdCBkZWZhdWx0cyB0b1xuXAorMCwgbWVhbmluZyB0aGF0IG5vIGFuY2lsbGFyeSBkYXRhIHdpbGwgYmUgcmVjZWl2ZWQuICBBcHByb3ByaWF0ZVxuXAorYnVmZmVyIHNpemVzIGZvciBhbmNpbGxhcnkgZGF0YSBjYW4gYmUgY2FsY3VsYXRlZCB1c2luZyBDTVNHX1NQQUNFKClcblwKK29yIENNU0dfTEVOKCksIGFuZCBpdGVtcyB3aGljaCBkbyBub3QgZml0IGludG8gdGhlIGJ1ZmZlciBtaWdodCBiZVxuXAordHJ1bmNhdGVkIG9yIGRpc2NhcmRlZC4gIFRoZSBmbGFncyBhcmd1bWVudCBkZWZhdWx0cyB0byAwIGFuZCBoYXMgdGhlXG5cCitzYW1lIG1lYW5pbmcgYXMgZm9yIHJlY3YoKS5cblwKK1xuXAorVGhlIHJldHVybiB2YWx1ZSBpcyBhIDQtdHVwbGU6IChuYnl0ZXMsIGFuY2RhdGEsIG1zZ19mbGFncywgYWRkcmVzcykuXG5cCitUaGUgbmJ5dGVzIGl0ZW0gaXMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBvZiBub24tYW5jaWxsYXJ5IGRhdGFcblwKK3dyaXR0ZW4gaW50byB0aGUgYnVmZmVycy4gIFRoZSBhbmNkYXRhIGl0ZW0gaXMgYSBsaXN0IG9mIHplcm8gb3IgbW9yZVxuXAordHVwbGVzIChjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSkgcmVwcmVzZW50aW5nIHRoZSBhbmNpbGxhcnlcblwKK2RhdGEgKGNvbnRyb2wgbWVzc2FnZXMpIHJlY2VpdmVkOiBjbXNnX2xldmVsIGFuZCBjbXNnX3R5cGUgYXJlXG5cCitpbnRlZ2VycyBzcGVjaWZ5aW5nIHRoZSBwcm90b2NvbCBsZXZlbCBhbmQgcHJvdG9jb2wtc3BlY2lmaWMgdHlwZVxuXAorcmVzcGVjdGl2ZWx5LCBhbmQgY21zZ19kYXRhIGlzIGEgYnl0ZXMgb2JqZWN0IGhvbGRpbmcgdGhlIGFzc29jaWF0ZWRcblwKK2RhdGEuICBUaGUgbXNnX2ZsYWdzIGl0ZW0gaXMgdGhlIGJpdHdpc2UgT1Igb2YgdmFyaW91cyBmbGFnc1xuXAoraW5kaWNhdGluZyBjb25kaXRpb25zIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlOyBzZWUgeW91ciBzeXN0ZW1cblwKK2RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuICBJZiB0aGUgcmVjZWl2aW5nIHNvY2tldCBpcyB1bmNvbm5lY3RlZCxcblwKK2FkZHJlc3MgaXMgdGhlIGFkZHJlc3Mgb2YgdGhlIHNlbmRpbmcgc29ja2V0LCBpZiBhdmFpbGFibGU7IG90aGVyd2lzZSxcblwKK2l0cyB2YWx1ZSBpcyB1bnNwZWNpZmllZC5cblwKK1xuXAorSWYgcmVjdm1zZ19pbnRvKCkgcmFpc2VzIGFuIGV4Y2VwdGlvbiBhZnRlciB0aGUgc3lzdGVtIGNhbGwgcmV0dXJucyxcblwKK2l0IHdpbGwgZmlyc3QgYXR0ZW1wdCB0byBjbG9zZSBhbnkgZmlsZSBkZXNjcmlwdG9ycyByZWNlaXZlZCB2aWEgdGhlXG5cCitTQ01fUklHSFRTIG1lY2hhbmlzbS4iKTsKKyNlbmRpZiAgICAvKiBDTVNHX0xFTiAqLworCisKIC8qIHMuc2VuZChkYXRhIFssZmxhZ3NdKSBtZXRob2QgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI3NzEsNiArMzQzMiw3IEBACiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5kdG8oKSB0YWtlcyAyIG9yIDMgYXJndW1lbnRzICglZCBnaXZlbikiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ2xlbik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjgxNCw2ICszNDc2LDIzNCBAQAogRm9yIElQIHNvY2tldHMsIHRoZSBhZGRyZXNzIGlzIGEgcGFpciAoaG9zdGFkZHIsIHBvcnQpLiIpOwogCiAKKy8qIFRoZSBzZW5kbXNnKCkgYW5kIHJlY3Ztc2dbX2ludG9dKCkgbWV0aG9kcyByZXF1aXJlIGEgd29ya2luZworICAgQ01TR19MRU4oKS4gIFNlZSB0aGUgY29tbWVudCBuZWFyIGdldF9DTVNHX0xFTigpLiAqLworI2lmZGVmIENNU0dfTEVOCisvKiBzLnNlbmRtc2coYnVmZmVyc1ssIGFuY2RhdGFbLCBmbGFnc1ssIGFkZHJlc3NdXV0pIG1ldGhvZCAqLworCitzdGF0aWMgUHlPYmplY3QgKgorc29ja19zZW5kbXNnKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCBpLCBuZGF0YXBhcnRzLCBuZGF0YWJ1ZnMgPSAwLCBuY21zZ3MsIG5jbXNnYnVmcyA9IDA7CisgICAgUHlfYnVmZmVyICpkYXRhYnVmcyA9IE5VTEw7CisgICAgc3RydWN0IGlvdmVjICppb3ZzID0gTlVMTDsKKyAgICBzb2NrX2FkZHJfdCBhZGRyYnVmOworICAgIHN0cnVjdCBtc2doZHIgbXNnID0gezB9OworICAgIHN0cnVjdCBjbXNnaW5mbyB7CisgICAgICAgIGludCBsZXZlbDsKKyAgICAgICAgaW50IHR5cGU7CisgICAgICAgIFB5X2J1ZmZlciBkYXRhOworICAgIH0gKmNtc2dzID0gTlVMTDsKKyAgICB2b2lkICpjb250cm9sYnVmID0gTlVMTDsKKyAgICBzaXplX3QgY29udHJvbGxlbiwgY29udHJvbGxlbl9sYXN0OworICAgIHNzaXplX3QgYnl0ZXNfc2VudCA9IC0xOworICAgIGludCBhZGRybGVuLCB0aW1lb3V0LCBmbGFncyA9IDA7CisgICAgUHlPYmplY3QgKmRhdGFfYXJnLCAqY21zZ19hcmcgPSBOVUxMLCAqYWRkcl9hcmcgPSBOVUxMLCAqZGF0YV9mYXN0ID0gTlVMTCwKKyAgICAgICAgKmNtc2dfZmFzdCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE9pTzpzZW5kbXNnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfYXJnLCAmY21zZ19hcmcsICZmbGFncywgJmFkZHJfYXJnKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBQYXJzZSBkZXN0aW5hdGlvbiBhZGRyZXNzLiAqLworICAgIGlmIChhZGRyX2FyZyAhPSBOVUxMICYmIGFkZHJfYXJnICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKCFnZXRzb2NrYWRkcmFyZyhzLCBhZGRyX2FyZywgU0FTMlNBKCZhZGRyYnVmKSwgJmFkZHJsZW4pKQorICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICBtc2cubXNnX25hbWUgPSAmYWRkcmJ1ZjsKKyAgICAgICAgbXNnLm1zZ19uYW1lbGVuID0gYWRkcmxlbjsKKyAgICB9CisKKyAgICAvKiBGaWxsIGluIGFuIGlvdmVjIGZvciBlYWNoIG1lc3NhZ2UgcGFydCwgYW5kIHNhdmUgdGhlIFB5X2J1ZmZlcgorICAgICAgIHN0cnVjdHMgdG8gcmVsZWFzZSBhZnRlcndhcmRzLiAqLworICAgIGlmICgoZGF0YV9mYXN0ID0gUHlTZXF1ZW5jZV9GYXN0KGRhdGFfYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5kbXNnKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlcmFibGUiKSkgPT0gTlVMTCkKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIG5kYXRhcGFydHMgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoZGF0YV9mYXN0KTsKKyAgICBpZiAobmRhdGFwYXJ0cyA+IElOVF9NQVgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJzZW5kbXNnKCkgYXJndW1lbnQgMSBpcyB0b28gbG9uZyIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIG1zZy5tc2dfaW92bGVuID0gbmRhdGFwYXJ0czsKKyAgICBpZiAobmRhdGFwYXJ0cyA+IDAgJiYKKyAgICAgICAgKChtc2cubXNnX2lvdiA9IGlvdnMgPSBQeU1lbV9OZXcoc3RydWN0IGlvdmVjLCBuZGF0YXBhcnRzKSkgPT0gTlVMTCB8fAorICAgICAgICAgKGRhdGFidWZzID0gUHlNZW1fTmV3KFB5X2J1ZmZlciwgbmRhdGFwYXJ0cykpID09IE5VTEwpKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgZm9yICg7IG5kYXRhYnVmcyA8IG5kYXRhcGFydHM7IG5kYXRhYnVmcysrKSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGRhdGFfZmFzdCwgbmRhdGFidWZzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAieSo7c2VuZG1zZygpIGFyZ3VtZW50IDEgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImJ1ZmZlci1jb21wYXRpYmxlIG9iamVjdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhYnVmc1tuZGF0YWJ1ZnNdKSkKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgaW92c1tuZGF0YWJ1ZnNdLmlvdl9iYXNlID0gZGF0YWJ1ZnNbbmRhdGFidWZzXS5idWY7CisgICAgICAgIGlvdnNbbmRhdGFidWZzXS5pb3ZfbGVuID0gZGF0YWJ1ZnNbbmRhdGFidWZzXS5sZW47CisgICAgfQorCisgICAgaWYgKGNtc2dfYXJnID09IE5VTEwpCisgICAgICAgIG5jbXNncyA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIGlmICgoY21zZ19mYXN0ID0gUHlTZXF1ZW5jZV9GYXN0KGNtc2dfYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuZG1zZygpIGFyZ3VtZW50IDIgbXVzdCBiZSBhbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVyYWJsZSIpKSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICBuY21zZ3MgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoY21zZ19mYXN0KTsKKyAgICB9CisKKyNpZm5kZWYgQ01TR19TUEFDRQorICAgIGlmIChuY21zZ3MgPiAxKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNlbmRpbmcgbXVsdGlwbGUgY29udHJvbCBtZXNzYWdlcyBpcyBub3Qgc3VwcG9ydGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJvbiB0aGlzIHN5c3RlbSIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorI2VuZGlmCisgICAgLyogU2F2ZSBsZXZlbCwgdHlwZSBhbmQgUHlfYnVmZmVyIGZvciBlYWNoIGNvbnRyb2wgbWVzc2FnZSwKKyAgICAgICBhbmQgY2FsY3VsYXRlIHRvdGFsIHNpemUuICovCisgICAgaWYgKG5jbXNncyA+IDAgJiYgKGNtc2dzID0gUHlNZW1fTmV3KHN0cnVjdCBjbXNnaW5mbywgbmNtc2dzKSkgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIGNvbnRyb2xsZW4gPSBjb250cm9sbGVuX2xhc3QgPSAwOworICAgIHdoaWxlIChuY21zZ2J1ZnMgPCBuY21zZ3MpIHsKKyAgICAgICAgc2l6ZV90IGJ1ZnNpemUsIHNwYWNlOworCisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGNtc2dfZmFzdCwgbmNtc2didWZzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiKGlpeSopOltzZW5kbXNnKCkgYW5jaWxsYXJ5IGRhdGEgaXRlbXNdIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmY21zZ3NbbmNtc2didWZzXS5sZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmY21zZ3NbbmNtc2didWZzXS50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICZjbXNnc1tuY21zZ2J1ZnNdLmRhdGEpKQorICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICBidWZzaXplID0gY21zZ3NbbmNtc2didWZzKytdLmRhdGEubGVuOworCisjaWZkZWYgQ01TR19TUEFDRQorICAgICAgICBpZiAoIWdldF9DTVNHX1NQQUNFKGJ1ZnNpemUsICZzcGFjZSkpIHsKKyNlbHNlCisgICAgICAgIGlmICghZ2V0X0NNU0dfTEVOKGJ1ZnNpemUsICZzcGFjZSkpIHsKKyNlbmRpZgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJhbmNpbGxhcnkgZGF0YSBpdGVtIHRvbyBsYXJnZSIpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgICAgIGNvbnRyb2xsZW4gKz0gc3BhY2U7CisgICAgICAgIGlmIChjb250cm9sbGVuID4gU09DS0xFTl9UX0xJTUlUIHx8IGNvbnRyb2xsZW4gPCBjb250cm9sbGVuX2xhc3QpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAidG9vIG11Y2ggYW5jaWxsYXJ5IGRhdGEiKTsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgICAgICBjb250cm9sbGVuX2xhc3QgPSBjb250cm9sbGVuOworICAgIH0KKworICAgIC8qIENvbnN0cnVjdCBhbmNpbGxhcnkgZGF0YSBibG9jayBmcm9tIGNvbnRyb2wgbWVzc2FnZSBpbmZvLiAqLworICAgIGlmIChuY21zZ2J1ZnMgPiAwKSB7CisgICAgICAgIHN0cnVjdCBjbXNnaGRyICpjbXNnaCA9IE5VTEw7CisKKyAgICAgICAgaWYgKChtc2cubXNnX2NvbnRyb2wgPSBjb250cm9sYnVmID0KKyAgICAgICAgICAgICBQeU1lbV9NYWxsb2MoY29udHJvbGxlbikpID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICAgICAgbXNnLm1zZ19jb250cm9sbGVuID0gY29udHJvbGxlbjsKKworICAgICAgICAvKiBOZWVkIHRvIHplcm8gb3V0IHRoZSBidWZmZXIgYXMgYSB3b3JrYXJvdW5kIGZvciBnbGliYydzCisgICAgICAgICAgIENNU0dfTlhUSERSKCkgaW1wbGVtZW50YXRpb24uICBBZnRlciBnZXR0aW5nIHRoZSBwb2ludGVyIHRvCisgICAgICAgICAgIHRoZSBuZXh0IGhlYWRlciwgaXQgY2hlY2tzIGl0cyAodW5pbml0aWFsaXplZCkgY21zZ19sZW4KKyAgICAgICAgICAgbWVtYmVyIHRvIHNlZSBpZiB0aGUgIm1lc3NhZ2UiIGZpdHMgaW4gdGhlIGJ1ZmZlciwgYW5kCisgICAgICAgICAgIHJldHVybnMgTlVMTCBpZiBpdCBkb2Vzbid0LiAgWmVyby1maWxsaW5nIHRoZSBidWZmZXIKKyAgICAgICAgICAgZW5zdXJlcyB0aGF0IHRoaXMgZG9lc24ndCBoYXBwZW4uICovCisgICAgICAgIG1lbXNldChjb250cm9sYnVmLCAwLCBjb250cm9sbGVuKTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmNtc2didWZzOyBpKyspIHsKKyAgICAgICAgICAgIHNpemVfdCBtc2dfbGVuLCBkYXRhX2xlbiA9IGNtc2dzW2ldLmRhdGEubGVuOworICAgICAgICAgICAgaW50IGVub3VnaF9zcGFjZSA9IDA7CisKKyAgICAgICAgICAgIGNtc2doID0gKGkgPT0gMCkgPyBDTVNHX0ZJUlNUSERSKCZtc2cpIDogQ01TR19OWFRIRFIoJm1zZywgY21zZ2gpOworICAgICAgICAgICAgaWYgKGNtc2doID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBOVUxMIHJlc3VsdCBmcm9tICVzKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaSA9PSAwKSA/ICJDTVNHX0ZJUlNUSERSIiA6ICJDTVNHX05YVEhEUiIpOworICAgICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghZ2V0X0NNU0dfTEVOKGRhdGFfbGVuLCAmbXNnX2xlbikpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlbSBzaXplIG91dCBvZiByYW5nZSBmb3IgQ01TR19MRU4oKSIpOworICAgICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjbXNnX21pbl9zcGFjZSgmbXNnLCBjbXNnaCwgbXNnX2xlbikpIHsKKyAgICAgICAgICAgICAgICBzaXplX3Qgc3BhY2U7CisKKyAgICAgICAgICAgICAgICBjbXNnaC0+Y21zZ19sZW4gPSBtc2dfbGVuOworICAgICAgICAgICAgICAgIGlmIChnZXRfY21zZ19kYXRhX3NwYWNlKCZtc2csIGNtc2doLCAmc3BhY2UpKQorICAgICAgICAgICAgICAgICAgICBlbm91Z2hfc3BhY2UgPSAoc3BhY2UgPj0gZGF0YV9sZW4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFlbm91Z2hfc3BhY2UpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5jaWxsYXJ5IGRhdGEgZG9lcyBub3QgZml0IGluIGNhbGN1bGF0ZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3BhY2UiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjbXNnaC0+Y21zZ19sZXZlbCA9IGNtc2dzW2ldLmxldmVsOworICAgICAgICAgICAgY21zZ2gtPmNtc2dfdHlwZSA9IGNtc2dzW2ldLnR5cGU7CisgICAgICAgICAgICBtZW1jcHkoQ01TR19EQVRBKGNtc2doKSwgY21zZ3NbaV0uZGF0YS5idWYsIGRhdGFfbGVuKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIE1ha2UgdGhlIHN5c3RlbSBjYWxsLiAqLworICAgIGlmICghSVNfU0VMRUNUQUJMRShzKSkgeworICAgICAgICBzZWxlY3RfZXJyb3IoKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIEJFR0lOX1NFTEVDVF9MT09QKHMpCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKKyAgICB0aW1lb3V0ID0gaW50ZXJuYWxfc2VsZWN0X2V4KHMsIDEsIGludGVydmFsKTsKKyAgICBpZiAoIXRpbWVvdXQpCisgICAgICAgIGJ5dGVzX3NlbnQgPSBzZW5kbXNnKHMtPnNvY2tfZmQsICZtc2csIGZsYWdzKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKKyAgICBpZiAodGltZW91dCA9PSAxKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIEVORF9TRUxFQ1RfTE9PUChzKQorCisgICAgaWYgKGJ5dGVzX3NlbnQgPCAwKSB7CisgICAgICAgIHMtPmVycm9yaGFuZGxlcigpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIHJldHZhbCA9IFB5TG9uZ19Gcm9tU3NpemVfdChieXRlc19zZW50KTsKKworZmluYWxseToKKyAgICBQeU1lbV9GcmVlKGNvbnRyb2xidWYpOworICAgIGZvciAoaSA9IDA7IGkgPCBuY21zZ2J1ZnM7IGkrKykKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmY21zZ3NbaV0uZGF0YSk7CisgICAgUHlNZW1fRnJlZShjbXNncyk7CisgICAgUHlfWERFQ1JFRihjbXNnX2Zhc3QpOworICAgIGZvciAoaSA9IDA7IGkgPCBuZGF0YWJ1ZnM7IGkrKykKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YWJ1ZnNbaV0pOworICAgIFB5TWVtX0ZyZWUoZGF0YWJ1ZnMpOworICAgIFB5TWVtX0ZyZWUoaW92cyk7CisgICAgUHlfWERFQ1JFRihkYXRhX2Zhc3QpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5RG9jX1NUUlZBUihzZW5kbXNnX2RvYywKKyJzZW5kbXNnKGJ1ZmZlcnNbLCBhbmNkYXRhWywgZmxhZ3NbLCBhZGRyZXNzXV1dKSAtPiBjb3VudFxuXAorXG5cCitTZW5kIG5vcm1hbCBhbmQgYW5jaWxsYXJ5IGRhdGEgdG8gdGhlIHNvY2tldCwgZ2F0aGVyaW5nIHRoZVxuXAorbm9uLWFuY2lsbGFyeSBkYXRhIGZyb20gYSBzZXJpZXMgb2YgYnVmZmVycyBhbmQgY29uY2F0ZW5hdGluZyBpdCBpbnRvXG5cCithIHNpbmdsZSBtZXNzYWdlLiAgVGhlIGJ1ZmZlcnMgYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBub24tYW5jaWxsYXJ5XG5cCitkYXRhIGFzIGFuIGl0ZXJhYmxlIG9mIGJ1ZmZlci1jb21wYXRpYmxlIG9iamVjdHMgKGUuZy4gYnl0ZXMgb2JqZWN0cykuXG5cCitUaGUgYW5jZGF0YSBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGFuY2lsbGFyeSBkYXRhIChjb250cm9sIG1lc3NhZ2VzKVxuXAorYXMgYW4gaXRlcmFibGUgb2YgemVybyBvciBtb3JlIHR1cGxlcyAoY21zZ19sZXZlbCwgY21zZ190eXBlLFxuXAorY21zZ19kYXRhKSwgd2hlcmUgY21zZ19sZXZlbCBhbmQgY21zZ190eXBlIGFyZSBpbnRlZ2VycyBzcGVjaWZ5aW5nIHRoZVxuXAorcHJvdG9jb2wgbGV2ZWwgYW5kIHByb3RvY29sLXNwZWNpZmljIHR5cGUgcmVzcGVjdGl2ZWx5LCBhbmQgY21zZ19kYXRhXG5cCitpcyBhIGJ1ZmZlci1jb21wYXRpYmxlIG9iamVjdCBob2xkaW5nIHRoZSBhc3NvY2lhdGVkIGRhdGEuICBUaGUgZmxhZ3NcblwKK2FyZ3VtZW50IGRlZmF1bHRzIHRvIDAgYW5kIGhhcyB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvciBzZW5kKCkuICBJZlxuXAorYWRkcmVzcyBpcyBzdXBwbGllZCBhbmQgbm90IE5vbmUsIGl0IHNldHMgYSBkZXN0aW5hdGlvbiBhZGRyZXNzIGZvclxuXAordGhlIG1lc3NhZ2UuICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgb2Ygbm9uLWFuY2lsbGFyeVxuXAorZGF0YSBzZW50LiIpOworI2VuZGlmICAgIC8qIENNU0dfTEVOICovCisKKwogLyogcy5zaHV0ZG93bihob3cpIG1ldGhvZCAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjg4Miw2ICszNzcyLDM0IEBACiBDb250cm9sIHRoZSBzb2NrZXQgd2l0aCBXU0FJb2N0bCBzeXNjYWxsLiBDdXJyZW50bHkgc3VwcG9ydGVkICdjbWQnIHZhbHVlcyBhcmVcblwKIFNJT19SQ1ZBTEw6ICAnb3B0aW9uJyBtdXN0IGJlIG9uZSBvZiB0aGUgc29ja2V0LlJDVkFMTF8qIGNvbnN0YW50cy5cblwKIFNJT19LRUVQQUxJVkVfVkFMUzogICdvcHRpb24nIGlzIGEgdHVwbGUgb2YgKG9ub2ZmLCB0aW1lb3V0LCBpbnRlcnZhbCkuIik7CisjZW5kaWYKKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKK3N0YXRpYyBQeU9iamVjdCoKK3NvY2tfc2hhcmUoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJnKQoreworICAgIFdTQVBST1RPQ09MX0lORk8gaW5mbzsKKyAgICBEV09SRCBwcm9jZXNzSWQ7CisgICAgaW50IHJlc3VsdDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmcsICJJIiwgJnByb2Nlc3NJZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlc3VsdCA9IFdTQUR1cGxpY2F0ZVNvY2tldChzLT5zb2NrX2ZkLCBwcm9jZXNzSWQsICZpbmZvKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChyZXN1bHQgPT0gU09DS0VUX0VSUk9SKQorICAgICAgICByZXR1cm4gc2V0X2Vycm9yKCk7CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIqKSZpbmZvLCBzaXplb2YoaW5mbykpOworfQorUHlEb2NfU1RSVkFSKHNvY2tfc2hhcmVfZG9jLAorInNoYXJlKHByb2Nlc3NfaWQpIC0+IGJ5dGVzXG5cCitcblwKK1NoYXJlIHRoZSBzb2NrZXQgd2l0aCBhbm90aGVyIHByb2Nlc3MuICBUaGUgdGFyZ2V0IHByb2Nlc3MgaWRcblwKK211c3QgYmUgcHJvdmlkZWQgYW5kIHRoZSByZXN1bHRpbmcgYnl0ZXMgb2JqZWN0IHBhc3NlZCB0byB0aGUgdGFyZ2V0XG5cCitwcm9jZXNzLiAgVGhlcmUgdGhlIHNoYXJlZCBzb2NrZXQgY2FuIGJlIGluc3RhbnRpYXRlZCBieSBjYWxsaW5nXG5cCitzb2NrZXQuZnJvbXNoYXJlKCkuIik7CisKIAogI2VuZGlmCiAKQEAgLTI5MTQsNiArMzgzMiwxMCBAQAogICAgIHsiaW9jdGwiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19pb2N0bCwgTUVUSF9WQVJBUkdTLAogICAgICAgICAgICAgICAgICAgICAgIHNvY2tfaW9jdGxfZG9jfSwKICNlbmRpZgorI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyAgICB7InNoYXJlIiwgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19zaGFyZSwgTUVUSF9WQVJBUkdTLAorICAgICAgICAgICAgICAgICAgICAgIHNvY2tfc2hhcmVfZG9jfSwKKyNlbmRpZgogICAgIHsibGlzdGVuIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19saXN0ZW4sIE1FVEhfTywKICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5fZG9jfSwKICAgICB7InJlY3YiLCAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfcmVjdiwgTUVUSF9WQVJBUkdTLApAQCAtMjk0MCw2ICszODYyLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgc2V0c29ja29wdF9kb2N9LAogICAgIHsic2h1dGRvd24iLCAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19zaHV0ZG93biwgTUVUSF9PLAogICAgICAgICAgICAgICAgICAgICAgIHNodXRkb3duX2RvY30sCisjaWZkZWYgQ01TR19MRU4KKyAgICB7InJlY3Ztc2ciLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfcmVjdm1zZywgTUVUSF9WQVJBUkdTLAorICAgICAgICAgICAgICAgICAgICAgIHJlY3Ztc2dfZG9jfSwKKyAgICB7InJlY3Ztc2dfaW50byIsICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfcmVjdm1zZ19pbnRvLCBNRVRIX1ZBUkFSR1MsCisgICAgICAgICAgICAgICAgICAgICAgcmVjdm1zZ19pbnRvX2RvYyx9LAorICAgIHsic2VuZG1zZyIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19zZW5kbXNnLCBNRVRIX1ZBUkFSR1MsCisgICAgICAgICAgICAgICAgICAgICAgc2VuZG1zZ19kb2N9LAorI2VuZGlmCiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMzAzMywxMyArMzk2Myw0MCBAQAogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoZmRvYmogIT0gTlVMTCAmJiBmZG9iaiAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIGZkID0gUHlMb25nX0FzU29ja2V0X3QoZmRvYmopOwotICAgICAgICBpZiAoZmQgPT0gKFNPQ0tFVF9UKSgtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKGZkID09IElOVkFMSURfU09DS0VUKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgdXNlIGludmFsaWQgc29ja2V0IHZhbHVlIik7Ci0gICAgICAgICAgICByZXR1cm4gLTE7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAvKiByZWNyZWF0ZSBhIHNvY2tldCB0aGF0IHdhcyBkdXBsaWNhdGVkICovCisgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKGZkb2JqKSkgeworICAgICAgICAgICAgV1NBUFJPVE9DT0xfSU5GTyBpbmZvOworICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUoZmRvYmopICE9IHNpemVvZihpbmZvKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAic29ja2V0IGRlc2NyaXB0b3Igc3RyaW5nIGhhcyB3cm9uZyBzaXplLCAiCisgICAgICAgICAgICAgICAgICAgICJzaG91bGQgYmUgJXp1IGJ5dGVzLiIsIHNpemVvZihpbmZvKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVtY3B5KCZpbmZvLCBQeUJ5dGVzX0FTX1NUUklORyhmZG9iaiksIHNpemVvZihpbmZvKSk7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICBmZCA9IFdTQVNvY2tldChGUk9NX1BST1RPQ09MX0lORk8sIEZST01fUFJPVE9DT0xfSU5GTywKKyAgICAgICAgICAgICAgICAgICAgIEZST01fUFJPVE9DT0xfSU5GTywgJmluZm8sIDAsIFdTQV9GTEFHX09WRVJMQVBQRUQpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGlmIChmZCA9PSBJTlZBTElEX1NPQ0tFVCkgeworICAgICAgICAgICAgICAgIHNldF9lcnJvcigpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZhbWlseSA9IGluZm8uaUFkZHJlc3NGYW1pbHk7CisgICAgICAgICAgICB0eXBlID0gaW5mby5pU29ja2V0VHlwZTsKKyAgICAgICAgICAgIHByb3RvID0gaW5mby5pUHJvdG9jb2w7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHsKKyAgICAgICAgICAgIGZkID0gUHlMb25nX0FzU29ja2V0X3QoZmRvYmopOworICAgICAgICAgICAgaWYgKGZkID09IChTT0NLRVRfVCkoLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgaWYgKGZkID09IElOVkFMSURfU09DS0VUKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCB1c2UgaW52YWxpZCBzb2NrZXQgdmFsdWUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CkBAIC0zMTE1LDI1ICs0MDcyLDM1IEBACiAgICAgICAgdmVyc2lvbiBvZiB0aGUgaG9zdG5hbWUsIHdoZXJlYXMgd2UgbmVlZCBhIFVuaWNvZGUgc3RyaW5nLgogICAgICAgIE90aGVyd2lzZSwgZ2V0aG9zdG5hbWUgYXBwYXJlbnRseSBhbHNvIHJldHVybnMgdGhlIEROUyBuYW1lLiAqLwogICAgIHdjaGFyX3QgYnVmW01BWF9DT01QVVRFUk5BTUVfTEVOR1RIICsgMV07Ci0gICAgRFdPUkQgc2l6ZSA9IHNpemVvZihidWYpIC8gc2l6ZW9mKHdjaGFyX3QpOworICAgIERXT1JEIHNpemUgPSBQeV9BUlJBWV9MRU5HVEgoYnVmKTsKKyAgICB3Y2hhcl90ICpuYW1lOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgaWYgKCFHZXRDb21wdXRlck5hbWVFeFcoQ29tcHV0ZXJOYW1lUGh5c2ljYWxEbnNIb3N0bmFtZSwgYnVmLCAmc2l6ZSkpIHsKLSAgICAgICAgaWYgKEdldExhc3RFcnJvcigpID09IEVSUk9SX01PUkVfREFUQSkgewotICAgICAgICAgICAgLyogTVNETiBzYXlzIHRoaXMgbWF5IG9jY3VyICJiZWNhdXNlIEROUyBhbGxvd3MgbG9uZ2VyIG5hbWVzICovCi0gICAgICAgICAgICBpZiAoc2l6ZSA9PSAwKSAvKiBYWFg6IEknbSBub3Qgc3VyZSBob3cgdG8gaGFuZGxlIHRoaXMgKi8KLSAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIDApOwotICAgICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHNpemUgLSAxKTsKLSAgICAgICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgaWYgKEdldENvbXB1dGVyTmFtZUV4VyhDb21wdXRlck5hbWVQaHlzaWNhbERuc0hvc3RuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2l6ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19XaW5kb3dzRXJyb3IsIEdldExhc3RFcnJvcigpKTsKKworICAgIGlmIChHZXRDb21wdXRlck5hbWVFeFcoQ29tcHV0ZXJOYW1lUGh5c2ljYWxEbnNIb3N0bmFtZSwgYnVmLCAmc2l6ZSkpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGJ1Ziwgc2l6ZSk7CisKKyAgICBpZiAoR2V0TGFzdEVycm9yKCkgIT0gRVJST1JfTU9SRV9EQVRBKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICBpZiAoc2l6ZSA9PSAwKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX05ldygwLCAwKTsKKworICAgIC8qIE1TRE4gc2F5cyBFUlJPUl9NT1JFX0RBVEEgbWF5IG9jY3VyIGJlY2F1c2UgRE5TIGFsbG93cyBsb25nZXIKKyAgICAgICBuYW1lcyAqLworICAgIG5hbWUgPSBQeU1lbV9NYWxsb2Moc2l6ZSAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIUdldENvbXB1dGVyTmFtZUV4VyhDb21wdXRlck5hbWVQaHlzaWNhbERuc0hvc3RuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaXplKSkKKyAgICB7CisgICAgICAgIFB5TWVtX0ZyZWUobmFtZSk7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShidWYsIHNpemUpOyAgICAgICAgICAgIAorCisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihuYW1lLCBzaXplKTsKKyAgICBQeU1lbV9GcmVlKG5hbWUpOworICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQogICAgIGNoYXIgYnVmWzEwMjRdOwogICAgIGludCByZXM7CkBAIC0zMTUyLDYgKzQxMTksMzcgQEAKIFxuXAogUmV0dXJuIHRoZSBjdXJyZW50IGhvc3QgbmFtZS4iKTsKIAorI2lmZGVmIEhBVkVfU0VUSE9TVE5BTUUKK1B5RG9jX1NUUlZBUihzZXRob3N0bmFtZV9kb2MsCisic2V0aG9zdG5hbWUobmFtZSlcblxuXAorU2V0cyB0aGUgaG9zdG5hbWUgdG8gbmFtZS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tldF9zZXRob3N0bmFtZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKmhub2JqOworICAgIFB5X2J1ZmZlciBidWY7CisgICAgaW50IHJlcywgZmxhZyA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlM6c2V0aG9zdG5hbWUiLCAmaG5vYmopKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6c2V0aG9zdG5hbWUiLAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJmhub2JqKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBmbGFnID0gMTsKKyAgICB9CisgICAgcmVzID0gUHlPYmplY3RfR2V0QnVmZmVyKGhub2JqLCAmYnVmLCBQeUJVRl9TSU1QTEUpOworICAgIGlmICghcmVzKSB7CisgICAgICAgIHJlcyA9IHNldGhvc3RuYW1lKGJ1Zi5idWYsIGJ1Zi5sZW4pOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIH0KKyAgICBpZiAoZmxhZykKKyAgICAgICAgUHlfREVDUkVGKGhub2JqKTsKKyAgICBpZiAocmVzKQorICAgICAgICByZXR1cm4gc2V0X2Vycm9yKCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKIAogLyogUHl0aG9uIGludGVyZmFjZSB0byBnZXRob3N0YnluYW1lKG5hbWUpLiAqLwogCkBAIC0zMTk4LDkgKzQxOTYsOCBAQAogCiAgICAgaWYgKGgtPmhfYWRkcnR5cGUgIT0gYWYpIHsKICAgICAgICAgLyogTGV0J3MgZ2V0IHJlYWwgZXJyb3IgbWVzc2FnZSB0byByZXR1cm4gKi8KLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopc3RyZXJyb3IoRUFGTk9TVVBQT1JUKSk7Ci0KKyAgICAgICAgZXJybm8gPSBFQUZOT1NVUFBPUlQ7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0zMjgzLDcgKzQyODAsNyBAQAogI2VuZGlmCiAKICAgICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgLyogY2FuJ3QgaGFwcGVuICovCi0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuc3VwcG9ydGVkIGFkZHJlc3MgZmFtaWx5Iik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMzMxNSwxMSArNDMxMiw3IEBACiB7CiAgICAgY2hhciAqbmFtZTsKICAgICBzdHJ1Y3QgaG9zdGVudCAqaDsKLSNpZmRlZiBFTkFCTEVfSVBWNgotICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGFkZHI7Ci0jZWxzZQotICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOwotI2VuZGlmCisgICAgc29ja19hZGRyX3QgYWRkcjsKICAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhOwogICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwogI2lmZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SCkBAIC0zMzMxLDE5ICs0MzI0LDE5IEBACiAgICAgaW50IGJ1Zl9sZW4gPSAoc2l6ZW9mIGJ1ZikgLSAxOwogICAgIGludCBlcnJub3A7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHKSB8fCBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzZfQVJHKQorI2lmZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHCiAgICAgaW50IHJlc3VsdDsKICNlbmRpZgogI2VuZGlmIC8qIEhBVkVfR0VUSE9TVEJZTkFNRV9SICovCiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImV0OmdldGhvc3RieW5hbWVfZXgiLCAiaWRuYSIsICZuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNldGlwYWRkcihuYW1lLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihhZGRyKSwgQUZfSU5FVCkgPCAwKQorICAgIGlmIChzZXRpcGFkZHIobmFtZSwgU0FTMlNBKCZhZGRyKSwgc2l6ZW9mKGFkZHIpLCBBRl9JTkVUKSA8IDApCiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgSEFWRV9HRVRIT1NUQllOQU1FX1IKICNpZiAgIGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1JfNl9BUkcpCi0gICAgcmVzdWx0ID0gZ2V0aG9zdGJ5bmFtZV9yKG5hbWUsICZocF9hbGxvY2F0ZWQsIGJ1ZiwgYnVmX2xlbiwKKyAgICBnZXRob3N0YnluYW1lX3IobmFtZSwgJmhwX2FsbG9jYXRlZCwgYnVmLCBidWZfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaCwgJmVycm5vcCk7CiAjZWxpZiBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzVfQVJHKQogICAgIGggPSBnZXRob3N0YnluYW1lX3IobmFtZSwgJmhwX2FsbG9jYXRlZCwgYnVmLCBidWZfbGVuLCAmZXJybm9wKTsKQEAgLTMzNjMsOCArNDM1Niw4IEBACiAgICAgICAgYWRkci5zc19mYW1pbHkuCiAgICAgICAgVGhlcmVmb3JlLCB3ZSBjYXN0IHRoZSBzb2NrYWRkcl9zdG9yYWdlIGludG8gc29ja2FkZHIgdG8KICAgICAgICBhY2Nlc3Mgc2FfZmFtaWx5LiAqLwotICAgIHNhID0gKHN0cnVjdCBzb2NrYWRkciopJmFkZHI7Ci0gICAgcmV0ID0gZ2V0aG9zdF9jb21tb24oaCwgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLCBzaXplb2YoYWRkciksCisgICAgc2EgPSBTQVMyU0EoJmFkZHIpOworICAgIHJldCA9IGdldGhvc3RfY29tbW9uKGgsIFNBUzJTQSgmYWRkciksIHNpemVvZihhZGRyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzYS0+c2FfZmFtaWx5KTsKICNpZmRlZiBVU0VfR0VUSE9TVEJZTkFNRV9MT0NLCiAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKG5ldGRiX2xvY2spOwpAQCAtMzM4NywxMiArNDM4MCw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc29ja2V0X2dldGhvc3RieWFkZHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotI2lmZGVmIEVOQUJMRV9JUFY2Ci0gICAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgYWRkcjsKLSNlbHNlCi0gICAgc3RydWN0IHNvY2thZGRyX2luIGFkZHI7Ci0jZW5kaWYKLSAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhID0gKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyOworICAgIHNvY2tfYWRkcl90IGFkZHI7CisgICAgc3RydWN0IHNvY2thZGRyICpzYSA9IFNBUzJTQSgmYWRkcik7CiAgICAgY2hhciAqaXBfbnVtOwogICAgIHN0cnVjdCBob3N0ZW50ICpoOwogICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwpAQCAtMzQwOSw3ICs0Mzk4LDcgQEAKICAgICBpbnQgYnVmX2xlbiA9IChzaXplb2YgYnVmKSAtIDE7CiAgICAgaW50IGVycm5vcDsKICNlbmRpZgotI2lmIGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1JfM19BUkcpIHx8IGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1JfNl9BUkcpCisjaWZkZWYgSEFWRV9HRVRIT1NUQllOQU1FX1JfM19BUkcKICAgICBpbnQgcmVzdWx0OwogI2VuZGlmCiAjZW5kaWYgLyogSEFWRV9HRVRIT1NUQllOQU1FX1IgKi8KQEAgLTM0MjQsNyArNDQxMyw3IEBACiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICBhZiA9IHNhLT5zYV9mYW1pbHk7CiAgICAgYXAgPSBOVUxMOwotICAgIGFsID0gMDsKKyAgICAvKiBhbCA9IDA7ICovCiAgICAgc3dpdGNoIChhZikgewogICAgIGNhc2UgQUZfSU5FVDoKICAgICAgICAgYXAgPSAoY2hhciAqKSYoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKXNhKS0+c2luX2FkZHI7CkBAIC0zNDM3LDEzICs0NDI2LDEzIEBACiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgZGVmYXVsdDoKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgInVuc3VwcG9ydGVkIGFkZHJlc3MgZmFtaWx5Iik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAidW5zdXBwb3J0ZWQgYWRkcmVzcyBmYW1pbHkiKTsKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIH0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgSEFWRV9HRVRIT1NUQllOQU1FX1IKICNpZiAgIGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1JfNl9BUkcpCi0gICAgcmVzdWx0ID0gZ2V0aG9zdGJ5YWRkcl9yKGFwLCBhbCwgYWYsCisgICAgZ2V0aG9zdGJ5YWRkcl9yKGFwLCBhbCwgYWYsCiAgICAgICAgICZocF9hbGxvY2F0ZWQsIGJ1ZiwgYnVmX2xlbiwKICAgICAgICAgJmgsICZlcnJub3ApOwogI2VsaWYgZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUl81X0FSRykKQEAgLTM0NjEsNyArNDQ1MCw3IEBACiAgICAgaCA9IGdldGhvc3RieWFkZHIoYXAsIGFsLCBhZik7CiAjZW5kaWYgLyogSEFWRV9HRVRIT1NUQllOQU1FX1IgKi8KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIHJldCA9IGdldGhvc3RfY29tbW9uKGgsIChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkciwgc2l6ZW9mKGFkZHIpLCBhZik7CisgICAgcmV0ID0gZ2V0aG9zdF9jb21tb24oaCwgU0FTMlNBKCZhZGRyKSwgc2l6ZW9mKGFkZHIpLCBhZik7CiAjaWZkZWYgVVNFX0dFVEhPU1RCWU5BTUVfTE9DSwogICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhuZXRkYl9sb2NrKTsKICNlbmRpZgpAQCAtMzQ5Myw3ICs0NDgyLDcgQEAKICAgICBzcCA9IGdldHNlcnZieW5hbWUobmFtZSwgcHJvdG8pOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHNwID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgInNlcnZpY2UvcHJvdG8gbm90IGZvdW5kIik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAic2VydmljZS9wcm90byBub3QgZm91bmQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIG50b2hzKHNwLT5zX3BvcnQpKTsKQEAgLTM1MzAsNyArNDUxOSw3IEBACiAgICAgc3AgPSBnZXRzZXJ2Ynlwb3J0KGh0b25zKChzaG9ydClwb3J0KSwgcHJvdG8pOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHNwID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgInBvcnQvcHJvdG8gbm90IGZvdW5kIik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAicG9ydC9wcm90byBub3QgZm91bmQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhzcC0+c19uYW1lKTsKQEAgLTM1NTksNyArNDU0OCw3IEBACiAgICAgc3AgPSBnZXRwcm90b2J5bmFtZShuYW1lKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChzcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJwcm90b2NvbCBub3QgZm91bmQiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJwcm90b2NvbCBub3QgZm91bmQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHNwLT5wX3Byb3RvKTsKQEAgLTM4MTQsNyArNDgwMyw3IEBACiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopKCZidWYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGJ1ZikpOwogCi0gICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgImlsbGVnYWwgSVAgYWRkcmVzcyBzdHJpbmcgcGFzc2VkIHRvIGluZXRfYXRvbiIpOwogICAgIHJldHVybiBOVUxMOwogCkBAIC0zODM1LDcgKzQ4MjQsNyBAQAogICAgICAgICBwYWNrZWRfYWRkciA9IGluZXRfYWRkcihpcF9hZGRyKTsKIAogICAgICAgICBpZiAocGFja2VkX2FkZHIgPT0gSU5BRERSX05PTkUpIHsgICAgICAgICAgICAgICAvKiBpbnZhbGlkIGFkZHJlc3MgKi8KLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAiaWxsZWdhbCBJUCBhZGRyZXNzIHN0cmluZyBwYXNzZWQgdG8gaW5ldF9hdG9uIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMzg2Nyw3ICs0ODU2LDcgQEAKICAgICB9CiAKICAgICBpZiAoYWRkcl9sZW4gIT0gc2l6ZW9mKHBhY2tlZF9hZGRyKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICJwYWNrZWQgSVAgd3JvbmcgbGVuZ3RoIGZvciBpbmV0X250b2EiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMzkwMiw3ICs0ODkxLDcgQEAKIAogI2lmICFkZWZpbmVkKEVOQUJMRV9JUFY2KSAmJiBkZWZpbmVkKEFGX0lORVQ2KQogICAgIGlmKGFmID09IEFGX0lORVQ2KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHVzZSBBRl9JTkVUNiwgSVB2NiBpcyBkaXNhYmxlZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0zOTEwLDEwICs0ODk5LDEwIEBACiAKICAgICByZXR2YWwgPSBpbmV0X3B0b24oYWYsIGlwLCBwYWNrZWQpOwogICAgIGlmIChyZXR2YWwgPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhzb2NrZXRfZXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSBpZiAocmV0dmFsID09IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAiaWxsZWdhbCBJUCBhZGRyZXNzIHN0cmluZyBwYXNzZWQgdG8gaW5ldF9wdG9uIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSBpZiAoYWYgPT0gQUZfSU5FVCkgewpAQCAtMzkyNSw3ICs0OTE0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKTsKICNlbmRpZgogICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJ1bmtub3duIGFkZHJlc3MgZmFtaWx5Iik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAidW5rbm93biBhZGRyZXNzIGZhbWlseSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiB9CkBAIC0zOTc3LDcgKzQ5NjYsNyBAQAogCiAgICAgcmV0dmFsID0gaW5ldF9udG9wKGFmLCBwYWNrZWQsIGlwLCBzaXplb2YoaXApKTsKICAgICBpZiAoIXJldHZhbCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oc29ja2V0X2Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcocmV0dmFsKTsKQEAgLTM5OTYsNyArNDk4NSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc29ja2V0X2dldGFkZHJpbmZvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QqIGt3YXJncykKIHsKLSAgICBzdGF0aWMgY2hhcioga3duYW1lc1tdID0geyJob3N0IiwgInBvcnQiLCAiZmFtaWx5IiwgInR5cGUiLCAicHJvdG8iLCAKKyAgICBzdGF0aWMgY2hhcioga3duYW1lc1tdID0geyJob3N0IiwgInBvcnQiLCAiZmFtaWx5IiwgInR5cGUiLCAicHJvdG8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsYWdzIiwgMH07CiAgICAgc3RydWN0IGFkZHJpbmZvIGhpbnRzLCAqcmVzOwogICAgIHN0cnVjdCBhZGRyaW5mbyAqcmVzMCA9IE5VTEw7CkBAIC00MDExLDcgKzUwMDAsNyBAQAogCiAgICAgZmFtaWx5ID0gc29ja3R5cGUgPSBwcm90b2NvbCA9IGZsYWdzID0gMDsKICAgICBmYW1pbHkgPSBBRl9VTlNQRUM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT098aWlpaTpnZXRhZGRyaW5mbyIsIAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PfGlpaWk6Z2V0YWRkcmluZm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICBrd25hbWVzLCAmaG9iaiwgJnBvYmosICZmYW1pbHksICZzb2NrdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb3RvY29sLCAmZmxhZ3MpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDAxOSw3ICs1MDA4LDkgQEAKICAgICBpZiAoaG9iaiA9PSBQeV9Ob25lKSB7CiAgICAgICAgIGhwdHIgPSBOVUxMOwogICAgIH0gZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKGhvYmopKSB7Ci0gICAgICAgIGlkbmEgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGhvYmosICJlbmNvZGUiLCAicyIsICJpZG5hIik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGVuY29kZSk7CisKKyAgICAgICAgaWRuYSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaG9iaiwgJlB5SWRfZW5jb2RlLCAicyIsICJpZG5hIik7CiAgICAgICAgIGlmICghaWRuYSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhpZG5hKSk7CkBAIC00MDQ2LDcgKzUwMzcsNyBAQAogICAgIH0gZWxzZSBpZiAocG9iaiA9PSBQeV9Ob25lKSB7CiAgICAgICAgIHBwdHIgPSAoY2hhciAqKU5VTEw7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgIkludCBvciBTdHJpbmcgZXhwZWN0ZWQiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJJbnQgb3IgU3RyaW5nIGV4cGVjdGVkIik7CiAgICAgICAgIGdvdG8gZXJyOwogICAgIH0KICAgICBtZW1zZXQoJmhpbnRzLCAwLCBzaXplb2YoaGludHMpKTsKQEAgLTQxNDksNyArNTE0MCw3IEBACiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAgICAgaWYgKHJlcy0+YWlfbmV4dCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICJzb2NrYWRkciByZXNvbHZlZCB0byBtdWx0aXBsZSBhZGRyZXNzZXMiKTsKICAgICAgICAgZ290byBmYWlsOwogICAgIH0KQEAgLTQxNTcsNyArNTE0OCw3IEBACiAgICAgY2FzZSBBRl9JTkVUOgogICAgICAgICB7CiAgICAgICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKHNhKSAhPSAyKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgIklQdjQgc29ja2FkZHIgbXVzdCBiZSAyIHR1cGxlIik7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KQEAgLTQyNDQsNiArNTIzNSwxNjMgQEAKIEEgdmFsdWUgb2YgTm9uZSBpbmRpY2F0ZXMgdGhhdCBuZXcgc29ja2V0IG9iamVjdHMgaGF2ZSBubyB0aW1lb3V0LlxuXAogV2hlbiB0aGUgc29ja2V0IG1vZHVsZSBpcyBmaXJzdCBpbXBvcnRlZCwgdGhlIGRlZmF1bHQgaXMgTm9uZS4iKTsKIAorI2lmZGVmIEhBVkVfSUZfTkFNRUlOREVYCisvKiBQeXRob24gQVBJIGZvciBnZXR0aW5nIGludGVyZmFjZSBpbmRpY2VzIGFuZCBuYW1lcyAqLworCitzdGF0aWMgUHlPYmplY3QgKgorc29ja2V0X2lmX25hbWVpbmRleChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqbGlzdDsKKyAgICBpbnQgaTsKKyAgICBzdHJ1Y3QgaWZfbmFtZWluZGV4ICpuaTsKKworICAgIG5pID0gaWZfbmFtZWluZGV4KCk7CisgICAgaWYgKG5pID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAobGlzdCA9PSBOVUxMKSB7CisgICAgICAgIGlmX2ZyZWVuYW1laW5kZXgobmkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBuaVtpXS5pZl9pbmRleCAhPSAwICYmIGkgPCBJTlRfTUFYOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKm5pX3R1cGxlID0gUHlfQnVpbGRWYWx1ZSgiSU8mIiwKKyAgICAgICAgICAgICAgICBuaVtpXS5pZl9pbmRleCwgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdCwgbmlbaV0uaWZfbmFtZSk7CisKKyAgICAgICAgaWYgKG5pX3R1cGxlID09IE5VTEwgfHwgUHlMaXN0X0FwcGVuZChsaXN0LCBuaV90dXBsZSkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYobmlfdHVwbGUpOworICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgaWZfZnJlZW5hbWVpbmRleChuaSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYobmlfdHVwbGUpOworICAgIH0KKworICAgIGlmX2ZyZWVuYW1laW5kZXgobmkpOworICAgIHJldHVybiBsaXN0OworfQorCitQeURvY19TVFJWQVIoaWZfbmFtZWluZGV4X2RvYywKKyJpZl9uYW1laW5kZXgoKVxuXAorXG5cCitSZXR1cm5zIGEgbGlzdCBvZiBuZXR3b3JrIGludGVyZmFjZSBpbmZvcm1hdGlvbiAoaW5kZXgsIG5hbWUpIHR1cGxlcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tldF9pZl9uYW1ldG9pbmRleChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9uYW1lOworICAgIHVuc2lnbmVkIGxvbmcgaW5kZXg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOmlmX25hbWV0b2luZGV4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb25hbWUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGluZGV4ID0gaWZfbmFtZXRvaW5kZXgoUHlCeXRlc19BU19TVFJJTkcob25hbWUpKTsKKyAgICBQeV9ERUNSRUYob25hbWUpOworICAgIGlmIChpbmRleCA9PSAwKSB7CisgICAgICAgIC8qIGlmX25hbWV0b2luZGV4KCkgZG9lc24ndCBzZXQgZXJybm8gKi8KKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJubyBpbnRlcmZhY2Ugd2l0aCB0aGlzIG5hbWUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKGluZGV4KTsKK30KKworUHlEb2NfU1RSVkFSKGlmX25hbWV0b2luZGV4X2RvYywKKyJpZl9uYW1ldG9pbmRleChpZl9uYW1lKVxuXAorXG5cCitSZXR1cm5zIHRoZSBpbnRlcmZhY2UgaW5kZXggY29ycmVzcG9uZGluZyB0byB0aGUgaW50ZXJmYWNlIG5hbWUgaWZfbmFtZS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tldF9pZl9pbmRleHRvbmFtZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICB1bnNpZ25lZCBsb25nIGluZGV4OworICAgIGNoYXIgbmFtZVtJRl9OQU1FU0laRSArIDFdOworCisgICAgaW5kZXggPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcoYXJnKTsKKyAgICBpZiAoaW5kZXggPT0gKHVuc2lnbmVkIGxvbmcpIC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChpZl9pbmRleHRvbmFtZShpbmRleCwgbmFtZSkgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KG5hbWUpOworfQorCitQeURvY19TVFJWQVIoaWZfaW5kZXh0b25hbWVfZG9jLAorImlmX2luZGV4dG9uYW1lKGlmX2luZGV4KVxuXAorXG5cCitSZXR1cm5zIHRoZSBpbnRlcmZhY2UgbmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnRlcmZhY2UgaW5kZXggaWZfaW5kZXguIik7CisKKyNlbmRpZiAgLyogSEFWRV9JRl9OQU1FSU5ERVggKi8KKworCisjaWZkZWYgQ01TR19MRU4KKy8qIFB5dGhvbiBpbnRlcmZhY2UgdG8gQ01TR19MRU4obGVuZ3RoKS4gKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tldF9DTVNHX0xFTihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisgICAgc2l6ZV90IHJlc3VsdDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibjpDTVNHX0xFTiIsICZsZW5ndGgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAobGVuZ3RoIDwgMCB8fCAhZ2V0X0NNU0dfTEVOKGxlbmd0aCwgJnJlc3VsdCkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX092ZXJmbG93RXJyb3IsICJDTVNHX0xFTigpIGFyZ3VtZW50IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU2l6ZV90KHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUihDTVNHX0xFTl9kb2MsCisiQ01TR19MRU4obGVuZ3RoKSAtPiBjb250cm9sIG1lc3NhZ2UgbGVuZ3RoXG5cCitcblwKK1JldHVybiB0aGUgdG90YWwgbGVuZ3RoLCB3aXRob3V0IHRyYWlsaW5nIHBhZGRpbmcsIG9mIGFuIGFuY2lsbGFyeVxuXAorZGF0YSBpdGVtIHdpdGggYXNzb2NpYXRlZCBkYXRhIG9mIHRoZSBnaXZlbiBsZW5ndGguICBUaGlzIHZhbHVlIGNhblxuXAorb2Z0ZW4gYmUgdXNlZCBhcyB0aGUgYnVmZmVyIHNpemUgZm9yIHJlY3Ztc2coKSB0byByZWNlaXZlIGEgc2luZ2xlXG5cCitpdGVtIG9mIGFuY2lsbGFyeSBkYXRhLCBidXQgUkZDIDM1NDIgcmVxdWlyZXMgcG9ydGFibGUgYXBwbGljYXRpb25zIHRvXG5cCit1c2UgQ01TR19TUEFDRSgpIGFuZCB0aHVzIGluY2x1ZGUgc3BhY2UgZm9yIHBhZGRpbmcsIGV2ZW4gd2hlbiB0aGVcblwKK2l0ZW0gd2lsbCBiZSB0aGUgbGFzdCBpbiB0aGUgYnVmZmVyLiAgUmFpc2VzIE92ZXJmbG93RXJyb3IgaWYgbGVuZ3RoXG5cCitpcyBvdXRzaWRlIHRoZSBwZXJtaXNzaWJsZSByYW5nZSBvZiB2YWx1ZXMuIik7CisKKworI2lmZGVmIENNU0dfU1BBQ0UKKy8qIFB5dGhvbiBpbnRlcmZhY2UgdG8gQ01TR19TUEFDRShsZW5ndGgpLiAqLworCitzdGF0aWMgUHlPYmplY3QgKgorc29ja2V0X0NNU0dfU1BBQ0UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgbGVuZ3RoOworICAgIHNpemVfdCByZXN1bHQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm46Q01TR19TUEFDRSIsICZsZW5ndGgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAobGVuZ3RoIDwgMCB8fCAhZ2V0X0NNU0dfU1BBQ0UobGVuZ3RoLCAmcmVzdWx0KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJDTVNHX1NQQUNFKCkgYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlMb25nX0Zyb21TaXplX3QocmVzdWx0KTsKK30KKworUHlEb2NfU1RSVkFSKENNU0dfU1BBQ0VfZG9jLAorIkNNU0dfU1BBQ0UobGVuZ3RoKSAtPiBidWZmZXIgc2l6ZVxuXAorXG5cCitSZXR1cm4gdGhlIGJ1ZmZlciBzaXplIG5lZWRlZCBmb3IgcmVjdm1zZygpIHRvIHJlY2VpdmUgYW4gYW5jaWxsYXJ5XG5cCitkYXRhIGl0ZW0gd2l0aCBhc3NvY2lhdGVkIGRhdGEgb2YgdGhlIGdpdmVuIGxlbmd0aCwgYWxvbmcgd2l0aCBhbnlcblwKK3RyYWlsaW5nIHBhZGRpbmcuICBUaGUgYnVmZmVyIHNwYWNlIG5lZWRlZCB0byByZWNlaXZlIG11bHRpcGxlIGl0ZW1zXG5cCitpcyB0aGUgc3VtIG9mIHRoZSBDTVNHX1NQQUNFKCkgdmFsdWVzIGZvciB0aGVpciBhc3NvY2lhdGVkIGRhdGFcblwKK2xlbmd0aHMuICBSYWlzZXMgT3ZlcmZsb3dFcnJvciBpZiBsZW5ndGggaXMgb3V0c2lkZSB0aGUgcGVybWlzc2libGVcblwKK3JhbmdlIG9mIHZhbHVlcy4iKTsKKyNlbmRpZiAgICAvKiBDTVNHX1NQQUNFICovCisjZW5kaWYgICAgLyogQ01TR19MRU4gKi8KKwogCiAvKiBMaXN0IG9mIGZ1bmN0aW9ucyBleHBvcnRlZCBieSB0aGlzIG1vZHVsZS4gKi8KIApAQCAtNDI1Niw2ICs1NDA0LDEwIEBACiAgICAgIE1FVEhfVkFSQVJHUywgZ2V0aG9zdGJ5YWRkcl9kb2N9LAogICAgIHsiZ2V0aG9zdG5hbWUiLCAgICAgICAgICAgICBzb2NrZXRfZ2V0aG9zdG5hbWUsCiAgICAgIE1FVEhfTk9BUkdTLCAgZ2V0aG9zdG5hbWVfZG9jfSwKKyNpZmRlZiBIQVZFX1NFVEhPU1ROQU1FCisgICAgeyJzZXRob3N0bmFtZSIsICAgICAgICAgICAgIHNvY2tldF9zZXRob3N0bmFtZSwKKyAgICAgTUVUSF9WQVJBUkdTLCAgc2V0aG9zdG5hbWVfZG9jfSwKKyNlbmRpZgogICAgIHsiZ2V0c2VydmJ5bmFtZSIsICAgICAgICAgICBzb2NrZXRfZ2V0c2VydmJ5bmFtZSwKICAgICAgTUVUSF9WQVJBUkdTLCBnZXRzZXJ2YnluYW1lX2RvY30sCiAgICAgeyJnZXRzZXJ2Ynlwb3J0IiwgICAgICAgICAgIHNvY2tldF9nZXRzZXJ2Ynlwb3J0LApAQCAtNDI5Niw2ICs1NDQ4LDIyIEBACiAgICAgIE1FVEhfTk9BUkdTLCBnZXRkZWZhdWx0dGltZW91dF9kb2N9LAogICAgIHsic2V0ZGVmYXVsdHRpbWVvdXQiLCAgICAgICBzb2NrZXRfc2V0ZGVmYXVsdHRpbWVvdXQsCiAgICAgIE1FVEhfTywgc2V0ZGVmYXVsdHRpbWVvdXRfZG9jfSwKKyNpZmRlZiBIQVZFX0lGX05BTUVJTkRFWAorICAgIHsiaWZfbmFtZWluZGV4Iiwgc29ja2V0X2lmX25hbWVpbmRleCwKKyAgICAgTUVUSF9OT0FSR1MsIGlmX25hbWVpbmRleF9kb2N9LAorICAgIHsiaWZfbmFtZXRvaW5kZXgiLCBzb2NrZXRfaWZfbmFtZXRvaW5kZXgsCisgICAgIE1FVEhfVkFSQVJHUywgaWZfbmFtZXRvaW5kZXhfZG9jfSwKKyAgICB7ImlmX2luZGV4dG9uYW1lIiwgc29ja2V0X2lmX2luZGV4dG9uYW1lLAorICAgICBNRVRIX08sIGlmX2luZGV4dG9uYW1lX2RvY30sCisjZW5kaWYKKyNpZmRlZiBDTVNHX0xFTgorICAgIHsiQ01TR19MRU4iLCAgICAgICAgICAgICAgICBzb2NrZXRfQ01TR19MRU4sCisgICAgIE1FVEhfVkFSQVJHUywgQ01TR19MRU5fZG9jfSwKKyNpZmRlZiBDTVNHX1NQQUNFCisgICAgeyJDTVNHX1NQQUNFIiwgICAgICAgICAgICAgIHNvY2tldF9DTVNHX1NQQUNFLAorICAgICBNRVRIX1ZBUkFSR1MsIENNU0dfU1BBQ0VfZG9jfSwKKyNlbmRpZgorI2VuZGlmCiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAgLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTQ0MjgsMjcgKzU1OTYsMjQgQEAKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHNvY2tldF9lcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigic29ja2V0LmVycm9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfSU9FcnJvciwgTlVMTCk7Ci0gICAgaWYgKHNvY2tldF9lcnJvciA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeVNvY2tldE1vZHVsZUFQSS5lcnJvciA9IHNvY2tldF9lcnJvcjsKLSAgICBQeV9JTkNSRUYoc29ja2V0X2Vycm9yKTsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImVycm9yIiwgc29ja2V0X2Vycm9yKTsKKyAgICBQeV9JTkNSRUYoUHlFeGNfT1NFcnJvcik7CisgICAgUHlTb2NrZXRNb2R1bGVBUEkuZXJyb3IgPSBQeUV4Y19PU0Vycm9yOworICAgIFB5X0lOQ1JFRihQeUV4Y19PU0Vycm9yKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImVycm9yIiwgUHlFeGNfT1NFcnJvcik7CiAgICAgc29ja2V0X2hlcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigic29ja2V0LmhlcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRfZXJyb3IsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfT1NFcnJvciwgTlVMTCk7CiAgICAgaWYgKHNvY2tldF9oZXJyb3IgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfSU5DUkVGKHNvY2tldF9oZXJyb3IpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiaGVycm9yIiwgc29ja2V0X2hlcnJvcik7Ci0gICAgc29ja2V0X2dhaWVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJzb2NrZXQuZ2FpZXJyb3IiLCBzb2NrZXRfZXJyb3IsCisgICAgc29ja2V0X2dhaWVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJzb2NrZXQuZ2FpZXJyb3IiLCBQeUV4Y19PU0Vycm9yLAogICAgICAgICBOVUxMKTsKICAgICBpZiAoc29ja2V0X2dhaWVycm9yID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihzb2NrZXRfZ2FpZXJyb3IpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZ2FpZXJyb3IiLCBzb2NrZXRfZ2FpZXJyb3IpOwogICAgIHNvY2tldF90aW1lb3V0ID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJzb2NrZXQudGltZW91dCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0X2Vycm9yLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19PU0Vycm9yLCBOVUxMKTsKICAgICBpZiAoc29ja2V0X3RpbWVvdXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlTb2NrZXRNb2R1bGVBUEkudGltZW91dF9lcnJvciA9IHNvY2tldF90aW1lb3V0OwpAQCAtNDYzNCw2ICs1Nzk5LDMxIEBACiAgICAgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIkJEQUREUl9MT0NBTCIsICIwMDowMDowMDpGRjpGRjpGRiIpOwogI2VuZGlmCiAKKyNpZmRlZiBBRl9DQU4KKyAgICAvKiBDb250cm9sbGVyIEFyZWEgTmV0d29yayAqLworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJBRl9DQU4iLCBBRl9DQU4pOworI2VuZGlmCisjaWZkZWYgUEZfQ0FOCisgICAgLyogQ29udHJvbGxlciBBcmVhIE5ldHdvcmsgKi8KKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUEZfQ0FOIiwgUEZfQ0FOKTsKKyNlbmRpZgorCisvKiBSZWxpYWJsZSBEYXRhZ3JhbSBTb2NrZXRzICovCisjaWZkZWYgQUZfUkRTCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkFGX1JEUyIsIEFGX1JEUyk7CisjZW5kaWYKKyNpZmRlZiBQRl9SRFMKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUEZfUkRTIiwgUEZfUkRTKTsKKyNlbmRpZgorCisvKiBLZXJuZWwgZXZlbnQgbWVzc2FnZXMgKi8KKyNpZmRlZiBQRl9TWVNURU0KKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUEZfU1lTVEVNIiwgUEZfU1lTVEVNKTsKKyNlbmRpZgorI2lmZGVmIEFGX1NZU1RFTQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJBRl9TWVNURU0iLCBBRl9TWVNURU0pOworI2VuZGlmCisKICNpZmRlZiBBRl9QQUNLRVQKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9QQUNLRVQpOwogI2VuZGlmCkBAIC00NzgzLDYgKzU5NzMsMTggQEAKICNpZmRlZiAgU09fU0VURklCCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPX1NFVEZJQiIsIFNPX1NFVEZJQik7CiAjZW5kaWYKKyNpZmRlZiAgU09fUEFTU0NSRUQKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09fUEFTU0NSRUQiLCBTT19QQVNTQ1JFRCk7CisjZW5kaWYKKyNpZmRlZiAgU09fUEVFUkNSRUQKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09fUEVFUkNSRUQiLCBTT19QRUVSQ1JFRCk7CisjZW5kaWYKKyNpZmRlZiAgTE9DQUxfUEVFUkNSRUQKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9DQUxfUEVFUkNSRUQiLCBMT0NBTF9QRUVSQ1JFRCk7CisjZW5kaWYKKyNpZmRlZiAgU09fQklORFRPREVWSUNFCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fQklORFRPREVWSUNFKTsKKyNlbmRpZgogCiAgICAgLyogTWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgZm9yICJsaXN0ZW4iICovCiAjaWZkZWYgIFNPTUFYQ09OTgpAQCAtNDc5MSw2ICs1OTkzLDE3IEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPTUFYQ09OTiIsIDUpOyAvKiBDb21tb24gdmFsdWUgKi8KICNlbmRpZgogCisgICAgLyogQW5jaWxsaWFyeSBtZXNzYWdlIHR5cGVzICovCisjaWZkZWYgIFNDTV9SSUdIVFMKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU0NNX1JJR0hUUyIsIFNDTV9SSUdIVFMpOworI2VuZGlmCisjaWZkZWYgIFNDTV9DUkVERU5USUFMUworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTQ01fQ1JFREVOVElBTFMiLCBTQ01fQ1JFREVOVElBTFMpOworI2VuZGlmCisjaWZkZWYgIFNDTV9DUkVEUworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTQ01fQ1JFRFMiLCBTQ01fQ1JFRFMpOworI2VuZGlmCisKICAgICAvKiBGbGFncyBmb3Igc2VuZCwgcmVjdiAqLwogI2lmZGVmICBNU0dfT09CCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19PT0IiLCBNU0dfT09CKTsKQEAgLTQ4MjIsNiArNjAzNSwzMyBAQAogI2lmZGVmICBNU0dfRVRBRwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfRVRBRyIsIE1TR19FVEFHKTsKICNlbmRpZgorI2lmZGVmICBNU0dfTk9TSUdOQUwKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX05PU0lHTkFMIiwgTVNHX05PU0lHTkFMKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfTk9USUZJQ0FUSU9OCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19OT1RJRklDQVRJT04iLCBNU0dfTk9USUZJQ0FUSU9OKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfQ01TR19DTE9FWEVDCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19DTVNHX0NMT0VYRUMiLCBNU0dfQ01TR19DTE9FWEVDKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfRVJSUVVFVUUKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX0VSUlFVRVVFIiwgTVNHX0VSUlFVRVVFKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfQ09ORklSTQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfQ09ORklSTSIsIE1TR19DT05GSVJNKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfTU9SRQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfTU9SRSIsIE1TR19NT1JFKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfRU9GCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19FT0YiLCBNU0dfRU9GKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfQkNBU1QKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX0JDQVNUIiwgTVNHX0JDQVNUKTsKKyNlbmRpZgorI2lmZGVmICBNU0dfTUNBU1QKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX01DQVNUIiwgTVNHX01DQVNUKTsKKyNlbmRpZgogCiAgICAgLyogUHJvdG9jb2wgbGV2ZWwgYW5kIG51bWJlcnMsIHVzYWJsZSBmb3IgW2dzXWV0c29ja29wdCAqLwogI2lmZGVmICBTT0xfU09DS0VUCkBAIC00ODU3LDYgKzYwOTcsNDkgQEAKICNlbHNlCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPTF9VRFAiLCAxNyk7CiAjZW5kaWYKKyNpZmRlZiBTT0xfQ0FOX0JBU0UKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09MX0NBTl9CQVNFIiwgU09MX0NBTl9CQVNFKTsKKyNlbmRpZgorI2lmZGVmIFNPTF9DQU5fUkFXCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPTF9DQU5fUkFXIiwgU09MX0NBTl9SQVcpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fUkFXIiwgQ0FOX1JBVyk7CisjZW5kaWYKKyNpZmRlZiBIQVZFX0xJTlVYX0NBTl9ICisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9FRkZfRkxBRyIsIENBTl9FRkZfRkxBRyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9SVFJfRkxBRyIsIENBTl9SVFJfRkxBRyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9FUlJfRkxBRyIsIENBTl9FUlJfRkxBRyk7CisKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX1NGRl9NQVNLIiwgQ0FOX1NGRl9NQVNLKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX0VGRl9NQVNLIiwgQ0FOX0VGRl9NQVNLKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX0VSUl9NQVNLIiwgQ0FOX0VSUl9NQVNLKTsKKyNlbmRpZgorI2lmZGVmIEhBVkVfTElOVVhfQ0FOX1JBV19ICisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9SQVdfRklMVEVSIiwgQ0FOX1JBV19GSUxURVIpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fUkFXX0VSUl9GSUxURVIiLCBDQU5fUkFXX0VSUl9GSUxURVIpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fUkFXX0xPT1BCQUNLIiwgQ0FOX1JBV19MT09QQkFDSyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9SQVdfUkVDVl9PV05fTVNHUyIsIENBTl9SQVdfUkVDVl9PV05fTVNHUyk7CisjZW5kaWYKKyNpZmRlZiBTT0xfUkRTCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPTF9SRFMiLCBTT0xfUkRTKTsKKyNlbmRpZgorI2lmZGVmIFJEU19DQU5DRUxfU0VOVF9UTworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfQ0FOQ0VMX1NFTlRfVE8iLCBSRFNfQ0FOQ0VMX1NFTlRfVE8pOworI2VuZGlmCisjaWZkZWYgUkRTX0dFVF9NUgorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfR0VUX01SIiwgUkRTX0dFVF9NUik7CisjZW5kaWYKKyNpZmRlZiBSRFNfRlJFRV9NUgorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfRlJFRV9NUiIsIFJEU19GUkVFX01SKTsKKyNlbmRpZgorI2lmZGVmIFJEU19SRUNWRVJSCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRUNWRVJSIiwgUkRTX1JFQ1ZFUlIpOworI2VuZGlmCisjaWZkZWYgUkRTX0NPTkdfTU9OSVRPUgorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfQ09OR19NT05JVE9SIiwgUkRTX0NPTkdfTU9OSVRPUik7CisjZW5kaWYKKyNpZmRlZiBSRFNfR0VUX01SX0ZPUl9ERVNUCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19HRVRfTVJfRk9SX0RFU1QiLCBSRFNfR0VUX01SX0ZPUl9ERVNUKTsKKyNlbmRpZgogI2lmZGVmICBJUFBST1RPX0lQCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fSVAiLCBJUFBST1RPX0lQKTsKICNlbHNlCkBAIC00OTYxLDYgKzYyNDQsOSBAQAogI2lmZGVmICBJUFBST1RPX1ZSUlAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19WUlJQIiwgSVBQUk9UT19WUlJQKTsKICNlbmRpZgorI2lmZGVmICBJUFBST1RPX1NDVFAKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19TQ1RQIiwgSVBQUk9UT19TQ1RQKTsKKyNlbmRpZgogI2lmZGVmICBJUFBST1RPX0JJUAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX0JJUCIsIElQUFJPVE9fQklQKTsKICNlbmRpZgpAQCAtNDk3NCw2ICs2MjYwLDEwIEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fTUFYIiwgSVBQUk9UT19NQVgpOwogI2VuZGlmCiAKKyNpZmRlZiAgU1lTUFJPVE9fQ09OVFJPTAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTWVNQUk9UT19DT05UUk9MIiwgU1lTUFJPVE9fQ09OVFJPTCk7CisjZW5kaWYKKwogICAgIC8qIFNvbWUgcG9ydCBjb25maWd1cmF0aW9uICovCiAjaWZkZWYgIElQUE9SVF9SRVNFUlZFRAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBPUlRfUkVTRVJWRUQiLCBJUFBPUlRfUkVTRVJWRUQpOwpAQCAtNTA3Niw2ICs2MzY2LDkgQEAKICNpZmRlZiAgSVBfTUFYX01FTUJFUlNISVBTCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQX01BWF9NRU1CRVJTSElQUyIsIElQX01BWF9NRU1CRVJTSElQUyk7CiAjZW5kaWYKKyNpZmRlZiAgSVBfVFJBTlNQQVJFTlQKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBfVFJBTlNQQVJFTlQiLCBJUF9UUkFOU1BBUkVOVCk7CisjZW5kaWYKIAogICAgIC8qIElQdjYgW2dzXWV0c29ja29wdCBvcHRpb25zLCBkZWZpbmVkIGluIFJGQzI1NTMgKi8KICNpZmRlZiAgSVBWNl9KT0lOX0dST1VQCkBAIC01MjA2LDYgKzY0OTksNDQgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBYX1RZUEUiLCBJUFhfVFlQRSk7CiAjZW5kaWYKIAorLyogUmVsaWFibGUgRGF0YWdyYW0gU29ja2V0cyAqLworI2lmZGVmIFJEU19DTVNHX1JETUFfQVJHUworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfQ01TR19SRE1BX0FSR1MiLCBSRFNfQ01TR19SRE1BX0FSR1MpOworI2VuZGlmCisjaWZkZWYgUkRTX0NNU0dfUkRNQV9ERVNUCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19DTVNHX1JETUFfREVTVCIsIFJEU19DTVNHX1JETUFfREVTVCk7CisjZW5kaWYKKyNpZmRlZiBSRFNfQ01TR19SRE1BX01BUAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfQ01TR19SRE1BX01BUCIsIFJEU19DTVNHX1JETUFfTUFQKTsKKyNlbmRpZgorI2lmZGVmIFJEU19DTVNHX1JETUFfU1RBVFVTCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19DTVNHX1JETUFfU1RBVFVTIiwgUkRTX0NNU0dfUkRNQV9TVEFUVVMpOworI2VuZGlmCisjaWZkZWYgUkRTX0NNU0dfUkRNQV9VUERBVEUKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0NNU0dfUkRNQV9VUERBVEUiLCBSRFNfQ01TR19SRE1BX1VQREFURSk7CisjZW5kaWYKKyNpZmRlZiBSRFNfUkRNQV9SRUFEV1JJVEUKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX1JETUFfUkVBRFdSSVRFIiwgUkRTX1JETUFfUkVBRFdSSVRFKTsKKyNlbmRpZgorI2lmZGVmIFJEU19SRE1BX0ZFTkNFCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRE1BX0ZFTkNFIiwgUkRTX1JETUFfRkVOQ0UpOworI2VuZGlmCisjaWZkZWYgUkRTX1JETUFfSU5WQUxJREFURQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfUkRNQV9JTlZBTElEQVRFIiwgUkRTX1JETUFfSU5WQUxJREFURSk7CisjZW5kaWYKKyNpZmRlZiBSRFNfUkRNQV9VU0VfT05DRQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfUkRNQV9VU0VfT05DRSIsIFJEU19SRE1BX1VTRV9PTkNFKTsKKyNlbmRpZgorI2lmZGVmIFJEU19SRE1BX0RPTlRXQUlUCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRE1BX0RPTlRXQUlUIiwgUkRTX1JETUFfRE9OVFdBSVQpOworI2VuZGlmCisjaWZkZWYgUkRTX1JETUFfTk9USUZZX01FCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRE1BX05PVElGWV9NRSIsIFJEU19SRE1BX05PVElGWV9NRSk7CisjZW5kaWYKKyNpZmRlZiBSRFNfUkRNQV9TSUxFTlQKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX1JETUFfU0lMRU5UIiwgUkRTX1JETUFfU0lMRU5UKTsKKyNlbmRpZgorCiAgICAgLyogZ2V0e2FkZHIsbmFtZX1pbmZvIHBhcmFtZXRlcnMgKi8KICNpZmRlZiBFQUlfQUREUkZBTUlMWQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFQUlfQUREUkZBTUlMWSIsIEVBSV9BRERSRkFNSUxZKTsKQEAgLTUzMzIsNyArNjY2Myw3IEBACiAgICAgICAgIERXT1JEIGNvZGVzW10gPSB7U0lPX1JDVkFMTCwgU0lPX0tFRVBBTElWRV9WQUxTfTsKICAgICAgICAgY29uc3QgY2hhciAqbmFtZXNbXSA9IHsiU0lPX1JDVkFMTCIsICJTSU9fS0VFUEFMSVZFX1ZBTFMifTsKICAgICAgICAgaW50IGk7Ci0gICAgICAgIGZvcihpID0gMDsgaTxzaXplb2YoY29kZXMpL3NpemVvZigqY29kZXMpOyArK2kpIHsKKyAgICAgICAgZm9yKGkgPSAwOyBpPFB5X0FSUkFZX0xFTkdUSChjb2Rlcyk7ICsraSkgewogICAgICAgICAgICAgUHlPYmplY3QgKnRtcDsKICAgICAgICAgICAgIHRtcCA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKGNvZGVzW2ldKTsKICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmggYi9Nb2R1bGVzL3NvY2tldG1vZHVsZS5oCmluZGV4IGYwNjQ3OTUuLjA0MzU4NzggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc29ja2V0bW9kdWxlLmgKKysrIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuaApAQCAtNTksOSArNTksMTIgQEAKICNpbmNsdWRlIDxibHVldG9vdGguaD4KICNlbmRpZgogCisjaWZkZWYgSEFWRV9ORVRfSUZfSAorIyBpbmNsdWRlIDxuZXQvaWYuaD4KKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9ORVRQQUNLRVRfUEFDS0VUX0gKICMgaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0jIGluY2x1ZGUgPG5ldC9pZi5oPgogIyBpbmNsdWRlIDxuZXRwYWNrZXQvcGFja2V0Lmg+CiAjZW5kaWYKIApAQCAtNjksNiArNzIsMjEgQEAKICMgaW5jbHVkZSA8bGludXgvdGlwYy5oPgogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX0xJTlVYX0NBTl9ICisjaW5jbHVkZSA8bGludXgvY2FuLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfTElOVVhfQ0FOX1JBV19ICisjaW5jbHVkZSA8bGludXgvY2FuL3Jhdy5oPgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NZU19TWVNfRE9NQUlOX0gKKyNpbmNsdWRlIDxzeXMvc3lzX2RvbWFpbi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfS0VSTl9DT05UUk9MX0gKKyNpbmNsdWRlIDxzeXMva2Vybl9jb250cm9sLmg+CisjZW5kaWYKKwogI2lmbmRlZiBQeV9fU09DS0VUX0gKICNkZWZpbmUgUHlfX1NPQ0tFVF9ICiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTEwNCw2ICsxMjIsNyBAQAogLyogU29ja2V0IGFkZHJlc3MgKi8KIHR5cGVkZWYgdW5pb24gc29ja19hZGRyIHsKICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gaW47CisgICAgc3RydWN0IHNvY2thZGRyIHNhOwogI2lmZGVmIEFGX1VOSVgKICAgICBzdHJ1Y3Qgc29ja2FkZHJfdW4gdW47CiAjZW5kaWYKQEAgLTEyMyw2ICsxNDIsMTIgQEAKICNpZmRlZiBIQVZFX05FVFBBQ0tFVF9QQUNLRVRfSAogICAgIHN0cnVjdCBzb2NrYWRkcl9sbCBsbDsKICNlbmRpZgorI2lmZGVmIEhBVkVfTElOVVhfQ0FOX0gKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfY2FuIGNhbjsKKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX0tFUk5fQ09OVFJPTF9ICisgICAgc3RydWN0IHNvY2thZGRyX2N0bCBjdGw7CisjZW5kaWYKIH0gc29ja19hZGRyX3Q7CiAKIC8qIFRoZSBvYmplY3QgaG9sZGluZyBhIHNvY2tldC4gIEl0IGhvbGRzIHNvbWUgZXh0cmEgaW5mb3JtYXRpb24sCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NyZS5oIGIvTW9kdWxlcy9zcmUuaAppbmRleCA2ODE5Njk4Li4xYTZjZDU2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NyZS5oCisrKyBiL01vZHVsZXMvc3JlLmgKQEAgLTMxLDcgKzMxLDggQEAKICAgICBQeU9iamVjdCogcGF0dGVybjsgLyogcGF0dGVybiBzb3VyY2UgKG9yIE5vbmUpICovCiAgICAgaW50IGZsYWdzOyAvKiBmbGFncyB1c2VkIHdoZW4gY29tcGlsaW5nIHBhdHRlcm4gc291cmNlICovCiAgICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OyAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyAqLwotCWludCBjaGFyc2l6ZTsgLyogcGF0dGVybiBjaGFyc2l6ZSAob3IgLTEpICovCisgICAgaW50IGxvZ2ljYWxfY2hhcnNpemU7IC8qIHBhdHRlcm4gY2hhcnNpemUgKG9yIC0xKSAqLworICAgIGludCBjaGFyc2l6ZTsKICAgICBQeV9idWZmZXIgdmlldzsKICAgICAvKiBwYXR0ZXJuIGNvZGUgKi8KICAgICBQeV9zc2l6ZV90IGNvZGVzaXplOwpAQCAtNzMsNiArNzQsNyBAQAogICAgIFB5T2JqZWN0KiBzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBwb3MsIGVuZHBvczsKICAgICAvKiBjaGFyYWN0ZXIgc2l6ZSAqLworICAgIGludCBsb2dpY2FsX2NoYXJzaXplOyAvKiBraW5kIG9mIHRoaW5nOiAxIC0gYnl0ZXMsIDIvNCAtIHVuaWNvZGUgKi8KICAgICBpbnQgY2hhcnNpemU7CiAgICAgLyogcmVnaXN0ZXJzICovCiAgICAgUHlfc3NpemVfdCBsYXN0aW5kZXg7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3N5c2xvZ21vZHVsZS5jIGIvTW9kdWxlcy9zeXNsb2dtb2R1bGUuYwppbmRleCA1Yjg2OTYzLi44Yjg3N2NmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3N5c2xvZ21vZHVsZS5jCisrKyBiL01vZHVsZXMvc3lzbG9nbW9kdWxlLmMKQEAgLTcwLDcgKzcwLDcgQEAKIAogICAgIFB5X3NzaXplX3QgYXJndl9sZW4sIHNjcmlwdGxlbjsKICAgICBQeU9iamVjdCAqc2NyaXB0b2JqOwotICAgIFB5X1VOSUNPREUgKmF0c2xhc2gsICphdHN0YXJ0OworICAgIFB5X3NzaXplX3Qgc2xhc2g7CiAgICAgUHlPYmplY3QgKmFyZ3YgPSBQeVN5c19HZXRPYmplY3QoImFyZ3YiKTsKIAogICAgIGlmIChhcmd2ID09IE5VTEwpIHsKQEAgLTkwLDE2ICs5MCwxNiBAQAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHNjcmlwdG9iaikpIHsKICAgICAgICAgcmV0dXJuKE5VTEwpOwogICAgIH0KLSAgICBzY3JpcHRsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoc2NyaXB0b2JqKTsKKyAgICBzY3JpcHRsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzY3JpcHRvYmopOwogICAgIGlmIChzY3JpcHRsZW4gPT0gMCkgewogICAgICAgICByZXR1cm4oTlVMTCk7CiAgICAgfQogCi0gICAgYXRzdGFydCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNjcmlwdG9iaik7Ci0gICAgYXRzbGFzaCA9IFB5X1VOSUNPREVfc3RycmNocihhdHN0YXJ0LCBTRVApOwotICAgIGlmIChhdHNsYXNoKSB7Ci0gICAgICAgIHJldHVybihQeVVuaWNvZGVfRnJvbVVuaWNvZGUoYXRzbGFzaCArIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0bGVuIC0gKGF0c2xhc2ggLSBhdHN0YXJ0KSAtIDEpKTsKKyAgICBzbGFzaCA9IFB5VW5pY29kZV9GaW5kQ2hhcihzY3JpcHRvYmosIFNFUCwgMCwgc2NyaXB0bGVuLCAtMSk7CisgICAgaWYgKHNsYXNoID09IC0yKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc2xhc2ggIT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9TdWJzdHJpbmcoc2NyaXB0b2JqLCBzbGFzaCwgc2NyaXB0bGVuKTsKICAgICB9IGVsc2UgewogICAgICAgICBQeV9JTkNSRUYoc2NyaXB0b2JqKTsKICAgICAgICAgcmV0dXJuKHNjcmlwdG9iaik7CkBAIC0yOTEsNiArMjkxLDkgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX1BJRCIsICAgICAgICAgTE9HX1BJRCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19DT05TIiwgICAgICAgIExPR19DT05TKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX05ERUxBWSIsICBMT0dfTkRFTEFZKTsKKyNpZmRlZiBMT0dfT0RFTEFZCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19PREVMQVkiLCAgTE9HX09ERUxBWSk7CisjZW5kaWYKICNpZmRlZiBMT0dfTk9XQUlUCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19OT1dBSVQiLCAgTE9HX05PV0FJVCk7CiAjZW5kaWYKQEAgLTMzMSw1ICszMzQsMTAgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX0NST04iLCAgICAgICAgTE9HX0NST04pOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfVVVDUCIsICAgICAgICBMT0dfVVVDUCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19ORVdTIiwgICAgICAgIExPR19ORVdTKTsKKworI2lmZGVmIExPR19BVVRIUFJJVgorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfQVVUSFBSSVYiLCAgICBMT0dfQVVUSFBSSVYpOworI2VuZGlmCisKICAgICByZXR1cm4gbTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvdGVybWlvcy5jIGIvTW9kdWxlcy90ZXJtaW9zLmMKaW5kZXggZWRlYjZmNS4uYjc4ZDMzZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy90ZXJtaW9zLmMKKysrIGIvTW9kdWxlcy90ZXJtaW9zLmMKQEAgLTksMTEgKzksNiBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDx0ZXJtaW9zLmg+Ci0jaWZkZWYgX19vc2ZfXwotLyogT24gT1NGLCBzeXMvaW9jdGwuaCByZXF1aXJlcyB0aGF0IHN0cnVjdCB0ZXJtaW8gYWxyZWFkeSBiZSBkZWZpbmVkLAotICogc28gdGhpcyBuZWVkcyB0byBiZSBpbmNsdWRlZCBmaXJzdCBvbiB0aGF0IHBsYXRmb3JtLiAqLwotI2luY2x1ZGUgPHRlcm1pby5oPgotI2VuZGlmCiAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiAKIC8qIEhQLVVYIHJlcXVpcmVzIHRoYXQgdGhpcyBiZSBpbmNsdWRlZCB0byBwaWNrIHVwIE1EQ0QsIE1DVFMsIE1EU1IsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3Rlc3RjYXBpX2xvbmcuaCBiL01vZHVsZXMvdGVzdGNhcGlfbG9uZy5oCmluZGV4IGZhOTRmZDYuLjZiZGRhZDcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGVzdGNhcGlfbG9uZy5oCisrKyBiL01vZHVsZXMvdGVzdGNhcGlfbG9uZy5oCkBAIC0zMyw4ICszMyw3IEBACiAgICAgICAgICAgICB1bnNpZ25lZCBUWVBFTkFNRSB1aW4sIHVvdXQ7CiAKICAgICAgICAgICAgIC8qIEZvciAwLCAxLCAyIHVzZSBiYXNlOyBmb3IgMywgNCwgNSB1c2UgLWJhc2UgKi8KLSAgICAgICAgICAgIHVpbiA9IGogPCAzID8gYmFzZQotICAgICAgICAgICAgICAgICAgICAgICAgOiAodW5zaWduZWQgVFlQRU5BTUUpKC0oVFlQRU5BTUUpYmFzZSk7CisgICAgICAgICAgICB1aW4gPSBqIDwgMyA/IGJhc2UgOiAwVSAtIGJhc2U7CiAKICAgICAgICAgICAgIC8qIEZvciAwICYgMywgc3VidHJhY3QgMS4KICAgICAgICAgICAgICAqIEZvciAxICYgNCwgbGVhdmUgYWxvbmUuCkBAIC0xNzcsNiArMTc2LDMyIEBACiAgICAgICAgIFB5X0RFQ1JFRihvbmUpOwogICAgIH0KIAorICAgIC8qIFRlc3QgRl9QWV9UT197UyxVfSBvbiBub24tcHlsb25nIGlucHV0LiBUaGlzIHNob3VsZCByYWlzZSBhIFR5cGVFcnJvci4gKi8KKyAgICB7CisgICAgICAgIFRZUEVOQU1FIG91dDsKKyAgICAgICAgdW5zaWduZWQgVFlQRU5BTUUgdW91dDsKKworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisKKyAgICAgICAgb3V0ID0gRl9QWV9UT19TKFB5X05vbmUpOworICAgICAgICBpZiAob3V0ICE9IChUWVBFTkFNRSktMSB8fCAhUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBlcnJvcigiUHlMb25nX0FzWFhYKE5vbmUpIGRpZG4ndCBjb21wbGFpbiIpOworICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgICAgIHJldHVybiBlcnJvcigiUHlMb25nX0FzWFhYKE5vbmUpIHJhaXNlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInNvbWV0aGluZyBvdGhlciB0aGFuIFR5cGVFcnJvciIpOworICAgICAgICBQeUVycl9DbGVhcigpOworCisgICAgICAgIHVvdXQgPSBGX1BZX1RPX1UoUHlfTm9uZSk7CisgICAgICAgIGlmICh1b3V0ICE9ICh1bnNpZ25lZCBUWVBFTkFNRSktMSB8fCAhUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBlcnJvcigiUHlMb25nX0FzWFhYKE5vbmUpIGRpZG4ndCBjb21wbGFpbiIpOworICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgICAgIHJldHVybiBlcnJvcigiUHlMb25nX0FzWFhYKE5vbmUpIHJhaXNlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInNvbWV0aGluZyBvdGhlciB0aGFuIFR5cGVFcnJvciIpOworICAgICAgICBQeUVycl9DbGVhcigpOworCisgICAgICAgIFB5X0RFQ1JFRihQeV9Ob25lKTsKKyAgICB9CisKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3RpbWVtb2R1bGUuYyBiL01vZHVsZXMvdGltZW1vZHVsZS5jCmluZGV4IDM1MTYyZmYuLjE2MTQwN2QgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGltZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvdGltZW1vZHVsZS5jCkBAIC0xLDEzICsxLDIwIEBACiAvKiBUaW1lIG1vZHVsZSAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCi0jaW5jbHVkZSAiX3RpbWUuaCIKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKKyNpZmRlZiBIQVZFX1NZU19USU1FU19ICisjaW5jbHVkZSA8c3lzL3RpbWVzLmg+CisjZW5kaWYKKwogI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNlbmRpZiAvKiBIQVZFX1NZU19UWVBFU19IICovCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9TWVNfUkVTT1VSQ0VfSCkKKyNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKyNlbmRpZgogCiAjaWZkZWYgUVVJQ0tXSU4KICNpbmNsdWRlIDxpby5oPgpAQCAtMjEsMTkgKzI4LDYgQEAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSAicHl0aHJlYWQuaCIKIAotLyogaGVscGVyIHRvIGFsbG93IHVzIHRvIGludGVycnVwdCBzbGVlcCgpIG9uIFdpbmRvd3MqLwotc3RhdGljIEhBTkRMRSBoSW50ZXJydXB0RXZlbnQgPSBOVUxMOwotc3RhdGljIEJPT0wgV0lOQVBJIFB5Q3RybEhhbmRsZXIoRFdPUkQgZHdDdHJsVHlwZSkKLXsKLSAgICBTZXRFdmVudChoSW50ZXJydXB0RXZlbnQpOwotICAgIC8qIGFsbG93IG90aGVyIGRlZmF1bHQgaGFuZGxlcnMgdG8gYmUgY2FsbGVkLgotICAgICAgIERlZmF1bHQgUHl0aG9uIGhhbmRsZXIgd2lsbCBzZXR1cCB0aGUKLSAgICAgICBLZXlib2FyZEludGVycnVwdCBleGNlcHRpb24uCi0gICAgKi8KLSAgICByZXR1cm4gRkFMU0U7Ci19Ci1zdGF0aWMgbG9uZyBtYWluX3RocmVhZDsKLQogI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKQogLyogVGhlc2Ugb3ZlcnJpZGVzIG5vdCBuZWVkZWQgZm9yIFdpbjMyICovCiAjZGVmaW5lIHRpbWV6b25lIF90aW1lem9uZQpAQCAtNDMsMTEgKzM3LDYgQEAKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAjZW5kaWYgLyogIV9fV0FUQ09NQ19fIHx8IF9fUU5YX18gKi8KIAotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQotLyogV2luMzIgaGFzIGJldHRlciBjbG9jayByZXBsYWNlbWVudDsgd2UgaGF2ZSBvdXIgb3duIHZlcnNpb24gYmVsb3cuICovCi0jdW5kZWYgSEFWRV9DTE9DSwotI2VuZGlmIC8qIE1TX1dJTkRPV1MgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKSAqLwotCiAjaWYgZGVmaW5lZChQWU9TX09TMikKICNkZWZpbmUgSU5DTF9ET1MKICNkZWZpbmUgSU5DTF9FUlJPUlMKQEAgLTU4LDIzICs0NywyMiBAQAogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2luY2x1ZGUgPG1hY2gvbWFjaF90aW1lLmg+CisjZW5kaWYKKwogLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KIHN0YXRpYyBpbnQgZmxvYXRzbGVlcChkb3VibGUpOwotc3RhdGljIGRvdWJsZSBmbG9hdHRpbWUodm9pZCk7CitzdGF0aWMgUHlPYmplY3QqIGZsb2F0dGltZShfUHlfY2xvY2tfaW5mb190ICppbmZvKTsKIAotLyogRm9yIFkySyBjaGVjayAqLwotc3RhdGljIFB5T2JqZWN0ICptb2RkaWN0ID0gTlVMTDsKKyNpZmRlZiBNU19XSU5ET1dTCitzdGF0aWMgT1NWRVJTSU9OSU5GT0VYIHdpbnZlcjsKKyNlbmRpZgogCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV90aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQogewotICAgIGRvdWJsZSBzZWNzOwotICAgIHNlY3MgPSBmbG9hdHRpbWUoKTsKLSAgICBpZiAoc2VjcyA9PSAwLjApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShzZWNzKTsKKyAgICByZXR1cm4gZmxvYXR0aW1lKE5VTEwpOwogfQogCiBQeURvY19TVFJWQVIodGltZV9kb2MsCkBAIC04Myw3ICs3MSw3IEBACiBSZXR1cm4gdGhlIGN1cnJlbnQgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHRoZSBFcG9jaC5cblwKIEZyYWN0aW9ucyBvZiBhIHNlY29uZCBtYXkgYmUgcHJlc2VudCBpZiB0aGUgc3lzdGVtIGNsb2NrIHByb3ZpZGVzIHRoZW0uIik7CiAKLSNpZmRlZiBIQVZFX0NMT0NLCisjaWYgZGVmaW5lZChIQVZFX0NMT0NLKQogCiAjaWZuZGVmIENMT0NLU19QRVJfU0VDCiAjaWZkZWYgQ0xLX1RDSwpAQCAtOTQsNDIgKzgyLDgyIEBACiAjZW5kaWYKIAogc3RhdGljIFB5T2JqZWN0ICoKLXRpbWVfY2xvY2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitmbG9hdGNsb2NrKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCiB7Ci0gICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoKGRvdWJsZSljbG9jaygpKSAvIENMT0NLU19QRVJfU0VDKTsKKyAgICBjbG9ja190IHZhbHVlOworICAgIHZhbHVlID0gY2xvY2soKTsKKyAgICBpZiAodmFsdWUgPT0gKGNsb2NrX3QpLTEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAidGhlIHByb2Nlc3NvciB0aW1lIHVzZWQgaXMgbm90IGF2YWlsYWJsZSAiCisgICAgICAgICAgICAgICAgIm9yIGl0cyB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChpbmZvKSB7CisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gImNsb2NrKCkiOworICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMS4wIC8gKGRvdWJsZSlDTE9DS1NfUEVSX1NFQzsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgfQorICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoKGRvdWJsZSl2YWx1ZSAvIENMT0NLU19QRVJfU0VDKTsKIH0KICNlbmRpZiAvKiBIQVZFX0NMT0NLICovCiAKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKF9fQk9STEFORENfXykKLS8qIER1ZSB0byBNYXJrIEhhbW1vbmQgYW5kIFRpbSBQZXRlcnMgKi8KLXN0YXRpYyBQeU9iamVjdCAqCi10aW1lX2Nsb2NrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorI2RlZmluZSBXSU4zMl9QRVJGX0NPVU5URVIKKy8qIFdpbjMyIGhhcyBiZXR0ZXIgY2xvY2sgcmVwbGFjZW1lbnQ7IHdlIGhhdmUgb3VyIG93biB2ZXJzaW9uLCBkdWUgdG8gTWFyaworICAgSGFtbW9uZCBhbmQgVGltIFBldGVycyAqLworc3RhdGljIGludAord2luX3BlcmZfY291bnRlcihfUHlfY2xvY2tfaW5mb190ICppbmZvLCBQeU9iamVjdCAqKnJlc3VsdCkKIHsKLSAgICBzdGF0aWMgTEFSR0VfSU5URUdFUiBjdHJTdGFydDsKLSAgICBzdGF0aWMgZG91YmxlIGRpdmlzb3IgPSAwLjA7CisgICAgc3RhdGljIExPTkdMT05HIGNwdV9mcmVxdWVuY3kgPSAwOworICAgIHN0YXRpYyBMT05HTE9ORyBjdHJTdGFydDsKICAgICBMQVJHRV9JTlRFR0VSIG5vdzsKICAgICBkb3VibGUgZGlmZjsKIAotICAgIGlmIChkaXZpc29yID09IDAuMCkgeworICAgIGlmIChjcHVfZnJlcXVlbmN5ID09IDApIHsKICAgICAgICAgTEFSR0VfSU5URUdFUiBmcmVxOwotICAgICAgICBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigmY3RyU3RhcnQpOworICAgICAgICBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigmbm93KTsKKyAgICAgICAgY3RyU3RhcnQgPSBub3cuUXVhZFBhcnQ7CiAgICAgICAgIGlmICghUXVlcnlQZXJmb3JtYW5jZUZyZXF1ZW5jeSgmZnJlcSkgfHwgZnJlcS5RdWFkUGFydCA9PSAwKSB7CiAgICAgICAgICAgICAvKiBVbmxpa2VseSB0byBoYXBwZW4gLSB0aGlzIHdvcmtzIG9uIGFsbCBpbnRlbAogICAgICAgICAgICAgICAgbWFjaGluZXMgYXQgbGVhc3QhICBSZXZlcnQgdG8gY2xvY2soKSAqLwotICAgICAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoKGRvdWJsZSljbG9jaygpKSAvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT0NLU19QRVJfU0VDKTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgICAgIGRpdmlzb3IgPSAoZG91YmxlKWZyZXEuUXVhZFBhcnQ7CisgICAgICAgIGNwdV9mcmVxdWVuY3kgPSBmcmVxLlF1YWRQYXJ0OwogICAgIH0KICAgICBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigmbm93KTsKLSAgICBkaWZmID0gKGRvdWJsZSkobm93LlF1YWRQYXJ0IC0gY3RyU3RhcnQuUXVhZFBhcnQpOwotICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoZGlmZiAvIGRpdmlzb3IpOworICAgIGRpZmYgPSAoZG91YmxlKShub3cuUXVhZFBhcnQgLSBjdHJTdGFydCk7CisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoKSI7CisgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxLjAgLyAoZG91YmxlKWNwdV9mcmVxdWVuY3k7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgIH0KKyAgICAqcmVzdWx0ID0gUHlGbG9hdF9Gcm9tRG91YmxlKGRpZmYgLyAoZG91YmxlKWNwdV9mcmVxdWVuY3kpOworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFdJTjMyX1BFUkZfQ09VTlRFUikgfHwgZGVmaW5lZChIQVZFX0NMT0NLKQorI2RlZmluZSBQWUNMT0NLCitzdGF0aWMgUHlPYmplY3QqCitweWNsb2NrKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCit7CisjaWZkZWYgV0lOMzJfUEVSRl9DT1VOVEVSCisgICAgUHlPYmplY3QgKnJlczsKKyAgICBpZiAod2luX3BlcmZfY291bnRlcihpbmZvLCAmcmVzKSA9PSAwKQorICAgICAgICByZXR1cm4gcmVzOworI2VuZGlmCisgICAgcmV0dXJuIGZsb2F0Y2xvY2soaW5mbyk7CiB9CiAKLSNkZWZpbmUgSEFWRV9DTE9DSyAvKiBTbyBpdCBnZXRzIGluY2x1ZGVkIGluIHRoZSBtZXRob2RzICovCi0jZW5kaWYgLyogTVNfV0lORE9XUyAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pICovCitzdGF0aWMgUHlPYmplY3QgKgordGltZV9jbG9jayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK3sKKyAgICByZXR1cm4gcHljbG9jayhOVUxMKTsKK30KIAotI2lmZGVmIEhBVkVfQ0xPQ0sKIFB5RG9jX1NUUlZBUihjbG9ja19kb2MsCiAiY2xvY2soKSAtPiBmbG9hdGluZyBwb2ludCBudW1iZXJcblwKIFxuXApAQCAtMTM4LDEyICsxNjYsOTMgQEAKIHJlY29yZHMuIik7CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQorc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfY2xvY2tfZ2V0dGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHJldDsKKyAgICBpbnQgY2xrX2lkOworICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpjbG9ja19nZXR0aW1lIiwgJmNsa19pZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0ID0gY2xvY2tfZ2V0dGltZSgoY2xvY2tpZF90KWNsa19pZCwgJnRwKTsKKyAgICBpZiAocmV0ICE9IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh0cC50dl9zZWMgKyB0cC50dl9uc2VjICogMWUtOSk7Cit9CisKK1B5RG9jX1NUUlZBUihjbG9ja19nZXR0aW1lX2RvYywKKyJjbG9ja19nZXR0aW1lKGNsa19pZCkgLT4gZmxvYXRpbmcgcG9pbnQgbnVtYmVyXG5cCitcblwKK1JldHVybiB0aGUgdGltZSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrIGNsa19pZC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfY2xvY2tfc2V0dGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGNsa19pZDsKKyAgICBQeU9iamVjdCAqb2JqOworICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKKyAgICBpbnQgcmV0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpjbG9ja19zZXR0aW1lIiwgJmNsa19pZCwgJm9iaikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhvYmosICZ0cC50dl9zZWMsICZ0cC50dl9uc2VjKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXQgPSBjbG9ja19zZXR0aW1lKChjbG9ja2lkX3QpY2xrX2lkLCAmdHApOworICAgIGlmIChyZXQgIT0gMCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKGNsb2NrX3NldHRpbWVfZG9jLAorImNsb2NrX3NldHRpbWUoY2xrX2lkLCB0aW1lKVxuXAorXG5cCitTZXQgdGhlIHRpbWUgb2YgdGhlIHNwZWNpZmllZCBjbG9jayBjbGtfaWQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit0aW1lX2Nsb2NrX2dldHJlcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHJldDsKKyAgICBpbnQgY2xrX2lkOworICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpjbG9ja19nZXRyZXMiLCAmY2xrX2lkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXQgPSBjbG9ja19nZXRyZXMoKGNsb2NraWRfdCljbGtfaWQsICZ0cCk7CisgICAgaWYgKHJldCAhPSAwKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh0cC50dl9zZWMgKyB0cC50dl9uc2VjICogMWUtOSk7Cit9CisKK1B5RG9jX1NUUlZBUihjbG9ja19nZXRyZXNfZG9jLAorImNsb2NrX2dldHJlcyhjbGtfaWQpIC0+IGZsb2F0aW5nIHBvaW50IG51bWJlclxuXAorXG5cCitSZXR1cm4gdGhlIHJlc29sdXRpb24gKHByZWNpc2lvbikgb2YgdGhlIHNwZWNpZmllZCBjbG9jayBjbGtfaWQuIik7CisjZW5kaWYgICAvKiBIQVZFX0NMT0NLX0dFVFRJTUUgKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfc2xlZXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGRvdWJsZSBzZWNzOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZDpzbGVlcCIsICZzZWNzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNlY3MgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNsZWVwIGxlbmd0aCBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgaWYgKGZsb2F0c2xlZXAoc2VjcykgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwpAQCAtMTY2LDYgKzI3NSwxMCBAQAogICAgIHsidG1fd2RheSIsICJkYXkgb2Ygd2VlaywgcmFuZ2UgWzAsIDZdLCBNb25kYXkgaXMgMCJ9LAogICAgIHsidG1feWRheSIsICJkYXkgb2YgeWVhciwgcmFuZ2UgWzEsIDM2Nl0ifSwKICAgICB7InRtX2lzZHN0IiwgIjEgaWYgc3VtbWVyIHRpbWUgaXMgaW4gZWZmZWN0LCAwIGlmIG5vdCwgYW5kIC0xIGlmIHVua25vd24ifSwKKyNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCisgICAgeyJ0bV96b25lIiwgImFiYnJldmlhdGlvbiBvZiB0aW1lem9uZSBuYW1lIn0sCisgICAgeyJ0bV9nbXRvZmYiLCAib2Zmc2V0IGZyb20gVVRDIGluIHNlY29uZHMifSwKKyNlbmRpZiAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCiAgICAgezB9CiB9OwogCkBAIC0xODUsNiArMjk4LDcgQEAKIHN0YXRpYyBpbnQgaW5pdGlhbGl6ZWQ7CiBzdGF0aWMgUHlUeXBlT2JqZWN0IFN0cnVjdFRpbWVUeXBlOwogCisKIHN0YXRpYyBQeU9iamVjdCAqCiB0bXRvdHVwbGUoc3RydWN0IHRtICpwKQogewpAQCAtMjAzLDYgKzMxNywxMSBAQAogICAgIFNFVCg2LCAocC0+dG1fd2RheSArIDYpICUgNyk7IC8qIFdhbnQgTW9uZGF5ID09IDAgKi8KICAgICBTRVQoNywgcC0+dG1feWRheSArIDEpOyAgICAgICAgLyogV2FudCBKYW51YXJ5LCAxID09IDEgKi8KICAgICBTRVQoOCwgcC0+dG1faXNkc3QpOworI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDksCisgICAgICAgIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUocC0+dG1fem9uZSwgInN1cnJvZ2F0ZWVzY2FwZSIpKTsKKyAgICBTRVQoMTAsIHAtPnRtX2dtdG9mZik7CisjZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLwogI3VuZGVmIFNFVAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIFB5X1hERUNSRUYodik7CkBAIC0yMTIsNTUgKzMzMSw0OSBAQAogICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotdGltZV9jb252ZXJ0KGRvdWJsZSB3aGVuLCBzdHJ1Y3QgdG0gKiAoKmZ1bmN0aW9uKShjb25zdCB0aW1lX3QgKikpCi17Ci0gICAgc3RydWN0IHRtICpwOwotICAgIHRpbWVfdCB3aGVudCA9IF9QeVRpbWVfRG91YmxlVG9UaW1ldCh3aGVuKTsKLQotICAgIGlmICh3aGVudCA9PSAodGltZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGVycm5vID0gMDsKLSAgICBwID0gZnVuY3Rpb24oJndoZW50KTsKLSAgICBpZiAocCA9PSBOVUxMKSB7Ci0jaWZkZWYgRUlOVkFMCi0gICAgICAgIGlmIChlcnJubyA9PSAwKQotICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19WYWx1ZUVycm9yKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRtdG90dXBsZShwKTsKLX0KLQogLyogUGFyc2UgYXJnIHR1cGxlIHRoYXQgY2FuIGNvbnRhaW4gYW4gb3B0aW9uYWwgZmxvYXQtb3ItTm9uZSB2YWx1ZTsKICAgIGZvcm1hdCBuZWVkcyB0byBiZSAifE86bmFtZSIuCiAgICBSZXR1cm5zIG5vbi16ZXJvIG9uIHN1Y2Nlc3MgKHBhcmFsbGVscyBQeUFyZ19QYXJzZVR1cGxlKS4KICovCiBzdGF0aWMgaW50Ci1wYXJzZV90aW1lX2RvdWJsZV9hcmdzKFB5T2JqZWN0ICphcmdzLCBjaGFyICpmb3JtYXQsIGRvdWJsZSAqcHdoZW4pCitwYXJzZV90aW1lX3RfYXJncyhQeU9iamVjdCAqYXJncywgY2hhciAqZm9ybWF0LCB0aW1lX3QgKnB3aGVuKQogewogICAgIFB5T2JqZWN0ICpvdCA9IE5VTEw7CisgICAgdGltZV90IHdoZW50OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIGZvcm1hdCwgJm90KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKG90ID09IE5VTEwgfHwgb3QgPT0gUHlfTm9uZSkKLSAgICAgICAgKnB3aGVuID0gZmxvYXR0aW1lKCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGRvdWJsZSB3aGVuID0gUHlGbG9hdF9Bc0RvdWJsZShvdCk7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICpwd2hlbiA9IHdoZW47CisgICAgaWYgKG90ID09IE5VTEwgfHwgb3QgPT0gUHlfTm9uZSkgeworICAgICAgICB3aGVudCA9IHRpbWUoTlVMTCk7CiAgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVfdChvdCwgJndoZW50KSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAqcHdoZW4gPSB3aGVudDsKICAgICByZXR1cm4gMTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfZ210aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBkb3VibGUgd2hlbjsKLSAgICBpZiAoIXBhcnNlX3RpbWVfZG91YmxlX2FyZ3MoYXJncywgInxPOmdtdGltZSIsICZ3aGVuKSkKKyAgICB0aW1lX3Qgd2hlbjsKKyAgICBzdHJ1Y3QgdG0gYnVmLCAqbG9jYWw7CisKKyAgICBpZiAoIXBhcnNlX3RpbWVfdF9hcmdzKGFyZ3MsICJ8TzpnbXRpbWUiLCAmd2hlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiB0aW1lX2NvbnZlcnQod2hlbiwgZ210aW1lKTsKKworICAgIGVycm5vID0gMDsKKyAgICBsb2NhbCA9IGdtdGltZSgmd2hlbik7CisgICAgaWYgKGxvY2FsID09IE5VTEwpIHsKKyNpZmRlZiBFSU5WQUwKKyAgICAgICAgaWYgKGVycm5vID09IDApCisgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyNlbmRpZgorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgIH0KKyAgICBidWYgPSAqbG9jYWw7CisgICAgcmV0dXJuIHRtdG90dXBsZSgmYnVmKTsKIH0KIAogUHlEb2NfU1RSVkFSKGdtdGltZV9kb2MsCkBAIC0yNjgsMTUgKzM4MSw0MiBAQAogICAgICAgICAgICAgICAgICAgICAgICB0bV9zZWMsIHRtX3dkYXksIHRtX3lkYXksIHRtX2lzZHN0KVxuXAogXG5cCiBDb252ZXJ0IHNlY29uZHMgc2luY2UgdGhlIEVwb2NoIHRvIGEgdGltZSB0dXBsZSBleHByZXNzaW5nIFVUQyAoYS5rLmEuXG5cCi1HTVQpLiAgV2hlbiAnc2Vjb25kcycgaXMgbm90IHBhc3NlZCBpbiwgY29udmVydCB0aGUgY3VycmVudCB0aW1lIGluc3RlYWQuIik7CitHTVQpLiAgV2hlbiAnc2Vjb25kcycgaXMgbm90IHBhc3NlZCBpbiwgY29udmVydCB0aGUgY3VycmVudCB0aW1lIGluc3RlYWQuXG5cCitcblwKK0lmIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyB0aGUgdG1fZ210b2ZmIGFuZCB0bV96b25lLCB0aGV5IGFyZSBhdmFpbGFibGUgYXNcblwKK2F0dHJpYnV0ZXMgb25seS4iKTsKKworc3RhdGljIGludAorcHlsb2NhbHRpbWUodGltZV90ICp0aW1lcCwgc3RydWN0IHRtICpyZXN1bHQpCit7CisgICAgc3RydWN0IHRtICpsb2NhbDsKKworICAgIGFzc2VydCAodGltZXAgIT0gTlVMTCk7CisgICAgbG9jYWwgPSBsb2NhbHRpbWUodGltZXApOworICAgIGlmIChsb2NhbCA9PSBOVUxMKSB7CisgICAgICAgIC8qIHVuY29udmVydGlibGUgdGltZSAqLworI2lmZGVmIEVJTlZBTAorICAgICAgICBpZiAoZXJybm8gPT0gMCkKKyAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworI2VuZGlmCisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAqcmVzdWx0ID0gKmxvY2FsOworICAgIHJldHVybiAwOworfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9sb2NhbHRpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGRvdWJsZSB3aGVuOwotICAgIGlmICghcGFyc2VfdGltZV9kb3VibGVfYXJncyhhcmdzLCAifE86bG9jYWx0aW1lIiwgJndoZW4pKQorICAgIHRpbWVfdCB3aGVuOworICAgIHN0cnVjdCB0bSBidWY7CisKKyAgICBpZiAoIXBhcnNlX3RpbWVfdF9hcmdzKGFyZ3MsICJ8Tzpsb2NhbHRpbWUiLCAmd2hlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiB0aW1lX2NvbnZlcnQod2hlbiwgbG9jYWx0aW1lKTsKKyAgICBpZiAocHlsb2NhbHRpbWUoJndoZW4sICZidWYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gdG10b3R1cGxlKCZidWYpOwogfQogCiBQeURvY19TVFJWQVIobG9jYWx0aW1lX2RvYywKQEAgLTMwNyw1MyArNDQ3LDIxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICZwLT50bV9ob3VyLCAmcC0+dG1fbWluLCAmcC0+dG1fc2VjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmcC0+dG1fd2RheSwgJnAtPnRtX3lkYXksICZwLT50bV9pc2RzdCkpCiAgICAgICAgIHJldHVybiAwOwotCi0gICAgLyogSWYgeWVhciBpcyBzcGVjaWZpZWQgd2l0aCBsZXNzIHRoYW4gNCBkaWdpdHMsIGl0cyBpbnRlcnByZXRhdGlvbgotICAgICAqIGRlcGVuZHMgb24gdGhlIGFjY2VwdDJkeWVhciB2YWx1ZS4KLSAgICAgKgotICAgICAqIElmIGFjY2VwdDJkeWVhciBpcyB0cnVlIChkZWZhdWx0KSwgYSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGJlaGF2aW9yIGlzCi0gICAgICogaW52b2tlZCBhcyBmb2xsb3dzOgotICAgICAqCi0gICAgICogICAtIGZvciAyLWRpZ2l0IHllYXIsIGNlbnR1cnkgaXMgZ3Vlc3NlZCBhY2NvcmRpbmcgdG8gUE9TSVggcnVsZXMgZm9yCi0gICAgICogICAgICAleSBzdHJwdGltZSBmb3JtYXQ6IDIxc3QgY2VudHVyeSBmb3IgeSA8IDY5LCAyMHRoIGNlbnR1cnkKLSAgICAgKiAgICAgIG90aGVyd2lzZS4gIEEgZGVwcmVjYXRpb24gd2FybmluZyBpcyBpc3N1ZWQgd2hlbiBjZW50dXJ5Ci0gICAgICogICAgICBpbmZvcm1hdGlvbiBpcyBndWVzc2VkIGluIHRoaXMgd2F5LgotICAgICAqCi0gICAgICogICAtIGZvciAzLWRpZ2l0IG9yIG5lZ2F0aXZlIHllYXIsIGEgVmFsdWVFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLgotICAgICAqCi0gICAgICogSWYgYWNjZXB0MmR5ZWFyIGlzIGZhbHNlIChzZXQgYnkgdGhlIHByb2dyYW0gb3IgYXMgYSByZXN1bHQgb2YgYQotICAgICAqIG5vbi1lbXB0eSB2YWx1ZSBhc3NpZ25lZCB0byBQWVRIT05ZMksgZW52aXJvbm1lbnQgdmFyaWFibGUpIGFsbCB5ZWFyCi0gICAgICogdmFsdWVzIGFyZSBpbnRlcnByZXRlZCBhcyBnaXZlbi4KLSAgICAgKi8KLSAgICBpZiAoeSA8IDEwMDApIHsKLSAgICAgICAgUHlPYmplY3QgKmFjY2VwdCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZGRpY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXB0MmR5ZWFyIik7Ci0gICAgICAgIGlmIChhY2NlcHQgIT0gTlVMTCkgewotICAgICAgICAgICAgaW50IGFjY2VwdHZhbCA9ICBQeU9iamVjdF9Jc1RydWUoYWNjZXB0KTsKLSAgICAgICAgICAgIGlmIChhY2NlcHR2YWwgPT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICBpZiAoYWNjZXB0dmFsKSB7Ci0gICAgICAgICAgICAgICAgaWYgKDAgPD0geSAmJiB5IDwgNjkpCi0gICAgICAgICAgICAgICAgICAgIHkgKz0gMjAwMDsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICg2OSA8PSB5ICYmIHkgPCAxMDApCi0gICAgICAgICAgICAgICAgICAgIHkgKz0gMTkwMDsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieWVhciBvdXQgb2YgcmFuZ2UiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNlbnR1cnkgaW5mbyBndWVzc2VkIGZvciBhIDItZGlnaXQgeWVhci4iLCAxKSAhPSAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAgICAgcC0+dG1feWVhciA9IHkgLSAxOTAwOwogICAgIHAtPnRtX21vbi0tOwogICAgIHAtPnRtX3dkYXkgPSAocC0+dG1fd2RheSArIDEpICUgNzsKICAgICBwLT50bV95ZGF5LS07CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQorICAgIGlmIChQeV9UWVBFKGFyZ3MpID09ICZTdHJ1Y3RUaW1lVHlwZSkgeworICAgICAgICBQeU9iamVjdCAqaXRlbTsKKyAgICAgICAgaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgOSk7CisgICAgICAgIHAtPnRtX3pvbmUgPSBpdGVtID09IFB5X05vbmUgPyBOVUxMIDogX1B5VW5pY29kZV9Bc1N0cmluZyhpdGVtKTsKKyAgICAgICAgaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMTApOworICAgICAgICBwLT50bV9nbXRvZmYgPSBpdGVtID09IFB5X05vbmUgPyAwIDogUHlMb25nX0FzTG9uZyhpdGVtKTsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisjZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLwogICAgIHJldHVybiAxOwogfQogCkBAIC00NzAsNyArNTc4LDggQEAKIAogICAgIGlmICh0dXAgPT0gTlVMTCkgewogICAgICAgICB0aW1lX3QgdHQgPSB0aW1lKE5VTEwpOwotICAgICAgICBidWYgPSAqbG9jYWx0aW1lKCZ0dCk7CisgICAgICAgIGlmIChweWxvY2FsdGltZSgmdHQsICZidWYpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgaWYgKCFnZXR0bWFyZyh0dXAsICZidWYpIHx8ICFjaGVja3RtKCZidWYpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ5OCw3ICs2MDcsNyBAQAogICAgIGZtdCA9IGZvcm1hdDsKICNlbHNlCiAgICAgLyogQ29udmVydCB0aGUgdW5pY29kZSBzdHJpbmcgdG8gYW4gYXNjaWkgb25lICovCi0gICAgZm9ybWF0ID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChmb3JtYXRfYXJnKTsKKyAgICBmb3JtYXQgPSBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKGZvcm1hdF9hcmcsICJzdXJyb2dhdGVlc2NhcGUiKTsKICAgICBpZiAoZm9ybWF0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGZtdCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGZvcm1hdCk7CkBAIC01NDksNyArNjU4LDggQEAKICNpZmRlZiBIQVZFX1dDU0ZUSU1FCiAgICAgICAgICAgICByZXQgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKG91dGJ1ZiwgYnVmbGVuKTsKICNlbHNlCi0gICAgICAgICAgICByZXQgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShvdXRidWYsIGJ1Zmxlbik7CisgICAgICAgICAgICByZXQgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZShvdXRidWYsIGJ1ZmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVlc2NhcGUiKTsKICNlbmRpZgogICAgICAgICAgICAgUHlNZW1fRnJlZShvdXRidWYpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01ODcsMTEgKzY5NywxMiBAQAogewogICAgIFB5T2JqZWN0ICpzdHJwdGltZV9tb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJfc3RycHRpbWUiKTsKICAgICBQeU9iamVjdCAqc3RycHRpbWVfcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKF9zdHJwdGltZV90aW1lKTsKIAogICAgIGlmICghc3RycHRpbWVfbW9kdWxlKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHJwdGltZV9yZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHN0cnB0aW1lX21vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9zdHJwdGltZV90aW1lIiwgIk8iLCBhcmdzKTsKKyAgICBzdHJwdGltZV9yZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHN0cnB0aW1lX21vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19zdHJwdGltZV90aW1lLCAiTyIsIGFyZ3MpOwogICAgIFB5X0RFQ1JFRihzdHJwdGltZV9tb2R1bGUpOwogICAgIHJldHVybiBzdHJwdGltZV9yZXN1bHQ7CiB9CkBAIC02MDgsMzEgKzcxOSwyMCBAQAogewogICAgIC8qIEluc3BpcmVkIGJ5IE9wZW4gR3JvdXAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSBhdAogICAgICAqIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvZnVuY3Rpb25zL2FzY3RpbWUuaHRtbCAqLwotICAgIHN0YXRpYyBjaGFyIHdkYXlfbmFtZVs3XVszXSA9IHsKKyAgICBzdGF0aWMgY2hhciB3ZGF5X25hbWVbN11bNF0gPSB7CiAgICAgICAgICJTdW4iLCAiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiCiAgICAgfTsKLSAgICBzdGF0aWMgY2hhciBtb25fbmFtZVsxMl1bM10gPSB7CisgICAgc3RhdGljIGNoYXIgbW9uX25hbWVbMTJdWzRdID0gewogICAgICAgICAiSmFuIiwgIkZlYiIsICJNYXIiLCAiQXByIiwgIk1heSIsICJKdW4iLAogICAgICAgICAiSnVsIiwgIkF1ZyIsICJTZXAiLCAiT2N0IiwgIk5vdiIsICJEZWMiCiAgICAgfTsKLSAgICBjaGFyIGJ1ZlsyMF07IC8qICdTdW4gU2VwIDE2IDAxOjAzOjUyXDAnICovCi0gICAgaW50IG47Ci0KLSAgICBuID0gUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJS4zcyAlLjNzJTNkICUuMmQ6JS4yZDolLjJkIiwKLSAgICAgICAgICAgICAgICAgICAgICB3ZGF5X25hbWVbdGltZXB0ci0+dG1fd2RheV0sCi0gICAgICAgICAgICAgICAgICAgICAgbW9uX25hbWVbdGltZXB0ci0+dG1fbW9uXSwKLSAgICAgICAgICAgICAgICAgICAgICB0aW1lcHRyLT50bV9tZGF5LCB0aW1lcHRyLT50bV9ob3VyLAotICAgICAgICAgICAgICAgICAgICAgIHRpbWVwdHItPnRtX21pbiwgdGltZXB0ci0+dG1fc2VjKTsKLSAgICAvKiBYWFg6IHNpbmNlIHRoZSBmaWVsZHMgdXNlZCBieSBzbnByaW50ZiBhYm92ZSBhcmUgdmFsaWRhdGVkIGluIGNoZWNrdG0sCi0gICAgICogdGhlIGZvbGxvd2luZyBjb25kaXRpb24gc2hvdWxkIG5ldmVyIHRyaWdnZXIuIFdlIGtlZXAgdGhlIGNoZWNrIGJlY2F1c2UKLSAgICAgKiBoaXN0b3JpY2FsbHkgZml4ZWQgc2l6ZSBidWZmZXIgdXNlZCBpbiBhc2N0aW1lIHdhcyB0aGUgc291cmNlIG9mCi0gICAgICogY3Jhc2hlcy4gKi8KLSAgICBpZiAobiArIDEgIT0gc2l6ZW9mKGJ1ZikpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ1bmNvbnZlcnRpYmxlIHRpbWUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyAlZCIsIGJ1ZiwgMTkwMCArIHRpbWVwdHItPnRtX3llYXIpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgIiVzICVzJTNkICUuMmQ6JS4yZDolLjJkICVkIiwKKyAgICAgICAgd2RheV9uYW1lW3RpbWVwdHItPnRtX3dkYXldLAorICAgICAgICBtb25fbmFtZVt0aW1lcHRyLT50bV9tb25dLAorICAgICAgICB0aW1lcHRyLT50bV9tZGF5LCB0aW1lcHRyLT50bV9ob3VyLAorICAgICAgICB0aW1lcHRyLT50bV9taW4sIHRpbWVwdHItPnRtX3NlYywKKyAgICAgICAgMTkwMCArIHRpbWVwdHItPnRtX3llYXIpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNjQ1LDcgKzc0NSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICh0dXAgPT0gTlVMTCkgewogICAgICAgICB0aW1lX3QgdHQgPSB0aW1lKE5VTEwpOwotICAgICAgICBidWYgPSAqbG9jYWx0aW1lKCZ0dCk7CisgICAgICAgIGlmIChweWxvY2FsdGltZSgmdHQsICZidWYpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICB9IGVsc2UgaWYgKCFnZXR0bWFyZyh0dXAsICZidWYpIHx8ICFjaGVja3RtKCZidWYpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gX2FzY3RpbWUoJmJ1Zik7CkBAIC02NjEsMjggKzc2MywxMyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfY3RpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpvdCA9IE5VTEw7CiAgICAgdGltZV90IHR0OwotICAgIHN0cnVjdCB0bSAqdGltZXB0cjsKLQotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImN0aW1lIiwgMCwgMSwgJm90KSkKKyAgICBzdHJ1Y3QgdG0gYnVmOworICAgIGlmICghcGFyc2VfdGltZV90X2FyZ3MoYXJncywgInxPOmN0aW1lIiwgJnR0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKG90ID09IE5VTEwgfHwgb3QgPT0gUHlfTm9uZSkKLSAgICAgICAgdHQgPSB0aW1lKE5VTEwpOwotICAgIGVsc2UgewotICAgICAgICBkb3VibGUgZHQgPSBQeUZsb2F0X0FzRG91YmxlKG90KTsKLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgdHQgPSBfUHlUaW1lX0RvdWJsZVRvVGltZXQoZHQpOwotICAgICAgICBpZiAodHQgPT0gKHRpbWVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHRpbWVwdHIgPSBsb2NhbHRpbWUoJnR0KTsKLSAgICBpZiAodGltZXB0ciA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidW5jb252ZXJ0aWJsZSB0aW1lIik7CisgICAgaWYgKHB5bG9jYWx0aW1lKCZ0dCwgJmJ1ZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gX2FzY3RpbWUodGltZXB0cik7CisgICAgcmV0dXJuIF9hc2N0aW1lKCZidWYpOwogfQogCiBQeURvY19TVFJWQVIoY3RpbWVfZG9jLApAQCAtNzE1LDcgKzgwMiwxMCBAQAogUHlEb2NfU1RSVkFSKG1rdGltZV9kb2MsCiAibWt0aW1lKHR1cGxlKSAtPiBmbG9hdGluZyBwb2ludCBudW1iZXJcblwKIFxuXAotQ29udmVydCBhIHRpbWUgdHVwbGUgaW4gbG9jYWwgdGltZSB0byBzZWNvbmRzIHNpbmNlIHRoZSBFcG9jaC4iKTsKK0NvbnZlcnQgYSB0aW1lIHR1cGxlIGluIGxvY2FsIHRpbWUgdG8gc2Vjb25kcyBzaW5jZSB0aGUgRXBvY2guXG5cCitOb3RlIHRoYXQgbWt0aW1lKGdtdGltZSgwKSkgd2lsbCBub3QgZ2VuZXJhbGx5IHJldHVybiB6ZXJvIGZvciBtb3N0XG5cCit0aW1lIHpvbmVzOyBpbnN0ZWFkIHRoZSByZXR1cm5lZCB2YWx1ZSB3aWxsIGVpdGhlciBiZSBlcXVhbCB0byB0aGF0XG5cCitvZiB0aGUgdGltZXpvbmUgb3IgYWx0em9uZSBhdHRyaWJ1dGVzIG9uIHRoZSB0aW1lIG1vZHVsZS4iKTsKICNlbmRpZiAvKiBIQVZFX01LVElNRSAqLwogCiAjaWZkZWYgSEFWRV9XT1JLSU5HX1RaU0VUCkBAIC03NTUsNiArODQ1LDQwMiBAQAogc2hvdWxkIG5vdCBiZSByZWxpZWQgb24uIik7CiAjZW5kaWYgLyogSEFWRV9XT1JLSU5HX1RaU0VUICovCiAKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoX19BUFBMRV9fKSBcCisgICAgfHwgKGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKSBcCisgICAgICAgICYmIChkZWZpbmVkKENMT0NLX0hJR0hSRVMpIHx8IGRlZmluZWQoQ0xPQ0tfTU9OT1RPTklDKSkpCisjZGVmaW5lIFBZTU9OT1RPTklDCisjZW5kaWYKKworI2lmZGVmIFBZTU9OT1RPTklDCitzdGF0aWMgUHlPYmplY3QqCitweW1vbm90b25pYyhfUHlfY2xvY2tfaW5mb190ICppbmZvKQoreworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyAgICBzdGF0aWMgVUxPTkdMT05HICgqR2V0VGlja0NvdW50NjQpICh2b2lkKSA9IE5VTEw7CisgICAgc3RhdGljIFVMT05HTE9ORyAoQ0FMTEJBQ0sgKlB5X0dldFRpY2tDb3VudDY0KSh2b2lkKTsKKyAgICBzdGF0aWMgaW50IGhhc19nZXRpY2tjb3VudDY0ID0gLTE7CisgICAgZG91YmxlIHJlc3VsdDsKKworICAgIGlmIChoYXNfZ2V0aWNrY291bnQ2NCA9PSAtMSkgeworICAgICAgICAvKiBHZXRUaWNrQ291bnQ2NCgpIHdhcyBhZGRlZCB0byBXaW5kb3dzIFZpc3RhICovCisgICAgICAgIGlmICh3aW52ZXIuZHdNYWpvclZlcnNpb24gPj0gNikgeworICAgICAgICAgICAgSElOU1RBTkNFIGhLZXJuZWwzMjsKKyAgICAgICAgICAgIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZVcoTCJLRVJORUwzMiIpOworICAgICAgICAgICAgKihGQVJQUk9DKikmUHlfR2V0VGlja0NvdW50NjQgPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHZXRUaWNrQ291bnQ2NCIpOworICAgICAgICAgICAgaGFzX2dldGlja2NvdW50NjQgPSAoUHlfR2V0VGlja0NvdW50NjQgIT0gTlVMTCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaGFzX2dldGlja2NvdW50NjQgPSAwOworICAgIH0KKworICAgIGlmIChoYXNfZ2V0aWNrY291bnQ2NCkgeworICAgICAgICBVTE9OR0xPTkcgdGlja3M7CisgICAgICAgIHRpY2tzID0gUHlfR2V0VGlja0NvdW50NjQoKTsKKyAgICAgICAgcmVzdWx0ID0gKGRvdWJsZSl0aWNrcyAqIDFlLTM7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGF0aWMgRFdPUkQgbGFzdF90aWNrcyA9IDA7CisgICAgICAgIHN0YXRpYyBEV09SRCBuX292ZXJmbG93ID0gMDsKKyAgICAgICAgRFdPUkQgdGlja3M7CisKKyAgICAgICAgdGlja3MgPSBHZXRUaWNrQ291bnQoKTsKKyAgICAgICAgaWYgKHRpY2tzIDwgbGFzdF90aWNrcykKKyAgICAgICAgICAgIG5fb3ZlcmZsb3crKzsKKyAgICAgICAgbGFzdF90aWNrcyA9IHRpY2tzOworCisgICAgICAgIHJlc3VsdCA9IGxkZXhwKG5fb3ZlcmZsb3csIDMyKTsKKyAgICAgICAgcmVzdWx0ICs9IHRpY2tzOworICAgICAgICByZXN1bHQgKj0gMWUtMzsKKyAgICB9CisKKyAgICBpZiAoaW5mbykgeworICAgICAgICBEV09SRCB0aW1lQWRqdXN0bWVudCwgdGltZUluY3JlbWVudDsKKyAgICAgICAgQk9PTCBpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQsIG9rOworICAgICAgICBpZiAoaGFzX2dldGlja2NvdW50NjQpCisgICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJHZXRUaWNrQ291bnQ2NCgpIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiR2V0VGlja0NvdW50KCkiOworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOworICAgICAgICBvayA9IEdldFN5c3RlbVRpbWVBZGp1c3RtZW50KCZ0aW1lQWRqdXN0bWVudCwgJnRpbWVJbmNyZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlzVGltZUFkanVzdG1lbnREaXNhYmxlZCk7CisgICAgICAgIGlmICghb2spIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IHRpbWVJbmNyZW1lbnQgKiAxZS03OworICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKKyAgICB9CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShyZXN1bHQpOworCisjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyAgICBzdGF0aWMgbWFjaF90aW1lYmFzZV9pbmZvX2RhdGFfdCB0aW1lYmFzZTsKKyAgICB1aW50NjRfdCB0aW1lOworICAgIGRvdWJsZSBzZWNzOworCisgICAgaWYgKHRpbWViYXNlLmRlbm9tID09IDApIHsKKyAgICAgICAgLyogQWNjb3JkaW5nIHRvIHRoZSBUZWNobmljYWwgUSZBIFFBMTM5OCwgbWFjaF90aW1lYmFzZV9pbmZvKCkgY2Fubm90CisgICAgICAgICAgIGZhaWw6IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L21hYy8jcWEvcWExMzk4LyAqLworICAgICAgICAodm9pZCltYWNoX3RpbWViYXNlX2luZm8oJnRpbWViYXNlKTsKKyAgICB9CisKKyAgICB0aW1lID0gbWFjaF9hYnNvbHV0ZV90aW1lKCk7CisgICAgc2VjcyA9IChkb3VibGUpdGltZSAqIHRpbWViYXNlLm51bWVyIC8gdGltZWJhc2UuZGVub20gKiAxZS05OworICAgIGlmIChpbmZvKSB7CisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIm1hY2hfYWJzb2x1dGVfdGltZSgpIjsKKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IChkb3VibGUpdGltZWJhc2UubnVtZXIgLyB0aW1lYmFzZS5kZW5vbSAqIDFlLTk7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgIH0KKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHNlY3MpOworCisjZWxpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgJiYgKGRlZmluZWQoQ0xPQ0tfSElHSFJFUykgfHwgZGVmaW5lZChDTE9DS19NT05PVE9OSUMpKQorICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKKyNpZmRlZiBDTE9DS19ISUdIUkVTCisgICAgY29uc3QgY2xvY2tpZF90IGNsa19pZCA9IENMT0NLX0hJR0hSRVM7CisgICAgY29uc3QgY2hhciAqZnVuY3Rpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19ISUdIUkVTKSI7CisjZWxzZQorICAgIGNvbnN0IGNsb2NraWRfdCBjbGtfaWQgPSBDTE9DS19NT05PVE9OSUM7CisgICAgY29uc3QgY2hhciAqZnVuY3Rpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMpIjsKKyNlbmRpZgorCisgICAgaWYgKGNsb2NrX2dldHRpbWUoY2xrX2lkLCAmdHApICE9IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoaW5mbykgeworICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgcmVzOworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOworICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9IGZ1bmN0aW9uOworICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKKyAgICAgICAgaWYgKGNsb2NrX2dldHJlcyhjbGtfaWQsICZyZXMpID09IDApCisgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gcmVzLnR2X3NlYyArIHJlcy50dl9uc2VjICogMWUtOTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDFlLTk7CisgICAgfQorICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodHAudHZfc2VjICsgdHAudHZfbnNlYyAqIDFlLTkpOworI2VuZGlmCit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0aW1lX21vbm90b25pYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK3sKKyAgICByZXR1cm4gcHltb25vdG9uaWMoTlVMTCk7Cit9CisKK1B5RG9jX1NUUlZBUihtb25vdG9uaWNfZG9jLAorIm1vbm90b25pYygpIC0+IGZsb2F0XG5cCitcblwKK01vbm90b25pYyBjbG9jaywgY2Fubm90IGdvIGJhY2t3YXJkLiIpOworI2VuZGlmICAgLyogUFlNT05PVE9OSUMgKi8KKworc3RhdGljIFB5T2JqZWN0KgorcGVyZl9jb3VudGVyKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCit7CisjaWYgZGVmaW5lZChXSU4zMl9QRVJGX0NPVU5URVIpIHx8IGRlZmluZWQoUFlNT05PVE9OSUMpCisgICAgUHlPYmplY3QgKnJlczsKKyNlbmRpZgorI2lmIGRlZmluZWQoV0lOMzJfUEVSRl9DT1VOVEVSKQorICAgIHN0YXRpYyBpbnQgdXNlX3BlcmZfY291bnRlciA9IDE7CisjZW5kaWYKKyNpZmRlZiBQWU1PTk9UT05JQworICAgIHN0YXRpYyBpbnQgdXNlX21vbm90b25pYyA9IDE7CisjZW5kaWYKKworI2lmZGVmIFdJTjMyX1BFUkZfQ09VTlRFUgorICAgIGlmICh1c2VfcGVyZl9jb3VudGVyKSB7CisgICAgICAgIGlmICh3aW5fcGVyZl9jb3VudGVyKGluZm8sICZyZXMpID09IDApCisgICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAgICB1c2VfcGVyZl9jb3VudGVyID0gMDsKKyAgICB9CisjZW5kaWYKKworI2lmZGVmIFBZTU9OT1RPTklDCisgICAgaWYgKHVzZV9tb25vdG9uaWMpIHsKKyAgICAgICAgcmVzID0gcHltb25vdG9uaWMoaW5mbyk7CisgICAgICAgIGlmIChyZXMgIT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIHVzZV9tb25vdG9uaWMgPSAwOworICAgICAgICBQeUVycl9DbGVhcigpOworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIGZsb2F0dGltZShpbmZvKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfcGVyZl9jb3VudGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQoreworICAgIHJldHVybiBwZXJmX2NvdW50ZXIoTlVMTCk7Cit9CisKK1B5RG9jX1NUUlZBUihwZXJmX2NvdW50ZXJfZG9jLAorInBlcmZfY291bnRlcigpIC0+IGZsb2F0XG5cCitcblwKK1BlcmZvcm1hbmNlIGNvdW50ZXIgZm9yIGJlbmNobWFya2luZy4iKTsKKworc3RhdGljIFB5T2JqZWN0KgorcHlfcHJvY2Vzc190aW1lKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCit7CisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorICAgIEhBTkRMRSBwcm9jZXNzOworICAgIEZJTEVUSU1FIGNyZWF0aW9uX3RpbWUsIGV4aXRfdGltZSwga2VybmVsX3RpbWUsIHVzZXJfdGltZTsKKyAgICBVTEFSR0VfSU5URUdFUiBsYXJnZTsKKyAgICBkb3VibGUgdG90YWw7CisgICAgQk9PTCBvazsKKworICAgIHByb2Nlc3MgPSBHZXRDdXJyZW50UHJvY2VzcygpOworICAgIG9rID0gR2V0UHJvY2Vzc1RpbWVzKHByb2Nlc3MsICZjcmVhdGlvbl90aW1lLCAmZXhpdF90aW1lLCAma2VybmVsX3RpbWUsICZ1c2VyX3RpbWUpOworICAgIGlmICghb2spCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIGxhcmdlLnUuTG93UGFydCA9IGtlcm5lbF90aW1lLmR3TG93RGF0ZVRpbWU7CisgICAgbGFyZ2UudS5IaWdoUGFydCA9IGtlcm5lbF90aW1lLmR3SGlnaERhdGVUaW1lOworICAgIHRvdGFsID0gKGRvdWJsZSlsYXJnZS5RdWFkUGFydDsKKyAgICBsYXJnZS51Lkxvd1BhcnQgPSB1c2VyX3RpbWUuZHdMb3dEYXRlVGltZTsKKyAgICBsYXJnZS51LkhpZ2hQYXJ0ID0gdXNlcl90aW1lLmR3SGlnaERhdGVUaW1lOworICAgIHRvdGFsICs9IChkb3VibGUpbGFyZ2UuUXVhZFBhcnQ7CisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiR2V0UHJvY2Vzc1RpbWVzKCkiOworICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtNzsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgfQorICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodG90YWwgKiAxZS03KTsKKyNlbHNlCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1JFU09VUkNFX0gpCisgICAgc3RydWN0IHJ1c2FnZSBydTsKKyNlbmRpZgorI2lmZGVmIEhBVkVfVElNRVMKKyAgICBzdHJ1Y3QgdG1zIHQ7CisgICAgc3RhdGljIGxvbmcgdGlja3NfcGVyX3NlY29uZCA9IC0xOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgXAorICAgICYmIChkZWZpbmVkKENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCkgfHwgZGVmaW5lZChDTE9DS19QUk9GKSkKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdHA7CisjaWZkZWYgQ0xPQ0tfUFJPRgorICAgIGNvbnN0IGNsb2NraWRfdCBjbGtfaWQgPSBDTE9DS19QUk9GOworICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfUFJPRikiOworI2Vsc2UKKyAgICBjb25zdCBjbG9ja2lkX3QgY2xrX2lkID0gQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEOworICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEKSI7CisjZW5kaWYKKworICAgIGlmIChjbG9ja19nZXR0aW1lKGNsa19pZCwgJnRwKSA9PSAwKSB7CisgICAgICAgIGlmIChpbmZvKSB7CisgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgcmVzOworICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSBmdW5jdGlvbjsKKyAgICAgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKKyAgICAgICAgICAgIGlmIChjbG9ja19nZXRyZXMoY2xrX2lkLCAmcmVzKSA9PSAwKQorICAgICAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSByZXMudHZfc2VjICsgcmVzLnR2X25zZWMgKiAxZS05OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxZS05OworICAgICAgICB9CisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodHAudHZfc2VjICsgdHAudHZfbnNlYyAqIDFlLTkpOworICAgIH0KKyNlbmRpZgorCisjaWYgZGVmaW5lZChIQVZFX1NZU19SRVNPVVJDRV9IKQorICAgIGlmIChnZXRydXNhZ2UoUlVTQUdFX1NFTEYsICZydSkgPT0gMCkgeworICAgICAgICBkb3VibGUgdG90YWw7CisgICAgICAgIHRvdGFsID0gcnUucnVfdXRpbWUudHZfc2VjICsgcnUucnVfdXRpbWUudHZfdXNlYyAqIDFlLTY7CisgICAgICAgIHRvdGFsICs9IHJ1LnJ1X3N0aW1lLnR2X3NlYyArIHJ1LnJ1X3N0aW1lLnR2X3VzZWMgKiAxZS02OworICAgICAgICBpZiAoaW5mbykgeworICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiZ2V0cnVzYWdlKFJVU0FHRV9TRUxGKSI7CisgICAgICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOworICAgICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtNjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRvdGFsKTsKKyAgICB9CisjZW5kaWYKKworI2lmZGVmIEhBVkVfVElNRVMKKyAgICBpZiAodGltZXMoJnQpICE9IChjbG9ja190KS0xKSB7CisgICAgICAgIGRvdWJsZSB0b3RhbDsKKworICAgICAgICBpZiAodGlja3NfcGVyX3NlY29uZCA9PSAtMSkgeworI2lmIGRlZmluZWQoSEFWRV9TWVNDT05GKSAmJiBkZWZpbmVkKF9TQ19DTEtfVENLKQorICAgICAgICAgICAgdGlja3NfcGVyX3NlY29uZCA9IHN5c2NvbmYoX1NDX0NMS19UQ0spOworICAgICAgICAgICAgaWYgKHRpY2tzX3Blcl9zZWNvbmQgPCAxKQorICAgICAgICAgICAgICAgIHRpY2tzX3Blcl9zZWNvbmQgPSAtMTsKKyNlbGlmIGRlZmluZWQoSFopCisgICAgICAgICAgICB0aWNrc19wZXJfc2Vjb25kID0gSFo7CisjZWxzZQorICAgICAgICAgICAgdGlja3NfcGVyX3NlY29uZCA9IDYwOyAvKiBtYWdpYyBmYWxsYmFjayB2YWx1ZTsgbWF5IGJlIGJvZ3VzICovCisjZW5kaWYKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aWNrc19wZXJfc2Vjb25kICE9IC0xKSB7CisgICAgICAgICAgICB0b3RhbCA9IChkb3VibGUpdC50bXNfdXRpbWUgLyB0aWNrc19wZXJfc2Vjb25kOworICAgICAgICAgICAgdG90YWwgKz0gKGRvdWJsZSl0LnRtc19zdGltZSAvIHRpY2tzX3Blcl9zZWNvbmQ7CisgICAgICAgICAgICBpZiAoaW5mbykgeworICAgICAgICAgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gInRpbWVzKCkiOworICAgICAgICAgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDEuMCAvIHRpY2tzX3Blcl9zZWNvbmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRvdGFsKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIGZsb2F0Y2xvY2soaW5mbyk7CisjZW5kaWYKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfcHJvY2Vzc190aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQoreworICAgIHJldHVybiBweV9wcm9jZXNzX3RpbWUoTlVMTCk7Cit9CisKK1B5RG9jX1NUUlZBUihwcm9jZXNzX3RpbWVfZG9jLAorInByb2Nlc3NfdGltZSgpIC0+IGZsb2F0XG5cCitcblwKK1Byb2Nlc3MgdGltZSBmb3IgcHJvZmlsaW5nOiBzdW0gb2YgdGhlIGtlcm5lbCBhbmQgdXNlci1zcGFjZSBDUFUgdGltZS4iKTsKKworCitzdGF0aWMgUHlPYmplY3QgKgordGltZV9nZXRfY2xvY2tfaW5mbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgY2hhciAqbmFtZTsKKyAgICBfUHlfY2xvY2tfaW5mb190IGluZm87CisgICAgUHlPYmplY3QgKm9iaiA9IE5VTEwsICpkaWN0LCAqbnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6Z2V0X2Nsb2NrX2luZm8iLCAmbmFtZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisjaWZkZWYgUHlfREVCVUcKKyAgICBpbmZvLmltcGxlbWVudGF0aW9uID0gTlVMTDsKKyAgICBpbmZvLm1vbm90b25pYyA9IC0xOworICAgIGluZm8uYWRqdXN0YWJsZSA9IC0xOworICAgIGluZm8ucmVzb2x1dGlvbiA9IC0xLjA7CisjZWxzZQorICAgIGluZm8uaW1wbGVtZW50YXRpb24gPSAiIjsKKyAgICBpbmZvLm1vbm90b25pYyA9IDA7CisgICAgaW5mby5hZGp1c3RhYmxlID0gMDsKKyAgICBpbmZvLnJlc29sdXRpb24gPSAxLjA7CisjZW5kaWYKKworICAgIGlmIChzdHJjbXAobmFtZSwgInRpbWUiKSA9PSAwKQorICAgICAgICBvYmogPSBmbG9hdHRpbWUoJmluZm8pOworI2lmZGVmIFBZQ0xPQ0sKKyAgICBlbHNlIGlmIChzdHJjbXAobmFtZSwgImNsb2NrIikgPT0gMCkKKyAgICAgICAgb2JqID0gcHljbG9jaygmaW5mbyk7CisjZW5kaWYKKyNpZmRlZiBQWU1PTk9UT05JQworICAgIGVsc2UgaWYgKHN0cmNtcChuYW1lLCAibW9ub3RvbmljIikgPT0gMCkKKyAgICAgICAgb2JqID0gcHltb25vdG9uaWMoJmluZm8pOworI2VuZGlmCisgICAgZWxzZSBpZiAoc3RyY21wKG5hbWUsICJwZXJmX2NvdW50ZXIiKSA9PSAwKQorICAgICAgICBvYmogPSBwZXJmX2NvdW50ZXIoJmluZm8pOworICAgIGVsc2UgaWYgKHN0cmNtcChuYW1lLCAicHJvY2Vzc190aW1lIikgPT0gMCkKKyAgICAgICAgb2JqID0gcHlfcHJvY2Vzc190aW1lKCZpbmZvKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ1bmtub3duIGNsb2NrIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0RFQ1JFRihvYmopOworCisgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoZGljdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGFzc2VydChpbmZvLmltcGxlbWVudGF0aW9uICE9IE5VTEwpOworICAgIG9iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGluZm8uaW1wbGVtZW50YXRpb24pOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgImltcGxlbWVudGF0aW9uIiwgb2JqKSA9PSAtMSkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9DTEVBUihvYmopOworCisgICAgYXNzZXJ0KGluZm8ubW9ub3RvbmljICE9IC0xKTsKKyAgICBvYmogPSBQeUJvb2xfRnJvbUxvbmcoaW5mby5tb25vdG9uaWMpOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgIm1vbm90b25pYyIsIG9iaikgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfQ0xFQVIob2JqKTsKKworICAgIGFzc2VydChpbmZvLmFkanVzdGFibGUgIT0gLTEpOworICAgIG9iaiA9IFB5Qm9vbF9Gcm9tTG9uZyhpbmZvLmFkanVzdGFibGUpOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgImFkanVzdGFibGUiLCBvYmopID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworICAgIFB5X0NMRUFSKG9iaik7CisKKyAgICBhc3NlcnQoaW5mby5yZXNvbHV0aW9uID4gMC4wKTsKKyAgICBhc3NlcnQoaW5mby5yZXNvbHV0aW9uIDw9IDEuMCk7CisgICAgb2JqID0gUHlGbG9hdF9Gcm9tRG91YmxlKGluZm8ucmVzb2x1dGlvbik7CisgICAgaWYgKG9iaiA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAicmVzb2x1dGlvbiIsIG9iaikgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfQ0xFQVIob2JqKTsKKworICAgIG5zID0gX1B5TmFtZXNwYWNlX05ldyhkaWN0KTsKKyAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgcmV0dXJuIG5zOworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgUHlfWERFQ1JFRihvYmopOworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIoZ2V0X2Nsb2NrX2luZm9fZG9jLAorImdldF9jbG9ja19pbmZvKG5hbWU6IHN0cikgLT4gZGljdFxuXAorXG5cCitHZXQgaW5mb3JtYXRpb24gb2YgdGhlIHNwZWNpZmllZCBjbG9jay4iKTsKKwogc3RhdGljIHZvaWQKIFB5SW5pdF90aW1lem9uZShQeU9iamVjdCAqbSkgewogICAgIC8qIFRoaXMgY29kZSBtb3ZlZCBmcm9tIFB5SW5pdF90aW1lIHdob2xlc2FsZSB0byBhbGxvdyBjYWxsaW5nIGl0IGZyb20KQEAgLTc5MSw4ICsxMjc3LDggQEAKICNlbmRpZiAvKiBQWU9TX09TMiAqLwogI2VuZGlmCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgImRheWxpZ2h0IiwgZGF5bGlnaHQpOwotICAgIG90ejAgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZSh0em5hbWVbMF0sIHN0cmxlbih0em5hbWVbMF0pKTsKLSAgICBvdHoxID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUodHpuYW1lWzFdLCBzdHJsZW4odHpuYW1lWzFdKSk7CisgICAgb3R6MCA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUodHpuYW1lWzBdLCAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgb3R6MSA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUodHpuYW1lWzFdLCAic3Vycm9nYXRlZXNjYXBlIik7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ0em5hbWUiLCBQeV9CdWlsZFZhbHVlKCIoTk4pIiwgb3R6MCwgb3R6MSkpOwogI2Vsc2UgLyogIUhBVkVfVFpOQU1FIHx8IF9fR0xJQkNfXyB8fCBfX0NZR1dJTl9fKi8KICNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCkBAIC04NDMsMTQgKzEzMjksMzggQEAKICAgICAgICAgICAgICAgICAgICAgICAgUHlfQnVpbGRWYWx1ZSgiKHp6KSIsIF90em5hbWVbMF0sIF90em5hbWVbMV0pKTsKICNlbmRpZiAvKiBfX0NZR1dJTl9fICovCiAjZW5kaWYgLyogIUhBVkVfVFpOQU1FIHx8IF9fR0xJQkNfXyB8fCBfX0NZR1dJTl9fKi8KKworI2lmIGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKQorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1JFQUxUSU1FKTsKKyNpZmRlZiBDTE9DS19NT05PVE9OSUMKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19NT05PVE9OSUMpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfTU9OT1RPTklDX1JBVworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX01PTk9UT05JQ19SQVcpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfSElHSFJFUworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX0hJR0hSRVMpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lECisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX1RIUkVBRF9DUFVUSU1FX0lECisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQpOworI2VuZGlmCisjZW5kaWYgLyogSEFWRV9DTE9DS19HRVRUSU1FICovCiB9CiAKIAogc3RhdGljIFB5TWV0aG9kRGVmIHRpbWVfbWV0aG9kc1tdID0gewogICAgIHsidGltZSIsICAgICAgICAgICAgdGltZV90aW1lLCBNRVRIX05PQVJHUywgdGltZV9kb2N9LAotI2lmZGVmIEhBVkVfQ0xPQ0sKKyNpZmRlZiBQWUNMT0NLCiAgICAgeyJjbG9jayIsICAgICAgICAgICB0aW1lX2Nsb2NrLCBNRVRIX05PQVJHUywgY2xvY2tfZG9jfSwKICNlbmRpZgorI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQorICAgIHsiY2xvY2tfZ2V0dGltZSIsICAgdGltZV9jbG9ja19nZXR0aW1lLCBNRVRIX1ZBUkFSR1MsIGNsb2NrX2dldHRpbWVfZG9jfSwKKyAgICB7ImNsb2NrX3NldHRpbWUiLCAgIHRpbWVfY2xvY2tfc2V0dGltZSwgTUVUSF9WQVJBUkdTLCBjbG9ja19zZXR0aW1lX2RvY30sCisgICAgeyJjbG9ja19nZXRyZXMiLCAgICB0aW1lX2Nsb2NrX2dldHJlcywgTUVUSF9WQVJBUkdTLCBjbG9ja19nZXRyZXNfZG9jfSwKKyNlbmRpZgogICAgIHsic2xlZXAiLCAgICAgICAgICAgdGltZV9zbGVlcCwgTUVUSF9WQVJBUkdTLCBzbGVlcF9kb2N9LAogICAgIHsiZ210aW1lIiwgICAgICAgICAgdGltZV9nbXRpbWUsIE1FVEhfVkFSQVJHUywgZ210aW1lX2RvY30sCiAgICAgeyJsb2NhbHRpbWUiLCAgICAgICB0aW1lX2xvY2FsdGltZSwgTUVUSF9WQVJBUkdTLCBsb2NhbHRpbWVfZG9jfSwKQEAgLTg2Niw2ICsxMzc2LDEyIEBACiAjaWZkZWYgSEFWRV9XT1JLSU5HX1RaU0VUCiAgICAgeyJ0enNldCIsICAgICAgICAgICB0aW1lX3R6c2V0LCBNRVRIX05PQVJHUywgdHpzZXRfZG9jfSwKICNlbmRpZgorI2lmZGVmIFBZTU9OT1RPTklDCisgICAgeyJtb25vdG9uaWMiLCAgICAgICB0aW1lX21vbm90b25pYywgTUVUSF9OT0FSR1MsIG1vbm90b25pY19kb2N9LAorI2VuZGlmCisgICAgeyJwcm9jZXNzX3RpbWUiLCAgICB0aW1lX3Byb2Nlc3NfdGltZSwgTUVUSF9OT0FSR1MsIHByb2Nlc3NfdGltZV9kb2N9LAorICAgIHsicGVyZl9jb3VudGVyIiwgICAgdGltZV9wZXJmX2NvdW50ZXIsIE1FVEhfTk9BUkdTLCBwZXJmX2NvdW50ZXJfZG9jfSwKKyAgICB7ImdldF9jbG9ja19pbmZvIiwgIHRpbWVfZ2V0X2Nsb2NrX2luZm8sIE1FVEhfVkFSQVJHUywgZ2V0X2Nsb2NrX2luZm9fZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtODgxLDcgKzEzOTcsNyBAQAogXG5cCiBUaGUgb3RoZXIgcmVwcmVzZW50YXRpb24gaXMgYSB0dXBsZSBvZiA5IGludGVnZXJzIGdpdmluZyBsb2NhbCB0aW1lLlxuXAogVGhlIHR1cGxlIGl0ZW1zIGFyZTpcblwKLSAgeWVhciAoZm91ciBkaWdpdHMsIGUuZy4gMTk5OClcblwKKyAgeWVhciAoaW5jbHVkaW5nIGNlbnR1cnksIGUuZy4gMTk5OClcblwKICAgbW9udGggKDEtMTIpXG5cCiAgIGRheSAoMS0zMSlcblwKICAgaG91cnMgKDAtMjMpXG5cCkBAIC05MzMsNTEgKzE0NDksNjUgQEAKIFB5SW5pdF90aW1lKHZvaWQpCiB7CiAgICAgUHlPYmplY3QgKm07Ci0gICAgY2hhciAqcDsKICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZ0aW1lbW9kdWxlKTsKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIC8qIEFjY2VwdCAyLWRpZ2l0IGRhdGVzIHVubGVzcyBQWVRIT05ZMksgaXMgc2V0IGFuZCBub24tZW1wdHkgKi8KLSAgICBwID0gUHlfR0VURU5WKCJQWVRIT05ZMksiKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiYWNjZXB0MmR5ZWFyIiwgKGxvbmcpICghcCB8fCAhKnApKTsKLSAgICAvKiBJZiBhbiBlbWJlZGRlZCBpbnRlcnByZXRlciBpcyBzaHV0ZG93biBhbmQgcmVpbml0aWFsaXplZCB0aGUgb2xkCi0gICAgICAgbW9kZGljdCB3YXMgbm90IGRlY3JlZmVkIG9uIHNodXRkb3duIGFuZCB0aGUgbmV4dCBpbXBvcnQgb2YgdGhpcwotICAgICAgIG1vZHVsZSBsZWFkcyB0byBhIGxlYWsuICBDb25kaXRpb25hbGx5IGRlY3JlZiBoZXJlIHRvIHByZXZlbnQgdGhhdC4KLSAgICAqLwotICAgIFB5X1hERUNSRUYobW9kZGljdCk7Ci0gICAgLyogU3F1aXJyZWwgYXdheSB0aGUgbW9kdWxlJ3MgZGljdGlvbmFyeSBmb3IgdGhlIHkyayBjaGVjayAqLwotICAgIG1vZGRpY3QgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwotICAgIFB5X0lOQ1JFRihtb2RkaWN0KTsKLQogICAgIC8qIFNldCwgb3IgcmVzZXQsIG1vZHVsZSB2YXJpYWJsZXMgbGlrZSB0aW1lLnRpbWV6b25lICovCiAgICAgUHlJbml0X3RpbWV6b25lKG0pOwogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIC8qIEhlbHBlciB0byBhbGxvdyBpbnRlcnJ1cHRzIGZvciBXaW5kb3dzLgotICAgICAgIElmIEN0cmwrQyBldmVudCBkZWxpdmVyZWQgd2hpbGUgbm90IHNsZWVwaW5nCi0gICAgICAgaXQgd2lsbCBiZSBpZ25vcmVkLgotICAgICovCi0gICAgbWFpbl90aHJlYWQgPSBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCk7Ci0gICAgaEludGVycnVwdEV2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwgVFJVRSwgRkFMU0UsIE5VTEwpOwotICAgIFNldENvbnNvbGVDdHJsSGFuZGxlciggUHlDdHJsSGFuZGxlciwgVFJVRSk7Ci0jZW5kaWYgLyogTVNfV0lORE9XUyAqLwogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmU3RydWN0VGltZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cnVjdF90aW1lX3R5cGVfZGVzYyk7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIHdpbnZlci5kd09TVmVyc2lvbkluZm9TaXplID0gc2l6ZW9mKHdpbnZlcik7CisgICAgICAgIGlmICghR2V0VmVyc2lvbkV4KChPU1ZFUlNJT05JTkZPKikmd2ludmVyKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKG0pOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgfQogICAgIFB5X0lOQ1JFRigmU3RydWN0VGltZVR5cGUpOworI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX1NUUlVDVF9UTV9JVEVNUyIsIDExKTsKKyNlbHNlCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIl9TVFJVQ1RfVE1fSVRFTVMiLCA5KTsKKyNlbmRpZgogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3RydWN0X3RpbWUiLCAoUHlPYmplY3QqKSAmU3RydWN0VGltZVR5cGUpOwogICAgIGluaXRpYWxpemVkID0gMTsKICAgICByZXR1cm4gbTsKIH0KIAotc3RhdGljIGRvdWJsZQotZmxvYXR0aW1lKHZvaWQpCitzdGF0aWMgUHlPYmplY3QqCitmbG9hdHRpbWUoX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKIHsKICAgICBfUHlUaW1lX3RpbWV2YWwgdDsKLSAgICBfUHlUaW1lX2dldHRpbWVvZmRheSgmdCk7Ci0gICAgcmV0dXJuIChkb3VibGUpdC50dl9zZWMgKyB0LnR2X3VzZWMqMC4wMDAwMDE7CisjaWZkZWYgSEFWRV9DTE9DS19HRVRUSU1FCisgICAgc3RydWN0IHRpbWVzcGVjIHRwOworICAgIGludCByZXQ7CisKKyAgICAvKiBfUHlUaW1lX2dldHRpbWVvZmRheSgpIGRvZXMgbm90IHVzZSBjbG9ja19nZXR0aW1lKCkKKyAgICAgICBiZWNhdXNlIGl0IHdvdWxkIHJlcXVpcmUgdG8gbGluayBQeXRob24gdG8gdGhlIHJ0IChyZWFsLXRpbWUpCisgICAgICAgbGlicmFyeSwgYXQgbGVhc3Qgb24gTGludXggKi8KKyAgICByZXQgPSBjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmdHApOworICAgIGlmIChyZXQgPT0gMCkgeworICAgICAgICBpZiAoaW5mbykgeworICAgICAgICAgICAgc3RydWN0IHRpbWVzcGVjIHJlczsKKyAgICAgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUpIjsKKyAgICAgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDA7CisgICAgICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKKyAgICAgICAgICAgIGlmIChjbG9ja19nZXRyZXMoQ0xPQ0tfUkVBTFRJTUUsICZyZXMpID09IDApCisgICAgICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IHJlcy50dl9zZWMgKyByZXMudHZfbnNlYyAqIDFlLTk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDFlLTk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh0cC50dl9zZWMgKyB0cC50dl9uc2VjICogMWUtOSk7CisgICAgfQorI2VuZGlmCisgICAgX1B5VGltZV9nZXR0aW1lb2ZkYXlfaW5mbygmdCwgaW5mbyk7CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoZG91YmxlKXQudHZfc2VjICsgdC50dl91c2VjICogMWUtNik7CiB9CiAKIApAQCAtOTkyLDIzICsxNTIyLDI4IEBACiAjaWYgZGVmaW5lZChIQVZFX1NFTEVDVCkgJiYgIWRlZmluZWQoX19FTVhfXykKICAgICBzdHJ1Y3QgdGltZXZhbCB0OwogICAgIGRvdWJsZSBmcmFjOworICAgIGludCBlcnI7CisKICAgICBmcmFjID0gZm1vZChzZWNzLCAxLjApOwogICAgIHNlY3MgPSBmbG9vcihzZWNzKTsKICAgICB0LnR2X3NlYyA9IChsb25nKXNlY3M7CiAgICAgdC50dl91c2VjID0gKGxvbmcpKGZyYWMqMTAwMDAwMC4wKTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHNlbGVjdCgwLCAoZmRfc2V0ICopMCwgKGZkX3NldCAqKTAsIChmZF9zZXQgKikwLCAmdCkgIT0gMCkgeworICAgIGVyciA9IHNlbGVjdCgwLCAoZmRfc2V0ICopMCwgKGZkX3NldCAqKTAsIChmZF9zZXQgKikwLCAmdCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoZXJyICE9IDApIHsKICNpZmRlZiBFSU5UUgotICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsKLSNlbHNlCi0gICAgICAgIGlmICgxKSB7CisgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgeworICAgICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAgIFB5X0JMT0NLX1RIUkVBRFMKKyAgICAgICAgewogICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgfQotICAgIFB5X0VORF9BTExPV19USFJFQURTCiAjZWxpZiBkZWZpbmVkKF9fV0FUQ09NQ19fKSAmJiAhZGVmaW5lZChfX1FOWF9fKQogICAgIC8qIFhYWCBDYW4ndCBpbnRlcnJ1cHQgdGhpcyBzbGVlcCAqLwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKQEAgLTEwMjksMTggKzE1NjQsMTQgQEAKICAgICAgICAgICogYnkgR3VpZG8sIG9ubHkgdGhlIG1haW4gdGhyZWFkIGNhbiBiZSBpbnRlcnJ1cHRlZC4KICAgICAgICAgICovCiAgICAgICAgIHVsX21pbGxpcyA9ICh1bnNpZ25lZCBsb25nKW1pbGxpc2VjczsKLSAgICAgICAgaWYgKHVsX21pbGxpcyA9PSAwIHx8Ci0gICAgICAgICAgICBtYWluX3RocmVhZCAhPSBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCkpCisgICAgICAgIGlmICh1bF9taWxsaXMgPT0gMCB8fCAhX1B5T1NfSXNNYWluVGhyZWFkKCkpCiAgICAgICAgICAgICBTbGVlcCh1bF9taWxsaXMpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIERXT1JEIHJjOworICAgICAgICAgICAgSEFORExFIGhJbnRlcnJ1cHRFdmVudCA9IF9QeU9TX1NpZ2ludEV2ZW50KCk7CiAgICAgICAgICAgICBSZXNldEV2ZW50KGhJbnRlcnJ1cHRFdmVudCk7CiAgICAgICAgICAgICByYyA9IFdhaXRGb3JTaW5nbGVPYmplY3QoaEludGVycnVwdEV2ZW50LCB1bF9taWxsaXMpOwogICAgICAgICAgICAgaWYgKHJjID09IFdBSVRfT0JKRUNUXzApIHsKLSAgICAgICAgICAgICAgICAvKiBZaWVsZCB0byBtYWtlIHN1cmUgcmVhbCBQeXRob24gc2lnbmFsCi0gICAgICAgICAgICAgICAgICogaGFuZGxlciBjYWxsZWQuCi0gICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgU2xlZXAoMSk7CiAgICAgICAgICAgICAgICAgUHlfQkxPQ0tfVEhSRUFEUwogICAgICAgICAgICAgICAgIGVycm5vID0gRUlOVFI7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy90a2FwcGluaXQuYyBiL01vZHVsZXMvdGthcHBpbml0LmMKaW5kZXggYzFmOTdiMC4uMmVkODU5NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy90a2FwcGluaXQuYworKysgYi9Nb2R1bGVzL3RrYXBwaW5pdC5jCkBAIC0yNiw3ICsyNiw5IEBACiBpbnQKIFRjbF9BcHBJbml0KFRjbF9JbnRlcnAgKmludGVycCkKIHsKKyNpZmRlZiBXSVRIX01PUkVCVVRUT05TCiAgICAgVGtfV2luZG93IG1haW5fd2luZG93OworI2VuZGlmCiAgICAgY29uc3QgY2hhciAqX3RraW50ZXJfc2tpcF90a19pbml0OwogI2lmZGVmIFRLSU5URVJfUFJPVEVDVF9MT0FEVEsKICAgICBjb25zdCBjaGFyICpfdGtpbnRlcl90a19mYWlsZWQ7CkBAIC0xMTEsNyArMTEzLDExIEBACiAgICAgICAgIHJldHVybiBUQ0xfRVJST1I7CiAgICAgfQogCisjaWZkZWYgV0lUSF9NT1JFQlVUVE9OUwogICAgIG1haW5fd2luZG93ID0gVGtfTWFpbldpbmRvdyhpbnRlcnApOworI2Vsc2UKKyAgICBUa19NYWluV2luZG93KGludGVycCk7CisjZW5kaWYKIAogI2lmZGVmIFRLX0FRVUEKICAgICBUa01hY09TWEluaXRBcHBsZUV2ZW50cyhpbnRlcnApOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy91bmljb2RlZGF0YS5jIGIvTW9kdWxlcy91bmljb2RlZGF0YS5jCmluZGV4IDRkYjUwODcuLjI3ZmFkYjcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdW5pY29kZWRhdGEuYworKysgYi9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMKQEAgLTkzLDE2ICs5MywxMyBAQAogCiBzdGF0aWMgUHlfVUNTNCBnZXR1Y2hhcihQeVVuaWNvZGVPYmplY3QgKm9iaikKIHsKLSAgICBQeV9VTklDT0RFICp2ID0gUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKTsKLQotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUob2JqKSA9PSAxKQotICAgICAgICByZXR1cm4gKnY7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgIGVsc2UgaWYgKChQeVVuaWNvZGVfR0VUX1NJWkUob2JqKSA9PSAyKSAmJgotICAgICAgICAgICAgICgweEQ4MDAgPD0gdlswXSAmJiB2WzBdIDw9IDB4REJGRikgJiYKLSAgICAgICAgICAgICAoMHhEQzAwIDw9IHZbMV0gJiYgdlsxXSA8PSAweERGRkYpKQotICAgICAgICByZXR1cm4gKCgodlswXSAmIDB4M0ZGKTw8MTApIHwgKHZbMV0gJiAweDNGRikpICsgMHgxMDAwMDsKLSNlbmRpZgorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSkKKyAgICAgICAgcmV0dXJuIChQeV9VQ1M0KS0xOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopID09IDEpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopKQorICAgICAgICAgICAgcmV0dXJuIChQeV9VQ1M0KS0xOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX1JFQURfQ0hBUihvYmosIDApOworICAgIH0KICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAibmVlZCBhIHNpbmdsZSBVbmljb2RlIGNoYXJhY3RlciBhcyBwYXJhbWV0ZXIiKTsKICAgICByZXR1cm4gKFB5X1VDUzQpLTE7CkBAIC00NDMsNyArNDQwLDcgQEAKICAgICAgICBmcm9tIFRvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5LCBpdCBzaG91bGQgbm90IGJlIHBvc3NpYmxlCiAgICAgICAgdG8gb3ZlcmZsb3cgZGVjb21wX3ByZWZpeC4gKi8KICAgICBwcmVmaXhfaW5kZXggPSBkZWNvbXBfZGF0YVtpbmRleF0gJiAyNTU7Ci0gICAgYXNzZXJ0KHByZWZpeF9pbmRleCA8IChzaXplb2YoZGVjb21wX3ByZWZpeCkvc2l6ZW9mKCpkZWNvbXBfcHJlZml4KSkpOworICAgIGFzc2VydChwcmVmaXhfaW5kZXggPCBQeV9BUlJBWV9MRU5HVEgoZGVjb21wX3ByZWZpeCkpOwogCiAgICAgLyogY29weSBwcmVmaXggKi8KICAgICBpID0gc3RybGVuKGRlY29tcF9wcmVmaXhbcHJlZml4X2luZGV4XSk7CkBAIC00OTgsMzYgKzQ5NSw0NyBAQAogbmZkX25ma2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppbnB1dCwgaW50IGspCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBQeV9VTklDT0RFICppLCAqZW5kLCAqbzsKKyAgICBQeV9VQ1M0ICpvdXRwdXQ7CisgICAgUHlfc3NpemVfdCBpLCBvLCBvc2l6ZTsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogICAgIC8qIExvbmdlc3QgZGVjb21wb3NpdGlvbiBpbiBVbmljb2RlIDMuMjogVStGREZBICovCi0gICAgUHlfVU5JQ09ERSBzdGFja1syMF07CisgICAgUHlfVUNTNCBzdGFja1syMF07CiAgICAgUHlfc3NpemVfdCBzcGFjZSwgaXNpemU7CiAgICAgaW50IGluZGV4LCBwcmVmaXgsIGNvdW50LCBzdGFja3B0cjsKICAgICB1bnNpZ25lZCBjaGFyIHByZXYsIGN1cjsKIAogICAgIHN0YWNrcHRyID0gMDsKLSAgICBpc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShpbnB1dCk7CisgICAgaXNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dCk7CiAgICAgLyogT3ZlcmFsbG9jYXRlIGF0bW9zdCAxMCBjaGFyYWN0ZXJzLiAqLwogICAgIHNwYWNlID0gKGlzaXplID4gMTAgPyAxMCA6IGlzaXplKSArIGlzaXplOwotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzcGFjZSk7Ci0gICAgaWYgKCFyZXN1bHQpCisgICAgb3NpemUgPSBzcGFjZTsKKyAgICBvdXRwdXQgPSBQeU1lbV9NYWxsb2Moc3BhY2UgKiBzaXplb2YoUHlfVUNTNCkpOworICAgIGlmICghb3V0cHV0KSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGkgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShpbnB1dCk7Ci0gICAgZW5kID0gaSArIGlzaXplOwotICAgIG8gPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOworICAgIH0KKyAgICBpID0gbyA9IDA7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGlucHV0KTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoaW5wdXQpOwogCi0gICAgd2hpbGUgKGkgPCBlbmQpIHsKLSAgICAgICAgc3RhY2tbc3RhY2twdHIrK10gPSAqaSsrOworICAgIHdoaWxlIChpIDwgaXNpemUpIHsKKyAgICAgICAgc3RhY2tbc3RhY2twdHIrK10gPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKyspOwogICAgICAgICB3aGlsZShzdGFja3B0cikgewotICAgICAgICAgICAgUHlfVU5JQ09ERSBjb2RlID0gc3RhY2tbLS1zdGFja3B0cl07CisgICAgICAgICAgICBQeV9VQ1M0IGNvZGUgPSBzdGFja1stLXN0YWNrcHRyXTsKICAgICAgICAgICAgIC8qIEhhbmd1bCBEZWNvbXBvc2l0aW9uIGFkZHMgdGhyZWUgY2hhcmFjdGVycyBpbgogICAgICAgICAgICAgICAgYSBzaW5nbGUgc3RlcCwgc28gd2UgbmVlZCBhdGxlYXN0IHRoYXQgbXVjaCByb29tLiAqLwogICAgICAgICAgICAgaWYgKHNwYWNlIDwgMykgewotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmV3c2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShyZXN1bHQpICsgMTA7CisgICAgICAgICAgICAgICAgUHlfVUNTNCAqbmV3X291dHB1dDsKKyAgICAgICAgICAgICAgICBvc2l6ZSArPSAxMDsKICAgICAgICAgICAgICAgICBzcGFjZSArPSAxMDsKLSAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmcmVzdWx0LCBuZXdzaXplKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBuZXdfb3V0cHV0ID0gUHlNZW1fUmVhbGxvYyhvdXRwdXQsIG9zaXplKnNpemVvZihQeV9VQ1M0KSk7CisgICAgICAgICAgICAgICAgaWYgKG5ld19vdXRwdXQgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKG91dHB1dCk7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIG8gPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpICsgbmV3c2l6ZSAtIHNwYWNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBvdXRwdXQgPSBuZXdfb3V0cHV0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogSGFuZ3VsIERlY29tcG9zaXRpb24uICovCiAgICAgICAgICAgICBpZiAoU0Jhc2UgPD0gY29kZSAmJiBjb2RlIDwgKFNCYXNlK1NDb3VudCkpIHsKQEAgLTUzNSwxMSArNTQzLDExIEBACiAgICAgICAgICAgICAgICAgaW50IEwgPSBMQmFzZSArIFNJbmRleCAvIE5Db3VudDsKICAgICAgICAgICAgICAgICBpbnQgViA9IFZCYXNlICsgKFNJbmRleCAlIE5Db3VudCkgLyBUQ291bnQ7CiAgICAgICAgICAgICAgICAgaW50IFQgPSBUQmFzZSArIFNJbmRleCAlIFRDb3VudDsKLSAgICAgICAgICAgICAgICAqbysrID0gTDsKLSAgICAgICAgICAgICAgICAqbysrID0gVjsKKyAgICAgICAgICAgICAgICBvdXRwdXRbbysrXSA9IEw7CisgICAgICAgICAgICAgICAgb3V0cHV0W28rK10gPSBWOwogICAgICAgICAgICAgICAgIHNwYWNlIC09IDI7CiAgICAgICAgICAgICAgICAgaWYgKFQgIT0gVEJhc2UpIHsKLSAgICAgICAgICAgICAgICAgICAgKm8rKyA9IFQ7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dFtvKytdID0gVDsKICAgICAgICAgICAgICAgICAgICAgc3BhY2UgLS07CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNTU5LDcgKzU2Nyw3IEBACiAgICAgICAgICAgICAvKiBDb3B5IGNoYXJhY3RlciBpZiBpdCBpcyBub3QgZGVjb21wb3NhYmxlLCBvciBoYXMgYQogICAgICAgICAgICAgICAgY29tcGF0aWJpbGl0eSBkZWNvbXBvc2l0aW9uLCBidXQgd2UgZG8gTkZELiAqLwogICAgICAgICAgICAgaWYgKCFjb3VudCB8fCAocHJlZml4ICYmICFrKSkgewotICAgICAgICAgICAgICAgICpvKysgPSBjb2RlOworICAgICAgICAgICAgICAgIG91dHB1dFtvKytdID0gY29kZTsKICAgICAgICAgICAgICAgICBzcGFjZS0tOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtNTcyLDE1ICs1ODAsMjAgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIC8qIERyb3Agb3ZlcmFsbG9jYXRpb24uIENhbm5vdCBmYWlsLiAqLwotICAgIFB5VW5pY29kZV9SZXNpemUoJnJlc3VsdCwgUHlVbmljb2RlX0dFVF9TSVpFKHJlc3VsdCkgLSBzcGFjZSk7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCwgbyk7CisgICAgUHlNZW1fRnJlZShvdXRwdXQpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiByZXN1bHQgaXMgZ3VhcmFudGVlZCB0byBiZSByZWFkeSwgYXMgaXQgaXMgY29tcGFjdC4gKi8KKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocmVzdWx0KTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVzdWx0KTsKIAogICAgIC8qIFNvcnQgY2Fub25pY2FsbHkuICovCi0gICAgaSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCk7Ci0gICAgcHJldiA9IF9nZXRyZWNvcmRfZXgoKmkpLT5jb21iaW5pbmc7Ci0gICAgZW5kID0gaSArIFB5VW5pY29kZV9HRVRfU0laRShyZXN1bHQpOwotICAgIGZvciAoaSsrOyBpIDwgZW5kOyBpKyspIHsKLSAgICAgICAgY3VyID0gX2dldHJlY29yZF9leCgqaSktPmNvbWJpbmluZzsKKyAgICBpID0gMDsKKyAgICBwcmV2ID0gX2dldHJlY29yZF9leChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSktPmNvbWJpbmluZzsKKyAgICBmb3IgKGkrKzsgaSA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlc3VsdCk7IGkrKykgeworICAgICAgICBjdXIgPSBfZ2V0cmVjb3JkX2V4KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKS0+Y29tYmluaW5nOwogICAgICAgICBpZiAocHJldiA9PSAwIHx8IGN1ciA9PSAwIHx8IHByZXYgPD0gY3VyKSB7CiAgICAgICAgICAgICBwcmV2ID0gY3VyOwogICAgICAgICAgICAgY29udGludWU7CkBAIC01ODgsMzEgKzYwMSwzMiBAQAogICAgICAgICAvKiBOb24tY2Fub25pY2FsIG9yZGVyLiBOZWVkIHRvIHN3aXRjaCAqaSB3aXRoIHByZXZpb3VzLiAqLwogICAgICAgICBvID0gaSAtIDE7CiAgICAgICAgIHdoaWxlICgxKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIHRtcCA9IG9bMV07Ci0gICAgICAgICAgICBvWzFdID0gb1swXTsKLSAgICAgICAgICAgIG9bMF0gPSB0bXA7CisgICAgICAgICAgICBQeV9VQ1M0IHRtcCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIG8rMSk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgbysxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIG8pKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBvLCB0bXApOwogICAgICAgICAgICAgby0tOwotICAgICAgICAgICAgaWYgKG8gPCBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpKQorICAgICAgICAgICAgaWYgKG8gPCAwKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcHJldiA9IF9nZXRyZWNvcmRfZXgoKm8pLT5jb21iaW5pbmc7CisgICAgICAgICAgICBwcmV2ID0gX2dldHJlY29yZF9leChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBvKSktPmNvbWJpbmluZzsKICAgICAgICAgICAgIGlmIChwcmV2ID09IDAgfHwgcHJldiA8PSBjdXIpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgcHJldiA9IF9nZXRyZWNvcmRfZXgoKmkpLT5jb21iaW5pbmc7CisgICAgICAgIHByZXYgPSBfZ2V0cmVjb3JkX2V4KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKS0+Y29tYmluaW5nOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgaW50Ci1maW5kX25mY19pbmRleChQeU9iamVjdCAqc2VsZiwgc3RydWN0IHJlaW5kZXgqIG5mYywgUHlfVU5JQ09ERSBjb2RlKQorZmluZF9uZmNfaW5kZXgoUHlPYmplY3QgKnNlbGYsIHN0cnVjdCByZWluZGV4KiBuZmMsIFB5X1VDUzQgY29kZSkKIHsKLSAgICBpbnQgaW5kZXg7CisgICAgdW5zaWduZWQgaW50IGluZGV4OwogICAgIGZvciAoaW5kZXggPSAwOyBuZmNbaW5kZXhdLnN0YXJ0OyBpbmRleCsrKSB7Ci0gICAgICAgIGludCBzdGFydCA9IG5mY1tpbmRleF0uc3RhcnQ7CisgICAgICAgIHVuc2lnbmVkIGludCBzdGFydCA9IG5mY1tpbmRleF0uc3RhcnQ7CiAgICAgICAgIGlmIChjb2RlIDwgc3RhcnQpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGlmIChjb2RlIDw9IHN0YXJ0ICsgbmZjW2luZGV4XS5jb3VudCkgewotICAgICAgICAgICAgaW50IGRlbHRhID0gY29kZSAtIHN0YXJ0OworICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlbHRhID0gY29kZSAtIHN0YXJ0OwogICAgICAgICAgICAgcmV0dXJuIG5mY1tpbmRleF0uaW5kZXggKyBkZWx0YTsKICAgICAgICAgfQogICAgIH0KQEAgLTYyMywyNyArNjM3LDM2IEBACiBuZmNfbmZrYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmlucHV0LCBpbnQgaykKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIFB5X1VOSUNPREUgKmksICppMSwgKm8sICplbmQ7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9VQ1M0ICpvdXRwdXQ7CisgICAgUHlfc3NpemVfdCBpLCBpMSwgbywgbGVuOwogICAgIGludCBmLGwsaW5kZXgsaW5kZXgxLGNvbWI7Ci0gICAgUHlfVU5JQ09ERSBjb2RlOwotICAgIFB5X1VOSUNPREUgKnNraXBwZWRbMjBdOworICAgIFB5X1VDUzQgY29kZTsKKyAgICBQeV9zc2l6ZV90IHNraXBwZWRbMjBdOwogICAgIGludCBjc2tpcHBlZCA9IDA7CiAKICAgICByZXN1bHQgPSBuZmRfbmZrZChzZWxmLCBpbnB1dCwgayk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIHJlc3VsdCB3aWxsIGJlICJyZWFkeSIuICovCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHJlc3VsdCk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlc3VsdCk7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzdWx0KTsKIAotICAgIC8qIFdlIGFyZSBnb2luZyB0byBtb2RpZnkgcmVzdWx0IGluLXBsYWNlLgotICAgICAgIElmIG5mZF9uZmtkIGlzIGNoYW5nZWQgdG8gc29tZXRpbWVzIHJldHVybiB0aGUgaW5wdXQsCi0gICAgICAgdGhpcyBjb2RlIG5lZWRzIHRvIGJlIHJldmlld2VkLiAqLwotICAgIGFzc2VydChyZXN1bHQgIT0gaW5wdXQpOwotCi0gICAgaSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCk7Ci0gICAgZW5kID0gaSArIFB5VW5pY29kZV9HRVRfU0laRShyZXN1bHQpOwotICAgIG8gPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOworICAgIC8qIFdlIGFsbG9jYXRlIGEgYnVmZmVyIGZvciB0aGUgb3V0cHV0LgorICAgICAgIElmIHdlIGZpbmQgdGhhdCB3ZSBtYWRlIG5vIGNoYW5nZXMsIHdlIHN0aWxsIHJldHVybgorICAgICAgIHRoZSBORkQgcmVzdWx0LiAqLworICAgIG91dHB1dCA9IFB5TWVtX01hbGxvYyhsZW4gKiBzaXplb2YoUHlfVUNTNCkpOworICAgIGlmICghb3V0cHV0KSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaSA9IG8gPSAwOwogCiAgIGFnYWluOgotICAgIHdoaWxlIChpIDwgZW5kKSB7CisgICAgd2hpbGUgKGkgPCBsZW4pIHsKICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IGNza2lwcGVkOyBpbmRleCsrKSB7CiAgICAgICAgICAgaWYgKHNraXBwZWRbaW5kZXhdID09IGkpIHsKICAgICAgICAgICAgICAgLyogKmkgY2hhcmFjdGVyIGlzIHNraXBwZWQuCkBAIC02NTYsMzMgKzY3OSw0MSBAQAogICAgICAgfQogICAgICAgLyogSGFuZ3VsIENvbXBvc2l0aW9uLiBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIGZvciA8TFYsVD4KICAgICAgICAgIHBhaXJzLCBzaW5jZSB3ZSBhbHdheXMgaGF2ZSBkZWNvbXBvc2VkIGRhdGEuICovCi0gICAgICBpZiAoTEJhc2UgPD0gKmkgJiYgKmkgPCAoTEJhc2UrTENvdW50KSAmJgotICAgICAgICAgIGkgKyAxIDwgZW5kICYmCi0gICAgICAgICAgVkJhc2UgPD0gaVsxXSAmJiBpWzFdIDw9IChWQmFzZStWQ291bnQpKSB7CisgICAgICBjb2RlID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICBpZiAoTEJhc2UgPD0gY29kZSAmJiBjb2RlIDwgKExCYXNlK0xDb3VudCkgJiYKKyAgICAgICAgICBpICsgMSA8IGxlbiAmJgorICAgICAgICAgIFZCYXNlIDw9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkrMSkgJiYKKyAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKzEpIDw9IChWQmFzZStWQ291bnQpKSB7CiAgICAgICAgICAgaW50IExJbmRleCwgVkluZGV4OwotICAgICAgICAgIExJbmRleCA9IGlbMF0gLSBMQmFzZTsKLSAgICAgICAgICBWSW5kZXggPSBpWzFdIC0gVkJhc2U7CisgICAgICAgICAgTEluZGV4ID0gY29kZSAtIExCYXNlOworICAgICAgICAgIFZJbmRleCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkrMSkgLSBWQmFzZTsKICAgICAgICAgICBjb2RlID0gU0Jhc2UgKyAoTEluZGV4KlZDb3VudCtWSW5kZXgpKlRDb3VudDsKICAgICAgICAgICBpKz0yOwotICAgICAgICAgIGlmIChpIDwgZW5kICYmCi0gICAgICAgICAgICAgIFRCYXNlIDw9ICppICYmICppIDw9IChUQmFzZStUQ291bnQpKSB7Ci0gICAgICAgICAgICAgIGNvZGUgKz0gKmktVEJhc2U7CisgICAgICAgICAgaWYgKGkgPCBsZW4gJiYKKyAgICAgICAgICAgICAgVEJhc2UgPD0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgJiYKKyAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgPD0gKFRCYXNlK1RDb3VudCkpIHsKKyAgICAgICAgICAgICAgY29kZSArPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKS1UQmFzZTsKICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgIH0KLSAgICAgICAgICAqbysrID0gY29kZTsKKyAgICAgICAgICBvdXRwdXRbbysrXSA9IGNvZGU7CiAgICAgICAgICAgY29udGludWU7CiAgICAgICB9CiAKLSAgICAgIGYgPSBmaW5kX25mY19pbmRleChzZWxmLCBuZmNfZmlyc3QsICppKTsKKyAgICAgIC8qIGNvZGUgaXMgc3RpbGwgaW5wdXRbaV0gaGVyZSAqLworICAgICAgZiA9IGZpbmRfbmZjX2luZGV4KHNlbGYsIG5mY19maXJzdCwgY29kZSk7CiAgICAgICBpZiAoZiA9PSAtMSkgewotICAgICAgICAgICpvKysgPSAqaSsrOworICAgICAgICAgIG91dHB1dFtvKytdID0gY29kZTsKKyAgICAgICAgICBpKys7CiAgICAgICAgICAgY29udGludWU7CiAgICAgICB9CiAgICAgICAvKiBGaW5kIG5leHQgdW5ibG9ja2VkIGNoYXJhY3Rlci4gKi8KICAgICAgIGkxID0gaSsxOwogICAgICAgY29tYiA9IDA7Ci0gICAgICB3aGlsZSAoaTEgPCBlbmQpIHsKLSAgICAgICAgICBpbnQgY29tYjEgPSBfZ2V0cmVjb3JkX2V4KCppMSktPmNvbWJpbmluZzsKKyAgICAgIC8qIG91dHB1dCBiYXNlIGNoYXJhY3RlciBmb3Igbm93OyBtaWdodCBiZSB1cGRhdGVkIGxhdGVyLiAqLworICAgICAgb3V0cHV0W29dID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICB3aGlsZSAoaTEgPCBsZW4pIHsKKyAgICAgICAgICBQeV9VQ1M0IGNvZGUxID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaTEpOworICAgICAgICAgIGludCBjb21iMSA9IF9nZXRyZWNvcmRfZXgoY29kZTEpLT5jb21iaW5pbmc7CiAgICAgICAgICAgaWYgKGNvbWIpIHsKICAgICAgICAgICAgICAgaWYgKGNvbWIxID09IDApCiAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTY5Miw4ICs3MjMsOCBAQAogICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICB9Ci0gICAgICAgICAgbCA9IGZpbmRfbmZjX2luZGV4KHNlbGYsIG5mY19sYXN0LCAqaTEpOwotICAgICAgICAgIC8qICppMSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCAqaS4gSWYgKmkxCisgICAgICAgICAgbCA9IGZpbmRfbmZjX2luZGV4KHNlbGYsIG5mY19sYXN0LCBjb2RlMSk7CisgICAgICAgICAgLyogaTEgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggaS4gSWYgaTEKICAgICAgICAgICAgICBpcyBhIHN0YXJ0ZXIsIHdlIGRvbid0IG5lZWQgdG8gbG9vayBmdXJ0aGVyLgogICAgICAgICAgICAgIE90aGVyd2lzZSwgcmVjb3JkIHRoZSBjb21iaW5pbmcgY2xhc3MuICovCiAgICAgICAgICAgaWYgKGwgPT0gLTEpIHsKQEAgLTcxMiwxOSArNzQzLDI4IEBACiAgICAgICAgICAgICAgIGdvdG8gbm90X2NvbWJpbmFibGU7CiAKICAgICAgICAgICAvKiBSZXBsYWNlIHRoZSBvcmlnaW5hbCBjaGFyYWN0ZXIuICovCi0gICAgICAgICAgKmkgPSBjb2RlOworICAgICAgICAgIG91dHB1dFtvXSA9IGNvZGU7CiAgICAgICAgICAgLyogTWFyayB0aGUgc2Vjb25kIGNoYXJhY3RlciB1bnVzZWQuICovCiAgICAgICAgICAgYXNzZXJ0KGNza2lwcGVkIDwgMjApOwogICAgICAgICAgIHNraXBwZWRbY3NraXBwZWQrK10gPSBpMTsKICAgICAgICAgICBpMSsrOwotICAgICAgICAgIGYgPSBmaW5kX25mY19pbmRleChzZWxmLCBuZmNfZmlyc3QsICppKTsKKyAgICAgICAgICBmID0gZmluZF9uZmNfaW5kZXgoc2VsZiwgbmZjX2ZpcnN0LCBvdXRwdXRbb10pOwogICAgICAgICAgIGlmIChmID09IC0xKQogICAgICAgICAgICAgICBicmVhazsKICAgICAgIH0KLSAgICAgICpvKysgPSAqaSsrOworICAgICAgLyogT3V0cHV0IGNoYXJhY3RlciB3YXMgYWxyZWFkeSB3cml0dGVuLgorICAgICAgICAgSnVzdCBhZHZhbmNlIHRoZSBpbmRpY2VzLiAqLworICAgICAgbysrOyBpKys7CiAgICAgfQotICAgIGlmIChvICE9IGVuZCkKLSAgICAgICAgUHlVbmljb2RlX1Jlc2l6ZSgmcmVzdWx0LCBvIC0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KSk7CisgICAgaWYgKG8gPT0gbGVuKSB7CisgICAgICAgIC8qIE5vIGNoYW5nZXMuIFJldHVybiBvcmlnaW5hbCBzdHJpbmcuICovCisgICAgICAgIFB5TWVtX0ZyZWUob3V0cHV0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCwgbyk7CisgICAgUHlNZW1fRnJlZShvdXRwdXQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTczMiw3ICs3NzIsOSBAQAogc3RhdGljIGludAogaXNfbm9ybWFsaXplZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmlucHV0LCBpbnQgbmZjLCBpbnQgaykKIHsKLSAgICBQeV9VTklDT0RFICppLCAqZW5kOworICAgIFB5X3NzaXplX3QgaSwgbGVuOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAgICAgdW5zaWduZWQgY2hhciBwcmV2X2NvbWJpbmluZyA9IDAsIHF1aWNrY2hlY2tfbWFzazsKIAogICAgIC8qIEFuIG9sZGVyIHZlcnNpb24gb2YgdGhlIGRhdGFiYXNlIGlzIHJlcXVlc3RlZCwgcXVpY2tjaGVja3MgbXVzdCBiZQpAQCAtNzQ0LDEwICs3ODYsMTMgQEAKICAgICAgICBhcyBkZXNjcmliZWQgaW4gaHR0cDovL3VuaWNvZGUub3JnL3JlcG9ydHMvdHIxNS8jQW5uZXg4LiAqLwogICAgIHF1aWNrY2hlY2tfbWFzayA9IDMgPDwgKChuZmMgPyA0IDogMCkgKyAoayA/IDIgOiAwKSk7CiAKLSAgICBpID0gUHlVbmljb2RlX0FTX1VOSUNPREUoaW5wdXQpOwotICAgIGVuZCA9IGkgKyBQeVVuaWNvZGVfR0VUX1NJWkUoaW5wdXQpOwotICAgIHdoaWxlIChpIDwgZW5kKSB7Ci0gICAgICAgIGNvbnN0IF9QeVVuaWNvZGVfRGF0YWJhc2VSZWNvcmQgKnJlY29yZCA9IF9nZXRyZWNvcmRfZXgoKmkrKyk7CisgICAgaSA9IDA7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGlucHV0KTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoaW5wdXQpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0KTsKKyAgICB3aGlsZSAoaSA8IGxlbikgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSsrKTsKKyAgICAgICAgY29uc3QgX1B5VW5pY29kZV9EYXRhYmFzZVJlY29yZCAqcmVjb3JkID0gX2dldHJlY29yZF9leChjaCk7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgY29tYmluaW5nID0gcmVjb3JkLT5jb21iaW5pbmc7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgcXVpY2tjaGVjayA9IHJlY29yZC0+bm9ybWFsaXphdGlvbl9xdWlja19jaGVjazsKIApAQCAtNzc2LDcgKzgyMSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtLCAmUHlVbmljb2RlX1R5cGUsICZpbnB1dCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9HZXRTaXplKGlucHV0KSA9PSAwKSB7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShpbnB1dCkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0KSA9PSAwKSB7CiAgICAgICAgIC8qIFNwZWNpYWwgY2FzZSBlbXB0eSBpbnB1dCBzdHJpbmdzLCBzaW5jZSByZXNpemluZwogICAgICAgICAgICB0aGVtICBsYXRlciB3b3VsZCBjYXVzZSBpbnRlcm5hbCBlcnJvcnMuICovCiAgICAgICAgIFB5X0lOQ1JFRihpbnB1dCk7CkBAIC04NzYsMTUgKzkyNCwyNSBAQAogewogICAgIHJldHVybgogICAgICAgICAoMHgzNDAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDREQjUpICAgfHwgLyogQ0pLIElkZW9ncmFwaCBFeHRlbnNpb24gQSAqLwotICAgICAgICAoMHg0RTAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDlGQ0IpICAgfHwgLyogQ0pLIElkZW9ncmFwaCAqLworICAgICAgICAoMHg0RTAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDlGQ0MpICAgfHwgLyogQ0pLIElkZW9ncmFwaCAqLwogICAgICAgICAoMHgyMDAwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHgyQTZENikgfHwgLyogQ0pLIElkZW9ncmFwaCBFeHRlbnNpb24gQiAqLwogICAgICAgICAoMHgyQTcwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHgyQjczNCkgfHwgLyogQ0pLIElkZW9ncmFwaCBFeHRlbnNpb24gQyAqLwogICAgICAgICAoMHgyQjc0MCA8PSBjb2RlICYmIGNvZGUgPD0gMHgyQjgxRCk7ICAgLyogQ0pLIElkZW9ncmFwaCBFeHRlbnNpb24gRCAqLwogfQogCisvKiBtYWNyb3MgdXNlZCB0byBkZXRlcm1pbmUgaWYgdGhlIGdpdmVuIGNvZGVwb2ludCBpcyBpbiB0aGUgUFVBIHJhbmdlIHRoYXQKKyAqIHdlIGFyZSB1c2luZyB0byBzdG9yZSBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMgKi8KKyNkZWZpbmUgSVNfQUxJQVMoY3ApICgoY3AgPj0gYWxpYXNlc19zdGFydCkgJiYgKGNwIDwgYWxpYXNlc19lbmQpKQorI2RlZmluZSBJU19OQU1FRF9TRVEoY3ApICgoY3AgPj0gbmFtZWRfc2VxdWVuY2VzX3N0YXJ0KSAmJiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIChjcCA8IG5hbWVkX3NlcXVlbmNlc19lbmQpKQorCiBzdGF0aWMgaW50Ci1fZ2V0dWNuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeV9VQ1M0IGNvZGUsIGNoYXIqIGJ1ZmZlciwgaW50IGJ1ZmxlbikKK19nZXR1Y25hbWUoUHlPYmplY3QgKnNlbGYsIFB5X1VDUzQgY29kZSwgY2hhciogYnVmZmVyLCBpbnQgYnVmbGVuLAorICAgICAgICAgICBpbnQgd2l0aF9hbGlhc19hbmRfc2VxKQogeworICAgIC8qIEZpbmQgdGhlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBjb2RlcG9pbnQuCisgICAgICogSWYgd2l0aF9hbGlhc19hbmRfc2VxIGlzIDEsIGNoZWNrIGZvciBuYW1lcyBpbiB0aGUgUHJpdmF0ZSBVc2UgQXJlYSAxNQorICAgICAqIHRoYXQgd2UgYXJlIHVzaW5nIGZvciBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMuICovCiAgICAgaW50IG9mZnNldDsKICAgICBpbnQgaTsKICAgICBpbnQgd29yZDsKQEAgLTg5Myw4ICs5NTEsMTYgQEAKICAgICBpZiAoY29kZSA+PSAweDExMDAwMCkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICAvKiBYWFggc2hvdWxkIHdlIGp1c3Qgc2tpcCBhbGwgdGhlIGNvZGVwb2ludHMgaW4gdGhlIFBVQXMgaGVyZT8gKi8KKyAgICBpZiAoIXdpdGhfYWxpYXNfYW5kX3NlcSAmJiAoSVNfQUxJQVMoY29kZSkgfHwgSVNfTkFNRURfU0VRKGNvZGUpKSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBpZiAoc2VsZiAmJiBVQ0RfQ2hlY2soc2VsZikpIHsKLSAgICAgICAgY29uc3QgY2hhbmdlX3JlY29yZCAqb2xkID0gZ2V0X29sZF9yZWNvcmQoc2VsZiwgY29kZSk7CisgICAgICAgIC8qIGluIDMuMi4wIHRoZXJlIGFyZSBubyBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMgKi8KKyAgICAgICAgY29uc3QgY2hhbmdlX3JlY29yZCAqb2xkOworICAgICAgICBpZiAoSVNfQUxJQVMoY29kZSkgfHwgSVNfTkFNRURfU0VRKGNvZGUpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIG9sZCA9IGdldF9vbGRfcmVjb3JkKHNlbGYsIGNvZGUpOwogICAgICAgICBpZiAob2xkLT5jYXRlZ29yeV9jaGFuZ2VkID09IDApIHsKICAgICAgICAgICAgIC8qIHVuYXNzaWduZWQgKi8KICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtOTc4LDcgKzEwNDQsNyBAQAogICAgIC8qIGNoZWNrIGlmIGNvZGUgY29ycmVzcG9uZHMgdG8gdGhlIGdpdmVuIG5hbWUgKi8KICAgICBpbnQgaTsKICAgICBjaGFyIGJ1ZmZlcltOQU1FX01BWExFTl07Ci0gICAgaWYgKCFfZ2V0dWNuYW1lKHNlbGYsIGNvZGUsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpKQorICAgIGlmICghX2dldHVjbmFtZShzZWxmLCBjb2RlLCBidWZmZXIsIHNpemVvZihidWZmZXIpLCAxKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgZm9yIChpID0gMDsgaSA8IG5hbWVsZW47IGkrKykgewogICAgICAgICBpZiAoUHlfVE9VUFBFUihQeV9DSEFSTUFTSyhuYW1lW2ldKSkgIT0gYnVmZmVyW2ldKQpAQCAtOTk0LDcgKzEwNjAsNyBAQAogICAgICpsZW4gPSAtMTsKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICBjaGFyICpzID0gaGFuZ3VsX3N5bGxhYmxlc1tpXVtjb2x1bW5dOwotICAgICAgICBsZW4xID0gc3RybGVuKHMpOworICAgICAgICBsZW4xID0gUHlfU0FGRV9ET1dOQ0FTVChzdHJsZW4ocyksIHNpemVfdCwgaW50KTsKICAgICAgICAgaWYgKGxlbjEgPD0gKmxlbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoc3RybmNtcChzdHIsIHMsIGxlbjEpID09IDApIHsKQEAgLTEwMDgsOCArMTA3NCwyOCBAQAogfQogCiBzdGF0aWMgaW50Ci1fZ2V0Y29kZShQeU9iamVjdCogc2VsZiwgY29uc3QgY2hhciogbmFtZSwgaW50IG5hbWVsZW4sIFB5X1VDUzQqIGNvZGUpCitfY2hlY2tfYWxpYXNfYW5kX3NlcSh1bnNpZ25lZCBpbnQgY3AsIFB5X1VDUzQqIGNvZGUsIGludCB3aXRoX25hbWVkX3NlcSkKIHsKKyAgICAvKiBjaGVjayBpZiBuYW1lZCBzZXF1ZW5jZXMgYXJlIGFsbG93ZWQgKi8KKyAgICBpZiAoIXdpdGhfbmFtZWRfc2VxICYmIElTX05BTUVEX1NFUShjcCkpCisgICAgICAgIHJldHVybiAwOworICAgIC8qIGlmIHRoZSBjb2RlcG9pbnQgaXMgaW4gdGhlIFBVQSByYW5nZSB0aGF0IHdlIHVzZSBmb3IgYWxpYXNlcywKKyAgICAgKiBjb252ZXJ0IGl0IHRvIG9idGFpbiB0aGUgcmlnaHQgY29kZXBvaW50ICovCisgICAgaWYgKElTX0FMSUFTKGNwKSkKKyAgICAgICAgKmNvZGUgPSBuYW1lX2FsaWFzZXNbY3AtYWxpYXNlc19zdGFydF07CisgICAgZWxzZQorICAgICAgICAqY29kZSA9IGNwOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CitfZ2V0Y29kZShQeU9iamVjdCogc2VsZiwgY29uc3QgY2hhciogbmFtZSwgaW50IG5hbWVsZW4sIFB5X1VDUzQqIGNvZGUsCisgICAgICAgICBpbnQgd2l0aF9uYW1lZF9zZXEpCit7CisgICAgLyogUmV0dXJuIHRoZSBjb2RlcG9pbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBuYW1lLgorICAgICAqIE5hbWVkIGFsaWFzZXMgYXJlIHJlc29sdmVkIHRvbyAodW5sZXNzIHNlbGYgIT0gTlVMTCAoaS5lLiB3ZSBhcmUgdXNpbmcKKyAgICAgKiAzLjIuMCkpLiAgSWYgd2l0aF9uYW1lZF9zZXEgaXMgMSwgcmV0dXJucyB0aGUgUFVBIGNvZGVwb2ludCB0aGF0IHdlIGFyZQorICAgICAqIHVzaW5nIGZvciB0aGUgbmFtZWQgc2VxdWVuY2UsIGFuZCB0aGUgY2FsbGVyIG11c3QgdGhlbiBjb252ZXJ0IGl0LiAqLwogICAgIHVuc2lnbmVkIGludCBoLCB2OwogICAgIHVuc2lnbmVkIGludCBtYXNrID0gY29kZV9zaXplLTE7CiAgICAgdW5zaWduZWQgaW50IGksIGluY3I7CkBAIC0xMDY1LDEwICsxMTUxLDggQEAKICAgICB2ID0gY29kZV9oYXNoW2ldOwogICAgIGlmICghdikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKF9jbXBuYW1lKHNlbGYsIHYsIG5hbWUsIG5hbWVsZW4pKSB7Ci0gICAgICAgICpjb2RlID0gdjsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQorICAgIGlmIChfY21wbmFtZShzZWxmLCB2LCBuYW1lLCBuYW1lbGVuKSkKKyAgICAgICAgcmV0dXJuIF9jaGVja19hbGlhc19hbmRfc2VxKHYsIGNvZGUsIHdpdGhfbmFtZWRfc2VxKTsKICAgICBpbmNyID0gKGggXiAoaCA+PiAzKSkgJiBtYXNrOwogICAgIGlmICghaW5jcikKICAgICAgICAgaW5jciA9IG1hc2s7CkBAIC0xMDc3LDEwICsxMTYxLDggQEAKICAgICAgICAgdiA9IGNvZGVfaGFzaFtpXTsKICAgICAgICAgaWYgKCF2KQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmIChfY21wbmFtZShzZWxmLCB2LCBuYW1lLCBuYW1lbGVuKSkgewotICAgICAgICAgICAgKmNvZGUgPSB2OwotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKF9jbXBuYW1lKHNlbGYsIHYsIG5hbWUsIG5hbWVsZW4pKQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19hbGlhc19hbmRfc2VxKHYsIGNvZGUsIHdpdGhfbmFtZWRfc2VxKTsKICAgICAgICAgaW5jciA9IGluY3IgPDwgMTsKICAgICAgICAgaWYgKGluY3IgPiBtYXNrKQogICAgICAgICAgICAgaW5jciA9IGluY3IgXiBjb2RlX3BvbHk7CkBAIC0xMTE4LDcgKzEyMDAsNyBAQAogICAgIGlmIChjID09IChQeV9VQ1M0KS0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICghX2dldHVjbmFtZShzZWxmLCBjLCBuYW1lLCBzaXplb2YobmFtZSkpKSB7CisgICAgaWYgKCFfZ2V0dWNuYW1lKHNlbGYsIGMsIG5hbWUsIHNpemVvZihuYW1lKSwgMCkpIHsKICAgICAgICAgaWYgKGRlZm9iaiA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5vIHN1Y2ggbmFtZSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMTQzLDI4ICsxMjI1LDI2IEBACiB1bmljb2RlZGF0YV9sb29rdXAoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewogICAgIFB5X1VDUzQgY29kZTsKLSAgICBQeV9VTklDT0RFIHN0clsyXTsKIAogICAgIGNoYXIqIG5hbWU7CiAgICAgaW50IG5hbWVsZW47CisgICAgdW5zaWduZWQgaW50IGluZGV4OwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyM6bG9va3VwIiwgJm5hbWUsICZuYW1lbGVuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIV9nZXRjb2RlKHNlbGYsIG5hbWUsIG5hbWVsZW4sICZjb2RlKSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsICJ1bmRlZmluZWQgY2hhcmFjdGVyIG5hbWUgJyVzJyIsCi0gICAgICAgICAgICAgICAgICAgICBuYW1lKTsKKyAgICBpZiAoIV9nZXRjb2RlKHNlbGYsIG5hbWUsIG5hbWVsZW4sICZjb2RlLCAxKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsICJ1bmRlZmluZWQgY2hhcmFjdGVyIG5hbWUgJyVzJyIsIG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgaWYgKGNvZGUgPj0gMHgxMDAwMCkgewotICAgICAgICBzdHJbMF0gPSAweGQ4MDAgKyAoKGNvZGUgLSAweDEwMDAwKSA+PiAxMCk7Ci0gICAgICAgIHN0clsxXSA9IDB4ZGMwMCArICgoY29kZSAtIDB4MTAwMDApICYgMHgzZmYpOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHN0ciwgMik7CisgICAgLyogY2hlY2sgaWYgY29kZSBpcyBpbiB0aGUgUFVBIHJhbmdlIHRoYXQgd2UgdXNlIGZvciBuYW1lZCBzZXF1ZW5jZXMKKyAgICAgICBhbmQgY29udmVydCBpdCAqLworICAgIGlmIChJU19OQU1FRF9TRVEoY29kZSkpIHsKKyAgICAgICAgaW5kZXggPSBjb2RlLW5hbWVkX3NlcXVlbmNlc19zdGFydDsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzJCWVRFX0tJTkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVkX3NlcXVlbmNlc1tpbmRleF0uc2VxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lZF9zZXF1ZW5jZXNbaW5kZXhdLnNlcWxlbik7CiAgICAgfQotI2VuZGlmCi0gICAgc3RyWzBdID0gKFB5X1VOSUNPREUpIGNvZGU7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzdHIsIDEpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9yZGluYWwoY29kZSk7CiB9CiAKIC8qIFhYWCBBZGQgZG9jIHN0cmluZ3MuICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmggYi9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmgKaW5kZXggOGUyZTcyNC4uNWQ1ZGNhOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oCisrKyBiL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaApAQCAtMSw2ICsxLDYgQEAKIC8qIHRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IFRvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5IDMuMiAqLwogCi0jZGVmaW5lIFVOSURBVEFfVkVSU0lPTiAiNi4wLjAiCisjZGVmaW5lIFVOSURBVEFfVkVSU0lPTiAiNi4xLjAiCiAvKiBhIGxpc3Qgb2YgdW5pcXVlIGRhdGFiYXNlIHJlY29yZHMgKi8KIGNvbnN0IF9QeVVuaWNvZGVfRGF0YWJhc2VSZWNvcmQgX1B5VW5pY29kZV9EYXRhYmFzZV9SZWNvcmRzW10gPSB7CiAgICAgezAsIDAsIDAsIDAsIDAsIDB9LApAQCAtMjgsMTIgKzI4LDEyIEBACiAgICAgezI2LCAwLCAxOSwgMCwgNCwgMH0sCiAgICAgezI4LCAwLCAxMSwgMCwgNCwgMH0sCiAgICAgezMwLCAwLCAxOSwgMCwgMywgMH0sCi0gICAgezMwLCAwLCAxOSwgMCwgNCwgMH0sCiAgICAgezI5LCAwLCAxOSwgMCwgNCwgMTM2fSwKICAgICB7MzAsIDAsIDE5LCAwLCA1LCAwfSwKLSAgICB7MiwgMCwgMSwgMCwgNCwgMTM2fSwKKyAgICB7MTksIDAsIDEsIDAsIDQsIDEzNn0sCiAgICAgezI0LCAwLCAxOSwgMSwgNSwgMH0sCiAgICAgezE0LCAwLCAxNSwgMCwgNCwgMH0sCisgICAgezMwLCAwLCAxOSwgMCwgNCwgMH0sCiAgICAgezI5LCAwLCAxOSwgMCwgMywgMTM2fSwKICAgICB7MzAsIDAsIDExLCAwLCA0LCAwfSwKICAgICB7MjcsIDAsIDExLCAwLCA0LCAwfSwKQEAgLTQ5LDYgKzQ5LDcgQEAKICAgICB7MiwgMCwgMSwgMCwgNSwgMTB9LAogICAgIHsxLCAwLCAxLCAwLCA1LCAwfSwKICAgICB7MSwgMCwgMSwgMCwgNCwgMTM2fSwKKyAgICB7MiwgMCwgMSwgMCwgNCwgMTM2fSwKICAgICB7MiwgMCwgMSwgMCwgNSwgMH0sCiAgICAgezE5LCAwLCAxLCAwLCA1LCAwfSwKICAgICB7MSwgMCwgMSwgMCwgNSwgMTM2fSwKQEAgLTg3LDYgKzg4LDcgQEAKICAgICB7NiwgMCwgMTQsIDAsIDUsIDB9LAogICAgIHsyNiwgMCwgMSwgMCwgNSwgMH0sCiAgICAgezIxLCAwLCAxOSwgMCwgNSwgMH0sCisgICAgezI4LCAwLCAxMSwgMCwgNSwgMH0sCiAgICAgezQsIDIyMCwgMTQsIDAsIDUsIDB9LAogICAgIHs0LCAyMjIsIDE0LCAwLCA1LCAwfSwKICAgICB7NCwgMjI4LCAxNCwgMCwgNSwgMH0sCkBAIC0xMzQsNiArMTM2LDcgQEAKICAgICB7MTksIDAsIDUsIDAsIDUsIDEzNn0sCiAgICAgezcsIDAsIDksIDAsIDUsIDB9LAogICAgIHszMCwgMCwgNSwgMCwgNSwgMH0sCisgICAgezE0LCAwLCA1LCAwLCA1LCAwfSwKICAgICB7NCwgMzYsIDE0LCAwLCA1LCAwfSwKICAgICB7NCwgMCwgMTQsIDAsIDUsIDB9LAogICAgIHs3LCAwLCA0LCAwLCA1LCAwfSwKQEAgLTE0OCw3ICsxNTEsNiBAQAogICAgIHs0LCA3LCAxNCwgMCwgNSwgMH0sCiAgICAgezUsIDAsIDEsIDAsIDUsIDgwfSwKICAgICB7NSwgMCwgMSwgMCwgNSwgMTB9LAotICAgIHsyOCwgMCwgMTEsIDAsIDUsIDB9LAogICAgIHs5LCAwLCAxLCAwLCA1LCAwfSwKICAgICB7NCwgMCwgMTQsIDAsIDUsIDgwfSwKICAgICB7NCwgMCwgMTQsIDAsIDUsIDEwfSwKQEAgLTE3NSw3ICsxNzcsNiBAQAogICAgIHsxOSwgMCwgMSwgMCwgNSwgODB9LAogICAgIHsxMCwgMCwgMTgsIDAsIDUsIDB9LAogICAgIHs4LCAwLCAxLCAwLCA1LCAwfSwKLSAgICB7MTQsIDAsIDEsIDAsIDUsIDB9LAogICAgIHs1LCA5LCAxLCAwLCA1LCAwfSwKICAgICB7NCwgMSwgMTQsIDAsIDUsIDB9LAogICAgIHs0LCAyMzQsIDE0LCAwLCA1LCAwfSwKQEAgLTE5MCw2ICsxOTEsNyBAQAogICAgIHsxMCwgMCwgMTgsIDAsIDUsIDE3MH0sCiAgICAgezEwLCAwLCAxOCwgMCwgNSwgMTM2fSwKICAgICB7MTQsIDAsIDE1LCAwLCA1LCAwfSwKKyAgICB7MTQsIDAsIDEsIDAsIDUsIDB9LAogICAgIHsxNCwgMCwgNCwgMCwgNSwgMH0sCiAgICAgezIxLCAwLCAxOSwgMCwgNCwgMH0sCiAgICAgezIxLCAwLCAxOSwgMCwgNSwgMTM2fSwKQEAgLTI1Niw3ICsyNTgsNyBAQAogICAgIHs0LCAyMjgsIDE0LCAwLCAyLCAwfSwKICAgICB7NCwgMjMyLCAxNCwgMCwgMiwgMH0sCiAgICAgezQsIDIyMiwgMTQsIDAsIDIsIDB9LAotICAgIHs0LCAyMjQsIDE0LCAwLCAyLCAwfSwKKyAgICB7NSwgMjI0LCAxLCAwLCAyLCAwfSwKICAgICB7OCwgMCwgMSwgMCwgMiwgMTM2fSwKICAgICB7MTksIDAsIDEsIDAsIDIsIDEwfSwKICAgICB7NCwgOCwgMTQsIDAsIDIsIDgwfSwKQEAgLTI2Niw3ICsyNjgsNyBAQAogICAgIHszMCwgMCwgMSwgMCwgMiwgMH0sCiAgICAgezksIDAsIDEsIDAsIDIsIDEzNn0sCiAgICAgezMwLCAwLCAxLCAwLCAyLCAxMzZ9LAotICAgIHszMCwgMCwgMSwgMCwgNCwgMH0sCisgICAgezksIDAsIDEsIDAsIDQsIDB9LAogICAgIHs5LCAwLCAxOSwgMCwgMiwgMTM2fSwKICAgICB7MjksIDAsIDEsIDAsIDUsIDB9LAogICAgIHsxNSwgMCwgMSwgMCwgNSwgMH0sCkBAIC0zMjUsMTEgKzMyNywxMiBAQAogICAgIHsyNywgMCwgMSwgMCwgNSwgMTM2fSwKICAgICB7NywgMCwgOSwgMCwgNSwgMTM2fSwKICAgICB7MzAsIDAsIDEsIDAsIDUsIDEzNn0sCisgICAgezMwLCAwLCAxLCAwLCA0LCAwfSwKIH07CiAKIC8qIFJlaW5kZXhpbmcgb2YgTkZDIGZpcnN0IGNoYXJhY3RlcnMuICovCi0jZGVmaW5lIFRPVEFMX0ZJUlNUIDM3MAotI2RlZmluZSBUT1RBTF9MQVNUIDU1CisjZGVmaW5lIFRPVEFMX0ZJUlNUIDM3MgorI2RlZmluZSBUT1RBTF9MQVNUIDU2CiBzdHJ1Y3QgcmVpbmRleHtpbnQgc3RhcnQ7c2hvcnQgY291bnQsaW5kZXg7fTsKIHN0YXRpYyBzdHJ1Y3QgcmVpbmRleCBuZmNfZmlyc3RbXSA9IHsKICAgeyA2MCwgMiwgMH0sCkBAIC01MzgsNiArNTQxLDcgQEAKICAgeyA2OTc4NSwgMCwgMzY3fSwKICAgeyA2OTc4NywgMCwgMzY4fSwKICAgeyA2OTc5NywgMCwgMzY5fSwKKyAgeyA2OTkzNywgMSwgMzcwfSwKICAgezAsMCwwfQogfTsKIApAQCAtNTc0LDYgKzU3OCw3IEBACiAgIHsgNjk2NSwgMCwgNTF9LAogICB7IDEyNDQxLCAxLCA1Mn0sCiAgIHsgNjk4MTgsIDAsIDU0fSwKKyAgeyA2OTkyNywgMCwgNTV9LAogICB7MCwwLDB9CiB9OwogCkBAIC02NzEsNTE1ICs2NzYsNTE1IEBACiAgICAgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgCiAgICAgMzksIDQwLCA0MSwgNDEsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgCiAgICAgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2MywgNjQsIDY1LCA2NiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgCi0gICAgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgMTcsIDg0LCA4NSwgODYsIDg3LCA4OCwgCi0gICAgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk5LCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDEsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAyLCAKLSAgICAxMDMsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDQsIDQxLCA0MSwgMTA1LCAxMDYsIDEwNywgCi0gICAgMTA4LCAxMDksIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAotICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKLSAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCi0gICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAotICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKLSAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCi0gICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE4LCAxMTksIAotICAgIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAKLSAgICAxMTksIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgCisgICAgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAyLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMywgMTA0LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTA1LCA0MSwgNDEsIDEwNiwgMTA3LCAKKyAgICAxMDgsIDEwOSwgMTEwLCAxMTEsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAxMTcsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOSwgCiAgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjEsIDEyMSwgMTIyLCAxMjMsIDEyNCwgCi0gICAgMTI1LCAxMjYsIDEyNiwgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxNywgMTM3LCAKLSAgICAxMzgsIDEzOSwgMTQwLCAxNDEsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE0MiwgMTcsIDE0MywgMTcsIDE0NCwgMTcsIAotICAgIDE0NSwgMTcsIDE0NiwgMTcsIDE3LCAxNywgMTQ3LCAxNywgMTcsIDE3LCAxNDgsIDE0OSwgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTUwLCAxNywgMTUxLCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTUyLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNDEsIDQxLCA0MSwgNDEsIDE1MywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE1NCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNzgsIAotICAgIDE1NSwgMTU2LCAxNTcsIDE1OCwgMTcsIDE1OSwgMTcsIDE2MCwgMTYxLCAxNjIsIDE2MywgMTY0LCAxNjUsIDE2NiwgMTY3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwgCi0gICAgMTcsIDE3MywgMTc0LCAxNzUsIDE3NiwgMTc3LCAxNzgsIDE3OSwgMTgwLCAxODEsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTgyLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTgzLCAxMDAsIDE4NCwgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDEyMSwgCi0gICAgMTIxLCAxMjEsIDEyMSwgMTg1LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxODYsIDE3LCAxODcsIAotICAgIDE4OCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTg5LCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDE4OSwgCisgICAgMTIwLCAxMjAsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjIsIDEyMiwgMTIzLCAxMjQsIAorICAgIDEyNSwgMTI2LCAxMjcsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCA4NCwgCisgICAgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDE0MywgODQsIDE0NCwgMTQ1LCAxNDYsIAorICAgIDg0LCAxNDcsIDg0LCAxNDgsIDg0LCA4NCwgODQsIDE0OSwgODQsIDg0LCA4NCwgMTUwLCAxNTEsIDE1MiwgMTUzLCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAxNTQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE1NSwgODQsIDE1NiwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE1NywgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDQxLCA0MSwgNDEsIDQxLCAxNTgsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDE1OSwgMTYwLCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDE2MSwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgNzgsIDE2MiwgMTYzLCAxNjQsIDE2NSwgODQsIDE2NiwgODQsIDE2NywgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsIAorICAgIDE3MywgMTc0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDE3NSwgMTc2LCA4NCwgODQsIDE3NywgMTc4LCAxNzksIAorICAgIDE4MCwgMTgxLCA4NCwgMTgyLCAxODMsIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAxODksIDE5MCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxOTEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxOTIsIAorICAgIDEwMSwgMTkzLCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgMTIyLCAxMjIsIDEyMiwgMTIyLCAxOTQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDE5NSwgODQsIDE5NiwgMTk3LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxOTgsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTk4LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbmRleDJbXSA9IHsKQEAgLTExOTEsMTQwMSArMTE5NiwxNDY0IEBACiAgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCiAgICAgMjAsIDIwLCA5LCAxNiwgMTAsIDE2LCAxLCAxLCAxLCAxLCAxLCAxLCAzLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAyMSwgMjIsIDgsIDgsIDIzLCA4LCAyNCwgCi0gICAgMjUsIDI2LCAyNywgMjgsIDI5LCAxNiwgMzAsIDI1LCAzMSwgMzIsIDMzLCAzNCwgMzQsIDI2LCAzNSwgMjUsIDIyLCAyNiwgCi0gICAgMzQsIDI4LCAzNiwgMzcsIDM3LCAzNywgMjIsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM5LCAzOCwgMzgsIDM4LCAzOCwgCisgICAgMjIsIDI1LCAyNiwgMjcsIDI4LCAxNiwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzQsIDI1LCAzNSwgMjIsIDIyLCAyNSwgCisgICAgMzQsIDI3LCAzNiwgMzcsIDM3LCAzNywgMjIsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM5LCAzOCwgMzgsIDM4LCAzOCwgCiAgICAgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOSwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDAsIDM5LCAzOCwgMzgsIDM4LCAzOCwgCiAgICAgMzgsIDM5LCA0MSwgNDIsIDQyLCA0MywgNDMsIDQzLCA0MywgNDEsIDQzLCA0MiwgNDIsIDQyLCA0MywgNDIsIDQyLCA0MywgCiAgICAgNDMsIDQxLCA0MywgNDIsIDQyLCA0MywgNDMsIDQzLCA0MCwgNDEsIDQyLCA0MiwgNDMsIDQyLCA0MywgNDEsIDQzLCAzOCwgCiAgICAgNDIsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQxLCAzOCwgCiAgICAgNDIsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MiwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM5LCA0MSwgMzgsIDQzLCAzOCwgNDIsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDEsIDQ1LCAyOCwgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDQxLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NSwgMjgsIDM5LCA0MSwgMzgsIDQyLCAzOCwgNDMsIDM4LCA0MiwgCi0gICAgMjgsIDM5LCA0MSwgMzgsIDQyLCAzOCwgNDMsIDM4LCA0MywgMzksIDQxLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM5LCA0MSwgMzgsIDQzLCAzOCwgNDIsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDEsIDQ1LCA0NiwgMzgsIDQzLCAzOCwgCisgICAgNDMsIDQxLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NSwgNDYsIDM5LCA0MSwgMzgsIDQyLCAzOCwgNDMsIDM4LCA0MiwgCisgICAgNDYsIDM5LCA0MSwgMzgsIDQyLCAzOCwgNDMsIDM4LCA0MywgMzksIDQxLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOSwgNDEsIDM4LCA0MywgMzgsIDQyLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzUsIDQ2LCA0NCwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NCwgNDYsIDQ0LCA0NCwgNDQsIDQ2LCA0NiwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ2LCA0NCwgNDQsIDQ2LCA0NCwgNDQsIDQ0LCA0NiwgNDYsIDQ2LCA0NCwgNDQsIDQ2LCA0NCwgMzgsIDQzLCA0NCwgCi0gICAgNDYsIDQ0LCA0NiwgNDQsIDQ0LCA0NiwgNDQsIDQ2LCA0NiwgNDQsIDQ2LCA0NCwgMzgsIDQzLCA0NCwgNDQsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDQsIDQ2LCA0NiwgNDcsIDQ0LCA0NiwgNDYsIDQ2LCA0NywgNDcsIDQ3LCA0NywgNDgsIDQ5LCAzNSwgCi0gICAgNDgsIDQ5LCAzNSwgNDgsIDQ5LCAzNSwgMzgsIDQyLCAzOCwgNDIsIDM4LCA0MiwgMzgsIDQyLCAzOCwgNDIsIDM4LCA0MiwgCi0gICAgMzgsIDQyLCAzOCwgNDIsIDQ2LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDYsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCA0MywgNDgsIDQ5LCAzNSwgMzgsIDQzLCA0NCwgNDQsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgMzUsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgMzgsIDQzLCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgMzgsIDQzLCA0NCwgNDQsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDQsIDQ3LCA0NywgNDgsIDQ0LCA0NywgNDcsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDksIDUwLCAzNSwgCisgICAgNDksIDUwLCAzNSwgNDksIDUwLCAzNSwgMzgsIDQyLCAzOCwgNDIsIDM4LCA0MiwgMzgsIDQyLCAzOCwgNDIsIDM4LCA0MiwgCisgICAgMzgsIDQyLCAzOCwgNDIsIDQ3LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCA0MywgNDksIDUwLCAzNSwgMzgsIDQzLCA0NCwgNDQsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NiwgMzgsIDQzLCA0NCwgCi0gICAgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ0LCA0NCwgNDYsIDQ0LCA0NCwgNDYsIDQ2LCA0NCwgNDYsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NiwgNDEsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQxLCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ3LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MSwgNTEsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MywgCi0gICAgNTMsIDU0LCA1MywgNTEsIDU1LCA1MSwgNTUsIDU1LCA1NSwgNTEsIDU1LCA1MSwgNTEsIDU2LCA1MiwgNTMsIDUzLCA1MywgCi0gICAgNTMsIDUzLCA1MywgMjYsIDI2LCAyNiwgMjYsIDU3LCAyNiwgNTMsIDU0LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUzLCA1MywgCi0gICAgNTMsIDUzLCA1MywgNTMsIDUzLCA1MSwgNTMsIDUyLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgCi0gICAgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDU4LCA1OCwgNTgsIDU4LCA1OCwgNTksIDU4LCA1OCwgNTgsIDU4LCA1OCwgCi0gICAgNTgsIDU4LCA1OSwgNTksIDU4LCA1OSwgNTgsIDU5LCA1OCwgNTgsIDYwLCA2MSwgNjEsIDYxLCA2MSwgNjAsIDYyLCA2MSwgCi0gICAgNjEsIDYxLCA2MSwgNjEsIDYzLCA2MywgNjQsIDY0LCA2NCwgNjQsIDY1LCA2NSwgNjEsIDYxLCA2MSwgNjEsIDY0LCA2NCwgCi0gICAgNjEsIDY0LCA2NCwgNjEsIDYxLCA2NiwgNjYsIDY2LCA2NiwgNjcsIDYxLCA2MSwgNjEsIDYxLCA1OSwgNTksIDU5LCA2OCwgCi0gICAgNjgsIDU4LCA2OCwgNjgsIDY5LCA1OSwgNjEsIDYxLCA2MSwgNTksIDU5LCA1OSwgNjEsIDYxLCA3MCwgNTksIDU5LCA1OSwgCi0gICAgNjEsIDYxLCA2MSwgNjEsIDU5LCA2MCwgNjEsIDYxLCA1OSwgNzEsIDcyLCA3MiwgNzEsIDcyLCA3MiwgNzEsIDU5LCA1OSwgCi0gICAgNTksIDU5LCA1OSwgNTksIDU5LCA1OSwgNTksIDU5LCA1OSwgNTksIDU5LCA0NCwgNDYsIDQ0LCA0NiwgNzMsIDUzLCA0NCwgCi0gICAgNDYsIDAsIDAsIDUwLCA0NiwgNDYsIDQ2LCA3NCwgMCwgMCwgMCwgMCwgMCwgNTcsIDc1LCAzOCwgNzQsIDM4LCAzOCwgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIDM4LCA0MywgNDQsIAorICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDQsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQxLCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0OCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTIsIDUyLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTQsIAorICAgIDU0LCA1NSwgNTQsIDUyLCA1NiwgNTIsIDU2LCA1NiwgNTYsIDUyLCA1NiwgNTIsIDUyLCA1NywgNTMsIDU0LCA1NCwgNTQsIAorICAgIDU0LCA1NCwgNTQsIDI1LCAyNSwgMjUsIDI1LCA1OCwgMjUsIDU0LCA1NSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1NCwgNTQsIAorICAgIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTIsIDU0LCA1MywgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIAorICAgIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1OSwgNTksIDU5LCA1OSwgNTksIDYwLCA1OSwgNTksIDU5LCA1OSwgNTksIAorICAgIDU5LCA1OSwgNjAsIDYwLCA1OSwgNjAsIDU5LCA2MCwgNTksIDU5LCA2MSwgNjIsIDYyLCA2MiwgNjIsIDYxLCA2MywgNjIsIAorICAgIDYyLCA2MiwgNjIsIDYyLCA2NCwgNjQsIDY1LCA2NSwgNjUsIDY1LCA2NiwgNjYsIDYyLCA2MiwgNjIsIDYyLCA2NSwgNjUsIAorICAgIDYyLCA2NSwgNjUsIDYyLCA2MiwgNjcsIDY3LCA2NywgNjcsIDY4LCA2MiwgNjIsIDYyLCA2MiwgNjAsIDYwLCA2MCwgNjksIAorICAgIDY5LCA1OSwgNjksIDY5LCA3MCwgNjAsIDYyLCA2MiwgNjIsIDYwLCA2MCwgNjAsIDYyLCA2MiwgNzEsIDYwLCA2MCwgNjAsIAorICAgIDYyLCA2MiwgNjIsIDYyLCA2MCwgNjEsIDYyLCA2MiwgNjAsIDcyLCA3MywgNzMsIDcyLCA3MywgNzMsIDcyLCA2MCwgNjAsIAorICAgIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNDQsIDQ3LCA0NCwgNDcsIDc0LCA1NCwgNDQsIAorICAgIDQ3LCAwLCAwLCA1MSwgNDcsIDQ3LCA0NywgNzUsIDAsIDAsIDAsIDAsIDAsIDU4LCA3NiwgMzgsIDc1LCAzOCwgMzgsIDM4LCAKICAgICAwLCAzOCwgMCwgMzgsIDM4LCA0MywgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIAogICAgIDM5LCAzOSwgMzksIDM5LCAwLCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgCiAgICAgNDMsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgCi0gICAgNDYsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MywgNDMsIDQzLCA0MywgNDMsIDQ0LCAzNSwgMzUsIDQ4LCA3NiwgCi0gICAgNzYsIDM1LCAzNSwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDM1LCAzNSwgMzUsIDQ2LCA0OCwgMzUsIDc3LCA0NCwgCi0gICAgNDYsIDQ4LCA0NCwgNDYsIDQ2LCA0NCwgNDQsIDQ0LCAzOCwgNzgsIDQ0LCAzOCwgNDQsIDQ0LCA0NCwgMzgsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCAzOCwgMzgsIDM4LCA0NCwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgNzgsIDM5LCAzOSwgCisgICAgNDcsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MywgNDMsIDQzLCA0MywgNDMsIDQ0LCAzNSwgMzUsIDQ5LCA3NywgCisgICAgNzcsIDM1LCAzNSwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDM1LCAzNSwgMzUsIDQ3LCA0OSwgMzUsIDc4LCA0NCwgCisgICAgNDcsIDQ5LCA0NCwgNDcsIDQ3LCA0NCwgNDQsIDQ0LCAzOCwgNzksIDQ0LCAzOCwgNDQsIDQ0LCA0NCwgMzgsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCAzOCwgMzgsIDM4LCA0NCwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgNzksIDM5LCAzOSwgCiAgICAgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgCiAgICAgMzksIDM5LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MiwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgCiAgICAgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQzLCA0MiwgCi0gICAgNDYsIDQzLCA0NiwgNDYsIDQ2LCA0MywgNDYsIDQ2LCA0NiwgNDYsIDQzLCA0MywgNDMsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgMzgsIDQzLCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNzksIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODEsIDgxLCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgMzgsIDQzLCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NiwgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NiwgMzgsIDQzLCA0NCwgNDYsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NiwgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ2LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCA0NCwgNDYsIDM4LCA0MywgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDAsIDAsIDAsIAorICAgIDQ3LCA0MywgNDcsIDQ3LCA0NywgNDMsIDQ3LCA0NywgNDcsIDQ3LCA0MywgNDMsIDQzLCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDM4LCA0MywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDgwLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDgyLCA4MiwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDM4LCA0MywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIAorICAgIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIDM4LCA0MywgNDQsIDQ3LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgNDQsIDQ3LCAzOCwgNDMsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDUyLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCAwLCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDM1LCAKLSAgICAwLCA4MiwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDg0LCA4MCwgODAsIDgwLCA4MCwgODQsIDgwLCA4MCwgODAsIDg1LCA4NCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODAsIDgwLCA4NCwgODAsIDgwLCA4NSwgCi0gICAgODYsIDgwLCA4NywgODgsIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAKLSAgICAxMDIsIDEwMywgMTA0LCAxMDIsIDgwLCA4NCwgMTAyLCA5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTAyLCAxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNiwgMTA2LCAxMDYsIAotICAgIDEwNiwgMCwgMCwgNzcsIDc3LCAxMDcsIDEwOCwgMTA4LCAxMDksIDExMCwgMTExLCAyNywgMjcsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgMTEyLCAxMTMsIDExNCwgMTExLCAwLCAwLCAxMTEsIDExMSwgMTE1LCAxMTUsIDExNiwgMTE2LCAKLSAgICAxMTYsIDExNiwgMTE2LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNywgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTgsIDExOSwgMTIwLCAKLSAgICAxMTIsIDExMywgMTE0LCAxMjEsIDEyMiwgMTIzLCAxMjMsIDEyNCwgODQsIDgwLCA4MCwgODAsIDgwLCA4MCwgODQsIDgwLCAKLSAgICA4MCwgODQsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTA4LCAxMjYsIDEyNiwgCi0gICAgMTExLCAxMTUsIDExNSwgMTI3LCAxMTUsIDExNSwgMTE1LCAxMTUsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNiwgCi0gICAgMTE1LCAxMTYsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE2LCAxMTEsIDExNSwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDEwNiwgMjcsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4NCwgODAsIDExNywgMTE3LCA4MCwgODAsIDI3LCA4NCwgODAsIDgwLCA4NCwgMTE1LCAxMTUsIAotICAgIDEyOSwgMTI5LCAxMjksIDEyOSwgMTI5LCAxMjksIDEyOSwgMTI5LCAxMjksIDEyOSwgMTE1LCAxMTUsIDExNSwgMTMwLCAKLSAgICAxMzAsIDExNSwgMTExLCAxMTEsIDExMSwgMTExLCAxMTEsIDExMSwgMTExLCAxMTEsIDExMSwgMTExLCAxMTEsIDExMSwgCi0gICAgMTExLCAxMTEsIDAsIDEwNiwgMTE1LCAxMzEsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDgwLCA4NCwgODAsIDgwLCA4NCwgODAsIDgwLCA4NCwgODQsIAotICAgIDg0LCA4MCwgODQsIDg0LCA4MCwgODQsIDgwLCA4MCwgODAsIDg0LCA4MCwgODQsIDgwLCA4NCwgODAsIDg0LCA4MCwgODAsIAotICAgIDAsIDAsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgCi0gICAgMTMyLCAxMzIsIDEzMiwgMTE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzMsIDEzMywgCi0gICAgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4NCwgODAsIDEzNCwgMTM0LCAyNywgMTM1LCAxMzUsIDEzNSwgMTM0LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDgwLCA4MCwgODAsIDgwLCAxMzQsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDEzNCwgODAsIDgwLCA4MCwgMTM0LCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDAsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgODQsIDg0LCA4NCwgCi0gICAgMCwgMCwgMTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzIsIDEzMiwgCi0gICAgMTMyLCAxMzYsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCA1MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgMTM3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM3LCA0NywgNDcsIDEzNywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCAxMzIsIDEzNiwgMTM4LCA0NywgMTM2LCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIAotICAgIDEzMiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM5LCAxMzYsIDEzNiwgNDcsIDgwLCA4NCwgODAsIDgwLCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxNDAsIDE0MCwgMTQwLCAxNDAsIDE0MCwgMTQwLCAxNDAsIDE0MCwgNDcsIDQ3LCAxMzIsIDEzMiwgCi0gICAgODIsIDgyLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDgyLCA1MiwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDEzMiwgMTM2LCAxMzYsIDAsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMTQyLCA0NywgCi0gICAgMTQzLCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAwLCAwLCAxMzYsIDEzNiwgMCwgMCwgMTQ0LCAxNDQsIDEzOSwgCi0gICAgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MywgMCwgMCwgMCwgMCwgMTQwLCAxNDAsIDAsIDE0MCwgNDcsIDQ3LCAKLSAgICAxMzIsIDEzMiwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCA0NywgNDcsIAotICAgIDE0NSwgMTQ1LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCA3OSwgMTQ1LCAwLCAwLCAwLCAwLCAwLCAxMzIsIDEzMiwgCi0gICAgMTM2LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDE0MCwgMCwgNDcsIDE0MCwgMCwgNDcsIDQ3LCAwLCAwLCAKLSAgICAxNDIsIDAsIDEzNiwgMTM2LCAxMzYsIDEzMiwgMTMyLCAwLCAwLCAwLCAwLCAxMzIsIDEzMiwgMCwgMCwgMTMyLCAxMzIsIAotICAgIDEzOSwgMCwgMCwgMCwgMTMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDAsIDE0MCwgMTQwLCA0NywgMCwgMTQwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDEzMiwgCi0gICAgMTMyLCA0NywgNDcsIDQ3LCAxMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMiwgMTMyLCAxMzYsIDAsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDE0MiwgCi0gICAgNDcsIDEzNiwgMTM2LCAxMzYsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAwLCAxMzIsIDEzMiwgMTM2LCAwLCAxMzYsIAotICAgIDEzNiwgMTM5LCAwLCAwLCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCAKLSAgICAxMzIsIDEzMiwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAxNDUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMiwgMTM2LCAxMzYsIDAsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAxNDIsIDQ3LCAxNDMsIAotICAgIDEzMiwgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDAsIDAsIDEzNiwgMTQ0LCAwLCAwLCAxNDQsIDE0NCwgMTM5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDcsIDE0MywgMCwgMCwgMCwgMCwgMTQwLCAxNDAsIDAsIDQ3LCA0NywgNDcsIDEzMiwgCi0gICAgMTMyLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDc5LCA0NywgMTQ2LCAKLSAgICAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyLCA0NywgMCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCAxMzcsIDQ3LCAwLCAwLCAwLCA0NywgCi0gICAgNDcsIDAsIDQ3LCAwLCA0NywgNDcsIDAsIDAsIDAsIDQ3LCA0NywgMCwgMCwgMCwgNDcsIDQ3LCA0NywgMCwgMCwgMCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMTQzLCAxMzYsIDEzMiwgCi0gICAgMTM2LCAxMzYsIDAsIDAsIDAsIDEzNiwgMTM2LCAxMzYsIDAsIDE0NCwgMTQ0LCAxNDQsIDEzOSwgMCwgMCwgNDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDYsIDE0NiwgMTQ2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAxNDUsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAxMzYsIDEzNiwgMTM2LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDAsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgNDcsIDEzMiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAKLSAgICAxMzYsIDEzNiwgMCwgMTMyLCAxMzIsIDE0OCwgMCwgMTMyLCAxMzIsIDEzMiwgMTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNDksIDE1MCwgMCwgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDEzMiwgMTMyLCAwLCAwLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MSwgMTUxLCAKLSAgICAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgNzksIDAsIDAsIDEzNiwgMTM2LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMTQyLCA0NywgMTM2LCAxNTIsIDE0NCwgMTM2LCAKLSAgICAxNDMsIDEzNiwgMTM2LCAwLCAxNTIsIDE0NCwgMTQ0LCAwLCAxNDQsIDE0NCwgMTMyLCAxMzksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE0MywgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgMCwgNDcsIDQ3LCAxMzIsIDEzMiwgMCwgMCwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNiwgMTM2LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDAsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDE0MywgMTM2LCAxMzYsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDEzMiwgMCwgMTM2LCAxMzYsIDEzNiwgMCwgMTQ0LCAxNDQsIDE0NCwgMTM5LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDEzMiwgMTMyLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDAsIDAsIDAsIAotICAgIDc5LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAxMzYsIDEzNiwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAxNTMsIDAsIDAsIDAsIDAsIDE0MywgMTM2LCAxMzYsIDEzMiwgMTMyLCAxMzIsIAotICAgIDAsIDEzMiwgMCwgMTM2LCAxMzYsIDE0NCwgMTM2LCAxNDQsIDE0NCwgMTQ0LCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNiwgMTM2LCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTMyLCA0NywgMTU0LCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxMzIsIDE1NSwgMTU1LCAxMzksIDAsIDAsIDAsIDAsIDE0NSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNTIsIDEzMiwgMTU2LCAxNTYsIDE1NiwgMTU2LCAxMzIsIDEzMiwgMTMyLCA4MiwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCA4MiwgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMzUsIAorICAgIDAsIDgzLCA4NCwgMCwgMCwgMCwgMCwgODUsIDAsIDg2LCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODEsIDg3LCA4NiwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCA4NywgCisgICAgODgsIDgxLCA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLCAKKyAgICAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNCwgODEsIDg2LCAxMDQsIDk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMDcsIDEwNywgMTA3LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4LCAxMDgsIAorICAgIDEwOCwgMTA4LCAxMDgsIDAsIDc4LCA3OCwgMTA5LCAxMTAsIDExMCwgMTExLCAxMTIsIDExMywgMjYsIDI2LCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDExNCwgMTE1LCAxMTYsIDExMywgMCwgMCwgMTEzLCAxMTMsIDExNywgMTE3LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTksIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTIwLCAKKyAgICAxMjEsIDEyMiwgMTE0LCAxMTUsIDExNiwgMTIzLCAxMjQsIDEyNSwgMTI1LCAxMjYsIDg2LCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDg2LCA4MSwgODEsIDg2LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDExMCwgCisgICAgMTI4LCAxMjgsIDExMywgMTE3LCAxMTcsIDEyOSwgMTE3LCAxMTcsIDExNywgMTE3LCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTgsIDExNywgMTE4LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExOCwgMTEzLCAxMTcsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICAxMDgsIDI2LCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCAxMTksIDExOSwgODEsIDgxLCAyNiwgODYsIDgxLCA4MSwgODYsIAorICAgIDExNywgMTE3LCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDExNywgMTE3LCAKKyAgICAxMTcsIDEzMiwgMTMyLCAxMTcsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAxMzMsIDExNywgMTM0LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCA4MSwgODYsIDgxLCA4MSwgODYsIDgxLCA4MSwgCisgICAgODYsIDg2LCA4NiwgODEsIDg2LCA4NiwgODEsIDg2LCA4MSwgODEsIDgxLCA4NiwgODEsIDg2LCA4MSwgODYsIDgxLCA4NiwgCisgICAgODEsIDgxLCAwLCAwLCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDExNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM2LCAKKyAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCAxMzcsIDEzNywgMjYsIDEzOCwgMTM4LCAxMzgsIDEzNywgMCwgMCwgCisgICAgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCA4MSwgODEsIDgxLCA4MSwgMTM3LCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAxMzcsIDgxLCA4MSwgODEsIDEzNywgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAKKyAgICAwLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgCisgICAgMTA0LCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDg2LCA4NiwgODYsIAorICAgIDAsIDAsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDcsIDQ3LCAwLCA0NywgMCwgMCwgNDcsIDQ3LCAwLCA0NywgMCwgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgMCwgNDcsIDAsIDQ3LCAKLSAgICAwLCAwLCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCAxMzIsIDQ3LCAxNTQsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTU3LCAKLSAgICAxNTcsIDAsIDEzMiwgMTMyLCA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA1MiwgMCwgMTU4LCAxNTgsIDE1OCwgCi0gICAgMTU4LCAxMzIsIDEzMiwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAKLSAgICAwLCAxNTQsIDE1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDc5LCA3OSwgNzksIDgyLCA4MiwgODIsIDgyLCAKLSAgICA4MiwgODIsIDgyLCA4MiwgMTU5LCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCA3OSwgNzksIDc5LCA3OSwgNzksIDg0LCA4NCwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDc5LCA4NCwgNzksIDg0LCA3OSwgCi0gICAgMTYwLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDEzNiwgMTM2LCA0NywgNDcsIDQ3LCAxNDAsIDQ3LCA0NywgNDcsIDQ3LCAwLCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMTQwLCA0NywgNDcsIDQ3LCA0NywgMTQwLCA0NywgNDcsIDQ3LCA0NywgMTQwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgMTQwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNDAsIDQ3LCA0NywgCi0gICAgNDcsIDAsIDAsIDAsIDAsIDE2MywgMTY0LCAxNjUsIDE2NiwgMTY1LCAxNjUsIDE2NywgMTY1LCAxNjcsIDE2NCwgMTY0LCAKLSAgICAxNjQsIDE2NCwgMTMyLCAxMzYsIDE2NCwgMTY1LCA4MCwgODAsIDEzOSwgODIsIDgwLCA4MCwgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxNjUsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMCwgMTMyLCAxMzIsIAotICAgIDEzMiwgMTMyLCAxNjUsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTY1LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDE2NSwgMTMyLCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxNjUsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgCi0gICAgMTMyLCAxMzIsIDE2NSwgMTMyLCAxMzIsIDEzMiwgMCwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA4NCwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgMCwgNzksIDc5LCA4MiwgODIsIDgyLCA4MiwgODIsIDc5LCA3OSwgNzksIDc5LCA4MiwgCi0gICAgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM3LCA0NywgNDcsIDQ3LCA0NywgMTM2LCAKLSAgICAxMzYsIDEzMiwgMTQ3LCAxMzIsIDEzMiwgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTQyLCAxMzYsIDEzOSwgCi0gICAgMTM5LCAxMzYsIDEzNiwgMTMyLCAxMzIsIDQ3LCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNiwgMTM2LCAxMzIsIDEzMiwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDEzMiwgMTMyLCAxMzIsIDQ3LCAxMzYsIDEzNiwgMTM2LCA0NywgNDcsIDEzNiwgMTM2LCAxMzYsIAotICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgNDcsIDQ3LCA0NywgMTMyLCAxMzIsIDEzMiwgMTMyLCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTMyLCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzYsIAotICAgIDEzNiwgMTM2LCAxMzYsIDg0LCA0NywgMTM2LCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDEzNiwgMTM2LCAxMzYsIDEzMiwgNzksIDc5LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE3LCAwLCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIAorICAgIDgxLCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgMTIwLCAxMjEsIDEyMiwgODEsIDgxLCA4MSwgCisgICAgODYsIDgxLCA4MSwgODYsIDg2LCA4MSwgODEsIDgxLCA4MSwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgCisgICAgMTQxLCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTQyLCAxMzksIDEzOSwgNDgsIDgxLCA4NiwgODEsIDgxLCAxMzUsIDEzNSwgMTM1LCAxNDMsIDE0MywgCisgICAgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgODMsIDgzLCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAwLCAwLCAxMzksIDEzOSwgMCwgMCwgMTQ3LCAxNDcsIDE0MiwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0NiwgMCwgMCwgMCwgMCwgMTQzLCAxNDMsIDAsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDg1LCA4NSwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgODAsIDg1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDE0MywgMCwgNDgsIDE0MywgMCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDAsIDEzOSwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM1LCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMCwgMCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMTM1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxNDMsIDE0MywgMTQzLCA0OCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCAxMzUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMTM5LCAwLCAxMzksIDEzOSwgMTQyLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDEzOSwgCisgICAgMTQ3LCAwLCAwLCAxNDcsIDE0NywgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDksIDE0NiwgMCwgMCwgMCwgMCwgCisgICAgMTQzLCAxNDMsIDAsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgwLCA0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTM1LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgMCwgNDgsIDQ4LCAxNDAsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMTQ2LCAxMzksIDEzNSwgMTM5LCAxMzksIDAsIDAsIDAsIDEzOSwgMTM5LCAxMzksIDAsIDE0NywgCisgICAgMTQ3LCAxNDcsIDE0MiwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4NSwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCAKKyAgICAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKKyAgICAwLCAwLCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAxMzUsIDEzNSwgMTUwLCAwLCAxMzUsIAorICAgIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MSwgMTUyLCAwLCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCA4MCwgMCwgMCwgCisgICAgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDE1NCwgMTQ3LCAxMzksIDE0NiwgMTM5LCAxMzksIDAsIDE1NCwgMTQ3LCAxNDcsIAorICAgIDAsIDE0NywgMTQ3LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5LCAKKyAgICAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCA0OCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzksIDEzOSwgMTM5LCAwLCAKKyAgICAxNDcsIDE0NywgMTQ3LCAxNDIsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgODAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDAsIDAsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAorICAgIDE1NSwgMCwgMCwgMCwgMCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAwLCAxMzksIDEzOSwgMTQ3LCAKKyAgICAxMzksIDE0NywgMTQ3LCAxNDcsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTM5LCAxMzksIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCAxNTYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTU3LCAKKyAgICAxNTcsIDE0MiwgMCwgMCwgMCwgMCwgODUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCAxMzUsIDE1OCwgMTU4LCAxNTgsIAorICAgIDE1OCwgMTM1LCAxMzUsIDEzNSwgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIAorICAgIDAsIDQ4LCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzNSwgNDgsIDE1NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNTksIDE1OSwgMCwgMTM1LCAxMzUsIDQ4LCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDUzLCAwLCAxNjAsIDE2MCwgMTYwLCAxNjAsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDE1NiwgMTU2LCA0OCwgNDgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ4LCA4MCwgODAsIDgwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDE2MSwgODMsIAorICAgIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgzLCA4MCwgODAsIDgwLCA4NiwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgODYsIDgwLCA4NiwgODAsIDE2MiwgMTYzLCAxNjQsIDE2MywgCisgICAgMTY0LCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAxNjUsIAorICAgIDE2NiwgMTY3LCAxNjgsIDE2NywgMTY3LCAxNjksIDE2NywgMTY5LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDEzNSwgMTM5LCAKKyAgICAxNjYsIDE2NywgODEsIDgxLCAxNDIsIDgzLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgCisgICAgMTM1LCAxMzUsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDAsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODAsIDgwLCA4MCwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDE0OSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0NSwgMTM5LCAxNDIsIDE0MiwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM1LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODMsIDgzLCAKKyAgICA4MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzUsIDEzNSwgMTM1LCA0OCwgMTM5LCAxMzksIDEzOSwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICA4NiwgNDgsIDEzOSwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzUsIDgwLCA4MCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDgyLCA1MCwgMCwgMCwgMCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgNDcsIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAKLSAgICAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjksIDE2OSwgMTY5LCAxNjksIAotICAgIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAKLSAgICAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDAsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgMCwgCi0gICAgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAwLCAwLCA4MCwgODAsIDgwLCA3OSwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCAxNDYsIDE0NiwgMTQ2LCAxNDYsIAotICAgIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAKLSAgICAxNDYsIDE0NiwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgODMsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA4MiwgODIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTcwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE2MSwgCi0gICAgMTYyLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA4MiwgODIsIDgyLCAxNzEsIDE3MSwgMTcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDEzMiwgMTMyLCAxMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDEzMiwgMTMyLCAxMzksIDgyLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTMyLCAxMzIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAwLCA0NywgNDcsIDQ3LCAwLCAxMzIsIDEzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE3MiwgMTcyLCAxMzYsIAotICAgIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKLSAgICAxMzYsIDEzMiwgMTM2LCAxMzYsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzOSwgCi0gICAgMTMyLCA4MiwgODIsIDgyLCA1MiwgODIsIDgyLCA4MiwgMTQ1LCA0NywgODAsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIAotICAgIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICA4MywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzIsIDEzMiwgMTMyLCAxNzAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgODYsIDQ3LCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAxMzIsIDEzMiwgMTMyLCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzMiwgCi0gICAgMTMyLCAxMzYsIDEzNiwgMTM2LCAwLCAwLCAwLCAwLCAxMzYsIDEzNiwgMTMyLCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCi0gICAgMTM2LCA4NSwgODAsIDg0LCAwLCAwLCAwLCAwLCAyNywgMCwgMCwgMCwgMTM1LCAxMzUsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCi0gICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMTM2LCAxMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQ2LCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA4MCwgODQsIDEzNiwgMTM2LCAxMzYsIDAsIDAsIDgyLCA4MiwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzYsIAotICAgIDEzMiwgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDAsIDEzOSwgMTM2LCAxMzIsIDEzNiwgMTM2LCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCi0gICAgMTMyLCAxMzIsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgODQsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgCi0gICAgNTIsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDQ0LCAwLCAwLCAwLCAwLCAwLCA0NCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDgzLCA1MSwgNDgsIDQ4LCA0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgNDgsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCisgICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCisgICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAorICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKKyAgICA4MSwgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgODQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE2MywgMTY0LCAwLCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCAxNzMsIDE3MywgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAKKyAgICAxNDIsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCAwLCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzksIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0MiwgMTM1LCA4MywgODMsIAorICAgIDgzLCA1MywgODMsIDgzLCA4MywgODUsIDQ4LCA4MSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgCisgICAgMTUzLCAxNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzNSwgMTM1LCAxMzUsIDE3MiwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4OCwgNDgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAKKyAgICAxMzksIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDg3LCA4MSwgODYsIAorICAgIDAsIDAsIDAsIDAsIDI2LCAwLCAwLCAwLCAxMzgsIDEzOCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIAorICAgIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4NiwgMTM5LCAxMzksIDEzOSwgMCwgMCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM1LCAxMzksIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTQyLCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCA4NiwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA1MywgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyLCAxMzIsIDEzMiwgCi0gICAgMTMyLCAxMzYsIDQ3LCAxMzcsIDQ3LCAxMzcsIDQ3LCAxMzcsIDQ3LCAxMzcsIDQ3LCAxMzcsIDQ3LCA0NywgNDcsIDEzNywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTQyLCAxNDMsIAotICAgIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxNDQsIDEzMiwgMTQ0LCAxMzYsIDEzNiwgMTQ0LCAxNDQsIDEzMiwgMTQ0LCAKLSAgICAxNzMsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgODAsIDg0LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgMCwgMCwgMCwgMTMyLCAxMzIsIDEzNiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzIsIDEzMiwgMTczLCAwLCAKLSAgICAwLCAwLCA0NywgNDcsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCAxNDAsIDQ4LCAKKyAgICAxNDAsIDQ4LCAxNDAsIDQ4LCAxNDAsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ1LCAxNDYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxNDcsIDEzNSwgMTQ3LCAxMzksIDEzOSwgMTQ3LCAxNDcsIDEzNSwgMTQ3LCAxNzQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4MywgCisgICAgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODEsIDg2LCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgMCwgMTM1LCAKKyAgICAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTc0LCAxNDIsIDEzOSwgMTM5LCA0OCwgNDgsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDUsIAorICAgIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxNzQsIDE3NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTQ1LCAwLCAwLCAwLCA4MywgCisgICAgODMsIDgzLCA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA4MywgODMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODMsIDE3NSwgODYsIDg2LCA4NiwgODYsIDg2LCAKKyAgICA4MSwgODEsIDg2LCA4NiwgODYsIDg2LCA4MSwgMTM5LCAxNzUsIDE3NSwgMTc1LCAxNzUsIDE3NSwgMTc1LCAxNzUsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA4NiwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCA4MSwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDE0MiwgMTM2LCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzNiwgMTMyLCAxMzYsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDE3MywgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MiwgODIsIDgyLCA4MiwgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM2LCAxMzYsIDEzNiwgCi0gICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzYsIAotICAgIDEzNiwgMTMyLCAxNDIsIDAsIDAsIDAsIDgyLCA4MiwgODIsIDgyLCA4MiwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDgyLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODIsIDE3NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4MCwgODAsIDg0LCA4NCwgODQsIDg0LCA4MCwgMTM2LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDQ3LCA0NywgNDcsIDQ3LCA4NCwgNDcsIDQ3LCA0NywgNDcsIDEzNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA1MCwgNTAsIDUwLCA1MiwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNTAsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgODAsIAotICAgIDgwLCA4NCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDg0LCA4MCwgODAsIDE3NSwgMTc2LCA4NCwgMTc3LCA4MCwgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA4MSwgODEsIDg2LCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCA4MSwgMTc2LCAxNzcsIDg2LCAxNzgsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzksIDg2LCAKKyAgICA4MSwgODYsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCAzNSwgMTgwLCA0NywgNDcsIDQ0LCA0NywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgCisgICAgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDAsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDAsIAorICAgIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgCisgICAgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgCisgICAgNDMsIDQzLCA0MywgMCwgMCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgCisgICAgNDMsIDQzLCAwLCAzOCwgMCwgMzgsIDAsIDM4LCAwLCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgCisgICAgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCAxODEsIDQzLCAxODEsIDQzLCAxODEsIDQzLCAxODEsIDQzLCAxODEsIAorICAgIDQzLCAxODEsIDQzLCAxODEsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgyLCAxODIsIDE4MiwgCisgICAgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgyLCAxODIsIDE4MiwgCisgICAgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgyLCAxODIsIDE4MiwgCisgICAgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODMsIAorICAgIDE4MiwgNTgsIDE4MSwgNTgsIDU4LCA3NiwgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMTgzLCAzOCwgMTgzLCAxODIsIAorICAgIDc2LCA3NiwgNzYsIDQzLCA0MywgNDMsIDE4MSwgMCwgMCwgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODMsIDAsIDc2LCA3NiwgCisgICAgNzYsIDQzLCA0MywgNDMsIDE4MSwgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4MywgMzgsIDc2LCAxODQsIDE4NCwgCisgICAgMCwgMCwgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMTgzLCAzOCwgMTgzLCAxODIsIDE4NCwgNTgsIDAsIDE4NSwgMTg1LCAKKyAgICAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODcsIDE4NywgMTg3LCAxODgsIDE4OSwgCisgICAgMTkwLCAxOTEsIDg0LCAxOTAsIDE5MCwgMTkwLCAyMiwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5MywgMTk0LCAxOTUsIAorICAgIDE5NiwgMjIsIDIyLCAyMiwgMTM4LCAxOTcsIDE5NywgMTk3LCAyMiwgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgCisgICAgMjA0LCAyMSwgMjA1LCAxMTAsIDIwNSwgMjA2LCAyMDcsIDIyLCAxOTIsIDE5MiwgMTM4LCAyOCwgMzYsIDIyLCAxOTIsIAorICAgIDEzOCwgMTk3LCAyMDgsIDIwOCwgMTM4LCAxMzgsIDEzOCwgMjA5LCAxNjMsIDE2NCwgMTkyLCAxOTIsIDE5MiwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDc4LCAxMzgsIDIwOCwgMTM4LCAxMzgsIDE5MiwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxODYsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAyMTAsIDUxLCAwLCAwLCAzNCwgMjEwLCAyMTAsIDIxMCwgMjEwLCAyMTAsIAorICAgIDIxMSwgMjExLCAyMTIsIDIxMywgMjE0LCAyMTUsIDIxMCwgMzQsIDM0LCAzNCwgMzQsIDIxMCwgMjEwLCAyMTAsIDIxMCwgCisgICAgMjEwLCAyMTEsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMCwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDAsIDAsIDAsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgMjE2LCAyMTcsIDg1LCA4NSwgCisgICAgMjMsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDE3NSwgMTc1LCA4MSwgODEsIAorICAgIDgxLCA4MSwgMTc1LCAxNzUsIDE3NSwgODEsIDgxLCA4MiwgODIsIDgyLCA4MiwgODEsIDgyLCA4MiwgODIsIDE3NSwgMTc1LCAKKyAgICA4MSwgODYsIDgxLCAxNzUsIDE3NSwgODYsIDg2LCA4NiwgODYsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyMTgsIDIxOCwgNDksIDIxOSwgMjYsIDIxOSwgMjE4LCA0OSwgMjYsIDIxOSwgMzUsIDQ5LCA0OSwgCisgICAgNDksIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDYsIDI2LCA0OSwgMjE5LCAyNiwgNzgsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMjYsIAorICAgIDI2LCAyMTgsIDIxOSwgMjE5LCAyNiwgNDksIDI2LCAyMjAsIDI2LCA0OSwgMjYsIDE4MywgMjIwLCA0OSwgNDksIDIyMSwgCisgICAgMzUsIDQ5LCA0OSwgNDQsIDQ5LCAzNSwgMTU2LCAxNTYsIDE1NiwgMTU2LCAzNSwgMjYsIDIxOCwgMzUsIDM1LCA0OSwgNDksIAorICAgIDIyMiwgNzgsIDc4LCA3OCwgNzgsIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMjYsIDc4LCAyNiwgMjYsIDQ3LCA4MCwgMjIzLCAKKyAgICAyMjMsIDIyMywgMzcsIDM3LCAyMjMsIDIyMywgMjIzLCAyMjMsIDIyMywgMjIzLCAzNywgMzcsIDM3LCAzNywgMjIzLCAyMjQsIAorICAgIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjUsIDIyNSwgMjI1LCAKKyAgICAyMjUsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI1LCAyMjUsIDIyNSwgCisgICAgMjI1LCAyMjUsIDIyNSwgMTczLCAxNzMsIDE3MywgNDQsIDQ3LCAxNzMsIDE3MywgMTczLCAxNzMsIDM3LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjI2LCAyMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICA3OCwgMjYsIDI2LCA3OCwgMjYsIDI2LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjI3LCAyMjYsIDIyNiwgMjYsIDI2LCA0MCwgMjYsIDQwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNDAsIDIyOCwgMjI5LCAyMjksIDIzMCwgNzgsIDc4LCA0MCwgMjI5LCAyMzAsIAorICAgIDIyOCwgMjI5LCAyMzAsIDIyOCwgNzgsIDQwLCA3OCwgMjI5LCAyMzEsIDIzMiwgNzgsIDIyOSwgMjI4LCA3OCwgNzgsIDc4LCAKKyAgICAyMjksIDIyOCwgMjI4LCAyMjksIDQwLCAyMjksIDIyOSwgMjI4LCAyMjgsIDQwLCAyMzAsIDQwLCAyMzAsIDQwLCA0MCwgNDAsIAorICAgIDQwLCAyMjksIDIzMywgMjIyLCAyMjksIDIyMiwgMjIyLCAyMjgsIDIyOCwgMjI4LCA0MCwgNDAsIDQwLCA0MCwgNzgsIDIyOCwgCisgICAgNzgsIDIyOCwgMjI5LCAyMjksIDIyOCwgMjI4LCAyMjgsIDIzMCwgMjI4LCAyMjgsIDIzMCwgMjI4LCAyMjgsIDIzMCwgMjI5LCAKKyAgICAyMzAsIDIyOCwgMjI4LCAyMjksIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjI5LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIzNCwgNDAsIDIzMCwgNzgsIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI4LCAKKyAgICAyMjgsIDIyOSwgMjI5LCA3OCwgMjI2LCAyMzQsIDIzNCwgMjMwLCAyMzAsIDIyOCwgMjI4LCAyMzAsIDIzMCwgMjI4LCAyMjgsIAorICAgIDIzMCwgMjMwLCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMzAsIDIzMCwgMjI5LCAyMjksIDIzMCwgMjMwLCAKKyAgICAyMjksIDIyOSwgMjMwLCAyMzAsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIAorICAgIDQwLCA3OCwgNzgsIDIyOCwgNDAsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDc4LCA0MCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjMwLCAyMzAsIDIzMCwgMjMwLCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIyOCwgMjI5LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCAyMjgsIDIyOCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjMwLCAyMzAsIDIzMCwgCisgICAgMjMwLCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMzAsIDIzMCwgMjMwLCAyMzAsIDc4LCA3OCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMjgsIDIyOCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzNSwgMjM2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE3OCwgODQsIDgwLCA4NCwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDM1LCAxNzksIDQ2LCAKLSAgICA0NiwgNDQsIDQ2LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAKLSAgICAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgMCwgMzgsIDM4LCAzOCwgMzgsIAotICAgIDM4LCAzOCwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgCi0gICAgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgCi0gICAgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAwLCAwLCA0MywgNDMsIDQzLCA0MywgCi0gICAgNDMsIDQzLCA0MywgNDMsIDAsIDM4LCAwLCAzOCwgMCwgMzgsIDAsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgCi0gICAgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDE4MCwgNDMsIDE4MCwgNDMsIDE4MCwgNDMsIDE4MCwgCi0gICAgNDMsIDE4MCwgNDMsIDE4MCwgNDMsIDE4MCwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODEsIAotICAgIDE4MSwgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODEsIAotICAgIDE4MSwgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODEsIAotICAgIDE4MSwgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAzOCwgCi0gICAgMzgsIDE4MiwgMTgxLCA1NywgMTgwLCA1NywgNTcsIDc1LCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAxODIsIDM4LCAKLSAgICAxODIsIDE4MSwgNzUsIDc1LCA3NSwgNDMsIDQzLCA0MywgMTgwLCAwLCAwLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4MiwgMCwgCi0gICAgNzUsIDc1LCA3NSwgNDMsIDQzLCA0MywgMTgwLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTgyLCAzOCwgNzUsIAotICAgIDE4MywgMTgzLCAwLCAwLCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAxODIsIDM4LCAxODIsIDE4MSwgMTgzLCA1NywgMCwgCi0gICAgMTg0LCAxODQsIDE4NSwgMTg1LCAxODUsIDE4NSwgMTg1LCAxODUsIDE4NSwgMTg1LCAxODUsIDE4NiwgMTg2LCAxODYsIAotICAgIDE3MiwgMTg3LCAxODgsIDE4OSwgODMsIDE4OCwgMTg4LCAxODgsIDIyLCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTkxLCAKLSAgICAxOTIsIDE5MywgMTk0LCAyMiwgMjIsIDIyLCAxMzUsIDE5NSwgMTk1LCAxOTUsIDIyLCAxOTYsIDE5NywgMTk4LCAxOTksIAotICAgIDIwMCwgMjAxLCAyMDIsIDIxLCAyMDMsIDEwOCwgMjAzLCAyMDQsIDIwNSwgMjIsIDE5MCwgMTkwLCAxMzUsIDI5LCAzNiwgCi0gICAgMjIsIDE5MCwgMTM1LCAxOTUsIDIwNiwgMjA2LCAxMzUsIDEzNSwgMTM1LCAyMDcsIDE2MSwgMTYyLCAxOTAsIDE5MCwgMTkwLCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgNzcsIDEzNSwgMjA2LCAxMzUsIDEzNSwgMTkwLCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE4NSwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDIwOCwgNTAsIDAsIDAsIDM0LCAyMDgsIDIwOCwgMjA4LCAyMDgsIAotICAgIDIwOCwgMjA5LCAyMDksIDIxMCwgMjExLCAyMTIsIDIxMywgMjA4LCAzNCwgMzQsIDM0LCAzNCwgMjA4LCAyMDgsIDIwOCwgCi0gICAgMjA4LCAyMDgsIDIwOSwgMjA5LCAyMTAsIDIxMSwgMjEyLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDIxNCwgCi0gICAgMjE1LCAxNDUsIDE0NSwgMjMsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgODAsIDgwLCAxNzQsIDE3NCwgODAsIDgwLCA4MCwgODAsIDE3NCwgMTc0LCAxNzQsIDgwLCA4MCwgODEsIDgxLCA4MSwgCi0gICAgODEsIDgwLCA4MSwgODEsIDgxLCAxNzQsIDE3NCwgODAsIDg0LCA4MCwgMTc0LCAxNzQsIDg0LCA4NCwgODQsIDg0LCA4MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjE2LCAyMTYsIDQ4LCAyMTcsIDI3LCAyMTcsIAotICAgIDIxNiwgNDgsIDI3LCAyMTcsIDM1LCA0OCwgNDgsIDQ4LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDI4LCAyNywgNDgsIDIxNywgCi0gICAgMjcsIDc3LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDI3LCAyNywgMjE2LCAyMTcsIDIxNywgMjcsIDQ4LCAyNywgMjE4LCAyNywgCi0gICAgNDgsIDI3LCAxODIsIDIxOCwgNDgsIDQ4LCAyMTksIDM1LCA0OCwgNDgsIDQ0LCA0OCwgMzUsIDE1NCwgMTU0LCAxNTQsIAotICAgIDE1NCwgMzUsIDI3LCAyMTYsIDM1LCAzNSwgNDgsIDQ4LCAyMjAsIDc3LCA3NywgNzcsIDc3LCA0OCwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDI3LCA3NywgMjcsIDI3LCA0NiwgNzksIDIyMSwgMjIxLCAyMjEsIDM3LCAzNywgMjIxLCAyMjEsIDIyMSwgMjIxLCAKLSAgICAyMjEsIDIyMSwgMzcsIDM3LCAzNywgMzcsIDIyMSwgMjIyLCAyMjIsIDIyMiwgMjIyLCAyMjIsIDIyMiwgMjIyLCAyMjIsIAotICAgIDIyMiwgMjIyLCAyMjIsIDIyMiwgMjIzLCAyMjMsIDIyMywgMjIzLCAyMjIsIDIyMiwgMjIyLCAyMjIsIDIyMiwgMjIyLCAKLSAgICAyMjIsIDIyMiwgMjIyLCAyMjIsIDIyMywgMjIzLCAyMjMsIDIyMywgMjIzLCAyMjMsIDE3MSwgMTcxLCAxNzEsIDQ0LCA0NiwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAzNywgMCwgMCwgMCwgMCwgMCwgMCwgNDAsIDQwLCA0MCwgNDAsIDQwLCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDIyNCwgMjI0LCAyNywgMjcsIDI3LCAyNywgNzcsIDI3LCAyNywgNzcsIDI3LCAyNywgNzcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyMjQsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDIyNSwgCi0gICAgMjI0LCAyMjQsIDI3LCAyNywgNDAsIDI3LCA0MCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDQwLCAyMjYsIDIyNywgCi0gICAgMjI3LCAyMjgsIDc3LCA3NywgNDAsIDIyNywgMjI4LCAyMjYsIDIyNywgMjI4LCAyMjYsIDc3LCA0MCwgNzcsIDIyNywgMjI5LCAKLSAgICAyMzAsIDc3LCAyMjcsIDIyNiwgNzcsIDc3LCA3NywgMjI3LCAyMjYsIDIyNiwgMjI3LCA0MCwgMjI3LCAyMjcsIDIyNiwgCi0gICAgMjI2LCA0MCwgMjI4LCA0MCwgMjI4LCA0MCwgNDAsIDQwLCA0MCwgMjI3LCAyMzEsIDIyMCwgMjI3LCAyMjAsIDIyMCwgMjI2LCAKLSAgICAyMjYsIDIyNiwgNDAsIDQwLCA0MCwgNDAsIDc3LCAyMjYsIDc3LCAyMjYsIDIyNywgMjI3LCAyMjYsIDIyNiwgMjI2LCAyMjgsIAotICAgIDIyNiwgMjI2LCAyMjgsIDIyNiwgMjI2LCAyMjgsIDIyNywgMjI4LCAyMjYsIDIyNiwgMjI3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDIyNywgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgMjI2LCAyMzIsIDQwLCAKLSAgICAyMjgsIDc3LCAyMjcsIDIyNywgMjI3LCAyMjcsIDIyNiwgMjI2LCAyMjcsIDIyNywgNzcsIDIyNCwgMjMyLCAyMzIsIDIyOCwgCi0gICAgMjI4LCAyMjYsIDIyNiwgMjI4LCAyMjgsIDIyNiwgMjI2LCAyMjgsIDIyOCwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI4LCAyMjgsIDIyNywgMjI3LCAyMjgsIDIyOCwgMjI3LCAyMjcsIDIyOCwgMjI4LCAyMjYsIDIyNiwgMjI2LCA3NywgCi0gICAgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA0MCwgNzcsIDc3LCAyMjYsIDQwLCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDIyNiwgMjI2LCA3NywgNDAsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyOCwgMjI4LCAKLSAgICAyMjgsIDIyOCwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCAyMjYsIDIyNywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDc3LCA3NywgMjI2LCAyMjYsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyMjYsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI4LCAKLSAgICAyMjgsIDIyOCwgMjI4LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjI2LCAyMjYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyMzMsIDIzNCwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAyNywgNzcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDc5LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDI2LCA3OCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3LCAzNywgMzcsIDM3LCAzNywgCiAgICAgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgCi0gICAgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIAotICAgIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAKLSAgICAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIAotICAgIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAKLSAgICAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIyMSwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIAotICAgIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjcsIDI3LCAyNSwgNDAsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNSwgMjUsIDI3LCAyNywgMjUsIDQwLCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNSwgMjcsIDI3LCAyNSwgCi0gICAgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjUsIDI1LCAyNywgMjcsIDI1LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjcsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjcsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjcsIDI1LCAyNSwgMjUsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjcsIDI1LCAyNSwgCi0gICAgMjcsIDQwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3OSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNywgMjUsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMTYxLCAxNjIsIAotICAgIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDIzNiwgMjM2LCAKLSAgICAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgCi0gICAgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjI2LCA3NywgNzcsIDIyNiwgMjI2LCAxNjEsIDE2MiwgNzcsIDIyNiwgCi0gICAgMjI2LCA3NywgMCwgMjI2LCAwLCA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDksIDEwLCA5LCAxMCwgOSwgCi0gICAgMTAsIDksIDEwLCAxNjEsIDE2MiwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAxNjEsIDE2MiwgOSwgMTAsIDE2MSwgMTYyLCAxNjEsIAotICAgIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAKLSAgICAxNjIsIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCAyMjYsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgCi0gICAgNzcsIDc3LCAyMjYsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDIyNiwgMjI2LCA3NywgCi0gICAgNzcsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMjI2LCA3NywgNzcsIDc3LCA3NywgMjI2LCA3NywgMjI2LCAyMjYsIDIyNiwgNzcsIAotICAgIDc3LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDc3LCA3NywgMTYxLCAxNjIsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDIyNiwgMjI2LCAyMjAsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCAyMjYsIDc3LCAyMjYsIAotICAgIDc3LCA3NywgMjI2LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgNzcsIDIyNiwgMjI2LCA3NywgNzcsIDIyNiwgMjIwLCAyMTAsIDIxMCwgNzcsIDc3LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCAKLSAgICA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCA3NywgNzcsIDc3LCA3NywgMjM3LCA3NywgMjI2LCA3NywgCi0gICAgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCA3NywgCi0gICAgNzcsIDc3LCA3NywgMjI2LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDIyNiwgNzcsIDc3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyNywgMjcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDAsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgMCwgNDQsIDQ2LCAKLSAgICA0NCwgNDQsIDQ0LCA0NiwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NCwgNDQsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NiwgNDQsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDM1LCA1MCwgNDQsIDQ0LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDQ0LCA0NiwgNDQsIDQ2LCA4MCwgODAsIDgwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE1MSwgMTM1LCAxMzUsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzksIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgCisgICAgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgCisgICAgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIyMywgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAorICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKKyAgICAyMzgsIDIzOCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDMwLCAzMCwgMjYsIDI2LCAzMCwgNDAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMzAsIDQwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMzAsIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIAorICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIAorICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIAorICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMjYsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAKKyAgICAxNjMsIDE2NCwgMTYzLCAxNjQsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCisgICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjI4LCA3OCwgNzgsIAorICAgIDIyOCwgMjI4LCAxNjMsIDE2NCwgNzgsIDIyOCwgMjI4LCA3OCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCA5LCAxMCwgOSwgMTAsIDksIDEwLCA5LCAxMCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDEzNSwgMTM1LCAyOSwgMzYsIDI5LCAzNiwgMTM1LCAxMzUsIDEzNSwgMjksIDM2LCAxMzUsIDI5LCAKLSAgICAzNiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODMsIDEzNSwgMTM1LCA4MywgMTM1LCAKLSAgICAyOSwgMzYsIDEzNSwgMTM1LCAyOSwgMzYsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgNTEsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzksIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMCwgMCwgMCwgMCwgMjQwLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyMzgsIDI0MiwgMTY4LCAyNDMsIDI0NCwgMjQ1LCAyNDQsIDI0NSwgMjQ0LCAyNDUsIDI0NCwgMjQ1LCAyNDQsIDI0NSwgCi0gICAgMjM4LCAyMzgsIDI0NCwgMjQ1LCAyNDQsIDI0NSwgMjQ0LCAyNDUsIDI0NCwgMjQ1LCAyNDYsIDI0NywgMjQ4LCAyNDgsIAotICAgIDIzOCwgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQ5LCAyNTAsIDI1MSwgMjUyLCAKLSAgICAyNTMsIDI1MywgMjQ2LCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjM5LCAyMzgsIDI1NCwgMjU0LCAyNTQsIDI0MiwgCi0gICAgMTY4LCAyNDEsIDIzOCwgMjcsIDAsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIAotICAgIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAxNjgsIDI1NSwgMTY4LCAKLSAgICAyNTUsIDE2OCwgMjU1LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAyNTUsIDI1NSwgMTY4LCAyNTUsIDI1NSwgCi0gICAgMTY4LCAyNTUsIDI1NSwgMTY4LCAyNTUsIDI1NSwgMTY4LCAyNTUsIDI1NSwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAyNTUsIDE2OCwgMTY4LCAwLCAwLCAyNTYsIDI1NiwgMjU3LCAyNTcsIDI0MiwgMjU4LCAyNTksIAotICAgIDI0NiwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDI1NSwgMTY4LCAKLSAgICAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgCi0gICAgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDI1NSwgMjU1LCAxNjgsIDI1NSwgMjU1LCAxNjgsIDI1NSwgMjU1LCAKLSAgICAxNjgsIDI1NSwgMjU1LCAxNjgsIDI1NSwgMjU1LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDI1NSwgMTY4LCAxNjgsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjQxLCAyNDIsIDI0MiwgMjU4LCAyNTksIDAsIDAsIDAsIDAsIAotICAgIDAsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAwLCAwLCAwLCAKLSAgICAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgCi0gICAgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIAotICAgIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAKLSAgICAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgCi0gICAgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIAotICAgIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAKLSAgICAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDAsIDI2MCwgMjYwLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjM5LCAyMzksIDAsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDIzOSwgMjY0LCAyNjQsIAotICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyMzksIAotICAgIDIzOSwgMjM5LCAyNjAsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKLSAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMCwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjM5LCAyMzksIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjM5LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMjQyLCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMCwgMCwgMCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgODIsIDgyLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MiwgMTM1LCAxMzUsIAotICAgIDEzNSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDcsIDgwLCA4MSwgODEsIDgxLCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgMTM1LCA1MSwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgODAsIDgwLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIAotICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUzLCA1MywgNDQsIAotICAgIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NiwgNDYsIDQ0LCA0NiwgNDQsIAotICAgIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIAotICAgIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIAotICAgIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIAotICAgIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNTAsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNTEsIDI2NSwgMjY1LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgMCwgNDQsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDYsIDQ0LCA0NiwgNDQsIAotICAgIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAxMzIsIDQ3LCA0NywgNDcsIDEzOSwgNDcsIDQ3LCA0NywgNDcsIDEzMiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzYsIDEzNiwgCi0gICAgMTMyLCAxMzIsIDEzNiwgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIAotICAgIDc5LCA3OSwgMTQ1LCAyMTksIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEzNiwgMTM2LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNiwgMTM2LCAKLSAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCi0gICAgMTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MiwgODIsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgODIsIDgyLCA4MiwgCi0gICAgNDcsIDAsIDAsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCA4NCwgODQsIDg0LCA4MiwgCi0gICAgODIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDEzNiwgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MiwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDAsIDAsIDAsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDEzNiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNDIsIDEzNiwgMTM2LCAxMzIsIAotICAgIDEzMiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzIsIDEzNiwgMTM2LCAxMzYsIDE3MywgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgCi0gICAgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDAsIDUyLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDgyLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzIsIDEzMiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgMTMyLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDEzMiwgMTM2LCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIAotICAgIDAsIDgyLCA4MiwgODIsIDgyLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNTIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDc5LCA3OSwgNzksIDQ3LCAxMzYsIDAsIDAsIDAsIDAsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDgwLCA0NywgODAsIDgwLCA4NCwgNDcsIAotICAgIDQ3LCA4MCwgODAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgODAsIDgwLCA0NywgODAsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDUyLCA4MiwgODIsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgMTYzLCAxNjQsIDksIDEwLCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgCisgICAgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgMjI4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDc4LCAyMjgsIDIyOCwgNzgsIDc4LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDIyOCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDIyOCwgNzgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDE2MywgMTY0LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgMjIyLCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDc4LCA3OCwgMjI4LCA3OCwgMjI4LCA3OCwgNzgsIDIyOCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCAyMjgsIDIyOCwgNzgsIDc4LCAyMjgsIAorICAgIDIyMiwgMjEyLCAyMTIsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDIzOSwgNzgsIDIyOCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDIyOCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDc4LCAyMjgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzYsIDEzNiwgMTMyLCAxMzYsIDEzNiwgMTMyLCAKLSAgICAxMzYsIDEzNiwgODIsIDEzNiwgMTM5LCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgMCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAwLCAwLCAwLCAwLCAKLSAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCi0gICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAotICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKLSAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCi0gICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAotICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKLSAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCi0gICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAotICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKLSAgICAyNjYsIDI2NiwgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMTY4LCAxNjgsIDI2OCwgMTY4LCAyNjgsIDE2OCwgMTY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDE2OCwgMjY4LCAxNjgsIDI2OCwgMTY4LCAKLSAgICAxNjgsIDI2OCwgMjY4LCAxNjgsIDE2OCwgMTY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAwLCAwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIDI2OSwgMjcwLCAyNjksIAotICAgIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDIwOSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKLSAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAwLCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCi0gICAgMCwgMjY5LCAwLCAyNjksIDI2OSwgMCwgMjY5LCAyNjksIDAsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCi0gICAgMjY5LCAyNjksIDI3MSwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxOTMsIDI3MywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAwLCAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAyNzQsIDI3LCAwLCAwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCi0gICAgMjc1LCAyNzYsIDI3NywgMjc1LCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc1LCAyNzgsIDI3OCwgMjc5LCAyNzksIDI3NiwgMjc3LCAyNzYsIDI3NywgMjc2LCAKLSAgICAyNzcsIDI3NiwgMjc3LCAyNzYsIDI3NywgMjc2LCAyNzcsIDI3NiwgMjc3LCAyNzYsIDI3NywgMjQxLCAyNDEsIDI3NiwgCi0gICAgMjc3LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3OSwgMjc5LCAyNzksIDI4MCwgMjc1LCAyODAsIDAsIDI3NSwgMjgwLCAyNzUsIAotICAgIDI3NSwgMjc4LCAyODEsIDI4MiwgMjgxLCAyODIsIDI4MSwgMjgyLCAyODMsIDI3NSwgMjc1LCAyODQsIDI4NSwgMjg2LCAKLSAgICAyODYsIDI4NywgMCwgMjc1LCAyODgsIDI4MywgMjc1LCAwLCAwLCAwLCAwLCAxMjgsIDEyOCwgMTI4LCAxMTUsIDEyOCwgMCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMCwgMCwgMTg2LCAwLCAyODksIDI4OSwgMjkwLCAKLSAgICAyOTEsIDI5MCwgMjg5LCAyODksIDI5MiwgMjkzLCAyODksIDI5NCwgMjk1LCAyOTYsIDI5NSwgMjk1LCAyOTcsIDI5NywgCi0gICAgMjk3LCAyOTcsIDI5NywgMjk3LCAyOTcsIDI5NywgMjk3LCAyOTcsIDI5NSwgMjg5LCAyOTgsIDI5OSwgMjk4LCAyODksIAotICAgIDI4OSwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAKLSAgICAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDI5MiwgCi0gICAgMjg5LCAyOTMsIDMwMSwgMzAyLCAzMDEsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIAotICAgIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAKLSAgICAzMDMsIDMwMywgMzAzLCAyOTIsIDI5OSwgMjkzLCAyOTksIDI5MiwgMjkzLCAzMDQsIDMwNSwgMzA2LCAzMDQsIDMwNCwgCi0gICAgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDgsIDMwNywgMzA3LCAzMDcsIAotICAgIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAKLSAgICAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgCi0gICAgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIAotICAgIDMwOCwgMzA4LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAKLSAgICAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgCi0gICAgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDAsIDAsIDAsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDAsIDAsIAotICAgIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDAsIDAsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDAsIDAsIAotICAgIDMwNywgMzA3LCAzMDcsIDAsIDAsIDAsIDI5MSwgMjkxLCAyOTksIDMwMSwgMzA5LCAyOTEsIDI5MSwgMCwgMzEwLCAzMTEsIAotICAgIDMxMSwgMzExLCAzMTEsIDMxMCwgMzEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTIsIDMxMiwgMzEyLCAyNywgCi0gICAgMjUsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA1MSwgNTEsIDQ0LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA0NCwgNDcsIDQ0LCA0NywgODEsIDgxLCA4MSwgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDE1MywgMTM4LCAxMzgsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgODIsIDEzNSwgNzksIDAsIDAsIDAsIDAsIAotICAgIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAKLSAgICAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgCi0gICAgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIAotICAgIDE0NiwgMTQ2LCAxNDYsIDAsIDAsIDAsIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMTUxLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA4NCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNzEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTcxLCAwLCAwLCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCA0NywgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MSwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE0MiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgMTM4LCAxMzgsIDI4LCAzNiwgMjgsIDM2LCAxMzgsIDEzOCwgMTM4LCAyOCwgMzYsIDEzOCwgMjgsIDM2LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgMTM4LCAxMzgsIDg0LCAxMzgsIDI4LCAzNiwgMTM4LCAKKyAgICAxMzgsIDI4LCAzNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCA1MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgODQsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDgyLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAKLSAgICAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDgyLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQxLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDAsIDAsIDAsIDAsIDI0MiwgMjQzLCAyNDMsIDI0MywgCisgICAgMjQwLCAyNDQsIDE3MCwgMjQ1LCAyNDYsIDI0NywgMjQ2LCAyNDcsIDI0NiwgMjQ3LCAyNDYsIDI0NywgMjQ2LCAyNDcsIAorICAgIDI0MCwgMjQwLCAyNDYsIDI0NywgMjQ2LCAyNDcsIDI0NiwgMjQ3LCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUwLCAKKyAgICAyNDAsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI1MSwgMjUyLCAyNTMsIDI1NCwgCisgICAgMjU1LCAyNTUsIDI0OCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0MSwgMjQwLCAyNTYsIDI1NiwgMjU2LCAyNDQsIAorICAgIDE3MCwgMjQzLCAyNDAsIDI2LCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAKKyAgICAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMTcwLCAyNTcsIDE3MCwgCisgICAgMjU3LCAxNzAsIDI1NywgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjU3LCAyNTcsIDE3MCwgMjU3LCAyNTcsIAorICAgIDE3MCwgMjU3LCAyNTcsIDE3MCwgMjU3LCAyNTcsIDE3MCwgMjU3LCAyNTcsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMjU3LCAxNzAsIDE3MCwgMCwgMCwgMjU4LCAyNTgsIDI1OSwgMjU5LCAyNDQsIDI2MCwgMjYxLCAKKyAgICAyNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNTcsIDE3MCwgCisgICAgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIAorICAgIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNTcsIDI1NywgMTcwLCAyNTcsIDI1NywgMTcwLCAyNTcsIDI1NywgCisgICAgMTcwLCAyNTcsIDI1NywgMTcwLCAyNTcsIDI1NywgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAyNTcsIDE3MCwgMTcwLCAyNTcsIDI1NywgMjU3LCAyNTcsIDI0MywgMjQ0LCAyNDQsIDI2MCwgMjYxLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKKyAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKKyAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAwLCAyNjIsIDI2MiwgMjYzLCAyNjMsIAorICAgIDI2MywgMjYzLCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI0MSwgMjQxLCAwLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAKKyAgICAyNjMsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNDEsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjYyLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDAsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI0MSwgMjQxLCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI0MSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjQ0LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMCwgMCwgMCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDUzLCA1MywgNTMsIDUzLCAKKyAgICA1MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgMTM4LCAxMzgsIAorICAgIDEzOCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDgsIDgxLCA4MiwgODIsIDgyLCAxMzgsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICAxMzgsIDUyLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgCisgICAgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDU0LCA1NCwgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTIsIDI2NywgMjY3LCA0NCwgNDcsIDQ0LCAKKyAgICA0NywgMCwgNDQsIDQ3LCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NywgNDQsIAorICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEsIDUxLCA0NywgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgMTQyLCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgODAsIDgwLCA4NSwgMjIxLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDgzLCA4MywgODMsIDQ4LCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODYsIAorICAgIDg2LCA4NiwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDE3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAKKyAgICAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ1LCAKKyAgICAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxNzQsIDgzLCA4MywgCisgICAgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCA1MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAKKyAgICAxMzksIDEzOSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCA4MywgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MCwgODAsIDgwLCAKKyAgICA0OCwgMTM5LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgCisgICAgNDgsIDgxLCA4MSwgODYsIDQ4LCA0OCwgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4MSwgNDgsIDgxLCA0OCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA1MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgMTM5LCA4MywgODMsIDQ4LCA1MywgNTMsIDEzOSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDgzLCAxMzksIAorICAgIDE0MiwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDE3MCwgMTcwLCAyNzAsIDE3MCwgMjcwLCAxNzAsIDE3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAxNzAsIDI3MCwgMTcwLCAyNzAsIDE3MCwgMTcwLCAyNzAsIDI3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDAsIDAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgMCwgMCwgMCwgMjcxLCAyNzIsIDI3MSwgMjczLCAyNzMsIDI3MywgMjczLCAKKyAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjExLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgCisgICAgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDAsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAwLCAyNzEsIDAsIDI3MSwgMjcxLCAKKyAgICAwLCAyNzEsIDI3MSwgMCwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjczLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDE5NSwgMjc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDI3NiwgMjYsIDAsIDAsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAyNzcsIDI3NywgMjc3LCAyNzcsIDI3NywgMjc3LCAyNzcsIDI3OCwgMjc5LCAKKyAgICAyNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyNzcsIDI4MCwgMjgwLCAyODEsIDI4MSwgMjc4LCAyNzksIDI3OCwgMjc5LCAyNzgsIDI3OSwgMjc4LCAyNzksIAorICAgIDI3OCwgMjc5LCAyNzgsIDI3OSwgMjc4LCAyNzksIDI3OCwgMjc5LCAyNDMsIDI0MywgMjc4LCAyNzksIDI3NywgMjc3LCAKKyAgICAyNzcsIDI3NywgMjgxLCAyODEsIDI4MSwgMjgyLCAyNzcsIDI4MiwgMCwgMjc3LCAyODIsIDI3NywgMjc3LCAyODAsIDI4MywgCisgICAgMjg0LCAyODMsIDI4NCwgMjgzLCAyODQsIDI4NSwgMjc3LCAyNzcsIDI4NiwgMjg3LCAyODgsIDI4OCwgMjg5LCAwLCAyNzcsIAorICAgIDI5MCwgMjg1LCAyNzcsIDAsIDAsIDAsIDAsIDEzMCwgMTMwLCAxMzAsIDExNywgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAwLCAxODcsIDAsIDI5MSwgMjkxLCAyOTIsIDI5MywgMjkyLCAyOTEsIAorICAgIDI5MSwgMjk0LCAyOTUsIDI5MSwgMjk2LCAyOTcsIDI5OCwgMjk3LCAyOTcsIDI5OSwgMjk5LCAyOTksIDI5OSwgMjk5LCAKKyAgICAyOTksIDI5OSwgMjk5LCAyOTksIDI5OSwgMjk3LCAyOTEsIDMwMCwgMzAxLCAzMDAsIDI5MSwgMjkxLCAzMDIsIDMwMiwgCisgICAgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIAorICAgIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMjk0LCAyOTEsIDI5NSwgMzAzLCAKKyAgICAzMDQsIDMwMywgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgCisgICAgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIAorICAgIDI5NCwgMzAxLCAyOTUsIDMwMSwgMjk0LCAyOTUsIDMwNiwgMzA3LCAzMDgsIDMwNiwgMzA2LCAzMDksIDMwOSwgMzA5LCAKKyAgICAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMxMCwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgCisgICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAorICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAKKyAgICAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzEwLCAzMTAsIDMwOSwgCisgICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAorICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAKKyAgICAzMDksIDMwOSwgMCwgMCwgMCwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMCwgMCwgMzA5LCAzMDksIDMwOSwgCisgICAgMzA5LCAzMDksIDMwOSwgMCwgMCwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMCwgMCwgMzA5LCAzMDksIDMwOSwgCisgICAgMCwgMCwgMCwgMjkzLCAyOTMsIDMwMSwgMzAzLCAzMTEsIDI5MywgMjkzLCAwLCAzMTIsIDMxMywgMzEzLCAzMTMsIDMxMywgCisgICAgMzEyLCAzMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNCwgMzE0LCAzMTQsIDI2LCAzMCwgMCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDgzLCAxMzgsIDgzLCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMTUsIDMxNSwgMzE1LCAzMTUsIAorICAgIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAKKyAgICAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgCisgICAgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIAorICAgIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMTUzLCAxNTMsIDE1MywgMTUzLCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE1MywgMCwgMCwgMCwgMCwgMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgODMsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMCwgMCwgMTA1LCAwLCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMTA1LCAxMDUsIDAsIDAsIDAsIDEwNSwgMCwgMCwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDEwMiwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgCi0gICAgMzE0LCAzMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMCwgMCwgMCwgMTM1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMCwgMCwgMCwgMCwgMTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDUsIDEzMiwgMTMyLCAxMzIsIDAsIDEzMiwgMTMyLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMzIsIDg0LCAxMzIsIDgwLCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDEwNSwgMTA1LCAxMDUsIDAsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDAsIDAsIDAsIDgwLCAxNzQsIAotICAgIDg0LCAwLCAwLCAwLCAwLCAxMzksIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMzE0LCAzMTQsIDEwMiwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDAsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDAsIDAsIDAsIDAsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIAotICAgIDMxNCwgMzE0LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAKLSAgICAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgCi0gICAgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMCwgMTM2LCAxMzIsIAotICAgIDEzNiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgCi0gICAgMTM5LCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgMCwgMCwgMCwgMCwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIAotICAgIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAKLSAgICAxNTEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyLCAxMzIsIDEzNiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzcsIDQ3LCAKLSAgICAxMzcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgMTM2LCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzYsIDEzNiwgMTM5LCAxMzgsIDgyLCA4MiwgCi0gICAgMTcyLCA4MiwgODIsIDgyLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODIsIDgyLCA4MiwgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTY4LCAxNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAwLCAwLCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAKLSAgICAzMTYsIDMxNiwgMzE3LCAzMTcsIDE3NCwgMTc0LCAxNzQsIDc5LCA3OSwgNzksIDMxOCwgMzE3LCAzMTcsIDMxNywgMzE3LCAKLSAgICAzMTcsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDc5LCA3OSwgODAsIDgwLCA4MCwgODAsIDgwLCA4NCwgODQsIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDgwLCA4MCwgODAsIDgwLCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCA4MCwgODAsIDgwLCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIAotICAgIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgMCwgMCwgNDgsIAotICAgIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMCwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDAsIDAsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAxMDcsIDAsIDAsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDQsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIAorICAgIDMxNiwgMzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDAsIDAsIDAsIDEzOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzUsIDg2LCAxMzUsIDgxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDgxLCAxNzUsIAorICAgIDg2LCAwLCAwLCAwLCAwLCAxNDIsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMzE2LCAzMTYsIDEwNCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIAorICAgIDMxNiwgMzE2LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAKKyAgICAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgCisgICAgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMCwgMTM5LCAxMzUsIAorICAgIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzMTksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAyMjAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzMTksIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAyMjAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTQyLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAKKyAgICAxNTMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCAKKyAgICAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTQyLCAxNDEsIDgzLCA4MywgCisgICAgMTg4LCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAzMTksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMzE5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjIwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMzE5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjIwLCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OCwgMzUsIDAsIDAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAKLSAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgCi0gICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIAotICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIAotICAgIDIzNSwgMjM1LCAyMzUsIDIzNSwgMzIxLCAwLCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAKLSAgICAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIAotICAgIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAKLSAgICAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MywgMjYzLCAyNjMsIDI2MywgCi0gICAgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIAotICAgIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAKLSAgICAyMzUsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzOSwgMTM1LCAxNTAsIDE1MCwgMTM1LCAxMzUsIDEzNSwgMTQyLCAxNDIsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgMjYyLCAyNjIsIDI2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAwLCAwLCAwLCAwLCAwLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNjIsIDI2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxNzQsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDE3NCwgMTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMCwgMjcsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgNzksIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDc5LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgCisgICAgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAKKyAgICAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMxOCwgMzE4LCAzMTgsIDMxOCwgMzE4LCAzMTgsIDMxOCwgMzE5LCAzMTksIAorICAgIDE3NSwgMTc1LCAxNzUsIDgwLCA4MCwgODAsIDMyMCwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgwLCA4MCwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4NiwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzE4LCAzMTgsIAorICAgIDMxOCwgMzE4LCAzMTgsIDMxOCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MSwgCisgICAgODEsIDgxLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgMCwgNDksIDQ5LCAwLCAwLCA0OSwgMCwgMCwgNDksIDQ5LCAwLCAwLCA0OSwgCisgICAgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDAsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgCisgICAgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgMCwgNDksIAorICAgIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDAsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyMSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyMiwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyMSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDIyMiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyMSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyMiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDMyMSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyMiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyMSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyMiwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgNDksIDM1LCAwLCAwLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMCwgMTMwLCAwLCAwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDAsIDEzMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTMwLCAwLCAwLCAwLCAwLCAxMzAsIDAsIDEzMCwgMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAwLCAKKyAgICAxMzAsIDEzMCwgMCwgMTMwLCAwLCAwLCAxMzAsIDAsIDEzMCwgMCwgMTMwLCAwLCAxMzAsIDAsIDEzMCwgMCwgMTMwLCAxMzAsIAorICAgIDAsIDEzMCwgMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDAsIDAsIDAsIDAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzgsIDc4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMCwgMCwgMCwgMCwgMCwgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgCisgICAgMzIzLCAwLCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDIxOCwgMjE4LCAwLCAwLCAwLCAwLCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMjM3LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgMjY0LCAyNjQsIDI2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNjQsIDI2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMjcsIDI3LCAyNywgMCwgMjcsIDAsIDI3LCAwLCAyNywgCi0gICAgMCwgMjcsIDI3LCAyNywgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDAsIDI3LCAwLCAKLSAgICAwLCAyNywgMjcsIDI3LCAyNywgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgCi0gICAgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIAorICAgIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODcsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgCi0gICAgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIAotICAgIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAKLSAgICAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgCi0gICAgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIAotICAgIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAKLSAgICAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgCi0gICAgMTg2LCAxODYsIDE4NiwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAKKyAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAKKyAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMCwgCisgICAgMCwgCiB9OwogCiAvKiBkZWNvbXBvc2l0aW9uIGRhdGEgKi8KQEAgLTMwNzIsMzIxICszMTQwLDMyMiBAQAogICAgIDUwLCA0OSwgMjYwODUsIDc3MCwgNTAsIDUwLCAyNjA4NSwgNzcwLCA1MCwgNTEsIDI2MDg1LCA3NzAsIDUwLCA1MiwgCiAgICAgMjYwODUsIDc3MCwgNTAsIDUzLCAyNjA4NSwgNzcwLCA1MCwgNTQsIDI2MDg1LCA3NzAsIDUwLCA1NSwgMjYwODUsIDc3MCwgCiAgICAgNTAsIDU2LCAyNjA4NSwgNzcwLCA1MCwgNTcsIDI2MDg1LCA3NzAsIDUxLCA0OCwgMjYwODUsIDc3MCwgNTEsIDQ5LCAKLSAgICAyNjA4NSwgNzc4LCAxMDMsIDk3LCAxMDgsIDI1OSwgNDI4NjMsIDI1NiwgMzU5MTIsIDI1NiwgMjYzNTYsIDI1NiwgMzY1NTQsIAotICAgIDI1NiwgMzYwNDAsIDI1NiwgMjgzNjksIDI1NiwgMjAwMTgsIDI1NiwgMjE0NzcsIDI1NiwgNDA4NjAsIDI1NiwgNDA4NjAsIAotICAgIDI1NiwgMjI4NjUsIDI1NiwgMzczMjksIDI1NiwgMjE4OTUsIDI1NiwgMjI4NTYsIDI1NiwgMjUwNzgsIDI1NiwgMzAzMTMsIAotICAgIDI1NiwgMzI2NDUsIDI1NiwgMzQzNjcsIDI1NiwgMzQ3NDYsIDI1NiwgMzUwNjQsIDI1NiwgMzcwMDcsIDI1NiwgMjcxMzgsIAotICAgIDI1NiwgMjc5MzEsIDI1NiwgMjg4ODksIDI1NiwgMjk2NjIsIDI1NiwgMzM4NTMsIDI1NiwgMzcyMjYsIDI1NiwgMzk0MDksIAotICAgIDI1NiwgMjAwOTgsIDI1NiwgMjEzNjUsIDI1NiwgMjczOTYsIDI1NiwgMjkyMTEsIDI1NiwgMzQzNDksIDI1NiwgNDA0NzgsIAotICAgIDI1NiwgMjM4ODgsIDI1NiwgMjg2NTEsIDI1NiwgMzQyNTMsIDI1NiwgMzUxNzIsIDI1NiwgMjUyODksIDI1NiwgMzMyNDAsIAotICAgIDI1NiwgMzQ4NDcsIDI1NiwgMjQyNjYsIDI1NiwgMjYzOTEsIDI1NiwgMjgwMTAsIDI1NiwgMjk0MzYsIDI1NiwgMzcwNzAsIAotICAgIDI1NiwgMjAzNTgsIDI1NiwgMjA5MTksIDI1NiwgMjEyMTQsIDI1NiwgMjU3OTYsIDI1NiwgMjczNDcsIDI1NiwgMjkyMDAsIAotICAgIDI1NiwgMzA0MzksIDI1NiwgMzI3NjksIDI1NiwgMzQzMTAsIDI1NiwgMzQzOTYsIDI1NiwgMzYzMzUsIDI1NiwgMzg3MDYsIAotICAgIDI1NiwgMzk3OTEsIDI1NiwgNDA0NDIsIDI1NiwgMzA4NjAsIDI1NiwgMzExMDMsIDI1NiwgMzIxNjAsIDI1NiwgMzM3MzcsIAotICAgIDI1NiwgMzc2MzYsIDI1NiwgNDA1NzUsIDI1NiwgMzU1NDIsIDI1NiwgMjI3NTEsIDI1NiwgMjQzMjQsIDI1NiwgMzE4NDAsIAotICAgIDI1NiwgMzI4OTQsIDI1NiwgMjkyODIsIDI1NiwgMzA5MjIsIDI1NiwgMzYwMzQsIDI1NiwgMzg2NDcsIDI1NiwgMjI3NDQsIAotICAgIDI1NiwgMjM2NTAsIDI1NiwgMjcxNTUsIDI1NiwgMjgxMjIsIDI1NiwgMjg0MzEsIDI1NiwgMzIwNDcsIDI1NiwgMzIzMTEsIAotICAgIDI1NiwgMzg0NzUsIDI1NiwgMjEyMDIsIDI1NiwgMzI5MDcsIDI1NiwgMjA5NTYsIDI1NiwgMjA5NDAsIDI1NiwgMzEyNjAsIAotICAgIDI1NiwgMzIxOTAsIDI1NiwgMzM3NzcsIDI1NiwgMzg1MTcsIDI1NiwgMzU3MTIsIDI1NiwgMjUyOTUsIDI1NiwgMjcxMzgsIAotICAgIDI1NiwgMzU1ODIsIDI1NiwgMjAwMjUsIDI1NiwgMjM1MjcsIDI1NiwgMjQ1OTQsIDI1NiwgMjk1NzUsIDI1NiwgMzAwNjQsIAotICAgIDI1NiwgMjEyNzEsIDI1NiwgMzA5NzEsIDI1NiwgMjA0MTUsIDI1NiwgMjQ0ODksIDI1NiwgMTk5ODEsIDI1NiwgMjc4NTIsIAotICAgIDI1NiwgMjU5NzYsIDI1NiwgMzIwMzQsIDI1NiwgMjE0NDMsIDI1NiwgMjI2MjIsIDI1NiwgMzA0NjUsIDI1NiwgMzM4NjUsIAotICAgIDI1NiwgMzU0OTgsIDI1NiwgMjc1NzgsIDI1NiwgMzY3ODQsIDI1NiwgMjc3ODQsIDI1NiwgMjUzNDIsIDI1NiwgMzM1MDksIAotICAgIDI1NiwgMjU1MDQsIDI1NiwgMzAwNTMsIDI1NiwgMjAxNDIsIDI1NiwgMjA4NDEsIDI1NiwgMjA5MzcsIDI1NiwgMjY3NTMsIAotICAgIDI1NiwgMzE5NzUsIDI1NiwgMzMzOTEsIDI1NiwgMzU1MzgsIDI1NiwgMzczMjcsIDI1NiwgMjEyMzcsIDI1NiwgMjE1NzAsIAotICAgIDI1NiwgMjI4OTksIDI1NiwgMjQzMDAsIDI1NiwgMjYwNTMsIDI1NiwgMjg2NzAsIDI1NiwgMzEwMTgsIDI1NiwgMzgzMTcsIAotICAgIDI1NiwgMzk1MzAsIDI1NiwgNDA1OTksIDI1NiwgNDA2NTQsIDI1NiwgMjExNDcsIDI1NiwgMjYzMTAsIDI1NiwgMjc1MTEsIAotICAgIDI1NiwgMzY3MDYsIDI1NiwgMjQxODAsIDI1NiwgMjQ5NzYsIDI1NiwgMjUwODgsIDI1NiwgMjU3NTQsIDI1NiwgMjg0NTEsIAotICAgIDI1NiwgMjkwMDEsIDI1NiwgMjk4MzMsIDI1NiwgMzExNzgsIDI1NiwgMzIyNDQsIDI1NiwgMzI4NzksIDI1NiwgMzY2NDYsIAotICAgIDI1NiwgMzQwMzAsIDI1NiwgMzY4OTksIDI1NiwgMzc3MDYsIDI1NiwgMjEwMTUsIDI1NiwgMjExNTUsIDI1NiwgMjE2OTMsIAotICAgIDI1NiwgMjg4NzIsIDI1NiwgMzUwMTAsIDI1NiwgMzU0OTgsIDI1NiwgMjQyNjUsIDI1NiwgMjQ1NjUsIDI1NiwgMjU0NjcsIAotICAgIDI1NiwgMjc1NjYsIDI1NiwgMzE4MDYsIDI1NiwgMjk1NTcsIDI1NiwgMjAxOTYsIDI1NiwgMjIyNjUsIDI1NiwgMjM1MjcsIAotICAgIDI1NiwgMjM5OTQsIDI1NiwgMjQ2MDQsIDI1NiwgMjk2MTgsIDI1NiwgMjk4MDEsIDI1NiwgMzI2NjYsIDI1NiwgMzI4MzgsIAotICAgIDI1NiwgMzc0MjgsIDI1NiwgMzg2NDYsIDI1NiwgMzg3MjgsIDI1NiwgMzg5MzYsIDI1NiwgMjAzNjMsIDI1NiwgMzExNTAsIAotICAgIDI1NiwgMzczMDAsIDI1NiwgMzg1ODQsIDI1NiwgMjQ4MDEsIDI1NiwgMjAxMDIsIDI1NiwgMjA2OTgsIDI1NiwgMjM1MzQsIAotICAgIDI1NiwgMjM2MTUsIDI1NiwgMjYwMDksIDI1NiwgMjcxMzgsIDI1NiwgMjkxMzQsIDI1NiwgMzAyNzQsIDI1NiwgMzQwNDQsIAotICAgIDI1NiwgMzY5ODgsIDI1NiwgNDA4NDUsIDI1NiwgMjYyNDgsIDI1NiwgMzg0NDYsIDI1NiwgMjExMjksIDI1NiwgMjY0OTEsIAotICAgIDI1NiwgMjY2MTEsIDI1NiwgMjc5NjksIDI1NiwgMjgzMTYsIDI1NiwgMjk3MDUsIDI1NiwgMzAwNDEsIDI1NiwgMzA4MjcsIAotICAgIDI1NiwgMzIwMTYsIDI1NiwgMzkwMDYsIDI1NiwgMjA4NDUsIDI1NiwgMjUxMzQsIDI1NiwgMzg1MjAsIDI1NiwgMjA1MjMsIAotICAgIDI1NiwgMjM4MzMsIDI1NiwgMjgxMzgsIDI1NiwgMzY2NTAsIDI1NiwgMjQ0NTksIDI1NiwgMjQ5MDAsIDI1NiwgMjY2NDcsIAotICAgIDI1NiwgMjk1NzUsIDI1NiwgMzg1MzQsIDI1NiwgMjEwMzMsIDI1NiwgMjE1MTksIDI1NiwgMjM2NTMsIDI1NiwgMjYxMzEsIAotICAgIDI1NiwgMjY0NDYsIDI1NiwgMjY3OTIsIDI1NiwgMjc4NzcsIDI1NiwgMjk3MDIsIDI1NiwgMzAxNzgsIDI1NiwgMzI2MzMsIAotICAgIDI1NiwgMzUwMjMsIDI1NiwgMzUwNDEsIDI1NiwgMzczMjQsIDI1NiwgMzg2MjYsIDI1NiwgMjEzMTEsIDI1NiwgMjgzNDYsIAotICAgIDI1NiwgMjE1MzMsIDI1NiwgMjkxMzYsIDI1NiwgMjk4NDgsIDI1NiwgMzQyOTgsIDI1NiwgMzg1NjMsIDI1NiwgNDAwMjMsIAotICAgIDI1NiwgNDA2MDcsIDI1NiwgMjY1MTksIDI1NiwgMjgxMDcsIDI1NiwgMzMyNTYsIDI1NiwgMzE0MzUsIDI1NiwgMzE1MjAsIAotICAgIDI1NiwgMzE4OTAsIDI1NiwgMjkzNzYsIDI1NiwgMjg4MjUsIDI1NiwgMzU2NzIsIDI1NiwgMjAxNjAsIDI1NiwgMzM1OTAsIAotICAgIDI1NiwgMjEwNTAsIDI1NiwgMjA5OTksIDI1NiwgMjQyMzAsIDI1NiwgMjUyOTksIDI1NiwgMzE5NTgsIDI1NiwgMjM0MjksIAotICAgIDI1NiwgMjc5MzQsIDI1NiwgMjYyOTIsIDI1NiwgMzY2NjcsIDI1NiwgMzQ4OTIsIDI1NiwgMzg0NzcsIDI1NiwgMzUyMTEsIAotICAgIDI1NiwgMjQyNzUsIDI1NiwgMjA4MDAsIDI1NiwgMjE5NTIsIDI1NiwgMjI2MTgsIDI1NiwgMjYyMjgsIDI1NiwgMjA5NTgsIAotICAgIDI1NiwgMjk0ODIsIDI1NiwgMzA0MTAsIDI1NiwgMzEwMzYsIDI1NiwgMzEwNzAsIDI1NiwgMzEwNzcsIDI1NiwgMzExMTksIAotICAgIDI1NiwgMzg3NDIsIDI1NiwgMzE5MzQsIDI1NiwgMzI3MDEsIDI1NiwgMzQzMjIsIDI1NiwgMzU1NzYsIDI1NiwgMzY5MjAsIAotICAgIDI1NiwgMzcxMTcsIDI1NiwgMzkxNTEsIDI1NiwgMzkxNjQsIDI1NiwgMzkyMDgsIDI1NiwgNDAzNzIsIDI1NiwgMjAzOTgsIAotICAgIDI1NiwgMjA3MTEsIDI1NiwgMjA4MTMsIDI1NiwgMjExOTMsIDI1NiwgMjEyMjAsIDI1NiwgMjEzMjksIDI1NiwgMjE5MTcsIAotICAgIDI1NiwgMjIwMjIsIDI1NiwgMjIxMjAsIDI1NiwgMjI1OTIsIDI1NiwgMjI2OTYsIDI1NiwgMjM2NTIsIDI1NiwgMjM2NjIsIAotICAgIDI1NiwgMjQ3MjQsIDI1NiwgMjQ5MzYsIDI1NiwgMjQ5NzQsIDI1NiwgMjUwNzQsIDI1NiwgMjU5MzUsIDI1NiwgMjYwODIsIAotICAgIDI1NiwgMjYyNTcsIDI1NiwgMjY3NTcsIDI1NiwgMjgwMjMsIDI1NiwgMjgxODYsIDI1NiwgMjg0NTAsIDI1NiwgMjkwMzgsIAotICAgIDI1NiwgMjkyMjcsIDI1NiwgMjk3MzAsIDI1NiwgMzA4NjUsIDI1NiwgMzEwMzgsIDI1NiwgMzEwNDksIDI1NiwgMzEwNDgsIAotICAgIDI1NiwgMzEwNTYsIDI1NiwgMzEwNjIsIDI1NiwgMzEwNjksIDI1NiwgMzExMTcsIDI1NiwgMzExMTgsIDI1NiwgMzEyOTYsIAotICAgIDI1NiwgMzEzNjEsIDI1NiwgMzE2ODAsIDI1NiwgMzIyNDQsIDI1NiwgMzIyNjUsIDI1NiwgMzIzMjEsIDI1NiwgMzI2MjYsIAotICAgIDI1NiwgMzI3NzMsIDI1NiwgMzMyNjEsIDI1NiwgMzM0MDEsIDI1NiwgMzM0MDEsIDI1NiwgMzM4NzksIDI1NiwgMzUwODgsIAotICAgIDI1NiwgMzUyMjIsIDI1NiwgMzU1ODUsIDI1NiwgMzU2NDEsIDI1NiwgMzYwNTEsIDI1NiwgMzYxMDQsIDI1NiwgMzY3OTAsIAotICAgIDI1NiwgMzY5MjAsIDI1NiwgMzg2MjcsIDI1NiwgMzg5MTEsIDI1NiwgMzg5NzEsIDI1NiwgMjQ2OTMsIDI1NiwgMTQ4MjA2LCAKLSAgICAyNTYsIDMzMzA0LCAyNTYsIDIwMDA2LCAyNTYsIDIwOTE3LCAyNTYsIDIwODQwLCAyNTYsIDIwMzUyLCAyNTYsIDIwODA1LCAKLSAgICAyNTYsIDIwODY0LCAyNTYsIDIxMTkxLCAyNTYsIDIxMjQyLCAyNTYsIDIxOTE3LCAyNTYsIDIxODQ1LCAyNTYsIDIxOTEzLCAKLSAgICAyNTYsIDIxOTg2LCAyNTYsIDIyNjE4LCAyNTYsIDIyNzA3LCAyNTYsIDIyODUyLCAyNTYsIDIyODY4LCAyNTYsIDIzMTM4LCAKLSAgICAyNTYsIDIzMzM2LCAyNTYsIDI0Mjc0LCAyNTYsIDI0MjgxLCAyNTYsIDI0NDI1LCAyNTYsIDI0NDkzLCAyNTYsIDI0NzkyLCAKLSAgICAyNTYsIDI0OTEwLCAyNTYsIDI0ODQwLCAyNTYsIDI0OTc0LCAyNTYsIDI0OTI4LCAyNTYsIDI1MDc0LCAyNTYsIDI1MTQwLCAKLSAgICAyNTYsIDI1NTQwLCAyNTYsIDI1NjI4LCAyNTYsIDI1NjgyLCAyNTYsIDI1OTQyLCAyNTYsIDI2MjI4LCAyNTYsIDI2MzkxLCAKLSAgICAyNTYsIDI2Mzk1LCAyNTYsIDI2NDU0LCAyNTYsIDI3NTEzLCAyNTYsIDI3NTc4LCAyNTYsIDI3OTY5LCAyNTYsIDI4Mzc5LCAKLSAgICAyNTYsIDI4MzYzLCAyNTYsIDI4NDUwLCAyNTYsIDI4NzAyLCAyNTYsIDI5MDM4LCAyNTYsIDMwNjMxLCAyNTYsIDI5MjM3LCAKLSAgICAyNTYsIDI5MzU5LCAyNTYsIDI5NDgyLCAyNTYsIDI5ODA5LCAyNTYsIDI5OTU4LCAyNTYsIDMwMDExLCAyNTYsIDMwMjM3LCAKLSAgICAyNTYsIDMwMjM5LCAyNTYsIDMwNDEwLCAyNTYsIDMwNDI3LCAyNTYsIDMwNDUyLCAyNTYsIDMwNTM4LCAyNTYsIDMwNTI4LCAKLSAgICAyNTYsIDMwOTI0LCAyNTYsIDMxNDA5LCAyNTYsIDMxNjgwLCAyNTYsIDMxODY3LCAyNTYsIDMyMDkxLCAyNTYsIDMyMjQ0LCAKLSAgICAyNTYsIDMyNTc0LCAyNTYsIDMyNzczLCAyNTYsIDMzNjE4LCAyNTYsIDMzNzc1LCAyNTYsIDM0NjgxLCAyNTYsIDM1MTM3LCAKLSAgICAyNTYsIDM1MjA2LCAyNTYsIDM1MjIyLCAyNTYsIDM1NTE5LCAyNTYsIDM1NTc2LCAyNTYsIDM1NTMxLCAyNTYsIDM1NTg1LCAKLSAgICAyNTYsIDM1NTgyLCAyNTYsIDM1NTY1LCAyNTYsIDM1NjQxLCAyNTYsIDM1NzIyLCAyNTYsIDM2MTA0LCAyNTYsIDM2NjY0LCAKLSAgICAyNTYsIDM2OTc4LCAyNTYsIDM3MjczLCAyNTYsIDM3NDk0LCAyNTYsIDM4NTI0LCAyNTYsIDM4NjI3LCAyNTYsIDM4NzQyLCAKLSAgICAyNTYsIDM4ODc1LCAyNTYsIDM4OTExLCAyNTYsIDM4OTIzLCAyNTYsIDM4OTcxLCAyNTYsIDM5Njk4LCAyNTYsIDQwODYwLCAKLSAgICAyNTYsIDE0MTM4NiwgMjU2LCAxNDEzODAsIDI1NiwgMTQ0MzQxLCAyNTYsIDE1MjYxLCAyNTYsIDE2NDA4LCAyNTYsIAotICAgIDE2NDQxLCAyNTYsIDE1MjEzNywgMjU2LCAxNTQ4MzIsIDI1NiwgMTYzNTM5LCAyNTYsIDQwNzcxLCAyNTYsIDQwODQ2LCAKLSAgICA1MTQsIDEwMiwgMTAyLCA1MTQsIDEwMiwgMTA1LCA1MTQsIDEwMiwgMTA4LCA3NzAsIDEwMiwgMTAyLCAxMDUsIDc3MCwgCi0gICAgMTAyLCAxMDIsIDEwOCwgNTE0LCAzODMsIDExNiwgNTE0LCAxMTUsIDExNiwgNTE0LCAxMzk2LCAxMzk4LCA1MTQsIDEzOTYsIAotICAgIDEzODEsIDUxNCwgMTM5NiwgMTM4NywgNTE0LCAxNDA2LCAxMzk4LCA1MTQsIDEzOTYsIDEzODksIDUxMiwgMTQ5NywgMTQ2MCwgCi0gICAgNTEyLCAxNTIyLCAxNDYzLCAyNjIsIDE1MDYsIDI2MiwgMTQ4OCwgMjYyLCAxNDkxLCAyNjIsIDE0OTIsIDI2MiwgMTQ5OSwgCi0gICAgMjYyLCAxNTAwLCAyNjIsIDE1MDEsIDI2MiwgMTUxMiwgMjYyLCAxNTE0LCAyNjIsIDQzLCA1MTIsIDE1MTMsIDE0NzMsIAotICAgIDUxMiwgMTUxMywgMTQ3NCwgNTEyLCA2NDMyOSwgMTQ3MywgNTEyLCA2NDMyOSwgMTQ3NCwgNTEyLCAxNDg4LCAxNDYzLCAKLSAgICA1MTIsIDE0ODgsIDE0NjQsIDUxMiwgMTQ4OCwgMTQ2OCwgNTEyLCAxNDg5LCAxNDY4LCA1MTIsIDE0OTAsIDE0NjgsIDUxMiwgCi0gICAgMTQ5MSwgMTQ2OCwgNTEyLCAxNDkyLCAxNDY4LCA1MTIsIDE0OTMsIDE0NjgsIDUxMiwgMTQ5NCwgMTQ2OCwgNTEyLCAxNDk2LCAKLSAgICAxNDY4LCA1MTIsIDE0OTcsIDE0NjgsIDUxMiwgMTQ5OCwgMTQ2OCwgNTEyLCAxNDk5LCAxNDY4LCA1MTIsIDE1MDAsIDE0NjgsIAotICAgIDUxMiwgMTUwMiwgMTQ2OCwgNTEyLCAxNTA0LCAxNDY4LCA1MTIsIDE1MDUsIDE0NjgsIDUxMiwgMTUwNywgMTQ2OCwgNTEyLCAKLSAgICAxNTA4LCAxNDY4LCA1MTIsIDE1MTAsIDE0NjgsIDUxMiwgMTUxMSwgMTQ2OCwgNTEyLCAxNTEyLCAxNDY4LCA1MTIsIDE1MTMsIAotICAgIDE0NjgsIDUxMiwgMTUxNCwgMTQ2OCwgNTEyLCAxNDkzLCAxNDY1LCA1MTIsIDE0ODksIDE0NzEsIDUxMiwgMTQ5OSwgMTQ3MSwgCi0gICAgNTEyLCAxNTA4LCAxNDcxLCA1MTQsIDE0ODgsIDE1MDAsIDI2NywgMTY0OSwgMjY4LCAxNjQ5LCAyNjcsIDE2NTksIDI2OCwgCi0gICAgMTY1OSwgMjY5LCAxNjU5LCAyNzAsIDE2NTksIDI2NywgMTY2MiwgMjY4LCAxNjYyLCAyNjksIDE2NjIsIDI3MCwgMTY2MiwgCi0gICAgMjY3LCAxNjY0LCAyNjgsIDE2NjQsIDI2OSwgMTY2NCwgMjcwLCAxNjY0LCAyNjcsIDE2NTgsIDI2OCwgMTY1OCwgMjY5LCAKLSAgICAxNjU4LCAyNzAsIDE2NTgsIDI2NywgMTY2MywgMjY4LCAxNjYzLCAyNjksIDE2NjMsIDI3MCwgMTY2MywgMjY3LCAxNjU3LCAKLSAgICAyNjgsIDE2NTcsIDI2OSwgMTY1NywgMjcwLCAxNjU3LCAyNjcsIDE3MDAsIDI2OCwgMTcwMCwgMjY5LCAxNzAwLCAyNzAsIAotICAgIDE3MDAsIDI2NywgMTcwMiwgMjY4LCAxNzAyLCAyNjksIDE3MDIsIDI3MCwgMTcwMiwgMjY3LCAxNjY4LCAyNjgsIDE2NjgsIAotICAgIDI2OSwgMTY2OCwgMjcwLCAxNjY4LCAyNjcsIDE2NjcsIDI2OCwgMTY2NywgMjY5LCAxNjY3LCAyNzAsIDE2NjcsIDI2NywgCi0gICAgMTY3MCwgMjY4LCAxNjcwLCAyNjksIDE2NzAsIDI3MCwgMTY3MCwgMjY3LCAxNjcxLCAyNjgsIDE2NzEsIDI2OSwgMTY3MSwgCi0gICAgMjcwLCAxNjcxLCAyNjcsIDE2NzcsIDI2OCwgMTY3NywgMjY3LCAxNjc2LCAyNjgsIDE2NzYsIDI2NywgMTY3OCwgMjY4LCAKLSAgICAxNjc4LCAyNjcsIDE2NzIsIDI2OCwgMTY3MiwgMjY3LCAxNjg4LCAyNjgsIDE2ODgsIDI2NywgMTY4MSwgMjY4LCAxNjgxLCAKLSAgICAyNjcsIDE3MDUsIDI2OCwgMTcwNSwgMjY5LCAxNzA1LCAyNzAsIDE3MDUsIDI2NywgMTcxMSwgMjY4LCAxNzExLCAyNjksIAotICAgIDE3MTEsIDI3MCwgMTcxMSwgMjY3LCAxNzE1LCAyNjgsIDE3MTUsIDI2OSwgMTcxNSwgMjcwLCAxNzE1LCAyNjcsIDE3MTMsIAotICAgIDI2OCwgMTcxMywgMjY5LCAxNzEzLCAyNzAsIDE3MTMsIDI2NywgMTcyMiwgMjY4LCAxNzIyLCAyNjcsIDE3MjMsIDI2OCwgCi0gICAgMTcyMywgMjY5LCAxNzIzLCAyNzAsIDE3MjMsIDI2NywgMTcyOCwgMjY4LCAxNzI4LCAyNjcsIDE3MjksIDI2OCwgMTcyOSwgCi0gICAgMjY5LCAxNzI5LCAyNzAsIDE3MjksIDI2NywgMTcyNiwgMjY4LCAxNzI2LCAyNjksIDE3MjYsIDI3MCwgMTcyNiwgMjY3LCAKLSAgICAxNzQ2LCAyNjgsIDE3NDYsIDI2NywgMTc0NywgMjY4LCAxNzQ3LCAyNjcsIDE3MDksIDI2OCwgMTcwOSwgMjY5LCAxNzA5LCAKLSAgICAyNzAsIDE3MDksIDI2NywgMTczNSwgMjY4LCAxNzM1LCAyNjcsIDE3MzQsIDI2OCwgMTczNCwgMjY3LCAxNzM2LCAyNjgsIAotICAgIDE3MzYsIDI2NywgMTY1NSwgMjY3LCAxNzM5LCAyNjgsIDE3MzksIDI2NywgMTczMywgMjY4LCAxNzMzLCAyNjcsIDE3MzcsIAotICAgIDI2OCwgMTczNywgMjY3LCAxNzQ0LCAyNjgsIDE3NDQsIDI2OSwgMTc0NCwgMjcwLCAxNzQ0LCAyNjksIDE2MDksIDI3MCwgCi0gICAgMTYwOSwgNTIzLCAxNTc0LCAxNTc1LCA1MjQsIDE1NzQsIDE1NzUsIDUyMywgMTU3NCwgMTc0OSwgNTI0LCAxNTc0LCAxNzQ5LCAKLSAgICA1MjMsIDE1NzQsIDE2MDgsIDUyNCwgMTU3NCwgMTYwOCwgNTIzLCAxNTc0LCAxNzM1LCA1MjQsIDE1NzQsIDE3MzUsIDUyMywgCi0gICAgMTU3NCwgMTczNCwgNTI0LCAxNTc0LCAxNzM0LCA1MjMsIDE1NzQsIDE3MzYsIDUyNCwgMTU3NCwgMTczNiwgNTIzLCAxNTc0LCAKLSAgICAxNzQ0LCA1MjQsIDE1NzQsIDE3NDQsIDUyNSwgMTU3NCwgMTc0NCwgNTIzLCAxNTc0LCAxNjA5LCA1MjQsIDE1NzQsIDE2MDksIAotICAgIDUyNSwgMTU3NCwgMTYwOSwgMjY3LCAxNzQwLCAyNjgsIDE3NDAsIDI2OSwgMTc0MCwgMjcwLCAxNzQwLCA1MjMsIDE1NzQsIAotICAgIDE1ODAsIDUyMywgMTU3NCwgMTU4MSwgNTIzLCAxNTc0LCAxNjA1LCA1MjMsIDE1NzQsIDE2MDksIDUyMywgMTU3NCwgMTYxMCwgCi0gICAgNTIzLCAxNTc2LCAxNTgwLCA1MjMsIDE1NzYsIDE1ODEsIDUyMywgMTU3NiwgMTU4MiwgNTIzLCAxNTc2LCAxNjA1LCA1MjMsIAotICAgIDE1NzYsIDE2MDksIDUyMywgMTU3NiwgMTYxMCwgNTIzLCAxNTc4LCAxNTgwLCA1MjMsIDE1NzgsIDE1ODEsIDUyMywgMTU3OCwgCi0gICAgMTU4MiwgNTIzLCAxNTc4LCAxNjA1LCA1MjMsIDE1NzgsIDE2MDksIDUyMywgMTU3OCwgMTYxMCwgNTIzLCAxNTc5LCAxNTgwLCAKLSAgICA1MjMsIDE1NzksIDE2MDUsIDUyMywgMTU3OSwgMTYwOSwgNTIzLCAxNTc5LCAxNjEwLCA1MjMsIDE1ODAsIDE1ODEsIDUyMywgCi0gICAgMTU4MCwgMTYwNSwgNTIzLCAxNTgxLCAxNTgwLCA1MjMsIDE1ODEsIDE2MDUsIDUyMywgMTU4MiwgMTU4MCwgNTIzLCAxNTgyLCAKLSAgICAxNTgxLCA1MjMsIDE1ODIsIDE2MDUsIDUyMywgMTU4NywgMTU4MCwgNTIzLCAxNTg3LCAxNTgxLCA1MjMsIDE1ODcsIDE1ODIsIAotICAgIDUyMywgMTU4NywgMTYwNSwgNTIzLCAxNTg5LCAxNTgxLCA1MjMsIDE1ODksIDE2MDUsIDUyMywgMTU5MCwgMTU4MCwgNTIzLCAKLSAgICAxNTkwLCAxNTgxLCA1MjMsIDE1OTAsIDE1ODIsIDUyMywgMTU5MCwgMTYwNSwgNTIzLCAxNTkxLCAxNTgxLCA1MjMsIDE1OTEsIAotICAgIDE2MDUsIDUyMywgMTU5MiwgMTYwNSwgNTIzLCAxNTkzLCAxNTgwLCA1MjMsIDE1OTMsIDE2MDUsIDUyMywgMTU5NCwgMTU4MCwgCi0gICAgNTIzLCAxNTk0LCAxNjA1LCA1MjMsIDE2MDEsIDE1ODAsIDUyMywgMTYwMSwgMTU4MSwgNTIzLCAxNjAxLCAxNTgyLCA1MjMsIAotICAgIDE2MDEsIDE2MDUsIDUyMywgMTYwMSwgMTYwOSwgNTIzLCAxNjAxLCAxNjEwLCA1MjMsIDE2MDIsIDE1ODEsIDUyMywgMTYwMiwgCi0gICAgMTYwNSwgNTIzLCAxNjAyLCAxNjA5LCA1MjMsIDE2MDIsIDE2MTAsIDUyMywgMTYwMywgMTU3NSwgNTIzLCAxNjAzLCAxNTgwLCAKLSAgICA1MjMsIDE2MDMsIDE1ODEsIDUyMywgMTYwMywgMTU4MiwgNTIzLCAxNjAzLCAxNjA0LCA1MjMsIDE2MDMsIDE2MDUsIDUyMywgCi0gICAgMTYwMywgMTYwOSwgNTIzLCAxNjAzLCAxNjEwLCA1MjMsIDE2MDQsIDE1ODAsIDUyMywgMTYwNCwgMTU4MSwgNTIzLCAxNjA0LCAKLSAgICAxNTgyLCA1MjMsIDE2MDQsIDE2MDUsIDUyMywgMTYwNCwgMTYwOSwgNTIzLCAxNjA0LCAxNjEwLCA1MjMsIDE2MDUsIDE1ODAsIAotICAgIDUyMywgMTYwNSwgMTU4MSwgNTIzLCAxNjA1LCAxNTgyLCA1MjMsIDE2MDUsIDE2MDUsIDUyMywgMTYwNSwgMTYwOSwgNTIzLCAKLSAgICAxNjA1LCAxNjEwLCA1MjMsIDE2MDYsIDE1ODAsIDUyMywgMTYwNiwgMTU4MSwgNTIzLCAxNjA2LCAxNTgyLCA1MjMsIDE2MDYsIAotICAgIDE2MDUsIDUyMywgMTYwNiwgMTYwOSwgNTIzLCAxNjA2LCAxNjEwLCA1MjMsIDE2MDcsIDE1ODAsIDUyMywgMTYwNywgMTYwNSwgCi0gICAgNTIzLCAxNjA3LCAxNjA5LCA1MjMsIDE2MDcsIDE2MTAsIDUyMywgMTYxMCwgMTU4MCwgNTIzLCAxNjEwLCAxNTgxLCA1MjMsIAotICAgIDE2MTAsIDE1ODIsIDUyMywgMTYxMCwgMTYwNSwgNTIzLCAxNjEwLCAxNjA5LCA1MjMsIDE2MTAsIDE2MTAsIDUyMywgMTU4NCwgCi0gICAgMTY0OCwgNTIzLCAxNTg1LCAxNjQ4LCA1MjMsIDE2MDksIDE2NDgsIDc3OSwgMzIsIDE2MTIsIDE2MTcsIDc3OSwgMzIsIAotICAgIDE2MTMsIDE2MTcsIDc3OSwgMzIsIDE2MTQsIDE2MTcsIDc3OSwgMzIsIDE2MTUsIDE2MTcsIDc3OSwgMzIsIDE2MTYsIAotICAgIDE2MTcsIDc3OSwgMzIsIDE2MTcsIDE2NDgsIDUyNCwgMTU3NCwgMTU4NSwgNTI0LCAxNTc0LCAxNTg2LCA1MjQsIDE1NzQsIAotICAgIDE2MDUsIDUyNCwgMTU3NCwgMTYwNiwgNTI0LCAxNTc0LCAxNjA5LCA1MjQsIDE1NzQsIDE2MTAsIDUyNCwgMTU3NiwgMTU4NSwgCi0gICAgNTI0LCAxNTc2LCAxNTg2LCA1MjQsIDE1NzYsIDE2MDUsIDUyNCwgMTU3NiwgMTYwNiwgNTI0LCAxNTc2LCAxNjA5LCA1MjQsIAotICAgIDE1NzYsIDE2MTAsIDUyNCwgMTU3OCwgMTU4NSwgNTI0LCAxNTc4LCAxNTg2LCA1MjQsIDE1NzgsIDE2MDUsIDUyNCwgMTU3OCwgCi0gICAgMTYwNiwgNTI0LCAxNTc4LCAxNjA5LCA1MjQsIDE1NzgsIDE2MTAsIDUyNCwgMTU3OSwgMTU4NSwgNTI0LCAxNTc5LCAxNTg2LCAKLSAgICA1MjQsIDE1NzksIDE2MDUsIDUyNCwgMTU3OSwgMTYwNiwgNTI0LCAxNTc5LCAxNjA5LCA1MjQsIDE1NzksIDE2MTAsIDUyNCwgCi0gICAgMTYwMSwgMTYwOSwgNTI0LCAxNjAxLCAxNjEwLCA1MjQsIDE2MDIsIDE2MDksIDUyNCwgMTYwMiwgMTYxMCwgNTI0LCAxNjAzLCAKLSAgICAxNTc1LCA1MjQsIDE2MDMsIDE2MDQsIDUyNCwgMTYwMywgMTYwNSwgNTI0LCAxNjAzLCAxNjA5LCA1MjQsIDE2MDMsIDE2MTAsIAotICAgIDUyNCwgMTYwNCwgMTYwNSwgNTI0LCAxNjA0LCAxNjA5LCA1MjQsIDE2MDQsIDE2MTAsIDUyNCwgMTYwNSwgMTU3NSwgNTI0LCAKLSAgICAxNjA1LCAxNjA1LCA1MjQsIDE2MDYsIDE1ODUsIDUyNCwgMTYwNiwgMTU4NiwgNTI0LCAxNjA2LCAxNjA1LCA1MjQsIDE2MDYsIAotICAgIDE2MDYsIDUyNCwgMTYwNiwgMTYwOSwgNTI0LCAxNjA2LCAxNjEwLCA1MjQsIDE2MDksIDE2NDgsIDUyNCwgMTYxMCwgMTU4NSwgCi0gICAgNTI0LCAxNjEwLCAxNTg2LCA1MjQsIDE2MTAsIDE2MDUsIDUyNCwgMTYxMCwgMTYwNiwgNTI0LCAxNjEwLCAxNjA5LCA1MjQsIAotICAgIDE2MTAsIDE2MTAsIDUyNSwgMTU3NCwgMTU4MCwgNTI1LCAxNTc0LCAxNTgxLCA1MjUsIDE1NzQsIDE1ODIsIDUyNSwgMTU3NCwgCi0gICAgMTYwNSwgNTI1LCAxNTc0LCAxNjA3LCA1MjUsIDE1NzYsIDE1ODAsIDUyNSwgMTU3NiwgMTU4MSwgNTI1LCAxNTc2LCAxNTgyLCAKLSAgICA1MjUsIDE1NzYsIDE2MDUsIDUyNSwgMTU3NiwgMTYwNywgNTI1LCAxNTc4LCAxNTgwLCA1MjUsIDE1NzgsIDE1ODEsIDUyNSwgCi0gICAgMTU3OCwgMTU4MiwgNTI1LCAxNTc4LCAxNjA1LCA1MjUsIDE1NzgsIDE2MDcsIDUyNSwgMTU3OSwgMTYwNSwgNTI1LCAxNTgwLCAKLSAgICAxNTgxLCA1MjUsIDE1ODAsIDE2MDUsIDUyNSwgMTU4MSwgMTU4MCwgNTI1LCAxNTgxLCAxNjA1LCA1MjUsIDE1ODIsIDE1ODAsIAotICAgIDUyNSwgMTU4MiwgMTYwNSwgNTI1LCAxNTg3LCAxNTgwLCA1MjUsIDE1ODcsIDE1ODEsIDUyNSwgMTU4NywgMTU4MiwgNTI1LCAKLSAgICAxNTg3LCAxNjA1LCA1MjUsIDE1ODksIDE1ODEsIDUyNSwgMTU4OSwgMTU4MiwgNTI1LCAxNTg5LCAxNjA1LCA1MjUsIDE1OTAsIAotICAgIDE1ODAsIDUyNSwgMTU5MCwgMTU4MSwgNTI1LCAxNTkwLCAxNTgyLCA1MjUsIDE1OTAsIDE2MDUsIDUyNSwgMTU5MSwgMTU4MSwgCi0gICAgNTI1LCAxNTkyLCAxNjA1LCA1MjUsIDE1OTMsIDE1ODAsIDUyNSwgMTU5MywgMTYwNSwgNTI1LCAxNTk0LCAxNTgwLCA1MjUsIAotICAgIDE1OTQsIDE2MDUsIDUyNSwgMTYwMSwgMTU4MCwgNTI1LCAxNjAxLCAxNTgxLCA1MjUsIDE2MDEsIDE1ODIsIDUyNSwgMTYwMSwgCi0gICAgMTYwNSwgNTI1LCAxNjAyLCAxNTgxLCA1MjUsIDE2MDIsIDE2MDUsIDUyNSwgMTYwMywgMTU4MCwgNTI1LCAxNjAzLCAxNTgxLCAKLSAgICA1MjUsIDE2MDMsIDE1ODIsIDUyNSwgMTYwMywgMTYwNCwgNTI1LCAxNjAzLCAxNjA1LCA1MjUsIDE2MDQsIDE1ODAsIDUyNSwgCi0gICAgMTYwNCwgMTU4MSwgNTI1LCAxNjA0LCAxNTgyLCA1MjUsIDE2MDQsIDE2MDUsIDUyNSwgMTYwNCwgMTYwNywgNTI1LCAxNjA1LCAKLSAgICAxNTgwLCA1MjUsIDE2MDUsIDE1ODEsIDUyNSwgMTYwNSwgMTU4MiwgNTI1LCAxNjA1LCAxNjA1LCA1MjUsIDE2MDYsIDE1ODAsIAotICAgIDUyNSwgMTYwNiwgMTU4MSwgNTI1LCAxNjA2LCAxNTgyLCA1MjUsIDE2MDYsIDE2MDUsIDUyNSwgMTYwNiwgMTYwNywgNTI1LCAKLSAgICAxNjA3LCAxNTgwLCA1MjUsIDE2MDcsIDE2MDUsIDUyNSwgMTYwNywgMTY0OCwgNTI1LCAxNjEwLCAxNTgwLCA1MjUsIDE2MTAsIAotICAgIDE1ODEsIDUyNSwgMTYxMCwgMTU4MiwgNTI1LCAxNjEwLCAxNjA1LCA1MjUsIDE2MTAsIDE2MDcsIDUyNiwgMTU3NCwgMTYwNSwgCi0gICAgNTI2LCAxNTc0LCAxNjA3LCA1MjYsIDE1NzYsIDE2MDUsIDUyNiwgMTU3NiwgMTYwNywgNTI2LCAxNTc4LCAxNjA1LCA1MjYsIAotICAgIDE1NzgsIDE2MDcsIDUyNiwgMTU3OSwgMTYwNSwgNTI2LCAxNTc5LCAxNjA3LCA1MjYsIDE1ODcsIDE2MDUsIDUyNiwgMTU4NywgCi0gICAgMTYwNywgNTI2LCAxNTg4LCAxNjA1LCA1MjYsIDE1ODgsIDE2MDcsIDUyNiwgMTYwMywgMTYwNCwgNTI2LCAxNjAzLCAxNjA1LCAKLSAgICA1MjYsIDE2MDQsIDE2MDUsIDUyNiwgMTYwNiwgMTYwNSwgNTI2LCAxNjA2LCAxNjA3LCA1MjYsIDE2MTAsIDE2MDUsIDUyNiwgCi0gICAgMTYxMCwgMTYwNywgNzgyLCAxNjAwLCAxNjE0LCAxNjE3LCA3ODIsIDE2MDAsIDE2MTUsIDE2MTcsIDc4MiwgMTYwMCwgCi0gICAgMTYxNiwgMTYxNywgNTIzLCAxNTkxLCAxNjA5LCA1MjMsIDE1OTEsIDE2MTAsIDUyMywgMTU5MywgMTYwOSwgNTIzLCAxNTkzLCAKLSAgICAxNjEwLCA1MjMsIDE1OTQsIDE2MDksIDUyMywgMTU5NCwgMTYxMCwgNTIzLCAxNTg3LCAxNjA5LCA1MjMsIDE1ODcsIDE2MTAsIAotICAgIDUyMywgMTU4OCwgMTYwOSwgNTIzLCAxNTg4LCAxNjEwLCA1MjMsIDE1ODEsIDE2MDksIDUyMywgMTU4MSwgMTYxMCwgNTIzLCAKLSAgICAxNTgwLCAxNjA5LCA1MjMsIDE1ODAsIDE2MTAsIDUyMywgMTU4MiwgMTYwOSwgNTIzLCAxNTgyLCAxNjEwLCA1MjMsIDE1ODksIAotICAgIDE2MDksIDUyMywgMTU4OSwgMTYxMCwgNTIzLCAxNTkwLCAxNjA5LCA1MjMsIDE1OTAsIDE2MTAsIDUyMywgMTU4OCwgMTU4MCwgCi0gICAgNTIzLCAxNTg4LCAxNTgxLCA1MjMsIDE1ODgsIDE1ODIsIDUyMywgMTU4OCwgMTYwNSwgNTIzLCAxNTg4LCAxNTg1LCA1MjMsIAotICAgIDE1ODcsIDE1ODUsIDUyMywgMTU4OSwgMTU4NSwgNTIzLCAxNTkwLCAxNTg1LCA1MjQsIDE1OTEsIDE2MDksIDUyNCwgMTU5MSwgCi0gICAgMTYxMCwgNTI0LCAxNTkzLCAxNjA5LCA1MjQsIDE1OTMsIDE2MTAsIDUyNCwgMTU5NCwgMTYwOSwgNTI0LCAxNTk0LCAxNjEwLCAKLSAgICA1MjQsIDE1ODcsIDE2MDksIDUyNCwgMTU4NywgMTYxMCwgNTI0LCAxNTg4LCAxNjA5LCA1MjQsIDE1ODgsIDE2MTAsIDUyNCwgCi0gICAgMTU4MSwgMTYwOSwgNTI0LCAxNTgxLCAxNjEwLCA1MjQsIDE1ODAsIDE2MDksIDUyNCwgMTU4MCwgMTYxMCwgNTI0LCAxNTgyLCAKLSAgICAxNjA5LCA1MjQsIDE1ODIsIDE2MTAsIDUyNCwgMTU4OSwgMTYwOSwgNTI0LCAxNTg5LCAxNjEwLCA1MjQsIDE1OTAsIDE2MDksIAotICAgIDUyNCwgMTU5MCwgMTYxMCwgNTI0LCAxNTg4LCAxNTgwLCA1MjQsIDE1ODgsIDE1ODEsIDUyNCwgMTU4OCwgMTU4MiwgNTI0LCAKLSAgICAxNTg4LCAxNjA1LCA1MjQsIDE1ODgsIDE1ODUsIDUyNCwgMTU4NywgMTU4NSwgNTI0LCAxNTg5LCAxNTg1LCA1MjQsIDE1OTAsIAotICAgIDE1ODUsIDUyNSwgMTU4OCwgMTU4MCwgNTI1LCAxNTg4LCAxNTgxLCA1MjUsIDE1ODgsIDE1ODIsIDUyNSwgMTU4OCwgMTYwNSwgCi0gICAgNTI1LCAxNTg3LCAxNjA3LCA1MjUsIDE1ODgsIDE2MDcsIDUyNSwgMTU5MSwgMTYwNSwgNTI2LCAxNTg3LCAxNTgwLCA1MjYsIAotICAgIDE1ODcsIDE1ODEsIDUyNiwgMTU4NywgMTU4MiwgNTI2LCAxNTg4LCAxNTgwLCA1MjYsIDE1ODgsIDE1ODEsIDUyNiwgMTU4OCwgCi0gICAgMTU4MiwgNTI2LCAxNTkxLCAxNjA1LCA1MjYsIDE1OTIsIDE2MDUsIDUyNCwgMTU3NSwgMTYxMSwgNTIzLCAxNTc1LCAxNjExLCAKLSAgICA3ODEsIDE1NzgsIDE1ODAsIDE2MDUsIDc4MCwgMTU3OCwgMTU4MSwgMTU4MCwgNzgxLCAxNTc4LCAxNTgxLCAxNTgwLCA3ODEsIAotICAgIDE1NzgsIDE1ODEsIDE2MDUsIDc4MSwgMTU3OCwgMTU4MiwgMTYwNSwgNzgxLCAxNTc4LCAxNjA1LCAxNTgwLCA3ODEsIAotICAgIDE1NzgsIDE2MDUsIDE1ODEsIDc4MSwgMTU3OCwgMTYwNSwgMTU4MiwgNzgwLCAxNTgwLCAxNjA1LCAxNTgxLCA3ODEsIAotICAgIDE1ODAsIDE2MDUsIDE1ODEsIDc4MCwgMTU4MSwgMTYwNSwgMTYxMCwgNzgwLCAxNTgxLCAxNjA1LCAxNjA5LCA3ODEsIAotICAgIDE1ODcsIDE1ODEsIDE1ODAsIDc4MSwgMTU4NywgMTU4MCwgMTU4MSwgNzgwLCAxNTg3LCAxNTgwLCAxNjA5LCA3ODAsIAotICAgIDE1ODcsIDE2MDUsIDE1ODEsIDc4MSwgMTU4NywgMTYwNSwgMTU4MSwgNzgxLCAxNTg3LCAxNjA1LCAxNTgwLCA3ODAsIAotICAgIDE1ODcsIDE2MDUsIDE2MDUsIDc4MSwgMTU4NywgMTYwNSwgMTYwNSwgNzgwLCAxNTg5LCAxNTgxLCAxNTgxLCA3ODEsIAotICAgIDE1ODksIDE1ODEsIDE1ODEsIDc4MCwgMTU4OSwgMTYwNSwgMTYwNSwgNzgwLCAxNTg4LCAxNTgxLCAxNjA1LCA3ODEsIAotICAgIDE1ODgsIDE1ODEsIDE2MDUsIDc4MCwgMTU4OCwgMTU4MCwgMTYxMCwgNzgwLCAxNTg4LCAxNjA1LCAxNTgyLCA3ODEsIAotICAgIDE1ODgsIDE2MDUsIDE1ODIsIDc4MCwgMTU4OCwgMTYwNSwgMTYwNSwgNzgxLCAxNTg4LCAxNjA1LCAxNjA1LCA3ODAsIAotICAgIDE1OTAsIDE1ODEsIDE2MDksIDc4MCwgMTU5MCwgMTU4MiwgMTYwNSwgNzgxLCAxNTkwLCAxNTgyLCAxNjA1LCA3ODAsIAotICAgIDE1OTEsIDE2MDUsIDE1ODEsIDc4MSwgMTU5MSwgMTYwNSwgMTU4MSwgNzgxLCAxNTkxLCAxNjA1LCAxNjA1LCA3ODAsIAotICAgIDE1OTEsIDE2MDUsIDE2MTAsIDc4MCwgMTU5MywgMTU4MCwgMTYwNSwgNzgwLCAxNTkzLCAxNjA1LCAxNjA1LCA3ODEsIAotICAgIDE1OTMsIDE2MDUsIDE2MDUsIDc4MCwgMTU5MywgMTYwNSwgMTYwOSwgNzgwLCAxNTk0LCAxNjA1LCAxNjA1LCA3ODAsIAotICAgIDE1OTQsIDE2MDUsIDE2MTAsIDc4MCwgMTU5NCwgMTYwNSwgMTYwOSwgNzgwLCAxNjAxLCAxNTgyLCAxNjA1LCA3ODEsIAotICAgIDE2MDEsIDE1ODIsIDE2MDUsIDc4MCwgMTYwMiwgMTYwNSwgMTU4MSwgNzgwLCAxNjAyLCAxNjA1LCAxNjA1LCA3ODAsIAotICAgIDE2MDQsIDE1ODEsIDE2MDUsIDc4MCwgMTYwNCwgMTU4MSwgMTYxMCwgNzgwLCAxNjA0LCAxNTgxLCAxNjA5LCA3ODEsIAotICAgIDE2MDQsIDE1ODAsIDE1ODAsIDc4MCwgMTYwNCwgMTU4MCwgMTU4MCwgNzgwLCAxNjA0LCAxNTgyLCAxNjA1LCA3ODEsIAotICAgIDE2MDQsIDE1ODIsIDE2MDUsIDc4MCwgMTYwNCwgMTYwNSwgMTU4MSwgNzgxLCAxNjA0LCAxNjA1LCAxNTgxLCA3ODEsIAotICAgIDE2MDUsIDE1ODEsIDE1ODAsIDc4MSwgMTYwNSwgMTU4MSwgMTYwNSwgNzgwLCAxNjA1LCAxNTgxLCAxNjEwLCA3ODEsIAotICAgIDE2MDUsIDE1ODAsIDE1ODEsIDc4MSwgMTYwNSwgMTU4MCwgMTYwNSwgNzgxLCAxNjA1LCAxNTgyLCAxNTgwLCA3ODEsIAotICAgIDE2MDUsIDE1ODIsIDE2MDUsIDc4MSwgMTYwNSwgMTU4MCwgMTU4MiwgNzgxLCAxNjA3LCAxNjA1LCAxNTgwLCA3ODEsIAotICAgIDE2MDcsIDE2MDUsIDE2MDUsIDc4MSwgMTYwNiwgMTU4MSwgMTYwNSwgNzgwLCAxNjA2LCAxNTgxLCAxNjA5LCA3ODAsIAotICAgIDE2MDYsIDE1ODAsIDE2MDUsIDc4MSwgMTYwNiwgMTU4MCwgMTYwNSwgNzgwLCAxNjA2LCAxNTgwLCAxNjA5LCA3ODAsIAotICAgIDE2MDYsIDE2MDUsIDE2MTAsIDc4MCwgMTYwNiwgMTYwNSwgMTYwOSwgNzgwLCAxNjEwLCAxNjA1LCAxNjA1LCA3ODEsIAotICAgIDE2MTAsIDE2MDUsIDE2MDUsIDc4MCwgMTU3NiwgMTU4MiwgMTYxMCwgNzgwLCAxNTc4LCAxNTgwLCAxNjEwLCA3ODAsIAotICAgIDE1NzgsIDE1ODAsIDE2MDksIDc4MCwgMTU3OCwgMTU4MiwgMTYxMCwgNzgwLCAxNTc4LCAxNTgyLCAxNjA5LCA3ODAsIAotICAgIDE1NzgsIDE2MDUsIDE2MTAsIDc4MCwgMTU3OCwgMTYwNSwgMTYwOSwgNzgwLCAxNTgwLCAxNjA1LCAxNjEwLCA3ODAsIAotICAgIDE1ODAsIDE1ODEsIDE2MDksIDc4MCwgMTU4MCwgMTYwNSwgMTYwOSwgNzgwLCAxNTg3LCAxNTgyLCAxNjA5LCA3ODAsIAotICAgIDE1ODksIDE1ODEsIDE2MTAsIDc4MCwgMTU4OCwgMTU4MSwgMTYxMCwgNzgwLCAxNTkwLCAxNTgxLCAxNjEwLCA3ODAsIAotICAgIDE2MDQsIDE1ODAsIDE2MTAsIDc4MCwgMTYwNCwgMTYwNSwgMTYxMCwgNzgwLCAxNjEwLCAxNTgxLCAxNjEwLCA3ODAsIAotICAgIDE2MTAsIDE1ODAsIDE2MTAsIDc4MCwgMTYxMCwgMTYwNSwgMTYxMCwgNzgwLCAxNjA1LCAxNjA1LCAxNjEwLCA3ODAsIAotICAgIDE2MDIsIDE2MDUsIDE2MTAsIDc4MCwgMTYwNiwgMTU4MSwgMTYxMCwgNzgxLCAxNjAyLCAxNjA1LCAxNTgxLCA3ODEsIAotICAgIDE2MDQsIDE1ODEsIDE2MDUsIDc4MCwgMTU5MywgMTYwNSwgMTYxMCwgNzgwLCAxNjAzLCAxNjA1LCAxNjEwLCA3ODEsIAotICAgIDE2MDYsIDE1ODAsIDE1ODEsIDc4MCwgMTYwNSwgMTU4MiwgMTYxMCwgNzgxLCAxNjA0LCAxNTgwLCAxNjA1LCA3ODAsIAotICAgIDE2MDMsIDE2MDUsIDE2MDUsIDc4MCwgMTYwNCwgMTU4MCwgMTYwNSwgNzgwLCAxNjA2LCAxNTgwLCAxNTgxLCA3ODAsIAotICAgIDE1ODAsIDE1ODEsIDE2MTAsIDc4MCwgMTU4MSwgMTU4MCwgMTYxMCwgNzgwLCAxNjA1LCAxNTgwLCAxNjEwLCA3ODAsIAotICAgIDE2MDEsIDE2MDUsIDE2MTAsIDc4MCwgMTU3NiwgMTU4MSwgMTYxMCwgNzgxLCAxNjAzLCAxNjA1LCAxNjA1LCA3ODEsIAotICAgIDE1OTMsIDE1ODAsIDE2MDUsIDc4MSwgMTU4OSwgMTYwNSwgMTYwNSwgNzgwLCAxNTg3LCAxNTgyLCAxNjEwLCA3ODAsIAotICAgIDE2MDYsIDE1ODAsIDE2MTAsIDc3OSwgMTU4OSwgMTYwNCwgMTc0NiwgNzc5LCAxNjAyLCAxNjA0LCAxNzQ2LCAxMDM1LCAKLSAgICAxNTc1LCAxNjA0LCAxNjA0LCAxNjA3LCAxMDM1LCAxNTc1LCAxNjAzLCAxNTc2LCAxNTg1LCAxMDM1LCAxNjA1LCAxNTgxLCAKLSAgICAxNjA1LCAxNTgzLCAxMDM1LCAxNTg5LCAxNjA0LCAxNTkzLCAxNjA1LCAxMDM1LCAxNTg1LCAxNTg3LCAxNjA4LCAxNjA0LCAKLSAgICAxMDM1LCAxNTkzLCAxNjA0LCAxNjEwLCAxNjA3LCAxMDM1LCAxNjA4LCAxNTg3LCAxNjA0LCAxNjA1LCA3NzksIDE1ODksIAotICAgIDE2MDQsIDE2MDksIDQ2MTksIDE1ODksIDE2MDQsIDE2MDksIDMyLCAxNTc1LCAxNjA0LCAxNjA0LCAxNjA3LCAzMiwgMTU5MywgCi0gICAgMTYwNCwgMTYxMCwgMTYwNywgMzIsIDE2MDgsIDE1ODcsIDE2MDQsIDE2MDUsIDIwNTksIDE1ODAsIDE2MDQsIDMyLCAxNTgwLCAKLSAgICAxNjA0LCAxNTc1LCAxNjA0LCAxNjA3LCAxMDM1LCAxNTg1LCAxNzQwLCAxNTc1LCAxNjA0LCAyNjUsIDQ0LCAyNjUsIAotICAgIDEyMjg5LCAyNjUsIDEyMjkwLCAyNjUsIDU4LCAyNjUsIDU5LCAyNjUsIDMzLCAyNjUsIDYzLCAyNjUsIDEyMzEwLCAyNjUsIAotICAgIDEyMzExLCAyNjUsIDgyMzAsIDI2NSwgODIyOSwgMjY1LCA4MjEyLCAyNjUsIDgyMTEsIDI2NSwgOTUsIDI2NSwgOTUsIDI2NSwgCi0gICAgNDAsIDI2NSwgNDEsIDI2NSwgMTIzLCAyNjUsIDEyNSwgMjY1LCAxMjMwOCwgMjY1LCAxMjMwOSwgMjY1LCAxMjMwNCwgMjY1LCAKLSAgICAxMjMwNSwgMjY1LCAxMjI5OCwgMjY1LCAxMjI5OSwgMjY1LCAxMjI5NiwgMjY1LCAxMjI5NywgMjY1LCAxMjMwMCwgMjY1LCAKLSAgICAxMjMwMSwgMjY1LCAxMjMwMiwgMjY1LCAxMjMwMywgMjY1LCA5MSwgMjY1LCA5MywgMjU4LCA4MjU0LCAyNTgsIDgyNTQsIAotICAgIDI1OCwgODI1NCwgMjU4LCA4MjU0LCAyNTgsIDk1LCAyNTgsIDk1LCAyNTgsIDk1LCAyNzEsIDQ0LCAyNzEsIDEyMjg5LCAKLSAgICAyNzEsIDQ2LCAyNzEsIDU5LCAyNzEsIDU4LCAyNzEsIDYzLCAyNzEsIDMzLCAyNzEsIDgyMTIsIDI3MSwgNDAsIDI3MSwgNDEsIAotICAgIDI3MSwgMTIzLCAyNzEsIDEyNSwgMjcxLCAxMjMwOCwgMjcxLCAxMjMwOSwgMjcxLCAzNSwgMjcxLCAzOCwgMjcxLCA0MiwgCi0gICAgMjcxLCA0MywgMjcxLCA0NSwgMjcxLCA2MCwgMjcxLCA2MiwgMjcxLCA2MSwgMjcxLCA5MiwgMjcxLCAzNiwgMjcxLCAzNywgCi0gICAgMjcxLCA2NCwgNTIzLCAzMiwgMTYxMSwgNTI2LCAxNjAwLCAxNjExLCA1MjMsIDMyLCAxNjEyLCA1MjMsIDMyLCAxNjEzLCAKLSAgICA1MjMsIDMyLCAxNjE0LCA1MjYsIDE2MDAsIDE2MTQsIDUyMywgMzIsIDE2MTUsIDUyNiwgMTYwMCwgMTYxNSwgNTIzLCAzMiwgCi0gICAgMTYxNiwgNTI2LCAxNjAwLCAxNjE2LCA1MjMsIDMyLCAxNjE3LCA1MjYsIDE2MDAsIDE2MTcsIDUyMywgMzIsIDE2MTgsIAotICAgIDUyNiwgMTYwMCwgMTYxOCwgMjY3LCAxNTY5LCAyNjcsIDE1NzAsIDI2OCwgMTU3MCwgMjY3LCAxNTcxLCAyNjgsIDE1NzEsIAotICAgIDI2NywgMTU3MiwgMjY4LCAxNTcyLCAyNjcsIDE1NzMsIDI2OCwgMTU3MywgMjY3LCAxNTc0LCAyNjgsIDE1NzQsIDI2OSwgCi0gICAgMTU3NCwgMjcwLCAxNTc0LCAyNjcsIDE1NzUsIDI2OCwgMTU3NSwgMjY3LCAxNTc2LCAyNjgsIDE1NzYsIDI2OSwgMTU3NiwgCi0gICAgMjcwLCAxNTc2LCAyNjcsIDE1NzcsIDI2OCwgMTU3NywgMjY3LCAxNTc4LCAyNjgsIDE1NzgsIDI2OSwgMTU3OCwgMjcwLCAKLSAgICAxNTc4LCAyNjcsIDE1NzksIDI2OCwgMTU3OSwgMjY5LCAxNTc5LCAyNzAsIDE1NzksIDI2NywgMTU4MCwgMjY4LCAxNTgwLCAKLSAgICAyNjksIDE1ODAsIDI3MCwgMTU4MCwgMjY3LCAxNTgxLCAyNjgsIDE1ODEsIDI2OSwgMTU4MSwgMjcwLCAxNTgxLCAyNjcsIAotICAgIDE1ODIsIDI2OCwgMTU4MiwgMjY5LCAxNTgyLCAyNzAsIDE1ODIsIDI2NywgMTU4MywgMjY4LCAxNTgzLCAyNjcsIDE1ODQsIAotICAgIDI2OCwgMTU4NCwgMjY3LCAxNTg1LCAyNjgsIDE1ODUsIDI2NywgMTU4NiwgMjY4LCAxNTg2LCAyNjcsIDE1ODcsIDI2OCwgCi0gICAgMTU4NywgMjY5LCAxNTg3LCAyNzAsIDE1ODcsIDI2NywgMTU4OCwgMjY4LCAxNTg4LCAyNjksIDE1ODgsIDI3MCwgMTU4OCwgCi0gICAgMjY3LCAxNTg5LCAyNjgsIDE1ODksIDI2OSwgMTU4OSwgMjcwLCAxNTg5LCAyNjcsIDE1OTAsIDI2OCwgMTU5MCwgMjY5LCAKLSAgICAxNTkwLCAyNzAsIDE1OTAsIDI2NywgMTU5MSwgMjY4LCAxNTkxLCAyNjksIDE1OTEsIDI3MCwgMTU5MSwgMjY3LCAxNTkyLCAKLSAgICAyNjgsIDE1OTIsIDI2OSwgMTU5MiwgMjcwLCAxNTkyLCAyNjcsIDE1OTMsIDI2OCwgMTU5MywgMjY5LCAxNTkzLCAyNzAsIAotICAgIDE1OTMsIDI2NywgMTU5NCwgMjY4LCAxNTk0LCAyNjksIDE1OTQsIDI3MCwgMTU5NCwgMjY3LCAxNjAxLCAyNjgsIDE2MDEsIAotICAgIDI2OSwgMTYwMSwgMjcwLCAxNjAxLCAyNjcsIDE2MDIsIDI2OCwgMTYwMiwgMjY5LCAxNjAyLCAyNzAsIDE2MDIsIDI2NywgCi0gICAgMTYwMywgMjY4LCAxNjAzLCAyNjksIDE2MDMsIDI3MCwgMTYwMywgMjY3LCAxNjA0LCAyNjgsIDE2MDQsIDI2OSwgMTYwNCwgCi0gICAgMjcwLCAxNjA0LCAyNjcsIDE2MDUsIDI2OCwgMTYwNSwgMjY5LCAxNjA1LCAyNzAsIDE2MDUsIDI2NywgMTYwNiwgMjY4LCAKLSAgICAxNjA2LCAyNjksIDE2MDYsIDI3MCwgMTYwNiwgMjY3LCAxNjA3LCAyNjgsIDE2MDcsIDI2OSwgMTYwNywgMjcwLCAxNjA3LCAKLSAgICAyNjcsIDE2MDgsIDI2OCwgMTYwOCwgMjY3LCAxNjA5LCAyNjgsIDE2MDksIDI2NywgMTYxMCwgMjY4LCAxNjEwLCAyNjksIAotICAgIDE2MTAsIDI3MCwgMTYxMCwgNTIzLCAxNjA0LCAxNTcwLCA1MjQsIDE2MDQsIDE1NzAsIDUyMywgMTYwNCwgMTU3MSwgNTI0LCAKLSAgICAxNjA0LCAxNTcxLCA1MjMsIDE2MDQsIDE1NzMsIDUyNCwgMTYwNCwgMTU3MywgNTIzLCAxNjA0LCAxNTc1LCA1MjQsIDE2MDQsIAotICAgIDE1NzUsIDI2NCwgMzMsIDI2NCwgMzQsIDI2NCwgMzUsIDI2NCwgMzYsIDI2NCwgMzcsIDI2NCwgMzgsIDI2NCwgMzksIDI2NCwgCi0gICAgNDAsIDI2NCwgNDEsIDI2NCwgNDIsIDI2NCwgNDMsIDI2NCwgNDQsIDI2NCwgNDUsIDI2NCwgNDYsIDI2NCwgNDcsIDI2NCwgCi0gICAgNDgsIDI2NCwgNDksIDI2NCwgNTAsIDI2NCwgNTEsIDI2NCwgNTIsIDI2NCwgNTMsIDI2NCwgNTQsIDI2NCwgNTUsIDI2NCwgCi0gICAgNTYsIDI2NCwgNTcsIDI2NCwgNTgsIDI2NCwgNTksIDI2NCwgNjAsIDI2NCwgNjEsIDI2NCwgNjIsIDI2NCwgNjMsIDI2NCwgCi0gICAgNjQsIDI2NCwgNjUsIDI2NCwgNjYsIDI2NCwgNjcsIDI2NCwgNjgsIDI2NCwgNjksIDI2NCwgNzAsIDI2NCwgNzEsIDI2NCwgCi0gICAgNzIsIDI2NCwgNzMsIDI2NCwgNzQsIDI2NCwgNzUsIDI2NCwgNzYsIDI2NCwgNzcsIDI2NCwgNzgsIDI2NCwgNzksIDI2NCwgCi0gICAgODAsIDI2NCwgODEsIDI2NCwgODIsIDI2NCwgODMsIDI2NCwgODQsIDI2NCwgODUsIDI2NCwgODYsIDI2NCwgODcsIDI2NCwgCi0gICAgODgsIDI2NCwgODksIDI2NCwgOTAsIDI2NCwgOTEsIDI2NCwgOTIsIDI2NCwgOTMsIDI2NCwgOTQsIDI2NCwgOTUsIDI2NCwgCi0gICAgOTYsIDI2NCwgOTcsIDI2NCwgOTgsIDI2NCwgOTksIDI2NCwgMTAwLCAyNjQsIDEwMSwgMjY0LCAxMDIsIDI2NCwgMTAzLCAKLSAgICAyNjQsIDEwNCwgMjY0LCAxMDUsIDI2NCwgMTA2LCAyNjQsIDEwNywgMjY0LCAxMDgsIDI2NCwgMTA5LCAyNjQsIDExMCwgCi0gICAgMjY0LCAxMTEsIDI2NCwgMTEyLCAyNjQsIDExMywgMjY0LCAxMTQsIDI2NCwgMTE1LCAyNjQsIDExNiwgMjY0LCAxMTcsIAotICAgIDI2NCwgMTE4LCAyNjQsIDExOSwgMjY0LCAxMjAsIDI2NCwgMTIxLCAyNjQsIDEyMiwgMjY0LCAxMjMsIDI2NCwgMTI0LCAKLSAgICAyNjQsIDEyNSwgMjY0LCAxMjYsIDI2NCwgMTA2MjksIDI2NCwgMTA2MzAsIDI3MiwgMTIyOTAsIDI3MiwgMTIzMDAsIDI3MiwgCi0gICAgMTIzMDEsIDI3MiwgMTIyODksIDI3MiwgMTI1MzksIDI3MiwgMTI1MzAsIDI3MiwgMTI0NDksIDI3MiwgMTI0NTEsIDI3MiwgCi0gICAgMTI0NTMsIDI3MiwgMTI0NTUsIDI3MiwgMTI0NTcsIDI3MiwgMTI1MTUsIDI3MiwgMTI1MTcsIDI3MiwgMTI1MTksIDI3MiwgCi0gICAgMTI0ODMsIDI3MiwgMTI1NDAsIDI3MiwgMTI0NTAsIDI3MiwgMTI0NTIsIDI3MiwgMTI0NTQsIDI3MiwgMTI0NTYsIDI3MiwgCi0gICAgMTI0NTgsIDI3MiwgMTI0NTksIDI3MiwgMTI0NjEsIDI3MiwgMTI0NjMsIDI3MiwgMTI0NjUsIDI3MiwgMTI0NjcsIDI3MiwgCi0gICAgMTI0NjksIDI3MiwgMTI0NzEsIDI3MiwgMTI0NzMsIDI3MiwgMTI0NzUsIDI3MiwgMTI0NzcsIDI3MiwgMTI0NzksIDI3MiwgCi0gICAgMTI0ODEsIDI3MiwgMTI0ODQsIDI3MiwgMTI0ODYsIDI3MiwgMTI0ODgsIDI3MiwgMTI0OTAsIDI3MiwgMTI0OTEsIDI3MiwgCi0gICAgMTI0OTIsIDI3MiwgMTI0OTMsIDI3MiwgMTI0OTQsIDI3MiwgMTI0OTUsIDI3MiwgMTI0OTgsIDI3MiwgMTI1MDEsIDI3MiwgCi0gICAgMTI1MDQsIDI3MiwgMTI1MDcsIDI3MiwgMTI1MTAsIDI3MiwgMTI1MTEsIDI3MiwgMTI1MTIsIDI3MiwgMTI1MTMsIDI3MiwgCi0gICAgMTI1MTQsIDI3MiwgMTI1MTYsIDI3MiwgMTI1MTgsIDI3MiwgMTI1MjAsIDI3MiwgMTI1MjEsIDI3MiwgMTI1MjIsIDI3MiwgCi0gICAgMTI1MjMsIDI3MiwgMTI1MjQsIDI3MiwgMTI1MjUsIDI3MiwgMTI1MjcsIDI3MiwgMTI1MzEsIDI3MiwgMTI0NDEsIDI3MiwgCi0gICAgMTI0NDIsIDI3MiwgMTI2NDQsIDI3MiwgMTI1OTMsIDI3MiwgMTI1OTQsIDI3MiwgMTI1OTUsIDI3MiwgMTI1OTYsIDI3MiwgCi0gICAgMTI1OTcsIDI3MiwgMTI1OTgsIDI3MiwgMTI1OTksIDI3MiwgMTI2MDAsIDI3MiwgMTI2MDEsIDI3MiwgMTI2MDIsIDI3MiwgCi0gICAgMTI2MDMsIDI3MiwgMTI2MDQsIDI3MiwgMTI2MDUsIDI3MiwgMTI2MDYsIDI3MiwgMTI2MDcsIDI3MiwgMTI2MDgsIDI3MiwgCi0gICAgMTI2MDksIDI3MiwgMTI2MTAsIDI3MiwgMTI2MTEsIDI3MiwgMTI2MTIsIDI3MiwgMTI2MTMsIDI3MiwgMTI2MTQsIDI3MiwgCi0gICAgMTI2MTUsIDI3MiwgMTI2MTYsIDI3MiwgMTI2MTcsIDI3MiwgMTI2MTgsIDI3MiwgMTI2MTksIDI3MiwgMTI2MjAsIDI3MiwgCi0gICAgMTI2MjEsIDI3MiwgMTI2MjIsIDI3MiwgMTI2MjMsIDI3MiwgMTI2MjQsIDI3MiwgMTI2MjUsIDI3MiwgMTI2MjYsIDI3MiwgCi0gICAgMTI2MjcsIDI3MiwgMTI2MjgsIDI3MiwgMTI2MjksIDI3MiwgMTI2MzAsIDI3MiwgMTI2MzEsIDI3MiwgMTI2MzIsIDI3MiwgCi0gICAgMTI2MzMsIDI3MiwgMTI2MzQsIDI3MiwgMTI2MzUsIDI3MiwgMTI2MzYsIDI3MiwgMTI2MzcsIDI3MiwgMTI2MzgsIDI3MiwgCi0gICAgMTI2MzksIDI3MiwgMTI2NDAsIDI3MiwgMTI2NDEsIDI3MiwgMTI2NDIsIDI3MiwgMTI2NDMsIDI2NCwgMTYyLCAyNjQsIAotICAgIDE2MywgMjY0LCAxNzIsIDI2NCwgMTc1LCAyNjQsIDE2NiwgMjY0LCAxNjUsIDI2NCwgODM2MSwgMjcyLCA5NDc0LCAyNzIsIAotICAgIDg1OTIsIDI3MiwgODU5MywgMjcyLCA4NTk0LCAyNzIsIDg1OTUsIDI3MiwgOTYzMiwgMjcyLCA5Njc1LCA1MTIsIDY5Nzg1LCAKLSAgICA2OTgxOCwgNTEyLCA2OTc4NywgNjk4MTgsIDUxMiwgNjk3OTcsIDY5ODE4LCA1MTIsIDExOTEyNywgMTE5MTQxLCA1MTIsIAotICAgIDExOTEyOCwgMTE5MTQxLCA1MTIsIDExOTEzNSwgMTE5MTUwLCA1MTIsIDExOTEzNSwgMTE5MTUxLCA1MTIsIDExOTEzNSwgCi0gICAgMTE5MTUyLCA1MTIsIDExOTEzNSwgMTE5MTUzLCA1MTIsIDExOTEzNSwgMTE5MTU0LCA1MTIsIDExOTIyNSwgMTE5MTQxLCAKLSAgICA1MTIsIDExOTIyNiwgMTE5MTQxLCA1MTIsIDExOTIyNywgMTE5MTUwLCA1MTIsIDExOTIyOCwgMTE5MTUwLCA1MTIsIAotICAgIDExOTIyNywgMTE5MTUxLCA1MTIsIDExOTIyOCwgMTE5MTUxLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIDY4LCAKLSAgICAyNjIsIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAKLSAgICAyNjIsIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIDg0LCAKLSAgICAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAKLSAgICAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDQsIDI2MiwgMTA1LCAyNjIsIAotICAgIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTExLCAyNjIsIDExMiwgMjYyLCAKLSAgICAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAxMTksIDI2MiwgCi0gICAgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIDI2MiwgNjgsIDI2MiwgNjksIAotICAgIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzIsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIDI2MiwgNzcsIAotICAgIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIDI2MiwgODEsIDI2MiwgODIsIDI2MiwgODMsIDI2MiwgODQsIDI2MiwgODUsIAotICAgIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgOTksIAotICAgIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNSwgMjYyLCAxMDYsIDI2MiwgMTA3LCAKKyAgICAyNjA4NSwgNzc4LCAxMDMsIDk3LCAxMDgsIDI1OSwgNDI4NjMsIDI1OSwgMjk0LCAyNTksIDMzOSwgMjU2LCAzNTkxMiwgCisgICAgMjU2LCAyNjM1NiwgMjU2LCAzNjU1NCwgMjU2LCAzNjA0MCwgMjU2LCAyODM2OSwgMjU2LCAyMDAxOCwgMjU2LCAyMTQ3NywgCisgICAgMjU2LCA0MDg2MCwgMjU2LCA0MDg2MCwgMjU2LCAyMjg2NSwgMjU2LCAzNzMyOSwgMjU2LCAyMTg5NSwgMjU2LCAyMjg1NiwgCisgICAgMjU2LCAyNTA3OCwgMjU2LCAzMDMxMywgMjU2LCAzMjY0NSwgMjU2LCAzNDM2NywgMjU2LCAzNDc0NiwgMjU2LCAzNTA2NCwgCisgICAgMjU2LCAzNzAwNywgMjU2LCAyNzEzOCwgMjU2LCAyNzkzMSwgMjU2LCAyODg4OSwgMjU2LCAyOTY2MiwgMjU2LCAzMzg1MywgCisgICAgMjU2LCAzNzIyNiwgMjU2LCAzOTQwOSwgMjU2LCAyMDA5OCwgMjU2LCAyMTM2NSwgMjU2LCAyNzM5NiwgMjU2LCAyOTIxMSwgCisgICAgMjU2LCAzNDM0OSwgMjU2LCA0MDQ3OCwgMjU2LCAyMzg4OCwgMjU2LCAyODY1MSwgMjU2LCAzNDI1MywgMjU2LCAzNTE3MiwgCisgICAgMjU2LCAyNTI4OSwgMjU2LCAzMzI0MCwgMjU2LCAzNDg0NywgMjU2LCAyNDI2NiwgMjU2LCAyNjM5MSwgMjU2LCAyODAxMCwgCisgICAgMjU2LCAyOTQzNiwgMjU2LCAzNzA3MCwgMjU2LCAyMDM1OCwgMjU2LCAyMDkxOSwgMjU2LCAyMTIxNCwgMjU2LCAyNTc5NiwgCisgICAgMjU2LCAyNzM0NywgMjU2LCAyOTIwMCwgMjU2LCAzMDQzOSwgMjU2LCAzMjc2OSwgMjU2LCAzNDMxMCwgMjU2LCAzNDM5NiwgCisgICAgMjU2LCAzNjMzNSwgMjU2LCAzODcwNiwgMjU2LCAzOTc5MSwgMjU2LCA0MDQ0MiwgMjU2LCAzMDg2MCwgMjU2LCAzMTEwMywgCisgICAgMjU2LCAzMjE2MCwgMjU2LCAzMzczNywgMjU2LCAzNzYzNiwgMjU2LCA0MDU3NSwgMjU2LCAzNTU0MiwgMjU2LCAyMjc1MSwgCisgICAgMjU2LCAyNDMyNCwgMjU2LCAzMTg0MCwgMjU2LCAzMjg5NCwgMjU2LCAyOTI4MiwgMjU2LCAzMDkyMiwgMjU2LCAzNjAzNCwgCisgICAgMjU2LCAzODY0NywgMjU2LCAyMjc0NCwgMjU2LCAyMzY1MCwgMjU2LCAyNzE1NSwgMjU2LCAyODEyMiwgMjU2LCAyODQzMSwgCisgICAgMjU2LCAzMjA0NywgMjU2LCAzMjMxMSwgMjU2LCAzODQ3NSwgMjU2LCAyMTIwMiwgMjU2LCAzMjkwNywgMjU2LCAyMDk1NiwgCisgICAgMjU2LCAyMDk0MCwgMjU2LCAzMTI2MCwgMjU2LCAzMjE5MCwgMjU2LCAzMzc3NywgMjU2LCAzODUxNywgMjU2LCAzNTcxMiwgCisgICAgMjU2LCAyNTI5NSwgMjU2LCAyNzEzOCwgMjU2LCAzNTU4MiwgMjU2LCAyMDAyNSwgMjU2LCAyMzUyNywgMjU2LCAyNDU5NCwgCisgICAgMjU2LCAyOTU3NSwgMjU2LCAzMDA2NCwgMjU2LCAyMTI3MSwgMjU2LCAzMDk3MSwgMjU2LCAyMDQxNSwgMjU2LCAyNDQ4OSwgCisgICAgMjU2LCAxOTk4MSwgMjU2LCAyNzg1MiwgMjU2LCAyNTk3NiwgMjU2LCAzMjAzNCwgMjU2LCAyMTQ0MywgMjU2LCAyMjYyMiwgCisgICAgMjU2LCAzMDQ2NSwgMjU2LCAzMzg2NSwgMjU2LCAzNTQ5OCwgMjU2LCAyNzU3OCwgMjU2LCAzNjc4NCwgMjU2LCAyNzc4NCwgCisgICAgMjU2LCAyNTM0MiwgMjU2LCAzMzUwOSwgMjU2LCAyNTUwNCwgMjU2LCAzMDA1MywgMjU2LCAyMDE0MiwgMjU2LCAyMDg0MSwgCisgICAgMjU2LCAyMDkzNywgMjU2LCAyNjc1MywgMjU2LCAzMTk3NSwgMjU2LCAzMzM5MSwgMjU2LCAzNTUzOCwgMjU2LCAzNzMyNywgCisgICAgMjU2LCAyMTIzNywgMjU2LCAyMTU3MCwgMjU2LCAyMjg5OSwgMjU2LCAyNDMwMCwgMjU2LCAyNjA1MywgMjU2LCAyODY3MCwgCisgICAgMjU2LCAzMTAxOCwgMjU2LCAzODMxNywgMjU2LCAzOTUzMCwgMjU2LCA0MDU5OSwgMjU2LCA0MDY1NCwgMjU2LCAyMTE0NywgCisgICAgMjU2LCAyNjMxMCwgMjU2LCAyNzUxMSwgMjU2LCAzNjcwNiwgMjU2LCAyNDE4MCwgMjU2LCAyNDk3NiwgMjU2LCAyNTA4OCwgCisgICAgMjU2LCAyNTc1NCwgMjU2LCAyODQ1MSwgMjU2LCAyOTAwMSwgMjU2LCAyOTgzMywgMjU2LCAzMTE3OCwgMjU2LCAzMjI0NCwgCisgICAgMjU2LCAzMjg3OSwgMjU2LCAzNjY0NiwgMjU2LCAzNDAzMCwgMjU2LCAzNjg5OSwgMjU2LCAzNzcwNiwgMjU2LCAyMTAxNSwgCisgICAgMjU2LCAyMTE1NSwgMjU2LCAyMTY5MywgMjU2LCAyODg3MiwgMjU2LCAzNTAxMCwgMjU2LCAzNTQ5OCwgMjU2LCAyNDI2NSwgCisgICAgMjU2LCAyNDU2NSwgMjU2LCAyNTQ2NywgMjU2LCAyNzU2NiwgMjU2LCAzMTgwNiwgMjU2LCAyOTU1NywgMjU2LCAyMDE5NiwgCisgICAgMjU2LCAyMjI2NSwgMjU2LCAyMzUyNywgMjU2LCAyMzk5NCwgMjU2LCAyNDYwNCwgMjU2LCAyOTYxOCwgMjU2LCAyOTgwMSwgCisgICAgMjU2LCAzMjY2NiwgMjU2LCAzMjgzOCwgMjU2LCAzNzQyOCwgMjU2LCAzODY0NiwgMjU2LCAzODcyOCwgMjU2LCAzODkzNiwgCisgICAgMjU2LCAyMDM2MywgMjU2LCAzMTE1MCwgMjU2LCAzNzMwMCwgMjU2LCAzODU4NCwgMjU2LCAyNDgwMSwgMjU2LCAyMDEwMiwgCisgICAgMjU2LCAyMDY5OCwgMjU2LCAyMzUzNCwgMjU2LCAyMzYxNSwgMjU2LCAyNjAwOSwgMjU2LCAyNzEzOCwgMjU2LCAyOTEzNCwgCisgICAgMjU2LCAzMDI3NCwgMjU2LCAzNDA0NCwgMjU2LCAzNjk4OCwgMjU2LCA0MDg0NSwgMjU2LCAyNjI0OCwgMjU2LCAzODQ0NiwgCisgICAgMjU2LCAyMTEyOSwgMjU2LCAyNjQ5MSwgMjU2LCAyNjYxMSwgMjU2LCAyNzk2OSwgMjU2LCAyODMxNiwgMjU2LCAyOTcwNSwgCisgICAgMjU2LCAzMDA0MSwgMjU2LCAzMDgyNywgMjU2LCAzMjAxNiwgMjU2LCAzOTAwNiwgMjU2LCAyMDg0NSwgMjU2LCAyNTEzNCwgCisgICAgMjU2LCAzODUyMCwgMjU2LCAyMDUyMywgMjU2LCAyMzgzMywgMjU2LCAyODEzOCwgMjU2LCAzNjY1MCwgMjU2LCAyNDQ1OSwgCisgICAgMjU2LCAyNDkwMCwgMjU2LCAyNjY0NywgMjU2LCAyOTU3NSwgMjU2LCAzODUzNCwgMjU2LCAyMTAzMywgMjU2LCAyMTUxOSwgCisgICAgMjU2LCAyMzY1MywgMjU2LCAyNjEzMSwgMjU2LCAyNjQ0NiwgMjU2LCAyNjc5MiwgMjU2LCAyNzg3NywgMjU2LCAyOTcwMiwgCisgICAgMjU2LCAzMDE3OCwgMjU2LCAzMjYzMywgMjU2LCAzNTAyMywgMjU2LCAzNTA0MSwgMjU2LCAzNzMyNCwgMjU2LCAzODYyNiwgCisgICAgMjU2LCAyMTMxMSwgMjU2LCAyODM0NiwgMjU2LCAyMTUzMywgMjU2LCAyOTEzNiwgMjU2LCAyOTg0OCwgMjU2LCAzNDI5OCwgCisgICAgMjU2LCAzODU2MywgMjU2LCA0MDAyMywgMjU2LCA0MDYwNywgMjU2LCAyNjUxOSwgMjU2LCAyODEwNywgMjU2LCAzMzI1NiwgCisgICAgMjU2LCAzMTQzNSwgMjU2LCAzMTUyMCwgMjU2LCAzMTg5MCwgMjU2LCAyOTM3NiwgMjU2LCAyODgyNSwgMjU2LCAzNTY3MiwgCisgICAgMjU2LCAyMDE2MCwgMjU2LCAzMzU5MCwgMjU2LCAyMTA1MCwgMjU2LCAyMDk5OSwgMjU2LCAyNDIzMCwgMjU2LCAyNTI5OSwgCisgICAgMjU2LCAzMTk1OCwgMjU2LCAyMzQyOSwgMjU2LCAyNzkzNCwgMjU2LCAyNjI5MiwgMjU2LCAzNjY2NywgMjU2LCAzNDg5MiwgCisgICAgMjU2LCAzODQ3NywgMjU2LCAzNTIxMSwgMjU2LCAyNDI3NSwgMjU2LCAyMDgwMCwgMjU2LCAyMTk1MiwgMjU2LCAyMjYxOCwgCisgICAgMjU2LCAyNjIyOCwgMjU2LCAyMDk1OCwgMjU2LCAyOTQ4MiwgMjU2LCAzMDQxMCwgMjU2LCAzMTAzNiwgMjU2LCAzMTA3MCwgCisgICAgMjU2LCAzMTA3NywgMjU2LCAzMTExOSwgMjU2LCAzODc0MiwgMjU2LCAzMTkzNCwgMjU2LCAzMjcwMSwgMjU2LCAzNDMyMiwgCisgICAgMjU2LCAzNTU3NiwgMjU2LCAzNjkyMCwgMjU2LCAzNzExNywgMjU2LCAzOTE1MSwgMjU2LCAzOTE2NCwgMjU2LCAzOTIwOCwgCisgICAgMjU2LCA0MDM3MiwgMjU2LCAzNzA4NiwgMjU2LCAzODU4MywgMjU2LCAyMDM5OCwgMjU2LCAyMDcxMSwgMjU2LCAyMDgxMywgCisgICAgMjU2LCAyMTE5MywgMjU2LCAyMTIyMCwgMjU2LCAyMTMyOSwgMjU2LCAyMTkxNywgMjU2LCAyMjAyMiwgMjU2LCAyMjEyMCwgCisgICAgMjU2LCAyMjU5MiwgMjU2LCAyMjY5NiwgMjU2LCAyMzY1MiwgMjU2LCAyMzY2MiwgMjU2LCAyNDcyNCwgMjU2LCAyNDkzNiwgCisgICAgMjU2LCAyNDk3NCwgMjU2LCAyNTA3NCwgMjU2LCAyNTkzNSwgMjU2LCAyNjA4MiwgMjU2LCAyNjI1NywgMjU2LCAyNjc1NywgCisgICAgMjU2LCAyODAyMywgMjU2LCAyODE4NiwgMjU2LCAyODQ1MCwgMjU2LCAyOTAzOCwgMjU2LCAyOTIyNywgMjU2LCAyOTczMCwgCisgICAgMjU2LCAzMDg2NSwgMjU2LCAzMTAzOCwgMjU2LCAzMTA0OSwgMjU2LCAzMTA0OCwgMjU2LCAzMTA1NiwgMjU2LCAzMTA2MiwgCisgICAgMjU2LCAzMTA2OSwgMjU2LCAzMTExNywgMjU2LCAzMTExOCwgMjU2LCAzMTI5NiwgMjU2LCAzMTM2MSwgMjU2LCAzMTY4MCwgCisgICAgMjU2LCAzMjI0NCwgMjU2LCAzMjI2NSwgMjU2LCAzMjMyMSwgMjU2LCAzMjYyNiwgMjU2LCAzMjc3MywgMjU2LCAzMzI2MSwgCisgICAgMjU2LCAzMzQwMSwgMjU2LCAzMzQwMSwgMjU2LCAzMzg3OSwgMjU2LCAzNTA4OCwgMjU2LCAzNTIyMiwgMjU2LCAzNTU4NSwgCisgICAgMjU2LCAzNTY0MSwgMjU2LCAzNjA1MSwgMjU2LCAzNjEwNCwgMjU2LCAzNjc5MCwgMjU2LCAzNjkyMCwgMjU2LCAzODYyNywgCisgICAgMjU2LCAzODkxMSwgMjU2LCAzODk3MSwgMjU2LCAyNDY5MywgMjU2LCAxNDgyMDYsIDI1NiwgMzMzMDQsIDI1NiwgMjAwMDYsIAorICAgIDI1NiwgMjA5MTcsIDI1NiwgMjA4NDAsIDI1NiwgMjAzNTIsIDI1NiwgMjA4MDUsIDI1NiwgMjA4NjQsIDI1NiwgMjExOTEsIAorICAgIDI1NiwgMjEyNDIsIDI1NiwgMjE5MTcsIDI1NiwgMjE4NDUsIDI1NiwgMjE5MTMsIDI1NiwgMjE5ODYsIDI1NiwgMjI2MTgsIAorICAgIDI1NiwgMjI3MDcsIDI1NiwgMjI4NTIsIDI1NiwgMjI4NjgsIDI1NiwgMjMxMzgsIDI1NiwgMjMzMzYsIDI1NiwgMjQyNzQsIAorICAgIDI1NiwgMjQyODEsIDI1NiwgMjQ0MjUsIDI1NiwgMjQ0OTMsIDI1NiwgMjQ3OTIsIDI1NiwgMjQ5MTAsIDI1NiwgMjQ4NDAsIAorICAgIDI1NiwgMjQ5NzQsIDI1NiwgMjQ5MjgsIDI1NiwgMjUwNzQsIDI1NiwgMjUxNDAsIDI1NiwgMjU1NDAsIDI1NiwgMjU2MjgsIAorICAgIDI1NiwgMjU2ODIsIDI1NiwgMjU5NDIsIDI1NiwgMjYyMjgsIDI1NiwgMjYzOTEsIDI1NiwgMjYzOTUsIDI1NiwgMjY0NTQsIAorICAgIDI1NiwgMjc1MTMsIDI1NiwgMjc1NzgsIDI1NiwgMjc5NjksIDI1NiwgMjgzNzksIDI1NiwgMjgzNjMsIDI1NiwgMjg0NTAsIAorICAgIDI1NiwgMjg3MDIsIDI1NiwgMjkwMzgsIDI1NiwgMzA2MzEsIDI1NiwgMjkyMzcsIDI1NiwgMjkzNTksIDI1NiwgMjk0ODIsIAorICAgIDI1NiwgMjk4MDksIDI1NiwgMjk5NTgsIDI1NiwgMzAwMTEsIDI1NiwgMzAyMzcsIDI1NiwgMzAyMzksIDI1NiwgMzA0MTAsIAorICAgIDI1NiwgMzA0MjcsIDI1NiwgMzA0NTIsIDI1NiwgMzA1MzgsIDI1NiwgMzA1MjgsIDI1NiwgMzA5MjQsIDI1NiwgMzE0MDksIAorICAgIDI1NiwgMzE2ODAsIDI1NiwgMzE4NjcsIDI1NiwgMzIwOTEsIDI1NiwgMzIyNDQsIDI1NiwgMzI1NzQsIDI1NiwgMzI3NzMsIAorICAgIDI1NiwgMzM2MTgsIDI1NiwgMzM3NzUsIDI1NiwgMzQ2ODEsIDI1NiwgMzUxMzcsIDI1NiwgMzUyMDYsIDI1NiwgMzUyMjIsIAorICAgIDI1NiwgMzU1MTksIDI1NiwgMzU1NzYsIDI1NiwgMzU1MzEsIDI1NiwgMzU1ODUsIDI1NiwgMzU1ODIsIDI1NiwgMzU1NjUsIAorICAgIDI1NiwgMzU2NDEsIDI1NiwgMzU3MjIsIDI1NiwgMzYxMDQsIDI1NiwgMzY2NjQsIDI1NiwgMzY5NzgsIDI1NiwgMzcyNzMsIAorICAgIDI1NiwgMzc0OTQsIDI1NiwgMzg1MjQsIDI1NiwgMzg2MjcsIDI1NiwgMzg3NDIsIDI1NiwgMzg4NzUsIDI1NiwgMzg5MTEsIAorICAgIDI1NiwgMzg5MjMsIDI1NiwgMzg5NzEsIDI1NiwgMzk2OTgsIDI1NiwgNDA4NjAsIDI1NiwgMTQxMzg2LCAyNTYsIDE0MTM4MCwgCisgICAgMjU2LCAxNDQzNDEsIDI1NiwgMTUyNjEsIDI1NiwgMTY0MDgsIDI1NiwgMTY0NDEsIDI1NiwgMTUyMTM3LCAyNTYsIAorICAgIDE1NDgzMiwgMjU2LCAxNjM1MzksIDI1NiwgNDA3NzEsIDI1NiwgNDA4NDYsIDUxNCwgMTAyLCAxMDIsIDUxNCwgMTAyLCAKKyAgICAxMDUsIDUxNCwgMTAyLCAxMDgsIDc3MCwgMTAyLCAxMDIsIDEwNSwgNzcwLCAxMDIsIDEwMiwgMTA4LCA1MTQsIDM4MywgCisgICAgMTE2LCA1MTQsIDExNSwgMTE2LCA1MTQsIDEzOTYsIDEzOTgsIDUxNCwgMTM5NiwgMTM4MSwgNTE0LCAxMzk2LCAxMzg3LCAKKyAgICA1MTQsIDE0MDYsIDEzOTgsIDUxNCwgMTM5NiwgMTM4OSwgNTEyLCAxNDk3LCAxNDYwLCA1MTIsIDE1MjIsIDE0NjMsIDI2MiwgCisgICAgMTUwNiwgMjYyLCAxNDg4LCAyNjIsIDE0OTEsIDI2MiwgMTQ5MiwgMjYyLCAxNDk5LCAyNjIsIDE1MDAsIDI2MiwgMTUwMSwgCisgICAgMjYyLCAxNTEyLCAyNjIsIDE1MTQsIDI2MiwgNDMsIDUxMiwgMTUxMywgMTQ3MywgNTEyLCAxNTEzLCAxNDc0LCA1MTIsIAorICAgIDY0MzI5LCAxNDczLCA1MTIsIDY0MzI5LCAxNDc0LCA1MTIsIDE0ODgsIDE0NjMsIDUxMiwgMTQ4OCwgMTQ2NCwgNTEyLCAKKyAgICAxNDg4LCAxNDY4LCA1MTIsIDE0ODksIDE0NjgsIDUxMiwgMTQ5MCwgMTQ2OCwgNTEyLCAxNDkxLCAxNDY4LCA1MTIsIDE0OTIsIAorICAgIDE0NjgsIDUxMiwgMTQ5MywgMTQ2OCwgNTEyLCAxNDk0LCAxNDY4LCA1MTIsIDE0OTYsIDE0NjgsIDUxMiwgMTQ5NywgMTQ2OCwgCisgICAgNTEyLCAxNDk4LCAxNDY4LCA1MTIsIDE0OTksIDE0NjgsIDUxMiwgMTUwMCwgMTQ2OCwgNTEyLCAxNTAyLCAxNDY4LCA1MTIsIAorICAgIDE1MDQsIDE0NjgsIDUxMiwgMTUwNSwgMTQ2OCwgNTEyLCAxNTA3LCAxNDY4LCA1MTIsIDE1MDgsIDE0NjgsIDUxMiwgMTUxMCwgCisgICAgMTQ2OCwgNTEyLCAxNTExLCAxNDY4LCA1MTIsIDE1MTIsIDE0NjgsIDUxMiwgMTUxMywgMTQ2OCwgNTEyLCAxNTE0LCAxNDY4LCAKKyAgICA1MTIsIDE0OTMsIDE0NjUsIDUxMiwgMTQ4OSwgMTQ3MSwgNTEyLCAxNDk5LCAxNDcxLCA1MTIsIDE1MDgsIDE0NzEsIDUxNCwgCisgICAgMTQ4OCwgMTUwMCwgMjY3LCAxNjQ5LCAyNjgsIDE2NDksIDI2NywgMTY1OSwgMjY4LCAxNjU5LCAyNjksIDE2NTksIDI3MCwgCisgICAgMTY1OSwgMjY3LCAxNjYyLCAyNjgsIDE2NjIsIDI2OSwgMTY2MiwgMjcwLCAxNjYyLCAyNjcsIDE2NjQsIDI2OCwgMTY2NCwgCisgICAgMjY5LCAxNjY0LCAyNzAsIDE2NjQsIDI2NywgMTY1OCwgMjY4LCAxNjU4LCAyNjksIDE2NTgsIDI3MCwgMTY1OCwgMjY3LCAKKyAgICAxNjYzLCAyNjgsIDE2NjMsIDI2OSwgMTY2MywgMjcwLCAxNjYzLCAyNjcsIDE2NTcsIDI2OCwgMTY1NywgMjY5LCAxNjU3LCAKKyAgICAyNzAsIDE2NTcsIDI2NywgMTcwMCwgMjY4LCAxNzAwLCAyNjksIDE3MDAsIDI3MCwgMTcwMCwgMjY3LCAxNzAyLCAyNjgsIAorICAgIDE3MDIsIDI2OSwgMTcwMiwgMjcwLCAxNzAyLCAyNjcsIDE2NjgsIDI2OCwgMTY2OCwgMjY5LCAxNjY4LCAyNzAsIDE2NjgsIAorICAgIDI2NywgMTY2NywgMjY4LCAxNjY3LCAyNjksIDE2NjcsIDI3MCwgMTY2NywgMjY3LCAxNjcwLCAyNjgsIDE2NzAsIDI2OSwgCisgICAgMTY3MCwgMjcwLCAxNjcwLCAyNjcsIDE2NzEsIDI2OCwgMTY3MSwgMjY5LCAxNjcxLCAyNzAsIDE2NzEsIDI2NywgMTY3NywgCisgICAgMjY4LCAxNjc3LCAyNjcsIDE2NzYsIDI2OCwgMTY3NiwgMjY3LCAxNjc4LCAyNjgsIDE2NzgsIDI2NywgMTY3MiwgMjY4LCAKKyAgICAxNjcyLCAyNjcsIDE2ODgsIDI2OCwgMTY4OCwgMjY3LCAxNjgxLCAyNjgsIDE2ODEsIDI2NywgMTcwNSwgMjY4LCAxNzA1LCAKKyAgICAyNjksIDE3MDUsIDI3MCwgMTcwNSwgMjY3LCAxNzExLCAyNjgsIDE3MTEsIDI2OSwgMTcxMSwgMjcwLCAxNzExLCAyNjcsIAorICAgIDE3MTUsIDI2OCwgMTcxNSwgMjY5LCAxNzE1LCAyNzAsIDE3MTUsIDI2NywgMTcxMywgMjY4LCAxNzEzLCAyNjksIDE3MTMsIAorICAgIDI3MCwgMTcxMywgMjY3LCAxNzIyLCAyNjgsIDE3MjIsIDI2NywgMTcyMywgMjY4LCAxNzIzLCAyNjksIDE3MjMsIDI3MCwgCisgICAgMTcyMywgMjY3LCAxNzI4LCAyNjgsIDE3MjgsIDI2NywgMTcyOSwgMjY4LCAxNzI5LCAyNjksIDE3MjksIDI3MCwgMTcyOSwgCisgICAgMjY3LCAxNzI2LCAyNjgsIDE3MjYsIDI2OSwgMTcyNiwgMjcwLCAxNzI2LCAyNjcsIDE3NDYsIDI2OCwgMTc0NiwgMjY3LCAKKyAgICAxNzQ3LCAyNjgsIDE3NDcsIDI2NywgMTcwOSwgMjY4LCAxNzA5LCAyNjksIDE3MDksIDI3MCwgMTcwOSwgMjY3LCAxNzM1LCAKKyAgICAyNjgsIDE3MzUsIDI2NywgMTczNCwgMjY4LCAxNzM0LCAyNjcsIDE3MzYsIDI2OCwgMTczNiwgMjY3LCAxNjU1LCAyNjcsIAorICAgIDE3MzksIDI2OCwgMTczOSwgMjY3LCAxNzMzLCAyNjgsIDE3MzMsIDI2NywgMTczNywgMjY4LCAxNzM3LCAyNjcsIDE3NDQsIAorICAgIDI2OCwgMTc0NCwgMjY5LCAxNzQ0LCAyNzAsIDE3NDQsIDI2OSwgMTYwOSwgMjcwLCAxNjA5LCA1MjMsIDE1NzQsIDE1NzUsIAorICAgIDUyNCwgMTU3NCwgMTU3NSwgNTIzLCAxNTc0LCAxNzQ5LCA1MjQsIDE1NzQsIDE3NDksIDUyMywgMTU3NCwgMTYwOCwgNTI0LCAKKyAgICAxNTc0LCAxNjA4LCA1MjMsIDE1NzQsIDE3MzUsIDUyNCwgMTU3NCwgMTczNSwgNTIzLCAxNTc0LCAxNzM0LCA1MjQsIDE1NzQsIAorICAgIDE3MzQsIDUyMywgMTU3NCwgMTczNiwgNTI0LCAxNTc0LCAxNzM2LCA1MjMsIDE1NzQsIDE3NDQsIDUyNCwgMTU3NCwgMTc0NCwgCisgICAgNTI1LCAxNTc0LCAxNzQ0LCA1MjMsIDE1NzQsIDE2MDksIDUyNCwgMTU3NCwgMTYwOSwgNTI1LCAxNTc0LCAxNjA5LCAyNjcsIAorICAgIDE3NDAsIDI2OCwgMTc0MCwgMjY5LCAxNzQwLCAyNzAsIDE3NDAsIDUyMywgMTU3NCwgMTU4MCwgNTIzLCAxNTc0LCAxNTgxLCAKKyAgICA1MjMsIDE1NzQsIDE2MDUsIDUyMywgMTU3NCwgMTYwOSwgNTIzLCAxNTc0LCAxNjEwLCA1MjMsIDE1NzYsIDE1ODAsIDUyMywgCisgICAgMTU3NiwgMTU4MSwgNTIzLCAxNTc2LCAxNTgyLCA1MjMsIDE1NzYsIDE2MDUsIDUyMywgMTU3NiwgMTYwOSwgNTIzLCAxNTc2LCAKKyAgICAxNjEwLCA1MjMsIDE1NzgsIDE1ODAsIDUyMywgMTU3OCwgMTU4MSwgNTIzLCAxNTc4LCAxNTgyLCA1MjMsIDE1NzgsIDE2MDUsIAorICAgIDUyMywgMTU3OCwgMTYwOSwgNTIzLCAxNTc4LCAxNjEwLCA1MjMsIDE1NzksIDE1ODAsIDUyMywgMTU3OSwgMTYwNSwgNTIzLCAKKyAgICAxNTc5LCAxNjA5LCA1MjMsIDE1NzksIDE2MTAsIDUyMywgMTU4MCwgMTU4MSwgNTIzLCAxNTgwLCAxNjA1LCA1MjMsIDE1ODEsIAorICAgIDE1ODAsIDUyMywgMTU4MSwgMTYwNSwgNTIzLCAxNTgyLCAxNTgwLCA1MjMsIDE1ODIsIDE1ODEsIDUyMywgMTU4MiwgMTYwNSwgCisgICAgNTIzLCAxNTg3LCAxNTgwLCA1MjMsIDE1ODcsIDE1ODEsIDUyMywgMTU4NywgMTU4MiwgNTIzLCAxNTg3LCAxNjA1LCA1MjMsIAorICAgIDE1ODksIDE1ODEsIDUyMywgMTU4OSwgMTYwNSwgNTIzLCAxNTkwLCAxNTgwLCA1MjMsIDE1OTAsIDE1ODEsIDUyMywgMTU5MCwgCisgICAgMTU4MiwgNTIzLCAxNTkwLCAxNjA1LCA1MjMsIDE1OTEsIDE1ODEsIDUyMywgMTU5MSwgMTYwNSwgNTIzLCAxNTkyLCAxNjA1LCAKKyAgICA1MjMsIDE1OTMsIDE1ODAsIDUyMywgMTU5MywgMTYwNSwgNTIzLCAxNTk0LCAxNTgwLCA1MjMsIDE1OTQsIDE2MDUsIDUyMywgCisgICAgMTYwMSwgMTU4MCwgNTIzLCAxNjAxLCAxNTgxLCA1MjMsIDE2MDEsIDE1ODIsIDUyMywgMTYwMSwgMTYwNSwgNTIzLCAxNjAxLCAKKyAgICAxNjA5LCA1MjMsIDE2MDEsIDE2MTAsIDUyMywgMTYwMiwgMTU4MSwgNTIzLCAxNjAyLCAxNjA1LCA1MjMsIDE2MDIsIDE2MDksIAorICAgIDUyMywgMTYwMiwgMTYxMCwgNTIzLCAxNjAzLCAxNTc1LCA1MjMsIDE2MDMsIDE1ODAsIDUyMywgMTYwMywgMTU4MSwgNTIzLCAKKyAgICAxNjAzLCAxNTgyLCA1MjMsIDE2MDMsIDE2MDQsIDUyMywgMTYwMywgMTYwNSwgNTIzLCAxNjAzLCAxNjA5LCA1MjMsIDE2MDMsIAorICAgIDE2MTAsIDUyMywgMTYwNCwgMTU4MCwgNTIzLCAxNjA0LCAxNTgxLCA1MjMsIDE2MDQsIDE1ODIsIDUyMywgMTYwNCwgMTYwNSwgCisgICAgNTIzLCAxNjA0LCAxNjA5LCA1MjMsIDE2MDQsIDE2MTAsIDUyMywgMTYwNSwgMTU4MCwgNTIzLCAxNjA1LCAxNTgxLCA1MjMsIAorICAgIDE2MDUsIDE1ODIsIDUyMywgMTYwNSwgMTYwNSwgNTIzLCAxNjA1LCAxNjA5LCA1MjMsIDE2MDUsIDE2MTAsIDUyMywgMTYwNiwgCisgICAgMTU4MCwgNTIzLCAxNjA2LCAxNTgxLCA1MjMsIDE2MDYsIDE1ODIsIDUyMywgMTYwNiwgMTYwNSwgNTIzLCAxNjA2LCAxNjA5LCAKKyAgICA1MjMsIDE2MDYsIDE2MTAsIDUyMywgMTYwNywgMTU4MCwgNTIzLCAxNjA3LCAxNjA1LCA1MjMsIDE2MDcsIDE2MDksIDUyMywgCisgICAgMTYwNywgMTYxMCwgNTIzLCAxNjEwLCAxNTgwLCA1MjMsIDE2MTAsIDE1ODEsIDUyMywgMTYxMCwgMTU4MiwgNTIzLCAxNjEwLCAKKyAgICAxNjA1LCA1MjMsIDE2MTAsIDE2MDksIDUyMywgMTYxMCwgMTYxMCwgNTIzLCAxNTg0LCAxNjQ4LCA1MjMsIDE1ODUsIDE2NDgsIAorICAgIDUyMywgMTYwOSwgMTY0OCwgNzc5LCAzMiwgMTYxMiwgMTYxNywgNzc5LCAzMiwgMTYxMywgMTYxNywgNzc5LCAzMiwgMTYxNCwgCisgICAgMTYxNywgNzc5LCAzMiwgMTYxNSwgMTYxNywgNzc5LCAzMiwgMTYxNiwgMTYxNywgNzc5LCAzMiwgMTYxNywgMTY0OCwgNTI0LCAKKyAgICAxNTc0LCAxNTg1LCA1MjQsIDE1NzQsIDE1ODYsIDUyNCwgMTU3NCwgMTYwNSwgNTI0LCAxNTc0LCAxNjA2LCA1MjQsIDE1NzQsIAorICAgIDE2MDksIDUyNCwgMTU3NCwgMTYxMCwgNTI0LCAxNTc2LCAxNTg1LCA1MjQsIDE1NzYsIDE1ODYsIDUyNCwgMTU3NiwgMTYwNSwgCisgICAgNTI0LCAxNTc2LCAxNjA2LCA1MjQsIDE1NzYsIDE2MDksIDUyNCwgMTU3NiwgMTYxMCwgNTI0LCAxNTc4LCAxNTg1LCA1MjQsIAorICAgIDE1NzgsIDE1ODYsIDUyNCwgMTU3OCwgMTYwNSwgNTI0LCAxNTc4LCAxNjA2LCA1MjQsIDE1NzgsIDE2MDksIDUyNCwgMTU3OCwgCisgICAgMTYxMCwgNTI0LCAxNTc5LCAxNTg1LCA1MjQsIDE1NzksIDE1ODYsIDUyNCwgMTU3OSwgMTYwNSwgNTI0LCAxNTc5LCAxNjA2LCAKKyAgICA1MjQsIDE1NzksIDE2MDksIDUyNCwgMTU3OSwgMTYxMCwgNTI0LCAxNjAxLCAxNjA5LCA1MjQsIDE2MDEsIDE2MTAsIDUyNCwgCisgICAgMTYwMiwgMTYwOSwgNTI0LCAxNjAyLCAxNjEwLCA1MjQsIDE2MDMsIDE1NzUsIDUyNCwgMTYwMywgMTYwNCwgNTI0LCAxNjAzLCAKKyAgICAxNjA1LCA1MjQsIDE2MDMsIDE2MDksIDUyNCwgMTYwMywgMTYxMCwgNTI0LCAxNjA0LCAxNjA1LCA1MjQsIDE2MDQsIDE2MDksIAorICAgIDUyNCwgMTYwNCwgMTYxMCwgNTI0LCAxNjA1LCAxNTc1LCA1MjQsIDE2MDUsIDE2MDUsIDUyNCwgMTYwNiwgMTU4NSwgNTI0LCAKKyAgICAxNjA2LCAxNTg2LCA1MjQsIDE2MDYsIDE2MDUsIDUyNCwgMTYwNiwgMTYwNiwgNTI0LCAxNjA2LCAxNjA5LCA1MjQsIDE2MDYsIAorICAgIDE2MTAsIDUyNCwgMTYwOSwgMTY0OCwgNTI0LCAxNjEwLCAxNTg1LCA1MjQsIDE2MTAsIDE1ODYsIDUyNCwgMTYxMCwgMTYwNSwgCisgICAgNTI0LCAxNjEwLCAxNjA2LCA1MjQsIDE2MTAsIDE2MDksIDUyNCwgMTYxMCwgMTYxMCwgNTI1LCAxNTc0LCAxNTgwLCA1MjUsIAorICAgIDE1NzQsIDE1ODEsIDUyNSwgMTU3NCwgMTU4MiwgNTI1LCAxNTc0LCAxNjA1LCA1MjUsIDE1NzQsIDE2MDcsIDUyNSwgMTU3NiwgCisgICAgMTU4MCwgNTI1LCAxNTc2LCAxNTgxLCA1MjUsIDE1NzYsIDE1ODIsIDUyNSwgMTU3NiwgMTYwNSwgNTI1LCAxNTc2LCAxNjA3LCAKKyAgICA1MjUsIDE1NzgsIDE1ODAsIDUyNSwgMTU3OCwgMTU4MSwgNTI1LCAxNTc4LCAxNTgyLCA1MjUsIDE1NzgsIDE2MDUsIDUyNSwgCisgICAgMTU3OCwgMTYwNywgNTI1LCAxNTc5LCAxNjA1LCA1MjUsIDE1ODAsIDE1ODEsIDUyNSwgMTU4MCwgMTYwNSwgNTI1LCAxNTgxLCAKKyAgICAxNTgwLCA1MjUsIDE1ODEsIDE2MDUsIDUyNSwgMTU4MiwgMTU4MCwgNTI1LCAxNTgyLCAxNjA1LCA1MjUsIDE1ODcsIDE1ODAsIAorICAgIDUyNSwgMTU4NywgMTU4MSwgNTI1LCAxNTg3LCAxNTgyLCA1MjUsIDE1ODcsIDE2MDUsIDUyNSwgMTU4OSwgMTU4MSwgNTI1LCAKKyAgICAxNTg5LCAxNTgyLCA1MjUsIDE1ODksIDE2MDUsIDUyNSwgMTU5MCwgMTU4MCwgNTI1LCAxNTkwLCAxNTgxLCA1MjUsIDE1OTAsIAorICAgIDE1ODIsIDUyNSwgMTU5MCwgMTYwNSwgNTI1LCAxNTkxLCAxNTgxLCA1MjUsIDE1OTIsIDE2MDUsIDUyNSwgMTU5MywgMTU4MCwgCisgICAgNTI1LCAxNTkzLCAxNjA1LCA1MjUsIDE1OTQsIDE1ODAsIDUyNSwgMTU5NCwgMTYwNSwgNTI1LCAxNjAxLCAxNTgwLCA1MjUsIAorICAgIDE2MDEsIDE1ODEsIDUyNSwgMTYwMSwgMTU4MiwgNTI1LCAxNjAxLCAxNjA1LCA1MjUsIDE2MDIsIDE1ODEsIDUyNSwgMTYwMiwgCisgICAgMTYwNSwgNTI1LCAxNjAzLCAxNTgwLCA1MjUsIDE2MDMsIDE1ODEsIDUyNSwgMTYwMywgMTU4MiwgNTI1LCAxNjAzLCAxNjA0LCAKKyAgICA1MjUsIDE2MDMsIDE2MDUsIDUyNSwgMTYwNCwgMTU4MCwgNTI1LCAxNjA0LCAxNTgxLCA1MjUsIDE2MDQsIDE1ODIsIDUyNSwgCisgICAgMTYwNCwgMTYwNSwgNTI1LCAxNjA0LCAxNjA3LCA1MjUsIDE2MDUsIDE1ODAsIDUyNSwgMTYwNSwgMTU4MSwgNTI1LCAxNjA1LCAKKyAgICAxNTgyLCA1MjUsIDE2MDUsIDE2MDUsIDUyNSwgMTYwNiwgMTU4MCwgNTI1LCAxNjA2LCAxNTgxLCA1MjUsIDE2MDYsIDE1ODIsIAorICAgIDUyNSwgMTYwNiwgMTYwNSwgNTI1LCAxNjA2LCAxNjA3LCA1MjUsIDE2MDcsIDE1ODAsIDUyNSwgMTYwNywgMTYwNSwgNTI1LCAKKyAgICAxNjA3LCAxNjQ4LCA1MjUsIDE2MTAsIDE1ODAsIDUyNSwgMTYxMCwgMTU4MSwgNTI1LCAxNjEwLCAxNTgyLCA1MjUsIDE2MTAsIAorICAgIDE2MDUsIDUyNSwgMTYxMCwgMTYwNywgNTI2LCAxNTc0LCAxNjA1LCA1MjYsIDE1NzQsIDE2MDcsIDUyNiwgMTU3NiwgMTYwNSwgCisgICAgNTI2LCAxNTc2LCAxNjA3LCA1MjYsIDE1NzgsIDE2MDUsIDUyNiwgMTU3OCwgMTYwNywgNTI2LCAxNTc5LCAxNjA1LCA1MjYsIAorICAgIDE1NzksIDE2MDcsIDUyNiwgMTU4NywgMTYwNSwgNTI2LCAxNTg3LCAxNjA3LCA1MjYsIDE1ODgsIDE2MDUsIDUyNiwgMTU4OCwgCisgICAgMTYwNywgNTI2LCAxNjAzLCAxNjA0LCA1MjYsIDE2MDMsIDE2MDUsIDUyNiwgMTYwNCwgMTYwNSwgNTI2LCAxNjA2LCAxNjA1LCAKKyAgICA1MjYsIDE2MDYsIDE2MDcsIDUyNiwgMTYxMCwgMTYwNSwgNTI2LCAxNjEwLCAxNjA3LCA3ODIsIDE2MDAsIDE2MTQsIDE2MTcsIAorICAgIDc4MiwgMTYwMCwgMTYxNSwgMTYxNywgNzgyLCAxNjAwLCAxNjE2LCAxNjE3LCA1MjMsIDE1OTEsIDE2MDksIDUyMywgMTU5MSwgCisgICAgMTYxMCwgNTIzLCAxNTkzLCAxNjA5LCA1MjMsIDE1OTMsIDE2MTAsIDUyMywgMTU5NCwgMTYwOSwgNTIzLCAxNTk0LCAxNjEwLCAKKyAgICA1MjMsIDE1ODcsIDE2MDksIDUyMywgMTU4NywgMTYxMCwgNTIzLCAxNTg4LCAxNjA5LCA1MjMsIDE1ODgsIDE2MTAsIDUyMywgCisgICAgMTU4MSwgMTYwOSwgNTIzLCAxNTgxLCAxNjEwLCA1MjMsIDE1ODAsIDE2MDksIDUyMywgMTU4MCwgMTYxMCwgNTIzLCAxNTgyLCAKKyAgICAxNjA5LCA1MjMsIDE1ODIsIDE2MTAsIDUyMywgMTU4OSwgMTYwOSwgNTIzLCAxNTg5LCAxNjEwLCA1MjMsIDE1OTAsIDE2MDksIAorICAgIDUyMywgMTU5MCwgMTYxMCwgNTIzLCAxNTg4LCAxNTgwLCA1MjMsIDE1ODgsIDE1ODEsIDUyMywgMTU4OCwgMTU4MiwgNTIzLCAKKyAgICAxNTg4LCAxNjA1LCA1MjMsIDE1ODgsIDE1ODUsIDUyMywgMTU4NywgMTU4NSwgNTIzLCAxNTg5LCAxNTg1LCA1MjMsIDE1OTAsIAorICAgIDE1ODUsIDUyNCwgMTU5MSwgMTYwOSwgNTI0LCAxNTkxLCAxNjEwLCA1MjQsIDE1OTMsIDE2MDksIDUyNCwgMTU5MywgMTYxMCwgCisgICAgNTI0LCAxNTk0LCAxNjA5LCA1MjQsIDE1OTQsIDE2MTAsIDUyNCwgMTU4NywgMTYwOSwgNTI0LCAxNTg3LCAxNjEwLCA1MjQsIAorICAgIDE1ODgsIDE2MDksIDUyNCwgMTU4OCwgMTYxMCwgNTI0LCAxNTgxLCAxNjA5LCA1MjQsIDE1ODEsIDE2MTAsIDUyNCwgMTU4MCwgCisgICAgMTYwOSwgNTI0LCAxNTgwLCAxNjEwLCA1MjQsIDE1ODIsIDE2MDksIDUyNCwgMTU4MiwgMTYxMCwgNTI0LCAxNTg5LCAxNjA5LCAKKyAgICA1MjQsIDE1ODksIDE2MTAsIDUyNCwgMTU5MCwgMTYwOSwgNTI0LCAxNTkwLCAxNjEwLCA1MjQsIDE1ODgsIDE1ODAsIDUyNCwgCisgICAgMTU4OCwgMTU4MSwgNTI0LCAxNTg4LCAxNTgyLCA1MjQsIDE1ODgsIDE2MDUsIDUyNCwgMTU4OCwgMTU4NSwgNTI0LCAxNTg3LCAKKyAgICAxNTg1LCA1MjQsIDE1ODksIDE1ODUsIDUyNCwgMTU5MCwgMTU4NSwgNTI1LCAxNTg4LCAxNTgwLCA1MjUsIDE1ODgsIDE1ODEsIAorICAgIDUyNSwgMTU4OCwgMTU4MiwgNTI1LCAxNTg4LCAxNjA1LCA1MjUsIDE1ODcsIDE2MDcsIDUyNSwgMTU4OCwgMTYwNywgNTI1LCAKKyAgICAxNTkxLCAxNjA1LCA1MjYsIDE1ODcsIDE1ODAsIDUyNiwgMTU4NywgMTU4MSwgNTI2LCAxNTg3LCAxNTgyLCA1MjYsIDE1ODgsIAorICAgIDE1ODAsIDUyNiwgMTU4OCwgMTU4MSwgNTI2LCAxNTg4LCAxNTgyLCA1MjYsIDE1OTEsIDE2MDUsIDUyNiwgMTU5MiwgMTYwNSwgCisgICAgNTI0LCAxNTc1LCAxNjExLCA1MjMsIDE1NzUsIDE2MTEsIDc4MSwgMTU3OCwgMTU4MCwgMTYwNSwgNzgwLCAxNTc4LCAxNTgxLCAKKyAgICAxNTgwLCA3ODEsIDE1NzgsIDE1ODEsIDE1ODAsIDc4MSwgMTU3OCwgMTU4MSwgMTYwNSwgNzgxLCAxNTc4LCAxNTgyLCAKKyAgICAxNjA1LCA3ODEsIDE1NzgsIDE2MDUsIDE1ODAsIDc4MSwgMTU3OCwgMTYwNSwgMTU4MSwgNzgxLCAxNTc4LCAxNjA1LCAKKyAgICAxNTgyLCA3ODAsIDE1ODAsIDE2MDUsIDE1ODEsIDc4MSwgMTU4MCwgMTYwNSwgMTU4MSwgNzgwLCAxNTgxLCAxNjA1LCAKKyAgICAxNjEwLCA3ODAsIDE1ODEsIDE2MDUsIDE2MDksIDc4MSwgMTU4NywgMTU4MSwgMTU4MCwgNzgxLCAxNTg3LCAxNTgwLCAKKyAgICAxNTgxLCA3ODAsIDE1ODcsIDE1ODAsIDE2MDksIDc4MCwgMTU4NywgMTYwNSwgMTU4MSwgNzgxLCAxNTg3LCAxNjA1LCAKKyAgICAxNTgxLCA3ODEsIDE1ODcsIDE2MDUsIDE1ODAsIDc4MCwgMTU4NywgMTYwNSwgMTYwNSwgNzgxLCAxNTg3LCAxNjA1LCAKKyAgICAxNjA1LCA3ODAsIDE1ODksIDE1ODEsIDE1ODEsIDc4MSwgMTU4OSwgMTU4MSwgMTU4MSwgNzgwLCAxNTg5LCAxNjA1LCAKKyAgICAxNjA1LCA3ODAsIDE1ODgsIDE1ODEsIDE2MDUsIDc4MSwgMTU4OCwgMTU4MSwgMTYwNSwgNzgwLCAxNTg4LCAxNTgwLCAKKyAgICAxNjEwLCA3ODAsIDE1ODgsIDE2MDUsIDE1ODIsIDc4MSwgMTU4OCwgMTYwNSwgMTU4MiwgNzgwLCAxNTg4LCAxNjA1LCAKKyAgICAxNjA1LCA3ODEsIDE1ODgsIDE2MDUsIDE2MDUsIDc4MCwgMTU5MCwgMTU4MSwgMTYwOSwgNzgwLCAxNTkwLCAxNTgyLCAKKyAgICAxNjA1LCA3ODEsIDE1OTAsIDE1ODIsIDE2MDUsIDc4MCwgMTU5MSwgMTYwNSwgMTU4MSwgNzgxLCAxNTkxLCAxNjA1LCAKKyAgICAxNTgxLCA3ODEsIDE1OTEsIDE2MDUsIDE2MDUsIDc4MCwgMTU5MSwgMTYwNSwgMTYxMCwgNzgwLCAxNTkzLCAxNTgwLCAKKyAgICAxNjA1LCA3ODAsIDE1OTMsIDE2MDUsIDE2MDUsIDc4MSwgMTU5MywgMTYwNSwgMTYwNSwgNzgwLCAxNTkzLCAxNjA1LCAKKyAgICAxNjA5LCA3ODAsIDE1OTQsIDE2MDUsIDE2MDUsIDc4MCwgMTU5NCwgMTYwNSwgMTYxMCwgNzgwLCAxNTk0LCAxNjA1LCAKKyAgICAxNjA5LCA3ODAsIDE2MDEsIDE1ODIsIDE2MDUsIDc4MSwgMTYwMSwgMTU4MiwgMTYwNSwgNzgwLCAxNjAyLCAxNjA1LCAKKyAgICAxNTgxLCA3ODAsIDE2MDIsIDE2MDUsIDE2MDUsIDc4MCwgMTYwNCwgMTU4MSwgMTYwNSwgNzgwLCAxNjA0LCAxNTgxLCAKKyAgICAxNjEwLCA3ODAsIDE2MDQsIDE1ODEsIDE2MDksIDc4MSwgMTYwNCwgMTU4MCwgMTU4MCwgNzgwLCAxNjA0LCAxNTgwLCAKKyAgICAxNTgwLCA3ODAsIDE2MDQsIDE1ODIsIDE2MDUsIDc4MSwgMTYwNCwgMTU4MiwgMTYwNSwgNzgwLCAxNjA0LCAxNjA1LCAKKyAgICAxNTgxLCA3ODEsIDE2MDQsIDE2MDUsIDE1ODEsIDc4MSwgMTYwNSwgMTU4MSwgMTU4MCwgNzgxLCAxNjA1LCAxNTgxLCAKKyAgICAxNjA1LCA3ODAsIDE2MDUsIDE1ODEsIDE2MTAsIDc4MSwgMTYwNSwgMTU4MCwgMTU4MSwgNzgxLCAxNjA1LCAxNTgwLCAKKyAgICAxNjA1LCA3ODEsIDE2MDUsIDE1ODIsIDE1ODAsIDc4MSwgMTYwNSwgMTU4MiwgMTYwNSwgNzgxLCAxNjA1LCAxNTgwLCAKKyAgICAxNTgyLCA3ODEsIDE2MDcsIDE2MDUsIDE1ODAsIDc4MSwgMTYwNywgMTYwNSwgMTYwNSwgNzgxLCAxNjA2LCAxNTgxLCAKKyAgICAxNjA1LCA3ODAsIDE2MDYsIDE1ODEsIDE2MDksIDc4MCwgMTYwNiwgMTU4MCwgMTYwNSwgNzgxLCAxNjA2LCAxNTgwLCAKKyAgICAxNjA1LCA3ODAsIDE2MDYsIDE1ODAsIDE2MDksIDc4MCwgMTYwNiwgMTYwNSwgMTYxMCwgNzgwLCAxNjA2LCAxNjA1LCAKKyAgICAxNjA5LCA3ODAsIDE2MTAsIDE2MDUsIDE2MDUsIDc4MSwgMTYxMCwgMTYwNSwgMTYwNSwgNzgwLCAxNTc2LCAxNTgyLCAKKyAgICAxNjEwLCA3ODAsIDE1NzgsIDE1ODAsIDE2MTAsIDc4MCwgMTU3OCwgMTU4MCwgMTYwOSwgNzgwLCAxNTc4LCAxNTgyLCAKKyAgICAxNjEwLCA3ODAsIDE1NzgsIDE1ODIsIDE2MDksIDc4MCwgMTU3OCwgMTYwNSwgMTYxMCwgNzgwLCAxNTc4LCAxNjA1LCAKKyAgICAxNjA5LCA3ODAsIDE1ODAsIDE2MDUsIDE2MTAsIDc4MCwgMTU4MCwgMTU4MSwgMTYwOSwgNzgwLCAxNTgwLCAxNjA1LCAKKyAgICAxNjA5LCA3ODAsIDE1ODcsIDE1ODIsIDE2MDksIDc4MCwgMTU4OSwgMTU4MSwgMTYxMCwgNzgwLCAxNTg4LCAxNTgxLCAKKyAgICAxNjEwLCA3ODAsIDE1OTAsIDE1ODEsIDE2MTAsIDc4MCwgMTYwNCwgMTU4MCwgMTYxMCwgNzgwLCAxNjA0LCAxNjA1LCAKKyAgICAxNjEwLCA3ODAsIDE2MTAsIDE1ODEsIDE2MTAsIDc4MCwgMTYxMCwgMTU4MCwgMTYxMCwgNzgwLCAxNjEwLCAxNjA1LCAKKyAgICAxNjEwLCA3ODAsIDE2MDUsIDE2MDUsIDE2MTAsIDc4MCwgMTYwMiwgMTYwNSwgMTYxMCwgNzgwLCAxNjA2LCAxNTgxLCAKKyAgICAxNjEwLCA3ODEsIDE2MDIsIDE2MDUsIDE1ODEsIDc4MSwgMTYwNCwgMTU4MSwgMTYwNSwgNzgwLCAxNTkzLCAxNjA1LCAKKyAgICAxNjEwLCA3ODAsIDE2MDMsIDE2MDUsIDE2MTAsIDc4MSwgMTYwNiwgMTU4MCwgMTU4MSwgNzgwLCAxNjA1LCAxNTgyLCAKKyAgICAxNjEwLCA3ODEsIDE2MDQsIDE1ODAsIDE2MDUsIDc4MCwgMTYwMywgMTYwNSwgMTYwNSwgNzgwLCAxNjA0LCAxNTgwLCAKKyAgICAxNjA1LCA3ODAsIDE2MDYsIDE1ODAsIDE1ODEsIDc4MCwgMTU4MCwgMTU4MSwgMTYxMCwgNzgwLCAxNTgxLCAxNTgwLCAKKyAgICAxNjEwLCA3ODAsIDE2MDUsIDE1ODAsIDE2MTAsIDc4MCwgMTYwMSwgMTYwNSwgMTYxMCwgNzgwLCAxNTc2LCAxNTgxLCAKKyAgICAxNjEwLCA3ODEsIDE2MDMsIDE2MDUsIDE2MDUsIDc4MSwgMTU5MywgMTU4MCwgMTYwNSwgNzgxLCAxNTg5LCAxNjA1LCAKKyAgICAxNjA1LCA3ODAsIDE1ODcsIDE1ODIsIDE2MTAsIDc4MCwgMTYwNiwgMTU4MCwgMTYxMCwgNzc5LCAxNTg5LCAxNjA0LCAKKyAgICAxNzQ2LCA3NzksIDE2MDIsIDE2MDQsIDE3NDYsIDEwMzUsIDE1NzUsIDE2MDQsIDE2MDQsIDE2MDcsIDEwMzUsIDE1NzUsIAorICAgIDE2MDMsIDE1NzYsIDE1ODUsIDEwMzUsIDE2MDUsIDE1ODEsIDE2MDUsIDE1ODMsIDEwMzUsIDE1ODksIDE2MDQsIDE1OTMsIAorICAgIDE2MDUsIDEwMzUsIDE1ODUsIDE1ODcsIDE2MDgsIDE2MDQsIDEwMzUsIDE1OTMsIDE2MDQsIDE2MTAsIDE2MDcsIDEwMzUsIAorICAgIDE2MDgsIDE1ODcsIDE2MDQsIDE2MDUsIDc3OSwgMTU4OSwgMTYwNCwgMTYwOSwgNDYxOSwgMTU4OSwgMTYwNCwgMTYwOSwgCisgICAgMzIsIDE1NzUsIDE2MDQsIDE2MDQsIDE2MDcsIDMyLCAxNTkzLCAxNjA0LCAxNjEwLCAxNjA3LCAzMiwgMTYwOCwgMTU4NywgCisgICAgMTYwNCwgMTYwNSwgMjA1OSwgMTU4MCwgMTYwNCwgMzIsIDE1ODAsIDE2MDQsIDE1NzUsIDE2MDQsIDE2MDcsIDEwMzUsIAorICAgIDE1ODUsIDE3NDAsIDE1NzUsIDE2MDQsIDI2NSwgNDQsIDI2NSwgMTIyODksIDI2NSwgMTIyOTAsIDI2NSwgNTgsIDI2NSwgCisgICAgNTksIDI2NSwgMzMsIDI2NSwgNjMsIDI2NSwgMTIzMTAsIDI2NSwgMTIzMTEsIDI2NSwgODIzMCwgMjY1LCA4MjI5LCAyNjUsIAorICAgIDgyMTIsIDI2NSwgODIxMSwgMjY1LCA5NSwgMjY1LCA5NSwgMjY1LCA0MCwgMjY1LCA0MSwgMjY1LCAxMjMsIDI2NSwgMTI1LCAKKyAgICAyNjUsIDEyMzA4LCAyNjUsIDEyMzA5LCAyNjUsIDEyMzA0LCAyNjUsIDEyMzA1LCAyNjUsIDEyMjk4LCAyNjUsIDEyMjk5LCAKKyAgICAyNjUsIDEyMjk2LCAyNjUsIDEyMjk3LCAyNjUsIDEyMzAwLCAyNjUsIDEyMzAxLCAyNjUsIDEyMzAyLCAyNjUsIDEyMzAzLCAKKyAgICAyNjUsIDkxLCAyNjUsIDkzLCAyNTgsIDgyNTQsIDI1OCwgODI1NCwgMjU4LCA4MjU0LCAyNTgsIDgyNTQsIDI1OCwgOTUsIAorICAgIDI1OCwgOTUsIDI1OCwgOTUsIDI3MSwgNDQsIDI3MSwgMTIyODksIDI3MSwgNDYsIDI3MSwgNTksIDI3MSwgNTgsIDI3MSwgCisgICAgNjMsIDI3MSwgMzMsIDI3MSwgODIxMiwgMjcxLCA0MCwgMjcxLCA0MSwgMjcxLCAxMjMsIDI3MSwgMTI1LCAyNzEsIDEyMzA4LCAKKyAgICAyNzEsIDEyMzA5LCAyNzEsIDM1LCAyNzEsIDM4LCAyNzEsIDQyLCAyNzEsIDQzLCAyNzEsIDQ1LCAyNzEsIDYwLCAyNzEsIAorICAgIDYyLCAyNzEsIDYxLCAyNzEsIDkyLCAyNzEsIDM2LCAyNzEsIDM3LCAyNzEsIDY0LCA1MjMsIDMyLCAxNjExLCA1MjYsIAorICAgIDE2MDAsIDE2MTEsIDUyMywgMzIsIDE2MTIsIDUyMywgMzIsIDE2MTMsIDUyMywgMzIsIDE2MTQsIDUyNiwgMTYwMCwgMTYxNCwgCisgICAgNTIzLCAzMiwgMTYxNSwgNTI2LCAxNjAwLCAxNjE1LCA1MjMsIDMyLCAxNjE2LCA1MjYsIDE2MDAsIDE2MTYsIDUyMywgMzIsIAorICAgIDE2MTcsIDUyNiwgMTYwMCwgMTYxNywgNTIzLCAzMiwgMTYxOCwgNTI2LCAxNjAwLCAxNjE4LCAyNjcsIDE1NjksIDI2NywgCisgICAgMTU3MCwgMjY4LCAxNTcwLCAyNjcsIDE1NzEsIDI2OCwgMTU3MSwgMjY3LCAxNTcyLCAyNjgsIDE1NzIsIDI2NywgMTU3MywgCisgICAgMjY4LCAxNTczLCAyNjcsIDE1NzQsIDI2OCwgMTU3NCwgMjY5LCAxNTc0LCAyNzAsIDE1NzQsIDI2NywgMTU3NSwgMjY4LCAKKyAgICAxNTc1LCAyNjcsIDE1NzYsIDI2OCwgMTU3NiwgMjY5LCAxNTc2LCAyNzAsIDE1NzYsIDI2NywgMTU3NywgMjY4LCAxNTc3LCAKKyAgICAyNjcsIDE1NzgsIDI2OCwgMTU3OCwgMjY5LCAxNTc4LCAyNzAsIDE1NzgsIDI2NywgMTU3OSwgMjY4LCAxNTc5LCAyNjksIAorICAgIDE1NzksIDI3MCwgMTU3OSwgMjY3LCAxNTgwLCAyNjgsIDE1ODAsIDI2OSwgMTU4MCwgMjcwLCAxNTgwLCAyNjcsIDE1ODEsIAorICAgIDI2OCwgMTU4MSwgMjY5LCAxNTgxLCAyNzAsIDE1ODEsIDI2NywgMTU4MiwgMjY4LCAxNTgyLCAyNjksIDE1ODIsIDI3MCwgCisgICAgMTU4MiwgMjY3LCAxNTgzLCAyNjgsIDE1ODMsIDI2NywgMTU4NCwgMjY4LCAxNTg0LCAyNjcsIDE1ODUsIDI2OCwgMTU4NSwgCisgICAgMjY3LCAxNTg2LCAyNjgsIDE1ODYsIDI2NywgMTU4NywgMjY4LCAxNTg3LCAyNjksIDE1ODcsIDI3MCwgMTU4NywgMjY3LCAKKyAgICAxNTg4LCAyNjgsIDE1ODgsIDI2OSwgMTU4OCwgMjcwLCAxNTg4LCAyNjcsIDE1ODksIDI2OCwgMTU4OSwgMjY5LCAxNTg5LCAKKyAgICAyNzAsIDE1ODksIDI2NywgMTU5MCwgMjY4LCAxNTkwLCAyNjksIDE1OTAsIDI3MCwgMTU5MCwgMjY3LCAxNTkxLCAyNjgsIAorICAgIDE1OTEsIDI2OSwgMTU5MSwgMjcwLCAxNTkxLCAyNjcsIDE1OTIsIDI2OCwgMTU5MiwgMjY5LCAxNTkyLCAyNzAsIDE1OTIsIAorICAgIDI2NywgMTU5MywgMjY4LCAxNTkzLCAyNjksIDE1OTMsIDI3MCwgMTU5MywgMjY3LCAxNTk0LCAyNjgsIDE1OTQsIDI2OSwgCisgICAgMTU5NCwgMjcwLCAxNTk0LCAyNjcsIDE2MDEsIDI2OCwgMTYwMSwgMjY5LCAxNjAxLCAyNzAsIDE2MDEsIDI2NywgMTYwMiwgCisgICAgMjY4LCAxNjAyLCAyNjksIDE2MDIsIDI3MCwgMTYwMiwgMjY3LCAxNjAzLCAyNjgsIDE2MDMsIDI2OSwgMTYwMywgMjcwLCAKKyAgICAxNjAzLCAyNjcsIDE2MDQsIDI2OCwgMTYwNCwgMjY5LCAxNjA0LCAyNzAsIDE2MDQsIDI2NywgMTYwNSwgMjY4LCAxNjA1LCAKKyAgICAyNjksIDE2MDUsIDI3MCwgMTYwNSwgMjY3LCAxNjA2LCAyNjgsIDE2MDYsIDI2OSwgMTYwNiwgMjcwLCAxNjA2LCAyNjcsIAorICAgIDE2MDcsIDI2OCwgMTYwNywgMjY5LCAxNjA3LCAyNzAsIDE2MDcsIDI2NywgMTYwOCwgMjY4LCAxNjA4LCAyNjcsIDE2MDksIAorICAgIDI2OCwgMTYwOSwgMjY3LCAxNjEwLCAyNjgsIDE2MTAsIDI2OSwgMTYxMCwgMjcwLCAxNjEwLCA1MjMsIDE2MDQsIDE1NzAsIAorICAgIDUyNCwgMTYwNCwgMTU3MCwgNTIzLCAxNjA0LCAxNTcxLCA1MjQsIDE2MDQsIDE1NzEsIDUyMywgMTYwNCwgMTU3MywgNTI0LCAKKyAgICAxNjA0LCAxNTczLCA1MjMsIDE2MDQsIDE1NzUsIDUyNCwgMTYwNCwgMTU3NSwgMjY0LCAzMywgMjY0LCAzNCwgMjY0LCAzNSwgCisgICAgMjY0LCAzNiwgMjY0LCAzNywgMjY0LCAzOCwgMjY0LCAzOSwgMjY0LCA0MCwgMjY0LCA0MSwgMjY0LCA0MiwgMjY0LCA0MywgCisgICAgMjY0LCA0NCwgMjY0LCA0NSwgMjY0LCA0NiwgMjY0LCA0NywgMjY0LCA0OCwgMjY0LCA0OSwgMjY0LCA1MCwgMjY0LCA1MSwgCisgICAgMjY0LCA1MiwgMjY0LCA1MywgMjY0LCA1NCwgMjY0LCA1NSwgMjY0LCA1NiwgMjY0LCA1NywgMjY0LCA1OCwgMjY0LCA1OSwgCisgICAgMjY0LCA2MCwgMjY0LCA2MSwgMjY0LCA2MiwgMjY0LCA2MywgMjY0LCA2NCwgMjY0LCA2NSwgMjY0LCA2NiwgMjY0LCA2NywgCisgICAgMjY0LCA2OCwgMjY0LCA2OSwgMjY0LCA3MCwgMjY0LCA3MSwgMjY0LCA3MiwgMjY0LCA3MywgMjY0LCA3NCwgMjY0LCA3NSwgCisgICAgMjY0LCA3NiwgMjY0LCA3NywgMjY0LCA3OCwgMjY0LCA3OSwgMjY0LCA4MCwgMjY0LCA4MSwgMjY0LCA4MiwgMjY0LCA4MywgCisgICAgMjY0LCA4NCwgMjY0LCA4NSwgMjY0LCA4NiwgMjY0LCA4NywgMjY0LCA4OCwgMjY0LCA4OSwgMjY0LCA5MCwgMjY0LCA5MSwgCisgICAgMjY0LCA5MiwgMjY0LCA5MywgMjY0LCA5NCwgMjY0LCA5NSwgMjY0LCA5NiwgMjY0LCA5NywgMjY0LCA5OCwgMjY0LCA5OSwgCisgICAgMjY0LCAxMDAsIDI2NCwgMTAxLCAyNjQsIDEwMiwgMjY0LCAxMDMsIDI2NCwgMTA0LCAyNjQsIDEwNSwgMjY0LCAxMDYsIAorICAgIDI2NCwgMTA3LCAyNjQsIDEwOCwgMjY0LCAxMDksIDI2NCwgMTEwLCAyNjQsIDExMSwgMjY0LCAxMTIsIDI2NCwgMTEzLCAKKyAgICAyNjQsIDExNCwgMjY0LCAxMTUsIDI2NCwgMTE2LCAyNjQsIDExNywgMjY0LCAxMTgsIDI2NCwgMTE5LCAyNjQsIDEyMCwgCisgICAgMjY0LCAxMjEsIDI2NCwgMTIyLCAyNjQsIDEyMywgMjY0LCAxMjQsIDI2NCwgMTI1LCAyNjQsIDEyNiwgMjY0LCAxMDYyOSwgCisgICAgMjY0LCAxMDYzMCwgMjcyLCAxMjI5MCwgMjcyLCAxMjMwMCwgMjcyLCAxMjMwMSwgMjcyLCAxMjI4OSwgMjcyLCAxMjUzOSwgCisgICAgMjcyLCAxMjUzMCwgMjcyLCAxMjQ0OSwgMjcyLCAxMjQ1MSwgMjcyLCAxMjQ1MywgMjcyLCAxMjQ1NSwgMjcyLCAxMjQ1NywgCisgICAgMjcyLCAxMjUxNSwgMjcyLCAxMjUxNywgMjcyLCAxMjUxOSwgMjcyLCAxMjQ4MywgMjcyLCAxMjU0MCwgMjcyLCAxMjQ1MCwgCisgICAgMjcyLCAxMjQ1MiwgMjcyLCAxMjQ1NCwgMjcyLCAxMjQ1NiwgMjcyLCAxMjQ1OCwgMjcyLCAxMjQ1OSwgMjcyLCAxMjQ2MSwgCisgICAgMjcyLCAxMjQ2MywgMjcyLCAxMjQ2NSwgMjcyLCAxMjQ2NywgMjcyLCAxMjQ2OSwgMjcyLCAxMjQ3MSwgMjcyLCAxMjQ3MywgCisgICAgMjcyLCAxMjQ3NSwgMjcyLCAxMjQ3NywgMjcyLCAxMjQ3OSwgMjcyLCAxMjQ4MSwgMjcyLCAxMjQ4NCwgMjcyLCAxMjQ4NiwgCisgICAgMjcyLCAxMjQ4OCwgMjcyLCAxMjQ5MCwgMjcyLCAxMjQ5MSwgMjcyLCAxMjQ5MiwgMjcyLCAxMjQ5MywgMjcyLCAxMjQ5NCwgCisgICAgMjcyLCAxMjQ5NSwgMjcyLCAxMjQ5OCwgMjcyLCAxMjUwMSwgMjcyLCAxMjUwNCwgMjcyLCAxMjUwNywgMjcyLCAxMjUxMCwgCisgICAgMjcyLCAxMjUxMSwgMjcyLCAxMjUxMiwgMjcyLCAxMjUxMywgMjcyLCAxMjUxNCwgMjcyLCAxMjUxNiwgMjcyLCAxMjUxOCwgCisgICAgMjcyLCAxMjUyMCwgMjcyLCAxMjUyMSwgMjcyLCAxMjUyMiwgMjcyLCAxMjUyMywgMjcyLCAxMjUyNCwgMjcyLCAxMjUyNSwgCisgICAgMjcyLCAxMjUyNywgMjcyLCAxMjUzMSwgMjcyLCAxMjQ0MSwgMjcyLCAxMjQ0MiwgMjcyLCAxMjY0NCwgMjcyLCAxMjU5MywgCisgICAgMjcyLCAxMjU5NCwgMjcyLCAxMjU5NSwgMjcyLCAxMjU5NiwgMjcyLCAxMjU5NywgMjcyLCAxMjU5OCwgMjcyLCAxMjU5OSwgCisgICAgMjcyLCAxMjYwMCwgMjcyLCAxMjYwMSwgMjcyLCAxMjYwMiwgMjcyLCAxMjYwMywgMjcyLCAxMjYwNCwgMjcyLCAxMjYwNSwgCisgICAgMjcyLCAxMjYwNiwgMjcyLCAxMjYwNywgMjcyLCAxMjYwOCwgMjcyLCAxMjYwOSwgMjcyLCAxMjYxMCwgMjcyLCAxMjYxMSwgCisgICAgMjcyLCAxMjYxMiwgMjcyLCAxMjYxMywgMjcyLCAxMjYxNCwgMjcyLCAxMjYxNSwgMjcyLCAxMjYxNiwgMjcyLCAxMjYxNywgCisgICAgMjcyLCAxMjYxOCwgMjcyLCAxMjYxOSwgMjcyLCAxMjYyMCwgMjcyLCAxMjYyMSwgMjcyLCAxMjYyMiwgMjcyLCAxMjYyMywgCisgICAgMjcyLCAxMjYyNCwgMjcyLCAxMjYyNSwgMjcyLCAxMjYyNiwgMjcyLCAxMjYyNywgMjcyLCAxMjYyOCwgMjcyLCAxMjYyOSwgCisgICAgMjcyLCAxMjYzMCwgMjcyLCAxMjYzMSwgMjcyLCAxMjYzMiwgMjcyLCAxMjYzMywgMjcyLCAxMjYzNCwgMjcyLCAxMjYzNSwgCisgICAgMjcyLCAxMjYzNiwgMjcyLCAxMjYzNywgMjcyLCAxMjYzOCwgMjcyLCAxMjYzOSwgMjcyLCAxMjY0MCwgMjcyLCAxMjY0MSwgCisgICAgMjcyLCAxMjY0MiwgMjcyLCAxMjY0MywgMjY0LCAxNjIsIDI2NCwgMTYzLCAyNjQsIDE3MiwgMjY0LCAxNzUsIDI2NCwgMTY2LCAKKyAgICAyNjQsIDE2NSwgMjY0LCA4MzYxLCAyNzIsIDk0NzQsIDI3MiwgODU5MiwgMjcyLCA4NTkzLCAyNzIsIDg1OTQsIDI3MiwgCisgICAgODU5NSwgMjcyLCA5NjMyLCAyNzIsIDk2NzUsIDUxMiwgNjk3ODUsIDY5ODE4LCA1MTIsIDY5Nzg3LCA2OTgxOCwgNTEyLCAKKyAgICA2OTc5NywgNjk4MTgsIDUxMiwgNjk5MzcsIDY5OTI3LCA1MTIsIDY5OTM4LCA2OTkyNywgNTEyLCAxMTkxMjcsIDExOTE0MSwgCisgICAgNTEyLCAxMTkxMjgsIDExOTE0MSwgNTEyLCAxMTkxMzUsIDExOTE1MCwgNTEyLCAxMTkxMzUsIDExOTE1MSwgNTEyLCAKKyAgICAxMTkxMzUsIDExOTE1MiwgNTEyLCAxMTkxMzUsIDExOTE1MywgNTEyLCAxMTkxMzUsIDExOTE1NCwgNTEyLCAxMTkyMjUsIAorICAgIDExOTE0MSwgNTEyLCAxMTkyMjYsIDExOTE0MSwgNTEyLCAxMTkyMjcsIDExOTE1MCwgNTEyLCAxMTkyMjgsIDExOTE1MCwgCisgICAgNTEyLCAxMTkyMjcsIDExOTE1MSwgNTEyLCAxMTkyMjgsIDExOTE1MSwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCAKKyAgICA2OCwgMjYyLCA2OSwgMjYyLCA3MCwgMjYyLCA3MSwgMjYyLCA3MiwgMjYyLCA3MywgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCAKKyAgICA3NiwgMjYyLCA3NywgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgMjYyLCA4MSwgMjYyLCA4MiwgMjYyLCA4MywgMjYyLCAKKyAgICA4NCwgMjYyLCA4NSwgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCAKKyAgICA5OCwgMjYyLCA5OSwgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgMTA0LCAyNjIsIDEwNSwgCisgICAgMjYyLCAxMDYsIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIDExMSwgMjYyLCAxMTIsIAorICAgIDI2MiwgMTEzLCAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAKKyAgICAyNjIsIDEyMCwgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIDY4LCAyNjIsIAorICAgIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAyNjIsIAorICAgIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIDg0LCAyNjIsIAorICAgIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAyNjIsIAorICAgIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgCiAgICAgMjYyLCAxMDgsIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTEsIDI2MiwgMTEyLCAyNjIsIDExMywgMjYyLCAxMTQsIAogICAgIDI2MiwgMTE1LCAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgMjYyLCAxMjAsIDI2MiwgMTIxLCAKICAgICAyNjIsIDEyMiwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCA2OCwgMjYyLCA2OSwgMjYyLCA3MCwgMjYyLCA3MSwgCkBAIC0zNTEwLDIwICszNTc5LDQyIEBACiAgICAgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgNTYsIDI2MiwgNTcsIDI2MiwgNDgsIDI2MiwgNDksIDI2MiwgCiAgICAgNTAsIDI2MiwgNTEsIDI2MiwgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgNTYsIDI2MiwgNTcsIDI2MiwgCiAgICAgNDgsIDI2MiwgNDksIDI2MiwgNTAsIDI2MiwgNTEsIDI2MiwgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgCi0gICAgNTYsIDI2MiwgNTcsIDUxNCwgNDgsIDQ2LCA1MTQsIDQ4LCA0NCwgNTE0LCA0OSwgNDQsIDUxNCwgNTAsIDQ0LCA1MTQsIDUxLCAKLSAgICA0NCwgNTE0LCA1MiwgNDQsIDUxNCwgNTMsIDQ0LCA1MTQsIDU0LCA0NCwgNTE0LCA1NSwgNDQsIDUxNCwgNTYsIDQ0LCA1MTQsIAotICAgIDU3LCA0NCwgNzcwLCA0MCwgNjUsIDQxLCA3NzAsIDQwLCA2NiwgNDEsIDc3MCwgNDAsIDY3LCA0MSwgNzcwLCA0MCwgNjgsIAotICAgIDQxLCA3NzAsIDQwLCA2OSwgNDEsIDc3MCwgNDAsIDcwLCA0MSwgNzcwLCA0MCwgNzEsIDQxLCA3NzAsIDQwLCA3MiwgNDEsIAotICAgIDc3MCwgNDAsIDczLCA0MSwgNzcwLCA0MCwgNzQsIDQxLCA3NzAsIDQwLCA3NSwgNDEsIDc3MCwgNDAsIDc2LCA0MSwgNzcwLCAKLSAgICA0MCwgNzcsIDQxLCA3NzAsIDQwLCA3OCwgNDEsIDc3MCwgNDAsIDc5LCA0MSwgNzcwLCA0MCwgODAsIDQxLCA3NzAsIDQwLCAKLSAgICA4MSwgNDEsIDc3MCwgNDAsIDgyLCA0MSwgNzcwLCA0MCwgODMsIDQxLCA3NzAsIDQwLCA4NCwgNDEsIDc3MCwgNDAsIDg1LCAKLSAgICA0MSwgNzcwLCA0MCwgODYsIDQxLCA3NzAsIDQwLCA4NywgNDEsIDc3MCwgNDAsIDg4LCA0MSwgNzcwLCA0MCwgODksIDQxLCAKLSAgICA3NzAsIDQwLCA5MCwgNDEsIDc3MCwgMTIzMDgsIDgzLCAxMjMwOSwgMjYzLCA2NywgMjYzLCA4MiwgNTE5LCA2NywgNjgsIAotICAgIDUxOSwgODcsIDkwLCAyNjYsIDY1LCAyNjYsIDY2LCAyNjYsIDY3LCAyNjYsIDY4LCAyNjYsIDY5LCAyNjYsIDcwLCAyNjYsIAotICAgIDcxLCAyNjYsIDcyLCAyNjYsIDczLCAyNjYsIDc0LCAyNjYsIDc1LCAyNjYsIDc2LCAyNjYsIDc3LCAyNjYsIDc4LCAyNjYsIAotICAgIDc5LCAyNjYsIDgwLCAyNjYsIDgxLCAyNjYsIDgyLCAyNjYsIDgzLCAyNjYsIDg0LCAyNjYsIDg1LCAyNjYsIDg2LCAyNjYsIAotICAgIDg3LCAyNjYsIDg4LCAyNjYsIDg5LCAyNjYsIDkwLCA1MjIsIDcyLCA4NiwgNTIyLCA3NywgODYsIDUyMiwgODMsIDY4LCAKLSAgICA1MjIsIDgzLCA4MywgNzc4LCA4MCwgODAsIDg2LCA1MjIsIDg3LCA2NywgNTIyLCA2OCwgNzQsIDUyMiwgMTI0MTEsIAorICAgIDU2LCAyNjIsIDU3LCAyNjIsIDE1NzUsIDI2MiwgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE1ODMsIDI2MiwgMTYwOCwgMjYyLCAKKyAgICAxNTg2LCAyNjIsIDE1ODEsIDI2MiwgMTU5MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDMsIDI2MiwgMTYwNCwgMjYyLCAxNjA1LCAKKyAgICAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIAorICAgIDE1ODUsIDI2MiwgMTU4OCwgMjYyLCAxNTc4LCAyNjIsIDE1NzksIDI2MiwgMTU4MiwgMjYyLCAxNTg0LCAyNjIsIDE1OTAsIAorICAgIDI2MiwgMTU5MiwgMjYyLCAxNTk0LCAyNjIsIDE2NDYsIDI2MiwgMTcyMiwgMjYyLCAxNjk3LCAyNjIsIDE2NDcsIDI2MiwgCisgICAgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE2MDcsIDI2MiwgMTU4MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDMsIDI2MiwgMTYwNCwgCisgICAgMjYyLCAxNjA1LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAKKyAgICAxNjAyLCAyNjIsIDE1ODgsIDI2MiwgMTU3OCwgMjYyLCAxNTc5LCAyNjIsIDE1ODIsIDI2MiwgMTU5MCwgMjYyLCAxNTk0LCAKKyAgICAyNjIsIDE1ODAsIDI2MiwgMTU4MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDQsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIAorICAgIDE1OTMsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODgsIDI2MiwgMTU4MiwgMjYyLCAxNTkwLCAyNjIsIDE1OTQsIAorICAgIDI2MiwgMTcyMiwgMjYyLCAxNjQ3LCAyNjIsIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNjA3LCAyNjIsIDE1ODEsIDI2MiwgCisgICAgMTU5MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDMsIDI2MiwgMTYwNSwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgMTU5MywgCisgICAgMjYyLCAxNjAxLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIDI2MiwgMTU3OSwgMjYyLCAKKyAgICAxNTgyLCAyNjIsIDE1OTAsIDI2MiwgMTU5MiwgMjYyLCAxNTk0LCAyNjIsIDE2NDYsIDI2MiwgMTY5NywgMjYyLCAxNTc1LCAKKyAgICAyNjIsIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNTgzLCAyNjIsIDE2MDcsIDI2MiwgMTYwOCwgMjYyLCAxNTg2LCAyNjIsIAorICAgIDE1ODEsIDI2MiwgMTU5MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDQsIDI2MiwgMTYwNSwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIAorICAgIDI2MiwgMTU5MywgMjYyLCAxNjAxLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAxNTg1LCAyNjIsIDE1ODgsIDI2MiwgCisgICAgMTU3OCwgMjYyLCAxNTc5LCAyNjIsIDE1ODIsIDI2MiwgMTU4NCwgMjYyLCAxNTkwLCAyNjIsIDE1OTIsIDI2MiwgMTU5NCwgCisgICAgMjYyLCAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTU4MywgMjYyLCAxNjA4LCAyNjIsIDE1ODYsIDI2MiwgMTU4MSwgMjYyLCAKKyAgICAxNTkxLCAyNjIsIDE2MTAsIDI2MiwgMTYwNCwgMjYyLCAxNjA1LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAKKyAgICAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODUsIDI2MiwgMTU4OCwgMjYyLCAxNTc4LCAyNjIsIAorICAgIDE1NzksIDI2MiwgMTU4MiwgMjYyLCAxNTg0LCAyNjIsIDE1OTAsIDI2MiwgMTU5MiwgMjYyLCAxNTk0LCA1MTQsIDQ4LCA0NiwgCisgICAgNTE0LCA0OCwgNDQsIDUxNCwgNDksIDQ0LCA1MTQsIDUwLCA0NCwgNTE0LCA1MSwgNDQsIDUxNCwgNTIsIDQ0LCA1MTQsIDUzLCAKKyAgICA0NCwgNTE0LCA1NCwgNDQsIDUxNCwgNTUsIDQ0LCA1MTQsIDU2LCA0NCwgNTE0LCA1NywgNDQsIDc3MCwgNDAsIDY1LCA0MSwgCisgICAgNzcwLCA0MCwgNjYsIDQxLCA3NzAsIDQwLCA2NywgNDEsIDc3MCwgNDAsIDY4LCA0MSwgNzcwLCA0MCwgNjksIDQxLCA3NzAsIAorICAgIDQwLCA3MCwgNDEsIDc3MCwgNDAsIDcxLCA0MSwgNzcwLCA0MCwgNzIsIDQxLCA3NzAsIDQwLCA3MywgNDEsIDc3MCwgNDAsIAorICAgIDc0LCA0MSwgNzcwLCA0MCwgNzUsIDQxLCA3NzAsIDQwLCA3NiwgNDEsIDc3MCwgNDAsIDc3LCA0MSwgNzcwLCA0MCwgNzgsIAorICAgIDQxLCA3NzAsIDQwLCA3OSwgNDEsIDc3MCwgNDAsIDgwLCA0MSwgNzcwLCA0MCwgODEsIDQxLCA3NzAsIDQwLCA4MiwgNDEsIAorICAgIDc3MCwgNDAsIDgzLCA0MSwgNzcwLCA0MCwgODQsIDQxLCA3NzAsIDQwLCA4NSwgNDEsIDc3MCwgNDAsIDg2LCA0MSwgNzcwLCAKKyAgICA0MCwgODcsIDQxLCA3NzAsIDQwLCA4OCwgNDEsIDc3MCwgNDAsIDg5LCA0MSwgNzcwLCA0MCwgOTAsIDQxLCA3NzAsIAorICAgIDEyMzA4LCA4MywgMTIzMDksIDI2MywgNjcsIDI2MywgODIsIDUxOSwgNjcsIDY4LCA1MTksIDg3LCA5MCwgMjY2LCA2NSwgCisgICAgMjY2LCA2NiwgMjY2LCA2NywgMjY2LCA2OCwgMjY2LCA2OSwgMjY2LCA3MCwgMjY2LCA3MSwgMjY2LCA3MiwgMjY2LCA3MywgCisgICAgMjY2LCA3NCwgMjY2LCA3NSwgMjY2LCA3NiwgMjY2LCA3NywgMjY2LCA3OCwgMjY2LCA3OSwgMjY2LCA4MCwgMjY2LCA4MSwgCisgICAgMjY2LCA4MiwgMjY2LCA4MywgMjY2LCA4NCwgMjY2LCA4NSwgMjY2LCA4NiwgMjY2LCA4NywgMjY2LCA4OCwgMjY2LCA4OSwgCisgICAgMjY2LCA5MCwgNTIyLCA3MiwgODYsIDUyMiwgNzcsIDg2LCA1MjIsIDgzLCA2OCwgNTIyLCA4MywgODMsIDc3OCwgODAsIDgwLCAKKyAgICA4NiwgNTIyLCA4NywgNjcsIDUxNSwgNzcsIDY3LCA1MTUsIDc3LCA2OCwgNTIyLCA2OCwgNzQsIDUyMiwgMTI0MTEsIAogICAgIDEyMzYzLCA1MjIsIDEyNDY3LCAxMjQ2NywgMjY2LCAxMjQ2OSwgMjY2LCAyNTE2MywgMjY2LCAyMzM4MywgMjY2LCAyMTQ1MiwgCiAgICAgMjY2LCAxMjQ4NywgMjY2LCAyMDEwOCwgMjY2LCAyMjgxMCwgMjY2LCAzNTI5OSwgMjY2LCAyMjgyNSwgMjY2LCAyMDEzMiwgCiAgICAgMjY2LCAyNjE0NCwgMjY2LCAyODk2MSwgMjY2LCAyNjAwOSwgMjY2LCAyMTA2OSwgMjY2LCAyNDQ2MCwgMjY2LCAyMDg3NywgCkBAIC0zNjQzLDcgKzM3MzQsNyBAQAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIAotICAgIDQxLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA0MiwgNywgNywgNywgNywgNywgNywgCisgICAgNDEsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDQyLCA0MywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCkBAIC0zNjUxLDkgKzM3NDIsOSBAQAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDQzLCA3LCA3LCA0NCwgNDUsIAotICAgIDQ2LCA0NywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNDgsIDQ5LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKKyAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA0NCwgNywgNywgNDUsIAorICAgIDQ2LCA0NywgNDgsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAorICAgIDcsIDcsIDQ5LCA3LCA3LCA1MCwgNTEsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIApAQCAtMzY2NCw3ICszNzU1LDcgQEAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA1MCwgNTEsIDUyLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKKyAgICA3LCA3LCA3LCA3LCA3LCA1MiwgNTMsIDU0LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKQEAgLTM4MTMsNyArMzkwNCw3IEBACiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCisgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgZGVjb21wX2luZGV4MltdID0gewpAQCAtNDI4MiwzNTYgKzQzNzMsMTYzIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjY0OCwgNjY1MCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY1MiwgNjY1NCwgNjY1NiwgNjY1OCwgNjY2MCwgNjY2MiwgNjY2NCwgCisgICAgNjY2NiwgNjY2OCwgNjY3MCwgNjY3MiwgNjY3NCwgNjY3NiwgNjY3OCwgNjY4MCwgNjY4MiwgNjY4NCwgNjY4NiwgNjY4OCwgCisgICAgNjY5MCwgNjY5MiwgNjY5NCwgNjY5NiwgNjY5OCwgNjcwMCwgNjcwMiwgNjcwNCwgNjcwNiwgNjcwOCwgNjcxMCwgNjcxMiwgCisgICAgNjcxNCwgNjcxNiwgNjcxOCwgNjcyMCwgNjcyMiwgNjcyNCwgNjcyNiwgNjcyOCwgNjczMCwgNjczMiwgNjczNCwgNjczNiwgCisgICAgNjczOCwgNjc0MCwgNjc0MiwgNjc0NCwgNjc0NiwgNjc0OCwgNjc1MCwgNjc1MiwgNjc1NCwgNjc1NiwgNjc1OCwgNjc2MCwgCisgICAgNjc2MiwgNjc2NCwgNjc2NiwgNjc2OCwgNjc3MCwgNjc3MiwgNjc3NCwgNjc3NiwgNjc3OCwgNjc4MCwgNjc4MiwgNjc4NCwgCisgICAgNjc4NiwgNjc4OCwgNjc5MCwgNjc5MiwgNjc5NCwgNjc5NiwgNjc5OCwgNjgwMCwgNjgwMiwgNjgwNCwgNjgwNiwgNjgwOCwgCisgICAgNjgxMCwgNjgxMiwgNjgxNCwgNjgxNiwgNjgxOCwgNjgyMCwgNjgyMiwgNjgyNCwgNjgyNiwgNjgyOCwgNjgzMCwgNjgzMiwgCisgICAgNjgzNCwgNjgzNiwgNjgzOCwgNjg0MCwgNjg0MiwgNjg0NCwgNjg0NiwgNjg0OCwgNjg1MCwgNjg1MiwgNjg1NCwgNjg1NiwgCisgICAgNjg1OCwgNjg2MCwgNjg2MiwgNjg2NCwgNjg2NiwgNjg2OCwgNjg3MCwgNjg3MiwgNjg3NCwgNjg3NiwgNjg3OCwgNjg4MCwgCisgICAgNjg4MiwgNjg4NCwgNjg4NiwgNjg4OCwgNjg5MCwgNjg5MiwgNjg5NCwgNjg5NiwgNjg5OCwgNjkwMCwgNjkwMiwgNjkwNCwgCisgICAgNjkwNiwgNjkwOCwgNjkxMCwgNjkxMiwgNjkxNCwgNjkxNiwgNjkxOCwgNjkyMCwgNjkyMiwgNjkyNCwgNjkyNiwgNjkyOCwgCisgICAgNjkzMCwgNjkzMiwgNjkzNCwgNjkzNiwgNjkzOCwgNjk0MCwgNjk0MiwgNjk0NCwgNjk0NiwgNjk0OCwgNjk1MCwgNjk1MiwgCisgICAgNjk1NCwgNjk1NiwgNjk1OCwgNjk2MCwgNjk2MiwgNjk2NCwgNjk2NiwgNjk2OCwgNjk3MCwgNjk3MiwgNjk3NCwgNjk3NiwgCisgICAgNjk3OCwgNjk4MCwgNjk4MiwgNjk4NCwgNjk4NiwgNjk4OCwgNjk5MCwgNjk5MiwgNjk5NCwgNjk5NiwgNjk5OCwgNzAwMCwgCisgICAgNzAwMiwgNzAwNCwgNzAwNiwgNzAwOCwgNzAxMCwgNzAxMiwgNzAxNCwgNzAxNiwgNzAxOCwgNzAyMCwgNzAyMiwgNzAyNCwgCisgICAgNzAyNiwgNzAyOCwgNzAzMCwgNzAzMiwgNzAzNCwgNzAzNiwgNzAzOCwgNzA0MCwgNzA0MiwgNzA0NCwgNzA0NiwgNzA0OCwgCisgICAgNzA1MCwgNzA1MiwgNzA1NCwgNzA1NiwgNzA1OCwgNzA2MCwgNzA2MiwgNzA2NCwgNzA2NiwgNzA2OCwgNzA3MCwgNzA3MiwgCisgICAgNzA3NCwgNzA3NiwgNzA3OCwgNzA4MCwgNzA4MiwgNzA4NCwgNzA4NiwgNzA4OCwgNzA5MCwgNzA5MiwgNzA5NCwgNzA5NiwgCisgICAgNzA5OCwgNzEwMCwgNzEwMiwgNzEwNCwgNzEwNiwgNzEwOCwgNzExMCwgNzExMiwgNzExNCwgNzExNiwgNzExOCwgNzEyMCwgCisgICAgNzEyMiwgNzEyNCwgNzEyNiwgNzEyOCwgNzEzMCwgNzEzMiwgNzEzNCwgNzEzNiwgNzEzOCwgNzE0MCwgNzE0MiwgNzE0NCwgCisgICAgNzE0NiwgNzE0OCwgNzE1MCwgNzE1MiwgNzE1NCwgNzE1NiwgNzE1OCwgNzE2MCwgNzE2MiwgNzE2NCwgNzE2NiwgNzE2OCwgCisgICAgNzE3MCwgNzE3MiwgNzE3NCwgNzE3NiwgNzE3OCwgNzE4MCwgNzE4MiwgNzE4NCwgNzE4NiwgNzE4OCwgNzE5MCwgMCwgMCwgCisgICAgNzE5MiwgMCwgNzE5NCwgMCwgMCwgNzE5NiwgNzE5OCwgNzIwMCwgNzIwMiwgNzIwNCwgNzIwNiwgNzIwOCwgNzIxMCwgCisgICAgNzIxMiwgNzIxNCwgMCwgNzIxNiwgMCwgNzIxOCwgMCwgMCwgNzIyMCwgNzIyMiwgMCwgMCwgMCwgNzIyNCwgNzIyNiwgCisgICAgNzIyOCwgNzIzMCwgNzIzMiwgNzIzNCwgNzIzNiwgNzIzOCwgNzI0MCwgNzI0MiwgNzI0NCwgNzI0NiwgNzI0OCwgNzI1MCwgCisgICAgNzI1MiwgNzI1NCwgNzI1NiwgNzI1OCwgNzI2MCwgNzI2MiwgNzI2NCwgNzI2NiwgNzI2OCwgNzI3MCwgNzI3MiwgNzI3NCwgCisgICAgNzI3NiwgNzI3OCwgNzI4MCwgNzI4MiwgNzI4NCwgNzI4NiwgNzI4OCwgNzI5MCwgNzI5MiwgNzI5NCwgNzI5NiwgNzI5OCwgCisgICAgNzMwMCwgNzMwMiwgNzMwNCwgNzMwNiwgNzMwOCwgNzMxMCwgNzMxMiwgNzMxNCwgNzMxNiwgNzMxOCwgNzMyMCwgNzMyMiwgCisgICAgNzMyNCwgNzMyNiwgNzMyOCwgNzMzMCwgNzMzMiwgNzMzNCwgNzMzNiwgNzMzOCwgNzM0MCwgNzM0MiwgNzM0NCwgNzM0NiwgCisgICAgNzM0OCwgNzM1MCwgNzM1MiwgNzM1NCwgNzM1NiwgNzM1OCwgMCwgMCwgNzM2MCwgNzM2MiwgNzM2NCwgNzM2NiwgNzM2OCwgCisgICAgNzM3MCwgNzM3MiwgNzM3NCwgNzM3NiwgNzM3OCwgNzM4MCwgNzM4MiwgNzM4NCwgNzM4NiwgNzM4OCwgNzM5MCwgNzM5MiwgCisgICAgNzM5NCwgNzM5NiwgNzM5OCwgNzQwMCwgNzQwMiwgNzQwNCwgNzQwNiwgNzQwOCwgNzQxMCwgNzQxMiwgNzQxNCwgNzQxNiwgCisgICAgNzQxOCwgNzQyMCwgNzQyMiwgNzQyNCwgNzQyNiwgNzQyOCwgNzQzMCwgNzQzMiwgNzQzNCwgNzQzNiwgNzQzOCwgNzQ0MCwgCisgICAgNzQ0MiwgNzQ0NCwgNzQ0NiwgNzQ0OCwgNzQ1MCwgNzQ1MiwgNzQ1NCwgNzQ1NiwgNzQ1OCwgNzQ2MCwgNzQ2MiwgNzQ2NCwgCisgICAgNzQ2NiwgNzQ2OCwgNzQ3MCwgNzQ3MiwgNzQ3NCwgNzQ3NiwgNzQ3OCwgNzQ4MCwgNzQ4MiwgNzQ4NCwgNzQ4NiwgNzQ4OCwgCisgICAgNzQ5MCwgNzQ5MiwgNzQ5NCwgNzQ5NiwgNzQ5OCwgNzUwMCwgNzUwMiwgNzUwNCwgNzUwNiwgNzUwOCwgNzUxMCwgNzUxMiwgCisgICAgNzUxNCwgNzUxNiwgNzUxOCwgNzUyMCwgNzUyMiwgNzUyNCwgNzUyNiwgNzUyOCwgNzUzMCwgNzUzMiwgNzUzNCwgNzUzNiwgCisgICAgNzUzOCwgNzU0MCwgNzU0MiwgNzU0NCwgNzU0NiwgNzU0OCwgNzU1MCwgNzU1MiwgNzU1NCwgNzU1NiwgNzU1OCwgNzU2MCwgCisgICAgNzU2MiwgNzU2NCwgNzU2NiwgNzU2OCwgNzU3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY0OCwgNjY1MCwgNjY1MiwgNjY1NCwgNjY1NiwgNjY1OCwgNjY2MCwgNjY2MiwgCi0gICAgNjY2NCwgNjY2NiwgNjY2OCwgNjY3MCwgNjY3MiwgNjY3NCwgNjY3NiwgNjY3OCwgNjY4MCwgNjY4MiwgNjY4NCwgNjY4NiwgCi0gICAgNjY4OCwgNjY5MCwgNjY5MiwgNjY5NCwgNjY5NiwgNjY5OCwgNjcwMCwgNjcwMiwgNjcwNCwgNjcwNiwgNjcwOCwgNjcxMCwgCi0gICAgNjcxMiwgNjcxNCwgNjcxNiwgNjcxOCwgNjcyMCwgNjcyMiwgNjcyNCwgNjcyNiwgNjcyOCwgNjczMCwgNjczMiwgNjczNCwgCi0gICAgNjczNiwgNjczOCwgNjc0MCwgNjc0MiwgNjc0NCwgNjc0NiwgNjc0OCwgNjc1MCwgNjc1MiwgNjc1NCwgNjc1NiwgNjc1OCwgCi0gICAgNjc2MCwgNjc2MiwgNjc2NCwgNjc2NiwgNjc2OCwgNjc3MCwgNjc3MiwgNjc3NCwgNjc3NiwgNjc3OCwgNjc4MCwgNjc4MiwgCi0gICAgNjc4NCwgNjc4NiwgNjc4OCwgNjc5MCwgNjc5MiwgNjc5NCwgNjc5NiwgNjc5OCwgNjgwMCwgNjgwMiwgNjgwNCwgNjgwNiwgCi0gICAgNjgwOCwgNjgxMCwgNjgxMiwgNjgxNCwgNjgxNiwgNjgxOCwgNjgyMCwgNjgyMiwgNjgyNCwgNjgyNiwgNjgyOCwgNjgzMCwgCi0gICAgNjgzMiwgNjgzNCwgNjgzNiwgNjgzOCwgNjg0MCwgNjg0MiwgNjg0NCwgNjg0NiwgNjg0OCwgNjg1MCwgNjg1MiwgNjg1NCwgCi0gICAgNjg1NiwgNjg1OCwgNjg2MCwgNjg2MiwgNjg2NCwgNjg2NiwgNjg2OCwgNjg3MCwgNjg3MiwgNjg3NCwgNjg3NiwgNjg3OCwgCi0gICAgNjg4MCwgNjg4MiwgNjg4NCwgNjg4NiwgNjg4OCwgNjg5MCwgNjg5MiwgNjg5NCwgNjg5NiwgNjg5OCwgNjkwMCwgNjkwMiwgCi0gICAgNjkwNCwgNjkwNiwgNjkwOCwgNjkxMCwgNjkxMiwgNjkxNCwgNjkxNiwgNjkxOCwgNjkyMCwgNjkyMiwgNjkyNCwgNjkyNiwgCi0gICAgNjkyOCwgNjkzMCwgNjkzMiwgNjkzNCwgNjkzNiwgNjkzOCwgNjk0MCwgNjk0MiwgNjk0NCwgNjk0NiwgNjk0OCwgNjk1MCwgCi0gICAgNjk1MiwgNjk1NCwgNjk1NiwgNjk1OCwgNjk2MCwgNjk2MiwgNjk2NCwgNjk2NiwgNjk2OCwgNjk3MCwgNjk3MiwgNjk3NCwgCi0gICAgNjk3NiwgNjk3OCwgNjk4MCwgNjk4MiwgNjk4NCwgNjk4NiwgNjk4OCwgNjk5MCwgNjk5MiwgNjk5NCwgNjk5NiwgNjk5OCwgCi0gICAgNzAwMCwgNzAwMiwgNzAwNCwgNzAwNiwgNzAwOCwgNzAxMCwgNzAxMiwgNzAxNCwgNzAxNiwgNzAxOCwgNzAyMCwgNzAyMiwgCi0gICAgNzAyNCwgNzAyNiwgNzAyOCwgNzAzMCwgNzAzMiwgNzAzNCwgNzAzNiwgNzAzOCwgNzA0MCwgNzA0MiwgNzA0NCwgNzA0NiwgCi0gICAgNzA0OCwgNzA1MCwgNzA1MiwgNzA1NCwgNzA1NiwgNzA1OCwgNzA2MCwgNzA2MiwgNzA2NCwgNzA2NiwgNzA2OCwgNzA3MCwgCi0gICAgNzA3MiwgNzA3NCwgNzA3NiwgNzA3OCwgNzA4MCwgNzA4MiwgNzA4NCwgNzA4NiwgNzA4OCwgNzA5MCwgNzA5MiwgNzA5NCwgCi0gICAgNzA5NiwgNzA5OCwgNzEwMCwgNzEwMiwgNzEwNCwgNzEwNiwgNzEwOCwgNzExMCwgNzExMiwgNzExNCwgNzExNiwgNzExOCwgCi0gICAgNzEyMCwgNzEyMiwgNzEyNCwgNzEyNiwgNzEyOCwgNzEzMCwgNzEzMiwgNzEzNCwgNzEzNiwgNzEzOCwgNzE0MCwgNzE0MiwgCi0gICAgNzE0NCwgNzE0NiwgNzE0OCwgNzE1MCwgNzE1MiwgNzE1NCwgNzE1NiwgNzE1OCwgNzE2MCwgNzE2MiwgNzE2NCwgNzE2NiwgCi0gICAgNzE2OCwgNzE3MCwgNzE3MiwgNzE3NCwgNzE3NiwgNzE3OCwgNzE4MCwgNzE4MiwgNzE4NCwgNzE4NiwgMCwgMCwgNzE4OCwgCi0gICAgMCwgNzE5MCwgMCwgMCwgNzE5MiwgNzE5NCwgNzE5NiwgNzE5OCwgNzIwMCwgNzIwMiwgNzIwNCwgNzIwNiwgNzIwOCwgCi0gICAgNzIxMCwgMCwgNzIxMiwgMCwgNzIxNCwgMCwgMCwgNzIxNiwgNzIxOCwgMCwgMCwgMCwgNzIyMCwgNzIyMiwgNzIyNCwgCi0gICAgNzIyNiwgMCwgMCwgNzIyOCwgNzIzMCwgNzIzMiwgNzIzNCwgNzIzNiwgNzIzOCwgNzI0MCwgNzI0MiwgNzI0NCwgNzI0NiwgCi0gICAgNzI0OCwgNzI1MCwgNzI1MiwgNzI1NCwgNzI1NiwgNzI1OCwgNzI2MCwgNzI2MiwgNzI2NCwgNzI2NiwgNzI2OCwgNzI3MCwgCi0gICAgNzI3MiwgNzI3NCwgNzI3NiwgNzI3OCwgNzI4MCwgNzI4MiwgNzI4NCwgNzI4NiwgNzI4OCwgNzI5MCwgNzI5MiwgNzI5NCwgCi0gICAgNzI5NiwgNzI5OCwgNzMwMCwgNzMwMiwgNzMwNCwgNzMwNiwgNzMwOCwgNzMxMCwgNzMxMiwgNzMxNCwgNzMxNiwgNzMxOCwgCi0gICAgNzMyMCwgNzMyMiwgNzMyNCwgNzMyNiwgNzMyOCwgNzMzMCwgNzMzMiwgNzMzNCwgNzMzNiwgNzMzOCwgNzM0MCwgNzM0MiwgCi0gICAgNzM0NCwgNzM0NiwgNzM0OCwgNzM1MCwgMCwgMCwgNzM1MiwgNzM1NCwgNzM1NiwgNzM1OCwgNzM2MCwgNzM2MiwgNzM2NCwgCi0gICAgNzM2NiwgNzM2OCwgNzM3MCwgNzM3MiwgNzM3NCwgNzM3NiwgNzM3OCwgNzM4MCwgNzM4MiwgNzM4NCwgNzM4NiwgNzM4OCwgCi0gICAgNzM5MCwgNzM5MiwgNzM5NCwgNzM5NiwgNzM5OCwgNzQwMCwgNzQwMiwgNzQwNCwgNzQwNiwgNzQwOCwgNzQxMCwgNzQxMiwgCi0gICAgNzQxNCwgNzQxNiwgNzQxOCwgNzQyMCwgNzQyMiwgNzQyNCwgNzQyNiwgNzQyOCwgNzQzMCwgNzQzMiwgNzQzNCwgNzQzNiwgCi0gICAgNzQzOCwgNzQ0MCwgNzQ0MiwgNzQ0NCwgNzQ0NiwgNzQ0OCwgNzQ1MCwgNzQ1MiwgNzQ1NCwgNzQ1NiwgNzQ1OCwgNzQ2MCwgCi0gICAgNzQ2MiwgNzQ2NCwgNzQ2NiwgNzQ2OCwgNzQ3MCwgNzQ3MiwgNzQ3NCwgNzQ3NiwgNzQ3OCwgNzQ4MCwgNzQ4MiwgNzQ4NCwgCi0gICAgNzQ4NiwgNzQ4OCwgNzQ5MCwgNzQ5MiwgNzQ5NCwgNzQ5NiwgNzQ5OCwgNzUwMCwgNzUwMiwgNzUwNCwgNzUwNiwgNzUwOCwgCi0gICAgNzUxMCwgNzUxMiwgNzUxNCwgNzUxNiwgNzUxOCwgNzUyMCwgNzUyMiwgNzUyNCwgNzUyNiwgNzUyOCwgNzUzMCwgNzUzMiwgCi0gICAgNzUzNCwgNzUzNiwgNzUzOCwgNzU0MCwgNzU0MiwgNzU0NCwgNzU0NiwgNzU0OCwgNzU1MCwgNzU1MiwgNzU1NCwgNzU1NiwgCi0gICAgNzU1OCwgNzU2MCwgNzU2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzU2NCwgNzU2NywgCi0gICAgNzU3MCwgNzU3MywgNzU3NywgNzU4MSwgNzU4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzU4NywgCi0gICAgNzU5MCwgNzU5MywgNzU5NiwgNzU5OSwgMCwgMCwgMCwgMCwgMCwgNzYwMiwgMCwgNzYwNSwgNzYwOCwgNzYxMCwgNzYxMiwgCi0gICAgNzYxNCwgNzYxNiwgNzYxOCwgNzYyMCwgNzYyMiwgNzYyNCwgNzYyNiwgNzYyOCwgNzYzMSwgNzYzNCwgNzYzNywgNzY0MCwgCi0gICAgNzY0MywgNzY0NiwgNzY0OSwgNzY1MiwgNzY1NSwgNzY1OCwgNzY2MSwgNzY2NCwgMCwgNzY2NywgNzY3MCwgNzY3MywgCi0gICAgNzY3NiwgNzY3OSwgMCwgNzY4MiwgMCwgNzY4NSwgNzY4OCwgMCwgNzY5MSwgNzY5NCwgMCwgNzY5NywgNzcwMCwgNzcwMywgCi0gICAgNzcwNiwgNzcwOSwgNzcxMiwgNzcxNSwgNzcxOCwgNzcyMSwgNzcyNCwgNzcyNywgNzcyOSwgNzczMSwgNzczMywgNzczNSwgCi0gICAgNzczNywgNzczOSwgNzc0MSwgNzc0MywgNzc0NSwgNzc0NywgNzc0OSwgNzc1MSwgNzc1MywgNzc1NSwgNzc1NywgNzc1OSwgCi0gICAgNzc2MSwgNzc2MywgNzc2NSwgNzc2NywgNzc2OSwgNzc3MSwgNzc3MywgNzc3NSwgNzc3NywgNzc3OSwgNzc4MSwgNzc4MywgCi0gICAgNzc4NSwgNzc4NywgNzc4OSwgNzc5MSwgNzc5MywgNzc5NSwgNzc5NywgNzc5OSwgNzgwMSwgNzgwMywgNzgwNSwgNzgwNywgCi0gICAgNzgwOSwgNzgxMSwgNzgxMywgNzgxNSwgNzgxNywgNzgxOSwgNzgyMSwgNzgyMywgNzgyNSwgNzgyNywgNzgyOSwgNzgzMSwgCi0gICAgNzgzMywgNzgzNSwgNzgzNywgNzgzOSwgNzg0MSwgNzg0MywgNzg0NSwgNzg0NywgNzg0OSwgNzg1MSwgNzg1MywgNzg1NSwgCi0gICAgNzg1NywgNzg1OSwgNzg2MSwgNzg2MywgNzg2NSwgNzg2NywgNzg2OSwgNzg3MSwgNzg3MywgNzg3NSwgNzg3NywgNzg3OSwgCi0gICAgNzg4MSwgNzg4MywgNzg4NSwgNzg4NywgNzg4OSwgNzg5MSwgNzg5MywgNzg5NSwgNzg5NywgNzg5OSwgNzkwMSwgNzkwMywgCi0gICAgNzkwNSwgNzkwNywgNzkwOSwgNzkxMSwgNzkxMywgNzkxNSwgNzkxNywgNzkxOSwgNzkyMSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNzU3MiwgNzU3NSwgNzU3OCwgNzU4MSwgNzU4NSwgNzU4OSwgNzU5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNzU5NSwgNzU5OCwgNzYwMSwgNzYwNCwgNzYwNywgMCwgMCwgMCwgMCwgMCwgNzYxMCwgMCwgNzYxMywgNzYxNiwgCisgICAgNzYxOCwgNzYyMCwgNzYyMiwgNzYyNCwgNzYyNiwgNzYyOCwgNzYzMCwgNzYzMiwgNzYzNCwgNzYzNiwgNzYzOSwgNzY0MiwgCisgICAgNzY0NSwgNzY0OCwgNzY1MSwgNzY1NCwgNzY1NywgNzY2MCwgNzY2MywgNzY2NiwgNzY2OSwgNzY3MiwgMCwgNzY3NSwgCisgICAgNzY3OCwgNzY4MSwgNzY4NCwgNzY4NywgMCwgNzY5MCwgMCwgNzY5MywgNzY5NiwgMCwgNzY5OSwgNzcwMiwgMCwgNzcwNSwgCisgICAgNzcwOCwgNzcxMSwgNzcxNCwgNzcxNywgNzcyMCwgNzcyMywgNzcyNiwgNzcyOSwgNzczMiwgNzczNSwgNzczNywgNzczOSwgCisgICAgNzc0MSwgNzc0MywgNzc0NSwgNzc0NywgNzc0OSwgNzc1MSwgNzc1MywgNzc1NSwgNzc1NywgNzc1OSwgNzc2MSwgNzc2MywgCisgICAgNzc2NSwgNzc2NywgNzc2OSwgNzc3MSwgNzc3MywgNzc3NSwgNzc3NywgNzc3OSwgNzc4MSwgNzc4MywgNzc4NSwgNzc4NywgCisgICAgNzc4OSwgNzc5MSwgNzc5MywgNzc5NSwgNzc5NywgNzc5OSwgNzgwMSwgNzgwMywgNzgwNSwgNzgwNywgNzgwOSwgNzgxMSwgCisgICAgNzgxMywgNzgxNSwgNzgxNywgNzgxOSwgNzgyMSwgNzgyMywgNzgyNSwgNzgyNywgNzgyOSwgNzgzMSwgNzgzMywgNzgzNSwgCisgICAgNzgzNywgNzgzOSwgNzg0MSwgNzg0MywgNzg0NSwgNzg0NywgNzg0OSwgNzg1MSwgNzg1MywgNzg1NSwgNzg1NywgNzg1OSwgCisgICAgNzg2MSwgNzg2MywgNzg2NSwgNzg2NywgNzg2OSwgNzg3MSwgNzg3MywgNzg3NSwgNzg3NywgNzg3OSwgNzg4MSwgNzg4MywgCisgICAgNzg4NSwgNzg4NywgNzg4OSwgNzg5MSwgNzg5MywgNzg5NSwgNzg5NywgNzg5OSwgNzkwMSwgNzkwMywgNzkwNSwgNzkwNywgCisgICAgNzkwOSwgNzkxMSwgNzkxMywgNzkxNSwgNzkxNywgNzkxOSwgNzkyMSwgNzkyMywgNzkyNSwgNzkyNywgNzkyOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNzkyMywgNzkyNSwgNzkyNywgNzkyOSwgNzkzMSwgNzkzMywgNzkzNSwgNzkzNywgNzkzOSwgNzk0MSwgCi0gICAgNzk0MywgNzk0NSwgNzk0NywgNzk0OSwgNzk1MSwgNzk1MywgNzk1NSwgNzk1NywgNzk1OSwgNzk2MSwgNzk2MywgNzk2NSwgCi0gICAgNzk2NywgNzk2OSwgNzk3MiwgNzk3NSwgNzk3OCwgNzk4MSwgNzk4NCwgNzk4NywgNzk5MCwgNzk5MywgNzk5NiwgNzk5OSwgCi0gICAgODAwMiwgODAwNSwgODAwOCwgODAxMSwgODAxNCwgODAxNywgODAyMCwgODAyMywgODAyNSwgODAyNywgODAyOSwgODAzMSwgCi0gICAgODAzNCwgODAzNywgODA0MCwgODA0MywgODA0NiwgODA0OSwgODA1MiwgODA1NSwgODA1OCwgODA2MSwgODA2NCwgODA2NywgCi0gICAgODA3MCwgODA3MywgODA3NiwgODA3OSwgODA4MiwgODA4NSwgODA4OCwgODA5MSwgODA5NCwgODA5NywgODEwMCwgODEwMywgCi0gICAgODEwNiwgODEwOSwgODExMiwgODExNSwgODExOCwgODEyMSwgODEyNCwgODEyNywgODEzMCwgODEzMywgODEzNiwgODEzOSwgCi0gICAgODE0MiwgODE0NSwgODE0OCwgODE1MSwgODE1NCwgODE1NywgODE2MCwgODE2MywgODE2NiwgODE2OSwgODE3MiwgODE3NSwgCi0gICAgODE3OCwgODE4MSwgODE4NCwgODE4NywgODE5MCwgODE5MywgODE5NiwgODE5OSwgODIwMiwgODIwNSwgODIwOCwgODIxMSwgCi0gICAgODIxNCwgODIxNywgODIyMCwgODIyMywgODIyNiwgODIyOSwgODIzMiwgODIzNSwgODIzOCwgODI0MSwgODI0NCwgODI0NywgCi0gICAgODI1MCwgODI1MywgODI1NiwgODI1OSwgODI2MiwgODI2NSwgODI2OCwgODI3MSwgODI3NCwgODI3NywgODI4MCwgODI4MywgCi0gICAgODI4NiwgODI4OSwgODI5MiwgODI5NSwgODI5OCwgODMwMSwgODMwNCwgODMwNywgODMxMCwgODMxMywgODMxNywgODMyMSwgCi0gICAgODMyNSwgODMyOSwgODMzMywgODMzNywgODM0MCwgODM0MywgODM0NiwgODM0OSwgODM1MiwgODM1NSwgODM1OCwgODM2MSwgCi0gICAgODM2NCwgODM2NywgODM3MCwgODM3MywgODM3NiwgODM3OSwgODM4MiwgODM4NSwgODM4OCwgODM5MSwgODM5NCwgODM5NywgCi0gICAgODQwMCwgODQwMywgODQwNiwgODQwOSwgODQxMiwgODQxNSwgODQxOCwgODQyMSwgODQyNCwgODQyNywgODQzMCwgODQzMywgCi0gICAgODQzNiwgODQzOSwgODQ0MiwgODQ0NSwgODQ0OCwgODQ1MSwgODQ1NCwgODQ1NywgODQ2MCwgODQ2MywgODQ2NiwgODQ2OSwgCi0gICAgODQ3MiwgODQ3NSwgODQ3OCwgODQ4MSwgODQ4NCwgODQ4NywgODQ5MCwgODQ5MywgODQ5NiwgODQ5OSwgODUwMiwgODUwNSwgCi0gICAgODUwOCwgODUxMSwgODUxNCwgODUxNywgODUyMCwgODUyMywgODUyNiwgODUyOSwgODUzMiwgODUzNSwgODUzOCwgODU0MSwgCi0gICAgODU0NCwgODU0NywgODU1MCwgODU1MywgODU1NiwgODU1OSwgODU2MiwgODU2NSwgODU2OCwgODU3MSwgODU3NCwgODU3NywgCi0gICAgODU4MCwgODU4MywgODU4NiwgODU4OSwgODU5MiwgODU5NSwgODU5OCwgODYwMSwgODYwNCwgODYwNywgODYxMCwgODYxMywgCi0gICAgODYxNiwgODYxOSwgODYyMiwgODYyNSwgODYyOCwgODYzMSwgODYzNCwgODYzNywgODY0MCwgODY0MywgODY0NiwgODY0OSwgCi0gICAgODY1MiwgODY1NSwgODY1OCwgODY2MSwgODY2NCwgODY2NywgODY3MCwgODY3MywgODY3NiwgODY3OSwgODY4MiwgODY4NSwgCi0gICAgODY4OCwgODY5MSwgODY5NCwgODY5NywgODcwMCwgODcwMywgODcwNiwgODcwOSwgODcxMiwgODcxNSwgODcxOCwgODcyMSwgCi0gICAgODcyNCwgODcyNywgODczMCwgODczMywgODczNiwgODczOSwgODc0MiwgODc0NSwgODc0OCwgODc1MSwgODc1NCwgODc1NywgCi0gICAgODc2MCwgODc2MywgODc2NywgODc3MSwgODc3NSwgODc3OCwgODc4MSwgODc4NCwgODc4NywgODc5MCwgODc5MywgODc5NiwgCi0gICAgODc5OSwgODgwMiwgODgwNSwgODgwOCwgODgxMSwgODgxNCwgODgxNywgODgyMCwgODgyMywgODgyNiwgODgyOSwgODgzMiwgCi0gICAgODgzNSwgODgzOCwgODg0MSwgODg0NCwgODg0NywgODg1MCwgODg1MywgODg1NiwgODg1OSwgODg2MiwgODg2NSwgODg2OCwgCi0gICAgODg3MSwgODg3NCwgODg3NywgODg4MCwgODg4MywgODg4NiwgODg4OSwgODg5MiwgODg5NSwgODg5OCwgODkwMSwgODkwNCwgCi0gICAgODkwNywgODkxMCwgODkxMywgODkxNiwgODkxOSwgODkyMiwgODkyNSwgODkyOCwgODkzMSwgODkzNCwgODkzNywgODk0MCwgCi0gICAgODk0MywgODk0NiwgODk0OSwgODk1MiwgODk1NSwgODk1OCwgODk2MSwgODk2NCwgODk2NywgODk3MCwgODk3MywgODk3NiwgCi0gICAgODk3OSwgODk4MiwgODk4NSwgODk4OCwgODk5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgODk5NCwgODk5OCwgOTAwMiwgOTAwNiwgOTAxMCwgOTAxNCwgOTAxOCwgOTAyMiwgOTAyNiwgOTAzMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzkzMSwgNzkzMywgNzkzNSwgNzkzNywgNzkzOSwgNzk0MSwgNzk0MywgNzk0NSwgCisgICAgNzk0NywgNzk0OSwgNzk1MSwgNzk1MywgNzk1NSwgNzk1NywgNzk1OSwgNzk2MSwgNzk2MywgNzk2NSwgNzk2NywgNzk2OSwgCisgICAgNzk3MSwgNzk3MywgNzk3NSwgNzk3NywgNzk4MCwgNzk4MywgNzk4NiwgNzk4OSwgNzk5MiwgNzk5NSwgNzk5OCwgODAwMSwgCisgICAgODAwNCwgODAwNywgODAxMCwgODAxMywgODAxNiwgODAxOSwgODAyMiwgODAyNSwgODAyOCwgODAzMSwgODAzMywgODAzNSwgCisgICAgODAzNywgODAzOSwgODA0MiwgODA0NSwgODA0OCwgODA1MSwgODA1NCwgODA1NywgODA2MCwgODA2MywgODA2NiwgODA2OSwgCisgICAgODA3MiwgODA3NSwgODA3OCwgODA4MSwgODA4NCwgODA4NywgODA5MCwgODA5MywgODA5NiwgODA5OSwgODEwMiwgODEwNSwgCisgICAgODEwOCwgODExMSwgODExNCwgODExNywgODEyMCwgODEyMywgODEyNiwgODEyOSwgODEzMiwgODEzNSwgODEzOCwgODE0MSwgCisgICAgODE0NCwgODE0NywgODE1MCwgODE1MywgODE1NiwgODE1OSwgODE2MiwgODE2NSwgODE2OCwgODE3MSwgODE3NCwgODE3NywgCisgICAgODE4MCwgODE4MywgODE4NiwgODE4OSwgODE5MiwgODE5NSwgODE5OCwgODIwMSwgODIwNCwgODIwNywgODIxMCwgODIxMywgCisgICAgODIxNiwgODIxOSwgODIyMiwgODIyNSwgODIyOCwgODIzMSwgODIzNCwgODIzNywgODI0MCwgODI0MywgODI0NiwgODI0OSwgCisgICAgODI1MiwgODI1NSwgODI1OCwgODI2MSwgODI2NCwgODI2NywgODI3MCwgODI3MywgODI3NiwgODI3OSwgODI4MiwgODI4NSwgCisgICAgODI4OCwgODI5MSwgODI5NCwgODI5NywgODMwMCwgODMwMywgODMwNiwgODMwOSwgODMxMiwgODMxNSwgODMxOCwgODMyMSwgCisgICAgODMyNSwgODMyOSwgODMzMywgODMzNywgODM0MSwgODM0NSwgODM0OCwgODM1MSwgODM1NCwgODM1NywgODM2MCwgODM2MywgCisgICAgODM2NiwgODM2OSwgODM3MiwgODM3NSwgODM3OCwgODM4MSwgODM4NCwgODM4NywgODM5MCwgODM5MywgODM5NiwgODM5OSwgCisgICAgODQwMiwgODQwNSwgODQwOCwgODQxMSwgODQxNCwgODQxNywgODQyMCwgODQyMywgODQyNiwgODQyOSwgODQzMiwgODQzNSwgCisgICAgODQzOCwgODQ0MSwgODQ0NCwgODQ0NywgODQ1MCwgODQ1MywgODQ1NiwgODQ1OSwgODQ2MiwgODQ2NSwgODQ2OCwgODQ3MSwgCisgICAgODQ3NCwgODQ3NywgODQ4MCwgODQ4MywgODQ4NiwgODQ4OSwgODQ5MiwgODQ5NSwgODQ5OCwgODUwMSwgODUwNCwgODUwNywgCisgICAgODUxMCwgODUxMywgODUxNiwgODUxOSwgODUyMiwgODUyNSwgODUyOCwgODUzMSwgODUzNCwgODUzNywgODU0MCwgODU0MywgCisgICAgODU0NiwgODU0OSwgODU1MiwgODU1NSwgODU1OCwgODU2MSwgODU2NCwgODU2NywgODU3MCwgODU3MywgODU3NiwgODU3OSwgCisgICAgODU4MiwgODU4NSwgODU4OCwgODU5MSwgODU5NCwgODU5NywgODYwMCwgODYwMywgODYwNiwgODYwOSwgODYxMiwgODYxNSwgCisgICAgODYxOCwgODYyMSwgODYyNCwgODYyNywgODYzMCwgODYzMywgODYzNiwgODYzOSwgODY0MiwgODY0NSwgODY0OCwgODY1MSwgCisgICAgODY1NCwgODY1NywgODY2MCwgODY2MywgODY2NiwgODY2OSwgODY3MiwgODY3NSwgODY3OCwgODY4MSwgODY4NCwgODY4NywgCisgICAgODY5MCwgODY5MywgODY5NiwgODY5OSwgODcwMiwgODcwNSwgODcwOCwgODcxMSwgODcxNCwgODcxNywgODcyMCwgODcyMywgCisgICAgODcyNiwgODcyOSwgODczMiwgODczNSwgODczOCwgODc0MSwgODc0NCwgODc0NywgODc1MCwgODc1MywgODc1NiwgODc1OSwgCisgICAgODc2MiwgODc2NSwgODc2OCwgODc3MSwgODc3NSwgODc3OSwgODc4MywgODc4NiwgODc4OSwgODc5MiwgODc5NSwgODc5OCwgCisgICAgODgwMSwgODgwNCwgODgwNywgODgxMCwgODgxMywgODgxNiwgODgxOSwgODgyMiwgODgyNSwgODgyOCwgODgzMSwgODgzNCwgCisgICAgODgzNywgODg0MCwgODg0MywgODg0NiwgODg0OSwgODg1MiwgODg1NSwgODg1OCwgODg2MSwgODg2NCwgODg2NywgODg3MCwgCisgICAgODg3MywgODg3NiwgODg3OSwgODg4MiwgODg4NSwgODg4OCwgODg5MSwgODg5NCwgODg5NywgODkwMCwgODkwMywgODkwNiwgCisgICAgODkwOSwgODkxMiwgODkxNSwgODkxOCwgODkyMSwgODkyNCwgODkyNywgODkzMCwgODkzMywgODkzNiwgODkzOSwgODk0MiwgCisgICAgODk0NSwgODk0OCwgODk1MSwgODk1NCwgODk1NywgODk2MCwgODk2MywgODk2NiwgODk2OSwgODk3MiwgODk3NSwgODk3OCwgCisgICAgODk4MSwgODk4NCwgODk4NywgODk5MCwgODk5MywgODk5NiwgODk5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTAwMiwgOTAwNiwgOTAxMCwgOTAxNCwgOTAxOCwgOTAyMiwgOTAyNiwgOTAzMCwgCiAgICAgOTAzNCwgOTAzOCwgOTA0MiwgOTA0NiwgOTA1MCwgOTA1NCwgOTA1OCwgOTA2MiwgOTA2NiwgOTA3MCwgOTA3NCwgOTA3OCwgCiAgICAgOTA4MiwgOTA4NiwgOTA5MCwgOTA5NCwgOTA5OCwgOTEwMiwgOTEwNiwgOTExMCwgOTExNCwgOTExOCwgOTEyMiwgOTEyNiwgCiAgICAgOTEzMCwgOTEzNCwgOTEzOCwgOTE0MiwgOTE0NiwgOTE1MCwgOTE1NCwgOTE1OCwgOTE2MiwgOTE2NiwgOTE3MCwgOTE3NCwgCiAgICAgOTE3OCwgOTE4MiwgOTE4NiwgOTE5MCwgOTE5NCwgOTE5OCwgOTIwMiwgOTIwNiwgOTIxMCwgOTIxNCwgOTIxOCwgOTIyMiwgCi0gICAgOTIyNiwgOTIzMCwgOTIzNCwgOTIzOCwgOTI0MiwgOTI0NiwgMCwgMCwgOTI1MCwgOTI1NCwgOTI1OCwgOTI2MiwgOTI2NiwgCisgICAgOTIyNiwgOTIzMCwgOTIzNCwgOTIzOCwgOTI0MiwgOTI0NiwgOTI1MCwgOTI1NCwgMCwgMCwgOTI1OCwgOTI2MiwgOTI2NiwgCiAgICAgOTI3MCwgOTI3NCwgOTI3OCwgOTI4MiwgOTI4NiwgOTI5MCwgOTI5NCwgOTI5OCwgOTMwMiwgOTMwNiwgOTMxMCwgOTMxNCwgCiAgICAgOTMxOCwgOTMyMiwgOTMyNiwgOTMzMCwgOTMzNCwgOTMzOCwgOTM0MiwgOTM0NiwgOTM1MCwgOTM1NCwgOTM1OCwgOTM2MiwgCiAgICAgOTM2NiwgOTM3MCwgOTM3NCwgOTM3OCwgOTM4MiwgOTM4NiwgOTM5MCwgOTM5NCwgOTM5OCwgOTQwMiwgOTQwNiwgOTQxMCwgCiAgICAgOTQxNCwgOTQxOCwgOTQyMiwgOTQyNiwgOTQzMCwgOTQzNCwgOTQzOCwgOTQ0MiwgOTQ0NiwgOTQ1MCwgOTQ1NCwgOTQ1OCwgCi0gICAgOTQ2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTQ2NiwgOTQ3MCwgOTQ3NCwgCi0gICAgOTQ3OSwgOTQ4NCwgOTQ4OSwgOTQ5NCwgOTQ5OSwgOTUwNCwgOTUwOSwgOTUxMywgOTUzMiwgOTU0MSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU0NiwgOTU0OCwgOTU1MCwgOTU1MiwgCi0gICAgOTU1NCwgOTU1NiwgOTU1OCwgOTU2MCwgOTU2MiwgOTU2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU2NiwgOTU2OCwgOTU3MCwgOTU3MiwgOTU3NCwgOTU3NiwgOTU3OCwgCi0gICAgOTU4MCwgOTU4MiwgOTU4NCwgOTU4NiwgOTU4OCwgOTU5MCwgOTU5MiwgOTU5NCwgOTU5NiwgOTU5OCwgOTYwMCwgOTYwMiwgCi0gICAgOTYwNCwgOTYwNiwgMCwgMCwgOTYwOCwgOTYxMCwgOTYxMiwgOTYxNCwgOTYxNiwgOTYxOCwgOTYyMCwgOTYyMiwgOTYyNCwgCi0gICAgOTYyNiwgOTYyOCwgOTYzMCwgMCwgOTYzMiwgOTYzNCwgOTYzNiwgOTYzOCwgOTY0MCwgOTY0MiwgOTY0NCwgOTY0NiwgCi0gICAgOTY0OCwgOTY1MCwgOTY1MiwgOTY1NCwgOTY1NiwgOTY1OCwgOTY2MCwgOTY2MiwgOTY2NCwgOTY2NiwgOTY2OCwgMCwgCi0gICAgOTY3MCwgOTY3MiwgOTY3NCwgOTY3NiwgMCwgMCwgMCwgMCwgOTY3OCwgOTY4MSwgOTY4NCwgMCwgOTY4NywgMCwgOTY5MCwgCi0gICAgOTY5MywgOTY5NiwgOTY5OSwgOTcwMiwgOTcwNSwgOTcwOCwgOTcxMSwgOTcxNCwgOTcxNywgOTcyMCwgOTcyMiwgOTcyNCwgCi0gICAgOTcyNiwgOTcyOCwgOTczMCwgOTczMiwgOTczNCwgOTczNiwgOTczOCwgOTc0MCwgOTc0MiwgOTc0NCwgOTc0NiwgOTc0OCwgCi0gICAgOTc1MCwgOTc1MiwgOTc1NCwgOTc1NiwgOTc1OCwgOTc2MCwgOTc2MiwgOTc2NCwgOTc2NiwgOTc2OCwgOTc3MCwgOTc3MiwgCi0gICAgOTc3NCwgOTc3NiwgOTc3OCwgOTc4MCwgOTc4MiwgOTc4NCwgOTc4NiwgOTc4OCwgOTc5MCwgOTc5MiwgOTc5NCwgOTc5NiwgCi0gICAgOTc5OCwgOTgwMCwgOTgwMiwgOTgwNCwgOTgwNiwgOTgwOCwgOTgxMCwgOTgxMiwgOTgxNCwgOTgxNiwgOTgxOCwgOTgyMCwgCi0gICAgOTgyMiwgOTgyNCwgOTgyNiwgOTgyOCwgOTgzMCwgOTgzMiwgOTgzNCwgOTgzNiwgOTgzOCwgOTg0MCwgOTg0MiwgOTg0NCwgCi0gICAgOTg0NiwgOTg0OCwgOTg1MCwgOTg1MiwgOTg1NCwgOTg1NiwgOTg1OCwgOTg2MCwgOTg2MiwgOTg2NCwgOTg2NiwgOTg2OCwgCi0gICAgOTg3MCwgOTg3MiwgOTg3NCwgOTg3NiwgOTg3OCwgOTg4MCwgOTg4MiwgOTg4NCwgOTg4NiwgOTg4OCwgOTg5MCwgOTg5MiwgCi0gICAgOTg5NCwgOTg5NiwgOTg5OCwgOTkwMCwgOTkwMiwgOTkwNCwgOTkwNiwgOTkwOCwgOTkxMCwgOTkxMiwgOTkxNCwgOTkxNiwgCi0gICAgOTkxOCwgOTkyMCwgOTkyMiwgOTkyNCwgOTkyNiwgOTkyOCwgOTkzMCwgOTkzMiwgOTkzNCwgOTkzNiwgOTkzOCwgOTk0MCwgCi0gICAgOTk0MiwgOTk0NCwgOTk0NiwgOTk0OCwgOTk1MCwgOTk1MiwgOTk1NCwgOTk1NywgOTk2MCwgOTk2MywgOTk2NiwgOTk2OSwgCi0gICAgOTk3MiwgOTk3NSwgMCwgMCwgMCwgMCwgOTk3OCwgOTk4MCwgOTk4MiwgOTk4NCwgOTk4NiwgOTk4OCwgOTk5MCwgOTk5MiwgCi0gICAgOTk5NCwgOTk5NiwgOTk5OCwgMTAwMDAsIDEwMDAyLCAxMDAwNCwgMTAwMDYsIDEwMDA4LCAxMDAxMCwgMTAwMTIsIDEwMDE0LCAKLSAgICAxMDAxNiwgMTAwMTgsIDEwMDIwLCAxMDAyMiwgMTAwMjQsIDEwMDI2LCAxMDAyOCwgMTAwMzAsIDEwMDMyLCAxMDAzNCwgCi0gICAgMTAwMzYsIDEwMDM4LCAxMDA0MCwgMTAwNDIsIDEwMDQ0LCAxMDA0NiwgMTAwNDgsIDEwMDUwLCAxMDA1MiwgMTAwNTQsIAotICAgIDEwMDU2LCAxMDA1OCwgMTAwNjAsIDEwMDYyLCAxMDA2NCwgMTAwNjYsIDEwMDY4LCAxMDA3MCwgMTAwNzIsIDEwMDc0LCAKLSAgICAxMDA3NiwgMTAwNzgsIDEwMDgwLCAxMDA4MiwgMTAwODQsIDEwMDg2LCAxMDA4OCwgMTAwOTAsIDEwMDkyLCAxMDA5NCwgCi0gICAgMTAwOTYsIDEwMDk4LCAxMDEwMCwgMTAxMDIsIDEwMTA0LCAxMDEwNiwgMTAxMDgsIDEwMTEwLCAxMDExMiwgMTAxMTQsIAotICAgIDEwMTE2LCAxMDExOCwgMTAxMjAsIDEwMTIyLCAxMDEyNCwgMTAxMjYsIDEwMTI4LCAxMDEzMCwgMTAxMzIsIDEwMTM0LCAKLSAgICAxMDEzNiwgMTAxMzgsIDEwMTQwLCAxMDE0MiwgMTAxNDQsIDEwMTQ2LCAxMDE0OCwgMTAxNTAsIDEwMTUyLCAxMDE1NCwgCi0gICAgMTAxNTYsIDEwMTU4LCAxMDE2MCwgMTAxNjIsIDEwMTY0LCAxMDE2NiwgMTAxNjgsIDEwMTcwLCAxMDE3MiwgMTAxNzQsIAotICAgIDEwMTc2LCAxMDE3OCwgMTAxODAsIDEwMTgyLCAxMDE4NCwgMTAxODYsIDEwMTg4LCAxMDE5MCwgMTAxOTIsIDEwMTk0LCAKLSAgICAxMDE5NiwgMTAxOTgsIDEwMjAwLCAxMDIwMiwgMTAyMDQsIDEwMjA2LCAxMDIwOCwgMTAyMTAsIDEwMjEyLCAxMDIxNCwgCi0gICAgMTAyMTYsIDEwMjE4LCAxMDIyMCwgMTAyMjIsIDEwMjI0LCAxMDIyNiwgMTAyMjgsIDEwMjMwLCAxMDIzMiwgMTAyMzQsIAotICAgIDEwMjM2LCAxMDIzOCwgMTAyNDAsIDEwMjQyLCAxMDI0NCwgMTAyNDYsIDEwMjQ4LCAxMDI1MCwgMTAyNTIsIDEwMjU0LCAKLSAgICAxMDI1NiwgMTAyNTgsIDEwMjYwLCAxMDI2MiwgMTAyNjQsIDEwMjY2LCAxMDI2OCwgMTAyNzAsIDEwMjcyLCAxMDI3NCwgCi0gICAgMTAyNzYsIDEwMjc4LCAxMDI4MCwgMTAyODIsIDEwMjg0LCAxMDI4NiwgMTAyODgsIDEwMjkwLCAxMDI5MiwgMTAyOTQsIAotICAgIDEwMjk2LCAxMDI5OCwgMTAzMDAsIDEwMzAyLCAxMDMwNCwgMTAzMDYsIDEwMzA4LCAxMDMxMCwgMTAzMTIsIDEwMzE0LCAKLSAgICAxMDMxNiwgMTAzMTgsIDEwMzIwLCAxMDMyMiwgMTAzMjQsIDEwMzI2LCAxMDMyOCwgMTAzMzAsIDEwMzMyLCAxMDMzNCwgCi0gICAgMTAzMzYsIDEwMzM4LCAxMDM0MCwgMTAzNDIsIDEwMzQ0LCAxMDM0NiwgMTAzNDgsIDEwMzUwLCAxMDM1MiwgMTAzNTQsIAotICAgIDEwMzU2LCAwLCAwLCAwLCAxMDM1OCwgMTAzNjAsIDEwMzYyLCAxMDM2NCwgMTAzNjYsIDEwMzY4LCAwLCAwLCAxMDM3MCwgCi0gICAgMTAzNzIsIDEwMzc0LCAxMDM3NiwgMTAzNzgsIDEwMzgwLCAwLCAwLCAxMDM4MiwgMTAzODQsIDEwMzg2LCAxMDM4OCwgCi0gICAgMTAzOTAsIDEwMzkyLCAwLCAwLCAxMDM5NCwgMTAzOTYsIDEwMzk4LCAwLCAwLCAwLCAxMDQwMCwgMTA0MDIsIDEwNDA0LCAKLSAgICAxMDQwNiwgMTA0MDgsIDEwNDEwLCAxMDQxMiwgMCwgMTA0MTQsIDEwNDE2LCAxMDQxOCwgMTA0MjAsIDEwNDIyLCAxMDQyNCwgCi0gICAgMTA0MjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDk0NjIsIDk0NjYsIDk0NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk0NzQsIAorICAgIDk0NzgsIDk0ODIsIDk0ODcsIDk0OTIsIDk0OTcsIDk1MDIsIDk1MDcsIDk1MTIsIDk1MTcsIDk1MjEsIDk1NDAsIDk1NDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1NTQsIDk1NTYsIAorICAgIDk1NTgsIDk1NjAsIDk1NjIsIDk1NjQsIDk1NjYsIDk1NjgsIDk1NzAsIDk1NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1NzQsIDk1NzYsIDk1NzgsIDk1ODAsIDk1ODIsIAorICAgIDk1ODQsIDk1ODYsIDk1ODgsIDk1OTAsIDk1OTIsIDk1OTQsIDk1OTYsIDk1OTgsIDk2MDAsIDk2MDIsIDk2MDQsIDk2MDYsIAorICAgIDk2MDgsIDk2MTAsIDk2MTIsIDk2MTQsIDAsIDAsIDk2MTYsIDk2MTgsIDk2MjAsIDk2MjIsIDk2MjQsIDk2MjYsIDk2MjgsIAorICAgIDk2MzAsIDk2MzIsIDk2MzQsIDk2MzYsIDk2MzgsIDAsIDk2NDAsIDk2NDIsIDk2NDQsIDk2NDYsIDk2NDgsIDk2NTAsIAorICAgIDk2NTIsIDk2NTQsIDk2NTYsIDk2NTgsIDk2NjAsIDk2NjIsIDk2NjQsIDk2NjYsIDk2NjgsIDk2NzAsIDk2NzIsIDk2NzQsIAorICAgIDk2NzYsIDAsIDk2NzgsIDk2ODAsIDk2ODIsIDk2ODQsIDAsIDAsIDAsIDAsIDk2ODYsIDk2ODksIDk2OTIsIDAsIDk2OTUsIAorICAgIDAsIDk2OTgsIDk3MDEsIDk3MDQsIDk3MDcsIDk3MTAsIDk3MTMsIDk3MTYsIDk3MTksIDk3MjIsIDk3MjUsIDk3MjgsIAorICAgIDk3MzAsIDk3MzIsIDk3MzQsIDk3MzYsIDk3MzgsIDk3NDAsIDk3NDIsIDk3NDQsIDk3NDYsIDk3NDgsIDk3NTAsIDk3NTIsIAorICAgIDk3NTQsIDk3NTYsIDk3NTgsIDk3NjAsIDk3NjIsIDk3NjQsIDk3NjYsIDk3NjgsIDk3NzAsIDk3NzIsIDk3NzQsIDk3NzYsIAorICAgIDk3NzgsIDk3ODAsIDk3ODIsIDk3ODQsIDk3ODYsIDk3ODgsIDk3OTAsIDk3OTIsIDk3OTQsIDk3OTYsIDk3OTgsIDk4MDAsIAorICAgIDk4MDIsIDk4MDQsIDk4MDYsIDk4MDgsIDk4MTAsIDk4MTIsIDk4MTQsIDk4MTYsIDk4MTgsIDk4MjAsIDk4MjIsIDk4MjQsIAorICAgIDk4MjYsIDk4MjgsIDk4MzAsIDk4MzIsIDk4MzQsIDk4MzYsIDk4MzgsIDk4NDAsIDk4NDIsIDk4NDQsIDk4NDYsIDk4NDgsIAorICAgIDk4NTAsIDk4NTIsIDk4NTQsIDk4NTYsIDk4NTgsIDk4NjAsIDk4NjIsIDk4NjQsIDk4NjYsIDk4NjgsIDk4NzAsIDk4NzIsIAorICAgIDk4NzQsIDk4NzYsIDk4NzgsIDk4ODAsIDk4ODIsIDk4ODQsIDk4ODYsIDk4ODgsIDk4OTAsIDk4OTIsIDk4OTQsIDk4OTYsIAorICAgIDk4OTgsIDk5MDAsIDk5MDIsIDk5MDQsIDk5MDYsIDk5MDgsIDk5MTAsIDk5MTIsIDk5MTQsIDk5MTYsIDk5MTgsIDk5MjAsIAorICAgIDk5MjIsIDk5MjQsIDk5MjYsIDk5MjgsIDk5MzAsIDk5MzIsIDk5MzQsIDk5MzYsIDk5MzgsIDk5NDAsIDk5NDIsIDk5NDQsIAorICAgIDk5NDYsIDk5NDgsIDk5NTAsIDk5NTIsIDk5NTQsIDk5NTYsIDk5NTgsIDk5NjAsIDk5NjIsIDk5NjUsIDk5NjgsIDk5NzEsIAorICAgIDk5NzQsIDk5NzcsIDk5ODAsIDk5ODMsIDAsIDAsIDAsIDAsIDk5ODYsIDk5ODgsIDk5OTAsIDk5OTIsIDk5OTQsIDk5OTYsIAorICAgIDk5OTgsIDEwMDAwLCAxMDAwMiwgMTAwMDQsIDEwMDA2LCAxMDAwOCwgMTAwMTAsIDEwMDEyLCAxMDAxNCwgMTAwMTYsIAorICAgIDEwMDE4LCAxMDAyMCwgMTAwMjIsIDEwMDI0LCAxMDAyNiwgMTAwMjgsIDEwMDMwLCAxMDAzMiwgMTAwMzQsIDEwMDM2LCAKKyAgICAxMDAzOCwgMTAwNDAsIDEwMDQyLCAxMDA0NCwgMTAwNDYsIDEwMDQ4LCAxMDA1MCwgMTAwNTIsIDEwMDU0LCAxMDA1NiwgCisgICAgMTAwNTgsIDEwMDYwLCAxMDA2MiwgMTAwNjQsIDEwMDY2LCAxMDA2OCwgMTAwNzAsIDEwMDcyLCAxMDA3NCwgMTAwNzYsIAorICAgIDEwMDc4LCAxMDA4MCwgMTAwODIsIDEwMDg0LCAxMDA4NiwgMTAwODgsIDEwMDkwLCAxMDA5MiwgMTAwOTQsIDEwMDk2LCAKKyAgICAxMDA5OCwgMTAxMDAsIDEwMTAyLCAxMDEwNCwgMTAxMDYsIDEwMTA4LCAxMDExMCwgMTAxMTIsIDEwMTE0LCAxMDExNiwgCisgICAgMTAxMTgsIDEwMTIwLCAxMDEyMiwgMTAxMjQsIDEwMTI2LCAxMDEyOCwgMTAxMzAsIDEwMTMyLCAxMDEzNCwgMTAxMzYsIAorICAgIDEwMTM4LCAxMDE0MCwgMTAxNDIsIDEwMTQ0LCAxMDE0NiwgMTAxNDgsIDEwMTUwLCAxMDE1MiwgMTAxNTQsIDEwMTU2LCAKKyAgICAxMDE1OCwgMTAxNjAsIDEwMTYyLCAxMDE2NCwgMTAxNjYsIDEwMTY4LCAxMDE3MCwgMTAxNzIsIDEwMTc0LCAxMDE3NiwgCisgICAgMTAxNzgsIDEwMTgwLCAxMDE4MiwgMTAxODQsIDEwMTg2LCAxMDE4OCwgMTAxOTAsIDEwMTkyLCAxMDE5NCwgMTAxOTYsIAorICAgIDEwMTk4LCAxMDIwMCwgMTAyMDIsIDEwMjA0LCAxMDIwNiwgMTAyMDgsIDEwMjEwLCAxMDIxMiwgMTAyMTQsIDEwMjE2LCAKKyAgICAxMDIxOCwgMTAyMjAsIDEwMjIyLCAxMDIyNCwgMTAyMjYsIDEwMjI4LCAxMDIzMCwgMTAyMzIsIDEwMjM0LCAxMDIzNiwgCisgICAgMTAyMzgsIDEwMjQwLCAxMDI0MiwgMTAyNDQsIDEwMjQ2LCAxMDI0OCwgMTAyNTAsIDEwMjUyLCAxMDI1NCwgMTAyNTYsIAorICAgIDEwMjU4LCAxMDI2MCwgMTAyNjIsIDEwMjY0LCAxMDI2NiwgMTAyNjgsIDEwMjcwLCAxMDI3MiwgMTAyNzQsIDEwMjc2LCAKKyAgICAxMDI3OCwgMTAyODAsIDEwMjgyLCAxMDI4NCwgMTAyODYsIDEwMjg4LCAxMDI5MCwgMTAyOTIsIDEwMjk0LCAxMDI5NiwgCisgICAgMTAyOTgsIDEwMzAwLCAxMDMwMiwgMTAzMDQsIDEwMzA2LCAxMDMwOCwgMTAzMTAsIDEwMzEyLCAxMDMxNCwgMTAzMTYsIAorICAgIDEwMzE4LCAxMDMyMCwgMTAzMjIsIDEwMzI0LCAxMDMyNiwgMTAzMjgsIDEwMzMwLCAxMDMzMiwgMTAzMzQsIDEwMzM2LCAKKyAgICAxMDMzOCwgMTAzNDAsIDEwMzQyLCAxMDM0NCwgMTAzNDYsIDEwMzQ4LCAxMDM1MCwgMTAzNTIsIDEwMzU0LCAxMDM1NiwgCisgICAgMTAzNTgsIDEwMzYwLCAxMDM2MiwgMTAzNjQsIDAsIDAsIDAsIDEwMzY2LCAxMDM2OCwgMTAzNzAsIDEwMzcyLCAxMDM3NCwgCisgICAgMTAzNzYsIDAsIDAsIDEwMzc4LCAxMDM4MCwgMTAzODIsIDEwMzg0LCAxMDM4NiwgMTAzODgsIDAsIDAsIDEwMzkwLCAKKyAgICAxMDM5MiwgMTAzOTQsIDEwMzk2LCAxMDM5OCwgMTA0MDAsIDAsIDAsIDEwNDAyLCAxMDQwNCwgMTA0MDYsIDAsIDAsIDAsIAorICAgIDEwNDA4LCAxMDQxMCwgMTA0MTIsIDEwNDE0LCAxMDQxNiwgMTA0MTgsIDEwNDIwLCAwLCAxMDQyMiwgMTA0MjQsIDEwNDI2LCAKKyAgICAxMDQyOCwgMTA0MzAsIDEwNDMyLCAxMDQzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTA0MjgsIDAsIDEwNDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDQzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0MzYsIDAsIDEwNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0MzcsIDEwNDQwLCAxMDQ0MywgMTA0NDYsIDEwNDQ5LCAKLSAgICAxMDQ1MiwgMTA0NTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDU4LCAxMDQ2MSwgCi0gICAgMTA0NjQsIDEwNDY3LCAxMDQ3MCwgMTA0NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwNDc2LCAxMDQ3OCwgMTA0ODAsIDEwNDgyLCAxMDQ4NCwgMTA0ODYsIDEwNDg4LCAxMDQ5MCwgMTA0OTIsIDEwNDk0LCAKLSAgICAxMDQ5NiwgMTA0OTgsIDEwNTAwLCAxMDUwMiwgMTA1MDQsIDEwNTA2LCAxMDUwOCwgMTA1MTAsIDEwNTEyLCAxMDUxNCwgCi0gICAgMTA1MTYsIDEwNTE4LCAxMDUyMCwgMTA1MjIsIDEwNTI0LCAxMDUyNiwgMTA1MjgsIDEwNTMwLCAxMDUzMiwgMTA1MzQsIAotICAgIDEwNTM2LCAxMDUzOCwgMTA1NDAsIDEwNTQyLCAxMDU0NCwgMTA1NDYsIDEwNTQ4LCAxMDU1MCwgMTA1NTIsIDEwNTU0LCAKLSAgICAxMDU1NiwgMTA1NTgsIDEwNTYwLCAxMDU2MiwgMTA1NjQsIDEwNTY2LCAxMDU2OCwgMTA1NzAsIDEwNTcyLCAxMDU3NCwgCi0gICAgMTA1NzYsIDEwNTc4LCAxMDU4MCwgMTA1ODIsIDEwNTg0LCAxMDU4NiwgMTA1ODgsIDEwNTkwLCAxMDU5MiwgMTA1OTQsIAotICAgIDEwNTk2LCAxMDU5OCwgMTA2MDAsIDEwNjAyLCAxMDYwNCwgMTA2MDYsIDEwNjA4LCAxMDYxMCwgMTA2MTIsIDEwNjE0LCAKLSAgICAxMDYxNiwgMTA2MTgsIDEwNjIwLCAxMDYyMiwgMTA2MjQsIDEwNjI2LCAxMDYyOCwgMTA2MzAsIDEwNjMyLCAxMDYzNCwgCi0gICAgMTA2MzYsIDEwNjM4LCAxMDY0MCwgMTA2NDIsIDEwNjQ0LCAwLCAxMDY0NiwgMTA2NDgsIDEwNjUwLCAxMDY1MiwgMTA2NTQsIAotICAgIDEwNjU2LCAxMDY1OCwgMTA2NjAsIDEwNjYyLCAxMDY2NCwgMTA2NjYsIDEwNjY4LCAxMDY3MCwgMTA2NzIsIDEwNjc0LCAKLSAgICAxMDY3NiwgMTA2NzgsIDEwNjgwLCAxMDY4MiwgMTA2ODQsIDEwNjg2LCAxMDY4OCwgMTA2OTAsIDEwNjkyLCAxMDY5NCwgCi0gICAgMTA2OTYsIDEwNjk4LCAxMDcwMCwgMTA3MDIsIDEwNzA0LCAxMDcwNiwgMTA3MDgsIDEwNzEwLCAxMDcxMiwgMTA3MTQsIAotICAgIDEwNzE2LCAxMDcxOCwgMTA3MjAsIDEwNzIyLCAxMDcyNCwgMTA3MjYsIDEwNzI4LCAxMDczMCwgMTA3MzIsIDEwNzM0LCAKLSAgICAxMDczNiwgMTA3MzgsIDEwNzQwLCAxMDc0MiwgMTA3NDQsIDEwNzQ2LCAxMDc0OCwgMTA3NTAsIDEwNzUyLCAxMDc1NCwgCi0gICAgMTA3NTYsIDEwNzU4LCAxMDc2MCwgMTA3NjIsIDEwNzY0LCAxMDc2NiwgMTA3NjgsIDEwNzcwLCAxMDc3MiwgMTA3NzQsIAotICAgIDEwNzc2LCAxMDc3OCwgMTA3ODAsIDEwNzgyLCAxMDc4NCwgMTA3ODYsIDAsIDEwNzg4LCAxMDc5MCwgMCwgMCwgMTA3OTIsIAotICAgIDAsIDAsIDEwNzk0LCAxMDc5NiwgMCwgMCwgMTA3OTgsIDEwODAwLCAxMDgwMiwgMTA4MDQsIDAsIDEwODA2LCAxMDgwOCwgCi0gICAgMTA4MTAsIDEwODEyLCAxMDgxNCwgMTA4MTYsIDEwODE4LCAxMDgyMCwgMTA4MjIsIDEwODI0LCAxMDgyNiwgMTA4MjgsIDAsIAotICAgIDEwODMwLCAwLCAxMDgzMiwgMTA4MzQsIDEwODM2LCAxMDgzOCwgMTA4NDAsIDEwODQyLCAxMDg0NCwgMCwgMTA4NDYsIAotICAgIDEwODQ4LCAxMDg1MCwgMTA4NTIsIDEwODU0LCAxMDg1NiwgMTA4NTgsIDEwODYwLCAxMDg2MiwgMTA4NjQsIDEwODY2LCAKLSAgICAxMDg2OCwgMTA4NzAsIDEwODcyLCAxMDg3NCwgMTA4NzYsIDEwODc4LCAxMDg4MCwgMTA4ODIsIDEwODg0LCAxMDg4NiwgCi0gICAgMTA4ODgsIDEwODkwLCAxMDg5MiwgMTA4OTQsIDEwODk2LCAxMDg5OCwgMTA5MDAsIDEwOTAyLCAxMDkwNCwgMTA5MDYsIAotICAgIDEwOTA4LCAxMDkxMCwgMTA5MTIsIDEwOTE0LCAxMDkxNiwgMTA5MTgsIDEwOTIwLCAxMDkyMiwgMTA5MjQsIDEwOTI2LCAKLSAgICAxMDkyOCwgMTA5MzAsIDEwOTMyLCAxMDkzNCwgMTA5MzYsIDEwOTM4LCAxMDk0MCwgMTA5NDIsIDEwOTQ0LCAxMDk0NiwgCi0gICAgMTA5NDgsIDEwOTUwLCAxMDk1MiwgMTA5NTQsIDEwOTU2LCAxMDk1OCwgMTA5NjAsIDEwOTYyLCAxMDk2NCwgMTA5NjYsIAotICAgIDEwOTY4LCAxMDk3MCwgMTA5NzIsIDEwOTc0LCAwLCAxMDk3NiwgMTA5NzgsIDEwOTgwLCAxMDk4MiwgMCwgMCwgMTA5ODQsIAotICAgIDEwOTg2LCAxMDk4OCwgMTA5OTAsIDEwOTkyLCAxMDk5NCwgMTA5OTYsIDEwOTk4LCAwLCAxMTAwMCwgMTEwMDIsIDExMDA0LCAKLSAgICAxMTAwNiwgMTEwMDgsIDExMDEwLCAxMTAxMiwgMCwgMTEwMTQsIDExMDE2LCAxMTAxOCwgMTEwMjAsIDExMDIyLCAxMTAyNCwgCi0gICAgMTEwMjYsIDExMDI4LCAxMTAzMCwgMTEwMzIsIDExMDM0LCAxMTAzNiwgMTEwMzgsIDExMDQwLCAxMTA0MiwgMTEwNDQsIAotICAgIDExMDQ2LCAxMTA0OCwgMTEwNTAsIDExMDUyLCAxMTA1NCwgMTEwNTYsIDExMDU4LCAxMTA2MCwgMTEwNjIsIDExMDY0LCAKLSAgICAxMTA2NiwgMTEwNjgsIDAsIDExMDcwLCAxMTA3MiwgMTEwNzQsIDExMDc2LCAwLCAxMTA3OCwgMTEwODAsIDExMDgyLCAKLSAgICAxMTA4NCwgMTEwODYsIDAsIDExMDg4LCAwLCAwLCAwLCAxMTA5MCwgMTEwOTIsIDExMDk0LCAxMTA5NiwgMTEwOTgsIAotICAgIDExMTAwLCAxMTEwMiwgMCwgMTExMDQsIDExMTA2LCAxMTEwOCwgMTExMTAsIDExMTEyLCAxMTExNCwgMTExMTYsIDExMTE4LCAKLSAgICAxMTEyMCwgMTExMjIsIDExMTI0LCAxMTEyNiwgMTExMjgsIDExMTMwLCAxMTEzMiwgMTExMzQsIDExMTM2LCAxMTEzOCwgCi0gICAgMTExNDAsIDExMTQyLCAxMTE0NCwgMTExNDYsIDExMTQ4LCAxMTE1MCwgMTExNTIsIDExMTU0LCAxMTE1NiwgMTExNTgsIAotICAgIDExMTYwLCAxMTE2MiwgMTExNjQsIDExMTY2LCAxMTE2OCwgMTExNzAsIDExMTcyLCAxMTE3NCwgMTExNzYsIDExMTc4LCAKLSAgICAxMTE4MCwgMTExODIsIDExMTg0LCAxMTE4NiwgMTExODgsIDExMTkwLCAxMTE5MiwgMTExOTQsIDExMTk2LCAxMTE5OCwgCi0gICAgMTEyMDAsIDExMjAyLCAxMTIwNCwgMTEyMDYsIDExMjA4LCAxMTIxMCwgMTEyMTIsIDExMjE0LCAxMTIxNiwgMTEyMTgsIAotICAgIDExMjIwLCAxMTIyMiwgMTEyMjQsIDExMjI2LCAxMTIyOCwgMTEyMzAsIDExMjMyLCAxMTIzNCwgMTEyMzYsIDExMjM4LCAKLSAgICAxMTI0MCwgMTEyNDIsIDExMjQ0LCAxMTI0NiwgMTEyNDgsIDExMjUwLCAxMTI1MiwgMTEyNTQsIDExMjU2LCAxMTI1OCwgCi0gICAgMTEyNjAsIDExMjYyLCAxMTI2NCwgMTEyNjYsIDExMjY4LCAxMTI3MCwgMTEyNzIsIDExMjc0LCAxMTI3NiwgMTEyNzgsIAotICAgIDExMjgwLCAxMTI4MiwgMTEyODQsIDExMjg2LCAxMTI4OCwgMTEyOTAsIDExMjkyLCAxMTI5NCwgMTEyOTYsIDExMjk4LCAKLSAgICAxMTMwMCwgMTEzMDIsIDExMzA0LCAxMTMwNiwgMTEzMDgsIDExMzEwLCAxMTMxMiwgMTEzMTQsIDExMzE2LCAxMTMxOCwgCi0gICAgMTEzMjAsIDExMzIyLCAxMTMyNCwgMTEzMjYsIDExMzI4LCAxMTMzMCwgMTEzMzIsIDExMzM0LCAxMTMzNiwgMTEzMzgsIAotICAgIDExMzQwLCAxMTM0MiwgMTEzNDQsIDExMzQ2LCAxMTM0OCwgMTEzNTAsIDExMzUyLCAxMTM1NCwgMTEzNTYsIDExMzU4LCAKLSAgICAxMTM2MCwgMTEzNjIsIDExMzY0LCAxMTM2NiwgMTEzNjgsIDExMzcwLCAxMTM3MiwgMTEzNzQsIDExMzc2LCAxMTM3OCwgCi0gICAgMTEzODAsIDExMzgyLCAxMTM4NCwgMTEzODYsIDExMzg4LCAxMTM5MCwgMTEzOTIsIDExMzk0LCAxMTM5NiwgMTEzOTgsIAotICAgIDExNDAwLCAxMTQwMiwgMTE0MDQsIDExNDA2LCAxMTQwOCwgMTE0MTAsIDExNDEyLCAxMTQxNCwgMTE0MTYsIDExNDE4LCAKLSAgICAxMTQyMCwgMTE0MjIsIDExNDI0LCAxMTQyNiwgMTE0MjgsIDExNDMwLCAxMTQzMiwgMTE0MzQsIDExNDM2LCAxMTQzOCwgCi0gICAgMTE0NDAsIDExNDQyLCAxMTQ0NCwgMTE0NDYsIDExNDQ4LCAxMTQ1MCwgMTE0NTIsIDExNDU0LCAxMTQ1NiwgMTE0NTgsIAotICAgIDExNDYwLCAxMTQ2MiwgMTE0NjQsIDExNDY2LCAxMTQ2OCwgMTE0NzAsIDExNDcyLCAxMTQ3NCwgMTE0NzYsIDExNDc4LCAKLSAgICAxMTQ4MCwgMTE0ODIsIDExNDg0LCAxMTQ4NiwgMTE0ODgsIDExNDkwLCAxMTQ5MiwgMTE0OTQsIDExNDk2LCAxMTQ5OCwgCi0gICAgMTE1MDAsIDExNTAyLCAxMTUwNCwgMTE1MDYsIDExNTA4LCAxMTUxMCwgMTE1MTIsIDExNTE0LCAxMTUxNiwgMTE1MTgsIAotICAgIDExNTIwLCAxMTUyMiwgMTE1MjQsIDExNTI2LCAxMTUyOCwgMTE1MzAsIDExNTMyLCAxMTUzNCwgMTE1MzYsIDExNTM4LCAKLSAgICAxMTU0MCwgMTE1NDIsIDExNTQ0LCAxMTU0NiwgMTE1NDgsIDExNTUwLCAxMTU1MiwgMTE1NTQsIDExNTU2LCAxMTU1OCwgCi0gICAgMTE1NjAsIDExNTYyLCAxMTU2NCwgMTE1NjYsIDExNTY4LCAxMTU3MCwgMTE1NzIsIDExNTc0LCAxMTU3NiwgMTE1NzgsIAotICAgIDExNTgwLCAxMTU4MiwgMTE1ODQsIDExNTg2LCAxMTU4OCwgMTE1OTAsIDExNTkyLCAxMTU5NCwgMTE1OTYsIDExNTk4LCAKLSAgICAxMTYwMCwgMTE2MDIsIDExNjA0LCAxMTYwNiwgMTE2MDgsIDExNjEwLCAxMTYxMiwgMTE2MTQsIDExNjE2LCAxMTYxOCwgCi0gICAgMTE2MjAsIDExNjIyLCAxMTYyNCwgMTE2MjYsIDExNjI4LCAxMTYzMCwgMTE2MzIsIDExNjM0LCAxMTYzNiwgMTE2MzgsIAotICAgIDExNjQwLCAxMTY0MiwgMTE2NDQsIDExNjQ2LCAxMTY0OCwgMTE2NTAsIDExNjUyLCAxMTY1NCwgMTE2NTYsIDExNjU4LCAKLSAgICAxMTY2MCwgMTE2NjIsIDExNjY0LCAxMTY2NiwgMTE2NjgsIDExNjcwLCAxMTY3MiwgMTE2NzQsIDExNjc2LCAxMTY3OCwgCi0gICAgMTE2ODAsIDExNjgyLCAxMTY4NCwgMTE2ODYsIDExNjg4LCAxMTY5MCwgMTE2OTIsIDExNjk0LCAxMTY5NiwgMTE2OTgsIAotICAgIDExNzAwLCAxMTcwMiwgMTE3MDQsIDExNzA2LCAxMTcwOCwgMTE3MTAsIDExNzEyLCAxMTcxNCwgMTE3MTYsIDExNzE4LCAKLSAgICAxMTcyMCwgMTE3MjIsIDExNzI0LCAxMTcyNiwgMTE3MjgsIDExNzMwLCAxMTczMiwgMTE3MzQsIDExNzM2LCAxMTczOCwgCi0gICAgMTE3NDAsIDExNzQyLCAxMTc0NCwgMTE3NDYsIDExNzQ4LCAxMTc1MCwgMTE3NTIsIDExNzU0LCAxMTc1NiwgMTE3NTgsIAotICAgIDExNzYwLCAxMTc2MiwgMTE3NjQsIDExNzY2LCAxMTc2OCwgMTE3NzAsIDExNzcyLCAxMTc3NCwgMTE3NzYsIDExNzc4LCAKLSAgICAxMTc4MCwgMTE3ODIsIDAsIDAsIDExNzg0LCAxMTc4NiwgMTE3ODgsIDExNzkwLCAxMTc5MiwgMTE3OTQsIDExNzk2LCAKLSAgICAxMTc5OCwgMTE4MDAsIDExODAyLCAxMTgwNCwgMTE4MDYsIDExODA4LCAxMTgxMCwgMTE4MTIsIDExODE0LCAxMTgxNiwgCi0gICAgMTE4MTgsIDExODIwLCAxMTgyMiwgMTE4MjQsIDExODI2LCAxMTgyOCwgMTE4MzAsIDExODMyLCAxMTgzNCwgMTE4MzYsIAotICAgIDExODM4LCAxMTg0MCwgMTE4NDIsIDExODQ0LCAxMTg0NiwgMTE4NDgsIDExODUwLCAxMTg1MiwgMTE4NTQsIDExODU2LCAKLSAgICAxMTg1OCwgMTE4NjAsIDExODYyLCAxMTg2NCwgMTE4NjYsIDExODY4LCAxMTg3MCwgMTE4NzIsIDExODc0LCAxMTg3NiwgCi0gICAgMTE4NzgsIDExODgwLCAxMTg4MiwgMTE4ODQsIDExODg2LCAxMTg4OCwgMTE4OTAsIDExODkyLCAxMTg5NCwgMTE4OTYsIAotICAgIDExODk4LCAxMTkwMCwgMTE5MDIsIDExOTA0LCAxMTkwNiwgMTE5MDgsIDExOTEwLCAxMTkxMiwgMTE5MTQsIDExOTE2LCAKLSAgICAxMTkxOCwgMTE5MjAsIDExOTIyLCAxMTkyNCwgMTE5MjYsIDExOTI4LCAxMTkzMCwgMTE5MzIsIDExOTM0LCAxMTkzNiwgCi0gICAgMTE5MzgsIDExOTQwLCAxMTk0MiwgMTE5NDQsIDExOTQ2LCAxMTk0OCwgMTE5NTAsIDExOTUyLCAxMTk1NCwgMTE5NTYsIAotICAgIDExOTU4LCAxMTk2MCwgMTE5NjIsIDExOTY0LCAxMTk2NiwgMTE5NjgsIDExOTcwLCAxMTk3MiwgMTE5NzQsIDExOTc2LCAKLSAgICAxMTk3OCwgMTE5ODAsIDExOTgyLCAxMTk4NCwgMTE5ODYsIDExOTg4LCAxMTk5MCwgMTE5OTIsIDExOTk0LCAxMTk5NiwgCi0gICAgMTE5OTgsIDEyMDAwLCAxMjAwMiwgMTIwMDQsIDEyMDA2LCAxMjAwOCwgMTIwMTAsIDEyMDEyLCAxMjAxNCwgMTIwMTYsIAotICAgIDEyMDE4LCAxMjAyMCwgMTIwMjIsIDEyMDI0LCAxMjAyNiwgMTIwMjgsIDEyMDMwLCAxMjAzMiwgMTIwMzQsIDEyMDM2LCAKLSAgICAxMjAzOCwgMTIwNDAsIDEyMDQyLCAxMjA0NCwgMTIwNDYsIDEyMDQ4LCAxMjA1MCwgMTIwNTIsIDEyMDU0LCAxMjA1NiwgCi0gICAgMTIwNTgsIDEyMDYwLCAxMjA2MiwgMTIwNjQsIDEyMDY2LCAxMjA2OCwgMTIwNzAsIDEyMDcyLCAxMjA3NCwgMTIwNzYsIAotICAgIDEyMDc4LCAxMjA4MCwgMTIwODIsIDEyMDg0LCAxMjA4NiwgMTIwODgsIDEyMDkwLCAxMjA5MiwgMTIwOTQsIDEyMDk2LCAKLSAgICAxMjA5OCwgMTIxMDAsIDEyMTAyLCAxMjEwNCwgMTIxMDYsIDEyMTA4LCAxMjExMCwgMTIxMTIsIDEyMTE0LCAxMjExNiwgCi0gICAgMTIxMTgsIDEyMTIwLCAxMjEyMiwgMTIxMjQsIDEyMTI2LCAxMjEyOCwgMTIxMzAsIDEyMTMyLCAxMjEzNCwgMTIxMzYsIAotICAgIDEyMTM4LCAxMjE0MCwgMTIxNDIsIDEyMTQ0LCAxMjE0NiwgMTIxNDgsIDEyMTUwLCAxMjE1MiwgMTIxNTQsIDEyMTU2LCAKLSAgICAxMjE1OCwgMTIxNjAsIDEyMTYyLCAxMjE2NCwgMTIxNjYsIDEyMTY4LCAxMjE3MCwgMTIxNzIsIDEyMTc0LCAxMjE3NiwgCi0gICAgMTIxNzgsIDEyMTgwLCAxMjE4MiwgMTIxODQsIDEyMTg2LCAxMjE4OCwgMTIxOTAsIDEyMTkyLCAxMjE5NCwgMTIxOTYsIAotICAgIDEyMTk4LCAxMjIwMCwgMTIyMDIsIDEyMjA0LCAxMjIwNiwgMTIyMDgsIDEyMjEwLCAxMjIxMiwgMTIyMTQsIDEyMjE2LCAKLSAgICAxMjIxOCwgMTIyMjAsIDEyMjIyLCAxMjIyNCwgMTIyMjYsIDEyMjI4LCAxMjIzMCwgMTIyMzIsIDEyMjM0LCAxMjIzNiwgCi0gICAgMTIyMzgsIDEyMjQwLCAxMjI0MiwgMTIyNDQsIDEyMjQ2LCAxMjI0OCwgMTIyNTAsIDEyMjUyLCAxMjI1NCwgMTIyNTYsIAotICAgIDEyMjU4LCAxMjI2MCwgMTIyNjIsIDEyMjY0LCAxMjI2NiwgMTIyNjgsIDEyMjcwLCAxMjI3MiwgMTIyNzQsIDEyMjc2LCAKLSAgICAxMjI3OCwgMTIyODAsIDEyMjgyLCAxMjI4NCwgMTIyODYsIDEyMjg4LCAxMjI5MCwgMTIyOTIsIDEyMjk0LCAxMjI5NiwgCi0gICAgMTIyOTgsIDEyMzAwLCAxMjMwMiwgMTIzMDQsIDEyMzA2LCAxMjMwOCwgMTIzMTAsIDEyMzEyLCAxMjMxNCwgMTIzMTYsIAotICAgIDEyMzE4LCAxMjMyMCwgMTIzMjIsIDEyMzI0LCAxMjMyNiwgMTIzMjgsIDEyMzMwLCAxMjMzMiwgMTIzMzQsIDEyMzM2LCAKLSAgICAxMjMzOCwgMTIzNDAsIDEyMzQyLCAxMjM0NCwgMTIzNDYsIDEyMzQ4LCAxMjM1MCwgMTIzNTIsIDEyMzU0LCAxMjM1NiwgCi0gICAgMTIzNTgsIDEyMzYwLCAxMjM2MiwgMTIzNjQsIDEyMzY2LCAwLCAwLCAxMjM2OCwgMTIzNzAsIDEyMzcyLCAxMjM3NCwgCi0gICAgMTIzNzYsIDEyMzc4LCAxMjM4MCwgMTIzODIsIDEyMzg0LCAxMjM4NiwgMTIzODgsIDEyMzkwLCAxMjM5MiwgMTIzOTQsIAotICAgIDEyMzk2LCAxMjM5OCwgMTI0MDAsIDEyNDAyLCAxMjQwNCwgMTI0MDYsIDEyNDA4LCAxMjQxMCwgMTI0MTIsIDEyNDE0LCAKLSAgICAxMjQxNiwgMTI0MTgsIDEyNDIwLCAxMjQyMiwgMTI0MjQsIDEyNDI2LCAxMjQyOCwgMTI0MzAsIDEyNDMyLCAxMjQzNCwgCi0gICAgMTI0MzYsIDEyNDM4LCAxMjQ0MCwgMTI0NDIsIDEyNDQ0LCAxMjQ0NiwgMTI0NDgsIDEyNDUwLCAxMjQ1MiwgMTI0NTQsIAotICAgIDEyNDU2LCAxMjQ1OCwgMTI0NjAsIDEyNDYyLCAxMjQ2NCwgMTI0NjYsIDEyNDY4LCAxMjQ3MSwgMTI0NzQsIDEyNDc3LCAKLSAgICAxMjQ4MCwgMTI0ODMsIDEyNDg2LCAxMjQ4OSwgMTI0OTIsIDEyNDk1LCAxMjQ5OCwgMCwgMCwgMCwgMCwgMCwgMTI1MDEsIAotICAgIDEyNTA1LCAxMjUwOSwgMTI1MTMsIDEyNTE3LCAxMjUyMSwgMTI1MjUsIDEyNTI5LCAxMjUzMywgMTI1MzcsIDEyNTQxLCAKLSAgICAxMjU0NSwgMTI1NDksIDEyNTUzLCAxMjU1NywgMTI1NjEsIDEyNTY1LCAxMjU2OSwgMTI1NzMsIDEyNTc3LCAxMjU4MSwgCi0gICAgMTI1ODUsIDEyNTg5LCAxMjU5MywgMTI1OTcsIDEyNjAxLCAxMjYwNSwgMTI2MDksIDEyNjExLCAxMjYxMywgMTI2MTYsIDAsIAotICAgIDEyNjE5LCAxMjYyMSwgMTI2MjMsIDEyNjI1LCAxMjYyNywgMTI2MjksIDEyNjMxLCAxMjYzMywgMTI2MzUsIDEyNjM3LCAKLSAgICAxMjYzOSwgMTI2NDEsIDEyNjQzLCAxMjY0NSwgMTI2NDcsIDEyNjQ5LCAxMjY1MSwgMTI2NTMsIDEyNjU1LCAxMjY1NywgCi0gICAgMTI2NTksIDEyNjYxLCAxMjY2MywgMTI2NjUsIDEyNjY3LCAxMjY2OSwgMTI2NzEsIDEyNjc0LCAxMjY3NywgMTI2ODAsIAotICAgIDEyNjgzLCAxMjY4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI2OTAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNjkzLCAxMjY5NiwgMTI2OTksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzAxLCAxMjcwMywgMTI3MDUsIDEyNzA3LCAxMjcwOSwgMTI3MTEsIAotICAgIDEyNzEzLCAxMjcxNSwgMTI3MTcsIDEyNzE5LCAxMjcyMSwgMTI3MjMsIDEyNzI1LCAxMjcyNywgMTI3MjksIDEyNzMxLCAKLSAgICAxMjczMywgMTI3MzUsIDEyNzM3LCAxMjczOSwgMTI3NDEsIDEyNzQzLCAxMjc0NSwgMTI3NDcsIDEyNzQ5LCAxMjc1MSwgCi0gICAgMTI3NTMsIDEyNzU1LCAxMjc1NywgMTI3NTksIDEyNzYxLCAxMjc2MywgMTI3NjUsIDEyNzY3LCAxMjc2OSwgMTI3NzEsIAotICAgIDEyNzczLCAxMjc3NSwgMTI3NzcsIDEyNzc5LCAxMjc4MSwgMTI3ODMsIDEyNzg1LCAwLCAwLCAwLCAwLCAwLCAxMjc4NywgCi0gICAgMTI3OTEsIDEyNzk1LCAxMjc5OSwgMTI4MDMsIDEyODA3LCAxMjgxMSwgMTI4MTUsIDEyODE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMjgyMywgMTI4MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODI3LCAxMjgyOSwgMTI4MzEsIDEyODMzLCAxMjgzNSwgCi0gICAgMTI4MzcsIDEyODM5LCAxMjg0MSwgMTI4NDMsIDEyODQ1LCAxMjg0NywgMTI4NDksIDEyODUxLCAxMjg1MywgMTI4NTUsIAotICAgIDEyODU3LCAxMjg1OSwgMTI4NjEsIDEyODYzLCAxMjg2NSwgMTI4NjcsIDEyODY5LCAxMjg3MSwgMTI4NzMsIDEyODc1LCAKLSAgICAxMjg3NywgMTI4NzksIDEyODgxLCAxMjg4MywgMTI4ODUsIDEyODg3LCAxMjg4OSwgMTI4OTEsIDEyODkzLCAxMjg5NSwgCi0gICAgMTI4OTcsIDEyODk5LCAxMjkwMSwgMTI5MDMsIDEyOTA1LCAxMjkwNywgMTI5MDksIDEyOTExLCAxMjkxMywgMTI5MTUsIAotICAgIDEyOTE3LCAxMjkxOSwgMTI5MjEsIDEyOTIzLCAxMjkyNSwgMTI5MjcsIDEyOTI5LCAxMjkzMSwgMTI5MzMsIDEyOTM1LCAKLSAgICAxMjkzNywgMTI5MzksIDEyOTQxLCAxMjk0MywgMTI5NDUsIDEyOTQ3LCAxMjk0OSwgMTI5NTEsIDEyOTUzLCAxMjk1NSwgCi0gICAgMTI5NTcsIDEyOTU5LCAxMjk2MSwgMTI5NjMsIDEyOTY1LCAxMjk2NywgMTI5NjksIDEyOTcxLCAxMjk3MywgMTI5NzUsIAotICAgIDEyOTc3LCAxMjk3OSwgMTI5ODEsIDEyOTgzLCAxMjk4NSwgMTI5ODcsIDEyOTg5LCAxMjk5MSwgMTI5OTMsIDEyOTk1LCAKLSAgICAxMjk5NywgMTI5OTksIDEzMDAxLCAxMzAwMywgMTMwMDUsIDEzMDA3LCAxMzAwOSwgMTMwMTEsIDEzMDEzLCAxMzAxNSwgCi0gICAgMTMwMTcsIDEzMDE5LCAxMzAyMSwgMTMwMjMsIDEzMDI1LCAxMzAyNywgMTMwMjksIDEzMDMxLCAxMzAzMywgMTMwMzUsIAotICAgIDEzMDM3LCAxMzAzOSwgMTMwNDEsIDEzMDQzLCAxMzA0NSwgMTMwNDcsIDEzMDQ5LCAxMzA1MSwgMTMwNTMsIDEzMDU1LCAKLSAgICAxMzA1NywgMTMwNTksIDEzMDYxLCAxMzA2MywgMTMwNjUsIDEzMDY3LCAxMzA2OSwgMTMwNzEsIDEzMDczLCAxMzA3NSwgCi0gICAgMTMwNzcsIDEzMDc5LCAxMzA4MSwgMTMwODMsIDEzMDg1LCAxMzA4NywgMTMwODksIDEzMDkxLCAxMzA5MywgMTMwOTUsIAotICAgIDEzMDk3LCAxMzA5OSwgMTMxMDEsIDEzMTAzLCAxMzEwNSwgMTMxMDcsIDEzMTA5LCAxMzExMSwgMTMxMTMsIDEzMTE1LCAKLSAgICAxMzExNywgMTMxMTksIDEzMTIxLCAxMzEyMywgMTMxMjUsIDEzMTI3LCAxMzEyOSwgMTMxMzEsIDEzMTMzLCAxMzEzNSwgCi0gICAgMTMxMzcsIDEzMTM5LCAxMzE0MSwgMTMxNDMsIDEzMTQ1LCAxMzE0NywgMTMxNDksIDEzMTUxLCAxMzE1MywgMTMxNTUsIAotICAgIDEzMTU3LCAxMzE1OSwgMTMxNjEsIDEzMTYzLCAxMzE2NSwgMTMxNjcsIDEzMTY5LCAxMzE3MSwgMTMxNzMsIDEzMTc1LCAKLSAgICAxMzE3NywgMTMxNzksIDEzMTgxLCAxMzE4MywgMTMxODUsIDEzMTg3LCAxMzE4OSwgMTMxOTEsIDEzMTkzLCAxMzE5NSwgCi0gICAgMTMxOTcsIDEzMTk5LCAxMzIwMSwgMTMyMDMsIDEzMjA1LCAxMzIwNywgMTMyMDksIDEzMjExLCAxMzIxMywgMTMyMTUsIAotICAgIDEzMjE3LCAxMzIxOSwgMTMyMjEsIDEzMjIzLCAxMzIyNSwgMTMyMjcsIDEzMjI5LCAxMzIzMSwgMTMyMzMsIDEzMjM1LCAKLSAgICAxMzIzNywgMTMyMzksIDEzMjQxLCAxMzI0MywgMTMyNDUsIDEzMjQ3LCAxMzI0OSwgMTMyNTEsIDEzMjUzLCAxMzI1NSwgCi0gICAgMTMyNTcsIDEzMjU5LCAxMzI2MSwgMTMyNjMsIDEzMjY1LCAxMzI2NywgMTMyNjksIDEzMjcxLCAxMzI3MywgMTMyNzUsIAotICAgIDEzMjc3LCAxMzI3OSwgMTMyODEsIDEzMjgzLCAxMzI4NSwgMTMyODcsIDEzMjg5LCAxMzI5MSwgMTMyOTMsIDEzMjk1LCAKLSAgICAxMzI5NywgMTMyOTksIDEzMzAxLCAxMzMwMywgMTMzMDUsIDEzMzA3LCAxMzMwOSwgMTMzMTEsIDEzMzEzLCAxMzMxNSwgCi0gICAgMTMzMTcsIDEzMzE5LCAxMzMyMSwgMTMzMjMsIDEzMzI1LCAxMzMyNywgMTMzMjksIDEzMzMxLCAxMzMzMywgMTMzMzUsIAotICAgIDEzMzM3LCAxMzMzOSwgMTMzNDEsIDEzMzQzLCAxMzM0NSwgMTMzNDcsIDEzMzQ5LCAxMzM1MSwgMTMzNTMsIDEzMzU1LCAKLSAgICAxMzM1NywgMTMzNTksIDEzMzYxLCAxMzM2MywgMTMzNjUsIDEzMzY3LCAxMzM2OSwgMTMzNzEsIDEzMzczLCAxMzM3NSwgCi0gICAgMTMzNzcsIDEzMzc5LCAxMzM4MSwgMTMzODMsIDEzMzg1LCAxMzM4NywgMTMzODksIDEzMzkxLCAxMzM5MywgMTMzOTUsIAotICAgIDEzMzk3LCAxMzM5OSwgMTM0MDEsIDEzNDAzLCAxMzQwNSwgMTM0MDcsIDEzNDA5LCAxMzQxMSwgMTM0MTMsIDEzNDE1LCAKLSAgICAxMzQxNywgMTM0MTksIDEzNDIxLCAxMzQyMywgMTM0MjUsIDEzNDI3LCAxMzQyOSwgMTM0MzEsIDEzNDMzLCAxMzQzNSwgCi0gICAgMTM0MzcsIDEzNDM5LCAxMzQ0MSwgMTM0NDMsIDEzNDQ1LCAxMzQ0NywgMTM0NDksIDEzNDUxLCAxMzQ1MywgMTM0NTUsIAotICAgIDEzNDU3LCAxMzQ1OSwgMTM0NjEsIDEzNDYzLCAxMzQ2NSwgMTM0NjcsIDEzNDY5LCAxMzQ3MSwgMTM0NzMsIDEzNDc1LCAKLSAgICAxMzQ3NywgMTM0NzksIDEzNDgxLCAxMzQ4MywgMTM0ODUsIDEzNDg3LCAxMzQ4OSwgMTM0OTEsIDEzNDkzLCAxMzQ5NSwgCi0gICAgMTM0OTcsIDEzNDk5LCAxMzUwMSwgMTM1MDMsIDEzNTA1LCAxMzUwNywgMTM1MDksIDEzNTExLCAxMzUxMywgMTM1MTUsIAotICAgIDEzNTE3LCAxMzUxOSwgMTM1MjEsIDEzNTIzLCAxMzUyNSwgMTM1MjcsIDEzNTI5LCAxMzUzMSwgMTM1MzMsIDEzNTM1LCAKLSAgICAxMzUzNywgMTM1MzksIDEzNTQxLCAxMzU0MywgMTM1NDUsIDEzNTQ3LCAxMzU0OSwgMTM1NTEsIDEzNTUzLCAxMzU1NSwgCi0gICAgMTM1NTcsIDEzNTU5LCAxMzU2MSwgMTM1NjMsIDEzNTY1LCAxMzU2NywgMTM1NjksIDEzNTcxLCAxMzU3MywgMTM1NzUsIAotICAgIDEzNTc3LCAxMzU3OSwgMTM1ODEsIDEzNTgzLCAxMzU4NSwgMTM1ODcsIDEzNTg5LCAxMzU5MSwgMTM1OTMsIDEzNTk1LCAKLSAgICAxMzU5NywgMTM1OTksIDEzNjAxLCAxMzYwMywgMTM2MDUsIDEzNjA3LCAxMzYwOSwgMTM2MTEsIDEzNjEzLCAxMzYxNSwgCi0gICAgMTM2MTcsIDEzNjE5LCAxMzYyMSwgMTM2MjMsIDEzNjI1LCAxMzYyNywgMTM2MjksIDEzNjMxLCAxMzYzMywgMTM2MzUsIAotICAgIDEzNjM3LCAxMzYzOSwgMTM2NDEsIDEzNjQzLCAxMzY0NSwgMTM2NDcsIDEzNjQ5LCAxMzY1MSwgMTM2NTMsIDEzNjU1LCAKLSAgICAxMzY1NywgMTM2NTksIDEzNjYxLCAxMzY2MywgMTM2NjUsIDEzNjY3LCAxMzY2OSwgMTM2NzEsIDEzNjczLCAxMzY3NSwgCi0gICAgMTM2NzcsIDEzNjc5LCAxMzY4MSwgMTM2ODMsIDEzNjg1LCAxMzY4NywgMTM2ODksIDEzNjkxLCAxMzY5MywgMTM2OTUsIAotICAgIDEzNjk3LCAxMzY5OSwgMTM3MDEsIDEzNzAzLCAxMzcwNSwgMTM3MDcsIDEzNzA5LCAxMzcxMSwgMTM3MTMsIDEzNzE1LCAKLSAgICAxMzcxNywgMTM3MTksIDEzNzIxLCAxMzcyMywgMTM3MjUsIDEzNzI3LCAxMzcyOSwgMTM3MzEsIDEzNzMzLCAxMzczNSwgCi0gICAgMTM3MzcsIDEzNzM5LCAxMzc0MSwgMTM3NDMsIDEzNzQ1LCAxMzc0NywgMTM3NDksIDEzNzUxLCAxMzc1MywgMTM3NTUsIAotICAgIDEzNzU3LCAxMzc1OSwgMTM3NjEsIDEzNzYzLCAxMzc2NSwgMTM3NjcsIDEzNzY5LCAxMzc3MSwgMTM3NzMsIDEzNzc1LCAKLSAgICAxMzc3NywgMTM3NzksIDEzNzgxLCAxMzc4MywgMTM3ODUsIDEzNzg3LCAxMzc4OSwgMTM3OTEsIDEzNzkzLCAxMzc5NSwgCi0gICAgMTM3OTcsIDEzNzk5LCAxMzgwMSwgMTM4MDMsIDEzODA1LCAxMzgwNywgMTM4MDksIDEzODExLCAxMzgxMywgMTM4MTUsIAotICAgIDEzODE3LCAxMzgxOSwgMTM4MjEsIDEzODIzLCAxMzgyNSwgMTM4MjcsIDEzODI5LCAxMzgzMSwgMTM4MzMsIDEzODM1LCAKLSAgICAxMzgzNywgMTM4MzksIDEzODQxLCAxMzg0MywgMTM4NDUsIDEzODQ3LCAxMzg0OSwgMTM4NTEsIDEzODUzLCAxMzg1NSwgCi0gICAgMTM4NTcsIDEzODU5LCAxMzg2MSwgMTM4NjMsIDEzODY1LCAxMzg2NywgMTM4NjksIDEzODcxLCAxMzg3MywgMTM4NzUsIAotICAgIDEzODc3LCAxMzg3OSwgMTM4ODEsIDEzODgzLCAxMzg4NSwgMTM4ODcsIDEzODg5LCAxMzg5MSwgMTM4OTMsIDEzODk1LCAKLSAgICAxMzg5NywgMTM4OTksIDEzOTAxLCAxMzkwMywgMTM5MDUsIDEzOTA3LCAxMzkwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NDUsIDEwNDQ4LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTQ2NDEsNDAyICs0NTM5LDYyMyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDUxLCAxMDQ1NCwgMTA0NTcsIDEwNDYwLCAxMDQ2MywgCisgICAgMTA0NjYsIDEwNDY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ3MiwgMTA0NzUsIAorICAgIDEwNDc4LCAxMDQ4MSwgMTA0ODQsIDEwNDg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDQ5MCwgMTA0OTIsIDEwNDk0LCAxMDQ5NiwgMTA0OTgsIDEwNTAwLCAxMDUwMiwgMTA1MDQsIDEwNTA2LCAxMDUwOCwgCisgICAgMTA1MTAsIDEwNTEyLCAxMDUxNCwgMTA1MTYsIDEwNTE4LCAxMDUyMCwgMTA1MjIsIDEwNTI0LCAxMDUyNiwgMTA1MjgsIAorICAgIDEwNTMwLCAxMDUzMiwgMTA1MzQsIDEwNTM2LCAxMDUzOCwgMTA1NDAsIDEwNTQyLCAxMDU0NCwgMTA1NDYsIDEwNTQ4LCAKKyAgICAxMDU1MCwgMTA1NTIsIDEwNTU0LCAxMDU1NiwgMTA1NTgsIDEwNTYwLCAxMDU2MiwgMTA1NjQsIDEwNTY2LCAxMDU2OCwgCisgICAgMTA1NzAsIDEwNTcyLCAxMDU3NCwgMTA1NzYsIDEwNTc4LCAxMDU4MCwgMTA1ODIsIDEwNTg0LCAxMDU4NiwgMTA1ODgsIAorICAgIDEwNTkwLCAxMDU5MiwgMTA1OTQsIDEwNTk2LCAxMDU5OCwgMTA2MDAsIDEwNjAyLCAxMDYwNCwgMTA2MDYsIDEwNjA4LCAKKyAgICAxMDYxMCwgMTA2MTIsIDEwNjE0LCAxMDYxNiwgMTA2MTgsIDEwNjIwLCAxMDYyMiwgMTA2MjQsIDEwNjI2LCAxMDYyOCwgCisgICAgMTA2MzAsIDEwNjMyLCAxMDYzNCwgMTA2MzYsIDEwNjM4LCAxMDY0MCwgMTA2NDIsIDEwNjQ0LCAxMDY0NiwgMTA2NDgsIAorICAgIDEwNjUwLCAxMDY1MiwgMTA2NTQsIDEwNjU2LCAxMDY1OCwgMCwgMTA2NjAsIDEwNjYyLCAxMDY2NCwgMTA2NjYsIDEwNjY4LCAKKyAgICAxMDY3MCwgMTA2NzIsIDEwNjc0LCAxMDY3NiwgMTA2NzgsIDEwNjgwLCAxMDY4MiwgMTA2ODQsIDEwNjg2LCAxMDY4OCwgCisgICAgMTA2OTAsIDEwNjkyLCAxMDY5NCwgMTA2OTYsIDEwNjk4LCAxMDcwMCwgMTA3MDIsIDEwNzA0LCAxMDcwNiwgMTA3MDgsIAorICAgIDEwNzEwLCAxMDcxMiwgMTA3MTQsIDEwNzE2LCAxMDcxOCwgMTA3MjAsIDEwNzIyLCAxMDcyNCwgMTA3MjYsIDEwNzI4LCAKKyAgICAxMDczMCwgMTA3MzIsIDEwNzM0LCAxMDczNiwgMTA3MzgsIDEwNzQwLCAxMDc0MiwgMTA3NDQsIDEwNzQ2LCAxMDc0OCwgCisgICAgMTA3NTAsIDEwNzUyLCAxMDc1NCwgMTA3NTYsIDEwNzU4LCAxMDc2MCwgMTA3NjIsIDEwNzY0LCAxMDc2NiwgMTA3NjgsIAorICAgIDEwNzcwLCAxMDc3MiwgMTA3NzQsIDEwNzc2LCAxMDc3OCwgMTA3ODAsIDEwNzgyLCAxMDc4NCwgMTA3ODYsIDEwNzg4LCAKKyAgICAxMDc5MCwgMTA3OTIsIDEwNzk0LCAxMDc5NiwgMTA3OTgsIDEwODAwLCAwLCAxMDgwMiwgMTA4MDQsIDAsIDAsIDEwODA2LCAKKyAgICAwLCAwLCAxMDgwOCwgMTA4MTAsIDAsIDAsIDEwODEyLCAxMDgxNCwgMTA4MTYsIDEwODE4LCAwLCAxMDgyMCwgMTA4MjIsIAorICAgIDEwODI0LCAxMDgyNiwgMTA4MjgsIDEwODMwLCAxMDgzMiwgMTA4MzQsIDEwODM2LCAxMDgzOCwgMTA4NDAsIDEwODQyLCAwLCAKKyAgICAxMDg0NCwgMCwgMTA4NDYsIDEwODQ4LCAxMDg1MCwgMTA4NTIsIDEwODU0LCAxMDg1NiwgMTA4NTgsIDAsIDEwODYwLCAKKyAgICAxMDg2MiwgMTA4NjQsIDEwODY2LCAxMDg2OCwgMTA4NzAsIDEwODcyLCAxMDg3NCwgMTA4NzYsIDEwODc4LCAxMDg4MCwgCisgICAgMTA4ODIsIDEwODg0LCAxMDg4NiwgMTA4ODgsIDEwODkwLCAxMDg5MiwgMTA4OTQsIDEwODk2LCAxMDg5OCwgMTA5MDAsIAorICAgIDEwOTAyLCAxMDkwNCwgMTA5MDYsIDEwOTA4LCAxMDkxMCwgMTA5MTIsIDEwOTE0LCAxMDkxNiwgMTA5MTgsIDEwOTIwLCAKKyAgICAxMDkyMiwgMTA5MjQsIDEwOTI2LCAxMDkyOCwgMTA5MzAsIDEwOTMyLCAxMDkzNCwgMTA5MzYsIDEwOTM4LCAxMDk0MCwgCisgICAgMTA5NDIsIDEwOTQ0LCAxMDk0NiwgMTA5NDgsIDEwOTUwLCAxMDk1MiwgMTA5NTQsIDEwOTU2LCAxMDk1OCwgMTA5NjAsIAorICAgIDEwOTYyLCAxMDk2NCwgMTA5NjYsIDEwOTY4LCAxMDk3MCwgMTA5NzIsIDEwOTc0LCAxMDk3NiwgMTA5NzgsIDEwOTgwLCAKKyAgICAxMDk4MiwgMTA5ODQsIDEwOTg2LCAxMDk4OCwgMCwgMTA5OTAsIDEwOTkyLCAxMDk5NCwgMTA5OTYsIDAsIDAsIDEwOTk4LCAKKyAgICAxMTAwMCwgMTEwMDIsIDExMDA0LCAxMTAwNiwgMTEwMDgsIDExMDEwLCAxMTAxMiwgMCwgMTEwMTQsIDExMDE2LCAxMTAxOCwgCisgICAgMTEwMjAsIDExMDIyLCAxMTAyNCwgMTEwMjYsIDAsIDExMDI4LCAxMTAzMCwgMTEwMzIsIDExMDM0LCAxMTAzNiwgMTEwMzgsIAorICAgIDExMDQwLCAxMTA0MiwgMTEwNDQsIDExMDQ2LCAxMTA0OCwgMTEwNTAsIDExMDUyLCAxMTA1NCwgMTEwNTYsIDExMDU4LCAKKyAgICAxMTA2MCwgMTEwNjIsIDExMDY0LCAxMTA2NiwgMTEwNjgsIDExMDcwLCAxMTA3MiwgMTEwNzQsIDExMDc2LCAxMTA3OCwgCisgICAgMTEwODAsIDExMDgyLCAwLCAxMTA4NCwgMTEwODYsIDExMDg4LCAxMTA5MCwgMCwgMTEwOTIsIDExMDk0LCAxMTA5NiwgCisgICAgMTEwOTgsIDExMTAwLCAwLCAxMTEwMiwgMCwgMCwgMCwgMTExMDQsIDExMTA2LCAxMTEwOCwgMTExMTAsIDExMTEyLCAKKyAgICAxMTExNCwgMTExMTYsIDAsIDExMTE4LCAxMTEyMCwgMTExMjIsIDExMTI0LCAxMTEyNiwgMTExMjgsIDExMTMwLCAxMTEzMiwgCisgICAgMTExMzQsIDExMTM2LCAxMTEzOCwgMTExNDAsIDExMTQyLCAxMTE0NCwgMTExNDYsIDExMTQ4LCAxMTE1MCwgMTExNTIsIAorICAgIDExMTU0LCAxMTE1NiwgMTExNTgsIDExMTYwLCAxMTE2MiwgMTExNjQsIDExMTY2LCAxMTE2OCwgMTExNzAsIDExMTcyLCAKKyAgICAxMTE3NCwgMTExNzYsIDExMTc4LCAxMTE4MCwgMTExODIsIDExMTg0LCAxMTE4NiwgMTExODgsIDExMTkwLCAxMTE5MiwgCisgICAgMTExOTQsIDExMTk2LCAxMTE5OCwgMTEyMDAsIDExMjAyLCAxMTIwNCwgMTEyMDYsIDExMjA4LCAxMTIxMCwgMTEyMTIsIAorICAgIDExMjE0LCAxMTIxNiwgMTEyMTgsIDExMjIwLCAxMTIyMiwgMTEyMjQsIDExMjI2LCAxMTIyOCwgMTEyMzAsIDExMjMyLCAKKyAgICAxMTIzNCwgMTEyMzYsIDExMjM4LCAxMTI0MCwgMTEyNDIsIDExMjQ0LCAxMTI0NiwgMTEyNDgsIDExMjUwLCAxMTI1MiwgCisgICAgMTEyNTQsIDExMjU2LCAxMTI1OCwgMTEyNjAsIDExMjYyLCAxMTI2NCwgMTEyNjYsIDExMjY4LCAxMTI3MCwgMTEyNzIsIAorICAgIDExMjc0LCAxMTI3NiwgMTEyNzgsIDExMjgwLCAxMTI4MiwgMTEyODQsIDExMjg2LCAxMTI4OCwgMTEyOTAsIDExMjkyLCAKKyAgICAxMTI5NCwgMTEyOTYsIDExMjk4LCAxMTMwMCwgMTEzMDIsIDExMzA0LCAxMTMwNiwgMTEzMDgsIDExMzEwLCAxMTMxMiwgCisgICAgMTEzMTQsIDExMzE2LCAxMTMxOCwgMTEzMjAsIDExMzIyLCAxMTMyNCwgMTEzMjYsIDExMzI4LCAxMTMzMCwgMTEzMzIsIAorICAgIDExMzM0LCAxMTMzNiwgMTEzMzgsIDExMzQwLCAxMTM0MiwgMTEzNDQsIDExMzQ2LCAxMTM0OCwgMTEzNTAsIDExMzUyLCAKKyAgICAxMTM1NCwgMTEzNTYsIDExMzU4LCAxMTM2MCwgMTEzNjIsIDExMzY0LCAxMTM2NiwgMTEzNjgsIDExMzcwLCAxMTM3MiwgCisgICAgMTEzNzQsIDExMzc2LCAxMTM3OCwgMTEzODAsIDExMzgyLCAxMTM4NCwgMTEzODYsIDExMzg4LCAxMTM5MCwgMTEzOTIsIAorICAgIDExMzk0LCAxMTM5NiwgMTEzOTgsIDExNDAwLCAxMTQwMiwgMTE0MDQsIDExNDA2LCAxMTQwOCwgMTE0MTAsIDExNDEyLCAKKyAgICAxMTQxNCwgMTE0MTYsIDExNDE4LCAxMTQyMCwgMTE0MjIsIDExNDI0LCAxMTQyNiwgMTE0MjgsIDExNDMwLCAxMTQzMiwgCisgICAgMTE0MzQsIDExNDM2LCAxMTQzOCwgMTE0NDAsIDExNDQyLCAxMTQ0NCwgMTE0NDYsIDExNDQ4LCAxMTQ1MCwgMTE0NTIsIAorICAgIDExNDU0LCAxMTQ1NiwgMTE0NTgsIDExNDYwLCAxMTQ2MiwgMTE0NjQsIDExNDY2LCAxMTQ2OCwgMTE0NzAsIDExNDcyLCAKKyAgICAxMTQ3NCwgMTE0NzYsIDExNDc4LCAxMTQ4MCwgMTE0ODIsIDExNDg0LCAxMTQ4NiwgMTE0ODgsIDExNDkwLCAxMTQ5MiwgCisgICAgMTE0OTQsIDExNDk2LCAxMTQ5OCwgMTE1MDAsIDExNTAyLCAxMTUwNCwgMTE1MDYsIDExNTA4LCAxMTUxMCwgMTE1MTIsIAorICAgIDExNTE0LCAxMTUxNiwgMTE1MTgsIDExNTIwLCAxMTUyMiwgMTE1MjQsIDExNTI2LCAxMTUyOCwgMTE1MzAsIDExNTMyLCAKKyAgICAxMTUzNCwgMTE1MzYsIDExNTM4LCAxMTU0MCwgMTE1NDIsIDExNTQ0LCAxMTU0NiwgMTE1NDgsIDExNTUwLCAxMTU1MiwgCisgICAgMTE1NTQsIDExNTU2LCAxMTU1OCwgMTE1NjAsIDExNTYyLCAxMTU2NCwgMTE1NjYsIDExNTY4LCAxMTU3MCwgMTE1NzIsIAorICAgIDExNTc0LCAxMTU3NiwgMTE1NzgsIDExNTgwLCAxMTU4MiwgMTE1ODQsIDExNTg2LCAxMTU4OCwgMTE1OTAsIDExNTkyLCAKKyAgICAxMTU5NCwgMTE1OTYsIDExNTk4LCAxMTYwMCwgMTE2MDIsIDExNjA0LCAxMTYwNiwgMTE2MDgsIDExNjEwLCAxMTYxMiwgCisgICAgMTE2MTQsIDExNjE2LCAxMTYxOCwgMTE2MjAsIDExNjIyLCAxMTYyNCwgMTE2MjYsIDExNjI4LCAxMTYzMCwgMTE2MzIsIAorICAgIDExNjM0LCAxMTYzNiwgMTE2MzgsIDExNjQwLCAxMTY0MiwgMTE2NDQsIDExNjQ2LCAxMTY0OCwgMTE2NTAsIDExNjUyLCAKKyAgICAxMTY1NCwgMTE2NTYsIDExNjU4LCAxMTY2MCwgMTE2NjIsIDExNjY0LCAxMTY2NiwgMTE2NjgsIDExNjcwLCAxMTY3MiwgCisgICAgMTE2NzQsIDExNjc2LCAxMTY3OCwgMTE2ODAsIDExNjgyLCAxMTY4NCwgMTE2ODYsIDExNjg4LCAxMTY5MCwgMTE2OTIsIAorICAgIDExNjk0LCAxMTY5NiwgMTE2OTgsIDExNzAwLCAxMTcwMiwgMTE3MDQsIDExNzA2LCAxMTcwOCwgMTE3MTAsIDExNzEyLCAKKyAgICAxMTcxNCwgMTE3MTYsIDExNzE4LCAxMTcyMCwgMTE3MjIsIDExNzI0LCAxMTcyNiwgMTE3MjgsIDExNzMwLCAxMTczMiwgCisgICAgMTE3MzQsIDExNzM2LCAxMTczOCwgMTE3NDAsIDExNzQyLCAxMTc0NCwgMTE3NDYsIDExNzQ4LCAxMTc1MCwgMTE3NTIsIAorICAgIDExNzU0LCAxMTc1NiwgMTE3NTgsIDExNzYwLCAxMTc2MiwgMTE3NjQsIDExNzY2LCAxMTc2OCwgMTE3NzAsIDExNzcyLCAKKyAgICAxMTc3NCwgMTE3NzYsIDExNzc4LCAxMTc4MCwgMTE3ODIsIDExNzg0LCAxMTc4NiwgMTE3ODgsIDExNzkwLCAxMTc5MiwgCisgICAgMTE3OTQsIDExNzk2LCAwLCAwLCAxMTc5OCwgMTE4MDAsIDExODAyLCAxMTgwNCwgMTE4MDYsIDExODA4LCAxMTgxMCwgCisgICAgMTE4MTIsIDExODE0LCAxMTgxNiwgMTE4MTgsIDExODIwLCAxMTgyMiwgMTE4MjQsIDExODI2LCAxMTgyOCwgMTE4MzAsIAorICAgIDExODMyLCAxMTgzNCwgMTE4MzYsIDExODM4LCAxMTg0MCwgMTE4NDIsIDExODQ0LCAxMTg0NiwgMTE4NDgsIDExODUwLCAKKyAgICAxMTg1MiwgMTE4NTQsIDExODU2LCAxMTg1OCwgMTE4NjAsIDExODYyLCAxMTg2NCwgMTE4NjYsIDExODY4LCAxMTg3MCwgCisgICAgMTE4NzIsIDExODc0LCAxMTg3NiwgMTE4NzgsIDExODgwLCAxMTg4MiwgMTE4ODQsIDExODg2LCAxMTg4OCwgMTE4OTAsIAorICAgIDExODkyLCAxMTg5NCwgMTE4OTYsIDExODk4LCAxMTkwMCwgMTE5MDIsIDExOTA0LCAxMTkwNiwgMTE5MDgsIDExOTEwLCAKKyAgICAxMTkxMiwgMTE5MTQsIDExOTE2LCAxMTkxOCwgMTE5MjAsIDExOTIyLCAxMTkyNCwgMTE5MjYsIDExOTI4LCAxMTkzMCwgCisgICAgMTE5MzIsIDExOTM0LCAxMTkzNiwgMTE5MzgsIDExOTQwLCAxMTk0MiwgMTE5NDQsIDExOTQ2LCAxMTk0OCwgMTE5NTAsIAorICAgIDExOTUyLCAxMTk1NCwgMTE5NTYsIDExOTU4LCAxMTk2MCwgMTE5NjIsIDExOTY0LCAxMTk2NiwgMTE5NjgsIDExOTcwLCAKKyAgICAxMTk3MiwgMTE5NzQsIDExOTc2LCAxMTk3OCwgMTE5ODAsIDExOTgyLCAxMTk4NCwgMTE5ODYsIDExOTg4LCAxMTk5MCwgCisgICAgMTE5OTIsIDExOTk0LCAxMTk5NiwgMTE5OTgsIDEyMDAwLCAxMjAwMiwgMTIwMDQsIDEyMDA2LCAxMjAwOCwgMTIwMTAsIAorICAgIDEyMDEyLCAxMjAxNCwgMTIwMTYsIDEyMDE4LCAxMjAyMCwgMTIwMjIsIDEyMDI0LCAxMjAyNiwgMTIwMjgsIDEyMDMwLCAKKyAgICAxMjAzMiwgMTIwMzQsIDEyMDM2LCAxMjAzOCwgMTIwNDAsIDEyMDQyLCAxMjA0NCwgMTIwNDYsIDEyMDQ4LCAxMjA1MCwgCisgICAgMTIwNTIsIDEyMDU0LCAxMjA1NiwgMTIwNTgsIDEyMDYwLCAxMjA2MiwgMTIwNjQsIDEyMDY2LCAxMjA2OCwgMTIwNzAsIAorICAgIDEyMDcyLCAxMjA3NCwgMTIwNzYsIDEyMDc4LCAxMjA4MCwgMTIwODIsIDEyMDg0LCAxMjA4NiwgMTIwODgsIDEyMDkwLCAKKyAgICAxMjA5MiwgMTIwOTQsIDEyMDk2LCAxMjA5OCwgMTIxMDAsIDEyMTAyLCAxMjEwNCwgMTIxMDYsIDEyMTA4LCAxMjExMCwgCisgICAgMTIxMTIsIDEyMTE0LCAxMjExNiwgMTIxMTgsIDEyMTIwLCAxMjEyMiwgMTIxMjQsIDEyMTI2LCAxMjEyOCwgMTIxMzAsIAorICAgIDEyMTMyLCAxMjEzNCwgMTIxMzYsIDEyMTM4LCAxMjE0MCwgMTIxNDIsIDEyMTQ0LCAxMjE0NiwgMTIxNDgsIDEyMTUwLCAKKyAgICAxMjE1MiwgMTIxNTQsIDEyMTU2LCAxMjE1OCwgMTIxNjAsIDEyMTYyLCAxMjE2NCwgMTIxNjYsIDEyMTY4LCAxMjE3MCwgCisgICAgMTIxNzIsIDEyMTc0LCAxMjE3NiwgMTIxNzgsIDEyMTgwLCAxMjE4MiwgMTIxODQsIDEyMTg2LCAxMjE4OCwgMTIxOTAsIAorICAgIDEyMTkyLCAxMjE5NCwgMTIxOTYsIDEyMTk4LCAxMjIwMCwgMTIyMDIsIDEyMjA0LCAxMjIwNiwgMTIyMDgsIDEyMjEwLCAKKyAgICAxMjIxMiwgMTIyMTQsIDEyMjE2LCAxMjIxOCwgMTIyMjAsIDEyMjIyLCAxMjIyNCwgMTIyMjYsIDEyMjI4LCAxMjIzMCwgCisgICAgMTIyMzIsIDEyMjM0LCAxMjIzNiwgMTIyMzgsIDEyMjQwLCAxMjI0MiwgMTIyNDQsIDEyMjQ2LCAxMjI0OCwgMTIyNTAsIAorICAgIDEyMjUyLCAxMjI1NCwgMTIyNTYsIDEyMjU4LCAxMjI2MCwgMTIyNjIsIDEyMjY0LCAxMjI2NiwgMTIyNjgsIDEyMjcwLCAKKyAgICAxMjI3MiwgMTIyNzQsIDEyMjc2LCAxMjI3OCwgMTIyODAsIDEyMjgyLCAxMjI4NCwgMTIyODYsIDEyMjg4LCAxMjI5MCwgCisgICAgMTIyOTIsIDEyMjk0LCAxMjI5NiwgMTIyOTgsIDEyMzAwLCAxMjMwMiwgMTIzMDQsIDEyMzA2LCAxMjMwOCwgMTIzMTAsIAorICAgIDEyMzEyLCAxMjMxNCwgMTIzMTYsIDEyMzE4LCAxMjMyMCwgMTIzMjIsIDEyMzI0LCAxMjMyNiwgMTIzMjgsIDEyMzMwLCAKKyAgICAxMjMzMiwgMTIzMzQsIDEyMzM2LCAxMjMzOCwgMTIzNDAsIDEyMzQyLCAxMjM0NCwgMTIzNDYsIDEyMzQ4LCAxMjM1MCwgCisgICAgMTIzNTIsIDEyMzU0LCAxMjM1NiwgMTIzNTgsIDEyMzYwLCAxMjM2MiwgMTIzNjQsIDEyMzY2LCAxMjM2OCwgMTIzNzAsIAorICAgIDEyMzcyLCAxMjM3NCwgMTIzNzYsIDEyMzc4LCAxMjM4MCwgMCwgMCwgMTIzODIsIDEyMzg0LCAxMjM4NiwgMTIzODgsIAorICAgIDEyMzkwLCAxMjM5MiwgMTIzOTQsIDEyMzk2LCAxMjM5OCwgMTI0MDAsIDEyNDAyLCAxMjQwNCwgMTI0MDYsIDEyNDA4LCAKKyAgICAxMjQxMCwgMTI0MTIsIDEyNDE0LCAxMjQxNiwgMTI0MTgsIDEyNDIwLCAxMjQyMiwgMTI0MjQsIDEyNDI2LCAxMjQyOCwgCisgICAgMTI0MzAsIDEyNDMyLCAxMjQzNCwgMTI0MzYsIDEyNDM4LCAxMjQ0MCwgMTI0NDIsIDEyNDQ0LCAxMjQ0NiwgMTI0NDgsIAorICAgIDEyNDUwLCAxMjQ1MiwgMTI0NTQsIDEyNDU2LCAxMjQ1OCwgMTI0NjAsIDEyNDYyLCAxMjQ2NCwgMTI0NjYsIDEyNDY4LCAKKyAgICAxMjQ3MCwgMTI0NzIsIDEyNDc0LCAxMjQ3NiwgMTI0NzgsIDEyNDgwLCAxMjQ4MiwgMTI0ODQsIDEyNDg2LCAxMjQ4OCwgMCwgCisgICAgMTI0OTAsIDEyNDkyLCAxMjQ5NCwgMTI0OTYsIDEyNDk4LCAxMjUwMCwgMTI1MDIsIDEyNTA0LCAxMjUwNiwgMTI1MDgsIAorICAgIDEyNTEwLCAxMjUxMiwgMTI1MTQsIDEyNTE2LCAxMjUxOCwgMTI1MjAsIDEyNTIyLCAxMjUyNCwgMTI1MjYsIDEyNTI4LCAKKyAgICAxMjUzMCwgMTI1MzIsIDEyNTM0LCAxMjUzNiwgMTI1MzgsIDEyNTQwLCAxMjU0MiwgMCwgMTI1NDQsIDEyNTQ2LCAwLCAKKyAgICAxMjU0OCwgMCwgMCwgMTI1NTAsIDAsIDEyNTUyLCAxMjU1NCwgMTI1NTYsIDEyNTU4LCAxMjU2MCwgMTI1NjIsIDEyNTY0LCAKKyAgICAxMjU2NiwgMTI1NjgsIDEyNTcwLCAwLCAxMjU3MiwgMTI1NzQsIDEyNTc2LCAxMjU3OCwgMCwgMTI1ODAsIDAsIDEyNTgyLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMjU4NCwgMCwgMCwgMCwgMCwgMTI1ODYsIDAsIDEyNTg4LCAwLCAxMjU5MCwgMCwgMTI1OTIsIAorICAgIDEyNTk0LCAxMjU5NiwgMCwgMTI1OTgsIDEyNjAwLCAwLCAxMjYwMiwgMCwgMCwgMTI2MDQsIDAsIDEyNjA2LCAwLCAxMjYwOCwgCisgICAgMCwgMTI2MTAsIDAsIDEyNjEyLCAwLCAxMjYxNCwgMTI2MTYsIDAsIDEyNjE4LCAwLCAwLCAxMjYyMCwgMTI2MjIsIDEyNjI0LCAKKyAgICAxMjYyNiwgMCwgMTI2MjgsIDEyNjMwLCAxMjYzMiwgMTI2MzQsIDEyNjM2LCAxMjYzOCwgMTI2NDAsIDAsIDEyNjQyLCAKKyAgICAxMjY0NCwgMTI2NDYsIDEyNjQ4LCAwLCAxMjY1MCwgMTI2NTIsIDEyNjU0LCAxMjY1NiwgMCwgMTI2NTgsIDAsIDEyNjYwLCAKKyAgICAxMjY2MiwgMTI2NjQsIDEyNjY2LCAxMjY2OCwgMTI2NzAsIDEyNjcyLCAxMjY3NCwgMTI2NzYsIDEyNjc4LCAwLCAxMjY4MCwgCisgICAgMTI2ODIsIDEyNjg0LCAxMjY4NiwgMTI2ODgsIDEyNjkwLCAxMjY5MiwgMTI2OTQsIDEyNjk2LCAxMjY5OCwgMTI3MDAsIAorICAgIDEyNzAyLCAxMjcwNCwgMTI3MDYsIDEyNzA4LCAxMjcxMCwgMTI3MTIsIDAsIDAsIDAsIDAsIDAsIDEyNzE0LCAxMjcxNiwgCisgICAgMTI3MTgsIDAsIDEyNzIwLCAxMjcyMiwgMTI3MjQsIDEyNzI2LCAxMjcyOCwgMCwgMTI3MzAsIDEyNzMyLCAxMjczNCwgCisgICAgMTI3MzYsIDEyNzM4LCAxMjc0MCwgMTI3NDIsIDEyNzQ0LCAxMjc0NiwgMTI3NDgsIDEyNzUwLCAxMjc1MiwgMTI3NTQsIAorICAgIDEyNzU2LCAxMjc1OCwgMTI3NjAsIDEyNzYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMjc2NCwgMTI3NjcsIDEyNzcwLCAxMjc3MywgMTI3NzYsIDEyNzc5LCAxMjc4MiwgMTI3ODUsIAorICAgIDEyNzg4LCAxMjc5MSwgMTI3OTQsIDAsIDAsIDAsIDAsIDAsIDEyNzk3LCAxMjgwMSwgMTI4MDUsIDEyODA5LCAxMjgxMywgCisgICAgMTI4MTcsIDEyODIxLCAxMjgyNSwgMTI4MjksIDEyODMzLCAxMjgzNywgMTI4NDEsIDEyODQ1LCAxMjg0OSwgMTI4NTMsIAorICAgIDEyODU3LCAxMjg2MSwgMTI4NjUsIDEyODY5LCAxMjg3MywgMTI4NzcsIDEyODgxLCAxMjg4NSwgMTI4ODksIDEyODkzLCAKKyAgICAxMjg5NywgMTI5MDEsIDEyOTA1LCAxMjkwNywgMTI5MDksIDEyOTEyLCAwLCAxMjkxNSwgMTI5MTcsIDEyOTE5LCAxMjkyMSwgCisgICAgMTI5MjMsIDEyOTI1LCAxMjkyNywgMTI5MjksIDEyOTMxLCAxMjkzMywgMTI5MzUsIDEyOTM3LCAxMjkzOSwgMTI5NDEsIAorICAgIDEyOTQzLCAxMjk0NSwgMTI5NDcsIDEyOTQ5LCAxMjk1MSwgMTI5NTMsIDEyOTU1LCAxMjk1NywgMTI5NTksIDEyOTYxLCAKKyAgICAxMjk2MywgMTI5NjUsIDEyOTY3LCAxMjk3MCwgMTI5NzMsIDEyOTc2LCAxMjk3OSwgMTI5ODMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTg2LCAxMjk4OSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEyOTk1LCAxMjk5OCwgMTMwMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEzMDAzLCAxMzAwNSwgMTMwMDcsIDEzMDA5LCAxMzAxMSwgMTMwMTMsIDEzMDE1LCAxMzAxNywgMTMwMTksIDEzMDIxLCAKKyAgICAxMzAyMywgMTMwMjUsIDEzMDI3LCAxMzAyOSwgMTMwMzEsIDEzMDMzLCAxMzAzNSwgMTMwMzcsIDEzMDM5LCAxMzA0MSwgCisgICAgMTMwNDMsIDEzMDQ1LCAxMzA0NywgMTMwNDksIDEzMDUxLCAxMzA1MywgMTMwNTUsIDEzMDU3LCAxMzA1OSwgMTMwNjEsIAorICAgIDEzMDYzLCAxMzA2NSwgMTMwNjcsIDEzMDY5LCAxMzA3MSwgMTMwNzMsIDEzMDc1LCAxMzA3NywgMTMwNzksIDEzMDgxLCAKKyAgICAxMzA4MywgMTMwODUsIDEzMDg3LCAwLCAwLCAwLCAwLCAwLCAxMzA4OSwgMTMwOTMsIDEzMDk3LCAxMzEwMSwgMTMxMDUsIAorICAgIDEzMTA5LCAxMzExMywgMTMxMTcsIDEzMTIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEyNSwgMTMxMjcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEzMTI5LCAxMzEzMSwgMTMxMzMsIDEzMTM1LCAxMzEzNywgMTMxMzksIDEzMTQxLCAxMzE0MywgMTMxNDUsIAorICAgIDEzMTQ3LCAxMzE0OSwgMTMxNTEsIDEzMTUzLCAxMzE1NSwgMTMxNTcsIDEzMTU5LCAxMzE2MSwgMTMxNjMsIDEzMTY1LCAKKyAgICAxMzE2NywgMTMxNjksIDEzMTcxLCAxMzE3MywgMTMxNzUsIDEzMTc3LCAxMzE3OSwgMTMxODEsIDEzMTgzLCAxMzE4NSwgCisgICAgMTMxODcsIDEzMTg5LCAxMzE5MSwgMTMxOTMsIDEzMTk1LCAxMzE5NywgMTMxOTksIDEzMjAxLCAxMzIwMywgMTMyMDUsIAorICAgIDEzMjA3LCAxMzIwOSwgMTMyMTEsIDEzMjEzLCAxMzIxNSwgMTMyMTcsIDEzMjE5LCAxMzIyMSwgMTMyMjMsIDEzMjI1LCAKKyAgICAxMzIyNywgMTMyMjksIDEzMjMxLCAxMzIzMywgMTMyMzUsIDEzMjM3LCAxMzIzOSwgMTMyNDEsIDEzMjQzLCAxMzI0NSwgCisgICAgMTMyNDcsIDEzMjQ5LCAxMzI1MSwgMTMyNTMsIDEzMjU1LCAxMzI1NywgMTMyNTksIDEzMjYxLCAxMzI2MywgMTMyNjUsIAorICAgIDEzMjY3LCAxMzI2OSwgMTMyNzEsIDEzMjczLCAxMzI3NSwgMTMyNzcsIDEzMjc5LCAxMzI4MSwgMTMyODMsIDEzMjg1LCAKKyAgICAxMzI4NywgMTMyODksIDEzMjkxLCAxMzI5MywgMTMyOTUsIDEzMjk3LCAxMzI5OSwgMTMzMDEsIDEzMzAzLCAxMzMwNSwgCisgICAgMTMzMDcsIDEzMzA5LCAxMzMxMSwgMTMzMTMsIDEzMzE1LCAxMzMxNywgMTMzMTksIDEzMzIxLCAxMzMyMywgMTMzMjUsIAorICAgIDEzMzI3LCAxMzMyOSwgMTMzMzEsIDEzMzMzLCAxMzMzNSwgMTMzMzcsIDEzMzM5LCAxMzM0MSwgMTMzNDMsIDEzMzQ1LCAKKyAgICAxMzM0NywgMTMzNDksIDEzMzUxLCAxMzM1MywgMTMzNTUsIDEzMzU3LCAxMzM1OSwgMTMzNjEsIDEzMzYzLCAxMzM2NSwgCisgICAgMTMzNjcsIDEzMzY5LCAxMzM3MSwgMTMzNzMsIDEzMzc1LCAxMzM3NywgMTMzNzksIDEzMzgxLCAxMzM4MywgMTMzODUsIAorICAgIDEzMzg3LCAxMzM4OSwgMTMzOTEsIDEzMzkzLCAxMzM5NSwgMTMzOTcsIDEzMzk5LCAxMzQwMSwgMTM0MDMsIDEzNDA1LCAKKyAgICAxMzQwNywgMTM0MDksIDEzNDExLCAxMzQxMywgMTM0MTUsIDEzNDE3LCAxMzQxOSwgMTM0MjEsIDEzNDIzLCAxMzQyNSwgCisgICAgMTM0MjcsIDEzNDI5LCAxMzQzMSwgMTM0MzMsIDEzNDM1LCAxMzQzNywgMTM0MzksIDEzNDQxLCAxMzQ0MywgMTM0NDUsIAorICAgIDEzNDQ3LCAxMzQ0OSwgMTM0NTEsIDEzNDUzLCAxMzQ1NSwgMTM0NTcsIDEzNDU5LCAxMzQ2MSwgMTM0NjMsIDEzNDY1LCAKKyAgICAxMzQ2NywgMTM0NjksIDEzNDcxLCAxMzQ3MywgMTM0NzUsIDEzNDc3LCAxMzQ3OSwgMTM0ODEsIDEzNDgzLCAxMzQ4NSwgCisgICAgMTM0ODcsIDEzNDg5LCAxMzQ5MSwgMTM0OTMsIDEzNDk1LCAxMzQ5NywgMTM0OTksIDEzNTAxLCAxMzUwMywgMTM1MDUsIAorICAgIDEzNTA3LCAxMzUwOSwgMTM1MTEsIDEzNTEzLCAxMzUxNSwgMTM1MTcsIDEzNTE5LCAxMzUyMSwgMTM1MjMsIDEzNTI1LCAKKyAgICAxMzUyNywgMTM1MjksIDEzNTMxLCAxMzUzMywgMTM1MzUsIDEzNTM3LCAxMzUzOSwgMTM1NDEsIDEzNTQzLCAxMzU0NSwgCisgICAgMTM1NDcsIDEzNTQ5LCAxMzU1MSwgMTM1NTMsIDEzNTU1LCAxMzU1NywgMTM1NTksIDEzNTYxLCAxMzU2MywgMTM1NjUsIAorICAgIDEzNTY3LCAxMzU2OSwgMTM1NzEsIDEzNTczLCAxMzU3NSwgMTM1NzcsIDEzNTc5LCAxMzU4MSwgMTM1ODMsIDEzNTg1LCAKKyAgICAxMzU4NywgMTM1ODksIDEzNTkxLCAxMzU5MywgMTM1OTUsIDEzNTk3LCAxMzU5OSwgMTM2MDEsIDEzNjAzLCAxMzYwNSwgCisgICAgMTM2MDcsIDEzNjA5LCAxMzYxMSwgMTM2MTMsIDEzNjE1LCAxMzYxNywgMTM2MTksIDEzNjIxLCAxMzYyMywgMTM2MjUsIAorICAgIDEzNjI3LCAxMzYyOSwgMTM2MzEsIDEzNjMzLCAxMzYzNSwgMTM2MzcsIDEzNjM5LCAxMzY0MSwgMTM2NDMsIDEzNjQ1LCAKKyAgICAxMzY0NywgMTM2NDksIDEzNjUxLCAxMzY1MywgMTM2NTUsIDEzNjU3LCAxMzY1OSwgMTM2NjEsIDEzNjYzLCAxMzY2NSwgCisgICAgMTM2NjcsIDEzNjY5LCAxMzY3MSwgMTM2NzMsIDEzNjc1LCAxMzY3NywgMTM2NzksIDEzNjgxLCAxMzY4MywgMTM2ODUsIAorICAgIDEzNjg3LCAxMzY4OSwgMTM2OTEsIDEzNjkzLCAxMzY5NSwgMTM2OTcsIDEzNjk5LCAxMzcwMSwgMTM3MDMsIDEzNzA1LCAKKyAgICAxMzcwNywgMTM3MDksIDEzNzExLCAxMzcxMywgMTM3MTUsIDEzNzE3LCAxMzcxOSwgMTM3MjEsIDEzNzIzLCAxMzcyNSwgCisgICAgMTM3MjcsIDEzNzI5LCAxMzczMSwgMTM3MzMsIDEzNzM1LCAxMzczNywgMTM3MzksIDEzNzQxLCAxMzc0MywgMTM3NDUsIAorICAgIDEzNzQ3LCAxMzc0OSwgMTM3NTEsIDEzNzUzLCAxMzc1NSwgMTM3NTcsIDEzNzU5LCAxMzc2MSwgMTM3NjMsIDEzNzY1LCAKKyAgICAxMzc2NywgMTM3NjksIDEzNzcxLCAxMzc3MywgMTM3NzUsIDEzNzc3LCAxMzc3OSwgMTM3ODEsIDEzNzgzLCAxMzc4NSwgCisgICAgMTM3ODcsIDEzNzg5LCAxMzc5MSwgMTM3OTMsIDEzNzk1LCAxMzc5NywgMTM3OTksIDEzODAxLCAxMzgwMywgMTM4MDUsIAorICAgIDEzODA3LCAxMzgwOSwgMTM4MTEsIDEzODEzLCAxMzgxNSwgMTM4MTcsIDEzODE5LCAxMzgyMSwgMTM4MjMsIDEzODI1LCAKKyAgICAxMzgyNywgMTM4MjksIDEzODMxLCAxMzgzMywgMTM4MzUsIDEzODM3LCAxMzgzOSwgMTM4NDEsIDEzODQzLCAxMzg0NSwgCisgICAgMTM4NDcsIDEzODQ5LCAxMzg1MSwgMTM4NTMsIDEzODU1LCAxMzg1NywgMTM4NTksIDEzODYxLCAxMzg2MywgMTM4NjUsIAorICAgIDEzODY3LCAxMzg2OSwgMTM4NzEsIDEzODczLCAxMzg3NSwgMTM4NzcsIDEzODc5LCAxMzg4MSwgMTM4ODMsIDEzODg1LCAKKyAgICAxMzg4NywgMTM4ODksIDEzODkxLCAxMzg5MywgMTM4OTUsIDEzODk3LCAxMzg5OSwgMTM5MDEsIDEzOTAzLCAxMzkwNSwgCisgICAgMTM5MDcsIDEzOTA5LCAxMzkxMSwgMTM5MTMsIDEzOTE1LCAxMzkxNywgMTM5MTksIDEzOTIxLCAxMzkyMywgMTM5MjUsIAorICAgIDEzOTI3LCAxMzkyOSwgMTM5MzEsIDEzOTMzLCAxMzkzNSwgMTM5MzcsIDEzOTM5LCAxMzk0MSwgMTM5NDMsIDEzOTQ1LCAKKyAgICAxMzk0NywgMTM5NDksIDEzOTUxLCAxMzk1MywgMTM5NTUsIDEzOTU3LCAxMzk1OSwgMTM5NjEsIDEzOTYzLCAxMzk2NSwgCisgICAgMTM5NjcsIDEzOTY5LCAxMzk3MSwgMTM5NzMsIDEzOTc1LCAxMzk3NywgMTM5NzksIDEzOTgxLCAxMzk4MywgMTM5ODUsIAorICAgIDEzOTg3LCAxMzk4OSwgMTM5OTEsIDEzOTkzLCAxMzk5NSwgMTM5OTcsIDEzOTk5LCAxNDAwMSwgMTQwMDMsIDE0MDA1LCAKKyAgICAxNDAwNywgMTQwMDksIDE0MDExLCAxNDAxMywgMTQwMTUsIDE0MDE3LCAxNDAxOSwgMTQwMjEsIDE0MDIzLCAxNDAyNSwgCisgICAgMTQwMjcsIDE0MDI5LCAxNDAzMSwgMTQwMzMsIDE0MDM1LCAxNDAzNywgMTQwMzksIDE0MDQxLCAxNDA0MywgMTQwNDUsIAorICAgIDE0MDQ3LCAxNDA0OSwgMTQwNTEsIDE0MDUzLCAxNDA1NSwgMTQwNTcsIDE0MDU5LCAxNDA2MSwgMTQwNjMsIDE0MDY1LCAKKyAgICAxNDA2NywgMTQwNjksIDE0MDcxLCAxNDA3MywgMTQwNzUsIDE0MDc3LCAxNDA3OSwgMTQwODEsIDE0MDgzLCAxNDA4NSwgCisgICAgMTQwODcsIDE0MDg5LCAxNDA5MSwgMTQwOTMsIDE0MDk1LCAxNDA5NywgMTQwOTksIDE0MTAxLCAxNDEwMywgMTQxMDUsIAorICAgIDE0MTA3LCAxNDEwOSwgMTQxMTEsIDE0MTEzLCAxNDExNSwgMTQxMTcsIDE0MTE5LCAxNDEyMSwgMTQxMjMsIDE0MTI1LCAKKyAgICAxNDEyNywgMTQxMjksIDE0MTMxLCAxNDEzMywgMTQxMzUsIDE0MTM3LCAxNDEzOSwgMTQxNDEsIDE0MTQzLCAxNDE0NSwgCisgICAgMTQxNDcsIDE0MTQ5LCAxNDE1MSwgMTQxNTMsIDE0MTU1LCAxNDE1NywgMTQxNTksIDE0MTYxLCAxNDE2MywgMTQxNjUsIAorICAgIDE0MTY3LCAxNDE2OSwgMTQxNzEsIDE0MTczLCAxNDE3NSwgMTQxNzcsIDE0MTc5LCAxNDE4MSwgMTQxODMsIDE0MTg1LCAKKyAgICAxNDE4NywgMTQxODksIDE0MTkxLCAxNDE5MywgMTQxOTUsIDE0MTk3LCAxNDE5OSwgMTQyMDEsIDE0MjAzLCAxNDIwNSwgCisgICAgMTQyMDcsIDE0MjA5LCAxNDIxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiAvKiBORkMgcGFpcnMgKi8KICNkZWZpbmUgQ09NUF9TSElGVCAyCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgY29tcF9pbmRleFtdID0gewogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMsIDAsIDAsIDAsIDAsIDAsIDAsIDQsIDUsIDYsIDcsIDgsIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwLCAwLCAwLCAxMSwgMCwgMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzLCAxNCwgCi0gICAgMTUsIDAsIDAsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxLCAzMiwgMzMsIDAsIDAsIDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzNSwgMzYsIDM3LCAzOCwgMzksIDQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCAwLCAKLSAgICA1MCwgMCwgNTEsIDUyLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDU1LCA1NiwgNTcsIDU4LCA1OSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNjAsIDYxLCAwLCAwLCA2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjMsIDY0LCA2NSwgMCwgCi0gICAgNjYsIDY3LCA2OCwgMCwgMCwgMCwgMCwgMCwgMCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgNzUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDc2LCAwLCA3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzgsIDc5LCAwLCA4MCwgODEsIDgyLCAKLSAgICA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODQsIDg1LCA4NiwgMCwgODcsIDg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA4OSwgOTAsIDAsIDkxLCA5MiwgOTMsIDAsIDAsIDAsIDAsIDAsIDAsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAxLCAwLCAwLCAxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMywgCi0gICAgMTA0LCAwLCAwLCAxMDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTA3LCAxMDgsIDEwOSwgMCwgMTEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTEsIDExMiwgCi0gICAgMCwgMTEzLCAxMTQsIDAsIDExNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE2LCAxMTcsIDExOCwgMTE5LCAxMjAsIDEyMSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIyLCAwLCAwLCAxMjMsIDAsIDEyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI1LCAKLSAgICAxMjYsIDEyNywgMTI4LCAwLCAxMjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMCwgMCwgMTMxLCAxMzIsIDEzMywgCi0gICAgMTM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQzLCAxNDQsIDE0NSwgMTQ2LCAwLCAKLSAgICAxNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMTUyLCAxNTMsIDE1NCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTU1LCAxNTYsIDE1NywgMTU4LCAxNTksIDE2MCwgMTYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjIsIAotICAgIDAsIDE2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY0LCAwLCAwLCAxNjUsIDE2NiwgMTY3LCAwLCAxNjgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE2OSwgMCwgMCwgMTcwLCAxNzEsIDE3MiwgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNzQsIDE3NSwgMCwgMCwgMTc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzcsIDE3OCwgMTc5LCAxODAsIDAsIDE4MSwgCi0gICAgMTgyLCAxODMsIDAsIDAsIDAsIDAsIDAsIDAsIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAwLCAxODksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE5MCwgMTkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOTIsIDE5MywgMTk0LCAKLSAgICAxOTUsIDE5NiwgMTk3LCAxOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5OSwgMjAwLCAyMDEsIDAsIDIwMiwgMjAzLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMjA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyMTAsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMjE1LCAyMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxNywgMCwgMCwgMCwgCi0gICAgMjE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTksIDIyMCwgMjIxLCAyMjIsIDAsIDIyMywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjUsIDIyNiwgMjI3LCAwLCAKLSAgICAyMjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyOSwgMjMwLCAyMzEsIDAsIDIzMiwgMCwgMjMzLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAyMzQsIDIzNSwgMCwgMCwgMCwgMCwgMCwgMjM2LCAwLCAwLCAwLCAwLCAwLCAwLCAyMzcsIDIzOCwgMjM5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ1LCAyNDYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjQ4LCAyNDksIDI1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUxLCAyNTIsIDI1MywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1NiwgMjU3LCAwLCAyNTgsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDI1OSwgMjYwLCAyNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjY2LCAyNjcsIDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzAsIDI3MSwgMjcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNzMsIDI3NCwgMjc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc4LCAyNzksIAotICAgIDAsIDI4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgxLCAyODIsIDI4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjg0LCAyODUsIDI4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODgsIDI4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjkzLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzMDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMSwgMzAyLCAzMDMsIDAsIDAsIDMwNCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMzA1LCAzMDYsIDMwNywgMCwgMzA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDksIAotICAgIDMxMCwgMzExLCAwLCAzMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMywgMCwgMzE0LCAwLCAzMTUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE3LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDMxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMzI2LCAzMjcsIDAsIDMyOCwgMzI5LCAwLCAwLCAzMzAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzMSwgMCwgCi0gICAgMCwgMzMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzMsIDMzNCwgMCwgMCwgMzM1LCAwLCAwLCAwLCAzMzYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDMzNywgMzM4LCAzMzksIDAsIDM0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQxLCAwLCAwLCAKLSAgICAzNDIsIDM0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAzNDUsIDM0NiwgMzQ3LCAwLCAzNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0OSwgMCwgMCwgMCwgCi0gICAgMzUwLCAwLCAwLCAzNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUzLCAwLCAwLCAwLCAwLCAwLCAzNTQsIDM1NSwgMzU2LCAwLCAzNTcsIDAsIAotICAgIDAsIDM1OCwgMzU5LCAwLCAwLCAwLCAwLCAwLCAzNjAsIDAsIDAsIDAsIDM2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzYyLCAwLCAwLCAzNjMsIDM2NCwgMCwgMCwgMzY1LCAwLCAwLCAwLCAwLCAwLCAwLCAzNjYsIDM2NywgMCwgMzY4LCAwLCAwLCAKLSAgICAwLCAzNjksIDAsIDAsIDAsIDAsIDAsIDM3MCwgMzcxLCAwLCAwLCAzNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDM3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc0LCAzNzUsIDM3NiwgMzc3LCAzNzgsIDAsIDAsIAotICAgIDM3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMzgwLCAwLCAwLCAzODEsIDAsIDAsIDAsIDM4MiwgMCwgMCwgMCwgMCwgMCwgMzgzLCAKLSAgICAzODQsIDAsIDAsIDAsIDAsIDAsIDM4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMzg2LCAwLCAwLCAwLCAwLCAwLCAwLCAzODcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg5LCAzOTAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMzkyLCAzOTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMzk1LCAzOTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAzOTksIDQwMCwgNDAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDIsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA0LCAKLSAgICA0MDUsIDQwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA0MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEwLCA0MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEzLCA0MTQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTcsIDQxOCwgNDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyMSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIyLCA0MjMsIDQyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzMywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0MzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzNiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQzLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0OCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0NTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTMsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDU1LCA0NTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNCwgNSwgNiwgNywgOCwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAsIDAsIDAsIDExLCAwLCAxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMsIAorICAgIDE0LCAxNSwgMCwgMCwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxOCwgMCwgMTksIDIwLCAyMSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMCwgMzEsIDMyLCAwLCAwLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMzQsIDM1LCAzNiwgMCwgMzcsIDM4LCAzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAsIDQxLCA0MiwgNDMsIDQ0LCAKKyAgICA0NSwgNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgMCwgNDksIDAsIDUwLCA1MSwgNTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzLCAwLCA1NCwgMCwgNTUsIDU2LCA1NywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgsIDU5LCAwLCAwLCA2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjEsIDYyLCAKKyAgICA2MywgMCwgNjQsIDY1LCA2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNzMsIDc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NSwgNzYsIDc3LCAKKyAgICA3OCwgNzksIDgwLCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODIsIDgzLCA4NCwgMCwgODUsIDg2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA4NywgODgsIDAsIDg5LCA5MCwgOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkyLCA5MywgOTQsIAorICAgIDk1LCA5NiwgOTcsIDk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5OSwgMCwgMCwgMCwgMTAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMDEsIDEwMiwgMCwgMCwgMTAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNSwgMTA2LCAxMDcsIDAsIDEwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTA5LCAxMTAsIDExMSwgMCwgMTEyLCAwLCAxMTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNCwgMTE1LCAxMTYsIAorICAgIDExNywgMTE4LCAxMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMCwgMCwgMCwgMTIxLCAwLCAxMjIsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEyMywgMTI0LCAxMjUsIDAsIDAsIDEyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3LCAKKyAgICAxMjgsIDAsIDEyOSwgMTMwLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIAorICAgIDEzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDAsIDE0MSwgMTQyLCAwLCAwLCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ1LCAxNDYsIDAsIDE0NywgCisgICAgMTQ4LCAxNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MCwgMTUxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTU3LCAwLCAxNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1OSwgMCwgMTYwLCAKKyAgICAwLCAxNjEsIDE2MiwgMTYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjQsIDAsIDE2NSwgMCwgMTY2LCAxNjcsIDE2OCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTY5LCAxNzAsIDAsIDAsIDE3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcyLCAKKyAgICAxNzMsIDE3NCwgMCwgMTc1LCAxNzYsIDE3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc4LCAxNzksIDE4MCwgMTgxLCAxODIsIAorICAgIDE4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTg0LCAxODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTkwLCAxOTEsIDE5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTkzLCAxOTQsIDE5NSwgCisgICAgMCwgMTk2LCAxOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5OCwgMTk5LCAwLCAyMDAsIDIwMSwgMjAyLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyMDMsIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAyMDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDIxMCwgMCwgMCwgMCwgMjExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTIsIDIxMywgMjE0LCAwLCAyMTUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjE3LCAKKyAgICAyMTgsIDIxOSwgMCwgMjIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjEsIDIyMiwgMjIzLCAwLCAyMjQsIDAsIAorICAgIDIyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjI2LCAwLCAwLCAwLCAwLCAwLCAwLCAyMjcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDIyOCwgMCwgMjI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDIzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjMyLCAyMzMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjM1LCAwLCAyMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzNywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM4LCAwLCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI0MCwgMjQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ0LCAyNDUsIAorICAgIDI0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ3LCAwLCAyNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDI0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTEsIDI1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTQsIDAsIDI1NSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTcsIDAsIAorICAgIDI1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU5LCAyNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDI2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYyLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjMsIDI2NCwgMjY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNjYsIDAsIDI2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY4LCAwLCAyNjksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc0LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyNzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjgzLCAwLCAyODQsIDAsIDI4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg2LCAwLCAyODcsIDAsIAorICAgIDI4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg5LCAwLCAyOTAsIDAsIDI5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjkyLCAwLCAyOTMsIDAsIDI5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyOTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMzA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDUsIDMwNiwgMCwgMzA3LCAKKyAgICAwLCAwLCAwLCAzMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDMwOSwgMCwgMCwgMzEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAzMTEsIDAsIDAsIDMxMiwgMCwgMCwgMCwgMzEzLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTQsIDMxNSwgMCwgMzE2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTcsIDAsIDAsIDMxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMzE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjAsIDMyMSwgMCwgMzIyLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjMsIDAsIDAsIDMyNCwgMCwgMCwgMCwgMzI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAzMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMzI4LCAzMjksIDAsIDMzMCwgMCwgMCwgMCwgMzMxLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzIsIDAsIDAsIAorICAgIDMzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzM0LCAwLCAwLCAzMzUsIDAsIDAsIDAsIDMzNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMzM3LCAzMzgsIDAsIDMzOSwgMCwgMCwgMCwgMzQwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDEsIDAsIDAsIAorICAgIDM0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAzNDQsIDM0NSwgMCwgMzQ2LCAwLCAwLCAwLCAzNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDM0OCwgMCwgMCwgMzQ5LCAKKyAgICAwLCAwLCAwLCAzNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMzUyLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAzNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDM1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzU1LCAwLCAwLCAwLCAwLCAwLCAwLCAzNTYsIDM1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDM2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYxLCAzNjIsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMzY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjUsIDM2NiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMzY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2OSwgMzcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAzNzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3MiwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMzc2LCAzNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3OCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODAsIAorICAgIDM4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAzODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4NCwgMzg1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDM4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAzODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAzOTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMzk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NiwgMzk3LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5OSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMiwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDA5LCA0MTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNCwgNDE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0MTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0MTksIDQyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyMywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMzLCAwLCAKKyAgICAwLCA0MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDAsIDQ0MSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDQyLCA0NDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0NCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0NywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCA0NDksIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTIsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1OSwgMCwgMCwgMCwgMCwgMCwgMCwgNDYwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCA0NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY5LCAwLCAKLSAgICA0NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzMsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzYsIDQ3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNDc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQ4MywgMCwgMCwgMCwgMCwgMCwgMCwgNDg0LCAwLCAwLCAwLCAwLCAwLCAwLCA0ODUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDg3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4OSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0OTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDkzLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NSwgMCwgMCwgMCwgMCwgMCwgMCwgNDk2LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDk5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAyLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDMsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA1LCAKLSAgICA1MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTA4LCAwLCAwLCAwLCAwLCAwLCAwLCA1MDksIDAsIDAsIDAsIDAsIDAsIDAsIDUxMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDUxOSwgMCwgMCwgMCwgMCwgMCwgMCwgNTIwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDUyOCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTI5LCAwLCAwLCAwLCAwLCAwLCAwLCA1MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzMSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTMyLCA1MzMsIDAsIDAsIDAsIDAsIDAsIDUzNCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1MzYsIDAsIDAsIDAsIDAsIDAsIDAsIDUzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzksIDU0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU0MywgMCwgMCwgMCwgMCwgMCwgMCwgNTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA1NDUsIDAsIDAsIDAsIDAsIDAsIDU0NiwgCi0gICAgNTQ3LCAwLCAwLCAwLCAwLCAwLCA1NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDU0OSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDU1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDU1OCwgMCwgMCwgMCwgMCwgMCwgNTU5LCAwLCAwLCAwLCAwLCAwLCAwLCA1NjAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU2MSwgMCwgMCwgMCwgMCwgMCwgMCwgNTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjMsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NzIsIDAsIDAsIDAsIDAsIDAsIDU3MywgMCwgMCwgMCwgMCwgMCwgMCwgNTc0LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU3NiwgMCwgMCwgMCwgMCwgMCwgNTc3LCA1NzgsIDAsIDAsIDAsIDAsIDAsIDU3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY3LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0NjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MiwgMCwgMCwgMCwgMCwgMCwgMCwgNDczLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4MSwgMCwgMCwgMCwgMCwgMCwgMCwgNDgyLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODMsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODYsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkxLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MywgMCwgMCwgMCwgMCwgMCwgMCwgNDk0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NiwgMCwgMCwgMCwgMCwgMCwgMCwgNDk3LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OTgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5OSwgMCwgMCwgMCwgMCwgMCwgMCwgNTAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDUwNSwgMCwgMCwgMCwgMCwgMCwgMCwgNTA2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDUwOCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1MTAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxMSwgMCwgMCwgMCwgMCwgMCwgMCwgNTEyLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1MTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTksIDAsIDAsIDAsIDAsIDAsIDAsIDUyMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTIxLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDUyMywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMzLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDUzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzcsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDUzOCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1MywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2OCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgxLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDU4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1ODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4NiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1ODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4NiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA1ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTEsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDU5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk2LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA2MDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwMSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDMsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNjA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDYwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA4LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxMywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjEsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA2MDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwMSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNjA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDYxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjExLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDYxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA2MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNjIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNjIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDYyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjI2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNjI4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDYzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjMxLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA2MzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzNiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzOSwgNjQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0MiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2NDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDY1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjUyLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA2NTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY1NywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2NTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2MCwgNjYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2MywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2NjUsIDY2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA2NjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2OSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2NzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NzQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDYzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjMxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDYzMywgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgaW50IGNvbXBfZGF0YVtdID0gewotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4MTQsIDAsIDAsIDg4MDAsIDAsIDAsIDg4MTUsIDAsIDAsIDAsIDE5MiwgMTkzLCAKLSAgICAxOTQsIDE5NSwgMjU2LCAyNTgsIDU1MCwgMTk2LCA3ODQyLCAxOTcsIDAsIDQ2MSwgNTEyLCA1MTQsIDAsIDAsIDAsIDc4NDAsIAotICAgIDAsIDc2ODAsIDAsIDAsIDI2MCwgMCwgMCwgNzY4MiwgMCwgMCwgNzY4NCwgMCwgMCwgMCwgMCwgNzY4NiwgMCwgMjYyLCAKLSAgICAyNjQsIDAsIDAsIDAsIDI2NiwgMCwgMCwgMCwgMCwgMjY4LCAwLCAxOTksIDAsIDAsIDAsIDc2OTAsIDAsIDAsIDAsIDAsIAotICAgIDI3MCwgMCwgMCwgMCwgMCwgMCwgNzY5MiwgMCwgMCwgMCwgNzY5NiwgMCwgNzY5OCwgMCwgMCwgNzY5NCwgMCwgMCwgMCwgMCwgCi0gICAgMjAwLCAyMDEsIDIwMiwgNzg2OCwgMjc0LCAyNzYsIDI3OCwgMjAzLCA3ODY2LCAwLCAwLCAyODIsIDUxNiwgNTE4LCAwLCAwLCAKLSAgICAwLCA3ODY0LCAwLCAwLCAwLCA1NTIsIDI4MCwgNzcwNCwgMCwgNzcwNiwgMCwgMCwgMCwgNzcxMCwgMCwgNTAwLCAyODQsIDAsIAotICAgIDc3MTIsIDI4NiwgMjg4LCAwLCAwLCAwLCAwLCA0ODYsIDAsIDI5MCwgMCwgMCwgMCwgMjkyLCAwLCAwLCAwLCA3NzE0LCAKLSAgICA3NzE4LCAwLCAwLCAwLCA1NDIsIDAsIDAsIDAsIDAsIDAsIDc3MTYsIDAsIDAsIDAsIDc3MjAsIDAsIDAsIDc3MjIsIDAsIDAsIAotICAgIDIwNCwgMjA1LCAyMDYsIDI5NiwgMjk4LCAzMDAsIDMwNCwgMjA3LCA3ODgwLCAwLCAwLCA0NjMsIDUyMCwgNTIyLCAwLCAwLCAKLSAgICAwLCA3ODgyLCAwLCAwLCAwLCAwLCAzMDIsIDAsIDAsIDc3MjQsIDAsIDAsIDAsIDMwOCwgMCwgNzcyOCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDg4LCAwLCA3NzMwLCAwLCAwLCAwLCAzMTAsIDAsIDAsIDAsIDAsIDc3MzIsIDAsIDAsIDAsIDAsIDAsIDMxMywgMCwgCi0gICAgMzE3LCAwLCAwLCAwLCAwLCAwLCA3NzM0LCAwLCAwLCAwLCAzMTUsIDAsIDc3NDAsIDAsIDAsIDc3MzgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDc3NDIsIDAsIDAsIDAsIDAsIDc3NDQsIDAsIDAsIDc3NDYsIDAsIDUwNCwgMzIzLCAwLCAyMDksIDAsIDAsIDc3NDgsIAotICAgIDAsIDAsIDAsIDAsIDMyNywgMCwgNzc1MCwgMCwgMCwgMCwgMzI1LCAwLCA3NzU0LCAwLCAwLCA3NzUyLCAwLCAwLCAwLCAwLCAKLSAgICAyMTAsIDIxMSwgMjEyLCAyMTMsIDMzMiwgMzM0LCA1NTgsIDIxNCwgNzg4NiwgMCwgMzM2LCA0NjUsIDUyNCwgNTI2LCAwLCAKLSAgICAwLCA0MTYsIDc4ODQsIDAsIDAsIDAsIDAsIDQ5MCwgMCwgMCwgMCwgMCwgMCwgNzc2NCwgNzc2NiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzQwLCAwLCAwLCAwLCAwLCA3NzY4LCAzNDQsIDUyOCwgNTMwLCAwLCAwLCAwLCA3NzcwLCAwLCAwLCAwLCAzNDIsIDAsIDAsIAotICAgIDAsIDAsIDc3NzQsIDAsIDM0NiwgMzQ4LCAwLCAwLCAwLCA3Nzc2LCAwLCAwLCAwLCAwLCAzNTIsIDAsIDc3NzgsIDAsIDAsIAotICAgIDUzNiwgMzUwLCAwLCAwLCAwLCA3Nzg2LCAwLCAwLCAwLCAwLCAzNTYsIDAsIDc3ODgsIDAsIDAsIDUzOCwgMzU0LCAwLCAKLSAgICA3NzkyLCAwLCAwLCA3NzkwLCAwLCAwLCAwLCAwLCAyMTcsIDIxOCwgMjE5LCAzNjAsIDM2MiwgMzY0LCAwLCAyMjAsIDc5MTAsIAotICAgIDM2NiwgMzY4LCA0NjcsIDUzMiwgNTM0LCAwLCAwLCA0MzEsIDc5MDgsIDc3OTQsIDAsIDAsIDAsIDM3MCwgNzc5OCwgMCwgCi0gICAgNzc5NiwgNzgwNCwgMCwgMCwgMCwgMCwgMCwgNzgwNiwgMCwgNzgwOCwgNzgxMCwgMzcyLCAwLCAwLCAwLCA3ODE0LCA3ODEyLCAKLSAgICAwLCA3ODE2LCAwLCAwLCAwLCA3ODE4LCA3ODIwLCAwLCAwLCAwLCA3OTIyLCAyMjEsIDM3NCwgNzkyOCwgNTYyLCAwLCAKLSAgICA3ODIyLCAzNzYsIDc5MjYsIDAsIDAsIDAsIDAsIDc5MjQsIDAsIDAsIDM3NywgNzgyNCwgMCwgMCwgMCwgMzc5LCAzODEsIDAsIAotICAgIDAsIDAsIDAsIDAsIDc4MjYsIDAsIDAsIDAsIDAsIDc4MjgsIDIyNCwgMjI1LCAyMjYsIDIyNywgMjU3LCAyNTksIDU1MSwgCi0gICAgMjI4LCA3ODQzLCAyMjksIDAsIDQ2MiwgNTEzLCA1MTUsIDAsIDAsIDAsIDc4NDEsIDAsIDc2ODEsIDAsIDAsIDI2MSwgMCwgCi0gICAgMCwgNzY4MywgMCwgMCwgNzY4NSwgMCwgMCwgMCwgMCwgNzY4NywgMCwgMCwgMCwgMCwgMCwgMjYzLCAyNjUsIDAsIDAsIDAsIAotICAgIDI2NywgMCwgMCwgMCwgMCwgMjY5LCAwLCAwLCAwLCAwLCAwLCAyMzEsIDAsIDAsIDAsIDc2OTEsIDI3MSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNzY5MywgMCwgMCwgMCwgNzY5NywgMCwgNzY5OSwgMCwgMCwgNzY5NSwgMjMyLCAyMzMsIDIzNCwgNzg2OSwgMjc1LCAKLSAgICAyNzcsIDI3OSwgMjM1LCA3ODY3LCAwLCAwLCAyODMsIDUxNywgNTE5LCAwLCAwLCAwLCA3ODY1LCAwLCAwLCAwLCA1NTMsIAotICAgIDI4MSwgNzcwNSwgMCwgNzcwNywgMCwgMCwgMCwgNzcxMSwgMCwgMCwgMCwgMCwgMCwgNTAxLCAyODUsIDAsIDc3MTMsIDI4NywgCi0gICAgMjg5LCAwLCAwLCAwLCAwLCA0ODcsIDAsIDAsIDAsIDAsIDAsIDI5MSwgMCwgMCwgMCwgMjkzLCAwLCAwLCAwLCA3NzE1LCAKLSAgICA3NzE5LCAwLCAwLCAwLCA1NDMsIDAsIDAsIDAsIDAsIDAsIDc3MTcsIDAsIDAsIDAsIDc3MjEsIDAsIDAsIDc3MjMsIDAsIAotICAgIDc4MzAsIDIzNiwgMjM3LCAyMzgsIDI5NywgMjk5LCAzMDEsIDAsIDIzOSwgNzg4MSwgMCwgMCwgNDY0LCA1MjEsIDUyMywgMCwgCi0gICAgMCwgMCwgNzg4MywgMCwgMCwgMCwgMCwgMzAzLCAwLCAwLCA3NzI1LCAwLCAwLCAwLCAzMDksIDAsIDAsIDAsIDAsIDQ5NiwgCi0gICAgMCwgMCwgMCwgMCwgNzcyOSwgMCwgNDg5LCAwLCAwLCAwLCAwLCAwLCA3NzMxLCAwLCAwLCAwLCAzMTEsIDc3MzMsIDAsIDAsIAotICAgIDAsIDAsIDAsIDMxNCwgMCwgMzE4LCAwLCAwLCAwLCAwLCAwLCA3NzM1LCAwLCAwLCAwLCAzMTYsIDAsIDc3NDEsIDAsIDAsIAotICAgIDc3MzksIDAsIDc3NDMsIDAsIDAsIDAsIDAsIDc3NDUsIDAsIDAsIDc3NDcsIDAsIDAsIDAsIDAsIDAsIDUwNSwgMzI0LCAwLCAKLSAgICAyNDEsIDAsIDAsIDc3NDksIDAsIDAsIDAsIDAsIDMyOCwgMCwgNzc1MSwgMCwgMCwgMCwgMzI2LCAwLCA3NzU1LCAwLCAwLCAKLSAgICA3NzUzLCAwLCAwLCAwLCAwLCAyNDIsIDI0MywgMjQ0LCAyNDUsIDMzMywgMzM1LCA1NTksIDI0NiwgNzg4NywgMCwgMzM3LCAKLSAgICA0NjYsIDUyNSwgNTI3LCAwLCAwLCA0MTcsIDc4ODUsIDQ5MSwgMCwgMCwgMCwgMCwgMCwgNzc2NSwgMCwgMCwgMCwgMCwgCi0gICAgNzc2NywgMCwgMzQxLCAwLCAwLCAwLCAwLCA3NzY5LCAwLCAwLCAwLCAwLCAzNDUsIDUyOSwgNTMxLCAwLCAwLCAwLCA3NzcxLCAKLSAgICAwLCAwLCAwLCAzNDMsIDAsIDAsIDAsIDAsIDc3NzUsIDAsIDM0NywgMzQ5LCAwLCAwLCAwLCA3Nzc3LCAwLCAwLCAwLCAwLCAKLSAgICAzNTMsIDAsIDc3NzksIDAsIDAsIDUzNywgMzUxLCAwLCAwLCAwLCA3Nzg3LCA3ODMxLCAwLCAwLCAwLCAzNTcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDc3ODksIDAsIDAsIDUzOSwgMzU1LCAwLCA3NzkzLCAwLCAwLCA3NzkxLCAwLCAwLCAwLCAwLCAyNDksIDI1MCwgCi0gICAgMjUxLCAzNjEsIDM2MywgMzY1LCAwLCAyNTIsIDc5MTEsIDM2NywgMzY5LCA0NjgsIDUzMywgNTM1LCAwLCAwLCA0MzIsIAotICAgIDc5MDksIDc3OTUsIDAsIDAsIDAsIDM3MSwgNzc5OSwgMCwgNzc5NywgMCwgMCwgMCwgMCwgNzgwNSwgMCwgNzgwNywgMCwgMCwgCi0gICAgMCwgMCwgMCwgNzgwOSwgNzgxMSwgMzczLCAwLCAwLCAwLCA3ODE1LCA3ODEzLCAwLCA3ODMyLCAwLCAwLCAwLCA3ODE3LCAwLCAKLSAgICAwLCAwLCA3ODE5LCA3ODIxLCAwLCAwLCAwLCA3OTIzLCAyNTMsIDM3NSwgNzkyOSwgNTYzLCAwLCA3ODIzLCAyNTUsIDc5MjcsIAotICAgIDc4MzMsIDAsIDAsIDAsIDc5MjUsIDAsIDAsIDM3OCwgNzgyNSwgMCwgMCwgMCwgMzgwLCAwLCAwLCAwLCAwLCAzODIsIDAsIAotICAgIDc4MjcsIDAsIDAsIDAsIDAsIDc4MjksIDAsIDAsIDAsIDAsIDgxNzMsIDkwMSwgMCwgMCwgMCwgMCwgMCwgMCwgODEyOSwgMCwgCi0gICAgMCwgNzg0NiwgNzg0NCwgMCwgNzg1MCwgMCwgMCwgMCwgMCwgNzg0OCwgMCwgMCwgNDc4LCAwLCAwLCAwLCA1MDYsIDAsIDAsIAotICAgIDUwOCwgMCwgMCwgNDgyLCAwLCAwLCAwLCA3Njg4LCAwLCA3ODcyLCA3ODcwLCAwLCA3ODc2LCAwLCAwLCAwLCAwLCA3ODc0LCAKLSAgICAwLCAwLCAwLCA3NzI2LCAwLCAwLCAwLCAwLCAwLCA3ODkwLCA3ODg4LCAwLCA3ODk0LCAwLCAwLCAwLCAwLCA3ODkyLCAwLCAKLSAgICAwLCAwLCA3NzU2LCAwLCAwLCA1NTYsIDAsIDAsIDc3NTgsIDAsIDAsIDAsIDU1NCwgMCwgMCwgMCwgNTEwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0NzUsIDQ3MSwgMCwgMCwgNDY5LCAwLCAwLCA0NzMsIDAsIDAsIDAsIDc4NDcsIDc4NDUsIDAsIDc4NTEsIDAsIDAsIAotICAgIDAsIDAsIDc4NDksIDAsIDAsIDQ3OSwgMCwgMCwgMCwgNTA3LCAwLCAwLCA1MDksIDAsIDAsIDQ4MywgMCwgMCwgMCwgNzY4OSwgCi0gICAgMCwgNzg3MywgNzg3MSwgMCwgNzg3NywgMCwgMCwgMCwgMCwgNzg3NSwgMCwgMCwgMCwgNzcyNywgMCwgMCwgMCwgMCwgMCwgCi0gICAgNzg5MSwgNzg4OSwgMCwgNzg5NSwgMCwgMCwgMCwgMCwgNzg5MywgMCwgMCwgMCwgNzc1NywgMCwgMCwgNTU3LCAwLCAwLCAKLSAgICA3NzU5LCAwLCAwLCAwLCA1NTUsIDAsIDAsIDAsIDUxMSwgMCwgMCwgMCwgMCwgMCwgNDc2LCA0NzIsIDAsIDAsIDQ3MCwgMCwgCi0gICAgMCwgNDc0LCAwLCAwLCAwLCA3ODU2LCA3ODU0LCAwLCA3ODYwLCAwLCAwLCAwLCAwLCA3ODU4LCAwLCAwLCA3ODU3LCA3ODU1LCAKLSAgICAwLCA3ODYxLCAwLCAwLCAwLCAwLCA3ODU5LCAwLCAwLCA3NzAwLCA3NzAyLCAwLCAwLCAwLCAwLCAwLCA3NzAxLCA3NzAzLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3NzYwLCA3NzYyLCAwLCA3NzYxLCA3NzYzLCAwLCAwLCAwLCA3NzgwLCAwLCAwLCA3NzgxLCAwLCAKLSAgICAwLCA3NzgyLCAwLCAwLCAwLCAwLCAwLCAwLCA3NzgzLCAwLCA3ODAwLCAwLCAwLCA3ODAxLCAwLCAwLCAwLCAwLCA3ODAyLCAKLSAgICAwLCAwLCA3ODAzLCAwLCAwLCAwLCAwLCAwLCA3ODM1LCAwLCAwLCAwLCAwLCA3OTAwLCA3ODk4LCAwLCA3OTA0LCAwLCAwLCAKLSAgICAwLCAwLCA3OTAyLCA3OTA2LCAwLCAwLCAwLCAwLCAwLCA3OTAxLCA3ODk5LCAwLCA3OTA1LCAwLCAwLCAwLCAwLCA3OTAzLCAKLSAgICAwLCAwLCAwLCAwLCA3OTA3LCAwLCA3OTE0LCA3OTEyLCAwLCA3OTE4LCAwLCAwLCAwLCAwLCA3OTE2LCAwLCAwLCAwLCAwLCAKLSAgICA3OTIwLCAwLCA3OTE1LCA3OTEzLCAwLCA3OTE5LCA3OTE3LCAwLCAwLCAwLCAwLCA3OTIxLCAwLCAwLCAwLCAwLCA0OTQsIDAsIAotICAgIDAsIDAsIDQ5MiwgMCwgMCwgNDkzLCAwLCAwLCA0ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MSwgMCwgMCwgMCwgNzcwOCwgMCwgCi0gICAgMCwgNzcwOSwgMCwgNTYwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjEsIDAsIDQ5NSwgMCwgMCwgMCwgODEyMiwgOTAyLCAwLCAwLCAKLSAgICA4MTIxLCA4MTIwLCAwLCAwLCAwLCAwLCA3OTQ0LCA3OTQ1LCAwLCAwLCAwLCAwLCAwLCA4MTI0LCAwLCA4MTM2LCA5MDQsIDAsIAotICAgIDAsIDAsIDAsIDc5NjAsIDc5NjEsIDAsIDAsIDAsIDgxMzgsIDkwNSwgMCwgMCwgMCwgMCwgNzk3NiwgNzk3NywgMCwgODE0MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgODE1NCwgOTA2LCAwLCAwLCA4MTUzLCA4MTUyLCAwLCA5MzgsIDAsIDAsIDc5OTIsIDc5OTMsIDAsIAotICAgIDAsIDAsIDgxODQsIDkwOCwgMCwgMCwgMCwgMCwgODAwOCwgODAwOSwgMCwgMCwgMCwgMCwgMCwgMCwgODE3MiwgMCwgMCwgMCwgCi0gICAgODE3MCwgOTEwLCAwLCAwLCA4MTY5LCA4MTY4LCAwLCA5MzksIDAsIDAsIDAsIDgwMjUsIDAsIDAsIDAsIDgxODYsIDkxMSwgCi0gICAgODA0MCwgODA0MSwgMCwgMCwgMCwgMCwgMCwgODE4OCwgMCwgMCwgODExNiwgMCwgMCwgODEzMiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgODA0OCwgOTQwLCAwLCAwLCA4MTEzLCA4MTEyLCAwLCAwLCAwLCAwLCA3OTM2LCA3OTM3LCAwLCAwLCAwLCAwLCA4MTE4LCAKLSAgICA4MTE1LCAwLCAwLCAwLCAwLCAwLCA4MDUwLCA5NDEsIDc5NTIsIDc5NTMsIDAsIDAsIDAsIDgwNTIsIDk0MiwgMCwgMCwgMCwgCi0gICAgMCwgNzk2OCwgNzk2OSwgMCwgMCwgMCwgMCwgODEzNCwgODEzMSwgMCwgODA1NCwgOTQzLCAwLCAwLCA4MTQ1LCA4MTQ0LCAwLCAKLSAgICA5NzAsIDAsIDAsIDc5ODQsIDc5ODUsIDgxNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwNTYsIDk3MiwgMCwgMCwgMCwgMCwgCi0gICAgODAwMCwgODAwMSwgMCwgODE2NCwgODE2NSwgMCwgMCwgMCwgODA1OCwgOTczLCAwLCAwLCA4MTYxLCA4MTYwLCAwLCA5NzEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDgwMTYsIDgwMTcsIDAsIDAsIDAsIDAsIDgxNjYsIDAsIDAsIDgwNjAsIDk3NCwgMCwgMCwgMCwgCi0gICAgMCwgODAzMiwgODAzMywgODE4MiwgODE3OSwgMCwgMCwgMCwgMCwgMCwgODE0NiwgOTEyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA4MTUxLCAwLCAwLCA4MTYyLCA5NDQsIDAsIDAsIDgxNjcsIDAsIDAsIDAsIDgxODAsIDAsIDAsIDk3OSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgOTgwLCAwLCAwLCAxMDMxLCAwLCAwLCAwLCAwLCAxMjMyLCAwLCAxMjM0LCAwLCAwLCAwLCAwLCAxMDI3LCAwLCAxMDI0LCAKLSAgICAwLCAwLCAwLCAwLCAxMjM4LCAwLCAxMDI1LCAxMjE3LCAwLCAxMjQ0LCAwLCAwLCAxMjQ2LCAwLCAwLCAwLCAxMDM3LCAwLCAKLSAgICAwLCAwLCAxMjUwLCAxMDQ5LCAwLCAxMjUyLCAwLCAwLCAwLCAwLCAxMDM2LCAwLCAwLCAwLCAwLCAxMjU0LCAwLCAwLCAwLCAKLSAgICAxMjYyLCAxMDM4LCAwLCAxMjY0LCAwLCAwLCAxMjY2LCAwLCAwLCAwLCAxMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAxMjcyLCAKLSAgICAwLCAwLCAxMjYwLCAwLCAwLCAwLCAwLCAxMjMzLCAwLCAxMjM1LCAwLCAwLCAwLCAwLCAxMTA3LCAwLCAxMTA0LCAwLCAwLCAKLSAgICAwLCAwLCAxMjM5LCAwLCAxMTA1LCAxMjE4LCAwLCAxMjQ1LCAwLCAwLCAxMjQ3LCAwLCAwLCAwLCAxMTE3LCAwLCAwLCAwLCAKLSAgICAxMjUxLCAxMDgxLCAwLCAxMjUzLCAwLCAwLCAwLCAwLCAxMTE2LCAwLCAwLCAwLCAwLCAxMjU1LCAwLCAwLCAwLCAxMjYzLCAKLSAgICAxMTE4LCAwLCAxMjY1LCAwLCAwLCAxMjY3LCAwLCAwLCAwLCAxMjY5LCAwLCAwLCAwLCAwLCAwLCAwLCAxMjczLCAwLCAwLCAKLSAgICAxMjYxLCAwLCAwLCAxMTExLCAwLCAwLCAwLCAxMTQyLCAwLCAwLCAxMTQzLCAwLCAwLCAwLCAwLCAwLCAxMjQyLCAwLCAwLCAKLSAgICAxMjQzLCAwLCAwLCAxMjU4LCAwLCAwLCAwLCAwLCAwLCAwLCAxMjU5LCAwLCAxNTcwLCAxNTcxLCAxNTczLCAwLCAxNTcyLCAKLSAgICAwLCAwLCAxNTc0LCAwLCAwLCAwLCAwLCAwLCAwLCAxNzMwLCAwLCAwLCAxNzQ3LCAwLCAwLCAxNzI4LCAwLCAwLCAwLCAwLCAKLSAgICAyMzQ1LCAwLCAwLCAyMzUzLCAwLCAwLCAyMzU2LCAwLCAwLCAwLCAyNTA3LCAyNTA4LCAwLCAwLCAwLCAyODkxLCAyODg4LCAKLSAgICAyODkyLCAyOTY0LCAwLCAwLCAwLCAwLCAwLCAzMDE4LCAzMDIwLCAwLCAzMDE5LCAwLCAwLCAwLCAwLCAzMTQ0LCAwLCAwLCAKLSAgICAwLCAwLCAzMjY0LCAwLCAzMjc0LCAzMjcxLCAzMjcyLCAwLCAzMjc1LCAwLCAwLCAwLCAwLCAzNDAyLCAzNDA0LCAwLCAKLSAgICAzNDAzLCAwLCAwLCAwLCAwLCAzNTQ2LCAzNTQ4LCAzNTUwLCAwLCAwLCAwLCAwLCAzNTQ5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0MTM0LCAwLCAwLCAwLCA2OTE4LCAwLCAwLCA2OTIwLCAwLCAwLCA2OTIyLCAwLCAwLCA2OTI0LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA2OTI2LCAwLCAwLCA2OTMwLCAwLCAwLCA2OTcxLCAwLCAwLCA2OTczLCAwLCAwLCAwLCAwLCAwLCAwLCA2OTc2LCAwLCAKLSAgICAwLCA2OTc3LCAwLCAwLCA2OTc5LCAwLCAwLCAwLCA3NzM2LCAwLCAwLCA3NzM3LCAwLCAwLCAwLCAwLCAwLCAwLCA3NzcyLCAKLSAgICAwLCAwLCA3NzczLCAwLCAwLCAwLCAwLCA3Nzg0LCAwLCAwLCA3Nzg1LCAwLCAwLCA3ODUyLCAwLCAwLCA3ODYyLCAwLCAwLCAKLSAgICAwLCA3ODUzLCAwLCAwLCA3ODYzLCAwLCAwLCAwLCA3ODc4LCAwLCAwLCA3ODc5LCAwLCAwLCA3ODk2LCAwLCAwLCA3ODk3LCAKLSAgICAwLCAwLCAwLCAwLCA3OTM4LCA3OTQwLCAwLCAwLCA3OTQyLCA4MDY0LCAwLCA3OTM5LCA3OTQxLCAwLCAwLCA3OTQzLCAKLSAgICA4MDY1LCAwLCAwLCA4MDY2LCAwLCAwLCAwLCAwLCAwLCAwLCA4MDY3LCAwLCAwLCA4MDY4LCAwLCAwLCA4MDY5LCAwLCAwLCAKLSAgICA4MDcwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MDcxLCAwLCA3OTQ2LCA3OTQ4LCAwLCAwLCA3OTUwLCA4MDcyLCAwLCA3OTQ3LCAKLSAgICA3OTQ5LCAwLCAwLCA3OTUxLCA4MDczLCAwLCAwLCA4MDc0LCAwLCAwLCAwLCAwLCAwLCAwLCA4MDc1LCAwLCAwLCA4MDc2LCAKLSAgICAwLCAwLCA4MDc3LCAwLCAwLCA4MDc4LCAwLCAwLCAwLCAwLCAwLCAwLCA4MDc5LCAwLCA3OTU0LCA3OTU2LCAwLCA3OTU1LCAKLSAgICA3OTU3LCAwLCAwLCAwLCAwLCAwLCA3OTYyLCA3OTY0LCAwLCAwLCAwLCAwLCAwLCA3OTYzLCA3OTY1LCAwLCA3OTcwLCAKLSAgICA3OTcyLCAwLCAwLCA3OTc0LCA4MDgwLCAwLCA3OTcxLCA3OTczLCAwLCAwLCA3OTc1LCA4MDgxLCAwLCAwLCA4MDgyLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA4MDgzLCAwLCAwLCA4MDg0LCAwLCAwLCA4MDg1LCAwLCAwLCA4MDg2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA4MDg3LCAwLCA3OTc4LCA3OTgwLCAwLCAwLCA3OTgyLCA4MDg4LCAwLCA3OTc5LCA3OTgxLCAwLCAwLCA3OTgzLCAKLSAgICA4MDg5LCAwLCAwLCA4MDkwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MDkxLCAwLCAwLCA4MDkyLCAwLCAwLCA4MDkzLCAwLCAwLCAKLSAgICA4MDk0LCAwLCAwLCAwLCAwLCAwLCAwLCA4MDk1LCAwLCA3OTg2LCA3OTg4LCAwLCAwLCA3OTkwLCAwLCAwLCA3OTg3LCAKLSAgICA3OTg5LCAwLCAwLCA3OTkxLCAwLCAwLCAwLCAwLCAwLCAwLCA3OTk0LCA3OTk2LCAwLCAwLCAwLCAwLCAwLCAwLCA3OTk4LCAKLSAgICAwLCAwLCA3OTk1LCA3OTk3LCAwLCAwLCA3OTk5LCAwLCAwLCA4MDAyLCA4MDA0LCAwLCA4MDAzLCA4MDA1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCA4MDEwLCA4MDEyLCAwLCAwLCAwLCAwLCAwLCA4MDExLCA4MDEzLCAwLCA4MDE4LCA4MDIwLCAwLCAwLCA4MDIyLCAKLSAgICAwLCAwLCA4MDE5LCA4MDIxLCAwLCAwLCA4MDIzLCAwLCAwLCAwLCAwLCAwLCAwLCA4MDI3LCA4MDI5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA4MDMxLCAwLCAwLCA4MDM0LCA4MDM2LCAwLCAwLCA4MDM4LCA4MDk2LCAwLCA4MDM1LCA4MDM3LCAwLCAwLCAKLSAgICA4MDM5LCA4MDk3LCAwLCAwLCA4MDk4LCAwLCAwLCA4MDk5LCAwLCAwLCAwLCAwLCAwLCAwLCA4MTAwLCAwLCAwLCA4MTAxLCAKLSAgICAwLCAwLCA4MTAyLCAwLCAwLCA4MTAzLCAwLCAwLCAwLCAwLCAwLCA4MDQyLCA4MDQ0LCAwLCAwLCA4MDQ2LCA4MTA0LCAwLCAKLSAgICA4MDQzLCA4MDQ1LCAwLCAwLCA4MDQ3LCA4MTA1LCAwLCAwLCA4MTA2LCAwLCAwLCA4MTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA4MTA4LCAwLCAwLCA4MTA5LCAwLCAwLCA4MTEwLCAwLCAwLCA4MTExLCAwLCAwLCAwLCAwLCAwLCAwLCA4MTE0LCAwLCAwLCAKLSAgICA4MTMwLCAwLCAwLCA4MTc4LCAwLCAwLCA4MTE5LCAwLCAwLCAwLCAwLCAwLCA4MTQxLCA4MTQyLCAwLCAwLCA4MTQzLCAwLCAKLSAgICAwLCAwLCA4MTM1LCAwLCAwLCA4MTgzLCAwLCAwLCAwLCAwLCAwLCA4MTU3LCA4MTU4LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA4MTU5LCAwLCA4NjAyLCAwLCAwLCA4NjAzLCAwLCAwLCAwLCAwLCAwLCAwLCA4NjIyLCAwLCAwLCA4NjUzLCAwLCAwLCAKLSAgICA4NjU1LCAwLCAwLCA4NjU0LCAwLCAwLCAwLCAwLCAwLCAwLCA4NzA4LCAwLCAwLCA4NzEzLCAwLCAwLCA4NzE2LCAwLCAwLCAKLSAgICA4NzQwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NzQyLCAwLCAwLCA4NzY5LCAwLCAwLCA4NzcyLCAwLCAwLCA4Nzc1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA4Nzc3LCAwLCAwLCA4ODEzLCAwLCAwLCA4ODAyLCAwLCAwLCA4ODE2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA4ODE3LCAwLCAwLCA4ODIwLCAwLCAwLCA4ODIxLCAwLCAwLCA4ODI0LCAwLCAwLCAwLCAwLCAwLCAwLCA4ODI1LCAwLCAwLCAKLSAgICA4ODMyLCAwLCAwLCA4ODMzLCAwLCAwLCA4OTI4LCAwLCAwLCAwLCAwLCAwLCAwLCA4OTI5LCAwLCAwLCA4ODM2LCAwLCAwLCAKLSAgICA4ODM3LCAwLCAwLCA4ODQwLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODQxLCAwLCAwLCA4OTMwLCAwLCAwLCA4OTMxLCAwLCAwLCAKLSAgICA4ODc2LCAwLCAwLCAwLCAwLCAwLCAwLCA4ODc3LCAwLCAwLCA4ODc4LCAwLCAwLCA4ODc5LCAwLCAwLCA4OTM4LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA4OTM5LCAwLCAwLCA4OTQwLCAwLCAwLCA4OTQxLCAwLCAwLCAwLCAxMjQzNiwgMCwgMCwgMTIzNjQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEyMzY2LCAwLCAwLCAxMjM2OCwgMCwgMCwgMTIzNzAsIDAsIDAsIDEyMzcyLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMjM3NCwgMCwgMCwgMTIzNzYsIDAsIDAsIDEyMzc4LCAwLCAwLCAxMjM4MCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTIzODIsIDAsIDAsIDEyMzg0LCAwLCAwLCAxMjM4NiwgMCwgMCwgMTIzODksIDAsIDAsIDAsIDAsIDAsIDAsIDEyMzkxLCAwLCAKLSAgICAwLCAxMjM5MywgMCwgMCwgMTI0MDAsIDEyNDAxLCAwLCAxMjQwMywgMTI0MDQsIDAsIDAsIDAsIDAsIDAsIDEyNDA2LCAKLSAgICAxMjQwNywgMCwgMCwgMCwgMCwgMCwgMTI0MDksIDEyNDEwLCAwLCAxMjQxMiwgMTI0MTMsIDAsIDEyNDQ2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMjUzMiwgMCwgMCwgMTI0NjAsIDAsIDAsIDEyNDYyLCAwLCAwLCAxMjQ2NCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTI0NjYsIDAsIDAsIDEyNDY4LCAwLCAwLCAxMjQ3MCwgMCwgMCwgMTI0NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDc0LCAwLCAKLSAgICAwLCAxMjQ3NiwgMCwgMCwgMTI0NzgsIDAsIDAsIDEyNDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQ4MiwgMCwgMCwgMTI0ODUsIAotICAgIDAsIDAsIDEyNDg3LCAwLCAwLCAxMjQ4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMTI0OTYsIDEyNDk3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMjQ5OSwgMTI1MDAsIDAsIDEyNTAyLCAxMjUwMywgMCwgMTI1MDUsIDEyNTA2LCAwLCAwLCAwLCAwLCAwLCAxMjUwOCwgCi0gICAgMTI1MDksIDAsIDAsIDAsIDAsIDAsIDEyNTM1LCAwLCAwLCAxMjUzNiwgMCwgMCwgMTI1MzcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyNTM4LCAwLCAwLCAxMjU0MiwgMCwgMCwgMCwgMCwgNjk3ODYsIDAsIDAsIDY5Nzg4LCAwLCAwLCA2OTgwMywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODgxNCwgMCwgMCwgMCwgODgwMCwgMCwgMCwgMCwgODgxNSwgMTkyLCAxOTMsIDE5NCwgCisgICAgMTk1LCAyNTYsIDI1OCwgNTUwLCAxOTYsIDc4NDIsIDE5NywgMCwgNDYxLCA1MTIsIDUxNCwgMCwgMCwgMCwgNzg0MCwgMCwgCisgICAgNzY4MCwgMCwgMCwgMjYwLCAwLCAwLCAwLCA3NjgyLCAwLCAwLCA3Njg0LCAwLCAwLCAwLCAwLCA3Njg2LCAwLCAwLCAyNjIsIAorICAgIDI2NCwgMCwgMCwgMCwgMjY2LCAwLCAwLCAwLCAwLCAyNjgsIDAsIDE5OSwgMCwgMCwgMCwgMCwgNzY5MCwgMCwgMCwgMCwgMCwgCisgICAgMjcwLCAwLCA3NjkyLCAwLCAwLCAwLCA3Njk2LCAwLCA3Njk4LCAwLCAwLCA3Njk0LCAwLCAyMDAsIDIwMSwgMjAyLCA3ODY4LCAKKyAgICAyNzQsIDI3NiwgMjc4LCAyMDMsIDc4NjYsIDAsIDAsIDI4MiwgNTE2LCA1MTgsIDAsIDAsIDAsIDc4NjQsIDAsIDAsIDAsIAorICAgIDU1MiwgMjgwLCA3NzA0LCAwLCA3NzA2LCAwLCAwLCAwLCAwLCA3NzEwLCAwLCAwLCA1MDAsIDI4NCwgMCwgNzcxMiwgMjg2LCAKKyAgICAyODgsIDAsIDAsIDAsIDAsIDQ4NiwgMCwgMjkwLCAwLCAwLCAwLCAwLCAyOTIsIDAsIDAsIDAsIDc3MTQsIDc3MTgsIDAsIDAsIAorICAgIDAsIDU0MiwgMCwgNzcxNiwgMCwgMCwgMCwgNzcyMCwgMCwgMCwgNzcyMiwgMCwgMCwgMCwgMjA0LCAyMDUsIDIwNiwgMjk2LCAKKyAgICAyOTgsIDMwMCwgMzA0LCAyMDcsIDc4ODAsIDAsIDAsIDQ2MywgNTIwLCA1MjIsIDAsIDAsIDAsIDc4ODIsIDAsIDAsIDAsIDAsIAorICAgIDMwMiwgMCwgMCwgNzcyNCwgMCwgMCwgMCwgMCwgMzA4LCAwLCAwLCA3NzI4LCAwLCAwLCAwLCAwLCAwLCA0ODgsIDAsIAorICAgIDc3MzAsIDAsIDAsIDAsIDMxMCwgMCwgMCwgMCwgMCwgNzczMiwgMCwgMCwgMzEzLCAwLCAwLCAwLCAwLCAwLCAzMTcsIDAsIAorICAgIDc3MzQsIDAsIDAsIDAsIDMxNSwgMCwgNzc0MCwgMCwgMCwgNzczOCwgMCwgMCwgNzc0MiwgMCwgMCwgMCwgMCwgNzc0NCwgMCwgCisgICAgMCwgNzc0NiwgMCwgMCwgNTA0LCAzMjMsIDAsIDIwOSwgMCwgMCwgNzc0OCwgMCwgMCwgMCwgMCwgMzI3LCAwLCA3NzUwLCAwLCAKKyAgICAwLCAwLCAzMjUsIDAsIDc3NTQsIDAsIDAsIDc3NTIsIDAsIDIxMCwgMjExLCAyMTIsIDIxMywgMzMyLCAzMzQsIDU1OCwgCisgICAgMjE0LCA3ODg2LCAwLCAzMzYsIDQ2NSwgNTI0LCA1MjYsIDAsIDAsIDQxNiwgNzg4NCwgMCwgMCwgMCwgMCwgNDkwLCAwLCAwLCAKKyAgICA3NzY0LCAwLCAwLCAwLCAwLCA3NzY2LCAwLCAwLCAzNDAsIDAsIDAsIDAsIDAsIDc3NjgsIDAsIDAsIDAsIDAsIDM0NCwgCisgICAgNTI4LCA1MzAsIDAsIDAsIDAsIDc3NzAsIDAsIDAsIDAsIDM0MiwgMCwgMCwgMCwgMCwgNzc3NCwgMCwgMCwgMzQ2LCAzNDgsIAorICAgIDAsIDAsIDAsIDc3NzYsIDAsIDAsIDAsIDAsIDM1MiwgMCwgNzc3OCwgMCwgMCwgNTM2LCAzNTAsIDAsIDAsIDAsIDAsIAorICAgIDc3ODYsIDAsIDAsIDAsIDAsIDM1NiwgMCwgNzc4OCwgMCwgMCwgNTM4LCAzNTQsIDAsIDc3OTIsIDAsIDAsIDc3OTAsIDAsIAorICAgIDIxNywgMjE4LCAyMTksIDM2MCwgMzYyLCAzNjQsIDAsIDIyMCwgNzkxMCwgMzY2LCAzNjgsIDQ2NywgNTMyLCA1MzQsIDAsIAorICAgIDAsIDQzMSwgNzkwOCwgNzc5NCwgMCwgMCwgMCwgMzcwLCA3Nzk4LCAwLCA3Nzk2LCAwLCAwLCAwLCAwLCAwLCA3ODA0LCAwLCAKKyAgICA3ODA2LCAwLCAwLCA3ODA4LCA3ODEwLCAzNzIsIDAsIDAsIDAsIDc4MTQsIDc4MTIsIDAsIDc4MTYsIDAsIDAsIDAsIDAsIAorICAgIDc4MTgsIDc4MjAsIDc5MjIsIDIyMSwgMzc0LCA3OTI4LCA1NjIsIDAsIDc4MjIsIDM3NiwgNzkyNiwgMCwgMCwgMCwgMCwgCisgICAgNzkyNCwgMCwgMCwgMCwgMzc3LCA3ODI0LCAwLCAwLCAwLCAzNzksIDAsIDAsIDAsIDAsIDM4MSwgMCwgNzgyNiwgMCwgMCwgCisgICAgMCwgMCwgNzgyOCwgMCwgMjI0LCAyMjUsIDIyNiwgMjI3LCAyNTcsIDI1OSwgNTUxLCAyMjgsIDc4NDMsIDIyOSwgMCwgNDYyLCAKKyAgICA1MTMsIDUxNSwgMCwgMCwgMCwgNzg0MSwgMCwgNzY4MSwgMCwgMCwgMjYxLCAwLCAwLCAwLCA3NjgzLCAwLCAwLCA3Njg1LCAKKyAgICAwLCAwLCAwLCAwLCA3Njg3LCAwLCAwLCAyNjMsIDI2NSwgMCwgMCwgMCwgMjY3LCAwLCAwLCAwLCAwLCAyNjksIDAsIDIzMSwgCisgICAgMCwgMCwgMCwgMCwgNzY5MSwgMCwgMCwgMCwgMCwgMjcxLCAwLCA3NjkzLCAwLCAwLCAwLCA3Njk3LCAwLCA3Njk5LCAwLCAwLCAKKyAgICA3Njk1LCAwLCAyMzIsIDIzMywgMjM0LCA3ODY5LCAyNzUsIDI3NywgMjc5LCAyMzUsIDc4NjcsIDAsIDAsIDI4MywgNTE3LCAKKyAgICA1MTksIDAsIDAsIDAsIDc4NjUsIDAsIDAsIDAsIDU1MywgMjgxLCA3NzA1LCAwLCA3NzA3LCAwLCAwLCAwLCAwLCA3NzExLCAKKyAgICAwLCAwLCA1MDEsIDI4NSwgMCwgNzcxMywgMjg3LCAyODksIDAsIDAsIDAsIDAsIDQ4NywgMCwgMjkxLCAwLCAwLCAwLCAwLCAKKyAgICAyOTMsIDAsIDAsIDAsIDc3MTUsIDc3MTksIDAsIDAsIDAsIDU0MywgMCwgNzcxNywgMCwgMCwgMCwgNzcyMSwgMCwgMCwgCisgICAgNzcyMywgMCwgNzgzMCwgMCwgMjM2LCAyMzcsIDIzOCwgMjk3LCAyOTksIDMwMSwgMCwgMjM5LCA3ODgxLCAwLCAwLCA0NjQsIAorICAgIDUyMSwgNTIzLCAwLCAwLCAwLCA3ODgzLCAwLCAwLCAwLCAwLCAzMDMsIDAsIDAsIDc3MjUsIDAsIDAsIDAsIDAsIDMwOSwgMCwgCisgICAgMCwgMCwgMCwgNDk2LCAwLCA3NzI5LCAwLCAwLCAwLCAwLCAwLCA0ODksIDAsIDc3MzEsIDAsIDAsIDAsIDMxMSwgMCwgMCwgCisgICAgMCwgMCwgNzczMywgMCwgMCwgMzE0LCAwLCAwLCAwLCAwLCAwLCAzMTgsIDAsIDc3MzUsIDAsIDAsIDAsIDMxNiwgMCwgCisgICAgNzc0MSwgMCwgMCwgNzczOSwgMCwgMCwgNzc0MywgMCwgMCwgMCwgMCwgNzc0NSwgMCwgMCwgNzc0NywgMCwgMCwgNTA1LCAKKyAgICAzMjQsIDAsIDI0MSwgMCwgMCwgNzc0OSwgMCwgMCwgMCwgMCwgMzI4LCAwLCA3NzUxLCAwLCAwLCAwLCAzMjYsIDAsIDc3NTUsIAorICAgIDAsIDAsIDc3NTMsIDAsIDI0MiwgMjQzLCAyNDQsIDI0NSwgMzMzLCAzMzUsIDU1OSwgMjQ2LCA3ODg3LCAwLCAzMzcsIDQ2NiwgCisgICAgNTI1LCA1MjcsIDAsIDAsIDQxNywgNzg4NSwgMCwgMCwgMCwgMCwgNDkxLCAwLCAwLCA3NzY1LCAwLCAwLCAwLCAwLCA3NzY3LCAKKyAgICAwLCAwLCAzNDEsIDAsIDAsIDAsIDAsIDc3NjksIDAsIDAsIDAsIDAsIDM0NSwgNTI5LCA1MzEsIDAsIDAsIDAsIDc3NzEsIDAsIAorICAgIDAsIDAsIDM0MywgMCwgMCwgMCwgMCwgNzc3NSwgMCwgMCwgMzQ3LCAzNDksIDAsIDAsIDAsIDc3NzcsIDAsIDAsIDAsIDAsIAorICAgIDM1MywgMCwgNzc3OSwgMCwgMCwgNTM3LCAzNTEsIDAsIDAsIDAsIDAsIDc3ODcsIDc4MzEsIDAsIDAsIDAsIDM1NywgMCwgCisgICAgNzc4OSwgMCwgMCwgNTM5LCAzNTUsIDAsIDc3OTMsIDAsIDAsIDc3OTEsIDAsIDI0OSwgMjUwLCAyNTEsIDM2MSwgMzYzLCAKKyAgICAzNjUsIDAsIDI1MiwgNzkxMSwgMzY3LCAzNjksIDQ2OCwgNTMzLCA1MzUsIDAsIDAsIDQzMiwgNzkwOSwgNzc5NSwgMCwgMCwgCisgICAgMCwgMzcxLCA3Nzk5LCAwLCA3Nzk3LCAwLCAwLCAwLCAwLCAwLCA3ODA1LCAwLCA3ODA3LCAwLCAwLCA3ODA5LCA3ODExLCAKKyAgICAzNzMsIDAsIDAsIDAsIDc4MTUsIDc4MTMsIDAsIDc4MzIsIDAsIDAsIDAsIDc4MTcsIDAsIDAsIDAsIDAsIDc4MTksIDc4MjEsIAorICAgIDc5MjMsIDI1MywgMzc1LCA3OTI5LCA1NjMsIDAsIDc4MjMsIDI1NSwgNzkyNywgNzgzMywgMCwgMCwgMCwgNzkyNSwgMCwgMCwgCisgICAgMCwgMzc4LCA3ODI1LCAwLCAwLCAwLCAzODAsIDAsIDAsIDAsIDAsIDM4MiwgMCwgNzgyNywgMCwgMCwgMCwgMCwgNzgyOSwgCisgICAgMCwgODE3MywgOTAxLCAwLCAwLCA4MTI5LCAwLCAwLCAwLCA3ODQ2LCA3ODQ0LCAwLCA3ODUwLCA3ODQ4LCAwLCAwLCAwLCAKKyAgICA0NzgsIDAsIDAsIDAsIDAsIDUwNiwgMCwgMCwgMCwgNTA4LCAwLCAwLCA0ODIsIDAsIDAsIDAsIDAsIDc2ODgsIDAsIDAsIAorICAgIDc4NzIsIDc4NzAsIDAsIDc4NzYsIDc4NzQsIDAsIDAsIDAsIDAsIDc3MjYsIDAsIDAsIDc4OTAsIDc4ODgsIDAsIDc4OTQsIAorICAgIDc4OTIsIDAsIDAsIDAsIDAsIDc3NTYsIDAsIDAsIDU1NiwgMCwgMCwgNzc1OCwgNTU0LCAwLCAwLCAwLCAwLCA1MTAsIDAsIAorICAgIDAsIDQ3NSwgNDcxLCAwLCAwLCA0NjksIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MywgNzg0NywgNzg0NSwgMCwgNzg1MSwgNzg0OSwgCisgICAgMCwgMCwgMCwgNDc5LCAwLCAwLCAwLCAwLCA1MDcsIDAsIDAsIDAsIDUwOSwgMCwgMCwgNDgzLCAwLCAwLCAwLCAwLCA3Njg5LCAKKyAgICAwLCAwLCA3ODczLCA3ODcxLCAwLCA3ODc3LCA3ODc1LCAwLCAwLCAwLCAwLCA3NzI3LCAwLCAwLCA3ODkxLCA3ODg5LCAwLCAKKyAgICA3ODk1LCA3ODkzLCAwLCAwLCAwLCAwLCA3NzU3LCAwLCAwLCA1NTcsIDAsIDAsIDc3NTksIDU1NSwgMCwgMCwgMCwgMCwgCisgICAgNTExLCAwLCAwLCA0NzYsIDQ3MiwgMCwgMCwgNDcwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzQsIDc4NTYsIDc4NTQsIDAsIAorICAgIDc4NjAsIDc4NTgsIDAsIDAsIDAsIDc4NTcsIDc4NTUsIDAsIDc4NjEsIDc4NTksIDAsIDAsIDAsIDc3MDAsIDc3MDIsIDAsIAorICAgIDAsIDc3MDEsIDc3MDMsIDAsIDAsIDc3NjAsIDc3NjIsIDAsIDAsIDc3NjEsIDc3NjMsIDAsIDAsIDAsIDAsIDc3ODAsIDAsIAorICAgIDAsIDAsIDc3ODEsIDAsIDAsIDAsIDc3ODIsIDAsIDAsIDAsIDc3ODMsIDAsIDAsIDc4MDAsIDAsIDAsIDAsIDc4MDEsIDAsIAorICAgIDAsIDAsIDAsIDAsIDc4MDIsIDAsIDAsIDAsIDc4MDMsIDAsIDAsIDc4MzUsIDAsIDc5MDAsIDc4OTgsIDAsIDc5MDQsIAorICAgIDc5MDIsIDAsIDAsIDAsIDAsIDc5MDYsIDAsIDAsIDc5MDEsIDc4OTksIDAsIDc5MDUsIDc5MDMsIDAsIDAsIDAsIDAsIAorICAgIDc5MDcsIDAsIDAsIDc5MTQsIDc5MTIsIDAsIDc5MTgsIDc5MTYsIDAsIDAsIDAsIDAsIDc5MjAsIDAsIDAsIDc5MTUsIAorICAgIDc5MTMsIDAsIDc5MTksIDc5MTcsIDAsIDAsIDAsIDAsIDc5MjEsIDAsIDAsIDAsIDAsIDAsIDQ5NCwgNDkyLCAwLCAwLCAwLCAKKyAgICA0OTMsIDAsIDAsIDAsIDQ4MCwgMCwgMCwgMCwgNDgxLCAwLCAwLCAwLCAwLCA3NzA4LCAwLCAwLCAwLCA3NzA5LCAwLCAwLCAKKyAgICA1NjAsIDAsIDAsIDAsIDU2MSwgMCwgMCwgMCwgMCwgMCwgMCwgNDk1LCA4MTIyLCA5MDIsIDAsIDAsIDgxMjEsIDgxMjAsIDAsIAorICAgIDAsIDAsIDAsIDc5NDQsIDc5NDUsIDAsIDgxMjQsIDAsIDAsIDgxMzYsIDkwNCwgMCwgMCwgMCwgMCwgNzk2MCwgNzk2MSwgCisgICAgODEzOCwgOTA1LCAwLCAwLCAwLCAwLCA3OTc2LCA3OTc3LCAwLCA4MTQwLCAwLCAwLCA4MTU0LCA5MDYsIDAsIDAsIDgxNTMsIAorICAgIDgxNTIsIDAsIDkzOCwgMCwgMCwgNzk5MiwgNzk5MywgODE4NCwgOTA4LCAwLCAwLCAwLCAwLCA4MDA4LCA4MDA5LCAwLCAwLCAKKyAgICAwLCA4MTcyLCA4MTcwLCA5MTAsIDAsIDAsIDgxNjksIDgxNjgsIDAsIDkzOSwgMCwgMCwgMCwgODAyNSwgODE4NiwgOTExLCAKKyAgICAwLCAwLCAwLCAwLCA4MDQwLCA4MDQxLCAwLCA4MTg4LCAwLCAwLCAwLCA4MTE2LCAwLCAwLCAwLCA4MTMyLCAwLCAwLCAKKyAgICA4MDQ4LCA5NDAsIDAsIDAsIDgxMTMsIDgxMTIsIDAsIDAsIDAsIDAsIDc5MzYsIDc5MzcsIDgxMTgsIDgxMTUsIDAsIDAsIAorICAgIDgwNTAsIDk0MSwgMCwgMCwgMCwgMCwgNzk1MiwgNzk1MywgODA1MiwgOTQyLCAwLCAwLCAwLCAwLCA3OTY4LCA3OTY5LCAKKyAgICA4MTM0LCA4MTMxLCAwLCAwLCA4MDU0LCA5NDMsIDAsIDAsIDgxNDUsIDgxNDQsIDAsIDk3MCwgMCwgMCwgNzk4NCwgNzk4NSwgCisgICAgODE1MCwgMCwgMCwgMCwgODA1NiwgOTcyLCAwLCAwLCAwLCAwLCA4MDAwLCA4MDAxLCAwLCAwLCA4MTY0LCA4MTY1LCA4MDU4LCAKKyAgICA5NzMsIDAsIDAsIDgxNjEsIDgxNjAsIDAsIDk3MSwgMCwgMCwgODAxNiwgODAxNywgODE2NiwgMCwgMCwgMCwgODA2MCwgCisgICAgOTc0LCAwLCAwLCAwLCAwLCA4MDMyLCA4MDMzLCA4MTgyLCA4MTc5LCAwLCAwLCA4MTQ2LCA5MTIsIDAsIDAsIDgxNTEsIDAsIAorICAgIDAsIDAsIDgxNjIsIDk0NCwgMCwgMCwgODE2NywgMCwgMCwgMCwgMCwgODE4MCwgMCwgMCwgMCwgOTc5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5ODAsIDAsIDAsIDAsIDEwMzEsIDAsIDEyMzIsIDAsIDEyMzQsIDAsIDEwMjcsIDAsIDAsIDEwMjQsIDAsIDAsIDAsIDAsIAorICAgIDEyMzgsIDAsIDEwMjUsIDAsIDEyMTcsIDAsIDEyNDQsIDAsIDAsIDAsIDEyNDYsIDEwMzcsIDAsIDAsIDAsIDEyNTAsIAorICAgIDEwNDksIDAsIDEyNTIsIDAsIDEwMzYsIDAsIDAsIDAsIDAsIDAsIDEyNTQsIDEyNjIsIDEwMzgsIDAsIDEyNjQsIDAsIDAsIAorICAgIDEyNjYsIDAsIDAsIDAsIDAsIDEyNjgsIDAsIDAsIDAsIDEyNzIsIDAsIDAsIDAsIDEyNjAsIDAsIDEyMzMsIDAsIDEyMzUsIAorICAgIDAsIDExMDcsIDAsIDAsIDExMDQsIDAsIDAsIDAsIDAsIDEyMzksIDAsIDExMDUsIDAsIDEyMTgsIDAsIDEyNDUsIDAsIDAsIAorICAgIDAsIDEyNDcsIDExMTcsIDAsIDAsIDAsIDEyNTEsIDEwODEsIDAsIDEyNTMsIDAsIDExMTYsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyNTUsIDEyNjMsIDExMTgsIDAsIDEyNjUsIDAsIDAsIDEyNjcsIDAsIDAsIDAsIDAsIDEyNjksIDAsIDAsIDAsIDEyNzMsIAorICAgIDAsIDAsIDAsIDEyNjEsIDAsIDAsIDAsIDExMTEsIDExNDIsIDAsIDAsIDAsIDExNDMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyNDIsIDAsIDAsIDAsIDEyNDMsIDAsIDAsIDAsIDEyNTgsIDAsIDAsIDAsIDEyNTksIDAsIDAsIDE1NzAsIDE1NzEsIAorICAgIDE1NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzIsIDAsIDAsIDAsIDE1NzQsIDAsIDAsIDAsIDE3MzAsIDAsIDAsIDAsIAorICAgIDE3NDcsIDAsIDAsIDAsIDE3MjgsIDAsIDIzNDUsIDAsIDAsIDAsIDIzNTMsIDAsIDAsIDAsIDIzNTYsIDAsIDAsIDAsIDAsIAorICAgIDI1MDcsIDI1MDgsIDI4OTEsIDI4ODgsIDI4OTIsIDAsIDI5NjQsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMTgsIDMwMjAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDMwMTksIDAsIDMxNDQsIDAsIDAsIDAsIDAsIDAsIDMyNjQsIDAsIDAsIDMyNzQsIDMyNzEsIAorICAgIDMyNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNzUsIDAsIDM0MDIsIDM0MDQsIDAsIDAsIDM0MDMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM1NDYsIDM1NDgsIDM1NTAsIDAsIDAsIDAsIDAsIDAsIDM1NDksIDAsIDAsIDQxMzQsIDAsIDAsIDAsIDAsIDY5MTgsIDAsIAorICAgIDAsIDAsIDY5MjAsIDAsIDAsIDAsIDY5MjIsIDAsIDAsIDAsIDY5MjQsIDAsIDAsIDAsIDY5MjYsIDAsIDAsIDAsIDY5MzAsIAorICAgIDAsIDAsIDAsIDY5NzEsIDAsIDAsIDAsIDY5NzMsIDAsIDAsIDAsIDY5NzYsIDAsIDAsIDAsIDY5NzcsIDAsIDAsIDAsIAorICAgIDY5NzksIDc3MzYsIDAsIDAsIDAsIDc3MzcsIDAsIDAsIDAsIDc3NzIsIDAsIDAsIDAsIDc3NzMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDc3ODQsIDAsIDAsIDAsIDc3ODUsIDAsIDAsIDAsIDc4NTIsIDAsIDAsIDc4NjIsIDAsIDAsIDAsIDAsIDc4NTMsIDAsIDAsIAorICAgIDc4NjMsIDAsIDAsIDAsIDAsIDc4NzgsIDAsIDAsIDAsIDc4NzksIDAsIDAsIDAsIDc4OTYsIDAsIDAsIDAsIDc4OTcsIDAsIAorICAgIDc5MzgsIDc5NDAsIDAsIDAsIDc5NDIsIDgwNjQsIDAsIDAsIDc5MzksIDc5NDEsIDAsIDAsIDc5NDMsIDgwNjUsIDAsIDAsIAorICAgIDAsIDgwNjYsIDAsIDAsIDAsIDgwNjcsIDAsIDAsIDAsIDgwNjgsIDAsIDAsIDAsIDgwNjksIDAsIDAsIDAsIDgwNzAsIDAsIAorICAgIDAsIDAsIDgwNzEsIDAsIDAsIDc5NDYsIDc5NDgsIDAsIDAsIDc5NTAsIDgwNzIsIDAsIDAsIDc5NDcsIDc5NDksIDAsIDAsIAorICAgIDc5NTEsIDgwNzMsIDAsIDAsIDAsIDgwNzQsIDAsIDAsIDAsIDgwNzUsIDAsIDAsIDAsIDgwNzYsIDAsIDAsIDAsIDgwNzcsIAorICAgIDAsIDAsIDAsIDgwNzgsIDAsIDAsIDAsIDgwNzksIDAsIDAsIDc5NTQsIDc5NTYsIDAsIDAsIDc5NTUsIDc5NTcsIDAsIDAsIAorICAgIDc5NjIsIDc5NjQsIDAsIDAsIDc5NjMsIDc5NjUsIDAsIDAsIDc5NzAsIDc5NzIsIDAsIDAsIDc5NzQsIDgwODAsIDAsIDAsIAorICAgIDc5NzEsIDc5NzMsIDAsIDAsIDc5NzUsIDgwODEsIDAsIDAsIDAsIDgwODIsIDAsIDAsIDAsIDgwODMsIDAsIDAsIDAsIAorICAgIDgwODQsIDAsIDAsIDAsIDgwODUsIDAsIDAsIDAsIDgwODYsIDAsIDAsIDAsIDgwODcsIDAsIDAsIDc5NzgsIDc5ODAsIDAsIAorICAgIDAsIDc5ODIsIDgwODgsIDAsIDAsIDc5NzksIDc5ODEsIDAsIDAsIDc5ODMsIDgwODksIDAsIDAsIDAsIDgwOTAsIDAsIDAsIAorICAgIDAsIDgwOTEsIDAsIDAsIDAsIDgwOTIsIDAsIDAsIDAsIDgwOTMsIDAsIDAsIDAsIDgwOTQsIDAsIDAsIDAsIDgwOTUsIDAsIAorICAgIDAsIDc5ODYsIDc5ODgsIDAsIDAsIDc5OTAsIDAsIDAsIDAsIDc5ODcsIDc5ODksIDAsIDAsIDc5OTEsIDAsIDAsIDAsIAorICAgIDc5OTQsIDc5OTYsIDAsIDAsIDc5OTgsIDAsIDAsIDAsIDc5OTUsIDc5OTcsIDAsIDAsIDc5OTksIDAsIDAsIDAsIDgwMDIsIAorICAgIDgwMDQsIDAsIDAsIDgwMDMsIDgwMDUsIDAsIDAsIDgwMTAsIDgwMTIsIDAsIDAsIDgwMTEsIDgwMTMsIDAsIDAsIDgwMTgsIAorICAgIDgwMjAsIDAsIDAsIDgwMjIsIDAsIDAsIDAsIDgwMTksIDgwMjEsIDAsIDAsIDgwMjMsIDAsIDAsIDAsIDgwMjcsIDgwMjksIAorICAgIDAsIDAsIDgwMzEsIDAsIDAsIDAsIDgwMzQsIDgwMzYsIDAsIDAsIDgwMzgsIDgwOTYsIDAsIDAsIDgwMzUsIDgwMzcsIDAsIAorICAgIDAsIDgwMzksIDgwOTcsIDAsIDAsIDAsIDgwOTgsIDAsIDAsIDAsIDgwOTksIDAsIDAsIDAsIDgxMDAsIDAsIDAsIDAsIAorICAgIDgxMDEsIDAsIDAsIDAsIDgxMDIsIDAsIDAsIDAsIDgxMDMsIDAsIDAsIDgwNDIsIDgwNDQsIDAsIDAsIDgwNDYsIDgxMDQsIAorICAgIDAsIDAsIDgwNDMsIDgwNDUsIDAsIDAsIDgwNDcsIDgxMDUsIDAsIDAsIDAsIDgxMDYsIDAsIDAsIDAsIDgxMDcsIDAsIDAsIAorICAgIDAsIDgxMDgsIDAsIDAsIDAsIDgxMDksIDAsIDAsIDAsIDgxMTAsIDAsIDAsIDAsIDgxMTEsIDAsIDAsIDAsIDgxMTQsIDAsIAorICAgIDAsIDAsIDgxMzAsIDAsIDAsIDAsIDgxNzgsIDAsIDAsIDAsIDgxMTksIDAsIDAsIDgxNDEsIDgxNDIsIDAsIDAsIDgxNDMsIAorICAgIDAsIDAsIDAsIDAsIDgxMzUsIDAsIDAsIDAsIDgxODMsIDAsIDAsIDgxNTcsIDgxNTgsIDAsIDAsIDgxNTksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDg2MDIsIDAsIDAsIDAsIDg2MDMsIDAsIDAsIDAsIDg2MjIsIDAsIDAsIDAsIDg2NTMsIDAsIDAsIDAsIAorICAgIDg2NTUsIDAsIDAsIDAsIDg2NTQsIDAsIDAsIDAsIDg3MDgsIDAsIDAsIDAsIDg3MTMsIDAsIDAsIDAsIDg3MTYsIDAsIDAsIAorICAgIDAsIDg3NDAsIDAsIDAsIDAsIDg3NDIsIDAsIDAsIDAsIDg3NjksIDAsIDAsIDAsIDg3NzIsIDAsIDAsIDAsIDg3NzUsIDAsIAorICAgIDAsIDAsIDg3NzcsIDAsIDAsIDAsIDg4MTMsIDAsIDAsIDAsIDg4MDIsIDAsIDAsIDAsIDg4MTYsIDAsIDAsIDAsIDg4MTcsIAorICAgIDAsIDAsIDAsIDg4MjAsIDAsIDAsIDAsIDg4MjEsIDAsIDAsIDAsIDg4MjQsIDAsIDAsIDAsIDg4MjUsIDAsIDAsIDAsIAorICAgIDg4MzIsIDAsIDAsIDAsIDg4MzMsIDAsIDAsIDAsIDg5MjgsIDAsIDAsIDAsIDg5MjksIDAsIDAsIDAsIDg4MzYsIDAsIDAsIAorICAgIDAsIDg4MzcsIDAsIDAsIDAsIDg4NDAsIDAsIDAsIDAsIDg4NDEsIDAsIDAsIDAsIDg5MzAsIDAsIDAsIDAsIDg5MzEsIDAsIAorICAgIDAsIDAsIDg4NzYsIDAsIDAsIDAsIDg4NzcsIDAsIDAsIDAsIDg4NzgsIDAsIDAsIDAsIDg4NzksIDAsIDAsIDAsIDg5MzgsIAorICAgIDAsIDAsIDAsIDg5MzksIDAsIDAsIDAsIDg5NDAsIDAsIDAsIDAsIDg5NDEsIDEyNDM2LCAwLCAwLCAwLCAxMjM2NCwgMCwgMCwgCisgICAgMCwgMTIzNjYsIDAsIDAsIDAsIDEyMzY4LCAwLCAwLCAwLCAxMjM3MCwgMCwgMCwgMCwgMTIzNzIsIDAsIDAsIDAsIDEyMzc0LCAKKyAgICAwLCAwLCAwLCAxMjM3NiwgMCwgMCwgMCwgMTIzNzgsIDAsIDAsIDAsIDEyMzgwLCAwLCAwLCAwLCAxMjM4MiwgMCwgMCwgMCwgCisgICAgMTIzODQsIDAsIDAsIDAsIDEyMzg2LCAwLCAwLCAwLCAxMjM4OSwgMCwgMCwgMCwgMTIzOTEsIDAsIDAsIDAsIDEyMzkzLCAwLCAKKyAgICAwLCAwLCAxMjQwMCwgMTI0MDEsIDAsIDAsIDEyNDAzLCAxMjQwNCwgMCwgMCwgMTI0MDYsIDEyNDA3LCAwLCAwLCAxMjQwOSwgCisgICAgMTI0MTAsIDAsIDAsIDEyNDEyLCAxMjQxMywgMCwgMCwgMTI0NDYsIDAsIDAsIDAsIDEyNTMyLCAwLCAwLCAwLCAxMjQ2MCwgCisgICAgMCwgMCwgMCwgMTI0NjIsIDAsIDAsIDAsIDEyNDY0LCAwLCAwLCAwLCAxMjQ2NiwgMCwgMCwgMCwgMTI0NjgsIDAsIDAsIDAsIAorICAgIDEyNDcwLCAwLCAwLCAwLCAxMjQ3MiwgMCwgMCwgMCwgMTI0NzQsIDAsIDAsIDAsIDEyNDc2LCAwLCAwLCAwLCAxMjQ3OCwgMCwgCisgICAgMCwgMCwgMTI0ODAsIDAsIDAsIDAsIDEyNDgyLCAwLCAwLCAwLCAxMjQ4NSwgMCwgMCwgMCwgMTI0ODcsIDAsIDAsIDAsIAorICAgIDEyNDg5LCAwLCAwLCAwLCAxMjQ5NiwgMTI0OTcsIDAsIDAsIDEyNDk5LCAxMjUwMCwgMCwgMCwgMTI1MDIsIDEyNTAzLCAwLCAKKyAgICAwLCAxMjUwNSwgMTI1MDYsIDAsIDAsIDEyNTA4LCAxMjUwOSwgMCwgMCwgMTI1MzUsIDAsIDAsIDAsIDEyNTM2LCAwLCAwLCAKKyAgICAwLCAxMjUzNywgMCwgMCwgMCwgMTI1MzgsIDAsIDAsIDAsIDEyNTQyLCAwLCAwLCAwLCAwLCAwLCA2OTc4NiwgMCwgMCwgMCwgCisgICAgNjk3ODgsIDAsIDAsIDAsIDY5ODAzLCAwLCAwLCAwLCAwLCA2OTkzNCwgMCwgMCwgMCwgNjk5MzUsIAogfTsKIAogc3RhdGljIGNvbnN0IGNoYW5nZV9yZWNvcmQgY2hhbmdlX3JlY29yZHNfM18yXzBbXSA9IHsKIAl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAogCXsgMTEsIDI1NSwgMjU1LCAyNTUsIDAgfSwKIAl7IDEwLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDMwLCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyLCAyNTUsIDI1NSwgMCB9LAogCXsgMTksIDIxLCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAyNTUsIDIsIDI1NSwgMCB9LAogCXsgMjU1LCAyNTUsIDMsIDI1NSwgMCB9LAogCXsgMjU1LCAyNTUsIDEsIDI1NSwgMCB9LAogCXsgMjU1LCAwLCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyLCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAyOSwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgMjYsIDI1NSwgMjU1LCAwIH0sCiAJeyA1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCkBAIC01MDU4LDcgKzUxNzcsNyBAQAogCXsgMjU1LCA3LCA3LCAyNTUsIDAgfSwKIAl7IDI1NSwgNywgOCwgMjU1LCAwIH0sCiAJeyAyNTUsIDcsIDksIDI1NSwgMCB9LAotCXsgMjU1LCA1LCAyNTUsIDI1NSwgMCB9LAorCXsgMSwgNSwgMjU1LCAyNTUsIDAgfSwKIAl7IDE1LCAxNCwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgMTAsIDI1NSwgMjU1LCAwIH0sCiAJeyAxOCwgMjU1LCAyNTUsIDI1NSwgMCB9LApAQCAtNTA3MCwxMiArNTE4OSwxMiBAQAogCXsgMjU1LCAyNTUsIDcsIDI1NSwgMCB9LAogCXsgMjU1LCAyNTUsIDgsIDI1NSwgMCB9LAogCXsgMjU1LCAyNTUsIDksIDI1NSwgMCB9LAotCXsgMjU1LCAzMCwgMjU1LCAyNTUsIDAgfSwKIAl7IDE5LCAzMCwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgOCwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgMjIsIDI1NSwgMjU1LCAwIH0sCiAJeyAyNTUsIDIzLCAyNTUsIDI1NSwgMCB9LAogCXsgOSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTQsIDQsIDI1NSwgMjU1LCAwIH0sCiAJeyAyNTUsIDIwLCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsxNiB9LAogCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsyMCB9LApAQCAtNTA4NCw3NCArNTIwMyw3NCBAQAogCXsgMSwgMjU1LCAyNTUsIDAsIDAgfSwKIH07CiBzdGF0aWMgdW5zaWduZWQgY2hhciBjaGFuZ2VzXzNfMl8wX2luZGV4W10gPSB7Ci0gICAgMCwgMSwgMiwgMiwgMywgNCwgNSwgNiwgMiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAyLCAxNSwgMTYsIDE3LCAKLSAgICAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyLCAyLCAyLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgCi0gICAgMzQsIDIsIDIsIDIsIDM1LCAzNiwgMiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgCi0gICAgNDksIDIsIDUwLCAyLCAyLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDIsIDIsIDU2LCA1NywgNTgsIDIsIDIsIDU5LCA2MCwgNjEsIAotICAgIDYyLCA2MywgNjMsIDIsIDIsIDIsIDIsIDY0LCAyLCA2NSwgNjYsIDY3LCA2OCwgNjksIDIsIDIsIDIsIDIsIDcwLCA3MSwgCi0gICAgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDIsIDIsIDIsIDIsIDIsIDIsIDc5LCAyLCAyLCAyLCAyLCAyLCA4MCwgMiwgCisgICAgMCwgMSwgMiwgMiwgMywgNCwgNSwgNiwgMiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgCisgICAgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMiwgMiwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAKKyAgICAzNiwgMiwgMiwgMiwgMzcsIDM4LCAyLCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCAKKyAgICA1MSwgMiwgNTIsIDIsIDIsIDUzLCA1NCwgNTUsIDU2LCA1NywgMiwgMiwgNTgsIDU5LCA2MCwgMiwgMiwgNjEsIDYyLCA2MywgCisgICAgNjQsIDY1LCA2NSwgMiwgMiwgMiwgMiwgNjYsIDIsIDY3LCA2OCwgNjksIDcwLCA3MSwgMiwgMiwgMiwgNzIsIDczLCA3NCwgCisgICAgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDIsIDIsIDIsIDIsIDIsIDIsIDgyLCAyLCAyLCAyLCAyLCAyLCA4MywgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODEsIDIsIDgyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4MywgCi0gICAgODQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NiwgODcsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg0LCAyLCA4NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODYsIAorICAgIDg3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4OCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODksIDkwLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4OCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTEsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg5LCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTEsIDkyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MywgNDgsIDQ4LCAKLSAgICA5NCwgOTUsIDQ4LCA5NiwgOTcsIDk4LCA5OSwgMTAwLCAxMDEsIDEwMiwgMTAzLCAxMDQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDEwNSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NCwgOTUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk2LCA1MCwgNTAsIAorICAgIDk3LCA5OCwgNTAsIDk5LCAxMDAsIDEwMSwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNywgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMTA2LCAxMDcsIDEwOCwgMTA5LCAxMTAsIDExMSwgMiwgMiwgMiwgMTEyLCAxMTMsIDIsIDExNCwgMTE1LCAKLSAgICAxMTYsIDExNywgMTE4LCAxMTksIDIsIDEyMCwgMTIxLCAxMjIsIDEyMywgMTI0LCAyLCAyLCAyLCAyLCAyLCAyLCAxMjUsIDIsIAotICAgIDEyNiwgMiwgMTI3LCAyLCAxMjgsIDIsIDEyOSwgMiwgMiwgMiwgMTMwLCAyLCAyLCAyLCAxMzEsIDEzMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTMzLCAyLCAxMzQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMTM1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxMDgsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDEwOSwgMTEwLCAxMTEsIDExMiwgMTEzLCAxMTQsIDIsIDIsIDIsIDExNSwgMTE2LCAyLCAxMTcsIDExOCwgCisgICAgMTE5LCAxMjAsIDEyMSwgMTIyLCAyLCAxMjMsIDEyNCwgMTI1LCAxMjYsIDEyNywgMiwgMiwgMiwgMiwgMiwgMiwgMTI4LCAyLCAKKyAgICAxMjksIDEzMCwgMTMxLCAyLCAxMzIsIDIsIDEzMywgMiwgMiwgMiwgMTM0LCAyLCAyLCAyLCAxMzUsIDEzNiwgMTM3LCAxMzgsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDEzOSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTQwLCAyLCAxNDEsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgMTQyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA0OCwgNDgsIDQ4LCA0OCwgMTM2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgMTQzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAxNDQsIDE0NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTM3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNDYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDEzOCwgMiwgMTM5LCAyLCAxNDAsIDIsIDIsIDE0MSwgMiwgMiwgMiwgMTQyLCAxNDMsIDE0NCwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTQ1LCAKLSAgICAxNDYsIDE0NywgMTQ4LCAxNDksIDIsIDE1MCwgMTUxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTM5LCAxNTcsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE1OCwgMTU5LCA5MCwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNzksIDE2MCwgMiwgMTYxLCAxNjIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE0NywgMiwgMTQ4LCAyLCAxNDksIDIsIDIsIDE1MCwgMiwgMiwgMiwgMTUxLCAxNTIsIAorICAgIDE1MywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTU0LCAxNTUsIAorICAgIDIsIDIsIDE1NiwgMTU3LCAxNTgsIDE1OSwgMTYwLCAyLCAxNjEsIDE2MiwgMTYzLCAxNjQsIDE2NSwgMTY2LCAxNjcsIDE0OCwgCisgICAgMTY4LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNjksIDE3MCwgOTMsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDgyLCAxNzEsIDIsIDE3MiwgMTczLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNjMsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDE2NCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTY1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzQsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE3NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTc2LCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNjYsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDE3NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNjcsIDQ4LCAxNjgsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc4LCA1MCwgMTc5LCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNjMsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDE3NCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCkBAIC01Mzg2LDcgKzU1MDUsNyBAQAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDQ4LCAxNjksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCAxODAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIApAQCAtNTQ1MCw3ICs1NTY5LDcgQEAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGNoYW5nZXNfM18yXzBfZGF0YVtdID0gewpAQCAtNTQ2MCw4ICs1NTc5LDkgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzLCAKKyAgICAwLCAwLCA0LCAwLCAwLCA1LCAwLCAwLCAwLCAwLCA2LCA3LCAwLCAwLCAzLCAwLCAwLCA4LCA0LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAzLCAwLCAwLCAwLCAwLCA0LCA1LCAwLCAwLCAwLCAwLCAwLCA2LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTU0NzAsODQ4ICs1NTkwLDkwNiBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwLCAxMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAxMCwgMCwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgOSwgMCwgNywgNywgMCwgMCwgMCwgNywgNywgNywgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMTEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDEwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCA3LCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMiwgMTMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMSwgMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxNCwgMTUsIDE2LCAxNywgMTgsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMCwgMCwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgCi0gICAgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAyMCwgMjAsIDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAKLSAgICA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAKLSAgICAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgCi0gICAgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjIsIDIzLCAKKyAgICAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyMSwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwLCAzMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCA4LCAwLCAKLSAgICAwLCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCAxLCAxLCAwLCAwLCAwLCA4LCAzNSwgNiwgNCwgNSwgMzYsIDM3LCAzOCwgMzksIAotICAgIDQwLCA0MSwgMSwgMSwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNiwgNCwgMCwgMCwgMzcsIDM4LCAzOSwgNDAsIAorICAgIDQxLCA0MiwgMSwgMSwgMCwgMCwgMCwgNCwgMzYsIDgsIDYsIDcsIDM3LCAzOCwgMzksIDQwLCA0MSwgNDIsIDEsIDEsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQ1LCA0NiwgMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1LCAKKyAgICA0NiwgMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAwLCA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCAwLCA3LCA3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgCi0gICAgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMTgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAwLCAwLCAwLCAxLCAxLCAyMCwgMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDEsIDAsIDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMywgMTMsIDEzLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCAKLSAgICA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgCisgICAgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDAsIDAsIDAsIDcsIAotICAgIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMTksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAwLCAwLCAwLCAxLCAxLCAyMSwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDEsIDAsIDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNCwgMTQsIDE0LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCAwLCAKKyAgICAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICAwLCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCAwLCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCAwLCA3LCAwLCA3LCAwLCA3LCAwLCA3LCAKLSAgICA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCAwLCA3LCAwLCAwLCA3LCA3LCA3LCA3LCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDAsIDAsIDAsIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDksIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDAsIDksIDAsIAorICAgIDksIDAsIDksIDAsIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDAsIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNjMxOSwyNSArNjQ5NywyNSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNjM0NiwyNCArNjUyNCwyNCBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhbmdlX3JlY29yZCogZ2V0X2NoYW5nZV8zXzJfMChQeV9VQ1M0IG4pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmggYi9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmgKaW5kZXggODgzMDU2MC4uMzgzODg4MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oCisrKyBiL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaApAQCAtNCwzMzcgKzQsNDI4IEBACiAKIC8qIGxleGljb24gKi8KIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGxleGljb25bXSA9IHsKLSAgICA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgODcsIDczLCA4NCwgMjAwLCA4MywgNzcsIDY1LCA3NiwgMjA0LCA4MywgODksIAotICAgIDc2LCA3NiwgNjUsIDY2LCA3NiwgMTk3LCA4MywgNzMsIDcxLCAyMDYsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDIwNCwgCi0gICAgNzYsIDY1LCA4NCwgNzMsIDIwNiwgODksIDIwMSwgNjcsIDc0LCAyMDMsIDY5LCA3MSwgODksIDgwLCA4NCwgNzMsIDY1LCAKLSAgICAyMDYsIDcyLCA3MywgNjksIDgyLCA3OSwgNzEsIDc2LCA4OSwgODAsIDIwMCwgNjUsIDgyLCA2NSwgNjYsIDczLCAxOTUsIAotICAgIDY3LCA3OSwgNzcsIDgwLCA2NSwgODQsIDczLCA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgNzcsIDY1LCA4NCwgNzIsIDY5LCAKLSAgICA3NywgNjUsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDY3LCA4NSwgNzgsIDY5LCA3MywgNzAsIDc5LCA4MiwgMjA1LCA4MywgODksIAotICAgIDc3LCA2NiwgNzksIDIwNCwgNzAsIDc5LCA4MiwgNzcsIDEyOCwgNjcsIDY1LCA3OCwgNjUsIDY4LCA3MywgNjUsIDIwNiwgCi0gICAgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIDY3LCAyMTEsIDY2LCA2NSwgNzcsIDg1LCAyMDUsIDY4LCA3MywgNzEsIDczLCAKLSAgICAyMTIsIDY2LCA3OSwgNzYsIDE5NiwgNzIsIDY1LCA3OCwgNzEsIDg1LCAyMDQsIDY1LCA3OCwgMTk2LCA3MSwgODIsIDY5LCAKLSAgICA2OSwgMjAzLCA3NiwgNzMsIDcxLCA2NSwgODQsIDg1LCA4MiwgMTk3LCA3NywgODUsIDgzLCA3MywgNjcsIDY1LCAyMDQsIAotICAgIDY5LCA4NCwgNzIsIDczLCA3OSwgODAsIDczLCAxOTUsIDg0LCA3MywgNzcsIDY5LCAyMTEsIDg2LCA3OSwgODcsIDY5LCAKLSAgICAyMDQsIDcwLCA3OSwgMjEwLCA3MywgODQsIDY1LCA3NiwgNzMsIDE5NSwgNjcsIDg5LCA4MiwgNzMsIDc2LCA3NiwgNzMsIAorICAgIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA4NywgNzMsIDg0LCAyMDAsIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDc2LCAKKyAgICAxOTcsIDgzLCA3NywgNjUsIDc2LCAyMDQsIDgzLCA3MywgNzEsIDIwNiwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgMjA0LCAKKyAgICA3NiwgNjUsIDg0LCA3MywgMjA2LCA4OSwgMjAxLCA2NywgNzQsIDIwMywgNjUsIDgyLCA2NSwgNjYsIDczLCAxOTUsIDc3LCAKKyAgICA2NSwgODQsIDcyLCA2OSwgNzcsIDY1LCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgNzEsIDg5LCA4MCwgODQsIDczLCA2NSwgCisgICAgMjA2LCA3MiwgNzMsIDY5LCA4MiwgNzksIDcxLCA3NiwgODksIDgwLCAyMDAsIDY3LCA3OSwgNzcsIDgwLCA2NSwgODQsIDczLCAKKyAgICA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgNjcsIDg1LCA3OCwgNjksIDczLCA3MCwgNzksIDgyLCAyMDUsIDgzLCA4OSwgNzcsIAorICAgIDY2LCA3OSwgMjA0LCA3MCwgNzksIDgyLCA3NywgMTI4LCA2NywgNjUsIDc4LCA2NSwgNjgsIDczLCA2NSwgMjA2LCA4MywgCisgICAgODksIDc2LCA3NiwgNjUsIDY2LCA3MywgNjcsIDIxMSwgNjYsIDY1LCA3NywgODUsIDIwNSwgNjgsIDczLCA3MSwgNzMsIAorICAgIDIxMiwgNjUsIDc4LCAxOTYsIDY2LCA3OSwgNzYsIDE5NiwgNzIsIDY1LCA3OCwgNzEsIDg1LCAyMDQsIDg2LCA3OSwgODcsIAorICAgIDY5LCAyMDQsIDcxLCA4MiwgNjksIDY5LCAyMDMsIDc2LCA3MywgNzEsIDY1LCA4NCwgODUsIDgyLCAxOTcsIDc3LCA4NSwgCisgICAgODMsIDczLCA2NywgNjUsIDIwNCwgNjksIDg0LCA3MiwgNzMsIDc5LCA4MCwgNzMsIDE5NSwgODQsIDczLCA3NywgNjksIAorICAgIDIxMSwgNzAsIDc5LCAyMTAsIDczLCA4NCwgNjUsIDc2LCA3MywgMTk1LCA2NywgODksIDgyLCA3MywgNzYsIDc2LCA3MywgCiAgICAgMTk1LCA4MiwgNjUsIDY4LCA3MywgNjcsIDY1LCAyMDQsIDgzLCA2NSwgNzgsIDgzLCA0NSwgODMsIDY5LCA4MiwgNzMsIAotICAgIDE5OCwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgMTk2LCA2NywgNzksIDc3LCA2NiwgNzMsIDc4LCA3MywgNzgsIDE5OSwgCi0gICAgODQsIDY1LCAyMDEsIDg2LCA2NSwgMjAxLCA3MCwgNzMsIDc4LCA2NSwgMjA0LCA4MywgODEsIDg1LCA2NSwgODIsIDE5NywgCi0gICAgNzYsIDY5LCA3MCwgMjEyLCA4NiwgNjUsIDgyLCA3MywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjYsIDgyLCA2NSwgNzMsIDc2LCAKLSAgICA3NiwgMTk3LCA4MCwgNjUsIDg0LCA4NCwgNjksIDgyLCAyMDYsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDY2LCA4OSwgOTAsIAotICAgIDY1LCA3OCwgODQsIDczLCA3OCwgMTk3LCA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNjYsIDc5LCA4NiwgCi0gICAgNjksIDEyOCwgNzgsIDg1LCA3NywgNjYsIDY5LCAyMTAsIDY4LCA3OSwgODUsIDY2LCA3NiwgMTk3LCA4MywgNzMsIDcxLCAKLSAgICA3OCwgMTI4LCAxOTQsIDY2LCA2OSwgNzYsIDc5LCA4NywgMTI4LCA3NSwgNjUsIDg0LCA2NSwgNzUsIDY1LCA3OCwgMTkzLCAKLSAgICA3NSwgNjUsIDc4LCA3MSwgODgsIDIwMSwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIAotICAgIDY5LCAyMTAsIDg0LCA3MywgNjYsIDY5LCA4NCwgNjUsIDIwNiwgNjUsIDEyOCwgNjgsIDc5LCAyMTIsIDc3LCA2OSwgNjksIAotICAgIDIwNSwgNzcsIDg5LCA2NSwgNzgsIDc3LCA2NSwgMjEwLCA3OSwgMTk4LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAyMTAsIAotICAgIDg3LCA3MiwgNzMsIDg0LCAxOTcsIDY1LCA4MiwgODIsIDc5LCA4NywgMTI4LCA4NSwgMTI4LCA3MywgNzgsIDczLCA4NCwgCi0gICAgNzMsIDY1LCAyMDQsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDczLCAxMjgsIDg5LCA2OSwgMjAwLCA3OSwgCi0gICAgMTI4LCA2NSwgODIsIDgyLCA3OSwgMjE1LCA3NywgNjUsIDgyLCA3NSwgMTI4LCA2NSwgNjYsIDc5LCA4NiwgMTk3LCA2NywgCi0gICAgNzksIDgwLCA4NCwgNzMsIDE5NSwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk3LCA3NywgNzksIDc4LCA3MSwgNzksIDc2LCAKLSAgICA3MywgNjUsIDIwNiwgNjgsIDY5LCA4NiwgNjUsIDc4LCA2NSwgNzEsIDY1LCA4MiwgMjAxLCA2NiwgNzYsIDY1LCA2NywgCi0gICAgMjAzLCA3NSwgNzIsIDc3LCA2OSwgMjEwLCA4NCwgNzMsIDc2LCAxOTcsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCAKLSAgICA2OSwgODMsIDczLCA5MCwgNjksIDE5NiwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgMTI4LCA4NCwgNzIsIDY1LCAyMDUsIAotICAgIDc0LCA3OSwgNzgsIDcxLCA4MywgNjksIDc5LCA3OCwgMTk5LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAxMjgsIDgzLCA4MSwgCi0gICAgODUsIDY1LCA4MiwgNjksIDE5NiwgNjYsIDc5LCAyMTYsIDcyLCA2OSwgNjYsIDgyLCA2OSwgMjE1LCA4MCwgNzYsIDg1LCAKLSAgICAyMTEsIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgNjgsIDgyLCA2NSwgODcsIDczLCA3OCwgNzEsIAorICAgIDE5OCwgODQsIDY1LCA3NywgNzMsIDIwNCwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgMTk2LCA2NywgNzksIDc3LCA2NiwgCisgICAgNzMsIDc4LCA3MywgNzgsIDE5OSwgODQsIDY1LCAyMDEsIDcwLCA3MywgNzgsIDY1LCAyMDQsIDg2LCA2NSwgMjAxLCA4MywgCisgICAgODEsIDg1LCA2NSwgODIsIDE5NywgNzYsIDY5LCA3MCwgMjEyLCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA4NiwgNjUsIDgyLCAKKyAgICA3MywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjYsIDgyLCA2NSwgNzMsIDc2LCA3NiwgMTk3LCA4MCwgNjUsIDg0LCA4NCwgNjksIAorICAgIDgyLCAyMDYsIDY1LCA2NiwgNzksIDg2LCA2OSwgMTI4LCA2NiwgODksIDkwLCA2NSwgNzgsIDg0LCA3MywgNzgsIDE5NywgCisgICAgODMsIDczLCA3MSwgNzgsIDEyOCwgNjYsIDY5LCA3NiwgNzksIDg3LCAxMjgsIDY4LCA3OSwgODUsIDY2LCA3NiwgMTk3LCAKKyAgICA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTk2LCA3OCwgODUsIDc3LCA2NiwgNjksIDIxMCwgNzUsIDY1LCA4NCwgNjUsIAorICAgIDc1LCA2NSwgNzgsIDE5MywgMTk0LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgMjEwLCA2OCwgNzksIDIxMiwgNzUsIAorICAgIDY1LCA3OCwgNzEsIDg4LCAyMDEsIDY1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4NCwgNzMsIDY2LCA2OSwgCisgICAgODQsIDY1LCAyMDYsIDc5LCAxOTgsIDczLCA3OCwgNzMsIDg0LCA3MywgNjUsIDIwNCwgNzcsIDY5LCA2OSwgMjA1LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3NywgODksIDY1LCA3OCwgNzcsIDY1LCAyMTAsIDc1LCA3MiwgNzcsIDY5LCAKKyAgICAyMTAsIDg1LCAxMjgsIDg3LCA3MiwgNzMsIDg0LCAxOTcsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIDIxMCwgNzMsIDEyOCwgCisgICAgNjUsIDgyLCA4MiwgNzksIDg3LCAxMjgsIDc5LCAxMjgsIDY1LCA2NiwgNzksIDg2LCAxOTcsIDc3LCA2NSwgODIsIDc1LCAKKyAgICAxMjgsIDg5LCA2OSwgMjAwLCA2NSwgODIsIDgyLCA3OSwgMjE1LCA2NywgNzksIDgwLCA4NCwgNzMsIDE5NSwgODAsIDcyLCAKKyAgICA2NSwgODMsIDY5LCA0NSwgMTk3LCA3NywgNzksIDc4LCA3MSwgNzksIDc2LCA3MywgNjUsIDIwNiwgNjgsIDY5LCA4NiwgNjUsIAorICAgIDc4LCA2NSwgNzEsIDY1LCA4MiwgMjAxLCA2NiwgNzYsIDY1LCA2NywgMjAzLCA4NCwgNzMsIDc2LCAxOTcsIDgzLCA4OSwgCisgICAgNzcsIDY2LCA3OSwgNzYsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNzMsIDkwLCA2OSwgMTk2LCAKKyAgICA4NCwgNzIsIDY1LCAyMDUsIDc0LCA3OSwgNzgsIDcxLCA4MywgNjksIDc5LCA3OCwgMTk5LCA4MywgODQsIDgyLCA3OSwgNzUsIAorICAgIDY5LCAxMjgsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDE5NiwgNjYsIDc5LCAyMTYsIDcyLCA2OSwgNjYsIDgyLCA2OSwgCisgICAgMjE1LCA3NywgNzMsIDY1LCAyMDcsIDgwLCA3NiwgODUsIDIxMSwgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIDgyLCAKKyAgICA2OCwgMjExLCA3MSwgNjksIDc5LCA4MiwgNzEsIDczLCA2NSwgMjA2LCA2OCwgODIsIDY1LCA4NywgNzMsIDc4LCA3MSwgCiAgICAgMjExLCA2NywgNzIsIDc5LCA4MywgNjksIDc5LCA3OCwgMTk5LCA3MiwgNjUsIDc2LCA3MCwgODcsIDczLCA2OCwgODQsIAotICAgIDIwMCwgNjYsIDY1LCA3NiwgNzMsIDc4LCA2OSwgODMsIDE5NywgNzEsIDY5LCA3OSwgODIsIDcxLCA3MywgNjUsIDIwNiwgCi0gICAgNzIsIDc5LCA3OSwgNzUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDcyLCA2NSwgODMsIDY5LCAKLSAgICA0NSwgMTk2LCA2NSwgNzYsIDY3LCA3MiwgNjksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDczLCAxOTUsIDY1LCA3NiwgNjksIDE5OCwgNzIsIDY5LCA2NSwgODYsIDIxNywgODQsIDc5LCAxMjgsIAotICAgIDg0LCA4NywgNzksIDEyOCwgNzksIDg2LCA2OSwgMjEwLCAyMTMsIDY2LCA4MiwgNjUsIDcyLCA3NywgMjAxLCA4MywgNjcsIAotICAgIDgyLCA3MywgODAsIDIxMiwgODUsIDIwOCwgNzYsIDc5LCAyMTUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDg3LCAyMDcsIDY4LCAKLSAgICA3OSwgODcsIDIwNiwgNzAsIDg1LCA3NiwgNzYsIDg3LCA3MywgNjgsIDg0LCAyMDAsIDcyLCA2NSwgMjAwLCA3OSwgNzgsIAotICAgIDE5NywgNjksIDgxLCA4NSwgNjUsIDIwNCwgNzIsIDczLCA3MSwgMjAwLCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgCi0gICAgMTI4LCA4NCwgNjUsIDE5OSwgNjgsIDc5LCA3NywgNzMsIDc4LCAyMDcsIDc4LCA4NSwgNzcsIDY5LCA4MiwgNzMsIDE5NSwgCi0gICAgNzAsIDgyLCA2NSwgNzUsIDg0LCA4NSwgMjEwLCA3NywgNjUsIDc2LCA2NSwgODksIDY1LCA3NiwgNjUsIDIwNSwgODAsIDcyLCAKLSAgICA2NSwgODMsIDY5LCA0NSwgMTk1LCA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgODQsIDcyLCA4MiwgNjksIAotICAgIDE5NywgNjYsIDY1LCA4MiwgMTI4LCA3NCwgODUsIDc4LCA3MSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgNzEsIDc2LCA2NSwgCi0gICAgNzEsIDc5LCA3NiwgNzMsIDg0LCA3MywgMTk1LCA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgNjksIDIxMCwgNzcsIDY5LCAKLSAgICA2OCwgNzMsIDY1LCAyMDQsIDg0LCA2OSwgNzYsIDg1LCA3MSwgMjEzLCA2NiwgNjksIDc4LCA3MSwgNjUsIDc2LCAyMDEsIAotICAgIDY1LCA4MiwgNzcsIDY5LCA3OCwgNzMsIDY1LCAyMDYsIDcyLCA3MywgODIsIDY1LCA3MSwgNjUsIDc4LCAxOTMsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NCwgNjUsIDg2LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA3NCwgNjksIDY5LCAKLSAgICAyMDUsIDc4LCA2OSwgNzEsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDc5LCA4MiwgNzMsIDg5LCAxOTMsIDg3LCA2OSwgODMsIAotICAgIDg0LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3MiwgNjUsIDc2LCAxOTgsIDc3LCA2NSwgODIsIDIwMywgODAsIDcyLCA2NSwgCi0gICAgODMsIDY5LCA0NSwgMTkzLCA4NCwgNzIsIDY1LCAyMDEsIDc1LCA2NSwgNzgsIDc4LCA2NSwgNjgsIDE5MywgNzgsIDY5LCAKLSAgICAyMTUsIDY3LCA3MiwgNjksIDgyLCA3OSwgNzUsIDY5LCAxOTcsIDcyLCA2NSwgMTI4LCA4NCwgNzksIDc4LCAxOTcsIDg2LCAKLSAgICA3OSwgNjcsIDY1LCA3NiwgNzMsIDE5NSwgNjcsIDcyLCA2NSwgMjA1LCA3MCwgNzksIDg1LCA4MiwgMTI4LCA3MSwgODUsIAotICAgIDc0LCA2NSwgODIsIDY1LCA4NCwgMjAxLCA3NiwgODUsIDE5NywgODQsIDcyLCA4MiwgNjksIDY5LCAxMjgsIDgyLCA4NSwgCi0gICAgNzgsIDczLCAxOTUsIDgzLCA2NSwgODUsIDgyLCA2NSwgODMsIDcyLCA4NCwgODIsIDE5MywgODQsIDY5LCA4NCwgODIsIDY1LCAKLSAgICA3MSwgODIsIDY1LCAyMDUsIDY4LCA2OSwgODMsIDY5LCA4MiwgNjksIDIxMiwgODMsIDczLCA3OCwgNzIsIDY1LCA3NiwgCi0gICAgMTkzLCA3MSwgODUsIDgyLCA3NywgODUsIDc1LCA3MiwgMjAxLCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCAKLSAgICA4MywgODksIDgyLCA3MywgNjUsIDE5NSwgNjgsIDc5LCA4NCwgMjExLCA3NiwgNzMsIDcxLCA3MiwgMjEyLCA4NCwgNjUsIAotICAgIDc3LCA3MywgMjA0LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNzAsIDczLCA4NiwgNjksIDEyOCwgNzUsIDY1LCAxMjgsIAotICAgIDc2LCA2OSwgODAsIDY3LCA3MiwgMTkzLCA3NiwgNzksIDc4LCAxOTksIDg0LCA4NSwgODIsIDc1LCA3MywgMTk1LCA4OSwgCi0gICAgNjUsIDEyOCwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDgzLCA4NCwgODIsIDg1LCA2NywgMjAzLCA3NywgNjUsIAotICAgIDEyOCwgODMsIDczLCA4OCwgMTI4LCA4NiwgNzMsIDY5LCAyMTIsIDcyLCA2NSwgNzcsIDkwLCAxOTMsIDgwLCA2NSwgMTI4LCAKLSAgICA2NSwgODAsIDIwNCwgNjksIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgNjUsIAotICAgIDIwNCwgODMsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCi0gICAgNjUsIDIwNCwgNzgsIDczLCA3OCwgNjksIDEyOCwgODQsIDY5LCA3NiwgNjksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDY2LCAKLSAgICA3OSwgODAsIDc5LCA3NywgNzksIDcwLCAyMDcsIDgyLCA2NSwgMTI4LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA4MiwgMTk0LCAKLSAgICA2OCwgNjUsIDgzLCA3MywgMTkzLCA3NSwgNjUsIDczLCA4NCwgNzIsIDIwMSwgNzYsIDczLCA3NywgNjYsIDIxMywgNzcsIAotICAgIDY1LCA3NSwgODMsIDg1LCA4MiwgMTkzLCA4NCwgMjA3LCA5MCwgOTAsIDg5LCA4OCwgMTI4LCA5MCwgOTAsIDg5LCA4NCwgCi0gICAgMTI4LCA5MCwgOTAsIDg5LCA4MiwgODgsIDEyOCwgOTAsIDkwLCA4OSwgODIsIDEyOCwgOTAsIDkwLCA4OSwgODAsIDEyOCwgCi0gICAgOTAsIDkwLCA4OSwgMTI4LCA5MCwgOTAsIDg1LCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgODgsIDEyOCwgOTAsIDkwLCAKLSAgICA4NSwgODIsIDEyOCwgOTAsIDkwLCA4NSwgODAsIDEyOCwgOTAsIDkwLCA4NSwgMTI4LCA5MCwgOTAsIDc5LCA4OCwgMTI4LCAKLSAgICA5MCwgOTAsIDc5LCA4MCwgMTI4LCA5MCwgOTAsIDc5LCAxMjgsIDkwLCA5MCwgNzMsIDg4LCAxMjgsIDkwLCA5MCwgNzMsIAotICAgIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDgwLCAxMjgsIDkwLCA5MCwgNzMsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgCi0gICAgODQsIDEyOCwgOTAsIDkwLCA3MywgNjksIDgwLCAxMjgsIDkwLCA5MCwgNzMsIDY5LCAxMjgsIDkwLCA5MCwgNzMsIDEyOCwgCi0gICAgOTAsIDkwLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA2OSwgODAsIDEyOCwgOTAsIDkwLCA2OSwgNjksIDEyOCwgOTAsIDkwLCAKLSAgICA2OSwgMTI4LCA5MCwgOTAsIDY1LCA4OCwgMTI4LCA5MCwgOTAsIDY1LCA4NCwgMTI4LCA5MCwgOTAsIDY1LCA4MCwgMTI4LCAKLSAgICA5MCwgOTAsIDY1LCA2NSwgMTI4LCA5MCwgOTAsIDY1LCAxMjgsIDkwLCA4OSwgNzEsIDc5LCA4MywgMTI4LCA5MCwgODcsIAotICAgIDY1LCA4MiwgNjUsIDc1LCA2NSwgODksIDEyOCwgOTAsIDg3LCA2NSwgMTI4LCA5MCwgODUsIDg0LCAxMjgsIDkwLCA4NSwgCi0gICAgNzksIDg4LCAxMjgsIDkwLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA4NSwgNzksIDEyOCwgOTAsIDg1LCA3NywgMTI4LCA5MCwgCi0gICAgODUsIDY2LCA4NSwgODIsIDEyOCwgOTAsIDg1LCA1MywgMTI4LCA5MCwgODUsIDE4MSwgOTAsIDgyLCA2NSwgMTI4LCA5MCwgCi0gICAgODEsIDY1LCA4MCwgNzIsIDE5MywgOTAsIDc5LCA4NCwgMTI4LCA5MCwgNzksIDc5LCAxMjgsIDkwLCA3OSwgNjUsIDEyOCwgCi0gICAgOTAsIDc2LCA2NSwgNzcsIDE5MywgOTAsIDc2LCA2NSwgMTI4LCA5MCwgNzYsIDE5MywgOTAsIDc0LCA2OSwgMTI4LCA5MCwgCi0gICAgNzMsIDkwLCA1MCwgMTI4LCA5MCwgNzMsIDgxLCA2NSwgNjUsIDEyOCwgOTAsIDczLCA3OCwgNzksIDgyLCAxMjgsIDkwLCAKLSAgICA3MywgNzYsIDY4LCA2OSwgMTI4LCA5MCwgNzMsIDcxLCA5MCwgNjUsIDE5OSwgOTAsIDczLCA3MSwgMTI4LCA5MCwgNzMsIAotICAgIDY4LCAxOTMsIDkwLCA3MywgNjYsIDEyOCwgOTAsIDczLCAxOTQsIDkwLCA3MywgNTEsIDEyOCwgOTAsIDIwMSwgOTAsIDcyLCAKLSAgICA4OSwgODgsIDEyOCwgOTAsIDcyLCA4OSwgODQsIDEyOCwgOTAsIDcyLCA4OSwgODIsIDg4LCAxMjgsIDkwLCA3MiwgODksIAotICAgIDgyLCAxMjgsIDkwLCA3MiwgODksIDgwLCAxMjgsIDkwLCA3MiwgODksIDEyOCwgOTAsIDcyLCA4NywgNjksIDEyOCwgOTAsIAotICAgIDcyLCA4NywgNjUsIDEyOCwgOTAsIDcyLCA4NSwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODQsIDEyOCwgOTAsIDcyLCA4NSwgCi0gICAgODIsIDg4LCAxMjgsIDkwLCA3MiwgODUsIDgyLCAxMjgsIDkwLCA3MiwgODUsIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCAKLSAgICA4OCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDcyLCA4NSwgNzksIDEyOCwgOTAsIDcyLCA4NSwgMTI4LCAKLSAgICA5MCwgNzIsIDc5LCA4OCwgMTI4LCA5MCwgNzIsIDc5LCA4NCwgMTI4LCA5MCwgNzIsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIAotICAgIDc5LCA3OSwgMTI4LCA5MCwgNzIsIDc5LCAxMjgsIDkwLCA3MiwgNzMsIDg2LCA2OSwgODQsIDY5LCAxMjgsIDkwLCA3MiwgCi0gICAgNzMsIDEyOCwgOTAsIDcyLCA2OSwgODgsIDEyOCwgOTAsIDcyLCA2OSwgODQsIDEyOCwgOTAsIDcyLCA2OSwgODAsIDEyOCwgCi0gICAgOTAsIDcyLCA2OSwgNjksIDEyOCwgOTAsIDcyLCA2OSwgMTI4LCA5MCwgNzIsIDE5NywgOTAsIDcyLCA2NSwgODgsIDEyOCwgCi0gICAgOTAsIDcyLCA2NSwgODQsIDEyOCwgOTAsIDcyLCA2NSwgODIsIDEyOCwgOTAsIDcyLCA2NSwgODAsIDEyOCwgOTAsIDcyLCAKLSAgICA2NSwgNzMsIDc4LCAxMjgsIDkwLCA3MiwgNjUsIDY1LCAxMjgsIDkwLCA3MiwgNjUsIDEyOCwgOTAsIDcyLCAxMjgsIDkwLCAKLSAgICA2OSwgODQsIDY1LCAxMjgsIDkwLCA2OSwgODIsIDc5LCAxMjgsIDkwLCA2OSwgODIsIDIwNywgOTAsIDY5LCA3OCwgMTI4LCAKLSAgICA5MCwgNjksIDc3LCA3NiwgODksIDY1LCAxMjgsIDkwLCA2OSwgNzcsIDc2LCA3NCwgNjUsIDEyOCwgOTAsIDY5LCA1MCwgCi0gICAgMTI4LCA5MCwgMTk3LCA5MCwgNjUsIDg5LCA3OCwgMTI4LCA5MCwgNjUsIDg5LCA3MywgNzgsIDEyOCwgOTAsIDY1LCA4OSwgCi0gICAgNzMsIDIwNiwgOTAsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDkwLCA2NSwgODQsIDY1LCAxMjgsIDkwLCAKLSAgICA2NSwgODIsIDgxLCA2NSwgMTI4LCA5MCwgNjUsIDgxLCA2OSwgMTk4LCA5MCwgNjUsIDc3LCA4OCwgMTI4LCA5MCwgNjUsIAotICAgIDIwNCwgOTAsIDY1LCA3MywgNzgsIDEyOCwgOTAsIDY1LCA3MywgMjA2LCA5MCwgNjUsIDczLCAxMjgsIDkwLCA2NSwgNzIsIAotICAgIDEyOCwgOTAsIDY1LCAyMDAsIDkwLCA2NSwgNzEsIDEyOCwgOTAsIDY1LCA2OSwgNzAsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIAotICAgIDcyLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNzAsIDEyOCwgOTAsIDQ4LCA0OSwgCi0gICAgNTQsIDY5LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2OCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjcsIDEyOCwgOTAsIDQ4LCAKLSAgICA0OSwgNTQsIDY2LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgMTI4LCA5MCwgNDgsIAotICAgIDQ5LCA1MywgNzMsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcyLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MSwgMTI4LCA5MCwgCi0gICAgNDgsIDQ5LCA1MywgNzAsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY5LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2OCwgMTI4LCAKLSAgICA5MCwgNDgsIDQ5LCA1MywgNjcsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY2LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NSwgCi0gICAgMTI4LCA5MCwgNDgsIDQ5LCA1MywgMTI4LCA5MCwgNDgsIDQ5LCA1MiwgMTI4LCA5MCwgNDgsIDQ5LCA1MSwgMTI4LCA5MCwgCi0gICAgNDgsIDQ5LCA1MCwgMTI4LCA5MCwgNDgsIDQ5LCA0OSwgMTI4LCA5MCwgNDgsIDQ5LCA0OCwgMTI4LCA5MCwgNDgsIDQ4LCAKLSAgICA1NywgMTI4LCA5MCwgNDgsIDQ4LCA1NiwgMTI4LCA5MCwgNDgsIDQ4LCA1NSwgMTI4LCA5MCwgNDgsIDQ4LCA1NCwgMTI4LCAKLSAgICA5MCwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTMsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIDY1LCAxMjgsIAotICAgIDkwLCA0OCwgNDgsIDUyLCAxMjgsIDkwLCA0OCwgNDgsIDUxLCA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgCi0gICAgOTAsIDQ4LCA0OCwgNTEsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY4LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NywgMTI4LCAKLSAgICA5MCwgNDgsIDQ4LCA1MCwgNjYsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCAxMjgsIAotICAgIDkwLCA0OCwgNDgsIDQ5LCAxMjgsIDkwLCAxMjgsIDIxOCwgODksIDg5LCA4OCwgMTI4LCA4OSwgODksIDg0LCAxMjgsIDg5LCAKLSAgICA4OSwgODIsIDg4LCAxMjgsIDg5LCA4OSwgODIsIDEyOCwgODksIDg5LCA4MCwgMTI4LCA4OSwgODksIDY5LCAxMjgsIDg5LCAKLSAgICA4OSwgNjUsIDEyOCwgODksIDg5LCAxMjgsIDg5LCA4NywgNzksIDc5LCAxMjgsIDg5LCA4NywgNzksIDEyOCwgODksIDg3LCAKLSAgICA3MywgNzMsIDEyOCwgODksIDg3LCA3MywgMTI4LCA4OSwgODcsIDY5LCAxMjgsIDg5LCA4NywgNjUsIDY1LCAxMjgsIDg5LCAKLSAgICA4NywgNjUsIDEyOCwgODksIDg2LCAxMjgsIDg5LCA4NSwgODgsIDEyOCwgODksIDg1LCA4NywgNzksIDgxLCAxMjgsIDg5LCAKLSAgICA4NSwgODUsIDc1LCA2NSwgNzYsIDY5LCA2NSwgODAsIDczLCA3OCwgODQsIDg1LCAxMjgsIDg5LCA4NSwgODQsIDEyOCwgODksIAotICAgIDg1LCA4MywgMTI4LCA4OSwgODUsIDIxMSwgODksIDg1LCA4MiwgODgsIDEyOCwgODksIDg1LCA4MiwgMTI4LCA4OSwgODUsIAotICAgIDgxLCAxMjgsIDg5LCA4NSwgMjA5LCA4OSwgODUsIDgwLCAxMjgsIDg5LCA4NSwgNzksIDg4LCAxMjgsIDg5LCA4NSwgNzksIAotICAgIDg0LCAxMjgsIDg5LCA4NSwgNzksIDgwLCAxMjgsIDg5LCA4NSwgNzksIDc3LCAxMjgsIDg5LCA4NSwgNzksIDEyOCwgODksIAotICAgIDg1LCA3OCwgMTI4LCA4OSwgODUsIDc3LCAxMjgsIDg5LCA4NSwgNjksIDgxLCAxMjgsIDg5LCA4NSwgNjksIDEyOCwgODksIAotICAgIDg1LCA2OCwgNzIsIDEyOCwgODksIDg1LCA2OCwgMjAwLCA4OSwgODUsIDY1LCA3OCwgMTI4LCA4OSwgODUsIDY1LCA2OSwgCi0gICAgNzgsIDEyOCwgODksIDg1LCA0NSwgODksIDY5LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA4OSwgNjksIDEyOCwgODksIDg1LCAKLSAgICA0NSwgODUsIDEyOCwgODksIDg1LCA0NSwgNzksIDEyOCwgODksIDg1LCA0NSwgNzMsIDEyOCwgODksIDg1LCA0NSwgNjksIAotICAgIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDY1LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA2NSwgCi0gICAgMTI4LCA4OSwgODUsIDEyOCwgODksIDIxMywgODksIDgwLCA4MywgNzMsIDc2LCA3MywgMTI4LCA4OSwgODAsIDc5LCA4MiwgCi0gICAgODIsIDc5LCA3MywgMTI4LCA4OSwgODAsIDc5LCA3NSwgODIsIDczLCA4MywgNzMsIDgzLCAxMjgsIDg5LCA4MCwgNzksIDc1LCAKLSAgICA4MiwgNzMsIDgzLCA3MywgMjExLCA4OSwgODAsIDc5LCA3MSwgNjksIDcxLCA4MiwgNjUsIDc3LCA3NywgNjksIDc4LCA3MywgCi0gICAgMTI4LCA4OSwgNzksIDg5LCAxMjgsIDg5LCA3OSwgODgsIDEyOCwgODksIDc5LCA4NSwgODQsIDcyLCA3MCwgODUsIDc2LCAKLSAgICA3OCwgNjksIDgzLCA4MywgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCA4NSwgMjA0LCA4OSwgNzksIDg0LCAxMjgsIAotICAgIDg5LCA3OSwgODIsIDczLCAxMjgsIDg5LCA3OSwgODEsIDEyOCwgODksIDc5LCAyMDksIDg5LCA3OSwgODAsIDEyOCwgODksIAotICAgIDc5LCA3OSwgMTI4LCA4OSwgNzksIDc3LCA3OSwgMTI4LCA4OSwgNzksIDcxLCA3MiwgMTI4LCA4OSwgNzksIDY4LCA3MiwgCi0gICAgMTI4LCA4OSwgNzksIDY4LCAxMjgsIDg5LCA3OSwgMTk2LCA4OSwgNzksIDY1LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2OSwgCi0gICAgNzksIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCA2OSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjUsIDEyOCwgODksIDc5LCAKLSAgICA0NSwgNzksIDEyOCwgODksIDc5LCA0NSwgNzMsIDEyOCwgODksIDc5LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA3OSwgNDUsIAotICAgIDY1LCA2OSwgMTI4LCA4OSwgNzksIDQ1LCA2NSwgMTI4LCA4OSwgNzksIDEyOCwgODksIDIwNywgODksIDczLCA5MCwgNjksIAotICAgIDg0LCAxMjgsIDg5LCA3MywgODgsIDEyOCwgODksIDczLCA4NywgNzgsIDEyOCwgODksIDczLCA4NCwgMTI4LCA4OSwgNzMsIAotICAgIDgwLCAxMjgsIDg5LCA3MywgNzgsIDcxLCAxMjgsIDg5LCA3MywgNzMsIDEyOCwgODksIDczLCAxOTksIDg5LCA3MywgNjksIAotICAgIDg4LCAxMjgsIDg5LCA3MywgNjksIDg0LCAxMjgsIDg5LCA3MywgNjksIDgwLCAxMjgsIDg5LCA3MywgNjksIDY5LCAxMjgsIAotICAgIDg5LCA3MywgNjksIDEyOCwgODksIDczLCA2OCwgNjgsIDczLCA4MywgMjAwLCA4OSwgNzMsIDQ1LCA4NSwgMTI4LCA4OSwgCi0gICAgNzMsIDEyOCwgODksIDcwLCA2OSwgODMsIDczLCA4MywgMTI4LCA4OSwgNzAsIDY5LCA4MywgNzMsIDIxMSwgODksIDcwLCAKLSAgICA2OSwgMjA2LCA4OSwgNjksIDg5LCAxMjgsIDg5LCA2OSwgODcsIDEyOCwgODksIDY5LCA4NSwgODgsIDEyOCwgODksIDY5LCAKLSAgICA4NSwgODIsIDY1LCA2OSwgMTI4LCA4OSwgNjksIDg1LCA4MSwgMTI4LCA4OSwgNjksIDg1LCA3NywgMTI4LCA4OSwgNjksIAotICAgIDg1LCA2NSwgNjksIDg0LCAxMjgsIDg5LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4OSwgNjksIDg0LCA3MywgODYsIDEyOCwgCi0gICAgODksIDY5LCA4MywgODQsIDg1LCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgzLCA3MywgNzksIAotICAgIDgzLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAKLSAgICAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4OSwgNjksIAotICAgIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCAKLSAgICA4NSwgNzgsIDcxLCAxMjgsIDg5LCA2OSwgODIsIDg1LCAxMjgsIDg5LCA2OSwgODIsIDIxMywgODksIDY5LCA4MiwgNzMsIAotICAgIDEyOCwgODksIDY5LCA4MiwgNjUsIDIwMCwgODksIDY5LCA4MiwgMTI4LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgCi0gICAgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODksIDY5LCA3OSwgNDUsIDg5LCA2NSwgMTI4LCA4OSwgNjksIDc5LCA0NSwgODUsIAotICAgIDEyOCwgODksIDY5LCA3OSwgNDUsIDc5LCAxMjgsIDg5LCA2OSwgNzgsIDczLCA4MywgNjksIDIwMSwgODksIDY5LCA3OCwgCi0gICAgNjUsIDgwLCAxMjgsIDg5LCA2OSwgNzgsIDEyOCwgODksIDY5LCAyMDYsIDg5LCA2OSwgNzYsIDc2LCA3OSwgODcsIDEyOCwgCi0gICAgODksIDY5LCA3NiwgNzYsIDc5LCAyMTUsIDg5LCA2OSwgNzIsIDEyOCwgODksIDY5LCA2OSwgMTI4LCA4OSwgNjksIDY1LCAKLSAgICAyMTAsIDg5LCA2OSwgNjUsIDEyOCwgODksIDY1LCA5MCwgOTAsIDEyOCwgODksIDY1LCA5MCwgNzIsIDEyOCwgODksIDY1LCAKLSAgICA5MCwgMTI4LCA4OSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4OSwgNjUsIDg5LCAxMjgsIDg5LCA2NSwgODcsIAotICAgIDEyOCwgODksIDY1LCA4NiwgMTI4LCA4OSwgNjUsIDg0LCA4NCwgMTI4LCA4OSwgNjUsIDg0LCA3MywgMTI4LCA4OSwgNjUsIAotICAgIDg0LCA3MiwgMTI4LCA4OSwgNjUsIDg0LCAxMjgsIDg5LCA2NSwgODMsIDgzLCAxMjgsIDg5LCA2NSwgODMsIDcyLCAxMjgsIAotICAgIDg5LCA2NSwgODMsIDEyOCwgODksIDY1LCA4MiwgODIsIDEyOCwgODksIDY1LCA4MiwgMTI4LCA4OSwgNjUsIDIxMCwgODksIAotICAgIDY1LCA4MSwgMTI4LCA4OSwgNjUsIDgwLCAxMjgsIDg5LCA2NSwgNzgsIDcxLCAxMjgsIDg5LCA2NSwgNzgsIDE5OSwgODksIAotICAgIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCA3OSwgNzUsIDEyOCwgODksIDY1LCA3NywgNjUsIDc1LCA3NSwgNjUsIDc4LCAKLSAgICAxMjgsIDg5LCA2NSwgNzcsIDEyOCwgODksIDY1LCA3NiwgMTI4LCA4OSwgNjUsIDc1LCA3MiwgNzIsIDEyOCwgODksIDY1LCAKLSAgICA3NSwgNzIsIDEyOCwgODksIDY1LCA3NSwgNjUsIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDc1LCAxMjgsIDg5LCA2NSwgNzQsIAotICAgIDg1LCA4MiwgODYsIDY5LCA2OCwgNzMsIDE5NSwgODksIDY1LCA3NCwgMTI4LCA4OSwgNjUsIDcyLCA3MiwgMTI4LCA4OSwgCi0gICAgNjUsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDc4LCAxMjgsIDg5LCA2NSwgNzEsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcxLCAKLSAgICA3MiwgMTI4LCA4OSwgNjUsIDcxLCAxMjgsIDg5LCA2NSwgNzAsIDIxMywgODksIDY1LCA3MCwgMTI4LCA4OSwgNjUsIDY5LCAKLSAgICA3NywgNzcsIDY1LCA2OSwgMTI4LCA4OSwgNjUsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCA2OCwgNzIsIDEyOCwgODksIAotICAgIDY1LCA2OCwgNjgsIDEyOCwgODksIDY1LCA2OCwgMTI4LCA4OSwgNjUsIDY3LCA3MiwgMTI4LCA4OSwgNjUsIDY2LCA3MiwgCi0gICAgMTI4LCA4OSwgNjUsIDY2LCAxMjgsIDg5LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA4OSwgNjUsIDY1LCA3MywgMTI4LCA4OSwgCi0gICAgNjUsIDY1LCA2OCwgNzksIDEyOCwgODksIDY1LCA2NSwgMTI4LCA4OSwgNjUsIDQ1LCA4OSwgNzksIDEyOCwgODksIDY1LCAKLSAgICA0NSwgODUsIDEyOCwgODksIDY1LCA0NSwgNzksIDEyOCwgODksIDQ4LCA0OCwgNTYsIDEyOCwgODksIDQ4LCA0OCwgNTUsIAotICAgIDEyOCwgODksIDQ4LCA0OCwgNTQsIDEyOCwgODksIDQ4LCA0OCwgNTMsIDEyOCwgODksIDQ4LCA0OCwgNTIsIDEyOCwgODksIAotICAgIDQ4LCA0OCwgNTEsIDEyOCwgODksIDQ4LCA0OCwgNTAsIDEyOCwgODksIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDg5LCA0OCwgCi0gICAgNDgsIDQ5LCAxMjgsIDg5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4OCwgODksIDg4LCAxMjgsIDg4LCA4OSwgODUsIDEyOCwgCi0gICAgODgsIDg5LCA4NCwgMTI4LCA4OCwgODksIDgyLCA4OCwgMTI4LCA4OCwgODksIDgyLCAxMjgsIDg4LCA4OSwgODAsIDEyOCwgCi0gICAgODgsIDg5LCA3OSwgMTI4LCA4OCwgODksIDczLCAxMjgsIDg4LCA4OSwgNjksIDY5LCAxMjgsIDg4LCA4OSwgNjksIDEyOCwgCi0gICAgODgsIDg5LCA2NSwgNjUsIDEyOCwgODgsIDg5LCA2NSwgMTI4LCA4OCwgODksIDEyOCwgODgsIDg3LCA3MywgMTI4LCA4OCwgCi0gICAgODcsIDY5LCA2OSwgMTI4LCA4OCwgODcsIDY5LCAxMjgsIDg4LCA4NywgNjUsIDY1LCAxMjgsIDg4LCA4NywgNjUsIDEyOCwgCi0gICAgODgsIDg2LCA2OSwgMTI4LCA4OCwgODYsIDY1LCAxMjgsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDg4LCA4NSwgNzksIDEyOCwgCi0gICAgODgsIDg1LCAxMjgsIDg4LCA4MywgNzIsIDY1LCA2NSwgODksIDY1LCA4NCwgNzIsIDczLCA4OSwgNjUsIDEyOCwgODgsIDc5LCAKLSAgICA4OCwgMTI4LCA4OCwgNzksIDg0LCAxMjgsIDg4LCA3OSwgODIsIDEyOCwgODgsIDc5LCA4MCwgMTI4LCA4OCwgNzksIDY1LCAKLSAgICAxMjgsIDg4LCA3OSwgMTI4LCA4OCwgNzMsIDg4LCAxMjgsIDg4LCA3MywgODQsIDEyOCwgODgsIDczLCA4MiwgNzksIDIwNiwgCi0gICAgODgsIDczLCA4MCwgMTI4LCA4OCwgNzMsIDY5LCA4OCwgMTI4LCA4OCwgNzMsIDY5LCA4NCwgMTI4LCA4OCwgNzMsIDY5LCAKLSAgICA4MCwgMTI4LCA4OCwgNzMsIDY5LCAxMjgsIDg4LCA3MywgMTI4LCA4OCwgNzEsIDEyOCwgODgsIDY5LCA4MywgODQsIDY5LCAKLSAgICAyMTEsIDg4LCA2OSwgNzIsIDEyOCwgODgsIDY5LCA2OSwgMTI4LCA4OCwgNjksIDEyOCwgODgsIDY1LCA3OCwgMTI4LCA4OCwgCi0gICAgNjUsIDY1LCAxMjgsIDg4LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTYsIDEyOCwgCi0gICAgODgsIDQ4LCA0OCwgNTUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU0LCAxMjgsIDg4LCAKLSAgICA0OCwgNDgsIDUzLCAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NiwgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgNjUsIDEyOCwgODgsIAotICAgIDQ4LCA0OCwgNTIsIDEyOCwgODgsIDQ4LCA0OCwgNTEsIDEyOCwgODgsIDQ4LCA0OCwgNTAsIDEyOCwgODgsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgODcsIDkwLCAxMjgsIDg3LCA4OSwgNzgsIDc4LCAxMjgsIDg3LCA4OSwgNzgsIDIwNiwgODcsIDg2LCAxMjgsIAotICAgIDg3LCA4NSwgODAsIDEyOCwgODcsIDg1LCA3OSwgODgsIDEyOCwgODcsIDg1LCA3OSwgODAsIDEyOCwgODcsIDg1LCA3OSwgCi0gICAgMTI4LCA4NywgODUsIDc4LCA3NCwgMjA3LCA4NywgODUsIDc4LCAxMjgsIDg3LCA4NSwgNzYsIDg1LCAxMjgsIDg3LCA4NSwgCi0gICAgNzYsIDIxMywgODcsIDg1LCA2OSwgMTI4LCA4NywgODUsIDY1LCA2OSwgODQsIDEyOCwgODcsIDg1LCA2NSwgNjksIDc4LCAKLSAgICAxMjgsIDg3LCA4NSwgMTI4LCA4NywgODIsIDIxNywgODcsIDgyLCA3OSwgNzgsIDcxLCAxMjgsIDg3LCA4MiwgNzMsIDg0LCAKLSAgICA3MywgNzgsIDE5OSwgODcsIDgyLCA2OSwgNzgsIDY3LCA3MiwgMTI4LCA4NywgODIsIDY5LCA2NSwgODQsIDIwMCwgODcsIAotICAgIDgyLCA2NSwgODAsIDgwLCA2OSwgMTk2LCA4NywgODIsIDY1LCA4MCwgMTI4LCA4NywgNzksIDg4LCAxMjgsIDg3LCA3OSwgCi0gICAgODIsIDc1LCA2OSwgODIsIDEyOCwgODcsIDc5LCA4MiwgNzUsIDEyOCwgODcsIDc5LCA4MiwgMjAzLCA4NywgNzksIDgyLCAKLSAgICA2OCwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDg3LCA3OSwgODIsIDE5NiwgODcsIDc5LCA4MCwgMTI4LCA4NywgNzksIAotICAgIDc5LCA3OCwgMTI4LCA4NywgNzksIDc5LCA3NiwgMTI4LCA4NywgNzksIDc5LCA2OCwgODMsIDQ1LCA2NywgODIsIDY5LCAKLSAgICAxOTcsIDg3LCA3OSwgNzksIDY4LCAxMjgsIDg3LCA3OSwgNzgsIDEyOCwgODcsIDc5LCAyMDYsIDg3LCA3OSwgNzcsIDY5LCAKLSAgICA3OCwgMjExLCA4NywgNzksIDc3LCA2OSwgMjA2LCA4NywgNzksIDc3LCA2NSwgNzgsIDIxMSwgODcsIDc5LCA3NywgNjUsIAotICAgIDc4LCAxMjgsIDg3LCA3OSwgNzcsIDY1LCAyMDYsIDg3LCA3OSwgNzYsIDc5LCA4MywgNzksIDEyOCwgODcsIDc5LCA3NiwgCi0gICAgMTk4LCA4NywgNzksIDY5LCAxMjgsIDg3LCA3OSwgNjUsIDEyOCwgODcsIDczLCA4NCwgNzIsIDc5LCA4NSwgMjEyLCA4NywgCi0gICAgNzMsIDc4LCA4NCwgNjksIDgyLCAxMjgsIDg3LCA3MywgNzgsIDc1LCA3MywgNzgsIDE5OSwgODcsIDczLCA3OCwgNzQsIDY1LCAKLSAgICAxMjgsIDg3LCA3MywgNzgsIDcxLCA4MywgMTI4LCA4NywgNzMsIDc4LCA2OSwgMTI4LCA4NywgNzMsIDc4LCAxOTcsIDg3LCAKLSAgICA3MywgNzgsIDY4LCA4NSwgMTI4LCA4NywgNzMsIDc4LCA2OCwgMTI4LCA4NywgNzMsIDc4LCAxOTYsIDg3LCA3MywgNzgsIAotICAgIDEyOCwgODcsIDczLCA3MSwgNzgsIDg5LCA2NSwgNzgsIDEyOCwgODcsIDczLCA3MSwgNzEsIDc2LCAyMTcsIDg3LCA3MywgCi0gICAgNjgsIDY5LCA0NSwgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDg3LCA3MywgNjgsIDE5NywgODcsIDczLCA2NSwgNzgsIDcxLCAKLSAgICA4NywgNjUsIDY1LCA3NSwgMTI4LCA4NywgNzMsIDY1LCA3OCwgNzEsIDEyOCwgODcsIDcyLCA3OSwgNzYsIDE5NywgODcsIAotICAgIDcyLCA3MywgODQsIDY5LCA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDY5LCAxOTYsIDg3LCA3MiwgNzMsIDg0LCAKLSAgICA2OSwgMTI4LCA4NywgNzIsIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDg3LCA3MiwgNjksIDY5LCA3NiwgNjcsIDcyLCA2NSwgNzMsIAotICAgIDIxMCwgODcsIDcyLCA2OSwgNjksIDc2LCAxMjgsIDg3LCA3MiwgNjksIDY5LCAyMDQsIDg3LCA3MiwgNjksIDY1LCA4NCwgCi0gICAgMTI4LCA4NywgNzIsIDY1LCA3NiwgNjksIDEyOCwgODcsIDcxLCAxMjgsIDg3LCA2OSwgODgsIDEyOCwgODcsIDY5LCA4NSwgCi0gICAgODgsIDEyOCwgODcsIDY5LCA4MywgODQsIDY5LCA4MiwgMjA2LCA4NywgNjksIDgzLCA4NCwgMTI4LCA4NywgNjksIDgzLCAKLSAgICAyMTIsIDg3LCA2OSwgODAsIDEyOCwgODcsIDY5LCA3OSwgMTI4LCA4NywgNjksIDc4LCAxMjgsIDg3LCA2OSwgNzYsIDc2LCAKLSAgICAxMjgsIDg3LCA2OSwgNzMsIDcxLCA3MiwgMjEyLCA4NywgNjksIDY5LCA3OCwgMTI4LCA4NywgNjksIDY4LCA3MSwgNjksIAotICAgIDQ1LCA4NCwgNjUsIDczLCA3NiwgNjksIDE5NiwgODcsIDY5LCA2OCwgNjgsIDczLCA3OCwgNzEsIDEyOCwgODcsIDY5LCA2NSwgCi0gICAgODIsIDIxNywgODcsIDY5LCA2NSwgODAsIDc5LCA3OCwgMTI4LCA4NywgNjcsIDEyOCwgODcsIDY2LCAxMjgsIDg3LCA2NSwgCi0gICAgODksIDEyOCwgODcsIDY1LCAyMTcsIDg3LCA2NSwgODgsIDczLCA3OCwgMTk5LCA4NywgNjUsIDg4LCAxMjgsIDg3LCA2NSwgCi0gICAgODcsIDQ1LCA2NSwgODksIDczLCA3OCwgNDUsIDgyLCA2OSwgODMsIDcyLCAxMjgsIDg3LCA2NSwgODcsIDEyOCwgODcsIDY1LCAKLSAgICAyMTUsIDg3LCA2NSwgODYsIDIxNywgODcsIDY1LCA4NiwgNzMsIDc4LCAxOTksIDg3LCA2NSwgODYsIDY5LCA4MywgMTI4LCAKLSAgICA4NywgNjUsIDg2LCA2OSwgMTI4LCA4NywgNjUsIDg2LCAxOTcsIDg3LCA2NSwgODUsIDEyOCwgODcsIDY1LCA4NCwgODQsIAotICAgIDc5LCAxMjgsIDg3LCA2NSwgODQsIDY5LCA4MiwgNzcsIDY5LCA3NiwgNzksIDc4LCAxMjgsIDg3LCA2NSwgODQsIDY5LCA4MiwgCi0gICAgMTI4LCA4NywgNjUsIDg0LCA2OSwgMjEwLCA4NywgNjUsIDg0LCA2NywgNzIsIDEyOCwgODcsIDY1LCA4NCwgMTI4LCA4NywgCi0gICAgNjUsIDgzLCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjUsIDgzLCA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAxMjgsIDg3LCAKLSAgICA2NSwgODMsIDc2LCA2NSwgMTI4LCA4NywgNjUsIDgzLCA3NiwgMTkzLCA4NywgNjUsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzcsIAotICAgIDEyOCwgODcsIDY1LCA4MywgNjUsIDc2LCA3NiwgNjUsIDIwNSwgODcsIDY1LCA4MiwgNzgsIDczLCA3OCwgMTk5LCA4NywgCi0gICAgNjUsIDgwLCAxMjgsIDg3LCA2NSwgNzgsIDczLCA3OCwgMTk5LCA4NywgNjUsIDc4LCA3MSwgNzUsIDg1LCA3OSwgODEsIAotICAgIDEyOCwgODcsIDY1LCA3OCwgNjgsIDY5LCA4MiwgNjksIDgyLCAxMjgsIDg3LCA2NSwgNzgsIDEyOCwgODcsIDY1LCA3NiwgCi0gICAgNzYsIDEyOCwgODcsIDY1LCA3NiwgNzUsIDEyOCwgODcsIDY1LCA3NiwgMjAzLCA4NywgNjUsIDczLCA4NCwgNzMsIDc4LCAKLSAgICA3MSwgMTI4LCA4NywgNjUsIDczLCAxMjgsIDg3LCA2NSwgNjksIDc4LCAxMjgsIDg3LCA2NSwgNjksIDEyOCwgODcsIDY1LCAKLSAgICA2NSwgODYsIDg1LCAxMjgsIDg3LCA0OCwgNTAsIDUzLCAxMjgsIDg3LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA4NywgNDgsIAotICAgIDUwLCA1MiwgMTI4LCA4NywgNDgsIDUwLCA1MSwgMTI4LCA4NywgNDgsIDUwLCA1MCwgMTI4LCA4NywgNDgsIDUwLCA0OSwgCi0gICAgMTI4LCA4NywgNDgsIDUwLCA0OCwgMTI4LCA4NywgNDgsIDQ5LCA1NywgMTI4LCA4NywgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgCi0gICAgODcsIDQ4LCA0OSwgNTYsIDEyOCwgODcsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDU1LCAxMjgsIDg3LCAKLSAgICA0OCwgNDksIDU0LCAxMjgsIDg3LCA0OCwgNDksIDUzLCAxMjgsIDg3LCA0OCwgNDksIDUyLCA2NSwgMTI4LCA4NywgNDgsIAotICAgIDQ5LCA1MiwgMTI4LCA4NywgNDgsIDQ5LCA1MSwgMTI4LCA4NywgNDgsIDQ5LCA1MCwgMTI4LCA4NywgNDgsIDQ5LCA0OSwgCi0gICAgMTI4LCA4NywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNDgsIDEyOCwgODcsIDQ4LCA0OCwgNTcsIDY1LCAKLSAgICAxMjgsIDg3LCA0OCwgNDgsIDU3LCAxMjgsIDg3LCA0OCwgNDgsIDU2LCAxMjgsIDg3LCA0OCwgNDgsIDU1LCAxMjgsIDg3LCAKLSAgICA0OCwgNDgsIDU0LCAxMjgsIDg3LCA0OCwgNDgsIDUzLCAxMjgsIDg3LCA0OCwgNDgsIDUyLCAxMjgsIDg3LCA0OCwgNDgsIAotICAgIDUxLCA2NSwgMTI4LCA4NywgNDgsIDQ4LCA1MSwgMTI4LCA4NywgNDgsIDQ4LCA1MCwgMTI4LCA4NywgNDgsIDQ4LCA0OSwgCi0gICAgMTI4LCA4NiwgOTAsIDc3LCA2OSwgODQsIDEyOCwgODYsIDg5LCA4OCwgMTI4LCA4NiwgODksIDg0LCAxMjgsIDg2LCA4OSwgCi0gICAgODIsIDg4LCAxMjgsIDg2LCA4OSwgODIsIDEyOCwgODYsIDg5LCA4MCwgMTI4LCA4NiwgODksIDEyOCwgODYsIDg3LCA2NSwgCi0gICAgMTI4LCA4NiwgODUsIDg4LCAxMjgsIDg2LCA4NSwgODQsIDEyOCwgODYsIDg1LCA4MiwgODgsIDEyOCwgODYsIDg1LCA4MiwgCi0gICAgMTI4LCA4NiwgODUsIDgwLCAxMjgsIDg2LCA4NSwgNzYsIDcxLCA2NSwgMjEwLCA4NiwgODUsIDY5LCA4MSwgMTI4LCA4NiwgCi0gICAgODMsIDEyOCwgODYsIDgyLCA2NSwgNjcsIDcyLCA4OSwgMTI4LCA4NiwgNzksIDg4LCAxMjgsIDg2LCA3OSwgODcsIDY5LCAKLSAgICA3NiwgNDUsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIDIxMCwgODYsIDc5LCA4NywgMTI4LCA4NiwgNzksIDg1LCAxMjgsIAotICAgIDg2LCA3OSwgODQsIDEyOCwgODYsIDc5LCA4MCwgMTI4LCA4NiwgNzksIDc5LCAxMjgsIDg2LCA3OSwgNzcsIDEyOCwgODYsIAotICAgIDc5LCA3NiwgODUsIDc3LCAxOTcsIDg2LCA3OSwgNzYsIDg0LCA2NSwgNzEsIDE5NywgODYsIDc5LCA3NiwgNjcsIDY1LCA3OCwgCi0gICAgNzksIDEyOCwgODYsIDc5LCA3MywgMTk2LCA4NiwgNzksIDczLCA2NywgNzMsIDc4LCA3MSwgMTI4LCA4NiwgNzksIDczLCAKLSAgICA2NywgNjksIDc2LCA2OSwgODMsIDIxMSwgODYsIDc5LCA3MywgNjcsIDY5LCAxOTYsIDg2LCA3OSwgNjcsIDY1LCA3NiwgNzMsIAotICAgIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NiwgNzksIDY3LCA2NSwgMjA0LCA4NiwgNzksIDEyOCwgODYsIDczLCA4OCwgCi0gICAgMTI4LCA4NiwgNzMsIDg0LCA4MiwgNzMsIDc5LCA3NiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDgyLCA3MywgNzksIDc2LCAKLSAgICAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgMTI4LCA4NiwgNzMsIAotICAgIDg0LCAxMjgsIDg2LCA3MywgODMsIDczLCA3MSwgNzksIDg0LCA3MiwgNzMsIDE5NSwgODYsIDczLCA4MywgNjUsIDgyLCA3MSwgCi0gICAgNjUsIDg5LCA2NSwgMTI4LCA4NiwgNzMsIDgzLCA2NSwgODIsIDcxLCA2NSwgMTI4LCA4NiwgNzMsIDgzLCA2NSwgODIsIDcxLCAKLSAgICAxOTMsIDg2LCA3MywgODIsIDczLCA2NSwgNzcsIDEyOCwgODYsIDczLCA4MiwgNzEsIDc5LCAxMjgsIDg2LCA3MywgODIsIAotICAgIDcxLCA2NSwgMTI4LCA4NiwgNzMsIDgyLCA2NSwgNzcsIDY1LCAxMjgsIDg2LCA3MywgODAsIDEyOCwgODYsIDczLCA3OSwgCi0gICAgNzYsIDczLCA3OCwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgNDUsIDUxLCAxMjgsIDg2LCA3MywgNzgsIDY5LCAKLSAgICA3MSwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDEyOCwgODYsIDczLCA3OCwgNjksIAotICAgIDcxLCA2NSwgMjEwLCA4NiwgNzMsIDc4LCA2OSwgMTI4LCA4NiwgNzMsIDc4LCAxMjgsIDg2LCA3MywgNzYsIDc2LCA2NSwgCi0gICAgNzEsIDY5LCAxMjgsIDg2LCA3MywgNjksIDg4LCAxMjgsIDg2LCA3MywgNjksIDg3LCA3MywgNzgsIDE5OSwgODYsIDczLCAKLSAgICA2OSwgODcsIDY4LCA2NSwgODQsIDE5MywgODYsIDczLCA2OSwgODQsIDEyOCwgODYsIDczLCA2OSwgODAsIDEyOCwgODYsIAotICAgIDczLCA2OSwgMTI4LCA4NiwgNzMsIDY4LCA2OSwgNzksIDY3LCA2NSwgODMsIDgzLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4NiwgCisgICAgMjAwLCA2NiwgNjUsIDc2LCA3MywgNzgsIDY5LCA4MywgMTk3LCA3MiwgNzksIDc5LCA3NSwgMTI4LCAyMTMsIDg0LCA4NywgCisgICAgNzksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk2LCAKKyAgICA2NSwgNzYsIDY3LCA3MiwgNjksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDczLCAxOTUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDc5LCAxMjgsIDY1LCA3NiwgNjksIDE5OCwgODQsIDg3LCAyMDcsIAorICAgIDcyLCA2OSwgNjUsIDg2LCAyMTcsIDY3LCA3OSwgNzgsIDgzLCA3OSwgNzgsIDY1LCA3OCwgMjEyLCA3OSwgODYsIDY5LCAKKyAgICAyMTAsIDY2LCA4MiwgNjUsIDcyLCA3NywgMjAxLCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODUsIDIwOCwgNzYsIDc5LCAKKyAgICAyMTUsIDcyLCA2NSwgMjAwLCA3OSwgNzgsIDE5NywgNjgsIDc5LCA4NywgMjA2LCA3MiwgNzMsIDcxLCAyMDAsIDcwLCA4NSwgCisgICAgNzYsIDc2LCA4NywgNzMsIDY4LCA4NCwgMjAwLCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgMTI4LCA2OSwgODEsIDg1LCAKKyAgICA2NSwgMjA0LCA4NCwgNjUsIDE5OSwgNjYsIDY1LCA4MiwgMTI4LCA2OCwgNzksIDc3LCA3MywgNzgsIDIwNywgNzgsIDg1LCAKKyAgICA3NywgNjksIDgyLCA3MywgMTk1LCA3MCwgODIsIDY1LCA3NSwgODQsIDg1LCAyMTAsIDg0LCA3MiwgODIsIDY5LCAxOTcsIAorICAgIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCA2OSwgMjEwLCA3NywgNjUsIDc2LCA2NSwgODksIDY1LCA3NiwgNjUsIDIwNSwgCisgICAgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk1LCA4NCwgNzksIDc4LCAxOTcsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCAKKyAgICA4MywgODQsIDgyLCA4NSwgNjcsIDIwMywgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDcyLCA3MywgODIsIAorICAgIDY1LCA3MSwgNjUsIDc4LCAxOTMsIDY1LCA2NywgODUsIDg0LCA2OSwgMTI4LCA3NCwgODUsIDc4LCA3MSwgODMsIDY5LCA3OSwgCisgICAgNzgsIDE5OSwgNzEsIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDg0LCA3MywgMTk1LCA2NiwgNjksIDc4LCA3MSwgNjUsIDc2LCAKKyAgICAyMDEsIDc3LCA2OSwgNjgsIDczLCA2NSwgMjA0LCA4NCwgNjksIDc2LCA4NSwgNzEsIDIxMywgODYsIDc5LCA2NywgNjUsIAorICAgIDc2LCA3MywgMTk1LCA2NSwgODIsIDc3LCA2OSwgNzgsIDczLCA2NSwgMjA2LCA3NCwgNjksIDY5LCAyMDUsIDc4LCA2OSwgCisgICAgNzEsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NCwgNjUsIDg2LCAKKyAgICA2NSwgNzgsIDY5LCA4MywgMTk3LCA3OSwgODIsIDczLCA4OSwgMTkzLCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODcsIAorICAgIDY5LCA4MywgODQsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDcyLCA2NSwgMTI4LCA3MiwgCisgICAgNjUsIDc2LCAxOTgsIDc3LCA2NSwgODIsIDIwMywgNzUsIDY1LCA3OCwgNzgsIDY1LCA2OCwgMTkzLCA3OCwgNjksIDIxNSwgCisgICAgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTkzLCA4NCwgNzIsIDY1LCAyMDEsIDY3LCA3MiwgNjksIDgyLCA3OSwgNzUsIDY5LCAKKyAgICAxOTcsIDY4LCA3OSwgODQsIDIxMSwgNzEsIDg1LCA3NCwgNjUsIDgyLCA2NSwgODQsIDIwMSwgNjcsIDcyLCA2NSwgMjA1LCAKKyAgICA3NiwgODUsIDE5NywgODMsIDcyLCA2NSwgODIsIDY1LCA2OCwgMTkzLCA4MywgNzMsIDc4LCA3MiwgNjUsIDc2LCAxOTMsIAorICAgIDc1LCA2NSwgMTI4LCA4MiwgODUsIDc4LCA3MywgMTk1LCA4MywgNjUsIDg1LCA4MiwgNjUsIDgzLCA3MiwgODQsIDgyLCAKKyAgICAxOTMsIDg0LCA2OSwgODQsIDgyLCA2NSwgNzEsIDgyLCA2NSwgMjA1LCA2OCwgNjksIDgzLCA2OSwgODIsIDY5LCAyMTIsIAorICAgIDg0LCA3MywgNzYsIDY4LCA2OSwgMTI4LCA3MSwgODUsIDgyLCA3NywgODUsIDc1LCA3MiwgMjAxLCA3NywgNjUsIDEyOCwgCisgICAgNzcsIDY1LCA4OSwgNjksIDIwMywgNzcsIDY5LCA2OSwgODQsIDY5LCAyMDEsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDgzLCA4OSwgODIsIDczLCA2NSwgMTk1LCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA4MCwgNjUsIDEyOCwgODksIDY1LCAKKyAgICAxMjgsIDc2LCA3MywgNzEsIDcyLCAyMTIsIDgzLCA3MywgODgsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc2LCAKKyAgICA2OSwgODAsIDY3LCA3MiwgMTkzLCA3OCwgNjUsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDc2LCA3OSwgNzgsIAorICAgIDE5OSwgNzgsIDczLCA3OCwgNjksIDEyOCwgODQsIDg1LCA4MiwgNzUsIDczLCAxOTUsIDcyLCA2NSwgNzcsIDkwLCAxOTMsIAorICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDIwNCwgNzksIDgwLCA2OSwgMjA2LCA4MiwgNjUsIDEyOCwgCisgICAgODMsIDY1LCAxMjgsIDgzLCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA4NiwgNzMsIDY5LCAyMTIsIDc2LCAKKyAgICA2NSwgMjA3LCA5MCwgOTAsIDg5LCA4OCwgMTI4LCA5MCwgOTAsIDg5LCA4NCwgMTI4LCA5MCwgOTAsIDg5LCA4MiwgODgsIAorICAgIDEyOCwgOTAsIDkwLCA4OSwgODIsIDEyOCwgOTAsIDkwLCA4OSwgODAsIDEyOCwgOTAsIDkwLCA4OSwgNjUsIDEyOCwgOTAsIAorICAgIDkwLCA4OSwgMTI4LCA5MCwgOTAsIDg1LCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgODgsIDEyOCwgOTAsIDkwLCA4NSwgCisgICAgODIsIDEyOCwgOTAsIDkwLCA4NSwgODAsIDEyOCwgOTAsIDkwLCA4NSwgMTI4LCA5MCwgOTAsIDgzLCA4OSwgNjUsIDEyOCwgCisgICAgOTAsIDkwLCA4MywgNjUsIDEyOCwgOTAsIDkwLCA3OSwgODgsIDEyOCwgOTAsIDkwLCA3OSwgODAsIDEyOCwgOTAsIDkwLCAKKyAgICA3OSwgMTI4LCA5MCwgOTAsIDczLCA4OCwgMTI4LCA5MCwgOTAsIDczLCA4NCwgMTI4LCA5MCwgOTAsIDczLCA4MCwgMTI4LCAKKyAgICA5MCwgOTAsIDczLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA3MywgNjksIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDY5LCA4MCwgCisgICAgMTI4LCA5MCwgOTAsIDczLCA2OSwgMTI4LCA5MCwgOTAsIDczLCAxMjgsIDkwLCA5MCwgNjksIDg4LCAxMjgsIDkwLCA5MCwgCisgICAgNjksIDgwLCAxMjgsIDkwLCA5MCwgNjksIDY5LCAxMjgsIDkwLCA5MCwgNjksIDEyOCwgOTAsIDkwLCA2NSwgODgsIDEyOCwgCisgICAgOTAsIDkwLCA2NSwgODQsIDEyOCwgOTAsIDkwLCA2NSwgODAsIDEyOCwgOTAsIDkwLCA2NSwgNjUsIDEyOCwgOTAsIDkwLCAKKyAgICA2NSwgMTI4LCA5MCwgODksIDcxLCA3OSwgODMsIDEyOCwgOTAsIDg3LCA4MywgODAsIDEyOCwgOTAsIDg3LCA3OCwgNzQsIAorICAgIDEyOCwgOTAsIDg3LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc0LCAxMjgsIDkwLCA4NywgNjUsIDgyLCA2NSwgCisgICAgNzUsIDY1LCA4OSwgMTI4LCA5MCwgODcsIDY1LCAxMjgsIDkwLCA4NSwgODQsIDEyOCwgOTAsIDg1LCA3OSwgODgsIDEyOCwgCisgICAgOTAsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDg1LCA3OSwgMTI4LCA5MCwgODUsIDc3LCAxMjgsIDkwLCA4NSwgNjYsIDg1LCAKKyAgICA4MiwgMTI4LCA5MCwgODUsIDUzLCAxMjgsIDkwLCA4NSwgMTgxLCA5MCwgODMsIDcyLCA2NSwgMTI4LCA5MCwgODIsIDY1LCAKKyAgICAxMjgsIDkwLCA4MSwgNjUsIDgwLCA3MiwgMTkzLCA5MCwgNzksIDg0LCAxMjgsIDkwLCA3OSwgNzksIDEyOCwgOTAsIDc5LCAKKyAgICA2NSwgMTI4LCA5MCwgNzYsIDY1LCA3NywgMTkzLCA5MCwgNzYsIDY1LCAxMjgsIDkwLCA3NiwgMTkzLCA5MCwgNzQsIDY5LCAKKyAgICAxMjgsIDkwLCA3MywgOTAsIDUwLCAxMjgsIDkwLCA3MywgODEsIDY1LCA2NSwgMTI4LCA5MCwgNzMsIDc4LCA3OSwgODIsIAorICAgIDEyOCwgOTAsIDczLCA3NiwgNjgsIDY5LCAxMjgsIDkwLCA3MywgNzEsIDkwLCA2NSwgMTk5LCA5MCwgNzMsIDcxLCAxMjgsIAorICAgIDkwLCA3MywgNjgsIDE5MywgOTAsIDczLCA2NiwgMTI4LCA5MCwgNzMsIDE5NCwgOTAsIDczLCA1MSwgMTI4LCA5MCwgMjAxLCAKKyAgICA5MCwgNzIsIDg5LCA4OCwgMTI4LCA5MCwgNzIsIDg5LCA4NCwgMTI4LCA5MCwgNzIsIDg5LCA4MiwgODgsIDEyOCwgOTAsIAorICAgIDcyLCA4OSwgODIsIDEyOCwgOTAsIDcyLCA4OSwgODAsIDEyOCwgOTAsIDcyLCA4OSwgMTI4LCA5MCwgNzIsIDg3LCA2OSwgCisgICAgMTI4LCA5MCwgNzIsIDg3LCA2NSwgMTI4LCA5MCwgNzIsIDg1LCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4NCwgMTI4LCA5MCwgCisgICAgNzIsIDg1LCA4MiwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODIsIDEyOCwgOTAsIDcyLCA4NSwgODAsIDEyOCwgOTAsIDcyLCAKKyAgICA4NSwgNzksIDg4LCAxMjgsIDkwLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgMTI4LCA5MCwgNzIsIAorICAgIDg1LCAxMjgsIDkwLCA3MiwgNzksIDg4LCAxMjgsIDkwLCA3MiwgNzksIDg0LCAxMjgsIDkwLCA3MiwgNzksIDgwLCAxMjgsIAorICAgIDkwLCA3MiwgNzksIDc5LCAxMjgsIDkwLCA3MiwgNzksIDEyOCwgOTAsIDcyLCA3MywgODYsIDY5LCA4NCwgNjksIDEyOCwgCisgICAgOTAsIDcyLCA3MywgMTI4LCA5MCwgNzIsIDY5LCA4OCwgMTI4LCA5MCwgNzIsIDY5LCA4NCwgMTI4LCA5MCwgNzIsIDY5LCAKKyAgICA4MCwgMTI4LCA5MCwgNzIsIDY5LCA2OSwgMTI4LCA5MCwgNzIsIDY5LCAxMjgsIDkwLCA3MiwgMTk3LCA5MCwgNzIsIDY1LCAKKyAgICA4OCwgMTI4LCA5MCwgNzIsIDY1LCA4NCwgMTI4LCA5MCwgNzIsIDY1LCA4MiwgMTI4LCA5MCwgNzIsIDY1LCA4MCwgMTI4LCAKKyAgICA5MCwgNzIsIDY1LCA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgNjUsIDEyOCwgOTAsIDcyLCA2NSwgMTI4LCA5MCwgNzIsIAorICAgIDEyOCwgOTAsIDY5LCA4NCwgNjUsIDEyOCwgOTAsIDY5LCA4MiwgNzksIDEyOCwgOTAsIDY5LCA4MiwgMjA3LCA5MCwgNjksIAorICAgIDc4LCAxMjgsIDkwLCA2OSwgNzcsIDc2LCA4OSwgNjUsIDEyOCwgOTAsIDY5LCA3NywgNzYsIDc0LCA2NSwgMTI4LCA5MCwgCisgICAgNjksIDUwLCAxMjgsIDkwLCAxOTcsIDkwLCA2NSwgODksIDc4LCAxMjgsIDkwLCA2NSwgODksIDczLCA3OCwgMTI4LCA5MCwgCisgICAgNjUsIDg5LCA3MywgMjA2LCA5MCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgOTAsIDY1LCA4NCwgNjUsIAorICAgIDEyOCwgOTAsIDY1LCA4MiwgODEsIDY1LCAxMjgsIDkwLCA2NSwgODEsIDY5LCAxOTgsIDkwLCA2NSwgNzcsIDg4LCAxMjgsIAorICAgIDkwLCA2NSwgMjA0LCA5MCwgNjUsIDczLCA3OCwgMTI4LCA5MCwgNjUsIDczLCAyMDYsIDkwLCA2NSwgNzMsIDEyOCwgOTAsIAorICAgIDY1LCA3MiwgMTI4LCA5MCwgNjUsIDIwMCwgOTAsIDY1LCA3MSwgMTI4LCA5MCwgNjUsIDY5LCA3MCwgMTI4LCA5MCwgNDgsIAorICAgIDQ5LCA1NCwgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcxLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MCwgMTI4LCA5MCwgCisgICAgNDgsIDQ5LCA1NCwgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY4LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NywgMTI4LCAKKyAgICA5MCwgNDgsIDQ5LCA1NCwgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDU0LCAxMjgsIAorICAgIDkwLCA0OCwgNDksIDUzLCA3MywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcxLCAKKyAgICAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIAorICAgIDY4LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgCisgICAgNTMsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDUzLCAxMjgsIDkwLCA0OCwgNDksIDUyLCAxMjgsIDkwLCA0OCwgNDksIDUxLCAKKyAgICAxMjgsIDkwLCA0OCwgNDksIDUwLCAxMjgsIDkwLCA0OCwgNDksIDQ5LCAxMjgsIDkwLCA0OCwgNDksIDQ4LCAxMjgsIDkwLCAKKyAgICA0OCwgNDgsIDU3LCAxMjgsIDkwLCA0OCwgNDgsIDU2LCAxMjgsIDkwLCA0OCwgNDgsIDU1LCAxMjgsIDkwLCA0OCwgNDgsIAorICAgIDU0LCAxMjgsIDkwLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MywgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgCisgICAgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCAKKyAgICA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjgsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIAorICAgIDY3LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgCisgICAgNTAsIDEyOCwgOTAsIDQ4LCA0OCwgNDksIDEyOCwgOTAsIDEyOCwgMjE4LCA4OSwgODksIDg4LCAxMjgsIDg5LCA4OSwgODQsIAorICAgIDEyOCwgODksIDg5LCA4MiwgODgsIDEyOCwgODksIDg5LCA4MiwgMTI4LCA4OSwgODksIDgwLCAxMjgsIDg5LCA4OSwgNjksIAorICAgIDEyOCwgODksIDg5LCA2NSwgNjUsIDEyOCwgODksIDg5LCA2NSwgMTI4LCA4OSwgODksIDEyOCwgODksIDg3LCA3OSwgNzksIAorICAgIDEyOCwgODksIDg3LCA3OSwgMTI4LCA4OSwgODcsIDczLCA3MywgMTI4LCA4OSwgODcsIDczLCAxMjgsIDg5LCA4NywgNjksIAorICAgIDEyOCwgODksIDg3LCA2NSwgNjUsIDEyOCwgODksIDg3LCA2NSwgMTI4LCA4OSwgODYsIDEyOCwgODksIDg1LCA4OCwgMTI4LCAKKyAgICA4OSwgODUsIDg3LCA3OSwgODEsIDEyOCwgODksIDg1LCA4NSwgNzUsIDY1LCA3NiwgNjksIDY1LCA4MCwgNzMsIDc4LCA4NCwgCisgICAgODUsIDEyOCwgODksIDg1LCA4NSwgMTI4LCA4OSwgODUsIDg0LCAxMjgsIDg5LCA4NSwgODMsIDEyOCwgODksIDg1LCAyMTEsIAorICAgIDg5LCA4NSwgODIsIDg4LCAxMjgsIDg5LCA4NSwgODIsIDEyOCwgODksIDg1LCA4MSwgMTI4LCA4OSwgODUsIDIwOSwgODksIAorICAgIDg1LCA4MCwgMTI4LCA4OSwgODUsIDc5LCA4OCwgMTI4LCA4OSwgODUsIDc5LCA4NCwgMTI4LCA4OSwgODUsIDc5LCA4MCwgCisgICAgMTI4LCA4OSwgODUsIDc5LCA3NywgMTI4LCA4OSwgODUsIDc5LCAxMjgsIDg5LCA4NSwgNzgsIDEyOCwgODksIDg1LCA3NywgCisgICAgMTI4LCA4OSwgODUsIDY5LCA4MSwgMTI4LCA4OSwgODUsIDY5LCAxMjgsIDg5LCA4NSwgNjgsIDcyLCAxMjgsIDg5LCA4NSwgCisgICAgNjgsIDIwMCwgODksIDg1LCA2NSwgNzgsIDEyOCwgODksIDg1LCA2NSwgNjksIDc4LCAxMjgsIDg5LCA4NSwgNDUsIDg5LCAKKyAgICA2OSwgNzksIDEyOCwgODksIDg1LCA0NSwgODksIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDg1LCAxMjgsIDg5LCA4NSwgNDUsIAorICAgIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDczLCAxMjgsIDg5LCA4NSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA2OSwgCisgICAgMTI4LCA4OSwgODUsIDQ1LCA2NSwgNjksIDEyOCwgODksIDg1LCA0NSwgNjUsIDEyOCwgODksIDg1LCAxMjgsIDg5LCAyMTMsIAorICAgIDg5LCA4MCwgODMsIDczLCA3NiwgNzMsIDEyOCwgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzMsIDEyOCwgODksIDgwLCA3OSwgCisgICAgNzUsIDgyLCA3MywgODMsIDczLCA4MywgMTI4LCA4OSwgODAsIDc5LCA3NSwgODIsIDczLCA4MywgNzMsIDIxMSwgODksIDgwLCAKKyAgICA3OSwgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgODksIDc5LCA4OSwgMTI4LCA4OSwgNzksIAorICAgIDg4LCAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCA3NiwgNzgsIDY5LCA4MywgODMsIDEyOCwgODksIDc5LCA4NSwgCisgICAgODQsIDcyLCA3MCwgODUsIDIwNCwgODksIDc5LCA4NCwgMTI4LCA4OSwgNzksIDgyLCA3MywgMTI4LCA4OSwgNzksIDgxLCAKKyAgICAxMjgsIDg5LCA3OSwgMjA5LCA4OSwgNzksIDgwLCAxMjgsIDg5LCA3OSwgNzksIDEyOCwgODksIDc5LCA3NywgNzksIDEyOCwgCisgICAgODksIDc5LCA3MSwgNzIsIDEyOCwgODksIDc5LCA2OCwgNzIsIDEyOCwgODksIDc5LCA2OCwgMTI4LCA4OSwgNzksIDE5NiwgCisgICAgODksIDc5LCA2NSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgNjksIAorICAgIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCA3OSwgNDUsIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDczLCAxMjgsIAorICAgIDg5LCA3OSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA2NSwgNjksIDEyOCwgODksIDc5LCA0NSwgNjUsIDEyOCwgCisgICAgODksIDc5LCAxMjgsIDg5LCAyMDcsIDg5LCA3MywgOTAsIDY5LCA4NCwgMTI4LCA4OSwgNzMsIDg4LCAxMjgsIDg5LCA3MywgCisgICAgODcsIDc4LCAxMjgsIDg5LCA3MywgODQsIDEyOCwgODksIDczLCA4MCwgMTI4LCA4OSwgNzMsIDc4LCA3MSwgMTI4LCA4OSwgCisgICAgNzMsIDczLCAxMjgsIDg5LCA3MywgMTk5LCA4OSwgNzMsIDY5LCA4OCwgMTI4LCA4OSwgNzMsIDY5LCA4NCwgMTI4LCA4OSwgCisgICAgNzMsIDY5LCA4MCwgMTI4LCA4OSwgNzMsIDY5LCA2OSwgMTI4LCA4OSwgNzMsIDY5LCAxMjgsIDg5LCA3MywgNjgsIDY4LCAKKyAgICA3MywgODMsIDIwMCwgODksIDczLCA0NSwgODUsIDEyOCwgODksIDczLCAxMjgsIDg5LCA3MCwgNjksIDgzLCA3MywgODMsIAorICAgIDEyOCwgODksIDcwLCA2OSwgODMsIDczLCAyMTEsIDg5LCA3MCwgNjksIDIwNiwgODksIDY5LCA4OSwgMTI4LCA4OSwgNjksIAorICAgIDg3LCAxMjgsIDg5LCA2OSwgODUsIDg4LCAxMjgsIDg5LCA2OSwgODUsIDgyLCA2NSwgNjksIDEyOCwgODksIDY5LCA4NSwgCisgICAgODEsIDEyOCwgODksIDY5LCA4NSwgNzcsIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4OSwgNjksIDg1LCAKKyAgICA2NSwgNjksIDEyOCwgODksIDY5LCA4NCwgNzMsIDg2LCAxMjgsIDg5LCA2OSwgODMsIDg0LCA4NSwgMTI4LCA4OSwgNjksIAorICAgIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCAKKyAgICA3OCwgNzEsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgCisgICAgNzEsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzIsIAorICAgIDczLCA2OSwgODUsIDcyLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4OSwgNjksIDgyLCA4NSwgCisgICAgMTI4LCA4OSwgNjksIDgyLCAyMTMsIDg5LCA2OSwgODIsIDczLCAxMjgsIDg5LCA2OSwgODIsIDY1LCAyMDAsIDg5LCA2OSwgCisgICAgODIsIDEyOCwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDg5LCA2OSwgNzksIDQ1LCAKKyAgICA4OSwgNjUsIDEyOCwgODksIDY5LCA3OSwgNDUsIDg1LCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA3OSwgMTI4LCA4OSwgNjksIAorICAgIDc4LCA3MywgODMsIDY5LCAyMDEsIDg5LCA2OSwgNzgsIDY1LCA4MCwgMTI4LCA4OSwgNjksIDc4LCAxMjgsIDg5LCA2OSwgCisgICAgMjA2LCA4OSwgNjksIDc2LCA3NiwgNzksIDg3LCAxMjgsIDg5LCA2OSwgNzYsIDc2LCA3OSwgMjE1LCA4OSwgNjksIDcyLCAKKyAgICAxMjgsIDg5LCA2OSwgNjksIDEyOCwgODksIDY5LCA2NSwgMjEwLCA4OSwgNjksIDY1LCAxMjgsIDg5LCA2NSwgOTAsIDkwLCAKKyAgICAxMjgsIDg5LCA2NSwgOTAsIDcyLCAxMjgsIDg5LCA2NSwgOTAsIDEyOCwgODksIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgODksIDY1LCA4OSwgMTI4LCA4OSwgNjUsIDg3LCAxMjgsIDg5LCA2NSwgODYsIDEyOCwgODksIDY1LCA4NSwgMTI4LCAKKyAgICA4OSwgNjUsIDg0LCA4NCwgMTI4LCA4OSwgNjUsIDg0LCA3MywgMTI4LCA4OSwgNjUsIDg0LCA3MiwgMTI4LCA4OSwgNjUsIAorICAgIDg0LCAxMjgsIDg5LCA2NSwgODMsIDgzLCAxMjgsIDg5LCA2NSwgODMsIDcyLCAxMjgsIDg5LCA2NSwgODMsIDEyOCwgODksIAorICAgIDY1LCA4MiwgODIsIDEyOCwgODksIDY1LCA4MiwgMTI4LCA4OSwgNjUsIDIxMCwgODksIDY1LCA4MSwgMTI4LCA4OSwgNjUsIAorICAgIDgwLCAxMjgsIDg5LCA2NSwgNzgsIDgzLCA2NSwgODksIDY1LCAxMjgsIDg5LCA2NSwgNzgsIDcxLCAxMjgsIDg5LCA2NSwgCisgICAgNzgsIDE5OSwgODksIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCA3OSwgNzUsIDEyOCwgODksIDY1LCA3NywgNjUsIDc1LCAKKyAgICA3NSwgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIDEyOCwgODksIDY1LCA3NiwgMTI4LCA4OSwgNjUsIDc1LCA3MiwgNzIsIAorICAgIDEyOCwgODksIDY1LCA3NSwgNzIsIDEyOCwgODksIDY1LCA3NSwgNjUsIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDc1LCAxMjgsIAorICAgIDg5LCA2NSwgNzQsIDg1LCA4MiwgODYsIDY5LCA2OCwgNzMsIDE5NSwgODksIDY1LCA3NCwgMTI4LCA4OSwgNjUsIDczLCAKKyAgICAxMjgsIDg5LCA2NSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzIsIDEyOCwgODksIDY1LCA3MSwgNzgsIDEyOCwgODksIDY1LCAKKyAgICA3MSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDEyOCwgODksIDY1LCA3MCwgMjEzLCAKKyAgICA4OSwgNjUsIDcwLCAxMjgsIDg5LCA2NSwgNjksIDc3LCA3NywgNjUsIDY5LCAxMjgsIDg5LCA2NSwgNjgsIDcyLCAxMjgsIAorICAgIDg5LCA2NSwgNjgsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCA2OCwgMTI4LCA4OSwgNjUsIDY4LCAxMjgsIDg5LCA2NSwgCisgICAgNjcsIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDEyOCwgODksIDY1LCA2NSwgODIsIDg1LCAKKyAgICAxMjgsIDg5LCA2NSwgNjUsIDczLCAxMjgsIDg5LCA2NSwgNjUsIDY4LCA3OSwgMTI4LCA4OSwgNjUsIDQ1LCA4OSwgNzksIAorICAgIDEyOCwgODksIDY1LCA0NSwgODUsIDEyOCwgODksIDY1LCA0NSwgNzksIDEyOCwgODksIDQ4LCA0OCwgNTYsIDEyOCwgODksIAorICAgIDQ4LCA0OCwgNTUsIDEyOCwgODksIDQ4LCA0OCwgNTQsIDEyOCwgODksIDQ4LCA0OCwgNTMsIDEyOCwgODksIDQ4LCA0OCwgCisgICAgNTIsIDEyOCwgODksIDQ4LCA0OCwgNTEsIDEyOCwgODksIDQ4LCA0OCwgNTAsIDEyOCwgODksIDQ4LCA0OCwgNDksIDY1LCAKKyAgICAxMjgsIDg5LCA0OCwgNDgsIDQ5LCAxMjgsIDg5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4OCwgODksIDg4LCAxMjgsIDg4LCAKKyAgICA4OSwgODUsIDEyOCwgODgsIDg5LCA4NCwgMTI4LCA4OCwgODksIDgyLCA4OCwgMTI4LCA4OCwgODksIDgyLCAxMjgsIDg4LCAKKyAgICA4OSwgODAsIDEyOCwgODgsIDg5LCA3OSwgMTI4LCA4OCwgODksIDczLCAxMjgsIDg4LCA4OSwgNjksIDY5LCAxMjgsIDg4LCAKKyAgICA4OSwgNjksIDEyOCwgODgsIDg5LCA2NSwgNjUsIDEyOCwgODgsIDg5LCA2NSwgMTI4LCA4OCwgODksIDEyOCwgODgsIDg3LCAKKyAgICA3MywgMTI4LCA4OCwgODcsIDY5LCA2OSwgMTI4LCA4OCwgODcsIDY5LCAxMjgsIDg4LCA4NywgNjUsIDY1LCAxMjgsIDg4LCAKKyAgICA4NywgNjUsIDEyOCwgODgsIDg2LCA2OSwgMTI4LCA4OCwgODYsIDY1LCAxMjgsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDg4LCAKKyAgICA4NSwgNzksIDEyOCwgODgsIDg1LCAxMjgsIDg4LCA4MywgNzIsIDY1LCA2NSwgODksIDY1LCA4NCwgNzIsIDczLCA4OSwgNjUsIAorICAgIDEyOCwgODgsIDc5LCA4OCwgMTI4LCA4OCwgNzksIDg0LCAxMjgsIDg4LCA3OSwgODIsIDEyOCwgODgsIDc5LCA4MCwgMTI4LCAKKyAgICA4OCwgNzksIDY1LCAxMjgsIDg4LCA3OSwgMTI4LCA4OCwgNzMsIDg4LCAxMjgsIDg4LCA3MywgODQsIDEyOCwgODgsIDczLCAKKyAgICA4MiwgNzksIDIwNiwgODgsIDczLCA4MCwgMTI4LCA4OCwgNzMsIDY5LCA4OCwgMTI4LCA4OCwgNzMsIDY5LCA4NCwgMTI4LCAKKyAgICA4OCwgNzMsIDY5LCA4MCwgMTI4LCA4OCwgNzMsIDY5LCAxMjgsIDg4LCA3MywgMTI4LCA4OCwgNzEsIDEyOCwgODgsIDY5LCAKKyAgICA4MywgODQsIDY5LCAyMTEsIDg4LCA2OSwgNzIsIDEyOCwgODgsIDY5LCA2OSwgMTI4LCA4OCwgNjksIDEyOCwgODgsIDY1LCAKKyAgICA3OCwgMTI4LCA4OCwgNjUsIDY1LCAxMjgsIDg4LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgODgsIDQ4LCAKKyAgICA0OCwgNTYsIDEyOCwgODgsIDQ4LCA0OCwgNTUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIAorICAgIDU0LCAxMjgsIDg4LCA0OCwgNDgsIDUzLCAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NiwgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgCisgICAgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDEyOCwgODgsIDQ4LCA0OCwgNTEsIDEyOCwgODgsIDQ4LCA0OCwgNTAsIDEyOCwgCisgICAgODgsIDQ4LCA0OCwgNDksIDEyOCwgODcsIDkwLCAxMjgsIDg3LCA4OSwgNzgsIDc4LCAxMjgsIDg3LCA4OSwgNzgsIDIwNiwgCisgICAgODcsIDg2LCAxMjgsIDg3LCA4NSwgODAsIDEyOCwgODcsIDg1LCA3OSwgODgsIDEyOCwgODcsIDg1LCA3OSwgODAsIDEyOCwgCisgICAgODcsIDg1LCA3OSwgMTI4LCA4NywgODUsIDc4LCA3NCwgMjA3LCA4NywgODUsIDc4LCAxMjgsIDg3LCA4NSwgNzYsIDg1LCAKKyAgICAxMjgsIDg3LCA4NSwgNzYsIDIxMywgODcsIDg1LCA2OSwgMTI4LCA4NywgODUsIDY1LCA2OSwgODQsIDEyOCwgODcsIDg1LCAKKyAgICA2NSwgNjksIDc4LCAxMjgsIDg3LCA4NSwgMTI4LCA4NywgODIsIDIxNywgODcsIDgyLCA3OSwgNzgsIDcxLCAxMjgsIDg3LCAKKyAgICA4MiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgODcsIDgyLCA2OSwgNzgsIDY3LCA3MiwgMTI4LCA4NywgODIsIDY5LCA2NSwgODQsIAorICAgIDIwMCwgODcsIDgyLCA2NSwgODAsIDgwLCA2OSwgMTk2LCA4NywgODIsIDY1LCA4MCwgMTI4LCA4NywgNzksIDg4LCAxMjgsIAorICAgIDg3LCA3OSwgODIsIDgyLCA3MywgNjksIDE5NiwgODcsIDc5LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA4NywgNzksIDgyLCA3NSwgCisgICAgMTI4LCA4NywgNzksIDgyLCAyMDMsIDg3LCA3OSwgODIsIDY4LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgODcsIDc5LCAKKyAgICA4MiwgMTk2LCA4NywgNzksIDgwLCAxMjgsIDg3LCA3OSwgNzksIDc4LCAxMjgsIDg3LCA3OSwgNzksIDc2LCAxMjgsIDg3LCAKKyAgICA3OSwgNzksIDY4LCA4MywgNDUsIDY3LCA4MiwgNjksIDE5NywgODcsIDc5LCA3OSwgNjgsIDEyOCwgODcsIDc5LCA3OCwgCisgICAgMTI4LCA4NywgNzksIDIwNiwgODcsIDc5LCA3NywgNjksIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY5LCAyMDYsIDg3LCA3OSwgCisgICAgNzcsIDY1LCA3OCwgMjExLCA4NywgNzksIDc3LCA2NSwgNzgsIDEyOCwgODcsIDc5LCA3NywgNjUsIDIwNiwgODcsIDc5LCAKKyAgICA3NiwgNzksIDgzLCA3OSwgMTI4LCA4NywgNzksIDc2LCAxOTgsIDg3LCA3OSwgNjksIDEyOCwgODcsIDc5LCA2NSwgMTI4LCAKKyAgICA4NywgNzMsIDg0LCA3MiwgNzksIDg1LCAyMTIsIDg3LCA3MywgODQsIDcyLCA3MywgNzgsIDEyOCwgODcsIDczLCA3OCwgODQsIAorICAgIDY5LCA4MiwgMTI4LCA4NywgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIDg3LCA3MywgNzgsIDc0LCA2NSwgMTI4LCA4NywgCisgICAgNzMsIDc4LCA3MSwgODMsIDEyOCwgODcsIDczLCA3OCwgNjksIDEyOCwgODcsIDczLCA3OCwgMTk3LCA4NywgNzMsIDc4LCAKKyAgICA2OCwgODUsIDEyOCwgODcsIDczLCA3OCwgNjgsIDEyOCwgODcsIDczLCA3OCwgMTk2LCA4NywgNzMsIDc4LCAxMjgsIDg3LCAKKyAgICA3MywgNzEsIDc4LCA4OSwgNjUsIDc4LCAxMjgsIDg3LCA3MywgNzEsIDcxLCA3NiwgMjE3LCA4NywgNzMsIDY4LCA2OSwgNDUsIAorICAgIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA4NywgNzMsIDY4LCAxOTcsIDg3LCA3MywgNjUsIDc4LCA3MSwgODcsIDY1LCA2NSwgCisgICAgNzUsIDEyOCwgODcsIDczLCA2NSwgNzgsIDcxLCAxMjgsIDg3LCA3MiwgNzksIDc2LCAxOTcsIDg3LCA3MiwgNzMsIDg0LCAKKyAgICA2OSwgNDUsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCA2OSwgMTk2LCA4NywgNzIsIDczLCA4NCwgNjksIDEyOCwgODcsIAorICAgIDcyLCA2OSwgNjksIDc2LCA2OSwgMTk2LCA4NywgNzIsIDY5LCA2OSwgNzYsIDY3LCA3MiwgNjUsIDczLCAyMTAsIDg3LCA3MiwgCisgICAgNjksIDY5LCA3NiwgMTI4LCA4NywgNzIsIDY5LCA2OSwgMjA0LCA4NywgNzIsIDY5LCA2NSwgODQsIDEyOCwgODcsIDcyLCAKKyAgICA2NSwgNzYsIDY5LCAxMjgsIDg3LCA3MSwgMTI4LCA4NywgNjksIDg4LCAxMjgsIDg3LCA2OSwgODUsIDg4LCAxMjgsIDg3LCAKKyAgICA2OSwgODMsIDg0LCA2OSwgODIsIDIwNiwgODcsIDY5LCA4MywgODQsIDEyOCwgODcsIDY5LCA4MywgMjEyLCA4NywgNjksIAorICAgIDgwLCAxMjgsIDg3LCA2OSwgNzksIDEyOCwgODcsIDY5LCA3OCwgMTI4LCA4NywgNjksIDc2LCA3NiwgMTI4LCA4NywgNjksIAorICAgIDczLCA3MSwgNzIsIDIxMiwgODcsIDY5LCA3MywgNjksIDgyLCA4MywgODQsIDgyLCA2NSwgODMsIDIxMSwgODcsIDY5LCA2OSwgCisgICAgNzgsIDEyOCwgODcsIDY5LCA2OCwgNzEsIDY5LCA0NSwgODQsIDY1LCA3MywgNzYsIDY5LCAxOTYsIDg3LCA2OSwgNjgsIDY4LCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDg3LCA2OSwgNjUsIDgyLCAyMTcsIDg3LCA2OSwgNjUsIDgwLCA3OSwgNzgsIDEyOCwgODcsIAorICAgIDY3LCAxMjgsIDg3LCA2NiwgMTI4LCA4NywgNjUsIDg5LCAxMjgsIDg3LCA2NSwgMjE3LCA4NywgNjUsIDg4LCA3MywgNzgsIAorICAgIDE5OSwgODcsIDY1LCA4OCwgMTI4LCA4NywgNjUsIDg3LCA0NSwgNjUsIDg5LCA3MywgNzgsIDQ1LCA4MiwgNjksIDgzLCA3MiwgCisgICAgMTI4LCA4NywgNjUsIDg3LCAxMjgsIDg3LCA2NSwgMjE1LCA4NywgNjUsIDg2LCAyMTcsIDg3LCA2NSwgODYsIDczLCA3OCwgCisgICAgMTk5LCA4NywgNjUsIDg2LCA2OSwgODMsIDEyOCwgODcsIDY1LCA4NiwgNjksIDEyOCwgODcsIDY1LCA4NiwgMTk3LCA4NywgCisgICAgNjUsIDg1LCAxMjgsIDg3LCA2NSwgODQsIDg0LCA3OSwgMTI4LCA4NywgNjUsIDg0LCA2OSwgODIsIDc3LCA2OSwgNzYsIDc5LCAKKyAgICA3OCwgMTI4LCA4NywgNjUsIDg0LCA2OSwgODIsIDEyOCwgODcsIDY1LCA4NCwgNjksIDIxMCwgODcsIDY1LCA4NCwgNjcsIAorICAgIDcyLCAxMjgsIDg3LCA2NSwgODQsIDEyOCwgODcsIDY1LCA4MywgODQsIDczLCA3OCwgNzEsIDEyOCwgODcsIDY1LCA4MywgCisgICAgODMsIDY1LCA3NiwgNzYsIDY1LCA3NywgMTI4LCA4NywgNjUsIDgzLCA3NiwgNjUsIDEyOCwgODcsIDY1LCA4MywgNzYsIAorICAgIDE5MywgODcsIDY1LCA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAxMjgsIDg3LCA2NSwgODMsIDY1LCA3NiwgNzYsIDY1LCAKKyAgICAyMDUsIDg3LCA2NSwgODIsIDc4LCA3MywgNzgsIDE5OSwgODcsIDY1LCA4MCwgMTI4LCA4NywgNjUsIDc4LCA3MywgNzgsIAorICAgIDE5OSwgODcsIDY1LCA3OCwgNzEsIDc1LCA4NSwgNzksIDgxLCAxMjgsIDg3LCA2NSwgNzgsIDY4LCA2OSwgODIsIDY5LCA4MiwgCisgICAgMTI4LCA4NywgNjUsIDc4LCAxMjgsIDg3LCA2NSwgNzYsIDc2LCAxMjgsIDg3LCA2NSwgNzYsIDc1LCAxMjgsIDg3LCA2NSwgCisgICAgNzYsIDIwMywgODcsIDY1LCA3MywgODQsIDczLCA3OCwgNzEsIDEyOCwgODcsIDY1LCA3MywgMTI4LCA4NywgNjUsIDY5LCAKKyAgICA3OCwgMTI4LCA4NywgNjUsIDY5LCAxMjgsIDg3LCA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NywgNDgsIDUwLCA1MywgMTI4LCAKKyAgICA4NywgNDgsIDUwLCA1MiwgNjUsIDEyOCwgODcsIDQ4LCA1MCwgNTIsIDEyOCwgODcsIDQ4LCA1MCwgNTEsIDEyOCwgODcsIAorICAgIDQ4LCA1MCwgNTAsIDEyOCwgODcsIDQ4LCA1MCwgNDksIDEyOCwgODcsIDQ4LCA1MCwgNDgsIDEyOCwgODcsIDQ4LCA0OSwgCisgICAgNTcsIDEyOCwgODcsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDU2LCAxMjgsIDg3LCA0OCwgNDksIDU1LCAKKyAgICA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgMTI4LCA4NywgNDgsIDQ5LCA1NCwgMTI4LCA4NywgNDgsIDQ5LCA1MywgMTI4LCAKKyAgICA4NywgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTIsIDEyOCwgODcsIDQ4LCA0OSwgNTEsIDEyOCwgODcsIAorICAgIDQ4LCA0OSwgNTAsIDEyOCwgODcsIDQ4LCA0OSwgNDksIDEyOCwgODcsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDg3LCA0OCwgCisgICAgNDksIDQ4LCAxMjgsIDg3LCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA4NywgNDgsIDQ4LCA1NywgMTI4LCA4NywgNDgsIDQ4LCAKKyAgICA1NiwgMTI4LCA4NywgNDgsIDQ4LCA1NSwgMTI4LCA4NywgNDgsIDQ4LCA1NCwgMTI4LCA4NywgNDgsIDQ4LCA1MywgMTI4LCAKKyAgICA4NywgNDgsIDQ4LCA1MiwgMTI4LCA4NywgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODcsIDQ4LCA0OCwgNTEsIDEyOCwgODcsIAorICAgIDQ4LCA0OCwgNTAsIDEyOCwgODcsIDQ4LCA0OCwgNDksIDEyOCwgODYsIDkwLCA3NywgNjksIDg0LCAxMjgsIDg2LCA4OSwgCisgICAgODgsIDEyOCwgODYsIDg5LCA4NCwgMTI4LCA4NiwgODksIDgyLCA4OCwgMTI4LCA4NiwgODksIDgyLCAxMjgsIDg2LCA4OSwgCisgICAgODAsIDEyOCwgODYsIDg5LCAxMjgsIDg2LCA4NywgNjUsIDEyOCwgODYsIDg1LCA4OCwgMTI4LCA4NiwgODUsIDg1LCAxMjgsIAorICAgIDg2LCA4NSwgODQsIDEyOCwgODYsIDg1LCA4MiwgODgsIDEyOCwgODYsIDg1LCA4MiwgMTI4LCA4NiwgODUsIDgwLCAxMjgsIAorICAgIDg2LCA4NSwgNzYsIDcxLCA2NSwgMjEwLCA4NiwgODUsIDY5LCA4MSwgMTI4LCA4NiwgODQsIDgzLCAxMjgsIDg2LCA4NCwgCisgICAgMTI4LCA4NiwgODMsIDU3LCA1NywgMTI4LCA4NiwgODMsIDU3LCA1NiwgMTI4LCA4NiwgODMsIDU3LCA1NSwgMTI4LCA4NiwgCisgICAgODMsIDU3LCA1NCwgMTI4LCA4NiwgODMsIDU3LCA1MywgMTI4LCA4NiwgODMsIDU3LCA1MiwgMTI4LCA4NiwgODMsIDU3LCAKKyAgICA1MSwgMTI4LCA4NiwgODMsIDU3LCA1MCwgMTI4LCA4NiwgODMsIDU3LCA0OSwgMTI4LCA4NiwgODMsIDU3LCA0OCwgMTI4LCAKKyAgICA4NiwgODMsIDU3LCAxMjgsIDg2LCA4MywgNTYsIDU3LCAxMjgsIDg2LCA4MywgNTYsIDU2LCAxMjgsIDg2LCA4MywgNTYsIAorICAgIDU1LCAxMjgsIDg2LCA4MywgNTYsIDU0LCAxMjgsIDg2LCA4MywgNTYsIDUzLCAxMjgsIDg2LCA4MywgNTYsIDUyLCAxMjgsIAorICAgIDg2LCA4MywgNTYsIDUxLCAxMjgsIDg2LCA4MywgNTYsIDUwLCAxMjgsIDg2LCA4MywgNTYsIDQ5LCAxMjgsIDg2LCA4MywgCisgICAgNTYsIDQ4LCAxMjgsIDg2LCA4MywgNTYsIDEyOCwgODYsIDgzLCA1NSwgNTcsIDEyOCwgODYsIDgzLCA1NSwgNTYsIDEyOCwgCisgICAgODYsIDgzLCA1NSwgNTUsIDEyOCwgODYsIDgzLCA1NSwgNTQsIDEyOCwgODYsIDgzLCA1NSwgNTMsIDEyOCwgODYsIDgzLCAKKyAgICA1NSwgNTIsIDEyOCwgODYsIDgzLCA1NSwgNTEsIDEyOCwgODYsIDgzLCA1NSwgNTAsIDEyOCwgODYsIDgzLCA1NSwgNDksIAorICAgIDEyOCwgODYsIDgzLCA1NSwgNDgsIDEyOCwgODYsIDgzLCA1NSwgMTI4LCA4NiwgODMsIDU0LCA1NywgMTI4LCA4NiwgODMsIAorICAgIDU0LCA1NiwgMTI4LCA4NiwgODMsIDU0LCA1NSwgMTI4LCA4NiwgODMsIDU0LCA1NCwgMTI4LCA4NiwgODMsIDU0LCA1MywgCisgICAgMTI4LCA4NiwgODMsIDU0LCA1MiwgMTI4LCA4NiwgODMsIDU0LCA1MSwgMTI4LCA4NiwgODMsIDU0LCA1MCwgMTI4LCA4NiwgCisgICAgODMsIDU0LCA0OSwgMTI4LCA4NiwgODMsIDU0LCA0OCwgMTI4LCA4NiwgODMsIDU0LCAxMjgsIDg2LCA4MywgNTMsIDU3LCAKKyAgICAxMjgsIDg2LCA4MywgNTMsIDU2LCAxMjgsIDg2LCA4MywgNTMsIDU1LCAxMjgsIDg2LCA4MywgNTMsIDU0LCAxMjgsIDg2LCAKKyAgICA4MywgNTMsIDUzLCAxMjgsIDg2LCA4MywgNTMsIDUyLCAxMjgsIDg2LCA4MywgNTMsIDUxLCAxMjgsIDg2LCA4MywgNTMsIAorICAgIDUwLCAxMjgsIDg2LCA4MywgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNTMsIDEyOCwgODYsIAorICAgIDgzLCA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MiwgNTYsIDEyOCwgODYsIDgzLCA1MiwgNTUsIDEyOCwgODYsIDgzLCA1MiwgCisgICAgNTQsIDEyOCwgODYsIDgzLCA1MiwgNTMsIDEyOCwgODYsIDgzLCA1MiwgNTIsIDEyOCwgODYsIDgzLCA1MiwgNTEsIDEyOCwgCisgICAgODYsIDgzLCA1MiwgNTAsIDEyOCwgODYsIDgzLCA1MiwgNDksIDEyOCwgODYsIDgzLCA1MiwgNDgsIDEyOCwgODYsIDgzLCAKKyAgICA1MiwgMTI4LCA4NiwgODMsIDUxLCA1NywgMTI4LCA4NiwgODMsIDUxLCA1NiwgMTI4LCA4NiwgODMsIDUxLCA1NSwgMTI4LCAKKyAgICA4NiwgODMsIDUxLCA1NCwgMTI4LCA4NiwgODMsIDUxLCA1MywgMTI4LCA4NiwgODMsIDUxLCA1MiwgMTI4LCA4NiwgODMsIAorICAgIDUxLCA1MSwgMTI4LCA4NiwgODMsIDUxLCA1MCwgMTI4LCA4NiwgODMsIDUxLCA0OSwgMTI4LCA4NiwgODMsIDUxLCA0OCwgCisgICAgMTI4LCA4NiwgODMsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDU2LCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1NCwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MywgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MSwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA1MywgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUzLCA0OCwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU2LCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDUyLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUzLCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDUyLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUwLCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDUyLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTIsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgCisgICAgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MywgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MSwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MCwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA1MSwgNDksIDEyOCwgODYsIDgzLCA1MCwgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUxLCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDUwLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU1LCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDUwLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUyLCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDUwLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDQ5LCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDUwLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTcsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNDksIDU2LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgCisgICAgNTQsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUzLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA0OSwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA0OSwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA0OSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU3LCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDQ4LCA1NiwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU0LCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDQ4LCA1MywgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUxLCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDQ4LCA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNDgsIDQ4LCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU3LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDU3LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU0LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU3LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUxLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDU3LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNDksIDEyOCwgODYsIDgzLCA0OSwgNTcsIAorICAgIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU3LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgCisgICAgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NiwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MSwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1NiwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU2LCA0OCwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU2LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDU1LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUzLCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU1LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUwLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDU1LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTUsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgCisgICAgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU0LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MywgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUxLCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MCwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1NCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTQsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU0LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDUzLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU1LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUzLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUyLCAxMjgsIAorICAgIDg2LCA4MywgNDksIDUzLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDQ5LCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDUzLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTcsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgCisgICAgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1MiwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUyLCA0OSwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1MiwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU3LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDUxLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU0LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUxLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUxLCAxMjgsIAorICAgIDg2LCA4MywgNDksIDUxLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTEsIDQ4LCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDUxLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTYsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgCisgICAgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUyLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1MCwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUwLCA0OCwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU2LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUzLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUwLCAxMjgsIAorICAgIDg2LCA4MywgNDksIDQ5LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNDksIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNDgsIDU3LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTUsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU0LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA0OCwgCisgICAgNTIsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUxLCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA0OCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDgsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDQ4LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDEyOCwgODYsIDgzLCAxMjgsIDg2LCA4MiwgNjUsIDY3LCA3MiwgODksIDEyOCwgODYsIDc5LCA4OCwgMTI4LCA4NiwgNzksIAorICAgIDg3LCA2OSwgNzYsIDQ1LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAyMTAsIDg2LCA3OSwgODcsIDEyOCwgODYsIDc5LCA4NSwgCisgICAgMTI4LCA4NiwgNzksIDg0LCAxMjgsIDg2LCA3OSwgODAsIDEyOCwgODYsIDc5LCA3OSwgMTI4LCA4NiwgNzksIDc3LCAxMjgsIAorICAgIDg2LCA3OSwgNzYsIDg1LCA3NywgMTk3LCA4NiwgNzksIDc2LCA4NCwgNjUsIDcxLCAxOTcsIDg2LCA3OSwgNzYsIDY3LCA2NSwgCisgICAgNzgsIDc5LCAxMjgsIDg2LCA3OSwgNzMsIDE5NiwgODYsIDc5LCA3MywgNjcsIDczLCA3OCwgNzEsIDEyOCwgODYsIDc5LCAKKyAgICA3MywgNjcsIDY5LCA3NiwgNjksIDgzLCAyMTEsIDg2LCA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4NiwgNzksIDY3LCA2NSwgNzYsIAorICAgIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODYsIDc5LCA2NywgNjUsIDIwNCwgODYsIDc5LCAxMjgsIDg2LCA3MywgCisgICAgODgsIDEyOCwgODYsIDczLCA4NCwgODIsIDczLCA3OSwgNzYsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDg0LCA4MiwgNzMsIDc5LCAKKyAgICA3NiwgMTI4LCA4NiwgNzMsIDg0LCA2NSwgNjksIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDg0LCA2NSwgNjksIDEyOCwgODYsIAorICAgIDczLCA4NCwgMTI4LCA4NiwgNzMsIDgzLCA3MywgNzEsIDc5LCA4NCwgNzIsIDczLCAxOTUsIDg2LCA3MywgODMsIDY1LCA4MiwgCisgICAgNzEsIDY1LCA4OSwgNjUsIDEyOCwgODYsIDczLCA4MywgNjUsIDgyLCA3MSwgNjUsIDEyOCwgODYsIDczLCA4MywgNjUsIDgyLCAKKyAgICA3MSwgMTkzLCA4NiwgNzMsIDgyLCA3MywgNjUsIDc3LCAxMjgsIDg2LCA3MywgODIsIDcxLCA3OSwgMTI4LCA4NiwgNzMsIAorICAgIDgyLCA3MSwgNjUsIDEyOCwgODYsIDczLCA4MiwgNjUsIDc3LCA2NSwgMTI4LCA4NiwgNzMsIDgwLCAxMjgsIDg2LCA3MywgCisgICAgNzksIDc2LCA3MywgNzgsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDQ1LCA1MSwgMTI4LCA4NiwgNzMsIDc4LCAKKyAgICA2OSwgNzEsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCAxMjgsIDg2LCA3MywgNzgsIAorICAgIDY5LCA3MSwgNjUsIDIxMCwgODYsIDczLCA3OCwgNjksIDEyOCwgODYsIDczLCA3OCwgMTI4LCA4NiwgNzMsIDc2LCA3NiwgCisgICAgNjUsIDcxLCA2OSwgMTI4LCA4NiwgNzMsIDczLCAxMjgsIDg2LCA3MywgNjksIDg4LCAxMjgsIDg2LCA3MywgNjksIDg3LCAKKyAgICA3MywgNzgsIDE5OSwgODYsIDczLCA2OSwgODcsIDY4LCA2NSwgODQsIDE5MywgODYsIDczLCA2OSwgODQsIDEyOCwgODYsIAorICAgIDczLCA2OSwgODAsIDEyOCwgODYsIDczLCA2OSwgMTI4LCA4NiwgNzMsIDY4LCA3NCwgNDUsIDUwLCAxMjgsIDg2LCA3MywgCisgICAgNjgsIDc0LCAxMjgsIDg2LCA3MywgNjgsIDY5LCA3OSwgNjcsIDY1LCA4MywgODMsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDg2LCAKICAgICA3MywgNjgsIDY5LCAyMDcsIDg2LCA3MywgNjgsIDY1LCAxMjgsIDg2LCA3MywgNjcsIDg0LCA3OSwgODIsIDIxNywgODYsIAotICAgIDczLCA2NiwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg2LCA3MywgMTI4LCA4NiwgNjksIDg4LCAxMjgsIDg2LCA2OSwgCi0gICAgODcsIDEyOCwgODYsIDY5LCAyMTUsIDg2LCA2OSwgODUsIDg4LCAxMjgsIDg2LCA2OSwgODUsIDc3LCAxMjgsIDg2LCA2OSwgCi0gICAgODUsIDY1LCA2OSwgODAsIDY5LCA3OCwgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDEyOCwgODYsIDY5LCA4MywgODQsIDY1LCAKLSAgICAxMjgsIDg2LCA2OSwgODMsIDgzLCA2OSwgMjA0LCA4NiwgNjksIDgyLCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNzYsIDg5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTQsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgCi0gICAgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MCwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgCi0gICAgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgCi0gICAgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTIsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgCi0gICAgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MywgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgCi0gICAgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgCi0gICAgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNDksIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgCi0gICAgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OSwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgCi0gICAgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgMTI4LCA4NiwgNjksIDgyLCA4MywgNzMsIDY3LCA3NiwgNjksIDEyOCwgODYsIDY5LCA4MiwgODMsIDE5NywgCi0gICAgODYsIDY5LCA4MiwgNzEsIDY5LCAxMjgsIDg2LCA2OSwgODIsIDY4LCA3MywgNzEsIDgyLCA3MywgODMsIDEyOCwgODYsIDY5LCAKLSAgICA4MCwgMTI4LCA4NiwgNjksIDc4LCA2OCwgMTI4LCA4NiwgNjksIDczLCA3NiwgMTI4LCA4NiwgNjksIDcyLCA3MywgNjcsIAotICAgIDc2LCA2OSwgMTI4LCA4NiwgNjksIDcyLCAxMjgsIDg2LCA2OSwgMjAwLCA4NiwgNjksIDY5LCAxMjgsIDg2LCA2OSwgMTk3LCAKLSAgICA4NiwgNjksIDY4LCA2OSwgMTI4LCA4NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgODYsIDY1LCA4OCwgMTI4LCA4NiwgNjUsIDg2LCAxMjgsIDg2LCA2NSwgMjE0LCA4NiwgNjUsIDg0LCA3MiwgODksIAotICAgIDEyOCwgODYsIDY1LCA4NCwgMTI4LCA4NiwgNjUsIDgzLCA4NCwgNzgsIDY5LCA4MywgMjExLCA4NiwgNjUsIDgzLCA3MywgCi0gICAgODMsIDEyOCwgODYsIDY1LCA4MiwgODksIDIxMSwgODYsIDY1LCA4MiwgNzMsIDc1LCA2NSwgMTI4LCA4NiwgNjUsIDgyLCAKLSAgICA3MywgNjUsIDc4LCAyMTIsIDg2LCA2NSwgODIsIDczLCA2NSwgMTI4LCA4NiwgNjUsIDgyLCA3MywgMTkzLCA4NiwgNjUsIAotICAgIDgyLCA2OSwgNzMsIDY1LCAyMDEsIDg2LCA2NSwgODIsIDY5LCA3MywgMTkzLCA4NiwgNjUsIDgwLCA3OSwgODUsIDgyLCA4MywgCi0gICAgMTI4LCA4NiwgNjUsIDgwLCAxMjgsIDg2LCA2NSwgNzgsIDY5LCAxMjgsIDg2LCA2NSwgNzcsIDY1LCA3MSwgNzksIDc3LCAKLSAgICA4NSwgNzUsIDcyLCA2NSwgMTI4LCA4NiwgNjUsIDc3LCA2NSwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgMTkzLCA4NiwgNjUsIAotICAgIDc2LCA3NiwgNjksIDg5LCAxMjgsIDg2LCA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NiwgNjUsIDY1LCAxMjgsIDg2LCA0OCwgCisgICAgNzMsIDY2LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODYsIDczLCAxMjgsIDg2LCA3MCwgNjUsIDEyOCwgODYsIDY5LCAKKyAgICA4OCwgMTI4LCA4NiwgNjksIDg3LCAxMjgsIDg2LCA2OSwgMjE1LCA4NiwgNjksIDg1LCA4OCwgMTI4LCA4NiwgNjksIDg1LCAKKyAgICA3NywgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDgwLCA2OSwgNzgsIDEyOCwgODYsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIAorICAgIDg2LCA2OSwgODMsIDg0LCA2NSwgMTI4LCA4NiwgNjksIDgzLCA4MywgNjksIDIwNCwgODYsIDY5LCA4MiwgMjE3LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCA4OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDc2LCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTQsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIAorICAgIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIAorICAgIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIAorICAgIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTEsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIAorICAgIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIAorICAgIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIAorICAgIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNDksIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIAorICAgIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIAorICAgIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDEyOCwgODYsIDY5LCA4MiwgODMsIDczLCA2NywgNzYsIDY5LCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDgzLCAxOTcsIDg2LCA2OSwgODIsIDcxLCA2OSwgMTI4LCA4NiwgNjksIDgyLCA2OCwgNzMsIDcxLCA4MiwgNzMsIAorICAgIDgzLCAxMjgsIDg2LCA2OSwgODAsIDEyOCwgODYsIDY5LCA3OCwgNjgsIDEyOCwgODYsIDY5LCA3MywgNzYsIDEyOCwgODYsIAorICAgIDY5LCA3MiwgNzMsIDY3LCA3NiwgNjksIDEyOCwgODYsIDY5LCA3MiwgMTI4LCA4NiwgNjksIDIwMCwgODYsIDY5LCA2OSwgCisgICAgMTI4LCA4NiwgNjksIDE5NywgODYsIDY5LCA2OCwgNjksIDEyOCwgODYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDg2LCA2NSwgCisgICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg2LCA2NSwgODgsIDEyOCwgODYsIDY1LCA4NiwgMTI4LCA4NiwgNjUsIDIxNCwgCisgICAgODYsIDY1LCA4NSwgMTI4LCA4NiwgNjUsIDg0LCA3MiwgODksIDEyOCwgODYsIDY1LCA4NCwgMTI4LCA4NiwgNjUsIDgzLCAKKyAgICA4NCwgNzgsIDY5LCA4MywgMjExLCA4NiwgNjUsIDgzLCA3MywgODMsIDEyOCwgODYsIDY1LCA4MiwgODksIDIxMSwgODYsIAorICAgIDY1LCA4MiwgNzMsIDc1LCA2NSwgMTI4LCA4NiwgNjUsIDgyLCA3MywgNjUsIDc4LCAyMTIsIDg2LCA2NSwgODIsIDczLCA2NSwgCisgICAgMTI4LCA4NiwgNjUsIDgyLCA3MywgMTkzLCA4NiwgNjUsIDgyLCA2OSwgNzMsIDY1LCAyMDEsIDg2LCA2NSwgODIsIDY5LCAKKyAgICA3MywgMTkzLCA4NiwgNjUsIDgwLCA3OSwgODUsIDgyLCA4MywgMTI4LCA4NiwgNjUsIDgwLCAxMjgsIDg2LCA2NSwgNzgsIAorICAgIDY5LCAxMjgsIDg2LCA2NSwgNzcsIDY1LCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA4NiwgNjUsIDc3LCA2NSwgCisgICAgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgMTkzLCA4NiwgNjUsIDc2LCA3NiwgNjksIDg5LCAxMjgsIDg2LCA2NSwgNzMsIAorICAgIDEyOCwgODYsIDY1LCA3MiwgMTI4LCA4NiwgNjUsIDY1LCA4NiwgODUsIDEyOCwgODYsIDY1LCA2NSwgMTI4LCA4NiwgNDgsIAogICAgIDUyLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MiwgNDgsIDEyOCwgODYsIDQ4LCA1MSwgNTcsIDEyOCwgODYsIDQ4LCA1MSwgCiAgICAgNTYsIDEyOCwgODYsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDU1LCAxMjgsIDg2LCA0OCwgNTEsIDU0LCAKICAgICAxMjgsIDg2LCA0OCwgNTEsIDUzLCAxMjgsIDg2LCA0OCwgNTEsIDUyLCAxMjgsIDg2LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCAKQEAgLTM2NSwxNSArNDU2LDE2IEBACiAgICAgODUsIDg1LCA4NSwgNTAsIDEyOCwgODUsIDg1LCA2OSwgMTI4LCA4NSwgODQsIDg1LCA3NSwgNzMsIDEyOCwgODUsIDgzLCAKICAgICA4MywgODUsIDUxLCAxMjgsIDg1LCA4MywgODMsIDg1LCAxMjgsIDg1LCA4MywgNzIsIDg4LCAxMjgsIDg1LCA4MywgNzIsIAogICAgIDg1LCA3NywgODgsIDEyOCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgODUsIDgzLCA3MiwgNTAsIDEyOCwgCi0gICAgODUsIDgzLCA3MiwgMTI4LCA4NSwgODMsIDIwMCwgODUsIDgzLCA2OSwgMTk2LCA4NSwgODMsIDY5LCAxMjgsIDg1LCA4MiwgCi0gICAgODUsIDIxOCwgODUsIDgyLCA4NSwgODMsIDEyOCwgODUsIDgyLCA4NSwgNjgsIDY1LCAxMjgsIDg1LCA4MiwgODUsIDY4LCAKLSAgICAxOTMsIDg1LCA4MiwgODUsIDEyOCwgODUsIDgyLCAyMTMsIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgyLCA3MywgNzgsIDY5LCAKLSAgICAxMjgsIDg1LCA4MiwgNzMsIDUxLCAxMjgsIDg1LCA4MiwgNzMsIDEyOCwgODUsIDgyLCA2NSwgNzgsIDg1LCA4MywgMTI4LCAKLSAgICA4NSwgODIsIDY1LCAxMjgsIDg1LCA4MiwgNTIsIDEyOCwgODUsIDgyLCA1MCwgMTI4LCA4NSwgODIsIDE3OCwgODUsIDgwLCAKLSAgICA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgMjExLCA4NSwgODAsIDg3LCA2NSwgODIsIAotICAgIDY4LCAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgMTk2LCA4NSwgODAsIDg0LCA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MCwgCi0gICAgODMsIDczLCA3NiwgNzksIDc4LCAxMjgsIDg1LCA4MCwgODMsIDczLCA3NiwgNzksIDIwNiwgODUsIDgwLCA4MiwgNzMsIDcxLCAKLSAgICA3MiwgMjEyLCA4NSwgODAsIDgwLCA2OSwgMjEwLCA4NSwgODAsIDY1LCA2OCwgNzIsIDc3LCA2NSwgNzgsIDczLCA4OSwgNjUsIAorICAgIDg1LCA4MywgNzIsIDEyOCwgODUsIDgzLCAyMDAsIDg1LCA4MywgNjksIDE5NiwgODUsIDgzLCA2OSwgNDUsIDUwLCAxMjgsIAorICAgIDg1LCA4MywgNjksIDQ1LCA0OSwgMTI4LCA4NSwgODMsIDY5LCAxMjgsIDg1LCA4MywgMTk3LCA4NSwgODIsIDg1LCAyMTgsIAorICAgIDg1LCA4MiwgODUsIDgzLCAxMjgsIDg1LCA4MiwgODUsIDY4LCA2NSwgMTI4LCA4NSwgODIsIDg1LCA2OCwgMTkzLCA4NSwgCisgICAgODIsIDg1LCAxMjgsIDg1LCA4MiwgMjEzLCA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4NSwgCisgICAgODIsIDczLCA1MSwgMTI4LCA4NSwgODIsIDczLCAxMjgsIDg1LCA4MiwgNjUsIDc4LCA4NSwgODMsIDEyOCwgODUsIDgyLCAKKyAgICA2NSwgMTI4LCA4NSwgODIsIDUyLCAxMjgsIDg1LCA4MiwgNTAsIDEyOCwgODUsIDgyLCAxNzgsIDg1LCA4MCwgODcsIDY1LCAKKyAgICA4MiwgNjgsIDgzLCAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgCisgICAgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDE5NiwgODUsIDgwLCA4NCwgODUsIDgyLCA3OCwgMTI4LCA4NSwgODAsIDgzLCAKKyAgICA3MywgNzYsIDc5LCA3OCwgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIDc5LCAyMDYsIDg1LCA4MCwgODIsIDczLCA3MSwgNzIsIAorICAgIDIxMiwgODUsIDgwLCA4MCwgNjksIDIxMCwgODUsIDgwLCA2NSwgNjgsIDcyLCA3NywgNjUsIDc4LCA3MywgODksIDY1LCAKICAgICAxMjgsIDg1LCA4MCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDg1LCA3OSwgNzgsIDEyOCwgODUsIAogICAgIDc4LCA3OCwgMTI4LCA4NSwgNzgsIDc3LCA2NSwgODIsIDgyLCA3MywgNjksIDE5NiwgODUsIDc4LCA3NSwgNzgsIDc5LCA4NywgCiAgICAgNzgsIDEyOCwgODUsIDc4LCA3MywgODYsIDY5LCA4MiwgODMsIDY1LCAyMDQsIDg1LCA3OCwgNzMsIDg0LCA4OSwgMTI4LCAKQEAgLTM4OCwxMDAgKzQ4MCwxMDQgQEAKICAgICAxMjgsIDg1LCA3NSwgODUsIDEyOCwgODUsIDc1LCA4MiwgNjUsIDczLCA3OCwgNzMsIDY1LCAyMDYsIDg1LCA3NSwgNjUsIAogICAgIDgyLCA2NSwgMTI4LCA4NSwgNzUsIDY1LCA4MiwgMTkzLCA4NSwgNzUsIDEyOCwgODUsIDczLCA3NiwgNzYsIDY5LCA2NSwgCiAgICAgNzgsIDc4LCAxMjgsIDg1LCA3MywgNzEsIDcyLCA4NSwgMjEwLCA4NSwgNzEsIDY1LCA4MiwgNzMsIDg0LCA3MywgMTk1LCAKLSAgICA4NSwgNjksIDg5LCAxMjgsIDg1LCA2OSwgNjksIDEyOCwgODUsIDY5LCA2NSwgMTI4LCA4NSwgNjgsIDg1LCA3MSwgMTI4LCAKLSAgICA4NSwgNjgsIDY1LCA4NCwgODQsIDY1LCAxMjgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgMTkzLCA4NSwgNjgsIDY1LCA2NSwgODQsIAotICAgIDEyOCwgODUsIDY4LCAxMjgsIDg1LCAxOTYsIDg1LCA2NywgMTI4LCA4NSwgNjYsIDg1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCAKLSAgICA4NSwgNjYsIDcyLCA2NSwgODksIDY1LCA4NCwgMjA3LCA4NSwgNjYsIDY1LCA2OCwgNjUsIDc3LCA2NSwgMTI4LCA4NSwgNjYsIAotICAgIDEyOCwgODUsIDY1LCA4NCwgNzIsIDEyOCwgODUsIDY1LCAxMjgsIDg1LCAxNzgsIDg1LCA0OCwgNTIsIDUwLCAxMjgsIDg1LCAKLSAgICA0OCwgNTIsIDQ5LCAxMjgsIDg1LCA0OCwgNTIsIDQ4LCAxMjgsIDg1LCA0OCwgNTEsIDU3LCAxMjgsIDg1LCA0OCwgNTEsIAotICAgIDU2LCAxMjgsIDg1LCA0OCwgNTEsIDU1LCAxMjgsIDg1LCA0OCwgNTEsIDU0LCAxMjgsIDg1LCA0OCwgNTEsIDUzLCAxMjgsIAotICAgIDg1LCA0OCwgNTEsIDUyLCAxMjgsIDg1LCA0OCwgNTEsIDUxLCAxMjgsIDg1LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCA4NSwgCi0gICAgNDgsIDUxLCA1MCwgMTI4LCA4NSwgNDgsIDUxLCA0OSwgMTI4LCA4NSwgNDgsIDUxLCA0OCwgMTI4LCA4NSwgNDgsIDUwLCAKLSAgICA1NywgNjUsIDEyOCwgODUsIDQ4LCA1MCwgNTcsIDEyOCwgODUsIDQ4LCA1MCwgNTYsIDEyOCwgODUsIDQ4LCA1MCwgNTUsIAotICAgIDEyOCwgODUsIDQ4LCA1MCwgNTQsIDEyOCwgODUsIDQ4LCA1MCwgNTMsIDEyOCwgODUsIDQ4LCA1MCwgNTIsIDEyOCwgODUsIAotICAgIDQ4LCA1MCwgNTEsIDY1LCAxMjgsIDg1LCA0OCwgNTAsIDUxLCAxMjgsIDg1LCA0OCwgNTAsIDUwLCAxMjgsIDg1LCA0OCwgCi0gICAgNTAsIDQ5LCAxMjgsIDg1LCA0OCwgNTAsIDQ4LCAxMjgsIDg1LCA0OCwgNDksIDU3LCAxMjgsIDg1LCA0OCwgNDksIDU2LCAKLSAgICAxMjgsIDg1LCA0OCwgNDksIDU1LCAxMjgsIDg1LCA0OCwgNDksIDU0LCAxMjgsIDg1LCA0OCwgNDksIDUzLCAxMjgsIDg1LCAKLSAgICA0OCwgNDksIDUyLCAxMjgsIDg1LCA0OCwgNDksIDUxLCAxMjgsIDg1LCA0OCwgNDksIDUwLCAxMjgsIDg1LCA0OCwgNDksIAotICAgIDQ5LCAxMjgsIDg1LCA0OCwgNDksIDQ4LCAxMjgsIDg1LCA0OCwgNDgsIDU3LCAxMjgsIDg1LCA0OCwgNDgsIDU2LCAxMjgsIAotICAgIDg1LCA0OCwgNDgsIDU1LCAxMjgsIDg1LCA0OCwgNDgsIDU0LCA2NiwgMTI4LCA4NSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgCi0gICAgODUsIDQ4LCA0OCwgNTQsIDEyOCwgODUsIDQ4LCA0OCwgNTMsIDEyOCwgODUsIDQ4LCA0OCwgNTIsIDEyOCwgODUsIDQ4LCAKLSAgICA0OCwgNTEsIDEyOCwgODUsIDQ4LCA0OCwgNTAsIDEyOCwgODUsIDQ4LCA0OCwgNDksIDEyOCwgODUsIDQ1LCA3MywgNDUsIAotICAgIDczLCAxMjgsIDg1LCA0NSwgNjksIDc5LCA0NSwgNjksIDg1LCAxMjgsIDg0LCA5MCwgODUsIDEyOCwgODQsIDkwLCA3OSwgCi0gICAgNjUsIDEyOCwgODQsIDkwLCA3OSwgMTI4LCA4NCwgOTAsIDczLCAyMTAsIDg0LCA5MCwgNzMsIDEyOCwgODQsIDkwLCA2OSwgCi0gICAgNjksIDEyOCwgODQsIDkwLCA2OSwgMTI4LCA4NCwgOTAsIDY1LCA2NSwgMTI4LCA4NCwgOTAsIDY1LCAxMjgsIDg0LCA5MCwgCi0gICAgMTI4LCA4NCwgODksIDIxMCwgODQsIDg5LCA4MCwgNjksIDQ1LCAxODMsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgyLCA4NCwgCi0gICAgODksIDgwLCA2OSwgNDUsIDE4MSwgODQsIDg5LCA4MCwgNjksIDQ1LCAxODAsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTc5LCAKLSAgICA4NCwgODksIDgwLCA2OSwgNDUsIDE3OCwgODQsIDg5LCA4MCwgNjksIDQ1LCAxNzcsIDg0LCA4OSwgODAsIDE5NywgODQsIAotICAgIDg5LCA3OSwgMTI4LCA4NCwgODksIDczLCAxMjgsIDg0LCA4OSwgNjksIDEyOCwgODQsIDg5LCA2NSwgMTI4LCA4NCwgODcsIAotICAgIDc5LCA3OSwgMTI4LCA4NCwgODcsIDc5LCA0NSwgODcsIDY1LCAyMTcsIDg0LCA4NywgNzksIDQ1LCA4NCwgNzIsIDczLCA4MiwgCi0gICAgODQsIDg5LCAxMjgsIDg0LCA4NywgNzksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDg0LCA4NywgNzksIDQ1LCA3MiwgNjksIDY1LCAKLSAgICA2OCwgNjksIDE5NiwgODQsIDg3LCA3MywgODMsIDg0LCA2OSwgMTk2LCA4NCwgODcsIDczLCA3MywgMTI4LCA4NCwgODcsIAotICAgIDczLCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgODcsIDc5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgCi0gICAgODksIDQ1LCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDgzLCA3MywgODgsIAotICAgIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDgzLCA2OSwgODYsIDY5LCA3OCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgCi0gICAgODQsIDg5LCA0NSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzgsIDczLCA3OCwgNjksIAotICAgIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgCi0gICAgODksIDQ1LCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNjksIDczLCA3MSwgNzIsIAotICAgIDg0LCAyMDAsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA2OSwgNzMsIDcxLCA3MiwgODQsIDEyOCwgODQsIDg3LCA2OSwgCi0gICAgNzgsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDIxNywgODQsIDg3LCA2OSwgNzYsIDg2LCA2OSwgNDUsIDg0LCAKLSAgICA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDg3LCA2OSwgNzYsIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgODYsIAotICAgIDE5NywgODQsIDg3LCA2OSwgMTI4LCA4NCwgODcsIDY1LCA2NSwgMTI4LCA4NCwgODcsIDY1LCAxMjgsIDg0LCA4NiwgODIsIAotICAgIDczLCA2OCwgNzksIDEyOCwgODQsIDg2LCA3MywgNzcsIDY1LCA2OCwgODUsIDIxMCwgODQsIDg1LCA4OCwgMTI4LCA4NCwgCi0gICAgODUsIDg1LCA3NywgODUsIDEyOCwgODQsIDg1LCA4NCwgODQsIDg5LCAxMjgsIDg0LCA4NSwgODQsIDY5LCA4OSwgNjUsIDgzLCAKLSAgICA2NSwgODQsIDEyOCwgODQsIDg1LCA4NCwgMTI4LCA4NCwgODUsIDgyLCA4OCwgMTI4LCA4NCwgODUsIDgyLCA4NSwgMTI4LCAKLSAgICA4NCwgODUsIDgyLCA4NCwgNzYsIDY5LCAxMjgsIDg0LCA4NSwgODIsIDc5LCA1MCwgMTI4LCA4NCwgODUsIDgyLCA3OCwgODMsIAotICAgIDg0LCA3MywgNzYsIDY5LCAxMjgsIDg0LCA4NSwgODIsIDc4LCA2OSwgMTk2LCA4NCwgODUsIDgyLCAyMDYsIDg0LCA4NSwgCi0gICAgODIsIDY2LCA2NSwgNzgsIDEyOCwgODQsIDg1LCA4MiwgMTI4LCA4NCwgODUsIDgwLCAxMjgsIDg0LCA4NSwgNzksIDg4LCAKLSAgICAxMjgsIDg0LCA4NSwgNzksIDg0LCAxMjgsIDg0LCA4NSwgNzksIDgwLCAxMjgsIDg0LCA4NSwgNzksIDEyOCwgODQsIDg1LCAKLSAgICA3OCwgNzgsIDg5LCAxMjgsIDg0LCA4NSwgNzcsIDY5LCA4NCwgNjksIDgzLCAxMjgsIDg0LCA4NSwgNzcsIDY1LCA2OSwgCi0gICAgMTI4LCA4NCwgODUsIDc3LCAxMjgsIDg0LCA4NSwgNzYsIDczLCA4MCwgMTI4LCA4NCwgODUsIDc1LCA4NywgNjksIDc4LCAKLSAgICA4NCwgNzMsIDgzLCAxMjgsIDg0LCA4NSwgNzUsIDEyOCwgODQsIDg1LCA3MSwgODIsIDczLCAyMDMsIDg0LCA4NSwgNzEsIAotICAgIDUwLCAxMjgsIDg0LCA4NSwgNzEsIDE3OCwgODQsIDg1LCA2NSwgODIsIDY5LCAxOTksIDg0LCA4NSwgNjUsIDY5LCA4MCwgCi0gICAgMTI4LCA4NCwgODUsIDY1LCA2OSwgMTI4LCA4NCwgMjEzLCA4NCwgODQsIDg1LCA2OCwgNjgsIDY1LCA3MSwgMTI4LCA4NCwgCi0gICAgODQsIDg1LCA2OCwgNjgsIDY1LCA2NSwgNzEsIDEyOCwgODQsIDg0LCA4NSwgMTI4LCA4NCwgODQsIDg0LCA3MiwgNjUsIAorICAgIDg1LCA2OSwgODksIDEyOCwgODUsIDY5LCA3MywgMTI4LCA4NSwgNjksIDY5LCAxMjgsIDg1LCA2OSwgNjUsIDEyOCwgODUsIAorICAgIDY4LCA4NSwgNzEsIDEyOCwgODUsIDY4LCA2NSwgODQsIDg0LCA2NSwgMTI4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDE5MywgCisgICAgODUsIDY4LCA2NSwgNjUsIDg0LCAxMjgsIDg1LCA2OCwgMTI4LCA4NSwgMTk2LCA4NSwgNjcsIDEyOCwgODUsIDY2LCA4NSwgCisgICAgNzAsIDczLCA3NiwgNzMsIDEyOCwgODUsIDY2LCA3MiwgNjUsIDg5LCA2NSwgODQsIDIwNywgODUsIDY2LCA2NSwgNjgsIDY1LCAKKyAgICA3NywgNjUsIDEyOCwgODUsIDY2LCAxMjgsIDg1LCA2NSwgODQsIDcyLCAxMjgsIDg1LCA2NSwgNzgsIDcxLCAxMjgsIDg1LCAKKyAgICA2NSwgMTI4LCA4NSwgMTc4LCA4NSwgNDgsIDUyLCA1MCwgMTI4LCA4NSwgNDgsIDUyLCA0OSwgMTI4LCA4NSwgNDgsIDUyLCAKKyAgICA0OCwgMTI4LCA4NSwgNDgsIDUxLCA1NywgMTI4LCA4NSwgNDgsIDUxLCA1NiwgMTI4LCA4NSwgNDgsIDUxLCA1NSwgMTI4LCAKKyAgICA4NSwgNDgsIDUxLCA1NCwgMTI4LCA4NSwgNDgsIDUxLCA1MywgMTI4LCA4NSwgNDgsIDUxLCA1MiwgMTI4LCA4NSwgNDgsIAorICAgIDUxLCA1MSwgMTI4LCA4NSwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgODUsIDQ4LCA1MSwgNTAsIDEyOCwgODUsIDQ4LCA1MSwgCisgICAgNDksIDEyOCwgODUsIDQ4LCA1MSwgNDgsIDEyOCwgODUsIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDg1LCA0OCwgNTAsIDU3LCAKKyAgICAxMjgsIDg1LCA0OCwgNTAsIDU2LCAxMjgsIDg1LCA0OCwgNTAsIDU1LCAxMjgsIDg1LCA0OCwgNTAsIDU0LCAxMjgsIDg1LCAKKyAgICA0OCwgNTAsIDUzLCAxMjgsIDg1LCA0OCwgNTAsIDUyLCAxMjgsIDg1LCA0OCwgNTAsIDUxLCA2NSwgMTI4LCA4NSwgNDgsIAorICAgIDUwLCA1MSwgMTI4LCA4NSwgNDgsIDUwLCA1MCwgMTI4LCA4NSwgNDgsIDUwLCA0OSwgMTI4LCA4NSwgNDgsIDUwLCA0OCwgCisgICAgMTI4LCA4NSwgNDgsIDQ5LCA1NywgMTI4LCA4NSwgNDgsIDQ5LCA1NiwgMTI4LCA4NSwgNDgsIDQ5LCA1NSwgMTI4LCA4NSwgCisgICAgNDgsIDQ5LCA1NCwgMTI4LCA4NSwgNDgsIDQ5LCA1MywgMTI4LCA4NSwgNDgsIDQ5LCA1MiwgMTI4LCA4NSwgNDgsIDQ5LCAKKyAgICA1MSwgMTI4LCA4NSwgNDgsIDQ5LCA1MCwgMTI4LCA4NSwgNDgsIDQ5LCA0OSwgMTI4LCA4NSwgNDgsIDQ5LCA0OCwgMTI4LCAKKyAgICA4NSwgNDgsIDQ4LCA1NywgMTI4LCA4NSwgNDgsIDQ4LCA1NiwgMTI4LCA4NSwgNDgsIDQ4LCA1NSwgMTI4LCA4NSwgNDgsIAorICAgIDQ4LCA1NCwgNjYsIDEyOCwgODUsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDg1LCA0OCwgNDgsIDU0LCAxMjgsIDg1LCA0OCwgCisgICAgNDgsIDUzLCAxMjgsIDg1LCA0OCwgNDgsIDUyLCAxMjgsIDg1LCA0OCwgNDgsIDUxLCAxMjgsIDg1LCA0OCwgNDgsIDUwLCAKKyAgICAxMjgsIDg1LCA0OCwgNDgsIDQ5LCAxMjgsIDg1LCA0NSwgNzMsIDQ1LCA3MywgMTI4LCA4NSwgNDUsIDY5LCA3OSwgNDUsIAorICAgIDY5LCA4NSwgMTI4LCA4NSwgNDUsIDY2LCA4MiwgNzQsIDcxLCA4NSwgMTI4LCA4NCwgOTAsIDg1LCAxMjgsIDg0LCA5MCwgCisgICAgNzksIDY1LCAxMjgsIDg0LCA5MCwgNzksIDEyOCwgODQsIDkwLCA3MywgMjEwLCA4NCwgOTAsIDczLCAxMjgsIDg0LCA5MCwgCisgICAgNjksIDY5LCAxMjgsIDg0LCA5MCwgNjksIDEyOCwgODQsIDkwLCA2NSwgNjUsIDEyOCwgODQsIDkwLCA2NSwgMTI4LCA4NCwgCisgICAgOTAsIDEyOCwgODQsIDg5LCAyMTAsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgzLCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MiwgCisgICAgODQsIDg5LCA4MCwgNjksIDQ1LCAxODEsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgwLCA4NCwgODksIDgwLCA2OSwgNDUsIAorICAgIDE3OSwgODQsIDg5LCA4MCwgNjksIDQ1LCAxNzgsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTc3LCA4NCwgODksIDgwLCAxOTcsIAorICAgIDg0LCA4OSwgNzksIDEyOCwgODQsIDg5LCA3MywgMTI4LCA4NCwgODksIDY5LCAxMjgsIDg0LCA4OSwgNjUsIDEyOCwgODQsIAorICAgIDg3LCA3OSwgNzksIDEyOCwgODQsIDg3LCA3OSwgNDUsIDg3LCA2NSwgMjE3LCA4NCwgODcsIDc5LCA0NSwgODQsIDcyLCA3MywgCisgICAgODIsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDc5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4NCwgODcsIDc5LCA0NSwgNzIsIDY5LCAKKyAgICA2NSwgNjgsIDY5LCAxOTYsIDg0LCA4NywgNzksIDQ1LCA2OSwgMjA1LCA4NCwgODcsIDczLCA4MywgODQsIDY5LCAxOTYsIAorICAgIDg0LCA4NywgNzMsIDczLCAxMjgsIDg0LCA4NywgNzMsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA4NywgCisgICAgNzksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODcsIDY5LCAKKyAgICA3OCwgODQsIDg5LCA0NSwgODMsIDczLCA4OCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODMsIDY5LCA4NiwgCisgICAgNjksIDc4LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCAKKyAgICA4NCwgODksIDQ1LCA3OCwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzAsIDc5LCA4NSwgCisgICAgODIsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3MywgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCAKKyAgICA4NCwgODksIDQ1LCA2OSwgNzMsIDcxLCA3MiwgODQsIDIwMCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDY5LCA3MywgCisgICAgNzEsIDcyLCA4NCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgMjE3LCAKKyAgICA4NCwgODcsIDY5LCA3NiwgODYsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgCisgICAgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc2LCA4NiwgMTk3LCA4NCwgODcsIDY5LCAxMjgsIDg0LCA4NywgNjUsIDY1LCAKKyAgICAxMjgsIDg0LCA4NywgNjUsIDEyOCwgODQsIDg2LCA4MiwgNzMsIDY4LCA3OSwgMTI4LCA4NCwgODYsIDczLCA3NywgNjUsIAorICAgIDY4LCA4NSwgMjEwLCA4NCwgODUsIDg4LCAxMjgsIDg0LCA4NSwgODUsIDc3LCA4NSwgMTI4LCA4NCwgODUsIDg1LCAxMjgsIAorICAgIDg0LCA4NSwgODQsIDg0LCA4OSwgMTI4LCA4NCwgODUsIDg0LCA2OSwgODksIDY1LCA4MywgNjUsIDg0LCAxMjgsIDg0LCA4NSwgCisgICAgODQsIDEyOCwgODQsIDg1LCA4MiwgODgsIDEyOCwgODQsIDg1LCA4MiwgODUsIDEyOCwgODQsIDg1LCA4MiwgODQsIDc2LCAKKyAgICA2OSwgMTI4LCA4NCwgODUsIDgyLCA3OSwgNTAsIDEyOCwgODQsIDg1LCA4MiwgNzgsIDgzLCA4NCwgNzMsIDc2LCA2OSwgCisgICAgMTI4LCA4NCwgODUsIDgyLCA3OCwgNjksIDE5NiwgODQsIDg1LCA4MiwgMjA2LCA4NCwgODUsIDgyLCA2NiwgNjUsIDc4LCAKKyAgICAxMjgsIDg0LCA4NSwgODIsIDEyOCwgODQsIDg1LCA4MCwgMTI4LCA4NCwgODUsIDc5LCA4OCwgMTI4LCA4NCwgODUsIDc5LCAKKyAgICA4NCwgMTI4LCA4NCwgODUsIDc5LCA4MCwgMTI4LCA4NCwgODUsIDc5LCAxMjgsIDg0LCA4NSwgNzgsIDc4LCA4OSwgMTI4LCAKKyAgICA4NCwgODUsIDc3LCA2OSwgODQsIDY5LCA4MywgMTI4LCA4NCwgODUsIDc3LCA2NSwgNjksIDEyOCwgODQsIDg1LCA3NywgCisgICAgMTI4LCA4NCwgODUsIDc2LCA3MywgODAsIDEyOCwgODQsIDg1LCA3NSwgODcsIDY5LCA3OCwgODQsIDczLCA4MywgMTI4LCAKKyAgICA4NCwgODUsIDc1LCAxMjgsIDg0LCA4NSwgNzEsIDgyLCA3MywgMjAzLCA4NCwgODUsIDcxLCA1MCwgMTI4LCA4NCwgODUsIAorICAgIDcxLCAxNzgsIDg0LCA4NSwgNjUsIDgyLCA2OSwgMTk5LCA4NCwgODUsIDY1LCA2OSwgODAsIDEyOCwgODQsIDg1LCA2NSwgCisgICAgNjksIDEyOCwgODQsIDIxMywgODQsIDg0LCA4NSwgODUsIDEyOCwgODQsIDg0LCA4NSwgNjgsIDY4LCA2NSwgNzEsIDEyOCwgCisgICAgODQsIDg0LCA4NSwgNjgsIDY4LCA2NSwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgODUsIDEyOCwgODQsIDg0LCA4NCwgNzIsIDY1LCAKICAgICAxMjgsIDg0LCA4NCwgODQsIDY1LCAxMjgsIDg0LCA4NCwgODMsIDg1LCAxMjgsIDg0LCA4NCwgODMsIDc5LCAxMjgsIDg0LCAKICAgICA4NCwgODMsIDczLCAxMjgsIDg0LCA4NCwgODMsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDgzLCA2OSwgMTI4LCA4NCwgODQsIAotICAgIDgzLCA2NSwgMTI4LCA4NCwgODQsIDczLCAxMjgsIDg0LCA4NCwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA4NSwgCi0gICAgMTI4LCA4NCwgODQsIDcyLCA3OSwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzMsIDEyOCwgCi0gICAgODQsIDg0LCA3MiwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY1LCA2NSwgMTI4LCAKLSAgICA4NCwgODQsIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCAyMDAsIAotICAgIDg0LCA4NCwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDIwMCwgODQsIDg0LCA2OSwgNjksIDEyOCwgODQsIDg0LCA2NSwgCi0gICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA4NCwgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNTAsIDEyOCwgODQsIDgzLCAKLSAgICA4NywgNjksIDEyOCwgODQsIDgzLCA4NywgNjUsIDEyOCwgODQsIDgzLCA4NiwgMTI4LCA4NCwgODMsIDgzLCA2OSwgMTI4LCAKLSAgICA4NCwgODMsIDcyLCA4NSwgNzEsIDgzLCAxMjgsIDg0LCA4MywgNzIsIDc5LCA3OSwgNzUsIDEyOCwgODQsIDgzLCA3MiwgNzksIAotICAgIDc5LCAyMDMsIDg0LCA4MywgNzIsIDY5LCA4MywgMTI4LCA4NCwgODMsIDcyLCA2OSwgNzEsIDEyOCwgODQsIDgzLCA3MiwgCi0gICAgNjksIDE5OSwgODQsIDgzLCA3MiwgNjksIDEyOCwgODQsIDgzLCA3MiwgNjUsIDEyOCwgODQsIDgzLCA2OSwgODIsIDY5LCAKLSAgICAxMjgsIDg0LCA4MywgNjUsIDY4LCA3MywgMTI4LCA4NCwgODMsIDY1LCA2OCwgMjAxLCA4NCwgODMsIDY1LCA2NSwgNjgsIAotICAgIDczLCA4OSwgMTI4LCA4NCwgODMsIDY1LCA2NSwgMTI4LCA4NCwgODMsIDE5MywgODQsIDgyLCA4OSwgNjYsIDc2LCA3MywgCi0gICAgNzksIDIwNiwgODQsIDgyLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA4MiwgODUsIDc4LCA3NSwgMTI4LCA4NCwgODIsIDg1LCAKLSAgICA3OCwgNjcsIDY1LCA4NCwgNjksIDE5NiwgODQsIDgyLCA4NSwgNzcsIDgwLCA2OSwgODQsIDEyOCwgODQsIDgyLCA4NSwgNjksIAotICAgIDEyOCwgODQsIDgyLCA4NSwgNjcsIDc1LCAxMjgsIDg0LCA4MiwgNzksIDgwLCA3MywgNjcsIDY1LCAyMDQsIDg0LCA4MiwgCi0gICAgNzksIDgwLCA3MiwgODksIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIAotICAgIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDc4LCAKLSAgICAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgCi0gICAgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCAKLSAgICAyMDYsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA3NiwgODksIDcxLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIAotICAgIDc5LCA3NiwgNzYsIDY5LCA4OSwgNjYsIDg1LCA4MywgMTI4LCA4NCwgODIsIDc5LCA3NSwgODUsIDg0LCA2NSwgODMsIDg0LCAKLSAgICAyMDEsIDg0LCA4MiwgNzksIDY5LCA5MCwgNjksIDc4LCA3MywgNjUsIDIwNiwgODQsIDgyLCA3MywgODUsIDc3LCA4MCwgNzIsIAotICAgIDEyOCwgODQsIDgyLCA3MywgODQsIDc5LCAyMTEsIDg0LCA4MiwgNzMsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA4NCwgODIsIDczLCA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgODQsIDgyLCA3MywgODMsIDY5LCA3NywgNjksIAotICAgIDEyOCwgODQsIDgyLCA3MywgODAsIDc5LCA2OCwgMTI4LCA4NCwgODIsIDczLCA4MCwgNzYsIDczLCAxMjgsIDg0LCA4MiwgCi0gICAgNzMsIDgwLCA3NiwgMTk3LCA4NCwgODIsIDczLCA3OSwgMjA2LCA4NCwgODIsIDczLCA3MywgODMsIDY1LCA4MCwgMTI4LCAKLSAgICA4NCwgODIsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAyMTEsIDg0LCA4MiwgNzMsIDcxLCA4MiwgNjUsIDIwNSwgODQsIAotICAgIDgyLCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAKLSAgICAxMjgsIDg0LCA4MiwgNzMsIDcwLCA3OSwgNzYsIDczLCA2NSwgODQsIDE5NywgODQsIDgyLCA3MywgNjgsIDY5LCA3OCwgODQsIAotICAgIDEyOCwgODQsIDgyLCA3MywgNjgsIDY5LCA3OCwgMjEyLCA4NCwgODIsIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgCi0gICAgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgMjEwLCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIAotICAgIDQ1LCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDQ1LCA3MiwgNjksIDY1LCAKLSAgICA2OCwgNjksIDE5NiwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIAotICAgIDc2LCAxOTcsIDg0LCA4MiwgNzMsIDY1LCAxMjgsIDg0LCA4MiwgNzMsIDEyOCwgODQsIDgyLCA2OSwgODMsIDczLCA3NiwgCi0gICAgNzYsIDc5LCAxMjgsIDg0LCA4MiwgNjksIDc4LCA2OCwgMTI4LCA4NCwgODIsIDY5LCA3OCwgMTk2LCA4NCwgODIsIDY5LCAKLSAgICA3NywgNzksIDc2LCA3OSwgNDUsIDUxLCAxMjgsIDg0LCA4MiwgNjksIDc3LCA3OSwgNzYsIDc5LCA0NSwgNTAsIDEyOCwgODQsIAotICAgIDgyLCA2OSwgNzcsIDc5LCA3NiwgNzksIDQ1LCA0OSwgMTI4LCA4NCwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODIsIDY5LCAKLSAgICAxOTcsIDg0LCA4MiwgNjksIDY1LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA4NCwgODIsIDY1LCA4OSwgMTI4LCA4NCwgODIsIAotICAgIDY1LCA4MCwgNjksIDkwLCA3MywgODUsIDc3LCAxMjgsIDg0LCA4MiwgNjUsIDc4LCA4MywgODYsIDY5LCA4MiwgODMsIDY1LCAKLSAgICAyMDQsIDg0LCA4MiwgNjUsIDc4LCA4MywgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgODQsIDgyLCA2NSwgNzgsIAorICAgIDgzLCA2NSwgMTI4LCA4NCwgODQsIDc5LCA3OSwgMTI4LCA4NCwgODQsIDczLCA3MywgMTI4LCA4NCwgODQsIDczLCAxMjgsIAorICAgIDg0LCA4NCwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA4NSwgMTI4LCA4NCwgODQsIDcyLCA3OSwgNzksIDEyOCwgCisgICAgODQsIDg0LCA3MiwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzMsIDEyOCwgODQsIDg0LCA3MiwgNjksIDY5LCAxMjgsIDg0LCAKKyAgICA4NCwgNzIsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY1LCA2NSwgMTI4LCA4NCwgODQsIDcyLCAxMjgsIDg0LCA4NCwgNjksIAorICAgIDcyLCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCAyMDAsIDg0LCA4NCwgNjksIDcyLCAxMjgsIDg0LCA4NCwgCisgICAgNjksIDIwMCwgODQsIDg0LCA2OSwgNjksIDEyOCwgODQsIDg0LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCAKKyAgICA4NCwgNjUsIDg1LCAxMjgsIDg0LCA4NCwgNjUsIDczLCAxMjgsIDg0LCA4NCwgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNTAsIAorICAgIDEyOCwgODQsIDgzLCA4NywgNjksIDEyOCwgODQsIDgzLCA4NywgNjUsIDEyOCwgODQsIDgzLCA4NiwgMTI4LCA4NCwgODMsIAorICAgIDgzLCA2OSwgMTI4LCA4NCwgODMsIDgzLCA2NSwgMTI4LCA4NCwgODMsIDcyLCA4NSwgNzEsIDgzLCAxMjgsIDg0LCA4MywgCisgICAgNzIsIDc5LCA3OSwgNzUsIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCAyMDMsIDg0LCA4MywgNzIsIDY5LCA4MywgMTI4LCAKKyAgICA4NCwgODMsIDcyLCA2OSwgNzEsIDEyOCwgODQsIDgzLCA3MiwgNjksIDE5OSwgODQsIDgzLCA3MiwgNjksIDEyOCwgODQsIAorICAgIDgzLCA3MiwgNjUsIDEyOCwgODQsIDgzLCA2OSwgODIsIDY5LCAxMjgsIDg0LCA4MywgNjUsIDY4LCA3MywgMTI4LCA4NCwgCisgICAgODMsIDY1LCA2OCwgMjAxLCA4NCwgODMsIDY1LCA2NSwgNjgsIDczLCA4OSwgMTI4LCA4NCwgODMsIDY1LCA2NSwgMTI4LCAKKyAgICA4NCwgODMsIDE5MywgODQsIDgyLCA4OSwgNjYsIDc2LCA3MywgNzksIDIwNiwgODQsIDgyLCA4NSwgODQsIDcyLCAxMjgsIAorICAgIDg0LCA4MiwgODUsIDc4LCA3NSwgMTI4LCA4NCwgODIsIDg1LCA3OCwgNjcsIDY1LCA4NCwgNjksIDE5NiwgODQsIDgyLCA4NSwgCisgICAgNzcsIDgwLCA2OSwgODQsIDEyOCwgODQsIDgyLCA4NSwgNjksIDEyOCwgODQsIDgyLCA4NSwgNjcsIDc1LCAxMjgsIDg0LCAKKyAgICA4MiwgNzksIDgwLCA3MywgNjcsIDY1LCAyMDQsIDg0LCA4MiwgNzksIDgwLCA3MiwgODksIDEyOCwgODQsIDgyLCA3OSwgNzcsIAorICAgIDczLCA3NSwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCAKKyAgICA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgCisgICAgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIAorICAgIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCAyMDYsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA3NiwgCisgICAgODksIDcxLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NiwgNzYsIDY5LCA4OSwgNjYsIDg1LCA4MywgMTI4LCAKKyAgICA4NCwgODIsIDc5LCA3NSwgODUsIDg0LCA2NSwgODMsIDg0LCAyMDEsIDg0LCA4MiwgNzksIDY5LCA5MCwgNjksIDc4LCA3MywgCisgICAgNjUsIDIwNiwgODQsIDgyLCA3MywgODUsIDc3LCA4MCwgNzIsIDEyOCwgODQsIDgyLCA3MywgODQsIDc5LCAyMTEsIDg0LCAKKyAgICA4MiwgNzMsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDczLCA4MywgNzMsIDc3LCA3OSwgCisgICAgODUsIDEyOCwgODQsIDgyLCA3MywgODMsIDY5LCA3NywgNjksIDEyOCwgODQsIDgyLCA3MywgODAsIDc5LCA2OCwgMTI4LCAKKyAgICA4NCwgODIsIDczLCA4MCwgNzYsIDczLCAxMjgsIDg0LCA4MiwgNzMsIDgwLCA3NiwgMTk3LCA4NCwgODIsIDczLCA3OSwgCisgICAgMjA2LCA4NCwgODIsIDczLCA3MywgODMsIDY1LCA4MCwgMTI4LCA4NCwgODIsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAKKyAgICAyMTEsIDg0LCA4MiwgNzMsIDcxLCA4MiwgNjUsIDIwNSwgODQsIDgyLCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCA3OCwgCisgICAgMTI4LCA4NCwgODIsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDg0LCA4MiwgNzMsIDcwLCA3OSwgNzYsIDczLCAKKyAgICA2NSwgODQsIDE5NywgODQsIDgyLCA3MywgNjgsIDY5LCA3OCwgODQsIDEyOCwgODQsIDgyLCA3MywgNjgsIDY5LCA3OCwgCisgICAgMjEyLCA4NCwgODIsIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCAKKyAgICA2NSwgMjEwLCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4NCwgODIsIAorICAgIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgODQsIDgyLCA3MywgNjUsIDc4LCAKKyAgICA3MSwgNzYsIDY5LCAxMjgsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDc2LCAxOTcsIDg0LCA4MiwgNzMsIDY1LCAxMjgsIAorICAgIDg0LCA4MiwgNzMsIDEyOCwgODQsIDgyLCA2OSwgODMsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDg0LCA4MiwgNjksIDc4LCA2OCwgCisgICAgMTI4LCA4NCwgODIsIDY5LCA3OCwgMTk2LCA4NCwgODIsIDY5LCA3NywgNzksIDc2LCA3OSwgNDUsIDUxLCAxMjgsIDg0LCAKKyAgICA4MiwgNjksIDc3LCA3OSwgNzYsIDc5LCA0NSwgNTAsIDEyOCwgODQsIDgyLCA2OSwgNzcsIDc5LCA3NiwgNzksIDQ1LCA0OSwgCisgICAgMTI4LCA4NCwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODIsIDY5LCAxOTcsIDg0LCA4MiwgNjksIDY1LCA2OCwgNzMsIDc4LCAKKyAgICA3MSwgMTI4LCA4NCwgODIsIDY1LCA4OSwgMTI4LCA4NCwgODIsIDY1LCA4MCwgNjksIDkwLCA3MywgODUsIDc3LCAxMjgsIAorICAgIDg0LCA4MiwgNjUsIDc4LCA4MywgODYsIDY5LCA4MiwgODMsIDY1LCAyMDQsIDg0LCA4MiwgNjUsIDc4LCA4MywgODAsIDc5LCAKKyAgICA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgODQsIDgyLCA2NSwgNzgsIDgzLCA3NywgNzMsIDIxMiwgODQsIDgyLCA2NSwgNzgsIAogICAgIDgzLCA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDY1LCA3OCwgODMsIDc3LCA3MywgODMsIDgzLCAKICAgICA3MywgNzksIDIwNiwgODQsIDgyLCA2NSwgNzcsIDg3LCA2NSwgODksIDEyOCwgODQsIDgyLCA2NSwgNzcsIDEyOCwgODQsIAogICAgIDgyLCA2NSwgMjA1LCA4NCwgODIsIDY1LCA3MywgNzgsIDEyOCwgODQsIDgyLCA2NSwgNzMsIDIwNiwgODQsIDgyLCA2NSwgCkBAIC00OTMsMTYgKzU4OSwxNyBAQAogICAgIDc5LCA4MiwgNjcsIDg1LCA3NiwgODUsIDIxMSwgODQsIDc5LCA4MiwgNjcsIDcyLCAxMjgsIDg0LCA3OSwgODEsIDEyOCwgCiAgICAgODQsIDc5LCA4MCwgNjYsIDY1LCA4MiwgMTI4LCA4NCwgNzksIDgwLCA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCAKICAgICA4NCwgNzksIDgwLCAxMjgsIDg0LCA3OSwgMjA4LCA4NCwgNzksIDc5LCA4NCwgNzIsIDEyOCwgODQsIDc5LCA3OSwgNzgsIAotICAgIDEyOCwgODQsIDc5LCA3OSwgMTI4LCA4NCwgNzksIDc4LCA3OSwgODMsIDEyOCwgODQsIDc5LCA3OCwgNzEsIDg1LCA2OSwgCi0gICAgMTI4LCA4NCwgNzksIDc4LCA3MSwgODUsIDE5NywgODQsIDc5LCA3OCwgNzEsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCAKLSAgICA1NCwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDUzLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTIsIDEyOCwgODQsIAotICAgIDc5LCA3OCwgNjksIDQ1LCA1MSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDUwLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgCi0gICAgNDksIDEyOCwgODQsIDc5LCA3OCwgNjksIDEyOCwgODQsIDc5LCA3OCwgNjUsIDIwNCwgODQsIDc5LCA3NywgODAsIDczLCAKLSAgICAxMjgsIDg0LCA3OSwgNzcsIDY1LCA4NCwgNzksIDEyOCwgODQsIDc5LCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzksIAotICAgIDc1LCA4OSwgMjA3LCA4NCwgNzksIDczLCA3NiwgNjksIDg0LCAxMjgsIDg0LCA3OSwgNzEsIDY5LCA4NCwgNzIsIDY5LCA4MiwgCi0gICAgMTI4LCA4NCwgNzksIDY4LCAyMDcsIDg0LCA3OSwgNjUsIDc4LCA2OCwgNjUsIDc1LCA3MiwgNzMsIDY1LCA4NCwgMTI4LCAKLSAgICA4NCwgNzksIDY1LCAxMjgsIDg0LCA3OCwgMTI4LCA4NCwgNzYsIDg2LCAxMjgsIDg0LCA3NiwgODUsIDEyOCwgODQsIDc2LCAKLSAgICA3OSwgMTI4LCA4NCwgNzYsIDczLCAxMjgsIDg0LCA3NiwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgNzYsIDcyLCA4NSwgMTI4LCAKKyAgICAxMjgsIDg0LCA3OSwgNzgsIDc5LCA4MywgMTI4LCA4NCwgNzksIDc4LCA3MSwgODUsIDY5LCAxMjgsIDg0LCA3OSwgNzgsIAorICAgIDcxLCA4NSwgMTk3LCA4NCwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDU2LCAxMjgsIDg0LCA3OSwgCisgICAgNzgsIDY5LCA0NSwgNTUsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1NCwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDUzLCAKKyAgICAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTIsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MSwgMTI4LCA4NCwgNzksIAorICAgIDc4LCA2OSwgNDUsIDUwLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNDksIDEyOCwgODQsIDc5LCA3OCwgNjksIDEyOCwgCisgICAgODQsIDc5LCA3OCwgNjUsIDIwNCwgODQsIDc5LCA3NywgODAsIDczLCAxMjgsIDg0LCA3OSwgNzcsIDY1LCA4NCwgNzksIAorICAgIDEyOCwgODQsIDc5LCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzksIDc1LCA4OSwgMjA3LCA4NCwgNzksIDczLCA3NiwgCisgICAgNjksIDg0LCAxMjgsIDg0LCA3OSwgNzEsIDY5LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA4NCwgNzksIDY4LCAyMDcsIDg0LCAKKyAgICA3OSwgNjUsIDc4LCA2OCwgNjUsIDc1LCA3MiwgNzMsIDY1LCA4NCwgMTI4LCA4NCwgNzksIDY1LCAxMjgsIDg0LCA3OCwgCisgICAgMTI4LCA4NCwgNzYsIDg2LCAxMjgsIDg0LCA3NiwgODUsIDEyOCwgODQsIDc2LCA3OSwgMTI4LCA4NCwgNzYsIDczLCAxMjgsIAorICAgIDg0LCA3NiwgNzIsIDg5LCA2NSwgMTI4LCA4NCwgNzYsIDcyLCA4NywgNjksIDEyOCwgODQsIDc2LCA3MiwgODUsIDEyOCwgCiAgICAgODQsIDc2LCA3MiwgNzksIDc5LCAxMjgsIDg0LCA3NiwgNzIsIDc5LCAxMjgsIDg0LCA3NiwgNzIsIDczLCAxMjgsIDg0LCAKICAgICA3NiwgNzIsIDY5LCA2OSwgMTI4LCA4NCwgNzYsIDcyLCA2OSwgMTI4LCA4NCwgNzYsIDcyLCA2NSwgMTI4LCA4NCwgNzYsIAogICAgIDY5LCA2OSwgMTI4LCA4NCwgNzYsIDY1LCAxMjgsIDg0LCA3NCwgNjksIDEyOCwgODQsIDczLCA4OCwgMTI4LCA4NCwgNzMsIApAQCAtNTEzLDEyMSArNjEwLDEyMyBAQAogICAgIDg0LCA3MywgODAsIDY5LCA3MiwgNjUsIDEyOCwgODQsIDczLCA4MCwgMTI4LCA4NCwgNzMsIDIwOCwgODQsIDczLCA3OCwgCiAgICAgODksIDEyOCwgODQsIDczLCA3OCwgMjE3LCA4NCwgNzMsIDc4LCA3OCwgNjksIDEyOCwgODQsIDczLCA3OCwgNjcsIDg0LCAKICAgICA4NSwgODIsIDY5LCAxMjgsIDg0LCA3MywgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDg0LCA3MywgNzcsIDY5LCA4MywgCi0gICAgMTI4LCA4NCwgNzMsIDc3LCA2OSwgMjEwLCA4NCwgNzMsIDc3LCA2OSwgMTI4LCA4NCwgNzMsIDc2LCA2OCwgNjksIDEyOCwgCi0gICAgODQsIDczLCA3NiwgNjgsIDE5NywgODQsIDczLCA3NiwgMTI4LCA4NCwgNzMsIDIwNCwgODQsIDczLCA3NSwgNjksIDg1LCAKLSAgICA4NCwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MywgCi0gICAgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIAotICAgIDgzLCA3MywgNzksIDgzLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgCi0gICAgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIAotICAgIDg0LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA3NSwgNzMsIDg5LCAKLSAgICA2OSwgNzksIDc1LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODQsIAotICAgIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDg0LCA3MywgNzUsIDY5LCAKLSAgICA4NSwgODQsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCAyMTIsIDg0LCA3MywgNzMsIDEyOCwgODQsIDczLCA3MSwgNzIsIAotICAgIDg0LCA3NiwgODksIDQ1LCA2NywgNzYsIDc5LCA4MywgNjksIDE5NiwgODQsIDczLCA3MSwgNzIsIDIxMiwgODQsIDczLCA3MSwgCi0gICAgNjksIDgyLCAxMjgsIDg0LCA3MywgNzEsIDY5LCAyMTAsIDg0LCA3MywgNzAsIDczLCA3OCwgNjUsIDcxLCAyMDAsIDg0LCAKLSAgICA3MywgNjksIDg4LCAxMjgsIDg0LCA3MywgNjksIDgwLCAxMjgsIDg0LCA3MywgMTk3LCA4NCwgNzMsIDY3LCA3NSwgNjksIAotICAgIDg0LCAxMjgsIDg0LCA3MywgNjcsIDc1LCAxMjgsIDg0LCA3MywgNjcsIDIwMywgODQsIDczLCA2NSwgODIsIDY1LCAxMjgsIAotICAgIDg0LCA3MiwgOTAsIDEyOCwgODQsIDcyLCA4OSwgNzksIDc5LCAyMDUsIDg0LCA3MiwgODcsIDc5LCA3OSwgMTI4LCA4NCwgCi0gICAgNzIsIDg3LCA3OSwgMTI4LCA4NCwgNzIsIDg3LCA3MywgNzMsIDEyOCwgODQsIDcyLCA4NywgNzMsIDEyOCwgODQsIDcyLCAKLSAgICA4NywgNjksIDY5LCAxMjgsIDg0LCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4NCwgNzIsIDg3LCA2NSwgMTI4LCA4NCwgNzIsIAotICAgIDg1LCA4MiwgMjExLCA4NCwgNzIsIDg1LCA4MiwgNzMsIDgzLCA2NSwgMjE4LCA4NCwgNzIsIDg1LCA3OCwgNzEsIDEyOCwgCi0gICAgODQsIDcyLCA4NSwgNzgsIDY4LCA2OSwgODIsIDgzLCA4NCwgNzksIDgyLCA3NywgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIAotICAgIDY5LCA4MiwgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCAyMTAsIDg0LCA3MiwgODUsIDc3LCA2NiwgMjExLCA4NCwgCi0gICAgNzIsIDgyLCA3OSwgODcsIDczLCA3OCwgMTk5LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCA4NCwgNzIsIDgyLCAKLSAgICA3OSwgODUsIDcxLCAyMDAsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIAotICAgIDcyLCA4MiwgNjksIDY5LCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDc2LCAKLSAgICA3MywgNzgsIDE5NywgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgMTk2LCA4NCwgNzIsIDgyLCA2OSwgNjUsIDY4LCAxMjgsIAotICAgIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCA2OCwgMjExLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgNjgsIDEyOCwgCi0gICAgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDE5NiwgODQsIDcyLCA3OSwgODUsIDcxLCA3MiwgMjEyLCA4NCwgNzIsIDc5LCAKLSAgICA4NSwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgNzgsIDEyOCwgODQsIDcyLCA3OSwgODIsIDIwNiwgODQsIDcyLCA3OSwgNzgsIAotICAgIDcxLCAxMjgsIDg0LCA3MiwgNzksIDY1LCAxMjgsIDg0LCA3MiwgMjA3LCA4NCwgNzIsIDczLCA4NSwgODQsIDcyLCAxMjgsIAotICAgIDg0LCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCA0NSwgODMsIDY5LCA2NywgNzksIDc4LCAKLSAgICAxOTYsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgCi0gICAgMjE3LCA4NCwgNzIsIDczLCA4MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCA2OSwgNjksIAotICAgIDIwNiwgODQsIDcyLCA3MywgODIsIDY4LCA4MywgMTI4LCA4NCwgNzIsIDczLCA4MiwgNjgsIDIxMSwgODQsIDcyLCA3MywgCi0gICAgODIsIDY4LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCAxOTYsIDg0LCA3MiwgNzMsIDIwNiwgODQsIDcyLCA3MywgNzMsIDEyOCwgCi0gICAgODQsIDcyLCA3MywgNzEsIDcyLCAxMjgsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDIwMCwgODQsIDcyLCA2OSwgODksIAotICAgIDEyOCwgODQsIDcyLCA2OSwgODQsIDcyLCA2OSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA2OSwgCi0gICAgODQsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDg0LCAxOTMsIDg0LCA3MiwgNjksIDgzLCA4MCwgNzMsIDY1LCAyMDYsIDg0LCAKLSAgICA3MiwgNjksIDgzLCA2OSwgNzksIDgzLCAxMjgsIDg0LCA3MiwgNjksIDgzLCA2OSwgNzksIDIxMSwgODQsIDcyLCA2OSwgCi0gICAgMjExLCA4NCwgNzIsIDY5LCA4MiwgNzcsIDc5LCA2OCwgODksIDc4LCA2NSwgNzcsIDczLCA2NywgMTI4LCA4NCwgNzIsIDY5LCAKLSAgICA4MiwgNjksIDcwLCA3OSwgODIsIDY5LCAxMjgsIDg0LCA3MiwgNjksIDgyLCAxOTcsIDg0LCA3MiwgNjksIDIwNiwgODQsIAotICAgIDcyLCA2OSwgNzcsIDY1LCA4NCwgNzMsIDgzLCA3NywgNzksIDIxMSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDg0LCA3MiwgCi0gICAgNjksIDc3LCAxOTMsIDg0LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA3MiwgNjksIDIwMCwgODQsIDcyLCAxOTcsIDg0LCA3MiwgCi0gICAgNjUsIDg3LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCA4NCwgNzIsIDY1LCA3NSwgNzIsIDY1LCA4NCwgMTI4LCA4NCwgNzIsIDY1LCAKLSAgICA3OCwgNzgsIDY1LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDIwNiwgODQsIDcyLCA2NSwgNzYsIAotICAgIDEyOCwgODQsIDcyLCA2NSwgMjA0LCA4NCwgNzIsIDY1LCA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDY1LCA3OCwgCi0gICAgMTkzLCA4NCwgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIDg0LCA3MiwgNDUsIDY3LCA4MiwgNjksIDE5NywgODQsIDY5LCAKLSAgICA4OCwgODQsIDEyOCwgODQsIDY5LCA4OCwgMTI4LCA4NCwgNjksIDg2LCA3MywgODIsIDEyOCwgODQsIDY5LCA4NSwgODQsIAotICAgIDY5LCA4NSwgODgsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCA4NSwgODcsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgCi0gICAgMTI4LCA4NCwgNjksIDg1LCA3OCwgMTI4LCA4NCwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDg0LCA2OSwgODUsIDY1LCAKLSAgICA2OSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgzLCA3MywgNzcsIDc5LCA4NSwgCi0gICAgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODAsIDc2LCAKLSAgICA3MywgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgODQsIDY5LCA4NCwgNzIsIAotICAgIDEyOCwgODQsIDY5LCA4NCwgMjAwLCA4NCwgNjksIDg0LCA2NSwgODIsIDg0LCA3OSwgMjExLCA4NCwgNjksIDg0LCA2NSwgCi0gICAgODIsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjksIDg0LCAxMjgsIDg0LCA2OSwgMjEyLCAKLSAgICA4NCwgNjksIDgzLCA4MywgNjksIDgyLCA2NSwgMTI4LCA4NCwgNjksIDgzLCA4MywgNjksIDgyLCAxOTMsIDg0LCA2OSwgODMsIAotICAgIDgzLCA2NSwgODIsIDc5LCAyMDYsIDg0LCA2OSwgODMsIDIwMCwgODQsIDY5LCA4MiwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgCi0gICAgODIsIDEyOCwgODQsIDY5LCA4MCwgMTI4LCA4NCwgNjksIDc4LCA4NSwgODQsIDc5LCAxMjgsIDg0LCA2OSwgNzgsIDg1LCAKLSAgICAxMjgsIDg0LCA2OSwgNzgsIDIxMywgODQsIDY5LCA3OCwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNzgsIDg0LCAxMjgsIDg0LCAKLSAgICA2OSwgNzgsIDIxMSwgODQsIDY5LCA3OCwgNzgsIDczLCAyMTEsIDg0LCA2OSwgNzgsIDcxLCAxOTcsIDg0LCA2OSwgNzgsIAotICAgIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDg0LCA2OSwgNzgsIDEyOCwgODQsIDY5LCAyMDYsIDg0LCA2OSwgCi0gICAgNzcsIDgwLCA4NSwgMjExLCA4NCwgNjksIDc2LCA4NSwgMTI4LCA4NCwgNjksIDc2LCA3OSwgODUsIDIxMSwgODQsIDY5LCAKLSAgICA3NiwgNzYsIDY5LCAyMTAsIDg0LCA2OSwgNzYsIDczLCA4MywgNzIsIDE5MywgODQsIDY5LCA3NiwgNjksIDg2LCA3MywgODMsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgODQsIDY5LCA3NiwgNjksIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgCi0gICAgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgMTk3LCA4NCwgNjksIDc2LCAKLSAgICA2OSwgNzMsIDY1LCAxMjgsIDg0LCA2OSwgNzMsIDg3LCA4MywgMTI4LCA4NCwgNjksIDcxLCA2OSwgNzIsIDEyOCwgODQsIAotICAgIDY5LCA2OSwgNjksIDY5LCAxMjgsIDg0LCA2OSwgMTk3LCA4NCwgNjksIDY4LCA4NSwgNzgsIDcxLCAxMjgsIDg0LCA2OSwgCi0gICAgNjUsIDgyLCAyMTEsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCAKLSAgICA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCA3OCwgNzUsIDY5LCAxOTYsIDg0LCA2OSwgCi0gICAgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDY2LCA2NSwgODIsIDY2LCA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNDUsIAotICAgIDc5LCA3MCwgMTk4LCA4NCwgNjksIDY1LCA2NywgODUsIDIwOCwgODQsIDY5LCA0NSwgODUsIDEyOCwgODQsIDY3LCA3MiwgCi0gICAgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgNjksIDcyLCA2OSwgMjAwLCA4NCwgNjcsIDcyLCA2OSwgNzIsIAotICAgIDEyOCwgODQsIDY3LCA3MiwgNjksIDIwMCwgODQsIDY3LCA3MiwgNjksIDEyOCwgODQsIDE5NSwgODQsIDY1LCA4OSwgMTI4LCAKLSAgICA4NCwgNjUsIDg4LCA3MywgMTI4LCA4NCwgNjUsIDg4LCAxMjgsIDg0LCA2NSwgODcsIDY5LCA3NiwgNzYsIDY5LCA3NywgNjksIAotICAgIDIxMiwgODQsIDY1LCA4NywgNjUsIDEyOCwgODQsIDY1LCA4NywgMTI4LCA4NCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgCi0gICAgNzMsIDEyOCwgODQsIDY1LCA4NiwgMTI4LCA4NCwgNjUsIDIxNCwgODQsIDY1LCA4NSwgODIsIDg1LCA4MywgMTI4LCA4NCwgCi0gICAgNjUsIDg1LCAxMjgsIDg0LCA2NSwgMjEzLCA4NCwgNjUsIDg0LCA4NywgNjksIDY5LCA3NiwgMTI4LCA4NCwgNjUsIDg0LCAKLSAgICA4NywgNjksIDY5LCAyMDQsIDg0LCA2NSwgODQsIDg0LCA3OSwgNzksIDY5LCAxOTYsIDg0LCA2NSwgODQsIDEyOCwgODQsIAotICAgIDY1LCA4MiwgODUsIDc4LCA3MSwgMTI4LCA4NCwgNjUsIDgyLCA4NCwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgODQsIDY1LCA4MiwgCi0gICAgODQsIDY1LCA4MiwgMTI4LCA4NCwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgODAsIDY5LCA4MiwgMTI4LCA4NCwgNjUsIDgwLCAKLSAgICAxOTcsIDg0LCA2NSwgODAsIDEyOCwgODQsIDY1LCA3OSwgMTI4LCA4NCwgNjUsIDc4LCA3OCwgNjksIDE5NiwgODQsIDY1LCAKLSAgICA3OCwgNzEsIDY5LCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgNjUsIDc4LCAxOTksIDg0LCA2NSwgNzgsIDY1LCA2NiwgNjUsIAotICAgIDg0LCAxOTMsIDg0LCA2NSwgNzgsIDEyOCwgODQsIDY1LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA4NCwgNjUsIDc3LCAxMjgsIAotICAgIDg0LCA2NSwgNzYsIDc2LCAxMjgsIDg0LCA2NSwgNzYsIDIwNCwgODQsIDY1LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4NCwgCi0gICAgNjUsIDc2LCA3MywgNzgsIDE5OSwgODQsIDY1LCA3NiwgNjksIDc4LCA4NCwgODMsIDEyOCwgODQsIDY1LCA3NiwgNjksIDc4LCAKLSAgICAyMTIsIDg0LCA2NSwgNzUsIDcyLCA2NSwgNzYsIDc2LCA4NSwgODMsIDEyOCwgODQsIDY1LCA3NSwgNjksIDEyOCwgODQsIAotICAgIDY1LCA3NSwgNTIsIDEyOCwgODQsIDY1LCA3NSwgMTI4LCA4NCwgNjUsIDczLCA4MywgODksIDc5LCA4NSwgMTI4LCA4NCwgCi0gICAgNjUsIDczLCA3NiwgNzYsIDY5LCA4MywgMjExLCA4NCwgNjUsIDczLCA3NiwgMTI4LCA4NCwgNjUsIDczLCAyMDQsIDg0LCAKLSAgICA2NSwgNzIsIDEyOCwgODQsIDY1LCAyMDAsIDg0LCA2NSwgNzEsIDY2LCA2NSwgNzgsIDg3LCAxOTMsIDg0LCA2NSwgNzEsIAotICAgIDY1LCA3NiwgNzksIDE5OSwgODQsIDY1LCA3MSwgMTI4LCA4NCwgNjUsIDY5LCAyMDYsIDg0LCA2NSwgNjcsIDc1LCAxMjgsIAotICAgIDg0LCA2NSwgNjcsIDIwMywgODQsIDY1LCA2NiwgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODQsIDY1LCA2NiwgCi0gICAgODMsIDEyOCwgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDg0LCA2NSwgNjYsIDEyOCwgODQsIDY1LCAxOTQsIDg0LCA2NSwgCi0gICAgNjUsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDg0LCA2NSwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgNjUsIDc3LCAxMjgsIDg0LCAKLSAgICA2NSwgNjUsIDc2LCA4NSwgNzQsIDE5MywgODQsIDY1LCA2NSwgNzMsIDEyOCwgODQsIDY1LCA2NSwgNzAsIDEyOCwgODQsIAotICAgIDY1LCA1MCwgMTI4LCA4NCwgNjUsIDQ1LCA4MiwgNzksIDc2LCAxMjgsIDg0LCA0OCwgNTEsIDU0LCAxMjgsIDg0LCA0OCwgCi0gICAgNTEsIDUzLCAxMjgsIDg0LCA0OCwgNTEsIDUyLCAxMjgsIDg0LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA4NCwgNDgsIDUxLCAKLSAgICA1MSwgMTI4LCA4NCwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgODQsIDQ4LCA1MSwgNTAsIDEyOCwgODQsIDQ4LCA1MSwgNDksIAotICAgIDEyOCwgODQsIDQ4LCA1MSwgNDgsIDEyOCwgODQsIDQ4LCA1MCwgNTcsIDEyOCwgODQsIDQ4LCA1MCwgNTYsIDEyOCwgODQsIAotICAgIDQ4LCA1MCwgNTUsIDEyOCwgODQsIDQ4LCA1MCwgNTQsIDEyOCwgODQsIDQ4LCA1MCwgNTMsIDEyOCwgODQsIDQ4LCA1MCwgCi0gICAgNTIsIDEyOCwgODQsIDQ4LCA1MCwgNTEsIDEyOCwgODQsIDQ4LCA1MCwgNTAsIDEyOCwgODQsIDQ4LCA1MCwgNDksIDEyOCwgCi0gICAgODQsIDQ4LCA1MCwgNDgsIDEyOCwgODQsIDQ4LCA0OSwgNTcsIDEyOCwgODQsIDQ4LCA0OSwgNTYsIDEyOCwgODQsIDQ4LCAKLSAgICA0OSwgNTUsIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDg0LCA0OCwgNDksIDU0LCAxMjgsIDg0LCA0OCwgNDksIAotICAgIDUzLCAxMjgsIDg0LCA0OCwgNDksIDUyLCAxMjgsIDg0LCA0OCwgNDksIDUxLCAxMjgsIDg0LCA0OCwgNDksIDUwLCAxMjgsIAotICAgIDg0LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgMTI4LCA4NCwgNDgsIDQ5LCA0OCwgMTI4LCA4NCwgCi0gICAgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTcsIDEyOCwgODQsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDg0LCAKLSAgICA0OCwgNDgsIDU2LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgMTI4LCA4NCwgNDgsIAotICAgIDQ4LCA1NCwgMTI4LCA4NCwgNDgsIDQ4LCA1MywgMTI4LCA4NCwgNDgsIDQ4LCA1MiwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgCi0gICAgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDEyOCwgODQsIDQ4LCA0OCwgNTAsIDEyOCwgODQsIDQ4LCA0OCwgNDksIDEyOCwgCi0gICAgODQsIDQ1LCA4MywgNzIsIDczLCA4MiwgODQsIDEyOCwgODMsIDkwLCA5MCwgMTI4LCA4MywgOTAsIDg3LCA3MSwgMTI4LCAKLSAgICA4MywgOTAsIDg3LCA2NSwgMTI4LCA4MywgOTAsIDg1LCAxMjgsIDgzLCA5MCwgNzksIDEyOCwgODMsIDkwLCA3MywgMTI4LCAKLSAgICA4MywgOTAsIDY5LCA2OSwgMTI4LCA4MywgOTAsIDY5LCAxMjgsIDgzLCA5MCwgNjUsIDY1LCAxMjgsIDgzLCA5MCwgNjUsIAotICAgIDEyOCwgODMsIDkwLCAxMjgsIDgzLCA4OSwgODgsIDEyOCwgODMsIDg5LCA4NCwgMTI4LCA4MywgODksIDgyLCA4OCwgMTI4LCAKLSAgICA4MywgODksIDgyLCA3NywgNjUsIDg0LCA3MywgNzUsIDczLCAxMjgsIDgzLCA4OSwgODIsIDc3LCA2NSwgMTI4LCA4MywgODksIAotICAgIDgyLCA3MywgNzgsIDcxLCA2OSwgMTI4LCA4MywgODksIDgyLCAxMjgsIDgzLCA4OSwgODAsIDEyOCwgODMsIDg5LCA3OSwgCi0gICAgODUsIDg3LCA2NSwgMTI4LCA4MywgODksIDc4LCA2OSwgODYsIDc3LCA2NSwgMTI4LCA4MywgODksIDc4LCA2OCwgNjksIDgzLCAKLSAgICA3NywgNzksIDIxMSwgODMsIDg5LCA3OCwgNjcsIDcyLCA4MiwgNzksIDc4LCA3OSwgODUsIDIxMSwgODMsIDg5LCA3OCwgNjUsIAotICAgIDcxLCA3NywgMTkzLCA4MywgODksIDc4LCA2NSwgNzAsIDczLCAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgODQsIDgyLCA4OSwgCisgICAgMTI4LCA4NCwgNzMsIDc3LCA2OSwgMjEwLCA4NCwgNzMsIDc3LCA2OSwgMTI4LCA4NCwgNzMsIDc2LCA2OCwgMTk3LCA4NCwgCisgICAgNzMsIDc2LCAxMjgsIDg0LCA3MywgMjA0LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCAKKyAgICA4NCwgNzIsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgCisgICAgNjksIDc5LCA3NSwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODQsIDczLCAKKyAgICA3NSwgNjksIDg1LCA4NCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgCisgICAgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIAorICAgIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODQsIDczLCA3NSwgCisgICAgNjksIDg1LCA4NCwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNjcsIAorICAgIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgCisgICAgODUsIDIxMiwgODQsIDczLCA3MSwgNzIsIDg0LCA3NiwgODksIDQ1LCA2NywgNzYsIDc5LCA4MywgNjksIDE5NiwgODQsIDczLCAKKyAgICA3MSwgNzIsIDIxMiwgODQsIDczLCA3MSwgNjksIDgyLCAxMjgsIDg0LCA3MywgNzEsIDY5LCAyMTAsIDg0LCA3MywgNzAsIAorICAgIDczLCA3OCwgNjUsIDcxLCAyMDAsIDg0LCA3MywgNjksIDg4LCAxMjgsIDg0LCA3MywgNjksIDgwLCAxMjgsIDg0LCA3MywgCisgICAgMTk3LCA4NCwgNzMsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDg0LCA3MywgNjcsIDc1LCAxMjgsIDg0LCA3MywgNjcsIDIwMywgCisgICAgODQsIDczLCA2NSwgODIsIDY1LCAxMjgsIDg0LCA3MiwgOTAsIDEyOCwgODQsIDcyLCA4OSwgNzksIDc5LCAyMDUsIDg0LCAKKyAgICA3MiwgODcsIDc5LCA3OSwgMTI4LCA4NCwgNzIsIDg3LCA3OSwgMTI4LCA4NCwgNzIsIDg3LCA3MywgNzMsIDEyOCwgODQsIAorICAgIDcyLCA4NywgNzMsIDEyOCwgODQsIDcyLCA4NywgNjksIDY5LCAxMjgsIDg0LCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4NCwgCisgICAgNzIsIDg3LCA2NSwgMTI4LCA4NCwgNzIsIDg1LCA4MiwgMjExLCA4NCwgNzIsIDg1LCA4MiwgNzMsIDgzLCA2NSwgMjE4LCAKKyAgICA4NCwgNzIsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDcyLCA4NSwgNzgsIDY4LCA2OSwgODIsIDgzLCA4NCwgNzksIDgyLCA3NywgCisgICAgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCA4MiwgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCAyMTAsIDg0LCAKKyAgICA3MiwgODUsIDc3LCA2NiwgMjExLCA4NCwgNzIsIDgyLCA3OSwgODcsIDczLCA3OCwgMTk5LCA4NCwgNzIsIDgyLCA3OSwgODUsIAorICAgIDcxLCA3MiwgMTI4LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCAyMDAsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDg0LCA3MiwgCisgICAgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDg0LCAKKyAgICA3MiwgODIsIDY5LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgNjksIDIwNSwgODQsIAorICAgIDcyLCA4MiwgNjksIDY5LCA0NSwgMTk2LCA4NCwgNzIsIDgyLCA2OSwgNjUsIDY4LCAxMjgsIDg0LCA3MiwgNzksIDg1LCA4MywgCisgICAgNjUsIDc4LCA2OCwgMjExLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgNjgsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCAKKyAgICA2NSwgNzgsIDE5NiwgODQsIDcyLCA3OSwgODUsIDcxLCA3MiwgMjEyLCA4NCwgNzIsIDc5LCA4NSwgMTI4LCA4NCwgNzIsIAorICAgIDc5LCA4MiwgNzgsIDEyOCwgODQsIDcyLCA3OSwgODIsIDIwNiwgODQsIDcyLCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3MiwgCisgICAgNzksIDY1LCAxMjgsIDg0LCA3MiwgMjA3LCA4NCwgNzIsIDczLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA3MiwgNzMsIDg0LCAKKyAgICA2NSwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCA0NSwgODMsIDY5LCA2NywgNzksIDc4LCAxOTYsIDg0LCA3MiwgNzMsIAorICAgIDgyLCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgMjE3LCA4NCwgNzIsIDczLCA4MiwgCisgICAgODQsIDY5LCA2OSwgNzgsIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCA2OSwgNjksIDIwNiwgODQsIDcyLCA3MywgODIsIDY4LCAKKyAgICA4MywgMTI4LCA4NCwgNzIsIDczLCA4MiwgNjgsIDIxMSwgODQsIDcyLCA3MywgODIsIDY4LCAxMjgsIDg0LCA3MiwgNzMsIAorICAgIDgyLCAxOTYsIDg0LCA3MiwgNzMsIDIwNiwgODQsIDcyLCA3MywgNzMsIDEyOCwgODQsIDcyLCA3MywgNzEsIDcyLCAxMjgsIAorICAgIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDIwMCwgODQsIDcyLCA2OSwgODksIDEyOCwgODQsIDcyLCA2OSwgODQsIDcyLCA2OSwgCisgICAgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA2OSwgODQsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDg0LCAKKyAgICAxOTMsIDg0LCA3MiwgNjksIDgzLCA4MCwgNzMsIDY1LCAyMDYsIDg0LCA3MiwgNjksIDgzLCA2OSwgNzksIDgzLCAxMjgsIAorICAgIDg0LCA3MiwgNjksIDgzLCA2OSwgNzksIDIxMSwgODQsIDcyLCA2OSwgMjExLCA4NCwgNzIsIDY5LCA4MiwgNzcsIDc5LCA2OCwgCisgICAgODksIDc4LCA2NSwgNzcsIDczLCA2NywgMTI4LCA4NCwgNzIsIDY5LCA4MiwgNjksIDcwLCA3OSwgODIsIDY5LCAxMjgsIDg0LCAKKyAgICA3MiwgNjksIDgyLCAxOTcsIDg0LCA3MiwgNjksIDIwNiwgODQsIDcyLCA2OSwgNzcsIDY1LCA4NCwgNzMsIDgzLCA3NywgNzksIAorICAgIDIxMSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDc3LCAxOTMsIDg0LCA3MiwgNjksIDcyLCAxMjgsIAorICAgIDg0LCA3MiwgNjksIDIwMCwgODQsIDcyLCAxOTcsIDg0LCA3MiwgNjUsIDg3LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCA4NCwgCisgICAgNzIsIDY1LCA3NSwgNzIsIDY1LCA4NCwgMTI4LCA4NCwgNzIsIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCAKKyAgICAxMjgsIDg0LCA3MiwgNjUsIDIwNiwgODQsIDcyLCA2NSwgNzYsIDEyOCwgODQsIDcyLCA2NSwgMjA0LCA4NCwgNzIsIDY1LCAKKyAgICA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDY1LCA3OCwgMTkzLCA4NCwgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIAorICAgIDg0LCA3MiwgNDUsIDY3LCA4MiwgNjksIDE5NywgODQsIDY5LCA4OCwgODQsIDEyOCwgODQsIDY5LCA4OCwgMTI4LCA4NCwgCisgICAgNjksIDg2LCA3MywgODIsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCA4NSwgODgsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCAKKyAgICA4NSwgODcsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgMTI4LCA4NCwgNjksIDg1LCA3OCwgMTI4LCA4NCwgNjksIAorICAgIDg1LCA2NSwgNjksIDgxLCAxMjgsIDg0LCA2OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgMTI4LCA4NCwgCisgICAgNjksIDg0LCA4MiwgNjUsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgzLCA2OSwgNzcsIAorICAgIDY5LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODAsIDc2LCA3MywgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDcwLCA3OSwgCisgICAgNzgsIDczLCA2NSwgODMsIDEyOCwgODQsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA4NCwgMjAwLCA4NCwgNjksIDg0LCAKKyAgICA2NSwgODIsIDg0LCA3OSwgMjExLCA4NCwgNjksIDg0LCA2NSwgODIsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4NCwgNjksIDg0LCAxMjgsIDg0LCA2OSwgMjEyLCA4NCwgNjksIDgzLCA4MywgNjksIDgyLCA2NSwgMTI4LCA4NCwgCisgICAgNjksIDgzLCA4MywgNjksIDgyLCAxOTMsIDg0LCA2OSwgODMsIDgzLCA2NSwgODIsIDc5LCAyMDYsIDg0LCA2OSwgODMsIAorICAgIDIwMCwgODQsIDY5LCA4MiwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODQsIDY5LCA4MCwgMTI4LCA4NCwgCisgICAgNjksIDc4LCA4NSwgODQsIDc5LCAxMjgsIDg0LCA2OSwgNzgsIDg1LCAxMjgsIDg0LCA2OSwgNzgsIDIxMywgODQsIDY5LCAKKyAgICA3OCwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNzgsIDg0LCAxMjgsIDg0LCA2OSwgNzgsIDIxMSwgODQsIDY5LCA3OCwgNzgsIAorICAgIDczLCAyMTEsIDg0LCA2OSwgNzgsIDcxLCAxOTcsIDg0LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAKKyAgICAxMjgsIDg0LCA2OSwgNzgsIDEyOCwgODQsIDY5LCAyMDYsIDg0LCA2OSwgNzcsIDgwLCA4NSwgMjExLCA4NCwgNjksIDc2LCAKKyAgICA4NSwgMTI4LCA4NCwgNjksIDc2LCA3OSwgODUsIDIxMSwgODQsIDY5LCA3NiwgNzYsIDY5LCAyMTAsIDg0LCA2OSwgNzYsIAorICAgIDczLCA4MywgNzIsIDE5MywgODQsIDY5LCA3NiwgNjksIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODQsIDY5LCA3NiwgCisgICAgNjksIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDg0LCAKKyAgICA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgMTk3LCA4NCwgNjksIDc2LCA2OSwgNzMsIDY1LCAxMjgsIDg0LCA2OSwgNzYsIAorICAgIDY5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA4NCwgNjksIDczLCA4NywgODMsIDEyOCwgODQsIDY5LCA3MSwgNjksIDcyLCAKKyAgICAxMjgsIDg0LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA4NCwgNjksIDE5NywgODQsIDY5LCA2OCwgODUsIDc4LCA3MSwgMTI4LCAKKyAgICA4NCwgNjksIDY1LCA4MiwgMjExLCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgODAsIDc5LCA3NSwgCisgICAgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIDcyLCA2NSwgNzgsIDc1LCA2OSwgMTk2LCAKKyAgICA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA2NiwgNjUsIDgyLCA2NiwgNjksIDE5NiwgODQsIDY5LCA2NSwgCisgICAgODIsIDQ1LCA3OSwgNzAsIDE5OCwgODQsIDY5LCA2NSwgNjcsIDg1LCAyMDgsIDg0LCA2OSwgNDUsIDg1LCAxMjgsIDg0LCAKKyAgICA2OSwgNDUsIDUwLCAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIAorICAgIDIwMCwgODQsIDY3LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA2NywgNzIsIDY5LCAyMDAsIDg0LCA2NywgNzIsIDY5LCAxMjgsIAorICAgIDg0LCAxOTUsIDg0LCA2NSwgODksIDEyOCwgODQsIDY1LCA4OCwgNzMsIDEyOCwgODQsIDY1LCA4OCwgMTI4LCA4NCwgNjUsIAorICAgIDg3LCA2OSwgNzYsIDc2LCA2OSwgNzcsIDY5LCAyMTIsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDg0LCA2NSwgODcsIDEyOCwgCisgICAgODQsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDg0LCA2NSwgODYsIDEyOCwgODQsIDY1LCAyMTQsIDg0LCAKKyAgICA2NSwgODUsIDgyLCA4NSwgODMsIDEyOCwgODQsIDY1LCAyMTMsIDg0LCA2NSwgODQsIDg3LCA2OSwgNjksIDc2LCAxMjgsIAorICAgIDg0LCA2NSwgODQsIDg3LCA2OSwgNjksIDIwNCwgODQsIDY1LCA4NCwgODQsIDc5LCA3OSwgNjksIDE5NiwgODQsIDY1LCA4NCwgCisgICAgMTI4LCA4NCwgNjUsIDgyLCA4NSwgNzgsIDcxLCAxMjgsIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDQ1LCA1MCwgMTI4LCAKKyAgICA4NCwgNjUsIDgyLCA4NCwgNjUsIDgyLCAxMjgsIDg0LCA2NSwgODEsIDEyOCwgODQsIDY1LCA4MCwgNjksIDgyLCAxMjgsIAorICAgIDg0LCA2NSwgODAsIDE5NywgODQsIDY1LCA4MCwgMTI4LCA4NCwgNjUsIDc5LCAxMjgsIDg0LCA2NSwgNzgsIDc4LCA2OSwgCisgICAgMTk2LCA4NCwgNjUsIDc4LCA3MSwgNjksIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg0LCA2NSwgNzgsIDE5OSwgODQsIDY1LCAKKyAgICA3OCwgNjUsIDY2LCA2NSwgODQsIDE5MywgODQsIDY1LCA3OCwgMTI4LCA4NCwgNjUsIDc3LCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDg0LCA2NSwgNzcsIDEyOCwgODQsIDY1LCA3NiwgNzYsIDEyOCwgODQsIDY1LCA3NiwgMjA0LCA4NCwgNjUsIDc2LCA3MywgCisgICAgNzgsIDcxLCAxMjgsIDg0LCA2NSwgNzYsIDczLCA3OCwgMTk5LCA4NCwgNjUsIDc2LCA2OSwgNzgsIDg0LCA4MywgMTI4LCAKKyAgICA4NCwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgODQsIDY1LCA3NSwgODIsIDIwMSwgODQsIDY1LCA3NSwgNzIsIDY1LCA3NiwgNzYsIAorICAgIDg1LCA4MywgMTI4LCA4NCwgNjUsIDc1LCA2OSwgMTI4LCA4NCwgNjUsIDc1LCA1MiwgMTI4LCA4NCwgNjUsIDc1LCAxMjgsIAorICAgIDg0LCA2NSwgNzMsIDgzLCA4OSwgNzksIDg1LCAxMjgsIDg0LCA2NSwgNzMsIDc2LCA3NiwgNjksIDgzLCAyMTEsIDg0LCA2NSwgCisgICAgNzMsIDc2LCAxMjgsIDg0LCA2NSwgNzMsIDIwNCwgODQsIDY1LCA3MiwgMTI4LCA4NCwgNjUsIDIwMCwgODQsIDY1LCA3MSwgCisgICAgNjYsIDY1LCA3OCwgODcsIDE5MywgODQsIDY1LCA3MSwgNjUsIDc2LCA3OSwgMTk5LCA4NCwgNjUsIDcxLCAxMjgsIDg0LCAKKyAgICA2NSwgNjksIDIwNiwgODQsIDY1LCA2NywgNzUsIDEyOCwgODQsIDY1LCA2NywgMjAzLCA4NCwgNjUsIDY2LCA4NSwgNzYsIAorICAgIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjUsIDY2LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg0LCA2NSwgCisgICAgNjYsIDgzLCAxMjgsIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4NCwgNjUsIDY2LCAxMjgsIDg0LCA2NSwgMTk0LCA4NCwgCisgICAgNjUsIDY1LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4NCwgNjUsIDY1LCA4MSwgMTI4LCA4NCwgNjUsIDY1LCA3NywgMTI4LCAKKyAgICA4NCwgNjUsIDY1LCA3NiwgODUsIDc0LCAxOTMsIDg0LCA2NSwgNjUsIDczLCAxMjgsIDg0LCA2NSwgNjUsIDcwLCAxMjgsIAorICAgIDg0LCA2NSwgNTAsIDEyOCwgODQsIDY1LCA0NSwgODIsIDc5LCA3NiwgMTI4LCA4NCwgNjUsIDQ1LCA1MCwgMTI4LCA4NCwgCisgICAgNDgsIDUxLCA1NCwgMTI4LCA4NCwgNDgsIDUxLCA1MywgMTI4LCA4NCwgNDgsIDUxLCA1MiwgMTI4LCA4NCwgNDgsIDUxLCAKKyAgICA1MSwgNjUsIDEyOCwgODQsIDQ4LCA1MSwgNTEsIDEyOCwgODQsIDQ4LCA1MSwgNTAsIDY1LCAxMjgsIDg0LCA0OCwgNTEsIAorICAgIDUwLCAxMjgsIDg0LCA0OCwgNTEsIDQ5LCAxMjgsIDg0LCA0OCwgNTEsIDQ4LCAxMjgsIDg0LCA0OCwgNTAsIDU3LCAxMjgsIAorICAgIDg0LCA0OCwgNTAsIDU2LCAxMjgsIDg0LCA0OCwgNTAsIDU1LCAxMjgsIDg0LCA0OCwgNTAsIDU0LCAxMjgsIDg0LCA0OCwgCisgICAgNTAsIDUzLCAxMjgsIDg0LCA0OCwgNTAsIDUyLCAxMjgsIDg0LCA0OCwgNTAsIDUxLCAxMjgsIDg0LCA0OCwgNTAsIDUwLCAKKyAgICAxMjgsIDg0LCA0OCwgNTAsIDQ5LCAxMjgsIDg0LCA0OCwgNTAsIDQ4LCAxMjgsIDg0LCA0OCwgNDksIDU3LCAxMjgsIDg0LCAKKyAgICA0OCwgNDksIDU2LCAxMjgsIDg0LCA0OCwgNDksIDU1LCAxMjgsIDg0LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4NCwgNDgsIAorICAgIDQ5LCA1NCwgMTI4LCA4NCwgNDgsIDQ5LCA1MywgMTI4LCA4NCwgNDgsIDQ5LCA1MiwgMTI4LCA4NCwgNDgsIDQ5LCA1MSwgCisgICAgMTI4LCA4NCwgNDgsIDQ5LCA1MCwgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgODQsIDQ4LCA0OSwgNDksIDEyOCwgCisgICAgODQsIDQ4LCA0OSwgNDgsIDEyOCwgODQsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU3LCAxMjgsIDg0LCAKKyAgICA0OCwgNDgsIDU2LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NiwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgODQsIAorICAgIDQ4LCA0OCwgNTUsIDEyOCwgODQsIDQ4LCA0OCwgNTQsIDEyOCwgODQsIDQ4LCA0OCwgNTMsIDEyOCwgODQsIDQ4LCA0OCwgCisgICAgNTIsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDUxLCAxMjgsIDg0LCA0OCwgNDgsIDUwLCAKKyAgICAxMjgsIDg0LCA0OCwgNDgsIDQ5LCAxMjgsIDg0LCA0NSwgODMsIDcyLCA3MywgODIsIDg0LCAxMjgsIDgzLCA5MCwgOTAsIAorICAgIDEyOCwgODMsIDkwLCA4NywgNzEsIDEyOCwgODMsIDkwLCA4NywgNjUsIDEyOCwgODMsIDkwLCA4NSwgMTI4LCA4MywgOTAsIAorICAgIDc5LCAxMjgsIDgzLCA5MCwgNzMsIDEyOCwgODMsIDkwLCA2OSwgNjksIDEyOCwgODMsIDkwLCA2OSwgMTI4LCA4MywgOTAsIAorICAgIDY1LCA2NSwgMTI4LCA4MywgOTAsIDY1LCAxMjgsIDgzLCA5MCwgMTI4LCA4MywgODksIDg4LCAxMjgsIDgzLCA4OSwgODQsIAorICAgIDEyOCwgODMsIDg5LCA4MywgODQsIDY5LCAyMDUsIDgzLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA4OSwgODIsIDc3LCA2NSwgCisgICAgODQsIDczLCA3NSwgNzMsIDEyOCwgODMsIDg5LCA4MiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgODIsIDczLCA3OCwgNzEsIDY5LCAKKyAgICAxMjgsIDgzLCA4OSwgODIsIDEyOCwgODMsIDg5LCA4MCwgMTI4LCA4MywgODksIDc5LCA4NSwgODcsIDY1LCAxMjgsIDgzLCAKKyAgICA4OSwgNzgsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgNzgsIDY4LCA2OSwgODMsIDc3LCA3OSwgMjExLCA4MywgODksIAorICAgIDc4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgMjExLCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCAxOTMsIDgzLCA4OSwgCisgICAgNzgsIDY1LCA3MCwgNzMsIDEyOCwgODMsIDg5LCA3OCwgMTI4LCA4MywgODksIDc3LCA3NywgNjksIDg0LCA4MiwgODksIAogICAgIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCA4NCwgODIsIDczLCAxOTUsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDgzLCAKICAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTYsIAogICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NCwgCkBAIC02NTQsMjIzICs3NTMsMjI4IEBACiAgICAgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUxLCAxMjgsIDgzLCAKICAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA0OSwgCiAgICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKLSAgICA0OSwgMTI4LCA4MywgODksIDc2LCA3OSwgODQsIDIwMSwgODMsIDg5LCA2NSwgMTI4LCA4MywgODksIDEyOCwgODMsIDg3LCAKLSAgICA5MCwgMTI4LCA4MywgODcsIDg1LCA3OCwgMTk5LCA4MywgODcsIDc5LCA4MiwgNjgsIDgzLCAxMjgsIDgzLCA4NywgNzksIAotICAgIDgyLCA2OCwgMTI4LCA4MywgODcsIDc5LCA3OSwgMTI4LCA4MywgODcsIDc5LCAxMjgsIDgzLCA4NywgNzMsIDgyLCAyMDQsIAotICAgIDgzLCA4NywgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDczLCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgCi0gICAgODcsIDczLCA3MywgMTI4LCA4MywgODcsIDczLCAxMjgsIDgzLCA4NywgNzEsIDEyOCwgODMsIDg3LCA2OSwgNjksIDg0LCAKLSAgICAxMjgsIDgzLCA4NywgNjksIDY5LCAyMTIsIDgzLCA4NywgNjksIDY1LCA4NCwgMTI4LCA4MywgODcsIDY5LCA2NSwgMjEyLCAKLSAgICA4MywgODcsIDY1LCA4MywgMjAwLCA4MywgODcsIDY1LCA4MCwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA2NSwgNjUsIAotICAgIDEyOCwgODMsIDg3LCAxMjgsIDgzLCA4NiwgNjUsIDgzLCA4NCwgMjAxLCA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCA2NSwgCi0gICAgMTI4LCA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCAxOTMsIDgzLCA4NSwgODgsIDEyOCwgODMsIDg1LCA4NSwgMTI4LCA4MywgCi0gICAgODUsIDg0LCAxMjgsIDgzLCA4NSwgODMsIDgwLCA2OSwgNzgsIDgzLCA3MywgNzksIDIwNiwgODMsIDg1LCA4MywgNzIsIDczLCAKLSAgICAxMjgsIDgzLCA4NSwgODIsIDg4LCAxMjgsIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MywgODUsIAotICAgIDgyLCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4MywgODUsIDgyLCA3MCwgNjksIDgyLCAxMjgsIDgzLCA4NSwgODIsIDcwLCA2NSwgCi0gICAgNjcsIDE5NywgODMsIDg1LCA4MiwgNjksIDEyOCwgODMsIDg1LCA4MiwgNjUsIDc4LCA3MSwgMTI4LCA4MywgODUsIDgyLCAKLSAgICA1NywgMTI4LCA4MywgODUsIDgyLCAxMjgsIDgzLCA4NSwgMjEwLCA4MywgODUsIDgwLCA4MiwgNjUsIDc2LCA3MywgNzgsIAotICAgIDY5LCA2NSwgMjEwLCA4MywgODUsIDgwLCA2OSwgODIsIDg2LCA3MywgODMsIDY5LCAxMjgsIDgzLCA4NSwgODAsIDY5LCA4MiwgCi0gICAgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDgwLCA2OSwgODIsIDgzLCA2OSwgMjEyLCA4MywgODUsIDgwLCA2OSwgODIsIDgzLCAKLSAgICA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIDgwLCA2OSwgODIsIDczLCA3NywgODAsIDc5LCA4MywgNjksIDE5NiwgODMsIAotICAgIDg1LCA4MCwgNjksIDgyLCA3MCwgNzMsIDg4LCA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgMjEwLCA4MywgODUsIDgwLCAKLSAgICAxMjgsIDgzLCA4NSwgNzksIDg4LCAxMjgsIDgzLCA4NSwgNzksIDgwLCAxMjgsIDgzLCA4NSwgNzksIDEyOCwgODMsIDg1LCAKLSAgICA3OCwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNzgsIDgyLCA3MywgODMsIDY5LCAxMjgsIDgzLCA4NSwgNzgsIDgyLCA3MywgODMsIAotICAgIDE5NywgODMsIDg1LCA3OCwgNzEsIDc2LCA2NSwgODMsIDgzLCA2OSwgODMsIDEyOCwgODMsIDg1LCA3OCwgNzEsIDEyOCwgCi0gICAgODMsIDg1LCA3OCwgNzAsIDc2LCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MywgODUsIDc4LCA2OCwgNjUsIDc4LCA2OSwgODMsIAotICAgIDE5NywgODMsIDg1LCA3OCwgMTI4LCA4MywgODUsIDIwNiwgODMsIDg1LCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgODUsIAotICAgIDc3LCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MywgCi0gICAgODUsIDc3LCA2NSwgODMsIDcyLCAxMjgsIDgzLCA4NSwgNzcsIDEyOCwgODMsIDg1LCA3NiwgNzAsIDg1LCA4MiwgMTI4LCAKLSAgICA4MywgODUsIDc1LCA4NSwgNzgsIDEyOCwgODMsIDg1LCA3NSwgODUsIDIwNiwgODMsIDg1LCA3NSwgODUsIDEyOCwgODMsIAotICAgIDg1LCA3NSwgMjEzLCA4MywgODUsIDczLCA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODMsIDg1LCA3MywgODQsIDEyOCwgCi0gICAgODMsIDg1LCA3MiwgODUsIDgyLCAxMjgsIDgzLCA4NSwgNjksIDEyOCwgODMsIDg1LCA2OCwgNTAsIDEyOCwgODMsIDg1LCAKLSAgICA2OCwgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgODMsIDEyOCwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIAotICAgIDIxMSwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDEyOCwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgMTk2LCA4MywgCi0gICAgODUsIDY2LCA4NSwgNzgsIDczLCA4NCwgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgCi0gICAgODQsIDg1LCA4NCwgMTk3LCA4MywgODUsIDY2LCA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA2OSwgMjEyLCAKLSAgICA4MywgODUsIDY2LCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODMsIDg1LCA2NiwgODAsIDg1LCA3OCwgNjcsIDg0LCA3MywgCi0gICAgODMsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCA0NSwgNTEsIDEyOCwgODMsIAotICAgIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgNDUsIDUwLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCAKLSAgICA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCAxOTcsIDgzLCA4NSwgNjYsIDc0LCA3OSwgNzMsIAotICAgIDc4LCA2OSwgMTk2LCA4MywgODUsIDY2LCA3NCwgNjksIDY3LCA4NCwgMTI4LCA4MywgODUsIDY2LCA3MywgODQsIDc5LCAKLSAgICAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCA4MCwgMTI4LCA4MywgODUsIDY2LCA3MSwgODIsIDc5LCA4NSwgCi0gICAgMjA4LCA4MywgODUsIDY1LCA2OSwgODQsIDEyOCwgODMsIDg1LCA2NSwgNjksIDc4LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCAKLSAgICAxMjgsIDgzLCA4NSwgNjUsIDEyOCwgODMsIDIxMywgODMsIDg0LCA4NywgNjUsIDEyOCwgODMsIDg0LCA4NSwgNjgsIDg5LCAKLSAgICAxMjgsIDgzLCA4NCwgODUsIDY3LCA3NSwgNDUsIDc5LCA4NSwgMjEyLCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA4MywgCi0gICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAyMTEsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NywgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTYsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU1LCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTMsIDEyOCwgCi0gICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUyLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MSwgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCA0OSwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCAKLSAgICA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDE5NywgODMsIDg0LCA4MiwgNzMsIDgwLCA2OSwgMTI4LCA4MywgODQsIAotICAgIDgyLCA3MywgNzUsIDY5LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCA4MywgODQsIDgyLCA3MywgNjgsIDY5LCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDc2LCAyMTcsIDgzLCA4NCwgODIsIDY5LCA4NCwgNjcsIDcyLCA2OSwgCi0gICAgMTk2LCA4MywgODQsIDgyLCA2OSwgODMsIDIxMSwgODMsIDg0LCA4MiwgNjksIDc4LCA3MSwgODQsIDcyLCAxMjgsIDgzLCAKLSAgICA4NCwgODIsIDY5LCA2NSwgNzcsIDY5LCA4MiwgMTI4LCA4MywgODQsIDgyLCA2NSwgODcsIDY2LCA2OSwgODIsIDgyLCA4OSwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCA3NywgNDUsIDUwLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDc3LCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDIwNSwgODMsIDg0LCA4MiwgNjUsIDg0LCA3MywgNjUsIDIwNiwgODMsIAotICAgIDg0LCA4MiwgNjUsIDczLCA3OCwgNjksIDgyLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCAKLSAgICA4MywgODMsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIDIxMiwgODMsIDg0LCA4MiwgNjUsIDczLCA3MCwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA2NSwgNzEsIDcxLCA3MywgODMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA4NCwgNzksIDg2LCAKLSAgICA2OSwgMTI4LCA4MywgODQsIDc5LCA4MiwgNjksIDEyOCwgODMsIDg0LCA3OSwgODAsIDg3LCA2NSwgODQsIDY3LCA3MiwgCi0gICAgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg0LCA3OSwgODAsIDgwLCA2NSwgNzEsIDY5LCAKLSAgICAxMjgsIDgzLCA4NCwgNzksIDgwLCAxMjgsIDgzLCA4NCwgNzksIDIwOCwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDgzLCAKLSAgICA4NCwgNzksIDY3LCA3NSwgMTI4LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDgzLCA4NCwgNzMsIDc2LCAyMDQsIAotICAgIDgzLCA4NCwgNzMsIDc2LCAxOTcsIDgzLCA4NCwgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIDg0LCA2OSwgODAsIDEyOCwgCi0gICAgODMsIDg0LCA2OSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgMjA1LCA4MywgODQsIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCAKLSAgICA4MywgODQsIDY5LCA2NSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIDIwNSwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgODUsIAotICAgIDEyOCwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgMjExLCA4MywgCi0gICAgODQsIDY1LCA4NSwgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NCwgODUsIDE5NywgODMsIDg0LCA2NSwgODQsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgODQsIDY5LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgODIsIDIxMiwgODMsIAotICAgIDg0LCA2NSwgODIsIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDgyLCA4MiwgNjksIDE5NiwgODMsIDg0LCA2NSwgODIsIDc1LCAKLSAgICAxMjgsIDgzLCA4NCwgNjUsIDgyLCAxMjgsIDgzLCA4NCwgNjUsIDIxMCwgODMsIDg0LCA2NSwgNzgsIDY4LCA4MywgODQsIAotICAgIDczLCA3NiwgNzYsIDEyOCwgODMsIDg0LCA2NSwgNzgsIDY4LCA2NSwgODIsIDE5NiwgODMsIDg0LCA2NSwgNzgsIDY4LCAKLSAgICAxMjgsIDgzLCA4NCwgNjUsIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDc2LCA3NiwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODQsIAotICAgIDY1LCA3MCwgNzAsIDEyOCwgODMsIDg0LCA2NSwgNzAsIDE5OCwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAKLSAgICAxMjgsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3MywgODMsIDgzLCA3MywgNzcsIDc5LCAxMjgsIDgzLCA4NCwgNTAsIAotICAgIDEyOCwgODMsIDgzLCA4OSwgODgsIDEyOCwgODMsIDgzLCA4OSwgODQsIDEyOCwgODMsIDgzLCA4OSwgODIsIDg4LCAxMjgsIAotICAgIDgzLCA4MywgODksIDgyLCAxMjgsIDgzLCA4MywgODksIDgwLCAxMjgsIDgzLCA4MywgODksIDEyOCwgODMsIDgzLCA4NSwgCi0gICAgODgsIDEyOCwgODMsIDgzLCA4NSwgODQsIDEyOCwgODMsIDgzLCA4NSwgODAsIDEyOCwgODMsIDgzLCA3OSwgODgsIDEyOCwgCi0gICAgODMsIDgzLCA3OSwgODQsIDEyOCwgODMsIDgzLCA3OSwgODAsIDEyOCwgODMsIDgzLCA3OSwgMTI4LCA4MywgODMsIDczLCAKLSAgICA4OCwgMTI4LCA4MywgODMsIDczLCA4NCwgMTI4LCA4MywgODMsIDczLCA4MCwgMTI4LCA4MywgODMsIDczLCA2OSwgODgsIAotICAgIDEyOCwgODMsIDgzLCA3MywgNjksIDgwLCAxMjgsIDgzLCA4MywgNzMsIDY5LCAxMjgsIDgzLCA4MywgNzMsIDEyOCwgODMsIAotICAgIDgzLCA3MiwgNjksIDEyOCwgODMsIDgzLCA2OSwgODgsIDEyOCwgODMsIDgzLCA2OSwgODAsIDEyOCwgODMsIDgzLCA2OSwgCi0gICAgNjksIDEyOCwgODMsIDgzLCA2NSwgODgsIDEyOCwgODMsIDgzLCA2NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgODAsIDEyOCwgCi0gICAgODMsIDgzLCA2NSwgNzgsIDcxLCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIAotICAgIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCAKLSAgICA4MywgNjUsIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MiwgCi0gICAgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4NCwgNzMsIAotICAgIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCAKLSAgICA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgCi0gICAgNzUsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgCi0gICAgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCAKLSAgICA4MywgNjUsIDc4LCA3MSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzcsIDczLCA2OSwgCi0gICAgODUsIDc3LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgODMsIDY1LCAKLSAgICA3OCwgNzEsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDcyLCA3MywgNjksIDg1LCA3MiwgCi0gICAgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCAKLSAgICA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY1LCA4MiwgCi0gICAgNjUsIDY5LCA2NSwgMTI4LCA4MywgODMsIDY1LCA2NSwgMTI4LCA4MywgODMsIDY1LCAxMjgsIDgzLCA4MiwgMTI4LCA4MywgCi0gICAgODEsIDg1LCA3MywgODMsIDIwMCwgODMsIDgxLCA4NSwgNzMsIDgyLCA4MiwgNjksIDIwNCwgODMsIDgxLCA4NSwgNzMsIDcxLCAKLSAgICA3MSwgNzYsIDE5NywgODMsIDgxLCA4NSwgNjUsIDIxMiwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgODMsIDEyOCwgODMsIAotICAgIDgxLCA4NSwgNjUsIDgyLCA2OSwgNjgsIDEyOCwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgMTI4LCA4MywgODAsIDg3LCA2NSwgCi0gICAgMTI4LCA4MywgODAsIDg1LCA3OCwgNzEsIDIxMSwgODMsIDgwLCA4MiwgNzksIDg1LCA4NCwgMTI4LCA4MywgODAsIDgyLCAKLSAgICA3MywgNzgsIDcxLCA4MywgMTI4LCA4MywgODAsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4MCwgODIsIDY5LCA2NywgNzIsIAotICAgIDcxLCA2OSwgODMsIDY1LCA3OCwgMTk5LCA4MywgODAsIDc5LCA4NSwgODQsIDczLCA3OCwgMTk5LCA4MywgODAsIDc5LCA4NCwgCi0gICAgMTI4LCA4MywgODAsIDc5LCA3OSwgNzgsIDEyOCwgODMsIDgwLCA3NiwgNzMsIDg0LCA4NCwgNzMsIDc4LCAxOTksIDgzLCAKLSAgICA4MCwgNzYsIDY1LCA4MywgNzIsIDczLCA3OCwgMTk5LCA4MywgODAsIDczLCA4MiwgNzMsIDg0LCA4NSwgMjExLCA4MywgODAsIAotICAgIDczLCA4MiwgNzMsIDg0LCAxMjgsIDgzLCA4MCwgNzMsIDgyLCA3MywgMjEyLCA4MywgODAsIDczLCA4MiwgNjUsIDc4LCA4NCwgCi0gICAgMTI4LCA4MywgODAsIDczLCA4MiwgNjUsIDc2LCAxMjgsIDgzLCA4MCwgNzMsIDgyLCA2NSwgMjA0LCA4MywgODAsIDczLCAKLSAgICA2OCwgNjksIDgyLCAyMTcsIDgzLCA4MCwgNzMsIDY3LCA2OSwgMTI4LCA4MywgODAsIDcyLCA2OSwgODIsIDczLCA2NywgNjUsIAotICAgIDIwNCwgODMsIDgwLCA2OSwgODMsIDc3LCA3MywgNzYsIDIwNywgODMsIDgwLCA2OSwgNjksIDY4LCA2NiwgNzksIDY1LCA4NCwgCi0gICAgMTI4LCA4MywgODAsIDY5LCA2OSwgNjcsIDcyLCAxMjgsIDgzLCA4MCwgNjksIDY5LCA2NywgMjAwLCA4MywgODAsIDY5LCAKLSAgICA2NywgNzMsIDY1LCA3NiwgMTI4LCA4MywgODAsIDY5LCA2NSwgODIsIDEyOCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIAotICAgIDEyOCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgMjEwLCA4MywgODAsIDY5LCA2NSwgNzUsIDQ1LCA3OCwgNzksIDQ1LCA2OSwgCi0gICAgODYsIDczLCAyMDQsIDgzLCA4MCwgNjUsIDg0LCA3MiwgNzMsIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNzMsIDc4LCAKLSAgICAxOTksIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDY5LCA4MywgMTI4LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCA2OSwgODIsIAotICAgIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNjksIDEyOCwgODMsIDgwLCA2NSwgNzEsIDcyLCA2OSwgODQsIDg0LCA3MywgCi0gICAgMTI4LCA4MywgODAsIDY1LCA2OCwgNjksIDgzLCAxMjgsIDgzLCA4MCwgNjUsIDY4LCAxOTcsIDgzLCA4MCwgNjUsIDY3LCAKLSAgICA3MywgNzgsIDE5OSwgODMsIDgwLCA2NSwgNjcsIDE5NywgODMsIDgwLCAxMjgsIDgzLCA3OSwgODksIDEyOCwgODMsIDc5LCAKLSAgICA4NywgNzMsIDc2LCAyMDcsIDgzLCA3OSwgODcsIDEyOCwgODMsIDc5LCA4NSwgODQsIDcyLCA2OSwgODIsIDIwNiwgODMsIAotICAgIDc5LCA4NSwgODQsIDcyLCA0NSwgODMsIDc2LCA2NSwgODYsIDY5LCAyMTcsIDgzLCA3OSwgODUsIDg0LCAyMDAsIDgzLCA3OSwgCi0gICAgODUsIDgyLCA2NywgNjksIDEyOCwgODMsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDgzLCA3OSwgODUsIDc4LCAxOTYsIDgzLCAKLSAgICA3OSwgODUsIDc4LCA2NSwgODAsIDEyOCwgODMsIDc5LCA4NSwgMTI4LCA4MywgNzksIDgzLCAxMjgsIDgzLCA3OSwgODEsIAotICAgIDEyOCwgODMsIDc5LCA3OSwgMjA2LCA4MywgNzksIDc5LCAxMjgsIDgzLCA3OSwgNzgsIDc0LCA2NSwgNzcsIDEyOCwgODMsIAotICAgIDc5LCA3OCwgNzEsIDEyOCwgODMsIDc5LCA3OCwgMTI4LCA4MywgNzksIDc3LCAxMjgsIDgzLCA3OSwgNzYsIDczLCA2OCwgCi0gICAgODUsIDgzLCAxMjgsIDgzLCA3OSwgNzYsIDczLCA2OCwgODUsIDIxMSwgODMsIDc5LCA3MSwgNjgsIDczLCA2NSwgMjA2LCAKLSAgICA4MywgNzksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjksIDQ1LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgMjA2LCA4MywgCi0gICAgNzksIDcwLCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIDc5LCA3MCwgMjEyLCA4MywgNzksIDE5OCwgODMsIDc5LCAKLSAgICA2NywgNzMsIDY5LCA4NCwgODksIDEyOCwgODMsIDc5LCA2NywgNjcsIDY5LCAyMTAsIDgzLCA3OSwgNjUsIDgwLCAxMjgsIAotICAgIDgzLCA3OSwgNjUsIDEyOCwgODMsIDIwNywgODMsIDc4LCA3OSwgODcsIDc3LCA2NSwgNzgsIDEyOCwgODMsIDc4LCA3OSwgCi0gICAgODcsIDc3LCA2NSwgMjA2LCA4MywgNzgsIDc5LCA4NywgNzAsIDc2LCA2NSwgNzUsIDY5LCAxMjgsIDgzLCA3OCwgNzksIDg3LCAKLSAgICA2NiwgNzksIDY1LCA4MiwgNjgsIDY5LCA4MiwgMTI4LCA4MywgNzgsIDc5LCA4NywgMTI4LCA4MywgNzgsIDc5LCA4NSwgODQsIAotICAgIDEyOCwgODMsIDc4LCA3OSwgODUsIDIxMiwgODMsIDc4LCA2NSwgMjA4LCA4MywgNzgsIDY1LCA3NSwgNjksIDEyOCwgODMsIAotICAgIDc4LCA2NSwgNzUsIDE5NywgODMsIDc4LCA2NSwgNzMsIDc2LCAxMjgsIDgzLCA3OCwgMTkzLCA4MywgNzcsIDc5LCA3NSwgCi0gICAgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDgyLCA3NSwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDc2LCA3MywgNzgsIAotICAgIDE5OSwgODMsIDc3LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA3NywgNjksIDY1LCA4MiwgMTI4LCA4MywgNzcsIDY1LCA4MywgCi0gICAgMjAwLCA4MywgNzcsIDY1LCA3NiwgNzYsIDY5LCAyMTAsIDgzLCA3NywgNjUsIDc2LCA3NiwgMTI4LCA4MywgNzYsIDg1LCAKLSAgICA4MiwgMTI4LCA4MywgNzYsIDc5LCA4NywgNzYsIDg5LCAxMjgsIDgzLCA3NiwgNzksIDIxNSwgODMsIDc2LCA3OSwgODYsIAotICAgIDc5LCAxMjgsIDgzLCA3NiwgNzksIDIxMiwgODMsIDc2LCA3OSwgODAsIDczLCA3OCwgMTk5LCA4MywgNzYsIDc5LCA4MCwgCi0gICAgNjksIDEyOCwgODMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDgzLCAKLSAgICA3NiwgNzMsIDY3LCA2OSwgMTI4LCA4MywgNzYsIDczLCA2NywgMTk3LCA4MywgNzYsIDY5LCA2OSwgODAsIDIxNywgODMsIAotICAgIDc2LCA2OSwgNjksIDgwLCA3MywgNzgsIDE5OSwgODMsIDc2LCA2NSwgODYsIDc5LCA3OCwgNzMsIDE5NSwgODMsIDc2LCA2NSwgCi0gICAgODYsIDY5LCAxMjgsIDgzLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA4MywgNzYsIDY1LCA4MywgMjAwLCA4MywgNzYsIDY1LCAKLSAgICA3OCwgODQsIDY5LCAxOTYsIDgzLCA3NSwgODcsIDY1LCAxMjgsIDgzLCA3NSwgODcsIDEyOCwgODMsIDc1LCA4NSwgNzYsIAotICAgIDc2LCAxMjgsIDgzLCA3NSwgODUsIDc2LCAyMDQsIDgzLCA3NSwgNzYsIDczLCA4MiwgNzksIDIwNiwgODMsIDc1LCA3MywgCi0gICAgNzgsIDEyOCwgODMsIDc1LCA3MywgNjksIDgyLCAxMjgsIDgzLCA3NSwgMjAxLCA4MywgNzUsIDY5LCA4NywgNjksIDE5NiwgCi0gICAgODMsIDc1LCA2NSwgODQsIDY5LCAxMjgsIDgzLCA3NSwgMTI4LCA4MywgNzQsIDY5LCAxMjgsIDgzLCA3MywgODgsIDg0LCAKLSAgICA4OSwgNDUsIDcwLCA3OSwgODUsIDgyLCA4NCwgMjAwLCA4MywgNzMsIDg4LCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgODQsIAotICAgIDIxNywgODMsIDczLCA4OCwgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgNzIsIDIxMSwgODMsIDczLCA4OCwgCi0gICAgODQsIDcyLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCAKLSAgICA2OSwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCAyMDAsIDgzLCA3MywgODgsIAotICAgIDg0LCA2OSwgNjksIDc4LCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDIwNiwgODMsIDczLCA4OCwgNDUsIDg0LCA3MiwgCi0gICAgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgNDUsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgNzMsIDg4LCAKLSAgICA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDgzLCA3MywgODgsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgCi0gICAgMjE2LCA4MywgNzMsIDg0LCA2OSwgMTI4LCA4MywgNzMsIDgzLCA2NSwgMTI4LCA4MywgNzMsIDgyLCA3MywgNzgsIDcxLCAKLSAgICA4NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgzLCA3MywgNzksIAotICAgIDgzLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc1LCA3MywgCi0gICAgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCAKLSAgICA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgCi0gICAgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgzLCAKLSAgICA3MywgNzksIDgzLCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgCi0gICAgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIAotICAgIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgCi0gICAgNzMsIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDgzLCA3MywgNzksIDIxMSwgODMsIDczLCA3OCwgNzUsIDczLCA3OCwgNzEsIDEyOCwgCi0gICAgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgMTI4LCAKLSAgICA4MywgNzMsIDc4LCA3MSwgNzYsIDE5NywgODMsIDczLCA3OCwgNzEsIDY1LCA2NSwgODQsIDEyOCwgODMsIDczLCA3OCwgCi0gICAgMTk3LCA4MywgNzMsIDc4LCA2OCwgNzIsIDIwMSwgODMsIDczLCAyMDYsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCAKLSAgICA3MywgNjksIDE5NiwgODMsIDczLCA3NywgNzMsIDc2LCA2NSwgODIsIDEyOCwgODMsIDczLCA3NywgNzMsIDc2LCA2NSwgCi0gICAgMjEwLCA4MywgNzMsIDc3LCA2NSwgNzgsIDgzLCA3MywgMjExLCA4MywgNzMsIDc3LCA2NSwgNzYsIDg1LCA3OCwgNzEsIDg1LCAKLSAgICAyMDYsIDgzLCA3MywgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzYsIDg2LCA2OSwgODIsIDEyOCwgODMsIDczLCA3NiwgNzUsIAotICAgIDEyOCwgODMsIDczLCA3NiwgNzMsIDgxLCA4NSwgMTkzLCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCA2OSwgCi0gICAgMTI4LCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCAxOTcsIDgzLCA3MywgNzYsIDY1LCA1MSwgMTI4LCAKLSAgICA4MywgNzMsIDc1LCA3MywgMTI4LCA4MywgNzMsIDc1LCA1MCwgMTI4LCA4MywgNzMsIDc1LCAxNzgsIDgzLCA3MywgNzMsIAotICAgIDEyOCwgODMsIDczLCA3MSwgNzgsIDgzLCAxMjgsIDgzLCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDcxLCA3NywgCi0gICAgMTkzLCA4MywgNzMsIDcxLCA2OSwgMjA0LCA4MywgNzMsIDcxLCA1MiwgMTI4LCA4MywgNzMsIDcxLCAxODAsIDgzLCA3MywgCi0gICAgNzEsIDEyOCwgODMsIDczLCA2OSwgNjksIDEyOCwgODMsIDczLCA2OCwgNjksIDg3LCA2NSwgODksIDIxMSwgODMsIDczLCAKLSAgICA2NywgNzUsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCA3MywgNjcsIDc1LCA3NiwgNjksIDEyOCwgODMsIDczLCA2NiwgCi0gICAgMTk3LCA4MywgMjAxLCA4MywgNzIsIDg5LCA4OCwgMTI4LCA4MywgNzIsIDg5LCA4NCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgCi0gICAgODgsIDEyOCwgODMsIDcyLCA4OSwgODIsIDEyOCwgODMsIDcyLCA4OSwgODAsIDEyOCwgODMsIDcyLCA4OSwgNjksIDEyOCwgCi0gICAgODMsIDcyLCA4OSwgNjUsIDEyOCwgODMsIDcyLCA4OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgODksIDEyOCwgODMsIDcyLCAKLSAgICA4NywgNzksIDc5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCAxMjgsIDgzLCA3MiwgODcsIDczLCA3MywgMTI4LCA4MywgNzIsIAotICAgIDg3LCA3MywgMTI4LCA4MywgNzIsIDg3LCA2OSwgMTI4LCA4MywgNzIsIDg3LCA2NSwgNjUsIDEyOCwgODMsIDcyLCA4NywgCi0gICAgNjUsIDEyOCwgODMsIDcyLCA4NSwgODgsIDEyOCwgODMsIDcyLCA4NSwgODQsIDEyOCwgODMsIDcyLCA4NSwgODIsIDg4LCAKLSAgICAxMjgsIDgzLCA3MiwgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIDgwLCAxMjgsIDgzLCA3MiwgODUsIDc5LCA4OCwgMTI4LCAKLSAgICA4MywgNzIsIDg1LCA3OSwgODAsIDEyOCwgODMsIDcyLCA4NSwgNzksIDEyOCwgODMsIDcyLCA4NSwgNzcsIDEyOCwgODMsIAotICAgIDcyLCA4NSwgNzAsIDcwLCA3NiwgMTk3LCA4MywgNzIsIDg1LCA2OSwgODEsIDEyOCwgODMsIDcyLCA4NSwgNjksIDc4LCA4MywgCi0gICAgNzIsIDg1LCA2OSwgODQsIDEyOCwgODMsIDcyLCA4NSwgNjYsIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCA1MCwgMTI4LCAKLSAgICA4MywgNzIsIDg1LCAxNzgsIDgzLCA3MiwgODUsIDEyOCwgODMsIDcyLCAyMTMsIDgzLCA3MiwgODQsIDY1LCA4MCwgNzMsIAotICAgIDY3LCAxMjgsIDgzLCA3MiwgODQsIDY1LCAxMjgsIDgzLCA3MiwgODIsIDczLCA3OCwgNjksIDEyOCwgODMsIDcyLCA4MiwgCi0gICAgNzMsIDc3LCA4MCwgMTI4LCA4MywgNzIsIDc5LCA4OSwgMTI4LCA4MywgNzIsIDc5LCA4OCwgMTI4LCA4MywgNzIsIDc5LCAKLSAgICA4NywgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDg1LCA3NiwgNjgsIDY5LCA4MiwgNjksIDE5NiwgODMsIDcyLCA3OSwgODQsIAotICAgIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA4MywgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDIxMSwgODMsIDcyLCA3OSwgCi0gICAgODIsIDg0LCA2OSwgNzgsIDY5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDY3LCA2NSwgNzUsIDY5LCAxMjgsIDgzLCAKLSAgICA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgODksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgCi0gICAgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgODQsIDg5LCAyMTAsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIAotICAgIDcxLCA0NSwgODMsIDc5LCAyMDQsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNzksIDgzLCAKLSAgICAyMTEsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNzgsIDY1LCA4NSwgMTk2LCA4MywgNzIsIAotICAgIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDc3LCA2NSwgNjgsIDIxMCwgODMsIDcyLCA3OSwgODIsIDg0LCAKLSAgICA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3MiwgNjUsIDcxLCA2NSwgNzYsIDIwNCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgCi0gICAgODQsIDg3LCA3MywgNzEsIDQ1LCA2NiwgNzQsIDY1LCA4MiwgNzUsIDY1LCAyMDYsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIAotICAgIDg0LCA4NywgNzMsIDcxLCA0NSwgNjUsIDIxMCwgODMsIDcyLCA3OSwgODIsIDg0LCAxMjgsIDgzLCA3MiwgNzksIDgyLCAKLSAgICAyMTIsIDgzLCA3MiwgNzksIDgxLCAxMjgsIDgzLCA3MiwgNzksIDIwOSwgODMsIDcyLCA3OSwgODAsIDEyOCwgODMsIDcyLCAKLSAgICA3OSwgNzksIDg0LCA3MywgNzgsIDE5OSwgODMsIDcyLCA3OSwgNzksIDg0LCAxMjgsIDgzLCA3MiwgNzksIDc5LCAxMjgsIAotICAgIDgzLCA3MiwgNzksIDcxLCAyMDEsIDgzLCA3MiwgNzksIDE5OSwgODMsIDcyLCA3OSwgNjksIDEyOCwgODMsIDcyLCA3OSwgCi0gICAgMTk3LCA4MywgNzIsIDc5LCA2NSwgMTI4LCA4MywgNzIsIDc5LCAxMjgsIDgzLCA3MiwgNzMsIDg5LCA4OSwgNjUsIDY1LCAKLSAgICA3NiwgNjUsIDY1LCAxMjgsIDgzLCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA4MywgNzIsIDczLCA4NCwgMTkzLCA4MywgNzIsIAotICAgIDczLCA4MiwgMjEyLCA4MywgNzIsIDczLCA4MiwgNjUsIDY5LCAxMjgsIDgzLCA3MiwgNzMsIDgyLCAxMjgsIDgzLCA3MiwgCi0gICAgNzMsIDIxMCwgODMsIDcyLCA3MywgODEsIDEyOCwgODMsIDcyLCA3MywgODAsIDEyOCwgODMsIDcyLCA3MywgNzgsIDg0LCAKLSAgICAyMDcsIDgzLCA3MiwgNzMsIDc4LCA3MywgNzEsIDEyOCwgODMsIDcyLCA3MywgNzgsIDY4LCAxOTMsIDgzLCA3MiwgNzMsIAotICAgIDc4LCAxMjgsIDgzLCA3MiwgNzMsIDIwNiwgODMsIDcyLCA3MywgNzcsIDY1LCAxMjgsIDgzLCA3MiwgNzMsIDc3LCAxOTMsIAotICAgIDgzLCA3MiwgNzMsIDc3LCAxMjgsIDgzLCA3MiwgNzMsIDIwNSwgODMsIDcyLCA3MywgNzMsIDc4LCAxMjgsIDgzLCA3MiwgCi0gICAgNzMsIDczLCAxMjgsIDgzLCA3MiwgNzMsIDcwLCAyMTIsIDgzLCA3MiwgNzMsIDY5LCA3NiwgNjgsIDEyOCwgODMsIDcyLCAKLSAgICA3MywgNjgsIDEyOCwgODMsIDcyLCA3MywgMTk2LCA4MywgNzIsIDcyLCA2NSwgMTI4LCA4MywgNzIsIDcyLCAxOTMsIDgzLCAKLSAgICA3MiwgNjksIDg4LCAxMjgsIDgzLCA3MiwgNjksIDg2LCA2NSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgODgsIDEyOCwgODMsIAotICAgIDcyLCA2OSwgODUsIDc5LCA4MSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MSwgODQsIDg1LCAxMjgsIDgzLCA3MiwgCi0gICAgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIDEyOCwgODMsIDcyLCA2OSwgODQsIAorICAgIDQ5LCAxMjgsIDgzLCA4OSwgNzYsIDc5LCA4NCwgMjAxLCA4MywgODksIDEyOCwgODMsIDg3LCA5MCwgMTI4LCA4MywgODcsIAorICAgIDg1LCA3OCwgMTk5LCA4MywgODcsIDc5LCA4MiwgNjgsIDgzLCAxMjgsIDgzLCA4NywgNzksIDgyLCA2OCwgMTI4LCA4MywgCisgICAgODcsIDc5LCA3OSwgMTI4LCA4MywgODcsIDc5LCAxMjgsIDgzLCA4NywgNzMsIDgyLCAyMDQsIDgzLCA4NywgNzMsIDc3LCAKKyAgICA3NywgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDczLCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgODcsIDczLCA3MywgCisgICAgMTI4LCA4MywgODcsIDczLCAxMjgsIDgzLCA4NywgNzEsIDEyOCwgODMsIDg3LCA2OSwgNjksIDg0LCAxMjgsIDgzLCA4NywgCisgICAgNjksIDY5LCAyMTIsIDgzLCA4NywgNjksIDY1LCA4NCwgMTI4LCA4MywgODcsIDY5LCA2NSwgMjEyLCA4MywgODcsIDY1LCAKKyAgICA4MywgMjAwLCA4MywgODcsIDY1LCA4MCwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA2NSwgNjUsIDEyOCwgODMsIAorICAgIDg3LCAxMjgsIDgzLCA4NiwgNjUsIDgzLCA4NCwgMjAxLCA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCA2NSwgMTI4LCA4MywgCisgICAgODYsIDY1LCA4MiwgNzMsIDg0LCAxOTMsIDgzLCA4NSwgODgsIDEyOCwgODMsIDg1LCA4NSwgMTI4LCA4MywgODUsIDg0LCAKKyAgICAxMjgsIDgzLCA4NSwgODMsIDgwLCA2OSwgNzgsIDgzLCA3MywgNzksIDIwNiwgODMsIDg1LCA4MywgNzIsIDczLCAxMjgsIAorICAgIDgzLCA4NSwgODIsIDg5LCA2NSwgMTI4LCA4MywgODUsIDgyLCA4OCwgMTI4LCA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgCisgICAgNjgsIDEyOCwgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIDE5NiwgODMsIDg1LCA4MiwgNzAsIDY5LCA4MiwgMTI4LCAKKyAgICA4MywgODUsIDgyLCA3MCwgNjUsIDY3LCAxOTcsIDgzLCA4NSwgODIsIDY5LCAxMjgsIDgzLCA4NSwgODIsIDY1LCA3OCwgNzEsIAorICAgIDEyOCwgODMsIDg1LCA4MiwgNTcsIDEyOCwgODMsIDg1LCA4MiwgMTI4LCA4MywgODUsIDIxMCwgODMsIDg1LCA4MCwgODIsIAorICAgIDY1LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCA4MCwgNjksIDgyLCA4NiwgNzMsIDgzLCA2OSwgMTI4LCA4MywgCisgICAgODUsIDgwLCA2OSwgODIsIDgzLCA2OSwgODQsIDEyOCwgODMsIDg1LCA4MCwgNjksIDgyLCA4MywgNjksIDIxMiwgODMsIDg1LCAKKyAgICA4MCwgNjksIDgyLCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODMsIDg1LCA4MCwgNjksIDgyLCA3MywgNzcsIDgwLCA3OSwgCisgICAgODMsIDY5LCAxOTYsIDgzLCA4NSwgODAsIDY5LCA4MiwgNzAsIDczLCA4OCwgNjksIDE5NiwgODMsIDg1LCA4MCwgNjksIAorICAgIDIxMCwgODMsIDg1LCA4MCwgMTI4LCA4MywgODUsIDc5LCA4OCwgMTI4LCA4MywgODUsIDc5LCA4MCwgMTI4LCA4MywgODUsIAorICAgIDc5LCAxMjgsIDgzLCA4NSwgNzgsIDgzLCA2OSwgMjEyLCA4MywgODUsIDc4LCA4MiwgNzMsIDgzLCA2OSwgMTI4LCA4MywgCisgICAgODUsIDc4LCA4MiwgNzMsIDgzLCAxOTcsIDgzLCA4NSwgNzgsIDcxLCA3NiwgNjUsIDgzLCA4MywgNjksIDgzLCAxMjgsIDgzLCAKKyAgICA4NSwgNzgsIDcxLCAxMjgsIDgzLCA4NSwgNzgsIDcwLCA3NiwgNzksIDg3LCA2OSwgODIsIDEyOCwgODMsIDg1LCA3OCwgCisgICAgMTI4LCA4MywgODUsIDIwNiwgODMsIDg1LCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgODUsIDc3LCA3NywgNjUsIDg0LCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MywgODUsIDc3LCA2NSwgODMsIAorICAgIDcyLCAxMjgsIDgzLCA4NSwgNzcsIDEyOCwgODMsIDg1LCA3NiwgNzAsIDg1LCA4MiwgMTI4LCA4MywgODUsIDc1LCA4NSwgCisgICAgNzgsIDEyOCwgODMsIDg1LCA3NSwgODUsIDIwNiwgODMsIDg1LCA3NSwgODUsIDEyOCwgODMsIDg1LCA3NSwgMjEzLCA4MywgCisgICAgODUsIDczLCA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODMsIDg1LCA3MywgODQsIDEyOCwgODMsIDg1LCA3MiwgODUsIDgyLCAKKyAgICAxMjgsIDgzLCA4NSwgNjksIDEyOCwgODMsIDg1LCA2OCwgNTAsIDEyOCwgODMsIDg1LCA2OCwgMTI4LCA4MywgODUsIDY3LCAKKyAgICA2NywgNjksIDY5LCA2OCwgODMsIDEyOCwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDIxMSwgODMsIDg1LCA2NywgNjcsIAorICAgIDY5LCA2OSwgNjgsIDEyOCwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgMTk2LCA4MywgODUsIDY2LCA4NSwgNzgsIDczLCA4NCwgCisgICAgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCA3MywgNzksIDIwNiwgODMsIDg1LCA2NiwgODMsIDg0LCAKKyAgICA3MywgODQsIDg1LCA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgMTk3LCA4MywgODUsIAorICAgIDY2LCA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA2OSwgMjEyLCA4MywgODUsIDY2LCA4MywgNjcsIDgyLCA3MywgCisgICAgODAsIDIxMiwgODMsIDg1LCA2NiwgODAsIDg1LCA3OCwgNjcsIDg0LCA3MywgODMsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCAKKyAgICA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODUsIAorICAgIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCA0NSwgNTEsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCAKKyAgICA2OSwgNDUsIDUwLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgNzYsIAorICAgIDczLCA3NywgNjUsIDg0LCAxOTcsIDgzLCA4NSwgNjYsIDc0LCA3OSwgNzMsIDc4LCA2OSwgMTk2LCA4MywgODUsIDY2LCA3NCwgCisgICAgNjksIDY3LCA4NCwgMTI4LCA4MywgODUsIDY2LCA3MywgODQsIDc5LCAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCAKKyAgICA4MCwgMTI4LCA4MywgODUsIDY2LCA3MSwgODIsIDc5LCA4NSwgMjA4LCA4MywgODUsIDY2LCAxMjgsIDgzLCA4NSwgNjUsIAorICAgIDY5LCA4NCwgMTI4LCA4MywgODUsIDY1LCA2OSwgNzgsIDEyOCwgODMsIDg1LCA2NSwgNjksIDEyOCwgODMsIDg1LCA2NSwgCisgICAgMTI4LCA4MywgMjEzLCA4MywgODQsIDg4LCAxMjgsIDgzLCA4NCwgODcsIDY1LCAxMjgsIDgzLCA4NCwgODUsIDY4LCA4OSwgCisgICAgMTI4LCA4MywgODQsIDg1LCA2NywgNzUsIDQ1LCA3OSwgODUsIDIxMiwgODMsIDg0LCA4MywgMTI4LCA4MywgODQsIDgyLCAKKyAgICA3OSwgNzUsIDY5LCA4MywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAyMTEsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIAorICAgIDQ1LCA1NywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTYsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgCisgICAgNDUsIDU1LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAKKyAgICA0NSwgNTMsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUyLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIAorICAgIDQ1LCA1MSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgCisgICAgNDUsIDQ5LCA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4NCwgODIsIDc5LCAKKyAgICA3NSwgNjksIDQ1LCA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDE5NywgODMsIDg0LCA4MiwgNzMsIDgwLCA2OSwgCisgICAgMTI4LCA4MywgODQsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgODQsIDgyLCAKKyAgICA3MywgNzUsIDY5LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCA4MywgODQsIDgyLCA3MywgNjgsIDY5LCAxMjgsIAorICAgIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDc2LCAyMTcsIDgzLCA4NCwgODIsIDY5LCA4NCwgNjcsIDcyLCA2OSwgMTk2LCA4MywgCisgICAgODQsIDgyLCA2OSwgODMsIDIxMSwgODMsIDg0LCA4MiwgNjksIDc4LCA3MSwgODQsIDcyLCAxMjgsIDgzLCA4NCwgODIsIDY5LCAKKyAgICA2NSwgNzcsIDY5LCA4MiwgMTI4LCA4MywgODQsIDgyLCA2NSwgODcsIDY2LCA2OSwgODIsIDgyLCA4OSwgMTI4LCA4MywgODQsIAorICAgIDgyLCA2NSwgODQsIDg1LCA3NywgNDUsIDUwLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDc3LCAxMjgsIDgzLCA4NCwgCisgICAgODIsIDY1LCA4NCwgODUsIDIwNSwgODMsIDg0LCA4MiwgNjUsIDg0LCA3MywgNjUsIDIwNiwgODMsIDg0LCA4MiwgNjUsIDczLCAKKyAgICA3OCwgNjksIDgyLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIAorICAgIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIDIxMiwgODMsIDg0LCA4MiwgNjUsIDczLCA3MCwgMTI4LCA4MywgODQsIDgyLCA2NSwgCisgICAgNzEsIDcxLCA3MywgODMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA4NCwgNzksIDg2LCA2OSwgMTI4LCA4MywgODQsIDc5LCAKKyAgICA4MiwgNjksIDEyOCwgODMsIDg0LCA3OSwgODAsIDg3LCA2NSwgODQsIDY3LCA3MiwgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODMsIDg0LCA3OSwgODAsIDgwLCA2NSwgNzEsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgwLCAKKyAgICAxMjgsIDgzLCA4NCwgNzksIDIwOCwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDY3LCA3NSwgMTI4LCAKKyAgICA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDgzLCA4NCwgNzMsIDc2LCAyMDQsIDgzLCA4NCwgNzMsIDc2LCAxOTcsIAorICAgIDgzLCA4NCwgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIDg0LCA2OSwgODAsIDEyOCwgODMsIDg0LCA2OSwgNzcsIDEyOCwgCisgICAgODMsIDg0LCA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgODMsIDg0LCA2OSwgNjUsIDc3LCAxMjgsIDgzLCA4NCwgNjksIDY1LCAKKyAgICAyMDUsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDg1LCAxMjgsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDgzLCAxMjgsIAorICAgIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDIxMSwgODMsIDg0LCA2NSwgODUsIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgCisgICAgODQsIDg1LCAxOTcsIDgzLCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA2OSwgODIsIDgzLCAKKyAgICAxMjgsIDgzLCA4NCwgNjUsIDg0LCA2OSwgMTI4LCA4MywgODQsIDY1LCA4MiwgMjEyLCA4MywgODQsIDY1LCA4MiwgODMsIAorICAgIDEyOCwgODMsIDg0LCA2NSwgODIsIDgyLCA2OSwgMTk2LCA4MywgODQsIDY1LCA4MiwgNzUsIDEyOCwgODMsIDg0LCA2NSwgCisgICAgODIsIDEyOCwgODMsIDg0LCA2NSwgMjEwLCA4MywgODQsIDY1LCA3OCwgNjgsIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCAKKyAgICA4MywgODQsIDY1LCA3OCwgNjgsIDY1LCA4MiwgMTk2LCA4MywgODQsIDY1LCA3OCwgNjgsIDEyOCwgODMsIDg0LCA2NSwgNzgsIAorICAgIDEyOCwgODMsIDg0LCA2NSwgNzYsIDc2LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDcwLCA3MCwgMTI4LCA4MywgCisgICAgODQsIDY1LCA3MCwgMTk4LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgODMsIDg0LCA2NSwgNjcsIDY3LCAKKyAgICA2NSwgODQsIDczLCA4MywgODMsIDczLCA3NywgNzksIDEyOCwgODMsIDg0LCA1MCwgMTI4LCA4MywgODMsIDg5LCA4OCwgCisgICAgMTI4LCA4MywgODMsIDg5LCA4NCwgMTI4LCA4MywgODMsIDg5LCA4MiwgODgsIDEyOCwgODMsIDgzLCA4OSwgODIsIDEyOCwgCisgICAgODMsIDgzLCA4OSwgODAsIDEyOCwgODMsIDgzLCA4OSwgMTI4LCA4MywgODMsIDg1LCA4OCwgMTI4LCA4MywgODMsIDg1LCAKKyAgICA4NSwgMTI4LCA4MywgODMsIDg1LCA4NCwgMTI4LCA4MywgODMsIDg1LCA4MCwgMTI4LCA4MywgODMsIDc5LCA4OCwgMTI4LCAKKyAgICA4MywgODMsIDc5LCA4NCwgMTI4LCA4MywgODMsIDc5LCA4MCwgMTI4LCA4MywgODMsIDc5LCA3OSwgMTI4LCA4MywgODMsIAorICAgIDc5LCAxMjgsIDgzLCA4MywgNzMsIDg4LCAxMjgsIDgzLCA4MywgNzMsIDg0LCAxMjgsIDgzLCA4MywgNzMsIDgwLCAxMjgsIAorICAgIDgzLCA4MywgNzMsIDczLCAxMjgsIDgzLCA4MywgNzMsIDY5LCA4OCwgMTI4LCA4MywgODMsIDczLCA2OSwgODAsIDEyOCwgCisgICAgODMsIDgzLCA3MywgNjksIDEyOCwgODMsIDgzLCA3MywgMTI4LCA4MywgODMsIDcyLCA2OSwgMTI4LCA4MywgODMsIDY5LCAKKyAgICA4OCwgMTI4LCA4MywgODMsIDY5LCA4MCwgMTI4LCA4MywgODMsIDY5LCA2OSwgMTI4LCA4MywgODMsIDY1LCA4OCwgMTI4LCAKKyAgICA4MywgODMsIDY1LCA4NSwgMTI4LCA4MywgODMsIDY1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA4MCwgMTI4LCA4MywgODMsIAorICAgIDY1LCA3OCwgNzEsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCAKKyAgICA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgCisgICAgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDcyLCA3MywgNjksIAorICAgIDg1LCA4NCwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MywgNzUsIDY5LCAKKyAgICA4NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgCisgICAgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCAKKyAgICA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIDczLCA2OSwgCisgICAgODUsIDc2LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIAorICAgIDY5LCA4NSwgNzYsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgCisgICAgNzgsIDcxLCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NywgNzMsIDY5LCA4NSwgNzcsIAorICAgIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgCisgICAgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCAKKyAgICA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgCisgICAgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjUsIDgyLCA2NSwgNjksIAorICAgIDY1LCAxMjgsIDgzLCA4MywgNjUsIDczLCAxMjgsIDgzLCA4MywgNjUsIDY1LCAxMjgsIDgzLCA4MywgNTEsIDEyOCwgODMsIAorICAgIDgzLCA1MCwgMTI4LCA4MywgODIsIDEyOCwgODMsIDgxLCA4NSwgNzMsIDgzLCAyMDAsIDgzLCA4MSwgODUsIDczLCA4MiwgCisgICAgODIsIDY5LCAyMDQsIDgzLCA4MSwgODUsIDczLCA3MSwgNzEsIDc2LCAxOTcsIDgzLCA4MSwgODUsIDY1LCAyMTIsIDgzLCAKKyAgICA4MSwgODUsIDY1LCA4MiwgNjksIDgzLCAxMjgsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDY4LCAxMjgsIDgzLCA4MSwgODUsIAorICAgIDY1LCA4MiwgNjksIDEyOCwgODMsIDgwLCA4NywgNjUsIDEyOCwgODMsIDgwLCA4NSwgNzgsIDcxLCAyMTEsIDgzLCA4MCwgCisgICAgODIsIDc5LCA4NSwgODQsIDEyOCwgODMsIDgwLCA4MiwgNzMsIDc4LCA3MSwgODMsIDEyOCwgODMsIDgwLCA4MiwgNzMsIDc4LCAKKyAgICA3MSwgMTI4LCA4MywgODAsIDgyLCA2OSwgNjcsIDcyLCA3MSwgNjksIDgzLCA2NSwgNzgsIDE5OSwgODMsIDgwLCA3OSwgODUsIAorICAgIDg0LCA3MywgNzgsIDE5OSwgODMsIDgwLCA3OSwgODQsIDEyOCwgODMsIDgwLCA3OSwgNzksIDc4LCAxMjgsIDgzLCA4MCwgCisgICAgNzYsIDczLCA4NCwgODQsIDczLCA3OCwgMTk5LCA4MywgODAsIDc2LCA2NSwgODMsIDcyLCA3MywgNzgsIDE5OSwgODMsIDgwLCAKKyAgICA3MywgODIsIDczLCA4NCwgODUsIDIxMSwgODMsIDgwLCA3MywgODIsIDczLCA4NCwgMTI4LCA4MywgODAsIDczLCA4MiwgNzMsIAorICAgIDIxMiwgODMsIDgwLCA3MywgODIsIDY1LCA3OCwgODQsIDEyOCwgODMsIDgwLCA3MywgODIsIDY1LCA3NiwgMTI4LCA4MywgCisgICAgODAsIDczLCA4MiwgNjUsIDIwNCwgODMsIDgwLCA3MywgNjgsIDY5LCA4MiwgMjE3LCA4MywgODAsIDczLCA2NywgNjksIAorICAgIDEyOCwgODMsIDgwLCA3MiwgNjksIDgyLCA3MywgNjcsIDY1LCAyMDQsIDgzLCA4MCwgNjksIDgzLCA3NywgNzMsIDc2LCAKKyAgICAyMDcsIDgzLCA4MCwgNjksIDY5LCA2OCwgNjYsIDc5LCA2NSwgODQsIDEyOCwgODMsIDgwLCA2OSwgNjksIDY3LCA3MiwgCisgICAgMTI4LCA4MywgODAsIDY5LCA2OSwgNjcsIDIwMCwgODMsIDgwLCA2OSwgNjcsIDczLCA2NSwgNzYsIDEyOCwgODMsIDgwLCAKKyAgICA2OSwgNjUsIDgyLCAxMjgsIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIDgyLCAxMjgsIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIAorICAgIDIxMCwgODMsIDgwLCA2OSwgNjUsIDc1LCA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgMjA0LCA4MywgODAsIDY1LCA4NCwgCisgICAgNzIsIDczLCAxMjgsIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDczLCA3OCwgMTk5LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCAKKyAgICA2OSwgODMsIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNjksIDgyLCAxMjgsIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIAorICAgIDY5LCAxMjgsIDgzLCA4MCwgNjUsIDcxLCA3MiwgNjksIDg0LCA4NCwgNzMsIDEyOCwgODMsIDgwLCA2NSwgNjgsIDY5LCA4MywgCisgICAgMTI4LCA4MywgODAsIDY1LCA2OCwgMTk3LCA4MywgODAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDgzLCA4MCwgNjUsIDY3LCAKKyAgICAxOTcsIDgzLCA4MCwgNjUsIDEyOCwgODMsIDc5LCA4OSwgMTI4LCA4MywgNzksIDg3LCA3MywgNzYsIDIwNywgODMsIDc5LCAKKyAgICA4NywgMTI4LCA4MywgNzksIDg1LCA4NCwgNzIsIDY5LCA4MiwgMjA2LCA4MywgNzksIDg1LCA4NCwgNzIsIDQ1LCA4MywgNzYsIAorICAgIDY1LCA4NiwgNjksIDIxNywgODMsIDc5LCA4NSwgODQsIDIwMCwgODMsIDc5LCA4NSwgODIsIDY3LCA2OSwgMTI4LCA4MywgCisgICAgNzksIDg1LCA3OCwgNjgsIDEyOCwgODMsIDc5LCA4NSwgNzgsIDE5NiwgODMsIDc5LCA4NSwgNzgsIDY1LCA4MCwgMTI4LCAKKyAgICA4MywgNzksIDg1LCAxMjgsIDgzLCA3OSwgODMsIDEyOCwgODMsIDc5LCA4MiwgMTkzLCA4MywgNzksIDgxLCAxMjgsIDgzLCAKKyAgICA3OSwgNzksIDIwNiwgODMsIDc5LCA3OCwgNzQsIDY1LCA3NywgMTI4LCA4MywgNzksIDc4LCA3MSwgMTI4LCA4MywgNzksIAorICAgIDc4LCAxMjgsIDgzLCA3OSwgNzcsIDgwLCA2OSwgNzgsIDE5OSwgODMsIDc5LCA3NywgMTI4LCA4MywgNzksIDc2LCA3MywgCisgICAgNjgsIDg1LCA4MywgMTI4LCA4MywgNzksIDc2LCA3MywgNjgsIDg1LCAyMTEsIDgzLCA3OSwgNzIsIDEyOCwgODMsIDc5LCAKKyAgICA3MSwgNjgsIDczLCA2NSwgMjA2LCA4MywgNzksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjksIDQ1LCA3MCwgODUsIDc4LCA2NywgCisgICAgODQsIDczLCA3OSwgMjA2LCA4MywgNzksIDcwLCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIDc5LCA3MCwgMjEyLCAKKyAgICA4MywgNzksIDE5OCwgODMsIDc5LCA2NywgNzMsIDY5LCA4NCwgODksIDEyOCwgODMsIDc5LCA2NywgNjcsIDY5LCAyMTAsIAorICAgIDgzLCA3OSwgNjUsIDgwLCAxMjgsIDgzLCA3OSwgNjUsIDEyOCwgODMsIDIwNywgODMsIDc4LCA3OSwgODcsIDc3LCA2NSwgCisgICAgNzgsIDEyOCwgODMsIDc4LCA3OSwgODcsIDc3LCA2NSwgMjA2LCA4MywgNzgsIDc5LCA4NywgNzAsIDc2LCA2NSwgNzUsIDY5LCAKKyAgICAxMjgsIDgzLCA3OCwgNzksIDg3LCA2NiwgNzksIDY1LCA4MiwgNjgsIDY5LCA4MiwgMTI4LCA4MywgNzgsIDc5LCA4NywgCisgICAgMTI4LCA4MywgNzgsIDc5LCA4NSwgODQsIDEyOCwgODMsIDc4LCA3OSwgODUsIDIxMiwgODMsIDc4LCA2NSwgMjA4LCA4MywgCisgICAgNzgsIDY1LCA3NSwgNjksIDEyOCwgODMsIDc4LCA2NSwgNzUsIDE5NywgODMsIDc4LCA2NSwgNzMsIDc2LCAxMjgsIDgzLCAKKyAgICA3OCwgMTkzLCA4MywgNzcsIDc5LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDgyLCA3NSwgNzMsIDc4LCAxOTksIAorICAgIDgzLCA3NywgNzMsIDc2LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA3NywgNjksIDY1LCA4MiwgCisgICAgMTI4LCA4MywgNzcsIDY1LCA4MywgMjAwLCA4MywgNzcsIDY1LCA3NiwgNzYsIDY5LCAyMTAsIDgzLCA3NywgNjUsIDc2LCAKKyAgICA3NiwgMTI4LCA4MywgNzYsIDg1LCA4MiwgMTI4LCA4MywgNzYsIDc5LCA4NywgNzYsIDg5LCAxMjgsIDgzLCA3NiwgNzksIAorICAgIDIxNSwgODMsIDc2LCA3OSwgODYsIDc5LCAxMjgsIDgzLCA3NiwgNzksIDIxMiwgODMsIDc2LCA3OSwgODAsIDczLCA3OCwgCisgICAgMTk5LCA4MywgNzYsIDc5LCA4MCwgNjksIDEyOCwgODMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIDY4LCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIDY3LCA2OSwgMTI4LCA4MywgNzYsIDczLCA2NywgMTk3LCA4MywgNzYsIAorICAgIDY5LCA2OSwgODAsIDIxNywgODMsIDc2LCA2OSwgNjksIDgwLCA3MywgNzgsIDE5OSwgODMsIDc2LCA2NSwgODYsIDc5LCA3OCwgCisgICAgNzMsIDE5NSwgODMsIDc2LCA2NSwgODYsIDY5LCAxMjgsIDgzLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA4MywgNzYsIDY1LCAKKyAgICA4MywgMjAwLCA4MywgNzYsIDY1LCA3OCwgODQsIDY5LCAxOTYsIDgzLCA3NSwgODcsIDY1LCAxMjgsIDgzLCA3NSwgODcsIAorICAgIDEyOCwgODMsIDc1LCA4NSwgNzYsIDc2LCAxMjgsIDgzLCA3NSwgODUsIDc2LCAyMDQsIDgzLCA3NSwgNzYsIDczLCA4MiwgCisgICAgNzksIDIwNiwgODMsIDc1LCA3MywgNzgsIDEyOCwgODMsIDc1LCA3MywgNjksIDgyLCAxMjgsIDgzLCA3NSwgMjAxLCA4MywgCisgICAgNzUsIDY5LCA4NywgNjksIDE5NiwgODMsIDc1LCA2NSwgODQsIDY5LCAxMjgsIDgzLCA3NSwgMTI4LCA4MywgNzQsIDY5LCAKKyAgICAxMjgsIDgzLCA3MywgODgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIDgyLCA4NCwgMjAwLCA4MywgNzMsIDg4LCA4NCwgODksIAorICAgIDEyOCwgODMsIDczLCA4OCwgODQsIDIxNywgODMsIDczLCA4OCwgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgCisgICAgNzIsIDIxMSwgODMsIDczLCA4OCwgODQsIDcyLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDgzLCAKKyAgICAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIAorICAgIDg0LCAyMDAsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDIwNiwgCisgICAgODMsIDczLCA4OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgNDUsIDgzLCA4NCwgODIsIAorICAgIDczLCA3OCwgMTk5LCA4MywgNzMsIDg4LCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDgzLCA3MywgODgsIDQ1LCA3NiwgCisgICAgNzMsIDc4LCAxOTcsIDgzLCA3MywgMjE2LCA4MywgNzMsIDg0LCA2OSwgMTI4LCA4MywgNzMsIDgzLCA2NSwgMTI4LCA4MywgCisgICAgNzMsIDgyLCA3MywgNzgsIDcxLCA4NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIAorICAgIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIAorICAgIDg1LCA4MCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzIsIDczLCAKKyAgICA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIAorICAgIDgzLCA3MywgNzksIDgzLCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzcsIDczLCAKKyAgICA2OSwgODUsIDc3LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIAorICAgIDczLCA3OSwgODMsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCAKKyAgICA4MywgNzMsIDc5LCA4MywgNDUsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDcyLCA3MywgCisgICAgNjksIDg1LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgNzMsIDc5LCAKKyAgICA4MywgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDgzLCA3MywgNzksIDIxMSwgODMsIDczLCA3OCwgNzUsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgNDUsIDUxLCAKKyAgICAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MCwgMTI4LCA4MywgNzMsIAorICAgIDc4LCA3MSwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDgzLCA3MywgCisgICAgNzgsIDcxLCA3NiwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNjUsIDY1LCA4NCwgMTI4LCA4MywgNzMsIDc4LCAxOTcsIDgzLCAKKyAgICA3MywgNzgsIDY4LCA3MiwgMjAxLCA4MywgNzMsIDIwNiwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgCisgICAgMTk2LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCA4MiwgMTI4LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCAyMTAsIDgzLCAKKyAgICA3MywgNzcsIDY1LCA3OCwgODMsIDczLCAyMTEsIDgzLCA3MywgNzcsIDY1LCA3NiwgODUsIDc4LCA3MSwgODUsIDIwNiwgODMsIAorICAgIDczLCA3NywgNjUsIDEyOCwgODMsIDczLCA3NiwgODYsIDY5LCA4MiwgMTI4LCA4MywgNzMsIDc2LCA3NSwgMTI4LCA4MywgCisgICAgNzMsIDc2LCA3MywgODEsIDg1LCAxOTMsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgzLCAKKyAgICA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIDE5NywgODMsIDczLCA3NiwgNjUsIDUxLCAxMjgsIDgzLCA3MywgNzUsIAorICAgIDczLCAxMjgsIDgzLCA3MywgNzUsIDUwLCAxMjgsIDgzLCA3MywgNzUsIDE3OCwgODMsIDczLCA3MSwgNzgsIDgzLCAxMjgsIAorICAgIDgzLCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDcxLCA3NywgMTkzLCA4MywgNzMsIDcxLCA2OSwgMjA0LCA4MywgCisgICAgNzMsIDcxLCA1MiwgMTI4LCA4MywgNzMsIDcxLCAxODAsIDgzLCA3MywgNzEsIDEyOCwgODMsIDczLCA2OSwgNjksIDEyOCwgCisgICAgODMsIDczLCA2OCwgNjksIDg3LCA2NSwgODksIDIxMSwgODMsIDczLCA2NywgNzUsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCAKKyAgICA3MywgNjcsIDc1LCA3NiwgNjksIDEyOCwgODMsIDczLCA2NiwgMTk3LCA4MywgMjAxLCA4MywgNzIsIDg5LCA4OCwgMTI4LCAKKyAgICA4MywgNzIsIDg5LCA4NCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgODgsIDEyOCwgODMsIDcyLCA4OSwgODIsIDEyOCwgODMsIAorICAgIDcyLCA4OSwgODAsIDEyOCwgODMsIDcyLCA4OSwgNjksIDEyOCwgODMsIDcyLCA4OSwgNjUsIDEyOCwgODMsIDcyLCA4OSwgCisgICAgMTI4LCA4MywgNzIsIDg3LCA3OSwgODksIDEyOCwgODMsIDcyLCA4NywgNzksIDc5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCAKKyAgICAxMjgsIDgzLCA3MiwgODcsIDczLCA3MywgMTI4LCA4MywgNzIsIDg3LCA3MywgMTI4LCA4MywgNzIsIDg3LCA2OSwgMTI4LCAKKyAgICA4MywgNzIsIDg3LCA2NSwgNjUsIDEyOCwgODMsIDcyLCA4NywgNjUsIDEyOCwgODMsIDcyLCA4NSwgODgsIDEyOCwgODMsIAorICAgIDcyLCA4NSwgODUsIDEyOCwgODMsIDcyLCA4NSwgODQsIDEyOCwgODMsIDcyLCA4NSwgODIsIDg4LCAxMjgsIDgzLCA3MiwgCisgICAgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIDgwLCAxMjgsIDgzLCA3MiwgODUsIDc5LCA4OCwgMTI4LCA4MywgNzIsIDg1LCAKKyAgICA3OSwgODAsIDEyOCwgODMsIDcyLCA4NSwgNzksIDEyOCwgODMsIDcyLCA4NSwgNzcsIDEyOCwgODMsIDcyLCA4NSwgNzAsIAorICAgIDcwLCA3NiwgMTk3LCA4MywgNzIsIDg1LCA2OSwgODEsIDEyOCwgODMsIDcyLCA4NSwgNjksIDc4LCA4MywgNzIsIDg1LCA2OSwgCisgICAgODQsIDEyOCwgODMsIDcyLCA4NSwgNjYsIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCA1MCwgMTI4LCA4MywgNzIsIDg1LCAKKyAgICAxNzgsIDgzLCA3MiwgODUsIDEyOCwgODMsIDcyLCAyMTMsIDgzLCA3MiwgODQsIDY1LCA4MCwgNzMsIDY3LCAxMjgsIDgzLCAKKyAgICA3MiwgODQsIDY1LCAxMjgsIDgzLCA3MiwgODIsIDczLCA3OCwgNjksIDEyOCwgODMsIDcyLCA4MiwgNzMsIDc3LCA4MCwgCisgICAgMTI4LCA4MywgNzIsIDgyLCA3MywgNzMsIDEyOCwgODMsIDcyLCA3OSwgODksIDEyOCwgODMsIDcyLCA3OSwgODgsIDEyOCwgCisgICAgODMsIDcyLCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4NSwgNzYsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgzLCAKKyAgICA3MiwgNzksIDg0LCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgODMsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCAyMTEsIAorICAgIDgzLCA3MiwgNzksIDgyLCA4NCwgNjksIDc4LCA2OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA2NywgNjUsIDc1LCAKKyAgICA2OSwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDg5LCA4MiwgMTI4LCA4MywgNzIsIAorICAgIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDg0LCA4OSwgMjEwLCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCAKKyAgICA4NCwgODcsIDczLCA3MSwgNDUsIDgzLCA3OSwgMjA0LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgCisgICAgNDUsIDc5LCA4MywgMjExLCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDc4LCA2NSwgODUsIAorICAgIDE5NiwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3NywgNjUsIDY4LCAyMTAsIDgzLCA3MiwgCisgICAgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNzIsIDY1LCA3MSwgNjUsIDc2LCAyMDQsIDgzLCA3MiwgNzksIAorICAgIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNjYsIDc0LCA2NSwgODIsIDc1LCA2NSwgMjA2LCA4MywgNzIsIDc5LCAKKyAgICA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDY1LCAyMTAsIDgzLCA3MiwgNzksIDgyLCA4NCwgMTI4LCA4MywgNzIsIAorICAgIDc5LCA4MiwgMjEyLCA4MywgNzIsIDc5LCA4MSwgMTI4LCA4MywgNzIsIDc5LCAyMDksIDgzLCA3MiwgNzksIDgwLCAxMjgsIAorICAgIDgzLCA3MiwgNzksIDc5LCA4NCwgNzMsIDc4LCAxOTksIDgzLCA3MiwgNzksIDc5LCA4NCwgMTI4LCA4MywgNzIsIDc5LCA3OSwgCisgICAgMTI4LCA4MywgNzIsIDc5LCA3MSwgMjAxLCA4MywgNzIsIDc5LCAxOTksIDgzLCA3MiwgNzksIDY5LCAxMjgsIDgzLCA3MiwgCisgICAgNzksIDE5NywgODMsIDcyLCA3OSwgNjUsIDEyOCwgODMsIDcyLCA3OSwgMTI4LCA4MywgNzIsIDczLCA4OSwgODksIDY1LCAKKyAgICA2NSwgNzYsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDczLCA4NCwgNjUsIDEyOCwgODMsIDcyLCA3MywgODQsIDE5MywgODMsIAorICAgIDcyLCA3MywgODIsIDIxMiwgODMsIDcyLCA3MywgODIsIDY1LCA2OSwgMTI4LCA4MywgNzIsIDczLCA4MiwgMTI4LCA4MywgCisgICAgNzIsIDczLCAyMTAsIDgzLCA3MiwgNzMsIDgxLCAxMjgsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDgzLCA3MiwgNzMsIDc4LCAKKyAgICA4NCwgMjA3LCA4MywgNzIsIDczLCA3OCwgNzMsIDcxLCAxMjgsIDgzLCA3MiwgNzMsIDc4LCA2OCwgMTkzLCA4MywgNzIsIAorICAgIDczLCA3OCwgMTI4LCA4MywgNzIsIDczLCAyMDYsIDgzLCA3MiwgNzMsIDc3LCA2NSwgMTI4LCA4MywgNzIsIDczLCA3NywgCisgICAgMTkzLCA4MywgNzIsIDczLCA3NywgMTI4LCA4MywgNzIsIDczLCAyMDUsIDgzLCA3MiwgNzMsIDczLCA3OCwgMTI4LCA4MywgCisgICAgNzIsIDczLCA3MywgMTI4LCA4MywgNzIsIDczLCA3MCwgMjEyLCA4MywgNzIsIDczLCA2OSwgNzYsIDY4LCAxMjgsIDgzLCAKKyAgICA3MiwgNzMsIDY4LCAxMjgsIDgzLCA3MiwgNzMsIDE5NiwgODMsIDcyLCA3MiwgNjUsIDEyOCwgODMsIDcyLCA3MiwgMTkzLCAKKyAgICA4MywgNzIsIDY5LCA4OCwgMTI4LCA4MywgNzIsIDY5LCA4NiwgNjUsIDEyOCwgODMsIDcyLCA2OSwgODUsIDg4LCAxMjgsIAorICAgIDgzLCA3MiwgNjksIDg1LCA3OSwgODEsIDEyOCwgODMsIDcyLCA2OSwgODUsIDY1LCA2OSwgODEsIDg0LCA4NSwgMTI4LCA4MywgCisgICAgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA3MiwgNjksIDg0LCAKICAgICAxMjgsIDgzLCA3MiwgNjksIDIxMiwgODMsIDcyLCA2OSwgODMsIDcyLCA3NiwgNjUsIDc3LCAxMjgsIDgzLCA3MiwgNjksIAogICAgIDgzLCA3MiwgNzMsIDcxLCAxMjgsIDgzLCA3MiwgNjksIDgzLCA3MiwgNzMsIDE5OSwgODMsIDcyLCA2OSwgODMsIDcyLCA1MCwgCiAgICAgMTI4LCA4MywgNzIsIDY5LCA4MywgNzIsIDEyOCwgODMsIDcyLCA2OSwgODEsIDY5LCAyMDQsIDgzLCA3MiwgNjksIDgwLCAKQEAgLTg4MCwzNzYgKzk4NCwzODQgQEAKICAgICAxMjgsIDgzLCA3MiwgNjksIDY5LCAyMDYsIDgzLCA3MiwgNjksIDY5LCAxMjgsIDgzLCA3MiwgNjksIDQ1LCA3MSwgNzksIAogICAgIDY1LCA4NCwgMTI4LCA4MywgNzIsIDE5NywgODMsIDcyLCA2NywgNzIsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDg5LCAxMjgsIAogICAgIDgzLCA3MiwgNjUsIDg4LCAxMjgsIDgzLCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODMsIDcyLCA2NSwgCi0gICAgODYsIDczLCA2NSwgMjA2LCA4MywgNzIsIDY1LCA4NiwgNjksIDE5NiwgODMsIDcyLCA2NSwgODQsIDEyOCwgODMsIDcyLCAKLSAgICA2NSwgODIsIDg1LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMTMsIDgzLCA3MiwgNjUsIDgyLCA4MCwgMTI4LCA4MywgNzIsIAotICAgIDY1LCA4MiwgMjA4LCA4MywgNzIsIDY1LCA4MiwgNjUsIDEyOCwgODMsIDcyLCA2NSwgODIsIDUwLCAxMjgsIDgzLCA3MiwgCi0gICAgNjUsIDgyLCAxNzgsIDgzLCA3MiwgNjUsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDgwLCA2OSwgODMsIAotICAgIDEyOCwgODMsIDcyLCA2NSwgODAsIDE5NywgODMsIDcyLCA2NSwgODAsIDEyOCwgODMsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIAotICAgIDgzLCA3MiwgNjUsIDc4LCAxMjgsIDgzLCA3MiwgNjUsIDIwNiwgODMsIDcyLCA2NSwgNzcsIDgyLCA3OSwgNjcsIDc1LCAKLSAgICAxMjgsIDgzLCA3MiwgNjUsIDc2LCA4MywgNzIsIDY5LCA3NiwgNjksIDg0LCAxMjgsIDgzLCA3MiwgNjUsIDc1LCA4NCwgNzMsIAotICAgIDEyOCwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgODMsIDcyLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA3MiwgCi0gICAgNjUsIDY4LCA2OCwgNjUsIDEyOCwgODMsIDcyLCA2NSwgNjgsIDY4LCAxOTMsIDgzLCA3MiwgNjUsIDY4LCAxMjgsIDgzLCAKLSAgICA3MiwgNjUsIDE5NiwgODMsIDcyLCA2NSwgNjYsIDU0LCAxMjgsIDgzLCA3MiwgNjUsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIAotICAgIDU0LCAxMjgsIDgzLCA3MiwgNjUsIDUxLCAxMjgsIDgzLCA3MiwgNjUsIDE3OSwgODMsIDcxLCA4MiwgMTkzLCA4MywgNzEsIAotICAgIDc5LCAyMTAsIDgzLCA3MSwgNjUsIDIxNSwgODMsIDcxLCA2NSwgMTk0LCA4MywgNzEsIDEyOCwgODMsIDY5LCA4OCwgODQsIAotICAgIDg1LCA3NiwgMTkzLCA4MywgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgNjksIDg4LCA4NCwgNjUsIDc4LCAKLSAgICAyMTEsIDgzLCA2OSwgODYsIDY5LCA4MiwgNjUsIDc4LCA2NywgNjksIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgODksIAotICAgIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgMjE3LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4MywgCi0gICAgNjksIDg2LCA2OSwgNzgsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCA2OSwgMjA2LCAKLSAgICA4MywgNjksIDg2LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCAyMDYsIAotICAgIDgzLCA2OSwgODUsIDg4LCAxMjgsIDgzLCA2OSwgODUsIDc4LCA4OSwgNjUsIDc3LCAxMjgsIDgzLCA2OSwgODUsIDY1LCA2OSwgCi0gICAgODEsIDEyOCwgODMsIDY5LCA4NCwgNzAsIDc5LCA3OCwgMTI4LCA4MywgNjksIDgzLCA4NCwgNjksIDgyLCA4NCwgNzMsIDg1LCAKLSAgICAyMTEsIDgzLCA2OSwgODMsIDgxLCA4NSwgNzMsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDg0LCA2OSwgMTI4LCA4MywgNjksIAotICAgIDgzLCA2NSwgNzcsIDE5NywgODMsIDY5LCA4MiwgODYsIDczLCA2NywgMTk3LCA4MywgNjksIDgyLCA3MywgNzAsIDgzLCAKLSAgICAxMjgsIDgzLCA2OSwgODIsIDczLCA3MCwgMjExLCA4MywgNjksIDgwLCA4NCwgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIAotICAgIDgzLCA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCAKLSAgICAyMTAsIDgzLCA2OSwgNzgsIDg0LCA3OSwgMTI4LCA4MywgNjksIDc4LCA4NCwgNzMsIDEyOCwgODMsIDY5LCA3NywgODUsIAotICAgIDc4LCA2NywgNzMsIDE5MywgODMsIDY5LCA3NywgNzUsIDY1LCA4NCwgNzIsIDEyOCwgODMsIDY5LCA3NywgNzUsIDEyOCwgCi0gICAgODMsIDY5LCA3NywgNzMsIDg2LCA3OSwgODcsIDY5LCAyMDQsIDgzLCA2OSwgNzcsIDczLCA4MywgNzksIDcwLCAyMTIsIDgzLCAKLSAgICA2OSwgNzcsIDczLCA4MywgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgNjksIDc3LCA3MywgNzcsIDczLCA3OCwgCi0gICAgNzMsIDc3LCAxOTMsIDgzLCA2OSwgNzcsIDczLCA2OCwgNzMsIDgyLCA2OSwgNjcsIDIxMiwgODMsIDY5LCA3NywgNzMsIDY3LCAKLSAgICA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4MywgNjksIDc3LCA3MywgNjcsIDc5LCA3NiwgNzksIDIwNiwgODMsIDY5LCA3NywgNzMsIAotICAgIDY3LCA3MywgODIsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgzLCA2OSwgNzcsIDczLCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgCi0gICAgODMsIDY5LCA3NywgNzMsIDY2LCA4MiwgNjksIDg2LCA3MywgMjExLCA4MywgNjksIDc3LCA3MywgNDUsIDg2LCA3OSwgNzMsIAotICAgIDY3LCA2OSwgMTk2LCA4MywgNjksIDc2LCA3MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NiwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUyLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDQ5LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTcsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDU0LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTQsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTEsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNDgsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NiwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAKLSAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAKLSAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAKLSAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU3LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU0LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTEsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgCi0gICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU1LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIAotICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNDgsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAKLSAgICA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUyLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNDgsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUwLCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDQ5LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NiwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUwLCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDQ5LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTcsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MywgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCAKLSAgICA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTEsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNDgsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDU2LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU1LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDU2LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUyLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTYsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNDgsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NiwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUyLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDU1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIAotICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1NCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NiwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAKLSAgICA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDU0LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDQ5LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgCi0gICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NiwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MywgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTcsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTcsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTQsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTQsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgCi0gICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIAotICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTEsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTEsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNDgsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDgzLCA2OSwgNzMsIDgzLCAKLSAgICA3NywgNjUsIDEyOCwgODMsIDY5LCA3MywgODMsIDc3LCAxOTMsIDgzLCA2OSwgNzIsIDEyOCwgODMsIDY5LCA3MSwgNzksIAotICAgIDc2LCAxMjgsIDgzLCA2OSwgNzEsIDc4LCA3OSwgMTI4LCA4MywgNjksIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA4MywgCi0gICAgNjksIDY5LCA3OCwgODUsIDEyOCwgODMsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDY5LCA2OSwgMjA2LCA4MywgNjksIDY5LCAKLSAgICA2OCwgNzYsIDczLCA3OCwgNzEsIDEyOCwgODMsIDY5LCA2OSwgNDUsIDc4LCA3OSwgNDUsIDY5LCA4NiwgNzMsIDIwNCwgODMsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgNjksIDY3LCA4NCwgCi0gICAgNzMsIDc5LCAyMDYsIDgzLCA2OSwgNjcsIDgyLCA2OSwgODQsIDEyOCwgODMsIDY5LCA2NywgNzksIDc4LCA2OCwgMTI4LCAKLSAgICA4MywgNjksIDY2LCA2NSwgODQsIDY2LCA2OSwgNzMsIDIxMiwgODMsIDY5LCA2NSwgODQsIDEyOCwgODMsIDY5LCA2NSwgNzYsIAotICAgIDEyOCwgODMsIDY5LCA2NSwgNzEsIDg1LCA3NiwgMjA0LCA4MywgNjgsIDc5LCA3OCwgMTk5LCA4MywgNjgsIDEyOCwgODMsIAotICAgIDY3LCA4NywgNjUsIDEyOCwgODMsIDY3LCA4MiwgODUsIDgwLCA3NiwgNjksIDEyOCwgODMsIDY3LCA4MiwgNzksIDc2LCA3NiwgCi0gICAgMTI4LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDY3LCAKLSAgICA4MiwgNjksIDY5LCAyMDYsIDgzLCA2NywgODIsIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCA4MywgNjcsIDc5LCA4MiwgODAsIAotICAgIDczLCA4NSwgODMsIDEyOCwgODMsIDY3LCA3OSwgODIsIDY5LCAxMjgsIDgzLCA2NywgNzMsIDgzLCA4MywgNzksIDgyLCA4MywgCi0gICAgMTI4LCA4MywgNjcsIDcyLCA4NywgNjUsIDEyOCwgODMsIDY3LCA3MiwgODcsIDE5MywgODMsIDY3LCA3MiwgODIsIDc5LCAKLSAgICA2OSwgNjgsIDY5LCA4MiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIDc2LCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgCi0gICAgMjA0LCA4MywgNjcsIDcyLCA3OSwgNzYsIDY1LCA4MiwgMTI4LCA4MywgNjcsIDcyLCA2OSwgNzcsIDE5MywgODMsIDY3LCAKLSAgICA2OSwgODAsIDg0LCA2OSwgMjEwLCA4MywgNjcsIDY1LCA3OCwgNjgsIDczLCA2NywgODUsIDgzLCAxMjgsIDgzLCA2NywgNjUsIAotICAgIDc4LCA2OCwgNzMsIDY3LCA4NSwgMjExLCA4MywgNjcsIDY1LCAyMDYsIDgzLCA2NywgNjUsIDc2LCA2OSwgODMsIDEyOCwgCi0gICAgODMsIDY2LCA4NSwgMTk0LCA4MywgNjYsIDgyLCA4NSwgMjA0LCA4MywgNjUsIDg5LCA3MywgODMsIDIwMSwgODMsIDY1LCAKLSAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODMsIDY1LCA4OSwgMTI4LCA4MywgNjUsIDg4LCA3OSwgODAsIDcyLCA3OSwgNzgsIAotICAgIDY5LCAxMjgsIDgzLCA2NSwgODgsIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MywgNjUsIDg3LCA2NSwgNzgsIDEyOCwgCi0gICAgODMsIDY1LCA4NywgMTI4LCA4MywgNjUsIDg2LCA3OSwgODUsIDgyLCA3MywgNzgsIDE5OSwgODMsIDY1LCA4NSwgNzMsIDc2LCAKLSAgICAxMjgsIDgzLCA2NSwgODQsIDg1LCA4MiwgNzgsIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgNzgsIDc1LCA4NSwgODUsIAotICAgIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgNzgsIDEyOCwgODMsIDY1LCA4NCwgNjksIDc2LCA3NiwgNzMsIDg0LCAKLSAgICAxOTcsIDgzLCA2NSwgODQsIDY3LCA3MiwgNjksIDc2LCAxMjgsIDgzLCA2NSwgODMsIDcyLCAxMjgsIDgzLCA2NSwgODMsIAotICAgIDY1LCA3NSwgMTI4LCA4MywgNjUsIDgyLCA3MywgMTI4LCA4MywgNjUsIDgyLCAxOTMsIDgzLCA2NSwgODIsIDEyOCwgODMsIAotICAgIDY1LCA4MSwgMTI4LCA4MywgNjUsIDgwLCA2NSwgMTI4LCA4MywgNjUsIDc4LCA4OSwgNzksIDc5LCA3MSwgMTkzLCA4MywgCi0gICAgNjUsIDc4LCA4OSwgNjUsIDc1LCAxOTMsIDgzLCA2NSwgNzgsIDg0LCA3MywgNzMsIDc3LCA4NSwgMTI4LCA4MywgNjUsIDc4LCAKLSAgICA3OCwgODksIDY1LCAxMjgsIDgzLCA2NSwgNzgsIDcxLCA2NSwgNTAsIDEyOCwgODMsIDY1LCA3OCwgNjgsIDY1LCA3NiwgCi0gICAgMTI4LCA4MywgNjUsIDc4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDc3LCA4OSwgNzksIDIwMywgCi0gICAgODMsIDY1LCA3NywgODAsIDczLCAxMjgsIDgzLCA2NSwgNzcsIDgwLCA3MiwgNjUsIDc5LCAxMjgsIDgzLCA2NSwgNzcsIDc1LCAKLSAgICA2NSwgMTI4LCA4MywgNjUsIDc3LCA2OSwgNzUsIDcyLCAxMjgsIDgzLCA2NSwgNzcsIDY5LCA3NSwgMjAwLCA4MywgNjUsIAotICAgIDc3LCA2NiwgNjUsIDEyOCwgODMsIDY1LCA3NywgNjUsIDgyLCA3MywgODQsIDY1LCAyMDYsIDgzLCA2NSwgNzcsIDEyOCwgCi0gICAgODMsIDY1LCA3NiwgODQsIDczLCA4MiwgNjksIDEyOCwgODMsIDY1LCA3NiwgODQsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDgzLCAKLSAgICA2NSwgNzYsIDg0LCA0NSwgNTAsIDEyOCwgODMsIDY1LCA3NiwgODQsIDEyOCwgODMsIDY1LCA3NiwgMjEyLCA4MywgNjUsIAotICAgIDc2LCA3NiwgNjUsIDc2LCA3NiwgNjUsIDcyLCA3OSwgMjEzLCA4MywgNjUsIDc2LCA3NiwgMTkzLCA4MywgNjUsIDc2LCA2NSwgCi0gICAgMjA1LCA4MywgNjUsIDc2LCA2NSwgMTI4LCA4MywgNjUsIDc2LCA0NSwgNjUsIDc3LCA3NywgNzksIDc4LCA3MywgNjUsIDY3LCAKLSAgICAxMjgsIDgzLCA2NSwgNzYsIDEyOCwgODMsIDY1LCA3NSwgNzksIDg0LCAxMjgsIDgzLCA2NSwgNzUsIDY5LCA4NSwgNjUsIAotICAgIDY5LCAxMjgsIDgzLCA2NSwgNzUsIDE5NywgODMsIDY1LCA3NCwgNjgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDczLCA3NiwgCi0gICAgNjYsIDc5LCA2NSwgODQsIDEyOCwgODMsIDY1LCA3MywgNzYsIDEyOCwgODMsIDY1LCA3MywgNzUsIDg1LCA4MiwgODUsIAotICAgIDEyOCwgODMsIDY1LCA3MSwgNzMsIDg0LCA4NCwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NSwgNzEsIDY1LCAKLSAgICAxMjgsIDgzLCA2NSwgNzEsIDEyOCwgODMsIDY1LCAxOTksIDgzLCA2NSwgNzAsIDcyLCA2NSwgMTI4LCA4MywgNjUsIDY4LCAKLSAgICA3MiwgNjksIDEyOCwgODMsIDY1LCA2OCwgNjksIDEyOCwgODMsIDY1LCA2OCwgMTI4LCA4MywgNjUsIDE5NiwgODMsIDY1LCAKLSAgICA2NywgODIsIDczLCA3MCwgNzMsIDY3LCA3MywgNjUsIDIwNCwgODMsIDY1LCA2NSwgNzMsIDEyOCwgODMsIDY1LCA2NSwgNjgsIAotICAgIDcyLCA4NSwgMTI4LCA4MywgNjUsIDQ1LCA3MywgMTI4LCA4MywgNDgsIDUyLCA1NCwgMTI4LCA4MywgNDgsIDUyLCA1MywgCi0gICAgMTI4LCA4MywgNDgsIDUyLCA1MiwgMTI4LCA4MywgNDgsIDUyLCA1MSwgMTI4LCA4MywgNDgsIDUyLCA1MCwgMTI4LCA4MywgCi0gICAgNDgsIDUyLCA0OSwgMTI4LCA4MywgNDgsIDUyLCA0OCwgMTI4LCA4MywgNDgsIDUxLCA1NywgMTI4LCA4MywgNDgsIDUxLCAKLSAgICA1NiwgMTI4LCA4MywgNDgsIDUxLCA1NSwgMTI4LCA4MywgNDgsIDUxLCA1NCwgMTI4LCA4MywgNDgsIDUxLCA1MywgNjUsIAotICAgIDEyOCwgODMsIDQ4LCA1MSwgNTMsIDEyOCwgODMsIDQ4LCA1MSwgNTIsIDEyOCwgODMsIDQ4LCA1MSwgNTEsIDEyOCwgODMsIAotICAgIDQ4LCA1MSwgNTAsIDEyOCwgODMsIDQ4LCA1MSwgNDksIDEyOCwgODMsIDQ4LCA1MSwgNDgsIDEyOCwgODMsIDQ4LCA1MCwgCi0gICAgNTcsIDEyOCwgODMsIDQ4LCA1MCwgNTYsIDEyOCwgODMsIDQ4LCA1MCwgNTUsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDY2LCAKLSAgICAxMjgsIDgzLCA0OCwgNTAsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDUwLCA1NCwgMTI4LCA4MywgNDgsIDUwLCA1MywgMTI4LCAKLSAgICA4MywgNDgsIDUwLCA1MiwgMTI4LCA4MywgNDgsIDUwLCA1MSwgMTI4LCA4MywgNDgsIDUwLCA1MCwgMTI4LCA4MywgNDgsIAotICAgIDUwLCA0OSwgMTI4LCA4MywgNDgsIDUwLCA0OCwgMTI4LCA4MywgNDgsIDQ5LCA1NywgMTI4LCA4MywgNDgsIDQ5LCA1NiwgCi0gICAgMTI4LCA4MywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgODMsIDQ4LCA0OSwgNTUsIDEyOCwgODMsIDQ4LCA0OSwgNTQsIDEyOCwgCi0gICAgODMsIDQ4LCA0OSwgNTMsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDY2LCAxMjgsIDgzLCA0OCwgNDksIDUyLCA2NSwgMTI4LCAKLSAgICA4MywgNDgsIDQ5LCA1MiwgMTI4LCA4MywgNDgsIDQ5LCA1MSwgMTI4LCA4MywgNDgsIDQ5LCA1MCwgMTI4LCA4MywgNDgsIAotICAgIDQ5LCA0OSwgMTI4LCA4MywgNDgsIDQ5LCA0OCwgMTI4LCA4MywgNDgsIDQ4LCA1NywgMTI4LCA4MywgNDgsIDQ4LCA1NiwgCi0gICAgMTI4LCA4MywgNDgsIDQ4LCA1NSwgMTI4LCA4MywgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgNTQsIDEyOCwgCi0gICAgODMsIDQ4LCA0OCwgNTMsIDEyOCwgODMsIDQ4LCA0OCwgNTIsIDEyOCwgODMsIDQ4LCA0OCwgNTEsIDEyOCwgODMsIDQ4LCAKLSAgICA0OCwgNTAsIDY1LCAxMjgsIDgzLCA0OCwgNDgsIDUwLCAxMjgsIDgzLCA0OCwgNDgsIDQ5LCAxMjgsIDgzLCA0NSwgODcsIAotICAgIDEyOCwgODMsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgODIsIDg5LCA4OSwgMTI4LCA4MiwgODksIDg4LCAxMjgsIAotICAgIDgyLCA4OSwgODQsIDEyOCwgODIsIDg5LCA4MiwgODgsIDEyOCwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODksIDgwLCAxMjgsIAotICAgIDgyLCA4OSwgNjUsIDEyOCwgODIsIDg3LCA3OSwgNzksIDEyOCwgODIsIDg3LCA3OSwgMTI4LCA4MiwgODcsIDczLCA3MywgCi0gICAgMTI4LCA4MiwgODcsIDczLCAxMjgsIDgyLCA4NywgNjksIDY5LCAxMjgsIDgyLCA4NywgNjksIDEyOCwgODIsIDg3LCA2NSwgCi0gICAgNzIsIDY1LCAxMjgsIDgyLCA4NywgNjUsIDY1LCAxMjgsIDgyLCA4NywgNjUsIDEyOCwgODIsIDg1LCA4OCwgMTI4LCA4MiwgCi0gICAgODUsIDg1LCA2NiwgODUsIDgyLCA4NSwgMTI4LCA4MiwgODUsIDg0LCAxMjgsIDgyLCA4NSwgODMsIDczLCAxMjgsIDgyLCAKLSAgICA4NSwgODIsIDg4LCAxMjgsIDgyLCA4NSwgODIsIDEyOCwgODIsIDg1LCA4MCwgNzMsIDczLCAxMjgsIDgyLCA4NSwgODAsIAotICAgIDY5LCAxOTcsIDgyLCA4NSwgODAsIDEyOCwgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIDg1LCA3OSwgODAsIDEyOCwgODIsIAotICAgIDg1LCA3OSwgMTI4LCA4MiwgODUsIDc4LCA3OSwgODUsIDg0LCAxMjgsIDgyLCA4NSwgNzgsIDc4LCA3MywgNzgsIDE5OSwgCi0gICAgODIsIDg1LCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA4MiwgODUsIDc4LCAxMjgsIDgyLCA4NSwgNzcsIDIwMSwgODIsIDg1LCAKLSAgICA3NywgNjUsIDIwMSwgODIsIDg1LCA3NywgMTI4LCA4MiwgODUsIDIwNSwgODIsIDg1LCA3NiwgNjksIDgyLCAxMjgsIDgyLCAKLSAgICA4NSwgNzYsIDY5LCA0NSwgNjgsIDY5LCA3NiwgNjUsIDg5LCA2OSwgNjgsIDEyOCwgODIsIDg1LCA3NiwgNjksIDEyOCwgODIsIAotICAgIDg1LCA3NSwgNzUsIDY1LCA3NSwgNzIsIDY1LCAxMjgsIDgyLCA4NSwgNzMsIDgzLCAxMjgsIDgyLCA4NSwgNzEsIDY2LCAKLSAgICAyMTcsIDgyLCA4NSwgMTk0LCA4MiwgODUsIDY1LCAxMjgsIDgyLCA4NCwgNzIsIDY1LCA3OCwgMTk5LCA4MiwgODQsIDY1LCAKLSAgICA3MSwgODMsIDEyOCwgODIsIDg0LCA2NSwgNzEsIDIxMSwgODIsIDgyLCA4OSwgODgsIDEyOCwgODIsIDgyLCA4OSwgODQsIAotICAgIDEyOCwgODIsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDgyLCA4MiwgODksIDgyLCAxMjgsIDgyLCA4MiwgODksIDgwLCAxMjgsIAotICAgIDgyLCA4MiwgODUsIDg4LCAxMjgsIDgyLCA4MiwgODUsIDg0LCAxMjgsIDgyLCA4MiwgODUsIDgyLCA4OCwgMTI4LCA4MiwgCi0gICAgODIsIDg1LCA4MiwgMTI4LCA4MiwgODIsIDg1LCA4MCwgMTI4LCA4MiwgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIDgyLCAKLSAgICA4NSwgNzksIDEyOCwgODIsIDgyLCA4NSwgMTI4LCA4MiwgODIsIDc5LCA4OCwgMTI4LCA4MiwgODIsIDc5LCA4NCwgMTI4LCAKLSAgICA4MiwgODIsIDc5LCA4MCwgMTI4LCA4MiwgODIsIDc5LCAxMjgsIDgyLCA4MiwgNjksIDg4LCAxMjgsIDgyLCA4MiwgNjksIAotICAgIDg0LCAxMjgsIDgyLCA4MiwgNjksIDgwLCAxMjgsIDgyLCA4MiwgNjksIDcyLCAxMjgsIDgyLCA4MiwgNjksIDIwMCwgODIsIAotICAgIDgyLCA2OSwgMTI4LCA4MiwgODIsIDY1LCA4OCwgMTI4LCA4MiwgODIsIDY1LCAxMjgsIDgyLCA3OSwgODcsIDY2LCA3OSwgCi0gICAgNjUsIDg0LCAxMjgsIDgyLCA3OSwgODUsIDc4LCA2OCwgNjksIDE5NiwgODIsIDc5LCA4NSwgNzgsIDY4LCA0NSwgODQsIDczLCAKLSAgICA4MCwgODAsIDY5LCAxOTYsIDgyLCA3OSwgODQsIDg1LCA3OCwgNjgsIDY1LCAxMjgsIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIAotICAgIDE5NiwgODIsIDc5LCA4MywgNzIsIDEyOCwgODIsIDc5LCA4MywgNjksIDg0LCA4NCwgNjksIDEyOCwgODIsIDc5LCA4MywgCi0gICAgNjksIDEyOCwgODIsIDc5LCA3OSwgODQsIDEyOCwgODIsIDc5LCA3OSwgODMsIDg0LCA2OSwgODIsIDEyOCwgODIsIDc5LCAKLSAgICA3OSwgNzUsIDEyOCwgODIsIDc5LCA3OSwgNzAsIDEyOCwgODIsIDc5LCA3OSwgMTI4LCA4MiwgNzksIDc3LCA2NSwgMjA2LCAKLSAgICA4MiwgNzksIDc3LCAxMjgsIDgyLCA3OSwgNzYsIDc2LCA2OSwgMjEwLCA4MiwgNzksIDE5NiwgODIsIDc5LCA2NywgNzUsIAotICAgIDY5LCA4NCwgMTI4LCA4MiwgNzksIDY3LCAyMDMsIDgyLCA3OSwgNjcsIDEyOCwgODIsIDc5LCA2NiwgNjUsIDg0LCAxMjgsIAotICAgIDgyLCA3OSwgNjUsIDgzLCA4NCwgNjksIDE5NiwgODIsIDc5LCA2NSwgODIsIDEyOCwgODIsIDc5LCA2NSwgMTI4LCA4MiwgCi0gICAgNzgsIDg5LCA3MywgNzgsIDE5OSwgODIsIDc4LCA3OSwgNzksIDc4LCAxMjgsIDgyLCA3OCwgNzksIDc5LCAyMDYsIDgyLCAKLSAgICA3OCwgNjUsIDIwNSwgODIsIDc0LCA2OSwgMjExLCA4MiwgNzQsIDY5LCAxMjgsIDgyLCA3NCwgMTk3LCA4MiwgNzMsIDg2LCAKLSAgICA2OSwgODIsIDEyOCwgODIsIDczLCA4NCwgODUsIDY1LCA3NiwgMTI4LCA4MiwgNzMsIDg0LCA4NCwgNzksIDgyLCA4NSwgCi0gICAgMTI4LCA4MiwgNzMsIDg0LCA4MywgNzMsIDEyOCwgODIsIDczLCA4MywgNzMsIDc4LCAxOTksIDgyLCA3MywgODMsIDcyLCAKLSAgICAxMjgsIDgyLCA3MywgODIsIDY1LCAxMjgsIDgyLCA3MywgODAsIDEyOCwgODIsIDczLCA3OCwgNzEsIDIxMSwgODIsIDczLCAKLSAgICA3OCwgNzAsIDc5LCA4MiwgOTAsIDY1LCA3OCwgNjgsIDc5LCAxMjgsIDgyLCA3MywgMjA2LCA4MiwgNzMsIDc3LCA3MSwgNjYsIAotICAgIDY1LCAxMjgsIDgyLCA3MywgNzUsIDgyLCA3MywgNzUsIDEyOCwgODIsIDczLCA3MywgMTI4LCA4MiwgNzMsIDcxLCA4NiwgCi0gICAgNjksIDY4LCA3MywgMTk1LCA4MiwgNzMsIDcxLCA3MiwgODQsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA4MiwgNzMsIDcxLCAKLSAgICA3MiwgODQsIDcyLCA2NSwgNzgsIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODQsIDc5LCA0NSwgNzYsIDY5LCA3MCwgCi0gICAgMjEyLCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzMsIDY4LCAxOTcsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCAKLSAgICA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA2OSwgCi0gICAgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDcxLCAKLSAgICA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCA2OCwgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIDY1LCA3OCwgCi0gICAgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgODIsIDczLCA3MSwgNzIsIDg0LCAKLSAgICAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MiwgNzMsIAotICAgIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCAKLSAgICA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA3MiwgCi0gICAgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCAKLSAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCi0gICAgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIAotICAgIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKLSAgICA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgCi0gICAgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIAotICAgIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODQsIDczLCAKLSAgICA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgCi0gICAgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MCwgNzIsIAotICAgIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCAKLSAgICA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIAotICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCAKLSAgICA3NiwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc4LCA3MywgCi0gICAgNjksIDg1LCA3OCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgNzMsIAotICAgIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3NSwgNzMsIDg5LCAKLSAgICA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDcyLCA3MywgCi0gICAgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODIsIDczLCAKLSAgICA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgCi0gICAgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKLSAgICA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCi0gICAgNzYsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNjcsIDczLCA2OSwgODUsIAotICAgIDY3LCAxMjgsIDgyLCA3MywgNjksIDg1LCAyMDQsIDgyLCA3MywgNjksIDc2LCAxMjgsIDgyLCA3MywgNjksIDY5LCAxMjgsIAotICAgIDgyLCA3MywgNjcsIDY5LCA3NywgMTI4LCA4MiwgNzMsIDY3LCA2OSwgMTI4LCA4MiwgNzMsIDY3LCAxOTcsIDgyLCA3MywgCi0gICAgNjYsIDY2LCA3OSwgNzgsIDEyOCwgODIsIDczLCA2NSwgMjA0LCA4MiwgNzIsIDc5LCA4NCwgNzMsIDE5NSwgODIsIDcyLCAKLSAgICA3OSwgMTI4LCA4MiwgNzIsIDIwNywgODIsIDcyLCA2NSwgMTI4LCA4MiwgNzEsIDg5LCA3MywgNzgsIDcxLCA4MywgMTI4LCAKLSAgICA4MiwgNzEsIDg5LCA2NSwgNzgsIDEyOCwgODIsIDcxLCA4OSwgMTkzLCA4MiwgNjksIDg2LCA3OSwgNzYsIDg2LCA3MywgNzgsIAotICAgIDE5OSwgODIsIDY5LCA4NiwgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA4NiwgNzcsIDY1LCAKLSAgICAxMjgsIDgyLCA2OSwgODYsIDczLCA2NSwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDEyOCwgODIsIAotICAgIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDE5NiwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgMTk3LCA4MiwgNjksIDg1LCA4OCwgCi0gICAgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDc4LCAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgMjA2LCA4MiwgNjksIDg0LCAKLSAgICA4MiwgNzksIDcwLCA3NiwgNjksIDIxNiwgODIsIDY5LCA4NCwgODIsIDY5LCA2NSwgODQsIDEyOCwgODIsIDY5LCA4NCwgNzksIAotICAgIDgyLCA4NCwgMTI4LCA4MiwgNjksIDgzLCA4NSwgODAsIDczLCA3OCwgODUsIDgzLCAxMjgsIDgyLCA2OSwgODMsIDg0LCA4MiwgCi0gICAgNzksIDc5LCA3NywgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDY5LCAxOTYsIDgyLCA2OSwgODMsIDg0LCAKLSAgICAxMjgsIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIDgzLCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3OSwgODUsIDgyLCA2NywgNjksIAotICAgIDEyOCwgODIsIDY5LCA4MywgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA4MywgNzMsIDgzLCA4NCwgCi0gICAgNjUsIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgNzMsIDY4LCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCAKLSAgICAyMDAsIDgyLCA2OSwgODIsIDY5LCA3OCwgNzEsIDcxLCA2NSwgNzgsIDEyOCwgODIsIDY5LCA4MiwgNjksIDc1LCA2NSwgNzgsIAotICAgIDEyOCwgODIsIDY5LCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgMTI4LCA4MiwgNjksIDgwLCA3NiwgNjUsIDY3LCA2OSwgCi0gICAgNzcsIDY5LCA3OCwgMjEyLCA4MiwgNjksIDgwLCA3MiwgMTI4LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCA2OSwgMTk2LCAKLSAgICA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCA2OSwgODAsIDY5LCA2NSwgMjEyLCA4MiwgNjksIDgwLCA2NSwgCi0gICAgMTI4LCA4MiwgNjksIDgwLCAxOTMsIDgyLCA2OSwgNzgsIDg0LCA3OSwgNzEsIDY5LCA3OCwgMTI4LCA4MiwgNjksIDc4LCAKLSAgICAxMjgsIDgyLCA2OSwgMjA2LCA4MiwgNjksIDc3LCA4NSwgMTI4LCA4MiwgNjksIDc3LCA2OSwgNjgsIDg5LCAxMjgsIDgyLCAKLSAgICA2OSwgNzYsIDczLCA3MSwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDc2LCA3MywgNjksIDg2LCA2OSwgMTk2LCA4MiwgNjksIAotICAgIDc2LCA2OSwgNjUsIDgzLCA2OSwgMTI4LCA4MiwgNjksIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgCi0gICAgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDc2LCA2NSwgNjUsIDEyOCwgODIsIDY5LCA3NCwgNjUsIDc4LCAKLSAgICAxOTksIDgyLCA2OSwgNzMsIDE5NiwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MiwgMTI4LCA4MiwgNjksIAotICAgIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUxLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTAsIDEyOCwgCi0gICAgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgMjExLCA4MiwgNjksIDcxLCAKLSAgICA3MywgODMsIDg0LCA2OSwgODIsIDY5LCAxOTYsIDgyLCA2OSwgNzEsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNzEsIAotICAgIDczLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNzEsIDczLCA2NSwgMTI4LCA4MiwgNjksIDcwLCA2OSwgODIsIDY5LCA3OCwgCisgICAgODYsIDczLCA2NSwgMjA2LCA4MywgNzIsIDY1LCA4NiwgNjksIDE5NiwgODMsIDcyLCA2NSwgODUsIDEyOCwgODMsIDcyLCAKKyAgICA2NSwgODQsIDEyOCwgODMsIDcyLCA2NSwgODIsIDg1LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMTMsIDgzLCA3MiwgNjUsIAorICAgIDgyLCA4MCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMjA4LCA4MywgNzIsIDY1LCA4MiwgNjUsIDEyOCwgODMsIDcyLCA2NSwgCisgICAgODIsIDUwLCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAxNzgsIDgzLCA3MiwgNjUsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCAKKyAgICA3MiwgNjUsIDgwLCA2OSwgODMsIDEyOCwgODMsIDcyLCA2NSwgODAsIDE5NywgODMsIDcyLCA2NSwgODAsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDc4LCAxMjgsIDgzLCA3MiwgNjUsIDIwNiwgODMsIDcyLCA2NSwgCisgICAgNzcsIDgyLCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA3MiwgNjUsIDc2LCA4MywgNzIsIDY5LCA3NiwgNjksIDg0LCAxMjgsIDgzLCAKKyAgICA3MiwgNjUsIDc1LCA4NCwgNzMsIDEyOCwgODMsIDcyLCA2NSwgNzMsIDEyOCwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIAorICAgIDE5NiwgODMsIDcyLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA3MiwgNjUsIDY4LCA2OCwgNjUsIDEyOCwgODMsIDcyLCA2NSwgCisgICAgNjgsIDY4LCAxOTMsIDgzLCA3MiwgNjUsIDY4LCAxMjgsIDgzLCA3MiwgNjUsIDE5NiwgODMsIDcyLCA2NSwgNjYsIDU0LCAKKyAgICAxMjgsIDgzLCA3MiwgNjUsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDU0LCAxMjgsIDgzLCA3MiwgNjUsIDUxLCAxMjgsIDgzLCAKKyAgICA3MiwgNjUsIDE3OSwgODMsIDcxLCA4MiwgMTkzLCA4MywgNzEsIDc5LCAyMTAsIDgzLCA3MSwgNjcsIDEyOCwgODMsIDcxLCAKKyAgICA2NSwgMjE1LCA4MywgNzEsIDY1LCAxOTQsIDgzLCA3MSwgMTI4LCA4MywgNjksIDg4LCA4NCwgODUsIDc2LCAxOTMsIDgzLCAKKyAgICA2OSwgODgsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA2OSwgODgsIDg0LCA2NSwgNzgsIDIxMSwgODMsIDY5LCA4NiwgNjksIAorICAgIDgyLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgCisgICAgNzgsIDg0LCAyMTcsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDcyLCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCAKKyAgICA2OSwgNzgsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNjksIDY5LCAyMDYsIDgzLCA2OSwgODYsIDY5LCA3OCwgNDUsIAorICAgIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIDY5LCA4NiwgNjksIDIwNiwgODMsIDY5LCA4NSwgODgsIDEyOCwgCisgICAgODMsIDY5LCA4NSwgNzgsIDg5LCA2NSwgNzcsIDEyOCwgODMsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA4MywgNjksIDg0LCAKKyAgICA3MCwgNzksIDc4LCAxMjgsIDgzLCA2OSwgODMsIDg0LCA2OSwgODIsIDg0LCA3MywgODUsIDIxMSwgODMsIDY5LCA4MywgODEsIAorICAgIDg1LCA3MywgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgODQsIDY5LCAxMjgsIDgzLCA2OSwgODMsIDY1LCA3NywgMTk3LCA4MywgCisgICAgNjksIDgyLCA4NiwgNzMsIDY3LCAxOTcsIDgzLCA2OSwgODIsIDczLCA3MCwgODMsIDEyOCwgODMsIDY5LCA4MiwgNzMsIDcwLCAKKyAgICAyMTEsIDgzLCA2OSwgODEsIDg1LCA2OSwgNzgsIDY3LCAxOTcsIDgzLCA2OSwgODAsIDg0LCA2OSwgNzcsIDY2LCA2OSwgODIsIAorICAgIDEyOCwgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDgwLCA2NSwgODIsIDY1LCA4NCwgCisgICAgNzksIDIxMCwgODMsIDY5LCA3OCwgODQsIDc5LCAxMjgsIDgzLCA2OSwgNzgsIDg0LCA3MywgMTI4LCA4MywgNjksIDc3LCAKKyAgICA4NSwgNzgsIDY3LCA3MywgMTkzLCA4MywgNjksIDc3LCA3NSwgNjUsIDg0LCA3MiwgMTI4LCA4MywgNjksIDc3LCA3NSwgCisgICAgMTI4LCA4MywgNjksIDc3LCA3MywgODYsIDc5LCA4NywgNjksIDIwNCwgODMsIDY5LCA3NywgNzMsIDgzLCA3OSwgNzAsIAorICAgIDIxMiwgODMsIDY5LCA3NywgNzMsIDgzLCA2OSwgODgsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA3NywgCisgICAgNzMsIDc4LCA3MywgNzcsIDE5MywgODMsIDY5LCA3NywgNzMsIDY4LCA3MywgODIsIDY5LCA2NywgMjEyLCA4MywgNjksIDc3LCAKKyAgICA3MywgNjcsIDc5LCA3NiwgNzksIDc4LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA2NywgNzksIDc2LCA3OSwgMjA2LCA4MywgNjksIAorICAgIDc3LCA3MywgNjcsIDczLCA4MiwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgODMsIDY5LCA3NywgNzMsIDY3LCA3MywgODIsIDY3LCAKKyAgICA3NiwgMTk3LCA4MywgNjksIDc3LCA3MywgNjYsIDgyLCA2OSwgODYsIDczLCAyMTEsIDgzLCA2OSwgNzcsIDczLCA0NSwgODYsIAorICAgIDc5LCA3MywgNjcsIDY5LCAxOTYsIDgzLCA2OSwgNzYsIDcwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDU3LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTYsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDU3LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTMsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDU3LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTAsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDU3LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTYsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTYsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MiwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTYsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgCisgICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgCisgICAgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgCisgICAgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NywgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTQsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTQsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA0OCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU2LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUzLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUwLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTUsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTIsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDksIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA0OCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1NCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTUsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCAKKyAgICA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTUsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgCisgICAgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUwLCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA0OCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIAorICAgIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MCwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTIsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKKyAgICA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA0OCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTAsIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU2LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTIsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNDksIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAorICAgIDQ4LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU2LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDQ4LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUzLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNDgsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNDksIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgCisgICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1NywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDU3LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTYsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTUsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1NiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1NiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA0OCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTUsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTIsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA0OCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDU0LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU2LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTQsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTIsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTQsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgCisgICAgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA0OCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDUzLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU2LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIAorICAgIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNDksIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCAKKyAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUzLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNDksIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NywgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUwLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUwLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCAKKyAgICA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNDgsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgCisgICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA0OCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDQ4LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNjksIDE5NiwgODMsIDY5LCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MywgNjksIDczLCA4MywgNzcsIAorICAgIDE5MywgODMsIDY5LCA3MiwgMTI4LCA4MywgNjksIDcxLCA3OSwgNzYsIDEyOCwgODMsIDY5LCA3MSwgNzgsIDc5LCAxMjgsIAorICAgIDgzLCA2OSwgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDgzLCA2OSwgNjksIDc4LCA4NSwgMTI4LCA4MywgNjksIDY5LCA3OCwgCisgICAgMTI4LCA4MywgNjksIDY5LCAyMDYsIDgzLCA2OSwgNjksIDY4LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNjksIDY5LCAKKyAgICA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgMjA0LCA4MywgNjksIDY3LCA4NCwgNzksIDgyLCAxMjgsIDgzLCA2OSwgNjcsIAorICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgODMsIDY5LCA2NywgODIsIDY5LCA4NCwgCisgICAgMTI4LCA4MywgNjksIDY3LCA3OSwgNzgsIDY4LCAxMjgsIDgzLCA2OSwgNjYsIDY1LCA4NCwgNjYsIDY5LCA3MywgMjEyLCAKKyAgICA4MywgNjksIDY1LCA4NCwgMTI4LCA4MywgNjksIDY1LCA3NiwgMTI4LCA4MywgNjksIDY1LCA3MSwgODUsIDc2LCAyMDQsIAorICAgIDgzLCA2OCwgNzksIDc4LCAxOTksIDgzLCA2OCwgMTI4LCA4MywgNjcsIDg3LCA2NSwgMTI4LCA4MywgNjcsIDgyLCA4NSwgCisgICAgODAsIDc2LCA2OSwgMTI4LCA4MywgNjcsIDgyLCA3OSwgNzYsIDc2LCAxMjgsIDgzLCA2NywgODIsIDczLCA4MCwgODQsIAorICAgIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCA3OCwgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIDIwNiwgODMsIDY3LCA4MiwgCisgICAgNjksIDY1LCA3NywgNzMsIDc4LCAxOTksIDgzLCA2NywgNzksIDgyLCA4MCwgNzMsIDg1LCA4MywgMTI4LCA4MywgNjcsIDc5LCAKKyAgICA4MiwgNjksIDEyOCwgODMsIDY3LCA3MywgODMsIDgzLCA3OSwgODIsIDgzLCAxMjgsIDgzLCA2NywgNzMsIDEyOCwgODMsIAorICAgIDY3LCA3MiwgODcsIDY1LCAxMjgsIDgzLCA2NywgNzIsIDg3LCAxOTMsIDgzLCA2NywgNzIsIDgyLCA3OSwgNjksIDY4LCA2OSwgCisgICAgODIsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCA3NiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIDIwNCwgODMsIDY3LCAKKyAgICA3MiwgNzksIDc2LCA2NSwgODIsIDEyOCwgODMsIDY3LCA3MiwgNjksIDc3LCAxOTMsIDgzLCA2NywgNjksIDgwLCA4NCwgNjksIAorICAgIDIxMCwgODMsIDY3LCA2NSwgNzgsIDY4LCA3MywgNjcsIDg1LCA4MywgMTI4LCA4MywgNjcsIDY1LCA3OCwgNjgsIDczLCA2NywgCisgICAgODUsIDIxMSwgODMsIDY3LCA2NSwgMjA2LCA4MywgNjcsIDY1LCA3NiwgNjksIDgzLCAxMjgsIDgzLCA2NiwgODUsIDE5NCwgCisgICAgODMsIDY2LCA4MiwgODUsIDIwNCwgODMsIDY1LCA4OSwgNzMsIDgzLCAyMDEsIDgzLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDgzLCA2NSwgODksIDEyOCwgODMsIDY1LCA4OCwgNzksIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA4MywgNjUsIAorICAgIDg4LCA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDY1LCA4NywgNjUsIDc4LCAxMjgsIDgzLCA2NSwgODcsIDEyOCwgCisgICAgODMsIDY1LCA4NiwgNzksIDg1LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA2NSwgODUsIDczLCA3NiwgMTI4LCA4MywgNjUsIDg0LCAKKyAgICA4NSwgODIsIDc4LCAxMjgsIDgzLCA2NSwgODQsIDc1LCA2NSwgNjUsIDc4LCA3NSwgODUsIDg1LCAxMjgsIDgzLCA2NSwgODQsIAorICAgIDc1LCA2NSwgNjUsIDc4LCAxMjgsIDgzLCA2NSwgODQsIDY5LCA3NiwgNzYsIDczLCA4NCwgMTk3LCA4MywgNjUsIDg0LCA2NywgCisgICAgNzIsIDY5LCA3NiwgMTI4LCA4MywgNjUsIDg0LCA2NSwgNzgsIDcxLCA2NSwgMTI4LCA4MywgNjUsIDgzLCA3MiwgMTI4LCAKKyAgICA4MywgNjUsIDgzLCA2NSwgNzUsIDEyOCwgODMsIDY1LCA4MiwgNzMsIDEyOCwgODMsIDY1LCA4MiwgMTkzLCA4MywgNjUsIAorICAgIDgyLCAxMjgsIDgzLCA2NSwgODEsIDEyOCwgODMsIDY1LCA4MCwgNjUsIDEyOCwgODMsIDY1LCA3OCwgODksIDc5LCA3OSwgCisgICAgNzEsIDE5MywgODMsIDY1LCA3OCwgODksIDY1LCA3NSwgMTkzLCA4MywgNjUsIDc4LCA4NCwgNzMsIDczLCA3NywgODUsIAorICAgIDEyOCwgODMsIDY1LCA3OCwgNzgsIDg5LCA2NSwgMTI4LCA4MywgNjUsIDc4LCA3MSwgNjUsIDUwLCAxMjgsIDgzLCA2NSwgCisgICAgNzgsIDY4LCA2NSwgNzYsIDEyOCwgODMsIDY1LCA3OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzgsIDEyOCwgODMsIDY1LCAKKyAgICA3NywgODksIDc5LCAyMDMsIDgzLCA2NSwgNzcsIDg2LCA2NSwgODQsIDEyOCwgODMsIDY1LCA3NywgODAsIDczLCAxMjgsIAorICAgIDgzLCA2NSwgNzcsIDgwLCA3MiwgNjUsIDc5LCAxMjgsIDgzLCA2NSwgNzcsIDc1LCA2NSwgMTI4LCA4MywgNjUsIDc3LCA2OSwgCisgICAgNzUsIDcyLCAxMjgsIDgzLCA2NSwgNzcsIDY5LCA3NSwgMjAwLCA4MywgNjUsIDc3LCA2NiwgNjUsIDEyOCwgODMsIDY1LCAKKyAgICA3NywgNjUsIDgyLCA3MywgODQsIDY1LCAyMDYsIDgzLCA2NSwgNzcsIDEyOCwgODMsIDY1LCA3NiwgODQsIDczLCA4MiwgNjksIAorICAgIDEyOCwgODMsIDY1LCA3NiwgODQsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA0NSwgNTAsIDEyOCwgCisgICAgODMsIDY1LCA3NiwgODQsIDEyOCwgODMsIDY1LCA3NiwgMjEyLCA4MywgNjUsIDc2LCA3NiwgNjUsIDc2LCA3NiwgNjUsIDcyLCAKKyAgICA3OSwgMjEzLCA4MywgNjUsIDc2LCA3NiwgMTkzLCA4MywgNjUsIDc2LCA2NSwgMjA1LCA4MywgNjUsIDc2LCA2NSwgMTI4LCAKKyAgICA4MywgNjUsIDc2LCA0NSwgNjUsIDc3LCA3NywgNzksIDc4LCA3MywgNjUsIDY3LCAxMjgsIDgzLCA2NSwgNzYsIDEyOCwgODMsIAorICAgIDY1LCA3NSwgNzksIDg0LCAxMjgsIDgzLCA2NSwgNzUsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA2NSwgNzUsIDE5NywgCisgICAgODMsIDY1LCA3NCwgNjgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDczLCA3NiwgNjYsIDc5LCA2NSwgODQsIDEyOCwgODMsIDY1LCAKKyAgICA3MywgNzYsIDEyOCwgODMsIDY1LCA3MywgNzUsIDg1LCA4MiwgODUsIDEyOCwgODMsIDY1LCA3MiwgMTI4LCA4MywgNjUsIAorICAgIDcxLCA3MywgODQsIDg0LCA2NSwgODIsIDczLCA4NSwgODMsIDEyOCwgODMsIDY1LCA3MSwgNjUsIDEyOCwgODMsIDY1LCA3MSwgCisgICAgMTI4LCA4MywgNjUsIDE5OSwgODMsIDY1LCA3MCwgNzIsIDY1LCAxMjgsIDgzLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA4MywgCisgICAgNjUsIDY4LCA2OSwgMTI4LCA4MywgNjUsIDY4LCAxMjgsIDgzLCA2NSwgMTk2LCA4MywgNjUsIDY3LCA4MiwgNzMsIDcwLCAKKyAgICA3MywgNjcsIDczLCA2NSwgMjA0LCA4MywgNjUsIDY1LCA3MywgMTI4LCA4MywgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIAorICAgIDgzLCA2NSwgNDUsIDczLCAxMjgsIDgzLCA2NSwgNDUsIDUwLCAxMjgsIDgzLCA0OCwgNTIsIDU0LCAxMjgsIDgzLCA0OCwgCisgICAgNTIsIDUzLCAxMjgsIDgzLCA0OCwgNTIsIDUyLCAxMjgsIDgzLCA0OCwgNTIsIDUxLCAxMjgsIDgzLCA0OCwgNTIsIDUwLCAKKyAgICAxMjgsIDgzLCA0OCwgNTIsIDQ5LCAxMjgsIDgzLCA0OCwgNTIsIDQ4LCAxMjgsIDgzLCA0OCwgNTEsIDU3LCAxMjgsIDgzLCAKKyAgICA0OCwgNTEsIDU2LCAxMjgsIDgzLCA0OCwgNTEsIDU1LCAxMjgsIDgzLCA0OCwgNTEsIDU0LCAxMjgsIDgzLCA0OCwgNTEsIAorICAgIDUzLCA2NSwgMTI4LCA4MywgNDgsIDUxLCA1MywgMTI4LCA4MywgNDgsIDUxLCA1MiwgMTI4LCA4MywgNDgsIDUxLCA1MSwgCisgICAgMTI4LCA4MywgNDgsIDUxLCA1MCwgMTI4LCA4MywgNDgsIDUxLCA0OSwgMTI4LCA4MywgNDgsIDUxLCA0OCwgMTI4LCA4MywgCisgICAgNDgsIDUwLCA1NywgMTI4LCA4MywgNDgsIDUwLCA1NiwgMTI4LCA4MywgNDgsIDUwLCA1NSwgMTI4LCA4MywgNDgsIDUwLCAKKyAgICA1NCwgNjYsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCAxMjgsIDgzLCA0OCwgNTAsIAorICAgIDUzLCAxMjgsIDgzLCA0OCwgNTAsIDUyLCAxMjgsIDgzLCA0OCwgNTAsIDUxLCAxMjgsIDgzLCA0OCwgNTAsIDUwLCAxMjgsIAorICAgIDgzLCA0OCwgNTAsIDQ5LCAxMjgsIDgzLCA0OCwgNTAsIDQ4LCAxMjgsIDgzLCA0OCwgNDksIDU3LCAxMjgsIDgzLCA0OCwgCisgICAgNDksIDU2LCAxMjgsIDgzLCA0OCwgNDksIDU1LCA2NSwgMTI4LCA4MywgNDgsIDQ5LCA1NSwgMTI4LCA4MywgNDgsIDQ5LCAKKyAgICA1NCwgMTI4LCA4MywgNDgsIDQ5LCA1MywgMTI4LCA4MywgNDgsIDQ5LCA1MiwgNjYsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIAorICAgIDY1LCAxMjgsIDgzLCA0OCwgNDksIDUyLCAxMjgsIDgzLCA0OCwgNDksIDUxLCAxMjgsIDgzLCA0OCwgNDksIDUwLCAxMjgsIAorICAgIDgzLCA0OCwgNDksIDQ5LCAxMjgsIDgzLCA0OCwgNDksIDQ4LCAxMjgsIDgzLCA0OCwgNDgsIDU3LCAxMjgsIDgzLCA0OCwgCisgICAgNDgsIDU2LCAxMjgsIDgzLCA0OCwgNDgsIDU1LCAxMjgsIDgzLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDQ4LCAKKyAgICA1NCwgMTI4LCA4MywgNDgsIDQ4LCA1MywgMTI4LCA4MywgNDgsIDQ4LCA1MiwgMTI4LCA4MywgNDgsIDQ4LCA1MSwgMTI4LCAKKyAgICA4MywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgNTAsIDEyOCwgODMsIDQ4LCA0OCwgNDksIDEyOCwgODMsIAorICAgIDQ1LCA4NywgMTI4LCA4MywgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCA4MiwgODksIDg5LCAxMjgsIDgyLCA4OSwgCisgICAgODgsIDEyOCwgODIsIDg5LCA4NCwgMTI4LCA4MiwgODksIDgyLCA4OCwgMTI4LCA4MiwgODksIDgyLCAxMjgsIDgyLCA4OSwgCisgICAgODAsIDEyOCwgODIsIDg3LCA3OSwgNzksIDEyOCwgODIsIDg3LCA3OSwgMTI4LCA4MiwgODcsIDczLCA3MywgMTI4LCA4MiwgCisgICAgODcsIDczLCAxMjgsIDgyLCA4NywgNjksIDY5LCAxMjgsIDgyLCA4NywgNjksIDEyOCwgODIsIDg3LCA2NSwgNzIsIDY1LCAKKyAgICAxMjgsIDgyLCA4NywgNjUsIDY1LCAxMjgsIDgyLCA4NywgNjUsIDEyOCwgODIsIDg1LCA4OCwgMTI4LCA4MiwgODUsIDg1LCAKKyAgICA2NiwgODUsIDgyLCA4NSwgMTI4LCA4MiwgODUsIDg1LCAxMjgsIDgyLCA4NSwgODQsIDEyOCwgODIsIDg1LCA4MywgNzMsIAorICAgIDEyOCwgODIsIDg1LCA4MiwgODgsIDEyOCwgODIsIDg1LCA4MiwgMTI4LCA4MiwgODUsIDgwLCA3MywgNzMsIDEyOCwgODIsIAorICAgIDg1LCA4MCwgNjksIDE5NywgODIsIDg1LCA4MCwgMTI4LCA4MiwgODUsIDc5LCA4OCwgMTI4LCA4MiwgODUsIDc5LCA4MCwgCisgICAgMTI4LCA4MiwgODUsIDc5LCAxMjgsIDgyLCA4NSwgNzgsIDc5LCA4NSwgODQsIDEyOCwgODIsIDg1LCA3OCwgNzgsIDczLCAKKyAgICA3OCwgMTk5LCA4MiwgODUsIDc4LCA3OCwgNjksIDgyLCAxMjgsIDgyLCA4NSwgNzgsIDEyOCwgODIsIDg1LCA3NywgMjAxLCAKKyAgICA4MiwgODUsIDc3LCA2NSwgMjAxLCA4MiwgODUsIDc3LCAxMjgsIDgyLCA4NSwgMjA1LCA4MiwgODUsIDc2LCA2OSwgODIsIAorICAgIDEyOCwgODIsIDg1LCA3NiwgNjksIDQ1LCA2OCwgNjksIDc2LCA2NSwgODksIDY5LCA2OCwgMTI4LCA4MiwgODUsIDc2LCA2OSwgCisgICAgMTI4LCA4MiwgODUsIDc1LCA3NSwgNjUsIDc1LCA3MiwgNjUsIDEyOCwgODIsIDg1LCA3MywgODMsIDEyOCwgODIsIDg1LCAKKyAgICA3MSwgNjYsIDIxNywgODIsIDg1LCAxOTQsIDgyLCA4NSwgNjUsIDEyOCwgODIsIDg0LCA3MiwgNjUsIDc4LCAxOTksIDgyLCAKKyAgICA4NCwgNjUsIDcxLCA4MywgMTI4LCA4MiwgODQsIDY1LCA3MSwgMjExLCA4MiwgODIsIDg5LCA4OCwgMTI4LCA4MiwgODIsIAorICAgIDg5LCA4NCwgMTI4LCA4MiwgODIsIDg5LCA4MiwgODgsIDEyOCwgODIsIDgyLCA4OSwgODIsIDEyOCwgODIsIDgyLCA4OSwgCisgICAgODAsIDEyOCwgODIsIDgyLCA4NSwgODgsIDEyOCwgODIsIDgyLCA4NSwgODUsIDEyOCwgODIsIDgyLCA4NSwgODQsIDEyOCwgCisgICAgODIsIDgyLCA4NSwgODIsIDg4LCAxMjgsIDgyLCA4MiwgODUsIDgyLCAxMjgsIDgyLCA4MiwgODUsIDgwLCAxMjgsIDgyLCAKKyAgICA4MiwgODUsIDc5LCA4OCwgMTI4LCA4MiwgODIsIDg1LCA3OSwgMTI4LCA4MiwgODIsIDg1LCAxMjgsIDgyLCA4MiwgNzksIAorICAgIDg4LCAxMjgsIDgyLCA4MiwgNzksIDg0LCAxMjgsIDgyLCA4MiwgNzksIDgwLCAxMjgsIDgyLCA4MiwgNzksIDc5LCAxMjgsIAorICAgIDgyLCA4MiwgNzksIDEyOCwgODIsIDgyLCA3MywgNzMsIDEyOCwgODIsIDgyLCA3MywgMTI4LCA4MiwgODIsIDY5LCA4OCwgCisgICAgMTI4LCA4MiwgODIsIDY5LCA4NCwgMTI4LCA4MiwgODIsIDY5LCA4MCwgMTI4LCA4MiwgODIsIDY5LCA3MiwgMTI4LCA4MiwgCisgICAgODIsIDY5LCAyMDAsIDgyLCA4MiwgNjksIDY5LCAxMjgsIDgyLCA4MiwgNjksIDEyOCwgODIsIDgyLCA2NSwgODgsIDEyOCwgCisgICAgODIsIDgyLCA2NSwgODUsIDEyOCwgODIsIDgyLCA2NSwgNzMsIDEyOCwgODIsIDgyLCA2NSwgNjUsIDEyOCwgODIsIDgyLCAKKyAgICA2NSwgMTI4LCA4MiwgNzksIDg3LCA2NiwgNzksIDY1LCA4NCwgMTI4LCA4MiwgNzksIDg1LCA3OCwgNjgsIDY5LCAxOTYsIAorICAgIDgyLCA3OSwgODUsIDc4LCA2OCwgNDUsIDg0LCA3MywgODAsIDgwLCA2OSwgMTk2LCA4MiwgNzksIDg0LCA4NSwgNzgsIDY4LCAKKyAgICA2NSwgMTI4LCA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDgyLCA3OSwgODMsIDcyLCAxMjgsIDgyLCA3OSwgODMsIAorICAgIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgyLCA3OSwgODMsIDY5LCAxMjgsIDgyLCA3OSwgNzksIDg0LCAxMjgsIDgyLCA3OSwgCisgICAgNzksIDgzLCA4NCwgNjksIDgyLCAxMjgsIDgyLCA3OSwgNzksIDc1LCAxMjgsIDgyLCA3OSwgNzksIDcwLCAxMjgsIDgyLCAKKyAgICA3OSwgNzcsIDY1LCAyMDYsIDgyLCA3OSwgNzcsIDEyOCwgODIsIDc5LCA3NiwgNzYsIDY5LCAyMTAsIDgyLCA3OSwgNzIsIAorICAgIDczLCA3OCwgNzEsIDg5LCAxOTMsIDgyLCA3OSwgMTk2LCA4MiwgNzksIDY3LCA3NSwgNjksIDg0LCAxMjgsIDgyLCA3OSwgCisgICAgNjcsIDIwMywgODIsIDc5LCA2NywgMTI4LCA4MiwgNzksIDY2LCA2NSwgODQsIDEyOCwgODIsIDc5LCA2NSwgODMsIDg0LCAKKyAgICA2OSwgMTk2LCA4MiwgNzksIDY1LCA4MiwgMTI4LCA4MiwgNzksIDY1LCAxMjgsIDgyLCA3OCwgODksIDczLCA3OCwgMTk5LCAKKyAgICA4MiwgNzgsIDc5LCA3OSwgNzgsIDEyOCwgODIsIDc4LCA3OSwgNzksIDIwNiwgODIsIDc4LCA2NSwgMjA1LCA4MiwgNzcsIAorICAgIDg0LCAxMjgsIDgyLCA3NiwgNzksIDEyOCwgODIsIDc2LCA3NywgMTI4LCA4MiwgNzYsIDY5LCAxMjgsIDgyLCA3NCwgNjksIAorICAgIDIxMSwgODIsIDc0LCA2OSwgMTI4LCA4MiwgNzQsIDE5NywgODIsIDczLCA4NiwgNjksIDgyLCAxMjgsIDgyLCA3MywgODQsIAorICAgIDg1LCA2NSwgNzYsIDEyOCwgODIsIDczLCA4NCwgODQsIDc5LCA4MiwgODUsIDEyOCwgODIsIDczLCA4NCwgODMsIDczLCAKKyAgICAxMjgsIDgyLCA3MywgODMsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDgzLCA3MiwgMTI4LCA4MiwgNzMsIDgyLCA2NSwgMTI4LCAKKyAgICA4MiwgNzMsIDgwLCAxMjgsIDgyLCA3MywgNzgsIDcxLCAyMTEsIDgyLCA3MywgNzgsIDcwLCA3OSwgODIsIDkwLCA2NSwgNzgsIAorICAgIDY4LCA3OSwgMTI4LCA4MiwgNzMsIDIwNiwgODIsIDczLCA3NywgNzEsIDY2LCA2NSwgMTI4LCA4MiwgNzMsIDc1LCA4MiwgCisgICAgNzMsIDc1LCAxMjgsIDgyLCA3MywgNzEsIDg2LCA2OSwgNjgsIDczLCAxOTUsIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCAKKyAgICA4MiwgNjgsIDgzLCAxMjgsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzIsIDY1LCA3OCwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIAorICAgIDQ1LCA4NCwgNzksIDQ1LCA3NiwgNjksIDcwLCAyMTIsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgCisgICAgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIAorICAgIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCAKKyAgICA4NCwgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDY4LCA2OSwgMTk2LCA4MiwgNzMsIAorICAgIDcxLCA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCAKKyAgICA3OCwgMTk5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA4MywgNzMsIAorICAgIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCAKKyAgICA3MywgNjksIDg1LCA3MiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgCisgICAgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIAorICAgIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKKyAgICA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgCisgICAgODQsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIAorICAgIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAKKyAgICAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIAorICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCAKKyAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIAorICAgIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCAKKyAgICA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIAorICAgIDczLCA2OSwgODUsIDc2LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCAKKyAgICA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgCisgICAgNjksIDg1LCA3NywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIAorICAgIDczLCA2OSwgODUsIDc3LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCAKKyAgICA3MywgNjksIDg1LCA3NywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgCisgICAgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIAorICAgIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKKyAgICAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgCisgICAgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCAKKyAgICA4NSwgNzYsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODIsIDczLCA2OSwgODUsIDIwNCwgODIsIDczLCA2OSwgNzYsIAorICAgIDEyOCwgODIsIDczLCA2OSwgNjksIDEyOCwgODIsIDczLCA2NywgNjksIDc3LCAxMjgsIDgyLCA3MywgNjcsIDY5LCAxMjgsIAorICAgIDgyLCA3MywgNjcsIDE5NywgODIsIDczLCA2NiwgNjYsIDc5LCA3OCwgMTI4LCA4MiwgNzMsIDY1LCAyMDQsIDgyLCA3MiwgCisgICAgNzksIDg0LCA3MywgMTk1LCA4MiwgNzIsIDc5LCAxMjgsIDgyLCA3MiwgMjA3LCA4MiwgNzIsIDY1LCAxMjgsIDgyLCA3MSwgCisgICAgODksIDczLCA3OCwgNzEsIDgzLCAxMjgsIDgyLCA3MSwgODksIDY1LCA3OCwgMTI4LCA4MiwgNzEsIDg5LCAxOTMsIDgyLCAKKyAgICA2OSwgODYsIDc5LCA3NiwgODYsIDczLCA3OCwgMTk5LCA4MiwgNjksIDg2LCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4MiwgNjksIDg2LCA3NywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDY5LCAKKyAgICA4MiwgODMsIDY5LCA2OCwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgMTk2LCA4MiwgNjksIDg2LCA2OSwgODIsIAorICAgIDgzLCAxOTcsIDgyLCA2OSwgODUsIDg4LCAxMjgsIDgyLCA2OSwgODUsIDEyOCwgODIsIDY5LCA4NCwgODUsIDgyLCA3OCwgCisgICAgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDIwNiwgODIsIDY5LCA4NCwgODIsIDc5LCA3MCwgNzYsIDY5LCAyMTYsIDgyLCAKKyAgICA2OSwgODQsIDgyLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCA2OSwgODQsIDc5LCA4MiwgODQsIDEyOCwgODIsIDY5LCA4MywgODUsIAorICAgIDgwLCA3MywgNzgsIDg1LCA4MywgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDc5LCA3OSwgNzcsIDEyOCwgODIsIDY5LCA4MywgCisgICAgODQsIDgyLCA3MywgNjcsIDg0LCA2OSwgMTk2LCA4MiwgNjksIDgzLCA4NCwgMTI4LCA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCAKKyAgICA4MywgNjksIDEyOCwgODIsIDY5LCA4MywgNzksIDg1LCA4MiwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDc5LCA3NiwgODUsIAorICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgODMsIDczLCA4MywgODQsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgCisgICAgODMsIDczLCA2OCwgNjksIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgMjAwLCA4MiwgNjksIDgyLCA2OSwgNzgsIDcxLCAKKyAgICA3MSwgNjUsIDc4LCAxMjgsIDgyLCA2OSwgODIsIDY5LCA3NSwgNjUsIDc4LCAxMjgsIDgyLCA2OSwgODAsIDgyLCA2OSwgODMsIAorICAgIDY5LCA3OCwgODQsIDEyOCwgODIsIDY5LCA4MCwgNzYsIDY1LCA2NywgNjksIDc3LCA2OSwgNzgsIDIxMiwgODIsIDY5LCA4MCwgCisgICAgNzIsIDEyOCwgODIsIDY5LCA4MCwgNjksIDg0LCA3MywgODQsIDczLCA3OSwgMjA2LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCAKKyAgICA2OSwgMTk2LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCA2OSwgODAsIDY5LCA2NSwgMjEyLCA4MiwgNjksIAorICAgIDgwLCA2NSwgODksIDY1LCAxMjgsIDgyLCA2OSwgODAsIDY1LCAxMjgsIDgyLCA2OSwgODAsIDE5MywgODIsIDY5LCA3OCwgCisgICAgODQsIDc5LCA3MSwgNjksIDc4LCAxMjgsIDgyLCA2OSwgNzgsIDEyOCwgODIsIDY5LCAyMDYsIDgyLCA2OSwgNzcsIDg1LCAKKyAgICAxMjgsIDgyLCA2OSwgNzcsIDY5LCA2OCwgODksIDEyOCwgODIsIDY5LCA3NiwgNzMsIDcxLCA3MywgNzksIDc4LCAxMjgsIAorICAgIDgyLCA2OSwgNzYsIDczLCA2OSwgODYsIDY5LCAxOTYsIDgyLCA2OSwgNzYsIDY5LCA2NSwgODMsIDY5LCAxMjgsIDgyLCA2OSwgCisgICAgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCAKKyAgICA2OSwgNzYsIDY1LCA2NSwgMTI4LCA4MiwgNjksIDc0LCA2NSwgNzgsIDE5OSwgODIsIDY5LCA3MywgMTk2LCA4MiwgNjksIAorICAgIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUyLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTEsIDEyOCwgCisgICAgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgMTI4LCAKKyAgICA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCAyMTEsIDgyLCA2OSwgNzEsIDczLCA4MywgODQsIDY5LCA4MiwgNjksIDE5NiwgODIsIAorICAgIDY5LCA3MSwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA3MSwgNzMsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgCisgICAgNzMsIDY1LCAxMjgsIDgyLCA2OSwgNzAsIDc5LCA4MiwgNzcsIDY5LCAxOTYsIDgyLCA2OSwgNzAsIDY5LCA4MiwgNjksIDc4LCAKICAgICA2NywgMTk3LCA4MiwgNjksIDY4LCA4NSwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIAogICAgIDY3LCA4OSwgNjcsIDc2LCA3MywgNzgsIDE5OSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIDE5NiwgODIsIDY5LCA2NywgCiAgICAgODQsIDczLCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIApAQCAtMTI2NSw1NiArMTM3Nyw1NyBAQAogICAgIDgzLCA4NywgNjUsIDY4LCA3MywgMTI4LCA4MiwgNjUsIDgzLCA3OSwgODUsIDIwNCwgODIsIDY1LCA4MywgNzIsIDY1LCAKICAgICAxMjgsIDgyLCA2NSwgODEsIDEyOCwgODIsIDY1LCA4MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODIsIDY1LCA3OCwgNzEsIAogICAgIDE5NywgODIsIDY1LCA3OCwgNjUsIDEyOCwgODIsIDY1LCA3OCwgMTI4LCA4MiwgNjUsIDc3LCAyMTEsIDgyLCA2NSwgNzcsIAotICAgIDY2LCA2NSwgODQsIDEyOCwgODIsIDY1LCA3NSwgNzIsIDY1LCA3OCwgNzEsIDEyOCwgODIsIDY1LCA3MywgODMsIDczLCA3OCwgCi0gICAgMTk5LCA4MiwgNjUsIDczLCA4MywgNjksIDE5NiwgODIsIDY1LCA3MywgNzgsIDY2LCA3OSwgODcsIDEyOCwgODIsIDY1LCAKLSAgICA3MywgNzYsIDg3LCA2NSwgODksIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgMjE3LCA4MiwgNjUsIDczLCA3NiwgCi0gICAgMTI4LCA4MiwgNjUsIDczLCA2OCwgMjA3LCA4MiwgNjUsIDczLCA2OCwgNjUsIDEyOCwgODIsIDY1LCA3MywgMTI4LCA4MiwgCi0gICAgNjUsIDcyLCA3NywgNjUsIDg0LCA4NSwgNzYsIDc2LCA2NSwgMjAwLCA4MiwgNjUsIDcwLCA2OSwgMTI4LCA4MiwgNjUsIDY5LCAKLSAgICA3NywgMTI4LCA4MiwgNjUsIDY4LCA3MywgNzksIDY1LCA2NywgODQsIDczLCA4NiwgMTk3LCA4MiwgNjUsIDY4LCA3MywgNzksIAotICAgIDEyOCwgODIsIDY1LCA2OCwgNzMsIDIwNywgODIsIDY1LCA2OCwgMjAxLCA4MiwgNjUsIDY4LCAxMjgsIDgyLCA2NSwgMTk2LCAKLSAgICA4MiwgNjUsIDY3LCA4MSwgODUsIDY5LCAyMTIsIDgyLCA2NSwgNjcsIDczLCA3OCwgNzEsIDEyOCwgODIsIDY1LCA2NiwgNjYsIAotICAgIDczLCA4NCwgMTI4LCA4MiwgNjUsIDY2LCA2NiwgNzMsIDIxMiwgODIsIDY1LCA2NiwgMTI4LCA4MiwgNjUsIDY1LCA3MywgCi0gICAgMTI4LCA4MiwgNjUsIDY1LCAxMjgsIDgyLCA2NSwgNTEsIDEyOCwgODIsIDY1LCA1MCwgMTI4LCA4MiwgNDgsIDUwLCA1NywgCi0gICAgMTI4LCA4MiwgNDgsIDUwLCA1NiwgMTI4LCA4MiwgNDgsIDUwLCA1NSwgMTI4LCA4MiwgNDgsIDUwLCA1NCwgMTI4LCA4MiwgCi0gICAgNDgsIDUwLCA1MywgMTI4LCA4MiwgNDgsIDUwLCA1MiwgMTI4LCA4MiwgNDgsIDUwLCA1MSwgMTI4LCA4MiwgNDgsIDUwLCAKLSAgICA1MCwgMTI4LCA4MiwgNDgsIDUwLCA0OSwgMTI4LCA4MiwgNDgsIDUwLCA0OCwgMTI4LCA4MiwgNDgsIDQ5LCA1NywgMTI4LCAKLSAgICA4MiwgNDgsIDQ5LCA1NiwgMTI4LCA4MiwgNDgsIDQ5LCA1NSwgMTI4LCA4MiwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgODIsIAotICAgIDQ4LCA0OSwgNTQsIDEyOCwgODIsIDQ4LCA0OSwgNTMsIDEyOCwgODIsIDQ4LCA0OSwgNTIsIDEyOCwgODIsIDQ4LCA0OSwgCi0gICAgNTEsIDEyOCwgODIsIDQ4LCA0OSwgNTAsIDEyOCwgODIsIDQ4LCA0OSwgNDksIDEyOCwgODIsIDQ4LCA0OSwgNDgsIDY1LCAKLSAgICAxMjgsIDgyLCA0OCwgNDksIDQ4LCAxMjgsIDgyLCA0OCwgNDgsIDU3LCAxMjgsIDgyLCA0OCwgNDgsIDU2LCAxMjgsIDgyLCAKLSAgICA0OCwgNDgsIDU1LCAxMjgsIDgyLCA0OCwgNDgsIDU0LCAxMjgsIDgyLCA0OCwgNDgsIDUzLCAxMjgsIDgyLCA0OCwgNDgsIAotICAgIDUyLCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NiwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgCi0gICAgNTEsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDgyLCA0OCwgNDgsIDUwLCAxMjgsIDgyLCA0OCwgNDgsIDQ5LCAKLSAgICAxMjgsIDgyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4MSwgODksIDg4LCAxMjgsIDgxLCA4OSwgODUsIDEyOCwgODEsIDg5LCAKLSAgICA4NCwgMTI4LCA4MSwgODksIDgyLCA4OCwgMTI4LCA4MSwgODksIDgyLCAxMjgsIDgxLCA4OSwgODAsIDEyOCwgODEsIDg5LCAKLSAgICA3OSwgMTI4LCA4MSwgODksIDczLCAxMjgsIDgxLCA4OSwgNjksIDY5LCAxMjgsIDgxLCA4OSwgNjksIDEyOCwgODEsIDg5LCAKLSAgICA2NSwgNjUsIDEyOCwgODEsIDg5LCA2NSwgMTI4LCA4MSwgODksIDEyOCwgODEsIDg3LCA3MywgMTI4LCA4MSwgODcsIDY5LCAKLSAgICA2OSwgMTI4LCA4MSwgODcsIDY5LCAxMjgsIDgxLCA4NywgNjUsIDY1LCAxMjgsIDgxLCA4NywgNjUsIDEyOCwgODEsIDg1LCAKLSAgICA4OCwgMTI4LCA4MSwgODUsIDg2LCAxMjgsIDgxLCA4NSwgODUsIDg2LCAxMjgsIDgxLCA4NSwgODUsIDEyOCwgODEsIDg1LCAKLSAgICA4NCwgMTI4LCA4MSwgODUsIDgzLCA3MiwgODMsIDcyLCA2NSwgODksIDY1LCAxMjgsIDgxLCA4NSwgODIsIDg4LCAxMjgsIAotICAgIDgxLCA4NSwgODIsIDEyOCwgODEsIDg1LCA4MCwgMTI4LCA4MSwgODUsIDc5LCA4OCwgMTI4LCA4MSwgODUsIDc5LCA4NCwgCi0gICAgMTk3LCA4MSwgODUsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODEsIDg1LCA3OSwgODQsIDEyOCwgODEsIDg1LCAKLSAgICA3OSwgODAsIDEyOCwgODEsIDg1LCA3OSwgMTI4LCA4MSwgODUsIDc1LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA4NCwgNjksIAotICAgIDgzLCA4MywgNjksIDc4LCA2NywgNjksIDEyOCwgODEsIDg1LCA3MywgNzgsIDY4LCA3MywgNjcsIDY5LCA4MywgNzMsIDc3LCAKLSAgICAxOTMsIDgxLCA4NSwgNzMsIDc4LCA2NywgODUsIDc4LCA4OCwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjUsIDgyLCA3MywgODUsIAotICAgIDIxMSwgODEsIDg1LCA3MywgNzYsIDc2LCAxMjgsIDgxLCA4NSwgNzMsIDY3LCAyMDMsIDgxLCA4NSwgNzMsIDEyOCwgODEsIAotICAgIDg1LCA3MCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgNzgsIDY5LCAxOTYsIDgxLCA4NSwgNjksIDgzLCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgMjA2LCA4MSwgODUsIDY5LCA2OSwgNzgsIAotICAgIDEyOCwgODEsIDg1LCA2OSwgNjksIDIwNiwgODEsIDg1LCA2OSwgMTI4LCA4MSwgODUsIDY2LCA4NSwgODQsIDgzLCAxMjgsIAotICAgIDgxLCA4NSwgNjUsIDg0LCA2OSwgODIsIDc4LCA3MywgNzksIDIwNiwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDgzLCAKLSAgICAxMjgsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCAyMTEsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCAxMjgsIAotICAgIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDIxMCwgODEsIDg1LCA2NSwgNzgsIDg0LCA3MywgODQsIDIxNywgODEsIDg1LCA2NSwgCi0gICAgNjgsIDgyLCA4NSwgODAsIDc2LCAxOTcsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA4MSwgODUsIDY1LCAKLSAgICA2OCwgODIsIDY1LCA3OCwgMjEyLCA4MSwgODUsIDY1LCA2OCwgMTI4LCA4MSwgODUsIDY1LCAxOTYsIDgxLCA4NSwgNjUsIAotICAgIDEyOCwgODEsIDg1LCAxMjgsIDgxLCAyMDgsIDgxLCA3OSwgODgsIDEyOCwgODEsIDc5LCA4NCwgMTI4LCA4MSwgNzksIDgwLCAKLSAgICA3MiwgMTI4LCA4MSwgNzksIDgwLCA2NSwgMTI4LCA4MSwgNzksIDgwLCAxMjgsIDgxLCA3OSwgNzksIDEyOCwgODEsIDc5LCAKLSAgICAyMDcsIDgxLCA3OSwgNzAsIDEyOCwgODEsIDc5LCAxOTgsIDgxLCA3OSwgNjUsIDEyOCwgODEsIDc5LCAxMjgsIDgxLCA3OCwgCi0gICAgMTI4LCA4MSwgNzMsIDg4LCAxMjgsIDgxLCA3MywgODQsIDgzLCA2NSwgMTI4LCA4MSwgNzMsIDg0LCAxMjgsIDgxLCA3MywgCi0gICAgODAsIDEyOCwgODEsIDczLCA3MywgMTI4LCA4MSwgNzMsIDY5LCA4OCwgMTI4LCA4MSwgNzMsIDY5LCA4NCwgMTI4LCA4MSwgCi0gICAgNzMsIDY5LCA4MCwgMTI4LCA4MSwgNzMsIDY5LCAxMjgsIDgxLCA3MywgMTI4LCA4MSwgNzIsIDg3LCA3MywgMTI4LCA4MSwgCi0gICAgNzIsIDg3LCA2OSwgNjksIDEyOCwgODEsIDcyLCA4NywgNjksIDEyOCwgODEsIDcyLCA4NywgNjUsIDY1LCAxMjgsIDgxLCAKLSAgICA3MiwgODcsIDY1LCAxMjgsIDgxLCA3MiwgODUsIDEyOCwgODEsIDcyLCA3OSwgMTI4LCA4MSwgNzIsIDczLCAxMjgsIDgxLCAKLSAgICA3MiwgNjksIDY5LCAxMjgsIDgxLCA3MiwgNjksIDEyOCwgODEsIDcyLCA2NSwgNjUsIDEyOCwgODEsIDcyLCA2NSwgMTI4LCAKKyAgICA2NiwgNjUsIDg0LCAxMjgsIDgyLCA2NSwgNzUsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDgyLCA2NSwgNzUsIDY1LCA2NSwgODIsIAorICAgIDY1LCA2NSwgNzgsIDgzLCA2NSwgODksIDY1LCAxMjgsIDgyLCA2NSwgNzMsIDgzLCA3MywgNzgsIDE5OSwgODIsIDY1LCA3MywgCisgICAgODMsIDY5LCAxOTYsIDgyLCA2NSwgNzMsIDc4LCA2NiwgNzksIDg3LCAxMjgsIDgyLCA2NSwgNzMsIDc2LCA4NywgNjUsIDg5LCAKKyAgICAxMjgsIDgyLCA2NSwgNzMsIDc2LCA4NywgNjUsIDIxNywgODIsIDY1LCA3MywgNzYsIDEyOCwgODIsIDY1LCA3MywgNjgsIAorICAgIDIwNywgODIsIDY1LCA3MywgNjgsIDY1LCAxMjgsIDgyLCA2NSwgNzIsIDc3LCA2NSwgODQsIDg1LCA3NiwgNzYsIDY1LCAKKyAgICAyMDAsIDgyLCA2NSwgNzIsIDEyOCwgODIsIDY1LCA3MCwgNjksIDEyOCwgODIsIDY1LCA2OSwgNzcsIDEyOCwgODIsIDY1LCAKKyAgICA2OCwgNzMsIDc5LCA2NSwgNjcsIDg0LCA3MywgODYsIDE5NywgODIsIDY1LCA2OCwgNzMsIDc5LCAxMjgsIDgyLCA2NSwgNjgsIAorICAgIDczLCAyMDcsIDgyLCA2NSwgNjgsIDIwMSwgODIsIDY1LCA2OCwgMTI4LCA4MiwgNjUsIDE5NiwgODIsIDY1LCA2NywgODEsIAorICAgIDg1LCA2OSwgMjEyLCA4MiwgNjUsIDY3LCA3MywgNzgsIDcxLCAxMjgsIDgyLCA2NSwgNjYsIDY2LCA3MywgODQsIDEyOCwgCisgICAgODIsIDY1LCA2NiwgNjYsIDczLCAyMTIsIDgyLCA2NSwgNjYsIDEyOCwgODIsIDY1LCA2NSwgNzMsIDEyOCwgODIsIDY1LCAKKyAgICA1MSwgMTI4LCA4MiwgNjUsIDUwLCAxMjgsIDgyLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDU3LCAxMjgsIDgyLCAKKyAgICA0OCwgNTAsIDU2LCAxMjgsIDgyLCA0OCwgNTAsIDU1LCAxMjgsIDgyLCA0OCwgNTAsIDU0LCAxMjgsIDgyLCA0OCwgNTAsIAorICAgIDUzLCAxMjgsIDgyLCA0OCwgNTAsIDUyLCAxMjgsIDgyLCA0OCwgNTAsIDUxLCAxMjgsIDgyLCA0OCwgNTAsIDUwLCAxMjgsIAorICAgIDgyLCA0OCwgNTAsIDQ5LCAxMjgsIDgyLCA0OCwgNTAsIDQ4LCAxMjgsIDgyLCA0OCwgNDksIDU3LCAxMjgsIDgyLCA0OCwgCisgICAgNDksIDU2LCAxMjgsIDgyLCA0OCwgNDksIDU1LCAxMjgsIDgyLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4MiwgNDgsIDQ5LCAKKyAgICA1NCwgMTI4LCA4MiwgNDgsIDQ5LCA1MywgMTI4LCA4MiwgNDgsIDQ5LCA1MiwgMTI4LCA4MiwgNDgsIDQ5LCA1MSwgMTI4LCAKKyAgICA4MiwgNDgsIDQ5LCA1MCwgMTI4LCA4MiwgNDgsIDQ5LCA0OSwgMTI4LCA4MiwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgODIsIAorICAgIDQ4LCA0OSwgNDgsIDEyOCwgODIsIDQ4LCA0OCwgNTcsIDEyOCwgODIsIDQ4LCA0OCwgNTYsIDEyOCwgODIsIDQ4LCA0OCwgCisgICAgNTUsIDEyOCwgODIsIDQ4LCA0OCwgNTQsIDEyOCwgODIsIDQ4LCA0OCwgNTMsIDEyOCwgODIsIDQ4LCA0OCwgNTIsIDEyOCwgCisgICAgODIsIDQ4LCA0OCwgNTEsIDY2LCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgMTI4LCAKKyAgICA4MiwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDEyOCwgODIsIDQ4LCA0OCwgNDksIDEyOCwgODIsIAorICAgIDQ1LCA2NywgODIsIDY5LCAxOTcsIDgxLCA4OSwgODgsIDEyOCwgODEsIDg5LCA4NSwgMTI4LCA4MSwgODksIDg0LCAxMjgsIAorICAgIDgxLCA4OSwgODIsIDg4LCAxMjgsIDgxLCA4OSwgODIsIDEyOCwgODEsIDg5LCA4MCwgMTI4LCA4MSwgODksIDc5LCAxMjgsIAorICAgIDgxLCA4OSwgNzMsIDEyOCwgODEsIDg5LCA2OSwgNjksIDEyOCwgODEsIDg5LCA2OSwgMTI4LCA4MSwgODksIDY1LCA2NSwgCisgICAgMTI4LCA4MSwgODksIDY1LCAxMjgsIDgxLCA4OSwgMTI4LCA4MSwgODcsIDczLCAxMjgsIDgxLCA4NywgNjksIDY5LCAxMjgsIAorICAgIDgxLCA4NywgNjksIDEyOCwgODEsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDg3LCA2NSwgMTI4LCA4MSwgODUsIDg4LCAxMjgsIAorICAgIDgxLCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgMTI4LCA4MSwgODUsIDg0LCAxMjgsIAorICAgIDgxLCA4NSwgODMsIDcyLCA4MywgNzIsIDY1LCA4OSwgNjUsIDEyOCwgODEsIDg1LCA4MiwgODgsIDEyOCwgODEsIDg1LCA4MiwgCisgICAgMTI4LCA4MSwgODUsIDgwLCAxMjgsIDgxLCA4NSwgNzksIDg4LCAxMjgsIDgxLCA4NSwgNzksIDg0LCAxOTcsIDgxLCA4NSwgCisgICAgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MSwgODUsIDc5LCA4NCwgMTI4LCA4MSwgODUsIDc5LCA4MCwgMTI4LCAKKyAgICA4MSwgODUsIDc5LCAxMjgsIDgxLCA4NSwgNzUsIDEyOCwgODEsIDg1LCA3MywgNzgsIDg0LCA2OSwgODMsIDgzLCA2OSwgNzgsIAorICAgIDY3LCA2OSwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjgsIDczLCA2NywgNjksIDgzLCA3MywgNzcsIDE5MywgODEsIDg1LCA3MywgCisgICAgNzgsIDY3LCA4NSwgNzgsIDg4LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2NSwgODIsIDczLCA4NSwgMjExLCA4MSwgODUsIDczLCAKKyAgICA3NiwgNzYsIDEyOCwgODEsIDg1LCA3MywgNjcsIDIwMywgODEsIDg1LCA3MywgMTI4LCA4MSwgODUsIDcwLCAxMjgsIDgxLCAKKyAgICA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgNjksIDE5NiwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDc4LCAxMjgsIAorICAgIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNjksIDY5LCA3OCwgMTI4LCA4MSwgODUsIDY5LCA2OSwgCisgICAgMjA2LCA4MSwgODUsIDY5LCAxMjgsIDgxLCA4NSwgNjYsIDg1LCA4NCwgODMsIDEyOCwgODEsIDg1LCA2NSwgODQsIDY5LCAKKyAgICA4MiwgNzgsIDczLCA3OSwgMjA2LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgODMsIDEyOCwgODEsIDg1LCA2NSwgODIsIAorICAgIDg0LCA2OSwgODIsIDIxMSwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDEyOCwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgCisgICAgMjEwLCA4MSwgODUsIDY1LCA3OCwgODQsIDczLCA4NCwgMjE3LCA4MSwgODUsIDY1LCA2OCwgODIsIDg1LCA4MCwgNzYsIAorICAgIDE5NywgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDc4LCAKKyAgICAyMTIsIDgxLCA4NSwgNjUsIDY4LCAxMjgsIDgxLCA4NSwgNjUsIDE5NiwgODEsIDg1LCA2NSwgMTI4LCA4MSwgODUsIDEyOCwgCisgICAgODEsIDIwOCwgODEsIDc5LCA4OCwgMTI4LCA4MSwgNzksIDg0LCAxMjgsIDgxLCA3OSwgODAsIDcyLCAxMjgsIDgxLCA3OSwgCisgICAgODAsIDY1LCAxMjgsIDgxLCA3OSwgODAsIDEyOCwgODEsIDc5LCA3OSwgMTI4LCA4MSwgNzksIDIwNywgODEsIDc5LCA3MCwgCisgICAgMTI4LCA4MSwgNzksIDE5OCwgODEsIDc5LCA2NSwgMTI4LCA4MSwgNzksIDEyOCwgODEsIDc4LCAxMjgsIDgxLCA3MywgODgsIAorICAgIDEyOCwgODEsIDczLCA4NCwgODMsIDY1LCAxMjgsIDgxLCA3MywgODQsIDEyOCwgODEsIDczLCA4MCwgMTI4LCA4MSwgNzMsIAorICAgIDczLCAxMjgsIDgxLCA3MywgNjksIDg4LCAxMjgsIDgxLCA3MywgNjksIDg0LCAxMjgsIDgxLCA3MywgNjksIDgwLCAxMjgsIAorICAgIDgxLCA3MywgNjksIDEyOCwgODEsIDczLCAxMjgsIDgxLCA3MiwgODcsIDczLCAxMjgsIDgxLCA3MiwgODcsIDY5LCA2OSwgCisgICAgMTI4LCA4MSwgNzIsIDg3LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDcyLCA4NywgNjUsIDEyOCwgCisgICAgODEsIDcyLCA4NSwgMTI4LCA4MSwgNzIsIDc5LCAxMjgsIDgxLCA3MiwgNzMsIDEyOCwgODEsIDcyLCA2OSwgNjksIDEyOCwgCisgICAgODEsIDcyLCA2OSwgMTI4LCA4MSwgNzIsIDY1LCA2NSwgMTI4LCA4MSwgNzIsIDY1LCAxMjgsIDgxLCA3MSwgNjUsIDEyOCwgCiAgICAgODEsIDY5LCA4NCwgNjUsIDc4LCA2NSwgMTI4LCA4MSwgNjksIDY5LCAxMjgsIDgxLCA2OSwgMTI4LCA4MSwgNjUsIDg1LCAKICAgICAxMjgsIDgxLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA4MSwgNjUsIDgyLCA3OCwgNjksIDIxNywgODEsIDY1LCA4MiwgMTI4LCAKICAgICA4MSwgNjUsIDgxLCAxMjgsIDgxLCA2NSwgODAsIDcyLCAxMjgsIDgxLCA2NSwgNzcsIDY1LCA4NCwgODMsIDEyOCwgODEsIApAQCAtMTMyOCwyOTcgKzE0NDEsMzA3IEBACiAgICAgODcsIDc5LCA3OSwgMTI4LCA4MCwgODcsIDc5LCAxMjgsIDgwLCA4NywgMjA3LCA4MCwgODcsIDczLCA3MywgMTI4LCA4MCwgCiAgICAgODcsIDczLCAxMjgsIDgwLCA4NywgNjksIDY5LCAxMjgsIDgwLCA4NywgNjksIDEyOCwgODAsIDg3LCA2NSwgNjUsIDEyOCwgCiAgICAgODAsIDg3LCAxMjgsIDgwLCA4NiwgMTI4LCA4MCwgODUsIDg4LCAxMjgsIDgwLCA4NSwgODUsIDg0LCAxMjgsIDgwLCA4NSwgCi0gICAgODQsIDgyLCA2OSwgNzAsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDg1LCA4NCwgMTI4LCA4MCwgODUsIAotICAgIDIxMiwgODAsIDg1LCA4MywgNzIsIDgwLCA3MywgNzgsIDEyOCwgODAsIDg1LCA4MywgNzIsIDgwLCA3MywgNzUsIDY1LCAKLSAgICAxMjgsIDgwLCA4NSwgODMsIDcyLCA3MywgNzgsIDE5OSwgODAsIDg1LCA4MiwgODgsIDEyOCwgODAsIDg1LCA4MiwgODMsIAotICAgIDY5LCAxMjgsIDgwLCA4NSwgODIsIDgwLCA3NiwgMTk3LCA4MCwgODUsIDgyLCA3MywgODQsIDg5LCAxMjgsIDgwLCA4NSwgCi0gICAgODIsIDczLCA3MCwgODksIDEyOCwgODAsIDg1LCA4MiwgMTI4LCA4MCwgODUsIDgxLCAxMjgsIDgwLCA4NSwgODAsIDEyOCwgCi0gICAgODAsIDg1LCA3OSwgODgsIDEyOCwgODAsIDg1LCA3OSwgODAsIDEyOCwgODAsIDg1LCA3OSwgMTI4LCA4MCwgODUsIDc4LCAKLSAgICA3MSwgNjUsIDY1LCA3NywgMTI4LCA4MCwgODUsIDc4LCA3MSwgMTI4LCA4MCwgODUsIDc4LCA2NywgODQsIDg1LCA2NSwgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgODAsIDg1LCA3OCwgNjcsIDg0LCA4NSwgNjUsIDg0LCA3MywgNzksIDIwNiwgODAsIDg1LCA3NywgCi0gICAgODAsIDEyOCwgODAsIDg1LCA3NywgMTI4LCA4MCwgODUsIDY5LCAxMjgsIDgwLCA4NSwgNjYsIDc2LCA3MywgMTk1LCA4MCwgCi0gICAgODUsIDY1LCA4MSwgMTI4LCA4MCwgODUsIDY1LCA2OSwgMTI4LCA4MCwgODUsIDUwLCAxMjgsIDgwLCA4NSwgMTI4LCA4MCwgCi0gICAgODQsIDcyLCA2NSwgNzIsIDE5MywgODAsIDg0LCA2OSwgMTI4LCA4MCwgODMsIDczLCA3NiwgMjAxLCA4MCwgODMsIDczLCAKLSAgICA3MCwgNzMsIDgzLCA4NCwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgCi0gICAgODMsIDg0LCA3OSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIAotICAgIDcwLCA3MywgODMsIDg0LCA3OSwgMjA2LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDc2LCA4OSwgNzEsIDczLCAKLSAgICA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDEyOCwgODAsIDgzLCAxMjgsIDgwLCA4MiwgNzksIDg2LCA2OSwgMTI4LCAKLSAgICA4MCwgODIsIDc5LCA4NCwgNzksIDg2LCA2NSwgODIsIDg5LCAyMTEsIDgwLCA4MiwgNzksIDg0LCA3OSwgMjExLCA4MCwgODIsIAotICAgIDc5LCA4MywgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgODAsIDgyLCA3OSwgODAsIDc5LCAKLSAgICA4MiwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDgwLCA4MiwgNzksIDgwLCA2OSwgODIsIDg0LCAyMTcsIDgwLCA4MiwgNzksIDgwLCA2OSwgNzYsIDc2LCA2OSwgMjEwLCA4MCwgCi0gICAgODIsIDc5LCA3OSwgNzAsIDEyOCwgODAsIDgyLCA3OSwgNzYsIDc5LCA3OCwgNzEsIDY5LCAxOTYsIDgwLCA4MiwgNzksIDc2LCAKLSAgICA2NSwgODQsIDczLCA3OSwgNzgsIDE5NywgODAsIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDEyOCwgODAsIAotICAgIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDgyLCA3OSwgNzEsIDgyLCA2OSwgODMsIDgzLCAKLSAgICAxMjgsIDgwLCA4MiwgNzksIDcwLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCA4NCwgCi0gICAgMTI4LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCAyMTIsIDgwLCA4MiwgNzMsIDg2LCA2NSwgODQsIDY5LCAxMjgsIDgwLCAKLSAgICA4MiwgNzMsIDgzLCA3MiwgODQsIDcyLCA2NSwgNzcsIDY1LCA4NCwgODIsIDE5MywgODAsIDgyLCA3MywgNzgsIDg0LCA4MywgCi0gICAgMTI4LCA4MCwgODIsIDczLCA3OCwgODQsIDEyOCwgODAsIDgyLCA3MywgNzgsIDIxMiwgODAsIDgyLCA3MywgNzgsIDY3LCAKLSAgICA2OSwgODMsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc3LCA2OSwgMTI4LCA4MCwgODIsIDczLCA3NywgMTk3LCA4MCwgODIsIAotICAgIDY5LCA4NiwgNzMsIDc5LCA4NSwgMjExLCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgCi0gICAgODAsIDgyLCA2OSwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIDgwLCA3OSwgNzgsIAotICAgIDY4LCA2OSwgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDc4LCA3NSwgNzIsIDY1LCAxMjgsIDgwLCA4MiwgCi0gICAgNjksIDcwLCA2NSwgNjcsIDE5NywgODAsIDgyLCA2OSwgNjcsIDczLCA4MCwgNzMsIDg0LCA2NSwgODQsIDY5LCAxMjgsIDgwLCAKLSAgICA4MiwgNjksIDY3LCA2OSwgNjgsIDczLCA3OCwgMTk5LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgODMsIDEyOCwgODAsIAotICAgIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDIxMSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDE5NiwgODAsIDgyLCA2OSwgCi0gICAgNjcsIDY5LCA2OCwgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgMTk3LCA4MCwgODIsIDY1LCA3NywgNDUsIDgwLCAKLSAgICA3MywgNzMsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgNzMsIDIwMSwgODAsIDgyLCA2NSwgNzcsIDQ1LCA3NywgODUsIAotICAgIDc5LCA4OSwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDc3LCA4NSwgNzksIDIxNywgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgCi0gICAgODUsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA4NSwgNzksIDIwNiwgODAsIDgyLCA2NSwgNzcsIDQ1LCAKLSAgICA2NiwgNjksIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCAyMDEsIDgwLCA4MiwgNjUsIDc3LCAxMjgsIAotICAgIDgwLCA4MiwgNjUsIDIwNSwgODAsIDgyLCAxMjgsIDgwLCA4MCwgODYsIDEyOCwgODAsIDgwLCA3NywgMTI4LCA4MCwgODAsIAotICAgIDY1LCAxMjgsIDgwLCA3OSwgODksIDEyOCwgODAsIDc5LCA4OCwgMTI4LCA4MCwgNzksIDg3LCA2OSwgODIsIDIxMSwgODAsIAotICAgIDc5LCA4NywgNjksIDgyLCAxMjgsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgwLCA3OSwgODcsIDY4LCA2OSwgCi0gICAgODIsIDEyOCwgODAsIDc5LCA4NSwgNzgsIDE5NiwgODAsIDc5LCA4NSwgNzYsIDg0LCA4MiwgMjE3LCA4MCwgNzksIDg1LCAKLSAgICA2NywgNzIsIDEyOCwgODAsIDc5LCA4NCwgNjUsIDg0LCA3OSwgMTI4LCA4MCwgNzksIDg0LCA2NSwgNjYsIDc2LCAxOTcsIAotICAgIDgwLCA3OSwgMjEyLCA4MCwgNzksIDgzLCA4NCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgODAsIDc5LCA4MywgCi0gICAgODQsIDY2LCA3OSwgODgsIDEyOCwgODAsIDc5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA3OSwgODMsIDg0LCAxMjgsIDgwLCAKLSAgICA3OSwgODMsIDIxMiwgODAsIDc5LCA4MywgODMsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODAsIDc5LCA4MiwgODIsIAotICAgIDY5LCA2NywgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgODUsIDIxMSwgODAsIDc5LCA4MCwgCi0gICAgODAsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDgwLCAxMjgsIDgwLCA3OSwgMjA4LCA4MCwgNzksIDc5LCA2OCwgNzYsIDY5LCAKLSAgICAxMjgsIDgwLCA3OSwgNzksIDEyOCwgODAsIDc5LCA3OCwgNjgsIDc5LCAxMjgsIDgwLCA3OSwgMjA2LCA4MCwgNzksIDc2LCAKLSAgICA3MywgODMsIDcyLCAxMjgsIDgwLCA3OSwgNzYsIDczLCA2NywgMTk3LCA4MCwgNzksIDc2LCAyMDEsIDgwLCA3OSwgNzYsIAotICAgIDY5LCAxMjgsIDgwLCA3OSwgNzYsIDE5NywgODAsIDc5LCA3NSwgODIsIDg5LCA4NCwgNzMsIDY5LCAxMjgsIDgwLCA3OSwgCi0gICAgNzUsIDc5LCA3NCwgNzMsIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCAyMTEsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzksIAotICAgIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgODIsIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA4MCwgCi0gICAgNzksIDczLCA3OCwgODQsIDEyOCwgODAsIDc5LCA3MywgNzgsIDIxMiwgODAsIDc5LCA2OSwgODQsIDgyLCAyMTcsIDgwLCAKLSAgICA3OSwgNjksIDg0LCA3MywgMTk1LCA4MCwgNzksIDY4LCA2NSwgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIDY1LCAxMjgsIAotICAgIDgwLCA3OSwgMTI4LCA4MCwgMjA3LCA4MCwgNzgsIDY5LCA4NSwgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODAsIDc2LCA4NSwgCi0gICAgODQsIDc5LCAxMjgsIDgwLCA3NiwgODUsIDgzLCA0NSwgNzcsIDczLCA3OCwgODUsIDIxMSwgODAsIDc2LCA4NSwgODMsIAotICAgIDEyOCwgODAsIDc2LCA4NSwgODIsIDY1LCA3NiwgMTI4LCA4MCwgNzYsIDg1LCA3NywgNjksIDE5NiwgODAsIDc2LCA4NSwgCi0gICAgNzcsIDEyOCwgODAsIDc2LCA4NSwgNzUsIDEyOCwgODAsIDc2LCA4NSwgNzEsIDEyOCwgODAsIDc2LCA3OSwgODcsIDEyOCwgCi0gICAgODAsIDc2LCA3OSwgODAsIDcyLCA4NSwgMTI4LCA4MCwgNzYsIDY5LCA4NCwgNzIsIDgyLCA3OSwgNzgsIDEyOCwgODAsIDc2LCAKLSAgICA2NSwgODksIDczLCA3OCwgMTk5LCA4MCwgNzYsIDY1LCA4MywgODQsIDczLCA2NywgODMsIDEyOCwgODAsIDc2LCA2NSwgNzgsIAotICAgIDY5LCAxMjgsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDgwLCA3NiwgNjUsIDc4LCA2NywgMjAzLCA4MCwgNzYsIDY1LCA3NSwgCi0gICAgMTI4LCA4MCwgNzYsIDY1LCA3MSwgNzMsIDc5LCAyMTEsIDgwLCA3NiwgNjUsIDY3LCA2OSwgNzIsIDc5LCA3NiwgNjgsIDY5LCAKLSAgICAyMTAsIDgwLCA3NiwgNjUsIDY3LCAxOTcsIDgwLCA3NiwgNjUsIDEyOCwgODAsIDczLCA5MCwgOTAsIDczLCA2NywgNjUsIAotICAgIDg0LCA3OSwgMTI4LCA4MCwgNzMsIDkwLCA5MCwgNjUsIDEyOCwgODAsIDczLCA4OCwgMTI4LCA4MCwgNzMsIDg3LCA4MiwgCi0gICAgMTI4LCA4MCwgNzMsIDg0LCA2NywgNzIsIDcwLCA3OSwgODIsIDc1LCAxMjgsIDgwLCA3MywgODQsIDY3LCA3MiwgNzAsIDc5LCAKLSAgICA4MiwgMjAzLCA4MCwgNzMsIDg0LCAxMjgsIDgwLCA3MywgODMsIDg0LCA3OSwgNzYsIDEyOCwgODAsIDczLCA4MywgNjksIAotICAgIDc2LCA2OSwgNzIsIDEyOCwgODAsIDczLCA4MywgNjcsIDY5LCA4MywgMTI4LCA4MCwgNzMsIDgyLCA3MywgNzEsIDEyOCwgCi0gICAgODAsIDczLCA4MiwgNzMsIDE5OSwgODAsIDczLCA4MiwgNzMsIDY5LCA2OSwgNzgsIDEyOCwgODAsIDczLCA4MCwgNzMsIDc4LCAKLSAgICA3MSwgMTI4LCA4MCwgNzMsIDgwLCA2NSwgNjksIDc3LCA3MSwgNjYsIDczLCA2OSwgNjksIDEyOCwgODAsIDczLCA4MCwgNjUsIAotICAgIDY5LCA3NywgNjYsIDY1LCAxMjgsIDgwLCA3MywgODAsIDEyOCwgODAsIDczLCA3OCwgODcsIDcyLCA2OSwgNjksIDIwNCwgCi0gICAgODAsIDczLCA3OCwgNjksIDY1LCA4MCwgODAsIDc2LCA2OSwgMTI4LCA4MCwgNzMsIDc4LCAxOTcsIDgwLCA3MywgNzgsIDY1LCAKLSAgICA4MiwgNjYsIDc5LCA4MiwgNjUsIDgzLCAxMjgsIDgwLCA3MywgNzYsIDc2LCAxMjgsIDgwLCA3MywgNzYsIDE5NywgODAsIAotICAgIDczLCA3NiwgNjcsIDgyLCA3OSwgMjE1LCA4MCwgNzMsIDc1LCA4NSwgODIsIDg1LCAxMjgsIDgwLCA3MywgNzUsIDc5LCAKLSAgICAxMjgsIDgwLCA3MywgNzEsIDEyOCwgODAsIDczLCAxOTksIDgwLCA3MywgNjksIDg4LCAxMjgsIDgwLCA3MywgNjksIDg1LCAKLSAgICA4MCwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA4MywgCi0gICAgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIAotICAgIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAKLSAgICA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgCi0gICAgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIAotICAgIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAKLSAgICA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgyLCA3MywgNjksIAotICAgIDg1LCA3NiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODAsIDczLCA2OSwgCi0gICAgODUsIDgwLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc1LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MCwgCi0gICAgNzMsIDY5LCA4NSwgODAsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgMjA4LCAKLSAgICA4MCwgNzMsIDY5LCA4NCwgMTI4LCA4MCwgNzMsIDY5LCA4MCwgMTI4LCA4MCwgNzMsIDY5LCA2OSwgODQsIDEyOCwgODAsIAotICAgIDczLCA2OSwgNjksIDgxLCAxMjgsIDgwLCA3MywgNjksIDY3LCA2OSwgMTI4LCA4MCwgNzMsIDY5LCAxMjgsIDgwLCA3MywgCi0gICAgNjcsIDc1LCA2OSwgODQsIDEyOCwgODAsIDczLCA2NywgNzUsIDEyOCwgODAsIDczLCA2NSwgODMsIDg1LCA4NCwgNzksIDgyLCAKLSAgICA4NSwgMTI4LCA4MCwgNzMsIDY1LCA4MywgNzcsIDE5MywgODAsIDczLCA2NSwgNzgsIDc5LCAxMjgsIDgwLCAyMDEsIDgwLCAKLSAgICA3MiwgODcsIDY1LCAxMjgsIDgwLCA3MiwgODUsIDg0LCA3MiwgNjUsIDc5LCAxMjgsIDgwLCA3MiwgODUsIDIxMCwgODAsIAotICAgIDcyLCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA3MiwgODIsIDY1LCA4MywgNjksIDEyOCwgODAsIDcyLCA3OSwgNzgsIDY5LCA4MywgCi0gICAgMTI4LCA4MCwgNzIsIDc5LCA2OSwgNzgsIDczLCA2NywgNzMsIDY1LCAyMDYsIDgwLCA3MiwgNzksIDY1LCAxMjgsIDgwLCAKLSAgICA3MiwgNzksIDEyOCwgODAsIDcyLCAyMDcsIDgwLCA3MiwgNzgsIDY1LCA2OSwgMjAzLCA4MCwgNzIsIDczLCA3OCwgODQsIAotICAgIDcyLCA4NSwgMTI4LCA4MCwgNzIsIDczLCA3NiwgNzksIDgzLCA3OSwgODAsIDcyLCA2OSwgODIsIDIxMSwgODAsIDcyLCA3MywgCi0gICAgNzYsIDczLCA4MCwgODAsIDczLCA3OCwgMTk3LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDg0LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgCi0gICAgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDcyLCA3MywgNjksIAotICAgIDg1LCA4MCwgNzIsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgMjAwLCA4MCwgCi0gICAgNzIsIDczLCAxMjgsIDgwLCA3MiwgMjAxLCA4MCwgNzIsIDY5LCA2OSwgMTI4LCA4MCwgNzIsIDY5LCAxMjgsIDgwLCA3MiwgCi0gICAgNjUsIDgzLCA2OSwgNDUsIDE5OCwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk0LCA4MCwgNzIsIDY1LCA4MiwgODksIDc4LCAKLSAgICA3MSwgNjksIDY1LCAyMDQsIDgwLCA3MiwgNjUsIDgyLCAxMjgsIDgwLCA3MiwgNjUsIDc4LCAxMjgsIDgwLCA3MiwgNjUsIAotICAgIDc3LCAxMjgsIDgwLCA3MiwgNjUsIDczLCA4MywgODQsIDc5LCAyMTEsIDgwLCA3MiwgNjUsIDcxLCA4MywgNDUsIDgwLCAKLSAgICAxOTMsIDgwLCA3MiwgNjUsIDY1LCA4MiwgNzUsIDY1LCA2NSwgMTI4LCA4MCwgNzIsIDY1LCA2NSwgMTI4LCA4MCwgNzIsIAotICAgIDY1LCAxMjgsIDgwLCA3MSwgMTI4LCA4MCwgNzAsIDEyOCwgODAsIDY5LCA4NSwgODgsIDEyOCwgODAsIDY5LCA4NSwgODQsIAotICAgIDY1LCA2OSwgMTI4LCA4MCwgNjksIDg1LCA4NCwgMTI4LCA4MCwgNjksIDg0LCA2NSwgODMsIDg0LCA3OSwgNzUsIDc5LCA4NSwgCi0gICAgNzAsIDczLCA4MywgNzcsIDY1LCAxMjgsIDgwLCA2OSwgODQsIDY1LCA4MywgODQsIDczLCAxMjgsIDgwLCA2OSwgODQsIDY1LCAKLSAgICA4MywgNzcsIDY1LCAxMjgsIDgwLCA2OSwgODQsIDY1LCA3NiwgNzYsIDY5LCAxOTYsIDgwLCA2OSwgODMsIDc5LCAxMjgsIAotICAgIDgwLCA2OSwgODMsIDIwNywgODAsIDY5LCA4MywgNzIsIDUwLCAxMjgsIDgwLCA2OSwgODMsIDY5LCA4NCwgMTkzLCA4MCwgCi0gICAgNjksIDIxMSwgODAsIDY5LCA4MiwgODQsIDcyLCAyMDcsIDgwLCA2OSwgODIsIDgzLCA4MCwgNjksIDY3LCA4NCwgNzMsIDg2LCAKLSAgICA2OSwgMTI4LCA4MCwgNjksIDgyLCA4MywgNzksIDc4LCA2NSwgMjA0LCA4MCwgNjksIDgyLCA4MywgNzksIDc4LCAxMjgsIAotICAgIDgwLCA2OSwgODIsIDgzLCA3OSwgMjA2LCA4MCwgNjksIDgyLCA4MywgNzMsIDY1LCAyMDYsIDgwLCA2OSwgODIsIDgzLCA2OSwgCi0gICAgODYsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDgwLCA2OSwgODIsIDgwLCA2OSwgNzgsIDY4LCA3MywgNjcsIDg1LCA3NiwgNjUsIAotICAgIDgyLCAxMjgsIDgwLCA2OSwgODIsIDgwLCA2OSwgNzgsIDY4LCA3MywgNjcsIDg1LCA3NiwgNjUsIDIxMCwgODAsIDY5LCA4MiwgCi0gICAgNzcsIDY1LCA3OCwgNjksIDc4LCAyMTIsIDgwLCA2OSwgODIsIDczLCA4MywgODAsIDc5LCA3NywgNjksIDc4LCA3MywgMTI4LCAKLSAgICA4MCwgNjksIDgyLCA3MywgODMsIDgwLCA3OSwgNzcsIDY5LCA3OCwgMjAxLCA4MCwgNjksIDgyLCA3MCwgNzksIDgyLCA3NywgCi0gICAgNzMsIDc4LCAxOTksIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCA4NSwgMjA1LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCAKLSAgICA4NCwgNjUsIDEyOCwgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDE5MywgODAsIDY5LCA4MiwgNjcsIDg1LCA4MywgODMsIAotICAgIDczLCA4NiwgNjksIDEyOCwgODAsIDY5LCA4MiwgNjcsIDY5LCA3OCwgMjEyLCA4MCwgNjksIDgwLCA2OSwgODQsIDEyOCwgCi0gICAgODAsIDY5LCA4MCwgNjksIDIxMiwgODAsIDY5LCA3OSwgODIsIDg0LCAyMDAsIDgwLCA2OSwgNzksIDgwLCA3NiwgNjksIAotICAgIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA4MywgNjksIDc3LCA2OSwgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDcxLCA4MiwgCi0gICAgNjUsIDc3LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc4LCA4MywgODUsIAotICAgIDEyOCwgODAsIDY5LCA3OCwgODMsIDczLCA4NiwgMTk3LCA4MCwgNjksIDc4LCA3OCwgMjE3LCA4MCwgNjksIDc4LCA3MywgCi0gICAgNzIsIDczLCAxMjgsIDgwLCA2OSwgNzgsIDcxLCA4NSwgNzMsIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDcxLCA3NSwgNjUsIDc2LCAKLSAgICAxMjgsIDgwLCA2OSwgNzgsIDY5LCA4NCwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc4LCA2NywgNzMsIAotICAgIDc2LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgODQsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc2LCA2NSwgODMsIDg0LCA3OSwgCi0gICAgMjA2LCA4MCwgNjksIDczLCA4NCwgNzIsIDEyOCwgODAsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDgwLCA2OSwgNzIsIDY5LCAKLSAgICAyMDAsIDgwLCA2OSwgNzIsIDEyOCwgODAsIDY5LCAyMDAsIDgwLCA2OSwgNjksIDkwLCA3MywgMTI4LCA4MCwgNjksIDY5LCAKLSAgICA4MywgNzIsIDczLCAxMjgsIDgwLCA2OSwgNjksIDgwLCAxMjgsIDgwLCA2OSwgNjksIDc3LCAxMjgsIDgwLCA2OSwgNjksIAotICAgIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgODIsIDczLCA2NSwgNzgsIDgzLCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgCi0gICAgODQsIDgyLCA3MywgNjUsIDc4LCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDY1LCA3NiwgMTI4LCA4MCwgNjksIDY4LCAKLSAgICA2OSwgODMsIDg0LCA2NSwgMjA0LCA4MCwgNjksIDY4LCA2NSwgMjA0LCA4MCwgNjksIDY1LCA2NywgNzIsIDEyOCwgODAsIAotICAgIDY5LCA2NSwgNjcsIDY5LCAxMjgsIDgwLCA2OSwgNjUsIDY3LCAxOTcsIDgwLCA2OCwgMTI4LCA4MCwgNjcsIDEyOCwgODAsIAotICAgIDY1LCA5MCwgNjksIDgyLCAxMjgsIDgwLCA2NSwgODksIDY5LCA4MiwgNzksIDc1LCAxMjgsIDgwLCA2NSwgODksIDY1LCA3OCwgCi0gICAgNzgsIDY1LCAxMjgsIDgwLCA2NSwgODksIDEyOCwgODAsIDY1LCA4OCwgMTI4LCA4MCwgNjUsIDg3LCA3OCwgMTI4LCA4MCwgCi0gICAgNjUsIDIxNSwgODAsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDgwLCA2NSwgODQsIDg0LCA2OSwgODIsIDc4LCAKLSAgICAxMjgsIDgwLCA2NSwgODQsIDcyLCA2NSwgNzcsIDY1LCA4MywgNjUsIDg0LCAxMjgsIDgwLCA2NSwgODQsIDIwMCwgODAsIAotICAgIDY1LCA4NCwgNjUsIDc1LCAxMjgsIDgwLCA2NSwgODQsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgCi0gICAgODMsIDg1LCA4MSwgMTI4LCA4MCwgNjUsIDgzLCA4MywgODAsIDc5LCA4MiwgMjEyLCA4MCwgNjUsIDgzLCA4MywgNzMsIDg2LCAKLSAgICA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgODUsIDgwLCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDgwLCA2NSwgCi0gICAgODMsIDgzLCA3MywgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA2OCwgNzksIDg3LCA3OCwgNDUsIDc5LCA4NSwgCi0gICAgODQsIDgwLCA4NSwgMjEyLCA4MCwgNjUsIDgzLCA3MiwgODQsIDY1LCAxMjgsIDgwLCA2NSwgODMsIDcyLCA2NSwgNjksIAotICAgIDEyOCwgODAsIDY1LCA4MywgNjksIDgxLCAxMjgsIDgwLCA2NSwgODIsIDg1LCA3NywgMTI4LCA4MCwgNjUsIDgyLCA4NCwgCi0gICAgMjE3LCA4MCwgNjUsIDgyLCA4NCwgNzgsIDY5LCA4MiwgODMsIDcyLCA3MywgMjA4LCA4MCwgNjUsIDgyLCA4NCwgNzMsIDY1LCAKLSAgICA3NiwgNzYsIDg5LCA0NSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIDE5NiwgODAsIDY1LCA4MiwgODQsIDczLCA2NSwgCi0gICAgMjA0LCA4MCwgNjUsIDgyLCA4NCwgNzIsIDczLCA2NSwgMjA2LCA4MCwgNjUsIDgyLCAyMTIsIDgwLCA2NSwgODIsIDczLCAKLSAgICA2NywgNzIsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgODMsIDg0LCA3MywgNzEsIDc3LCA2OSwgNzgsIDc5LCAyMDYsIAotICAgIDgwLCA2NSwgODIsIDY5LCA4MiwgNjksIDc4LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCAKLSAgICA4MywgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgMjExLCA4MCwgNjUsIDgyLCA2NSwgODAsIAotICAgIDcyLCA4MiwgNjUsIDgzLCAxOTcsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgNzksIDcxLCA4MiwgNjUsIDc3LCAKLSAgICAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgCi0gICAgMjA0LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDc2LCA3MywgODQsIDczLCA3NSwgNzMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc1LCAKLSAgICA3NiwgNzMsIDg0LCA3MywgNzUsIDIwMSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDE5MywgODAsIAotICAgIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzksIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDgwLCA2NSwgODIsIDY1LCAxMjgsIAotICAgIDgwLCA2NSwgODIsIDEyOCwgODAsIDY1LCA4MCwgODksIDgyLCA4NSwgODMsIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgCi0gICAgNzYsIDczLCA4MCwgMTI4LCA4MCwgNjUsIDgwLCA2OSwgMjEwLCA4MCwgNjUsIDgwLCAxMjgsIDgwLCA2NSwgMjA4LCA4MCwgCi0gICAgNjUsIDIwNywgODAsIDY1LCA3OCwgODksIDg1LCA3NSwgODUsIDEyOCwgODAsIDY1LCA3OCwgODksIDczLCA3NSwgODUsIAotICAgIDEyOCwgODAsIDY1LCA3OCwgODksIDY5LCA2NywgNjksIDc1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzgsIDcxLCA3MSwgCi0gICAgNjUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3NSwgODIsIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg0LCA3MywgMTI4LCAKLSAgICA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA4MywgCi0gICAgNzMsIDc5LCA4MywgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIAotICAgIDgwLCA2NSwgNzgsIDc5LCA3OCwgNzEsIDc5LCA3OCwgNjUsIDc4LCAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3NiwgNzksIDc4LCAKLSAgICA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODcsIDczLCA4MywgNjUsIDY4LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4MiwgNjUsIAotICAgIDc4LCA3MSwgNzUsIDY5LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzksIDc2LCA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgCi0gICAgNzEsIDc2LCA2NSwgODksIDY1LCA4MiwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzUsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDc4LCAKLSAgICA3MSwgNzUsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzIsIDg1LCA3NiwgODUsIDEyOCwgODAsIDY1LCA3OCwgNzEsIAotICAgIDEyOCwgODAsIDY1LCA3OCwgNjksIDg1LCA3NiwgNjksIDg1LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNjgsIDE5MywgCi0gICAgODAsIDY1LCA3OCwgNjUsIDY5LCA3NiwgNjUsIDY5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgMTI4LCA4MCwgNjUsIDc3LCAKLSAgICA4NSwgNzgsIDcxLCA3NSwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgNzcsIDg1LCA2OCwgODAsIDc5LCA2OCwgMTI4LCA4MCwgNjUsIAotICAgIDc3LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDc3LCA4MCwgNzIsIDg5LCA3NiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgCi0gICAgNzcsIDczLCA3OCwgNzEsIDc1LCA2NSwgNzYsIDEyOCwgODAsIDY1LCA3NywgNjksIDgwLCA2OSwgODQsIDEyOCwgODAsIDY1LCAKLSAgICA3NywgNjksIDc4LCA2OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzcsIDY1LCA2OCwgNjUsIDEyOCwgODAsIDY1LCA3NywgNjUsIAotICAgIDY1LCA2OSwgNzIsIDEyOCwgODAsIDY1LCA3NiwgODUsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3OSwgNjcsIDcyLCA3NSwgCi0gICAgNjUsIDEyOCwgODAsIDY1LCA3NiwgMjA1LCA4MCwgNjUsIDc2LCA3NiwgNjUsIDg3LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCAKLSAgICA3NiwgNjUsIDgzLCAxMjgsIDgwLCA2NSwgNzYsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NSwgNzgsIAotICAgIDE5OSwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIDczLCA5MCwgNjksIDE5NiwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgCi0gICAgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDIwNCwgODAsIDY1LCAKLSAgICA3NSwgODAsIDY1LCAyMDMsIDgwLCA2NSwgNzMsIDg5LCA2NSwgNzgsIDc4LCA3OSwgNzMsIDEyOCwgODAsIDY1LCA3MywgODIsIAotICAgIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgwLCA2NSwgNzMsIDgyLCA2OSwgMTk2LCA4MCwgNjUsIDcyLCA3NiwgNjUsIDg2LCAKLSAgICAyMDEsIDgwLCA2NSwgNzEsIDY5LCA4MiwgMTI4LCA4MCwgNjUsIDcxLCAxOTcsIDgwLCA2NSwgNjgsIDc3LCAxOTMsIDgwLCAKLSAgICA2NSwgNjgsIDE5MywgODAsIDY1LCA2OCwgMTI4LCA4MCwgNjUsIDY3LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIAotICAgIDY3LCA3NSwgNjUsIDcxLCA2OSwgMTI4LCA4MCwgNjUsIDY1LCA4NCwgODUsIDEyOCwgODAsIDY1LCA2NSwgODMsIDY5LCA3OCwgCi0gICAgODQsIDc5LCAxMjgsIDgwLCA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDY1LCAKLSAgICA2NSwgNzMsIDEyOCwgODAsIDY1LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA4MCwgNjUsIDY1LCAxMjgsIAotICAgIDgwLCA1MCwgMTI4LCA4MCwgNDgsIDQ5LCA0OSwgMTI4LCA4MCwgNDgsIDQ5LCA0OCwgMTI4LCA4MCwgNDgsIDQ4LCA1NywgCi0gICAgMTI4LCA4MCwgNDgsIDQ4LCA1NiwgMTI4LCA4MCwgNDgsIDQ4LCA1NSwgMTI4LCA4MCwgNDgsIDQ4LCA1NCwgMTI4LCA4MCwgCi0gICAgNDgsIDQ4LCA1MywgMTI4LCA4MCwgNDgsIDQ4LCA1MiwgMTI4LCA4MCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODAsIDQ4LCAKLSAgICA0OCwgNTEsIDEyOCwgODAsIDQ4LCA0OCwgNTAsIDEyOCwgODAsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDgwLCA0OCwgNDgsIAotICAgIDQ5LCAxMjgsIDc5LCA4OSwgODIsIDY1LCA3OCwgNzMsIDgzLCA3NywgMTkzLCA3OSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDc5LCA4OCwgNzMsIDY1LCAxMjgsIDc5LCA4OCwgNzMsIDE5MywgNzksIDg4LCA2OSwgNzMsIDY1LCAyMDEsIDc5LCAKLSAgICA4OCwgNjksIDczLCAxOTMsIDc5LCA4NiwgNjksIDgyLCA4MiwgNzMsIDY4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIAotICAgIDc5LCA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgCi0gICAgODksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNzksIDg2LCA2OSwgODIsIDc2LCAKLSAgICA2NSwgNzMsIDY4LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA2NiwgNjUsIDgyLCAxMjgsIDc5LCA4NiwgNjUsIDIwNCwgNzksIAotICAgIDg2LCAxMjgsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxOTYsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAKLSAgICAxMjgsIDc5LCA4NSwgODQsIDY5LCAyMTAsIDc5LCA4NSwgODQsIDY2LCA3OSwgMjE2LCA3OSwgODUsIDc4LCA3NSwgNzMsIAotICAgIDE5MywgNzksIDg1LCA3OCwgNjcsIDY5LCAxMjgsIDc5LCA4NSwgNzgsIDY3LCAxOTcsIDc5LCA4NCwgODUsIDEyOCwgNzksIAotICAgIDg0LCA4NCwgNjUsIDg2LCAxOTMsIDc5LCA4NCwgODQsIDEyOCwgNzksIDg0LCA3MiwgNjUsIDc2LCA2NSwgMjA2LCA3OSwgCi0gICAgODQsIDcyLCA2NSwgNzYsIDEyOCwgNzksIDgzLCA3NywgNjUsIDc4LCA4OSwgMTkzLCA3OSwgODIsIDg0LCA3MiwgNzksIDcxLCAKLSAgICA3OSwgNzgsIDY1LCAyMDQsIDc5LCA4MiwgODQsIDcyLCA3OSwgNjgsIDc5LCAyMTYsIDc5LCA4MiwgNzgsIDY1LCA4NCwgCi0gICAgMTk3LCA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIAotICAgIDIxMiwgNzksIDgyLCA3NSwgNzIsIDc5LCAyMDYsIDc5LCA4MiwgNzMsIDcxLCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgCi0gICAgNzMsIDcxLCA3MywgNzgsIDEyOCwgNzksIDgyLCA2OSwgNDUsIDUwLCAxMjgsIDc5LCA4MiwgNjgsIDczLCA3OCwgNjUsIAotICAgIDIwNCwgNzksIDgyLCA2NywgNzIsIDczLCA2OCwgMTI4LCA3OSwgODIsIDY1LCA3OCwgNzEsIDE5NywgNzksIDgwLCA4NCwgCi0gICAgNzMsIDc5LCAyMDYsIDc5LCA4MCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzksIDgwLCA4MCwgODIsIDY5LCA4MywgODMsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNzksIDgwLCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDgwLCA4MCwgNzksIAotICAgIDgzLCA3MywgNzgsIDE5OSwgNzksIDgwLCA4MCwgNzksIDgzLCA2OSwgMTI4LCA3OSwgODAsIDcyLCA3MywgODUsIDY3LCA3MiwgCi0gICAgODUsIDgzLCAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCAKLSAgICA3OSwgMjEwLCA3OSwgODAsIDY5LCA3OCwgNzMsIDc4LCAxOTksIDc5LCA4MCwgNjksIDc4LCA0NSwgODAsIDEyOCwgNzksIAotICAgIDgwLCA2OSwgNzgsIDQ1LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIDcyLCAKLSAgICA2OSwgNjUsIDY4LCA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIDY3LCA3MywgODIsIDY3LCA4NSwgNzMsIDg0LCA0NSwgCi0gICAgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDc5LCA4MCwgNjksIDIwNiwgNzksIDc5LCA5MCwgNjksIDEyOCwgNzksIDc5LCAKLSAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzksIDc5LCA4NSwgMTI4LCA3OSwgNzksIDc3LCA4NSwgMTI4LCA3OSwgNzksIAotICAgIDY5LCAxMjgsIDc5LCA3OSwgNjYsIDc5LCA3OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDc4LCA4NSwgMTI4LCA3OSwgCi0gICAgNzgsIDgzLCA4NSwgMTI4LCA3OSwgNzgsIDc4LCAxMjgsIDc5LCA3OCwgNzUsIDY1LCA4MiwgMTI4LCA3OSwgNzgsIDY5LCAKLSAgICA4MywgNjksIDc2LCA3MCwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgODcsIDY1LCAyMTcsIDc5LCA3OCwgNjksIDQ1LCA4NCwgNzIsIAotICAgIDczLCA4MiwgODQsIDg5LCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDc5LCA3OCwgNjcsIDc5LCA3NywgCi0gICAgNzMsIDc4LCAxOTksIDc5LCA3OCwgNjUsIDgwLCAxMjgsIDc5LCA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCAyMDYsIDc5LCAKLSAgICA3NywgNzMsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDc5LCA3NywgNzMsIDY3LCA4MiwgNzksIDIwNiwgNzksIDc3LCA2OSwgNzEsIAotICAgIDY1LCAxMjgsIDc5LCA3NywgNjksIDcxLCAxOTMsIDc5LCA3NywgNjUsIDc2LCA3OSwgNzgsIDEyOCwgNzksIDc2LCA3MywgCi0gICAgODYsIDY5LCAxMjgsIDc5LCA3NiwgNzMsIDcxLCA3OSwgMjA2LCA3OSwgNzYsIDY4LCAxMjgsIDc5LCA3NSwgODQsIDIwNywgCi0gICAgNzksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDc5LCA3NSwgNjUsIDgyLCAxOTMsIDc5LCA3NCwgNzMsIDY2LCA4NywgNjUsIAotICAgIDIxNywgNzksIDc0LCA2OSwgNzksIDc4LCAxMjgsIDc5LCA3MywgNzYsIDEyOCwgNzksIDcyLCA3NywgMTI4LCA3OSwgNzIsIAotICAgIDIwNSwgNzksIDcyLCAxMjgsIDc5LCA3MSwgODIsIDY5LCAxMjgsIDc5LCA3MSwgNzksIDc4LCA2OSwgNzUsIDEyOCwgNzksIAotICAgIDcxLCA3OSwgNzgsIDY5LCAyMDMsIDc5LCA3MSwgNzIsIDY1LCAyMDUsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDgyLCAKLSAgICAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDEyOCwgNzksIDcwLCA3MCwgNzMsIDY3LCAxOTcsIDc5LCA3MCwgNzAsIAotICAgIDEyOCwgNzksIDY5LCA3NSwgMTI4LCA3OSwgNjgsIDY5LCA3OCwgMTI4LCA3OSwgNjgsIDE5NiwgNzksIDY3LCA4NCwgNzksIAotICAgIDgwLCA4NSwgODMsIDEyOCwgNzksIDY3LCA4NCwgNzksIDY2LCA2OSwgODIsIDEyOCwgNzksIDY3LCAyMTAsIDc5LCA2NywgCi0gICAgNzYsIDc5LCA2NywgNzUsIDEyOCwgNzksIDY3LCA2NywgNzYsIDg1LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA3OSwgNjYsIDgzLCAKLSAgICA4NCwgODIsIDg1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDY2LCA3OSwgNzYsIDIxMSwgNzksIDY2LCA3OSwgCi0gICAgMjA0LCA3OSwgNjYsIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3OSwgNjYsIDc2LCA3MywgODEsIDg1LCAxOTcsIDc5LCAKLSAgICA2NiwgNzQsIDY5LCA2NywgMjEyLCA3OSwgNjYsIDY5LCA3NiwgODUsIDgzLCAxMjgsIDc5LCA2NiwgNjksIDc2LCA3OSwgODMsIAotICAgIDEyOCwgNzksIDY2LCAxMjgsIDc5LCA2NSwgODksIDEyOCwgNzksIDY1LCA3NSwgMTI4LCA3OSwgNjUsIDY2LCA3OSwgNjUsIAotICAgIDcwLCA3MywgNzYsIDczLCAxMjgsIDc5LCAxOTMsIDc5LCA0OCwgNTMsIDQ5LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCA2NiwgCi0gICAgMTI4LCA3OSwgNDgsIDUzLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MywgNDgsIDEyOCwgNzksIDQ4LCA1MiwgNTcsIDEyOCwgCi0gICAgNzksIDQ4LCA1MiwgNTYsIDEyOCwgNzksIDQ4LCA1MiwgNTUsIDEyOCwgNzksIDQ4LCA1MiwgNTQsIDEyOCwgNzksIDQ4LCAKLSAgICA1MiwgNTMsIDEyOCwgNzksIDQ4LCA1MiwgNTIsIDEyOCwgNzksIDQ4LCA1MiwgNTEsIDEyOCwgNzksIDQ4LCA1MiwgNTAsIAotICAgIDEyOCwgNzksIDQ4LCA1MiwgNDksIDEyOCwgNzksIDQ4LCA1MiwgNDgsIDEyOCwgNzksIDQ4LCA1MSwgNTcsIDEyOCwgNzksIAotICAgIDQ4LCA1MSwgNTYsIDEyOCwgNzksIDQ4LCA1MSwgNTUsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY4LCAxMjgsIDc5LCA0OCwgCi0gICAgNTEsIDU0LCA2NywgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjYsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDc5LCAKLSAgICA0OCwgNTEsIDU0LCAxMjgsIDc5LCA0OCwgNTEsIDUzLCAxMjgsIDc5LCA0OCwgNTEsIDUyLCAxMjgsIDc5LCA0OCwgNTEsIAotICAgIDUxLCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA1MSwgMTI4LCA3OSwgNDgsIDUxLCA1MCwgMTI4LCA3OSwgNDgsIDUxLCA0OSwgCi0gICAgMTI4LCA3OSwgNDgsIDUxLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNDgsIDEyOCwgNzksIDQ4LCA1MCwgNTcsIDY1LCAKLSAgICAxMjgsIDc5LCA0OCwgNTAsIDU3LCAxMjgsIDc5LCA0OCwgNTAsIDU2LCAxMjgsIDc5LCA0OCwgNTAsIDU1LCAxMjgsIDc5LCAKLSAgICA0OCwgNTAsIDU0LCAxMjgsIDc5LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1MywgMTI4LCA3OSwgNDgsIAotICAgIDUwLCA1MiwgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIDEyOCwgNzksIDQ4LCA1MCwgNTEsIDEyOCwgNzksIDQ4LCA1MCwgCi0gICAgNTAsIDEyOCwgNzksIDQ4LCA1MCwgNDksIDEyOCwgNzksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCAKLSAgICAxMjgsIDc5LCA0OCwgNDksIDU3LCA2NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NywgMTI4LCA3OSwgNDgsIDQ5LCA1NiwgMTI4LCAKLSAgICA3OSwgNDgsIDQ5LCA1NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NCwgMTI4LCA3OSwgNDgsIDQ5LCA1MywgMTI4LCA3OSwgNDgsIAotICAgIDQ5LCA1MiwgMTI4LCA3OSwgNDgsIDQ5LCA1MSwgMTI4LCA3OSwgNDgsIDQ5LCA1MCwgMTI4LCA3OSwgNDgsIDQ5LCA0OSwgCi0gICAgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjcsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY2LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCAKLSAgICA2NSwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NywgMTI4LCA3OSwgNDgsIDQ4LCA1NiwgMTI4LCAKLSAgICA3OSwgNDgsIDQ4LCA1NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNzAsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY5LCAxMjgsIAotICAgIDc5LCA0OCwgNDgsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjcsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY2LCAKLSAgICAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgMTI4LCA3OSwgNDgsIDQ4LCA1MywgNjUsIAotICAgIDEyOCwgNzksIDQ4LCA0OCwgNTMsIDEyOCwgNzksIDQ4LCA0OCwgNTIsIDEyOCwgNzksIDQ4LCA0OCwgNTEsIDEyOCwgNzksIAotICAgIDQ4LCA0OCwgNTAsIDEyOCwgNzksIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDQ5LCAxMjgsIDc5LCA0NSwgCi0gICAgODksIDY5LCAxMjgsIDc5LCA0NSwgNzksIDQ1LCA3MywgMTI4LCA3OSwgNDUsIDY5LCAxMjgsIDc4LCA5MCwgODksIDg4LCAKLSAgICAxMjgsIDc4LCA5MCwgODksIDg0LCAxMjgsIDc4LCA5MCwgODksIDgyLCA4OCwgMTI4LCA3OCwgOTAsIDg5LCA4MiwgMTI4LCAKLSAgICA3OCwgOTAsIDg5LCA4MCwgMTI4LCA3OCwgOTAsIDg5LCAxMjgsIDc4LCA5MCwgODUsIDg4LCAxMjgsIDc4LCA5MCwgODUsIAotICAgIDgyLCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA4MiwgMTI4LCA3OCwgOTAsIDg1LCA4MSwgMTI4LCA3OCwgOTAsIDg1LCA4MCwgCi0gICAgMTI4LCA3OCwgOTAsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDkwLCA4NSwgNzksIDEyOCwgNzgsIDkwLCA4NSwgMjA2LCA3OCwgCi0gICAgOTAsIDg1LCAxMjgsIDc4LCA5MCwgNzksIDg4LCAxMjgsIDc4LCA5MCwgNzksIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDg4LCAKLSAgICAxMjgsIDc4LCA5MCwgNzMsIDg0LCAxMjgsIDc4LCA5MCwgNzMsIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDY5LCA4OCwgMTI4LCAKLSAgICA3OCwgOTAsIDczLCA2OSwgODAsIDEyOCwgNzgsIDkwLCA3MywgNjksIDEyOCwgNzgsIDkwLCA3MywgMTI4LCA3OCwgOTAsIAotICAgIDY5LCA4OCwgMTI4LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDkwLCA2OSwgMTI4LCA3OCwgOTAsIDY1LCA4OCwgCi0gICAgMTI4LCA3OCwgOTAsIDY1LCA4NCwgMTI4LCA3OCwgOTAsIDY1LCA4MSwgMTI4LCA3OCwgOTAsIDY1LCA4MCwgMTI4LCA3OCwgCi0gICAgOTAsIDY1LCAxMjgsIDc4LCA5MCwgMTkzLCA3OCwgODksIDg3LCA2NSwgMTI4LCA3OCwgODksIDg1LCA4OCwgMTI4LCA3OCwgCisgICAgODUsIDEyOCwgODAsIDg1LCA4NCwgODIsIDY5LCA3MCwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODUsIDg0LCAKKyAgICAxMjgsIDgwLCA4NSwgMjEyLCA4MCwgODUsIDgzLCA3MiwgODAsIDczLCA3OCwgMTI4LCA4MCwgODUsIDgzLCA3MiwgODAsIAorICAgIDczLCA3NSwgNjUsIDEyOCwgODAsIDg1LCA4MywgNzIsIDczLCA3OCwgMTk5LCA4MCwgODUsIDgyLCA4OCwgMTI4LCA4MCwgCisgICAgODUsIDgyLCA4MywgNjksIDEyOCwgODAsIDg1LCA4MiwgODAsIDc2LCAxOTcsIDgwLCA4NSwgODIsIDc4LCA2NSwgNzcsIDY1LCAKKyAgICAxMjgsIDgwLCA4NSwgODIsIDczLCA4NCwgODksIDEyOCwgODAsIDg1LCA4MiwgNzMsIDcwLCA4OSwgMTI4LCA4MCwgODUsIAorICAgIDgyLCAxMjgsIDgwLCA4NSwgODEsIDEyOCwgODAsIDg1LCA4MCwgMTI4LCA4MCwgODUsIDc5LCA4OCwgMTI4LCA4MCwgODUsIAorICAgIDc5LCA4MCwgMTI4LCA4MCwgODUsIDc5LCAxMjgsIDgwLCA4NSwgNzgsIDcxLCA2NSwgNjUsIDc3LCAxMjgsIDgwLCA4NSwgCisgICAgNzgsIDcxLCAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODUsIDc4LCAKKyAgICA2NywgODQsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MCwgODUsIDc3LCA4MCwgMTI4LCA4MCwgODUsIDc3LCAxMjgsIAorICAgIDgwLCA4NSwgNjksIDEyOCwgODAsIDg1LCA2NiwgNzYsIDczLCAxOTUsIDgwLCA4NSwgNjUsIDgxLCAxMjgsIDgwLCA4NSwgCisgICAgNjUsIDY5LCAxMjgsIDgwLCA4NSwgNTAsIDEyOCwgODAsIDg1LCA0OSwgMTI4LCA4MCwgODUsIDEyOCwgODAsIDg0LCA3MiwgCisgICAgNjUsIDcyLCAxOTMsIDgwLCA4NCwgNjksIDEyOCwgODAsIDgzLCA3MywgNzYsIDIwMSwgODAsIDgzLCA3MywgNzAsIDczLCAKKyAgICA4MywgODQsIDc5LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgCisgICAgNzksIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCA3MCwgNzMsIAorICAgIDgzLCA4NCwgNzksIDIwNiwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA3NiwgODksIDcxLCA3MywgODMsIDc3LCAKKyAgICA2NSwgMTI4LCA4MCwgODMsIDczLCAxMjgsIDgwLCA4MywgMTI4LCA4MCwgODIsIDc5LCA4NiwgNjksIDEyOCwgODAsIDgyLCAKKyAgICA3OSwgODQsIDc5LCA4NiwgNjUsIDgyLCA4OSwgMjExLCA4MCwgODIsIDc5LCA4NCwgNzksIDIxMSwgODAsIDgyLCA3OSwgODQsIAorICAgIDY5LCA2NywgODQsIDY5LCAxOTYsIDgwLCA4MiwgNzksIDgzLCA3MSwgNjksIDcxLCA4MiwgNjUsIDc3LCA3NywgNjksIDc4LCAKKyAgICA3MywgMTI4LCA4MCwgODIsIDc5LCA4MCwgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODAsIDgyLCA3OSwgODAsIAorICAgIDc5LCA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDgyLCA3OSwgODAsIDY5LCA4MiwgODQsIDIxNywgODAsIDgyLCA3OSwgCisgICAgODAsIDY5LCA3NiwgNzYsIDY5LCAyMTAsIDgwLCA4MiwgNzksIDc5LCA3MCwgMTI4LCA4MCwgODIsIDc5LCA3NiwgNzksIDc4LCAKKyAgICA3MSwgNjksIDE5NiwgODAsIDgyLCA3OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTk3LCA4MCwgODIsIDc5LCA3NCwgNjksIAorICAgIDY3LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA4MCwgODIsIDc5LCA3NCwgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgCisgICAgODIsIDc5LCA3MSwgODIsIDY5LCA4MywgODMsIDEyOCwgODAsIDgyLCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgODIsIDc5LCAKKyAgICA3MCwgNzksIDg1LCA3OCwgNjgsIDEyOCwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgODQsIDEyOCwgODAsIDgyLCA3OSwgNjgsIAorICAgIDg1LCA2NywgMjEyLCA4MCwgODIsIDczLCA4NiwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgODIsIDczLCA4NiwgNjUsIDg0LCAKKyAgICAxOTcsIDgwLCA4MiwgNzMsIDg2LCA2NSwgNjcsIDIxNywgODAsIDgyLCA3MywgODMsIDcyLCA4NCwgNzIsIDY1LCA3NywgNjUsIAorICAgIDg0LCA4MiwgMTkzLCA4MCwgODIsIDczLCA3OCwgODQsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgMTI4LCA4MCwgCisgICAgODIsIDczLCA3OCwgMjEyLCA4MCwgODIsIDczLCA3OCwgNjcsIDY5LCA4MywgODMsIDEyOCwgODAsIDgyLCA3MywgNzcsIDY5LCAKKyAgICAxMjgsIDgwLCA4MiwgNzMsIDc3LCAxOTcsIDgwLCA4MiwgNjksIDg2LCA3MywgNzksIDg1LCAyMTEsIDgwLCA4MiwgNjksIAorICAgIDgzLCA2OSwgODQsIDEyOCwgODAsIDgyLCA2OSwgODMsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgCisgICAgNjksIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDczLCA3OSwgMjA2LCA4MCwgODIsIDY5LCA4MCwgNzksIDc4LCA2OCwgNjksIAorICAgIDgyLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MCwgODIsIDY5LCA3OCwgNzUsIDcyLCA2NSwgMTI4LCA4MCwgODIsIDY5LCA3MCwgCisgICAgNjUsIDY3LCAxOTcsIDgwLCA4MiwgNjksIDY3LCA3MywgODAsIDczLCA4NCwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgODIsIDY5LCAKKyAgICA2NywgNjksIDY4LCA3MywgNzgsIDE5OSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDgzLCAxMjgsIDgwLCA4MiwgNjksIAorICAgIDY3LCA2OSwgNjgsIDY5LCAyMTEsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAxOTYsIDgwLCA4MiwgNjksIDY3LCA2OSwgCisgICAgNjgsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDE5NywgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgNzMsIDczLCAKKyAgICAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgODAsIDczLCAyMDEsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNzcsIDg1LCA3OSwgODksIAorICAgIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA3NywgODUsIDc5LCAyMTcsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDg1LCA3OSwgCisgICAgNzgsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgODUsIDc5LCAyMDYsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCAKKyAgICA3MywgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA2OSwgMjAxLCA4MCwgODIsIDY1LCA3NywgMTI4LCA4MCwgODIsIAorICAgIDY1LCAyMDUsIDgwLCA4MiwgMTI4LCA4MCwgODAsIDg2LCAxMjgsIDgwLCA4MCwgNzcsIDEyOCwgODAsIDgwLCA2NSwgMTI4LCAKKyAgICA4MCwgNzksIDg5LCAxMjgsIDgwLCA3OSwgODgsIDEyOCwgODAsIDc5LCA4NywgNjksIDgyLCAyMTEsIDgwLCA3OSwgODcsIAorICAgIDY5LCA4MiwgMTI4LCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCAKKyAgICAxMjgsIDgwLCA3OSwgODUsIDc4LCAxOTYsIDgwLCA3OSwgODUsIDc2LCA4NCwgODIsIDIxNywgODAsIDc5LCA4NSwgNjcsIAorICAgIDcyLCAxMjgsIDgwLCA3OSwgODQsIDY1LCA4NCwgNzksIDEyOCwgODAsIDc5LCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA4MCwgCisgICAgNzksIDIxMiwgODAsIDc5LCA4MywgODQsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA3OSwgODMsIDg0LCAKKyAgICA2NiwgNzksIDg4LCAxMjgsIDgwLCA3OSwgODMsIDg0LCA2NSwgMjA0LCA4MCwgNzksIDgzLCA4NCwgMTI4LCA4MCwgNzksIAorICAgIDgzLCAyMTIsIDgwLCA3OSwgODMsIDgzLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDgwLCA3OSwgODIsIDgyLCA2OSwgCisgICAgNjcsIDg0LCA4NSwgODMsIDEyOCwgODAsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDg1LCAyMTEsIDgwLCA3OSwgODAsIDgwLCAKKyAgICA2OSwgODIsIDEyOCwgODAsIDc5LCA4MCwgMTI4LCA4MCwgNzksIDIwOCwgODAsIDc5LCA3OSwgNjgsIDc2LCA2OSwgMTI4LCAKKyAgICA4MCwgNzksIDc5LCAxMjgsIDgwLCA3OSwgNzgsIDY4LCA3OSwgMTI4LCA4MCwgNzksIDIwNiwgODAsIDc5LCA3NywgNzcsIAorICAgIDY5LCA2OSwgMTI4LCA4MCwgNzksIDc3LCA3NywgNjksIDE5NywgODAsIDc5LCA3NiwgNzMsIDgzLCA3MiwgMTI4LCA4MCwgCisgICAgNzksIDc2LCA3MywgNjcsIDE5NywgODAsIDc5LCA3NiwgMjAxLCA4MCwgNzksIDc2LCA2OSwgMTI4LCA4MCwgNzksIDc2LCAKKyAgICAxOTcsIDgwLCA3OSwgNzUsIDgyLCA4OSwgODQsIDczLCA2OSwgMTI4LCA4MCwgNzksIDc1LCA3OSwgNzQsIDczLCAxMjgsIAorICAgIDgwLCA3OSwgNzMsIDc4LCA4NCwgMjExLCA4MCwgNzksIDczLCA3OCwgODQsIDc5LCAxMjgsIDgwLCA3OSwgNzMsIDc4LCA4NCwgCisgICAgNjksIDgyLCAxMjgsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgODAsIDc5LCA3MywgNzgsIDg0LCAxMjgsIDgwLCAKKyAgICA3OSwgNzMsIDc4LCAyMTIsIDgwLCA3OSwgNjksIDg0LCA4MiwgMjE3LCA4MCwgNzksIDY5LCA4NCwgNzMsIDE5NSwgODAsIAorICAgIDc5LCA2OCwgNjUsIDg0LCA4NSwgODMsIDEyOCwgODAsIDc5LCA2NSwgMTI4LCA4MCwgNzksIDEyOCwgODAsIDIwNywgODAsIAorICAgIDc4LCA2OSwgODUsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgwLCA3NiwgODUsIDg0LCA3OSwgMTI4LCA4MCwgNzYsIDg1LCA4MywgCisgICAgNDUsIDc3LCA3MywgNzgsIDg1LCAyMTEsIDgwLCA3NiwgODUsIDgzLCAxMjgsIDgwLCA3NiwgODUsIDgyLCA2NSwgNzYsIAorICAgIDEyOCwgODAsIDc2LCA4NSwgNzcsIDY5LCAxOTYsIDgwLCA3NiwgODUsIDc3LCAxMjgsIDgwLCA3NiwgODUsIDc1LCAxMjgsIAorICAgIDgwLCA3NiwgODUsIDcxLCAxMjgsIDgwLCA3NiwgODUsIDEyOCwgODAsIDc2LCA3OSwgODcsIDEyOCwgODAsIDc2LCA3OSwgCisgICAgODAsIDcyLCA4NSwgMTI4LCA4MCwgNzYsIDY5LCA4NCwgNzIsIDgyLCA3OSwgNzgsIDEyOCwgODAsIDc2LCA2OCwgMTI4LCAKKyAgICA4MCwgNzYsIDY1LCA4OSwgNzMsIDc4LCAxOTksIDgwLCA3NiwgNjUsIDgzLCA4NCwgNzMsIDY3LCA4MywgMTI4LCA4MCwgNzYsIAorICAgIDY1LCA3OCwgNjksIDEyOCwgODAsIDc2LCA2NSwgNzgsIDE5NywgODAsIDc2LCA2NSwgNzgsIDY3LCAyMDMsIDgwLCA3NiwgCisgICAgNjUsIDc1LCAxMjgsIDgwLCA3NiwgNjUsIDcxLCA3MywgNzksIDIxMSwgODAsIDc2LCA2NSwgNjcsIDY5LCA3MiwgNzksIDc2LCAKKyAgICA2OCwgNjksIDIxMCwgODAsIDc2LCA2NSwgNjcsIDE5NywgODAsIDc2LCA2NSwgMTI4LCA4MCwgNzMsIDkwLCA5MCwgNzMsIAorICAgIDY3LCA2NSwgODQsIDc5LCAxMjgsIDgwLCA3MywgOTAsIDkwLCA2NSwgMTI4LCA4MCwgNzMsIDg4LCAxMjgsIDgwLCA3MywgCisgICAgODcsIDgyLCAxMjgsIDgwLCA3MywgODQsIDY3LCA3MiwgNzAsIDc5LCA4MiwgNzUsIDEyOCwgODAsIDczLCA4NCwgNjcsIDcyLCAKKyAgICA3MCwgNzksIDgyLCAyMDMsIDgwLCA3MywgODQsIDEyOCwgODAsIDczLCA4MywgODQsIDc5LCA3NiwgMTI4LCA4MCwgNzMsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA3MiwgMTI4LCA4MCwgNzMsIDgzLCA2NywgNjksIDgzLCAxMjgsIDgwLCA3MywgODIsIDczLCA3MSwgCisgICAgMTI4LCA4MCwgNzMsIDgyLCA3MywgMTk5LCA4MCwgNzMsIDgyLCA3MywgNjksIDY5LCA3OCwgMTI4LCA4MCwgNzMsIDgwLCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDgwLCA3MywgODAsIDY1LCA2OSwgNzcsIDcxLCA2NiwgNzMsIDY5LCA2OSwgMTI4LCA4MCwgNzMsIAorICAgIDgwLCA2NSwgNjksIDc3LCA2NiwgNjUsIDEyOCwgODAsIDczLCA4MCwgMTI4LCA4MCwgNzMsIDc4LCA4NywgNzIsIDY5LCA2OSwgCisgICAgMjA0LCA4MCwgNzMsIDc4LCA2OSwgNjUsIDgwLCA4MCwgNzYsIDY5LCAxMjgsIDgwLCA3MywgNzgsIDE5NywgODAsIDczLCAKKyAgICA3OCwgNjUsIDgyLCA2NiwgNzksIDgyLCA2NSwgODMsIDEyOCwgODAsIDczLCA3NiwgNzYsIDEyOCwgODAsIDczLCA3NiwgCisgICAgMTk3LCA4MCwgNzMsIDc2LCA2NywgODIsIDc5LCAyMTUsIDgwLCA3MywgNzUsIDg1LCA4MiwgODUsIDEyOCwgODAsIDczLCAKKyAgICA3NSwgNzksIDEyOCwgODAsIDczLCA3MSwgMTI4LCA4MCwgNzMsIDE5OSwgODAsIDczLCA2OSwgODgsIDEyOCwgODAsIDczLCAKKyAgICA2OSwgODUsIDgwLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgCisgICAgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIAorICAgIDc5LCA4MywgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCAKKyAgICA3OSwgODMsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIAorICAgIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCAKKyAgICA3OSwgODMsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODIsIDczLCA2OSwgCisgICAgODUsIDc2LCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODIsIAorICAgIDczLCA2OSwgODUsIDc2LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzUsIAorICAgIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAKKyAgICAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDgwLCA3MywgNjksIAorICAgIDg1LCAyMDgsIDgwLCA3MywgNjksIDg0LCAxMjgsIDgwLCA3MywgNjksIDgwLCAxMjgsIDgwLCA3MywgNjksIDY5LCA4NCwgCisgICAgMTI4LCA4MCwgNzMsIDY5LCA2OSwgODEsIDEyOCwgODAsIDczLCA2OSwgNjcsIDY5LCAxMjgsIDgwLCA3MywgNjksIDEyOCwgCisgICAgODAsIDczLCA2NywgNzUsIDY5LCA4NCwgMTI4LCA4MCwgNzMsIDY3LCA3NSwgMTI4LCA4MCwgNzMsIDY1LCA4MywgODUsIDg0LCAKKyAgICA3OSwgODIsIDg1LCAxMjgsIDgwLCA3MywgNjUsIDgzLCA3NywgMTkzLCA4MCwgNzMsIDY1LCA3OCwgNzksIDEyOCwgODAsIAorICAgIDIwMSwgODAsIDcyLCA4NywgNjUsIDEyOCwgODAsIDcyLCA4NSwgODQsIDcyLCA2NSwgNzksIDEyOCwgODAsIDcyLCA4NSwgCisgICAgMjEwLCA4MCwgNzIsIDg1LCA3OCwgNzEsIDEyOCwgODAsIDcyLCA4MiwgNjUsIDgzLCA2OSwgMTI4LCA4MCwgNzIsIDc5LCAKKyAgICA3OCwgNjksIDgzLCAxMjgsIDgwLCA3MiwgNzksIDY5LCA3OCwgNzMsIDY3LCA3MywgNjUsIDIwNiwgODAsIDcyLCA3OSwgNjUsIAorICAgIDEyOCwgODAsIDcyLCA3OSwgMTI4LCA4MCwgNzIsIDIwNywgODAsIDcyLCA3OCwgNjUsIDY5LCAyMDMsIDgwLCA3MiwgNzMsIAorICAgIDc4LCA4NCwgNzIsIDg1LCAxMjgsIDgwLCA3MiwgNzMsIDc2LCA3OSwgODMsIDc5LCA4MCwgNzIsIDY5LCA4MiwgMjExLCA4MCwgCisgICAgNzIsIDczLCA3NiwgNzMsIDgwLCA4MCwgNzMsIDc4LCAxOTcsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgODQsIAorICAgIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA4MywgNzMsIDc5LCAKKyAgICA4MywgMTI4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNzIsIAorICAgIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCAKKyAgICAyMDAsIDgwLCA3MiwgNzMsIDEyOCwgODAsIDcyLCAyMDEsIDgwLCA3MiwgNjksIDY5LCAxMjgsIDgwLCA3MiwgNjksIDEyOCwgCisgICAgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk4LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTQsIDgwLCA3MiwgNjUsIDgyLCAKKyAgICA4OSwgNzgsIDcxLCA2OSwgNjUsIDIwNCwgODAsIDcyLCA2NSwgODIsIDEyOCwgODAsIDcyLCA2NSwgNzgsIDEyOCwgODAsIAorICAgIDcyLCA2NSwgNzcsIDEyOCwgODAsIDcyLCA2NSwgNzMsIDgzLCA4NCwgNzksIDIxMSwgODAsIDcyLCA2NSwgNzEsIDgzLCA0NSwgCisgICAgODAsIDE5MywgODAsIDcyLCA2NSwgNjUsIDgyLCA3NSwgNjUsIDY1LCAxMjgsIDgwLCA3MiwgNjUsIDY1LCAxMjgsIDgwLCAKKyAgICA3MiwgNjUsIDEyOCwgODAsIDcxLCAxMjgsIDgwLCA3MCwgMTI4LCA4MCwgNjksIDg1LCA4OCwgMTI4LCA4MCwgNjksIDg1LCAKKyAgICA4NCwgNjUsIDY5LCAxMjgsIDgwLCA2OSwgODUsIDg0LCAxMjgsIDgwLCA2OSwgODQsIDY1LCA4MywgODQsIDc5LCA3NSwgNzksIAorICAgIDg1LCA3MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODAsIDY5LCA4NCwgNjUsIDgzLCA4NCwgNzMsIDEyOCwgODAsIDY5LCA4NCwgCisgICAgNjUsIDgzLCA3NywgNjUsIDEyOCwgODAsIDY5LCA4NCwgNjUsIDc2LCA3NiwgNjksIDE5NiwgODAsIDY5LCA4MywgNzksIAorICAgIDEyOCwgODAsIDY5LCA4MywgMjA3LCA4MCwgNjksIDgzLCA3MiwgNTAsIDEyOCwgODAsIDY5LCA4MywgNjksIDg0LCAxOTMsIAorICAgIDgwLCA2OSwgMjExLCA4MCwgNjksIDgyLCA4NCwgNzIsIDIwNywgODAsIDY5LCA4MiwgODMsIDgwLCA2OSwgNjcsIDg0LCA3MywgCisgICAgODYsIDY5LCAxMjgsIDgwLCA2OSwgODIsIDgzLCA3OSwgNzgsIDY1LCAyMDQsIDgwLCA2OSwgODIsIDgzLCA3OSwgNzgsIAorICAgIDEyOCwgODAsIDY5LCA4MiwgODMsIDc5LCAyMDYsIDgwLCA2OSwgODIsIDgzLCA3MywgNjUsIDIwNiwgODAsIDY5LCA4MiwgCisgICAgODMsIDY5LCA4NiwgNjksIDgyLCA3MywgNzgsIDE5OSwgODAsIDY5LCA4MiwgODAsIDY5LCA3OCwgNjgsIDczLCA2NywgODUsIAorICAgIDc2LCA2NSwgODIsIDEyOCwgODAsIDY5LCA4MiwgODAsIDY5LCA3OCwgNjgsIDczLCA2NywgODUsIDc2LCA2NSwgMjEwLCA4MCwgCisgICAgNjksIDgyLCA3NywgNzMsIDg0LCA4NCwgNjksIDE5NiwgODAsIDY5LCA4MiwgNzcsIDY1LCA3OCwgNjksIDc4LCAyMTIsIDgwLCAKKyAgICA2OSwgODIsIDczLCA4MywgODAsIDc5LCA3NywgNjksIDc4LCA3MywgMTI4LCA4MCwgNjksIDgyLCA3MywgODMsIDgwLCA3OSwgCisgICAgNzcsIDY5LCA3OCwgMjAxLCA4MCwgNjksIDgyLCA3MCwgNzksIDgyLCA3NywgNzMsIDc4LCAxOTksIDgwLCA2OSwgODIsIDcwLCAKKyAgICA2OSwgNjcsIDg0LCA4NSwgMjA1LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgNjUsIDEyOCwgODAsIDY5LCA4MiwgNzAsIAorICAgIDY5LCA2NywgODQsIDE5MywgODAsIDY5LCA4MiwgNjcsIDg1LCA4MywgODMsIDczLCA4NiwgNjksIDEyOCwgODAsIDY5LCA4MiwgCisgICAgNjcsIDY5LCA3OCwgMjEyLCA4MCwgNjksIDgwLCA2OSwgODQsIDEyOCwgODAsIDY5LCA4MCwgNjksIDIxMiwgODAsIDY5LCAKKyAgICA3OSwgODIsIDg0LCAyMDAsIDgwLCA2OSwgNzksIDgwLCA3NiwgNjksIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA4MywgNjksIAorICAgIDc3LCA2OSwgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDcxLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgCisgICAgNzEsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc4LCA4MywgODUsIDEyOCwgODAsIDY5LCA3OCwgODMsIDczLCA4NiwgMTk3LCAKKyAgICA4MCwgNjksIDc4LCA3OCwgMjE3LCA4MCwgNjksIDc4LCA3MywgNzIsIDczLCAxMjgsIDgwLCA2OSwgNzgsIDcxLCA4NSwgNzMsIAorICAgIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDcxLCA3NSwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNzgsIDY5LCA4NCwgODIsIDY1LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc4LCA2NywgNzMsIDc2LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgODQsIDc5LCAKKyAgICA3OCwgMTI4LCA4MCwgNjksIDc2LCA2NSwgODMsIDg0LCA3OSwgMjA2LCA4MCwgNjksIDczLCA4NCwgNzIsIDEyOCwgODAsIAorICAgIDY5LCA3MiwgNjksIDcyLCAxMjgsIDgwLCA2OSwgNzIsIDY5LCAyMDAsIDgwLCA2OSwgNzIsIDEyOCwgODAsIDY5LCAyMDAsIAorICAgIDgwLCA2OSwgNjksIDkwLCA3MywgMTI4LCA4MCwgNjksIDY5LCA4MywgNzIsIDczLCAxMjgsIDgwLCA2OSwgNjksIDgwLCAKKyAgICAxMjgsIDgwLCA2OSwgNjksIDc3LCAxMjgsIDgwLCA2OSwgNjksIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgODIsIAorICAgIDczLCA2NSwgNzgsIDgzLCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDgyLCA3MywgNjUsIDc4LCAxMjgsIDgwLCA2OSwgCisgICAgNjgsIDY5LCA4MywgODQsIDY1LCA3NiwgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA2NSwgMjA0LCA4MCwgNjksIDY4LCAKKyAgICA2NSwgMjA0LCA4MCwgNjksIDY1LCA2NywgNzIsIDEyOCwgODAsIDY5LCA2NSwgNjcsIDY5LCAxMjgsIDgwLCA2OSwgNjUsIAorICAgIDY3LCAxOTcsIDgwLCA2OCwgNzAsIDEyOCwgODAsIDY4LCAxMjgsIDgwLCA2NywgMTI4LCA4MCwgNjUsIDkwLCA2OSwgODIsIAorICAgIDEyOCwgODAsIDY1LCA4OSwgNjksIDgyLCA3OSwgNzUsIDEyOCwgODAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgCisgICAgODAsIDY1LCA4OSwgMTI4LCA4MCwgNjUsIDg4LCAxMjgsIDgwLCA2NSwgODcsIDc4LCAxMjgsIDgwLCA2NSwgMjE1LCA4MCwgCisgICAgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODAsIDY1LCA4NSwgMTI4LCA4MCwgNjUsIDg0LCA4NCwgNjksIDgyLCAKKyAgICA3OCwgMTI4LCA4MCwgNjUsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDg0LCAyMDAsIAorICAgIDgwLCA2NSwgODQsIDY1LCA3NSwgMTI4LCA4MCwgNjUsIDg0LCA2NSwgNzIsIDEyOCwgODAsIDY1LCA4NCwgMTI4LCA4MCwgCisgICAgNjUsIDgzLCA4NSwgODEsIDEyOCwgODAsIDY1LCA4MywgODMsIDgwLCA3OSwgODIsIDIxMiwgODAsIDY1LCA4MywgODMsIDczLCAKKyAgICA4NiwgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDg1LCA4MCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA4MCwgCisgICAgNjUsIDgzLCA4MywgNzMsIDg2LCA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgNjgsIDc5LCA4NywgNzgsIDQ1LCA3OSwgCisgICAgODUsIDg0LCA4MCwgODUsIDIxMiwgODAsIDY1LCA4MywgNzIsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDgzLCA3MiwgNjUsIDY5LCAKKyAgICAxMjgsIDgwLCA2NSwgODMsIDY5LCA4MSwgMTI4LCA4MCwgNjUsIDgzLCA2NSwgNzgsIDcxLCA2NSwgMjA2LCA4MCwgNjUsIAorICAgIDgyLCA4NSwgNzcsIDEyOCwgODAsIDY1LCA4MiwgODQsIDIxNywgODAsIDY1LCA4MiwgODQsIDc4LCA2OSwgODIsIDgzLCA3MiwgCisgICAgNzMsIDIwOCwgODAsIDY1LCA4MiwgODQsIDczLCA2NSwgNzYsIDc2LCA4OSwgNDUsIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIAorICAgIDY5LCAxOTYsIDgwLCA2NSwgODIsIDg0LCA3MywgNjUsIDIwNCwgODAsIDY1LCA4MiwgODQsIDcyLCA3MywgNjUsIDIwNiwgCisgICAgODAsIDY1LCA4MiwgMjEyLCA4MCwgNjUsIDgyLCA3MywgNjcsIDcyLCA3OSwgNzgsIDEyOCwgODAsIDY1LCA4MiwgNjksIDgzLCAKKyAgICA4NCwgNzMsIDcxLCA3NywgNjksIDc4LCA3OSwgMjA2LCA4MCwgNjUsIDgyLCA2OSwgODIsIDY5LCA3OCwgMTI4LCA4MCwgNjUsIAorICAgIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgODMsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCAKKyAgICA4MywgNzMsIDIxMSwgODAsIDY1LCA4MiwgNjUsIDgwLCA3MiwgODIsIDY1LCA4MywgMTk3LCA4MCwgNjUsIDgyLCA2NSwgNzYsIAorICAgIDc2LCA2OSwgNzYsIDc5LCA3MSwgODIsIDY1LCA3NywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDEyOCwgCisgICAgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDIwNCwgODAsIDY1LCA4MiwgNjUsIDc1LCA3NiwgNzMsIDg0LCA3MywgNzUsIAorICAgIDczLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NSwgNzYsIDczLCA4NCwgNzMsIDc1LCAyMDEsIDgwLCA2NSwgODIsIDY1LCA3NSwgCisgICAgNjUsIDc2LCA2OSwgODMsIDc3LCAxOTMsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgNzIsIDc5LCA4MywgMTI4LCAKKyAgICA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDcyLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgCisgICAgMjAwLCA4MCwgNjUsIDgyLCA2NSwgMTI4LCA4MCwgNjUsIDgyLCAxMjgsIDgwLCA2NSwgODAsIDg5LCA4MiwgODUsIDgzLCAKKyAgICAxMjgsIDgwLCA2NSwgODAsIDY5LCA4MiwgNjcsIDc2LCA3MywgODAsIDEyOCwgODAsIDY1LCA4MCwgNjksIDIxMCwgODAsIAorICAgIDY1LCA4MCwgMTI4LCA4MCwgNjUsIDIwOCwgODAsIDY1LCAyMDcsIDgwLCA2NSwgNzgsIDg5LCA4NSwgNzUsIDg1LCAxMjgsIAorICAgIDgwLCA2NSwgNzgsIDg5LCA3MywgNzUsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2OSwgNjcsIDY5LCA3NSwgMTI4LCA4MCwgCisgICAgNjUsIDc4LCA4OSwgNjUsIDc4LCA3MSwgNzEsIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzUsIDgyLCA2NSwgMTI4LCAKKyAgICA4MCwgNjUsIDc4LCA4NCwgNzMsIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgCisgICAgODAsIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIAorICAgIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA3OSwgNzgsIDcxLCA3OSwgNzgsIDY1LCA3OCwgMTI4LCA4MCwgCisgICAgNjUsIDc4LCA3OSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDg3LCA3MywgODMsIDY1LCA2OCwgMTI4LCAKKyAgICA4MCwgNjUsIDc4LCA3MSwgODIsIDY1LCA3OCwgNzEsIDc1LCA2OSwgODAsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc5LCA3NiwgCisgICAgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzYsIDY1LCAKKyAgICA4OSwgNjUsIDgyLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NSwgNzksIDc4LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NSwgNjUsIAorICAgIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3MiwgODUsIDc2LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgMTI4LCA4MCwgCisgICAgNjUsIDc4LCA2OSwgODUsIDc2LCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA2OCwgMTkzLCA4MCwgNjUsIDc4LCAKKyAgICA2NSwgNjksIDc2LCA2NSwgNjksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCAxMjgsIDgwLCA2NSwgNzcsIDg1LCA3OCwgNzEsIAorICAgIDc1LCA2NSwgNzIsIDEyOCwgODAsIDY1LCA3NywgODUsIDY4LCA4MCwgNzksIDY4LCAxMjgsIDgwLCA2NSwgNzcsIDgzLCA3MiwgCisgICAgNjUsIDY5LCAxMjgsIDgwLCA2NSwgNzcsIDgwLCA3MiwgODksIDc2LCA3MywgNjUsIDIwNiwgODAsIDY1LCA3NywgNzMsIDc4LCAKKyAgICA3MSwgNzUsIDY1LCA3NiwgMTI4LCA4MCwgNjUsIDc3LCA2OSwgODAsIDY5LCA4NCwgMTI4LCA4MCwgNjUsIDc3LCA2OSwgNzgsIAorICAgIDY5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3NywgNjUsIDY4LCA2NSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgNjUsIDY5LCA3MiwgCisgICAgMTI4LCA4MCwgNjUsIDc2LCA4NSwgODQsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc5LCA2NywgNzIsIDc1LCA2NSwgMTI4LCAKKyAgICA4MCwgNjUsIDc2LCAyMDUsIDgwLCA2NSwgNzYsIDc2LCA2NSwgODcsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc2LCA2NSwgODMsIAorICAgIDEyOCwgODAsIDY1LCA3NiwgNjksIDg0LCA4NCwgNjksIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg1LCA3OCwgMTk5LCA4MCwgCisgICAgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIDkwLCA2OSwgMTk2LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIAorICAgIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgMjA0LCA4MCwgNjUsIDc1LCA4MCwgCisgICAgNjUsIDIwMywgODAsIDY1LCA3MywgODksIDY1LCA3OCwgNzgsIDc5LCA3MywgMTI4LCA4MCwgNjUsIDczLCA4MiwgODQsIDcyLCAKKyAgICA4MiwgNjUsIDEyOCwgODAsIDY1LCA3MywgODIsIDY5LCAxOTYsIDgwLCA2NSwgNzMsIDEyOCwgODAsIDY1LCA3MiwgNzYsIAorICAgIDY1LCA4NiwgMjAxLCA4MCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgNzEsIDY5LCA4MiwgMTI4LCA4MCwgNjUsIDcxLCAxOTcsIAorICAgIDgwLCA2NSwgNjgsIDc3LCAxOTMsIDgwLCA2NSwgNjgsIDY4LCA3MywgNzgsIDE5OSwgODAsIDY1LCA2OCwgMTkzLCA4MCwgCisgICAgNjUsIDY4LCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA2NSwgNzEsIDY5LCAKKyAgICAxMjgsIDgwLCA2NSwgNjUsIDg0LCA4NSwgMTI4LCA4MCwgNjUsIDY1LCA4MywgNjksIDc4LCA4NCwgNzksIDEyOCwgODAsIAorICAgIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDY1LCA3NywgMTI4LCA4MCwgNjUsIDY1LCA3MywgMTI4LCA4MCwgCisgICAgNjUsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDgwLCA2NSwgNjUsIDEyOCwgODAsIDUwLCAxMjgsIDgwLCAKKyAgICA0OCwgNDksIDQ5LCAxMjgsIDgwLCA0OCwgNDksIDQ4LCAxMjgsIDgwLCA0OCwgNDgsIDU3LCAxMjgsIDgwLCA0OCwgNDgsIAorICAgIDU2LCAxMjgsIDgwLCA0OCwgNDgsIDU1LCAxMjgsIDgwLCA0OCwgNDgsIDU0LCAxMjgsIDgwLCA0OCwgNDgsIDUzLCAxMjgsIAorICAgIDgwLCA0OCwgNDgsIDUyLCAxMjgsIDgwLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MCwgNDgsIDQ4LCA1MSwgMTI4LCA4MCwgCisgICAgNDgsIDQ4LCA1MCwgMTI4LCA4MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgODAsIDQ4LCA0OCwgNDksIDEyOCwgNzksIDg5LCAKKyAgICA4MiwgNjUsIDc4LCA3MywgODMsIDc3LCAxOTMsIDc5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzksIDg4LCA3MywgNjUsIAorICAgIDEyOCwgNzksIDg4LCA3MywgMTkzLCA3OSwgODgsIDY5LCA3MywgNjUsIDIwMSwgNzksIDg4LCA2OSwgNzMsIDE5MywgNzksIAorICAgIDg2LCA2OSwgODIsIDgyLCA3MywgNjgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNzksIDc4LCAxOTksIDc5LCA4NiwgCisgICAgNjksIDgyLCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4OSwgMTI4LCA3OSwgODYsIDY5LCAKKyAgICA4MiwgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA3MywgNjgsIDEyOCwgNzksIAorICAgIDg2LCA2OSwgODIsIDY2LCA2NSwgODIsIDEyOCwgNzksIDg2LCA2NSwgMjA0LCA3OSwgODYsIDEyOCwgNzksIDg1LCA4NCwgCisgICAgNzYsIDczLCA3OCwgNjksIDE5NiwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgNjksIDEyOCwgNzksIDg1LCA4NCwgNjksIAorICAgIDIxMCwgNzksIDg1LCA4NCwgNjYsIDc5LCAyMTYsIDc5LCA4NSwgNzgsIDc1LCA3MywgMTkzLCA3OSwgODUsIDc4LCA2NywgCisgICAgNjksIDEyOCwgNzksIDg1LCA3OCwgNjcsIDE5NywgNzksIDg0LCA4NSwgMTI4LCA3OSwgODQsIDg0LCA2NSwgODYsIDE5MywgCisgICAgNzksIDg0LCA4NCwgMTI4LCA3OSwgODQsIDcyLCA2NSwgNzYsIDY1LCAyMDYsIDc5LCA4NCwgNzIsIDY1LCA3NiwgMTI4LCAKKyAgICA3OSwgODMsIDc3LCA2NSwgNzgsIDg5LCAxOTMsIDc5LCA4MywgNjcsIDEyOCwgNzksIDgyLCA4NCwgNzIsIDc5LCA3MSwgNzksIAorICAgIDc4LCA2NSwgMjA0LCA3OSwgODIsIDg0LCA3MiwgNzksIDY4LCA3OSwgMjE2LCA3OSwgODIsIDc4LCA2NSwgODQsIDE5NywgCisgICAgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDc5LCA4MiwgNzgsIDY1LCA3NywgNjksIDc4LCAyMTIsIDc5LCAKKyAgICA4MiwgNzUsIDcyLCA3OSwgMjA2LCA3OSwgODIsIDczLCA3MSwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIDczLCA3MSwgNzMsIAorICAgIDc4LCAxMjgsIDc5LCA4MiwgNjksIDQ1LCA1MCwgMTI4LCA3OSwgODIsIDY4LCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgCisgICAgNjgsIDY5LCAyMTAsIDc5LCA4MiwgNjcsIDcyLCA3MywgNjgsIDEyOCwgNzksIDgyLCA2NSwgNzgsIDcxLCAxOTcsIDc5LCAKKyAgICA4MCwgODQsIDczLCA3OSwgMjA2LCA3OSwgODAsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDc5LCA4MCwgODAsIDgyLCA2OSwgODMsIAorICAgIDgzLCA3MywgNzksIDc4LCAxMjgsIDc5LCA4MCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc5LCA4MCwgCisgICAgODAsIDc5LCA4MywgNzMsIDc4LCAxOTksIDc5LCA4MCwgODAsIDc5LCA4MywgNjksIDEyOCwgNzksIDgwLCA3MiwgNzMsIDg1LCAKKyAgICA2NywgNzIsIDg1LCA4MywgMTI4LCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgNzksIDgwLCA2OSwgODIsIAorICAgIDY1LCA4NCwgNzksIDIxMCwgNzksIDgwLCA2OSwgODIsIDY1LCA4NCwgNzMsIDc4LCAxOTksIDc5LCA4MCwgNjksIDc4LCA3MywgCisgICAgNzgsIDE5OSwgNzksIDgwLCA2OSwgNzgsIDQ1LCA4MCwgMTI4LCA3OSwgODAsIDY5LCA3OCwgNDUsIDc5LCA4NSwgODQsIDc2LCAKKyAgICA3MywgNzgsIDY5LCAxOTYsIDc5LCA4MCwgNjksIDc4LCA0NSwgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDc5LCA4MCwgNjksIAorICAgIDc4LCA0NSwgNjcsIDczLCA4MiwgNjcsIDg1LCA3MywgODQsIDQ1LCA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgNzksIDc5LCAKKyAgICA5MCwgNjksIDEyOCwgNzksIDc5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzksIDc5LCA4NSwgMTI4LCA3OSwgNzksIAorICAgIDc3LCA4NSwgMTI4LCA3OSwgNzksIDY5LCAxMjgsIDc5LCA3OSwgNjYsIDc5LCA3OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgCisgICAgNzksIDc4LCA4NSwgMTI4LCA3OSwgNzgsIDgzLCA4NSwgMTI4LCA3OSwgNzgsIDc4LCAxMjgsIDc5LCA3OCwgNzUsIDY1LCAKKyAgICA4MiwgMTI4LCA3OSwgNzgsIDY5LCA4MywgNjksIDc2LCA3MCwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgODcsIDY1LCAyMTcsIAorICAgIDc5LCA3OCwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA3NiwgNzMsIDc4LCAKKyAgICAxOTcsIDc5LCA3OCwgNjcsIDc5LCA3NywgNzMsIDc4LCAxOTksIDc5LCA3OCwgNjUsIDgwLCAxMjgsIDc5LCA3NywgNzMsIAorICAgIDgzLCA4MywgNzMsIDc5LCAyMDYsIDc5LCA3NywgNzMsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDc5LCA3NywgNzMsIDY3LCA4MiwgCisgICAgNzksIDIwNiwgNzksIDc3LCA2OSwgNzEsIDY1LCAxMjgsIDc5LCA3NywgNjksIDcxLCAxOTMsIDc5LCA3NywgNjUsIDc2LCAKKyAgICA3OSwgNzgsIDEyOCwgNzksIDc2LCA3MywgODYsIDY5LCAxMjgsIDc5LCA3NiwgNzMsIDcxLCA3OSwgMjA2LCA3OSwgNzYsIAorICAgIDY4LCAxMjgsIDc5LCA3NSwgODQsIDIwNywgNzksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDc5LCA3NSwgNjUsIDgyLCAxOTMsIAorICAgIDc5LCA3NCwgNzMsIDY2LCA4NywgNjUsIDIxNywgNzksIDc0LCA2OSwgNzksIDc4LCAxMjgsIDc5LCA3MywgNzYsIDEyOCwgCisgICAgNzksIDcyLCA3NywgMTI4LCA3OSwgNzIsIDIwNSwgNzksIDcxLCA4MiwgNjksIDEyOCwgNzksIDcxLCA3OSwgNzgsIDY5LCAKKyAgICA3NSwgMTI4LCA3OSwgNzEsIDc5LCA3OCwgNjksIDIwMywgNzksIDcxLCA3MiwgNjUsIDIwNSwgNzksIDcwLCA3MCwgNzMsIAorICAgIDY3LCA2OSwgODIsIDEyOCwgNzksIDcwLCA3MCwgNzMsIDY3LCA2OSwgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDE5NywgCisgICAgNzksIDcwLCA3MCwgMTI4LCA3OSwgNjksIDg5LCAxMjgsIDc5LCA2OSwgNzUsIDEyOCwgNzksIDY4LCA2OSwgNzgsIDEyOCwgCisgICAgNzksIDY4LCAxOTYsIDc5LCA2NywgODQsIDc5LCA4MCwgODUsIDgzLCAxMjgsIDc5LCA2NywgODQsIDc5LCA2NiwgNjksIDgyLCAKKyAgICAxMjgsIDc5LCA2NywgODQsIDY5LCAyMTIsIDc5LCA2NywgMjEwLCA3OSwgNjcsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIDc5LCAKKyAgICA2NywgNjcsIDc2LCA4NSwgODMsIDczLCA3OSwgNzgsIDEyOCwgNzksIDY2LCA4MywgODQsIDgyLCA4NSwgNjcsIDg0LCA3MywgCisgICAgNzksIDc4LCAxMjgsIDc5LCA2NiwgNzksIDc2LCAyMTEsIDc5LCA2NiwgNzksIDIwNCwgNzksIDY2LCA3OSwgNzAsIDczLCAKKyAgICA3NiwgNzMsIDEyOCwgNzksIDY2LCA3NiwgNzMsIDgxLCA4NSwgMTk3LCA3OSwgNjYsIDc0LCA2OSwgNjcsIDIxMiwgNzksIAorICAgIDY2LCA2OSwgNzYsIDg1LCA4MywgMTI4LCA3OSwgNjYsIDY5LCA3NiwgNzksIDgzLCAxMjgsIDc5LCA2NiwgMTI4LCA3OSwgCisgICAgNjUsIDg5LCAxMjgsIDc5LCA2NSwgNzUsIDEyOCwgNzksIDY1LCA2NiwgNzksIDY1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCAKKyAgICA3OSwgMTkzLCA3OSwgNDgsIDUzLCA0OSwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNzksIDQ4LCA1MywgNDgsIAorICAgIDY1LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCAxMjgsIDc5LCA0OCwgNTIsIDU3LCAxMjgsIDc5LCA0OCwgNTIsIDU2LCAxMjgsIAorICAgIDc5LCA0OCwgNTIsIDU1LCAxMjgsIDc5LCA0OCwgNTIsIDU0LCAxMjgsIDc5LCA0OCwgNTIsIDUzLCAxMjgsIDc5LCA0OCwgCisgICAgNTIsIDUyLCAxMjgsIDc5LCA0OCwgNTIsIDUxLCAxMjgsIDc5LCA0OCwgNTIsIDUwLCAxMjgsIDc5LCA0OCwgNTIsIDQ5LCAKKyAgICAxMjgsIDc5LCA0OCwgNTIsIDQ4LCAxMjgsIDc5LCA0OCwgNTEsIDU3LCAxMjgsIDc5LCA0OCwgNTEsIDU2LCAxMjgsIDc5LCAKKyAgICA0OCwgNTEsIDU1LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjcsIDEyOCwgNzksIAorICAgIDQ4LCA1MSwgNTQsIDY2LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgMTI4LCA3OSwgCisgICAgNDgsIDUxLCA1MywgMTI4LCA3OSwgNDgsIDUxLCA1MiwgMTI4LCA3OSwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgNzksIDQ4LCAKKyAgICA1MSwgNTEsIDEyOCwgNzksIDQ4LCA1MSwgNTAsIDEyOCwgNzksIDQ4LCA1MSwgNDksIDEyOCwgNzksIDQ4LCA1MSwgNDgsIAorICAgIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDQ4LCAxMjgsIDc5LCA0OCwgNTAsIDU3LCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1NywgCisgICAgMTI4LCA3OSwgNDgsIDUwLCA1NiwgMTI4LCA3OSwgNDgsIDUwLCA1NSwgMTI4LCA3OSwgNDgsIDUwLCA1NCwgMTI4LCA3OSwgCisgICAgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTMsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDc5LCAKKyAgICA0OCwgNTAsIDUyLCAxMjgsIDc5LCA0OCwgNTAsIDUxLCAxMjgsIDc5LCA0OCwgNTAsIDUwLCAxMjgsIDc5LCA0OCwgNTAsIAorICAgIDQ5LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA0OCwgMTI4LCA3OSwgNDgsIDQ5LCA1NywgCisgICAgNjUsIDEyOCwgNzksIDQ4LCA0OSwgNTcsIDEyOCwgNzksIDQ4LCA0OSwgNTYsIDEyOCwgNzksIDQ4LCA0OSwgNTUsIDEyOCwgCisgICAgNzksIDQ4LCA0OSwgNTQsIDEyOCwgNzksIDQ4LCA0OSwgNTMsIDEyOCwgNzksIDQ4LCA0OSwgNTIsIDEyOCwgNzksIDQ4LCAKKyAgICA0OSwgNTEsIDEyOCwgNzksIDQ4LCA0OSwgNTAsIDEyOCwgNzksIDQ4LCA0OSwgNDksIDEyOCwgNzksIDQ4LCA0OSwgNDgsIAorICAgIDY3LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NiwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA0OSwgCisgICAgNDgsIDEyOCwgNzksIDQ4LCA0OCwgNTcsIDEyOCwgNzksIDQ4LCA0OCwgNTYsIDEyOCwgNzksIDQ4LCA0OCwgNTUsIDEyOCwgCisgICAgNzksIDQ4LCA0OCwgNTQsIDcwLCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2OSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjgsIAorICAgIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY3LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NiwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgCisgICAgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDEyOCwgNzksIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDUzLCAKKyAgICAxMjgsIDc5LCA0OCwgNDgsIDUyLCAxMjgsIDc5LCA0OCwgNDgsIDUxLCAxMjgsIDc5LCA0OCwgNDgsIDUwLCAxMjgsIDc5LCAKKyAgICA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA0OSwgMTI4LCA3OSwgNDUsIDg5LCA2OSwgMTI4LCA3OSwgNDUsIAorICAgIDc5LCA0NSwgNzMsIDEyOCwgNzksIDQ1LCA2OSwgMTI4LCA3OCwgOTAsIDg5LCA4OCwgMTI4LCA3OCwgOTAsIDg5LCA4NCwgCisgICAgMTI4LCA3OCwgOTAsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDkwLCA4OSwgODIsIDEyOCwgNzgsIDkwLCA4OSwgODAsIDEyOCwgCisgICAgNzgsIDkwLCA4OSwgMTI4LCA3OCwgOTAsIDg1LCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDkwLCAKKyAgICA4NSwgODIsIDEyOCwgNzgsIDkwLCA4NSwgODEsIDEyOCwgNzgsIDkwLCA4NSwgODAsIDEyOCwgNzgsIDkwLCA4NSwgNzksIAorICAgIDg4LCAxMjgsIDc4LCA5MCwgODUsIDc5LCAxMjgsIDc4LCA5MCwgODUsIDIwNiwgNzgsIDkwLCA4NSwgMTI4LCA3OCwgOTAsIAorICAgIDc5LCA4OCwgMTI4LCA3OCwgOTAsIDc5LCA4MCwgMTI4LCA3OCwgOTAsIDczLCA4OCwgMTI4LCA3OCwgOTAsIDczLCA4NCwgCisgICAgMTI4LCA3OCwgOTAsIDczLCA4MCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgODgsIDEyOCwgNzgsIDkwLCA3MywgNjksIDgwLCAKKyAgICAxMjgsIDc4LCA5MCwgNzMsIDY5LCAxMjgsIDc4LCA5MCwgNzMsIDEyOCwgNzgsIDkwLCA2OSwgODgsIDEyOCwgNzgsIDkwLCAKKyAgICA2OSwgODUsIDc3LCAxMjgsIDc4LCA5MCwgNjksIDEyOCwgNzgsIDkwLCA2NSwgODgsIDEyOCwgNzgsIDkwLCA2NSwgODQsIAorICAgIDEyOCwgNzgsIDkwLCA2NSwgODEsIDEyOCwgNzgsIDkwLCA2NSwgODAsIDEyOCwgNzgsIDkwLCA2NSwgMTI4LCA3OCwgOTAsIAorICAgIDE5MywgNzgsIDg5LCA4NywgNjUsIDEyOCwgNzgsIDg5LCA4NSwgODgsIDEyOCwgNzgsIDg5LCA4NSwgODUsIDEyOCwgNzgsIAogICAgIDg5LCA4NSwgODQsIDEyOCwgNzgsIDg5LCA4NSwgODAsIDEyOCwgNzgsIDg5LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA4OSwgCiAgICAgODUsIDc5LCA4MCwgMTI4LCA3OCwgODksIDg1LCA3OSwgMTI4LCA3OCwgODksIDg1LCA2OSwgMTI4LCA3OCwgODksIDg1LCAKICAgICAxMjgsIDc4LCA4OSwgNzksIDg4LCAxMjgsIDc4LCA4OSwgNzksIDg0LCAxMjgsIDc4LCA4OSwgNzksIDgwLCAxMjgsIDc4LCAKICAgICA4OSwgNzksIDc5LCAxMjgsIDc4LCA4OSwgNzksIDY1LCAxMjgsIDc4LCA4OSwgNzksIDEyOCwgNzgsIDg5LCA3NCwgNjUsIAogICAgIDEyOCwgNzgsIDg5LCA3MywgODgsIDEyOCwgNzgsIDg5LCA3MywgODQsIDEyOCwgNzgsIDg5LCA3MywgMjEyLCA3OCwgODksIAogICAgIDczLCAyMTEsIDc4LCA4OSwgNzMsIDIxMCwgNzgsIDg5LCA3MywgODAsIDEyOCwgNzgsIDg5LCA3MywgNzgsIDQ1LCA2OCwgCi0gICAgNzksIDEyOCwgNzgsIDg5LCA3MywgNjksIDg4LCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4NCwgMTI4LCA3OCwgODksIDczLCAKLSAgICA2OSwgODAsIDEyOCwgNzgsIDg5LCA3MywgNjksIDEyOCwgNzgsIDg5LCA3MywgMTI4LCA3OCwgODksIDIwMSwgNzgsIDg5LCAKLSAgICA2OSwgODQsIDEyOCwgNzgsIDg5LCA2OSwgMjEyLCA3OCwgODksIDY5LCA3MiwgMTI4LCA3OCwgODksIDY5LCAyMDAsIDc4LCAKLSAgICA4OSwgNjksIDY5LCAxMjgsIDc4LCA4OSwgNjksIDEyOCwgNzgsIDg5LCAxOTYsIDc4LCA4OSwgNjcsIDY1LCAxMjgsIDc4LCAKLSAgICA4OSwgNjUsIDY5LCA3NywgNjUsIDY5LCAxMjgsIDc4LCA4OSwgNjUsIDY1LCAxMjgsIDc4LCA4NywgNzksIDc5LCAxMjgsIAotICAgIDc4LCA4NywgNzksIDEyOCwgNzgsIDg3LCA3MywgNzMsIDEyOCwgNzgsIDg3LCA3MywgMTI4LCA3OCwgODcsIDY5LCAxMjgsIAotICAgIDc4LCA4NywgNjUsIDY1LCAxMjgsIDc4LCA4NywgNjUsIDEyOCwgNzgsIDg3LCAxMjgsIDc4LCA4NiwgMTI4LCA3OCwgODUsIAotICAgIDg4LCAxMjgsIDc4LCA4NSwgODUsIDc4LCAxMjgsIDc4LCA4NSwgODQsIDczLCA3NiwgNzYsIDg1LCAxMjgsIDc4LCA4NSwgCi0gICAgODQsIDEyOCwgNzgsIDg1LCAyMTIsIDc4LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA4NSwgODIsIDEyOCwgNzgsIDg1LCA4MCwgCi0gICAgMTI4LCA3OCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgODUsIDc5LCA4MCwgMTI4LCA3OCwgODUsIDc5LCAxMjgsIDc4LCA4NSwgCi0gICAgNzgsIDg1LCA5MCwgMTI4LCA3OCwgODUsIDc4LCA4NSwgMjE4LCA3OCwgODUsIDc4LCA3MSwgMTI4LCA3OCwgODUsIDc4LCAKLSAgICA2NSwgODYsIDg1LCAyMTIsIDc4LCA4NSwgNzgsIDY1LCA4NiwgNzMsIDIwMywgNzgsIDg1LCA3OCwgMTI4LCA3OCwgODUsIAotICAgIDIwNiwgNzgsIDg1LCA3NywgNjksIDgyLCAyMDcsIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIDg0LCA3OSwgMjEwLCA3OCwgCi0gICAgODUsIDc3LCA2OSwgODIsIDY1LCAyMDQsIDc4LCA4NSwgNzcsIDY2LCA2OSwgODIsIDgzLCAxMjgsIDc4LCA4NSwgNzcsIDY2LCAKLSAgICA2OSwgODIsIDEyOCwgNzgsIDg1LCA3NywgMTI4LCA3OCwgODUsIDc2LCA3NiwgMTI4LCA3OCwgODUsIDc2LCAyMDQsIDc4LCAKKyAgICA3OSwgMTI4LCA3OCwgODksIDczLCA3MywgMTI4LCA3OCwgODksIDczLCA2OSwgODgsIDEyOCwgNzgsIDg5LCA3MywgNjksIAorICAgIDg0LCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgODksIDczLCA2OSwgMTI4LCA3OCwgODksIDczLCAxMjgsIAorICAgIDc4LCA4OSwgMjAxLCA3OCwgODksIDcyLCA2NSwgMTI4LCA3OCwgODksIDY5LCA4NCwgMTI4LCA3OCwgODksIDY5LCAyMTIsIAorICAgIDc4LCA4OSwgNjksIDcyLCAxMjgsIDc4LCA4OSwgNjksIDIwMCwgNzgsIDg5LCA2OSwgNjksIDEyOCwgNzgsIDg5LCA2OSwgCisgICAgMTI4LCA3OCwgODksIDE5NiwgNzgsIDg5LCA2NywgNjUsIDEyOCwgNzgsIDg5LCA2NSwgODUsIDEyOCwgNzgsIDg5LCA2NSwgCisgICAgNzMsIDEyOCwgNzgsIDg5LCA2NSwgNzIsIDEyOCwgNzgsIDg5LCA2NSwgNjksIDc3LCA2NSwgNjksIDEyOCwgNzgsIDg5LCAKKyAgICA2NSwgNjUsIDEyOCwgNzgsIDg3LCA3OSwgNzksIDEyOCwgNzgsIDg3LCA3OSwgMTI4LCA3OCwgODcsIDczLCA3MywgMTI4LCAKKyAgICA3OCwgODcsIDczLCAxMjgsIDc4LCA4NywgNjksIDEyOCwgNzgsIDg3LCA2NSwgNjUsIDEyOCwgNzgsIDg3LCA2NSwgMTI4LCAKKyAgICA3OCwgODcsIDEyOCwgNzgsIDg2LCAxMjgsIDc4LCA4NSwgODgsIDEyOCwgNzgsIDg1LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCAKKyAgICA4NSwgMTI4LCA3OCwgODUsIDg0LCA3MywgNzYsIDc2LCA4NSwgMTI4LCA3OCwgODUsIDg0LCAxMjgsIDc4LCA4NSwgMjEyLCAKKyAgICA3OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgODUsIDgyLCAxMjgsIDc4LCA4NSwgODAsIDEyOCwgNzgsIDg1LCA3OSwgODgsIAorICAgIDEyOCwgNzgsIDg1LCA3OSwgODAsIDEyOCwgNzgsIDg1LCA3OSwgMTI4LCA3OCwgODUsIDc4LCA4NSwgOTAsIDEyOCwgNzgsIAorICAgIDg1LCA3OCwgODUsIDIxOCwgNzgsIDg1LCA3OCwgNzEsIDEyOCwgNzgsIDg1LCA3OCwgNjUsIDg2LCA4NSwgMjEyLCA3OCwgCisgICAgODUsIDc4LCA2NSwgODYsIDczLCAyMDMsIDc4LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCAyMDYsIDc4LCA4NSwgNzcsIDY5LCAKKyAgICA4MiwgMjA3LCA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCA4NCwgNzksIDIxMCwgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgCisgICAgMjA0LCA3OCwgODUsIDc3LCA2NiwgNjksIDgyLCA4MywgMTI4LCA3OCwgODUsIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc4LCAKKyAgICA4NSwgNzcsIDEyOCwgNzgsIDg1LCA3NiwgNzYsIDEyOCwgNzgsIDg1LCA3NiwgMjA0LCA3OCwgODUsIDc2LCAxMjgsIDc4LCAKICAgICA4NSwgNzUsIDg0LCA2NSwgMTI4LCA3OCwgODUsIDY5LCA3OCwgNzEsIDEyOCwgNzgsIDg1LCA2OSwgMTI4LCA3OCwgODUsIAogICAgIDY2LCA3MywgNjUsIDIwNiwgNzgsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDg1LCA0OSwgNDksIDEyOCwgNzgsIDg1LCA0OCwgCiAgICAgNTAsIDUwLCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCAKQEAgLTE2NTksNDcwICsxNzgyLDQ5MyBAQAogICAgIDY1LCA2NiwgNzYsIDE5NywgNzgsIDc5LCA3OCwgNDUsIDc0LCA3OSwgNzMsIDc4LCA2OSwgODIsIDEyOCwgNzgsIDc5LCA3OCwgCiAgICAgNDUsIDY2LCA4MiwgNjksIDY1LCA3NSwgNzMsIDc4LCAxOTksIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDIwNCwgNzgsIDc5LCAKICAgICA3NSwgNzIsIDg1LCA3NSwgMTI4LCA3OCwgNzksIDY4LCA2OSwgMTI4LCA3OCwgNzksIDY1LCAxMjgsIDc4LCA3OSwgNDUsIAotICAgIDY2LCA4MiwgNjksIDY1LCAyMDMsIDc4LCA3OCwgNzksIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgCisgICAgNjYsIDgyLCA2OSwgNjUsIDIwMywgNzgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDc4LCA4NSwgMTI4LCA3OCwgNzgsIDc5LCAKKyAgICA3OSwgMTI4LCA3OCwgNzgsIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDg1LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA4NSwgMTI4LCAKKyAgICA3OCwgNzgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3OCwgNzksIDEyOCwgNzgsIDc4LCA3OCwgNzMsIDczLCAxMjgsIAorICAgIDc4LCA3OCwgNzgsIDczLCAxMjgsIDc4LCA3OCwgNzgsIDY5LCA2OSwgMTI4LCA3OCwgNzgsIDc4LCA2OSwgMTI4LCA3OCwgCisgICAgNzgsIDc4LCA2NSwgODUsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDczLCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA2NSwgMTI4LCAKKyAgICA3OCwgNzgsIDc4LCA2NSwgMTI4LCA3OCwgNzgsIDc4LCAxMjgsIDc4LCA3OCwgNzIsIDY1LCAxMjgsIDc4LCA3OCwgNzEsIAogICAgIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDcxLCA3OSwgMTI4LCA3OCwgNzgsIDcxLCA3MywgNzMsIDEyOCwgNzgsIDc4LCA3MSwgCiAgICAgNzMsIDEyOCwgNzgsIDc4LCA3MSwgNjUsIDY1LCAxMjgsIDc4LCA3OCwgNzEsIDY1LCAxMjgsIDc4LCA3OCwgNzEsIDEyOCwgCi0gICAgNzgsIDc3LCAxMjgsIDc4LCA3NiwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTcsIDEyOCwgNzgsIDc2LCAKLSAgICA0OCwgNDksIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCAxMjgsIAotICAgIDc4LCA3NiwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUyLCAKLSAgICAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgNDksIAotICAgIDQ5LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDc2LCA0OCwgCi0gICAgNDgsIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIDc2LCAKLSAgICA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUyLCAxMjgsIAotICAgIDc4LCA3NiwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDQ5LCAKLSAgICAxMjgsIDc4LCA3NSwgNzksIDc3LCAxMjgsIDc4LCA3NSwgMjA3LCA3OCwgNzUsIDczLCA3OCwgNjgsIDczLCAxMjgsIDc4LCAKLSAgICA3NSwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCA3NCwgODksIDg4LCAxMjgsIDc4LCA3NCwgODksIDg0LCAxMjgsIAotICAgIDc4LCA3NCwgODksIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg5LCA4MiwgMTI4LCA3OCwgNzQsIDg5LCA4MCwgMTI4LCA3OCwgCi0gICAgNzQsIDg5LCAxMjgsIDc4LCA3NCwgODUsIDg4LCAxMjgsIDc4LCA3NCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg1LCAKLSAgICA4MiwgMTI4LCA3OCwgNzQsIDg1LCA4MSwgNjUsIDEyOCwgNzgsIDc0LCA4NSwgODAsIDEyOCwgNzgsIDc0LCA4NSwgNzksIAotICAgIDg4LCAxMjgsIDc4LCA3NCwgODUsIDc5LCAxMjgsIDc4LCA3NCwgODUsIDY5LCA4MSwgMTI4LCA3OCwgNzQsIDg1LCA2NSwgCi0gICAgNjksIDEyOCwgNzgsIDc0LCA4NSwgMTI4LCA3OCwgNzQsIDc5LCA4OCwgMTI4LCA3OCwgNzQsIDc5LCA4NCwgMTI4LCA3OCwgCi0gICAgNzQsIDc5LCA4MCwgMTI4LCA3OCwgNzQsIDc5LCA3OSwgMTI4LCA3OCwgNzQsIDc5LCAxMjgsIDc4LCA3NCwgNzMsIDg4LCAKLSAgICAxMjgsIDc4LCA3NCwgNzMsIDg0LCAxMjgsIDc4LCA3NCwgNzMsIDgwLCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCAKLSAgICA3OCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzgsIDc0LCA3MywgNjksIDgwLCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA2OSwgCi0gICAgMTI4LCA3OCwgNzQsIDczLCA2OSwgMTI4LCA3OCwgNzQsIDczLCAxMjgsIDc4LCA3NCwgMjAxLCA3OCwgNzQsIDY5LCA4NSwgCi0gICAgODgsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc4LCA2NSwgMTI4LCAKLSAgICA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzQsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIAotICAgIDY5LCAxMjgsIDc4LCA3NCwgNjksIDE5NywgNzgsIDc0LCA2OSwgMTI4LCA3OCwgNzQsIDY1LCA4MSwgMTI4LCA3OCwgNzQsIAotICAgIDY1LCA4MCwgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIDc2LCA3MywgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIDEyOCwgCi0gICAgNzgsIDc0LCA2NSwgNjUsIDEyOCwgNzgsIDc0LCAxMjgsIDc4LCA3MywgODgsIDEyOCwgNzgsIDczLCA4NCwgODIsIDY5LCAKLSAgICAxMjgsIDc4LCA3MywgODMsIDY1LCA3MSwgMTI4LCA3OCwgNzMsIDgyLCA4NSwgNzEsIDg1LCAxMjgsIDc4LCA3MywgODAsIAotICAgIDEyOCwgNzgsIDczLCA3OCwgODQsIDcyLCAxMjgsIDc4LCA3MywgNzgsIDY5LCA4NCwgODksIDEyOCwgNzgsIDczLCA3OCwgCi0gICAgNjksIDg0LCAyMTcsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDY5LCAKLSAgICA2OSwgMjA2LCA3OCwgNzMsIDc4LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzgsIDczLCA3OCwgCi0gICAgMTk3LCA3OCwgNzMsIDc4LCA2OCwgNjUsIDUwLCAxMjgsIDc4LCA3MywgNzgsIDY4LCA2NSwgMTc4LCA3OCwgNzMsIDc3LCAKLSAgICAxMjgsIDc4LCA3MywgMjA1LCA3OCwgNzMsIDc1LCA3MiwgNjUsIDcyLCA3MywgODQsIDEyOCwgNzgsIDczLCA3NSwgNjUsIAotICAgIDcyLCA3MywgODQsIDEyOCwgNzgsIDczLCA3NSwgNjUsIDEyOCwgNzgsIDczLCA3MywgMTI4LCA3OCwgNzMsIDcyLCA4MywgCi0gICAgNzIsIDg2LCA2NSwgODMsIDY1LCAxMjgsIDc4LCA3MywgNzEsIDczLCA2OCwgNjUsIDc3LCA3MywgNzgsIDEyOCwgNzgsIDczLCAKLSAgICA3MSwgNzMsIDY4LCA2NSwgNjksIDgzLCA3MiwgMTI4LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzgsIDczLCA3MSwgNzIsIAotICAgIDIxMiwgNzgsIDczLCA3MSwgNzEsIDY1LCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA3OCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgCi0gICAgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIAotICAgIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgzLCA3MywgNzksIDgzLCAKLSAgICAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIAotICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCAKLSAgICA3OSwgODMsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3OCwgNzMsIAotICAgIDY5LCA4NSwgNzgsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDczLCAKLSAgICA2OSwgODUsIDY3LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIAotICAgIDc4LCA3MywgNjksIDg1LCAyMDYsIDc4LCA3MywgNjksIDgwLCAxMjgsIDc4LCA3MywgNjksIDEyOCwgNzgsIDczLCA2NiwgCi0gICAgMTI4LCA3OCwgNzMsIDY1LCAxMjgsIDc4LCA3MywgNTAsIDEyOCwgNzgsIDcyLCA4NSwgNjksIDEyOCwgNzgsIDcyLCA3NCwgCi0gICAgNjUsIDEyOCwgNzgsIDcyLCA2NSwgMTI4LCA3OCwgNzIsIDEyOCwgNzgsIDcxLCA4OSwgNjksIDEyOCwgNzgsIDcxLCA4NiwgCi0gICAgNjksIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgODUsIDc5LCA4NCwgMTI4LCA3OCwgNzEsIDg1LCAKLSAgICA3OSwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIAotICAgIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDc5LCA4NSwgMTI4LCA3OCwgNzEsIDc5LCAyMTMsIDc4LCA3MSwgNzksIDg0LCAxMjgsIAotICAgIDc4LCA3MSwgNzksIDgxLCAxMjgsIDc4LCA3MSwgNzksIDgwLCAxMjgsIDc4LCA3MSwgNzksIDc4LCAxMjgsIDc4LCA3MSwgCi0gICAgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzksIDY5LCA3MiwgMTI4LCA3OCwgNzEsIDc5LCA2OSwgMjAwLCA3OCwgNzEsIDIwNywgCi0gICAgNzgsIDcxLCA3NSwgODksIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDc1LCA4NywgNjUsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDc1LCAKLSAgICA4NSwgODAsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDc4LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA3NywgMTI4LCA3OCwgNzEsIAotICAgIDc1LCA4NSwgNjksIDc4LCA5MCwgNjksIDg1LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA4NSwgMTk3LCA3OCwgNzEsIDc1LCA3MywgCi0gICAgNzgsIDY4LCAyMDEsIDc4LCA3MSwgNzUsIDczLCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA4OCwgMTI4LCAKLSAgICA3OCwgNzEsIDc1LCA2OSwgODUsIDgyLCA3MywgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgNzgsIAotICAgIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3MSwgNzUsIDY1LCA4MSwgMTI4LCA3OCwgNzEsIDc1LCA2NSwgCi0gICAgODAsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDY1LCA3NywgNzMsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDEyOCwgNzgsIDcxLCAKLSAgICA3MywgNjksIDg4LCAxMjgsIDc4LCA3MSwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzEsIDczLCA2OSwgMTI4LCA3OCwgNzEsIAotICAgIDcxLCA4NywgNjUsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgCi0gICAgODAsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCA4MSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDIwOSwgNzgsIDcxLCAKLSAgICA3MSwgODUsIDc5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3NywgCi0gICAgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNjksIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCA4MywgNzIsIDY1LCAKLSAgICAxOTcsIDc4LCA3MSwgNzEsIDg1LCA2NSwgNjksIDIwNiwgNzgsIDcxLCA3MSwgODUsIDEyOCwgNzgsIDcxLCA3MSwgNzksIAotICAgIDc5LCAxMjgsIDc4LCA3MSwgNzEsIDc5LCAxMjgsIDc4LCA3MSwgNzEsIDczLCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgCi0gICAgODgsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCAKLSAgICAxMjgsIDc4LCA3MSwgNzEsIDY5LCAyMTMsIDc4LCA3MSwgNzEsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIAotICAgIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgMTI4LCA3OCwgCi0gICAgNzEsIDcxLCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgODAsIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgNjUsIDY5LCAKLSAgICAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgMTI4LCA3OCwgNzEsIDY5LCA4OCwgMTI4LCAKLSAgICA3OCwgNzEsIDY5LCA4NSwgODIsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDcxLCA2OSwgODAsIDEyOCwgNzgsIDcxLCA2OSwgNzgsIAotICAgIDEyOCwgNzgsIDcxLCA2OSwgNjUsIDY4LCA2NSwgNzYsIDEyOCwgNzgsIDcxLCA2NSwgODgsIDEyOCwgNzgsIDcxLCA2NSwgCi0gICAgODQsIDEyOCwgNzgsIDcxLCA2NSwgMjExLCA3OCwgNzEsIDY1LCA4MSwgMTI4LCA3OCwgNzEsIDY1LCA4MCwgMTI4LCA3OCwgCi0gICAgNzEsIDY1LCA3OCwgNzEsIDg1LCAxMjgsIDc4LCA3MSwgNjUsIDc4LCAxMjgsIDc4LCA3MSwgNjUsIDczLCAxMjgsIDc4LCAKLSAgICA3MSwgNjUsIDY1LCA3MywgMTI4LCA3OCwgNzEsIDE5MywgNzgsIDcwLCAxMjgsIDc4LCA2OSwgODgsIDIxMiwgNzgsIDY5LCAKLSAgICA4OCwgMTI4LCA3OCwgNjksIDg3LCA4MywgODAsIDY1LCA4MCwgNjksIDgyLCAxMjgsIDc4LCA2OSwgODcsIDc2LCA3MywgNzgsIAotICAgIDY5LCAxMjgsIDc4LCA2OSwgODcsIDEyOCwgNzgsIDY5LCA4NSwgODQsIDgyLCA2NSwgMjA0LCA3OCwgNjksIDg1LCA4NCwgCi0gICAgNjksIDgyLCAxMjgsIDc4LCA2OSwgODQsIDEyOCwgNzgsIDY5LCAyMTIsIDc4LCA2OSwgODMsIDg0LCA2OSwgMTk2LCA3OCwgCi0gICAgNjksIDgxLCA4NSwgNjgsIDY1LCA2NSwgMTI4LCA3OCwgNjksIDgwLCA4NCwgODUsIDc4LCA2OSwgMTI4LCA3OCwgNjksIDgwLCAKLSAgICAxMjgsIDc4LCA2OSwgNzksIDEyOCwgNzgsIDY5LCAyMDcsIDc4LCA2OSwgNzgsIDY1LCA3OCwgNzksIDEyOCwgNzgsIDY5LCAKLSAgICA3OCwgMTI4LCA3OCwgNjksIDczLCA4NCwgNzIsIDY5LCAyMTAsIDc4LCA2OSwgNzEsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIAotICAgIDc4LCA2OSwgNzEsIDY1LCA4NCwgNjksIDE5NiwgNzgsIDY5LCA2OSwgMTI4LCA3OCwgNjksIDY3LCA3NSwgODQsIDczLCA2OSwgCi0gICAgMTI4LCA3OCwgNjksIDY2LCA2OSwgNzgsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgNzgsIDY4LCA4NSwgODgsIAotICAgIDEyOCwgNzgsIDY4LCA4NSwgODQsIDEyOCwgNzgsIDY4LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA2OCwgODUsIDgyLCAxMjgsIAotICAgIDc4LCA2OCwgODUsIDgwLCAxMjgsIDc4LCA2OCwgODUsIDc4LCAxMjgsIDc4LCA2OCwgMjEzLCA3OCwgNjgsIDc5LCA4OCwgCi0gICAgMTI4LCA3OCwgNjgsIDc5LCA4NCwgMTI4LCA3OCwgNjgsIDc5LCA4MCwgMTI4LCA3OCwgNjgsIDc5LCA3OSwgMTI4LCA3OCwgCi0gICAgNjgsIDc5LCA3OCwgMTI4LCA3OCwgNjgsIDc5LCA3NywgNjYsIDg1LCAxMjgsIDc4LCA2OCwgNzksIDc2LCAxOTcsIDc4LCAKLSAgICA2OCwgNzMsIDg4LCAxMjgsIDc4LCA2OCwgNzMsIDg0LCAxMjgsIDc4LCA2OCwgNzMsIDgxLCAxMjgsIDc4LCA2OCwgNzMsIAotICAgIDgwLCAxMjgsIDc4LCA2OCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNjgsIDczLCA2OSwgMTI4LCA3OCwgNjgsIDczLCA2OCwgCi0gICAgNjUsIDEyOCwgNzgsIDY4LCA3MywgNjUsIDgxLCAxMjgsIDc4LCA2OCwgNjksIDg4LCAxMjgsIDc4LCA2OCwgNjksIDg1LCAKLSAgICA4OCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDY1LCA2OSwgODIsIDY5LCA2OSwgCi0gICAgMTI4LCA3OCwgNjgsIDY5LCA4MCwgMTI4LCA3OCwgNjgsIDY5LCA2OSwgMTI4LCA3OCwgNjgsIDY5LCAxMjgsIDc4LCA2OCwgCi0gICAgNjUsIDg4LCAxMjgsIDc4LCA2OCwgNjUsIDg0LCAxMjgsIDc4LCA2OCwgNjUsIDgwLCAxMjgsIDc4LCA2OCwgNjUsIDc3LCAKLSAgICAxMjgsIDc4LCA2OCwgNjUsIDY1LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgNjUsIAotICAgIDEyOCwgNzgsIDY4LCA2NSwgMTkzLCA3OCwgNjYsIDg5LCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4NCwgMTI4LCA3OCwgNjYsIAotICAgIDg5LCA4MiwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODIsIDEyOCwgNzgsIDY2LCA4OSwgODAsIDEyOCwgNzgsIDY2LCA4OSwgCi0gICAgMTI4LCA3OCwgNjYsIDg1LCA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4NCwgMTI4LCA3OCwgNjYsIDg1LCA4MiwgODgsIDEyOCwgCi0gICAgNzgsIDY2LCA4NSwgODIsIDEyOCwgNzgsIDY2LCA4NSwgODAsIDEyOCwgNzgsIDY2LCA4NSwgMTI4LCA3OCwgNjYsIDc5LCAKLSAgICA4OCwgMTI4LCA3OCwgNjYsIDc5LCA4NCwgMTI4LCA3OCwgNjYsIDc5LCA4MCwgMTI4LCA3OCwgNjYsIDc5LCAxMjgsIDc4LCAKLSAgICA2NiwgNzMsIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDg0LCAxMjgsIDc4LCA2NiwgNzMsIDgwLCAxMjgsIDc4LCA2NiwgNzMsIAotICAgIDY5LCA4OCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgODAsIDEyOCwgNzgsIDY2LCA3MywgNjksIDEyOCwgNzgsIDY2LCA3MywgCi0gICAgMTI4LCA3OCwgNjYsIDY1LCA4OCwgMTI4LCA3OCwgNjYsIDY1LCA4NCwgMTI4LCA3OCwgNjYsIDY1LCA4MCwgMTI4LCA3OCwgCi0gICAgNjYsIDY1LCAxMjgsIDc4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc4LCA2NSwgODksIDEyOCwgNzgsIDY1LCAKLSAgICA4OCwgNzMsIDY1LCAyMDYsIDc4LCA2NSwgODgsIDEyOCwgNzgsIDY1LCA4NSwgODQsIDcyLCA4MywgMTI4LCA3OCwgNjUsIAotICAgIDg1LCA2OCwgNzMsIDIxOCwgNzgsIDY1LCA4NCwgODUsIDgyLCA2NSwgMjA0LCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgCi0gICAgMjA0LCA3OCwgNjUsIDgzLCA3NSwgNjUsIDgwLCAyMDEsIDc4LCA2NSwgODMsIDcyLCA3MywgMTI4LCA3OCwgNjUsIDgzLCAKLSAgICA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzgsIDY1LCA4MiwgODIsIDc5LCAyMTUsIDc4LCA2NSwgODIsIAotICAgIDEyOCwgNzgsIDY1LCA4MSwgMTI4LCA3OCwgNjUsIDc5LCAyMTEsIDc4LCA2NSwgNzgsIDgzLCA2NSwgNzgsIDY1LCA4MSwgCi0gICAgMTI4LCA3OCwgNjUsIDc4LCA3MSwgNzcsIDc5LCA3OCwgODQsIDcyLCA3OSwgMTI4LCA3OCwgNjUsIDc4LCA2OCwgMTI4LCAKLSAgICA3OCwgNjUsIDc4LCA2NSwgMTI4LCA3OCwgNjUsIDc3LCA2OSwgMTI4LCA3OCwgNjUsIDc3LCAxOTcsIDc4LCA2NSwgNzcsIAotICAgIDUwLCAxMjgsIDc4LCA2NSwgNzcsIDEyOCwgNzgsIDY1LCA3MywgODIsIDE5MywgNzgsIDY1LCA3MywgMjA0LCA3OCwgNjUsIAotICAgIDcxLCA4MiwgMjAxLCA3OCwgNjUsIDcxLCA2NSwgODIsIDEyOCwgNzgsIDY1LCA3MSwgNjUsIDEyOCwgNzgsIDY1LCA3MSwgCi0gICAgMTkzLCA3OCwgNjUsIDcxLCAxMjgsIDc4LCA2NSwgMTk5LCA3OCwgNjUsIDY5LCAxMjgsIDc4LCA2NSwgNjYsIDc2LCA2NSwgCi0gICAgMTI4LCA3OCwgNjUsIDY1LCA4MywgNzMsIDc1LCA4OSwgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIDY1LCA3NSwgODMsIDczLCAKLSAgICA3NSwgODksIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDY1LCA2NSwgMTI4LCA3OCwgNjUsIAotICAgIDE5MywgNzgsIDY1LCA1MCwgMTI4LCA3OCwgNDgsIDUyLCA1MCwgMTI4LCA3OCwgNDgsIDUyLCA0OSwgMTI4LCA3OCwgNDgsIAotICAgIDUyLCA0OCwgMTI4LCA3OCwgNDgsIDUxLCA1NywgMTI4LCA3OCwgNDgsIDUxLCA1NiwgMTI4LCA3OCwgNDgsIDUxLCA1NSwgCi0gICAgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIDEyOCwgNzgsIDQ4LCA1MSwgNTQsIDEyOCwgNzgsIDQ4LCA1MSwgNTMsIDY1LCAKLSAgICAxMjgsIDc4LCA0OCwgNTEsIDUzLCAxMjgsIDc4LCA0OCwgNTEsIDUyLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MiwgMTI4LCAKLSAgICA3OCwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTEsIDEyOCwgNzgsIDQ4LCA1MSwgNTAsIDEyOCwgNzgsIAotICAgIDQ4LCA1MSwgNDksIDEyOCwgNzgsIDQ4LCA1MSwgNDgsIDEyOCwgNzgsIDQ4LCA1MCwgNTcsIDEyOCwgNzgsIDQ4LCA1MCwgCi0gICAgNTYsIDEyOCwgNzgsIDQ4LCA1MCwgNTUsIDEyOCwgNzgsIDQ4LCA1MCwgNTQsIDEyOCwgNzgsIDQ4LCA1MCwgNTMsIDY1LCAKLSAgICAxMjgsIDc4LCA0OCwgNTAsIDUzLCAxMjgsIDc4LCA0OCwgNTAsIDUyLCAxMjgsIDc4LCA0OCwgNTAsIDUxLCAxMjgsIDc4LCAKLSAgICA0OCwgNTAsIDUwLCAxMjgsIDc4LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA0OCwgNDksIAotICAgIDU3LCAxMjgsIDc4LCA0OCwgNDksIDU2LCA2NiwgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgNzgsIDQ4LCA0OSwgCi0gICAgNTYsIDEyOCwgNzgsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDQ4LCA0OSwgNTQsIDEyOCwgNzgsIDQ4LCA0OSwgNTMsIDEyOCwgCi0gICAgNzgsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDQ4LCA0OSwgNTEsIDEyOCwgNzgsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgNzgsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDQ4LCA0OCwgNTYsIAotICAgIDEyOCwgNzgsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIAotICAgIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgNzgsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc4LCA0NSwgNjUsIDgyLCAyMTcsIDc3LCA4OSwgODgsIDEyOCwgCi0gICAgNzcsIDg5LCA4NCwgMTI4LCA3NywgODksIDgzLCA3NiwgNzMsIDg0LCA2OSwgMTI4LCA3NywgODksIDgwLCAxMjgsIDc3LCAKLSAgICA4OSwgNjUsIDEyOCwgNzcsIDg5LCAxOTMsIDc3LCA4OSwgMTI4LCA3NywgMjE3LCA3NywgODcsIDc5LCA3OSwgMTI4LCA3NywgCi0gICAgODcsIDc5LCAxMjgsIDc3LCA4NywgNzMsIDczLCAxMjgsIDc3LCA4NywgNzMsIDEyOCwgNzcsIDg3LCA2OSwgNjksIDEyOCwgCi0gICAgNzcsIDg3LCA2OSwgMTI4LCA3NywgODcsIDY1LCA2NSwgMTI4LCA3NywgODcsIDY1LCAxMjgsIDc3LCA4NywgMTI4LCA3NywgCi0gICAgMjE1LCA3NywgODYsIDc5LCA4MCwgMTI4LCA3NywgODYsIDczLCAxMjgsIDc3LCA4NiwgNjksIDg1LCA2NSwgNjksIDc4LCAKLSAgICA3MSwgNjUsIDc3LCAxMjgsIDc3LCA4NiwgMTI4LCA3NywgMjE0LCA3NywgODUsIDg4LCAxMjgsIDc3LCA4NSwgODUsIDgzLCAKLSAgICA3MywgNzUsIDY1LCA4NCwgNzksIDY1LCA3OCwgMTI4LCA3NywgODUsIDg1LCA4MiwgNjgsIDcyLCA2NSwgNzQsIDE5MywgNzcsIAotICAgIDg1LCA4NCwgMTI4LCA3NywgODUsIDgzLCA3MywgNjcsIDEyOCwgNzcsIDg1LCA4MywgNzMsIDE5NSwgNzcsIDg1LCA4MywgCi0gICAgNzIsIDgyLCA3OSwgNzksIDc3LCAxMjgsIDc3LCA4NSwgODMsIDcyLCA1MSwgMTI4LCA3NywgODUsIDgzLCA3MiwgMTc5LCAKLSAgICA3NywgODUsIDgzLCA3MiwgMTI4LCA3NywgODUsIDgzLCAyMDAsIDc3LCA4NSwgODIsIDg4LCAxMjgsIDc3LCA4NSwgODIsIAotICAgIDcxLCA4NSwgNTAsIDEyOCwgNzcsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDg1LCA4MiwgNjgsIDY1LCAxMjgsIDc3LCA4NSwgCi0gICAgODIsIDY4LCAxOTMsIDc3LCA4NSwgODIsIDEyOCwgNzcsIDg1LCA4MSwgNjgsIDY1LCA3NywgMTI4LCA3NywgODUsIDgwLCAKLSAgICAxMjgsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDc3LCA4NSwgNzksIDg0LCAxMjgsIDc3LCA4NSwgNzksIDgwLCAxMjgsIDc3LCAKLSAgICA4NSwgNzksIDc3LCA2NSwgNjksIDEyOCwgNzcsIDg1LCA3OSwgMTI4LCA3NywgODUsIDc4LCA4MywgODUsIDY2LCAxMjgsIAotICAgIDc3LCA4NSwgNzgsIDY1LCA3MiwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgzLCA2OSwgODQsIDEyOCwgNzcsIDg1LCA3NiwgCi0gICAgODQsIDczLCA4MywgNjksIDIxMiwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIAotICAgIDc4LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc3LCA4NSwgCi0gICAgNzYsIDg0LCA3MywgODAsIDc2LCAxOTcsIDc3LCA4NSwgNzYsIDg0LCA3MywgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCAKLSAgICA4NSwgNzYsIDg0LCA3MywgNzcsIDY1LCA4MCwgMTI4LCA3NywgODUsIDc2LCA4NCwgMjAxLCA3NywgODUsIDc1LCA4MCwgNzIsIAotICAgIDgyLCA2OSwgNzgsIDcxLCAxMjgsIDc3LCA4NSwgNzMsIDc4LCAxMjgsIDc3LCA4NSwgNzEsIDgzLCAxMjgsIDc3LCA4NSwgCi0gICAgNzEsIDEyOCwgNzcsIDg1LCAxOTksIDc3LCA4NSwgNjksIDEyOCwgNzcsIDg1LCA2NywgNzIsIDEyOCwgNzcsIDg1LCA2NywgCi0gICAgMjAwLCA3NywgODUsIDY3LCA2NSwgNjUsIDY4LCAxMjgsIDc3LCA4NSwgNjUsIDc4LCAxMjgsIDc3LCA4NSwgNjUsIDY5LCAKLSAgICAxMjgsIDc3LCA4NSwgNDUsIDcxLCA2NSwgNjUsIDcyLCA3NiwgNjUsIDE5MywgNzcsIDIxMywgNzcsIDgzLCAxMjgsIDc3LCAKLSAgICA4MCwgNjUsIDEyOCwgNzcsIDc5LCA4OSwgNjUsIDczLCAxMjgsIDc3LCA3OSwgODgsIDEyOCwgNzcsIDc5LCA4NiwgNzMsIAotICAgIDE5NywgNzcsIDc5LCA4NiwgNjksIDE5NiwgNzcsIDc5LCA4NSwgODQsIDcyLCAxMjgsIDc3LCA3OSwgODUsIDg0LCAyMDAsIAotICAgIDc3LCA3OSwgODUsIDgzLCA2OSwgMTI4LCA3NywgNzksIDg1LCA4MywgMTk3LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgCi0gICAgNzgsIDgzLCAxMjgsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgMTI4LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCAKLSAgICA3MywgMjA2LCA3NywgNzksIDg1LCA3OCwgMjEyLCA3NywgNzksIDg1LCA3OCwgNjgsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIAotICAgIDE5NiwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NywgNzksIDg0LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA4NSwgCi0gICAgODUsIDc3LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA2NSwgODIsIDEyOCwgNzcsIDc5LCA4MiwgODAsIDcyLCA3OSwgNzYsIDc5LCAKLSAgICA3MSwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNzksIDgyLCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NywgNzksIDgwLCAxMjgsIAotICAgIDc3LCA3OSwgNzksIDgzLCA2OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzcsIDc5LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCA3OSwgCi0gICAgMjA2LCA3NywgNzksIDc5LCA3NywgODAsIDg1LCA4MSwgMTI4LCA3NywgNzksIDc5LCA3NywgNjksIDg1LCA4NCwgMTI4LCAKLSAgICA3NywgNzksIDc5LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MywgNjksIDY5LCA3OCwgMTI4LCA3NywgNzksIDc4LCA4NCwgNzIsIAotICAgIDEyOCwgNzcsIDc5LCA3OCwgODQsIDIwMCwgNzcsIDc5LCA3OCwgODMsIDg0LCA2OSwgODIsIDEyOCwgNzcsIDc5LCA3OCwgCi0gICAgNzksIDgzLCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA3NywgNzksIDc4LCA3OSwgODMsIDgwLCA2NSwgNjcsIDE5NywgNzcsIDc5LCAKLSAgICA3OCwgNzksIDgyLCA2NSwgNzMsIDc2LCAxMjgsIDc3LCA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NywgNzksIAotICAgIDc4LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA3OSwgMjExLCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA3NywgCi0gICAgNzksIDc4LCA3OSwgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA3NywgNzksIDc4LCA3OSwgNjcsIDg1LCA3NiwgNjUsIAotICAgIDIxMCwgNzcsIDc5LCA3OCwgNzUsIDY5LCA4OSwgMTI4LCA3NywgNzksIDc4LCA3NSwgNjksIDIxNywgNzcsIDc5LCA3OCwgCi0gICAgNzMsIDEyOCwgNzcsIDc5LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgNzcsIDc5LCA3OCwgNjksIAotICAgIDIxNywgNzcsIDc5LCA3OCwgMTI4LCA3NywgNzksIDIwNiwgNzcsIDc5LCA3NiwgMTI4LCA3NywgNzksIDcyLCA2NSwgNzcsIAotICAgIDc3LCA2NSwgMTk2LCA3NywgNzksIDY4LCA4NSwgNzYsIDIwNywgNzcsIDc5LCA2OCwgNjksIDgzLCA4NCwgODksIDEyOCwgCi0gICAgNzcsIDc5LCA2OCwgNjksIDc2LCA4MywgMTI4LCA3NywgNzksIDY4LCA2OSwgNzYsIDEyOCwgNzcsIDc5LCA2OCwgNjksIAotICAgIDEyOCwgNzcsIDc5LCA2NiwgNzMsIDc2LCAxOTcsIDc3LCA3OSwgNjUsIDEyOCwgNzcsIDIwNywgNzcsIDc4LCA4OSwgNjUsIAotICAgIDIwNSwgNzcsIDc4LCA2NSwgODMsIDEyOCwgNzcsIDc3LCAxMjgsIDc3LCAyMDUsIDc3LCA3NiwgNjUsIDEyOCwgNzcsIDc2LCAKLSAgICAxMjgsIDc3LCA3NSwgODAsIDY1LCA4MiwgNjUsIDIwOSwgNzcsIDczLCA4OCwgMTI4LCA3NywgNzMsIDg0LCAxMjgsIDc3LCAKLSAgICA3MywgMjEyLCA3NywgNzMsIDgzLCA4MiwgNjUsIDEyOCwgNzcsIDczLCA4MiwgNzMsIDY2LCA2NSwgNjUsIDgyLCA4NSwgCi0gICAgMTI4LCA3NywgNzMsIDgyLCA3MywgMTI4LCA3NywgNzMsIDgyLCA2OSwgNjgsIDEyOCwgNzcsIDczLCA4MCwgMTI4LCA3NywgCi0gICAgNzMsIDc4LCA4OSwgMTI4LCA3NywgNzMsIDc4LCA4NSwgODMsIDQ1LCA3OSwgODIsIDQ1LCA4MCwgNzYsIDg1LCAyMTEsIDc3LCAKLSAgICA3MywgNzgsIDg1LCA4MywgMTI4LCA3NywgNzMsIDc4LCA3MywgODMsIDg0LCA2OSwgODIsIDEyOCwgNzcsIDczLCA3OCwgNzMsIAotICAgIDc3LCA2NSwgMTI4LCA3NywgNzMsIDc4LCA3MywgNjgsIDczLCA4MywgNjcsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY2LCA4NSwgCi0gICAgODMsIDEyOCwgNzcsIDczLCA3NywgNjksIDEyOCwgNzcsIDczLCA3NywgMTI4LCA3NywgNzMsIDc2LCA3NiwgNzMsIDc5LCAKLSAgICA3OCwgMjExLCA3NywgNzMsIDc2LCA3NiwgNjksIDg0LCAxMjgsIDc3LCA3MywgNzYsIDc2LCAxOTcsIDc3LCA3MywgNzYsIAotICAgIDIwNCwgNzcsIDczLCA3NiwgNzUsIDIxNywgNzcsIDczLCA3NiwgMTI4LCA3NywgNzMsIDc1LCA4NSwgODIsIDc5LCA3OCwgCi0gICAgMTI4LCA3NywgNzMsIDc1LCA4MiwgNzksIDIwNiwgNzcsIDczLCA3NSwgODIsIDczLCAxMjgsIDc3LCA3MywgNzMsIDc4LCAKLSAgICAxMjgsIDc3LCA3MywgNzMsIDEyOCwgNzcsIDczLCAxOTksIDc3LCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MywgNjksIDg1LCAKLSAgICA3NywgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDgzLCA2NSwgCi0gICAgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIAotICAgIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgCi0gICAgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIAotICAgIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgwLCAKLSAgICA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgCi0gICAgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCAKLSAgICA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzcsIDczLCA2OSwgODUsIDIwNSwgNzcsIDczLCA2OSwgODAsIAotICAgIDEyOCwgNzcsIDczLCA2OSwgNjksIDEyOCwgNzcsIDczLCA2OSwgMTI4LCA3NywgNzMsIDY4LCA3NiwgNzMsIDc4LCAxOTcsIAotICAgIDc3LCA3MywgNjgsIDY4LCA3NiwgNjksIDQ1LCA4NywgNjksIDc2LCA4MywgMjAwLCA3NywgNzMsIDY4LCA2OCwgNzYsIDE5NywgCi0gICAgNzcsIDczLCAxOTYsIDc3LCA3MywgNjcsIDgyLCA3OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDc3LCA3MywgNjcsIDgyLCAKLSAgICA3OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDc3LCA3MywgNjcsIDgyLCAyMDcsIDc3LCA3MiwgOTAsIDEyOCwgNzcsIAotICAgIDcyLCAxMjgsIDc3LCA3MSwgODUsIDg4LCAxMjgsIDc3LCA3MSwgODUsIDg0LCAxMjgsIDc3LCA3MSwgODUsIDgyLCA4OCwgCi0gICAgMTI4LCA3NywgNzEsIDg1LCA4MiwgMTI4LCA3NywgNzEsIDg1LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgODgsIDEyOCwgCi0gICAgNzcsIDcxLCA4NSwgNzksIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCAxMjgsIDc3LCA3MSwgODUsIDEyOCwgNzcsIDcxLCAKLSAgICA3OSwgODgsIDEyOCwgNzcsIDcxLCA3OSwgODQsIDEyOCwgNzcsIDcxLCA3OSwgODAsIDEyOCwgNzcsIDcxLCA3OSwgMTI4LCAKLSAgICA3NywgNzEsIDIwNywgNzcsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MSwgNzMsIDY5LCAxMjgsIDc3LCA3MSwgNjksIAotICAgIDg4LCAxMjgsIDc3LCA3MSwgNjksIDgwLCAxMjgsIDc3LCA3MSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgODUsIDEyOCwgNzcsIAotICAgIDcxLCA2NiwgNzksIDc5LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCA3MCwgODUsIDc3LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCAKLSAgICAxMjgsIDc3LCA3MSwgNjYsIDczLCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDcxLCA2NiwgNjksIAotICAgIDc4LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgCi0gICAgODMsIDY1LCA4MSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgODMsIDY1LCAxMjgsIDc3LCA3MSwgNjUsIDg4LCAxMjgsIDc3LCAKLSAgICA3MSwgNjUsIDg0LCAxMjgsIDc3LCA3MSwgNjUsIDgwLCAxMjgsIDc3LCA3MSwgNjUsIDEyOCwgNzcsIDcxLCAxMjgsIDc3LCAKLSAgICA3MCwgNzksIDc4LCAxMjgsIDc3LCA3MCwgNzksIDIwNiwgNzcsIDcwLCA3OSwgMTI4LCA3NywgNzAsIDczLCA4OSwgNjUsIAotICAgIDgxLCAxMjgsIDc3LCA3MCwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDcwLCA2OSwgCi0gICAgODUsIDgxLCAxMjgsIDc3LCA3MCwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzcsIDcwLCA2NSwgNjUsIDEyOCwgNzcsIDY5LCAKLSAgICA5MCwgOTAsIDc5LCAxMjgsIDc3LCA2OSwgODgsIDEyOCwgNzcsIDY5LCA4NSwgMjEyLCA3NywgNjksIDg1LCA4MSwgMTI4LCAKLSAgICA3NywgNjksIDg1LCA3OCwgNzQsIDc5LCA3NywgNzgsIDY4LCA2OSwgODUsIDgxLCAxMjgsIDc3LCA2OSwgODUsIDc4LCAxMjgsIAotICAgIDc3LCA2OSwgODQsIDgyLCA3OSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNjksIDg0LCA4MiwgCi0gICAgNzMsIDY1LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA2OSwgODQsIDY5LCAyMTEsIDc3LCA2OSwgODQsIDc5LCA2NiwgNjksIDc2LCAKLSAgICA4NSwgODMsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDc1LCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3MSwgMTI4LCA3NywgNjksIAotICAgIDg0LCA2NSwgNzYsIDEyOCwgNzcsIDY5LCA4NCwgMTkzLCA3NywgNjksIDgzLCA4MywgNjksIDc4LCA3MywgNjUsIDIwNiwgCi0gICAgNzcsIDY5LCA4MywgNzksIDEyOCwgNzcsIDY5LCA4MywgNzMsIDEyOCwgNzcsIDY5LCA4MywgNzIsIDEyOCwgNzcsIDY5LCAKLSAgICA4MiwgNzUsIDcyLCA2NSwgMTI4LCA3NywgNjksIDgyLCA3NSwgNzIsIDE5MywgNzcsIDY5LCA4MiwgNzMsIDY4LCA3MywgNjUsIAotICAgIDc4LCA4MywgMTI4LCA3NywgNjksIDgyLCA3MywgMTI4LCA3NywgNjksIDgyLCA3MSwgNjksIDEyOCwgNzcsIDY5LCA4MiwgCi0gICAgNjcsIDg1LCA4MiwgODksIDEyOCwgNzcsIDY5LCA4MiwgNjcsIDg1LCA4MiwgMjE3LCA3NywgNjksIDc4LCA2OCwgODUsIDg0LCAKLSAgICAxMjgsIDc3LCA2OSwgNzgsIDEyOCwgNzcsIDY5LCA3NywgNzksIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCA4MiwgODMsIAotICAgIDcyLCA3MywgODAsIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDIxMCwgCi0gICAgNzcsIDY5LCA3NywgNDUsIDgxLCA3OSwgODAsIDcyLCAxMjgsIDc3LCA2OSwgNzcsIDEyOCwgNzcsIDY5LCAyMDUsIDc3LCAKLSAgICA2OSwgNzYsIDc5LCA2OCwgNzMsIDE5NSwgNzcsIDY5LCA3NiwgNzMsIDc1LCAxMjgsIDc3LCA2OSwgNzMsIDkwLCA3MywgCi0gICAgMTI4LCA3NywgNjksIDcxLCA2NSwgODQsIDc5LCA3OCwgMTI4LCA3NywgNjksIDcxLCA2NSwgODAsIDcyLCA3OSwgNzgsIDY5LCAKLSAgICAxMjgsIDc3LCA2OSwgNzEsIDY1LCA3NiwgNzMsIDEyOCwgNzcsIDY5LCA2OSwgODQsIDc5LCA4MiwgODUsIDEyOCwgNzcsIAotICAgIDY5LCA2OSwgODQsIDY5LCAyMDEsIDc3LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2OSwgNjksIDc3LCA4NSwgMTI4LCA3NywgCi0gICAgNjksIDY5LCA3NywgMTI4LCA3NywgNjksIDY5LCA2OSwgNjksIDEyOCwgNzcsIDY5LCA2OSwgMTI4LCA3NywgNjksIDY4LCAKLSAgICA3MywgODUsIDc3LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA4NSwgMjA1LCA3NywgNjksIDY4LCA3MywgNjcsIDczLCA3OCwgNjksIAotICAgIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNjksIDY1LCA4NCwgMTI4LCA3NywgNjksIDY1LCAyMTIsIAotICAgIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAxOTYsIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAxMjgsIDc3LCA2OSwgCi0gICAgNjUsIDgzLCA4NSwgODIsIDE5NywgNzcsIDY4LCA4NSwgMjA2LCA3NywgNjcsIDcyLCAyMTMsIDc3LCA2NywgNzIsIDY1LCAKLSAgICAyMDYsIDc3LCA2NiwgODUsIDc5LCA4MSwgMTI4LCA3NywgNjYsIDg1LCA3OSwgMTI4LCA3NywgNjYsIDg1LCA2OSwgMTI4LCAKLSAgICA3NywgNjYsIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc3LCA2NiwgODUsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDc5LCA3OSwgCi0gICAgMTI4LCA3NywgNjYsIDc5LCAxMjgsIDc3LCA2NiwgNzMsIDg0LCAxMjgsIDc3LCA2NiwgNzMsIDIxMiwgNzcsIDY2LCA3MywgCi0gICAgODIsIDczLCA2OSwgNjksIDc4LCAxMjgsIDc3LCA2NiwgNzMsIDEyOCwgNzcsIDY2LCA2OSwgODUsIDg4LCAxMjgsIDc3LCAKLSAgICA2NiwgNjksIDg1LCA4MiwgNzMsIDEyOCwgNzcsIDY2LCA2OSwgODUsIDc3LCAxMjgsIDc3LCA2NiwgNjksIDgyLCA2NSwgNjksIAotICAgIDEyOCwgNzcsIDY2LCA2OSwgNzgsIDEyOCwgNzcsIDY2LCA2OSwgNjksIDc1LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgCi0gICAgNjksIDY5LCAxMjgsIDc3LCA2NiwgNjksIDEyOCwgNzcsIDY2LCA2NSwgODEsIDEyOCwgNzcsIDY2LCA2NSwgNzgsIDg5LCAKLSAgICA3MywgMTI4LCA3NywgNjYsIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDY1LCA2NSwgNzUsIDY5LCA4NCwgCi0gICAgMTI4LCA3NywgNjYsIDY1LCA2NSwgMTI4LCA3NywgNjYsIDY1LCAxOTMsIDc3LCA2NiwgMTkzLCA3NywgNjYsIDUyLCAxMjgsIAotICAgIDc3LCA2NiwgNTEsIDEyOCwgNzcsIDY2LCA1MCwgMTI4LCA3NywgNjYsIDEyOCwgNzcsIDE5NCwgNzcsIDY1LCA4OSwgNjksIAotICAgIDIwMywgNzcsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzcsIDY1LCA4OSwgMTI4LCA3NywgNjUsIDg4LCA3MywgCi0gICAgNzcsIDY1LCAxMjgsIDc3LCA2NSwgODgsIDEyOCwgNzcsIDY1LCA4NCwgODQsIDc5LCA2NywgNzUsIDEyOCwgNzcsIDY1LCAKLSAgICA4NCwgODIsIDczLCA4OCwgMTI4LCA3NywgNjUsIDg0LCA2OSwgODIsIDczLCA2NSwgNzYsIDgzLCAxMjgsIDc3LCA2NSwgODQsIAotICAgIDEyOCwgNzcsIDY1LCA4MywgMjEzLCA3NywgNjUsIDgzLCA4MywgNzMsIDc4LCA3MSwgMTI4LCA3NywgNjUsIDgzLCA4MywgCi0gICAgNjUsIDcxLCA2OSwgMTI4LCA3NywgNjUsIDgzLCA3OSwgODIsIDE5MywgNzcsIDY1LCA4MywgNzUsIDEyOCwgNzcsIDY1LCAKLSAgICA4MywgNzIsIDcwLCA2NSwgNjUsIDg0LCAxMjgsIDc3LCA2NSwgODMsIDcyLCA1MCwgMTI4LCA3NywgNjUsIDgzLCA2NywgODUsIAotICAgIDc2LCA3MywgNzgsIDE5NywgNzcsIDY1LCA4MiwgODksIDEyOCwgNzcsIDY1LCA4MiwgODUsIDc1LCA4NSwgMTI4LCA3NywgCi0gICAgNjUsIDgyLCA4NCwgODksIDgyLCA3MywgMTkzLCA3NywgNjUsIDgyLCA4MiwgODksIDczLCA3OCwgMTk5LCA3NywgNjUsIDgyLCAKLSAgICA4MiwgNzMsIDY1LCA3MSwgMTk3LCA3NywgNjUsIDgyLCA3NSwgNjksIDgyLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTIsIAotICAgIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MSwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUwLCAxMjgsIDc3LCA2NSwgCi0gICAgODIsIDc1LCA0NSwgNDksIDEyOCwgNzcsIDY1LCA4MiwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDcyLCAxMjgsIDc3LCAKLSAgICA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCA0NSwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgCi0gICAgODIsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODMsIDczLCA4NCwgNjksIDEyOCwgNzcsIDY1LCAKLSAgICA4MiwgNjYsIDg1LCA4NCwgNjUsIDEyOCwgNzcsIDY1LCA4MiwgNjYsIDg1LCA4NCwgMTkzLCA3NywgNjUsIDgyLCAxMjgsIAotICAgIDc3LCA2NSwgODEsIDY1LCA3MCwgMTI4LCA3NywgNjUsIDgxLCAxMjgsIDc3LCA2NSwgODAsIDc2LCAxOTcsIDc3LCA2NSwgCi0gICAgODAsIDczLCA4MSwgMTI4LCA3NywgNjUsIDIwOCwgNzcsIDY1LCA3OSwgMTI4LCA3NywgNjUsIDc4LCA4MywgODksIDc5LCAKLSAgICA3OCwgMTI4LCA3NywgNjUsIDc4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA3NywgNjUsIDc4LCA3OCwgNjUsIDIxOCwgNzcsIAotICAgIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc3LCA2NSwgNzgsIDcxLCA2NSwgNzYsIDY1LCA3NywgMTI4LCA3NywgNjUsIDc4LCA2OCwgCi0gICAgNjUsIDczLCA3NiwgNzMsIDc4LCAxOTksIDc3LCA2NSwgNzgsIDY4LCA2NSwgNzMsIDE5NSwgNzcsIDY1LCA3OCwgNjcsIDcyLCAKLSAgICAyMTMsIDc3LCA2NSwgNzgsIDY1LCA2NywgNzYsIDY5LCA4MywgMTI4LCA3NywgNjUsIDc2LCA4NCwgNjksIDgzLCAxOTcsIAotICAgIDc3LCA2NSwgNzYsIDY5LCA2OSwgODIsIDczLCAxMjgsIDc3LCA2NSwgNzYsIDY5LCAxMjgsIDc3LCA2NSwgNzYsIDE5NywgCi0gICAgNzcsIDY1LCA3NiwgNjUsIDc1LCA3OSwgMjA2LCA3NywgNjUsIDc1LCA4MywgODUsIDgyLCA2NSwgMTI4LCA3NywgNjUsIDczLCAKLSAgICA5MCwgNjksIDEyOCwgNzcsIDY1LCA3MywgODksIDY1LCA3NywgNzksIDc1LCAxMjgsIDc3LCA2NSwgNzMsIDg0LCA2NSwgNzMsIAotICAgIDc1LCA3MiwgODUsIDEyOCwgNzcsIDY1LCA3MywgODIsIDg1LCAxMjgsIDc3LCA2NSwgNzMsIDc3LCA4NSwgNjUsIDc4LCAKLSAgICAxMjgsIDc3LCA2NSwgNzMsIDc3LCA2NSwgNzYsIDY1LCA3MywgMTI4LCA3NywgNjUsIDczLCA3NiwgNjYsIDc5LCAyMTYsIAotICAgIDc3LCA2NSwgNzMsIDc1LCA4NSwgODIsIDc5LCAxMjgsIDc3LCA2NSwgNzMsIDY4LCA2OSwgNzgsIDEyOCwgNzcsIDY1LCA3MiwgCi0gICAgNzQsIDc5LCA3OCwgMTk5LCA3NywgNjUsIDcyLCA3MiwgNjUsIDEyOCwgNzcsIDY1LCA3MiwgNjUsIDgwLCA4MiwgNjUsIDc4LCAKLSAgICA2NSwgMTI4LCA3NywgNjUsIDcyLCA2NSwgODAsIDY1LCA3NSwgNzIsIDEyOCwgNzcsIDY1LCA3MiwgNjUsIDY1LCA4MCwgODIsIAotICAgIDY1LCA2NSwgNzgsIDE5MywgNzcsIDY1LCA3MiwgMTI4LCA3NywgNjUsIDcxLCA3OCwgNzMsIDcwLCA4OSwgNzMsIDc4LCAKLSAgICAxOTksIDc3LCA2NSwgNjksIDgzLCA3MywgMTI4LCA3NywgNjUsIDY5LCA3OCwgODksIDczLCAxMjgsIDc3LCA2NSwgNjksIAotICAgIDc4LCA3NCwgNjksIDg0LCAxMjgsIDc3LCA2NSwgNjksIDc3LCA4NiwgNjksIDg1LCA4OCwgMTI4LCA3NywgNjUsIDY5LCA3NywgCi0gICAgNzUsIDgwLCA2OSwgNzgsIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDcxLCA2NiwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNjUsIDY5LCAKLSAgICA3NywgNjYsIDcxLCA2NiwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNjUsIDY5LCA3NywgNjYsIDY1LCAxMjgsIDc3LCA2NSwgNjksIAotICAgIDc3LCAxMjgsIDc3LCA2NSwgNjksIDc2LCA2OSwgNjksIDEyOCwgNzcsIDY1LCA2OSwgNzUsIDY5LCA4NSwgODAsIDEyOCwgCi0gICAgNzcsIDY1LCA2OCwgODksIDY1LCAxMjgsIDc3LCA2NSwgNjgsIDg1LCAxMjgsIDc3LCA2NSwgNjgsIDY4LCA2NSwgMjAwLCAKLSAgICA3NywgNjUsIDY4LCA2OCwgNjUsIDEyOCwgNzcsIDY1LCA2OCwgNjgsIDE5MywgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgNDUsIAotICAgIDcxLCA4MiwgNjUsIDg2LCA2OSwgMTI4LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCA0NSwgNjYsIDgyLCA2OSwgODYsIDY5LCAKLSAgICAxMjgsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNzcsIDY1LCA2NywgODIsIAotICAgIDc5LCA3OCwgMTI4LCA3NywgNjUsIDY3LCA4MiwgNzksIDIwNiwgNzcsIDY1LCA2NywgNzIsIDczLCA3OCwgNjksIDEyOCwgCi0gICAgNzcsIDY1LCA2NSwgNzMsIDEyOCwgNzcsIDY1LCA2NSwgMTI4LCA3NywgNjUsIDUwLCAxMjgsIDc3LCA0OCwgNTIsIDUyLCAKLSAgICAxMjgsIDc3LCA0OCwgNTIsIDUxLCAxMjgsIDc3LCA0OCwgNTIsIDUwLCAxMjgsIDc3LCA0OCwgNTIsIDQ5LCAxMjgsIDc3LCAKLSAgICA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA3NywgNDgsIDUyLCA0OCwgMTI4LCA3NywgNDgsIDUxLCA1NywgMTI4LCA3NywgNDgsIAotICAgIDUxLCA1NiwgMTI4LCA3NywgNDgsIDUxLCA1NSwgMTI4LCA3NywgNDgsIDUxLCA1NCwgMTI4LCA3NywgNDgsIDUxLCA1MywgCi0gICAgMTI4LCA3NywgNDgsIDUxLCA1MiwgMTI4LCA3NywgNDgsIDUxLCA1MSwgNjYsIDEyOCwgNzcsIDQ4LCA1MSwgNTEsIDY1LCAKLSAgICAxMjgsIDc3LCA0OCwgNTEsIDUxLCAxMjgsIDc3LCA0OCwgNTEsIDUwLCAxMjgsIDc3LCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCAKLSAgICA3NywgNDgsIDUxLCA0OSwgMTI4LCA3NywgNDgsIDUxLCA0OCwgMTI4LCA3NywgNDgsIDUwLCA1NywgMTI4LCA3NywgNDgsIAotICAgIDUwLCA1NiwgNjUsIDEyOCwgNzcsIDQ4LCA1MCwgNTYsIDEyOCwgNzcsIDQ4LCA1MCwgNTUsIDEyOCwgNzcsIDQ4LCA1MCwgCi0gICAgNTQsIDEyOCwgNzcsIDQ4LCA1MCwgNTMsIDEyOCwgNzcsIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDc3LCA0OCwgNTAsIDUyLCAKLSAgICAxMjgsIDc3LCA0OCwgNTAsIDUxLCAxMjgsIDc3LCA0OCwgNTAsIDUwLCA2NSwgMTI4LCA3NywgNDgsIDUwLCA1MCwgMTI4LCAKLSAgICA3NywgNDgsIDUwLCA0OSwgMTI4LCA3NywgNDgsIDUwLCA0OCwgMTI4LCA3NywgNDgsIDQ5LCA1NywgMTI4LCA3NywgNDgsIAotICAgIDQ5LCA1NiwgMTI4LCA3NywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgNTUsIDEyOCwgNzcsIDQ4LCA0OSwgCi0gICAgNTQsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDU0LCAxMjgsIDc3LCA0OCwgNDksIDUzLCA2NSwgMTI4LCA3NywgNDgsIDQ5LCAKLSAgICA1MywgMTI4LCA3NywgNDgsIDQ5LCA1MiwgMTI4LCA3NywgNDgsIDQ5LCA1MSwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNzIsIAotICAgIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDcxLCAxMjgsIDc3LCA0OCwgNDksIDUwLCA3MCwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgCi0gICAgNjksIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY4LCAxMjgsIDc3LCA0OCwgNDksIDUwLCA2NywgMTI4LCA3NywgNDgsIDQ5LCAKLSAgICA1MCwgNjYsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDUwLCAxMjgsIDc3LCA0OCwgNDksIAotICAgIDQ5LCAxMjgsIDc3LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA0OCwgMTI4LCA3NywgNDgsIDQ4LCA1NywgCi0gICAgMTI4LCA3NywgNDgsIDQ4LCA1NiwgMTI4LCA3NywgNDgsIDQ4LCA1NSwgMTI4LCA3NywgNDgsIDQ4LCA1NCwgMTI4LCA3NywgCi0gICAgNDgsIDQ4LCA1MywgMTI4LCA3NywgNDgsIDQ4LCA1MiwgMTI4LCA3NywgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgNzcsIDQ4LCAKLSAgICA0OCwgNTEsIDEyOCwgNzcsIDQ4LCA0OCwgNTAsIDEyOCwgNzcsIDQ4LCA0OCwgNDksIDY2LCAxMjgsIDc3LCA0OCwgNDgsIAotICAgIDQ5LCA2NSwgMTI4LCA3NywgNDgsIDQ4LCA0OSwgMTI4LCA3NiwgMjE4LCA3NiwgODksIDg5LCAxMjgsIDc2LCA4OSwgODgsIAotICAgIDEyOCwgNzYsIDg5LCA4NCwgMTI4LCA3NiwgODksIDgyLCA4OCwgMTI4LCA3NiwgODksIDgyLCAxMjgsIDc2LCA4OSwgODAsIAotICAgIDEyOCwgNzYsIDg5LCA2OCwgNzMsIDY1LCAyMDYsIDc2LCA4OSwgNjcsIDczLCA2NSwgMjA2LCA3NiwgODgsIDEyOCwgNzYsIAotICAgIDg3LCA3OSwgNzksIDEyOCwgNzYsIDg3LCA3OSwgMTI4LCA3NiwgODcsIDczLCA3MywgMTI4LCA3NiwgODcsIDczLCAxMjgsIAotICAgIDc2LCA4NywgNjksIDEyOCwgNzYsIDg3LCA2NSwgNjUsIDEyOCwgNzYsIDg3LCA2NSwgMTI4LCA3NiwgODUsIDg4LCAxMjgsIAotICAgIDc2LCA4NSwgODQsIDEyOCwgNzYsIDg1LCA4MiwgODgsIDEyOCwgNzYsIDg1LCA4MCwgMTI4LCA3NiwgODUsIDc5LCA4OCwgCi0gICAgMTI4LCA3NiwgODUsIDc5LCA4NCwgMTI4LCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3NiwgODUsIDc5LCAxMjgsIDc2LCA4NSwgCi0gICAgNzgsIDcxLCA4MywgNzMsIDEyOCwgNzYsIDg1LCA3OCwgNjUsIDg0LCAxOTcsIDc2LCA4NSwgMjA1LCA3NiwgODUsIDc2LCAKLSAgICAxMjgsIDc2LCA4NSwgNzMsIDgzLCAxMjgsIDc2LCA4NSwgNzIsIDg1LCA4MiwgMTI4LCA3NiwgODUsIDcyLCAxMjgsIDc2LCAKLSAgICA4NSwgNzEsIDcxLCA2NSwgNzEsIDY5LCAxMjgsIDc2LCA4NSwgNzEsIDY1LCA3NiwgMTI4LCA3NiwgODUsIDcxLCA2NSwgCi0gICAgMjA0LCA3NiwgODUsIDY5LCAxMjgsIDc2LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NiwgODUsIDUxLCAxMjgsIDc2LCA4NSwgCi0gICAgNTAsIDEyOCwgNzYsIDg1LCAxNzgsIDc2LCA3OSwgOTAsIDY5LCA3OCwgNzEsIDY5LCAxMjgsIDc2LCA3OSwgOTAsIDY5LCAKLSAgICA3OCwgNzEsIDE5NywgNzYsIDc5LCA4OCwgMTI4LCA3NiwgNzksIDg3LCA2OSwgODIsIDY5LCAxOTYsIDc2LCA3OSwgODcsIAotICAgIDY5LCAyMTAsIDc2LCA3OSwgODcsIDQ1LCAxODUsIDc2LCA3OSwgODYsIDE5NywgNzYsIDc5LCA4NSwgODIsIDY5LCAxMjgsIAotICAgIDc2LCA3OSwgODUsIDY4LCA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCA4MiwgMTI4LCA3NiwgNzksIDg1LCA2OCwgNzYsIDIxNywgCi0gICAgNzYsIDc5LCA4NCwgODUsIDgzLCAxMjgsIDc2LCA3OSwgODQsIDEyOCwgNzYsIDc5LCA4MiwgODIsIDg5LCAxMjgsIDc2LCAKLSAgICA3OSwgODIsIDgyLCA2NSwgNzMsIDc4LCA2OSwgMTI4LCA3NiwgNzksIDgxLCAxMjgsIDc2LCA3OSwgODAsIDEyOCwgNzYsIAotICAgIDc5LCA3OSwgODQsIDEyOCwgNzYsIDc5LCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3OSwgNzgsIDEyOCwgNzYsIDc5LCA3OSwgCi0gICAgMjAzLCA3NiwgNzksIDc5LCAxMjgsIDc2LCA3OSwgNzgsIDgzLCA4NSwgNzcsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDY1LCAKLSAgICAxMjgsIDc2LCA3OSwgNzgsIDcxLCAxOTMsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIAotICAgIDg5LCA4MiwgMTI4LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA4MywgNzksIDIwNCwgCi0gICAgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzksIDgzLCAyMTEsIDc2LCA3OSwgNzgsIAotICAgIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDc3LCA2NSwgNjgsIDIxMCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCAKLSAgICA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzIsIDY1LCA3MSwgNjUsIDc2LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgCi0gICAgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDY1LCAyMTAsIDc2LCA3OSwgNzcsIDc3LCA2NSwgNjksIDEyOCwgNzYsIDc5LCAKLSAgICA3NywgMTI4LCA3NiwgNzksIDIwNSwgNzYsIDc5LCA3NiwgNzYsIDczLCA4MCwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzYsIAotICAgIDc2LCAxMjgsIDc2LCA3OSwgNzEsIDIxMCwgNzYsIDc5LCA3MSwgNzksIDg0LCA4OSwgODAsIDE5NywgNzYsIDc5LCA3MSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDIwNSwgNzYsIDc5LCA3MSwgMTI4LCA3NiwgNzksIDY4LCA2OSwgODMsIDg0LCA3OSwgNzgsIDY5LCAKLSAgICAxMjgsIDc2LCA3OSwgNjcsIDc5LCA3NywgNzksIDg0LCA3MywgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDIwMywgNzYsIAotICAgIDc5LCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc2LCA3OSwgCi0gICAgNjUsIDEyOCwgNzYsIDc4LCAxMjgsIDc2LCA3NywgMTI4LCA3NiwgNzYsIDc2LCA2NSwgMTI4LCA3NiwgNzQsIDg1LCA2OCwgCi0gICAgNzMsIDc0LCA2OSwgMTI4LCA3NiwgNzQsIDY5LCAxMjgsIDc2LCA3NCwgMTI4LCA3NiwgNzMsIDg4LCAxMjgsIDc2LCA3MywgCi0gICAgODcsIDc4LCAxMjgsIDc2LCA3MywgODYsIDgyLCAxOTcsIDc2LCA3MywgODQsIDg0LCA3NiwgMTk3LCA3NiwgNzMsIDg0LCAKLSAgICA4NCwgNjksIDIxMCwgNzYsIDczLCA4NCwgODIsIDE5MywgNzYsIDczLCA4NCwgMTI4LCA3NiwgNzMsIDgzLCAyMTMsIDc2LCAKLSAgICA3MywgODIsIDE5MywgNzYsIDczLCA4MSwgODUsIDczLCAxOTYsIDc2LCA3MywgODEsIDEyOCwgNzYsIDczLCA4MCwgODMsIAotICAgIDg0LCA3MywgNjcsIDc1LCAxMjgsIDc2LCA3MywgNzgsIDc1LCA3MywgNzgsIDE5OSwgNzYsIDczLCA3OCwgMjAzLCA3NiwgCi0gICAgNzMsIDc4LCA3MSwgODMsIDY1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA4MywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgMjExLCAKLSAgICA3NiwgNzMsIDc4LCA2OSwgNDUsIDU3LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTUsIDEyOCwgNzYsIDczLCA3OCwgNjksIAotICAgIDQ1LCA1MSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDQ5LCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTIsIDEyOCwgCi0gICAgNzYsIDczLCA3NywgNzcsIDg1LCA1MCwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzYsIDczLCA3NywgNzcsIAotICAgIDIxMywgNzYsIDczLCA3NywgNzMsIDg0LCA2OSwgMTk2LCA3NiwgNzMsIDc3LCA3MywgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA3NiwgNzMsIDc3LCA3MywgODQsIDEyOCwgNzYsIDczLCA3NywgNjksIDEyOCwgNzYsIDczLCA3NiwgODksIDEyOCwgCi0gICAgNzYsIDczLCA3NiwgNzMsIDg0LCA3MiwgMTI4LCA3NiwgNzMsIDc2LCAxMjgsIDc2LCA3MywgNzMsIDEyOCwgNzYsIDczLCAKLSAgICA3MSwgNzIsIDg0LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDcyLCA3OSwgODUsIDgzLCA2OSwgCi0gICAgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzYsIDczLCA3MCwgNjksIDEyOCwgNzYsIDczLCA2OSwgODgsIDEyOCwgCi0gICAgNzYsIDczLCA2OSwgODQsIDEyOCwgNzYsIDczLCA2OSwgODAsIDEyOCwgNzYsIDczLCA2OSwgNjksIDEyOCwgNzYsIDczLCAKLSAgICA2OSwgMTI4LCA3NiwgNzMsIDY4LCAxMjgsIDc2LCA3MywgNjYsIDgyLCA2NSwgMTI4LCA3NiwgNzMsIDY2LCA2OSwgODIsIAotICAgIDg0LCA4OSwgMTI4LCA3NiwgNzMsIDY1LCA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgNzYsIDcyLCA3MywgNzMsIDEyOCwgCi0gICAgNzYsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NiwgNzIsIDY1LCAxOTksIDc2LCA3MiwgNjUsIDY1LCAKLSAgICAxMjgsIDc2LCA3MiwgMTI4LCA3NiwgNjksIDkwLCA3MiwgMTI4LCA3NiwgNjksIDg4LCAxMjgsIDc2LCA2OSwgODYsIDY5LCAKLSAgICAyMDQsIDc2LCA2OSwgODUsIDc3LCAxMjgsIDc2LCA2OSwgODUsIDY1LCA2OSwgODAsIDEyOCwgNzYsIDY5LCA4NSwgNjUsIAotICAgIDY5LCA3NywgMTI4LCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCA4MywgMTI4LCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCAKLSAgICAxMjgsIDc2LCA2OSwgMjEyLCA3NiwgNjksIDgzLCA4MywgNjksIDIxMCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgNzIsIAotICAgIDY1LCA3OCwgMTI4LCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzYsIDY5LCA4MCwgMTI4LCA3NiwgCi0gICAgNjksIDc5LCA4MCwgNjUsIDgyLCA2OCwgMTI4LCA3NiwgNjksIDc5LCAxMjgsIDc2LCA2OSwgNzgsIDg0LCA3MywgNjcsIDg1LCAKLSAgICA3NiwgNjUsIDIxMCwgNzYsIDY5LCA3OCwgNzMsIDgzLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDY5LCA3OCwgNjksIAotICAgIDgyLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgMjAwLCA3NiwgNjksIDc4LCA3MSwgNjUsIDEyOCwgNzYsIDY5LCA3OCwgCi0gICAgNzEsIDE5MywgNzYsIDY5LCA3NywgNzksIDc4LCAxMjgsIDc2LCA2OSwgNzcsIDc5LCA3MywgMTI4LCA3NiwgNjksIDc2LCAKLSAgICA2OSwgODQsIDEyOCwgNzYsIDY5LCA3NiwgNjksIDIxMiwgNzYsIDY5LCAyMDMsIDc2LCA2OSwgNzMsIDc3LCA3NywgNjUsIAotICAgIDEyOCwgNzYsIDY5LCA3MywgNzcsIDc3LCAxOTMsIDc2LCA2OSwgNzEsIDgzLCAxMjgsIDc2LCA2OSwgNzEsIDczLCA3OSwgCi0gICAgNzgsIDEyOCwgNzYsIDY5LCA3MSwgNjksIDg0LCA3OSwgMjExLCA3NiwgNjksIDcxLCAxMjgsIDc2LCA2OSwgNzAsIDg0LCAKLSAgICA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4NCwgNzksIDQ1LCA4MiwgNzMsIDcxLCA3MiwgCi0gICAgMjEyLCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA4NCwgNjksIDIwNSwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgNzMsIDY4LCAKLSAgICAxOTcsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODAsIAotICAgIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCA2OCwgNjksIDE5NiwgCi0gICAgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIAotICAgIDc4LCAxOTksIDc2LCA2OSwgNzAsIDg0LCAxMjgsIDc2LCA2OSwgNjksIDgyLCA2NSwgNjksIDg3LCA2NSwgMTI4LCA3NiwgCi0gICAgNjksIDY5LCA3NSwgMTI4LCA3NiwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzYsIDY5LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCAKLSAgICA3NiwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA3MCwgMTI4LCA3NiwgNjksIDY1LCAxOTgsIAotICAgIDc2LCA2OSwgNjUsIDY4LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA2NSwgNjgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCAKLSAgICAxOTYsIDc2LCA2OCwgNjUsIDc4LCAxMjgsIDc2LCA2OCwgNTAsIDEyOCwgNzYsIDY3LCAyMDEsIDc2LCA2NywgMTk3LCA3NiwgCi0gICAgNjUsIDkwLCAyMTcsIDc2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc2LCA2NSwgODgsIDEyOCwgNzYsIDY1LCAKLSAgICA4NywgMTI4LCA3NiwgNjUsIDIxNSwgNzYsIDY1LCA4NSwgNzYsIDY1LCAxMjgsIDc2LCA2NSwgODUsIDc1LCA2NSwgMjE4LCAKLSAgICA3NiwgNjUsIDg0LCA3MywgNzgsIDY1LCA4NCwgMTk3LCA3NiwgNjUsIDg0LCA3MywgNzUsIDEyOCwgNzYsIDY1LCA4NCwgNjksIAotICAgIDgyLCA2NSwgMjA0LCA3NiwgNjUsIDg0LCAxOTcsIDc2LCA2NSwgODMsIDIxMiwgNzYsIDY1LCA4MiwgODksIDc4LCA3MSwgCi0gICAgNjksIDY1LCAyMDQsIDc2LCA2NSwgODIsIDcxLCA2OSwgMjEwLCA3NiwgNjUsIDgyLCA3MSwgNjksIDEyOCwgNzYsIDY1LCAKLSAgICA4MiwgNzEsIDE5NywgNzYsIDY1LCA4MSwgMTI4LCA3NiwgNjUsIDgwLCA2NSwgODEsIDEyOCwgNzYsIDY1LCA4MCwgMTI4LCAKLSAgICA3NiwgNjUsIDIwNywgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgNzYsIDY1LCA3OCwgNzEsIDg1LCA2NSwgNzEsIAotICAgIDE5NywgNzYsIDY1LCA3OCwgNjksIDgzLCAxMjgsIDc2LCA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NywgCi0gICAgNjksIDY4LCAxMjgsIDc2LCA2NSwgNzcsIDY5LCAxOTYsIDc2LCA2NSwgNzcsIDY5LCAxMjgsIDc2LCA2NSwgNzcsIDE5NywgCi0gICAgNzYsIDY1LCA3NywgNjgsIDY1LCAxMjgsIDc2LCA2NSwgNzcsIDY4LCAxMjgsIDc2LCA2NSwgNzcsIDY2LCA2OCwgMTkzLCAKLSAgICA3NiwgNjUsIDc3LCA2NSwgNjgsIDcyLCAxMjgsIDc2LCA2NSwgNzYsIDEyOCwgNzYsIDY1LCAyMDQsIDc2LCA2NSwgNzUsIAotICAgIDc1LCA3MiwgNjUsIDc4LCA3MSwgODksIDY1LCA3OSwgMTI4LCA3NiwgNjUsIDc0LCA2NSwgNzgsIDg5LCA2NSwgNzYsIDY1LCAKLSAgICA3OCwgMTI4LCA3NiwgNjUsIDIwMSwgNzYsIDY1LCA3MiwgODMsIDcyLCA4NSwgMTI4LCA3NiwgNjUsIDcxLCA4NSwgODMsIAorICAgIDc4LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA3OCwgNzcsIDEyOCwgNzgsIDc2LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA3NiwgCisgICAgNDgsIDQ5LCA1NywgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCA2NSwgMTI4LCAKKyAgICA3OCwgNzYsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MywgCisgICAgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCAKKyAgICA1MCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNDksIDEyOCwgNzgsIDc2LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIAorICAgIDQ4LCA1NywgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA3NiwgCisgICAgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MywgMTI4LCAKKyAgICA3OCwgNzYsIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MCwgCisgICAgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNDksIDEyOCwgNzgsIDc2LCAxMjgsIDc4LCA3NSwgNzksIDc3LCAxMjgsIDc4LCA3NSwgCisgICAgMjA3LCA3OCwgNzUsIDczLCA3OCwgNjgsIDczLCAxMjgsIDc4LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCAKKyAgICA3NCwgODksIDg4LCAxMjgsIDc4LCA3NCwgODksIDg0LCAxMjgsIDc4LCA3NCwgODksIDgyLCA4OCwgMTI4LCA3OCwgNzQsIAorICAgIDg5LCA4MiwgMTI4LCA3OCwgNzQsIDg5LCA4MCwgMTI4LCA3OCwgNzQsIDg5LCAxMjgsIDc4LCA3NCwgODUsIDg4LCAxMjgsIAorICAgIDc4LCA3NCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA4MiwgMTI4LCA3OCwgNzQsIDg1LCA4MSwgNjUsIDEyOCwgCisgICAgNzgsIDc0LCA4NSwgODAsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3NCwgODUsIDc5LCAxMjgsIDc4LCAKKyAgICA3NCwgODUsIDY5LCA4MSwgMTI4LCA3OCwgNzQsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDc0LCA4NSwgMTI4LCA3OCwgNzQsIAorICAgIDc5LCA4OCwgMTI4LCA3OCwgNzQsIDc5LCA4NCwgMTI4LCA3OCwgNzQsIDc5LCA4MCwgMTI4LCA3OCwgNzQsIDc5LCA3OSwgCisgICAgMTI4LCA3OCwgNzQsIDc5LCAxMjgsIDc4LCA3NCwgNzMsIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDg0LCAxMjgsIDc4LCA3NCwgCisgICAgNzMsIDgwLCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzgsIDc0LCAKKyAgICA3MywgNjksIDgwLCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDczLCA2OSwgMTI4LCA3OCwgNzQsIAorICAgIDczLCAxMjgsIDc4LCA3NCwgMjAxLCA3OCwgNzQsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDg0LCAxMjgsIAorICAgIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc4LCA2NSwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgCisgICAgNzQsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDE5NywgNzgsIDc0LCAKKyAgICA2OSwgMTI4LCA3OCwgNzQsIDY1LCA4MSwgMTI4LCA3OCwgNzQsIDY1LCA4MCwgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIAorICAgIDc2LCA3MywgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDc0LCA2NSwgNjUsIDEyOCwgNzgsIDczLCA4OCwgCisgICAgMTI4LCA3OCwgNzMsIDg0LCA4MiwgNjksIDEyOCwgNzgsIDczLCA4MywgNjUsIDcxLCAxMjgsIDc4LCA3MywgODIsIDg1LCAKKyAgICA3MSwgODUsIDEyOCwgNzgsIDczLCA4MCwgMTI4LCA3OCwgNzMsIDc4LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA3OCwgNjksIAorICAgIDg0LCA4OSwgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDIxNywgNzgsIDczLCA3OCwgNjksIDg0LCA2OSwgNjksIDc4LCAKKyAgICAxMjgsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIDY5LCAyMDYsIDc4LCA3MywgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIAorICAgIDg0LCA4OSwgMTI4LCA3OCwgNzMsIDc4LCAxOTcsIDc4LCA3MywgNzgsIDY4LCA2NSwgNTAsIDEyOCwgNzgsIDczLCA3OCwgCisgICAgNjgsIDY1LCAxNzgsIDc4LCA3MywgNzcsIDEyOCwgNzgsIDczLCAyMDUsIDc4LCA3MywgNzUsIDcyLCA2NSwgNzIsIDczLCAKKyAgICA4NCwgMTI4LCA3OCwgNzMsIDc1LCA2NSwgNzIsIDczLCA4NCwgMTI4LCA3OCwgNzMsIDc1LCA2NSwgMTI4LCA3OCwgNzMsIAorICAgIDcyLCA4MywgNzIsIDg2LCA2NSwgODMsIDY1LCAxMjgsIDc4LCA3MywgNzEsIDczLCA2OCwgNjUsIDc3LCA3MywgNzgsIDEyOCwgCisgICAgNzgsIDczLCA3MSwgNzMsIDY4LCA2NSwgNjksIDgzLCA3MiwgMTI4LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzgsIDczLCAKKyAgICA3MSwgNzIsIDIxMiwgNzgsIDczLCA3MSwgNzEsIDY1LCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA3OCwgNzMsIDY5LCA4OCwgCisgICAgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3MywgNjksIDg1LCAKKyAgICA3OCwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgzLCA3MywgCisgICAgNzksIDgzLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3OCwgNzMsIDY5LCAKKyAgICA4NSwgNzgsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODAsIDY1LCA3OCwgCisgICAgODMsIDczLCA3OSwgODMsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCAKKyAgICA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgCisgICAgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIAorICAgIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCAyMDYsIDc4LCA3MywgNjksIDgwLCAxMjgsIDc4LCA3MywgNjksIDEyOCwgNzgsIAorICAgIDczLCA2NiwgMTI4LCA3OCwgNzMsIDY1LCAxMjgsIDc4LCA3MywgNTAsIDEyOCwgNzgsIDcyLCA4NSwgNjksIDEyOCwgNzgsIAorICAgIDcyLCA3NCwgNjUsIDEyOCwgNzgsIDcyLCAxMjgsIDc4LCA3MSwgODksIDY5LCAxMjgsIDc4LCA3MSwgODYsIDY5LCAxMjgsIAorICAgIDc4LCA3MSwgODUsIDg1LCAxMjgsIDc4LCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODQsIDEyOCwgCisgICAgNzgsIDcxLCA4NSwgNzksIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIAorICAgIDEyOCwgNzgsIDcxLCA3OSwgODgsIDEyOCwgNzgsIDcxLCA3OSwgODUsIDEyOCwgNzgsIDcxLCA3OSwgMjEzLCA3OCwgNzEsIAorICAgIDc5LCA4NCwgMTI4LCA3OCwgNzEsIDc5LCA4MSwgMTI4LCA3OCwgNzEsIDc5LCA4MCwgMTI4LCA3OCwgNzEsIDc5LCA3OCwgCisgICAgMTI4LCA3OCwgNzEsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDc5LCA2OSwgNzIsIDEyOCwgNzgsIDcxLCA3OSwgNjksIDIwMCwgCisgICAgNzgsIDcxLCAyMDcsIDc4LCA3MSwgNzUsIDg5LCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3NSwgODcsIDY1LCA2OSwgNzgsIAorICAgIDEyOCwgNzgsIDcxLCA3NSwgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA3OCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgCisgICAgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDY5LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIAorICAgIDE5NywgNzgsIDcxLCA3NSwgNzMsIDc4LCA2OCwgMjAxLCA3OCwgNzEsIDc1LCA3MywgNjksIDY5LCAxMjgsIDc4LCA3MSwgCisgICAgNzUsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA4MiwgNzMsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCAKKyAgICA2NSwgNjksIDgxLCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODEsIAorICAgIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCA2NSwgNzcsIDczLCAxMjgsIDc4LCA3MSwgCisgICAgNzUsIDY1LCAxMjgsIDc4LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIDczLCA2OSwgODAsIDEyOCwgNzgsIDcxLCAKKyAgICA3MywgNjksIDEyOCwgNzgsIDcxLCA3MiwgNjUsIDEyOCwgNzgsIDcxLCA3MSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIAorICAgIDcxLCA3MSwgODUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgCisgICAgODEsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCAyMDksIDc4LCA3MSwgNzEsIDg1LCA3OSwgNzgsIDEyOCwgNzgsIDcxLCAKKyAgICA3MSwgODUsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY5LCA2OSwgODQsIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgODMsIDcyLCA2NSwgMTk3LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCAKKyAgICAyMDYsIDc4LCA3MSwgNzEsIDg1LCAxMjgsIDc4LCA3MSwgNzEsIDc5LCA3OSwgMTI4LCA3OCwgNzEsIDcxLCA3OSwgMTI4LCAKKyAgICA3OCwgNzEsIDcxLCA3MywgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIAorICAgIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgMjEzLCA3OCwgCisgICAgNzEsIDcxLCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIDY5LCAKKyAgICA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjUsIAorICAgIDgwLCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIDc3LCAKKyAgICAxMjgsIDc4LCA3MSwgNzEsIDEyOCwgNzgsIDcxLCA2OSwgODgsIDEyOCwgNzgsIDcxLCA2OSwgODUsIDgyLCA2OSwgODUsIAorICAgIDg0LCAxMjgsIDc4LCA3MSwgNjksIDgwLCAxMjgsIDc4LCA3MSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNjksIDY5LCAxMjgsIAorICAgIDc4LCA3MSwgNjksIDY1LCA2OCwgNjUsIDc2LCAxMjgsIDc4LCA3MSwgNjUsIDg4LCAxMjgsIDc4LCA3MSwgNjUsIDg1LCAKKyAgICAxMjgsIDc4LCA3MSwgNjUsIDg0LCAxMjgsIDc4LCA3MSwgNjUsIDIxMSwgNzgsIDcxLCA2NSwgODEsIDEyOCwgNzgsIDcxLCAKKyAgICA2NSwgODAsIDEyOCwgNzgsIDcxLCA2NSwgNzgsIDcxLCA4NSwgMTI4LCA3OCwgNzEsIDY1LCA3OCwgMTI4LCA3OCwgNzEsIAorICAgIDY1LCA3MywgMTI4LCA3OCwgNzEsIDY1LCA3MiwgMTI4LCA3OCwgNzEsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDcxLCAxOTMsIAorICAgIDc4LCA3MCwgMTI4LCA3OCwgNjksIDg4LCAyMTIsIDc4LCA2OSwgODgsIDEyOCwgNzgsIDY5LCA4NywgODMsIDgwLCA2NSwgCisgICAgODAsIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg3LCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OCwgNjksIDg3LCAxMjgsIDc4LCAKKyAgICA2OSwgODUsIDg0LCA4MiwgNjUsIDIwNCwgNzgsIDY5LCA4NSwgODQsIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg0LCAxMjgsIAorICAgIDc4LCA2OSwgMjEyLCA3OCwgNjksIDgzLCA4NCwgNjksIDE5NiwgNzgsIDY5LCA4MSwgODUsIDY4LCA2NSwgNjUsIDEyOCwgCisgICAgNzgsIDY5LCA4MCwgODQsIDg1LCA3OCwgNjksIDEyOCwgNzgsIDY5LCA4MCwgMTI4LCA3OCwgNjksIDc5LCAxMjgsIDc4LCAKKyAgICA2OSwgMjA3LCA3OCwgNjksIDc4LCA2NSwgNzgsIDc5LCAxMjgsIDc4LCA2OSwgNzgsIDEyOCwgNzgsIDY5LCA3NiwgMTI4LCAKKyAgICA3OCwgNjksIDczLCA4NCwgNzIsIDY5LCAyMTAsIDc4LCA2OSwgNzEsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA2OSwgNzEsIAorICAgIDY1LCA4NCwgNjksIDE5NiwgNzgsIDY5LCA2NywgNzUsIDg0LCA3MywgNjksIDEyOCwgNzgsIDY5LCA2NiwgNjksIDc4LCA4MywgCisgICAgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDc4LCA2OCwgODUsIDg4LCAxMjgsIDc4LCA2OCwgODUsIDg0LCAxMjgsIDc4LCAKKyAgICA2OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgMTI4LCA3OCwgNjgsIDg1LCA4MCwgMTI4LCA3OCwgNjgsIAorICAgIDg1LCA3OCwgMTI4LCA3OCwgNjgsIDIxMywgNzgsIDY4LCA3OSwgODgsIDEyOCwgNzgsIDY4LCA3OSwgODQsIDEyOCwgNzgsIAorICAgIDY4LCA3OSwgODAsIDEyOCwgNzgsIDY4LCA3OSwgNzksIDEyOCwgNzgsIDY4LCA3OSwgNzgsIDEyOCwgNzgsIDY4LCA3OSwgCisgICAgNzcsIDY2LCA4NSwgMTI4LCA3OCwgNjgsIDc5LCA3NiwgMTk3LCA3OCwgNjgsIDczLCA4OCwgMTI4LCA3OCwgNjgsIDczLCAKKyAgICA4NCwgMTI4LCA3OCwgNjgsIDczLCA4MSwgMTI4LCA3OCwgNjgsIDczLCA4MCwgMTI4LCA3OCwgNjgsIDczLCA2OSwgODgsIAorICAgIDEyOCwgNzgsIDY4LCA3MywgNjksIDEyOCwgNzgsIDY4LCA3MywgNjgsIDY1LCAxMjgsIDc4LCA2OCwgNzMsIDY1LCA4MSwgCisgICAgMTI4LCA3OCwgNjgsIDY5LCA4OCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDg0LCAKKyAgICAxMjgsIDc4LCA2OCwgNjksIDg1LCA2NSwgNjksIDgyLCA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgODAsIDEyOCwgNzgsIAorICAgIDY4LCA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgMTI4LCA3OCwgNjgsIDY1LCA4OCwgMTI4LCA3OCwgNjgsIDY1LCA4NCwgCisgICAgMTI4LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA3OCwgNjgsIDY1LCA3NywgMTI4LCA3OCwgNjgsIDY1LCA2NSwgNzgsIDcxLCAKKyAgICA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA2OCwgNjUsIDY1LCAxMjgsIDc4LCA2OCwgNjUsIDE5MywgNzgsIAorICAgIDY2LCA4OSwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODQsIDEyOCwgNzgsIDY2LCA4OSwgODIsIDg4LCAxMjgsIDc4LCA2NiwgCisgICAgODksIDgyLCAxMjgsIDc4LCA2NiwgODksIDgwLCAxMjgsIDc4LCA2NiwgODksIDEyOCwgNzgsIDY2LCA4NSwgODgsIDEyOCwgCisgICAgNzgsIDY2LCA4NSwgODQsIDEyOCwgNzgsIDY2LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA2NiwgODUsIDgyLCAxMjgsIDc4LCAKKyAgICA2NiwgODUsIDgwLCAxMjgsIDc4LCA2NiwgODUsIDEyOCwgNzgsIDY2LCA3OSwgODgsIDEyOCwgNzgsIDY2LCA3OSwgODQsIAorICAgIDEyOCwgNzgsIDY2LCA3OSwgODAsIDEyOCwgNzgsIDY2LCA3OSwgMTI4LCA3OCwgNjYsIDczLCA4OCwgMTI4LCA3OCwgNjYsIAorICAgIDczLCA4NCwgMTI4LCA3OCwgNjYsIDczLCA4MCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgODgsIDEyOCwgNzgsIDY2LCA3MywgCisgICAgNjksIDgwLCAxMjgsIDc4LCA2NiwgNzMsIDY5LCAxMjgsIDc4LCA2NiwgNzMsIDEyOCwgNzgsIDY2LCA3MiwgMTI4LCA3OCwgCisgICAgNjYsIDY1LCA4OCwgMTI4LCA3OCwgNjYsIDY1LCA4NCwgMTI4LCA3OCwgNjYsIDY1LCA4MCwgMTI4LCA3OCwgNjYsIDY1LCAKKyAgICAxMjgsIDc4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc4LCA2NSwgODksIDEyOCwgNzgsIDY1LCA4OCwgNzMsIAorICAgIDY1LCAyMDYsIDc4LCA2NSwgODgsIDEyOCwgNzgsIDY1LCA4NSwgODQsIDcyLCA4MywgMTI4LCA3OCwgNjUsIDg1LCA2OCwgCisgICAgNzMsIDIxOCwgNzgsIDY1LCA4NCwgODUsIDgyLCA2NSwgMjA0LCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCAKKyAgICA3OCwgNjUsIDgzLCA3NSwgNjUsIDgwLCAyMDEsIDc4LCA2NSwgODMsIDcyLCA3MywgMTI4LCA3OCwgNjUsIDgzLCA2NSwgNzYsIAorICAgIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc4LCA2NSwgODMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA3OCwgNjUsIDgyLCA4MiwgNzksIDIxNSwgNzgsIDY1LCA4MiwgMTI4LCA3OCwgNjUsIDgxLCAxMjgsIDc4LCAKKyAgICA2NSwgNzksIDIxMSwgNzgsIDY1LCA3OCwgODMsIDY1LCA3OCwgNjUsIDgxLCAxMjgsIDc4LCA2NSwgNzgsIDcxLCA3NywgNzksIAorICAgIDc4LCA4NCwgNzIsIDc5LCAxMjgsIDc4LCA2NSwgNzgsIDY4LCAxMjgsIDc4LCA2NSwgNzgsIDY1LCAxMjgsIDc4LCA2NSwgCisgICAgNzcsIDY5LCAxMjgsIDc4LCA2NSwgNzcsIDE5NywgNzgsIDY1LCA3NywgNTAsIDEyOCwgNzgsIDY1LCA3NywgMTI4LCA3OCwgCisgICAgNjUsIDc1LCAxMjgsIDc4LCA2NSwgNzMsIDgyLCAxOTMsIDc4LCA2NSwgNzMsIDIwNCwgNzgsIDY1LCA3MSwgODIsIDIwMSwgCisgICAgNzgsIDY1LCA3MSwgNjUsIDgyLCAxMjgsIDc4LCA2NSwgNzEsIDY1LCAxMjgsIDc4LCA2NSwgNzEsIDE5MywgNzgsIDY1LCAKKyAgICA3MSwgMTI4LCA3OCwgNjUsIDE5OSwgNzgsIDY1LCA2OSwgMTI4LCA3OCwgNjUsIDY2LCA3NiwgNjUsIDEyOCwgNzgsIDY1LCAKKyAgICA2NSwgODMsIDczLCA3NSwgODksIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgNzUsIDgzLCA3MywgNzUsIDg5LCA2NSwgCisgICAgODksIDY1LCAxMjgsIDc4LCA2NSwgNjUsIDczLCAxMjgsIDc4LCA2NSwgMTkzLCA3OCwgNjUsIDUwLCAxMjgsIDc4LCA2NSwgCisgICAgNDUsIDUwLCAxMjgsIDc4LCA0OCwgNTIsIDUwLCAxMjgsIDc4LCA0OCwgNTIsIDQ5LCAxMjgsIDc4LCA0OCwgNTIsIDQ4LCAKKyAgICAxMjgsIDc4LCA0OCwgNTEsIDU3LCAxMjgsIDc4LCA0OCwgNTEsIDU2LCAxMjgsIDc4LCA0OCwgNTEsIDU1LCA2NSwgMTI4LCAKKyAgICA3OCwgNDgsIDUxLCA1NSwgMTI4LCA3OCwgNDgsIDUxLCA1NCwgMTI4LCA3OCwgNDgsIDUxLCA1MywgNjUsIDEyOCwgNzgsIAorICAgIDQ4LCA1MSwgNTMsIDEyOCwgNzgsIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUyLCAxMjgsIDc4LCA0OCwgCisgICAgNTEsIDUxLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MSwgMTI4LCA3OCwgNDgsIDUxLCA1MCwgMTI4LCA3OCwgNDgsIDUxLCAKKyAgICA0OSwgMTI4LCA3OCwgNDgsIDUxLCA0OCwgMTI4LCA3OCwgNDgsIDUwLCA1NywgMTI4LCA3OCwgNDgsIDUwLCA1NiwgMTI4LCAKKyAgICA3OCwgNDgsIDUwLCA1NSwgMTI4LCA3OCwgNDgsIDUwLCA1NCwgMTI4LCA3OCwgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzgsIAorICAgIDQ4LCA1MCwgNTMsIDEyOCwgNzgsIDQ4LCA1MCwgNTIsIDEyOCwgNzgsIDQ4LCA1MCwgNTEsIDEyOCwgNzgsIDQ4LCA1MCwgCisgICAgNTAsIDEyOCwgNzgsIDQ4LCA1MCwgNDksIDEyOCwgNzgsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDQ4LCA0OSwgNTcsIDEyOCwgCisgICAgNzgsIDQ4LCA0OSwgNTYsIDY2LCAxMjgsIDc4LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgMTI4LCAKKyAgICA3OCwgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNDgsIAorICAgIDQ5LCA1MiwgMTI4LCA3OCwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgNDgsIDQ5LCA0OSwgCisgICAgMTI4LCA3OCwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgCisgICAgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNDgsIDQ4LCAKKyAgICA1MiwgMTI4LCA3OCwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNDgsIDQ4LCA0OSwgMTI4LCAKKyAgICA3OCwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzgsIDQ1LCA2NSwgODIsIDIxNywgNzcsIDg5LCA4OCwgMTI4LCA3NywgODksIAorICAgIDg0LCAxMjgsIDc3LCA4OSwgODMsIDc2LCA3MywgODQsIDY5LCAxMjgsIDc3LCA4OSwgODAsIDEyOCwgNzcsIDg5LCA2NSwgCisgICAgMTI4LCA3NywgODksIDE5MywgNzcsIDg5LCAxMjgsIDc3LCAyMTcsIDc3LCA4NywgNzksIDc5LCAxMjgsIDc3LCA4NywgNzksIAorICAgIDEyOCwgNzcsIDg3LCA3MywgNzMsIDEyOCwgNzcsIDg3LCA3MywgMTI4LCA3NywgODcsIDY5LCA2OSwgMTI4LCA3NywgODcsIAorICAgIDY5LCAxMjgsIDc3LCA4NywgNjUsIDY1LCAxMjgsIDc3LCA4NywgNjUsIDEyOCwgNzcsIDg3LCAxMjgsIDc3LCAyMTUsIDc3LCAKKyAgICA4NiwgODMsIDEyOCwgNzcsIDg2LCA3OSwgODAsIDEyOCwgNzcsIDg2LCA3MywgMTI4LCA3NywgODYsIDY5LCA4NSwgNjUsIAorICAgIDY5LCA3OCwgNzEsIDY1LCA3NywgMTI4LCA3NywgODYsIDEyOCwgNzcsIDIxNCwgNzcsIDg1LCA4OCwgMTI4LCA3NywgODUsIAorICAgIDg1LCA4MywgNzMsIDc1LCA2NSwgODQsIDc5LCA2NSwgNzgsIDEyOCwgNzcsIDg1LCA4NSwgODIsIDY4LCA3MiwgNjUsIDc0LCAKKyAgICAxOTMsIDc3LCA4NSwgODUsIDEyOCwgNzcsIDg1LCA4NCwgMTI4LCA3NywgODUsIDgzLCA3MywgNjcsIDEyOCwgNzcsIDg1LCAKKyAgICA4MywgNzMsIDE5NSwgNzcsIDg1LCA4MywgNzIsIDgyLCA3OSwgNzksIDc3LCAxMjgsIDc3LCA4NSwgODMsIDcyLCA1MSwgCisgICAgMTI4LCA3NywgODUsIDgzLCA3MiwgMTc5LCA3NywgODUsIDgzLCA3MiwgMTI4LCA3NywgODUsIDgzLCAyMDAsIDc3LCA4NSwgCisgICAgODIsIDg4LCAxMjgsIDc3LCA4NSwgODIsIDcxLCA4NSwgNTAsIDEyOCwgNzcsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDg1LCAKKyAgICA4MiwgNjgsIDY1LCAxMjgsIDc3LCA4NSwgODIsIDY4LCAxOTMsIDc3LCA4NSwgODIsIDEyOCwgNzcsIDg1LCA4MSwgNjgsIAorICAgIDY1LCA3NywgMTI4LCA3NywgODUsIDgwLCAxMjgsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDc3LCA4NSwgNzksIDg0LCAxMjgsIAorICAgIDc3LCA4NSwgNzksIDgwLCAxMjgsIDc3LCA4NSwgNzksIDc3LCA2NSwgNjksIDEyOCwgNzcsIDg1LCA3OSwgMTI4LCA3NywgCisgICAgODUsIDc4LCA4MywgODUsIDY2LCAxMjgsIDc3LCA4NSwgNzgsIDY1LCA3MiwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgzLCAKKyAgICA2OSwgODQsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MywgNjksIDIxMiwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIAorICAgIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCA3MywgNjcsIDY1LCAKKyAgICA4NCwgNzMsIDc5LCAyMDYsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCAxOTcsIDc3LCA4NSwgNzYsIDg0LCA3MywgNzksIAorICAgIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCA4NSwgNzYsIDg0LCA3MywgNzcsIDY1LCA4MCwgMTI4LCA3NywgODUsIDc2LCA4NCwgCisgICAgMjAxLCA3NywgODUsIDc1LCA4MCwgNzIsIDgyLCA2OSwgNzgsIDcxLCAxMjgsIDc3LCA4NSwgNzMsIDc4LCAxMjgsIDc3LCAKKyAgICA4NSwgNzEsIDgzLCAxMjgsIDc3LCA4NSwgNzEsIDEyOCwgNzcsIDg1LCAxOTksIDc3LCA4NSwgNjksIDEyOCwgNzcsIDg1LCAKKyAgICA2NywgNzIsIDEyOCwgNzcsIDg1LCA2NywgMjAwLCA3NywgODUsIDY3LCA2NSwgNjUsIDY4LCAxMjgsIDc3LCA4NSwgNjUsIAorICAgIDc4LCAxMjgsIDc3LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA4NSwgNDUsIDcxLCA2NSwgNjUsIDcyLCA3NiwgNjUsIDE5MywgCisgICAgNzcsIDIxMywgNzcsIDgzLCAxMjgsIDc3LCA4MCwgNjUsIDEyOCwgNzcsIDc5LCA4OSwgNjUsIDczLCAxMjgsIDc3LCA3OSwgCisgICAgODgsIDEyOCwgNzcsIDc5LCA4NiwgNzMsIDE5NywgNzcsIDc5LCA4NiwgNjksIDE5NiwgNzcsIDc5LCA4NSwgODQsIDcyLCAKKyAgICAxMjgsIDc3LCA3OSwgODUsIDg0LCAyMDAsIDc3LCA3OSwgODUsIDgzLCA2OSwgMTI4LCA3NywgNzksIDg1LCA4MywgMTk3LCAKKyAgICA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDgzLCAxMjgsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgCisgICAgMTI4LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgMjA2LCA3NywgNzksIDg1LCA3OCwgMjEyLCA3NywgNzksIDg1LCAKKyAgICA3OCwgNjgsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDE5NiwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NywgNzksIAorICAgIDg0LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA4NSwgODUsIDc3LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA2NSwgODIsIDEyOCwgCisgICAgNzcsIDc5LCA4MiwgODAsIDcyLCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNzksIDgyLCA3OCwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA3NywgNzksIDgwLCAxMjgsIDc3LCA3OSwgNzksIDgzLCA2OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgCisgICAgNzcsIDc5LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCA3OSwgMjA2LCA3NywgNzksIDc5LCA3NywgODAsIDg1LCA4MSwgMTI4LCAKKyAgICA3NywgNzksIDc5LCA3NywgNjksIDg1LCA4NCwgMTI4LCA3NywgNzksIDc5LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MywgNjksIAorICAgIDY5LCA3OCwgMTI4LCA3NywgNzksIDc4LCA4NCwgNzIsIDEyOCwgNzcsIDc5LCA3OCwgODQsIDIwMCwgNzcsIDc5LCA3OCwgCisgICAgODMsIDg0LCA2OSwgODIsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDgzLCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA3NywgNzksIDc4LCAKKyAgICA3OSwgODMsIDgwLCA2NSwgNjcsIDE5NywgNzcsIDc5LCA3OCwgNzksIDgyLCA2NSwgNzMsIDc2LCAxMjgsIDc3LCA3OSwgNzgsIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA3OSwgMjExLCA3NywgCisgICAgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA3NywgNzksIDc4LCA3OSwgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCAKKyAgICA3NywgNzksIDc4LCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzcsIDc5LCA3OCwgNzUsIDY5LCA4OSwgMTI4LCA3NywgNzksIAorICAgIDc4LCA3NSwgNjksIDIxNywgNzcsIDc5LCA3OCwgNzMsIDEyOCwgNzcsIDc5LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgCisgICAgODEsIDEyOCwgNzcsIDc5LCA3OCwgNjksIDIxNywgNzcsIDc5LCA3OCwgMTI4LCA3NywgNzksIDIwNiwgNzcsIDc5LCA3NiwgCisgICAgMTI4LCA3NywgNzksIDcyLCA2NSwgNzcsIDc3LCA2NSwgMTk2LCA3NywgNzksIDY4LCA4NSwgNzYsIDIwNywgNzcsIDc5LCAKKyAgICA2OCwgNjksIDgzLCA4NCwgODksIDEyOCwgNzcsIDc5LCA2OCwgNjksIDc2LCA4MywgMTI4LCA3NywgNzksIDY4LCA2OSwgNzYsIAorICAgIDEyOCwgNzcsIDc5LCA2OCwgNjksIDEyOCwgNzcsIDc5LCA2NiwgNzMsIDc2LCAxOTcsIDc3LCA3OSwgNjUsIDEyOCwgNzcsIAorICAgIDIwNywgNzcsIDc4LCA4OSwgNjUsIDIwNSwgNzcsIDc4LCA2NSwgODMsIDEyOCwgNzcsIDc3LCA4MywgODAsIDEyOCwgNzcsIAorICAgIDc3LCAxMjgsIDc3LCAyMDUsIDc3LCA3NiwgNjUsIDEyOCwgNzcsIDc2LCAxMjgsIDc3LCA3NSwgODAsIDY1LCA4MiwgNjUsIAorICAgIDIwOSwgNzcsIDczLCA4OCwgMTI4LCA3NywgNzMsIDg0LCAxMjgsIDc3LCA3MywgODMsIDgyLCA2NSwgMTI4LCA3NywgNzMsIAorICAgIDgyLCA3MywgNjYsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDc3LCA3MywgODIsIDczLCAxMjgsIDc3LCA3MywgODIsIDY5LCA2OCwgCisgICAgMTI4LCA3NywgNzMsIDgwLCAxMjgsIDc3LCA3MywgNzgsIDg5LCAxMjgsIDc3LCA3MywgNzgsIDg1LCA4MywgNDUsIDc5LCAKKyAgICA4MiwgNDUsIDgwLCA3NiwgODUsIDIxMSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIDc3LCA3MywgNzgsIDczLCA4MywgODQsIAorICAgIDY5LCA4MiwgMTI4LCA3NywgNzMsIDc4LCA3MywgNzcsIDY1LCAxMjgsIDc3LCA3MywgNzgsIDczLCA2OCwgNzMsIDgzLCA2NywgCisgICAgMTI4LCA3NywgNzMsIDc4LCA3MywgNjYsIDg1LCA4MywgMTI4LCA3NywgNzMsIDc3LCA2OSwgMTI4LCA3NywgNzMsIDc3LCAKKyAgICAxMjgsIDc3LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCAyMTEsIDc3LCA3MywgNzYsIDc2LCA2OSwgODQsIDEyOCwgNzcsIAorICAgIDczLCA3NiwgNzYsIDE5NywgNzcsIDczLCA3NiwgMjA0LCA3NywgNzMsIDc2LCA3NSwgMjE3LCA3NywgNzMsIDc2LCAxMjgsIAorICAgIDc3LCA3MywgNzUsIDg1LCA4MiwgNzksIDc4LCAxMjgsIDc3LCA3MywgNzUsIDgyLCA3OSwgMjA2LCA3NywgNzMsIDc1LCA4MiwgCisgICAgNzMsIDEyOCwgNzcsIDczLCA3MywgNzgsIDEyOCwgNzcsIDczLCA3MywgMTI4LCA3NywgNzMsIDE5OSwgNzcsIDczLCA2OSwgCisgICAgODgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzMsIDY5LCAKKyAgICA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgCisgICAgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIAorICAgIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCAKKyAgICA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzcsIAorICAgIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCAKKyAgICA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgCisgICAgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NywgNzMsIDY5LCAKKyAgICA4NSwgMjA1LCA3NywgNzMsIDY5LCA4MCwgMTI4LCA3NywgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzMsIDY5LCAxMjgsIDc3LCAKKyAgICA3MywgNjgsIDc2LCA3MywgNzgsIDE5NywgNzcsIDczLCA2OCwgNjgsIDc2LCA2OSwgNDUsIDg3LCA2OSwgNzYsIDgzLCAyMDAsIAorICAgIDc3LCA3MywgNjgsIDY4LCA3NiwgMTk3LCA3NywgNzMsIDE5NiwgNzcsIDczLCA2NywgODIsIDc5LCA4MywgNjcsIDc5LCA4MCwgCisgICAgNjksIDEyOCwgNzcsIDczLCA2NywgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzcsIDczLCA2NywgODIsIAorICAgIDIwNywgNzcsIDczLCA2NywgMjEwLCA3NywgNzIsIDkwLCAxMjgsIDc3LCA3MiwgNjUsIDEyOCwgNzcsIDcyLCAxMjgsIDc3LCAKKyAgICA3MSwgODUsIDg4LCAxMjgsIDc3LCA3MSwgODUsIDg0LCAxMjgsIDc3LCA3MSwgODUsIDgyLCA4OCwgMTI4LCA3NywgNzEsIAorICAgIDg1LCA4MiwgMTI4LCA3NywgNzEsIDg1LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzcsIDcxLCA4NSwgCisgICAgNzksIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCAxMjgsIDc3LCA3MSwgODUsIDEyOCwgNzcsIDcxLCA3OSwgODgsIDEyOCwgCisgICAgNzcsIDcxLCA3OSwgODQsIDEyOCwgNzcsIDcxLCA3OSwgODAsIDEyOCwgNzcsIDcxLCA3OSwgMTI4LCA3NywgNzEsIDIwNywgCisgICAgNzcsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MSwgNzMsIDY5LCAxMjgsIDc3LCA3MSwgNjksIDg4LCAxMjgsIDc3LCAKKyAgICA3MSwgNjksIDgwLCAxMjgsIDc3LCA3MSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgODUsIDEyOCwgNzcsIDcxLCA2NiwgNzksIAorICAgIDc5LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCA3MCwgODUsIDc3LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCAxMjgsIDc3LCA3MSwgCisgICAgNjYsIDczLCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDc4LCAxMjgsIDc3LCAKKyAgICA3MSwgNjYsIDY5LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgODMsIDY1LCA4MSwgCisgICAgMTI4LCA3NywgNzEsIDY2LCA2NSwgODMsIDY1LCAxMjgsIDc3LCA3MSwgNjUsIDg4LCAxMjgsIDc3LCA3MSwgNjUsIDg0LCAKKyAgICAxMjgsIDc3LCA3MSwgNjUsIDgwLCAxMjgsIDc3LCA3MSwgNjUsIDEyOCwgNzcsIDcxLCAxMjgsIDc3LCA3MCwgNzksIDc4LCAKKyAgICAxMjgsIDc3LCA3MCwgNzksIDIwNiwgNzcsIDcwLCA3OSwgMTI4LCA3NywgNzAsIDczLCA4OSwgNjUsIDgxLCAxMjgsIDc3LCAKKyAgICA3MCwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDcwLCA2OSwgODUsIDgxLCAxMjgsIAorICAgIDc3LCA3MCwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzcsIDcwLCA2NSwgNjUsIDEyOCwgNzcsIDY5LCA5MCwgOTAsIDc5LCAKKyAgICAxMjgsIDc3LCA2OSwgODgsIDEyOCwgNzcsIDY5LCA4NSwgMjEyLCA3NywgNjksIDg1LCA4MSwgMTI4LCA3NywgNjksIDg1LCAKKyAgICA3OCwgNzQsIDc5LCA3NywgNzgsIDY4LCA2OSwgODUsIDgxLCAxMjgsIDc3LCA2OSwgODUsIDc4LCAxMjgsIDc3LCA2OSwgODQsIAorICAgIDgyLCA3OSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNjksIDg0LCA4MiwgNzMsIDY1LCAKKyAgICAxMjgsIDc3LCA2OSwgODQsIDgyLCA2OSwgODQsIDY5LCAyMTEsIDc3LCA2OSwgODQsIDc5LCA2NiwgNjksIDc2LCA4NSwgODMsIAorICAgIDEyOCwgNzcsIDY5LCA4NCwgNjksIDc1LCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3MSwgMTI4LCA3NywgNjksIDg0LCA2NSwgCisgICAgNzYsIDEyOCwgNzcsIDY5LCA4NCwgMTkzLCA3NywgNjksIDgzLCA4MywgNjksIDc4LCA3MywgNjUsIDIwNiwgNzcsIDY5LCAKKyAgICA4MywgODMsIDY1LCA3MSwgNjksIDEyOCwgNzcsIDY5LCA4MywgODMsIDY1LCA3MSwgMTk3LCA3NywgNjksIDgzLCA3OSwgCisgICAgMTI4LCA3NywgNjksIDgzLCA3MywgMTI4LCA3NywgNjksIDgzLCA3MiwgMTI4LCA3NywgNjksIDgyLCA3OSwgNzMsIDg0LCAKKyAgICA3MywgMTk1LCA3NywgNjksIDgyLCA3NSwgNzIsIDY1LCAxMjgsIDc3LCA2OSwgODIsIDc1LCA3MiwgMTkzLCA3NywgNjksIAorICAgIDgyLCA3MywgNjgsIDczLCA2NSwgNzgsIDgzLCAxMjgsIDc3LCA2OSwgODIsIDczLCAxMjgsIDc3LCA2OSwgODIsIDcxLCA2OSwgCisgICAgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIDgyLCA4OSwgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIDgyLCAyMTcsIDc3LCAKKyAgICA2OSwgNzgsIDY4LCA4NSwgODQsIDEyOCwgNzcsIDY5LCA3OCwgMTI4LCA3NywgNjksIDc3LCA3OSwgMTI4LCA3NywgNjksIAorICAgIDc3LCA2NiwgNjksIDgyLCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc3LCA2OSwgCisgICAgNzcsIDY2LCA2OSwgMjEwLCA3NywgNjksIDc3LCA0NSwgODEsIDc5LCA4MCwgNzIsIDEyOCwgNzcsIDY5LCA3NywgMTI4LCAKKyAgICA3NywgNjksIDIwNSwgNzcsIDY5LCA3NiwgNzksIDY4LCA3MywgMTk1LCA3NywgNjksIDc2LCA3MywgNzUsIDEyOCwgNzcsIAorICAgIDY5LCA3MywgOTAsIDczLCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4NCwgNzksIDc4LCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4MCwgCisgICAgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDc2LCA3MywgMTI4LCA3NywgNjksIDY5LCA4NCwgNzksIDgyLCAKKyAgICA4NSwgMTI4LCA3NywgNjksIDY5LCA4NCwgMTI4LCA3NywgNjksIDY5LCA3NywgODUsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIAorICAgIDEyOCwgNzcsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA4NSwgNzcsIDEyOCwgNzcsIDY5LCA2OCwgCisgICAgNzMsIDg1LCAyMDUsIDc3LCA2OSwgNjgsIDczLCA2NywgNzMsIDc4LCA2OSwgMTI4LCA3NywgNjksIDY4LCA3MywgNjcsIDY1LCAKKyAgICAyMDQsIDc3LCA2OSwgNjUsIDg0LCAxMjgsIDc3LCA2OSwgNjUsIDIxMiwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIAorICAgIDE5NiwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgMTk3LCA3NywgCisgICAgNjgsIDg1LCAyMDYsIDc3LCAxOTYsIDc3LCA2NywgNzIsIDIxMywgNzcsIDY3LCA3MiwgNjUsIDIwNiwgNzcsIDE5NSwgNzcsIAorICAgIDY2LCA4NSwgNzksIDgxLCAxMjgsIDc3LCA2NiwgODUsIDc5LCAxMjgsIDc3LCA2NiwgODUsIDY5LCAxMjgsIDc3LCA2NiwgCisgICAgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzcsIDY2LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNzksIDc5LCAxMjgsIDc3LCAKKyAgICA2NiwgNzksIDEyOCwgNzcsIDY2LCA3MywgODQsIDEyOCwgNzcsIDY2LCA3MywgMjEyLCA3NywgNjYsIDczLCA4MiwgNzMsIAorICAgIDY5LCA2OSwgNzgsIDEyOCwgNzcsIDY2LCA3MywgMTI4LCA3NywgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzcsIDY2LCA2OSwgCisgICAgODUsIDgyLCA3MywgMTI4LCA3NywgNjYsIDY5LCA4NSwgNzcsIDEyOCwgNzcsIDY2LCA2OSwgODIsIDY1LCA2OSwgMTI4LCAKKyAgICA3NywgNjYsIDY5LCA3OCwgMTI4LCA3NywgNjYsIDY5LCA2OSwgNzUsIDY5LCA2OSwgODQsIDEyOCwgNzcsIDY2LCA2OSwgNjksIAorICAgIDEyOCwgNzcsIDY2LCA2OSwgMTI4LCA3NywgNjYsIDY1LCA4MSwgMTI4LCA3NywgNjYsIDY1LCA3OCwgODksIDczLCAxMjgsIAorICAgIDc3LCA2NiwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNjUsIDY1LCA3NSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgCisgICAgNjUsIDY1LCAxMjgsIDc3LCA2NiwgNjUsIDE5MywgNzcsIDY2LCAxOTMsIDc3LCA2NiwgNTIsIDEyOCwgNzcsIDY2LCA1MSwgCisgICAgMTI4LCA3NywgNjYsIDUwLCAxMjgsIDc3LCA2NiwgMTI4LCA3NywgMTk0LCA3NywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA3NywgNjUsIDg5LCAxMjgsIDc3LCA2NSwgODgsIDczLCA3NywgNjUsIDEyOCwgNzcsIDY1LCA4OCwgMTI4LCA3NywgCisgICAgNjUsIDg1LCAxMjgsIDc3LCA2NSwgODQsIDg0LCA3OSwgNjcsIDc1LCAxMjgsIDc3LCA2NSwgODQsIDgyLCA3MywgODgsIAorICAgIDEyOCwgNzcsIDY1LCA4NCwgNjksIDgyLCA3MywgNjUsIDc2LCA4MywgMTI4LCA3NywgNjUsIDg0LCAxMjgsIDc3LCA2NSwgCisgICAgODMsIDIxMywgNzcsIDY1LCA4MywgODMsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDY1LCA4MywgODMsIDY1LCA3MSwgNjksIAorICAgIDEyOCwgNzcsIDY1LCA4MywgNzksIDgyLCAxOTMsIDc3LCA2NSwgODMsIDc1LCAxMjgsIDc3LCA2NSwgODMsIDcyLCA3MCwgCisgICAgNjUsIDY1LCA4NCwgMTI4LCA3NywgNjUsIDgzLCA3MiwgNTAsIDEyOCwgNzcsIDY1LCA4MywgNjcsIDg1LCA3NiwgNzMsIDc4LCAKKyAgICAxOTcsIDc3LCA2NSwgODIsIDg5LCAxMjgsIDc3LCA2NSwgODIsIDg1LCA3NSwgODUsIDEyOCwgNzcsIDY1LCA4MiwgODQsIAorICAgIDg5LCA4MiwgNzMsIDE5MywgNzcsIDY1LCA4MiwgODIsIDg5LCA3MywgNzgsIDE5OSwgNzcsIDY1LCA4MiwgODIsIDczLCA2NSwgCisgICAgNzEsIDE5NywgNzcsIDY1LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUyLCAxMjgsIDc3LCAKKyAgICA2NSwgODIsIDc1LCA0NSwgNTEsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MCwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIAorICAgIDQ5LCAxMjgsIDc3LCA2NSwgODIsIDY5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA3MiwgMTI4LCA3NywgNjUsIDgyLCA2NywgCisgICAgNjUsIDg0LCA3OSwgNDUsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIAorICAgIDg0LCA3OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDgzLCA3MywgODQsIDY5LCAxMjgsIDc3LCA2NSwgODIsIDY2LCA4NSwgCisgICAgODQsIDY1LCAxMjgsIDc3LCA2NSwgODIsIDY2LCA4NSwgODQsIDE5MywgNzcsIDY1LCA4MiwgMTI4LCA3NywgNjUsIDgxLCAKKyAgICA2NSwgNzAsIDEyOCwgNzcsIDY1LCA4MSwgMTI4LCA3NywgNjUsIDgwLCA3NiwgMTk3LCA3NywgNjUsIDgwLCA3MywgODEsIAorICAgIDEyOCwgNzcsIDY1LCAyMDgsIDc3LCA2NSwgNzksIDEyOCwgNzcsIDY1LCA3OCwgODMsIDg5LCA3OSwgNzgsIDEyOCwgNzcsIAorICAgIDY1LCA3OCwgODMsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY1LCA3OCwgNzgsIDY1LCAyMTgsIDc3LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA3NywgNjUsIDc4LCA3MSwgNjUsIDc2LCA2NSwgNzcsIDEyOCwgNzcsIDY1LCA3OCwgNjgsIDY1LCA3MywgNzYsIDczLCAKKyAgICA3OCwgMTk5LCA3NywgNjUsIDc4LCA2OCwgNjUsIDczLCAxOTUsIDc3LCA2NSwgNzgsIDY3LCA3MiwgMjEzLCA3NywgNjUsIAorICAgIDc4LCA2NSwgNjcsIDc2LCA2OSwgODMsIDEyOCwgNzcsIDY1LCA3NiwgODQsIDY5LCA4MywgMTk3LCA3NywgNjUsIDc2LCA2OSwgCisgICAgNjksIDgyLCA3MywgMTI4LCA3NywgNjUsIDc2LCA2OSwgMTI4LCA3NywgNjUsIDc2LCAxOTcsIDc3LCA2NSwgNzYsIDY1LCAKKyAgICA3NSwgNzksIDIwNiwgNzcsIDY1LCA3NSwgODMsIDg1LCA4MiwgNjUsIDEyOCwgNzcsIDY1LCA3NSwgODMsIDg1LCA4MiwgCisgICAgMTkzLCA3NywgNjUsIDczLCA5MCwgNjksIDEyOCwgNzcsIDY1LCA3MywgODksIDY1LCA3NywgNzksIDc1LCAxMjgsIDc3LCAKKyAgICA2NSwgNzMsIDg0LCA2NSwgNzMsIDc1LCA3MiwgODUsIDEyOCwgNzcsIDY1LCA3MywgODIsIDg1LCAxMjgsIDc3LCA2NSwgNzMsIAorICAgIDc3LCA4NSwgNjUsIDc4LCAxMjgsIDc3LCA2NSwgNzMsIDc3LCA2NSwgNzYsIDY1LCA3MywgMTI4LCA3NywgNjUsIDczLCA3NiwgCisgICAgNjYsIDc5LCAyMTYsIDc3LCA2NSwgNzMsIDc1LCA4NSwgODIsIDc5LCAxMjgsIDc3LCA2NSwgNzMsIDY4LCA2OSwgNzgsIAorICAgIDEyOCwgNzcsIDY1LCA3MywgMTI4LCA3NywgNjUsIDcyLCA3NCwgNzksIDc4LCAxOTksIDc3LCA2NSwgNzIsIDcyLCA2NSwgCisgICAgMTI4LCA3NywgNjUsIDcyLCA2NSwgODAsIDgyLCA2NSwgNzgsIDY1LCAxMjgsIDc3LCA2NSwgNzIsIDY1LCA4MCwgNjUsIDc1LCAKKyAgICA3MiwgMTI4LCA3NywgNjUsIDcyLCA2NSwgNjUsIDgwLCA4MiwgNjUsIDY1LCA3OCwgMTkzLCA3NywgNjUsIDcyLCAxMjgsIAorICAgIDc3LCA2NSwgNzEsIDc4LCA3MywgNzAsIDg5LCA3MywgNzgsIDE5OSwgNzcsIDY1LCA2OSwgODMsIDczLCAxMjgsIDc3LCA2NSwgCisgICAgNjksIDc4LCA4OSwgNzMsIDEyOCwgNzcsIDY1LCA2OSwgNzgsIDc0LCA2OSwgODQsIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDg2LCAKKyAgICA2OSwgODUsIDg4LCAxMjgsIDc3LCA2NSwgNjksIDc3LCA3NSwgODAsIDY5LCA3OCwgMTI4LCA3NywgNjUsIDY5LCA3NywgNzEsIAorICAgIDY2LCA3MywgNjksIDY5LCAxMjgsIDc3LCA2NSwgNjksIDc3LCA2NiwgNzEsIDY2LCA3MywgNjksIDY5LCAxMjgsIDc3LCA2NSwgCisgICAgNjksIDc3LCA2NiwgNjUsIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDEyOCwgNzcsIDY1LCA2OSwgNzYsIDY5LCA2OSwgMTI4LCAKKyAgICA3NywgNjUsIDY5LCA3NSwgNjksIDg1LCA4MCwgMTI4LCA3NywgNjUsIDY4LCA4OSwgNjUsIDEyOCwgNzcsIDY1LCA2OCwgODUsIAorICAgIDEyOCwgNzcsIDY1LCA2OCwgNjgsIDY1LCAyMDAsIDc3LCA2NSwgNjgsIDY4LCA2NSwgMTI4LCA3NywgNjUsIDY4LCA2OCwgCisgICAgMTkzLCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCAKKyAgICA3OSwgNzgsIDQ1LCA2NiwgODIsIDY5LCA4NiwgNjksIDEyOCwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgNDUsIDY1LCA2NywgCisgICAgODUsIDg0LCA2OSwgMTI4LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCA3OSwgMjA2LCAKKyAgICA3NywgNjUsIDY3LCA3MiwgNzMsIDc4LCA2OSwgMTI4LCA3NywgNjUsIDY1LCA4OSwgODksIDY1LCA2NSwgMTI4LCA3NywgNjUsIAorICAgIDY1LCA3MywgMTI4LCA3NywgNjUsIDY1LCAxMjgsIDc3LCA2NSwgNTAsIDEyOCwgNzcsIDQ4LCA1MiwgNTIsIDEyOCwgNzcsIAorICAgIDQ4LCA1MiwgNTEsIDEyOCwgNzcsIDQ4LCA1MiwgNTAsIDEyOCwgNzcsIDQ4LCA1MiwgNDksIDEyOCwgNzcsIDQ4LCA1MiwgCisgICAgNDgsIDY1LCAxMjgsIDc3LCA0OCwgNTIsIDQ4LCAxMjgsIDc3LCA0OCwgNTEsIDU3LCAxMjgsIDc3LCA0OCwgNTEsIDU2LCAKKyAgICAxMjgsIDc3LCA0OCwgNTEsIDU1LCAxMjgsIDc3LCA0OCwgNTEsIDU0LCAxMjgsIDc3LCA0OCwgNTEsIDUzLCAxMjgsIDc3LCAKKyAgICA0OCwgNTEsIDUyLCAxMjgsIDc3LCA0OCwgNTEsIDUxLCA2NiwgMTI4LCA3NywgNDgsIDUxLCA1MSwgNjUsIDEyOCwgNzcsIAorICAgIDQ4LCA1MSwgNTEsIDEyOCwgNzcsIDQ4LCA1MSwgNTAsIDEyOCwgNzcsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDc3LCA0OCwgCisgICAgNTEsIDQ5LCAxMjgsIDc3LCA0OCwgNTEsIDQ4LCAxMjgsIDc3LCA0OCwgNTAsIDU3LCAxMjgsIDc3LCA0OCwgNTAsIDU2LCAKKyAgICA2NSwgMTI4LCA3NywgNDgsIDUwLCA1NiwgMTI4LCA3NywgNDgsIDUwLCA1NSwgMTI4LCA3NywgNDgsIDUwLCA1NCwgMTI4LCAKKyAgICA3NywgNDgsIDUwLCA1MywgMTI4LCA3NywgNDgsIDUwLCA1MiwgNjUsIDEyOCwgNzcsIDQ4LCA1MCwgNTIsIDEyOCwgNzcsIAorICAgIDQ4LCA1MCwgNTEsIDEyOCwgNzcsIDQ4LCA1MCwgNTAsIDY1LCAxMjgsIDc3LCA0OCwgNTAsIDUwLCAxMjgsIDc3LCA0OCwgCisgICAgNTAsIDQ5LCAxMjgsIDc3LCA0OCwgNTAsIDQ4LCAxMjgsIDc3LCA0OCwgNDksIDU3LCAxMjgsIDc3LCA0OCwgNDksIDU2LCAKKyAgICAxMjgsIDc3LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA1NSwgMTI4LCA3NywgNDgsIDQ5LCA1NCwgNjUsIAorICAgIDEyOCwgNzcsIDQ4LCA0OSwgNTQsIDEyOCwgNzcsIDQ4LCA0OSwgNTMsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDUzLCAxMjgsIAorICAgIDc3LCA0OCwgNDksIDUyLCAxMjgsIDc3LCA0OCwgNDksIDUxLCAxMjgsIDc3LCA0OCwgNDksIDUwLCA3MiwgMTI4LCA3NywgCisgICAgNDgsIDQ5LCA1MCwgNzEsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDcwLCAxMjgsIDc3LCA0OCwgNDksIDUwLCA2OSwgMTI4LCAKKyAgICA3NywgNDgsIDQ5LCA1MCwgNjgsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY3LCAxMjgsIDc3LCA0OCwgNDksIDUwLCA2NiwgCisgICAgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDEyOCwgNzcsIDQ4LCA0OSwgNDksIDEyOCwgCisgICAgNzcsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDQ4LCAxMjgsIDc3LCA0OCwgNDgsIDU3LCAxMjgsIDc3LCAKKyAgICA0OCwgNDgsIDU2LCAxMjgsIDc3LCA0OCwgNDgsIDU1LCAxMjgsIDc3LCA0OCwgNDgsIDU0LCAxMjgsIDc3LCA0OCwgNDgsIAorICAgIDUzLCAxMjgsIDc3LCA0OCwgNDgsIDUyLCAxMjgsIDc3LCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA3NywgNDgsIDQ4LCA1MSwgCisgICAgMTI4LCA3NywgNDgsIDQ4LCA1MCwgMTI4LCA3NywgNDgsIDQ4LCA0OSwgNjYsIDEyOCwgNzcsIDQ4LCA0OCwgNDksIDY1LCAKKyAgICAxMjgsIDc3LCA0OCwgNDgsIDQ5LCAxMjgsIDc2LCAyMTgsIDc2LCA4OSwgODksIDEyOCwgNzYsIDg5LCA4OCwgMTI4LCA3NiwgCisgICAgODksIDg0LCAxMjgsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDc2LCA4OSwgODIsIDEyOCwgNzYsIDg5LCA4MCwgMTI4LCA3NiwgCisgICAgODksIDY4LCA3MywgNjUsIDIwNiwgNzYsIDg5LCA2NywgNzMsIDY1LCAyMDYsIDc2LCA4OCwgMTI4LCA3NiwgODcsIDc5LCAKKyAgICA3OSwgMTI4LCA3NiwgODcsIDc5LCAxMjgsIDc2LCA4NywgNzMsIDczLCAxMjgsIDc2LCA4NywgNzMsIDEyOCwgNzYsIDg3LCAKKyAgICA2OSwgMTI4LCA3NiwgODcsIDY1LCA2NSwgMTI4LCA3NiwgODcsIDY1LCAxMjgsIDc2LCA4NSwgODgsIDEyOCwgNzYsIDg1LCAKKyAgICA4NSwgMTI4LCA3NiwgODUsIDg0LCAxMjgsIDc2LCA4NSwgODIsIDg4LCAxMjgsIDc2LCA4NSwgODAsIDEyOCwgNzYsIDg1LCAKKyAgICA3OSwgODgsIDEyOCwgNzYsIDg1LCA3OSwgODQsIDEyOCwgNzYsIDg1LCA3OSwgODAsIDEyOCwgNzYsIDg1LCA3OSwgMTI4LCAKKyAgICA3NiwgODUsIDc4LCA3MSwgODMsIDczLCAxMjgsIDc2LCA4NSwgNzgsIDY1LCA4NCwgMTk3LCA3NiwgODUsIDIwNSwgNzYsIAorICAgIDg1LCA3NiwgMTI4LCA3NiwgODUsIDczLCA4MywgMTI4LCA3NiwgODUsIDcyLCA4NSwgODIsIDEyOCwgNzYsIDg1LCA3MiwgCisgICAgMTI4LCA3NiwgODUsIDcxLCA3MSwgNjUsIDcxLCA2OSwgMTI4LCA3NiwgODUsIDcxLCA2NSwgNzYsIDEyOCwgNzYsIDg1LCAKKyAgICA3MSwgNjUsIDIwNCwgNzYsIDg1LCA2OSwgMTI4LCA3NiwgODUsIDY1LCA2OSwgODAsIDEyOCwgNzYsIDg1LCA1MSwgMTI4LCAKKyAgICA3NiwgODUsIDUwLCAxMjgsIDc2LCA4NSwgMTc4LCA3NiwgODIsIDc5LCAxMjgsIDc2LCA4MiwgNzcsIDEyOCwgNzYsIDgyLCAKKyAgICA2OSwgMTI4LCA3NiwgNzksIDkwLCA2OSwgNzgsIDcxLCA2OSwgMTI4LCA3NiwgNzksIDkwLCA2OSwgNzgsIDcxLCAxOTcsIAorICAgIDc2LCA3OSwgODgsIDEyOCwgNzYsIDc5LCA4NywgNjksIDgyLCA2OSwgMTk2LCA3NiwgNzksIDg3LCA2OSwgMjEwLCA3NiwgCisgICAgNzksIDg3LCA0NSwgMTg1LCA3NiwgNzksIDg2LCAxOTcsIDc2LCA3OSwgODUsIDgyLCA2OSwgMTI4LCA3NiwgNzksIDg1LCAKKyAgICA2OCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIDEyOCwgNzYsIDc5LCA4NSwgNjgsIDc2LCAyMTcsIDc2LCA3OSwgODQsIAorICAgIDg1LCA4MywgMTI4LCA3NiwgNzksIDg0LCAxMjgsIDc2LCA3OSwgODIsIDgyLCA4OSwgMTI4LCA3NiwgNzksIDgyLCA4MiwgCisgICAgNjUsIDczLCA3OCwgNjksIDEyOCwgNzYsIDc5LCA4MSwgMTI4LCA3NiwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDg0LCAKKyAgICAxMjgsIDc2LCA3OSwgNzksIDgwLCA2OSwgMTk2LCA3NiwgNzksIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCAyMDgsIDc2LCAKKyAgICA3OSwgNzksIDc4LCAxMjgsIDc2LCA3OSwgNzksIDIwMywgNzYsIDc5LCA3OSwgMTI4LCA3NiwgNzksIDc4LCA4MywgODUsIAorICAgIDc3LCAxMjgsIDc2LCA3OSwgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNzksIDc4LCA3MSwgMTkzLCA3NiwgNzksIDc4LCA3MSwgCisgICAgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA4OSwgODIsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIAorICAgIDY1LCA3OCwgNjcsIDcyLCA0NSwgODMsIDc5LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCAKKyAgICA3MiwgNDUsIDc5LCA4MywgMjExLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3NywgCisgICAgNjUsIDY4LCAyMTAsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDcyLCA2NSwgNzEsIAorICAgIDY1LCA3NiwgMjA0LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA2NSwgMjEwLCA3NiwgCisgICAgNzksIDc3LCA3NywgNjUsIDY5LCAxMjgsIDc2LCA3OSwgNzcsIDEyOCwgNzYsIDc5LCAyMDUsIDc2LCA3OSwgNzYsIDc2LCAKKyAgICA3MywgODAsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc2LCA3NiwgMTI4LCA3NiwgNzksIDcxLCAyMTAsIDc2LCA3OSwgNzEsIAorICAgIDc5LCA4NCwgODksIDgwLCAxOTcsIDc2LCA3OSwgNzEsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc2LCA3OSwgNzEsIDEyOCwgCisgICAgNzYsIDc5LCA2OCwgNjksIDgzLCA4NCwgNzksIDc4LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA3OSwgNzcsIDc5LCA4NCwgNzMsIAorICAgIDg2LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA3NSwgNzMsIDc4LCA3MSwgNDUsIDgzLCA3MiwgNzMsIDcwLCAyMTIsIDc2LCA3OSwgCisgICAgNjcsIDIwMywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDc2LCA3OSwgNjUsIDEyOCwgNzYsIDc4LCAxMjgsIDc2LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgNzksIDc5LCAKKyAgICAxMjgsIDc2LCA3NiwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA3OSwgNzksIAorICAgIDEyOCwgNzYsIDc2LCA3NiwgNzksIDEyOCwgNzYsIDc2LCA3NiwgNzMsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDczLCAxMjgsIAorICAgIDc2LCA3NiwgNzYsIDY5LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgODUsIDEyOCwgCisgICAgNzYsIDc2LCA3NiwgNjUsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA2NSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgMTI4LCAKKyAgICA3NiwgNzYsIDc2LCAxMjgsIDc2LCA3NCwgODUsIDY4LCA3MywgNzQsIDY5LCAxMjgsIDc2LCA3NCwgNjksIDEyOCwgNzYsIAorICAgIDc0LCAxMjgsIDc2LCA3MywgODgsIDEyOCwgNzYsIDczLCA4NywgNzgsIDEyOCwgNzYsIDczLCA4NiwgODIsIDE5NywgNzYsIAorICAgIDczLCA4NCwgODQsIDc2LCAxOTcsIDc2LCA3MywgODQsIDg0LCA2OSwgMjEwLCA3NiwgNzMsIDg0LCA4MiwgMTkzLCA3NiwgCisgICAgNzMsIDg0LCAxMjgsIDc2LCA3MywgODMsIDIxMywgNzYsIDczLCA4MiwgMTkzLCA3NiwgNzMsIDgxLCA4NSwgNzMsIDE5NiwgCisgICAgNzYsIDczLCA4MSwgMTI4LCA3NiwgNzMsIDgwLCA4MywgODQsIDczLCA2NywgNzUsIDEyOCwgNzYsIDczLCA3OCwgNzUsIDczLCAKKyAgICA3OCwgMTk5LCA3NiwgNzMsIDc4LCAyMDMsIDc2LCA3MywgNzgsIDcxLCA4MywgNjUsIDEyOCwgNzYsIDczLCA3OCwgNjksIAorICAgIDgzLCAxMjgsIDc2LCA3MywgNzgsIDY5LCAyMTEsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTcsIDEyOCwgNzYsIDczLCA3OCwgCisgICAgNjksIDQ1LCA1NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDUxLCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNDksIAorICAgIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDUwLCAxMjgsIDc2LCA3MywgCisgICAgNzcsIDc3LCA4NSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgMjEzLCA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCAxOTYsIDc2LCAKKyAgICA3MywgNzcsIDczLCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc2LCA3MywgNzcsIDczLCA4NCwgMTI4LCA3NiwgNzMsIAorICAgIDc3LCA2OSwgMTI4LCA3NiwgNzMsIDc3LCA2NiwgMjEzLCA3NiwgNzMsIDc2LCA4OSwgMTI4LCA3NiwgNzMsIDc2LCA3MywgCisgICAgODQsIDcyLCAxMjgsIDc2LCA3MywgNzYsIDEyOCwgNzYsIDczLCA3MSwgNzIsIDg0LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCAKKyAgICA3NiwgNzMsIDcxLCA3MiwgODQsIDcyLCA3OSwgODUsIDgzLCA2OSwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzYsIAorICAgIDczLCA3MCwgNjksIDEyOCwgNzYsIDczLCA2OSwgODgsIDEyOCwgNzYsIDczLCA2OSwgODQsIDEyOCwgNzYsIDczLCA2OSwgCisgICAgODAsIDEyOCwgNzYsIDczLCA2OSwgNjksIDEyOCwgNzYsIDczLCA2OSwgMTI4LCA3NiwgNzMsIDY4LCAxMjgsIDc2LCA3MywgCisgICAgNjYsIDgyLCA2NSwgMTI4LCA3NiwgNzMsIDY2LCA2OSwgODIsIDg0LCA4OSwgMTI4LCA3NiwgNzMsIDY1LCA2NiwgNzMsIDc2LCAKKyAgICA3MywgODQsIDIxNywgNzYsIDcyLCA3MywgNzMsIDEyOCwgNzYsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgCisgICAgMTI4LCA3NiwgNzIsIDY1LCAxOTksIDc2LCA3MiwgNjUsIDY1LCAxMjgsIDc2LCA3MiwgMTI4LCA3NiwgNjksIDkwLCA3MiwgCisgICAgMTI4LCA3NiwgNjksIDg4LCAxMjgsIDc2LCA2OSwgODYsIDY5LCAyMDQsIDc2LCA2OSwgODUsIDc3LCAxMjgsIDc2LCA2OSwgCisgICAgODUsIDY1LCA2OSwgODAsIDEyOCwgNzYsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NiwgNjksIDg1LCAxMjgsIDc2LCAKKyAgICA2OSwgMjEzLCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCA4MywgMTI4LCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCAxMjgsIAorICAgIDc2LCA2OSwgMjEyLCA3NiwgNjksIDgzLCA4MywgNjksIDIxMCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgNzIsIDY1LCA3OCwgCisgICAgMTI4LCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzYsIDY5LCA4MCwgMTI4LCA3NiwgNjksIDc5LCAKKyAgICA4MCwgNjUsIDgyLCA2OCwgMTI4LCA3NiwgNjksIDc5LCAxMjgsIDc2LCA2OSwgNzgsIDg0LCA3MywgNjcsIDg1LCA3NiwgNjUsIAorICAgIDIxMCwgNzYsIDY5LCA3OCwgNzMsIDgzLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDY5LCA3OCwgNjksIDgyLCAKKyAgICAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgMjAwLCA3NiwgNjksIDc4LCA3MSwgNjUsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIAorICAgIDE5MywgNzYsIDY5LCA3NywgNzksIDc4LCAxMjgsIDc2LCA2OSwgNzcsIDc5LCA3MywgMTI4LCA3NiwgNjksIDc2LCA2OSwgCisgICAgODQsIDEyOCwgNzYsIDY5LCA3NiwgNjksIDIxMiwgNzYsIDY5LCAyMDMsIDc2LCA2OSwgNzMsIDc3LCA3NywgNjUsIDEyOCwgCisgICAgNzYsIDY5LCA3MywgNzcsIDc3LCAxOTMsIDc2LCA2OSwgNzEsIDgzLCAxMjgsIDc2LCA2OSwgNzEsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNzYsIDY5LCA3MSwgNjksIDg0LCA3OSwgMjExLCA3NiwgNjksIDcxLCAxMjgsIDc2LCA2OSwgNzAsIDg0LCA4NywgCisgICAgNjUsIDgyLCA2OCwgODMsIDEyOCwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4NCwgNzksIDQ1LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCAKKyAgICA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA4NCwgNjksIDIwNSwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgNzMsIDY4LCAxOTcsIAorICAgIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODAsIDc5LCAKKyAgICA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCA2OCwgNjksIDE5NiwgNzYsIAorICAgIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAKKyAgICAxOTksIDc2LCA2OSwgNzAsIDg0LCAxMjgsIDc2LCA2OSwgNjksIDgyLCA2NSwgNjksIDg3LCA2NSwgMTI4LCA3NiwgNjksIAorICAgIDY5LCA3NSwgMTI4LCA3NiwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzYsIDY5LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCA3NiwgCisgICAgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA3MCwgMTI4LCA3NiwgNjksIDY1LCAxOTgsIDc2LCAKKyAgICA2OSwgNjUsIDY4LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA2NSwgNjgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCAxOTYsIAorICAgIDc2LCA2OCwgNjUsIDc4LCAxMjgsIDc2LCA2OCwgNTAsIDEyOCwgNzYsIDY3LCAyMDEsIDc2LCA2NywgMTk3LCA3NiwgNjUsIAorICAgIDkwLCAyMTcsIDc2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc2LCA2NSwgODgsIDEyOCwgNzYsIDY1LCA4NywgCisgICAgMTI4LCA3NiwgNjUsIDIxNSwgNzYsIDY1LCA4NSwgNzYsIDY1LCAxMjgsIDc2LCA2NSwgODUsIDc1LCA2NSwgMjE4LCA3NiwgCisgICAgNjUsIDg0LCA3MywgNzgsIDY1LCA4NCwgMTk3LCA3NiwgNjUsIDg0LCA3MywgNzUsIDEyOCwgNzYsIDY1LCA4NCwgNjksIDgyLCAKKyAgICA2NSwgMjA0LCA3NiwgNjUsIDg0LCAxOTcsIDc2LCA2NSwgODMsIDIxMiwgNzYsIDY1LCA4MiwgODksIDc4LCA3MSwgNjksIAorICAgIDY1LCAyMDQsIDc2LCA2NSwgODIsIDcxLCA2OSwgMjEwLCA3NiwgNjUsIDgyLCA3MSwgNjksIDEyOCwgNzYsIDY1LCA4MiwgCisgICAgNzEsIDE5NywgNzYsIDY1LCA4MSwgMTI4LCA3NiwgNjUsIDgwLCA2NSwgODEsIDEyOCwgNzYsIDY1LCA4MCwgMTI4LCA3NiwgCisgICAgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA3NiwgNjUsIDc4LCA3MSwgODUsIDY1LCA3MSwgMTk3LCA3NiwgNjUsIDc4LCAKKyAgICA2OSwgODMsIDEyOCwgNzYsIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA3NiwgNjUsIDc3LCA2OSwgNjgsIDEyOCwgNzYsIAorICAgIDY1LCA3NywgNjksIDE5NiwgNzYsIDY1LCA3NywgNjksIDEyOCwgNzYsIDY1LCA3NywgMTk3LCA3NiwgNjUsIDc3LCA2OCwgCisgICAgNjUsIDEyOCwgNzYsIDY1LCA3NywgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjYsIDY4LCAxOTMsIDc2LCA2NSwgNzcsIDY1LCAKKyAgICA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NiwgMTI4LCA3NiwgNjUsIDIwNCwgNzYsIDY1LCA3NSwgNzUsIDcyLCA2NSwgNzgsIAorICAgIDcxLCA4OSwgNjUsIDc5LCAxMjgsIDc2LCA2NSwgNzQsIDY1LCA3OCwgODksIDY1LCA3NiwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgCisgICAgMjAxLCA3NiwgNjUsIDcyLCA4MywgNzIsIDg1LCAxMjgsIDc2LCA2NSwgNzIsIDEyOCwgNzYsIDY1LCA3MSwgODUsIDgzLCAKICAgICAxMjgsIDc2LCA2NSwgNzEsIDIxMywgNzYsIDY1LCA3MSwgNjUsIDgyLCAxMjgsIDc2LCA2NSwgNzEsIDY1LCAyMTAsIDc2LCAKICAgICA2NSwgNzEsIDY1LCA2NiwgMTI4LCA3NiwgNjUsIDcxLCA2NSwgMTk0LCA3NiwgNjUsIDY5LCA4NiwgMTI4LCA3NiwgNjUsIAogICAgIDY5LCAxMjgsIDc2LCA2NSwgNjgsIDIxNywgNzYsIDY1LCA2NywgNzUsIDEyOCwgNzYsIDY1LCA2NywgNjUsIDEyOCwgNzYsIAogICAgIDY1LCA2NiwgNzksIDg1LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNjUsIDY2LCA3OSwgODIsIDEyOCwgNzYsIDY1LCA2NiwgCi0gICAgNzMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3NiwgNjUsIDY2LCA2NSwgODQsIDEyOCwgNzYsIDY1LCAKLSAgICA2NSwgNzgsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgMTI4LCA3NiwgNjUsIDY1LCA3NywgODUsIDEyOCwgNzYsIAotICAgIDY1LCA2NSwgNzcsIDEyOCwgNzYsIDY1LCA2NSwgNzMsIDEyOCwgNzYsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDc2LCA0OCwgCi0gICAgNDgsIDUwLCA2NSwgMTI4LCA3NiwgNDUsIDg0LCA4OSwgODAsIDE5NywgNzYsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIAotICAgIDE5NiwgNzUsIDg5LCA4NSwgODIsIDczLCA3MywgMTI4LCA3NSwgODksIDg1LCAxMjgsIDc1LCA4OSwgNzksIDEyOCwgNzUsIAotICAgIDg5LCA3NiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDg5LCA3MywgMTI4LCA3NSwgODksIDY5LCAxMjgsIDc1LCA4OSwgCi0gICAgNjUsIDg0LCA3MiwgNzksIDIxMSwgNzUsIDg5LCA2NSwgNjUsIDEyOCwgNzUsIDg5LCA2NSwgMTI4LCA3NSwgODgsIDg3LCAKLSAgICA3MywgMTI4LCA3NSwgODgsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA4NywgNjksIDEyOCwgNzUsIDg4LCA4NywgNjUsIAotICAgIDY1LCAxMjgsIDc1LCA4OCwgODcsIDY1LCAxMjgsIDc1LCA4OCwgODUsIDEyOCwgNzUsIDg4LCA3OSwgMTI4LCA3NSwgODgsIAotICAgIDczLCAxMjgsIDc1LCA4OCwgNjksIDY5LCAxMjgsIDc1LCA4OCwgNjksIDEyOCwgNzUsIDg4LCA2NSwgNjUsIDEyOCwgNzUsIAotICAgIDg4LCA2NSwgMTI4LCA3NSwgODcsIDg1LCA1MSwgNDksIDU2LCAxMjgsIDc1LCA4NywgNzksIDc5LCAxMjgsIDc1LCA4NywgCi0gICAgNzksIDEyOCwgNzUsIDg3LCA3MywgNzMsIDEyOCwgNzUsIDg3LCA3MywgMTI4LCA3NSwgODcsIDY5LCA2OSwgMTI4LCA3NSwgCi0gICAgODcsIDY5LCAxMjgsIDc1LCA4NywgNjUsIDg5LCAxMjgsIDc1LCA4NywgNjUsIDY5LCA4NCwgMTI4LCA3NSwgODcsIDY1LCAKLSAgICA2NSwgMTI4LCA3NSwgODYsIDY1LCAxMjgsIDc1LCA4NiwgMTI4LCA3NSwgODUsIDg4LCAxMjgsIDc1LCA4NSwgODUsIDcyLCAKLSAgICAxMjgsIDc1LCA4NSwgODQsIDEyOCwgNzUsIDg1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4NSwgODMsIDcyLCA4NSwgNTAsIAotICAgIDEyOCwgNzUsIDg1LCA4MiwgODgsIDEyOCwgNzUsIDg1LCA4MiwgODUsIDkwLCA2OSwgNzMsIDgyLCA3OSwgMTI4LCA3NSwgCi0gICAgODUsIDgyLCA4NCwgMTI4LCA3NSwgODUsIDgyLCA3OSwgNzksIDc4LCA2OSwgMTI4LCA3NSwgODUsIDgyLCAxMjgsIDc1LCAKLSAgICA4NSwgMjEwLCA3NSwgODUsIDgxLCAxMjgsIDc1LCA4NSwgNzksIDg4LCAxMjgsIDc1LCA4NSwgNzksIDgwLCAxMjgsIDc1LCAKLSAgICA4NSwgNzksIDIwOCwgNzUsIDg1LCA3OSwgNzcsIDEyOCwgNzUsIDg1LCA3OSwgMTI4LCA3NSwgODUsIDc4LCA3MSwgMTI4LCAKLSAgICA3NSwgODUsIDc4LCA2OCwgNjgsIDY1LCA3NiwgNzMsIDg5LCA2NSwgMTI4LCA3NSwgODUsIDc2LCAxMjgsIDc1LCA4NSwgCi0gICAgMjA0LCA3NSwgODUsIDY5LCA4NCwgMTI4LCA3NSwgODUsIDU1LCAxMjgsIDc1LCA4NSwgNTIsIDEyOCwgNzUsIDg1LCAxODAsIAotICAgIDc1LCA4NSwgNTEsIDEyOCwgNzUsIDg1LCAxNzksIDc1LCA4NCwgMTI4LCA3NSwgODMsIDgzLCA2NSwgMTI4LCA3NSwgODMsIAotICAgIDczLCAxMjgsIDc1LCA4MiwgNjksIDc3LCA2NSwgODMsIDg0LCA3MywgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA3OSwgCi0gICAgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzksIDc4LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDc5LCA3NSwgNzksIAotICAgIDg1LCA3MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3NSwgCi0gICAgODIsIDY1LCA4NCwgNzMsIDc3LCAxOTMsIDc1LCA4MCwgODUsIDEyOCwgNzUsIDgwLCA3OSwgODEsIDEyOCwgNzUsIDgwLCAKLSAgICA3OSwgNzksIDEyOCwgNzUsIDgwLCA3OSwgMTI4LCA3NSwgODAsIDczLCAxMjgsIDc1LCA4MCwgNjksIDg1LCA4OCwgMTI4LCAKLSAgICA3NSwgODAsIDY5LCA2OSwgMTI4LCA3NSwgODAsIDY5LCAxMjgsIDc1LCA4MCwgNjUsIDgyLCA2NSwgODEsIDEyOCwgNzUsIAotICAgIDgwLCA2NSwgNzgsIDEyOCwgNzUsIDgwLCA2NSwgMTI4LCA3NSwgNzksIDg4LCAxMjgsIDc1LCA3OSwgODYsIDg1LCA4NSwgCi0gICAgMTI4LCA3NSwgNzksIDg0LCA3OSwgMTI4LCA3NSwgNzksIDgyLCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA3OSwgODIsIDc5LCAKLSAgICA3OCwgNzMsIDgzLCAxMjgsIDc1LCA3OSwgODIsIDY5LCA2NSwgMjA2LCA3NSwgNzksIDgyLCA2NSwgNzgsIDczLCAxOTUsIAotICAgIDc1LCA3OSwgODEsIDc4LCA2OCwgNzksIDc4LCAxMjgsIDc1LCA3OSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNzksIDgwLCAKLSAgICAxMjgsIDc1LCA3OSwgNzksIDgwLCA3OSwgMTI4LCA3NSwgNzksIDc5LCA3NywgODUsIDg1LCA4NCwgMTI4LCA3NSwgNzksIAotICAgIDc5LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIDc3LCA2NSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCA3NywgCi0gICAgMTkzLCA3NSwgNzksIDc3LCAyMDEsIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDY1LCAxMjgsIDc1LCA3OSwgNzcsIDY2LCAKLSAgICA4NSwgODYsIDE5MywgNzUsIDc5LCA3NywgNjYsIDIxMywgNzUsIDc5LCA3NSwgNzksIDEyOCwgNzUsIDc5LCA3NSwgMTI4LCAKLSAgICA3NSwgNzksIDIwMywgNzUsIDc5LCA3MywgMTI4LCA3NSwgNzksIDIwMSwgNzUsIDc5LCA3MiwgMTI4LCA3NSwgNzksIDcxLCAKLSAgICA3MiwgNzksIDc3LCAxMjgsIDc1LCA3OSwgNjksIDg0LCAxMjgsIDc1LCA3OSwgNjUsIDc2LCA2NSwgMTI4LCA3NSwgNzksIAotICAgIDY1LCAxMjgsIDc1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCAyMTIsIDc1LCA3OCwgCi0gICAgNzMsIDcwLCA2OSwgMTI4LCA3NSwgNzgsIDczLCA3MCwgMTk3LCA3NSwgNzcsIDEyOCwgNzUsIDIwNSwgNzUsIDc2LCA3MywgCi0gICAgODQsIDc5LCA3OCwgMTI4LCA3NSwgNzYsIDY1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCA3NywgMTkzLCAKLSAgICA3NSwgNzYsIDY1LCAxMjgsIDc1LCA3NiwgMTI4LCA3NSwgNzUsIDg1LCAxMjgsIDc1LCA3NSwgNzksIDEyOCwgNzUsIDc1LCAKLSAgICA3MywgMTI4LCA3NSwgNzUsIDY5LCA2OSwgMTI4LCA3NSwgNzUsIDY5LCAxMjgsIDc1LCA3NSwgNjUsIDEyOCwgNzUsIDc1LCAKLSAgICAxMjgsIDc1LCA3NCwgNjksIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIAotICAgIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCAKLSAgICA3NSwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc1LCA3MywgODksIAotICAgIDY5LCA3OSwgNzUsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDc4LCAKLSAgICA3MywgNjksIDg1LCA3OCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgCi0gICAgNzIsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc1LCAKLSAgICA3MywgODksIDY5LCA3OSwgMjAzLCA3NSwgNzMsIDg4LCAxMjgsIDc1LCA3MywgODQsIDEyOCwgNzUsIDczLCA4MywgODMsIAotICAgIDczLCA3OCwgMTk5LCA3NSwgNzMsIDgzLCA4MywgMTI4LCA3NSwgNzMsIDgzLCAyMTEsIDc1LCA3MywgODMsIDczLCA3NywgCi0gICAgNTMsIDEyOCwgNzUsIDczLCA4MywgNzMsIDc3LCAxODEsIDc1LCA3MywgODMsIDcyLCAxMjgsIDc1LCA3MywgODMsIDY1LCAKLSAgICA3NiwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgODcsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3NywgNjksIAotICAgIDY5LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzEsIDg1LCA4MiwgNjUsIDc3LCA4NSwgMTI4LCA3NSwgCi0gICAgNzMsIDgyLCA3OSwgMTI4LCA3NSwgNzMsIDgyLCA3MSwgNzIsIDczLCAyMTgsIDc1LCA3MywgODEsIDEyOCwgNzUsIDczLCAKLSAgICA4MCwgMTI4LCA3NSwgNzMsIDIwOCwgNzUsIDczLCA3OCwgODMsIDcyLCA3MywgODAsIDEyOCwgNzUsIDczLCA3OCwgNjgsIAotICAgIDY5LCA4MiwgNzEsIDY1LCA4MiwgODQsIDY5LCA3OCwgMTI4LCA3NSwgNzMsIDc3LCA3OSwgNzgsIDc5LCAxMjgsIDc1LCA3MywgCi0gICAgNzMsIDEyOCwgNzUsIDczLCA3MiwgMTI4LCA3NSwgNzMsIDY5LCA4OCwgMTI4LCA3NSwgNzMsIDY5LCA4MCwgMTI4LCA3NSwgCi0gICAgNzMsIDY5LCA2OSwgNzcsIDEyOCwgNzUsIDczLCA2OSwgMTI4LCA3NSwgNzMsIDY4LCAxMjgsIDc1LCA3MywgMTk2LCA3NSwgCi0gICAgNzMsIDY3LCA3NSwgMTI4LCA3NSwgNzIsIDkwLCAxMjgsIDc1LCA3MiwgODcsIDY1LCA3MywgMTI4LCA3NSwgNzIsIDg1LCAKLSAgICA2OSwgNzgsIDQ1LCA3NiwgODUsIDE5NywgNzUsIDcyLCA4NSwgNjksIDIwNiwgNzUsIDcyLCA4NSwgNjUsIDg0LCAxMjgsIAotICAgIDc1LCA3MiwgNzksIDg1LCAxMjgsIDc1LCA3MiwgNzksIDIxMiwgNzUsIDcyLCA3OSwgNzgsIDEyOCwgNzUsIDcyLCA3OSwgCi0gICAgNzcsIDg1LCA4NCwgMTI4LCA3NSwgNzIsIDc5LCAxMjgsIDc1LCA3MiwgMjA3LCA3NSwgNzIsIDczLCA4NCwgMTI4LCA3NSwgCi0gICAgNzIsIDczLCA2OSwgODUsIDc1LCAyMDAsIDc1LCA3MiwgNzMsIDEyOCwgNzUsIDcyLCA3MiwgNzksIDEyOCwgNzUsIDcyLCAKLSAgICA3MiwgNjUsIDEyOCwgNzUsIDcyLCA2OSwgODQsIDcyLCAxMjgsIDc1LCA3MiwgNjksIDczLCAxMjgsIDc1LCA3MiwgNjksIAotICAgIDY5LCAxMjgsIDc1LCA3MiwgNjksIDEyOCwgNzUsIDcyLCA2NSwgODIsIDc5LCA4MywgNzIsIDg0LCA3MiwgMjAxLCA3NSwgCi0gICAgNzIsIDY1LCA4MiwgMTI4LCA3NSwgNzIsIDY1LCA4MCwgNzIsIDEyOCwgNzUsIDcyLCA2NSwgNzgsIDE5OSwgNzUsIDcyLCAKLSAgICA2NSwgNzgsIDY4LCAxOTMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIDc1LCA3MiwgNjUsIDc3LCA4NCwgMjAxLCA3NSwgNzIsIAotICAgIDY1LCA3NSwgNjUsIDgzLCA4MywgNzMsIDY1LCAyMDYsIDc1LCA3MiwgNjUsIDczLCAxMjgsIDc1LCA3MiwgNjUsIDcyLCAKKyAgICA3MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc2LCA2NSwgNjYsIDczLCA2NSwgMjA0LCA3NiwgNjUsIAorICAgIDY2LCA2NSwgODQsIDEyOCwgNzYsIDY1LCA2NSwgNzgsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgMTI4LCA3NiwgCisgICAgNjUsIDY1LCA3NywgODUsIDEyOCwgNzYsIDY1LCA2NSwgNzcsIDEyOCwgNzYsIDY1LCA2NSwgNzMsIDEyOCwgNzYsIDQ4LCAKKyAgICA0OCwgNTQsIDY1LCAxMjgsIDc2LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA3NiwgNDUsIDg0LCA4OSwgODAsIDE5NywgNzYsIAorICAgIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgNzUsIDg5LCA4NSwgODIsIDczLCA3MywgMTI4LCA3NSwgODksIDg1LCAKKyAgICAxMjgsIDc1LCA4OSwgNzksIDEyOCwgNzUsIDg5LCA3NiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDg5LCA3MywgMTI4LCAKKyAgICA3NSwgODksIDY5LCAxMjgsIDc1LCA4OSwgNjUsIDg0LCA3MiwgNzksIDIxMSwgNzUsIDg5LCA2NSwgNjUsIDEyOCwgNzUsIAorICAgIDg5LCA2NSwgMTI4LCA3NSwgODgsIDg3LCA3MywgMTI4LCA3NSwgODgsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA4NywgCisgICAgNjksIDEyOCwgNzUsIDg4LCA4NywgNjUsIDY1LCAxMjgsIDc1LCA4OCwgODcsIDY1LCAxMjgsIDc1LCA4OCwgODUsIDEyOCwgCisgICAgNzUsIDg4LCA3OSwgMTI4LCA3NSwgODgsIDczLCAxMjgsIDc1LCA4OCwgNjksIDY5LCAxMjgsIDc1LCA4OCwgNjksIDEyOCwgCisgICAgNzUsIDg4LCA2NSwgNjUsIDEyOCwgNzUsIDg4LCA2NSwgMTI4LCA3NSwgODcsIDg1LCA1MSwgNDksIDU2LCAxMjgsIDc1LCAKKyAgICA4NywgNzksIDc5LCAxMjgsIDc1LCA4NywgNzksIDEyOCwgNzUsIDg3LCA3MywgNzMsIDEyOCwgNzUsIDg3LCA3MywgMTI4LCAKKyAgICA3NSwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODcsIDY5LCAxMjgsIDc1LCA4NywgNjUsIDg5LCAxMjgsIDc1LCA4NywgNjUsIAorICAgIDY5LCA4NCwgMTI4LCA3NSwgODcsIDY1LCA2NSwgMTI4LCA3NSwgODYsIDY1LCAxMjgsIDc1LCA4NiwgMTI4LCA3NSwgODUsIAorICAgIDg4LCAxMjgsIDc1LCA4NSwgODUsIDcyLCAxMjgsIDc1LCA4NSwgODQsIDEyOCwgNzUsIDg1LCA4MywgNzcsIDY1LCAxMjgsIAorICAgIDc1LCA4NSwgODMsIDcyLCA4NSwgNTAsIDEyOCwgNzUsIDg1LCA4MiwgODgsIDEyOCwgNzUsIDg1LCA4MiwgODUsIDkwLCA2OSwgCisgICAgNzMsIDgyLCA3OSwgMTI4LCA3NSwgODUsIDgyLCA4NCwgMTI4LCA3NSwgODUsIDgyLCA3OSwgNzksIDc4LCA2OSwgMTI4LCAKKyAgICA3NSwgODUsIDgyLCAxMjgsIDc1LCA4NSwgMjEwLCA3NSwgODUsIDgxLCAxMjgsIDc1LCA4NSwgNzksIDg4LCAxMjgsIDc1LCAKKyAgICA4NSwgNzksIDgwLCAxMjgsIDc1LCA4NSwgNzksIDIwOCwgNzUsIDg1LCA3OSwgNzcsIDEyOCwgNzUsIDg1LCA3OSwgMTI4LCAKKyAgICA3NSwgODUsIDc4LCA3MSwgMTI4LCA3NSwgODUsIDc4LCA2OCwgNjgsIDY1LCA3NiwgNzMsIDg5LCA2NSwgMTI4LCA3NSwgODUsIAorICAgIDc2LCAxMjgsIDc1LCA4NSwgMjA0LCA3NSwgODUsIDY5LCA4NCwgMTI4LCA3NSwgODUsIDU1LCAxMjgsIDc1LCA4NSwgNTIsIAorICAgIDEyOCwgNzUsIDg1LCAxODAsIDc1LCA4NSwgNTEsIDEyOCwgNzUsIDg1LCAxNzksIDc1LCA4NCwgMTI4LCA3NSwgODMsIDgzLCAKKyAgICA4NSwgODUsIDEyOCwgNzUsIDgzLCA4MywgODUsIDEyOCwgNzUsIDgzLCA4MywgNzksIDc5LCAxMjgsIDc1LCA4MywgODMsIAorICAgIDc5LCAxMjgsIDc1LCA4MywgODMsIDczLCA3MywgMTI4LCA3NSwgODMsIDgzLCA3MywgMTI4LCA3NSwgODMsIDgzLCA2OSwgCisgICAgNjksIDEyOCwgNzUsIDgzLCA4MywgNjksIDEyOCwgNzUsIDgzLCA4MywgNjUsIDg1LCAxMjgsIDc1LCA4MywgODMsIDY1LCAKKyAgICA3MywgMTI4LCA3NSwgODMsIDgzLCA2NSwgNjUsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDEyOCwgNzUsIDgzLCA4MywgMTI4LCAKKyAgICA3NSwgODMsIDczLCAxMjgsIDc1LCA4MiwgNjksIDc3LCA2NSwgODMsIDg0LCA3MywgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIAorICAgIDc3LCA3OSwgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzksIDc4LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDc5LCAKKyAgICA3NSwgNzksIDg1LCA3MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNjUsIDg0LCA2NSwgCisgICAgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCAxOTMsIDc1LCA4MCwgODUsIDEyOCwgNzUsIDgwLCA3OSwgODEsIDEyOCwgCisgICAgNzUsIDgwLCA3OSwgNzksIDEyOCwgNzUsIDgwLCA3OSwgMTI4LCA3NSwgODAsIDczLCAxMjgsIDc1LCA4MCwgNjksIDg1LCAKKyAgICA4OCwgMTI4LCA3NSwgODAsIDY5LCA2OSwgMTI4LCA3NSwgODAsIDY5LCAxMjgsIDc1LCA4MCwgNjUsIDgyLCA2NSwgODEsIAorICAgIDEyOCwgNzUsIDgwLCA2NSwgNzgsIDEyOCwgNzUsIDgwLCA2NSwgMTI4LCA3NSwgNzksIDg4LCAxMjgsIDc1LCA3OSwgODYsIAorICAgIDg1LCA4NSwgMTI4LCA3NSwgNzksIDg0LCA3OSwgMTI4LCA3NSwgNzksIDgyLCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA3OSwgCisgICAgODIsIDc5LCA3OCwgNzMsIDgzLCAxMjgsIDc1LCA3OSwgODIsIDY5LCA2NSwgMjA2LCA3NSwgNzksIDgyLCA2NSwgNzgsIDczLCAKKyAgICAxOTUsIDc1LCA3OSwgODEsIDc4LCA2OCwgNzksIDc4LCAxMjgsIDc1LCA3OSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNzksIAorICAgIDgwLCAxMjgsIDc1LCA3OSwgNzksIDgwLCA3OSwgMTI4LCA3NSwgNzksIDc5LCA3NywgODUsIDg1LCA4NCwgMTI4LCA3NSwgCisgICAgNzksIDc5LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIDc3LCA2NSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCAKKyAgICA3NywgMTkzLCA3NSwgNzksIDc3LCAyMDEsIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDY1LCAxMjgsIDc1LCA3OSwgNzcsIAorICAgIDY2LCA4NSwgODYsIDE5MywgNzUsIDc5LCA3NywgNjYsIDIxMywgNzUsIDc5LCA3NSwgNzksIDEyOCwgNzUsIDc5LCA3NSwgCisgICAgMTI4LCA3NSwgNzksIDIwMywgNzUsIDc5LCA3MywgMTI4LCA3NSwgNzksIDIwMSwgNzUsIDc5LCA3MiwgMTI4LCA3NSwgNzksIAorICAgIDcxLCA3MiwgNzksIDc3LCAxMjgsIDc1LCA3OSwgNjksIDg0LCAxMjgsIDc1LCA3OSwgNjUsIDc2LCA2NSwgMTI4LCA3NSwgCisgICAgNzksIDY1LCAxMjgsIDc1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCAyMTIsIDc1LCAKKyAgICA3OCwgNzMsIDcwLCA2OSwgMTI4LCA3NSwgNzgsIDczLCA3MCwgMTk3LCA3NSwgNzcsIDEyOCwgNzUsIDIwNSwgNzUsIDc2LCAKKyAgICA3MywgODQsIDc5LCA3OCwgMTI4LCA3NSwgNzYsIDY1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCA3NywgCisgICAgMTkzLCA3NSwgNzYsIDY1LCAxMjgsIDc1LCA3NiwgMTI4LCA3NSwgNzUsIDg1LCAxMjgsIDc1LCA3NSwgNzksIDEyOCwgNzUsIAorICAgIDc1LCA3MywgMTI4LCA3NSwgNzUsIDY5LCA2OSwgMTI4LCA3NSwgNzUsIDY5LCAxMjgsIDc1LCA3NSwgNjUsIDEyOCwgNzUsIAorICAgIDc1LCAxMjgsIDc1LCA3NCwgNjksIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgCisgICAgODQsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIAorICAgIDc5LCA3NSwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc1LCA3MywgCisgICAgODksIDY5LCA3OSwgNzUsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIAorICAgIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCAKKyAgICA3NSwgNzIsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIAorICAgIDc1LCA3MywgODksIDY5LCA3OSwgMjAzLCA3NSwgNzMsIDg4LCAxMjgsIDc1LCA3MywgODQsIDEyOCwgNzUsIDczLCA4MywgCisgICAgODMsIDczLCA3OCwgMTk5LCA3NSwgNzMsIDgzLCA4MywgMTI4LCA3NSwgNzMsIDgzLCAyMTEsIDc1LCA3MywgODMsIDczLCAKKyAgICA3NywgNTMsIDEyOCwgNzUsIDczLCA4MywgNzMsIDc3LCAxODEsIDc1LCA3MywgODMsIDcyLCAxMjgsIDc1LCA3MywgODMsIAorICAgIDY1LCA3NiwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgODcsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3NywgCisgICAgNjksIDY5LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzEsIDg1LCA4MiwgNjUsIDc3LCA4NSwgMTI4LCAKKyAgICA3NSwgNzMsIDgyLCA3OSwgMTI4LCA3NSwgNzMsIDgyLCA3MSwgNzIsIDczLCAyMTgsIDc1LCA3MywgODEsIDEyOCwgNzUsIAorICAgIDczLCA4MCwgMTI4LCA3NSwgNzMsIDIwOCwgNzUsIDczLCA3OCwgODMsIDcyLCA3MywgODAsIDEyOCwgNzUsIDczLCA3OCwgCisgICAgNjgsIDY5LCA4MiwgNzEsIDY1LCA4MiwgODQsIDY5LCA3OCwgMTI4LCA3NSwgNzMsIDc3LCA3OSwgNzgsIDc5LCAxMjgsIDc1LCAKKyAgICA3MywgNzMsIDEyOCwgNzUsIDczLCA3MiwgMTI4LCA3NSwgNzMsIDY5LCA4OCwgMTI4LCA3NSwgNzMsIDY5LCA4MCwgMTI4LCAKKyAgICA3NSwgNzMsIDY5LCA2OSwgNzcsIDEyOCwgNzUsIDczLCA2OSwgMTI4LCA3NSwgNzMsIDY4LCAxMjgsIDc1LCA3MywgMTk2LCAKKyAgICA3NSwgNzMsIDY3LCA3NSwgMTI4LCA3NSwgNzIsIDkwLCAxMjgsIDc1LCA3MiwgODcsIDY1LCA3MywgMTI4LCA3NSwgNzIsIAorICAgIDg1LCA2OSwgNzgsIDQ1LCA3NiwgODUsIDE5NywgNzUsIDcyLCA4NSwgNjksIDIwNiwgNzUsIDcyLCA4NSwgNjgsIDY1LCA3NywgCisgICAgMTI4LCA3NSwgNzIsIDg1LCA2NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgODUsIDEyOCwgNzUsIDcyLCA3OSwgMjEyLCA3NSwgCisgICAgNzIsIDc5LCA3OCwgMTI4LCA3NSwgNzIsIDc5LCA3NywgODUsIDg0LCAxMjgsIDc1LCA3MiwgNzksIDEyOCwgNzUsIDcyLCAKKyAgICAyMDcsIDc1LCA3MiwgNzcsIDIxMywgNzUsIDcyLCA3MywgODQsIDEyOCwgNzUsIDcyLCA3MywgNzgsIDg5LCA2NSwgMTI4LCAKKyAgICA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCAyMDAsIDc1LCA3MiwgNzMsIDEyOCwgNzUsIDcyLCA3MiwgNzksIDEyOCwgNzUsIAorICAgIDcyLCA3MiwgNjUsIDEyOCwgNzUsIDcyLCA2OSwgODQsIDcyLCAxMjgsIDc1LCA3MiwgNjksIDczLCAxMjgsIDc1LCA3MiwgCisgICAgNjksIDY5LCAxMjgsIDc1LCA3MiwgNjksIDEyOCwgNzUsIDcyLCA2NSwgODIsIDc5LCA4MywgNzIsIDg0LCA3MiwgMjAxLCAKKyAgICA3NSwgNzIsIDY1LCA4MiwgMTI4LCA3NSwgNzIsIDY1LCA4MCwgNzIsIDEyOCwgNzUsIDcyLCA2NSwgNzgsIDE5OSwgNzUsIAorICAgIDcyLCA2NSwgNzgsIDY4LCAxOTMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIDc1LCA3MiwgNjUsIDc3LCA4NCwgMjAxLCA3NSwgCisgICAgNzIsIDY1LCA3NSwgNjUsIDgzLCA4MywgNzMsIDY1LCAyMDYsIDc1LCA3MiwgNjUsIDczLCAxMjgsIDc1LCA3MiwgNjUsIDcyLCAKICAgICAxMjgsIDc1LCA3MiwgNjUsIDIwMCwgNzUsIDcyLCA2NSwgNjUsIDEyOCwgNzUsIDcxLCAxMjgsIDc1LCA2OSwgODksIDY3LCAKICAgICA2NSwgODAsIDEyOCwgNzUsIDY5LCA4OSwgNjcsIDY1LCAyMDgsIDc1LCA2OSwgODksIDY2LCA3OSwgNjUsIDgyLCA2OCwgCiAgICAgMTI4LCA3NSwgNjksIDg4LCAxMjgsIDc1LCA2OSwgODUsIDg5LCA2OSwgODUsIDg4LCAxMjgsIDc1LCA2OSwgODUsIDgzLCAKQEAgLTIxNDEsNzEgKzIyODcsNzQgQEAKICAgICA2OSwgNjksIDgwLCA3MywgNzgsIDE5OSwgNzUsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDc1LCA2NywgNjUsIDc2LCAxMjgsIAogICAgIDc1LCA2NiwgMTI4LCA3NSwgNjUsIDkwLCA2NSwgNzUsIDIwMCwgNzUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgCiAgICAgNzUsIDY1LCA4OSwgNjUsIDIwMCwgNzUsIDY1LCA4OCwgMTI4LCA3NSwgNjUsIDg3LCA3MywgMTI4LCA3NSwgNjUsIDg2LCAKLSAgICA4OSwgNzUsIDY1LCAxMjgsIDc1LCA2NSwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDg1LCAyMDYsIDc1LCA2NSwgODQsIAotICAgIDc5LCAxMjgsIDc1LCA2NSwgODQsIDcyLCA3MywgODMsIDg0LCA3MywgMTI4LCA3NSwgNjUsIDg0LCA3MiwgNjUsIDc1LCAKLSAgICAxOTMsIDc1LCA2NSwgODQsIDY1LCA4NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDY1LCA4NCwgNjUsIDg2LCAxOTMsIAotICAgIDc1LCA2NSwgODQsIDY1LCA3NSwgNjUsIDc4LCA2NSwgNDUsIDcyLCA3MywgODIsIDY1LCA3MSwgNjUsIDc4LCAxOTMsIDc1LCAKLSAgICA2NSwgODMsIDgyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgNjUsIDg0LCA2NSwgMjA2LCA3NSwgNjUsIAotICAgIDgzLCA4MiwgNjUsIDEyOCwgNzUsIDY1LCA4MywgODIsIDE5MywgNzUsIDY1LCA4MywgNzUsIDY1LCA3NiwgMTI4LCA3NSwgCi0gICAgNjUsIDgzLCA3NSwgNjUsIDIwNCwgNzUsIDY1LCA4MywgNzIsIDc3LCA3MywgODIsIDIwMSwgNzUsIDY1LCA4MiwgODMsIDcyLCAKLSAgICA2NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODIsIDc5LCA4MiwgNzMsIDczLCAxMjgsIDc1LCA2NSwgODIsIDIwNywgNzUsIAotICAgIDY1LCA4MiwgNjksIDIwNiwgNzUsIDY1LCA4MiwgNjUsIDg0LCA4NCwgNzksIDEyOCwgNzUsIDY1LCA4MiwgNjUsIDc4LCAKLSAgICAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgCi0gICAgODAsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDY1LCAKLSAgICA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgCi0gICAgNjksIDc5LCA4NSwgNzgsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3NSwgNjUsIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDY1LCAKLSAgICA4MCwgODAsIDE5MywgNzUsIDY1LCA4MCwgNzksIDEyOCwgNzUsIDY1LCA4MCwgNzIsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIAotICAgIDc2LCAxMjgsIDc1LCA2NSwgODAsIDY1LCAxMjgsIDc1LCA2NSwgNzgsIDg0LCA2NSwgNzQsIDE5MywgNzUsIDY1LCA3OCwgCi0gICAgNzEsIDEyOCwgNzUsIDY1LCA3OCwgMTk5LCA3NSwgNjUsIDc4LCA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgNzcsIDUyLCAKLSAgICAxMjgsIDc1LCA2NSwgNzcsIDUwLCAxMjgsIDc1LCA2NSwgNzcsIDEyOCwgNzUsIDY1LCA3NSwgNzksIDEyOCwgNzUsIDY1LCAKLSAgICA3NSwgNjUsIDY2LCA2NSwgODQsIDEyOCwgNzUsIDY1LCA3NSwgMTI4LCA3NSwgNjUsIDIwMywgNzUsIDY1LCA3MywgODIsIAotICAgIDczLCAxMjgsIDc1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCAyMDEsIDc1LCA2NSwgNzAsIDY1LCAxMjgsIDc1LCA2NSwgNzAsIAotICAgIDEyOCwgNzUsIDY1LCAxOTgsIDc1LCA2NSwgNjgsIDUzLCAxMjgsIDc1LCA2NSwgNjgsIDE4MSwgNzUsIDY1LCA2OCwgNTIsIAotICAgIDEyOCwgNzUsIDY1LCA2OCwgNTEsIDEyOCwgNzUsIDY1LCA2OCwgMTc5LCA3NSwgNjUsIDY4LCA1MCwgMTI4LCA3NSwgNjUsIAotICAgIDY4LCAxMjgsIDc1LCA2NSwgNjYsIDE5MywgNzUsIDY1LCA2NiwgMTI4LCA3NSwgNjUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIAotICAgIDY1LCA3MCwgODUsIDEyOCwgNzUsIDY1LCA2NSwgNzAsIDEyOCwgNzUsIDY1LCA1MCwgMTI4LCA3NSwgNjUsIDE3OCwgNzUsIAotICAgIDQ4LCA0OCwgNTYsIDEyOCwgNzUsIDQ4LCA0OCwgNTUsIDEyOCwgNzUsIDQ4LCA0OCwgNTQsIDEyOCwgNzUsIDQ4LCA0OCwgCi0gICAgNTMsIDEyOCwgNzUsIDQ4LCA0OCwgNTIsIDEyOCwgNzUsIDQ4LCA0OCwgNTEsIDEyOCwgNzUsIDQ4LCA0OCwgNTAsIDEyOCwgCi0gICAgNzUsIDQ4LCA0OCwgNDksIDEyOCwgNzQsIDg3LCA2NSwgMTI4LCA3NCwgODUsIDg1LCAxMjgsIDc0LCA4NSwgODQsIDEyOCwgCi0gICAgNzQsIDg1LCA4MCwgNzMsIDg0LCA2OSwgODIsIDEyOCwgNzQsIDg1LCA3OSwgODQsIDEyOCwgNzQsIDg1LCA3OSwgODAsIAotICAgIDEyOCwgNzQsIDg1LCA3OCwgNzksIDEyOCwgNzQsIDg1LCA3OCwgNjksIDEyOCwgNzQsIDg1LCA3NiwgODksIDEyOCwgNzQsIAotICAgIDg1LCA2OSwgODUsIDczLCAxMjgsIDc0LCA4NSwgNjgsIDg1LCA3NiwgMTI4LCA3NCwgODUsIDY4LCA3MSwgNjksIDEyOCwgCi0gICAgNzQsIDg1LCA2OCwgNjksIDc5LCA0NSwgODMsIDgwLCA2NSwgNzgsIDczLCA4MywgMjAwLCA3NCwgNzksIDg5LCA3OSwgODUsIAotICAgIDIxMSwgNzQsIDc5LCA4OSwgMTI4LCA3NCwgNzksIDg2LCA2OSwgMTI4LCA3NCwgNzksIDIxMiwgNzQsIDc5LCA3OCwgNzEsIAotICAgIDEyOCwgNzQsIDc5LCA3OCwgMTkzLCA3NCwgNzksIDc1LCA2OSwgODIsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDY5LCA2OCwgCi0gICAgMTI4LCA3NCwgNzksIDczLCA3OCwgMTI4LCA3NCwgNzksIDY1LCAxMjgsIDc0LCA3NCwgODksIDg4LCAxMjgsIDc0LCA3NCwgCi0gICAgODksIDg0LCAxMjgsIDc0LCA3NCwgODksIDgwLCAxMjgsIDc0LCA3NCwgODksIDEyOCwgNzQsIDc0LCA4NSwgODgsIDEyOCwgCi0gICAgNzQsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDg4LCAxMjgsIDc0LCA3NCwgODUsIDgyLCAxMjgsIDc0LCAKLSAgICA3NCwgODUsIDgwLCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgODAsIDEyOCwgNzQsIAotICAgIDc0LCA4NSwgNzksIDEyOCwgNzQsIDc0LCA4NSwgMTI4LCA3NCwgNzQsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDc5LCA4NCwgCi0gICAgMTI4LCA3NCwgNzQsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIDc5LCAxMjgsIDc0LCA3NCwgNzMsIDg4LCAxMjgsIDc0LCA3NCwgCi0gICAgNzMsIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3NCwgNzQsIDczLCAKLSAgICA2OSwgODQsIDEyOCwgNzQsIDc0LCA3MywgNjksIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCAxMjgsIDc0LCA3NCwgNzMsIAotICAgIDEyOCwgNzQsIDc0LCA2OSwgNjksIDEyOCwgNzQsIDc0LCA2OSwgMTI4LCA3NCwgNzQsIDY1LCAxMjgsIDc0LCA3MywgNzYsIAotICAgIDEyOCwgNzQsIDczLCA3MiwgODYsIDY1LCA3NywgODUsIDc2LCA3MywgODksIDY1LCAxMjgsIDc0LCA3MywgNjUsIDEyOCwgCi0gICAgNzQsIDcyLCA3OSwgMTI4LCA3NCwgNzIsIDY5LCA3MiwgMTI4LCA3NCwgNzIsIDY1LCA3OCwgMTI4LCA3NCwgNzIsIDY1LCAKLSAgICA3NywgMTI4LCA3NCwgNzIsIDY1LCAxMjgsIDc0LCA2OSwgODUsIDEyOCwgNzQsIDY5LCA4MiwgODUsIDgzLCA2NSwgNzYsIAotICAgIDY5LCA3NywgMTI4LCA3NCwgNjksIDgyLCA2NSwgMjA2LCA3NCwgNjksIDgyLCA2NSwgMTI4LCA3NCwgNjksIDgyLCAxMjgsIAotICAgIDc0LCA2OSwgNzIsIDEyOCwgNzQsIDY5LCAyMDAsIDc0LCA2OSwgNzEsIDc5LCA3MSwgNjUsIDc4LCAxMjgsIDc0LCA2OSwgCi0gICAgNjksIDc3LCAxMjgsIDc0LCA2OSwgNjUsIDc4LCA4MywgMTI4LCA3NCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCAKLSAgICA3NCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzQsIDY1LCA4MiwgMTI4LCA3NCwgNjUsIDgwLCA2NSwgNzgsIAotICAgIDY5LCA4MywgMTk3LCA3NCwgNjUsIDgwLCA2NSwgNzgsIDEyOCwgNzQsIDY1LCA3OCwgODUsIDY1LCA4MiwgODksIDEyOCwgCi0gICAgNzQsIDY1LCA3NiwgNzYsIDY1LCA3NCwgNjUsIDc2LCA2NSwgNzYsIDc5LCA4NSwgNzIsIDc5LCA4NSwgMTI4LCA3NCwgNjUsIAotICAgIDY4LCA2OSwgMTI4LCA3NCwgNjUsIDY3LCA3NSwgNDUsIDc5LCA0NSwgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgCi0gICAgNzQsIDY1LCA2NywgMjAzLCA3NCwgNDUsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgMjAyLCAKLSAgICA3MywgOTAsIDcyLCA3MywgODQsIDgzLCA2NSwgMTI4LCA3MywgOTAsIDcyLCA3MywgODQsIDgzLCAxOTMsIDczLCA5MCwgNzIsIAotICAgIDY5LCAxMjgsIDczLCA5MCwgNjUsIDc1LCA2NSwgODksIDE5MywgNzMsIDg5LCA2OSwgNzUsIDEyOCwgNzMsIDg5LCA2NSwgCi0gICAgNzgsIDc4LCA2NSwgMTI4LCA3MywgODUsIDc0LCA2NSwgMTI4LCA3MywgODUsIDEyOCwgNzMsIDg0LCAyMTEsIDczLCA4NCwgCi0gICAgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgODQsIDY5LCA3NywgMTI4LCA3MywgODMsIDgzLCA3MiwgNjUsIDgyLCAKLSAgICAxMjgsIDczLCA4MywgNzksIDc4LCAxMjgsIDczLCA4MywgNzksIDIwNiwgNzMsIDgzLCA2OSwgNzgsIDQ1LCA3MywgODMsIAotICAgIDY5LCA3OCwgMTI4LCA3MywgODMsIDY1LCA3NSwgNzMsIDE5MywgNzMsIDgzLCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAKLSAgICAxMjgsIDczLCA4MiwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODIsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIAotICAgIDY1LCAxMjgsIDczLCA4MiwgNzksIDc4LCA0NSwgNjcsIDc5LCA4MCwgODAsIDY5LCAyMTAsIDczLCA4MiwgNzksIDc4LCAKLSAgICAxMjgsIDczLCA3OSwgODQsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDczLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNzMsIAotICAgIDc5LCA4NCwgNjUsIDEyOCwgNzMsIDc5LCA4NCwgMTkzLCA3MywgNzksIDgyLCAxMjgsIDczLCA3OSwgNjgsIDcyLCA2NSwgCi0gICAgNjgsIDcyLCAxMjgsIDczLCA3OCwgODYsIDczLCA4MywgNzMsIDY2LCA3NiwgMTk3LCA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCAKLSAgICA2OSwgNjgsIDEyOCwgNzMsIDc4LCA4NiwgNjksIDgyLCA4NCwgNjksIDE5NiwgNzMsIDc4LCA4NiwgNjksIDgyLCA4MywgCi0gICAgMTk3LCA3MywgNzgsIDg0LCA3MywgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCAKKyAgICA4OSwgNzUsIDY1LCAxMjgsIDc1LCA2NSwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDg1LCAyMDYsIDc1LCA2NSwgODUsIAorICAgIDEyOCwgNzUsIDY1LCA4NCwgNzksIDEyOCwgNzUsIDY1LCA4NCwgNzIsIDczLCA4MywgODQsIDczLCAxMjgsIDc1LCA2NSwgCisgICAgODQsIDcyLCA2NSwgNzUsIDE5MywgNzUsIDY1LCA4NCwgNjUsIDg2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgNjUsIDg0LCAKKyAgICA2NSwgODYsIDE5MywgNzUsIDY1LCA4NCwgNjUsIDc1LCA2NSwgNzgsIDY1LCA0NSwgNzIsIDczLCA4MiwgNjUsIDcxLCA2NSwgCisgICAgNzgsIDE5MywgNzUsIDY1LCA4MywgODIsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODMsIDgyLCA2NSwgODQsIDY1LCAKKyAgICAyMDYsIDc1LCA2NSwgODMsIDgyLCA2NSwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgMTkzLCA3NSwgNjUsIDgzLCA3NSwgNjUsIAorICAgIDc2LCAxMjgsIDc1LCA2NSwgODMsIDc1LCA2NSwgMjA0LCA3NSwgNjUsIDgzLCA3MiwgNzcsIDczLCA4MiwgMjAxLCA3NSwgCisgICAgNjUsIDgyLCA4MywgNzIsIDY1LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4MiwgNzksIDgyLCA3MywgNzMsIDEyOCwgNzUsIDY1LCAKKyAgICA4MiwgMjA3LCA3NSwgNjUsIDgyLCA2OSwgMjA2LCA3NSwgNjUsIDgyLCA2NSwgODQsIDg0LCA3OSwgMTI4LCA3NSwgNjUsIAorICAgIDgyLCA2NSwgNzgsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDc1LCAKKyAgICA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDc1LCA2NSwgODAsIDgwLCA2NSwgCisgICAgMTI4LCA3NSwgNjUsIDgwLCA4MCwgMTkzLCA3NSwgNjUsIDgwLCA3OSwgMTI4LCA3NSwgNjUsIDgwLCA3MiwgMTI4LCA3NSwgCisgICAgNjUsIDgwLCA2NSwgNzYsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIDEyOCwgNzUsIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCAKKyAgICA3NSwgNjUsIDc4LCA3MSwgMTI4LCA3NSwgNjUsIDc4LCAxOTksIDc1LCA2NSwgNzgsIDY1LCA3NSwgNzksIDEyOCwgNzUsIAorICAgIDY1LCA3NywgNTIsIDEyOCwgNzUsIDY1LCA3NywgNTAsIDEyOCwgNzUsIDY1LCA3NywgMTI4LCA3NSwgNjUsIDc1LCA3OSwgCisgICAgMTI4LCA3NSwgNjUsIDc1LCA2NSwgNjYsIDY1LCA4NCwgMTI4LCA3NSwgNjUsIDc1LCAxMjgsIDc1LCA2NSwgMjAzLCA3NSwgCisgICAgNjUsIDczLCA4NCwgNzIsIDIwMSwgNzUsIDY1LCA3MywgODIsIDczLCAxMjgsIDc1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCAKKyAgICAyMDEsIDc1LCA2NSwgNzAsIDY1LCAxMjgsIDc1LCA2NSwgNzAsIDEyOCwgNzUsIDY1LCAxOTgsIDc1LCA2NSwgNjgsIDUzLCAKKyAgICAxMjgsIDc1LCA2NSwgNjgsIDE4MSwgNzUsIDY1LCA2OCwgNTIsIDEyOCwgNzUsIDY1LCA2OCwgNTEsIDEyOCwgNzUsIDY1LCAKKyAgICA2OCwgMTc5LCA3NSwgNjUsIDY4LCA1MCwgMTI4LCA3NSwgNjUsIDY4LCAxMjgsIDc1LCA2NSwgNjYsIDE5MywgNzUsIDY1LCAKKyAgICA2NiwgMTI4LCA3NSwgNjUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzUsIDY1LCA2NSwgNzAsIAorICAgIDEyOCwgNzUsIDY1LCA1MCwgMTI4LCA3NSwgNjUsIDE3OCwgNzUsIDQ4LCA0OCwgNTYsIDEyOCwgNzUsIDQ4LCA0OCwgNTUsIAorICAgIDEyOCwgNzUsIDQ4LCA0OCwgNTQsIDEyOCwgNzUsIDQ4LCA0OCwgNTMsIDEyOCwgNzUsIDQ4LCA0OCwgNTIsIDEyOCwgNzUsIAorICAgIDQ4LCA0OCwgNTEsIDEyOCwgNzUsIDQ4LCA0OCwgNTAsIDEyOCwgNzUsIDQ4LCA0OCwgNDksIDEyOCwgNzQsIDg3LCA2NSwgCisgICAgMTI4LCA3NCwgODUsIDg1LCAxMjgsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDg1LCA4MywgODQsIDczLCA3MCwgNzMsIDY3LCAKKyAgICA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzQsIDg1LCA4MCwgNzMsIDg0LCA2OSwgODIsIDEyOCwgNzQsIDg1LCA3OSwgODQsIAorICAgIDEyOCwgNzQsIDg1LCA3OSwgODAsIDEyOCwgNzQsIDg1LCA3OCwgNzksIDEyOCwgNzQsIDg1LCA3OCwgNjksIDEyOCwgNzQsIAorICAgIDg1LCA3NiwgODksIDEyOCwgNzQsIDg1LCA2OSwgODUsIDczLCAxMjgsIDc0LCA4NSwgNjgsIDg1LCA3NiwgMTI4LCA3NCwgCisgICAgODUsIDY4LCA3MSwgNjksIDEyOCwgNzQsIDg1LCA2OCwgNjksIDc5LCA0NSwgODMsIDgwLCA2NSwgNzgsIDczLCA4MywgMjAwLCAKKyAgICA3NCwgNzksIDg5LCA3OSwgODUsIDIxMSwgNzQsIDc5LCA4OSwgMTI4LCA3NCwgNzksIDg2LCA2OSwgMTI4LCA3NCwgNzksIAorICAgIDIxMiwgNzQsIDc5LCA3OCwgNzEsIDEyOCwgNzQsIDc5LCA3OCwgMTkzLCA3NCwgNzksIDc1LCA2OSwgODIsIDEyOCwgNzQsIAorICAgIDc5LCA3MywgNzgsIDY5LCA2OCwgMTI4LCA3NCwgNzksIDczLCA3OCwgMTI4LCA3NCwgNzksIDY1LCAxMjgsIDc0LCA3NCwgCisgICAgODksIDg4LCAxMjgsIDc0LCA3NCwgODksIDg0LCAxMjgsIDc0LCA3NCwgODksIDgwLCAxMjgsIDc0LCA3NCwgODksIDEyOCwgCisgICAgNzQsIDc0LCA4NSwgODgsIDEyOCwgNzQsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDg4LCAxMjgsIDc0LCAKKyAgICA3NCwgODUsIDgyLCAxMjgsIDc0LCA3NCwgODUsIDgwLCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIAorICAgIDg1LCA3OSwgODAsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDEyOCwgNzQsIDc0LCA4NSwgMTI4LCA3NCwgNzQsIDc5LCA4OCwgCisgICAgMTI4LCA3NCwgNzQsIDc5LCA4NCwgMTI4LCA3NCwgNzQsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIDc5LCAxMjgsIDc0LCA3NCwgCisgICAgNzMsIDg4LCAxMjgsIDc0LCA3NCwgNzMsIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCAKKyAgICA4OCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzQsIDc0LCA3MywgNjksIDgwLCAxMjgsIDc0LCA3NCwgNzMsIAorICAgIDY5LCAxMjgsIDc0LCA3NCwgNzMsIDEyOCwgNzQsIDc0LCA2OSwgNjksIDEyOCwgNzQsIDc0LCA2OSwgMTI4LCA3NCwgNzQsIAorICAgIDY1LCAxMjgsIDc0LCA3MywgNzYsIDEyOCwgNzQsIDczLCA3MywgMTI4LCA3NCwgNzMsIDcyLCA4NiwgNjUsIDc3LCA4NSwgCisgICAgNzYsIDczLCA4OSwgNjUsIDEyOCwgNzQsIDczLCA2NSwgMTI4LCA3NCwgNzIsIDc5LCAxMjgsIDc0LCA3MiwgNjksIDcyLCAKKyAgICAxMjgsIDc0LCA3MiwgNjUsIDc4LCAxMjgsIDc0LCA3MiwgNjUsIDc3LCAxMjgsIDc0LCA3MiwgNjUsIDY1LCAxMjgsIDc0LCAKKyAgICA3MiwgNjUsIDEyOCwgNzQsIDY5LCA4NSwgMTI4LCA3NCwgNjksIDgyLCA4NSwgODMsIDY1LCA3NiwgNjksIDc3LCAxMjgsIAorICAgIDc0LCA2OSwgODIsIDY1LCAyMDYsIDc0LCA2OSwgODIsIDY1LCAxMjgsIDc0LCA2OSwgODIsIDEyOCwgNzQsIDY5LCA3MiwgCisgICAgMTI4LCA3NCwgNjksIDIwMCwgNzQsIDY5LCA3MSwgNzksIDcxLCA2NSwgNzgsIDEyOCwgNzQsIDY5LCA2OSwgNzcsIDEyOCwgCisgICAgNzQsIDY5LCA2NSwgNzgsIDgzLCAxMjgsIDc0LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc0LCA2NSwgODYsIDczLCAKKyAgICA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NCwgNjUsIDg1LCAxMjgsIDc0LCA2NSwgODIsIDEyOCwgNzQsIDY1LCA4MCwgNjUsIAorICAgIDc4LCA2OSwgODMsIDE5NywgNzQsIDY1LCA4MCwgNjUsIDc4LCAxMjgsIDc0LCA2NSwgNzgsIDg1LCA2NSwgODIsIDg5LCAKKyAgICAxMjgsIDc0LCA2NSwgNzYsIDc2LCA2NSwgNzQsIDY1LCA3NiwgNjUsIDc2LCA3OSwgODUsIDcyLCA3OSwgODUsIDEyOCwgNzQsIAorICAgIDY1LCA3MywgMTI4LCA3NCwgNjUsIDcyLCAxMjgsIDc0LCA2NSwgNjgsIDY5LCAxMjgsIDc0LCA2NSwgNjcsIDc1LCA0NSwgCisgICAgNzksIDQ1LCA3NiwgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA3NCwgNjUsIDY3LCAyMDMsIDc0LCA0NSwgODMsIDczLCAKKyAgICA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCAyMDIsIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDY1LCAxMjgsIAorICAgIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDE5MywgNzMsIDkwLCA3MiwgNjksIDEyOCwgNzMsIDkwLCA2NSwgNzUsIDY1LCA4OSwgCisgICAgMTkzLCA3MywgODksIDY5LCA3NSwgMTI4LCA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4NSwgNzQsIDY1LCAKKyAgICAxMjgsIDczLCA4NSwgMTI4LCA3MywgODQsIDIxMSwgNzMsIDg0LCA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCAKKyAgICA4NCwgNjksIDc3LCAxMjgsIDczLCA4MywgODMsIDcyLCA2NSwgODIsIDEyOCwgNzMsIDgzLCA3OSwgNzgsIDEyOCwgNzMsIAorICAgIDgzLCA3OSwgMjA2LCA3MywgODMsIDY5LCA3OCwgNDUsIDczLCA4MywgNjksIDc4LCAxMjgsIDczLCA4MywgNjUsIDc1LCA3MywgCisgICAgMTkzLCA3MywgODMsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzMsIDgyLCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDczLCA4MiwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDgyLCA3OSwgNzgsIDQ1LCA2NywgNzksIAorICAgIDgwLCA4MCwgNjksIDIxMCwgNzMsIDgyLCA3OSwgNzgsIDEyOCwgNzMsIDc5LCA4NCwgNzMsIDcwLCA3MywgNjksIDE5NiwgCisgICAgNzMsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA3MywgNzksIDg0LCA2NSwgMTI4LCA3MywgNzksIDg0LCAxOTMsIDczLCAKKyAgICA3OSwgODIsIDEyOCwgNzMsIDc5LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNzMsIDc4LCA4NiwgNzMsIDgzLCA3MywgNjYsIAorICAgIDc2LCAxOTcsIDczLCA3OCwgODYsIDY5LCA4MiwgODQsIDY5LCA2OCwgMTI4LCA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCA2OSwgCisgICAgMTk2LCA3MywgNzgsIDg2LCA2OSwgODIsIDgzLCAxOTcsIDczLCA3OCwgODQsIDgyLCA3OSwgNjgsIDg1LCA2NywgNjksIDgyLCAKKyAgICAxMjgsIDczLCA3OCwgODQsIDczLCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIAogICAgIDE5NSwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNzgsIDg0LCA2OSwgCiAgICAgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIAogICAgIDc4LCAxOTksIDczLCA3OCwgODQsIDY5LCA4MiwgODIsIDc5LCA2NiwgNjUsIDc4LCA3MSwgMTI4LCA3MywgNzgsIDg0LCA2OSwgCkBAIC0yMjM0LDEyMjYgKzIzODMsMTIzMyBAQAogICAgIDc4LCA2NywgNzIsIDEyOCwgNzMsIDc4LCA2NiwgNzksIDIxNiwgNzMsIDc4LCA2NSwgODAsIDEyOCwgNzMsIDc4LCA0NSwgCiAgICAgNjUsIDc2LCA2NSwgNzAsIDEyOCwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MywgNjUsIDIwNCwgNzMsIDc3LCA4MCwgNjksIDgyLCAKICAgICA3MCwgNjksIDY3LCA4NCwgODUsIDIwNSwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgNjUsIDEyOCwgNzMsIAotICAgIDc3LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgMTkzLCA3MywgNzcsIDczLCA4MywgNjksIDc5LCAyMTEsIDczLCA3NywgCi0gICAgNzMsIDc4LCA1MSwgMTI4LCA3MywgNzcsIDczLCA3OCwgMTI4LCA3MywgNzcsIDczLCAyMDYsIDczLCA3NywgNzMsIDcwLCAKLSAgICA4NCwgNzIsIDc5LCA4MiwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgNjUsIDEyOCwgNzMsIAotICAgIDc3LCA3MywgNzAsIDc5LCA3OCwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIDY4LCA3MywgNjUsIDgyLCA3MSwgNzksIDc4LCAKLSAgICAxMjgsIDczLCA3NywgNjUsIDcxLCAxOTcsIDczLCA3NiwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzYsIAotICAgIDg1LCA4OSwgMTI4LCA3MywgNzYsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA3NiwgODUsIDg0LCAKLSAgICAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUxLCAxMjgsIAotICAgIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCAyMTMsIDczLCA3NiwgNTAsIDEyOCwgCi0gICAgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDczLCA3NSwgNjUsIDgyLCAxOTMsIDczLCA3NCwgMTI4LCA3MywgNzMsIDg5LCAKLSAgICA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzEsIDczLCAxMjgsIDczLCA3MSwgMjAxLCA3MywgNzEsIDcxLCA4NywgODMsIAotICAgIDEyOCwgNzMsIDcwLCA3MywgNzgsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgCi0gICAgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3MywgNjksIDg1LCAKLSAgICA3OCwgNzEsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzMsIDY5LCA4NSwgCi0gICAgNzgsIDcxLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCA3MywgNjksIAotICAgIDg1LCA4MCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA3MywgCi0gICAgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIAotICAgIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDY3LCA3MywgNjksIDg1LCAKLSAgICA2NywgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3MywgNjksIAotICAgIDg1LCA3OCwgMTk5LCA3MywgNjgsIDc2LCA2OSwgMTI4LCA3MywgNjgsIDczLCA3NywgMTI4LCA3MywgNjgsIDczLCAyMDUsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDU3LCA0OCwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1NiwgNjgsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDY3LCAKLSAgICA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA1NywgNjksIDUxLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNjgsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDY1LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDU1LCA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1NSwgNTQsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDUzLCAKLSAgICA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1MywgNDksIDcwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNDksIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDQ4LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDU0LCA3MCwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1NCwgNjksIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCAKLSAgICA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIDU3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU0LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1NCwgNTMsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCAKLSAgICA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNTMsIDUzLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTEsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1NCwgNTAsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDcwLCAKLSAgICA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2OCwgNjksIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjYsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY2LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MywgNTcsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU2LCAKLSAgICA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MywgNjYsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTIsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUyLCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MSwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MywgNTEsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCAKLSAgICA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTUsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUzLCA0OSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MiwgNjksIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCAKLSAgICA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNTAsIDY4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDY1LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDY1LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNjUsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIAotICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNzAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDY1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDY1LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIAotICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIAotICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA0OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIAotICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA3MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIAotICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIAotICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTMsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIAotICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTEsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIAotICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNDksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIAotICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNzAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIAotICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIAotICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA0OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIAotICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA3MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIAotICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIAotICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTMsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIAotICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTEsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIAotICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNDksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIAotICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNzAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIAotICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIAotICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA0OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIAotICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA3MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIAotICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIAotICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTMsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIAotICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTEsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIAotICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNDksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA0OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIAotICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNzAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIAotICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIAotICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA0OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIAotICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIAotICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIAotICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTMsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDcwLCA3MywgNjcsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNjgsIDY5LCA3OCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzMsIDY3LCA3MiwgNzksIAotICAgIDg1LCAxMjgsIDczLCA2NywgNzIsIDc5LCA4MywgMTI4LCA3MywgNjcsIDcyLCA3MywgNzcsIDY1LCA4NCwgNzksIDgzLCAKLSAgICAxMjgsIDczLCA2NywgNzIsIDY1LCA2OCwgNzMsIDc4LCAxMjgsIDczLCA2NywgNjksIDc2LCA2NSwgNzgsIDY4LCA3MywgNjcsIAotICAgIDQ1LCA4OSwgODIsIDEyOCwgNzMsIDY2LCA3MywgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzMsIDY1LCA4NSwgNjgsIDY1LCAKLSAgICAxMjgsIDczLCA0OCwgNDksIDUzLCAxMjgsIDczLCA0OCwgNDksIDUyLCAxMjgsIDczLCA0OCwgNDksIDUxLCAxMjgsIDczLCAKLSAgICA0OCwgNDksIDUwLCAxMjgsIDczLCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgMTI4LCA3MywgNDgsIAotICAgIDQ5LCA0OCwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNDgsIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDczLCA0OCwgCi0gICAgNDgsIDU3LCAxMjgsIDczLCA0OCwgNDgsIDU2LCAxMjgsIDczLCA0OCwgNDgsIDU1LCAxMjgsIDczLCA0OCwgNDgsIDU0LCAKLSAgICAxMjgsIDczLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3MywgNDgsIDQ4LCA1MywgMTI4LCA3MywgNDgsIDQ4LCA1MiwgMTI4LCAKLSAgICA3MywgNDgsIDQ4LCA1MSwgMTI4LCA3MywgNDgsIDQ4LCA1MCwgMTI4LCA3MywgNDgsIDQ4LCA0OSwgMTI4LCA3MywgNDUsIAotICAgIDg5LCA4NSwgMTI4LCA3MywgNDUsIDg5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgCi0gICAgNjksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIDczLCA0NSwgODksIDY1LCA0NSwgNzksIDEyOCwgNzMsIDQ1LCAKLSAgICA4OSwgNjUsIDEyOCwgNzMsIDQ1LCA3OSwgNDUsIDczLCAxMjgsIDczLCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA2OSwgODUsIAotICAgIDEyOCwgNzMsIDQ1LCA2NiwgNjksIDY1LCA3NywgMTI4LCA3MywgNDUsIDY1LCA4MiwgNjUsIDY5LCA2NSwgMTI4LCA3MywgCi0gICAgNDUsIDY1LCAxMjgsIDcyLCA5MCwgOTAsIDkwLCA3MSwgMTI4LCA3MiwgOTAsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIDkwLCAKLSAgICA4MCwgMTI4LCA3MiwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgODcsIDcxLCAxMjgsIDcyLCA5MCwgODcsIDEyOCwgNzIsIDkwLCAKLSAgICA4NCwgMTI4LCA3MiwgOTAsIDcxLCAxMjgsIDcyLCA4OSwgODMsIDg0LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNzIsIAotICAgIDg5LCA4MCwgNzksIDY4LCA3MywgNjUsIDgzLCA4NCwgNzksIDc2LCA2OSwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCAKLSAgICA2NSwgODQsIDczLCA3OSwgMjA2LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCA0NSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIAotICAgIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCAyMDYsIDcyLCA4OCwgODcsIDcxLCAKLSAgICAxMjgsIDcyLCA4OCwgODUsIDc5LCA4OCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg4LCA4NSwgNzksIAotICAgIDgwLCAxMjgsIDcyLCA4OCwgODUsIDc5LCAxMjgsIDcyLCA4OCwgNzksIDg4LCAxMjgsIDcyLCA4OCwgNzksIDg0LCAxMjgsIAotICAgIDcyLCA4OCwgNzksIDgwLCAxMjgsIDcyLCA4OCwgNzksIDEyOCwgNzIsIDg4LCA3MywgODgsIDEyOCwgNzIsIDg4LCA3MywgCi0gICAgODQsIDEyOCwgNzIsIDg4LCA3MywgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDg4LCAxMjgsIDcyLCA4OCwgNzMsIDY5LCAKLSAgICA4NCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDEyOCwgNzIsIDg4LCA3MywgMTI4LCAKLSAgICA3MiwgODgsIDY5LCA4OCwgMTI4LCA3MiwgODgsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDY5LCAxMjgsIDcyLCA4OCwgNjUsIAotICAgIDg4LCAxMjgsIDcyLCA4OCwgNjUsIDg0LCAxMjgsIDcyLCA4OCwgNjUsIDgwLCAxMjgsIDcyLCA4OCwgNjUsIDEyOCwgNzIsIAotICAgIDg3LCA4NSwgMTI4LCA3MiwgODcsIDY1LCA3MywgODIsIDEyOCwgNzIsIDg2LCAxMjgsIDcyLCA4NSwgODIsIDY1LCA3OCwgCisgICAgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCAxOTMsIDczLCA3NywgNzgsIDEyOCwgNzMsIDc3LCA3MywgODMsIDY5LCAKKyAgICA3OSwgMjExLCA3MywgNzcsIDczLCA3OCwgNTEsIDEyOCwgNzMsIDc3LCA3MywgNzgsIDEyOCwgNzMsIDc3LCA3MywgMjA2LCAKKyAgICA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgCisgICAgODIsIDY1LCAxMjgsIDczLCA3NywgNzMsIDcwLCA3OSwgNzgsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDczLCA2OCwgNzMsIDY1LCAKKyAgICA4MiwgNzEsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDY1LCA3MSwgMTk3LCA3MywgNzYsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgNzMsIDc2LCA4NSwgODksIDEyOCwgNzMsIDc2LCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgCisgICAgNzYsIDg1LCA4NCwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCAKKyAgICA1MSwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgMjEzLCA3MywgNzYsIAorICAgIDUwLCAxMjgsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3MywgNzUsIDY1LCA4MiwgMTkzLCA3MywgNzQsIDEyOCwgNzMsIAorICAgIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDcxLCA3MywgMTI4LCA3MywgNzEsIDIwMSwgNzMsIDcxLCA3MSwgCisgICAgODcsIDgzLCAxMjgsIDczLCA3MCwgNzMsIDc4LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDg0LCA3MywgNzUsIDY5LCAKKyAgICA4NSwgODQsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzMsIAorICAgIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCAKKyAgICA2OSwgODUsIDc4LCA3MSwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIAorICAgIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3MywgNjksIDg1LCA3OCwgCisgICAgNzEsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzMsIAorICAgIDY5LCA4NSwgNjcsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgCisgICAgNzMsIDY5LCA4NSwgNzgsIDE5OSwgNzMsIDY4LCA3NiwgNjksIDEyOCwgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzMsIDY4LCAKKyAgICA3MywgMjA1LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU3LCA0OCwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNjgsIDU1LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDY3LCA2NSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNjgsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTUsIDY1LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU1LCA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTQsIDY4LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDUzLCA1MSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1MywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNDksIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTUsIDQ4LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU0LCA3MCwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNjksIDU2LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA1MCwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTQsIDU0LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU0LCA1MywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDU3LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA1MywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTEsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTQsIDUwLCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU0LCA1MCwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDUyLCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDcwLCA1NiwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2OCwgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjYsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDY2LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTcsIDQ5LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU2LCA3MCwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTIsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDUyLCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA1MSwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTEsIDY3LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA2OCwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDUwLCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA0OSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDY1LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA1NiwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTIsIDY5LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgCisgICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgCisgICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA3MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgCisgICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgCisgICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgCisgICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgCisgICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA0OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgCisgICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgCisgICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgCisgICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA0OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgCisgICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA3MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgCisgICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgCisgICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgCisgICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgCisgICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA0OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgCisgICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgCisgICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgCisgICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA0OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgCisgICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA3MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgCisgICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUzLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgCisgICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUxLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgCisgICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgCisgICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA0OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDcwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU0LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgCisgICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUyLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgCisgICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgCisgICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA0OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgCisgICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA3MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgCisgICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUzLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgCisgICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUxLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgCisgICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgCisgICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA0OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDcwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU0LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDcwLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzMsIDY3LCA3MiwgNzksIDg1LCAxMjgsIDczLCAKKyAgICA2NywgNzIsIDc5LCA4MywgMTI4LCA3MywgNjcsIDcyLCA3MywgNzcsIDY1LCA4NCwgNzksIDgzLCAxMjgsIDczLCA2NywgNzIsIAorICAgIDY1LCA2OCwgNzMsIDc4LCAxMjgsIDczLCA2NywgNjksIDc2LCA2NSwgNzgsIDY4LCA3MywgNjcsIDQ1LCA4OSwgODIsIDEyOCwgCisgICAgNzMsIDY2LCA3MywgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzMsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIDczLCA0OCwgNDksIDUzLCAKKyAgICAxMjgsIDczLCA0OCwgNDksIDUyLCAxMjgsIDczLCA0OCwgNDksIDUxLCAxMjgsIDczLCA0OCwgNDksIDUwLCAxMjgsIDczLCAKKyAgICA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgMTI4LCA3MywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzMsIAorICAgIDQ4LCA0OSwgNDgsIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDczLCA0OCwgNDgsIDU3LCAxMjgsIDczLCA0OCwgCisgICAgNDgsIDU2LCAxMjgsIDczLCA0OCwgNDgsIDU1LCAxMjgsIDczLCA0OCwgNDgsIDU0LCAxMjgsIDczLCA0OCwgNDgsIDUzLCAKKyAgICA2NSwgMTI4LCA3MywgNDgsIDQ4LCA1MywgMTI4LCA3MywgNDgsIDQ4LCA1MiwgMTI4LCA3MywgNDgsIDQ4LCA1MSwgMTI4LCAKKyAgICA3MywgNDgsIDQ4LCA1MCwgMTI4LCA3MywgNDgsIDQ4LCA0OSwgMTI4LCA3MywgNDUsIDg5LCA4NSwgMTI4LCA3MywgNDUsIAorICAgIDg5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjksIDEyOCwgNzMsIDQ1LCA4OSwgCisgICAgNjUsIDY5LCAxMjgsIDczLCA0NSwgODksIDY1LCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDEyOCwgNzMsIDQ1LCAKKyAgICA3OSwgNDUsIDczLCAxMjgsIDczLCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA2OSwgODUsIDEyOCwgNzMsIDQ1LCA2NiwgNjksIAorICAgIDY1LCA3NywgMTI4LCA3MywgNDUsIDY1LCA4MiwgNjUsIDY5LCA2NSwgMTI4LCA3MywgNDUsIDY1LCAxMjgsIDcyLCA5MCwgCisgICAgOTAsIDkwLCA3MSwgMTI4LCA3MiwgOTAsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIDkwLCA4MCwgMTI4LCA3MiwgOTAsIDkwLCAKKyAgICAxMjgsIDcyLCA5MCwgODcsIDcxLCAxMjgsIDcyLCA5MCwgODcsIDEyOCwgNzIsIDkwLCA4NCwgMTI4LCA3MiwgOTAsIDcxLCAKKyAgICAxMjgsIDcyLCA4OSwgODMsIDg0LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNzIsIDg5LCA4MCwgNzksIDY4LCA3MywgNjUsIAorICAgIDgzLCA4NCwgNzksIDc2LCA2OSwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MiwgCisgICAgODksIDgwLCA3MiwgNjksIDc4LCA0NSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIAorICAgIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCAyMDYsIDcyLCA4OCwgODcsIDcxLCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4OCwgCisgICAgMTI4LCA3MiwgODgsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA4OCwgODUsIDc5LCAKKyAgICAxMjgsIDcyLCA4OCwgNzksIDg4LCAxMjgsIDcyLCA4OCwgNzksIDg0LCAxMjgsIDcyLCA4OCwgNzksIDgwLCAxMjgsIDcyLCAKKyAgICA4OCwgNzksIDEyOCwgNzIsIDg4LCA3MywgODgsIDEyOCwgNzIsIDg4LCA3MywgODQsIDEyOCwgNzIsIDg4LCA3MywgODAsIAorICAgIDEyOCwgNzIsIDg4LCA3MywgNjksIDg4LCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4NCwgMTI4LCA3MiwgODgsIDczLCA2OSwgCisgICAgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDEyOCwgNzIsIDg4LCA3MywgMTI4LCA3MiwgODgsIDY5LCA4OCwgMTI4LCA3MiwgCisgICAgODgsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDY5LCAxMjgsIDcyLCA4OCwgNjUsIDg4LCAxMjgsIDcyLCA4OCwgNjUsIDg0LCAKKyAgICAxMjgsIDcyLCA4OCwgNjUsIDgwLCAxMjgsIDcyLCA4OCwgNjUsIDEyOCwgNzIsIDg3LCA4NSwgMTI4LCA3MiwgODcsIDY1LCAKKyAgICA3MywgODIsIDEyOCwgNzIsIDg2LCAxMjgsIDcyLCA4NSwgODMsIDcyLCA2OSwgMTk2LCA3MiwgODUsIDgyLCA2NSwgNzgsIAogICAgIDEyOCwgNzIsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgNjgsIDEyOCwgNzIsIDg1LCA3OCwgCiAgICAgNjgsIDgyLCA2OSwgMTk2LCA3MiwgODUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCAKICAgICA2NSwgMjA2LCA3MiwgODUsIDc2LCA1MCwgMTI4LCA3MiwgODUsIDczLCA3MywgODQsIDc5LCAxMjgsIDcyLCA4NSwgNjYsIAogICAgIDUwLCAxMjgsIDcyLCA4NSwgNjYsIDE3OCwgNzIsIDg1LCA2NiwgMTI4LCA3MiwgODUsIDY1LCA4MiwgNjUsIDY4LCA2OCwgCi0gICAgNzksIDEyOCwgNzIsIDgyLCA4OSwgODYsIDc4LCA3MywgMTkzLCA3MiwgODAsIDg3LCA3MSwgMTI4LCA3MiwgODAsIDY1LCAKLSAgICAxMjgsIDcyLCA4MCwgMTI4LCA3MiwgNzksIDg1LCA4MywgMTk3LCA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCA2NSwgODMsIAotICAgIDgzLCAxMjgsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIDY1LCA4MywgMjExLCA3MiwgNzksIDg1LCA4MiwgMTI4LCA3MiwgCi0gICAgNzksIDg1LCAyMTAsIDcyLCA3OSwgODQsIDY5LCA3NiwgMTI4LCA3MiwgNzksIDg0LCA2NSwgMTI4LCA3MiwgNzksIDgzLCAKLSAgICA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgODMsIDY5LCAxMjgsIDcyLCA3OSwgODIsIDgzLCAxOTcsIAotICAgIDcyLCA3OSwgODIsIDc4LCA4MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNzYsIDIxNywgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNTMsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIAotICAgIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCAKLSAgICA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgCi0gICAgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIAotICAgIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCAKLSAgICA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgCi0gICAgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDEyOCwgNzIsIDc5LCA4MiwgMTkzLCA3MiwgNzksIDc5LCA4MiwgODUsIDEyOCwgNzIsIDc5LCA3OSwgODAsIAotICAgIDEyOCwgNzIsIDc5LCA3OSwgNzgsIDEyOCwgNzIsIDc5LCA3OCwgNjksIDg5LCA2NiwgNjksIDY5LCAxMjgsIDcyLCA3OSwgCi0gICAgNzgsIDY5LCAyMTcsIDcyLCA3OSwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4NCwgNzMsIDY3LCAxMjgsIDcyLCA3OSwgNzcsIDc5LCAKLSAgICA4NCwgNzIsIDY5LCA4NCwgNzMsIDE5NSwgNzIsIDc5LCA3NiwgNjksIDEyOCwgNzIsIDc5LCA3NiwgNjgsIDczLCA3OCwgCi0gICAgMTk5LCA3MiwgNzksIDc2LCA2NSwgNzcsIDEyOCwgNzIsIDc5LCA3NiwgNjUsIDIwNSwgNzIsIDc5LCA3NSwgNjUsIDEyOCwgCi0gICAgNzIsIDc5LCA3MywgMTI4LCA3MiwgNzksIDY3LCA3MiwgNzksIDEyOCwgNzIsIDc4LCA4NSwgODQsIDEyOCwgNzIsIDc4LCAKLSAgICA4NSwgNzksIDg4LCAxMjgsIDcyLCA3OCwgODUsIDc5LCAxMjgsIDcyLCA3OCwgNzksIDg4LCAxMjgsIDcyLCA3OCwgNzksIAotICAgIDg0LCAxMjgsIDcyLCA3OCwgNzksIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDg0LCAxMjgsIAotICAgIDcyLCA3OCwgNzMsIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODQsIDEyOCwgCi0gICAgNzIsIDc4LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDY5LCAxMjgsIDcyLCA3OCwgNzMsIDEyOCwgNzIsIDc4LCAKLSAgICA2OSwgODgsIDEyOCwgNzIsIDc4LCA2OSwgODAsIDEyOCwgNzIsIDc4LCA2OSwgMTI4LCA3MiwgNzgsIDY1LCA4OCwgMTI4LCAKLSAgICA3MiwgNzgsIDY1LCA4NCwgMTI4LCA3MiwgNzgsIDY1LCA4MCwgMTI4LCA3MiwgNzgsIDY1LCAxMjgsIDcyLCA3NywgODksIAotICAgIDg4LCAxMjgsIDcyLCA3NywgODksIDgyLCA4OCwgMTI4LCA3MiwgNzcsIDg5LCA4MiwgMTI4LCA3MiwgNzcsIDg5LCA4MCwgCi0gICAgMTI4LCA3MiwgNzcsIDg5LCAxMjgsIDcyLCA3NywgODUsIDg4LCAxMjgsIDcyLCA3NywgODUsIDg0LCAxMjgsIDcyLCA3NywgCi0gICAgODUsIDgyLCA4OCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgMTI4LCA3MiwgNzcsIDg1LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCAKLSAgICA3OSwgODgsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA3NywgODUsIDc5LCAxMjgsIDcyLCA3NywgODUsIAotICAgIDEyOCwgNzIsIDc3LCA3OSwgODgsIDEyOCwgNzIsIDc3LCA3OSwgODQsIDEyOCwgNzIsIDc3LCA3OSwgODAsIDEyOCwgNzIsIAotICAgIDc3LCA3OSwgMTI4LCA3MiwgNzcsIDczLCA4OCwgMTI4LCA3MiwgNzcsIDczLCA4NCwgMTI4LCA3MiwgNzcsIDczLCA4MCwgCi0gICAgMTI4LCA3MiwgNzcsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc3LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3NywgNzMsIDY5LCAKLSAgICAxMjgsIDcyLCA3NywgNzMsIDEyOCwgNzIsIDc3LCA2OSwgMTI4LCA3MiwgNzcsIDY1LCA4OCwgMTI4LCA3MiwgNzcsIDY1LCAKLSAgICA4NCwgMTI4LCA3MiwgNzcsIDY1LCA4MCwgMTI4LCA3MiwgNzcsIDY1LCAxMjgsIDcyLCA3NiwgODksIDg4LCAxMjgsIDcyLCAKLSAgICA3NiwgODksIDg0LCAxMjgsIDcyLCA3NiwgODksIDgyLCA4OCwgMTI4LCA3MiwgNzYsIDg5LCA4MiwgMTI4LCA3MiwgNzYsIAotICAgIDg5LCA4MCwgMTI4LCA3MiwgNzYsIDg5LCAxMjgsIDcyLCA3NiwgODUsIDg4LCAxMjgsIDcyLCA3NiwgODUsIDg0LCAxMjgsIAotICAgIDcyLCA3NiwgODUsIDgyLCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA4MiwgMTI4LCA3MiwgNzYsIDg1LCA4MCwgMTI4LCA3MiwgCi0gICAgNzYsIDg1LCA3OSwgODgsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA3NiwgODUsIDc5LCAxMjgsIDcyLCAKLSAgICA3NiwgODUsIDEyOCwgNzIsIDc2LCA3OSwgODgsIDEyOCwgNzIsIDc2LCA3OSwgODAsIDEyOCwgNzIsIDc2LCA3OSwgMTI4LCAKLSAgICA3MiwgNzYsIDczLCA4OCwgMTI4LCA3MiwgNzYsIDczLCA4NCwgMTI4LCA3MiwgNzYsIDczLCA4MCwgMTI4LCA3MiwgNzYsIAotICAgIDczLCA2OSwgODgsIDEyOCwgNzIsIDc2LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3NiwgNzMsIDY5LCAxMjgsIDcyLCA3NiwgCi0gICAgNzMsIDEyOCwgNzIsIDc2LCA2OSwgODgsIDEyOCwgNzIsIDc2LCA2OSwgODAsIDEyOCwgNzIsIDc2LCA2OSwgMTI4LCA3MiwgCi0gICAgNzYsIDY1LCA4OCwgMTI4LCA3MiwgNzYsIDY1LCA4NCwgMTI4LCA3MiwgNzYsIDY1LCA4MCwgMTI4LCA3MiwgNzYsIDY1LCAKLSAgICAxMjgsIDcyLCA3NSwgMTI4LCA3MiwgNzMsIDkwLCA2NiwgMTI4LCA3MiwgNzMsIDgzLCA4NCwgNzksIDgyLCA3MywgMTk1LCAKLSAgICA3MiwgNzMsIDgyLCA3MywgODEsIDEyOCwgNzIsIDczLCA3MSwgNzIsIDQ1LCA4MywgODAsIDY5LCA2OSwgMTk2LCA3MiwgNzMsIAotICAgIDcxLCA3MiwgNDUsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgNDUsIDE4NSwgNzIsIDczLCA3MSwgNzIsIDQ1LCAKLSAgICA3MiwgNjksIDY5LCA3NiwgNjksIDE5NiwgNzIsIDczLCA2OSwgODgsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODMsIAotICAgIDczLCA3OSwgODMsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDcyLCA3MywgCi0gICAgNjksIDg1LCA3MiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3OCwgNzMsIAotICAgIDY5LCA4NSwgNzgsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDcyLCA3MywgCi0gICAgNjksIDg1LCAyMDAsIDcyLCA3MywgNjksIDEyOCwgNzIsIDczLCA2OCwgNzMsIDc4LCAxOTksIDcyLCA3MywgNjgsIDY5LCAKLSAgICA4NCwgMTI4LCA3MiwgNzMsIDY4LCA2OSwgMTI4LCA3MiwgNzMsIDY2LCA3MywgODMsIDY3LCA4NSwgODMsIDEyOCwgNzIsIAotICAgIDcyLCA4NywgNjUsIDEyOCwgNzIsIDcyLCA4NSwgMTI4LCA3MiwgNzIsIDczLCAxMjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIAotICAgIDcyLCA3MiwgNjksIDEyOCwgNzIsIDcyLCA2NSwgNjUsIDEyOCwgNzIsIDcxLCAxMjgsIDcyLCA2OSwgODgsIDczLCA3MCwgCi0gICAgNzksIDgyLCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgNzksIDc4LCAKLSAgICAxMjgsIDcyLCA2OSwgODIsIDg1LCA4NCwgODUsIDEyOCwgNzIsIDY5LCA4MiwgODUsIDEyOCwgNzIsIDY5LCA4MiwgNzcsIAotICAgIDczLCA4NCwgNzMsIDY1LCAyMDYsIDcyLCA2OSwgODIsIDc3LCA3MywgNzksIDc4LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgCi0gICAgNzcsIDY5LCA4MywgMTI4LCA3MiwgNjksIDgyLCA2NiwgMTI4LCA3MiwgNjksIDgyLCA2NSwgNjksIDg1LCAyMDUsIDcyLCAKLSAgICA2OSwgNzgsIDcxLCAxMjgsIDcyLCA2OSwgNzgsIDE5OSwgNzIsIDY5LCA3NywgODAsIDEyOCwgNzIsIDY5LCA3NiwgNzcsIAotICAgIDY5LCA4NCwgMTI4LCA3MiwgNjksIDc2LCA3NywgNjksIDIxMiwgNzIsIDY5LCA3NiwgMjA1LCA3MiwgNjksIDc2LCA3MywgCi0gICAgNjcsIDc5LCA4MCwgODQsIDY5LCA4MiwgMTI4LCA3MiwgNjksIDc1LCA4NSwgODQsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDcyLCAKLSAgICA2OSwgNzMsIDgzLCA2OSwgNzMsIDEyOCwgNzIsIDY5LCA2NSwgODYsIDg5LCAxMjgsIDcyLCA2OSwgNjUsIDg2LCA2OSwgNzgsIAotICAgIDc2LCAyMTcsIDcyLCA2OSwgNjUsIDg2LCA2OSwgNzgsIDEyOCwgNzIsIDY5LCA2NSwgODYsIDY5LCAyMDYsIDcyLCA2OSwgCi0gICAgNjUsIDgyLCA4NCwgODMsIDEyOCwgNzIsIDY5LCA2NSwgODIsIDg0LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIDcyLCAKLSAgICA2OSwgNjUsIDgyLCA4NCwgMTI4LCA3MiwgNjksIDY1LCA4MiwgMjEyLCA3MiwgNjksIDY1LCA4MiwgNDUsIDc4LCA3OSwgNDUsIAotICAgIDY5LCA4NiwgNzMsIDIwNCwgNzIsIDY5LCA2NSwgNjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDEyOCwgNzIsIDY5LCA2NSwgCi0gICAgNjgsIDgzLCA4NCwgNzksIDc4LCAxOTcsIDcyLCA2OSwgNjUsIDY4LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzIsIDY5LCAKLSAgICA2NSwgNjgsIDczLCA3OCwgNzEsIDEyOCwgNzIsIDY2LCA2NSwgODMsIDY1LCA0NSwgNjksIDgzLCA2NSwgODMsIDE5MywgNzIsIAotICAgIDY2LCA2NSwgODMsIDE5MywgNzIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzIsIDY1LCA4NiwgNjksIDEyOCwgCi0gICAgNzIsIDY1LCA4NSwgODAsIDg0LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDcyLCA2NSwgODQsIDcyLCA3MywgMTI4LCAKLSAgICA3MiwgNjUsIDg0LCA2OSwgMTI4LCA3MiwgNjUsIDg0LCA2NywgNzIsIDczLCA3OCwgMTk5LCA3MiwgNjUsIDg0LCA2NSwgCi0gICAgMTk4LCA3MiwgNjUsIDgzLCA2OSwgMjEwLCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIDgyLCAKLSAgICA4MCwgNzksIDc5LCA3OCwgMTI4LCA3MiwgNjUsIDgyLCA4MCwgNzksIDc5LCAyMDYsIDcyLCA2NSwgODIsIDc3LCA3OSwgNzgsIAotICAgIDczLCA2NywgMTI4LCA3MiwgNjUsIDgyLCA3NSwgNzYsIDY5LCA2NSwgMjA2LCA3MiwgNjUsIDgyLCA2OCwgNzgsIDY5LCA4MywgCi0gICAgODMsIDEyOCwgNzIsIDY1LCA4MiwgMTk2LCA3MiwgNjUsIDgwLCA4MCwgMjE3LCA3MiwgNjUsIDc4LCA4NSwgNzgsIDc5LCAKLSAgICAyMDcsIDcyLCA2NSwgNzgsIDcxLCA5MCwgNzIsIDc5LCAyMTMsIDcyLCA2NSwgNzgsIDY4LCA4MywgMTI4LCA3MiwgNjUsIAotICAgIDc4LCA2OCwgMjExLCA3MiwgNjUsIDc4LCA2OCwgNzYsIDY5LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNzYsIDY5LCAKLSAgICAxMjgsIDcyLCA2NSwgNzgsIDY4LCA2NiwgNjUsIDcxLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCAxMjgsIDcyLCA2NSwgNzgsIAotICAgIDQ1LCA2NSwgNzUsIDY1LCA4NCwgMTI4LCA3MiwgNjUsIDc3LCA5MCwgNjUsIDEyOCwgNzIsIDY1LCA3NywgODMsIDg0LCA2OSwgCi0gICAgMjEwLCA3MiwgNjUsIDc3LCA3NywgNjksIDgyLCAxMjgsIDcyLCA2NSwgNzcsIDc3LCA2OSwgMjEwLCA3MiwgNjUsIDc3LCAKLSAgICA2NiwgODUsIDgyLCA3MSwgNjksIDgyLCAxMjgsIDcyLCA2NSwgNzYsIDgxLCA2NSwgMTI4LCA3MiwgNjUsIDc2LCA3OSwgCi0gICAgMTI4LCA3MiwgNjUsIDc2LCA3MCwgMTI4LCA3MiwgNjUsIDc2LCA2NiwgNjksIDgyLCA2OCwgMTI4LCA3MiwgNjUsIDc2LCAKLSAgICA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIDczLCA4NCwgODUsIDEyOCwgNzIsIDY1LCA3MywgODIsIDY3LCA4NSwgODQsIAotICAgIDEyOCwgNzIsIDY1LCA3MywgODIsIDEyOCwgNzIsIDY1LCA3MSwgNzYsIDY1LCAyMTgsIDcyLCA2NSwgNzEsIDc2LCAxMjgsIAotICAgIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDEyOCwgNzIsIDY1LCA2OSwgCi0gICAgNzEsIDIwNCwgNzIsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDcyLCA2NSwgNjUsIDc3LCAxMjgsIDcyLCA2NSwgMTkzLCA3MiwgCi0gICAgNjUsIDQ1LCA3MiwgNjUsIDEyOCwgNzIsIDQ4LCA0OCwgNTYsIDEyOCwgNzIsIDQ4LCA0OCwgNTUsIDEyOCwgNzIsIDQ4LCAKLSAgICA0OCwgNTQsIDY1LCAxMjgsIDcyLCA0OCwgNDgsIDU0LCAxMjgsIDcyLCA0OCwgNDgsIDUzLCAxMjgsIDcyLCA0OCwgNDgsIAotICAgIDUyLCAxMjgsIDcyLCA0OCwgNDgsIDUxLCAxMjgsIDcyLCA0OCwgNDgsIDUwLCAxMjgsIDcyLCA0OCwgNDgsIDQ5LCAxMjgsIAotICAgIDcyLCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3MSwgODksIDg1LCAxMjgsIDcxLCA4OSwgNzksIDc4LCAxMjgsIDcxLCA4OSwgCi0gICAgNzksIDEyOCwgNzEsIDg5LCA3MywgMTI4LCA3MSwgODksIDcwLCAyMTMsIDcxLCA4OSwgNjksIDY5LCAxMjgsIDcxLCA4OSwgCi0gICAgNjUsIDgzLCAxMjgsIDcxLCA4OSwgNjUsIDY1LCAxMjgsIDcxLCA4OSwgNjUsIDEyOCwgNzEsIDg5LCAxMjgsIDcxLCA4NywgCi0gICAgODUsIDEyOCwgNzEsIDg3LCA3MywgMTI4LCA3MSwgODcsIDY5LCA2OSwgMTI4LCA3MSwgODcsIDY5LCAxMjgsIDcxLCA4NywgCi0gICAgNjUsIDY1LCAxMjgsIDcxLCA4NywgNjUsIDEyOCwgNzEsIDg2LCAxMjgsIDcxLCA4NSwgODIsIDg1LCA4MywgNzIsIDEyOCwgCi0gICAgNzEsIDg1LCA4MiwgODUsIDc4LCAxMjgsIDcxLCA4NSwgODIsIDY1LCA3NywgODUsIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDg1LCAKLSAgICA4MiwgNTUsIDEyOCwgNzEsIDg1LCA3OCwgODUsIDEyOCwgNzEsIDg1LCA3OCwgMjEzLCA3MSwgODUsIDIwNSwgNzEsIDg1LCAKLSAgICA3NiwgMTI4LCA3MSwgODUsIDczLCA4NCwgNjUsIDgyLCAxMjgsIDcxLCA4NSwgMTk5LCA3MSwgODUsIDY5LCA3MiwgMTI4LCAKLSAgICA3MSwgODUsIDY5LCAyMDAsIDcxLCA4NSwgNjgsIDEyOCwgNzEsIDg1LCAxOTYsIDcxLCA4NSwgNjUsIDgyLCA2OCwgODMsIAotICAgIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY4LCA2OSwgNjgsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCA4NSwgCi0gICAgNjUsIDgyLCA2NSwgNzgsIDIwMSwgNzEsIDg1LCAxOTMsIDcxLCA4NSwgMTc4LCA3MSwgODQsIDY5LCAyMTAsIDcxLCA4MywgCi0gICAgODUsIDc3LCAxMjgsIDcxLCA4MywgODUsIDIwNSwgNzEsIDgyLCAyMTMsIDcxLCA4MiwgNzksIDg3LCA3MywgNzgsIDE5OSwgCi0gICAgNzEsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA3MSwgODIsIDc5LCA3OCwgODQsIDcyLCA3MywgODMsIDc3LCA2NSwgODQsIAotICAgIDY1LCAxMjgsIDcxLCA4MiwgNzMsIDc4LCA3OCwgNzMsIDc4LCAxOTksIDcxLCA4MiwgNjksIDcxLCA3OSwgODIsIDczLCA2NSwgCi0gICAgMjA2LCA3MSwgODIsIDY5LCA2OSwgMjA2LCA3MSwgODIsIDY5LCA2NSwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCAKLSAgICA4MiwgNjksIDY1LCA4NCwgNjksIDgyLCA0NSwgODQsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgCi0gICAgODIsIDQ1LCA4NCwgNzIsIDY1LCAyMDYsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDIxMCwgNzEsIDgyLCA2OSwgNjUsIAotICAgIDIxMiwgNzEsIDgyLCA2NSwgODYsIDY5LCA4OSwgNjUsIDgyLCAxOTYsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDc3LCA2NSwgCi0gICAgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzEsIAotICAgIDgyLCA2NSwgODYsIDY5LCAxMjgsIDcxLCA4MiwgNjUsIDg2LCAxOTcsIDcxLCA4MiwgNjUsIDg0LCA2OSwgODIsIDEyOCwgCi0gICAgNzEsIDgyLCA2NSwgODMsIDgzLCAxMjgsIDcxLCA4MiwgNjUsIDgzLCAyMTEsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNjksIDc3LCAKLSAgICAxOTcsIDcxLCA4MiwgNjUsIDgwLCA2OSwgODMsIDEyOCwgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDcxLCA4MiwgNjUsIAotICAgIDczLCA3OCwgMTI4LCA3MSwgODIsIDY1LCA2OCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcxLCA4MiwgNjUsIDY3LCA2OSwgCi0gICAgMTI4LCA3MSwgODIsIDY1LCA2NywgMTk3LCA3MSwgODAsIDY1LCAxMjgsIDcxLCA3OSwgODIsIDg0LCA3MiwgNzcsIDczLCAKLSAgICA3NSwgNzksIDIwNiwgNzEsIDc5LCA4MiwgODQsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCA4NCwgNjksIDgyLCA3MywgCi0gICAgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDgzLCA4OSwgNzgsIDg0LCA3MiwgNjksIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDc5LCAKLSAgICA4MiwgNzEsIDc5LCAyMDYsIDcxLCA3OSwgODIsIDcxLCA3MywgMTI4LCA3MSwgNzksIDgyLCA2NSwgMTI4LCA3MSwgNzksIAotICAgIDc5LCAxOTYsIDcxLCA3OSwgNzgsIDcxLCAxMjgsIDcxLCA3OSwgNzYsIDY4LCAxMjgsIDcxLCA3OSwgNzUsIDEyOCwgNzEsIAotICAgIDc5LCA3MywgNzgsIDE5OSwgNzEsIDc5LCA2NiwgNzYsIDczLCA3OCwgMTI4LCA3MSwgNzksIDY1LCA3NiwgMTI4LCA3MSwgCi0gICAgNzksIDY1LCAyMDQsIDcxLCA3OSwgNjUsIDEyOCwgNzEsIDc4LCA4OSwgNzMsIDgzLCAxMjgsIDcxLCA3OCwgNjUsIDg2LCAKLSAgICA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzEsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MSwgNzYsIDc5LCA4NCwgODQsIAotICAgIDY1LCAyMDQsIDcxLCA3NiwgNzksIDY2LCAxOTcsIDcxLCA3NiwgNzMsIDgzLCA4MywgNjUsIDc4LCA2OCwgMjA3LCA3MSwgCi0gICAgNzYsIDY5LCA3MywgNjcsIDIwMCwgNzEsIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDEyOCwgNzEsIDc2LCA2NSwgMTI4LCAKLSAgICA3MSwgNzQsIDY5LCAxMjgsIDcxLCA3MywgODgsIDEyOCwgNzEsIDczLCA4NCwgMTI4LCA3MSwgNzMsIDgzLCA3MiwgMTI4LCAKLSAgICA3MSwgNzMsIDgzLCAyMDAsIDcxLCA3MywgODMsIDY1LCA3NiwgMTI4LCA3MSwgNzMsIDgyLCA4NSwgNjgsIDY1LCA2NSwgCi0gICAgMTI4LCA3MSwgNzMsIDgyLCA3NiwgMTI4LCA3MSwgNzMsIDgyLCA1MSwgMTI4LCA3MSwgNzMsIDgyLCAxNzksIDcxLCA3MywgCi0gICAgODIsIDUwLCAxMjgsIDcxLCA3MywgODIsIDE3OCwgNzEsIDczLCA4MCwgMTI4LCA3MSwgNzMsIDc4LCA3MywgNzMsIDEyOCwgCi0gICAgNzEsIDczLCA3NywgNjksIDc2LCAxMjgsIDcxLCA3MywgNzcsIDY5LCAyMDQsIDcxLCA3MywgNzcsIDEyOCwgNzEsIDczLCAKLSAgICA3MSwgNjUsIDEyOCwgNzEsIDczLCA2OSwgODQsIDEyOCwgNzEsIDczLCA2OCwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNjYsIAotICAgIDY2LCA3OSwgODUsIDIxMSwgNzEsIDczLCA2NiwgNjUsIDEyOCwgNzEsIDczLCA1MiwgMTI4LCA3MSwgNzMsIDE4MCwgNzEsIAotICAgIDcyLCA5MCwgMTI4LCA3MSwgNzIsIDg3LCA2NSwgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA3MiwgCi0gICAgODUsIDc4LCA3OCwgMTkzLCA3MSwgNzIsIDg1LCAxMjgsIDcxLCA3MiwgNzksIDg1LCAxMjgsIDcxLCA3MiwgNzksIDgzLCAKLSAgICA4NCwgMTI4LCA3MSwgNzIsIDc5LCAxMjgsIDcxLCA3MiwgNzMsIDEyOCwgNzEsIDcyLCA3MiwgNjUsIDEyOCwgNzEsIDcyLCAKLSAgICA2OSwgODUsIDg4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA3OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzEsIDcyLCA2OSwgODUsIAotICAgIDY1LCA2OSwgNzcsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDcxLCA3MiwgNjksIDc4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA2NSwgCi0gICAgNjksIDgyLCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgMTI4LCAKLSAgICA3MSwgNzIsIDY5LCA4NCwgMTI4LCA3MSwgNzIsIDY5LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCAxMjgsIDcxLCA3MiwgMTk3LCAKLSAgICA3MSwgNzIsIDY1LCA4OSwgNzgsIDEyOCwgNzEsIDcyLCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA4MCwgCi0gICAgMTI4LCA3MSwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCA3MiwgNjUsIDczLCAKLSAgICA3OCwgODUsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDczLCAyMDYsIDcxLCA3MiwgNjUsIAotICAgIDY4LCAxMjgsIDcxLCA3MiwgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDY1LCAxMjgsIDcxLCA3MiwgCi0gICAgNjUsIDEyOCwgNzEsIDcxLCA4NywgNzMsIDEyOCwgNzEsIDcxLCA4NywgNjksIDY5LCAxMjgsIDcxLCA3MSwgODcsIDY5LCAKLSAgICAxMjgsIDcxLCA3MSwgODcsIDY1LCA2NSwgMTI4LCA3MSwgNzEsIDg3LCA2NSwgMTI4LCA3MSwgNzEsIDg1LCA4OCwgMTI4LCAKLSAgICA3MSwgNzEsIDg1LCA4NCwgMTI4LCA3MSwgNzEsIDg1LCA4MiwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODIsIDEyOCwgNzEsIAotICAgIDcxLCA4NSwgNzksIDg4LCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODAsIDEyOCwgCi0gICAgNzEsIDcxLCA4NSwgNzksIDEyOCwgNzEsIDcxLCA3OSwgODgsIDEyOCwgNzEsIDcxLCA3OSwgODQsIDEyOCwgNzEsIDcxLCAKLSAgICA3OSwgODAsIDEyOCwgNzEsIDcxLCA3MywgODgsIDEyOCwgNzEsIDcxLCA3MywgODQsIDEyOCwgNzEsIDcxLCA3MywgNjksIAotICAgIDg4LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCA4MCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgMTI4LCA3MSwgNzEsIDY5LCA4OCwgCi0gICAgMTI4LCA3MSwgNzEsIDY5LCA4NCwgMTI4LCA3MSwgNzEsIDY5LCA4MCwgMTI4LCA3MSwgNzEsIDY1LCA4OCwgMTI4LCA3MSwgCi0gICAgNzEsIDY1LCA4NCwgMTI4LCA3MSwgNzEsIDY1LCA2NSwgMTI4LCA3MSwgNjksIDg0LCAxOTMsIDcxLCA2OSwgODMsIDg0LCAKLSAgICA4NSwgODIsIDY5LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NSwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODQsIDczLCA3OCwgCi0gICAgMTI4LCA3MSwgNjksIDgzLCA3MiwgODQsIDczLCAyMDYsIDcxLCA2OSwgODMsIDcyLCA1MCwgMTI4LCA3MSwgNjksIDgyLCAKLSAgICA4MywgNzIsIDY1LCA4OSwgNzMsIDc3LCAxMjgsIDcxLCA2OSwgODIsIDc3LCA2NSwgMjA2LCA3MSwgNjksIDgyLCA2OSwgODMsIAotICAgIDcyLCAxMjgsIDcxLCA2OSwgODIsIDY5LCA4MywgMjAwLCA3MSwgNjksIDc5LCA3NywgNjksIDg0LCA4MiwgNzMsIDY3LCA2NSwgCi0gICAgNzYsIDc2LCAyMTcsIDcxLCA2OSwgNzksIDc3LCA2OSwgODQsIDgyLCA3MywgMTk1LCA3MSwgNjksIDc4LCA4NCwgNzYsIAotICAgIDE5NywgNzEsIDY5LCA3OCwgNzMsIDg0LCA3MywgODYsIDY5LCAxMjgsIDcxLCA2OSwgNzgsIDczLCA3NSwgMjAxLCA3MSwgCi0gICAgNjksIDc4LCA2OSwgODIsIDczLCAxOTUsIDcxLCA2OSwgNzcsIDczLCA3OCwgNzMsIDEyOCwgNzEsIDY5LCA3NywgNzMsIDc4LCAKLSAgICA2NSwgODQsIDczLCA3OSwgMjA2LCA3MSwgNjksIDIwNSwgNzEsIDY5LCA2OCwgNzksIDc2LCA2NSwgMTI4LCA3MSwgNjksIAotICAgIDY4LCA2OSwgMTI4LCA3MSwgNjksIDY2LCAyMDcsIDcxLCA2OSwgNjYsIDE5MywgNzEsIDY5LCA2NSwgODIsIDEyOCwgNzEsIAotICAgIDY5LCA2NSwgMjEwLCA3MSwgNjgsIDY1LCA3OCwgMTI4LCA3MSwgNjcsIDczLCA3MSwgMTI4LCA3MSwgNjcsIDY1LCAyMDYsIAotICAgIDcxLCA2NiwgNzksIDc4LCAxMjgsIDcxLCA2NiwgNzMsIDY5LCAxOTcsIDcxLCA2NiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgCi0gICAgNjYsIDY5LCA4NCwgMTI4LCA3MSwgNjYsIDY1LCA4OSwgNzMsIDEyOCwgNzEsIDY2LCA2NSwgNzUsIDg1LCA4MiwgODUsIDc4LCAKLSAgICA2OSwgNzgsIDEyOCwgNzEsIDY2LCAxMjgsIDcxLCA2NSwgODksIDY1LCA3OCwgODUsIDc1LCA3MywgODQsIDg0LCA2NSwgCi0gICAgMTI4LCA3MSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNjUsIDg5LCAxMjgsIDcxLCA2NSwgODUsIDc4LCAKLSAgICA4NCwgNzYsIDY5LCA4NCwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcxLCA2NSwgODQsIAotICAgIDcyLCA2OSwgODIsIDczLCA3OCwgMTk5LCA3MSwgNjUsIDg0LCA2OSwgMTI4LCA3MSwgNjUsIDgzLCA3MiwgNjUsIDc4LCAKLSAgICAxMjgsIDcxLCA2NSwgODIsIDgzLCA3MiwgODUsIDc4LCA3MywgMTI4LCA3MSwgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNzEsIAotICAgIDY1LCA4MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzEsIDY1LCA4MiwgNjgsIDY5LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA1MSwgCi0gICAgMTI4LCA3MSwgNjUsIDgwLCA4MCwgNjksIDE5NiwgNzEsIDY1LCAyMDgsIDcxLCA2NSwgNzgsIDc3LCA2NSwgMTI4LCA3MSwgCi0gICAgNjUsIDc4LCA3MSwgNzMsIDY1LCAxMjgsIDcxLCA2NSwgNzgsIDY4LCAxOTMsIDcxLCA2NSwgNzgsIDUwLCAxMjgsIDcxLCAKLSAgICA2NSwgNzgsIDE3OCwgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDcxLCA2NSwgNzcsIDc2LCA2NSwgMTI4LCA3MSwgNjUsIAotICAgIDc3LCA3NiwgMTI4LCA3MSwgNjUsIDc3LCA2OSwgMTI4LCA3MSwgNjUsIDc3LCAxOTcsIDcxLCA2NSwgNzcsIDY1LCA3OCwgCi0gICAgMTI4LCA3MSwgNjUsIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjUsIDIwNCwgNzEsIDY1LCA3MSwgMTI4LCA3MSwgCi0gICAgNjUsIDcwLCAxMjgsIDcxLCA2NSwgMTk4LCA3MSwgNjUsIDY5LCA4NCwgODQsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAKLSAgICAxMjgsIDcxLCA2NSwgNjgsIDc5LCA3NiwgMTI4LCA3MSwgNjUsIDY4LCAxMjgsIDcxLCA2NSwgMTk2LCA3MSwgNjUsIDY2LCAKLSAgICA2NSwgMTI4LCA3MSwgNjUsIDY2LCAxOTMsIDcxLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3MSwgNjUsIDE3OCwgNzEsIDQ4LCAKLSAgICA1MywgNTIsIDEyOCwgNzEsIDQ4LCA1MywgNTEsIDEyOCwgNzEsIDQ4LCA1MywgNTAsIDEyOCwgNzEsIDQ4LCA1MywgNDksIAotICAgIDEyOCwgNzEsIDQ4LCA1MywgNDgsIDEyOCwgNzEsIDQ4LCA1MiwgNTcsIDEyOCwgNzEsIDQ4LCA1MiwgNTYsIDEyOCwgNzEsIAotICAgIDQ4LCA1MiwgNTUsIDEyOCwgNzEsIDQ4LCA1MiwgNTQsIDEyOCwgNzEsIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDcxLCA0OCwgCi0gICAgNTIsIDUzLCAxMjgsIDcxLCA0OCwgNTIsIDUyLCAxMjgsIDcxLCA0OCwgNTIsIDUxLCA2NSwgMTI4LCA3MSwgNDgsIDUyLCAKLSAgICA1MSwgMTI4LCA3MSwgNDgsIDUyLCA1MCwgMTI4LCA3MSwgNDgsIDUyLCA0OSwgMTI4LCA3MSwgNDgsIDUyLCA0OCwgMTI4LCAKLSAgICA3MSwgNDgsIDUxLCA1NywgMTI4LCA3MSwgNDgsIDUxLCA1NiwgMTI4LCA3MSwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzEsIAotICAgIDQ4LCA1MSwgNTUsIDEyOCwgNzEsIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIDU0LCAxMjgsIDcxLCA0OCwgCi0gICAgNTEsIDUzLCAxMjgsIDcxLCA0OCwgNTEsIDUyLCAxMjgsIDcxLCA0OCwgNTEsIDUxLCAxMjgsIDcxLCA0OCwgNTEsIDUwLCAKLSAgICAxMjgsIDcxLCA0OCwgNTEsIDQ5LCAxMjgsIDcxLCA0OCwgNTEsIDQ4LCAxMjgsIDcxLCA0OCwgNTAsIDU3LCAxMjgsIDcxLCAKLSAgICA0OCwgNTAsIDU2LCAxMjgsIDcxLCA0OCwgNTAsIDU1LCAxMjgsIDcxLCA0OCwgNTAsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIAotICAgIDUwLCA1NCwgMTI4LCA3MSwgNDgsIDUwLCA1MywgMTI4LCA3MSwgNDgsIDUwLCA1MiwgMTI4LCA3MSwgNDgsIDUwLCA1MSwgCi0gICAgMTI4LCA3MSwgNDgsIDUwLCA1MCwgMTI4LCA3MSwgNDgsIDUwLCA0OSwgMTI4LCA3MSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgCi0gICAgNzEsIDQ4LCA1MCwgNDgsIDEyOCwgNzEsIDQ4LCA0OSwgNTcsIDEyOCwgNzEsIDQ4LCA0OSwgNTYsIDEyOCwgNzEsIDQ4LCAKLSAgICA0OSwgNTUsIDEyOCwgNzEsIDQ4LCA0OSwgNTQsIDEyOCwgNzEsIDQ4LCA0OSwgNTMsIDEyOCwgNzEsIDQ4LCA0OSwgNTIsIAotICAgIDEyOCwgNzEsIDQ4LCA0OSwgNTEsIDEyOCwgNzEsIDQ4LCA0OSwgNTAsIDEyOCwgNzEsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIAotICAgIDcxLCA0OCwgNDksIDQ5LCAxMjgsIDcxLCA0OCwgNDksIDQ4LCAxMjgsIDcxLCA0OCwgNDgsIDU3LCAxMjgsIDcxLCA0OCwgCi0gICAgNDgsIDU2LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgNzEsIDQ4LCAKLSAgICA0OCwgNTUsIDEyOCwgNzEsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU0LCAxMjgsIDcxLCA0OCwgNDgsIAotICAgIDUzLCAxMjgsIDcxLCA0OCwgNDgsIDUyLCAxMjgsIDcxLCA0OCwgNDgsIDUxLCAxMjgsIDcxLCA0OCwgNDgsIDUwLCAxMjgsIAotICAgIDcxLCA0OCwgNDgsIDQ5LCAxMjgsIDcwLCA4OSwgODgsIDEyOCwgNzAsIDg5LCA4NCwgMTI4LCA3MCwgODksIDgwLCAxMjgsIAotICAgIDcwLCA4OSwgNjUsIDEyOCwgNzAsIDg3LCA3MywgMTI4LCA3MCwgODcsIDY5LCA2OSwgMTI4LCA3MCwgODcsIDY5LCAxMjgsIAotICAgIDcwLCA4NywgNjUsIDY1LCAxMjgsIDcwLCA4NywgNjUsIDEyOCwgNzAsIDg1LCA4OCwgMTI4LCA3MCwgODUsIDg0LCAxMjgsIAotICAgIDcwLCA4NSwgODMsIDY5LCAxMjgsIDcwLCA4NSwgODMsIDE5MywgNzAsIDg1LCA4MiwgODgsIDEyOCwgNzAsIDg1LCA4MCwgCi0gICAgMTI4LCA3MCwgODUsIDc4LCA2OSwgODIsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA3MCwgODUsIDc2LCA3NiwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDg1LCA3NiwgMjA0LCA3MCwgODUsIDc0LCA3MywgCi0gICAgMTI4LCA3MCwgODUsIDY5LCA4NCwgMTI4LCA3MCwgODUsIDY5LCAyMDQsIDcwLCA4NSwgNjksIDEyOCwgNzAsIDg0LCA3MiwgCi0gICAgNzksIDgyLCAxOTMsIDcwLCA4MiwgNzksIDg3LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgODIsIDc5LCA4NywgNzgsIDczLCAKLSAgICA3OCwgMTk5LCA3MCwgODIsIDc5LCA4NywgNzgsIDEyOCwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgODQsIDczLCA3NiwgODQsIAotICAgIDY5LCAxOTYsIDcwLCA4MiwgNzksIDc4LCA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCAKLSAgICAyMDUsIDcwLCA4MiwgNzksIDcxLCAxMjgsIDcwLCA4MiwgNzksIDE5OSwgNzAsIDgyLCA3MywgODQsIDg1LCAxMjgsIDcwLCAKLSAgICA4MiwgNzMsIDY5LCA4MywgMTI4LCA3MCwgODIsIDczLCA2OSwgMTk2LCA3MCwgODIsIDczLCA2NywgNjUsIDg0LCA3MywgODYsIAotICAgIDY5LCAxMjgsIDcwLCA4MiwgNjksIDg0LCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzAsIDgyLCA2OSwgNzgsIDY3LCAKLSAgICAyMDAsIDcwLCA4MiwgNjksIDY5LCAxMjgsIDcwLCA4MiwgNjksIDE5NywgNzAsIDgyLCA2NSwgNzgsIDE5NSwgNzAsIDgyLCAKLSAgICA2NSwgNzcsIDY5LCAxMjgsIDcwLCA4MiwgNjUsIDcxLCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA3MCwgODIsIDY1LCA3MSwgNzcsIAotICAgIDY5LCA3OCwgODQsIDEyOCwgNzAsIDgyLCA2NSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNzAsIDc5LCA4OCwgMTI4LCA3MCwgCi0gICAgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzAsIDc5LCA4NSwgODIsIDg0LCA2OSwgNjksIDIwNiwgNzAsIDc5LCAKLSAgICA4NSwgODIsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3OSwgODUsIDgyLCA0NSwgODMsIDg0LCA4MiwgCi0gICAgNzMsIDc4LCAxOTksIDcwLCA3OSwgODUsIDgyLCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDcwLCA3OSwgODUsIDgyLCAKLSAgICA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzksIDg1LCAyMTAsIDcwLCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgCi0gICAgMTI4LCA3MCwgNzksIDgzLCA4NCwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgODIsIDg0LCA4OSwgMTI4LCAKKyAgICA3OSwgMTI4LCA3MiwgODQsIDgzLCAxMjgsIDcyLCA4NCwgNzQsIDEyOCwgNzIsIDgyLCA4OSwgODYsIDc4LCA3MywgMTkzLCAKKyAgICA3MiwgODAsIDg3LCA3MSwgMTI4LCA3MiwgODAsIDY1LCAxMjgsIDcyLCA4MCwgMTI4LCA3MiwgNzksIDg1LCA4MywgMTk3LCAKKyAgICA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCA2NSwgODMsIDgzLCAxMjgsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIDY1LCA4MywgCisgICAgMjExLCA3MiwgNzksIDg1LCA4MiwgMTI4LCA3MiwgNzksIDg1LCAyMTAsIDcyLCA3OSwgODQsIDY5LCA3NiwgMTI4LCA3MiwgCisgICAgNzksIDg0LCA2NSwgMTI4LCA3MiwgNzksIDgzLCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgODMsIDY5LCAKKyAgICAxMjgsIDcyLCA3OSwgODIsIDgzLCAxOTcsIDcyLCA3OSwgODIsIDc4LCA4MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNzYsIDIxNywgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTQsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIAorICAgIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCAKKyAgICA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgCisgICAgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKKyAgICA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTIsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIAorICAgIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCAKKyAgICA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgCisgICAgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKKyAgICA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNDksIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIAorICAgIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCAKKyAgICA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgCisgICAgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDEyOCwgNzIsIDc5LCA4MiwgMTkzLCA3MiwgNzksIDc5LCAKKyAgICA4MiwgODUsIDEyOCwgNzIsIDc5LCA3OSwgODAsIDEyOCwgNzIsIDc5LCA3OSwgNzgsIDEyOCwgNzIsIDc5LCA3OSwgNzUsIAorICAgIDY5LCAxOTYsIDcyLCA3OSwgNzgsIDY5LCA4OSwgNjYsIDY5LCA2OSwgMTI4LCA3MiwgNzksIDc4LCA2OSwgMjE3LCA3MiwgCisgICAgNzksIDc3LCA3OSwgODQsIDcyLCA2OSwgODQsIDczLCA2NywgMTI4LCA3MiwgNzksIDc3LCA3OSwgODQsIDcyLCA2OSwgODQsIAorICAgIDczLCAxOTUsIDcyLCA3OSwgNzYsIDY5LCAxMjgsIDcyLCA3OSwgNzYsIDY4LCA3MywgNzgsIDE5OSwgNzIsIDc5LCA3NiwgCisgICAgNjUsIDc3LCAxMjgsIDcyLCA3OSwgNzYsIDY1LCAyMDUsIDcyLCA3OSwgNzUsIDY1LCAxMjgsIDcyLCA3OSwgNzMsIDEyOCwgCisgICAgNzIsIDc5LCA2NywgNzIsIDc5LCAxMjgsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDcyLCA3OCwgODUsIDc5LCA4OCwgMTI4LCAKKyAgICA3MiwgNzgsIDg1LCA3OSwgMTI4LCA3MiwgNzgsIDc5LCA4OCwgMTI4LCA3MiwgNzgsIDc5LCA4NCwgMTI4LCA3MiwgNzgsIAorICAgIDc5LCA4MCwgMTI4LCA3MiwgNzgsIDczLCA4OCwgMTI4LCA3MiwgNzgsIDczLCA4NCwgMTI4LCA3MiwgNzgsIDczLCA4MCwgCisgICAgMTI4LCA3MiwgNzgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg0LCAxMjgsIDcyLCA3OCwgNzMsIDY5LCAKKyAgICA4MCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgMTI4LCA3MiwgNzgsIDczLCAxMjgsIDcyLCA3OCwgNjksIDg4LCAxMjgsIDcyLCAKKyAgICA3OCwgNjksIDgwLCAxMjgsIDcyLCA3OCwgNjksIDEyOCwgNzIsIDc4LCA2NSwgODgsIDEyOCwgNzIsIDc4LCA2NSwgODQsIAorICAgIDEyOCwgNzIsIDc4LCA2NSwgODAsIDEyOCwgNzIsIDc4LCA2NSwgMTI4LCA3MiwgNzcsIDg5LCA4OCwgMTI4LCA3MiwgNzcsIAorICAgIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4OSwgODIsIDEyOCwgNzIsIDc3LCA4OSwgODAsIDEyOCwgNzIsIDc3LCA4OSwgCisgICAgMTI4LCA3MiwgNzcsIDg1LCA4OCwgMTI4LCA3MiwgNzcsIDg1LCA4NCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgODgsIDEyOCwgCisgICAgNzIsIDc3LCA4NSwgODIsIDEyOCwgNzIsIDc3LCA4NSwgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDcyLCAKKyAgICA3NywgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgMTI4LCA3MiwgNzcsIDg1LCAxMjgsIDcyLCA3NywgNzksIAorICAgIDg4LCAxMjgsIDcyLCA3NywgNzksIDg0LCAxMjgsIDcyLCA3NywgNzksIDgwLCAxMjgsIDcyLCA3NywgNzksIDEyOCwgNzIsIAorICAgIDc3LCA3MywgODgsIDEyOCwgNzIsIDc3LCA3MywgODQsIDEyOCwgNzIsIDc3LCA3MywgODAsIDEyOCwgNzIsIDc3LCA3MywgCisgICAgNjksIDg4LCAxMjgsIDcyLCA3NywgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgMTI4LCA3MiwgNzcsIDczLCAKKyAgICAxMjgsIDcyLCA3NywgNjksIDEyOCwgNzIsIDc3LCA2NSwgODgsIDEyOCwgNzIsIDc3LCA2NSwgODQsIDEyOCwgNzIsIDc3LCAKKyAgICA2NSwgODAsIDEyOCwgNzIsIDc3LCA2NSwgMTI4LCA3MiwgNzYsIDg5LCA4OCwgMTI4LCA3MiwgNzYsIDg5LCA4NCwgMTI4LCAKKyAgICA3MiwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc2LCA4OSwgODIsIDEyOCwgNzIsIDc2LCA4OSwgODAsIDEyOCwgNzIsIAorICAgIDc2LCA4OSwgMTI4LCA3MiwgNzYsIDg1LCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA4NCwgMTI4LCA3MiwgNzYsIDg1LCA4MiwgCisgICAgODgsIDEyOCwgNzIsIDc2LCA4NSwgODIsIDEyOCwgNzIsIDc2LCA4NSwgODAsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDg4LCAKKyAgICAxMjgsIDcyLCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgMTI4LCA3MiwgNzYsIDg1LCAxMjgsIDcyLCAKKyAgICA3NiwgNzksIDg4LCAxMjgsIDcyLCA3NiwgNzksIDgwLCAxMjgsIDcyLCA3NiwgNzksIDEyOCwgNzIsIDc2LCA3MywgODgsIAorICAgIDEyOCwgNzIsIDc2LCA3MywgODQsIDEyOCwgNzIsIDc2LCA3MywgODAsIDEyOCwgNzIsIDc2LCA3MywgNjksIDg4LCAxMjgsIAorICAgIDcyLCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgMTI4LCA3MiwgNzYsIDczLCAxMjgsIDcyLCA3NiwgCisgICAgNjksIDg4LCAxMjgsIDcyLCA3NiwgNjksIDgwLCAxMjgsIDcyLCA3NiwgNjksIDEyOCwgNzIsIDc2LCA2NSwgODgsIDEyOCwgCisgICAgNzIsIDc2LCA2NSwgODQsIDEyOCwgNzIsIDc2LCA2NSwgODAsIDEyOCwgNzIsIDc2LCA2NSwgMTI4LCA3MiwgNzUsIDEyOCwgCisgICAgNzIsIDczLCA5MCwgNjYsIDEyOCwgNzIsIDczLCA4MywgODQsIDc5LCA4MiwgNzMsIDE5NSwgNzIsIDczLCA4MiwgNzMsIDgxLCAKKyAgICAxMjgsIDcyLCA3MywgNzEsIDcyLCA0NSwgODMsIDgwLCA2OSwgNjksIDE5NiwgNzIsIDczLCA3MSwgNzIsIDQ1LCA4MiwgNjksIAorICAgIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDQ1LCAxODUsIDcyLCA3MywgNzEsIDcyLCA0NSwgNzIsIDY5LCA2OSwgNzYsIDY5LCAKKyAgICAxOTYsIDcyLCA3MywgNjksIDg4LCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIAorICAgIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCAKKyAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIAorICAgIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3MiwgNzMsIDY5LCA4NSwgMjAwLCA3MiwgCisgICAgNzMsIDY5LCA4MiwgNzksIDcxLCA3NiwgODksIDgwLCA3MiwgNzMsIDE5NSwgNzIsIDczLCA2OSwgMTI4LCA3MiwgNzMsIDY4LCAKKyAgICA3MywgNzgsIDE5OSwgNzIsIDczLCA2OCwgNjksIDg0LCAxMjgsIDcyLCA3MywgNjgsIDY5LCAxMjgsIDcyLCA3MywgNjYsIAorICAgIDczLCA4MywgNjcsIDg1LCA4MywgMTI4LCA3MiwgNzIsIDg3LCA2NSwgMTI4LCA3MiwgNzIsIDg1LCAxMjgsIDcyLCA3MiwgCisgICAgNzMsIDEyOCwgNzIsIDcyLCA2OSwgNjksIDEyOCwgNzIsIDcyLCA2OSwgMTI4LCA3MiwgNzIsIDY1LCA2NSwgMTI4LCA3MiwgCisgICAgNzEsIDEyOCwgNzIsIDY5LCA4OCwgNzMsIDcwLCA3OSwgODIsIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA4MiwgNjUsIAorICAgIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNzIsIDY5LCA4MiwgODUsIDg0LCA4NSwgMTI4LCA3MiwgCisgICAgNjksIDgyLCA4NSwgMTI4LCA3MiwgNjksIDgyLCA3NywgNzMsIDg0LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgNzcsIDczLCAKKyAgICA3OSwgNzgsIDczLCA2NSwgMjA2LCA3MiwgNjksIDgyLCA3NywgNjksIDgzLCAxMjgsIDcyLCA2OSwgODIsIDY5LCAxMjgsIAorICAgIDcyLCA2OSwgODIsIDY2LCAxMjgsIDcyLCA2OSwgODIsIDY1LCA2OSwgODUsIDIwNSwgNzIsIDY5LCA3OCwgNzEsIDEyOCwgCisgICAgNzIsIDY5LCA3OCwgMTk5LCA3MiwgNjksIDc3LCA4MCwgMTI4LCA3MiwgNjksIDc2LCA3NywgNjksIDg0LCAxMjgsIDcyLCAKKyAgICA2OSwgNzYsIDc3LCA2OSwgMjEyLCA3MiwgNjksIDc2LCAyMDUsIDcyLCA2OSwgNzYsIDczLCA2NywgNzksIDgwLCA4NCwgNjksIAorICAgIDgyLCAxMjgsIDcyLCA2OSwgNzUsIDg1LCA4NCwgNjUsIDY1LCA4MiwgODUsIDEyOCwgNzIsIDY5LCA3MywgODMsIDY5LCA3MywgCisgICAgMTI4LCA3MiwgNjksIDY1LCA4NiwgODksIDEyOCwgNzIsIDY5LCA2NSwgODYsIDY5LCA3OCwgNzYsIDIxNywgNzIsIDY5LCAKKyAgICA2NSwgODYsIDY5LCA3OCwgMTI4LCA3MiwgNjksIDY1LCA4NiwgNjksIDIwNiwgNzIsIDY5LCA2NSwgODIsIDg0LCA4MywgCisgICAgMTI4LCA3MiwgNjksIDY1LCA4MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgNzIsIDY5LCA2NSwgODIsIDg0LCAKKyAgICAxMjgsIDcyLCA2OSwgNjUsIDgyLCAyMTIsIDcyLCA2OSwgNjUsIDgyLCA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgCisgICAgMjA0LCA3MiwgNjksIDY1LCA2OCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMTI4LCA3MiwgNjksIDY1LCA2OCwgODMsIDg0LCAKKyAgICA3OSwgNzgsIDE5NywgNzIsIDY5LCA2NSwgNjgsIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA3MiwgNjksIDY1LCA2OCwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA3MiwgNjYsIDY1LCA4MywgNjUsIDQ1LCA2OSwgODMsIDY1LCA4MywgMTkzLCA3MiwgNjYsIDY1LCA4MywgCisgICAgMTkzLCA3MiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MiwgNjUsIDg2LCA2OSwgMTI4LCA3MiwgNjUsIDg1LCAKKyAgICA4MCwgODQsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgNzIsIDY1LCA4NCwgNzIsIDczLCAxMjgsIDcyLCA2NSwgODQsIAorICAgIDY5LCAxMjgsIDcyLCA2NSwgODQsIDY3LCA3MiwgNzMsIDc4LCAxOTksIDcyLCA2NSwgODQsIDY1LCAxOTgsIDcyLCA2NSwgCisgICAgODMsIDY5LCAyMTAsIDcyLCA2NSwgODMsIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgODIsIDgwLCA3OSwgNzksIDc4LCAKKyAgICAxMjgsIDcyLCA2NSwgODIsIDgwLCA3OSwgNzksIDIwNiwgNzIsIDY1LCA4MiwgNzcsIDc5LCA3OCwgNzMsIDY3LCAxMjgsIAorICAgIDcyLCA2NSwgODIsIDc1LCA3NiwgNjksIDY1LCAyMDYsIDcyLCA2NSwgODIsIDY4LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MiwgCisgICAgNjUsIDgyLCAxOTYsIDcyLCA2NSwgODAsIDgwLCAyMTcsIDcyLCA2NSwgNzgsIDg1LCA3OCwgNzksIDIwNywgNzIsIDY1LCAKKyAgICA3OCwgNzEsIDkwLCA3MiwgNzksIDIxMywgNzIsIDY1LCA3OCwgNjgsIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCAyMTEsIAorICAgIDcyLCA2NSwgNzgsIDY4LCA3NiwgNjksIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgCisgICAgNjgsIDY2LCA2NSwgNzEsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDEyOCwgNzIsIDY1LCA3OCwgNDUsIDY1LCA3NSwgNjUsIDg0LCAKKyAgICAxMjgsIDcyLCA2NSwgNzcsIDkwLCA2NSwgMTI4LCA3MiwgNjUsIDc3LCA4MywgODQsIDY5LCAyMTAsIDcyLCA2NSwgNzcsIAorICAgIDc3LCA2OSwgODIsIDEyOCwgNzIsIDY1LCA3NywgNzcsIDY5LCAyMTAsIDcyLCA2NSwgNzcsIDY2LCA4NSwgODIsIDcxLCA2OSwgCisgICAgODIsIDEyOCwgNzIsIDY1LCA3NiwgODEsIDY1LCAxMjgsIDcyLCA2NSwgNzYsIDc5LCAxMjgsIDcyLCA2NSwgNzYsIDcwLCAKKyAgICA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDcyLCA2NSwgNzYsIDcwLCAxMjgsIDcyLCA2NSwgNzYsIDY2LCA2OSwgODIsIAorICAgIDY4LCAxMjgsIDcyLCA2NSwgNzYsIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgNzMsIDg0LCA4NSwgMTI4LCA3MiwgCisgICAgNjUsIDczLCA4MiwgNjcsIDg1LCA4NCwgMTI4LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA3MiwgNjUsIDcxLCA3NiwgNjUsIAorICAgIDIxOCwgNzIsIDY1LCA3MSwgNzYsIDEyOCwgNzIsIDY1LCA3MCwgODUsIDc1LCA3MiwgNjUsIDEyOCwgNzIsIDY1LCA3MCwgCisgICAgODUsIDc1LCA3MiwgMTI4LCA3MiwgNjUsIDY5LCA3MSwgMjA0LCA3MiwgNjUsIDY1LCA4MiwgODUsIDEyOCwgNzIsIDY1LCAKKyAgICA2NSwgNzcsIDEyOCwgNzIsIDY1LCAxOTMsIDcyLCA2NSwgNDUsIDcyLCA2NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NiwgMTI4LCAKKyAgICA3MiwgNDgsIDQ4LCA1NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzIsIDQ4LCA0OCwgNTQsIDEyOCwgNzIsIAorICAgIDQ4LCA0OCwgNTMsIDEyOCwgNzIsIDQ4LCA0OCwgNTIsIDEyOCwgNzIsIDQ4LCA0OCwgNTEsIDEyOCwgNzIsIDQ4LCA0OCwgCisgICAgNTAsIDEyOCwgNzIsIDQ4LCA0OCwgNDksIDEyOCwgNzIsIDQ1LCA4NCwgODksIDgwLCAxOTcsIDcxLCA4OSwgODUsIDEyOCwgCisgICAgNzEsIDg5LCA3OSwgNzgsIDEyOCwgNzEsIDg5LCA3OSwgMTI4LCA3MSwgODksIDczLCAxMjgsIDcxLCA4OSwgNzAsIDIxMywgCisgICAgNzEsIDg5LCA2OSwgNjksIDEyOCwgNzEsIDg5LCA2NSwgODMsIDEyOCwgNzEsIDg5LCA2NSwgNjUsIDEyOCwgNzEsIDg5LCAKKyAgICA2NSwgMTI4LCA3MSwgODksIDEyOCwgNzEsIDg3LCA4NSwgMTI4LCA3MSwgODcsIDczLCAxMjgsIDcxLCA4NywgNjksIDY5LCAKKyAgICAxMjgsIDcxLCA4NywgNjksIDEyOCwgNzEsIDg3LCA2NSwgNjUsIDEyOCwgNzEsIDg3LCA2NSwgMTI4LCA3MSwgODYsIDEyOCwgCisgICAgNzEsIDg1LCA4MiwgODUsIDgzLCA3MiwgMTI4LCA3MSwgODUsIDgyLCA4NSwgNzgsIDEyOCwgNzEsIDg1LCA4MiwgNjUsIDc3LCAKKyAgICA4NSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA1NSwgMTI4LCA3MSwgODUsIDc4LCA4NSwgMTI4LCA3MSwgODUsIAorICAgIDc4LCAyMTMsIDcxLCA4NSwgMjA1LCA3MSwgODUsIDc2LCAxMjgsIDcxLCA4NSwgNzMsIDg0LCA2NSwgODIsIDEyOCwgNzEsIAorICAgIDg1LCAxOTksIDcxLCA4NSwgNjksIDcyLCAxMjgsIDcxLCA4NSwgNjksIDIwMCwgNzEsIDg1LCA2OCwgMTI4LCA3MSwgODUsIAorICAgIDE5NiwgNzEsIDg1LCA2NSwgODIsIDY4LCA4MywgNzcsIDY1LCA3OCwgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjgsIDY5LCA2OCwgCisgICAgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY4LCA2OSwgMTk2LCA3MSwgODUsIDY1LCA4MiwgNjgsIAorICAgIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY1LCA3OCwgMjAxLCA3MSwgODUsIDE5MywgNzEsIDg1LCAxNzgsIDcxLCA4NCwgNjksIAorICAgIDIxMCwgNzEsIDgzLCA4NSwgNzcsIDEyOCwgNzEsIDgzLCA4NSwgMjA1LCA3MSwgODIsIDIxMywgNzEsIDgyLCA3OSwgODcsIAorICAgIDczLCA3OCwgMTk5LCA3MSwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDcxLCA4MiwgNzksIDc4LCA4NCwgNzIsIDczLCA4MywgCisgICAgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzEsIDgyLCA3MywgNzgsIDc4LCA3MywgNzgsIDE5OSwgNzEsIDgyLCA3MywgNzcsIDY1LCAKKyAgICA2NywgNzMsIDc4LCAxOTksIDcxLCA4MiwgNjksIDcxLCA3OSwgODIsIDczLCA2NSwgMjA2LCA3MSwgODIsIDY5LCA2OSwgCisgICAgMjA2LCA3MSwgODIsIDY5LCA2NSwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDgyLCAKKyAgICA0NSwgODQsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgODIsIDQ1LCA4NCwgNzIsIDY1LCAyMDYsIAorICAgIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDIxMCwgNzEsIDgyLCA2OSwgNjUsIDIxMiwgNzEsIDgyLCA2NSwgODYsIDY5LCA4OSwgCisgICAgNjUsIDgyLCAxOTYsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzEsIDgyLCAKKyAgICA2NSwgODYsIDY5LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCAxMjgsIDcxLCA4MiwgCisgICAgNjUsIDg2LCAxOTcsIDcxLCA4MiwgNjUsIDg0LCA2OSwgODIsIDEyOCwgNzEsIDgyLCA2NSwgODMsIDgzLCAxMjgsIDcxLCAKKyAgICA4MiwgNjUsIDgzLCAyMTEsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNjksIDc3LCAxOTcsIDcxLCA4MiwgNjUsIDgwLCA2OSwgODMsIAorICAgIDEyOCwgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDcxLCA4MiwgNjUsIDczLCA3OCwgMTI4LCA3MSwgODIsIDY1LCA2OCwgCisgICAgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcxLCA4MiwgNjUsIDY3LCA2OSwgMTI4LCA3MSwgODIsIDY1LCA2NywgMTk3LCAKKyAgICA3MSwgODAsIDY1LCAxMjgsIDcxLCA3OSwgODIsIDg0LCA3MiwgNzcsIDczLCA3NSwgNzksIDIwNiwgNzEsIDc5LCA4MiwgODQsIAorICAgIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCA4NCwgNjksIDgyLCA3MywgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDgzLCA4OSwgCisgICAgNzgsIDg0LCA3MiwgNjksIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCAyMDYsIDcxLCA3OSwgODIsIDcxLCAKKyAgICA3MywgMTI4LCA3MSwgNzksIDgyLCA2NSwgMTI4LCA3MSwgNzksIDc5LCAxOTYsIDcxLCA3OSwgNzgsIDcxLCAxMjgsIDcxLCAKKyAgICA3OSwgNzYsIDY4LCAxMjgsIDcxLCA3OSwgNzUsIDEyOCwgNzEsIDc5LCA3MywgNzgsIDE5OSwgNzEsIDc5LCA2NiwgNzYsIAorICAgIDczLCA3OCwgMTI4LCA3MSwgNzksIDY1LCA3NiwgMTI4LCA3MSwgNzksIDY1LCAyMDQsIDcxLCA3OSwgNjUsIDEyOCwgNzEsIAorICAgIDc4LCA4OSwgNzMsIDgzLCAxMjgsIDcxLCA3OCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzEsIDc2LCA3OSwgCisgICAgODcsIDczLCA3OCwgMTk5LCA3MSwgNzYsIDc5LCA4NCwgODQsIDY1LCAyMDQsIDcxLCA3NiwgNzksIDY2LCAxOTcsIDcxLCAKKyAgICA3NiwgNzMsIDgzLCA4MywgNjUsIDc4LCA2OCwgMjA3LCA3MSwgNzYsIDY5LCA3MywgNjcsIDIwMCwgNzEsIDc2LCA2NSwgNzEsIAorICAgIDc5LCA3NiwgNzMsIDEyOCwgNzEsIDc2LCA2NSwgMTI4LCA3MSwgNzQsIDY5LCAxMjgsIDcxLCA3MywgODgsIDEyOCwgNzEsIAorICAgIDczLCA4NCwgMTI4LCA3MSwgNzMsIDgzLCA3MiwgMTI4LCA3MSwgNzMsIDgzLCAyMDAsIDcxLCA3MywgODMsIDY1LCA3NiwgCisgICAgMTI4LCA3MSwgNzMsIDgyLCA4NSwgNjgsIDY1LCA2NSwgMTI4LCA3MSwgNzMsIDgyLCA3NiwgMTI4LCA3MSwgNzMsIDgyLCAKKyAgICA1MSwgMTI4LCA3MSwgNzMsIDgyLCAxNzksIDcxLCA3MywgODIsIDUwLCAxMjgsIDcxLCA3MywgODIsIDE3OCwgNzEsIDczLCAKKyAgICA4MCwgMTI4LCA3MSwgNzMsIDc4LCA3MywgNzMsIDEyOCwgNzEsIDczLCA3NywgNjksIDc2LCAxMjgsIDcxLCA3MywgNzcsIAorICAgIDY5LCAyMDQsIDcxLCA3MywgNzcsIDEyOCwgNzEsIDczLCA3MSwgNjUsIDEyOCwgNzEsIDczLCA2OSwgODQsIDEyOCwgNzEsIAorICAgIDczLCA2OCwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNjYsIDY2LCA3OSwgODUsIDIxMSwgNzEsIDczLCA2NiwgNjUsIDEyOCwgCisgICAgNzEsIDczLCA1MiwgMTI4LCA3MSwgNzMsIDE4MCwgNzEsIDcyLCA5MCwgMTI4LCA3MSwgNzIsIDg3LCA2NSwgMTI4LCA3MSwgCisgICAgNzIsIDg1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA3MiwgODUsIDc4LCA3OCwgMTkzLCA3MSwgNzIsIDg1LCAxMjgsIDcxLCAKKyAgICA3MiwgNzksIDg1LCAxMjgsIDcxLCA3MiwgNzksIDgzLCA4NCwgMTI4LCA3MSwgNzIsIDc5LCAxMjgsIDcxLCA3MiwgNzMsIAorICAgIDEyOCwgNzEsIDcyLCA3MiwgNjUsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDg4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA3OCwgCisgICAgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDcxLCAKKyAgICA3MiwgNjksIDc4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDgyLCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgODUsIAorICAgIDY1LCA2OSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCA4NCwgMTI4LCA3MSwgNzIsIDY5LCA2OSwgCisgICAgMTI4LCA3MSwgNzIsIDY5LCAxMjgsIDcxLCA3MiwgMTk3LCA3MSwgNzIsIDY1LCA4OSwgNzgsIDEyOCwgNzEsIDcyLCA2NSwgCisgICAgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA4MCwgMTI4LCA3MSwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNzIsIDY1LCAKKyAgICA3NywgNjUsIDc2LCAxMjgsIDcxLCA3MiwgNjUsIDczLCA3OCwgODUsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDc4LCAxMjgsIAorICAgIDcxLCA3MiwgNjUsIDczLCAyMDYsIDcxLCA3MiwgNjUsIDY4LCAxMjgsIDcxLCA3MiwgNjUsIDY1LCA3NywgNjUsIDY5LCAKKyAgICAxMjgsIDcxLCA3MiwgNjUsIDY1LCAxMjgsIDcxLCA3MSwgODcsIDczLCAxMjgsIDcxLCA3MSwgODcsIDY5LCA2OSwgMTI4LCAKKyAgICA3MSwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2NSwgNjUsIDEyOCwgNzEsIDcxLCA4NywgNjUsIDEyOCwgNzEsIAorICAgIDcxLCA4NSwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODQsIDEyOCwgNzEsIDcxLCA4NSwgODIsIDg4LCAxMjgsIDcxLCA3MSwgCisgICAgODUsIDgyLCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODQsIDEyOCwgNzEsIDcxLCAKKyAgICA4NSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgODUsIDc5LCAxMjgsIDcxLCA3MSwgNzksIDg4LCAxMjgsIDcxLCA3MSwgNzksIAorICAgIDg0LCAxMjgsIDcxLCA3MSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgNzMsIDg4LCAxMjgsIDcxLCA3MSwgNzMsIDg0LCAxMjgsIAorICAgIDcxLCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgODAsIDEyOCwgNzEsIDcxLCA3MywgNjksIDEyOCwgCisgICAgNzEsIDcxLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA2OSwgODQsIDEyOCwgNzEsIDcxLCA2OSwgODAsIDEyOCwgNzEsIDcxLCAKKyAgICA2NSwgODgsIDEyOCwgNzEsIDcxLCA2NSwgODQsIDEyOCwgNzEsIDcxLCA2NSwgNjUsIDEyOCwgNzEsIDY5LCA4NCwgMTkzLCAKKyAgICA3MSwgNjksIDgzLCA4NCwgODUsIDgyLCA2OSwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODUsIDEyOCwgNzEsIDY5LCA4MywgNzIsIAorICAgIDg0LCA3MywgNzgsIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg0LCA3MywgMjA2LCA3MSwgNjksIDgzLCA3MiwgNTAsIDEyOCwgCisgICAgNzEsIDY5LCA4MiwgODMsIDcyLCA2NSwgODksIDczLCA3NywgMTI4LCA3MSwgNjksIDgyLCA3NywgNjUsIDIwNiwgNzEsIDY5LCAKKyAgICA4MiwgNjksIDgzLCA3MiwgMTI4LCA3MSwgNjksIDgyLCA2OSwgODMsIDIwMCwgNzEsIDY5LCA3OSwgNzcsIDY5LCA4NCwgODIsIAorICAgIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA3MSwgNjksIDc5LCA3NywgNjksIDg0LCA4MiwgNzMsIDE5NSwgNzEsIDY5LCA3OCwgCisgICAgODQsIDc2LCAxOTcsIDcxLCA2OSwgNzgsIDczLCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3MSwgNjksIDc4LCA3MywgNzUsIAorICAgIDIwMSwgNzEsIDY5LCA3OCwgNjksIDgyLCA3MywgMTk1LCA3MSwgNjksIDc3LCA3MywgNzgsIDczLCAxMjgsIDcxLCA2OSwgCisgICAgNzcsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzEsIDY5LCAyMDUsIDcxLCA2OSwgNjgsIDc5LCA3NiwgNjUsIAorICAgIDEyOCwgNzEsIDY5LCA2OCwgNjksIDEyOCwgNzEsIDY5LCA2NiwgMjA3LCA3MSwgNjksIDY2LCAxOTMsIDcxLCA2OSwgNjUsIAorICAgIDgyLCAxMjgsIDcxLCA2OSwgNjUsIDIxMCwgNzEsIDY4LCA2NSwgNzgsIDEyOCwgNzEsIDY3LCA3MywgNzEsIDEyOCwgNzEsIAorICAgIDY3LCA2NSwgMjA2LCA3MSwgNjYsIDc5LCA3OCwgMTI4LCA3MSwgNjYsIDczLCA2OSwgMTk3LCA3MSwgNjYsIDY5LCA4NSwgCisgICAgODgsIDEyOCwgNzEsIDY2LCA2OSwgODQsIDEyOCwgNzEsIDY2LCA2NSwgODksIDczLCAxMjgsIDcxLCA2NiwgNjUsIDc1LCAKKyAgICA4NSwgODIsIDg1LCA3OCwgNjksIDc4LCAxMjgsIDcxLCA2NiwgMTI4LCA3MSwgNjUsIDg5LCA2NSwgNzgsIDg1LCA3NSwgNzMsIAorICAgIDg0LCA4NCwgNjUsIDEyOCwgNzEsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDY1LCA4OSwgMTI4LCA3MSwgCisgICAgNjUsIDg1LCA3OCwgODQsIDc2LCA2OSwgODQsIDEyOCwgNzEsIDY1LCA4NCwgNzIsIDY5LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCAKKyAgICA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCA3MywgNzgsIDE5OSwgNzEsIDY1LCA4NCwgNjksIDEyOCwgNzEsIDY1LCA4MywgNzIsIAorICAgIDY1LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA4MywgNzIsIDg1LCA3OCwgNzMsIDEyOCwgNzEsIDY1LCA4MiwgNzksIDc4LCAKKyAgICAxMjgsIDcxLCA2NSwgODIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDcxLCA2NSwgODIsIDY4LCA2OSwgNzgsIDEyOCwgNzEsIAorICAgIDY1LCA4MiwgNTEsIDEyOCwgNzEsIDY1LCA4MCwgODAsIDY5LCAxOTYsIDcxLCA2NSwgMjA4LCA3MSwgNjUsIDc4LCA3NywgCisgICAgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNzEsIDczLCA2NSwgMTI4LCA3MSwgNjUsIDc4LCA2OCwgMTkzLCA3MSwgNjUsIDc4LCAKKyAgICA1MCwgMTI4LCA3MSwgNjUsIDc4LCAxNzgsIDcxLCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA3MSwgNjUsIDc3LCA3NiwgNjUsIAorICAgIDEyOCwgNzEsIDY1LCA3NywgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjksIDEyOCwgNzEsIDY1LCA3NywgMTk3LCA3MSwgNjUsIAorICAgIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCA2NSwgNzcsIDY1LCAyMDQsIDcxLCA2NSwgCisgICAgNzEsIDEyOCwgNzEsIDY1LCA3MCwgMTI4LCA3MSwgNjUsIDE5OCwgNzEsIDY1LCA2OSwgODQsIDg0LCA2NSwgNDUsIDgwLCAKKyAgICA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MSwgNjUsIDY4LCA3OSwgNzYsIDEyOCwgNzEsIDY1LCA2OCwgMTI4LCA3MSwgNjUsIAorICAgIDE5NiwgNzEsIDY1LCA2NiwgNjUsIDEyOCwgNzEsIDY1LCA2NiwgMTkzLCA3MSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzEsIAorICAgIDY1LCAxNzgsIDcxLCA0OCwgNTMsIDUyLCAxMjgsIDcxLCA0OCwgNTMsIDUxLCAxMjgsIDcxLCA0OCwgNTMsIDUwLCAxMjgsIAorICAgIDcxLCA0OCwgNTMsIDQ5LCAxMjgsIDcxLCA0OCwgNTMsIDQ4LCAxMjgsIDcxLCA0OCwgNTIsIDU3LCAxMjgsIDcxLCA0OCwgCisgICAgNTIsIDU2LCAxMjgsIDcxLCA0OCwgNTIsIDU1LCAxMjgsIDcxLCA0OCwgNTIsIDU0LCAxMjgsIDcxLCA0OCwgNTIsIDUzLCAKKyAgICA2NSwgMTI4LCA3MSwgNDgsIDUyLCA1MywgMTI4LCA3MSwgNDgsIDUyLCA1MiwgMTI4LCA3MSwgNDgsIDUyLCA1MSwgNjUsIAorICAgIDEyOCwgNzEsIDQ4LCA1MiwgNTEsIDEyOCwgNzEsIDQ4LCA1MiwgNTAsIDEyOCwgNzEsIDQ4LCA1MiwgNDksIDEyOCwgNzEsIAorICAgIDQ4LCA1MiwgNDgsIDEyOCwgNzEsIDQ4LCA1MSwgNTcsIDEyOCwgNzEsIDQ4LCA1MSwgNTYsIDEyOCwgNzEsIDQ4LCA1MSwgCisgICAgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIDU1LCAxMjgsIDcxLCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDUxLCAKKyAgICA1NCwgMTI4LCA3MSwgNDgsIDUxLCA1MywgMTI4LCA3MSwgNDgsIDUxLCA1MiwgMTI4LCA3MSwgNDgsIDUxLCA1MSwgMTI4LCAKKyAgICA3MSwgNDgsIDUxLCA1MCwgMTI4LCA3MSwgNDgsIDUxLCA0OSwgMTI4LCA3MSwgNDgsIDUxLCA0OCwgMTI4LCA3MSwgNDgsIAorICAgIDUwLCA1NywgMTI4LCA3MSwgNDgsIDUwLCA1NiwgMTI4LCA3MSwgNDgsIDUwLCA1NSwgMTI4LCA3MSwgNDgsIDUwLCA1NCwgCisgICAgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIDEyOCwgNzEsIDQ4LCA1MCwgNTMsIDEyOCwgNzEsIDQ4LCA1MCwgNTIsIDEyOCwgCisgICAgNzEsIDQ4LCA1MCwgNTEsIDEyOCwgNzEsIDQ4LCA1MCwgNTAsIDEyOCwgNzEsIDQ4LCA1MCwgNDksIDEyOCwgNzEsIDQ4LCAKKyAgICA1MCwgNDgsIDY1LCAxMjgsIDcxLCA0OCwgNTAsIDQ4LCAxMjgsIDcxLCA0OCwgNDksIDU3LCAxMjgsIDcxLCA0OCwgNDksIAorICAgIDU2LCAxMjgsIDcxLCA0OCwgNDksIDU1LCAxMjgsIDcxLCA0OCwgNDksIDU0LCAxMjgsIDcxLCA0OCwgNDksIDUzLCAxMjgsIAorICAgIDcxLCA0OCwgNDksIDUyLCAxMjgsIDcxLCA0OCwgNDksIDUxLCAxMjgsIDcxLCA0OCwgNDksIDUwLCAxMjgsIDcxLCA0OCwgCisgICAgNDksIDQ5LCA2NSwgMTI4LCA3MSwgNDgsIDQ5LCA0OSwgMTI4LCA3MSwgNDgsIDQ5LCA0OCwgMTI4LCA3MSwgNDgsIDQ4LCAKKyAgICA1NywgMTI4LCA3MSwgNDgsIDQ4LCA1NiwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIAorICAgIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCAxMjgsIDcxLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NCwgCisgICAgMTI4LCA3MSwgNDgsIDQ4LCA1MywgMTI4LCA3MSwgNDgsIDQ4LCA1MiwgMTI4LCA3MSwgNDgsIDQ4LCA1MSwgMTI4LCA3MSwgCisgICAgNDgsIDQ4LCA1MCwgMTI4LCA3MSwgNDgsIDQ4LCA0OSwgMTI4LCA3MCwgODksIDg4LCAxMjgsIDcwLCA4OSwgODQsIDEyOCwgCisgICAgNzAsIDg5LCA4MCwgMTI4LCA3MCwgODksIDY1LCAxMjgsIDcwLCA4NywgNzMsIDEyOCwgNzAsIDg3LCA2OSwgNjksIDEyOCwgCisgICAgNzAsIDg3LCA2OSwgMTI4LCA3MCwgODcsIDY1LCA2NSwgMTI4LCA3MCwgODcsIDY1LCAxMjgsIDcwLCA4NiwgODMsIDUxLCAKKyAgICAxMjgsIDcwLCA4NiwgODMsIDUwLCAxMjgsIDcwLCA4NiwgODMsIDQ5LCAxMjgsIDcwLCA4NSwgODgsIDEyOCwgNzAsIDg1LCAKKyAgICA4NCwgMTI4LCA3MCwgODUsIDgzLCA2OSwgMTI4LCA3MCwgODUsIDgzLCAxOTMsIDcwLCA4NSwgODIsIDg4LCAxMjgsIDcwLCAKKyAgICA4NSwgODAsIDEyOCwgNzAsIDg1LCA3OCwgNjksIDgyLCA2NSwgMjA0LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIAorICAgIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MCwgODUsIDc2LCA3NiwgNzgsIDY5LCA4MywgCisgICAgODMsIDEyOCwgNzAsIDg1LCA3NiwgMjA0LCA3MCwgODUsIDc0LCA3MywgMTI4LCA3MCwgODUsIDY5LCA4NCwgMTI4LCA3MCwgCisgICAgODUsIDY5LCAyMDQsIDcwLCA4NSwgNjksIDEyOCwgNzAsIDg0LCA3MiwgNzksIDgyLCAxOTMsIDcwLCA4MiwgNzksIDg3LCAKKyAgICA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgODIsIDc5LCA4NywgNzgsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCA4NywgNzgsIAorICAgIDEyOCwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgODQsIDczLCA3NiwgODQsIDY5LCAxOTYsIDcwLCA4MiwgNzksIDc4LCA4NCwgCisgICAgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCAyMDUsIDcwLCA4MiwgNzksIDcxLCAxMjgsIDcwLCAKKyAgICA4MiwgNzksIDE5OSwgNzAsIDgyLCA3MywgODQsIDg1LCAxMjgsIDcwLCA4MiwgNzMsIDY5LCA4MywgMTI4LCA3MCwgODIsIAorICAgIDczLCA2OSwgMTk2LCA3MCwgODIsIDczLCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDcwLCA4MiwgNjksIDg0LCA2NiwgCisgICAgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzAsIDgyLCA2OSwgNzgsIDY3LCAyMDAsIDcwLCA4MiwgNjksIDY5LCAxMjgsIDcwLCAKKyAgICA4MiwgNjksIDE5NywgNzAsIDgyLCA2NSwgNzgsIDE5NSwgNzAsIDgyLCA2NSwgNzcsIDY5LCAxMjgsIDcwLCA4MiwgNjUsIAorICAgIDcxLCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA3MCwgODIsIDY1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzAsIDgyLCA2NSwgCisgICAgNjcsIDg0LCA3MywgNzksIDIwNiwgNzAsIDc5LCA4OCwgMTI4LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgNzgsIAorICAgIDEyOCwgNzAsIDc5LCA4NSwgODIsIDg0LCA2OSwgNjksIDIwNiwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4NCwgNzIsIDczLCA4MiwgCisgICAgODQsIDg5LCAxMjgsIDcwLCA3OSwgODUsIDgyLCA0NSwgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3OSwgODUsIDgyLCAKKyAgICA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDcwLCA3OSwgODUsIDgyLCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzksIAorICAgIDg1LCAyMTAsIDcwLCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgMTI4LCA3MCwgNzksIDgzLCA4NCwgNjksIDgyLCA3MywgCisgICAgNzgsIDcxLCAxMjgsIDcwLCA3OSwgODIsIDg3LCA2NSwgODIsIDY4LCAxMjgsIDcwLCA3OSwgODIsIDg0LCA4OSwgMTI4LCAKICAgICA3MCwgNzksIDgyLCA4NCwgMjE3LCA3MCwgNzksIDgyLCA4NCwgNjksIDEyOCwgNzAsIDc5LCA4MiwgNzcsIDIxMSwgNzAsIAogICAgIDc5LCA4MiwgNzcsIDY1LCA4NCwgODQsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgNzUsIDY5LCAxOTYsIDcwLCA3OSwgCiAgICAgODIsIDY3LCA2OSwgODMsIDEyOCwgNzAsIDc5LCA4MiwgNjcsIDY5LCAxMjgsIDcwLCA3OSwgODAsIDEyOCwgNzAsIDc5LCAKQEAgLTM0NjIsMzg0ICszNjE4LDM4OSBAQAogICAgIDEyOCwgNzAsIDc5LCA3OSwgODQsIDEyOCwgNzAsIDc5LCA3OSwgNjgsIDEyOCwgNzAsIDc5LCA3OSwgMTI4LCA3MCwgNzksIAogICAgIDc4LCA3MSwgNzcsIDY1LCA3OCwgMTI4LCA3MCwgNzksIDc3LCAxMjgsIDcwLCA3OSwgNzYsIDc2LCA4OSwgMTI4LCA3MCwgCiAgICAgNzksIDc2LCA3NiwgNzksIDg3LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgNzYsIDY4LCA2OSwgODIsIDEyOCwgNzAsIDc5LCAKLSAgICA3NiwgNjgsIDY5LCAxOTYsIDcwLCA3OSwgNzEsIDcxLCA4OSwgMTI4LCA3MCwgNzcsIDEyOCwgNzAsIDc2LCA4OSwgMTI4LCAKLSAgICA3MCwgNzYsIDg1LCA4NCwgODQsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3NiwgODUsIDg0LCA2OSwgMTI4LCA3MCwgNzYsIAotICAgIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcwLCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNzAsIDc2LCA3OSwgODcsIDY5LCAKLSAgICAyMTAsIDcwLCA3NiwgNzksIDg1LCA4MiwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjksIDg0LCA4NCwgNjksIAotICAgIDEyOCwgNzAsIDc2LCA3OSwgODIsIDY1LCAyMDQsIDcwLCA3NiwgNzksIDgwLCA4MCwgMjE3LCA3MCwgNzYsIDc5LCA3OSwgCi0gICAgODIsIDEyOCwgNzAsIDc2LCA3MywgODAsIDEyOCwgNzAsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3MCwgNzYsIDY5LCAKLSAgICA4OCwgODUsIDgzLCAxMjgsIDcwLCA3NiwgNjksIDg4LCA2OSwgMTk2LCA3MCwgNzYsIDY5LCA4NSwgODIsIDQ1LCA2OCwgNjksIAotICAgIDQ1LCA3NiwgNzMsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDg0LCA4NCwgNjksIDc4LCA2OSwgMTk2LCA3MCwgNzYsIDY1LCA4NCwgCi0gICAgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODQsIDEyOCwgNzAsIDc2LCA2NSwgMjEyLCA3MCwgNzYsIDY1LCAKLSAgICA3MSwgODMsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MywgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUyLCAxMjgsIAotICAgIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTEsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MCwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgCi0gICAgNDUsIDQ5LCAxMjgsIDcwLCA3NiwgNjUsIDcxLCAxMjgsIDcwLCA3NiwgNjUsIDE5OSwgNzAsIDc2LCA2NSwgMTI4LCA3MCwgCi0gICAgNzYsIDEyOCwgNzAsIDczLCA4OCwgNjksIDY4LCA0NSwgNzAsIDc5LCA4MiwgMjA1LCA3MCwgNzMsIDg4LCAxMjgsIDcwLCAKLSAgICA3MywgODYsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgNDUsIDc2LCA3MywgCi0gICAgNzgsIDE5NywgNzAsIDczLCA4NiwgMTk3LCA3MCwgNzMsIDg0LCA2NSwgMTI4LCA3MCwgNzMsIDg0LCAxMjgsIDcwLCA3MywgCi0gICAgODMsIDg0LCA2OSwgMTk2LCA3MCwgNzMsIDgzLCA4NCwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgNzMsIDc4LCAxOTksIDcwLCAKLSAgICA3MywgODMsIDcyLCA3MiwgNzksIDc5LCA3NSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgMjAzLCA3MCwgNzMsIAotICAgIDgzLCA3MiwgNjksIDg5LCA2OSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzMsIDgzLCAyMDAsIDcwLCA3MywgCi0gICAgODIsIDgzLCAyMTIsIDcwLCA3MywgODIsIDczLCAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIDgyLCA3NSwgODMsIAotICAgIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgODIsIDIwMywgNzAsIDczLCA4MiwgNjksIDEyOCwgNzAsIDczLCA4MiwgCi0gICAgMTk3LCA3MCwgNzMsIDgwLCAxMjgsIDcwLCA3MywgNzgsIDczLCA4NCwgMTk3LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCAKLSAgICA3OCwgNjUsIDczLCA3NiwgODMsIDEyOCwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgNjksIDE5NiwgNzAsIDczLCA3OCwgNjUsIAotICAgIDc4LCA2NywgNzMsIDY1LCA3NiwgMTI4LCA3MCwgNzMsIDc2LCA3NiwgNjksIDgyLCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgCi0gICAgMTk2LCA3MCwgNzMsIDc2LCA3NiwgMTI4LCA3MCwgNzMsIDc2LCAyMDQsIDcwLCA3MywgNzYsIDE5NywgNzAsIDczLCA3MywgCi0gICAgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUwLCAKLSAgICAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDE5NywgNzAsIAotICAgIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCA3MywgNzAsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgMjE3LCA3MCwgCi0gICAgNzMsIDcwLCA4NCwgNzIsIDgzLCAxMjgsIDcwLCA3MywgNzAsIDg0LCA3MiwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCAKLSAgICA3OCwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCAyMDYsIDcwLCA3MywgNjksIDc2LCA2OCwgMTI4LCA3MCwgNzIsIAotICAgIDg0LCA3OSwgODIsIDE5MywgNzAsIDcwLCA3NiwgMTI4LCA3MCwgNzAsIDczLCAxMjgsIDcwLCA2OSwgODUsIDg4LCAxMjgsIAotICAgIDcwLCA2OSwgODUsIDcwLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzAsIDY5LCA4MywgODQsIDczLCA4NiwgNjUsIDc2LCAKLSAgICAxMjgsIDcwLCA2OSwgODIsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDgyLCA4MiwgNzMsIDIxMSwgNzAsIDY5LCA4MiwgNzcsIAotICAgIDY1LCA4NCwgNjUsIDEyOCwgNzAsIDY5LCA4MiwgNzcsIDY1LCA4NCwgMTkzLCA3MCwgNjksIDc5LCAyMDAsIDcwLCA2OSwgCi0gICAgNzgsIDE5OSwgNzAsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDcwLCA2OSwgNzcsIDczLCA3OCwgNzMsIDc4LCAxOTcsIDcwLCAKLSAgICA2OSwgNzcsIDY1LCA3NiwgNjksIDEyOCwgNzAsIDY5LCA3NywgNjUsIDc2LCAxOTcsIDcwLCA2OSwgNzYsIDc2LCA3OSwgODcsIAotICAgIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDcwLCA2OSwgNzMsIDEyOCwgNzAsIDY5LCA3MiwgMjEzLCA3MCwgNjksIDcyLCAxMjgsIAotICAgIDcwLCA2OSwgMjAwLCA3MCwgNjksIDY5LCA3OCwgNzEsIDEyOCwgNzAsIDY5LCA2OSwgNjgsIDEyOCwgNzAsIDY5LCA2OSwgCi0gICAgMTk2LCA3MCwgNjksIDY5LCAxMjgsIDcwLCA2OSwgNjYsIDgyLCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDY1LCAKLSAgICA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2OSwgNjUsIDgyLCA3OCwgCi0gICAgMTI4LCA3MCwgNjksIDY1LCA4MiwgNzAsIDg1LCAyMDQsIDcwLCA2OSwgNjUsIDgyLCAxMjgsIDcwLCA2NSwgODksIDY1LCAKLSAgICA3OCwgNzgsIDY1LCAxMjgsIDcwLCA2NSwgODgsIDEyOCwgNzAsIDY1LCAyMTYsIDcwLCA2NSwgODQsIDczLCA3MSwgODUsIAotICAgIDY5LCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2NSwgCi0gICAgODQsIDcyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjUsIDg0LCA2NSwgMjA2LCA3MCwgNjUsIDg0LCAKLSAgICA3MiwgNjUsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDE5MywgNzAsIDY1LCA4NCwgMTI4LCA3MCwgNjUsIDgyLCA4MywgMjAxLCAKLSAgICA3MCwgNjUsIDgxLCAxMjgsIDcwLCA2NSwgODAsIDEyOCwgNzAsIDY1LCA3OCwgNzEsIDEyOCwgNzAsIDY1LCA3OCwgNjksIAotICAgIDgyLCA3OSwgODMsIDczLCAyMTEsIDcwLCA2NSwgNzgsIDEyOCwgNzAsIDY1LCA3NywgNzMsIDc2LCA4OSwgMTI4LCA3MCwgCi0gICAgNjUsIDc2LCA3NiwgNzMsIDc4LCAxOTksIDcwLCA2NSwgNzYsIDc2LCA2OSwgMjA2LCA3MCwgNjUsIDczLCA3NiwgODUsIDgyLCAKLSAgICA2OSwgMTI4LCA3MCwgNjUsIDczLCA3MiwgODUsIDEyOCwgNzAsIDY1LCA3MiwgODIsIDY5LCA3OCwgNzIsIDY5LCA3MywgODQsIAotICAgIDEyOCwgNzAsIDY1LCA2NywgODQsIDc5LCA4MiwgODksIDEyOCwgNzAsIDY1LCA2NywgODQsIDc5LCAyMTAsIDcwLCA2NSwgCi0gICAgNjcsIDgzLCA3MywgNzcsIDczLCA3NiwgMTk3LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDU0LCAxMjgsIDcwLCA2NSwgNjcsIDY5LCAKLSAgICA0NSwgNTMsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MiwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUxLCAxMjgsIAotICAgIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTAsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNjUsIDY1LCA3NywgCi0gICAgNjUsIDY5LCAxMjgsIDcwLCA2NSwgNjUsIDczLCAxMjgsIDcwLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3MCwgNDgsIDUzLCAKLSAgICA1MSwgMTI4LCA3MCwgNDgsIDUzLCA1MCwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjcsIDEyOCwgNzAsIDQ4LCA1MywgNDksIAotICAgIDY2LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgMTI4LCA3MCwgNDgsIDUzLCA0OCwgCi0gICAgMTI4LCA3MCwgNDgsIDUyLCA1NywgMTI4LCA3MCwgNDgsIDUyLCA1NiwgMTI4LCA3MCwgNDgsIDUyLCA1NSwgNjUsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MiwgNTUsIDEyOCwgNzAsIDQ4LCA1MiwgNTQsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDU0LCAxMjgsIDcwLCAKLSAgICA0OCwgNTIsIDUzLCA2NSwgMTI4LCA3MCwgNDgsIDUyLCA1MywgMTI4LCA3MCwgNDgsIDUyLCA1MiwgMTI4LCA3MCwgNDgsIAotICAgIDUyLCA1MSwgMTI4LCA3MCwgNDgsIDUyLCA1MCwgMTI4LCA3MCwgNDgsIDUyLCA0OSwgMTI4LCA3MCwgNDgsIDUyLCA0OCwgCi0gICAgMTI4LCA3MCwgNDgsIDUxLCA1NywgMTI4LCA3MCwgNDgsIDUxLCA1NiwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNTYsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDU1LCAxMjgsIDcwLCA0OCwgNTEsIDU0LCAxMjgsIDcwLCAKLSAgICA0OCwgNTEsIDUzLCAxMjgsIDcwLCA0OCwgNTEsIDUyLCAxMjgsIDcwLCA0OCwgNTEsIDUxLCAxMjgsIDcwLCA0OCwgNTEsIAotICAgIDUwLCAxMjgsIDcwLCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA0OSwgMTI4LCA3MCwgNDgsIDUxLCA0OCwgCi0gICAgMTI4LCA3MCwgNDgsIDUwLCA1NywgMTI4LCA3MCwgNDgsIDUwLCA1NiwgMTI4LCA3MCwgNDgsIDUwLCA1NSwgMTI4LCA3MCwgCi0gICAgNDgsIDUwLCA1NCwgMTI4LCA3MCwgNDgsIDUwLCA1MywgMTI4LCA3MCwgNDgsIDUwLCA1MiwgMTI4LCA3MCwgNDgsIDUwLCAKLSAgICA1MSwgMTI4LCA3MCwgNDgsIDUwLCA1MCwgMTI4LCA3MCwgNDgsIDUwLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MCwgNDksIAotICAgIDEyOCwgNzAsIDQ4LCA1MCwgNDgsIDEyOCwgNzAsIDQ4LCA0OSwgNTcsIDEyOCwgNzAsIDQ4LCA0OSwgNTYsIDEyOCwgNzAsIAotICAgIDQ4LCA0OSwgNTUsIDEyOCwgNzAsIDQ4LCA0OSwgNTQsIDEyOCwgNzAsIDQ4LCA0OSwgNTMsIDEyOCwgNzAsIDQ4LCA0OSwgCi0gICAgNTIsIDEyOCwgNzAsIDQ4LCA0OSwgNTEsIDY1LCAxMjgsIDcwLCA0OCwgNDksIDUxLCAxMjgsIDcwLCA0OCwgNDksIDUwLCAKLSAgICAxMjgsIDcwLCA0OCwgNDksIDQ5LCAxMjgsIDcwLCA0OCwgNDksIDQ4LCAxMjgsIDcwLCA0OCwgNDgsIDU3LCAxMjgsIDcwLCAKLSAgICA0OCwgNDgsIDU2LCAxMjgsIDcwLCA0OCwgNDgsIDU1LCAxMjgsIDcwLCA0OCwgNDgsIDU0LCAxMjgsIDcwLCA0OCwgNDgsIAotICAgIDUzLCAxMjgsIDcwLCA0OCwgNDgsIDUyLCAxMjgsIDcwLCA0OCwgNDgsIDUxLCAxMjgsIDcwLCA0OCwgNDgsIDUwLCAxMjgsIAotICAgIDcwLCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDQ4LCA0OSwgMTI4LCA2OSwgOTAsIDIwMCwgNjksIDkwLCA2OSwgCi0gICAgNzgsIDEyOCwgNjksIDkwLCA2OSwgMjA2LCA2OSwgOTAsIDEyOCwgNjksIDg5LCA2OSwgODMsIDEyOCwgNjksIDg5LCA2OSwgCi0gICAgNzEsIDc2LCA2NSwgODMsIDgzLCA2OSwgODMsIDEyOCwgNjksIDg5LCA2NiwgNjksIDg5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCAKLSAgICA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY5LCA4OCwgODQsIDgyLCA2NSwgODQsIDY5LCA4MiwgODIsIDY5LCA4MywgCi0gICAgODQsIDgyLCA3MywgNjUsIDIwNCwgNjksIDg4LCA4NCwgODIsIDY1LCA0NSwgNzYsIDc5LCAyMTUsIDY5LCA4OCwgODQsIDgyLCAKLSAgICA2NSwgNDUsIDcyLCA3MywgNzEsIDIwMCwgNjksIDg4LCA4NCwgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIAotICAgIDg0LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OSwgODgsIDgwLCA3OSwgNzgsIDY5LCA3OCwgMjEyLCA2OSwgODgsIDc5LCAKLSAgICAxMjgsIDY5LCA4OCwgMjA3LCA2OSwgODgsIDczLCA4MywgODQsIDgzLCAxMjgsIDY5LCA4OCwgNzMsIDgzLCA4NCwgMTI4LCAKLSAgICA2OSwgODgsIDcyLCA2NSwgODUsIDgzLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDY3LCA3NiwgNjUsIDc3LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA2NywgNzYsIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjksIDg4LCAKLSAgICA2NywgNzIsIDY1LCA3OCwgNzEsIDY5LCAxMjgsIDY5LCA4OCwgNjcsIDY5LCA4MywgODMsIDEyOCwgNjksIDg4LCA2NywgNjksIAotICAgIDc2LCA3NiwgNjksIDc4LCA4NCwgMTI4LCA2OSwgODcsIDY5LCAxMjgsIDY5LCA4NiwgNjksIDgyLCA3MSwgODIsIDY5LCA2OSwgCi0gICAgMjA2LCA2OSwgODYsIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2OSwgODUsIDgyLCA3OSwgODAsIDY5LCA2NSwgMjA2LCAKLSAgICA2OSwgODUsIDgyLCA3OSwgODAsIDY5LCA0NSwgNjUsIDcwLCA4MiwgNzMsIDY3LCA2NSwgMTI4LCA2OSwgODUsIDgyLCA3OSwgCi0gICAgNDUsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDY3LCAyMTcsIDY5LCA4NSwgODIsIDIwNywgNjksIDg1LCA3NiwgNjksIAotICAgIDIxMCwgNjksIDg1LCA0NSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNzksIDEyOCwgNjksIDg1LCA0NSwgNjksIDg1LCAxMjgsIAotICAgIDY5LCA4NSwgNDUsIDY5LCA3OSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgMTI4LCA2OSwgODUsIDQ1LCA2NSwgMTI4LCA2OSwgCi0gICAgODQsIDc4LCA2NSwgNzIsIDg0LCA2NSwgMTI4LCA2OSwgODQsIDcyLCA2OSwgMjA0LCA2OSwgODQsIDY5LCA4MiwgNzksIAotICAgIDIwNiwgNjksIDg0LCA2OSwgODIsIDc4LCA3MywgODQsIDg5LCAxMjgsIDY5LCA4MywgODUsIDc1LCA4NSwgODUsIDY4LCA3OSwgCi0gICAgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjksIDgzLCAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCAKLSAgICA2OSwgMTk2LCA2OSwgODMsIDcyLCA2OSwgNTEsIDEyOCwgNjksIDgzLCA3MiwgNTAsIDQ5LCAxMjgsIDY5LCA4MywgNzIsIAotICAgIDE3OCwgNjksIDgzLCA3MiwgNDksIDU0LCAxMjgsIDY5LCA4MywgNjcsIDY1LCA4MCwgNjksIDEyOCwgNjksIDgzLCA0NSwgCi0gICAgODQsIDY5LCAxMjgsIDY5LCA4MiwgODIsIDc5LCA4MiwgNDUsIDY2LCA2NSwgODIsIDgyLCA2OSwgMTk2LCA2OSwgODIsIDgyLCAKLSAgICAxMjgsIDY5LCA4MiwgNzMsIDc4LCA1MCwgMTI4LCA2OSwgODIsIDcxLCAxMjgsIDY5LCA4MiwgNjUsIDgzLCAxOTcsIDY5LCAKLSAgICA4MSwgODUsIDczLCA4NiwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgNjksIDgxLCA4NSwgNzMsIDY4LCAxMjgsIDY5LCA4MSwgODUsIAotICAgIDczLCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAyMTAsIDY5LCA4MSwgODUsIDY1LCA3NiwgODMsIDEyOCwgNjksIDgxLCA4NSwgCi0gICAgNjUsIDc2LCAyMTEsIDY5LCA4MSwgODUsIDY1LCA3NiwgMTI4LCA2OSwgODAsIDgzLCA3MywgNzYsIDc5LCA3OCwgMTI4LCAKLSAgICA2OSwgODAsIDgzLCA3MywgNzYsIDc5LCAyMDYsIDY5LCA4MCwgNzksIDY3LCA3MiwgMTI4LCA2OSwgODAsIDczLCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDczLCAxOTUsIDY5LCA4MCwgNzMsIDY4LCA2NSwgODUsIDgyLCA2OSwgNjUsIDIwNiwgNjksIDgwLCA2OSwgCi0gICAgNzgsIDg0LCA3MiwgNjksIDg0LCA3MywgMTk1LCA2OSwgODAsIDY5LCA3MSwgNjksIDgyLCA3NywgNjUsIDEyOCwgNjksIDc5LCAKLSAgICA3NiwgNzIsIDg4LCAxMjgsIDY5LCA3OSwgNzIsIDEyOCwgNjksIDc4LCA4OSwgMTI4LCA2OSwgNzgsIDg2LCA2OSwgNzYsIAorICAgIDc2LCA2OCwgNjksIDE5NiwgNzAsIDc5LCA3MSwgNzEsIDg5LCAxMjgsIDcwLCAyMDcsIDcwLCA3NywgMTI4LCA3MCwgNzYsIAorICAgIDg5LCAxMjgsIDcwLCA3NiwgODUsIDg0LCA4NCwgNjksIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc2LCA4NSwgODQsIDY5LCAKKyAgICAxMjgsIDcwLCA3NiwgODUsIDgzLCA3MiwgNjksIDE5NiwgNzAsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MCwgNzYsIAorICAgIDc5LCA4NywgNjksIDIxMCwgNzAsIDc2LCA3OSwgODUsIDgyLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3NiwgNzksIDgyLCA2OSwgCisgICAgODQsIDg0LCA2OSwgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjUsIDIwNCwgNzAsIDc2LCA3OSwgODAsIDgwLCAyMTcsIDcwLCAKKyAgICA3NiwgNzksIDc5LCA4MiwgMTI4LCA3MCwgNzYsIDczLCA4MCwgMTI4LCA3MCwgNzYsIDczLCA3MSwgNzIsIDg0LCAxMjgsIAorICAgIDcwLCA3NiwgNjksIDg4LCA4NSwgODMsIDEyOCwgNzAsIDc2LCA2OSwgODgsIDY5LCAxOTYsIDcwLCA3NiwgNjksIDg1LCA4MiwgCisgICAgNDUsIDY4LCA2OSwgNDUsIDc2LCA3MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODQsIDg0LCA2OSwgNzgsIDY5LCAxOTYsIDcwLCAKKyAgICA3NiwgNjUsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4NCwgMTI4LCA3MCwgNzYsIDY1LCAyMTIsIAorICAgIDcwLCA3NiwgNjUsIDcxLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUzLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgCisgICAgNTIsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MSwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUwLCAxMjgsIDcwLCAKKyAgICA3NiwgNjUsIDcxLCA0NSwgNDksIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDEyOCwgNzAsIDc2LCA2NSwgMTk5LCA3MCwgNzYsIAorICAgIDY1LCAxMjgsIDcwLCA3NiwgMTI4LCA3MCwgNzMsIDg4LCA2OSwgNjgsIDQ1LCA3MCwgNzksIDgyLCAyMDUsIDcwLCA3MywgCisgICAgODgsIDEyOCwgNzAsIDczLCA4NiwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3MywgODYsIDY5LCAKKyAgICA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzMsIDg2LCAxOTcsIDcwLCA3MywgODQsIDY1LCAxMjgsIDcwLCA3MywgODQsIAorICAgIDEyOCwgNzAsIDczLCA4MywgODQsIDY5LCAxOTYsIDcwLCA3MywgODMsIDg0LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MywgCisgICAgNzgsIDE5OSwgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCAKKyAgICAyMDMsIDcwLCA3MywgODMsIDcyLCA2OSwgODksIDY5LCAxMjgsIDcwLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3MywgODMsIAorICAgIDIwMCwgNzAsIDczLCA4MiwgODMsIDIxMiwgNzAsIDczLCA4MiwgNzMsIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgCisgICAgODIsIDc1LCA4MywgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCA4MiwgMjAzLCA3MCwgNzMsIDgyLCA2OSwgMTI4LCAKKyAgICA3MCwgNzMsIDgyLCAxOTcsIDcwLCA3MywgODAsIDEyOCwgNzAsIDczLCA3OCwgNzMsIDg0LCAxOTcsIDcwLCA3MywgNzgsIAorICAgIDcxLCA2OSwgODIsIDc4LCA2NSwgNzMsIDc2LCA4MywgMTI4LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCA2OSwgMTk2LCA3MCwgCisgICAgNzMsIDc4LCA2NSwgNzgsIDY3LCA3MywgNjUsIDc2LCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgODIsIDEyOCwgNzAsIDczLCAKKyAgICA3NiwgNzYsIDY5LCAxOTYsIDcwLCA3MywgNzYsIDc2LCAxMjgsIDcwLCA3MywgNzYsIDIwNCwgNzAsIDczLCA3NiwgMTk3LCAKKyAgICA3MCwgNzMsIDczLCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA1MSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIAorICAgIDY5LCA0NSwgNTAsIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgCisgICAgMTk3LCA3MCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzAsIDczLCA3MCwgODQsIDg5LCAxMjgsIDcwLCA3MywgNzAsIDg0LCAKKyAgICAyMTcsIDcwLCA3MywgNzAsIDg0LCA3MiwgODMsIDEyOCwgNzAsIDczLCA3MCwgODQsIDcyLCAxMjgsIDcwLCA3MywgNzAsIAorICAgIDg0LCA2OSwgNjksIDc4LCAxMjgsIDcwLCA3MywgNzAsIDg0LCA2OSwgNjksIDIwNiwgNzAsIDczLCA2OSwgNzYsIDY4LCAKKyAgICAxMjgsIDcwLCA3MiwgODQsIDc5LCA4MiwgMTkzLCA3MCwgNzAsIDc2LCAxMjgsIDcwLCA3MCwgNzMsIDEyOCwgNzAsIDY5LCAKKyAgICA4NSwgODgsIDEyOCwgNzAsIDY5LCA4NSwgNzAsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3MCwgNjksIDgzLCA4NCwgNzMsIAorICAgIDg2LCA2NSwgNzYsIDEyOCwgNzAsIDY5LCA4MiwgODIsIDg5LCAxMjgsIDcwLCA2OSwgODIsIDgyLCA3MywgMjExLCA3MCwgCisgICAgNjksIDgyLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3MCwgNjksIDgyLCA3NywgNjUsIDg0LCAxOTMsIDcwLCA2OSwgNzksIAorICAgIDIwMCwgNzAsIDY5LCA3OCwgMTk5LCA3MCwgNjksIDc4LCA2NywgNjksIDEyOCwgNzAsIDY5LCA3NywgNzMsIDc4LCA3MywgCisgICAgNzgsIDE5NywgNzAsIDY5LCA3NywgNjUsIDc2LCA2OSwgMTI4LCA3MCwgNjksIDc3LCA2NSwgNzYsIDE5NywgNzAsIDY5LCAKKyAgICA3NiwgNzYsIDc5LCA4NywgODMsIDcyLCA3MywgODAsIDEyOCwgNzAsIDY5LCA3MywgMTI4LCA3MCwgNjksIDcyLCAyMTMsIAorICAgIDcwLCA2OSwgNzIsIDEyOCwgNzAsIDY5LCAyMDAsIDcwLCA2OSwgNjksIDc4LCA3MSwgMTI4LCA3MCwgNjksIDY5LCA2OCwgCisgICAgMTI4LCA3MCwgNjksIDY5LCAxOTYsIDcwLCA2OSwgNjksIDEyOCwgNzAsIDY5LCA2NiwgODIsIDg1LCA2NSwgODIsIDg5LCAKKyAgICAxMjgsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIAorICAgIDY5LCA2NSwgODIsIDc4LCAxMjgsIDcwLCA2OSwgNjUsIDgyLCA3MCwgODUsIDIwNCwgNzAsIDY5LCA2NSwgODIsIDEyOCwgCisgICAgNzAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzAsIDY1LCA4OSwgMTI4LCA3MCwgNjUsIDg4LCAxMjgsIDcwLCAKKyAgICA2NSwgMjE2LCA3MCwgNjUsIDg0LCA3MywgNzEsIDg1LCA2OSwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIAorICAgIDcwLCA2NSwgODQsIDcyLCA2OSwgMjEwLCA3MCwgNjUsIDg0LCA3MiwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNzAsIDY1LCA4NCwgCisgICAgNzIsIDY1LCA4NCwgNjUsIDIwNiwgNzAsIDY1LCA4NCwgNzIsIDY1LCAxMjgsIDcwLCA2NSwgODQsIDcyLCAxOTMsIDcwLCAKKyAgICA2NSwgODQsIDEyOCwgNzAsIDY1LCA4MiwgODMsIDIwMSwgNzAsIDY1LCA4MSwgMTI4LCA3MCwgNjUsIDgwLCAxMjgsIDcwLCAKKyAgICA2NSwgNzgsIDcxLCAxMjgsIDcwLCA2NSwgNzgsIDY5LCA4MiwgNzksIDgzLCA3MywgMjExLCA3MCwgNjUsIDc4LCAxMjgsIAorICAgIDcwLCA2NSwgNzcsIDczLCA3NiwgODksIDEyOCwgNzAsIDY1LCA3NiwgNzYsIDczLCA3OCwgMTk5LCA3MCwgNjUsIDc2LCA3NiwgCisgICAgNjksIDIwNiwgNzAsIDY1LCA3MywgNzYsIDg1LCA4MiwgNjksIDEyOCwgNzAsIDY1LCA3MywgNzIsIDg1LCAxMjgsIDcwLCAKKyAgICA2NSwgNzIsIDgyLCA2OSwgNzgsIDcyLCA2OSwgNzMsIDg0LCAxMjgsIDcwLCA2NSwgNjcsIDg0LCA3OSwgODIsIDg5LCAxMjgsIAorICAgIDcwLCA2NSwgNjcsIDg0LCA3OSwgMjEwLCA3MCwgNjUsIDY3LCA4MywgNzMsIDc3LCA3MywgNzYsIDE5NywgNzAsIDY1LCA2NywgCisgICAgNjksIDQ1LCA1NCwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUzLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTIsIAorICAgIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MSwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUwLCAxMjgsIDcwLCA2NSwgCisgICAgNjcsIDY5LCA0NSwgNDksIDEyOCwgNzAsIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3MCwgNjUsIDY1LCA3MywgMTI4LCAKKyAgICA3MCwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzAsIDQ4LCA1MywgNTEsIDEyOCwgNzAsIDQ4LCA1MywgNTAsIDEyOCwgNzAsIAorICAgIDQ4LCA1MywgNDksIDY3LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NiwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjUsIDEyOCwgCisgICAgNzAsIDQ4LCA1MywgNDksIDEyOCwgNzAsIDQ4LCA1MywgNDgsIDEyOCwgNzAsIDQ4LCA1MiwgNTcsIDEyOCwgNzAsIDQ4LCAKKyAgICA1MiwgNTYsIDEyOCwgNzAsIDQ4LCA1MiwgNTUsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDU1LCAxMjgsIDcwLCA0OCwgNTIsIAorICAgIDU0LCA2NSwgMTI4LCA3MCwgNDgsIDUyLCA1NCwgMTI4LCA3MCwgNDgsIDUyLCA1MywgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgCisgICAgNTMsIDEyOCwgNzAsIDQ4LCA1MiwgNTIsIDEyOCwgNzAsIDQ4LCA1MiwgNTEsIDEyOCwgNzAsIDQ4LCA1MiwgNTAsIDEyOCwgCisgICAgNzAsIDQ4LCA1MiwgNDksIDEyOCwgNzAsIDQ4LCA1MiwgNDgsIDEyOCwgNzAsIDQ4LCA1MSwgNTcsIDEyOCwgNzAsIDQ4LCAKKyAgICA1MSwgNTYsIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDU2LCAxMjgsIDcwLCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3MCwgNDgsIAorICAgIDUxLCA1NSwgMTI4LCA3MCwgNDgsIDUxLCA1NCwgMTI4LCA3MCwgNDgsIDUxLCA1MywgMTI4LCA3MCwgNDgsIDUxLCA1MiwgCisgICAgMTI4LCA3MCwgNDgsIDUxLCA1MSwgMTI4LCA3MCwgNDgsIDUxLCA1MCwgMTI4LCA3MCwgNDgsIDUxLCA0OSwgNjUsIDEyOCwgCisgICAgNzAsIDQ4LCA1MSwgNDksIDEyOCwgNzAsIDQ4LCA1MSwgNDgsIDEyOCwgNzAsIDQ4LCA1MCwgNTcsIDEyOCwgNzAsIDQ4LCAKKyAgICA1MCwgNTYsIDEyOCwgNzAsIDQ4LCA1MCwgNTUsIDEyOCwgNzAsIDQ4LCA1MCwgNTQsIDEyOCwgNzAsIDQ4LCA1MCwgNTMsIAorICAgIDEyOCwgNzAsIDQ4LCA1MCwgNTIsIDEyOCwgNzAsIDQ4LCA1MCwgNTEsIDEyOCwgNzAsIDQ4LCA1MCwgNTAsIDEyOCwgNzAsIAorICAgIDQ4LCA1MCwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTAsIDQ5LCAxMjgsIDcwLCA0OCwgNTAsIDQ4LCAxMjgsIDcwLCA0OCwgCisgICAgNDksIDU3LCAxMjgsIDcwLCA0OCwgNDksIDU2LCAxMjgsIDcwLCA0OCwgNDksIDU1LCAxMjgsIDcwLCA0OCwgNDksIDU0LCAKKyAgICAxMjgsIDcwLCA0OCwgNDksIDUzLCAxMjgsIDcwLCA0OCwgNDksIDUyLCAxMjgsIDcwLCA0OCwgNDksIDUxLCA2NSwgMTI4LCAKKyAgICA3MCwgNDgsIDQ5LCA1MSwgMTI4LCA3MCwgNDgsIDQ5LCA1MCwgMTI4LCA3MCwgNDgsIDQ5LCA0OSwgMTI4LCA3MCwgNDgsIAorICAgIDQ5LCA0OCwgMTI4LCA3MCwgNDgsIDQ4LCA1NywgMTI4LCA3MCwgNDgsIDQ4LCA1NiwgMTI4LCA3MCwgNDgsIDQ4LCA1NSwgCisgICAgMTI4LCA3MCwgNDgsIDQ4LCA1NCwgMTI4LCA3MCwgNDgsIDQ4LCA1MywgMTI4LCA3MCwgNDgsIDQ4LCA1MiwgMTI4LCA3MCwgCisgICAgNDgsIDQ4LCA1MSwgMTI4LCA3MCwgNDgsIDQ4LCA1MCwgMTI4LCA3MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCAKKyAgICA0OCwgNDksIDEyOCwgNjksIDkwLCAyMDAsIDY5LCA5MCwgNjksIDc4LCAxMjgsIDY5LCA5MCwgNjksIDIwNiwgNjksIDkwLCAKKyAgICAxMjgsIDY5LCA4OSwgNjksIDgzLCAxMjgsIDY5LCA4OSwgNjksIDcxLCA3NiwgNjUsIDgzLCA4MywgNjksIDgzLCAxMjgsIAorICAgIDY5LCA4OSwgNjYsIDY5LCA4OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgCisgICAgODgsIDg0LCA4MiwgNjUsIDg0LCA2OSwgODIsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY1LCAyMDQsIDY5LCA4OCwgODQsIAorICAgIDgyLCA2NSwgNDUsIDc2LCA3OSwgMjE1LCA2OSwgODgsIDg0LCA4MiwgNjUsIDQ1LCA3MiwgNzMsIDcxLCAyMDAsIDY5LCA4OCwgCisgICAgODQsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA4NCwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjksIDg4LCAKKyAgICA4MCwgODIsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIDc2LCA2OSwgODMsIDIxMSwgNjksIDg4LCA4MCwgNzksIDc4LCA2OSwgCisgICAgNzgsIDIxMiwgNjksIDg4LCA3OSwgMTI4LCA2OSwgODgsIDIwNywgNjksIDg4LCA3MywgODMsIDg0LCA4MywgMTI4LCA2OSwgCisgICAgODgsIDczLCA4MywgODQsIDEyOCwgNjksIDg4LCA3MiwgNjUsIDg1LCA4MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCAKKyAgICA2NywgNzYsIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCA2NSwgNzcsIDY1LCA4NCwgCisgICAgNzMsIDc5LCAyMDYsIDY5LCA4OCwgNjcsIDcyLCA2NSwgNzgsIDcxLCA2OSwgMTI4LCA2OSwgODgsIDY3LCA2OSwgODMsIDgzLCAKKyAgICAxMjgsIDY5LCA4OCwgNjcsIDY5LCA3NiwgNzYsIDY5LCA3OCwgODQsIDEyOCwgNjksIDg3LCA2OSwgMTI4LCA2OSwgODYsIAorICAgIDY5LCA4MiwgNzEsIDgyLCA2OSwgNjksIDIwNiwgNjksIDg2LCA2OSwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjksIDg1LCA4MiwgCisgICAgNzksIDgwLCA2OSwgNjUsIDIwNiwgNjksIDg1LCA4MiwgNzksIDgwLCA2OSwgNDUsIDY1LCA3MCwgODIsIDczLCA2NywgNjUsIAorICAgIDEyOCwgNjksIDg1LCA4MiwgNzksIDQ1LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCA2NywgMjE3LCA2OSwgODUsIDgyLCAKKyAgICAyMDcsIDY5LCA4NSwgNzYsIDY5LCAyMTAsIDY5LCA4NSwgNDUsIDg1LCAxMjgsIDY5LCA4NSwgNDUsIDc5LCAxMjgsIDY5LCAKKyAgICA4NSwgNDUsIDY5LCA4NSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgNzksIDEyOCwgNjksIDg1LCA0NSwgNjksIDEyOCwgNjksIAorICAgIDg1LCA0NSwgNjUsIDEyOCwgNjksIDg0LCA4OCwgMTI4LCA2OSwgODQsIDc4LCA2NSwgNzIsIDg0LCA2NSwgMTI4LCA2OSwgCisgICAgODQsIDcyLCA2OSwgMjA0LCA2OSwgODQsIDY5LCA4MiwgNzksIDIwNiwgNjksIDg0LCA2OSwgODIsIDc4LCA3MywgODQsIDg5LCAKKyAgICAxMjgsIDY5LCA4NCwgNjYsIDEyOCwgNjksIDgzLCA4NSwgNzUsIDg1LCA4NSwgNjgsIDc5LCAxMjgsIDY5LCA4MywgODQsIAorICAgIDczLCA3NywgNjUsIDg0LCA2OSwgODMsIDEyOCwgNjksIDgzLCA4NCwgNzMsIDc3LCA2NSwgODQsIDY5LCAxOTYsIDY5LCA4MywgCisgICAgNzIsIDY5LCA1MSwgMTI4LCA2OSwgODMsIDcyLCA1MCwgNDksIDEyOCwgNjksIDgzLCA3MiwgMTc4LCA2OSwgODMsIDcyLCAKKyAgICA0OSwgNTQsIDEyOCwgNjksIDgzLCA2NywgNjUsIDgwLCA2OSwgMTI4LCA2OSwgODMsIDY3LCAxMjgsIDY5LCA4MywgNjUsIAorICAgIDEyOCwgNjksIDgzLCA0NSwgODQsIDY5LCAxMjgsIDY5LCA4MiwgODIsIDc5LCA4MiwgNDUsIDY2LCA2NSwgODIsIDgyLCA2OSwgCisgICAgMTk2LCA2OSwgODIsIDgyLCAxMjgsIDY5LCA4MiwgNzMsIDc4LCA1MCwgMTI4LCA2OSwgODIsIDcxLCAxMjgsIDY5LCA4MiwgCisgICAgNjUsIDgzLCAxOTcsIDY5LCA4MSwgODUsIDczLCA4NiwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgNjksIDgxLCA4NSwgNzMsIDY4LCAKKyAgICAxMjgsIDY5LCA4MSwgODUsIDczLCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAyMTAsIDY5LCA4MSwgODUsIDY1LCA3NiwgODMsIAorICAgIDEyOCwgNjksIDgxLCA4NSwgNjUsIDc2LCAyMTEsIDY5LCA4MSwgODUsIDY1LCA3NiwgMTI4LCA2OSwgODAsIDgzLCA3MywgCisgICAgNzYsIDc5LCA3OCwgMTI4LCA2OSwgODAsIDgzLCA3MywgNzYsIDc5LCAyMDYsIDY5LCA4MCwgNzksIDY3LCA3MiwgMTI4LCAKKyAgICA2OSwgODAsIDczLCA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAxOTUsIDY5LCA4MCwgNzMsIDY4LCA2NSwgODUsIDgyLCA2OSwgCisgICAgNjUsIDIwNiwgNjksIDgwLCA2OSwgNzgsIDg0LCA3MiwgNjksIDg0LCA3MywgMTk1LCA2OSwgODAsIDY5LCA3MSwgNjksIDgyLCAKKyAgICA3NywgNjUsIDEyOCwgNjksIDc5LCA4NCwgMTI4LCA2OSwgNzksIDc3LCAxMjgsIDY5LCA3OSwgNzYsIDcyLCA4OCwgMTI4LCAKKyAgICA2OSwgNzksIDc2LCAxMjgsIDY5LCA3OSwgNzIsIDEyOCwgNjksIDc4LCA4OSwgMTI4LCA2OSwgNzgsIDg2LCA2OSwgNzYsIAogICAgIDc5LCA4MCwgNjksIDEyOCwgNjksIDc4LCA4NiwgNjksIDc2LCA3OSwgODAsIDE5NywgNjksIDc4LCA4NSwgNzcsIDY5LCA4MiwgCiAgICAgNjUsIDg0LCA3MywgNzksIDIwNiwgNjksIDc4LCA4NCwgODIsIDg5LCA0NSwgNTAsIDEyOCwgNjksIDc4LCA4NCwgODIsIDg5LCAKICAgICA0NSwgNDksIDEyOCwgNjksIDc4LCA4NCwgODIsIDg5LCAxMjgsIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY5LCA3OCwgODQsIAogICAgIDcyLCA4NSwgODMsIDczLCA2NSwgODMsIDc3LCAxMjgsIDY5LCA3OCwgODQsIDY5LCA4MiwgODAsIDgyLCA3MywgODMsIDY5LCAKICAgICAxMjgsIDY5LCA3OCwgODQsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDY5LCA3OCwgODQsIDY5LCA4MiwgMTI4LCA2OSwgNzgsIAotICAgIDg0LCA2OSwgMjEwLCA2OSwgNzgsIDgxLCA4NSwgNzMsIDgyLCA4OSwgMTI4LCA2OSwgNzgsIDc5LCAyMTEsIDY5LCA3OCwgCi0gICAgNzgsIDEyOCwgNjksIDc4LCA3NiwgNjUsIDgyLCA3MSwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA3OCwgNzEsIDczLCAKLSAgICA3OCwgNjksIDEyOCwgNjksIDc4LCA2OCwgNzksIDcwLCA3OSwgNzgsIDc5LCA3OCwgMTI4LCA2OSwgNzgsIDY4LCA3MywgNzgsIAotICAgIDE5OSwgNjksIDc4LCA2OCwgNjksIDgwLCAxMjgsIDY5LCA3OCwgNjgsIDY5LCA2NSwgODYsIDc5LCA4NSwgODIsIDEyOCwgCi0gICAgNjksIDc4LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIDEyOCwgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgODUsIAotICAgIDgyLCA2OSwgMTI4LCA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA3MywgNzgsIDE5OSwgNjksIDc4LCA2NywgMTI4LCA2OSwgCi0gICAgNzgsIDY1LCA4MiwgODgsIDczLCAyMTEsIDY5LCA3OCwgNjUsIDgyLCA3NywgNzksIDc4LCA3MywgNzksIDIxMSwgNjksIDc3LCAKLSAgICA4MCwgODQsIDIxNywgNjksIDc3LCA4MCwgNzIsIDY1LCA4NCwgNzMsIDE5NSwgNjksIDc3LCA4MCwgNzIsIDY1LCA4MywgNzMsIAotICAgIDIxMSwgNjksIDc3LCA2NiwgODIsIDc5LCA3MywgNjgsIDY5LCA4MiwgODksIDEyOCwgNjksIDc3LCA2NiwgNzYsIDY5LCA3NywgCi0gICAgMTI4LCA2OSwgNzcsIDY2LCA2OSwgNzYsIDc2LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgNzcsIDY2LCAKLSAgICA2OSwgNjgsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDY5LCA3NiwgODQsIDEyOCwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgNzMsIAotICAgIDgzLCAxMjgsIDY5LCA3NiwgNzYsIDczLCA4MCwgODMsIDY5LCAxMjgsIDY5LCA3NiwgNzMsIDcwLCA3MywgMTI4LCA2OSwgCi0gICAgNzYsIDY5LCA4NiwgNjksIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIAotICAgIDc4LCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgMjA2LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDY1LCA3OCwgODQsIDEyOCwgCi0gICAgNjksIDc2LCA2OSwgNzcsIDY5LCA3OCwgMjEyLCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgODIsIDczLCAxOTUsIDY5LCA3NiwgNjUsIDcwLCA4MiwgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIAotICAgIDg0LCA4MiwgNjksIDgwLCA4NCwgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIDEyOCwgNjksIDc1LCA3MCwgNzksIDc4LCA3MywgCi0gICAgODQsIDczLCA3NSwgNzksIDc4LCAxMjgsIDY5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2OSwgNzQsIDY5LCA2NywgMjEyLCAKLSAgICA2OSwgNzMsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgODksIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAyMTcsIAotICAgIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDIxMSwgNjksIDczLCA3MSwgCi0gICAgNzIsIDg0LCA3MiwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAKLSAgICA2OSwgNjksIDIwNiwgNjksIDczLCA3MSwgNzIsIDg0LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIAotICAgIDY5LCAxMjgsIDY5LCA3MiwgODcsIDY1LCAyMTgsIDY5LCA3MSwgODksIDgwLCA4NCwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgCi0gICAgNjUsIDIwNCwgNjksIDcxLCA3MywgODIsIDEyOCwgNjksIDcxLCA3MSwgMTI4LCA2OSwgNjksIDg5LCA2NSwgNzgsIDc4LCAKLSAgICA2NSwgMTI4LCA2OSwgNjksIDc1LCA2NSwgNjUsIDEyOCwgNjksIDY5LCA2NiwgNjksIDY5LCA3MCwgNzMsIDc2LCA3MywgCi0gICAgMTI4LCA2OSwgNjgsIDczLCA4NCwgNzksIDgyLCA3MywgNjUsIDIwNCwgNjksIDY4LCA3MywgNzgsIDEyOCwgNjksIDY4LCAKLSAgICA2OCwgMTI4LCA2OSwgNjYsIDY5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2OSwgNjUsIDgzLCA4NCwgNjksIDgyLCAyMDYsIAotICAgIDY5LCA2NSwgODMsIDIxMiwgNjksIDY1LCA4MiwgODQsIDcyLCA3NiwgMjE3LCA2OSwgNjUsIDgyLCA4NCwgNzIsIDEyOCwgCi0gICAgNjksIDY1LCA4MiwgODQsIDIwMCwgNjksIDY1LCA4MiwgODMsIDEyOCwgNjksIDY1LCA4MiwgNzYsIDIxNywgNjksIDY1LCAKLSAgICA3NywgNzIsIDY1LCA3OCwgNjcsIDcyLCA3OSwgNzYsIDc2LCAxMjgsIDY5LCA2NSwgNzEsIDc2LCA2OSwgMTI4LCA2OSwgNjUsIAotICAgIDY4LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgNjUsIDY2LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgMTc4LCA2OSwgCi0gICAgNDgsIDUxLCA1NiwgMTI4LCA2OSwgNDgsIDUxLCA1NSwgMTI4LCA2OSwgNDgsIDUxLCA1NCwgMTI4LCA2OSwgNDgsIDUxLCAKLSAgICA1MiwgNjUsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIDEyOCwgNjksIDQ4LCA1MSwgNTEsIDEyOCwgNjksIDQ4LCA1MSwgNTAsIAotICAgIDEyOCwgNjksIDQ4LCA1MSwgNDksIDEyOCwgNjksIDQ4LCA1MSwgNDgsIDEyOCwgNjksIDQ4LCA1MCwgNTcsIDEyOCwgNjksIAotICAgIDQ4LCA1MCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgNTAsIDU2LCAxMjgsIDY5LCA0OCwgNTAsIDU1LCAxMjgsIDY5LCA0OCwgCi0gICAgNTAsIDU0LCAxMjgsIDY5LCA0OCwgNTAsIDUzLCAxMjgsIDY5LCA0OCwgNTAsIDUyLCAxMjgsIDY5LCA0OCwgNTAsIDUxLCAKLSAgICAxMjgsIDY5LCA0OCwgNTAsIDUwLCAxMjgsIDY5LCA0OCwgNTAsIDQ5LCAxMjgsIDY5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCAKLSAgICA2OSwgNDgsIDUwLCA0OCwgMTI4LCA2OSwgNDgsIDQ5LCA1NywgMTI4LCA2OSwgNDgsIDQ5LCA1NiwgMTI4LCA2OSwgNDgsIAotICAgIDQ5LCA1NSwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgNTUsIDEyOCwgNjksIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDY5LCA0OCwgCi0gICAgNDksIDU0LCAxMjgsIDY5LCA0OCwgNDksIDUzLCAxMjgsIDY5LCA0OCwgNDksIDUyLCAxMjgsIDY5LCA0OCwgNDksIDUxLCAKLSAgICAxMjgsIDY5LCA0OCwgNDksIDUwLCAxMjgsIDY5LCA0OCwgNDksIDQ5LCAxMjgsIDY5LCA0OCwgNDksIDQ4LCAxMjgsIDY5LCAKLSAgICA0OCwgNDgsIDU3LCA2NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NywgMTI4LCA2OSwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjksIAotICAgIDQ4LCA0OCwgNTYsIDEyOCwgNjksIDQ4LCA0OCwgNTUsIDEyOCwgNjksIDQ4LCA0OCwgNTQsIDEyOCwgNjksIDQ4LCA0OCwgCi0gICAgNTMsIDEyOCwgNjksIDQ4LCA0OCwgNTIsIDEyOCwgNjksIDQ4LCA0OCwgNTEsIDEyOCwgNjksIDQ4LCA0OCwgNTAsIDEyOCwgCi0gICAgNjksIDQ4LCA0OCwgNDksIDEyOCwgNjksIDQ1LCA3NywgNjUsIDczLCAyMDQsIDY4LCA5MCwgOTAsIDY5LCAxMjgsIDY4LCAKLSAgICA5MCwgODcsIDY5LCAxMjgsIDY4LCA5MCwgODUsIDEyOCwgNjgsIDkwLCA3OSwgMTI4LCA2OCwgOTAsIDc0LCA2OSwgMTI4LCAKLSAgICA2OCwgOTAsIDczLCAxMjgsIDY4LCA5MCwgNzIsIDY5LCAxMjgsIDY4LCA5MCwgNzIsIDY1LCAxMjgsIDY4LCA5MCwgNjksIAotICAgIDc2LCA3OSwgMTI4LCA2OCwgOTAsIDY5LCA2OSwgMTI4LCA2OCwgOTAsIDY5LCAxMjgsIDY4LCA5MCwgNjUsIDY1LCAxMjgsIAotICAgIDY4LCA5MCwgNjUsIDEyOCwgNjgsIDkwLCAxMjgsIDY4LCAyMTgsIDY4LCA4OSwgNzksIDEyOCwgNjgsIDg5LCAyMDcsIDY4LCAKLSAgICA4OSwgNjksIDcyLCAxMjgsIDY4LCA4OSwgNjksIDIwMCwgNjgsIDg3LCA3OSwgMTI4LCA2OCwgODcsIDY5LCAxMjgsIDY4LCAKLSAgICA4NywgNjUsIDEyOCwgNjgsIDg2LCA3MywgODMsIDg2LCA2NSwgODIsIDY1LCAxMjgsIDY4LCA4NiwgNjgsIDEyOCwgNjgsIAotICAgIDg2LCAxMjgsIDY4LCA4NSwgODQsIDczLCA2OSwgODMsIDEyOCwgNjgsIDg1LCA4MywgNzUsIDEyOCwgNjgsIDg1LCA4MywgCi0gICAgNzIsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA4NSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgODUsIDgyLCAKLSAgICA1MCwgMTI4LCA2OCwgODUsIDgwLCA3OSwgNzgsIDY4LCA3MywgODUsIDIxMSwgNjgsIDg1LCA3OSwgODgsIDEyOCwgNjgsIAotICAgIDg1LCA3OSwgMTI4LCA2OCwgODUsIDc4LCA1MiwgMTI4LCA2OCwgODUsIDc4LCA1MSwgMTI4LCA2OCwgODUsIDc4LCAxNzksIAotICAgIDY4LCA4NSwgNzcsIDEyOCwgNjgsIDg1LCAyMDQsIDY4LCA4NSwgNzIsIDEyOCwgNjgsIDg1LCA3MSwgODUsIDY4LCAxMjgsIAotICAgIDY4LCA4NSwgNjYsIDUwLCAxMjgsIDY4LCA4NSwgNjYsIDEyOCwgNjgsIDg1LCAxOTQsIDY4LCA4MiwgODksIDEyOCwgNjgsIAotICAgIDgyLCAyMTcsIDY4LCA4MiwgODUsIDc3LCAxMjgsIDY4LCA4MiwgODUsIDIwNSwgNjgsIDgyLCA3OSwgODAsIDgzLCAxMjgsIAotICAgIDY4LCA4MiwgNzksIDgwLCA3NiwgNjksIDg0LCAxMjgsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIDcyLCA2NSwgNjgsIDc5LCAKLSAgICA4NywgNjksIDE5NiwgNjgsIDgyLCA3OSwgNzcsIDY5LCA2OCwgNjUsIDgyLCAyMTcsIDY4LCA4MiwgNzMsIDg2LCA2OSwgCi0gICAgMTI4LCA2OCwgODIsIDczLCA4NiwgMTk3LCA2OCwgODIsIDczLCA3OCwgNzUsIDEyOCwgNjgsIDgyLCA3MywgMjA0LCA2OCwgCi0gICAgODIsIDY5LCA4MywgODMsIDEyOCwgNjgsIDgyLCA2NSwgODUsIDcxLCA3MiwgODQsIDIxMSwgNjgsIDgyLCA2NSwgNzcsIAotICAgIDEyOCwgNjgsIDgyLCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgODIsIDY1LCA3MSwgNzksIDIwNiwgNjgsIDgyLCA2NSwgCi0gICAgNzAsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgNjUsIDgzLCAxMjgsIDY4LCA4MiwgNjUsIDY3LCAKLSAgICA3MiwgNzcsIDY1LCAxMjgsIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDE5MywgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIAotICAgIDY4LCA4MywgMTI4LCA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgNjgsIDc5LCA4NywgNzgsIDQ1LCA4MCwgCi0gICAgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA2OCwgNzksIDg3LCA3OCwgMTI4LCA2OCwgNzksIDg2LCA2OSwgMTI4LCAKLSAgICA2OCwgNzksIDg1LCA3MSwgNzIsIDc4LCA4NSwgODQsIDEyOCwgNjgsIDc5LCA4NSwgNjYsIDg0LCAxMjgsIDY4LCA3OSwgODUsIAotICAgIDY2LCA3NiwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNjgsIDc5LCA4NSwgCi0gICAgNjYsIDc2LCA2OSwgNDUsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODQsIDY5LCA2OCwgNDUsIDgwLCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA3OCwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4NCwgNjksIDY4LCA0NSwgNzYsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgMTI4LCA2OCwgNzksIDg0LCA4NCwgCi0gICAgNjksIDE5NiwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU1LCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU1LCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgCi0gICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU1LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTUsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgCi0gICAgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCAKLSAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgCi0gICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKLSAgICA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDUxLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU1LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTEsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgCi0gICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCAKLSAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgCi0gICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCAKLSAgICA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTAsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDUwLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUwLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUwLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTQsIDU1LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTAsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgCi0gICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MCwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIAotICAgIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTAsIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNTAsIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1NCwgNTUsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MywgNTYsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIAotICAgIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDUwLCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NCwgNTUsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgCi0gICAgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCAKLSAgICA1MSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTQsIDU1LCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUwLCA1MSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIAotICAgIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIAotICAgIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MCwgNTEsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDQ5LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU0LCAKLSAgICA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgCi0gICAgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNDksIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDQ5LCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1NSwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1NCwgNTUsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIAotICAgIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDQ5LCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIDU0LCA1NSwgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA0OSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA0OSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNDksIDUxLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNDksIDUxLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTQsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIAotICAgIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNDksIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgNTQsIDU1LCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgCi0gICAgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUxLCA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTUsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNDksIDUxLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NCwgNTUsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU1LCA1NiwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU0LCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgCi0gICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1MCwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUwLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NCwgNTYsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUwLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA0OSwgNTAsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NSwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1MCwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NCwgNTUsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTQsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU0LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIAotICAgIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTAsIDUxLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDQ5LCA1MCwgNTEsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDU0LCA1NSwgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA0OSwgNTAsIDUxLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCAKLSAgICA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCAKLSAgICA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTYsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUwLCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUwLCA1MSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIAotICAgIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTUsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCAKLSAgICA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAxMjgsIDY4LCA3OSwgODQsIDc2LCAKLSAgICA2OSwgODMsIDIxMSwgNjgsIDc5LCA4MiwgODUsIDEyOCwgNjgsIDc5LCA3OSwgODIsIDEyOCwgNjgsIDc5LCA3OSwgNzgsIAotICAgIDcxLCAxMjgsIDY4LCA3OSwgNzgsIDcxLCAxMjgsIDY4LCA3OSwgNzcsIDY1LCA3MywgMjA2LCA2OCwgNzksIDc2LCA4MCwgCi0gICAgNzIsIDczLCA3OCwgMTI4LCA2OCwgNzksIDc2LCA3NiwgODMsIDEyOCwgNjgsIDc5LCA3NiwgNzYsIDY1LCAyMTAsIDY4LCAKLSAgICA3OSwgNzYsIDczLCA4NSwgNzcsIDEyOCwgNjgsIDc5LCA3NSwgNzcsIDY1LCA3MywgMTI4LCA2OCwgNzksIDczLCA4NCwgCi0gICAgMTI4LCA2OCwgNzksIDcxLCAxMjgsIDY4LCA3OSwgMTk5LCA2OCwgNzksIDY5LCAyMTEsIDY4LCA3OSwgNjgsIDY5LCA3NSwgCi0gICAgNjUsIDg0LCA2NSwgMTI4LCA2OCwgNzksIDY2LCA4MiwgNzksIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCA2NSwgODMsIDcyLCAKLSAgICA3NywgNjksIDY5LCAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgNjUsIDgzLCA3MiwgNzcsIDY5LCAxOTcsIDY4LCA3OSwgNjUsIAotICAgIDEyOCwgNjgsIDc5LCA0NSwgNzksIDEyOCwgNjgsIDc3LCAxMjgsIDY4LCAyMDUsIDY4LCA3NiwgODUsIDEyOCwgNjgsIDc2LCAKLSAgICA3OSwgMTI4LCA2OCwgNzYsIDczLCAxMjgsIDY4LCA3NiwgNjksIDY5LCAxMjgsIDY4LCA3NiwgNjUsIDEyOCwgNjgsIDc2LCAKLSAgICAxMjgsIDY4LCA3NSwgNjUsIDgyLCAxMjgsIDY4LCA3NSwgNjUsIDIxMCwgNjgsIDc0LCA2OSwgODIsIDg2LCA3MywgMTI4LCAKLSAgICA2OCwgNzQsIDY5LCA4MiwgODYsIDEyOCwgNjgsIDc0LCA2OSwgMTI4LCA2OCwgNzQsIDY1LCAxMjgsIDY4LCA3NCwgMTI4LCAKLSAgICA2OCwgNzMsIDkwLCA5MCwgMjE3LCA2OCwgNzMsIDg2LCA3OSwgODIsIDY3LCAxOTcsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDg2LCA3MywgODMsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDg2LCA3MywgNzgsIDY1LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAKLSAgICA4MiwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAxOTYsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDEyOCwgNjgsIAotICAgIDczLCA4NiwgNzMsIDY4LCAxOTcsIDY4LCA3MywgODYsIDY5LCA4MiwgNzEsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDY4LCA3MywgCi0gICAgODQsIDg0LCAyMDcsIDY4LCA3MywgODMsIDg0LCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIDg0LCAKLSAgICA3MywgNzgsIDcxLCA4NSwgNzMsIDgzLCA3MiwgMTI4LCA2OCwgNzMsIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCA2OCwgNzMsIAotICAgIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDQ1LCA1MCwgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDEyOCwgCi0gICAgNjgsIDczLCA4MywgODAsIDY5LCA4MiwgODMsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4MywgNzUsIDEyOCwgNjgsIDczLCAKLSAgICA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgNjgsIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCA4MywgNjcsIDc5LCA3OCwgODQsIAotICAgIDczLCA3OCwgODUsIDc5LCA4NSwgMjExLCA2OCwgNzMsIDgzLCAxOTUsIDY4LCA3MywgODMsIDY1LCA4MCwgODAsIDc5LCA3MywgCi0gICAgNzgsIDg0LCA2OSwgMTk2LCA2OCwgNzMsIDgzLCA2NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzMsIDgyLCA3MSwgMTkzLCAKLSAgICA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3NiwgMjE3LCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCA2NSwgCi0gICAgMjA0LCA2OCwgNzMsIDgwLCA4NCwgNjksIDEyOCwgNjgsIDczLCA4MCwgODAsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDgwLCAKLSAgICA3NiwgNzksIDg1LCA3OCwgMTI4LCA2OCwgNzMsIDgwLCA3NiwgNzMsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDIwMSwgNjgsIAotICAgIDczLCA3OCwgNzEsIDY2LCA2NSwgMjEyLCA2OCwgNzMsIDIwNiwgNjgsIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgCi0gICAgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA1MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIAotICAgIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDUwLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCAKLSAgICA0NSwgNDksIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgNzMsIAotICAgIDc3LCA3MywgNjgsIDczLCAxOTMsIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgCi0gICAgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDc3LCA1MCwgMTI4LCA2OCwgNzMsIDc2LCAxMjgsIDY4LCAKLSAgICA3MywgNzEsIDgyLCA2NSwgODAsIDcyLCAxMjgsIDY4LCA3MywgNzEsIDgyLCA2NSwgODAsIDIwMCwgNjgsIDczLCA3MSwgODIsIAotICAgIDY1LCA3NywgNzcsIDc5LCAyMTEsIDY4LCA3MywgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDY4LCA3MywgNzEsIDgyLCA2NSwgCi0gICAgMjA1LCA2OCwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIAotICAgIDIwNiwgNjgsIDczLCA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNjgsIDczLCA3MSwgMTkzLCA2OCwgNzMsIDcwLCA4NCwgCi0gICAgNzksIDcxLCA3MSwgNzksIDIxMSwgNjgsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDY4LCA3MywgNzAsIDcwLCAKLSAgICA3MywgNjcsIDg1LCA3NiwgODQsIDIxNywgNjgsIDczLCA3MCwgNzAsIDczLCA2NywgODUsIDc2LCA4NCwgNzMsIDY5LCA4MywgCi0gICAgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIDg0LCA3MywgNjUsIDc2LCAxMjgsIDY4LCA3MywgNzAsIDcwLCAKLSAgICA2OSwgODIsIDY5LCA3OCwgNjcsIDE5NywgNjgsIDczLCA3MCwgNjUsIDg0LCAxMjgsIDY4LCA3MywgNjksIDgzLCA3MywgODMsIAotICAgIDEyOCwgNjgsIDczLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MywgNjksIDgwLCAxMjgsIDY4LCA3MywgMTk3LCA2OCwgNzMsIAotICAgIDY2LCAxMjgsIDY4LCA3MywgNjUsIDg0LCA3OSwgNzgsIDc5LCAyMDYsIDY4LCA3MywgNjUsIDg0LCA3OSwgNzgsIDczLCA3NSwgCi0gICAgMjAxLCA2OCwgNzMsIDY1LCA4MywgODQsIDc5LCA3NiwgMjAxLCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCA2OCwgODMsIAotICAgIDEyOCwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgNjgsIDEyOCwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgMTk2LCA2OCwgCi0gICAgNzMsIDY1LCA3NywgNjksIDg0LCA2OSwgMjEwLCA2OCwgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgNzUsIDY1LCAxMjgsIDY4LCAKLSAgICA3MywgNjUsIDc2LCA4OSwgODQsIDczLCA3NSwgMTkzLCA2OCwgNzMsIDY1LCA3NiwgNjksIDY3LCA4NCwgNDUsIDIwOCwgNjgsIAotICAgIDczLCA2NSwgNzEsIDc5LCA3OCwgNjUsIDc2LCAxMjgsIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgCi0gICAgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgOTAsIDY5LCAxOTYsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgODMsIAotICAgIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MiwgNzksIDg1LCAxMjgsIDY4LCA3MiwgCi0gICAgNzksIDc5LCAxMjgsIDY4LCA3MiwgNzksIDEyOCwgNjgsIDcyLCA3MywgMTI4LCA2OCwgNzIsIDcyLCA4NSwgMTI4LCA2OCwgCi0gICAgNzIsIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzMsIDEyOCwgNjgsIDcyLCAKLSAgICA3MiwgNjksIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY1LCAxMjgsIDY4LCA3MiwgNjksIAotICAgIDY5LCAxMjgsIDY4LCA3MiwgNjUsIDgyLCA3NywgNjUsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgCi0gICAgNjgsIDcyLCA2NSwgNzYsIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDcyLCA2NSwgNjgsIDcyLCAKLSAgICA2OSwgMTI4LCA2OCwgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY5LCA5MCwgMjAwLCAKKyAgICA4NCwgNjksIDIxMCwgNjksIDc4LCA4MSwgODUsIDczLCA4MiwgODksIDEyOCwgNjksIDc4LCA4MSwgMTI4LCA2OSwgNzgsIAorICAgIDc5LCAyMTEsIDY5LCA3OCwgNzgsIDEyOCwgNjksIDc4LCA3NiwgNjUsIDgyLCA3MSwgNjksIDc3LCA2OSwgNzgsIDg0LCAKKyAgICAxMjgsIDY5LCA3OCwgNzEsIDczLCA3OCwgNjksIDEyOCwgNjksIDc4LCA2OCwgNzksIDcwLCA3OSwgNzgsIDc5LCA3OCwgCisgICAgMTI4LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjksIDc4LCA2OCwgNjksIDgwLCAxMjgsIDY5LCA3OCwgNjgsIDY5LCAKKyAgICA2NSwgODYsIDc5LCA4NSwgODIsIDEyOCwgNjksIDc4LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIDEyOCwgNjksIAorICAgIDc4LCA2NywgNzYsIDc5LCA4MywgODUsIDgyLCA2OSwgMTI4LCA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA3MywgNzgsIDE5OSwgCisgICAgNjksIDc4LCA2NywgMTI4LCA2OSwgNzgsIDY1LCA4MiwgODgsIDczLCAyMTEsIDY5LCA3OCwgNjUsIDgyLCA3NywgNzksIDc4LCAKKyAgICA3MywgNzksIDIxMSwgNjksIDc3LCA4MCwgODQsIDIxNywgNjksIDc3LCA4MCwgNzIsIDY1LCA4NCwgNzMsIDE5NSwgNjksIAorICAgIDc3LCA4MCwgNzIsIDY1LCA4MywgNzMsIDIxMSwgNjksIDc3LCA2NiwgODIsIDc5LCA3MywgNjgsIDY5LCA4MiwgODksIDEyOCwgCisgICAgNjksIDc3LCA2NiwgNzYsIDY5LCA3NywgMTI4LCA2OSwgNzcsIDY2LCA2OSwgNzYsIDc2LCA3MywgODMsIDcyLCA3NywgNjksIAorICAgIDc4LCA4NCwgMTI4LCA2OSwgNzcsIDY2LCA2OSwgNjgsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDY5LCA3NiwgODQsIDEyOCwgCisgICAgNjksIDc2LCA3NiwgNzMsIDgwLCA4NCwgNzMsIDE5NSwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgNzMsIDgzLCAxMjgsIDY5LCAKKyAgICA3NiwgNzYsIDczLCA4MCwgODMsIDY5LCAxMjgsIDY5LCA3NiwgNzMsIDcwLCA3MywgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIAorICAgIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDY5LCA3NiwgCisgICAgNjksIDg2LCA2OSwgMjA2LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDY1LCA3OCwgODQsIDEyOCwgNjksIDc2LCA2OSwgNzcsIDY5LCAKKyAgICA3OCwgMjEyLCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3NiwgNjksIDY3LCA4NCwgODIsIAorICAgIDczLCAxOTUsIDY5LCA3NiwgNjUsIDcwLCA4MiwgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIDg0LCA4MiwgNjksIDgwLCA4NCwgCisgICAgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIDEyOCwgNjksIDc1LCA3MCwgNzksIDc4LCA3MywgODQsIDczLCA3NSwgNzksIDc4LCAKKyAgICAxMjgsIDY5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2OSwgNzQsIDY5LCA2NywgMjEyLCA2OSwgNzMsIDgzLCAxMjgsIDY5LCAKKyAgICA3MywgNzEsIDcyLCA4NCwgODksIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAyMTcsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIAorICAgIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDIxMSwgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgMTI4LCA2OSwgCisgICAgNzMsIDcxLCA3MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA2OSwgNjksIDIwNiwgNjksIDczLCAKKyAgICA3MSwgNzIsIDg0LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIDY5LCAxMjgsIDY5LCA3MiwgODcsIAorICAgIDY1LCAyMTgsIDY5LCA3MSwgODksIDgwLCA4NCwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgNjksIDcxLCA3MywgCisgICAgODIsIDEyOCwgNjksIDcxLCA3MSwgMTI4LCA2OSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgNjksIDc1LCAKKyAgICA2NSwgNjUsIDEyOCwgNjksIDY5LCA3MiwgMTI4LCA2OSwgNjksIDY2LCA2OSwgNjksIDcwLCA3MywgNzYsIDczLCAxMjgsIAorICAgIDY5LCA2OCwgNzMsIDg0LCA3OSwgODIsIDczLCA2NSwgMjA0LCA2OSwgNjgsIDczLCA3OCwgMTI4LCA2OSwgNjgsIDY4LCAKKyAgICAxMjgsIDY5LCA2NiwgNjksIDcwLCA3MywgNzYsIDczLCAxMjgsIDY5LCA2NSwgODMsIDg0LCA2OSwgODIsIDIwNiwgNjksIAorICAgIDY1LCA4MywgMjEyLCA2OSwgNjUsIDgyLCA4NCwgNzIsIDc2LCAyMTcsIDY5LCA2NSwgODIsIDg0LCA3MiwgMTI4LCA2OSwgCisgICAgNjUsIDgyLCA4NCwgMjAwLCA2OSwgNjUsIDgyLCA4MywgMTI4LCA2OSwgNjUsIDgyLCA3NiwgMjE3LCA2OSwgNjUsIDc3LCAKKyAgICA3MiwgNjUsIDc4LCA2NywgNzIsIDc5LCA3NiwgNzYsIDEyOCwgNjksIDY1LCA3MSwgNzYsIDY5LCAxMjgsIDY5LCA2NSwgNjgsIAorICAgIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCA2NSwgNjYsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCAxNzgsIDY5LCA0OCwgCisgICAgNTEsIDU2LCAxMjgsIDY5LCA0OCwgNTEsIDU1LCAxMjgsIDY5LCA0OCwgNTEsIDU0LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCAKKyAgICA2NSwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgMTI4LCA2OSwgNDgsIDUxLCA1MSwgMTI4LCA2OSwgNDgsIDUxLCA1MCwgMTI4LCAKKyAgICA2OSwgNDgsIDUxLCA0OSwgMTI4LCA2OSwgNDgsIDUxLCA0OCwgMTI4LCA2OSwgNDgsIDUwLCA1NywgMTI4LCA2OSwgNDgsIAorICAgIDUwLCA1NiwgNjUsIDEyOCwgNjksIDQ4LCA1MCwgNTYsIDEyOCwgNjksIDQ4LCA1MCwgNTUsIDEyOCwgNjksIDQ4LCA1MCwgCisgICAgNTQsIDEyOCwgNjksIDQ4LCA1MCwgNTMsIDEyOCwgNjksIDQ4LCA1MCwgNTIsIDEyOCwgNjksIDQ4LCA1MCwgNTEsIDEyOCwgCisgICAgNjksIDQ4LCA1MCwgNTAsIDEyOCwgNjksIDQ4LCA1MCwgNDksIDEyOCwgNjksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDY5LCAKKyAgICA0OCwgNTAsIDQ4LCAxMjgsIDY5LCA0OCwgNDksIDU3LCAxMjgsIDY5LCA0OCwgNDksIDU2LCAxMjgsIDY5LCA0OCwgNDksIAorICAgIDU1LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgCisgICAgNTQsIDEyOCwgNjksIDQ4LCA0OSwgNTMsIDEyOCwgNjksIDQ4LCA0OSwgNTIsIDEyOCwgNjksIDQ4LCA0OSwgNTEsIDEyOCwgCisgICAgNjksIDQ4LCA0OSwgNTAsIDEyOCwgNjksIDQ4LCA0OSwgNDksIDEyOCwgNjksIDQ4LCA0OSwgNDgsIDEyOCwgNjksIDQ4LCAKKyAgICA0OCwgNTcsIDY1LCAxMjgsIDY5LCA0OCwgNDgsIDU3LCAxMjgsIDY5LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIAorICAgIDQ4LCA1NiwgMTI4LCA2OSwgNDgsIDQ4LCA1NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NCwgMTI4LCA2OSwgNDgsIDQ4LCA1MywgCisgICAgMTI4LCA2OSwgNDgsIDQ4LCA1MiwgMTI4LCA2OSwgNDgsIDQ4LCA1MSwgMTI4LCA2OSwgNDgsIDQ4LCA1MCwgMTI4LCA2OSwgCisgICAgNDgsIDQ4LCA0OSwgMTI4LCA2OSwgNDUsIDc3LCA2NSwgNzMsIDIwNCwgNjgsIDkwLCA5MCwgNjksIDEyOCwgNjgsIDkwLCAKKyAgICA5MCwgNjUsIDEyOCwgNjgsIDkwLCA4NywgNjksIDEyOCwgNjgsIDkwLCA4NSwgMTI4LCA2OCwgOTAsIDc5LCAxMjgsIDY4LCAKKyAgICA5MCwgNzQsIDY5LCAxMjgsIDY4LCA5MCwgNzMsIDEyOCwgNjgsIDkwLCA3MiwgNjksIDEyOCwgNjgsIDkwLCA3MiwgNjUsIAorICAgIDEyOCwgNjgsIDkwLCA2OSwgNzYsIDc5LCAxMjgsIDY4LCA5MCwgNjksIDY5LCAxMjgsIDY4LCA5MCwgNjksIDEyOCwgNjgsIAorICAgIDkwLCA2NSwgNjUsIDEyOCwgNjgsIDkwLCA2NSwgMTI4LCA2OCwgOTAsIDEyOCwgNjgsIDIxOCwgNjgsIDg5LCA3OSwgMTI4LCAKKyAgICA2OCwgODksIDIwNywgNjgsIDg5LCA2OSwgNzIsIDEyOCwgNjgsIDg5LCA2OSwgMjAwLCA2OCwgODcsIDc5LCAxMjgsIDY4LCAKKyAgICA4NywgNjksIDEyOCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgODYsIDczLCA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjgsIAorICAgIDg2LCA2OCwgMTI4LCA2OCwgODYsIDEyOCwgNjgsIDg1LCA4NCwgNzMsIDY5LCA4MywgMTI4LCA2OCwgODUsIDgzLCA3NSwgCisgICAgMTI4LCA2OCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjgsIDg1LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY4LCA4NSwgODIsIDUwLCAxMjgsIDY4LCA4NSwgODAsIDc5LCA3OCwgNjgsIDczLCA4NSwgMjExLCA2OCwgODUsIAorICAgIDc5LCA4OCwgMTI4LCA2OCwgODUsIDc5LCAxMjgsIDY4LCA4NSwgNzgsIDUyLCAxMjgsIDY4LCA4NSwgNzgsIDUxLCAxMjgsIAorICAgIDY4LCA4NSwgNzgsIDE3OSwgNjgsIDg1LCA3NywgMTI4LCA2OCwgODUsIDIwNCwgNjgsIDg1LCA3MiwgMTI4LCA2OCwgODUsIAorICAgIDcxLCA4NSwgNjgsIDEyOCwgNjgsIDg1LCA2NiwgNTAsIDEyOCwgNjgsIDg1LCA2NiwgMTI4LCA2OCwgODUsIDE5NCwgNjgsIAorICAgIDgyLCA4OSwgMTI4LCA2OCwgODIsIDIxNywgNjgsIDgyLCA4NSwgNzcsIDEyOCwgNjgsIDgyLCA4NSwgMjA1LCA2OCwgODIsIAorICAgIDc5LCA4MCwgODMsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDc2LCA2OSwgODQsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgCisgICAgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCA2OCwgODIsIDc5LCA3NywgNjksIDY4LCA2NSwgODIsIDIxNywgNjgsIDgyLCAKKyAgICA3MywgODYsIDY5LCAxMjgsIDY4LCA4MiwgNzMsIDg2LCAxOTcsIDY4LCA4MiwgNzMsIDc4LCA3NSwgMTI4LCA2OCwgODIsIAorICAgIDczLCAyMDQsIDY4LCA4MiwgNjksIDgzLCA4MywgMTI4LCA2OCwgODIsIDY1LCA4NSwgNzEsIDcyLCA4NCwgMjExLCA2OCwgCisgICAgODIsIDY1LCA3NywgMTI4LCA2OCwgODIsIDY1LCAyMDUsIDY4LCA4MiwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDgyLCAKKyAgICA2NSwgNzEsIDc5LCAyMDYsIDY4LCA4MiwgNjUsIDcwLCA4NCwgNzMsIDc4LCAxOTksIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIAorICAgIDY1LCA4MywgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCAKKyAgICAxOTMsIDY4LCA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIAorICAgIDY4LCAyMTEsIDY4LCA3OSwgODcsIDc4LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDc5LCA4NywgCisgICAgNzgsIDEyOCwgNjgsIDc5LCA4NiwgNjksIDEyOCwgNjgsIDc5LCA4NSwgNzEsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDY4LCAKKyAgICA3OSwgODUsIDY2LCA4NCwgMTI4LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIAorICAgIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OCwgCisgICAgNzksIDg1LCA2NiwgNzYsIDY5LCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA4MCwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4NCwgNjksIDY4LCA0NSwgNzgsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDc2LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDg0LCA2OSwgNjgsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCAxOTYsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NSwgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NiwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgCisgICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAKKyAgICA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NSwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDU1LCA1NiwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCisgICAgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAorICAgIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTEsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAorICAgIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIAorICAgIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUwLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MCwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NCwgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIAorICAgIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgCisgICAgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCAKKyAgICA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIAorICAgIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA1MCwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU1LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCAKKyAgICA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU0LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIAorICAgIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDUwLCA1MSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1NCwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUwLCA1MSwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MywgNTUsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCAKKyAgICA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNTAsIDUxLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MywgNTQsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgCisgICAgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUwLCA1MSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NCwgCisgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCAKKyAgICA1MSwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCAKKyAgICA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCAKKyAgICA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA1MCwgNTEsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTAsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTUsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU0LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU0LCAKKyAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgCisgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKKyAgICA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDQ5LCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDQ5LCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTQsIDU1LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNDksIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgCisgICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA0OSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAorICAgIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNDksIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNDksIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1NCwgNTUsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIAorICAgIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDQ5LCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCA1NCwgNTUsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgCisgICAgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKKyAgICA1MSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUxLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTQsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDQ5LCA1MSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIAorICAgIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIAorICAgIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA0OSwgNTEsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUwLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU1LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNDksIDUwLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU0LCA1NSwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgCisgICAgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKKyAgICA1MCwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUwLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MywgNTQsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDQ5LCA1MCwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDQ5LCA1MCwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NCwgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNDksIDUwLCA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTQsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCAKKyAgICA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCAKKyAgICA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNDksIDUwLCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgCisgICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA0OSwgNTAsIDUxLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MywgNTUsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCAKKyAgICA1MSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKKyAgICA1MCwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDQ5LCA1MCwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTQsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCAKKyAgICA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKKyAgICA1MCwgNTEsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgMTI4LCA2OCwgNzksIDg0LCA3NiwgNjksIDgzLCAyMTEsIDY4LCA3OSwgODIsIDg1LCAxMjgsIDY4LCA3OSwgNzksIAorICAgIDgyLCAxMjgsIDY4LCA3OSwgNzksIDc4LCA3MSwgMTI4LCA2OCwgNzksIDc4LCA3MSwgMTI4LCA2OCwgNzksIDc3LCA2NSwgCisgICAgNzMsIDIwNiwgNjgsIDc5LCA3NiwgODAsIDcyLCA3MywgNzgsIDEyOCwgNjgsIDc5LCA3NiwgNzYsIDgzLCAxMjgsIDY4LCAKKyAgICA3OSwgNzYsIDc2LCA2NSwgMjEwLCA2OCwgNzksIDc2LCA3MywgODUsIDc3LCAxMjgsIDY4LCA3OSwgNzUsIDc3LCA2NSwgNzMsIAorICAgIDEyOCwgNjgsIDc5LCA3MywgODQsIDEyOCwgNjgsIDc5LCA3MSwgMTI4LCA2OCwgNzksIDE5OSwgNjgsIDc5LCA2OSwgMjExLCAKKyAgICA2OCwgNzksIDY4LCA2OSwgNzUsIDY1LCA4NCwgNjUsIDEyOCwgNjgsIDc5LCA2NiwgODIsIDc5LCAxMjgsIDY4LCA3OSwgNjUsIAorICAgIDY3LCA3MiwgNjUsIDgzLCA3MiwgNzcsIDY5LCA2OSwgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIDY1LCA4MywgNzIsIDc3LCAKKyAgICA2OSwgMTk3LCA2OCwgNzksIDY1LCAxMjgsIDY4LCA3OSwgNDUsIDc5LCAxMjgsIDY4LCA3NywgMTI4LCA2OCwgMjA1LCA2OCwgCisgICAgNzYsIDg1LCAxMjgsIDY4LCA3NiwgNzksIDEyOCwgNjgsIDc2LCA3MywgMTI4LCA2OCwgNzYsIDcyLCA4OSwgNjUsIDEyOCwgCisgICAgNjgsIDc2LCA3MiwgNjUsIDEyOCwgNjgsIDc2LCA2OSwgNjksIDEyOCwgNjgsIDc2LCA2NSwgMTI4LCA2OCwgNzYsIDEyOCwgCisgICAgNjgsIDc1LCA2NSwgODIsIDEyOCwgNjgsIDc1LCA2NSwgMjEwLCA2OCwgNzQsIDY5LCA4MiwgODYsIDczLCAxMjgsIDY4LCAKKyAgICA3NCwgNjksIDgyLCA4NiwgMTI4LCA2OCwgNzQsIDY5LCAxMjgsIDY4LCA3NCwgNjUsIDEyOCwgNjgsIDczLCA5MCwgOTAsIAorICAgIDIxNywgNjgsIDczLCA4NiwgNzksIDgyLCA2NywgMTk3LCA2OCwgNzMsIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgNjgsIDczLCA4NiwgNzMsIDgzLCA3MywgNzksIDIwNiwgNjgsIDczLCA4NiwgNzMsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgODMsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgODIsIDEyOCwgCisgICAgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgMTk2LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAxMjgsIDY4LCA3MywgODYsIDczLCAKKyAgICA2OCwgMTk3LCA2OCwgNzMsIDg2LCA2OSwgODIsIDcxLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA2OCwgNzMsIDg0LCA4NCwgCisgICAgMjA3LCA2OCwgNzMsIDgzLCA4NCwgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDgzLCA4NCwgNzMsIDc4LCAKKyAgICA3MSwgODUsIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCA4MywgODQsIDczLCA3NiwgNzYsIDEyOCwgNjgsIDczLCA4MywgODMsIAorICAgIDc5LCA3NiwgODYsIDY5LCA0NSwgNTAsIDEyOCwgNjgsIDczLCA4MywgODMsIDc5LCA3NiwgODYsIDY5LCAxMjgsIDY4LCA3MywgCisgICAgODMsIDgwLCA2OSwgODIsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIDc1LCAxMjgsIDY4LCA3MywgODMsIDczLCAKKyAgICA3NywgNzksIDg1LCAxMjgsIDY4LCA3MywgODMsIDcyLCAxMjgsIDY4LCA3MywgODMsIDY3LCA3OSwgNzgsIDg0LCA3MywgNzgsIAorICAgIDg1LCA3OSwgODUsIDIxMSwgNjgsIDczLCA4MywgMTk1LCA2OCwgNzMsIDgzLCA2NSwgODAsIDgwLCA3OSwgNzMsIDc4LCA4NCwgCisgICAgNjksIDE5NiwgNjgsIDczLCA4MywgNjUsIDY2LCA3NiwgNjksIDE5NiwgNjgsIDczLCA4MiwgNzEsIDE5MywgNjgsIDczLCAKKyAgICA4MiwgNjksIDY3LCA4NCwgNzYsIDIxNywgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIAorICAgIDczLCA4MCwgODQsIDY5LCAxMjgsIDY4LCA3MywgODAsIDgwLCA2OSwgODIsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDc5LCA4NSwgCisgICAgNzgsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDczLCAxMjgsIDY4LCA3MywgODAsIDc2LCAyMDEsIDY4LCA3MywgNzgsIDcxLCAKKyAgICA2NiwgNjUsIDIxMiwgNjgsIDczLCAyMDYsIDY4LCA3MywgNzcsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA3MywgNzcsIAorICAgIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNTEsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCAKKyAgICA3OSwgNzgsIDQ1LCA1MCwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDQ5LCAxMjgsIAorICAgIDY4LCA3MywgNzcsIDczLCA3OCwgNzMsIDgzLCA3MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjgsIDczLCA3NywgNzMsIDY4LCAKKyAgICA3MywgMTkzLCA2OCwgNzMsIDc3LCA2OSwgNzgsIDgzLCA3MywgNzksIDc4LCA2NSwgMjA0LCA2OCwgNzMsIDc3LCA2OSwgNzgsIAorICAgIDgzLCA3MywgNzksIDIwNiwgNjgsIDczLCA3NywgNTAsIDEyOCwgNjgsIDczLCA3NiwgMTI4LCA2OCwgNzMsIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgMTI4LCA2OCwgNzMsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDY4LCA3MywgNzEsIDgyLCA2NSwgNzcsIDc3LCAKKyAgICA3OSwgMjExLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgMTkzLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDIwNSwgNjgsIAorICAgIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDc4LCAxMjgsIDY4LCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCAyMDYsIDY4LCA3MywgCisgICAgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDY4LCA3MywgNzEsIDE5MywgNjgsIDczLCA3MCwgODQsIDc5LCA3MSwgNzEsIDc5LCAKKyAgICAyMTEsIDY4LCA3MywgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNzMsIDY3LCA4NSwgNzYsIAorICAgIDg0LCAyMTcsIDY4LCA3MywgNzAsIDcwLCA3MywgNjcsIDg1LCA3NiwgODQsIDczLCA2OSwgODMsIDEyOCwgNjgsIDczLCA3MCwgCisgICAgNzAsIDY5LCA4MiwgNjksIDc4LCA4NCwgNzMsIDY1LCA3NiwgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIAorICAgIDY3LCAxOTcsIDY4LCA3MywgNzAsIDY1LCA4NCwgMTI4LCA2OCwgNzMsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDY4LCA3MywgCisgICAgNjksIDgzLCA3MywgMjExLCA2OCwgNzMsIDY5LCA4MCwgMTI4LCA2OCwgNzMsIDE5NywgNjgsIDczLCA2NiwgMTI4LCA2OCwgCisgICAgNzMsIDY1LCA4NCwgNzksIDc4LCA3OSwgMjA2LCA2OCwgNzMsIDY1LCA4NCwgNzksIDc4LCA3MywgNzUsIDIwMSwgNjgsIDczLCAKKyAgICA2NSwgODMsIDg0LCA3OSwgNzYsIDIwMSwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgNjgsIDgzLCAxMjgsIDY4LCA3MywgNjUsIAorICAgIDc3LCA3OSwgNzgsIDY4LCAxMjgsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDE5NiwgNjgsIDczLCA2NSwgNzcsIDY5LCA4NCwgCisgICAgNjksIDIxMCwgNjgsIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIDc1LCA2NSwgMTI4LCA2OCwgNzMsIDY1LCA3NiwgODksIDg0LCAKKyAgICA3MywgNzUsIDE5MywgNjgsIDczLCA2NSwgNzYsIDY5LCA2NywgODQsIDQ1LCAyMDgsIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIAorICAgIDY1LCA3NiwgMTI4LCA2OCwgNzMsIDY1LCA3MSwgNzksIDc4LCA2NSwgMjA0LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgCisgICAgNzMsIDkwLCA2OSwgMTk2LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDY4LCA3MywgNjUsIDY5LCAKKyAgICA4MiwgNjksIDgzLCA3MywgMjExLCA2OCwgNzIsIDc5LCA4NSwgMTI4LCA2OCwgNzIsIDc5LCA3OSwgMTI4LCA2OCwgNzIsIAorICAgIDc5LCAxMjgsIDY4LCA3MiwgNzMsIDEyOCwgNjgsIDcyLCA3MiwgODUsIDEyOCwgNjgsIDcyLCA3MiwgNzksIDc5LCAxMjgsIAorICAgIDY4LCA3MiwgNzIsIDc5LCAxMjgsIDY4LCA3MiwgNzIsIDczLCAxMjgsIDY4LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA2OCwgCisgICAgNzIsIDcyLCA2OSwgMTI4LCA2OCwgNzIsIDcyLCA2NSwgMTI4LCA2OCwgNzIsIDY5LCA2OSwgMTI4LCA2OCwgNzIsIDY1LCAKKyAgICA4MiwgNzcsIDY1LCAxMjgsIDY4LCA3MiwgNjUsIDc2LCA2OSwgODQsIDcyLCAxMjgsIDY4LCA3MiwgNjUsIDc2LCA2NSwgODQsIAorICAgIDcyLCAxMjgsIDY4LCA3MiwgNjUsIDc2LCAxMjgsIDY4LCA3MiwgNjUsIDY4LCA3MiwgNjksIDEyOCwgNjgsIDcyLCA2NSwgCisgICAgNjUsIDc2LCA4NSwgMTI4LCA2OCwgNzIsIDY1LCA2NSwgMTI4LCA2OCwgNzIsIDY1LCAxMjgsIDY4LCA2OSwgOTAsIDIwMCwgCiAgICAgNjgsIDY5LCA4OSwgODQsIDY5LCA4MiwgNzksIDIxMywgNjgsIDY5LCA4OSwgODQsIDY5LCA4MiwgNzksIDIxMSwgNjgsIDY5LCAKICAgICA4OCwgNzMsIDY1LCAxMjgsIDY4LCA2OSwgODYsIDczLCA2NywgMTk3LCA2OCwgNjksIDg2LCA2OSwgNzYsIDc5LCA4MCwgNzcsIAogICAgIDY5LCA3OCwgODQsIDEyOCwgNjgsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDY4LCA2OSwgODMsIDIwMywgNjgsIDY5LCA4MywgCkBAIC0zODc5LDE2MSArNDA0MCwxNjQgQEAKICAgICA2OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OCwgNjgsIDY1LCA4OCwgMTI4LCA2OCwgNjgsIDY1LCA4NCwgCiAgICAgMTI4LCA2OCwgNjgsIDY1LCA4MCwgMTI4LCA2OCwgNjgsIDY1LCA3NiwgMTI4LCA2OCwgNjgsIDY1LCAyMDQsIDY4LCA2OCwgCiAgICAgNjUsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDY4LCA2NSwgNzIsIDY1LCAyMDQsIDY4LCA2OCwgNjUsIDY1LCAxMjgsIDY4LCAKLSAgICAxOTQsIDY4LCA2NSwgODksIDQ1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjgsIDY1LCAyMTcsIDY4LCA2NSwgODYsIAotICAgIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2OCwgNjUsIDg2LCA3MywgNjgsIDEyOCwgNjgsIDY1LCA4NCwgMTk3LCA2OCwgCi0gICAgNjUsIDgzLCA3MywgNjUsIDEyOCwgNjgsIDY1LCA4MywgNzIsIDY5LCAxOTYsIDY4LCA2NSwgODMsIDcyLCAxMjgsIDY4LCAKLSAgICA2NSwgODMsIDIwMCwgNjgsIDY1LCA4MywgNjksIDczLCA2NSwgMTI4LCA2OCwgNjUsIDgyLCA4NCwgMTI4LCA2OCwgNjUsIAotICAgIDgyLCA3NSwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA2NSwgODIsIDc1LCA2OSwgNzgsIDczLCA3OCwgMTk5LCA2OCwgCi0gICAgNjUsIDgyLCAyMDMsIDY4LCA2NSwgODIsIDcxLCA2NSwgMTI4LCA2OCwgNjUsIDgyLCA2NSwgNTIsIDEyOCwgNjgsIDY1LCAKLSAgICA4MiwgNjUsIDUxLCAxMjgsIDY4LCA2NSwgODIsIDEyOCwgNjgsIDY1LCA4MCwgNDUsIDgwLCA4MiwgNjUsIDIwNSwgNjgsIAotICAgIDY1LCA4MCwgNDUsIDgwLCA3MywgMjAxLCA2OCwgNjUsIDgwLCA0NSwgNzcsIDg1LCA3OSwgMjE3LCA2OCwgNjUsIDgwLCA0NSwgCi0gICAgNjYsIDg1LCA3OSwgMjA2LCA2OCwgNjUsIDgwLCA0NSwgNjYsIDY5LCAyMDEsIDY4LCA2NSwgMjA4LCA2OCwgNjUsIDc4LCAKLSAgICA4NCwgNjUsIDc0LCAxOTMsIDY4LCA2NSwgNzgsIDcxLCA3OSwgMTI4LCA2OCwgNjUsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIAotICAgIDc4LCAxOTksIDY4LCA2NSwgNzgsIDY4LCA2NSwgMTI4LCA2OCwgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIDY4LCA2NSwgCi0gICAgNzcsIDgwLCAxMjgsIDY4LCA2NSwgNzcsIDIwOCwgNjgsIDY1LCA3NywgNzcsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDY4LCAKLSAgICA2NSwgNzcsIDc3LCA2NSwgODQsIDY1LCAyMDYsIDY4LCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA2OCwgNjUsIDc3LCA3NywgCi0gICAgMTkzLCA2OCwgNjUsIDc3LCA2NSwgODIsIDg1LCAxMjgsIDY4LCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDY1LCAKLSAgICA3NiwgNjksIDg0LCAxMjgsIDY4LCA2NSwgNzYsIDY5LCAyMTIsIDY4LCA2NSwgNzYsIDY4LCA2NSwgMTI4LCA2OCwgNjUsIAotICAgIDc2LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY1LCA4NCwgMjAwLCA2OCwgNjUsIDc2LCA2NSwgODQsIDEyOCwgCi0gICAgNjgsIDY1LCA3MywgODIsIDEyOCwgNjgsIDY1LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCAKLSAgICA4MywgNzIsIDQ1LCA1MCwgMTI4LCA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIAotICAgIDgzLCAxMjgsIDY4LCA2NSwgNzEsIDcxLCA2OSwgODIsIDEyOCwgNjgsIDY1LCA3MSwgNjksIDgzLCA3MiwgMTI4LCA2OCwgCi0gICAgNjUsIDcxLCA2OSwgODMsIDIwMCwgNjgsIDY1LCA3MSwgNjYsIDY1LCA4MywgNzMsIDc4LCA3OCwgNjUsIDEyOCwgNjgsIDY1LCAKLSAgICA3MSwgNjUsIDIxOCwgNjgsIDY1LCA3MSwgNjUsIDc2LCA3MSwgNjUsIDEyOCwgNjgsIDY1LCAxOTksIDY4LCA2NSwgNjksIAotICAgIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDY5LCAxOTksIDY4LCA2NSwgNjgsIDEyOCwgNjgsIDY1LCAxOTYsIDY4LCA2NSwgNjUsIAotICAgIDgzLCA4NSwgMTI4LCA2OCwgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MiwgMTI4LCA2OCwgCi0gICAgNDgsIDU0LCA1NSwgNzEsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcwLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2OSwgMTI4LCAKLSAgICA2OCwgNDgsIDU0LCA1NSwgNjgsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY3LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NiwgCi0gICAgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDEyOCwgNjgsIDQ4LCA1NCwgNTQsIDEyOCwgCi0gICAgNjgsIDQ4LCA1NCwgNTMsIDEyOCwgNjgsIDQ4LCA1NCwgNTIsIDEyOCwgNjgsIDQ4LCA1NCwgNTEsIDEyOCwgNjgsIDQ4LCAKLSAgICA1NCwgNTAsIDEyOCwgNjgsIDQ4LCA1NCwgNDksIDEyOCwgNjgsIDQ4LCA1NCwgNDgsIDEyOCwgNjgsIDQ4LCA1MywgNTcsIAotICAgIDEyOCwgNjgsIDQ4LCA1MywgNTYsIDEyOCwgNjgsIDQ4LCA1MywgNTUsIDEyOCwgNjgsIDQ4LCA1MywgNTQsIDEyOCwgNjgsIAotICAgIDQ4LCA1MywgNTMsIDEyOCwgNjgsIDQ4LCA1MywgNTIsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUyLCAxMjgsIDY4LCA0OCwgCi0gICAgNTMsIDUxLCAxMjgsIDY4LCA0OCwgNTMsIDUwLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MCwgMTI4LCA2OCwgNDgsIDUzLCAKLSAgICA0OSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzMsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcyLCAxMjgsIDY4LCA0OCwgNTMsIAotICAgIDQ4LCA3MSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzAsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY5LCAxMjgsIDY4LCA0OCwgCi0gICAgNTMsIDQ4LCA2OCwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjcsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY2LCAxMjgsIDY4LCAKLSAgICA0OCwgNTMsIDQ4LCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgMTI4LCA2OCwgNDgsIDUyLCA1NywgMTI4LCA2OCwgNDgsIAotICAgIDUyLCA1NiwgNjUsIDEyOCwgNjgsIDQ4LCA1MiwgNTYsIDEyOCwgNjgsIDQ4LCA1MiwgNTUsIDEyOCwgNjgsIDQ4LCA1MiwgCi0gICAgNTQsIDY1LCAxMjgsIDY4LCA0OCwgNTIsIDU0LCAxMjgsIDY4LCA0OCwgNTIsIDUzLCAxMjgsIDY4LCA0OCwgNTIsIDUyLCAKLSAgICAxMjgsIDY4LCA0OCwgNTIsIDUxLCAxMjgsIDY4LCA0OCwgNTIsIDUwLCAxMjgsIDY4LCA0OCwgNTIsIDQ5LCAxMjgsIDY4LCAKLSAgICA0OCwgNTIsIDQ4LCAxMjgsIDY4LCA0OCwgNTEsIDU3LCAxMjgsIDY4LCA0OCwgNTEsIDU2LCAxMjgsIDY4LCA0OCwgNTEsIAotICAgIDU1LCAxMjgsIDY4LCA0OCwgNTEsIDU0LCAxMjgsIDY4LCA0OCwgNTEsIDUzLCAxMjgsIDY4LCA0OCwgNTEsIDUyLCA2NSwgCi0gICAgMTI4LCA2OCwgNDgsIDUxLCA1MiwgMTI4LCA2OCwgNDgsIDUxLCA1MSwgMTI4LCA2OCwgNDgsIDUxLCA1MCwgMTI4LCA2OCwgCi0gICAgNDgsIDUxLCA0OSwgNjUsIDEyOCwgNjgsIDQ4LCA1MSwgNDksIDEyOCwgNjgsIDQ4LCA1MSwgNDgsIDEyOCwgNjgsIDQ4LCAKLSAgICA1MCwgNTcsIDEyOCwgNjgsIDQ4LCA1MCwgNTYsIDEyOCwgNjgsIDQ4LCA1MCwgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTAsIAotICAgIDU1LCAxMjgsIDY4LCA0OCwgNTAsIDU0LCAxMjgsIDY4LCA0OCwgNTAsIDUzLCAxMjgsIDY4LCA0OCwgNTAsIDUyLCAxMjgsIAotICAgIDY4LCA0OCwgNTAsIDUxLCAxMjgsIDY4LCA0OCwgNTAsIDUwLCAxMjgsIDY4LCA0OCwgNTAsIDQ5LCAxMjgsIDY4LCA0OCwgCi0gICAgNTAsIDQ4LCAxMjgsIDY4LCA0OCwgNDksIDU3LCAxMjgsIDY4LCA0OCwgNDksIDU2LCAxMjgsIDY4LCA0OCwgNDksIDU1LCAKLSAgICAxMjgsIDY4LCA0OCwgNDksIDU0LCAxMjgsIDY4LCA0OCwgNDksIDUzLCAxMjgsIDY4LCA0OCwgNDksIDUyLCAxMjgsIDY4LCAKLSAgICA0OCwgNDksIDUxLCAxMjgsIDY4LCA0OCwgNDksIDUwLCAxMjgsIDY4LCA0OCwgNDksIDQ5LCAxMjgsIDY4LCA0OCwgNDksIAotICAgIDQ4LCAxMjgsIDY4LCA0OCwgNDgsIDU3LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgCi0gICAgMTI4LCA2OCwgNDgsIDQ4LCA1NSwgMTI4LCA2OCwgNDgsIDQ4LCA1NCwgMTI4LCA2OCwgNDgsIDQ4LCA1MywgMTI4LCA2OCwgCi0gICAgNDgsIDQ4LCA1MiwgMTI4LCA2OCwgNDgsIDQ4LCA1MSwgMTI4LCA2OCwgNDgsIDQ4LCA1MCwgMTI4LCA2OCwgNDgsIDQ4LCAKLSAgICA0OSwgMTI4LCA2NywgODksIDg4LCAxMjgsIDY3LCA4OSwgODQsIDEyOCwgNjcsIDg5LCA4MiwgODgsIDEyOCwgNjcsIDg5LCAKLSAgICA4MiwgNjksIDc4LCA2NSwgNzMsIDE5NSwgNjcsIDg5LCA4MiwgMTI4LCA2NywgODksIDgwLCA4MiwgNzMsIDc5LCAyMTIsIAotICAgIDY3LCA4OSwgODAsIDY5LCA4MiwgODUsIDgzLCAxMjgsIDY3LCA4OSwgODAsIDEyOCwgNjcsIDg5LCA3NiwgNzMsIDc4LCA2OCwgCi0gICAgODIsIDczLCA2NywgNzMsIDg0LCA4OSwgMTI4LCA2NywgODksIDY3LCA3NiwgNzksIDc4LCA2OSwgMTI4LCA2NywgODksIDY1LCAKLSAgICAxMjgsIDY3LCA4OSwgMTI4LCA2NywgODcsIDc5LCA3OSwgMTI4LCA2NywgODcsIDc5LCAxMjgsIDY3LCA4NywgNzMsIDczLCAKLSAgICAxMjgsIDY3LCA4NywgNzMsIDEyOCwgNjcsIDg3LCA2OSwgNzksIDgyLCA4NCwgNzIsIDEyOCwgNjcsIDg3LCA2OSwgMTI4LCAKLSAgICA2NywgODcsIDY1LCA2NSwgMTI4LCA2NywgODUsIDg4LCAxMjgsIDY3LCA4NSwgMjEyLCA2NywgODUsIDgzLCA4NCwgNzksIAotICAgIDc3LCA4MywgMTI4LCA2NywgODUsIDgzLCA4NCwgNzksIDc3LCA2OSwgMjEwLCA2NywgODUsIDgzLCA4NCwgNjUsIDgyLCA2OCwgCi0gICAgMTI4LCA2NywgODUsIDgyLCA4OCwgMTI4LCA2NywgODUsIDgyLCA4NiwgNzMsIDc4LCAxOTksIDY3LCA4NSwgODIsIDg2LCAKLSAgICA2OSwgMTk2LCA2NywgODUsIDgyLCA4NiwgNjksIDEyOCwgNjcsIDg1LCA4MiwgODYsIDE5NywgNjcsIDg1LCA4MiwgODIsIAotICAgIDIxNywgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgODQsIDEyOCwgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgMjEyLCA2NywgCi0gICAgODUsIDgyLCA3NiwgMjE3LCA2NywgODUsIDgyLCA3NiwgMTI4LCA2NywgODUsIDgyLCAxMjgsIDY3LCA4NSwgODAsIDEyOCwgCi0gICAgNjcsIDg1LCA3OSwgODgsIDEyOCwgNjcsIDg1LCA3OSwgODAsIDEyOCwgNjcsIDg1LCA3OSwgMTI4LCA2NywgODUsIDIwNSwgCi0gICAgNjcsIDg1LCA2NiwgNjksIDY4LCAxMjgsIDY3LCA4NSwgNjYsIDE5NywgNjcsIDg1LCA2NSwgODQsIDgyLCA3MywgNzYsIDc2LCAKLSAgICA3OSwgMTI4LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgNzYsIDIwNywgNjcsIDg1LCAxMjgsIDY3LCA4MiwgODksIAotICAgIDgzLCA4NCwgNjUsIDIwNCwgNjcsIDgyLCA4OSwgODAsIDg0LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA3MywgMTk1LCA2NywgCi0gICAgODIsIDg5LCA3MywgNzgsIDE5OSwgNjcsIDgyLCA4NSwgOTAsIDY5LCA3MywgODIsIDIwNywgNjcsIDgyLCA4NSwgNjcsIDczLCAKLSAgICA2NiwgNzYsIDY5LCA0NSwgNTMsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTIsIDEyOCwgNjcsIAotICAgIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTEsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCAKLSAgICA0NSwgNTAsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCAxMjgsIDY3LCA4MiwgNzksIDg3LCA3OCwgCi0gICAgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDczLCA3OCwgNzEsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA3MywgNzgsIAotICAgIDE5OSwgNjcsIDgyLCA3OSwgODMsIDgzLCA3MiwgNjUsIDg0LCA2NywgMjAwLCA2NywgODIsIDc5LCA4MywgODMsIDY5LCA2OCwgCi0gICAgNDUsIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDE5NiwgNjcsIDgyLCA3OSwgODMsIDgzLCAKLSAgICA2NiwgNzksIDc4LCA2OSwgODMsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCAxMjgsIDY3LCA4MiwgNzksIDgzLCAyMTEsIAotICAgIDY3LCA4MiwgNzksIDgwLCAxMjgsIDY3LCA4MiwgNzksIDczLCA4OCwgMTI4LCA2NywgODIsIDc5LCA2NywgODUsIDIxMSwgCi0gICAgNjcsIDgyLCA3OSwgNjcsIDc5LCA2OCwgNzMsIDc2LCA2OSwgMTI4LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgODQsIAotICAgIDEyOCwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDIxMiwgNjcsIDgyLCA2OSwgNjgsIDczLCAyMTIsIDY3LCA4MiwgCi0gICAgNjksIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY3LCA4MiwgNjksIDY1LCA3NywgMTI4LCA2NywgODIsIDY1LCA2NywgNzUsIDY5LCAKLSAgICA4MiwgMTI4LCA2NywgNzksIDg4LCAxMjgsIDY3LCA3OSwgODcsIDEyOCwgNjcsIDc5LCAyMTUsIDY3LCA3OSwgODYsIDY5LCAKLSAgICA4MiwgMTI4LCA2NywgNzksIDg1LCA4MCwgNzYsIDE5NywgNjcsIDc5LCA4NSwgNzgsIDg0LCA3MywgNzgsIDE5OSwgNjcsIAotICAgIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDgzLCA3MywgNzgsIDc1LCAxMjgsIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCAKLSAgICA2NiwgNzksIDgyLCA2OSwgMTI4LCA2NywgNzksIDg1LCA3OCwgNjcsIDczLCAyMDQsIDY3LCA3OSwgODQsIDEyOCwgNjcsIAotICAgIDc5LCA4MiwgODIsIDY5LCA4MywgODAsIDc5LCA3OCwgNjgsIDIxMSwgNjcsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDEyOCwgCi0gICAgNjcsIDc5LCA4MiwgODAsIDgzLCA2OSwgMTI4LCA2NywgNzksIDgyLCA4MCwgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgNjcsIDc5LCA4MiwgNzksIDc4LCA3MywgODMsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgODMsIDEyOCwgCi0gICAgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDIxMCwgNjcsIDc5LCA4MCwgODksIDgyLCAKLSAgICA3MywgNzEsIDcyLCA4NCwgMTI4LCA2NywgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDIxMiwgNjcsIDc5LCA4MCwgODksIAotICAgIDEyOCwgNjcsIDc5LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA2NywgNzksIDgwLCA4MCwgNjksIDgyLCA0NSwgCi0gICAgNTAsIDEyOCwgNjcsIDc5LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA2NywgNzksIDgwLCAxMjgsIDY3LCA3OSwgNzksIDc2LCAKLSAgICAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgNzgsIDcxLCAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgNjksIDEyOCwgNjcsIAotICAgIDc5LCA3OSwgNzUsIDY5LCAxOTYsIDY3LCA3OSwgNzksIDEyOCwgNjcsIDc5LCA3OCwgODYsIDY5LCA4MiwgNzEsIDczLCA3OCwgCi0gICAgMTk5LCA2NywgNzksIDc4LCA4NiwgNjksIDc4LCA3MywgNjksIDc4LCA2NywgMTk3LCA2NywgNzksIDc4LCA4NCwgODIsIDc5LCAKLSAgICA3NiwgMTI4LCA2NywgNzksIDc4LCA4NCwgODIsIDc5LCAyMDQsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNjUsIDgyLCA3MywgNjksIAotICAgIDg0LCA4OSwgMTI4LCA2NywgNzksIDc4LCA4NCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgCi0gICAgODQsIDc5LCA4NSwgODIsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDIxMCwgNjcsIDc5LCA3OCwgODQsIDY5LCAKLSAgICA3OCwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY5LCA3NywgODAsIDc2LCA2NSwgODQsIDczLCA3OSwgCi0gICAgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDIxMSwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDczLCAKLSAgICA3OCwgMTk5LCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCAyMDYsIDY3LCA3OSwgNzgsIDg0LCA2NSwgNjcsIDg0LCAxMjgsIAotICAgIDY3LCA3OSwgNzgsIDgzLCA4NCwgODIsIDg1LCA2NywgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc4LCA4MywgODQsIDY1LCAKLSAgICA3OCwgODQsIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIDIxMiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIAotICAgIDY3LCA4OSwgMTI4LCA2NywgNzksIDc4LCA4MywgNzksIDc4LCA2NSwgNzgsIDIxMiwgNjcsIDc5LCA3OCwgODMsIDY5LCA2NywgCi0gICAgODUsIDg0LCA3MywgODYsIDE5NywgNjcsIDc5LCA3OCwgNzQsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCAKLSAgICA3OSwgNzgsIDc0LCA4NSwgNzEsIDY1LCA4NCwgMTk3LCA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgNzMsIDc4LCAxOTksIAotICAgIDY3LCA3OSwgNzgsIDczLCA2NywgNjUsIDIwNCwgNjcsIDc5LCA3OCwgNzEsIDgyLCA4NSwgNjksIDc4LCAyMTIsIDY3LCA3OSwgCi0gICAgNzgsIDcxLCA4MiwgNjUsIDg0LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA3MCwgNzksIAotICAgIDg1LCA3OCwgNjgsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDcwLCA3NiwgNzMsIDY3LCA4NCwgMTI4LCA2NywgNzksIDc4LCA3MCwgCi0gICAgNjksIDg0LCA4NCwgMjAxLCA2NywgNzksIDc4LCA2NywgNjUsIDg2LCA2OSwgNDUsIDgzLCA3MywgNjgsIDY5LCAxOTYsIDY3LCAKLSAgICA3OSwgNzgsIDY3LCA2NSwgODYsIDY5LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA2NywgNzksIDc4LCAxMjgsIAotICAgIDY3LCA3OSwgNzcsIDgwLCA4NSwgODQsIDY5LCA4MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3NywgODAsIAotICAgIDc2LCA3MywgNjUsIDc4LCA2NywgNjksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDY5LCA2OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA3NywgNjksIAotICAgIDc4LCA4NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNjUsIDgyLCA2OSwgMTI4LCA2NywgNzksIDc3LCA3NywgNzksIDIwNiwgCi0gICAgNjcsIDc5LCA3NywgNzcsIDY5LCA4MiwgNjcsIDczLCA2NSwgMjA0LCA2NywgNzksIDc3LCA3NywgNjUsIDEyOCwgNjcsIDc5LCAKLSAgICA3NywgNzcsIDE5MywgNjcsIDc5LCA3NywgNjksIDg0LCAxMjgsIDY3LCA3OSwgNzcsIDY2LCAxMjgsIDY3LCA3OSwgNzYsIAotICAgIDg1LCA3NywgNzgsIDEyOCwgNjcsIDc5LCA3NiwgNzksIDgyLCAxMjgsIDY3LCA3OSwgNzYsIDc2LCA3MywgODMsIDczLCA3OSwgCi0gICAgMjA2LCA2NywgNzksIDc2LCA3NiwgMTI4LCA2NywgNzksIDc2LCAxOTYsIDY3LCA3OSwgNzAsIDcwLCA3MywgNzgsIDEyOCwgCi0gICAgNjcsIDc5LCA2OSwgNzgsIDcxLCAxMjgsIDY3LCA3OSwgNjgsIDY1LCAxMjgsIDY3LCA3OSwgNjcsIDc1LCA4NCwgNjUsIDczLCAKLSAgICAyMDQsIDY3LCA3OSwgNjUsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgNjUsIDEyOCwgNjcsIDc5LCAxMjgsIDY3LCAKLSAgICA3NywgMTI4LCA2NywgMjA1LCA2NywgNzYsIDg1LCA4MywgODQsIDY5LCAyMTAsIDY3LCA3NiwgODUsIDY2LCA4MywgMTI4LCAKLSAgICA2NywgNzYsIDg1LCA2NiwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCA2NywgNzYsIDg1LCA2NiwgMTI4LCA2NywgNzYsIAotICAgIDg1LCAxOTQsIDY3LCA3NiwgNzksIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA3OSwgODUsIDY4LCAxMjgsIDY3LCA3NiwgCi0gICAgNzksIDg1LCAxOTYsIDY3LCA3NiwgNzksIDg0LCA3MiwgNjksIDgzLCAxMjgsIDY3LCA3NiwgNzksIDg0LCA3MiwgMTI4LCAKLSAgICA2NywgNzYsIDc5LCA4MywgNjksIDg0LCAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgNzgsIDY5LCA4MywgODMsIDEyOCwgNjcsIAotICAgIDc2LCA3OSwgODMsIDY5LCA2OCwgMTI4LCA2NywgNzYsIDc5LCA4MywgMTk3LCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgCi0gICAgODMsIDE5NywgNjcsIDc2LCA3OSwgNjcsIDIwMywgNjcsIDc2LCA3MywgODYsIDczLCA4MywgMTI4LCA2NywgNzYsIDczLCAKLSAgICA4MCwgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA3NiwgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIAotICAgIDc4LCA3MSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc3LCA2NSwgNjcsIDg1LCA4MywgMTI4LCA2NywgNzYsIDczLCA3MCwgCi0gICAgNzAsIDEyOCwgNjcsIDc2LCA3MywgNjcsIDc1LCAxMjgsIDY3LCA3NiwgNjksIDcwLCA0NSwgNTAsIDEyOCwgNjcsIDc2LCAKLSAgICA2OSwgNzAsIDQ1LCA0OSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgMTI4LCA2NywgNzYsIDY5LCAxOTgsIDY3LCA3NiwgNjksIAotICAgIDY1LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNjksIDY1LCAyMTAsIDY3LCA3NiwgNjUsIDg3LCAxMjgsIDY3LCA3NiwgCi0gICAgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNjUsIDgwLCA4MCwgNjksIDIxMCwgNjcsIDc2LCA2NSwgNzgsIAotICAgIDEyOCwgNjcsIDc2LCA2NSwgNzMsIDc3LCAxMjgsIDY3LCA3NiwgMTI4LCA2NywgNzMsIDg4LCAxMjgsIDY3LCA3MywgODYsIAotICAgIDczLCA3NiwgNzMsIDY1LCA3OCwgMTI4LCA2NywgNzMsIDg0LCA4OSwgODMsIDY3LCA2NSwgODAsIDE5NywgNjcsIDczLCA4NCwgCi0gICAgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDIxMSwgNjcsIDczLCA4MiwgNjcsIDg1LCA3NywgNzAsIDc2LCA2OSwgODgsIAotICAgIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCA3NywgNzAsIDc2LCA2OSwgMjE2LCA2NywgNzMsIDgyLCA2NywgODUsIDc2LCA2NSwgCi0gICAgODQsIDczLCA3OSwgMjA2LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCA4MywgMTI4LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCAKLSAgICAxMjgsIDY3LCA3MywgODAsIDEyOCwgNjcsIDczLCA3OCwgNzgsIDY1LCA2NiwgNjUsIDgyLCAxMjgsIDY3LCA3MywgNzgsIAotICAgIDY5LCA3NywgNjUsIDEyOCwgNjcsIDczLCA3MywgMTI4LCA2NywgNzMsIDY5LCA4OCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgCi0gICAgNjcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgNjcsIAotICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgNzMsIDY5LCA4NSwgNzgsIDcxLCAKLSAgICAxMjgsIDY3LCA3MywgNjksIDg1LCAxOTUsIDY3LCA3MywgNjksIDg0LCAxMjgsIDY3LCA3MywgNjksIDgwLCAxMjgsIDY3LCAKLSAgICA3MywgNjksIDEyOCwgNjcsIDczLCAxMjgsIDY3LCA3MiwgODksIDg4LCAxMjgsIDY3LCA3MiwgODksIDg0LCAxMjgsIDY3LCAKLSAgICA3MiwgODksIDgyLCA4OCwgMTI4LCA2NywgNzIsIDg5LCA4MiwgMTI4LCA2NywgNzIsIDg5LCA4MCwgMTI4LCA2NywgNzIsIAotICAgIDg1LCA4OCwgMTI4LCA2NywgNzIsIDg1LCA4MiwgODgsIDEyOCwgNjcsIDcyLCA4NSwgODIsIDY3LCA3MiwgMTI4LCA2NywgCi0gICAgNzIsIDg1LCA4MiwgMTI4LCA2NywgNzIsIDg1LCA4MCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgODgsIDEyOCwgNjcsIDcyLCAKLSAgICA4NSwgNzksIDg0LCAxMjgsIDY3LCA3MiwgODUsIDc5LCA4MCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgMTI4LCA2NywgNzIsIAotICAgIDg1LCA3NiwgNjUsIDEyOCwgNjcsIDcyLCA4NSwgMTI4LCA2NywgNzIsIDgyLCA4OSwgODMsIDY1LCA3OCwgODQsIDcyLCA2OSwgCi0gICAgNzcsIDg1LCA3NywgMTI4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgMTI4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCAKLSAgICA3OCwgMTI4LCA2NywgNzIsIDgyLCA3OSwgNzcsIDE5MywgNjcsIDcyLCA4MiwgNzksIDE5MywgNjcsIDcyLCA4MiwgNzMsIAotICAgIDg2LCA3MywgMTI4LCA2NywgNzIsIDgyLCA3MywgODMsIDg0LCA3NywgNjUsIDgzLCAxMjgsIDY3LCA3MiwgODIsIDczLCA4MywgCi0gICAgODQsIDc3LCA2NSwgMjExLCA2NywgNzIsIDc5LCA4OCwgMTI4LCA2NywgNzIsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDc5LCAKLSAgICA4MiwgNjksIDg2LCA3NywgMTkzLCA2NywgNzIsIDc5LCA4MCwgMTI4LCA2NywgNzIsIDc5LCA3NSwgNjksIDEyOCwgNjcsIAotICAgIDcyLCA3OSwgNjksIDEyOCwgNjcsIDcyLCA3OSwgNjcsIDc5LCA3NiwgNjUsIDg0LCAxOTcsIDY3LCA3MiwgNzksIDY1LCAKKyAgICA2NywgODMsIDEyOCwgNjgsIDY3LCA1MiwgMTI4LCA2OCwgNjcsIDUxLCAxMjgsIDY4LCA2NywgNTAsIDEyOCwgNjgsIDY3LCAKKyAgICA0OSwgMTI4LCA2OCwgMTk0LCA2OCwgNjUsIDg5LCA0NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY4LCA2NSwgMjE3LCAKKyAgICA2OCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNjgsIDY1LCA4NiwgNzMsIDY4LCAxMjgsIDY4LCA2NSwgODQsIAorICAgIDE5NywgNjgsIDY1LCA4MywgNzMsIDY1LCAxMjgsIDY4LCA2NSwgODMsIDczLCAxOTMsIDY4LCA2NSwgODMsIDcyLCA2OSwgCisgICAgMTk2LCA2OCwgNjUsIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDgzLCAyMDAsIDY4LCA2NSwgODMsIDY5LCA3MywgNjUsIDEyOCwgCisgICAgNjgsIDY1LCA4MiwgODQsIDEyOCwgNjgsIDY1LCA4MiwgNzUsIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDgyLCAKKyAgICA3NSwgNjksIDc4LCA3MywgNzgsIDE5OSwgNjgsIDY1LCA4MiwgMjAzLCA2OCwgNjUsIDgyLCA3MSwgNjUsIDEyOCwgNjgsIAorICAgIDY1LCA4MiwgNjUsIDUyLCAxMjgsIDY4LCA2NSwgODIsIDY1LCA1MSwgMTI4LCA2OCwgNjUsIDgyLCAxMjgsIDY4LCA2NSwgCisgICAgODAsIDQ1LCA4MCwgODIsIDY1LCAyMDUsIDY4LCA2NSwgODAsIDQ1LCA4MCwgNzMsIDIwMSwgNjgsIDY1LCA4MCwgNDUsIDc3LCAKKyAgICA4NSwgNzksIDIxNywgNjgsIDY1LCA4MCwgNDUsIDY2LCA4NSwgNzksIDIwNiwgNjgsIDY1LCA4MCwgNDUsIDY2LCA2OSwgCisgICAgMjAxLCA2OCwgNjUsIDIwOCwgNjgsIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCA2OCwgNjUsIDc4LCA3MSwgNzksIDEyOCwgCisgICAgNjgsIDY1LCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA3OCwgMTk5LCA2OCwgNjUsIDc4LCA2OCwgNjUsIDEyOCwgNjgsIDY1LCAKKyAgICA3OCwgNjcsIDY5LCA4MiwgMTI4LCA2OCwgNjUsIDc3LCA4MCwgMTI4LCA2OCwgNjUsIDc3LCAyMDgsIDY4LCA2NSwgNzcsIAorICAgIDc3LCA2NSwgODQsIDY1LCA3OCwgMTI4LCA2OCwgNjUsIDc3LCA3NywgNjUsIDg0LCA2NSwgMjA2LCA2OCwgNjUsIDc3LCA3NywgCisgICAgNjUsIDEyOCwgNjgsIDY1LCA3NywgNzcsIDE5MywgNjgsIDY1LCA3NywgNjUsIDgyLCA4NSwgMTI4LCA2OCwgNjUsIDc2LCAKKyAgICA2OSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgMjEyLCA2OCwgNjUsIAorICAgIDc2LCA2OCwgNjUsIDEyOCwgNjgsIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNjUsIDc2LCA2NSwgODQsIDIwMCwgCisgICAgNjgsIDY1LCA3NiwgNjUsIDg0LCAxMjgsIDY4LCA2NSwgNzMsIDgyLCAxMjgsIDY4LCA2NSwgNzMsIDc4LCA3MSwgMTI4LCAKKyAgICA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgODMsIDcyLCA0NSwgNTAsIDEyOCwgNjgsIDY1LCA3MiwgODksIDY1LCA2NSwgCisgICAgODUsIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDcxLCA4MywgMTI4LCA2OCwgNjUsIDcxLCA3MSwgNjksIDgyLCAxMjgsIDY4LCAKKyAgICA2NSwgNzEsIDcxLCA2OSwgMjEwLCA2OCwgNjUsIDcxLCA2OSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIDY5LCA4MywgCisgICAgMjAwLCA2OCwgNjUsIDcxLCA2NiwgNjUsIDgzLCA3MywgNzgsIDc4LCA2NSwgMTI4LCA2OCwgNjUsIDcxLCA2NSwgMjE4LCAKKyAgICA2OCwgNjUsIDcxLCA2NSwgNzYsIDcxLCA2NSwgMTI4LCA2OCwgNjUsIDE5OSwgNjgsIDY1LCA2OSwgNzgsIDcxLCAxMjgsIAorICAgIDY4LCA2NSwgNjksIDE5OSwgNjgsIDY1LCA2OCwgMTI4LCA2OCwgNjUsIDE5NiwgNjgsIDY1LCA2NSwgODMsIDg1LCAxMjgsIAorICAgIDY4LCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcyLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MSwgCisgICAgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzAsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY5LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAKKyAgICA2OCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjcsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY2LCAxMjgsIDY4LCA0OCwgNTQsIAorICAgIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgMTI4LCA2OCwgNDgsIDU0LCA1NCwgMTI4LCA2OCwgNDgsIDU0LCA1MywgCisgICAgMTI4LCA2OCwgNDgsIDU0LCA1MiwgMTI4LCA2OCwgNDgsIDU0LCA1MSwgMTI4LCA2OCwgNDgsIDU0LCA1MCwgMTI4LCA2OCwgCisgICAgNDgsIDU0LCA0OSwgMTI4LCA2OCwgNDgsIDU0LCA0OCwgMTI4LCA2OCwgNDgsIDUzLCA1NywgMTI4LCA2OCwgNDgsIDUzLCAKKyAgICA1NiwgMTI4LCA2OCwgNDgsIDUzLCA1NSwgMTI4LCA2OCwgNDgsIDUzLCA1NCwgMTI4LCA2OCwgNDgsIDUzLCA1MywgMTI4LCAKKyAgICA2OCwgNDgsIDUzLCA1MiwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTIsIDEyOCwgNjgsIDQ4LCA1MywgNTEsIDEyOCwgNjgsIAorICAgIDQ4LCA1MywgNTAsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUwLCAxMjgsIDY4LCA0OCwgNTMsIDQ5LCAxMjgsIDY4LCA0OCwgCisgICAgNTMsIDQ4LCA3MywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzIsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcxLCAxMjgsIDY4LCAKKyAgICA0OCwgNTMsIDQ4LCA3MCwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjksIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY4LCAxMjgsIAorICAgIDY4LCA0OCwgNTMsIDQ4LCA2NywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY1LCAKKyAgICAxMjgsIDY4LCA0OCwgNTMsIDQ4LCAxMjgsIDY4LCA0OCwgNTIsIDU3LCAxMjgsIDY4LCA0OCwgNTIsIDU2LCA2NSwgMTI4LCAKKyAgICA2OCwgNDgsIDUyLCA1NiwgMTI4LCA2OCwgNDgsIDUyLCA1NSwgMTI4LCA2OCwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNjgsIAorICAgIDQ4LCA1MiwgNTQsIDEyOCwgNjgsIDQ4LCA1MiwgNTMsIDEyOCwgNjgsIDQ4LCA1MiwgNTIsIDEyOCwgNjgsIDQ4LCA1MiwgCisgICAgNTEsIDEyOCwgNjgsIDQ4LCA1MiwgNTAsIDEyOCwgNjgsIDQ4LCA1MiwgNDksIDEyOCwgNjgsIDQ4LCA1MiwgNDgsIDEyOCwgCisgICAgNjgsIDQ4LCA1MSwgNTcsIDEyOCwgNjgsIDQ4LCA1MSwgNTYsIDEyOCwgNjgsIDQ4LCA1MSwgNTUsIDEyOCwgNjgsIDQ4LCAKKyAgICA1MSwgNTQsIDEyOCwgNjgsIDQ4LCA1MSwgNTMsIDEyOCwgNjgsIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDY4LCA0OCwgNTEsIAorICAgIDUyLCAxMjgsIDY4LCA0OCwgNTEsIDUxLCAxMjgsIDY4LCA0OCwgNTEsIDUwLCAxMjgsIDY4LCA0OCwgNTEsIDQ5LCA2NSwgCisgICAgMTI4LCA2OCwgNDgsIDUxLCA0OSwgMTI4LCA2OCwgNDgsIDUxLCA0OCwgMTI4LCA2OCwgNDgsIDUwLCA1NywgMTI4LCA2OCwgCisgICAgNDgsIDUwLCA1NiwgMTI4LCA2OCwgNDgsIDUwLCA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1MCwgNTUsIDEyOCwgNjgsIDQ4LCAKKyAgICA1MCwgNTQsIDEyOCwgNjgsIDQ4LCA1MCwgNTMsIDEyOCwgNjgsIDQ4LCA1MCwgNTIsIDEyOCwgNjgsIDQ4LCA1MCwgNTEsIAorICAgIDEyOCwgNjgsIDQ4LCA1MCwgNTAsIDEyOCwgNjgsIDQ4LCA1MCwgNDksIDEyOCwgNjgsIDQ4LCA1MCwgNDgsIDEyOCwgNjgsIAorICAgIDQ4LCA0OSwgNTcsIDEyOCwgNjgsIDQ4LCA0OSwgNTYsIDEyOCwgNjgsIDQ4LCA0OSwgNTUsIDEyOCwgNjgsIDQ4LCA0OSwgCisgICAgNTQsIDEyOCwgNjgsIDQ4LCA0OSwgNTMsIDEyOCwgNjgsIDQ4LCA0OSwgNTIsIDEyOCwgNjgsIDQ4LCA0OSwgNTEsIDEyOCwgCisgICAgNjgsIDQ4LCA0OSwgNTAsIDEyOCwgNjgsIDQ4LCA0OSwgNDksIDEyOCwgNjgsIDQ4LCA0OSwgNDgsIDEyOCwgNjgsIDQ4LCAKKyAgICA0OCwgNTcsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCAxMjgsIDY4LCA0OCwgNDgsIAorICAgIDU1LCAxMjgsIDY4LCA0OCwgNDgsIDU0LCAxMjgsIDY4LCA0OCwgNDgsIDUzLCAxMjgsIDY4LCA0OCwgNDgsIDUyLCAxMjgsIAorICAgIDY4LCA0OCwgNDgsIDUxLCAxMjgsIDY4LCA0OCwgNDgsIDUwLCAxMjgsIDY4LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA4OSwgCisgICAgODgsIDEyOCwgNjcsIDg5LCA4NCwgMTI4LCA2NywgODksIDgyLCA4OCwgMTI4LCA2NywgODksIDgyLCA2OSwgNzgsIDY1LCAKKyAgICA3MywgMTk1LCA2NywgODksIDgyLCAxMjgsIDY3LCA4OSwgODAsIDgyLCA3MywgNzksIDIxMiwgNjcsIDg5LCA4MCwgNjksIAorICAgIDgyLCA4NSwgODMsIDEyOCwgNjcsIDg5LCA4MCwgMTI4LCA2NywgODksIDc2LCA3MywgNzgsIDY4LCA4MiwgNzMsIDY3LCA3MywgCisgICAgODQsIDg5LCAxMjgsIDY3LCA4OSwgNjcsIDc2LCA3OSwgNzgsIDY5LCAxMjgsIDY3LCA4OSwgNjUsIDEyOCwgNjcsIDg5LCAKKyAgICAxMjgsIDY3LCA4NywgNzksIDc5LCAxMjgsIDY3LCA4NywgNzksIDEyOCwgNjcsIDg3LCA3MywgNzMsIDEyOCwgNjcsIDg3LCAKKyAgICA3MywgMTI4LCA2NywgODcsIDY5LCA3OSwgODIsIDg0LCA3MiwgMTI4LCA2NywgODcsIDY5LCAxMjgsIDY3LCA4NywgNjUsIAorICAgIDY1LCAxMjgsIDY3LCA4NSwgODgsIDEyOCwgNjcsIDg1LCA4NSwgMTI4LCA2NywgODUsIDIxMiwgNjcsIDg1LCA4MywgODQsIAorICAgIDc5LCA3NywgODMsIDEyOCwgNjcsIDg1LCA4MywgODQsIDc5LCA3NywgNjksIDIxMCwgNjcsIDg1LCA4MywgODQsIDY1LCA4MiwgCisgICAgNjgsIDEyOCwgNjcsIDg1LCA4MiwgODgsIDEyOCwgNjcsIDg1LCA4MiwgODYsIDczLCA3OCwgMTk5LCA2NywgODUsIDgyLCAKKyAgICA4NiwgNjksIDE5NiwgNjcsIDg1LCA4MiwgODYsIDY5LCAxMjgsIDY3LCA4NSwgODIsIDg2LCAxOTcsIDY3LCA4NSwgODIsIAorICAgIDgzLCA3MywgODYsIDE5NywgNjcsIDg1LCA4MiwgODIsIDIxNywgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgODQsIDEyOCwgCisgICAgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgMjEyLCA2NywgODUsIDgyLCA3NiwgMjE3LCA2NywgODUsIDgyLCA3NiwgMTI4LCAKKyAgICA2NywgODUsIDgyLCAxMjgsIDY3LCA4NSwgODAsIDEyOCwgNjcsIDg1LCA3OSwgODgsIDEyOCwgNjcsIDg1LCA3OSwgODAsIAorICAgIDEyOCwgNjcsIDg1LCA3OSwgMTI4LCA2NywgODUsIDIwNSwgNjcsIDg1LCA2NiwgNjksIDY4LCAxMjgsIDY3LCA4NSwgNjYsIAorICAgIDE5NywgNjcsIDg1LCA2NSwgODQsIDgyLCA3MywgNzYsIDc2LCA3OSwgMTI4LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgCisgICAgNzYsIDIwNywgNjcsIDg1LCAxMjgsIDY3LCA4MywgNzMsIDEyOCwgNjcsIDgyLCA4OSwgODMsIDg0LCA2NSwgMjA0LCA2NywgCisgICAgODIsIDg5LCA4MCwgODQsIDc5LCA3MSwgODIsIDY1LCA3NywgNzcsIDczLCAxOTUsIDY3LCA4MiwgODksIDczLCA3OCwgMTk5LCAKKyAgICA2NywgODIsIDg1LCA5MCwgNjksIDczLCA4MiwgMjA3LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MywgCisgICAgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MiwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCAKKyAgICA3NiwgNjksIDQ1LCA1MSwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MCwgMTI4LCA2NywgODIsIAorICAgIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDEyOCwgNjcsIDgyLCA3OSwgODcsIDc4LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDczLCA3OCwgMTk5LCA2NywgODIsIDc5LCA4MywgODMsIDcyLCAKKyAgICA2NSwgODQsIDY3LCAyMDAsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDY4LCA0NSwgODQsIDY1LCA3MywgNzYsIDEyOCwgNjcsIAorICAgIDgyLCA3OSwgODMsIDgzLCA2OSwgMTk2LCA2NywgODIsIDc5LCA4MywgODMsIDY2LCA3OSwgNzgsIDY5LCA4MywgMTI4LCA2NywgCisgICAgODIsIDc5LCA4MywgODMsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDIxMSwgNjcsIDgyLCA3OSwgODAsIDEyOCwgNjcsIDgyLCAKKyAgICA3OSwgNzMsIDg4LCAxMjgsIDY3LCA4MiwgNzksIDY3LCA4NSwgMjExLCA2NywgODIsIDc5LCA2NywgNzksIDY4LCA3MywgNzYsIAorICAgIDY5LCAxMjgsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgCisgICAgMjEyLCA2NywgODIsIDY5LCA2OCwgNzMsIDIxMiwgNjcsIDgyLCA2OSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjcsIDgyLCAKKyAgICA2OSwgNjUsIDc3LCAxMjgsIDY3LCA4MiwgNjUsIDY3LCA3NSwgNjksIDgyLCAxMjgsIDY3LCA4MiwgMTI4LCA2NywgNzksIAorICAgIDg4LCAxMjgsIDY3LCA3OSwgODcsIDEyOCwgNjcsIDc5LCAyMTUsIDY3LCA3OSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzksIAorICAgIDg1LCA4MCwgNzYsIDE5NywgNjcsIDc5LCA4NSwgNzgsIDg0LCA3MywgNzgsIDE5OSwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgCisgICAgODIsIDgzLCA3MywgNzgsIDc1LCAxMjgsIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA2NiwgNzksIDgyLCA2OSwgMTI4LCAKKyAgICA2NywgNzksIDg1LCA3OCwgNjcsIDczLCAyMDQsIDY3LCA3OSwgODQsIDEyOCwgNjcsIDc5LCA4MiwgODIsIDY5LCA4MywgODAsIAorICAgIDc5LCA3OCwgNjgsIDIxMSwgNjcsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDEyOCwgNjcsIDc5LCA4MiwgODAsIDgzLCA2OSwgCisgICAgMTI4LCA2NywgNzksIDgyLCA4MCwgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA4MiwgNzksIDc4LCAKKyAgICA3MywgODMsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgCisgICAgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDIxMCwgNjcsIDc5LCA4MCwgODksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCAKKyAgICA2NywgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDIxMiwgNjcsIDc5LCA4MCwgODksIDEyOCwgNjcsIDc5LCA4MCwgODIsIAorICAgIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA2NywgNzksIDgwLCA4MCwgNjksIDgyLCA0NSwgNTAsIDEyOCwgNjcsIDc5LCA4MCwgCisgICAgODAsIDY5LCA4MiwgMTI4LCA2NywgNzksIDgwLCAxMjgsIDY3LCA3OSwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzksIDc1LCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgNjksIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDY5LCAxOTYsIAorICAgIDY3LCA3OSwgNzksIDEyOCwgNjcsIDc5LCA3OCwgODYsIDY5LCA4MiwgNzEsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA4NiwgCisgICAgNjksIDc4LCA3MywgNjksIDc4LCA2NywgMTk3LCA2NywgNzksIDc4LCA4NCwgODIsIDc5LCA3NiwgMTI4LCA2NywgNzksIDc4LCAKKyAgICA4NCwgODIsIDc5LCAyMDQsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNjUsIDgyLCA3MywgNjksIDg0LCA4OSwgMTI4LCA2NywgNzksIAorICAgIDc4LCA4NCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgODIsIDY5LCAKKyAgICAxOTYsIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDIxMCwgNjcsIDc5LCA3OCwgODQsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY5LCA3NywgODAsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgCisgICAgODQsIDY1LCA3MywgNzgsIDIxMSwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCAKKyAgICA4NCwgNjUsIDczLCAyMDYsIDY3LCA3OSwgNzgsIDg0LCA2NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgODIsIAorICAgIDg1LCA2NywgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgODQsIDEyOCwgNjcsIDc5LCA3OCwgCisgICAgODMsIDg0LCA2NSwgNzgsIDIxMiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIDY3LCA4OSwgMTI4LCA2NywgNzksIDc4LCAKKyAgICA4MywgNjksIDY3LCA4NSwgODQsIDczLCA4NiwgMTk3LCA2NywgNzksIDc4LCA3NCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgCisgICAgNzgsIDEyOCwgNjcsIDc5LCA3OCwgNzQsIDg1LCA3MSwgNjUsIDg0LCAxOTcsIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCAKKyAgICA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgNzMsIDY3LCA2NSwgMjA0LCA2NywgNzksIDc4LCA3MSwgODIsIDg1LCA2OSwgNzgsIAorICAgIDIxMiwgNjcsIDc5LCA3OCwgNzEsIDgyLCA2NSwgODQsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgCisgICAgNzgsIDcwLCA4NSwgODMsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDcwLCA3OSwgODUsIDc4LCA2OCwgNjksIDE5NiwgNjcsIDc5LCAKKyAgICA3OCwgNzAsIDc2LCA3MywgNjcsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDcwLCA2OSwgODQsIDg0LCAyMDEsIDY3LCA3OSwgNzgsIAorICAgIDY3LCA2NSwgODYsIDY5LCA0NSwgODMsIDczLCA2OCwgNjksIDE5NiwgNjcsIDc5LCA3OCwgNjcsIDY1LCA4NiwgNjksIDQ1LCAKKyAgICA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDg1LCA4NCwgNjksIAorICAgIDgyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc3LCA4MCwgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgCisgICAgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA2NSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCA3OSwgMjA2LCA2NywgNzksIDc3LCA3NywgNjksIDgyLCA2NywgNzMsIAorICAgIDY1LCAyMDQsIDY3LCA3OSwgNzcsIDc3LCA2NSwgNzgsIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCA2NSwgMTI4LCA2NywgCisgICAgNzksIDc3LCA3NywgMTkzLCA2NywgNzksIDc3LCA2OSwgODQsIDEyOCwgNjcsIDc5LCA3NywgNjYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NiwgODUsIDc3LCA3OCwgMTI4LCA2NywgNzksIDc2LCA3OSwgODIsIDEyOCwgNjcsIDc5LCA3NiwgNzYsIDczLCA4MywgNzMsIAorICAgIDc5LCAyMDYsIDY3LCA3OSwgNzYsIDc2LCAxMjgsIDY3LCA3OSwgNzYsIDE5NiwgNjcsIDc5LCA3MCwgNzAsIDczLCA3OCwgCisgICAgMTI4LCA2NywgNzksIDY5LCA3OCwgNzEsIDEyOCwgNjcsIDc5LCA2OSwgNzgsIDE5OSwgNjcsIDc5LCA2OCwgNjUsIDEyOCwgCisgICAgNjcsIDc5LCA2NywgNzUsIDg0LCA2NSwgNzMsIDIwNCwgNjcsIDc5LCA2NSwgODMsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDc5LCAKKyAgICA2NSwgMTI4LCA2NywgNzksIDEyOCwgNjcsIDc3LCAxMjgsIDY3LCAyMDUsIDY3LCA3NiwgODUsIDgzLCA4NCwgNjksIDIxMCwgCisgICAgNjcsIDc2LCA4NSwgNjYsIDgzLCAxMjgsIDY3LCA3NiwgODUsIDY2LCA0NSwgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDY3LCAKKyAgICA3NiwgODUsIDY2LCAxMjgsIDY3LCA3NiwgODUsIDE5NCwgNjcsIDc2LCA3OSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIAorICAgIDc5LCA4NSwgNjgsIDEyOCwgNjcsIDc2LCA3OSwgODUsIDE5NiwgNjcsIDc2LCA3OSwgODQsIDcyLCA2OSwgODMsIDEyOCwgCisgICAgNjcsIDc2LCA3OSwgODQsIDcyLCAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgODQsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCAKKyAgICA3OCwgNjksIDgzLCA4MywgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIDY4LCAxMjgsIDY3LCA3NiwgNzksIDgzLCAxOTcsIAorICAgIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgMTk3LCA2NywgNzYsIDc5LCA2NywgMjAzLCA2NywgNzYsIDczLCA4NiwgCisgICAgNzMsIDgzLCAxMjgsIDY3LCA3NiwgNzMsIDgwLCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDc2LCA3MywgNzgsIDc1LCAKKyAgICA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgNzgsIDcxLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgNzcsIDY1LCA2NywgODUsIAorICAgIDgzLCAxMjgsIDY3LCA3NiwgNzMsIDcwLCA3MCwgMTI4LCA2NywgNzYsIDczLCA2NywgNzUsIDEyOCwgNjcsIDc2LCA2OSwgCisgICAgNzAsIDQ1LCA1MCwgMTI4LCA2NywgNzYsIDY5LCA3MCwgNDUsIDQ5LCAxMjgsIDY3LCA3NiwgNjksIDcwLCAxMjgsIDY3LCAKKyAgICA3NiwgNjksIDE5OCwgNjcsIDc2LCA2OSwgNjUsIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA2OSwgNjUsIDIxMCwgNjcsIAorICAgIDc2LCA2NSwgODcsIDEyOCwgNjcsIDc2LCA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA2NSwgODAsIDgwLCA2OSwgCisgICAgMjEwLCA2NywgNzYsIDY1LCA3OCwgMTI4LCA2NywgNzYsIDY1LCA3MywgNzcsIDEyOCwgNjcsIDc2LCAxMjgsIDY3LCA3MywgCisgICAgODgsIDEyOCwgNjcsIDczLCA4NiwgNzMsIDc2LCA3MywgNjUsIDc4LCAxMjgsIDY3LCA3MywgODQsIDg5LCA4MywgNjcsIDY1LCAKKyAgICA4MCwgMTk3LCA2NywgNzMsIDg0LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgMjExLCA2NywgNzMsIDgyLCA2NywgODUsIAorICAgIDc3LCA3MCwgNzYsIDY5LCA4OCwgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDc3LCA3MCwgNzYsIDY5LCAyMTYsIDY3LCA3MywgCisgICAgODIsIDY3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDgzLCAxMjgsIDY3LCAKKyAgICA3MywgODIsIDY3LCA3NiwgNjksIDEyOCwgNjcsIDczLCA4MCwgMTI4LCA2NywgNzMsIDc4LCA3OCwgNjUsIDY2LCA2NSwgODIsIAorICAgIDEyOCwgNjcsIDczLCA3OCwgNjksIDc3LCA2NSwgMTI4LCA2NywgNzMsIDczLCAxMjgsIDY3LCA3MywgNjksIDg4LCAxMjgsIAorICAgIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDY3LCAKKyAgICA3MywgNjksIDg1LCA2NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA3MywgCisgICAgNjksIDg1LCA3OCwgNzEsIDEyOCwgNjcsIDczLCA2OSwgODUsIDE5NSwgNjcsIDczLCA2OSwgODQsIDEyOCwgNjcsIDczLCAKKyAgICA2OSwgODAsIDEyOCwgNjcsIDczLCA2OSwgMTI4LCA2NywgNzIsIDg5LCA4OCwgMTI4LCA2NywgNzIsIDg5LCA4NCwgMTI4LCAKKyAgICA2NywgNzIsIDg5LCA4MiwgODgsIDEyOCwgNjcsIDcyLCA4OSwgODIsIDEyOCwgNjcsIDcyLCA4OSwgODAsIDEyOCwgNjcsIAorICAgIDcyLCA4NSwgODgsIDEyOCwgNjcsIDcyLCA4NSwgODIsIDg4LCAxMjgsIDY3LCA3MiwgODUsIDgyLCA2NywgNzIsIDEyOCwgCisgICAgNjcsIDcyLCA4NSwgODIsIDEyOCwgNjcsIDcyLCA4NSwgODAsIDEyOCwgNjcsIDcyLCA4NSwgNzksIDg4LCAxMjgsIDY3LCAKKyAgICA3MiwgODUsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgODAsIDEyOCwgNjcsIDcyLCA4NSwgNzksIDEyOCwgNjcsIAorICAgIDcyLCA4NSwgNzYsIDY1LCAxMjgsIDY3LCA3MiwgODUsIDEyOCwgNjcsIDcyLCA4MiwgODksIDgzLCA2NSwgNzgsIDg0LCA3MiwgCisgICAgNjksIDc3LCA4NSwgNzcsIDEyOCwgNjcsIDcyLCA4MiwgNzksIDc4LCA3OSwgODUsIDEyOCwgNjcsIDcyLCA4MiwgNzksIDc4LCAKKyAgICA3OSwgNzgsIDEyOCwgNjcsIDcyLCA4MiwgNzksIDc3LCAxOTMsIDY3LCA3MiwgODIsIDc5LCAxOTMsIDY3LCA3MiwgODIsIAorICAgIDczLCA4NiwgNzMsIDEyOCwgNjcsIDcyLCA4MiwgNzMsIDgzLCA4NCwgNzcsIDY1LCA4MywgMTI4LCA2NywgNzIsIDgyLCA3MywgCisgICAgODMsIDg0LCA3NywgNjUsIDIxMSwgNjcsIDcyLCA3OSwgODgsIDEyOCwgNjcsIDcyLCA3OSwgODQsIDEyOCwgNjcsIDcyLCAKKyAgICA3OSwgODIsIDY5LCA4NiwgNzcsIDE5MywgNjcsIDcyLCA3OSwgODAsIDEyOCwgNjcsIDcyLCA3OSwgNzUsIDY5LCAxMjgsIAorICAgIDY3LCA3MiwgNzksIDY5LCAxMjgsIDY3LCA3MiwgNzksIDY3LCA3OSwgNzYsIDY1LCA4NCwgMTk3LCA2NywgNzIsIDc5LCA2NSwgCiAgICAgMTI4LCA2NywgNzIsIDIwNywgNjcsIDcyLCA3MywgODQsIDg1LCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCAKICAgICA3MywgNzksIDgzLCAxMjgsIDY3LCA3MiwgNzMsIDg0LCA4NSwgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgCiAgICAgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDcyLCA3MywgODQsIDg1LCA2OSwgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgMTI4LCAKQEAgLTQwNTEsOTA3NSArNDIxNSw5NjA4IEBACiAgICAgMjExLCA2NywgNzIsIDY5LCA4MiwgODIsIDIxNywgNjcsIDcyLCA2OSwgODIsIDgyLCA3MywgNjksIDgzLCAxMjgsIDY3LCAKICAgICA3MiwgNjksIDgxLCA4NSwgNjksIDgyLCA2OSwgMTk2LCA2NywgNzIsIDY5LCA4MCwgMTI4LCA2NywgNzIsIDY5LCAyMDYsIAogICAgIDY3LCA3MiwgNjksIDczLCA3OCwgNjUsIDgwLCAxMjgsIDY3LCA3MiwgNjksIDczLCA3NSwgNzIsIDY5LCA3MywgMTI4LCA2NywgCi0gICAgNzIsIDY5LCA2OSwgODIsIDczLCA3OCwgMTk5LCA2NywgNzIsIDY5LCA2OSwgMTI4LCA2NywgNzIsIDY5LCA2NywgNzUsIAotICAgIDEyOCwgNjcsIDcyLCA2OSwgNjcsIDIwMywgNjcsIDcyLCAxOTcsIDY3LCA3MiwgNjUsIDg4LCAxMjgsIDY3LCA3MiwgNjUsIAotICAgIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDY3LCA3MiwgCi0gICAgNjUsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgMjEyLCA2NywgNzIsIDY1LCAKLSAgICA4MiwgNzMsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgNzMsIDc5LCAyMTIsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIAotICAgIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDcyLCA2NSwgCi0gICAgODIsIDEyOCwgNjcsIDcyLCA2NSwgODAsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDY3LCA3MiwgNjUsIDc4LCAKLSAgICAxMjgsIDY3LCA3MiwgNjUsIDc3LCA3NSwgNzksIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDczLCA3NiwgNzksIDc4LCAxMjgsIAotICAgIDY3LCA3MiwgNjUsIDc3LCA3MywgNzYsIDczLCAxMjgsIDY3LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA2NywgNzIsIDY1LCA3MywgCi0gICAgNzgsIDgzLCAxMjgsIDY3LCA3MiwgNjUsIDY4LCA2NSwgMTI4LCA2NywgNzIsIDY1LCAxOTYsIDY3LCA3MiwgNjUsIDY1LCAKLSAgICAxMjgsIDY3LCA2OSwgODgsIDEyOCwgNjcsIDY5LCA4MiwgNjksIDgzLCAxMjgsIDY3LCA2OSwgODIsIDY5LCA3NywgNzksIAotICAgIDc4LCA4OSwgMTI4LCA2NywgNjksIDgyLCA2OSwgNzUsIDEyOCwgNjcsIDY5LCA4MiwgNDUsIDg3LCA2NSwgMTI4LCA2NywgCi0gICAgNjksIDgwLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIAotICAgIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCAKLSAgICA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgCi0gICAgNjksIDg1LCA3NywgODMsIDczLCA3OSwgODMsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIAotICAgIDc3LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCAKLSAgICA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA2NywgNjksIDc4LCA4NCwgODUsIDgyLCA3MywgNjUsIDIwNCwgNjcsIAotICAgIDY5LCA3OCwgODQsIDgyLCA2OSwgNzYsIDczLCA3OCwgMTk3LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCAxOTYsIDY3LCA2OSwgCi0gICAgNzgsIDg0LCA4MiwgNjksIDEyOCwgNjcsIDY5LCA3OCwgODQsIDgyLCAxOTcsIDY3LCA2OSwgNzgsIDEyOCwgNjcsIDY5LCAKLSAgICA3NiwgODMsIDczLCA4NSwgODMsIDEyOCwgNjcsIDY5LCA3NiwgNjksIDY2LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDY3LCA2OSwgNzMsIDgyLCA4NCwgMTI4LCA2NywgNjksIDczLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NywgNjksIDY5LCAKLSAgICAxMjgsIDY3LCA2OSwgNjgsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY3LCA2OSwgNjgsIDczLCA3NiwgNzYsIDE5MywgNjcsIAotICAgIDY5LCA2OCwgMjAxLCA2NywgNjksIDY3LCA2OSwgNzUsIDEyOCwgNjcsIDY5LCA2NywgNjUsIDc1LCAxMjgsIDY3LCA2OSwgCi0gICAgNjcsIDY1LCAyMDMsIDY3LCA2OSwgNjUsIDc2LCA2NywgMTI4LCA2NywgNjcsIDg1LCAxMjgsIDY3LCA2NywgNzksIDEyOCwgCi0gICAgNjcsIDY3LCA3MywgMTI4LCA2NywgNjcsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3OSwgMTI4LCA2NywgNjcsIDcyLCAKLSAgICA3MywgMTI4LCA2NywgNjcsIDcyLCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDc5LCAxMjgsIDY3LCA2NywgNzIsIAotICAgIDcyLCA3MywgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgMTI4LCA2NywgCi0gICAgNjcsIDcyLCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2NSwgMTI4LCA2NywgNjcsIDcyLCA2OSwgNjksIAorICAgIDcyLCA2OSwgNzMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIDY3LCA3MiwgNjksIDY5LCA4MiwgNzMsIDc4LCAxOTksIDY3LCA3MiwgCisgICAgNjksIDY5LCAxMjgsIDY3LCA3MiwgNjksIDY3LCA3NSwgMTI4LCA2NywgNzIsIDY5LCA2NywgMjAzLCA2NywgNzIsIDE5NywgCisgICAgNjcsIDcyLCA2NSwgODgsIDEyOCwgNjcsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2NywgNzIsIDY1LCAKKyAgICA4NCwgODQsIDY1LCA4NywgNjUsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDg0LCAxMjgsIAorICAgIDY3LCA3MiwgNjUsIDgyLCAyMTIsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA3MywgCisgICAgNzksIDIxMiwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDY1LCAKKyAgICA2NywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MCwgMTI4LCA2NywgNzIsIAorICAgIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDc1LCA3OSwgMTI4LCA2NywgCisgICAgNzIsIDY1LCA3NywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDczLCA3NiwgNzMsIDEyOCwgNjcsIDcyLCAKKyAgICA2NSwgNzUsIDc3LCAxOTMsIDY3LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA2NywgNzIsIDY1LCA3MywgNzgsIDgzLCAxMjgsIAorICAgIDY3LCA3MiwgNjUsIDY4LCA2NSwgMTI4LCA2NywgNzIsIDY1LCAxOTYsIDY3LCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA3MSwgCisgICAgNzQsIDEyOCwgNjcsIDY5LCA4OCwgMTI4LCA2NywgNjksIDgyLCA2OSwgODMsIDEyOCwgNjcsIDY5LCA4MiwgNjksIDc3LCAKKyAgICA3OSwgNzgsIDg5LCAxMjgsIDY3LCA2OSwgODIsIDY5LCA3NSwgMTI4LCA2NywgNjksIDgyLCA0NSwgODcsIDY1LCAxMjgsIAorICAgIDY3LCA2OSwgODAsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCAKKyAgICA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgCisgICAgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIAorICAgIDczLCA2OSwgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCAKKyAgICA4NSwgNzcsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgCisgICAgNzcsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4NSwgODIsIDczLCA2NSwgMjA0LCAKKyAgICA2NywgNjksIDc4LCA4NCwgODIsIDY5LCA3NiwgNzMsIDc4LCAxOTcsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDE5NiwgNjcsIAorICAgIDY5LCA3OCwgODQsIDgyLCA2OSwgMTI4LCA2NywgNjksIDc4LCA4NCwgODIsIDE5NywgNjcsIDY5LCA3OCwgMTI4LCA2NywgCisgICAgNjksIDc2LCA4MywgNzMsIDg1LCA4MywgMTI4LCA2NywgNjksIDc2LCA2OSwgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjcsIDY5LCA3MywgODIsIDg0LCAxMjgsIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY3LCA2OSwgCisgICAgNjksIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgMTkzLCAKKyAgICA2NywgNjksIDY4LCAyMDEsIDY3LCA2OSwgNjcsIDY5LCA3NSwgMTI4LCA2NywgNjksIDY3LCA2NSwgNzUsIDEyOCwgNjcsIAorICAgIDY5LCA2NywgNjUsIDIwMywgNjcsIDY5LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NywgODUsIDEyOCwgNjcsIDY3LCA3OSwgCisgICAgMTI4LCA2NywgNjcsIDczLCAxMjgsIDY3LCA2NywgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDc5LCAxMjgsIDY3LCA2NywgCisgICAgNzIsIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNzksIDEyOCwgNjcsIDY3LCAKKyAgICA3MiwgNzIsIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCAxMjgsIAorICAgIDY3LCA2NywgNzIsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDY5LCA2OSwgCiAgICAgMTI4LCA2NywgNjcsIDcyLCA2OSwgMTI4LCA2NywgNjcsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNjUsIDEyOCwgCi0gICAgNjcsIDY3LCA2OSwgNjksIDEyOCwgNjcsIDY3LCA2OSwgMTI4LCA2NywgNjcsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDY1LCAKLSAgICAxMjgsIDY3LCA2NSwgODksIDc4LCAxMjgsIDY3LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY3LCA2NSwgODgsIAotICAgIDEyOCwgNjcsIDY1LCA4NiwgNjksIDEyOCwgNjcsIDY1LCA4NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDg1LCA3NiwgCi0gICAgNjgsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIDY3LCA2NSwgODQsIDY1LCA4NywgNjUsIAotICAgIDEyOCwgNjcsIDY1LCA4NCwgMTI4LCA2NywgNjUsIDIxMiwgNjcsIDY1LCA4MywgODQsIDc2LCA2OSwgMTI4LCA2NywgNjUsIAotICAgIDgyLCA4OSwgODMsIDg0LCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgODQsIDEyOCwgNjcsIDY1LCA4MiwgMjExLCA2NywgCi0gICAgNjUsIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA2NywgNjUsIDgyLCA4MCwgNjksIDc4LCA4NCwgODIsIDIxNywgNjcsIDY1LCAKLSAgICA4MiwgMjA4LCA2NywgNjUsIDgyLCA3OSwgODUsIDgzLCA2OSwgMjA0LCA2NywgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIAotICAgIDY1LCA4MiwgNzksIDIwNiwgNjcsIDY1LCA4MiwgNzMsIDIwMywgNjcsIDY1LCA4MiwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgCi0gICAgODIsIDY5LCA4NCwgMTI4LCA2NywgNjUsIDgyLCA2OSwgMjEyLCA2NywgNjUsIDgyLCAxOTcsIDY3LCA2NSwgODIsIDY4LCAKLSAgICA4MywgMTI4LCA2NywgNjUsIDgyLCA2OCwgMTI4LCA2NywgNjUsIDgyLCAxOTYsIDY3LCA2NSwgODIsIDEyOCwgNjcsIDY1LCAKLSAgICAyMTAsIDY3LCA2NSwgODAsIDg1LCAyMTIsIDY3LCA2NSwgODAsIDg0LCA3MywgODYsIDY5LCAxMjgsIDY3LCA2NSwgODAsIAotICAgIDgyLCA3MywgNjcsIDc5LCA4MiwgNzgsIDEyOCwgNjcsIDY1LCA4MCwgNzksIDEyOCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgCi0gICAgNzYsIDEyOCwgNjcsIDY1LCA3OCwgODQsIDczLCA3NiwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIAotICAgIDE5OSwgNjcsIDY1LCA3OCwgNjgsIDg5LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCA4NSwgCi0gICAgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgMjEzLCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCAKLSAgICAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgMTkzLCA2NywgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIDY3LCA2NSwgNzgsIAotICAgIDY3LCA2OSwgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCA2NywgNjksIDc2LCAxMjgsIDY3LCA2NSwgCi0gICAgNzgsIDY3LCA2OSwgMjA0LCA2NywgNjUsIDc4LCAxMjgsIDY3LCA2NSwgNzcsIDc4LCA4NSwgMTk1LCA2NywgNjUsIDc3LCAKLSAgICA2OSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzcsIDY5LCA3NiwgMTI4LCA2NywgNjUsIDc2LCA4OSwgNjUsIDEyOCwgNjcsIAotICAgIDY1LCA3NiwgODksIDE5MywgNjcsIDY1LCA3NiwgODgsIDEyOCwgNjcsIDY1LCA3NiwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgCi0gICAgNjksIDc4LCA2OCwgNjUsIDgyLCAxMjgsIDY3LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NSwgNzUsIDgyLCA2NSwgMTI4LCAKLSAgICA2NywgNjUsIDc1LCAxOTcsIDY3LCA2NSwgNjksIDgzLCA4NSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNjgsIDg1LCA2NywgNjksIAotICAgIDg1LCA4MywgMTI4LCA2NywgNjUsIDY4LCAxOTMsIDY3LCA2NSwgNjcsIDg0LCA4NSwgODMsIDEyOCwgNjcsIDY1LCA2NiwgCi0gICAgNzYsIDY5LCA4NywgNjUsIDg5LCAxMjgsIDY3LCA2NSwgNjYsIDY2LCA2NSwgNzEsIDY5LCA0NSwgODQsIDgyLCA2OSwgNjksIAotICAgIDEyOCwgNjcsIDY1LCA2NSwgNzgsIDcxLCAxMjgsIDY3LCA2NSwgNjUsIDczLCAxMjgsIDY3LCAxOTMsIDY3LCA0OCwgNTAsIAotICAgIDUyLCAxMjgsIDY3LCA0OCwgNTAsIDUxLCAxMjgsIDY3LCA0OCwgNTAsIDUwLCAxMjgsIDY3LCA0OCwgNTAsIDQ5LCAxMjgsIAotICAgIDY3LCA0OCwgNTAsIDQ4LCAxMjgsIDY3LCA0OCwgNDksIDU3LCAxMjgsIDY3LCA0OCwgNDksIDU2LCAxMjgsIDY3LCA0OCwgCi0gICAgNDksIDU1LCAxMjgsIDY3LCA0OCwgNDksIDU0LCAxMjgsIDY3LCA0OCwgNDksIDUzLCAxMjgsIDY3LCA0OCwgNDksIDUyLCAKLSAgICAxMjgsIDY3LCA0OCwgNDksIDUxLCAxMjgsIDY3LCA0OCwgNDksIDUwLCAxMjgsIDY3LCA0OCwgNDksIDQ5LCAxMjgsIDY3LCAKLSAgICA0OCwgNDksIDQ4LCA2NSwgMTI4LCA2NywgNDgsIDQ5LCA0OCwgMTI4LCA2NywgNDgsIDQ4LCA1NywgMTI4LCA2NywgNDgsIAotICAgIDQ4LCA1NiwgMTI4LCA2NywgNDgsIDQ4LCA1NSwgMTI4LCA2NywgNDgsIDQ4LCA1NCwgMTI4LCA2NywgNDgsIDQ4LCA1MywgCi0gICAgMTI4LCA2NywgNDgsIDQ4LCA1MiwgMTI4LCA2NywgNDgsIDQ4LCA1MSwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjcsIDEyOCwgCi0gICAgNjcsIDQ4LCA0OCwgNTAsIDY2LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgMTI4LCAKLSAgICA2NywgNDgsIDQ4LCA0OSwgMTI4LCA2NywgNDUsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgNjcsIAotICAgIDQ1LCA1MSwgNTcsIDEyOCwgNjcsIDQ1LCA0OSwgNTYsIDEyOCwgNjYsIDkwLCA4NSwgNzgsIDE5OSwgNjYsIDkwLCA3MiwgCi0gICAgMjAxLCA2NiwgODksIDY5LCA3NiwgNzksIDgyLCA4NSwgODMsIDgzLCA3MywgNjUsIDc4LCA0NSwgODUsIDc1LCA4MiwgNjUsIAotICAgIDczLCA3OCwgNzMsIDY1LCAyMDYsIDY2LCA4OCwgNzEsIDEyOCwgNjYsIDg3LCA3MywgMTI4LCA2NiwgODcsIDY5LCA2OSwgCi0gICAgMTI4LCA2NiwgODcsIDY5LCAxMjgsIDY2LCA4NywgNjUsIDEyOCwgNjYsIDg1LCA4NSwgNzcsIDczLCA4MywgNzIsIDEyOCwgCi0gICAgNjYsIDg1LCA4NCwgODQsIDc5LCA3OCwgMTI4LCA2NiwgODUsIDIxMiwgNjYsIDg1LCA4MywgODQsIDIxMSwgNjYsIDg1LCAKLSAgICA4MywgMjEyLCA2NiwgODUsIDgzLCA4MywgODksIDY5LCA4MiwgODUsIDEyOCwgNjYsIDg1LCAyMTEsIDY2LCA4NSwgODIsIAotICAgIDIxMywgNjYsIDg1LCA4MiwgNTAsIDEyOCwgNjYsIDg1LCAyMTAsIDY2LCA4NSwgNzksIDg4LCAxMjgsIDY2LCA4NSwgNzksIAotICAgIDgwLCAxMjgsIDY2LCA4NSwgNzgsIDc4LCAyMTcsIDY2LCA4NSwgNzgsIDcxLCAxMjgsIDY2LCA4NSwgNzcsIDgwLCAyMTcsIAotICAgIDY2LCA4NSwgNzYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIDc2LCA4NSwgMTk5LCA2NiwgODUsIDc2LCA3NiwgODMsIDY5LCA4OSwgCi0gICAgNjksIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDIxMSwgNjYsIDg1LCA3NiwgNzYsIDY5LCA4NCwgMTI4LCA2NiwgODUsIDc2LCAKLSAgICA3NiwgNjksIDIxMiwgNjYsIDg1LCA3NiwgNzYsIDEyOCwgNjYsIDg1LCA3NiwgNjYsIDEyOCwgNjYsIDg1LCA3NSwgODksIAotICAgIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDcxLCA4MywgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgCi0gICAgNzEsIDEyOCwgNjYsIDg1LCA3MiwgNzMsIDE5NiwgNjYsIDg1LCA3MSwgNzMsIDc4LCA2OSwgODMsIDE5NywgNjYsIDg1LCAKLSAgICA3MSwgMTI4LCA2NiwgODUsIDcwLCA3MCwgNjUsIDc2LCA3OSwgMTI4LCA2NiwgODUsIDY3LCA3NSwgNzYsIDY5LCAxMjgsIAotICAgIDY2LCA4MywgODQsIDY1LCA4MiwgMTI4LCA2NiwgODMsIDc1LCA4NSwgMjEwLCA2NiwgODMsIDc1LCA2NSwgMTczLCA2NiwgCi0gICAgODMsIDY4LCA4NSwgMjExLCA2NiwgODIsIDg1LCA4MywgNzIsIDEyOCwgNjYsIDgyLCA4NSwgODMsIDIwMCwgNjYsIDgyLCAKLSAgICA3OSwgNzgsIDkwLCA2OSwgMTI4LCA2NiwgODIsIDc5LCA3NSwgNjksIDIwNiwgNjYsIDgyLCA3OSwgNjUsIDE5NiwgNjYsIAotICAgIDgyLCA3MywgODMsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCA4MywgMjExLCA2NiwgCi0gICAgODIsIDczLCA2OSwgNzAsIDY3LCA2NSwgODMsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIDY4LCA3MSwgMTk3LCA2NiwgODIsIDczLCAKLSAgICA2OCwgMTk3LCA2NiwgODIsIDczLCA2NywgNzUsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDczLCA4MywgMTI4LCA2NiwgODIsIAotICAgIDY5LCA4NiwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY2LCA4MiwgNjksIDg2LCAxOTcsIDY2LCA4MiwgCi0gICAgNjksIDY1LCA4NCwgMjAwLCA2NiwgODIsIDY5LCA2NSwgNzUsIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIDY2LCAKLSAgICA4MiwgNjksIDY1LCA2OCwgMTI4LCA2NiwgODIsIDY4LCAxOTMsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDczLCA3OCwgCi0gICAgMTk5LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCAxMjgsIDY2LCA4MiwgNjUsIDc4LCA2NywgMjAwLCA2NiwgODIsIDY1LCAKLSAgICA3NSwgNjcsIDY5LCA4NCwgMTI4LCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgNjksIDE5NiwgNjYsIDgyLCA2NSwgNjcsIAotICAgIDc1LCA2OSwgMjEyLCA2NiwgODIsIDY1LCA2NywgNjksIDEyOCwgNjYsIDgxLCAxMjgsIDY2LCA3OSwgODksIDEyOCwgNjYsIAotICAgIDc5LCA4NywgODQsIDczLCA2OSwgMTI4LCA2NiwgNzksIDg3LCA4NCwgNzMsIDE5NywgNjYsIDc5LCA4NywgNzYsIDczLCA3OCwgCi0gICAgNzEsIDEyOCwgNjYsIDc5LCA4NywgNzYsIDEyOCwgNjYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDY2LCA3OSwgMjE1LCA2NiwgCi0gICAgNzksIDg1LCA4MSwgODUsIDY5LCA4NCwgMTI4LCA2NiwgNzksIDg1LCA3OCwgNjgsIDY1LCA4MiwgMjE3LCA2NiwgNzksIDg0LCAKLSAgICA4NCwgNzksIDc3LCA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCAxMjgsIAotICAgIDY2LCA3OSwgODQsIDg0LCA3OSwgMjA1LCA2NiwgNzksIDg0LCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA3OSwgODQsIDg0LCA3NiwgCi0gICAgMTk3LCA2NiwgNzksIDg0LCAyMDAsIDY2LCA3OSwgODIsIDg1LCA4NCwgNzksIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCAKLSAgICA0NSwgNTEsIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCA0NSwgNTAsIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCAxMjgsIAotICAgIDY2LCA3OSwgNzksIDg0LCA4MywgMTI4LCA2NiwgNzksIDc5LCA4NCwgMTI4LCA2NiwgNzksIDc5LCA3NywgNjksIDgyLCA2NSwgCi0gICAgNzgsIDcxLCAxMjgsIDY2LCA3OSwgNzksIDc1LCA4MywgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgNzUsIAotICAgIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDc3LCA2NSwgODIsIDIwMywgNjYsIDc5LCA3OCwgNjksIDEyOCwgNjYsIDc5LCA3NywgCi0gICAgNjYsIDEyOCwgNjYsIDc5LCA3NiwgODQsIDEyOCwgNjYsIDc5LCA3NiwgMjEyLCA2NiwgNzksIDY4LCA4OSwgMTI4LCA2NiwgCi0gICAgNzksIDY1LCA4MiwgMTI4LCA2NiwgNzksIDY1LCAxMjgsIDY2LCA3NiwgODUsIDY5LCAxMjgsIDY2LCA3NiwgODUsIDE5NywgCi0gICAgNjYsIDc2LCA3OSwgODcsIDcwLCA3MywgODMsIDcyLCAxMjgsIDY2LCA3NiwgNzksIDgzLCA4MywgNzksIDc3LCAxMjgsIDY2LCAKLSAgICA3NiwgNzksIDc5LCA2OCwgMTI4LCA2NiwgNzYsIDc5LCA3OCwgMTk2LCA2NiwgNzYsIDc5LCA2NywgNzUsIDEyOCwgNjYsIAotICAgIDc2LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2NiwgNzYsIDY1LCA3OCwgNzUsIDEyOCwgNjYsIDc2LCA2NSwgNzgsIDIwMywgCi0gICAgNjYsIDc2LCA2NSwgNjgsIDE5NywgNjYsIDc2LCA2NSwgNjcsIDc1LCA3MCwgNzksIDc5LCAyMTIsIDY2LCA3NiwgNjUsIDY3LCAKLSAgICA3NSwgNDUsIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA2NiwgNzYsIDY1LCA2NywgNzUsIDQ1LCA3MCwgNjksIDY1LCA4NCwgCi0gICAgNzIsIDY5LCA4MiwgNjksIDE5NiwgNjYsIDc2LCA2NSwgNjcsIDc1LCAxMjgsIDY2LCA3NSwgNjUsIDE3MywgNjYsIDczLCAKLSAgICA4NCwgODQsIDY5LCA4MiwgMTI4LCA2NiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDczLCA4MywgNzcsIDg1LCA4NCwgCi0gICAgMjAwLCA2NiwgNzMsIDgzLCA3NywgNzMsIDc2LCA3NiwgNjUsIDIwMCwgNjYsIDczLCA4MywgNzIsIDc5LCA4MCwgMTI4LCAKLSAgICA2NiwgNzMsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDczLCA4MywgNjUsIDcyLCAxMjgsIDY2LCA3MywgODIsIAotICAgIDg1LCAxMjgsIDY2LCA3MywgODIsIDg0LCA3MiwgNjgsIDY1LCAyMTcsIDY2LCA3MywgODIsIDcxLCA2NSwgMTI4LCA2NiwgCi0gICAgNzMsIDgyLCA2OCwgMTI4LCA2NiwgNzMsIDc5LCA3MiwgNjUsIDkwLCA2NSwgODIsIDE5NiwgNjYsIDczLCA3OCwgNzksIDY3LCAKLSAgICA4NSwgNzYsIDY1LCAyMTAsIDY2LCA3MywgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjYsIDczLCA3OCwgNjgsIDczLCAxMjgsIAotICAgIDY2LCA3MywgNzgsIDY1LCA4MiwgMjE3LCA2NiwgNzMsIDc2LCA3NiwgNzMsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY2LCA3MywgCi0gICAgNzYsIDY1LCA2NiwgNzMsIDY1LCAyMDQsIDY2LCA3MywgNzUsIDczLCA3OCwgNzMsIDEyOCwgNjYsIDczLCA3MSwgMTI4LCAKLSAgICA2NiwgNzMsIDE5OSwgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIDczLCA2OCwgNjksIDc4LCA4NCwgNjUsIDIwNCwgNjYsIAotICAgIDczLCA2NywgODksIDY3LCA3NiwgNzMsIDgzLCA4NCwgMTI4LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA2OSwgODMsIDEyOCwgCi0gICAgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNjksIDEyOCwgNjYsIDczLCA2NywgNjksIDgwLCA4MywgMTI4LCA2NiwgNzMsIDY2LCAKLSAgICA3NiwgNjksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDY2LCA3MywgNjYsIDEyOCwgNjYsIDIwMSwgNjYsIDcyLCA4NSwgMTI4LCAKLSAgICA2NiwgNzIsIDc5LCA3OSwgMTI4LCA2NiwgNzIsIDc5LCAxMjgsIDY2LCA3MiwgNzMsIDEyOCwgNjYsIDcyLCA2OSwgODQsIAotICAgIDcyLCAxMjgsIDY2LCA3MiwgNjksIDY5LCAxMjgsIDY2LCA3MiwgNjksIDEyOCwgNjYsIDcyLCA2NSwgODQsIDg0LCA3MywgCi0gICAgODAsIDgyLCA3OSwgNzYsIDIxMywgNjYsIDcyLCA2NSwgNzcsIDEyOCwgNjYsIDcyLCA2NSwgMTI4LCA2NiwgNjksIDg5LCAKLSAgICA4OSwgNjUsIDc2LCAxMjgsIDY2LCA2OSwgODgsIDEyOCwgNjYsIDY5LCA4NiwgNjksIDgyLCA2NSwgNzEsIDY5LCAxMjgsIAotICAgIDY2LCA2OSwgODQsIDg3LCA2OSwgNjksIDc4LCAxMjgsIDY2LCA2OSwgODQsIDg3LCA2OSwgNjksIDIwNiwgNjYsIDY5LCA4NCwgCi0gICAgNzIsIDEyOCwgNjYsIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCA4NCwgMTkzLCA2NiwgNjksIDIxMiwgNjYsIDY5LCA4MywgCi0gICAgNzMsIDY4LCAxOTcsIDY2LCA2OSwgODIsIDc1LCA2NSwgNzgsIDY1LCAyMDYsIDY2LCA2OSwgODIsIDY2LCA2OSwgMjEwLCAKLSAgICA2NiwgNjksIDgwLCAxMjgsIDY2LCA2OSwgNzksIDgyLCAxOTUsIDY2LCA2OSwgNzgsIDkwLCA2OSwgNzgsIDE5NywgNjYsIAotICAgIDY5LCA3OCwgODQsIDIwNywgNjYsIDY5LCA3OCwgNjgsIDY5LCAxMjgsIDY2LCA2OSwgNzgsIDY4LCAxMjgsIDY2LCA2OSwgCi0gICAgMjA2LCA2NiwgNjksIDc2LCA4NCwgMTI4LCA2NiwgNjksIDc2LCAyMTIsIDY2LCA2OSwgNzYsIDc5LCAyMTUsIDY2LCA2OSwgCi0gICAgNzYsIDc2LCAxMjgsIDY2LCA2OSwgNzYsIDIwNCwgNjYsIDY5LCA3NiwgNzEsIDg0LCA3MiwgNzksIDIxMCwgNjYsIDY5LCAKLSAgICA3MywgODQsIDcyLCAxMjgsIDY2LCA2OSwgNzIsIDczLCA3OCwgMTk2LCA2NiwgNjksIDcyLCA2OSwgNzIsIDEyOCwgNjYsIAotICAgIDY5LCA3MiwgNjksIDIwMCwgNjYsIDY5LCA3MiwgMTI4LCA2NiwgNjksIDIwMCwgNjYsIDY5LCA3MSwgNzMsIDc4LCA3OCwgCi0gICAgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNjksIDcxLCA3MywgNzgsIDc4LCA2OSwgODIsIDEyOCwgNjYsIDY5LCA3MSwgNzMsIAotICAgIDIwNiwgNjYsIDY5LCA3MCwgNzksIDgyLCAxOTcsIDY2LCA2OSwgNjksIDg0LCA3NiwgNjksIDEyOCwgNjYsIDY5LCA2OSwgCi0gICAgODQsIDY1LCAxMjgsIDY2LCA2OSwgNjksIDIxMCwgNjYsIDY5LCA2OSwgNzIsIDczLCA4NiwgNjksIDEyOCwgNjYsIDY5LCAKLSAgICA2OSwgNzIsIDEyOCwgNjYsIDY5LCA2OSwgMjAwLCA2NiwgNjksIDY3LCA2NSwgODUsIDgzLCA2OSwgMTI4LCA2NiwgNjksIAotICAgIDY1LCA4NiwgNjksIDIxMCwgNjYsIDY5LCA2NSwgODQsIDczLCA3OCwgMTk5LCA2NiwgNjksIDY1LCA4NCwgMTI4LCA2NiwgCi0gICAgNjksIDY1LCAyMTAsIDY2LCA2OSwgNjUsIDc4LCAxMjgsIDY2LCA2OSwgNjUsIDc3LCA2OSwgMTk2LCA2NiwgNjcsIDY1LCAKLSAgICA2OCwgMTI4LCA2NiwgNjcsIDY1LCAxOTYsIDY2LCA2NiwgODksIDg4LCAxMjgsIDY2LCA2NiwgODksIDg0LCAxMjgsIDY2LCAKLSAgICA2NiwgODksIDgwLCAxMjgsIDY2LCA2NiwgODksIDEyOCwgNjYsIDY2LCA4NSwgODgsIDEyOCwgNjYsIDY2LCA4NSwgODQsIAotICAgIDEyOCwgNjYsIDY2LCA4NSwgODIsIDg4LCAxMjgsIDY2LCA2NiwgODUsIDgyLCAxMjgsIDY2LCA2NiwgODUsIDgwLCAxMjgsIAotICAgIDY2LCA2NiwgODUsIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgODAsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDEyOCwgCi0gICAgNjYsIDY2LCA4NSwgMTI4LCA2NiwgNjYsIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDc5LCA4NCwgMTI4LCA2NiwgNjYsIDc5LCAKLSAgICA4MCwgMTI4LCA2NiwgNjYsIDc5LCAxMjgsIDY2LCA2NiwgNzMsIDg4LCAxMjgsIDY2LCA2NiwgNzMsIDgwLCAxMjgsIDY2LCAKLSAgICA2NiwgNzMsIDY5LCA4OCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIDY2LCA3MywgNjksIDgwLCAxMjgsIAotICAgIDY2LCA2NiwgNzMsIDY5LCAxMjgsIDY2LCA2NiwgNzMsIDEyOCwgNjYsIDY2LCA2OSwgODgsIDEyOCwgNjYsIDY2LCA2OSwgCi0gICAgODAsIDEyOCwgNjYsIDY2LCA2OSwgNjksIDEyOCwgNjYsIDY2LCA2OSwgMTI4LCA2NiwgNjYsIDY1LCA4OCwgMTI4LCA2NiwgCi0gICAgNjYsIDY1LCA4NCwgMTI4LCA2NiwgNjYsIDY1LCA4MCwgMTI4LCA2NiwgNjYsIDY1LCA2NSwgMTI4LCA2NiwgNjYsIDY1LCAKLSAgICAxMjgsIDY2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY2LCA2NSwgODUsIDEyOCwgNjYsIDY1LCA4NCwgODQsIAotICAgIDY5LCA4MiwgODksIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDg0LCA4NSwgNjYsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDY1LCA3NywgCi0gICAgNjUsIDgzLCA2NSwgODQsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDEyOCwgNjYsIDY1LCA4NCwgMjAwLCA2NiwgNjUsIDg0LCAKLSAgICA2NSwgMjAzLCA2NiwgNjUsIDgzLCA4MywgNjUsIDEyOCwgNjYsIDY1LCA4MywgNzUsIDY5LCA4NCwgNjYsIDY1LCA3NiwgCi0gICAgMjA0LCA2NiwgNjUsIDgzLCA3MiwgNzUsIDczLCAyMTAsIDY2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgODMsIDY5LCAKLSAgICA2NiwgNjUsIDc2LCA3NiwgMTI4LCA2NiwgNjUsIDgzLCA2OSwgMTI4LCA2NiwgNjUsIDgzLCAxOTcsIDY2LCA2NSwgODIsIAotICAgIDgzLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA3MywgNjksIDgyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNzUsIDcyLCAKLSAgICAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNjksIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTcsIDY2LCA2NSwgODIsIAotICAgIDc2LCA3MywgNzgsIDY5LCAxMjgsIDY2LCA2NSwgODIsIDc2LCA2OSwgODksIDEyOCwgNjYsIDY1LCA4MiwgNzMsIDg5LCA3OSwgCi0gICAgNzksIDgzLCA2NSwgNzgsIDEyOCwgNjYsIDY1LCA4MiwgNjYsIDY5LCAyMTAsIDY2LCA2NSwgODIsIDY1LCA1MCwgMTI4LCAKLSAgICA2NiwgNjUsIDIxMCwgNjYsIDY1LCA3OCwgODQsIDc5LCA2NywgMTI4LCA2NiwgNjUsIDc4LCA3NSwgNzgsIDc5LCA4NCwgCi0gICAgMTk3LCA2NiwgNjUsIDc4LCA3NSwgMTI4LCA2NiwgNjUsIDc4LCAyMDMsIDY2LCA2NSwgNzgsIDY4LCAxMjgsIDY2LCA2NSwgCi0gICAgNzgsIDY1LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA3OCwgNTAsIDEyOCwgNjYsIDY1LCA3OCwgMTc4LCA2NiwgNjUsIDc3LCAKLSAgICA2NiwgNzksIDc5LCA4MywgMTI4LCA2NiwgNjUsIDc3LCA2NiwgNzksIDc5LCAxMjgsIDY2LCA2NSwgNzYsIDg1LCA2OCwgNjUsIAotICAgIDEyOCwgNjYsIDY1LCA3NiwgNzYsIDc5LCAyMTIsIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCA0NSwgODMsIDgwLCA3OSwgCi0gICAgNzUsIDY5LCAxOTYsIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCAxMjgsIDY2LCA2NSwgNzYsIDY1LCA3MSwgMTI4LCAKLSAgICA2NiwgNjUsIDc2LCAxMjgsIDY2LCA2NSwgMjA0LCA2NiwgNjUsIDczLCA4MiwgNzUsIDY1LCA3OCwgMTI4LCA2NiwgNjUsIAotICAgIDczLCA3NywgNjUsIDczLCAxMjgsIDY2LCA2NSwgNzIsIDg0LCAxMjgsIDY2LCA2NSwgNzIsIDczLCA4MiwgNzEsIDc5LCA3NywgCi0gICAgODUsIDc1LCA3MiwgNjUsIDEyOCwgNjYsIDY1LCA3MiwgNjUsIDgyLCA1MCwgMTI4LCA2NiwgNjUsIDcxLCA3MSwgNjUsIDcxLCAKLSAgICAxOTcsIDY2LCA2NSwgNzEsIDY1LCAxMjgsIDY2LCA2NSwgNzEsIDUxLCAxMjgsIDY2LCA2NSwgMTk5LCA2NiwgNjUsIDY4LCAKLSAgICA3MSwgNjksIDgyLCAxMjgsIDY2LCA2NSwgNjgsIDcxLCA2OSwgMTI4LCA2NiwgNjUsIDY4LCAxMjgsIDY2LCA2NSwgNjcsIAotICAgIDg0LCA4MiwgNzMsIDY1LCAyMDYsIDY2LCA2NSwgNjcsIDc1LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgNjYsIDY1LCA2NywgCi0gICAgNzUsIDgzLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgODMsIDIwMCwgNjYsIDY1LCAKLSAgICA2NywgNzUsIDcyLCA2NSwgNzgsIDE5NiwgNjYsIDY1LCA2NywgNzUsIDQ1LCA4NCwgNzMsIDc2LCA4NCwgNjksIDE5NiwgNjYsIAotICAgIDY1LCA2NywgNzUsIDEyOCwgNjYsIDY1LCA2NywgMjAzLCA2NiwgNjUsIDY2LCA4OSwgMTI4LCA2NiwgNjUsIDY2LCAyMTcsIAotICAgIDY2LCA2NSwgNjUsIDgyLCA2OSwgODIsIDg1LCAxMjgsIDY2LCA1MSwgNDgsIDUzLCAxMjgsIDY2LCA1MCwgNTMsIDU3LCAKLSAgICAxMjgsIDY2LCA1MCwgNTMsIDU2LCAxMjgsIDY2LCA1MCwgNTMsIDU1LCAxMjgsIDY2LCA1MCwgNTMsIDU0LCAxMjgsIDY2LCAKLSAgICA1MCwgNTMsIDUzLCAxMjgsIDY2LCA1MCwgNTMsIDE4MCwgNjYsIDUwLCA1MywgNTEsIDEyOCwgNjYsIDUwLCA1MywgNTAsIAotICAgIDEyOCwgNjYsIDUwLCA1MywgNDksIDEyOCwgNjYsIDUwLCA1MywgNDgsIDEyOCwgNjYsIDUwLCA1MiwgNTcsIDEyOCwgNjYsIAotICAgIDUwLCA1MiwgNTYsIDEyOCwgNjYsIDUwLCA1MiwgMTgzLCA2NiwgNTAsIDUyLCA1NCwgMTI4LCA2NiwgNTAsIDUyLCA1MywgCi0gICAgMTI4LCA2NiwgNTAsIDUyLCAxNzksIDY2LCA1MCwgNTIsIDE3OCwgNjYsIDUwLCA1MiwgMTc3LCA2NiwgNTAsIDUyLCAxNzYsIAotICAgIDY2LCA1MCwgNTEsIDU0LCAxMjgsIDY2LCA1MCwgNTEsIDUyLCAxMjgsIDY2LCA1MCwgNTEsIDE3OSwgNjYsIDUwLCA1MSwgCi0gICAgNTAsIDEyOCwgNjYsIDUwLCA1MSwgMTc3LCA2NiwgNTAsIDUxLCAxNzYsIDY2LCA1MCwgNTAsIDU3LCAxMjgsIDY2LCA1MCwgCi0gICAgNTAsIDU2LCAxMjgsIDY2LCA1MCwgNTAsIDU1LCAxMjgsIDY2LCA1MCwgNTAsIDU0LCAxMjgsIDY2LCA1MCwgNTAsIDE4MSwgCi0gICAgNjYsIDUwLCA1MCwgNTAsIDEyOCwgNjYsIDUwLCA1MCwgNDksIDEyOCwgNjYsIDUwLCA1MCwgMTc2LCA2NiwgNTAsIDQ5LCAKLSAgICA1NywgMTI4LCA2NiwgNTAsIDQ5LCA1NiwgMTI4LCA2NiwgNTAsIDQ5LCA1NSwgMTI4LCA2NiwgNTAsIDQ5LCA1NCwgMTI4LCAKLSAgICA2NiwgNTAsIDQ5LCA1MywgMTI4LCA2NiwgNTAsIDQ5LCA1MiwgMTI4LCA2NiwgNTAsIDQ5LCA1MSwgMTI4LCA2NiwgNTAsIAotICAgIDQ5LCA1MCwgMTI4LCA2NiwgNTAsIDQ5LCA0OSwgMTI4LCA2NiwgNTAsIDQ5LCA0OCwgMTI4LCA2NiwgNTAsIDQ4LCA1NywgCi0gICAgMTI4LCA2NiwgNTAsIDQ4LCA1NiwgMTI4LCA2NiwgNTAsIDQ4LCA1NSwgMTI4LCA2NiwgNTAsIDQ4LCA1NCwgMTI4LCA2NiwgCi0gICAgNTAsIDQ4LCA1MywgMTI4LCA2NiwgNTAsIDQ4LCA1MiwgMTI4LCA2NiwgNTAsIDQ4LCA1MSwgMTI4LCA2NiwgNTAsIDQ4LCAKLSAgICA1MCwgMTI4LCA2NiwgNTAsIDQ4LCA0OSwgMTI4LCA2NiwgNTAsIDQ4LCA0OCwgMTI4LCA2NiwgNDksIDU3LCAxNzcsIDY2LCAKLSAgICA0OSwgNTcsIDQ4LCAxMjgsIDY2LCA0OSwgNTYsIDU3LCAxMjgsIDY2LCA0OSwgNTYsIDUzLCAxMjgsIDY2LCA0OSwgNTYsIAotICAgIDUyLCAxMjgsIDY2LCA0OSwgNTYsIDUxLCAxMjgsIDY2LCA0OSwgNTYsIDUwLCAxMjgsIDY2LCA0OSwgNTYsIDQ5LCAxMjgsIAotICAgIDY2LCA0OSwgNTYsIDQ4LCAxMjgsIDY2LCA0OSwgNTUsIDU3LCAxMjgsIDY2LCA0OSwgNTUsIDU2LCAxMjgsIDY2LCA0OSwgCi0gICAgNTUsIDU1LCAxMjgsIDY2LCA0OSwgNTUsIDE4MiwgNjYsIDQ5LCA1NSwgNTIsIDEyOCwgNjYsIDQ5LCA1NSwgMTc5LCA2NiwgCi0gICAgNDksIDU1LCA1MCwgMTI4LCA2NiwgNDksIDU1LCA0OSwgMTI4LCA2NiwgNDksIDU1LCA0OCwgMTI4LCA2NiwgNDksIDU0LCAKLSAgICA1NywgMTI4LCA2NiwgNDksIDU0LCA1NiwgMTI4LCA2NiwgNDksIDU0LCA1NSwgMTI4LCA2NiwgNDksIDU0LCA1NCwgMTI4LCAKLSAgICA2NiwgNDksIDU0LCA1MywgMTI4LCA2NiwgNDksIDU0LCA1MiwgMTI4LCA2NiwgNDksIDU0LCAxNzksIDY2LCA0OSwgNTQsIAotICAgIDE3OCwgNjYsIDQ5LCA1NCwgNDksIDEyOCwgNjYsIDQ5LCA1NCwgNDgsIDEyOCwgNjYsIDQ5LCA1MywgMTg1LCA2NiwgNDksIAotICAgIDUzLCA1NiwgMTI4LCA2NiwgNDksIDUzLCA1NSwgMTI4LCA2NiwgNDksIDUzLCAxODIsIDY2LCA0OSwgNTMsIDUzLCAxMjgsIAotICAgIDY2LCA0OSwgNTMsIDUyLCAxMjgsIDY2LCA0OSwgNTMsIDUxLCAxMjgsIDY2LCA0OSwgNTMsIDUwLCAxMjgsIDY2LCA0OSwgCi0gICAgNTMsIDE3NywgNjYsIDQ5LCA1MywgNDgsIDEyOCwgNjYsIDQ5LCA1MiwgNTQsIDEyOCwgNjYsIDQ5LCA1MiwgMTgxLCA2NiwgCi0gICAgNDksIDUyLCA1MCwgMTI4LCA2NiwgNDksIDUyLCAxNzcsIDY2LCA0OSwgNTIsIDE3NiwgNjYsIDQ5LCA1MSwgMTgxLCA2NiwgCi0gICAgNDksIDUxLCAxNzksIDY2LCA0OSwgNTEsIDUwLCAxMjgsIDY2LCA0OSwgNTEsIDE3NywgNjYsIDQ5LCA1MSwgMTc2LCA2NiwgCi0gICAgNDksIDUwLCAxODQsIDY2LCA0OSwgNTAsIDE4MywgNjYsIDQ5LCA1MCwgMTgxLCA2NiwgNDksIDUwLCAxNzksIDY2LCA0OSwgCi0gICAgNTAsIDE3OCwgNjYsIDQ5LCA1MCwgMTc3LCA2NiwgNDksIDUwLCAxNzYsIDY2LCA0OSwgNDgsIDU3LCAyMDUsIDY2LCA0OSwgCi0gICAgNDgsIDU3LCAxOTgsIDY2LCA0OSwgNDgsIDU2LCAyMDUsIDY2LCA0OSwgNDgsIDU2LCAxOTgsIDY2LCA0OSwgNDgsIDU1LCAKLSAgICAyMDUsIDY2LCA0OSwgNDgsIDU1LCAxOTgsIDY2LCA0OSwgNDgsIDU0LCAyMDUsIDY2LCA0OSwgNDgsIDU0LCAxOTgsIDY2LCAKLSAgICA0OSwgNDgsIDUzLCAyMDUsIDY2LCA0OSwgNDgsIDUzLCAxOTgsIDY2LCA0OSwgNDgsIDE4MSwgNjYsIDQ5LCA0OCwgMTgwLCAKLSAgICA2NiwgNDksIDQ4LCAxNzgsIDY2LCA0OSwgNDgsIDE3NiwgNjYsIDQ4LCA1NywgMTc3LCA2NiwgNDgsIDU3LCAxNzYsIDY2LCAKLSAgICA0OCwgNTYsIDU3LCAxMjgsIDY2LCA0OCwgNTYsIDE4MywgNjYsIDQ4LCA1NiwgNTQsIDEyOCwgNjYsIDQ4LCA1NiwgMTgxLCAKLSAgICA2NiwgNDgsIDU2LCA1MSwgMTI4LCA2NiwgNDgsIDU2LCA1MCwgMTI4LCA2NiwgNDgsIDU2LCAxNzcsIDY2LCA0OCwgNTYsIAotICAgIDE3NiwgNjYsIDQ4LCA1NSwgNTcsIDEyOCwgNjYsIDQ4LCA1NSwgMTg0LCA2NiwgNDgsIDU1LCAxODMsIDY2LCA0OCwgNTUsIAotICAgIDE4MiwgNjYsIDQ4LCA1NSwgMTgxLCA2NiwgNDgsIDU1LCAxODAsIDY2LCA0OCwgNTUsIDE3OSwgNjYsIDQ4LCA1NSwgMTc4LCAKLSAgICA2NiwgNDgsIDU1LCAxNzcsIDY2LCA0OCwgNTUsIDE3NiwgNjYsIDQ4LCA1NCwgMTg1LCA2NiwgNDgsIDU0LCAxODQsIDY2LCAKLSAgICA0OCwgNTQsIDE4MywgNjYsIDQ4LCA1NCwgMTgyLCA2NiwgNDgsIDU0LCAxODEsIDY2LCA0OCwgNTQsIDUyLCAxMjgsIDY2LCAKLSAgICA0OCwgNTQsIDUxLCAxMjgsIDY2LCA0OCwgNTQsIDE3OCwgNjYsIDQ4LCA1NCwgMTc3LCA2NiwgNDgsIDU0LCAxNzYsIDY2LCAKLSAgICA0OCwgNTMsIDE4NSwgNjYsIDQ4LCA1MywgMTg0LCA2NiwgNDgsIDUzLCAxODMsIDY2LCA0OCwgNTMsIDU0LCAxMjgsIDY2LCAKLSAgICA0OCwgNTMsIDE4MSwgNjYsIDQ4LCA1MywgMTgwLCA2NiwgNDgsIDUzLCAxNzksIDY2LCA0OCwgNTMsIDE3OCwgNjYsIDQ4LCAKLSAgICA1MywgMTc3LCA2NiwgNDgsIDUzLCAxNzYsIDY2LCA0OCwgNTIsIDU3LCAxMjgsIDY2LCA0OCwgNTIsIDE4NCwgNjYsIDQ4LCAKLSAgICA1MiwgNTUsIDEyOCwgNjYsIDQ4LCA1MiwgMTgyLCA2NiwgNDgsIDUyLCAxODEsIDY2LCA0OCwgNTIsIDE4MCwgNjYsIDQ4LCAKLSAgICA1MiwgMTc5LCA2NiwgNDgsIDUyLCAxNzgsIDY2LCA0OCwgNTIsIDE3NywgNjYsIDQ4LCA1MiwgMTc2LCA2NiwgNDgsIDUxLCAKLSAgICAxODUsIDY2LCA0OCwgNTEsIDE4NCwgNjYsIDQ4LCA1MSwgMTgzLCA2NiwgNDgsIDUxLCAxODIsIDY2LCA0OCwgNTEsIDUyLCAKLSAgICAxMjgsIDY2LCA0OCwgNTEsIDE3OSwgNjYsIDQ4LCA1MSwgMTc4LCA2NiwgNDgsIDUxLCAxNzcsIDY2LCA0OCwgNTEsIDE3NiwgCi0gICAgNjYsIDQ4LCA1MCwgMTg1LCA2NiwgNDgsIDUwLCAxODQsIDY2LCA0OCwgNTAsIDE4MywgNjYsIDQ4LCA1MCwgMTgyLCA2NiwgCi0gICAgNDgsIDUwLCAxODEsIDY2LCA0OCwgNTAsIDE4MCwgNjYsIDQ4LCA1MCwgMTc5LCA2NiwgNDgsIDUwLCA1MCwgMTI4LCA2NiwgCi0gICAgNDgsIDUwLCAxNzcsIDY2LCA0OCwgNTAsIDE3NiwgNjYsIDQ4LCA0OSwgNTcsIDEyOCwgNjYsIDQ4LCA0OSwgNTYsIDEyOCwgCi0gICAgNjYsIDQ4LCA0OSwgMTgzLCA2NiwgNDgsIDQ5LCAxODIsIDY2LCA0OCwgNDksIDE4MSwgNjYsIDQ4LCA0OSwgMTgwLCA2NiwgCi0gICAgNDgsIDQ5LCAxNzksIDY2LCA0OCwgNDksIDE3OCwgNjYsIDQ4LCA0OSwgMTc3LCA2NiwgNDgsIDQ5LCAxNzYsIDY2LCA0OCwgCi0gICAgNDgsIDU3LCAxMjgsIDY2LCA0OCwgNDgsIDE4NSwgNjYsIDQ4LCA0OCwgNTYsIDEyOCwgNjYsIDQ4LCA0OCwgMTg0LCA2NiwgCi0gICAgNDgsIDQ4LCA1NSwgMTI4LCA2NiwgNDgsIDQ4LCAxODMsIDY2LCA0OCwgNDgsIDU0LCAxMjgsIDY2LCA0OCwgNDgsIDE4MiwgCi0gICAgNjYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDY2LCA0OCwgNDgsIDUzLCAxMjgsIDY2LCA0OCwgNDgsIDE4MSwgNjYsIDQ4LCAKLSAgICA0OCwgNTIsIDEyOCwgNjYsIDQ4LCA0OCwgMTgwLCA2NiwgNDgsIDQ4LCA1MSwgMTI4LCA2NiwgNDgsIDQ4LCAxNzksIDY2LCAKLSAgICA0OCwgNDgsIDUwLCAxMjgsIDY2LCA0OCwgNDgsIDE3OCwgNjYsIDQ4LCA0OCwgNDksIDEyOCwgNjYsIDQ4LCA0OCwgMTc3LCAKLSAgICA2NSwgOTAsIDg1LCAxMjgsIDY1LCA4OSwgNjksIDIxMCwgNjUsIDg5LCA2NiwgMTI4LCA2NSwgODksIDY1LCA3MiwgMTI4LCAKLSAgICA2NSwgODgsIDY5LCAxMjgsIDY1LCA4NywgNjksIDEyOCwgNjUsIDg2LCA2OSwgODMsIDg0LCA2NSwgMjA2LCA2NSwgODYsIAotICAgIDY5LCA4MiwgNjUsIDcxLCAxOTcsIDY1LCA4NiwgNjUsIDc1LCA4MiwgNjUsIDcyLCA2NSwgODMsIDY1LCA3OCwgODksIDY1LCAKLSAgICAxMjgsIDY1LCA4NiwgNjUsIDcxLCA4MiwgNjUsIDcyLCA2NSwgMTI4LCA2NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA2NSwgODUsIDg0LCA4NSwgNzcsIDc4LCAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNzksIDY2LCA3MywgNzYsIDY5LCAKLSAgICAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODUsIDgzLCA4NCwgODIsIDY1LCAyMDQsIAotICAgIDY1LCA4NSwgODIsIDczLCA4MCwgNzMsIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCAKLSAgICA5MCwgNjgsIDY1LCA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCA0NSwgCi0gICAgNTAsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDEyOCwgNjUsIDg1LCA3OCwgNzgsIAotICAgIDEyOCwgNjUsIDg1LCA3MSwgODUsIDgzLCA4NCwgMTI4LCA2NSwgODUsIDcxLCA3NywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgNjUsIDg1LCA2OSwgMTI4LCA2NSwgODUsIDY2LCA2OSwgODIsIDcxLCA3MywgNzgsIDY5LCAxMjgsIDY1LCAKLSAgICA4NCwgODQsIDczLCAxOTUsIDY1LCA4NCwgODQsIDcyLCA2NSwgNjcsIDY1LCA3OCwgMTI4LCA2NSwgODQsIDg0LCA2OSwgNzgsIAotICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY1LCAyMDMsIDY1LCA4NCwgNzksIDIwNSwgNjUsIDg0LCA3OCwgCi0gICAgNjUsIDIwMCwgNjUsIDg0LCA3NywgNjUsIDY1LCA4NSwgMTI4LCA2NSwgODQsIDczLCA4OSwgNjUsIDEyOCwgNjUsIDg0LCAKLSAgICA3MiwgNzYsIDY5LCA4NCwgNzMsIDE5NSwgNjUsIDg0LCA3MiwgNjUsIDgyLCA4NiwgNjUsIDg2LCA2OSwgNjgsIDczLCAxOTUsIAotICAgIDY1LCA4NCwgNzIsIDY1LCA4MCwgNjUsIDgzLCA2NywgNjUsIDIwNiwgNjUsIDgzLCA5MCwgMTI4LCA2NSwgODMsIDg5LCA4NSwgCi0gICAgODIsIDE5MywgNjUsIDgzLCA4OSwgNzcsIDgwLCA4NCwgNzksIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDgzLCAKLSAgICA4NCwgODIsIDc5LCA3OCwgNzksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDY1LCA4MywgODQsIDgyLCA3OSwgNzYsIDc5LCA3MSwgCi0gICAgNzMsIDY3LCA2NSwgMjA0LCA2NSwgODMsIDg0LCA3OSwgNzgsIDczLCA4MywgNzIsIDY5LCAxOTYsIDY1LCA4MywgODQsIDY5LCAKLSAgICA4MiwgNzMsIDgzLCA3NywgMTI4LCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzUsIDIxMSwgNjUsIDgzLCA4NCwgNjksIAotICAgIDgyLCA3MywgODMsIDc1LCAxMjgsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCAyMDMsIDY1LCA4MywgODQsIDY5LCA4MiwgCi0gICAgNzMsIDgzLCA2NywgODUsIDgzLCAxMjgsIDY1LCA4MywgODMsIDg5LCA4MiwgNzMsIDY1LCAyMDYsIDY1LCA4MywgODMsIDY5LCAKLSAgICA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4MywgODAsIAotICAgIDY5LCA4MiwgMTI4LCA2NSwgODMsIDczLCA2NSwgNDUsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDc2LCA3MywgNjUsIDEyOCwgCi0gICAgNjUsIDgzLCA3MiwgNzEsIDY1LCA2NiwgMTI4LCA2NSwgODMsIDcyLCA2OSwgODMsIDEyOCwgNjUsIDgzLCA3MiwgNTcsIAotICAgIDEyOCwgNjUsIDgzLCA3MiwgMTc4LCA2NSwgODMsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA4MywgNjcsIDY5LCA3OCwgCi0gICAgNjgsIDczLCA3OCwgMTk5LCA2NSwgODMsIDY1LCA3NiwgNTAsIDEyOCwgNjUsIDgyLCA4NSwgNzIsIDg1LCA2NSwgMTI4LCAKLSAgICA2NSwgODIsIDg0LCA3MywgODMsIDIxMiwgNjUsIDgyLCA4NCwgNzMsIDY3LCA4NSwgNzYsIDY1LCA4NCwgNjksIDE5NiwgNjUsIAotICAgIDgyLCA4NCwgNjUsIDY2LCAxOTcsIDY1LCA4MiwgODMsIDY5LCA3OSwgODMsIDEyOCwgNjUsIDgyLCA4MywgNjksIDc5LCAKLSAgICAyMTEsIDY1LCA4MiwgODMsIDY5LCA3OCwgNzMsIDY3LCAxMjgsIDY1LCA4MiwgODIsIDc5LCA4NywgODMsIDEyOCwgNjUsIAotICAgIDgyLCA4MiwgNzksIDg3LCAyMTEsIDY1LCA4MiwgODIsIDc5LCA4NywgNzIsIDY5LCA2NSwgNjgsIDEyOCwgNjUsIDgyLCA4MiwgCi0gICAgNzksIDg3LCA3MiwgNjksIDY1LCAxOTYsIDY1LCA4MiwgODIsIDc5LCA4NywgNDUsIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDY1LCAKLSAgICA4MiwgODIsIDczLCA4NiwgNjksIDEyOCwgNjUsIDgyLCA4MiwgNjUsIDg5LCAxMjgsIDY1LCA4MiwgODAsIDY5LCA3MSwgNzEsIAotICAgIDczLCA2NSwgODQsIDIwNywgNjUsIDgyLCA3OSwgODUsIDgzLCA3MywgNzgsIDE5OSwgNjUsIDgyLCA3OSwgODUsIDgyLCAKLSAgICAxOTMsIDY1LCA4MiwgNzksIDg1LCA3OCwgNjgsIDQ1LCA4MCwgODIsIDc5LCA3MCwgNzMsIDc2LCA2OSwgMTI4LCA2NSwgODIsIAotICAgIDc5LCA4NSwgNzgsIDE5NiwgNjUsIDgyLCA3NywgODksIDEyOCwgNjUsIDgyLCA3NywgNzksIDg1LCA4MiwgMTI4LCA2NSwgCi0gICAgODIsIDIwNSwgNjUsIDgyLCA3NiwgNjUsIDg1LCAxOTksIDY1LCA4MiwgNzUsIDg0LCA3MywgNzUsIDIwNywgNjUsIDgyLCAKLSAgICA3NSwgNjUsIDY2LCAxMjgsIDY1LCA4MiwgNzUsIDY1LCA2NSwgNzgsIDg1LCAxMjgsIDY1LCA4MiwgNzMsIDgzLCA4NCwgNjksIAotICAgIDgyLCA2NSwgMTI4LCA2NSwgODIsIDczLCA4MywgODQsIDY5LCA4MiwgMTkzLCA2NSwgODIsIDczLCA2OSwgODMsIDEyOCwgCi0gICAgNjUsIDgyLCA3MSwgNzksIDg0LCA2OSwgODIsIDczLCAxMjgsIDY1LCA4MiwgNzEsIDc5LCA4MywgODksIDc4LCA4NCwgNzIsIAotICAgIDY5LCA4NCwgNzksIDc4LCAxMjgsIDY1LCA4MiwgNzEsIDczLCAxMjgsIDY1LCA4MiwgNjksIDgwLCA2NSwgMTI4LCA2NSwgCi0gICAgODIsIDY4LCA3MiwgNjUsIDg2LCA3MywgODMsIDY1LCA4MiwgNzEsIDY1LCAxMjgsIDY1LCA4MiwgNjcsIDcyLCA2NSwgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA2NSwgODIsIDY3LCA3MiwgNjUsIDczLCA3OSwgMjA2LCA2NSwgODIsIDY3LCA3MiwgNjUsIDczLCAKLSAgICAxOTUsIDY1LCA4MiwgNjcsIDIwMCwgNjUsIDgyLCA2NywgMTI4LCA2NSwgODIsIDE5NSwgNjUsIDgyLCA2NSwgNzcsIDY1LCAKLSAgICA3MywgMTk1LCA2NSwgODIsIDY1LCA2OSwgNjUsIDY5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDg1LCAxMjgsIAotICAgIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDczLCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY5LCA3OSwgMTI4LCA2NSwgCi0gICAgODIsIDY1LCA2OSwgNjUsIDQ1LCA2OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2NSwgMTI4LCA2NSwgODIsIDY1LCAKLSAgICA2OCwgMTI4LCA2NSwgODIsIDY1LCAxOTYsIDY1LCA4MiwgNjUsIDY2LCA3MywgNjcsIDQ1LCA3MywgNzgsIDY4LCA3MywgCi0gICAgMTk1LCA2NSwgODIsIDY1LCA2NiwgNzMsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDc3LCA2NSwgMjA2LCAKLSAgICA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCA2OSwgNjksIDc3LCAxMjgsIDY1LCA4MSwgODUsIDY1LCA4MiwgNzMsIDg1LCA4MywgCi0gICAgMTI4LCA2NSwgODEsIDg1LCA2NSwgNzAsIDc5LCA4MiwgODQsIDczLCA4MywgMTI4LCA2NSwgODEsIDg1LCAxOTMsIDY1LCAKLSAgICA4MCwgODUsIDIwNiwgNjUsIDgwLCA4MiwgNzMsIDc2LCAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgODgsIDczLCA3NywgNjUsIAotICAgIDg0LCA2OSwgNzYsIDIxNywgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCAxMjgsIDY1LCA4MCwgCi0gICAgODAsIDgyLCA3OSwgNjUsIDY3LCA3MiwgNjksIDIxMSwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCAxMjgsIDY1LCAKLSAgICA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODAsIDc5LCA4NCwgNzIsIDY5LCA4MywgCi0gICAgMTI4LCA2NSwgODAsIDc5LCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDgwLCAKLSAgICA3MiwgNjksIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgODMsIDEyOCwgNjUsIDgwLCA3OSwgODMsIAotICAgIDg0LCA4MiwgNzksIDcwLCA3OSwgMjExLCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCAyMDEsIDY1LCA4MCwgCi0gICAgNzksIDY4LCA2OSwgODgsIDczLCA2NSwgMTI4LCA2NSwgODAsIDc5LCA2OCwgNjksIDgyLCA3NywgMTkzLCA2NSwgODAsIDc2LCAKLSAgICA3OSwgODUsIDc4LCAxMjgsIDY1LCA4MCwgNzYsIDIwMSwgNjUsIDgwLCA3MywgNzgsIDEyOCwgNjUsIDgwLCA2OSwgODMsIAotICAgIDIwNywgNjUsIDgwLCA2NSwgODIsIDg0LCAxMjgsIDY1LCA4MCwgNjUsIDY1LCA4NCwgNzksIDEyOCwgNjUsIDc4LCA4NSwgCi0gICAgODMsIDg2LCA2NSwgODIsIDY1LCA4OSwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDY1LCAxMjgsIDY1LCAKLSAgICA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCAxOTMsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCA2NSwgMTI4LCA2NSwgNzgsIAotICAgIDg1LCA2OCwgNjUsIDg0LCA4NCwgMTkzLCA2NSwgNzgsIDg0LCA3MywgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCA4OSwgNDUsIDUwLCAxMjgsIDY1LCA3OCwgODQsIAotICAgIDczLCA3NywgNzksIDc4LCA4OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgMjE3LCA2NSwgNzgsIDg0LCA3MywgCi0gICAgNzcsIDc5LCA3OCwgNzMsIDY1LCA4NCwgNjksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc1LCA2OSwgNzgsIDc5LCA3NywgNjUsIAotICAgIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc1LCA2OSwgNzgsIDc5LCA3NSwgODksIDc2LCA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgCi0gICAgNzgsIDg0LCA3MywgNzAsIDc5LCA3OCwgNzMsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIAotICAgIDg3LCA3MywgODMsIDY5LCA0NSwgODIsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCAKLSAgICA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCAxOTcsIDY1LCA3OCwgODQsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3OCwgODQsIAotICAgIDY5LCA3OCwgNzgsIDE5MywgNjUsIDc4LCA4NCwgNjUsIDgyLCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA2NSwgCi0gICAgNzgsIDgzLCA4NSwgMjE4LCA2NSwgNzgsIDgzLCA3MiwgNjksIDEyOCwgNjUsIDc4LCA4MCwgNjksIDY1LCAxMjgsIDY1LCAKLSAgICA3OCwgMjA3LCA2NSwgNzgsIDc4LCA4NSwgNzMsIDg0LCAyMTcsIDY1LCA3OCwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgNjUsIDc4LCA3OCwgNjUsIDY1LCA4NSwgMTI4LCA2NSwgNzgsIDc1LCA3MiwgMTI4LCA2NSwgNzgsIDcyLCA4NSwgCi0gICAgMTI4LCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCA4MiwgMTI4LCA2NSwgNzgsIDcxLCA4MywgODQsIDgyLCA3OSwgMjA1LCAKLSAgICA2NSwgNzgsIDcxLCA4MiwgMjE3LCA2NSwgNzgsIDcxLCA3NSwgNzIsIDY1LCA3OCwgNzUsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIAotICAgIDcxLCA2OSwgMjEwLCA2NSwgNzgsIDcxLCA2OSwgNzYsIDEyOCwgNjUsIDc4LCA3MSwgNjksIDY4LCAxMjgsIDY1LCA3OCwgCi0gICAgNjgsIDY1LCA4MCwgMTI4LCA2NSwgNzgsIDY3LCA3OSwgODIsIDY1LCAxMjgsIDY1LCA3OCwgNjcsIDcyLCA3OSwgODIsIAotICAgIDEyOCwgNjUsIDc4LCA2NSwgODQsIDgyLCA3MywgNjcsIDcyLCA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDY1LCA4MCwgCi0gICAgMTI4LCA2NSwgNzcsIDgwLCA4MywgMTI4LCA2NSwgNzcsIDgwLCA2OSwgODIsIDgzLCA2NSwgNzgsIDY4LCAxMjgsIDY1LCAKLSAgICA3NywgNzksIDg1LCA3OCwgMjEyLCA2NSwgNzcsIDY5LCA4MiwgNzMsIDY3LCA2NSwgODMsIDEyOCwgNjUsIDc3LCA2OSwgODIsIAotICAgIDczLCA2NywgNjUsIDIwNiwgNjUsIDc3LCA2NiwgODUsIDc2LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNzcsIDY2LCAKLSAgICAxOTMsIDY1LCA3NywgNjUsIDgyLCAxMjgsIDY1LCA3NywgNjUsIDIxMCwgNjUsIDc3LCA2NSwgNzYsIDcxLCA2NSwgNzcsIAotICAgIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3NywgNjUsIDc2LCA3MSwgNjUsIDc3LCAxMjgsIDY1LCA3NiwgODYsIDY5LCA3OSwgCi0gICAgNzYsIDY1LCAyMTAsIDY1LCA3NiwgODUsIDc3LCAxMjgsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgNzMsIDg2LCAKLSAgICAxOTcsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIAotICAgIDY1LCA4NCwgMTk3LCA2NSwgNzYsIDg0LCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA3MiwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgCi0gICAgNzIsIDE5MywgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgNjUsIDc4LCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA2NSwgODAsIDgyLCAKLSAgICA2NSwgNjUsIDc4LCAxOTMsIDY1LCA3NiwgODAsIDY1LCAxMjgsIDY1LCA3NiwgNzcsIDc5LCA4MywgMjEyLCA2NSwgNzYsIAotICAgIDc2LCA3OSwgMTI4LCA2NSwgNzYsIDc2LCA3MywgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDc2LCA3NiwgMjAxLCA2NSwgCi0gICAgNzYsIDc2LCA2NSwgMjAwLCA2NSwgNzYsIDc1LCA2NSwgNzYsIDczLCA0NSwgNTAsIDEyOCwgNjUsIDc2LCA3NSwgNjUsIDc2LCAKLSAgICA3MywgMTI4LCA2NSwgNzYsIDczLCA3MSwgNzgsIDY5LCAxOTYsIDY1LCA3NiwgNzMsIDcwLCA4NSwgMTI4LCA2NSwgNzYsIAotICAgIDczLCA2OSwgNzgsIDEyOCwgNjUsIDc2LCA3MywgNjksIDIwNiwgNjUsIDc2LCA3MSwgNzMsIDIxOCwgNjUsIDc2LCA3MCwgCi0gICAgNjUsIDEyOCwgNjUsIDc2LCA2OSwgODUsIDIxMiwgNjUsIDc2LCA2OSwgODAsIDcyLCAxMjgsIDY1LCA3NiwgNjksIDc3LCAKLSAgICA2NiwgNzMsIDY3LCAxMjgsIDY1LCA3NiwgNjksIDcwLCAxMjgsIDY1LCA3NiwgNjUsIDg5LCA3MiwgNjksIDEyOCwgNjUsIAotICAgIDc2LCA2NSwgODksIDcyLCAxOTcsIDY1LCA3NiwgNjUsIDgyLCAyMDUsIDY1LCA3NiwgNjUsIDgwLCA3MiwgMTI4LCA2NSwgCi0gICAgNzYsIDQ1LCA3NiwgNjUsIDc1LCA4NSwgNzgsIDY1LCAxMjgsIDY1LCA3NSwgODQsIDczLCA2OSwgODMsIDY5LCA3NiwgODMsIAotICAgIDc1LCA2NSwgNjYsIDEyOCwgNjUsIDc1LCA4MywgNjUsIDEyOCwgNjUsIDc1LCA3MiwgNzcsIDczLCA3NywgNzMsIDE5NSwgCi0gICAgNjUsIDc1LCA2NiwgNjUsIDIxMCwgNjUsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3NSwgNjUsIDgyLCAxOTMsIDY1LCAKLSAgICA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3MywgODYsIDczLCA3NiwgNzMsIDIwMywgNjUsIDczLCA4NCwgNzksIAotICAgIDIwNiwgNjUsIDczLCA4MiwgODAsIDc2LCA2NSwgNzgsIDY5LCAxMjgsIDY1LCA3MywgNzgsIDc4LCAxMjgsIDY1LCA3MywgCi0gICAgNzYsIDc3LCAxMjgsIDY1LCA3MywgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDczLCA3MiwgODYsIDg1LCA4MywgMTI4LCAKLSAgICA2NSwgNzIsIDgzLCA2OCwgNjUsIDEyOCwgNjUsIDcyLCA4MywgNjUsIDEyOCwgNjUsIDcyLCA2NSwgNzEsIDcxLCA2NSwgCi0gICAgMjEwLCA2NSwgNzIsIDY1LCA2OCwgMTI4LCA2NSwgNzEsIDg1LCA3OCwgNzEsIDEyOCwgNjUsIDcxLCA3OSwgNzEsIDIwMSwgCi0gICAgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA3MSwgNzEsIDgyLCA2NSwgODYsIAotICAgIDY1LCA4NCwgNjksIDE5NiwgNjUsIDcxLCA2NSwgNzMsIDc4LCAxMjgsIDY1LCA3MCwgODQsIDY5LCAyMTAsIDY1LCA3MCwgCi0gICAgODMsIDY1LCA2NSwgODEsIDEyOCwgNjUsIDcwLCA4MiwgNzMsIDY3LCA2NSwgMjA2LCA2NSwgNzAsIDc5LCA4MiwgNjksIDc3LCAKLSAgICA2OSwgNzgsIDg0LCA3MywgNzksIDc4LCA2OSwgNjgsIDEyOCwgNjUsIDcwLCA3MSwgNzIsIDY1LCA3OCwgMjAxLCA2NSwgNzAsIAotICAgIDcwLCA4MiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgCi0gICAgNjksIDg5LCAxMjgsIDY1LCA2OSwgODMsIDY3LCA4NSwgNzYsIDY1LCA4MCwgNzMsIDg1LCA4MywgMTI4LCA2NSwgNjksIDgzLCAKLSAgICA2NywgMTI4LCA2NSwgNjksIDgzLCAxMjgsIDY1LCA2OSwgODIsIDczLCA2NSwgMjA0LCA2NSwgNjksIDgyLCAxMjgsIDY1LCAKLSAgICA2OSwgNzYsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY1LCA2OSwgNzYsIDEyOCwgNjUsIDY5LCA3NSwgCi0gICAgMTI4LCA2NSwgNjksIDcxLCA2OSwgNjUsIDIwNiwgNjUsIDY5LCA3MSwgMTI4LCA2NSwgNjksIDY5LCA4OSwgNjUsIDc4LCAKLSAgICA3OCwgNjUsIDEyOCwgNjUsIDY5LCA2OSwgMTI4LCA2NSwgNjksIDY4LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgCi0gICAgMTI4LCA2NSwgNjksIDY4LCAxMjgsIDY1LCA2OSwgNjYsIDEyOCwgNjUsIDY4LCA4NiwgNjUsIDc4LCA4NCwgNjUsIDcxLCAKLSAgICA2OSwgMTI4LCA2NSwgNjgsIDg2LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjgsIDY5LCA3MSwgMTI4LCA2NSwgNjgsIAotICAgIDY5LCAxOTksIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDgzLCA2OSwgMTk2LCA2NSwgNjgsIDY4LCA4MiwgNjksIDgzLCAKLSAgICAyMTEsIDY1LCA2OCwgNjgsIDY1LCA3NSwgMTI4LCA2NSwgNjgsIDY1LCAyMDMsIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIAotICAgIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCAKLSAgICA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCAxMjgsIDY1LCA2NywgODUsIDg0LCAxOTcsIDY1LCA2NywgODQsIDg1LCA2NSwgNzYsIAotICAgIDc2LCAyMTcsIDY1LCA2NywgODQsIDczLCA4NiwgNjUsIDg0LCAxOTcsIDY1LCA2NywgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgCi0gICAgNzMsIDE5NSwgNjUsIDY3LCA3NSwgNzgsIDc5LCA4NywgNzYsIDY5LCA2OCwgNzEsIDY5LCAxMjgsIDY1LCA2NywgNjcsIDg1LCAKLSAgICA3NywgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA2NywgNzksIDg1LCA3OCwgMjEyLCA2NSwgNjcsIAotICAgIDY3LCA2OSwgODAsIDg0LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgODQsIDQ1LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCAKLSAgICA4NCwgNzksIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDIxMiwgNjUsIAotICAgIDY3LCA2NSwgNjgsIDY5LCA3NywgMjE3LCA2NSwgNjYsIDg5LCA4MywgNzcsIDY1LCAyMDQsIDY1LCA2NiwgODUsIDc4LCA2OCwgCi0gICAgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDY2LCA3NSwgNzIsIDY1LCA4MywgNzMsIDY1LCAyMDYsIDY1LCA2NiwgNjYsIDgyLCAKLSAgICA2OSwgODYsIDczLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNjYsIDY1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2NSwgNjYsIAotICAgIDE3OCwgNjUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDY1LCA4OSwgMTI4LCA2NSwgNjUsIDg3LCAxMjgsIAotICAgIDY1LCA2NSwgNzksIDEyOCwgNjUsIDY1LCA3NCwgMTI4LCA2NSwgNjUsIDY2LCA2NSwgNjUsIDcwLCA3MywgNzYsIDczLCAKLSAgICAxMjgsIDY1LCA2NSwgNDgsIDUxLCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNTEsIAotICAgIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgCi0gICAgNTAsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTMsIDEyOCwgNjUsIDY1LCAKLSAgICA0OCwgNTAsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTAsIDEyOCwgNjUsIAotICAgIDY1LCA0OCwgNTAsIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTcsIDEyOCwgCi0gICAgNjUsIDY1LCA0OCwgNDksIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTQsIAotICAgIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgCi0gICAgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCAKLSAgICA0OSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NiwgMTI4LCA2NSwgNjUsIAotICAgIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCAKLSAgICAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIAotICAgIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgCi0gICAgNDgsIDQ5LCAxMjgsIDY1LCA0OCwgNTUsIDQ4LCAxMjgsIDY1LCA0OCwgNTQsIDU3LCAxMjgsIDY1LCA0OCwgNTQsIDU2LCAKLSAgICAxMjgsIDY1LCA0OCwgNTQsIDU1LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCA0OCwgNTQsIDUzLCAxMjgsIDY1LCAKLSAgICA0OCwgNTQsIDUyLCAxMjgsIDY1LCA0OCwgNTQsIDUxLCAxMjgsIDY1LCA0OCwgNTQsIDUwLCAxMjgsIDY1LCA0OCwgNTQsIAotICAgIDQ5LCAxMjgsIDY1LCA0OCwgNTQsIDQ4LCAxMjgsIDY1LCA0OCwgNTMsIDU3LCAxMjgsIDY1LCA0OCwgNTMsIDU2LCAxMjgsIAotICAgIDY1LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCA0OCwgNTMsIDU0LCAxMjgsIDY1LCA0OCwgNTMsIDUzLCAxMjgsIDY1LCA0OCwgCi0gICAgNTMsIDUyLCAxMjgsIDY1LCA0OCwgNTMsIDUxLCAxMjgsIDY1LCA0OCwgNTMsIDUwLCAxMjgsIDY1LCA0OCwgNTMsIDQ5LCAKLSAgICAxMjgsIDY1LCA0OCwgNTMsIDQ4LCAxMjgsIDY1LCA0OCwgNTIsIDU3LCAxMjgsIDY1LCA0OCwgNTIsIDU2LCAxMjgsIDY1LCAKLSAgICA0OCwgNTIsIDU1LCAxMjgsIDY1LCA0OCwgNTIsIDU0LCAxMjgsIDY1LCA0OCwgNTIsIDUzLCA2NSwgMTI4LCA2NSwgNDgsIAotICAgIDUyLCA1MywgMTI4LCA2NSwgNDgsIDUyLCA1MiwgMTI4LCA2NSwgNDgsIDUyLCA1MSwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgCi0gICAgNTEsIDEyOCwgNjUsIDQ4LCA1MiwgNTAsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUwLCAxMjgsIDY1LCA0OCwgNTIsIDQ5LCAKLSAgICAxMjgsIDY1LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA0OCwgMTI4LCA2NSwgNDgsIDUxLCA1NywgMTI4LCAKLSAgICA2NSwgNDgsIDUxLCA1NiwgMTI4LCA2NSwgNDgsIDUxLCA1NSwgMTI4LCA2NSwgNDgsIDUxLCA1NCwgMTI4LCA2NSwgNDgsIAotICAgIDUxLCA1MywgMTI4LCA2NSwgNDgsIDUxLCA1MiwgMTI4LCA2NSwgNDgsIDUxLCA1MSwgMTI4LCA2NSwgNDgsIDUxLCA1MCwgCi0gICAgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDUyLCA2NSwgMTI4LCA2NSwgNDgsIDQ4LCAKLSAgICA1NCwgNjYsIDEyOCwgNjUsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA2NSwgNDUsIAotICAgIDY5LCA4NSwgMTI4LCA0NSwgODUsIDIwNSwgNDUsIDgwLCA3MiwgODIsIDg1LCAxMjgsIDQ1LCA3NSwgNzIsIDg5LCA4NSwgCi0gICAgMTk2LCA0NSwgNzUsIDcyLCA4OSwgNzMsIDc2LCAxMjgsIDQ1LCA2OCwgOTAsIDg1LCAxOTYsIDQ1LCA2NywgNzIsIDY1LCAKLSAgICAyMTAsIDQ1LCA2NywgNzIsIDY1LCA3NiwgMTI4LCAKKyAgICA2NywgNjcsIDcyLCAxMjgsIDY3LCA2NywgNjksIDY5LCAxMjgsIDY3LCA2NywgNjksIDEyOCwgNjcsIDY3LCA2NSwgNjUsIAorICAgIDEyOCwgNjcsIDY3LCA2NSwgMTI4LCA2NywgNjUsIDg5LCA3OCwgMTI4LCA2NywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA2NywgNjUsIDg4LCAxMjgsIDY3LCA2NSwgODYsIDY5LCAxMjgsIDY3LCA2NSwgODUsIDg0LCA3MywgNzksIDIwNiwgCisgICAgNjcsIDY1LCA4NSwgNzYsIDY4LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgODUsIDY4LCA2NSwgMTI4LCA2NywgNjUsIDg1LCAKKyAgICAxMjgsIDY3LCA2NSwgODQsIDY1LCA4NywgNjUsIDEyOCwgNjcsIDY1LCA4NCwgMTI4LCA2NywgNjUsIDIxMiwgNjcsIDY1LCAKKyAgICA4MywgODQsIDc2LCA2OSwgMTI4LCA2NywgNjUsIDgyLCA4OSwgODMsIDg0LCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgODQsIAorICAgIDEyOCwgNjcsIDY1LCA4MiwgMjExLCA2NywgNjUsIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA2NywgNjUsIDgyLCA4MCwgCisgICAgNjksIDc4LCA4NCwgODIsIDIxNywgNjcsIDY1LCA4MiwgMjA4LCA2NywgNjUsIDgyLCA3OSwgODUsIDgzLCA2OSwgMjA0LCAKKyAgICA2NywgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCA4MiwgNzksIDIwNiwgNjcsIDY1LCA4MiwgNzMsIDIwMywgNjcsIAorICAgIDY1LCA4MiwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIDY5LCA4NCwgMTI4LCA2NywgNjUsIDgyLCA2OSwgMjEyLCA2NywgCisgICAgNjUsIDgyLCAxOTcsIDY3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA2NywgNjUsIDgyLCA2OCwgMTI4LCA2NywgNjUsIDgyLCAKKyAgICAxOTYsIDY3LCA2NSwgODIsIDEyOCwgNjcsIDY1LCAyMTAsIDY3LCA2NSwgODAsIDg1LCAyMTIsIDY3LCA2NSwgODAsIDg0LCAKKyAgICA3MywgODYsIDY5LCAxMjgsIDY3LCA2NSwgODAsIDgyLCA3MywgNjcsIDc5LCA4MiwgNzgsIDEyOCwgNjcsIDY1LCA4MCwgNzksIAorICAgIDEyOCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNjcsIDY1LCA3OCwgODQsIDczLCA3NiwgNzYsIDY1LCA4NCwgCisgICAgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIDE5OSwgNjcsIDY1LCA3OCwgNjgsIDg5LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCAKKyAgICA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCA4NSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgCisgICAgMjEzLCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgMTkzLCA2NywgNjUsIDc4LCAKKyAgICA2NywgNjksIDgyLCAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIAorICAgIDc4LCA2NywgNjksIDc2LCAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgMjA0LCA2NywgNjUsIDc4LCAxMjgsIDY3LCA2NSwgCisgICAgNzcsIDc4LCA4NSwgMTk1LCA2NywgNjUsIDc3LCA2OSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzcsIDY5LCA3NiwgMTI4LCAKKyAgICA2NywgNjUsIDc2LCA4OSwgNjUsIDEyOCwgNjcsIDY1LCA3NiwgODksIDE5MywgNjcsIDY1LCA3NiwgODgsIDEyOCwgNjcsIAorICAgIDY1LCA3NiwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgNjksIDc4LCA2OCwgNjUsIDgyLCAxMjgsIDY3LCA2NSwgNzYsIDY3LCAKKyAgICAxMjgsIDY3LCA2NSwgNzUsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc1LCAxOTcsIDY3LCA2NSwgNzMsIDEyOCwgNjcsIDY1LCAKKyAgICA3MiwgMTI4LCA2NywgNjUsIDY5LCA4MywgODUsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDY4LCA4NSwgNjcsIDY5LCA4NSwgODMsIAorICAgIDEyOCwgNjcsIDY1LCA2OCwgMTkzLCA2NywgNjUsIDY3LCA4NCwgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjYsIDc2LCA2OSwgCisgICAgODcsIDY1LCA4OSwgMTI4LCA2NywgNjUsIDY2LCA2NiwgNjUsIDcxLCA2OSwgNDUsIDg0LCA4MiwgNjksIDY5LCAxMjgsIDY3LCAKKyAgICA2NSwgNjUsIDc4LCA3MSwgMTI4LCA2NywgNjUsIDY1LCA3MywgMTI4LCA2NywgMTkzLCA2NywgNDgsIDUwLCA1MiwgMTI4LCAKKyAgICA2NywgNDgsIDUwLCA1MSwgMTI4LCA2NywgNDgsIDUwLCA1MCwgMTI4LCA2NywgNDgsIDUwLCA0OSwgMTI4LCA2NywgNDgsIAorICAgIDUwLCA0OCwgMTI4LCA2NywgNDgsIDQ5LCA1NywgMTI4LCA2NywgNDgsIDQ5LCA1NiwgMTI4LCA2NywgNDgsIDQ5LCA1NSwgCisgICAgMTI4LCA2NywgNDgsIDQ5LCA1NCwgMTI4LCA2NywgNDgsIDQ5LCA1MywgMTI4LCA2NywgNDgsIDQ5LCA1MiwgMTI4LCA2NywgCisgICAgNDgsIDQ5LCA1MSwgMTI4LCA2NywgNDgsIDQ5LCA1MCwgMTI4LCA2NywgNDgsIDQ5LCA0OSwgMTI4LCA2NywgNDgsIDQ5LCAKKyAgICA0OCwgNjUsIDEyOCwgNjcsIDQ4LCA0OSwgNDgsIDEyOCwgNjcsIDQ4LCA0OCwgNTcsIDEyOCwgNjcsIDQ4LCA0OCwgNTYsIAorICAgIDEyOCwgNjcsIDQ4LCA0OCwgNTUsIDEyOCwgNjcsIDQ4LCA0OCwgNTQsIDEyOCwgNjcsIDQ4LCA0OCwgNTMsIDEyOCwgNjcsIAorICAgIDQ4LCA0OCwgNTIsIDEyOCwgNjcsIDQ4LCA0OCwgNTEsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY3LCAxMjgsIDY3LCA0OCwgCisgICAgNDgsIDUwLCA2NiwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDEyOCwgNjcsIDQ4LCAKKyAgICA0OCwgNDksIDEyOCwgNjcsIDQ1LCA4MywgNzMsIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDY3LCA0NSwgNTEsIAorICAgIDU3LCAxMjgsIDY3LCA0NSwgNDksIDU2LCAxMjgsIDY2LCA5MCwgODUsIDc4LCAxOTksIDY2LCA5MCwgNzIsIDIwMSwgNjYsIAorICAgIDg5LCA4NCwgMTk3LCA2NiwgODksIDY5LCA3NiwgNzksIDgyLCA4NSwgODMsIDgzLCA3MywgNjUsIDc4LCA0NSwgODUsIDc1LCAKKyAgICA4MiwgNjUsIDczLCA3OCwgNzMsIDY1LCAyMDYsIDY2LCA4OCwgNzEsIDEyOCwgNjYsIDg3LCA3MywgMTI4LCA2NiwgODcsIAorICAgIDY5LCA2OSwgMTI4LCA2NiwgODcsIDY5LCAxMjgsIDY2LCA4NywgNjUsIDEyOCwgNjYsIDg1LCA4NSwgNzcsIDczLCA4MywgCisgICAgNzIsIDEyOCwgNjYsIDg1LCA4NCwgODQsIDc5LCA3OCwgMTI4LCA2NiwgODUsIDIxMiwgNjYsIDg1LCA4MywgODQsIDIxMSwgCisgICAgNjYsIDg1LCA4MywgMjEyLCA2NiwgODUsIDgzLCA4MywgODksIDY5LCA4MiwgODUsIDEyOCwgNjYsIDg1LCAyMTEsIDY2LCAKKyAgICA4NSwgODIsIDIxMywgNjYsIDg1LCA4MiwgNTAsIDEyOCwgNjYsIDg1LCAyMTAsIDY2LCA4NSwgNzksIDg4LCAxMjgsIDY2LCAKKyAgICA4NSwgNzksIDgwLCAxMjgsIDY2LCA4NSwgNzgsIDc4LCAyMTcsIDY2LCA4NSwgNzgsIDcxLCAxMjgsIDY2LCA4NSwgNzcsIAorICAgIDgwLCAyMTcsIDY2LCA4NSwgNzYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIDc2LCA4NSwgMTk5LCA2NiwgODUsIDc2LCA3NiwgCisgICAgODMsIDY5LCA4OSwgNjksIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDIxMSwgNjYsIDg1LCA3NiwgNzYsIDY5LCA4NCwgMTI4LCAKKyAgICA2NiwgODUsIDc2LCA3NiwgNjksIDIxMiwgNjYsIDg1LCA3NiwgNzYsIDEyOCwgNjYsIDg1LCA3NiwgNjYsIDEyOCwgNjYsIAorICAgIDg1LCA3NSwgODksIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDcxLCA4MywgMTI4LCA2NiwgODUsIDczLCA3NiwgCisgICAgNjgsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3MiwgNzMsIDE5NiwgNjYsIDg1LCA3MSwgNzMsIDc4LCA2OSwgODMsIAorICAgIDE5NywgNjYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIDcwLCA3MCwgNjUsIDc2LCA3OSwgMTI4LCA2NiwgODUsIDY3LCA3NSwgCisgICAgNzYsIDY5LCAxMjgsIDY2LCA4MywgODQsIDY1LCA4MiwgMTI4LCA2NiwgODMsIDc1LCA4NSwgMjEwLCA2NiwgODMsIDc1LCAKKyAgICA2NSwgMTczLCA2NiwgODMsIDY4LCA4NSwgMjExLCA2NiwgODIsIDg1LCA4MywgNzIsIDEyOCwgNjYsIDgyLCA4NSwgODMsIAorICAgIDIwMCwgNjYsIDgyLCA3OSwgNzgsIDkwLCA2OSwgMTI4LCA2NiwgODIsIDc5LCA3NSwgNjksIDIwNiwgNjYsIDgyLCA3OSwgCisgICAgNjUsIDE5NiwgNjYsIDgyLCA3MywgODMsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCAKKyAgICA4MywgMjExLCA2NiwgODIsIDczLCA2OSwgNzAsIDY3LCA2NSwgODMsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIDY4LCA3MSwgCisgICAgMTk3LCA2NiwgODIsIDczLCA2OCwgMTk3LCA2NiwgODIsIDczLCA2NywgNzUsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDczLCAKKyAgICA4MywgMTI4LCA2NiwgODIsIDY5LCA4NiwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY2LCA4MiwgNjksIAorICAgIDg2LCAxOTcsIDY2LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA2NiwgODIsIDY5LCA2NSwgNzUsIDg0LCA3MiwgODIsIDc5LCA4NSwgCisgICAgNzEsIDcyLCAxMjgsIDY2LCA4MiwgNjksIDY1LCA2OCwgMTI4LCA2NiwgODIsIDY4LCAxOTMsIDY2LCA4MiwgNjUsIDc4LCAKKyAgICA2NywgNzIsIDczLCA3OCwgMTk5LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCAxMjgsIDY2LCA4MiwgNjUsIDc4LCA2NywgCisgICAgMjAwLCA2NiwgODIsIDY1LCA3NSwgNjcsIDY5LCA4NCwgMTI4LCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgNjksIAorICAgIDE5NiwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgMjEyLCA2NiwgODIsIDY1LCA2NywgNjksIDEyOCwgNjYsIDgxLCAxMjgsIAorICAgIDY2LCA4MCwgNzIsIDEyOCwgNjYsIDc5LCA4OSwgMTI4LCA2NiwgNzksIDg3LCA4NCwgNzMsIDY5LCAxMjgsIDY2LCA3OSwgCisgICAgODcsIDg0LCA3MywgMTk3LCA2NiwgNzksIDg3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNzksIDg3LCA3NiwgMTI4LCAKKyAgICA2NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNjYsIDc5LCAyMTUsIDY2LCA3OSwgODUsIDgxLCA4NSwgNjksIDg0LCAxMjgsIAorICAgIDY2LCA3OSwgODUsIDc4LCA2OCwgNjUsIDgyLCAyMTcsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDQ1LCA3NiwgNzMsIDcxLCAKKyAgICA3MiwgODQsIDY5LCAxOTYsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDEyOCwgNjYsIDc5LCA4NCwgODQsIDc5LCAyMDUsIAorICAgIDY2LCA3OSwgODQsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDc5LCA4NCwgODQsIDc2LCAxOTcsIDY2LCA3OSwgODQsIDIwMCwgCisgICAgNjYsIDc5LCA4MiwgODUsIDg0LCA3OSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDQ1LCA1MSwgMTI4LCA2NiwgNzksIDgyLCAKKyAgICA2NSwgODgsIDQ1LCA1MCwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDEyOCwgNjYsIDc5LCA4MCwgNzksIDc3LCA3OSwgNzAsIAorICAgIDIwNywgNjYsIDc5LCA3OSwgODQsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDg0LCAxMjgsIDY2LCA3OSwgNzksIDc3LCA2OSwgCisgICAgODIsIDY1LCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDc1LCA3NywgNjUsIDgyLCAKKyAgICA3NSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgMjAzLCA2NiwgNzksIDc4LCA2OSwgMTI4LCA2NiwgNzksIAorICAgIDc3LCA2NiwgMTI4LCA2NiwgNzksIDc3LCAxMjgsIDY2LCA3OSwgNzYsIDg0LCAxMjgsIDY2LCA3OSwgNzYsIDIxMiwgNjYsIAorICAgIDc5LCA3MiwgNjUsIDczLCA4MiwgNzMsIDE5NSwgNjYsIDc5LCA2OCwgODksIDEyOCwgNjYsIDc5LCA2NSwgODIsIDEyOCwgCisgICAgNjYsIDc5LCA2NSwgMTI4LCA2NiwgNzYsIDg1LCA2OSwgMTI4LCA2NiwgNzYsIDg1LCAxOTcsIDY2LCA3NiwgNzksIDg3LCAKKyAgICA3MCwgNzMsIDgzLCA3MiwgMTI4LCA2NiwgNzYsIDc5LCA4MywgODMsIDc5LCA3NywgMTI4LCA2NiwgNzYsIDc5LCA3OSwgNjgsIAorICAgIDEyOCwgNjYsIDc2LCA3OSwgNzgsIDE5NiwgNjYsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIDY2LCA3NiwgNjksIDc4LCA2OCwgCisgICAgNjksIDE5NiwgNjYsIDc2LCA2NSwgNzgsIDc1LCAxMjgsIDY2LCA3NiwgNjUsIDc4LCAyMDMsIDY2LCA3NiwgNjUsIDY4LCAKKyAgICAxOTcsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzAsIDc5LCA3OSwgMjEyLCA2NiwgNzYsIDY1LCA2NywgNzUsIDQ1LCA3NiwgNjksIAorICAgIDg0LCA4NCwgNjksIDIxMCwgNjYsIDc2LCA2NSwgNjcsIDc1LCA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDY5LCAKKyAgICAxOTYsIDY2LCA3NiwgNjUsIDY3LCA3NSwgMTI4LCA2NiwgNzUsIDY1LCAxNzMsIDY2LCA3MywgODQsIDg0LCA2OSwgODIsIAorICAgIDEyOCwgNjYsIDczLCA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODMsIDc3LCA4NSwgODQsIDIwMCwgNjYsIDczLCA4MywgCisgICAgNzcsIDczLCA3NiwgNzYsIDY1LCAyMDAsIDY2LCA3MywgODMsIDcyLCA3OSwgODAsIDEyOCwgNjYsIDczLCA4MywgNjksIDY3LCAKKyAgICA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODMsIDY1LCA3MiwgMTI4LCA2NiwgNzMsIDgyLCA4NSwgMTI4LCA2NiwgNzMsIAorICAgIDgyLCA4NCwgNzIsIDY4LCA2NSwgMjE3LCA2NiwgNzMsIDgyLCA3MSwgNjUsIDEyOCwgNjYsIDczLCA4MiwgNjgsIDEyOCwgCisgICAgNjYsIDczLCA3OSwgNzIsIDY1LCA5MCwgNjUsIDgyLCAxOTYsIDY2LCA3MywgNzgsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCAKKyAgICA2NiwgNzMsIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY2LCA3MywgNzgsIDY4LCA3MywgMTI4LCA2NiwgNzMsIDc4LCA2NSwgODIsIAorICAgIDIxNywgNjYsIDczLCA3NiwgNzYsIDczLCA2NSwgODIsIDY4LCA4MywgMTI4LCA2NiwgNzMsIDc2LCA2NSwgNjYsIDczLCA2NSwgCisgICAgMjA0LCA2NiwgNzMsIDc1LCA3MywgNzgsIDczLCAxMjgsIDY2LCA3MywgNzEsIDEyOCwgNjYsIDczLCAxOTksIDY2LCA3MywgCisgICAgNjksIDg0LCAxMjgsIDY2LCA3MywgNjgsIDY5LCA3OCwgODQsIDY1LCAyMDQsIDY2LCA3MywgNjgsIDY1LCA3NSwgODUsIDc5LCAKKyAgICAyMDYsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDczLCA4MywgODQsIDEyOCwgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNjksIAorICAgIDgzLCAxMjgsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDY5LCAxMjgsIDY2LCA3MywgNjcsIDY5LCA4MCwgODMsIDEyOCwgCisgICAgNjYsIDczLCA2NiwgNzYsIDY5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA2NiwgNzMsIDY2LCAxMjgsIDY2LCAyMDEsIDY2LCAKKyAgICA3MiwgODUsIDEyOCwgNjYsIDcyLCA3OSwgNzksIDEyOCwgNjYsIDcyLCA3OSwgMTI4LCA2NiwgNzIsIDczLCAxMjgsIDY2LCAKKyAgICA3MiwgNjksIDg0LCA3MiwgMTI4LCA2NiwgNzIsIDY5LCA2OSwgMTI4LCA2NiwgNzIsIDY5LCAxMjgsIDY2LCA3MiwgNjUsIAorICAgIDg0LCA4NCwgNzMsIDgwLCA4MiwgNzksIDc2LCAyMTMsIDY2LCA3MiwgNjUsIDc3LCAxMjgsIDY2LCA3MiwgNjUsIDY1LCAKKyAgICAxMjgsIDY2LCA3MiwgNjUsIDEyOCwgNjYsIDY5LCA4OSwgODksIDY1LCA3NiwgMTI4LCA2NiwgNjksIDg4LCAxMjgsIDY2LCAKKyAgICA2OSwgODYsIDY5LCA4MiwgNjUsIDcxLCA2OSwgMTI4LCA2NiwgNjksIDg0LCA4NywgNjksIDY5LCA3OCwgMTI4LCA2NiwgNjksIAorICAgIDg0LCA4NywgNjksIDY5LCAyMDYsIDY2LCA2OSwgODQsIDcyLCAxMjgsIDY2LCA2OSwgODQsIDY1LCAxMjgsIDY2LCA2OSwgCisgICAgODQsIDE5MywgNjYsIDY5LCAyMTIsIDY2LCA2OSwgODMsIDczLCA2OCwgMTk3LCA2NiwgNjksIDgyLCA3NSwgNjUsIDc4LCAKKyAgICA2NSwgMjA2LCA2NiwgNjksIDgyLCA2NiwgNjksIDIxMCwgNjYsIDY5LCA4MCwgMTI4LCA2NiwgNjksIDc5LCA4MiwgMTk1LCAKKyAgICA2NiwgNjksIDc4LCA5MCwgNjksIDc4LCAxOTcsIDY2LCA2OSwgNzgsIDg0LCAyMDcsIDY2LCA2OSwgNzgsIDY4LCA2OSwgCisgICAgMTI4LCA2NiwgNjksIDc4LCA2OCwgMTI4LCA2NiwgNjksIDIwNiwgNjYsIDY5LCA3NiwgODQsIDEyOCwgNjYsIDY5LCA3NiwgCisgICAgMjEyLCA2NiwgNjksIDc2LCA3OSwgMjE1LCA2NiwgNjksIDc2LCA3NiwgMTI4LCA2NiwgNjksIDc2LCAyMDQsIDY2LCA2OSwgCisgICAgNzYsIDcxLCA4NCwgNzIsIDc5LCAyMTAsIDY2LCA2OSwgNzYsIDEyOCwgNjYsIDY5LCA3MywgODQsIDcyLCAxMjgsIDY2LCAKKyAgICA2OSwgNzIsIDczLCA3OCwgMTk2LCA2NiwgNjksIDcyLCA2OSwgNzIsIDEyOCwgNjYsIDY5LCA3MiwgNjksIDIwMCwgNjYsIAorICAgIDY5LCA3MiwgMTI4LCA2NiwgNjksIDIwMCwgNjYsIDY5LCA3MSwgNzMsIDc4LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgCisgICAgNjksIDcxLCA3MywgNzgsIDc4LCA2OSwgODIsIDEyOCwgNjYsIDY5LCA3MSwgNzMsIDIwNiwgNjYsIDY5LCA3MCwgNzksIDgyLCAKKyAgICAxOTcsIDY2LCA2OSwgNjksIDg0LCA3NiwgNjksIDEyOCwgNjYsIDY5LCA2OSwgODQsIDY1LCAxMjgsIDY2LCA2OSwgNjksIAorICAgIDIxMCwgNjYsIDY5LCA2OSwgNzIsIDczLCA4NiwgNjksIDEyOCwgNjYsIDY5LCA2OSwgNzIsIDEyOCwgNjYsIDY5LCA2OSwgCisgICAgMjAwLCA2NiwgNjksIDY3LCA2NSwgODUsIDgzLCA2OSwgMTI4LCA2NiwgNjksIDY1LCA4NiwgNjksIDIxMCwgNjYsIDY5LCAKKyAgICA2NSwgODQsIDczLCA3OCwgMTk5LCA2NiwgNjksIDY1LCA4NCwgMTI4LCA2NiwgNjksIDY1LCAyMTAsIDY2LCA2OSwgNjUsIAorICAgIDc4LCAxMjgsIDY2LCA2OSwgNjUsIDc3LCA2OSwgMTk2LCA2NiwgNjcsIDY1LCA2OCwgMTI4LCA2NiwgNjcsIDY1LCAxOTYsIAorICAgIDY2LCA2NiwgODksIDg4LCAxMjgsIDY2LCA2NiwgODksIDg0LCAxMjgsIDY2LCA2NiwgODksIDgwLCAxMjgsIDY2LCA2NiwgCisgICAgODksIDEyOCwgNjYsIDY2LCA4NSwgODgsIDEyOCwgNjYsIDY2LCA4NSwgODQsIDEyOCwgNjYsIDY2LCA4NSwgODIsIDg4LCAKKyAgICAxMjgsIDY2LCA2NiwgODUsIDgyLCAxMjgsIDY2LCA2NiwgODUsIDgwLCAxMjgsIDY2LCA2NiwgODUsIDc5LCA4OCwgMTI4LCAKKyAgICA2NiwgNjYsIDg1LCA3OSwgODAsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDEyOCwgNjYsIDY2LCA4NSwgMTI4LCA2NiwgNjYsIAorICAgIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDc5LCA4NCwgMTI4LCA2NiwgNjYsIDc5LCA4MCwgMTI4LCA2NiwgNjYsIDc5LCAxMjgsIAorICAgIDY2LCA2NiwgNzMsIDg4LCAxMjgsIDY2LCA2NiwgNzMsIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4OCwgMTI4LCA2NiwgCisgICAgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIDY2LCA3MywgNjksIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCAxMjgsIDY2LCAKKyAgICA2NiwgNzMsIDEyOCwgNjYsIDY2LCA2OSwgODgsIDEyOCwgNjYsIDY2LCA2OSwgODAsIDEyOCwgNjYsIDY2LCA2OSwgNjksIAorICAgIDEyOCwgNjYsIDY2LCA2OSwgMTI4LCA2NiwgNjYsIDY1LCA4OCwgMTI4LCA2NiwgNjYsIDY1LCA4NCwgMTI4LCA2NiwgNjYsIAorICAgIDY1LCA4MCwgMTI4LCA2NiwgNjYsIDY1LCA2NSwgMTI4LCA2NiwgNjYsIDY1LCAxMjgsIDY2LCA2NSwgODksIDY1LCA3OCwgCisgICAgNzgsIDY1LCAxMjgsIDY2LCA2NSwgODUsIDEyOCwgNjYsIDY1LCA4NCwgODQsIDY5LCA4MiwgODksIDEyOCwgNjYsIDY1LCAKKyAgICA4NCwgNzIsIDg0LCA4NSwgNjYsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgNjYsIAorICAgIDY1LCA4NCwgNzIsIDEyOCwgNjYsIDY1LCA4NCwgMjAwLCA2NiwgNjUsIDg0LCA2NSwgMjAzLCA2NiwgNjUsIDgzLCA4MywgCisgICAgNjUsIDEyOCwgNjYsIDY1LCA4MywgNzUsIDY5LCA4NCwgNjYsIDY1LCA3NiwgMjA0LCA2NiwgNjUsIDgzLCA3MiwgNzUsIDczLCAKKyAgICAyMTAsIDY2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgODMsIDY5LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA2NiwgNjUsIAorICAgIDgzLCA2OSwgMTI4LCA2NiwgNjUsIDgzLCAxOTcsIDY2LCA2NSwgODIsIDgzLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA3MywgCisgICAgNjksIDgyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNzUsIDcyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNjksIAorICAgIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTcsIDY2LCA2NSwgODIsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDY2LCA2NSwgCisgICAgODIsIDc2LCA2OSwgODksIDEyOCwgNjYsIDY1LCA4MiwgNzMsIDg5LCA3OSwgNzksIDgzLCA2NSwgNzgsIDEyOCwgNjYsIDY1LCAKKyAgICA4MiwgNjYsIDY5LCAyMTAsIDY2LCA2NSwgODIsIDE5NCwgNjYsIDY1LCA4MiwgNjUsIDUwLCAxMjgsIDY2LCA2NSwgMjEwLCAKKyAgICA2NiwgNjUsIDc4LCA4NCwgNzksIDY3LCAxMjgsIDY2LCA2NSwgNzgsIDc1LCA3OCwgNzksIDg0LCAxOTcsIDY2LCA2NSwgNzgsIAorICAgIDc1LCAxMjgsIDY2LCA2NSwgNzgsIDIwMywgNjYsIDY1LCA3OCwgNjgsIDEyOCwgNjYsIDY1LCA3OCwgNjUsIDc4LCA2NSwgCisgICAgMTI4LCA2NiwgNjUsIDc4LCA1MCwgMTI4LCA2NiwgNjUsIDc4LCAxNzgsIDY2LCA2NSwgNzcsIDY2LCA3OSwgNzksIDgzLCAKKyAgICAxMjgsIDY2LCA2NSwgNzcsIDY2LCA3OSwgNzksIDEyOCwgNjYsIDY1LCA3NiwgODUsIDY4LCA2NSwgMTI4LCA2NiwgNjUsIAorICAgIDc2LCA3NiwgNzksIDIxMiwgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDQ1LCA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgCisgICAgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDEyOCwgNjYsIDY1LCA3NiwgNjUsIDcxLCAxMjgsIDY2LCA2NSwgNzYsIAorICAgIDEyOCwgNjYsIDY1LCAyMDQsIDY2LCA2NSwgNzMsIDgyLCA3NSwgNjUsIDc4LCAxMjgsIDY2LCA2NSwgNzMsIDc3LCA2NSwgCisgICAgNzMsIDEyOCwgNjYsIDY1LCA3MiwgODQsIDEyOCwgNjYsIDY1LCA3MiwgNzMsIDgyLCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCAKKyAgICA2NSwgMTI4LCA2NiwgNjUsIDcyLCA2NSwgODIsIDUwLCAxMjgsIDY2LCA2NSwgNzIsIDEyOCwgNjYsIDY1LCA3MSwgNzEsIAorICAgIDY1LCA3MSwgMTk3LCA2NiwgNjUsIDcxLCA2NSwgMTI4LCA2NiwgNjUsIDcxLCA1MSwgMTI4LCA2NiwgNjUsIDE5OSwgNjYsIAorICAgIDY1LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCA2NiwgNjUsIDY4LCA3MSwgNjksIDEyOCwgNjYsIDY1LCA2OCwgMTI4LCA2NiwgCisgICAgNjUsIDY3LCA4NCwgODIsIDczLCA2NSwgMjA2LCA2NiwgNjUsIDY3LCA3NSwgODcsIDY1LCA4MiwgNjgsIDEyOCwgNjYsIDY1LCAKKyAgICA2NywgNzUsIDgzLCA4MCwgNjUsIDY3LCA2OSwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgODMsIDcyLCAxMjgsIAorICAgIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgMjAwLCA2NiwgNjUsIDY3LCA3NSwgNzIsIDY1LCA3OCwgMTk2LCA2NiwgCisgICAgNjUsIDY3LCA3NSwgNDUsIDg0LCA3MywgNzYsIDg0LCA2OSwgMTk2LCA2NiwgNjUsIDY3LCA3NSwgMTI4LCA2NiwgNjUsIDY3LCAKKyAgICAyMDMsIDY2LCA2NSwgNjYsIDg5LCAxMjgsIDY2LCA2NSwgNjYsIDIxNywgNjYsIDY1LCA2NSwgODIsIDY5LCA4MiwgODUsIAorICAgIDEyOCwgNjYsIDY1LCA0NSwgNTAsIDEyOCwgNjYsIDUxLCA0OCwgNTMsIDEyOCwgNjYsIDUwLCA1MywgNTcsIDEyOCwgNjYsIAorICAgIDUwLCA1MywgNTYsIDEyOCwgNjYsIDUwLCA1MywgNTUsIDEyOCwgNjYsIDUwLCA1MywgNTQsIDEyOCwgNjYsIDUwLCA1MywgCisgICAgNTMsIDEyOCwgNjYsIDUwLCA1MywgMTgwLCA2NiwgNTAsIDUzLCA1MSwgMTI4LCA2NiwgNTAsIDUzLCA1MCwgMTI4LCA2NiwgCisgICAgNTAsIDUzLCA0OSwgMTI4LCA2NiwgNTAsIDUzLCA0OCwgMTI4LCA2NiwgNTAsIDUyLCA1NywgMTI4LCA2NiwgNTAsIDUyLCAKKyAgICA1NiwgMTI4LCA2NiwgNTAsIDUyLCAxODMsIDY2LCA1MCwgNTIsIDU0LCAxMjgsIDY2LCA1MCwgNTIsIDUzLCAxMjgsIDY2LCAKKyAgICA1MCwgNTIsIDE3OSwgNjYsIDUwLCA1MiwgMTc4LCA2NiwgNTAsIDUyLCAxNzcsIDY2LCA1MCwgNTIsIDE3NiwgNjYsIDUwLCAKKyAgICA1MSwgNTQsIDEyOCwgNjYsIDUwLCA1MSwgNTIsIDEyOCwgNjYsIDUwLCA1MSwgMTc5LCA2NiwgNTAsIDUxLCA1MCwgMTI4LCAKKyAgICA2NiwgNTAsIDUxLCAxNzcsIDY2LCA1MCwgNTEsIDE3NiwgNjYsIDUwLCA1MCwgNTcsIDEyOCwgNjYsIDUwLCA1MCwgNTYsIAorICAgIDEyOCwgNjYsIDUwLCA1MCwgNTUsIDEyOCwgNjYsIDUwLCA1MCwgNTQsIDEyOCwgNjYsIDUwLCA1MCwgMTgxLCA2NiwgNTAsIAorICAgIDUwLCA1MCwgMTI4LCA2NiwgNTAsIDUwLCA0OSwgMTI4LCA2NiwgNTAsIDUwLCAxNzYsIDY2LCA1MCwgNDksIDU3LCAxMjgsIAorICAgIDY2LCA1MCwgNDksIDU2LCAxMjgsIDY2LCA1MCwgNDksIDU1LCAxMjgsIDY2LCA1MCwgNDksIDU0LCAxMjgsIDY2LCA1MCwgCisgICAgNDksIDUzLCAxMjgsIDY2LCA1MCwgNDksIDUyLCAxMjgsIDY2LCA1MCwgNDksIDUxLCAxMjgsIDY2LCA1MCwgNDksIDUwLCAKKyAgICAxMjgsIDY2LCA1MCwgNDksIDQ5LCAxMjgsIDY2LCA1MCwgNDksIDQ4LCAxMjgsIDY2LCA1MCwgNDgsIDU3LCAxMjgsIDY2LCAKKyAgICA1MCwgNDgsIDU2LCAxMjgsIDY2LCA1MCwgNDgsIDU1LCAxMjgsIDY2LCA1MCwgNDgsIDU0LCAxMjgsIDY2LCA1MCwgNDgsIAorICAgIDUzLCAxMjgsIDY2LCA1MCwgNDgsIDUyLCAxMjgsIDY2LCA1MCwgNDgsIDUxLCAxMjgsIDY2LCA1MCwgNDgsIDUwLCAxMjgsIAorICAgIDY2LCA1MCwgNDgsIDQ5LCAxMjgsIDY2LCA1MCwgNDgsIDQ4LCAxMjgsIDY2LCA0OSwgNTcsIDE3NywgNjYsIDQ5LCA1NywgCisgICAgNDgsIDEyOCwgNjYsIDQ5LCA1NiwgNTcsIDEyOCwgNjYsIDQ5LCA1NiwgNTMsIDEyOCwgNjYsIDQ5LCA1NiwgNTIsIDEyOCwgCisgICAgNjYsIDQ5LCA1NiwgNTEsIDEyOCwgNjYsIDQ5LCA1NiwgNTAsIDEyOCwgNjYsIDQ5LCA1NiwgNDksIDEyOCwgNjYsIDQ5LCAKKyAgICA1NiwgNDgsIDEyOCwgNjYsIDQ5LCA1NSwgNTcsIDEyOCwgNjYsIDQ5LCA1NSwgNTYsIDEyOCwgNjYsIDQ5LCA1NSwgNTUsIAorICAgIDEyOCwgNjYsIDQ5LCA1NSwgMTgyLCA2NiwgNDksIDU1LCA1MiwgMTI4LCA2NiwgNDksIDU1LCAxNzksIDY2LCA0OSwgNTUsIAorICAgIDUwLCAxMjgsIDY2LCA0OSwgNTUsIDQ5LCAxMjgsIDY2LCA0OSwgNTUsIDQ4LCAxMjgsIDY2LCA0OSwgNTQsIDU3LCAxMjgsIAorICAgIDY2LCA0OSwgNTQsIDU2LCAxMjgsIDY2LCA0OSwgNTQsIDU1LCAxMjgsIDY2LCA0OSwgNTQsIDU0LCAxMjgsIDY2LCA0OSwgCisgICAgNTQsIDUzLCAxMjgsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIDY2LCA0OSwgNTQsIDE3OSwgNjYsIDQ5LCA1NCwgMTc4LCA2NiwgCisgICAgNDksIDU0LCA0OSwgMTI4LCA2NiwgNDksIDU0LCA0OCwgMTI4LCA2NiwgNDksIDUzLCAxODUsIDY2LCA0OSwgNTMsIDU2LCAKKyAgICAxMjgsIDY2LCA0OSwgNTMsIDU1LCAxMjgsIDY2LCA0OSwgNTMsIDE4MiwgNjYsIDQ5LCA1MywgNTMsIDEyOCwgNjYsIDQ5LCAKKyAgICA1MywgNTIsIDEyOCwgNjYsIDQ5LCA1MywgNTEsIDEyOCwgNjYsIDQ5LCA1MywgNTAsIDEyOCwgNjYsIDQ5LCA1MywgMTc3LCAKKyAgICA2NiwgNDksIDUzLCA0OCwgMTI4LCA2NiwgNDksIDUyLCA1NCwgMTI4LCA2NiwgNDksIDUyLCAxODEsIDY2LCA0OSwgNTIsIAorICAgIDUwLCAxMjgsIDY2LCA0OSwgNTIsIDE3NywgNjYsIDQ5LCA1MiwgMTc2LCA2NiwgNDksIDUxLCAxODEsIDY2LCA0OSwgNTEsIAorICAgIDE3OSwgNjYsIDQ5LCA1MSwgNTAsIDEyOCwgNjYsIDQ5LCA1MSwgMTc3LCA2NiwgNDksIDUxLCAxNzYsIDY2LCA0OSwgNTAsIAorICAgIDE4NCwgNjYsIDQ5LCA1MCwgMTgzLCA2NiwgNDksIDUwLCAxODEsIDY2LCA0OSwgNTAsIDE3OSwgNjYsIDQ5LCA1MCwgMTc4LCAKKyAgICA2NiwgNDksIDUwLCAxNzcsIDY2LCA0OSwgNTAsIDE3NiwgNjYsIDQ5LCA0OCwgNTcsIDIwNSwgNjYsIDQ5LCA0OCwgNTcsIAorICAgIDE5OCwgNjYsIDQ5LCA0OCwgNTYsIDIwNSwgNjYsIDQ5LCA0OCwgNTYsIDE5OCwgNjYsIDQ5LCA0OCwgNTUsIDIwNSwgNjYsIAorICAgIDQ5LCA0OCwgNTUsIDE5OCwgNjYsIDQ5LCA0OCwgNTQsIDIwNSwgNjYsIDQ5LCA0OCwgNTQsIDE5OCwgNjYsIDQ5LCA0OCwgCisgICAgNTMsIDIwNSwgNjYsIDQ5LCA0OCwgNTMsIDE5OCwgNjYsIDQ5LCA0OCwgMTgxLCA2NiwgNDksIDQ4LCAxODAsIDY2LCA0OSwgCisgICAgNDgsIDE3OCwgNjYsIDQ5LCA0OCwgMTc2LCA2NiwgNDgsIDU3LCAxNzcsIDY2LCA0OCwgNTcsIDE3NiwgNjYsIDQ4LCA1NiwgCisgICAgNTcsIDEyOCwgNjYsIDQ4LCA1NiwgMTgzLCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NiwgNDgsIDU2LCAxODEsIDY2LCA0OCwgCisgICAgNTYsIDUxLCAxMjgsIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY2LCA0OCwgNTYsIDE3NywgNjYsIDQ4LCA1NiwgMTc2LCA2NiwgCisgICAgNDgsIDU1LCA1NywgMTI4LCA2NiwgNDgsIDU1LCAxODQsIDY2LCA0OCwgNTUsIDE4MywgNjYsIDQ4LCA1NSwgMTgyLCA2NiwgCisgICAgNDgsIDU1LCAxODEsIDY2LCA0OCwgNTUsIDE4MCwgNjYsIDQ4LCA1NSwgMTc5LCA2NiwgNDgsIDU1LCAxNzgsIDY2LCA0OCwgCisgICAgNTUsIDE3NywgNjYsIDQ4LCA1NSwgMTc2LCA2NiwgNDgsIDU0LCAxODUsIDY2LCA0OCwgNTQsIDE4NCwgNjYsIDQ4LCA1NCwgCisgICAgMTgzLCA2NiwgNDgsIDU0LCAxODIsIDY2LCA0OCwgNTQsIDE4MSwgNjYsIDQ4LCA1NCwgNTIsIDEyOCwgNjYsIDQ4LCA1NCwgCisgICAgNTEsIDEyOCwgNjYsIDQ4LCA1NCwgMTc4LCA2NiwgNDgsIDU0LCAxNzcsIDY2LCA0OCwgNTQsIDE3NiwgNjYsIDQ4LCA1MywgCisgICAgMTg1LCA2NiwgNDgsIDUzLCAxODQsIDY2LCA0OCwgNTMsIDE4MywgNjYsIDQ4LCA1MywgNTQsIDEyOCwgNjYsIDQ4LCA1MywgCisgICAgMTgxLCA2NiwgNDgsIDUzLCAxODAsIDY2LCA0OCwgNTMsIDE3OSwgNjYsIDQ4LCA1MywgMTc4LCA2NiwgNDgsIDUzLCAxNzcsIAorICAgIDY2LCA0OCwgNTMsIDE3NiwgNjYsIDQ4LCA1MiwgNTcsIDEyOCwgNjYsIDQ4LCA1MiwgMTg0LCA2NiwgNDgsIDUyLCA1NSwgCisgICAgMTI4LCA2NiwgNDgsIDUyLCAxODIsIDY2LCA0OCwgNTIsIDE4MSwgNjYsIDQ4LCA1MiwgMTgwLCA2NiwgNDgsIDUyLCAxNzksIAorICAgIDY2LCA0OCwgNTIsIDE3OCwgNjYsIDQ4LCA1MiwgMTc3LCA2NiwgNDgsIDUyLCAxNzYsIDY2LCA0OCwgNTEsIDE4NSwgNjYsIAorICAgIDQ4LCA1MSwgMTg0LCA2NiwgNDgsIDUxLCAxODMsIDY2LCA0OCwgNTEsIDE4MiwgNjYsIDQ4LCA1MSwgNTIsIDEyOCwgNjYsIAorICAgIDQ4LCA1MSwgMTc5LCA2NiwgNDgsIDUxLCAxNzgsIDY2LCA0OCwgNTEsIDE3NywgNjYsIDQ4LCA1MSwgMTc2LCA2NiwgNDgsIAorICAgIDUwLCAxODUsIDY2LCA0OCwgNTAsIDE4NCwgNjYsIDQ4LCA1MCwgMTgzLCA2NiwgNDgsIDUwLCAxODIsIDY2LCA0OCwgNTAsIAorICAgIDE4MSwgNjYsIDQ4LCA1MCwgMTgwLCA2NiwgNDgsIDUwLCAxNzksIDY2LCA0OCwgNTAsIDUwLCAxMjgsIDY2LCA0OCwgNTAsIAorICAgIDE3NywgNjYsIDQ4LCA1MCwgMTc2LCA2NiwgNDgsIDQ5LCA1NywgMTI4LCA2NiwgNDgsIDQ5LCA1NiwgMTI4LCA2NiwgNDgsIAorICAgIDQ5LCAxODMsIDY2LCA0OCwgNDksIDE4MiwgNjYsIDQ4LCA0OSwgMTgxLCA2NiwgNDgsIDQ5LCAxODAsIDY2LCA0OCwgNDksIAorICAgIDE3OSwgNjYsIDQ4LCA0OSwgMTc4LCA2NiwgNDgsIDQ5LCAxNzcsIDY2LCA0OCwgNDksIDE3NiwgNjYsIDQ4LCA0OCwgNTcsIAorICAgIDEyOCwgNjYsIDQ4LCA0OCwgMTg1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NiwgNDgsIDQ4LCAxODQsIDY2LCA0OCwgNDgsIAorICAgIDU1LCAxMjgsIDY2LCA0OCwgNDgsIDE4MywgNjYsIDQ4LCA0OCwgNTQsIDEyOCwgNjYsIDQ4LCA0OCwgMTgyLCA2NiwgNDgsIAorICAgIDQ4LCA1MywgNjUsIDEyOCwgNjYsIDQ4LCA0OCwgNTMsIDEyOCwgNjYsIDQ4LCA0OCwgMTgxLCA2NiwgNDgsIDQ4LCA1MiwgCisgICAgMTI4LCA2NiwgNDgsIDQ4LCAxODAsIDY2LCA0OCwgNDgsIDUxLCAxMjgsIDY2LCA0OCwgNDgsIDE3OSwgNjYsIDQ4LCA0OCwgCisgICAgNTAsIDEyOCwgNjYsIDQ4LCA0OCwgMTc4LCA2NiwgNDgsIDQ4LCA0OSwgMTI4LCA2NiwgNDgsIDQ4LCAxNzcsIDY1LCA5MCwgCisgICAgODUsIDEyOCwgNjUsIDg5LCA2OSwgMjEwLCA2NSwgODksIDY2LCAxMjgsIDY1LCA4OSwgNjUsIDcyLCAxMjgsIDY1LCA4OCwgCisgICAgNjksIDEyOCwgNjUsIDg3LCA2OSwgMTI4LCA2NSwgODYsIDY5LCA4MywgODQsIDY1LCAyMDYsIDY1LCA4NiwgNjksIDgyLCAKKyAgICA2NSwgNzEsIDE5NywgNjUsIDg2LCA2NSwgNzUsIDgyLCA2NSwgNzIsIDY1LCA4MywgNjUsIDc4LCA4OSwgNjUsIDEyOCwgNjUsIAorICAgIDg2LCA2NSwgNzEsIDgyLCA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA4NSwgCisgICAgODQsIDg1LCA3NywgNzgsIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA3OSwgNjYsIDczLCA3NiwgNjksIDEyOCwgNjUsIDg1LCAKKyAgICA4NCwgNzksIDc3LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDIwNCwgNjUsIDg1LCA4MiwgNzMsIAorICAgIDgwLCA3MywgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCAKKyAgICA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDQ1LCA1MCwgMTI4LCA2NSwgODUsIAorICAgIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgMTI4LCA2NSwgODUsIDc4LCA3OCwgMTI4LCA2NSwgODUsIDcxLCA4NSwgCisgICAgODMsIDg0LCAxMjgsIDY1LCA4NSwgNzEsIDc3LCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgODUsIDY5LCAKKyAgICAxMjgsIDY1LCA4NSwgNjYsIDY5LCA4MiwgNzEsIDczLCA3OCwgNjksIDEyOCwgNjUsIDg0LCA4NCwgNzMsIDE5NSwgNjUsIAorICAgIDg0LCA4NCwgNzIsIDY1LCA2NywgNjUsIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgNjUsIDg0LCA4NCwgNjUsIDIwMywgNjUsIDg0LCA3OSwgMjA1LCA2NSwgODQsIDc4LCA2NSwgMjAwLCA2NSwgODQsIDc3LCAKKyAgICA2NSwgNjUsIDg1LCAxMjgsIDY1LCA4NCwgNzMsIDg5LCA2NSwgMTI4LCA2NSwgODQsIDcyLCA3NiwgNjksIDg0LCA3MywgCisgICAgMTk1LCA2NSwgODQsIDcyLCA2NSwgODIsIDg2LCA2NSwgODYsIDY5LCA2OCwgNzMsIDE5NSwgNjUsIDg0LCA3MiwgNjUsIDgwLCAKKyAgICA2NSwgODMsIDY3LCA2NSwgMjA2LCA2NSwgODMsIDkwLCAxMjgsIDY1LCA4MywgODksIDg1LCA4MiwgMTkzLCA2NSwgODMsIAorICAgIDg5LCA3NywgODAsIDg0LCA3OSwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA2NSwgODMsIDg0LCA4MiwgNzksIDc4LCAKKyAgICA3OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgNjUsIDgzLCA4NCwgODIsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIAorICAgIDY1LCA4MywgODQsIDc5LCA3OCwgNzMsIDgzLCA3MiwgNjksIDE5NiwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc3LCAKKyAgICAxMjgsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NSwgMjExLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzUsIAorICAgIDEyOCwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDIwMywgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDY3LCA4NSwgCisgICAgODMsIDEyOCwgNjUsIDgzLCA4MywgODksIDgyLCA3MywgNjUsIDIwNiwgNjUsIDgzLCA4MywgNjksIDgyLCA4NCwgNzMsIDc5LCAKKyAgICA3OCwgMTI4LCA2NSwgODMsIDgwLCA3MywgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODMsIDgwLCA3MywgODIsIAorICAgIDY1LCA4NCwgNjksIDE5NiwgNjUsIDgzLCA4MCwgNjksIDgyLCAxMjgsIDY1LCA4MywgNzMsIDY1LCA0NSwgNjUsIDg1LCA4MywgCisgICAgODQsIDgyLCA2NSwgNzYsIDczLCA2NSwgMTI4LCA2NSwgODMsIDcyLCA3MSwgNjUsIDY2LCAxMjgsIDY1LCA4MywgNzIsIDY5LCAKKyAgICA4MywgMTI4LCA2NSwgODMsIDcyLCA1NywgMTI4LCA2NSwgODMsIDcyLCAxNzgsIDY1LCA4MywgNjcsIDY5LCA3OCwgODQsIAorICAgIDEyOCwgNjUsIDgzLCA2NywgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY1LCA4MywgNjUsIDc2LCA1MCwgMTI4LCA2NSwgCisgICAgODIsIDg1LCA3MiwgODUsIDY1LCAxMjgsIDY1LCA4MiwgODQsIDczLCA4MywgMjEyLCA2NSwgODIsIDg0LCA3MywgNjcsIDg1LCAKKyAgICA3NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODIsIDg0LCA2NSwgNjYsIDE5NywgNjUsIDgyLCA4MywgNjksIDc5LCA4MywgCisgICAgMTI4LCA2NSwgODIsIDgzLCA2OSwgNzksIDIxMSwgNjUsIDgyLCA4MywgNjksIDc4LCA3MywgNjcsIDEyOCwgNjUsIDgyLCAKKyAgICA4MiwgNzksIDg3LCA4MywgMTI4LCA2NSwgODIsIDgyLCA3OSwgODcsIDIxMSwgNjUsIDgyLCA4MiwgNzksIDg3LCA3MiwgNjksIAorICAgIDY1LCA2OCwgMTI4LCA2NSwgODIsIDgyLCA3OSwgODcsIDcyLCA2OSwgNjUsIDE5NiwgNjUsIDgyLCA4MiwgNzksIDg3LCA0NSwgCisgICAgODQsIDY1LCA3MywgNzYsIDEyOCwgNjUsIDgyLCA4MiwgNzMsIDg2LCA2OSwgMTI4LCA2NSwgODIsIDgyLCA2NSwgODksIAorICAgIDEyOCwgNjUsIDgyLCA4MCwgNjksIDcxLCA3MSwgNzMsIDY1LCA4NCwgMjA3LCA2NSwgODIsIDc5LCA4NSwgODMsIDczLCA3OCwgCisgICAgMTk5LCA2NSwgODIsIDc5LCA4NSwgODIsIDE5MywgNjUsIDgyLCA3OSwgODUsIDc4LCA2OCwgNDUsIDgwLCA4MiwgNzksIDcwLCAKKyAgICA3MywgNzYsIDY5LCAxMjgsIDY1LCA4MiwgNzksIDg1LCA3OCwgMTk2LCA2NSwgODIsIDc3LCA4OSwgMTI4LCA2NSwgODIsIAorICAgIDc3LCA3OSwgODUsIDgyLCAxMjgsIDY1LCA4MiwgMjA1LCA2NSwgODIsIDc2LCA2NSwgODUsIDE5OSwgNjUsIDgyLCA3NSwgCisgICAgODQsIDczLCA3NSwgMjA3LCA2NSwgODIsIDc1LCA2NSwgNjYsIDEyOCwgNjUsIDgyLCA3NSwgNjUsIDY1LCA3OCwgODUsIAorICAgIDEyOCwgNjUsIDgyLCA3MywgODMsIDg0LCA2OSwgODIsIDY1LCAxMjgsIDY1LCA4MiwgNzMsIDgzLCA4NCwgNjksIDgyLCAKKyAgICAxOTMsIDY1LCA4MiwgNzMsIDY5LCA4MywgMTI4LCA2NSwgODIsIDcxLCA3OSwgODQsIDY5LCA4MiwgNzMsIDEyOCwgNjUsIAorICAgIDgyLCA3MSwgNzksIDgzLCA4OSwgNzgsIDg0LCA3MiwgNjksIDg0LCA3OSwgNzgsIDEyOCwgNjUsIDgyLCA3MSwgNzMsIDEyOCwgCisgICAgNjUsIDgyLCA2OSwgODAsIDY1LCAxMjgsIDY1LCA4MiwgNjksIDY1LCAxMjgsIDY1LCA4MiwgNjgsIDcyLCA2NSwgODYsIDczLCAKKyAgICA4MywgNjUsIDgyLCA3MSwgNjUsIDEyOCwgNjUsIDgyLCA2NywgNzIsIDY1LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MiwgNjcsIAorICAgIDcyLCA2NSwgNzMsIDc5LCAyMDYsIDY1LCA4MiwgNjcsIDcyLCA2NSwgNzMsIDE5NSwgNjUsIDgyLCA2NywgMjAwLCA2NSwgCisgICAgODIsIDY3LCAxMjgsIDY1LCA4MiwgMTk1LCA2NSwgODIsIDY1LCA3NywgNjUsIDczLCAxOTUsIDY1LCA4MiwgNjUsIDY5LCAKKyAgICA2NSwgNjksIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgODUsIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNzMsIAorICAgIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNjksIDc5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY5LCAKKyAgICAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY1LCAxMjgsIDY1LCA4MiwgNjUsIDY4LCAxMjgsIDY1LCA4MiwgNjUsIAorICAgIDE5NiwgNjUsIDgyLCA2NSwgNjYsIDczLCA2NywgNDUsIDczLCA3OCwgNjgsIDczLCAxOTUsIDY1LCA4MiwgNjUsIDY2LCA3MywgCisgICAgNjUsIDIwNiwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgNzcsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDY5LCAKKyAgICA2OSwgNzcsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDY1LCA3MCwgNzksIAorICAgIDgyLCA4NCwgNzMsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDE5MywgNjUsIDgwLCA4NSwgMjA2LCA2NSwgODAsIDgyLCA3MywgCisgICAgNzYsIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCA3NiwgMjE3LCA2NSwgODAsIDgwLCAKKyAgICA4MiwgNzksIDg4LCA3MywgNzcsIDY1LCA4NCwgNjksIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCA2OSwgCisgICAgMjExLCA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgNzIsIDEyOCwgNjUsIDgwLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDY1LCA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA4MCwgNzksIAorICAgIDg0LCA3MiwgNjksIDgzLCAxMjgsIDY1LCA4MCwgNzksIDg0LCA3MiwgNjksIDc3LCA2NSwgMTI4LCA2NSwgODAsIDc5LCA4MywgCisgICAgODQsIDgyLCA3OSwgODAsIDcyLCA2OSwgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCA4MywgMTI4LCAKKyAgICA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCAyMTEsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgCisgICAgNzksIDIwMSwgNjUsIDgwLCA3OSwgNjgsIDY5LCA4OCwgNzMsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDY4LCA2OSwgODIsIDc3LCAKKyAgICAxOTMsIDY1LCA4MCwgNzYsIDc5LCA4NSwgNzgsIDEyOCwgNjUsIDgwLCA3NiwgMjAxLCA2NSwgODAsIDIwNCwgNjUsIDgwLCAKKyAgICA3MywgNzgsIDEyOCwgNjUsIDgwLCA2OSwgODMsIDIwNywgNjUsIDgwLCA2NywgMTI4LCA2NSwgODAsIDY1LCA4MiwgODQsIAorICAgIDEyOCwgNjUsIDgwLCA2NSwgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIDg5LCA2NSwgCisgICAgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIAorICAgIDE5MywgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDY1LCAxMjgsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCAKKyAgICAxOTMsIDY1LCA3OCwgODQsIDczLCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIAorICAgIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDg5LCA0NSwgNTAsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDg5LCAKKyAgICAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCAyMTcsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCA3MywgNjUsIAorICAgIDg0LCA2OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzUsIDY5LCA3OCwgNzksIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgCisgICAgNzUsIDY5LCA3OCwgNzksIDc1LCA4OSwgNzYsIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3MCwgNzksIAorICAgIDc4LCA3MywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgNjksIDQ1LCAKKyAgICA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgCisgICAgODMsIDE5NywgNjUsIDc4LCA4NCwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNjksIDc4LCA3OCwgMTkzLCAKKyAgICA2NSwgNzgsIDg0LCA2NSwgODIsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDY1LCA3OCwgODMsIDg1LCAyMTgsIAorICAgIDY1LCA3OCwgODMsIDcyLCA2OSwgMTI4LCA2NSwgNzgsIDgwLCA2OSwgNjUsIDEyOCwgNjUsIDc4LCAyMDcsIDY1LCA3OCwgCisgICAgNzgsIDg1LCA3MywgODQsIDIxNywgNjUsIDc4LCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNzgsIDc4LCAKKyAgICA2NSwgNjUsIDg1LCAxMjgsIDY1LCA3OCwgNzUsIDcyLCAxMjgsIDY1LCA3OCwgNzQsIDczLCAxMjgsIDY1LCA3OCwgNzIsIAorICAgIDg1LCAxMjgsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDgyLCAxMjgsIDY1LCA3OCwgNzEsIDg1LCA3MywgODMsIDcyLCA2OSwgCisgICAgMTk2LCA2NSwgNzgsIDcxLCA4MywgODQsIDgyLCA3OSwgMjA1LCA2NSwgNzgsIDcxLCA4MiwgMjE3LCA2NSwgNzgsIDcxLCAKKyAgICA3NSwgNzIsIDY1LCA3OCwgNzUsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIDcxLCA2OSwgMjEwLCA2NSwgNzgsIDcxLCA2OSwgNzYsIAorICAgIDEyOCwgNjUsIDc4LCA3MSwgNjksIDY4LCAxMjgsIDY1LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA2NSwgNzgsIDY3LCA3OSwgCisgICAgODIsIDY1LCAxMjgsIDY1LCA3OCwgNjcsIDcyLCA3OSwgODIsIDEyOCwgNjUsIDc4LCA2NSwgODQsIDgyLCA3MywgNjcsIDcyLCAKKyAgICA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDY1LCA4MCwgMTI4LCA2NSwgNzcsIDgwLCA4MywgMTI4LCA2NSwgNzcsIAorICAgIDgwLCA2OSwgODIsIDgzLCA2NSwgNzgsIDY4LCAxMjgsIDY1LCA3NywgNzksIDg1LCA3OCwgMjEyLCA2NSwgNzcsIDY5LCA4MiwgCisgICAgNzMsIDY3LCA2NSwgODMsIDEyOCwgNjUsIDc3LCA2OSwgODIsIDczLCA2NywgNjUsIDIwNiwgNjUsIDc3LCA2NiwgODUsIDc2LCAKKyAgICA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNzcsIDY2LCAxOTMsIDY1LCA3NywgNjUsIDgyLCAxMjgsIDY1LCA3NywgNjUsIAorICAgIDIxMCwgNjUsIDc3LCA2NSwgNzYsIDcxLCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3NywgNjUsIDc2LCA3MSwgCisgICAgNjUsIDc3LCAxMjgsIDY1LCA3NiwgODYsIDY5LCA3OSwgNzYsIDY1LCAyMTAsIDY1LCA3NiwgODUsIDc3LCAxMjgsIDY1LCAKKyAgICA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgCisgICAgNzMsIDc5LCAyMDYsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgMTk3LCA2NSwgNzYsIDg0LCA2NSwgMTI4LCAKKyAgICA2NSwgNzYsIDgwLCA3MiwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgNzIsIDE5MywgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgNjUsIAorICAgIDc4LCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA2NSwgODAsIDgyLCA2NSwgNjUsIDc4LCAxOTMsIDY1LCA3NiwgODAsIDY1LCAKKyAgICAxMjgsIDY1LCA3NiwgNzcsIDc5LCA4MywgMjEyLCA2NSwgNzYsIDc2LCA3OSwgMTI4LCA2NSwgNzYsIDc2LCA3MywgNjUsIAorICAgIDc4LCA2NywgNjksIDEyOCwgNjUsIDc2LCA3NiwgMjAxLCA2NSwgNzYsIDc2LCA2NSwgMjAwLCA2NSwgNzYsIDc1LCA2NSwgCisgICAgNzYsIDczLCA0NSwgNTAsIDEyOCwgNjUsIDc2LCA3NSwgNjUsIDc2LCA3MywgMTI4LCA2NSwgNzYsIDczLCA3MSwgNzgsIDY5LCAKKyAgICAxOTYsIDY1LCA3NiwgNzMsIDcwLCA4NSwgMTI4LCA2NSwgNzYsIDczLCA2OSwgNzgsIDEyOCwgNjUsIDc2LCA3MywgNjksIAorICAgIDIwNiwgNjUsIDc2LCA3MSwgNzMsIDIxOCwgNjUsIDc2LCA3MCwgNjUsIDEyOCwgNjUsIDc2LCA2OSwgODUsIDIxMiwgNjUsIAorICAgIDc2LCA2OSwgODIsIDg0LCAxMjgsIDY1LCA3NiwgNjksIDgwLCA3MiwgMTI4LCA2NSwgNzYsIDY5LCA3NywgNjYsIDczLCA2NywgCisgICAgMTI4LCA2NSwgNzYsIDY5LCA3MCwgMTI4LCA2NSwgNzYsIDY1LCA4OSwgNzIsIDY5LCAxMjgsIDY1LCA3NiwgNjUsIDg5LCAKKyAgICA3MiwgMTk3LCA2NSwgNzYsIDY1LCA4MiwgMjA1LCA2NSwgNzYsIDY1LCA4MCwgNzIsIDEyOCwgNjUsIDc2LCA0NSwgNzYsIAorICAgIDY1LCA3NSwgODUsIDc4LCA2NSwgMTI4LCA2NSwgNzUsIDg0LCA3MywgNjksIDgzLCA2OSwgNzYsIDgzLCA3NSwgNjUsIDY2LCAKKyAgICAxMjgsIDY1LCA3NSwgODMsIDY1LCAxMjgsIDY1LCA3NSwgNzIsIDc3LCA3MywgNzcsIDczLCAxOTUsIDY1LCA3NSwgNjYsIAorICAgIDY1LCAyMTAsIDY1LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzUsIDY1LCA4MiwgMTkzLCA2NSwgNzMsIDg5LCA2NSwgCisgICAgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzMsIDg2LCA3MywgNzYsIDczLCAyMDMsIDY1LCA3MywgODQsIDc5LCAyMDYsIDY1LCAKKyAgICA3MywgODIsIDgwLCA3NiwgNjUsIDc4LCA2OSwgMTI4LCA2NSwgNzMsIDc4LCAyMTMsIDY1LCA3MywgNzgsIDc4LCAxMjgsIAorICAgIDY1LCA3MywgNzYsIDc3LCAxMjgsIDY1LCA3MywgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDczLCA3MiwgODYsIDg1LCA4MywgCisgICAgMTI4LCA2NSwgNzIsIDgzLCA2OCwgNjUsIDEyOCwgNjUsIDcyLCA4MywgNjUsIDEyOCwgNjUsIDcyLCA2NSwgNzgsIDE5OSwgCisgICAgNjUsIDcyLCA2NSwgNzEsIDcxLCA2NSwgMjEwLCA2NSwgNzIsIDY1LCA2OCwgMTI4LCA2NSwgNzEsIDg1LCA3OCwgNzEsIAorICAgIDEyOCwgNjUsIDcxLCA3OSwgNzEsIDIwMSwgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY1LCA3MSwgNzEsIDgyLCA2NSwgODYsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDcxLCA2NSwgNzMsIDc4LCAxMjgsIAorICAgIDY1LCA3MCwgODQsIDY5LCAyMTAsIDY1LCA3MCwgODMsIDY1LCA2NSwgODEsIDEyOCwgNjUsIDcwLCA4MiwgNzMsIDY3LCA2NSwgCisgICAgMjA2LCA2NSwgNzAsIDc5LCA4MiwgNjksIDc3LCA2OSwgNzgsIDg0LCA3MywgNzksIDc4LCA2OSwgNjgsIDEyOCwgNjUsIDcwLCAKKyAgICA3MSwgNzIsIDY1LCA3OCwgMjAxLCA2NSwgNzAsIDcwLCA4MiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNjksIAorICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjksIDg5LCAxMjgsIDY1LCA2OSwgODMsIDY3LCA4NSwgNzYsIDY1LCA4MCwgCisgICAgNzMsIDg1LCA4MywgMTI4LCA2NSwgNjksIDgzLCA2NywgMTI4LCA2NSwgNjksIDgzLCAxMjgsIDY1LCA2OSwgODIsIDczLCAKKyAgICA2NSwgMjA0LCA2NSwgNjksIDgyLCAxMjgsIDY1LCA2OSwgNzYsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIAorICAgIDY1LCA2OSwgNzYsIDEyOCwgNjUsIDY5LCA3NSwgMTI4LCA2NSwgNjksIDcxLCA2OSwgNjUsIDIwNiwgNjUsIDY5LCA3MSwgCisgICAgMTI4LCA2NSwgNjksIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDY5LCA2OSwgMTI4LCA2NSwgNjksIDY4LCAKKyAgICA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NSwgNjksIDY4LCAxMjgsIDY1LCA2OSwgNjYsIDEyOCwgNjUsIAorICAgIDY4LCA4NiwgNjUsIDc4LCA4NCwgNjUsIDcxLCA2OSwgMTI4LCA2NSwgNjgsIDg2LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgCisgICAgNjgsIDY5LCA3MSwgMTI4LCA2NSwgNjgsIDY5LCAxOTksIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDgzLCA2OSwgMTk2LCAKKyAgICA2NSwgNjgsIDY4LCA4MiwgNjksIDgzLCAyMTEsIDY1LCA2OCwgNjgsIDY1LCA3NSwgMTI4LCA2NSwgNjgsIDY1LCAyMDMsIAorICAgIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA4NSwgODQsIDY5LCAKKyAgICA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCAxMjgsIDY1LCA2NywgODUsIDg0LCAxOTcsIAorICAgIDY1LCA2NywgODQsIDg1LCA2NSwgNzYsIDc2LCAyMTcsIDY1LCA2NywgODQsIDczLCA4NiwgNjUsIDg0LCAxOTcsIDY1LCA2NywgCisgICAgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNzMsIDE5NSwgNjUsIDY3LCA3NSwgNzgsIDc5LCA4NywgNzYsIDY5LCA2OCwgNzEsIAorICAgIDY5LCAxMjgsIDY1LCA2NywgNjcsIDg1LCA3NywgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA2NywgCisgICAgNzksIDg1LCA3OCwgMjEyLCA2NSwgNjcsIDY3LCA2OSwgODAsIDg0LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgNjcsIAorICAgIDY3LCA2OSwgNzgsIDIxMiwgNjUsIDY3LCA2NSwgNjgsIDY5LCA3NywgMjE3LCA2NSwgNjYsIDg5LCA4MywgNzcsIDY1LCAKKyAgICAyMDQsIDY1LCA2NiwgODUsIDc4LCA2OCwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDY2LCA3NSwgNzIsIDY1LCA4MywgNzMsIAorICAgIDY1LCAyMDYsIDY1LCA2NiwgNjYsIDgyLCA2OSwgODYsIDczLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNjYsIDY1LCA3MCwgCisgICAgNzMsIDc2LCA3MywgMTI4LCA2NSwgNjYsIDE3OCwgNjUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDY1LCAKKyAgICA4OSwgMTI4LCA2NSwgNjUsIDg3LCAxMjgsIDY1LCA2NSwgNzksIDEyOCwgNjUsIDY1LCA3NCwgMTI4LCA2NSwgNjUsIDY2LCAKKyAgICA2NSwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNDksIAorICAgIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgCisgICAgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCAKKyAgICA1MCwgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MSwgMTI4LCA2NSwgNjUsIAorICAgIDQ4LCA1MCwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OCwgMTI4LCA2NSwgCisgICAgNjUsIDQ4LCA0OSwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NSwgMTI4LCAKKyAgICA2NSwgNjUsIDQ4LCA0OSwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MiwgCisgICAgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCAKKyAgICA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU3LCAxMjgsIDY1LCA2NSwgNDgsIAorICAgIDQ4LCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgCisgICAgNjUsIDY1LCA0OCwgNDgsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTMsIAorICAgIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgCisgICAgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDQ5LCAxMjgsIDY1LCA0OCwgNTUsIDQ4LCAxMjgsIDY1LCA0OCwgNTQsIDU3LCAKKyAgICAxMjgsIDY1LCA0OCwgNTQsIDU2LCAxMjgsIDY1LCA0OCwgNTQsIDU1LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCAKKyAgICA0OCwgNTQsIDUzLCAxMjgsIDY1LCA0OCwgNTQsIDUyLCAxMjgsIDY1LCA0OCwgNTQsIDUxLCAxMjgsIDY1LCA0OCwgNTQsIAorICAgIDUwLCAxMjgsIDY1LCA0OCwgNTQsIDQ5LCAxMjgsIDY1LCA0OCwgNTQsIDQ4LCAxMjgsIDY1LCA0OCwgNTMsIDU3LCAxMjgsIAorICAgIDY1LCA0OCwgNTMsIDU2LCAxMjgsIDY1LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCA0OCwgNTMsIDU0LCAxMjgsIDY1LCA0OCwgCisgICAgNTMsIDUzLCAxMjgsIDY1LCA0OCwgNTMsIDUyLCAxMjgsIDY1LCA0OCwgNTMsIDUxLCAxMjgsIDY1LCA0OCwgNTMsIDUwLCAKKyAgICAxMjgsIDY1LCA0OCwgNTMsIDQ5LCAxMjgsIDY1LCA0OCwgNTMsIDQ4LCAxMjgsIDY1LCA0OCwgNTIsIDU3LCAxMjgsIDY1LCAKKyAgICA0OCwgNTIsIDU2LCAxMjgsIDY1LCA0OCwgNTIsIDU1LCAxMjgsIDY1LCA0OCwgNTIsIDU0LCAxMjgsIDY1LCA0OCwgNTIsIAorICAgIDUzLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1MywgMTI4LCA2NSwgNDgsIDUyLCA1MiwgMTI4LCA2NSwgNDgsIDUyLCA1MSwgCisgICAgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTEsIDEyOCwgNjUsIDQ4LCA1MiwgNTAsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUwLCAKKyAgICAxMjgsIDY1LCA0OCwgNTIsIDQ5LCAxMjgsIDY1LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA0OCwgMTI4LCAKKyAgICA2NSwgNDgsIDUxLCA1NywgMTI4LCA2NSwgNDgsIDUxLCA1NiwgMTI4LCA2NSwgNDgsIDUxLCA1NSwgMTI4LCA2NSwgNDgsIAorICAgIDUxLCA1NCwgMTI4LCA2NSwgNDgsIDUxLCA1MywgMTI4LCA2NSwgNDgsIDUxLCA1MiwgMTI4LCA2NSwgNDgsIDUxLCA1MSwgCisgICAgMTI4LCA2NSwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDUyLCAKKyAgICA2NSwgMTI4LCA2NSwgNDgsIDQ4LCA1NCwgNjYsIDEyOCwgNjUsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNDgsIAorICAgIDUzLCA2NSwgMTI4LCA2NSwgNDUsIDY5LCA4NSwgMTI4LCA0NSwgODUsIDIwNSwgNDUsIDgwLCA3MiwgODIsIDg1LCAxMjgsIAorICAgIDQ1LCA3NSwgNzIsIDg5LCA4NSwgMTk2LCA0NSwgNzUsIDcyLCA4OSwgNzMsIDc2LCAxMjgsIDQ1LCA2OCwgOTAsIDg1LCAKKyAgICAxOTYsIDQ1LCA2NywgNzIsIDY1LCAyMTAsIDQ1LCA2NywgNzIsIDY1LCA3NiwgMTI4LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgbGV4aWNvbl9vZmZzZXRbXSA9IHsKLSAgICAwLCAwLCA2LCAxMCwgMTUsIDIzLCAyNywgMzQsIDM5LCA0MSwgNDQsIDUyLCA2MiwgNjgsIDgxLCA5MywgMTAyLCAxMDgsIAotICAgIDExMywgMTIxLCAxMzAsIDEzNSwgMTQwLCAxNDQsIDE1MCwgMTUzLCAxNTgsIDE2NiwgMTczLCAxODEsIDE4NiwgMTkxLCAKLSAgICAxOTQsIDIwMCwgMjA4LCAyMTUsIDIyNSwgMjMyLCAyNDEsIDI0NCwgMjQ3LCAyNTIsIDI1OCwgMjYyLCAyNzEsIDI3OCwgCi0gICAgMjg1LCAyOTAsIDI5OSwgMzA3LCAzMTMsIDMxOSwgMzI1LCAxNDEsIDMzMCwgMzMxLCAzMzcsIDM0NSwgMzUxLCAzNTcsIAotICAgIDM2NSwgMzcyLCAzNzQsIDM3NywgMzgxLCAzODgsIDM5MCwgMzk3LCA0MDIsIDQwOCwgNDEwLCA0MTcsIDQyNSwgNDI3LCAKLSAgICAzMTEsIDQzMCwgNDMyLCA0MzcsIDQ0MiwgNDQ3LCA0NTMsIDQ2MCwgNDY5LCA0NzksIDQ4NCwgNDg5LCA0OTMsIDUwNiwgCi0gICAgNTEzLCA1MTcsIDUyNiwgNTMzLCA1NDAsIDU0MywgNTQ5LCA1NTMsIDU2MywgNTcxLCA1NzksIDU4OCwgNTk2LCA2MDQsIAotICAgIDYwOSwgNjE3LCA2MjQsIDYzNCwgNjQ1LCA2NDksIDY1NCwgNjU3LCA2NjEsIDY2NSwgNjY2LCA2NzIsIDY3OCwgNjgwLCAKLSAgICA2ODMsIDY4NywgMzQ0LCA2OTAsIDY5NCwgNzAzLCA3MDYsIDcwOSwgNzE0LCA3MTgsIDcyNiwgNzI5LCA3MzUsIDc0MiwgCi0gICAgNzQ5LCA3NTgsIDc2NSwgNzc0LCA3NzksIDc4MywgNzkyLCA4MDIsIDgxMSwgODE3LCA4MjMsIDgzMCwgODM4LCA4NDYsIAotICAgIDg1NSwgODYzLCA4NjcsIDg3NSwgODgwLCA3ODEsIDUxMSwgODg5LCA4OTMsIDg5NywgOTA0LCA5MDgsIDkxNSwgNjg5LCAKLSAgICA5MTgsIDkyNiwgOTI5LCA5MzMsIDk0MCwgOTQ0LCA5NDksIDk1NywgOTYwLCAxOTIsIDk2NiwgOTcxLCA5ODEsIDk5MCwgCi0gICAgOTk3LCAxMDA0LCAxMDEyLCAxMDIwLCAxMDI2LCAxMDMwLCAxMDM1LCAxMDQwLCAxMDQ2LCAxMDUxLCAxMDU0LCAxMTEsIAotICAgIDEwNjAsIDEwNjQsIDEwNzAsIDEwNzMsIDEwODYsIDEwODksIDEwOTMsIDIyLCAxMDk3LCAxMTAyLCAxMTA1LCAxMTA4LCAKLSAgICAxMTE0LCAxMTI0LCAxMTI2LCAxMTMyLCAxMTQyLCAxMTQ3LCAxMTU2LCAxMTY0LCAzMjgsIDExNjcsIDExNzAsIDExNzQsIAotICAgIDExNzksIDExODUsIDExOTAsIDExOTcsIDExOTksIDEyMDQsIDEyMDksIDEyMTUsIDEyMjAsIDEyMjUsIDEyMjksIDEyMzQsIAotICAgIDEyNDAsIDEyNDUsIDEyNTAsIDEyNTQsIDEyNTksIDEyNjQsIDEyNjgsIDEyNzMsIDEyNzgsIDEyODMsIDEyODksIDEyOTUsIAotICAgIDEzMDEsIDEzMDYsIDEzMTAsIDEzMTUsIDEzMjAsIDEzMjUsIDEzMjksIDEzMzQsIDEzMzksIDEzNDQsIDEzNDksIDEyMDAsIAotICAgIDEyMDUsIDEyMTAsIDEyMTYsIDEyMjEsIDEzNTMsIDEyMjYsIDEzNTksIDEzNjgsIDEyMzAsIDEzNzIsIDEyMzUsIDEyNDEsIAotICAgIDEyNDYsIDEzNzYsIDEzODEsIDEzODYsIDEzOTAsIDEzOTQsIDE0MDAsIDE0MDQsIDEyNTEsIDE0MDcsIDE0MTEsIDEyNTUsIAotICAgIDE0MTcsIDEyNjAsIDE0MjEsIDE0MjUsIDEyNjUsIDE0MjksIDE0MzQsIDE0MzgsIDE0NDEsIDE0NDUsIDEyNjksIDEyNzQsIAotICAgIDE0NTAsIDEyNzksIDE0NTYsIDE0NjIsIDE0NjgsIDE0NzQsIDEyODQsIDEyOTYsIDEzMDIsIDE0NzgsIDE0ODIsIDE0ODYsIAotICAgIDE0ODksIDEzMDcsIDE0OTMsIDE0OTUsIDE1MDAsIDE1MDUsIDE1MTEsIDE1MTYsIDE1MjEsIDE1MjUsIDE1MzAsIDE1MzUsIAotICAgIDE1NDAsIDE1NDUsIDE1NTEsIDE1NTYsIDE1NjEsIDE1NjcsIDE1NzMsIDE1NzgsIDE1ODIsIDE1ODcsIDE1OTIsIDE1OTcsIAotICAgIDE2MDIsIDE2MDYsIDE2MTQsIDE2MTgsIDE2MjMsIDE2MjgsIDE2MzMsIDE2MzgsIDE2NDIsIDE2NDUsIDE2NTAsIDE2NTUsIAotICAgIDE2NjAsIDE2NjUsIDE2NzEsIDE2NzYsIDE2ODAsIDEzMTEsIDE2ODMsIDE2ODgsIDE2OTMsIDEzMTYsIDE2OTcsIDE3MDEsIAotICAgIDE3MDgsIDEzMjEsIDE3MTUsIDEzMjYsIDE3MTksIDE3MjEsIDE3MjYsIDE3MzIsIDEzMzAsIDE3MzcsIDE3NDYsIDEzMzUsIAotICAgIDE3NTEsIDE3NTcsIDEzNDAsIDE3NjIsIDE3NjcsIDE3NzAsIDE3NzUsIDE3NzksIDE3ODMsIDE3ODcsIDE3OTAsIDE3OTQsIAotICAgIDEzNDUsIDEzNTAsIDExMDAsIDE3OTksIDE4MDUsIDE4MTEsIDE4MTcsIDE4MjMsIDE4MjksIDE4MzUsIDE4NDEsIDE4NDcsIAotICAgIDE4NTIsIDE4NTgsIDE4NjQsIDE4NzAsIDE4NzYsIDE4ODIsIDE4ODgsIDE4OTQsIDE5MDAsIDE5MDYsIDE5MTEsIDE5MTYsIAotICAgIDE5MjEsIDE5MjYsIDE5MzEsIDE5MzYsIDE5NDEsIDE5NDYsIDE5NTEsIDE5NTYsIDE5NjIsIDE5NjcsIDE5NzMsIDE5NzgsIAotICAgIDE5ODQsIDE5OTAsIDE5OTUsIDIwMDEsIDIwMDcsIDIwMTMsIDIwMTksIDIwMjQsIDIwMjksIDIwMzEsIDIwMzIsIDIwMzYsIAotICAgIDIwNDAsIDIwNDUsIDIwNDksIDIwNTMsIDIwNTcsIDIwNjEsIDIwNjQsIDIwNjksIDIwNzMsIDIwNzgsIDIwODIsIDIwODYsIAotICAgIDIwOTEsIDIwOTUsIDIwOTgsIDIxMDIsIDIxMDgsIDIxMjIsIDIxMjYsIDIxMzAsIDIxMzMsIDIxMzgsIDIxNDIsIDIxNDYsIAotICAgIDIxNDksIDIxNTMsIDIxNTgsIDIxNjMsIDIxNjgsIDIxNzMsIDIxNzcsIDIxODEsIDIxODUsIDIxOTAsIDIxOTQsIDIxOTksIAotICAgIDIyMDMsIDIyMDgsIDIyMTQsIDIyMjEsIDIyMjcsIDIyMzIsIDIyMzcsIDIyNDIsIDIyNDgsIDIyNTMsIDIyNTksIDIyNjQsIAotICAgIDIyNjcsIDEyMTcsIDIyNjksIDIyNzYsIDIyODQsIDIyOTQsIDIzMDMsIDIzMTcsIDIzMjEsIDIzMjUsIDIzMzgsIDIzNDYsIAotICAgIDIzNTAsIDIzNTUsIDIzNTksIDIzNjIsIDIzNjYsIDIzNzAsIDIzNzUsIDIzODAsIDIzODUsIDIzODksIDIzOTIsIDIzOTYsIAotICAgIDI0MDMsIDI0MTAsIDI0MTYsIDI0MjEsIDI0MjYsIDI0MzIsIDI0MzgsIDI0NDMsIDI0NDYsIDE3MjMsIDI0NDgsIDI0NTQsIAotICAgIDI0NTgsIDI0NjMsIDI0NjcsIDI0NzEsIDE3MjgsIDE3MzQsIDI0NzYsIDI0ODAsIDI0ODMsIDI0ODgsIDI0OTMsIDI0OTgsIAotICAgIDI1MDMsIDI1MDcsIDI1MTQsIDI1MTksIDI1MjIsIDI1MjksIDI1MzUsIDI1MzksIDI1NDMsIDI1NDcsIDI1NTIsIDI1NTksIAotICAgIDI1NjQsIDI1NjksIDI1NzYsIDI1ODIsIDI1ODgsIDI1OTQsIDI2MDgsIDI2MjUsIDI2NDAsIDI2NTUsIDI2NjQsIDI2NjksIAotICAgIDI2NzMsIDI2NzgsIDI2ODMsIDI2ODcsIDI2OTksIDI3MDYsIDI3MTIsIDIyMTcsIDI3MTgsIDI3MjUsIDI3MzEsIDI3MzUsIAotICAgIDI3MzgsIDI3NDUsIDI3NTEsIDI3NTUsIDI3NTksIDI3NjMsIDIwNTQsIDI3NjcsIDI3NzIsIDI3NzcsIDI3ODEsIDI3ODksIAotICAgIDI3OTMsIDI3OTcsIDI4MDEsIDI4MDYsIDI4MTEsIDI4MTYsIDI4MjAsIDI4MjUsIDI4MzAsIDI4MzQsIDI4MzksIDI4NDMsIAotICAgIDI4NDYsIDI4NTAsIDI4NTQsIDI4NTksIDI4NjMsIDI4NjcsIDI4NzMsIDI4ODIsIDI4ODYsIDI4OTAsIDI4OTYsIDI5MDEsIAotICAgIDI5MDgsIDI5MTIsIDI5MjIsIDI5MjYsIDI5MzEsIDI5MzUsIDI5NDAsIDI5NDYsIDI5NTEsIDI5NTUsIDI5NTksIDI5NjMsIAotICAgIDI0MDYsIDI5NzEsIDI5NzYsIDI5ODIsIDI5ODcsIDI5OTEsIDI5OTYsIDMwMDEsIDMwMDUsIDMwMTEsIDMwMTYsIDMwMjIsIAotICAgIDMwMjYsIDMwMzIsIDMwMzcsIDMwNDIsIDMwNDcsIDMwNTIsIDMwNTcsIDMwNjIsIDMwNjcsIDMwNzIsIDMwNzcsIDMwODMsIAotICAgIDMwODgsIDEyMjcsIDgwLCAzMDk0LCAzMDk4LCAzMTAyLCAzMTA2LCAzMTExLCAzMTE1LCAzMTE5LCAzMTIzLCAzMTI3LCAKLSAgICAzMTMyLCAzMTM2LCAzMTQxLCAzMTQ1LCAzMTQ4LCAzMTUyLCAzMTU3LCAzMTYxLCAzMTY2LCAzMTcwLCAzMTc0LCAzMTc4LCAKLSAgICAzMTgzLCAzMTg3LCAzMTkwLCAzMjAzLCAzMjA3LCAzMjExLCAzMjE1LCAzMjE5LCAzMjIzLCAzMjI2LCAzMjMwLCAzMjM0LCAKLSAgICAzMjM5LCAzMjQzLCAzMjQ4LCAzMjUzLCAzMjU4LCAzMjYyLCAzMjY1LCAzMjY4LCAzMjc0LCAzMjc4LCAzMjgyLCAzMjg1LCAKLSAgICAzMjg5LCAzMjkzLCAzMjk2LCAzMzAyLCAzMzA3LCAzMzEyLCAzMzE4LCAzMzIzLCAzMzI4LCAzMzM0LCAzMzQwLCAzMzQ1LCAKLSAgICAzMzUwLCAzMzU1LCAxMDkxLCA1NDIsIDMzNjAsIDMzNjMsIDMzNjgsIDMzNzIsIDMzNzUsIDMzNzksIDMzODQsIDMzODksIAotICAgIDMzOTMsIDMzOTgsIDM0MDIsIDM0MDcsIDM0MTEsIDM0MTUsIDM0MjEsIDM0MjcsIDM0MzAsIDM0MzMsIDM0MzksIDM0NDYsIAotICAgIDM0NTMsIDM0NTksIDM0NjYsIDM0NzEsIDM0NzUsIDM0ODIsIDM0ODcsIDM0OTEsIDM1MDEsIDM1MDUsIDM1MDksIDM1MTQsIAotICAgIDM1MTksIDM1MjksIDIwNjUsIDM1MzQsIDM1MzgsIDM1NDEsIDM1NDcsIDM1NTIsIDM1NTgsIDM1NjQsIDM1NjksIDM1NzYsIAotICAgIDM1ODAsIDM1ODQsIDY1OCwgNjg4LCAzNTg4LCAzNTk1LCAzNjAyLCAzNjA5LCAzNjE1LCAzNjIxLCAzNjI2LCAzNjMwLCAKLSAgICAzNjM2LCAzNjQxLCAzNjQ1LCAyMDc0LCAzNjQ5LCAzNjU3LCA1ODMsIDM2NjMsIDM2NzQsIDM2NzgsIDM2ODgsIDIwNzksIAotICAgIDM2OTQsIDM2OTksIDM3MTQsIDM3MjAsIDM3MjcsIDM3MzcsIDM3NDMsIDM3NDgsIDM3NTQsIDM3NjAsIDM3NjMsIDM3NjcsIAotICAgIDM3NzIsIDM3NzksIDM3ODQsIDM3ODgsIDM3OTIsIDM3OTYsIDM4MDAsIDM4MDUsIDM4MTEsIDMxNTMsIDM4MTYsIDM4MjgsIAotICAgIDM4MzYsIDM4NDEsIDE1MjcsIDM4NDgsIDM4NTEsIDM4NTQsIDM4NTgsIDM4NjEsIDM4NjcsIDM4NzEsIDM4ODUsIDM4ODksIAotICAgIDM4OTIsIDM4OTYsIDM5MDIsIDM5MDgsIDM5MTMsIDM5MTcsIDM5MjEsIDM5MjcsIDM5MzgsIDM5NDQsIDM5NDksIDM5NTUsIAotICAgIDM5NTksIDM5NjcsIDM5NzcsIDM5ODMsIDM5ODgsIDM5OTcsIDQwMDUsIDQwMTIsIDQwMTYsIDQwMjIsIDQwMzEsIDQwNDAsIAotICAgIDQwNDQsIDQwNDksIDQwNTQsIDQwNTgsIDQwNjYsIDQwNzAsIDQwNzUsIDQwNzksIDIwODcsIDEzNjksIDQwODUsIDQwOTAsIAotICAgIDQwOTYsIDQxMDEsIDQxMDYsIDQxMTEsIDQxMTYsIDQxMjEsIDQxMjYsIDQxMzIsIDQxMzcsIDQxNDMsIDQxNDgsIDQxNTMsIAotICAgIDQxNTgsIDQxNjQsIDQxNjksIDQxNzQsIDQxNzksIDQxODQsIDQxOTAsIDQxOTUsIDQyMDEsIDQyMDYsIDQyMTEsIDQyMTYsIAotICAgIDQyMjEsIDQyMjYsIDQyMzEsIDQyMzcsIDQyNDIsIDQyNDcsIDMzNSwgNDM2LCA0MjUyLCA0MjU4LCA0MjYyLCA0MjY2LCAKLSAgICA0MjcxLCA0Mjc1LCA0Mjc5LCA0MjgyLCA0Mjg2LCA0MjkwLCA0Mjk0LCA0Mjk5LCA0MzAzLCA0MzA3LCA0MzEzLCA0MDgyLCAKLSAgICA0MzE4LCA0MzIxLCA0MzI4LCA0MzMyLCA0MzQ1LCA0MzQ5LCA0MzUzLCA0MzU3LCA0MzYxLCA0MzY1LCA0MzY5LCA0Mzc1LCAKLSAgICA0MzgyLCA0MzkwLCA0Mzk0LCA0NDAyLCA0NDExLCA0NDE3LCA0NDI5LCA0NDM0LCA0NDM3LCA0NDQxLCA0NDUxLCA0NDU5LCAKLSAgICA0NDY3LCA0NDczLCA0NDc3LCA0NDg3LCA0NDk3LCA0NTA1LCA0NTEyLCA0NTE5LCA0NTI1LCA0NTMxLCA0NTM4LCA0NTQyLCAKLSAgICA0NTQ5LCA0NTU5LCA0NTY5LCA0NTc3LCA0NTg0LCA0NTg5LCA0NTkzLCA0NjAxLCA0NjA2LCA0NjEzLCA0NjIxLCA0NjI2LCAKLSAgICA0NjMxLCA0NjM1LCA0NjQ5LCA0NjU0LCA0NjU5LCA0NjY2LCA0Njc1LCA0Njc4LCA0NjgyLCA0Njg2LCA0Njg5LCA0Njk0LCAKLSAgICA0Njk5LCA0NzA4LCA0NzE0LCA0NzIwLCA0NzI2LCA0NzMwLCA0NzQxLCA0NzUxLCA0NzY2LCA0NzgxLCA0Nzk2LCA0ODExLCAKLSAgICA0ODI2LCA0ODQxLCA0ODU2LCA0ODcxLCA0ODg2LCA0OTAxLCA0OTE2LCA0OTMxLCA0OTQ2LCA0OTYxLCA0OTc2LCA0OTkxLCAKLSAgICA1MDA2LCA1MDIxLCA1MDM2LCA1MDUxLCA1MDY2LCA1MDgxLCA1MDk2LCA1MTExLCA1MTI2LCA1MTQxLCA1MTU2LCA1MTcxLCAKLSAgICA1MTg2LCA1MjAxLCA1MjE2LCA1MjMxLCA1MjQ2LCA1MjYxLCA1Mjc2LCA1MjkxLCA1MzA2LCA1MzIxLCA1MzM2LCA1MzUxLCAKLSAgICA1MzY2LCA1MzgxLCA1Mzk2LCA1NDExLCA1NDI2LCA1NDQxLCA1NDU2LCA1NDcxLCA1NDg2LCA1NDk1LCA1NTA0LCA1NTA5LCAKLSAgICA1NTE1LCA1NTI1LCA1NTI5LCA1NTM0LCA1NTM5LCA1NTQ3LCA1NTUxLCA1NTU0LCA1NTU4LCAyOTE3LCA1NTYxLCA1NTY2LCAKLSAgICAzMTAsIDQ0NSwgNTU3MiwgNTU4MCwgNTU4NCwgNTU4OCwgNTU5MSwgNTU5NywgNTYwMSwgNTYwOSwgNTYxNSwgNTYyMCwgCi0gICAgNTYyNywgNTYzNCwgNTY0MCwgNTY0NSwgNTY1MiwgNTY1OCwgNTY2NiwgNTY3MCwgNTY3NSwgNTY4NywgNTY5OCwgNTcwNSwgCi0gICAgNTcxMSwgMzE3NSwgNTcxNSwgNTcyMSwgNTcyNiwgNTczMSwgNTczNiwgNTc0MiwgNTc0NywgNTc1MiwgNTc1NywgNTc2MiwgCi0gICAgNTc2OCwgNTc3MywgNTc3OCwgNTc4NCwgNTc4OSwgNTc5NSwgNTgwMCwgNTgwNiwgNTgxMSwgNTgxNywgNTgyMiwgNTgyNywgCi0gICAgNTgzMiwgNTgzNywgNTg0MiwgNTg0OCwgNTg1MywgNTg1OCwgNTg2MywgNTg2OSwgNTg3NSwgNTg4MSwgNTg4NywgNTg5MywgCi0gICAgNTg5OSwgNTkwNSwgNTkxMSwgNTkxNywgNTkyMywgNTkyOSwgNTkzNSwgNTk0MCwgNTk0NSwgNTk1MCwgNTk1NSwgNTk2MCwgCi0gICAgNTk2NSwgNTk3MCwgNTk3NSwgNTk4MSwgNTk4NywgNTk5MiwgNTk5OCwgNjAwNCwgNjAxMCwgNjAxNSwgNjAyMCwgNjAyNSwgCi0gICAgNjAzMCwgNjAzNiwgNjA0MiwgNjA0NywgNjA1MiwgNjA1NywgNjA2MiwgNjA2NywgNjA3MywgNjA3OCwgNjA4NCwgNjA5MCwgCi0gICAgNjA5NiwgNjEwMiwgNjEwOCwgNjExNCwgNjEyMCwgNjEyNiwgNjEzMiwgMjA5NiwgNTU5MCwgNjEzNywgNjE0MSwgNjE0NSwgCi0gICAgNjE0OCwgNjE1NSwgNjE1OCwgNjE2NiwgNjE3MSwgNjE3NiwgNjE2NywgNjE4MSwgNjE2OCwgNjE4NSwgNjE5MSwgNjE5NywgCi0gICAgNjIwMiwgNjIwNywgNjIxNCwgNjIyMiwgNjIyNywgNjIzMSwgNjIzNCwgNjIzOCwgMjEyNywgNTUxLCA2MjQyLCA2MjQ2LCAKLSAgICA2MjUxLCA2MjU3LCA2MjYyLCA2MjY2LCA2MjY5LCA2MjczLCA2Mjc5LCA2Mjg0LCA2Mjg4LCA2Mjk1LCA2Mjk5LCA2MzAzLCAKLSAgICA2MzA3LCA5NDYsIDc0NywgNjMxMCwgNjMxOCwgNjMyNSwgNjMzMiwgNjMzOCwgNjM0NSwgNjM1MywgNjM2MCwgNjM2NywgCi0gICAgNjM3MiwgNjM4NCwgMTI0NywgMTM3NywgMTM4MiwgNjM5NSwgMTM4NywgNjM5OSwgNjQwMywgNjQxMiwgNjQyMCwgNjQyOSwgCi0gICAgNjQzNSwgNjQ0MCwgNjQ0NCwgNjQ1MCwgNjQ1NSwgNjQ2MiwgNjQ2NiwgNjQ3NSwgNjQ4NCwgNjQ5MywgNjUwMiwgNjUwNywgCi0gICAgNjUxMiwgNjUyNCwgNjUyOSwgNjUzNywgMjE3OCwgNjU0MSwgNjU0MywgNjU0OCwgNjU1MiwgNjU2MSwgNjU2OSwgMTM5MSwgCi0gICAgMTMzLCAzNDAzLCAzNDA4LCA2NTc1LCA2NTc5LCA2NTg4LCA2NTk0LCA2NTk5LCA2NjAyLCA2NjExLCAyNjUyLCA2NjE3LCAKLSAgICA2NjI1LCA2NjI5LCA2NjMzLCAyMTkxLCA2NjM3LCA2NjQyLCA2NjQ5LCA2NjU1LCA2NjYxLCA2NjY0LCA2NjY2LCA2NjY5LCAKLSAgICA2Njc3LCA2Njg1LCA2NjkzLCA2Njk2LCA2NzAxLCA2MTc4LCA2NzA0LCA2NzA2LCA2NzExLCA2NzE2LCA2NzIxLCA2NzI2LCAKLSAgICA2NzMxLCA2NzM2LCA2NzQxLCA2NzQ2LCA2NzUxLCA2NzU2LCA2NzYyLCA2NzY3LCA2NzcyLCA2Nzc3LCA2NzgzLCA2Nzg4LCAKLSAgICA2NzkzLCA2Nzk4LCA2ODAzLCA2ODA4LCA2ODEzLCA2ODE5LCA2ODI0LCA2ODI5LCA2ODM0LCA2ODM5LCA2ODQ0LCA2ODQ5LCAKLSAgICA2ODU0LCA2ODU5LCA2ODY0LCA2ODY5LCA2ODc0LCA2ODc5LCA2ODg0LCA2ODg5LCA2ODk0LCA2ODk5LCA2OTA0LCA2OTEwLCAKLSAgICA2OTE2LCA2OTIxLCA2OTI2LCA2OTMxLCA2OTM2LCA2OTQxLCAyMjE1LCAyMjIyLCAyMjI4LCA2OTQ2LCA2OTUyLCAyMjU0LCAKLSAgICAyMjYwLCA2OTYwLCA2OTY0LCA2OTY5LCA2OTczLCA2OTc3LCA2OTgxLCA2OTg2LCA2OTkwLCA2OTk1LCA2OTk5LCA3MDAyLCAKLSAgICA3MDA1LCA3MDExLCA3MDE3LCA3MDIzLCA3MDI5LCA3MDM1LCA3MDQxLCA3MDQ3LCA3MDUxLCA3MDU1LCA3MDU5LCA3MDYzLCAKLSAgICA3MDY3LCA3MDcyLCA3MDc5LCA3MDkwLCA3MDk4LCA3MTA4LCA3MTE1LCA3MTIwLCA3MTI0LCA3MTM1LCA3MTQ4LCA3MTU5LCAKLSAgICA3MTcyLCA3MTgzLCA3MTk1LCA3MjA3LCA3MjE5LCA3MjMyLCA3MjQ1LCA3MjUyLCA3MjU4LCA3MjcyLCA3Mjc5LCA3Mjg1LCAKLSAgICA3Mjg5LCA3Mjk0LCA3Mjk4LCA3MzA1LCA3MzEzLCA3MzE3LCA3MzIzLCA3MzI5LCA3MzM5LCA3MzQzLCA3MzQ4LCA3MzUzLCAKLSAgICA3MzYwLCA3MzY2LCA3Mzc2LCA2MzQwLCA3MzgyLCA3Mzg2LCA3MzkzLCA3NDYsIDczOTcsIDc0MDEsIDc0MDYsIDc0MTEsIAotICAgIDc0MTYsIDc0MjAsIDc0MjYsIDc0MzQsIDc0NDAsIDc0NDQsIDc0NTAsIDc0NjAsIDc0NjQsIDc0NzAsIDc0NzUsIDc0NzksIAotICAgIDc0ODUsIDc0OTEsIDIxMTksIDc0OTYsIDc0OTgsIDc1MDYsIDc1MTUsIDc1MTksIDc1MjUsIDc1MzAsIDc1MzUsIDc1NDAsIAotICAgIDc1NDUsIDc1NTEsIDc1NTYsIDM5MjMsIDc1NjEsIDc1NjUsIDc1NzEsIDc1NzYsIDc1ODIsIDc1ODcsIDc1OTIsIDc1OTgsIAotICAgIDc2MDMsIDc1MjAsIDc2MDksIDc2MTMsIDc2MjAsIDc2MjYsIDc2MzEsIDc2MzUsIDQ2NDUsIDc2NDAsIDc2NDksIDY2NDUsIAotICAgIDY2NTIsIDc2NTQsIDI4MDMsIDc2NTgsIDc2NjMsIDc2NjgsIDc1MzEsIDc2NzIsIDc1MzYsIDc1NDEsIDc2NzcsIDc2ODQsIAotICAgIDc2OTEsIDc2OTcsIDc3MDMsIDc3MDksIDc3MTQsIDc3MTksIDc3MjQsIDc1NDYsIDc1NTIsIDc3MzAsIDc3MzYsIDc3NDEsIAotICAgIDc3NDksIDc1NTcsIDc3NTQsIDEwMjgsIDc3NTcsIDc3NjUsIDc3NzEsIDc3NzcsIDc3ODYsIDc3OTQsIDc3OTksIDc4MDUsIAotICAgIDc4MTMsIDc4MjAsIDc4MzUsIDc4NTIsIDc4NzEsIDc4ODAsIDc4ODgsIDc5MDMsIDc5MTQsIDc5MjQsIDc5MzQsIDc5NDIsIAotICAgIDc5NDgsIDc5NjAsIDc5NjksIDc5NzcsIDc5ODQsIDc5OTEsIDc5OTcsIDgwMDIsIDgwMTAsIDgwMjAsIDgwMjcsIDgwMzcsIAotICAgIDgwNDcsIDgwNTcsIDgwNjUsIDgwNzIsIDgwODEsIDgwOTEsIDgxMDUsIDgxMjAsIDgxMjksIDgxMzcsIDgxNDIsIDgxNDYsIAotICAgIDgxNTUsIDgxNjEsIDgxNjYsIDgxNzYsIDgxODYsIDgxOTYsIDgyMDEsIDgyMDUsIDgyMTQsIDgyMTksIDgyMjksIDgyNDAsIAotICAgIDgyNTMsIDgyNjYsIDgyNzgsIDgyODYsIDgyOTEsIDgyOTUsIDgzMDEsIDgzMDYsIDgzMTQsIDgzMjIsIDgzMjksIDgzMzQsIAotICAgIDgzNDIsIDgzNDgsIDgzNTEsIDgzNTUsIDgzNjEsIDgzNjksIDgzNzQsIDgzNzgsIDgzODYsIDgzOTUsIDg0MDMsIDg0MDksIAotICAgIDg0MTMsIDg0MjAsIDg0MzEsIDg0MzUsIDg0MzgsIDg0NDQsIDg0NDksIDg0NTMsIDg0NTksIDg0NjYsIDg0NzIsIDg0NzcsIAotICAgIDg0ODQsIDg0OTEsIDg0OTgsIDg1MDUsIDg1MTIsIDg1MTksIDg1MjQsIDc4NDgsIDg1MjksIDg1MzUsIDg1NDIsIDg1NDksIAotICAgIDg1NTQsIDg1NjEsIDg1NzAsIDg1NzQsIDg1ODYsIDg1OTAsIDg1OTMsIDg1OTcsIDg2MDEsIDg2MDUsIDg2MDksIDg2MTUsIAotICAgIDg2MjAsIDg2MjYsIDg2MzEsIDg2MzYsIDg2NDIsIDg2NDcsIDg2NTIsIDczNTYsIDg2NTcsIDg2NjEsIDg2NjUsIDg2NjksIAotICAgIDg2NzQsIDg2NzksIDg2ODcsIDg2OTMsIDg2OTcsIDg3MDEsIDg3MDgsIDg3MTMsIDg3MjEsIDg3MjYsIDg3MzAsIDg3MzMsIAotICAgIDg3MzksIDg3NDYsIDg3NTAsIDg3NTMsIDg3NTgsIDg3NjIsIDM5NjIsIDg3NjgsIDg3NzcsIDM2LCA4Nzg1LCA4NzkxLCAKLSAgICA4Nzk2LCA3MzcxLCA4ODAxLCA4ODA3LCA4ODEyLCA4ODE2LCA4ODE5LCA4ODM0LCA4ODUzLCA4ODY1LCA4ODc4LCA4ODkxLCAKLSAgICA4OTA0LCA4OTE4LCA4OTMxLCA4OTQ2LCA4OTUzLCA4OTU5LCA4OTYzLCA4OTc3LCA4OTgyLCA4OTg4LCA4OTkzLCA5MDAxLCAKLSAgICA5MDA2LCA2NDcxLCA5MDExLCA5MDE0LCA5MDIxLCA5MDI2LCA5MDMwLCAyODA4LCA5NTUsIDkwMzYsIDkwNDAsIDkwNDYsIAotICAgIDkwNTIsIDkwNTcsIDkwNjMsIDkwNjgsIDc1NjYsIDkwNzQsIDkwODAsIDkwODUsIDkwOTAsIDkwOTgsIDkxMDQsIDkxMTcsIAotICAgIDkxMjUsIDkxMzIsIDc1NzIsIDkxMzgsIDkxNDYsIDkxNTQsIDkxNjEsIDkxNzQsIDkxODYsIDkxOTYsIDkyMDMsIDkyMTAsIAotICAgIDkyMTksIDkyMjgsIDkyMzYsIDkyNDMsIDkyNDgsIDkyNTQsIDc1NzcsIDkyNTksIDkyNjUsIDc1ODMsIDkyNzAsIDkyNzMsIAotICAgIDkyODAsIDkyODYsIDkyOTksIDcwODMsIDkzMTAsIDkzMTYsIDkzMjUsIDkzMzMsIDkzNDAsIDkzNDYsIDkzNTIsIDkzNTcsIAotICAgIDkzNjEsIDkzNjYsIDg4MjYsIDkzNzIsIDc1ODgsIDkzNzksIDkzODQsIDkzOTEsIDkzOTcsIDk0MDMsIDk0MDgsIDk0MTYsIAotICAgIDk0MjQsIDk0MzEsIDk0MzUsIDk0NDksIDk0NTksIDk0NjQsIDk0NjgsIDk0NzksIDk0ODUsIDk0OTAsIDk0OTUsIDc1OTMsIAotICAgIDc1OTksIDk0OTksIDk1MDIsIDk1MDcsIDk1MTksIDk1MjYsIDk1MzEsIDk1MzUsIDk1NDAsIDk1NDQsIDk1NTEsIDk1NTcsIAotICAgIDc2MDQsIDc1MjEsIDk1NjQsIDI4MTMsIDgsIDk1NzEsIDk1NzYsIDk1ODAsIDk1ODYsIDk1OTQsIDk2MDQsIDk2MDksIAotICAgIDk2MTQsIDk2MjEsIDk2MjgsIDk2MzIsIDk2NDMsIDk2NTMsIDk2NjIsIDk2NzQsIDk2NzksIDk2ODMsIDk2OTEsIDk3MDUsIAotICAgIDk3MDksIDk3MTIsIDk3MjAsIDk3MjcsIDk3MzUsIDk3MzksIDk3NTAsIDk3NTQsIDk3NjEsIDk3NjYsIDk3NzAsIDk3NzYsIAotICAgIDk3ODEsIDk3ODUsIDk3OTEsIDk3OTYsIDk4MDcsIDk4MTEsIDk4MTQsIDk4MjAsIDk4MjUsIDk4MzEsIDk4MzcsIDk4NDQsIAotICAgIDk4NTUsIDk4NjUsIDk4NzUsIDk4ODQsIDk4OTEsIDc2MTQsIDc2MjEsIDc2MjcsIDc2MzIsIDk4OTcsIDk5MDMsIDc2MzYsIAotICAgIDk5MDksIDk5MTIsIDk5MTksIDk5MjQsIDk5MzksIDk5NTUsIDk5NzAsIDk5NzgsIDk5ODQsIDEwNDMsIDQwMCwgOTk4OSwgCi0gICAgOTk5NywgMTAwMDQsIDEwMDEwLCAxMDAxNSwgMTAwMjAsIDc2NDEsIDEwMDIyLCAxMDAyNiwgMTAwMzEsIDEwMDM1LCAKLSAgICAxMDA0NSwgMTAwNTAsIDEwMDU0LCAxMDA2MywgMTAwNjcsIDEwMDcwLCAxMDA3NywgMTAwODEsIDEwMDg0LCAxMDA5MiwgCi0gICAgMTAwOTksIDEwMTA3LCAxMDExMSwgMTAxMTgsIDEwMTI3LCAxMDEzMCwgMTAxMzQsIDEwMTM4LCAxMDE0NCwgMTAxNDgsIAotICAgIDEwMTUyLCAxMDE1NiwgMTAxNjIsIDEwMTcyLCAxMDE3NiwgMTAxODQsIDEwMTg4LCAxMDE5NSwgMTAxOTksIDEwMjA0LCAKLSAgICAxMDIwOCwgMTAyMTUsIDEwMjIxLCAxMDIyOSwgMTAyMzUsIDEwMjQ1LCAxMDI1MCwgMTAyNTUsIDEwMjU5LCAxMDI2NywgCi0gICAgMzgyMiwgMTAyNzUsIDEwMjgwLCAxMDI4NCwgMTAyODgsIDEwMjkxLCAxMDI5OSwgMTAzMDYsIDEwMzEwLCA0NDY5LCAKLSAgICAxMDMxNCwgMTAzMTksIDEwMzIzLCAxMDMzNCwgMTAzMzksIDEwMzQ1LCAxMDM0OSwgMTAzNTIsIDEwMzYwLCAxMDM2NSwgCi0gICAgMTAzNzAsIDEwMzc3LCAxMDM4MiwgNzY1MCwgMTAzODcsIDEwMzkxLCAxNjg1LCA0NjE5LCAxMDM5OCwgMTA0MDMsIDEwNDA4LCAKLSAgICAxMDQxMywgMTA0MTksIDEwNDI0LCAxMDQzMCwgMTA0MzUsIDEwNDQwLCAxMDQ0NSwgMTA0NTAsIDEwNDU1LCAxMDQ2MCwgCi0gICAgMTA0NjUsIDEwNDcwLCAxMDQ3NSwgMTA0ODAsIDEwNDg1LCAxMDQ5MCwgMTA0OTUsIDEwNTAwLCAxMDUwNSwgMTA1MTAsIAotICAgIDEwNTE2LCAxMDUyMSwgMTA1MjYsIDEwNTMxLCAxMDUzNiwgMTA1NDEsIDEwNTQ3LCAxMDU1MiwgMTA1NTcsIDEwNTYzLCAKLSAgICAxMDU2OCwgMTA1NzQsIDEwNTc5LCAxMDU4NSwgMTA1OTAsIDEwNTk1LCAxMDYwMCwgMTA2MDUsIDEwNjExLCAxMDYxNiwgCi0gICAgMTA2MjEsIDEwNjI2LCA3MjQsIDEzOSwgMTA2MzQsIDEwNjM4LCAxMDY0MywgMTA2NDgsIDEwNjUyLCAxMDY1NiwgMTA2NjAsIAotICAgIDEwNjY1LCAxMDY2OSwgMTA2NzQsIDEwNjc4LCAxMDY4MSwgMTA2ODUsIDEwNjg5LCAxMDY5NCwgMTA3MDQsIDEwNzEwLCAKLSAgICAxMDcxOCwgMTA3MjIsIDEwNzI2LCAxMDczMywgMTA3NDEsIDEwNzUwLCAxMDc2MSwgMTA3NjgsIDEwNzc1LCAxMDc4NCwgCi0gICAgMTA3OTMsIDEwODAxLCAxMDgxMCwgMTA4MTksIDEwODI4LCAxMDgzNywgMTA4NDcsIDEwODU3LCAxMDg2NywgMTA4NzcsIAotICAgIDEwODg3LCAxMDg5NiwgMTA5MDYsIDEwOTE2LCAxMDkyNiwgMTA5MzYsIDEwOTQ2LCAxMDk1NiwgMTA5NjYsIDEwOTc1LCAKLSAgICAxMDk4NSwgMTA5OTUsIDExMDA1LCAxMTAxNSwgMTEwMjUsIDExMDM1LCAxMTA0NCwgMTEwNTQsIDExMDY0LCAxMTA3NCwgCi0gICAgMTEwODQsIDExMDk0LCAxMTEwNCwgMTExMTQsIDExMTI0LCAxMTEzNCwgMTExNDMsIDExMTUzLCAxMTE2MywgMTExNzMsIAotICAgIDExMTgzLCAxMTE5MywgMTEyMDMsIDExMjEzLCAxMTIyMywgMTEyMzMsIDExMjQzLCAxMTI1MiwgMTEyNTgsIDExMjYyLCAKLSAgICAxMTI2NSwgMTEyNjksIDExMjc0LCAxMTI4MSwgMTEyODcsIDExMjkyLCAxMTI5NiwgMTEzMDEsIDExMzEwLCAxMTMxOCwgCi0gICAgMTEzMjMsIDExMzI3LCAxMTMzMSwgMTEzMzcsIDExMzQyLCAxMTM0OCwgNzY1OSwgMTEzNTMsIDExMzU4LCAxMTM2NywgCi0gICAgNzY2NCwgMTEzNzIsIDExMzc1LCAxMTM4MSwgMTEzODksIDc2NjksIDExMzk2LCAxMTQwMCwgMTE0MDQsIDExNDA4LCAKLSAgICAxMTQxOCwgMTE0MjQsIDExNDI5LCAxMTQzOCwgMTE0NDYsIDExNDUzLCAxMTQ2MCwgMTE0NjUsIDExNDcyLCAxMTQ3NywgCi0gICAgMTE0ODEsIDExNDg0LCAxMTQ5NSwgMTE1MDUsIDExNTE0LCAxMTUyMiwgMTE1MzMsIDExNTQ1LCAxMTU1NSwgMTE1NjAsIAotICAgIDExNTY0LCAxMTU2OSwgMTE1NzQsIDExNTc4LCAxMTU4NCwgMTE1OTIsIDExNTk5LCAxMTYxMCwgMTE2MTUsIDExNjI1LCAKLSAgICAxMTYzNCwgMTE2MzgsIDExNjQxLCAxMTY0OCwgMTE2NTgsIDExNjY3LCAxMTY3NCwgMTE2NzgsIDExNjg1LCAxMTY5MSwgCi0gICAgMTE2OTYsIDExNzAxLCAxMTcwNSwgMTE3MTQsIDExNzE5LCAxMTcyNSwgMTE3MjksIDExNzM0LCAxMTczOCwgMTE3NDcsIAotICAgIDExNzU1LCAxMTc2MywgMTE3NzAsIDExNzc4LCAxMTc5MCwgMTE4MDEsIDExODExLCAxMTgxOCwgMTE4MjQsIDExODMzLCAKLSAgICAxMTg0NCwgMTE4NTMsIDExODY1LCAxMTg3NywgMTE4ODksIDExODk5LCAxMTkwOCwgMTE5MTcsIDExOTI1LCAxMTkzMiwgCi0gICAgMTE5NDEsIDExOTQ5LCAxMTk1NSwgMTE5NjEsIDExOTY2LCA2MTk5LCAxMTk3MCwgMTE5NzIsIDExOTc3LCAxMTk4MywgCi0gICAgMTE5OTIsIDEyMDAwLCAxMjAwNywgMTIwMTYsIDEyMDI1LCAxMjAzNCwgMTIwNDMsIDEyMDUyLCAxMjA2MSwgMTIwNzAsIAotICAgIDEyMDc5LCAxMjA4OSwgMTIwOTksIDEyMTA4LCAxMjExNCwgMTIxMjEsIDEyMTM1LCAxMjE0MiwgMTIxNTAsIDEyMTU5LCAKLSAgICAxMjE2NSwgMTIxNzQsIDEyMTgzLCAxMjE5NCwgMTIyMDQsIDEyMjEyLCAxMjIxOSwgMTIyMjcsIDEyMjM2LCAxMjI0OSwgCi0gICAgMTIyNTcsIDEyMjY0LCAxMjI3NywgMTIyODMsIDEyMjg5LCAxMjI5OSwgMTIzMDgsIDEyMzE3LCAxMjMyMiwgMTIzMjYsIAotICAgIDEyMzMyLCAxMjMzOCwgMTIzNDUsIDczNzAsIDEyMzUwLCAxMjM1NSwgMTIzNjIsIDEyMzY3LCAxMjM3MiwgMTIzNzYsIAotICAgIDEyMzg0LCAxMjM5MCwgMTIzOTUsIDEyNDAzLCAxMjQxMSwgMTI0MTgsIDEyNDI2LCAxMjQzMiwgMTI0NDAsIDEyNDQ4LCAKLSAgICAxMjQ1MywgMTI0NTksIDEyNDY2LCAxMjQ3MiwgMTI0NzcsIDEyNDgxLCAxMjQ5MiwgMTI1MDAsIDEyNTA2LCAxMjUxMSwgCi0gICAgMTI1MjAsIDEyNTI2LCAxMjUzMSwgMTI1NDAsIDEyNTU0LCAzNzgxLCAxMjU1OCwgMTI1NjMsIDEyNTY4LCAxMjU3NCwgCi0gICAgMTI1NzksIDEyNTg0LCAxMjU4OCwgMTI1OTMsIDEyNTk4LCA2MTk4LCAxMjYwMywgMTI2MDgsIDEyNjEzLCAxMjYxOCwgCi0gICAgMTI2MjIsIDEyNjI3LCAxMjYzMiwgMTI2MzcsIDEyNjQzLCAxMjY0OSwgMTI2NTQsIDEyNjU4LCAxMjY2MywgMTI2NjgsIAotICAgIDEyNjczLCA3NjczLCAxMjY3OCwgMTI2ODMsIDEyNjg4LCAxMjY5MywgMTI3MTAsIDEyNzI4LCAxMjc0MCwgMTI3NTMsIAotICAgIDEyNzcwLCAxMjc4NiwgMTI4MDMsIDEyODEzLCAxMjgzMiwgMTI4NDMsIDEyODU0LCAxMjg2NSwgMTI4NzYsIDEyODg4LCAKLSAgICAxMjg5OSwgMTI5MTAsIDEyOTI3LCAxMjkzOCwgMTI5NDksIDEyOTU0LCAyMzM1LCAxMjk1OCwgMTI5NjEsIDEyOTY3LCAKLSAgICAxMjk3NSwgMTI5ODMsIDEyOTg4LCAxMjk5NiwgMTMwMDQsIDEzMDExLCAxMzAxNiwgMTMwMjIsIDEzMDI5LCAxMzAzNywgCi0gICAgMTMwNDQsIDEzMDU2LCAxMzA2NCwgMTMwNjksIDk5MzMsIDEzMDc1LCAxMzA4NCwgMTMwOTMsIDEzMTAxLCAxMzEwOCwgCi0gICAgMTMxMTQsIDEzMTIyLCAxMzEyOSwgMTMxMzUsIDEzMTQyLCAxMzE0OCwgMTMxNTcsIDEzMTY1LCAxMzE3NSwgMTMxODIsIAotICAgIDEzMTg4LCAxMzE5NiwgMTMyMDIsIDEzMjEwLCAxMzIxNywgMTMyMzAsIDEzMjM3LCAxMzI0NiwgMTMyNTUsIDEzMjY0LCAKLSAgICAxMzI3MiwgMTMyODIsIDEzMjg5LCAxMzI5NCwgMzQ5NSwgMTMzMDEsIDEzMzA2LCAxMzMwOSwgMTI2MDQsIDEzMzEzLCAKLSAgICAxMzMxOSwgMTMzMjMsIDEzMzMxLCAxMzM0MywgMTMzNDgsIDEzMzU1LCAxMzM2MSwgMTMzNjYsIDEzMzczLCAxMjYwOSwgCi0gICAgMTMzNzcsIDEzMzgxLCAxMjYxNCwgMTMzODUsIDEzMzg5LCAxMzM5MywgMTM0MDAsIDEzNDA1LCAxMzQwOSwgMTM0MTMsIAotICAgIDEzNDIxLCAxMzQyOCwgMTM0MzUsIDEzNDUyLCAxMzQ2MSwgMTM0NjUsIDEzNDY4LCAxMzQ3NiwgMTM0ODIsIDEzNDg3LCAKLSAgICAzNTczLCAxMzQ5MSwgMTM0OTMsIDEzNTAxLCAxMzUwOCwgMTM1MTgsIDEzNTMwLCAxMzUzNSwgMTM1NDEsIDEzNTQ2LCAKLSAgICAxMzU1MCwgMTM1NTYsIDEzNTYxLCAxMzU2NywgMTM1NzAsIDEzNTc3LCAxMzU4NSwgMTM1OTIsIDEzNTk4LCAxMzYwNCwgCi0gICAgMTM2MDksIDEzNjE2LCAxMzYyMiwgMTM2MjcsIDEzNjM0LCAxMzYzOCwgMTM2NDQsIDEzNjQ4LCAxMzY1NSwgMTM2NjEsIAotICAgIDEzNjY3LCAxMzY3NSwgMTM2ODEsIDEzNjg2LCAxMzY5MiwgMTM3MDAsIDEzNzA4LCAxMzcxNCwgMTM3MjAsIDEzNzI1LCAKLSAgICAxMzczMiwgMTM3MzcsIDEzNzQxLCAxMzc0NywgMTM3NTIsIDEzNzU5LCAxMzc2NCwgMTM3NzAsIDEzNzczLCAxMzc3OSwgCi0gICAgMTM3ODUsIDEzNzg4LCAxMzc5MiwgMTM4MDQsIDEzODEwLCAxMzgxNSwgMTM4MjIsIDEzODI4LCAxMzgzNCwgMTM4NDUsIAotICAgIDEzODU1LCAxMzg2NCwgMTM4NzIsIDEzODc5LCAxMzg5MCwgMTM5MDAsIDEzOTEwLCAxMzkxOCwgMTM5MjEsIDEyNjI4LCAKLSAgICAxMzkyNiwgMTM5MzEsIDEyNjMzLCAxMjc1OCwgMTM5MzksIDEzOTUyLCAxMzk2NywgMTM5NzgsIDEyNzc1LCAxMzk5NiwgCi0gICAgMTQwMDksIDE0MDIyLCAxNDAzMywgODg0MSwgMTQwNDQsIDE0MDU3LCAxNDA3NiwgMTQwODcsIDE0MDk4LCAxNDEwOSwgCi0gICAgMjYwMywgMTQxMjIsIDE0MTI2LCAxNDEzNCwgMTQxNDUsIDE0MTUyLCAxNDE1OCwgMTQxNjYsIDE0MTcwLCAxNDE3NiwgCi0gICAgMTQxNzksIDE0MTg5LCAxNDE5NywgMTQyMDQsIDE0MjEyLCAxNDIyMiwgMTQyMjcsIDE0MjM0LCAxNDIzOSwgMTQyNDYsIAotICAgIDE0MjU3LCAxNDI2NywgMTQyNzMsIDE0Mjc4LCAxNDI4MywgMTQyODcsIDE0MjkxLCAxNDI5NywgMTQzMDMsIDE0MzA4LCAKLSAgICAxNDMxMywgMTQzMTgsIDE0MzIyLCAxMjYzOCwgMTI2NDQsIDE0MzI2LCAxMjY1MCwgMTQzMzEsIDE0MzM5LCAxNDM0OCwgCi0gICAgMTQzNTUsIDc1NDIsIDE0MzU5LCAxNDM2MSwgMTQzNjYsIDE0MzcxLCAxNDM3NywgMTQzODIsIDE0Mzg3LCAxNDM5MiwgCi0gICAgMTQzOTcsIDE0NDAxLCAxNDQwNywgMTQ0MTMsIDE0NDE4LCAxNDQyNCwgMTQ0MjksIDE0NDM0LCAxNDQ0MCwgMTQ0NDUsIAotICAgIDE0NDUwLCAxNDQ1NSwgMTQ0NjEsIDE0NDY2LCAxNDQ3MSwgMTQ0NzcsIDE0NDgzLCAxNDQ4OCwgMTQ0OTMsIDE0NTAwLCAKLSAgICAxNDUwNiwgMTQ1MTcsIDE0NTI0LCAxNDUyOSwgMTQ1MzMsIDE0NTM3LCAxNDU0MCwgMTQ1NDgsIDE0NTUzLCAxNDU2MCwgCi0gICAgMTQ1NjcsIDE0NTcyLCAxNDU3NywgMTQ1ODQsIDE0NTk0LCAxNDU5OSwgMTQ2MDYsIDE0NjEyLCAxNDYyMiwgMTQ2MzIsIAotICAgIDE0NjQ2LCAxNDY2MCwgMTQ2NzQsIDE0Njg4LCAxNDcwMywgMTQ3MTgsIDE0NzM1LCAxNDc1MywgMTQ3NjYsIDE0NzcyLCAKLSAgICAxNDc3NywgMTQ3ODIsIDE0Nzg2LCAxNDc5MSwgMTQ3OTksIDE0ODA1LCAxNDgxMCwgMTQ4MTUsIDE0ODE5LCAxNDgyNCwgCi0gICAgMTQ4MjgsIDE0ODMzLCAxNDgzNywgMTQ4NDgsIDE0ODU0LCAxNDg1OSwgMTQ4NjQsIDE0ODcxLCAxNDg3NiwgMTQ4ODAsIAotICAgIDE0ODg1LCAxNDg5MCwgMTQ4OTYsIDE0OTAzLCAxNDkwOSwgMTQ5MTQsIDE0OTE4LCAxNDkyNCwgMTQ5MjksIDE0OTM0LCAKLSAgICAxNDkzOCwgMTQ5NDQsIDE0OTQ5LCAxNDk1NCwgMTQ5NjEsIDE0OTY2LCAxMTQyMCwgMTQ5NzAsIDE0OTc1LCAxNDk3OSwgCi0gICAgMTQ5ODQsIDE0OTkwLCAxNDk5NiwgMTUwMDMsIDE1MDEzLCAxNTAyMSwgMTUwMjgsIDE1MDMzLCAxNTAzNywgMTUwNDYsIAotICAgIDE1MDU0LCAxNTA2MSwgMTUwNjgsIDE1MDc0LCAxNTA4MCwgMTUwODUsIDE1MDkwLCAxNTA5NiwgMTUxMDEsIDE1MTA3LCAKLSAgICAxNTExMiwgMTUxMTgsIDE1MTI0LCAxNTEzMSwgMTUxMzcsIDE1MTQyLCAxNTE0NywgNzcxNSwgMTUxNTYsIDE1MTU5LCAKLSAgICAxNTE2NSwgMTUxNzAsIDE1MTc1LCAxNTE4NSwgMTUxOTIsIDE1MTk4LCAxNTIwMywgMTUyMDksIDE1MjE0LCAxNTIyMCwgCi0gICAgMTUyMjUsIDE1MjMxLCAxNTIzNywgMTUyNDIsIDE1MjUwLCAxNTI1NywgMTUyNjIsIDE1MjY3LCAxNTI3MywgMTUyNzgsIAotICAgIDE1MjgyLCAxNTI5MSwgMTUzMDIsIDE1MzA5LCAxNTMxNywgMTUzMjMsIDE1MzMwLCAxNTMzNiwgMTUzNDEsIDE1MzQ1LCAKLSAgICAxNTM1MSwgMTUzNTYsIDE1MzYxLCAxNTM2NiwgNzcyMCwgNjIyMywgMjgyNywgMTUzNzAsIDE1Mzc0LCAxNTM3OCwgMTUzODIsIAotICAgIDE1Mzg2LCAxNTM4OSwgMTUzOTYsIDE1NDA0LCAxMjY2NCwgMTU0MTEsIDE1NDIxLCAxNTQyOSwgMTU0MzYsIDE1NDQ0LCAKLSAgICAxNTQ1NCwgMTU0NjMsIDE1NDc2LCAxNTQ4MSwgMTU0ODYsIDE1NDk0LCAxNTUwMSwgMTE1MTAsIDExNTE5LCAxNTUwOCwgCi0gICAgMTU1MTgsIDE1NTMzLCAxNTUzOSwgMTU1NDYsIDE1NTUzLCAxNTU1OSwgMTU1NjksIDE1NTc5LCAxMjY2OSwgMTU1ODgsIAotICAgIDE1NTk0LCAxNTYwMCwgMTU2MDgsIDE1NjE2LCAxNTYyMSwgMTU2MzAsIDE1NjM4LCAxNTY1MCwgMTU2NjAsIDE1NjcwLCAKLSAgICAxNTY4MCwgMTU2ODksIDE1NzAxLCAxNTcxMSwgMTU3MjEsIDE1NzMyLCAxNTczNywgMTU3NDksIDE1NzYxLCAxNTc3MywgCi0gICAgMTU3ODUsIDE1Nzk3LCAxNTgwOSwgMTU4MjEsIDE1ODMzLCAxNTg0NSwgMTU4NTcsIDE1ODY4LCAxNTg4MCwgMTU4OTIsIAotICAgIDE1OTA0LCAxNTkxNiwgMTU5MjgsIDE1OTQwLCAxNTk1MiwgMTU5NjQsIDE1OTc2LCAxNTk4OCwgMTU5OTksIDE2MDExLCAKLSAgICAxNjAyMywgMTYwMzUsIDE2MDQ3LCAxNjA1OSwgMTYwNzEsIDE2MDgzLCAxNjA5NSwgMTYxMDcsIDE2MTE5LCAxNjEzMCwgCi0gICAgMTYxNDIsIDE2MTU0LCAxNjE2NiwgMTYxNzgsIDE2MTkwLCAxNjIwMiwgMTYyMTQsIDE2MjI2LCAxNjIzOCwgMTYyNTAsIAotICAgIDE2MjYxLCAxNjI3MywgMTYyODUsIDE2Mjk3LCAxNjMwOSwgMTYzMjEsIDE2MzMzLCAxNjM0NSwgMTYzNTcsIDE2MzY5LCAKLSAgICAxNjM4MSwgMTYzOTIsIDE2NDA0LCAxNjQxNiwgMTY0MjgsIDE2NDQwLCAxNjQ1MiwgMTY0NjQsIDE2NDc2LCAxNjQ4OCwgCi0gICAgMTY1MDAsIDE2NTEyLCAxNjUyMywgMTY1MzUsIDE2NTQ3LCAxNjU1OSwgMTY1NzEsIDE2NTgzLCAxNjU5NSwgMTY2MDcsIAotICAgIDE2NjE5LCAxNjYzMSwgMTY2NDMsIDE2NjU0LCAxNjY2NiwgMTY2NzgsIDE2NjkwLCAxNjcwMiwgMTY3MTUsIDE2NzI4LCAKLSAgICAxNjc0MSwgMTY3NTQsIDE2NzY3LCAxNjc4MCwgMTY3OTMsIDE2ODA1LCAxNjgxOCwgMTY4MzEsIDE2ODQ0LCAxNjg1NywgCi0gICAgMTY4NzAsIDE2ODgzLCAxNjg5NiwgMTY5MDksIDE2OTIyLCAxNjkzNSwgMTY5NDcsIDE2OTYwLCAxNjk3MywgMTY5ODYsIAotICAgIDE2OTk5LCAxNzAxMiwgMTcwMjUsIDE3MDM4LCAxNzA1MSwgMTcwNjQsIDE3MDc3LCAxNzA4OSwgMTcxMDIsIDE3MTE1LCAKLSAgICAxNzEyOCwgMTcxNDEsIDE3MTU0LCAxNzE2NywgMTcxODAsIDE3MTkzLCAxNzIwNiwgMTcyMTksIDE3MjMxLCAxNzI0NCwgCi0gICAgMTcyNTcsIDE3MjcwLCAxNzI4MywgMTcyOTYsIDE3MzA5LCAxNzMyMiwgMTczMzUsIDE3MzQ4LCAxNzM2MSwgMTczNzMsIAotICAgIDE3Mzg2LCAxNzM5OSwgMTc0MTIsIDE3NDI1LCAxNzQzOCwgMTc0NTEsIDE3NDY0LCAxNzQ3NywgMTc0OTAsIDE3NTAzLCAKLSAgICAxNzUxNSwgMTc1MjYsIDE3NTM5LCAxNzU1MiwgMTc1NjUsIDE3NTc4LCAxNzU5MSwgMTc2MDQsIDE3NjE3LCAxNzYzMCwgCi0gICAgMTc2NDMsIDE3NjU2LCAxNzY2OCwgMTc2ODEsIDE3Njk0LCAxNzcwNywgMTc3MjAsIDE3NzMzLCAxNzc0NiwgMTc3NTksIAotICAgIDE3NzcyLCAxNzc4NSwgMTc3OTgsIDE3ODEwLCAxNzgyMywgMTc4MzYsIDE3ODQ5LCAxNzg2MiwgMTc4NzUsIDE3ODg4LCAKLSAgICAxNzkwMSwgMTc5MTQsIDE3OTI3LCAxNzk0MCwgMTc5NTIsIDE3OTY1LCAxNzk3OCwgMTc5OTEsIDE4MDA0LCAxODAxNywgCi0gICAgMTgwMzAsIDE4MDQzLCAxODA1NiwgMTgwNjksIDE4MDgyLCAxODA5NCwgMTgxMDcsIDE4MTIwLCAxODEzMywgMTgxNDYsIAotICAgIDE4MTU5LCAxODE3MiwgMTgxODUsIDE4MTk4LCAxODIxMSwgMTgyMjQsIDE4MjM2LCAxODI0OSwgMTgyNjIsIDE4Mjc1LCAKLSAgICAxODI4OCwgMTgzMDEsIDE4MzE0LCAxODMyNywgMTgzNDAsIDE4MzUzLCAxODM2NiwgMTgzNzgsIDE4MzkxLCAxODQwNCwgCi0gICAgMTg0MTcsIDE4NDMwLCAxODQ0MywgMTg0NTYsIDE4NDY5LCAxODQ4MiwgMTg0OTUsIDE4NTA4LCAxODUyMCwgMTg1MzMsIAotICAgIDE4NTQ2LCAxODU1OSwgMTg1NzIsIDE4NTg1LCAxODU5OCwgMTg2MTEsIDE4NjI0LCAxODYzNywgMTg2NTAsIDE4NjYyLCAKLSAgICAxODY3NSwgMTg2ODgsIDE4NzAxLCAxODcxNCwgMTg3MjcsIDE4NzQwLCAxODc1MywgMTg3NjYsIDE4Nzc5LCAxODc5MiwgCi0gICAgMTg4MDQsIDE4ODE3LCAxODgzMCwgMTg4NDMsIDE4ODU2LCAxODg2OSwgMTg4ODIsIDE4ODk1LCAxODkwOCwgMTg5MjEsIAotICAgIDE4OTM0LCAxODk0NiwgMTg5NTcsIDE4OTY1LCAxODk3MiwgMTg5NzgsIDE4OTgyLCAxODk4OCwgMTg5OTQsIDE5MDAyLCAKLSAgICAxOTAwOCwgMTkwMTMsIDE5MDE3LCAxOTAyNiwgNzU0NywgMTkwMzcsIDE5MDQ0LCAxOTA1MiwgMTkwNTksIDE5MDY2LCAKLSAgICA5MjkzLCAxOTA3MywgMTkwODIsIDE5MDg3LCAxOTA5MiwgNjIzOSwgMTkwOTksIDE5MTA0LCAxOTEwNywgMTkxMTIsIAotICAgIDE5MTIwLCAxOTEyNywgMTkxMzQsIDE5MTQxLCAxOTE0NywgMTkxNTYsIDE5MTY1LCAxOTE3MSwgMTkxODAsIDE5MTg2LCAKLSAgICAxOTE5MSwgMTkyMDEsIDE5MjA4LCAxOTIxNCwgMTkyMjIsIDE5MjI4LCAxOTIzNSwgMTkyNDUsIDE5MjU0LCAxOTI1OCwgCi0gICAgMTkyNjUsIDE5MjY5LCAxOTI3NCwgMTkyODAsIDE5Mjg4LCAxOTI5MiwgMTkzMDIsIDEyNjc5LCAxOTMxMSwgMTkzMTcsIAotICAgIDE5MzIxLCAxOTMzMCwgMTkzMzYsIDE5MzQzLCAxOTM1NCwgMTkzNjIsIDE5MzcxLCA3MzM1LCAxOTM3OSwgMTkzODQsIAotICAgIDE5MzkwLCAxOTM5NSwgMTkzOTksIDE5NDAzLCAxOTQwNywgODAwNiwgMTk0MTIsIDE5NDIwLCAxOTQyNywgMTk0MzYsIAotICAgIDE5NDQzLCAxOTQ1MCwgOTIyMywgMTk0NTcsIDE5NDYzLCAxOTQ2NywgMTk0NzMsIDE5NDc5LCAxOTQ4NywgMTk0OTMsIAotICAgIDE5NTAwLCAxOTUwNiwgMTk1MTIsIDE5NTIxLCAxOTUyNSwgMTk1MzMsIDE5NTQyLCAxOTU0OSwgMTk1NTQsIDE5NTU4LCAKLSAgICAxOTU2OSwgMTk1NzQsIDE5NTc5LCAxOTU4NCwgMTk1OTcsIDY0MjYsIDE5NjAxLCAxOTYwNywgMTk2MTUsIDE5NjE5LCAKLSAgICAxOTYyNiwgMTk2MzUsIDE5NjQwLCAxOTY0OCwgMTk2NjAsIDE5NjY1LCAxOTY2OSwgMTk2NzIsIDE5Njc4LCAxOTY4NCwgCi0gICAgMTk2ODksIDE5NjkzLCAxOTY5NiwgMTk3MDcsIDE5NzEyLCA3NzUwLCAxOTcxOSwgNzU1OCwgNzc1NSwgMTk3MjQsIDE5NzI5LCAKLSAgICAxOTczNCwgMTk3MzksIDE5NzQ0LCAxOTc0OSwgMTk3NTQsIDE5NzU5LCAxOTc2NCwgMTk3NjksIDE5Nzc0LCAxOTc3OSwgCi0gICAgMTk3ODUsIDE5NzkwLCAxOTc5NSwgMTk4MDAsIDE5ODA1LCAxOTgxMCwgMTk4MTUsIDE5ODIwLCAxOTgyNSwgMTk4MzAsIAotICAgIDE5ODM2LCAxOTg0MiwgMTk4NDcsIDE5ODUyLCAxOTg1NywgMTk4NjIsIDE5ODY3LCAxOTg3MiwgMTk4NzcsIDE5ODgyLCAKLSAgICAxOTg4NywgMTk4OTMsIDE5ODk4LCAxOTkwMywgMTk5MDgsIDE5OTE0LCAxOTkyMCwgMTk5MjUsIDE5OTMwLCAxOTkzNSwgCi0gICAgMTk5NDAsIDE5OTQ1LCAxOTk1MCwgMTk5NTUsIDE5OTYwLCAxOTk2NiwgMTk5NzEsIDE5OTc2LCAxOTk4MSwgMTk5ODYsIAotICAgIDE5OTkyLCAxOTk5NywgMjAwMDIsIDIwMDA2LCAxMjksIDIwMDE0LCAyMDAxOCwgMjAwMjIsIDIwMDI2LCAyMDAzMSwgCi0gICAgMjAwMzUsIDIwMDM5LCAxMDc4MSwgMjAwNDMsIDIwMDQ4LCAyMDA1MiwgMjAwNTcsIDIwMDYxLCAyMDA2NiwgMjAwNzAsIAotICAgIDIwMDc2LCAyMDA4MSwgMjAwODUsIDIwMDg5LCAyMDA5NywgMjAxMDEsIDIwMTA2LCAyMDExMSwgMjAxMTUsIDIwMTIxLCAKLSAgICAyMDEyNiwgMjAxMzAsIDIwMTM1LCAyMDE0MCwgMjAxNDQsIDIwMTUxLCAyMDE1OCwgMjAxNjUsIDIwMTY5LCAyMDE3MywgCi0gICAgMjAxNzgsIDIwMTgyLCAyMDE4NSwgMjAxOTEsIDIwMjA0LCAyMDIwOSwgMjAyMTgsIDIwMjIzLCA3Nzk1LCAyMDIyOCwgCi0gICAgMjAyMzEsIDI2NjYsIDI2NzEsIDIwMjM1LCAyMDI0MSwgMjAyNDcsIDIwMjUyLCAyMDI1NywgMjAyNjIsIDIwMjY4LCAKLSAgICAyMDI3MywgMTIxOTAsIDIwMjc4LCAyMDI4MywgMjAyODgsIDIwMjk0LCAyMDI5OSwgMjAzMDQsIDIwMzEwLCAyMDMxNSwgCi0gICAgMjAzMTksIDIwMzI0LCAyMDMyOSwgMjAzMzQsIDIwMzM4LCAyMDM0MywgMjAzNDgsIDIwMzUzLCAyMDM1OCwgMjAzNjIsIAotICAgIDIwMzY2LCAyMDM3MSwgMjgzNiwgMjAzMjAsIDIwMzc1LCAyMDM4MywgMjAzOTAsIDgxMDAsIDIwNDAyLCAyMDQxMCwgCi0gICAgMjAzMjUsIDIwNDE3LCAyMDQyMiwgMjA0MzAsIDIwMzMwLCAyMDQzNSwgMjA0NDAsIDIwNDQ4LCAyMDQ1MywgMjA0NTgsIAotICAgIDIwNDYyLCAyMDQ2NywgMjA0NzEsIDIwNDc3LCAyMDQ4MCwgMjA0ODcsIDIwNDkxLCAyMDQ5NSwgMjA1MDEsIDIwNTA4LCAKLSAgICAyMDUxMywgNzM2MiwgMTY5MCwgMTY5NSwgMjA1MTcsIDIwNTIzLCAyMDUyOSwgMjA1MzQsIDIwNTM4LCAyMDU0MiwgMjA1NDYsIAotICAgIDIwNTQ5LCAyMDU1NSwgMjA1NjIsIDIwNTcwLCAyMDU3NiwgMjA1ODIsIDIwNTg3LCAyMDU5MiwgMjA1OTYsIDEzMDM5LCAKLSAgICAxMzg5NiwgMjA2MDEsIDIwNjEzLCAyMDYxNiwgMjA2MjMsIDIwNjMwLCAyMDYzNCwgMjA2NDIsIDIwNjUzLCAyMDY2MiwgCi0gICAgMjA2NzUsIDIwNjg1LCAyMDY5OSwgMjA3MTEsIDIwNzI1LCAyMDczNywgMjA3NDcsIDIwNzU5LCAyMDc2NSwgMjA3ODAsIAotICAgIDIwODA0LCAyMDgyMiwgMjA4NDEsIDIwODU0LCAyMDg2OCwgMjA4ODYsIDIwOTAyLCAyMDkxOSwgMjA5MzcsIDIwOTQ4LCAKLSAgICAyMDk2NywgMjA5ODQsIDIxMDA0LCAyMTAyMiwgMjEwMzQsIDIxMDQ4LCAyMTA2MiwgMjEwNzQsIDIxMDkxLCAyMTExMCwgCi0gICAgMjExMjgsIDIxMTQwLCAyMTE1OCwgMjExNzcsIDEyODE4LCAyMTE5MCwgMjEyMTAsIDIxMjIyLCA4ODcyLCAyMTIzNCwgCi0gICAgMjEyMzksIDIxMjQ0LCAyMTI0OSwgMjEyNTUsIDIxMjYwLCAyMTI2NCwgMjEyNzEsIDIzNTIsIDIxMjc1LCAyMTI4MSwgCi0gICAgMjEyODUsIDIxMjg4LCAyMTI5MiwgMjEzMDAsIDIxMzA2LCAyMDMzOSwgMjEzMTAsIDIxMzE5LCAyMTMzMCwgMjEzMzYsIAotICAgIDIxMzQyLCAyMTM1MSwgMjEzNTksIDIxMzY2LCAyMTM3MSwgMjEzNzgsIDIxMzg0LCAyMTM5MywgMjE0MDEsIDIxNDA4LCAKLSAgICAyMTQxOCwgMjE0MjcsIDIxNDM3LCAyMTQ0MiwgMjE0NTEsIDIxNDYwLCAyMTQ3MSwgMjE0ODIsIDM4ODAsIDIxNDkyLCAKLSAgICAyMTQ5NiwgMjE1MDYsIDIxNTE0LCAyMTUyNCwgMjE1MzUsIDIxNTQwLCAyMTU0OCwgMjE1NTUsIDIxNTYxLCAyMTU2NiwgCi0gICAgMjAzNDksIDIxNTcwLCAyMTU3OSwgMjE1ODMsIDIxNTg2LCAyMTU5MSwgMjE1OTgsIDIxNjA3LCAyMTYxNSwgMjE2MjMsIAotICAgIDIxNjMzLCAyMTY0MiwgMjE2NDgsIDIxNjU0LCAyMDM1NCwgMjAzNTksIDIxNjU4LCAyMTY2OCwgMjE2NzgsIDIxNjg4LCAKLSAgICAyMTY5NiwgMjE3MDMsIDIxNzEzLCAyMTcyMSwgMjE3MjksIDIxNzM1LCA5NjIsIDIxNzQ0LCAxMzAwMCwgNTM3LCAyMTc1OCwgCi0gICAgMjE3NjcsIDIxNzc1LCAyMTc4NiwgMjE3OTcsIDIxODA3LCAyMTgxNiwgMjE4MjgsIDIxODM3LCAyMTg0NiwgMjE4NTIsIAotICAgIDIxODYxLCAyMTg3MCwgMjE4ODAsIDIxODg4LCAyMTg5NiwgNzcyNywgMjE5MDIsIDIxOTA1LCAyMTkwOSwgMjE5MTQsIAotICAgIDIxOTE5LCA4MjE1LCAyMDM2NywgMjE5MjcsIDIxOTMzLCAyMTkzOSwgMjE5NDQsIDIxOTQ5LCAyMTk1MywgMjE5NjEsIAotICAgIDIxOTY3LCAyMTk3MywgMjE5NzcsIDM0NjcsIDIxOTg1LCAyMTk5MCwgMjE5OTUsIDIxOTk5LCAyMjAwMywgODI4NywgCi0gICAgMjIwMTAsIDIyMDE4LCAyMjAyNSwgMjIwMzEsIDgyOTYsIDgzMDIsIDIyMDM5LCAyMjA0NywgMjIwNTQsIDIyMDU5LCAKLSAgICAyMjA2NCwgMjIwNzAsIDIyMDc0LCAyMjA4NSwgMjIwOTAsIDI1NTUsIDIyMDk1LCAyMjEwNiwgMjIxMTIsIDIyMTE3LCAKLSAgICAyMjEyMSwgMjIxMjUsIDIyMTI4LCAyMjEzNSwgMjIxNDIsIDIyMTQ5LCAyMjE1NSwgMjIxNTksIDIyMTY0LCAyMjE2OCwgCi0gICAgMjIxNzIsIDk3OSwgMjIxNzYsIDIyMTgxLCAyMjE4NiwgMjIxOTEsIDIyMTk2LCAyMjIwMSwgMjIyMDYsIDIyMjExLCAKLSAgICAyMjIxNiwgMjIyMjEsIDIyMjI2LCAyMjIzMSwgMjIyMzYsIDIyMjQxLCAyMjI0NywgMjIyNTIsIDIyMjU3LCAyMjI2MiwgCi0gICAgMjIyNjcsIDIyMjcyLCAyMjI3NywgMjIyODMsIDIyMjg4LCAyMjI5MywgMjIyOTgsIDIyMzAzLCAyMjMwOCwgMjIzMTMsIAotICAgIDIyMzE4LCAyMjMyNCwgMjIzMzAsIDIyMzM1LCAyMjM0MSwgMjIzNDYsIDIyMzUxLCA1LCAyMjM1NywgMjIzNjEsIDIyMzY1LCAKLSAgICAyMjM2OSwgMjIzNzQsIDIyMzc4LCAyMjM4MiwgMjIzODYsIDIyMzkwLCAyMjM5NSwgMjIzOTksIDIyNDA0LCAyMjQwOCwgCi0gICAgMjI0MTEsIDIyNDE1LCAyMjQyMCwgMjI0MjQsIDIyNDI5LCAyMjQzMywgMjI0MzcsIDIyNDQxLCAyMjQ0NiwgMjI0NTAsIAotICAgIDIyNDU0LCAyMjQ2NCwgMjI0NjksIDIyNDczLCAyMjQ3NywgMjI0ODIsIDIyNDg3LCAyMjQ5NiwgMjI1MDEsIDIyNTA2LCAKLSAgICAyMjUxMCwgMjI1MTQsIDIyNTI3LCAyMjUzOSwgMjI1NDgsIDIyNTU3LCAyMjU2MywgMjI1NjgsIDIyNTcyLCAyMjU3NiwgCi0gICAgMjI1ODYsIDIyNTk1LCAyMjYwMywgMjI2MDksIDIyNjE0LCAyMjYxOCwgMjI2MjUsIDIyNjM1LCAyMjY0NCwgMjI2NTIsIAotICAgIDIyNjYwLCAyMjY2NywgMjI2NzUsIDIyNjg0LCAyMjY5MywgMjI3MDEsIDIyNzA2LCAyMjcxMCwgMjI3MTQsIDIyNzE3LCAKLSAgICAyMjcxOSwgMjI3MjMsIDIyNzI3LCAyMjczMiwgMjI3MzcsIDIyNzQxLCAyMjc0NSwgMjI3NDgsIDIyNzUyLCAyMjc1NSwgCi0gICAgMjI3NTksIDIyNzYyLCAyMjc2NSwgMjI3NjksIDIyNzc1LCAyMjc3OSwgMjI3ODMsIDIyNzg3LCAyMjc5MiwgMjI3OTcsIAotICAgIDIyODAyLCAyMjgwNiwgMjI4MDksIDIyODE0LCAyMjgyMCwgMjI4MjUsIDIyODMxLCAyMjgzNiwgMjI4NDAsIDIyODQ0LCAKLSAgICAyMjg0OCwgMjI4NTMsIDIyODU3LCAyMjg2MiwgMjI4NjYsIDIyODczLCAyMjg3NywgMjI4ODAsIDIyODg0LCAyMjg5MCwgCi0gICAgMjI4OTYsIDIyOTAwLCAyMjkwNCwgMjI5MDksIDIyOTE2LCAyMjkyMiwgMjI5MjYsIDIyOTM1LCAyMjkzOSwgMjI5NDMsIAotICAgIDIyOTQ2LCAyMjk1MiwgMjI5NTcsIDIyOTYzLCAxNDUyLCAxNzU0LCAyMjk2OCwgMjI5NzMsIDIyOTc4LCAyMjk4MywgCi0gICAgMjI5ODgsIDIyOTkzLCAyMjk5OCwgMjEwNiwgMjE0OCwgMjMwMDMsIDIzMDA2LCAyMzAxMCwgMjMwMTQsIDIzMDE5LCAKLSAgICAyMzAyMywgMjMwMjcsIDIzMDMwLCAyMzAzNSwgMjMwNDAsIDIzMDQ0LCAyMzA0NywgMjMwNTIsIDIzMDU2LCAyMzA2MSwgCi0gICAgMjMwNjUsIDEzMDEyLCAyMzA3MCwgMjMwNzMsIDIzMDc2LCAyMzA4MCwgMjMwODUsIDIzMDk4LCAyMzEwMiwgMjMxMDUsIAotICAgIDIzMTEzLCAyMzEyMiwgMjMxMjksIDIzMTM0LCAyMzE0MCwgMjMxNDYsIDIzMTUzLCAyMzE2MCwgMjMxNjQsIDIzMTY4LCAKLSAgICAyMzE3MiwgMjMxNzcsIDIzMTgyLCAyMzE4NiwgMjMxOTQsIDIzMTk5LCAyMzIxMSwgMjMyMjIsIDIzMjI3LCAyMzIzMSwgCi0gICAgMjMyMzUsIDIzMjQxLCAyMzI0NiwgMjMyNTEsIDIzMjU1LCAyMzI1OCwgMjMyNjQsIDYzNDYsIDIyNzAsIDIzMjY4LCAKLSAgICAyMzI3MywgMjMyODksIDc4NDIsIDIzMzA5LCAyMzMxOCwgMjMzMzQsIDIzMzM4LCAyMzM0MSwgMjMzNDcsIDIzMzU3LCAKLSAgICAyMzM2MywgMjMzNzgsIDIzMzkwLCAyMzQwMSwgMjM0MDksIDIzNDE4LCAyMzQyNCwgMjM0MzMsIDIzNDQzLCAyMzQ1NCwgCi0gICAgMjM0NjUsIDIzNDc0LCAyMzQ4MywgMjM0OTEsIDIzNDk4LCAyMzUwNiwgMjM1MTksIDIzNTI2LCAyMzUzMiwgMjM1MzcsIAotICAgIDIzNTQ2LCAyMzU1MiwgMjM1NTcsIDIzNTY1LCAyMTUxNiwgMjM1NzcsIDIzNTg5LCAyMzYwMywgMjM2MTEsIDIzNjE4LCAKLSAgICAyMzYzMCwgMjM2MzksIDIzNjQ4LCAyMzY1NiwgMjM2NjQsIDIzNjcyLCAyMzY3OSwgMjM2ODgsIDIzNjk2LCAyMzcwNiwgCi0gICAgMjM3MTUsIDIzNzI1LCAyMzczNCwgMjM3NDMsIDIzNzUxLCAyMzc1NiwgMjM3NjAsIDIzNzYzLCAyMzc2NywgMjM3NzEsIAotICAgIDIzNzc1LCAyMzc3OSwgMjM3ODMsIDIzNzg5LCAyMzc5NSwgMjM4MDMsIDEzMDU3LCAyMzgxMCwgMjM4MTUsIDIzODIyLCAKLSAgICAyMzgyOCwgMjM4MzUsIDEzMDY1LCAyMzg0MiwgMjM4NDUsIDIzODU3LCAyMzg2NSwgMjM4NzEsIDIzODc2LCAyMzg4MCwgCi0gICAgODI0NSwgMjM4OTEsIDIzOTAxLCAyMzkxMCwgMjM5MTcsIDIzOTIxLCAxMzA3MCwgMjM5MjQsIDIzOTMxLCAyMzkzNSwgCi0gICAgMjM5NDEsIDIzOTQ0LCAyMzk1MSwgMjM5NTcsIDIzOTYxLCAyMzk2NiwgMjM5NzAsIDIzOTc5LCAyMzk4NiwgMjM5OTIsIAotICAgIDYzODcsIDIzOTk5LCAyNDAwNywgMjQwMTQsIDI0MDIwLCAyNDAyNSwgMjQwMzEsIDI0MDM3LCAyNDA0NSwgMjQwNDksIAotICAgIDI0MDUyLCAyNDA1NCwgMjM3NjgsIDI0MDYzLCAyNDA2OSwgMjQwNzksIDI0MDg0LCAyNDA5MSwgMjQwOTcsIDI0MTAyLCAKLSAgICAyNDEwNywgMjQxMTIsIDI0MTE3LCAyNDEyNCwgMjQxMzMsIDI0MTQwLCAyNDE0OSwgMjQxNTUsIDI0MTYwLCAyNDE2NiwgCi0gICAgMjQxNzEsIDI0MTc4LCAyNDE4OSwgMjQxOTQsIDI0MTk4LCAyNDIwOCwgMjQyMTQsIDI0MjE4LCAyNDIyMywgMjQyMzMsIAotICAgIDI0MjQyLCAyNDI0NiwgMjQyNTMsIDI0MjYxLCAyNDI2OCwgMjQyNzQsIDI0Mjc5LCAyNDI4NywgMjQyOTQsIDI0MzA2LCAKLSAgICAyNDMxNSwgMjQzMTksIDExMzYyLCAyNDMyNywgMjQzMzcsIDI0MzQxLCAyMzEwOSwgMjQzNTIsIDI0MzU3LCAyNDM2MSwgCi0gICAgMjQzNjgsIDI0Mzc1LCAyMDExNywgMjM2OTMsIDI0MzgwLCAyNDM4NCwgMjQzODcsIDIwOTU0LCAyNDM5MiwgMjQ0MDYsIAotICAgIDI0NDIyLCAyNDQ0MCwgMjQ0NTksIDI0NDc2LCAyNDQ5NCwgMjA5NzMsIDI0NTExLCAyNDUzMSwgMjA5OTAsIDI0NTQzLCAKLSAgICAyNDU1NSwgMTM5ODMsIDI0NTY3LCAyMTAxMCwgMjQ1ODEsIDI0NTkzLCA4ODg1LCAyNDYwNywgMjQ2MTIsIDI0NjE3LCAKLSAgICAyNDYyMiwgMjQ2MjgsIDI0NjM0LCAyNDY0MCwgMjQ2NDQsIDI0NjUxLCAyNDY1NiwgMjQ2NjYsIDI0NjcyLCA4NTMyLCAKLSAgICAyNDY3OCwgMjQ2ODAsIDI0Njg1LCAyNDY5MywgMjQ2OTcsIDI0MTIwLCAyNDcwMywgMjQ3MTAsIDk4NjksIDk4NzksIAotICAgIDI0NzE3LCAyNDcyNywgMjQ3MzIsIDI0NzM2LCAyNDczOSwgMjQ3NDUsIDI0NzUzLCAyNDc2NSwgMjQ3NzUsIDI0NzkxLCAKLSAgICAyNDgwNCwgMjQ4MTgsIDE0MDAxLCAyNDgzMiwgMjQ4MzksIDI0ODQzLCAyNDg0NiwgMjQ4NTEsIDI0ODU1LCAyNDg2MiwgCi0gICAgMjQ4NjksIDI0ODc5LCAyNDg4NCwgMjQ4ODksIDI0ODk0LCAyNDkwMiwgMjQ5MTAsIDI0OTE5LCAyNDkyNCwgNzkzOSwgCi0gICAgMjQ5MjgsIDI0OTMxLCAyNDkzNCwgMjQ5MzksIDI0OTQ2LCAyNDk1MSwgMjQ5NjcsIDI0OTc1LCAyNDk4MywgNzc5MCwgCi0gICAgMjQ5OTEsIDI0OTk2LCAyNTAwMCwgMjUwMDYsIDI1MDEyLCAyNTAxNSwgMjUwMjEsIDI1MDMzLCAyNTA0MSwgMjUwNDgsIAotICAgIDI1MDU0LCAyNTA2MSwgMjUwNzIsIDI1MDg2LCAyNTA5OSwgMjUxMDgsIDI1MTIwLCAyNTEzMSwgMjUxNDEsIDI1MTUwLCAKLSAgICAyNTE1OSwgMjUxNjcsIDI1MTc4LCA2MzY5LCAyNTE4NSwgMjUxOTEsIDI1MTk2LCAyNTIwMiwgMjUyMDksIDI1MjE5LCAKLSAgICAyNTIyOSwgMjUyMzgsIDI1MjQ0LCAyNTI1MSwgMjUyNTYsIDI1MjYzLCAyNTI3MSwgMjUyNzksIDI1MjkxLCA0NzA0LCAKLSAgICAyNTI5OCwgMjUzMDcsIDI1MzE1LCAyNTMyMSwgMjUzMjcsIDI1MzMyLCAyNTMzNiwgMjUzMzksIDI1MzQ1LCAyNTM1MiwgCi0gICAgMjUzNTcsIDI1MzYyLCAyNTM2NiwgMjUzNzgsIDI1Mzg5LCAyNTM5OCwgMjU0MDYsIDEzMTk3LCAyNTQxMSwgMjU0MTcsIAotICAgIDI1NDIzLCA5ODYyLCA3MDQ5LCAyNTQyOCwgMjU0MzEsIDI1NDM0LCAyNTQ0MCwgMjU0NDgsIDI1NDU2LCAyNTQ2MCwgCi0gICAgMjU0NjQsIDI1NDY5LCAyNTQ3MiwgMjU0ODEsIDI1NDg5LCAyNTUwMCwgMjU1MDQsIDI1NTEwLCAyNTUxNiwgMjU1MjAsIAotICAgIDI1NTI2LCAyNTUzNCwgMjU1NTYsIDI1NTgwLCAyNTU4NywgMjU1OTQsIDI1NjAwLCAyNTYwNiwgMjU2MTEsIDI1NjIyLCAKLSAgICAyNTY0MCwgMjU2NDcsIDI1NjU1LCAyNTY1OSwgMjU2NjgsIDI1NjgxLCAyNTY4OSwgMjU3MDEsIDI1NzEyLCAyNTcyMiwgCi0gICAgMjU3MzYsIDI1NzQ1LCAyNTc1MywgMjU3NjUsIDc4NTksIDI1Nzc2LCAyNTc4NywgMjU3OTksIDI1ODA5LCAyNTgxOCwgCi0gICAgMjU4MjMsIDI1ODI3LCAyNTgzNSwgMjU4NDUsIDI1ODUwLCAyNTg1NCwgMjU4NTcsIDI1ODYwLCAyNTg2OCwgMjU4NzYsIAotICAgIDI1ODg1LCAyNTg5NSwgMjU5MDQsIDI1OTEwLCAyNTkyNCwgMjYxNywgMjU5NDYsIDI1OTU3LCAyNTk2NiwgMjU5NzYsIAotICAgIDI1OTg4LCAyNTk5NywgMjYwMDcsIDI2MDE1LCAyNjAyMywgMjYwMzIsIDI2MDM3LCAyNjA0OCwgMjYwNTMsIDI2MDY0LCAKLSAgICAyNjA2OCwgMjYwNzgsIDI2MDg3LCAyNjA5NSwgMjYxMDUsIDI2MTE1LCAyNjEyMywgMjYxMzIsIDI2MTM5LCAyNjE0NywgCi0gICAgMjYxNTQsIDI2MTYzLCAyNjE2NywgMjYxNzUsIDI2MTgyLCAyNjE5MCwgMjYxOTcsIDI2MjA4LCAyNjIyMywgMjYyMzAsIAotICAgIDI2MjM2LCAyNjI0NiwgMjYyNTUsIDI2MjYxLCAyNjI2OCwgMTIzMTIsIDI2Mjc0LCAyNjI3OCwgMjYyODMsIDI2Mjg3LCAKLSAgICAyNjI5MSwgMjYyOTksIDI2MzA3LCAyNjMxMywgMjYzMjIsIDI2MzI5LCAyNjMzNCwgMjYzMzksIDI2MzQ5LCAyMTU2OCwgCi0gICAgMjYzNTMsIDI2MzU2LCAyNjM2MSwgMjYzNjYsIDI2MzcxLCAyNjM3NiwgMjYzODEsIDI2Mzg2LCAyNjM5MSwgMjYzOTYsIAotICAgIDI2NDAyLCAyNjQwNywgMjY0MTIsIDI2NDE4LCAxMjIzLCA2NzksIDI2NDIzLCAyNjQzMiwgMjMxOCwgMjY0MzksIDI2NDQ0LCAKLSAgICAyNjQ0OCwgMjY0NTQsIDEyNTYsIDU0MSwgMzM0LCAyNjQ1OSwgMjY0NjgsIDI2NDc2LCAyNjQ4NSwgMjY0OTMsIDI2NTA0LCAKLSAgICAyNjUxMywgMjY1MjEsIDI2NTI1LCAyNjUyOCwgMjY1MzYsIDI2NTQ0LCAyNjU0OSwgMTMwMjUsIDI2NTU1LCAyNjU2MSwgCi0gICAgMjY1NjcsIDQzNTAsIDI2NTcyLCAyNjU3NiwgMjY1ODIsIDI2NTg2LCAyNjU5MywgMTQxOCwgMjY1OTksIDc5NDYsIDI2NjA2LCAKLSAgICAyNjYxNiwgMjY2MjQsIDI2NjMwLCAyNjYzOSwgMjY2NDcsIDI2NjUzLCAyNjY2MSwgMjY2NjgsIDk0NTUsIDI2Njc0LCAKLSAgICAyNjY4MSwgMjY2ODgsIDE0NTksIDIxMDUsIDI2Njk0LCAyNjcwMCwgMjY3MDcsIDI2NzE4LCAyNjcyOSwgMjY3MzcsIAotICAgIDI2NzQ0LCAyNjc1NCwgMjY3NjMsIDI2NzcxLCAyNjc3OCwgMjY3ODUsIDI2Nzk4LCAyNjgwOSwgMjY4MjgsIDEyNjEsIAotICAgIDI2ODMyLCAyNjgzNywgMjY4NDUsIDM1MTAsIDI2ODQ5LCAyNjg1NCwgMjY4NTgsIDE0MjIsIDIyNzQ2LCAyNjg2OCwgCi0gICAgMjY4NzIsIDI2ODc3LCAyNjg4MSwgMzQzNSwgMjY4ODcsIDI2ODk1LCAyNjkwMiwgMjY5MTMsIDI2OTIxLCAyNjkyOSwgCi0gICAgMzUxMSwgMjY5LCAyNjkzNCwgMjY5NDIsIDI2OTUwLCAyNjk1NywgMjY5NjMsIDI2OTY4LCAyMTcwLCAyNjk3NSwgMjY5ODEsIAotICAgIDIzOTYyLCAyNDE4NCwgMjY5ODcsIDEwNiwgMjY5OTEsIDI2OTk1LCAyNzAwMSwgNjA2LCA3Njk1LCAyNzAwNiwgMjcwMTMsIAotICAgIDI3MDE5LCAyMjgxLCAyNzAyMywgMjcwMjcsIDI3MDMwLCAyNzAzMywgMjcwMzgsIDI3MDQ1LCAyNzA1MSwgMjcwNTYsIAotICAgIDI3MDY0LCAyNzA3MSwgMjcwNzcsIDIwNDU1LCAyNzA4MSwgMzU4MSwgMTQ4MjYsIDI3MDg1LCAyNzA5MCwgMjcwOTMsIAotICAgIDI3MTAxLCAyNzEwOSwgMjcxMTIsIDI3MTE5LCAyNzEyOSwgMjcxNDEsIDI3MTQ2LCAyNzE1MCwgMjcxNTgsIDI3MTY1LCAKLSAgICAyNzE3MSwgMjcxNzgsIDI3MTg1LCAyNzE4OCwgMjcxOTIsIDI3MTk2LCAxNDI2LCAyNzIwNiwgMjcyMDgsIDI3MjEzLCAKLSAgICAyNzIxOSwgMjcyMjUsIDI3MjMwLCAyNzIzNSwgMjcyNDAsIDI3MjQ1LCAyNzI1MCwgMjcyNTUsIDI3MjYwLCAyNzI2NSwgCi0gICAgMjcyNzAsIDI3Mjc1LCAyNzI4MCwgMjcyODUsIDI3MjkwLCAyNzI5NSwgMjczMDEsIDI3MzA3LCAyNzMxMywgMjczMTksIAotICAgIDI3MzI0LCAyNzMyOSwgMjczMzQsIDI3MzQwLCAyNzM0NSwgMjczNTAsIDI3MzU1LCAyNzM2MSwgMjczNjYsIDI3MzcyLCAKLSAgICAyNzM3NywgMjczODIsIDI3Mzg3LCAyNzM5MiwgMjczOTgsIDI3NDAzLCAyNzQwOSwgMjc0MTQsIDI3NDE5LCAyNzQyNCwgCi0gICAgMjc0MjksIDI3NDM1LCAyNzQ0MCwgMjc0NDYsIDI3NDUxLCAyNzQ1NiwgMjc0NjEsIDI3NDY2LCAyNzQ3MSwgMjc0NzYsIAotICAgIDI3NDgxLCAyNzQ4NiwgMjc0OTEsIDI3NDk3LCAyNzUwMywgMjc1MDksIDI3NTE0LCAyNzUxOSwgMjc1MjQsIDI3NTI5LCAKLSAgICAyNzUzNSwgMjc1NDEsIDI3NTQ3LCAyNzU1MywgMjc1NTksIDI3NTY1LCAyNzU3MCwgMjc1NzYsIDI3NTgxLCAyNzU4NiwgCi0gICAgMjc1OTEsIDI3NTk2LCAyNzYwMiwgMjM5NywgMjc2MDcsIDI0MDQsIDI0MTEsIDI3MDgsIDI3NjEyLCAyNDE3LCAyNDI3LCAKLSAgICAyNzYxOCwgMjc2MjIsIDI3NjI3LCAyNzYzMiwgMjc2MzgsIDI3NjQzLCAyNzY0OCwgMjc2NTIsIDI3NjU3LCAyNzY2MywgCi0gICAgMjc2NjgsIDI3NjczLCAyNzY3OCwgMjc2ODQsIDI3Njg5LCAyNzY5MywgMjc2OTcsIDI3NzAyLCAyNzcwNywgMjc3MTIsIAotICAgIDI3NzE3LCAyNzcyMiwgMjc3MjgsIDI3NzM0LCAyNzczOSwgMjc3NDMsIDI3NzQ4LCAyNzc1NCwgMjc3NTgsIDI3NzYzLCAKLSAgICAyNzc2OCwgMjc3NzMsIDI3Nzc4LCAyNzc4MiwgMjc3ODUsIDI3NzkwLCAyNzc5NSwgMjc4MDAsIDI3ODA1LCAyNzgxMSwgCi0gICAgMjc4MTcsIDI3ODIyLCAyNzgyNywgMjc4MzEsIDI3ODM2LCAyNzg0MSwgMjc4NDYsIDI3ODUxLCAyNzg1NiwgMjc4NjAsIAotICAgIDI3ODY1LCAyNzg3MCwgMjc4NzUsIDI3ODc5LCAyNzg4MywgMjc4ODcsIDI3ODkyLCAyNzkwMCwgMjc5MDYsIDI3OTEyLCAKLSAgICAyNzkxOCwgMjc5MjMsIDI3OTI3LCAyNzkzMCwgMjc5MzUsIDI3OTM5LCAyNzk0NCwgMjc5NDgsIDI3OTUzLCAyNzk1NywgCi0gICAgMjc5NjAsIDE1NDg5LCAyNzk2NSwgMjc5NzMsIDE5NDM5LCAyNjYwMywgMjc5NzgsIDI3OTgzLCAyNzk4NywgMjc5OTIsIAotICAgIDI3OTk2LCAyODAwMCwgMjgwMDUsIDI4MDA5LCAyODAxMiwgMjgwMTUsIDI4MDE5LCAyODAyNCwgMjgwMzIsIDI4MDM2LCAKLSAgICAyODAzOSwgMjgwNDQsIDI4MDQ4LCAyODA1MiwgMjgwNTcsIDI4MDYyLCAyODA2NiwgMjgwNzIsIDI4MDc3LCAyODA4MiwgCi0gICAgMjgwODksIDI4MDk2LCAyODEwMCwgMjgxMDMsIDI4MTA5LCAyODExOCwgMjgxMjUsIDI4MTMzLCAyODE0MCwgMjgxNDQsIAotICAgIDI4MTQ5LCAyODE1MywgMjgxNTksIDI4MTY1LCAyODE2OSwgMjgxNzUsIDI4MTgwLCAyODE4NSwgMjgxOTIsIDI4MTk4LCAKLSAgICAyODIwNCwgMjgyMTAsIDI4MjE2LCAyODIyMywgMjgyMjksIDI4MjM1LCAyODI0MSwgMjgyNDcsIDI4MjUzLCAyODI1OSwgCi0gICAgMjgyNjUsIDI4MjcyLCAyODI3OCwgMjgyODUsIDI4MjkxLCAyODI5NywgMjgzMDMsIDI4MzA5LCAyODMxNSwgMjgzMjEsIAotICAgIDI4MzI3LCAyODMzMywgMjgzMzksIDk3NjMsIDI4MzQ1LCAyODM1MCwgMjgzNTUsIDI4MzU4LCAyODM2NiwgMjgzNzEsIAotICAgIDI4MzgwLCAyODM4NiwgMjgzOTEsIDI4Mzk2LCAyODQwMSwgMjg0MDUsIDI4NDEwLCAyODQxNSwgMjg0MjAsIDI4NDI1LCAKLSAgICAyODQzMCwgMjg0MzcsIDI4NDQ0LCAyODQ1MCwgMjg0NTYsIDI4NDYxLCAxNDUxMCwgMjg0NjgsIDI4NDc0LCAyODQ4MSwgCi0gICAgMjg0ODcsIDI4NDkzLCAyODQ5OCwgMjg1MDYsIDI4NTExLCAxNDI5NCwgMjg1MTUsIDI4NTIwLCAyODUyNSwgMjg1MzEsIAotICAgIDI4NTM2LCAyODU0MSwgMjg1NDUsIDI4NTUwLCAyODU1NSwgMjg1NjEsIDI4NTY2LCAyODU3MSwgMjg1NzUsIDI4NTgwLCAKLSAgICAyODU4NSwgMjg1ODksIDI4NTk0LCAyODU5OSwgMjg2MDQsIDI4NjA4LCAyODYxMywgMjg2MTgsIDI4NjIzLCAyODYyNywgCi0gICAgMjg2MzEsIDEzNTMxLCAyODYzNSwgMjg2NDQsIDI4NjUwLCAyODY1NiwgMjg2NjUsIDI4NjczLCAyODY4MiwgMjg2OTAsIAotICAgIDI4Njk1LCAyODY5OSwgMjg3MDYsIDI4NzEyLCAyODcxNiwgMjg3MTksIDI4NzI0LCAyODczMywgMjg3NDEsIDI4NzQ2LCAKLSAgICAxNDU4LCAyODc1MiwgMjg3NTUsIDI4NzU5LCAyMDUyNCwgMjA1MzAsIDI4NzY1LCAyODc2OSwgMjg3ODAsIDI4NzkxLCAKLSAgICAyODgwMiwgMjg4MTQsIDI4ODIxLCAyODgyOCwgMjg4MzMsIDI4ODM3LCA0Mzg3LCA3MzMsIDE5NDM4LCAyODg0NSwgMjg4NDksIAotICAgIDI4ODU0LCAyODg2MCwgMjg4NjUsIDI4ODcxLCAyODg3NiwgMjg4ODIsIDI4ODg3LCA4NzY0LCAyNzg1LCAzMzY1LCAyODg5MSwgCi0gICAgMjg4OTQsIDI4OTAwLCAyODkwNiwgMjg5MTIsIDI4OTE5LCAyODkyNSwgMjg5MzEsIDI4OTM3LCAyODk0MywgMjg5NDksIAotICAgIDI4OTU1LCAyODk2MSwgMjg5NjcsIDI4OTczLCAyODk3OSwgMjg5ODUsIDI4OTkxLCAyODk5OCwgMjkwMDQsIDI5MDEwLCAKLSAgICAyOTAxNiwgMjkwMjIsIDI5MDI4LCAyOTAzMywgMjkwMzYsIDI5MDQzLCAyOTA1MSwgMjkwNTYsIDI5MDYxLCAyOTA2NywgCi0gICAgMjkwNzIsIDI5MDc3LCAyOTA4MSwgMjkwODYsIDI5MDkyLCAyOTA5NywgMjkxMDMsIDI5MTA4LCAyOTExNCwgMjkxMTksIAotICAgIDI5MTI1LCAyOTEzMSwgMjkxMzUsIDI5MTQwLCAyOTE0NSwgMjkxNTAsIDI5MTU1LCAyOTE1OSwgMjkxNjQsIDI5MTY5LCAKLSAgICAyOTE3NCwgMjkxODAsIDI5MTg2LCAyOTE5MiwgMjkxOTgsIDI5MjAzLCAyOTIwNywgMjkyMTAsIDI5MjE2LCAyOTIyMiwgCi0gICAgMjkyMzEsIDI5MjM5LCAyOTI0NiwgMjkyNTEsIDI5MjU1LCAyOTI1OSwgMjkyNjQsIDEzMzk1LCAyOTI2OSwgMjkyNzcsIAotICAgIDI5MjgzLCAzNjExLCAyOTI4OCwgMjkyOTEsIDI5Mjk1LCA2NDM2LCAyOTMwMSwgMjkzMDcsIDI5MzE0LCA2NDQ1LCAyOTMxOCwgCi0gICAgMjkzMjQsIDI5MzMxLCAyOTMzNywgMjkzNDYsIDI5MzU0LCAyOTM2NiwgMjkzNzAsIDI5Mzc3LCAyOTM4MywgMjkzODcsIAotICAgIDI5MzkwLCAyOTM5OSwgMjk0MDcsIDI5NDEyLCAyOTQxNiwgMjk0MjYsIDI5NDM2LCAyOTQ0NiwgMjk0NTIsIDI5NDU3LCAKLSAgICAyOTQ2NywgMjk0NzIsIDI5NDg1LCAyOTQ5OSwgMjk1MTAsIDI5NTIyLCAyOTUzNCwgMjk1NDgsIDI5NTYxLCAyOTU3MywgCi0gICAgMjk1ODUsIDEyODU5LCAyOTU5OSwgMjk2MDQsIDI5NjA5LCAyOTYxMywgMjk2MTcsIDI5NjIxLCAxNzQzLCAyNTEyOSwgCi0gICAgMjk2MjUsIDI5NjMwLCAyOTYzNSwgMjk2MzksIDI5NjQyLCAyOTY0NywgMjk2NTIsIDI5NjU4LCAyOTY2NCwgODQ2MSwgCi0gICAgMjk2NjksIDI5Njc2LCAxMzkzNSwgMjk2ODIsIDI5Njg3LCAyOTY5MiwgMjk2OTYsIDI5NzAxLCAyOTcwNiwgMjg4NTUsIAotICAgIDI5NzExLCAyOTcxNiwgMjk3MjEsIDI5NzI3LCAyODg2MSwgMjk3MzIsIDI5NzM1LCAyOTc0MiwgMjk3NTAsIDI5NzU2LCAKLSAgICAyOTc2MiwgMjk3NjgsIDI5Nzc5LCAyOTc4NCwgMjk3OTEsIDI5Nzk4LCAyOTgwNSwgMjk4MTMsIDI5ODIyLCAyOTgzMSwgCi0gICAgMjk4MzcsIDI5ODQzLCAyOTg1MSwgMjg4NjYsIDI5ODU2LCAyOTg2MiwgMjk4NjgsIDI4ODcyLCAyOTg3MywgMjk4ODEsIAotICAgIDI5ODg5LCAyOTg5NSwgMjk5MDIsIDI5OTA4LCAyOTkxNSwgMjk5MjIsIDI5OTI4LCAyOTkzNiwgMjk5NDYsIDI5OTUzLCAKLSAgICAyOTk1OCwgMjk5NjQsIDI5OTY5LCAyOTk3NCwgMjk5ODEsIDI5OTkwLCAyOTk5OCwgMzAwMDMsIDMwMDA5LCAzMDAxNiwgCi0gICAgMzAwMjQsIDMwMDMwLCAzMDAzNSwgMzAwNDEsIDMwMDUwLCAyNTg5MCwgMzAwNTcsIDMwMDYxLCAzMDA2NiwgMzAwNzUsIAotICAgIDMwMDgwLCAzMDA4NSwgMTA3MTQsIDMwMDkzLCAzMDA5OCwgMzAxMDMsIDMwMTA3LCAzMDExMiwgMzAxMTcsIDMwMTI0LCAKLSAgICAzMDEyOSwgMzAxMzQsIDI4ODc3LCAyODg4MywgMzAxNDAsIDI0NzMsIDIzOSwgMzAxNDMsIDMwMTQ2LCAzMDE1MCwgMzAxNTQsIAotICAgIDMwMTY0LCAzMDE3MiwgMzAxNzYsIDMwMTgzLCAzMDE5MCwgMzAxOTQsIDMwMTk3LCAzMDIwMywgMzAyMTEsIDMwMjE5LCAKLSAgICAzMDIyMywgMzAyMjcsIDMwMjMwLCAzMDIzNywgMzAyNDEsIDMwMjQ4LCAzMDI1NiwgMzAyNjMsIDMwMjY3LCAzMDI3NSwgCi0gICAgNjg0LCAyOTcsIDMwMjg3LCAzMDI5MiwgMzAyOTcsIDMwMzAzLCAzMDMwOCwgMzAzMTMsIDM2MzIsIDMwMzE4LCAzMDMyMSwgCi0gICAgMzAzMjYsIDMwMzMxLCAzMDMzNiwgMzAzNDEsIDMwMzQ2LCAzMDM1MywgMjA2MDksIDMwMzU4LCAzMDM2MywgMzAzNjgsIAotICAgIDMwMzczLCAzMDM3OCwgMzAzODQsIDMwMzg5LCAzMDM5NSwgMjkwMzksIDMwNDAxLCAzMDQwNiwgMzA0MTIsIDMwNDE4LCAKLSAgICAzMDQyOCwgMzA0MzMsIDMwNDM4LCAzMDQ0MiwgMzA0NDcsIDMwNDUyLCAzMDQ1NywgMzA0NjIsIDMwNDc1LCAzMDQ4MCwgCi0gICAgMjA0MDYsIDE0OTA2LCAzNjM4LCAzMDQ4NCwgMzA0ODksIDMwNDk0LCAzMDUwMCwgMzA1MDUsIDMwNTEwLCAzMDUxNCwgCi0gICAgMzA1MTksIDMwNTI0LCAzMDUzMCwgMzA1MzUsIDMwNTQwLCAzMDU0NCwgMzA1NDksIDMwNTU0LCAzMDU1OSwgMzA1NjMsIAotICAgIDMwNTY4LCAzMDU3MywgMzA1NzgsIDMwNTg0LCAzMDU5MCwgMzA1OTUsIDMwNTk5LCAzMDYwNCwgMzA2MDksIDMwNjE0LCAKLSAgICAzMDYxOCwgMzA2MjYsIDMwNjMwLCAzMDYzNiwgMzA2NDAsIDMwNjQ3LCAxNDY5OSwgMzA2NTMsIDMwNjYwLCAzMDY2OCwgCi0gICAgMzA2NzUsIDMwNjgxLCAzMDY5MywgMzA2OTksIDMwNzAzLCAyNzI3LCAzMDcwNywgMzA3MTEsIDMwMjMyLCAzMDcyMCwgCi0gICAgMzA3MzEsIDMwNzM2LCAzMDc0MSwgMzA3NDYsIDMwNzUwLCAzMDc1NSwgMjA1MzUsIDMwNzU5LCAzMDc2NCwgMTk0NTksIAotICAgIDMwNzY4LCAzMDc3MywgMzA3NzksIDMwNzg0LCAzMDc4OCwgMzA3OTIsIDMwNzk1LCAzMDc5OSwgMzA4MDUsIDMwODE2LCAKLSAgICAzMDgyOCwgMzA4MzMsIDMwODM3LCAzMDg0MCwgMzQzLCAzMDg0NCwgMzA4NDksIDMwODU0LCAzMDg1OSwgMzA4NjQsIAotICAgIDMwODY5LCAzMDg3NSwgMzA4ODAsIDMwODg1LCAzMDg5MSwgMzA4OTYsIDMwOTAyLCAzMDkwNywgMzA5MTMsIDMwOTE4LCAKLSAgICAzMDkyMywgMzA5MjgsIDMwOTMzLCAzMDkzOCwgMzA5NDMsIDMwOTQ4LCAzMDk1MywgMzA5NTksIDMwOTY0LCAzMDk2OSwgCi0gICAgMzA5NzQsIDMwOTc5LCAzMDk4NCwgMzA5ODksIDMwOTk0LCAzMTAwMCwgMzEwMDYsIDMxMDExLCAzMTAxNiwgMzEwMjEsIAotICAgIDMxMDI2LCAzMTAzMSwgMzEwMzYsIDMxMDQxLCAzMTA0NiwgMzEwNTEsIDMxMDU2LCAzMTA2MSwgMzEwNjYsIDMxMDcxLCAKLSAgICAzMTA3NiwgMzEwODEsIDMxMDg2LCAzMTA5MSwgMzEwOTYsIDMxMTAyLCAyNiwgMzExMDcsIDMxMTExLCAzMTExNSwgMzExMjMsIAotICAgIDMxMTI3LCAzMTEzMSwgMzExMzQsIDMxMTM3LCAzMTEzOSwgMzExNDQsIDMxMTQ4LCAzMTE1MywgMzExNTcsIDMxMTYyLCAKLSAgICAzMTE2NiwgMzExNzEsIDMxMTc1LCAzMTE3OCwgMzExODAsIDMxMTg1LCAzMTE4OSwgMzEyMDAsIDMxMjAzLCAzMTIwNSwgCi0gICAgMzEyMDksIDMxMjIxLCAzMTIzMCwgMzEyMzQsIDMxMjQwLCAzMTI0NSwgMzEyNTQsIDMxMjYwLCAzMTI2NSwgMzEyNzAsIAotICAgIDMxMjc0LCAzMTI3OSwgMzEyODYsIDMxMjkxLCAzMTI5NywgMzEzMDIsIDMxMzA2LCAzMTMxMywgMjM3MDEsIDIzNzExLCAKLSAgICAzMTMxNywgMzEzMjIsIDMxMzI3LCAzMTMzMiwgMzEzMzksIDMxMzQzLCAzMTM1MCwgNjU0NCwgMzEzNTYsIDMxMzY1LCAKLSAgICAzMTM3MywgMzEzODgsIDMxNDAyLCAzMTQxMCwgMzE0MjEsIDMxNDMwLCAzMTQzNSwgNTY4MSwgMzE0NDUsIDMxNDUwLCAKLSAgICAzMTQ1NSwgMzE0NTksIDMxNDYyLCAzMTQ2NiwgMzE0NzEsIDMxNDc1LCAzMTQ4MiwgMzE0ODcsIDMxNDkyLCA3MzIwLCAKLSAgICAzMTUwMiwgMzE1MDQsIDMxNTA3LCAzMTUxMSwgMzE1MTcsIDMxNTIxLCAzMTUyNiwgMzE1MzEsIDMxNTM3LCAzMTU0MiwgCi0gICAgMzE1NDgsIDMxNTUzLCAzMTU2MywgMzE1NzIsIDMxNTgwLCAzMTU4NSwgMzE1OTEsIDMxNTk2LCAzMTYwMywgMzE2MDcsIAotICAgIDMxNjE1LCAzMTYyMiwgMzE2MzUsIDMxNjQzLCAzMTY0NywgMzE2NTcsIDMxNjYyLCAzMTY2NiwgMzE2NzQsIDMxNjgyLCAKLSAgICAzMTY4NiwgMzE2OTUsIDMxNzAxLCAzMTcwNiwgMzE3MTQsIDMxNzI0LCAzMTczMywgMzE3NDIsIDMxNzUxLCAzMTc2MiwgCi0gICAgMzE3NzAsIDMxNzgxLCAzMTc5MCwgMzE3OTcsIDMxODAzLCAzMTgwOCwgMzE4MTksIDMxODI0LCAzMTgyOCwgMzE4MzEsIAotICAgIDMxODM1LCAzMTg0MywgMzE4NDksIDMxODU3LCAzMTg2NCwgMzE4NzAsIDMxODc1LCAzMTg4MSwgMjM3MiwgMzE4ODUsIAotICAgIDMxODg3LCAzMTg5MiwgMzE4OTcsIDMxOTAwLCAzMTkwMiwgMzE5MDYsIDMxOTA5LCAzMTkxNiwgMzE5MjAsIDMxOTI0LCAKLSAgICAzMTkyNywgMzE5MzMsIDMxOTQzLCAzMTk0OCwgMzE5NTQsIDMxOTU4LCAzMTk2MywgMzE5NzYsIDI0MDc0LCAzMTk4MiwgCi0gICAgMzE5OTEsIDE1NjU0LCAzMTk5OCwgMzIwMDcsIDI5NDMyLCAzMjAxNSwgMzIwMjAsIDMyMDI0LCAzMjAzMiwgMzIwMzksIAotICAgIDMyMDQ0LCAzMjA0OCwgMzIwNTMsIDMyMDU3LCAzMjA2NSwgMzIwNzEsIDMyMDc3LCAzMjA4MiwgMzIwODYsIDMyMDg5LCAKLSAgICAzMjA5NCwgMzIxMDcsIDMyMTIzLCAyMTA4MCwgMzIxNDAsIDMyMTUyLCAzMjE2OSwgMzIxODEsIDMyMTk1LCAyMTA5NywgCi0gICAgMjExMTYsIDMyMjA3LCAzMjIxOSwgMjYzNCwgMzIyMzMsIDMyMjM4LCAzMjI0MywgMzIyNDgsIDMyMjUyLCAzMjI1OSwgCi0gICAgMzIyNzEsIDMyMjc3LCAzMjI4MCwgMzIyOTEsIDMyMzAyLCAyOTg0OCwgNjcwLCAzMjMwNywgMzIzMTEsIDMyMzE0LCAKLSAgICAzMjMxOSwgMzIzMjQsIDMyMzMwLCAzMjMzNSwgMzIzNDAsIDMyMzQ2LCAzMjM1MiwgMzIzNTcsIDMyMzYxLCAzMjM2NiwgCi0gICAgMzIzNzEsIDMyMzc2LCAzMjM4MCwgMzIzODMsIDMyMzg5LCAzMjM5NCwgMzIzOTksIDMyNDA0LCAzMjQwOCwgMzI0MTMsIAotICAgIDMyNDE5LCAzMjQyNywgMjQyOTksIDMyNDMyLCAzMjQzNywgMzI0NDQsIDMyNDUwLCAzMjQ1NiwgMzI0NjEsIDMyNDY5LCAKLSAgICAyMDYxOCwgMzI0NzYsIDMyNDgxLCAzMjQ4NiwgMzI0OTEsIDMyNDk1LCAzMjQ5OCwgMzI1MDMsIDMyNTA3LCAzMjUxMSwgCi0gICAgMzI1MTgsIDMyNTI0LCAzMjUzMCwgMzI1MzYsIDMyNTQzLCAzMjU0OCwgMzI1NTQsIDMxNjc3LCAzMjU1OCwgMzI1NjIsIAotICAgIDMyNTY3LCAzMjU4MCwgMzI1ODUsIDMyNTkxLCAzMjU5OSwgMzI2MDYsIDMyNjE0LCAzMjYyNCwgMzI2MzAsIDMyNjM2LCAKLSAgICAzMjY0MiwgMzI2NDYsIDMyNjU1LCAzMjY2MCwgMzI2NjUsIDg3ODcsIDMyNjcwLCAzMjY3NywgMzI2ODMsIDMyNjkzLCAKLSAgICAzMjY5OCwgMzI3MDQsIDMyNzEyLCAzNTQzLCAzMjcxOSwgMzI3MjYsIDM1NDksIDMyNzMwLCAzMjczNSwgMzI3NDYsIAotICAgIDMyNzUzLCAzMjc1OSwgMzI3NjgsIDMyNzcyLCAzOTMyLCAzMjc3NSwgMzI3ODIsIDMyNzg4LCAzMjc5NCwgMzI4MDIsIAotICAgIDMyODEyLCAyNjk1OCwgMzI4MTksIDMyODI3LCAzMjgzMywgMzI4MzgsIDMyODQ0LCAzMjg0OSwgMzI4NTUsIDMyODU5LCAKLSAgICAzMjg2NiwgMzI4NzIsIDMyODgxLCAyNDA5NCwgMzI4ODgsIDMyODkzLCAzMjg5NywgMzI5MDUsIDMyOTEzLCA3OTc0LCAKLSAgICA0MzczLCAzMjkyMCwgMzI5MjQsIDMyOTI4LCAzMjkzMywgMzI5MzksIDMyOTQ0LCAzMjk0OSwgMzI5NTYsIDMwMzQ5LCAKLSAgICAzMjk2MiwgMzI5NjcsIDMyOTcxLCAzMjk3NiwgMzI5ODAsIDMyOTg5LCAzMjk5MywgMzI5OTksIDMzMDA2LCAzMzAxMiwgCi0gICAgMzMwMTksIDMzMDI0LCAzMzAzMywgMzMwMzgsIDMzMDQyLCAzMzA0NywgMzMwNTQsIDMzMDYyLCAzMzA3MCwgMzMwNzUsIAotICAgIDE5NTA4LCAzMzA3OSwgMzMwODIsIDMzMDg2LCAzMzA5MCwgMzMwOTQsIDMzMDk3LCAzMzA5OSwgMzMxMDQsIDMzMTEyLCAKLSAgICAzMzExNiwgMzMxMjMsIDMzMTI3LCAzMzEzNSwgMzMxNDIsIDMzMTUyLCAzMzE1NiwgMzMxNjAsIDMzMTY4LCAzMzE3NiwgCi0gICAgMzMxODIsIDMzMTg3LCAzMzE5NiwgMTE2NjksIDMzMjAyLCAzMzIxMSwgMzMyMTYsIDMzMjIzLCAzMzIzMSwgMzMyMzksIAotICAgIDMzMjQ3LCAzMzI1NCwgMzMyNjEsIDMzMjY4LCAzMzI3NSwgMzMyODIsIDMzMjg3LCAzMzI5MywgMzMzMTAsIDMzMzE4LCAKLSAgICAzMzMyOCwgMzMzMzYsIDMzMzQzLCAzODUsIDMzMzQ3LCAzMzM1MywgMzMzNTcsIDMzMzYyLCAzMTQyNiwgMzMzNjgsIAotICAgIDMzMzcxLCAzMzM3NSwgMzMzODMsIDM1NTQsIDMzMzkxLCAzMzM5NywgMzM0MDMsIDMzNDEyLCAzMzQyMiwgMzM0MjksIAotICAgIDMzNDM1LCAzNTYwLCAzNTY2LCAzMzQ0NCwgMzM0NTEsIDMzNDU5LCAzMzQ2NCwgMzM0NjgsIDMzNDc1LCAzMzQ4MywgCi0gICAgMzM0ODksIDMzNDk4LCAzMzUwOCwgMzM1MTQsIDMzNTIyLCAzMzUzMSwgMzM1MzgsIDMzNTQ2LCAyMDE3NSwgMzM1NTMsIAotICAgIDMzNTYwLCAzMzU2NiwgMzM1NzYsIDMzNTg1LCAzMzU5NiwgMzM2MDAsIDMzNjEwLCAzMzYxNiwgMzM2MjMsIDMzNjMxLCAKLSAgICAzMzY0MCwgMzM2NDksIDMzNjU5LCAzMzY3MCwgMzM2NzcsIDMzNjgyLCAzMzY4OSwgMjk2NywgMzM2OTcsIDMzNzAzLCAKLSAgICAzMzcwOCwgMzM3MTQsIDMzNzIwLCAzMzcyNSwgMzM3MzgsIDMzNzUxLCAzMzc2NCwgMzM3NzEsIDMzNzc3LCAzMzc4NSwgCi0gICAgMzM3OTAsIDMzNzk0LCAxNDMyLCAzMzc5OCwgMzM4MDMsIDMzODA4LCAzMzgxMywgMzM4MTgsIDMzODI0LCAzMzgyOSwgCi0gICAgMzM4MzQsIDMzODM5LCAzMzg0NCwgMzM4NDksIDMzODU0LCAzMzg1OSwgMzM4NjUsIDMzODcxLCAzMzg3NiwgMzM4ODEsIAotICAgIDMzODg3LCAzMzg5MiwgMzM4OTcsIDMzOTAyLCAzMzkwOCwgMzM5MTMsIDMzOTE4LCAzMzkyMywgMzM5MjgsIDMzOTM0LCAKLSAgICAzMzkzOSwgMzM5NDQsIDMzOTUwLCAzMzk1NSwgMzM5NjAsIDMzOTY1LCAzMzk3MCwgMzM5NzUsIDMzOTgxLCAzMzk4NiwgCi0gICAgMzM5OTIsIDMzOTk3LCAzNDAwMywgMzQwMDgsIDM0MDEzLCAzNDAxOCwgMzQwMjQsIDM0MDMwLCAzNDAzNiwgMzQwNDIsIAotICAgIDM0MDQ4LCAzNDA1NCwgMzQwNjAsIDM0MDY2LCAzNDA3MSwgMzQwNzYsIDM0MDgyLCAzNDA4NywgMzQwOTIsIDM0MDk3LCAKLSAgICAzNDEwMiwgMzQxMDcsIDM0MTEyLCAzNDExNywgMzQxMjMsIDM0MTI4LCAzNDEzMywgMzQxMzksIDM0MTQ1LCAxMDEsIAotICAgIDM0MTUwLCAzNDE1MiwgMzQxNTYsIDM0MTYwLCAzNDE2NCwgMzQxNjksIDM0MTczLCA3ODk1LCAzNDE3NywgMzQxODMsIAotICAgIDQ3MzgsIDM0MTg5LCAzNDE5MiwgMzQxOTcsIDM0MjAxLCAzNDIwNiwgMzQyMTAsIDM0MjE0LCAzNDIxOSwgODU5NCwgCi0gICAgMzQyMjMsIDM0MjI3LCAzNDIzMSwgMTM2MjMsIDM0MjM2LCAzNDI0MCwgMzQyNDUsIDM0MjUwLCAzNDI1NSwgMzQyNTksIAotICAgIDM0MjY2LCAyNDA5OCwgMzQyNzIsIDM0Mjc1LCAzNDI3OSwgMzQyODQsIDM0MjkwLCAzNDI5NCwgMzQzMDIsIDM0MzA4LCAKLSAgICAzNDMxMywgMzQzMTcsIDM0MzIzLCAzNDMyNywgMzQzMzEsIDM0MDQsIDM0MDksIDI3MTQ0LCAzNDMzNCwgMzQzNDIsIAotICAgIDM0MzQ5LCAzNDM1MywgMzQzNjAsIDM0MzY1LCAzMzMsIDM0MzcwLCAzNDM3NCwgMzQzODAsIDM0MzkyLCAzNDM5OCwgCi0gICAgMzQ0MDQsIDM0NDA4LCAzNDQxNCwgMzQ0MjMsIDM0NDI3LCAzNDQzMSwgMzQ0MzYsIDM0NDQxLCAzNDQ0NiwgMzQ0NTAsIAotICAgIDM0NDU0LCAzNDQ2MSwgMzQ0NjcsIDM0NDcyLCAzNDQ4NywgMzQ1MDIsIDM0NTE3LCAzNDUzMywgMzQ1NTEsIDg1NDQsIAotICAgIDM0NTY1LCAzNDU3MiwgMzQ1NzYsIDM0NTc5LCAzNDU4OCwgMzQ1OTMsIDM0NTk3LCAzNDYwNSwgMzE2MjgsIDM0NjEzLCAKLSAgICAzNDYxNywgMzQ2MjcsIDI3MTE0LCAzNDYzOCwgMzQ2NDIsIDM0NjUxLCAzNDY1OSwgODE1MiwgMTMxNjMsIDM0NjYzLCAKLSAgICAzNDY2NiwgMzQ2NjksIDY1NTcsIDM4MDIsIDM0Njc0LCAzNDY4MiwgMzQ2ODYsIDM0Njg5LCAzNDY5MywgMzQ2OTgsIAotICAgIDM0NzAzLCAzNDcwOSwgMzQ3MTUsIDM0NzIwLCAzNDcyNCwgMjM5NDYsIDM0NzI4LCAzNDczMiwgMzQ3MzgsIDM0NzQyLCAKLSAgICA3NDQ2LCAzNDc1MSwgMzQ3NTgsIDM0NzYyLCAxMDIxMCwgMzQ3NjksIDM0Nzc1LCAzNDc4MCwgMzQ3ODcsIDM0Nzk0LCAKLSAgICAzNDgwMSwgMjY0ODAsIDY0ODAsIDM0ODA4LCAzNDgxNSwgMzQ4MjIsIDM0ODI4LCAzNDgzMywgMzQ4NDAsIDM0ODUxLCAKLSAgICAzNDg1NywgMzQ4NjIsIDM0ODY3LCAzNDg3NCwgMzQ4NzgsIDM0ODgyLCAzNDg5MiwgMzQ5MDMsIDM0OTA5LCAzNDkxNCwgCi0gICAgMzQ5MTksIDM0OTI0LCAzNDkyOSwgMzQ5MzQsIDM0OTM4LCAzNDk0MiwgMzQ5NDgsIDM0OTU2LCAyMjczLCA4MjgsIDg2MTYsIAotICAgIDg2MjEsIDg2MjcsIDM0OTY1LCA4NjMyLCA4NjM3LCA4NjQzLCAzNDk3MCwgMzQ5ODAsIDM0OTg0LCA4NjQ4LCAzNDk4OSwgCi0gICAgMzQ5OTIsIDM0OTk3LCAzNTAwMSwgMzUwMDYsIDM1MDExLCAzNTAxOCwgMzUwMjUsIDM1MDMzLCA4NTU3LCAzNTA0MCwgCi0gICAgMzUwNDMsIDM1MDQ5LCAzNTA1OSwgNDQwNywgMzUwNjgsIDM1MDcyLCAzNTA4MCwgMzUwODQsIDM1MDk0LCAzNTEwMCwgCi0gICAgMzUxMTEsIDM1MTE3LCAzNTEyMywgMzUxMjgsIDM1MTM0LCAzNTE0MCwgMzUxNDYsIDM1MTUxLCAzNTE1NCwgMzUxNjEsIAotICAgIDM1MTY3LCAzNTE3MiwgMzUxNzksIDM1MTg2LCAzNTE5MCwgMzUyMDAsIDM1MjEzLCAzNTIyMiwgMzUyMzEsIDM1MjQyLCAKLSAgICAzNTI1NSwgMzUyNjYsIDM1Mjc1LCAzNTI4NiwgMzUyOTEsIDM1MzAwLCAzNTMwNSwgODY1MywgMzUzMTEsIDM1MzE4LCAKLSAgICAzNTMyNiwgMzUzMzEsIDM1MzM1LCAzNTM0MiwgMzUzNDksIDM3NTcsIDIxLCAzNTM1MywgMzUzNTgsIDE0OTU4LCAzNTM2MiwgCi0gICAgMzUzNjUsIDM1MzY4LCAyNjAwMSwgMzUzNzIsIDI2NDg5LCAzNTM4MCwgMzUzODQsIDM1Mzg4LCAzNTM5MSwgMzUzOTcsIAotICAgIDM1NDAzLCAzNTQxMSwgMzU0MTcsIDM1NDI0LCAyNTk5MywgMzU0MjgsIDI2MTc4LCAzNTQzMiwgMzU0NDEsIDM1NDQ3LCAKLSAgICAzNTQ1MywgMzU0NTgsIDM1NDYyLCAzNTQ2OCwgMzU0NzIsIDM1NDc1LCAzNTQ4MywgMzU0OTEsIDI0MTU2LCAzNTQ5NywgCi0gICAgMzU1MDQsIDM1NTEwLCAzNTUxNSwgMzU1MjAsIDM1NTI0LCAzNTUzMCwgMzU1MzUsIDM1NTQxLCAzOTczLCA3NTUsIDM1NTQ4LCAKLSAgICAzNTU1MiwgMzU1NTUsIDEzNTEzLCAzNTU2NywgMzM1MjcsIDM1NTc4LCAzNTU4MSwgMzU1ODgsIDM1NTk0LCAzNTU5OCwgCi0gICAgMzU2MDQsIDM1NjA5LCAzNTYxNSwgMzU2MjAsIDM1NjI1LCAzNTYyOSwgMzU2MzMsIDM1NjM4LCAzNTY0MywgMzU2NTMsIAotICAgIDM1NjU5LCAzNTY3MiwgMzU2NzgsIDM1Njg1LCAzNTY5MCwgMzU2OTYsIDM1NzAxLCAxNDg0NCwgMTQzNSwgMTAwMiwgCi0gICAgMjg5NzQsIDI4OTgwLCAzNTcwNiwgMjg5ODYsIDI4OTk5LCAyOTAwNSwgMjkwMTEsIDM1NzEyLCAyOTAxNywgMjkwMjMsIAotICAgIDM1NzE4LCAzNTcyNCwgMTQsIDM1NzMyLCAzNTczOSwgMzU3NDMsIDM1NzQ3LCAzNTc1NSwgMjk3MzcsIDM1NzU5LCAzNTc2MywgCi0gICAgMzU3NzAsIDM1Nzc1LCAzNTc3OSwgMzU3ODQsIDM1NzkwLCAzNTc5NSwgMzU4MDEsIDM1ODA2LCAzNTgxMCwgMzU4MTQsIAotICAgIDM1ODE4LCAzNTgyMywgMzU4MjcsIDM1ODMyLCAzNTgzNiwgMzU4NDMsIDM1ODQ4LCAzNTg1MiwgMzU4NTcsIDM1ODYxLCAKLSAgICAzNTg2NiwgMzU4NzAsIDM1ODc1LCAzNTg4MSwgMTM3MzMsIDEzNzM4LCAzNTg4NiwgMzU4OTAsIDM1ODkzLCAzNTg5NywgCi0gICAgMzU5MDIsIDM1OTA2LCAzNTkxMiwgMzU5MTksIDM1OTI0LCAzNTkzNCwgMzU5MzksIDM1OTQ3LCAzNTk1MSwgMzU5NTQsIAotICAgIDI5NzUyLCAzNTk1OCwgNDAyNiwgMzU5NjMsIDM1OTY4LCAzNTk3MiwgMzU5NzcsIDM1OTgxLCAzNTk4NiwgMTE2ODcsIAotICAgIDM1OTk3LCAzNjAwMSwgMzYwMDQsIDM2MDA5LCAzNjAxMywgMzYwMTcsIDM2MDIwLCAzNjAyNCwgNjU3NiwgMTE3MDMsIAotICAgIDM2MDI3LCAzNjAzMCwgMzYwMzUsIDM2MDM5LCAzNjA0OCwgMzYwNjQsIDM2MDgwLCAzNjA5MCwgMjU5MDAsIDM2MDk3LCAKLSAgICAzNjEwMSwgMzYxMDYsIDM2MTExLCAzNjExNSwgMzYxMTksIDMzNjQ0LCAzNjEyNSwgMzYxMzAsIDM2MTM0LCAzNjE0MSwgCi0gICAgMzYxNDYsIDM2MTUwLCAzNjE1NCwgMjQ5NTgsIDM2MTYwLCAxOTYwMywgMzYxNjUsIDM2MTcyLCAzNjE4MCwgMzYxODYsIAotICAgIDM2MTkzLCAzNjIwMSwgMzYyMDcsIDM2MjExLCAzNjIxNywgMzYyMjUsIDM2MjI5LCAzNjIzOCwgNzg3NiwgMzYyNDYsIAotICAgIDM2MjUwLCAzNjI1OCwgMzYyNjUsIDM2MjcwLCAzNjI3NSwgMzYyNzksIDM2MjgyLCAzNjI4NiwgMzYyODksIDM2MjkzLCAKLSAgICAzNjMwMCwgMzYzMDUsIDM2MzExLCAyNDM3NywgMjkwMzQsIDM2MzE1LCAzNjMyMiwgMzYzMjgsIDM2MzM0LCAzNjMzOSwgCi0gICAgMzYzNDIsIDM2MzQ0LCAzNjM1MSwgMzYzNTgsIDM2MzY0LCAzNjM2OCwgMzYzNzEsIDM2Mzc1LCAzNjM3OSwgMzYzODMsIAotICAgIDM2Mzg4LCAzNjM5MiwgMzYzOTYsIDM2Mzk5LCAzNjQwMywgMzY0MTcsIDIxMTQ2LCAzNjQzNiwgMzY0NDksIDM2NDYyLCAKLSAgICAzNjQ3NSwgMjExNjQsIDM2NDkwLCA4ODQ2LCAzNjUwNSwgMzY1MTEsIDM2NTE1LCAzNjUxOSwgMzY1MjYsIDM2NTMxLCAKLSAgICAzNjUzNSwgMzY1NDIsIDM2NTQ4LCAzNjU1MywgMzY1NTksIDM2NTY5LCAzNjU4MSwgMzY1OTIsIDM2NTk3LCAzNjYwNCwgCi0gICAgMzY2MDgsIDM2NjEyLCAzNjYxNSwgMTQxMjksIDM2MDUsIDM2NjIzLCAxMzc2MCwgMzY2MzYsIDM2NjQzLCAzNjY0NywgCi0gICAgMzY2NTEsIDM2NjU2LCAzNjY2MSwgMzY2NjcsIDM2NjcxLCAzNjY3NSwgMzY2NzgsIDYxODgsIDEzNzcxLCAzNjY4MywgCi0gICAgMzY2ODcsIDM2NjkzLCAzNjcwMiwgMzY3MDcsIDMzNTA0LCAzNjcxMywgMzY3MTgsIDM2NzIyLCAzNjcyNywgMzY3MzQsIAotICAgIDM2NzM4LCAzNjc0MSwgMTI4MjQsIDM2NzQ2LCAzNjc1MywgMTAwOSwgMzY3NTcsIDM2NzYyLCAzNjc2NywgMzY3NzMsIAotICAgIDM2Nzc4LCAzNjc4MywgMzY3ODcsIDM2Nzk3LCAzNjgwMiwgMzY4MDgsIDM2ODEzLCAzNjgxOSwgMzY4MjQsIDM2ODMwLCAKLSAgICAzNjg0MCwgMzY4NDUsIDM2ODUwLCAzNjg1NCwgNTY4MywgNTY5NSwgMzY4NTksIDM2ODYyLCAzNjg2OSwgMzY4NzUsIAotICAgIDMxNzkzLCAzMTgwMCwgMzY4ODQsIDM2ODg4LCAyOTgwMCwgMzY4OTYsIDM2OTA3LCAzNjkxNSwgMzM2OTIsIDM2OTIyLCAKLSAgICAzNjkyNywgMzY5MzIsIDM2OTQzLCAzNjk1MCwgMzY5NjEsIDI5ODI0LCAxOTYwOSwgMzY5NjksIDcyMiwgMzY5NzQsIAotICAgIDM2OTgwLCAyNTk4NCwgMzY5ODYsIDM2OTkxLCAzNzAwMSwgMzcwMTAsIDM3MDE3LCAzNzAyMywgMzcwMjcsIDM3MDMwLCAKLSAgICAzNzAzNywgMzcwNDMsIDM3MDUwLCAzNzA1NiwgMzcwNjYsIDM3MDc0LCAzNzA4MCwgMzcwODYsIDM3MDkxLCAzNzA5NSwgCi0gICAgMzcxMDIsIDM3MTA4LCAzNzExNSwgMzYzODQsIDUzMCwgMTIxMTIsIDM3MTIxLCAzNzEyNiwgMzcxMjksIDM3MTM1LCAKLSAgICAzNzE0MywgMTM2NCwgMzcxNDgsIDM3MTUyLCAzNzE1NywgMzcxNjQsIDM3MTcwLCAzNzE3NCwgMzcxNzksIDM3MTg4LCAKLSAgICAzNzE5NSwgMzcyMDUsIDM3MjExLCAyNjAxOSwgMzcyMjgsIDM3MjM3LCAzNzI0NSwgMzcyNTEsIDM3MjU2LCAzNzI2MywgCi0gICAgMzcyNjksIDM3Mjc3LCAzNzI4NiwgMzcyOTQsIDM3Mjk4LCAzNzMwMywgMzczMTEsIDI5ODMzLCAzNzMxNywgMzczMzYsIAotICAgIDE0MDYyLCAzNzM1MCwgMzczNjYsIDM3MzgwLCAzNzM4NiwgMzczOTEsIDM3Mzk2LCAzNzQwMSwgMzc0MDcsIDI5ODM5LCAKLSAgICAzNzQxMiwgMzc0MTksIDM3NDI0LCAzNzQyOCwgMzQxLCAyODc4LCAzNzQzNSwgMzc0NDAsIDM3NDQ1LCAyNTI3NSwgMzcyNjYsIAotICAgIDM3NDQ5LCAzNzQ1NCwgMzc0NjIsIDM3NDY2LCAzNzQ2OSwgMzc0NzUsIDM3NDc5LCAyNjA3NCwgMzc0ODIsIDM3NDg3LCAKLSAgICAzNzQ5MSwgMzc0OTQsIDM3NDk5LCAzNzUwMywgMzc1MDgsIDM3NTEzLCAzNzUxNywgMzc1MjIsIDM3NTI2LCAzNzUzMCwgCi0gICAgMTkzNDYsIDE5MzU3LCAzNzUzNCwgMzc1MzksIDM3NTQ1LCAyNDkxNSwgMzc1NTAsIDM3NTU0LCAxOTQyNSwgMTQyODAsIAotICAgIDM3NTU3LCAzNzU2MiwgMzc1NjcsIDM3NTcyLCAzNzU3NywgMzc1ODIsIDM3NTg3LCAzNzU5MiwgNDQwLCA0MywgMjkwNTIsIAotICAgIDI5MDU3LCAyOTA2MiwgMjkwNjgsIDI5MDczLCAyOTA3OCwgMzc1OTcsIDI5MDgyLCAzNzYwMSwgMzc2MDUsIDI5MDg3LCAKLSAgICAyOTA5MywgMzc2MDksIDI5MTA0LCAyOTEwOSwgMzc2MTcsIDM3NjIyLCAyOTExNSwgMzc2MjcsIDM3NjMyLCAzNzYzNywgCi0gICAgMzc2NDIsIDM3NjQ4LCAzNzY1NCwgMzc2NjAsIDI5MTMyLCAzNzY3MywgMzc2NzksIDI5MTM2LCAzNzY4MywgMjkxNDEsIAotICAgIDM3Njg4LCAyOTE0NiwgMjkxNTEsIDM3NjkxLCAzNzY5NiwgMzc3MDAsIDI4Nzk1LCAzNzcwNiwgMTE5MTEsIDM3NzEzLCAKLSAgICAzNzcxOCwgMjkxNTYsIDM3NzIyLCAzNzcyNywgMzc3MzIsIDM3NzM3LCAzNzc0MSwgMzc3NDYsIDM3NzUxLCAzNzc1NywgCi0gICAgMzc3NjIsIDM3NzY3LCAzNzc3MywgMzc3NzksIDM3Nzg0LCAzNzc4OCwgMzc3OTMsIDM3Nzk4LCAzNzgwMywgMzc4MDcsIAotICAgIDM3ODEyLCAzNzgxNywgMzc4MjIsIDM3ODI4LCAzNzgzNCwgMzc4NDAsIDM3ODQ1LCAzNzg0OSwgMzc4NTQsIDM3ODU4LCAKLSAgICAyOTE2MCwgMjkxNjUsIDI5MTcwLCAzNzg2MiwgMzc4NjYsIDI5MTc1LCAyOTE4MSwgMjkxODcsIDI5MTk5LCAzNzg3OCwgCi0gICAgMjM5ODMsIDM3ODgyLCAzNzg4NiwgMzc4OTEsIDM3ODk2LCAzNzkwMSwgMzc5MDUsIDM3OTA5LCAzNzkxOSwgMzc5MjQsIAotICAgIDM3OTI5LCAzNzkzMywgMzc5MzcsIDM3OTQwLCAzNzk0OCwgMjkyNDcsIDM3OTUzLCAxNDQyLCAzNzk1OSwgMzc5NjcsIAotICAgIDM3OTc2LCAzNzk4MCwgMzc5ODgsIDM3OTk0LCAzODAwMiwgMzgwMTgsIDM4MDIzLCAzODAzOCwgMjkyODQsIDE3MTIsIAotICAgIDEwMzc1LCAzODA0MiwgMjkyNCwgMzgwNTQsIDM4MDU1LCAzODA2MywgMzgwNzAsIDM4MDc1LCAzODA4MiwgMzgwODcsIAotICAgIDc3NDYsIDEwOTAsIDg2NzUsIDM4MDk0LCAzODA5OSwgMzgxMDIsIDM4MTA1LCAzODExNCwgMTI3NSwgMzgxMTksIDM2NTMyLCAKLSAgICAzODEyNiwgMzgxMzEsIDIwNTgzLCAyNTExLCAzODEzNSwgOTA5NCwgMzgxNDUsIDM4MTUxLCAyMjkxLCAyMzAxLCAzODE2MCwgCi0gICAgMzgxNjksIDM4MTc5LCAzODE5MCwgMzIzNSwgMzE5NDQsIDg3MjcsIDM3MzUsIDE0ODgyLCAxMjgwLCAzODE5NSwgMzgyMDMsIAotICAgIDM4MjEwLCAzODIxNSwgMzgyMTksIDM4MjIzLCAyMTkzMCwgODc1NCwgMzgyMzEsIDM4MjQwLCAzODI0OSwgMzgyNTcsIAotICAgIDM4MjY0LCAzODI2OSwgMzgyODIsIDM4Mjk1LCAzODMwNywgMzgzMTksIDM4MzMxLCAzODM0NCwgMzgzNTUsIDM4MzY2LCAKLSAgICAzODM3NiwgMzgzODQsIDM4MzkyLCAzODQwNCwgMzg0MTYsIDM4NDI3LCAzODQzNiwgMzg0NDQsIDM4NDUxLCAzODQ2MywgCi0gICAgMzg0NzAsIDM4NDc5LCAzODQ4NiwgMzg0OTksIDM4NTA0LCAzODUxNCwgMzg1MTksIDM4NTI1LCAzODUzMCwgMzQ3NTksIAotICAgIDM4NTM0LCAzODU0MSwgMzg1NDUsIDM4NTUyLCAzODU2MCwgMjQ3MiwgMzg1NjcsIDM4NTc4LCAzODU4OCwgMzg1OTcsIAotICAgIDM4NjA1LCAzODYxNSwgMzg2MjMsIDM4NjMzLCAzODY0MiwgMzg2NDcsIDM4NjUzLCAzODY1OSwgMzg2NzAsIDM4NjgwLCAKLSAgICAzODY4OSwgMzg2OTgsIDM4NzA4LCAzODcxNiwgMzg3MjUsIDM4NzMwLCAzODczNSwgMzg3NDAsIDE2NjgsIDM3LCAzODc0OCwgCi0gICAgMzg3NTYsIDM4NzY3LCAzODc3OCwgMTQ1NjMsIDM4Nzg4LCAzODc5NSwgMzg4MDEsIDM4ODA2LCAzODgxMCwgMzg4MjEsIAotICAgIDM4ODMxLCAzODg0MCwgMzg4NTEsIDE0OTMxLCAxNDkzNiwgMzg4NTYsIDM4ODY1LCAzODg3MCwgMzg4ODAsIDM4ODg1LCAKLSAgICAzODg5MywgMzg5MDEsIDM4OTA4LCAzODkxNCwgNTUzNiwgMTAzOCwgMzg5MTgsIDM4OTI0LCAzODkyOSwgMzg5MzIsIDIwNzUsIAotICAgIDM2NjQ4LCAzODk0MCwgMzg5NDQsIDM4OTQ3LCAxNDc1LCAzODk1MywgMTIyNjEsIDEyODUsIDM4OTU4LCAzODk3MSwgCi0gICAgMzg5ODUsIDI1OTcsIDM5MDAzLCAzOTAxNSwgMzkwMjcsIDI2MTEsIDI2MjgsIDM5MDQxLCAzOTA1NCwgMjY0MywgMzkwNjgsIAotICAgIDM5MDgwLCAyNjU4LCAzOTA5NCwgMTI5MSwgMTI5NywgMTMwMywgOTAxMiwgMzkwOTksIDM5MTA0LCAzOTEwOSwgMzkxMTMsIAotICAgIDM5MTI4LCAzOTE0MywgMzkxNTgsIDM5MTczLCAzOTE4OCwgMzkyMDMsIDM5MjE4LCAzOTIzMywgMzkyNDgsIDM5MjYzLCAKLSAgICAzOTI3OCwgMzkyOTMsIDM5MzA4LCAzOTMyMywgMzkzMzgsIDM5MzUzLCAzOTM2OCwgMzkzODMsIDM5Mzk4LCAzOTQxMywgCi0gICAgMzk0MjgsIDM5NDQzLCAzOTQ1OCwgMzk0NzMsIDM5NDg4LCAzOTUwMywgMzk1MTgsIDM5NTMzLCAzOTU0OCwgMzk1NjMsIAotICAgIDM5NTc4LCAzOTU5MywgMzk2MDgsIDM5NjIzLCAzOTYzOCwgMzk2NTMsIDM5NjY4LCAzOTY4MywgMzk2OTgsIDM5NzEzLCAKLSAgICAzOTcyOCwgMzk3NDMsIDM5NzU4LCAzOTc3MywgMzk3ODgsIDM5ODAzLCAzOTgxOCwgMzk4MzMsIDM5ODQ4LCAzOTg2MywgCi0gICAgMzk4NzgsIDM5ODkzLCAzOTkwOCwgMzk5MjMsIDM5OTM4LCAzOTk1MywgMzk5NjgsIDM5OTgzLCAzOTk5OCwgNDAwMTMsIAotICAgIDQwMDI4LCA0MDA0MywgNDAwNTgsIDQwMDczLCA0MDA4OCwgNDAxMDMsIDQwMTE4LCA0MDEzMywgNDAxNDgsIDQwMTYzLCAKLSAgICA0MDE3OCwgNDAxOTMsIDQwMjA4LCA0MDIyMywgNDAyMzgsIDQwMjUzLCA0MDI2OCwgNDAyODMsIDQwMjk4LCA0MDMxMywgCi0gICAgNDAzMjgsIDQwMzQzLCA0MDM1OCwgNDAzNzMsIDQwMzg4LCA0MDQwMywgNDA0MTgsIDQwNDMzLCA0MDQ0OCwgNDA0NjMsIAotICAgIDQwNDc4LCA0MDQ5MywgNDA1MDgsIDQwNTIzLCA0MDUzOCwgNDA1NTMsIDQwNTY4LCA0MDU4MywgNDA1OTgsIDQwNjEzLCAKLSAgICA0MDYyOCwgNDA2NDMsIDQwNjU4LCA0MDY3MywgNDA2ODgsIDQwNzAzLCA0MDcxOCwgNDA3MzMsIDQwNzQ4LCA0MDc2MywgCi0gICAgNDA3NzgsIDQwNzkzLCA0MDgwOCwgNDA4MjMsIDQwODM4LCA0MDg1MywgNDA4NjgsIDQwODgzLCA0MDg5OCwgNDA5MTMsIAotICAgIDQwOTI4LCA0MDk0MywgNDA5NTgsIDQwOTczLCA0MDk4OCwgNDEwMDMsIDQxMDE4LCA0MTAzMywgNDEwNDgsIDQxMDYzLCAKLSAgICA0MTA3OCwgNDEwOTMsIDQxMTA4LCA0MTEyMywgNDExMzgsIDQxMTUzLCA0MTE2OCwgNDExODMsIDQxMTk4LCA0MTIxMywgCi0gICAgNDEyMjgsIDQxMjQzLCA0MTI1OCwgNDEyNzMsIDQxMjg4LCA0MTMwMywgNDEzMTgsIDQxMzMzLCA0MTM0OCwgNDEzNjMsIAotICAgIDQxMzc4LCA0MTM5MywgNDE0MDgsIDQxNDIzLCA0MTQzOCwgNDE0NTMsIDQxNDY4LCA0MTQ4MywgNDE0OTgsIDQxNTEzLCAKLSAgICA0MTUyOCwgNDE1NDMsIDQxNTU4LCA0MTU3MywgNDE1ODgsIDQxNjAzLCA0MTYxOCwgNDE2MzMsIDQxNjQ4LCA0MTY2MywgCi0gICAgNDE2NzgsIDQxNjkzLCA0MTcwOCwgNDE3MjMsIDQxNzM4LCA0MTc1MywgNDE3NjgsIDQxNzgzLCA0MTc5OCwgNDE4MTMsIAotICAgIDQxODI4LCA0MTg0MywgNDE4NTgsIDQxODczLCA0MTg4OCwgNDE5MDMsIDQxOTE4LCA0MTkzMywgNDE5NDgsIDQxOTYzLCAKLSAgICA0MTk3OCwgNDE5OTMsIDQyMDA4LCA0MjAyMywgNDIwMzgsIDQyMDUzLCA0MjA2OCwgNDIwODMsIDQyMDk4LCA0MjExMywgCi0gICAgNDIxMjgsIDQyMTQzLCA0MjE1OCwgNDIxNzMsIDQyMTg4LCA0MjIwMywgNDIyMTgsIDQyMjMzLCA0MjI0OCwgNDIyNjMsIAotICAgIDQyMjc4LCA0MjI5MywgNDIzMDgsIDQyMzIzLCA0MjMzOCwgNDIzNTMsIDQyMzY4LCA0MjM4MywgNDIzOTgsIDQyNDEzLCAKLSAgICA0MjQyOCwgNDI0NDMsIDQyNDU4LCA0MjQ3MywgNDI0ODgsIDQyNTAzLCA0MjUxOCwgNDI1MzMsIDQyNTQ4LCA0MjU2MywgCi0gICAgNDI1NzgsIDQyNTkzLCA0MjYwOCwgNDI2MjMsIDQyNjM4LCA0MjY1MywgNDI2NjgsIDQyNjgzLCA0MjY5OCwgNDI3MTMsIAotICAgIDQyNzI4LCA0Mjc0MywgNDI3NTgsIDQyNzczLCA0Mjc4OCwgNDI4MDMsIDQyODE4LCA0MjgzMywgNDI4NDgsIDQyODYzLCAKLSAgICA0Mjg3OCwgNDI4OTMsIDQyOTA4LCA0MjkyMywgNDI5MzgsIDQyOTUzLCA0Mjk2OCwgNDI5ODMsIDQyOTk4LCA0MzAxMywgCi0gICAgNDMwMjgsIDQzMDQzLCA0MzA1OCwgNDMwNzMsIDQzMDg4LCA0MzEwMywgNDMxMTgsIDQzMTMzLCA0MzE0OCwgNDMxNjMsIAotICAgIDQzMTc4LCA0MzE5MywgNDMyMDgsIDQzMjIzLCA0MzIzOCwgNDMyNTMsIDQzMjY4LCA0MzI4MywgNDMyOTgsIDQzMzEzLCAKLSAgICA0MzMyOCwgNDMzNDMsIDQzMzU4LCA0MzM3MywgNDMzODgsIDQzNDAzLCA0MzQxOCwgNDM0MzMsIDQzNDQ4LCA0MzQ2MywgCi0gICAgNDM0NzgsIDQzNDkzLCA0MzUwOCwgNDM1MjMsIDQzNTM4LCA0MzU1MywgNDM1NjgsIDQzNTgzLCA0MzU5OCwgNDM2MTMsIAotICAgIDQzNjI4LCA0MzY0MywgNDM2NTgsIDQzNjczLCA0MzY4OCwgNDM3MDMsIDQzNzE4LCA0MzczMywgNDM3NDgsIDQzNzYzLCAKLSAgICA0Mzc3OCwgNDM3OTMsIDQzODA4LCA0MzgyMywgNDM4MzgsIDQzODUzLCA0Mzg2OCwgNDM4ODMsIDQzODk4LCA0MzkxMywgCi0gICAgNDM5MjgsIDQzOTQzLCA0Mzk1OCwgNDM5NzMsIDQzOTg4LCA0NDAwMywgNDQwMTgsIDQ0MDMzLCA0NDA0OCwgNDQwNjMsIAotICAgIDQ0MDc4LCA0NDA5MywgNDQxMDgsIDQ0MTIzLCA0NDEzOCwgNDQxNTMsIDQ0MTY4LCA0NDE4MywgNDQxOTgsIDQ0MjEzLCAKLSAgICA0NDIyOCwgNDQyNDMsIDQ0MjU4LCA0NDI3MywgNDQyODgsIDQ0MzAzLCA0NDMxOCwgNDQzMzMsIDQ0MzQ4LCA0NDM2MywgCi0gICAgNDQzNzgsIDQ0MzkzLCA0NDQwOCwgNDQ0MjMsIDQ0NDM4LCA0NDQ1MywgNDQ0NjgsIDQ0NDgzLCA0NDQ5OCwgNDQ1MTMsIAotICAgIDQ0NTI4LCA0NDU0MywgNDQ1NTgsIDQ0NTczLCA0NDU4OCwgNDQ2MDMsIDQ0NjE4LCA0NDYzMywgNDQ2NDgsIDQ0NjYzLCAKLSAgICA0NDY3OCwgNDQ2OTMsIDQ0NzA4LCA0NDcyMywgNDQ3MzgsIDQ0NzUzLCA0NDc2OCwgNDQ3ODMsIDQ0Nzk4LCA0NDgxMywgCi0gICAgNDQ4MjgsIDQ0ODQzLCA0NDg1OCwgNDQ4NzMsIDQ0ODg4LCA0NDkwMywgNDQ5MTgsIDQ0OTMzLCA0NDk0OCwgNDQ5NjMsIAotICAgIDQ0OTc4LCA0NDk5MywgNDUwMDgsIDQ1MDIzLCA0NTAzOCwgNDUwNTMsIDQ1MDY4LCA0NTA4MywgNDUwOTgsIDQ1MTEzLCAKLSAgICA0NTEyOCwgNDUxNDMsIDQ1MTU4LCA0NTE3MywgNDUxODgsIDQ1MjAzLCA0NTIxOCwgNDUyMzMsIDQ1MjQ4LCA0NTI2MywgCi0gICAgNDUyNzgsIDQ1MjkzLCA0NTMwOCwgNDUzMjMsIDQ1MzM4LCA0NTM1MywgNDUzNjgsIDQ1MzgzLCA0NTM5OCwgNDU0MTMsIAotICAgIDQ1NDI4LCA0NTQ0MywgNDU0NTgsIDQ1NDczLCA0NTQ4OCwgNDU1MDMsIDQ1NTE4LCA0NTUzMywgNDU1NDgsIDQ1NTYzLCAKLSAgICA0NTU3OCwgNDU1OTMsIDQ1NjA4LCA0NTYyMywgNDU2MzgsIDQ1NjUzLCA0NTY2OCwgNDU2ODMsIDQ1Njk4LCA0NTcxMywgCi0gICAgNDU3MjgsIDQ1NzQzLCA0NTc1OCwgNDU3NzMsIDQ1Nzg4LCA0NTgwMywgNDU4MTgsIDQ1ODMzLCA0NTg0OCwgNDU4NjMsIAotICAgIDQ1ODc4LCA0NTg5MywgNDU5MDgsIDQ1OTIzLCA0NTkzOCwgNDU5NTMsIDQ1OTY4LCA0NTk4MywgNDU5OTgsIDQ2MDEzLCAKLSAgICA0NjAyOCwgNDYwNDMsIDQ2MDU4LCA0NjA3MywgNDYwODgsIDQ2MTAzLCA0NjExOCwgNDYxMzMsIDQ2MTQ4LCA0NjE2MywgCi0gICAgNDYxNzgsIDQ2MTkzLCA0NjIwOCwgNDYyMjMsIDQ2MjM4LCA0NjI1MywgNDYyNjgsIDQ2MjgzLCA0NjI5OCwgNDYzMTMsIAotICAgIDQ2MzI4LCA0NjM0MywgNDYzNTgsIDQ2MzczLCA0NjM4OCwgNDY0MDMsIDQ2NDE4LCA0NjQzMywgNDY0NDgsIDQ2NDYzLCAKLSAgICA0NjQ3OCwgNDY0OTMsIDQ2NTA4LCA0NjUyMywgNDY1MzgsIDQ2NTUzLCA0NjU2OCwgNDY1ODMsIDQ2NTk4LCA0NjYxMywgCi0gICAgNDY2MjgsIDQ2NjQzLCA0NjY1OCwgNDY2NzMsIDQ2Njg4LCA0NjcwMywgNDY3MTgsIDQ2NzMzLCA0Njc0OCwgNDY3NjMsIAotICAgIDQ2Nzc4LCA0Njc5MywgNDY4MDgsIDQ2ODIzLCA0NjgzOCwgNDY4NTMsIDQ2ODY4LCA0Njg4MywgNDY4OTksIDQ2OTE1LCAKLSAgICA0NjkzMSwgNDY5NDcsIDQ2OTYzLCA0Njk3OSwgNDY5OTUsIDQ3MDExLCA0NzAyNywgNDcwNDMsIDQ3MDU5LCA0NzA3NSwgCi0gICAgNDcwOTEsIDQ3MTA3LCA0NzEyMywgNDcxMzksIDQ3MTU1LCA0NzE3MSwgNDcxODcsIDQ3MjAzLCA0NzIxOSwgNDcyMzUsIAotICAgIDQ3MjUxLCA0NzI2NywgNDcyODMsIDQ3Mjk5LCA0NzMxNSwgNDczMzEsIDQ3MzQ3LCA0NzM2MywgNDczNzksIDQ3Mzk1LCAKLSAgICA0NzQxMSwgNDc0MjcsIDQ3NDQzLCA0NzQ1OSwgNDc0NzUsIDQ3NDkxLCA0NzUwNywgNDc1MjMsIDQ3NTM5LCA0NzU1NSwgCi0gICAgNDc1NzEsIDQ3NTg3LCA0NzYwMywgNDc2MTksIDQ3NjM1LCA0NzY1MSwgNDc2NjcsIDQ3NjgzLCA0NzY5OSwgNDc3MTUsIAotICAgIDQ3NzMxLCA0Nzc0NywgNDc3NjMsIDQ3Nzc5LCA0Nzc5NSwgNDc4MTEsIDQ3ODI3LCA0Nzg0MywgNDc4NTksIDQ3ODc1LCAKLSAgICA0Nzg5MSwgNDc5MDcsIDQ3OTIzLCA0NzkzOSwgNDc5NTUsIDQ3OTcxLCA0Nzk4NywgNDgwMDMsIDQ4MDE5LCA0ODAzNSwgCi0gICAgNDgwNTEsIDQ4MDY3LCA0ODA4MywgNDgwOTksIDQ4MTE1LCA0ODEzMSwgNDgxNDcsIDQ4MTYzLCA0ODE3OSwgNDgxOTUsIAotICAgIDQ4MjExLCA0ODIyNywgNDgyNDMsIDQ4MjU5LCA0ODI3NSwgNDgyOTEsIDQ4MzA3LCA0ODMyMywgNDgzMzksIDQ4MzU1LCAKLSAgICA0ODM3MSwgNDgzODcsIDQ4NDAzLCA0ODQxOSwgNDg0MzUsIDQ4NDUxLCA0ODQ2NywgNDg0ODMsIDQ4NDk5LCA0ODUxNSwgCi0gICAgNDg1MzEsIDQ4NTQ3LCA0ODU2MywgNDg1NzksIDQ4NTk1LCA0ODYxMSwgNDg2MjcsIDQ4NjQzLCA0ODY1OSwgNDg2NzUsIAotICAgIDQ4NjkxLCA0ODcwNywgNDg3MjMsIDQ4NzM5LCA0ODc1NSwgNDg3NzEsIDQ4Nzg3LCA0ODgwMywgNDg4MTksIDQ4ODM1LCAKLSAgICA0ODg1MSwgNDg4NjcsIDQ4ODgzLCA0ODg5OSwgNDg5MTUsIDQ4OTMxLCA0ODk0NywgNDg5NjMsIDQ4OTc5LCA0ODk5NSwgCi0gICAgNDkwMTEsIDQ5MDI3LCA0OTA0MywgNDkwNTksIDQ5MDc1LCA0OTA5MSwgNDkxMDcsIDQ5MTIzLCA0OTEzOSwgNDkxNTUsIAotICAgIDQ5MTcxLCA0OTE4NywgNDkyMDMsIDQ5MjE5LCA0OTIzNSwgNDkyNTEsIDQ5MjY3LCA0OTI4MywgNDkyOTksIDQ5MzE1LCAKLSAgICA0OTMzMSwgNDkzNDcsIDQ5MzYzLCA0OTM3OSwgNDkzOTUsIDQ5NDExLCA0OTQyNywgNDk0NDMsIDQ5NDU5LCA0OTQ3NSwgCi0gICAgNDk0OTEsIDQ5NTA3LCA0OTUyMywgNDk1MzksIDQ5NTU1LCA0OTU3MSwgNDk1ODcsIDQ5NjAzLCA0OTYxOSwgNDk2MzUsIAotICAgIDQ5NjUxLCA0OTY2NywgNDk2ODMsIDQ5Njk5LCA0OTcxNSwgNDk3MzEsIDQ5NzQ3LCA0OTc2MywgNDk3NzksIDQ5Nzk1LCAKLSAgICA0OTgxMSwgNDk4MjcsIDQ5ODQzLCA0OTg1OSwgNDk4NzUsIDQ5ODkxLCA0OTkwNywgNDk5MjMsIDQ5OTM5LCA0OTk1NSwgCi0gICAgNDk5NzEsIDQ5OTg3LCA1MDAwMywgNTAwMTksIDUwMDM1LCA1MDA1MSwgNTAwNjcsIDUwMDgzLCA1MDA5OSwgNTAxMTUsIAotICAgIDUwMTMxLCA1MDE0NywgNTAxNjMsIDUwMTc5LCA1MDE5NSwgNTAyMTEsIDUwMjI3LCA1MDI0MywgNTAyNTksIDUwMjc1LCAKLSAgICA1MDI5MSwgNTAzMDcsIDUwMzIzLCA1MDMzOSwgNTAzNTUsIDUwMzcxLCA1MDM4NywgNTA0MDMsIDUwNDE5LCA1MDQzNSwgCi0gICAgNTA0NTEsIDUwNDY3LCA1MDQ4MywgNTA0OTksIDUwNTE1LCA1MDUzMSwgNTA1NDcsIDUwNTYzLCA1MDU3OSwgNTA1OTUsIAotICAgIDUwNjExLCA1MDYyNywgNTA2NDMsIDUwNjU5LCA1MDY3NSwgNTA2OTEsIDUwNzA3LCA1MDcyMywgNTA3MzksIDUwNzU1LCAKLSAgICA1MDc3MSwgNTA3ODcsIDUwODAzLCA1MDgxOSwgNTA4MzUsIDUwODUxLCA1MDg2NywgNTA4ODMsIDUwODk5LCA1MDkxNSwgCi0gICAgNTA5MzEsIDUwOTQ3LCA1MDk2MywgNTA5NzksIDUwOTk1LCA1MTAxMSwgNTEwMjcsIDUxMDQzLCA1MTA1OSwgNTEwNzUsIAotICAgIDUxMDkxLCA1MTEwNywgNTExMjMsIDUxMTM5LCA1MTE1NSwgNTExNzEsIDUxMTg3LCA1MTIwMywgNTEyMTksIDUxMjM1LCAKLSAgICA1MTI1MSwgNTEyNjcsIDUxMjgzLCA1MTI5OSwgNTEzMTUsIDUxMzMxLCA1MTM0NywgNTEzNjMsIDUxMzc5LCA1MTM5NSwgCi0gICAgNTE0MTEsIDUxNDI3LCA1MTQ0MywgNTE0NTksIDUxNDc1LCA1MTQ5MSwgNTE1MDcsIDUxNTIzLCA1MTUzOSwgNTE1NTUsIAotICAgIDUxNTcxLCA1MTU4NywgNTE2MDMsIDUxNjE5LCA1MTYzNSwgNTE2NTEsIDUxNjY3LCA1MTY4MywgNTE2OTksIDUxNzE1LCAKLSAgICA1MTczMSwgNTE3NDcsIDUxNzYzLCA1MTc3OSwgNTE3OTUsIDUxODExLCA1MTgyNywgNTE4NDMsIDUxODU5LCA1MTg3NSwgCi0gICAgNTE4OTEsIDUxOTA3LCA1MTkyMywgNTE5MzksIDUxOTU1LCA1MTk3MSwgNTE5ODcsIDUyMDAzLCA1MjAxOSwgNTIwMzUsIAotICAgIDUyMDUxLCA1MjA2NywgNTIwODMsIDUyMDk5LCA1MjExNSwgNTIxMzEsIDUyMTQ3LCA1MjE2MywgNTIxNzksIDUyMTk1LCAKLSAgICA1MjIxMSwgNTIyMjcsIDUyMjQzLCA1MjI1OSwgNTIyNzUsIDUyMjkxLCA1MjMwNywgNTIzMjMsIDUyMzM5LCA1MjM1NSwgCi0gICAgNTIzNzEsIDUyMzg3LCA1MjQwMywgNTI0MTksIDUyNDM1LCA1MjQ1MSwgNTI0NjcsIDUyNDgzLCA1MjQ5OSwgNTI1MTUsIAotICAgIDUyNTMxLCA1MjU0NywgNTI1NjMsIDUyNTc5LCA1MjU5NSwgNTI2MTEsIDUyNjI3LCA1MjY0MywgNTI2NTksIDUyNjc1LCAKLSAgICA1MjY5MSwgNTI3MDcsIDUyNzIzLCA1MjczOSwgNTI3NTUsIDUyNzcxLCA1Mjc4NywgNTI4MDMsIDUyODE5LCA1MjgzNSwgCi0gICAgNTI4NTEsIDUyODY3LCA1Mjg4MywgNTI4OTksIDUyOTE1LCA1MjkzMSwgNTI5NDcsIDUyOTYzLCA1Mjk3OSwgNTI5OTUsIAotICAgIDUzMDExLCA1MzAyNywgNTMwNDMsIDUzMDU5LCA1MzA3NSwgNTMwOTEsIDUzMTA3LCA1MzEyMywgNTMxMzksIDUzMTU1LCAKLSAgICA1MzE3MSwgNTMxODcsIDUzMjAzLCA1MzIxOSwgNTMyMzUsIDUzMjUxLCA1MzI2NywgNTMyODMsIDUzMjk5LCA1MzMxNSwgCi0gICAgNTMzMzEsIDUzMzQ3LCA1MzM2MywgNTMzNzksIDUzMzk1LCA1MzQxMSwgNTM0MjcsIDUzNDQzLCA1MzQ1OSwgNTM0NzUsIAotICAgIDUzNDkxLCA1MzUwNywgNTM1MjMsIDUzNTM5LCA1MzU1NSwgNTM1NzEsIDUzNTg3LCA1MzYwMywgNTM2MTksIDUzNjM1LCAKLSAgICA1MzY1MSwgNTM2NjcsIDUzNjgzLCA1MzY5OSwgNTM3MTUsIDUzNzMxLCA1Mzc0NywgNTM3NjMsIDUzNzc5LCA1Mzc5NSwgCi0gICAgNTM4MTEsIDUzODI3LCA1Mzg0MywgNTM4NTksIDUzODc1LCA1Mzg5MSwgNTM5MDcsIDUzOTIzLCA1MzkzOSwgNTM5NTUsIAotICAgIDUzOTcxLCA1Mzk4NywgNTQwMDMsIDU0MDE5LCA1NDAzNSwgNTQwNTEsIDU0MDY3LCA1NDA4MywgNTQwOTksIDU0MTE1LCAKLSAgICA1NDEzMSwgNTQxNDcsIDU0MTYzLCA1NDE3OSwgNTQxOTUsIDU0MjExLCA1NDIyNywgNTQyNDMsIDU0MjU5LCA1NDI3NSwgCi0gICAgNTQyOTEsIDU0MzA3LCA1NDMyMywgNTQzMzksIDU0MzU1LCA1NDM3MSwgNTQzODcsIDU0NDAzLCA1NDQxOSwgNTQ0MzUsIAotICAgIDU0NDUxLCA1NDQ2NywgNTQ0ODMsIDU0NDk5LCA1NDUxNSwgNTQ1MzEsIDU0NTQ3LCA1NDU2MywgNTQ1NzksIDU0NTk1LCAKLSAgICA1NDYxMSwgNTQ2MjcsIDU0NjQzLCA1NDY1OSwgNTQ2NzUsIDU0NjkxLCA1NDcwNywgNTQ3MjMsIDU0NzM5LCA1NDc1NSwgCi0gICAgNTQ3NzEsIDU0Nzg3LCA1NDgwMywgNTQ4MTksIDU0ODM1LCA1NDg1MSwgNTQ4NjcsIDU0ODgzLCA1NDg5OSwgNTQ5MTUsIAotICAgIDU0OTMxLCA1NDk0NywgNTQ5NjMsIDU0OTc5LCA1NDk5NSwgNTUwMTEsIDU1MDI3LCA1NTA0MywgNTUwNTksIDU1MDc1LCAKLSAgICA1NTA5MSwgNTUxMDcsIDU1MTIzLCA1NTEzOSwgNTUxNTUsIDU1MTcxLCA1NTE4NywgNTUyMDMsIDU1MjE5LCA1NTIzNSwgCi0gICAgNTUyNTEsIDU1MjY3LCA1NTI4MywgNTUyOTksIDU1MzE1LCA1NTMzMSwgNTUzNDcsIDU1MzYzLCA1NTM3OSwgNTUzOTUsIAotICAgIDU1NDExLCA1NTQyNywgNTU0NDMsIDU1NDU5LCA1NTQ3NSwgNTU0OTEsIDU1NTA3LCA1NTUyMywgNTU1MzksIDU1NTU1LCAKLSAgICA1NTU3MCwgMTQ5NjMsIDU1NTc5LCA1NTU4NSwgNTU1OTEsIDU1NjAxLCA1NTYwOSwgMTMxNDQsIDEzNjgzLCA4MzE5LCAKLSAgICA1NTYyMiwgMTQ4MywgNTU2MzAsIDI1Mzg1LCA1NjM3LCA1NTYzNiwgNTU2NDEsIDU1NjQ2LCA1NTY1MSwgNTU2NTYsIAotICAgIDU1NjYyLCA1NTY2NywgNTU2NzMsIDU1Njc4LCA1NTY4NCwgNTU2ODksIDU1Njk0LCA1NTY5OSwgNTU3MDQsIDU1NzEwLCAKLSAgICA1NTcxNSwgNTU3MjAsIDU1NzI1LCA1NTczMCwgNTU3MzUsIDU1NzQwLCA1NTc0NSwgNTU3NTEsIDU1NzU2LCA1NTc2MiwgCi0gICAgNTU3NjksIDI1MTUsIDU1Nzc0LCA1NTc4MCwgNjk0OCwgNTU3ODQsIDU1Nzg5LCA1NTc5NiwgNTU4MDQsIDQwLCA1NTgwOCwgCi0gICAgNTU4MTQsIDU1ODE5LCA1NTgyNCwgNTU4MjgsIDU1ODMzLCA1NTgzNywgNTU4NDEsIDkwMzcsIDU1ODQ1LCA1NTg1NSwgCi0gICAgNTU4NjgsIDU1ODc5LCA1NTg5MiwgNTU4OTksIDU1OTA1LCA1NTkxMCwgNTU5MTYsIDU1OTIyLCA1NTkyOCwgNTU5MzMsIAotICAgIDU1OTM4LCA1NTk0MywgNTU5NDgsIDU1OTUyLCA1NTk1NywgNTU5NjIsIDU1OTY3LCA1NTk3MywgNTU5NzksIDU1OTg1LCAKLSAgICA1NTk5MCwgNTU5OTQsIDU1OTk5LCA1NjAwNCwgNTYwMDgsIDU2MDEzLCA1NjAxOCwgNTYwMjMsIDU2MDI3LCA5MDUzLCAKLSAgICA5MDY0LCA5MDY5LCAxNTI2LCA1NjAzMSwgMTUzMSwgNTYwMzcsIDU2MDQwLCAxNTYyLCA1NjA0NiwgMTU2OCwgMTU3NCwgCi0gICAgOTA5OSwgNTYwNTEsIDU2MDU5LCA1NjA2NiwgNTYwNzAsIDU2MDc2LCA1NjA4MSwgMjg4MjQsIDU2MDg2LCA1NjA5MywgCi0gICAgNTYwOTgsIDU2MTAyLCA1NjEwNiwgMTU3OSwgMTQ1MzgsIDE0NTQ5LCA1NjExNSwgNTYxMjIsIDU2MTI3LCA1NjEzMSwgCi0gICAgMTQ1NjgsIDE1ODMsIDM0ODk3LCA1NjEzNCwgNTYxMzksIDU2MTQ5LCA1NjE1OCwgNTYxNjMsIDU2MTY3LCA1NjE3MywgCi0gICAgMTU4OCwgMzY3MTksIDU2MTc4LCA1NjE4NywgNTYxOTMsIDU2MTk4LCA5MjQ5LCA5MjU1LCA1NjIwNCwgNTYyMTYsIDU2MjMzLCAKLSAgICA1NjI1MCwgNTYyNjcsIDU2Mjg0LCA1NjMwMSwgNTYzMTgsIDU2MzM1LCA1NjM1MiwgNTYzNjksIDU2Mzg2LCA1NjQwMywgCi0gICAgNTY0MjAsIDU2NDM3LCA1NjQ1NCwgNTY0NzEsIDU2NDg4LCA1NjUwNSwgNTY1MjIsIDU2NTM5LCA1NjU1NiwgNTY1NzMsIAotICAgIDU2NTkwLCA1NjYwNywgNTY2MjQsIDU2NjQxLCA1NjY1OCwgNTY2NzUsIDU2NjkyLCA1NjcwOSwgNTY3MjYsIDU2NzQzLCAKLSAgICA1Njc2MCwgNTY3NzcsIDU2Nzk0LCA1NjgxMSwgNTY4MjgsIDU2ODQ1LCA1Njg2MiwgNTY4NzksIDU2ODk2LCA1NjkxMywgCi0gICAgNTY5MzAsIDU2OTQ3LCA1Njk2NCwgNTY5ODEsIDU2OTk4LCA1NzAxNSwgNTcwMzIsIDU3MDQ5LCA1NzA2MCwgNTcwNjUsIAotICAgIDE1OTMsIDU3MDY5LCA1NzA3NSwgNTcwODAsIDc2OTMsIDE1OTgsIDU3MDg1LCA1NzA5NCwgMjU2NjQsIDU3MDk5LCA1NzExMCwgCi0gICAgNTcxMjAsIDU3MTI1LCA1NzEzMiwgNTcxMzgsIDU3MTQzLCA1NzE0OCwgMTQ4MjAsIDU3MTUyLCA5MjY2LCAxNjAzLCA5MjcxLCAKLSAgICA1NzE1OCwgNTcxNjMsIDU3MTY5LCA1NzE3NCwgNTcxNzksIDU3MTg0LCA1NzE4OSwgNTcxOTQsIDU3MTk5LCA1NzIwNCwgCi0gICAgNTcyMTAsIDU3MjE2LCA1NzIyMiwgNTcyMjcsIDU3MjMxLCA1NzIzNiwgNTcyNDEsIDU3MjQ1LCA1NzI1MCwgNTcyNTUsIAotICAgIDU3MjYwLCA1NzI2NCwgNTcyNjksIDU3Mjc1LCA1NzI4MCwgNTcyODUsIDU3Mjg5LCA1NzI5NCwgNTcyOTksIDU3MzA1LCAKLSAgICA1NzMxMCwgNTczMTUsIDU3MzIxLCA1NzMyNywgNTczMzIsIDU3MzM2LCA1NzM0MSwgNTczNDYsIDU3MzUxLCA1NzM1NSwgCi0gICAgNTczNjAsIDU3MzY1LCA1NzM3MCwgNTczNzYsIDU3MzgyLCA1NzM4NywgNTczOTEsIDU3Mzk1LCA1NzQwMCwgNTc0MDUsIAotICAgIDU3NDEwLCAyNzAyNCwgNTc0MTQsIDU3NDE5LCA1NzQyNCwgNTc0MzAsIDU3NDM1LCA1NzQ0MCwgNTc0NDQsIDU3NDQ5LCAKLSAgICA1NzQ1NCwgNTc0NjAsIDU3NDY1LCA1NzQ3MCwgNTc0NzYsIDU3NDgyLCA1NzQ4NywgNTc0OTEsIDU3NDk2LCA1NzUwMSwgCi0gICAgNTc1MDUsIDU3NTEwLCA1NzUxNSwgNTc1MjAsIDU3NTI2LCA1NzUzMiwgNTc1MzcsIDU3NTQxLCA1NzU0NiwgNTc1NTEsIAotICAgIDU3NTU1LCA1NzU2MCwgNTc1NjUsIDU3NTcwLCA1NzU3NCwgNTc1NzcsIDI5Mzk1LCA1NzU4MiwgNTc1OTAsIDE0ODg2LCAKLSAgICAxNDkxMCwgOTM2MiwgNTc1OTYsIDU3NjA2LCA1NzYyMSwgOTM2NywgNTc2MzIsIDU3NjM3LCA1NzY0OCwgNTc2NjAsIAotICAgIDU3NjcyLCA1NzY4NCwgMjY0OSwgNTc2OTYsIDU3NzAxLCA1NzcwNSwgNTc3MTEsIDU3NzE3LCA1NzcyMiwgMTYxNSwgMTAxMCwgCi0gICAgNTc3MzEsIDU3NzM2LCAzNjc1OCwgNTc3NDAsIDU3NzQ0LCA1Nzc0OSwgNTc3NTMsIDE0OTcxLCA1Nzc1OCwgNTc3NjEsIAotICAgIDU3NzY5LCA1Nzc3NywgMTYxOSwgOTM5MiwgOTM5OCwgMTYyNCwgNTc3ODUsIDU3NzkyLCA1Nzc5NywgNTc4MDYsIDU3ODE2LCAKLSAgICA1NzgyMywgNTc4MjgsIDE2MjksIDU3ODM1LCA1Nzg0MCwgMTUwODYsIDU3ODQ0LCA1Nzg0OSwgNTc4NTYsIDU3ODYyLCAKLSAgICA1Nzg2NiwgNTc4NzcsIDU3ODg3LCAxNTEwOCwgNzYxNiwgNzYyMywgMTYzNCwgNTc4OTQsIDU3OTAwLCA1NzkwOCwgNTc5MTUsIAotICAgIDU3OTIxLCA1NzkyOCwgNTc5NDAsIDU3OTQ2LCA1Nzk1MSwgNTc5NjMsIDU3OTc0LCA1Nzk4MywgNTc5OTMsIDM2NjgsIAotICAgIDI4NjYwLCAyODY2OSwgMTUxNDgsIDE2MzksIDE2NDMsIDU4MDAxLCA1ODAxMiwgNTgwMTcsIDE2NDYsIDU4MDI1LCA1ODAzMCwgCi0gICAgNTgwNDIsIDU4MDQ4LCA1ODA1MywgNTgwNjEsIDE2NTEsIDU4MDY2LCA1ODA3MSwgNTgwNzksIDU4MDg3LCA1ODA5NCwgCi0gICAgNTgxMDMsIDU4MTExLCA1ODEyMCwgMTY1NiwgNTgxMjQsIDE2NjEsIDU4MTI5LCA1ODEzNiwgMTUyNjgsIDU4MTQ0LCAKLSAgICA1ODE1MCwgNTgxNTUsIDU4MTYzLCA1ODE3MCwgNTgxNzgsIDIwNjU4LCA1ODE4MywgOTUyNywgNTgxOTIsIDU4MTk4LCAKLSAgICA1ODIwNSwgNTgyMTIsIDU4MjE4LCA1ODIyOCwgNTgyMzQsIDU4MjM5LCA1ODI0NCwgNTgyNTIsIDk1MzYsIDk1NDEsIAotICAgIDU4MjYwLCA1ODI2NiwgNTgyNzQsIDM3MzMsIDM2ODQ2LCA1ODI3OSwgNTgyODUsIDU4MjkwLCA1ODI5OCwgNTgzMDUsIAotICAgIDEwMzU2LCA1ODMxMCwgNTgzMTYsIDE2NzIsIDU4MzIxLCA1ODMyNCwgMTA1OCwgNTgzMzAsIDU4MzM1LCA1ODM0MCwgCi0gICAgNTgzNDYsIDU4MzUxLCA1ODM1NiwgNTgzNjEsIDU4MzY2LCA1ODM3MSwgNTgzNzYsIDE2ODEsIDksIDU4MzgyLCA1ODM4NiwgCi0gICAgNTgzOTEsIDU4Mzk1LCA1ODM5OSwgNTg0MDMsIDI5NjQzLCA1ODQwOCwgNTg0MTMsIDU4NDE4LCA1ODQyMiwgNTg0MjUsIAotICAgIDU4NDI5LCA1ODQzMywgNTg0MzgsIDU4NDQyLCA1ODQ0NywgNTg0NTEsIDMyMzE1LCAzMjMyMCwgMzIzMjUsIDU4NDU0LCAKLSAgICA1ODQ2MSwgNTg0NjcsIDM2NTg1LCA1ODQ3NywgMzIzMzEsIDI5ODkxLCAyOTY1MywgMjk2NTksIDMyMzQ3LCAyOTY2NSwgCi0gICAgNTg0ODIsIDU4NDg3LCAyOTkyNCwgNTg0OTEsIDU4NDk0LCA1ODQ5OCwgNTg1MDUsIDU4NTA4LCA1ODUxMywgNTg1MTcsIAotICAgIDU4NTIxLCA1ODUyNCwgNTg1MzQsIDU4NTQ2LCA1ODU1MywgMzEyODIsIDU4NTU2LCAxMzkzNiwgODIxLCA1ODU1OSwgCi0gICAgNTg1NjMsIDU4NTY4LCA1ODU3MiwgNTg1NzUsIDExOTQ0LCA1ODU4MiwgNTg1ODksIDU4NjAyLCA1ODYxMCwgNTg2MTksIAotICAgIDU4NjI0LCA1ODYzNCwgNTg2NDcsIDU4NjU5LCA1ODY2NiwgNTg2NzEsIDU4NjgwLCA1ODY5MywgMzM3MzIsIDU4NzExLCAKLSAgICA1ODcxNiwgNTg3MjMsIDU4NzI5LCA1ODczNCwgNTg3NDIsIDU4NzQ5LCAyNTIyNCwgNjEzLCA1ODc1NSwgNTg3NjEsIAotICAgIDU4NzcxLCA1ODc3NywgNTg3ODIsIDI5NjgzLCA0NDgxLCAyOTY5NywgNTg3ODYsIDU4Nzk2LCA1ODgwMSwgNTg4MTEsIAotICAgIDU4ODI2LCA1ODgzMiwgNTg4MzgsIDI5NzA3LCA1ODg0MywgMjg4NTYsIDU4ODQ3LCA1ODg1MiwgNTg4NTcsIDU4ODYxLCAKLSAgICA1ODg2NiwgMTUxNTEsIDU4ODczLCA1ODg3OCwgNTg4ODIsIDQ1MjIsIDI5NzMzLCA1ODg4NiwgNTg4OTIsIDMyNywgNTg5MDIsIAotICAgIDU4OTA5LCA1ODkxNiwgNTg5MjEsIDU4OTMwLCA1NjE0MywgNTg5MzYsIDU4OTQ0LCA1ODk0OCwgNTg5NTIsIDU4OTU2LCAKLSAgICA1ODk2MCwgNTg5NjUsIDU4OTY5LCA1ODk3NSwgNTg5ODMsIDU4OTg4LCA1ODk5MywgNTg5OTcsIDU5MDAyLCA1OTAwNiwgCi0gICAgNTkwMTAsIDU5MDE2LCA1OTAyMiwgNTkwMjcsIDU5MDMxLCAyOTg1NywgNTkwMzYsIDI5ODYzLCAyOTg2OSwgNTkwNDEsIAotICAgIDU5MDQ3LCA1OTA1NCwgNTkwNTksIDU5MDYzLCAyODg3MywgMTQ4MTMsIDU5MDY2LCA1OTA3MCwgNTkwNzUsIDU5MDgyLCAKLSAgICA1OTA4OCwgNTkwOTIsIDU5MDk3LCAzNjI5NSwgNTkxMDMsIDU5MTA3LCA1OTExMSwgNTkxMTYsIDU5MTIyLCA1OTEyOCwgCi0gICAgNTkxNDAsIDU5MTQ5LCA1OTE1OSwgNTkxNjUsIDU5MTcyLCA1OTE3NywgNTkxODIsIDU5MTg2LCA1OTE4OSwgNTkxOTUsIAotICAgIDU5MjAyLCA1OTIwNywgNTkyMTIsIDU5MjE5LCA1OTIyNiwgNTkyMzIsIDU5MjM3LCA1OTI0MiwgNTkyNTAsIDU5MjU1LCAKLSAgICAyMzc3LCA1OTI1OSwgNTkyNjQsIDU5MjcwLCA1OTI3NSwgNTkyODEsIDU5Mjg2LCA1OTI5MSwgNTkyOTYsIDU5MzAyLCAKLSAgICAyOTg5MCwgNTkzMDcsIDU5MzEzLCA1OTMxOSwgNTkzMjUsIDI5OTU0LCA1OTMzMCwgNTkzMzUsIDU5MzQwLCAyOTk2NSwgCi0gICAgNTkzNDUsIDU5MzUwLCA1OTM1NSwgNTkzNjEsIDU5MzY3LCAyOTk3MCwgNTkzNzIsIDU5Mzc3LCA1OTM4MiwgMzAwMjUsIAotICAgIDMwMDMxLCA1OTM4NywgNTkzOTIsIDMwMDM2LCA1OTM5NywgMjU4OTEsIDMwMDU4LCAzMDA2MiwgNTk0MDIsIDU5Mzc4LCAKLSAgICA1OTQwNiwgNTk0MTQsIDU5NDIwLCA1OTQyOCwgNTk0MzUsIDU5NDQxLCA1OTQ1MSwgNTk0NTcsIDU5NDY0LCA4OTg0LCAKLSAgICAzMDA3NiwgNTk0NzAsIDU5NDgzLCA1OTQ5MiwgNTk0OTgsIDU5NTA3LCA1OTUxMywgMjE1NzUsIDU5NTIwLCA1OTUyNywgCi0gICAgNTk1MzcsIDMwMDI2LCA1OTU0MCwgNTk1NDcsIDU5NTUyLCA1OTU1NiwgNTk1NjAsIDU5NTY1LCA0NTk4LCA1OTU2OSwgCi0gICAgNTk1NzQsIDU5NTc5LCAzMjQwOSwgMzI0MTQsIDU5NTgzLCAzMjQyOCwgNTk1ODgsIDMyNDMzLCA1OTU5MywgNTk1OTksIAotICAgIDMyNDQ1LCAzMjQ1MSwgMzI0NTcsIDU5NjA0LCA1OTYxMCwgMjA2MTksIDU5NjIxLCA1OTYyNCwgNTk2MzYsIDU5NjQ0LCAKLSAgICAzMDA5NCwgNTk2NDgsIDU5NjU3LCA1OTY2NywgNTk2NzYsIDMwMDk5LCA1OTY4MSwgNTk2ODgsIDU5Njk3LCA1OTcwMywgCi0gICAgNTk3MTEsIDU5NzE4LCA0NTczLCA0MzEwLCA1OTcyMywgMzAwMzcsIDU5NzI5LCA1OTczMiwgNTk3MzgsIDU5NzQ1LCAKLSAgICA1OTc1MCwgNTk3NTUsIDIxNTAyLCA1OTc1OSwgNTk3NjUsIDU5NzcxLCA1OTc3NiwgNTk3ODEsIDU5Nzg1LCA1OTc5MSwgCi0gICAgNTk3OTcsIDMxMTk2LCA4MjYsIDMzNDA2LCAzNDMwNCwgMzQzMTAsIDU5ODAyLCA1OTgwNiwgNTk4MTAsIDU5ODEzLCAKLSAgICA1OTgyNiwgNTk4MzIsIDU5ODM2LCA1OTgzOSwgNTk4NDQsIDMxNDk1LCA1OTg0OCwgMjg4NzgsIDE5NDQ2LCA1OTg1NCwgCi0gICAgNDUwMiwgNDUxMCwgNzQ3MiwgNTk4NTcsIDU5ODYyLCA1OTg2NywgNTk4NzIsIDU5ODc3LCA1OTg4MiwgNTk4ODcsIDU5ODkyLCAKLSAgICA1OTg5NywgNTk5MDIsIDU5OTA4LCA1OTkxMywgNTk5MTgsIDU5OTI0LCA1OTkyOSwgNTk5MzQsIDU5OTM5LCA1OTk0NCwgCi0gICAgNTk5NDksIDU5OTU0LCA1OTk2MCwgNTk5NjUsIDU5OTcxLCA1OTk3NiwgNTk5ODEsIDU5OTg2LCA1OTk5MSwgNTk5OTYsIAotICAgIDYwMDAxLCA2MDAwNiwgNjAwMTEsIDYwMDE2LCA2MDAyMSwgNjAwMjcsIDYwMDMyLCA2MDAzNywgNjAwNDIsIDYwMDQ3LCAKLSAgICA2MDA1MiwgNjAwNTcsIDYwMDYzLCA2MDA2OCwgNjAwNzMsIDYwMDc4LCA2MDA4MywgNjAwODgsIDYwMDkzLCA2MDA5OCwgCi0gICAgNjAxMDMsIDYwMTA4LCA2MDExNCwgNjAxMTksIDYwMTI0LCA2MDEyOSwgNjAxMzQsIDYwMTQwLCA2MDE0NiwgNjAxNTEsIAotICAgIDYwMTU3LCA2MDE2MiwgNjAxNjcsIDYwMTcyLCA2MDE3NywgNjAxODIsIDE0NzYsIDI0MCwgNjAxODcsIDYwMTkxLCA2MDE5NSwgCi0gICAgNjAxOTksIDIzMTU3LCA2MDIwMywgNjAyMDcsIDYwMjEyLCA2MDIxNiwgNjAyMjEsIDYwMjI1LCA2MDIyOSwgNjAyMzMsIAotICAgIDYwMjM4LCA2MDI0MiwgMTE2ODEsIDYwMjQ3LCA2MDI1MSwgNjAyNTgsIDEzNDQ0LCA2MDI2NywgNjAyNzYsIDYwMjgwLCAKLSAgICA2MDI4NSwgNjAyOTAsIDYwMjk0LCAyMjk2MCwgMjk1NywgNjAyOTgsIDYwMzA0LCA2MDMxMywgNjAzMjEsIDYwMzI3LCAKLSAgICA2MDMzOSwgNjAzNTEsIDYwMzU1LCA2MDM2MCwgNjAzNjQsIDYwMzcwLCA2MDM3NiwgNjAzODEsIDYwMzkxLCA2MDQwMSwgCi0gICAgNjA0MDcsIDYwNDEyLCA2MDQxNiwgNjA0MjEsIDYwNDI3LCA2MDQzNiwgNjA0NDUsIDYwNDUzLCAxMzc5OCwgNjA0NTcsIAotICAgIDYwNDY2LCA2MDQ3NCwgNjA0ODYsIDYwNDk3LCA2MDUwOCwgNjA1MTcsIDYwNTIxLCA2MDUzMCwgNjA1NDAsIDYwNTQ2LCAKLSAgICA2MDU1MSwgNjA1NTcsIDYwNTYyLCA5OCwgMjg3NzIsIDYwNTczLCAyNDIyOCwgMjQyMzgsIDYwNTc5LCA2MDU4NiwgNjA1OTIsIAotICAgIDYwNTk2LCA2MDYwNiwgNjA2MTcsIDYwNjI1LCA2MDYzNCwgNjA2MzksIDYwNjQ0LCA2MDY0OCwgMTU1MDQsIDYwNjU2LCAKLSAgICA2MDY2MCwgNjA2NjYsIDYwNjc2LCA2MDY4MywgNjA2ODksIDMyNTA4LCAxMTYyLCA2MDY5NSwgNjA2OTgsIDYwNzAyLCAKLSAgICA2MDcxMiwgNjA3MTgsIDYwNzI1LCAxMTYxOCwgNjA3MzIsIDYwNzM4LCA2MDc0NywgNjA3NTYsIDYwNzYyLCA2MDc2OCwgCi0gICAgNjA3NzQsIDYwNzc5LCA2MDc4NiwgNjA3OTMsIDYwNzk5LCA2MDgxMiwgNjA4MjEsIDYwODMwLCA2MDgzNSwgNjA4MzksIAotICAgIDYwODQ1LCA2MDg1MiwgNjA4NTksIDYwODY2LCA2MDg3MywgNjA4ODAsIDYwODg1LCA2MDg4OSwgNjA4OTMsIDYwODk2LCAKLSAgICA2MDkwNiwgNjA5MTAsIDYwOTIyLCA2MDkzMSwgNjA5MzUsIDYwOTQwLCA2MDk0NCwgNjA5NTAsIDYwOTU1LCA2MDk2MiwgCi0gICAgNjA5NzEsIDYwOTc5LCA2MDk4NywgNjA5OTIsIDYwOTk2LCA2MTAwMSwgNjEwMDYsIDYxMDE2LCA2MTAyNCwgNjEwMjksIAotICAgIDYxMDMzLCA2MTAzNywgNjEwNDMsIDYxMDU1LCA2MTA2MywgNjEwNzMsIDYxMDgwLCA2MTA4NiwgNjEwOTEsIDYxMDk1LCAKLSAgICA2MTA5OSwgNjExMDMsIDYxMTEyLCA2MTEyMSwgNjExMzAsIDYxMTM2LCA2MTE0MiwgNjExNDgsIDYxMTUzLCA2MTE2MCwgCi0gICAgNjExNjYsIDYxMTc0LCA2MTE4MSwgMTA3NzIsIDYxMTg3LCA2MTE5MywgNjExOTcsIDEyNTIzLCA2MTIwMSwgNjEyMDYsIAotICAgIDYxMjE2LCA2MTIyNSwgNjEyMzEsIDYxMjM3LCA2MTI0NSwgNjEyNTIsIDYxMjU2LCA2MTI2MCwgNjEyNjYsIDYxMjc0LCAKLSAgICA2MTI4MSwgNjEyODcsIDYxMjk4LCA2MTMwMiwgNjEzMDYsIDYxMzEwLCA2MTMxMywgNjEzMTksIDYxMzI0LCA2MTMyOCwgCi0gICAgNjEzMzIsIDYxMzQxLCA2MTM0OSwgNjEzNTYsIDYxMzYyLCA2MTM2OSwgMjIwODcsIDM2MzM3LCA2MTM3NCwgNjEzODIsIAotICAgIDYxMzg2LCA2MTM4OSwgNjEzOTcsIDYxNDA0LCA2MTQxMCwgNjE0MTksIDYxNDI3LCA2MTQzMywgNjE0MzgsIDYxNDQyLCAKLSAgICA2MTQ0NywgNjE0NTEsIDYxNDU1LCA2MTQ2MCwgNjE0NjksIDYxNDczLCA2MTQ4MCwgNjE0ODcsIDYxNDkzLCA2MTUwMSwgCi0gICAgNjE1MDcsIDYxNTE4LCA2MTUyNiwgNjE1MzIsIDIwNzUzLCA2MTU0MSwgNjE1NDgsIDYxNTU1LCA2MTU2MiwgNjE1NjksIAotICAgIDYxNTc2LCAzOTI4OCwgMTE0NTYsIDYxNTgzLCA2MTU5MCwgNjE1OTUsIDMyNTQ0LCAzNzQ4NCwgNjE2MDEsIDYxNjA2LCAKLSAgICA2MTYxMSwgNjE2MTcsIDYxNjIzLCA2MTYyOSwgNjE2MzQsIDYxNjM5LCA2MTY0NCwgNjE2NDksIDYxNjU1LCA2MTY2MCwgCi0gICAgNjE2NjYsIDYxNjcxLCA2MTY3NywgNjE2ODIsIDYxNjg3LCA2MTY5MiwgNjE2OTcsIDYxNzAyLCA2MTcwNywgNjE3MTIsIAotICAgIDYxNzE4LCA2MTcyMywgNjE3MjksIDYxNzM0LCA2MTczOSwgNjE3NDQsIDYxNzQ5LCA2MTc1NCwgNjE3NTksIDYxNzY1LCAKLSAgICA2MTc3MCwgNjE3NzUsIDYxNzgwLCA2MTc4NSwgNjE3OTAsIDYxNzk1LCA2MTgwMCwgNjE4MDUsIDYxODEwLCA2MTgxNSwgCi0gICAgNjE4MjEsIDYxODI2LCA2MTgzMSwgNjE4MzYsIDYxODQxLCA2MTg0NiwgNjE4NTEsIDYxODU2LCA2MTg2MSwgNjE4NjcsIAotICAgIDYxODcyLCA2MTg3NywgNjE4ODIsIDYxODg3LCA2MTg5MiwgNjE4OTcsIDYxOTAyLCA2MTkwNywgNjE5MTIsIDYxOTE3LCAKLSAgICA2MTkyMiwgNjE5MjcsIDYxOTMzLCAxNzk3LCAyMjQsIDM0OTkzLCA2MTkzOCwgNjE5NDEsIDYxOTQ2LCA2MTk1MCwgNjE5NTMsIAotICAgIDYxOTU4LCA2MDk4MywgNjE5NjksIDYxOTc5LCA2MTk4NiwgNjIwMDIsIDYyMDExLCA2MjAyMSwgNjIwMzEsIDYyMDM5LCAKLSAgICA2MjA0NywgNjIwNTEsIDYyMDU0LCA2MjA2MSwgNjIwNjcsIDYyMDc4LCA2MjA5MCwgNjIxMDEsIDYyMTEwLCA2MjExNywgCi0gICAgMTI4NiwgMjEzOTEsIDYyMTI3LCAyNTQ0LCA2MjEzMSwgNjIxNDAsIDExMjcsIDE1NDc3LCAzNTYyMiwgNjIxNDgsIDYyMTU2LCAKLSAgICA2MjE3MCwgNjIxODMsIDYyMTg3LCA2MjE5MiwgNjIxOTcsIDYyMjAyLCA2MjIwOCwgNjIyMTQsIDYyMjE5LCA2OTU3LCAKLSAgICA2MjIyNCwgNjIyMzIsIDkzOTMsIDYyMjM3LCA2MjI0MywgMTY4NCwgOTQwNSwgNzIzLCA2MjI1MiwgNjIyNjEsIDYyMjcxLCAKLSAgICAyNDk5MiwgNjIyODAsIDYyMjg2LCAxNTA2MywgNjIyOTIsIDYyMjk2LCAzODgxLCA5NzM2LCA2MjMwMiwgNTgwMDcsIAotICAgIDYyMzA5LCAzOTA1LCAxODQsIDEyNDQ0LCA2MjMxNSwgNjIzMjcsIDYyMzMxLCA2MjMzNywgMjU2ODQsIDYyMzQxLCA5NzI0LCAKLSAgICAyNjg0LCA0LCA2MjM0NiwgNjIzNTYsIDYyMzYyLCA2MjM3MywgNjIzODAsIDYyMzg2LCA2MjM5MiwgNjI0MDAsIDYyNDA3LCAKLSAgICA2MjQxMywgNjI0MjMsIDYyNDMzLCA2MjQ0MywgMTI5OCwgNjI0NTIsIDYyNDU4LCAyNzA3LCAyNzEzLCA2OTU0LCAyMjE4LCAKLSAgICA2MjQ2MiwgNjI0NjYsIDYyNDc1LCA2MjQ4MywgNjI0OTQsIDYyNTAyLCA2MjUxMCwgNjI1MTYsIDYyNTIxLCA2MjUzMiwgCi0gICAgNjI1NDMsIDYyNTUxLCA2MjU1NywgODA2MSwgNjI1NjIsIDYyNTcwLCA2MjU3NCwgNjI1NzgsIDYyNTkwLCAyNjA2MCwgCi0gICAgNjI1OTcsIDYyNjA3LCA2MjYxMywgNjI2MTksIDgxNjMsIDYyNjI5LCA2MjY0MCwgNjI2NTAsIDYyNjU5LCA2MjY2MywgCi0gICAgNjI2NzAsIDExMjksIDI1MzcsIDYyNjgwLCA2MjY4NSwgNjI2OTMsIDYyNzAxLCA2MjcxMiwgNjI3MTksIDYyNzMzLCAKLSAgICAxMjM2OSwgMzc5LCA2Mjc0MywgNjI3NDcsIDYyNzU2LCA2Mjc2NCwgNjI3NzAsIDYyNzg0LCA2Mjc5MSwgNjI3OTcsIAotICAgIDYyODA2LCA2MjgxMywgNjI4MjMsIDYyODMxLCAzNzQwLCAxODksIDYyODM5LCA2Mjg1MCwgNjI4NTQsIDYyODY2LCAyNTg4MiwgCi0gICAgMTU2LCA2Mjg3MiwgNjI4NzcsIDYyODgxLCA2Mjg4OCwgNjI4OTQsIDYyOTAyLCA2MjkwOSwgNzIyNiwgNjI5MTYsIDYyOTI1LCAKLSAgICA2MjkzMywgMzgwNiwgNjI5NDYsIDE1MTA5LCA2Mjk1MCwgMjc1MiwgNDI4LCA2Mjk1NSwgNjI5NjgsIDYyOTczLCAxNzk2LCAKLSAgICA2NDcsIDYyOTc3LCAzODEyLCA2Mjk4NSwgNjI5OTEsIDk2MywgNjMwMDEsIDYzMDEwLCA2MzAxNSwgMTMxNzgsIDEzMTg1LCAKLSAgICA0MjYyMCwgNjMwMTksIDM3NTAsIDExMzUwLCA2MzAyNywgNjMwMzQsIDIxNjE4LCA2MzAzOCwgNjMwNDUsIDYzMDUxLCAKLSAgICA2MzA1NiwgNjMwNjEsIDEzMTk4LCAzNTQsIDYzMDY2LCA2MzA3OCwgNjMwODQsIDYzMDkyLCAyNzY0LCAxNzE2LCA2MzEwMCwgCi0gICAgNjMxMDIsIDYzMTA3LCA2MzExMiwgNjMxMTcsIDYzMTIzLCA2MzEyOCwgNjMxMzMsIDYzMTM4LCA2MzE0MywgNjMxNDgsIAotICAgIDYzMTUzLCA2MzE1OSwgNjMxNjQsIDYzMTY5LCA2MzE3NCwgNjMxNzksIDYzMTg0LCA2MzE4OSwgNjMxOTQsIDYzMTk5LCAKLSAgICA2MzIwNSwgNjMyMTAsIDYzMjE1LCA2MzIyMCwgNjMyMjYsIDYzMjMxLCA2MzIzNywgNjMyNDIsIDYzMjQ3LCA2MzI1MiwgCi0gICAgNjMyNTcsIDYzMjYyLCA2MzI2NywgNjMyNzIsIDYzMjc4LCA2MzI4MywgNjMyODksIDYzMjk0LCA2MzI5OSwgNjMzMDQsIAotICAgIDYzMzA5LCA2MzMxNCwgNjMzMTksIDYzMzI0LCA2MzMyOSwgNjMzMzUsIDYzMzQwLCA2MzM0NSwgNjMzNDksIDYzMzUzLCAKLSAgICA2MzM1OCwgNjMzNjIsIDYzMzY3LCA2MzM3MiwgNjMzNzgsIDYzMzgzLCA2MzM4NywgNjMzOTIsIDYzMzk2LCA2MzM5OSwgCi0gICAgNjM0MDEsIDYzNDA1LCA2MzQwOCwgNjM0MTMsIDYzNDE3LCA2MzQyMSwgNjM0MjUsIDYzNDI5LCA2MzQzOCwgNjM0NDIsIAotICAgIDMwMjg4LCA2MzQ0NSwgMzAyOTMsIDYzNDUyLCA2MzQ1NywgMzAyOTgsIDYzNDY2LCA2MzQ3NSwgMzAzMDQsIDYzNDgwLCAKLSAgICAzMDMwOSwgNjM0ODksIDYzNDk0LCA5OTE0LCA2MzQ5OCwgNjM1MDMsIDYzNTA4LCAzMDMxNCwgNjM1MTIsIDM3NjUwLCAKLSAgICA2MzUxNiwgNjM1MTksIDYzNTIzLCA2NjM4LCA2MzUyOSwgNjM1MzQsIDYzNTM4LCAzNjMzLCAzMDMxOSwgNjM1NDEsIAotICAgIDYzNTQ1LCA2MzU0OCwgNjM1NTMsIDYzNTU3LCA2MzU2MywgNjM1NzEsIDYzNTg0LCA2MzU5MywgNjM1OTksIDYzNjA0LCAKLSAgICA2MzYxMCwgNjM2MTQsIDYzNjIwLCA2MzYyOCwgNjM2MzMsIDYzNjQwLCA2MzY0NiwgNjM2NTQsIDYzNjYzLCA2MzY3MSwgCi0gICAgMzAzMjIsIDYzNjc4LCA2MzY4OCwgNjM2OTcsIDYzNzEwLCA2MzcxNSwgNjM3MjAsIDYzNzI5LCA2MzczNSwgNjM3NDIsIAotICAgIDYzNzUzLCA2Mzc2NSwgNjM3NzIsIDYzNzgxLCA2Mzc5MCwgNjM3OTksIDYzODA2LCA2MzgxMiwgNjM4MTksIDYzODI3LCAKLSAgICA2MzgzNCwgNjM4NDIsIDYzODUxLCA2Mzg1OSwgNjM4NjYsIDYzODc0LCA2Mzg4MywgNjM4OTEsIDYzOTAwLCA2MzkxMCwgCi0gICAgNjM5MTksIDYzOTI3LCA2MzkzNCwgNjM5NDIsIDYzOTUxLCA2Mzk1OSwgNjM5NjgsIDYzOTc4LCA2Mzk4NywgNjM5OTUsIAotICAgIDY0MDA0LCA2NDAxNCwgNjQwMjMsIDY0MDMzLCA2NDA0NCwgNjQwNTQsIDY0MDYzLCA2NDA3MSwgNjQwNzgsIDY0MDg2LCAKLSAgICA2NDA5NSwgNjQxMDMsIDY0MTEyLCA2NDEyMiwgNjQxMzEsIDY0MTM5LCA2NDE0OCwgNjQxNTgsIDY0MTY3LCA2NDE3NywgCi0gICAgNjQxODgsIDY0MTk4LCA2NDIwNywgNjQyMTUsIDY0MjI0LCA2NDIzNCwgNjQyNDMsIDY0MjUzLCA2NDI2NCwgNjQyNzQsIAotICAgIDY0MjgzLCA2NDI5MywgNjQzMDQsIDY0MzE0LCA2NDMyNSwgNjQzMzcsIDY0MzQ4LCA2NDM1OCwgNjQzNjcsIDY0Mzc1LCAKLSAgICA2NDM4MiwgNjQzOTAsIDY0Mzk5LCA2NDQwNywgNjQ0MTYsIDY0NDI2LCA2NDQzNSwgNjQ0NDMsIDY0NDUyLCA2NDQ2MiwgCi0gICAgNjQ0NzEsIDY0NDgxLCA2NDQ5MiwgNjQ1MDIsIDY0NTExLCA2NDUxOSwgNjQ1MjgsIDY0NTM4LCA2NDU0NywgNjQ1NTcsIAotICAgIDY0NTY4LCA2NDU3OCwgNjQ1ODcsIDY0NTk3LCA2NDYwOCwgNjQ2MTgsIDY0NjI5LCA2NDY0MSwgNjQ2NTIsIDY0NjYyLCAKLSAgICA2NDY3MSwgNjQ2NzksIDY0Njg4LCA2NDY5OCwgNjQ3MDcsIDY0NzE3LCA2NDcyOCwgNjQ3MzgsIDY0NzQ3LCA2NDc1NywgCi0gICAgNjQ3NjgsIDY0Nzc4LCA2NDc4OSwgNjQ4MDEsIDY0ODEyLCA2NDgyMiwgNjQ4MzEsIDY0ODQxLCA2NDg1MiwgNjQ4NjIsIAotICAgIDY0ODczLCA2NDg4NSwgNjQ4OTYsIDY0OTA2LCA2NDkxNywgNjQ5MjksIDY0OTQwLCA2NDk1MiwgNjQ5NjUsIDY0OTc3LCAKLSAgICA2NDk4OCwgNjQ5OTgsIDY1MDA3LCA2NTAxNSwgNjUwMjIsIDY1MDMwLCA2NTAzOSwgNjUwNDcsIDY1MDU2LCA2NTA2NiwgCi0gICAgNjUwNzUsIDY1MDgzLCA2NTA5MiwgNjUxMDIsIDY1MTExLCA2NTEyMSwgNjUxMzIsIDY1MTQyLCA2NTE1MSwgNjUxNTksIAotICAgIDY1MTY4LCA2NTE3OCwgNjUxODcsIDY1MTk3LCA2NTIwOCwgNjUyMTgsIDY1MjI3LCA2NTIzNywgNjUyNDgsIDY1MjU4LCAKLSAgICA2NTI2OSwgNjUyODEsIDY1MjkyLCA2NTMwMiwgNjUzMTEsIDY1MzE5LCA2NTMyOCwgNjUzMzgsIDY1MzQ3LCA2NTM1NywgCi0gICAgNjUzNjgsIDY1Mzc4LCA2NTM4NywgNjUzOTcsIDY1NDA4LCA2NTQxOCwgNjU0MjksIDY1NDQxLCA2NTQ1MiwgNjU0NjIsIAotICAgIDY1NDcxLCA2NTQ4MSwgNjU0OTIsIDY1NTAyLCA2NTUxMywgNjU1MjUsIDY1NTM2LCA2NTU0NiwgNjU1NTcsIDY1NTY5LCAKLSAgICA2NTU4MCwgNjU1OTIsIDY1NjA1LCA2NTYxNywgNjU2MjgsIDY1NjM4LCA2NTY0NywgNjU2NTUsIDY1NjY0LCA2NTY3NCwgCi0gICAgNjU2ODMsIDY1NjkzLCA2NTcwNCwgNjU3MTQsIDY1NzIzLCA2NTczMywgNjU3NDQsIDY1NzU0LCA2NTc2NSwgNjU3NzcsIAotICAgIDY1Nzg4LCA2NTc5OCwgNjU4MDcsIDY1ODE3LCA2NTgyOCwgNjU4MzgsIDY1ODQ5LCA2NTg2MSwgNjU4NzIsIDY1ODgyLCAKLSAgICA2NTg5MywgNjU5MDUsIDY1OTE2LCA2NTkyOCwgNjU5NDEsIDY1OTUzLCA2NTk2NCwgNjU5NzQsIDY1OTgzLCA2NTk5MywgCi0gICAgNjYwMDQsIDY2MDE0LCA2NjAyNSwgNjYwMzcsIDY2MDQ4LCA2NjA1OCwgNjYwNjksIDY2MDgxLCA2NjA5MiwgNjYxMDQsIAotICAgIDY2MTE3LCA2NjEyOSwgNjYxNDAsIDY2MTUwLCA2NjE2MSwgNjYxNzMsIDY2MTg0LCA2NjE5NiwgNjYyMDksIDY2MjIxLCAKLSAgICA2NjIzMiwgNjYyNDQsIDY2MjU3LCA2NjI2OSwgNjYyODIsIDY2Mjk2LCA2NjMwOSwgNjYzMjEsIDY2MzMyLCA2NjM0MiwgCi0gICAgNjYzNTEsIDY2MzU5LCA2NjM2NiwgNjYzNzEsIDY0ODksIDY2Mzc4LCAzMDMzMiwgNjYzODMsIDY2Mzg4LCAzMDMzNywgCi0gICAgNjYzOTQsIDE5MTAwLCAzMDM0MiwgNjYzOTksIDY2NDA1LCA2NjQxMywgNjY0MTksIDY2NDI1LCA2NjQzMiwgNjY0MzksIAotICAgIDY2NDQ0LCA2NjQ0OCwgNjY0NTEsIDY2NDU1LCA2NjQ2NCwgNjY0NzAsIDY2NDgyLCA2NjQ5MywgNjY0OTcsIDMwMTksIAotICAgIDY0NjQsIDY2NTAyLCA2NjUwNSwgNjY1MDcsIDY2NTExLCA2NjUxNSwgNjY1MTksIDIzOTI3LCA2NjUyNCwgNjY1MjgsIAotICAgIDY2NTMxLCA2NjUzNiwgNjY1NDAsIDY2NTQ3LCA2NjU1MywgNjY1NTcsIDY2NTYxLCA2NjU2NCwgMzAzNTksIDY2NTY5LCAKLSAgICA2NjU3NiwgNjY1ODUsIDY2NTkzLCA2NjYwNCwgNjY2MTIsIDY2NjIwLCA2NjYyNywgNjY2MzQsIDY2NjQwLCA2NjY1MSwgCi0gICAgMzAzNjQsIDY2NjU2LCA2NjY2NywgNjY2NzksIDY2Njg3LCA2NjY5OCwgNjY3MDcsIDY2NzE4LCA2NjcyMywgNjY3MzEsIAotICAgIDI1MTAsIDY2NzM2LCAzMjAwMiwgNjY3NDksIDY2NzUzLCA2Njc2NSwgNjY3NzMsIDY2Nzc4LCA2Njc4NiwgMTU2NjQsIAotICAgIDY2Nzk3LCA2NjgwMywgNjY4MTAsIDY2ODE4LCA2NjgyNCwgMzAzNzQsIDY2ODI5LCAzODMxLCA1NTYwNSwgNjY4MzYsIAotICAgIDY2ODM5LCA2Njg0NywgNjY4NjAsIDY2ODczLCA2Njg4NiwgNjY4OTksIDY2OTA2LCA2NjkxNywgNjY5MjYsIDM5MTA1LCAKLSAgICAzOTExMCwgNjY5MzEsIDY2OTM1LCA2Njk0MywgNjY5NTAsIDY2OTU5LCA2Njk2NywgNjY5NzMsIDY2OTgyLCA2Njk5MCwgCi0gICAgNjY5OTgsIDY3MDAyLCA2NzAxMSwgNjcwMjAsIDY3MDMwLCA2NzA0MywgNjcwNTYsIDY3MDY2LCAzMDM3OSwgNjcwNzIsIAotICAgIDY3MDc5LCA2NzA4NSwgMzAzODUsIDY3MDkwLCA2NzA5MywgNjcwOTcsIDY3MTA1LCA2NzExNCwgMzg4NDMsIDY3MTIyLCAKLSAgICA2NzEzMSwgNjcxMzksIDY3MTQ2LCA2NzE1NCwgNjcxNjQsIDY3MTczLCA2NzE4MiwgNjcxOTEsIDY3MTk5LCA2NzIxMCwgCi0gICAgNjcyMjAsIDc3MzMsIDE5NzE1LCA2NzIyOSwgNjcyMzQsIDY3MjM5LCA2NzI0MywgNjcyNDcsIDY3MjUyLCA2NzI1OCwgCi0gICAgNjcyNjMsIDY3MjY4LCA2NzI3NCwgNjcyNzksIDY3Mjg0LCAxOTY4MCwgNjcyODksIDY3Mjk2LCA2NzMwNCwgNjczMTIsIAotICAgIDY3MzE3LCA2NzMyNCwgNjczMzEsIDY3MzM1LCA2NzMzOSwgNjczNDcsIDY3MzU1LCAzMDQwMiwgNjczNjEsIDY3MzY3LCAKLSAgICA2NzM3OSwgNjczODUsIDY3Mzg5LCA2NzM5NiwgNjc0MDEsIDY3NDEyLCA2NzQyMiwgNjc0MzIsIDY3NDQ0LCA2NzQ1MCwgCi0gICAgNjc0NjAsIDY3NDcwLCAzMDQyOSwgNjc0NzksIDY3NDg4LCA2NzQ5NCwgNjc1MDYsIDY3NTE3LCA2NzUyNCwgNjc1MjksIAotICAgIDY3NTMzLCA2NzU0MSwgNjc1NDcsIDY3NTUyLCA2NzU1NywgNjc1NjQsIDY3NTcyLCA2NzU4NCwgNjc1OTQsIDY3NjAzLCAKLSAgICA2NzYxMiwgNjc2MTksIDMxODY2LCAyMTkwNiwgNjc2MjUsIDY3NjMwLCA2NzYzNCwgNjc2MzgsIDY3NjQzLCA2NzY0OSwgCi0gICAgNjc2NjAsIDY3NjczLCA2NzY3OCwgNjc2ODUsIDMwNDM0LCA2NzY5MCwgNjc3MDIsIDY3NzExLCA2NzcyMSwgNjc3MzIsIAotICAgIDY3NzQ1LCA2Nzc1MiwgNjc3NjEsIDY3NzcwLCA2Nzc3OCwgNjc3ODMsIDY3Nzg5LCAxNDY1LCA2Nzc5NCwgNjc3OTksIAotICAgIDY3ODA0LCA2NzgwOSwgNjc4MTUsIDY3ODIwLCA2NzgyNSwgNjc4MzEsIDY3ODM3LCA2Nzg0MiwgNjc4NDYsIDY3ODUxLCAKLSAgICA2Nzg1NiwgNjc4NjEsIDU2MTExLCA2Nzg2NiwgNjc4NzEsIDY3ODc2LCA2Nzg4MSwgNjc4ODcsIDY3ODkzLCA2Nzg5OCwgCi0gICAgNjc5MDIsIDY3OTA3LCA2NzkxMiwgNjc5MTcsIDY3OTIzLCA2NzkyOCwgNjc5MzQsIDY3OTM5LCA2Nzk0NCwgNjc5NDksIAotICAgIDY3OTU0LCA2Nzk1OCwgNjc5NjQsIDY3OTY5LCA2Nzk3OCwgNjc5ODMsIDY3OTg4LCA2Nzk5MywgNjc5OTgsIDY4MDAyLCAKLSAgICA2ODAwOSwgNjgwMTUsIDE1MzI2LCAxNTMzMywgNDI4NzUsIDY4MDIwLCA2Nzk3MCwgNjgwMjIsIDY4MDMyLCAzMDQ0MywgCi0gICAgNjgwMzUsIDY4MDQ0LCA2ODA1MCwgNDYxNywgMzA0NDgsIDY4MDU0LCA2ODA2MCwgNjgwNjYsIDY4MDcxLCA2ODA3NSwgCi0gICAgNjgwODIsIDY4MDg3LCA2ODA5NywgNjgxMDYsIDY4MTEwLCA2ODExNiwgNjgxMjIsIDY4MTI4LCA2ODEzMiwgNjgxNDAsIAotICAgIDY4MTQ3LCA2ODE1NSwgNjgxNjMsIDMwNDUzLCA2ODE3MCwgNjgxNzMsIDY4MTgwLCA2ODE4NiwgNjgxOTEsIDY4MTk1LCAKLSAgICA2ODIwMSwgNjgyMDgsIDY4MjEzLCA2ODIxNywgNjgyMjYsIDY4MjM0LCA2ODI0MCwgNjgyNDUsIDMwNDU4LCA2ODI1MiwgCi0gICAgNjgyNTksIDY4MjY1LCA2ODI3MCwgNjgyNzYsIDY4MjgzLCA2ODI4OSwgMTk0NTMsIDI1NDA4LCA2ODI5NSwgNjgzMDAsIAotICAgIDY4MzA2LCA2ODMxOCwgNjgwMDMsIDY4MDEwLCA2ODMyOCwgNjgzMzMsIDY4MzQwLCA2ODM0NywgNjgzNTMsIDY4MzY0LCAKLSAgICA2ODM2OSwgNzUwMiwgNjgzNzcsIDY4MzgwLCA2ODM4NiwgNjgzOTAsIDY4Mzk0LCA2ODM5NywgNjg0MDMsIDMwMjA3LCAKLSAgICA0NjU2LCA5MTMsIDExNzMxLCA2ODQxMCwgNjg0MTYsIDY4NDIyLCA2ODQyOCwgNjg0MzQsIDY4NDQwLCA2ODQ0NiwgNjg0NTIsIAotICAgIDY4NDU4LCA2ODQ2MywgNjg0NjgsIDY4NDczLCA2ODQ3OCwgNjg0ODMsIDY4NDg4LCA2ODQ5MywgNjg0OTgsIDY4NTAzLCAKLSAgICA2ODUwOCwgNjg1MTMsIDY4NTE4LCA2ODUyMywgNjg1MjksIDY4NTM0LCA2ODUzOSwgNjg1NDUsIDY4NTUwLCA2ODU1NSwgCi0gICAgNjg1NjEsIDY4NTY3LCA2ODU3MywgNjg1NzksIDY4NTg1LCA2ODU5MSwgNjg1OTcsIDY4NjAzLCA2ODYwOSwgNjg2MTQsIAotICAgIDY4NjE5LCA2ODYyNSwgNjg2MzAsIDY4NjM1LCA2ODY0MSwgNjg2NDYsIDY4NjUxLCA2ODY1NiwgNjg2NjEsIDY4NjY2LCAKLSAgICA2ODY3MSwgNjg2NzYsIDY4NjgxLCA2ODY4NiwgNjg2OTEsIDY4Njk2LCA2ODcwMSwgNjg3MDcsIDY4NzEyLCA2ODcxNywgCi0gICAgNjg3MjIsIDY4NzI4LCA2ODczMywgNjg3MzgsIDY4NzQzLCA2ODc0OCwgNjg3NTQsIDY4NzU5LCA2ODc2NCwgNjg3NjksIAotICAgIDY4Nzc0LCA2ODc3OSwgNjg3ODQsIDY4Nzg5LCA2ODc5NCwgNjg3OTksIDY4ODA0LCA2ODgwOSwgNjg4MTQsIDY4ODE5LCAKLSAgICA2ODgyNCwgNjg4MjksIDY4ODM0LCA2ODgzOSwgNjg4NDQsIDY4ODQ5LCA2ODg1NSwgNjg4NjAsIDY4ODY1LCA2ODg3MCwgCi0gICAgNjg4NzUsIDY4ODgwLCA2ODg4NSwgNjg4OTAsIDE4MjcsIDE0MywgNjg4OTUsIDY4ODk5LCA2ODkwMywgNjg5MDgsIDY4OTE2LCAKLSAgICA2ODkyMCwgNjg5MjcsIDY4OTM1LCA2ODkzOSwgNjg5NTIsIDY4OTYwLCA2ODk2NCwgNjg5NjcsIDY4OTcyLCA2ODk3NiwgCi0gICAgNjg5ODEsIDY4OTg1LCA2ODk5MywgNjg5OTcsIDE5MTA4LCA2OTAwMiwgNTgyNzAsIDY5MDA2LCA2OTAwOSwgNjkwMTcsIAotICAgIDY5MDI1LCA2OTAzMywgNjkwMzgsIDY5MDQ1LCA2OTA1MSwgNjkwNTcsIDY5MDYyLCA2OTA2NywgNjkwNzUsIDYyMTc1LCAKLSAgICA2OTA4MiwgNjkwODcsIDY5MDkyLCA2OTA5NiwgOTk4MSwgNjkxMDAsIDY5MTA1LCA2OTExMCwgNjkxMTQsIDY5MTE3LCAKLSAgICA2OTEyMywgNjkxMjcsIDY5MTM3LCA2OTE0NiwgNjkxNDksIDY5MTU2LCA2OTE2OSwgNjkxNzUsIDY5MTgzLCA2OTE5NCwgCi0gICAgNjkyMDUsIDY5MjE2LCA2OTIyNywgNjkyMzYsIDY5MjQyLCA2OTI1MSwgNjkyNTksIDY5MjY5LCA2OTI4MiwgNjkyODksIAotICAgIDY5MzAwLCA2OTMwNiwgNjkzMTEsIDY5MzE2LCA2OTMyMiwgNjkzMjgsIDY5MzM4LCA2OTM0NywgNjc2OTIsIDY5MzU1LCAKLSAgICA2OTM2MSwgNjkzNjksIDY5Mzc1LCA2OTM4MywgNjkzODcsIDY5MzkxLCA2OTM5NCwgNjk0MDAsIDY5NDA2LCA2OTQxNCwgCi0gICAgNjk0MjYsIDY5NDM4LCA2OTQ0NSwgNjk0NDksIDY5NDYwLCA2OTQ2OCwgNjk0NzUsIDY5NDg3LCA2OTQ5NSwgNjk1MDMsIAotICAgIDY5NTEwLCA2OTUxNiwgNjk1MjYsIDY5NTM1LCA2OTU0MCwgNjk1NTAsIDY5NTU5LCAzODE4NCwgNjk1NjYsIDY5NTcwLCAKLSAgICA2OTU3NSwgNjk1ODMsIDY5NTkwLCA2OTU5NiwgNjk2MDAsIDY5NjEwLCA2OTYyMSwgNjk2MjksIDY5NjM2LCA2OTY0OCwgCi0gICAgNjk2NjAsIDY5NjY5LCA2NjczOSwgNjk2NzYsIDY5Njg3LCA2OTcwMSwgNjk3MDksIDY5NzE5LCA2OTcyNiwgNjk3MzQsIAotICAgIDY5NzQ2LCA2OTc1NSwgNjk3NjMsIDY5NzczLCA2OTc4MiwgNjk3OTMsIDY5ODA1LCA2OTgxNCwgNjk4MjQsIDY5ODMxLCAKLSAgICA2OTg0MCwgNjk4NTUsIDY5ODY1LCA2OTg3NCwgNjk4ODIsIDY5ODk1LCA2OTkxMCwgNjk5MTQsIDY5OTIzLCA2OTkzNSwgCi0gICAgNjk5NDYsIDY5OTU3LCA2OTk2OCwgNjk5NzgsIDY5OTg5LCA2OTk5NywgNzAwMDMsIDcwMDEzLCA3MDAxOSwgMjY5MjMsIAotICAgIDcwMDI0LCA3MDAzMCwgNzAwMzUsIDcwMDQyLCA4MDc1LCAxNTY4NCwgNzAwNDgsIDcwMDU3LCA3MDA2MiwgNzAwNjYsIAotICAgIDcwMDczLCA3MDA3OSwgNzAwODQsIDcwMDkyLCA3MDEwMCwgNzAxMDQsIDcwMTA3LCA3MDExMCwgNzAxMTIsIDcwMTE5LCAKLSAgICA3MDEyNSwgNzAxMzYsIDcwMTQxLCA3MDE0NSwgNzAxNTIsIDcwMTU4LCA3MDE2MywgNzAxNzEsIDYyNjQyLCA2MjY1MiwgCi0gICAgNzAxNzcsIDcwMTg0LCA3MDE5NCwgODk3MSwgNzAyMDEsIDcwMjA2LCAyNzExMywgNzAyMTUsIDcwMjIwLCA3MDIyNywgCi0gICAgNzAyMzcsIDcwMjQ1LCA3MDI1MywgNzAyNjIsIDcwMjY4LCA3MDI3NCwgNzAyODEsIDcwMjg4LCA3MDI5MywgNzAyOTcsIAotICAgIDcwMzA1LCA3MDMxMCwgNzAzMTUsIDcwMzIzLCA3MDMzMCwgNzAzMzUsIDcwMzQxLCA3MDM0NCwgNzAzNDgsIDcwMzU3LCAKLSAgICA2ODk0NywgNzAzNjYsIDcwMzcwLCA3MDM3NiwgNzAzODcsIDcwMzk3LCAxNTY5MywgNzA0MDgsIDcwNDE2LCAxNTcwNSwgCi0gICAgNzA0MjMsIDcwNDI3LCA3MDQzNiwgMjUyOTQsIDcwNDQzLCA3MDQ0NywgNzA0NTIsIDcwNDY5LCA3MDQ4MSwgODkyNSwgCi0gICAgNzA0OTMsIDcwNDk4LCA3MDUwMywgNzA1MDgsIDcwNTEyLCA3MDUxNSwgNzA1MjAsIDcwNTI1LCA3MDUzMSwgNzA1MzYsIAotICAgIDQzMjQsIDE5MTgxLCA3MDU0MSwgNzA1NDYsIDcwNTUyLCA3MDU1OSwgNzA1NjQsIDcwNTY5LCA3MDU3NSwgNzA1ODEsIAotICAgIDcwNTg3LCA3MDU5MiwgNzA1OTgsIDcwNjAyLCA3MDYxNiwgNzA2MjQsIDcwNjMyLCA3MDYzOCwgNzA2NDMsIDcwNjUwLCAKLSAgICA3MDY2MCwgNzA2NjksIDcwNjc0LCA3MDY3OSwgNzA2ODcsIDcwNjkyLCA3MDY5OCwgNzA3MDMsIDcwNzEyLCA1NzE1NCwgCi0gICAgNzA3MTcsIDcwNzIwLCA3MDczOCwgNzA3NTcsIDcwNzcwLCA3MDc4NCwgNzA4MDAsIDcwODA3LCA3MDgxNCwgNzA4MjAsIAotICAgIDcwODI3LCA3MDgzMiwgNzA4MzgsIDcwODQ0LCA3MDg1MiwgNzA4NTgsIDcwODYzLCA3MDg2OCwgNzA4ODQsIDg5MzgsIAotICAgIDcwODk4LCA3MDkwNSwgNzA5MTMsIDcwOTE5LCA3MDkyMywgNzA5MjYsIDcwOTMxLCA3MDkzNiwgNzA5NDMsIDcwOTQ4LCAKLSAgICA3MDk1NywgNzA5NjIsIDcwOTY4LCA3MDk3NywgNzA5ODYsIDcwOTkxLCA3MDk5NSwgNzEwMDMsIDEwMDA1LCA3MTAxMiwgCi0gICAgNzEwMjAsIDcxMDI1LCA3MTAzMSwgMTAwMTYsIDcxMDM2LCA3MTAzOSwgNzEwNDQsIDcxMDU0LCA3MTA2MywgNzEwNjgsIAotICAgIDcxMDc0LCA3MTA3OSwgNzEwODcsIDcxMDk0LCA3MTEwNSwgNzExMTUsIDcxMTIwLCA2MjEwMywgNzExMjUsIDcxMTMxLCAKLSAgICA3MTEzNiwgNzExNDMsIDcxMTUyLCA3MTE2MCwgNzExNjYsIDcxMTczLCA3MTE3OSwgNzExODMsIDE1MTYxLCAyOTkzLCAKLSAgICA3MTE4OCwgNzExOTIsIDcxMTk4LCA3MTIwNywgNzEyMTMsIDcxMjIwLCA3MTIyNCwgNzEyNDUsIDcxMjY3LCA3MTI4MywgCi0gICAgNzEzMDAsIDcxMzE5LCA3MTMyOCwgNzEzMzgsIDcxMzQ1LCA3MTM1MiwgMjUxODEsIDcxMzU4LCA3MTM2MiwgNzEzNzAsIAotICAgIDcxMzgyLCA3MTM4OCwgNzEzOTYsIDcxNDAwLCA3MTQwOCwgNzE0MTUsIDcxNDE5LCA3MTQyNSwgNzE0MzEsIDcxNDM2LCAKLSAgICAzNDk4LCAzOTMwNSwgNzE0NDIsIDcxNDQ2LCA3MTQ1MCwgNzE0NTQsIDcxNDU5LCA3MTQ2NCwgNzE0NjksIDcxNDc1LCAKLSAgICA3MTQ4MSwgNzE0ODcsIDcxNDk0LCA3MTUwMCwgNzE1MDcsIDcxNTEzLCA3MTUxOSwgNzE1MjQsIDcxNTMwLCA3MTUzNSwgCi0gICAgNzE1NDAsIDcxNTQ0LCA3MTU0OSwgMzkzMjAsIDcxNTUzLCA3MTU1OCwgNzE1NjYsIDcxNTcwLCA3MTU3NSwgNzE1ODIsIAotICAgIDcxNTkxLCA3MTU5NywgNzE2MDQsIDcxNjA4LCA3MTYxMSwgNzE2MTgsIDcxNjI3LCA3MTYzMiwgNzE2MzYsIDcxNjQ0LCAKLSAgICA3MTY1MywgNzE2NTcsIDcxNjY1LCA3MTY3MSwgNzE2NzYsIDcxNjgxLCA3MTY4NywgNzE2OTMsIDcxNjk4LCA3MTcwMiwgCi0gICAgNzE3MDgsIDcxNzEzLCA3MTcxNywgNzE3MjEsIDcxNzI0LCA3MTcyOSwgNzE3MzcsIDcxNzQ3LCA3MTc1MiwgMzY4NjUsIAotICAgIDcxNzYwLCA3MTc3MiwgNzE3NzYsIDcxNzgyLCA3MTc5NCwgNzE4MDUsIDcxODEyLCA3MTgxOCwgNzE4MjUsIDcxODM3LCAKLSAgICA3MTg0NCwgNzE4NTAsIDE5MjU1LCA3MTg1NCwgNzE4NjAsIDcxODY3LCA3MTg3MywgNzE4NzksIDcxODg0LCA3MTg4OSwgCi0gICAgNzE4OTQsIDcxOTAzLCA1NDkxLCA3MTkwOCwgMTQ2MjcsIDcxOTE0LCA3MTkxOCwgNzE5MjYsIDcxOTM1LCA3MTkzOSwgCi0gICAgNzE5NDYsIDcxOTU1LCA3MTk2OCwgNzE5NzQsIDcxNTQ1LCAyNzk2MiwgNzE5NzksIDcxOTgxLCA3MTk4NiwgNzE5OTEsIAotICAgIDcxOTk2LCA3MjAwMSwgNzIwMDYsIDcyMDExLCA3MjAxNiwgNzIwMjEsIDcyMDI2LCA3MjAzMSwgNzIwMzYsIDcyMDQxLCAKLSAgICA3MjA0NiwgNzIwNTEsIDcyMDU3LCA3MjA2MiwgNzIwNjcsIDcyMDcyLCA3MjA3NywgNzIwODIsIDcyMDg3LCA3MjA5MiwgCi0gICAgNzIwOTcsIDcyMTAzLCA3MjEwOSwgNzIxMTUsIDcyMTIwLCA3MjEyNSwgNzIxMzcsIDcyMTQyLCAxODMzLCA2NywgNzIxNDcsIAotICAgIDcyMTUyLCAzMDQ4NSwgMzA0OTAsIDMwNDk1LCAzMDUwMSwgMzA1MDYsIDcyMTU2LCAzMDUxMSwgMjAyMjYsIDcyMTc4LCAKLSAgICA3MjE4MiwgNzIxODYsIDcyMTkxLCA3MjE5NSwgMzA1MTUsIDcyMTk5LCA3MjIwNywgMzA1MjAsIDcyMjE0LCA3MjIxNywgCi0gICAgNzIyMjIsIDcyMjI2LCA3OTEwLCA3MjIzNSwgMzA1MjUsIDIwMDkyLCA3MjIzOCwgNzIyNDIsIDEzOTYsIDcyMjQ3LCAKLSAgICAzMDUzNiwgNzIyNTAsIDcyMjU1LCAyMzcyMCwgMjM3MzAsIDMyOTQwLCA3MjI2MCwgNzIyNjUsIDcyMjcwLCA3MjI3NSwgCi0gICAgNzIyODEsIDcyMjg2LCA3MjI5NSwgNzIzMDAsIDcyMzA3LCA3MjMxMywgNzIzMTgsIDcyMzIzLCA3MjMyOCwgNzIzMzgsIAotICAgIDcyMzQ3LCA3MjM1MiwgNzIzNjAsIDcyMzY0LCA3MjM3MiwgMzAzNTAsIDExODgsIDcyMzc5LCA3MjM4NSwgNzIzOTAsIAotICAgIDcyMzk1LCA3MjQwMCwgNzI0MDYsIDcyNDExLCA3MjQxOCwgNzI0MjQsIDcyNDI5LCA3MjQzNywgNzI0NDcsIDcyNDU3LCAKLSAgICA3MjQ2MywgNzI0NjgsIDcyNDc0LCAxNTcxNSwgNzI0ODEsIDMzNzQ1LCA3MjQ5NCwgNzI0OTksIDcyNTA1LCA3MjUxOCwgCi0gICAgNzI1MjQsIDcyNTI4LCA3MjUzNywgNzI1NDQsIDcyNTUwLCA3MjU1OCwgNzI1NjcsIDcyNTc0LCA3MjU4MCwgNzI1ODMsIAotICAgIDIzODYxLCA3MjU4NywgNzI1OTQsIDcyNjAwLCA3MjYwOCwgNzI2MTMsIDIyMDM1LCA3MjYxOSwgNzI2MjIsIDcyNjMwLCAKLSAgICA3MjYzOCwgNzI2NTIsIDcyNjU5LCA3MjY2NSwgNzI2NzIsIDcyNjc4LCAzMDU1MCwgNzI2ODIsIDcyNjg5LCA3MjY5NywgCi0gICAgNzI3MDUsIDMwNTU1LCA3MjcxMSwgNzI3MTcsIDcyNzIyLCA3MjczMiwgNzI3MzgsIDcyNzQ3LCAyODY3NywgMzI0MTUsIAotICAgIDcyNzU1LCA3Mjc2MCwgNzI3NjUsIDcyNzcwLCA3Mjc3NCwgMTMxNzAsIDM2ODc4LCA3Mjc3OSwgNzI3ODQsIDMwNTYwLCAKLSAgICA1OTU1NCwgNzI3ODgsIDcyNzkzLCA3Mjc5NywgNzI4MDYsIDcyODE0LCA3MjgyMCwgNzI4MjUsIDcyODMxLCA3MjgzOCwgCi0gICAgNzI4NDQsIDcyODQ5LCA3Mjg1NCwgNzI4NjMsIDcyODc1LCA3Mjg5MCwgMzA4MDEsIDcyODk2LCAxNDc0NiwgMzA1NjQsIAotICAgIDcyOTAwLCA3MjkwNywgMjIxNDUsIDcyOTEzLCA3MjkyMCwgNzI5MjksIDcyOTM2LCA3Mjk0NSwgNzI5NTEsIDcyOTU2LCAKLSAgICA3Mjk2NCwgNzI5NzAsIDMwNTc0LCA3Mjk3NSwgNzI5ODQsIDcxODAwLCA3Mjk5MywgNzMwMDAsIDczMDA2LCA3MzAxMiwgCi0gICAgNzMwMjIsIDczMDMwLCA3MzAzNywgNzMwNDEsIDMwNTc5LCA3MzA0NCwgMzA1ODUsIDMwNTkxLCA3MzA0OSwgNzMwNTcsIAotICAgIDczMDY3LCA3MzA3NiwgNzMwODQsIDczMDkxLCA3MzEwMSwgMzA1OTYsIDczMTA1LCA3MzEwNywgNzMxMTEsIDczMTE2LCAKLSAgICA3MzEyMCwgNzMxMjQsIDczMTMwLCA3MzEzNSwgNzMxMzksIDczMTUwLCA3MzE1NSwgMjk5OCwgNzMxNTksIDczMTY2LCAKLSAgICA3MzE3MCwgNzMxNzksIDczMTg3LCA3MzE5NCwgNzMxOTksIDczMjA0LCA1OTYwMCwgNzMyMDgsIDczMjExLCA3MzIxNywgCi0gICAgNzMyMjUsIDczMjMxLCA3MzIzNSwgNzMyNDAsIDczMjQ3LCA3MzI1MiwgNzMyNTgsIDMyNDQ2LCA3MzI2MywgNzMyNjYsIAotICAgIDczMjcxLCA3MzI3NSwgNzMyODAsIDczMjg1LCA3MzI4OSwgNzMyOTcsIDIzNzM5LCAyMzc0OCwgNzMzMDMsIDczMzA5LCAKLSAgICA3MzMxNSwgNzMzMjAsIDczMzI0LCA3MzMyNywgNzMzMzcsIDczMzQ2LCA3MzM1MSwgNzMzNTcsIDczMzY0LCA3MzM3MCwgCi0gICAgNzMzNzQsIDczMzgyLCA3MzM4NywgMzI0NTIsIDczMzkxLCA3MzM5OSwgNzM0MDUsIDczNDEyLCA3MzQxNywgNzM0MjEsIAotICAgIDczNDI2LCA1NTc5MSwgMzI0NTgsIDczNDMyLCA3MzQzNywgNzM0NDEsIDczNDQ2LCA3MzQ1MSwgNzM0NTYsIDczNDYwLCAKLSAgICA3MzQ2NSwgNzM0NzAsIDczNDc2LCA3MzQ4MSwgNzM0ODYsIDczNDkyLCA3MzQ5OCwgNzM1MDMsIDczNTA3LCA3MzUxMiwgCi0gICAgNzM1MTcsIDczNTIyLCA3MzUyNiwgMjIxNDQsIDczNTMxLCA3MzUzNiwgNzM1NDIsIDczNTQ4LCA3MzU1NCwgNzM1NTksIAotICAgIDczNTYzLCA3MzU2OCwgNzM1NzMsIDczNTc4LCA3MzU4MiwgNzM1ODcsIDczNTkyLCA3MzU5NywgNzM2MDIsIDczNjA2LCAKLSAgICAzMDYwMCwgNzM2MTQsIDczNjE4LCA3MzYyNiwgNzM2MzQsIDczNjQ1LCA3MzY1MCwgNzM2NTQsIDIwNDk3LCA3MzY1OSwgCi0gICAgNzM2NjUsIDczNjc1LCA3MzY4MiwgNzM2ODcsIDczNjk2LCA3MzcwMSwgNzM3MDUsIDczNzEwLCA3MzcxOCwgNzM3MjYsIAotICAgIDczNzMzLCA2MjMyMSwgNzM3MzksIDczNzQ3LCA3Mzc1NCwgNzM3NjUsIDczNzcxLCA3Mzc3NywgMzA2MTAsIDczNzgwLCAKLSAgICA3Mzc4NywgNzM3OTUsIDczODAwLCAzNzA2OSwgNzM4MDQsIDczODA5LCA3MzgxNiwgNzM4MjEsIDczODksIDczODI1LCAKLSAgICA3MzgzMywgNzM4NDAsIDczODQ3LCA3Mzg1MywgNzM4NjcsIDYwNjI5LCA3Mzg3NSwgNzM4ODEsIDczODg1LCA3Mzg4OCwgCi0gICAgNzM4OTYsIDczOTAzLCA3MzkwOCwgNzM5MjEsIDczOTI4LCA3MzkzNSwgNzM5NDAsIDU4MTc0LCA3Mzk0NSwgNzM5NDgsIAotICAgIDczOTU1LCA3Mzk2MSwgNzM5NjUsIDczOTczLCA3Mzk4MywgNzM5OTMsIDc0MDAyLCA3NDAxMCwgNzQwMjEsIDc0MDI2LCAKLSAgICA3NDAzMCwgNzQwMzUsIDc0MDM5LCAzMzA3MSwgMTk1MDksIDMzMDgwLCA3NDA0NywgNzQwNTIsIDc0MDU3LCA3NDA2MiwgCi0gICAgNzQwNjcsIDc0MDcyLCA3NDA3NywgNzQwODEsIDc0MDg2LCA3NDA5MSwgNzQwOTYsIDc0MTAxLCA3NDEwNiwgNzQxMTEsIAotICAgIDc0MTE1LCA3NDEyMCwgNzQxMjUsIDc0MTI5LCA3NDEzMywgNzQxMzcsIDc0MTQxLCA3NDE0NiwgNzQxNTEsIDc0MTU1LCAKLSAgICA3NDE2MCwgNzQxNjQsIDc0MTY4LCA3NDE3MywgNzQxNzgsIDc0MTgzLCA3NDE4OCwgNzQxOTIsIDc0MTk3LCA3NDIwMiwgCi0gICAgNzQyMDYsIDc0MjExLCA3NDIxNiwgNzQyMjEsIDc0MjI2LCA3NDIzMSwgNzQyMzYsIDc0MjQxLCA3NDI0NiwgNzQyNTEsIAotICAgIDc0MjU2LCA3NDI2MSwgNzQyNjYsIDc0MjcxLCA3NDI3NiwgNzQyODEsIDc0Mjg2LCA3NDI5MSwgNzQyOTYsIDc0MzAxLCAKLSAgICA3NDMwNiwgNzQzMTAsIDc0MzE1LCA3NDMyMCwgNzQzMjUsIDc0MzMwLCA3NDMzNSwgNzQzNDAsIDc0MzQ1LCA3NDM1MCwgCi0gICAgNzQzNTUsIDc0MzYwLCA3NDM2NSwgNzQzNjksIDc0Mzc0LCA3NDM3OCwgNzQzODMsIDc0Mzg4LCA3NDM5MywgNzQzOTgsIAotICAgIDc0NDAzLCA3NDQwOCwgNzQ0MTMsIDc0NDE4LCA3NDQyMywgNzQ0MjcsIDc0NDMxLCA3NDQzNiwgNzQ0NDEsIDc0NDQ1LCAKLSAgICA3NDQ1MCwgNzQ0NTUsIDc0NDU5LCA3NDQ2NCwgNzQ0NjksIDc0NDc0LCA3NDQ3OSwgNzQ0ODMsIDc0NDg4LCA3NDQ5MywgCi0gICAgNzQ0OTcsIDc0NTAyLCA3NDUwNiwgNzQ1MTAsIDc0NTE0LCA3NDUxOCwgNzQ1MjMsIDc0NTI3LCA3NDUzMSwgNzQ1MzUsIAotICAgIDc0NTM5LCA3NDU0MywgNzQ1NDcsIDc0NTUxLCA3NDU1NSwgNzQ1NTksIDc0NTY0LCA3NDU2OSwgNzQ1NzQsIDc0NTc5LCAKLSAgICA3NDU4NCwgNzQ1ODksIDc0NTk0LCA3NDU5OSwgNzQ2MDQsIDc0NjA5LCA3NDYxMywgNzQ2MTcsIDc0NjIxLCA3NDYyNSwgCi0gICAgNzQ2MjksIDc0NjMzLCA3NDYzOCwgNzQ2NDIsIDc0NjQ3LCA3NDY1MSwgNzQ2NTYsIDc0NjYxLCA3NDY2NSwgNzQ2NjksIAotICAgIDc0Njc0LCA3NDY3OCwgNzQ2ODIsIDc0Njg2LCA3NDY5MCwgNzQ2OTQsIDc0Njk4LCA3NDcwMiwgNzQ3MDYsIDc0NzEwLCAKLSAgICA3NDcxNCwgNzQ3MTgsIDc0NzIyLCA3NDcyNiwgNzQ3MzAsIDc0NzM1LCA3NDc0MCwgNzQ3NDQsIDc0NzQ4LCA3NDc1MiwgCi0gICAgNzQ3NTYsIDc0NzYwLCA3NDc2NCwgNzQ3NjksIDc0NzczLCA3NDc3NywgNzQ3ODEsIDc0Nzg1LCA3NDc4OSwgNzQ3OTMsIAotICAgIDc0Nzk4LCA3NDgwMiwgNzQ4MDcsIDc0ODExLCA3NDgxNSwgNzQ4MTksIDc0ODIzLCA3NDgyNywgNzQ4MzEsIDc0ODM1LCAKLSAgICA3NDgzOSwgNzQ4NDMsIDc0ODQ3LCA3NDg1MSwgNzQ4NTYsIDc0ODYwLCA3NDg2NCwgNzQ4NjgsIDc0ODcyLCA3NDg3NiwgCi0gICAgNzQ4ODAsIDc0ODg0LCA3NDg4OCwgNzQ4OTIsIDc0ODk2LCA3NDkwMCwgNzQ5MDUsIDc0OTA5LCA3NDkxMywgNzQ5MTgsIAotICAgIDc0OTIzLCA3NDkyNywgNzQ5MzEsIDc0OTM1LCA3NDkzOSwgNzQ5NDMsIDc0OTQ3LCA3NDk1MSwgNzQ5NTUsIDc0OTYwLCAKLSAgICA3NDk2NCwgNzQ5NjksIDc0OTczLCA3NDk3OCwgNzQ5ODIsIDc0OTg3LCA3NDk5MSwgNzQ5OTcsIDc1MDAyLCA3NTAwNiwgCi0gICAgNzUwMTEsIDc1MDE1LCA3NTAyMCwgNzUwMjQsIDc1MDI5LCA3NTAzMywgNzUwMzgsIDE0ODQsIDc1MDQyLCAyNzc4LCAxNzIyLCAKLSAgICAxNzI3LCA3NTA0NiwgNzUwNTAsIDI3ODIsIDc1MDU0LCAxMzY1LCA3NTA1OSwgMTMzMSwgNzUwNjMsIDI3OTQsIDc1MDY3LCAKLSAgICA3NTA3NCwgNzUwODEsIDc1MDk1LCAyNzk4LCA1NTg5LCA3NTEwNCwgNzUxMTIsIDc1MTE5LCA3NTEzMCwgNzUxMzksIAotICAgIDc1MTQ2LCA3NTE1OCwgNzUxNzEsIDc1MTg0LCA3NTE5NSwgNzUyMDAsIDc1MjA3LCA3NTIxOSwgNzUyMjMsIDM5MTgsIAotICAgIDEwMDgyLCA3NTIzMywgNzUyMzgsIDc1MjQ3LCA3NTI1NywgMjgwMiwgNzUyNjIsIDc1MjY2LCA3NTI3MSwgNzUyNzgsIAotICAgIDc1Mjg0LCA3NTI5MiwgNzUzMDQsIDEzMzYsIDExMzUxLCA3NTMxNCwgNzUzMTgsIDc1MzI0LCA3NTMzOCwgNzUzNTAsIAotICAgIDc1MzYyLCA3NTM3MiwgNzUzODEsIDc1MzkwLCA3NTM5OSwgNzU0MDcsIDc1NDE4LCA3NTQyNiwgMzk2OCwgNzU0MzYsIAotICAgIDc1NDQ1LCA3NTQ1MSwgNzU0NjYsIDc1NDczLCA3NTQ3OSwgMzMxOTcsIDc1NDg0LCAyODI2LCAxMTM1NSwgNzU0ODgsIAotICAgIDc1NDk1LCA3MzM0LCA3NTUwNCwgMjgzMSwgMzAxMDUsIDc1NTEwLCA1NzkyMywgNzU1MTcsIDc1NTIzLCA3NTUzNCwgCi0gICAgNzU1NDAsIDc1NTQ3LCA3NTU1MywgNzU1NjEsIDc1NTY4LCA3NTU3NCwgNzU1ODQsIDc1NTkzLCA3NTYwNCwgNzU2MTEsIAotICAgIDc1NjE3LCA3NTYyNywgNzU2MzUsIDc1NjQxLCA3NTY1NiwgNzU2NjIsIDc1NjY3LCA3NTY3NCwgNzU2NzcsIDc1NjgzLCAKLSAgICA3NTY5MCwgNzU2OTYsIDc1NzA0LCA3NTcxMywgNzU3MjEsIDc1NzI3LCA3NTczNiwgMzg4NDUsIDc1NzUwLCA3NTc1NSwgCi0gICAgMTMwMDcsIDc1NzYxLCA3NTc3NCwgNzU3ODMsIDc1NzkxLCA3NTc5OCwgNzU4MDIsIDc1ODA2LCA3NTgwOSwgNzU4MTYsIAotICAgIDc1ODIzLCA3NTgzMSwgNzU4MzksIDc1ODQ4LCA3NTg1NiwgMTI5NDMsIDc1ODY0LCA3NTg2OSwgNzU4NzMsIDc1ODg1LCAKLSAgICA3NTg5MiwgNzU5MDEsIDc4MCwgNzU5MTEsIDc1OTIwLCA3NTkzMSwgMjg0NywgNzU5MzUsIDc1OTM5LCA3NTk0NSwgNzU5NTgsIAotICAgIDc1OTcwLCA3NTk4MCwgNzU5ODksIDI0MzMxLCA3NjAwMSwgNzYwMDksIDc2MDE4LCA3NjAyOSwgNzYwNDAsIDc2MDUwLCAKLSAgICA3NjA2MCwgNzYwNjksIDc2MDc3LCA5NjU3LCA3NjA4NCwgNzYwODgsIDc2MDkzLCA3NjA5OCwgNzYxMDQsIDEzNDEsIAotICAgIDEwMTUzLCA3NjExMSwgNzYxMjIsIDc2MTMxLCA3NjEzOSwgNzYxNDgsIDc2MTU2LCA3NjE3MiwgNzYxODMsIDc2MTkyLCAKLSAgICA3NjIwMCwgNzYyMTIsIDc2MjIzLCA3NjIzOSwgNzYyNDksIDc2MjcwLCA3NjI4MywgNzYyOTEsIDc2Mjk4LCAxMzExOCwgCi0gICAgNzYzMTEsIDc2MzE2LCA3NjMyMiwgNDM4NiwgNzYzMjgsIDc2MzMxLCA3NjMzOCwgNzYzNDgsIDY2MDcsIDc2MzU1LCAKLSAgICA3NjM2MCwgNzYzNjUsIDc2MzczLCA3NjM4MSwgODEyMywgODEzMiwgNzYzODYsIDc2Mzk3LCA3NjQwMiwgNzY0MDgsIDI4NTUsIAotICAgIDI4NjAsIDc2NDE0LCA5MjI0LCA3NjQyMCwgNzY0MjcsIDc2NDM0LCA3NjQ0NywgMjIwNSwgNTAsIDc2NDUyLCA3NjQ1NywgCi0gICAgNzY0NjcsIDc2NDczLCA3NjQ4MiwgNzY0OTAsIDc2NTAwLCA3NjUwNCwgNzY1MDksIDc2NTEzLCA3NjUyNSwgMjg4MywgCi0gICAgNzY1MzMsIDc2NTQxLCA3NjU0NiwgNzY1NTcsIDc2NTY4LCA3NjU3NywgNzY1ODIsIDc2NTg4LCA3NjU5MywgNzY2MDMsIAotICAgIDc2NjEzLCA3NjYxOCwgNzY2MjQsIDc2NjI5LCA3NjYzOCwgMTk1NjIsIDc2NjQyLCA0MDQ1LCAxMiwgNzY2NDcsIDc2NjU2LCAKLSAgICA3NjY2MywgNzY2NzAsIDc2Njc2LCA3NjY4MiwgODI3LCA3NjY4NywgNzY2OTIsIDU4MjQwLCA3NjY5NywgNzY3MDIsIAotICAgIDc2NzA4LCA3NjcxNiwgNzY3MjEsIDc2NzI4LCA3NjczNCwgNzY3MzksIDM1NTczLCAzODc0MywgNzY3NDUsIDI4ODcsIDMyLCAKLSAgICA3Njc1NSwgNzY3NjgsIDc2NzczLCA3Njc4MSwgNzY3ODYsIDc2NzkyLCAyOTA5LCAyNjIzNCwgNzY3OTcsIDc2ODA1LCAKLSAgICA3NjgxMiwgNzY4MTcsIDU2MDMzLCA1OTIyMSwgNzY4MjYsIDE2NjcsIDE3NzYsIDc2ODMxLCA3NjgzNiwgNzY4NDMsIDE3ODAsIAotICAgIDI0MiwgNzY4NTAsIDc2ODU2LCA3Njg2MSwgNzY4NjgsIDE3ODQsIDc2ODczLCA3Njg3OSwgNzY4ODQsIDc2ODk2LCA0NTk3LCAKLSAgICA3NjkwNiwgMTc5MSwgNzY5MTIsIDc2OTE3LCA3NjkyNCwgNzY5MzEsIDc2OTQ2LCA3Njk1MywgNzY5NjQsIDc2OTcyLCAKLSAgICAyNTcyLCA3Njk3NiwgNzY5ODgsIDc2OTkzLCA3Njk5NywgNzcwMDMsIDI2MDU5LCAyMjEwLCA3NzAwNywgNzcwMTgsIAotICAgIDc3MDIyLCA3NzAyNiwgNzcwMzIsIDc3MDM2LCA3NzA0NSwgNzcwNDksIDc3MDYwLCA3NzA2NCwgMjI1NiwgMjk5NDQsIAotICAgIDc3MDY4LCA3NzA3OCwgMzAxOCwgNzczOCwgNzcwODYsIDc3MDkxLCA3NzA5NSwgNzcxMDQsIDc3MTExLCA3NzExNywgMjk4OCwgCi0gICAgMTUzNDMsIDc3MTIxLCA3NzEzNCwgNzcxNTIsIDc3MTU3LCA3NzE2NSwgNzcxNzMsIDc3MTgzLCAxMTQ1NywgNzcxOTUsIAotICAgIDc3MjA4LCA3NzIxNSwgNzcyMjIsIDc3MjM4LCA3NzI0NSwgNzcyNTEsIDEwMjQsIDc3MjU4LCA3NzI2NSwgNzcyNzUsIAotICAgIDc3Mjg0LCA3NzI5NiwgMzk3MDksIDc3MzA0LCAzMDAyLCAxMDM1MCwgNzczMDcsIDc3MzE1LCA3NzMxOSwgMzAwNiwgCi0gICAgNzczMjMsIDE5MzU4LCAxMDM2NiwgMzY4NCwgNzczMjcsIDMwMTIsIDc3MzMxLCA3NzM0MSwgNzczNDcsIDc3MzUzLCAKLSAgICA3NzM1OSwgNzczNjUsIDc3MzcxLCA3NzM3NywgNzczODMsIDc3Mzg5LCA3NzM5NSwgNzc0MDEsIDc3NDA3LCA3NzQxMywgCi0gICAgNzc0MTksIDc3NDI1LCA3NzQzMSwgNzc0MzcsIDc3NDQzLCA3NzQ0OSwgNzc0NTUsIDc3NDYxLCA3NzQ2NywgNzc0NzMsIAotICAgIDc3NDc5LCA3NzQ4NSwgNzc0OTEsIDc3NDk4LCA3NzUwNSwgNzc1MTEsIDc3NTE3LCA3NzUyMywgNzc1MjksIDc3NTM1LCAKLSAgICA3NzU0MSwgMTM0NiwgMTQyNzAsIDEwMzg4LCA3NzU0NywgNzc1NTIsIDc3NTU3LCA3NzU2MiwgNzc1NjcsIDc3NTcyLCAKLSAgICA3NzU3NywgNzc1ODIsIDc3NTg3LCA3NzU5MiwgNzc1OTcsIDc3NjAyLCA3NzYwNywgNzc2MTIsIDc3NjE3LCA3NzYyMiwgCi0gICAgNzc2MjcsIDc3NjMyLCA3NzYzNywgNzc2NDIsIDc3NjQ3LCA3NzY1MiwgNzc2NTcsIDc3NjYyLCA3NzY2NywgNzc2NzIsIAotICAgIDc3Njc4LCA3NzY4MywgNzc2ODgsIDc3Njk0LCA3NzY5OSwgNzc3MDUsIDc3NzEwLCA3NzcxNSwgNzc3MjEsIDc3NzI2LCAKLSAgICA3NzczMSwgNzc3MzYsIDc3NzQxLCA3Nzc0NiwgNzc3NTEsIDc3NzU2LCA3Nzc2MSwgNzczNDIsIDc3MzQ4LCA3NzM1NCwgCi0gICAgNzczNjAsIDc3MzY2LCA3NzM3MiwgNzczNzgsIDc3Mzg0LCA3NzM5MCwgNzczOTYsIDc3NDAyLCA3NzQwOCwgNzc0MTQsIAotICAgIDc3NDIwLCA3NzQyNiwgNzc3NjcsIDc3NDMyLCA3NzQzOCwgNzc0NDQsIDc3NzczLCA3NzQ1MCwgNzc0NTYsIDc3NDYyLCAKLSAgICA3NzQ2OCwgNzc0NzQsIDc3NDgwLCA3NzQ4NiwgNzc1MDYsIDc3Nzc5LCA3Nzc4NSwgNzc1MTIsIDc3NzkxLCA3NzUxOCwgCi0gICAgNzc1MjQsIDc3NTMwLCA3NzUzNiwgNzc1NDIsIDMwMzMsIDMwMzgsIDc3Nzk3LCA3NzgwMiwgNzc4MDUsIDc3ODExLCAKLSAgICA3NzgxNywgNzc4MjQsIDc3ODI5LCA3NzgzNCwgMjI2MSwgCisgICAgMCwgMCwgNiwgMTAsIDE4LCAyMywgMjcsIDM0LCAzOSwgNDEsIDQ0LCA1MCwgNjIsIDcwLCA4MCwgOTMsIDEwMiwgMTA4LCAKKyAgICAxMTMsIDEyMSwgMTMwLCAxMzUsIDE0MCwgMTQzLCAxNDcsIDE1MywgMTU4LCAxNjMsIDE3MSwgMTc4LCAxODYsIDE5MSwgCisgICAgMTk0LCAyMDAsIDIwOCwgMjE1LCAyMjUsIDIzMCwgMjM3LCAyNDYsIDI0OSwgMjU0LCAyNTcsIDI2MywgMjY3LCAyNzIsIAorICAgIDI4MSwgMjg4LCAyOTUsIDMwMSwgMzEwLCAzMTUsIDMyMSwgMzI3LCAzMzUsIDE0NCwgMzQxLCAzNDksIDM1MCwgMzU4LCAKKyAgICAzNjEsIDM2NywgMzY5LCAzNzUsIDM4MiwgMzg0LCAzOTEsIDM5NSwgNDAzLCA0MTAsIDQxNSwgNDE3LCA0MjIsIDQyOSwgCisgICAgNDMxLCAyOTksIDQzNywgNDM5LCA0NDQsIDQ0OSwgNDUyLCA0NTcsIDQ2MywgNDcwLCA0NzksIDQ4OSwgNDk0LCA0OTgsIAorICAgIDUwNSwgNTE4LCA1MjIsIDUzMSwgNTM4LCA1NDUsIDU0OCwgNTU0LCA1NTgsIDU2MiwgNTcyLCA1ODAsIDU4OCwgNTk2LCAKKyAgICA2MDUsIDYxMywgNjE4LCA2MTksIDYyMywgNjMxLCA2MzgsIDY0OCwgNjU5LCA2NjMsIDY2NiwgNjcwLCA2NzMsIDM0OCwgCisgICAgNjc4LCA2ODcsIDY5MSwgNjk3LCA3MDMsIDcwNSwgNzA4LCA3MTEsIDcxNCwgNzE4LCA3MjIsIDczMSwgNzM5LCA3NDQsIAorICAgIDc0NywgNzUxLCA3NTcsIDc2NCwgNzcxLCA3NzYsIDc4NSwgNzk0LCA4MDEsIDgwNSwgODE4LCA4MjcsIDgzNSwgODQxLCAKKyAgICA1NTcsIDg1MCwgODYwLCA4NjcsIDg3MywgODc5LCA4ODYsIDg5NCwgODk4LCA3NDksIDkwNiwgOTE1LCA1MDMsIDkyMywgCisgICAgOTI4LCA5MzQsIDE3LCA5NDMsIDk0OCwgOTUxLCA5NTUsIDk1OSwgOTY2LCA5NjksIDk3NiwgOTgwLCA5ODgsIDk5MiwgCisgICAgMTAwMCwgMTAwNCwgMTAwNywgMTAxNCwgMTAyMSwgMTkyLCAxMDI0LCAxMDI5LCAxMDM5LCAxMDQ4LCAxMDU1LCAxMDYxLCAKKyAgICAxMDY5LCAxMDcyLCAxMDc3LCAxMDgzLCAxMDkxLCAxMDk3LCAxMTAyLCAxMTA1LCAxMTA4LCAxMTEsIDExMTMsIDExMTcsIAorICAgIDExMjMsIDExMjksIDExMzIsIDExMzgsIDExNDIsIDExNDcsIDExNTMsIDExNTgsIDExNjgsIDExNzIsIDExNzUsIDExNzgsIAorICAgIDExODcsIDExOTEsIDExOTQsIDExOTksIDEyMDQsIDEyMTAsIDEyMTUsIDEyMjAsIDEyMjUsIDEyMjksIDEyMzQsIDEyNDAsIAorICAgIDEyNDUsIDEyNTAsIDEyNTQsIDEyNjAsIDEyNjUsIDEyNzAsIDEyNzUsIDEyNzksIDEyODQsIDEyODksIDEyOTQsIDEzMDAsIAorICAgIDEzMDYsIDEzMTIsIDEzMTcsIDEzMjEsIDEzMjYsIDEzMzEsIDEzMzYsIDEzNDAsIDEzNDUsIDEzNTAsIDEzNTUsIDEzNjAsIAorICAgIDExOTUsIDEyMDAsIDEyMDUsIDEyMTEsIDEyMTYsIDEzNjQsIDEyMjYsIDEzNzAsIDEzNzUsIDEzODAsIDEzODcsIDEzOTEsIAorICAgIDE0MDAsIDEyMzAsIDE0MDQsIDEyMzUsIDEyNDEsIDEyNDYsIDE0MDgsIDE0MTMsIDE0MTgsIDE0MjIsIDE0MjYsIDE0MzIsIAorICAgIDE0MzYsIDEyNTEsIDE0MzksIDEyNjEsIDE0NDQsIDE0NDgsIDEyNjYsIDE0NTQsIDEyNzEsIDE0NTgsIDE0NjIsIDEyNzYsIAorICAgIDE0NjYsIDE0NzEsIDE0NzUsIDE0NzgsIDE0ODIsIDEyODAsIDEyODUsIDE0ODcsIDEyOTAsIDE0OTMsIDE0OTksIDE1MDUsIAorICAgIDE1MTEsIDEyOTUsIDEzMDcsIDEzMTMsIDE1MTUsIDE1MTksIDE1MjMsIDE1MjYsIDEzMTgsIDE1MzAsIDE1MzIsIDE1MzcsIAorICAgIDE1NDIsIDE1NDgsIDE1NTMsIDE1NTgsIDE1NjIsIDE1NjcsIDE1NzIsIDE1NzcsIDE1ODIsIDE1ODgsIDE1OTMsIDE1OTgsIAorICAgIDE2MDQsIDE2MTAsIDE2MTUsIDE2MTksIDE2MjQsIDE2MjksIDE2MzQsIDE2MzksIDE2NDMsIDE2NTEsIDE2NTUsIDE2NjAsIAorICAgIDE2NjUsIDE2NzAsIDE2NzUsIDE2NzksIDE2ODIsIDE2ODcsIDE2OTIsIDE2OTcsIDE3MDIsIDE3MDgsIDE3MTMsIDE3MTcsIAorICAgIDEzMjIsIDE3MjAsIDE3MjUsIDE3MzAsIDEzMjcsIDE3MzQsIDE3MzgsIDE3NDUsIDEzMzIsIDE3NTIsIDEzMzcsIDE3NTYsIAorICAgIDE3NTgsIDE3NjMsIDE3NjksIDEzNDEsIDE3NzQsIDE3ODMsIDEzNDYsIDE3ODgsIDE3OTQsIDEzNTEsIDE3OTksIDE4MDQsIAorICAgIDE4MDcsIDE4MTIsIDE4MTYsIDE4MjAsIDE4MjQsIDE4MjcsIDE4MzEsIDEzNTYsIDEzNjEsIDExNTYsIDE4MzYsIDE4NDIsIAorICAgIDE4NDgsIDE4NTQsIDE4NjAsIDE4NjYsIDE4NzIsIDE4NzgsIDE4ODQsIDE4ODksIDE4OTUsIDE5MDEsIDE5MDcsIDE5MTMsIAorICAgIDE5MTksIDE5MjUsIDE5MzEsIDE5MzcsIDE5NDMsIDE5NDgsIDE5NTMsIDE5NTgsIDE5NjMsIDE5NjgsIDE5NzMsIDE5NzgsIAorICAgIDE5ODMsIDE5ODgsIDE5OTMsIDE5OTksIDIwMDQsIDIwMTAsIDIwMTUsIDIwMjEsIDIwMjcsIDIwMzIsIDIwMzgsIDIwNDQsIAorICAgIDIwNTAsIDIwNTYsIDIwNjEsIDIwNjYsIDIwNjgsIDIwNjksIDIwNzMsIDIwNzcsIDIwODIsIDIwODYsIDIwOTAsIDIwOTQsIAorICAgIDIwOTksIDIxMDMsIDIxMDYsIDIxMTEsIDIxMTUsIDIxMjAsIDIxMjQsIDIxMjgsIDIxMzMsIDIxMzcsIDIxNDAsIDIxNDQsIAorICAgIDIxNTAsIDIxNjQsIDIxNjgsIDIxNzIsIDIxNzYsIDIxNzksIDIxODQsIDIxODgsIDIxOTIsIDIxOTUsIDIxOTksIDIyMDQsIAorICAgIDIyMDksIDIyMTQsIDIyMTksIDIyMjMsIDIyMjcsIDIyMzEsIDIyMzYsIDIyNDAsIDIyNDUsIDIyNDksIDIyNTQsIDIyNjAsIAorICAgIDIyNjcsIDIyNzMsIDIyNzgsIDIyODMsIDIyODgsIDIyOTQsIDIyOTksIDIzMDUsIDIzMTAsIDIzMTMsIDEyMTIsIDIzMTUsIAorICAgIDIzMjIsIDIzMzAsIDIzNDAsIDIzNDksIDIzNjMsIDIzNjcsIDIzNzEsIDIzODQsIDIzOTIsIDIzOTYsIDI0MDEsIDI0MDUsIAorICAgIDI0MDgsIDI0MTIsIDI0MTYsIDI0MjEsIDI0MjYsIDI0MzEsIDI0MzUsIDI0MzgsIDI0NDIsIDI0NDksIDI0NTYsIDI0NjIsIAorICAgIDI0NjcsIDI0NzIsIDI0NzgsIDI0ODQsIDI0ODksIDI0OTIsIDE3NjAsIDI0OTQsIDI1MDAsIDI1MDQsIDI1MDksIDI1MTMsIAorICAgIDI1MTcsIDE3NjUsIDE3NzEsIDI1MjIsIDI1MjYsIDI1MjksIDI1MzQsIDI1MzksIDI1NDQsIDI1NDksIDI1NTMsIDI1NjAsIAorICAgIDI1NjUsIDI1NjgsIDI1NzUsIDI1ODEsIDI1ODUsIDI1ODksIDI1OTMsIDI1OTgsIDI2MDUsIDI2MTAsIDI2MTUsIDI2MjIsIAorICAgIDI2MjgsIDI2MzQsIDI2NDAsIDI2NTQsIDI2NzEsIDI2ODYsIDI3MDEsIDI3MTAsIDI3MTUsIDI3MTksIDI3MjQsIDI3MjksIAorICAgIDI3MzMsIDI3NDUsIDI3NTIsIDI3NTgsIDIyNjMsIDI3NjQsIDI3NzEsIDI3NzcsIDI3ODEsIDI3ODQsIDI3OTEsIDI3OTcsIAorICAgIDI4MDEsIDI4MDUsIDI4MDksIDIwOTEsIDI4MTMsIDI4MTgsIDI4MjMsIDI4MjcsIDI4MzUsIDI4MzksIDI4NDMsIDI4NDcsIAorICAgIDI4NTEsIDI4NTYsIDI4NjEsIDI4NjYsIDI4NzAsIDI4NzUsIDI4ODAsIDI4ODQsIDI4ODksIDI4OTMsIDI4OTYsIDI5MDAsIAorICAgIDI5MDQsIDI5MTIsIDI5MTcsIDI5MjEsIDI5MjUsIDI5MzEsIDI5NDAsIDI5NDQsIDI5NDgsIDI5NTQsIDI5NTksIDI5NjYsIAorICAgIDI5NzAsIDI5ODAsIDI5ODQsIDI5ODgsIDI5OTMsIDI5OTcsIDMwMDIsIDMwMDgsIDMwMTMsIDMwMTcsIDMwMjEsIDMwMjUsIAorICAgIDI0NTIsIDMwMzMsIDMwMzgsIDMwNDQsIDMwNDksIDMwNTMsIDMwNTgsIDMwNjMsIDMwNjcsIDMwNzMsIDMwNzgsIDIwOTUsIAorICAgIDMwODQsIDMwOTAsIDMwOTUsIDMxMDAsIDMxMDUsIDMxMTAsIDMxMTUsIDMxMjAsIDMxMjUsIDMxMzAsIDMxMzUsIDMxNDEsIAorICAgIDMxNDYsIDEyMjcsIDkyLCAzMTUyLCAzMTU2LCAzMTYwLCAzMTY0LCAzMTY5LCAzMTczLCAzMTc3LCAzMTgxLCAzMTg1LCAKKyAgICAzMTkwLCAzMTk0LCAzMTk5LCAzMjAzLCAzMjA2LCAzMjEwLCAzMjE1LCAzMjE5LCAzMjI0LCAzMjI4LCAzMjMyLCAzMjM2LCAKKyAgICAzMjQxLCAzMjQ1LCAzMjQ4LCAzMjYxLCAzMjY1LCAzMjY5LCAzMjczLCAzMjc3LCAzMjgxLCAzMjg0LCAzMjg4LCAzMjkyLCAKKyAgICAzMjk3LCAzMzAxLCAzMzA2LCAzMzExLCAzMzE2LCAzMzIwLCAzMzIzLCAzMzI2LCAzMzMyLCAzMzM2LCAzMzQwLCAzMzQzLCAKKyAgICAzMzQ3LCAzMzUxLCAzMzU0LCAzMzYwLCAzMzY1LCAzMzcwLCAzMzc2LCAzMzgxLCAzMzg2LCAzMzkyLCAzMzk4LCAzNDAzLCAKKyAgICAzNDA4LCAzNDEzLCAxMTE1LCA1NDcsIDM0MTgsIDM0MjEsIDM0MjYsIDM0MzAsIDM0MzMsIDM0MzcsIDM0NDIsIDM0NDcsIAorICAgIDM0NTEsIDM0NTYsIDM0NjAsIDM0NjUsIDM0NjksIDM0NzMsIDM0NzksIDM0ODUsIDM0ODgsIDM0OTEsIDM0OTcsIDM1MDQsIAorICAgIDM1MTEsIDM1MTcsIDM1MjQsIDM1MjksIDM1MzMsIDM1NDAsIDM1NDcsIDM1NTIsIDM1NTYsIDM1NjYsIDM1NzAsIDM1NzQsIAorICAgIDM1NzksIDM1ODQsIDM1OTQsIDIxMDcsIDM1OTksIDM2MDMsIDM2MDYsIDM2MTIsIDM2MTcsIDM2MjMsIDM2MjksIDM2MzQsIAorICAgIDM2NDEsIDM2NDUsIDM2NDksIDYyMCwgNjcxLCAxMzg4LCAzNjUzLCAzNjYwLCAzNjY3LCAzNjc0LCAzNjgxLCAzNjg3LCAKKyAgICAzNjkzLCAzNjk4LCAzNzAyLCAzNzA4LCAzNzEzLCAzNzE3LCAyMTE2LCAzNzIxLCAzNzI5LCA2MDAsIDM3MzUsIDM3NDYsIAorICAgIDM3NTAsIDM3NjAsIDIxMjEsIDM3NjYsIDM3NzEsIDM3ODYsIDM3OTIsIDM3OTksIDM4MDksIDM4MTUsIDM4MjAsIDM4MjYsIAorICAgIDM4MzIsIDM4MzUsIDM4MzksIDM4NDQsIDM4NTEsIDM4NTYsIDM4NjAsIDM4NjQsIDM4NjgsIDM4NzIsIDM4NzcsIDM4ODMsIAorICAgIDM4OTQsIDMyMTEsIDM4OTksIDM5MTEsIDM5MTksIDM5MjQsIDE1NjQsIDM5MzEsIDM5MzQsIDM5MzcsIDM5NDEsIDM5NDQsIAorICAgIDM5NTAsIDM5NTQsIDM5NjgsIDM5NzIsIDM5NzUsIDM5NzksIDM5ODUsIDM5OTEsIDM5OTYsIDQwMDAsIDQwMDQsIDQwMTAsIAorICAgIDQwMjEsIDQwMjcsIDQwMzIsIDQwMzgsIDQwNDIsIDQwNTAsIDQwNjAsIDQwNjYsIDQwNzEsIDQwODAsIDQwODgsIDQwOTUsIAorICAgIDQwOTksIDQxMDUsIDQxMTQsIDQxMjMsIDQxMjcsIDQxMzIsIDQxMzcsIDQxNDEsIDQxNDksIDQxNTMsIDQxNTgsIDQxNjIsIAorICAgIDIxMjksIDE0MDEsIDQxNjgsIDQxNzMsIDQxNzksIDQxODQsIDQxODksIDQxOTQsIDQxOTksIDQyMDQsIDQyMDksIDQyMTUsIAorICAgIDQyMjAsIDQyMjYsIDQyMzEsIDQyMzYsIDQyNDEsIDQyNDcsIDQyNTIsIDQyNTcsIDQyNjIsIDQyNjcsIDQyNzMsIDQyNzgsIAorICAgIDQyODQsIDQyODksIDQyOTQsIDQyOTksIDQzMDQsIDQzMDksIDQzMTQsIDQzMjAsIDQzMjUsIDQzMzAsIDMxOSwgNDU2LCAKKyAgICA0MzM1LCA0MzQxLCA0MzQ1LCA0MzQ5LCA0MzU0LCA0MzU4LCA0MzYyLCA0MzY1LCA0MzY5LCA0MzczLCA0Mzc3LCA0MzgxLCAKKyAgICA0Mzg2LCA0MzkwLCA0Mzk0LCA0NDAwLCA0MTY1LCA0NDA1LCA0NDA5LCA0NDEyLCA0NDE3LCA0NDIyLCA0NDI3LCA0NDMyLCAKKyAgICA0NDM3LCA0NDQyLCA0NDQ3LCA0NDUyLCA0NDU3LCA0NDYyLCA0NDY2LCA0NDcxLCA0NDc2LCA0NDgxLCA0NDg2LCA0NDkxLCAKKyAgICA0NDk2LCA0NTAxLCA0NTA2LCA0NTExLCA0NTE2LCA0NTIwLCA0NTI1LCA0NTMwLCA0NTM1LCA0NTQwLCA0NTQ1LCA0NTUwLCAKKyAgICA0NTU1LCA0NTYwLCA0NTY1LCA0NTcwLCA0NTc0LCA0NTc5LCA0NTg0LCA0NTg5LCA0NTk0LCA0NTk5LCA0NjA0LCA0NjA5LCAKKyAgICA0NjE0LCA0NjE5LCA0NjI0LCA0NjI4LCA0NjMzLCA0NjM4LCA0NjQzLCA0NjQ4LCA0NjUzLCA0NjU4LCA0NjYzLCA0NjY4LCAKKyAgICA0NjczLCA0Njc4LCA0NjgyLCA0Njg3LCA0NjkyLCA0Njk3LCA0NzAyLCA0NzA3LCA0NzEyLCA0NzE3LCA0NzIyLCA0NzI3LCAKKyAgICA0NzMyLCA0NzM2LCA0NzQxLCA0NzQ2LCA0NzUxLCA0NzU2LCA0NzYxLCA0NzY2LCA0NzcxLCA0Nzc2LCA0NzgxLCA0Nzg2LCAKKyAgICA0NzkwLCA0Nzk1LCA0ODAwLCA0ODA1LCA0ODEwLCA0ODE2LCA0ODIyLCA0ODI4LCA0ODM0LCA0ODQwLCA0ODQ2LCA0ODUyLCAKKyAgICA0ODU3LCA0ODYzLCA0ODY5LCA0ODc1LCA0ODgxLCA0ODg3LCA0ODkzLCA0ODk5LCA0OTA1LCA0OTExLCA0OTE3LCA0OTIyLCAKKyAgICA0OTI4LCA0OTM0LCA0OTQwLCA0OTQ2LCA0OTUyLCA0OTU4LCA0OTY0LCA0OTcwLCA0OTc2LCA0OTgyLCA0OTg3LCA0OTkzLCAKKyAgICA0OTk5LCA1MDA1LCA1MDExLCA1MDE3LCA1MDIzLCA1MDI5LCA1MDM1LCA1MDQxLCA1MDQ3LCA1MDUyLCA1MDU4LCA1MDY0LCAKKyAgICA1MDcwLCA1MDc2LCA1MDgyLCA1MDg4LCA1MDk0LCA1MTAwLCA1MTA2LCA1MTEyLCA1MTE3LCA1MTIzLCA1MTI5LCA1MTM1LCAKKyAgICA1MTQxLCA1MTQ3LCA1MTUzLCA1MTU5LCA1MTY1LCA1MTcxLCA1MTc3LCA1MTgyLCA1MTg2LCA1MTkyLCA1MTk4LCA1MjA0LCAKKyAgICA1MjEwLCA1MjE2LCA1MjIyLCA1MjI4LCA1MjM0LCA1MjQwLCA1MjQ2LCA1MjUxLCA1MjU3LCA1MjYzLCA1MjY5LCA1Mjc1LCAKKyAgICA1MjgxLCA1Mjg3LCA1MjkzLCA1Mjk5LCA1MzA1LCA1MzExLCA1MzE2LCA1MzIyLCA1MzI4LCA1MzM0LCA1MzQwLCA1MzQ2LCAKKyAgICA1MzUyLCA1MzU4LCA1MzY0LCA1MzcwLCA1Mzc2LCA1MzgxLCA1Mzg3LCA1MzkzLCA1Mzk5LCA1NDA1LCA1NDExLCA1NDE3LCAKKyAgICA1NDIzLCA1NDI5LCA1NDM1LCA1NDQxLCA1NDQ2LCA1NDUyLCA1NDU4LCA1NDY0LCA1NDcwLCA1NDc2LCA1NDgyLCA1NDg4LCAKKyAgICA1NDk0LCA1NTAwLCA1NTA2LCA1NTExLCA1NTE3LCA1NTIzLCA1NTI5LCA1NTM1LCA1NTQxLCA1NTQ3LCA1NTUzLCA1NTU5LCAKKyAgICA1NTY1LCA1NTcxLCA1NTc2LCA1NTgyLCA1NTg4LCA1NTk0LCA1NjAwLCA1NjA2LCA1NjEyLCA1NjE4LCA1NjI0LCA1NjMwLCAKKyAgICA1NjM2LCA1NjQxLCA1NjQ3LCA1NjUzLCA1NjU5LCA1NjY1LCA1NjcxLCA1Njc3LCA1NjgzLCA1Njg5LCA1Njk1LCA1NzAxLCAKKyAgICA1NzA2LCA1NzEyLCA1NzE4LCA1NzI0LCA1NzMwLCA1NzM2LCA1NzQyLCA1NzQ4LCA1NzU0LCA1NzYwLCA1NzY2LCA1NzcxLCAKKyAgICA1Nzc3LCA1NzgzLCA1Nzg5LCA1Nzk1LCA1ODAxLCA1ODA3LCA1ODEzLCA1ODE5LCA1ODI1LCA1ODMxLCA1ODM2LCA1ODQwLCAKKyAgICA1ODQzLCA1ODUwLCA1ODU0LCA1ODY3LCA1ODcxLCA1ODc1LCA1ODc5LCA1ODgzLCA1ODg3LCA1ODkxLCA1ODk3LCA1OTA0LCAKKyAgICA1OTEyLCA1OTE2LCA1OTI0LCA1OTMzLCA1OTM5LCA1OTUxLCA1OTU2LCA1OTU5LCA1OTYzLCA1OTczLCA1OTgxLCA1OTg5LCAKKyAgICA1OTk1LCA1OTk5LCA2MDA5LCA2MDE5LCA2MDI3LCA2MDM0LCA2MDQxLCA2MDQ3LCA2MDUzLCA2MDYwLCA2MDY0LCA2MDcxLCAKKyAgICA2MDgxLCA2MDkxLCA2MDk5LCA2MTA2LCA2MTExLCA2MTE1LCA2MTIzLCA2MTI3LCA2MTMyLCA2MTM5LCA2MTQ3LCA2MTUyLCAKKyAgICA2MTU3LCA2MTYxLCA2MTY4LCA2MTczLCA2MTg3LCA2MTkyLCA2MTk3LCA2MjA0LCA2MjEzLCA2MjE2LCA2MjIwLCA2MjI0LCAKKyAgICA2MjI4LCA2MjMxLCA2MjM2LCA2MjQxLCA2MjUwLCA2MjU2LCA2MjYyLCA2MjY4LCA2MjcyLCA2MjgzLCA2MjkzLCA2MzA4LCAKKyAgICA2MzIzLCA2MzM4LCA2MzUzLCA2MzY4LCA2MzgzLCA2Mzk4LCA2NDEzLCA2NDI4LCA2NDQzLCA2NDU4LCA2NDczLCA2NDg4LCAKKyAgICA2NTAzLCA2NTE4LCA2NTMzLCA2NTQ4LCA2NTYzLCA2NTc4LCA2NTkzLCA2NjA4LCA2NjIzLCA2NjM4LCA2NjUzLCA2NjY4LCAKKyAgICA2NjgzLCA2Njk4LCA2NzEzLCA2NzI4LCA2NzQzLCA2NzU4LCA2NzczLCA2Nzg4LCA2ODAzLCA2ODE4LCA2ODMzLCA2ODQ4LCAKKyAgICA2ODYzLCA2ODc4LCA2ODkzLCA2OTA4LCA2OTIzLCA2OTM4LCA2OTUzLCA2OTY4LCA2OTgzLCA2OTk4LCA3MDEzLCA3MDI4LCAKKyAgICA3MDM3LCA3MDQ2LCA3MDUxLCA3MDU3LCA3MDY3LCA3MDcxLCA3MDc2LCA3MDgxLCA3MDg5LCA3MDkzLCA3MDk2LCA3MTAwLCAKKyAgICAyOTc1LCA3MTAzLCA3MTA4LCAyOTgsIDQ0MiwgNzExNCwgNzEyMiwgNzEyNiwgNzEzMCwgNzEzMywgNzEzNywgNzE0MywgCisgICAgNzE0NywgNzE1NSwgNzE2MSwgNzE2NiwgNzE3MywgNzE4MCwgNzE4NiwgNzE5MSwgNzE5OCwgNzIwNCwgNzIxMiwgNzIxNiwgCisgICAgNzIyMSwgNzIzMywgNzI0NCwgNzI1MSwgNzI1NSwgNzI1OSwgNzI2NSwgMzIzMywgNzI2OSwgNzI3NSwgNzI4MCwgNzI4NSwgCisgICAgNzI5MCwgNzI5NiwgNzMwMSwgNzMwNiwgNzMxMSwgNzMxNiwgNzMyMiwgNzMyNywgNzMzMiwgNzMzOCwgNzM0MywgNzM0OSwgCisgICAgNzM1NCwgNzM2MCwgNzM2NSwgNzM3MSwgNzM3NiwgNzM4MSwgNzM4NiwgNzM5MSwgNzM5NiwgNzQwMiwgNzQwNywgNzQxMiwgCisgICAgNzQxNywgNzQyMywgNzQyOSwgNzQzNSwgNzQ0MSwgNzQ0NywgNzQ1MywgNzQ1OSwgNzQ2NSwgNzQ3MSwgNzQ3NywgNzQ4MywgCisgICAgNzQ4OSwgNzQ5NCwgNzQ5OSwgNzUwNCwgNzUwOSwgNzUxNCwgNzUxOSwgNzUyNCwgNzUyOSwgNzUzNSwgNzU0MSwgNzU0NiwgCisgICAgNzU1MiwgNzU1OCwgNzU2NCwgNzU2OSwgNzU3NCwgNzU3OSwgNzU4NCwgNzU5MCwgNzU5NiwgNzYwMSwgNzYwNiwgNzYxMSwgCisgICAgNzYxNiwgNzYyMSwgNzYyNywgNzYzMiwgNzYzOCwgNzY0NCwgNzY1MCwgNzY1NiwgNzY2MiwgNzY2OCwgNzY3NCwgNzY4MCwgCisgICAgNzY4NiwgMjEzOCwgNzEzMiwgNzY5MSwgNzY5NSwgNzY5OSwgNzcwMiwgNzcwOSwgNzcxMiwgNzcyMCwgNzcyNSwgNzczMCwgCisgICAgNzcyMSwgNzczNSwgMjE2NSwgNzczOSwgNzc0NSwgNzc1MSwgNzc1NiwgNzc2MSwgNzc2OCwgNzc3NiwgNzc4MSwgNzc4NSwgCisgICAgNzc4OCwgNzc5MiwgNzc5OCwgNzgwNCwgNzgwOCwgMjE3MywgNTYwLCA3ODExLCA3ODE1LCA3ODIwLCA3ODI2LCA3ODMxLCAKKyAgICA3ODM1LCA3ODM4LCA3ODQyLCA3ODQ4LCA3ODUzLCA3ODU3LCA3ODY0LCA3ODY4LCA3ODcyLCA3ODc2LCA5NDUsIDc2OSwgCisgICAgNzg3OSwgNzg4NywgNzg5NCwgNzkwMSwgNzkwNywgNzkxNCwgNzkyMiwgNzkyOSwgNzkzNiwgNzk0MSwgNzk1MywgMTI0NywgCisgICAgMTQwOSwgMTQxNCwgNzk2NCwgMTQxOSwgNzk2OCwgNzk3MiwgNzk4MSwgNzk4OSwgNzk5OCwgODAwNCwgODAwOSwgODAxMywgCisgICAgODAxOSwgODAyNCwgMjcwNiwgODAzMSwgODAzNSwgODA0NCwgODA1MywgODA2MiwgODA3MSwgODA3NiwgODA4MSwgODA5MywgCisgICAgODA5OCwgODEwNiwgMjIyNCwgODExMCwgODExMiwgODExNywgODEyMSwgODEzMCwgODEzOCwgMTQyMywgMTMzLCAzNDYxLCAKKyAgICAzNDY2LCA4MTQ0LCA4MTQ4LCA4MTU3LCA4MTYzLCA4MTY4LCA4MTcxLCA4MTgwLCAyNjk4LCA4MTg2LCA4MTk0LCA4MTk4LCAKKyAgICA4MjAyLCA4MjA2LCAyMjM3LCA4MjEwLCA4MjE1LCA4MjIyLCA4MjI4LCA4MjM0LCA4MjM3LCA4MjM5LCA4MjQyLCA4MjUwLCAKKyAgICA4MjU4LCA4MjY2LCA4MjY5LCA4Mjc0LCAyMjUwLCA4Mjc5LCA3NzMyLCA4MjgyLCA4Mjg0LCA4Mjg5LCA4Mjk0LCA4Mjk5LCAKKyAgICA4MzA0LCA4MzA5LCA4MzE0LCA4MzE5LCA4MzI0LCA4MzI5LCA4MzM0LCA4MzQwLCA4MzQ1LCA4MzUwLCA4MzU1LCA4MzYxLCAKKyAgICA4MzY2LCA4MzcxLCA4Mzc2LCA4MzgxLCA4Mzg2LCA4MzkxLCA4Mzk3LCA4NDAyLCA4NDA3LCA4NDEyLCA4NDE3LCA4NDIyLCAKKyAgICA4NDI3LCA4NDMyLCA4NDM3LCA4NDQyLCA4NDQ3LCA4NDUyLCA4NDU3LCA4NDYyLCA4NDY3LCA4NDcyLCA4NDc3LCA4NDgyLCAKKyAgICA4NDg4LCA4NDk0LCA4NDk5LCA4NTA0LCA4NTA5LCA4NTE0LCA4NTE5LCAyMjYxLCAyMjY4LCAyMjc0LCA4NTI0LCA4NTMwLCAKKyAgICA4NTM4LCAyMzAwLCAyMzA2LCA4NTQ2LCA4NTUwLCA4NTU1LCA4NTU5LCA4NTYzLCA4NTY3LCA4NTcyLCA4NTc2LCA4NTgxLCAKKyAgICA4NTg1LCA4NTg4LCA4NTkxLCA4NTk3LCA4NjAzLCA4NjA5LCA4NjE1LCA4NjIxLCA4NjI3LCA4NjMzLCA4NjM3LCA4NjQxLCAKKyAgICA4NjQ1LCA4NjQ5LCA4NjUzLCA4NjU4LCA4NjY1LCA4Njc2LCA4Njg0LCA4Njk0LCA4NzAwLCA4NzA3LCA4NzEyLCA4NzE2LCAKKyAgICA4NzI3LCA4NzQwLCA4NzUxLCA4NzY0LCA4Nzc1LCA4Nzg3LCA4Nzk5LCA4ODExLCA4ODI0LCA4ODM3LCA4ODQ0LCA4ODUwLCAKKyAgICA4ODY0LCA4ODcxLCA4ODc3LCA4ODgxLCA4ODg2LCA4ODkwLCA4ODk3LCA4OTA1LCA4OTA5LCA4OTE1LCA4OTE5LCA4OTI1LCAKKyAgICA4OTM1LCA4OTM5LCA4OTQ0LCA4OTQ5LCA4OTU2LCA4OTYyLCA4OTcyLCA3OTA5LCA4OTc4LCA4OTgyLCA4OTg5LCA3NjgsIAorICAgIDg5OTMsIDg5OTcsIDkwMDIsIDkwMDcsIDkwMTIsIDkwMTYsIDkwMjIsIDkwMzAsIDkwMzYsIDkwNDAsIDkwNDYsIDkwNTYsIAorICAgIDkwNjAsIDkwNjYsIDkwNzEsIDkwNzUsIDkwODEsIDkwODcsIDIxNjEsIDkwOTIsIDkwOTQsIDkwOTksIDkxMDcsIDkxMTYsIAorICAgIDkxMjAsIDkxMjYsIDkxMzEsIDkxMzYsIDkxNDEsIDkxNDYsIDkxNTIsIDkxNTcsIDkxNjIsIDQwMDYsIDkxNjcsIDkxNzIsIAorICAgIDkxNzYsIDkxODIsIDkxODcsIDkxOTMsIDkxOTgsIDkyMDMsIDkyMDksIDkyMTQsIDkxMjEsIDkyMjAsIDkyMjQsIDkyMzEsIAorICAgIDkyMzcsIDkyNDIsIDkyNDYsIDYxODMsIDkyNTEsIDkyNjAsIDkyNjUsIDkyNzAsIDgyMTgsIDgyMjUsIDkyNzUsIDI4NTMsIAorICAgIDkyNzksIDkyODQsIDkyODksIDkxMzIsIDkyOTMsIDkyOTgsIDkxMzcsIDkxNDIsIDkzMDMsIDkzMTAsIDkzMTcsIDkzMjMsIAorICAgIDkzMjksIDkzMzUsIDkzNDAsIDkzNDUsIDkzNTAsIDkxNDcsIDkxNTMsIDkzNTYsIDkzNjIsIDkzNjcsIDkzNzUsIDkxNTgsIAorICAgIDkzODAsIDk5MCwgOTM4MywgOTM5MSwgOTM5NywgOTQwMywgOTQxMiwgOTQyMCwgOTQyNSwgOTQzMSwgOTQzOSwgOTQ0NiwgCisgICAgOTQ2MSwgOTQ3OCwgOTQ5NywgOTUwNiwgOTUxNCwgOTUyOSwgOTU0MCwgOTU1MCwgOTU2MCwgOTU2OCwgOTU3NCwgOTU4NiwgCisgICAgOTU5NSwgOTYwMywgOTYxMCwgOTYxNywgOTYyMywgOTYyOCwgOTYzNiwgOTY0NiwgOTY1MywgOTY2MywgOTY3MywgOTY4MywgCisgICAgOTY5MSwgOTY5OCwgOTcwNywgOTcxNywgOTczMSwgOTc0NiwgOTc1NSwgOTc2MywgOTc2OCwgOTc3MiwgOTc4MSwgOTc4NywgCisgICAgOTc5MiwgOTgwMiwgOTgxMiwgOTgyMiwgOTgyNywgOTgzMSwgOTg0MCwgOTg0NSwgOTg1NSwgOTg2NiwgOTg3OSwgOTg4NywgCisgICAgOTkwMCwgOTkxMiwgOTkyMCwgOTkyNSwgOTkyOSwgOTkzNSwgOTk0MCwgOTk0OCwgOTk1NiwgOTk2MywgOTk2OCwgOTk3NiwgCisgICAgOTk4MiwgOTk4NSwgOTk4OSwgOTk5NSwgMTAwMDMsIDEwMDA4LCAxMDAxMiwgMTAwMjAsIDEwMDI5LCAxMDAzNywgMTAwNDMsIAorICAgIDEwMDQ3LCAxMDA1NCwgMTAwNjUsIDEwMDY5LCAxMDA3MiwgMTAwNzgsIDkxNjMsIDEwMDgzLCAxMDA4OSwgMTAwOTYsIAorICAgIDEwMTAyLCAxMDEwNywgMTAxMTQsIDEwMTIxLCAxMDEyOCwgMTAxMzUsIDEwMTQyLCAxMDE0OSwgMTAxNTYsIDEwMTYzLCAKKyAgICAxMDE2OCwgOTQ3NCwgMTAxNzMsIDEwMTc5LCAxMDE4NiwgMTAxOTMsIDEwMTk4LCAxMDIwNSwgMTAyMTQsIDEwMjE4LCAKKyAgICAxMDIzMCwgODI1NiwgMTAyMzQsIDEwMjM3LCAxMDI0MSwgMTAyNDUsIDEwMjQ5LCAxMDI1MywgMTAyNTksIDEwMjY1LCAKKyAgICAxMDI3MCwgMTAyNzYsIDEwMjgxLCAxMDI4NiwgMTAyOTIsIDEwMjk3LCAxMDMwMiwgODk1MiwgMTAzMDcsIDEwMzExLCAKKyAgICAxMDMxNSwgMTAzMTksIDEwMzI0LCAxMDMyOSwgMTAzMzcsIDEwMzQzLCAxMDM0NywgMTAzNTEsIDEwMzU4LCAxMDM2MywgCisgICAgMTAzNzEsIDEwMzc2LCAxMDM4MCwgMTAzODMsIDEwMzg5LCAxMDM5NiwgMTA0MDAsIDEwNDAzLCAxMDQwOCwgMTA0MTIsIAorICAgIDQwNDUsIDEwNDE4LCAxMDQyNywgMzYsIDEwNDM1LCAxMDQ0MSwgMTA0NDYsIDg5NjcsIDEwNDUxLCAxMDQ1NiwgMTA0NjAsIAorICAgIDEwNDYzLCAxMDQ3OCwgMTA0OTcsIDEwNTA5LCAxMDUyMiwgMTA1MzUsIDEwNTQ4LCAxMDU2MiwgMTA1NzUsIDEwNTkwLCAKKyAgICAxMDU5NywgOTE2OCwgMTA2MDMsIDEwNjE3LCAxMDYyMiwgMTA2MjgsIDEwNjMzLCAxMDY0MSwgMTA2NDYsIDgwNDAsIAorICAgIDEwNjUxLCAxMDY1NCwgMTA2NjEsIDEwNjY2LCAxMDY3MCwgMjg1OCwgOTk4LCAxMDY3NiwgMTA2ODAsIDEwNjg2LCAxMDY5MiwgCisgICAgMTA2OTcsIDEwNzAzLCAxMDcwOCwgOTE3NywgMTA3MTQsIDEwNzIwLCAxMDcyNSwgMTA3MzAsIDEwNzM4LCAxMDc0NCwgCisgICAgMTA3NTcsIDEwNzY1LCAxMDc3MiwgOTE4MywgMTA3NzgsIDEwNzg2LCAxMDc5NCwgMTA4MDEsIDEwODE0LCAxMDgyNiwgCisgICAgMTA4MzYsIDEwODQ0LCAxMDg1MSwgMTA4NTgsIDEwODY3LCAxMDg3NiwgMTA4ODQsIDEwODkxLCAxMDg5NiwgMTA5MDIsIAorICAgIDkxODgsIDEwOTA3LCAxMDkxMywgOTE5NCwgMTA5MTgsIDEwOTIxLCAxMDkyOCwgMTA5MzQsIDEwOTQ3LCA4NjY5LCAxMDk1OCwgCisgICAgMTA5NjQsIDEwOTczLCAxMDk4MSwgMTA5ODgsIDEwOTk0LCAxMTAwMCwgMTEwMDUsIDExMDA5LCAxMTAxNCwgMTA0NzAsIAorICAgIDExMDIwLCA5MTk5LCAxMTAyNywgMTEwMzIsIDExMDM5LCAxMTA0NSwgMTEwNTEsIDExMDU2LCAxMTA2NCwgMTEwNzIsIAorICAgIDExMDc5LCAxMTA4MywgMTEwOTcsIDExMTA3LCAxMTExMiwgMTExMTYsIDExMTI3LCAxMTEzMywgMTExMzgsIDExMTQzLCAKKyAgICA5MjA0LCA5MjEwLCAxMTE0NywgMTExNTAsIDExMTU1LCAxMTE2NywgMTExNzQsIDExMTc5LCAxMTE4MywgMTExODgsIAorICAgIDExMTkyLCAxMTE5OSwgMTEyMDUsIDkyMTUsIDkxMjIsIDExMjEyLCAyODYzLCA4LCAxMTIxOSwgMTEyMjQsIDExMjI4LCAKKyAgICAxMTIzNCwgMTEyNDIsIDExMjUyLCAxMTI1NywgMTEyNjIsIDExMjY5LCAxMTI3NiwgMTEyODAsIDExMjkxLCAxMTMwMSwgCisgICAgMTEzMTAsIDExMzIyLCAxMTMyNywgMTEzMzEsIDExMzM5LCAxMTM1MywgMTEzNTcsIDExMzYwLCAxMTM2OCwgMTEzNzUsIAorICAgIDExMzgzLCAxMTM4NywgMTEzOTgsIDExNDAyLCAxMTQwOSwgMTE0MTQsIDExNDE4LCAxMTQyNCwgMTE0MjksIDExNDMzLCAKKyAgICAxMTQzOSwgMTE0NDQsIDExNDU1LCAxMTQ1OSwgMTE0NjIsIDExNDY4LCAxMTQ3MywgMTE0NzksIDExNDg1LCAxMTQ5MiwgCisgICAgMTE1MDMsIDExNTEzLCAxMTUyMywgMTE1MzIsIDExNTM5LCAxMTU0OCwgOTIyNSwgOTIzMiwgOTIzOCwgOTI0MywgMTE1NTQsIAorICAgIDExNTYwLCA5MjQ3LCAxMTU2NiwgMTE1NjksIDExNTc2LCAxMTU4MSwgMTE1OTYsIDExNjEyLCAxMTYyNywgMTE2MzUsIAorICAgIDExNjQxLCAxMTY0NiwgODM4LCA0MjAsIDExNjUxLCAxMTY1OSwgMTE2NjYsIDExNjcyLCAxMTY3NywgMTE2ODIsIDkyNTIsIAorICAgIDExNjg0LCAxMTY4OCwgMTE2OTMsIDExNjk3LCAxMTcwNywgMTE3MTIsIDExNzE2LCAxMTcyNSwgMTE3MjksIDExNzMyLCAKKyAgICA5MjYxLCAxMTczOSwgMTE3NDIsIDExNzUwLCAxMTc1NywgMTE3NjUsIDExNzY5LCAxMTc3NiwgMTE3ODUsIDExNzg4LCAKKyAgICAxMTc5MiwgMTE3OTYsIDExODAyLCAxMTgwNiwgMTE4MTAsIDExODE0LCAxMTgyMCwgMTE4MzAsIDExODM0LCAxMTg0MiwgCisgICAgMTE4NDYsIDExODUzLCAxMTg1NywgMTE4NjIsIDExODY2LCAxMTg3MywgMTE4NzksIDExODg3LCAxMTg5MywgMTE4OTgsIAorICAgIDExOTA4LCAxMTkxMywgMTE5MTgsIDExOTIyLCAxMTkzMCwgMzkwNSwgMTE5MzgsIDExOTQzLCA5MjY2LCAxMTk0NywgCisgICAgMTE5NTEsIDExOTU0LCAxMTk2MiwgMTE5NjksIDExOTczLCA1OTkxLCAxMTk3NywgMTE5ODIsIDExOTg2LCAxMTk5NywgCisgICAgMTIwMDcsIDEyMDEyLCAxMjAxOCwgMTIwMjIsIDEyMDI1LCAxMjAzMywgMTIwMzgsIDEyMDQzLCAxMjA1MCwgMTIwNTUsIAorICAgIDkyNzEsIDEyMDYwLCAxMjA2NCwgMTIwNzEsIDE3MjIsIDYxNDUsIDEyMDc2LCAxMjA4MSwgMTIwODYsIDEyMDkxLCAxMjA5NywgCisgICAgMTIxMDIsIDEyMTA4LCAxMjExMywgMTIxMTgsIDEyMTIzLCAxMjEyOCwgMTIxMzMsIDEyMTM4LCAxMjE0MywgMTIxNDgsIAorICAgIDEyMTUzLCAxMjE1OCwgMTIxNjMsIDEyMTY4LCAxMjE3MywgMTIxNzgsIDEyMTgzLCAxMjE4OCwgMTIxOTQsIDEyMTk5LCAKKyAgICAxMjIwNCwgMTIyMDksIDEyMjE0LCAxMjIxOSwgMTIyMjUsIDEyMjMwLCAxMjIzNSwgMTIyNDEsIDEyMjQ2LCAxMjI1MiwgCisgICAgMTIyNTcsIDEyMjYzLCAxMjI2OCwgMTIyNzMsIDEyMjc4LCAxMjI4MywgMTIyODksIDEyMjk0LCAxMjI5OSwgMTIzMDQsIAorICAgIDczNywgMTM5LCAxMjMxMiwgMTIzMTYsIDEyMzIxLCAxMjMyNiwgMTIzMzAsIDEyMzM0LCAxMjMzOCwgMTIzNDMsIDEyMzQ3LCAKKyAgICAxMjM1MiwgMTIzNTYsIDEyMzU5LCAxMjM2MywgMTIzNjcsIDEyMzczLCAxMjM3OCwgMTIzODgsIDEyMzk0LCAxMjQwMiwgCisgICAgMTI0MDYsIDEyNDEwLCAxMjQxNywgMTI0MjUsIDEyNDM0LCAxMjQ0NSwgMTI0NTIsIDEyNDU5LCAxMjQ2MywgMTI0NzIsIAorICAgIDEyNDgxLCAxMjQ4OSwgMTI0OTgsIDEyNTA3LCAxMjUxNiwgMTI1MjUsIDEyNTM1LCAxMjU0NSwgMTI1NTUsIDEyNTY1LCAKKyAgICAxMjU3NSwgMTI1ODQsIDEyNTk0LCAxMjYwNCwgMTI2MTQsIDEyNjI0LCAxMjYzNCwgMTI2NDQsIDEyNjU0LCAxMjY2MywgCisgICAgMTI2NzMsIDEyNjgzLCAxMjY5MywgMTI3MDMsIDEyNzEzLCAxMjcyMywgMTI3MzIsIDEyNzQyLCAxMjc1MiwgMTI3NjIsIAorICAgIDEyNzcyLCAxMjc4MiwgMTI3OTIsIDEyODAyLCAxMjgxMiwgMTI4MjIsIDEyODMxLCAxMjg0MSwgMTI4NTEsIDEyODYxLCAKKyAgICAxMjg3MSwgMTI4ODEsIDEyODkxLCAxMjkwMSwgMTI5MTEsIDEyOTIxLCAxMjkzMSwgMTI5NDAsIDEyNTYsIDEyOTQ2LCAKKyAgICAxMjk0OSwgMTI5NTMsIDEyOTU4LCAxMjk2NSwgMTI5NzEsIDEyOTc2LCAxMjk4MCwgMTI5ODUsIDEyOTk0LCAxMzAwMiwgCisgICAgMTMwMDcsIDEzMDExLCAxMzAxNSwgMTMwMjEsIDEzMDI2LCAxMzAzMiwgOTI4MCwgMTMwMzcsIDEzMDQyLCAxMzA1MSwgCisgICAgOTI4NSwgMTMwNTYsIDEzMDU5LCAxMzA2NSwgMTMwNzMsIDkyOTAsIDEzMDgwLCAxMzA4NCwgMTMwODgsIDEzMDkyLCAKKyAgICAxMzEwMiwgMTMxMDgsIDEzMTE0LCAxMzExOSwgMTMxMjgsIDEzMTM2LCAxMzE0MywgMTMxNTAsIDEzMTU1LCAxMzE2MiwgCisgICAgMTMxNjcsIDEzMTcxLCAxMzE3NCwgMTMxODUsIDEzMTk1LCAxMzIwNCwgMTMyMTIsIDEzMjIzLCAxMzIzNSwgMTMyNDUsIAorICAgIDEzMjUwLCAxMzI1NCwgMTMyNTksIDEzMjY0LCAxMzI2OCwgMTMyNzQsIDEzMjgyLCAxMzI4OSwgMTMzMDAsIDEzMzA1LCAKKyAgICAxMzMxNSwgMTMzMTksIDEzMzIyLCAxMzMyOSwgMTMzMzksIDEzMzQ4LCAxMzM1NSwgMTMzNTksIDEzMzY2LCAxMzM3MiwgCisgICAgMTMzNzcsIDEzMzgyLCAxMzM4NiwgMTMzOTUsIDEzNDAwLCAxMzQwNiwgMTM0MTAsIDEzNDE1LCAxMzQxOSwgMTM0MjgsIAorICAgIDEzNDM2LCAxMzQ0NCwgMTM0NTEsIDEzNDU5LCAxMzQ3MSwgMTM0ODIsIDEzNDkyLCAxMzQ5OSwgMTM1MDUsIDEzNTE0LCAKKyAgICAxMzUyNSwgMTM1MzQsIDEzNTQ2LCAxMzU1OCwgMTM1NzAsIDEzNTgwLCAxMzU4OSwgMTM1OTgsIDEzNjA2LCAxMzYxMywgCisgICAgMTM2MjIsIDEzNjMwLCAxMzYzNCwgMTM2NDAsIDEzNjQ2LCAxMzY1MSwgNzc1MywgMTM2NTUsIDEzNjU3LCAxMzY2MSwgCisgICAgMTM2NjYsIDEzNjcyLCAxMzY4MSwgMTM2ODUsIDEzNjkzLCAxMzcwMCwgMTM3MDksIDEzNzE4LCAxMzcyNywgMTM3MzYsIAorICAgIDEzNzQ1LCAxMzc1NCwgMTM3NjMsIDEzNzcyLCAxMzc4MiwgMTM3OTIsIDEzODAxLCAxMzgwNywgMTM4MTQsIDEzODIxLCAKKyAgICAxMzgyNywgMTM4NDEsIDEzODQ4LCAxMzg1NiwgMTM4NjUsIDEzODcxLCAxMzg4MCwgMTM4ODksIDEzOTAwLCAxMzkxMCwgCisgICAgMTM5MTgsIDEzOTI1LCAxMzkzMywgMTM5NDIsIDEzOTU1LCAxMzk2MywgMTM5NzAsIDEzOTgzLCAxMzk4OSwgMTM5OTUsIAorICAgIDE0MDA1LCAxNDAxNCwgMTQwMjMsIDE0MDI4LCAxNDAzMiwgMTQwMzgsIDE0MDQ0LCAxNDA1MSwgODk2NiwgMTQwNTYsIAorICAgIDE0MDYxLCAxNDA2OCwgMTQwNzMsIDEyMzY5LCAxNDA3OCwgMTQwODYsIDE0MDkyLCAxNDA5NywgMTQxMDUsIDE0MTEzLCAKKyAgICAxNDEyMCwgMTQxMjgsIDE0MTM0LCAxNDE0MiwgMTQxNTAsIDE0MTU2LCAxNDE2MSwgMTQxNjcsIDE0MTc0LCAxNDE4MCwgCisgICAgMTQxODUsIDE0MTg5LCAxNDIwMCwgMTQyMDgsIDE0MjE0LCAxNDIxOSwgMTQyMjgsIDE0MjM0LCAxNDIzOSwgMTQyNDgsIAorICAgIDE0MjYyLCAzODUzLCAxNDI2NiwgMTQyNzEsIDE0Mjc2LCAxNDI4MiwgMTQyODcsIDE0MjkyLCAxNDI5NiwgMTQzMDEsIAorICAgIDE0MzA2LCAxNDMxMSwgNzc1MiwgMTQzMTYsIDE0MzIxLCAxNDMyNiwgMTQzMzEsIDE0MzM2LCAxNDM0MCwgMTQzNDUsIAorICAgIDE0MzUwLCAxNDM1NSwgMTQzNjAsIDE0MzY2LCAxNDM3MiwgMTQzNzcsIDE0MzgxLCAxNDM4NiwgMTQzOTEsIDE0Mzk2LCAKKyAgICA5Mjk0LCAxNDQwMSwgMTQ0MDYsIDE0NDExLCAxNDQxNiwgMTQ0MjEsIDE0NDM4LCAxNDQ1NiwgMTQ0NjgsIDE0NDgxLCAKKyAgICAxNDQ5OCwgMTQ1MTQsIDE0NTMxLCAxNDU0MSwgMTQ1NjAsIDE0NTcxLCAxNDU4MiwgMTQ1OTMsIDE0NjA0LCAxNDYxNiwgCisgICAgMTQ2MjcsIDE0NjM4LCAxNDY1NSwgMTQ2NjYsIDE0Njc3LCAxNDY4MiwgOTI5OSwgMTQ2ODcsIDE0NjkxLCAyMzgxLCAKKyAgICAxNDY5NSwgMTQ2OTgsIDE0NzA0LCAxNDcxMiwgMTQ3MjAsIDE0NzI1LCAxNDczMywgMTQ3NDEsIDE0NzQ4LCAxNDc1MywgCisgICAgMTQ3NTksIDE0NzY2LCAxNDc3NCwgMTQ3ODEsIDE0NzkzLCAxNDgwMSwgMTQ4MDYsIDExNTkwLCAxNDgxMiwgMTQ4MjEsIAorICAgIDE0ODMwLCAxNDgzOCwgMTQ4NDUsIDE0ODUxLCAxNDg1OSwgMTQ4NjYsIDE0ODcyLCAxNDg3OSwgMTQ4ODUsIDE0ODk0LCAKKyAgICAxNDkwMiwgMTQ5MTIsIDE0OTE5LCAxNDkyNSwgMTQ5MzMsIDE0OTM5LCAxNDk0NywgMTQ5NTQsIDE0OTY3LCAxNDk3NCwgCisgICAgMTQ5ODMsIDE0OTkyLCAxNTAwMSwgMTUwMDksIDE1MDE5LCAxNTAyNiwgMTUwMzEsIDM1NjAsIDE1MDM4LCAxNTA0MywgCisgICAgMTM3MiwgMTUwNDcsIDE0MzE3LCAxNTA1MSwgMTUwNTcsIDE1MDYxLCAxNTA2OSwgMTUwODEsIDE1MDg2LCAxNTA5MywgCisgICAgMTUwOTksIDE1MTA0LCAxNTExMSwgMTQzMjIsIDE1MTE1LCAxNTExOSwgMTUxMjMsIDE0MzI3LCAxNTEyNywgMTQzMzIsIAorICAgIDE1MTMxLCAxNTEzOCwgMTUxNDMsIDE1MTQ3LCAxNTE1NCwgMTUxNTgsIDE1MTY2LCAxNTE3MywgMTUxNzcsIDE1MTg0LCAKKyAgICAxNTIwMSwgMTUyMTAsIDE1MjE0LCAxNTIxNywgMTUyMjUsIDE1MjMxLCAxNTIzNiwgMzYzOCwgMTUyNDAsIDE1MjQyLCAKKyAgICAxNTI1MCwgMTUyNTcsIDE1MjY3LCAxNTI3OSwgMTUyODQsIDE1MjkwLCAxNTI5NSwgMTUyOTksIDE1MzA1LCAxNTMxMCwgCisgICAgMTUzMTYsIDE1MzE5LCAxNTMyNiwgMTUzMzQsIDE1MzQxLCAxNTM0NywgMTUzNTMsIDE1MzU4LCAxNTM2NSwgMTUzNzEsIAorICAgIDE1Mzc2LCAxNTM4MywgMTUzODcsIDE1MzkzLCAxNTM5NywgMTU0MDQsIDE1NDEwLCAxNTQxNiwgMTU0MjQsIDE1NDMwLCAKKyAgICAxNTQzNSwgMTU0NDEsIDE1NDQ5LCAxNTQ1NywgMTU0NjMsIDE1NDY5LCAxNTQ3NCwgMTU0ODEsIDE1NDg2LCAxNTQ5MCwgCisgICAgMTU0OTYsIDE1NTAxLCAxNTUwOCwgMTU1MTMsIDE1NTE5LCAxNTUyMiwgMTU1MjgsIDE1NTM0LCAxNTUzNywgMTU1NDEsIAorICAgIDE1NTUzLCAxNTU1OSwgMTU1NjQsIDE1NTcxLCAxNTU3NywgMTU1ODMsIDE1NTk0LCAxNTYwNCwgMTU2MTMsIDE1NjIxLCAKKyAgICAxNTYyOCwgMTU2MzksIDE1NjQ5LCAxNTY1OSwgMTU2NjcsIDE1NjcwLCAxNDM0NiwgMTU2NzUsIDE1NjgwLCAxNDM1MSwgCisgICAgMTQ0ODYsIDE1Njg4LCAxNTcwMSwgMTU3MTYsIDE1NzI3LCAxNDUwMywgMTU3NDUsIDE1NzU4LCAxNTc3MSwgMTU3ODIsIAorICAgIDEwNDg1LCAxNTc5MywgMTU4MDYsIDE1ODI1LCAxNTgzNiwgMTU4NDcsIDE1ODU4LCAyNjQ5LCAxNTg3MSwgMTU4NzUsIAorICAgIDE1ODgzLCAxNTg5OCwgMTU5MTMsIDE1OTI0LCAxNTkzMSwgMTU5MzcsIDE1OTQ1LCAxNTk0OSwgMTU5NTUsIDE1OTU4LCAKKyAgICAxNTk2OCwgMTU5NzYsIDE1OTgzLCAxNTk5MSwgMTYwMDEsIDE2MDA2LCAxNjAxMywgMTYwMTgsIDE2MDI1LCAxNjAzNiwgCisgICAgMTYwNDYsIDE2MDUyLCAxNjA1NywgMTYwNjIsIDE0MzU2LCAxNjA2NiwgMTYwNzIsIDE2MDc4LCAxNjA4MywgMTYwODgsIAorICAgIDE2MDkzLCAxNjA5NywgMTQzNjEsIDE0MzY3LCAxNjEwMSwgMTQzNzMsIDE2MTA2LCAxNjExNCwgMTYxMjMsIDE2MTMwLCAKKyAgICA5MTQzLCAxNjEzNCwgMTYxMzYsIDE2MTQxLCAxNjE0NiwgMTYxNTIsIDE2MTU3LCAxNjE2MiwgMTYxNjcsIDE2MTcyLCAKKyAgICAxNjE3NiwgMTYxODIsIDE2MTg4LCAxNjE5MywgMTYxOTksIDE2MjA0LCAxNjIwOSwgMTYyMTUsIDE2MjIwLCAxNjIyNSwgCisgICAgMTYyMzAsIDE2MjM1LCAxNjI0MSwgMTYyNDYsIDE2MjUxLCAxNjI1NywgMTYyNjMsIDE2MjY4LCAxNjI3MywgMTYyODAsIAorICAgIDE2Mjg2LCAxNjI5NywgMTYzMDQsIDE2MzA5LCAxNjMxMywgMTYzMTcsIDE2MzIwLCAxNjMyOCwgMTYzMzMsIDE2MzQwLCAKKyAgICAxNjM0NywgMTYzNTMsIDE2MzU4LCAxNjM2MywgMTYzNzAsIDE2MzgwLCAxNjM4NSwgMTYzOTIsIDE2Mzk4LCAxNjQwOCwgCisgICAgMTY0MTgsIDE2NDMyLCAxNjQ0NiwgMTY0NjAsIDE2NDc0LCAxNjQ4OSwgMTY1MDQsIDE2NTIxLCAxNjUzOSwgMTY1NTIsIAorICAgIDE2NTU4LCAxNjU2MywgMTY1NjgsIDE2NTcyLCAxNjU3NywgMTY1ODUsIDE2NTkxLCAxNjU5NiwgMTY2MDEsIDE2NjA1LCAKKyAgICAxNjYxMCwgMTY2MTQsIDE2NjE5LCAxNjYyMywgMTY2MzQsIDE2NjQwLCAxNjY0NSwgMTY2NTAsIDE2NjU3LCAxNjY2MiwgCisgICAgMTY2NjYsIDE2NjcxLCAxNjY3NiwgMTY2ODIsIDE2Njg5LCAxNjY5NSwgMTY3MDAsIDE2NzA0LCAxNjcxMCwgMTY3MTUsIAorICAgIDE2NzIwLCAxNjcyNCwgMTY3MzAsIDE2NzM1LCAxNjc0MCwgMTY3NDcsIDE2NzUyLCAxMzEwNCwgMTY3NTYsIDE2NzYxLCAKKyAgICAxNjc2NSwgMTY3NzAsIDE2Nzc2LCAxNjc4MiwgMTY3ODksIDE2Nzk5LCAxNjgwNywgMTY4MTQsIDE2ODE5LCAxNjgyMywgCisgICAgMTY4MzIsIDE2ODQwLCAxNjg0NywgMTY4NTQsIDE2ODYwLCAxNjg2NiwgMTY4NzEsIDE2ODc2LCAxNjg4MiwgMTY4ODcsIAorICAgIDE2ODkzLCAxNjg5OCwgMTY5MDQsIDE2OTEwLCAxNjkxNywgMTY5MjMsIDE2OTI4LCAxNjkzMywgOTM0MSwgMTY5NDIsIAorICAgIDE2OTQ1LCAxNjk1MSwgMTY5NTYsIDE2OTYxLCAxNjk3MSwgMTY5NzgsIDE2OTg0LCAxNjk4OSwgMTY5OTQsIDE3MDAwLCAKKyAgICAxNzAwNSwgMTcwMTEsIDE3MDE2LCAxNzAyMiwgMTcwMjgsIDE3MDMzLCAxNzA0MSwgMTcwNDgsIDE3MDUzLCAxNzA1OCwgCisgICAgMTcwNjQsIDE3MDY5LCAxNzA3MywgMTcwODIsIDE3MDkzLCAxNzEwMCwgMTcxMDUsIDE3MTEzLCAxNzExOSwgMTcxMjYsIAorICAgIDE3MTMyLCAxNzEzNywgMTcxNDEsIDE3MTQ3LCAxNzE1MiwgMTcxNTcsIDE3MTYyLCAxNDQwLCA3Nzc3LCAyODc3LCAxNzE2NiwgCisgICAgMTcxNzAsIDE3MTc0LCAxNzE3OCwgMTcxODIsIDE3MTg2LCAxNzE4OSwgMTcxOTYsIDE3MjA0LCAxNDM4NywgMTcyMTEsIAorICAgIDE3MjIxLCAxNzIyOSwgMTcyMzYsIDE3MjQ0LCAxNzI1NCwgMTcyNjMsIDE3Mjc2LCAxNzI4MSwgMTcyODYsIDE3Mjk0LCAKKyAgICAxNzMwMSwgMTMyMDAsIDEzMjA5LCAxNzMwOCwgMTczMTgsIDE3MzMzLCAxNzMzOSwgMTczNDYsIDE3MzUzLCAxNzM1OSwgCisgICAgMTczNjcsIDE3Mzc3LCAxNzM4NywgMTQzOTIsIDE3Mzk2LCAxNzQwMiwgMTc0MDgsIDE3NDE2LCAxNzQyNCwgMTc0MjksIAorICAgIDE3NDM4LCAxNzQ0NiwgMTc0NTgsIDE3NDY4LCAxNzQ3OCwgMTc0ODgsIDE3NDk3LCAxNzUwOSwgMTc1MTksIDE3NTI5LCAKKyAgICAxNzU0MCwgMTc1NDUsIDE3NTU3LCAxNzU2OSwgMTc1ODEsIDE3NTkzLCAxNzYwNSwgMTc2MTcsIDE3NjI5LCAxNzY0MSwgCisgICAgMTc2NTMsIDE3NjY1LCAxNzY3NiwgMTc2ODgsIDE3NzAwLCAxNzcxMiwgMTc3MjQsIDE3NzM2LCAxNzc0OCwgMTc3NjAsIAorICAgIDE3NzcyLCAxNzc4NCwgMTc3OTYsIDE3ODA3LCAxNzgxOSwgMTc4MzEsIDE3ODQzLCAxNzg1NSwgMTc4NjcsIDE3ODc5LCAKKyAgICAxNzg5MSwgMTc5MDMsIDE3OTE1LCAxNzkyNywgMTc5MzgsIDE3OTUwLCAxNzk2MiwgMTc5NzQsIDE3OTg2LCAxNzk5OCwgCisgICAgMTgwMTAsIDE4MDIyLCAxODAzNCwgMTgwNDYsIDE4MDU4LCAxODA2OSwgMTgwODEsIDE4MDkzLCAxODEwNSwgMTgxMTcsIAorICAgIDE4MTI5LCAxODE0MSwgMTgxNTMsIDE4MTY1LCAxODE3NywgMTgxODksIDE4MjAwLCAxODIxMiwgMTgyMjQsIDE4MjM2LCAKKyAgICAxODI0OCwgMTgyNjAsIDE4MjcyLCAxODI4NCwgMTgyOTYsIDE4MzA4LCAxODMyMCwgMTgzMzEsIDE4MzQzLCAxODM1NSwgCisgICAgMTgzNjcsIDE4Mzc5LCAxODM5MSwgMTg0MDMsIDE4NDE1LCAxODQyNywgMTg0MzksIDE4NDUxLCAxODQ2MiwgMTg0NzQsIAorICAgIDE4NDg2LCAxODQ5OCwgMTg1MTAsIDE4NTIzLCAxODUzNiwgMTg1NDksIDE4NTYyLCAxODU3NSwgMTg1ODgsIDE4NjAxLCAKKyAgICAxODYxMywgMTg2MjYsIDE4NjM5LCAxODY1MiwgMTg2NjUsIDE4Njc4LCAxODY5MSwgMTg3MDQsIDE4NzE3LCAxODczMCwgCisgICAgMTg3NDMsIDE4NzU1LCAxODc2OCwgMTg3ODEsIDE4Nzk0LCAxODgwNywgMTg4MjAsIDE4ODMzLCAxODg0NiwgMTg4NTksIAorICAgIDE4ODcyLCAxODg4NSwgMTg4OTcsIDE4OTEwLCAxODkyMywgMTg5MzYsIDE4OTQ5LCAxODk2MiwgMTg5NzUsIDE4OTg4LCAKKyAgICAxOTAwMSwgMTkwMTQsIDE5MDI3LCAxOTAzOSwgMTkwNTIsIDE5MDY1LCAxOTA3OCwgMTkwOTEsIDE5MTA0LCAxOTExNywgCisgICAgMTkxMzAsIDE5MTQzLCAxOTE1NiwgMTkxNjksIDE5MTgxLCAxOTE5NCwgMTkyMDcsIDE5MjIwLCAxOTIzMywgMTkyNDYsIAorICAgIDE5MjU5LCAxOTI3MiwgMTkyODUsIDE5Mjk4LCAxOTMxMSwgMTkzMjMsIDE5MzM0LCAxOTM0NywgMTkzNjAsIDE5MzczLCAKKyAgICAxOTM4NiwgMTkzOTksIDE5NDEyLCAxOTQyNSwgMTk0MzgsIDE5NDUxLCAxOTQ2NCwgMTk0NzYsIDE5NDg5LCAxOTUwMiwgCisgICAgMTk1MTUsIDE5NTI4LCAxOTU0MSwgMTk1NTQsIDE5NTY3LCAxOTU4MCwgMTk1OTMsIDE5NjA2LCAxOTYxOCwgMTk2MzEsIAorICAgIDE5NjQ0LCAxOTY1NywgMTk2NzAsIDE5NjgzLCAxOTY5NiwgMTk3MDksIDE5NzIyLCAxOTczNSwgMTk3NDgsIDE5NzYwLCAKKyAgICAxOTc3MywgMTk3ODYsIDE5Nzk5LCAxOTgxMiwgMTk4MjUsIDE5ODM4LCAxOTg1MSwgMTk4NjQsIDE5ODc3LCAxOTg5MCwgCisgICAgMTk5MDIsIDE5OTE1LCAxOTkyOCwgMTk5NDEsIDE5OTU0LCAxOTk2NywgMTk5ODAsIDE5OTkzLCAyMDAwNiwgMjAwMTksIAorICAgIDIwMDMyLCAyMDA0NCwgMjAwNTcsIDIwMDcwLCAyMDA4MywgMjAwOTYsIDIwMTA5LCAyMDEyMiwgMjAxMzUsIDIwMTQ4LCAKKyAgICAyMDE2MSwgMjAxNzQsIDIwMTg2LCAyMDE5OSwgMjAyMTIsIDIwMjI1LCAyMDIzOCwgMjAyNTEsIDIwMjY0LCAyMDI3NywgCisgICAgMjAyOTAsIDIwMzAzLCAyMDMxNiwgMjAzMjgsIDIwMzQxLCAyMDM1NCwgMjAzNjcsIDIwMzgwLCAyMDM5MywgMjA0MDYsIAorICAgIDIwNDE5LCAyMDQzMiwgMjA0NDUsIDIwNDU4LCAyMDQ3MCwgMjA0ODMsIDIwNDk2LCAyMDUwOSwgMjA1MjIsIDIwNTM1LCAKKyAgICAyMDU0OCwgMjA1NjEsIDIwNTc0LCAyMDU4NywgMjA2MDAsIDIwNjEyLCAyMDYyNSwgMjA2MzgsIDIwNjUxLCAyMDY2NCwgCisgICAgMjA2NzcsIDIwNjkwLCAyMDcwMywgMjA3MTYsIDIwNzI5LCAyMDc0MiwgMjA3NTQsIDIwNzY1LCAyMDc3MywgMjA3ODEsIAorICAgIDIwNzg4LCAyMDc5NCwgMjA3OTgsIDIwODA0LCAyMDgxMCwgMjA4MTgsIDIwODI0LCAyMDgyOSwgMjA4MzMsIDIwODQyLCAKKyAgICA5MTQ4LCAyMDg1MywgMjA4NjAsIDIwODY4LCAyMDg3NSwgMjA4ODIsIDEwOTQxLCAyMDg4OSwgMjA4OTgsIDIwOTAzLCAKKyAgICAyMDkwOCwgNzgwNSwgMjA5MTUsIDIwOTIwLCAyMDkyMywgMjA5MjgsIDIwOTM2LCAyMDk0MywgMjA5NTAsIDIwOTU3LCAKKyAgICAyMDk2MywgMjA5NzIsIDIwOTgxLCAyMDk4NywgMjA5OTYsIDIxMDAwLCAyMTAwNiwgMjEwMTEsIDIxMDIxLCAyMTAyOCwgCisgICAgMjEwMzQsIDIxMDQyLCAyMTA0OCwgMjEwNTUsIDIxMDY1LCAyMTA3NCwgMjEwNzgsIDIxMDg1LCAyMTA4OSwgMjEwOTQsIAorICAgIDIxMTAwLCAyMTEwOCwgMjExMTIsIDIxMTIyLCAxNDQwMiwgMjExMzEsIDIxMTM3LCAyMTE0MSwgMjExNTAsIDE0NDA3LCAKKyAgICAyMTE1NiwgMjExNjMsIDIxMTc0LCAyMTE4MiwgMjExOTEsIDIxMTk5LCA4OTMxLCAyMTIwNywgMjEyMTIsIDIxMjE4LCAKKyAgICAyMTIyMywgMjEyMjcsIDIxMjMxLCAyMTIzNSwgOTYzMiwgMjEyNDAsIDIxMjQ4LCAyMTI1NSwgMjEyNjQsIDIxMjcxLCAKKyAgICAyMTI3OCwgMTA4NzEsIDIxMjg1LCAyMTI5MSwgMjEyOTUsIDIxMzAxLCAyMTMwOCwgMjEzMTQsIDIxMzIyLCAyMTMyOCwgCisgICAgMjEzMzUsIDIxMzQxLCAyMTM0NywgMjEzNTYsIDIxMzYwLCAyMTM2OCwgMjEzNzcsIDIxMzg0LCAyMTM4OSwgMjEzOTMsIAorICAgIDIxNDA0LCAyMTQwOSwgMjE0MTQsIDIxNDE5LCAyMTQzMiwgNzk5NSwgMjE0MzYsIDIxNDQyLCAyMTQ1MCwgMjE0NTQsIAorICAgIDIxNDYxLCAyMTQ3MCwgMjE0NzUsIDE0Njc4LCAyMTQ4MywgMjE0ODcsIDIxNDk5LCAyMTUwNCwgMjE1MDgsIDIxNTExLCAKKyAgICAyMTUxNywgMjE1MjMsIDIxNTI4LCAyMTUzMiwgMjE1MzUsIDIxNTQ2LCAyMTU1MSwgOTM3NiwgMjE1NTgsIDIxNTYzLCAKKyAgICA5MzgxLCAyMTU2OCwgMjE1NzMsIDIxNTc4LCAyMTU4MywgMjE1ODgsIDIxNTkzLCAyMTU5OCwgMjE2MDMsIDIxNjA4LCAKKyAgICAyMTYxMywgMjE2MTgsIDIxNjIzLCAyMTYyOSwgMjE2MzQsIDIxNjM5LCAyMTY0NCwgMjE2NDksIDIxNjU0LCAyMTY1OSwgCisgICAgMjE2NjQsIDIxNjY5LCAyMTY3NCwgMjE2ODAsIDIxNjg2LCAyMTY5MSwgMjE2OTYsIDIxNzAxLCAyMTcwNiwgMjE3MTEsIAorICAgIDIxNzE2LCAyMTcyMSwgMjE3MjYsIDIxNzMxLCAyMTczNywgMjE3NDIsIDIxNzQ3LCAyMTc1MiwgMjE3NTgsIDIxNzY0LCAKKyAgICAyMTc2OSwgMjE3NzQsIDIxNzc5LCAyMTc4NCwgMjE3ODksIDIxNzk0LCAyMTc5OSwgMjE4MDQsIDIxODEwLCAyMTgxNSwgCisgICAgMjE4MjAsIDIxODI1LCAyMTgzMCwgMjE4MzYsIDIxODQxLCAyMTg0NiwgMjE4NTAsIDEzNjgsIDEyOSwgMjE4NTgsIDIxODYyLCAKKyAgICAyMTg2NiwgMjE4NzAsIDIxODc1LCAyMTg3OSwgMTMxMTAsIDEyNDY5LCAyMTg4MywgMjE4ODgsIDIxODkyLCAyMTg5NywgCisgICAgMjE5MDEsIDIxOTA2LCAyMTkxMCwgMjE5MTYsIDIxOTIxLCAyMTkyNSwgMjE5MjksIDIxOTM3LCAyMTk0MSwgMjE5NDUsIAorICAgIDIxOTUwLCAyMTk1NSwgMjE5NTksIDIxOTY1LCAyMTk3MCwgMjE5NzQsIDIxOTc5LCAyMTk4NCwgMjE5ODgsIDIxOTk1LCAKKyAgICAyMjAwMiwgMjIwMDksIDIyMDEzLCAyMjAxNywgMjIwMjIsIDIyMDI2LCAyMjAyOSwgMjIwMzUsIDIyMDQ4LCAyMjA1MywgCisgICAgMjIwNjIsIDIyMDY3LCA5NDIxLCAyMjA3MiwgMjIwNzUsIDI3MTIsIDI3MTcsIDIyMDc5LCAyMjA4NSwgMjIwOTEsIDcyMDksIAorICAgIDIyMDk2LCAyMjEwMSwgMjIxMDYsIDIyMTEyLCAyMjExNywgMTM4OTYsIDIyMTIyLCAyMjEyNywgMjIxMzIsIDIyMTM3LCAKKyAgICAyMjE0MywgMjIxNDgsIDIyMTUzLCAyMjE1OSwgMjIxNjQsIDIyMTY4LCAyMjE3MywgMjIxNzgsIDIyMTgzLCAyMjE4OCwgCisgICAgMjIxOTIsIDIyMTk3LCAyMjIwMSwgMjIyMDYsIDIyMjExLCAyMjIxNiwgMjIyMjEsIDIyMjI1LCAyMjIzMCwgMjIyMzQsIAorICAgIDIyMjM5LCAyMjI0NCwgMjIyNDksIDIyMjU0LCAyODg2LCAyMjE2OSwgMjIyNTgsIDIyMjY2LCAyMjI3MywgOTcyNiwgCisgICAgMjIyODUsIDIyMjkzLCAyMjE3NCwgMjIzMDAsIDIyMzA1LCAyMjMxMywgMjIxNzksIDIyMzE4LCAyMjMyMywgMjIzMzEsIAorICAgIDIyMzM2LCAyMjE4NCwgMjIzNDEsIDIyMzQ2LCAyMjM1MCwgMjIzNTYsIDIyMzY0LCAyMjM2NywgMjIzNzQsIDIyMzc4LCAKKyAgICAyMjM4MiwgMjIzODgsIDIyMzk1LCAyMjQwMCwgODk1OCwgMTcyNywgMTczMiwgMjI0MDQsIDIyNDEwLCAyMjQxNiwgMjI0MjEsIAorICAgIDIyNDI1LCAyMjQyOSwgMjI0MzMsIDIyNDM3LCAyMjQ0MSwgMjI0NDUsIDIyNDQ5LCAyMjQ1MiwgMjI0NTgsIDIyNDY1LCAKKyAgICAyMjQ3MywgMjI0NzksIDIyNDg1LCAyMjQ5MCwgMjI0OTUsIDIyNDk5LCAxMzgxNiwgMTM4MjMsIDIyNTA0LCAyMjUxNiwgCisgICAgMjI1MTksIDIyNTI2LCAxNjM0OSwgMjI1MzMsIDIyNTQxLCAyMjU1MiwgMjI1NjEsIDIyNTc0LCAyMjU4NCwgMjI1OTgsIAorICAgIDIyNjEwLCAyMjYyNCwgMjI2MzYsIDIyNjQ2LCAyMjY1OCwgMjI2NjQsIDIyNjc5LCAyMjcwMywgMjI3MjEsIDIyNzQwLCAKKyAgICAyMjc1MywgMjI3NjcsIDIyNzg1LCAyMjgwMSwgMjI4MTgsIDIyODM2LCAyMjg0NywgMjI4NjYsIDIyODgzLCAyMjkwMywgCisgICAgMjI5MjEsIDIyOTMzLCAyMjk0NywgMjI5NjEsIDIyOTczLCAyMjk5MCwgMjMwMDksIDIzMDI3LCAyMzAzOSwgMjMwNTcsIAorICAgIDIzMDc2LCAxNDU0NiwgMjMwODksIDIzMTA5LCAyMzEyMSwgMTA1MTYsIDIzMTMzLCAyMzEzOCwgMjMxNDMsIDIzMTQ4LCAKKyAgICAyMzE1NCwgMjMxNTksIDIzMTYzLCAyMzE3MCwgMjM5OCwgMjMxNzQsIDIzMTgwLCAyMzE4NCwgMjMxODcsIDIzMTkxLCAKKyAgICAyMzE5OSwgMjMyMDUsIDIyMjAyLCAyMzIwOSwgMjMyMTgsIDIzMjI5LCAyMzIzNSwgMjMyNDEsIDIzMjUwLCAyMzI1OCwgCisgICAgMjMyNjUsIDIzMjcwLCAyMzI3NCwgMjMyODEsIDIzMjg3LCAyMzI5NiwgMjMzMDQsIDIzMzExLCAyMzMyMSwgMjMzMzAsIAorICAgIDIzMzQwLCAyMzM0NSwgMjMzNTQsIDIzMzYzLCAyMzM3NCwgMjMzODUsIDM5NjMsIDIzMzk1LCAyMzM5OSwgMjM0MDksIAorICAgIDIzNDE3LCAyMzQyNywgMjM0MzgsIDIzNDQzLCAyMzQ1MywgMjM0NjEsIDIzNDY4LCAyMzQ3NCwgMjM0ODEsIDIzNDg2LCAKKyAgICAyMjIxMiwgMjM0OTAsIDIzNDk5LCAyMzUwMywgMjM1MDYsIDIzNTExLCAyMzUxOCwgMjM1MjcsIDIzNTM1LCAyMzU0MywgCisgICAgMjM1NTMsIDIzNTYyLCAyMzU2OCwgMjM1NzQsIDIyMjE3LCAyMjIyMiwgMjM1NzgsIDIzNTg4LCAyMzU5OCwgMjM2MDgsIAorICAgIDIzNjE2LCAyMzYyMywgMjM2MzMsIDIzNjQxLCAyMzY0OSwgMjM2NTUsIDIzNjYzLCA5MzAsIDIzNjcyLCAxNDczNywgNTQyLCAKKyAgICAyMzY4NiwgMjM2OTUsIDIzNzAzLCAyMzcxNCwgMjM3MjUsIDIzNzM1LCAyMzc0NCwgMjM3NTYsIDIzNzY1LCAyMzc3NCwgCisgICAgMjM3ODAsIDIzNzg5LCAyMzc5OCwgMjM4MDgsIDIzODE2LCAyMzgyNCwgOTM1MywgMjM4MzAsIDIzODMzLCAyMzgzNywgCisgICAgMjM4NDIsIDIzODQ3LCA5ODQxLCAyMjIzNSwgMjIyNDAsIDIzODU1LCAyMzg2MSwgMjM4NjcsIDIzODcyLCAyMzg3NywgCisgICAgMjM4ODEsIDIzODg5LCAyMzg5NSwgMjM5MDEsIDIzOTA1LCAzNTI1LCAyMzkxMywgMjM5MTgsIDIzOTIzLCAyMzkyNywgCisgICAgMjM5MzEsIDk5MjEsIDIzOTM4LCAyMzk0NiwgMjM5NjAsIDIzOTY3LCAyMzk3MywgOTkzMCwgOTkzNiwgMjM5ODEsIDIzOTg5LCAKKyAgICAyMzk5NiwgMjQwMDEsIDI0MDA2LCAyMjI0NSwgMjQwMTIsIDI0MDIzLCAyNDAyNywgMjQwMzIsIDI2MDEsIDI0MDM3LCAKKyAgICAyNDA0OCwgMjQwNTQsIDI0MDU5LCAyNDA2MywgMjQwNjcsIDI0MDcwLCAyNDA3NywgMjQwODQsIDI0MDkxLCAyNDA5NywgCisgICAgMjQxMDEsIDIyMjUwLCAyNDEwNiwgMjQxMTAsIDI0MTE0LCAxMDM3LCAyNDExOSwgMjQxMjQsIDI0MTI5LCAyNDEzNCwgCisgICAgMjQxMzksIDI0MTQ0LCAyNDE0OSwgMjQxNTQsIDI0MTU5LCAyNDE2NCwgMjQxNjksIDI0MTc0LCAyNDE3OSwgMjQxODQsIAorICAgIDI0MTkwLCAyNDE5NSwgMjQyMDAsIDI0MjA1LCAyNDIxMCwgMjQyMTUsIDI0MjIwLCAyNDIyNiwgMjQyMzEsIDI0MjM2LCAKKyAgICAyNDI0MSwgMjQyNDYsIDI0MjUxLCAyNDI1NiwgMjQyNjEsIDI0MjY3LCAyNDI3MywgMjQyNzgsIDI0Mjg0LCAyNDI4OSwgCisgICAgMjQyOTQsIDUsIDI0MzAwLCAyNDMwNCwgMjQzMDgsIDI0MzEyLCAyNDMxNywgMjQzMjEsIDI0MzI1LCAyNDMyOSwgMjQzMzMsIAorICAgIDI0MzM4LCAyNDM0MiwgMjQzNDcsIDI0MzUxLCAyNDM1NCwgMjQzNTgsIDI0MzYzLCAyNDM2NywgMjQzNzIsIDI0Mzc2LCAKKyAgICAyNDM4MCwgMjQzODQsIDI0Mzg5LCAyNDM5MywgMjQzOTcsIDI0NDA3LCAyNDQxMiwgMjQ0MTYsIDI0NDIwLCAyNDQyNSwgCisgICAgMjQ0MzAsIDI0NDM5LCAyNDQ0NCwgMjQ0NDksIDI0NDUzLCAyNDQ1NywgMjQ0NzAsIDI0NDgyLCAyNDQ5MSwgMjQ1MDAsIAorICAgIDI0NTA2LCAyNDUxMSwgMjQ1MTUsIDI0NTE5LCAyNDUyOSwgMjQ1MzgsIDI0NTQ2LCAyNDU1MiwgMjQ1NTcsIDI0NTYxLCAKKyAgICAyNDU2OCwgMjQ1NzgsIDI0NTg3LCAyNDU5NSwgMjQ2MDMsIDI0NjEwLCAyNDYxOCwgMjQ2MjcsIDI0NjM2LCAyNDY0NCwgCisgICAgMjQ2NDksIDI0NjUzLCAyNDY1NywgMjQ2NjAsIDI0NjYyLCAyNDY2NiwgMjQ2NzAsIDI0Njc1LCAyNDY4MCwgMjQ2ODQsIAorICAgIDI0Njg4LCAyNDY5MSwgMjQ2OTUsIDI0Njk4LCAyNDcwMiwgMjQ3MDUsIDI0NzA4LCAyNDcxMiwgMjQ3MTgsIDI0NzIyLCAKKyAgICAyNDcyNiwgMjQ3MzAsIDI0NzM1LCAyNDc0MCwgMjQ3NDUsIDI0NzQ5LCAyNDc1MiwgMjQ3NTcsIDI0NzYzLCAyNDc2OCwgCisgICAgMjQ3NzQsIDI0Nzc5LCAyNDc4MywgMjQ3ODcsIDI0NzkxLCAyNDc5NiwgMjQ4MDAsIDI0ODA1LCAyNDgwOSwgMjQ4MTMsIAorICAgIDI0ODIwLCAyNDgyNCwgMjQ4MjcsIDI0ODMxLCAyNDgzNywgMjQ4NDMsIDI0ODQ3LCAyNDg1MSwgMjQ4NTYsIDI0ODYzLCAKKyAgICAyNDg2OSwgMjQ4NzMsIDI0ODgyLCAyNDg4NiwgMjQ4OTAsIDI0ODkzLCAyNDg5OSwgMjQ5MDQsIDI0OTEwLCAxNDg5LCAKKyAgICAxNzkxLCAyNDkxNSwgMjQ5MjAsIDI0OTI1LCAyNDkzMCwgMjQ5MzUsIDI0OTQwLCAyNDk0NSwgMjE0OCwgMjE5NCwgMjQ5NTAsIAorICAgIDI0OTUzLCAyNDk1NywgMjQ5NjEsIDI0OTY2LCAyNDk3MCwgMjQ5NzQsIDI0OTc3LCAyNDk4MiwgMjQ5ODcsIDI0OTkxLCAKKyAgICAyNDk5NCwgMjQ5OTksIDI1MDAzLCAyNTAwOCwgMjUwMTIsIDE0NzQ5LCAyNTAxNywgMjUwMjAsIDI1MDIzLCAyNTAyNywgCisgICAgMjUwMzIsIDI1MDM2LCAyNTA0OSwgMjUwNTMsIDI1MDU2LCAyNTA2NCwgMjUwNzMsIDI1MDgwLCAyNTA4NSwgMjUwOTEsIAorICAgIDI1MDk3LCAyNTEwNSwgMjUxMTIsIDI1MTE5LCAyNTEyMywgMjUxMjcsIDI1MTMxLCAyNTEzNiwgMjUxNDEsIDI1MTQ1LCAKKyAgICAyNTE1MywgMjUxNTgsIDI1MTcwLCAyNTE4MSwgMjUxODYsIDI1MTkwLCAyNTE5NCwgMjUyMDAsIDI1MjA1LCAyNTIxMCwgCisgICAgMjUyMTQsIDI1MjE4LCAyNTIyMSwgMjUyMjcsIDc5MTUsIDIzMTYsIDI1MjMxLCAyNTIzNiwgMjUyNTIsIDk0NjgsIDI1MjcyLCAKKyAgICAyNTI4MSwgMjUyOTcsIDI1MzAxLCAyNTMwNCwgMjUzMTAsIDI1MzIwLCAyNTMyNiwgMjUzMzUsIDI1MzUwLCAyNTM2MiwgCisgICAgMjUzNzMsIDI1MzgxLCAyNTM5MCwgMjUzOTYsIDI1NDA1LCAyNTQxNSwgMjU0MjYsIDI1NDM3LCAyNTQ0NiwgMjU0NTMsIAorICAgIDI1NDYyLCAyNTQ3MCwgMjU0NzcsIDI1NDg1LCAyNTQ5MiwgMjU0OTksIDI1NTEyLCAyNTUxOSwgMjU1MjUsIDI1NTMwLCAKKyAgICAyNTUzOSwgMjU1NDUsIDI1NTUwLCAyNTU1OCwgMjU1NjUsIDIzNDE5LCAyNTU3NywgMjU1ODksIDI1NjAzLCAyNTYxMSwgCisgICAgMjU2MTgsIDI1NjMwLCAyNTYzOSwgMjU2NDgsIDI1NjU2LCAyNTY2NCwgMjU2NzIsIDI1Njc5LCAyNTY4OCwgMjU2OTYsIAorICAgIDI1NzA2LCAyNTcxNSwgMjU3MjUsIDI1NzM0LCAyNTc0MywgMjU3NTEsIDI1NzU2LCAyNTc2MCwgMjU3NjMsIDI1NzY3LCAKKyAgICAyNTc3MSwgMjU3NzUsIDI1Nzc5LCAyNTc4MywgMjU3ODksIDI1Nzk1LCAyNTgwMywgMTQ3OTQsIDI1ODEwLCAyNTgxNSwgCisgICAgMjU4MjIsIDI1ODI4LCAyNTgzNSwgMTQ4MDIsIDI1ODQyLCAyNTg0NSwgMjU4NTcsIDI1ODY1LCAyNTg3MSwgMjU4NzYsIAorICAgIDI1ODgwLCA5ODcxLCAyNTg5MSwgMjU5MDEsIDI1OTEwLCAyNTkxNywgMjU5MjEsIDE0ODA3LCAyNTkyNCwgMjU5MzEsIAorICAgIDI1OTM1LCAyNTk0MSwgMjU5NDQsIDI1OTUxLCAyNTk1NywgMjU5NjQsIDI1OTcwLCAyNTk3NCwgMjU5NzksIDI1OTgzLCAKKyAgICAyNTk5MiwgMjU5OTksIDI2MDA1LCA3OTU2LCAyNjAxMiwgMjYwMjAsIDI2MDI3LCAyNjAzMywgMjYwMzgsIDI2MDQ0LCAKKyAgICAyNjA1MCwgMjYwNTgsIDI2MDYyLCAyNjA2NSwgMjYwNjcsIDI1NzY4LCAyNjA3NiwgMjYwODIsIDI2MDkyLCAyNjA5NywgCisgICAgMjYxMDQsIDI2MTEwLCAyNjExNSwgMjYxMjAsIDI2MTI1LCAyNjEyOSwgMjYxMzQsIDI2MTQxLCAyNjE1MCwgMjYxNTQsIAorICAgIDI2MTYxLCAyNjE3MCwgMjYxNzYsIDI2MTgxLCAyNjE4NywgMjYxOTIsIDI2MTk5LCAyNjIxMCwgMjYyMTUsIDI2MjE5LCAKKyAgICAyNjIyOSwgMjYyMzUsIDI2MjM5LCAyNjI0NCwgMjYyNTQsIDI2MjYzLCAyNjI2NywgMjYyNzQsIDI2MjgyLCAyNjI4OSwgCisgICAgMjYyOTUsIDI2MzAwLCAyNjMwOCwgMjYzMTUsIDI2MzI3LCAyNjMzNiwgMjYzNDAsIDEzMDQ2LCAyNjM0OCwgMjYzNTgsIAorICAgIDI2MzYyLCAyNTA2MCwgMjYzNzMsIDI2Mzc4LCAyNjM4MiwgMjYzODksIDI2Mzk2LCAyMTk2MSwgMjU2OTMsIDI2NDAxLCAKKyAgICAyNjQwNSwgMjY0MDgsIDIyODUzLCAyNjQxMywgMjY0MjcsIDI2NDQzLCAyNjQ2MSwgMjY0ODAsIDI2NDk3LCAyNjUxNSwgCisgICAgMjI4NzIsIDI2NTMyLCAyNjU1MiwgMjI4ODksIDI2NTY0LCAyNjU3NiwgMTU3MzIsIDI2NTg4LCAyMjkwOSwgMjY2MDIsIAorICAgIDI2NjE0LCAxMDUyOSwgMjY2MjgsIDI2NjMzLCAyNjYzOCwgMjY2NDMsIDI2NjQ5LCAyNjY1NSwgMjY2NjEsIDI2NjY1LCAKKyAgICAyNjY3MiwgMjY2NzcsIDI2Njg3LCAyNjY5MywgMTAxNzYsIDI2Njk5LCAyNjcwMSwgMjY3MDYsIDI2NzE0LCAyNjcxOCwgCisgICAgMjYxMzcsIDI2NzI0LCAyNjczMSwgMTE1MTcsIDExNTI3LCAyNjczOCwgMjY3NDgsIDI2NzUzLCAyNjc1NywgMjY3NjAsIAorICAgIDI2NzY2LCAyNjc3NCwgMjY3ODYsIDI2Nzk2LCAyNjgxMiwgMjY4MjUsIDI2ODM5LCAxNTc1MCwgMjY4NTMsIDI2ODYwLCAKKyAgICAyNjg2NCwgMjY4NjcsIDI2ODcyLCAyNjg3NiwgMjY4ODMsIDI2ODkwLCAyNjkwMCwgMjY5MDUsIDI2OTEwLCAyNjkxNSwgCisgICAgMjY5MjMsIDI2OTMxLCAyNjk0MCwgMjY5NDUsIDk1NjUsIDI2OTQ5LCAyNjk1MiwgMjY5NTUsIDI2OTYwLCAyNjk2NywgCisgICAgMjY5NzIsIDI2OTg4LCAyNjk5NiwgMjcwMDQsIDk0MTYsIDI3MDEyLCAyNzAxNywgMjcwMjEsIDI3MDI3LCAyNzAzMywgCisgICAgMjcwMzYsIDI3MDQyLCAyNzA1NCwgMjcwNjIsIDI3MDY5LCAyNzA3NSwgMjcwODIsIDI3MDkzLCAyNzEwNywgMjcxMjAsIAorICAgIDI3MTI5LCAyNzEzOCwgMjcxNTAsIDI3MTYxLCAyNzE3MSwgMjcxODAsIDI3MTg5LCAyNzE5NywgMjcyMDgsIDc5MzgsIAorICAgIDI3MjE1LCAyNzIyMSwgMjcyMjYsIDI3MjMyLCAyNzIzOSwgMjcyNDksIDI3MjU5LCAyNzI2OCwgMjcyNzQsIDI3MjgxLCAKKyAgICAyNzI4NiwgMjcyOTMsIDI3MzAxLCAyNzMwOSwgMjczMjEsIDYyNDYsIDI3MzI4LCAyNzMzNywgMjczNDUsIDI3MzUxLCAKKyAgICAyNzM1NywgMjczNjIsIDI3MzY2LCAyNzM2OSwgMjczNzUsIDI3MzgyLCAyNzM4NywgMjczOTIsIDI3Mzk2LCAyNzQwOCwgCisgICAgMjc0MTksIDI3NDI4LCAyNzQzNiwgMTQ5MzQsIDI3NDQxLCAyNzQ0NywgMjc0NTMsIDExNTEwLCA4NjM1LCAyNzQ1OCwgCisgICAgMjc0NjIsIDI3NDY1LCAyNzQ2OCwgMjc0NzQsIDI3NDgyLCAyNzQ5MCwgMjc0OTQsIDI3NDk4LCAyNzUwMywgMjc1MDYsIAorICAgIDI3NTE1LCAyNzUxOSwgMjc1MjcsIDI3NTM4LCAyNzU0MiwgMjc1NDgsIDI3NTU0LCAyNzU1OCwgMjc1NjQsIDI3NTcyLCAKKyAgICAyNzU5NCwgMjc2MTgsIDI3NjI1LCAyNzYzMiwgMjc2MzgsIDI3NjQ2LCAyNzY1MiwgMjc2NTcsIDI3NjY4LCAyNzY4NiwgCisgICAgMjc2OTMsIDI3NzAxLCAyNzcwNSwgMjc3MTQsIDI3NzI3LCAyNzczNSwgMjc3NDcsIDI3NzU4LCAyNzc2OCwgMjc3ODIsIAorICAgIDI3NzkxLCAyNzc5OSwgMjc4MTEsIDk0ODUsIDI3ODIyLCAyNzgzMywgMjc4NDUsIDI3ODU1LCAyNzg2NCwgMjc4NjksIAorICAgIDI3ODczLCAyNzg4MSwgMjc4OTEsIDI3ODk2LCAyNzkwMCwgMjc5MDMsIDI3OTA2LCAyNzkxNCwgMjc5MjIsIDI3OTMxLCAKKyAgICAyNzk0MSwgMjc5NTAsIDI3OTU2LCAyNzk3MCwgMjY2MywgMjc5OTIsIDI4MDAzLCAyODAxMiwgMjgwMjIsIDI4MDM0LCAKKyAgICAyODA0MywgMjgwNTIsIDI4MDYyLCAyODA3MCwgMjgwNzgsIDI4MDg3LCAyODA5MiwgMjgxMDMsIDI4MTA4LCAyODExOSwgCisgICAgMjgxMjMsIDI4MTMzLCAyODE0MiwgMjgxNTAsIDI4MTYwLCAyODE3MCwgMjgxNzgsIDI4MTg3LCAyODE5NCwgMjgyMDIsIAorICAgIDI4MjA5LCAyODIxOCwgMjgyMjIsIDI4MjMwLCAyODIzNywgMjgyNDUsIDI4MjUyLCAyODI2MywgMjgyNzgsIDI4Mjg1LCAKKyAgICAyODI5MSwgMjgzMDEsIDI4MzEwLCAyODMxNiwgMjgzMjAsIDI4MzI3LCAyODMzMSwgMTQwMTgsIDI4MzM3LCAyODM0MSwgCisgICAgMjgzNDYsIDI4MzUzLCAyODM1NywgMjgzNjEsIDI4MzY5LCAyODM3NywgMjgzODMsIDI4MzkyLCAyODM5OSwgMjg0MDQsIAorICAgIDI4NDA5LCAyODQxOSwgMjM0ODgsIDI4NDIzLCAyODQyNiwgMjg0MzEsIDI4NDM2LCAyODQ0MSwgMjg0NDYsIDI4NDUxLCAKKyAgICAyODQ1NiwgMjg0NjEsIDI4NDY2LCAyODQ3MiwgMjg0NzcsIDI4NDgyLCAyODQ4OCwgMTIxOCwgNzA0LCAyODQ5MywgMjg1MDIsIAorICAgIDIzNjQsIDI4NTA5LCAyODUxNCwgMjg1MTgsIDI4NTI0LCAxMjY3LCA1NDYsIDMxOCwgMjg1MjksIDI4NTM4LCAyODU0NiwgCisgICAgMjg1NTUsIDI4NTYzLCAyODU3NCwgMjg1ODMsIDI4NTkxLCAyODU5NSwgMjg1OTgsIDI4NjA2LCAyODYxNCwgMjg2MTksIAorICAgIDE0NzYyLCAyODYyNSwgMjg2MzEsIDI4NjM3LCA1ODcyLCAyODY0MiwgMjg2NDYsIDI4NjUyLCAyODY1NiwgMjg2NjMsIAorICAgIDE0NTUsIDI4NjY5LCAyODY3NiwgOTU3MiwgMjg2ODAsIDI4NjkwLCAyODY5OCwgMjg3MDQsIDI4NzEzLCAyODcyMSwgCisgICAgMjg3MjcsIDI4NzM1LCAyODc0MiwgMTExMDMsIDI4NzQ4LCAyODc1NSwgMjg3NjAsIDI4NzY3LCAxNDk2LCAyMTQ3LCAKKyAgICAyODc3MywgMjg3NzksIDI4Nzg2LCAyODc5NywgMjg4MDgsIDI4ODE2LCAyODgyMywgMjg4MzMsIDI4ODQyLCAyODg1MCwgCisgICAgMjg4NTksIDI4ODY2LCAyODg3MywgMjg4ODYsIDI4ODk3LCAxMjcyLCAyODkxNiwgMjg5MjEsIDI4OTI5LCAzNTc1LCAKKyAgICAyODkzMywgMjg5MzgsIDI4OTQyLCAxNDU5LCAyNDY4OSwgMjg5NTIsIDI4OTU2LCAyODk2MSwgMjg5NjUsIDM0OTMsIAorICAgIDI4OTcxLCAyODk3OSwgMjg5ODYsIDI4OTk3LCAyOTAwNSwgMjkwMTMsIDM1NzYsIDI3OSwgMjkwMTgsIDI5MDI2LCAyOTAzNCwgCisgICAgMjkwNDEsIDI5MDQ3LCAyOTA1MiwgMjIxNiwgMjkwNTksIDI5MDY1LCAyNTk3NSwgMjYyMDUsIDI5MDcxLCAxMDYsIDI5MDc1LCAKKyAgICAyOTA3OSwgMjkwODUsIDYxNSwgOTMyMSwgMjkwOTAsIDI5MDk3LCAyOTEwMywgMjMyNywgMjkxMDcsIDI5MTExLCAxNTE3NCwgCisgICAgMjkxMTQsIDI5MTE5LCAyOTEyNiwgMjkxMzIsIDI5MTM3LCAyOTE0NSwgMjkxNTIsIDI5MTU4LCAyMjMzOCwgMjkxNjIsIAorICAgIDI5MTY2LCAzNjQ2LCAxNjYxMiwgMjkxNzAsIDI5MTc1LCAyOTE3OCwgMjkxODYsIDI5MTk0LCAyOTE5OSwgMjkyMDIsIAorICAgIDI5MjA5LCAyOTIxOSwgMjkyMzEsIDI5MjM2LCAyOTI0MCwgMjkyNDgsIDI5MjU1LCAyOTI2MSwgMjkyNjgsIDI5Mjc1LCAKKyAgICAyOTI3OCwgMjkyODIsIDI5Mjg2LCAxNDYzLCAyOTI5NiwgMjkyOTgsIDI5MzAzLCAyOTMwOSwgMjkzMTUsIDI5MzIwLCAKKyAgICAyOTMyNSwgMjkzMzAsIDI5MzM1LCAyOTM0MCwgMjkzNDUsIDI5MzUwLCAyOTM1NSwgMjkzNjAsIDI5MzY1LCAyOTM3MCwgCisgICAgMjkzNzUsIDI5MzgwLCAyOTM4NSwgMjkzOTEsIDI5Mzk3LCAyOTQwMywgMjk0MDksIDI5NDE0LCAyOTQxOSwgMjk0MjQsIAorICAgIDI5NDMwLCAyOTQzNSwgMjk0NDAsIDI5NDQ1LCAyOTQ1MSwgMjk0NTYsIDI5NDYyLCAyOTQ2NywgMjk0NzIsIDI5NDc3LCAKKyAgICAyOTQ4MiwgMjk0ODgsIDI5NDkzLCAyOTQ5OSwgMjk1MDQsIDI5NTA5LCAyOTUxNCwgMjk1MTksIDI5NTI1LCAyOTUzMCwgCisgICAgMjk1MzYsIDI5NTQxLCAyOTU0NiwgMjk1NTEsIDI5NTU2LCAyOTU2MSwgMjk1NjYsIDI5NTcxLCAyOTU3NiwgMjk1ODEsIAorICAgIDI5NTg3LCAyOTU5MywgMjk1OTksIDI5NjA0LCAyOTYwOSwgMjk2MTQsIDI5NjE5LCAyOTYyNSwgMjk2MzEsIDI5NjM3LCAKKyAgICAyOTY0MywgMjk2NDksIDI5NjU1LCAyOTY2MCwgMjk2NjYsIDI5NjcxLCAyOTY3NiwgMjk2ODEsIDI5Njg2LCAyOTY5MiwgCisgICAgMjQ0MywgMjk2OTcsIDI0NTAsIDI0NTcsIDI3NTQsIDI5NzAyLCAyNDYzLCAyNDczLCAyOTcwOCwgMjk3MTIsIDI5NzE3LCAKKyAgICAyOTcyMiwgMjk3MjgsIDI5NzMzLCAyOTczOCwgMjk3NDIsIDI5NzQ3LCAyOTc1MywgMjk3NTgsIDI5NzYzLCAyOTc2OCwgCisgICAgMjk3NzQsIDI5Nzc5LCAyOTc4MywgMjk3ODcsIDI5NzkyLCAyOTc5NywgMjk4MDIsIDI5ODA3LCAyOTgxMiwgMjk4MTgsIAorICAgIDI5ODI0LCAyOTgyOSwgMjk4MzMsIDI5ODM4LCAyOTg0NCwgMjk4NDgsIDI5ODUzLCAyOTg1OCwgMjk4NjMsIDI5ODY4LCAKKyAgICAyOTg3MiwgMjk4NzUsIDI5ODgwLCAyOTg4NSwgMjk4OTAsIDI5ODk1LCAyOTkwMCwgMjk5MDYsIDI5OTEyLCAyOTkxNywgCisgICAgMjk5MjIsIDI5OTI2LCAyOTkzMSwgMjk5MzYsIDI5OTQxLCAyOTk0NiwgMjk5NTEsIDI5OTU1LCAyOTk2MCwgMjk5NjUsIAorICAgIDI5OTcwLCAyOTk3NCwgMjk5NzgsIDI5OTgyLCAyOTk4NywgMjk5OTUsIDMwMDAwLCAzMDAwNiwgMzAwMTIsIDMwMDE4LCAKKyAgICAzMDAyMywgMzAwMjcsIDMwMDMwLCAzMDAzNSwgMzAwNDAsIDMwMDQ0LCAzMDA0OSwgMzAwNTMsIDMwMDU4LCAzMDA2MiwgCisgICAgMzAwNjUsIDMwMDcwLCAxNzI4OSwgMzAwNzUsIDMwMDgwLCAzMDA4NSwgMzAwOTMsIDIxMjY3LCAyODY3MywgOTAxOSwgCisgICAgMzAwOTgsIDMwMTAzLCAzMDEwNywgMzAxMTIsIDMwMTE2LCAzMDEyMCwgMzAxMjUsIDMwMTI5LCAzMDEzMiwgMzAxMzUsIAorICAgIDMwMTM5LCAzMDE0NCwgMzAxNDgsIDMwMTU2LCAzMDE2MCwgMzAxNjMsIDMwMTY4LCAzMDE3MiwgMzAxNzYsIDMwMTgxLCAKKyAgICAzMDE4NiwgMzAxOTAsIDMwMTk2LCAzMDIwMSwgMzAyMDYsIDMwMjEzLCAzMDIyMCwgMzAyMjQsIDMwMjI3LCAzMDIzMywgCisgICAgMzAyNDIsIDMwMjQ5LCAzMDI1NywgMzAyNjQsIDMwMjY4LCAzMDI3MywgMzAyNzcsIDMwMjgxLCAzMDI4NywgMzAyOTMsIAorICAgIDMwMjk3LCAzMDMwMywgMzAzMDgsIDMwMzEzLCAzMDMyMCwgMzAzMjYsIDMwMzMyLCAzMDMzOCwgMzAzNDQsIDMwMzUxLCAKKyAgICAzMDM1NywgMzAzNjMsIDMwMzY5LCAzMDM3NSwgMzAzODEsIDMwMzg3LCAzMDM5MywgMzA0MDAsIDMwNDA2LCAzMDQxMywgCisgICAgMzA0MTksIDMwNDI1LCAzMDQzMSwgMzA0MzcsIDMwNDQzLCAzMDQ0OSwgMzA0NTUsIDMwNDYxLCAzMDQ2NywgMTE0MTEsIAorICAgIDMwNDczLCAzMDQ3OCwgMzA0ODMsIDMwNDg2LCAzMDQ5NCwgMzA0OTksIDMwNTA4LCAzMDUxNCwgMzA1MTksIDMwNTI0LCAKKyAgICAzMDUyOSwgMzA1MzMsIDMwNTM4LCAzMDU0MywgMzA1NDgsIDMwNTUzLCAzMDU1OCwgMzA1NjUsIDMwNTcyLCAzMDU3OCwgCisgICAgMzA1ODQsIDMwNTg5LCAxNjI5MCwgMzA1OTYsIDMwNjAyLCAzMDYwOSwgMzA2MTUsIDMwNjIxLCAzMDYyNiwgMzA2MzQsIAorICAgIDMwNjM5LCAxNjA2OSwgMzA2NDMsIDMwNjQ4LCAzMDY1MywgMzA2NTksIDMwNjY0LCAzMDY2OSwgMzA2NzMsIDMwNjc4LCAKKyAgICAzMDY4MywgMzA2ODksIDMwNjk0LCAzMDY5OSwgMzA3MDMsIDMwNzA4LCAzMDcxMywgMzA3MTcsIDMwNzIyLCAzMDcyNywgCisgICAgMzA3MzIsIDMwNzM2LCAzMDc0MSwgMzA3NDYsIDMwNzUxLCAzMDc1NSwgMzA3NTksIDE1MjgwLCAzMDc2MywgMzA3NzIsIAorICAgIDMwNzc4LCAzMDc4NCwgMzA3OTMsIDMwODAxLCAzMDgxMCwgMzA4MTgsIDMwODIzLCAzMDgyNywgMzA4MzQsIDMwODQwLCAKKyAgICAzMDg0NCwgMzA4NDcsIDMwODUyLCAzMDg2MSwgMzA4NjksIDMwODc0LCAxNDk1LCAzMDg4MCwgMzA4ODMsIDMwODg3LCAKKyAgICAyMjQxMSwgMjI0MTcsIDMwODkzLCAzMDg5NywgMzA5MDgsIDMwOTE5LCAzMDkzMCwgMzA5NDIsIDMwOTQ5LCAzMDk1NiwgCisgICAgMzA5NjEsIDMwOTY1LCA1OTA5LCA3NTUsIDIxMjY2LCAzMDk3MywgMzA5NzgsIDMwOTgyLCAzMDk4NywgMzA5OTEsIDMwOTk3LCAKKyAgICAzMTAwMiwgMzEwMDgsIDMxMDEzLCAzMTAxOSwgMzEwMjQsIDMxMDMwLCAzMTAzNSwgMzEwNDEsIDMxMDQ3LCAzMTA1MywgCisgICAgMzEwNTgsIDMxMDE0LCAzMTAyMCwgMzEwNjIsIDMxMDY3LCAzMTA3MywgMzEwNzgsIDMxMDg0LCAzMTA4OSwgMzEwOTUsIAorICAgIDMxMTAwLCAzMTAyNSwgMTA0MTQsIDMxMTA0LCAzMTAzNiwgMzEwNDIsIDMxMDQ4LCAyODMxLCAzNDIzLCAzMTExMCwgCisgICAgMzExMTMsIDMxMTE5LCAzMTEyNSwgMzExMzEsIDMxMTM4LCAzMTE0NCwgMzExNTAsIDMxMTU2LCAzMTE2MiwgMzExNjgsIAorICAgIDMxMTc0LCAzMTE4MCwgMzExODYsIDMxMTkyLCAzMTE5OCwgMzEyMDQsIDMxMjEwLCAzMTIxNywgMzEyMjMsIDMxMjI5LCAKKyAgICAzMTIzNSwgMzEyNDEsIDMxMjQ3LCAzMTI1MCwgMzEyNTUsIDMxMjU4LCAzMTI2NSwgMzEyNzMsIDMxMjc4LCAzMTI4MywgCisgICAgMzEyODksIDMxMjk0LCAzMTI5OSwgMzEzMDMsIDMxMzA4LCAzMTMxNCwgMzEzMTksIDMxMzI1LCAzMTMzMCwgMzEzMzYsIAorICAgIDMxMzQxLCAzMTM0NywgMzEzNTMsIDMxMzU3LCAzMTM2MiwgMzEzNjcsIDMxMzcyLCAzMTM3NywgMzEzODEsIDMxMzg2LCAKKyAgICAzMTM5MSwgMzEzOTYsIDMxNDAyLCAzMTQwOCwgMzE0MTQsIDMxNDIwLCAzMTQyNSwgMzE0MjksIDMxNDMyLCAzMTQzOCwgCisgICAgMzE0NDQsIDMxNDUzLCAzMTQ2MSwgMzE0NjgsIDMxNDczLCAzMTQ3NywgMzE0ODEsIDMxNDg2LCAxNTEzMywgMzE0OTEsIAorICAgIDMxNDk5LCAzMTUwNSwgMzY4MywgMTM3NywgMzE1MTAsIDMxNTE0LCA4MDA1LCAzMTUyMCwgMzE1MjYsIDMxNTMzLCA4MDE0LCAKKyAgICAzMTUzNywgMzE1NDMsIDMxNTUwLCAzMTU1NiwgMzE1NjUsIDMxNTczLCAzMTU4NSwgMzE1ODksIDMxNTk2LCAzMTYwMiwgCisgICAgMzE2MDYsIDMxNjA5LCAzMTYxOCwgMzE2MjYsIDMxMDE1LCAzMTYzMSwgMzE2NDEsIDMxNjUxLCAzMTY2MSwgMzE2NjcsIAorICAgIDMxNjcyLCAzMTY4MiwgMzE2ODcsIDMxNzAwLCAzMTcxNCwgMzE3MjUsIDMxNzM3LCAzMTc0OSwgMzE3NjMsIDMxNzc2LCAKKyAgICAzMTc4OCwgMzE4MDAsIDE0NTg3LCAzMTgxNCwgMzE4MTksIDMxODI0LCAzMTgyOCwgMzE4MzIsIDMxODM2LCAxNzgwLCAKKyAgICAyNzE1OSwgMzE4NDAsIDMxODQ1LCAzMTA2MywgMzE4NTAsIDMxODUzLCAzMTg1OCwgMzE4NjMsIDMxODY4LCAzMTg3NCwgCisgICAgMzE4ODAsIDEwMDkxLCAzMTg4NSwgMzE4OTIsIDE1Njg0LCAzMTg5OCwgMzE5MDMsIDMxOTA4LCAzMTkxMiwgMzE5MTcsIAorICAgIDMxOTIyLCAzMTA2OCwgMzE5MjcsIDMxOTMyLCAzMTkzNywgMzE5NDMsIDMxMDc0LCAzMTk0OCwgMzE5NTEsIDMxOTU4LCAKKyAgICAzMTk2NiwgMzE5NzIsIDMxOTc4LCAzMTk4NCwgMzE5OTUsIDMyMDAwLCAzMjAwNywgMzIwMTQsIDMyMDIxLCAzMjAyOSwgCisgICAgMzIwMzgsIDMyMDQ3LCAzMjA1MywgMzIwNTksIDMyMDY3LCAzMTA3OSwgMzIwNzIsIDMyMDc4LCAzMjA4NCwgMzEwODUsIAorICAgIDMyMDg5LCAzMjA5NCwgMzIxMDIsIDMyMTEwLCAzMjExNiwgMzIxMjMsIDMyMTI5LCAzMjEzNiwgMzIxNDMsIDMyMTQ5LCAKKyAgICAzMjE1NywgMzIxNjcsIDMyMTc0LCAzMjE3OSwgMzIxODUsIDMyMTkwLCAzMjE5NSwgMzIyMDIsIDMyMjExLCAzMjIxOSwgCisgICAgMzIyMjQsIDMyMjMwLCAzMjIzNywgMzIyNDUsIDMyMjUxLCAzMjI1NiwgMzIyNjIsIDMyMjcxLCAyNzkzNiwgMzIyNzgsIAorICAgIDMyMjgyLCAzMjI4NywgMzIyOTYsIDMyMzAxLCAzMjMwNiwgMzIzMTEsIDEyMzk4LCAzMjMxOSwgMzIzMjQsIDMyMzI5LCAKKyAgICAzMjMzNCwgMzIzMzgsIDMyMzQzLCAzMjM0OCwgMzIzNTUsIDMyMzYwLCAzMjM2NSwgMzIzNzAsIDMxMDkwLCAyMTIwMywgCisgICAgMzIzNzYsIDI1MTksIDI0NCwgMzIzNzksIDMyMzgyLCAzMjM4NiwgMzIzOTAsIDMyNDAwLCAzMjQwOCwgMzI0MTIsIDMyNDE5LCAKKyAgICAzMjQyNiwgMzI0MzAsIDMyNDMzLCAzMjQzOSwgMzI0NDcsIDMyNDU1LCAzMjQ1OSwgMzI0NjMsIDMyNDY2LCAzMjQ3MywgCisgICAgMzI0NzcsIDMyNDgxLCAzMjQ4OCwgMzI0OTYsIDMxMDI2LCAzMjUwMywgMzI1MTEsIDEwMTUxLCA2NjAsIDMwOCwgMzI1MjMsIAorICAgIDMyNTI4LCAzMjUzMywgMzI1MzksIDMyNTQ0LCAzMjU0OSwgMzcwNCwgMzI1NTQsIDMyNTU3LCAzMjU2MiwgMzI1NjcsIAorICAgIDMyNTcyLCAzMjU3NywgMzI1ODIsIDMyNTg5LCAyMjUxMiwgMzI1OTQsIDMyNTk5LCAzMjYwNCwgMzI2MDksIDMyNjE0LCAKKyAgICAzMjYyMCwgMzI2MjUsIDMyNjMxLCAzMTI2MSwgMzI2MzcsIDMyNjQyLCAzMjY0OCwgMzI2NTQsIDMyNjY0LCAzMjY2OSwgCisgICAgMzI2NzQsIDMyNjc4LCAzMjY4MywgMzI2ODgsIDMyNjkzLCAzMjY5OCwgMzI3MTEsIDMyNzE2LCAyMjI4OSwgMTY2OTIsIAorICAgIDM3MTAsIDMyNzIwLCAzMjcyNSwgMzI3MzAsIDMyNzM2LCAzMjc0MSwgMzI3NDYsIDMyNzUwLCAzMjc1NSwgMzI3NjAsIAorICAgIDMyNzY2LCAzMjc3MSwgMzI3NzYsIDEzODIsIDMyNzgwLCAzMjc4NSwgMzI3OTAsIDMyNzk1LCAzMjc5OSwgMzI4MDQsIAorICAgIDMyODA5LCAzMjgxNCwgMzI4MjAsIDMyODI2LCAzMjgzMSwgMzI4MzUsIDMyODM5LCAzMjg0NCwgMzI4NDksIDMyODU0LCAKKyAgICAzMjg1OCwgMzI4NjYsIDMyODcwLCAzMjg3NiwgMzI4ODAsIDMyODg3LCAxNjQ4NSwgMzEwMzcsIDMyODkzLCAzMjkwMCwgCisgICAgMzI5MDgsIDMyOTE1LCAzMjkyMSwgMzI5MzQsIDMyOTQ2LCAzMjk1MiwgMzI5NTYsIDI3NzMsIDMyOTYwLCAzMjk2NCwgCisgICAgMzI0NjgsIDMyOTczLCAzMjk4NCwgMzI5ODksIDMyOTk0LCAzMjk5OSwgMzMwMDMsIDMzMDA4LCAyMjQyMiwgMzMwMTIsIAorICAgIDMzMDE2LCAzMzAyMSwgMzEwNDMsIDIxMjg3LCAzMzAyNSwgMzMwMzAsIDMzMDM2LCAzMzA0MSwgMzMwNDUsIDMzMDQ5LCAKKyAgICAzMzA1MiwgMzMwNTYsIDMzMDYyLCAzMzA3MywgMzMwODUsIDMxMDQ5LCAzMzA5MCwgMzMwOTMsIDMzMDk3LCAzNDcsIAorICAgIDMzMTAyLCAzMzEwNywgMzMxMTIsIDMzMTE3LCAzMzEyMiwgMzMxMjcsIDMzMTMzLCAzMzEzOCwgMzMxNDMsIDMzMTQ5LCAKKyAgICAzMzE1NCwgMzMxNjAsIDMzMTY1LCAzMzE3MSwgMzMxNzYsIDMzMTgxLCAzMzE4NiwgMzMxOTEsIDMzMTk2LCAzMzIwMSwgCisgICAgMzMyMDYsIDMzMjExLCAzMzIxNywgMzMyMjIsIDMzMjI3LCAzMzIzMiwgMzMyMzcsIDMzMjQyLCAzMzI0NywgMzMyNTIsIAorICAgIDMzMjU4LCAzMzI2NCwgMzMyNjksIDMzMjc0LCAzMzI3OSwgMzMyODQsIDMzMjg5LCAzMzI5NCwgMzMyOTksIDMzMzA0LCAKKyAgICAzMzMwOSwgMzMzMTQsIDMzMzE5LCAzMzMyNCwgMzMzMjksIDMzMzM0LCAzMzMzOSwgMzMzNDQsIDMzMzQ5LCAzMzM1NCwgCisgICAgMzMzNjAsIDMxMywgMjYsIDMzMzY1LCAzMzM2OSwgMzMzNzMsIDMzMzgxLCAzMzM4NSwgMzMzODksIDMzMzkyLCAzMzM5NSwgCisgICAgMzMzOTcsIDMzNDAyLCAzMzQwNiwgMzM0MTEsIDMzNDE1LCAzMzQyMCwgMzM0MjQsIDMzNDI5LCAzMzQzMywgMzM0MzYsIAorICAgIDMzNDM4LCAzMzQ0MiwgMzM0NDcsIDMzNDUxLCAzMzQ2MiwgMzM0NjUsIDMzNDY3LCAzMzQ3MSwgMzM0ODMsIDMzNDkyLCAKKyAgICAzMzQ5NiwgMzM1MDAsIDMzNTA2LCAzMzUxMSwgMzM1MjAsIDMzNTI2LCAzMzUzMSwgMzM1MzYsIDMzNTQwLCAzMzU0NSwgCisgICAgMzM1NTIsIDMzNTU3LCAzMzU2MywgMzM1NjgsIDMzNTcyLCAzMzU3OSwgMjU3MDEsIDI1NzExLCAzMzU4MywgMzM1ODgsIAorICAgIDMzNTkzLCAzMzU5OCwgMzM2MDUsIDMzNjA5LCAzMzYxNiwgODExMywgMzM2MjIsIDMzNjMxLCAzMzYzOSwgMzM2NTQsIAorICAgIDMzNjY4LCAzMzY3NiwgMzM2ODcsIDMzNjk2LCAzMzcwMSwgNzIyNywgMzM3MTEsIDMzNzE2LCAzMzcyMSwgMzM3MjUsIAorICAgIDMzNzI4LCAzMzczMiwgMzM3MzcsIDMzNzQxLCAzMzc0OCwgMzM3NTMsIDMzNzU4LCA4OTEyLCAzMzc2OCwgMzM3NzAsIAorICAgIDMzNzczLCAzMzc3NywgMzM3ODMsIDMzNzg3LCAzMzc5MiwgMzM3OTcsIDMzODAzLCAzMzgwOCwgMzM4MTQsIDMzODE5LCAKKyAgICAzMzgyOSwgMzM4MzgsIDMzODQ2LCAzMzg1MSwgMzM4NTcsIDMzODYyLCAzMzg2OSwgMzM4NzMsIDMzODgxLCAzMzg4OCwgCisgICAgMzM5MDEsIDMzOTA5LCAzMzkxMywgMzM5MjMsIDMzOTI4LCAzMzkzMiwgMzM5NDAsIDMzOTQ4LCAzMzk1MiwgMzM5NjEsIAorICAgIDMzOTY3LCAzMzk3MiwgMzM5ODAsIDMzOTkwLCAzMzk5OSwgMzQwMDgsIDM0MDE3LCAzNDAyOCwgMzQwMzYsIDM0MDQ3LCAKKyAgICAzNDA1NiwgMzQwNjMsIDM0MDY5LCAzNDA3NCwgMzQwODUsIDM0MDkwLCAzNDA5NCwgMzQwOTcsIDM0MTAxLCAzNDEwOSwgCisgICAgMzQxMTUsIDM0MTIzLCAzNDEzMCwgMzQxMzYsIDM0MTQxLCAzNDE0NywgMjQxOCwgMzQxNTEsIDM0MTUzLCAzNDE1OCwgCisgICAgMzQxNjMsIDM0MTY4LCAzNDE3MSwgMzQxNzMsIDM0MTc3LCAzNDE4MCwgMzQxODcsIDM0MTkxLCA5ODg0LCAzNDE5NSwgCisgICAgMzQyMDEsIDM0MjExLCAzNDIxNiwgMzQyMjIsIDM0MjI2LCAzNDIzMSwgMzQyNDQsIDI2MDg3LCAzNDI1MCwgMzQyNTksIAorICAgIDE3NDYyLCAzNDI2NiwgMzQyNzUsIDMxNjQ3LCAzNDI4MywgMzQyODgsIDM0MjkyLCAzNDMwMCwgMzQzMDcsIDM0MzEyLCAKKyAgICAzNDMxNiwgMzQzMjEsIDM0MzI1LCAzNDMzMywgMzQzMzksIDM0MzQ1LCAzNDM1MCwgMzQzNTQsIDM0MzU3LCAzNDM2MiwgCisgICAgMzQzNzUsIDM0MzkxLCAyMjk3OSwgMzQ0MDgsIDM0NDIwLCAzNDQzNywgMzQ0NDksIDM0NDYzLCAyMjk5NiwgMjMwMTUsIAorICAgIDM0NDc1LCAzNDQ4NywgMjY4MCwgMzQ1MDEsIDM0NTA2LCAzNDUxMSwgMzQ1MTYsIDM0NTIwLCAzNDUyNywgMzQ1MzksIAorICAgIDM0NTQ1LCAzNDU0OCwgMzQ1NTksIDM0NTcwLCAzNDU3NSwgMzIwNjQsIDY5NSwgMzQ1NzksIDM0NTgzLCAzNDU4NywgCisgICAgMzQ1OTAsIDM0NTk1LCAzNDYwMCwgMzQ2MDYsIDM0NjExLCAzNDYxNiwgMzQ2MjIsIDM0NjI4LCAzNDYzMywgMzQ2MzcsIAorICAgIDM0NjQyLCAzNDY0NywgMzQ2NTIsIDM0NjU2LCAzNDY1OSwgMzQ2NjUsIDM0NjcwLCAzNDY3NSwgMzQ2ODAsIDM0Njg0LCAKKyAgICAzNDY4OSwgMzQ2OTUsIDM0NzAzLCAyNjMyMCwgMzQ3MDgsIDM0NzEzLCAzNDcyMCwgMzQ3MjYsIDM0NzMyLCAzNDczNywgCisgICAgMzQ3NDUsIDIyNTIxLCAzNDc1MiwgMzQ3NTcsIDM0NzYyLCAzNDc2NywgMzQ3NzEsIDM0Nzc0LCAzNDc3OSwgMzQ3ODMsIAorICAgIDM0Nzg3LCAzNDc5NCwgMzQ4MDAsIDM0ODA2LCAzNDgxMiwgMzQ4MTksIDM0ODI0LCAzNDgzMCwgMzM5NDMsIDM0ODM0LCAKKyAgICAzNDgzOCwgMzQ4NDMsIDM0ODU2LCAzNDg2MSwgMzQ4NjcsIDM0ODc1LCAzNDg4MiwgMzQ4OTAsIDM0OTAwLCAzNDkwNiwgCisgICAgMzQ5MTIsIDM0OTE4LCAzNDkyMiwgMzQ5MzEsIDM0OTM5LCAzNDk0NiwgMzQ5NTEsIDM0OTU2LCAxMDQzNywgMzQ5NjEsIAorICAgIDM0OTY5LCAzNDk3NiwgMzQ5ODIsIDM0OTkyLCAzNDk5NywgMzUwMDMsIDM1MDExLCAzNjA4LCAzNTAxOCwgMzUwMjUsIAorICAgIDM2MTQsIDM1MDI5LCAzNTAzNCwgMzUwNDUsIDM1MDUyLCAzNTA1OCwgMzUwNjcsIDM1MDcxLCA0MDE1LCAzNTA3NCwgCisgICAgMzUwODEsIDM1MDg3LCAzNTA5MywgMzUxMDEsIDM1MTExLCAyOTA0MiwgMzUxMTgsIDM1MTI2LCAzNTEzMSwgMzUxMzcsIAorICAgIDM1MTQyLCAyNTk0NywgMzUxNDgsIDM1MTU1LCAzNTE2MSwgMzUxNzAsIDIzNjYwLCAzNTE3NywgMzUxODIsIDM1MTg2LCAKKyAgICAzNTE5NCwgMzUyMDIsIDk2MDAsIDU4OTUsIDM1MjA5LCAzNTIxMywgMzUyMTUsIDM1MjE5LCAzNTIyNCwgMzUyMjYsIAorICAgIDM1MjMyLCAzNTIzNywgMzUyNDIsIDM1MjQ5LCAzMjU4NSwgMzUyNTUsIDM1MjYwLCAzNTI2NCwgMzUyNjksIDM1MjczLCAKKyAgICAzNTI4MiwgMzUyODYsIDM1MjkyLCAzNTI5OSwgMzUzMDUsIDM1MzEyLCAzNTMxNywgMzUzMjYsIDM1MzMxLCAzNTMzNSwgCisgICAgMzUzNDAsIDM1MzQ3LCAzNTM1NSwgMzUzNjMsIDM1MzY4LCAyMTM0MywgMzUzNzIsIDM1Mzc1LCAzNTM3OSwgMzUzODMsIAorICAgIDM1Mzg3LCAzNTM5MCwgMzUzOTIsIDM1NDAwLCAzNTQwNCwgMzU0MTEsIDM1NDE1LCAzNTQxOSwgMzU0MjcsIDM1NDM0LCAKKyAgICAzNTQ0NCwgMzU0NDgsIDM1NDUyLCAzNTQ2MCwgMzU0NjgsIDM1NDc0LCAzNTQ3OSwgMzU0ODgsIDEzMzUwLCAzNTQ5NCwgCisgICAgMzU1MDMsIDM1NTA4LCAzNTUxNSwgMzU1MjMsIDM1NTMxLCAzNTUzOSwgMzU1NDYsIDM1NTUzLCAzNTU2MCwgMzU1NjcsIAorICAgIDM1NTc0LCAzNTU3OSwgMzU1ODUsIDM1NjAyLCAzNTYxMCwgMzU2MjAsIDM1NjI4LCAzNTYzNSwgNDA3LCAzNTYzOSwgCisgICAgMzU2NDUsIDM1NjQ5LCAzNTY1NCwgMzM2OTIsIDM1NjYwLCAzNTY2MywgMzU2NjcsIDM1Njc1LCAzNjE5LCAzNTY4MywgCisgICAgMzU2ODksIDM1Njk1LCAzNTcwNCwgMzU3MTQsIDM1NzIxLCAzNTcyNywgMzYyNSwgMzYzMSwgMzU3MzYsIDM1NzQzLCAKKyAgICAzNTc1MSwgMzU3NTYsIDM1NzYwLCAzNTc2NywgMzU3NzUsIDM1NzgyLCAzNTc4OCwgMzU3OTcsIDM1ODA3LCAzNTgxMywgCisgICAgMzU4MjEsIDM1ODMwLCAzNTgzNywgMzU4NDUsIDM1ODUyLCAyMjAxOSwgMzU4NTYsIDM1ODYzLCAzNTg2OSwgMzU4NzksIAorICAgIDM1ODg4LCAzNTg5OSwgMzU5MDMsIDM1OTEzLCAzNTkxOSwgMzU5MjYsIDM1OTM0LCAzNTk0MywgMzU5NTIsIDM1OTYyLCAKKyAgICAzNTk3MywgMzU5ODAsIDM1OTg1LCAzNTk5MiwgMzAyOSwgMzYwMDAsIDM2MDA2LCAzNjAxMSwgMzYwMTcsIDM2MDIzLCAKKyAgICAzNjAyOCwgMzYwNDEsIDM2MDU0LCAzNjA2NywgMzYwNzQsIDM2MDgwLCAzNjA4OCwgMzYwOTYsIDM2MTAxLCAzNjEwNSwgCisgICAgMTQ2OSwgMzYxMDksIDM2MTE0LCAzNjExOSwgMzYxMjQsIDM2MTI5LCAzNjEzNSwgMzYxNDAsIDM2MTQ1LCAzNjE1MCwgCisgICAgMzYxNTUsIDM2MTYwLCAzNjE2NSwgMzYxNzAsIDM2MTc2LCAzNjE4MiwgMzYxODcsIDM2MTkyLCAzNjE5OCwgMzYyMDMsIAorICAgIDM2MjA4LCAzNjIxMywgMzYyMTksIDM2MjI0LCAzNjIyOSwgMzYyMzQsIDM2MjM5LCAzNjI0NSwgMzYyNTAsIDM2MjU1LCAKKyAgICAzNjI2MSwgMzYyNjYsIDM2MjcxLCAzNjI3NiwgMzYyODEsIDM2Mjg2LCAzNjI5MiwgMzYyOTcsIDM2MzAzLCAzNjMwOCwgCisgICAgMzYzMTQsIDM2MzE5LCAzNjMyNCwgMzYzMjksIDM2MzM1LCAzNjM0MSwgMzYzNDcsIDM2MzUzLCAzNjM1OSwgMzYzNjUsIAorICAgIDM2MzcxLCAzNjM3NywgMzYzODIsIDM2Mzg3LCAzNjM5MywgMzYzOTgsIDM2NDAzLCAzNjQwOCwgMzY0MTMsIDM2NDE4LCAKKyAgICAzNjQyMywgMzY0MjgsIDM2NDM0LCAzNjQzOSwgMzY0NDQsIDM2NDUwLCAzNjQ1NiwgMTAxLCAzNjQ2MSwgMzY0NjMsIAorICAgIDM2NDY3LCAzNjQ3MSwgMzY0NzUsIDM2NDgwLCAzNjQ4NCwgOTUyMSwgMzY0ODgsIDM2NDk0LCAxNzQxLCA2MjgwLCAzNjUwMCwgCisgICAgMzY1MDMsIDM2NTA4LCAzNjUxMiwgMzY1MTcsIDM2NTIxLCAzNjUyNSwgMzY1MzAsIDEwMjM4LCAzNjUzNCwgMzY1MzgsIAorICAgIDM2NTQyLCAzNjU0NiwgMTUzNzIsIDM2NTUxLCAzNjU1NSwgMzY1NjAsIDM2NTY1LCAzNjU3MCwgMzY1NzQsIDM2NTgxLCAKKyAgICAyNjExMSwgMzY1ODcsIDM2NTkwLCAzNjU5NCwgMzY1OTksIDM2NjA1LCAzNjYwOSwgMzY2MTcsIDM2NjIzLCAzNjYyOCwgCisgICAgMzY2MzIsIDM2NjM4LCAzNjY0MiwgMzY2NDYsIDM0NjIsIDM0NjcsIDI5MjM0LCAzNjY0OSwgMzY2NTMsIDM2NjU3LCAKKyAgICAzNjY2MSwgMzY2NjksIDM2Njc2LCAzNjY4MCwgMzY2ODcsIDM2NjkyLCAzMTcsIDM2Njk3LCAzNjcwMSwgMzY3MDcsIAorICAgIDM2NzE5LCAzNjcyNSwgMzY3MzEsIDM2NzM1LCAzNjc0MSwgMzY3NTAsIDM2NzU0LCAzNjc1OCwgMzY3NjMsIDM2NzY5LCAKKyAgICAzNjc3NCwgMzY3NzgsIDM2NzgzLCAzNjc4NywgMzY3OTEsIDM2Nzk4LCAzNjgwNCwgMzY4MDksIDM2ODI0LCAzNjgzOSwgCisgICAgMzY4NTQsIDM2ODcwLCAzNjg4OCwgMTAxODgsIDM2OTAyLCAzNjkwOSwgMzY5MTMsIDM2OTE2LCAzNjkyNSwgMzY5MzAsIAorICAgIDM2OTM0LCAzNjk0MiwgMzM4OTQsIDM2OTUwLCAzNjk1NCwgMzY5NjQsIDM2OTc1LCAyOTIwNCwgMzY5ODgsIDM2OTkyLCAKKyAgICAzNzAwMSwgMzcwMDksIDk3NzgsIDE0OTAwLCAzNzAxMywgMjI0MzQsIDM3MDE2LCAzMDE1MiwgMzcwMjEsIDk3NzcsIAorICAgIDM3MDI2LCAzNzAzMiwgMzcwMzcsIDM3MDQzLCAzNzA0OCwgMzcwNTQsIDM3MDU5LCAzNzA2NSwgMzcwNzAsIDM3MDc2LCAKKyAgICAzNzA4MiwgMzcwODgsIDM3MDkzLCAzNzA0OSwgMzcwNTUsIDM3MDYwLCAzNzA2NiwgMzcwNzEsIDM3MDc3LCAzNzA4MywgCisgICAgODEyNiwgMzg3NCwgMzcwOTcsIDM3MTA1LCAzNzEwOSwgMzcxMTIsIDM3MTE2LCAzNzEyMSwgMzcxMjYsIDM3MTMyLCAKKyAgICAzNzEzOCwgMzcxNDMsIDM3MTQ3LCAyNTk1OSwgMzcxNTEsIDM3MTU1LCAzNzE2MSwgMzcxNjUsIDkwNDIsIDM3MTc0LCAKKyAgICAzNzE4MSwgMzcxODUsIDExODY4LCAzNzE5MiwgMzcxOTgsIDM3MjAzLCAzNzIxMCwgMzcyMTcsIDM3MjI0LCAyODU1MCwgCisgICAgODA0OSwgMzcyMzEsIDM3MjM4LCAzNzI0NSwgMzcyNTEsIDM3MjU2LCAzNzI2MywgMzcyNzQsIDM3MjgwLCAzNzI4NSwgCisgICAgMzcyOTAsIDM3Mjk1LCAzNzMwMiwgMzcwNTAsIDM3MzA2LCAzNzMxNiwgMzczMjcsIDM3MzMzLCAzNzMzOCwgMzczNDMsIAorICAgIDM3MzQ4LCAzNzM1MywgMzczNTgsIDM3MzYyLCAzNzM2NiwgMzczNzIsIDM3MzgwLCAyMzE5LCA4NjUsIDEwMjU0LCAxMDI2NiwgCisgICAgMTAyNzEsIDEwMjc3LCAzNzM4OSwgMTAyODIsIDEwMjg3LCAxMDI5MywgMzczOTQsIDM3NDA0LCAzNzQwOCwgMTAyOTgsIAorICAgIDM3NDEzLCAxNjg5MCwgMzc0MTYsIDM3NDIxLCAzNzQyNSwgMzc0MzAsIDM3NDM1LCAzNzQ0MiwgMzc0NDksIDM3NDUzLCAKKyAgICAzNzQ1NiwgMzc0NjQsIDEwMjAxLCAzNzQ3MSwgMzc0NzQsIDM3NDgwLCAzNzQ5MCwgNTkyOSwgMzc0OTksIDM3NTAzLCAKKyAgICAzNzUxMSwgMzc1MTUsIDM3NTI1LCAzNzUzMSwgMzc1NDIsIDM3NTQ4LCAzNzU1NCwgMzc1NTksIDM3NTY1LCAzNzU3MSwgCisgICAgMzc1NzcsIDM3NTgyLCAzNzU4NSwgMzc1OTIsIDM3NTk4LCAzNzYwMywgMzc2MTAsIDM3NjE3LCAzNzYyMSwgMzc2MzEsIAorICAgIDM3NjQ0LCAzNzY1MywgMzc2NjIsIDM3NjczLCAzNzY4NiwgMzc2OTcsIDM3NzA2LCAzNzcxNywgMzc3MjIsIDM3NzMxLCAKKyAgICAzNzczNiwgMTAzMDMsIDM3NzQyLCAzNzc0OSwgMzc3NTcsIDM3NzYyLCAzNzc2NiwgMzc3NzMsIDM3NzgwLCAzODI5LCAxNiwgCisgICAgMzc3ODQsIDM3Nzg5LCAxNjc0NCwgMzc3OTMsIDM3Nzk2LCAzNzc5OSwgMjgwNTYsIDM3ODAzLCAyODU1OSwgMzc4MTEsIAorICAgIDM3ODE1LCAzNzgxOSwgMzc4MjIsIDM3ODI4LCAzNzA3MiwgMzc4MzQsIDM3ODQyLCAzNzg0OCwgMzc4NTUsIDI4MDM5LCAKKyAgICAzNzg1OSwgMjgyMzMsIDM3ODYzLCAzNzg3MiwgMzc4NzgsIDM3ODg0LCAzNzg4OSwgMzc4OTMsIDM3ODk5LCAzNzkwMywgCisgICAgMzc5MTEsIDM3OTE5LCAyNjE3NywgMzc5MjUsIDM3OTMyLCAzNzkzOCwgMzc5NDMsIDM3OTQ4LCAzNzk1MiwgMzc5NTgsIAorICAgIDM3OTYzLCAzNzk2OSwgNDA1NiwgNzkxLCAzNzk3NiwgMzc5ODAsIDM3OTgzLCAxNTI2MiwgMzc5OTUsIDM1ODI2LCAzODAwNiwgCisgICAgMzgwMDksIDM4MDE2LCAzODAyMCwgMzgwMjYsIDM4MDMwLCAzODAzNiwgMzgwNDEsIDM4MDQ3LCAzODA1MiwgMzgwNTcsIAorICAgIDM4MDYxLCAzODA2NSwgMzgwNzAsIDM4MDc1LCAzODA4NSwgMzgwOTEsIDM4MTA0LCAzODExMCwgMzgxMTYsIDM4MTIzLCAKKyAgICAzODEyOCwgMzgxMzQsIDM4MTM5LCAxNjYzMCwgMTQ3MiwgMTAxOSwgMzExOTMsIDMxMTk5LCAzODE0NCwgMzEyMDUsIAorICAgIDMxMjE4LCAzMTIyNCwgMzEyMzAsIDM4MTUwLCAzMTIzNiwgMzEyNDIsIDM4MTU2LCAzODE2MiwgMjIsIDM4MTcwLCAzODE3NywgCisgICAgMzgxODEsIDM4MTg1LCAzODE5MywgMzE5NTMsIDM4MTk3LCAzODIwMSwgMzgyMDgsIDM4MjEzLCAzODIxNywgMzgyMjIsIAorICAgIDM4MjI4LCAzODIzMywgMzgyMzksIDM4MjQ0LCAzODI0OCwgMzgyNTIsIDM4MjU2LCAzODI2MSwgMzgyNjUsIDM4MjcwLCAKKyAgICAzODI3NCwgMzgyODEsIDM4Mjg2LCAzODI5MCwgMzgyOTUsIDM4Mjk5LCAzODMwNCwgMzgzMDgsIDM4MzEzLCAzODMxOSwgCisgICAgMTU0ODIsIDE1NDg3LCAzODMyNCwgMzgzMjgsIDM4MzMxLCAzODMzNSwgMjExNzAsIDM4MzQwLCAzODM0NCwgMzgzNTAsIAorICAgIDM4MzU3LCAzODM2MiwgMzgzNzIsIDM4Mzc3LCAzODM4NSwgMzgzODksIDM4MzkyLCAzMTk2OCwgMzgzOTYsIDQxMDksIAorICAgIDM4NDAxLCAzODQwNiwgMzg0MTAsIDM4NDE1LCAzODQxOSwgMzg0MjQsIDEzMzY4LCAzODQzNSwgMzg0MzksIDM4NDQyLCAKKyAgICAzODQ0NywgMzg0NTEsIDM4NDU1LCAzODQ1OCwgMzg0NjIsIDgxNDUsIDEzMzg0LCAzODQ2NSwgMzg0NjgsIDM4NDc0LCAKKyAgICAzODQ3OSwgMzg0ODUsIDM4NDkwLCAzODQ5NiwgMzg1MDEsIDM4NTA3LCAzODUxMiwgMzg1MTgsIDM4NTI0LCAzODUzMCwgCisgICAgMzg1MzUsIDM4NTM5LCAzODU0MywgMzg1NTIsIDM4NTY4LCAzODU4NCwgMzg1OTQsIDI3OTQ2LCAzODYwMSwgMzg2MDUsIAorICAgIDM4NjEwLCAzODYxNSwgMzg2MTksIDM4NjIzLCAzNTk0NywgMzg2MjksIDM4NjM0LCAzODYzOCwgMzg2NDUsIDM4NjUwLCAKKyAgICAzODY1NCwgMzg2NTgsIDI2OTc5LCAzODY2NCwgMjE0MzgsIDM4NjY5LCAzODY3NiwgMzg2ODQsIDM4NjkwLCAzODY5NywgCisgICAgMzg3MDUsIDM4NzExLCAzODcxNSwgMzg3MjEsIDM4NzI5LCAzODczMywgMzg3NDIsIDk1MDIsIDM4NzUwLCAzODc1NCwgCisgICAgMzg3NjIsIDM4NzY5LCAzODc3NCwgMzg3NzksIDM4NzgzLCAzODc4NiwgMzg3OTAsIDM4NzkzLCAzODc5NywgMzg4MDQsIAorICAgIDM4ODA5LCAzODgxNSwgMjYzOTgsIDMxMjU2LCAzODgxOSwgMzg4MjYsIDM4ODMyLCAzODgzOCwgMzg4NDMsIDM4ODQ2LCAKKyAgICAzODg0OCwgMzg4NTUsIDM4ODYyLCAzODg2OCwgMzg4NzIsIDM4ODc1LCAzODg3OSwgMzg4ODMsIDM4ODg3LCAzODg5MiwgCisgICAgMzg4OTYsIDM4OTAwLCAzODkwMywgMzg5MDcsIDM4OTIxLCAyMzA0NSwgMzg5NDAsIDM4OTUzLCAzODk2NiwgMzg5NzksIAorICAgIDIzMDYzLCAzODk5NCwgMTA0OTAsIDM5MDA5LCAzOTAxNSwgMzkwMTksIDM5MDIzLCAzOTAzMCwgMzkwMzUsIDM5MDM5LCAKKyAgICAzOTA0NiwgMzkwNTIsIDM5MDU3LCAzOTA2MywgMzkwNzMsIDM5MDg1LCAzOTA5NiwgMzkxMDEsIDM5MTA4LCAzOTExMiwgCisgICAgMzkxMTYsIDM5MTE5LCAxNTg3OCwgMzY3NywgMzkxMjcsIDE1NTA5LCAzOTE0MCwgMzkxNDcsIDM5MTUxLCAzOTE1NSwgCisgICAgMzkxNjAsIDM5MTY1LCAzOTE3MSwgMzkxNzUsIDM5MTc5LCAzOTE4MiwgNzc0MiwgMTU1MjAsIDM5MTg3LCAzOTE5MSwgCisgICAgMzkxOTcsIDM5MjA2LCAzOTIxMSwgMzkyMTgsIDM1ODAzLCAzOTIyNCwgMzkyMjksIDM5MjMzLCAzOTIzOCwgMzkyNDUsIAorICAgIDM5MjQ5LCAzOTI1MiwgMzkyNTYsIDM5MjYxLCAxNDU1MiwgMzkyNjgsIDM5Mjc1LCAxMDY2LCAzOTI3OSwgMzkyODQsIAorICAgIDM5Mjg5LCAzOTI5NSwgMzkzMDAsIDM5MzA1LCAzOTMwOSwgMzkzMTksIDM5MzI0LCAzOTMzMCwgMzkzMzUsIDM5MzQxLCAKKyAgICAzOTM0NiwgMzkzNTIsIDM5MzYyLCAzOTM2NywgMzkzNzIsIDM5Mzc2LCA3MjI5LCA3MjQxLCAzOTM4MSwgMzkzODQsIAorICAgIDM5MzkxLCAzOTM5NywgMzQwNTksIDM0MDY2LCAzOTQwNiwgMzk0MTAsIDMyMDE2LCAzOTQxOCwgMzk0MjksIDM5NDM3LCAKKyAgICAzNTk5NSwgMzk0NDQsIDM5NDQ5LCAzOTQ1NCwgMzk0NjUsIDM5NDcyLCAzOTQ4MywgMzIwNDAsIDIxNDQ0LCAzOTQ5MSwgCisgICAgNzM1LCAzOTQ5NiwgMzk1MDIsIDI4MDMwLCAzOTUwOCwgMzk1MTMsIDM5NTIzLCAzOTUzMiwgMzk1MzksIDM5NTQ1LCAKKyAgICAzOTU0OSwgMzk1NTIsIDM5NTU5LCAzOTU2NSwgMzk1NzIsIDM5NTc4LCAzOTU4OCwgMzk1OTYsIDM5NjAyLCAzOTYwOCwgCisgICAgMzk2MTMsIDM5NjE3LCAzOTYyNCwgMzk2MzAsIDM5NjM3LCAzODg4OCwgNTM1LCAxMzgwNSwgMzk2NDMsIDM5NjQ4LCAKKyAgICAzOTY1MSwgMzk2NTcsIDM5NjY1LCAxMzk2LCAzOTY3MCwgMzk2NzQsIDM5Njc5LCAzOTY4NiwgMzk2OTIsIDM5Njk2LCAKKyAgICAzOTcwMCwgMzk3MDUsIDM5NzE0LCAzOTcyMSwgMzk3MzEsIDM5NzM3LCAyODA3NCwgMzk3NTQsIDM5NzYzLCAzOTc3MSwgCisgICAgMzk3NzcsIDM5NzgyLCAzOTc4OSwgMzk3OTUsIDM5ODAzLCAzOTgxMiwgMzk4MjAsIDM5ODI0LCAzOTgyOSwgMzk4MzcsIAorICAgIDMyMDQ5LCAzOTg0MywgMzk4NjIsIDE1ODExLCAzOTg3NiwgMzk4OTIsIDM5OTA2LCAzOTkxMiwgMzk5MTcsIDM5OTIyLCAKKyAgICAzOTkyNywgMzk5MzMsIDMyMDU1LCAzOTkzOCwgMzk5NDUsIDM5OTUwLCAzOTk1NCwgMzQ1LCAyOTM2LCAzOTk2MSwgMzk5NjYsIAorICAgIDM5OTcxLCAyNzMwNSwgMzk3OTIsIDM5OTc1LCAzOTk4MCwgMzk5ODgsIDM5OTkyLCAzOTk5NSwgNDAwMDEsIDQwMDA3LCAKKyAgICA0MDAxMSwgMjgxMjksIDQwMDE0LCA0MDAxOSwgNDAwMjMsIDQwMDI2LCA0MDAzMSwgNDAwMzUsIDQwMDQwLCA0MDA0NSwgCisgICAgNDAwNDksIDQwMDU0LCA0MDA1OCwgNDAwNjIsIDIxMTY2LCAyMTE3NywgNDAwNjYsIDQwMDcxLCA0MDA3NywgMjY5MzYsIAorICAgIDQwMDgyLCA0MDA4NiwgMjEyNTMsIDE2MDU5LCA0MDA4OSwgNDAwOTQsIDQwMDk5LCA0MDEwNCwgNDAxMDksIDQwMTE0LCAKKyAgICA0MDExOSwgNDAxMjQsIDQ0NywgNDMsIDMxMjc0LCAzMTI3OSwgMzEyODQsIDMxMjkwLCAzMTI5NSwgMzEzMDAsIDQwMTI5LCAKKyAgICAzMTMwNCwgNDAxMzMsIDQwMTM3LCA0MDE0MSwgMzEzMDksIDMxMzE1LCA0MDE1NSwgMzEzMjYsIDMxMzMxLCA0MDE2MywgCisgICAgNDAxNjgsIDMxMzM3LCA0MDE3MywgNDAxNzgsIDQwMTgzLCA0MDE4OCwgNDAxOTQsIDQwMjAwLCA0MDIwNiwgMzEzNTQsIAorICAgIDQwMjE5LCA0MDIyNSwgMzEzNTgsIDQwMjI5LCAzMTM2MywgNDAyMzQsIDMxMzY4LCAzMTM3MywgNDAyMzcsIDQwMjQyLCAKKyAgICA0MDI0NiwgMzA5MjMsIDQwMjUyLCAxMzU5MiwgNDAyNTksIDQwMjY0LCAzMTM3OCwgNDAyNjgsIDQwMjczLCA0MDI3OCwgCisgICAgNDAyODMsIDQwMjg3LCA0MDI5MiwgNDAyOTcsIDQwMzAzLCA0MDMwOCwgNDAzMTMsIDQwMzE5LCA0MDMyNSwgNDAzMzAsIAorICAgIDQwMzM0LCA0MDMzOSwgNDAzNDQsIDQwMzQ5LCA0MDM1MywgNDAzNTgsIDQwMzYzLCA0MDM2OCwgNDAzNzQsIDQwMzgwLCAKKyAgICA0MDM4NiwgNDAzOTEsIDQwMzk1LCA0MDQwMCwgNDA0MDQsIDMxMzgyLCAzMTM4NywgMzEzOTIsIDQwNDA4LCA0MDQxMiwgCisgICAgNDA0MTYsIDMxMzk3LCAzMTQwMywgMzE0MDksIDMxNDIxLCA0MDQyOCwgMjU5OTYsIDQwNDMyLCA0MDQzNiwgNDA0NDEsIAorICAgIDQwNDQ2LCA0MDQ1MSwgNDA0NTYsIDQwNDYwLCA0MDQ2NCwgNDA0NzQsIDQwNDc5LCA0MDQ4NCwgNDA0ODgsIDQwNDkyLCAKKyAgICA0MDQ5NSwgNDA1MDMsIDMxNDY5LCA0MDUwOCwgMTQ3OSwgNDA1MTQsIDQwNTIyLCA0MDUzMSwgNDA1MzUsIDQwNTM5LCAKKyAgICA0MDU0NywgNDA1NTMsIDQwNTYxLCA0MDU3NywgNDA1ODEsIDQwNTg1LCA0MDU5MCwgNDA2MDUsIDMxNTA2LCAxNzQ5LCAKKyAgICAxMjA0OCwgNDA2MDksIDEzNzgsIDQwNjIxLCA0MDYyMiwgNDA2MzAsIDQwNjM3LCA0MDY0MiwgNDA2NDksIDQwNjU0LCAKKyAgICA5MzcyLCAxMTE0LCAxMDMyNSwgNDA2NjEsIDQwNjY2LCA0MDY2OSwgNDA2NzIsIDQwNjgxLCAxMjg2LCA0MDY4NiwgMzkwMzYsIAorICAgIDQwNjkzLCA0MDY5OCwgMjI0ODYsIDI1NTcsIDQwNzAyLCAxMDczNCwgNDA3MTIsIDQwNzE4LCAyMzM3LCAyMzQ3LCA0MDcyNywgCisgICAgNDA3MzYsIDQwNzQ2LCA0MDc1NywgMzI5MywgMzQyMTIsIDEwMzc3LCAzODA3LCAxNjY2OCwgMTI5MSwgNDA3NjIsIDQwNzcwLCAKKyAgICA0MDc3NywgNDA3ODIsIDQwNzg2LCA0MDc5MCwgMjM4NTgsIDEwNDA0LCA0MDc5OCwgNDA4MDcsIDQwODE2LCA0MDgyNCwgCisgICAgNDA4MzEsIDQwODQyLCA0MDg0NywgNDA4NjAsIDQwODczLCA0MDg4NSwgNDA4OTcsIDQwOTA5LCA0MDkyMiwgNDA5MzMsIAorICAgIDQwOTQ0LCA0MDk1NCwgNDA5NjIsIDQwOTcwLCA0MDk4MiwgNDA5OTQsIDQxMDA1LCA0MTAxNCwgNDEwMjIsIDQxMDI5LCAKKyAgICA0MTA0MSwgNDEwNDgsIDQxMDU3LCA0MTA2NCwgNDEwNzcsIDQxMDgyLCA0MTA5MiwgNDEwOTcsIDQxMTAzLCA0MTEwOCwgCisgICAgMzcxODIsIDQxMTEyLCA0MTExOSwgNDExMjMsIDQxMTMwLCA0MTEzOCwgMjUxOCwgNDExNDUsIDQxMTU2LCA0MTE2NiwgCisgICAgNDExNzUsIDQxMTgzLCA0MTE5MywgNDEyMDEsIDQxMjExLCA0MTIyMCwgNDEyMjUsIDQxMjMxLCA0MTIzNywgMzcwOSwgCisgICAgNDEyNDgsIDQxMjU4LCA0MTI2NywgNDEyNzYsIDQxMjg2LCA0MTI5NCwgNDEzMDMsIDQxMzA4LCA0MTMxMywgNDEzMTgsIAorICAgIDE3MDUsIDM3LCA0MTMyNiwgNDEzMzQsIDQxMzQ1LCA0MTM1NiwgMTYzNDMsIDQxMzY2LCA0MTM3MCwgNDEzNzcsIDQxMzgzLCAKKyAgICA0MTM4OCwgNDEzOTIsIDQxNDAzLCA0MTQxMywgNDE0MjIsIDQxNDMzLCAxNjcxNywgMTY3MjIsIDQxNDM4LCA0MTQ0NywgCisgICAgNDE0NTIsIDQxNDYyLCA0MTQ2NywgNDE0NzUsIDQxNDgzLCA0MTQ5MCwgNDE0OTYsIDcwNzgsIDIyOCwgNDE1MDAsIDQxNTA2LCAKKyAgICA0MTUxMSwgNDE1MTQsIDIxMTcsIDM5MTUyLCA0MTUyMiwgNDE1MjYsIDQxNTI5LCAxNTEyLCA0MTUzNSwgMTM5NjcsIDEyOTYsIAorICAgIDQxNTQwLCA0MTU1MywgNDE1NjcsIDI2NDMsIDQxNTg1LCA0MTU5NywgNDE2MDksIDI2NTcsIDI2NzQsIDQxNjIzLCA0MTYzNiwgCisgICAgMjY4OSwgNDE2NTAsIDQxNjYyLCAyNzA0LCA0MTY3NiwgMTMwMiwgMTMwOCwgMTMxNCwgMTA2NTIsIDQxNjgxLCA0MTY4NiwgCisgICAgNDE2OTEsIDQxNjk1LCA0MTcxMCwgNDE3MjUsIDQxNzQwLCA0MTc1NSwgNDE3NzAsIDQxNzg1LCA0MTgwMCwgNDE4MTUsIAorICAgIDQxODMwLCA0MTg0NSwgNDE4NjAsIDQxODc1LCA0MTg5MCwgNDE5MDUsIDQxOTIwLCA0MTkzNSwgNDE5NTAsIDQxOTY1LCAKKyAgICA0MTk4MCwgNDE5OTUsIDQyMDEwLCA0MjAyNSwgNDIwNDAsIDQyMDU1LCA0MjA3MCwgNDIwODUsIDQyMTAwLCA0MjExNSwgCisgICAgNDIxMzAsIDQyMTQ1LCA0MjE2MCwgNDIxNzUsIDQyMTkwLCA0MjIwNSwgNDIyMjAsIDQyMjM1LCA0MjI1MCwgNDIyNjUsIAorICAgIDQyMjgwLCA0MjI5NSwgNDIzMTAsIDQyMzI1LCA0MjM0MCwgNDIzNTUsIDQyMzcwLCA0MjM4NSwgNDI0MDAsIDQyNDE1LCAKKyAgICA0MjQzMCwgNDI0NDUsIDQyNDYwLCA0MjQ3NSwgNDI0OTAsIDQyNTA1LCA0MjUyMCwgNDI1MzUsIDQyNTUwLCA0MjU2NSwgCisgICAgNDI1ODAsIDQyNTk1LCA0MjYxMCwgNDI2MjUsIDQyNjQwLCA0MjY1NSwgNDI2NzAsIDQyNjg1LCA0MjcwMCwgNDI3MTUsIAorICAgIDQyNzMwLCA0Mjc0NSwgNDI3NjAsIDQyNzc1LCA0Mjc5MCwgNDI4MDUsIDQyODIwLCA0MjgzNSwgNDI4NTAsIDQyODY1LCAKKyAgICA0Mjg4MCwgNDI4OTUsIDQyOTEwLCA0MjkyNSwgNDI5NDAsIDQyOTU1LCA0Mjk3MCwgNDI5ODUsIDQzMDAwLCA0MzAxNSwgCisgICAgNDMwMzAsIDQzMDQ1LCA0MzA2MCwgNDMwNzUsIDQzMDkwLCA0MzEwNSwgNDMxMjAsIDQzMTM1LCA0MzE1MCwgNDMxNjUsIAorICAgIDQzMTgwLCA0MzE5NSwgNDMyMTAsIDQzMjI1LCA0MzI0MCwgNDMyNTUsIDQzMjcwLCA0MzI4NSwgNDMzMDAsIDQzMzE1LCAKKyAgICA0MzMzMCwgNDMzNDUsIDQzMzYwLCA0MzM3NSwgNDMzOTAsIDQzNDA1LCA0MzQyMCwgNDM0MzUsIDQzNDUwLCA0MzQ2NSwgCisgICAgNDM0ODAsIDQzNDk1LCA0MzUxMCwgNDM1MjUsIDQzNTQwLCA0MzU1NSwgNDM1NzAsIDQzNTg1LCA0MzYwMCwgNDM2MTUsIAorICAgIDQzNjMwLCA0MzY0NSwgNDM2NjAsIDQzNjc1LCA0MzY5MCwgNDM3MDUsIDQzNzIwLCA0MzczNSwgNDM3NTAsIDQzNzY1LCAKKyAgICA0Mzc4MCwgNDM3OTUsIDQzODEwLCA0MzgyNSwgNDM4NDAsIDQzODU1LCA0Mzg3MCwgNDM4ODUsIDQzOTAwLCA0MzkxNSwgCisgICAgNDM5MzAsIDQzOTQ1LCA0Mzk2MCwgNDM5NzUsIDQzOTkwLCA0NDAwNSwgNDQwMjAsIDQ0MDM1LCA0NDA1MCwgNDQwNjUsIAorICAgIDQ0MDgwLCA0NDA5NSwgNDQxMTAsIDQ0MTI1LCA0NDE0MCwgNDQxNTUsIDQ0MTcwLCA0NDE4NSwgNDQyMDAsIDQ0MjE1LCAKKyAgICA0NDIzMCwgNDQyNDUsIDQ0MjYwLCA0NDI3NSwgNDQyOTAsIDQ0MzA1LCA0NDMyMCwgNDQzMzUsIDQ0MzUwLCA0NDM2NSwgCisgICAgNDQzODAsIDQ0Mzk1LCA0NDQxMCwgNDQ0MjUsIDQ0NDQwLCA0NDQ1NSwgNDQ0NzAsIDQ0NDg1LCA0NDUwMCwgNDQ1MTUsIAorICAgIDQ0NTMwLCA0NDU0NSwgNDQ1NjAsIDQ0NTc1LCA0NDU5MCwgNDQ2MDUsIDQ0NjIwLCA0NDYzNSwgNDQ2NTAsIDQ0NjY1LCAKKyAgICA0NDY4MCwgNDQ2OTUsIDQ0NzEwLCA0NDcyNSwgNDQ3NDAsIDQ0NzU1LCA0NDc3MCwgNDQ3ODUsIDQ0ODAwLCA0NDgxNSwgCisgICAgNDQ4MzAsIDQ0ODQ1LCA0NDg2MCwgNDQ4NzUsIDQ0ODkwLCA0NDkwNSwgNDQ5MjAsIDQ0OTM1LCA0NDk1MCwgNDQ5NjUsIAorICAgIDQ0OTgwLCA0NDk5NSwgNDUwMTAsIDQ1MDI1LCA0NTA0MCwgNDUwNTUsIDQ1MDcwLCA0NTA4NSwgNDUxMDAsIDQ1MTE1LCAKKyAgICA0NTEzMCwgNDUxNDUsIDQ1MTYwLCA0NTE3NSwgNDUxOTAsIDQ1MjA1LCA0NTIyMCwgNDUyMzUsIDQ1MjUwLCA0NTI2NSwgCisgICAgNDUyODAsIDQ1Mjk1LCA0NTMxMCwgNDUzMjUsIDQ1MzQwLCA0NTM1NSwgNDUzNzAsIDQ1Mzg1LCA0NTQwMCwgNDU0MTUsIAorICAgIDQ1NDMwLCA0NTQ0NSwgNDU0NjAsIDQ1NDc1LCA0NTQ5MCwgNDU1MDUsIDQ1NTIwLCA0NTUzNSwgNDU1NTAsIDQ1NTY1LCAKKyAgICA0NTU4MCwgNDU1OTUsIDQ1NjEwLCA0NTYyNSwgNDU2NDAsIDQ1NjU1LCA0NTY3MCwgNDU2ODUsIDQ1NzAwLCA0NTcxNSwgCisgICAgNDU3MzAsIDQ1NzQ1LCA0NTc2MCwgNDU3NzUsIDQ1NzkwLCA0NTgwNSwgNDU4MjAsIDQ1ODM1LCA0NTg1MCwgNDU4NjUsIAorICAgIDQ1ODgwLCA0NTg5NSwgNDU5MTAsIDQ1OTI1LCA0NTk0MCwgNDU5NTUsIDQ1OTcwLCA0NTk4NSwgNDYwMDAsIDQ2MDE1LCAKKyAgICA0NjAzMCwgNDYwNDUsIDQ2MDYwLCA0NjA3NSwgNDYwOTAsIDQ2MTA1LCA0NjEyMCwgNDYxMzUsIDQ2MTUwLCA0NjE2NSwgCisgICAgNDYxODAsIDQ2MTk1LCA0NjIxMCwgNDYyMjUsIDQ2MjQwLCA0NjI1NSwgNDYyNzAsIDQ2Mjg1LCA0NjMwMCwgNDYzMTUsIAorICAgIDQ2MzMwLCA0NjM0NSwgNDYzNjAsIDQ2Mzc1LCA0NjM5MCwgNDY0MDUsIDQ2NDIwLCA0NjQzNSwgNDY0NTAsIDQ2NDY1LCAKKyAgICA0NjQ4MCwgNDY0OTUsIDQ2NTEwLCA0NjUyNSwgNDY1NDAsIDQ2NTU1LCA0NjU3MCwgNDY1ODUsIDQ2NjAwLCA0NjYxNSwgCisgICAgNDY2MzAsIDQ2NjQ1LCA0NjY2MCwgNDY2NzUsIDQ2NjkwLCA0NjcwNSwgNDY3MjAsIDQ2NzM1LCA0Njc1MCwgNDY3NjUsIAorICAgIDQ2NzgwLCA0Njc5NSwgNDY4MTAsIDQ2ODI1LCA0Njg0MCwgNDY4NTUsIDQ2ODcwLCA0Njg4NSwgNDY5MDAsIDQ2OTE1LCAKKyAgICA0NjkzMCwgNDY5NDUsIDQ2OTYwLCA0Njk3NSwgNDY5OTAsIDQ3MDA1LCA0NzAyMCwgNDcwMzUsIDQ3MDUwLCA0NzA2NSwgCisgICAgNDcwODAsIDQ3MDk1LCA0NzExMCwgNDcxMjUsIDQ3MTQwLCA0NzE1NSwgNDcxNzAsIDQ3MTg1LCA0NzIwMCwgNDcyMTUsIAorICAgIDQ3MjMwLCA0NzI0NSwgNDcyNjAsIDQ3Mjc1LCA0NzI5MCwgNDczMDUsIDQ3MzIwLCA0NzMzNSwgNDczNTAsIDQ3MzY1LCAKKyAgICA0NzM4MCwgNDczOTUsIDQ3NDEwLCA0NzQyNSwgNDc0NDAsIDQ3NDU1LCA0NzQ3MCwgNDc0ODUsIDQ3NTAwLCA0NzUxNSwgCisgICAgNDc1MzAsIDQ3NTQ1LCA0NzU2MCwgNDc1NzUsIDQ3NTkwLCA0NzYwNSwgNDc2MjAsIDQ3NjM1LCA0NzY1MCwgNDc2NjUsIAorICAgIDQ3NjgwLCA0NzY5NSwgNDc3MTAsIDQ3NzI1LCA0Nzc0MCwgNDc3NTUsIDQ3NzcwLCA0Nzc4NSwgNDc4MDAsIDQ3ODE1LCAKKyAgICA0NzgzMCwgNDc4NDUsIDQ3ODYwLCA0Nzg3NSwgNDc4OTAsIDQ3OTA1LCA0NzkyMCwgNDc5MzUsIDQ3OTUwLCA0Nzk2NSwgCisgICAgNDc5ODAsIDQ3OTk1LCA0ODAxMCwgNDgwMjUsIDQ4MDQwLCA0ODA1NSwgNDgwNzAsIDQ4MDg1LCA0ODEwMCwgNDgxMTUsIAorICAgIDQ4MTMwLCA0ODE0NSwgNDgxNjAsIDQ4MTc1LCA0ODE5MCwgNDgyMDUsIDQ4MjIwLCA0ODIzNSwgNDgyNTAsIDQ4MjY1LCAKKyAgICA0ODI4MCwgNDgyOTUsIDQ4MzEwLCA0ODMyNSwgNDgzNDAsIDQ4MzU1LCA0ODM3MCwgNDgzODUsIDQ4NDAwLCA0ODQxNSwgCisgICAgNDg0MzAsIDQ4NDQ1LCA0ODQ2MCwgNDg0NzUsIDQ4NDkwLCA0ODUwNSwgNDg1MjAsIDQ4NTM1LCA0ODU1MCwgNDg1NjUsIAorICAgIDQ4NTgwLCA0ODU5NSwgNDg2MTAsIDQ4NjI1LCA0ODY0MCwgNDg2NTUsIDQ4NjcwLCA0ODY4NSwgNDg3MDAsIDQ4NzE1LCAKKyAgICA0ODczMCwgNDg3NDUsIDQ4NzYwLCA0ODc3NSwgNDg3OTAsIDQ4ODA1LCA0ODgyMCwgNDg4MzUsIDQ4ODUwLCA0ODg2NSwgCisgICAgNDg4ODAsIDQ4ODk1LCA0ODkxMCwgNDg5MjUsIDQ4OTQwLCA0ODk1NSwgNDg5NzAsIDQ4OTg1LCA0OTAwMCwgNDkwMTUsIAorICAgIDQ5MDMwLCA0OTA0NSwgNDkwNjAsIDQ5MDc1LCA0OTA5MCwgNDkxMDUsIDQ5MTIwLCA0OTEzNSwgNDkxNTAsIDQ5MTY1LCAKKyAgICA0OTE4MCwgNDkxOTUsIDQ5MjEwLCA0OTIyNSwgNDkyNDAsIDQ5MjU1LCA0OTI3MCwgNDkyODUsIDQ5MzAwLCA0OTMxNSwgCisgICAgNDkzMzAsIDQ5MzQ1LCA0OTM2MCwgNDkzNzUsIDQ5MzkwLCA0OTQwNSwgNDk0MjAsIDQ5NDM1LCA0OTQ1MCwgNDk0NjUsIAorICAgIDQ5NDgwLCA0OTQ5NSwgNDk1MTEsIDQ5NTI3LCA0OTU0MywgNDk1NTksIDQ5NTc1LCA0OTU5MSwgNDk2MDcsIDQ5NjIzLCAKKyAgICA0OTYzOSwgNDk2NTUsIDQ5NjcxLCA0OTY4NywgNDk3MDMsIDQ5NzE5LCA0OTczNSwgNDk3NTEsIDQ5NzY3LCA0OTc4MywgCisgICAgNDk3OTksIDQ5ODE1LCA0OTgzMSwgNDk4NDcsIDQ5ODYzLCA0OTg3OSwgNDk4OTUsIDQ5OTExLCA0OTkyNywgNDk5NDMsIAorICAgIDQ5OTU5LCA0OTk3NSwgNDk5OTEsIDUwMDA3LCA1MDAyMywgNTAwMzksIDUwMDU1LCA1MDA3MSwgNTAwODcsIDUwMTAzLCAKKyAgICA1MDExOSwgNTAxMzUsIDUwMTUxLCA1MDE2NywgNTAxODMsIDUwMTk5LCA1MDIxNSwgNTAyMzEsIDUwMjQ3LCA1MDI2MywgCisgICAgNTAyNzksIDUwMjk1LCA1MDMxMSwgNTAzMjcsIDUwMzQzLCA1MDM1OSwgNTAzNzUsIDUwMzkxLCA1MDQwNywgNTA0MjMsIAorICAgIDUwNDM5LCA1MDQ1NSwgNTA0NzEsIDUwNDg3LCA1MDUwMywgNTA1MTksIDUwNTM1LCA1MDU1MSwgNTA1NjcsIDUwNTgzLCAKKyAgICA1MDU5OSwgNTA2MTUsIDUwNjMxLCA1MDY0NywgNTA2NjMsIDUwNjc5LCA1MDY5NSwgNTA3MTEsIDUwNzI3LCA1MDc0MywgCisgICAgNTA3NTksIDUwNzc1LCA1MDc5MSwgNTA4MDcsIDUwODIzLCA1MDgzOSwgNTA4NTUsIDUwODcxLCA1MDg4NywgNTA5MDMsIAorICAgIDUwOTE5LCA1MDkzNSwgNTA5NTEsIDUwOTY3LCA1MDk4MywgNTA5OTksIDUxMDE1LCA1MTAzMSwgNTEwNDcsIDUxMDYzLCAKKyAgICA1MTA3OSwgNTEwOTUsIDUxMTExLCA1MTEyNywgNTExNDMsIDUxMTU5LCA1MTE3NSwgNTExOTEsIDUxMjA3LCA1MTIyMywgCisgICAgNTEyMzksIDUxMjU1LCA1MTI3MSwgNTEyODcsIDUxMzAzLCA1MTMxOSwgNTEzMzUsIDUxMzUxLCA1MTM2NywgNTEzODMsIAorICAgIDUxMzk5LCA1MTQxNSwgNTE0MzEsIDUxNDQ3LCA1MTQ2MywgNTE0NzksIDUxNDk1LCA1MTUxMSwgNTE1MjcsIDUxNTQzLCAKKyAgICA1MTU1OSwgNTE1NzUsIDUxNTkxLCA1MTYwNywgNTE2MjMsIDUxNjM5LCA1MTY1NSwgNTE2NzEsIDUxNjg3LCA1MTcwMywgCisgICAgNTE3MTksIDUxNzM1LCA1MTc1MSwgNTE3NjcsIDUxNzgzLCA1MTc5OSwgNTE4MTUsIDUxODMxLCA1MTg0NywgNTE4NjMsIAorICAgIDUxODc5LCA1MTg5NSwgNTE5MTEsIDUxOTI3LCA1MTk0MywgNTE5NTksIDUxOTc1LCA1MTk5MSwgNTIwMDcsIDUyMDIzLCAKKyAgICA1MjAzOSwgNTIwNTUsIDUyMDcxLCA1MjA4NywgNTIxMDMsIDUyMTE5LCA1MjEzNSwgNTIxNTEsIDUyMTY3LCA1MjE4MywgCisgICAgNTIxOTksIDUyMjE1LCA1MjIzMSwgNTIyNDcsIDUyMjYzLCA1MjI3OSwgNTIyOTUsIDUyMzExLCA1MjMyNywgNTIzNDMsIAorICAgIDUyMzU5LCA1MjM3NSwgNTIzOTEsIDUyNDA3LCA1MjQyMywgNTI0MzksIDUyNDU1LCA1MjQ3MSwgNTI0ODcsIDUyNTAzLCAKKyAgICA1MjUxOSwgNTI1MzUsIDUyNTUxLCA1MjU2NywgNTI1ODMsIDUyNTk5LCA1MjYxNSwgNTI2MzEsIDUyNjQ3LCA1MjY2MywgCisgICAgNTI2NzksIDUyNjk1LCA1MjcxMSwgNTI3MjcsIDUyNzQzLCA1Mjc1OSwgNTI3NzUsIDUyNzkxLCA1MjgwNywgNTI4MjMsIAorICAgIDUyODM5LCA1Mjg1NSwgNTI4NzEsIDUyODg3LCA1MjkwMywgNTI5MTksIDUyOTM1LCA1Mjk1MSwgNTI5NjcsIDUyOTgzLCAKKyAgICA1Mjk5OSwgNTMwMTUsIDUzMDMxLCA1MzA0NywgNTMwNjMsIDUzMDc5LCA1MzA5NSwgNTMxMTEsIDUzMTI3LCA1MzE0MywgCisgICAgNTMxNTksIDUzMTc1LCA1MzE5MSwgNTMyMDcsIDUzMjIzLCA1MzIzOSwgNTMyNTUsIDUzMjcxLCA1MzI4NywgNTMzMDMsIAorICAgIDUzMzE5LCA1MzMzNSwgNTMzNTEsIDUzMzY3LCA1MzM4MywgNTMzOTksIDUzNDE1LCA1MzQzMSwgNTM0NDcsIDUzNDYzLCAKKyAgICA1MzQ3OSwgNTM0OTUsIDUzNTExLCA1MzUyNywgNTM1NDMsIDUzNTU5LCA1MzU3NSwgNTM1OTEsIDUzNjA3LCA1MzYyMywgCisgICAgNTM2MzksIDUzNjU1LCA1MzY3MSwgNTM2ODcsIDUzNzAzLCA1MzcxOSwgNTM3MzUsIDUzNzUxLCA1Mzc2NywgNTM3ODMsIAorICAgIDUzNzk5LCA1MzgxNSwgNTM4MzEsIDUzODQ3LCA1Mzg2MywgNTM4NzksIDUzODk1LCA1MzkxMSwgNTM5MjcsIDUzOTQzLCAKKyAgICA1Mzk1OSwgNTM5NzUsIDUzOTkxLCA1NDAwNywgNTQwMjMsIDU0MDM5LCA1NDA1NSwgNTQwNzEsIDU0MDg3LCA1NDEwMywgCisgICAgNTQxMTksIDU0MTM1LCA1NDE1MSwgNTQxNjcsIDU0MTgzLCA1NDE5OSwgNTQyMTUsIDU0MjMxLCA1NDI0NywgNTQyNjMsIAorICAgIDU0Mjc5LCA1NDI5NSwgNTQzMTEsIDU0MzI3LCA1NDM0MywgNTQzNTksIDU0Mzc1LCA1NDM5MSwgNTQ0MDcsIDU0NDIzLCAKKyAgICA1NDQzOSwgNTQ0NTUsIDU0NDcxLCA1NDQ4NywgNTQ1MDMsIDU0NTE5LCA1NDUzNSwgNTQ1NTEsIDU0NTY3LCA1NDU4MywgCisgICAgNTQ1OTksIDU0NjE1LCA1NDYzMSwgNTQ2NDcsIDU0NjYzLCA1NDY3OSwgNTQ2OTUsIDU0NzExLCA1NDcyNywgNTQ3NDMsIAorICAgIDU0NzU5LCA1NDc3NSwgNTQ3OTEsIDU0ODA3LCA1NDgyMywgNTQ4MzksIDU0ODU1LCA1NDg3MSwgNTQ4ODcsIDU0OTAzLCAKKyAgICA1NDkxOSwgNTQ5MzUsIDU0OTUxLCA1NDk2NywgNTQ5ODMsIDU0OTk5LCA1NTAxNSwgNTUwMzEsIDU1MDQ3LCA1NTA2MywgCisgICAgNTUwNzksIDU1MDk1LCA1NTExMSwgNTUxMjcsIDU1MTQzLCA1NTE1OSwgNTUxNzUsIDU1MTkxLCA1NTIwNywgNTUyMjMsIAorICAgIDU1MjM5LCA1NTI1NSwgNTUyNzEsIDU1Mjg3LCA1NTMwMywgNTUzMTksIDU1MzM1LCA1NTM1MSwgNTUzNjcsIDU1MzgzLCAKKyAgICA1NTM5OSwgNTU0MTUsIDU1NDMxLCA1NTQ0NywgNTU0NjMsIDU1NDc5LCA1NTQ5NSwgNTU1MTEsIDU1NTI3LCA1NTU0MywgCisgICAgNTU1NTksIDU1NTc1LCA1NTU5MSwgNTU2MDcsIDU1NjIzLCA1NTYzOSwgNTU2NTUsIDU1NjcxLCA1NTY4NywgNTU3MDMsIAorICAgIDU1NzE5LCA1NTczNSwgNTU3NTEsIDU1NzY3LCA1NTc4MywgNTU3OTksIDU1ODE1LCA1NTgzMSwgNTU4NDcsIDU1ODYzLCAKKyAgICA1NTg3OSwgNTU4OTUsIDU1OTExLCA1NTkyNywgNTU5NDMsIDU1OTU5LCA1NTk3NSwgNTU5OTEsIDU2MDA3LCA1NjAyMywgCisgICAgNTYwMzksIDU2MDU1LCA1NjA3MSwgNTYwODcsIDU2MTAzLCA1NjExOSwgNTYxMzUsIDU2MTUxLCA1NjE2NywgNTYxODMsIAorICAgIDU2MTk5LCA1NjIxNSwgNTYyMzEsIDU2MjQ3LCA1NjI2MywgNTYyNzksIDU2Mjk1LCA1NjMxMSwgNTYzMjcsIDU2MzQzLCAKKyAgICA1NjM1OSwgNTYzNzUsIDU2MzkxLCA1NjQwNywgNTY0MjMsIDU2NDM5LCA1NjQ1NSwgNTY0NzEsIDU2NDg3LCA1NjUwMywgCisgICAgNTY1MTksIDU2NTM1LCA1NjU1MSwgNTY1NjcsIDU2NTgzLCA1NjU5OSwgNTY2MTUsIDU2NjMxLCA1NjY0NywgNTY2NjMsIAorICAgIDU2Njc5LCA1NjY5NSwgNTY3MTEsIDU2NzI3LCA1Njc0MywgNTY3NTksIDU2Nzc1LCA1Njc5MSwgNTY4MDcsIDU2ODIzLCAKKyAgICA1NjgzOSwgNTY4NTUsIDU2ODcxLCA1Njg4NywgNTY5MDMsIDU2OTE5LCA1NjkzNSwgNTY5NTEsIDU2OTY3LCA1Njk4MywgCisgICAgNTY5OTksIDU3MDE1LCA1NzAzMSwgNTcwNDcsIDU3MDYzLCA1NzA3OSwgNTcwOTUsIDU3MTExLCA1NzEyNywgNTcxNDMsIAorICAgIDU3MTU5LCA1NzE3NSwgNTcxOTEsIDU3MjA3LCA1NzIyMywgNTcyMzksIDU3MjU1LCA1NzI3MSwgNTcyODcsIDU3MzAzLCAKKyAgICA1NzMxOSwgNTczMzUsIDU3MzUxLCA1NzM2NywgNTczODMsIDU3Mzk5LCA1NzQxNSwgNTc0MzEsIDU3NDQ3LCA1NzQ2MywgCisgICAgNTc0NzksIDU3NDk1LCA1NzUxMSwgNTc1MjcsIDU3NTQzLCA1NzU1OSwgNTc1NzUsIDU3NTkxLCA1NzYwNywgNTc2MjMsIAorICAgIDU3NjM5LCA1NzY1NSwgNTc2NzEsIDU3Njg3LCA1NzcwMywgNTc3MTksIDU3NzM1LCA1Nzc1MSwgNTc3NjcsIDU3NzgzLCAKKyAgICA1Nzc5OSwgNTc4MTUsIDU3ODMxLCA1Nzg0NywgNTc4NjMsIDU3ODc5LCA1Nzg5NSwgNTc5MTEsIDU3OTI3LCA1Nzk0MywgCisgICAgNTc5NTksIDU3OTc1LCA1Nzk5MSwgNTgwMDcsIDU4MDIzLCA1ODAzOSwgNTgwNTUsIDU4MDcxLCA1ODA4NywgNTgxMDMsIAorICAgIDU4MTE5LCA1ODEzNSwgNTgxNTEsIDU4MTY3LCA1ODE4MiwgMTY3NDksIDU4MTkxLCA1ODE5NywgNTgyMDMsIDU4MjEzLCAKKyAgICA1ODIyMSwgMTQ4ODEsIDE1NDMyLCA5OTUzLCA1ODIzNCwgMTUyMCwgNTgyNDIsIDM3NjEsIDI3NDE1LCA3MTgzLCA1ODI0OCwgCisgICAgNTgyNTMsIDU4MjU4LCA1ODI2MywgNTgyNjgsIDU4Mjc0LCA1ODI3OSwgNTgyODUsIDU4MjkwLCA1ODI5NiwgNTgzMDEsIAorICAgIDU4MzA2LCA1ODMxMSwgNTgzMTYsIDU4MzIyLCA1ODMyNywgNTgzMzIsIDU4MzM3LCA1ODM0MiwgNTgzNDcsIDU4MzUyLCAKKyAgICA1ODM1NywgNTgzNjMsIDU4MzY4LCA1ODM3NCwgNTgzODEsIDI1NjEsIDU4Mzg2LCA1ODM5MiwgODUyNiwgNTgzOTYsIAorICAgIDU4NDAxLCA1ODQwOCwgNTg0MTYsIDQwLCA1ODQyMCwgNTg0MjYsIDU4NDMxLCA1ODQzNiwgNTg0NDAsIDU4NDQ1LCA1ODQ0OSwgCisgICAgNTg0NTMsIDEwNjc3LCA1ODQ1NywgNTg0NjcsIDU4NDgwLCA1ODQ5MSwgNTg1MDQsIDU4NTExLCA1ODUxNywgNTg1MjIsIAorICAgIDU4NTI4LCA1ODUzNCwgNTg1NDAsIDU4NTQ1LCA1ODU1MCwgNTg1NTUsIDU4NTYwLCA1ODU2NCwgNTg1NjksIDU4NTc0LCAKKyAgICA1ODU3OSwgNTg1ODUsIDU4NTkxLCA1ODU5NywgNTg2MDIsIDU4NjA2LCA1ODYxMSwgNTg2MTYsIDU4NjIwLCA1ODYyNSwgCisgICAgNTg2MzAsIDU4NjM1LCA1ODYzOSwgMTA2OTMsIDEwNzA0LCAxMDcwOSwgMTU2MywgNTg2NDMsIDE1NjgsIDU4NjQ5LCAKKyAgICAxNjIyNiwgNTg2NTIsIDU4NjU4LCAxNTk5LCA1ODY2NCwgMTYwNSwgMTYxMSwgMTA3MzksIDU4NjY5LCA1ODY3NywgNTg2ODQsIAorICAgIDU4Njg4LCA1ODY5NCwgNTg2OTksIDMwOTUyLCA1ODcwNCwgNTg3MTEsIDU4NzE2LCA1ODcyMCwgNTg3MjQsIDE2MTYsIAorICAgIDE2MzE4LCA1ODczMywgNTg3MzcsIDE2MzI5LCAxMTIwLCA1ODc0MSwgNTg3NDgsIDU4NzUzLCA1ODc1NywgMTYzNTQsIAorICAgIDE2MjAsIDM3MzIxLCA1ODc2MCwgNTg3NjUsIDU4Nzc1LCA1ODc4NCwgNTg3ODksIDU4NzkzLCA1ODc5OSwgMTYyNSwgCisgICAgMzkyMzAsIDU4ODA0LCA1ODgxMywgNTg4MTksIDU4ODI0LCAxMDg5NywgMTA5MDMsIDU4ODMwLCA1ODg0MiwgNTg4NTksIAorICAgIDU4ODc2LCA1ODg5MywgNTg5MTAsIDU4OTI3LCA1ODk0NCwgNTg5NjEsIDU4OTc4LCA1ODk5NSwgNTkwMTIsIDU5MDI5LCAKKyAgICA1OTA0NiwgNTkwNjMsIDU5MDgwLCA1OTA5NywgNTkxMTQsIDU5MTMxLCA1OTE0OCwgNTkxNjUsIDU5MTgyLCA1OTE5OSwgCisgICAgNTkyMTYsIDU5MjMzLCA1OTI1MCwgNTkyNjcsIDU5Mjg0LCA1OTMwMSwgNTkzMTgsIDU5MzM1LCA1OTM1MiwgNTkzNjksIAorICAgIDU5Mzg2LCA1OTQwMywgNTk0MjAsIDU5NDM3LCA1OTQ1NCwgNTk0NzEsIDU5NDg4LCA1OTUwNSwgNTk1MjIsIDU5NTM5LCAKKyAgICA1OTU1NiwgNTk1NzMsIDU5NTkwLCA1OTYwNywgNTk2MjQsIDU5NjQxLCA1OTY1OCwgNTk2NzUsIDU5Njg2LCA1OTY5MSwgCisgICAgMTYzMCwgNTk2OTUsIDU5NzAxLCA1OTcwNiwgNTk3MTEsIDkzMTksIDE2MzUsIDU5NzE3LCA1OTcyNiwgMjc3MTAsIDU5NzMxLCAKKyAgICA1OTc0MiwgNTk3NTIsIDU5NzU3LCA1OTc2NCwgNTk3NzAsIDU5Nzc1LCA1OTc4MCwgMTY2MDYsIDU5Nzg0LCAxMDkxNCwgCisgICAgMTY0MCwgMTA5MTksIDU5NzkwLCA1OTc5NSwgNTk4MDEsIDU5ODA2LCA1OTgxMSwgNTk4MTYsIDU5ODIxLCA1OTgyNiwgCisgICAgNTk4MzEsIDU5ODM2LCA1OTg0MiwgNTk4NDgsIDU5ODU0LCA1OTg1OSwgNTk4NjMsIDU5ODY4LCA1OTg3MywgNTk4NzcsIAorICAgIDU5ODgyLCA1OTg4NywgNTk4OTIsIDU5ODk2LCA1OTkwMSwgNTk5MDcsIDU5OTEyLCA1OTkxNywgNTk5MjEsIDU5OTI2LCAKKyAgICA1OTkzMSwgNTk5MzcsIDU5OTQyLCA1OTk0NywgNTk5NTMsIDU5OTU5LCA1OTk2NCwgNTk5NjgsIDU5OTczLCA1OTk3OCwgCisgICAgNTk5ODMsIDU5OTg3LCA1OTk5MiwgNTk5OTcsIDYwMDAyLCA2MDAwOCwgNjAwMTQsIDYwMDE5LCA2MDAyMywgNjAwMjcsIAorICAgIDYwMDMyLCA2MDAzNywgNjAwNDIsIDI5MTA4LCA2MDA0NiwgNjAwNTEsIDYwMDU2LCA2MDA2MiwgNjAwNjcsIDYwMDcyLCAKKyAgICA2MDA3NiwgNjAwODEsIDYwMDg2LCA2MDA5MiwgNjAwOTcsIDYwMTAyLCA2MDEwOCwgNjAxMTQsIDYwMTE5LCA2MDEyMywgCisgICAgNjAxMjgsIDYwMTMzLCA2MDEzNywgNjAxNDIsIDYwMTQ3LCA2MDE1MiwgNjAxNTgsIDYwMTY0LCA2MDE2OSwgNjAxNzMsIAorICAgIDYwMTc4LCA2MDE4MywgNjAxODcsIDYwMTkyLCA2MDE5NywgNjAyMDIsIDYwMjA2LCA2MDIwOSwgMzE2MTQsIDYwMjE0LCAKKyAgICA2MDIyMiwgMTY2NzIsIDM2NjMsIDExMDEwLCA2MDIyOCwgNjAyMzgsIDYwMjUzLCAxMTAxNSwgNjAyNjQsIDYwMjY5LCAKKyAgICA2MDI4MCwgNjAyOTIsIDYwMzA0LCA2MDMxNiwgMjY5NSwgNjAzMjgsIDYwMzMzLCA2MDM0NSwgNjAzNDksIDYwMzU1LCAKKyAgICA2MDM2MSwgNjAzNjYsIDE2NTIsIDEwNjcsIDYwMzc1LCA2MDM4MCwgMzkyODAsIDYwMzg0LCA2MDM4OCwgNjAzOTMsIAorICAgIDYwMzk3LCAxNjc1NywgNjA0MDIsIDYwNDA1LCA2MDQxMywgNjA0MjEsIDE2NTYsIDExMDQwLCAxMTA0NiwgMTY2MSwgCisgICAgNjA0MjksIDYwNDM2LCA2MDQ0MSwgNjA0NTAsIDYwNDYwLCA2MDQ2NywgNjA0NzIsIDYwNDc3LCAxNjY2LCA2MDQ4NCwgCisgICAgNjA0ODksIDE2ODcyLCA2MDQ5MywgNjA0OTgsIDYwNTA1LCA2MDUxMSwgNjA1MTUsIDYwNTI2LCA2MDUzNiwgMTY4OTQsIAorICAgIDkyMjcsIDkyMzQsIDE2NzEsIDYwNTQzLCA2MDU0OSwgNjA1NTcsIDYwNTY0LCA2MDU3MCwgNjA1NzcsIDYwNTg5LCA2MDU5NSwgCisgICAgNjA2MDAsIDYwNjEyLCA2MDYyMywgNjA2MzIsIDYwNjQyLCAzNzQwLCAzMDc4OCwgMzA3OTcsIDE2OTM0LCAxNjc2LCAxNjgwLCAKKyAgICA2MDY1MCwgNjA2NjEsIDYwNjY2LCAxNjgzLCA2MDY3NCwgNjA2NzksIDE2OTg1LCA2MDY5MSwgNjA2OTcsIDYwNzAyLCAKKyAgICA2MDcxMCwgMTY4OCwgNjA3MTUsIDYwNzIwLCA2MDcyOCwgNjA3MzYsIDYwNzQzLCA2MDc1MiwgNjA3NjAsIDYwNzY5LCAKKyAgICAxNjkzLCA2MDc3MywgMTY5OCwgNjA3NzgsIDYwNzg1LCAxNzA1OSwgNjA3OTMsIDYwNzk5LCA2MDgwNCwgNjA4MTIsIAorICAgIDYwODE5LCA2MDgyNywgMjI1NTcsIDYwODMyLCAxMTE3NSwgNjA4NDEsIDYwODQ3LCA2MDg1NCwgNjA4NjEsIDYwODY3LCAKKyAgICA2MDg3NywgNjA4ODMsIDYwODg4LCA2MDg5OSwgNjA5MDQsIDYwOTEyLCAxMTE4NCwgMTExODksIDYwOTIwLCA2MDkyNiwgCisgICAgNjA5MzQsIDM4MDUsIDE3MTAxLCAzOTM2OCwgNjA5MzksIDYwOTQ1LCA2MDk1MCwgNjA5NTgsIDYwOTY1LCAxMjAyOSwgCisgICAgNjA5NzAsIDYwOTc2LCAxNzA5LCA2MDk4MSwgNjA5ODQsIDExMjcsIDYwOTkwLCA2MDk5NSwgNjEwMDAsIDYxMDA2LCAKKyAgICA2MTAxMSwgNjEwMTYsIDYxMDIxLCA2MTAyNiwgNjEwMzEsIDYxMDM2LCAxNzE4LCA5LCA2MTA0MiwgNjEwNDYsIDYxMDUxLCAKKyAgICA2MTA1NSwgNjEwNTksIDYxMDYzLCAzMTg1NCwgNjEwNjgsIDYxMDczLCA2MTA3OCwgNjEwODIsIDYxMDg1LCA2MTA4OSwgCisgICAgNjEwOTMsIDYxMDk4LCA2MTEwMiwgNjExMDcsIDYxMTExLCAzNDU5MSwgMzQ1OTYsIDM0NjAxLCA2MTExNCwgNjExMjEsIAorICAgIDYxMTI3LCAzOTA4OSwgNjExMzcsIDM0NjA3LCAzMjExMiwgMzE4NjksIDMxODc1LCAzNDYyMywgMzE4ODEsIDYxMTQyLCAKKyAgICA2MTE0NywgMzIxNDUsIDYxMTUxLCA2MTE1NCwgNjExNTgsIDYxMTY1LCA2MTE2OCwgNjExNzMsIDYxMTc3LCA2MTE4MSwgCisgICAgNjExODQsIDYxMTk0LCA2MTIwNiwgNjEyMTMsIDYxMjE5LCA2MTIyNiwgMzM1NDgsIDYxMjI5LCA4NTQzLCA4NzcsIDYxMjMyLCAKKyAgICA2MTIzNiwgNjEyNDEsIDM2OTAsIDYxMjQ1LCA2MTI0OCwgMTM2MjUsIDYxMjU1LCA2MTI2MiwgNjEyNzUsIDYxMjgzLCAKKyAgICA2MTI5MiwgNjEzMDEsIDYxMzA2LCA2MTMxNiwgNjEzMjksIDYxMzQxLCA2MTM0OCwgNjEzNTMsIDYxMzYyLCA2MTM3NSwgCisgICAgMzYwMzUsIDYxMzkzLCA2MTM5OCwgNjE0MDUsIDYxNDExLCA2NTIsIDYxNDE2LCA2MTQyNCwgNjE0MzEsIDI3MjU0LCA2MjcsIAorICAgIDYxNDM3LCA2MTQ0MywgNjE0NTMsIDYxNDU5LCA2MTQ2NCwgMzE4OTksIDYwMDMsIDMxOTEzLCA2MTQ2OCwgNjE0NzgsIAorICAgIDYxNDgzLCA2MTQ5MywgNjE1MDgsIDYxNTE0LCA2MTUyMCwgMzE5MjMsIDYxNTI1LCAzMTA2OSwgNjE1MjksIDYxNTM0LCAKKyAgICA2MTUzOSwgNjE1NDMsIDYxNTQ4LCAxNjkzNywgNjE1NTUsIDYxNTYwLCA2MTU2NCwgNjA0NCwgMzE5NDksIDYxNTY4LCAKKyAgICA2MTU3NCwgMzEyLCA2MTU4NCwgNjE1OTEsIDYxNTk4LCA2MTYwMywgNjE2MTIsIDU4NzY5LCA2MTYxOCwgNjE2MjYsIAorICAgIDYxNjMwLCA2MTYzNCwgNjE2MzgsIDYxNjQyLCA2MTY0NywgNjE2NTEsIDYxNjU3LCA2MTY2NSwgNjE2NzAsIDYxNjc1LCAKKyAgICA2MTY3OSwgNjE2ODQsIDYxNjg4LCA2MTY5MiwgNjE2OTgsIDYxNzA0LCA2MTcwOSwgNjE3MTMsIDMyMDczLCA2MTcxOCwgCisgICAgMzIwNzksIDMyMDg1LCA2MTcyMywgNjE3MjksIDYxNzM2LCA2MTc0MSwgNjE3NDUsIDMxMDg2LCAxNjU5OSwgNjE3NDgsIAorICAgIDYxNzUyLCA2MTc1NywgNjE3NjQsIDYxNzcwLCA2MTc3NCwgNjE3NzksIDM4Nzk5LCA2MTc4NSwgNjE3ODksIDYxNzkzLCAKKyAgICA2MTc5OCwgNjE4MDQsIDYxODEwLCA2MTgyMiwgNjE4MzEsIDYxODQxLCA2MTg0NywgNjE4NTQsIDYxODU5LCA2MTg2NCwgCisgICAgNjE4NjgsIDYxODcxLCA2MTg3NywgNjE4ODQsIDYxODg5LCA2MTg5NCwgNjE5MDEsIDYxOTA4LCA2MTkxNCwgNjE5MTksIAorICAgIDYxOTI0LCA2MTkzMiwgMzIwOTAsIDI0MjMsIDYxOTM3LCA2MTk0MiwgNjE5NDgsIDYxOTUzLCA2MTk1OSwgNjE5NjQsIAorICAgIDYxOTY5LCA2MTk3NCwgNjE5ODAsIDMyMTExLCA2MTk4NSwgNjE5OTEsIDYxOTk3LCA2MjAwMywgMzIxNzUsIDYyMDA4LCAKKyAgICA2MjAxMywgNjIwMTgsIDMyMTg2LCA2MjAyMywgNjIwMjgsIDYyMDMzLCA2MjAzOSwgNjIwNDUsIDMyMTkxLCA2MjA1MCwgCisgICAgNjIwNTUsIDYyMDYwLCAzMjI0NiwgMzIyNTIsIDYyMDY1LCA2MjA3MCwgMzIyNTcsIDYyMDc1LCAyNzkzNywgMzIyNzksIAorICAgIDMyMjgzLCA2MjA4MCwgNjIwNTYsIDYyMDg0LCA2MjA5MiwgNjIwOTgsIDYyMTA2LCA2MjExMywgNjIxMTksIDYyMTI5LCAKKyAgICA2MjEzNSwgNjIxNDIsIDEwNjI0LCAzMjI5NywgNjIxNDgsIDYyMTYxLCA2MjE3MCwgNjIxNzYsIDYyMTg1LCA2MjE5MSwgCisgICAgMjM0OTUsIDYyMTk4LCA2MjIwNSwgNjIyMTUsIDMyMjQ3LCA2MjIxOCwgNjIyMjUsIDYyMjMwLCA2MjIzNCwgNjIyMzgsIAorICAgIDYyMjQzLCA2MTIwLCA2MjI0NywgNjIyNTIsIDYyMjU3LCAzNDY4NSwgMzQ2OTAsIDYyMjYxLCAzNDcwNCwgNjIyNjYsIAorICAgIDM0NzA5LCA2MjI3MSwgNjIyNzcsIDM0NzIxLCAzNDcyNywgMzQ3MzMsIDYyMjgyLCA2MjI4OCwgMjI1MjIsIDYyMjk5LCAKKyAgICA2MjMwMiwgNjIzMTQsIDYyMzIyLCAzMjMyMCwgNjIzMjYsIDYyMzM1LCA2MjM0NSwgNjIzNTQsIDMyMzMwLCA2MjM1OSwgCisgICAgNjIzNjYsIDYyMzc1LCA2MjM4MSwgNjIzODksIDYyMzk2LCA2MDk1LCA0Mzk3LCA2MjQwMSwgMzIyNTgsIDYyNDA3LCAKKyAgICA2MjQxMCwgNjI0MTYsIDYyNDIzLCA2MjQyOCwgNjI0MzMsIDIzNDA1LCA2MjQzNywgNjI0NDMsIDYyNDQ5LCA2MjQ1NCwgCisgICAgNjI0NTksIDYyNDYzLCA2MjQ2OSwgNjI0NzUsIDMzNDU4LCA4NjMsIDM1Njk4LCAzNjYxOSwgMzY2MjUsIDMyMzY2LCAKKyAgICA2MjQ4MCwgNjI0ODQsIDYyNDg4LCA2MjQ5MSwgNjI1MDQsIDYyNTEwLCA2MjUxNCwgNjI1MTcsIDYyNTIyLCAzMzc2MSwgCisgICAgNjI1MjYsIDMxMDkxLCAyMTI3NCwgNjI1MzIsIDYwMjQsIDYwMzIsIDkwNjgsIDYyNTM1LCA2MjU0MCwgNjI1NDUsIDYyNTUwLCAKKyAgICA2MjU1NSwgNjI1NjAsIDYyNTY1LCA2MjU3MCwgNjI1NzUsIDYyNTgwLCA2MjU4NiwgNjI1OTEsIDYyNTk2LCA2MjYwMiwgCisgICAgNjI2MDcsIDYyNjEyLCA2MjYxNywgNjI2MjIsIDYyNjI3LCA2MjYzMiwgNjI2MzgsIDYyNjQzLCA2MjY0OSwgNjI2NTQsIAorICAgIDYyNjU5LCA2MjY2NCwgNjI2NjksIDYyNjc0LCA2MjY3OSwgNjI2ODQsIDYyNjg5LCA2MjY5NCwgNjI2OTksIDYyNzA1LCAKKyAgICA2MjcxMCwgNjI3MTUsIDYyNzIwLCA2MjcyNSwgNjI3MzAsIDYyNzM1LCA2Mjc0MSwgNjI3NDYsIDYyNzUxLCA2Mjc1NiwgCisgICAgNjI3NjEsIDYyNzY2LCA2Mjc3MSwgNjI3NzYsIDYyNzgxLCA2Mjc4NiwgNjI3OTIsIDYyNzk3LCA2MjgwMiwgNjI4MDcsIAorICAgIDYyODEyLCA2MjgxOCwgNjI4MjQsIDYyODI5LCA2MjgzNSwgNjI4NDAsIDYyODQ1LCA2Mjg1MCwgNjI4NTUsIDYyODYwLCAKKyAgICAxNTEzLCAyNDUsIDYyODY1LCA2Mjg2OSwgNjI4NzMsIDYyODc3LCAyNTExNiwgNjI4ODEsIDYyODg1LCA2Mjg5MCwgNjI4OTQsIAorICAgIDYyODk5LCA2MjkwMywgNjI5MDgsIDYyOTEzLCA2MjkxOCwgNjI5MjIsIDYyOTI2LCA2MjkzMSwgNjI5MzUsIDEzMzYyLCAKKyAgICA2Mjk0MCwgNjI5NDQsIDYyOTUxLCA2Mjk2MSwgMTUxOTMsIDYyOTcwLCA2Mjk3OSwgNjI5ODMsIDYyOTg4LCA2Mjk5MywgCisgICAgNjI5OTcsIDI0OTA3LCAzMDE5LCA2MzAwMSwgMTczNTAsIDYzMDA3LCA2MzAxNiwgNjMwMjQsIDYzMDMwLCA2MzA0MiwgCisgICAgNjMwNTQsIDYzMDU4LCA2MzA2MywgNjMwNjcsIDYzMDczLCA2MzA3OSwgNjMwODQsIDYzMDk0LCA2MzEwNCwgNjMxMTAsIAorICAgIDYzMTE1LCA2MzExOSwgNjMxMjQsIDYzMTMwLCA2MzEzOSwgNjMxNDgsIDYzMTU2LCAxNTU0NywgNjMxNjAsIDYzMTY5LCAKKyAgICA2MzE3NywgNjMxODksIDYzMjAwLCA2MzIxMSwgNjMyMjAsIDYzMjI0LCA2MzIzMywgNjMyNDMsIDYzMjUxLCA2MzI1NywgCisgICAgNjMyNjIsIDYzMjY4LCA2MzI3MywgOTgsIDMwOTAwLCA2MzI4NCwgMjYyNDksIDI2MjU5LCA2MzI5MCwgNjMyOTcsIDYzMzAzLCAKKyAgICA2MzMwNywgNjMzMTcsIDYzMzI4LCA2MzMzNiwgNjMzNDUsIDYzMzUwLCA2MzM1NSwgNjMzNTksIDE3MzA0LCA2MzM2NywgCisgICAgNjMzNzEsIDYzMzc3LCA2MzM4NywgNjMzOTQsIDYzNDAwLCAzNDc4NCwgNjM0MDYsIDYzNDA4LCA2MzQxMSwgNjM0MTUsIAorICAgIDYzNDI1LCA2MzQzMSwgNjM0MzgsIDEzMzA4LCA2MzQ0NSwgNjM0NTEsIDYzNDYwLCA2MzQ2OSwgNjM0NzUsIDYzNDgxLCAKKyAgICA2MzQ4NywgNjM0OTIsIDYzNDk5LCA2MzUwNiwgNjM1MTIsIDYzNTI1LCA2MzUzNCwgNjM1NDMsIDYzNTQ4LCA2MzU1MiwgCisgICAgNjM1NTgsIDYzNTY1LCA2MzU3MiwgNjM1NzksIDYzNTg2LCA2MzU5MywgNjM1OTgsIDYzNjAyLCA2MzYwNiwgNjM2MDksIAorICAgIDYzNjE5LCA2MzYyMywgNjM2MzUsIDYzNjQ0LCA2MzY0OCwgNjM2NTMsIDYzNjU3LCA2MzY2MywgNjM2NjgsIDYzNjc1LCAKKyAgICA2MzY4NCwgNjM2OTIsIDYzNzAwLCA2MzcwNSwgNjM3MDksIDYzNzE0LCA2MzcxOSwgNjM3MjksIDYzNzM3LCA2Mzc0MiwgCisgICAgNjM3NDYsIDYzNzUwLCA2Mzc1NiwgNjM3NjgsIDYzNzc2LCA2Mzc4NiwgNjM3OTMsIDYzNzk5LCA2MzgwNCwgNjM4MDgsIAorICAgIDYzODEyLCA2MzgxNiwgNjM4MjUsIDYzODM0LCA2Mzg0MywgNjM4NDksIDYzODU1LCA2Mzg2MSwgNjM4NjYsIDYzODczLCAKKyAgICA2Mzg3OSwgNjM4ODcsIDYzODk0LCAxMjQ1NiwgNjM5MDAsIDYzOTA2LCA2MzkxMCwgMTQyMzEsIDYzOTE0LCA2MzkxOSwgCisgICAgNjM5MjksIDYzOTM4LCA2Mzk0NCwgNjM5NTAsIDYzOTU4LCA2Mzk2NSwgNjM5NjksIDYzOTczLCA2Mzk3OSwgNjM5ODcsIAorICAgIDYzOTk0LCA2NDAwMCwgNjQwMTEsIDY0MDE1LCA2NDAxOSwgNjQwMjMsIDY0MDI2LCA2NDAzMiwgNjQwMzcsIDY0MDQxLCAKKyAgICA2NDA0NSwgNjQwNTQsIDY0MDYyLCA2NDA2OSwgNjQwNzUsIDY0MDgyLCAyNDAyOSwgMzg4NDEsIDY0MDg3LCA2NDA5NSwgCisgICAgNjQwOTksIDY0MTAzLCA2NDEwNiwgNjQxMTQsIDY0MTIxLCA2NDEyNywgNjQxMzYsIDY0MTQ0LCA2NDE1MCwgNjQxNTUsIAorICAgIDY0MTU5LCA2NDE2NCwgNjQxNjgsIDY0MTcyLCA2NDE3NywgNjQxODYsIDY0MTkwLCA2NDE5NywgNjQyMDQsIDY0MjEwLCAKKyAgICA2NDIxOCwgNjQyMjQsIDY0MjM1LCA2NDI0MywgNjQyNDksIDIyNjUyLCA2NDI1OCwgNjQyNjUsIDY0MjcyLCA2NDI3OSwgCisgICAgNjQyODYsIDY0MjkzLCA0MTg3MCwgMTMxNDYsIDY0MzAwLCA2NDMwNywgNjQzMTIsIDM0ODIwLCA2MjE3LCA2NDMxOCwgCisgICAgNjQzMjMsIDY0MzI4LCA2NDMzNCwgNjQzNDAsIDY0MzQ2LCA2NDM1MSwgNjQzNTYsIDY0MzYxLCA2NDM2NiwgNjQzNzIsIAorICAgIDY0Mzc3LCA2NDM4MywgNjQzODgsIDY0Mzk0LCA2NDM5OSwgNjQ0MDQsIDY0NDA5LCA2NDQxNCwgNjQ0MTksIDY0NDI0LCAKKyAgICA2NDQyOSwgNjQ0MzUsIDY0NDQwLCA2NDQ0NiwgNjQ0NTEsIDY0NDU2LCA2NDQ2MSwgNjQ0NjYsIDY0NDcxLCA2NDQ3NiwgCisgICAgNjQ0ODIsIDY0NDg3LCA2NDQ5MiwgNjQ0OTcsIDY0NTAyLCA2NDUwNywgNjQ1MTIsIDY0NTE3LCA2NDUyMiwgNjQ1MjcsIAorICAgIDY0NTMyLCA2NDUzOCwgNjQ1NDMsIDY0NTQ4LCA2NDU1MywgNjQ1NTgsIDY0NTYzLCA2NDU2OCwgNjQ1NzMsIDY0NTc4LCAKKyAgICA2NDU4NCwgNjQ1ODksIDY0NTk0LCA2NDU5OSwgNjQ2MDQsIDY0NjA5LCA2NDYxNCwgNjQ2MTksIDY0NjI0LCA2NDYyOSwgCisgICAgNjQ2MzQsIDY0NjM5LCA2NDY0NCwgNjQ2NTAsIDE4MzQsIDIyNCwgMzc0MTcsIDY0NjU1LCA2NDY1OCwgNjQ2NjMsIDY0NjY3LCAKKyAgICA2NDY3MCwgNjQ2NzUsIDYzNjk2LCA2NDY4NiwgNjQ2OTYsIDY0NzAzLCA2NDcxOSwgNjQ3MjgsIDY0NzM4LCA2NDc0OCwgCisgICAgNjQ3NTYsIDY0NzcwLCA2NDc3OCwgNjQ3ODIsIDY0Nzg1LCA2NDc5MiwgNjQ3OTgsIDY0ODA5LCA2NDgyMSwgNjQ4MzIsIAorICAgIDY0ODQxLCA2NDg0OCwgMTI5NywgMjMyOTQsIDY0ODU4LCAyNTkwLCA2NDg2MiwgNjQ4NzEsIDExMzMsIDE3Mjc3LCAzODA1NCwgCisgICAgNjQ4NzksIDY0ODg3LCA2NDkwMSwgNjQ5MTQsIDY0OTE4LCA2NDkyMywgNjQ5MjgsIDY0OTMzLCA2NDkzOSwgNjQ5NDUsIAorICAgIDY0OTUwLCA4NTM1LCA2NDk1NSwgNjQ5NTksIDY0OTY3LCAxMTA0MSwgNjQ5NzIsIDY0OTc4LCA2NDk4NywgMTcyMSwgCisgICAgMTEwNTMsIDczNiwgNjQ5OTEsIDY1MDAwLCA2NTAxMCwgMjcwMTMsIDY1MDE5LCA2NTAyNSwgMTY4NDksIDY1MDMxLCAKKyAgICA2NTAzNSwgMzk2NCwgMTEzODQsIDY1MDQxLCA2NTA0OCwgNjA2NTYsIDY1MDUyLCA2NTA1NiwgMzk4OCwgMTg5LCAxNDE0NiwgCisgICAgNjUwNjIsIDY1MDc0LCA2NTA3OCwgNjUwODQsIDI3NzMwLCA2NTA4OCwgMTEzNzIsIDI3MzAsIDQsIDY1MDkzLCA2NTEwMywgCisgICAgNjUxMDksIDY1MTIwLCA2NTEyNywgNjUxMzMsIDY1MTM5LCA2NTE0NywgNjUxNTQsIDY1MTYwLCA2NTE3MCwgNjUxODAsIAorICAgIDY1MTkwLCAyMzQ4MiwgMTMwOSwgNjUxOTksIDY1MjAzLCA2NTIwNywgNjUyMTMsIDY1MjE3LCAyNzUzLCAyNzU5LCA4NTMyLCAKKyAgICAyMjY0LCA2NTIyMSwgNjUyMjUsIDY1MjM0LCA2NTI0MiwgNjUyNTMsIDY1MjYxLCA2NTI2OSwgNjUyNzUsIDY1MjgwLCAKKyAgICA2NTI5MSwgNjUzMDIsIDY1MzEwLCA2NTMxNiwgOTY4NywgNjUzMjEsIDY1MzI5LCA2NTMzMywgNjUzMzcsIDY1MzQxLCAKKyAgICA2NTM1MywgMjgxMTUsIDY1MzYwLCA2NTM3MCwgNjUzNzYsIDY1MzgyLCA5Nzg5LCA2NTM5MiwgNjU0MDMsIDY1NDEzLCAKKyAgICA2NTQyMiwgNjU0MjYsIDY1NDMzLCAxMTM1LCAxMTcwLCA2NTQ0MywgNjU0NDgsIDY1NDU2LCA2NTQ2NCwgNjU0NzUsIAorICAgIDY1NDgyLCA2NTQ5NiwgMTQwNzUsIDM5MywgNjU1MDYsIDY1NTEwLCA2NTUxOCwgNjU1MjcsIDY1NTM1LCA2NTU0MSwgCisgICAgNjU1NTUsIDY1NTYyLCA2NTU2OCwgNjU1NzcsIDY1NTg0LCA2NTU5NCwgNjU2MDIsIDM4MTIsIDE1NiwgNjU2MTAsIDY1NjIxLCAKKyAgICA2NTYyNSwgNjU2MzcsIDI3OTI4LCAxNjEsIDY1NjQzLCA2NTY0OCwgNjU2NTIsIDY1NjU5LCA2NTY2NSwgNjU2NzMsIAorICAgIDY1NjgwLCA4ODE4LCA2NTY4NywgNjU2OTYsIDY1NzA0LCAzODc4LCA2NTcxNywgODE5OSwgNjU3MjEsIDI3OTgsIDQ1MCwgCisgICAgNjU3MjYsIDY1NzM5LCA2NTc0NCwgMTgzMywgNjY4LCA2NTc0OCwgMzg5NSwgNjU3NTYsIDY1NzYyLCA2NTc2NiwgOTMxLCAKKyAgICA2NTc3NiwgNjU3ODUsIDY1NzkwLCAxNDkxNSwgMTQ5MjIsIDQ1MjMyLCA2NTc5NCwgMzgyMiwgMTMwMzQsIDY1ODAyLCAKKyAgICA2NTgwOSwgMjM1MzgsIDY1ODEzLCA2NTgyMCwgNjU4MjYsIDY1ODMxLCA2NTgzNiwgMTQ5MzUsIDM3MiwgNjU4NDEsIAorICAgIDY1ODUzLCA2NTg1OSwgNjU4NjcsIDI4MTAsIDE3NTMsIDY1ODc1LCA2NTg3NywgNjU4ODIsIDY1ODg3LCA2NTg5MiwgCisgICAgNjU4OTgsIDY1OTAzLCA2NTkwOCwgNjU5MTMsIDY1OTE4LCA2NTkyMywgNjU5MjgsIDY1OTM0LCA2NTkzOSwgNjU5NDQsIAorICAgIDY1OTQ5LCA2NTk1NCwgNjU5NTksIDY1OTY0LCA2NTk2OSwgNjU5NzQsIDY1OTgwLCA2NTk4NSwgNjU5OTAsIDY1OTk1LCAKKyAgICA2NjAwMSwgNjYwMDYsIDY2MDEyLCA2NjAxNywgNjYwMjIsIDY2MDI3LCA2NjAzMiwgNjYwMzcsIDY2MDQyLCA2NjA0NywgCisgICAgNjYwNTMsIDY2MDU4LCA2NjA2NCwgNjYwNjksIDY2MDc0LCA2NjA3OSwgNjYwODQsIDY2MDg5LCA2NjA5NCwgNjYwOTksIAorICAgIDY2MTA0LCA2NjExMCwgNjYxMTUsIDY2MTIwLCA2NjEyNSwgNjYxMjksIDY2MTMzLCA2NjEzOCwgNjYxNDIsIDY2MTQ3LCAKKyAgICA2NjE1MiwgNjYxNTgsIDY2MTYzLCA2NjE2NywgNjYxNzIsIDY2MTc2LCA2NjE3OSwgNjYxODEsIDY2MTg1LCA2NjE4OCwgCisgICAgNjYxOTMsIDY2MTk3LCA2NjIwMSwgNjYyMDUsIDY2MjA5LCA2NjIxOCwgNjYyMjIsIDMyNTI0LCA2NjIyNSwgMzI1MjksIAorICAgIDY2MjMyLCA2NjIzNywgMzI1MzQsIDY2MjQ2LCA2NjI1NSwgMzI1NDAsIDY2MjYwLCAzMjU0NSwgNjYyNjksIDY2Mjc0LCAKKyAgICAxMTU3MSwgNjYyNzgsIDY2MjgzLCA2NjI4OCwgMzI1NTAsIDY2MjkyLCA0MDE5NiwgNjYyOTYsIDY2Mjk5LCA2NjMwMywgCisgICAgODIxMSwgNjYzMDksIDY2MzE0LCA2NjMxOCwgMzcwNSwgMzI1NTUsIDY2MzIxLCA2NjMyNSwgNjYzMjgsIDY2MzMzLCAKKyAgICA2NjMzNywgNjYzNDMsIDY2MzUxLCA2NjM2NCwgNjYzNzMsIDY2Mzc5LCA2NjM4NCwgNjYzOTAsIDY2Mzk0LCA2NjQwMCwgCisgICAgNjY0MDgsIDY2NDEzLCA2NjQxNywgNjY0MjQsIDY2NDMwLCA2NjQzOCwgNjY0NDcsIDY2NDU1LCAzMjU1OCwgNjY0NjIsIAorICAgIDY2NDcyLCA2NjQ4MSwgNjY0OTQsIDY2NDk5LCA2NjUwNCwgNjY1MTMsIDY2NTE5LCA2NjUyNiwgNjY1MzcsIDY2NTQ5LCAKKyAgICA2NjU1NiwgNjY1NjUsIDY2NTc0LCA2NjU4MywgNjY1OTAsIDY2NTk2LCA2NjYwMywgNjY2MTEsIDY2NjE4LCA2NjYyNiwgCisgICAgNjY2MzUsIDY2NjQzLCA2NjY1MCwgNjY2NTgsIDY2NjY3LCA2NjY3NSwgNjY2ODQsIDY2Njk0LCA2NjcwMywgNjY3MTEsIAorICAgIDY2NzE4LCA2NjcyNiwgNjY3MzUsIDY2NzQzLCA2Njc1MiwgNjY3NjIsIDY2NzcxLCA2Njc3OSwgNjY3ODgsIDY2Nzk4LCAKKyAgICA2NjgwNywgNjY4MTcsIDY2ODI4LCA2NjgzOCwgNjY4NDcsIDY2ODU1LCA2Njg2MiwgNjY4NzAsIDY2ODc5LCA2Njg4NywgCisgICAgNjY4OTYsIDY2OTA2LCA2NjkxNSwgNjY5MjMsIDY2OTMyLCA2Njk0MiwgNjY5NTEsIDY2OTYxLCA2Njk3MiwgNjY5ODIsIAorICAgIDY2OTkxLCA2Njk5OSwgNjcwMDgsIDY3MDE4LCA2NzAyNywgNjcwMzcsIDY3MDQ4LCA2NzA1OCwgNjcwNjcsIDY3MDc3LCAKKyAgICA2NzA4OCwgNjcwOTgsIDY3MTA5LCA2NzEyMSwgNjcxMzIsIDY3MTQyLCA2NzE1MSwgNjcxNTksIDY3MTY2LCA2NzE3NCwgCisgICAgNjcxODMsIDY3MTkxLCA2NzIwMCwgNjcyMTAsIDY3MjE5LCA2NzIyNywgNjcyMzYsIDY3MjQ2LCA2NzI1NSwgNjcyNjUsIAorICAgIDY3Mjc2LCA2NzI4NiwgNjcyOTUsIDY3MzAzLCA2NzMxMiwgNjczMjIsIDY3MzMxLCA2NzM0MSwgNjczNTIsIDY3MzYyLCAKKyAgICA2NzM3MSwgNjczODEsIDY3MzkyLCA2NzQwMiwgNjc0MTMsIDY3NDI1LCA2NzQzNiwgNjc0NDYsIDY3NDU1LCA2NzQ2MywgCisgICAgNjc0NzIsIDY3NDgyLCA2NzQ5MSwgNjc1MDEsIDY3NTEyLCA2NzUyMiwgNjc1MzEsIDY3NTQxLCA2NzU1MiwgNjc1NjIsIAorICAgIDY3NTczLCA2NzU4NSwgNjc1OTYsIDY3NjA2LCA2NzYxNSwgNjc2MjUsIDY3NjM2LCA2NzY0NiwgNjc2NTcsIDY3NjY5LCAKKyAgICA2NzY4MCwgNjc2OTAsIDY3NzAxLCA2NzcxMywgNjc3MjQsIDY3NzM2LCA2Nzc0OSwgNjc3NjEsIDY3NzcyLCA2Nzc4MiwgCisgICAgNjc3OTEsIDY3Nzk5LCA2NzgwNiwgNjc4MTQsIDY3ODIzLCA2NzgzMSwgNjc4NDAsIDY3ODUwLCA2Nzg1OSwgNjc4NjcsIAorICAgIDY3ODc2LCA2Nzg4NiwgNjc4OTUsIDY3OTA1LCA2NzkxNiwgNjc5MjYsIDY3OTM1LCA2Nzk0MywgNjc5NTIsIDY3OTYyLCAKKyAgICA2Nzk3MSwgNjc5ODEsIDY3OTkyLCA2ODAwMiwgNjgwMTEsIDY4MDIxLCA2ODAzMiwgNjgwNDIsIDY4MDUzLCA2ODA2NSwgCisgICAgNjgwNzYsIDY4MDg2LCA2ODA5NSwgNjgxMDMsIDY4MTEyLCA2ODEyMiwgNjgxMzEsIDY4MTQxLCA2ODE1MiwgNjgxNjIsIAorICAgIDY4MTcxLCA2ODE4MSwgNjgxOTIsIDY4MjAyLCA2ODIxMywgNjgyMjUsIDY4MjM2LCA2ODI0NiwgNjgyNTUsIDY4MjY1LCAKKyAgICA2ODI3NiwgNjgyODYsIDY4Mjk3LCA2ODMwOSwgNjgzMjAsIDY4MzMwLCA2ODM0MSwgNjgzNTMsIDY4MzY0LCA2ODM3NiwgCisgICAgNjgzODksIDY4NDAxLCA2ODQxMiwgNjg0MjIsIDY4NDMxLCA2ODQzOSwgNjg0NDgsIDY4NDU4LCA2ODQ2NywgNjg0NzcsIAorICAgIDY4NDg4LCA2ODQ5OCwgNjg1MDcsIDY4NTE3LCA2ODUyOCwgNjg1MzgsIDY4NTQ5LCA2ODU2MSwgNjg1NzIsIDY4NTgyLCAKKyAgICA2ODU5MSwgNjg2MDEsIDY4NjEyLCA2ODYyMiwgNjg2MzMsIDY4NjQ1LCA2ODY1NiwgNjg2NjYsIDY4Njc3LCA2ODY4OSwgCisgICAgNjg3MDAsIDY4NzEyLCA2ODcyNSwgNjg3MzcsIDY4NzQ4LCA2ODc1OCwgNjg3NjcsIDY4Nzc3LCA2ODc4OCwgNjg3OTgsIAorICAgIDY4ODA5LCA2ODgyMSwgNjg4MzIsIDY4ODQyLCA2ODg1MywgNjg4NjUsIDY4ODc2LCA2ODg4OCwgNjg5MDEsIDY4OTEzLCAKKyAgICA2ODkyNCwgNjg5MzQsIDY4OTQ1LCA2ODk1NywgNjg5NjgsIDY4OTgwLCA2ODk5MywgNjkwMDUsIDY5MDE2LCA2OTAyOCwgCisgICAgNjkwNDEsIDY5MDUzLCA2OTA2NiwgNjkwODAsIDY5MDkzLCA2OTEwNSwgNjkxMTYsIDY5MTI2LCA2OTEzNSwgNjkxNDMsIAorICAgIDY5MTUwLCA2OTE1NSwgODA1OCwgNjkxNjIsIDMyNTY4LCA2OTE2NywgNjkxNzIsIDMyNTczLCA2OTE3OCwgMjA5MTYsIAorICAgIDMyNTc4LCA2OTE4MywgNjkxODksIDY5MTk3LCA2OTIwMywgNjkyMDksIDY5MjE2LCA2OTIyMywgNjkyMjgsIDY5MjMyLCAKKyAgICA2OTIzNSwgNjkyMzksIDY5MjQ4LCA2OTI1NCwgNjkyNjYsIDY5Mjc3LCA2OTI4MSwgMzA4MSwgODAzMywgNjkyODYsIAorICAgIDY5Mjg5LCA2OTI5MSwgNjkyOTUsIDY5Mjk5LCA2OTMwMywgNjkzMDksIDY5MzE0LCAyNTkyNywgNjkzMTksIDY5MzIzLCAKKyAgICA2OTMyNiwgNjkzMzEsIDY5MzM1LCA2OTM0MiwgNjkzNDgsIDY5MzUyLCA2MTcwLCA2OTM1NiwgMzI1OTUsIDY5MzYxLCAKKyAgICA2OTM2OCwgNjkzNzcsIDY5Mzg1LCA2OTM5NiwgNjk0MDQsIDY5NDEyLCA2OTQxOSwgNjk0MjYsIDY5NDMyLCA2OTQ0MywgCisgICAgMzI2MDAsIDY5NDQ4LCA2OTQ1OSwgNjk0NzEsIDY5NDc5LCA2OTQ5MCwgNjk0OTksIDY5NTEwLCA2OTUxNSwgNjk1MjMsIAorICAgIDI1NTYsIDY5NTI4LCAzNDI3MCwgNjk1NDEsIDY5NTQ1LCA2OTU1NywgNjk1NjUsIDY5NTcwLCA2OTU3OCwgMTc0NzIsIAorICAgIDY5NTg5LCA2OTU5NSwgNjk2MDIsIDY5NjEwLCA2OTYxNiwgMzI2MTAsIDY5NjIxLCAzOTE0LCA1ODIxNywgNjk2MjgsIAorICAgIDY5NjMxLCA2OTYzOSwgNjk2NTIsIDY5NjY1LCA2OTY3OCwgNjk2OTEsIDY5Njk4LCA2OTcwOSwgNjk3MTgsIDQxNjg3LCAKKyAgICA0MTY5MiwgNjk3MjMsIDY5NzI3LCA2OTczNSwgNjk3NDIsIDY5NzUxLCA2OTc1OSwgNjk3NjUsIDY5Nzc0LCA2OTc4MiwgCisgICAgNjk3OTAsIDY5Nzk0LCA2OTgwMywgNjk4MTIsIDY5ODIyLCA2OTgzNSwgNjk4NDgsIDY5ODU4LCAzMjYxNSwgNjk4NjQsIAorICAgIDY5ODcxLCA2OTg3NywgMzI2MjEsIDY5ODgyLCA2OTg4NSwgNjk4ODksIDY5ODk3LCA2OTkwNiwgNDE0MjUsIDY5OTE0LCAKKyAgICA2OTkyMywgNjk5MzEsIDY5OTM4LCA2OTk0NiwgNjk5NTYsIDY5OTY1LCA2OTk3NCwgNjk5ODMsIDY5OTkxLCA3MDAwMiwgCisgICAgNzAwMTIsIDkzNTksIDIxNTU0LCA3MDAyMSwgNzAwMjYsIDcwMDMxLCA3MDAzNSwgNzAwMzksIDcwMDQ0LCA3MDA1MCwgCisgICAgNzAwNTUsIDcwMDYwLCA3MDA2NiwgNzAwNzEsIDcwMDc2LCAyMTUxOSwgNzAwODEsIDcwMDg4LCA3MDA5NiwgNzAxMDQsIAorICAgIDcwMTA5LCA3MDExNiwgNzAxMjMsIDcwMTI4LCA3MDEzMiwgNzAxMzYsIDcwMTQ0LCA3MDE1MiwgMzI2MzgsIDcwMTU4LCAKKyAgICA3MDE2NCwgNzAxNzYsIDcwMTgyLCA3MDE4NiwgNzAxOTMsIDcwMTk4LCA3MDIwOSwgNzAyMTksIDcwMjI5LCA3MDI0MSwgCisgICAgNzAyNDcsIDcwMjU3LCA3MDI2NywgMzI2NjUsIDcwMjc2LCA3MDI4NSwgNzAyOTEsIDcwMzAzLCA3MDMxNCwgNzAzMjEsIAorICAgIDcwMzI2LCA3MDMzMCwgNzAzMzgsIDcwMzQ0LCA3MDM0OSwgNzAzNTQsIDcwMzYxLCA3MDM2OSwgNzAzODEsIDcwMzkxLCAKKyAgICA3MDQwMCwgNzA0MDksIDcwNDE2LCAzNDEzMiwgMjM4MzQsIDcwNDIyLCA3MDQyNywgNzA0MzEsIDcwNDM1LCA3MDQ0MCwgCisgICAgNzA0NDYsIDcwNDU3LCA3MDQ3MCwgNzA0NzUsIDcwNDgyLCAzMjY3MCwgNzA0ODcsIDcwNDk5LCA3MDUwOCwgNzA1MTgsIAorICAgIDcwNTI5LCA3MDU0MiwgNzA1NDksIDcwNTU4LCA3MDU2NywgNzA1NzUsIDcwNTgwLCA3MDU4NiwgMTA1OCwgNzA1OTEsIAorICAgIDcwNTk2LCA3MDYwMSwgNzA2MDYsIDcwNjEyLCA3MDYxNywgNzA2MjIsIDcwNjI4LCA3MDYzNCwgNzA2MzksIDcwNjQzLCAKKyAgICA3MDY0OCwgNzA2NTMsIDcwNjU4LCA1ODcyOSwgNzA2NjMsIDcwNjY4LCA3MDY3MywgNzA2NzgsIDcwNjg0LCA3MDY5MCwgCisgICAgNzA2OTUsIDcwNjk5LCA3MDcwNCwgNzA3MDksIDcwNzE0LCA3MDcyMCwgNzA3MjUsIDcwNzMxLCA3MDczNiwgNzA3NDEsIAorICAgIDcwNzQ2LCA3MDc1MSwgNzA3NTUsIDcwNzYxLCA3MDc2NiwgNzA3NzUsIDcwNzgwLCA3MDc4NSwgNzA3OTAsIDcwNzk1LCAKKyAgICA3MDc5OSwgNzA4MDYsIDcwODEyLCAxNzEyMiwgMTcxMjksIDcwODE3LCA3MDgyMSwgNzA4MjUsIDcwODI5LCA3MDgzMywgCisgICAgNDU0ODcsIDcwODM3LCA3MDc2NywgNzA4MzksIDcwODQ5LCAzMjY3OSwgNzA4NTIsIDcwODYxLCA3MDg2NywgNjE0MywgCisgICAgMzI2ODQsIDcwODcxLCA3MDg3NywgNzA4ODIsIDcwODg4LCA3MDg5MywgNzA4OTcsIDcwOTA0LCA3MDkwOSwgNzA5MTksIAorICAgIDcwOTI4LCA3MDkzMiwgNzA5MzgsIDcwOTQ0LCA3MDk1MCwgNzA5NTQsIDcwOTYyLCA3MDk2OSwgNzA5NzcsIDcwOTg1LCAKKyAgICAzMjY4OSwgNzA5OTIsIDcwOTk1LCA3MTAwMiwgNzEwMDgsIDcxMDEzLCA3MTAxNywgNzEwMjMsIDcxMDMwLCA3MTAzNSwgCisgICAgNzEwMzksIDcxMDQ4LCA3MTA1NiwgNzEwNjIsIDcxMDY3LCAzMjY5NCwgNzEwNzQsIDcxMDgxLCA3MTA4NywgNzEwOTIsIAorICAgIDcxMDk4LCA3MTEwNSwgNzExMTEsIDIxMjgxLCAyNzQzOCwgNzExMTcsIDcxMTIyLCA3MTEyOCwgNzExNDAsIDcwODAwLCAKKyAgICA3MDgwNywgMjE0NTcsIDcxMTUwLCA3MTE1NSwgNzExNjIsIDcxMTY4LCA3MTE3NSwgNzExODEsIDcxMTkyLCA3MTE5NywgCisgICAgOTEwMywgNzEyMDUsIDcxMjA4LCA3MTIxNCwgNzEyMTgsIDcxMjIyLCA3MTIyNSwgNzEyMzEsIDMyNDQzLCA2MTk0LCA5NjQsIAorICAgIDEzNDEyLCA3MTIzOCwgNzEyNDQsIDcxMjUwLCA3MTI1NiwgNzEyNjIsIDcxMjY4LCA3MTI3NCwgNzEyODAsIDcxMjg2LCAKKyAgICA3MTI5MSwgNzEyOTYsIDcxMzAxLCA3MTMwNiwgNzEzMTEsIDcxMzE2LCA3MTMyMSwgNzEzMjYsIDcxMzMxLCA3MTMzNiwgCisgICAgNzEzNDEsIDcxMzQ2LCA3MTM1MSwgNzEzNTcsIDcxMzYyLCA3MTM2NywgNzEzNzMsIDcxMzc4LCA3MTM4MywgNzEzODksIAorICAgIDcxMzk1LCA3MTQwMSwgNzE0MDcsIDcxNDEzLCA3MTQxOSwgNzE0MjUsIDcxNDMxLCA3MTQzNywgNzE0NDIsIDcxNDQ3LCAKKyAgICA3MTQ1MywgNzE0NTgsIDcxNDYzLCA3MTQ2OSwgNzE0NzQsIDcxNDc5LCA3MTQ4NCwgNzE0ODksIDcxNDk0LCA3MTQ5OSwgCisgICAgNzE1MDQsIDcxNTA5LCA3MTUxNCwgNzE1MTksIDcxNTI0LCA3MTUyOSwgNzE1MzUsIDcxNTQwLCA3MTU0NSwgNzE1NTAsIAorICAgIDcxNTU2LCA3MTU2MSwgNzE1NjYsIDcxNTcxLCA3MTU3NiwgNzE1ODIsIDcxNTg3LCA3MTU5MiwgNzE1OTcsIDcxNjAyLCAKKyAgICA3MTYwNywgNzE2MTIsIDcxNjE3LCA3MTYyMiwgNzE2MjcsIDcxNjMyLCA3MTYzNywgNzE2NDIsIDcxNjQ3LCA3MTY1MiwgCisgICAgNzE2NTcsIDcxNjYyLCA3MTY2NywgNzE2NzIsIDcxNjc3LCA3MTY4MywgNzE2ODgsIDcxNjkzLCA3MTY5OCwgNzE3MDMsIAorICAgIDcxNzA4LCA3MTcxMywgNzE3MTgsIDE4NjQsIDE0MiwgNzE3MjMsIDcxNzI3LCA3MTczMSwgNzE3MzYsIDcxNzQ0LCA3MTc0OCwgCisgICAgNzE3NTUsIDcxNzYzLCA3MTc2NywgNzE3ODAsIDcxNzg4LCA3MTc5MiwgNzE3OTUsIDcxODAwLCA3MTgwNCwgNzE4MDksIAorICAgIDcxODEzLCA3MTgyMSwgNzE4MjUsIDIwOTI0LCA3MTgzMCwgNzE4MzQsIDYwOTMwLCA3MTgzOCwgNzE4NDEsIDcxODQ5LCAKKyAgICA3MTg1NywgNzE4NjUsIDcxODcwLCA3MTg3NywgNzE4ODMsIDcxODg5LCA3MTg5NCwgNzE5MDEsIDcxOTA2LCA3MTkxNCwgCisgICAgNjQ5MDYsIDcxOTIxLCA3MTkyNiwgNzE5MzEsIDcxOTM1LCAxMTYzOCwgNzE5MzksIDcxOTQ0LCA3MTk0OSwgNzE5NTMsIAorICAgIDcxOTU2LCA3MTk2MiwgNzE5NjYsIDcxOTc2LCA3MTk4NSwgNzE5ODgsIDcxOTkyLCA3MTk5OSwgNzIwMTIsIDcyMDE4LCAKKyAgICA3MjAyNiwgNzIwMzcsIDcyMDQ4LCA3MjA1OSwgNzIwNzAsIDcyMDc5LCA3MjA4NSwgNzIwOTQsIDcyMTAyLCA3MjExMiwgCisgICAgNzIxMjUsIDcyMTMyLCA3MjE0MywgNzIxNDksIDcyMTU0LCA3MjE1OSwgNzIxNjUsIDcyMTcxLCA3MjE4MSwgNzIxOTAsIAorICAgIDcwNDg5LCA3MjE5OCwgNzIyMDQsIDcyMjEyLCA3MjIxOCwgNzIyMjYsIDcyMjI5LCA3MjIzMywgNzIyMzcsIDcyMjQwLCAKKyAgICA3MjI0NiwgNzIyNTIsIDcyMjYwLCA3MjI3MiwgNzIyODQsIDcyMjkxLCA3MjI5NSwgNzIzMDYsIDcyMzE0LCA3MjMyMSwgCisgICAgNzIzMzMsIDcyMzQxLCA3MjM0OSwgNzIzNTYsIDcyMzYyLCA3MjM3MiwgNzIzODEsIDcyMzg2LCA3MjM5NiwgNzI0MDUsIAorICAgIDQwNzUxLCA3MjQxMiwgNzI0MTYsIDcyNDIxLCA3MjQyOSwgNzI0MzYsIDcyNDQyLCA3MjQ0NiwgNzI0NTYsIDcyNDY3LCAKKyAgICA3MjQ3NSwgNzI0ODIsIDcyNDk0LCA3MjUwNiwgNzI1MTUsIDY5NTMxLCA3MjUyMiwgNzI1MzMsIDcyNTQ3LCA3MjU1NSwgCisgICAgNzI1NjUsIDcyNTcyLCA3MjU4MCwgNzI1OTIsIDcyNjAxLCA3MjYwOSwgNzI2MTksIDcyNjMwLCA3MjY0MiwgNzI2NTEsIAorICAgIDcyNjYxLCA3MjY2OCwgNzI2NzcsIDcyNjkyLCA3MjcwMCwgNzI3MTAsIDcyNzE5LCA3MjcyNywgNzI3NDAsIDcyNzU1LCAKKyAgICA3Mjc1OSwgNzI3NjgsIDcyNzgwLCA3Mjc5MSwgNzI4MDIsIDcyODEzLCA3MjgyMywgNzI4MzQsIDcyODQyLCA3Mjg0OCwgCisgICAgNzI4NTgsIDcyODY2LCA3Mjg3MiwgMjkwMDcsIDcyODc3LCA3Mjg4MywgNzI4ODgsIDcyODk1LCA5NzAxLCAxNzQ5MiwgCisgICAgNzI5MDEsIDcyOTEwLCA3MjkxNSwgNzI5MTksIDcyOTI2LCA3MjkzMiwgNzI5MzcsIDcyOTQyLCA3Mjk1MCwgNzI5NTgsIAorICAgIDcyOTYyLCA3Mjk2NSwgNzI5NjgsIDcyOTcwLCA3Mjk3NywgNzI5ODMsIDcyOTk0LCA3Mjk5OSwgNzMwMDMsIDczMDEwLCAKKyAgICA3MzAxNiwgNzMwMjEsIDczMDI5LCA2NTQwNSwgNjU0MTUsIDczMDM1LCA3MzA0MiwgNzMwNTIsIDEwNjExLCA3MzA1OSwgCisgICAgNzMwNjQsIDI5MjAzLCA3MzA3MywgNzMwNzgsIDczMDg1LCA3MzA5NSwgNzMxMDMsIDczMTExLCA3MzEyMCwgNzMxMjYsIAorICAgIDczMTMyLCA3MzEzOSwgNzMxNDYsIDczMTUxLCA3MzE1NSwgNzMxNjMsIDczMTY4LCA3MzE3MywgNzMxODEsIDczMTg4LCAKKyAgICA3MzE5MywgNzMxOTksIDczMjAyLCA3MzIwNiwgNzMyMTUsIDcxNzc1LCA3MzIyNCwgNzMyMjgsIDczMjM0LCA3MzI0NSwgCisgICAgNzMyNTUsIDE3NTAxLCA3MzI2NiwgNzMyNzQsIDE3NTEzLCA3MzI4MSwgNzMyODUsIDczMjk0LCAyNzMyNCwgNzMzMDEsIAorICAgIDczMzA1LCA3MzMxMCwgNzMzMjcsIDczMzM5LCAxMDU2OSwgNzMzNTEsIDczMzU2LCA3MzM2MSwgNzMzNjYsIDIwOTk3LCAKKyAgICA3MzM3MCwgNzMzNzUsIDczMzgwLCA3MzM4NiwgNzMzOTEsIDU4NDYsIDIxMDAxLCA3MzM5NiwgNzM0MDEsIDczNDA3LCAKKyAgICA3MzQxNCwgNzM0MTksIDczNDI0LCA3MzQzMCwgNzM0MzYsIDczNDQyLCA3MzQ0NywgNzM0NTMsIDczNDU3LCA3MzQ3MSwgCisgICAgNzM0NzksIDczNDg3LCA3MzQ5MywgNzM0OTgsIDczNTA1LCA3MzUxNSwgNzM1MjQsIDczNTI5LCA3MzUzNCwgNzM1NDIsIAorICAgIDczNTQ3LCA3MzU1MywgNzM1NTgsIDczNTY3LCA1OTc4NiwgNzM1NzIsIDczNTc1LCA3MzU5MywgNzM2MTIsIDczNjI1LCAKKyAgICA3MzYzOSwgNzM2NTUsIDczNjYyLCA3MzY2OSwgNzM2NzUsIDczNjgyLCA3MzY4NywgNzM2OTMsIDczNjk5LCA3MzcwNywgCisgICAgNzM3MTMsIDczNzE4LCA3MzcyMywgNzM3MzksIDEwNTgyLCA3Mzc1MywgNzM3NjAsIDczNzY4LCA3Mzc3NCwgNzM3NzgsIAorICAgIDczNzgxLCA3Mzc4NiwgNzM3OTEsIDczNzk4LCA3MzgwMywgNzM4MTIsIDczODE3LCA3MzgyMywgNzM4MzIsIDczODQxLCAKKyAgICA3Mzg0NiwgNzM4NTAsIDczODU4LCA3Mzg2NywgMTE2NjcsIDczODc2LCA3Mzg4NCwgNzM4ODksIDczODk1LCAxMTY3OCwgCisgICAgNzM5MDAsIDczOTAzLCA3MzkwOCwgNzM5MTgsIDczOTI3LCA3MzkzMiwgNzM5MzgsIDczOTQzLCA3Mzk1MSwgNzM5NTgsIAorICAgIDczOTY5LCA3Mzk3OSwgNzM5ODQsIDY0ODM0LCA3Mzk4OSwgNzM5OTUsIDc0MDAwLCA3NDAwNywgNzQwMTYsIDc0MDI0LCAKKyAgICA3NDAzMCwgNzQwMzYsIDc0MDQzLCA3NDA0OSwgNzQwNTMsIDE2OTQ3LCAzMDU1LCA3NDA1OCwgNzQwNjIsIDc0MDY2LCAKKyAgICA3NDA3MiwgNzQwODEsIDc0MDg3LCA3NDA5NCwgNzQwOTgsIDc0MTE5LCA3NDE0MSwgNzQxNTcsIDc0MTc0LCA3NDE5MywgCisgICAgNzQyMDIsIDc0MjEyLCA3NDIxOSwgNzQyMjYsIDI3MjExLCA3NDIzMiwgNzQyMzYsIDc0MjQ0LCA3NDI1NiwgNzQyNjIsIAorICAgIDc0MjcwLCA3NDI3NCwgNzQyODIsIDc0Mjg5LCA3NDI5MywgNzQyOTksIDc0MzA1LCA3NDMxMCwgMzU2MywgNDE4ODcsIAorICAgIDc0MzE2LCA3NDMyMCwgNzQzMjQsIDc0MzI4LCA3NDMzMywgNzQzMzgsIDc0MzQzLCA3NDM0OSwgNzQzNTUsIDc0MzYxLCAKKyAgICA3NDM2OCwgNzQzNzQsIDc0MzgxLCA3NDM4NywgNzQzOTMsIDc0Mzk4LCA3NDQwNCwgNzQ0MDksIDc0NDEzLCA3NDQxOCwgCisgICAgNzQ0MjIsIDc0NDI3LCA0MTkwMiwgNzQ0MzEsIDc0NDM2LCA3NDQ0NCwgNzQ0NDgsIDc0NDUzLCA3NDQ2MCwgNzQ0NjksIAorICAgIDc0NDc1LCA3NDQ3OSwgNzQ0ODYsIDc0NDkwLCA3NDQ5MywgNzQ1MDAsIDc0NTA5LCA3NDUxNCwgNzQ1MTgsIDc0NTI2LCAKKyAgICA3NDUzNSwgNzQ1MzksIDc0NTQ3LCA3NDU1MywgNzQ1NTgsIDc0NTYzLCA3NDU2OSwgNzQ1NzUsIDc0NTgwLCA3NDU4NCwgCisgICAgNzQ1OTAsIDc0NTk1LCA3NDU5OSwgNzQ2MDMsIDc0NjA2LCA3NDYxMSwgNzQ2MTksIDc0NjI5LCA3NDYzNCwgMzkzODcsIAorICAgIDc0NjQyLCA3NDY1NCwgNzQ2NTgsIDc0NjY0LCA3NDY3NiwgNzQ2ODcsIDc0Njk0LCA3NDcwMCwgNzQ3MDcsIDc0NzE5LCAKKyAgICA3NDcyNiwgNzQ3MzIsIDIxMDc1LCA3NDczNiwgNzQ3NDIsIDc0NzQ5LCA3NDc1NSwgNzQ3NjEsIDc0NzY2LCA3NDc3MSwgCisgICAgNzQ3NzYsIDc0Nzg1LCA3MDMzLCA3NDc5MCwgMTY0MTMsIDc0Nzk2LCA3NDgwMCwgNzQ4MDQsIDc0ODA4LCA3NDgxNiwgCisgICAgNzQ4MjUsIDc0ODI5LCA3NDgzNiwgNzQ4NDUsIDc0ODU4LCA3NDg2NCwgNzQ0MjMsIDMwMDY3LCA3NDg2OSwgNzQ4NzEsIAorICAgIDc0ODc2LCA3NDg4MSwgNzQ4ODYsIDc0ODkxLCA3NDg5NiwgNzQ5MDEsIDc0OTA2LCA3NDkxMSwgNzQ5MTYsIDc0OTIxLCAKKyAgICA3NDkyNiwgNzQ5MzEsIDc0OTM2LCA3NDk0MSwgNzQ5NDcsIDc0OTUyLCA3NDk1NywgNzQ5NjIsIDc0OTY3LCA3NDk3MiwgCisgICAgNzQ5NzcsIDc0OTgyLCA3NDk4NywgNzQ5OTMsIDc0OTk5LCA3NTAwNSwgNzUwMTAsIDc1MDE1LCA3NTAyNywgNzUwMzIsIAorICAgIDE4NzAsIDQ5LCA3NTAzNywgNzUwNDIsIDMyNzIxLCA3NTA0NiwgMzI3MjYsIDMyNzMxLCAzMjczNywgMzI3NDIsIDc1MDUwLCAKKyAgICAzMjc0NywgMjIwNzAsIDc1MDcyLCA3NTA3NiwgNzUwODAsIDc1MDg1LCA3NTA4OSwgMzI3NTEsIDc1MDkzLCA3NTEwMSwgCisgICAgMzI3NTYsIDc1MTA4LCA3NTExMSwgNzUxMTYsIDc1MTIwLCA5NTM2LCA3NTEyOSwgMzI3NjEsIDIxOTMyLCA3NTEzMiwgCisgICAgNzUxMzYsIDE0MjgsIDc1MTQxLCAzMjc3MiwgNzUxNDQsIDc1MTQ5LCAyNTcyMCwgMjU3MzAsIDM1MjMzLCA3NTE1NCwgCisgICAgNzUxNTksIDc1MTY0LCA3NTE2OSwgNzUxNzUsIDc1MTgwLCA3NTE4OSwgNzUxOTQsIDc1MjAxLCA3NTIwNywgNzUyMTIsIAorICAgIDc1MjE3LCA3NTIyMiwgNzUyMzIsIDc1MjQxLCA3NTI0NiwgNzUyNTQsIDc1MjU4LCA3NTI2NiwgMzI1ODYsIDM3Mjg4LCAKKyAgICA3NTI3MywgNzUyNzksIDc1Mjg0LCA3NTI4OSwgMTIwMDksIDc1Mjk0LCA3NTMwMCwgNzUzMDUsIDc1MzEyLCA3NTMxOCwgCisgICAgNzUzMjMsIDc1MzMxLCA3NTM0MSwgNzUzNTEsIDc1MzU3LCA3NTM2MiwgNzUzNjgsIDE3NTIzLCA3NTM3NSwgMzYwNDgsIAorICAgIDc1Mzg4LCA3NTM5MywgNzUzOTksIDMwOTY4LCA3NTQxMiwgNzU0MTgsIDc1NDIyLCA3NTQzMSwgNzU0MzgsIDc1NDQ0LCAKKyAgICA3NTQ1MiwgNzU0NjEsIDc1NDY4LCA3NTQ3NCwgNzU0NzcsIDc1NDgxLCAyNTg2MSwgNzU0ODUsIDc1NDkyLCA3NTQ5OCwgCisgICAgNzU1MDYsIDc1NTExLCAyMzk3NywgNzU1MTcsIDc1NTIwLCA3NTUyOCwgNzU1MzYsIDc1NTUwLCA3NTU1NywgNzU1NjMsIAorICAgIDc1NTcwLCA3NTU3NiwgMzI3ODYsIDc1NTgwLCA3NTU4NywgNzU1OTUsIDc1NjAzLCA3NTYwOSwgMzI3OTEsIDc1NjE3LCAKKyAgICA3NTYyMywgNzU2MjgsIDc1NjM4LCA3NTY0NCwgNzU2NTMsIDMwODA1LCAzNDY5MSwgNzU2NjEsIDc1NjY2LCA3NTY3MSwgCisgICAgNzU2NzUsIDc1NjgwLCA3NTY4NCwgNzU2OTIsIDE0OTA3LCAzOTQwMCwgNzU2OTcsIDc1NzAyLCAzMjc5NiwgNjIyMzIsIAorICAgIDc1NzA2LCA3NTcxMSwgNzU3MTUsIDc1NzI0LCA3NTczMiwgNzU3MzgsIDc1NzQzLCA3NTc0OSwgNzU3NTYsIDc1NzYyLCAKKyAgICA3NTc2NywgNzU3NzIsIDc1NzgxLCA3NTc5MywgNzU4MDgsIDMzMDU4LCA3NTgxNCwgMTY1MzIsIDMyODAwLCA3NTgxOCwgCisgICAgNzU4MjUsIDI0MDg3LCA3NTgzMSwgNzU4MzgsIDc1ODQ3LCA3NTg1NCwgNzU4NjMsIDc1ODY5LCA3NTg3NCwgNzU4ODIsIAorICAgIDc1ODg4LCAzMjgxMCwgNzU4OTMsIDc1OTAyLCA3NDY4MiwgNzU5MTEsIDc1OTE4LCA3NTkyNCwgNzU5MzAsIDc1OTQwLCAKKyAgICA3NTk0OCwgNzU5NTUsIDc1OTU5LCAzMjgxNSwgNzU5NjIsIDMyODIxLCAzMjgyNywgNzU5NjcsIDc1OTc1LCA3NTk4MywgCisgICAgNzU5OTMsIDc2MDAyLCA3NjAxMCwgNzYwMTcsIDc2MDI3LCAzMjgzMiwgNzYwMzEsIDc2MDMzLCA3NjAzNywgNzYwNDIsIAorICAgIDc2MDQ2LCA3NjA1MCwgNzYwNTYsIDc2MDYxLCA3NjA2NSwgNzYwNzYsIDc2MDgxLCA3NjA4NiwgMzA2MCwgNzYwOTAsIAorICAgIDc2MDk3LCA3NjEwMSwgNzYxMTAsIDc2MTE4LCA3NjEyNSwgNzYxMzAsIDc2MTM1LCA2MjI3OCwgNzYxMzksIDc2MTQyLCAKKyAgICA3NjE0OCwgNzYxNTYsIDc2MTYyLCA3NjE2NiwgNzYxNzEsIDc2MTc4LCA3NjE4MywgNzYxODksIDM0NzIyLCA3NjE5NCwgCisgICAgNzYxOTcsIDc2MjAyLCA3NjIwNiwgNzYyMTEsIDc2MjE2LCA3NjIyMCwgNzYyMjgsIDc2MjMyLCAyNTczOSwgMjU3NDgsIAorICAgIDc2MjM4LCA3NjI0NCwgNzYyNTAsIDc2MjU1LCA3NjI1OSwgNzYyNjIsIDc2MjcyLCA3NjI4MSwgNzYyODYsIDc2MjkyLCAKKyAgICA3NjI5OSwgNzYzMDUsIDc2MzA5LCA3NjMxNywgNzYzMjIsIDM0NzI4LCA3NjMyNiwgNzYzMzQsIDc2MzQwLCA3NjM0NywgCisgICAgNzYzNTIsIDc2MzU2LCA3NjM2MSwgNTg0MDMsIDM0NzM0LCA3NjM2NywgNzYzNzIsIDc2Mzc2LCA3NjM4MSwgNzYzODYsIAorICAgIDc2MzkxLCA3NjM5NSwgNzY0MDAsIDc2NDA1LCA3NjQxMSwgNzY0MTYsIDc2NDIxLCA3NjQyNywgNzY0MzMsIDc2NDM4LCAKKyAgICA3NjQ0MiwgNzY0NDcsIDc2NDUyLCA3NjQ1NywgNzY0NjEsIDI0MDg2LCA3NjQ2NiwgNzY0NzEsIDc2NDc3LCA3NjQ4MywgCisgICAgNzY0ODksIDc2NDk0LCA3NjQ5OCwgNzY1MDMsIDc2NTA4LCA3NjUxMywgNzY1MTcsIDc2NTIyLCA3NjUyNywgNzY1MzIsIAorICAgIDc2NTM3LCA3NjU0MSwgMzI4NDAsIDc2NTQ5LCA3NjU1MywgNzY1NjEsIDc2NTY5LCA3NjU4MCwgNzY1ODUsIDc2NTg5LCAKKyAgICAyMjM4NCwgNzY1OTQsIDc2NjAwLCA3NjYxMCwgNzY2MTcsIDc2NjIyLCA3NjYzMSwgNzY2MzYsIDc2NjQwLCA3NjY0NSwgCisgICAgNzY2NTMsIDc2NjYxLCA3NjY2OCwgNjUwNjgsIDc2Njc0LCA3NjY4MiwgNzY2ODksIDc2NzAwLCA3NjcwNiwgNzY3MTAsIAorICAgIDc2NzE2LCAzMjg1MCwgNzY3MTksIDc2NzI2LCA3NjczNCwgNzY3MzksIDM5NTkxLCA3Njc0MywgNzY3NDgsIDc2NzU1LCAKKyAgICA3Njc2MCwgODk4NSwgNzY3NjQsIDc2NzcyLCA3Njc3OSwgNzY3ODYsIDc2NzkyLCA3NjgwNiwgNjMzNDAsIDc2ODE0LCAKKyAgICA3NjgyMCwgNzY4MjQsIDc2ODI3LCA3NjgzNSwgNzY4NDIsIDc2ODQ3LCA3Njg2MCwgNzY4NjcsIDc2ODcxLCA3Njg3OCwgCisgICAgNzY4ODMsIDYwODIzLCA3Njg4OCwgNzY4OTEsIDc2ODk4LCA3NjkwNCwgNzY5MDgsIDc2OTE2LCA3NjkyNSwgNzY5MzUsIAorICAgIDc2OTQ1LCA3Njk1NCwgNzY5NjIsIDc2OTczLCA3Njk3OCwgNzY5ODIsIDc2OTg3LCA3Njk5MSwgMzUzNjQsIDc2OTk5LCAKKyAgICAyMTM0NCwgMzUzNzMsIDc3MDA0LCA3NzAwOSwgNzcwMTQsIDc3MDE5LCA3NzAyNCwgNzcwMjksIDc3MDM0LCA3NzAzOCwgCisgICAgNzcwNDMsIDc3MDQ4LCA3NzA1MywgNzcwNTgsIDc3MDYzLCA3NzA2OCwgNzcwNzIsIDc3MDc3LCA3NzA4MiwgNzcwODYsIAorICAgIDc3MDkwLCA3NzA5NCwgNzcwOTgsIDc3MTAzLCA3NzEwOCwgNzcxMTIsIDc3MTE3LCA3NzEyMSwgNzcxMjUsIDc3MTMwLCAKKyAgICA3NzEzNSwgNzcxNDAsIDc3MTQ1LCA3NzE0OSwgNzcxNTQsIDc3MTU5LCA3NzE2MywgNzcxNjgsIDc3MTczLCA3NzE3OCwgCisgICAgNzcxODMsIDc3MTg4LCA3NzE5MywgNzcxOTgsIDc3MjAzLCA3NzIwOCwgNzcyMTMsIDc3MjE4LCA3NzIyMywgNzcyMjgsIAorICAgIDc3MjMzLCA3NzIzOCwgNzcyNDMsIDc3MjQ4LCA3NzI1MywgNzcyNTgsIDc3MjYzLCA3NzI2NywgNzcyNzIsIDc3Mjc3LCAKKyAgICA3NzI4MiwgNzcyODcsIDc3MjkyLCA3NzI5NywgNzczMDIsIDc3MzA3LCA3NzMxMiwgNzczMTcsIDc3MzIyLCA3NzMyNiwgCisgICAgNzczMzEsIDc3MzM1LCA3NzM0MCwgNzczNDUsIDc3MzUwLCA3NzM1NSwgNzczNjAsIDc3MzY1LCA3NzM3MCwgNzczNzUsIAorICAgIDc3MzgwLCA3NzM4NCwgNzczODgsIDc3MzkzLCA3NzM5OCwgNzc0MDIsIDc3NDA3LCA3NzQxMiwgNzc0MTYsIDc3NDIxLCAKKyAgICA3NzQyNiwgNzc0MzEsIDc3NDM2LCA3NzQ0MCwgNzc0NDUsIDc3NDUwLCA3NzQ1NCwgNzc0NTksIDc3NDYzLCA3NzQ2NywgCisgICAgNzc0NzEsIDc3NDc1LCA3NzQ4MCwgNzc0ODQsIDc3NDg4LCA3NzQ5MiwgNzc0OTYsIDc3NTAwLCA3NzUwNCwgNzc1MDgsIAorICAgIDc3NTEyLCA3NzUxNiwgNzc1MjEsIDc3NTI2LCA3NzUzMSwgNzc1MzYsIDc3NTQxLCA3NzU0NiwgNzc1NTEsIDc3NTU2LCAKKyAgICA3NzU2MSwgNzc1NjYsIDc3NTcwLCA3NzU3NCwgNzc1NzgsIDc3NTgyLCA3NzU4NiwgNzc1OTAsIDc3NTk1LCA3NzU5OSwgCisgICAgNzc2MDQsIDc3NjA4LCA3NzYxMywgNzc2MTgsIDc3NjIyLCA3NzYyNiwgNzc2MzEsIDc3NjM1LCA3NzYzOSwgNzc2NDMsIAorICAgIDc3NjQ3LCA3NzY1MSwgNzc2NTUsIDc3NjU5LCA3NzY2MywgNzc2NjcsIDc3NjcxLCA3NzY3NSwgNzc2NzksIDc3NjgzLCAKKyAgICA3NzY4NywgNzc2OTIsIDc3Njk3LCA3NzcwMSwgNzc3MDUsIDc3NzA5LCA3NzcxMywgNzc3MTcsIDc3NzIxLCA3NzcyNiwgCisgICAgNzc3MzAsIDc3NzM0LCA3NzczOCwgNzc3NDIsIDc3NzQ2LCA3Nzc1MCwgNzc3NTUsIDc3NzU5LCA3Nzc2NCwgNzc3NjgsIAorICAgIDc3NzcyLCA3Nzc3NiwgNzc3ODAsIDc3Nzg0LCA3Nzc4OCwgNzc3OTIsIDc3Nzk2LCA3NzgwMCwgNzc4MDQsIDc3ODA4LCAKKyAgICA3NzgxMywgNzc4MTcsIDc3ODIxLCA3NzgyNSwgNzc4MjksIDc3ODMzLCA3NzgzNywgNzc4NDEsIDc3ODQ1LCA3Nzg0OSwgCisgICAgNzc4NTMsIDc3ODU3LCA3Nzg2MiwgNzc4NjYsIDc3ODcwLCA3Nzg3NSwgNzc4ODAsIDc3ODg0LCA3Nzg4OCwgNzc4OTIsIAorICAgIDc3ODk2LCA3NzkwMCwgNzc5MDQsIDc3OTA4LCA3NzkxMiwgNzc5MTcsIDc3OTIxLCA3NzkyNiwgNzc5MzAsIDc3OTM1LCAKKyAgICA3NzkzOSwgNzc5NDQsIDc3OTQ4LCA3Nzk1NCwgNzc5NTksIDc3OTYzLCA3Nzk2OCwgNzc5NzIsIDc3OTc3LCA3Nzk4MSwgCisgICAgNzc5ODYsIDc3OTkwLCA3Nzk5NSwgMTUyMSwgNzc5OTksIDI4MjQsIDE3NTksIDE3NjQsIDc4MDAzLCA3ODAwNywgMjgyOCwgCisgICAgNzgwMTEsIDEzOTcsIDc4MDE2LCAxMzQyLCA3ODAyMCwgMjg0MCwgNzgwMjQsIDc4MDMxLCA3ODAzOCwgNzgwNTIsIDI4NDQsIAorICAgIDcxMzEsIDc4MDYxLCA3ODA2OSwgNzgwNzYsIDc4MDg3LCA3ODA5NiwgNzgxMDMsIDc4MTE1LCA3ODEyOCwgNzgxNDEsIAorICAgIDc4MTUyLCA3ODE1NywgNzgxNjQsIDc4MTc2LCA3ODE4MCwgMjg0OCwgMTE3NDAsIDc4MTkwLCA3ODE5NSwgNzgyMDQsIAorICAgIDc4MjE0LCAyODUyLCA3ODIxOSwgNzgyMjMsIDc4MjI4LCA3ODIzNSwgNzgyNDEsIDc4MjQ5LCA3ODI2MSwgMTM0NywgCisgICAgMTMwMzUsIDc4MjcxLCA3ODI3NSwgNzgyODEsIDc4Mjk1LCA3ODMwNywgNzgzMTksIDc4MzI5LCA3ODMzOCwgNzgzNDcsIAorICAgIDc4MzU2LCA3ODM2NCwgNzgzNzUsIDc4MzgzLCA0MDUxLCA3ODM5MywgNzg0MDQsIDc4NDEzLCA3ODQxOSwgNzg0MzQsIAorICAgIDc4NDQxLCA3ODQ0NywgMzU0ODksIDc4NDUyLCAyODc2LCAxMzAzOSwgNzg0NTYsIDc4NDYzLCA4OTMwLCA3ODQ3MiwgMjg4MSwgCisgICAgMzIzMzYsIDc4NDc4LCA2MDU3MiwgNzg0ODUsIDc4NDkxLCA3ODUwMiwgNzg1MDgsIDc4NTE1LCA3ODUyMSwgNzg1MjksIAorICAgIDc4NTM2LCA3ODU0MiwgNzg1NTIsIDc4NTYxLCA3ODU3MiwgNzg1NzksIDc4NTg1LCA3ODU5NSwgNzg2MDMsIDc4NjA5LCAKKyAgICA3ODYyNCwgNzg2MzAsIDc4NjM1LCA3ODY0MiwgNzg2NDUsIDc4NjUxLCA3ODY1OCwgNzg2NjQsIDc4NjcyLCA3ODY4MSwgCisgICAgNzg2ODksIDc4Njk1LCA3ODcwNCwgNDE0MjcsIDc4NzE4LCA3ODcyMywgNzg3MjksIDE0NzQ0LCA3ODczNCwgNzg3NDcsIAorICAgIDc4NzU2LCA3ODc2NCwgNzg3NzEsIDc4Nzc1LCA3ODc3OSwgNzg3ODIsIDc4Nzg5LCA3ODc5NiwgNzg4MDQsIDc4ODEyLCAKKyAgICA3ODgyMSwgNzg4MjksIDE0NjcxLCA3ODgzNywgNzg4NDIsIDc4ODQ2LCA3ODg1OCwgNzg4NjUsIDc4ODc0LCA3NDgsIAorICAgIDc4ODg0LCA3ODg5MywgNzg5MDQsIDI4OTcsIDc4OTA4LCA3ODkxMiwgNzg5MTgsIDc4OTMxLCA3ODk0MywgNzg5NTMsIAorICAgIDc4OTYyLCA3ODk3NCwgMjYzNTIsIDc4OTg1LCA3ODk5MywgNzkwMDIsIDc5MDEzLCA3OTAyNCwgNzkwMzQsIDc5MDQ0LCAKKyAgICA3OTA1MywgNzkwNjEsIDExMzA1LCA3OTA2OCwgNzkwNzIsIDc5MDc1LCA3OTA4MCwgNzkwODUsIDc5MDg5LCA3OTA5NSwgCisgICAgMTM1MiwgMTE4MTEsIDc5MTAyLCA3OTExMywgNzkxMjIsIDc5MTMwLCA3OTEzOSwgNzkxNDcsIDc5MTYzLCA3OTE3NCwgCisgICAgNzkxODMsIDc5MTkxLCA3OTIwMywgNzkyMTQsIDc5MjMwLCA3OTI0MCwgNzkyNjEsIDc5Mjc0LCA3OTI4MiwgNzkyODksIAorICAgIDE0ODU1LCA3OTMwMiwgNzkzMDcsIDc5MzEzLCA1OTA4LCA3OTMxOSwgNzkzMjIsIDc5MzI5LCA3OTMzOSwgODE3NiwgCisgICAgNzkzNDYsIDc5MzUxLCA3OTM1NiwgNzkzNjEsIDc5MzY5LCA3OTM3OCwgNzkzODYsIDk3NDksIDk3NTgsIDc5MzkxLCAKKyAgICA3OTQwMiwgNzk0MDcsIDc5NDEzLCAyOTEzLCAyOTE4LCA3OTQxOSwgMTA4NzIsIDc5NDI1LCA3OTQzMiwgNzk0MzksIAorICAgIDc5NDUyLCAyMjUxLCA2OCwgNzk0NTcsIDc5NDYyLCA3OTQ3MiwgNzk0NzgsIDc5NDg3LCA3OTQ5NSwgNzk1MDUsIDc5NTA5LCAKKyAgICA3OTUxNCwgNzk1MTgsIDc5NTMwLCAyOTQxLCA3OTUzOCwgNzk1NDYsIDc5NTUxLCA3OTU2MiwgNzk1NzMsIDc5NTgyLCAKKyAgICA3OTU4NywgNzk1OTMsIDc5NTk4LCA3OTYwOCwgNzk2MTgsIDc5NjIzLCA3OTYyOSwgNzk2MzQsIDc5NjQzLCAyMTM5NywgCisgICAgNzk2NDcsIDQxMjgsIDIwLCA3OTY1MiwgNzk2NjEsIDc5NjY4LCA3OTY3NSwgNzk2ODEsIDc5Njg3LCA4NjQsIDc5NjkyLCAKKyAgICA3OTY5NywgNjA5MDAsIDc5NzAyLCA3OTcwNywgNzk3MTMsIDc5NzE5LCA3OTcyNywgNzk3MzIsIDc5NzM5LCA3OTc0NSwgCisgICAgNzk3NTAsIDM4MDAxLCA0MTMyMSwgNzk3NTYsIDI5NDUsIDMyLCA3OTc2NiwgNzk3NzksIDc5Nzg0LCA3OTc5MiwgNzk3OTcsIAorICAgIDc5ODAzLCAyOTY3LCAyODI4OSwgNzk4MDgsIDc5ODE2LCA3OTgyMywgNzk4MjgsIDU4NjQ1LCA2MTkwMywgNzk4MzcsIAorICAgIDc5ODQxLCAxNzA0LCAxODEzLCA3OTg0NiwgNzk4NTEsIDc5ODU4LCAxODE3LCAyNDcsIDc5ODY1LCA3OTg3MSwgMjk4OSwgCisgICAgNzk4NzYsIDc5ODgxLCA3OTg4OCwgMTgyMSwgNzk4OTMsIDc5ODk5LCA3OTkwNCwgNzk5MTYsIDYxMTksIDc5OTI2LCAxODI4LCAKKyAgICA3OTkzMiwgNzk5MzcsIDc5OTQ0LCA3OTk1MSwgNzk5NjYsIDc5OTczLCA3OTk4NCwgNzk5OTIsIDI2MTgsIDc5OTk2LCAKKyAgICA4MDAwOCwgODAwMTMsIDgwMDE3LCA4MDAyMywgMjgxMTQsIDIyNTYsIDgwMDI3LCA4MDAzOCwgODAwNDIsIDgwMDQ2LCAKKyAgICA4MDA1MiwgODAwNTYsIDgwMDY1LCA4MDA2OSwgODAwODAsIDgwMDg0LCAyMzAyLCAzMjE2NSwgODAwODgsIDgwMDk4LCAKKyAgICAzMDgwLCA5MzY0LCA4MDEwNiwgODAxMTEsIDgwMTE1LCA4MDEyNCwgODAxMzEsIDgwMTM3LCAzMDUwLCAxNzEzOSwgODAxNDEsIAorICAgIDgwMTU0LCA4MDE3MiwgODAxNzcsIDgwMTg1LCA4MDE5MywgODAyMDMsIDk5NzgsIDEzMTQ3LCA4MDIxNSwgODAyMjgsIAorICAgIDgwMjM1LCA4MDI0MiwgODAyNTgsIDgwMjY1LCA4MDI3MSwgMTA5NSwgODAyNzgsIDgwMjg1LCA4MDI5NSwgODAzMDQsIAorICAgIDgwMzE2LCA0MjI5MSwgODAzMjQsIDMwNjQsIDEyMDIzLCA4MDMyNywgODAzMzUsIDgwMzM5LCA3ODIzMSwgMzA2OCwgCisgICAgODAzNDMsIDIxMTc4LCAxMjAzOSwgMzc1NiwgODAzNDcsIDMwNzQsIDgwMzUxLCA4MDM2MSwgODAzNjcsIDgwMzczLCAKKyAgICA4MDM3OSwgODAzODUsIDgwMzkxLCA4MDM5NywgODA0MDMsIDgwNDA5LCA4MDQxNSwgODA0MjEsIDgwNDI3LCA4MDQzMywgCisgICAgODA0MzksIDgwNDQ1LCA4MDQ1MSwgODA0NTcsIDgwNDYzLCA4MDQ2OSwgODA0NzUsIDgwNDgxLCA4MDQ4NywgODA0OTMsIAorICAgIDgwNDk5LCA4MDUwNSwgODA1MTEsIDgwNTE4LCA4MDUyNSwgODA1MzEsIDgwNTM3LCA4MDU0MywgODA1NDksIDgwNTU1LCAKKyAgICA4MDU2MSwgMTM1NywgMTYwNDksIDEyMDYxLCA4MDU2NywgODA1NzIsIDgwNTc3LCA4MDU4MiwgODA1ODcsIDgwNTkyLCAKKyAgICA4MDU5NywgODA2MDIsIDgwNjA3LCA4MDYxMiwgODA2MTcsIDgwNjIyLCA4MDYyNywgODA2MzIsIDgwNjM3LCA4MDY0MiwgCisgICAgODA2NDcsIDgwNjUyLCA4MDY1NywgODA2NjIsIDgwNjY3LCA4MDY3MiwgODA2NzcsIDgwNjgyLCA4MDY4NywgODA2OTIsIAorICAgIDgwNjk4LCA4MDcwMywgODA3MDgsIDgwNzE0LCA4MDcxOSwgODA3MjUsIDgwNzMwLCA4MDczNSwgODA3NDEsIDgwNzQ2LCAKKyAgICA4MDc1MSwgODA3NTYsIDgwNzYxLCA4MDc2NiwgODA3NzEsIDgwNzc2LCA4MDc4MSwgODAzNjIsIDgwMzY4LCA4MDM3NCwgCisgICAgODAzODAsIDgwMzg2LCA4MDM5MiwgODAzOTgsIDgwNDA0LCA4MDQxMCwgODA0MTYsIDgwNDIyLCA4MDQyOCwgODA0MzQsIAorICAgIDgwNDQwLCA4MDQ0NiwgODA3ODcsIDgwNDUyLCA4MDQ1OCwgODA0NjQsIDgwNzkzLCA4MDQ3MCwgODA0NzYsIDgwNDgyLCAKKyAgICA4MDQ4OCwgODA0OTQsIDgwNTAwLCA4MDUwNiwgODA1MjYsIDgwNzk5LCA4MDgwNSwgODA1MzIsIDgwODExLCA4MDUzOCwgCisgICAgODA1NDQsIDgwNTUwLCA4MDU1NiwgODA1NjIsIDMwOTEsIDMwOTYsIDgwODE3LCA4MDgyMiwgODA4MjUsIDgwODMxLCAKKyAgICA4MDgzNywgODA4NDQsIDgwODQ5LCA4MDg1NCwgMjMwNywgCiB9OwogCiAvKiBjb2RlLT5uYW1lIHBocmFzZWJvb2sgKi8KICNkZWZpbmUgcGhyYXNlYm9va19zaGlmdCA3Ci0jZGVmaW5lIHBocmFzZWJvb2tfc2hvcnQgMjExCisjZGVmaW5lIHBocmFzZWJvb2tfc2hvcnQgMjA5CiBzdGF0aWMgdW5zaWduZWQgY2hhciBwaHJhc2Vib29rW10gPSB7Ci0gICAgMCwgMjE5LCAyMDYsIDI0NCwgMjU0LCA3NywgMjI0LCAxNDMsIDc3LCA1MCwgNTIsIDI0NywgODYsIDUyLCAyMjYsIDU3LCAKLSAgICA1MiwgMjU0LCAzNSwgMjUzLCAyMjYsIDQyLCAyMjYsIDEzMSwgNDYsIDIyNiwgMTMxLCAyNTMsIDEzMiwgOTQsIDUyLCAyNDksIAotICAgIDE1NywgMjQwLCAxNTksIDI0MywgMjAwLCAyMTksIDY5LCAyMTksIDIzMSwgMjEsIDIxMiwgNzksIDIxLCAxMTYsIDIxLCAKLSAgICAxMDksIDIxLCAxNjYsIDIxLCAxNjMsIDIxLCAxODAsIDIxLCAxODksIDIxLCAxOTgsIDIxLCAxOTUsIDIxLCAyMDAsIDI0OSwgCi0gICAgMTY0LCAyMjEsIDcwLCAyMzMsIDM5LCA1MiwgMjQ1LCA2MSwgNTIsIDI0MiwgMTA3LCA1MiwgMjI0LCAxNTgsIDc3LCAyNDksIAotICAgIDE1NiwgMjUzLCAxMjIsIDcsIDYsIDEsIDYxLCA3LCA2LCAxLCAyNTMsIDc0LCA3LCA2LCAxLCAyNTAsIDI1MiwgNywgNiwgMSwgCi0gICAgMjQ5LCAzLCA3LCA2LCAxLCA3NCwgNywgNiwgMSwgMjQ0LCAyMzAsIDcsIDYsIDEsIDI0MywgMTc3LCA3LCA2LCAxLCAyNDIsIAotICAgIDQxLCA3LCA2LCAxLCA3MiwgNywgNiwgMSwgMjM1LCAxNDIsIDcsIDYsIDEsIDIzNSwgMjcsIDcsIDYsIDEsIDE1MCwgNywgNiwgCi0gICAgMSwgMTgzLCA3LCA2LCAxLCAyMDQsIDcsIDYsIDEsIDc1LCA3LCA2LCAxLCAyMjYsIDIyOSwgNywgNiwgMSwgMjI0LCAyNDAsIAotICAgIDcsIDYsIDEsIDE0OSwgNywgNiwgMSwgMTk3LCA3LCA2LCAxLCAyMTgsIDk5LCA3LCA2LCAxLCA2OSwgNywgNiwgMSwgMjE1LCAKLSAgICA3OSwgNywgNiwgMSwgMjE0LCA4MiwgNywgNiwgMSwgMjEzLCAxNjYsIDcsIDYsIDEsIDIxMywgMTA1LCA3LCA2LCAxLCAyMTIsIAotICAgIDE1MiwgNDIsIDQxLCAxMjUsIDIyMywgMjAzLCAyMTksIDIzMSwgNDYsIDQxLCAxMjUsIDI0OSwgMjI0LCAyNTQsIDE3NCwgCi0gICAgMTE1LCAyMzIsIDI0MiwgMjQyLCAxMTQsIDI1NCwgMTc0LCA3LCAzLCAxLCA2MSwgNywgMywgMSwgMjUzLCA3NCwgNywgMywgCi0gICAgMSwgMjUwLCAyNTIsIDcsIDMsIDEsIDI0OSwgMywgNywgMywgMSwgNzQsIDcsIDMsIDEsIDI0NCwgMjMwLCA3LCAzLCAxLCAKLSAgICAyNDMsIDE3NywgNywgMywgMSwgMjQyLCA0MSwgNywgMywgMSwgNzIsIDcsIDMsIDEsIDIzNSwgMTQyLCA3LCAzLCAxLCAyMzUsIAotICAgIDI3LCA3LCAzLCAxLCAxNTAsIDcsIDMsIDEsIDE4MywgNywgMywgMSwgMjA0LCA3LCAzLCAxLCA3NSwgNywgMywgMSwgMjI2LCAKLSAgICAyMjksIDcsIDMsIDEsIDIyNCwgMjQwLCA3LCAzLCAxLCAxNDksIDcsIDMsIDEsIDE5NywgNywgMywgMSwgMjE4LCA5OSwgNywgCi0gICAgMywgMSwgNjksIDcsIDMsIDEsIDIxNSwgNzksIDcsIDMsIDEsIDIxNCwgODIsIDcsIDMsIDEsIDIxMywgMTY2LCA3LCAzLCAxLCAKLSAgICAyMTMsIDEwNSwgNywgMywgMSwgMjEyLCAxNTIsIDQyLCAyNDksIDQwLCAxMjUsIDcxLCAyMzIsIDI0MiwgNDYsIDI0OSwgNDAsIAotICAgIDEyNSwgMjE3LCA0MiwgMjI4LCAxODQsIDIxOSwgMjA2LCAyMzUsIDE5MSwgMjQ0LCAyNTQsIDc3LCAyNTAsIDExMCwgNTIsIAotICAgIDIyNSwgMTA4LCA1MiwgMjQ5LCAzOSwgNTIsIDIxMywgMzEsIDUyLCAyNTEsIDYzLCAxMzQsIDIyMiwgOTIsIDUyLCAyNDcsIAotICAgIDIwOSwgMjQ5LCAxMDIsIDUyLCAyNDQsIDEwNSwgMjI3LCAyMSwgMjM1LCAyMzUsIDIzMywgNjYsIDUxLCAyNTQsIDE5LCAKLSAgICAyMjQsIDE0MywgNzcsIDIyOCwgMTYzLCA1MiwgMjE5LCAyMzYsIDI0MCwgMTYwLCAyMjMsIDI1MiwgNTIsIDIzMiwgMzcsIAotICAgIDI0OCwgMjIsIDUyLCAyMjUsIDE1NSwgNTIsIDIxOCwgMjIzLCAxMDksIDIxOCwgMjIzLCAxNjYsIDI1NCwgMTY0LCAyNTQsIAotICAgIDE3NCwgMjMxLCA0MSwgNTIsIDIyNSwgMjAwLCA1MiwgMjMxLCAzNywgMjQ3LCA3NCwgMjUwLCAxMTcsIDIxOCwgMjIzLCAKLSAgICAxMTYsIDIzMSwgMjExLCAyMjcsIDIxLCAyMzUsIDIzNSwgMjIzLCAxNDQsIDUxLCAyNTQsIDE5LCAyMjQsIDE0MywgNzcsIAotICAgIDIxNCwgOTcsIDI0MywgMjI4LCAxMjIsIDIyNCwgMTY2LCAyMTQsIDk3LCAyNDMsIDIyOCwgMTIyLCAyNDIsIDksIDIxNCwgCi0gICAgOTcsIDI0MywgMjI4LCAxMzMsIDIyNCwgMTY0LCAyMzUsIDE5MSwgMjI0LCAxNTgsIDc3LCA3LCA2LCAxLCAxMTgsIDIsIAotICAgIDI0MiwgMTEzLCA3LCA2LCAxLCAxMTgsIDIsIDE3OSwgNywgNiwgMSwgMTE4LCAyLCAyNDksIDIyMywgNywgNiwgMSwgMTE4LCAKLSAgICAyLCAyMTcsIDQyLCA3LCA2LCAxLCAxMTgsIDIsIDI0NywgMjA5LCA3LCA2LCAxLCAxMTgsIDIsIDIyMywgMTMxLCA0OSwgNywgCi0gICAgNiwgMSwgMjU0LCAxNDgsIDcsIDYsIDEsIDI1MCwgMjUzLCAyLCAyNTAsIDExNywgNywgNiwgMSwgMTkxLCAyLCAyNDIsIAotICAgIDExMywgNywgNiwgMSwgMTkxLCAyLCAxNzksIDcsIDYsIDEsIDE5MSwgMiwgMjQ5LCAyMjMsIDcsIDYsIDEsIDE5MSwgMiwgCi0gICAgMjQ3LCAyMDksIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAyNDIsIDExMywgNywgNiwgMSwgMjQwLCAxNDYsIDIsIDE3OSwgNywgCi0gICAgNiwgMSwgMjQwLCAxNDYsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgMjQ3LCAyMDksIDcsIDYsIDEsIAotICAgIDI0NSwgMjUsIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDIxNywgNDIsIDcsIDYsIDEsIDE1NywgMiwgMjQyLCAxMTMsIDcsIDYsIAotICAgIDEsIDE1NywgMiwgMTc5LCA3LCA2LCAxLCAxNTcsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAxNTcsIDIsIDIxNywgNDIsIDcsIAotICAgIDYsIDEsIDE1NywgMiwgMjQ3LCAyMDksIDIzMCwgMTU0LCA1MiwgNywgNiwgMSwgMTU3LCAyLCA5MCwgNywgNiwgMSwgMTExLCAKLSAgICAyLCAyNDIsIDExMywgNywgNiwgMSwgMTExLCAyLCAxNzksIDcsIDYsIDEsIDExMSwgMiwgMjQ5LCAyMjMsIDcsIDYsIDEsIAotICAgIDExMSwgMiwgMjQ3LCAyMDksIDcsIDYsIDEsIDIxMywgMTA2LCAyLCAxNzksIDcsIDYsIDEsIDIxNywgMTA0LCA3LCAzLCAxLCAKLSAgICAyMjAsIDI1NSwgMTk3LCA3LCAzLCAxLCAxMTgsIDIsIDI0MiwgMTEzLCA3LCAzLCAxLCAxMTgsIDIsIDE3OSwgNywgMywgMSwgCi0gICAgMTE4LCAyLCAyNDksIDIyMywgNywgMywgMSwgMTE4LCAyLCAyMTcsIDQyLCA3LCAzLCAxLCAxMTgsIDIsIDI0NywgMjA5LCA3LCAKLSAgICAzLCAxLCAxMTgsIDIsIDIyMywgMTMxLCA0OSwgNywgMywgMSwgMjU0LCAxNDgsIDcsIDMsIDEsIDI1MCwgMjUzLCAyLCAyNTAsIAotICAgIDExNywgNywgMywgMSwgMTkxLCAyLCAyNDIsIDExMywgNywgMywgMSwgMTkxLCAyLCAxNzksIDcsIDMsIDEsIDE5MSwgMiwgCi0gICAgMjQ5LCAyMjMsIDcsIDMsIDEsIDE5MSwgMiwgMjQ3LCAyMDksIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCAyNDIsIDExMywgNywgCi0gICAgMywgMSwgMjQwLCAxNDYsIDIsIDE3OSwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDI0OSwgMjIzLCA3LCAzLCAxLCAyNDAsIAotICAgIDE0NiwgMiwgMjQ3LCAyMDksIDcsIDMsIDEsIDI0NSwgMjUsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDIxNywgNDIsIDcsIDMsIAotICAgIDEsIDE1NywgMiwgMjQyLCAxMTMsIDcsIDMsIDEsIDE1NywgMiwgMTc5LCA3LCAzLCAxLCAxNTcsIDIsIDI0OSwgMjIzLCA3LCAKLSAgICAzLCAxLCAxNTcsIDIsIDIxNywgNDIsIDcsIDMsIDEsIDE1NywgMiwgMjQ3LCAyMDksIDI0NywgMTIxLCA1MiwgNywgMywgMSwgCi0gICAgMTU3LCAyLCA5MCwgNywgMywgMSwgMTExLCAyLCAyNDIsIDExMywgNywgMywgMSwgMTExLCAyLCAxNzksIDcsIDMsIDEsIAotICAgIDExMSwgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDExMSwgMiwgMjQ3LCAyMDksIDcsIDMsIDEsIDIxMywgMTA2LCAyLCAxNzksIAotICAgIDcsIDMsIDEsIDIxNywgMTA0LCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgMjQ3LCAyMDksIDcsIDYsIDEsIDExOCwgMiwgMjMyLCAKLSAgICAzNywgNywgMywgMSwgMTE4LCAyLCAyMzIsIDM3LCA3LCA2LCAxLCAxMTgsIDIsIDI1MSwgNzQsIDcsIDMsIDEsIDExOCwgMiwgCi0gICAgMjUxLCA3NCwgNywgNiwgMSwgMTE4LCAyLCAyMjcsIDkwLCA3LCAzLCAxLCAxMTgsIDIsIDIyNywgOTAsIDcsIDYsIDEsIAotICAgIDI1MCwgMjUzLCAyLCAxNzksIDcsIDMsIDEsIDI1MCwgMjUzLCAyLCAxNzksIDcsIDYsIDEsIDI1MCwgMjUzLCAyLCAyNDksIAotICAgIDIyMywgNywgMywgMSwgMjUwLCAyNTMsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAyNTAsIDI1MywgMiwgNjIsIDQ5LCA3LCAzLCAKLSAgICAxLCAyNTAsIDI1MywgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyNTAsIDI1MywgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDI1MCwgCi0gICAgMjUzLCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMjQ5LCA0LCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjQ5LCA0LCAyLCAyNTAsIAotICAgIDE2NiwgNywgNiwgMSwgMjQ5LCA0LCAyLCA5MCwgNywgMywgMSwgMjQ5LCA0LCAyLCA5MCwgNywgNiwgMSwgMTkxLCAyLCAKLSAgICAyMzIsIDM3LCA3LCAzLCAxLCAxOTEsIDIsIDIzMiwgMzcsIDcsIDYsIDEsIDE5MSwgMiwgMjUxLCA3NCwgNywgMywgMSwgCi0gICAgMTkxLCAyLCAyNTEsIDc0LCA3LCA2LCAxLCAxOTEsIDIsIDYyLCA0OSwgNywgMywgMSwgMTkxLCAyLCA2MiwgNDksIDcsIDYsIAotICAgIDEsIDE5MSwgMiwgMjI3LCA5MCwgNywgMywgMSwgMTkxLCAyLCAyMjcsIDkwLCA3LCA2LCAxLCAxOTEsIDIsIDI1MCwgMTY2LCAKLSAgICA3LCAzLCAxLCAxOTEsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDI0MywgCi0gICAgMTc4LCAyLCAyNDksIDIyMywgNywgNiwgMSwgMjQzLCAxNzgsIDIsIDI1MSwgNzQsIDcsIDMsIDEsIDI0MywgMTc4LCAyLCAKLSAgICAyNTEsIDc0LCA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyNDMsIDE3OCwgMiwgNjIsIDQ5LCA3LCAKLSAgICA2LCAxLCAyNDMsIDE3OCwgMiwgMjUwLCAxMTcsIDcsIDMsIDEsIDI0MywgMTc4LCAyLCAyNTAsIDExNywgNywgNiwgMSwgCi0gICAgMjQyLCA0MiwgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDI0MiwgNDIsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAyNDIsIDQyLCAyLCAKLSAgICA5MCwgNywgMywgMSwgMjQyLCA0MiwgMiwgOTAsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAyMTcsIDQyLCA3LCAzLCAxLCAyNDAsIAotICAgIDE0NiwgMiwgMjE3LCA0MiwgNywgNiwgMSwgMjQwLCAxNDYsIDIsIDIzMiwgMzcsIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCAKLSAgICAyMzIsIDM3LCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgMjUxLCA3NCwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDI1MSwgNzQsIDcsIAotICAgIDYsIDEsIDI0MCwgMTQ2LCAyLCAyMjcsIDkwLCA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgMjI3LCA5MCwgNywgNiwgMSwgMjQwLCAKLSAgICAxNDYsIDIsIDYyLCA0OSwgNywgMywgMSwgMjQ3LCA3MywgNzIsIDcsIDYsIDI2LCAyMzYsIDI2LCA3LCAzLCAyNiwgMjM2LCAKLSAgICAyNiwgNywgNiwgMSwgMjM1LCAxNDMsIDIsIDI0OSwgMjIzLCA3LCAzLCAxLCAyMzUsIDE0MywgMiwgMjQ5LCAyMjMsIDcsIDYsIAotICAgIDEsIDIzNSwgMjgsIDIsIDI1MCwgMTE3LCA3LCAzLCAxLCAyMzUsIDI4LCAyLCAyNTAsIDExNywgNywgMywgMSwgMjMzLCAKLSAgICAyNDgsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCAxNzksIDcsIDMsIDEsIDIzMywgMTcxLCAyLCAxNzksIDcsIDYsIDEsIDIzMywgCi0gICAgMTcxLCAyLCAyNTAsIDExNywgNywgMywgMSwgMjMzLCAxNzEsIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAyMzMsIDE3MSwgMiwgCi0gICAgMjUwLCAxNjYsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMjMzLCAxNzEsIDIsIDIzMSwgMzcsIAotICAgIDI0NywgNzQsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCAyMzEsIDM3LCAyNDcsIDc0LCA3LCA2LCAxLCAyMzMsIDE3MSwgMiwgCi0gICAgOTAsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCA5MCwgNywgNiwgMSwgMjMwLCA5OCwgMiwgMTc5LCA3LCAzLCAxLCAyMzAsIDk4LCAKLSAgICAyLCAxNzksIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDI1MCwgMTE3LCA3LCAzLCAxLCAyMzAsIDk4LCAyLCAyNTAsIDExNywgNywgCi0gICAgNiwgMSwgMjMwLCA5OCwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAyMzAsIAotICAgIDk4LCAyMjUsIDg0LCAyNTEsIDcsIDI1MywgMjI2LCA3LCA2LCAxLCAyNDUsIDk2LCA3LCAzLCAxLCAyNDUsIDk2LCA3LCA2LCAKLSAgICAxLCAxNTcsIDIsIDIzMiwgMzcsIDcsIDMsIDEsIDE1NywgMiwgMjMyLCAzNywgNywgNiwgMSwgMTU3LCAyLCAyNTEsIDc0LCAKLSAgICA3LCAzLCAxLCAxNTcsIDIsIDI1MSwgNzQsIDcsIDYsIDEsIDE1NywgMiwgNTEsIDE3OSwgNywgMywgMSwgMTU3LCAyLCA1MSwgCi0gICAgMTc5LCA3LCA2LCAyNiwgMjI3LCA5OSwgNywgMywgMjYsIDIyNywgOTksIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAxNzksIDcsIAotICAgIDMsIDEsIDIyNCwgMTEzLCAyLCAxNzksIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAyNTAsIDExNywgNywgMywgMSwgMjI0LCAKLSAgICAxMTMsIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAyMjQsIDExMywgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCAKLSAgICAyNTAsIDE2NiwgNywgNiwgMSwgMjIzLCA0LCAyLCAxNzksIDcsIDMsIDEsIDIyMywgNCwgMiwgMTc5LCA3LCA2LCAxLCAyMjMsIAotICAgIDQsIDIsIDI0OSwgMjIzLCA3LCAzLCAxLCAyMjMsIDQsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAyMjMsIDQsIDIsIDI1MCwgCi0gICAgMTE3LCA3LCAzLCAxLCAyMjMsIDQsIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAyMjMsIDQsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAKLSAgICAyMjMsIDQsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAyMTgsIDEwMCwgMiwgMjUwLCAxMTcsIDcsIDMsIDEsIDIxOCwgMTAwLCAKLSAgICAyLCAyNTAsIDExNywgNywgNiwgMSwgMjE4LCAxMDAsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgMjUwLCAKLSAgICAxNjYsIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCA5MCwgNywgMywgMSwgMjE4LCAxMDAsIDIsIDkwLCA3LCA2LCAxLCAxMTEsIDIsIAotICAgIDIxNywgNDIsIDcsIDMsIDEsIDExMSwgMiwgMjE3LCA0MiwgNywgNiwgMSwgMTExLCAyLCAyMzIsIDM3LCA3LCAzLCAxLCAKLSAgICAxMTEsIDIsIDIzMiwgMzcsIDcsIDYsIDEsIDExMSwgMiwgMjUxLCA3NCwgNywgMywgMSwgMTExLCAyLCAyNTEsIDc0LCA3LCAKLSAgICA2LCAxLCAxMTEsIDIsIDIyMywgMTMxLCA0OSwgNywgMywgMSwgMTExLCAyLCAyMjMsIDEzMSwgNDksIDcsIDYsIDEsIDExMSwgCi0gICAgMiwgNTEsIDE3OSwgNywgMywgMSwgMTExLCAyLCA1MSwgMTc5LCA3LCA2LCAxLCAxMTEsIDIsIDIyNywgOTAsIDcsIDMsIDEsIAotICAgIDExMSwgMiwgMjI3LCA5MCwgNywgNiwgMSwgMjE0LCA4MywgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDIxNCwgODMsIDIsIDI0OSwgCi0gICAgMjIzLCA3LCA2LCAxLCAyMTMsIDEwNiwgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDIxMywgMTA2LCAyLCAyNDksIDIyMywgNywgCi0gICAgNiwgMSwgMjEzLCAxMDYsIDIsIDI0NywgMjA5LCA3LCA2LCAxLCAyMTIsIDE1MywgMiwgMTc5LCA3LCAzLCAxLCAyMTIsIAotICAgIDE1MywgMiwgMTc5LCA3LCA2LCAxLCAyMTIsIDE1MywgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyMTIsIDE1MywgMiwgNjIsIDQ5LCAKLSAgICA3LCA2LCAxLCAyMTIsIDE1MywgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDIxMiwgMTUzLCAyLCAyNTAsIDE2NiwgNywgMywgMSwgCi0gICAgMTg0LCAxOTcsIDcsIDMsIDEsIDU0LCAyLCA5MCwgNywgNiwgMSwgNTQsIDIsIDEwMSwgNywgNiwgMSwgNTQsIDIsIDIxNiwgCi0gICAgMjI0LCA3LCAzLCAxLCA1NCwgMiwgMjE2LCAyMjQsIDcsIDYsIDEsIDE2MCwgMTg5LCA3LCAzLCAxLCAxNjAsIDE4OSwgNywgCi0gICAgNiwgMSwgMjI3LCA0MCwgNzUsIDcsIDYsIDEsIDI1MCwgMjUzLCAyLCAxMDEsIDcsIDMsIDEsIDI1MCwgMjUzLCAyLCAxMDEsIAotICAgIDcsIDYsIDEsIDI1NCwgMTI0LCAyNDksIDMsIDcsIDYsIDEsIDI0OSwgNCwgMiwgMTAxLCA3LCA2LCAxLCAyNDksIDQsIDIsIAotICAgIDIxNiwgMjI0LCA3LCAzLCAxLCAyNDksIDQsIDIsIDIxNiwgMjI0LCA3LCAzLCAxLCAyMTYsIDU4LCAyNDgsIDUsIDcsIDYsIAotICAgIDEsIDIyMywgMjAyLCA3NCwgNywgNiwgMSwgMjIyLCAxMTMsIDcsIDYsIDEsIDIyNywgNDAsIDc0LCA3LCA2LCAxLCAyNDQsIAotICAgIDIzMSwgMiwgMTAxLCA3LCAzLCAxLCAyNDQsIDIzMSwgMiwgMTAxLCA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgMTAxLCA3LCA2LCAKLSAgICAxLCAyNDMsIDgzLCA3LCAzLCAxLCAyNDAsIDE5MywgNywgNiwgMSwgMjM1LCAxODMsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAKLSAgICA5MCwgNywgNiwgMSwgMjM1LCAyOCwgMiwgMTAxLCA3LCAzLCAxLCAyMzUsIDI4LCAyLCAxMDEsIDcsIDMsIDEsIDIzMywgCi0gICAgMTcxLCAyLCAxMzQsIDcsIDMsIDEsIDIzMywgMTI0LCAyLCA5MCwgNywgNiwgMSwgMjE2LCA1OCwgMTgzLCA3LCA2LCAxLCAKLSAgICAyMzAsIDk4LCAyLCA0MiwgMTAxLCA3LCAzLCAxLCAyMzAsIDk4LCAyLCAxODQsIDQ2LCAyMzMsIDYwLCA3LCA2LCAxLCAxNTcsIAotICAgIDIsIDIzMSwgMzcsIDIxNywgNDIsIDcsIDYsIDEsIDE1NywgMiwgMjQwLCAyMzUsIDcsIDMsIDEsIDE1NywgMiwgMjQwLCAKLSAgICAyMzUsIDcsIDYsIDEsIDIyNywgODUsIDcsIDMsIDEsIDIyNywgODUsIDcsIDYsIDEsIDIyNiwgMjMwLCAyLCAxMDEsIDcsIDMsIAotICAgIDEsIDIyNiwgMjMwLCAyLCAxMDEsIDcsIDEsIDIxMiwgMjA1LCA3LCA2LCAxLCAxNjAsIDEwOSwgNywgMywgMSwgMTYwLCAKLSAgICAxMDksIDcsIDYsIDEsIDI0NSwgNDAsIDcsIDEsIDIyMywgMjAyLCAyNDUsIDQxLCAyMzIsIDE3NywgNywgMywgMSwgMjE4LCAKLSAgICAxMDAsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCAxMDEsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAKLSAgICAxMDEsIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCAyMjMsIDIwNywgMTAxLCA3LCA2LCAxLCAxMTEsIDIsIDI0MCwgMjM1LCA3LCAKLSAgICAzLCAxLCAxMTEsIDIsIDI0MCwgMjM1LCA3LCA2LCAxLCAyMTUsIDEyOCwgNywgNiwgMSwgMjE1LCA4MCwgMiwgMTAxLCA3LCAKLSAgICA2LCAxLCAyMTMsIDEwNiwgMiwgMTAxLCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgMTAxLCA3LCA2LCAxLCAyMTIsIDE1MywgMiwgCi0gICAgOTAsIDcsIDMsIDEsIDIxMiwgMTUzLCAyLCA5MCwgNywgNiwgMSwgMjQ0LCAyMzIsIDcsIDYsIDEsIDI0NCwgMjMzLCAyMjMsIAotICAgIDIwMSwgNywgMywgMSwgMjQ0LCAyMzMsIDIyMywgMjAxLCA3LCAzLCAxLCAyNDQsIDIzMywgMiwgMjE4LCAyNywgNywgMSwgCi0gICAgMTE3LCAyLCA5MCwgNywgNiwgMSwgMTYwLCAxODAsIDcsIDMsIDEsIDE2MCwgMTgwLCA3LCAxLCAyMzUsIDE5MSwgMjQyLCAKLSAgICAxNTYsIDIxOSwgNzAsIDIsIDkwLCA3LCAxLCAyMTMsIDE2OSwgNywgMSwgMjQ3LCAyNTQsIDI0OSwgMjA0LCA3LCAxLCAyMzMsIAotICAgIDEwMCwgMjQ5LCAyMDQsIDcsIDEsIDI1NCwgNDYsIDI0OSwgMjA0LCA3LCAxLCAyMjMsIDIwNywgMjQ5LCAyMDQsIDcsIDYsIAotICAgIDEsIDI0NSwgMjUxLCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMjQ5LCA0LCAyLCAzLCAxLCAyMTIsIDE1MywgMiwgMjUwLCAKLSAgICAxNjYsIDcsIDMsIDEsIDI0NSwgMjUxLCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMjMyLCAyMTcsIDcsIDYsIDEsIDIzMywgCi0gICAgMTcxLCAyLCAzLCAxLCAyMzUsIDE0MiwgNywgMywgMSwgMjMyLCAyMTcsIDcsIDYsIDEsIDIyOSwgMTcsIDcsIDYsIDEsIAotICAgIDIzMCwgOTgsIDIsIDMsIDEsIDIzNSwgMTQyLCA3LCAzLCAxLCAyMjksIDE3LCA3LCA2LCAxLCAxMTgsIDIsIDI1MCwgMTY2LCAKLSAgICA3LCAzLCAxLCAxMTgsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDI0MCwgCi0gICAgMTQ2LCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMTU3LCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMTU3LCAyLCAyNTAsIDE2NiwgCi0gICAgNywgNiwgMSwgMTExLCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMTExLCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMTExLCAyLCAKLSAgICAyNDcsIDIxMCwgMjQsIDIzMiwgMzcsIDcsIDMsIDEsIDExMSwgMiwgMjQ3LCAyMTAsIDI0LCAyMzIsIDM3LCA3LCA2LCAxLCAKLSAgICAxMTEsIDIsIDI0NywgMjEwLCAyNCwgMTc5LCA3LCAzLCAxLCAxMTEsIDIsIDI0NywgMjEwLCAyNCwgMTc5LCA3LCA2LCAxLCAKLSAgICAxMTEsIDIsIDI0NywgMjEwLCAyNCwgMjUwLCAxNjYsIDcsIDMsIDEsIDExMSwgMiwgMjQ3LCAyMTAsIDI0LCAyNTAsIDE2NiwgCi0gICAgNywgNiwgMSwgMTExLCAyLCAyNDcsIDIxMCwgMjQsIDI0MiwgMTEzLCA3LCAzLCAxLCAxMTEsIDIsIDI0NywgMjEwLCAyNCwgCi0gICAgMjQyLCAxMTMsIDcsIDMsIDEsIDIxNiwgNTgsIDc0LCA3LCA2LCAxLCAxMTgsIDIsIDI0NywgMjEwLCAyNCwgMjMyLCAzNywgCi0gICAgNywgMywgMSwgMTE4LCAyLCAyNDcsIDIxMCwgMjQsIDIzMiwgMzcsIDcsIDYsIDEsIDExOCwgMiwgNjIsIDc4LCAyNCwgMjMyLCAKLSAgICAzNywgNywgMywgMSwgMTE4LCAyLCA2MiwgNzgsIDI0LCAyMzIsIDM3LCA3LCA2LCAxLCAyNTQsIDE0OSwgMiwgMjMyLCAzNywgCi0gICAgNywgMywgMSwgMjU0LCAxNDksIDIsIDIzMiwgMzcsIDcsIDYsIDEsIDI0MywgMTc4LCAyLCA5MCwgNywgMywgMSwgMjQzLCAKLSAgICAxNzgsIDIsIDkwLCA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDI0MywgMTc4LCAyLCAyNTAsIAotICAgIDE2NiwgNywgNiwgMSwgMjM1LCAyOCwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDIzNSwgMjgsIDIsIDI1MCwgMTY2LCA3LCA2LCAKLSAgICAxLCAxNTcsIDIsIDIyNywgOTAsIDcsIDMsIDEsIDE1NywgMiwgMjI3LCA5MCwgNywgNiwgMSwgMTU3LCAyLCAyMjcsIDkxLCAKLSAgICAyNCwgMjMyLCAzNywgNywgMywgMSwgMTU3LCAyLCAyMjcsIDkxLCAyNCwgMjMyLCAzNywgNywgNiwgMSwgMjQ0LCAyMzMsIDIsIAotICAgIDI1MCwgMTY2LCA3LCAzLCAxLCAyNDQsIDIzMywgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDIzNSwgMTQzLCAyLCAyNTAsIDE2NiwgCi0gICAgNywgNiwgMSwgMjQ1LCAyNTAsIDcsIDYsIDEsIDI0OSwgNCwgMiwgMywgMSwgMjEyLCAxNTIsIDcsIDMsIDEsIDI0NSwgMjUwLCAKLSAgICA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgMTc5LCA3LCAzLCAxLCAyNDMsIDE3OCwgMiwgMTc5LCA3LCA2LCAxLCAyNDAsIDE5MSwgCi0gICAgNywgNiwgMSwgMjEzLCAxNjksIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDI0MiwgMTEzLCA3LCAzLCAxLCAyMzAsIDk4LCAyLCAKLSAgICAyNDIsIDExMywgNywgNiwgMSwgMTE4LCAyLCAyMjMsIDEzMSwgNzgsIDI0LCAxNzksIDcsIDMsIDEsIDExOCwgMiwgMjIzLCAKLSAgICAxMzEsIDc4LCAyNCwgMTc5LCA3LCA2LCAxLCAyNTQsIDE0OSwgMiwgMTc5LCA3LCAzLCAxLCAyNTQsIDE0OSwgMiwgMTc5LCAKLSAgICA3LCA2LCAxLCAxNTcsIDIsIDIxOSwgNDUsIDI0LCAxNzksIDcsIDMsIDEsIDE1NywgMiwgMjE5LCA0NSwgMjQsIDE3OSwgNywgCi0gICAgNiwgMSwgMTE4LCAyLCA1MSwgMjQyLCAxMTMsIDcsIDMsIDEsIDExOCwgMiwgNTEsIDI0MiwgMTEzLCA3LCA2LCAxLCAxMTgsIAotICAgIDIsIDIzNSwgMTkxLCAyNTEsIDc0LCA3LCAzLCAxLCAxMTgsIDIsIDIzNSwgMTkxLCAyNTEsIDc0LCA3LCA2LCAxLCAxOTEsIAotICAgIDIsIDUxLCAyNDIsIDExMywgNywgMywgMSwgMTkxLCAyLCA1MSwgMjQyLCAxMTMsIDcsIDYsIDEsIDE5MSwgMiwgMjM1LCAKLSAgICAxOTEsIDI1MSwgNzQsIDcsIDMsIDEsIDE5MSwgMiwgMjM1LCAxOTEsIDI1MSwgNzQsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAKLSAgICA1MSwgMjQyLCAxMTMsIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCA1MSwgMjQyLCAxMTMsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAKLSAgICAyMzUsIDE5MSwgMjUxLCA3NCwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDIzNSwgMTkxLCAyNTEsIDc0LCA3LCA2LCAxLCAxNTcsIAotICAgIDIsIDUxLCAyNDIsIDExMywgNywgMywgMSwgMTU3LCAyLCA1MSwgMjQyLCAxMTMsIDcsIDYsIDEsIDE1NywgMiwgMjM1LCAKLSAgICAxOTEsIDI1MSwgNzQsIDcsIDMsIDEsIDE1NywgMiwgMjM1LCAxOTEsIDI1MSwgNzQsIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAKLSAgICA1MSwgMjQyLCAxMTMsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCA1MSwgMjQyLCAxMTMsIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAKLSAgICAyMzUsIDE5MSwgMjUxLCA3NCwgNywgMywgMSwgMjI0LCAxMTMsIDIsIDIzNSwgMTkxLCAyNTEsIDc0LCA3LCA2LCAxLCAxMTEsIAotICAgIDIsIDUxLCAyNDIsIDExMywgNywgMywgMSwgMTExLCAyLCA1MSwgMjQyLCAxMTMsIDcsIDYsIDEsIDExMSwgMiwgMjM1LCAKLSAgICAxOTEsIDI1MSwgNzQsIDcsIDMsIDEsIDExMSwgMiwgMjM1LCAxOTEsIDI1MSwgNzQsIDcsIDYsIDEsIDIyMywgNCwgMiwgCi0gICAgMjQ5LCAxNTgsIDU1LCA3LCAzLCAxLCAyMjMsIDQsIDIsIDI0OSwgMTU4LCA1NSwgNywgNiwgMSwgMjE4LCAxMDAsIDIsIAotICAgIDI0OSwgMTU4LCA1NSwgNywgMywgMSwgMjE4LCAxMDAsIDIsIDI0OSwgMTU4LCA1NSwgNywgNiwgMSwgMjEyLCAyMjIsIDcsIAotICAgIDMsIDEsIDIxMiwgMjIyLCA3LCA2LCAxLCAyNDIsIDQyLCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjQyLCA0MiwgMiwgMjUwLCAKLSAgICAxNjYsIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDE4NCwgNDYsIDIzMywgNjAsIDcsIDMsIDEsIDI0OSwgNCwgMiwgMjQ5LCA0MSwgCi0gICAgNywgNiwgMSwgMjI3LCAyLCA3LCAzLCAxLCAyMjcsIDIsIDcsIDYsIDEsIDIxMiwgMTUzLCAyLCAxMDEsIDcsIDMsIDEsIAotICAgIDIxMiwgMTUzLCAyLCAxMDEsIDcsIDYsIDEsIDExOCwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAxMTgsIDIsIDYyLCA0OSwgNywgNiwgCi0gICAgMSwgMTkxLCAyLCAyNTAsIDExNywgNywgMywgMSwgMTkxLCAyLCAyNTAsIDExNywgNywgNiwgMSwgMTU3LCAyLCAyNDcsIAotICAgIDIxMCwgMjQsIDIzMiwgMzcsIDcsIDMsIDEsIDE1NywgMiwgMjQ3LCAyMTAsIDI0LCAyMzIsIDM3LCA3LCA2LCAxLCAxNTcsIAotICAgIDIsIDIxNywgNDMsIDI0LCAyMzIsIDM3LCA3LCAzLCAxLCAxNTcsIDIsIDIxNywgNDMsIDI0LCAyMzIsIDM3LCA3LCA2LCAxLCAKLSAgICAxNTcsIDIsIDYyLCA0OSwgNywgMywgMSwgMTU3LCAyLCA2MiwgNDksIDcsIDYsIDEsIDE1NywgMiwgNjIsIDc4LCAyNCwgCi0gICAgMjMyLCAzNywgNywgMywgMSwgMTU3LCAyLCA2MiwgNzgsIDI0LCAyMzIsIDM3LCA3LCA2LCAxLCAyMTMsIDEwNiwgMiwgMjMyLCAKLSAgICAzNywgNywgMywgMSwgMjEzLCAxMDYsIDIsIDIzMiwgMzcsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCAyNDksIDQxLCA3LCAzLCAKLSAgICAxLCAyMzAsIDk4LCAyLCAyNDksIDQxLCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgMjQ5LCA0MSwgNywgMywgMSwgMjQ3LCA3MywgCi0gICAgMjM1LCAxNDIsIDcsIDMsIDEsIDI0OCwgODksIDI0NywgMTcyLCA3LCAzLCAxLCAyMjQsIDE3NiwgMjQ3LCAxNzIsIDcsIDYsIAotICAgIDEsIDExOCwgMiwgOTAsIDcsIDYsIDEsIDI1MCwgMjUzLCAyLCA5MCwgNywgMywgMSwgMjUwLCAyNTMsIDIsIDkwLCA3LCA2LCAKLSAgICAxLCAyMzMsIDE3MSwgMiwgMTM0LCA3LCA2LCAxLCAyMTgsIDEwMCwgMiwgMjQ3LCAyMDcsIDkwLCA3LCAzLCAxLCAyMjMsIDQsIAotICAgIDIsIDIxOCwgMTk1LCAyMTgsIDI3LCA3LCAzLCAxLCAyMTIsIDE1MywgMiwgMjE4LCAxOTUsIDIxOCwgMjcsIDcsIDYsIDEsIAotICAgIDI0MiwgMTU2LCAyMTksIDY5LCA3LCAzLCAxLCAyNDIsIDE1NiwgMjE5LCA2OSwgNywgNiwgMSwgNTQsIDIsIDkwLCA3LCA2LCAKLSAgICAxLCAxMTEsIDEzNCwgNywgNiwgMSwgMjE2LCA1OCwgMjE1LCA3OSwgNywgNiwgMSwgMTkxLCAyLCA5MCwgNywgMywgMSwgCi0gICAgMTkxLCAyLCA5MCwgNywgNiwgMSwgMjM1LCAxNDMsIDIsIDkwLCA3LCAzLCAxLCAyMzUsIDE0MywgMiwgOTAsIDcsIDYsIDEsIAotICAgIDMsIDIyNCwgMjQxLCAyLCAyNDEsIDM4LCAyMTgsIDI3LCA3LCAzLCAxLCAyMjQsIDI0MSwgMiwgMjQxLCAzOCwgMjE4LCAyNywgCi0gICAgNywgNiwgMSwgMjI0LCAxMTMsIDIsIDkwLCA3LCAzLCAxLCAyMjQsIDExMywgMiwgOTAsIDcsIDYsIDEsIDIxMywgMTA2LCAyLCAKLSAgICA5MCwgNywgMywgMSwgMjEzLCAxMDYsIDIsIDkwLCA3LCAzLCAxLCAyMTYsIDU4LCA2MSwgNywgMywgMSwgMjU0LCA1MiwgNywgCi0gICAgMywgMSwgMjE2LCA1OCwgMjU0LCA1MiwgNywgMywgMSwgNTQsIDIsIDEwMSwgNywgMywgMSwgMjI3LCA0MCwgNzUsIDcsIDMsIAotICAgIDEsIDI1MCwgMjUzLCAyLCAyNDksIDQxLCA3LCAzLCAxLCAyNDksIDQsIDIsIDIxOCwgMjcsIDcsIDMsIDEsIDI0OSwgNCwgMiwgCi0gICAgMTAxLCA3LCAzLCAxLCAyMjMsIDIwMiwgNzQsIDcsIDMsIDEsIDIyMiwgMTEzLCA3LCAzLCAxLCAyMjIsIDExNCwgMiwgMTAxLCAKLSAgICA3LCAzLCAxLCAyMjcsIDQwLCA3NCwgNywgMywgMSwgMjIzLCAyMDIsIDIyNywgNDAsIDc0LCA3LCAzLCAxLCAyMjMsIDIwMiwgCi0gICAgMjI3LCA0MCwgMTkxLCAyLCAxMDEsIDcsIDMsIDEsIDI0OSwgMTkzLCAyMjMsIDIwMiwgMjI3LCA0MCwgNzQsIDcsIDMsIDEsIAotICAgIDI0NywgNzMsIDIzNSwgMTQzLCAyLCA5MCwgNywgMywgMSwgMjQzLCAxNzgsIDIsIDEwMSwgNywgMywgMSwgMTEzLCAyNDMsIAotICAgIDE3NywgNywgMSwgMywgNiwgMjQzLCAxNzcsIDcsIDMsIDEsIDI0MywgODMsIDcsIDMsIDEsIDIyNCwgNDMsIDI0MCwgMjM1LCAKLSAgICA3LCAzLCAxLCAyMTYsIDU4LCAyNDIsIDQxLCA3LCAzLCAxLCAyNDIsIDQyLCAyLCAxMDEsIDcsIDMsIDEsIDI0MSwgMTkyLCAKLSAgICAyLCAxMDEsIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCA5MCwgNywgMywgMSwgMjM1LCAxODMsIDcsIDEsIDMsIDYsIDcyLCA3LCAKLSAgICAzLCAxLCAyMzMsIDE3MSwgMiwgMjMxLCAzNywgMjE3LCA0MiwgNywgMywgMSwgMjMzLCAxNzEsIDIsIDI1MSwgMjE4LCA3LCAKLSAgICAzLCAxLCAyMzMsIDE3MSwgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMjMzLCAyNywgNywgMywgMSwgMjE2LCA1OCwgCi0gICAgMTgzLCA3LCAzLCAxLCAyMTYsIDU4LCAyMzIsIDExMCwgMiwgMTg0LCAyMzMsIDYwLCA3LCAzLCAxLCAyMzIsIDExMCwgMiwgCi0gICAgMTAxLCA3LCAzLCAxLCAyMzAsIDk4LCAyLCA0MiwgMTAxLCA3LCAzLCAxLCAyMzAsIDk4LCAyLCAyMjMsIDIwNywgMTAxLCA3LCAKLSAgICAxLCAzLCA2LCAyMDQsIDcsIDMsIDEsIDI1MiwgNTQsIDc1LCA3LCAxLCAzLCA2LCAyMjcsIDk5LCA3LCAzLCAxLCAyNDksIAotICAgIDE5MywgMjI3LCA2NywgNywgMywgMSwgMjI2LCA5LCA3LCAzLCAxLCAyMTYsIDU4LCAxNDksIDcsIDMsIDEsIDIxNiwgNTgsIAotICAgIDIyNCwgMTEzLCAyLCAxODQsIDIzMywgNjAsIDcsIDMsIDEsIDIxNiwgNTgsIDIyNCwgMTEzLCAyLCAxMDEsIDcsIDMsIDEsIAotICAgIDIyNCwgMTEzLCAyLCAxODQsIDIzMywgNjAsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCAyMTgsIDI3LCA3LCAzLCAxLCAyMjQsIAotICAgIDExMywgMiwgMjQ0LCA1NiwgNywgMywgMSwgMjIzLCAyMDIsIDIyNCwgMTEzLCAyLCAyNDQsIDU2LCA3LCAxLCAzLCA2LCAKLSAgICAxNDksIDcsIDEsIDMsIDYsIDIzNSwgMTkxLCAxNDksIDcsIDMsIDEsIDIyMywgNCwgMiwgMTAxLCA3LCAzLCAxLCAyNDUsIAotICAgIDQwLCA3LCAzLCAxLCAyNDcsIDczLCAyMzUsIDE0MywgMiwgMjE5LCA0NSwgMjQsIDEwMSwgNywgMywgMSwgMjE5LCAxNjMsIAotICAgIDIyMywgMjAyLCAyNDUsIDQwLCA3LCAzLCAxLCAyNDUsIDQxLCAyLCAyNDksIDQxLCA3LCAzLCAxLCAyMTYsIDU4LCAyMTgsIAotICAgIDk5LCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMTExLCAxMzQsIDcsIDMsIDEsIDIxNSwgCi0gICAgMTI4LCA3LCAzLCAxLCAyMTUsIDgwLCAyLCAxMDEsIDcsIDMsIDEsIDIxNiwgNTgsIDIxNSwgNzksIDcsIDMsIDEsIDIxNiwgCi0gICAgNTgsIDIxNCwgODIsIDcsIDMsIDEsIDIxNiwgNTgsIDIxMywgMTA1LCA3LCAxLCAzLCA2LCAyMTMsIDEwNSwgNywgMywgMSwgCi0gICAgMjEyLCAxNTMsIDIsIDIyMywgMjA3LCAxMDEsIDcsIDMsIDEsIDIxMiwgMTUzLCAyLCAyNDksIDQxLCA3LCAzLCAxLCAyNDQsIAotICAgIDIzMiwgNywgMywgMSwgMjQ0LCAyMzMsIDIsIDI0OSwgNDEsIDcsIDEsIDI0MiwgMTU2LCAyMTksIDY5LCA3LCAxLCAyMjYsIAotICAgIDE1LCAyMTQsIDExNiwgMjQzLCAyMTksIDcsIDEsIDIzNSwgMTkxLCAyNDIsIDE1NiwgMjE5LCA2OSwgNywgMSwgMjE5LCA1MCwgCi0gICAgMjUwLCAyNTIsIDcsIDEsIDI1MSwgMTY5LCAyNDksIDIwNCwgNywgMSwgMywgNiwgMjUzLCA3NCwgNywgMywgMSwgMjQ5LCAKLSAgICAxOTMsIDIyNywgNDAsIDc0LCA3LCAxLCAzLCA2LCAyNDMsIDE3OCwgMiwgMTAxLCA3LCAxLCAzLCA2LCAyNDIsIDQxLCA3LCAKLSAgICAzLCAxLCAyMzUsIDE0MywgMiwgMjQ5LCA2NywgNywgMywgMSwgMjE2LCA1OCwgMjM1LCAyNywgNywgMSwgMywgNiwgMTUwLCAKLSAgICA3LCAzLCAxLCAyMjQsIDI0MSwgMiwgMTAxLCA3LCAxLCAyNDIsIDE1NiwgMjE5LCA3MCwgMiwgOTAsIDcsIDEsIDIyMywgCi0gICAgMjAyLCAyNDIsIDE1NiwgMjE5LCA3MCwgMiwgOTAsIDcsIDMsIDEsIDI0NSwgMjUxLCAyNDcsIDE3MiwgNywgMywgMSwgMjQ3LCAKLSAgICAyMzMsIDI0NywgMTcyLCA3LCAzLCAxLCAyNDUsIDI1MSwgMjQ3LCAxNzMsIDIsIDI0OSwgNDEsIDcsIDMsIDEsIDIxNiwgCi0gICAgMTQzLCAyNDcsIDE3MiwgNywgMywgMSwgMjE3LCAxODgsIDI0NywgMTcyLCA3LCAzLCAxLCAyMTcsIDIzNiwgMjQ3LCAxNzMsIAotICAgIDIsIDI0OSwgNDEsIDcsIDMsIDEsIDI0NCwgMTAzLCAyNDcsIDE3MiwgNywgMywgMSwgMjMyLCAxNTgsIDI0NywgMTcyLCA3LCAKLSAgICAzLCAxLCAyMzIsIDExMSwgMjQ3LCAxNzIsIDcsIDEsIDI1MSwgMTY5LCAyMjYsIDU2LCA3LCAxLCAyNTEsIDE3NywgMjI2LCAKLSAgICA1NiwgNywgMywgMSwgMjE2LCA1OCwgMjQyLCA0MiwgMiwgMjQ0LCA1NiwgNywgMywgMSwgMjE2LCA1OCwgMjQyLCA0MiwgMiwgCi0gICAgMjQ0LCA1NywgMjQsIDIxOCwgMjcsIDU5LCAxLCAzLCAyNDIsIDQxLCA1OSwgMSwgMywgMjQyLCA0MiwgMiwgMTAxLCA1OSwgCi0gICAgMSwgMywgMjM1LCAxNDIsIDU5LCAxLCAzLCAxNDksIDU5LCAxLCAzLCAyMTYsIDU4LCAxNDksIDU5LCAxLCAzLCAyMTYsIDU4LCAKLSAgICAyMjQsIDExMywgMiwgMTAxLCA1OSwgMSwgMywgNiwgMjM1LCAxOTEsIDE0OSwgNTksIDEsIDMsIDIxNCwgODIsIDU5LCAxLCAKLSAgICAzLCAyMTMsIDEwNSwgNTksIDEsIDIyNSwgNzEsIDU5LCAxLCA1MSwgMjI1LCA3MSwgNTksIDEsIDIxNiwgNTgsIDI0OSwgCi0gICAgMTU3LCA1OSwgMSwgMjUzLCAyMjYsIDU5LCAxLCAyMjMsIDIwMiwgMjQ5LCAxNTcsIDU5LCAxLCA0NiwgMTUxLCAyMjMsIAotICAgIDEzMCwgNTksIDEsIDQyLCAxNTEsIDIyMywgMTMwLCA1OSwgMSwgMjQyLCAxNTYsIDIxOSwgNjksIDU5LCAxLCAyMjMsIDIwMiwgCi0gICAgMjQyLCAxNTYsIDIxOSwgNjksIDU5LCAxLCA0MiwgMjUzLCAxNjQsIDU5LCAxLCA0NiwgMjUzLCAxNjQsIDU5LCAxLCAxMTQsIAotICAgIDI1MywgMTY0LCA1OSwgMSwgMTE5LCAyNTMsIDE2NCwgNTksIDEsIDI0OSwgMjI0LCAyNTQsIDE3NCwgMjUwLCAxNjYsIDU5LCAKLSAgICAxLCA3MSwgMjMyLCAyNDIsIDU5LCAxLCAyMzIsIDM3LCA1OSwgMSwgMjU0LCAxNjQsIDI1NCwgMTc0LCA1OSwgMSwgMjQyLCAKLSAgICAxMTQsIDI1NCwgMTc0LCA1OSwgMSwgMTE1LCA3MSwgMjMyLCAyNDIsIDU5LCAxLCAxMTUsIDIzMiwgMzcsIDU5LCAxLCAxMTUsIAotICAgIDI0MiwgMTE0LCAyNTQsIDE3NCwgNTksIDEsIDExNSwgMjU0LCAxNjQsIDI1NCwgMTc0LCA1OSwgMSwgMjE2LCAxODAsIDI0OSwgCi0gICAgMTY0LCA1OSwgMSwgMTUxLCAyMTYsIDE4MCwgMjQ5LCAxNjQsIDU5LCAxLCAyNTAsIDEwNywgNDYsIDE1MSwgMjIzLCAxMzAsIAotICAgIDU5LCAxLCAyNTAsIDEwNywgNDIsIDE1MSwgMjIzLCAxMzAsIDU5LCAxLCAxMTQsIDIxOCwgMzYsIDU5LCAxLCAxMTksIDIxOCwgCi0gICAgMzYsIDU5LCAxLCA5NCwgNTIsIDU5LCAxLCAyMzAsIDI1MSwgNTIsIDI1MSwgNzQsIDYyLCA0OSwgMjIzLCAxMzEsIDQ5LCAKLSAgICAyMjcsIDkwLCAzLCAyMTcsIDQyLCA1MSwgMjU0LCAxNjQsIDI1NCwgMTc0LCA1OSwgMSwgMjIzLCAxODksIDEwMSwgNTksIDEsIAotICAgIDI0OSwgNzEsIDI1NCwgMTc0LCA1OSwgMSwgMywgMjQzLCA4MywgNTksIDEsIDMsIDE1MCwgNTksIDEsIDMsIDE5NywgNTksIAotICAgIDEsIDMsIDIxMywgMTY2LCA1OSwgMSwgMywgMjIzLCAyMDIsIDI0MiwgMTU2LCAyMTksIDY5LCA1OSwgMSwgMjQ0LCAyNDQsIAotICAgIDE2MCwgMTM0LCA1OSwgMSwgMTI0LCAxNjAsIDEzNCwgNTksIDEsIDIzMSwgMzgsIDE2MCwgMTM0LCA1OSwgMSwgMTE1LCAKLSAgICAxNjAsIDEzNCwgNTksIDEsIDI0NCwgMjQzLCAxNjAsIDEzNCwgNTksIDEsIDIxMiwgMjQ1LCAyNDcsIDI1MSwgMTYwLCA3NywgCi0gICAgNTksIDEsIDIxMywgNTksIDI0NywgMjUxLCAxNjAsIDc3LCA1OSwgMSwgMjE0LCAxMTQsIDU5LCAxLCAyMTUsIDE1NiwgNTksIAotICAgIDEsIDUxLCAyNTMsIDIyNiwgNTksIDEsIDExNSwgMTE5LCAyNTMsIDE2NCwgNTksIDEsIDExNSwgMTE0LCAyNTMsIDE2NCwgCi0gICAgNTksIDEsIDExNSwgNDIsIDI1MywgMTY0LCA1OSwgMSwgMTE1LCA0NiwgMjUzLCAxNjQsIDU5LCAxLCAxMTUsIDIyMywgMTMwLCAKLSAgICA1OSwgMSwgMjMxLCAzNywgMjQyLCAxMTQsIDI1NCwgMTc0LCA1OSwgMSwgMjMxLCAzNywgNTEsIDI0MiwgMTE0LCAyNTQsIAotICAgIDE3NCwgNTksIDEsIDIzMSwgMzcsIDUxLCAyNTQsIDE2NCwgMjU0LCAxNzQsIDU5LCAxLCAxMTUsIDIxNywgNDIsIDU5LCAxLCAKLSAgICAyMjQsIDQ4LCAyNDksIDE2NCwgNTksIDEsIDI1MSwgMjM0LCAxMjQsIDIxNiwgMjQxLCA1OSwgMSwgMjQ1LCAxMDEsIDEyNCwgCi0gICAgMjE2LCAyNDEsIDU5LCAxLCAyNTEsIDIzNCwgMTE1LCAyMTYsIDI0MSwgNTksIDEsIDI0NSwgMTAxLCAxMTUsIDIxNiwgMjQxLCAKLSAgICA1OSwgMSwgMjIwLCAyMzQsIDU5LCAxLCAyMjcsIDQwLCAyMjAsIDIzNCwgNTksIDEsIDExNSwgNDIsIDY4LCAzNywgMjQyLCAKLSAgICAxMTQsIDI1NCwgMTc0LCAzNywgMjU0LCAxNjQsIDI1NCwgMTc0LCAzNywgMjQ5LCAyMjQsIDI1NCwgMTc0LCAzNywgMjE3LCAKLSAgICA0MiwgMzcsIDIzMiwgMzcsIDM3LCAyMjYsIDI0MywgMzcsIDI1MSwgNzQsIDM3LCA2MiwgNDksIDM3LCAyNDcsIDIwOSwgMzcsIAotICAgIDI0MSwgMzgsIDQ5LCAzNywgMjIzLCAxMzEsIDQ5LCAzNywgNTEsIDI1NCwgMTY0LCAyNTQsIDE3NCwgMzcsIDI1MCwgMTY2LCAKLSAgICAzNywgNzEsIDIzMiwgMjQzLCA0OSwgMzcsIDUxLCA3MSwgMjMyLCAyNDMsIDQ5LCAzNywgNTEsIDI0MiwgMTE0LCAyNTQsIAotICAgIDE3NCwgMzcsIDI1MCwgMTg3LCAzNywgMjM1LCAxOTEsIDI1MSwgNzQsIDM3LCAyMTYsIDU4LCAyNDksIDE1OCwgNDksIDM3LCAKLSAgICAyNDksIDE1OCwgNDksIDM3LCAyMjMsIDIwMiwgMjQ5LCAxNTgsIDQ5LCAzNywgMjQ5LCAxNTgsIDc4LCAyMjMsIDE0OCwgMzcsIAotICAgIDI0MiwgMTE0LCAyNTQsIDE3NSwgNTUsIDM3LCAyNTQsIDE2NCwgMjU0LCAxNzUsIDU1LCAzNywgNDIsIDIxOCwgMzcsIDU1LCAKLSAgICAzNywgNDYsIDIxOCwgMzcsIDU1LCAzNywgNDIsIDI1NCwgMTksIDQ5LCAzNywgMjQwLCAyMzUsIDM3LCA0MiwgMTUxLCAyMjMsIAotICAgIDEzMSwgNTUsIDM3LCAxMTQsIDIxOCwgMzcsIDU1LCAzNywgMTE5LCAyMTgsIDM3LCA1NSwgMzcsIDk0LCA1LCA1NSwgMzcsIAotICAgIDIzMCwgMjUxLCA1LCA1NSwgMzcsIDIyNiwgMTkxLCAyNDEsIDM4LCA1NSwgMzcsIDIyMywgMjA3LCAyNDEsIDM4LCA1NSwgCi0gICAgMzcsIDYyLCA1NSwgMzcsIDI0NywgMjEwLCA1NSwgMzcsIDIyMywgMTMxLCA1NSwgMzcsIDI0OSwgMTU4LCA1NSwgMzcsIAotICAgIDI1MCwgMTE3LCAzNywgMjI3LCA5MCwgMzcsIDcxLCAyMzIsIDI0MywgNTUsIDM3LCAyNTEsIDY4LCA1NSwgMzcsIDIzNSwgCi0gICAgMTkxLCA1MSwgMjUzLCAxOTQsIDU1LCAzNywgMjUwLCAxNjcsIDU1LCAzNywgMjQ5LCAyMjQsIDI1NCwgMTc1LCA1NSwgMzcsIAotICAgIDI1MSwgNzUsIDU1LCAzNywgMjM1LCAxOTEsIDI1MSwgNzUsIDU1LCAzNywgMjE3LCA0MywgNTUsIDM3LCAyMzIsIDM4LCA1NSwgCi0gICAgMzcsIDExNSwgMjMyLCAyNDIsIDM3LCA1MSwgMTE1LCAyMzIsIDI0MiwgMzcsIDIxNywgNDMsIDIyNiwgMjQ0LCAzNywgMjIwLCAKLSAgICAxNzUsIDIxOSwgNDUsIDIyNiwgMjQ0LCAzNywgMTg0LCAyMTksIDQ1LCAyMjYsIDI0NCwgMzcsIDIyMCwgMTc1LCAyMTksIAotICAgIDIzMiwgMjI2LCAyNDQsIDM3LCAxODQsIDIxOSwgMjMyLCAyMjYsIDI0NCwgMzcsIDQ2LCAxNTEsIDIyMywgMTMxLCA1NSwgCi0gICAgMzcsIDIzNSwgMTkxLCAyNTEsIDY4LCA1NSwgMzcsIDQxLCA1NSwgMzcsIDIyMiwgOTksIDU1LCAzNywgMjEzLCAxNjcsIDQ5LCAKLSAgICAzNywgNzEsIDIxNywgNDIsIDM3LCA1MSwgMjI2LCAyNDMsIDM3LCAyNDIsIDExNCwgMTYwLCA3NywgMzcsIDI1NCwgMTY0LCAKLSAgICAxNjAsIDc3LCAzNywgMjUsIDIyNiwgNTAsIDM3LCAyNSwgMjM0LCAxMSwgMzcsIDI1LCAyNDcsIDIwNCwgMjE2LCAyMzEsIAotICAgIDM3LCAyNSwgMjEyLCAyMTAsIDM3LCAyNTEsIDY4LCA0OSwgMzcsIDI0NSwgNjEsIDUsIDU1LCAzNywgNTEsIDcxLCAyMzIsIAotICAgIDI0MywgNTUsIDM3LCA0MiwgMjU0LCAxOSwgNTUsIDM3LCAyMjgsIDE2MywgMjE3LCA0MywgNDksIDM3LCAyNDEsIDQ0LCA0OSwgCi0gICAgMzcsIDI1NCwgNTcsIDEyMywgMjExLCAyMTEsIDQ5LCAzNywgNDIsIDQ2LCA3NiwgNTUsIDM3LCAyMTUsIDEyNCwgNzYsIDU1LCAKLSAgICAzNywgMjQyLCAxMTgsIDIzNSwgNjYsIDM3LCA0NiwgMjUzLCAxNjUsIDQ5LCAzNywgNDIsIDE1MSwgMjIzLCAxMzEsIDQ5LCAKLSAgICAzNywgMjQ0LCAxMDAsIDM3LCAyMTMsIDE2NywgNTUsIDM3LCA0MiwgMjUzLCAxNjUsIDU1LCAzNywgNDYsIDI1MywgMTY1LCAKLSAgICA1NSwgMzcsIDQ2LCAyNTMsIDE2NSwgMjQsIDExNCwgMjUzLCAxNjUsIDU1LCAzNywgNDYsIDE1MSwgMjIzLCAxMzEsIDQ5LCAKLSAgICAzNywgNjIsIDc4LCAyMjMsIDE0OCwgMzcsIDI1MywgMTMzLCA1NSwgMzcsIDUxLCAyMjMsIDEzMSwgNTUsIDM3LCAyMTIsIAotICAgIDI4LCA0OSwgMzcsIDUxLCAyNTEsIDc1LCA1NSwgMzcsIDUxLCAyNTEsIDc0LCAzNywgNTEsIDIzMiwgMzcsIDM3LCA1MSwgCi0gICAgMjMyLCAzOCwgNTUsIDM3LCA1MSwgMjE3LCA0MiwgMzcsIDUxLCAyMzUsIDE5MSwgMjUxLCA3NCwgMzcsIDUxLCA5NSwgNzYsIAotICAgIDU1LCAzNywgNywgMywgMSwgNjEsIDM3LCA3LCAzLCAxLCA3NCwgMzcsIDcsIDMsIDEsIDcyLCAzNywgNywgMywgMSwgNzUsIAotICAgIDM3LCA3LCAzLCAxLCA2OSwgMzcsIDcsIDMsIDEsIDI1MCwgMjUyLCAzNywgNywgMywgMSwgMjQ5LCAzLCAzNywgNywgMywgMSwgCi0gICAgMjQyLCA0MSwgMzcsIDcsIDMsIDEsIDE4MywgMzcsIDcsIDMsIDEsIDE0OSwgMzcsIDcsIDMsIDEsIDIxOCwgOTksIDM3LCA3LCAKLSAgICAzLCAxLCAyMTUsIDc5LCAzNywgNywgMywgMSwgMjEzLCAxNjYsIDI1LCA2LCAxLCAyNDEsIDE4MSwgMjUsIDMsIDEsIDI0MSwgCi0gICAgMTgxLCAyNSwgNiwgMSwgMjUzLCAxOTMsIDIyMiwgMTYxLCAyNSwgMywgMSwgMjUzLCAxOTMsIDIyMiwgMTYxLCAyNSwgMjI4LCAKLSAgICA1NCwgNTIsIDI1LCAyMzIsIDE2MywgMjI4LCA1NCwgNTIsIDI1LCA2LCAxLCAyMjYsIDE3OCwgMjQ3LCAxNzksIDI1LCAzLCAKLSAgICAxLCAyMjYsIDE3OCwgMjQ3LCAxNzksIDI1LCAyMTIsIDIxMCwgMjUsIDMsIDIyMywgMjAyLCAyMzIsIDE0MSwgMjIwLCAxMDQsIAotICAgIDg3LCAyNSwgMywgMjQ2LCA3MiwgMjMyLCAxNDEsIDIyMCwgMTA0LCA4NywgMjUsIDMsIDIyMywgMjAyLCAyNDYsIDcyLCAKLSAgICAyMzIsIDE0MSwgMjIwLCAxMDQsIDg3LCAyNSwgMjI0LCAxNTgsIDc3LCAyNSwgMjE2LCAyMzEsIDI1LCAyNDcsIDIwNCwgCi0gICAgMjE2LCAyMzEsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMTYsIDIzMSwgMjUsIDI1NCwgOCwgMjE3LCAyMTEsIDI1LCA2LCAxLCAKLSAgICAyNDUsIDY0LCAyLCAyMTYsIDIzMSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIxNiwgMjMxLCAyNSwgNiwgMSwgMjM1LCAxODQsIAotICAgIDIsIDIxNiwgMjMxLCAyNSwgNiwgMSwgMjI3LCA2NiwgMiwgMjE2LCAyMzEsIDI1LCA2LCAxLCAyMTUsIDEyOSwgMiwgMjE2LCAKLSAgICAyMzEsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMTYsIDIzMSwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyNDcsIDIwNCwgMjQsIAotICAgIDIxNiwgMjMxLCAyNSwgNiwgMSwgMjU0LCA1MiwgMjUsIDYsIDEsIDI1MSwgMjAzLCAyNSwgNiwgMSwgMjQzLCA4MywgMjUsIAotICAgIDYsIDEsIDI0OCwgNSwgMjUsIDYsIDEsIDI0NSwgNjMsIDI1LCA2LCAxLCAyMTIsIDc4LCAyNSwgNiwgMSwgMjQ1LCAyOCwgCi0gICAgMjUsIDYsIDEsIDIxNywgMTMyLCAyNSwgNiwgMSwgMjM1LCAxODMsIDI1LCA2LCAxLCAyMzQsIDIyNywgMjUsIDYsIDEsIAotICAgIDIzMywgMTIyLCAyNSwgNiwgMSwgMjMwLCAxNzIsIDI1LCA2LCAxLCAyMjgsIDkyLCAyNSwgNiwgMSwgMjEzLCAxNDUsIDI1LCAKLSAgICA2LCAxLCAyMjcsIDY1LCAyNSwgNiwgMSwgMjI1LCAyNDAsIDI1LCA2LCAxLCAyMjMsIDE5MCwgMjUsIDYsIDEsIDIyMCwgCi0gICAgMTAzLCAyNSwgNiwgMSwgMjE3LCAyNDgsIDI1LCA2LCAxLCAyMTUsIDEyOCwgMjUsIDYsIDEsIDIyNiwgOSwgMjUsIDYsIDEsIAotICAgIDI1MCwgNDcsIDI1LCA2LCAxLCAyMjUsIDQ2LCAyNSwgNiwgMSwgMjI3LCA2NywgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAKLSAgICAyNDcsIDIwMywgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAyNDcsIDIwMywgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIxNiwgCi0gICAgMjMxLCAyNSwgMywgMSwgMjQ1LCA2NCwgMiwgMjE2LCAyMzEsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMTYsIDIzMSwgMjUsIAotICAgIDMsIDEsIDIzNSwgMTg0LCAyLCAyMTYsIDIzMSwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyNDcsIDIwNCwgMjQsIDIxNiwgCi0gICAgMjMxLCAyNSwgMywgMSwgMjU0LCA1MiwgMjUsIDMsIDEsIDI1MSwgMjAzLCAyNSwgMywgMSwgMjQzLCA4MywgMjUsIDMsIDEsIAotICAgIDI0OCwgNSwgMjUsIDMsIDEsIDI0NSwgNjMsIDI1LCAzLCAxLCAyMTIsIDc4LCAyNSwgMywgMSwgMjQ1LCAyOCwgMjUsIDMsIAotICAgIDEsIDIxNywgMTMyLCAyNSwgMywgMSwgMjM1LCAxODMsIDI1LCAzLCAxLCAyMzQsIDIyNywgMjUsIDMsIDEsIDIzMywgMTIyLCAKLSAgICAyNSwgMywgMSwgMjMwLCAxNzIsIDI1LCAzLCAxLCAyMjgsIDkyLCAyNSwgMywgMSwgMjEzLCAxNDUsIDI1LCAzLCAxLCAyMjcsIAotICAgIDY1LCAyNSwgMywgMSwgMjI1LCAyNDAsIDI1LCAzLCAxLCAyMjMsIDE5MCwgMjUsIDMsIDEsIDQwLCAyMjAsIDEwMywgMjUsIAotICAgIDMsIDEsIDIyMCwgMTAzLCAyNSwgMywgMSwgMjE3LCAyNDgsIDI1LCAzLCAxLCAyMTUsIDEyOCwgMjUsIDMsIDEsIDIyNiwgOSwgCi0gICAgMjUsIDMsIDEsIDI1MCwgNDcsIDI1LCAzLCAxLCAyMjUsIDQ2LCAyNSwgMywgMSwgMjI3LCA2NywgMjUsIDMsIDEsIDIzNSwgCi0gICAgMTg0LCAyLCAyNDcsIDIwMywgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyNDcsIDIwMywgMjUsIDMsIDEsIDIyNywgNjYsIDIsIAotICAgIDIxNiwgMjMxLCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIxNiwgMjMxLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjE2LCAKLSAgICAyMzEsIDI1LCA2LCAyMzQsIDI1MSwgODcsIDI1LCAyNTEsIDIwNCwgODcsIDI1LCAyMTcsIDEzMywgODcsIDI1LCAyMTUsIAotICAgIDEyOSwgMiwgMjQxLCAzOCwgODcsIDI1LCAyMTUsIDEyOSwgMiwgMjU0LCAxNjQsIDI0LCAyNDEsIDM4LCA4NywgMjUsIDIxNSwgCi0gICAgMTI5LCAyLCAyNDcsIDIxMCwgMjQsIDI0MSwgMzgsIDg3LCAyNSwgMjI2LCAxMCwgODcsIDI1LCAyMjUsIDI0MSwgODcsIDI1LCAKLSAgICAyMzQsIDI1MSwgODcsIDI1LCAxLCAyNTMsIDE5MywgMjM0LCAxNSwgMjUsIDMsIDEsIDI1MywgMTkzLCAyMzQsIDE1LCAyNSwgCi0gICAgMSwgMjE5LCA3NywgMjUsIDMsIDEsIDIxOSwgNzcsIDI1LCAxLCAyNDcsIDE3OSwgMjUsIDMsIDEsIDI0NywgMTc5LCAyNSwgCi0gICAgMSwgMjM0LCAxNSwgMjUsIDMsIDEsIDIzNCwgMTUsIDI1LCAxLCAyMjIsIDE2MSwgMjUsIDMsIDEsIDIyMiwgMTYxLCA3OSwgCi0gICAgNiwgMSwgMjIwLCAyMzUsIDc5LCAzLCAxLCAyMjAsIDIzNSwgNzksIDYsIDEsIDI0NCwgMTA5LCA3OSwgMywgMSwgMjQ0LCAKLSAgICAxMDksIDc5LCA2LCAxLCAyMzQsIDEyMywgNzksIDMsIDEsIDIzNCwgMTIzLCA3OSwgNiwgMSwgMjQxLCAzMiwgNzksIDMsIDEsIAotICAgIDI0MSwgMzIsIDc5LCA2LCAxLCAyNDMsIDc4LCA3OSwgMywgMSwgMjQzLCA3OCwgNzksIDYsIDEsIDIyMCwgMjAyLCA3OSwgMywgCi0gICAgMSwgMjIwLCAyMDIsIDc5LCA2LCAxLCAyNDgsIDIwLCA3OSwgMywgMSwgMjQ4LCAyMCwgMjUsIDIzNCwgMjI4LCA4NywgMjUsIAotICAgIDIyMywgMTkxLCA4NywgMjUsIDIzMiwgMTQxLCAyMjAsIDEwNCwgODcsIDI1LCAxLCAyMTIsIDIxNSwgMjUsIDYsIDIxNywgCi0gICAgMTMzLCA4NywgMjUsIDIzMiwgMTQxLCAyNDUsIDY0LCA4NywgMjUsIDIyMywgMjAyLCAyMzIsIDE0MSwgMjQ1LCA2NCwgODcsIAotICAgIDI1LCA2LCAxLCAyMjAsIDE4NywgMjUsIDMsIDEsIDIyMCwgMTg3LCAyNSwgNiwgMjMyLCAxNDEsIDIyMCwgMTA0LCA4NywgCi0gICAgMjUsIDYsIDEsIDIyMiwgMTU5LCAyNSwgMywgMSwgMjIyLCAxNTksIDI1LCAyMjMsIDE5MSwgMiwgMjE5LCA0NSwgODcsIDI1LCAKLSAgICA2LCAyMjMsIDIwMiwgMjMyLCAxNDEsIDIyMCwgMTA0LCA4NywgMjUsIDYsIDI0NiwgNzIsIDIzMiwgMTQxLCAyMjAsIDEwNCwgCi0gICAgODcsIDI1LCA2LCAyMjMsIDIwMiwgMjQ2LCA3MiwgMjMyLCAxNDEsIDIyMCwgMTA0LCA4NywgMzMsIDYsIDEsIDIzNiwgNTYsIAotICAgIDIsIDI0MiwgMTEzLCAzMywgNiwgMSwgMjM1LCAxODcsIDMzLCA2LCAxLCAyNDcsIDExNCwgMzMsIDYsIDEsIDI0MiwgMTYzLCAKLSAgICAzMywgNiwgMSwgMjE1LCAxNzIsIDIzNiwgNTUsIDMzLCA2LCAxLCAyNDUsIDI0NywgMzMsIDYsIDEsIDI1MSwgNSwgNzIsIAotICAgIDMzLCA2LCAxLCAyMTIsIDI1NSwgMzMsIDYsIDEsIDIzNSwgMTI3LCAzMywgNiwgMSwgMjMyLCAyMTYsIDMzLCA2LCAxLCAKLSAgICAyMjksIDksIDMzLCA2LCAxLCAyMTYsIDEzMiwgMzMsIDYsIDEsIDIzNCwgNTcsIDMzLCA2LCAxLCAyNDAsIDE0NiwgMiwgCi0gICAgMjQyLCAxMTMsIDMzLCA2LCAxLCAyMjAsIDE3NSwgNjksIDMzLCA2LCAxLCAyNDUsIDI0MywgMzMsIDYsIDEsIDYxLCAzMywgCi0gICAgNiwgMSwgMjUxLCAyNTEsIDMzLCA2LCAxLCAyMTQsIDIzMiwgMzMsIDYsIDEsIDI0MiwgMjEyLCAzMywgNiwgMSwgMjQ4LCAKLSAgICA0MSwgMzMsIDYsIDEsIDIzNiwgNTUsIDMzLCA2LCAxLCAyMTIsIDY3LCAzMywgNiwgMSwgMjEyLCA4NywgMzMsIDYsIDEsIAotICAgIDcyLCAzMywgNiwgMSwgMjIwLCAxNzUsIDcyLCAzMywgNiwgMSwgMTgxLCAzMywgNiwgMSwgMjQ1LCAxMzEsIDMzLCA2LCAxLCAKLSAgICAyNDUsIDExNywgMzMsIDYsIDEsIDI0NSwgMTA4LCAzMywgNiwgMSwgNzUsIDMzLCA2LCAxLCAyMjYsIDk2LCAzMywgNiwgMSwgCi0gICAgMjQ1LCA1NSwgMzMsIDYsIDEsIDI0NSwgNDUsIDMzLCA2LCAxLCAyMTcsIDIyOSwgMzMsIDYsIDEsIDY5LCAzMywgNiwgMSwgCi0gICAgMjQ1LCAxNTksIDMzLCA2LCAxLCAxNTksIDMzLCA2LCAxLCAyMTYsIDEzNiwgMzMsIDYsIDEsIDI1MCwgNjcsIDMzLCA2LCAxLCAKLSAgICAyMjEsIDI0LCAzMywgNiwgMSwgMjIwLCAyNDUsIDMzLCA2LCAxLCAyNDEsIDI0MiwgNTIsIDMzLCA2LCAxLCAyMTMsIDE4LCAKLSAgICAzMywgNiwgMSwgMjE5LCAyMzYsIDUyLCAzMywgNiwgMSwgNzQsIDMzLCA2LCAxLCAyMTIsIDIwMywgMzMsIDYsIDEsIDE4NiwgCi0gICAgMzMsIDMsIDEsIDYxLCAzMywgMywgMSwgMjUxLCAyNTEsIDMzLCAzLCAxLCAyMTQsIDIzMiwgMzMsIDMsIDEsIDI0MiwgMjEyLCAKLSAgICAzMywgMywgMSwgMjQ4LCA0MSwgMzMsIDMsIDEsIDIzNiwgNTUsIDMzLCAzLCAxLCAyMTIsIDY3LCAzMywgMywgMSwgMjEyLCAKLSAgICA4NywgMzMsIDMsIDEsIDcyLCAzMywgMywgMSwgMjIwLCAxNzUsIDcyLCAzMywgMywgMSwgMTgxLCAzMywgMywgMSwgMjQ1LCAKLSAgICAxMzEsIDMzLCAzLCAxLCAyNDUsIDExNywgMzMsIDMsIDEsIDI0NSwgMTA4LCAzMywgMywgMSwgNzUsIDMzLCAzLCAxLCAyMjYsIAotICAgIDk2LCAzMywgMywgMSwgMjQ1LCA1NSwgMzMsIDMsIDEsIDI0NSwgNDUsIDMzLCAzLCAxLCAyMTcsIDIyOSwgMzMsIDMsIDEsIAotICAgIDY5LCAzMywgMywgMSwgMjQ1LCAxNTksIDMzLCAzLCAxLCAxNTksIDMzLCAzLCAxLCAyMTYsIDEzNiwgMzMsIDMsIDEsIDI1MCwgCi0gICAgNjcsIDMzLCAzLCAxLCAyMjEsIDI0LCAzMywgMywgMSwgMjIwLCAyNDUsIDMzLCAzLCAxLCAyNDEsIDI0MiwgNTIsIDMzLCAzLCAKLSAgICAxLCAyMTMsIDE4LCAzMywgMywgMSwgMjE5LCAyMzYsIDUyLCAzMywgMywgMSwgNzQsIDMzLCAzLCAxLCAyMTIsIDIwMywgMzMsIAotICAgIDMsIDEsIDE4NiwgMzMsIDMsIDEsIDIzNiwgNTYsIDIsIDI0MiwgMTEzLCAzMywgMywgMSwgMjM1LCAxODcsIDMzLCAzLCAxLCAKLSAgICAyNDcsIDExNCwgMzMsIDMsIDEsIDI0MiwgMTYzLCAzMywgMywgMSwgMjE1LCAxNzIsIDIzNiwgNTUsIDMzLCAzLCAxLCAyNDUsIAotICAgIDI0NywgMzMsIDMsIDEsIDI1MSwgNSwgNzIsIDMzLCAzLCAxLCAyMTIsIDI1NSwgMzMsIDMsIDEsIDIzNSwgMTI3LCAzMywgMywgCi0gICAgMSwgMjMyLCAyMTYsIDMzLCAzLCAxLCAyMjksIDksIDMzLCAzLCAxLCAyMTYsIDEzMiwgMzMsIDMsIDEsIDIzNCwgNTcsIDMzLCAKLSAgICAzLCAxLCAyNDAsIDE0NiwgMiwgMjQyLCAxMTMsIDMzLCAzLCAxLCAyMjAsIDE3NSwgNjksIDMzLCAzLCAxLCAyNDUsIDI0MywgCi0gICAgMzMsIDYsIDEsIDIyNywgNjcsIDMzLCAzLCAxLCAyMjcsIDY3LCAzMywgNiwgMSwgMjEzLCA0OSwgMzMsIDMsIDEsIDIxMywgCi0gICAgNDksIDMzLCA2LCAxLCAyMzUsIDE4MSwgNzQsIDMzLCAzLCAxLCAyMzUsIDE4MSwgNzQsIDMzLCA2LCAxLCAyMzIsIDIyMSwgCi0gICAgMjEyLCAxNzQsIDMzLCAzLCAxLCAyMzIsIDIyMSwgMjEyLCAxNzQsIDMzLCA2LCAxLCAyMzUsIDE4MSwgMjMyLCAyMjEsIAotICAgIDIxMiwgMTc0LCAzMywgMywgMSwgMjM1LCAxODEsIDIzMiwgMjIxLCAyMTIsIDE3NCwgMzMsIDYsIDEsIDI1MSwgMTcyLCAKLSAgICAyMTIsIDE3NCwgMzMsIDMsIDEsIDI1MSwgMTcyLCAyMTIsIDE3NCwgMzMsIDYsIDEsIDIzNSwgMTgxLCAyNTEsIDE3MiwgCi0gICAgMjEyLCAxNzQsIDMzLCAzLCAxLCAyMzUsIDE4MSwgMjUxLCAxNzIsIDIxMiwgMTc0LCAzMywgNiwgMSwgMjMzLCAyNDIsIDMzLCAKLSAgICAzLCAxLCAyMzMsIDI0MiwgMzMsIDYsIDEsIDIyNSwgNDYsIDMzLCAzLCAxLCAyMjUsIDQ2LCAzMywgNiwgMSwgMjQ0LCA1MSwgCi0gICAgMzMsIDMsIDEsIDI0NCwgNTEsIDMzLCA2LCAxLCAyMzUsIDE0NCwgMzMsIDMsIDEsIDIzNSwgMTQ0LCAzMywgNiwgMSwgMjM1LCAKLSAgICAxNDUsIDIsIDUxLCAyNDIsIDExNCwgMjU0LCAxNzQsIDMzLCAzLCAxLCAyMzUsIDE0NSwgMiwgNTEsIDI0MiwgMTE0LCAyNTQsIAotICAgIDE3NCwgMzMsIDYsIDEsIDIxNSwgMTc1LCAzMywgMywgMSwgMjE1LCAxNzUsIDMzLCA2LCAxLCAyMjMsIDg3LCAyMjcsIDY3LCAKLSAgICAzMywgMywgMSwgMjIzLCA4NywgMjI3LCA2NywgMzMsIDYsIDEsIDIyNywgNjgsIDIsIDIxNywgMTgsIDMzLCAzLCAxLCAyMjcsIAotICAgIDY4LCAyLCAyMTcsIDE4LCAzMywgNiwgMSwgMjI3LCA4LCAzMywgMywgMSwgMjI3LCA4LCAzMywgNiwgMSwgMjM0LCAxNSwgCi0gICAgMzMsIDMsIDEsIDIzNCwgMTUsIDMzLCAyMTcsIDk5LCA1MiwgMzcsIDMzLCAyMTcsIDE4LCAzNywgMzMsIDIyNiwgMTkyLCAKLSAgICAzNywgMzMsIDIwNywgMjI1LCAxNTIsIDM3LCAzMywgMjI1LCA0MCwgMjI1LCAxNTIsIDM3LCAzMywgMjI1LCAxMzcsIDM3LCAKLSAgICAzMywgMjQwLCAyMDEsIDIxNywgOTksIDUyLCAzNywgMzMsIDIzMSwgNCwgNTIsIDMzLCA2LCAxLCAyMjAsIDE3NSwgMjQwLCAKLSAgICAxNDYsIDIsIDIxOCwgMjcsIDMzLCAzLCAxLCAyMjAsIDE3NSwgMjQwLCAxNDYsIDIsIDIxOCwgMjcsIDMzLCA2LCAxLCAyMjEsIAotICAgIDY2LCA1MiwgMzMsIDMsIDEsIDIyMSwgNjYsIDUyLCAzMywgNiwgMSwgMjQ1LCA1NiwgMiwgMjE3LCA2OCwgMzMsIDMsIDEsIAotICAgIDI0NSwgNTYsIDIsIDIxNywgNjgsIDMzLCA2LCAxLCAyNDIsIDIxMywgMiwgMjE1LCAxMjcsIDMzLCAzLCAxLCAyNDIsIDIxMywgCi0gICAgMiwgMjE1LCAxMjcsIDMzLCA2LCAxLCAyNDIsIDIxMywgMiwgOTAsIDMzLCAzLCAxLCAyNDIsIDIxMywgMiwgOTAsIDMzLCA2LCAKLSAgICAxLCAyNDIsIDIxMywgMiwgMjMxLCAzNywgMTAxLCAzMywgMywgMSwgMjQyLCAyMTMsIDIsIDIzMSwgMzcsIDEwMSwgMzMsIDYsIAotICAgIDEsIDIxMiwgNjgsIDIsIDI0NywgMjQ2LCAzMywgMywgMSwgMjEyLCA2OCwgMiwgMjQ3LCAyNDYsIDMzLCA2LCAxLCAyMTIsIAotICAgIDg4LCAyLCAyNDcsIDI0NiwgMzMsIDMsIDEsIDIxMiwgODgsIDIsIDI0NywgMjQ2LCAzMywgNiwgMSwgMjM1LCAxNywgMiwgCi0gICAgMjQ3LCAyNDYsIDMzLCAzLCAxLCAyMzUsIDE3LCAyLCAyNDcsIDI0NiwgMzMsIDYsIDEsIDIzNSwgMTcsIDIsIDcxLCA5MCwgCi0gICAgMzMsIDMsIDEsIDIzNSwgMTcsIDIsIDcxLCA5MCwgMzMsIDYsIDEsIDIzNSwgMTcsIDIsIDkwLCAzMywgMywgMSwgMjM1LCAKLSAgICAxNywgMiwgOTAsIDMzLCA2LCAxLCAyNTIsIDQ0LCAxODEsIDMzLCAzLCAxLCAyNTIsIDQ0LCAxODEsIDMzLCA2LCAxLCAyNDUsIAotICAgIDEwOSwgMiwgMjQ3LCAyNDYsIDMzLCAzLCAxLCAyNDUsIDEwOSwgMiwgMjQ3LCAyNDYsIDMzLCA2LCAyNiwgMjQ1LCAxMDksIAotICAgIDI0MiwgMjEyLCAzMywgMywgMjYsIDI0NSwgMTA5LCAyNDIsIDIxMiwgMzMsIDYsIDEsIDIyNiwgOTcsIDIsIDIzMSwgMzcsIAotICAgIDEwMSwgMzMsIDMsIDEsIDIyNiwgOTcsIDIsIDIzMSwgMzcsIDEwMSwgMzMsIDYsIDEsIDI1NCwgMTgwLCAxNTksIDMzLCAzLCAKLSAgICAxLCAyNTQsIDE4MCwgMTU5LCAzMywgNiwgMSwgMjQ1LCA0NiwgMiwgMjQ3LCAyNDYsIDMzLCAzLCAxLCAyNDUsIDQ2LCAyLCAKLSAgICAyNDcsIDI0NiwgMzMsIDYsIDEsIDIxNywgMjMwLCAyLCAyNDcsIDI0NiwgMzMsIDMsIDEsIDIxNywgMjMwLCAyLCAyNDcsIAotICAgIDI0NiwgMzMsIDYsIDEsIDIxOSwgNjEsIDY5LCAzMywgMywgMSwgMjE5LCA2MSwgNjksIDMzLCA2LCAxLCAyMTksIDYxLCAKLSAgICAxMTEsIDIsIDkwLCAzMywgMywgMSwgMjE5LCA2MSwgMTExLCAyLCA5MCwgMzMsIDYsIDEsIDI0MiwgMzAsIDIsIDI0NywgCi0gICAgMjQ2LCAzMywgMywgMSwgMjQyLCAzMCwgMiwgMjQ3LCAyNDYsIDMzLCA2LCAyNiwgMjE3LCAyMzAsIDIxNiwgMTM2LCAzMywgCi0gICAgMywgMjYsIDIxNywgMjMwLCAyMTYsIDEzNiwgMzMsIDYsIDEsIDI1MCwgNjgsIDIsIDI0NywgMjQ2LCAzMywgMywgMSwgMjUwLCAKLSAgICA2OCwgMiwgMjQ3LCAyNDYsIDMzLCA2LCAxLCAyNTAsIDY4LCAyLCA3MSwgOTAsIDMzLCAzLCAxLCAyNTAsIDY4LCAyLCA3MSwgCi0gICAgOTAsIDMzLCA2LCAxLCAyMjAsIDIxMywgMzMsIDMsIDEsIDIyMCwgMjEzLCAzMywgNiwgMSwgMjU0LCAxODAsIDI1MCwgNjcsIAotICAgIDMzLCAzLCAxLCAyNTQsIDE4MCwgMjUwLCA2NywgMzMsIDYsIDEsIDI1NCwgMTgwLCAyNTAsIDY4LCAyLCAyNDcsIDI0NiwgCi0gICAgMzMsIDMsIDEsIDI1NCwgMTgwLCAyNTAsIDY4LCAyLCAyNDcsIDI0NiwgMzMsIDEsIDIyNiwgMTg1LCAzMywgNiwgMSwgMjEyLCAKLSAgICA2OCwgMiwgMjUxLCA3NCwgMzMsIDMsIDEsIDIxMiwgNjgsIDIsIDI1MSwgNzQsIDMzLCA2LCAxLCAyMzUsIDE3LCAyLCAxMDEsIAotICAgIDMzLCAzLCAxLCAyMzUsIDE3LCAyLCAxMDEsIDMzLCA2LCAxLCAyNDUsIDEzMiwgMiwgMjE4LCAyNywgMzMsIDMsIDEsIDI0NSwgCi0gICAgMTMyLCAyLCAyMTgsIDI3LCAzMywgNiwgMSwgMjQ1LCAxMDksIDIsIDEwMSwgMzMsIDMsIDEsIDI0NSwgMTA5LCAyLCAxMDEsIAotICAgIDMzLCA2LCAxLCAyNDUsIDEwOSwgMiwgMjE4LCAyNywgMzMsIDMsIDEsIDI0NSwgMTA5LCAyLCAyMTgsIDI3LCAzMywgNiwgMSwgCi0gICAgMjM0LCAxMzMsIDI1MCwgNjcsIDMzLCAzLCAxLCAyMzQsIDEzMywgMjUwLCA2NywgMzMsIDYsIDEsIDI0NSwgMTE4LCAyLCAKLSAgICAyMTgsIDI3LCAzMywgMywgMSwgMjQ1LCAxMTgsIDIsIDIxOCwgMjcsIDMzLCAzLCAxLCAyMjYsIDE4NSwgMzMsIDYsIDEsIAotICAgIDExOCwgMiwgMjUxLCA3NCwgMzMsIDMsIDEsIDExOCwgMiwgMjUxLCA3NCwgMzMsIDYsIDEsIDExOCwgMiwgMjQ3LCAyMDksIAotICAgIDMzLCAzLCAxLCAxMTgsIDIsIDI0NywgMjA5LCAzMywgNiwgMjYsIDExOCwgMjM2LCA1NSwgMzMsIDMsIDI2LCAxMTgsIDIzNiwgCi0gICAgNTUsIDMzLCA2LCAxLCAyMzYsIDU2LCAyLCAyNTEsIDc0LCAzMywgMywgMSwgMjM2LCA1NiwgMiwgMjUxLCA3NCwgMzMsIDYsIAotICAgIDEsIDIyMiwgMTEzLCAzMywgMywgMSwgMjIyLCAxMTMsIDMzLCA2LCAxLCAyMjIsIDExNCwgMiwgMjQ3LCAyMDksIDMzLCAzLCAKLSAgICAxLCAyMjIsIDExNCwgMiwgMjQ3LCAyMDksIDMzLCA2LCAxLCAyMTIsIDY4LCAyLCAyNDcsIDIwOSwgMzMsIDMsIDEsIDIxMiwgCi0gICAgNjgsIDIsIDI0NywgMjA5LCAzMywgNiwgMSwgMjEyLCA4OCwgMiwgMjQ3LCAyMDksIDMzLCAzLCAxLCAyMTIsIDg4LCAyLCAKLSAgICAyNDcsIDIwOSwgMzMsIDYsIDEsIDI1NCwgMTgwLCAyNDUsIDI0NywgMzMsIDMsIDEsIDI1NCwgMTgwLCAyNDUsIDI0NywgMzMsIAotICAgIDYsIDEsIDI0MCwgMTQ2LCAyLCAyMzIsIDM3LCAzMywgMywgMSwgMjQwLCAxNDYsIDIsIDIzMiwgMzcsIDMzLCA2LCAxLCAKLSAgICAyNDAsIDE0NiwgMiwgMjQ3LCAyMDksIDMzLCAzLCAxLCAyNDAsIDE0NiwgMiwgMjQ3LCAyMDksIDMzLCA2LCAxLCAxNTcsIDIsIAotICAgIDI0NywgMjA5LCAzMywgMywgMSwgMTU3LCAyLCAyNDcsIDIwOSwgMzMsIDYsIDEsIDI1MiwgNTQsIDc1LCAzMywgMywgMSwgCi0gICAgMjUyLCA1NCwgNzUsIDMzLCA2LCAxLCAyNTIsIDU0LCAxNTcsIDIsIDI0NywgMjA5LCAzMywgMywgMSwgMjUyLCA1NCwgMTU3LCAKLSAgICAyLCAyNDcsIDIwOSwgMzMsIDYsIDEsIDE5MSwgMiwgMjQ3LCAyMDksIDMzLCAzLCAxLCAxOTEsIDIsIDI0NywgMjA5LCAzMywgCi0gICAgNiwgMSwgMTExLCAyLCAyMzIsIDM3LCAzMywgMywgMSwgMTExLCAyLCAyMzIsIDM3LCAzMywgNiwgMSwgMTExLCAyLCAyNDcsIAotICAgIDIwOSwgMzMsIDMsIDEsIDExMSwgMiwgMjQ3LCAyMDksIDMzLCA2LCAxLCAxMTEsIDIsIDUxLCAxNzksIDMzLCAzLCAxLCAKLSAgICAxMTEsIDIsIDUxLCAxNzksIDMzLCA2LCAxLCAyNTAsIDY4LCAyLCAyNDcsIDIwOSwgMzMsIDMsIDEsIDI1MCwgNjgsIDIsIAotICAgIDI0NywgMjA5LCAzMywgNiwgMSwgMjQyLCAyMTMsIDIsIDI0NywgMjQ2LCAzMywgMywgMSwgMjQyLCAyMTMsIDIsIDI0NywgCi0gICAgMjQ2LCAzMywgNiwgMSwgMjEzLCAxOSwgMiwgMjQ3LCAyMDksIDMzLCAzLCAxLCAyMTMsIDE5LCAyLCAyNDcsIDIwOSwgMzMsIAotICAgIDYsIDEsIDI0MiwgMjEzLCAyLCAyMTksIDQ1LCAyNCwgMTAxLCAzMywgMywgMSwgMjQyLCAyMTMsIDIsIDIxOSwgNDUsIDI0LCAKLSAgICAxMDEsIDMzLCA2LCAxLCAyNDIsIDMwLCAyLCAxMDEsIDMzLCAzLCAxLCAyNDIsIDMwLCAyLCAxMDEsIDMzLCA2LCAxLCAyNDIsIAotICAgIDMwLCAyLCA5MCwgMzMsIDMsIDEsIDI0MiwgMzAsIDIsIDkwLCAzMywgNiwgMSwgMjM0LCAyMywgMjQ4LCA0MSwgMzMsIDMsIAotICAgIDEsIDIzNCwgMjMsIDI0OCwgNDEsIDMzLCA2LCAxLCAyMzQsIDIzLCAyNDcsIDExNCwgMzMsIDMsIDEsIDIzNCwgMjMsIDI0NywgCi0gICAgMTE0LCAzMywgNiwgMSwgMjM0LCAyMywgMjEyLCAyMCwgMzMsIDMsIDEsIDIzNCwgMjMsIDIxMiwgMjAsIDMzLCA2LCAxLCAKLSAgICAyMzQsIDIzLCAyNDUsIDI0MSwgMzMsIDMsIDEsIDIzNCwgMjMsIDI0NSwgMjQxLCAzMywgNiwgMSwgMjM0LCAyMywgMjMyLCAKLSAgICAyMTYsIDMzLCAzLCAxLCAyMzQsIDIzLCAyMzIsIDIxNiwgMzMsIDYsIDEsIDIzNCwgMjMsIDIyOSwgOSwgMzMsIDMsIDEsIAotICAgIDIzNCwgMjMsIDIyOSwgOSwgMzMsIDYsIDEsIDIzNCwgMjMsIDIyMCwgMzcsIDMzLCAzLCAxLCAyMzQsIDIzLCAyMjAsIDM3LCAKLSAgICAzMywgNiwgMSwgMjM0LCAyMywgMjE3LCAxMywgMzMsIDMsIDEsIDIzNCwgMjMsIDIxNywgMTMsIDMzLCA2LCAxLCAyMjMsIAotICAgIDIwMiwgMjEyLCA4NywgMzMsIDMsIDEsIDIyMywgMjAyLCAyMTIsIDg3LCAzMywgNiwgMSwgMjQ1LCAxMzIsIDIsIDEwMSwgCi0gICAgMzMsIDMsIDEsIDI0NSwgMTMyLCAyLCAxMDEsIDMzLCA2LCAxLCAyMzMsIDI1LCAzMywgMywgMSwgMjMzLCAyNSwgMzMsIDYsIAotICAgIDEsIDIyMywgMTkyLCAzMywgMywgMSwgMjIzLCAxOTIsIDMzLCA2LCAxLCAyMTMsIDgwLCAzMywgMywgMSwgMjEzLCA4MCwgCi0gICAgMzMsIDYsIDEsIDIyNCwgMjMyLCAzMywgMywgMSwgMjI0LCAyMzIsIDMzLCA2LCAxLCAyMTQsIDYsIDMzLCAzLCAxLCAyMTQsIAotICAgIDYsIDMzLCA2LCAxLCAyNTQsIDc1LCAxODEsIDMzLCAzLCAxLCAyNTQsIDc1LCAxODEsIDMzLCA2LCAxLCAyNDUsIDEzMiwgMiwgCi0gICAgMjMxLCAzNywgMTAxLCAzMywgMywgMSwgMjQ1LCAxMzIsIDIsIDIzMSwgMzcsIDEwMSwgMzMsIDYsIDEsIDI0NSwgMTA5LCAyLCAKLSAgICAyMzEsIDM3LCAxMDEsIDMzLCAzLCAxLCAyNDUsIDEwOSwgMiwgMjMxLCAzNywgMTAxLCAzMywgNiwgMSwgMjI2LCA5NywgMiwgCi0gICAgMjQ3LCAyNDYsIDMzLCAzLCAxLCAyMjYsIDk3LCAyLCAyNDcsIDI0NiwgMzMsIDYsIDEsIDIyMCwgMjE0LCAyLCAyNDcsIAotICAgIDI0NiwgMzMsIDMsIDEsIDIyMCwgMjE0LCAyLCAyNDcsIDI0NiwgMTQxLCA2LCAxLCAyNTMsIDgwLCAxNDEsIDYsIDEsIDI1MSwgCi0gICAgMjE2LCAxNDEsIDYsIDEsIDI0MiwgMTc5LCAxNDEsIDYsIDEsIDI0OCwgMTY0LCAxNDEsIDYsIDEsIDI0NSwgMTY5LCAxNDEsIAotICAgIDYsIDEsIDIxMiwgMTA5LCAxNDEsIDYsIDEsIDI0NSwgMTU0LCAxNDEsIDYsIDEsIDI0NSwgMzAsIDE0MSwgNiwgMSwgMTA4LCAKLSAgICAxNDEsIDYsIDEsIDIxMiwgNjcsIDE0MSwgNiwgMSwgMjM1LCAyMjQsIDE0MSwgNiwgMSwgMjMyLCAyMTksIDE0MSwgNiwgMSwgCi0gICAgMjEzLCAxNDgsIDE0MSwgNiwgMSwgMjUwLCAyMTksIDE0MSwgNiwgMSwgMjM0LCAxNzEsIDE0MSwgNiwgMSwgMjQxLCA1NCwgCi0gICAgMTQxLCA2LCAxLCAyMzUsIDEzOSwgMTQxLCA2LCAxLCAyNDIsIDIyMiwgMTQxLCA2LCAxLCAyNTAsIDYyLCAxNDEsIDYsIDEsIAotICAgIDIzMSwgMTIyLCAxNDEsIDYsIDEsIDIxMiwgMjU1LCAxNDEsIDYsIDEsIDIyOCwgMTUwLCAxNDEsIDYsIDEsIDIyMSwgMjQsIAotICAgIDE0MSwgNiwgMSwgMjE0LCAxMTksIDE0MSwgNiwgMSwgMjUwLCA5MiwgMTQxLCA2LCAxLCAyMjYsIDgwLCAxNDEsIDYsIDEsIAotICAgIDIzNSwgMTEyLCAxNDEsIDYsIDEsIDIwMywgMTQxLCA2LCAxLCAyMjIsIDgwLCAxNDEsIDYsIDEsIDIxNCwgMTU2LCAxNDEsIAotICAgIDYsIDEsIDIxNywgMTUsIDE0MSwgNiwgMSwgMjIzLCAyNDUsIDE0MSwgNiwgMSwgMjQ5LCAxNzUsIDE0MSwgNiwgMSwgMjEyLCAKLSAgICAyNDAsIDE0MSwgNiwgMSwgMjI1LCAxNzgsIDE0MSwgNiwgMSwgMjM0LCAxODIsIDE0MSwgNiwgMSwgMjI3LCA4OCwgMTQxLCAKLSAgICA2LCAxLCAyNDQsIDExMSwgMTQxLCA1OSwgMSwgNDIsIDE1MSwgMjIzLCAxMzAsIDE0MSwgMjUzLCAyMjYsIDE0MSwgMjQ1LCAKLSAgICAxMTIsIDc3LCAxNDEsIDI0NCwgMjU0LCA3NywgMTQxLCAyNDksIDE1NywgMTQxLCAyMjQsIDE1OCwgNzcsIDE0MSwgMjU0LCAKLSAgICAxODEsIDc3LCAxNDEsIDMsIDEsIDI1MywgODAsIDE0MSwgMywgMSwgMjUxLCAyMTYsIDE0MSwgMywgMSwgMjQyLCAxNzksIAotICAgIDE0MSwgMywgMSwgMjQ4LCAxNjQsIDE0MSwgMywgMSwgMjQ1LCAxNjksIDE0MSwgMywgMSwgMjEyLCAxMDksIDE0MSwgMywgMSwgCi0gICAgMjQ1LCAxNTQsIDE0MSwgMywgMSwgMjQ1LCAzMCwgMTQxLCAzLCAxLCAxMDgsIDE0MSwgMywgMSwgMjEyLCA2NywgMTQxLCAzLCAKLSAgICAxLCAyMzUsIDIyNCwgMTQxLCAzLCAxLCAyMzIsIDIxOSwgMTQxLCAzLCAxLCAyMTMsIDE0OCwgMTQxLCAzLCAxLCAyNTAsIAotICAgIDIxOSwgMTQxLCAzLCAxLCAyMzQsIDE3MSwgMTQxLCAzLCAxLCAyNDEsIDU0LCAxNDEsIDMsIDEsIDIzNSwgMTM5LCAxNDEsIAotICAgIDMsIDEsIDI0MiwgMjIyLCAxNDEsIDMsIDEsIDI1MCwgNjIsIDE0MSwgMywgMSwgMjMxLCAxMjIsIDE0MSwgMywgMSwgMjEyLCAKLSAgICAyNTUsIDE0MSwgMywgMSwgMjI4LCAxNTAsIDE0MSwgMywgMSwgMjIxLCAyNCwgMTQxLCAzLCAxLCAyMTQsIDExOSwgMTQxLCAKLSAgICAzLCAxLCAyNTAsIDkyLCAxNDEsIDMsIDEsIDIyNiwgODAsIDE0MSwgMywgMSwgMjM1LCAxMTIsIDE0MSwgMywgMSwgMjAzLCAKLSAgICAxNDEsIDMsIDEsIDIyMiwgODAsIDE0MSwgMywgMSwgMjE0LCAxNTYsIDE0MSwgMywgMSwgMjE3LCAxNSwgMTQxLCAzLCAxLCAKLSAgICAyMjMsIDI0NSwgMTQxLCAzLCAxLCAyNDksIDE3NSwgMTQxLCAzLCAxLCAyMTIsIDI0MCwgMTQxLCAzLCAxLCAyMjUsIDE3OCwgCi0gICAgMTQxLCAzLCAxLCAyMzQsIDE4MiwgMTQxLCAzLCAxLCAyMjcsIDg4LCAxNDEsIDMsIDEsIDI0NCwgMTExLCAxNDEsIDMsIDI2LCAKLSAgICAyNDUsIDE3MCwgMjEyLCAyNDAsIDE0MSwgMjQzLCAyMDAsIDIxOSwgNjksIDE0MSwgMjQwLCAxNjAsIDkzLCAyNTQsIDE3NSwgCi0gICAgMjQ1LCAyMywgOTMsIDI1NCwgMTc1LCAyMjIsIDgxLCA5MywgMjU0LCAxNzUsIDIyMSwgMTEsIDkzLCAyNTQsIDE3NSwgMjEyLCAKLSAgICA5NywgMjI0LCAyMTUsIDkzLCAyNTQsIDE3NSwgMjEyLCA5NywgMjQzLCAxMDAsIDkzLCAyNTQsIDE3NSwgMjE3LCAyOCwgOTMsIAotICAgIDI1NCwgMTc1LCAyMjMsIDIwMCwgOTMsIDI1NCwgMTc1LCAyMTIsIDk2LCA5MywgMjU0LCAxNzUsIDIyNiwgMTE4LCA5MywgCi0gICAgMjU0LCAxNzUsIDIxMywgMTEsIDkzLCAyNTQsIDE3NSwgMjE3LCAxNjcsIDkzLCAyNTQsIDE3NSwgMjQzLCAxNywgOTMsIAotICAgIDI1NCwgMTc1LCAyNDMsIDE4LCAyMzAsIDEzOSwgOTMsIDI1NCwgMTc1LCAyNDMsIDE1LCA5MywgMjU0LCAxNzUsIDIyNCwgCi0gICAgMjE2LCAyMjYsIDE0NCwgOTMsIDI1NCwgMTc1LCAyMTcsIDIwNiwgMjQzLCAzMiwgOTMsIDI1NCwgMTc1LCAyMjYsIDEwMCwgCi0gICAgOTMsIDI1NCwgMTc1LCAyNTMsIDExNiwgMjQyLCAyMiwgOTMsIDI1NCwgMTc1LCAyMzAsIDE0OSwgOTMsIDI1NCwgMTc1LCAKLSAgICAyMzIsIDEzLCA5MywgMjU0LCAxNzUsIDIzMSwgMTEzLCA5MywgMjU0LCAxNzUsIDIzMSwgMTE0LCAyMzQsIDE4MywgOTMsIAotICAgIDI1NCwgMTc1LCAyNDgsIDEwOCwgOTMsIDI1NCwgMTc1LCAyMjQsIDIyNywgOTMsIDI1NCwgMTc1LCAyMTcsIDIwNiwgMjI0LCAKLSAgICAyMTEsIDkzLCAyNTQsIDE3NSwgMjEzLCAyMSwgMjUxLCAyMTcsIDIxMiwgMjIxLCA5MywgMjU0LCAxNzUsIDIyNywgNzMsIAotICAgIDkzLCAyNTQsIDE3NSwgMjM2LCAxNCwgOTMsIDI1NCwgMTc1LCAyNDgsIDIxLCA5MywgMjU0LCAxNzUsIDIxMiwgMjYsIDkzLCAKLSAgICAxNTIsIDIzMSwgMjA2LCAyNDksIDIyOCwgOTMsIDIyNSwgMTQ1LCAyMjAsIDIxNiwgOTMsIDIyNSwgMTQ1LCAyNDEsIDIzMywgCi0gICAgMjIyLCA4MSwgOTMsIDIyNSwgMTQ1LCAyNDEsIDIzMywgMjI2LCAxMTIsIDkzLCAyMjUsIDE0NSwgMjQxLCAyMzMsIDIyNCwgCi0gICAgMjIwLCA5MywgMjI1LCAxNDUsIDI0MSwgMTQ0LCA5MywgMjI1LCAxNDUsIDIxNiwgMTM0LCA5MywgMjI1LCAxNDUsIDIyMiwgCi0gICAgODEsIDkzLCAyMjUsIDE0NSwgMjI2LCAxMTIsIDkzLCAyMjUsIDE0NSwgMjI0LCAyMjAsIDkzLCAyMjUsIDE0NSwgMjQxLCAKLSAgICA0NywgOTMsIDIyNSwgMTQ1LCAyNDEsIDQ4LCAyNDEsIDIzNSwgMzEsIDIxNCwgMjM2LCA5MywgMjI1LCAxNDUsIDIyNCwgCi0gICAgMTYyLCA5MywgMjI1LCAxNDUsIDI0OCwgMTUxLCAxNjcsIDIzMSwgMjM0LCA5MywgMjI1LCAxNDUsIDIzMSwgMTA1LCA5MywgCi0gICAgMjI1LCAyNywgMjMxLCAyMzEsIDkzLCAyMjUsIDE0NSwgMjI0LCA1OSwgOTMsIDIyNSwgMjcsIDIyNiwgMTIwLCA5MywgMjI1LCAKLSAgICAxNDUsIDIyMCwgMjAxLCAyNDcsIDc0LCA5MywgMjI1LCAxNDUsIDIyMCwgODUsIDI0NywgNzQsIDkzLCAyMjUsIDI3LCAyMTksIAotICAgIDIzNywgMjI2LCAxMTQsIDkzLCAxNTIsIDIxNSwgMTMxLCAyNDcsIDc0LCA5MywgMTUyLCAyMzIsIDE2MywgMjQ3LCA3NCwgCi0gICAgOTMsIDIyNSwgMjcsIDIyOCwgNTEsIDI0MiwgMjEsIDkzLCAyMjUsIDE0NSwgMjI0LCAyMjEsIDIyNCwgMjE1LCA5MywgMSwgCi0gICAgMjU0LCA3OCwgOTMsIDEsIDI1MSwgMjA1LCA5MywgMSwgMjQyLCAxNzcsIDkzLCAxLCAyNDgsIDEzNCwgOTMsIDEsIDI0MSwgCi0gICAgMjIyLCA5MywgMSwgMjE0LCAyMzYsIDkzLCAxLCAyMTIsIDkwLCA5MywgMSwgMjQxLCAxODIsIDkzLCAxLCAyMTcsIDE4MywgCi0gICAgOTMsIDEsIDIxMiwgMjI0LCA5MywgMSwgNDAsIDIzNCwgMjU0LCA5MywgMSwgMjM0LCAyNTQsIDkzLCAxLCAyMzMsIDExOCwgCi0gICAgOTMsIDEsIDQwLCAyMzEsIDEyOSwgOTMsIDEsIDIzMSwgMTI5LCA5MywgMSwgNDAsIDIyOCwgNTAsIDkzLCAxLCAyMjgsIDUwLCAKLSAgICA5MywgMSwgMjIyLCAxNjQsIDkzLCAxLCAyNTMsIDc4LCA5MywgMSwgNDAsIDIyNiwgOTYsIDkzLCAxLCAyMjYsIDk2LCA5MywgCi0gICAgMSwgNDAsIDIxNiwgMTM3LCA5MywgMSwgMjE2LCAxMzcsIDkzLCAxLCAyMjQsIDE4NCwgOTMsIDEsIDIyMywgMjE5LCA5MywgCi0gICAgMSwgMjIwLCAyMDAsIDkzLCAxLCAyMTcsIDI0NSwgOTMsIDI2LCAyMTIsIDI1MywgNTEsIDIxNCwgMjM2LCA5MywgMjYsIAotICAgIDIxMiwgMjUzLCAyMTQsIDIzNywgMjEyLCAyMjQsIDkzLCAyNiwgMjEyLCAyNTMsIDUxLCAyMTIsIDIyNCwgOTMsIDIyNSwgCi0gICAgMjcsIDI0MywgMTcsIDkzLCAyMjUsIDI3LCAyNDMsIDE1LCAxMiwgNTAsIDUyLCAxMiwgNSwgMjIyLCAxNTgsIDEyLCAyNDMsIAotICAgIDI1NSwgMjMxLCAyMTcsIDEyLCA1LCAyMjIsIDE5MiwgMjUzLCAyMDcsIDI0OSwgNTAsIDIyMywgOTUsIDI1MywgMjA3LCAKLSAgICAyNDMsIDIzMCwgMjIzLCA5NSwgMTIsIDIyNCwgMjcsIDI1MywgMjA3LCAyMjYsIDU4LCAyMzEsIDYsIDUyLCAyNTMsIDIwNywgCi0gICAgMjI2LCA1OCwgMjE3LCAyMDEsIDIxNywgMTAxLCA1MiwgMjU0LCAxMjYsIDUyLCAxMiwgMjQ5LCAxNTcsIDEyLCAyNDgsIDk2LCAKLSAgICAyMjEsIDU3LCAxMiwgMjI1LCAxNDcsIDIxNCwgMjE4LCA1MiwgMTIsIDUsIDIzMCwgMjQzLCAxMiwgNSwgMjIyLCAxNzQsIAotICAgIDI1NCwgODAsIDIxNCwgMjksIDEyLCA1LCAyNTQsIDgwLCAyNTMsIDEzNywgMTIsIDUsIDIyNCwgNTgsIDI1NCwgNzksIDEyLCAKLSAgICA1LCAyMjQsIDY1LCAyNTQsIDYxLCAyNTQsIDE0LCAxMiwgNSwgMjE4LCAyMCwgMTIsIDMsIDEyNCwgMjE4LCAyOSwgMTIsIDMsIAotICAgIDEyNCwgMjYsIDEwNiwgMiwgMjMzLCAxMjcsIDIsIDIxMywgMzQsIDEyLCAzLCAxMjQsIDIxMiwgMTAxLCAxMiwgMywgMjQ0LCAKLSAgICAxMzMsIDEyLCAzLCAyNDgsIDEyOSwgMTIsIDMsIDIzNCwgMjEwLCAxMiwgMjIxLCA3MCwgMTIsIDIxNiwgMTY5LCA2MiwgCi0gICAgMjI1LCAyNywgNzcsIDEyLCAyMjQsIDE1OCwgNzcsIDEyLCAxLCAyMzQsIDIxNCwgMjEzLCAzNCwgMTIsIDEsIDI0MiwgMiwgCi0gICAgMTIsIDEsIDEwNiwgMiwgMjMyLCAzMywgNDksIDEyLCAxLCAxMDYsIDIsIDE5MiwgNDksIDEyLCAxLCAyMTQsIDE1LCAyLCAKLSAgICAxOTIsIDQ5LCAxMiwgMSwgMTA2LCAyLCAxOTIsIDU1LCAxMiwgMSwgNzMsIDIsIDE5MiwgNDksIDEyLCAxLCAyNTQsIDc4LCAKLSAgICAxMiwgMSwgMjUxLCAyMzAsIDEyLCAxLCAyMTcsIDIxNiwgMjMxLCAyMjcsIDEyLCAxLCAyMTcsIDIxNSwgMTIsIDEsIDIxNywgCi0gICAgMTQ1LCAxMiwgMSwgMjM1LCAxMjQsIDEyLCAxLCAyNDIsIDE4LCAxMiwgMSwgMjM0LCAxMzUsIDEyLCAxLCAyNDgsIDE0MCwgCi0gICAgMTIsIDEsIDIxNywgMTU1LCAxMiwgMSwgMjIzLCAyNDUsIDEyLCAxLCAyMTIsIDEwMSwgMTIsIDEsIDIyMiwgODUsIDEyLCAxLCAKLSAgICAyMjAsIDIzOSwgMTIsIDEsIDIyMiwgMTk1LCAxMiwgMSwgMjQ4LCAxNTksIDEyLCAxLCAyMTgsIDI5LCAxMiwgMSwgMjEyLCAKLSAgICAxMDQsIDEyLCAxLCAyNTQsIDEwMywgMTIsIDEsIDI0MiwgMjIwLCAxMiwgMSwgMjM0LCAxODEsIDIsIDExNywgMTc2LCA0OSwgCi0gICAgMTIsIDEsIDIzNCwgMTgxLCAyLCAxMzMsIDE3NiwgNTUsIDEyLCAxLCAyNDQsIDEzNiwgNzMsIDIsIDIzNSwgMTkxLCAyMTUsIAotICAgIDc5LCAxMiwgMSwgMjQ0LCAxMzYsIDczLCAyLCAxMTcsIDE3NiwgNDksIDEyLCAxLCAyNDQsIDEzNiwgNzMsIDIsIDEzMywgCi0gICAgMTc2LCA0OSwgMTIsIDIxNywgMjUwLCAxMiwgMSwgMjQ0LCAxMTEsIDEyLCAxLCAyMjQsIDIyNSwgMTIsIDEsIDIzNCwgMjU0LCAKLSAgICAxMiwgMSwgMjMzLCAxMjYsIDEyLCAxLCAyMzEsIDE0MywgMTIsIDEsIDIyOCwgMTczLCAxMiwgMSwgMjQxLCAyMDIsIDEyLCAKLSAgICAxLCAyMTQsIDE0LCAxMiwgMSwgMTA2LCAyMzEsIDI1NSwgMTIsIDEsIDIxMywgMzQsIDEyLCAyNDQsIDEzMSwgMTIsIDI0OCwgCi0gICAgMTI3LCAxMiwgMjM0LCAyMDgsIDEyLCAyNDQsIDEzMywgMTIsIDI0OCwgMTI5LCAxMiwgMjM0LCAyMTAsIDEyLCAyMjEsIDE1LCAKLSAgICAxMiwgMjE4LCAyNDYsIDEyLCAyMzIsIDMxLCA0OSwgMTIsIDE5MiwgNDksIDEyLCAxOTIsIDU1LCAxMiwgMjE5LCAxMCwgCi0gICAgMjU0LCA3OCwgMTIsIDIzNSwgMTkxLCAyNDgsIDEyOSwgMTIsIDE1MiwgMjI4LCAxNzQsIDI0MiwgMTk0LCAxMiwgMjExLCAKLSAgICAyNTAsIDEyLCAzMCwgNSwgMywgMjE1LCA4MCwgNDksIDEyLCAzMCwgNSwgMjM1LCAxOTEsIDMsIDIxNSwgODAsIDQ5LCAxMiwgCi0gICAgMzAsIDUsIDYyLCA1NSwgMTIsIDIyMywgMjAyLCAyNDgsIDEyOSwgMTIsIDI0NCwgMTM0LCAyLCAxMTcsIDI0NywgNzIsIDEyLCAKLSAgICAyMTQsIDE2LCAxOTIsIDU1LCAyNTMsIDIwNywgMjEsIDIxMiwgNzksIDI1MywgMjA3LCAyMSwgMTE2LCAyNTMsIDIwNywgMjEsIAotICAgIDEwOSwgMjUzLCAyMDcsIDIxLCAxNjYsIDI1MywgMjA3LCAyMSwgMTYzLCAyNTMsIDIwNywgMjEsIDE4MCwgMjUzLCAyMDcsIAotICAgIDIxLCAxODksIDI1MywgMjA3LCAyMSwgMTk4LCAyNTMsIDIwNywgMjEsIDE5NSwgMjUzLCAyMDcsIDIxLCAyMDAsIDEyLCAKLSAgICAyMjYsIDU3LCA1MiwgMTIsIDI0OCwgMzQsIDIyMSwgNTcsIDEyLCAyMTcsIDk5LCAyMjEsIDU3LCAxMiwgMjQ0LCA1MCwgCi0gICAgMjI1LCAxNDMsIDIxOSwgOTUsIDEyLCAxLCAyNDcsIDczLCAyNTEsIDIzMCwgMTIsIDEsIDI0NywgNzMsIDIyNCwgMjI1LCAKLSAgICAxMiwgMSwgMjE4LCAyMjMsIDI1NCwgNzgsIDEyLCAxLCAxMDYsIDIxNCwgMzAsIDEyLCAxLCAxMDYsIDIsIDIxNCwgMTYsIAotICAgIDE5MiwgNDksIDEyLCAxLCAxMDYsIDIsIDIxNCwgMTYsIDE5MiwgNTUsIDEyLCAxLCAxMjQsIDI0MiwgMiwgMTIsIDEsIDEyNCwgCi0gICAgMTkyLCAyNTQsIDc4LCAxMiwgMSwgMTI0LCAxOTIsIDIxNCwgMTQsIDEyLCAxLCAxMTEsIDIsIDE5MiwgNDksIDEyLCAxLCAKLSAgICAxMjQsIDE5MiwgMjEzLCAzNCwgMTIsIDEsIDIxNiwgMTA5LCAxMiwgMSwgMjE2LCAxMDcsIDEyLCAxLCAyNTEsIDI0MCwgMTIsIAotICAgIDEsIDIxNywgMjE2LCAyLCAyMjMsIDEzMCwgMTIsIDEsIDIxNywgMjE2LCAyLCAxMzMsIDE3NiwgNzgsIDI0NiwgNTcsIDEyLCAKLSAgICAxLCAyMjYsIDgwLCAxMiwgMSwgMjE3LCAyMTMsIDEyLCAxLCAyNTEsIDIyOCwgMTIsIDEsIDEyMSwgMiwgMTkyLCA0OSwgMTIsIAotICAgIDEsIDEyMSwgMiwgMTE3LCAxNzYsIDcxLCA0OSwgMTIsIDEsIDIyOCwgMTQsIDEyLCAxLCAyNDUsIDI1NCwgMTIsIDEsIDEyMSwgCi0gICAgMiwgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgMjE3LCAyMzMsIDEyLCAxLCAyMTcsIDIzMSwgMTIsIDEsIDI0OCwgODEsIDEyLCAxLCAKLSAgICAyNDgsIDE0MSwgMiwgMjIzLCAxMzAsIDEyLCAxLCAyNDgsIDE0MSwgMiwgNjIsIDU1LCAxMiwgMSwgMjQ4LCAxNDEsIDIsIAotICAgIDYyLCAyNTEsIDIyMCwgMjQsIDMsIDIxOCwgMjksIDEyLCAxLCAyNDgsIDE0NiwgMTIsIDEsIDI0OCwgODMsIDEyLCAxLCAKLSAgICAyNDYsIDI1LCAxMiwgMSwgMjQ4LCAxNDEsIDIsIDEzMywgMTc2LCA3OCwgMjQ2LCA1NywgMTIsIDEsIDI0OCwgMTQxLCAyLCAKLSAgICAyNDMsIDIzNywgMTc2LCA0OSwgMTIsIDEsIDIyMywgNzcsIDEyLCAxLCAyMjMsIDI0NiwgMiwgMywgMjE1LCA3OSwgMTIsIDEsIAotICAgIDIyMywgMjQ2LCAyLCAyMjMsIDEzMCwgMTIsIDEsIDIyMywgMjQ2LCAyLCA2MiwgNTUsIDEyLCAxLCAyMjMsIDI0NiwgMiwgMywgCi0gICAgMjE1LCA4MCwgNTUsIDEyLCAxLCAyMjMsIDI0NiwgMiwgNjIsIDI1MSwgMjIwLCAyNCwgNjIsIDQ5LCAxMiwgMSwgMjIzLCAKLSAgICAyNDYsIDIsIDExNywgMTc2LCA0OSwgMTIsIDEsIDIzNSwgMTIxLCAxMiwgMSwgMjIzLCAyNDYsIDIsIDI0MywgMjM3LCAxNzYsIAotICAgIDQ5LCAxMiwgMSwgMjIyLCA4NiwgMiwgNjIsIDI1MSwgMjIwLCAyNCwgNjIsIDQ5LCAxMiwgMSwgMjIyLCA4NiwgMiwgMTMzLCAKLSAgICAxNzYsIDU1LCAxMiwgMSwgMjIyLCA4NiwgMiwgMTMzLCAxNzYsIDI1MSwgMjIwLCAyNCwgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgCi0gICAgMjIyLCAxOTYsIDIsIDExNywgMTc2LCA1NSwgMTIsIDEsIDIyMiwgMTk2LCAyLCAxMzMsIDE3NiwgNDksIDEyLCAxLCAyMTgsIAotICAgIDMwLCAyLCAxMzMsIDE3NiwgNDksIDEyLCAxLCAyNTQsIDEwNCwgMiwgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgMjQ3LCA3MywgCi0gICAgMjQ0LCAxMTEsIDEyLCAxLCAyNDQsIDExMiwgMiwgNjIsIDIzMCwgMTc5LCA1NSwgMTIsIDEsIDI0NCwgMTEyLCAyLCA2MiwgCi0gICAgNTUsIDEyLCAxLCAyMTQsIDIyNSwgMTIsIDEsIDI0NCwgMTEyLCAyLCAxMzMsIDE3NiwgNTUsIDEyLCAxLCAyMjYsIDc4LCAKLSAgICAxMiwgMSwgMjI0LCAyMjYsIDIsIDYyLCA0OSwgMTIsIDEsIDIyNCwgMjI2LCAyLCAxMzMsIDE3NiwgNDksIDEyLCAxLCAyMzQsIAotICAgIDE4MCwgMTIsIDEsIDIxOCwgMTk1LCAyMzQsIDI1NCwgMTIsIDEsIDIzNCwgMjU1LCAyLCAyMjMsIDEzMCwgMTIsIDEsIDIzNCwgCi0gICAgMjU1LCAyLCA2MiwgNDksIDEyLCAxLCAyMjksIDE2MSwgMTIsIDEsIDIzNCwgMjU1LCAyLCAxMzMsIDE3NiwgNTUsIDEyLCAxLCAKLSAgICAyNDMsIDk3LCAxMiwgMSwgMjQzLCA5OCwgMiwgMjIzLCAxMzAsIDEyLCAxLCAyMjksIDg4LCAxMiwgMSwgMjQzLCA5OCwgMiwgCi0gICAgMTE3LCAxNzYsIDU1LCAxMiwgMSwgMjQyLCA4MiwgMTIsIDEsIDI0MywgOTgsIDIsIDEzMywgMTc2LCA0OSwgMTIsIDEsIAotICAgIDIzMywgMTI3LCAyLCAzLCAyMTUsIDc5LCAxMiwgMSwgMjMzLCAxMjcsIDIsIDYyLCA0OSwgMTIsIDEsIDIzMywgMTI3LCAyLCAKLSAgICAxMzMsIDE3NiwgNDksIDEyLCAxLCAyMzMsIDEyNywgMiwgMTMzLCAxNzYsIDU1LCAxMiwgMSwgMjI4LCAxNzQsIDIsIDYyLCAKLSAgICA1NSwgMTIsIDEsIDIyOCwgMTc0LCAyNDIsIDE5NCwgMTIsIDEsIDIyMywgMTE1LCAxMiwgMSwgMjI4LCAxNzQsIDIsIDIyMywgCi0gICAgMTMwLCAxMiwgMSwgMjI4LCAxNzQsIDIsIDEzMywgMTc2LCA0OSwgMTIsIDEsIDI0MSwgMjAzLCAyNDcsIDk1LCAxMiwgMSwgCi0gICAgMjE3LCAyMzQsIDIsIDYyLCA0OSwgMTIsIDEsIDI0MSwgMjAzLCAyLCA3MywgNDksIDEyLCAxLCAyNDEsIDIwMywgMjQyLCAKLSAgICAxNDcsIDEyLCAxLCAyNDEsIDIwMywgMjQyLCAxNDgsIDIsIDE5MiwgNDksIDEyLCAxLCAyMTcsIDIxNiwgMjMxLCAyMjgsIAotICAgIDI0MiwgMTQ3LCAxMiwgMSwgMjE0LCAxNSwgMiwgMjIzLCAxMzAsIDEyLCAxLCAyMzQsIDgyLCAyMjcsIDk5LCAxMiwgMSwgCi0gICAgMjI3LCA5OSwgMTIsIDEsIDY5LCAxMiwgMSwgMjEyLCAyMDMsIDEyLCAxLCAyMzQsIDgyLCAyMTIsIDIwMywgMTIsIDEsIAotICAgIDIxNCwgMTUsIDIsIDExNywgMTc2LCA0OSwgMTIsIDEsIDIxNCwgMjMyLCAxMiwgMSwgMjQ0LCAxMzYsIDIxMywgMzQsIDEyLCAKLSAgICAxLCA3MywgMiwgMjE4LCAyNywgMTIsIDEsIDczLCAyLCAzLCAyMTUsIDc5LCAxMiwgMSwgMjE0LCAxNSwgMiwgNjIsIDQ5LCAKLSAgICAxMiwgMSwgNzQsIDEyLCAxLCA3MywgMiwgMTMzLCAxNzYsIDU1LCAxMiwgMSwgNzMsIDI1MiwgNTIsIDEyLCAxLCA3MywgCi0gICAgMjUyLCA1MywgMiwgMTkyLCA0OSwgMTIsIDI0MywgMjAwLCAyMTksIDY5LCAxMiwgMSwgMjU0LCAxNDgsIDEyLCAzLCAxMjQsIAotICAgIDI2LCAyMjIsIDE5NiwgMiwgMjMzLCAxMjcsIDIsIDEwNiwgMjMxLCAyNTUsIDEyLCAzLCAxMjQsIDI2LCAyMjQsIDIyNiwgMiwgCi0gICAgMjMzLCAxMjcsIDIsIDEwNiwgMjMxLCAyNTUsIDEyLCAzLCAxMjQsIDYzLCA3MCwgMTcsIDEyLCAzLCAxMjQsIDIzMywgMTI3LCAKLSAgICAyNTQsIDc4LCAxMiwgMywgMTI0LCAyMzUsIDEyNCwgMTIsIDMsIDEyNCwgMTMzLCAyNDcsIDcyLCAxMiwgMywgMTI0LCAyMjIsIAotICAgIDg1LCAxMiwgMjQ1LCAxMDEsIDY1LCAyNTMsIDgyLCAxMiwgMjE5LCA5MSwgNjUsIDIyMywgNDksIDI0NSwgMTMyLCAyNDEsIAotICAgIDE0MSwgMTIsIDMsIDEyNCwgMjIzLCA4NSwgMjEyLCA3OSwgMTIsIDMsIDEyNCwgMjE1LCAxMzAsIDIyNCwgOCwgMjEyLCA3OSwgCi0gICAgMTIsIDMsIDEyNCwgMjQ3LCA3MywgMjQxLCAyMjAsIDY1LCAyMzQsIDEzNSwgMTIsIDMsIDEyNCwgNjMsIDQ4LCAxNywgMTIsIAotICAgIDMsIDExNSwgMjIyLCA4NSwgMTIsIDMsIDEyNCwgMjMyLCAzMiwgMTIsIDMsIDIxNCwgMTQsIDEyLCAzLCAyMTMsIDM0LCAxMiwgCi0gICAgMywgMTI0LCAyMTMsIDM0LCAxMiwgMywgMTI0LCAyMjgsIDE3MywgMTIsIDIyNSwgMTczLCA2NSwgMjIyLCAxODQsIDEyLCAKLSAgICAyNDUsIDExMCwgMjUwLCAxMDksIDExNSwgMjE5LCA2OSwgMTIsIDI0NSwgMTEwLCAyNTAsIDEwOSwgMTI0LCAyMTksIDY5LCAKLSAgICAxMiwgMjIzLCA4NSwgMTI0LCAyMTksIDcwLCAyLCAyNDQsIDczLCAyNTAsIDEwOCwgMTIsIDMsIDExNSwgMjMxLCAxNDMsIAotICAgIDEyLCAxLCAyNDgsIDE0MSwgMiwgMjM1LCAxOTEsIDIxNSwgNzksIDEyLCAxLCAyMjMsIDI0NiwgMiwgMjM1LCAxOTEsIDIxNSwgCi0gICAgNzksIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDIxMiwgNzksIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDExNiwgMjQ0LCAKLSAgICAyNDYsIDI1MywgMjA3LCAyMSwgMTA5LCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxNjYsIDI0NCwgMjQ2LCAyNTMsIDIwNywgCi0gICAgMjEsIDE2MywgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMTgwLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxODksIDI0NCwgCi0gICAgMjQ2LCAyNTMsIDIwNywgMjEsIDE5OCwgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMTk1LCAyNDQsIDI0NiwgMjUzLCAyMDcsIAotICAgIDIxLCAyMDAsIDEyLCAxLCAyMjAsIDI0MCwgMiwgNjIsIDU1LCAxMiwgMSwgMjQ4LCAxNjAsIDIsIDYyLCA1NSwgMTIsIDEsIAotICAgIDI0MiwgMjIxLCAyLCA2MiwgNTUsIDEyLCA1LCAyMjAsIDg0LCAyNTQsIDM1LCAxMiwgNSwgMjIwLCA4NCwgMjI1LCAxMTUsIAotICAgIDIzMSwgMTIyLCAxMiwgMSwgMjQxLCAyMDMsIDIsIDIzNSwgMTkxLCAyMTUsIDc5LCAxNzUsIDI0NSwgMTAxLCA2NSwgMjI2LCAKLSAgICAxNDIsIDE3NSwgMjE4LCAyMTksIDI0MywgMjAwLCAyMTksIDY5LCAxNzUsIDIxOSwgMTIsIDI0MywgMjAwLCAyMTksIDY5LCAKLSAgICAxNzUsIDIxOCwgMjE5LCAyNDksIDE2NCwgMTc1LCAyMTksIDEyLCAyNDksIDE2NCwgMTc1LCAxOTksIDI0OSwgMTY0LCAxNzUsIAotICAgIDI0OSwgMTY1LCAyMjAsIDM0LCAyMzMsIDcwLCAxNzUsIDI0OSwgMTY1LCAyMjAsIDM0LCAyMjMsIDE0OCwgMTc1LCAyMTgsIAotICAgIDIxOSwgMjQ5LCAxNjUsIDIyMCwgMzQsIDIzMywgNzAsIDE3NSwgMjE5LCAxMiwgMjQ5LCAxNjUsIDIyMCwgMzQsIDIyMywgCi0gICAgMTQ4LCAxNzUsIDI0OSwgMTE5LCAxNzUsIDI0MSwgMjQwLCAyMjcsIDExNCwgMTc1LCAyNDEsIDI0MCwgMjMxLCAxMDMsIAotICAgIDE3NSwgMjQxLCAyNDAsIDI1MywgMTM0LCAxNzUsIDI1NCwgMTgxLCA3NywgMTc1LCAxLCAyNTQsIDgyLCAxNzUsIDEsIDIxOCwgCi0gICAgMjIzLCAyNTQsIDgyLCAxNzUsIDEsIDI1MSwgMjAyLCAxNzUsIDEsIDI0MywgODksIDE3NSwgMSwgMjQzLCA5MCwgMjQzLCAKLSAgICA2NywgMTc1LCAxLCAyNDgsIDEzNywgMTc1LCAxLCAyNDcsIDczLCAyNDgsIDEzOCwgMjIzLCAxMjYsIDE3NSwgMSwgMjQxLCAKLSAgICAyMjIsIDE3NSwgMSwgMjE0LCAxNCwgMTc1LCAxLCAyMTIsIDEwMSwgMTc1LCAxLCAyNDEsIDE4MCwgMTc1LCAxLCAyMTcsIAotICAgIDE3OSwgMTc1LCAxLCAyMTcsIDE4MCwgMjQzLCA2NywgMTc1LCAxLCAyMTIsIDE5MCwgMTc1LCAxLCAyMTIsIDE5MSwgMjQxLCAKLSAgICAyMjIsIDE3NSwgMSwgMjM0LCAyMzAsIDE3NSwgMSwgMjMzLCAxMjUsIDE3NSwgMSwgMjMxLCAzLCAxNzUsIDEsIDIyOCwgNTAsIAotICAgIDE3NSwgMSwgMjIxLCA2MywgMTc1LCAxLCA0MCwgMjIxLCA2MywgMTc1LCAxLCA3NCwgMTc1LCAxLCAyMjYsIDk2LCAxNzUsIAotICAgIDEsIDIyMywgMjAyLCAyMjYsIDk2LCAxNzUsIDEsIDIyMiwgMTkzLCAxNzUsIDEsIDIyNCwgMjE5LCAxNzUsIDEsIDIyMywgCi0gICAgMTI2LCAxNzUsIDEsIDIyMCwgMjAwLCAxNzUsIDEsIDIxNywgMjQzLCAxNzUsIDEsIDIyNiwgNDUsIDI1MSwgMTkwLCAxNzUsIAotICAgIDEsIDIyNiwgNDUsIDI0MiwgMjE4LCAxNzUsIDEsIDIyNiwgNDUsIDI0NywgMjI4LCAxNzUsIDIyNSwgMzYsIDQ5LCAxNzUsIAotICAgIDIyNSwgMzYsIDU1LCAxNzUsIDIyNSwgMzYsIDI0NiwgNzEsIDE3NSwgMjEyLCAxMCwgNDksIDE3NSwgMjEyLCAxMCwgNTUsIAotICAgIDE3NSwgMjEyLCAxMCwgMjQ2LCA3MSwgMTc1LCAyMjQsIDI0LCA0OSwgMTc1LCAyMjQsIDI0LCA1NSwgMTc1LCAyNDYsIDcyLCAKLSAgICAyMTIsIDE3LCAyNDEsIDMxLCAxNzUsIDI0NiwgNzIsIDIxMiwgMTcsIDI1NCwgMTUsIDE3NSwgMjQxLCAyMjUsIDQ5LCAxNzUsIAotICAgIDI0MSwgMjI1LCA1NSwgMTc1LCAyNDEsIDIyNCwgMjQ2LCA3MSwgMTc1LCAyNDUsIDQzLCA0OSwgMTc1LCAyNDUsIDQzLCA1NSwgCi0gICAgMTc1LCAyMjMsIDE5LCAxNzUsIDI0NCwgMTA1LCAyNDcsIDc0LCAxNzUsIDIyNCwgMTM3LCAxNzUsIDIyMywgNDUsIDE3NSwgCi0gICAgMTE3LCA3MSwgMTc2LCA0OSwgMTc1LCAxMTcsIDcxLCAxNzYsIDU1LCAxNzUsIDEzMywgMTc2LCA0OSwgMTc1LCAxMzMsIAotICAgIDE3NiwgNTUsIDE3NSwgMjI3LCAxMTIsIDIzMiwgMjQzLCA0OSwgMTc1LCAyMjcsIDExMiwgMjMyLCAyNDMsIDU1LCAxNzUsIAotICAgIDIzMCwgMTI2LCAxNzUsIDI1MiwgNTEsIDE3NSwgMSwgMjE5LCAyMzMsIDIxMiwgNzMsIDE3NSwgMSwgMjE5LCAyMzMsIDIzNCwgCi0gICAgMTI4LCAxNzUsIDEsIDIxOSwgMjMzLCAyNDQsIDEyMywgMTIsIDEsIDI1MSwgMjMxLCAyLCAxMzMsIDE3NiwgMjQwLCAyMzcsIAotICAgIDU1LCAxMiwgMSwgMjUxLCAyMzEsIDIsIDYyLCAyNTEsIDIyMCwgMjQsIDEzMywgMTc2LCA0OSwgMTIsIDEsIDI1MSwgMjMxLCAKLSAgICAyLCAxMzMsIDE3NiwgMjI1LCAxNDEsIDIxNSwgMTI0LCA1NSwgMTIsIDEsIDI1MSwgMjMxLCAyLCAxMzMsIDE3NiwgMjI1LCAKLSAgICAxNDEsIDIxNSwgMTI0LCAyNTEsIDIyMCwgMjQsIDExNywgMTc2LCA0OSwgMTIsIDEsIDI1MSwgMjMxLCAyLCAxMTcsIDE3NiwgCi0gICAgMjUxLCAyMjAsIDI0LCA2MiwgNDksIDEyLCAxLCAyNTEsIDIzMSwgMiwgMjM1LCAxOTEsIDMsIDIxNSwgODAsIDU1LCAxMiwgCi0gICAgMSwgMjUxLCAyMzEsIDIsIDMsIDIxNSwgNzksIDEyLCAxLCAxMjEsIDIsIDExNywgMTc2LCA0OSwgMTIsIDEsIDEyMSwgMiwgCi0gICAgMTMzLCAxNzYsIDIyNSwgMTQxLCAyMTUsIDEyNCwgNTUsIDEyLCAxLCAyNDgsIDE0MSwgMiwgMTE3LCAxNzYsIDIxNCwgMTY2LCAKLSAgICAyNTEsIDIyMCwgMjQsIDMsIDIxOCwgMjksIDEyLCAxLCAyNDgsIDE0MSwgMiwgMjM1LCAxOTEsIDMsIDIxNSwgODAsIDU1LCAKLSAgICAxMiwgMSwgMjIzLCAyNDYsIDIsIDkwLCAxMiwgMSwgMjIyLCA4NiwgMiwgMjQzLCAyMzcsIDE3NiwgNDksIDEyLCAxLCAyNTQsIAotICAgIDEwNCwgMiwgMTE3LCAxNzYsIDQ5LCAxMiwgMSwgMjU0LCAxMDQsIDIsIDEzMywgMTc2LCAyMjUsIDE0MSwgMjQ2LCA1OCwgCi0gICAgNDksIDEyLCAxLCAyNTQsIDEwNCwgMiwgMTE3LCAxNzYsIDIxNCwgMTY2LCA0OSwgMTIsIDEsIDI0NCwgMTEyLCAyLCAxMTcsIAotICAgIDE3NiwgNTUsIDEyLCAxLCAyNDQsIDExMiwgMiwgMTMzLCAxNzYsIDIyNSwgMTQxLCAyMTUsIDEyNCwgNTUsIDEyLCAxLCAKLSAgICAyMzQsIDE4MSwgMiwgNjIsIDQ5LCAxMiwgMSwgMjM0LCAxODEsIDIsIDEzMywgMTc2LCA0OSwgMTIsIDEsIDIzNCwgMTgxLCAKLSAgICAyLCAxMzMsIDE3NiwgMjI1LCAxNDEsIDIxNSwgMTI0LCA1NSwgMTIsIDEsIDYzLCAyLCA2MiwgNDksIDEyLCAxLCA2MywgMiwgCi0gICAgNjIsIDU1LCAxMiwgMSwgMjI4LCAxNzQsIDIsIDExNywgMTc2LCA1NSwgMTIsIDEsIDIyOCwgMTc0LCAyLCAzLCAyMTgsIDI5LCAKLSAgICAxMiwgMSwgMjI4LCAxNzQsIDIsIDMsIDIxNSwgNzksIDEyLCAxLCAyMzMsIDEyNywgMiwgMTM0LCAxMiwgMSwgMjIzLCAyNDYsIAotICAgIDIsIDExNywgMTc2LCAyMTQsIDE2NiwgNDksIDEyLCAxLCAyMjMsIDI0NiwgMiwgMTkyLCA0OSwgMTIsIDEsIDIyMiwgODYsIAotICAgIDIsIDExNywgMTc2LCAyMTQsIDE2NiwgNDksIDEyLCAxLCAxMjEsIDIsIDMsIDEyLCAxLCAyMTgsIDMwLCA1NSwgMTIsIDEsIAotICAgIDEyMSwgMiwgMywgMTIsIDEsIDIxOCwgMzAsIDI0LCAxMTcsIDI0NywgNzIsIDEyLCAxLCAyMjIsIDg2LCAyLCAzLCAxMiwgMSwgCi0gICAgMjE4LCAzMCwgMjQsIDExNywgMjQ3LCA3MiwgMTIsIDEsIDIyMywgMjQ2LCAyLCAzLCAxMiwgMSwgMjE4LCAzMCwgMjQsIAotICAgIDExNywgMjQ3LCA3MiwgMTIsIDEsIDEyMSwgMiwgMywgMTIsIDEsIDIxOCwgMzAsIDQ5LCAxMiwgMSwgMTA2LCAyLCAyNDQsIAotICAgIDI0NiwgMjUzLCAyMDcsIDIxLCAxMTcsIDQ5LCAxMiwgMSwgMTA2LCAyLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxMzMsIAotICAgIDQ5LCAxMiwgMSwgMjQ0LCAxMzYsIDczLCAyLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxMTcsIDQ5LCAxMiwgMSwgMjQ0LCAKLSAgICAxMzYsIDczLCAyLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxMzMsIDQ5LCAxMiwgMSwgMjQ0LCAxMzYsIDczLCAyLCAyNDQsIAotICAgIDI0NiwgMjUzLCAyMDcsIDIxLCAyNDMsIDIzNywgNTUsIDEyLCAxLCAyMTQsIDE1LCAyLCAyNDQsIDI0NiwgMjUzLCAyMDcsIAotICAgIDIxLCAxMTcsIDQ5LCAxMiwgMSwgMjE0LCAxNSwgMiwgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMTMzLCA0OSwgMTIsIDEsIAotICAgIDczLCAyNTIsIDUzLCAyLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxMTcsIDQ5LCAxMiwgMSwgNzMsIDI1MiwgNTMsIDIsIAotICAgIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDEzMywgNDksIDEyLCAxLCAxMjEsIDIsIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIAotICAgIDI0MywgMjM3LCA1NSwgMTIsIDEsIDIyMiwgODYsIDIsIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDI0MywgMjM3LCA0OSwgCi0gICAgMTIsIDEsIDIyMiwgODYsIDIsIDIzNSwgMTkxLCAyMTUsIDc5LCAxMiwgMSwgMjM0LCAyNTUsIDIsIDExNywgMTc2LCA0OSwgCi0gICAgMjE3LCAxNTgsIDEsIDI0MiwgMjcsIDIxNywgMTU4LCAxLCAyMjAsIDI0OCwgMjE3LCAxNTgsIDEsIDIyOCwgMTcyLCAyMTcsIAotICAgIDE1OCwgMSwgMjI0LCA3NCwgMjE3LCAxNTgsIDEsIDI1MiwgMTA2LCAyMTcsIDE1OCwgMSwgMjMzLCAyMiwgMjE3LCAxNTgsIAotICAgIDEsIDIzNSwgMTIsIDIxNywgMTU4LCAxLCAyNTQsIDY4LCAyMTcsIDE1OCwgMSwgMjE0LCAyNTUsIDIxNywgMTU4LCAxLCAKLSAgICAyMzEsIDE0MiwgMjE3LCAxNTgsIDEsIDI0NCwgMTYyLCAyMTcsIDE1OCwgMSwgMjQ3LCAyMzEsIDIxNywgMTU4LCAxLCAyMTcsIAotICAgIDE2MCwgMjE3LCAxNTgsIDEsIDIzMywgMTUzLCAyMTcsIDE1OCwgMSwgMjQzLCAxMDYsIDIxNywgMTU4LCAxLCAyNDIsIDE1MywgCi0gICAgMjE3LCAxNTgsIDEsIDIyMiwgODQsIDIxNywgMTU4LCAxLCAyNDgsIDk0LCAyMTcsIDE1OCwgMSwgMjEyLCA5MywgMjE3LCAKLSAgICAxNTgsIDEsIDIxNywgMjQ0LCAyMTcsIDE1OCwgMSwgMjEzLCA5MSwgMjE3LCAxNTgsIDEsIDIyNiwgMTA3LCAyMTcsIDE1OCwgCi0gICAgMSwgMjM1LCAxMjksIDIxNywgMTU4LCAxLCAyNTAsIDcwLCAyMTcsIDE1OCwgMSwgMjE2LCAxMTQsIDIxNywgMTU4LCAxLCAKLSAgICAyNDEsIDE3MywgMjE3LCAxNTgsIDEsIDIzNCwgMTM3LCAyMTcsIDE1OCwgMSwgMjE3LCAxNTksIDIxNywgMTU4LCAxLCAyMTIsIAotICAgIDEwOCwgMjE3LCAxNTgsIDEsIDIyMCwgMjM4LCAyMTcsIDE1OCwgMSwgMjIyLCAxOTksIDIxNywgMTU4LCAxLCAyNDgsIDE2MiwgCi0gICAgMjE3LCAxNTgsIDEsIDEwOCwgMjE3LCAxNTgsIDEsIDIxMiwgMTYsIDIxNywgMTU4LCAxLCAyNTQsIDEwMSwgMjE3LCAxNTgsIAotICAgIDEsIDI0MiwgMjE5LCAyMTcsIDE1OCwgMSwgMjI0LCAyMjksIDIxNywgMTU4LCAxLCAyMTQsIDQ3LCAyMTcsIDE1OCwgMjU0LCAKLSAgICAxODIsIDIxNywgMTU4LCAyNTQsIDE5NywgMjE3LCAxNTgsIDI0MCwgMTA3LCAyMTcsIDE1OCwgMjQ1LCAxNjQsIDIxNywgCi0gICAgMTU4LCAyMTUsIDE5MSwgMjE3LCAxNTgsIDIyNywgNDgsIDIxNywgMTU4LCAyNDUsIDE3MiwgMjE3LCAxNTgsIDI0NCwgMjQwLCAKLSAgICAyMTcsIDE1OCwgMjI3LCAxMTEsIDIxNywgMTU4LCAyMjcsIDExOSwgMjE3LCAxNTgsIDIxOCwgMjQ2LCAyMTcsIDE1OCwgMSwgCi0gICAgMjMwLCA0MywgMjI4LCAyMjQsIDIxLCAyMTIsIDc5LCAyMjgsIDIyNCwgMjEsIDExNiwgMjI4LCAyMjQsIDIxLCAxMDksIAotICAgIDIyOCwgMjI0LCAyMSwgMTY2LCAyMjgsIDIyNCwgMjEsIDE2MywgMjI4LCAyMjQsIDIxLCAxODAsIDIyOCwgMjI0LCAyMSwgCi0gICAgMTg5LCAyMjgsIDIyNCwgMjEsIDE5OCwgMjI4LCAyMjQsIDIxLCAxOTUsIDIyOCwgMjI0LCAyMSwgMjAwLCAyMjgsIDIyNCwgCi0gICAgMSwgNjEsIDIyOCwgMjI0LCAxLCAyNDUsIDE2NSwgMjI4LCAyMjQsIDEsIDcyLCAyMjgsIDIyNCwgMSwgNzQsIDIyOCwgMjI0LCAKLSAgICAxLCA2OSwgMjI4LCAyMjQsIDEsIDIyNywgNDksIDIyOCwgMjI0LCAxLCA3NSwgMjI4LCAyMjQsIDEsIDI0OCwgMTUyLCAyMjgsIAotICAgIDIyNCwgMSwgMjA0LCAyMjgsIDIyNCwgMSwgMjUyLCAxMDcsIDIyOCwgMjI0LCAxLCAxOTMsIDIyOCwgMjI0LCAxLCAyMTgsIAotICAgIDUyLCAyMjgsIDIyNCwgMSwgMjM1LCAxMzksIDIyOCwgMjI0LCAxLCAyNTAsIDkyLCAyMjgsIDIyNCwgMSwgMjQ4LCAxNjQsIAotICAgIDIyOCwgMjI0LCAxLCAyMDMsIDIyOCwgMjI0LCAxLCAyMjMsIDgxLCAyMjgsIDIyNCwgMSwgMjIyLCAyMDIsIDIyOCwgMjI0LCAKLSAgICAxLCAyNDMsIDU1LCAyMjgsIDIyNCwgMSwgMjQ0LCAxNjQsIDIyOCwgMjI0LCAxLCAxODEsIDIyOCwgMjI0LCAxLCAyMzMsIAotICAgIDE1NywgMjI4LCAyMjQsIDEsIDIzMCwgNDYsIDIxMywgMjEwLCAyMjgsIDIyNCwgMSwgMTg4LCAyMjgsIDIyNCwgMSwgMjI4LCAKLSAgICAyMywgMjI4LCAyMjQsIDEsIDIwNSwgMjI4LCAyMjQsIDEsIDE1OSwgMjI4LCAyMjQsIDEsIDIxNCwgNDksIDIyOCwgMjI0LCAKLSAgICAxLCAxODYsIDIyOCwgMjI0LCAxLCAyMjgsIDI0LCAyMTMsIDIxMCwgMjI4LCAyMjQsIDEsIDIzNSwgNjQsIDIzNSwgMTM5LCAKLSAgICAyMjgsIDIyNCwgMSwgMjM1LCA2NCwgMjUwLCA5MiwgMjI4LCAyMjQsIDEsIDIzNSwgNjQsIDIwMywgMjI4LCAyMjQsIDM3LCAKLSAgICAyMjAsIDE3NSwgMTI0LCAyMTYsIDI0MSwgMjI4LCAyMjQsIDM3LCAyMjAsIDE3NSwgMTE1LCAyMTYsIDI0MSwgMjI4LCAyMjQsIAotICAgIDM3LCAyMjAsIDE3NSwgMjIzLCAxMjUsIDIxNiwgMjQxLCAyMjgsIDIyNCwgMzcsIDE4NCwgMjQ3LCAyNDUsIDIxNiwgMjQxLCAKLSAgICAyMjgsIDIyNCwgMzcsIDE4NCwgMTI0LCAyMTYsIDI0MSwgMjI4LCAyMjQsIDM3LCAxODQsIDExNSwgMjE2LCAyNDEsIDIyOCwgCi0gICAgMjI0LCAzNywgMTg0LCAyMjMsIDEyNSwgMjE2LCAyNDEsIDIyOCwgMjI0LCAzNywgMjMwLCAxMywgNzcsIDIyOCwgMjI0LCAKLSAgICAzNywgNTEsIDYyLCA0OSwgMjI4LCAyMjQsIDEyNCwgMTYwLCAyNTMsIDIyNiwgMjI4LCAyMjQsIDExNSwgMTYwLCAyNTMsIAotICAgIDIyNiwgMjI4LCAyMjQsIDE2LCAyMjcsIDUwLCAyNDgsIDEsIDIyOCwgMjI0LCAxNiwgMjQzLCA1NCwgMjI4LCAyMjQsIDI0OSwgCi0gICAgMTU3LCAyMjgsIDIyNCwgMjQ0LCAyNTQsIDc3LCAyMjgsIDIyNCwgMjMzLCAxMzIsIDIyMiwgMTY3LCAxLCAyNTQsIDg0LCAKLSAgICAyMjIsIDE2NywgMSwgMjUxLCAxNTEsIDIyMiwgMTY3LCAxLCAyNDMsIDg4LCAyMjIsIDE2NywgMSwgMjQ4LCAxMzksIDIyMiwgCi0gICAgMTY3LCAxLCAyMzUsIDE1MCwgMjIyLCAxNjcsIDEsIDI1MiwgMTA2LCAyMjIsIDE2NywgMSwgMjEyLCA4MiwgMjIyLCAxNjcsIAotICAgIDEsIDIzNSwgMTU4LCAyMjIsIDE2NywgMSwgMjE3LCAyMCwgMjIyLCAxNjcsIDEsIDIxMiwgMTczLCAyMjIsIDE2NywgMSwgCi0gICAgMjM1LCAxMywgMjIyLCAxNjcsIDEsIDIzMywgMTUwLCAyMjIsIDE2NywgMSwgMjMxLCAzLCAyMjIsIDE2NywgMSwgMjI4LCAKLSAgICA1MCwgMjIyLCAxNjcsIDEsIDIyMCwgODIsIDIyMiwgMTY3LCAxLCAyMzUsIDI1MSwgMjIyLCAxNjcsIDEsIDI0NCwgOTAsIAotICAgIDIyMiwgMTY3LCAxLCAyMTYsIDEzOSwgMjIyLCAxNjcsIDEsIDIyNCwgMTU1LCAyMjIsIDE2NywgMSwgMjIzLCAxMjYsIDIyMiwgCi0gICAgMTY3LCAxLCAyMjEsIDgsIDIyMiwgMTY3LCAxLCAyMTgsIDQ4LCAyMjIsIDE2NywgMTUyLCAyMzUsIDI1MSwgMjIyLCAxNjcsIAotICAgIDE1MiwgMjM1LCAyNTAsIDIyMiwgMTY3LCAxNTIsIDIyNywgMTA3LCAyMjIsIDE2NywgMTUyLCAyNDgsIDE1MCwgMjIyLCAKLSAgICAxNjcsIDU5LCAxLCAyNDUsIDY4LCAyMTIsIDE3MywgMjIyLCAxNjcsIDE1MiwgMjQ1LCA2OCwgMjEyLCAxNzMsIDIyMiwgCi0gICAgMTY3LCAzMCwgNSwgMTg0LCA3NCwgMjIyLCAxNjcsIDMwLCA1LCA3NCwgMjIyLCAxNjcsIDMwLCA1LCAyMjYsIDI0MiwgMjU0LCAKLSAgICAyMzIsIDIyMiwgMTY3LCAzMCwgNSwgMTg0LCAyNTQsIDIzMiwgMjIyLCAxNjcsIDMwLCA1LCAyNTQsIDIzMiwgMjIyLCAxNjcsIAotICAgIDMwLCA1LCAyMjYsIDI0MiwgNjEsIDIyMiwgMTY3LCAzMCwgNSwgMTg0LCA2MSwgMjIyLCAxNjcsIDMwLCA1LCA2MSwgMjIyLCAKLSAgICAxNjcsIDU5LCAxLCAyMjAsIDE3NSwgNjEsIDIyMiwgMTY3LCAzMCwgNSwgMjIwLCAxNzUsIDYxLCAyMjIsIDE2NywgMzAsIDUsIAotICAgIDE4NCwgNjksIDIyMiwgMTY3LCAzMCwgNSwgNjksIDIyMiwgMTY3LCA1OSwgMSwgNzIsIDIyMiwgMTY3LCAzMCwgNSwgMTg0LCAKLSAgICA3MiwgMjIyLCAxNjcsIDMwLCA1LCA3MiwgMjIyLCAxNjcsIDMwLCA1LCA3NSwgMjIyLCAxNjcsIDMwLCA1LCAyMTgsIDI0NiwgCi0gICAgMjIyLCAxNjcsIDE1MiwgMjI5LCAxNzQsIDIyMiwgMTY3LCAyMjUsIDI3LCAyMjksIDE3NCwgMjIyLCAxNjcsIDIyNSwgMjcsIAotICAgIDI1NCwgMTIzLCAyMjIsIDE2NywgMjI1LCAyNywgMjU0LCAyMywgMjIyLCAxNjcsIDIyNSwgMjcsIDI1MiwgMzQsIDIyMiwgCi0gICAgMTY3LCAyMjUsIDI3LCAyNTMsIDExNywgMjIyLCAxNjcsIDIyNSwgMjcsIDIyMCwgMTg4LCAyMjIsIDE2NywgMjU0LCAxODEsIAotICAgIDc3LCAyMjIsIDE2NywgMjI1LCAyNywgMjMxLCAxMzIsIDIyNCwgMTkwLCAyMjIsIDE2NywgMjI1LCAyNywgMjEyLCAyNCwgCi0gICAgMjIyLCAxNjcsIDIyNSwgMjcsIDIyNCwgMTkwLCAyMjIsIDE2NywgMjI1LCAyNywgMjEyLCAxMDcsIDIyMiwgMTY3LCAyMjUsIAotICAgIDI3LCAyMTYsIDU0LCAyMjIsIDE2NywgMjI1LCAyNywgMjUzLCAxODAsIDIyMiwgMTY3LCAyMjUsIDI3LCAyMTksIDIzNywgCi0gICAgMjMxLCAyMDgsIDIyMiwgMTY3LCAyMjUsIDI3LCAyNTQsIDExLCAyMzEsIDI0NSwgMSwgMjQyLCA3LCAyMzEsIDI0NSwgMSwgCi0gICAgMjU0LCAxODUsIDIzMSwgMjQ1LCAxLCAyNTQsIDEyMSwgMjMxLCAyNDUsIDEsIDI1NCwgMTYwLCAyMzEsIDI0NSwgMSwgMjU0LCAKLSAgICAxMTQsIDIzMSwgMjQ1LCAxLCAyMTUsIDk4LCAyMzEsIDI0NSwgMSwgMjUzLCA3NiwgMjMxLCAyNDUsIDEsIDIzNSwgMTU4LCAKLSAgICAyMzEsIDI0NSwgMSwgMjUzLCAxMTQsIDIzMSwgMjQ1LCAxLCAyNTQsIDg5LCAyMzEsIDI0NSwgMSwgMjU0LCA5NCwgMjMxLCAKLSAgICAyNDUsIDEsIDI1NCwgODYsIDIzMSwgMjQ1LCAxLCAyNTQsIDQ1LCAyMzEsIDI0NSwgMSwgMjU0LCAzMiwgMjMxLCAyNDUsIDEsIAotICAgIDI1MywgMTUyLCAyMzEsIDI0NSwgMSwgMjM1LCAyNTEsIDIzMSwgMjQ1LCAxLCAyNTMsIDIzOSwgMjMxLCAyNDUsIDEsIDI1MywgCi0gICAgMTI0LCAyMzEsIDI0NSwgMSwgMjUzLCAyMTUsIDIzMSwgMjQ1LCAxLCAyNTMsIDIxMSwgMjMxLCAyNDUsIDEsIDI1MywgMTQ2LCAKLSAgICAyMzEsIDI0NSwgMSwgMjUzLCAxMjIsIDIzMSwgMjQ1LCAxLCAyNDYsIDEwLCAyMzEsIDI0NSwgMSwgMjM1LCA2LCAyMzEsIAotICAgIDI0NSwgMSwgMjU0LCAxMDMsIDIzMSwgMjQ1LCAyNTQsIDEyNywgNzcsIDIzMSwgMjQ1LCAyMTQsIDExNywgNzcsIDIzMSwgCi0gICAgMjQ1LCAyNDMsIDI5LCA3NywgMjMxLCAyNDUsIDIyNSwgMjYsIDgyLCA1LCAyMzUsIDE5MSwgMjUwLCAxODcsIDgyLCA1LCAKLSAgICAyNTAsIDE4NywgODIsIDUsIDI1MywgMjQyLCA4MiwgNSwgMjE0LCAxMjgsIDgyLCAxLCAyMjAsIDE3NSwgNjEsIDgyLCAxLCAKLSAgICA2MSwgODIsIDEsIDI1NCwgMjMyLCA4MiwgMSwgNzIsIDgyLCAxLCAyMzYsIDI4LCA4MiwgMSwgNjksIDgyLCAxLCAyMTUsIAotICAgIDkyLCA4MiwgMSwgMTYxLCAxNDksIDgyLCAxLCAxNjEsIDE1MCwgODIsIDEsIDI1MCwgMTkwLCA3NCwgODIsIDEsIDIyMCwgCi0gICAgMTc1LCA3NCwgODIsIDEsIDc0LCA4MiwgMSwgMjU0LCAxMDgsIDgyLCAxLCAyNTAsIDE5MCwgNzUsIDgyLCAxLCAyMjAsIAotICAgIDE3NSwgNzUsIDgyLCAxLCA3NSwgODIsIDEsIDI1MywgMTA4LCA4MiwgMSwgMTgxLCA4MiwgMSwgMjM0LCAxMzgsIDgyLCAxLCAKLSAgICAyNDMsIDExMCwgODIsIDEsIDI0MiwgMjI1LCA4MiwgMSwgMjI5LCAxNTksIDgyLCAxLCAyNTAsIDIxOSwgODIsIDEsIDI1MCwgCi0gICAgOTIsIDgyLCAxLCAyMzUsIDEzOSwgODIsIDEsIDIzNSwgMTE1LCA4MiwgMSwgMjI4LCAyMywgODIsIDEsIDIxNiwgMTE1LCAKLSAgICA4MiwgMSwgMjE2LCAxMDUsIDgyLCAxLCAyNDgsIDg2LCA4MiwgMSwgMjQ4LCA3MCwgODIsIDEsIDIyOCwgMTk4LCA4MiwgMSwgCi0gICAgMjE4LCA1MiwgODIsIDEsIDIxNywgMTYxLCA4MiwgMSwgMjQ4LCAxNjQsIDgyLCAxLCAyNDcsIDIzMiwgODIsIDEsIDIwNSwgCi0gICAgODIsIDEsIDIyOCwgMTg5LCA4MiwgMSwgMTkzLCA4MiwgMSwgMjI2LCAyMywgODIsIDEsIDI1MiwgMTA3LCA4MiwgMSwgMjUxLCAKLSAgICAxOTUsIDgyLCAxLCAxODgsIDgyLCAxLCAxODYsIDgyLCAxLCAyMDMsIDgyLCAxLCAyMjMsIDgxLCA4MiwgMSwgMjMzLCAxNTcsIAotICAgIDgyLCAxLCAyMzIsIDIxMywgODIsIDEsIDIzMiwgMjEyLCA4MiwgMSwgMjE1LCAxLCA4MiwgMSwgMjIxLCAyNCwgODIsIDEsIAotICAgIDIxOSwgMTU3LCA4MiwgMSwgMjIyLCAyMDIsIDgyLCAxLCAxNTksIDgyLCAzMCwgNSwgMjI3LCA5OSwgODIsIDMwLCA1LCAKLSAgICAyMjcsIDQ3LCA4MiwgNSwgMjI4LCA2MCwgODIsIDUsIDI1MywgOTEsIDgyLCAzMCwgNSwgMjU0LCAyMzIsIDgyLCAzMCwgNSwgCi0gICAgNzIsIDgyLCAzMCwgNSwgMjM2LCAyOCwgODIsIDMwLCA1LCA2OSwgODIsIDMwLCA1LCAyMTUsIDkyLCA4MiwgMzAsIDUsIAotICAgIDE2MSwgMTQ5LCA4MiwgMzAsIDUsIDE2MSwgMjIzLCA4MiwgODIsIDMwLCA1LCAyNTAsIDE5MCwgNzQsIDgyLCAzMCwgNSwgCi0gICAgMjIwLCAxNzUsIDc0LCA4MiwgMzAsIDUsIDc0LCA4MiwgMzAsIDUsIDI1NCwgMTA4LCA4MiwgMzAsIDUsIDI1MCwgMTkwLCAKLSAgICA3NSwgODIsIDMwLCA1LCAyMjAsIDE3NSwgNzUsIDgyLCAzMCwgNSwgNzUsIDgyLCAzMCwgNSwgMjUzLCAxMDgsIDgyLCA1LCAKLSAgICAyMTQsIDEzMywgODIsIDMwLCA1LCAyMjUsIDY2LCA3NCwgODIsIDMwLCA1LCAyNTMsIDg3LCA4MiwgMjI3LCA3MCwgODIsIAotICAgIDIxOSwgNTEsIDUsIDIxNSwgMTg1LCA4MiwgMjE5LCA1MSwgNSwgMjUzLCAyNDQsIDgyLCAyNDIsIDExNCwgMjU0LCAxNzQsIAotICAgIDgyLCAyNTQsIDE2NCwgMjU0LCAxNzQsIDgyLCAzMCwgNSwgMjUwLCAxOTAsIDE4NCwgNzQsIDgyLCAzMCwgNSwgMjE1LCAKLSAgICAxODMsIDgyLCAzMCwgNSwgMjE1LCA5MSwgODIsIDEsIDIyNCwgMjMyLCA4MiwgMSwgMjM0LCAxMjEsIDgyLCAxLCAyNDIsIAotICAgIDIwMiwgODIsIDEsIDIxMiwgMTA5LCA4MiwgMSwgMjQ4LCA3NSwgODIsIDEsIDIyMywgMTkyLCA4MiwgMSwgMjQ0LCAxNjQsIAotICAgIDgyLCAxLCAyMTIsIDE2MCwgODIsIDEsIDE2MSwgMjIzLCA4MiwgODIsIDEsIDE2MSwgMjMyLCAyMTQsIDgyLCAzMCwgNSwgCi0gICAgMTYxLCAxNTAsIDgyLCAzMCwgNSwgMTYxLCAyMzIsIDIxNCwgODIsIDI0OCwgMTIzLCA4MiwgNTEsIDI0OCwgMTIzLCA4MiwgCi0gICAgMjEsIDIxMiwgNzksIDgyLCAyMSwgMTE2LCA4MiwgMjEsIDEwOSwgODIsIDIxLCAxNjYsIDgyLCAyMSwgMTYzLCA4MiwgMjEsIAotICAgIDE4MCwgODIsIDIxLCAxODksIDgyLCAyMSwgMTk4LCA4MiwgMjEsIDE5NSwgODIsIDIxLCAyMDAsIDgyLCAyNTQsIDE4MSwgCi0gICAgNTIsIDgyLCA1LCAxMjQsIDIxOSwgMjA1LCAyNDcsIDc0LCA4MiwgMSwgMjUwLCAxOTAsIDYxLCA4MiwgMSwgMjI3LCA5OSwgCi0gICAgODIsIDEsIDIyNywgNDcsIDgyLCAxLCAyNTMsIDg3LCA4MiwgMSwgMjE1LCAxODMsIDgyLCAxLCAyMTUsIDkxLCA4MiwgMSwgCi0gICAgMjEyLCA3NSwgODIsIDEsIDEwNywgMTg2LCA4MiwgMSwgMjQzLCA1LCA4MiwgMSwgMjM1LCA5OSwgODIsIDEsIDI0MiwgMTU2LCAKLSAgICAyMTksIDY5LCA4MiwgMSwgMjQ4LCA3NiwgODIsIDEsIDI1MiwgMzEsIDE0MCwgNSwgMjUwLCAxODcsIDE0MCwgNSwgMjUzLCAKLSAgICAyNDIsIDE0MCwgNSwgMjE0LCAxMjgsIDE0MCwgMSwgNjEsIDE0MCwgMSwgMjU0LCAyMzIsIDE0MCwgMSwgNzIsIDE0MCwgMSwgCi0gICAgMjM2LCAyOCwgMTQwLCAxLCA2OSwgMTQwLCAxLCAyMTUsIDkyLCAxNDAsIDEsIDE2MSwgMTQ5LCAxNDAsIDEsIDE2MSwgMTUwLCAKLSAgICAxNDAsIDEsIDc0LCAxNDAsIDEsIDI1NCwgMTA4LCAxNDAsIDEsIDc1LCAxNDAsIDEsIDI1MywgMTA4LCAxNDAsIDEsIDE4MSwgCi0gICAgMTQwLCAxLCAyMzQsIDEzOCwgMTQwLCAxLCAyNDMsIDExMCwgMTQwLCAxLCAyNDIsIDIyNSwgMTQwLCAxLCAyMjksIDE1OSwgCi0gICAgMTQwLCAxLCAyNTAsIDIxOSwgMTQwLCAxLCAyNTAsIDkyLCAxNDAsIDEsIDIzNSwgMTM5LCAxNDAsIDEsIDIzNSwgMTE1LCAKLSAgICAxNDAsIDEsIDIyOCwgMjMsIDE0MCwgMSwgMjE2LCAxMTUsIDE0MCwgMSwgMjE2LCAxMDUsIDE0MCwgMSwgMjQ4LCA4NiwgCi0gICAgMTQwLCAxLCAyNDgsIDcwLCAxNDAsIDEsIDIyOCwgMTk4LCAxNDAsIDEsIDIxOCwgNTIsIDE0MCwgMSwgMjE3LCAxNjEsIAotICAgIDE0MCwgMSwgMjQ4LCAxNjQsIDE0MCwgMSwgMjQ3LCAyMzIsIDE0MCwgMSwgMjA1LCAxNDAsIDEsIDE5MywgMTQwLCAxLCAKLSAgICAyMjYsIDIzLCAxNDAsIDEsIDI1MiwgMTA3LCAxNDAsIDEsIDI1MSwgMTk1LCAxNDAsIDEsIDE4OCwgMTQwLCAxLCAxODYsIAotICAgIDE0MCwgMSwgMjAzLCAxNDAsIDEsIDIzMywgMTU3LCAxNDAsIDEsIDIyMSwgMjQsIDE0MCwgMSwgMjE5LCAxNTcsIDE0MCwgMSwgCi0gICAgMjIyLCAyMDIsIDE0MCwgMSwgMTU5LCAxNDAsIDUsIDIyOCwgNjAsIDE0MCwgNSwgMjUzLCA5MSwgMTQwLCAzMCwgNSwgMjU0LCAKLSAgICAyMzIsIDE0MCwgMzAsIDUsIDcyLCAxNDAsIDMwLCA1LCAyMzYsIDI4LCAxNDAsIDMwLCA1LCA2OSwgMTQwLCAzMCwgNSwgCi0gICAgMjE1LCA5MiwgMTQwLCAzMCwgNSwgMTYxLCAxNDksIDE0MCwgMzAsIDUsIDE2MSwgMjIzLCA4MiwgMTQwLCAzMCwgNSwgNzQsIAotICAgIDE0MCwgMzAsIDUsIDI1NCwgMTA4LCAxNDAsIDMwLCA1LCA3NSwgMTQwLCAzMCwgNSwgMjUzLCAxMDgsIDE0MCwgNSwgMjE0LCAKLSAgICAxMzMsIDE0MCwgMSwgMjM0LCAxMzAsIDIxOCwgNTIsIDE0MCwgMjUzLCAxMDksIDIzMywgNDcsIDc3LCAxNDAsIDEsIDIyMywgCi0gICAgODEsIDE0MCwgMSwgMjIzLCAxOTIsIDE0MCwgMSwgMjEyLCAxNjAsIDE0MCwgMSwgMTYxLCAyMjMsIDgyLCAxNDAsIDEsIAotICAgIDE2MSwgMjMyLCAyMTQsIDE0MCwgMzAsIDUsIDE2MSwgMTUwLCAxNDAsIDMwLCA1LCAxNjEsIDIzMiwgMjE0LCAxNDAsIDIxLCAKLSAgICAyMTIsIDc5LCAxNDAsIDIxLCAxMTYsIDE0MCwgMjEsIDEwOSwgMTQwLCAyMSwgMTY2LCAxNDAsIDIxLCAxNjMsIDE0MCwgMjEsIAotICAgIDE4MCwgMTQwLCAyMSwgMTg5LCAxNDAsIDIxLCAxOTgsIDE0MCwgMjEsIDE5NSwgMTQwLCAyMSwgMjAwLCAxNDAsIDEsIDIyNCwgCi0gICAgNzcsIDIsIDIzMSwgMzcsIDI0NywgMjA2LCAxNDAsIDEsIDIyNCwgNzcsIDIsIDIzMiwgMTYzLCAyNDcsIDIwNiwgMTQwLCAKLSAgICAyMjMsIDI5LCA3NywgMTQwLCAyMjMsIDI5LCA1MiwgMTQwLCAyNDksIDM5LCAyMjgsIDUzLCAxMTYsIDE0MCwgMjQ5LCAzOSwgCi0gICAgMjI4LCA1MywgMTA5LCAxNDAsIDI0OSwgMzksIDIyOCwgNTMsIDE2NiwgMTQwLCAyNDksIDM5LCAyMjgsIDUzLCAxNjMsIAotICAgIDE0MCwgMjQ5LCAzOSwgMjI4LCA1MywgMTIyLCAyMzMsIDQwLCAyMTcsIDE1NCwgMjE3LCAxNDksIDI0NywgMjU1LCAxNDAsIAotICAgIDI0OSwgMzksIDI0OCwgMCwgMjIwLCA0NywgMTQwLCAyMzUsIDE1OSwgMTQwLCAyNDMsIDc5LCA3NywgMTczLCA1LCAyNTQsIAotICAgIDE1OSwgMjUxLCAxNjYsIDE3MywgNSwgMjUxLCAxNjYsIDE3MywgNSwgMjE0LCAxMjgsIDE3MywgMSwgNjEsIDE3MywgMSwgCi0gICAgMjU0LCAyMzIsIDE3MywgMSwgNzIsIDE3MywgMSwgMjM2LCAyOCwgMTczLCAxLCA2OSwgMTczLCAxLCAyMTUsIDkyLCAxNzMsIAotICAgIDEsIDI0NSwgMTY1LCAxNzMsIDEsIDI1NCwgMTA4LCAxNzMsIDEsIDIyNywgNDksIDE3MywgMSwgMjUzLCAxMDgsIDE3MywgMSwgCi0gICAgMTgxLCAxNzMsIDEsIDIzNCwgMTM4LCAxNzMsIDEsIDI0MywgMTEwLCAxNzMsIDEsIDI0MiwgMjI1LCAxNzMsIDEsIDIyOSwgCi0gICAgMTU5LCAxNzMsIDEsIDI1MCwgMjE5LCAxNzMsIDEsIDI1MCwgOTIsIDE3MywgMSwgMjM1LCAxMzksIDE3MywgMSwgMjM1LCAKLSAgICAxMTUsIDE3MywgMSwgMjI4LCAyMywgMTczLCAxLCAyMTYsIDExNSwgMTczLCAxLCAyMTYsIDEwNSwgMTczLCAxLCAyNDgsIAotICAgIDg2LCAxNzMsIDEsIDI0OCwgNzAsIDE3MywgMSwgMjI4LCAxOTgsIDE3MywgMSwgMjE4LCA1MiwgMTczLCAxLCAyMTcsIDE2MSwgCi0gICAgMTczLCAxLCAyNDgsIDE2NCwgMTczLCAxLCAyNDcsIDIzMiwgMTczLCAxLCAyMDUsIDE3MywgMSwgMTkzLCAxNzMsIDEsIAotICAgIDIyNiwgMjMsIDE3MywgMSwgMjUyLCAxMDcsIDE3MywgMSwgMjUxLCAxOTUsIDE3MywgMSwgMTg4LCAxNzMsIDEsIDE4NiwgCi0gICAgMTczLCAxLCAyMDMsIDE3MywgMSwgMjMzLCAxNTcsIDE3MywgMSwgMjMyLCAyMTMsIDE3MywgMSwgMjE1LCAxLCAxNzMsIDEsIAotICAgIDIyMSwgMjQsIDE3MywgMSwgMjIyLCAyMDIsIDE3MywgMSwgMTU5LCAxNzMsIDUsIDIyOCwgNjAsIDE3MywgMzAsIDUsIDI1NCwgCi0gICAgMjMyLCAxNzMsIDMwLCA1LCA3MiwgMTczLCAzMCwgNSwgMjM2LCAyOCwgMTczLCAzMCwgNSwgNjksIDE3MywgMzAsIDUsIAotICAgIDIxNSwgOTIsIDE3MywgMzAsIDUsIDI0NSwgMTY1LCAxNzMsIDMwLCA1LCAyNTQsIDEwOCwgMTczLCAzMCwgNSwgMjI3LCA0OSwgCi0gICAgMTczLCAzMCwgNSwgMjUzLCAxMDgsIDE3MywgNSwgMjE0LCAxMzMsIDE3MywgNSwgMjE1LCAxODcsIDE3MywgMSwgMjM0LCAKLSAgICAxMjEsIDE3MywgMSwgMjQyLCAyMDIsIDE3MywgMSwgMjEyLCAxMDksIDE3MywgMSwgMjIzLCA4MSwgMTczLCAxLCAyNDQsIAotICAgIDE2NCwgMTczLCAyMSwgMjEyLCA3OSwgMTczLCAyMSwgMTE2LCAxNzMsIDIxLCAxMDksIDE3MywgMjEsIDE2NiwgMTczLCAyMSwgCi0gICAgMTYzLCAxNzMsIDIxLCAxODAsIDE3MywgMjEsIDE4OSwgMTczLCAyMSwgMTk4LCAxNzMsIDIxLCAxOTUsIDE3MywgMjEsIAotICAgIDIwMCwgMTczLCAyMTcsIDI3LCAxNzMsIDI1NCwgMTU4LCAxNzMsIDIzNSwgMTc2LCAxNzMsIDIxNSwgMTE3LCAxNzMsIDI0NSwgCi0gICAgMTM4LCAyMjcsIDU0LCAxNzMsIDUsIDIxMywgNjcsIDE2NCwgNSwgMjUwLCAxODcsIDE2NCwgNSwgMjUzLCAyNDIsIDE2NCwgCi0gICAgNSwgMjE0LCAxMjgsIDE2NCwgMSwgNjEsIDE2NCwgMSwgMjU0LCAyMzIsIDE2NCwgMSwgNzIsIDE2NCwgMSwgMjM2LCAyOCwgCi0gICAgMTY0LCAxLCA2OSwgMTY0LCAxLCAyMTUsIDkyLCAxNjQsIDEsIDE2MSwgMTQ5LCAxNjQsIDEsIDE2MSwgMTUwLCAxNjQsIDMwLCAKLSAgICAyNTAsIDE5MCwgNzQsIDE2NCwgMSwgNzQsIDE2NCwgMSwgMjU0LCAxMDgsIDE2NCwgMzAsIDI1MCwgMTkwLCA3NSwgMTY0LCAKLSAgICAxLCA3NSwgMTY0LCAxLCAyNTMsIDEwOCwgMTY0LCAxLCAxODEsIDE2NCwgMSwgMjM0LCAxMzgsIDE2NCwgMSwgMjQzLCAxMTAsIAotICAgIDE2NCwgMSwgMjQyLCAyMjUsIDE2NCwgMSwgMjI5LCAxNTksIDE2NCwgMSwgMjUwLCAyMTksIDE2NCwgMSwgMjUwLCA5MiwgCi0gICAgMTY0LCAxLCAyMzUsIDEzOSwgMTY0LCAxLCAyMzUsIDExNSwgMTY0LCAxLCAyMjgsIDIzLCAxNjQsIDEsIDIxNiwgMTE1LCAKLSAgICAxNjQsIDEsIDIxNiwgMTA1LCAxNjQsIDEsIDI0OCwgODYsIDE2NCwgMSwgMjQ4LCA3MCwgMTY0LCAxLCAyMjgsIDE5OCwgCi0gICAgMTY0LCAxLCAyMTgsIDUyLCAxNjQsIDEsIDIxNywgMTYxLCAxNjQsIDEsIDI0OCwgMTY0LCAxNjQsIDEsIDI0NywgMjMyLCAKLSAgICAxNjQsIDEsIDIwNSwgMTY0LCAxLCAxOTMsIDE2NCwgMSwgMjI2LCAyMywgMTY0LCAxLCAyNTIsIDEwNywgMTY0LCAxLCAyNTEsIAotICAgIDE5NSwgMTY0LCAxLCAxODgsIDE2NCwgMSwgMTg2LCAxNjQsIDEsIDIwMywgMTY0LCAxLCAyMzMsIDE1NywgMTY0LCAxLCAKLSAgICAyMzIsIDIxMywgMTY0LCAxLCAyMTUsIDEsIDE2NCwgMSwgMjIxLCAyNCwgMTY0LCAxLCAyMTksIDE1NywgMTY0LCAxLCAyMjIsIAotICAgIDIwMiwgMTY0LCAxLCAxNTksIDE2NCwgNSwgMjI4LCA2MCwgMTY0LCA1LCAyNTMsIDkxLCAxNjQsIDMwLCA1LCAyNTQsIDIzMiwgCi0gICAgMTY0LCAzMCwgNSwgNzIsIDE2NCwgMzAsIDUsIDIzNiwgMjgsIDE2NCwgMzAsIDUsIDY5LCAxNjQsIDMwLCA1LCAyMTUsIDkyLCAKLSAgICAxNjQsIDMwLCA1LCAxNjEsIDE0OSwgMTY0LCAzMCwgNSwgMTYxLCAyMjMsIDgyLCAxNjQsIDMwLCA1LCAyNTAsIDE5MCwgNzQsIAotICAgIDE2NCwgMzAsIDUsIDc0LCAxNjQsIDMwLCA1LCAyNTQsIDEwOCwgMTY0LCAzMCwgNSwgMjUwLCAxOTAsIDc1LCAxNjQsIDMwLCAKLSAgICA1LCA3NSwgMTY0LCAzMCwgNSwgMjUzLCAxMDgsIDE2NCwgNSwgMjE0LCAxMzMsIDE2NCwgMjI3LCA3MCwgMTY0LCAxLCAxNjEsIAotICAgIDIyMywgODIsIDE2NCwgMSwgMTYxLCAyMzIsIDIxNCwgMTY0LCAzMCwgNSwgMTYxLCAxNTAsIDE2NCwgMzAsIDUsIDE2MSwgCi0gICAgMjMyLCAyMTQsIDE2NCwgMjEsIDIxMiwgNzksIDE2NCwgMjEsIDExNiwgMTY0LCAyMSwgMTA5LCAxNjQsIDIxLCAxNjYsIAotICAgIDE2NCwgMjEsIDE2MywgMTY0LCAyMSwgMTgwLCAxNjQsIDIxLCAxODksIDE2NCwgMjEsIDE5OCwgMTY0LCAyMSwgMTk1LCAKLSAgICAxNjQsIDIxLCAyMDAsIDE2NCwgMjIzLCAyOSwgNTIsIDE0NywgNSwgMjUwLCAxODcsIDE0NywgNSwgMjUzLCAyNDIsIDE0NywgCi0gICAgNSwgMjE0LCAxMjgsIDE0NywgMSwgNjEsIDE0NywgMSwgMjU0LCAyMzIsIDE0NywgMSwgNzIsIDE0NywgMSwgMjM2LCAyOCwgCi0gICAgMTQ3LCAxLCA2OSwgMTQ3LCAxLCAyMTUsIDkyLCAxNDcsIDEsIDE2MSwgMTQ5LCAxNDcsIDEsIDE2MSwgMTUwLCAxNDcsIDEsIAotICAgIDc0LCAxNDcsIDEsIDI1NCwgMTA4LCAxNDcsIDEsIDc1LCAxNDcsIDEsIDI1MywgMTA4LCAxNDcsIDEsIDE4MSwgMTQ3LCAxLCAKLSAgICAyMzQsIDEzOCwgMTQ3LCAxLCAyNDMsIDExMCwgMTQ3LCAxLCAyNDIsIDIyNSwgMTQ3LCAxLCAyMjksIDE1OSwgMTQ3LCAxLCAKLSAgICAyNTAsIDIxOSwgMTQ3LCAxLCAyNTAsIDkyLCAxNDcsIDEsIDIzNSwgMTM5LCAxNDcsIDEsIDIzNSwgMTE1LCAxNDcsIDEsIAotICAgIDIyOCwgMjMsIDE0NywgMSwgMjE2LCAxMTUsIDE0NywgMSwgMjE2LCAxMDUsIDE0NywgMSwgMjQ4LCA4NiwgMTQ3LCAxLCAKLSAgICAyNDgsIDcwLCAxNDcsIDEsIDIyOCwgMTk4LCAxNDcsIDEsIDIxOCwgNTIsIDE0NywgMSwgMjE3LCAxNjEsIDE0NywgMSwgCi0gICAgMjQ4LCAxNjQsIDE0NywgMSwgMjQ3LCAyMzIsIDE0NywgMSwgMjA1LCAxNDcsIDEsIDE5MywgMTQ3LCAxLCAyMjYsIDIzLCAKLSAgICAxNDcsIDEsIDI1MiwgMTA3LCAxNDcsIDEsIDI1MSwgMTk1LCAxNDcsIDEsIDE4OCwgMTQ3LCAxLCAxODYsIDE0NywgMSwgCi0gICAgMjAzLCAxNDcsIDEsIDIzMywgMTU3LCAxNDcsIDEsIDIzMiwgMjEzLCAxNDcsIDEsIDIxNSwgMSwgMTQ3LCAxLCAyMjEsIDI0LCAKLSAgICAxNDcsIDEsIDIxOSwgMTU3LCAxNDcsIDEsIDIyMiwgMjAyLCAxNDcsIDEsIDE1OSwgMTQ3LCA1LCAyMjgsIDYwLCAxNDcsIDUsIAotICAgIDI1MywgOTEsIDE0NywgMzAsIDUsIDI1NCwgMjMyLCAxNDcsIDMwLCA1LCA3MiwgMTQ3LCAzMCwgNSwgMjM2LCAyOCwgMTQ3LCAKLSAgICAzMCwgNSwgNjksIDE0NywgMzAsIDUsIDIxNSwgOTIsIDE0NywgMzAsIDUsIDE2MSwgMTQ5LCAxNDcsIDMwLCA1LCAxNjEsIAotICAgIDIyMywgODIsIDE0NywgMzAsIDUsIDc0LCAxNDcsIDMwLCA1LCAyNTQsIDEwOCwgMTQ3LCAzMCwgNSwgNzUsIDE0NywgMzAsIAotICAgIDUsIDI1MywgMTA4LCAxNDcsIDUsIDIxNCwgMTMzLCAxNDcsIDI1NCwgMTA5LCAyMzMsIDQ3LCA3NywgMTQ3LCAyNTMsIDEwOSwgCi0gICAgMjMzLCA0NywgNzcsIDE0NywgMSwgMjIzLCA4MSwgMTQ3LCAxLCAyMjMsIDE5MiwgMTQ3LCAxLCAyMTIsIDE2MCwgMTQ3LCAxLCAKLSAgICAxNjEsIDIyMywgODIsIDE0NywgMSwgMTYxLCAyMzIsIDIxNCwgMTQ3LCAzMCwgNSwgMTYxLCAxNTAsIDE0NywgMzAsIDUsIAotICAgIDE2MSwgMjMyLCAyMTQsIDE0NywgMjEsIDIxMiwgNzksIDE0NywgMjEsIDExNiwgMTQ3LCAyMSwgMTA5LCAxNDcsIDIxLCAKLSAgICAxNjYsIDE0NywgMjEsIDE2MywgMTQ3LCAyMSwgMTgwLCAxNDcsIDIxLCAxODksIDE0NywgMjEsIDE5OCwgMTQ3LCAyMSwgCi0gICAgMTk1LCAxNDcsIDIxLCAyMDAsIDE0NywgMjM1LCAxNTksIDE0NywgMSwgMjE0LCA0OSwgMTQ3LCAyNDMsIDIyOCwgMTIyLCAKLSAgICAyMjQsIDE2NiwgMTQ3LCAyNDMsIDIyOCwgMTIyLCAyNDIsIDksIDE0NywgMjQzLCAyMjgsIDEzMywgMjI0LCAxNjQsIDE0NywgCi0gICAgMjQzLCAyMjgsIDEyMiwgMjIwLCA0NSwgMTQ3LCAyNDMsIDIyOCwgMTIyLCAyNDUsIDE0NSwgMTQ3LCAyNDMsIDIyOCwgMTMzLCAKLSAgICAyMjAsIDQ0LCAxNzgsIDUsIDI1MywgMjQyLCAxNzgsIDUsIDIxNCwgMTI4LCAxNzgsIDEsIDYxLCAxNzgsIDEsIDI1NCwgCi0gICAgMjMyLCAxNzgsIDEsIDcyLCAxNzgsIDEsIDIzNiwgMjgsIDE3OCwgMSwgNjksIDE3OCwgMSwgMjE1LCA5MiwgMTc4LCAxLCAKLSAgICA3NCwgMTc4LCAxLCAyNDUsIDE2NSwgMTc4LCAxLCAyNTQsIDEwOCwgMTc4LCAxLCA3NSwgMTc4LCAxLCAyMjcsIDQ5LCAxNzgsIAotICAgIDEsIDI1MywgMTA4LCAxNzgsIDEsIDE4MSwgMTc4LCAxLCAyMjksIDE1OSwgMTc4LCAxLCAyNTAsIDIxOSwgMTc4LCAxLCAKLSAgICAyMzUsIDEzOSwgMTc4LCAxLCAyMjgsIDIzLCAxNzgsIDEsIDIxNiwgMTE1LCAxNzgsIDEsIDIyOCwgMTk4LCAxNzgsIDEsIAotICAgIDIxOCwgNTIsIDE3OCwgMSwgMjA1LCAxNzgsIDEsIDIyOCwgMTg5LCAxNzgsIDEsIDE5MywgMTc4LCAxLCAxODgsIDE3OCwgMSwgCi0gICAgMTg2LCAxNzgsIDEsIDIwMywgMTc4LCAxLCAyMjMsIDgxLCAxNzgsIDEsIDIzMywgMTU3LCAxNzgsIDEsIDIzMiwgMjEzLCAKLSAgICAxNzgsIDEsIDIzMiwgMjEyLCAxNzgsIDEsIDIxNSwgMSwgMTc4LCAxLCAyMjEsIDI0LCAxNzgsIDEsIDIxOSwgMTU3LCAxNzgsIAotICAgIDEsIDIyMiwgMjAyLCAxNzgsIDEsIDE1OSwgMTc4LCAzMCwgNSwgMjU0LCAyMzIsIDE3OCwgMzAsIDUsIDcyLCAxNzgsIDMwLCAKLSAgICA1LCAyMzYsIDI4LCAxNzgsIDMwLCA1LCA2OSwgMTc4LCAzMCwgNSwgMjE1LCA5MiwgMTc4LCAzMCwgNSwgNzQsIDE3OCwgMzAsIAotICAgIDUsIDI0NSwgMTY1LCAxNzgsIDMwLCA1LCAyNTQsIDEwOCwgMTc4LCAzMCwgNSwgNzUsIDE3OCwgMzAsIDUsIDIyNywgNDksIAotICAgIDE3OCwgMzAsIDUsIDI1MywgMTA4LCAxNzgsIDUsIDIxNCwgMTMzLCAxNzgsIDIyNywgNzAsIDE3OCwgMjUzLCAxMDksIDIzMywgCi0gICAgNDcsIDc3LCAxNzgsIDIxLCAyMTIsIDc5LCAxNzgsIDIxLCAxMTYsIDE3OCwgMjEsIDEwOSwgMTc4LCAyMSwgMTY2LCAxNzgsIAotICAgIDIxLCAxNjMsIDE3OCwgMjEsIDE4MCwgMTc4LCAyMSwgMTg5LCAxNzgsIDIxLCAxOTgsIDE3OCwgMjEsIDE5NSwgMTc4LCAyMSwgCi0gICAgMjAwLCAxNzgsIDUwLCAyMTcsIDIwMCwgMTc4LCA1MCwgMTIyLCAyNDAsIDIwMCwgMTc4LCA1MCwgMTIyLCAyMTcsIDEwMCwgCi0gICAgMTc4LCAyNDgsIDkyLCA1MiwgMTc4LCAyMzAsIDIwNSwgNTIsIDE3OCwgMjEzLCAzNiwgNTIsIDE3OCwgMjQ4LCAzOCwgNTIsIAotICAgIDE3OCwgMjQ5LCA3OSwgNTIsIDE3OCwgMjUzLCAxNTMsIDc4LCA1MiwgMTc4LCAyMjMsIDI5LCA1MiwgMTc4LCA1MCwgNTIsIAotICAgIDEzOSwgNSwgMjUwLCAxODcsIDEzOSwgNSwgMjUzLCAyNDIsIDEzOSwgNSwgMjE0LCAxMjgsIDEzOSwgMSwgNjEsIDEzOSwgMSwgCi0gICAgMjU0LCAyMzIsIDEzOSwgMSwgNzIsIDEzOSwgMSwgMjM2LCAyOCwgMTM5LCAxLCA2OSwgMTM5LCAxLCAyMTUsIDkyLCAxMzksIAotICAgIDEsIDE2MSwgMTQ5LCAxMzksIDEsIDE2MSwgMTUwLCAxMzksIDEsIDc0LCAxMzksIDEsIDI0NSwgMTY1LCAxMzksIDEsIDI1NCwgCi0gICAgMTA4LCAxMzksIDEsIDc1LCAxMzksIDEsIDIyNywgNDksIDEzOSwgMSwgMjUzLCAxMDgsIDEzOSwgMSwgMTgxLCAxMzksIDEsIAotICAgIDIzNCwgMTM4LCAxMzksIDEsIDI0MywgMTEwLCAxMzksIDEsIDI0MiwgMjI1LCAxMzksIDEsIDIyOSwgMTU5LCAxMzksIDEsIAotICAgIDI1MCwgMjE5LCAxMzksIDEsIDI1MCwgOTIsIDEzOSwgMSwgMjM1LCAxMzksIDEzOSwgMSwgMjM1LCAxMTUsIDEzOSwgMSwgCi0gICAgMjI4LCAyMywgMTM5LCAxLCAyMTYsIDExNSwgMTM5LCAxLCAyMTYsIDEwNSwgMTM5LCAxLCAyNDgsIDg2LCAxMzksIDEsIAotICAgIDI0OCwgNzAsIDEzOSwgMSwgMjI4LCAxOTgsIDEzOSwgMSwgMjE4LCA1MiwgMTM5LCAxLCAyMTcsIDE2MSwgMTM5LCAxLCAKLSAgICAyNDgsIDE2NCwgMTM5LCAxLCAyNDcsIDIzMiwgMTM5LCAxLCAyMDUsIDEzOSwgMSwgMTkzLCAxMzksIDEsIDIyNiwgMjMsIAotICAgIDEzOSwgMSwgMjUyLCAxMDcsIDEzOSwgMSwgMjUxLCAxOTUsIDEzOSwgMSwgMTg4LCAxMzksIDEsIDE4NiwgMTM5LCAxLCAKLSAgICAyMDMsIDEzOSwgMSwgMjIzLCA4MSwgMTM5LCAxLCAyMzMsIDE1NywgMTM5LCAxLCAyMzIsIDIxMywgMTM5LCAxLCAyMTUsIDEsIAotICAgIDEzOSwgMSwgMjIxLCAyNCwgMTM5LCAxLCAyMTksIDE1NywgMTM5LCAxLCAyMjIsIDIwMiwgMTM5LCAxLCAxNTksIDEzOSwgNSwgCi0gICAgMjUzLCA5MSwgMTM5LCAzMCwgNSwgMjU0LCAyMzIsIDEzOSwgMzAsIDUsIDcyLCAxMzksIDMwLCA1LCAyMzYsIDI4LCAxMzksIAotICAgIDMwLCA1LCA2OSwgMTM5LCAzMCwgNSwgMjE1LCA5MiwgMTM5LCAzMCwgNSwgMTYxLCAxNDksIDEzOSwgMzAsIDUsIDE2MSwgCi0gICAgMjIzLCA4MiwgMTM5LCAzMCwgNSwgNzQsIDEzOSwgMzAsIDUsIDI0NSwgMTY1LCAxMzksIDMwLCA1LCAyNTQsIDEwOCwgMTM5LCAKLSAgICAzMCwgNSwgNzUsIDEzOSwgMzAsIDUsIDIyNywgNDksIDEzOSwgMzAsIDUsIDI1MywgMTA4LCAxMzksIDUsIDIxNCwgMTMzLCAKLSAgICAxMzksIDIzMywgNDcsIDc3LCAxMzksIDI1NCwgMTA5LCAyMzMsIDQ3LCA3NywgMTM5LCAxLCAyMTYsIDE0MSwgMTM5LCAxLCAKLSAgICAyNDUsIDI0OSwgMTM5LCAxLCAxNjEsIDIyMywgODIsIDEzOSwgMSwgMTYxLCAyMzIsIDIxNCwgMTM5LCAzMCwgNSwgMTYxLCAKLSAgICAxNTAsIDEzOSwgMzAsIDUsIDE2MSwgMjMyLCAyMTQsIDEzOSwgMjEsIDIxMiwgNzksIDEzOSwgMjEsIDExNiwgMTM5LCAyMSwgCi0gICAgMTA5LCAxMzksIDIxLCAxNjYsIDEzOSwgMjEsIDE2MywgMTM5LCAyMSwgMTgwLCAxMzksIDIxLCAxODksIDEzOSwgMjEsIAotICAgIDE5OCwgMTM5LCAyMSwgMTk1LCAxMzksIDIxLCAyMDAsIDEzOSwgMjQzLCAyMjgsIDIxLCAyMTIsIDgwLCAzMSwgMjI3LCAKLSAgICAxMDIsIDIyNSwgMTAzLCA2NSwgMTYzLCAxMzksIDI0MywgMjI4LCAyMSwgMTIyLCAzMSwgMjI3LCAxMDIsIDIyNSwgMTAzLCAKLSAgICA2NSwgMTYzLCAxMzksIDI0MywgMjI4LCAyMSwgMTE3LCAzMSwgMjI3LCAxMDIsIDIyNSwgMTAzLCA2NSwgMTYzLCAxMzksIAotICAgIDI0MywgMjI4LCAyMSwgMTMzLCAzMSwgMjI3LCAxMDIsIDIyNSwgMTAzLCA2NSwgMTYzLCAxMzksIDI0MywgMjI4LCAyMSwgCi0gICAgMTIyLCAzMSwgMjQ1LCA5LCAyMjUsIDEwMywgNjUsIDE2MywgMTM5LCAyNDMsIDIyOCwgMjEsIDExNywgMzEsIDI0NSwgOSwgCi0gICAgMjI1LCAxMDMsIDY1LCAxNjMsIDEzOSwgMjQzLCAyMjgsIDIxLCAxMzMsIDMxLCAyNDUsIDksIDIyNSwgMTAzLCA2NSwgMTYzLCAKLSAgICAxMzksIDUsIDIxNiwgNDksIDE1NSwgNSwgMjUzLCAyNDIsIDE1NSwgNSwgMjE0LCAxMjgsIDE1NSwgMSwgNjEsIDE1NSwgMSwgCi0gICAgMjU0LCAyMzIsIDE1NSwgMSwgNzIsIDE1NSwgMSwgMjM2LCAyOCwgMTU1LCAxLCA2OSwgMTU1LCAxLCAyMTUsIDkyLCAxNTUsIAotICAgIDEsIDE2MSwgMTQ5LCAxNTUsIDEsIDE2MSwgMTUwLCAxNTUsIDEsIDc0LCAxNTUsIDEsIDI0NSwgMTY1LCAxNTUsIDEsIDI1NCwgCi0gICAgMTA4LCAxNTUsIDEsIDc1LCAxNTUsIDEsIDIyNywgNDksIDE1NSwgMSwgMjUzLCAxMDgsIDE1NSwgMSwgMTgxLCAxNTUsIDEsIAotICAgIDIzNCwgMTM4LCAxNTUsIDEsIDI0MywgMTEwLCAxNTUsIDEsIDI0MiwgMjI1LCAxNTUsIDEsIDIyOSwgMTU5LCAxNTUsIDEsIAotICAgIDI1MCwgMjE5LCAxNTUsIDEsIDI1MCwgOTIsIDE1NSwgMSwgMjM1LCAxMzksIDE1NSwgMSwgMjM1LCAxMTUsIDE1NSwgMSwgCi0gICAgMjI4LCAyMywgMTU1LCAxLCAyMTYsIDExNSwgMTU1LCAxLCAyMTYsIDEwNSwgMTU1LCAxLCAyNDgsIDg2LCAxNTUsIDEsIAotICAgIDI0OCwgNzAsIDE1NSwgMSwgMjI4LCAxOTgsIDE1NSwgMSwgMjE4LCA1MiwgMTU1LCAxLCAyMTcsIDE2MSwgMTU1LCAxLCAKLSAgICAyNDgsIDE2NCwgMTU1LCAxLCAyNDcsIDIzMiwgMTU1LCAxLCAyMDUsIDE1NSwgMSwgMTkzLCAxNTUsIDEsIDIyNiwgMjMsIAotICAgIDE1NSwgMSwgMjUyLCAxMDcsIDE1NSwgMSwgMjUxLCAxOTUsIDE1NSwgMSwgMTg4LCAxNTUsIDEsIDE4NiwgMTU1LCAxLCAKLSAgICAyMDMsIDE1NSwgMSwgMjIzLCA4MSwgMTU1LCAxLCAyMzMsIDE1NywgMTU1LCAxLCAyMzIsIDIxMywgMTU1LCAxLCAyMTUsIDEsIAotICAgIDE1NSwgMSwgMjIxLCAyNCwgMTU1LCAxLCAyMTksIDE1NywgMTU1LCAxLCAyMjIsIDIwMiwgMTU1LCAxLCAxNTksIDE1NSwgNSwgCi0gICAgMjI4LCA2MCwgMTU1LCA1LCAyNTMsIDkxLCAxNTUsIDMwLCA1LCAyNTQsIDIzMiwgMTU1LCAzMCwgNSwgNzIsIDE1NSwgMzAsIAotICAgIDUsIDIzNiwgMjgsIDE1NSwgMzAsIDUsIDY5LCAxNTUsIDMwLCA1LCAyMTUsIDkyLCAxNTUsIDMwLCA1LCAxNjEsIDE0OSwgCi0gICAgMTU1LCAzMCwgNSwgMTYxLCAyMjMsIDgyLCAxNTUsIDMwLCA1LCA3NCwgMTU1LCAzMCwgNSwgMjQ1LCAxNjUsIDE1NSwgMzAsIAotICAgIDUsIDI1NCwgMTA4LCAxNTUsIDMwLCA1LCA3NSwgMTU1LCAzMCwgNSwgMjI3LCA0OSwgMTU1LCAzMCwgNSwgMjUzLCAxMDgsIAotICAgIDE1NSwgNSwgMjE0LCAxMzMsIDE1NSwgMjMzLCA0NywgNzcsIDE1NSwgMjU0LCAxMDksIDIzMywgNDcsIDc3LCAxNTUsIDEsIAotICAgIDI0NCwgMTY0LCAxNTUsIDEsIDE2MSwgMjIzLCA4MiwgMTU1LCAxLCAxNjEsIDIzMiwgMjE0LCAxNTUsIDMwLCA1LCAxNjEsIAotICAgIDE1MCwgMTU1LCAzMCwgNSwgMTYxLCAyMzIsIDIxNCwgMTU1LCAyMSwgMjEyLCA3OSwgMTU1LCAyMSwgMTE2LCAxNTUsIDIxLCAKLSAgICAxMDksIDE1NSwgMjEsIDE2NiwgMTU1LCAyMSwgMTYzLCAxNTUsIDIxLCAxODAsIDE1NSwgMjEsIDE4OSwgMTU1LCAyMSwgCi0gICAgMTk4LCAxNTUsIDIxLCAxOTUsIDE1NSwgMjEsIDIwMCwgMTU1LCA1LCAyMzUsIDEwNCwgMTU1LCA1LCAyMTUsIDEzMiwgMTMwLCAKLSAgICA1LCAyNTMsIDI0MiwgMTMwLCA1LCAyMTQsIDEyOCwgMTMwLCAxLCA2MSwgMTMwLCAxLCAyNTQsIDIzMiwgMTMwLCAxLCA3MiwgCi0gICAgMTMwLCAxLCAyMzYsIDI4LCAxMzAsIDEsIDY5LCAxMzAsIDEsIDIxNSwgOTIsIDEzMCwgMSwgMTYxLCAxNDksIDEzMCwgMSwgCi0gICAgMTYxLCAxNTAsIDEzMCwgMSwgNzQsIDEzMCwgMSwgMjQ1LCAxNjUsIDEzMCwgMSwgMjU0LCAxMDgsIDEzMCwgMSwgNzUsIAotICAgIDEzMCwgMSwgMjI3LCA0OSwgMTMwLCAxLCAyNTMsIDEwOCwgMTMwLCAxLCAxODEsIDEzMCwgMSwgMjM0LCAxMzgsIDEzMCwgMSwgCi0gICAgMjQzLCAxMTAsIDEzMCwgMSwgMjQyLCAyMjUsIDEzMCwgMSwgMjI5LCAxNTksIDEzMCwgMSwgMjUwLCAyMTksIDEzMCwgMSwgCi0gICAgMjUwLCA5MiwgMTMwLCAxLCAyMzUsIDEzOSwgMTMwLCAxLCAyMzUsIDExNSwgMTMwLCAxLCAyMjgsIDIzLCAxMzAsIDEsIAotICAgIDIxNiwgMTE1LCAxMzAsIDEsIDIxNiwgMTA1LCAxMzAsIDEsIDI0OCwgODYsIDEzMCwgMSwgMjQ4LCA3MCwgMTMwLCAxLCAKLSAgICAyMjgsIDE5OCwgMTMwLCAxLCAyMTgsIDUyLCAxMzAsIDEsIDIxNywgMTYxLCAxMzAsIDEsIDI0OCwgMTY0LCAxMzAsIDEsIAotICAgIDI0NywgMjMyLCAxMzAsIDEsIDIwNSwgMTMwLCAxLCAyMjgsIDE4OSwgMTMwLCAxLCAxOTMsIDEzMCwgMSwgMjI2LCAyMywgCi0gICAgMTMwLCAxLCAyNTIsIDEwNywgMTMwLCAxLCAyNTEsIDE5NSwgMTMwLCAxLCAxODgsIDEzMCwgMSwgMTg2LCAxMzAsIDEsIAotICAgIDIwMywgMTMwLCAxLCAyMjMsIDgxLCAxMzAsIDEsIDIzMywgMTU3LCAxMzAsIDEsIDIzMiwgMjEzLCAxMzAsIDEsIDIzMiwgCi0gICAgMjEyLCAxMzAsIDEsIDIxNSwgMSwgMTMwLCAxLCAyMjEsIDI0LCAxMzAsIDEsIDIxOSwgMTU3LCAxMzAsIDEsIDIyMiwgMjAyLCAKLSAgICAxMzAsIDEsIDE1OSwgMTMwLCAxLCAyMTYsIDg4LCAxMzAsIDUsIDI1MywgOTEsIDEzMCwgMzAsIDUsIDI1NCwgMjMyLCAxMzAsIAotICAgIDMwLCA1LCA3MiwgMTMwLCAzMCwgNSwgMjM2LCAyOCwgMTMwLCAzMCwgNSwgNjksIDEzMCwgMzAsIDUsIDIxNSwgOTIsIDEzMCwgCi0gICAgMzAsIDUsIDE2MSwgMTQ5LCAxMzAsIDMwLCA1LCAxNjEsIDIyMywgODIsIDEzMCwgMzAsIDUsIDc0LCAxMzAsIDMwLCA1LCAKLSAgICAyNDUsIDE2NSwgMTMwLCAzMCwgNSwgMjU0LCAxMDgsIDEzMCwgMzAsIDUsIDc1LCAxMzAsIDMwLCA1LCAyMjcsIDQ5LCAxMzAsIAotICAgIDMwLCA1LCAyNTMsIDEwOCwgMTMwLCA1LCAyMTQsIDEzMywgMTMwLCAxLCA2MiwgMjIzLCAyMjUsIDEzMCwgMjUzLCAxMDksIAotICAgIDIzMywgNDcsIDc3LCAxMzAsIDEsIDE2MSwgMjIzLCA4MiwgMTMwLCAxLCAxNjEsIDIzMiwgMjE0LCAxMzAsIDMwLCA1LCAKLSAgICAxNjEsIDE1MCwgMTMwLCAzMCwgNSwgMTYxLCAyMzIsIDIxNCwgMTMwLCAyMSwgMjEyLCA3OSwgMTMwLCAyMSwgMTE2LCAxMzAsIAotICAgIDIxLCAxMDksIDEzMCwgMjEsIDE2NiwgMTMwLCAyMSwgMTYzLCAxMzAsIDIxLCAxODAsIDEzMCwgMjEsIDE4OSwgMTMwLCAyMSwgCi0gICAgMTk4LCAxMzAsIDIxLCAxOTUsIDEzMCwgMjEsIDIwMCwgMTMwLCA1MCwgMjE3LCAyMDAsIDEzMCwgNTAsIDEyMiwgMjQwLCAKLSAgICAyMDAsIDEzMCwgNTAsIDEyMiwgMjE3LCAxMDAsIDEzMCwgMjQzLCAyMjgsIDEyMiwgMjI0LCAxNjYsIDEzMCwgMjQzLCAyMjgsIAotICAgIDEyMiwgMjQyLCA5LCAxMzAsIDI0MywgMjI4LCAxMzMsIDIyNCwgMTY0LCAxMzAsIDI0OCwgOTYsIDc3LCAxMzAsIDEsIDI1MCwgCi0gICAgMzYsIDIyOCwgMTk5LCAxMzAsIDEsIDI1MCwgMzYsIDIwNCwgMTMwLCAxLCAyNTAsIDM2LCAyMjMsIDgyLCAxMzAsIDEsIAotICAgIDI1MCwgMzYsIDE1MCwgMTMwLCAxLCAyNTAsIDM2LCAyMzIsIDIxNCwgMTMwLCAxLCAyNTAsIDM2LCAyMzUsIDI3LCAxNzIsIAotICAgIDUsIDI1MywgMjQxLCAxNzIsIDUsIDIxNCwgMTI3LCAxNzIsIDEsIDI1MywgODEsIDE3MiwgMSwgMjU0LCAxODcsIDE3MiwgMSwgCi0gICAgMjU0LCAxMjgsIDE3MiwgMSwgMjU0LCAxNDMsIDE3MiwgMSwgMjM1LCAxNDksIDE3MiwgMSwgMjM2LCAyNywgMTcyLCAxLCAKLSAgICAyMTUsIDg0LCAxNzIsIDEsIDIxNSwgODYsIDE3MiwgMSwgMjM1LCAxNzEsIDE3MiwgMSwgMjM1LCAxNzIsIDE3MiwgMSwgCi0gICAgMjM2LCAxMywgMTcyLCAxLCAyMzYsIDE1LCAxNzIsIDEsIDI0NCwgMjQxLCAxNzIsIDEsIDI0NSwgMTYxLCAxNzIsIDEsIAotICAgIDI1NCwgOTYsIDE3MiwgMSwgMjI2LCAyMzIsIDE3MiwgMSwgMjI3LCA0MywgMTcyLCAxLCAyNTMsIDk0LCAxNzIsIDEsIDI1NCwgCi0gICAgNTUsIDIzNCwgMTkzLCAxNzIsIDEsIDIzMiwgMTQsIDIzNCwgMTkzLCAxNzIsIDEsIDI1NCwgNTUsIDI0MywgNTgsIDE3MiwgCi0gICAgMSwgMjMyLCAxNCwgMjQzLCA1OCwgMTcyLCAxLCAyMzQsIDIzNCwgMjMwLCA0MCwgMTcyLCAxLCAyMjIsIDE1MiwgMjQzLCAKLSAgICA1OCwgMTcyLCAxLCAyNTQsIDU1LCAyNTAsIDE0OSwgMTcyLCAxLCAyMzIsIDE0LCAyNTAsIDE0OSwgMTcyLCAxLCAyNTQsIAotICAgIDU1LCAyMzUsIDEyOCwgMTcyLCAxLCAyMzIsIDE0LCAyMzUsIDEyOCwgMTcyLCAxLCAyMTgsIDQ2LCAyMzAsIDQwLCAxNzIsIAotICAgIDEsIDIxOCwgNDYsIDIyMiwgMTUxLCAyMzAsIDQxLCAxNzIsIDEsIDIyMiwgMTUyLCAyMzUsIDEyOCwgMTcyLCAxLCAyNTQsIAotICAgIDU1LCAyMTYsIDExMywgMTcyLCAxLCAyMzIsIDE0LCAyMTYsIDExMywgMTcyLCAxLCAyNTQsIDU1LCAyNDgsIDc3LCAxNzIsIAotICAgIDEsIDIzMiwgMTQsIDI0OCwgNzcsIDE3MiwgMSwgMjMwLCAxMjQsIDIzMCwgMiwgMTcyLCAxLCAyMjIsIDE1MiwgMjQ4LCA3NywgCi0gICAgMTcyLCAxLCAyNTQsIDU1LCAyMTcsIDIzNywgMTcyLCAxLCAyMzIsIDE0LCAyMTcsIDIzNywgMTcyLCAxLCAyNTQsIDU1LCAKLSAgICAyNDgsIDkwLCAxNzIsIDEsIDIzMiwgMTQsIDI0OCwgOTAsIDE3MiwgMSwgMjQ4LCAxMTksIDIzMCwgMiwgMTcyLCAxLCAyMjIsIAotICAgIDE1MiwgMjQ4LCA5MCwgMTcyLCAxLCAyNTQsIDU1LCAyMjYsIDEwMiwgMTcyLCAxLCAyMzIsIDE0LCAyMjYsIDEwMiwgMTcyLCAKLSAgICAxLCAyNTQsIDU1LCAyNTIsIDMyLCAxNzIsIDEsIDIzMiwgMTQsIDI1MiwgMzIsIDE3MiwgMSwgMjMxLCAxOTUsIDE3MiwgMSwgCi0gICAgMjU0LCA0MCwgMjUyLCAzMiwgMTcyLCAxLCAyMTMsIDQyLCAxNzIsIDEsIDIyNCwgMjYsIDE3MiwgMSwgMjQ4LCAxMTksIAotICAgIDIzMywgOTEsIDE3MiwgMSwgMjE0LCAyMzQsIDE3MiwgMSwgMjE4LCA0NiwgMjIyLCAxMjgsIDE3MiwgMSwgMjMwLCAxMjQsIAotICAgIDIyMiwgMTI4LCAxNzIsIDEsIDI0OCwgMTE5LCAyMjIsIDEyOCwgMTcyLCAxLCAyNDEsIDIyNiwgMTcyLCAxLCAyMzAsIDEyNCwgCi0gICAgMjMzLCA5MSwgMTcyLCAxLCAyNDQsIDEyNSwgMTcyLCA1LCAyNTQsIDg1LCAxNzIsIDMwLCA1LCAyNTQsIDEzOCwgMTcyLCAKLSAgICAzMCwgNSwgMjM0LCAxNjEsIDI1NCwgMTQ1LCAxNzIsIDMwLCA1LCAyNDcsIDE4MCwgMjU0LCAxNDUsIDE3MiwgMzAsIDUsIAotICAgIDIzNCwgMTYxLCAyMzUsIDE2OCwgMTcyLCAzMCwgNSwgMjQ3LCAxODAsIDIzNSwgMTY4LCAxNzIsIDMwLCA1LCAyMzQsIDE2MSwgCi0gICAgMjI2LCAyMTIsIDE3MiwgMzAsIDUsIDI0NywgMTgwLCAyMjYsIDIxMiwgMTcyLCAzMCwgNSwgMjQzLCA5OSwgMTcyLCAzMCwgCi0gICAgNSwgMjM0LCAyNCwgMTcyLCAzMCwgNSwgMjQ3LCAxODAsIDIzNCwgMjQsIDE3MiwgMzAsIDUsIDIzNCwgMjYsIDI0OCwgMTgsIAotICAgIDE3MiwgMzAsIDUsIDIzNCwgMjUsIDI0MiwgMjgsIDI1NCwgMTM4LCAxNzIsIDMwLCA1LCAyMzQsIDI1LCAyNDIsIDI4LCAKLSAgICAyNDcsIDE4MCwgMjU0LCAxMzgsIDE3MiwgMzAsIDUsIDIzNCwgMjUsIDI0MiwgMjgsIDI0MywgNTcsIDE3MiwgMzAsIDUsIAotICAgIDI0MywgNTcsIDE3MiwgMzAsIDUsIDI0NywgMTgwLCAyNDMsIDk5LCAxNzIsIDMwLCA1LCAyNDcsIDE4MCwgMjQzLCA1NywgCi0gICAgMTcyLCAyMjUsIDI3LCAyMzMsIDIyOCwgMTU0LCAxMzcsIDIzNCwgMzgsIDIzNCwgMjUwLCAxNTQsIDEzNywgMjM0LCAxMTQsIAotICAgIDIzNCwgMTM0LCAxNTQsIDEzNywgMjM0LCAxMTQsIDIzNCwgMTA3LCAxNTQsIDEzNywgMjM0LCAxMTQsIDIzNCwgMTA0LCAKLSAgICAxNTQsIDEzNywgMjM0LCAxMTQsIDIzNCwgMTExLCAxNTQsIDEzNywgMjM0LCAxMTQsIDIyNCwgNDYsIDE1NCwgMTM3LCAyMjksIAotICAgIDkxLCAyMjksIDc4LCAxNTQsIDEzNywgMjUwLCAyNCwgMjUwLCA4MywgMTU0LCAxMzcsIDI1MCwgMjQsIDI1MCwgMzIsIDE1NCwgCi0gICAgMTM3LCAyNTAsIDI0LCAyNTAsIDgyLCAxNTQsIDEzNywgMjE5LCAyNDMsIDIxOSwgMjQyLCAxNTQsIDEzNywgMjUwLCAyNCwgCi0gICAgMjUwLCAyMCwgMTU0LCAxMzcsIDIxMiwgMjM2LCAyMTIsIDI0MywgMTU0LCAxMzcsIDI0NywgMTAwLCAyNTAsIDg5LCAxNTQsIAotICAgIDEzNywgMjExLCAyMTEsIDIyNiwgMTExLCAxNTQsIDEzNywgMjE3LCAxMTAsIDIxNywgMTUzLCAxNTQsIDEzNywgMjE3LCAKLSAgICAxMTAsIDIzMCwgMjEsIDE1NCwgMTM3LCAyMTcsIDExMCwgMjI1LCAyNDMsIDE1NCwgMTM3LCAyMjgsIDE4NiwgMjI5LCAxODAsIAotICAgIDE1NCwgMTM3LCAyNDcsIDEwMCwgMjQ4LCAxOSwgMTU0LCAxMzcsIDIxMSwgMjExLCAyMTgsIDYsIDE1NCwgMTM3LCAyMTcsIAotICAgIDExMCwgMjE3LCA4NSwgMTU0LCAxMzcsIDIxNywgMTEwLCAyMTcsIDE1NywgMTU0LCAxMzcsIDIxNywgMTEwLCAyMTcsIDEwNywgCi0gICAgMTU0LCAxMzcsIDIyOCwgMTg2LCAyMjgsIDkyLCAxNTQsIDEzNywgMjUxLCAxMjksIDI1MiwgODMsIDE1NCwgMTM3LCAyMjUsIAotICAgIDE1MSwgMjI1LCAxNzQsIDE1NCwgMTM3LCAyMjUsIDI1NCwgMjI1LCAyNDUsIDE1NCwgMTM3LCAyNDQsIDEzLCAyNDQsIDE2NCwgCi0gICAgMTU0LCAxMzcsIDIyNSwgMjU0LCAyMjYsIDE3LCAxNTQsIDEzNywgMjQ0LCAxMywgMjQ0LCAxNDEsIDE1NCwgMTM3LCAyMjUsIAotICAgIDI1NCwgMjIyLCAxNjIsIDE1NCwgMTM3LCAyMzAsIDIzMiwgMTg4LCAxNTQsIDEzNywgMjEyLCAyMzYsIDIxMywgNjgsIDE1NCwgCi0gICAgMTM3LCAyMjMsIDExMywgMjIzLCA1MCwgMTU0LCAxMzcsIDIyMywgNTEsIDE1NCwgMTM3LCAyMzIsIDIwOSwgMjMyLCAyMzUsIAotICAgIDE1NCwgMTM3LCAyMzIsIDE1NiwgMTU0LCAxMzcsIDIxMywgMjE1LCAyMTQsIDQ1LCAxNTQsIDEzNywgMjE5LCAyNDMsIDIyMiwgCi0gICAgMTc3LCAxNTQsIDEzNywgMjE5LCAyNDMsIDIyMywgMjUsIDE1NCwgMTM3LCAyMTksIDI0MywgMjE5LCAyNiwgMTU0LCAxMzcsIAotICAgIDI0MSwgNTUsIDI0MSwgMTQ1LCAxNTQsIDEzNywgMjMyLCAyMDksIDI1MCwgNSwgMTU0LCAxMzcsIDE1NywgMjU0LCAyNCwgCi0gICAgMTU0LCAxMzcsIDI0MSwgNTUsIDIyOCwgMTgxLCAxNTQsIDEzNywgMjI2LCAxOTUsIDE1NCwgMTM3LCAyMjIsIDE0NiwgNjEsIAotICAgIDE1NCwgMTM3LCAyMzIsIDksIDI0MiwgMCwgMTU0LCAxMzcsIDIyMiwgMTQ2LCAyNTQsIDIzMiwgMTU0LCAxMzcsIDIyMiwgCi0gICAgMTQ2LCAyNTQsIDQ1LCAxNTQsIDEzNywgMjIyLCAxNDYsIDcyLCAxNTQsIDEzNywgMjIyLCAxNDYsIDIzNiwgMjgsIDE1NCwgCi0gICAgMTM3LCAyMjIsIDE0NiwgMjE1LCAxODMsIDE1NCwgMTM3LCAyMjIsIDE0NiwgMjE1LCAxODEsIDE1NCwgMTM3LCAyMjIsIAotICAgIDE0NiwgNjksIDE1NCwgMTM3LCAyMjIsIDE0NiwgMjE1LCA5MiwgMTU0LCAxMzcsIDIyNiwgMCwgMTU0LCAyNDksIDM5LCAxNiwgCi0gICAgMjUyLCA4NCwgMTU0LCAxMzcsIDIyMiwgMTQ2LCA3NCwgMTU0LCAxMzcsIDIyMiwgMTQ2LCAyNTQsIDE0OCwgMTU0LCAxMzcsIAotICAgIDIyMiwgMTQ2LCA3NSwgMTU0LCAxMzcsIDIyMiwgMTQ2LCAyNTQsIDEwOSwgMjMyLCA0LCAxNTQsIDEzNywgMjIyLCAxNDYsIAotICAgIDI1NCwgMTA5LCAyMzIsIDUsIDE1NCwgMTM3LCAyMzMsIDEzMCwgMTU0LCAxMzcsIDIzMiwgMSwgMTU0LCAxMzcsIDIzMiwgMiwgCi0gICAgMTU0LCAxMzcsIDIzMiwgOSwgMjQ1LCAxMzcsIDE1NCwgMTM3LCAyMzIsIDksIDIxNywgMTA5LCAxNTQsIDEzNywgMjMyLCA5LCAKLSAgICAyMTYsIDE4NiwgMTU0LCAxMzcsIDIzMiwgOSwgMjUwLCA3MSwgMTU0LCAxMzcsIDIxNywgMTUxLCAxNTQsIDEzNywgMjI5LCAKLSAgICAzNiwgMTU0LCAxMzcsIDIxMywgNjIsIDE1NCwgMTM3LCAyNDQsIDQsIDE1NCwgMjEsIDIxMiwgNzksIDE1NCwgMjEsIDExNiwgCi0gICAgMTU0LCAyMSwgMTA5LCAxNTQsIDIxLCAxNjYsIDE1NCwgMjEsIDE2MywgMTU0LCAyMSwgMTgwLCAxNTQsIDIxLCAxODksIAotICAgIDE1NCwgMjEsIDE5OCwgMTU0LCAyMSwgMTk1LCAxNTQsIDIxLCAyMDAsIDE1NCwgMTM3LCAyNTQsIDIwLCAxNTQsIDEzNywgCi0gICAgMjM0LCAxMTIsIDIzMywgMTEyLCAxLCAyMzQsIDM3LCAyMzMsIDExMiwgMSwgMjM0LCAxMTQsIDIxOCwgMjM1LCAyMzMsIAotICAgIDExMiwgMSwgMjM0LCAxMTQsIDIxOCwgMTMsIDIzMywgMTEyLCAxLCAyMjksIDkwLCAyMzMsIDExMiwgMSwgMjQ5LCAxNzUsIAotICAgIDIzMywgMTEyLCAxLCAyMTksIDI0MywgMjE4LCAxMywgMjMzLCAxMTIsIDEsIDIyNywgMjUzLCAyMzMsIDExMiwgMSwgMjQ3LCAKLSAgICA5OSwgMjMzLCAxMTIsIDEsIDEwOCwgMjMzLCAxMTIsIDEsIDIxNywgMTEwLCAyMTgsIDIzNSwgMjMzLCAxMTIsIDEsIDIxNywgCi0gICAgMTEwLCAyMTgsIDEzLCAyMzMsIDExMiwgMSwgMjI4LCAxODUsIDIzMywgMTEyLCAxLCAyNTEsIDEyOCwgMjMzLCAxMTIsIDEsIAotICAgIDIyNSwgMTUwLCAyMzMsIDExMiwgMSwgMjI1LCAyNTQsIDIxOCwgMjM1LCAyMzMsIDExMiwgMSwgMjQ0LCAxMywgMjE4LCAxMywgCi0gICAgMjMzLCAxMTIsIDEsIDIyNSwgMjU0LCAyMTgsIDEzLCAyMzMsIDExMiwgMSwgMjQ0LCAxMywgMjE4LCAyMzUsIDIzMywgMTEyLCAKLSAgICAxLCAyMzAsIDIzMSwgMjMzLCAxMTIsIDEsIDIxMiwgMjM1LCAyMzMsIDExMiwgMSwgMjMyLCAyMDksIDIzMiwgMjM1LCAyMzMsIAotICAgIDExMiwgMSwgMjMyLCAyMDksIDIzMiwgMTc2LCAyMzMsIDExMiwgMSwgMjEzLCAyMTQsIDIzMywgMTEyLCAxLCAyMTksIDI0MywgCi0gICAgMjE4LCAyMzUsIDIzMywgMTEyLCAxLCAyNDEsIDU1LCAyMTgsIDIzNSwgMjMzLCAxMTIsIDEsIDc1LCAyMzMsIDExMiwgMSwgCi0gICAgMjQxLCA1NSwgMjE4LCAxMywgMjMzLCAxMTIsIDI0NSwgMTIwLCAyMzMsIDExMiwgMzAsIDUsIDYxLCAyMzMsIDExMiwgMzAsIAotICAgIDUsIDIzMiwgOSwgMjM0LCAyMzksIDIzMywgMTEyLCAzMCwgNSwgMjU0LCAyMzIsIDIzMywgMTEyLCAzMCwgNSwgMjU0LCA0NSwgCi0gICAgMjMzLCAxMTIsIDMwLCA1LCA3MiwgMjMzLCAxMTIsIDMwLCA1LCAyMzYsIDI4LCAyMzMsIDExMiwgMzAsIDUsIDIxMywgMTA1LCAKLSAgICAyMzMsIDExMiwgMzAsIDUsIDIxMiwgMTYxLCAyMzMsIDExMiwgMzAsIDUsIDY5LCAyMzMsIDExMiwgMzAsIDUsIDIxNSwgOTIsIAotICAgIDIzMywgMTEyLCAzMCwgNSwgMjMyLCA5LCAyMzQsIDIyLCAyMzMsIDExMiwgMjIxLCA2NSwgNSwgMjMyLCAyMDgsIDIzMywgCi0gICAgMTEyLCAyMjEsIDY1LCA1LCAyMjcsIDI1MywgMjMzLCAxMTIsIDMwLCA1LCA3NCwgMjMzLCAxMTIsIDMwLCA1LCAyNDUsIAotICAgIDE1MiwgMjMzLCAxMTIsIDMwLCA1LCA3NSwgMjMzLCAxMTIsIDMwLCA1LCAyNTMsIDgzLCAyMzMsIDExMiwgMzAsIDUsIDI1NCwgCi0gICAgMTA4LCAyMzMsIDExMiwgMjM0LCAzOCwgMjMzLCAxNTcsIDIzMywgMTEyLCAxNjAsIDIzMiwgOSwgMjQ1LCAxMzcsIDIzMywgCi0gICAgMTEyLCAxNjAsIDIzMiwgOSwgMjE3LCAxMDksIDIzMywgMTEyLCAxNjAsIDIzMiwgOSwgMjE3LCA3MSwgMjMzLCAxMTIsIAotICAgIDE2MCwgMjMyLCA5LCAyNTAsIDE1NSwgMjMzLCAxMTIsIDI1MCwgMTkyLCA3NywgMjMzLCAxMTIsIDIyOSwgNDUsIDIzMywgCi0gICAgMTEyLCAyMSwgMjEyLCA3OSwgMjMzLCAxMTIsIDIxLCAxMTYsIDIzMywgMTEyLCAyMSwgMTA5LCAyMzMsIDExMiwgMjEsIAotICAgIDE2NiwgMjMzLCAxMTIsIDIxLCAxNjMsIDIzMywgMTEyLCAyMSwgMTgwLCAyMzMsIDExMiwgMjEsIDE4OSwgMjMzLCAxMTIsIAotICAgIDIxLCAxOTgsIDIzMywgMTEyLCAyMSwgMTk1LCAyMzMsIDExMiwgMjEsIDIwMCwgMjMzLCAxMTIsIDI0MSwgNTUsIDIyOCwgCi0gICAgMTg1LCAyMzMsIDExMiwgMjQxLCA1NSwgMjMwLCAyMzEsIDYwLCA0LCAyMjcsIDcwLCA2MCwgMTUyLCAyNDIsIDk0LCAyMTIsIAotICAgIDI0NywgMjMxLCA1OSwgMjE2LCAxNDcsIDYxLCA2MCwgMTUyLCAyNDIsIDk0LCAyMTIsIDI0NywgMjMxLCA1OSwgMjU1LCA2MiwgCi0gICAgMjIzLCAxMTcsIDI1MSwgMjUzLCAxODgsIDYwLCAxNTIsIDI0MiwgOTQsIDIxMiwgMjQ3LCAyMzEsIDU5LCAyNTUsIDYyLCAKLSAgICAyNDIsIDk0LCAyMTYsIDEzMSwgMTg4LCA2MCwgMTUyLCA3MCwgMjEyLCAyNDcsIDIzMSwgNTksIDIzMSwgMTU4LCAxODgsIAotICAgIDYwLCAxNTIsIDI0OSwgMTg5LCAyMTIsIDI0NywgMjMxLCA1OSwgMjIxLCAzMCwgMTg4LCA2MCwgMTUyLCAyNTAsIDE3MSwgCi0gICAgMjEyLCAyNDcsIDIzMSwgNTksIDIyNSwgMjQ0LCAyMjEsIDE4LCAxODgsIDYwLCAxNTIsIDIxMiwgMjQ3LCAyMzEsIDU5LCAKLSAgICAyMTYsIDEzMSwgMjIxLCAxOCwgMTg4LCA2MCwgMTUyLCAyMjIsIDEyNiwgMjIxLCAxNywgNjAsIDE1MiwgMjUxLCA1NywgCi0gICAgMjEyLCAyNDcsIDIzMSwgNTgsIDYwLCAxNTIsIDI1MSwgMTQ2LCAyMjAsIDE4MywgMjEyLCAyNDcsIDIzMSwgNTgsIDYwLCAKLSAgICAxNTIsIDIzNSwgMTk0LCAyMTYsIDEzMCwgNjAsIDE1MiwgMjQ4LCAxMiwgMjE2LCAxMzEsIDI1MSwgNTYsIDYwLCAxNTIsIAotICAgIDIyMSwgMTcsIDYwLCAxNTIsIDIyOCwgMiwgMjIxLCAxNywgNjAsIDE1MiwgMjE2LCAxMzEsIDIyMSwgMTcsIDYwLCAxNTIsIAotICAgIDIyOCwgMiwgMjE2LCAxMzEsIDIyMSwgMTcsIDYwLCAxNTIsIDIyMywgMTMzLCAyNTAsIDU5LCAyMTksIDE2OCwgMjIxLCAxNywgCi0gICAgNjAsIDE1MiwgMjIzLCAxOTUsIDI0MiwgMTIyLCAyMjEsIDE3LCA2MCwgMTUyLCAyNTAsIDE3MSwgMjU1LCA2NiwgMjIzLCAKLSAgICA1NSwgMjMxLCAxNTcsIDE4NCwgMjUwLCAxOTUsIDYwLCAxNTIsIDI0MiwgOTQsIDIxNiwgMTMwLCA2MCwgMjMyLCAxOTcsIDUsIAotICAgIDI1MCwgOTAsIDIyMywgNTQsIDYwLCAyMzIsIDE5NywgNSwgMjMzLCAyMywgMjIzLCA1NCwgNjAsIDI1MywgMTI4LCA1LCAKLSAgICAyMjEsIDI3LCAyNDMsIDQxLCAyNTUsIDY3LCAyMjMsIDU0LCA2MCwgMjUzLCAxMjgsIDUsIDI1NSwgNjQsIDE5MywgNjAsIAotICAgIDI1MywgMTI4LCA1LCAyMjIsIDEwMSwgMjE2LCAxMjYsIDYwLCA1LCAyMjQsIDIzLCAyNDcsIDExMSwgMjQzLCA0MCwgNjAsIAotICAgIDUsIDIyNCwgMjMsIDI0NywgMTExLCAyNDIsIDE1MiwgNjAsIDUsIDIyNCwgMjMsIDI0NywgMTExLCAyNDIsIDk1LCA2MCwgNSwgCi0gICAgMjI0LCAyMywgMjMwLCAzNywgMjQzLCA0MCwgNjAsIDUsIDIyNCwgMjMsIDIzMCwgMzcsIDI0MiwgMTUyLCA2MCwgNSwgMjI0LCAKLSAgICAyMywgMjQ3LCAxMTEsIDIyNCwgMjMsIDIzMCwgMzYsIDYwLCAyMSwgMjEyLCA3OSwgNjAsIDIxLCAxMTYsIDYwLCAyMSwgCi0gICAgMTA5LCA2MCwgMjEsIDE2NiwgNjAsIDIxLCAxNjMsIDYwLCAyMSwgMTgwLCA2MCwgMjEsIDE4OSwgNjAsIDIxLCAxOTgsIDYwLCAKLSAgICAyMSwgMTk1LCA2MCwgMjEsIDIwMCwgNjAsIDIxLCAxNTEsIDExNiwgNjAsIDIxLCAxNTEsIDEwOSwgNjAsIDIxLCAxNTEsIAotICAgIDE2NiwgNjAsIDIxLCAxNTEsIDE2MywgNjAsIDIxLCAxNTEsIDE4MCwgNjAsIDIxLCAxNTEsIDE4OSwgNjAsIDIxLCAxNTEsIAotICAgIDE5OCwgNjAsIDIxLCAxNTEsIDE5NSwgNjAsIDIxLCAxNTEsIDIwMCwgNjAsIDIxLCAxNTEsIDIxMiwgNzksIDYwLCAxNTIsIAotICAgIDI1MSwgNTksIDIyMywgNTQsIDYwLCAxNTIsIDIyOSwgMTUxLCAyNTAsIDI1NCwgMjI4LCAxMSwgMjEyLCAxOCwgNjAsIDE1MiwgCi0gICAgMjUwLCAxNzEsIDI1NSwgNjYsIDIyMywgNTUsIDI1MCwgMjU1LCAyMzEsIDE1LCAyNTAsIDE5NSwgNjAsIDE1MiwgMjI5LCAKLSAgICAxNTEsIDI1MCwgMjU0LCAyMjEsIDI4LCAyMjMsIDU0LCA2MCwgMTUyLCAyNTAsIDY4LCAyMzEsIDU4LCA2MCwgMTUyLCAyMTYsIAotICAgIDE0MiwgMjU1LCA2MywgNjAsIDE1MiwgMjQyLCA4MSwgMjIzLCA1NSwgMjQyLCA0NCwgNjAsIDE1MiwgMjQyLCA4MSwgMjIzLCAKLSAgICA1NSwgMjQyLCA1MCwgNjAsIDE1MiwgMjU0LCAyNSwgMjM0LCAxMjksIDI0MiwgNDQsIDYwLCAxNTIsIDI1NCwgMjUsIDIzNCwgCi0gICAgMTI5LCAyNDIsIDUwLCA2MCwgNSwgMjEzLCA1NSwgMjE2LCAxMjksIDYwLCA1LCAyMzEsIDIzMCwgMjE2LCAxMjksIDYwLCAxLCAKLSAgICAxODEsIDYwLCAxLCAyMzQsIDEzOCwgNjAsIDEsIDI0MywgMTEwLCA2MCwgMSwgMjQyLCAyMjUsIDYwLCAxLCAyMjksIDE1OSwgCi0gICAgNjAsIDEsIDI1MCwgMjE5LCA2MCwgMSwgMjUwLCA5MiwgNjAsIDEsIDIzNSwgMTM5LCA2MCwgMSwgMjI4LCAyMywgNjAsIDEsIAotICAgIDIxNiwgMTE1LCA2MCwgMSwgMjE2LCAxMDUsIDYwLCAxLCAyNDgsIDg2LCA2MCwgMSwgMjQ4LCA3MCwgNjAsIDEsIDIyOCwgCi0gICAgMTk4LCA2MCwgMSwgMjE4LCA1MiwgNjAsIDEsIDIxNywgMTYxLCA2MCwgMSwgMjQ4LCAxNjQsIDYwLCAxLCAyNDcsIDIzMiwgCi0gICAgNjAsIDEsIDIwNSwgNjAsIDEsIDE5MywgNjAsIDEsIDIyNiwgMjMsIDYwLCAxLCAyNTIsIDEwNywgNjAsIDEsIDI1MSwgMTk1LCAKLSAgICA2MCwgMSwgMTg4LCA2MCwgMSwgMjE2LCAxNDEsIDYwLCAxLCAyMTYsIDEzMywgNjAsIDEsIDI0NSwgMjQ5LCA2MCwgMSwgCi0gICAgMjQ1LCAyNDQsIDYwLCAxLCAyMTQsIDQ5LCA2MCwgMSwgMjEyLCA3NSwgNjAsIDEsIDIxMiwgMTA5LCA2MCwgMSwgMjU1LCAKLSAgICA2OSwgNjAsIDEsIDE4NiwgNjAsIDEsIDIwMywgNjAsIDEsIDIzMywgMTU3LCA2MCwgMSwgMjIxLCAyNCwgNjAsIDEsIDIxOSwgCi0gICAgMTU3LCA2MCwgMSwgMjIyLCAyMDIsIDYwLCAxLCAxNTksIDYwLCAxLCA2MSwgNjAsIDEsIDIzMywgMjQxLCA2MCwgMSwgMjQ0LCAKLSAgICA0NiwgMjAzLCA2MCwgMSwgMjM0LCA1NSwgNjAsIDEsIDIyMywgODEsIDYwLCAzMCwgNSwgMjU0LCAyMzIsIDYwLCAzMCwgNSwgCi0gICAgNzIsIDYwLCAzMCwgNSwgMjM2LCAyOCwgNjAsIDMwLCA1LCA2OSwgNjAsIDMwLCA1LCAyMTUsIDkyLCA2MCwgMzAsIDUsIAotICAgIDE2MSwgMTQ5LCA2MCwgMzAsIDUsIDE2MSwgMjIzLCA4MiwgNjAsIDMwLCA1LCAxNjEsIDE1MCwgNjAsIDMwLCA1LCAxNjEsIAotICAgIDIzMiwgMjE0LCA2MCwgMzAsIDUsIDc0LCA2MCwgMzAsIDUsIDI0NSwgMTY1LCA2MCwgMzAsIDUsIDc1LCA2MCwgMzAsIDUsIAotICAgIDIyNywgNDksIDYwLCA1LCAyMjMsIDExOCwgMjE5LCAyOCwgMjI5LCAxNjAsIDIyMywgMTEyLCA2MCwgNSwgMjIzLCAxMTcsIAotICAgIDI1MSwgMjUyLCA2MCwgMzAsIDUsIDIyMywgMjAyLCA3MiwgNjAsIDMwLCA1LCAyMjMsIDIwMiwgMjM2LCAyOCwgNjAsIDUsIAotICAgIDIyOCwgMTEsIDIxMiwgMTksIDIzMCwgNDQsIDI0OCwgMTY0LCA2MCwgNSwgMjE5LCAyNTUsIDIzMywgODQsIDYwLCAxNTIsIAotICAgIDI0MiwgMTEsIDYwLCAxNTIsIDIyNiwgMTg0LCA2MCwgNSwgMjMzLCA4NywgMjIzLCA1NCwgNjAsIDUsIDIxMywgNTksIDIyMywgCi0gICAgNTQsIDYwLCA1LCAyMzMsIDg4LCAyMTYsIDE0MiwgMjUwLCAxOTUsIDYwLCA1LCAyMzEsIDE1OSwgMjUwLCAxOTUsIDYwLCA1LCAKLSAgICAyNDIsIDk3LCAyNTAsIDE5NiwgMjIzLCAxOTMsIDYwLCA1LCAyNDIsIDk3LCAyMzEsIDE1MCwgMjIzLCAxOTMsIDYwLCA1LCAKLSAgICAyMzUsIDE5MSwgMjMxLCAxNTksIDI1MCwgMTk1LCA2MCwgMjE5LCAxOCwgNSwgMjMzLCA4OCwgMjE2LCAxNDIsIDI1MCwgCi0gICAgMTk1LCA2MCwgMjE5LCAxOCwgNSwgMjMxLCAxNTksIDI1MCwgMTk1LCA2MCwgMjE5LCAxOCwgNSwgMjM1LCAxOTEsIDIzMSwgCi0gICAgMTU5LCAyNTAsIDE5NSwgNjAsIDIxOSwgMTgsIDEsIDE4MSwgNjAsIDIxOSwgMTgsIDEsIDIzNCwgMTM4LCA2MCwgMjE5LCAKLSAgICAxOCwgMSwgMjQzLCAxMTAsIDYwLCAyMTksIDE4LCAxLCAyNDIsIDIyNSwgNjAsIDIxOSwgMTgsIDEsIDIyOSwgMTU5LCA2MCwgCi0gICAgMjE5LCAxOCwgMSwgMjUwLCAyMTksIDYwLCAyMTksIDE4LCAxLCAyNTAsIDkyLCA2MCwgMjE5LCAxOCwgMSwgMjM1LCAxMzksIAotICAgIDYwLCAyMTksIDE4LCAxLCAyMjgsIDIzLCA2MCwgMjE5LCAxOCwgMSwgMjE2LCAxMTUsIDYwLCAyMTksIDE4LCAxLCAyMTYsIAotICAgIDEwNSwgNjAsIDIxOSwgMTgsIDEsIDI0OCwgODYsIDYwLCAyMTksIDE4LCAxLCAyNDgsIDcwLCA2MCwgMjE5LCAxOCwgMSwgCi0gICAgMjI4LCAxOTgsIDYwLCAyMTksIDE4LCAxLCAyMTgsIDUyLCA2MCwgMjE5LCAxOCwgMSwgMjE3LCAxNjEsIDYwLCAyMTksIDE4LCAKLSAgICAxLCAyNDgsIDE2NCwgNjAsIDIxOSwgMTgsIDEsIDI0NywgMjMyLCA2MCwgMjE5LCAxOCwgMSwgMjA1LCA2MCwgMjE5LCAxOCwgCi0gICAgMSwgMTkzLCA2MCwgMjE5LCAxOCwgMSwgMjI2LCAyMywgNjAsIDIxOSwgMTgsIDEsIDI1MiwgMTA3LCA2MCwgMjE5LCAxOCwgCi0gICAgMSwgMjUxLCAxOTUsIDYwLCAyMTksIDE4LCAxLCAxODgsIDYwLCAyMTksIDE4LCAxLCAyMTYsIDE0MSwgNjAsIDIxOSwgMTgsIAotICAgIDEsIDIxNiwgMTMzLCA2MCwgMjE5LCAxOCwgMSwgMjQ1LCAyNDksIDYwLCAyMTksIDE4LCAxLCAyNDUsIDI0NCwgNjAsIDIxOSwgCi0gICAgMTgsIDEsIDIxNCwgNDksIDYwLCAyMTksIDE4LCAxLCAyMTIsIDc1LCA2MCwgMjE5LCAxOCwgMSwgMjEyLCAxMDksIDYwLCAKLSAgICAyMTksIDE4LCAxLCAyNTUsIDY5LCA2MCwgMjE5LCAxOCwgMSwgMTg2LCA2MCwgMjE5LCAxOCwgMSwgMjAzLCA2MCwgMjE5LCAKLSAgICAxOCwgMSwgMjMzLCAxNTcsIDYwLCAyMTksIDE4LCAxLCAyMjEsIDI0LCA2MCwgMjE5LCAxOCwgMSwgMjE5LCAxNTcsIDYwLCAKLSAgICAyMTksIDE4LCAxLCAyMjIsIDIwMiwgNjAsIDIxOSwgMTgsIDEsIDE1OSwgNjAsIDIxOSwgMTgsIDEsIDYxLCA2MCwgMjE5LCAKLSAgICAxOCwgMSwgMjMzLCAyNDEsIDYwLCAyMTksIDE4LCAxLCAyNDQsIDQ2LCAyMTQsIDQ5LCA2MCwgMjE5LCAxOCwgMSwgMjQ0LCAKLSAgICA0NiwgMTg2LCA2MCwgMjE5LCAxOCwgMSwgMjQ0LCA0NiwgMjAzLCA2MCwgMjMzLCAyMzksIDIyMywgNTIsIDIzNCwgMTM4LCAKLSAgICA2MCwgMjMzLCAyMzksIDIyMywgNTIsIDIzNCwgMTM5LCAyNTAsIDI1NSwgMjMxLCAxNSwgMjUwLCAxOTUsIDYwLCAyNTAsIAotICAgIDE4NCwgNSwgMTA3LCAyNTEsIDI0NiwgNjAsIDI1MCwgMTg0LCA1LCAxNzcsIDI1MSwgMjQ2LCA2MCwgMjUwLCAxODQsIDUsIAotICAgIDI1MCwgMTg1LCAyMTcsIDIyOCwgNjAsIDI1MCwgMTg0LCA1LCAyMjIsIDEyNSwgMjU1LCA2OCwgNjAsIDE2LCAyNDYsIDQ2LCAKLSAgICAyNTEsIDU0LCA2MCwgMTYsIDIyNCwgMjIsIDIyMywgMTE5LCA2MCwgMTYsIDIyNiwgMjAyLCAyNDMsIDM5LCA2MCwgMTYsIAotICAgIDIyNCwgMjIsIDIyMywgMTIwLCAyMjMsIDE5NSwgMjQyLCAxMjEsIDYwLCAxNiwgMjI1LCAyNDQsIDE5MywgNjAsIDE2LCAKLSAgICAyMjgsIDE3MCwgMjUxLCA1NCwgNjAsIDE2LCAyMjgsIDE3MCwgMjUxLCA1NSwgMjI4LCAyLCAyNTUsIDY1LCA2MCwgMTYsIAotICAgIDIyOCwgMTcwLCAyNTEsIDU1LCAyNDIsIDk2LCAyNTUsIDY1LCA2MCwgMTYsIDIyOCwgMTcwLCAyNTEsIDU1LCAyNTAsIDI1NSwgCi0gICAgMjU1LCA2NSwgNjAsIDUsIDIyNCwgMjMsIDIzMCwgMzcsIDIyNCwgMjMsIDI0NywgMTEwLCA2MCwgNSwgMjI0LCAyMywgMjMwLCAKLSAgICAzNywgMjQyLCA5NSwgNjAsIDE1MiwgMjUxLCA1OCwgMjIwLCAxODMsIDI0MiwgMTkxLCAyMzEsIDU5LCAyMjMsIDE5NCwgNjAsIAotICAgIDE1MiwgMjMwLCAyMzMsIDIxMiwgMjQ3LCAyNDIsIDE5MSwgMjMxLCA1OSwgMjIzLCAxOTQsIDYwLCAxNTIsIDIyOCwgMiwgCi0gICAgMjE2LCAxMzAsIDYwLCAxNTIsIDcwLCAyNTEsIDc5LCAyMjMsIDExNCwgMjEyLCAyNDcsIDIzMSwgNTksIDIzMSwgMTU4LCAKLSAgICAxODgsIDYwLCAxNTIsIDI0OSwgMTg5LCAyNTEsIDc5LCAyMjMsIDExNCwgMjEyLCAyNDcsIDIzMSwgNTksIDIyMSwgMzAsIAotICAgIDE4OCwgMjIzLCAxNDcsIDIxOCwgMjAwLCA1MiwgMjMzLCA2OSwgMjE4LCAyMDAsIDUyLCAyMjMsIDE0NywgMjE4LCAyMDAsIAotICAgIDUsIDIsIDI0NywgNzIsIDIzMywgNjksIDIxOCwgMjAwLCA1LCAyLCAyNDcsIDcyLCA2MCwgMTUyLCAyMzMsIDc5LCAyMzEsIAotICAgIDE2MCwgMjIzLCA1NCwgNjAsIDE1MiwgMjE2LCAyMDcsIDIzMSwgMTYwLCAyMjMsIDU0LCA2NCwgMSwgMTgxLCA2NCwgMSwgCi0gICAgMjM0LCAxMzgsIDY0LCAxLCAyNDMsIDExMCwgNjQsIDEsIDI0MiwgMjI1LCA2NCwgMSwgMjI5LCAxNTksIDY0LCAxLCAyNTAsIAotICAgIDIxOSwgNjQsIDEsIDI1MCwgOTIsIDY0LCAxLCAyMzUsIDEzOSwgNjQsIDEsIDIzNSwgMTE1LCA2NCwgMSwgMjI4LCAyMywgCi0gICAgNjQsIDEsIDIyOCwgMTg3LCA2NCwgMSwgMjE2LCAxMTUsIDY0LCAxLCAyMTYsIDEwNSwgNjQsIDEsIDI0OCwgODYsIDY0LCAxLCAKLSAgICAyNDgsIDcwLCA2NCwgMSwgMjI4LCAxOTgsIDY0LCAxLCAyMTgsIDUyLCA2NCwgMSwgMjE3LCAxNjEsIDY0LCAxLCAyNDgsIAotICAgIDE2NCwgNjQsIDEsIDI0NywgMjMyLCA2NCwgMSwgMjA1LCA2NCwgMSwgMTkzLCA2NCwgMSwgMjI2LCAyMywgNjQsIDEsIDI1MiwgCi0gICAgMTA3LCA2NCwgMSwgMjUxLCAxOTUsIDY0LCAxLCAxODgsIDY0LCAxLCAxODYsIDY0LCAxLCAyMDMsIDY0LCAxLCAyMzMsIAotICAgIDE1NywgNjQsIDEsIDIxNCwgNDksIDY0LCAxLCAyMjIsIDIwMiwgNjQsIDEsIDE1OSwgNjQsIDEsIDIzMiwgMjEzLCA2NCwgMSwgCi0gICAgNjEsIDY0LCAxLCAyMjEsIDksIDYxLCA2NCwgMSwgNzIsIDY0LCAxLCAyMzYsIDI4LCA2NCwgMSwgNjksIDY0LCAxLCAyMTUsIAotICAgIDkyLCA2NCwgMSwgNzQsIDY0LCAxLCAyMzAsIDIyMSwgNzQsIDY0LCAxLCA3NSwgNjQsIDEsIDI1MywgMTA4LCA2NCwgMzAsIAotICAgIDUsIDIxOCwgMTUsIDI1NCwgMjMyLCA2NCwgMzAsIDUsIDI1NCwgMjMyLCA2NCwgMzAsIDUsIDcyLCA2NCwgMzAsIDUsIDIzNiwgCi0gICAgMjgsIDY0LCAzMCwgNSwgNjksIDY0LCAzMCwgNSwgMjE1LCA5MiwgNjQsIDMwLCA1LCA3NCwgNjQsIDMwLCA1LCAyNTQsIAotICAgIDEwOCwgNjQsIDMwLCA1LCAyMzAsIDIyMSwgMjM2LCAyOCwgNjQsIDMwLCA1LCAyMzAsIDIyMSwgNzUsIDY0LCAzMCwgNSwgCi0gICAgMTkxLCA0OSwgNjQsIDUsIDI1MywgMjQyLCA2NCwgNSwgNjIsIDU1LCA2NCwgNSwgMjE0LCAxMjgsIDY0LCA1LCAyMTQsIAotICAgIDEzMywgNjQsIDUsIDI1MywgMTUwLCA2NCwgMjQ5LCAxMzMsIDUsIDEzOCwgMTg2LCA2NCwgMjQ5LCAxMzMsIDUsIDEzOCwgCi0gICAgMjAzLCA2NCwgMjQ5LCAxMzMsIDUsIDEzOCwgMjE0LCA0OSwgNjQsIDI0OSwgMTMzLCA1LCAxMzgsIDE1OSwgNjQsIDEsIAotICAgIDI0MiwgMTA5LCAyMjIsIDIwMiwgNjQsIDIxLCAyMTIsIDc5LCA2NCwgMjEsIDExNiwgNjQsIDIxLCAxMDksIDY0LCAyMSwgCi0gICAgMTY2LCA2NCwgMjEsIDE2MywgNjQsIDIxLCAxODAsIDY0LCAyMSwgMTg5LCA2NCwgMjEsIDE5OCwgNjQsIDIxLCAxOTUsIDY0LCAKLSAgICAyMSwgMjAwLCA2NCwgNSwgMjMyLCAyMjEsIDIyMiwgOTEsIDY0LCA1LCAyMjIsIDkxLCA2NCwgMTYsIDIzMiwgMjA1LCA2NCwgCi0gICAgMTYsIDI0OSwgMTUyLCA2NCwgMTYsIDI1NCwgMTI1LCA2NCwgMTYsIDI0MywgMjQsIDY0LCAxLCAyMjEsIDI0LCA2NCwgMSwgCi0gICAgMjE5LCAxNTcsIDY0LCAxLCAxNjEsIDE0OSwgNjQsIDEsIDE2MSwgMjIzLCA4MiwgNjQsIDEsIDE2MSwgMTUwLCA2NCwgMSwgCi0gICAgMTYxLCAyMzIsIDIxNCwgNjQsIDMwLCA1LCAxNjEsIDE0OSwgNjQsIDMwLCA1LCAxNjEsIDIyMywgODIsIDY0LCAzMCwgNSwgCi0gICAgMTYxLCAxNTAsIDY0LCAzMCwgNSwgMTYxLCAyMzIsIDIxNCwgNjQsIDEsIDIzMCwgMjIxLCAyMjksIDE1OSwgNjQsIDEsIAotICAgIDIzMCwgMjIxLCAyMzUsIDExNSwgNjQsIDEsIDIzMCwgMjIxLCAyNTIsIDMxLCA2NCwgMSwgMjMwLCAyMjEsIDI1MiwgMjYsIAotICAgIDY0LCAyNDksIDEzMywgNSwgMjMwLCAyMjEsIDEzOCwgMjA1LCA2NCwgMjQ5LCAxMzMsIDUsIDIzMCwgMjIxLCAxMzgsIDE4OCwgCi0gICAgNjQsIDI0OSwgMTMzLCA1LCAyMzAsIDIyMSwgMTM4LCAyMzMsIDE1NywgNjQsIDEsIDIyMSwgMjksIDIzNCwgMjE4LCAyMjEsIAotICAgIDI0LCA2NCwgMzAsIDUsIDIyMSwgMjksIDIzNCwgMjE4LCAyNDUsIDIyLCA2NCwgMTYwLCAxNTIsIDIyMSwgMjksIDIzNCwgCi0gICAgMjE4LCAyNDEsIDIzMCwgNjQsIDE2MCwgMTUyLCAyMjEsIDI5LCAyMzQsIDIxOCwgMjM0LCAxODksIDIyNSwgMjUzLCA2NCwgCi0gICAgMSwgMjEzLCAyNDgsIDIyNCwgMjUyLCAyMzQsIDIxOCwgMjE3LCAxNjEsIDY0LCAxLCAyMTMsIDI0OCwgMjI0LCAyNTIsIAotICAgIDIzNCwgMjE4LCAyMjUsIDIsIDY0LCAzMCwgNSwgMjEzLCAyNDgsIDIyNCwgMjUyLCAyMzQsIDIxOCwgMjQ1LCAyMiwgNjQsIAotICAgIDMwLCA1LCAyMTMsIDI0OCwgMjI0LCAyNTIsIDIzNCwgMjE4LCAyMTUsIDE4MywgNjQsIDUsIDIxMywgMjQ4LCAyMjQsIDI1MiwgCi0gICAgMjM0LCAyMTgsIDIxNiwgMjQwLCA2NCwgNSwgMjEzLCAyNDgsIDIyNCwgMjUyLCAyMzQsIDIxOCwgMjE2LCAyMzksIDY0LCA1LCAKLSAgICAyMTMsIDI0OCwgMjI0LCAyNTIsIDIzNCwgMjE4LCAyMTYsIDIzOCwgNjQsIDUsIDIxMywgMjQ4LCAyMjQsIDI1MiwgMjM0LCAKLSAgICAyMTgsIDIxNiwgMjM3LCA2NCwgNSwgMjEzLCAyNDgsIDIyNCwgMjUyLCAyMzQsIDIxOCwgMjE2LCAyMzYsIDY0LCAxLCAyNDUsIAotICAgIDE3NSwgMjI0LCAyNTIsIDIzNCwgMjE4LCAyMjgsIDE5OCwgNjQsIDEsIDI0NSwgMTc1LCAyMjQsIDI1MiwgMjM0LCAyMTgsIAotICAgIDIxMiwgMTY4LCA2NCwgMSwgMjQ1LCAxNzUsIDIyNCwgMjUyLCAyMzQsIDIxOCwgMjQyLCAxOTMsIDY0LCAzMCwgNSwgMjQzLCAKLSAgICAzNSwgMjM0LCAyMTgsIDcyLCA2NCwgMzAsIDUsIDIzNCwgMTk0LCAyMjcsIDk5LCA2NCwgMzAsIDUsIDIzNCwgMTk0LCA2OSwgCi0gICAgNjQsIDMwLCA1LCAyMzQsIDE5NCwgMjQ1LCAxNjUsIDY0LCAxLCAyMjEsIDksIDE4MSwgNjQsIDEsIDIyMSwgOSwgMjM0LCAKLSAgICAxMzgsIDY0LCAxLCAyMjEsIDksIDI0MywgMTEwLCA2NCwgMSwgMjIxLCA5LCAyNTAsIDIxOSwgNjQsIDEsIDIyMSwgOSwgCi0gICAgMjEyLCAxMDksIDY0LCAxLCAyMjEsIDksIDIyOCwgMjMsIDY0LCAxLCAyMjEsIDksIDI0OCwgMTY0LCA2NCwgMSwgMjIxLCA5LCAKLSAgICAyMDUsIDY0LCAxLCAyMjEsIDksIDIyNiwgMjMsIDY0LCAxLCAyMjEsIDksIDI0NCwgMTY0LCA2NCwgMSwgMjIxLCA5LCAyNTIsIAotICAgIDEwNywgNjQsIDEsIDIyMSwgOSwgMjE3LCAxNjEsIDY0LCAxLCAyMjEsIDksIDE1OSwgNjQsIDI0OSwgMTMzLCA1LCAyMjEsIAotICAgIDksIDEzOCwgMjE0LCA0OSwgNjQsIDMwLCA1LCAyMjEsIDksIDI1NCwgMjMyLCA2NCwgMzAsIDUsIDIyMSwgOSwgNzQsIDY0LCAKLSAgICAzMCwgNSwgMjIxLCA5LCAxOTEsIDQ5LCA2NCwgMzAsIDUsIDIyMSwgOSwgNDAsIDIxMywgMTA1LCA2NCwgNSwgMjIxLCA5LCAKLSAgICAyMTYsIDIzOSwgNjQsIDUsIDIyMSwgOSwgMjE2LCAyMzgsIDY0LCA1LCAyMjEsIDksIDIxNiwgMjM2LCA2NCwgNSwgMjIxLCAKLSAgICA5LCAyMTYsIDIzNSwgNjQsIDUsIDIyMSwgOSwgMjQ5LCA5MSwgMjE2LCAyMzksIDY0LCA1LCAyMjEsIDksIDI0OSwgOTEsIAotICAgIDIxNiwgMjM4LCA2NCwgNSwgMjIxLCA5LCAyNDksIDkxLCAyNDUsIDExMSwgMjE2LCAyNDEsIDY0LCAxLCAyMjMsIDM5LCAKLSAgICAyMjYsIDE5MCwgMjQ0LCAxNjQsIDY0LCA1LCAyMjMsIDM5LCAyMjYsIDE5MCwgMjE2LCAyMzYsIDY0LCAyMjEsIDksIDIxLCAKLSAgICAyMTIsIDc5LCA2NCwgMjIxLCA5LCAyMSwgMTE2LCA2NCwgMjIxLCA5LCAyMSwgMTA5LCA2NCwgMjIxLCA5LCAyMSwgMTY2LCAKLSAgICA2NCwgMjIxLCA5LCAyMSwgMTYzLCA2NCwgMjIxLCA5LCAyMSwgMTgwLCA2NCwgMjIxLCA5LCAyMSwgMTg5LCA2NCwgMjIxLCAKLSAgICA5LCAyMSwgMTk4LCA2NCwgMjIxLCA5LCAyMSwgMTk1LCA2NCwgMjIxLCA5LCAyMSwgMjAwLCA2NCwgNSwgMjM0LCAxMzIsIAotICAgIDIxNiwgMjQwLCA2NCwgNSwgMjM0LCAxMzIsIDIxNiwgMjM4LCA2NCwgMzAsIDUsIDI1NCwgOTgsIDYxLCA2NCwgMzAsIDUsIAotICAgIDI1NCwgOTgsIDI1NCwgMTA4LCA2NCwgMTYsIDIyMSwgOSwgMTE2LCA2NCwgMTYsIDIyMSwgOSwgMjQ0LCAyNTMsIDEwMCwgNiwgCi0gICAgMSwgMjU0LCAzMiwgMTAwLCA2LCAxLCAyNTIsIDcxLCAxMDAsIDYsIDEsIDI0MywgODIsIDEwMCwgNiwgMSwgMjQ3LCA4MiwgCi0gICAgMTAwLCA2LCAxLCAyNDUsIDEwOCwgMTAwLCA2LCAxLCAyMTQsIDE0MSwgMTAwLCA2LCAxLCAyMTIsIDgyLCAxMDAsIDYsIDEsIAotICAgIDIxOCwgMTEsIDEwMCwgNiwgMSwgMjM1LCAyNTEsIDEwMCwgNiwgMSwgMjM0LCAyMzksIDEwMCwgNiwgMSwgMjMzLCAxMDQsIAotICAgIDEwMCwgNiwgMSwgMjMxLCAyNDgsIDEwMCwgNiwgMSwgMjMwLCAxNSwgMTAwLCA2LCAxLCAyMjcsIDYyLCAxMDAsIDYsIDEsIAotICAgIDIyNiwgMTQ1LCAxMDAsIDYsIDEsIDIxMiwgNzEsIDEwMCwgNiwgMSwgMjI0LCA2MSwgMTAwLCA2LCAxLCAyMjIsIDE1OSwgCi0gICAgMTAwLCA2LCAxLCAyMTgsIDEsIDEwMCwgNiwgMSwgMjE1LCAxNjAsIDEwMCwgNiwgMSwgMjI2LCAxNiwgMTAwLCA2LCAxLCAKLSAgICAyMzQsIDEyNywgMTAwLCA2LCAxLCAyNDIsIDIxNywgMTAwLCA2LCAxLCAyMjQsIDIxNywgMTAwLCA2LCAxLCAyMjAsIDIwMCwgCi0gICAgMTAwLCA2LCAxLCAyNTAsIDM0LCAxMDAsIDYsIDEsIDI1MCwgMTk1LCAxMDAsIDYsIDEsIDIzNSwgMTAzLCAxMDAsIDYsIDEsIAotICAgIDI0OSwgMjMzLCAxMDAsIDYsIDEsIDI1MCwgNzksIDEwMCwgNiwgMSwgMjEzLCAxNTEsIDEwMCwgNiwgMSwgMjM1LCAxMTMsIAotICAgIDEwMCwgNiwgMSwgMjQyLCAyNCwgMTAwLCA2LCAxLCAyNDEsIDIyMiwgMTAwLCA2LCAxLCAyNDEsIDE2MCwgMTAwLCA2LCAxLCAKLSAgICAyMTQsIDYsIDEwMCwgNiwgMSwgMjQxLCAyNDMsIDEwMCwgNiwgMSwgMjQxLCA1MSwgMTAwLCAxLCAyNTQsIDMyLCAxMDAsIDEsIAotICAgIDI1MiwgNzEsIDEwMCwgMSwgMjQzLCA4MiwgMTAwLCAxLCAyNDcsIDgyLCAxMDAsIDEsIDI0NSwgMTA4LCAxMDAsIDEsIDIxNCwgCi0gICAgMTQxLCAxMDAsIDEsIDIxMiwgODIsIDEwMCwgMSwgMjE4LCAxMSwgMTAwLCAxLCAyMzUsIDI1MSwgMTAwLCAxLCAyMzQsIAotICAgIDIzOSwgMTAwLCAxLCAyMzMsIDEwNCwgMTAwLCAxLCAyMzEsIDI0OCwgMTAwLCAxLCAyMzAsIDE1LCAxMDAsIDEsIDIyNywgCi0gICAgNjIsIDEwMCwgMSwgMjI2LCAxNDUsIDEwMCwgMSwgMjEyLCA3MSwgMTAwLCAxLCAyMjQsIDYxLCAxMDAsIDEsIDIyMiwgMTU5LCAKLSAgICAxMDAsIDEsIDIxOCwgMSwgMTAwLCAxLCAyMTUsIDE2MCwgMTAwLCAxLCAyMjYsIDE2LCAxMDAsIDEsIDIzNCwgMTI3LCAxMDAsIAotICAgIDEsIDI0MiwgMjE3LCAxMDAsIDEsIDIyNCwgMjE3LCAxMDAsIDEsIDIyMCwgMjAwLCAxMDAsIDEsIDI1MCwgMzQsIDEwMCwgMSwgCi0gICAgMjUwLCAxOTUsIDEwMCwgMSwgMjM1LCAxMDMsIDEwMCwgMSwgMjQ5LCAyMzMsIDEwMCwgMSwgMjUwLCA3OSwgMTAwLCAxLCAKLSAgICAyMTMsIDE1MSwgMTAwLCAxLCAyMzUsIDExMywgMTAwLCAxLCAyNDIsIDI0LCAxMDAsIDEsIDI0MSwgMjIyLCAxMDAsIDEsIAotICAgIDI0MSwgMTYwLCAxMDAsIDEsIDIxNCwgNiwgMTAwLCAxLCAyNDEsIDI0MywgMTAwLCAxLCAyNDEsIDUxLCAxMDAsIDEsIDI0NCwgCi0gICAgOTAsIDEwMCwgMSwgMjEyLCAyMzcsIDEwMCwgMSwgMjQ1LCAxMjIsIDEwMCwgMSwgMjE2LCA1OCwgMjQzLCA4MiwgMTAwLCAxLCAKLSAgICAyNTQsIDEwMywgMTAwLCAyMjYsIDE0MywgMjIxLCA1NywgNTksIDEsIDEwMCwgMjMwLCAxNSwgMjMsIDk3LCAyMzQsIDY3LCAKLSAgICAyMywgOTcsIDIxOSwgMTUwLCAyMywgOTcsIDIyOSwgNTcsIDIzLCA5NywgMjE3LCA1NSwgMjMsIDk3LCAyMTksIDEzOSwgMjMsIAotICAgIDk3LCAyMjMsIDE3OSwgMjMsIDk3LCAyMzEsIDMwLCAyMywgOTcsIDIyNSwgMjI3LCAyMywgOTcsIDIxOSwgMTQ3LCAyMywgCi0gICAgOTcsIDIyMCwgNzYsIDIzLCA5NywgMjE5LCAxNDQsIDIzLCA5NywgMjM2LCA1MSwgMjMsIDk3LCAyNDksIDIzOSwgMjMsIDk3LCAKLSAgICAyMTksIDE1NCwgMjMsIDk3LCAyNTAsIDQzLCAyMywgOTcsIDIzNCwgMTE2LCAyMywgOTcsIDIxNywgMTI2LCAyMywgOTcsIAotICAgIDIyNiwgNywgMjMsIDk3LCAyNDEsIDE1OCwgMjMsIDk3LCAyMjksIDUzLCAyMywgOTcsIDIxOSwgMTQ4LCAyMywgOTcsIDIyOSwgCi0gICAgNDcsIDIzLCA5NywgMjI5LCA1MSwgMjMsIDk3LCAyMTcsIDUyLCAyMywgOTcsIDIyMywgMTY3LCAyMywgOTcsIDIxOSwgMTQ2LCAKLSAgICAyMywgOTcsIDIyMywgMTc3LCAyMywgOTcsIDIzNCwgMjIzLCAyMywgOTcsIDIzMSwgMjMsIDIzLCA5NywgMjM0LCAyMjYsIAotICAgIDIzLCA5NywgMjI1LCAyMjIsIDIzLCA5NywgMjI1LCAyMjAsIDIzLCA5NywgMjI1LCAyMDgsIDIzLCA5NywgMjI1LCAyMTYsIAotICAgIDIzLCA5NywgMjI1LCAyMTQsIDIzLCA5NywgMjI1LCAyMTEsIDIzLCA5NywgMjI1LCAyMTMsIDIzLCA5NywgMjI1LCAyMTAsIAotICAgIDIzLCA5NywgMjI1LCAyMTUsIDIzLCA5NywgMjI1LCAyMjUsIDIzLCA5NywgMjI1LCAyMjYsIDIzLCA5NywgMjI1LCAyMDksIAotICAgIDIzLCA5NywgMjI1LCAyMTksIDIzLCA5NywgMjM0LCAyMjQsIDIzLCA5NywgMjM0LCAyMjIsIDIzLCA5NywgMjIwLCA2OSwgCi0gICAgMjMsIDk3LCAyMjAsIDY3LCAyMywgOTcsIDIyMCwgNTksIDIzLCA5NywgMjIwLCA2MiwgMjMsIDk3LCAyMjAsIDY4LCAyMywgCi0gICAgOTcsIDIyMCwgNjQsIDIzLCA5NywgMjIwLCA2MywgMjMsIDk3LCAyMjAsIDYxLCAyMywgOTcsIDIyMCwgNzIsIDIzLCA5NywgCi0gICAgMjIwLCA3NCwgMjMsIDk3LCAyMjAsIDc1LCAyMywgOTcsIDIyMCwgNzAsIDIzLCA5NywgMjIwLCA2MCwgMjMsIDk3LCAyMjAsIAotICAgIDY1LCAyMywgOTcsIDIyMCwgNzMsIDIzLCA5NywgMjUwLCAyNywgMjMsIDk3LCAyNTAsIDI1LCAyMywgOTcsIDI1MCwgMTAyLCAKLSAgICAyMywgOTcsIDI1MCwgMTAwLCAyMywgOTcsIDIyNiwgMTYwLCAyMywgOTcsIDIzNiwgNDYsIDIzLCA5NywgMjM2LCAzNywgMjMsIAotICAgIDk3LCAyMzYsIDQ1LCAyMywgOTcsIDIzNiwgNDIsIDIzLCA5NywgMjM2LCA0MCwgMjMsIDk3LCAyMzYsIDQ0LCAyMywgOTcsIAotICAgIDIxOSwgMTUxLCAyMywgOTcsIDIzNiwgNDksIDIzLCA5NywgMjM2LCA1MCwgMjMsIDk3LCAyMzYsIDM4LCAyMywgOTcsIDIzNiwgCi0gICAgNDMsIDIzLCA5NywgMjEzLCAxNywgMjMsIDk3LCAyNDksIDIzOCwgMjMsIDk3LCAyNTAsIDI4LCAyMywgOTcsIDI1MCwgMjYsIAotICAgIDIzLCA5NywgMjUwLCAxMDMsIDIzLCA5NywgMjUwLCAxMDEsIDIzLCA5NywgMjUwLCA0MSwgMjMsIDk3LCAyNTAsIDQyLCAyMywgCi0gICAgOTcsIDI1MCwgMjksIDIzLCA5NywgMjUwLCAxMDQsIDIzLCA5NywgMjI2LCA1LCAyMywgOTcsIDIzNCwgMjI1LCAyMywgOTcsIAotICAgIDIxOSwgMTUyLCAyMywgOTcsIDIxMywgMjMsIDIzLCA5NywgMjM0LCA1OCwgMjMsIDk3LCAyMjksIDQ5LCAyMywgOTcsIDIyOSwgCi0gICAgNTUsIDIzLCA5NywgMjI5LCA1NCwgMjMsIDk3LCAyMTcsIDQ5LCAyMywgOTcsIDI0NCwgNzIsIDIzLCAxMzUsIDI0NCwgNzIsIAotICAgIDIzLCAxMzUsIDYxLCAyMywgMTM1LCAyNTQsIDE0OCwgMjMsIDEzNSwgMTg2LCAyMywgMTM1LCAyMTMsIDgwLCAyMywgMTM1LCAKLSAgICAyNDUsIDc2LCAyMywgMTM1LCA3NCwgMjMsIDEzNSwgMjEzLCAyNywgMjMsIDEzNSwgMjEzLCAzOCwgMjMsIDEzNSwgNzUsIAotICAgIDIzLCAxMzUsIDIxNCwgNDksIDIzLCAxMzUsIDIxNCwgNDYsIDIzLCAxMzUsIDIyNywgOTksIDIzLCAxMzUsIDIxMiwgMjM1LCAKLSAgICAyMywgMTM1LCA2OSwgMjMsIDEzNSwgMjEzLCAyNTIsIDIzLCAxMzUsIDIxNCwgNiwgMjMsIDEzNSwgMjEzLCAyMzUsIDIzLCAKLSAgICAxMzUsIDIxMiwgMjAzLCAyMywgMTM1LCAyNDUsIDIyLCAyMywgMTM1LCAyMTIsIDI1NSwgMjMsIDEzNSwgNzIsIDIzLCAxMzUsIAotICAgIDI1NSwgNjAsIDIzLCAxMzUsIDI1NSwgNTksIDIzLCAxMzUsIDIxMywgOTQsIDIzLCAxMzUsIDIxMywgOTIsIDIzLCAxMzUsIAotICAgIDI0NSwgNzQsIDIzLCAxMzUsIDI0NSwgNzMsIDIzLCAxMzUsIDI0NSwgNzUsIDIzLCAxMzUsIDIxMywgMjYsIDIzLCAxMzUsIAotICAgIDIxMywgMjUsIDIzLCAxMzUsIDIyNywgMjA0LCAyMywgMTM1LCAyMjcsIDIwNSwgMjMsIDEzNSwgMjI3LCAxOTgsIDIzLCAKLSAgICAxMzUsIDIyNywgMjAzLCAyMywgMTM1LCAyMjcsIDIwMSwgMjMsIDEzNSwgMjEyLCAyMjksIDIzLCAxMzUsIDIxMiwgMjI4LCAKLSAgICAyMywgMTM1LCAyMTIsIDIyNywgMjMsIDEzNSwgMjEyLCAyMzAsIDIzLCAxMzUsIDIxMiwgMjMxLCAyMywgMTM1LCAyMTUsIAotICAgIDI1MiwgMjMsIDEzNSwgMjE1LCAyNTEsIDIzLCAxMzUsIDIxNSwgMjUwLCAyMywgMTM1LCAyMTUsIDI0NywgMjMsIDEzNSwgCi0gICAgMjE1LCAyNDgsIDIzLCAxMzUsIDIxMiwgMjAyLCAyMywgMTM1LCAyMTIsIDE5OSwgMjMsIDEzNSwgMjEyLCAyMDAsIDIzLCAKLSAgICAxMzUsIDIxMiwgMTk0LCAyMywgMTM1LCAyMTIsIDE5NSwgMjMsIDEzNSwgMjEyLCAxOTYsIDIzLCAxMzUsIDIxMiwgMTk4LCAKLSAgICAyMywgMTM1LCAyNDUsIDE2LCAyMywgMTM1LCAyNDUsIDE4LCAyMywgMTM1LCAyMTIsIDI1NCwgMjMsIDEzNSwgMjQwLCAxNDUsIAotICAgIDIzLCAxMzUsIDI0MCwgMTM3LCAyMywgMTM1LCAyNDAsIDE0MCwgMjMsIDEzNSwgMjQwLCAxMzgsIDIzLCAxMzUsIDI0MCwgCi0gICAgMTQyLCAyMywgMTM1LCAyNDAsIDE0NCwgMjMsIDEzNSwgMjUzLCAyMDQsIDIzLCAxMzUsIDI1MywgMjAxLCAyMywgMTM1LCAKLSAgICAyNTMsIDE5OSwgMjMsIDEzNSwgMjUzLCAyMDAsIDIzLCAxMzUsIDIxOSwgMTU1LCAyMywgMTM1LCAyNTUsIDYxLCAyMywgCi0gICAgMTM1LCAyMTMsIDkzLCAyMywgMTM1LCAyMTMsIDI0LCAyMywgMTM1LCAyMjcsIDIwMCwgMjMsIDEzNSwgMjI3LCAxOTksIDIzLCAKLSAgICA4OSwgMjM0LCA2NywgMjMsIDg5LCAyMTksIDE1MCwgMjMsIDg5LCAyMzQsIDYwLCAyMywgODksIDIyOSwgNTcsIDIzLCA4OSwgCi0gICAgMjI5LCA1NSwgMjMsIDg5LCAyMjksIDU0LCAyMywgODksIDIxNywgNTUsIDIzLCA4OSwgMjIzLCAxNzksIDIzLCA4OSwgMjIzLCAKLSAgICAxNzQsIDIzLCA4OSwgMjIzLCAxNzEsIDIzLCA4OSwgMjIzLCAxNjQsIDIzLCA4OSwgMjIzLCAxNTksIDIzLCA4OSwgMjIzLCAKLSAgICAxNTQsIDIzLCA4OSwgMjIzLCAxNjUsIDIzLCA4OSwgMjIzLCAxNzcsIDIzLCA4OSwgMjMxLCAzMCwgMjMsIDg5LCAyMjUsIAotICAgIDIyNywgMjMsIDg5LCAyMjUsIDIxNiwgMjMsIDg5LCAyMjAsIDc2LCAyMywgODksIDIxOSwgMTQ0LCAyMywgODksIDIzNiwgCi0gICAgNTEsIDIzLCA4OSwgMjQ5LCAyMzksIDIzLCA4OSwgMjUwLCA0MywgMjMsIDg5LCAyMzQsIDExNiwgMjMsIDg5LCAyMTcsIAotICAgIDEyNiwgMjMsIDg5LCAyMjYsIDcsIDIzLCA4OSwgMjQxLCAxNTgsIDIzLCA4OSwgMjM0LCA2MSwgMjMsIDg5LCAyMzQsIDU5LCAKLSAgICAyMywgODksIDIyOSwgNTMsIDIzLCA4OSwgMjI5LCA0NywgMjMsIDg5LCAyMjksIDQ5LCAyMywgODksIDIyOSwgNTIsIDIzLCAKLSAgICA4OSwgMjI5LCA0OCwgMjMsIDg5LCAyMTcsIDUyLCAyMywgODksIDIxNywgNDksIDIzLCA4OSwgMjIzLCAxNzIsIDIzLCA4OSwgCi0gICAgMjIzLCAxNjcsIDIzLCA4OSwgMjIzLCAxNTMsIDIzLCA4OSwgMjIzLCAxNTIsIDIzLCA4OSwgMjE5LCAxNDYsIDIzLCA4OSwgCi0gICAgMjIzLCAxNjksIDIzLCA4OSwgMjIzLCAxNjgsIDIzLCA4OSwgMjIzLCAxNjEsIDIzLCA4OSwgMjIzLCAxNjMsIDIzLCA4OSwgCi0gICAgMjIzLCAxNzYsIDIzLCA4OSwgMjIzLCAxNTYsIDIzLCA4OSwgMjIzLCAxNjYsIDIzLCA4OSwgMjIzLCAxNzUsIDIzLCA4OSwgCi0gICAgMjIzLCAxNTEsIDIzLCA4OSwgMjMxLCAyNiwgMjMsIDg5LCAyMzEsIDIxLCAyMywgODksIDIzMSwgMjMsIDIzLCA4OSwgMjMxLCAKLSAgICAyMCwgMjMsIDg5LCAyMzEsIDE4LCAyMywgODksIDIzMSwgMjQsIDIzLCA4OSwgMjMxLCAyOSwgMjMsIDg5LCAyMzEsIDI3LCAKLSAgICAyMywgODksIDIzNCwgMjI2LCAyMywgODksIDIyNSwgMjE4LCAyMywgODksIDIyNSwgMjE5LCAyMywgODksIDIyNSwgMjI0LCAKLSAgICAyMywgODksIDIzNCwgMjI0LCAyMywgODksIDIyMCwgNjksIDIzLCA4OSwgMjIwLCA1OSwgMjMsIDg5LCAyMjAsIDYyLCAyMywgCi0gICAgODksIDIyMCwgNjQsIDIzLCA4OSwgMjI2LCAxNjAsIDIzLCA4OSwgMjM2LCA0NiwgMjMsIDg5LCAyMzYsIDM5LCAyMywgODksIAotICAgIDIxOSwgMTUxLCAyMywgODksIDIzNiwgNDcsIDIzLCA4OSwgMjEzLCAxNywgMjMsIDg5LCAyMTMsIDEzLCAyMywgODksIDIxMywgCi0gICAgMTQsIDIzLCA4OSwgMjI2LCA1LCAyMywgODksIDIzNCwgMjI1LCAyMywgODksIDI0MSwgMTU2LCAyMywgODksIDI0MSwgMTU0LCAKLSAgICAyMywgODksIDI0MSwgMTU3LCAyMywgODksIDI0MSwgMTU1LCAyMywgODksIDIxMywgMjMsIDIzLCA4OSwgMjM0LCA2MywgMjMsIAotICAgIDg5LCAyMzQsIDYyLCAyMywgODksIDIzNCwgNjYsIDIzLCA4OSwgMjM0LCA2NCwgMjMsIDg5LCAyMzQsIDY1LCAyMywgODksIAotICAgIDIxOSwgMTQ4LCAyOCwgNCwgMTU5LCAyOCwgNCwgMjQwLCAyMTIsIDI4LCA0LCAyNDEsIDE2NSwgMjgsIDQsIDI0MiwgMjcsIAotICAgIDI4LCA0LCAyNDEsIDIwNCwgMjgsIDQsIDI0MSwgMjIyLCAyOCwgNCwgMjQxLCA1NCwgMjgsIDQsIDI0MSwgNTMsIDI4LCA0LCAKLSAgICAyMzMsIDE1NywgMjgsIDQsIDIzMiwgMTU2LCAyOCwgNCwgMjMzLCAxMywgMjgsIDQsIDIzMywgMTU2LCAyOCwgNCwgMjMzLCAKLSAgICA3NCwgMjgsIDQsIDIzMywgODIsIDI4LCA0LCAyMzIsIDIwOCwgMjgsIDQsIDIzMiwgMTI5LCAyOCwgNCwgMjQxLCAxNzQsIAotICAgIDI4LCA0LCAyNDEsIDE2OCwgMjgsIDQsIDI0MSwgMTcwLCAyOCwgNCwgMjQxLCAxNzMsIDI4LCA0LCAyNDEsIDE3MSwgMjgsIAotICAgIDQsIDI0MSwgMTcyLCAyOCwgNCwgMjQxLCAxNjksIDI4LCA0LCAyNDEsIDE2NywgMjgsIDQsIDE4OCwgMjgsIDQsIDIzMCwgCi0gICAgMTcyLCAyOCwgNCwgMjMxLCA0MiwgMjgsIDQsIDIzMiwgNDEsIDI4LCA0LCAyMzEsIDE0NSwgMjgsIDQsIDIzMSwgMTU2LCAKLSAgICAyOCwgNCwgMjMwLCAyMzEsIDI4LCA0LCAyMzAsIDExNCwgMjgsIDQsIDIxOCwgMTEwLCAyOCwgNCwgMjE4LCAxMDQsIDI4LCAKLSAgICA0LCAyMTgsIDEwNiwgMjgsIDQsIDIxOCwgMTA5LCAyOCwgNCwgMjE4LCAxMDcsIDI4LCA0LCAyMTgsIDEwOCwgMjgsIDQsIAotICAgIDIxOCwgMTA1LCAyOCwgNCwgMjE4LCAxMDMsIDI4LCA0LCAyMDMsIDI4LCA0LCAyMjMsIDUxLCAyOCwgNCwgMjIzLCAxODgsIAotICAgIDI4LCA0LCAyMjQsIDc0LCAyOCwgNCwgMjI0LCAxLCAyOCwgNCwgMjI0LCAyMSwgMjgsIDQsIDIyMywgMTEyLCAyOCwgNCwgCi0gICAgMjIzLCAyMSwgMjgsIDQsIDIyMiwgMjAyLCAyOCwgNCwgMjE5LCAyNywgMjgsIDQsIDIyMCwgMTE3LCAyOCwgNCwgMjIyLCAKLSAgICAyMDAsIDI4LCA0LCAyMjIsIDg5LCAyOCwgNCwgMjIyLCAxMDAsIDI4LCA0LCAyMTksIDI0MiwgMjgsIDQsIDIxOCwgMTk4LCAKLSAgICAyOCwgNCwgMjIxLCAyNCwgMjgsIDQsIDIyMCwgMTUwLCAyOCwgNCwgMjIwLCAyMTIsIDI4LCA0LCAyMjEsIDIwLCAyOCwgNCwgCi0gICAgMjIwLCAyNDEsIDI4LCA0LCAyMjAsIDI0MywgMjgsIDQsIDIyMCwgMTg3LCAyOCwgNCwgMjIwLCAxMzQsIDI4LCA0LCAyMjQsIAotICAgIDIzMiwgMjgsIDQsIDIyNCwgMTc1LCAyOCwgNCwgMjI0LCAxOTgsIDI4LCA0LCAyMjQsIDIzMSwgMjgsIDQsIDIyNCwgMjEyLCAKLSAgICAyOCwgNCwgMjI0LCAyMTMsIDI4LCA0LCAyMjQsIDE4NywgMjgsIDQsIDIyNCwgMTg2LCAyOCwgNCwgMjI0LCAxMzEsIDI4LCAKLSAgICA0LCAyMjQsIDEyNywgMjgsIDQsIDIyNCwgMTMwLCAyOCwgNCwgMjI0LCAxMjgsIDI4LCA0LCAyMjQsIDEyOSwgMjgsIDQsIAotICAgIDIyNCwgMjEwLCAyOCwgNCwgMjI0LCAyMDQsIDI4LCA0LCAyMjQsIDIwNiwgMjgsIDQsIDIyNCwgMjA5LCAyOCwgNCwgMjI0LCAKLSAgICAyMDcsIDI4LCA0LCAyMjQsIDIwOCwgMjgsIDQsIDIyNCwgMjA1LCAyOCwgNCwgMjI0LCAyMDMsIDI4LCA0LCAyMjQsIDE5OSwgCi0gICAgMjgsIDQsIDIyNCwgMjAyLCAyOCwgNCwgMjI0LCAyMDAsIDI4LCA0LCAyMjQsIDIwMSwgMjgsIDQsIDI1MiwgMTA3LCAyOCwgCi0gICAgNCwgMjUxLCA1NCwgMjgsIDQsIDI1MSwgMTg0LCAyOCwgNCwgMjUyLCAxMDYsIDI4LCA0LCAyNTEsIDI0MiwgMjgsIDQsIAotICAgIDI1MSwgMjUxLCAyOCwgNCwgMjUxLCAxMjgsIDI4LCA0LCAyNTEsIDEyLCAyOCwgNCwgMjE1LCAxLCAyOCwgNCwgMjE0LCA5OSwgCi0gICAgMjgsIDQsIDIxNCwgMTU0LCAyOCwgNCwgMjE1LCAwLCAyOCwgNCwgMjE0LCAyMjcsIDI4LCA0LCAyMTQsIDIzMiwgMjgsIDQsIAotICAgIDIxNCwgMTE5LCAyOCwgNCwgMjE0LCA5MSwgMjgsIDQsIDIxOCwgNTIsIDI4LCA0LCAyMTYsIDgyLCAyOCwgNCwgMjE3LCA3MSwgCi0gICAgMjgsIDQsIDIxOCwgNDksIDI4LCA0LCAyMTcsIDIxOSwgMjgsIDQsIDIxNywgMjI5LCAyOCwgNCwgMTA4LCAyOCwgNCwgMjE2LCAKLSAgICA0NSwgMjgsIDQsIDI1MCwgMjE5LCAyOCwgNCwgMjQ5LCA1MywgMjgsIDQsIDI0OSwgMjQ0LCAyOCwgNCwgMjUwLCAyMTgsIAotICAgIDI4LCA0LCAyNTAsIDExNiwgMjgsIDQsIDI1MCwgMTI0LCAyOCwgNCwgMjQ5LCAxNzUsIDI4LCA0LCAyNDksIDI0LCAyOCwgNCwgCi0gICAgMjEzLCAxNTMsIDI4LCA0LCAyMTMsIDEyOSwgMjgsIDQsIDIxMywgMTQ1LCAyOCwgNCwgMjEzLCAxNTIsIDI4LCA0LCAyMTMsIAotICAgIDE0OSwgMjgsIDQsIDIxMywgMTUwLCAyOCwgNCwgMjEzLCAxMzYsIDI4LCA0LCAyMTMsIDEzNSwgMjgsIDQsIDIxMywgMTI0LCAKLSAgICAyOCwgNCwgMjEzLCAxMjAsIDI4LCA0LCAyMTMsIDEyMywgMjgsIDQsIDIxMywgMTIxLCAyOCwgNCwgMjEzLCAxMjIsIDI4LCAKLSAgICA0LCAyMDUsIDI4LCA0LCAyMjgsIDkyLCAyOCwgNCwgMjI5LCA2NCwgMjgsIDQsIDIzMCwgNDMsIDI4LCA0LCAyMjksIDE4NCwgCi0gICAgMjgsIDQsIDIyOSwgMTg3LCAyOCwgNCwgMjI4LCAxODUsIDI4LCA0LCAyMjgsIDMxLCAyOCwgNCwgMjI4LCAyMywgMjgsIDQsIAotICAgIDIyNywgMjQ3LCAyOCwgNCwgMjI4LCAxMCwgMjgsIDQsIDIyOCwgMjIsIDI4LCA0LCAyMjgsIDE2LCAyOCwgNCwgMjI4LCAxNywgCi0gICAgMjgsIDQsIDIyNywgMjUzLCAyOCwgNCwgMjI3LCAyMzksIDI4LCA0LCAyNDIsIDE1NiwgNjEsIDI4LCA0LCAyNDIsIDE1NiwgCi0gICAgNjksIDI4LCA0LCAyNDIsIDE1NiwgNzIsIDI4LCA0LCAyNDIsIDE1NiwgMjU0LCAyMzIsIDI4LCA0LCAyNDIsIDE1NiwgMjQ1LCAKLSAgICAxNjUsIDI4LCA0LCAyNDIsIDE1NiwgNzQsIDI4LCA0LCAyNDIsIDE1NiwgNzUsIDI4LCA0LCAyNDIsIDE1NiwgMjE0LCA0OSwgCi0gICAgMjgsIDQsIDE4MSwgMjgsIDQsIDIzMywgMjM4LCAyOCwgNCwgMjM0LCAxMDEsIDI4LCA0LCAyMzUsIDE0LCAyOCwgNCwgMjM0LCAKLSAgICAxODcsIDI4LCA0LCAyMzQsIDE4OCwgMjgsIDQsIDIzNCwgMzcsIDI4LCA0LCAyMzQsIDM2LCAyOCwgNCwgMjMzLCAyMDQsIAotICAgIDI4LCA0LCAyMzMsIDE5OCwgMjgsIDQsIDIzMywgMjAzLCAyOCwgNCwgMjMzLCAxOTksIDI4LCA0LCAyMzMsIDIwMCwgMjgsIAotICAgIDQsIDIzMywgMTkzLCAyOCwgNCwgMjMzLCAxODcsIDI4LCA0LCAyMzMsIDE4OSwgMjgsIDQsIDIzMywgMTkyLCAyOCwgNCwgCi0gICAgMjMzLCAxOTAsIDI4LCA0LCAyMzMsIDE5MSwgMjgsIDQsIDIzMywgMTg4LCAyOCwgNCwgMjMzLCAxODYsIDI4LCA0LCAyMzMsIAotICAgIDE4MiwgMjgsIDQsIDIzMywgMTg1LCAyOCwgNCwgMjMzLCAxODMsIDI4LCA0LCAyMzMsIDE4NCwgMjgsIDQsIDIxNCwgNDksIAotICAgIDI4LCA0LCAyMTMsIDE4MywgMjgsIDQsIDIxMywgMjM1LCAyOCwgNCwgMjE0LCA0OCwgMjgsIDQsIDIxNCwgMSwgMjgsIDQsIAotICAgIDIxNCwgNiwgMjgsIDQsIDIxMywgMjE0LCAyOCwgNCwgMjEzLCAyMTMsIDI4LCA0LCAyMjYsIDE1LCA2MSwgMjgsIDQsIDIyNiwgCi0gICAgMTUsIDY5LCAyOCwgNCwgMjI2LCAxNSwgNzIsIDI4LCA0LCAyMjYsIDE1LCAyNTQsIDIzMiwgMjgsIDQsIDIyNiwgMTUsIAotICAgIDI0NSwgMTY1LCAyOCwgNCwgMjI2LCAxNSwgNzQsIDI4LCA0LCAyMjYsIDE1LCA3NSwgMjgsIDQsIDIxMiwgMTA5LCAyOCwgNCwgCi0gICAgMjEyLCA4LCAyOCwgNCwgMjEyLCAzNywgMjgsIDQsIDIxMiwgMTA4LCAyOCwgNCwgMjEyLCA4NSwgMjgsIDQsIDIxMiwgODcsIAotICAgIDI4LCA0LCAyMTIsIDE2LCAyOCwgNCwgMjExLCAyNTEsIDI4LCA0LCAyMTIsIDc1LCAyOCwgNCwgMjEyLCA1NSwgMjgsIDQsIAotICAgIDIxMiwgNjIsIDI4LCA0LCAyMTIsIDc0LCAyOCwgNCwgMjEyLCA2NiwgMjgsIDQsIDIxMiwgNjcsIDI4LCA0LCAyMTIsIDYwLCAKLSAgICAyOCwgNCwgMjEyLCA0NiwgMjgsIDQsIDE4NiwgMjgsIDQsIDIxMiwgMjAzLCAyOCwgNCwgMjEyLCAyNTUsIDI4LCA0LCAyMTMsIAotICAgIDkxLCAyOCwgNCwgMjEzLCAzNSwgMjgsIDQsIDIxMywgMzgsIDI4LCA0LCAyMTIsIDIzNSwgMjgsIDQsIDIxMiwgMjI2LCAyOCwgCi0gICAgNCwgMjQ4LCAxNjQsIDI4LCA0LCAyNDYsIDMzLCAyOCwgNCwgMjQ3LCAyMTEsIDI4LCA0LCAyNDgsIDE2MywgMjgsIDQsIAotICAgIDI0OCwgMjgsIDI4LCA0LCAyNDgsIDQxLCAyOCwgNCwgMjQ3LCA5OSwgMjgsIDQsIDI0NiwgMiwgMjgsIDQsIDI0OCwgODYsIAotICAgIDI4LCA0LCAyNDgsIDUxLCAyOCwgNCwgMjQ4LCA2MywgMjgsIDQsIDI0OCwgODUsIDI4LCA0LCAyNDgsIDczLCAyOCwgNCwgCi0gICAgMjQ4LCA3NCwgMjgsIDQsIDI0OCwgNTYsIDI4LCA0LCAyNDgsIDQyLCAyOCwgNCwgMjM1LCAxMzksIDI4LCA0LCAyMzUsIDU0LCAKLSAgICAyOCwgNCwgMjM1LCAxMTAsIDI4LCA0LCAyMzUsIDEzOCwgMjgsIDQsIDIzNSwgMTI1LCAyOCwgNCwgMjM1LCAxMjcsIDI4LCAKLSAgICA0LCAyMzUsIDcxLCAyOCwgNCwgMjM1LCAzNSwgMjgsIDQsIDI0MywgMTEwLCAyOCwgNCwgMjQyLCA5MiwgMjgsIDQsIDI0MiwgCi0gICAgMTkwLCAyOCwgNCwgMjQzLCAxMDcsIDI4LCA0LCAyNDMsIDMxLCAyOCwgNCwgMjQzLCAzOCwgMjgsIDQsIDI0MiwgMTUwLCAKLSAgICAyOCwgNCwgMjQyLCAxNDksIDI4LCA0LCAyNDIsIDU5LCAyOCwgNCwgMjQyLCA1NSwgMjgsIDQsIDI0MiwgNTgsIDI4LCA0LCAKLSAgICAyNDIsIDU2LCAyOCwgNCwgMjQyLCA1NywgMjgsIDQsIDI0MywgNSwgMjgsIDQsIDI0MiwgMjQxLCAyOCwgNCwgMjQyLCAyNTEsIAotICAgIDI4LCA0LCAyNDMsIDQsIDI4LCA0LCAyNDIsIDI1NSwgMjgsIDQsIDI0MywgMCwgMjgsIDQsIDI0MiwgMjQ1LCAyOCwgNCwgCi0gICAgMjQyLCAyMzAsIDI4LCA0LCAyMTcsIDE2MSwgMjgsIDQsIDIxNywgOTAsIDI4LCA0LCAyMTcsIDEyOCwgMjgsIDQsIDIxNywgCi0gICAgMTYwLCAyOCwgNCwgMjE3LCAxNDcsIDI4LCA0LCAyMTcsIDE0OCwgMjgsIDQsIDIxNywgMTA5LCAyOCwgNCwgMjE3LCA4MiwgCi0gICAgMjgsIDQsIDI1MCwgOTIsIDI4LCA0LCAyNTAsIDYsIDI4LCA0LCAyNTAsIDQ3LCAyOCwgNCwgMjUwLCA5MSwgMjgsIDQsIAotICAgIDI1MCwgNjQsIDI4LCA0LCAyNTAsIDY3LCAyOCwgNCwgMjUwLCAyMywgMjgsIDQsIDI0OSwgMjUxLCAyOCwgNCwgMjI2LCAyMywgCi0gICAgMjgsIDQsIDIyNSwgMjQ2LCAyOCwgNCwgMjI2LCA5LCAyOCwgNCwgMjI2LCAyMiwgMjgsIDQsIDIyNiwgMTEsIDI4LCA0LCAKLSAgICAyMjYsIDEyLCAyOCwgNCwgMjI1LCAyNTMsIDI4LCA0LCAyMjUsIDI0MiwgMjgsIDQsIDIxNiwgMTQxLCAyOCwgNCwgMjE2LCAKLSAgICAxMjIsIDI4LCA0LCAyMTYsIDEyNSwgMjgsIDQsIDIxNiwgMTQwLCAyOCwgNCwgMjE2LCAxMzUsIDI4LCA0LCAyMTYsIDEzNiwgCi0gICAgMjgsIDQsIDIxNiwgMTI0LCAyOCwgNCwgMjE2LCAxMjAsIDI4LCA0LCAyMTYsIDUsIDI4LCA0LCAyMTUsIDI1MywgMjgsIDQsIAotICAgIDIxNiwgMSwgMjgsIDQsIDIxNiwgNCwgMjgsIDQsIDIxNiwgMiwgMjgsIDQsIDIxNiwgMywgMjgsIDQsIDIxNSwgMjU1LCAyOCwgCi0gICAgNCwgMjE1LCAyNTQsIDI4LCA0LCAyNDQsIDE2NCwgMjgsIDQsIDI0MywgMjA1LCAyOCwgNCwgMjQ0LCA5MCwgMjgsIDQsIAotICAgIDI0NCwgMTYzLCAyOCwgNCwgMjQ0LCAxMTYsIDI4LCA0LCAyNDQsIDEyMywgMjgsIDQsIDI0NCwgMTIsIDI4LCA0LCAyNDMsIAotICAgIDE4OCwgMjgsIDQsIDE5MywgMjgsIDQsIDIyNSwgMzUsIDI4LCA0LCAyMjUsIDI0MCwgMjgsIDQsIDIyNiwgMjEzLCAyOCwgNCwgCi0gICAgMjI2LCA4NiwgMjgsIDQsIDIyNiwgOTYsIDI4LCA0LCAyMjUsIDE1MCwgMjgsIDQsIDIyNSwgMiwgMjgsIDQsIDIyMywgMTEsIAotICAgIDI4LCA0LCAyMzAsIDEwMywgMjgsIDQsIDI0MywgMTgyLCAyOCwgMzcsIDI0MywgMjksIDI0LCAzMCwgMjMzLCA0NywgNzcsIAotICAgIDI4LCAzNywgMzAsIDIzMywgNDcsIDc3LCAyOCwgMzcsIDI0MywgMjksIDc3LCAyOCwgMjIyLCA5MiwgNzcsIDI4LCAyMTMsIAotICAgIDE5NSwgMjgsIDI0MywgMjAwLCAyMTksIDY5LCAyOCwgMjQ5LCAxNTcsIDI4LCAyMjEsIDcwLCAyOCwgMjQ5LCAxNjQsIDI4LCAKLSAgICAyMjUsIDc5LCAyNDksIDE2NCwgMjgsIDIyNCwgMTU4LCA3NywgMjgsIDIyNiwgMTQzLCAyMjEsIDU3LCAyOCwgMjEsIDExNiwgCi0gICAgMjgsIDIxLCAxMDksIDI4LCAyMSwgMTY2LCAyOCwgMjEsIDE2MywgMjgsIDIxLCAxODAsIDI4LCAyMSwgMTg5LCAyOCwgMjEsIAotICAgIDE5OCwgMjgsIDIxLCAxOTUsIDI4LCAyMSwgMjAwLCAyOCwgNTAsIDIxNywgMjAwLCAyOCwgNTAsIDIxNiwgMzgsIDI4LCA1MCwgCi0gICAgMjE3LCAxMTUsIDI4LCA1MCwgMjQzLCAyNDAsIDI4LCA1MCwgMjQ0LCA4MywgMjgsIDUwLCAyMjAsIDM5LCAyOCwgNTAsIAotICAgIDIyMSwgMzcsIDI4LCA1MCwgMjQ1LCAxNDEsIDI4LCA1MCwgMjI5LCAyNiwgMjgsIDUwLCAyNDAsIDIwMCwgMjgsIDUwLCAKLSAgICAyMTcsIDIwMSwgMjE3LCAxMDAsIDI4LCA0LCAyMjIsIDk2LCAyMzAsIDExNCwgMjgsIDQsIDIzMCwgMTEwLCAyOCwgNCwgCi0gICAgMjMwLCAxMTEsIDI4LCA0LCAyMzAsIDExMiwgMjgsIDQsIDIyMiwgOTYsIDI1MSwgMTIsIDI4LCA0LCAyNTEsIDksIDI4LCA0LCAKLSAgICAyNTEsIDEwLCAyOCwgNCwgMjUxLCAxMSwgMjgsIDQsIDIyMiwgOTYsIDI0MywgMTg4LCAyOCwgNCwgMjQzLCAxODQsIDI4LCAKLSAgICA0LCAyNDMsIDE4NSwgMjgsIDQsIDI0MywgMTg2LCAyOCwgNCwgMjIyLCA5NiwgMjI1LCAyLCAyOCwgNCwgMjI0LCAyNTQsIAotICAgIDI4LCA0LCAyMjQsIDI1NSwgMjgsIDQsIDIyNSwgMCwgMjgsIDIxNiwgMjQyLCAxNTIsIDIxMiwgMjM4LCAyOCwgMjE2LCAKLSAgICAyNDIsIDE1MiwgMjQ3LCAyNDgsIDI4LCAyMTYsIDI0MiwgMTUyLCAyMjMsIDEzNSwgMjgsIDIxNiwgMjQyLCAxNTIsIDIyMCwgCi0gICAgMTc1LCAyMjMsIDEzNSwgMjgsIDIxNiwgMjQyLCAxNTIsIDI0NywgMTg3LCAyOCwgMjE2LCAyNDIsIDE1MiwgMjM0LCAxNzAsIAotICAgIDI4LCAyMTYsIDI0MiwgMTUyLCAyNTAsIDMxLCAyOCwgMjE2LCAyNDIsIDE1MiwgMjQxLCAxNjIsIDI4LCAyMTYsIDI0MiwgCi0gICAgMTUyLCAyNDcsIDI0NywgMjgsIDIxNiwgMjQyLCAxNTIsIDIzMywgMjE1LCAxNTgsIDEsIDYxLCAxNTgsIDEsIDc0LCAxNTgsIAotICAgIDEsIDcyLCAxNTgsIDEsIDc1LCAxNTgsIDEsIDY5LCAxNTgsIDEsIDIxNSwgNzksIDE1OCwgMSwgMjQzLCAxMTAsIDE1OCwgMSwgCi0gICAgMTgxLCAxNTgsIDEsIDI0MywgMzgsIDE1OCwgMSwgMjQyLCAxOTAsIDE1OCwgMSwgMjQyLCAxNTAsIDE1OCwgMSwgMjQyLCAKLSAgICA5MiwgMTU4LCAxLCAyNDIsIDYwLCAxNTgsIDEsIDE1OSwgMTU4LCAxLCAyNDEsIDIyMiwgMTU4LCAxLCAyNDEsIDE2NSwgCi0gICAgMTU4LCAxLCAyNDEsIDU0LCAxNTgsIDEsIDI0MCwgMjEyLCAxNTgsIDEsIDI0MCwgMTkzLCAxNTgsIDEsIDIzMywgMTU3LCAKLSAgICAxNTgsIDEsIDIzMywgODIsIDE1OCwgMSwgMjMzLCAxMywgMTU4LCAxLCAyMzIsIDIwOCwgMTU4LCAxLCAyMzIsIDE1NiwgCi0gICAgMTU4LCAxLCAyMzIsIDEzMCwgMTU4LCAxLCAxODgsIDE1OCwgMSwgMjMxLCAxNTYsIDE1OCwgMSwgMjMxLCA0MiwgMTU4LCAxLCAKLSAgICAyMzAsIDIzMSwgMTU4LCAxLCAyMzAsIDE3MiwgMTU4LCAxLCAyMDUsIDE1OCwgMSwgMjQxLCA3NiwgMTU4LCAxLCAyMzAsIAotICAgIDMxLCAxNTgsIDEsIDIyOSwgMTg3LCAxNTgsIDEsIDIyOSwgNjQsIDE1OCwgMSwgMjI4LCAxODUsIDE1OCwgMSwgMjI4LCA5MiwgCi0gICAgMTU4LCAxLCAyMjgsIDMzLCAxNTgsIDEsIDIyNCwgMTc0LCAxNTgsIDEsIDIyNCwgMTYxLCAxNTgsIDEsIDIyNCwgMTU0LCAKLSAgICAxNTgsIDEsIDIyNCwgMTQ2LCAxNTgsIDEsIDIyNCwgMTM1LCAxNTgsIDEsIDIyNCwgMTMzLCAxNTgsIDEsIDIyMiwgMjAyLCAKLSAgICAxNTgsIDEsIDE5NywgMTU4LCAxLCAyMjIsIDEwMCwgMTU4LCAxLCAyMjAsIDExNywgMTU4LCAxLCAyMTksIDI0MiwgMTU4LCAKLSAgICAxLCAyMTksIDI3LCAxNTgsIDEsIDIxOCwgMjAzLCAxNTgsIDEsIDI0OCwgMTY0LCAxNTgsIDEsIDIxOCwgNTIsIDE1OCwgMSwgCi0gICAgMjQ4LCA0MSwgMTU4LCAxLCAyMTcsIDIyOSwgMTU4LCAxLCAyNDcsIDIxMSwgMTU4LCAxLCAyMTcsIDcxLCAxNTgsIDEsIAotICAgIDI0NywgOTksIDE1OCwgMSwgMjQ2LCAzMywgMTU4LCAxLCAyNDYsIDUsIDE1OCwgMSwgMjQ3LCAxMDgsIDE1OCwgMSwgMjE3LCAKLSAgICAxMiwgMTU4LCAxLCAyMTcsIDExLCAxNTgsIDEsIDIxNywgMSwgMTU4LCAxLCAyMTcsIDAsIDE1OCwgMSwgMjE2LCAyNTUsIAotICAgIDE1OCwgMSwgMjE2LCAyNTQsIDE1OCwgMSwgMjE2LCAxNDEsIDE1OCwgMSwgMjE2LCAxMzYsIDE1OCwgMSwgMjE2LCAxMjUsIAotICAgIDE1OCwgMSwgMjE2LCAxMjQsIDE1OCwgMSwgMjE2LCAxMjIsIDE1OCwgMSwgMjE2LCAxMjEsIDE1OCwgMSwgMjE0LCA0OSwgCi0gICAgMTU4LCAxLCAyMTQsIDYsIDE1OCwgMSwgMjEzLCAyMzUsIDE1OCwgMSwgMjEzLCAyMTQsIDE1OCwgMSwgMjEzLCAxODMsIAotICAgIDE1OCwgMSwgMjEzLCAxNzEsIDE1OCwgMSwgMTg2LCAxNTgsIDEsIDIxMywgMzgsIDE1OCwgMSwgMjEyLCAyNTUsIDE1OCwgMSwgCi0gICAgMjEyLCAyMzUsIDE1OCwgMSwgMjEyLCAyMDMsIDE1OCwgMSwgMjEyLCAxNjksIDE4LCAxOSwgMjQwLCAxNjAsIDE4LCAxOSwgCi0gICAgNzQsIDE4LCAxOSwgMjU0LCAxOTYsIDE4LCAxOSwgNzIsIDE4LCAxOSwgMjM2LCAyOCwgMTgsIDE5LCA3NSwgMTgsIDE5LCAKLSAgICAyMjcsIDQ5LCAxOCwgMTksIDIxMywgMTA0LCAyMjcsIDQ5LCAxOCwgMTksIDY2LCAyNDUsIDE2NSwgMTgsIDE5LCA2NiwgNzIsIAotICAgIDE4LCAxOSwgNjEsIDE4LCAxOSwgMjU0LCAyMzIsIDE4LCAxOSwgMjE0LCA2LCAxOCwgMTksIDE0OCwgMjE0LCA2LCAxOCwgCi0gICAgMTksIDIxMywgMjM1LCAxOCwgMTksIDE0OCwgMjEzLCAyMzUsIDE4LCAxOSwgMjEzLCAyMjcsIDE4LCAxOSwgMTQ4LCAyMTMsIAotICAgIDIyNywgMTgsIDE5LCAyMTMsIDIxNCwgMTgsIDE5LCAxNDgsIDIxMywgMjE0LCAxOCwgMTksIDIxMywgMjAyLCAxOCwgMTksIAotICAgIDE0OCwgMjEzLCAyMDIsIDE4LCAxOSwgMjMwLCAxMSwgMjEzLCAyMDIsIDE4LCAxOSwgMjE0LCA0OSwgMTgsIDE5LCAxNDgsIAotICAgIDIxNCwgNDksIDE4LCAxOSwgMjE0LCA0OCwgMTgsIDE5LCAxNDgsIDIxNCwgNDgsIDE4LCAxOSwgMjMwLCAxMSwgMjE0LCA0OCwgCi0gICAgMTgsIDE5LCAyNTQsIDEwOCwgMTgsIDE5LCAyMTMsIDEwNCwgMjE0LCA4MiwgMTgsIDE5LCAyNDIsIDE1NiwgMjE5LCA2OSwgCi0gICAgMTgsIDE5LCA0MCwgMTc5LCAxOCwgMTksIDQwLCAyNDIsIDExMywgMTgsIDE5LCA0MCwgMjUxLCAxMDEsIDE1MSwgMjIzLCAKLSAgICAxMzAsIDE4LCAxOSwgNDAsIDIxNiwgMjI3LCAxNTEsIDIyMywgMTMwLCAxOCwgMTksIDQwLCA0NiwgMTUxLCAyMjMsIDEzMCwgCi0gICAgMTgsIDE5LCA0MCwgMjIzLCAxMzAsIDE4LCAxOSwgNDAsIDUxLCAxNzksIDE4LCAxOSwgNDAsIDUxLCAyMjAsIDE3NSwgNzEsIAotICAgIDIxOSwgMzIsIDE4LCAxOSwgNDAsIDIzMSwgMzcsIDI0NywgNzQsIDE4LCAxOSwgNDAsIDIyMCwgMTc1LCAxOTksIDkwLCAxOCwgCi0gICAgMTksIDQwLCAyMjUsIDE1NiwgMTgsIDE5LCA0MCwgMTE5LCAyMTgsIDM2LCAxOCwgMTksIDI0NSwgMTA4LCAxOCwgMTksIAotICAgIDIzNSwgMjUxLCAxOCwgMTksIDIyNywgNjIsIDE4LCAxOSwgMjU0LCAzMiwgMTgsIDE5LCAyMjYsIDk2LCAxOCwgMTksIDIyNiwgCi0gICAgMjExLCAxOCwgMTksIDIyNSwgMjQwLCAxOCwgMTksIDIyNSwgMjAzLCAxOCwgMTksIDIyNSwgMTUwLCAxOCwgMTksIDIyNSwgCi0gICAgMTI5LCAxOCwgMTksIDIxMywgMTA0LCAyMjUsIDEyOSwgMTgsIDE5LCA2NiwgMjQxLCAyMDQsIDE4LCAxOSwgNjYsIDI0MSwgCi0gICAgMTY1LCAxOCwgMTksIDE5MywgMTgsIDE5LCAyMjYsIDIxMywgMTgsIDE5LCAyMjUsIDAsIDE4LCAxOSwgMTQ4LCAyMjUsIDAsIAotICAgIDE4LCAxOSwgMjI0LCAyNTQsIDE4LCAxOSwgMTQ4LCAyMjQsIDI1NCwgMTgsIDE5LCAyMjQsIDI1MywgMTgsIDE5LCAxNDgsIAotICAgIDIyNCwgMjUzLCAxOCwgMTksIDIyNCwgMjUxLCAxOCwgMTksIDE0OCwgMjI0LCAyNTEsIDE4LCAxOSwgMjI0LCAyNTAsIDE4LCAKLSAgICAxOSwgMTQ4LCAyMjQsIDI1MCwgMTgsIDE5LCAyMjUsIDIsIDE4LCAxOSwgMTQ4LCAyMjUsIDIsIDE4LCAxOSwgMjI1LCAxLCAKLSAgICAxOCwgMTksIDE0OCwgMjI1LCAxLCAxOCwgMTksIDIxMywgMTA0LCAyMjUsIDEsIDE4LCAxOSwgMjI2LCAyMjksIDE4LCAxOSwgCi0gICAgMTQ4LCAyMjYsIDIyOSwgMTgsIDE5LCA2NiwgMjQyLCA0MSwgMTgsIDE5LCAyMTcsIDIyOSwgMTgsIDE5LCAyMTgsIDQ3LCAKLSAgICAxOCwgMTksIDIxNywgNzEsIDE4LCAxOSwgMjE3LCA1NywgMTgsIDE5LCAxMDgsIDE4LCAxOSwgMjE2LCAyMzAsIDE4LCAxOSwgCi0gICAgMjEzLCAxMDQsIDIxNiwgMjMwLCAxOCwgMTksIDY2LCAyNDgsIDI4LCAxOCwgMTksIDY2LCAyNDcsIDIxMSwgMTgsIDE5LCAKLSAgICAyMTgsIDUyLCAxOCwgMTksIDIxOCwgNDksIDE4LCAxOSwgMjE2LCA0MywgMTgsIDE5LCAxNDgsIDIxNiwgNDMsIDE4LCAxOSwgCi0gICAgMjE2LCAyNywgMTgsIDE5LCAxNDgsIDIxNiwgMjcsIDE4LCAxOSwgMjE2LCAyNiwgMTgsIDE5LCAxNDgsIDIxNiwgMjYsIDE4LCAKLSAgICAxOSwgMTA5LCAxOCwgMTksIDE0OCwgMTA5LCAxOCwgMTksIDIxNiwgMjAsIDE4LCAxOSwgMTQ4LCAyMTYsIDIwLCAxOCwgMTksIAotICAgIDIxNiwgNDUsIDE4LCAxOSwgMTQ4LCAyMTYsIDQ1LCAxOCwgMTksIDIxNiwgNDQsIDE4LCAxOSwgMTQ4LCAyMTYsIDQ0LCAxOCwgCi0gICAgMTksIDIzMCwgMTEsIDIxNiwgNDQsIDE4LCAxOSwgMjE4LCA5OSwgMTgsIDE5LCAyMTYsIDExMiwgMTgsIDE5LCAyMTYsIDk2LCAKLSAgICAxOCwgMTksIDIxNiwgOTUsIDE4LCAxOSwgMjE2LCAxMTUsIDE4LCAxOSwgMjM0LCAxODgsIDE4LCAxOSwgMjM1LCAxMSwgMTgsIAotICAgIDE5LCAyMzQsIDEwMSwgMTgsIDE5LCAyMzQsIDkyLCAxOCwgMTksIDIzNCwgMzcsIDE4LCAxOSwgMjM0LCAxOSwgMTgsIDE5LCAKLSAgICAyMTMsIDEwNCwgMjM0LCAxOSwgMTgsIDE5LCAxODEsIDE4LCAxOSwgMjM1LCAxNCwgMTgsIDE5LCAyMzMsIDIwMCwgMTgsIAotICAgIDE5LCAxNDgsIDIzMywgMjAwLCAxOCwgMTksIDIzMywgMTk4LCAxOCwgMTksIDE0OCwgMjMzLCAxOTgsIDE4LCAxOSwgMjMzLCAKLSAgICAxOTcsIDE4LCAxOSwgMTQ4LCAyMzMsIDE5NywgMTgsIDE5LCAyMzMsIDE5NiwgMTgsIDE5LCAxNDgsIDIzMywgMTk2LCAxOCwgCi0gICAgMTksIDIzMywgMTk1LCAxOCwgMTksIDE0OCwgMjMzLCAxOTUsIDE4LCAxOSwgMjMzLCAyMDQsIDE4LCAxOSwgMTQ4LCAyMzMsIAotICAgIDIwNCwgMTgsIDE5LCAyMzMsIDIwMywgMTgsIDE5LCAxNDgsIDIzMywgMjAzLCAxOCwgMTksIDIzMCwgMTEsIDIzMywgMjAzLCAKLSAgICAxOCwgMTksIDIzNSwgMjcsIDE4LCAxOSwgMjMzLCAyMDUsIDE4LCAxOSwgMjE5LCAyMTQsIDIzNCwgMTgyLCAxOCwgMTksIAotICAgIDIxOSwgMjE0LCAyMzQsIDkzLCAxOCwgMTksIDIxOSwgMjE0LCAyMzQsIDMyLCAxOCwgMTksIDIxOSwgMjE0LCAyMzQsIDI1MiwgCi0gICAgMTgsIDE5LCAyNTAsIDEyNCwgMTgsIDE5LCAyNTAsIDIxNywgMTgsIDE5LCAyNDksIDI0NCwgMTgsIDE5LCAyNDksIDIzNCwgCi0gICAgMTgsIDE5LCAyNDksIDE3NSwgMTgsIDE5LCAyNDksIDExMywgMTgsIDE5LCAyMTMsIDEwNCwgMjQ5LCAxMTMsIDE4LCAxOSwgCi0gICAgMjUwLCAyMTksIDE4LCAxOSwgMjUwLCAyMTgsIDE4LCAxOSwgMjQ5LCAyMiwgMTgsIDE5LCAxNDgsIDI0OSwgMjIsIDE4LCAKLSAgICAxOSwgMjQ5LCAyMCwgMTgsIDE5LCAxNDgsIDI0OSwgMjAsIDE4LCAxOSwgMjQ5LCAxOSwgMTgsIDE5LCAxNDgsIDI0OSwgMTksIAotICAgIDE4LCAxOSwgMjQ5LCAxOCwgMTgsIDE5LCAxNDgsIDI0OSwgMTgsIDE4LCAxOSwgMjQ5LCAxNywgMTgsIDE5LCAxNDgsIDI0OSwgCi0gICAgMTcsIDE4LCAxOSwgMjQ5LCAyNCwgMTgsIDE5LCAxNDgsIDI0OSwgMjQsIDE4LCAxOSwgMjQ5LCAyMywgMTgsIDE5LCAxNDgsIAotICAgIDI0OSwgMjMsIDE4LCAxOSwgMjMwLCAxMSwgMjQ5LCAyMywgMTgsIDE5LCAyNTAsIDI1MiwgMTgsIDE5LCAyMjIsIDEyNywgCi0gICAgMjE3LCAxNjMsIDE4LCAxOSwgMjMxLCAxNTYsIDE4LCAxOSwgMjMyLCA0MCwgMTgsIDE5LCAyMzEsIDQyLCAxOCwgMTksIAotICAgIDIzMSwgMTQsIDE4LCAxOSwgMjMwLCAyMzEsIDE4LCAxOSwgMjMwLCAyMDIsIDE4LCAxOSwgMjEzLCAxMDQsIDIzMCwgMjAyLCAKLSAgICAxOCwgMTksIDE4OCwgMTgsIDE5LCAyMzIsIDQxLCAxOCwgMTksIDIzMCwgMTEyLCAxOCwgMTksIDE0OCwgMjMwLCAxMTIsIAotICAgIDE4LCAxOSwgMjMwLCAxMTAsIDE4LCAxOSwgMTQ4LCAyMzAsIDExMCwgMTgsIDE5LCAyMzAsIDEwOSwgMTgsIDE5LCAxNDgsIAotICAgIDIzMCwgMTA5LCAxOCwgMTksIDIzMCwgMTA4LCAxOCwgMTksIDE0OCwgMjMwLCAxMDgsIDE4LCAxOSwgMjMwLCAxMDcsIDE4LCAKLSAgICAxOSwgMTQ4LCAyMzAsIDEwNywgMTgsIDE5LCAyMzAsIDExNCwgMTgsIDE5LCAxNDgsIDIzMCwgMTE0LCAxOCwgMTksIDIzMCwgCi0gICAgMTEzLCAxOCwgMTksIDE0OCwgMjMwLCAxMTMsIDE4LCAxOSwgMjMwLCAxMSwgMjMwLCAxMTMsIDE4LCAxOSwgMTgzLCAxOCwgCi0gICAgMTksIDE0OCwgMTgzLCAxOCwgMTksIDIzMSwgNDUsIDE4LCAxOSwgMjUzLCAxMjEsIDE4MywgMTgsIDE5LCAyMjIsIDEyNywgCi0gICAgMTgzLCAxOCwgMTksIDIyOSwgMTg3LCAxOCwgMTksIDIzMCwgNDIsIDE4LCAxOSwgMjI5LCA2NCwgMTgsIDE5LCAyMjksIDM5LCAKLSAgICAxOCwgMTksIDIyOCwgMTg1LCAxOCwgMTksIDIyOCwgMTc1LCAxOCwgMTksIDIxMywgMTA0LCAyMjgsIDE3NSwgMTgsIDE5LCAKLSAgICAyMDUsIDE4LCAxOSwgMjMwLCA0MywgMTgsIDE5LCAyMjgsIDI5LCAxOCwgMTksIDE0OCwgMjI4LCAyOSwgMTgsIDE5LCAyMjgsIAotICAgIDMxLCAxOCwgMTksIDE0OCwgMjI4LCAzMSwgMTgsIDE5LCAyMjgsIDMwLCAxOCwgMTksIDE0OCwgMjI4LCAzMCwgMTgsIDE5LCAKLSAgICAyMzAsIDExLCAyMjgsIDMwLCAxOCwgMTksIDIwNCwgMTgsIDE5LCA2NiwgMjI5LCAxNjEsIDE4LCAxOSwgMjI5LCA2OSwgMTgsIAotICAgIDE5LCAyMzMsIDgyLCAxOCwgMTksIDIzMywgMTU1LCAxOCwgMTksIDIzMywgMTMsIDE4LCAxOSwgMjMyLCAyNTUsIDE4LCAxOSwgCi0gICAgMjMyLCAyMDgsIDE4LCAxOSwgMjMyLCAxODAsIDE4LCAxOSwgMjEzLCAxMDQsIDIzMiwgMTgwLCAxOCwgMTksIDIzMywgMTU3LCAKLSAgICAxOCwgMTksIDIzMywgMTU2LCAxOCwgMTksIDIzMiwgMTI3LCAxOCwgMTksIDE0OCwgMjMyLCAxMjcsIDE4LCAxOSwgMjMyLCAKLSAgICAxMjYsIDE4LCAxOSwgMTQ4LCAyMzIsIDEyNiwgMTgsIDE5LCAyMzIsIDEyNSwgMTgsIDE5LCAxNDgsIDIzMiwgMTI1LCAxOCwgCi0gICAgMTksIDIzMiwgMTI0LCAxOCwgMTksIDE0OCwgMjMyLCAxMjQsIDE4LCAxOSwgMjMyLCAxMjMsIDE4LCAxOSwgMTQ4LCAyMzIsIAotICAgIDEyMywgMTgsIDE5LCAyMzIsIDEyOSwgMTgsIDE5LCAxNDgsIDIzMiwgMTI5LCAxOCwgMTksIDIzMiwgMTI4LCAxOCwgMTksIAotICAgIDE0OCwgMjMyLCAxMjgsIDE4LCAxOSwgMTUwLCAxOCwgMTksIDE0OCwgMTUwLCAxOCwgMTksIDEzOCwgMTUwLCAxOCwgMTksIAotICAgIDIyMiwgMTAwLCAxOCwgMTksIDIyMiwgMTk4LCAxOCwgMTksIDIyMCwgMTE3LCAxOCwgMTksIDIyMCwgMTAxLCAxOCwgMTksIAotICAgIDIxOSwgMjQyLCAxOCwgMTksIDIxOSwgMjI2LCAxOCwgMTksIDIxMywgMTA0LCAyMTksIDIyNiwgMTgsIDE5LCAyMjIsIDIwMiwgCi0gICAgMTgsIDE5LCAyMjIsIDIwMCwgMTgsIDE5LCAyMTgsIDE5NCwgMTgsIDE5LCAxNDgsIDIxOCwgMTk0LCAxOCwgMTksIDIxOCwgCi0gICAgMTg4LCAxOCwgMTksIDE0OCwgMjE4LCAxODgsIDE4LCAxOSwgMjE4LCAxODcsIDE4LCAxOSwgMTQ4LCAyMTgsIDE4NywgMTgsIAotICAgIDE5LCAyMTgsIDE4MywgMTgsIDE5LCAxNDgsIDIxOCwgMTgzLCAxOCwgMTksIDIxOCwgMTgyLCAxOCwgMTksIDE0OCwgMjE4LCAKLSAgICAxODIsIDE4LCAxOSwgMjE4LCAxOTgsIDE4LCAxOSwgMTQ4LCAyMTgsIDE5OCwgMTgsIDE5LCAyMTgsIDE5NywgMTgsIDE5LCAKLSAgICAxNDgsIDIxOCwgMTk3LCAxOCwgMTksIDIzMCwgMTEsIDIxOCwgMTk3LCAxOCwgMTksIDE5NywgMTgsIDE5LCAyNTMsIDEyMSwgCi0gICAgMTk3LCAxOCwgMTksIDIxOCwgMTk5LCAxOCwgMTksIDI1MSwgMTQxLCAxOTcsIDE4LCAxOSwgMjMwLCAxOTcsIDIyMCwgMzYsIAotICAgIDE4LCAxOSwgMjMwLCAxMSwgMjIwLCAyNywgMTgsIDE5LCAyMzAsIDExLCAyMjMsIDIsIDE4LCAxOSwgMjMwLCAxMSwgMjE5LCAKLSAgICAxNjcsIDE4LCAxOSwgMjMwLCAxMSwgMjE5LCAyOSwgMTgsIDE5LCAyMzAsIDExLCAyMjAsIDI2LCAxOCwgMTksIDIzMCwgMTEsIAotICAgIDIyMiwgMTAzLCAxOCwgMTksIDIyMCwgMjQzLCAxOCwgMTksIDIyMCwgMjEyLCAxOCwgMTksIDIyMCwgMjA3LCAxOCwgMTksIAotICAgIDIyMCwgMTg3LCAxOCwgMTksIDIyMCwgMTgxLCAxOCwgMTksIDIyMSwgMjQsIDE4LCAxOSwgMjIxLCAyMCwgMTgsIDE5LCAKLSAgICAyMjAsIDEzMiwgMTgsIDE5LCAxNDgsIDIyMCwgMTMyLCAxOCwgMTksIDIyMCwgMTMxLCAxOCwgMTksIDE0OCwgMjIwLCAxMzEsIAotICAgIDE4LCAxOSwgMjIwLCAxMzAsIDE4LCAxOSwgMTQ4LCAyMjAsIDEzMCwgMTgsIDE5LCAyMjAsIDEyOSwgMTgsIDE5LCAxNDgsIAotICAgIDIyMCwgMTI5LCAxOCwgMTksIDIyMCwgMTI4LCAxOCwgMTksIDE0OCwgMjIwLCAxMjgsIDE4LCAxOSwgMjIwLCAxMzQsIDE4LCAKLSAgICAxOSwgMTQ4LCAyMjAsIDEzNCwgMTgsIDE5LCAyMjAsIDEzMywgMTgsIDE5LCAxNDgsIDIyMCwgMTMzLCAxOCwgMTksIDIyMSwgCi0gICAgMjYsIDE4LCAxOSwgMjEzLCAzOCwgMTgsIDE5LCAyMTMsIDg5LCAxOCwgMTksIDIxMiwgMjU1LCAxOCwgMTksIDIxMiwgMjQ2LCAKLSAgICAxOCwgMTksIDIxMiwgMjM1LCAxOCwgMTksIDIxMiwgMjIwLCAxOCwgMTksIDIxMywgMTA0LCAyMTIsIDIyMCwgMTgsIDE5LCAKLSAgICAxODYsIDE4LCAxOSwgMjEzLCA5MSwgMTgsIDE5LCAyMTIsIDE2NiwgMTgsIDE5LCAxNDgsIDIxMiwgMTY2LCAxOCwgMTksIAotICAgIDIxMiwgMTY1LCAxOCwgMTksIDE0OCwgMjEyLCAxNjUsIDE4LCAxOSwgMjEyLCAxNjQsIDE4LCAxOSwgMTQ4LCAyMTIsIDE2NCwgCi0gICAgMTgsIDE5LCAyMTIsIDE2MywgMTgsIDE5LCAxNDgsIDIxMiwgMTYzLCAxOCwgMTksIDIxMiwgMTYyLCAxOCwgMTksIDE0OCwgCi0gICAgMjEyLCAxNjIsIDE4LCAxOSwgMjEyLCAxNjgsIDE4LCAxOSwgMTQ4LCAyMTIsIDE2OCwgMTgsIDE5LCAyMTIsIDE2NywgMTgsIAotICAgIDE5LCAxNDgsIDIxMiwgMTY3LCAxOCwgMTksIDIzMCwgMTEsIDIxMiwgMTY3LCAxOCwgMTksIDIxMywgMTA1LCAxOCwgMTksIAotICAgIDI1MSwgMTgyLCAyMTMsIDEwNSwgMTgsIDE5LCAxNDgsIDIxMywgMTA1LCAxOCwgMTksIDIyMiwgMTI3LCAyMTIsIDI1NSwgCi0gICAgMTgsIDE5LCAyMjQsIDIxLCAxOCwgMTksIDIyNCwgMTEyLCAyMjQsIDIxLCAxOCwgMTksIDE0OCwgMjMzLCA4MiwgMTgsIDE5LCAKLSAgICAyMjQsIDczLCAxOCwgMTksIDIyMywgMTg4LCAxOCwgMTksIDIyMywgMTM2LCAxOCwgMTksIDIyMywgMTEyLCAxOCwgMTksIAotICAgIDIyMywgOTksIDE4LCAxOSwgMTQ4LCAyMzIsIDIwOCwgMTgsIDE5LCAyMDMsIDE4LCAxOSwgMjI0LCA3NCwgMTgsIDE5LCAKLSAgICAxNDgsIDIzMywgMTU3LCAxOCwgMTksIDIyMywgMjAsIDE4LCAxOSwgMTQ4LCAyMjMsIDIwLCAxOCwgMTksIDE0OSwgMTgsIAotICAgIDE5LCAxNDgsIDE0OSwgMTgsIDE5LCAxMzgsIDE0OSwgMTgsIDE5LCAyNDQsIDEyMywgMTgsIDE5LCAyNDQsIDE2MSwgMTgsIAotICAgIDE5LCAyNDQsIDkwLCAxOCwgMTksIDI0NCwgNzcsIDE4LCAxOSwgMjQ0LCAxMiwgMTgsIDE5LCAyNDQsIDMsIDE4LCAxOSwgCi0gICAgMjQ0LCAxNjQsIDE4LCAxOSwgMjQ0LCAxNjMsIDE4LCAxOSwgMjQzLCAxODcsIDE4LCAxOSwgMTQ4LCAyNDMsIDE4NywgMTgsIAotICAgIDE5LCAyNDQsIDIzMCwgMTgsIDE5LCAyMTcsIDE0OCwgMTgsIDE5LCAyMzAsIDk2LCAyMTcsIDE0OCwgMTgsIDE5LCAyMTcsIAotICAgIDEyOCwgMTgsIDE5LCAyMzAsIDk2LCAyMTcsIDEyOCwgMTgsIDE5LCAyMTcsIDEyNCwgMTgsIDE5LCAyMzAsIDk2LCAyMTcsIAotICAgIDEyNCwgMTgsIDE5LCAyMTcsIDEwOSwgMTgsIDE5LCAyMTcsIDEwNiwgMTgsIDE5LCAyMTcsIDE2MSwgMTgsIDE5LCAyMTcsIAotICAgIDE2MCwgMTgsIDE5LCAyMTcsIDgxLCAxOCwgMTksIDE0OCwgMjE3LCA4MSwgMTgsIDE5LCAyMTcsIDE2MywgMTgsIDE5LCAKLSAgICAyMTYsIDEwMywgMTgsIDE5LCAyMTYsIDEwMSwgMTgsIDE5LCAyMTYsIDEwMCwgMTgsIDE5LCAyMTYsIDEwNSwgMTgsIDE5LCAKLSAgICAyMTYsIDEwNiwgMTgsIDE5LCAyMTYsIDE4LCAxOCwgMTksIDIxNiwgMTcsIDE4LCAxOSwgMjE2LCAxNiwgMTgsIDE5LCAyMTYsIAotICAgIDE5LCAxOCwgMTksIDIyOCwgNDksIDI0MSwgMjIyLCAxOCwgMTksIDIyOCwgNDksIDI0MSwgMTY1LCAxOCwgMTksIDIyOCwgCi0gICAgNDksIDI0MSwgMTQ3LCAxOCwgMTksIDIyOCwgNDksIDI0MSwgNTQsIDE4LCAxOSwgMjI4LCA0OSwgMjQxLCAzOSwgMTgsIDE5LCAKLSAgICAyMjgsIDQ5LCAxNTksIDE4LCAxOSwgMjI4LCA0OSwgMjQyLCAyNywgMTgsIDE5LCAyMjgsIDQ5LCAyNDIsIDQxLCAxOCwgMTksIAotICAgIDIyOCwgNDgsIDI0MiwgNDEsIDE4LCAxOSwgMjQxLCAxNDAsIDE4LCAxOSwgMjI0LCAyMjgsIDE4LCAxOSwgMjI0LCAxOTgsIAotICAgIDE4LCAxOSwgMjI0LCAxOTMsIDE4LCAxOSwgMjI0LCAxODcsIDE4LCAxOSwgMjI0LCAxODIsIDE4LCAxOSwgMjI0LCAyMzIsIAotICAgIDE4LCAxOSwgMjI0LCAyMzEsIDE4LCAxOSwgMjI0LCAyNDAsIDE4LCAxOSwgMjE3LCA4LCAxOCwgMTksIDIxNywgNiwgMTgsIAotICAgIDE5LCAyMTcsIDUsIDE4LCAxOSwgMjE3LCA5LCAxOCwgMTksIDE0OCwgMjI0LCAyMSwgMTgsIDE5LCAxNDgsIDIyMywgMTg4LCAKLSAgICAxOCwgMTksIDE0OCwgMjIzLCAxMTIsIDE4LCAxOSwgMTQ4LCAyMDMsIDE4LCAxOSwgMjI5LCAxNTcsIDE4LCAxOSwgMjI5LCAKLSAgICAxMTMsIDE4LCAxOSwgMjI5LCAxMDksIDE4LCAxOSwgMjI5LCA5MCwgMTgsIDE5LCAyMjksIDg1LCAxOCwgMTksIDIyOSwgCi0gICAgMTU5LCAxOCwgMTksIDIyOSwgMTU4LCAxOCwgMTksIDIyOSwgMTYxLCAxOCwgMTksIDIyOCwgMTk2LCAxOCwgMTksIDIyMiwgCi0gICAgMTI3LCAyMjAsIDI0MywgMTgsIDE5LCAyMjIsIDEyNywgMjIwLCAyMTIsIDE4LCAxOSwgMjIyLCAxMjcsIDIyMCwgMTg3LCAKLSAgICAxOCwgMTksIDIyMiwgMTI3LCAyMjEsIDI0LCAxOCwgMTksIDIxMywgMjAwLCAyMTcsIDE0OCwgMTgsIDE5LCAyMTMsIDIwMCwgCi0gICAgMjE3LCAxMjgsIDE4LCAxOSwgMjEzLCAyMDAsIDIxNywgMTA5LCAxOCwgMTksIDIxMywgMjAwLCAyMTcsIDE2MSwgMTgsIDE5LCAKLSAgICAyMTMsIDIwMCwgMjE3LCAxNjMsIDE4LCAxOSwgMjMzLCAxOSwgMTgsIDE5LCAyMzMsIDE4LCAxOCwgMTksIDIzMywgMTcsIAotICAgIDE4LCAxOSwgMjMzLCAxNiwgMTgsIDE5LCAyMzMsIDI1LCAxOCwgMTksIDIzMywgMjQsIDE4LCAxOSwgMjMzLCAyNiwgMTgsIAotICAgIDE5LCAyMTcsIDE2MiwgMjE3LCAxNDgsIDE4LCAxOSwgMjE3LCAxNjIsIDIxNywgMTI4LCAxOCwgMTksIDIxNywgMTYyLCAKLSAgICAyMTcsIDEyNCwgMTgsIDE5LCAyMTcsIDE2MiwgMjE3LCAxMDksIDE4LCAxOSwgMjE3LCAxNjIsIDIxNywgMTA2LCAxOCwgMTksIAotICAgIDIxNywgMTYyLCAyMTcsIDE2MSwgMTgsIDE5LCAyMTcsIDE2MiwgMjE3LCAxNjAsIDE4LCAxOSwgMjE3LCAxNjIsIDIxNywgCi0gICAgMTYzLCAxOCwgMTksIDI1NCwgOTcsIDI1MywgNzQsIDE4LCAxOSwgMjUxLCAxNDEsIDc0LCAxOCwgMTksIDI1MSwgMTQxLCAKLSAgICA3MiwgMTgsIDE5LCAyNTEsIDE0MSwgNzUsIDE4LCAxOSwgMjUxLCAxNDEsIDYxLCAxOCwgMTksIDI1MSwgMTQxLCAyMTQsIDYsIAotICAgIDE4LCAxOSwgMjUxLCAxNDEsIDIxMywgMjM1LCAxOCwgMTksIDI1MSwgMTQxLCAyMTMsIDIxNCwgMTgsIDE5LCAyNTEsIDE0MSwgCi0gICAgMjE0LCA0OSwgMTgsIDE5LCAyNTEsIDE0MSwgMjI5LCAxODcsIDE4LCAxOSwgMjUxLCAxNDEsIDIyOSwgNjQsIDE4LCAxOSwgCi0gICAgMjUxLCAxNDEsIDIyOCwgMTg1LCAxOCwgMTksIDI1MSwgMTQxLCAyMDUsIDE4LCAxOSwgMjUxLCAxNDEsIDIzNCwgMTg4LCAKLSAgICAxOCwgMTksIDI1MSwgMTQxLCAyMzQsIDEwMSwgMTgsIDE5LCAyNTEsIDE0MSwgMjM0LCAzNywgMTgsIDE5LCAyNTEsIDE0MSwgCi0gICAgMTgxLCAxOCwgMTksIDIyMiwgMTI3LCAyNDEsIDIyMiwgMTgsIDE5LCAyMjIsIDEyNywgMjQxLCAxNjUsIDE4LCAxOSwgMjIyLCAKLSAgICAxMjcsIDI0MSwgNTQsIDE4LCAxOSwgMjIyLCAxMjcsIDE1OSwgMTgsIDE5LCA2NiwgMjQyLCAxOTYsIDE4LCAxOSwgNjYsIAotICAgIDI0MiwgMjAwLCAxOCwgMTksIDY2LCAyNDIsIDIxMiwgMTgsIDE5LCA2NiwgMjQyLCAyMTEsIDE4LCAxOSwgNjYsIDI0MiwgCi0gICAgMjAxLCAxOCwgMTksIDY2LCAyNDIsIDIyNSwgMTgsIDE5LCA2NiwgMjIzLCA1MSwgMTgsIDE5LCA2NiwgMjIzLCAxMTIsIDE4LCAKLSAgICAxOSwgNjYsIDIyNCwgMjEsIDE4LCAxOSwgNjYsIDIyNCwgMSwgMTgsIDE5LCA2NiwgMjIzLCAxODgsIDE4LCAxOSwgNjYsIAotICAgIDIwMywgMTgsIDE5LCA2NiwgMjEzLCAxODMsIDE4LCAxOSwgNjYsIDIxMywgMjE0LCAxOCwgMTksIDY2LCAyMTQsIDYsIDE4LCAKLSAgICAxOSwgNjYsIDIxNCwgMSwgMTgsIDE5LCA2NiwgMjEzLCAyMzUsIDE4LCAxOSwgNjYsIDIxNCwgNDksIDE4LCAxOSwgNjYsIAotICAgIDI0MCwgMTg2LCAxOCwgMTksIDY2LCAyNDAsIDE4NywgMTgsIDE5LCA2NiwgMjQwLCAxOTAsIDE4LCAxOSwgNjYsIDI0MCwgCi0gICAgMTg5LCAxOCwgMTksIDY2LCAyNDAsIDE4OCwgMTgsIDE5LCA2NiwgMjQwLCAxOTIsIDE4LCAxOSwgNjYsIDIxNywgOTAsIDE4LCAKLSAgICAxOSwgNjYsIDIxNywgMTA5LCAxOCwgMTksIDY2LCAyMTcsIDE0OCwgMTgsIDE5LCA2NiwgMjE3LCAxNDcsIDE4LCAxOSwgNjYsIAotICAgIDIxNywgMTI4LCAxOCwgMTksIDY2LCAyMTcsIDE2MSwgMTgsIDE5LCA2NiwgMjE2LCA4NiwgMTgsIDE5LCA2NiwgMjE2LCA5NSwgCi0gICAgMTgsIDE5LCA2NiwgMjE2LCAxMTIsIDE4LCAxOSwgNjYsIDIxNiwgMTExLCAxOCwgMTksIDY2LCAyMTYsIDk2LCAxOCwgMTksIAotICAgIDY2LCAyMTYsIDExNSwgMTgsIDE5LCA2NiwgMjI1LCAzNSwgMTgsIDE5LCA2NiwgMjI1LCAxNTAsIDE4LCAxOSwgNjYsIDIyNiwgCi0gICAgOTYsIDE4LCAxOSwgNjYsIDIyNiwgODYsIDE4LCAxOSwgNjYsIDIyNSwgMjQwLCAxOCwgMTksIDY2LCAxOTMsIDE4LCAxOSwgCi0gICAgNjYsIDIyNiwgMjI5LCAxOCwgMTksIDY2LCAyNDIsIDkyLCAxOCwgMTksIDY2LCAyNDIsIDE1MCwgMTgsIDE5LCA2NiwgMjQzLCAKLSAgICAzOCwgMTgsIDE5LCA2NiwgMjQzLCAzMSwgMTgsIDE5LCA2NiwgMjQyLCAxOTAsIDE4LCAxOSwgNjYsIDI0MywgMTEwLCAxOCwgCi0gICAgMTksIDY2LCAyMzQsIDEwOCwgMTgsIDE5LCA2NiwgMjM0LCAxMTMsIDE4LCAxOSwgNjYsIDIzNCwgMTI1LCAxOCwgMTksIDY2LCAKLSAgICAyMzQsIDEyNCwgMTgsIDE5LCA2NiwgMjM0LCAxMTgsIDE4LCAxOSwgNjYsIDIzNCwgMTM4LCAxOCwgMTksIDY2LCAyMzQsIAotICAgIDUwLCAxOCwgMTksIDY2LCAyMzQsIDUxLCAxOCwgMTksIDY2LCAyMzQsIDU0LCAxOCwgMTksIDY2LCAyMzQsIDUzLCAxOCwgCi0gICAgMTksIDY2LCAyMzQsIDUyLCAxOCwgMTksIDY2LCAyMzQsIDU1LCAxOCwgMTksIDY2LCAyMzQsIDU2LCAxOCwgMTksIDY2LCAKLSAgICAyMjgsIDkyLCAxOCwgMTksIDY2LCAyMjgsIDE4NSwgMTgsIDE5LCA2NiwgMjI5LCAxODcsIDE4LCAxOSwgNjYsIDIyOSwgCi0gICAgMTg0LCAxOCwgMTksIDY2LCAyMjksIDY0LCAxOCwgMTksIDY2LCAyMDUsIDE4LCAxOSwgNjYsIDIzMCwgMTcyLCAxOCwgMTksIAotICAgIDY2LCAyMzAsIDIzMSwgMTgsIDE5LCA2NiwgMjMxLCAxNTYsIDE4LCAxOSwgNjYsIDIzMSwgMTQ1LCAxOCwgMTksIDY2LCAKLSAgICAyMzEsIDQyLCAxOCwgMTksIDY2LCAxODgsIDE4LCAxOSwgNjYsIDIxMiwgMjAzLCAxOCwgMTksIDY2LCAyMTIsIDIzNSwgMTgsIAotICAgIDE5LCA2NiwgMjEzLCAzOCwgMTgsIDE5LCA2NiwgMjEzLCAzNSwgMTgsIDE5LCA2NiwgMjEyLCAyNTUsIDE4LCAxOSwgNjYsIAotICAgIDE4NiwgMTgsIDE5LCA2NiwgMjM1LCA1NCwgMTgsIDE5LCAyMjIsIDEyNywgMjM1LCA1NCwgMTgsIDE5LCA2NiwgMjM1LCA3MSwgCi0gICAgMTgsIDE5LCA2NiwgMjM1LCAxMjcsIDE4LCAxOSwgNjYsIDIzNSwgMTI1LCAxOCwgMTksIDY2LCAyMzUsIDExMCwgMTgsIDE5LCAKLSAgICAyMjIsIDEyNywgMjM1LCAxMTAsIDE4LCAxOSwgNjYsIDIzNSwgMTM5LCAxOCwgMTksIDY2LCAyMzUsIDg0LCAxOCwgMTksIAotICAgIDY2LCAyMzUsIDg4LCAxOCwgMTksIDY2LCAyMzUsIDk4LCAxOCwgMTksIDY2LCAyMzUsIDk3LCAxOCwgMTksIDY2LCAyMzUsIAotICAgIDk2LCAxOCwgMTksIDY2LCAyMzUsIDk5LCAxOCwgMTksIDY2LCAyMzIsIDE1NiwgMTgsIDE5LCA2NiwgMjMyLCAyMDgsIDE4LCAKLSAgICAxOSwgNjYsIDIzMywgODIsIDE4LCAxOSwgNjYsIDIzMywgNzQsIDE4LCAxOSwgNjYsIDIzMywgMTMsIDE4LCAxOSwgNjYsIAotICAgIDIzMywgMTU3LCAxOCwgMTksIDY2LCAyNDcsIDEwMywgMTgsIDE5LCA2NiwgMjQ3LCAxMDQsIDE4LCAxOSwgNjYsIDI0NywgCi0gICAgMTA3LCAxOCwgMTksIDY2LCAyNDcsIDEwNiwgMTgsIDE5LCA2NiwgMjQ3LCAxMDUsIDE4LCAxOSwgNjYsIDI0NywgMTA4LCAKLSAgICAxOCwgMTksIDY2LCAyMzMsIDE1LCAxOCwgMTksIDY2LCAyMzMsIDE3LCAxOCwgMTksIDY2LCAyMzMsIDIxLCAxOCwgMTksIAotICAgIDY2LCAyMzMsIDIwLCAxOCwgMTksIDY2LCAyMzMsIDE5LCAxOCwgMTksIDY2LCAyMzMsIDI1LCAxOCwgMTksIDY2LCAyMTcsIAotICAgIDMsIDE4LCAxOSwgNjYsIDIxNywgNSwgMTgsIDE5LCA2NiwgMjE3LCA4LCAxOCwgMTksIDY2LCAyMTcsIDcsIDE4LCAxOSwgCi0gICAgNjYsIDIxNywgNiwgMTgsIDE5LCA2NiwgMjE3LCA5LCAxOCwgMTksIDY2LCAyMTYsIDI1NSwgMTgsIDE5LCA2NiwgMjE3LCAwLCAKLSAgICAxOCwgMTksIDY2LCAyMTcsIDExLCAxOCwgMTksIDY2LCAyMTcsIDEwLCAxOCwgMTksIDY2LCAyMTcsIDEsIDE4LCAxOSwgNjYsIAotICAgIDIxNywgMTIsIDE4LCAxOSwgNjYsIDIxMiwgOCwgMTgsIDE5LCA2NiwgMjEyLCAxNiwgMTgsIDE5LCA2NiwgMjEyLCA4NywgCi0gICAgMTgsIDE5LCA2NiwgMjEyLCA4NSwgMTgsIDE5LCA2NiwgMjEyLCAzNywgMTgsIDE5LCA2NiwgMjEyLCAxMDksIDE4LCAxOSwgCi0gICAgNjYsIDIxMiwgMTUyLCAxOCwgMTksIDY2LCA3MCwgMjEyLCAxNTIsIDE4LCAxOSwgNjYsIDI0NSwgMjM5LCAxOCwgMTksIDY2LCAKLSAgICAyNDUsIDI0MCwgMTgsIDE5LCA2NiwgMjQ1LCAyNDcsIDE4LCAxOSwgNjYsIDI0NSwgMjQ2LCAxOCwgMTksIDY2LCAyNDUsIAotICAgIDI0MiwgMTgsIDE5LCA2NiwgMjQ1LCAyNDksIDE4LCAxOSwgNjYsIDIxOSwgMjcsIDE4LCAxOSwgNjYsIDIxOSwgMjQyLCAxOCwgCi0gICAgMTksIDY2LCAyMjIsIDEwMCwgMTgsIDE5LCA2NiwgMjIyLCA4OSwgMTgsIDE5LCA2NiwgMjIwLCAxMTcsIDE4LCAxOSwgNjYsIAotICAgIDIyMiwgMjAyLCAxOCwgMTksIDY2LCAyMjAsIDE1MCwgMTgsIDE5LCA2NiwgMjIwLCAxODcsIDE4LCAxOSwgNjYsIDIyMCwgCi0gICAgMjQzLCAxOCwgMTksIDY2LCAyMjAsIDI0MSwgMTgsIDE5LCA2NiwgMjIwLCAyMTIsIDE4LCAxOSwgNjYsIDIyMSwgMjQsIDE4LCAKLSAgICAxOSwgNjYsIDIyMSwgMjYsIDE4LCAxOSwgNjYsIDIxNiwgMTIyLCAxOCwgMTksIDY2LCAyMTYsIDEyNCwgMTgsIDE5LCA2NiwgCi0gICAgMjE2LCAxMzYsIDE4LCAxOSwgNjYsIDIxNiwgMTM1LCAxOCwgMTksIDY2LCAyMTYsIDEyNSwgMTgsIDE5LCA2NiwgMjE2LCAKLSAgICAxNDEsIDE4LCAxOSwgNjYsIDI1MCwgNiwgMTgsIDE5LCA2NiwgMjUwLCAyMywgMTgsIDE5LCA2NiwgMjUwLCA2NywgMTgsIAotICAgIDE5LCA2NiwgMjUwLCA2NCwgMTgsIDE5LCA2NiwgMjUwLCA0NywgMTgsIDE5LCA2NiwgMjUwLCA5MiwgMTgsIDE5LCA2NiwgCi0gICAgMjE2LCA4OSwgMTgsIDE5LCA2NiwgMjE2LCA5MCwgMTgsIDE5LCA2NiwgMjE2LCA5MywgMTgsIDE5LCA2NiwgMjE2LCA5MiwgCi0gICAgMTgsIDE5LCA2NiwgMjE2LCA5MSwgMTgsIDE5LCA2NiwgMjE2LCA5NCwgMTgsIDE5LCAyNTAsIDQ4LCA1MiwgMTgsIDE5LCAKLSAgICAyNDMsIDIwMCwgMjE5LCA2OSwgMTgsIDE5LCAyMjQsIDIyNCwgMTgsIDE5LCAyMjksIDE1NiwgMTgsIDE5LCAyMjgsIDE5MywgCi0gICAgMTgsIDE5LCAyMjgsIDE5MiwgMTgsIDE5LCAyMjgsIDE5MSwgMTgsIDE5LCAyMjgsIDE5MCwgMTgsIDE5LCAyMjgsIDE5NSwgCi0gICAgMTgsIDE5LCAyMjgsIDE5NCwgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCA3OSwgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCA3OCwgCi0gICAgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCA3NywgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCA3NiwgMTgsIDE5LCAyMTMsIDIwMCwgCi0gICAgMjE3LCA3NSwgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCA4MiwgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCA4MSwgMTgsIDE5LCAKLSAgICAyMTMsIDIwMCwgNDAsIDIxNywgMTYzLCAxOCwgMTksIDI1MSwgMTQxLCAyMTQsIDgyLCAyMjcsIDkyLCAyMTksIDIwNywgNzcsIAotICAgIDIyNywgOTIsIDEsIDI1MSwgMjI0LCAyMjcsIDkyLCAxLCAyMzIsIDE0NSwgMjI3LCA5MiwgMSwgMjQ0LCAxMjAsIDIyNywgCi0gICAgOTIsIDEsIDIyMiwgMTg2LCAyMjcsIDkyLCAxLCAyMjksIDI0LCAyMjcsIDkyLCAxLCAyMTUsIDE5NSwgMjI3LCA5MiwgMSwgCi0gICAgMjQ4LCAxNDIsIDIyNywgOTIsIDEsIDIxNywgMzMsIDIyNywgOTIsIDEsIDI0OSwgMTY3LCAyMjcsIDkyLCAxLCAyNTAsIAotICAgIDExNCwgMjI3LCA5MiwgMSwgMjMwLCAxNjEsIDIyNywgOTIsIDEsIDI0MiwgMTMyLCAyMjcsIDkyLCAxLCAyMjksIDE0NywgCi0gICAgMjI3LCA5MiwgMSwgMjE5LCA2MiwgMjI3LCA5MiwgMSwgMjIzLCA0NiwgMjI3LCA5MiwgMSwgMjU0LCAxMDUsIDIyNywgOTIsIAotICAgIDEsIDIyNywgNTMsIDIyNywgOTIsIDEsIDIxNSwgMTIxLCAyMjcsIDkyLCAxLCAyNDUsIDE4NywgMjI3LCA5MiwgMSwgMjM1LCAKLSAgICAxODYsIDIyNywgOTIsIDEsIDI0NSwgMTg4LCAyMjcsIDkyLCAxLCAyMjcsIDI0LCAyMjcsIDkyLCAxLCAyMTUsIDE3NiwgCi0gICAgMjI3LCA5MiwgMSwgMjM2LCAzNCwgMjI3LCA5MiwgMSwgMjQ1LCAxODUsIDIyNywgOTIsIDEsIDIyNiwgNzcsIDIyNywgOTIsIAotICAgIDI0NCwgMTE5LCA3NywgMjI3LCA5MiwgMjIzLCAyMDIsIDI0NCwgMTE5LCA3NywgMTY4LCAxLCAyNDQsIDExMCwgMjQ0LCAKLSAgICAxMDIsIDI0NCwgMTI0LCAyNDQsIDIzMCwgMTY4LCAxLCAyMTUsIDc5LCAxNjgsIDEsIDIxNSwgMTA2LCAyMTUsIDEyMiwgNjksIAotICAgIDE2OCwgMSwgMjEyLCAyMDUsIDE2OCwgMSwgMjEzLCAxMDUsIDE2OCwgMSwgMjE0LCA4MiwgMTY4LCAxLCAyMTcsIDg0LCAKLSAgICAyMTcsIDgzLCAyMTcsIDEwNCwgMTY4LCAxLCAyNDUsIDI1LCAxNjgsIDEsIDI1NCwgNCwgNjEsIDE2OCwgMSwgMjI3LCAxMCwgCi0gICAgNzUsIDE2OCwgMSwgMjU0LCAxNzcsIDYxLCAxNjgsIDEsIDI1NCwgMTMyLCAxNjgsIDEsIDIzMiwgMTg2LCA3NSwgMTY4LCAxLCAKLSAgICAyMjAsIDE2OCwgNzUsIDE2OCwgMSwgNzUsIDE2OCwgMSwgMjI3LCA5OSwgMTY4LCAxLCAyMjcsIDYyLCAxNjgsIDEsIDIyNCwgCi0gICAgNTUsIDIyNCwgNjcsIDIyMywgMjQ0LCAxNDksIDE2OCwgMSwgMjM0LCAxOTksIDE2OCwgMSwgMjUwLCAxMTEsIDE2OCwgMSwgCi0gICAgMjM0LCAyMDAsIDIzNSwgMjcsIDE2OCwgMSwgMjQzLCAxNzcsIDE2OCwgMSwgMjQ1LCA5NiwgMTY4LCAxLCAyNDMsIDM0LCAKLSAgICAyNDIsIDQ3LCAyNDMsIDE3NywgMTY4LCAxLCAyNDMsIDcyLCAxNjgsIDEsIDIxMywgMTc2LCAyMTMsIDE3MCwgMjE0LCA4MiwgCi0gICAgMTY4LCAxLCAyNDIsIDE5LCAyNDIsIDQxLCAxNjgsIDEsIDI0MiwgMjMsIDI0MiwgNDEsIDE2OCwgMSwgMjMyLCAxODgsIAotICAgIDI0MiwgNDEsIDE2OCwgMSwgMjIwLCAxNzEsIDI0MiwgNDEsIDE2OCwgMSwgMjMwLCA3LCAyMjgsIDE4LCAyMzAsIDgsIDIwNCwgCi0gICAgMTY4LCAxLCAyMjAsIDE2OSwgMjA0LCAxNjgsIDEsIDI0NiwgNjksIDE2OCwgMSwgMjM1LCAxNjYsIDIzNSwgMTcwLCAyMzUsIAotICAgIDE2MCwgNzIsIDE2OCwgMSwgNzQsIDE2OCwgMSwgMjM1LCAxMTgsIDIzNSwgMTQyLCAxNjgsIDEsIDI0MywgMTksIDE2OCwgMSwgCi0gICAgMjMyLCAxODksIDI1NCwgMTQ4LCAxNjgsIDEsIDIyMCwgMTczLCA2MSwgMTY4LCAxLCAyMzUsIDE1MiwgMjQ1LCA3MiwgMTY4LCAKLSAgICAxLCAyMjYsIDQwLCAyMjYsIDYxLCAyMjYsIDIyOSwgMTY4LCAxLCAyNTQsIDcyLCAyNDUsIDcxLCAxNjgsIDEsIDIxOSwgCi0gICAgMjExLCAxOTcsIDE2OCwgMSwgMjIwLCAxMDUsIDIzMiwgMTg1LCAxOTcsIDE2OCwgMSwgMjIwLCAxNjcsIDE5NywgMTY4LCAxLCAKLSAgICAyNTAsIDI1MiwgMTY4LCAxLCAyMTIsIDE1MiwgMTY4LCAxLCAyMTcsIDE2LCAyMTcsIDI2LCAyMTYsIDcsIDIxOCwgOTksIAotICAgIDE2OCwgMSwgMjIwLCAxNjYsIDIxOCwgOTksIDE2OCwgMSwgMjQ5LCAzLCAxNjgsIDEsIDI1MSwgMjA4LCAyNTEsIDIxMSwgCi0gICAgMjUxLCAxNDcsIDI1MywgNzQsIDE2OCwgMSwgMjIwLCAxNzIsIDI1MywgNzQsIDE2OCwgMSwgMjQ2LCA2OCwgMTY4LCAxLCAKLSAgICAyMjcsIDM2LCAxNjgsIDEsIDI0NSwgMTUzLCAyNDUsIDE1NSwgNzQsIDE2OCwgMSwgMjMxLCAyNDEsIDIzMSwgMjQ5LCAxODMsIAotICAgIDE2OCwgMSwgMjMyLCAxODcsIDE4MywgMTY4LCAxLCAyMjAsIDE3MCwgMTgzLCAxNjgsIDEsIDIzMywgOTcsIDIzMywgMTM3LCAKLSAgICAyMzIsIDE5NiwgMTUwLCAxNjgsIDEsIDI0NiwgNzAsIDE2OCwgMSwgMjM1LCAyMjcsIDE2OCwgMSwgMjM1LCAyMjgsIDE2OCwgCi0gICAgMSwgMjQ4LCAxNTMsIDI0OCwgMTU4LCAyNDksIDMsIDE2OCwgMSwgMjI3LCA2LCAyNDUsIDI0LCA3NSwgMTY4LCAxLCAyNDUsIAotICAgIDE4MywgMTY4LCAxLCAyMzUsIDE4NSwgMTY4LCAxLCAyNDksIDIxLCAxNjgsIDEsIDI1MCwgMjA1LCAxNjgsIDEsIDI1MCwgCi0gICAgMTIzLCAxNjgsIDEsIDIxOSwgMTAwLCAxNjgsIDEsIDIzMiwgMTg0LCAxNjgsIDEsIDIyMCwgMTY1LCAxNjgsIDEsIDI0MCwgCi0gICAgMTAzLCAxNjgsIDEsIDIyNCwgMjQwLCAxNjgsIDEsIDIxMywgMTY2LCAxNjgsIDIyMCwgODEsIDIyNSwgMjYsIDE2OCwgMjMwLCAKLSAgICAxNTUsIDIyNSwgMjYsIDE2OCwgMjQ5LCA3MSwgMjI1LCAyNiwgMTY4LCAyNTMsIDE3NywgODcsIDE2OCwgMjE2LCA0NywgODcsIAotICAgIDE2OCwgMjUxLCAyMjMsIDg3LCAyMTgsIDMyLCAxLCA2MSwgMjE4LCAzMiwgMSwgNzIsIDIxOCwgMzIsIDEsIDY5LCAyMTgsIAotICAgIDMyLCAxLCAxODEsIDIxOCwgMzIsIDEsIDI0MywgMTEwLCAyMTgsIDMyLCAxLCAyMjksIDE1OSwgMjE4LCAzMiwgMSwgMjE4LCAKLSAgICA1MiwgMjE4LCAzMiwgMSwgMjQ4LCAxNjQsIDIxOCwgMzIsIDEsIDIwNSwgMjE4LCAzMiwgMSwgMTkzLCAyMTgsIDMyLCAxLCAKLSAgICAyNTIsIDEwNywgMjE4LCAzMiwgMSwgMTg4LCAyMTgsIDMyLCAxLCAxODYsIDIxOCwgMzIsIDEsIDIzMywgMTU3LCAyMTgsIAotICAgIDMyLCAxLCAyMTQsIDQ5LCAyMTgsIDMyLCAxLCAyMjIsIDIwMiwgMjE4LCAzMiwgMSwgMTU5LCAyMTgsIDMyLCAzMCwgNSwgCi0gICAgNzIsIDIxOCwgMzIsIDMwLCA1LCA2OSwgMjE4LCAzMiwgNSwgMjE0LCAxMzMsIDI0MSwgMjQ2LCAxLCA2MSwgMjQxLCAyNDYsIAotICAgIDEsIDcyLCAyNDEsIDI0NiwgMSwgNjksIDI0MSwgMjQ2LCAxLCAxODEsIDI0MSwgMjQ2LCAxLCAyNDMsIDExMCwgMjQxLCAKLSAgICAyNDYsIDEsIDIyOSwgMTU5LCAyNDEsIDI0NiwgMSwgMjE4LCA1MiwgMjQxLCAyNDYsIDEsIDI0OCwgMTY0LCAyNDEsIDI0NiwgCi0gICAgMSwgMjA1LCAyNDEsIDI0NiwgMSwgMTkzLCAyNDEsIDI0NiwgMSwgMjUyLCAxMDcsIDI0MSwgMjQ2LCAxLCAxODgsIDI0MSwgCi0gICAgMjQ2LCAxLCAxODYsIDI0MSwgMjQ2LCAxLCAyMDMsIDI0MSwgMjQ2LCAxLCAyMzMsIDE1NywgMjQxLCAyNDYsIDEsIDIxNCwgCi0gICAgNDksIDI0MSwgMjQ2LCAxLCAyMjIsIDIwMiwgMjQxLCAyNDYsIDEsIDE1OSwgMjQxLCAyNDYsIDMwLCA1LCA3MiwgMjQxLCAKLSAgICAyNDYsIDMwLCA1LCA2OSwgMjQxLCAyNDYsIDUsIDIyNiwgMTc2LCAyMjYsIDIsIDIyMCwgODEsIDIyNSwgMjYsIDIyNiwgMiwgCi0gICAgNTEsIDIyNSwgMjYsIDI1MSwgNDksIDEsIDYxLCAyNTEsIDQ5LCAxLCA3MiwgMjUxLCA0OSwgMSwgNjksIDI1MSwgNDksIDEsIAotICAgIDE4MSwgMjUxLCA0OSwgMSwgMjQzLCAxMTAsIDI1MSwgNDksIDEsIDIyOSwgMTU5LCAyNTEsIDQ5LCAxLCAyMTgsIDUyLCAKLSAgICAyNTEsIDQ5LCAxLCAyNDgsIDE2NCwgMjUxLCA0OSwgMSwgMjA1LCAyNTEsIDQ5LCAxLCAxOTMsIDI1MSwgNDksIDEsIDI1MiwgCi0gICAgMTA3LCAyNTEsIDQ5LCAxLCAxODgsIDI1MSwgNDksIDEsIDE4NiwgMjUxLCA0OSwgMSwgMjAzLCAyNTEsIDQ5LCAxLCAyMzMsIAotICAgIDE1NywgMjUxLCA0OSwgMSwgMjE0LCA0OSwgMjUxLCA0OSwgMSwgMjIyLCAyMDIsIDI1MSwgNDksIDEsIDE1OSwgMjUxLCA0OSwgCi0gICAgMzAsIDUsIDcyLCAyNTEsIDQ5LCAzMCwgNSwgNjksIDIxOCwgMzEsIDEsIDYxLCAyMTgsIDMxLCAxLCA3MiwgMjE4LCAzMSwgCi0gICAgMSwgNjksIDIxOCwgMzEsIDEsIDE4MSwgMjE4LCAzMSwgMSwgMjQzLCAxMTAsIDIxOCwgMzEsIDEsIDIyOSwgMTU5LCAyMTgsIAotICAgIDMxLCAxLCAyMTgsIDUyLCAyMTgsIDMxLCAxLCAyNDgsIDE2NCwgMjE4LCAzMSwgMSwgMjA1LCAyMTgsIDMxLCAxLCAxOTMsIAotICAgIDIxOCwgMzEsIDEsIDI1MiwgMTA3LCAyMTgsIDMxLCAxLCAxODgsIDIxOCwgMzEsIDEsIDE4NiwgMjE4LCAzMSwgMSwgMjMzLCAKLSAgICAxNTcsIDIxOCwgMzEsIDEsIDIxNCwgNDksIDIxOCwgMzEsIDEsIDIyMiwgMjAyLCAyMTgsIDMxLCAzMCwgNSwgNzIsIDIxOCwgCi0gICAgMzEsIDMwLCA1LCA2OSwgODQsIDEsIDE4MSwgODQsIDEsIDIzNCwgMTM4LCA4NCwgMSwgMjM0LCAzNywgODQsIDEsIDIzNCwgCi0gICAgMTEzLCA4NCwgMSwgMjI5LCA5MCwgODQsIDEsIDI1MCwgMjE5LCA4NCwgMSwgMjUwLCA5MiwgODQsIDEsIDI0OSwgMTc1LCAKLSAgICA4NCwgMSwgMjUwLCAyMywgODQsIDEsIDIyNywgMjUzLCA4NCwgMSwgMjQ4LCAxNjQsIDg0LCAxLCAyMTYsIDEwNSwgODQsIDEsIAotICAgIDI0NywgOTksIDg0LCAxLCAyMTYsIDEwMCwgODQsIDEsIDIyOCwgMTg4LCA4NCwgMSwgMjE4LCA1MiwgODQsIDEsIDIxNywgCi0gICAgMTYxLCA4NCwgMSwgMTA4LCA4NCwgMSwgMjE3LCAxMDksIDg0LCAxLCAyMjgsIDE4NSwgODQsIDEsIDI1MiwgMTA3LCA4NCwgCi0gICAgMSwgMjI2LCAyMywgODQsIDEsIDIyNSwgMTUwLCA4NCwgMSwgMjI1LCAyNTMsIDg0LCAxLCAyMzAsIDIzMSwgODQsIDEsIAotICAgIDIxMiwgMjM1LCA4NCwgMSwgMjIzLCAxMTIsIDg0LCAxLCAyMzIsIDIwOCwgODQsIDEsIDIxNCwgMTE5LCA4NCwgMSwgMjIxLCAKLSAgICAyNCwgODQsIDEsIDIxOSwgMTIxLCA4NCwgMSwgMjIyLCAyMDIsIDg0LCAxLCAxNTksIDg0LCAxLCAyMzMsIDE1NywgODQsIDEsIAotICAgIDIyNCwgMjMyLCA4NCwgMjM1LCAyNDAsIDMwLCAyMjQsIDIxOCwgODQsIDIzNSwgMjQwLCAzMCwgMjI0LCAyMzEsIDg0LCAKLSAgICAyMzUsIDI0MCwgMzAsIDIyNCwgMTk4LCA4NCwgMjM1LCAyNDAsIDMwLCAyMjQsIDE5MywgODQsIDIzNSwgMjQwLCAzMCwgCi0gICAgMjI0LCAxNzUsIDg0LCAyMzUsIDI0MCwgMzAsIDIyNCwgMTQ3LCA4NCwgMjM1LCAyNDAsIDMwLCAyMjQsIDEzNSwgODQsIAotICAgIDIzNSwgMjQwLCAzMCwgMjI0LCAxMzQsIDg0LCAyMzUsIDI0MCwgMzAsIDIyMywgMTIsIDg0LCAyMzUsIDI0MCwgMzAsIDIyMywgCi0gICAgNSwgODQsIDIzNSwgMjQwLCAzMCwgMjMyLCAxMjEsIDg0LCAyMzUsIDI0MCwgMzAsIDIzMiwgMTEyLCA4NCwgMjM1LCAyNDAsIAotICAgIDMwLCAyMjQsIDIxMywgODQsIDIzNSwgMjQwLCAzMCwgMjI0LCAyMjQsIDg0LCAyMzUsIDI0MCwgMzAsIDIyNCwgMTgzLCAKLSAgICAyMTYsIDE1LCAxMTYsIDg0LCAyMzUsIDI0MCwgMzAsIDIyNCwgMTgzLCAyMTYsIDE1LCAxMDksIDg0LCAyMzUsIDI0MCwgMzAsIAotICAgIDIyNCwgMjE0LCA4NCwgMzAsIDIzNSwgMjI2LCAyNTMsIDIxNSwgODQsIDMwLCAyMzUsIDIyNiwgMjU0LCAyMzIsIDg0LCAzMCwgCi0gICAgNSwgMjU0LCAyMzIsIDg0LCAzMCwgNSwgNzIsIDg0LCAzMCwgNSwgMjM2LCAyOCwgODQsIDMwLCA1LCAyMTMsIDEwNSwgODQsIAotICAgIDMwLCA1LCAyMTIsIDE2MSwgODQsIDMwLCA1LCA2OSwgODQsIDMwLCA1LCAyMTUsIDkyLCA4NCwgMzAsIDUsIDIxNSwgMTk2LCAKLSAgICA4NCwgMzAsIDUsIDIyNywgOTksIDg0LCAzMCwgNSwgMTg2LCA4NCwgMzAsIDUsIDIzNiwgNTUsIDg0LCAzMCwgNSwgNzQsIAotICAgIDg0LCAzMCwgNSwgMjU0LCAxNDgsIDg0LCAzMCwgNSwgMjU0LCAxMDgsIDg0LCAzMCwgNSwgMjI3LCA0OSwgODQsIDMwLCA1LCAKLSAgICAyNTMsIDEwOCwgODQsIDUsIDIyOSwgMzcsIDg0LCA1LCAyMjQsIDE5LCA4NCwgNSwgMjEyLCAxNzIsIDg0LCA1LCAyMzAsIAotICAgIDEyMywgODQsIDUsIDIxNiwgMTcxLCA4NCwgNSwgMjUyLCA2MiwgODQsIDUsIDIyMywgMTA3LCA4NCwgNSwgMjE2LCAyNTEsIAotICAgIDg0LCA1LCAyMzQsIDI0NiwgODQsIDUsIDI1NCwgMTEwLCA4NCwgNSwgMjIyLCAxNjAsIDIyMiwgMTU0LCA4NCwgNSwgMjE0LCAKLSAgICAxMzAsIDg0LCA1LCAyNDksIDE3MCwgODQsIDUsIDI1MiwgMzcsIDg0LCA1LCAyMzQsIDEzMSwgODQsIDUsIDI1MiwgNTcsIAotICAgIDg0LCA1LCAyNTAsIDE5NywgMjI1LCAyMDQsIDIzMywgMjA5LCA4NCwgNSwgMjMzLCA1NCwgMjE2LCAyMzAsIDg0LCA1LCAKLSAgICAyNTEsIDE5NywgODQsIDUsIDIyNSwgMjU1LCAyMzAsIDE2OSwgODQsIDUsIDIzNCwgMTgsIDg0LCAyNDksIDM5LCAxNiwgCi0gICAgMjIzLCAxODEsIDg0LCA1LCAyNTMsIDkwLCA4NCwgNSwgMjUzLCAxMTEsIDg0LCAyMSwgMjEyLCA3OSwgODQsIDIxLCAxMTYsIAotICAgIDg0LCAyMSwgMTA5LCA4NCwgMjEsIDE2NiwgODQsIDIxLCAxNjMsIDg0LCAyMSwgMTgwLCA4NCwgMjEsIDE4OSwgODQsIDIxLCAKLSAgICAxOTgsIDg0LCAyMSwgMTk1LCA4NCwgMjEsIDIwMCwgODQsIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjE5LCAyMjksIDg0LCAKLSAgICAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIzMCwgMTQxLCA4NCwgMTYsIDIzMywgNTQsIDI1MywgMTEzLCAyMjUsIDIwMywgODQsIAotICAgIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjUxLCAyMjUsIDg0LCAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDI1MSwgMzIsIDg0LCAKLSAgICAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIyNSwgOTUsIDg0LCAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIyNSwgODksIDg0LCAKLSAgICAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIyNSwgODcsIDg0LCAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIyNSwgOTMsIDg0LCAKLSAgICAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIyNSwgOTEsIDgxLCAyNTEsIDE1OSwgODEsIDI0NSwgMTIwLCA4MSwgMjQ5LCAxNTcsIAotICAgIDgxLCAyNDMsIDIwMCwgMjE5LCA2OSwgODEsIDI0OSwgMTY0LCA4MSwgMjQzLCAyMzcsIDI0NywgNzIsIDgxLCAyMTYsIDI1MCwgCi0gICAgMjE5LCAyMzYsIDI0MCwgMTYwLCA4MSwgMjIwLCAxMTYsIDQsIDI1MSwgOTgsIDIzMSwgMjE3LCA4MSwgMjMxLCAyNDYsIAotICAgIDI0OSwgMTU3LCA4MSwgMjMxLCAyNDYsIDI0MywgMjAwLCAyMTksIDY5LCA4MSwgMjI5LCAyMiwgODEsIDI0MywgMjIzLCA0MywgCi0gICAgMjIyLCA3NywgMTE2LCA4MSwgMjQzLCAyMjMsIDQzLCAyMjIsIDc3LCAxMDksIDgxLCAyNDMsIDIyMywgNDMsIDIyMiwgNzcsIAotICAgIDE2NiwgODEsIDMwLCAyMjEsIDU3LCA4MSwgMjEsIDIxMiwgNzksIDgxLCAyMSwgMTE2LCA4MSwgMjEsIDEwOSwgODEsIDIxLCAKLSAgICAxNjYsIDgxLCAyMSwgMTYzLCA4MSwgMjEsIDE4MCwgODEsIDIxLCAxODksIDgxLCAyMSwgMTk4LCA4MSwgMjEsIDE5NSwgODEsIAotICAgIDIxLCAyMDAsIDgxLCAxLCA2MSwgODEsIDEsIDc0LCA4MSwgMSwgNzIsIDgxLCAxLCA3NSwgODEsIDEsIDY5LCA4MSwgMSwgCi0gICAgMjI3LCA5OSwgODEsIDEsIDIxNSwgMTgzLCA4MSwgMSwgMjQ1LCAxNjUsIDgxLCAxLCAyMDUsIDgxLCAxLCAyNTQsIDI0LCAKLSAgICA4MSwgMSwgMjUyLCAxMDcsIDgxLCAxLCAxOTMsIDgxLCAxLCAyMjQsIDIzMiwgODEsIDEsIDI0MywgMTEwLCA4MSwgMSwgCi0gICAgMTg4LCA4MSwgMSwgMjMzLCAxNTcsIDgxLCAxLCAyMjIsIDIwMiwgODEsIDEsIDIyMSwgMjQsIDgxLCAxLCAyMTgsIDUyLCAKLSAgICA4MSwgMSwgMjQ4LCAxNjQsIDgxLCAxLCAyNTAsIDkyLCA4MSwgMSwgMjM1LCAxMzksIDgxLCAxLCAxODYsIDgxLCAxLCAyMDMsIAotICAgIDgxLCAxLCAyMTQsIDQ5LCA4MSwgMSwgMjQ0LCAxNjQsIDgxLCAxLCAxODEsIDgxLCAxLCAyMzQsIDEzOCwgODEsIDEsIDIxNiwgCi0gICAgMTQxLCA4MSwgMSwgMjEyLCAxMDksIDgxLCAxLCAyNDIsIDI3LCA4MSwgMSwgMjEyLCA5LCA4MSwgMSwgMjMzLCAyNSwgODEsIAotICAgIDEsIDIxMiwgNjIsIDgxLCAxLCAyNTAsIDQ3LCA4MSwgMSwgMjE2LCAyNTAsIDE4NCwgMzAsIDUyLCA4MSwgMSwgMjE2LCAKLSAgICAyNTAsIDc0LCA4MSwgMSwgMjE2LCAyNTAsIDcyLCA4MSwgMSwgMjE2LCAyNTAsIDc1LCA4MSwgMSwgMjE2LCAyNTAsIDY5LCAKLSAgICA4MSwgMSwgMjE2LCAyNTAsIDIyNywgOTksIDgxLCAxLCAyMTYsIDI1MCwgMjE1LCAxODMsIDgxLCAxLCAyMTYsIDI1MCwgCi0gICAgMjU0LCAyNCwgODEsIDEsIDIxNiwgMjUwLCAyNTIsIDEwNywgODEsIDEsIDIxNiwgMjUwLCAxOTMsIDgxLCAxLCAyMTYsIAotICAgIDI1MCwgMjI0LCAyMzIsIDgxLCAxLCAyMTYsIDI1MCwgMjQzLCAxMTAsIDgxLCAxLCAyMTYsIDI1MCwgMTg4LCA4MSwgMSwgCi0gICAgMjE2LCAyNTAsIDIxOCwgNTIsIDgxLCAxLCAyMTYsIDI1MCwgMjQ4LCAxNjQsIDgxLCAxLCAyMTYsIDI1MCwgMjUwLCA5MiwgCi0gICAgODEsIDEsIDIxNiwgMjUwLCAyMzUsIDEzOSwgODEsIDEsIDIxNiwgMjUwLCAyMTYsIDE0MSwgODEsIDEsIDIxNiwgMjUwLCAKLSAgICAxODYsIDgxLCAxLCAyMTYsIDI1MCwgMjE0LCA0OSwgODEsIDEsIDIxNiwgMjUwLCAxODEsIDgxLCAxLCAyMTYsIDI1MCwgCi0gICAgMjQzLCAxMDcsIDgxLCAxLCAyMTYsIDI1MCwgMjQyLCAyNywgODEsIDEsIDIxNiwgMjUwLCAyMzUsIDEwOSwgODEsIDEsIAotICAgIDIxNiwgMjUwLCAyMjksIDYyLCA4MSwgMSwgMjE2LCAyNTAsIDI0NSwgMjQ5LCA4MSwgMSwgMjIwLCAxMTYsIDc0LCA4MSwgMSwgCi0gICAgMjIwLCAxMTYsIDcyLCA4MSwgMSwgMjIwLCAxMTYsIDIzNSwgMTUwLCA4MSwgMSwgMjIwLCAxMTYsIDIxNSwgMTgzLCA4MSwgCi0gICAgMSwgMjIwLCAxMTYsIDY5LCA4MSwgMSwgMjIwLCAxMTYsIDI1NCwgMjQsIDgxLCAxLCAyMjAsIDExNiwgMTgxLCA4MSwgMSwgCi0gICAgMjIwLCAxMTYsIDI0MywgMTEwLCA4MSwgMSwgMjIwLCAxMTYsIDE1OSwgODEsIDEsIDIyMCwgMTE2LCAxOTMsIDgxLCAxLCAKLSAgICAyMjAsIDExNiwgMjIxLCAyNCwgODEsIDEsIDIyMCwgMTE2LCAyMTgsIDUyLCA4MSwgMSwgMjIwLCAxMTYsIDI0OCwgMTY0LCAKLSAgICA4MSwgMSwgMjIwLCAxMTYsIDIzNSwgMTM5LCA4MSwgMSwgMjIwLCAxMTYsIDI0NCwgMTY0LCA4MSwgMSwgMjIwLCAxMTYsIAotICAgIDI0MywgMTA3LCA4MSwgMSwgMjIwLCAxMTYsIDI0MiwgMjcsIDgxLCAxLCAyMjAsIDExNiwgMjE2LCAxNDEsIDgxLCAxLCAKLSAgICAyMjAsIDExNiwgMjEyLCAxMDksIDgxLCAxLCAyMjAsIDExNiwgMjI0LCA3NCwgODEsIDEsIDIyMCwgMTE2LCAyNTAsIDkyLCAKLSAgICA4MSwgMSwgMjIwLCAxMTYsIDIxMiwgNzUsIDgxLCAxLCAyMzEsIDI0NiwgNzIsIDgxLCAxLCAyMzEsIDI0NiwgMTgxLCA4MSwgCi0gICAgMSwgMjMxLCAyNDYsIDIwMywgODEsIDEsIDIzMSwgMjQ2LCAyNDQsIDE2NCwgODEsIDEsIDIzMSwgMjQ2LCAyMTIsIDc1LCAKLSAgICA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjUzLCAyNDMsIDExNiwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDIxNCwgCi0gICAgMTI5LCAxMTYsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyNDgsIDEzMSwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIAotICAgIDIxNSwgMTkzLCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjM1LCAxOTEsIDIxNSwgMTkzLCA4MSwgMSwgMjU0LCA3MSwgCi0gICAgMjQzLCA5MiwgMjUyLCA3NCwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDEzMywgMjUyLCA3NCwgODEsIDEsIDI1NCwgNzEsIAotICAgIDI0MywgOTIsIDYxLCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgNzIsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAxODEsIAotICAgIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyMjksIDE1OSwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDI1MCwgMjE5LCA4MSwgCi0gICAgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjE2LCAxMTUsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyMTYsIDEwNSwgODEsIDEsIAotICAgIDI1NCwgNzEsIDI0MywgOTIsIDI0OCwgODYsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyMjgsIDE5OCwgODEsIDEsIDI1NCwgCi0gICAgNzEsIDI0MywgOTIsIDIxOCwgNTIsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyNDgsIDE2NCwgODEsIDEsIDI1NCwgNzEsIAotICAgIDI0MywgOTIsIDE5MywgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDIyNiwgMjMsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAKLSAgICAyMTksIDE1NywgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDIxMiwgNzUsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyMTIsIAotICAgIDEwOSwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDI1NCwgMTE0LCA4MSwgMSwgMjE2LCAyNTAsIDI1NCwgNzEsIDI0MywgCi0gICAgOTIsIDIxOCwgNTIsIDgxLCAxLCAyMTYsIDI1MCwgMjU0LCA3MSwgMjQzLCA5MiwgMjEyLCA3NSwgODEsIDEsIDIzMSwgMjQ2LCAKLSAgICAyNTQsIDcxLCAyNDMsIDkyLCAyNDIsIDIyNSwgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyMjksIDE1OSwgCi0gICAgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyNTAsIDIxOSwgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAKLSAgICAyNDMsIDkyLCAyMzUsIDExNSwgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyMTYsIDExNSwgODEsIDEsIAotICAgIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyNDgsIDcwLCA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIDI0MywgOTIsIAotICAgIDIxOCwgNTIsIDgxLCAxLCAyMzEsIDI0NiwgMjU0LCA3MSwgMjQzLCA5MiwgMjQ3LCAyMzIsIDgxLCAxLCAyMzEsIDI0NiwgCi0gICAgMjU0LCA3MSwgMjQzLCA5MiwgMjE5LCAxNTcsIDgxLCAxLCAyMzEsIDI0NiwgMjU0LCA3MSwgMjQzLCA5MiwgMjQ5LCAxNSwgCi0gICAgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyMTIsIDc1LCA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIAotICAgIDI0MywgOTIsIDIxMiwgMTA5LCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMTUxLCA2OSwgODEsIDEsIDI1NCwgNzEsIDI0MywgCi0gICAgOTIsIDE1MSwgMTg2LCA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIDI0MywgOTIsIDI1MSwgMTk1LCA4MSwgMSwgMjU0LCAKLSAgICA3MSwgMjQzLCA5MiwgMjQ4LCAxNTQsIDgxLCAxLCAyMzEsIDI0NiwgMjU0LCA3MSwgMjQzLCA5MiwgMjMzLCAyNSwgMTgsIAotICAgIDE5LCAyMjYsIDIzMywgMTgsIDE5LCAyNTMsIDgzLCAxOCwgMTksIDI1NCwgMTg4LCAxOCwgMTksIDIxNCwgOSwgMTgsIDE5LCAKLSAgICAyMjUsIDEwMSwgMTgsIDE5LCAyMjYsIDEwMywgMTgsIDE5LCAyMjQsIDI0OSwgMTgsIDE5LCAyMTcsIDIzOCwgMTgsIDE5LCAKLSAgICAyMzQsIDE5NSwgMTgsIDE5LCAyMzMsIDIwMSwgMTgsIDE5LCAyMzEsIDE5NiwgMTgsIDE5LCAyMjgsIDE0OCwgMTgsIDE5LCAKLSAgICAyMzAsIDMsIDE4LCAxOSwgMjMzLCA5MiwgMTgsIDE5LCAyMTksIDIwOSwgMTgsIDE5LCAyMjIsIDEyOSwgMTgsIDE5LCAyMjAsIAotICAgIDE1NiwgMTgsIDE5LCAyMjAsIDI0NiwgMTgsIDE5LCAyMjAsIDEyNywgMTgsIDE5LCAyMTIsIDIxMSwgMTgsIDE5LCAyMTMsIAotICAgIDQzLCAxOCwgMTksIDIyNCwgMjcsIDE4LCAxOSwgMjI4LCAyOCwgMTgsIDE5LCAyMjcsIDgyLCAyMjgsIDI4LCAxOCwgMTksIAotICAgIDIyOCwgMjcsIDE4LCAxOSwgMjI3LCA4MiwgMjI4LCAyNywgMTgsIDE5LCAyMjgsIDI2LCAxOCwgMTksIDIyNywgODIsIDIyOCwgCi0gICAgMjYsIDE4LCAxOSwgMjI4LCAyNSwgMTgsIDE5LCAyMjcsIDgyLCAyMjgsIDI1LCAxOCwgMTksIDIyMywgMTcsIDE4LCAxOSwgCi0gICAgMjIzLCAxNiwgMTgsIDE5LCAyMjMsIDE1LCAxOCwgMTksIDIyMywgMTQsIDE4LCAxOSwgMjIzLCAxMywgMTgsIDE5LCAyMjMsIAotICAgIDIxLCAxOCwgMTksIDIyNywgODIsIDIyNiwgMjI5LCAxOCwgMTksIDIyNywgODIsIDIxOCwgOTksIDE4LCAxOSwgMjI3LCA4MiwgCi0gICAgMjM1LCAyNywgMTgsIDE5LCAyMjcsIDgyLCAyNTAsIDI1MiwgMTgsIDE5LCAyMjcsIDgyLCAxODMsIDE4LCAxOSwgMjI3LCAKLSAgICA4MiwgMjA0LCAxOCwgMTksIDIyNywgODIsIDE5NywgMTgsIDE5LCAyMjcsIDgyLCAyMjEsIDI2LCAxOCwgMTksIDI0NSwgCi0gICAgMTc1LCAyMTQsIDgyLCAxOCwgMTksIDIxMywgMjQ4LCAyMTQsIDgyLCAxOCwgMTksIDQwLCAzLCAyMjMsIDEzMCwgMTgsIDE5LCAKLSAgICA0MCwgMjI0LCA0OCwgMjQ3LCA3NCwgMTgsIDE5LCAyMjQsIDExMiwgMjIzLCAxOCwgMTgsIDE5LCAxNDgsIDIzMiwgMTgwLCAKLSAgICAxOCwgMTksIDE0OCwgMjMzLCAxNTYsIDE4LCAxOSwgMjE3LCA4MCwgMTgsIDE5LCAyMTcsIDgyLCAxOCwgMTksIDIxNiwgOTcsIAotICAgIDE4LCAxOSwgMjE2LCA5OSwgMTgsIDE5LCAyMTYsIDEwNCwgMTgsIDE5LCAyMTcsIDIsIDE4LCAxOSwgMjE3LCA0LCAxOCwgCi0gICAgMTksIDIyMiwgMTI3LCAyMjAsIDEzMiwgMTgsIDE5LCAyMjIsIDEyNywgMjIwLCAxODEsIDE4LCAxOSwgMjIyLCAxMjcsIAotICAgIDI0MSwgMzksIDE4LCAxOSwgNjYsIDI0MiwgNTQsIDE4LCAxOSwgNjYsIDI0OCwgMywgMjQzLCAzMSwgMTgsIDE5LCA2NiwgCi0gICAgMjQzLCAxMDcsIDE4LCAxOSwgNjYsIDI0MiwgNTksIDE4LCAxOSwgMjIyLCAxMjcsIDIzNSwgMzcsIDE4LCAxOSwgNjYsIAotICAgIDIzNSwgMzUsIDE4LCAxOSwgMjUxLCAyNDQsIDI0OCwgMywgMTUwLCAxOCwgMTksIDI1MSwgMjQ0LCAyNDgsIDMsIDE0OSwgCi0gICAgMTgsIDE5LCA2NiwgMjQ3LCAyNTQsIDE5NywgMjA5LCAyMTQsIDEwMywgMjMzLCAzNCwgMjA5LCAxLCAxODEsIDIwOSwgMSwgCi0gICAgMjM0LCAxMzgsIDIwOSwgMSwgMjQzLCAxMTAsIDIwOSwgMSwgMjQyLCAyMjUsIDIwOSwgMSwgMjI5LCAxNTksIDIwOSwgMSwgCi0gICAgMjUwLCAyMTksIDIwOSwgMSwgMjUwLCA5MiwgMjA5LCAxLCAyMzUsIDEzOSwgMjA5LCAxLCAyMzUsIDExNSwgMjA5LCAxLCAKLSAgICAyMTMsIDYwLCAyMDksIDEsIDIxOCwgNTIsIDIwOSwgMSwgMjE3LCAxNjEsIDIwOSwgMSwgMjQ4LCAxNjQsIDIwOSwgMSwgCi0gICAgMjQ3LCAyMzIsIDIwOSwgMSwgMjA1LCAyMDksIDEsIDE5MywgMjA5LCAxLCAyMjYsIDIzLCAyMDksIDEsIDI1MiwgMTA3LCAKLSAgICAyMDksIDEsIDI1MSwgMTk1LCAyMDksIDEsIDE4OCwgMjA5LCAxLCAxODYsIDIwOSwgMSwgMjAzLCAyMDksIDEsIDIzMywgCi0gICAgMTU3LCAyMDksIDEsIDIxNCwgNDksIDIwOSwgMSwgMjIxLCAyNCwgMjA5LCAxLCAyMTksIDE1NywgMjA5LCAxLCAyMjIsIAotICAgIDIwMiwgMjA5LCAxLCAxNTksIDIwOSwgMzAsIDUsIDYxLCAyMDksIDMwLCA1LCA3MiwgMjA5LCAzMCwgNSwgNjksIDIwOSwgCi0gICAgMzAsIDUsIDI0NSwgMTY1LCAyMDksIDMwLCA1LCAyNTQsIDEwOCwgMjA5LCAzMCwgNSwgMjI3LCA0OSwgMjA5LCAzMCwgNSwgCi0gICAgMjUzLCAxMDgsIDIwOSwgMzAsIDUsIDc0LCAyMDksIDMwLCA1LCA3NSwgMjA5LCAyMTksIDE4LCAxLCAxODYsIDIwOSwgMjE5LCAKLSAgICAxOCwgMSwgMjAzLCAyMDksIDIxOSwgMTgsIDEsIDIxNCwgNDksIDIwOSwgMywgMSwgMTgxLCAyMDksIDMsIDEsIDIyOSwgCi0gICAgMTU5LCAyMDksIDMsIDEsIDI1MywgMjQyLCAyMDksIDMsIDEsIDIxOCwgNTIsIDIwOSwgMywgMSwgMjA1LCAyMDksIDMsIDEsIAotICAgIDE5MywgMjA5LCAzLCAxLCAxODgsIDIwOSwgMywgMSwgMjAzLCAyMDksIDMsIDEsIDIzMywgMTU3LCAyMDksIDUsIDIzMCwgCi0gICAgMTU5LCAyMDksIDUsIDIzNCwgMTc3LCAyMDksIDUsIDIyMiwgMjAxLCAyMDksIDUsIDIzMiwgMTgwLCAyMDksIDI0NCwgMjU0LCAKLSAgICA3NywgMjA5LCAyMjQsIDE1OCwgNzcsIDIwOSwgMjEsIDIxMiwgNzksIDIwOSwgMjEsIDExNiwgMjA5LCAyMSwgMTA5LCAyMDksIAotICAgIDIxLCAxNjYsIDIwOSwgMjEsIDE2MywgMjA5LCAyMSwgMTgwLCAyMDksIDIxLCAxODksIDIwOSwgMjEsIDE5OCwgMjA5LCAyMSwgCi0gICAgMTk1LCAyMDksIDIxLCAyMDAsIDM4LCAyMzMsIDgzLCAxLCAxODEsIDM4LCAyMzMsIDgzLCAxLCAyMTMsIDE1MywgMzgsIAotICAgIDIzMywgODMsIDEsIDIyOSwgMTU5LCAzOCwgMjMzLCA4MywgMSwgMjE2LCAxNDEsIDM4LCAyMzMsIDgzLCAxLCAyMjIsIDIwMiwgCi0gICAgMzgsIDIzMywgODMsIDEsIDE4NiwgMzgsIDIzMywgODMsIDEsIDIxOCwgNTIsIDM4LCAyMzMsIDgzLCAxLCAyMTcsIDE2MSwgCi0gICAgMzgsIDIzMywgODMsIDEsIDIzMywgMTU3LCAzOCwgMjMzLCA4MywgMSwgMTkzLCAzOCwgMjMzLCA4MywgMSwgMjI2LCAyMywgCi0gICAgMzgsIDIzMywgODMsIDEsIDE4OCwgMzgsIDIzMywgODMsIDEsIDI0NCwgMTY0LCAzOCwgMjMzLCA4MywgMSwgMjE1LCAxLCAKLSAgICAzOCwgMjMzLCA4MywgMSwgMTU5LCAzOCwgMjMzLCA4MywgMSwgMjI0LCAyMzIsIDM4LCAyMzMsIDgzLCAxLCAyMzQsIDEzOCwgCi0gICAgMzgsIDIzMywgODMsIDEsIDIxNiwgMTMzLCAzOCwgMjMzLCA4MywgMSwgMjA1LCAzOCwgMjMzLCA4MywgMSwgNjEsIDM4LCAKLSAgICAyMzMsIDgzLCAxLCA3MiwgMzgsIDIzMywgODMsIDEsIDI0NSwgMTY1LCAzOCwgMjMzLCA4MywgMSwgMjQ1LCAxNTQsIDM4LCAKLSAgICAyMzMsIDgzLCAxLCA2OSwgMzgsIDIzMywgODMsIDEsIDIyNywgNDksIDM4LCAyMzMsIDgzLCAxLCA3NSwgMzgsIDIzMywgODMsIAotICAgIDEsIDIxNSwgMTgzLCAzOCwgMjMzLCA4MywgMSwgNzQsIDM4LCAyMzMsIDgzLCAxLCAyNTMsIDEwNiwgMzgsIDIzMywgODMsIAotICAgIDEsIDI1NCwgMTA4LCAzOCwgMjMzLCA4MywgMSwgMjE2LCAyMzksIDM4LCAyMzMsIDgzLCAxLCAyMTYsIDIzOCwgMzgsIDIzMywgCi0gICAgODMsIDEsIDIxNiwgMjM3LCAzOCwgMjMzLCA4MywgMSwgMjE2LCAyMzYsIDM4LCAyMzMsIDgzLCAxLCAyMTYsIDIzNSwgMTU2LCAKLSAgICAzOCwgMTY1LCAxLCAxMjQsIDIyNCwgMjMyLCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjI0LCAyMzIsIDE1NiwgMzgsIDE2NSwgCi0gICAgMSwgMTI0LCAxODEsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAyMTMsIDE1MywgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIyOSwgCi0gICAgMTU5LCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMTgxLCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjEzLCAxNTMsIDE1NiwgMzgsIAotICAgIDE2NSwgMSwgMTE1LCAyMjksIDE1OSwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIxNiwgMTQxLCAxNTYsIDM4LCAxNjUsIDEsIAotICAgIDEyNCwgMjIyLCAyMDIsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAxODYsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyMTYsIDE0MSwgCi0gICAgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDIyMiwgMjAyLCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMTg2LCAxNTYsIDM4LCAxNjUsIAotICAgIDEsIDEyNCwgMjE4LCA1MiwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIxNywgMTYxLCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgCi0gICAgMjA1LCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjE4LCA1MiwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDIxNywgMTYxLCAxNTYsIAotICAgIDM4LCAxNjUsIDEsIDExNSwgMjA1LCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMTkzLCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgCi0gICAgMjI2LCAyMywgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDE4OCwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDE5MywgMTU2LCAzOCwgCi0gICAgMTY1LCAxLCAxMTUsIDIyNiwgMjMsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAxODgsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAKLSAgICAyNDQsIDE2NCwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIxNSwgMSwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIzMywgMTU3LCAKLSAgICAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjQ0LCAxNjQsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyMTUsIDEsIDE1NiwgMzgsIAotICAgIDE2NSwgMSwgMTE1LCAyMzMsIDE1NywgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDE1OSwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIAotICAgIDI0OCwgMTY0LCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMjUyLCAxMDcsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAxNTksIDE1NiwgCi0gICAgMzgsIDE2NSwgMSwgMTE1LCAyNDgsIDE2NCwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDI1MiwgMTA3LCAxNTYsIDM4LCAxNjUsIAotICAgIDEsIDEyNCwgMjMzLCAyMDYsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAyMTMsIDEyNiwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIAotICAgIDIzMywgMjA2LCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjEzLCAxMjYsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAyMTksIDI2LCAKLSAgICAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjE5LCAyNiwgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMzAsIDIyMCwgMTYzLCAxNTYsIAotICAgIDM4LCAxNjUsIDMwLCA1LCAyNTQsIDIzMiwgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMjM2LCAyOCwgMTU2LCAzOCwgMTY1LCAzMCwgCi0gICAgNSwgNjksIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDIxNSwgOTIsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDc0LCAxNTYsIDM4LCAKLSAgICAxNjUsIDMwLCA1LCAyNTQsIDE0OCwgMTU2LCAzOCwgMTY1LCAzMCwgNSwgNzUsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDIyNywgCi0gICAgMTIwLCAxNTYsIDM4LCAxNjUsIDMwLCA1LCAyMTUsIDE4MywgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMjUzLCA4MywgMTU2LCAKLSAgICAzOCwgMTY1LCAzMCwgNSwgMjU0LCAxODgsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDIxNSwgODUsIDE1NiwgMzgsIDE2NSwgMzAsIAotICAgIDUsIDIyNiwgMjMzLCAxNTYsIDM4LCAxNjUsIDMwLCA1LCAyMjcsIDExNywgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMjE1LCAKLSAgICAxODAsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDIzNSwgMTUwLCAxNTYsIDM4LCAxNjUsIDEsIDQwLCAyMTUsIDc5LCAxNTYsIAotICAgIDM4LCAxNjUsIDEsIDQwLCAyMjksIDE2MSwgMTU2LCAzOCwgMTY1LCAxLCA0MCwgMjA0LCAxNTYsIDM4LCAxNjUsIDEsIDQwLCAKLSAgICAxODMsIDE1NiwgMzgsIDE2NSwgMSwgNDAsIDIzNSwgMjcsIDE1NiwgMzgsIDE2NSwgMSwgNDAsIDI0OSwgMywgMTU2LCAzOCwgCi0gICAgMTY1LCAxLCA0MCwgMjUzLCA3NCwgMTU2LCAzOCwgMTY1LCAxNjAsIDIzMSwgMjIxLCAxNTYsIDM4LCAxNjUsIDE2MCwgMjMxLCAKLSAgICAyMjAsIDE1NiwgMzgsIDE2NSwgMjEsIDIxMiwgNzksIDE1NiwgMzgsIDE2NSwgMjEsIDExNiwgMTU2LCAzOCwgMTY1LCAyMSwgCi0gICAgMTA5LCAxNTYsIDM4LCAxNjUsIDIxLCAxNjYsIDE1NiwgMzgsIDE2NSwgMjEsIDE2MywgMTU2LCAzOCwgMTY1LCAyMSwgMTgwLCAKLSAgICAxNTYsIDM4LCAxNjUsIDIxLCAxODksIDE1NiwgMzgsIDE2NSwgMjEsIDE5OCwgMTU2LCAzOCwgMTY1LCAyMSwgMTk1LCAxNTYsIAotICAgIDM4LCAxNjUsIDIxLCAyMDAsIDE1NiwgMzgsIDE2NSwgODgsIDIxLCAxMTYsIDE1NiwgMzgsIDE2NSwgNSwgMjMzLCAxNDMsIAotICAgIDE1NiwgMzgsIDE2NSwgNSwgMjMzLCAxNDIsIDg0LCAxNiwgMjI2LCAxMDksIDg0LCAxNiwgMjMwLCAxNDIsIDIzNCwgMzQsIAotICAgIDg0LCAxNiwgMjI1LCAyMDQsIDIzNCwgMzQsIDg0LCAxNiwgMjUxLCAyMjYsIDIzNCwgMzQsIDg0LCAxNiwgMjUxLCAzMywgCi0gICAgMjM0LCAzNCwgODQsIDE2LCAyMjUsIDk2LCAyMzQsIDM0LCA4NCwgMTYsIDIyNSwgOTAsIDIzNCwgMzQsIDg0LCAxNiwgMjI1LCAKLSAgICA4OCwgMjM0LCAzNCwgODQsIDE2LCAyMjUsIDk0LCAyMzQsIDM0LCA4NCwgMTYsIDIyNSwgOTIsIDIzNCwgMzQsIDg0LCAxNiwgCi0gICAgMjQ4LCAxMTgsIDIzNCwgMzQsIDg0LCAxNiwgMjQ4LCAxMTQsIDIzNCwgMzQsIDg0LCAxNiwgMjQ4LCAxMTMsIDIzNCwgMzQsIAotICAgIDg0LCAxNiwgMjQ4LCAxMTYsIDIzNCwgMzQsIDg0LCAxNiwgMjQ4LCAxMTUsIDIzNCwgMzQsIDg0LCAxNiwgMjQ4LCAxMTIsIAotICAgIDIzNCwgMzQsIDg0LCAxNiwgMjE2LCA1MSwgODQsIDE2LCAyMzAsIDE0MiwgMjIzLCAxMDYsIDg0LCAxNiwgMjI1LCAyMDQsIAotICAgIDIyMywgMTA2LCA4NCwgMTYsIDI1MSwgMjI2LCAyMjMsIDEwNiwgODQsIDE2LCAyNTEsIDMzLCAyMjMsIDEwNiwgODQsIDE2LCAKLSAgICAyMjUsIDk2LCAyMjMsIDEwNiwgODQsIDE2LCAyMjUsIDkwLCAyMjMsIDEwNiwgODQsIDE2LCAyMjUsIDg4LCAyMjMsIDEwNiwgCi0gICAgODQsIDE2LCAyMjUsIDk0LCAyMjMsIDEwNiwgODQsIDE2LCAyMjUsIDkyLCAyMjMsIDEwNiwgODQsIDE2LCAyNDgsIDExOCwgCi0gICAgMjIzLCAxMDYsIDg0LCAxNiwgMjQ4LCAxMTQsIDIyMywgMTA2LCA4NCwgMTYsIDI0OCwgMTEzLCAyMjMsIDEwNiwgODQsIDE2LCAKLSAgICAyNDgsIDExNiwgMjIzLCAxMDYsIDg0LCAxNiwgMjQ4LCAxMTUsIDIyMywgMTA2LCA4NCwgMTYsIDI0OCwgMTEyLCAyMjMsIAotICAgIDEwNiwgMjUxLCA1MCwgMSwgMTgxLCAyNTEsIDUwLCAxLCAyNDMsIDExMCwgMjUxLCA1MCwgMSwgMjI5LCAxNTksIDI1MSwgCi0gICAgNTAsIDEsIDIyOSwgMTA4LCAyNTEsIDUwLCAxLCAxOTMsIDI1MSwgNTAsIDEsIDI1MiwgMTA3LCAyNTEsIDUwLCAxLCAxODgsIAotICAgIDI1MSwgNTAsIDEsIDIzMCwgMTc1LCAyNTEsIDUwLCAxLCAyMTgsIDUyLCAyNTEsIDUwLCAxLCAyNDgsIDE2NCwgMjUxLCA1MCwgCi0gICAgMSwgMjA1LCAyNTEsIDUwLCAxLCAyMjgsIDE0NywgMjUxLCA1MCwgMSwgMjUwLCAyMTksIDI1MSwgNTAsIDEsIDIzNSwgMTM5LCAKLSAgICAyNTEsIDUwLCAxLCAyMjgsIDIzLCAyNTEsIDUwLCAxLCAyMjgsIDE5LCAyNTEsIDUwLCAxLCAxODYsIDI1MSwgNTAsIDEsIAotICAgIDIwMywgMjUxLCA1MCwgMSwgMjMzLCAxNTcsIDI1MSwgNTAsIDEsIDIxNSwgMSwgMjUxLCA1MCwgMSwgMjIyLCAyMDIsIDI1MSwgCi0gICAgNTAsIDEsIDYxLCAyNTEsIDUwLCAxLCAxNTksIDI1MSwgNTAsIDMwLCA1LCA3MiwgMjUxLCA1MCwgMzAsIDUsIDY5LCAyNTEsIAotICAgIDUwLCAzMCwgNSwgNzQsIDI1MSwgNTAsIDMwLCA1LCA3NSwgMjUxLCA1MCwgMzAsIDUsIDI1NCwgMTQ4LCAyNTEsIDUwLCAKLSAgICAyMjYsIDE4NywgMjUxLCA1MCwgMjQ1LCAxMDEsIDY1LCAyMjIsIDkxLCAzOCwgODgsIDEsIDEyNCwgMTgxLCAzOCwgODgsIDEsIAotICAgIDEyNCwgMjM0LCAxMzgsIDM4LCA4OCwgMSwgMTI0LCAyMzMsIDE5MywgMzgsIDg4LCAxLCAxMTUsIDE4MSwgMzgsIDg4LCAxLCAKLSAgICAxMTUsIDIzMywgMTkzLCAzOCwgODgsIDEsIDExNSwgMjM0LCAxMzgsIDM4LCA4OCwgMSwgMjI5LCAxNTksIDM4LCA4OCwgMSwgCi0gICAgMTI0LCAyNTAsIDIxOSwgMzgsIDg4LCAxLCAxMjQsIDI1MCwgOTIsIDM4LCA4OCwgMSwgMTE1LCAyNTAsIDIxOSwgMzgsIDg4LCAKLSAgICAxLCAxMTUsIDIyMiwgMjAyLCAzOCwgODgsIDEsIDExNSwgMjUwLCA5MiwgMzgsIDg4LCAxLCAyMjgsIDIzLCAzOCwgODgsIDEsIAotICAgIDIyNCwgMzIsIDM4LCA4OCwgMSwgMTI0LCAyMjQsIDMwLCAzOCwgODgsIDEsIDI0OCwgMTY0LCAzOCwgODgsIDEsIDExNSwgCi0gICAgMjI0LCAzMCwgMzgsIDg4LCAxLCAyMjQsIDQxLCAzOCwgODgsIDEsIDEyNCwgMjE4LCA1MiwgMzgsIDg4LCAxLCAxMjQsIAotICAgIDIxNywgMTYxLCAzOCwgODgsIDEsIDExNSwgMjE4LCA1MiwgMzgsIDg4LCAxLCAxMTUsIDIxNywgMTYxLCAzOCwgODgsIDEsIAotICAgIDIwNSwgMzgsIDg4LCAxLCAyNTIsIDEwNywgMzgsIDg4LCAxLCAxMjQsIDE5MywgMzgsIDg4LCAxLCAxMjQsIDIyNiwgMjMsIAotICAgIDM4LCA4OCwgMSwgMTI0LCAyNDQsIDE2NCwgMzgsIDg4LCAxLCAxMTUsIDE5MywgMzgsIDg4LCAxLCAxMTUsIDI0NCwgMTY0LCAKLSAgICAzOCwgODgsIDEsIDExNSwgMjI2LCAyMywgMzgsIDg4LCAxLCAxODgsIDM4LCA4OCwgMSwgMTE1LCAxODYsIDM4LCA4OCwgMSwgCi0gICAgMTI0LCAxODYsIDM4LCA4OCwgMSwgMjAzLCAzOCwgODgsIDEsIDIyMywgNDgsIDM4LCA4OCwgMSwgMjMzLCAxNTcsIDM4LCAKLSAgICA4OCwgMSwgMjMyLCAxNTEsIDM4LCA4OCwgMSwgMjE0LCA0OSwgMzgsIDg4LCAxLCAxMjQsIDIyMSwgMjQsIDM4LCA4OCwgMSwgCi0gICAgMTI0LCAyMTksIDE1NywgMzgsIDg4LCAxLCAxMjQsIDIyMiwgMjAyLCAzOCwgODgsIDEsIDEyNCwgMTU5LCAzOCwgODgsIDEsIAotICAgIDIzMiwgMjEzLCAzOCwgODgsIDEsIDYxLCAzOCwgODgsIDEsIDExNSwgMTU5LCAzOCwgODgsIDEsIDcyLCAzOCwgODgsIDEsIAotICAgIDIzNiwgMjgsIDM4LCA4OCwgMSwgNjksIDM4LCA4OCwgMSwgMjE1LCA5MiwgMzgsIDg4LCAxLCAyNDUsIDE2NSwgMzgsIDg4LCAKLSAgICAxLCAyMjcsIDQ5LCAzOCwgODgsIDEsIDIzMywgMTQzLCAzOCwgODgsIDEsIDI0MiwgMTA5LCAyMjIsIDIwMiwgMzgsIDg4LCAKLSAgICAyNDksIDEzMywgNSwgMTM4LCAyMDMsIDM4LCA4OCwgMjQ5LCAxMzMsIDUsIDEzOCwgMjMzLCAxNTcsIDM4LCA4OCwgMjQ5LCAKLSAgICAxMzMsIDUsIDIzMywgMTU4LCAyMTgsIDksIDIzMywgMTMzLCAzOCwgODgsIDUsIDIzMiwgOSwgMjM0LCAyMzYsIDIzMywgCi0gICAgMTMzLCAzOCwgODgsIDI0OSwgMTMzLCA1LCA0MCwgMjI5LCAxNTksIDM4LCA4OCwgMjQ5LCAxMzMsIDUsIDExNSwgMTkzLCAKLSAgICAzOCwgODgsIDI0OSwgMTMzLCA1LCAxMjQsIDIyNCwgMzEsIDE2NywgMTE1LCAxOTMsIDM4LCA4OCwgMjQ5LCAxMzMsIDUsIAotICAgIDE4OCwgMzgsIDg4LCAyNDksIDEzMywgNSwgMjUyLCAxMDcsIDM4LCA4OCwgMjQ5LCAxMzMsIDUsIDIyMiwgMjAyLCAzOCwgCi0gICAgODgsIDUsIDIyMiwgMTgxLCAzOCwgODgsIDMwLCA1LCA2MSwgMzgsIDg4LCAzMCwgNSwgMjMyLCA5LCAyMjIsIDE0MiwgMzgsIAotICAgIDg4LCAzMCwgNSwgMjU0LCAyMzIsIDM4LCA4OCwgMzAsIDUsIDIxOCwgMTUsIDI1NCwgMjMyLCAzOCwgODgsIDMwLCA1LCA3MiwgCi0gICAgMzgsIDg4LCAzMCwgNSwgMjM2LCAyOCwgMzgsIDg4LCAzMCwgNSwgMjE1LCAxODMsIDM4LCA4OCwgMzAsIDUsIDIxNSwgOTEsIAotICAgIDM4LCA4OCwgMzAsIDUsIDY5LCAzOCwgODgsIDMwLCA1LCAyMTUsIDkyLCAzOCwgODgsIDMwLCA1LCA3NSwgMzgsIDg4LCAzMCwgCi0gICAgNSwgMjI3LCAxMjEsIDU1LCAzOCwgODgsIDMwLCA1LCAyMjYsIDIzMywgMzgsIDg4LCAzMCwgNSwgNzQsIDM4LCA4OCwgMzAsIAotICAgIDUsIDI1NCwgMTQ4LCAzOCwgODgsIDMwLCA1LCAyMjcsIDQ5LCAzOCwgODgsIDMwLCA1LCAyNTQsIDEwOCwgMzgsIDg4LCAzMCwgCi0gICAgNSwgODgsIDI1NCwgMTA4LCAzOCwgODgsIDMwLCA1LCAyMjcsIDEyMSwgNDksIDM4LCA4OCwgNSwgMjMyLCA5LCAyMzQsIAotICAgIDIzNSwgMzgsIDg4LCA1LCAyMTYsIDI0MCwgMzgsIDg4LCA1LCAyMTYsIDIzOSwgMzgsIDg4LCA1LCAyMzQsIDEwNiwgMjE2LCAKLSAgICAyMzgsIDM4LCA4OCwgNSwgMjM0LCAxMDYsIDIxNiwgMjM3LCAzOCwgODgsIDUsIDIzNCwgMTA2LCAyMTYsIDIzNiwgMzgsIAotICAgIDg4LCA1LCAyMjQsIDc3LCAyNDIsIDI2LCAzOCwgODgsIDUsIDIzMiwgOSwgMjIyLCAxNjgsIDM4LCA4OCwgNSwgMjM0LCAKLSAgICAxMDUsIDIzNCwgMjIwLCAzOCwgODgsIDM3LCAyNDksIDU1LCAyNDcsIDc0LCAzOCwgODgsIDI0MSwgMzMsIDIxLCAyMTIsIAotICAgIDc5LCAzOCwgODgsIDI0MSwgMzMsIDIxLCAxMTYsIDM4LCA4OCwgMjQxLCAzMywgMjEsIDEwOSwgMzgsIDg4LCAyNDEsIDMzLCAKLSAgICAyMSwgMTY2LCAzOCwgODgsIDI0MSwgMzMsIDIxLCAxNjMsIDM4LCA4OCwgMjQxLCAzMywgMjEsIDE4MCwgMzgsIDg4LCAyNDEsIAotICAgIDMzLCAyMSwgMTg5LCAzOCwgODgsIDI0MSwgMzMsIDIxLCAxOTgsIDM4LCA4OCwgMjQxLCAzMywgMjEsIDE5NSwgMzgsIDg4LCAKLSAgICAyNDEsIDMzLCAyMSwgMjAwLCAzOCwgODgsIDg4LCAyMSwgMjEyLCA3OSwgMzgsIDg4LCA4OCwgMjEsIDExNiwgMzgsIDg4LCAKLSAgICA4OCwgMjEsIDEwOSwgMzgsIDg4LCA4OCwgMjEsIDE2NiwgMzgsIDg4LCA4OCwgMjEsIDE2MywgMzgsIDg4LCA4OCwgMjEsIAotICAgIDE4MCwgMzgsIDg4LCA4OCwgMjEsIDE4OSwgMzgsIDg4LCA4OCwgMjEsIDE5OCwgMzgsIDg4LCA4OCwgMjEsIDE5NSwgMzgsIAotICAgIDg4LCA4OCwgMjEsIDIwMCwgMzgsIDg4LCA1LCAyMTMsIDIzNCwgMzgsIDg4LCA1LCAyMTMsIDIzMywgMzgsIDg4LCA1LCAKLSAgICAyMjIsIDEzMywgMzgsIDg4LCA1LCAyMzQsIDE2NiwgMzgsIDg4LCA1LCAyNDAsIDIxOSwgMzgsIDg4LCA1LCAyNDcsIDg4LCAKLSAgICAzOCwgODgsIDUsIDIyMywgMjAyLCAyMjMsIDg5LCAyMjQsIDQxLCAzOCwgODgsIDUsIDIzMiwgOSwgMjEzLCA2MSwgMzgsIAotICAgIDg4LCA1LCAyMzUsIDEwLCAzOCwgODgsIDUsIDIzNSwgOSwgMzgsIDg4LCA1LCAyMjIsIDEzOSwgMzgsIDg4LCA1LCAyMjIsIAotICAgIDEzOCwgMzgsIDg4LCA1LCAyNDEsIDI0OCwgMzgsIDg4LCA1LCAyNTAsIDIxNiwgOTksIDUsIDIxNSwgMTcwLCAyMjMsIDE4MywgCi0gICAgOTksIDUsIDIxNSwgMTcwLCAyNTAsIDE4OSwgOTksIDUsIDI1MCwgMTIwLCA5OSwgNSwgMjE4LCAyMTUsIDk5LCA1LCAyNTEsIAotICAgIDE1NiwgOTksIDEsIDI1NCwgOTIsIDk5LCAxLCAyNTQsIDkzLCAyMTcsIDIyMSwgOTksIDEsIDIzNiwgMjQsIDk5LCAxLCAKLSAgICAyMzYsIDI1LCAyMTcsIDIyMSwgOTksIDEsIDIxNSwgMTczLCA5OSwgMSwgMjE1LCAxNzQsIDIxNywgMjIxLCA5OSwgMSwgCi0gICAgMjI0LCA3NywgMjIzLCAyMjksIDk5LCAxLCAyMjQsIDc3LCAyMjMsIDIzMCwgMjE3LCAyMjEsIDk5LCAxLCAyMzMsIDE1OCwgCi0gICAgMjMzLCA0OCwgOTksIDEsIDIzMywgMTU4LCAyMzMsIDQ5LCAyMTcsIDIyMSwgOTksIDEsIDI0NSwgMTM2LCA5OSwgMSwgMjU0LCAKLSAgICAxMDYsIDk5LCAxLCAyMjcsIDc4LCA5OSwgMSwgMjI3LCA3OSwgMjE3LCAyMjEsIDk5LCAxLCAxODEsIDk5LCAxLCAyMzUsIAotICAgIDE3LCAyMzIsIDEyLCA5OSwgMSwgMjQzLCAxMTAsIDk5LCAxLCAyNDMsIDExMSwgMjQyLCAxMzcsIDk5LCAxLCAyMjksIDE1OSwgCi0gICAgOTksIDEsIDI1MCwgMjE5LCA5OSwgMSwgMjUwLCAyMjAsIDIzMywgMTQ2LCA5OSwgMSwgMjM1LCAxMzksIDk5LCAxLCAyMzUsIAotICAgIDE0MCwgMjM1LCAxMTksIDk5LCAxLCAyMjgsIDIzLCA5OSwgMSwgMjE4LCA1MywgMjMzLCA5OSwgOTksIDEsIDIxOCwgNTMsIAotICAgIDIzMCwgMTM3LCAyMzIsIDEyLCA5OSwgMSwgMjQ4LCAxNjUsIDIzMCwgMTM3LCAyNTQsIDU0LCA5OSwgMSwgMjQ4LCAxNjUsIAotICAgIDIzMCwgMTM3LCAyMzIsIDEyLCA5OSwgMSwgMjMwLCA0NiwgMjI0LCA0NCwgOTksIDEsIDIxOCwgNTIsIDk5LCAxLCAyMTgsIAotICAgIDUzLCAyMTcsIDI0MiwgOTksIDEsIDI0OCwgMTY0LCA5OSwgMSwgMjQ4LCAxNjUsIDIzMiwgMzAsIDk5LCAxLCAyMDUsIDk5LCAKLSAgICAxLCAxOTMsIDk5LCAxLCAyMjYsIDIxNCwgMjM0LCAyMzEsIDk5LCAxLCAyNTIsIDEwNywgOTksIDEsIDI1MiwgMTA4LCAyMzQsIAotICAgIDE3OCwgOTksIDEsIDE4OCwgOTksIDEsIDE4NiwgOTksIDEsIDIwMywgOTksIDEsIDIzMywgMTU3LCA5OSwgMSwgMjE0LCA0OSwgCi0gICAgOTksIDEsIDIyMiwgMjAzLCAyMjIsIDE4OSwgOTksIDEsIDIyMiwgMjAzLCAyMjIsIDE0OSwgOTksIDEsIDIyMiwgMjAyLCAKLSAgICA5OSwgMSwgMTU5LCA5OSwgNSwgMjIzLCAyMjIsIDk5LCAzMCwgNSwgMjE3LCAyMjEsIDk5LCAzMCwgNSwgMjE1LCAxNjksIAotICAgIDk5LCAzMCwgNSwgMjE1LCAxNzAsIDIyMiwgMTQ1LCA5OSwgMzAsIDUsIDIxOCwgMjQ4LCA5OSwgMzAsIDUsIDIxOCwgMjQ5LCAKLSAgICAyMzYsIDE2LCA5OSwgMzAsIDUsIDIyNCwgNzcsIDIyMywgMjI5LCA5OSwgMzAsIDUsIDIyNCwgNzcsIDIyMywgMjMwLCAyMTcsIAotICAgIDIyMSwgOTksIDMwLCA1LCAyMzMsIDE1OCwgMjMzLCA0OCwgOTksIDMwLCA1LCAyMzMsIDE1OCwgMjMzLCA0OSwgMjE3LCAKLSAgICAyMjEsIDk5LCAzMCwgNSwgMjE4LCAxNiwgOTksIDMwLCA1LCAyMTgsIDE3LCAyMjMsIDIyOSwgOTksIDMwLCA1LCAyMTgsIAotICAgIDE3LCAyMTcsIDIyMSwgOTksIDMwLCA1LCAyMTgsIDE3LCAyMjMsIDIzMCwgMjE3LCAyMjEsIDk5LCAzMCwgNSwgMjI2LCA1OSwgCi0gICAgOTksIDMwLCA1LCAyMjYsIDYwLCAyMTcsIDIyMSwgOTksIDI1NCwgMTU1LCAyNTQsIDE1NCwgOTksIDEsIDIzNCwgMjU1LCAKLSAgICAyMjIsIDE0NCwgOTksIDEsIDIzNCwgMTEwLCAyMjIsIDE0NCwgOTksIDEsIDIxNiwgMCwgMjIyLCAxNDQsIDk5LCAxLCAyNDUsIAotICAgIDE2MCwgMjIyLCAxNDQsIDk5LCAxLCAyMTQsIDIzMywgMjIyLCAxNDQsIDk5LCAxLCAyMTIsIDEwMCwgMjIyLCAxNDQsIDk5LCAKLSAgICAxLCAyNTMsIDEyNSwgMjIyLCAxNDQsIDk5LCAyMSwgMjEyLCA3OSwgOTksIDIxLCAxMTYsIDk5LCAyMSwgMTA5LCA5OSwgMjEsIAotICAgIDE2NiwgOTksIDIxLCAxNjMsIDk5LCAyMSwgMTgwLCA5OSwgMjEsIDE4OSwgOTksIDIxLCAxOTgsIDk5LCAyMSwgMTk1LCA5OSwgCi0gICAgMjEsIDIwMCwgOTksIDIyNiwgMTU3LCA5OSwgMjI2LCAxODIsIDk5LCAyMTMsIDIyMywgOTksIDI1MCwgMTY4LCAyMjYsIAotICAgIDE3NSwgOTksIDI1MCwgMTY4LCAyMjAsIDk4LCA5OSwgMjUwLCAxNjgsIDIyNiwgMTMwLCA5OSwgMjI2LCAxODEsIDk5LCAyNywgCi0gICAgMTYsIDI0NywgODAsIDk5LCAyNywgMTYsIDI0OCwgMiwgOTksIDI3LCAxNiwgMjQ2LCAxOSwgOTksIDI3LCAxNiwgMjQ4LCAKLSAgICAxMjEsIDk5LCAyNywgMTYsIDI0OCwgMTIyLCAyMTgsIDIxNSwgOTksIDI3LCAxNiwgMjQ3LCAxNTcsIDk5LCAyNywgMTYsIAotICAgIDI0OCwgMTU3LCA5OSwgMjcsIDE2LCAyNDcsIDI0MCwgOTksIDI3LCAxNiwgMjQ4LCAxNDMsIDk5LCAyNywgMTYsIDI0OCwgCi0gICAgMTIyLCAyNDMsIDMzLCA5OSwgMjcsIDE2LCAzNywgMjE3LCAyMTcsIDk5LCAyNywgMTYsIDM3LCAyNDUsIDk5LCA5OSwgMjcsIAotICAgIDE2LCAzNywgMjM0LCAxNzMsIDk5LCAyNywgMTYsIDM3LCAyMzQsIDE3NSwgOTksIDI3LCAxNiwgMzcsIDIzNSwgMTIzLCA5OSwgCi0gICAgMjcsIDE2LCAzNywgMjM0LCAxNzQsIDIsIDIzNSwgMTIzLCA5OSwgMjcsIDE2LCAzNywgMjM0LCAxNzYsIDIsIDIzNSwgMTIzLCAKLSAgICA5OSwgMjcsIDE2LCAzNywgMjUxLCAyMTQsIDk5LCAyNywgMTYsIDM3LCAyNDIsIDE0MSwgOTksIDI3LCAxNiwgMjIzLCAxNDYsIAotICAgIDIyNywgNDAsIDI0NiwgMjksIDk5LCAyNywgMTYsIDIyMywgMTQ2LCAyMjcsIDQwLCAyNDgsIDE1NSwgOTksIDI3LCAxNiwgCi0gICAgMjIzLCAxNDYsIDI0OSwgMTkzLCAyMTYsIDc1LCA5OSwgMjcsIDE2LCAyMjMsIDE0NiwgMjQ5LCAxOTMsIDIxOCwgMjMsIDk5LCAKLSAgICAyNywgMTYsIDIzMywgNjgsIDIyNywgNDAsIDIyNiwgMTcwLCA5OSwgMjcsIDE2LCAyMzMsIDY4LCAyMjcsIDQwLCAyMjUsIAotICAgIDI1LCA5OSwgMjcsIDE2LCAyMzMsIDY4LCAyNDksIDE5MywgMjI1LCAxNzAsIDk5LCAyNywgMTYsIDIzMywgNjgsIDI0OSwgCi0gICAgMTkzLCAyMjUsIDE2MCwgOTksIDI3LCAxNiwgMjMzLCA2OCwgMjI3LCA0MCwgMjI1LCAxOTMsIDIxOCwgMjM3LCA1LCAyMjYsIAotICAgIDE1NCwgMjE4LCAyMzcsIDUsIDIyNiwgMTY2LCAyMTgsIDIzNywgNSwgMjI2LCAxNjMsIDIxOCwgMjM3LCAxLCA2MSwgMjE4LCAKLSAgICAyMzcsIDEsIDcyLCAyMTgsIDIzNywgMSwgNjksIDIxOCwgMjM3LCAxLCAyNTQsIDE0OCwgMjE4LCAyMzcsIDEsIDc1LCAyMTgsIAotICAgIDIzNywgMSwgNzQsIDIxOCwgMjM3LCAxLCAyNDUsIDIyLCAyMTgsIDIzNywgMSwgMTgxLCAyMTgsIDIzNywgMSwgMjI0LCAKLSAgICAyMzIsIDIxOCwgMjM3LCAxLCAyNDMsIDExMCwgMjE4LCAyMzcsIDEsIDIyOSwgMTU5LCAyMTgsIDIzNywgMSwgMjUwLCAyMTksIAotICAgIDIxOCwgMjM3LCAxLCAyMzUsIDEzOSwgMjE4LCAyMzcsIDEsIDIxMiwgMTA5LCAyMTgsIDIzNywgMSwgMjI4LCAyMywgMjE4LCAKLSAgICAyMzcsIDEsIDIxOCwgNTIsIDIxOCwgMjM3LCAxLCAyNDgsIDE2NCwgMjE4LCAyMzcsIDEsIDIwNSwgMjE4LCAyMzcsIDEsIAotICAgIDE5MywgMjE4LCAyMzcsIDEsIDI0NCwgMTY0LCAyMTgsIDIzNywgMSwgMjE1LCAxLCAyMTgsIDIzNywgMSwgMjUyLCAxMDcsIAotICAgIDIxOCwgMjM3LCAxLCAxODgsIDIxOCwgMjM3LCAxLCAxODYsIDIxOCwgMjM3LCAxLCAyMDMsIDIxOCwgMjM3LCAxLCAyMzMsIAotICAgIDE1NywgMjE4LCAyMzcsIDEsIDIxNCwgNDksIDIxOCwgMjM3LCAxLCAyMjIsIDIwMiwgMjE4LCAyMzcsIDEsIDIxMywgMTUzLCAKLSAgICAyMTgsIDIzNywgMSwgMTU5LCAyMTgsIDIzNywgMjQ5LCAxMzMsIDUsIDIyNiwgMTc5LCAyMTgsIDIzNywgMjQ5LCAxMzMsIDUsIAotICAgIDIyNiwgMTU2LCAyMTgsIDIzNywgMjQ5LCAxMzMsIDUsIDIyNiwgMTUzLCAyMTgsIDIzNywgMzAsIDUsIDIyNiwgMTY5LCAKLSAgICAyMTgsIDIzNywgMzAsIDUsIDIyNiwgMTUyLCAyMTgsIDIzNywgMzAsIDUsIDIyNiwgMTczLCAyMTgsIDIzNywgMzAsIDUsIAotICAgIDIyNiwgMTYyLCAyMTgsIDIzNywgMzAsIDUsIDIyNiwgMTgwLCAyMTgsIDIzNywgMzAsIDUsIDIyNiwgMTcxLCAyMTgsIDIzNywgCi0gICAgNSwgMjI2LCAxODMsIDIxOCwgMjM3LCAxLCAyMzQsIDEzOCwgMjE4LCAyMzcsIDEsIDIxOCwgMTc2LCAyMTgsIDIzNywgMjEsIAotICAgIDIxMiwgNzksIDIxOCwgMjM3LCAyMSwgMTE2LCAyMTgsIDIzNywgMjEsIDEwOSwgMjE4LCAyMzcsIDIxLCAxNjYsIDIxOCwgCi0gICAgMjM3LCAyMSwgMTYzLCAyMTgsIDIzNywgMjEsIDE4MCwgMjE4LCAyMzcsIDIxLCAxODksIDIxOCwgMjM3LCAyMSwgMTk4LCAKLSAgICAyMTgsIDIzNywgMjEsIDE5NSwgMjE4LCAyMzcsIDIxLCAyMDAsIDI1MiwgNDAsIDEsIDYxLCAyNTIsIDQwLCAxLCAyMjAsIAotICAgIDkwLCA2MSwgMjUyLCA0MCwgMSwgMTU5LCAyNTIsIDQwLCAxLCAyMjAsIDkwLCAxNTksIDI1MiwgNDAsIDEsIDIzMSwgMjQ0LCAKLSAgICAxNTksIDI1MiwgNDAsIDEsIDI1MiwgMTA3LCAyNTIsIDQwLCAxLCAyMzQsIDIxNywgMjUyLCAxMDcsIDI1MiwgNDAsIDEsIAotICAgIDE5MywgMjUyLCA0MCwgMSwgMjIwLCA5MCwgMTkzLCAyNTIsIDQwLCAxLCAyMDUsIDI1MiwgNDAsIDEsIDIzMSwgMjQ0LCAKLSAgICAyMDUsIDI1MiwgNDAsIDEsIDIxNCwgNDksIDI1MiwgNDAsIDEsIDIyMCwgOTAsIDIxNCwgNDksIDI1MiwgNDAsIDEsIDIyNiwgCi0gICAgMTk0LCAyMTQsIDQ5LCAyNTIsIDQwLCAxLCAyNDMsIDExMCwgMjUyLCA0MCwgMSwgMjIwLCA5MCwgMjQzLCAxMTAsIDI1MiwgCi0gICAgNDAsIDEsIDIzNSwgMTM5LCAyNTIsIDQwLCAxLCAyNDgsIDE2NCwgMjUyLCA0MCwgMSwgMjAzLCAyNTIsIDQwLCAxLCAyMjAsIAotICAgIDkwLCAyMDMsIDI1MiwgNDAsIDEsIDE4OCwgMjUyLCA0MCwgMSwgMjIwLCA5MCwgMTg4LCAyNTIsIDQwLCAxLCAyMTksIDIxMywgCi0gICAgMjE4LCA1MiwgMjUyLCA0MCwgMSwgMjI4LCAxNjYsIDIxOCwgNTIsIDI1MiwgNDAsIDEsIDIyMiwgMjAyLCAyNTIsIDQwLCAxLCAKLSAgICAyMjAsIDkwLCAyMjIsIDIwMiwgMjUyLCA0MCwgMSwgMjMxLCAyNDQsIDIyMiwgMjAyLCAyNTIsIDQwLCAxLCAxODYsIDI1MiwgCi0gICAgNDAsIDEsIDIyMCwgOTAsIDE4NiwgMjUyLCA0MCwgMSwgMjI5LCAxNTksIDI1MiwgNDAsIDEsIDIzMywgMTU3LCAyNTIsIDQwLCAKLSAgICAxLCAyMjAsIDkwLCAyMzMsIDE1NywgMjUyLCA0MCwgMSwgMjI4LCAyMywgMjUyLCA0MCwgMSwgMjUwLCAyMTksIDI1MiwgNDAsIAotICAgIDEsIDIyOSwgMjI4LCAyNTIsIDQwLCAxLCAyMzEsIDE4NywgMjUyLCA0MCwgMSwgNzIsIDI1MiwgNDAsIDEsIDY5LCAyNTIsIAotICAgIDQwLCA1LCAyMTYsIDI0NCwgMjUyLCA0MCwgMzAsIDUsIDc0LCAyNTIsIDQwLCAzMCwgNSwgMjI2LCAxOTQsIDc0LCAyNTIsIAotICAgIDQwLCAzMCwgNSwgMjQ1LCAxNjUsIDI1MiwgNDAsIDMwLCA1LCA3MiwgMjUyLCA0MCwgMzAsIDUsIDIzNCwgMjE3LCA3MiwgCi0gICAgMjUyLCA0MCwgMzAsIDUsIDc1LCAyNTIsIDQwLCAzMCwgNSwgMjM0LCAyMTcsIDc1LCAyNTIsIDQwLCAzMCwgNSwgNjksIAotICAgIDI1MiwgNDAsIDMwLCA1LCAxMTEsIDMxLCAyMjAsIDkwLCAyMjIsIDIwMiwgMjUyLCA0MCwgMjQ5LCAxMzMsIDUsIDIyOSwgCi0gICAgMTYxLCAyNTIsIDQwLCAyNDksIDEzMywgNSwgMjQyLCA0MSwgMjUyLCA0MCwgMjI2LCAxNjUsIDI1MiwgNDAsIDIyNiwgMTYxLCAKLSAgICAyNTIsIDQwLCAxNiwgMjUxLCAxNjQsIDIzMCwgNDYsIDIzMSwgMTA0LCAyNTIsIDQwLCAxNiwgMjUxLCAxNjQsIDIyNSwgCi0gICAgMTk2LCAyNTIsIDQwLCAxNiwgMjUxLCAxNjQsIDIzNSwgNTEsIDI1MiwgNDAsIDE2LCAyNTEsIDE2NCwgMjI2LCAxNjUsIAotICAgIDE4MiwgMSwgMTgxLCAxODIsIDEsIDIzNCwgNDgsIDE4MiwgMSwgMjM0LCAxMzgsIDE4MiwgMSwgMjQzLCAxMTAsIDE4MiwgMSwgCi0gICAgMjQyLCAxNjIsIDE4MiwgMSwgMjI5LCAxNTksIDE4MiwgMSwgMjUwLCAyMTksIDE4MiwgMSwgMjUwLCA5MiwgMTgyLCAxLCAKLSAgICAyMzUsIDEzOSwgMTgyLCAxLCAyMjgsIDIzLCAxODIsIDEsIDIxOCwgNTIsIDE4MiwgMSwgMjE3LCAxNjEsIDE4MiwgMSwgCi0gICAgMjQ4LCAxNjQsIDE4MiwgMSwgMjA1LCAxODIsIDEsIDE5MywgMTgyLCAxLCAyMjUsIDE3NCwgMTgyLCAxLCAyMjYsIDIzLCAKLSAgICAxODIsIDEsIDI0NCwgMTY0LCAxODIsIDEsIDI0NCwgNDQsIDE4MiwgMSwgMjUyLCAxMDcsIDE4MiwgMSwgMjUxLCAxNDUsIAotICAgIDE4MiwgMSwgMTg4LCAxODIsIDEsIDIzMCwgMjM3LCAxODIsIDEsIDIxNiwgMTQxLCAxODIsIDEsIDIxNiwgMTMzLCAxODIsIAotICAgIDEsIDI0NSwgMjQ5LCAxODIsIDEsIDE4NiwgMTgyLCAxLCAyMDMsIDE4MiwgMSwgMjMzLCAxNTcsIDE4MiwgMSwgMTU5LCAKLSAgICAxODIsIDEsIDI0MSwgMTM5LCAxODIsIDEsIDIxNSwgMSwgMTgyLCAxLCAyMjIsIDIwMiwgMTgyLCAxLCAyMjEsIDI0LCAxODIsIAotICAgIDEsIDIxNCwgNDksIDE4MiwgMSwgNjEsIDE4MiwgMjE5LCAxOCwgMSwgMTg2LCAxODIsIDIxOSwgMTgsIDEsIDIwMywgMTgyLCAKLSAgICAzMCwgNSwgMjU0LCAyMzIsIDE4MiwgMzAsIDUsIDcyLCAxODIsIDMwLCA1LCA3NSwgMTgyLCAzMCwgNSwgMjI3LCA0OSwgCi0gICAgMTgyLCAzMCwgNSwgNjksIDE4MiwgMzAsIDUsIDIxNSwgOTIsIDE4MiwgMzAsIDUsIDc0LCAxODIsIDI0OSwgMTMzLCA1LCAKLSAgICAyMzUsIDI3LCAxODIsIDI0OSwgMTMzLCA1LCAxODMsIDE4MiwgMjQ5LCAxMzMsIDUsIDE1MCwgMTgyLCAyNDksIDEzMywgNSwgCi0gICAgMjA0LCAxODIsIDI0OSwgMTMzLCA1LCAyMjYsIDIyOSwgMTgyLCAyNDksIDEzMywgNSwgMTQ5LCAxODIsIDI0OSwgMTMzLCA1LCAKLSAgICAyMTgsIDk5LCAxODIsIDI0OSwgMTMzLCA1LCAyMjgsIDUsIDE4MiwgMjQ5LCAxMzMsIDUsIDIzNCwgMjM1LCAxODIsIDUsIAotICAgIDIyNCwgNDIsIDE4MiwgNSwgMjI4LCA2MCwgMTgyLCAyMjUsIDI3LCAyMTgsIDUxLCAxODIsIDIyNSwgMjcsIDIyOCwgMTMsIAotICAgIDIxNywgNzQsIDIxOCwgNTEsIDE4MiwgMjI1LCAyNywgMjUwLCA5OCwgMTgyLCAyMjUsIDI3LCAyMTYsIDEyOCwgMjUwLCA5OCwgCi0gICAgMTgyLCAyMjUsIDI3LCAyMTYsIDEyNywgMTgyLCAyMSwgMjEyLCA3OSwgMTgyLCAyMSwgMTE2LCAxODIsIDIxLCAxMDksIAotICAgIDE4MiwgMjEsIDE2NiwgMTgyLCAyMSwgMTYzLCAxODIsIDIxLCAxODAsIDE4MiwgMjEsIDE4OSwgMTgyLCAyMSwgMTk4LCAKLSAgICAxODIsIDIxLCAxOTUsIDE4MiwgMjEsIDIwMCwgMTgyLCAxLCAyMTYsIDExNSwgMTgyLCAxLCAyMTYsIDEwNSwgMTgyLCAxLCAKLSAgICAyNDgsIDg2LCAyMjcsIDc2LCAyNTAsIDQwLCAyMSwgMjEyLCA3OSwgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIDExNiwgMjI3LCAKLSAgICA3NiwgMjUwLCA0MCwgMjEsIDEwOSwgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIDE2NiwgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIAotICAgIDE2MywgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIDE4MCwgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIDE4OSwgMjI3LCA3NiwgMjUwLCAKLSAgICA0MCwgMjEsIDE5OCwgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIDE5NSwgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIDIwMCwgMjI3LCAKLSAgICA3NiwgMjUwLCA0MCwgMSwgMjMzLCAxNTcsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDI1MywgMTIyLCAyMjcsIDc2LCAyNTAsIAotICAgIDQwLCAxLCAyNTQsIDEyMSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjU0LCAyNCwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjU0LCAKLSAgICA4NiwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjMzLCAxNTYsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDI1NCwgMTk0LCAyMjcsIAotICAgIDc2LCAyNTAsIDQwLCAxLCAyNTQsIDE5NSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjU0LCAxOTMsIDIyNywgNzYsIDI1MCwgCi0gICAgNDAsIDEsIDI1NCwgMTg5LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMzMsIDEzLCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMzUsIAotICAgIDE2OSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjM2LCAyOSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjM1LCAxODgsIDIyNywgCi0gICAgNzYsIDI1MCwgNDAsIDEsIDIzNSwgMTc3LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMzIsIDE1NiwgMjI3LCA3NiwgMjUwLCAKLSAgICA0MCwgMSwgMjE1LCAxOTAsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIxNSwgMTg4LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMTUsIAotICAgIDEzOSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjE1LCA4NSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjMzLCA4MiwgMjI3LCA3NiwgCi0gICAgMjUwLCA0MCwgMSwgMjQ1LCA3MCwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjQ1LCAxNjgsIDIyNywgNzYsIDI1MCwgNDAsIDEsIAotICAgIDI0NSwgMTA4LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyNDUsIDQ5LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMzIsIDIwOCwgCi0gICAgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjI3LCA1LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMjcsIDExNiwgMjI3LCA3NiwgMjUwLCAKLSAgICA0MCwgMSwgMjI2LCAyNDksIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIyNywgODgsIDIyNywgNzYsIDI1MCwgNDAsIDIzMCwgCi0gICAgMTczLCAyMTYsIDg0LCAyMjcsIDc2LCAyNTAsIDQwLCAyNDMsIDEwNSwgMjE2LCA4NSwgMjI3LCA3NiwgMjUwLCA0MCwgMjMwLCAKLSAgICAxNzEsIDIxNiwgODUsIDIyNywgNzYsIDI1MCwgNDAsIDIyMywgMjQyLCAyMjcsIDc2LCAyNTAsIDQwLCAyMjYsIDIxLCAyMjcsIAotICAgIDc2LCAyNTAsIDQwLCAyNTQsIDExMywgMjI3LCA3NiwgMjUwLCA0MCwgMjI1LCAyNywgMjMwLCAxNjgsIDIyNywgNzYsIDI1MCwgCi0gICAgNDAsIDIyNSwgMjcsIDUxLCAyMzAsIDE2OCwgMjE0LCAyMjksIDE2MCwgMjM0LCAyMTUsIDIxNCwgMjI5LCAxNjAsIDIyMSwgCi0gICAgMCwgMjE0LCAyMjksIDE2MCwgMjI1LCA3OCwgMjE0LCAyMjksIDUsIDIyOSwgNDAsIDIxNCwgMjI5LCA1LCAyMTMsIDY5LCAKLSAgICAyMzEsIDM1LCAyMTgsIDIwMSwgMjE0LCAyMjksIDE2MCwgMjEzLCA2OSwgMjU0LCAxMTgsIDIzNSwgMjQwLCAyMTgsIDIwMSwgCi0gICAgMjE0LCAyMjksIDE2MCwgMjEzLCA2OSwgMjM1LCAyNDAsIDIxOCwgMjAxLCAyMTQsIDIyOSwgMTYwLCAyMTMsIDY5LCAyMzQsIAotICAgIDIwMywgMjM1LCAyNDAsIDIxOCwgMjAxLCAyMTQsIDIyOSwgMTYwLCAyNTAsIDE5MCwgNTUsIDIxNCwgMjI5LCAxNjAsIDIxMywgCi0gICAgNjksIDIzNCwgMjAzLCAyMzUsIDI0MCwgMjE4LCAyMDIsIDIyMiwgMTE1LCAyMTQsIDIyOSwgMTYwLCA1MSwgMjE4LCAyMDEsIAotICAgIDIxNCwgMjI5LCAxNjAsIDIxNiwgMTY5LCAyMTgsIDIwMSwgMjE0LCAyMjksIDE2MCwgMjM0LCAyMDMsIDI1MywgMjQ0LCAKLSAgICAyMTQsIDIyOSwgMTYwLCA2MiwgNTUsIDIxNCwgMjI5LCAxNjAsIDExNywgMTc2LCA1NSwgMjE0LCAyMjksIDE2MCwgMTMzLCAKLSAgICAxNzYsIDU1LCAyMTQsIDIyOSwgMTYwLCAyMjMsIDEzNywgMjM0LCAyMTQsIDIzNSwgMjQwLCAyMTgsIDIwMSwgMjE0LCAyMjksIAotICAgIDE2MCwgMjUzLCAxMjAsIDIzNSwgMjQwLCAyMTgsIDIwMSwgMjE0LCAyMjksIDUsIDIxNCwgMTI5LCAyMTgsIDIwMSwgMjE0LCAKLSAgICAyMjksIDUsIDIxNCwgMTI5LCAyMTUsIDE4NSwgMjE0LCAyMjksIDUsIDIyMywgMjAyLCAyMTQsIDEyOSwgMjE1LCAxODUsIAotICAgIDIxNCwgMjI5LCA1LCAyMTQsIDEyOSwgMjUzLCAyNDQsIDIxNCwgMjI5LCA1LCAyMjMsIDIwMiwgMjE0LCAxMjksIDI1MywgCi0gICAgMjQ0LCAyMTQsIDIyOSwgNSwgMjE0LCAxMjksIDIxNSwgMTg2LCAyLCAyMTgsIDI3LCAyMTQsIDIyOSwgNSwgMjE0LCAxMjksIAotICAgIDI1MywgMjQ1LCAyLCAyMTgsIDI3LCAyMTQsIDIyOSwgNSwgMjUzLCAyNDMsIDI1NCwgMiwgMjE0LCAyMjksIDUsIDI1MywgCi0gICAgMjQzLCAyNTIsIDg1LCAyMTQsIDIyOSwgNSwgMjUzLCAyNDMsIDIxNCwgMjUyLCAyMTQsIDIyOSwgNSwgMjUzLCAyNDMsIAotICAgIDIxNCwgMjUzLCAyLCAyMTgsIDI3LCAyMTQsIDIyOSwgNSwgMjE3LCAyMSwgMjE0LCAyMjksIDUsIDI0MSwgMTc2LCAxODQsIAotICAgIDI1MywgMjQyLCAyMTQsIDIyOSwgNSwgMTg0LCAyNTMsIDI0MiwgMjE0LCAyMjksIDUsIDIyMywgNTMsIDE4NCwgMjUzLCAKLSAgICAyNDIsIDIxNCwgMjI5LCA1LCAyNTMsIDI0MywgMjE1LCAxOTIsIDIzMCwgMTYwLCAyMTQsIDIyOSwgNSwgMjUzLCAxOTAsIDcsIAotICAgIDEsIDMsIDYsIDYxLCA3LCAxLCAzLCA2LCAyNTQsIDE0OCwgNywgMywgMSwgMjE2LCA1OCwgMjU0LCAxNDgsIDcsIDEsIDMsIAotICAgIDYsIDI1MiwgNTQsIDI1MywgNzQsIDcsIDEsIDMsIDYsIDI1MCwgMjUyLCA3LCAxLCAzLCA2LCAyNDksIDMsIDcsIDEsIDMsIAotICAgIDYsIDI0NSwgMjUsIDcsIDEsIDMsIDYsIDc0LCA3LCAzLCAxLCAyMTYsIDU4LCAyMjcsIDQwLCA3NCwgNywgMywgMSwgMjE2LCAKLSAgICA1OCwgNzIsIDcsIDEsIDMsIDYsIDIzNSwgMTQyLCA3LCAxLCAzLCA2LCAyMzUsIDI3LCA3LCAxLCAzLCA2LCAyMzMsIDE3MSwgCi0gICAgMiwgOTAsIDcsIDEsIDMsIDYsIDE4MywgNywgMSwgMywgNiwgMjIzLCAyMDIsIDIwNCwgNywgMSwgMywgNiwgNzUsIDcsIDEsIAotICAgIDMsIDYsIDIyNywgNDAsIDc1LCA3LCAzLCAxLCAyMjAsIDExMywgNzUsIDcsIDMsIDEsIDIyMCwgMTEzLCAyMjcsIDQwLCA3NSwgCi0gICAgNywgMywgMSwgMjIwLCAxMTMsIDE1NywgMiwgOTAsIDcsIDMsIDEsIDIxNiwgNTgsIDIyNywgOTksIDcsIDEsIDMsIDYsIAotICAgIDIyNywgMiwgNywgMywgMSwgMjE2LCAyMjcsIDE1MSwgNzUsIDcsIDMsIDEsIDI1MSwgMTAxLCAxNTEsIDc1LCA3LCAxLCAzLCAKLSAgICA2LCAyMjYsIDIyOSwgNywgMSwgMywgNiwgMjIzLCAyMDIsIDE0OSwgNywgMSwgMywgNiwgMjE2LCA1OCwgMTQ5LCA3LCAxLCAKLSAgICAzLCA2LCAyMTgsIDk5LCA3LCAxLCAzLCA2LCA2OSwgNywgMywgMSwgMjIwLCAxMTMsIDY5LCA3LCAzLCAxLCAyMjAsIDExMywgCi0gICAgMjQ3LCAyMDgsIDY5LCA3LCAzLCAxLCAyMjAsIDExMywgMjE2LCA1OCwgMTgzLCA3LCAxLCAzLCA2LCAyMTUsIDc5LCA3LCAxLCAKLSAgICAzLCA2LCAyMTQsIDgyLCA3LCAxLCAzLCA2LCAyMTIsIDE1MiwgNywgMSwgMywgNiwgMjQ0LCAyMzIsIDcsIDEsIDIxNCwgCi0gICAgMTE2LCAyMzMsIDEwNSwgMjE5LCAxODIsIDcsIDEsIDI1NCwgMTAzLCAyNSwgMSwgMywgNiwgMjQzLCA4MywgMjUsIDEsIDMsIAotICAgIDYsIDIzMywgMTIyLCAyNSwgMSwgMywgNiwgMjI1LCAyNDAsIDI1LCAxLCAzLCA2LCAyMjMsIDE5MCwgMjUsIDEsIDMsIDYsIAotICAgIDIyNSwgNDYsIDMzLCAxLCAzLCA2LCAyNDUsIDEzMSwgNTksIDEsIDYsIDYxLCA1OSwgMSwgNiwgMjU0LCAxNDgsIDU5LCAxLCAKLSAgICA2LCAyNTMsIDc0LCA1OSwgMSwgNiwgMjUyLCA1NCwgMjUzLCA3NCwgNTksIDEsIDYsIDI0OSwgMywgNTksIDEsIDYsIDc0LCAKLSAgICA1OSwgMSwgNiwgMjIzLCAyMDIsIDc0LCA1OSwgMSwgNiwgMjQzLCAxNzcsIDU5LCAxLCA2LCAyNDIsIDQxLCA1OSwgMSwgNiwgCi0gICAgNzIsIDU5LCAxLCA2LCAyMzUsIDE0MiwgNTksIDEsIDYsIDIzNSwgMjcsIDU5LCAxLCA2LCAxNTAsIDU5LCAxLCA2LCAxODMsIAotICAgIDU5LCAxLCA2LCAyMDQsIDU5LCAxLCA2LCAyMjMsIDIwMiwgMjA0LCA1OSwgMSwgNiwgNzUsIDU5LCAxLCA2LCAyMjcsIDIsIAotICAgIDU5LCAxLCA2LCAyMjYsIDIyOSwgNTksIDEsIDYsIDE0OSwgNTksIDEsIDYsIDIxOCwgOTksIDU5LCAxLCA2LCA2OSwgNTksIAotICAgIDEsIDYsIDIxNCwgODIsIDU5LCAxLCAzLCA2MSwgNTksIDEsIDMsIDIxNiwgNTgsIDYxLCA1OSwgMSwgMywgMjU0LCA1MiwgCi0gICAgNTksIDEsIDMsIDIxNiwgNTgsIDI1NCwgMTQ4LCA1OSwgMSwgMywgMjUzLCA3NCwgNTksIDEsIDMsIDI0OSwgMywgNTksIDEsIAotICAgIDMsIDc0LCA1OSwgMSwgMywgMjIyLCAxMTMsIDU5LCAxLCAzLCAyMjcsIDQwLCA3NCwgNTksIDEsIDMsIDIxNiwgNTgsIDIyNywgCi0gICAgNDAsIDc0LCA1OSwgMSwgMywgMjQzLCAxNzcsIDU5LCAxLCAzLCAyMTYsIDU4LCA3MiwgNTksIDEsIDMsIDIzNSwgMjcsIDU5LCAKLSAgICAxLCAzLCAxODMsIDU5LCAxLCAzLCAyNDUsIDk2LCA1OSwgMSwgMywgNzUsIDU5LCAxLCAzLCAyMjcsIDQwLCA3NSwgNTksIDEsIAotICAgIDMsIDIxNiwgMjI3LCAxNTEsIDc1LCA1OSwgMSwgMywgMjUxLCAxMDEsIDE1MSwgNzUsIDU5LCAxLCAzLCAyMjYsIDIyOSwgCi0gICAgNTksIDEsIDMsIDIxOCwgOTksIDU5LCAxLCAzLCA2OSwgNTksIDEsIDMsIDIyMCwgMTEzLCA2OSwgNTksIDEsIDMsIDIxNiwgCi0gICAgNTgsIDE4MywgNTksIDEsIDMsIDIxNSwgNzksIDU5LCAxLCAzLCAyNTQsIDEwMywgNTksIDEsIDMsIDI1MSwgMjAzLCA1OSwgCi0gICAgMSwgMywgMjUsIDI0MywgODMsIDU5LCAxLCAzLCAyNDgsIDUsIDU5LCAxLCAzLCAyNSwgMjI2LCA5LCA1OSwgMSwgMywgMjUwLCAKLSAgICA0NywgNywgMjE5LCAxMCwgMywgMSwgNzIsIDcsIDIxOSwgMTAsIDMsIDEsIDE0OSwgNywgMjE5LCAxMCwgMywgMSwgNjksIDcsIAotICAgIDIxOSwgMTAsIDMsIDEsIDIxNSwgNzksIDI1LCAyMTksIDEwLCAzLCAxLCAyNTEsIDIwMywgMjUsIDIxOSwgMTAsIDMsIDEsIAotICAgIDI0MywgODMsIDI1LCAyMTksIDEwLCAzLCAxLCAyMjMsIDE5MCwgMjUsIDIxOSwgMTAsIDMsIDEsIDIyNiwgOSwgMjUsIDIxOSwgCi0gICAgMTAsIDMsIDEsIDI1MCwgNDcsIDcsIDMsIDEsIDIxNSwgMTgzLCA3LCAzLCAxLCA1NCwgMiwgMjMxLCAzNywgMjE3LCA0MiwgCi0gICAgNywgMywgMSwgMjQ5LCA0LCAyLCAyMzEsIDM3LCAyMTcsIDQyLCA3LCAzLCAxLCAyNDQsIDIzMSwgMiwgMjMxLCAzNywgMjE3LCAKLSAgICA0MiwgNywgMywgMSwgMjMyLCAxMTAsIDIsIDIzMSwgMzcsIDIxNywgNDIsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDIzMSwgMzcsIAotICAgIDIxNywgNDIsIDcsIDMsIDEsIDIyNiwgMjMwLCAyLCAyMzEsIDM3LCAyMTcsIDQyLCA3LCAzLCAxLCAyMjQsIDExMywgMiwgCi0gICAgMjMxLCAzNywgMjE3LCA0MiwgNywgMywgMSwgMjI0LCAxMTMsIDIsIDI0NCwgNTcsIDI0LCAyMzEsIDM3LCAyMTcsIDQyLCA3LCAKLSAgICAzLCAxLCAyMjMsIDQsIDIsIDIzMSwgMzcsIDIxNywgNDIsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAyMzEsIDM3LCAyMTcsIAotICAgIDQyLCA3LCAzLCAxLCAyMTIsIDE1MywgMiwgMjMxLCAzNywgMjE3LCA0MiwgNywgMywgMSwgMjE2LCA1OCwgMjQzLCAxNzcsIAotICAgIDU5LCAxLCAzMywgMjQ1LCAxMDgsIDcsIDMsIDEsIDIzNSwgMjEwLCAyNDMsIDE3NywgNywgMywgMSwgMjE3LCAxNjQsIDIsIAotICAgIDIxOSwgNDcsIDcsIDMsIDYsIDEsIDI0MCwgMTQ2LCAyLCA5MCwgNywgMywgMSwgMjM1LCAxODQsIDIsIDkwLCA3LCAzLCAxLCAKLSAgICAyMjYsIDIzMCwgMiwgOTAsIDcsIDMsIDYsIDEsIDExMSwgMiwgOTAsIDcsIDMsIDEsIDIxNSwgMTI5LCAyLCA5MCwgNywgMywgCi0gICAgMSwgNTQsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDI0OSwgNCwgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjQ0LCAKLSAgICAyMzEsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDI0MywgMTc4LCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMzUsIAotICAgIDI4LCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjMyLCAKLSAgICAxMTAsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDIyNiwgCi0gICAgMjMwLCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMjQsIDExMywgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjIzLCAKLSAgICA0LCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyNDUsIDQxLCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMTUsIAotICAgIDgwLCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMTMsIDE2NywgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjEyLCAKLSAgICAxNTMsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDExOCwgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMjU0LCA1MywgCi0gICAgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMjQ5LCA0LCAyLCAyNDEsIDM4LCAyNCwgMjE4LCAyNywgNywgMywgMSwgMTkxLCAKLSAgICAyLCAyMjMsIDIwNywgMTAxLCA3LCAzLCAxLCAyMjcsIDQwLCAxOTEsIDIsIDIyMywgMjA3LCAxMDEsIDcsIDMsIDEsIDIyMywgCi0gICAgMjAyLCAyMjcsIDQwLCAxOTEsIDIsIDIyMywgMjA3LCAxMDEsIDcsIDMsIDEsIDIyMiwgMTE0LCAyLCAyMjMsIDIwNywgMTAxLCAKLSAgICA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMjI3LCA0MCwgMTU3LCAyLCAyMjMsIDIwNywgCi0gICAgMTAxLCA3LCAzLCAxLCAyNDUsIDQxLCAyLCAyMjMsIDIwNywgMTAxLCA3LCAzLCAxLCAxMTEsIDIsIDIyMywgMjA3LCAxMDEsIAotICAgIDcsIDMsIDEsIDI0NCwgMjMzLCAyLCAyMjMsIDIwNywgMTAxLCA1OSwgMSwgMywgMjE2LCA1OCwgMjU0LCA1MiwgNTksIDEsIAotICAgIDMsIDI1MCwgMjUyLCA1OSwgMSwgMywgMjUwLCAyNTMsIDIsIDI0OSwgNDEsIDU5LCAxLCAzLCAyNDUsIDI1LCA1OSwgMSwgMywgCi0gICAgMjIzLCAyMDIsIDIyNywgNDAsIDc0LCA1OSwgMSwgMywgMjQ0LCAyMzAsIDU5LCAxLCAzLCAyNDcsIDczLCAyMzUsIDE0MywgCi0gICAgMiwgOTAsIDU5LCAxLCAzLCAxMTMsIDI0MywgMTc3LCA1OSwgMSwgMywgMjE2LCA1OCwgMjQyLCA0MSwgNTksIDEsIDMsIAotICAgIDI0MCwgMTQ2LCAyLCA5MCwgNTksIDEsIDMsIDIzNSwgMTgzLCA1OSwgMSwgMywgNiwgNzIsIDU5LCAxLCAzLCA2LCAyNDAsIAotICAgIDE0NiwgMiwgOTAsIDU5LCAxLCAzLCAyMzUsIDE0MywgMiwgMjQ5LCA2NywgNTksIDEsIDMsIDIzMywgMTcxLCAyLCAyMjMsIAotICAgIDIwNywgMTAxLCA1OSwgMSwgMywgMjMzLCAxNzEsIDIsIDIyNiwgMTkzLCAxMDEsIDU5LCAxLCAzLCA2LCAxNTAsIDU5LCAxLCAKLSAgICAzLCAyMzIsIDExMCwgMiwgMTAxLCA1OSwgMSwgMywgMjE2LCA1OCwgMjMyLCAxMTAsIDIsIDE4NCwgMjMzLCA2MCwgNTksIDEsIAotICAgIDMsIDIzMCwgOTgsIDIsIDQyLCAxMDEsIDU5LCAxLCAzLCAyMzAsIDk4LCAyLCAyMjMsIDIwNywgMTAxLCA1OSwgMSwgMywgNiwgCi0gICAgMjA0LCA1OSwgMSwgMywgMjUyLCA1NCwgNzUsIDU5LCAxLCAzLCAyMjYsIDksIDU5LCAxLCAzLCAyMjMsIDQsIDIsIDEwMSwgCi0gICAgNTksIDEsIDMsIDI0NSwgNDAsIDU5LCAxLCAzLCAyMTgsIDEwMCwgMiwgMjI2LCAxOTMsIDEwMSwgNTksIDEsIDMsIDExMSwgCi0gICAgMTM0LCA1OSwgMSwgMywgMjE1LCAxMjgsIDU5LCAxLCAzLCA2LCA2OSwgNTksIDEsIDMsIDIxNSwgODAsIDIsIDEwMSwgNTksIAotICAgIDEsIDMsIDIxNiwgNTgsIDIxNSwgNzksIDU5LCAxLCAzLCAyMTIsIDE1MiwgNTksIDEsIDMsIDIxMiwgMTUzLCAyLCAyMjMsIAotICAgIDIwNywgMTAxLCA1OSwgMSwgMywgMjEyLCAxNTMsIDIsIDI0OSwgNDEsIDU5LCAxLCAzLCAyNDQsIDIzMiwgNTksIDEsIDMsIAotICAgIDIxNywgMTMyLCAzNywgMjQ2LCA3MiwgMjQyLCAxMTQsIDI1NCwgMTc0LCAzNywgMjQ2LCA3MiwgMjU0LCAxNjQsIDI1NCwgCi0gICAgMTc0LCAzNywgMjE5LCAyNTMsIDU1LCAzNywgMjE4LCAyMDcsIDc3LCAzNywgMjMyLCAzNiwgMzcsIDI0MiwgMTExLCAzNywgCi0gICAgMjMyLCAzNCwgMzcsIDI1NCwgMTYyLCAzNywgMjQyLCAxMTIsIDM3LCAyNTQsIDE2MywgMzcsIDcsIDMsIDEsIDIyNCwgMTEzLCAKLSAgICA1NSwgMzcsIDI1MSwgNzMsIDM3LCAyMzIsIDM1LCAzNywgNTEsIDI0OSwgMjI0LCA0OSwgMzcsIDIyNywgOTEsIDQ5LCAzNywgCi0gICAgMjEyLCAyOCwgNTUsIDM3LCAyMzUsIDE3MCwgNTUsIDM3LCAyMTUsIDEyMiwgNDksIDM3LCAyMTUsIDEwNSwgNDksIDM3LCA3LCAKLSAgICAzLCAxLCAyNDQsIDMyLCAyMjcsIDQwLCAxMTgsIDQ5LCAzNywgNywgMywgMSwgMjU0LCAxNDgsIDM3LCA3LCAzLCAxLCAyNTMsIAotICAgIDI0MCwgMzcsIDcsIDMsIDEsIDI1MywgOTIsIDM3LCA3LCAzLCAxLCAyNTAsIDI1MywgMjUwLCAxMTcsIDM3LCA3LCAzLCAxLCAKLSAgICAyMzUsIDIxMCwgMjQ5LCAzLCAzNywgNywgMywgMSwgMjQ1LCAyNSwgMzcsIDcsIDMsIDEsIDI0MywgMTc3LCAzNywgNywgMSwgCi0gICAgMywgNiwgMjQzLCAxNzcsIDM3LCA3LCAzLCAxLCAyMzUsIDI3LCAzNywgNywgMywgMSwgMTUwLCAzNywgNywgMSwgMywgNiwgCi0gICAgMTUwLCAzNywgNywgMSwgMywgNiwgMTgzLCAzNywgNywgMywgMSwgMjA0LCAzNywgNywgMSwgMywgNiwgMjA0LCAzNywgNywgCi0gICAgMSwgMywgNiwgMTQ5LCAzNywgNywgMywgMSwgMjI0LCAxMTMsIDIyMywgODgsIDM3LCA3LCAzLCAxLCAxOTcsIDM3LCA3LCAzLCAKLSAgICAxLCAxODQsIDE5NywgMzcsIDcsIDMsIDEsIDIxMiwgMTUyLCAzNywgNTEsIDIzNSwgMTkxLCAyNTEsIDc1LCA1NSwgMzcsIAotICAgIDI1NCwgNTcsIDEyMywgMjExLCAyMTEsIDU1LCAzNywgNDIsIDI1MywgMTY1LCA0OSwgMzcsIDQ2LCAyNTMsIDE2NSwgMjQsIAotICAgIDExOSwgMjUzLCAxNjUsIDU1LCA3LCA2LCAxLCAxMTgsIDIsIDIyMywgMTMxLCA1NSwgNywgMywgMSwgMTE4LCAyLCAyMjMsIAotICAgIDEzMSwgNTUsIDcsIDYsIDEsIDU0LCAyLCA2MiwgNDksIDcsIDMsIDEsIDU0LCAyLCA2MiwgNDksIDcsIDYsIDEsIDU0LCAyLCAKLSAgICA2MiwgNTUsIDcsIDMsIDEsIDU0LCAyLCA2MiwgNTUsIDcsIDYsIDEsIDU0LCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIAotICAgIDU0LCAyLCAyMzIsIDI0MywgNTUsIDcsIDYsIDEsIDI1MCwgMjUzLCAyLCAyNTAsIDExOCwgMjQsIDE3OSwgNywgMywgMSwgCi0gICAgMjUwLCAyNTMsIDIsIDI1MCwgMTE4LCAyNCwgMTc5LCA3LCA2LCAxLCAyNDksIDQsIDIsIDYyLCA0OSwgNywgMywgMSwgMjQ5LCAKLSAgICA0LCAyLCA2MiwgNDksIDcsIDYsIDEsIDI0OSwgNCwgMiwgNjIsIDU1LCA3LCAzLCAxLCAyNDksIDQsIDIsIDYyLCA1NSwgNywgCi0gICAgNiwgMSwgMjQ5LCA0LCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIDI0OSwgNCwgMiwgMjMyLCAyNDMsIDU1LCA3LCA2LCAxLCAKLSAgICAyNDksIDQsIDIsIDI1MCwgMTE3LCA3LCAzLCAxLCAyNDksIDQsIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAyNDksIDQsIDIsIAotICAgIDI0OSwgMjI0LCA1NSwgNywgMywgMSwgMjQ5LCA0LCAyLCAyNDksIDIyNCwgNTUsIDcsIDYsIDEsIDE5MSwgMiwgMjMyLCAzOCwgCi0gICAgMjQsIDI0MiwgMTEzLCA3LCAzLCAxLCAxOTEsIDIsIDIzMiwgMzgsIDI0LCAyNDIsIDExMywgNywgNiwgMSwgMTkxLCAyLCAKLSAgICAyMzIsIDM4LCAyNCwgMTc5LCA3LCAzLCAxLCAxOTEsIDIsIDIzMiwgMzgsIDI0LCAxNzksIDcsIDYsIDEsIDE5MSwgMiwgCi0gICAgMjQ5LCAyMjQsIDU1LCA3LCAzLCAxLCAxOTEsIDIsIDI0OSwgMjI0LCA1NSwgNywgNiwgMSwgMTkxLCAyLCAyMTcsIDQzLCAKLSAgICA1NSwgNywgMywgMSwgMTkxLCAyLCAyMTcsIDQzLCA1NSwgNywgNiwgMSwgMTkxLCAyLCAyNTAsIDExOCwgMjQsIDI1MSwgNzQsIAotICAgIDcsIDMsIDEsIDE5MSwgMiwgMjUwLCAxMTgsIDI0LCAyNTEsIDc0LCA3LCA2LCAxLCAyNDQsIDIzMSwgMiwgNjIsIDQ5LCA3LCAKLSAgICAzLCAxLCAyNDQsIDIzMSwgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgMjMyLCAzNywgNywgMywgMSwgMjQzLCAKLSAgICAxNzgsIDIsIDIzMiwgMzcsIDcsIDYsIDEsIDI0MiwgNDIsIDIsIDYyLCA0OSwgNywgMywgMSwgMjQyLCA0MiwgMiwgNjIsIAotICAgIDQ5LCA3LCA2LCAxLCAyNDIsIDQyLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDI0MiwgNDIsIDIsIDYyLCA1NSwgNywgNiwgMSwgCi0gICAgMjQyLCA0MiwgMiwgMjQ3LCAyMDksIDcsIDMsIDEsIDI0MiwgNDIsIDIsIDI0NywgMjA5LCA3LCA2LCAxLCAyNDIsIDQyLCAyLCAKLSAgICAyNTAsIDExNywgNywgMywgMSwgMjQyLCA0MiwgMiwgMjUwLCAxMTcsIDcsIDYsIDEsIDI0MiwgNDIsIDIsIDI1MSwgNzUsIAotICAgIDU1LCA3LCAzLCAxLCAyNDIsIDQyLCAyLCAyNTEsIDc1LCA1NSwgNywgNiwgMSwgMjQwLCAxNDYsIDIsIDIxNywgNDMsIDU1LCAKLSAgICA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgMjE3LCA0MywgNTUsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAyNDcsIDIxMCwgMjQsIAotICAgIDE3OSwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDI0NywgMjEwLCAyNCwgMTc5LCA3LCA2LCAxLCAyMzUsIDI4LCAyLCAxNzksIAotICAgIDcsIDMsIDEsIDIzNSwgMjgsIDIsIDE3OSwgNywgNiwgMSwgMjM1LCAyOCwgMiwgNjIsIDU1LCA3LCAzLCAxLCAyMzUsIDI4LCAKLSAgICAyLCA2MiwgNTUsIDcsIDYsIDEsIDIzNSwgMjgsIDIsIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgMjM1LCAyOCwgMiwgMjMyLCAKLSAgICAyNDMsIDU1LCA3LCA2LCAxLCAyMzMsIDE3MSwgMiwgNjIsIDU1LCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgNjIsIDU1LCA3LCAKLSAgICA2LCAxLCAyMzMsIDE3MSwgMiwgNjIsIDI1MSwgMjIwLCAyNCwgMjMyLCAzNywgNywgMywgMSwgMjMzLCAxNzEsIDIsIDYyLCAKLSAgICAyNTEsIDIyMCwgMjQsIDIzMiwgMzcsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIDIzMywgCi0gICAgMTcxLCAyLCAyMzIsIDI0MywgNTUsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCAyNDksIDIyNCwgNTUsIDcsIDMsIDEsIDIzMywgCi0gICAgMTcxLCAyLCAyNDksIDIyNCwgNTUsIDcsIDYsIDEsIDIzMiwgMTEwLCAyLCAxNzksIDcsIDMsIDEsIDIzMiwgMTEwLCAyLCAKLSAgICAxNzksIDcsIDYsIDEsIDIzMiwgMTEwLCAyLCA2MiwgNDksIDcsIDMsIDEsIDIzMiwgMTEwLCAyLCA2MiwgNDksIDcsIDYsIDEsIAotICAgIDIzMiwgMTEwLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIzMiwgMTEwLCAyLCA2MiwgNTUsIDcsIDYsIDEsIDIzMCwgOTgsIDIsIAotICAgIDYyLCA0OSwgNywgMywgMSwgMjMwLCA5OCwgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyMzAsIDk4LCAyLCA2MiwgNTUsIDcsIDMsIAotICAgIDEsIDIzMCwgOTgsIDIsIDYyLCA1NSwgNywgNiwgMSwgMjMwLCA5OCwgMiwgMjMyLCAyNDMsIDU1LCA3LCAzLCAxLCAyMzAsIAotICAgIDk4LCAyLCAyMzIsIDI0MywgNTUsIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDI0OSwgMjI0LCA1NSwgNywgMywgMSwgMjMwLCA5OCwgCi0gICAgMiwgMjQ5LCAyMjQsIDU1LCA3LCA2LCAxLCAxNTcsIDIsIDIxNywgNDMsIDI0LCAxNzksIDcsIDMsIDEsIDE1NywgMiwgMjE3LCAKLSAgICA0MywgMjQsIDE3OSwgNywgNiwgMSwgMTU3LCAyLCAyMTcsIDQzLCAyNCwgMjQ3LCAyMDksIDcsIDMsIDEsIDE1NywgMiwgCi0gICAgMjE3LCA0MywgMjQsIDI0NywgMjA5LCA3LCA2LCAxLCAxNTcsIDIsIDIzMiwgMzgsIDI0LCAyNDIsIDExMywgNywgMywgMSwgCi0gICAgMTU3LCAyLCAyMzIsIDM4LCAyNCwgMjQyLCAxMTMsIDcsIDYsIDEsIDE1NywgMiwgMjMyLCAzOCwgMjQsIDE3OSwgNywgMywgCi0gICAgMSwgMTU3LCAyLCAyMzIsIDM4LCAyNCwgMTc5LCA3LCA2LCAxLCAyMjYsIDIzMCwgMiwgMTc5LCA3LCAzLCAxLCAyMjYsIAotICAgIDIzMCwgMiwgMTc5LCA3LCA2LCAxLCAyMjYsIDIzMCwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyMjYsIDIzMCwgMiwgNjIsIDQ5LCAKLSAgICA3LCA2LCAxLCAyMjQsIDExMywgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyMjQsIDExMywgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyMjQsIAotICAgIDExMywgMiwgNjIsIDU1LCA3LCAzLCAxLCAyMjQsIDExMywgMiwgNjIsIDU1LCA3LCA2LCAxLCAyMjQsIDExMywgMiwgNjIsIAotICAgIDI1MSwgMjIwLCAyNCwgMjMyLCAzNywgNywgMywgMSwgMjI0LCAxMTMsIDIsIDYyLCAyNTEsIDIyMCwgMjQsIDIzMiwgMzcsIAotICAgIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCAyMzIsIDI0MywgNTUsIAotICAgIDcsIDYsIDEsIDIyMywgNCwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyMjMsIDQsIDIsIDYyLCA0OSwgNywgNiwgMSwgMjIzLCA0LCAKLSAgICAyLCA2MiwgNTUsIDcsIDMsIDEsIDIyMywgNCwgMiwgNjIsIDU1LCA3LCA2LCAxLCAyMjMsIDQsIDIsIDI1NCwgMTY0LCAyNCwgCi0gICAgNjIsIDQ5LCA3LCAzLCAxLCAyMjMsIDQsIDIsIDI1NCwgMTY0LCAyNCwgNjIsIDQ5LCA3LCA2LCAxLCAyMjMsIDQsIDIsIAotICAgIDI1MCwgMTY3LCAyNCwgNjIsIDQ5LCA3LCAzLCAxLCAyMjMsIDQsIDIsIDI1MCwgMTY3LCAyNCwgNjIsIDQ5LCA3LCA2LCAxLCAKLSAgICAyMjMsIDQsIDIsIDYyLCAyNTEsIDIyMCwgMjQsIDYyLCA0OSwgNywgMywgMSwgMjIzLCA0LCAyLCA2MiwgMjUxLCAyMjAsIAotICAgIDI0LCA2MiwgNDksIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCA2MiwgNDksIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCA2MiwgNDksIAotICAgIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCA2MiwgNTUsIDcsIDYsIDEsIDIxOCwgCi0gICAgMTAwLCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAyMzIsIDI0MywgNTUsIDcsIDYsIDEsIDIxOCwgCi0gICAgMTAwLCAyLCAyNDksIDIyNCwgNTUsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAyNDksIDIyNCwgNTUsIDcsIDYsIDEsIDExMSwgCi0gICAgMiwgMjQ3LCAyMTAsIDU1LCA3LCAzLCAxLCAxMTEsIDIsIDI0NywgMjEwLCA1NSwgNywgNiwgMSwgMTExLCAyLCAyMTcsIDQzLCAKLSAgICA1NSwgNywgMywgMSwgMTExLCAyLCAyMTcsIDQzLCA1NSwgNywgNiwgMSwgMTExLCAyLCAyNDksIDIyNCwgNTUsIDcsIDMsIDEsIAotICAgIDExMSwgMiwgMjQ5LCAyMjQsIDU1LCA3LCA2LCAxLCAxMTEsIDIsIDIxNywgNDMsIDI0LCAxNzksIDcsIDMsIDEsIDExMSwgMiwgCi0gICAgMjE3LCA0MywgMjQsIDE3OSwgNywgNiwgMSwgMTExLCAyLCAyMzIsIDM4LCAyNCwgMjQ3LCAyMDksIDcsIDMsIDEsIDExMSwgCi0gICAgMiwgMjMyLCAzOCwgMjQsIDI0NywgMjA5LCA3LCA2LCAxLCAyMTUsIDgwLCAyLCAyMTcsIDQyLCA3LCAzLCAxLCAyMTUsIDgwLCAKLSAgICAyLCAyMTcsIDQyLCA3LCA2LCAxLCAyMTUsIDgwLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIxNSwgODAsIDIsIDYyLCA1NSwgNywgCi0gICAgNiwgMSwgMjE0LCA4MywgMiwgMjQyLCAxMTMsIDcsIDMsIDEsIDIxNCwgODMsIDIsIDI0MiwgMTEzLCA3LCA2LCAxLCAyMTQsIAotICAgIDgzLCAyLCAxNzksIDcsIDMsIDEsIDIxNCwgODMsIDIsIDE3OSwgNywgNiwgMSwgMjE0LCA4MywgMiwgMjQ3LCAyMDksIDcsIAotICAgIDMsIDEsIDIxNCwgODMsIDIsIDI0NywgMjA5LCA3LCA2LCAxLCAyMTQsIDgzLCAyLCA2MiwgNDksIDcsIDMsIDEsIDIxNCwgCi0gICAgODMsIDIsIDYyLCA0OSwgNywgNiwgMSwgMjE0LCA4MywgMiwgNjIsIDU1LCA3LCAzLCAxLCAyMTQsIDgzLCAyLCA2MiwgNTUsIAotICAgIDcsIDYsIDEsIDIxMywgMTY3LCAyLCA2MiwgNDksIDcsIDMsIDEsIDIxMywgMTY3LCAyLCA2MiwgNDksIDcsIDYsIDEsIDIxMywgCi0gICAgMTY3LCAyLCAyNDcsIDIwOSwgNywgMywgMSwgMjEzLCAxNjcsIDIsIDI0NywgMjA5LCA3LCA2LCAxLCAyMTMsIDEwNiwgMiwgCi0gICAgNjIsIDQ5LCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyMTIsIDE1MywgMiwgMjQ5LCAyMjMsIDcsIAotICAgIDMsIDEsIDIxMiwgMTUzLCAyLCAyNDksIDIyMywgNywgNiwgMSwgMjEyLCAxNTMsIDIsIDYyLCA1NSwgNywgMywgMSwgMjEyLCAKLSAgICAxNTMsIDIsIDYyLCA1NSwgNywgNiwgMSwgMjEyLCAxNTMsIDIsIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgMjEyLCAxNTMsIDIsIAotICAgIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgMjQyLCA0MiwgMiwgMjMyLCAyNDMsIDU1LCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgCi0gICAgMjQ3LCAyMDksIDcsIDMsIDEsIDIxNCwgODMsIDIsIDIyMywgMTMxLCA0OSwgNywgMywgMSwgMjEzLCAxMDYsIDIsIDIyMywgCi0gICAgMTMxLCA0OSwgNywgMywgMSwgMTE4LCAyLCA0NiwgMTUxLCAyMjMsIDEzMCwgNywgMywgMSwgMTg0LCAyMjMsIDQsIDIsIDYyLCAKLSAgICA0OSwgNywgMywgMSwgMTg0LCAyMjMsIDQsIDIsIDI0NywgMjA3LCA5MCwgNywgMywgMSwgMTg0LCAyMjMsIDQsIDIsIDEyNCwgCi0gICAgOTAsIDcsIDYsIDEsIDIyMCwgMjU1LCAxOTcsIDcsIDMsIDEsIDI0OCwgNSwgNywgNiwgMSwgMTE4LCAyLCA2MiwgNTUsIDcsIAotICAgIDMsIDEsIDExOCwgMiwgNjIsIDU1LCA3LCA2LCAxLCAxMTgsIDIsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAxMTgsIDIsIDI0MSwgCi0gICAgMzgsIDQ5LCA3LCA2LCAxLCAxMTgsIDIsIDI0OSwgMjI0LCAyNCwgMTc5LCA3LCAzLCAxLCAxMTgsIDIsIDI0OSwgMjI0LCAKLSAgICAyNCwgMTc5LCA3LCA2LCAxLCAxMTgsIDIsIDI0OSwgMjI0LCAyNCwgMjQyLCAxMTMsIDcsIDMsIDEsIDExOCwgMiwgMjQ5LCAKLSAgICAyMjQsIDI0LCAyNDIsIDExMywgNywgNiwgMSwgMTE4LCAyLCAyNDksIDIyNCwgMjQsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAKLSAgICAxMTgsIDIsIDI0OSwgMjI0LCAyNCwgMjQxLCAzOCwgNDksIDcsIDYsIDEsIDExOCwgMiwgMjQ5LCAyMjQsIDI0LCAyMTcsIAotICAgIDQyLCA3LCAzLCAxLCAxMTgsIDIsIDI0OSwgMjI0LCAyNCwgMjE3LCA0MiwgNywgNiwgMSwgMTE4LCAyLCAyNDksIDIyNCwgCi0gICAgMjQsIDYyLCA1NSwgNywgMywgMSwgMTE4LCAyLCAyNDksIDIyNCwgMjQsIDYyLCA1NSwgNywgNiwgMSwgMTE4LCAyLCAyNTEsIAotICAgIDc1LCAyNCwgMTc5LCA3LCAzLCAxLCAxMTgsIDIsIDI1MSwgNzUsIDI0LCAxNzksIDcsIDYsIDEsIDExOCwgMiwgMjUxLCA3NSwgCi0gICAgMjQsIDI0MiwgMTEzLCA3LCAzLCAxLCAxMTgsIDIsIDI1MSwgNzUsIDI0LCAyNDIsIDExMywgNywgNiwgMSwgMTE4LCAyLCAKLSAgICAyNTEsIDc1LCAyNCwgMjQxLCAzOCwgNDksIDcsIDMsIDEsIDExOCwgMiwgMjUxLCA3NSwgMjQsIDI0MSwgMzgsIDQ5LCA3LCAKLSAgICA2LCAxLCAxMTgsIDIsIDI1MSwgNzUsIDI0LCAyMTcsIDQyLCA3LCAzLCAxLCAxMTgsIDIsIDI1MSwgNzUsIDI0LCAyMTcsIAotICAgIDQyLCA3LCA2LCAxLCAxMTgsIDIsIDI1MSwgNzUsIDI0LCA2MiwgNTUsIDcsIDMsIDEsIDExOCwgMiwgMjUxLCA3NSwgMjQsIAotICAgIDYyLCA1NSwgNywgNiwgMSwgMTkxLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDE5MSwgMiwgNjIsIDU1LCA3LCA2LCAxLCAxOTEsIAotICAgIDIsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAxOTEsIDIsIDI0MSwgMzgsIDQ5LCA3LCA2LCAxLCAxOTEsIDIsIDIxNywgNDIsIAotICAgIDcsIDMsIDEsIDE5MSwgMiwgMjE3LCA0MiwgNywgNiwgMSwgMTkxLCAyLCAyNDksIDIyNCwgMjQsIDE3OSwgNywgMywgMSwgCi0gICAgMTkxLCAyLCAyNDksIDIyNCwgMjQsIDE3OSwgNywgNiwgMSwgMTkxLCAyLCAyNDksIDIyNCwgMjQsIDI0MiwgMTEzLCA3LCAzLCAKLSAgICAxLCAxOTEsIDIsIDI0OSwgMjI0LCAyNCwgMjQyLCAxMTMsIDcsIDYsIDEsIDE5MSwgMiwgMjQ5LCAyMjQsIDI0LCAyNDEsIAotICAgIDM4LCA0OSwgNywgMywgMSwgMTkxLCAyLCAyNDksIDIyNCwgMjQsIDI0MSwgMzgsIDQ5LCA3LCA2LCAxLCAxOTEsIDIsIDI0OSwgCi0gICAgMjI0LCAyNCwgMjE3LCA0MiwgNywgMywgMSwgMTkxLCAyLCAyNDksIDIyNCwgMjQsIDIxNywgNDIsIDcsIDYsIDEsIDE5MSwgCi0gICAgMiwgMjQ5LCAyMjQsIDI0LCA2MiwgNTUsIDcsIDMsIDEsIDE5MSwgMiwgMjQ5LCAyMjQsIDI0LCA2MiwgNTUsIDcsIDYsIDEsIAotICAgIDI0MCwgMTQ2LCAyLCAyNDEsIDM4LCA0OSwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDI0MSwgMzgsIDQ5LCA3LCA2LCAxLCAKLSAgICAyNDAsIDE0NiwgMiwgNjIsIDU1LCA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgNjIsIDU1LCA3LCA2LCAxLCAxNTcsIDIsIDYyLCAKLSAgICA1NSwgNywgMywgMSwgMTU3LCAyLCA2MiwgNTUsIDcsIDYsIDEsIDE1NywgMiwgMjQxLCAzOCwgNDksIDcsIDMsIDEsIDE1NywgCi0gICAgMiwgMjQxLCAzOCwgNDksIDcsIDYsIDEsIDE1NywgMiwgMjQ5LCAyMjQsIDI0LCAxNzksIDcsIDMsIDEsIDE1NywgMiwgMjQ5LCAKLSAgICAyMjQsIDI0LCAxNzksIDcsIDYsIDEsIDE1NywgMiwgMjQ5LCAyMjQsIDI0LCAyNDIsIDExMywgNywgMywgMSwgMTU3LCAyLCAKLSAgICAyNDksIDIyNCwgMjQsIDI0MiwgMTEzLCA3LCA2LCAxLCAxNTcsIDIsIDI0OSwgMjI0LCAyNCwgMjQxLCAzOCwgNDksIDcsIDMsIAotICAgIDEsIDE1NywgMiwgMjQ5LCAyMjQsIDI0LCAyNDEsIDM4LCA0OSwgNywgNiwgMSwgMTU3LCAyLCAyNDksIDIyNCwgMjQsIDIxNywgCi0gICAgNDIsIDcsIDMsIDEsIDE1NywgMiwgMjQ5LCAyMjQsIDI0LCAyMTcsIDQyLCA3LCA2LCAxLCAxNTcsIDIsIDI0OSwgMjI0LCAKLSAgICAyNCwgNjIsIDU1LCA3LCAzLCAxLCAxNTcsIDIsIDI0OSwgMjI0LCAyNCwgNjIsIDU1LCA3LCA2LCAxLCAxNTcsIDIsIDI0MCwgCi0gICAgMjM2LCAyNCwgMTc5LCA3LCAzLCAxLCAxNTcsIDIsIDI0MCwgMjM2LCAyNCwgMTc5LCA3LCA2LCAxLCAxNTcsIDIsIDI0MCwgCi0gICAgMjM2LCAyNCwgMjQyLCAxMTMsIDcsIDMsIDEsIDE1NywgMiwgMjQwLCAyMzYsIDI0LCAyNDIsIDExMywgNywgNiwgMSwgMTU3LCAKLSAgICAyLCAyNDAsIDIzNiwgMjQsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAxNTcsIDIsIDI0MCwgMjM2LCAyNCwgMjQxLCAzOCwgNDksIAotICAgIDcsIDYsIDEsIDE1NywgMiwgMjQwLCAyMzYsIDI0LCAyMTcsIDQyLCA3LCAzLCAxLCAxNTcsIDIsIDI0MCwgMjM2LCAyNCwgCi0gICAgMjE3LCA0MiwgNywgNiwgMSwgMTU3LCAyLCAyNDAsIDIzNiwgMjQsIDYyLCA1NSwgNywgMywgMSwgMTU3LCAyLCAyNDAsIAotICAgIDIzNiwgMjQsIDYyLCA1NSwgNywgNiwgMSwgMTExLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDExMSwgMiwgNjIsIDU1LCA3LCA2LCAKLSAgICAxLCAxMTEsIDIsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAxMTEsIDIsIDI0MSwgMzgsIDQ5LCA3LCA2LCAxLCAxMTEsIDIsIAotICAgIDI0MCwgMjM2LCAyNCwgMTc5LCA3LCAzLCAxLCAxMTEsIDIsIDI0MCwgMjM2LCAyNCwgMTc5LCA3LCA2LCAxLCAxMTEsIDIsIAotICAgIDI0MCwgMjM2LCAyNCwgMjQyLCAxMTMsIDcsIDMsIDEsIDExMSwgMiwgMjQwLCAyMzYsIDI0LCAyNDIsIDExMywgNywgNiwgMSwgCi0gICAgMTExLCAyLCAyNDAsIDIzNiwgMjQsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAxMTEsIDIsIDI0MCwgMjM2LCAyNCwgMjQxLCAKLSAgICAzOCwgNDksIDcsIDYsIDEsIDExMSwgMiwgMjQwLCAyMzYsIDI0LCAyMTcsIDQyLCA3LCAzLCAxLCAxMTEsIDIsIDI0MCwgCi0gICAgMjM2LCAyNCwgMjE3LCA0MiwgNywgNiwgMSwgMTExLCAyLCAyNDAsIDIzNiwgMjQsIDYyLCA1NSwgNywgMywgMSwgMTExLCAyLCAKLSAgICAyNDAsIDIzNiwgMjQsIDYyLCA1NSwgNywgNiwgMSwgMjEzLCAxMDYsIDIsIDI0MiwgMTEzLCA3LCAzLCAxLCAyMTMsIDEwNiwgCi0gICAgMiwgMjQyLCAxMTMsIDcsIDYsIDEsIDIxMywgMTA2LCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIxMywgMTA2LCAyLCA2MiwgNTUsIAotICAgIDcsIDYsIDEsIDIxMywgMTA2LCAyLCAyNDEsIDM4LCA0OSwgNywgMywgMSwgMjEzLCAxMDYsIDIsIDI0MSwgMzgsIDQ5LCA3LCAKLSAgICA2LCAxLCAyMTMsIDEwNiwgMiwgMjE3LCA0MiwgNywgMywgMSwgMjEzLCAxMDYsIDIsIDIxNywgNDIsIDcsIDYsIDEsIDIzMSwgCi0gICAgMzYsIDIzMiwgMjE0LCA3LCAzLCAxLCAyMzEsIDM2LCAyMzIsIDIxNCwgNywgNiwgMSwgMjMxLCAzNiwgMjE1LCA3OSwgNywgCi0gICAgMywgMSwgMjMxLCAzNiwgMjE1LCA3OSwgNywgNiwgMSwgMjEzLCAxMDYsIDIsIDIzMiwgMTc3LCA3LCAzLCAxLCAyMTMsIAotICAgIDEwNiwgMiwgMjMyLCAxNzcsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjUsIDM5LCAyNSwgMywgMSwgMjU0LCA1MywgMiwgCi0gICAgMjQ4LCA5OSwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDI1NCwgNTMsIAotICAgIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgMywgCi0gICAgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAKLSAgICA1MCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMjUsIAotICAgIDM5LCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjQ4LCA5OSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAKLSAgICAyMTQsIDI0NSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgCi0gICAgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCA2LCAxLCAKLSAgICAyNTQsIDUzLCAyLCAyMjUsIDQwLCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIyNiwgNTAsIAotICAgIDI1LCAzLCAxLCAyNDUsIDY0LCAyLCAyMjUsIDM5LCAyNSwgMywgMSwgMjQ1LCA2NCwgMiwgMjQ4LCA5OSwgMjUsIDMsIDEsIAotICAgIDI0NSwgNjQsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDI0NSwgNjQsIDIsIDIwNywgMjQsIDIxNCwgCi0gICAgMjQ1LCAyNSwgMywgMSwgMjQ1LCA2NCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjQ1LCA2NCwgMiwgCi0gICAgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjUsIDM5LCAyNSwgNiwgMSwgMjQ1LCA2NCwgMiwgCi0gICAgMjQ4LCA5OSwgMjUsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIDI0NSwgNjQsIAotICAgIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjQ1LCA2NCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgNiwgCi0gICAgMSwgMjQ1LCA2NCwgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjUsIDM5LCAyNSwgMywgCi0gICAgMSwgMjQ1LCAyOSwgMiwgMjQ4LCA5OSwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIAotICAgIDMsIDEsIDI0NSwgMjksIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIAotICAgIDIyNiwgMjM0LCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAKLSAgICAyMjUsIDQwLCAyNCwgMjI2LCA1MCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIwNywgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAKLSAgICAyNDUsIDI5LCAyLCAyMjUsIDM5LCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjQ4LCA5OSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIAotICAgIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgCi0gICAgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjI2LCAKLSAgICAyMzQsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIAotICAgIDIwNywgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjI1LCAzOSwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAKLSAgICAyNDgsIDk5LCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIzNSwgCi0gICAgMTg0LCAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzQsIAotICAgIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjI1LCA0MCwgCi0gICAgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjA3LCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDIzNSwgMTg0LCAKLSAgICAyLCAyMjUsIDM5LCAyNSwgNiwgMSwgMjM1LCAxODQsIDIsIDI0OCwgOTksIDI1LCA2LCAxLCAyMzUsIDE4NCwgMiwgMjI1LCAKLSAgICA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjM1LCAxODQsIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgCi0gICAgMjM1LCAxODQsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNCwgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAyMDcsIDI0LCAyMjYsIAotICAgIDIzNCwgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAKLSAgICAyMDcsIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjI3LCA2NiwgMiwgMjI1LCAzOSwgMjUsIDMsIDEsIDIyNywgNjYsIDIsIAotICAgIDI0OCwgOTksIDI1LCAzLCAxLCAyMjcsIDY2LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyMjcsIDY2LCAKLSAgICAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIyNywgNjYsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNCwgMjUsIDMsIAotICAgIDEsIDIyNywgNjYsIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjI3LCA2NiwgMiwgMjI1LCAzOSwgMjUsIDYsIAotICAgIDEsIDIyNywgNjYsIDIsIDI0OCwgOTksIDI1LCA2LCAxLCAyMjcsIDY2LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCAKLSAgICA2LCAxLCAyMjcsIDY2LCAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIDIyNywgNjYsIDIsIDIyNSwgNDAsIDI0LCAKLSAgICAyMjYsIDIzNCwgMjUsIDYsIDEsIDIyNywgNjYsIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIAotICAgIDIyNSwgMzksIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjQ4LCA5OSwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyMjUsIDQwLCAKLSAgICAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyMTUsIAotICAgIDEyOSwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAKLSAgICAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIwNywgCi0gICAgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAyMTUsIDEyOSwgMiwgMjQ4LCA5OSwgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAyMDcsIAotICAgIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAyMDcsIDI0LCAyMjYsIDIzNCwgMjUsIDYsIDEsIDIxNSwgCi0gICAgMTI5LCAyLCAyMDcsIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI1LCAzOSwgMjUsIDMsIDEsIDIyNywgCi0gICAgNjgsIDIsIDI0OCwgOTksIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAKLSAgICAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIAotICAgIDIzNCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI1LCAKLSAgICA0MCwgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMjYsIDUwLCAyNSwgNiwgMSwgMjI3LCAKLSAgICA2OCwgMiwgMjI1LCAzOSwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDI0OCwgOTksIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMjUsIAotICAgIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIDIyNywgCi0gICAgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNCwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAKLSAgICAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMDcsIAotICAgIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjYsIAotICAgIDIzNCwgMjUsIDMsIDEsIDI0NSwgNjQsIDIsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjQ1LCA2NCwgMiwgMjI2LCAyMzQsIDI1LCAKLSAgICAzLCAxLCAyNDUsIDI5LCAyLCAyMTQsIDI0NSwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNiwgMjM0LCAyNSwgMywgMSwgCi0gICAgMjM1LCAxODQsIDIsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjI3LCAKLSAgICA2NiwgMiwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyMjcsIDY2LCAyLCAyMjYsIDIzNCwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAKLSAgICAyMTQsIDI0NSwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyMjYsIDIzNCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIxNCwgCi0gICAgMjQ1LCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjUsIDQwLCAyNCwgCi0gICAgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMDcsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIAotICAgIDIyNSwgNDAsIDI0LCAyMTQsIDI0NiwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjE0LCAKLSAgICAyNDYsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNSwgMjQsIDIxMiwgCi0gICAgMjEwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjI2LCAyMzUsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIAotICAgIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDUxLCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAKLSAgICAyMDcsIDI0LCAyMjYsIDUxLCAyNCwgMjEyLCAyMTAsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMjUsIDQwLCAyNCwgMjI1LCAKLSAgICA1MSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMjUsIAotICAgIDQwLCAyNCwgMjE0LCAyNDYsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjE0LCAyNDYsIAotICAgIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM1LCAyNCwgMjI1LCA1MSwgCi0gICAgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIyNiwgMjM1LCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDI1NCwgNTMsIAotICAgIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDUxLCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIyNiwgCi0gICAgNTEsIDI0LCAyMjUsIDUxLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgCi0gICAgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAKLSAgICAyNDYsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIwNywgMjQsIDIxNCwgMjQ2LCAyNCwgMjEyLCAyMTAsIAotICAgIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzUsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI0NSwgCi0gICAgMjksIDIsIDIwNywgMjQsIDIyNiwgMjM1LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAKLSAgICAyNCwgMjI2LCA1MSwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjI2LCA1MSwgMjQsIAotICAgIDIxMiwgMjEwLCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNDUsIDI5LCAKLSAgICAyLCAyMDcsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ2LCAyNCwgCi0gICAgMjI1LCA1MSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIwNywgMjQsIDIxNCwgMjQ2LCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIAotICAgIDI0NSwgMjksIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNSwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAKLSAgICAyMDcsIDI0LCAyMjYsIDIzNSwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAKLSAgICA1MSwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMDcsIDI0LCAyMjYsIDUxLCAyNCwgMjI1LCA1MSwgMjUsIAotICAgIDMsIDEsIDIyNywgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIAotICAgIDIxMiwgMjEwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ2LCAyNCwgMjEyLCAyMTAsIDI1LCAKLSAgICAzLCAxLCAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMTQsIDI0NiwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgCi0gICAgMjI1LCA0MCwgMjQsIDIyNiwgMjM1LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMjYsIAotICAgIDIzNSwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgNTEsIDI0LCAyMTIsIAotICAgIDIxMCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIDIyNiwgNTEsIDI0LCAyMTIsIDIxMCwgMjUsIDYsIDEsIDIyNywgCi0gICAgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjA3LCAyNCwgMjI1LCA1MSwgMjUsIAotICAgIDYsIDEsIDIyNywgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NiwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyMjcsIDY4LCAKLSAgICAyLCAyMDcsIDI0LCAyMTQsIDI0NiwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMjUsIDQwLCAyNCwgCi0gICAgMjI2LCAyMzUsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjA3LCAyNCwgMjI2LCAyMzUsIDI0LCAyMjUsIAotICAgIDUxLCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgNTEsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgCi0gICAgMjI3LCA2OCwgMiwgMjA3LCAyNCwgMjI2LCA1MSwgMjQsIDIyNSwgNTEsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMTQsIAotICAgIDEwMSwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIzMiwgMzcsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMTQsIDI0NiwgMjQsIAotICAgIDIxMiwgMjEwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjYsIDIzNSwgCi0gICAgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjI2LCA1MCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNiwgCi0gICAgNTEsIDI0LCAyMTIsIDIxMCwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIxNCwgMTAxLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgCi0gICAgMjMyLCAzNywgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjI2LCAyMzQsIAotICAgIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMjUsIDUxLCAyNSwgMjM0LCAxMSwgMjUsIDIyNSwgNTEsIDI1LCAyMjUsIDM5LCAyNSwgCi0gICAgMjI2LCA1MCwgMjUsIDI0NywgMjA0LCAyNCwgMjI2LCA1MCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIxNCwgMjQ2LCAyNCwgCi0gICAgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNiwgMjM1LCAKLSAgICAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjYsIDUwLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjI2LCAKLSAgICA1MSwgMjQsIDIxMiwgMjEwLCAyNSwgNiwgMSwgMjQ1LCA2NCwgMiwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyNDUsIDY0LCAyLCAKLSAgICAyMjYsIDIzNCwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjI2LCAyMzQsIAotICAgIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMjUsIDUxLCAyNSwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgMjI1LCA0MCwgCi0gICAgMjQsIDIyNiwgMjM0LCAyNSwgMjI1LCA0MCwgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjE0LCAxMDEsIAotICAgIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjMyLCAzNywgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyNDcsIDIwNCwgMjQsIDIxNCwgCi0gICAgMjQ1LCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDI0NywgMjA0LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyMzUsIDE4NCwgCi0gICAgMiwgMjI2LCA1MCwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyNDcsIDIwNCwgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAyMzUsIAotICAgIDE4NCwgMiwgMjE0LCAxMDEsIDI1LCA2LCAxLCAyMzUsIDE4NCwgMiwgMjMyLCAzNywgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAKLSAgICAyMTQsIDI0NSwgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAyMjYsIDIzNCwgMjUsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgCi0gICAgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCAyMDcsIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIxNCwgMTAxLCAKLSAgICAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIzMiwgMzcsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjQ3LCAyMDQsIDI0LCAyMTQsIAotICAgIDI0NSwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyNDcsIDIwNCwgMjQsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjIzLCAxOTEsIAotICAgIDIsIDIyNSwgMzksIDI1LCAzLCAxLCAyMjMsIDE5MSwgMiwgMjQ4LCA5OSwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyMjYsIAotICAgIDUwLCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDI0NywgMjA0LCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAKLSAgICAyMTQsIDEwMSwgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAyMzIsIDM3LCAyNSwgNiwgMSwgMjE1LCAxMjksIDIsIDIxNCwgCi0gICAgMjQ1LCAyNSwgNiwgMSwgMjE1LCAxMjksIDIsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjIzLCAxOTEsIDIsIDI0OCwgOTksIDI1LCAKLSAgICAyNDcsIDIwNCwgMjQsIDIxNCwgMjQ1LCAyNSwgMjQ3LCAyMDQsIDI0LCAyMjYsIDIzNCwgMjUsIDIxNCwgMjQ1LCAyNSwgMywgCi0gICAgMSwgMjI3LCA2OCwgMiwgMjE0LCAyNDYsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIxMiwgMjEwLCAKLSAgICAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI2LCAyMzUsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIyNiwgCi0gICAgNTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMjYsIDUxLCAyNCwgMjEyLCAyMTAsIDI1LCA2LCAxLCAyMjcsIDY2LCAyLCAKLSAgICAyMTQsIDI0NSwgMjUsIDYsIDEsIDIyNywgNjYsIDIsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjE0LCAyNDUsIAotICAgIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMjYsIDIzNCwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIyNSwgNTEsIDI1LCAyMjYsIAotICAgIDIzNCwgMjUsIDI0OCwgOTksIDI0NSwgMTA5LCAyMjQsIDE3MiwgMjQ1LCAxMTgsIDIyNCwgMTcyLCAyNDUsIDEwOSwgMjE5LCAKLSAgICAyMDYsIDI0NSwgMTE4LCAyMTksIDIwNiwgMjE3LCA5NSwgMjE5LCAyMDYsIDI0MywgMjM1LCAyMTksIDIwNiwgMjIwLCA1MSwgCi0gICAgMjE5LCAyMDYsIDI0NCwgODEsIDIxOSwgMjA2LCAyMjUsIDI3LCAyMTksIDIwNiwgMjE3LCAxMjMsIDIxOSwgMjA2LCAyNDIsIAotICAgIDE3LCAyMTksIDIwNiwgMjEyLCA4MCwgMjEzLCAyMzAsIDIxOSwgMjA2LCAyMTIsIDgwLCAyMTMsIDIzMCwgMjI4LCAxNzgsIAotICAgIDIxMiwgODAsIDIxMywgMjMwLCAyMzUsIDY2LCAyMzMsIDYyLCA3NywgMjIzLCAxNDAsIDc3LCAyNDAsIDE2MCwgMjI4LCAKLSAgICAxNzksIDI0MCwgMTYwLCAyNDQsIDgxLCAyNDgsIDEwMSwgMjQ1LCAxMDksIDI0OCwgMTAxLCAyNDUsIDExOCwgMjQ4LCAxMDEsIAotICAgIDE5OSwgMTM0LCA1MSwgNzEsIDIzMiwgMjQyLCA1MSwgMTE1LCAyMzIsIDI0MiwgNDIsIDIyMCwgODEsIDIyNCwgMTQzLCA3NywgCi0gICAgNDYsIDIyMCwgODEsIDIyNCwgMTQzLCA3NywgMjIwLCA4MSwgMjMyLCAxNjQsIDIyNCwgMTQzLCA3NywgMjIwLCA4MSwgMjQxLCAKLSAgICAxNDksIDIyNCwgMTQzLCA3NywgNDIsIDUxLCAyMjQsIDE0MywgNzcsIDQ2LCA1MSwgMjI0LCAxNDMsIDc3LCA1MSwgMjMyLCAKLSAgICAxNjQsIDIyNCwgMTQzLCA3NywgNTEsIDI0MSwgMTQ5LCAyMjQsIDE0MywgNzcsIDI0OCwgMTQ5LCA1MSwgMjQ4LCAxNDksIAotICAgIDI1MSwgNDIsIDIxNiwgMTgwLCAyNTEsIDQyLCAxMjIsIDYyLCAyMzMsIDgwLCAxMTcsIDYyLCAyMzMsIDgwLCAxOTksIDI0NSwgCi0gICAgMTIwLCAyNDAsIDE1OCwgMjI1LCAxNDQsIDIzMiwgMjQzLCAyMjEsIDU3LCAyMjYsIDE0MywgMjIxLCA1NywgMjMzLCA2MiwgCi0gICAgMjQ1LCAxMTYsIDIyMywgMTQwLCAyNDUsIDExNiwgMjI1LCAxMjYsIDI0NywgMTQ4LCAyNDMsIDI0NCwgMjMzLCA2MiwgMjI2LCAKLSAgICAyNDEsIDIyMywgMTQwLCAyMjYsIDI0MSwgMjMwLCAxNCwgMjI4LCAxODQsIDIxOSwgMjA2LCAyMjYsIDU4LCAyMzEsIDYsIAotICAgIDUyLCAyMjYsIDU4LCAyMTcsIDIwMSwgMjE3LCAxMDEsIDUyLCAyMjUsIDcxLCA1MSwgMjI1LCA3MSwgMjE2LCAxNjksIDIyNSwgCi0gICAgNzEsIDIyMywgMjAyLCAyMjUsIDcxLCAyMjMsIDIwMiwgNTEsIDIyNSwgNzEsIDIyMywgMjAyLCAyMTYsIDE2OSwgMjI1LCAKLSAgICA3MSwgMjUwLCAxNzAsIDIyMCwgODEsIDIzMywgNjYsIDI1NCwgMTksIDIyNCwgMTQzLCA3NywgMjIwLCA4MSwgMjIzLCAxNDQsIAotICAgIDI1NCwgMTksIDIyNCwgMTQzLCA3NywgMjI0LCAwLCA3NywgNTEsIDI0NCwgMjU0LCA3NywgMjM1LCAxOTgsIDIyNiwgMjQzLCAKLSAgICAyMTUsIDE1MCwgMTM3LCAyMTcsIDY1LCAyNTAsIDE3MSwgMjM1LCAyMTMsIDIyNSwgMTQ0LCAyNTMsIDEzMCwgMjQwLCAxNjEsIAotICAgIDI1MSwgNDIsIDI0MywgMjI4LCAyMjAsIDIzLCA0MiwgNDEsIDI1MSwgODUsIDIsIDIyNCwgMTUyLCA0NiwgNDEsIDI1MSwgCi0gICAgODUsIDIsIDIyNCwgMTUyLCA1MSwgMjI0LCAxNTgsIDc3LCAyMjQsIDE1OCwgMjQ0LCAyNTQsIDc3LCAyNDQsIDI1NCwgMjI0LCAKLSAgICAxNTgsIDc3LCAyMTcsIDIzLCA1LCAyNDUsIDMwLCAyMjMsIDIwMiwgMjI1LCAyMDAsIDUyLCA4MywgMTMyLCAyNTEsIDQyLCAKLSAgICA4MywgOTUsIDI1MSwgNDIsIDExNSwgMjUzLCAxMzIsIDIyMywgMjAyLCAyMjEsIDcwLCAyNDksIDE5NCwgMjE1LCAxMzQsIAotICAgIDExNywgMjUzLCAxMzEsIDI1NCwgNjcsIDIxNCwgMTY1LCAyNDksIDE1NiwgMjMwLCAyNTEsIDUyLCAyMTgsIDE3OSwgMjQ4LCAKLSAgICAxMDEsIDIzNSwgMTkxLCAyMTUsIDE1MCwgMjQ0LCAyMSwgMjI1LCAyNywgNzcsIDEzMywgNjIsIDIyNSwgMjYsIDIyNCwgCi0gICAgMTY5LCAyMjUsIDcxLCAyNDMsIDIzNywgNjIsIDIyNSwgMjYsIDI0NCwgNTAsIDYyLCAyMjUsIDI2LCAxMTcsIDYyLCAyMjUsIAotICAgIDI2LCAyNDMsIDIzNywgNjIsIDc3LCAyNDYsIDcyLCAyNDksIDcwLCAyMTYsIDE3OSwgNzEsIDI0MywgMjM3LCAyNDcsIDcyLCAKLSAgICAyMzEsIDE0NywgMTQsIDIxOSwgMjA2LCAyMTMsIDE5NiwgMjM1LCA2NiwgMjQzLCAxOTgsIDI1MywgMjIyLCAyMzUsIDE4OSwgCi0gICAgMjE3LCAzOCwgMjM1LCAxODksIDIyMSwgNTcsIDIzNSwgMTg5LCAyMjUsIDE1NiwgMjM1LCAyMjUsIDIxOCwgMTI3LCAyMTgsIAotICAgIDE5NiwgMjU0LCAxNjYsIDIxOCwgMTI3LCAyMTgsIDE5NiwgMjM1LCAyMjUsIDEyLCAyNDMsIDI0NSwgMjIxLCAzLCAyNTQsIAotICAgIDE2NiwgMTIsIDI0MywgMjQ1LCAyMjEsIDMsIDIzMCwgMTAsIDIxLCAyMjEsIDQsIDIyOCwgMTgwLCAyMSwgMjIxLCA0LCAKLSAgICAyMTgsIDIyMywgMjEyLCA3OSwgMjE4LCAyMjMsIDcsIDMsIDEsIDcyLCAyMTgsIDIyMywgMTYzLCAyMTgsIDIyMywgMTgwLCAKLSAgICAyMTgsIDIyMywgMTg5LCAyMTgsIDIyMywgMTk4LCAyMTgsIDIyMywgMTk1LCAyMTgsIDIyMywgMjAwLCAyMTgsIDIyMywgOTQsIAotICAgIDUyLCAyMTgsIDIyMywgMjMwLCAyNTAsIDIxOCwgMjIzLCAyNDUsIDYxLCA1MiwgMjE4LCAyMjMsIDQyLCAyMjYsIDEzMSwgCi0gICAgMjE4LCAyMjMsIDQ2LCAyMjYsIDEzMSwgMjE4LCAyMjMsIDcsIDMsIDEsIDIwNCwgMjE5LCAxMCwgMjEyLCA3OSwgMjE5LCAKLSAgICAxMCwgMTE2LCAyMTksIDEwLCAxMDksIDIxOSwgMTAsIDE2NiwgMjE5LCAxMCwgMTYzLCAyMTksIDEwLCAxODAsIDIxOSwgMTAsIAotICAgIDE4OSwgMjE5LCAxMCwgMTk4LCAyMTksIDEwLCAxOTUsIDIxOSwgMTAsIDIwMCwgMjE5LCAxMCwgOTQsIDUyLCAyMTksIDEwLCAKLSAgICAyMzAsIDI1MCwgMjE5LCAxMCwgMjQ1LCA2MSwgNTIsIDIxOSwgMTAsIDQyLCAyMjYsIDEzMSwgMjE5LCAxMCwgNDYsIDIyNiwgCi0gICAgMTMxLCA3LCAyMTksIDEwLCAzLCAxLCA2MSwgNywgMjE5LCAxMCwgMywgMSwgNzQsIDcsIDIxOSwgMTAsIDMsIDEsIDc1LCA3LCAKLSAgICAyMTksIDEwLCAzLCAxLCAyMTMsIDE2NiwgNywgMjE5LCAxMCwgMywgMSwgMjIyLCAxMTMsIDcsIDIxOSwgMTAsIDMsIDEsIAotICAgIDI0MiwgNDEsIDcsIDIxOSwgMTAsIDMsIDEsIDIzNSwgMjcsIDcsIDIxOSwgMTAsIDMsIDEsIDE1MCwgNywgMjE5LCAxMCwgMywgCi0gICAgMSwgMTgzLCA3LCAyMTksIDEwLCAzLCAxLCAyMDQsIDcsIDIxOSwgMTAsIDMsIDEsIDIyNiwgMjI5LCA3LCAyMTksIDEwLCAzLCAKLSAgICAxLCAxOTcsIDcsIDIxOSwgMTAsIDMsIDEsIDIxOCwgOTksIDI0NSwgMTMsIDUyLCAyNDksIDE2NSwgNTIsIDI0OSwgNTcsIAotICAgIDUyLCAyNDMsIDIyMSwgMjQzLCAyMjQsIDUyLCAyMzIsIDIyNywgNTIsIDIzMSwgNywgNTIsIDIzMCwgMjksIDUyLCAyMjYsIAotICAgIDM4LCA1MiwgMjIzLCAyOSwgNTIsIDIxMywgMjA0LCA1MiwgMTU2LCAyMjAsIDIyOSwgNTIsIDI0NywgODEsIDUyLCAyNDUsIAotICAgIDE0LCA1MiwgMjM0LCA4NSwgNTIsIDIxNiwgNzYsIDUyLCAyNDYsIDU1LCA1MiwgMjQzLCAxNiwgMjI2LCA2OCwgNTIsIDIyNiwgCi0gICAgMzYsIDUyLCAyNDIsIDg4LCA1MiwgMjUzLCA5OCwgNTIsIDI0MCwgMjE1LCA1MiwgMjUwLCAxMTksIDUyLCAyMzIsIDIyMCwgCi0gICAgMjE2LCAyMTYsIDUyLCAyMTksIDE4OCwgNTIsIDIxNywgMTk4LCA1MiwgMjM1LCAyMzgsIDIyMywgMjksIDUyLCAzNywgNDIsIAotICAgIDI0MSwgMjM4LCA0OSwgMzcsIDQ2LCAyNDEsIDIzOCwgNDksIDM3LCAxODQsIDcxLCAyMzIsIDI0MywgMjI2LCAyNDQsIDM3LCAKLSAgICAyMjAsIDE3NSwgNzEsIDIzMiwgMjQzLCAyMjYsIDI0NCwgMzcsIDI1MywgMjU1LCA3NiwgNDksIDM3LCAyNDksIDE5NSwgNzYsIAotICAgIDQ5LCAzNywgNDIsIDc2LCA0OSwgMzcsIDQ2LCA3NiwgNDksIDM3LCAyMjMsIDEzMSwgMjI2LCAyNDQsIDM3LCAyNDksIDE5NSwgCi0gICAgMjIzLCAxMzEsIDIyNiwgMjQ0LCAzNywgMjUzLCAyNTUsIDIyMywgMTMxLCAyMjYsIDI0NCwgMzcsIDEzMywgMTc2LCA0OSwgCi0gICAgMzcsIDI0MywgMjM3LCAxNzYsIDQ5LCAzNywgMjQ1LCAxMDQsIDI0OSwgMjI4LCAzNywgMjQ1LCAxMDQsIDIxOSwgMTY2LCAKLSAgICAzNywgMjQ1LCAxMDQsIDI0NywgMjAwLCAzNywgMjQ1LCAxMDQsIDI0OSwgMjI5LCAyNTIsIDk3LCAzNywgNDIsIDQ2LCA3NiwgCi0gICAgNDksIDM3LCAyNDUsIDEwNCwgMjIyLCAxMDcsIDM3LCAyNDUsIDEwNCwgMjM0LCAxNDEsIDM3LCAyNDUsIDEwNCwgMjE1LCAKLSAgICAxMjYsIDIyNSwgMTQxLCAyMTYsIDE4MywgMzcsIDIyMywgMjAzLCAyMTksIDIzMiwgMjI2LCAyNDQsIDM3LCA1MSwgNzEsIAotICAgIDIxOSwgNDUsIDIyNiwgMjQ0LCAzNywgMjU0LCA5LCA4NywgMzcsIDIxNiwgMTY5LCAyMTUsIDE1MiwgMzcsIDIxMywgMjMyLCAKLSAgICAyNTEsIDY4LCA0OSwgMzcsIDEzMiwgNzYsIDIyNiwgMjQ0LCAzNywgMTg0LCA1MSwgMjE5LCAyMzIsIDIyNiwgMjQ0LCAzNywgCi0gICAgOTUsIDI0MSwgMjM4LCAyLCAyMDYsIDI0NiwgNTcsIDM3LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDI0NiwgNTcsIDM3LCAKLSAgICA0MiwgNzYsIDU1LCAzNywgNDYsIDc2LCA1NSwgMzcsIDI1MywgMTMzLCA0OSwgMjU0LCAxNzEsIDIyNywgOTcsIDI1NCwgCi0gICAgMTU2LCAyMTEsIDIxMSwgMjE3LCAxNDksIDIxOSwgMTksIDE4NywgNiwgMjUwLCAyNTIsIDI0OCwgMjIsIDI1MCwgMTEyLCAKLSAgICAyNTAsIDEwOSwgMjMyLCAyNDMsIDg3LCAyNTAsIDE3MiwgMjI3LCA5NywgMjUwLCAyMTIsIDIxNSwgMTU5LCAyNDUsIDE1LCAKLSAgICAyNDksIDEzMCwgMjIyLCAxMDQsIDI0OCwgMjIsIDI0NCwgMTQ3LCAxMTMsIDMsIDI0MywgMTc3LCAxMTMsIDYsIDI0MiwgNDEsIAotICAgIDI1MSwgMTQyLCA2LCAyNDIsIDQxLCAxODcsIDYsIDI0MiwgNDEsIDIyNSwgMTY5LCAyNDksIDEzMCwgMjI1LCAxNjksIDI0OSwgCi0gICAgMTMxLCAxMTAsIDExNywgMjI1LCAyNDAsIDExMywgNiwgNzIsIDI1MSwgMTQyLCA2LCA3MiwgMTEzLCA2LCAxNTAsIDExMywgCi0gICAgMywgMTUwLCAyMzMsIDE3MSwgNTQsIDI1MiwgNjAsIDg3LCAxODcsIDYsIDIwNCwgMjI4LCA1MiwgNTIsIDIxOSwgMjE4LCAKLSAgICAyMjQsIDEyLCAyNDksIDEwMSwgMTEzLCA2LCAyMjYsIDIyOSwgMTg3LCA2LCAyMjYsIDIyOSwgMTg3LCA2LCAyMjQsIDI0MCwgCi0gICAgMTEzLCA2LCAxNDksIDI1MSwgMTQyLCA2LCAxNDksIDE4NywgNiwgMTQ5LCAyMjUsIDc2LCAyMTgsIDIxLCAyMjMsIDIxNCwgCi0gICAgMjIxLCA1MywgNzcsIDIxNywgMjEwLCA1MiwgMjE2LCAyMTAsIDE1MiwgNTIsIDIxNCwgMjE3LCAxODcsIDYsIDIxMiwgMTUyLCAKLSAgICAyMjcsIDEsIDUyLCAyMjcsIDg3LCA1MiwgMjM1LCAxOTEsIDIyNywgODcsIDUyLCAyNTEsIDE0MiwgNiwgMjEyLCAxNTIsIAotICAgIDIxNiwgNTgsIDI1LCAzLCAxLCAyMzUsIDE4MywgMjM0LCAxNzksIDUyLCAyNTQsIDE2LCA1MiwgMTEzLCA2LCAyNTMsIDc0LCAKLSAgICAyNTEsIDE0MiwgNiwgMjUwLCAyNTIsIDI0NSwgMzMsIDg3LCAxMTMsIDMsIDc0LCAxMTMsIDYsIDc0LCAxMTMsIDYsIDI0NCwgCi0gICAgMjMwLCAyMTYsIDU4LCA2LCAyNDQsIDIzMCwgMTEzLCA2LCAxODMsIDExMywgMywgNzUsIDEwNiwgODcsIDI1MSwgMjA2LCAKLSAgICA4NywgMjQyLCAxNzgsIDg3LCAyNDgsIDEzNSwgODcsIDIzNSwgMjI5LCAyMTksIDIxNiwgMjIzLCA4OSwgNiwgMjI0LCAyNDAsIAotICAgIDI0NCwgMTUwLCA1MiwgMTg3LCAzLCAyMjUsIDI0MCwgMTg3LCAzLCAyNDMsIDgzLCAxODcsIDYsIDI0MywgODMsIDE4NywgNiwgCi0gICAgMjI1LCAyNDAsIDE4NywgMjMwLCA5NywgMjE4LCAyNDEsIDIxNiwgNTgsIDM1LCA2LCAyNDMsIDE3NywgMjE2LCA1OCwgMzUsIAotICAgIDYsIDE1MCwgMjIzLCAyMDIsIDM1LCA2LCAxNTAsIDIxNiwgNTgsIDM1LCA2LCAyMTMsIDEwNSwgMTg3LCAzMiwgNiwgMjQ5LCAKLSAgICAzLCAxODcsIDMyLCAzLCAyNDksIDMsIDE4NywgMzIsIDMsIDc0LCAxODcsIDMyLCAzLCA3MiwgMTg3LCAzMiwgMywgMjM1LCAKLSAgICAxNDIsIDIyNSwgNTQsIDIzMiwgMjQyLCAyMTYsIDU4LCAyNTQsIDM1LCAyMjYsIDU4LCA1MiwgMjU0LCA4OCwgMjE2LCA1OCwgCi0gICAgMywgMjQ0LCAyMzAsIDE2LCAzMSwgMjIyLCAxNjcsIDIxOSwgMjE2LCAyMTQsIDk3LCAyNDMsIDIyOCwgMTIyLCAyMjEsIDM5LCAKLSAgICAyMTQsIDk3LCAyNDMsIDIyOCwgMTIyLCAyMjksIDI1LCAyMTQsIDk3LCAyNDMsIDIyOCwgMTIyLCAyMTcsIDE5NCwgMjE0LCAKLSAgICA5NywgMjQzLCAyMjgsIDEyMiwgMjE3LCAxMjEsIDIxNCwgOTcsIDI0MywgMjI4LCAxMTcsIDIxNywgMTE5LCAyMTQsIDk3LCAKLSAgICAyNDMsIDIyOCwgMTIyLCAyNDQsIDg2LCAyMTQsIDk3LCAyNDMsIDIyOCwgMTE3LCAyNDQsIDg1LCAyMTQsIDk3LCAyNDMsIAotICAgIDIyOCwgMTMzLCAyNDQsIDg1LCAyMTQsIDk3LCAyNDMsIDIyOCwgMjQzLCAyMzcsIDI0NCwgODUsIDIxNCwgOTcsIDI0MywgCi0gICAgMjI4LCAxMjIsIDIyMCwgNDMsIDIxNCwgOTcsIDI0MywgMjI4LCAyNDQsIDUwLCAyMjAsIDQxLCAyMTQsIDk3LCAyNDMsIAotICAgIDIyOCwgMTIyLCAyNDUsIDE0NSwgMjE0LCA5NywgMjQzLCAyMjgsIDEzMywgMjQ1LCAxNDMsIDIxNCwgOTcsIDI0MywgMjI4LCAKLSAgICAyNDQsIDUwLCAyNDUsIDE0MywgMjE0LCA5NywgMjQzLCAyMjgsIDIyMSwgNDMsIDI0NSwgMTQzLCAyNDMsIDIyOCwgMjI4LCAKLSAgICA1MywgMTE2LCAyMjMsIDEwMCwgMjI4LCA1NCwgMTE2LCAyMjMsIDEwMCwgMjI4LCA1NCwgMTA5LCAyMjMsIDEwMCwgMjI4LCAKLSAgICA1NCwgMTY2LCAyMjMsIDEwMCwgMjI4LCA1NCwgMTYzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMTgwLCAyMjMsIDEwMCwgMjI4LCAKLSAgICA1NCwgMTg5LCAyMjMsIDEwMCwgMjI4LCA1NCwgMTk4LCAyMjMsIDEwMCwgMjI4LCA1NCwgMTk1LCAyMjMsIDEwMCwgMjI4LCAKLSAgICA1NCwgMjAwLCAyMjMsIDEwMCwgMjI4LCA1NCwgMjE3LCAyMDAsIDIyMywgMTAwLCAyMjgsIDU0LCAyNDUsIDEyNCwgMjIzLCAKLSAgICAxMDAsIDIyOCwgNTQsIDIxNiwgNDEsIDIyMywgMTAwLCAyMjgsIDU0LCAyNDQsIDgzLCAyMjMsIDEwMCwgMjI4LCA1NCwgCi0gICAgMTIyLCAyNDAsIDIwMCwgMjIzLCAxMDAsIDIyOCwgNTQsIDI0NCwgNTAsIDI0MCwgMjAwLCAyMjMsIDEwMCwgMjI4LCA1NCwgCi0gICAgMTIyLCAyMTcsIDEwMCwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDExNiwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDEwOSwgMywgCi0gICAgMjIzLCAxMDAsIDIyOCwgNTQsIDE2NiwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDE2MywgMywgMjIzLCAxMDAsIDIyOCwgNTQsIAotICAgIDE4MCwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDE4OSwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDE5OCwgMywgMjIzLCAxMDAsIAotICAgIDIyOCwgNTQsIDE5NSwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDIwMCwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDIxNywgMjAwLCAKLSAgICAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMjQ1LCAxMjQsIDMsIDIyMywgMTAwLCAyMjgsIDU0LCAyMTYsIDQxLCAzLCAyMjMsIAotICAgIDEwMCwgMjI4LCA1NCwgMjQ0LCA4MywgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDEyMiwgMjQwLCAyMDAsIDMsIDIyMywgMTAwLCAKLSAgICAyMjgsIDU0LCAyNDQsIDUwLCAyNDAsIDIwMCwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDEyMiwgMjE3LCAxMDAsIDIyMywgCi0gICAgMTAwLCAyMjgsIDU0LCAxMjIsIDIxNywgMTAxLCAyNTAsIDI1MywgMjQ5LCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMjQ0LCAKLSAgICA1MCwgMjE3LCAxMDAsIDIyMywgMTAwLCAyMjgsIDU0LCAyMTcsIDIwMSwgMjE3LCAxMDAsIDIyMywgMTAwLCAyMjgsIDU0LCAKLSAgICAyMjMsIDIwMiwgMTIyLCAyNDAsIDIwMCwgNywgMywgMSwgMjIzLCAyMDIsIDI1MCwgMjUyLCAyMjMsIDEwMCwgMjI4LCA1NCwgCi0gICAgMjIwLCA1MywgMjMzLCAxMDEsIDE3LCAyMjMsIDEwMCwgMjI4LCA1NCwgMjQ0LCA4NCwgMjQ1LCAxODIsIDE3LCAyMjMsIAotICAgIDEwMCwgMjI4LCA1NCwgMjQ0LCA4NCwgMjE3LCAxMDAsIDIyMywgMTAwLCAyMjgsIDU0LCAxMjIsIDI0MCwgMjAxLCAyMTcsIAotICAgIDEwMCwgMjE0LCA5NywgMjQzLCAyMjgsIDIxMiwgODAsIDIxNywgMTE5LCAxMzIsIDY4LCAyMTUsIDEyNCwgNjgsIDk1LCA2OCwgCi0gICAgMjQ2LCA1OCwgNjgsIDQyLCA0NiwgNjgsIDExNCwgMTE5LCA2OCwgMjI4LCAxNjcsIDIxMywgMjUwLCA2OCwgMjI4LCAxNjcsIAotICAgIDI0NSwgMTc2LCA2OCwgMjE5LCAyMTUsIDI0NSwgMTc2LCA2OCwgMjE5LCAyMTUsIDIxMywgMjUwLCA2OCwgMTMyLCA3NiwgMiwgCi0gICAgOTAsIDk1LCA3NiwgMiwgOTAsIDEzMiwgMjE0LCAyMCwgNjgsIDk1LCAyMTQsIDIwLCA2OCwgMTMyLCAxMTcsIDI0MSwgMjE4LCAKLSAgICA2OCwgMjE1LCAxMjQsIDExNywgMjQxLCAyMTgsIDY4LCA5NSwgMTE3LCAyNDEsIDIxOCwgNjgsIDI0NiwgNTgsIDExNywgCi0gICAgMjQxLCAyMTgsIDY4LCAxMzIsIDc2LCAyLCAyMTgsIDI3LCA5NSwgNzYsIDIsIDIxOCwgMjcsIDEzMiwgNzYsIDI0MywgMjEzLCAKLSAgICAxMzQsIDIxNSwgMTI0LCA3NiwgMjQzLCAyMTMsIDEzNCwgOTUsIDc2LCAyNDMsIDIxMywgMTM0LCAyNDYsIDU4LCA3NiwgCi0gICAgMjQzLCAyMTMsIDEzNCwgMTE0LCAxMTksIDc2LCAyLCAyNTIsIDQ3LCAxMzIsIDc2LCAyLCAxMDEsIDk1LCA3NiwgMiwgMTAxLCAKLSAgICAxMzIsIDc2LCAyLCAyMzIsIDE3NywgOTUsIDc2LCAyLCAyMzIsIDE3NywgNDIsIDQ2LCAyMTQsIDIwLCA2OCwgNDIsIDQ2LCAKLSAgICA3NiwgMiwgOTAsIDI0NiwgNTgsIDIxMiwgMjgsIDY4LCAyMTUsIDEyNCwgNzYsIDIsIDIxNywgMzAsIDIzMywgNjEsIDIxNSwgCi0gICAgMTI0LCA3NiwgMiwgMjE3LCAzMCwgMjIzLCAxMzgsIDI0NiwgNTgsIDc2LCAyLCAyMTcsIDMwLCAyMzMsIDYxLCAyNDYsIDU4LCAKLSAgICA3NiwgMiwgMjE3LCAzMCwgMjIzLCAxMzgsIDk1LCA3NiwgMiwgMjQ5LCAxMDAsIDI0NiwgNTcsIDI0NiwgNTgsIDc2LCAyLCAKLSAgICAyNDksIDEwMCwgMjMzLCA2MSwgMjUzLCAyNTUsIDIxNiwgMjI3LCAyMjEsIDczLCA2OCwgMjQ5LCAxOTUsIDIxNiwgMjI3LCAKLSAgICAyMjEsIDczLCA2OCwgMjI4LCAxNjcsIDIxMywgMjUwLCA3NiwgMjExLCAyMTEsIDE4NCwgMTM0LCAxMzIsIDc2LCAyMTEsIAotICAgIDIxMSwgMjUyLCA2MCwgMTEwLCA5NSwgNzYsIDIxMSwgMjExLCAxMzQsIDI1MywgMjU1LCAyMjcsIDQwLCAyNDksIDIyOSwgCi0gICAgNjgsIDI0OSwgMTk1LCAyMjcsIDQwLCAyNDksIDIyOSwgNjgsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMjE1LCAxMjMsIAotICAgIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMjQ2LCA1NywgMjE1LCAxMjQsIDI0MSwgMjM4LCAyLCAyMDYsIDIyMywgMTM4LCAKLSAgICAyMTUsIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgMjMzLCA2MSwgOTUsIDI0MSwgMjM4LCAyLCAyMDYsIDIxNSwgMTIzLCA5NSwgCi0gICAgMjQxLCAyMzgsIDIsIDIwNiwgMjQ2LCA1NywgMjQ2LCA1OCwgMjQxLCAyMzgsIDIsIDIwNiwgMjIzLCAxMzgsIDI0NiwgNTgsIAotICAgIDI0MSwgMjM4LCAyLCAyMDYsIDIzMywgNjEsIDk1LCA3NiwgMTEwLCAxMzIsIDY4LCAyMTUsIDEyNCwgNzYsIDEzMiwgNjUsIAotICAgIDI0NiwgNTgsIDY4LCAxMzIsIDc2LCAxMTAsIDk1LCA2OCwgMTMyLCAyMjYsIDE5NywgMjUzLCAxNjIsIDIxNSwgMTI0LCAKLSAgICAyMjYsIDE5NywgMjUzLCAxNjIsIDk1LCAyMjYsIDE5NywgMjUzLCAxNjIsIDI0NiwgNTgsIDIyNiwgMTk3LCAyNTMsIDE2MiwgCi0gICAgMTMyLCAyNDEsIDIzOCwgMTEwLCA5NSwgMjQxLCAyMzcsIDk1LCAyNDEsIDIzOCwgMTEwLCAxMzIsIDI0MSwgMjM3LCAxMzIsIAotICAgIDUxLCA3NiwgMiwgOTAsIDQyLCA0NiwgNTEsIDc2LCAyLCA5MCwgOTUsIDUxLCA3NiwgMiwgOTAsIDEzMiwgNTEsIDY4LCAKLSAgICAyMTUsIDEyNCwgNTEsIDY4LCA5NSwgNTEsIDY4LCAyNDYsIDU4LCA1MSwgNjgsIDQyLCA0NiwgNTEsIDY4LCAxMTQsIDExOSwgCi0gICAgNTEsIDY4LCAyMjgsIDE2NywgMjEzLCAyNTAsIDUxLCA2OCwgMjI4LCAxNjcsIDI0NSwgMTc2LCA1MSwgNjgsIDIxOSwgMjE1LCAKLSAgICAyNDUsIDE3NiwgNTEsIDY4LCAyMTksIDIxNSwgMjEzLCAyNTAsIDUxLCA2OCwgMTMyLCAyMTYsIDE2OSwgNjgsIDk1LCAyMTYsIAotICAgIDE2OSwgNjgsIDEzMiwgMjE5LCAxNjIsIDY4LCA5NSwgMjE5LCAxNjIsIDY4LCAyMTUsIDEyNCwgNzYsIDIsIDUxLCA5MCwgCi0gICAgMjQ2LCA1OCwgNzYsIDIsIDUxLCA5MCwgMTMyLCAyNDgsIDEwMCwgNjgsIDIxNSwgMTI0LCAyNDgsIDEwMCwgNjgsIDk1LCAKLSAgICAyNDgsIDEwMCwgNjgsIDI0NiwgNTgsIDI0OCwgMTAwLCA2OCwgMTMyLCA3NiwgMjExLCAyMTEsIDEzNCwgOTUsIDc2LCAyMTEsIAotICAgIDIxMSwgMTM0LCAxMzIsIDY3LCA2OCwgMjE1LCAxMjQsIDY3LCA2OCwgOTUsIDY3LCA2OCwgMjQ2LCA1OCwgNjcsIDY4LCAKLSAgICAyMTUsIDEyNCwgNjcsIDc2LCAyNDMsIDIxMywgMTM0LCAyMTUsIDEyNCwgNjcsIDc2LCAyMjcsIDYzLCAyMjYsIDg5LCAyMTUsIAotICAgIDEyNCwgNjcsIDc2LCAyMjcsIDYzLCAyMjYsIDkwLCAyLCAxOTksIDEzNCwgMjE1LCAxMjQsIDY3LCA3NiwgMjI3LCA2MywgCi0gICAgMjI2LCA5MCwgMiwgNzEsIDEzNCwgMjE1LCAxMjQsIDY3LCA1MSwgNjgsIDIxNSwgMTI0LCA2NywgNTEsIDc2LCAyMjcsIDYzLCAKLSAgICAyMjYsIDg5LCA5NSwgNjcsIDc2LCAyNDMsIDIxMywgMjE0LCA0MCwgMjI4LCAxNjcsIDIxMywgMjUwLCA3NiwgMjExLCAyMTEsIAotICAgIDI0OSwgOTksIDIxOSwgMjE1LCAyNDUsIDE3NiwgNzYsIDIxMSwgMjExLCAyNDksIDk5LCAxMTQsIDExOSwgNjcsIDY4LCA0NiwgCi0gICAgNzYsIDIsIDMsIDI0OSwgMjI4LCAyNDYsIDU4LCA3NiwgMTMyLCA2NSwgMjE1LCAxMjQsIDY4LCAxMzMsIDk1LCAyNTMsIAotICAgIDE2MiwgMTMyLCA3NiwgMiwgNzEsIDkwLCA5NSwgNzYsIDIsIDcxLCA5MCwgNDIsIDQ2LCA3NiwgMiwgNzEsIDkwLCAxMzIsIAotICAgIDc2LCAyLCA1MSwgNzEsIDkwLCA5NSwgNzYsIDIsIDUxLCA3MSwgOTAsIDQyLCA0NiwgNzYsIDIsIDUxLCA3MSwgOTAsIDEzMiwgCi0gICAgMjI3LCAzOCwgNjgsIDk1LCAyMjcsIDM4LCA2OCwgNDIsIDQ2LCAyMjcsIDM4LCA2OCwgMzEsIDI1NCwgNjMsIDI0OSwgMTUzLCAKLSAgICAyMjYsIDEyNSwgMjQ3LCAxODUsIDIxNywgMTQwLCAyNDQsIDI1MCwgMjE3LCAxNDAsIDI0NywgOTIsIDIyOCwgMTYzLCAyNDQsIAotICAgIDI1MSwgMjQ1LCAxMTAsIDIyMSwgNDgsIDIzNSwgMjQxLCAyMzAsIDM5LCAyNDUsIDEyNywgMjI3LCA5NywgMjI4LCAxNjMsIAotICAgIDI1NCwgMzMsIDI0NSwgMTI3LCAyMjcsIDk3LCAzLCAyNDUsIDEyNywgMjI3LCA5NywgMjQ5LCAxMjUsIDI1MywgMTUzLCAKLSAgICAyMzEsIDEyNiwgMjQ3LCA5MiwgMjI4LCAxNjMsIDI0OSwgMTI3LCAyNTMsIDE1MywgMjMxLCAxMjYsIDMsIDI0OSwgMTI1LCAKLSAgICAyNTMsIDE1MywgMjMxLCAxMjYsIDI0NSwgMTAxLCA2NSwgMjI1LCA1NiwgMjMwLCA5NywgMjI1LCA2MywgMjMwLCA5NywgCi0gICAgMjQ5LCAxMDQsIDIzMCwgOTcsIDIxOCwgMjQxLCAyMzAsIDI1MSwgNTIsIDIzMCwgMjQ5LCA1MiwgNjIsIDIyNSwgMTU2LCAKLSAgICAyNDcsIDEyMSwgMjIwLCAyMywgMjIxLCA0OSwgMjMwLCAyNTAsIDI1MywgMTMzLCAyMjcsIDMzLCAyMjMsIDEzMSwgMjI3LCAKLSAgICAzMywgMjUxLCA0MywgMjI3LCAzMywgNDEsIDIyMywgOTUsIDI0OSwgNTAsIDIyMywgOTUsIDI0MywgMjMwLCAyMjMsIDk1LCAKLSAgICAyMjUsIDUyLCAxMDgsIDIzNSwgMjMxLCA0NiwgMjU0LCAxOCwgMjU0LCAxOCwgMjMxLCAxNTMsIDI1NCwgMTgsIDIxOSwgCi0gICAgMTg3LCAyNTQsIDE4LCAyNDcsIDEyMywgMjQ3LCA5MiwgMjI4LCAxNjMsIDI0NywgMTI2LCAyMjYsIDEzNiwgMTA4LCAyMjgsIAotICAgIDE2MywgMjI2LCAxMzYsIDEwOCwgMjMyLCAxOTksIDI1NCwgMjcsIDIzMiwgMTk5LCAyMjcsIDI0LCAyMzUsIDE5NSwgMjE1LCAKLSAgICAxNDYsIDIzNSwgMjA4LCA1MSwgMjM1LCAyMDgsIDIxNiwgMTY5LCAyMzUsIDIwOCwgMjQ5LCAxMjEsIDIzNSwgMjA4LCAyMTgsIAotICAgIDIxMywgMjM1LCAyMDgsIDIxNCwgMTEwLCAyMzUsIDIwOCwgMjQ5LCAxOTUsIDIzNSwgMjA4LCAyNDksIDE5NSwgMjQ5LCAKLSAgICAxMjEsIDIzNSwgMjA4LCAyNTMsIDI1NSwgMjQ5LCAxMjEsIDIzNSwgMjA4LCAyMTcsIDEzOSwgMjUxLCAyNDMsIDIyNCwgMjksIAotICAgIDIyNSwgNTMsIDYyLCAyMzAsIDI1MCwgMjQ1LCAwLCAyNDMsIDIyLCAyMjUsIDUzLCAyNDEsIDQzLCAyMTcsIDQzLCAyMjcsIAotICAgIDMzLCAyMjMsIDIwMiwgMjE3LCA0MiwgMjM1LCAxOTEsIDIzMywgODksIDE5NywgMjIwLCA4MywgMjE0LCAxOSwgMjEzLCAKLSAgICAxODgsIDIyNSwgNjMsIDIyOCwgMTYzLCAyMTcsIDQyLCAyMzAsIDI1MSwgMjE3LCA0MiwgMjUzLCAxMjYsIDEyMywgMTA4LCAKLSAgICAyMjgsIDE2MywgMjUzLCAxMjYsIDEyMywgMTA4LCAyNTMsIDIxOCwgMTIzLCAxMDgsIDI1MywgMjE4LCAyNTEsIDE3LCAyMjgsIAotICAgIDE2MywgMjU0LCAxNjUsIDEyMywgMTA4LCAyMjksIDE4MSwgMjUzLCAyMTgsIDIyOCwgMTcwLCAyNTQsIDE2NSwgMTIzLCAKLSAgICAxMDgsIDI1NCwgNTcsIDEyMywgMTA4LCAyMjgsIDE2MywgMjU0LCA1NywgMTIzLCAxMDgsIDI1NCwgNTcsIDEyMywgMTY3LCAKLSAgICAxMjMsIDEwOCwgMjE2LCAxNjksIDIxNywgNDIsIDI1NCwgNjQsIDEyMywgMTA4LCAyNDUsIDU3LCAxMDgsIDI0MywgMjEsIAotICAgIDI0NSwgNTcsIDEwOCwgMjQ3LCAxODYsIDI1MSwgMjAwLCAyNTMsIDIyMCwgMjE3LCAxNDksIDIzMiwgMjUwLCAyNDMsIDIxLCAKLSAgICAxMjMsIDEwOCwgMjUzLCAyMTgsIDEyMywgMjExLCAyMTEsIDE2NywgMjE3LCAxNDksIDIzNiwgMTAsIDIyNywgOTcsIDIzNiwgCi0gICAgMTAsIDY1LCAxNjcsIDI1MywgMjE4LCAxMjMsIDEwOCwgMjQ5LCAxNjUsIDI0NSwgNjAsIDI0NSwgNjEsIDI0OSwgMTY0LCAKLSAgICAyMjMsIDEzMSwgMjM1LCAyNTIsIDEyMywgMTA4LCAyMjMsIDEzMSwgMTIzLCAxMDgsIDI0OSwgOTMsIDEwOCwgMjQ1LCAzMiwgCi0gICAgMjQ1LCA1OSwgMTA4LCAyMTksIDk2LCAyNDUsIDYwLCAyNDgsIDYsIDEyMywgMTA4LCAxMjMsIDIxMSwgMjExLCAyNTEsIDcsIAotICAgIDI0OCwgMjMsIDIzMSwgMTUzLCAyNTEsIDYsIDIyNCwgMTU2LCAxMjMsIDEwOCwgMjI4LCAxNjMsIDEyMywgMTA4LCAyNDAsIAotICAgIDk3LCAxMDgsIDIyOCwgMTYzLCAyNDAsIDk3LCAxMDgsIDIxOSwgNDksIDI0NSwgNTcsIDEwOCwgMjMzLCAzOSwgMTY3LCAKLSAgICAxMjMsIDEwOCwgMjQyLCAxMDcsIDE2NywgMTIzLCAxMDgsIDIzMywgMzksIDExMCwgMTIzLCAxMDgsIDI0MiwgMTA3LCAxMTAsIAotICAgIDEyMywgMTA4LCAyMzMsIDM5LCAyNTEsIDE3LCAyMjgsIDE2MywgMTIzLCAxMDgsIDI0MiwgMTA3LCAyNTEsIDE3LCAyMjgsIAotICAgIDE2MywgMTIzLCAxMDgsIDIzMCwgMTY3LCAyMzMsIDM4LCAyMzAsIDE2NywgMjQyLCAxMDYsIDI1MSwgMjAwLCAyMjgsIDE2MywgCi0gICAgMjQ1LCA1NywgMTA4LCAyMjgsIDE2MywgMjMzLCAzOCwgMjI4LCAxNjMsIDI0MiwgMTA2LCAyMjksIDE4MSwgMjMzLCAzOSwgCi0gICAgMjI4LCAxNzAsIDEyMywgMTA4LCAyMjksIDE4MSwgMjQyLCAxMDcsIDIyOCwgMTcwLCAxMjMsIDEwOCwgMjMzLCAzOSwgMTY3LCAKLSAgICAyNDUsIDU3LCAxMDgsIDI0MiwgMTA3LCAxNjcsIDI0NSwgNTcsIDEwOCwgMjI5LCAxODEsIDIzMywgMzksIDIyOCwgMTcwLCAKLSAgICAyNDUsIDU3LCAxMDgsIDIyOSwgMTgxLCAyNDIsIDEwNywgMjI4LCAxNzAsIDI0NSwgNTcsIDEwOCwgMjMzLCAzOSwgMTY3LCAKLSAgICAyNDIsIDEwNiwgMjQyLCAxMDcsIDE2NywgMjMzLCAzOCwgMjI5LCAxODEsIDIzMywgMzksIDIyOCwgMTcwLCAyNDIsIDEwNiwgCi0gICAgMjI5LCAxODEsIDI0MiwgMTA3LCAyMjgsIDE3MCwgMjMzLCAzOCwgMjI1LCA4MiwgMjE5LCAwLCAyMjUsIDgzLCAxNjcsIAotICAgIDEyMywgMTA4LCAyMTksIDEsIDE2NywgMTIzLCAxMDgsIDIyNSwgODMsIDE2NywgMjQ1LCA1NywgMTA4LCAyMTksIDEsIDE2NywgCi0gICAgMjQ1LCA1NywgMTA4LCAyNDcsIDkyLCAyMjgsIDE2MywgMjI1LCA4NSwgMjQ3LCA5MiwgMjI4LCAxNjMsIDIxOSwgMiwgMjE5LCAKLSAgICA5LCAyMjcsIDk3LCAyMTgsIDIyMiwgMjI3LCA5NywgMjI4LCAxNjMsIDExOCwgMjE5LCA5LCAyMjcsIDk3LCAyMjgsIDE2MywgCi0gICAgMTE4LCAyMTgsIDIyMiwgMjI3LCA5NywgMjE5LCA5LCA2NSwgMTY3LCAxMjMsIDEwOCwgMjE4LCAyMjIsIDY1LCAxNjcsIAotICAgIDEyMywgMTA4LCAyMjksIDE4MSwgMTE4LCAyMTksIDksIDY1LCAyMjgsIDE3MCwgMTIzLCAxMDgsIDIyOSwgMTgxLCAxMTgsIAotICAgIDIxOCwgMjIyLCA2NSwgMjI4LCAxNzAsIDEyMywgMTA4LCAyMTksIDksIDY1LCAyLCAyMjgsIDE2MywgMTIzLCAxMDgsIDIxOCwgCi0gICAgMjIyLCA2NSwgMiwgMjI4LCAxNjMsIDEyMywgMTA4LCAyMzAsIDE1MSwgMjMwLCAxNTIsIDIzMCwgMTUzLCAyMzAsIDE1MiwgCi0gICAgMjE1LCAxNDYsIDQxLCAyMzYsIDEwLCAyMjcsIDk3LCA0MSwgMjI3LCAxNywgMjI3LCA5NywgNDEsIDIzNiwgMTAsIDY1LCAKLSAgICAxNjcsIDEyMywgMTA4LCA0MSwgMjI3LCAxNywgNjUsIDE2NywgMTIzLCAxMDgsIDQxLCAyNTAsIDE4MywgNDEsIDI0OSwgNDMsIAotICAgIDM2LCAyMjUsIDE1NiwgMzYsIDIzMCwgMjUwLCAzNiwgMjE3LCAzOCwgMzYsIDI0NywgMTIxLCAyMjAsIDIzLCAzNiwgNjIsIAotICAgIDIyNywgMzMsIDM2LCAyMjMsIDEzMSwgMjI3LCAzMywgMzYsIDI1MywgMTMzLCAyMjcsIDMzLCAzNiwgMjQ1LCA2MCwgMzYsIAotICAgIDI0OCwgMTAxLCA5MSwgMjI1LCAxNTYsIDkxLCAyMzAsIDI1MCwgOTEsIDIxNywgMzgsIDkxLCA2MiwgMjI3LCAzMywgNDYsIAotICAgIDIxOCwgMzYsIDQyLCAyMTgsIDM2LCAxMTksIDIxOCwgMzYsIDExNCwgMjE4LCAzNiwgMjUzLCAxMzYsIDIzMCwgMjI2LCAKLSAgICAyMTYsIDE0OSwgMjQzLCAyNTAsIDIxNiwgMTY5LCA3MSwgMjUyLCA2MCwgNDYsIDIxNiwgNTcsIDUxLCA3MSwgMjUyLCA2MCwgCi0gICAgNTEsIDQ2LCAyMTYsIDU3LCAyNDcsIDkyLCAyMjgsIDE2MywgMjI1LCA0OCwgMjI4LCAxNjMsIDIxNiwgMTQ5LCAyNDcsIDkyLCAKLSAgICAyMjgsIDE2MywgMjQzLCAyNTEsIDIyOSwgMTgzLCA1MSwgNzEsIDI1MiwgNjAsIDUxLCA0NiwgMjE2LCA1NywgMjI1LCA4MywgCi0gICAgMjE1LCAxNTQsIDIyMywgMjQxLCAyMTksIDEsIDIxNSwgMTU0LCAyMjMsIDI0MSwgMjI4LCAxNjgsIDIxOSwgMjIsIDIyNywgCi0gICAgOTcsIDI0OSwgMTI1LCAyNTMsIDE1MywgMjI4LCAxNjgsIDIxOSwgMjEsIDIyOCwgMTY4LCAyMTksIDIyLCA2NSwgMTY3LCAKLSAgICAxMjMsIDEwOCwgMjQ5LCAxMjUsIDI1MywgMTUzLCAyMjgsIDE2OCwgMjE5LCAyMiwgMTY3LCAxMjMsIDEwOCwgMjI3LCAxNywgCi0gICAgMjI3LCA5NywgMjM2LCAxMCwgMjI3LCA5NywgMjMwLCAxNTcsIDI0MSwgMTg1LCAyNDksIDEzNiwgMjMxLCAyMDAsIDIzNSwgCi0gICAgMjA1LCAyMTMsIDEzMywgMjMwLCAyMiwgMjI4LCAxNjksIDQ2LCAyNTQsIDE5LCAyLCAyNTMsIDE5NSwgNDYsIDIxNiwgMTgzLCAKLSAgICAyMzAsIDk3LCAyMzIsIDE5OSwgMjU0LCAyNywgMjMwLCA5NywgMjMyLCAxOTksIDIyNywgMjQsIDIzMCwgOTcsIDIzNSwgCi0gICAgMTk1LCAyMzAsIDk3LCAyMTUsIDE0NiwgMjQ3LCAyMDEsIDIyNywgMzMsIDYyLCAyMjcsIDMzLCAyMTksIDk2LCAyMjcsIDMzLCAKLSAgICAyNDcsIDEyMSwgMjE3LCAzOCwgMjUxLCA5MCwgNDIsIDIyOCwgMTY4LCAyNDQsIDE0OSwgMjIxLCA2OSwgMjI1LCA2MywgNDYsIAotICAgIDIyOCwgMTY4LCAyNDQsIDE0OSwgMjIxLCA2OSwgMjI1LCA2MywgNDIsIDIyMSwgNjksIDIyNSwgNjMsIDQ2LCAyMjEsIDY5LCAKLSAgICAyMjUsIDYzLCAyMjMsIDIwMiwgMjE3LCA0MywgMjQ1LCA2MCwgMjQ5LCA0MCwgMjMyLCAxOTksIDIyNywgMjQsIDI0OSwgNDAsIAotICAgIDIzMiwgMTk5LCAyNTQsIDI3LCA1MSwgMjE5LCA4LCA1MSwgMjE4LCAyMjEsIDUxLCAyMzUsIDE5NSwgNTEsIDIxNSwgMTQ2LCAKLSAgICAyMjUsIDE3OSwgMTIzLCAyNCwgMjI2LCAxMzYsIDEwOCwgMjMzLCAzOSwgMiwgMjQ3LCA3NCwgMjQyLCAxMDcsIDIsIDI0NywgCi0gICAgNzQsIDIxNCwgMTY0LCAyMzAsIDE2NywgMjMzLCAzOCwgMjE0LCAxNjQsIDIzMCwgMTY3LCAyNDIsIDEwNiwgMjMzLCAzOSwgCi0gICAgMTIzLCAyMTEsIDIxMSwgMTY3LCAyNDIsIDEwNiwgMjQyLCAxMDcsIDEyMywgMjExLCAyMTEsIDE2NywgMjMzLCAzOCwgMTIzLCAKLSAgICAyMTEsIDIxMSwgMTY3LCAyMzMsIDM4LCAxMjMsIDIxMSwgMjExLCAxNjcsIDI0MiwgMTA2LCAxMjMsIDIxMSwgMjExLCAxNjcsIAotICAgIDIyNSwgODIsIDEyMywgMjExLCAyMTEsIDE2NywgMjE5LCAwLCAyNDcsIDkyLCAyMjgsIDE2MywgMjI1LCA4NiwgMTY3LCAKLSAgICAyNDUsIDYyLCAyNDcsIDkyLCAyMjgsIDE2MywgMjE5LCAzLCAxNjcsIDI0NSwgNjIsIDIyOCwgMTYzLCA0MSwgMjM2LCAxMCwgCi0gICAgNjUsIDE2NywgMTIzLCAxMDgsIDIyOCwgMTYzLCA0MSwgMjI3LCAxNywgNjUsIDE2NywgMTIzLCAxMDgsIDQxLCAyMzYsIDEwLCAKLSAgICA2NSwgMTY3LCAyMjgsIDE2MywgMTIzLCAxMDgsIDQxLCAyMjcsIDE3LCA2NSwgMTY3LCAyMjgsIDE2MywgMTIzLCAxMDgsIAotICAgIDIzMywgMzksIDI1MSwgMTcsIDIyOCwgMTYzLCAyNDUsIDU3LCAxMDgsIDI0MiwgMTA3LCAyNTEsIDE3LCAyMjgsIDE2MywgCi0gICAgMjQ1LCA1NywgMTA4LCAyMjUsIDgzLCAyNTEsIDE3LCAyMjgsIDE2MywgMjQ1LCA1NywgMTA4LCAyMTksIDEsIDI1MSwgMTcsIAotICAgIDIyOCwgMTYzLCAyNDUsIDU3LCAxMDgsIDIyOCwgMTYzLCAyMjgsIDE2OCwgMjE5LCAyMiwgMjI3LCA5NywgMjQ3LCA5MiwgCi0gICAgMjI4LCAxNjMsIDI0OSwgMTI3LCAyNTMsIDE1MywgMjI4LCAxNjgsIDIxOSwgMjEsIDIyOCwgMTYzLCAyMjgsIDE2OCwgMjE5LCAKLSAgICAyMiwgNjUsIDE2NywgMTIzLCAxMDgsIDI0NywgOTIsIDIyOCwgMTYzLCAyNDksIDEyNywgMjUzLCAxNTMsIDIyOCwgMTY4LCAKLSAgICAyMTksIDIyLCAxNjcsIDI0NSwgNjIsIDcxLCAyNDUsIDEyMCwgMjMxLCAzNSwgMTk5LCAyNDUsIDEyMCwgMTE0LCA0NiwgCi0gICAgMjQ3LCAyMDcsIDI0NSwgMTIwLCAxMTksIDQ2LCAyNDcsIDIwNywgMjQ1LCAxMjAsIDI0NSwgMTI3LCA2NSwgMiwgMTg0LCAKLSAgICAxOTksIDkwLCAyNDUsIDEyNywgNjUsIDIsIDcxLCAyNTIsIDYwLCAyNTMsIDEyMywgMjQ1LCAxMDEsIDY1LCAxOTksIDkwLCAKLSAgICAzLCAyNDUsIDEyNywgNjUsIDIsIDcxLCAyNTIsIDYwLCAyNTMsIDEyMywgMjQ1LCAxMDEsIDY1LCAxOTksIDkwLCAyNDUsIAotICAgIDEyNywgNjUsIDIsIDYyLCA0OSwgMjQ1LCAxMjcsIDY1LCAyLCAyMjYsIDI0NywgMywgMjQ1LCAxMjcsIDY1LCAyLCAyMjYsIAotICAgIDI0NywgMjQ1LCAxMjcsIDY1LCAyLCAyMTUsIDE1MywgMjQ1LCAxMjcsIDY1LCAyLCAxMTcsIDE5OSwgMjE5LCAzMiwgMjQ5LCAKLSAgICAxMjUsIDIsIDE4NCwgMTk5LCA5MCwgMjQ5LCAxMjUsIDIsIDcxLCAyNTIsIDYwLCAyNTMsIDEyMywgMjQ1LCAxMDEsIDY1LCAKLSAgICAxOTksIDkwLCAzLCAyNDksIDEyNSwgMiwgNzEsIDI1MiwgNjAsIDI1MywgMTIzLCAyNDUsIDEwMSwgNjUsIDE5OSwgOTAsIAotICAgIDI0OSwgMTI1LCAyLCAyMjYsIDI0NywgMywgMjQ5LCAxMjUsIDIsIDIyNiwgMjQ3LCAyMTIsIDE1MywgMTc0LCAyNTIsIDkxLCAKLSAgICAyMzEsIDEyNSwgMjQ3LCAyMDIsIDUyLCAyNDUsIDEyOSwgNjgsIDI0MCwgMjIxLCAxMTQsIDI1MywgMTY0LCAxMTksIDI1MywgCi0gICAgMTY0LCAyMjUsIDU5LCAyMjYsIDQxLCAyMTQsIDE2LCAyMzIsIDI0MiwgNDIsIDI1MCwgMTE1LCA0NiwgMjUwLCAxMTUsIDQyLCAKLSAgICAyNDQsIDI2LCA0NiwgMjQ0LCAyNiwgMjUxLCAxMDEsIDQ2LCAyNDksIDcyLCAyNTEsIDEwMSwgNDIsIDI0OSwgNzIsIDIxNiwgCi0gICAgMjI3LCA0NiwgMjQ5LCA3MiwgMjE2LCAyMjcsIDQyLCAyNDksIDcyLCAyMjMsIDIwMiwgMjI4LCAxNjMsIDUyLCA0MSwgMjMyLCAKLSAgICAxNTksIDI1MywgMTk1LCAyMjIsIDgzLCAyMjIsIDkwLCAyMTcsIDIxMCwgMjI0LCAxMywgMjI1LCAxMjEsIDIzNSwgMjM1LCAKLSAgICAyMTQsIDE0NSwgMjE5LCAxNjYsIDIyNSwgMTczLCA2NSwgMjM1LCAyMDQsIDUyLCAyMTYsIDU4LCAyMjgsIDE2MywgNTIsIAotICAgIDIxNCwgMjYsIDI0MCwgMjIzLCAyMTYsIDIyNywgNDIsIDI0OSwgOTksIDIxNiwgMjI3LCA0NiwgMjQ5LCA5OSwgMjUxLCAKLSAgICAxMDEsIDQyLCAyNDksIDk5LCAyNTEsIDEwMSwgNDYsIDI0OSwgOTksIDIxNiwgMjI3LCAxNTEsIDIzNSwgMjA4LCAyNTEsIAotICAgIDEwMSwgMTUxLCAyMzUsIDIwOCwgMjQzLCAyMTAsIDIyMCwgMywgMTE0LCAyNTMsIDE2NSwgMjUxLCAyMDEsIDExNywgMTk5LCAKLSAgICAyNTIsIDQ5LCAyMjcsIDI2LCAyMzQsIDE0NCwgMjQ1LCA1MywgMjExLCAyMTEsIDIxNywgMTQ5LCAyMjMsIDE0OCwgMjEzLCAKLSAgICAxNjcsIDIzNSwgMjUyLCAxMTgsIDIyNCwgMTAsIDI1MSwgODksIDIzNCwgMTQzLCAyMzMsIDY2LCAyNTQsIDE5LCAxMjUsIAotICAgIDIyMywgMTQ0LCAyNTQsIDE5LCAxMjUsIDI0NSwgNTMsIDIxMSwgMjExLCAyMTcsIDE0OSwgMjMzLCA3MCwgMjUxLCAyMTIsIAotICAgIDIyMywgMTMwLCAyNDksIDEzLCAyNTQsIDY0LCAyNTMsIDE3MiwgMjE4LCAxMjYsIDIxNiwgMjE3LCAyMjMsIDM0LCAyNDcsIAotICAgIDE2NywgMjI3LCAxOCwgMjQ5LCAxMzgsIDIxOCwgMywgMjIwLCAxNCwgMjQ5LCA5MCwgMjQ5LCA4OSwgMTk0LCAxOTYsIDE2LCAKLSAgICAyNDAsIDE0MywgMTk0LCAxOTYsIDE2LCAyMTksIDE2MCwgMjI0LCAxNzIsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDI0NSwgCi0gICAgNjIsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDI0NywgMTI2LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyNDcsIDIwMCwgCi0gICAgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjM1LCA1OSwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjQ5LCAyMjgsIDE5NCwgCi0gICAgMTk2LCAxNiwgMjQ5LCAyMjksIDIxOSwgNzUsIDE5NCwgMTk2LCAxNiwgMjQ5LCAyMjksIDIzNSwgNTksIDE5NCwgMTk2LCAKLSAgICAxNiwgMjIwLCAyNCwgMTM0LCAxOTQsIDE5NiwgMTYsIDI1MiwgOTgsIDEzNCwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgCi0gICAgMjIwLCAyMywgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjUyLCA5NywgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjMzLCAKLSAgICAzOCwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjQyLCAxMDYsIDE5NCwgMTk2LCAxNiwgMTMyLCAyMTQsIDI1MSwgMTk0LCAKLSAgICAxOTYsIDE2LCA5NSwgMjE0LCAyNTEsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDEzMiwgNjgsIDE5NCwgMTk2LCAxNiwgCi0gICAgMjI0LCAxNzMsIDk1LCA2OCwgMTk0LCAxOTYsIDE2LCAyNDksIDIyOSwgMjUyLCA5NywgMTk0LCAxOTYsIDE2LCAxMTksIAotICAgIDIxOCwgMzcsIDIxNSwgMTUzLCAxOTQsIDE5NiwgMTYsIDI0OCwgNiwgMjE5LCA3NSwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgCi0gICAgMTE5LCAyNTAsIDE3MCwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjQ4LCA1LCAxOTQsIDE5NiwgMTYsIDExOSwgMjE4LCAKLSAgICAzNywgMjM1LCA1OSwgMTk0LCAxOTYsIDE2LCAyMTUsIDEyNCwgMjE0LCAyNTEsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIAotICAgIDIxNSwgMTI0LCA2OCwgMTk0LCAxOTYsIDE2LCAxMTQsIDIxOCwgMzcsIDIyNiwgMjQ3LCAxOTQsIDE5NiwgMTYsIDI0OCwgCi0gICAgMTcsIDIxOSwgNzUsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDExNCwgMjUwLCAxNzAsIDE5NCwgMTk2LCAxNiwgMjI0LCAKLSAgICAxNzMsIDI0OCwgMTYsIDE5NCwgMTk2LCAxNiwgMTE0LCAyMTgsIDM3LCAyMzUsIDU5LCAxOTQsIDE5NiwgMTYsIDI0NiwgNTgsIAotICAgIDIxNCwgMjUxLCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyNDYsIDU4LCA2OCwgMTk0LCAxOTYsIDE2LCAyMjQsIDE0MiwgCi0gICAgMjE1LCAxNTMsIDE5NCwgMTk2LCAxNiwgMjQ4LCA2LCAyMTUsIDE1MywgMTk0LCAxOTYsIDE2LCAyNDcsIDIwMSwgMjE1LCAKLSAgICAxNTMsIDE5NCwgMTk2LCAxNiwgMjM1LCA2MCwgMjE1LCAxNTMsIDE5NCwgMTk2LCAxNiwgMjQ5LCAyMjksIDIxNSwgMTUzLCAKLSAgICAxOTQsIDE5NiwgMTYsIDExNCwgMjIwLCAxODUsIDIzNSwgNTksIDE5NCwgMTk2LCAxNiwgMjI0LCAxNDIsIDIyNCwgMTcyLCAKLSAgICAxOTQsIDE5NiwgMTYsIDI0OSwgMjI5LCAyMTksIDk1LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyNDksIDE2NCwgMTk0LCAKLSAgICAxOTYsIDE2LCAxMTQsIDIxOCwgMzcsIDI0NywgMjA5LCAxOTQsIDE5NiwgMTYsIDI0OCwgMTcsIDI0NywgMjA5LCAxOTQsIAotICAgIDE5NiwgMTYsIDIxOSwgOTYsIDI0NywgMjA5LCAxOTQsIDE5NiwgMTYsIDIzNSwgNjAsIDI0NywgMjA5LCAxOTQsIDE5NiwgCi0gICAgMTYsIDI0OSwgMjI5LCAyNDcsIDIwOSwgMTk0LCAxOTYsIDE2LCAxMTksIDIyMCwgMTg1LCAyMTksIDc1LCAxOTQsIDE5NiwgCi0gICAgMTYsIDQyLCAyMjAsIDE4NSwgMjE5LCA3NSwgMTk0LCAxOTYsIDE2LCAyMTcsIDQzLCAyNDcsIDIwOSwgMTk0LCAxOTYsIDE2LCAKLSAgICAyNDIsIDEwNywgMjQ3LCAyMDksIDE5NCwgMTk2LCAxNiwgMjQ5LCAxNTgsIDEzNCwgMTk0LCAxOTYsIDE2LCAyNDgsIDE3LCAKLSAgICAyMTcsIDQyLCAxOTQsIDE5NiwgMTYsIDIxMiwgMjcsIDE5NCwgMTk2LCAxNiwgMjE5LCA3NiwgMjE3LCA0MiwgMTk0LCAxOTYsIAotICAgIDE2LCAyMjEsIDcxLCAyMTUsIDE1MywgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjI4LCAxNjMsIDI0NSwgNjIsIDE5NCwgCi0gICAgMTk2LCAxNiwgMjI0LCAxNzMsIDIyNCwgMTU3LCAxOTQsIDE5NiwgMTYsIDExOSwgMjUwLCAxNzEsIDIxNywgNDIsIDE5NCwgCi0gICAgMTk2LCAxNiwgMTE0LCAyNTAsIDE3MSwgMjE3LCA0MiwgMTk0LCAxOTYsIDE2LCAyMzUsIDE4MywgMTk0LCAxOTYsIDE2LCAKLSAgICAyMjMsIDE5MCwgMTk0LCAxOTYsIDE2LCAyMjcsIDY3LCAxOTQsIDE5NiwgMTYsIDI1NCwgNTMsIDIxNSwgMTUzLCAxOTQsIAotICAgIDE5NiwgMTYsIDI0NSwgNjQsIDIxNSwgMTUzLCAxOTQsIDE5NiwgMTYsIDIzNSwgMTg0LCAyMTUsIDE1MywgMTk0LCAxOTYsIAotICAgIDE2LCAyMjcsIDY4LCAyMTUsIDE1MywgMTk0LCAxOTYsIDE2LCAyNTQsIDUyLCAyMjgsIDE2MywgMjUwLCA2NiwgNzcsIDQ2LCAKLSAgICAyNTQsIDE5LCAyLCAyNDYsIDU4LCAyMTIsIDI4LCA2OCwgMjIwLCAxNTksIDIyNywgNDAsIDI1MSwgODksIDI1MSwgMjIyLCAKLSAgICA4NywgNzEsIDIzMiwgMjQzLCAyLCAyMzEsIDM3LCAyNDcsIDc0LCAyMzUsIDIxMywgODcsIDI0OSwgMTIyLCAyMTUsIDE1MSwgCi0gICAgODcsIDI0NywgMTQxLCAyMTUsIDE1MSwgODcsIDI0NSwgMTEyLCA4NywgMjQ5LCAxNDksIDg3LCA2NywgNDEsIDIsIDI1MCwgCi0gICAgMTA5LCA3MSwgMjMyLCAyNDIsIDI0NSwgODksIDg3LCAyNTQsIDQ4LCAyMzQsIDE0NSwgODcsIDI0MSwgMTk3LCA4NywgMzYsIAotICAgIDE5OSwgMjUyLCA2MCwgMiwgMjI4LCAxNjEsIDM2LCAyMTYsIDE4NCwgMjQ2LCA2MCwgMjUxLCA2MywgMjQ5LCAyMjksIDIsIAotICAgIDIyOCwgMTY1LCA2OCwgMjE1LCAxNDksIDg3LCAyMzAsIDIwNywgODcsIDI0MCwgMTU2LCA4NywgMjI3LCAzOSwgMjQyLCA0MCwgCi0gICAgODcsIDIyNywgMzksIDIzMywgMTY5LCA4NywgMjI2LCAxMTcsIDg3LCAyMjYsIDExNiwgODcsIDI0NywgMTQ5LCAyNDksIDM4LCAKLSAgICAxNiwgMjQzLCAyNDUsIDEwOSwgMjE5LCAyMzQsIDg3LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTcyLCAyNDgsIDM0LCAyMjEsIAotICAgIDU4LCAyMzQsIDE0NSwgODcsIDIyNSwgNzMsIDIyNiwgMjAwLCAyMjksIDE2NCwgMjI2LCAyMDAsIDIyNSwgNjksIDIyMiwgCi0gICAgMTA4LCA4NywgMjQ5LCAyMTAsIDIyMiwgMTA4LCA4NywgNDIsIDIyNiwgMTMyLCAyMTUsIDEzMSwgMTAxLCA0MiwgMjI2LCAKLSAgICAxMzIsIDI0NCwgMjQ1LCA0MiwgMjI2LCAxMzIsIDIzMiwgMTYzLCAxMDEsIDQ2LCAyMjYsIDEzMiwgMjE1LCAxMzEsIDEwMSwgCi0gICAgNDYsIDIyNiwgMTMyLCAyNDQsIDI0NSwgNDYsIDIyNiwgMTMyLCAyMzIsIDE2MywgMTAxLCA0MiwgNDEsIDI1MSwgODUsIAotICAgIDIxNSwgMTMxLCAyNDksIDk5LCA0MiwgNDEsIDI1MSwgODUsIDI0NCwgMjQ1LCA0MiwgNDEsIDI1MSwgODUsIDIzMiwgMTYzLCAKLSAgICAyNDksIDk5LCA0NiwgNDEsIDI1MSwgODUsIDIxNSwgMTMxLCAyNDksIDk5LCA0NiwgNDEsIDI1MSwgODUsIDI0NCwgMjQ1LCAKLSAgICA0NiwgNDEsIDI1MSwgODUsIDIzMiwgMTYzLCAyNDksIDk5LCA0MiwgMjQ5LCA0MCwgMjUxLCA4NSwgMjE1LCAxMzEsIDEwMSwgCi0gICAgNDIsIDI0OSwgNDAsIDI1MSwgODUsIDIzMSwgMzcsIDIyNSwgMjMzLCA0MiwgMjQ5LCA0MCwgMjUxLCA4NSwgMjMyLCAxNjMsIAotICAgIDEwMSwgMjQ5LCA0MCwgMjUxLCA4NSwgMjQ0LCAyNDUsIDQ2LCAyNDksIDQwLCAyNTEsIDg1LCAyMTUsIDEzMSwgMTAxLCA0NiwgCi0gICAgMjQ5LCA0MCwgMjUxLCA4NSwgMjMxLCAzNywgMjI1LCAyMzMsIDQ2LCAyNDksIDQwLCAyNTEsIDg1LCAyMzIsIDE2MywgMTAxLCAKLSAgICAyMzUsIDIwOSwgMjQ0LCAyNDUsIDE5OSwgMjMyLCAyNDMsIDI0NCwgMjQ1LCAyMTUsIDEzMSwgNDIsIDE2NywgMjMyLCAxNjMsIAotICAgIDQ2LCAyNDksIDQwLCAyNTEsIDg1LCAyMjIsIDkxLCAyMTUsIDEzMSwgNDYsIDE2NywgMjMyLCAxNjMsIDQyLCAyNDksIDQwLCAKLSAgICAyNTEsIDg1LCAyMjIsIDkxLCAyMTgsIDI0MiwgMjE2LCAyMjYsIDIxOCwgMjQyLCAyNTEsIDEwMCwgMjE2LCAyMjcsIDQxLCAKLSAgICAxMjUsIDI1MSwgMTAxLCA0MSwgMTI1LCAyNTEsIDEwMSwgNDEsIDI1MSwgODUsIDExMCwgMjE2LCAyMjcsIDQxLCAxMjUsIAotICAgIDM0LCAxNiwgMjUxLCAxMDAsIDQyLCA3MSwgOTIsIDIzMiwgMjQyLCA0NiwgNzEsIDkyLCAyMzIsIDI0MiwgMTk5LCAyMjIsIAotICAgIDEyMywgMjMyLCAyNDEsIDE5OSwgMjIyLCAxMjMsIDIzMiwgMjQwLCAxOTksIDIyMiwgMTIzLCAyMzIsIDIzOSwgMTk5LCAKLSAgICAyMjIsIDEyMywgMjMyLCAyMzgsIDI0NywgMjUzLCAxNiwgMTc3LCA3MSwgMjQsIDIxNiwgMjI3LCAyMjMsIDE0OCwgMjQ3LCAKLSAgICAyNTMsIDE2LCAxNzcsIDcxLCAyNCwgMjUxLCAxMDEsIDIyMywgMTQ4LCAyNDcsIDI1MywgMTYsIDE3NywgNzEsIDIsIDI0OSwgCi0gICAgMjI4LCAyNDcsIDI1MywgMTYsIDE3NywgMTE5LCAyNCwgMTk5LCAyLCAyNDksIDIyOCwgMjQ3LCAyNTMsIDE2LCAxNzcsIAotICAgIDExNCwgMjQsIDE5OSwgMiwgMjQ5LCAyMjgsIDI0NywgMjUzLCAxNiwgMTc3LCA3MSwgMiwgMjE2LCAxODMsIDI0NywgMjUzLCAKLSAgICAxNiwgMTc3LCAxMTksIDI0LCAxOTksIDIsIDIxNiwgMTgzLCAyNDcsIDI1MywgMTYsIDE3NywgMTE0LCAyNCwgMTk5LCAyLCAKLSAgICAyMTYsIDE4MywgMjQ3LCAyNTMsIDE2LCAxNzcsIDcxLCAyNCwgMjE0LCAxOSwgMjQ3LCAyNTMsIDE2LCAxNzcsIDExOSwgMjQsIAotICAgIDE5OSwgMiwgMjE0LCAxOSwgMjQ3LCAyNTMsIDE2LCAxNzcsIDExNCwgMjQsIDE5OSwgMiwgMjE0LCAxOSwgMjQ3LCAyNTMsIAotICAgIDE2LCAxNzcsIDExOSwgMjQsIDI0MSwgMzEsIDI0NywgMjUzLCAxNiwgMTc3LCAxMTQsIDI0LCAyNDEsIDMxLCAyNDcsIDI1MywgCi0gICAgMTYsIDE3NywgNzEsIDI0LCAyMTYsIDIyNywgMjMzLCA3MCwgMjQ3LCAyNTMsIDE2LCAxNzcsIDcxLCAyNCwgMjUxLCAxMDEsIAotICAgIDIzMywgNzAsIDQxLCAyNDQsIDEsIDIyMywgMjA2LCA4NywgMjQ1LCAxMzksIDg3LCA3MSwgMjMyLCAyNDMsIDI0NCwgMjQ1LCAKLSAgICAyMzEsIDEwMCwgMjUxLCA3NCwgMjMxLCAxMDAsIDE4NCwgMTEwLCAyMjAsIDE3NCwgMjMxLCAxMDAsIDIyMCwgMTc1LCAxMTAsIAotICAgIDIzMiwgMTkwLCAyMzEsIDEwMCwgMTg0LCAxMTAsIDExNywgMjIwLCAxNjEsIDIzMSwgMTAwLCAxMTcsIDIyMCwgMTYyLCAKLSAgICAxMTAsIDIzMiwgMTkwLCAyMzEsIDEwMCwgMTE3LCAyMjAsIDE2MiwgMjM1LCA2NywgMjMxLCAxMDAsIDIxNiwgMTY2LCAyMzEsIAotICAgIDEwMCwgMjE3LCAxNzYsIDIzMSwgMTAwLCAyMjYsIDYzLCAyNDUsIDE4MCwgMjQyLCAxMDAsIDI0MywgMTkxLCAyMTYsIDIyNywgCi0gICAgMjI2LCAxMzEsIDI1MSwgMTAxLCAyMjYsIDEzMSwgMjE2LCAyMjcsIDI0OSwgNDAsIDEyNSwgMjUxLCAxMDEsIDI0OSwgNDAsIAotICAgIDEyNSwgMjE2LCAyMjcsIDIxNiwgMjE5LCAyMjAsIDIzMywgMTI1LCAyNTEsIDEwMSwgMjE2LCAyMTksIDIyMCwgMjMzLCAKLSAgICAxMjUsIDY3LCAyMTYsIDE5NywgMjUxLCAyMTIsIDIyMywgMTMxLCAyLCAyNDksIDIyOCwgMjE5LCA2MCwgMjQ0LCAzMywgCi0gICAgMjU0LCAxNzcsIDI0OSwgMzcsIDI0NSwgMTI4LCAyMzUsIDE5NSwgMjQ4LCAzNCwgMjQ0LCAyNDcsIDg3LCA4MywgMjIzLCAKLSAgICAxNDQsIDUxLCAyMTYsIDE4MywgODMsIDIzMywgNjYsIDUxLCAyMTYsIDE4MywgODMsIDIxNSwgMTMzLCA1MSwgMjE2LCAxODMsIAotICAgIDgzLCAyNDYsIDU5LCA1MSwgMjE2LCAxODMsIDgzLCAyMjMsIDE0NCwgNTEsIDIxNiwgMTg0LCAyLCA3MSwgMTM0LCA4MywgCi0gICAgMjMzLCA2NiwgNTEsIDIxNiwgMTg0LCAyLCA3MSwgMTM0LCA4MywgMjIzLCAxNDQsIDIxNiwgMTg0LCAyLCA1MSwgNzEsIAotICAgIDEzNCwgMjU0LCA4MSwgMjQ5LCAxOTYsIDIxOSwgNjYsIDIxNywgMzksIDI0OSwgMTk2LCAyNDAsIDIyNCwgMiwgMjQ0LCAxOSwgCi0gICAgMjIyLCAxNTcsIDE2LCAzMSwgMjI4LCA1OCwgMTYsIDMxLCAyMTksIDkxLCA2NSwgMjQxLCAyMTcsIDE2LCAzMSwgMjE5LCAKLSAgICA5MSwgNjUsIDIxNywgMTY1LCAxNiwgMzEsIDI0NSwgMTAxLCA2NSwgMjE3LCAxNjUsIDE2LCAzMSwgMjQ1LCAxMDEsIDY1LCAKLSAgICAyMTYsIDIwMCwgMTYsIDMxLCAyNDUsIDkxLCAxNiwgMzEsIDI1NCwgMTY4LCAxNiwgMzEsIDI1MSwgMjIxLCAxNiwgMzEsIAotICAgIDI1MiwgOTYsIDE2LCAzMSwgMTk5LCAyMTgsIDM4LCAxNiwgMzEsIDIzMiwgMjQzLCAyNDQsIDExNCwgMTYsIDMxLCA3MSwgCi0gICAgMjE4LCAzOCwgMTYsIDMxLCAyNDMsIDI0NSwgMjQ0LCAxMTQsIDE2LCAzMSwgMjUwLCAxNjIsIDIyMywgMjA1LCAxNiwgMzEsIAotICAgIDIyMCwgMjA4LCAyMjYsIDI1NCwgMTYsIDMxLCAyMjAsIDIwOCwgMjM1LCAyNTEsIDE2LCAzMSwgMjQ4LCA5NywgMjMyLCAKLSAgICAyMzMsIDI0NSwgNDIsIDE2LCAzMSwgMjQ3LCAyMzgsIDI0OSwgMTE3LCAxMTYsIDE2LCAzMSwgMjQ3LCAyMzgsIDI0OSwgCi0gICAgMTE3LCAxMDksIDE2LCAzMSwgMjQ3LCAyMzgsIDI0OSwgMTE3LCAxNjYsIDE2LCAzMSwgMjQ3LCAyMzgsIDI0OSwgMTE3LCAKLSAgICAxNjMsIDE2LCAzMSwgMTQ2LCAyNTQsIDE2OCwgMTYsIDMxLCAyMTgsIDEyMywgMjM2LCA1NywgMTYsIDMxLCAyNDUsIDEwMSwgCi0gICAgNjUsIDIxNiwgMjAxLCAyNTEsIDEzNiwgMTYsIDMxLCAyNTAsIDE5MywgMTYsIDMxLCAyNDUsIDEwMSwgNjUsIDIzMSwgMTQ2LCAKLSAgICAxNiwgMzEsIDIxOSwgNiwgMTYsIDMxLCAyNDUsIDQyLCAxNiwgMzEsIDI0NCwgNzYsIDIyMSwgNTcsIDE2LCAzMSwgMjQyLCAKLSAgICA5OSwgMjIxLCA1NywgMTYsIDMxLCAyMjQsIDE0LCAyMjEsIDU3LCAxNiwgMzEsIDIxNSwgMTQ1LCAyMjEsIDU3LCAxNiwgMzEsIAotICAgIDIxOSwgMjA2LCAxNiwgMzEsIDI0OCwgMTQsIDI1MSwgMTM5LCA4NywgMjI3LCA0MCwgMjUxLCA4OSwgMTYsIDMxLCAyMjksIAotICAgIDE2NywgMTYsIDMxLCAyNDgsIDE1LCAyNDMsIDI0NSwgMTA5LCAxNiwgMzEsIDIxOSwgNywgMjQzLCAyNDUsIDEwOSwgMjI3LCAKLSAgICAxMDUsIDEwMSwgMjI3LCAxMDUsIDI1MCwgODcsIDIyNywgMTA1LCAyNDMsIDI0OCwgMjI3LCAxMDUsIDIzNSwgMTkxLCAyNDMsIAotICAgIDI0OCwgMjI3LCAxMDUsIDI1MSwgMjE5LCAyNTEsIDUzLCAyMjcsIDEwNSwgMjUxLCA5NiwgMjE3LCA2NSwgMjI3LCAxMDUsIAotICAgIDI1MSwgODIsIDI1MiwgNjUsIDI0MCwgOTYsIDIyNywgMTA1LCAyNTQsIDM2LCA2NSwgMjUwLCA2NSwgMjI3LCAxMDUsIDI0OCwgCi0gICAgMTAxLCAyMjcsIDEwNSwgMjQ5LCAyOSwgMjU0LCAxNzEsIDIyOCwgNTYsIDIyNywgMTA1LCA1MSwgMjUyLCA5NywgMzYsIDIxLCAKLSAgICAxMTYsIDM2LCAyMSwgMTA5LCAzNiwgMjEsIDE2NiwgMzYsIDIxLCAxNjMsIDM2LCAyMSwgMTgwLCAzNiwgMjEsIDE4OSwgMzYsIAotICAgIDIxLCAxOTgsIDM2LCAyMSwgMTk1LCAzNiwgMjEsIDIwMCwgMzYsIDUwLCAyMTcsIDIwMCwgMzYsIDUwLCAyNDUsIDEyNCwgCi0gICAgMzYsIDUwLCAyMTYsIDQxLCAzNiwgNTAsIDIxNywgMTE3LCAzNiwgNTAsIDI0MywgMjMxLCAzNiwgNTAsIDI0NCwgODcsIDM2LCAKLSAgICA1MCwgMjIwLCA0NywgMzYsIDUwLCAyMjEsIDQwLCAzNiwgNTAsIDI0NSwgMTQ3LCAzNiwgNTAsIDIyOSwgMjgsIDM2LCA1MCwgCi0gICAgMjE2LCAzOCwgODYsIDIxLCAxMTYsIDg2LCAyMSwgMTA5LCA4NiwgMjEsIDE2NiwgODYsIDIxLCAxNjMsIDg2LCAyMSwgMTgwLCAKLSAgICA4NiwgMjEsIDE4OSwgODYsIDIxLCAxOTgsIDg2LCAyMSwgMTk1LCA4NiwgMjEsIDIwMCwgODYsIDUwLCAyMTcsIDIwMCwgODYsIAotICAgIDUwLCAyNDUsIDEyNCwgODYsIDUwLCAyMTYsIDQxLCA4NiwgNTAsIDIxNywgMTE3LCA4NiwgNTAsIDI0MywgMjMxLCA4NiwgCi0gICAgNTAsIDI0NCwgODcsIDg2LCA1MCwgMjIwLCA0NywgODYsIDUwLCAyMjEsIDQwLCA4NiwgNTAsIDI0NSwgMTQ3LCA4NiwgNTAsIAotICAgIDIyOSwgMjgsIDg2LCA1MCwgMjE2LCAzOCwgMjEsIDEyMiwgMjQzLCAyMDAsIDIxOSwgNjksIDIxLCAxMTcsIDI0MywgMjAwLCAKLSAgICAyMTksIDY5LCAyMSwgMTMzLCAyNDMsIDIwMCwgMjE5LCA2OSwgMjEsIDI0MywgMjM3LCAyNDMsIDIwMCwgMjE5LCA2OSwgMjEsIAotICAgIDI0NCwgNTAsIDI0MywgMjAwLCAyMTksIDY5LCAyMSwgMjIwLCA1MywgMjQzLCAyMDAsIDIxOSwgNjksIDIxLCAyMjEsIDQzLCAKLSAgICAyNDMsIDIwMCwgMjE5LCA2OSwgMjEsIDI0NSwgMTUwLCAyNDMsIDIwMCwgMjE5LCA2OSwgMjEsIDIyOSwgMzEsIDI0MywgCi0gICAgMjAwLCAyMTksIDY5LCA1MCwgMjE3LCAyMDEsIDI0MywgMjAwLCAyMTksIDY5LCA1MCwgMjQ1LCAxMjUsIDI0MywgMjAwLCAKLSAgICAyMTksIDY5LCA1MCwgMjE2LCA0MiwgMjQzLCAyMDAsIDIxOSwgNjksIDUwLCAyMTcsIDExOCwgMjQzLCAyMDAsIDIxOSwgNjksIAotICAgIDUwLCAyNDMsIDIzMiwgMjQzLCAyMDAsIDIxOSwgNjksIDUwLCAyNDQsIDg4LCAyNDMsIDIwMCwgMjE5LCA2OSwgNTAsIDIyMCwgCi0gICAgNDgsIDI0MywgMjAwLCAyMTksIDY5LCA1MCwgMjIxLCA0MSwgMjQzLCAyMDAsIDIxOSwgNjksIDUwLCAyNDUsIDE0OCwgMjQzLCAKLSAgICAyMDAsIDIxOSwgNjksIDUwLCAyMjksIDI5LCAyNDMsIDIwMCwgMjE5LCA2OSwgNTAsIDIxNiwgMzksIDI0MywgMjAwLCAyMTksIAotICAgIDY5LCA4NiwgNywgMywgMSwgNjEsIDg2LCA3LCAzLCAxLCAyNTMsIDc0LCA4NiwgNywgMywgMSwgMjUwLCAyNTIsIDg2LCA3LCAKLSAgICAzLCAxLCAyNDksIDMsIDg2LCA3LCAzLCAxLCA3NCwgODYsIDcsIDMsIDEsIDI0NCwgMjMwLCA4NiwgNywgMywgMSwgMjQzLCAKLSAgICAxNzcsIDg2LCA3LCAzLCAxLCAyNDIsIDQxLCA4NiwgNywgMywgMSwgNzIsIDg2LCA3LCAzLCAxLCAyMzUsIDE0MiwgODYsIDcsIAotICAgIDMsIDEsIDIzNSwgMjcsIDg2LCA3LCAzLCAxLCAxNTAsIDg2LCA3LCAzLCAxLCAxODMsIDg2LCA3LCAzLCAxLCAyMDQsIDg2LCAKLSAgICA3LCAzLCAxLCA3NSwgODYsIDcsIDMsIDEsIDIyNiwgMjI5LCA4NiwgNywgMywgMSwgMjI0LCAyNDAsIDg2LCA3LCAzLCAxLCAKLSAgICAxNDksIDg2LCA3LCAzLCAxLCAxOTcsIDg2LCA3LCAzLCAxLCAyMTgsIDk5LCA4NiwgNywgMywgMSwgNjksIDg2LCA3LCAzLCAKLSAgICAxLCAyMTUsIDc5LCA4NiwgNywgMywgMSwgMjE0LCA4MiwgODYsIDcsIDMsIDEsIDIxMywgMTY2LCA4NiwgNywgMywgMSwgCi0gICAgMjEzLCAxMDUsIDg2LCA3LCAzLCAxLCAyMTIsIDE1MiwgMzYsIDcsIDYsIDEsIDYxLCAzNiwgNywgNiwgMSwgMjUzLCA3NCwgCi0gICAgMzYsIDcsIDYsIDEsIDI1MCwgMjUyLCAzNiwgNywgNiwgMSwgMjQ5LCAzLCAzNiwgNywgNiwgMSwgNzQsIDM2LCA3LCA2LCAxLCAKLSAgICAyNDQsIDIzMCwgMzYsIDcsIDYsIDEsIDI0MywgMTc3LCAzNiwgNywgNiwgMSwgMjQyLCA0MSwgMzYsIDcsIDYsIDEsIDcyLCAKLSAgICAzNiwgNywgNiwgMSwgMjM1LCAxNDIsIDM2LCA3LCA2LCAxLCAyMzUsIDI3LCAzNiwgNywgNiwgMSwgMTUwLCAzNiwgNywgNiwgCi0gICAgMSwgMTgzLCAzNiwgNywgNiwgMSwgMjA0LCAzNiwgNywgNiwgMSwgNzUsIDM2LCA3LCA2LCAxLCAyMjYsIDIyOSwgMzYsIDcsIAotICAgIDYsIDEsIDIyNCwgMjQwLCAzNiwgNywgNiwgMSwgMTQ5LCAzNiwgNywgNiwgMSwgMTk3LCAzNiwgNywgNiwgMSwgMjE4LCA5OSwgCi0gICAgMzYsIDcsIDYsIDEsIDY5LCAzNiwgNywgNiwgMSwgMjE1LCA3OSwgMzYsIDcsIDYsIDEsIDIxNCwgODIsIDM2LCA3LCA2LCAxLCAKLSAgICAyMTMsIDE2NiwgMzYsIDcsIDYsIDEsIDIxMywgMTA1LCAzNiwgNywgNiwgMSwgMjEyLCAxNTIsIDM2LCA3LCAzLCAxLCA2MSwgCi0gICAgMzYsIDcsIDMsIDEsIDI1MywgNzQsIDM2LCA3LCAzLCAxLCAyNTAsIDI1MiwgMzYsIDcsIDMsIDEsIDI0OSwgMywgMzYsIDcsIAotICAgIDMsIDEsIDc0LCAzNiwgNywgMywgMSwgMjQ0LCAyMzAsIDM2LCA3LCAzLCAxLCAyNDMsIDE3NywgMzYsIDcsIDMsIDEsIDI0MiwgCi0gICAgNDEsIDM2LCA3LCAzLCAxLCA3MiwgMzYsIDcsIDMsIDEsIDIzNSwgMTQyLCAzNiwgNywgMywgMSwgMjM1LCAyNywgMzYsIDcsIAotICAgIDMsIDEsIDE1MCwgMzYsIDcsIDMsIDEsIDE4MywgMzYsIDcsIDMsIDEsIDIwNCwgMzYsIDcsIDMsIDEsIDc1LCAzNiwgNywgMywgCi0gICAgMSwgMjI2LCAyMjksIDM2LCA3LCAzLCAxLCAyMjQsIDI0MCwgMzYsIDcsIDMsIDEsIDE0OSwgMzYsIDcsIDMsIDEsIDE5NywgCi0gICAgMzYsIDcsIDMsIDEsIDIxOCwgOTksIDM2LCA3LCAzLCAxLCA2OSwgMzYsIDcsIDMsIDEsIDIxNSwgNzksIDM2LCA3LCAzLCAxLCAKLSAgICAyMTQsIDgyLCAzNiwgNywgMywgMSwgMjEzLCAxNjYsIDM2LCA3LCAzLCAxLCAyMTMsIDEwNSwgMzYsIDcsIDMsIDEsIDIxMiwgCi0gICAgMTUyLCAzNiwgMjEsIDIxMiwgNzksIDE0NiwgMzYsIDUwLCAyNDUsIDEyNCwgMTQ2LCAzNiwgNTAsIDIxNiwgNDEsIDE0NiwgCi0gICAgMzYsIDUwLCAyMTcsIDExNywgMTQ2LCAzNiwgNTAsIDI0MywgMjMxLCAxNDYsIDM2LCA1MCwgMjQ0LCA4NywgMTQ2LCAzNiwgCi0gICAgNTAsIDIyMCwgNDcsIDE0NiwgMzYsIDUwLCAyMjEsIDQwLCAxNDYsIDM2LCA1MCwgMjQ1LCAxNDcsIDE0NiwgMzYsIDUwLCAKLSAgICAyMjksIDI4LCAxNDYsIDM2LCA1MCwgMjE2LCAzOCwgNTEsIDM2LCAyMSwgMTE2LCA1MSwgMzYsIDIxLCAxMDksIDUxLCAzNiwgCi0gICAgMjEsIDE2NiwgNTEsIDM2LCAyMSwgMTYzLCA1MSwgMzYsIDIxLCAxODAsIDUxLCAzNiwgMjEsIDE4OSwgNTEsIDM2LCAyMSwgCi0gICAgMTk4LCA1MSwgMzYsIDIxLCAxOTUsIDUxLCAzNiwgMjEsIDIwMCwgNTEsIDM2LCA1MCwgMjE3LCAyMDAsIDE0NiwgMzYsIDIxLCAKLSAgICAyMTIsIDc5LCA5MiwgOTYsIDE3NywgMjQxLCAzMSwgOTIsIDk2LCAxMDcsIDI0MSwgMzEsIDkyLCA5NiwgMTc3LCAyMTQsIAotICAgIDIxNiwgOTIsIDk2LCAxMDcsIDIxNCwgMjE2LCA5MiwgOTYsIDE3NywgMjE2LCAxNjksIDI0OCwgMTAyLCAyNDEsIDMxLCA5MiwgCi0gICAgOTYsIDEwNywgMjE2LCAxNjksIDI0OCwgMTAyLCAyNDEsIDMxLCA5MiwgOTYsIDE3NywgMjE2LCAxNjksIDI0OCwgMTAyLCAKLSAgICAyMTQsIDIxNiwgOTIsIDk2LCAxMDcsIDIxNiwgMTY5LCAyNDgsIDEwMiwgMjE0LCAyMTYsIDkyLCA5NiwgMTc3LCAyMjQsIAotICAgIDE2OSwgMjQ4LCAxMDIsIDI0MSwgMzEsIDkyLCA5NiwgMTA3LCAyMjQsIDE2OSwgMjQ4LCAxMDIsIDI0MSwgMzEsIDkyLCA5NiwgCi0gICAgMTc3LCAyMjQsIDE2OSwgMjQ4LCAxMDIsIDIxNCwgMjE2LCA5MiwgOTYsIDEwNywgMjI0LCAxNjksIDI0OCwgMTAyLCAyMTQsIAotICAgIDIxNiwgOTIsIDk2LCAxNzcsIDExOSwgMjQsIDIyMywgMTQ4LCA5MiwgOTYsIDExOSwgMTc3LCAyNCwgNDYsIDI0MSwgMjA1LCAKLSAgICA5MiwgOTYsIDExOSwgMTA3LCAyNCwgNDYsIDIzMywgMiwgOTIsIDk2LCAxMDcsIDExOSwgMjQsIDIyMywgMTQ4LCA5MiwgOTYsIAotICAgIDE3NywgMTE5LCAyNCwgMjMzLCA3MCwgOTIsIDk2LCAxMTksIDE3NywgMjQsIDQyLCAyNDEsIDIwNSwgOTIsIDk2LCAxMTksIAotICAgIDEwNywgMjQsIDQyLCAyMzMsIDIsIDkyLCA5NiwgMTA3LCAxMTksIDI0LCAyMzMsIDcwLCA5MiwgOTYsIDE3NywgMTE0LCAyNCwgCi0gICAgMjIzLCAxNDgsIDkyLCA5NiwgMTE0LCAxNzcsIDI0LCA0NiwgMjQxLCAyMDUsIDkyLCA5NiwgMTE0LCAxMDcsIDI0LCA0NiwgCi0gICAgMjMzLCAyLCA5MiwgOTYsIDEwNywgMTE0LCAyNCwgMjIzLCAxNDgsIDkyLCA5NiwgMTc3LCAxMTQsIDI0LCAyMzMsIDcwLCAKLSAgICA5MiwgOTYsIDExNCwgMTc3LCAyNCwgNDIsIDI0MSwgMjA1LCA5MiwgOTYsIDExNCwgMTA3LCAyNCwgNDIsIDIzMywgMiwgOTIsIAotICAgIDk2LCAxMDcsIDExNCwgMjQsIDIzMywgNzAsIDkyLCA5NiwgMTc3LCA3MSwgMjQsIDIyMywgMTQ4LCA5MiwgOTYsIDcxLCAKLSAgICAxNzcsIDI0LCA0NiwgMjQxLCAyMDUsIDkyLCA5NiwgMTE0LCAxMDcsIDI0LCA0NiwgMTE5LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgMTE5LCAxMDcsIDI0LCA0NiwgMTE0LCAyMzMsIDIsIDkyLCA5NiwgNzEsIDEwNywgMjQsIDQ2LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgMTE5LCAxNzcsIDI0LCA0NiwgMTE0LCAyNDEsIDIwNSwgOTIsIDk2LCAxMTQsIDE3NywgMjQsIDQ2LCAxMTksIDI0MSwgMjA1LCAKLSAgICA5MiwgOTYsIDEwNywgNzEsIDI0LCAyMjMsIDE0OCwgOTIsIDk2LCAxNzcsIDcxLCAyNCwgMjMzLCA3MCwgOTIsIDk2LCA3MSwgCi0gICAgMTc3LCAyNCwgNDIsIDI0MSwgMjA1LCA5MiwgOTYsIDExNCwgMTA3LCAyNCwgNDIsIDExOSwgMjMzLCAyLCA5MiwgOTYsIAotICAgIDExOSwgMTA3LCAyNCwgNDIsIDExNCwgMjMzLCAyLCA5MiwgOTYsIDcxLCAxMDcsIDI0LCA0MiwgMjMzLCAyLCA5MiwgOTYsIAotICAgIDExOSwgMTc3LCAyNCwgNDIsIDExNCwgMjQxLCAyMDUsIDkyLCA5NiwgMTE0LCAxNzcsIDI0LCA0MiwgMTE5LCAyNDEsIDIwNSwgCi0gICAgOTIsIDk2LCAxMDcsIDcxLCAyNCwgMjMzLCA3MCwgOTIsIDk2LCAxNzcsIDExOSwgMjQsIDI0MSwgMzEsIDkyLCA5NiwgNDIsIAotICAgIDEwNywgMjQsIDQ2LCAxMTksIDIzMywgMiwgOTIsIDk2LCA0NiwgMTA3LCAyNCwgNDIsIDExOSwgMjMzLCAyLCA5MiwgOTYsIAotICAgIDExOSwgMTc3LCAyNCwgMTk5LCAyNDEsIDIwNSwgOTIsIDk2LCAxMTksIDEwNywgMjQsIDE5OSwgMjMzLCAyLCA5MiwgOTYsIAotICAgIDQ2LCAxNzcsIDI0LCA0MiwgMTE5LCAyNDEsIDIwNSwgOTIsIDk2LCA0MiwgMTc3LCAyNCwgNDYsIDExOSwgMjQxLCAyMDUsIAotICAgIDkyLCA5NiwgMTA3LCAxMTksIDI0LCAyNDEsIDMxLCA5MiwgOTYsIDE3NywgMTE0LCAyNCwgMjQxLCAzMSwgOTIsIDk2LCA0MiwgCi0gICAgMTA3LCAyNCwgNDYsIDExNCwgMjMzLCAyLCA5MiwgOTYsIDQ2LCAxMDcsIDI0LCA0MiwgMTE0LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgMTE0LCAxNzcsIDI0LCAxOTksIDI0MSwgMjA1LCA5MiwgOTYsIDExNCwgMTA3LCAyNCwgMTk5LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgNDYsIDE3NywgMjQsIDQyLCAxMTQsIDI0MSwgMjA1LCA5MiwgOTYsIDQyLCAxNzcsIDI0LCA0NiwgMTE0LCAyNDEsIDIwNSwgCi0gICAgOTIsIDk2LCAxMDcsIDExNCwgMjQsIDI0MSwgMzEsIDkyLCA5NiwgMTc3LCA3MSwgMjQsIDI0MSwgMzEsIDkyLCA5NiwgNDIsIAotICAgIDEwNywgMjQsIDQ2LCA3MSwgMjMzLCAyLCA5MiwgOTYsIDQ2LCAxMDcsIDI0LCA0MiwgNzEsIDIzMywgMiwgOTIsIDk2LCA3MSwgCi0gICAgMTc3LCAyNCwgMTk5LCAyNDEsIDIwNSwgOTIsIDk2LCAxMTQsIDEwNywgMjQsIDExOSwgMTk5LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgMTE5LCAxMDcsIDI0LCAxMTQsIDE5OSwgMjMzLCAyLCA5MiwgOTYsIDcxLCAxMDcsIDI0LCAxOTksIDIzMywgMiwgOTIsIDk2LCAKLSAgICA0MiwgMTE0LCAxMDcsIDI0LCA0NiwgMTE5LCAyMzMsIDIsIDkyLCA5NiwgNDYsIDExNCwgMTA3LCAyNCwgNDIsIDExOSwgCi0gICAgMjMzLCAyLCA5MiwgOTYsIDQyLCAxMTksIDEwNywgMjQsIDQ2LCAxMTQsIDIzMywgMiwgOTIsIDk2LCA0NiwgMTE5LCAxMDcsIAotICAgIDI0LCA0MiwgMTE0LCAyMzMsIDIsIDkyLCA5NiwgMTE5LCAxNzcsIDI0LCAxMTQsIDE5OSwgMjQxLCAyMDUsIDkyLCA5NiwgCi0gICAgMTE0LCAxNzcsIDI0LCAxMTksIDE5OSwgMjQxLCAyMDUsIDkyLCA5NiwgNDYsIDE3NywgMjQsIDQyLCA3MSwgMjQxLCAyMDUsIAotICAgIDkyLCA5NiwgNDIsIDE3NywgMjQsIDQ2LCA3MSwgMjQxLCAyMDUsIDkyLCA5NiwgMTA3LCA3MSwgMjQsIDI0MSwgMzEsIDkyLCAKLSAgICA5NiwgMTc3LCA1MSwgMjQ4LCAxMDIsIDI0MSwgMzEsIDkyLCA5NiwgMTA3LCA1MSwgMjQ4LCAxMDIsIDI0MSwgMzEsIDkyLCAKLSAgICA5NiwgMTc3LCA1MSwgMjQ4LCAxMDIsIDIxNCwgMjE2LCA5MiwgOTYsIDEwNywgNTEsIDI0OCwgMTAyLCAyMTQsIDIxNiwgOTIsIAotICAgIDk2LCA1MSwgMjQxLCAzMSwgOTIsIDk2LCA1MSwgMjE0LCAyMTYsIDkyLCA5NiwgMTE5LCAyMjAsIDgxLCAyNCwgNDYsIDI0NiwgCi0gICAgNjcsIDkyLCA5NiwgMTE5LCA1MSwgMjQsIDQ2LCAyMjAsIDgwLCA5MiwgOTYsIDUxLCAxMTksIDI0LCAyMjMsIDE0OCwgOTIsIAotICAgIDk2LCAxMTksIDIyMCwgODEsIDI0LCA0MiwgMjQ2LCA2NywgOTIsIDk2LCAxMTksIDUxLCAyNCwgNDIsIDIyMCwgODAsIDkyLCAKLSAgICA5NiwgNTEsIDExOSwgMjQsIDIzMywgNzAsIDkyLCA5NiwgMTE0LCAyMjAsIDgxLCAyNCwgNDYsIDI0NiwgNjcsIDkyLCA5NiwgCi0gICAgMTE0LCA1MSwgMjQsIDQ2LCAyMjAsIDgwLCA5MiwgOTYsIDUxLCAxMTQsIDI0LCAyMjMsIDE0OCwgOTIsIDk2LCAxMTQsIAotICAgIDIyMCwgODEsIDI0LCA0MiwgMjQ2LCA2NywgOTIsIDk2LCAxMTQsIDUxLCAyNCwgNDIsIDIyMCwgODAsIDkyLCA5NiwgNTEsIAotICAgIDExNCwgMjQsIDIzMywgNzAsIDkyLCA5NiwgNzEsIDIyMCwgODEsIDI0LCA0NiwgMjQ2LCA2NywgOTIsIDk2LCA3MSwgNTEsIAotICAgIDI0LCA0NiwgMjIwLCA4MCwgOTIsIDk2LCA1MSwgNzEsIDI0LCAyMjMsIDE0OCwgOTIsIDk2LCA3MSwgMjIwLCA4MSwgMjQsIAotICAgIDQyLCAyNDYsIDY3LCA5MiwgOTYsIDcxLCA1MSwgMjQsIDQyLCAyMjAsIDgwLCA5MiwgOTYsIDUxLCA3MSwgMjQsIDIzMywgCi0gICAgNzAsIDkyLCA5NiwgMTE5LCAyMjAsIDgxLCAyNCwgMTk5LCAyNDYsIDY3LCA5MiwgOTYsIDExOSwgNTEsIDI0LCAxOTksIAotICAgIDIyMCwgODAsIDkyLCA5NiwgNTEsIDExOSwgMjQsIDI0MSwgMzEsIDkyLCA5NiwgMTE0LCAyMjAsIDgxLCAyNCwgMTk5LCAKLSAgICAyNDYsIDY3LCA5MiwgOTYsIDExNCwgNTEsIDI0LCAxOTksIDIyMCwgODAsIDkyLCA5NiwgNTEsIDExNCwgMjQsIDI0MSwgMzEsIAotICAgIDkyLCA5NiwgNzEsIDIyMCwgODEsIDI0LCAxOTksIDI0NiwgNjcsIDkyLCA5NiwgNzEsIDUxLCAyNCwgMTk5LCAyMjAsIDgwLCAKLSAgICA5MiwgOTYsIDUxLCA3MSwgMjQsIDI0MSwgMzEsIDkyLCA5NiwgMTc3LCAyNTMsIDE5NiwgMTE5LCAyNCwgMjIzLCAxNDgsIAotICAgIDkyLCA5NiwgMTc3LCAyNTMsIDE5NiwgMTE5LCAyNCwgMjMzLCA3MCwgOTIsIDk2LCAxNzcsIDI1MywgMTk2LCAxMTQsIDI0LCAKLSAgICAyMzMsIDcwLCA5MiwgOTYsIDE3NywgMjUzLCAxOTYsIDExNCwgMjQsIDIyMywgMTQ4LCA5MiwgOTYsIDE3NywgMjQ3LCAyMDcsIAotICAgIDIxNSwgMTMxLCA0NiwgMjExLCAyMTEsIDIzMiwgMTYzLCAyMzMsIDcwLCA5MiwgOTYsIDE3NywgMjQ3LCAyMDcsIDIxNSwgCi0gICAgMTMxLCA0MiwgMjExLCAyMTEsIDIzMiwgMTYzLCAyMjMsIDE0OCwgOTIsIDk2LCAxNzcsIDI0NywgMjA3LCAyNDksIDcwLCAKLSAgICA5MiwgOTYsIDE3NywgMjMzLCA3MCwgOTIsIDk2LCAxNzcsIDIxNSwgMTM0LCA5MiwgOTYsIDE3NywgMjIzLCAxNDgsIDkyLCAKLSAgICA5NiwgMTc3LCAyNDYsIDYwLCA5MiwgOTYsIDEwNywgMjMzLCA3MCwgOTIsIDk2LCAxMDcsIDIxNSwgMTM0LCA5MiwgOTYsIAotICAgIDEwNywgMjIzLCAxNDgsIDkyLCA5NiwgMTA3LCAyNDYsIDYwLCA5MiwgOTYsIDE3NywgNDIsIDI0LCAxMDcsIDIyMywgMTQ4LCAKLSAgICA5MiwgOTYsIDE3NywgMTE0LCAyNCwgMTA3LCAyNDYsIDYwLCA5MiwgOTYsIDEwNywgNDIsIDI0LCAxNzcsIDIyMywgMTQ4LCAKLSAgICA5MiwgOTYsIDEwNywgMTE0LCAyNCwgMTc3LCAyNDYsIDYwLCAyMTUsIDEzMSwgMTUxLCAyNTEsIDEzNiwgMjMyLCAxNjMsIAotICAgIDEyMiwgMjQ1LCAxNDYsIDI1MSwgMTM2LCAyMzIsIDE2MywgMTIyLCAyMjQsIDE2NywgMjUxLCAxMzYsIDIzMiwgMTYzLCAKLSAgICAxMzMsIDI0NSwgMTQ0LCAyNTEsIDEzNiwgMjMyLCAxNjMsIDE1MSwgMjUxLCAxMzYsIDIzMiwgMTYzLCAyNDQsIDUwLCAyNDUsIAotICAgIDE0NCwgMjUxLCAxMzYsIDIzMiwgMTYzLCAxMzMsIDIyNCwgMTY1LCAyNTEsIDEzNiwgMjMyLCAxNjMsIDIyMSwgNDMsIDI0NSwgCi0gICAgMTQ0LCAyNTEsIDEzNiwgMjQzLCAyMDAsIDI1MSwgMTM2LCA0MiwgMjIxLCA0MywgMjQ1LCAxNDQsIDI1MSwgMTM2LCA0MiwgCi0gICAgMTMzLCAyMjQsIDE2NSwgMjUxLCAxMzYsIDQyLCAyNDQsIDUwLCAyNDUsIDE0NCwgMjUxLCAxMzYsIDQyLCAxNTEsIDI1MSwgCi0gICAgMTM2LCA0MiwgMTMzLCAyNDUsIDE0NCwgMjUxLCAxMzYsIDQyLCAxMjIsIDIyNCwgMTY3LCAyNTEsIDEzNiwgNDIsIDEyMiwgCi0gICAgMjQ1LCAxNDYsIDI1MSwgMTM2LCA0NiwgMTUxLCAyNTEsIDEzNiwgMTc3LCAyMjEsIDE0LCAyMzEsIDE0NywgMjIxLCAxNCwgCi0gICAgMjQ4LCAxMDcsIDIyMSwgMTQsIDIxNSwgMTMxLCAxMjIsIDI0NSwgMTQ2LCAyNTEsIDEzNiwgNDYsIDEyMiwgMjQ1LCAxNDYsIAotICAgIDI1MSwgMTM2LCAyMjQsIDE3MSwgMjMyLCAxNjMsIDIzMywgNzAsIDIyNCwgMTcxLCAyMzIsIDE2MywgMjIzLCAxNDgsIDIyNCwgCi0gICAgMTcxLCAyMTUsIDEzMSwgMjMzLCA3MCwgMjI0LCAxNzEsIDIxNSwgMTMxLCA0MiwgMjQsIDIzMiwgMTYzLCA0MiwgMjQsIAotICAgIDIzMiwgMTYzLCAyMjMsIDE0OCwgMjI0LCAxNzEsIDIxNSwgMTMxLCA0MiwgMjQsIDIzMiwgMTYzLCAyMjMsIDE0OCwgMjI0LCAKLSAgICAxNzEsIDIxNSwgMTMxLCA0MiwgMjQsIDIxNSwgMTMxLCA0NiwgMjQsIDIzMiwgMTYzLCAyMzMsIDcwLCAyMjQsIDE3MSwgCi0gICAgMjE1LCAxMzEsIDQyLCAyNCwgMjE1LCAxMzEsIDQ2LCAyNCwgMjMyLCAxNjMsIDIyMywgMTQ4LCAyMjQsIDE3MSwgMjE1LCAKLSAgICAxMzEsIDIyMywgMTQ4LCAyMjQsIDE3MSwgMjE1LCAxMzEsIDQ2LCAyNCwgMjMyLCAxNjMsIDIzMywgNzAsIDIyNCwgMTcxLCAKLSAgICAyMTUsIDEzMSwgNDYsIDI0LCAyMzIsIDE2MywgNDIsIDI0LCAyMzIsIDE2MywgMjIzLCAxNDgsIDgzLCAyMTksIDE2NiwgNjcsIAotICAgIDIxOSwgMTY2LCA2NywgNDEsIDIsIDIyMywgODUsIDI0OSwgOTgsIDY3LCA0MSwgMjQ5LCAxMjYsIDgzLCAzLCAyMTksIDE2NiwgCi0gICAgNDEsIDIsIDE5OSwgMjQ0LCA3NCwgNDEsIDIsIDcxLCAyNDQsIDc0LCA0MSwgMiwgMjI3LCAxMSwgMjQ5LCA2NiwgMjQ0LCAKLSAgICA3NCwgNDEsIDIsIDIxNSwgMTMxLCA0MiwgMjExLCAyMTEsIDIzMiwgMTYzLCA0NiwgMjQ0LCA3NCwgNDEsIDIsIDIxNSwgCi0gICAgMTMxLCA0NiwgMjExLCAyMTEsIDIzMiwgMTYzLCA0MiwgMjQ0LCA3NCwgNDEsIDIsIDI0NywgMjA3LCAyNDksIDY2LCAyNDQsIAotICAgIDc0LCA4MywgMywgMjE5LCAxNjYsIDY3LCAzLCAyMTksIDE2NiwgODMsIDIyNCwgOSwgNjcsIDIyNCwgOSwgODMsIDcxLCAKLSAgICAyMjQsIDksIDY3LCA3MSwgMjI0LCA5LCA4MywgMjI2LCAxMzQsIDY3LCAyMjYsIDEzNCwgODMsIDIxNSwgMTMzLCAyMTYsIAotICAgIDE4MywgNjcsIDIxNSwgMTMzLCAyMTYsIDE4MywgODMsIDIxNSwgMTMzLCAzLCAyMTYsIDE4MywgNjcsIDIxNSwgMTMzLCAzLCAKLSAgICAyMTYsIDE4MywgODMsIDIyMywgMTQ0LCAyMTYsIDE4MywgNjcsIDIyMywgMTQ0LCAyMTYsIDE4MywgODMsIDIyMywgMTQ0LCAKLSAgICAzLCAyMTYsIDE4MywgNjcsIDIyMywgMTQ0LCAzLCAyMTYsIDE4MywgODMsIDIyMywgMTQ0LCAyMjUsIDE0MiwgNjcsIDIyMywgCi0gICAgMTQ0LCAyMjUsIDE0MiwgODMsIDI0NiwgNTksIDIxNiwgMTgzLCA2NywgMjQ2LCA1OSwgMjE2LCAxODMsIDgzLCAyNDYsIDU5LCAKLSAgICAzLCAyMTYsIDE4MywgNjcsIDI0NiwgNTksIDMsIDIxNiwgMTgzLCA4MywgMjMzLCA2NiwgMjE2LCAxODMsIDY3LCAyMzMsIAotICAgIDY2LCAyMTYsIDE4MywgODMsIDIzMywgNjYsIDMsIDIxNiwgMTgzLCA2NywgMjMzLCA2NiwgMywgMjE2LCAxODMsIDgzLCAKLSAgICAyMzMsIDY2LCAyMjUsIDE0MiwgNjcsIDIzMywgNjYsIDIyNSwgMTQyLCA4MywgMjQ3LCAyMDAsIDY3LCAyNDcsIDIwMCwgNjcsIAotICAgIDI0NywgMjAxLCAyNDksIDEyNiwgODMsIDMsIDI0NywgMjAwLCAyNDQsIDU4LCAyMzIsIDE1OSwgNjcsIDI0OSwgMjI4LCAKLSAgICAyNDYsIDcyLCAyNDksIDIyOCwgMjQ5LCAyMjksIDIsIDcxLCAyNDQsIDc0LCAyNTEsIDQwLCA4MywgMjQ5LCAyMjgsIDI0OSwgCi0gICAgMjI5LCAyLCA0MiwgMTUxLCAyNTEsIDE0NCwgMjQ5LCAyMjksIDIsIDQ2LCAxNTEsIDI1MSwgMTQ0LCAyNDksIDIyOSwgMiwgCi0gICAgMjMyLCAxNjMsIDE1MSwgMjUxLCAxNDQsIDI0OSwgMjI5LCAyLCAyMTUsIDEzMSwgMTUxLCAyNTEsIDE0NCwgMjQ5LCAyMjksIAotICAgIDIsIDIxNSwgMTMxLCA0NiwgMjI0LCAxNzEsIDI1MSwgMTQ0LCAyNDksIDIyOSwgMiwgMjU0LCA2NCwgMjUxLCAxNywgMjE1LCAKLSAgICAxMzEsIDQyLCAyMjQsIDE3MSwgMjUxLCAxNDQsIDQyLCAxNTEsIDgzLCAyNDksIDIyOCwgNDYsIDE1MSwgODMsIDI0OSwgCi0gICAgMjI4LCAyMzUsIDE5MiwgMjUxLCA0MiwgMjM1LCAxOTIsIDY3LCAyNDksIDIyOCwgMjE1LCAxMzEsIDE1MSwgMjM1LCAxOTIsIAotICAgIDY3LCAyNDksIDIyOCwgMjMyLCAxNjMsIDE1MSwgMjM1LCAxOTIsIDY3LCAyNDksIDIyOCwgMjE1LCAxMzEsIDQyLCAyMjQsIAotICAgIDE3MSwgMjQ5LCAyMjYsIDI1MywgMTk1LCAyMTUsIDEzMSwgNDYsIDIyNCwgMTcxLCAyNDksIDIyNiwgMjUzLCAxOTUsIDIzMiwgCi0gICAgMTYzLCA0NiwgMjI0LCAxNzEsIDI0OSwgMjI2LCAyNTMsIDE5NSwgMjMyLCAxNjMsIDQyLCAyMjQsIDE3MSwgMjQ5LCAyMjYsIAotICAgIDI1MywgMTk1LCAyMTUsIDEzMSwgMTUxLCAyNDksIDIyOCwgMjMyLCAxNjMsIDE1MSwgMjQ5LCAyMjgsIDgzLCAyMzIsIDE2MywgCi0gICAgNDYsIDIxNiwgMTgzLCA4MywgMjMyLCAxNjMsIDQyLCAyMTYsIDE4MywgODMsIDIxNSwgMTMxLCA0MiwgMjE2LCAxODMsIDgzLCAKLSAgICAyMTUsIDEzMSwgNDYsIDIxNiwgMTgzLCA2NywgMjUxLCA0MiwgNDEsIDIsIDQyLCAxNTEsIDI1MSwgMTQ0LCA0MSwgMiwgNDYsIAotICAgIDE1MSwgMjUxLCAxNDQsIDQxLCAyLCAyMTUsIDEzMSwgNDIsIDI0NywgMjA3LCAxNTEsIDI1MSwgMTQ0LCA0MSwgMiwgMjMyLCAKLSAgICAxNjMsIDQ2LCAyNDcsIDIwNywgMTUxLCAyNTEsIDE0NCwgNjcsIDQxLCAyLCA3MSwgMjUxLCAxNTUsIDIzMiwgMjQyLCA2NywgCi0gICAgMjE1LCAxMzMsIDIxNiwgMTg0LCAyLCAyNDcsIDc0LCAyMTUsIDEzMywgMjE2LCAxODQsIDIsIDQyLCAxNTEsIDI1MSwgMTQ0LCAKLSAgICAyMTUsIDEzMywgMjE2LCAxODQsIDIsIDQ2LCAxNTEsIDI1MSwgMTQ0LCAyMzMsIDEwOCwgMjQ5LCAyMjgsIDY3LCA0MSwgMiwgCi0gICAgMjE1LCAxMzEsIDQyLCAyMjQsIDE3MCwgNjcsIDQxLCAyLCAyMzIsIDE2MywgNDIsIDIyNCwgMTcwLCA2NywgNDEsIDIsIAotICAgIDIzMiwgMTYzLCA0NiwgMjI0LCAxNzAsIDY3LCA0MSwgMiwgMjE1LCAxMzEsIDQ2LCAyMjQsIDE3MCwgNjcsIDI0OSwgMjI5LCAKLSAgICAyLCAyMTUsIDEzMSwgNDIsIDIyNCwgMTcwLCA2NywgMjQ5LCAyMjksIDIsIDIzMiwgMTYzLCA0MiwgMjI0LCAxNzAsIDY3LCAKLSAgICAyNDksIDIyOSwgMiwgMjMyLCAxNjMsIDQ2LCAyMjQsIDE3MCwgNjcsIDI0OSwgMjI5LCAyLCAyMTUsIDEzMSwgNDYsIDIyNCwgCi0gICAgMTcwLCAyMTUsIDEzMSwgNDIsIDIxNiwgMTgzLCAyMTUsIDEzMSwgNDYsIDIxNiwgMTgzLCAyMzIsIDE2MywgNDIsIDIxNiwgCi0gICAgMTgzLCA2NywgMjMxLCAxNDcsIDIxOSwgMTY2LCA4MywgMjMxLCAxNDcsIDIxOSwgMTY2LCA2NywgMjMxLCAxNDcsIDMsIAotICAgIDIxOSwgMTY2LCA4MywgMjMxLCAxNDcsIDMsIDIxOSwgMTY2LCAyMzIsIDE2MywgNDYsIDIxNiwgMTgzLCA4MywgMjE4LCAKLSAgICAyMzksIDIsIDIyNCwgMjUsIDI0OSwgMTg0LCAyMTUsIDE2NCwgMjE5LCAyNDQsIDI0OSwgMTYwLCA4MywgMjE5LCA5NSwgNjcsIAotICAgIDIxOSwgOTUsIDIzMywgMCwgMjE3LCA4NiwgMjE4LCAyMzgsIDI1MywgMTQ5LCAyMjgsIDE4MiwgMjQ3LCAyNDUsIDIyOCwgCi0gICAgMTgyLCAyNDksIDEzNSwgMjI3LCAyOSwgODMsIDIxNywgMjA5LCA2NywgMjE3LCAyMDksIDI1MiwgNzUsIDI1MSwgODksIAotICAgIDI1MiwgNzUsIDkyLCAyLCAyNTAsIDY1LCAyNTIsIDc1LCA5MiwgMiwgMjEzLCAxNjYsIDIyMiwgMTY5LCAyMTUsIDE2NSwgMiwgCi0gICAgMjI0LCA1MSwgMjQ2LCAzOSwgMjQwLCAyMzAsIDI1MSwgMTk5LCA2NywgMjIwLCAxODIsIDIyNSwgMjMzLCA4MywgMjIwLCAKLSAgICAxODIsIDIyNSwgMjMzLCAyMjEsIDEwLCAyMjMsIDIwMiwgMjIzLCA4OSwgMjQ0LCAyNCwgMjQxLCAyMTIsIDI1MSwgNDIsIAotICAgIDgzLCA0MiwgMjI1LCAxNDEsIDIzNSwgMjM5LCA4MywgNDYsIDIyNSwgMTQxLCAyMzUsIDIzOSwgNjcsIDQyLCAyMjUsIDE0MSwgCi0gICAgMjM1LCAyMzksIDY3LCAxMTQsIDIyNSwgMTQxLCAyMzUsIDIzOSwgNjcsIDQ2LCAyMjUsIDE0MSwgMjM1LCAyMzksIDY3LCAKLSAgICAxMTksIDIyNSwgMTQxLCAyMzUsIDIzOSwgMjIwLCAyOSwgMjQsIDI0OSwgNjksIDI1MCwgMTUyLCA1MiwgMjI0LCA2MiwgNTIsIAotICAgIDI1MSwgMTYyLCA1MiwgMjUwLCAyMTEsIDI1NCwgMTMsIDIyNywgMTIsIDI0OSwgNzAsIDI1MCwgNDgsIDIyMywgMTkwLCAKLSAgICAyNDksIDcxLCA2NSwgMjMyLCAxNzMsIDI0OSwgNzEsIDY1LCAyMzUsIDExNywgMjE5LCA5NiwgMjQsIDI0OSwgNzYsIDI0NCwgCi0gICAgMTM2LCA4NywgMjU0LCAxNTMsIDIyMSwgMTIsIDI0MiwgNSwgMjQsIDIyMCwgMTE1LCAyMjYsIDk1LCA4NywgMjEyLCAyNDUsIAotICAgIDIxMywgNTgsIDIxNiwgMTczLCAzMSwgMjQxLCAyMDcsIDIxNiwgMTczLCAzMSwgMjMzLCAxMzEsIDIxNiwgMTczLCAzMSwgCi0gICAgMjQ0LCA2NSwgMjE2LCAxNzMsIDMxLCAyMTcsIDg3LCAyMTYsIDE3MywgMzEsIDIxMywgMjI0LCAyMTYsIDE3MywgMzEsIAotICAgIDIxNCwgMjQsIDIxNiwgMTczLCAzMSwgMjMwLCAxODUsIDIxNiwgMTczLCAzMSwgMjQ1LCAxNzksIDIxMywgMjQyLCA2NSwgCi0gICAgMjQ3LCAyMjYsIDY3LCAyNDMsIDIwOSwgMjQ0LCAxNTgsIDY3LCAyMjAsIDIsIDI0NCwgMTU4LCA4MywgMjIwLCAyLCAyNDQsIAotICAgIDE1OCwgNjcsIDIxOCwgMjM5LCAyLCAyMjQsIDI1LCAyNDQsIDYxLCAyMjQsIDE2NywgMjMwLCAxOTgsIDIzMywgMTAzLCAKLSAgICAyMjQsIDE2NywgMjMwLCAxOTgsIDIzMSwgMTE4LCAyNDQsIDEwNywgNTIsIDI0NSwgMTc5LCAyMzEsIDI1MywgNTIsIDIzNSwgCi0gICAgNDEsIDIyMiwgMTM3LCAyMTUsIDExNiwgMjI5LCAxNzUsIDIyNSwgMTU0LCAyNTMsIDE4MywgMjE3LCAyNDcsIDI0MywgMjgsIAotICAgIDI1MCwgMTkxLCAyMzMsIDQzLCAyMTQsIDEzMSwgMjMzLCAxMCwgMjIyLCAxMTAsIDIyMiwgMTg4LCAyNTAsIDE4MCwgMjUzLCAKLSAgICAyMTIsIDIyNSwgMTg0LCA2NywgMjUwLCA1NCwgMjM0LCA4NywgNjcsIDI1MCwgNTQsIDIyNCwgMTU5LCA2NywgMjUwLCA1NCwgCi0gICAgMjIzLCA5NywgNjcsIDI1MCwgNTQsIDI1MSwgMTU0LCA2NywgMjUwLCA1NCwgMjM0LCAzOSwgNjcsIDI1MCwgNTQsIDIyNiwgCi0gICAgMTA1LCA4MywgMjUwLCA1NCwgMjM0LCA4NywgODMsIDI1MCwgNTQsIDIyNCwgMTU5LCA4MywgMjUwLCA1NCwgMjIzLCA5NywgCi0gICAgODMsIDI1MCwgNTQsIDI1MSwgMTU0LCA4MywgMjUwLCA1NCwgMjM0LCAzOSwgODMsIDI1MCwgNTQsIDIyNiwgMTA1LCA4MywgCi0gICAgMjE5LCAyMDQsIDIxOCwgMjUxLCA2NywgMjQxLCAyMTIsIDIxOCwgMjUxLCA2NywgMjQ3LCAyMDEsIDIxOCwgMjUxLCA4MywgCi0gICAgMjQ5LCAxODIsIDIxOCwgMjUxLCA2NywgMjE5LCAyMDQsIDIxOCwgMjUxLCA4MywgMjQxLCAyMTIsIDIxOCwgMjUxLCA4MywgCi0gICAgMjQ3LCAyMDEsIDIxOCwgMjUxLCA2NywgMjQ5LCAxODIsIDIxOCwgMjUxLCAyNDAsIDIzMCwgMjE5LCAxNzAsIDIyNCwgMTY3LCAKLSAgICAyMjgsIDE1OCwgMjQ1LCAxNDYsIDIyOCwgMTU4LCAyNTEsIDI0OSwgMjQ1LCAxNDYsIDIyOCwgMTUzLCAyNTEsIDI0OSwgCi0gICAgMjIwLCA0NiwgMjI4LCAxNTMsIDIzMCwgMTI3LCAyNDQsIDM1LCA1MiwgMjMwLCAxMjcsIDIzMCwgOSwgNTIsIDIzMCwgMTI3LCAKLSAgICAyMjAsIDI1NSwgNTIsIDIxMywgMjUwLCAxNzUsIDI0OSwgNzAsIDI0NSwgMTc2LCAxNzUsIDI0OSwgNzAsIDIxNSwgMTQyLCAKLSAgICAyMjQsIDUsIDg3LCAyMjQsIDUsIDE2LCAzMSwgMjE2LCAxNCwgMjI1LCAxNjYsIDIyNCwgNSwgMTYsIDMxLCAyMTYsIDEzLCAKLSAgICAyMjUsIDE2NiwgMjI0LCA1LCAxNiwgMzEsIDIxNiwgMTIsIDIyNSwgMTY2LCAyMjQsIDUsIDE2LCAzMSwgMjE2LCAxMSwgCi0gICAgMjI1LCAxNjYsIDIyNCwgNSwgMTYsIDMxLCAyMTYsIDEwLCAyMjUsIDE2NiwgMjI0LCA1LCAxNiwgMzEsIDIxNiwgOSwgMjI1LCAKLSAgICAxNjYsIDIyNCwgNSwgMTYsIDMxLCAyMTYsIDgsIDIyNSwgMTY2LCAyMjQsIDUsIDE2LCAzMSwgMjQzLCAyNiwgMjMxLCAyMDEsIAotICAgIDgzLCAyMTUsIDE0MiwgMjI0LCA1LCA4NywgMjI0LCA2LCAyMjYsIDE0OCwgODcsIDIyNiwgMTI0LCAyMjYsIDE0OCwgODcsIAotICAgIDIyNiwgNDksIDIyNiwgMTQ4LCA1MiwgMjEzLCAyNDAsIDg3LCAyNDcsIDE5MywgMjQ0LCAxNTcsIDI0NywgMTkzLCAyNDQsIAotICAgIDE1NiwgMjQ3LCAxOTMsIDI0NCwgMTU1LCAyNDcsIDE5MywgMjQ0LCAxNTQsIDI0NywgMTkzLCAyNDQsIDE1MywgMjQ3LCAKLSAgICAxOTMsIDI0NCwgMTUyLCA2NywgMjQ5LCAyMjksIDIsIDYyLCAyMjMsIDE0OCwgNjcsIDI0OSwgMjI5LCAyLCAxMTcsIDI0NywgCi0gICAgNzIsIDgzLCAyNDksIDIyOSwgMiwgNjcsIDYyLCAyMjMsIDE0OCwgODMsIDI0OSwgMjI5LCAyLCAxMTcsIDY3LCAyNDcsIDcyLCAKLSAgICAyMzAsIDIxMiwgMzEsIDIxMywgNTgsIDIzMCwgMjEyLCAzMSwgMjEyLCAyNDQsIDI0NywgMTc2LCAzMSwgMjQyLCAxMDgsIAotICAgIDIxMywgNTgsIDI0NywgMTc2LCAzMSwgMjMzLCAzNywgMjEyLCAyNDQsIDI0NywgMTc2LCAzMSwgMjMzLCAzNywgMjEzLCA1OCwgCi0gICAgMjQ3LCAxNzYsIDMxLCAyNDIsIDEwOCwgMjEyLCAyNDQsIDY3LCAyNDQsIDQyLCA4MywgMjQ0LCA0MiwgMjQyLCA1LCAyNCwgCi0gICAgMjI1LCAyMzYsIDI1NCwgMjksIDI0OSwgNjgsIDIxOCwgMTgwLCAyMTksIDEwMywgNjUsIDI1NCwgMTMxLCAyMjIsIDEyNCwgCi0gICAgMjU0LCA3NywgMjQ0LCAyMCwgMjQzLCAzNiwgMjE5LCAxMDMsIDY1LCAyNDEsIDE4NywgMjUzLCAxMTUsIDg3LCAyNDQsIDMxLCAKLSAgICAyMjYsIDI1MCwgNjcsIDIxOSwgOTUsIDEzMywgMjMyLCAyMzcsIDI0OSwgMTE0LCAyMjMsIDE0OCwgMTMzLCAyMzIsIDIzNywgCi0gICAgMjQ5LCAxMTQsIDIzMywgNzAsIDIxNCwgMzQsIDUyLCAxMjQsIDIxNCwgMTExLCA1MiwgMjQ2LCA2NCwgMjQ0LCAxMDcsIDUyLCAKLSAgICAyNDYsIDY0LCAyMzEsIDI1MywgNTIsIDIzNSwgMjAwLCAyNDQsIDEwNywgMjQsIDIzMSwgMjUzLCA1MiwgMjMxLCAyNTMsIAotICAgIDI0LCAyNDQsIDEwNywgNTIsIDIzMSwgMjUzLCAyLCAyMTksIDQ1LCA1MiwgMjMxLCAyNTMsIDIsIDIxOSwgNDUsIDI0LCAKLSAgICAyMzEsIDI1MywgMjQsIDI0NCwgMTA3LCA1MiwgNzEsIDIzMSwgMjUzLCAyLCAyMTksIDQ1LCA1MiwgMTk5LCAyMzEsIDI1MywgCi0gICAgMiwgMjE5LCA0NSwgNTIsIDIzMSwgMTQ3LCA2NywgMjQ5LCAyMjgsIDIzMSwgMTQ3LCA4MywgMjQ5LCAyMjgsIDIzMSwgMTQ3LCAKLSAgICAzLCA2NywgMjQ5LCAyMjgsIDIzMSwgMjE2LCA4NywgMjQ3LCAxMTksIDg3LCAyMTUsIDE0MCwgMjI2LCAxMjMsIDg3LCAyNDksIAotICAgIDE2OSwgMjQzLCAxOTYsIDIxNSwgMTEyLCAyMjksIDE3MCwgMjUwLCA5NSwgMjI2LCAxODgsIDIzNSwgNDcsIDIxNCwgMTYyLCAKLSAgICAyNTAsIDMwLCA4MywgMjMwLCAxOTksIDIzMiwgMjUzLCAyMjEsIDMzLCAyMjEsIDY3LCAyMjQsIDE1MCwgMjIxLCA1MSwgCi0gICAgMjE5LCAyMzksIDI1MiwgNzgsIDI1MiwgNDYsIDkxLCAyMzQsIDE0NCwgNjcsIDI0NiwgNDgsIDIzMSwgMjQ4LCA2NywgMjQ2LCAKLSAgICA0OCwgMjM0LCA4NywgODMsIDI0NiwgNDgsIDIzMSwgMjQ4LCA4MywgMjQ2LCA0OCwgMjM0LCA4NywgMjE5LCAyNDUsIDIxMywgCi0gICAgMjE2LCAyMTksIDI0OCwgMjE4LCAyMzksIDI1MSwgMjI3LCAyNDksIDE4NCwgMjI0LCA1MCwgODMsIDIxOSwgMjQ0LCAyMTcsIAotICAgIDg4LCAyNDksIDE4NSwgMjQsIDIyNCwgNTAsIDIxNiwgNTgsIDY3LCAyMjAsIDE4MiwgMjI1LCAyMzMsIDIxNiwgNTgsIDgzLCAKLSAgICAyMjAsIDE4MiwgMjI1LCAyMzMsIDY3LCAyNDcsIDIwMSwgMjM1LCAyNTIsIDIxOSwgMTY2LCAyNDksIDY1LCAyMzMsIDExNSwgCi0gICAgMjQ3LCAxNDUsIDI1MCwgMTc2LCAyMjcsIDMyLCAyMjUsIDIzNiwgMjUwLCAxNzcsIDIyMCwgMTYsIDI0MSwgMTk2LCAyLCAKLSAgICA2NywgMjQ5LCA3MCwgMzYsIDI0OSwgNjUsIDIzMywgMTE1LCAyNTAsIDg4LCAyMjgsIDE4NiwgMjQ1LCA4MywgMjU0LCA1MCwgCi0gICAgMjI3LCA1NywgNDIsIDIxNCwgMTAsIDIxNiwgMjA4LCA4MywgMjE2LCAyMSwgNDIsIDIxNCwgMTAsIDIxNiwgMjA4LCA2NywgCi0gICAgMjE2LCAyMSwgNDIsIDIxNCwgMTAsIDIxNiwgMjA4LCA4MywgNDIsIDIzMywgMTE2LCAyMzEsIDExNywgNjcsIDQyLCAyMzMsIAotICAgIDExNiwgMjMxLCAxMTcsIDI0NiwgNDQsIDIyMCwgMTAsIDUyLCAxMDcsIDY3LCAyNDYsIDU5LCAyMTYsIDE4MywgNDIsIDI0OSwgCi0gICAgMTkzLCAyNDUsIDgzLCA5MSwgMjIyLCAxNjksIDI0NCwgMTQzLCAyNDcsIDIwNywgMjM1LCAyNTIsIDY3LCAyNDksIDIyOSwgCi0gICAgMjM1LCAyNTIsIDgzLCAyMTksIDE2NiwgODMsIDIxNiwgMTUwLCAyMjMsIDIxMiwgNDIsIDI0NSwgODIsIDIyMywgMjEyLCAKLSAgICA0MiwgMjQ1LCA4MSwgMjUzLCAxMjcsIDE2LCAzMSwgMjE1LCAxMTYsIDEwNywgMjQ5LCAyMjksIDIsIDIxOSwgNDUsIDI0LCAKLSAgICAxMTcsIDE3NiwgNDksIDIyNiwgNjQsIDIyMywgMTQ1LCAyMzUsIDIwMiwgMjI2LCA2NCwgMjMzLCA2NywgMjM1LCAyMDIsIAotICAgIDIyNiwgNjQsIDIzNSwgMTkxLCAyMjYsIDY0LCA4MywgMjQ5LCA3MSwgMjI3LCA2MywgMjIwLCAyMDksIDIyMCwgMTk3LCAKLSAgICAyMjAsIDE1NCwgMjQ5LCAyNTQsIDI1MCwgMTU4LCAyNDEsIDE0MywgMjIwLCA1NCwgMjQzLCAzNywgMjEzLCAyMTYsIDI0MCwgCi0gICAgMjEwLCAyNDMsIDM3LCAyLCAyNDEsIDI1MSwgMjMxLCAyMzYsIDE2LCAzMSwgMjMzLCAxLCAyMzAsIDE4NSwgMjE1LCAxNjUsIAotICAgIDIyNywgNjMsIDI0MiwgMTAwLCAyNDMsIDIzOCwgMjQ0LCA0MywgMjM1LCAyNTIsIDI0MSwgNDUsIDI0NCwgOTgsIDIyMiwgCi0gICAgMTg1LCA0MSwgMjQzLCAyMzcsIDI0OSwgOTgsIDIyMCwgMzIsIDI0MCwgMTA1LCAyMjAsIDM1LCAyMjYsIDQ0LCAyLCAyNTIsIAotICAgIDc4LCAyMTcsIDE5NSwgMjM1LCAxMzEsIDI1MiwgNjUsIDg3LCAyNDEsIDIxNSwgMjQyLCAxMTAsIDg3LCAyNDMsIDIwMywgCi0gICAgMjI1LCAyOCwgMjQ5LCA0NCwgMjI3LCA2MywgODMsIDIxOSwgMTY2LCA2NywgMjQ0LCA0MywgMiwgMTk5LCAyMzEsIDM3LCAKLSAgICA4MywgMjE5LCA0NiwgMjE1LCAxMzEsIDI1MSwgMTQwLCAyMjIsIDExMiwgODMsIDIyMiwgMTEyLCAyMzIsIDE2MywgMjUxLCAKLSAgICAxNDAsIDIyMiwgMTEyLCA2NywgMjIyLCAxMTIsIDY3LCAxMDcsIDI1MCwgNjYsIDc3LCAyMTcsIDIxMCwgMjMyLCAyMDYsIAotICAgIDUyLCAyMTgsIDQsIDI0NiwgNDMsIDI1NCwgOTksIDI0NSwgNzgsIDIyNCwgNDgsIDI0NCwgNTQsIDIyNCwgNDgsIDI0MSwgCi0gICAgMjU0LCAyMTQsIDE1MiwgMjQxLCAyNTQsIDIxMywgMTg2LCAyNDEsIDI1NCwgMjMyLCAxNjMsIDQ2LCAyMjYsIDczLCAyMjYsIAotICAgIDczLCAyMTUsIDEzMSwgNDYsIDIyNiwgNzMsIDY3LCAyMjksIDYxLCA4MywgMjI5LCA2MSwgMjUwLCA2NiwgNzcsIDEwNywgCi0gICAgMjUwLCA2NiwgNzcsIDIzMCwgMTU0LCAyMTMsIDE2NiwgMTA3LCAyMzAsIDE1NCwgMjEzLCAxNjYsIDI1MiwgNzUsIDIxMywgCi0gICAgMTY2LCAxMDcsIDI1MiwgNzUsIDIxMywgMTY2LCAyMjYsIDI1MCwgMjUsIDI0OSwgNzAsIDEwNywgMjUsIDI0OSwgNzAsIAotICAgIDIyNywgNDAsIDI1MCwgMTA5LCAyNDksIDcwLCAxMDcsIDIyNywgNDAsIDI1MCwgMTA5LCAyNDksIDcwLCA3LCAyNDksIDcwLCAKLSAgICAyMjEsIDEzLCA2NywgNywgMjQ5LCA3MCwgMjI2LCAyNTAsIDcsIDI0OSwgNzAsIDIzMSwgMjUwLCAyNDksIDcwLCAyMTksIAotICAgIDk2LCA2NSwgMjQ4LCA5NSwgMjQzLCAyMzcsIDIxNywgMjIzLCAyNTMsIDEzMiwgMjQzLCAyMzcsIDI1MiwgNzYsIDI1MywgCi0gICAgMTMyLCAxMDcsIDI0MywgMjM3LCAyNTIsIDc2LCAyNTMsIDEzMiwgMjQzLCAyMzcsIDI0OSwgMTgwLCAyNTMsIDEzMiwgODMsIAotICAgIDI0MywgMjM3LCAyMjUsIDE0MywgMjE5LCA5NSwgNjcsIDI0MywgMjM3LCAyMjUsIDE0MywgMjE5LCA5NSwgMjE5LCAxOTksIAotICAgIDIxOSwgNTEsIDIyNiwgMjUwLCA2NywgMjE5LCA5NSwgMzYsIDY3LCAyMTksIDk1LCAyMjcsIDQwLCAyNTAsIDEwOSwgODMsIAotICAgIDIxOSwgOTUsIDgzLCAyNTAsIDEwOSwgNjcsIDIxOSwgOTUsIDIyNiwgMjUwLCA4MywgMjE5LCA5NSwgMTA3LCAyMjYsIDI1MCwgCi0gICAgODMsIDIxOSwgOTUsIDIyNSwgMTkyLCAyMTksIDk1LCAyMjEsIDEzLCA2NywgMjE5LCA5NSwgMTA3LCAyNTMsIDEzMiwgMjI3LCAKLSAgICA0MCwgMjUwLCAxMDksIDI1MywgMTMyLCAyNDUsIDE1MCwgMjE5LCAxNzYsIDI1MywgMTMyLCAyNDUsIDE1MCwgMjI1LCAxNDMsIAotICAgIDgzLCAyMTksIDk1LCAyNDUsIDE1MCwgMjI1LCAxNDMsIDIyNSwgMTkyLCAyMTksIDk1LCAyMjAsIDUzLCAyMjUsIDE0MywgCi0gICAgODMsIDIxOSwgOTUsIDI0NSwgMTUwLCAyMjUsIDE0MywgMjI0LCA3LCA4MywgMjE5LCA5NSwgMTA3LCAyNDUsIDE1MCwgMjI1LCAKLSAgICAxNDMsIDIyNCwgNywgODMsIDIxOSwgOTUsIDIxNiwgNDIsIDIyNSwgMTQzLCA4MywgMjE5LCA5NSwgMjIwLCA0OCwgMjI1LCAKLSAgICAxNDMsIDI1MywgMTMyLCAyMTcsIDIyMywgMjUzLCAxMzIsIDIyNywgNDAsIDI1MCwgMTA5LCAyMTcsIDIyMywgMjUzLCAxMzIsIAotICAgIDEwNywgMjE3LCAyMjMsIDI1MywgMTMyLCAyMjAsIDUzLCAyMjYsIDMzLCA4MywgMjQsIDY3LCAyNDQsIDIzLCA4MywgMjQ0LCAKLSAgICAyMywgNjcsIDI0NCwgMjMsIDI0NSwgMTUwLCAyMjYsIDMzLCAyMjYsIDI1MCwgODMsIDI0NCwgMjMsIDM2LCAyMjcsIDQwLCAKLSAgICAyNTAsIDEwOSwgMjQ1LCAxNTAsIDIyNSwgMTQzLCAyMTksIDk1LCAxMDcsIDIxNywgMjIzLCAyMjUsIDE5MiwgMjUzLCAxMzIsIAotICAgIDIxOSwgMjQ2LCAyMTcsIDU5LCAyMTYsIDE3NiwgMjE5LCAyNDYsIDEwNywgMjUwLCA1MSwgMjE5LCAyNDYsIDIxOSwgMjAxLCAKLSAgICAxMDcsIDIxOSwgMjAxLCAyNTIsIDc2LCAyNTMsIDEzMiwgMjQ1LCAxNTAsIDIxNywgMjIzLCAyMjUsIDU1LCAyNTMsIDEzMiwgCi0gICAgMTA3LCAyNDUsIDE1MCwgMjE3LCAyMjMsIDIyNSwgNTUsIDI1MywgMTMyLCAyNDksIDcxLCA3NywgMjIxLCAxMywgNjcsIAotICAgIDI0OSwgMjI4LCAxNDYsIDkxLCAyNDksIDcxLCA3NywgMjMyLCAxNjMsIDQ2LCAyNDYsIDQxLCA2NywgMjE5LCAxNjYsIDIxNSwgCi0gICAgMTMxLCA0NiwgMjQ2LCA0MSwgNjcsIDIxOSwgMTY2LCAyMzIsIDE2MywgNDYsIDIyMSwgMTMsIDY3LCAyMTksIDE2NiwgMjE1LCAKLSAgICAxMzEsIDQ2LCAyMjEsIDEzLCA2NywgMjE5LCAxNjYsIDgzLCAyMjQsIDE1OCwgMTUyLCAyMjcsIDE0LCA2NywgMjI0LCAxNTgsIAotICAgIDE1MiwgMjI3LCAxNCwgNjcsIDI0NCwgMjU0LCAxNTIsIDIyNywgMTQsIDgzLCAyNDcsIDIwMSwgMjMwLCAyNTEsIDY3LCAKLSAgICAyMTMsIDE2NiwgMTA3LCAyNDQsIDI1NCwgMTUyLCA4NywgMTc3LCA3MSwgMTM0LCAyMzEsIDE0NywgNzEsIDEzNCwgMTA3LCAKLSAgICA3MSwgMTM0LCAxMDcsIDIyMCwgODEsIDIxNiwgNTgsIDI0OSwgMTU4LCAyMjQsIDE0MywgMTUyLCAyMjcsIDE0LCAxMDcsIAotICAgIDIyMCwgODEsIDI0OSwgMTU4LCAyMjQsIDE0MywgMTUyLCAyMjcsIDE0LCAxMDcsIDUxLCAyMTYsIDU4LCAyNDksIDE1OCwgCi0gICAgMjI0LCAxNDMsIDE1MiwgMjI3LCAxNCwgMTA3LCA1MSwgMjQ5LCAxNTgsIDIyNCwgMTQzLCAxNTIsIDIyNywgMTQsIDEwNywgCi0gICAgMTE1LCAyMjAsIDgxLCAyNDksIDE1OCwgMjI0LCAxNDMsIDE1MiwgMjI3LCAxNCwgMTA3LCAxMTUsIDUxLCAyNDksIDE1OCwgCi0gICAgMjI0LCAxNDMsIDE1MiwgMjI3LCAxNCwgMjQ5LCAzMywgMjE5LCA4MCwgMjI2LCAxNDMsIDUsIDIyNywgMTQsIDEwNywgMjQ0LCAKLSAgICAyNTQsIDE1MiwgMjI3LCAxNCwgMTA3LCAyNDEsIDIxMiwgMjQ0LCAyNTQsIDE1MiwgMjI3LCAxNCwgMTA3LCA4MywgMjQxLCAKLSAgICAyMTEsIDIyMywgODksIDEwNywgODMsIDI0MSwgMjEyLCAyNTEsIDQyLCAyNDQsIDI0LCAyNDEsIDIxMSwgMjIzLCA4OSwgCi0gICAgMjQ0LCAyNCwgMjQxLCAyMTIsIDI1MSwgNDIsIDIzMSwgMTQ3LCA0MiwgMjI2LCAxMzIsIDIyNywgMTQsIDIzMSwgMTQ3LCAKLSAgICA0NiwgMjI2LCAxMzIsIDIyNywgMTQsIDIzMSwgMTQ3LCAyNDQsIDMyLCA0MiwgMjI2LCAxMzIsIDIyNywgMTQsIDIzMSwgCi0gICAgMTQ3LCAyNDQsIDMyLCA0NiwgMjI2LCAxMzIsIDIyNywgMTQsIDIzMSwgMTQ3LCAyMzMsIDY2LCAyNTQsIDE5LCAyNTEsIDg1LCAKLSAgICAyMjcsIDE0LCAyMzEsIDE0NywgMjIzLCAxNDQsIDI1NCwgMTksIDI1MSwgODUsIDIyNywgMTQsIDEwNywgMjMzLCA2NiwgCi0gICAgMjU0LCAxOSwgMjI0LCAxNDMsIDE1MiwgMjI3LCAxNCwgMTA3LCAyMjMsIDE0NCwgMjU0LCAxOSwgMjI0LCAxNDMsIDE1MiwgCi0gICAgMjI3LCAxNCwgMTA3LCAyMzMsIDY2LCAyNTQsIDE5LCAyNTEsIDg1LCAyMjcsIDE0LCAxMDcsIDIyMywgMTQ0LCAyNTQsIDE5LCAKLSAgICAyNTEsIDg1LCAyMjcsIDE0LCAxNzcsIDQyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODUsIDIyNywgMTQsIDE3NywgNDYsIAotICAgIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NSwgMjI3LCAxNCwgMjMxLCAxNDcsIDQyLCAyNDksIDQwLCAyNTEsIDg1LCAKLSAgICAyMjcsIDE0LCAyMzEsIDE0NywgNDYsIDI0OSwgNDAsIDI1MSwgODUsIDIyNywgMTQsIDI0NywgMTU2LCAxNDYsIDM2LCAyMSwgCi0gICAgMTE2LCAyNDcsIDE1NiwgMTQ2LCAzNiwgMjEsIDEwOSwgMjQ3LCAxNTYsIDE0NiwgMzYsIDIxLCAxNjYsIDI0NywgMTU2LCAKLSAgICAxNDYsIDM2LCAyMSwgMTYzLCAyNDcsIDE1NiwgMTQ2LCAzNiwgMjEsIDE4MCwgMjQ3LCAxNTYsIDE0NiwgMzYsIDIxLCAxODksIAotICAgIDI0NywgMTU2LCAxNDYsIDM2LCAyMSwgMTk4LCAyNDcsIDE1NiwgMTQ2LCAzNiwgMjEsIDE5NSwgMjQ3LCAxNTYsIDE0NiwgCi0gICAgMzYsIDIxLCAyMDAsIDI0NywgMTU2LCAxNDYsIDM2LCA1MCwgMjE3LCAyMDAsIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAxMTYsIAotICAgIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAxMDksIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAxNjYsIDI0NywgMTU2LCAzNiwgMzUsIAotICAgIDIxLCAxNjMsIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAxODAsIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAxODksIDI0NywgMTU2LCAKLSAgICAzNiwgMzUsIDIxLCAxOTgsIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAxOTUsIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAyMDAsIAotICAgIDI0NywgMTU2LCAzNiwgMzUsIDUwLCAyMTcsIDIwMCwgMjQ3LCAxNTYsIDE0NiwgMzYsIDM1LCAyMSwgMTE2LCAyNDcsIDE1NiwgCi0gICAgMTQ2LCAzNiwgMzUsIDIxLCAxMDksIDI0NywgMTU2LCAxNDYsIDM2LCAzNSwgMjEsIDE2NiwgMjQ3LCAxNTYsIDE0NiwgMzYsIAotICAgIDM1LCAyMSwgMTYzLCAyNDcsIDE1NiwgMTQ2LCAzNiwgMzUsIDIxLCAxODAsIDI0NywgMTU2LCAxNDYsIDM2LCAzNSwgMjEsIAotICAgIDE4OSwgMjQ3LCAxNTYsIDE0NiwgMzYsIDM1LCAyMSwgMTk4LCAyNDcsIDE1NiwgMTQ2LCAzNiwgMzUsIDIxLCAxOTUsIDI0NywgCi0gICAgMTU2LCAxNDYsIDM2LCAzNSwgMjEsIDIwMCwgMjQ3LCAxNTYsIDE0NiwgMzYsIDM1LCA1MCwgMjE3LCAyMDAsIDEwNywgMjEzLCAKLSAgICAyMzEsIDk1LCA2OCwgMTA3LCA5NCwgNTIsIDEwNywgMjMwLCAyNTEsIDUyLCAxMDcsIDI0NywgMTIxLCA1MiwgMTA3LCAyMTksIAotICAgIDIxNSwgMjQ1LCAxNzYsIDY4LCAxMDcsIDk1LCA2OCwgMTA3LCAyMjgsIDE2NywgMjQ1LCAxNzYsIDY4LCAyNDYsIDUyLCAKLSAgICAyMjUsIDE0NSwgOTUsIDY4LCAxMDcsIDIyMywgODYsIDk1LCA2OCwgMjE2LCAxODIsIDk1LCA2OCwgMTA3LCAyMTYsIDE4MiwgCi0gICAgOTUsIDY4LCAyNDgsIDEwMCwgMjE2LCAxODIsIDk1LCA2OCwgMTA3LCAyNDgsIDEwMCwgMjE2LCAxODIsIDk1LCA2OCwgODMsIAotICAgIDk1LCA2OCwgMjE3LCA5NywgMjE2LCAyMjUsIDk1LCAyNTMsIDE2NCwgMjE3LCA5NywgMjUxLCA5OSwgOTUsIDI1MywgMTY0LCAKLSAgICA4MywgOTUsIDI1MywgMTY0LCAxMDcsIDgzLCAyNDksIDMzLCAyNDYsIDU4LCAyNCwgOTUsIDY4LCAxMDcsIDgzLCAyNDksIAotICAgIDMzLCAyMTUsIDEyNCwgMjQsIDk1LCA2OCwgMjE5LCAxNjMsIDgzLCA5NSwgNjgsIDEwNywgMjQ5LCAxNDUsIDgzLCA5NSwgCi0gICAgNjgsIDIyMywgMTQzLCA2NywgOTUsIDY4LCAyMzMsIDY1LCA2NywgOTUsIDY4LCAyNTIsIDEwMCwgMjIxLCAxMywgNjcsIDk1LCAKLSAgICA2OCwgMjQzLCAyMTEsIDIyMSwgMTMsIDY3LCA5NSwgNjgsIDEwNywgMjMyLCAxNjMsIDIyMywgMTQyLCA2NywgOTUsIDY4LCAKLSAgICAxMDcsIDIxNSwgMTMxLCAyMjMsIDE0MiwgNjcsIDk1LCA2OCwgMjI4LCAxNjAsIDIzMiwgMTYzLCAyMjMsIDE0MiwgNjcsIAotICAgIDk1LCA2OCwgMjQ5LCA0MCwgMjMyLCAxNzcsIDIyOCwgMTYwLCAyMTUsIDEzMSwgMjIzLCAxNDIsIDY3LCA5NSwgNjgsIDM2LCAKLSAgICAxMDcsIDY3LCA5NSwgNjgsIDIxMywgMjM3LCA5NSwgNjgsIDI1MSwgMTQzLCAyMTksIDIxNSwgMjQ1LCAxNzYsIDY4LCAyNTEsIAotICAgIDE0MywgOTUsIDY4LCAyNTEsIDE0MywgMjI4LCAxNjcsIDI0NSwgMTc2LCA2OCwgMTA3LCAyNTEsIDE0MywgMjE5LCAyMTUsIAotICAgIDI0NSwgMTc2LCA2OCwgMTA3LCAyNTEsIDE0MywgOTUsIDY4LCAxMDcsIDI1MSwgMTQzLCAyMjgsIDE2NywgMjQ1LCAxNzYsIAotICAgIDY4LCAyMTcsIDIyNSwgOTUsIDY4LCAxMDcsIDIxNywgMjI0LCA5NSwgNjgsIDIxNCwgMiwgOTUsIDY4LCAxMDcsIDIxNCwgMiwgCi0gICAgOTUsIDY4LCAyMjcsIDM3LCA5NSwgNjgsIDUxLCAyNDksIDQwLCAyMzIsIDE3NywgMTMzLCAyNDcsIDE2NiwgMjU0LCAxOCwgCi0gICAgNjcsIDIxNiwgMTg0LCAyNDksIDEyNiwgMywgNjcsIDIxNiwgMTgzLCAyMjYsIDQ3LCAyMjcsIDQwLCAyMTksIDgsIDIyNywgCi0gICAgNDAsIDIxOCwgMjIxLCA0MiwgMjIzLCAzLCAyNTIsIDkxLCAyNDgsIDExLCA0NiwgMjIzLCAzLCAyNTIsIDkxLCAyNDgsIDExLCAKLSAgICAxNjcsIDIsIDYyLCAyMzUsIDIxMiwgMjIzLCAyMDMsIDIxOSwgMjMyLCAyMjUsIDgxLCAyMTksIDgsIDIxOCwgMjIyLCAyMjUsIAotICAgIDgxLCAyMTksIDIzMSwgNzEsIDI1MiwgNjAsIDIsIDE5OSwgOTAsIDE4NCwgMjQ3LCAxMjAsIDkxLCAyMzIsIDE5OSwgMjU0LCAKLSAgICAyNywgOTEsIDIzMiwgMTk5LCAyMjcsIDI0LCA2NywgMjQ3LCAyMDEsIDIsIDI1MCwgMTA3LCAyNDcsIDc0LCAyNCwgMiwgCi0gICAgMjQ3LCA3NCwgMjQ1LCAxMjcsIDY1LCAyMjcsIDM1LCAyMTUsIDEyMywgMjMyLCAxNjMsIDQ2LCAyNDksIDEwMCwgMiwgMjQ3LCAKLSAgICA3NCwgMjE1LCAxMzEsIDQyLCAyNDksIDEwMCwgMiwgMjQ3LCA3NCwgNDIsIDIyNiwgMjUyLCAyMzUsIDY5LCA0NiwgMjI2LCAKLSAgICAyNTIsIDIzNSwgNjksIDI0MywgMjAwLCAyMjYsIDI1MiwgMjM1LCA2OSwgMjMzLCAxMDgsIDExNCwgMjE4LCAzNiwgMjMzLCAKLSAgICAxMDgsIDExOSwgMjE4LCAzNiwgNDIsIDI0LCA0NiwgNTEsIDIxNiwgNTcsIDQyLCAyNCwgNDYsIDIxOCwgMzYsIDQyLCAyMzAsIAotICAgIDE1NywgMTg0LCA0NiwgMjE4LCAzNiwgMTg0LCA0MiwgMjE4LCAzNiwgMTE0LCAyMTgsIDM3LCAyLCAyNDksIDIyOSwgNDksIAotICAgIDIzMiwgMTYwLCAyNDcsIDEyNSwgMjUxLCA3LCAxOTksIDIyMywgNDQsIDY3LCAyNDksIDE0NCwgMjQ3LCAyMDAsIDY3LCAKLSAgICAyNDksIDE0NCwgMjQ3LCAyMDEsIDIsIDEzMiwgMjE3LCA2OCwgNjcsIDI0OSwgMTQ0LCAyNDcsIDIwMSwgMiwgOTUsIDIxNywgCi0gICAgNjgsIDY3LCA0MSwgMiwgMTMyLCAyMTcsIDY4LCA2NywgNDEsIDIsIDk1LCAyMTcsIDY4LCAxNCwgNDIsIDY3LCA0MSwgMTI1LCAKLSAgICAxNCwgNDYsIDY3LCA0MSwgMTI1LCAxNCwgNDIsIDI1NCwgMTksIDEyNSwgMTQsIDQ2LCAyNTQsIDE5LCAxMjUsIDE0LCA0MiwgCi0gICAgNTEsIDI1NCwgMTksIDEyNSwgMTQsIDQ2LCA1MSwgMjU0LCAxOSwgMTI1LCAxNCwgNDIsIDY3LCAyMTYsIDIxOSwgMjIwLCAKLSAgICAyMzMsIDEyNSwgMTQsIDQ2LCA2NywgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIDE0LCA0MiwgMjQ0LCAzMiwgMjI2LCAxMzEsIAotICAgIDE0LCA0NiwgMjQ0LCAzMiwgMjI2LCAxMzEsIDIxNSwgMTI0LCAyMjQsIDE2OSwgNjgsIDI0NiwgNTgsIDIyNCwgMTY5LCA2OCwgCi0gICAgMjUzLCAyNTUsIDI0MywgNzQsIDI0OSwgMjI5LCA2OCwgMjQ5LCAxOTUsIDI0MywgNzQsIDI0OSwgMjI5LCA2OCwgNDYsIDc2LCAKLSAgICAyLCAzNiwgMjI1LCAxNTYsIDE4NCwgMTMyLCA2OCwgMTg0LCA5NSwgNjgsIDE4NCwgNDIsIDQ2LCA2OCwgMTg0LCAxMzIsIAotICAgIDUxLCA2OCwgMTg0LCA5NSwgNTEsIDY4LCAxODQsIDQyLCA0NiwgNTEsIDY4LCAxODQsIDEzMiwgNzYsIDI0MywgMjEzLCAKLSAgICAxMzQsIDE4NCwgOTUsIDc2LCAyNDMsIDIxMywgMTM0LCAxODQsIDEzMiwgNTEsIDc2LCAyNDMsIDIxMywgMTM0LCAxODQsIAotICAgIDk1LCA1MSwgNzYsIDI0MywgMjEzLCAxMzQsIDE4NCwgOTUsIDIxOSwgMTYyLCA2OCwgNDQsIDQ1LCAyNTEsIDEzOCwgNDQsIAotICAgIDQ1LCAyNDcsIDcxLCA0NCwgNDUsIDI0NiwgMTk5LCA0NCwgNDUsIDI0NywgNzAsIDQ0LCA0NSwgMjQ2LCAxMzUsIDQ0LCA0NSwgCi0gICAgMjQ3LCA2LCA0NCwgNDUsIDI0NiwgMTk4LCA0NCwgNDUsIDI0NywgNjksIDQ0LCA0NSwgMjQ2LCAxMDMsIDQ0LCA0NSwgMjQ2LCAKLSAgICAyMzAsIDQ0LCA0NSwgMjQ2LCAxNjYsIDQ0LCA0NSwgMjQ3LCAzNywgNDQsIDQ1LCAyNDYsIDEzNCwgNDQsIDQ1LCAyNDcsIDUsIAotICAgIDQ0LCA0NSwgMjQ2LCAxOTcsIDQ0LCA0NSwgMjQ3LCA2OCwgNDQsIDQ1LCAyNDYsIDg3LCA0NCwgNDUsIDI0NiwgMjE0LCA0NCwgCi0gICAgNDUsIDI0NiwgMTUwLCA0NCwgNDUsIDI0NywgMjEsIDQ0LCA0NSwgMjQ2LCAxMTgsIDQ0LCA0NSwgMjQ2LCAyNDUsIDQ0LCAKLSAgICA0NSwgMjQ2LCAxODEsIDQ0LCA0NSwgMjQ3LCA1MiwgNDQsIDQ1LCAyNDYsIDEwMiwgNDQsIDQ1LCAyNDYsIDIyOSwgNDQsIAotICAgIDQ1LCAyNDYsIDE2NSwgNDQsIDQ1LCAyNDcsIDM2LCA0NCwgNDUsIDI0NiwgMTMzLCA0NCwgNDUsIDI0NywgNCwgNDQsIDQ1LCAKLSAgICAyNDYsIDE5NiwgNDQsIDQ1LCAyNDcsIDY3LCA0NCwgNDUsIDI0NiwgNzksIDQ0LCA0NSwgMjQ2LCAyMDYsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxNDIsIDQ0LCA0NSwgMjQ3LCAxMywgNDQsIDQ1LCAyNDYsIDExMCwgNDQsIDQ1LCAyNDYsIDIzNywgNDQsIDQ1LCAKLSAgICAyNDYsIDE3MywgNDQsIDQ1LCAyNDcsIDQ0LCA0NCwgNDUsIDI0NiwgOTQsIDQ0LCA0NSwgMjQ2LCAyMjEsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxNTcsIDQ0LCA0NSwgMjQ3LCAyOCwgNDQsIDQ1LCAyNDYsIDEyNSwgNDQsIDQ1LCAyNDYsIDI1MiwgNDQsIDQ1LCAKLSAgICAyNDYsIDE4OCwgNDQsIDQ1LCAyNDcsIDU5LCA0NCwgNDUsIDI0NiwgODYsIDQ0LCA0NSwgMjQ2LCAyMTMsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxNDksIDQ0LCA0NSwgMjQ3LCAyMCwgNDQsIDQ1LCAyNDYsIDExNywgNDQsIDQ1LCAyNDYsIDI0NCwgNDQsIDQ1LCAKLSAgICAyNDYsIDE4MCwgNDQsIDQ1LCAyNDcsIDUxLCA0NCwgNDUsIDI0NiwgMTAxLCA0NCwgNDUsIDI0NiwgMjI4LCA0NCwgNDUsIAotICAgIDI0NiwgMTY0LCA0NCwgNDUsIDI0NywgMzUsIDQ0LCA0NSwgMjQ2LCAxMzIsIDQ0LCA0NSwgMjQ3LCAzLCA0NCwgNDUsIDI0NiwgCi0gICAgMTk1LCA0NCwgNDUsIDI0NywgNjYsIDQ0LCA0NSwgMjQ2LCA3NSwgNDQsIDQ1LCAyNDYsIDIwMiwgNDQsIDQ1LCAyNDYsIAotICAgIDEzOCwgNDQsIDQ1LCAyNDcsIDksIDQ0LCA0NSwgMjQ2LCAxMDYsIDQ0LCA0NSwgMjQ2LCAyMzMsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNjksIDQ0LCA0NSwgMjQ3LCA0MCwgNDQsIDQ1LCAyNDYsIDkwLCA0NCwgNDUsIDI0NiwgMjE3LCA0NCwgNDUsIDI0NiwgCi0gICAgMTUzLCA0NCwgNDUsIDI0NywgMjQsIDQ0LCA0NSwgMjQ2LCAxMjEsIDQ0LCA0NSwgMjQ2LCAyNDgsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxODQsIDQ0LCA0NSwgMjQ3LCA1NSwgNDQsIDQ1LCAyNDYsIDgyLCA0NCwgNDUsIDI0NiwgMjA5LCA0NCwgNDUsIDI0NiwgCi0gICAgMTQ1LCA0NCwgNDUsIDI0NywgMTYsIDQ0LCA0NSwgMjQ2LCAxMTMsIDQ0LCA0NSwgMjQ2LCAyNDAsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNzYsIDQ0LCA0NSwgMjQ3LCA0NywgNDQsIDQ1LCAyNDYsIDk3LCA0NCwgNDUsIDI0NiwgMjI0LCA0NCwgNDUsIDI0NiwgCi0gICAgMTYwLCA0NCwgNDUsIDI0NywgMzEsIDQ0LCA0NSwgMjQ2LCAxMjgsIDQ0LCA0NSwgMjQ2LCAyNTUsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxOTEsIDQ0LCA0NSwgMjQ3LCA2MiwgNDQsIDQ1LCAyNDYsIDc4LCA0NCwgNDUsIDI0NiwgMjA1LCA0NCwgNDUsIDI0NiwgCi0gICAgMTQxLCA0NCwgNDUsIDI0NywgMTIsIDQ0LCA0NSwgMjQ2LCAxMDksIDQ0LCA0NSwgMjQ2LCAyMzYsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNzIsIDQ0LCA0NSwgMjQ3LCA0MywgNDQsIDQ1LCAyNDYsIDkzLCA0NCwgNDUsIDI0NiwgMjIwLCA0NCwgNDUsIDI0NiwgCi0gICAgMTU2LCA0NCwgNDUsIDI0NywgMjcsIDQ0LCA0NSwgMjQ2LCAxMjQsIDQ0LCA0NSwgMjQ2LCAyNTEsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxODcsIDQ0LCA0NSwgMjQ3LCA1OCwgNDQsIDQ1LCAyNDYsIDg1LCA0NCwgNDUsIDI0NiwgMjEyLCA0NCwgNDUsIDI0NiwgCi0gICAgMTQ4LCA0NCwgNDUsIDI0NywgMTksIDQ0LCA0NSwgMjQ2LCAxMTYsIDQ0LCA0NSwgMjQ2LCAyNDMsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNzksIDQ0LCA0NSwgMjQ3LCA1MCwgNDQsIDQ1LCAyNDYsIDEwMCwgNDQsIDQ1LCAyNDYsIDIyNywgNDQsIDQ1LCAyNDYsIAotICAgIDE2MywgNDQsIDQ1LCAyNDcsIDM0LCA0NCwgNDUsIDI0NiwgMTMxLCA0NCwgNDUsIDI0NywgMiwgNDQsIDQ1LCAyNDYsIDE5NCwgCi0gICAgNDQsIDQ1LCAyNDcsIDY1LCA0NCwgNDUsIDI0NiwgNzMsIDQ0LCA0NSwgMjQ2LCAyMDAsIDQ0LCA0NSwgMjQ2LCAxMzYsIDQ0LCAKLSAgICA0NSwgMjQ3LCA3LCA0NCwgNDUsIDI0NiwgMTA0LCA0NCwgNDUsIDI0NiwgMjMxLCA0NCwgNDUsIDI0NiwgMTY3LCA0NCwgNDUsIAotICAgIDI0NywgMzgsIDQ0LCA0NSwgMjQ2LCA4OCwgNDQsIDQ1LCAyNDYsIDIxNSwgNDQsIDQ1LCAyNDYsIDE1MSwgNDQsIDQ1LCAKLSAgICAyNDcsIDIyLCA0NCwgNDUsIDI0NiwgMTE5LCA0NCwgNDUsIDI0NiwgMjQ2LCA0NCwgNDUsIDI0NiwgMTgyLCA0NCwgNDUsIAotICAgIDI0NywgNTMsIDQ0LCA0NSwgMjQ2LCA4MCwgNDQsIDQ1LCAyNDYsIDIwNywgNDQsIDQ1LCAyNDYsIDE0MywgNDQsIDQ1LCAKLSAgICAyNDcsIDE0LCA0NCwgNDUsIDI0NiwgMTExLCA0NCwgNDUsIDI0NiwgMjM4LCA0NCwgNDUsIDI0NiwgMTc0LCA0NCwgNDUsIAotICAgIDI0NywgNDUsIDQ0LCA0NSwgMjQ2LCA5NSwgNDQsIDQ1LCAyNDYsIDIyMiwgNDQsIDQ1LCAyNDYsIDE1OCwgNDQsIDQ1LCAKLSAgICAyNDcsIDI5LCA0NCwgNDUsIDI0NiwgMTI2LCA0NCwgNDUsIDI0NiwgMjUzLCA0NCwgNDUsIDI0NiwgMTg5LCA0NCwgNDUsIAotICAgIDI0NywgNjAsIDQ0LCA0NSwgMjQ2LCA3NiwgNDQsIDQ1LCAyNDYsIDIwMywgNDQsIDQ1LCAyNDYsIDEzOSwgNDQsIDQ1LCAKLSAgICAyNDcsIDEwLCA0NCwgNDUsIDI0NiwgMTA3LCA0NCwgNDUsIDI0NiwgMjM0LCA0NCwgNDUsIDI0NiwgMTcwLCA0NCwgNDUsIAotICAgIDI0NywgNDEsIDQ0LCA0NSwgMjQ2LCA5MSwgNDQsIDQ1LCAyNDYsIDIxOCwgNDQsIDQ1LCAyNDYsIDE1NCwgNDQsIDQ1LCAKLSAgICAyNDcsIDI1LCA0NCwgNDUsIDI0NiwgMTIyLCA0NCwgNDUsIDI0NiwgMjQ5LCA0NCwgNDUsIDI0NiwgMTg1LCA0NCwgNDUsIAotICAgIDI0NywgNTYsIDQ0LCA0NSwgMjQ2LCA4MywgNDQsIDQ1LCAyNDYsIDIxMCwgNDQsIDQ1LCAyNDYsIDE0NiwgNDQsIDQ1LCAKLSAgICAyNDcsIDE3LCA0NCwgNDUsIDI0NiwgMTE0LCA0NCwgNDUsIDI0NiwgMjQxLCA0NCwgNDUsIDI0NiwgMTc3LCA0NCwgNDUsIAotICAgIDI0NywgNDgsIDQ0LCA0NSwgMjQ2LCA5OCwgNDQsIDQ1LCAyNDYsIDIyNSwgNDQsIDQ1LCAyNDYsIDE2MSwgNDQsIDQ1LCAKLSAgICAyNDcsIDMyLCA0NCwgNDUsIDI0NiwgMTI5LCA0NCwgNDUsIDI0NywgMCwgNDQsIDQ1LCAyNDYsIDE5MiwgNDQsIDQ1LCAyNDcsIAotICAgIDYzLCA0NCwgNDUsIDI0NiwgNzQsIDQ0LCA0NSwgMjQ2LCAyMDEsIDQ0LCA0NSwgMjQ2LCAxMzcsIDQ0LCA0NSwgMjQ3LCA4LCAKLSAgICA0NCwgNDUsIDI0NiwgMTA1LCA0NCwgNDUsIDI0NiwgMjMyLCA0NCwgNDUsIDI0NiwgMTY4LCA0NCwgNDUsIDI0NywgMzksIAotICAgIDQ0LCA0NSwgMjQ2LCA4OSwgNDQsIDQ1LCAyNDYsIDIxNiwgNDQsIDQ1LCAyNDYsIDE1MiwgNDQsIDQ1LCAyNDcsIDIzLCA0NCwgCi0gICAgNDUsIDI0NiwgMTIwLCA0NCwgNDUsIDI0NiwgMjQ3LCA0NCwgNDUsIDI0NiwgMTgzLCA0NCwgNDUsIDI0NywgNTQsIDQ0LCAKLSAgICA0NSwgMjQ2LCA4MSwgNDQsIDQ1LCAyNDYsIDIwOCwgNDQsIDQ1LCAyNDYsIDE0NCwgNDQsIDQ1LCAyNDcsIDE1LCA0NCwgNDUsIAotICAgIDI0NiwgMTEyLCA0NCwgNDUsIDI0NiwgMjM5LCA0NCwgNDUsIDI0NiwgMTc1LCA0NCwgNDUsIDI0NywgNDYsIDQ0LCA0NSwgCi0gICAgMjQ2LCA5NiwgNDQsIDQ1LCAyNDYsIDIyMywgNDQsIDQ1LCAyNDYsIDE1OSwgNDQsIDQ1LCAyNDcsIDMwLCA0NCwgNDUsIAotICAgIDI0NiwgMTI3LCA0NCwgNDUsIDI0NiwgMjU0LCA0NCwgNDUsIDI0NiwgMTkwLCA0NCwgNDUsIDI0NywgNjEsIDQ0LCA0NSwgCi0gICAgMjQ2LCA3NywgNDQsIDQ1LCAyNDYsIDIwNCwgNDQsIDQ1LCAyNDYsIDE0MCwgNDQsIDQ1LCAyNDcsIDExLCA0NCwgNDUsIAotICAgIDI0NiwgMTA4LCA0NCwgNDUsIDI0NiwgMjM1LCA0NCwgNDUsIDI0NiwgMTcxLCA0NCwgNDUsIDI0NywgNDIsIDQ0LCA0NSwgCi0gICAgMjQ2LCA5MiwgNDQsIDQ1LCAyNDYsIDIxOSwgNDQsIDQ1LCAyNDYsIDE1NSwgNDQsIDQ1LCAyNDcsIDI2LCA0NCwgNDUsIAotICAgIDI0NiwgMTIzLCA0NCwgNDUsIDI0NiwgMjUwLCA0NCwgNDUsIDI0NiwgMTg2LCA0NCwgNDUsIDI0NywgNTcsIDQ0LCA0NSwgCi0gICAgMjQ2LCA4NCwgNDQsIDQ1LCAyNDYsIDIxMSwgNDQsIDQ1LCAyNDYsIDE0NywgNDQsIDQ1LCAyNDcsIDE4LCA0NCwgNDUsIAotICAgIDI0NiwgMTE1LCA0NCwgNDUsIDI0NiwgMjQyLCA0NCwgNDUsIDI0NiwgMTc4LCA0NCwgNDUsIDI0NywgNDksIDQ0LCA0NSwgCi0gICAgMjQ2LCA5OSwgNDQsIDQ1LCAyNDYsIDIyNiwgNDQsIDQ1LCAyNDYsIDE2MiwgNDQsIDQ1LCAyNDcsIDMzLCA0NCwgNDUsIAotICAgIDI0NiwgMTMwLCA0NCwgNDUsIDI0NywgMSwgNDQsIDQ1LCAyNDYsIDE5MywgNDQsIDQ1LCAyNDcsIDY0LCA5NSwgMjE2LCAyNCwgCi0gICAgNzYsIDIsIDcxLCA5MCwgOTUsIDIxNiwgMjQsIDc2LCAyLCA1MSwgNzEsIDkwLCAxMzIsIDUxLCA3NiwgMiwgNzEsIDkwLCAKLSAgICA5NSwgNTEsIDc2LCAyLCA3MSwgOTAsIDQyLCA0NiwgNTEsIDc2LCAyLCA3MSwgOTAsIDk1LCAyMTYsIDI0LCA3NiwgMjQzLCAKLSAgICAyMTMsIDEzNCwgMTMyLCA1MSwgNzYsIDI0MywgMjEzLCAxMzQsIDk1LCA1MSwgNzYsIDI0MywgMjEzLCAxMzQsIDI0NiwgNTgsIAotICAgIDc2LCAyLCAxOTksIDkwLCAyMTUsIDEyNCwgNzYsIDIsIDE5OSwgOTAsIDIxNSwgMTI0LCAyMTYsIDE2OSwgNjgsIDI0NiwgCi0gICAgNTgsIDIxNiwgMTY5LCA2OCwgMTMyLCA1MSwgMjQ4LCAxMDIsIDY4LCA5NSwgNTEsIDI0OCwgMTAyLCA2OCwgMTMyLCAyMTYsIAotICAgIDE2OSwgMjQ4LCAxMDIsIDY4LCA5NSwgMjE2LCAxNjksIDI0OCwgMTAyLCA2OCwgOTUsIDIxNiwgMjQsIDIxNiwgMTY5LCAKLSAgICAyNDgsIDEwMiwgNjgsIDk1LCA3NiwgMiwgMjQ2LCA3MiwgMjE5LCA3OSwgMjE1LCAxMjQsIDc2LCAyMTEsIDIxMSwgMTM0LCAKLSAgICAyNDYsIDU4LCA3NiwgMjExLCAyMTEsIDEzNCwgOTUsIDc2LCAyLCAyMTgsIDI4LCAyLCA3MSwgOTAsIDk1LCA3NiwgMiwgCi0gICAgMjE4LCAyOCwgMiwgNTEsIDcxLCA5MCwgOTUsIDIxNiwgMjQsIDc2LCAyLCAyMTgsIDI3LCA5NSwgMjE2LCAyNCwgNzYsIDIsIAotICAgIDIxOCwgMjgsIDIsIDcxLCA5MCwgOTUsIDIxNiwgMjQsIDc2LCAyLCAyMTgsIDI4LCAyLCA1MSwgNzEsIDkwLCAxMzIsIDI1MywgCi0gICAgMTY2LCA5NSwgMjUzLCAxNjYsIDEzMiwgNTEsIDI1MywgMTY2LCA5NSwgNTEsIDI1MywgMTY2LCAxMzIsIDc2LCAyMTEsIAotICAgIDIxMSwgODMsIDI0NywgMjAwLCA5NSwgNzYsIDIxMSwgMjExLCA4MywgMjQ3LCAyMDAsIDEzMiwgNzYsIDI0MywgMjEzLCAKLSAgICAyNTIsIDYwLCAyMTEsIDIxMSwgODMsIDI0NywgMjAwLCA5NSwgNzYsIDI0MywgMjEzLCAyNTIsIDYwLCAyMTEsIDIxMSwgODMsIAotICAgIDI0NywgMjAwLCAyMjgsIDE2NywgMjEzLCAyNTAsIDI0LCAyMTksIDIxNSwgMjQ1LCAxNzYsIDY4LCAyMjgsIDE2NywgMjQ1LCAKLSAgICAxNzYsIDI0LCAyMTksIDIxNSwgMjEzLCAyNTAsIDY4LCAyMjgsIDE2NywgMjEzLCAyNTAsIDc2LCAyLCAxMDEsIDIyOCwgCi0gICAgMTY3LCAyNDUsIDE3NiwgNzYsIDIsIDEwMSwgMjE5LCAyMTUsIDI0NSwgMTc2LCA3NiwgMiwgMTAxLCAyMTksIDIxNSwgMjEzLCAKLSAgICAyNTAsIDc2LCAyLCAxMDEsIDIyOCwgMTY3LCAyMTMsIDI1MCwgNzYsIDI0LCAyMjgsIDE2NywgMjQ1LCAxNzYsIDY4LCAyMjgsIAotICAgIDE2NywgMjQ1LCAxNzYsIDc2LCAyNCwgMjE5LCAyMTUsIDI0NSwgMTc2LCA2OCwgMjE5LCAyMTUsIDI0NSwgMTc2LCA3NiwgCi0gICAgMjQsIDIxOSwgMjE1LCAyMTMsIDI1MCwgNjgsIDIxOSwgMjE1LCAyMTMsIDI1MCwgNzYsIDI0LCAyMjgsIDE2NywgMjEzLCAKLSAgICAyNTAsIDY4LCAyMjMsIDEyNSwgMjQ3LCAyMDcsIDI0OSwgNjUsIDI0NCwgMTQzLCAyNDcsIDIwNiwgMjQ0LCAxNDMsIDI0NywgCi0gICAgMjA3LCAyNDksIDY1LCAyMjMsIDEyNSwgMjQ3LCAyMDYsIDIxOSwgMjE1LCAyNDUsIDE3NiwgNzYsIDI0OSwgNjUsIDIyOCwgCi0gICAgMTY3LCAyNDUsIDE3NiwgNjgsIDIyOCwgMTY3LCAyNDUsIDE3NiwgNzYsIDI0OSwgNjUsIDIxOSwgMjE1LCAyNDUsIDE3NiwgCi0gICAgNjgsIDI0NCwgMTQzLCAyNDcsIDIwNywgMjQ5LCA2NSwgMjI4LCAxNjcsIDI0NSwgMTc2LCA2OCwgMjIzLCAxMjUsIDI0NywgCi0gICAgMjA3LCAyNDksIDY1LCAyMTksIDIxNSwgMjQ1LCAxNzYsIDY4LCAyMjgsIDE2NywgMjQ1LCAxNzYsIDc2LCAyNDksIDY1LCAKLSAgICAyMjgsIDE2NywgMjEzLCAyNTAsIDY4LCAyMjgsIDE2NywgMjEzLCAyNTAsIDc2LCAyNDksIDY1LCAyMjgsIDE2NywgMjQ1LCAKLSAgICAxNzYsIDY4LCAyMTQsIDIwLCA3NiwgMjI1LCAxNDEsIDI0NywgMTQ3LCAyMjMsIDE0OCwgNzYsIDIyNSwgMTQxLCA5NSwgCi0gICAgMjE3LCAxNDEsIDI0OSwgMzIsIDIxNSwgMTIzLCA3NiwgMjI1LCAxNDEsIDk1LCAyMTcsIDE0MSwgMjQ5LCAzMiwgMjQ2LCAKLSAgICA1NywgNzYsIDIyNSwgMTQxLCAyNDYsIDU4LCAyMTcsIDE0MSwgMjQ5LCAzMiwgMjMzLCA2MSwgNzYsIDIyNSwgMTQxLCAyNDYsIAotICAgIDU4LCAyMTcsIDE0MSwgMjQ5LCAzMiwgMjIzLCAxMzgsIDIyMywgMTQxLCAyNTMsIDE5NiwgMjQ5LCAxOTUsIDY4LCAyMzMsIAotICAgIDY0LCAyNTMsIDE5NiwgMjUzLCAyNTUsIDY4LCAyMTYsIDIyNywgMjUzLCAxOTYsIDI1MywgMjU1LCA2OCwgMjUxLCAxMDEsIAotICAgIDI1MywgMTk2LCAyNTMsIDI1NSwgNjgsIDIxNiwgMjI3LCAyNTMsIDE5NiwgMjQ5LCAxOTUsIDc2LCAyLCAyMzAsIDI1MCwgCi0gICAgMjE2LCAyMjcsIDI1MywgMTk2LCAyNTMsIDI1NSwgNzYsIDIsIDIyNSwgMTU2LCAyMzIsIDE2MywgNDYsIDIyMSwgNzIsIAotICAgIDI0OSwgMTk1LCA2OCwgMjMyLCAxNjMsIDQyLCAyMjEsIDcyLCAyNTMsIDI1NSwgNjgsIDI1MywgMjU1LCAyNDksIDE5MywgCi0gICAgMjQ5LCAyMjksIDY4LCAyNDksIDE5NSwgMjQ5LCAxOTMsIDI0OSwgMjI5LCA2OCwgOTUsIDc2LCA3OCwgMjIwLCAxNzUsIAotICAgIDEzMiwgNjgsIDEzMiwgNzYsIDc4LCAyMjAsIDE3NSwgOTUsIDY4LCAyMjAsIDE3NSwgOTUsIDc2LCA3OCwgMTMyLCA2OCwgCi0gICAgOTUsIDc2LCAyLCA5NCwgNTUsIDEzMiwgNzYsIDIsIDk0LCA1NSwgOTUsIDc2LCAyMTcsIDkzLCAyMTMsIDE2NiwgNDIsIDQ2LCAKLSAgICA3NiwgMjE3LCA5MywgMywgMjQ5LCAyMjgsIDIxNSwgMTI0LCAyMTYsIDI0LCA3NiwgMjQzLCAyMTMsIDMsIDI0OSwgMjI4LCAKLSAgICA0MiwgMjA2LCAxMTQsIDQ2LCAyMDYsIDExOSwgMjQxLCAyMzcsIDQyLCAyMDYsIDExOSwgNDYsIDIwNiwgMTE0LCAyNDEsIAotICAgIDIzNywgMTE0LCAyMDYsIDQ2LCAxMTksIDIwNiwgNDIsIDI0MSwgMjM3LCAxMTQsIDIwNiwgNDIsIDExOSwgMjA2LCA0NiwgCi0gICAgMjQxLCAyMzcsIDQyLCAyMDYsIDExNCwgNDYsIDIwNiwgMTE0LCAyNDEsIDIzNywgMTE0LCAyMDYsIDQ2LCAxMTksIDIwNiwgCi0gICAgNDYsIDI0MSwgMjM3LCA0MiwgMjA2LCAxMTksIDQ2LCAyMDYsIDExOSwgMjQxLCAyMzcsIDExNCwgMjA2LCA0MiwgMTE5LCAKLSAgICAyMDYsIDQyLCAyNDEsIDIzNywgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAxMTQsIDIxMSwgMjExLCAxMzQsIDk1LCAyNDEsIAotICAgIDIzOCwgMiwgMjA2LCAxMTQsIDIxMSwgMjExLCAxMzQsIDIxNSwgMTI0LCAyNDEsIDIzOCwgMiwgMjA2LCA0NiwgMjExLCAKLSAgICAyMTEsIDEzNCwgMjQ2LCA1OCwgMjQxLCAyMzgsIDIsIDIwNiwgNDYsIDIxMSwgMjExLCAxMzQsIDEzMiwgMjQxLCAyMzgsIDIsIAotICAgIDIwNiwgMTE5LCAyMTEsIDIxMSwgMTM0LCA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgMTE5LCAyMTEsIDIxMSwgMTM0LCAyMTUsIAotICAgIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIDIxMSwgMjExLCAxMzQsIDI0NiwgNTgsIDI0MSwgMjM4LCAyLCAyMDYsIDQyLCAKLSAgICAyMTEsIDIxMSwgMTM0LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDExNCwgMjQzLCAyMTMsIDEzNCwgOTUsIDI0MSwgMjM4LCAKLSAgICAyLCAyMDYsIDExNCwgMjQzLCAyMTMsIDEzNCwgMjE1LCAxMjQsIDI0MSwgMjM4LCAyLCAyMDYsIDQ2LCAyNDMsIDIxMywgCi0gICAgMTM0LCAyNDYsIDU4LCAyNDEsIDIzOCwgMiwgMjA2LCA0NiwgMjQzLCAyMTMsIDEzNCwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAKLSAgICAxMTksIDI0MywgMjEzLCAxMzQsIDk1LCAyNDEsIDIzOCwgMiwgMjA2LCAxMTksIDI0MywgMjEzLCAxMzQsIDIxNSwgMTI0LCAKLSAgICAyNDEsIDIzOCwgMiwgMjA2LCA0MiwgMjQzLCAyMTMsIDEzNCwgMjQ2LCA1OCwgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIDI0MywgCi0gICAgMjEzLCAxMzQsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMTE0LCA3OCwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAyNDYsIDYwLCAKLSAgICAyMTUsIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIDI1MSwgMjA3LCAyMTUsIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgCi0gICAgMjIzLCAxNDgsIDk1LCAyNDEsIDIzOCwgMiwgMjA2LCAxMTQsIDc4LCA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgMjQ2LCA2MCwgCi0gICAgMjQ2LCA1OCwgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIDI1MSwgMjA3LCAyNDYsIDU4LCAyNDEsIDIzOCwgMiwgMjA2LCAyMjMsIAotICAgIDE0OCwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAxMTQsIDc4LCA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgMjE1LCAxMzQsIDEzMiwgCi0gICAgMjQxLCAyMzgsIDIsIDIwNiwgMTE5LCA3OCwgOTUsIDI0MSwgMjM4LCAyLCAyMDYsIDI0NiwgNjAsIDk1LCAyNDEsIDIzOCwgCi0gICAgMiwgMjA2LCAxMTQsIDc4LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDIxNSwgMTM0LCA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgCi0gICAgMTE5LCA3OCwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAyNDYsIDYwLCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDExNCwgNzgsIAotICAgIDE4NCwgMjQ4LCAxMDEsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMTE5LCAyNTEsIDIyMCwgMTg0LCAyNDgsIDEwMSwgOTUsIAotICAgIDI0MSwgMjM4LCAyLCAyMDYsIDExNCwgNzgsIDE4NCwgMjQ4LCAxMDEsIDk1LCAyNDEsIDIzOCwgMiwgMjA2LCAxMTksIDI1MSwgCi0gICAgMjIwLCAxODQsIDI0OCwgMTAxLCAyMTUsIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIDI1MSwgMjA3LCAyNDYsIDU4LCAKLSAgICAyNDEsIDIzOCwgMiwgMjA2LCAyMjMsIDE0OCwgMjQ2LCA1OCwgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIDI1MSwgMjA3LCAyMTUsIAotICAgIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgMjIzLCAxNDgsIDQ2LCA1MSwgNzYsIDIsIDIyMywgODUsIDI0MSwgMjE5LCAyNDUsIAotICAgIDYxLCA1LCA3OCwgOTUsIDY4LCAyMTcsIDQzLCAyMjcsIDM0LCA3OCwgOTUsIDY4LCAxMzIsIDc2LCA3OCwgMjE3LCA0MywgCi0gICAgMjI3LCAzMywgOTUsIDc2LCA3OCwgMjE3LCA0MywgMjI3LCAzMywgOTUsIDc2LCA3OCwgMjU0LCA1NywgMTIzLCAxMDgsIAotICAgIDIzMywgMzksIDc4LCAxMzIsIDY4LCAxMzIsIDc2LCAyMTcsIDkzLCAyMzMsIDM4LCAyNDIsIDEwNywgNzgsIDk1LCA2OCwgCi0gICAgMjE5LCA5LCA3OCwgOTUsIDY4LCAxMzIsIDc2LCAyMTcsIDkzLCAyMTksIDgsIDIxOCwgMjIyLCA3OCwgMTMyLCA2OCwgNDIsIAotICAgIDI0NCwgNjAsIDIxOCwgMjcsIDQ2LCAyNDQsIDYwLCAyMTgsIDI3LCAxMTQsIDI0NCwgNjAsIDIxOCwgMjcsIDExOSwgMjQ0LCAKLSAgICA2MCwgMjE4LCAyNywgMjE2LCAxNjksIDcxLCAyNTIsIDYwLCAyNDgsIDExLCAyMTIsIDE1MywgMTc0LCAyMTksIDE3NCwgCi0gICAgMjEyLCAxNTMsIDE3NCwgMjE2LCAxNSwgMjQ5LCAxNjQsIDQyLCA2NywgMjQ5LCA0MCwgMTI1LCA0NiwgNjcsIDI0OSwgNDAsIAotICAgIDEyNSwgNDIsIDY3LCAyMjYsIDEzMSwgNDYsIDY3LCAyMjYsIDEzMSwgMjEyLCAxNTMsIDE3NCwgNDIsIDIzNiwgMTAsIDEyNSwgCi0gICAgMjEyLCAxNTMsIDE3NCwgNDYsIDIzNiwgMTAsIDEyNSwgMjEyLCAxNTMsIDE3NCwgNDIsIDI1MSwgMTY1LCAxMjUsIDIxMiwgCi0gICAgMTUzLCAxNzQsIDQ2LCAyNTEsIDE2NSwgMTI1LCA0MiwgNDEsIDI1MSwgODUsIDIsIDIxNSwgMTUzLCA0NiwgNDEsIDI1MSwgCi0gICAgODUsIDIsIDIxNSwgMTUzLCA0MiwgNDEsIDI1MSwgODUsIDIsIDIxNywgNjksIDIzNSwgMjUyLCAyMTYsIDIyNywgMjQ5LCAKLSAgICA5OSwgNDYsIDQxLCAyNTEsIDg1LCAyLCAyMTcsIDY5LCAyMzUsIDI1MiwgMjUxLCAxMDEsIDI0OSwgOTksIDQyLCA0MSwgCi0gICAgMjUxLCA4NSwgMiwgMjE3LCA2OSwgMjM1LCAyNTIsIDI1MSwgMTAxLCAyNDksIDk5LCA0NiwgNDEsIDI1MSwgODUsIDIsIAotICAgIDIxNywgNjksIDIzNSwgMjUyLCAyMTYsIDIyNywgMjQ5LCA5OSwgNDIsIDI1NCwgMTksIDI1MSwgODUsIDIsIDI0NywgNzQsIAotICAgIDQ2LCAyNTQsIDE5LCAyNTEsIDg1LCAyLCAyNDcsIDc0LCA0MiwgMjUzLCAxOTYsIDIzMywgMzksIDEyNSwgNDYsIDI1MywgCi0gICAgMTk2LCAyNDIsIDEwNywgMTI1LCA1MSwgNDIsIDI1MywgMTk2LCAyNDIsIDEwNywgMTI1LCA1MSwgNDYsIDI1MywgMTk2LCAKLSAgICAyMzMsIDM5LCAxMjUsIDQyLCA4MywgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIDQ2LCA4MywgMjE2LCAyMTksIDIyMCwgCi0gICAgMjMzLCAxMjUsIDI0NiwgNzIsIDI0NCwgMTA0LCA3MSwgMjEyLCAyOCwgMjMyLCAyNDIsIDIzMSwgMTUzLCAyNTQsIDE5LCAKLSAgICAyMjcsIDM1LCAyMzMsIDcwLCA0NiwgMjU0LCAxOSwgMjE0LCAyNDQsIDIsIDIxOSwgMTY2LCAyMzEsIDE1MywgNDYsIDI1NCwgCi0gICAgMTksIDIsIDI0NywgNzQsIDI1NCwgMTksIDIsIDIyMywgNCwgMjM1LCAyMTIsIDI1NCwgMTY0LCAyNTQsIDE4LCAyMTksIAotICAgIDE4NywgMjU0LCAxOSwgMjI3LCAzNSwgMjMzLCA3MCwgMjE5LCAxODcsIDI1NCwgMTksIDIyNywgMzUsIDIxNSwgMTM0LCAKLSAgICAyMTYsIDU4LCAyNTQsIDE4LCAyMjMsIDIwMiwgMjU0LCAxOCwgMjU0LCAxOSwgMiwgMjE1LCAxNTMsIDIyMywgMjAyLCAyNTQsIAotICAgIDE5LCAyLCAyMTUsIDE1MywgMjI3LCAxMTIsIDI1NCwgMTksIDIyNywgMzUsIDIxNSwgMTM0LCAyMjcsIDExMiwgMjU0LCAxOSwgCi0gICAgMjI3LCAzNSwgMjQ2LCA2MCwgMjMxLCAxNTMsIDI1NCwgMTksIDIsIDIyNywgNDAsIDI1MywgMTc2LCAyNDUsIDk4LCAyMzUsIAotICAgIDI1MiwgNzYsIDIyNSwgMTQxLCAxMTQsIDI0LCAyMjMsIDE0OCwgMjMxLCAxNTMsIDI1NCwgMTksIDIsIDIyNywgNDAsIDI1MywgCi0gICAgMTc2LCAyNDUsIDk4LCAyMzUsIDI1MiwgNzYsIDIyNSwgMTQxLCAxMTQsIDI0LCAyMzMsIDcwLCAyMzEsIDE1MywgMjU0LCAKLSAgICAxOSwgMiwgMjI3LCA0MCwgMjUzLCAxNzYsIDI0NSwgOTgsIDIzNSwgMjUyLCA3NiwgMjI1LCAxNDEsIDExOSwgMjQsIDIyMywgCi0gICAgMTQ4LCAyMzEsIDE1MywgMjU0LCAxOSwgMiwgMjI3LCA0MCwgMjUzLCAxNzYsIDI0NSwgOTgsIDIzNSwgMjUyLCA3NiwgMjI1LCAKLSAgICAxNDEsIDExOSwgMjQsIDIzMywgNzAsIDIzMSwgMTUzLCAyNTQsIDE5LCAyLCAyMjcsIDQwLCAyNTMsIDE3NiwgMjQ1LCA5OCwgCi0gICAgMjM1LCAyNTIsIDc2LCAyMjUsIDE0MSwgNDYsIDI0LCAyMTUsIDEzNCwgMjMxLCAxNTMsIDI1NCwgMTksIDIsIDIyNywgNDAsIAotICAgIDI1MywgMTc2LCAyNDUsIDk4LCAyMzUsIDI1MiwgNzYsIDIyNSwgMTQxLCA0MiwgMjQsIDIxNSwgMTM0LCAyMzEsIDE1MywgCi0gICAgMjU0LCAxOSwgMiwgMjI3LCA0MCwgMjUzLCAxNzYsIDI0NSwgOTgsIDIzNSwgMjUyLCA3NiwgMjI1LCAxNDEsIDQ2LCAyNCwgCi0gICAgMjQ2LCA2MCwgMjMxLCAxNTMsIDI1NCwgMTksIDIsIDIyNywgNDAsIDI1MywgMTc2LCAyNDUsIDk4LCAyMzUsIDI1MiwgNzYsIAotICAgIDIyNSwgMTQxLCA0MiwgMjQsIDI0NiwgNjAsIDIyMywgMjAyLCAyNDUsIDExMCwgMjIxLCA0OCwgMjQ1LCAxMTAsIDIyMSwgCi0gICAgNDksIDIsIDIyNiwgMjQ3LCAyNDUsIDExMCwgMjIxLCA0OSwgMiwgMywgMjQ5LCAyMjksIDQ5LCAyNDUsIDExMCwgMjIxLCAKLSAgICA0OSwgMiwgNDYsIDc2LCA0OSwgMjQ1LCAxMTAsIDIyMSwgNDksIDIsIDQyLCA3NiwgNDksIDI0OSwgMjI5LCAyLCAxOTksIAotICAgIDEzNCwgMzYsIDcxLCAxMzQsIDM2LCAyMjYsIDEzNSwgMzYsIDIyMywgMjAzLCAyMTksIDIzMSwgMzYsIDIyNiwgNDcsIDI0OSwgCi0gICAgMjI5LCAyNDcsIDEyNSwgMjUxLCA3LCAxOTksIDI1MiwgNjAsIDI0LCAyMTYsIDIyNywgMTUxLCAyNDcsIDEyNSwgMjUxLCA3LCAKLSAgICA3MSwgMTM0LCAyNDksIDIyOSwgMiwgMjE4LCAyMjQsIDIxMywgMTY2LCAzNiwgMjUzLCAyNTQsIDI0NywgMTIxLCA1MiwgCi0gICAgMTE0LCA3NiwgMjE3LCA5MywgMjQ5LCAyMjgsIDM2LCA2NywgMjUxLCA0MiwgMzYsIDI1MSwgNDIsIDM2LCAyMzMsIDM4LCAKLSAgICAzNiwgMjQyLCAxMDYsIDI0OSwgMjI5LCAyLCAzLCAyNDksIDIyOSwgMjExLCAyMTEsIDIxNywgMTQ5LCAyMjMsIDE0OCwgCi0gICAgMjQ5LCAyMjksIDIsIDExNywgMTk5LCAyMTksIDMzLCAyMTEsIDIxMSwgMjE3LCAxNDksIDIyMywgMTQ4LCA5MSwgMjIzLCAKLSAgICAxMjUsIDI0NywgMjA3LCAyMjAsIDIzLCA5MSwgMjQ0LCAxNDMsIDI0NywgMjA3LCAyMjAsIDIzLCA5MSwgMjUzLCAxMzIsIAotICAgIDkxLCAzLCAyNDksIDIyOCwgOTEsIDIxOSwgMTY2LCAxMTcsIDIzNSwgNjgsIDIxOSwgMTY0LCAyMTYsIDE4NCwgMiwgNjIsIAotICAgIDQ5LCAyMTYsIDE4NCwgMiwgMjE1LCAxNTMsIDIyMywgNCwgMjM1LCAyNTIsIDIxNiwgMTgzLCAyMTYsIDE4NCwgMiwgMjIxLCAKLSAgICA1NSwgMjUzLCAxMjMsIDI1MSwgMTAwLCA0NiwgMjE2LCAxODQsIDc4LCA0MiwgMjE2LCAxODMsIDQyLCAyMTYsIDE4NCwgCi0gICAgMjUxLCAyMDcsIDcxLCAxMzQsIDcxLCAyNTIsIDYwLCAyNTEsIDIwNywgNDYsIDIxNiwgMTgzLCAyNTEsIDkxLCAyLCA0MiwgCi0gICAgMTUxLCAyNTEsIDE0NCwgMjUxLCA5MSwgMiwgNDYsIDE1MSwgMjUxLCAxNDQsIDgzLCAyNTEsIDkwLCAyOSwgMiwgNDIsIAotICAgIDE1MSwgMjUxLCAxNDQsIDI5LCAyLCA0NiwgMTUxLCAyNTEsIDE0NCwgNjcsIDI0MCwgMjIzLCA4MywgMjQwLCAyMjMsIDQyLCAKLSAgICAyMTMsIDIyOSwgMjQ0LCAxMDQsIDQ2LCAyMTMsIDIyOSwgMjQ0LCAxMDQsIDQyLCA1MSwgMjEzLCAyMjksIDI0NCwgMTA0LCAKLSAgICA0NiwgNTEsIDIxMywgMjI5LCAyNDQsIDEwNCwgMjM1LCAyNDQsIDIzNSwgMjMxLCAyMTcsIDY2LCAxMTAsIDIzNSwgMjMxLCAKLSAgICAyMzUsIDIzMiwgMjI5LCAxODMsIDIsIDcxLCAxMzQsIDI0NiwgNjYsIDIzMCwgMTU3LCA0MSwgMiwgMjQ5LCAxMjAsIDIyNiwgCi0gICAgMjUxLCAyMzUsIDI0MiwgMjUzLCAxNTIsIDIyMCwgMTQ0LCAyMjUsIDYzLCAyNDUsIDYxLCA1LCAyNCwgMjIwLCAyNSwgMjI2LCAKLSAgICAxMzUsIDI0NSwgNjEsIDUsIDI0LCAyMjAsIDI1LCAyMjYsIDEzNiwgMiwgMjE3LCA0MywgNDksIDI0MCwgOTcsIDIxMSwgCi0gICAgMjExLCAyNCwgMjIwLCAyNSwgMjI2LCAxMzUsIDI0MiwgMTU5LCAyMTksIDk0LCAyMTcsIDEzOCwgMjQ2LCA1OSwgMjE2LCAKLSAgICAxODQsIDIsIDQyLCAxNTEsIDI1MSwgMTQ0LCAyNDYsIDU5LCAyMTYsIDE4NCwgMiwgNDYsIDE1MSwgMjUxLCAxNDQsIDgzLCAKLSAgICAyNDcsIDIwMSwgMiwgMTE5LCA2OCwgODMsIDIzMiwgMTU5LCA2NywgMjQ5LCAyMjksIDIsIDExOSwgNjgsIDgzLCAyNDksIAotICAgIDIyOSwgMiwgMTE5LCA2OCwgMjQ1LCA0OCwgNjcsIDIxOSwgMTY2LCAyNDUsIDQ4LCA4MywgMjE5LCAxNjYsIDI0NSwgNDgsIAotICAgIDY3LCAyNDcsIDIwMCwgMjQ1LCA0OCwgODMsIDI0NywgMjAwLCAyNDUsIDQ4LCA2NywgMjQ5LCAyMjgsIDI0NSwgNDgsIDgzLCAKLSAgICAyNDksIDIyOCwgMjIzLCA0MywgMjIzLCAyMDMsIDIxOSwgMjMyLCAyMjcsIDMzLCAyMTksIDIzMiwgMiwgMjI2LCAyNDcsIAotICAgIDIyMywgMjAzLCAyMTksIDIzMiwgMiwgMTk5LCA5MCwgMjUxLCAxNzIsIDIxOSwgMjMxLCAyNTEsIDE3MiwgMjIzLCAyMDMsIAotICAgIDIxOSwgMjMxLCA1MSwgMjI1LCAxNTYsIDIxNiwgMTY5LCAyMjUsIDE1NiwgMjMzLCA2NiwgMjQ5LCAzMywgMjU0LCAxOSwgCi0gICAgMTI1LCAyMjMsIDE0NCwgMjQ5LCAzMywgMjU0LCAxOSwgMTI1LCAyMTcsIDMxLCAyMzAsIDI0OCwgMjMwLCA5NywgMzYsIDYyLCAKLSAgICAyMjcsIDMzLCAyMzAsIDk3LCAzNiwgOTQsIDIyNywgMzMsIDIzMCwgOTcsIDM2LCAyOSwgMjI3LCAzMywgMjMwLCA5NywgCi0gICAgMjE1LCAxNDcsIDIyNywgMzQsIDIsIDI0NywgNzQsIDIzMCwgOTcsIDIxNSwgMTQ3LCAyMjcsIDM0LCAyLCAyMjUsIDE1NiwgCi0gICAgMjMwLCA5NywgNDEsIDIzNSwgMTk2LCAyMjcsIDMzLCAyMzAsIDk3LCA0MSwgMjE1LCAxNDcsIDIyNywgMzMsIDExNywgMjMyLCAKLSAgICAxOTksIDI0LCAyMjcsIDMzLCAxMTcsIDIzMiwgMTk5LCAxNjcsIDIyNywgMzMsIDIzMCwgOTcsIDI5LCAyMjcsIDMzLCAyMzAsIAotICAgIDIyNCwgMTE3LCAyMTgsIDI0NCwgMjE4LCAyNDIsIDIsIDIzNSwgMjA4LCAyMjQsIDE2OSwgMjM1LCAyMDksIDIyNywgMzMsIAotICAgIDI0NCwgNjgsIDIyNiwgMTI3LCAyMzUsIDIwOCwgMjM1LCAyMDksIDIsIDUxLCA5MCwgMjM1LCAyMDksIDI1MywgODksIDIsIAotICAgIDIyMCwgMjMsIDI0OSwgMjI1LCAyNDMsIDE5NywgMjUzLCAyNTUsIDIzNSwgMjA2LCAyMzIsIDI0MywgMjM1LCAyMDcsIDIsIAotICAgIDIyNCwgOCwgMjI2LCAxMTAsIDI1MywgMTczLCAyMjUsIDEzNSwgMjMyLCAyNDMsIDIzNSwgMjA3LCAyLCAyMjEsIDcyLCAKLSAgICAyMjYsIDExMCwgMjUzLCAxNzMsIDIyNSwgMTM1LCAyMzIsIDI0MywgMjM1LCAyMDcsIDIyOCwgMTYzLCAyMzUsIDI0NiwgCi0gICAgMjE3LCAxNDksIDIyNSwgMTM1LCAyMzUsIDIwOSwgMjUzLCAxNzMsIDExOCwgMjI1LCAxNDUsIDIyNywgMzMsIDIyNCwgMTYzLCAKLSAgICAyMzUsIDIwOSwgMjI3LCAzMywgMjM1LCAyMDksIDIsIDEzMiwgNzYsIDIsIDEwMSwgMjM1LCAyMDksIDIsIDI5LCA1MiwgCi0gICAgMjM1LCAyMDksIDIsIDIzNSwgMTk1LCAyMzUsIDIwOSwgMiwgMjE1LCAxNDYsIDIzNSwgMjA5LCAyLCAyMjYsIDI0NywgMjM1LCAKLSAgICAyMDksIDIsIDIxNSwgMTUzLCAyMzUsIDY5LCAyMzMsIDEwOCwgNDIsIDIxNiwgMTg0LCAyMjcsIDMzLCAyMTIsIDE1MywgCi0gICAgMTc0LCAyMjIsIDExOSwgMjQ5LCAxNDgsIDIxMiwgMTUzLCAxNzQsIDIyMiwgMTE5LCAyMjUsIDE4OCwgMjEyLCAxNTMsIAotICAgIDE3NCwgMjIyLCAxMTksIDIyNSwgNjAsIDk0LCA1LCAyLCAzLCAyNDksIDIyOSwgNDksIDk0LCA1LCAyLCAyNDksIDIyNCwgCi0gICAgMjU0LCAxNzUsIDQ5LCA5NCwgNSwgMiwgMjE3LCA0MywgNDksIDk0LCA1LCAyLCA2MiwgNTUsIDk0LCA1LCAyLCAyMTcsIDQzLCAKLSAgICA1NSwgOTQsIDUsIDIsIDIxOSwgMTAsIDEwOSwgOTQsIDUsIDIsIDgzLCAyMTYsIDE4MywgMjMwLCAyNTEsIDUsIDIsIDI0OSwgCi0gICAgMTU4LCA0OSwgMjMwLCAyNTEsIDUsIDIsIDYyLCA1NSwgMjMwLCAyNTEsIDUsIDIsIDI0NCwgMTQzLCAyNDcsIDcyLCAyMzAsIAotICAgIDI1MSwgNSwgMiwgMjIzLCAxMjUsIDI0NywgNzIsIDk0LCA1LCAyMzUsIDI1MiwgNDIsIDE1MSwgMjQ5LCAyMjgsIDk0LCA1LCAKLSAgICAyMzUsIDI1MiwgNDYsIDE1MSwgMjQ5LCAyMjgsIDIxNCwgMjMxLCAxNjcsIDI0OSwgNzEsIDIyNSwgNjMsIDIzMCwgMTU0LCAKLSAgICA1LCAyLCA2MiwgNDksIDIzMCwgMTU0LCA1LCAyLCAyMTUsIDE1MywgMjIxLCA2OSwgMjI1LCA2NCwgMiwgMjUxLCAxMDEsIAotICAgIDI0OSwgMTkyLCAyMjAsIDUsIDIyNSwgNjMsIDIzMCwgMTU0LCA1LCAyMzUsIDI1MiwgNDIsIDE1MSwgMjQ5LCAyMjgsIDIzMCwgCi0gICAgMTU0LCA1LCAyMzUsIDI1MiwgNDYsIDE1MSwgMjQ5LCAyMjgsIDM2LCAyMzAsIDE1NCwgNSwgMiwgMjQ5LCAyMjQsIDI1NCwgCi0gICAgMTc0LCAyMzAsIDE1NCwgNSwgMjM1LCAyNTIsIDUxLCAyNDksIDIyOCwgMzYsIDI0NywgMTIxLCA1MiwgOTQsIDUsIDIzNSwgCi0gICAgMjUyLCAyMTYsIDE4MywgMjMwLCAyNTEsIDUsIDIzNSwgMjUyLCAyMTYsIDE4MywgMjMwLCAxNTQsIDUsIDIzNSwgMjUyLCAKLSAgICAyMTYsIDE4MywgMjM1LCAyMDMsIDIyNSwgNjMsIDIyMywgMTM5LCAyMzUsIDIwMywgMjI1LCA2MywgMjEyLCAxNTMsIDE3NCwgCi0gICAgMjIzLCAyNDAsIDI0OSwgMTQ4LCAyNTQsIDQzLCAxNjcsIDI0OSwgMTA0LCAyMzUsIDE5NiwgMiwgMjQ3LCA3NCwgMjE1LCAKLSAgICAxNDcsIDIsIDIzMCwgMjUxLCA1MiwgMjE1LCAxNDcsIDIsIDIyNiwgMjQ3LCAyMzUsIDE5NiwgMiwgMjI2LCAyNDcsIDIzNSwgCi0gICAgMTk2LCAyLCAyMzIsIDE5OSwgMjU0LCAyNywgMjE1LCAxNDcsIDIsIDIzMiwgMTk5LCAyMjcsIDI0LCAyMTUsIDE0NywgNzgsIAotICAgIDIzNSwgMTk1LCAyMzUsIDE5NiwgNzgsIDIxNSwgMTQ2LCAyMTUsIDE0NywgNzgsIDI1MiwgNjAsIDc4LCAyMzUsIDE5NSwgCi0gICAgMjM1LCAxOTYsIDc4LCAyNTIsIDYwLCA3OCwgMjE1LCAxNDYsIDIxNSwgMTQ3LCAyNTEsIDIwNywgMjQsIDIzNSwgNjgsIDIsIAotICAgIDIxNSwgMTQ2LCAyMzUsIDE5NiwgMjUxLCAyMDcsIDI0LCAyMzUsIDY4LCAyLCAyMzUsIDE5NSwgMjQ5LCAxOTMsIDIxNSwgCi0gICAgMTQ3LCAyLCAyMjEsIDU0LCAyNDksIDE5MywgMjM1LCAxOTYsIDIsIDIyMSwgNTQsIDUxLCA0MSwgMjM1LCAxOTUsIDUxLCAKLSAgICA0MSwgMjE1LCAxNDYsIDI0OSwgMTkzLCAyMTUsIDE0NywgMiwgMjIxLCA1NSwgMjQsIDIyMCwgNSwgMjI1LCA2MywgMjMyLCAKLSAgICAxOTksIDI0LCAyLCA2MiwgNDksIDIzMiwgMTk5LCAxNjcsIDIsIDYyLCA0OSwgNTEsIDIzMiwgMTk5LCAyNTQsIDI3LCA1MSwgCi0gICAgMjMyLCAxOTksIDIyNywgMjQsIDExNywgMjM1LCAxOTcsIDIzMiwgMTk5LCAyNTQsIDI3LCAxMTcsIDIzNSwgMTk3LCAyMzIsIAotICAgIDE5OSwgMjI3LCAyNCwgMjIwLCAxMywgMjMzLCAxMDgsIDIyNywgMjQsIDIyMCwgMTMsIDIzMywgMTA4LCAyNTQsIDI3LCAKLSAgICAyMzIsIDE5OSwgMTY3LCAyMjYsIDI0NSwgMjMyLCAxOTksIDI1NCwgMjcsIDIzMiwgMTk5LCAyNCwgMiwgMjMxLCAzNywgCi0gICAgMjE5LCA3OSwgMjMyLCAxOTksIDE2NywgMiwgMjMxLCAzNywgMjE5LCA3OSwgMjMyLCAxOTksIDI0LCAyLCAxOTksIDI0OCwgCi0gICAgMTAxLCAyMzIsIDE5OSwgMTY3LCAyLCAxOTksIDI0OCwgMTAxLCAyMzIsIDE5OSwgMjQsIDIsIDUxLCAyMjYsIDI0NywgMjMyLCAKLSAgICAxOTksIDI0LCAyLCAyMTUsIDE1MywgMjMyLCAxOTksIDI0LCAyLCA1MSwgMjE1LCAxNTMsIDMsIDIxNCwgMjI4LCAyLCAyMTUsIAotICAgIDE1MywgMjMyLCAxOTksIDE2NywgMiwgNTEsIDIyNiwgMjQ3LCAyMzIsIDE5OSwgMTY3LCAyLCA1MSwgMjE1LCAxNTMsIDIxMiwgCi0gICAgMTUzLCAxNzQsIDI0NywgODMsIDI1MywgMjQ2LCAyMTIsIDE1MywgMTc0LCAyMjQsIDQwLCAyNTMsIDI0NiwgMjQ1LCA2MSwgCi0gICAgNSwgMiwgNjIsIDU1LCAyNDAsIDk3LCAyLCA2MiwgNDksIDIxNiwgMTY5LCAxOTksIDI1MiwgNjAsIDIsIDUxLCA3MSwgOTAsIAotICAgIDIxNiwgMTY5LCAxOTksIDI1MiwgNjAsIDIsIDIxNiwgMTY5LCA3MSwgOTAsIDIxNywgNDMsIDIyNywgMzQsIDIsIDYyLCA0OSwgCi0gICAgMjE3LCA0MywgMjI3LCAzNCwgMiwgMjIzLCAxMjUsIDI0NywgNzIsIDIyMCwgODgsIDIzMCwgMjUxLCAyMjAsIDg3LCAyNDksIAotICAgIDEzOSwgMiwgNjIsIDQ5LCAyNDUsIDYxLCAyLCAyNTMsIDEzMiwgMjU0LCA1NywgMTIzLCAyMTEsIDIxMSwgMiwgMjQ5LCAKLSAgICAyMjQsIDI1NCwgMTc0LCAyNTMsIDIxOCwgMTIzLCAxNjcsIDEyMywgMTA4LCAyNDUsIDYxLCA1LCA3OCwgOTQsIDUyLCA5NCwgCi0gICAgNSwgNzgsIDI0NSwgNjEsIDUyLCAyNDUsIDYxLCA1LCA3OCwgMjE3LCA0MywgMjI3LCAzMywgNTEsIDI0OSwgMTY1LCAyNDUsIAotICAgIDYyLCAxMTcsIDI0OSwgMTM0LCAyNDUsIDYxLCAyMjAsIDEwMiwgMTMzLCAyNDksIDEzNCwgMjQ1LCA2MSwgMjIwLCAxMDIsIAotICAgIDI0NSwgNjEsIDUsIDIsIDExNywgMTc2LCA3OCwgMjQsIDExNywgMTc2LCA1NSwgMjQ1LCA1NywgMiwgMjQzLCAyMzcsIDE3NiwgCi0gICAgNDksIDIzMywgMzksIDIsIDI0OSwgMjI5LCAyMzUsIDIxMiwgMjQyLCAxMDcsIDIsIDI0OSwgMjI5LCAyMzUsIDIxMiwgMjMzLCAKLSAgICAzOSwgMiwgMjI0LCAxNTgsIDE1MiwgNDksIDI0MiwgMTA3LCAyLCAyMjQsIDE1OCwgMTUyLCA0OSwgMjMzLCAzOSwgMTY3LCAKLSAgICAyMjAsIDI1LCAxMjMsIDEwOCwgMjQyLCAxMDcsIDE2NywgMjIwLCAyNSwgMTIzLCAxMDgsIDIzMywgMzksIDE2NywgMjIwLCAKLSAgICAyNSwgMTIzLCAyMTEsIDIxMSwgMiwgNjIsIDIzNSwgMjEyLCAyNDIsIDEwNywgMTY3LCAyMjAsIDI1LCAxMjMsIDIxMSwgCi0gICAgMjExLCAyLCA2MiwgMjM1LCAyMTIsIDIzMywgMzksIDE2NywgMjIwLCAyNSwgMTIzLCAyMTEsIDIxMSwgMiwgNjIsIDQ5LCAKLSAgICAyNDIsIDEwNywgMTY3LCAyMjAsIDI1LCAxMjMsIDIxMSwgMjExLCAyLCA2MiwgNDksIDIzMywgMzksIDE2NywgMjIwLCAyNSwgCi0gICAgMTIzLCAyMTEsIDIxMSwgMiwgNjIsIDc4LCAyMjMsIDE0OCwgMjQyLCAxMDcsIDE2NywgMjIwLCAyNSwgMTIzLCAyMTEsIAotICAgIDIxMSwgMiwgNjIsIDc4LCAyMzMsIDcwLCAyMzMsIDM5LCAxNjcsIDI1MywgMjE5LCAyNDIsIDEwNywgMTY3LCAyNTMsIDIxOSwgCi0gICAgMjMzLCAzOSwgMjQsIDIyMCwgNzksIDIyOCwgMTYzLCAxMjMsIDEwOCwgMjQyLCAxMDcsIDI0LCAyMjAsIDc5LCAyMjgsIAotICAgIDE2MywgMTIzLCAxMDgsIDIzMywgMzksIDI0LCAyMjgsIDE2MywgMjUzLCAyMTksIDI0MiwgMTA3LCAyNCwgMjI4LCAxNjMsIAotICAgIDI1MywgMjE5LCAyMzMsIDM5LCA3OCwgMjQ2LCA2NSwgMTIzLCA3OCwgMjQyLCAxMDYsIDI0MiwgMTA3LCA3OCwgMjQ2LCA2NSwgCi0gICAgMTIzLCA3OCwgMjMzLCAzOCwgMjMzLCAzOSwgNzgsIDIyMCwgODgsIDE2NywgMjQ1LCA2MiwgMjQyLCAxMDcsIDc4LCAyMjAsIAotICAgIDg4LCAxNjcsIDI0NSwgNjIsIDIzMywgMzksIDc4LCAyMjAsIDg4LCA3OCwgMjQyLCAxMDYsIDI0MiwgMTA3LCA3OCwgMjIwLCAKLSAgICA4OCwgNzgsIDIzMywgMzgsIDIzMywgMzksIDc4LCAyNDIsIDEwNywgNzgsIDI0NiwgNjUsIDI0NSwgNjIsIDI0MiwgMTA3LCAKLSAgICA3OCwgMjMzLCAzOSwgNzgsIDI0NiwgNjUsIDI0NSwgNjIsIDIzMywgMzksIDc4LCAyMjAsIDI1LCAxMjMsIDc4LCAyNDIsIAotICAgIDEwNywgNzgsIDIyMCwgMjUsIDI0NSwgNjIsIDI0MiwgMTA3LCA3OCwgMjIwLCAyNSwgMTIzLCA3OCwgMjMzLCAzOSwgNzgsIAotICAgIDIyMCwgMjUsIDI0NSwgNjIsIDIyMCwgMjUsIDEyMywgMjExLCAyMTEsIDE2NywgMjMzLCAzOCwgMjIwLCAyNSwgMTIzLCAKLSAgICAyMTEsIDIxMSwgMTY3LCAyNDIsIDEwNiwgMjIwLCAyNSwgMTIzLCAyMTEsIDIxMSwgMTY3LCAyMzMsIDM5LCAyLCA2MiwgCi0gICAgMjM1LCAyMTIsIDIyMCwgMjUsIDEyMywgMjExLCAyMTEsIDE2NywgMjQyLCAxMDcsIDIsIDYyLCAyMzUsIDIxMiwgMjQ2LCAKLSAgICA2NSwgMTIzLCAyMTEsIDIxMSwgMTY3LCAyMzMsIDM4LCAyNDYsIDY1LCAxMjMsIDIxMSwgMjExLCAxNjcsIDI0MiwgMTA2LCAKLSAgICAyNDYsIDY1LCAyMjAsIDI1LCAxMjMsIDIxMSwgMjExLCAxNjcsIDIzMywgMzgsIDI0NiwgNjUsIDIyMCwgMjUsIDEyMywgCi0gICAgMjExLCAyMTEsIDE2NywgMjQyLCAxMDYsIDIyMCwgODgsIDE2NywgMjMzLCAzOCwgMjIwLCA4OCwgMTY3LCAyNDIsIDEwNiwgCi0gICAgMjIwLCA4OCwgNzgsIDIzMywgMzksIDc4LCAyNDUsIDYxLCA1MiwgMjIwLCA4OCwgNzgsIDI0MiwgMTA3LCA3OCwgMjQ1LCAKLSAgICA2MSwgNTIsIDUxLCAyMjksIDE3MywgMjMzLCAzOCwgNTEsIDIyOSwgMTczLCAyNDIsIDEwNiwgNTEsIDIyOSwgMTczLCAyMzMsIAotICAgIDM5LCAyLCAyMTUsIDE1MywgMjQyLCAxMDcsIDIyNiwgMjQ1LCAyMzMsIDM4LCAyNDIsIDEwNywgMjUxLCAyMDcsIDIzMywgCi0gICAgMzgsIDIzMywgMzksIDI0OSwgMTkzLCAyNTEsIDcsIDI0OSwgMzQsIDI0MiwgMTA3LCAyNDksIDE5MywgMjUxLCA3LCAyNDksIAotICAgIDM0LCAyMzMsIDM5LCAyNDksIDE5MywgMjUxLCA3LCAyNDksIDM1LCA3OCwgMjIwLCAyNSwgMjQ1LCA2MiwgMjQyLCAxMDcsIAotICAgIDI0OSwgMTkzLCAyNTEsIDcsIDI0OSwgMzUsIDc4LCAyMjAsIDI1LCAyNDUsIDYyLCAyMjAsIDYsIDIxNywgMTUzLCAyMzMsIAotICAgIDEwNiwgMjE3LCAxNTMsIDIyMCwgNiwgMjE3LCAxNTQsIDE2NywgMTIzLCAxMDgsIDIzMywgMTA2LCAyMTcsIDE1NCwgMTY3LCAKLSAgICAxMjMsIDEwOCwgMjQ1LCA2MSwgNSwgMiwgMjUxLCAzNywgNDksIDIyNSwgODMsIDc4LCAyMjAsIDc5LCAyNDUsIDYxLCA1MiwgCi0gICAgMjE5LCAxLCA3OCwgMjIwLCA3OSwgMjQ1LCA2MSwgNTIsIDIyNSwgODMsIDc4LCAyMjAsIDc5LCAyMjgsIDE2MywgMTIzLCAKLSAgICAxMDgsIDIxOSwgMSwgNzgsIDIyMCwgNzksIDIyOCwgMTYzLCAxMjMsIDEwOCwgMjI1LCA4MywgNzgsIDI0NSwgNjEsIDUyLCAKLSAgICAyMTksIDEsIDc4LCAyNDUsIDYxLCA1MiwgMjI1LCA4MywgNzgsIDIyOCwgMTYzLCAxMjMsIDEwOCwgMjE5LCAxLCA3OCwgCi0gICAgMjI4LCAxNjMsIDEyMywgMTA4LCAyMjUsIDgzLCA3OCwgMjU0LCA1NywgMTIzLCAxMDgsIDIxOSwgMSwgNzgsIDI1NCwgNTcsIAotICAgIDEyMywgMTA4LCAyMjUsIDgzLCA3OCwgMjI4LCAxNjMsIDI1NCwgNTcsIDEyMywgMTA4LCAyMTksIDEsIDc4LCAyMjgsIDE2MywgCi0gICAgMjU0LCA1NywgMTIzLCAxMDgsIDUxLCAyMjUsIDgyLCA1MSwgMjE5LCAwLCAyMTksIDksIDIsIDI0NywgNzQsIDIxOCwgMjIyLCAKLSAgICAyLCAyNDcsIDc0LCAyMTksIDksIDIsIDk0LCA1LCA1NSwgMjE4LCAyMjIsIDIsIDk0LCA1LCA1NSwgMjE5LCA5LCAyLCAyMzAsIAotICAgIDE1NCwgNSwgNTUsIDIxOCwgMjIyLCAyLCAyMzAsIDE1NCwgNSwgNTUsIDIxOSwgOSwgNjUsIDE2NywgMTIzLCAyMTEsIDIxMSwgCi0gICAgMiwgNjIsIDQ5LCAyMTgsIDIyMiwgNjUsIDE2NywgMTIzLCAyMTEsIDIxMSwgMiwgNjIsIDQ5LCAyMTksIDksIDY1LCA3OCwgCi0gICAgMjQ1LCA2MSwgNTIsIDIxOCwgMjIyLCA2NSwgNzgsIDI0NSwgNjEsIDUyLCAyMTksIDksIDY1LCA3OCwgMjE3LCA0MywgMjI3LCAKLSAgICAzMywgMjE4LCAyMjIsIDY1LCA3OCwgMjE3LCA0MywgMjI3LCAzMywgMjE5LCA5LCA2NSwgNzgsIDI1NCwgNTcsIDEyMywgCi0gICAgMTA4LCAyMTgsIDIyMiwgNjUsIDc4LCAyNTQsIDU3LCAxMjMsIDEwOCwgMjE5LCA5LCA2NSwgNzgsIDIyOCwgMTYzLCAxMjMsIAotICAgIDEwOCwgMjE4LCAyMjIsIDY1LCA3OCwgMjI4LCAxNjMsIDEyMywgMTA4LCA0MSwgNDIsIDIyNywgNDAsIDkyLCAyMjcsIDMzLCAKLSAgICA0MSwgNDYsIDIyNywgNDAsIDkyLCAyMjcsIDMzLCAyNDksIDE5MywgMjE5LCA4LCAyNDksIDE5MywgMjE4LCAyMjEsIDI0OSwgCi0gICAgMTkzLCAyMTksIDksIDE2NywgMTIzLCAxMDgsIDI0OSwgMTkzLCAyMTgsIDIyMiwgMTY3LCAxMjMsIDEwOCwgMjE5LCA5LCAKLSAgICA3OCwgMjE4LCAyMjEsIDIxOCwgMjIyLCA3OCwgMjE5LCA4LCAyMTksIDksIDc4LCAyMTksIDgsIDIxOCwgMjIyLCA3OCwgCi0gICAgMjE4LCAyMjEsIDIxOCwgMjIyLCAyNTEsIDIwNywgMjE5LCA4LCAyMTgsIDIyMiwgMjUxLCAyMDcsIDI0LCAyMzUsIDY4LCAKLSAgICAyNTEsIDcsIDI0OCwgMTAyLCAyLCAyMTksIDgsIDI0NSwgMTI3LCA2NSwgMjI3LCAzNSwgMjQ2LCA1NywgMjI1LCAxODAsIDIsIAotICAgIDIxNywgMjIwLCAyMTYsIDIyNiwgMjE2LCAxOTgsIDIzNSwgMTk1LCAyNDMsIDI0NiwgMjI4LCAxNzYsIDIyMCwgMTc1LCA0MiwgCi0gICAgMjE4LCAzNiwgMjIwLCAxNzUsIDExOSwgMjE4LCAzNiwgMjIwLCAxNzUsIDExNCwgMjE4LCAzNiwgMjI2LCA0OCwgMiwgMTk3LCAKLSAgICA3MSwgMjUyLCA2MCwgMjE2LCAxNjksIDQ2LCAyMTYsIDU3LCA1MSwgNzEsIDI1MiwgNjAsIDQyLCAyMTYsIDU3LCA3MSwgCi0gICAgMjUyLCA2MCwgNTEsIDQyLCAyMTYsIDU3LCA1MSwgNzEsIDI1MiwgNjAsIDUxLCA0MiwgMjE2LCA1NywgMTg0LCAyNDgsIAotICAgIDEwMiwgMjQzLCAyMTMsIDQyLCAyMzEsIDEyNywgNjUsIDUxLCAyMTQsIDIxNiwgMjIwLCAxNzUsIDExOSwgMjE4LCAzNywgMiwgCi0gICAgMjI2LCAyNDcsIDIyMCwgMTc1LCAxMTQsIDIxOCwgMzcsIDIsIDIxNSwgMTUzLCAyMjAsIDE3NSwgMTE0LCAyMTgsIDM3LCAKLSAgICA3OCwgMjIwLCAxNzUsIDExOSwgMjE4LCAzNiwgNTEsIDExOSwgMjE4LCAzNiwgNTEsIDExNCwgMjE4LCAzNiwgNTEsIDIxOSwgCi0gICAgNDUsIDIyOCwgMTYzLCA1MiwgMjIzLCAyMDIsIDUxLCAyMTksIDQ1LCAyMjgsIDE2MywgNTIsIDI0NywgOTIsIDIyOCwgMTYzLCAKLSAgICAyNDcsIDEyNywgMiwgMjIzLCAyMDIsIDIyOSwgMTgyLCAyMjAsIDIzLCA3MSwgMjMyLCAyNDMsIDIsIDI0OSwgMjI5LCA0OSwgCi0gICAgNzEsIDIzMiwgMjQzLCAyLCAyNDksIDIyOSwgNTUsIDExOSwgMjE4LCAzNywgMiwgMjQ5LCAyMjksIDU1LCAyMjYsIDEzNiwgCi0gICAgMiwgMTk5LCA5MCwgMjI2LCAxMzYsIDIsIDIxNywgNDMsIDIyNywgMzMsIDIxNiwgMTY5LCA3MSwgMjUyLCA2MCwgMjUxLCAKLSAgICAxNjcsIDIyMywgMjQxLCAyMTYsIDE2OSwgNzEsIDI1MiwgNjAsIDIsIDE5OSwgOTAsIDIxNiwgMTY5LCAyNDksIDE2NSwgCi0gICAgMjI3LCAzMywgMjE2LCAxNjksIDIyOSwgMTczLCAyMzMsIDM4LCAyMTYsIDE2OSwgMjI5LCAxNzMsIDI0MiwgMTA2LCAyNDYsIAotICAgIDY1LCAyMjAsIDI1LCAyMzMsIDM5LCAxNjcsIDEyMywgMTA4LCAyNDYsIDY1LCAyMjAsIDI1LCAyNDIsIDEwNywgMTY3LCAKLSAgICAxMjMsIDEwOCwgMjE2LCAxNjksIDIxOSwgMjMyLCAyNTEsIDE2NywgMjIzLCAyNDEsIDIzMywgMTA4LCAyMTYsIDE2OSwgNzEsIAotICAgIDI1MiwgNjAsIDIyNywgMzMsIDUxLCAyMTksIDIzMiwgMjI3LCAzMywgNjcsIDcxLCAxMzQsIDIzMCwgOTcsIDY3LCA3MSwgCi0gICAgMTM0LCAyMjgsIDE2NywgMjQ1LCAxNzYsIDY3LCA2OCwgMjI4LCAxNjcsIDIxMywgMjUwLCA2NywgNjgsIDIxOSwgMjE1LCAKLSAgICAyNDUsIDE3NiwgNjcsIDY4LCAyMTksIDIxNSwgMjEzLCAyNTAsIDY3LCA2OCwgNDIsIDQ2LCA2NywgNjgsIDEzMiwgODMsIAotICAgIDY4LCAyMTUsIDEyNCwgODMsIDY4LCAyNDYsIDU4LCA4MywgNjgsIDIyOCwgMTY3LCAyNDUsIDE3NiwgODMsIDY4LCAyMjgsIAotICAgIDE2NywgMjEzLCAyNTAsIDgzLCA2OCwgMjE5LCAyMTUsIDI0NSwgMTc2LCA4MywgNjgsIDIxOSwgMjE1LCAyMTMsIDI1MCwgCi0gICAgODMsIDY4LCA0MiwgNDYsIDgzLCA2OCwgMTE0LCAxMTksIDgzLCA2OCwgOTUsIDc2LCAyLCAyMTcsIDMwLCAyNDYsIDU3LCAKLSAgICA5NSwgNzYsIDIsIDIxNywgMzAsIDIxNSwgMTIzLCAxMzIsIDc2LCAyLCAyMTcsIDMwLCAyNDYsIDU3LCAxMzIsIDc2LCAyLCAKLSAgICAyMTcsIDMwLCAyMTUsIDEyMywgNDEsIDIsIDIxNiwgMjI3LCAxNTEsIDI1MSwgMTQ0LCA0MSwgMiwgMjUxLCAxMDEsIDE1MSwgCi0gICAgMjUxLCAxNDQsIDQxLCAyLCAyMTUsIDEzMSwgNDYsIDI0NywgMjA3LCAxNTEsIDI1MSwgMTQ0LCA0MSwgMiwgMjMyLCAxNjMsIAotICAgIDQyLCAyNDcsIDIwNywgMTUxLCAyNTEsIDE0NCwgMjQ3LCAyMDEsIDIsIDQyLCAxNTEsIDI1MSwgMTQ0LCAyNDcsIDIwMSwgMiwgCi0gICAgNDYsIDE1MSwgMjUxLCAxNDQsIDI0NywgMjAxLCAyLCAyMTYsIDIyNywgMTUxLCAyNTEsIDE0NCwgMjQ3LCAyMDEsIDIsIAotICAgIDI1MSwgMTAxLCAxNTEsIDI1MSwgMTQ0LCAyNDYsIDcyLCAyMTksIDE2NiwgODMsIDIzMywgMTA4LCAyMTksIDE2NiwgNjcsIAotICAgIDIzMywgMTA4LCAyMTksIDE2NiwgODMsIDIxNCwgMTY0LCAzLCAyMTksIDE2NiwgNjcsIDIxNCwgMTY0LCAzLCAyMTksIDE2NiwgCi0gICAgODMsIDIyNiwgNjUsIDY3LCAyMjYsIDY1LCA2NywgMjQxLCAxNzgsIDgzLCAyNDEsIDE3OCwgMTk5LCA4MywgMjQxLCAxNzgsIAotICAgIDgzLCAyMzMsIDEwOCwgMjQ5LCAyMjgsIDgzLCAyMzEsIDE0NywgMjQ3LCAyMDAsIDY3LCAyMzEsIDE0NywgMjQ3LCAyMDAsIAotICAgIDgzLCAyMzEsIDE0NywgMjMyLCAxNTksIDY3LCAyMzEsIDE0NywgMjMyLCAxNTksIDgzLCAzLCAyNDcsIDIwMCwgODMsIDMsIAotICAgIDIzMiwgMTU5LCA2NywgMywgMjMyLCAxNTksIDgzLCAxOTksIDI0NSwgMTIxLCA2NywgMTk5LCAyNDUsIDEyMSwgODMsIDcxLCAKLSAgICAyNDUsIDEyMSwgNjcsIDcxLCAyNDUsIDEyMSwgNDIsIDc2LCAyLCAzLCAyNDksIDIyOCwgMTMzLCAxMzIsIDI1MywgMTYyLCAKLSAgICA0MiwgNzYsIDIsIDM2LCAyMjUsIDE1NiwgMTg0LCAxMzIsIDIxOSwgMTYyLCA2OCwgMTMyLCAyMTYsIDI0LCA3NiwgMiwgNzEsIAotICAgIDkwLCAxMzIsIDIxNiwgMjQsIDc2LCAyLCA1MSwgNzEsIDkwLCAxMzIsIDIxNiwgMjQsIDc2LCAyNDMsIDIxMywgMTM0LCAKLSAgICAxMzIsIDIxNiwgMjQsIDIxNiwgMTY5LCAyNDgsIDEwMiwgNjgsIDEzMiwgNzYsIDIsIDI0NiwgNzIsIDIxOSwgNzksIDEzMiwgCi0gICAgNzYsIDIsIDIxOCwgMjgsIDIsIDcxLCA5MCwgMTMyLCA3NiwgMiwgMjE4LCAyOCwgMiwgNTEsIDcxLCA5MCwgMTMyLCAyMTYsIAotICAgIDI0LCA3NiwgMiwgMjE4LCAyNywgMTMyLCAyMTYsIDI0LCA3NiwgMiwgMjE4LCAyOCwgMiwgNzEsIDkwLCAxMzIsIDIxNiwgCi0gICAgMjQsIDc2LCAyLCAyMTgsIDI4LCAyLCA1MSwgNzEsIDkwLCAxMzIsIDc2LCAyMTcsIDkzLCAyMTMsIDE2NiwgMjE0LCAyMCwgCi0gICAgNzYsIDIyNSwgMTQxLCAyNDcsIDE0NywgMjMzLCA3MCwgMjQ1LCA2MSwgNSwgNzgsIDEzMiwgNjgsIDIyMywgMjAzLCAyMTcsIAotICAgIDQzLCAyMjcsIDM0LCA3OCwgMTMyLCA2OCwgMTMyLCA3NiwgNzgsIDIyMywgMjAzLCAyNTQsIDU3LCAxMjMsIDEwOCwgOTUsIAotICAgIDc2LCAyMTcsIDkzLCAyNDIsIDEwNiwgOTUsIDc2LCAyMTcsIDkzLCAyMTgsIDIyMSwgMTMyLCAyMjQsIDE2OSwgNjgsIDk1LCAKLSAgICAyMjQsIDE2OSwgNjgsIDIyMywgMjAzLCAyMTcsIDQzLCAyMjcsIDM0LCA3OCwgOTUsIDY4LCA5NSwgNzYsIDc4LCAyMjMsIAotICAgIDIwMywgMjU0LCA1NywgMTIzLCAxMDgsIDIxNywgNDMsIDIyNywgMzQsIDc4LCAxMzIsIDY4LCAxMzIsIDc2LCA3OCwgMjU0LCAKLSAgICA1NywgMTIzLCAxMDgsIDEzMiwgNzYsIDc4LCAyMjMsIDIwMywgMjE3LCA0MywgMjI3LCAzMywgOTUsIDc2LCA3OCwgMjIzLCAKLSAgICAyMDMsIDIxNywgNDMsIDIyNywgMzMsIDY3LCAyMzEsIDE0NywgMjE5LCA5NSwgODMsIDMsIDIxOSwgOTUsIDY3LCAzLCAyMTksIAotICAgIDk1LCA4MywgMjIzLCAxNDQsIDIyNiwgNjUsIDY3LCAyMjMsIDE0NCwgMjI2LCA2NSwgMTA3LCAyMzMsIDEwOCwgMjQ5LCAKLSAgICAyMjgsIDEwNywgMjI2LCAyNDgsIDIsIDIyNiwgMjQ4LCAyMzUsIDIxMiwgMTA3LCAyNDksIDIyOSwgMiwgMjQ5LCAyMjksIAotICAgIDIzNSwgMjEyLCAxMDcsIDI0OSwgMjI4LCAxMDcsIDM2LCAyMjIsIDE2OSwgMTM2LCA2LCAxLCAyNTMsIDc1LCAxMzYsIDYsIAotICAgIDEsIDI1MSwgNDYsIDEzNiwgNiwgMSwgMjE0LCAyMzAsIDEzNiwgNiwgMSwgMjQyLCAxNjEsIDEzNiwgNiwgMSwgMjQ3LCA5NCwgCi0gICAgMTM2LCA2LCAxLCAyMTMsIDEyLCAxMzYsIDYsIDEsIDIxMiwgNjEsIDEzNiwgNiwgMSwgMjQ1LCAyNDUsIDEzNiwgNiwgMSwgCi0gICAgMjEyLCA4NCwgMTM2LCA2LCAxLCAyMzUsIDE0NiwgMTM2LCA2LCAxLCA3MCwgMjM1LCAxNDYsIDEzNiwgNiwgMSwgNzIsIAotICAgIDEzNiwgNiwgMSwgMjQ3LCAxMTIsIDEzNiwgNiwgMSwgMjM0LCAyNDUsIDEzNiwgNiwgMSwgMjMyLCAyMTUsIDEzNiwgNiwgMSwgCi0gICAgMjMwLCAxMDEsIDEzNiwgNiwgMSwgMjMwLCAxMiwgMTM2LCA2LCAxLCAyMjcsIDUxLCAxMzYsIDYsIDEsIDIyNSwgMTM4LCAKLSAgICAxMzYsIDYsIDEsIDIyMywgMTI0LCAxMzYsIDYsIDEsIDIyMCwgMTEsIDEzNiwgNiwgMSwgMjE2LCA0NiwgMTM2LCA2LCAxLCAKLSAgICAyMTUsIDE3MSwgMTM2LCA2LCAxLCAyNDMsIDIxNiwgMTM2LCA2LCAxLCAyNDEsIDE4NCwgMTM2LCA2LCAxLCAyMjcsIDMsIAotICAgIDEzNiwgNiwgMSwgMjI2LCA5NiwgMTM2LCA2LCAxLCAyMjAsIDE1MywgMTM2LCA2LCAxLCAyMTYsIDEyNSwgMTM2LCA2LCAxLCAKLSAgICAyNTAsIDEyLCAxMzYsIDYsIDEsIDIyMSwgMjQsIDEzNiwgNiwgMSwgMjEzLCAxOCwgMTM2LCA2LCAxLCAyMTMsIDIwLCAxMzYsIAotICAgIDYsIDEsIDIxMywgNDcsIDEzNiwgNiwgMSwgMjE5LCAxODUsIDE1OSwgMTM2LCA2LCAxLCAyMTIsIDIwMywgMTM2LCA2LCAxLCAKLSAgICAzLCAyMTIsIDE3NCwgMTM2LCA2LCAxLCAzLCAyMTIsIDE3NSwgMiwgMjE4LCAyNywgMTM2LCA2LCAxLCAyMTIsIDIzNSwgCi0gICAgMTM2LCA2LCAxLCAyMzUsIDE4MiwgMywgMjEyLCAxNzQsIDEzNiwgNiwgMSwgMjUxLCAxNzIsIDIxMiwgMTc0LCAxMzYsIDYsIAotICAgIDEsIDIzNSwgMTgyLCAyNTEsIDE3MiwgMjEyLCAxNzQsIDEzNiwgNiwgMSwgMjQ0LCA1MSwgMTM2LCA2LCAxLCAyMzUsIDE0NCwgCi0gICAgMTM2LCA2LCAxLCAyMjAsIDE1MiwgMTM2LCA2LCAxLCAyMTYsIDE2MCwgNjEsIDEzNiwgNiwgMSwgMjMzLCA5OCwgMjMwLCAKLSAgICAxMDEsIDEzNiwgMywgMSwgMjUzLCA3NSwgMTM2LCAzLCAxLCAyNTEsIDQ2LCAxMzYsIDMsIDEsIDIxNCwgMjMwLCAxMzYsIDMsIAotICAgIDEsIDI0MiwgMTYxLCAxMzYsIDMsIDEsIDI0NywgOTQsIDEzNiwgMywgMSwgMjEzLCAxMiwgMTM2LCAzLCAxLCAyMTIsIDYxLCAKLSAgICAxMzYsIDMsIDEsIDI0NSwgMjQ1LCAxMzYsIDMsIDEsIDIxMiwgODQsIDEzNiwgMywgMSwgMjM1LCAxNDYsIDEzNiwgMywgMSwgCi0gICAgNzAsIDIzNSwgMTQ2LCAxMzYsIDMsIDEsIDcyLCAxMzYsIDMsIDEsIDI0NywgMTEyLCAxMzYsIDMsIDEsIDIzNCwgMjQ1LCAKLSAgICAxMzYsIDMsIDEsIDIzMiwgMjE1LCAxMzYsIDMsIDEsIDIzMCwgMTAxLCAxMzYsIDMsIDEsIDIzMCwgMTIsIDEzNiwgMywgMSwgCi0gICAgMjI3LCA1MSwgMTM2LCAzLCAxLCAyMjUsIDEzOCwgMTM2LCAzLCAxLCAyMjMsIDEyNCwgMTM2LCAzLCAxLCAyMjAsIDExLCAKLSAgICAxMzYsIDMsIDEsIDIxNiwgNDYsIDEzNiwgMywgMSwgMjE1LCAxNzEsIDEzNiwgMywgMSwgMjQzLCAyMTYsIDEzNiwgMywgMSwgCi0gICAgMjQxLCAxODQsIDEzNiwgMywgMSwgMjI3LCAzLCAxMzYsIDMsIDEsIDIyNiwgOTYsIDEzNiwgMywgMSwgMjIwLCAxNTMsIAotICAgIDEzNiwgMywgMSwgMjE2LCAxMjUsIDEzNiwgMywgMSwgMjUwLCAxMiwgMTM2LCAzLCAxLCAyMjEsIDI0LCAxMzYsIDMsIDEsIAotICAgIDIxMywgMTgsIDEzNiwgMywgMSwgMjEzLCAyMCwgMTM2LCAzLCAxLCAyMTMsIDQ3LCAxMzYsIDMsIDEsIDIxOSwgMTg1LCAKLSAgICAxNTksIDEzNiwgMywgMSwgMjEyLCAyMDMsIDEzNiwgMywgMSwgMywgMjEyLCAxNzQsIDEzNiwgMywgMSwgMywgMjEyLCAxNzUsIAotICAgIDIsIDIxOCwgMjcsIDEzNiwgMywgMSwgMjEyLCAyMzUsIDEzNiwgMywgMSwgMjM1LCAxODIsIDMsIDIxMiwgMTc0LCAxMzYsIAotICAgIDMsIDEsIDI1MSwgMTcyLCAyMTIsIDE3NCwgMTM2LCAzLCAxLCAyMzUsIDE4MiwgMjUxLCAxNzIsIDIxMiwgMTc0LCAxMzYsIAotICAgIDMsIDEsIDI0NCwgNTEsIDEzNiwgMywgMSwgMjM1LCAxNDQsIDEzNiwgMywgMSwgMjIwLCAxNTIsIDEzNiwgMywgMSwgMjE2LCAKLSAgICAxNjAsIDYxLCAxMzYsIDMsIDEsIDIzMywgOTgsIDIzMCwgMTAxLCA3LCA2LCAxLCAyMzMsIDE3MSwgMiwgNTEsIDEzNCwgNywgCi0gICAgMywgMSwgMjMzLCAxNzEsIDIsIDUxLCAxMzQsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCAyMzEsIDM3LCAyMTcsIDQyLCA3LCA2LCAKLSAgICAxLCAyMjYsIDIzMCwgMiwgOTAsIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAyMTgsIDI3LCA3LCAzLCAxLCAxMTgsIDIsIDkwLCAKLSAgICA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgMjQ3LCAyMDcsIDkwLCA3LCA2LCAxLCAyNDIsIDQyLCAyLCAyNDcsIDI0NiwgNywgMywgCi0gICAgMSwgMjQyLCA0MiwgMiwgMjQ3LCAyNDYsIDcsIDYsIDEsIDIzNSwgMjgsIDIsIDI0NywgMjQ2LCA3LCAzLCAxLCAyMzUsIDI4LCAKLSAgICAyLCAyNDcsIDI0NiwgNywgNiwgMSwgMjEyLCAxNTMsIDIsIDI0NywgMjQ2LCA3LCAzLCAxLCAyMTIsIDE1MywgMiwgMjQ3LCAKLSAgICAyNDYsIDcsIDYsIDEsIDI1NCwgNTIsIDcsIDYsIDEsIDIzMiwgMTEwLCAyLCAxMDEsIDcsIDYsIDEsIDIxNiwgNTgsIDYxLCAKLSAgICA3LCA2LCAxLCAyMTYsIDU4LCAyNTQsIDUyLCA3LCAzLCAxLCAyMTUsIDgwLCAyLCA0NiwgMTAxLCA3LCA2LCAxLCAyMTQsIAotICAgIDgzLCAyLCAxMDEsIDcsIDMsIDEsIDIxNCwgODMsIDIsIDEwMSwgNywgMywgMSwgMjE1LCA4MCwgMiwgMjQ5LCA0MSwgNywgNiwgCi0gICAgMSwgMTUxLCAyNDIsIDQxLCA3LCAzLCAxLCAxNTEsIDI0MiwgNDEsIDcsIDMsIDEsIDIxOCwgMjUsIDIyNiwgOSwgNywgMywgCi0gICAgMSwgMTkxLCAyLCAyMjgsIDE2MSwgNywgMywgMSwgMjE2LCA1OCwgMjI0LCAxMTMsIDIsIDIxOCwgMjcsIDcsIDMsIDEsIAotICAgIDE1NywgMiwgMTE1LCAyMjMsIDEzMSwgMjM1LCAyMTIsIDcsIDEsIDMsIDYsIDIxNiwgNTgsIDc0LCA3LCAyMTksIDEwLCAzLCAKLSAgICAxLCAyMzUsIDE0MiwgNTksIDEsIDYsIDIxNSwgNzksIDcsIDYsIDEsIDIyMywgNCwgMiwgMjE4LCAxOTUsIDIxOCwgMjcsIDcsIAotICAgIDYsIDEsIDIxMiwgMTUzLCAyLCAyMTgsIDE5NSwgMjE4LCAyNywgNzksIDYsIDEsIDI1NCwgNzMsIDc5LCAzLCAxLCAyNTQsIAotICAgIDczLCA3OSwgNiwgMSwgMjE0LCAxNTEsIDc5LCAzLCAxLCAyMTQsIDE1MSwgNzksIDYsIDEsIDI0MywgODMsIDc5LCAzLCAxLCAKLSAgICAyNDMsIDgzLCA3OSwgNiwgMSwgMjQ4LCAxMzYsIDc5LCAzLCAxLCAyNDgsIDEzNiwgNzksIDYsIDEsIDI0NSwgMTUxLCA3OSwgCi0gICAgMywgMSwgMjQ1LCAxNTEsIDc5LCA2LCAxLCAyMTksIDIyMCwgNzksIDMsIDEsIDIxOSwgMjIwLCA3OSwgNiwgMSwgMjEyLCAKLSAgICA5NCwgNzksIDMsIDEsIDIxMiwgOTQsIDc5LCA2LCAxLCAyNDEsIDIzMSwgNzksIDMsIDEsIDI0MSwgMjMxLCA3OSwgNiwgMSwgCi0gICAgMjE3LCAxMzAsIDc5LCAzLCAxLCAyMTcsIDEzMCwgNzksIDYsIDEsIDI0MCwgMTA5LCA3OSwgMywgMSwgMjQwLCAxMDksIDc5LCAKLSAgICA2LCAxLCAyMzQsIDIzMiwgNzksIDMsIDEsIDIzNCwgMjMyLCA3OSwgNiwgMSwgMjMzLCA5NiwgNzksIDMsIDEsIDIzMywgOTYsIAotICAgIDc5LCA2LCAxLCAyMzEsIDQyLCA3OSwgMywgMSwgMjMxLCA0MiwgNzksIDYsIDEsIDIyOSwgNjQsIDc5LCAzLCAxLCAyMjksIAotICAgIDY0LCA3OSwgNiwgMSwgMjMzLCAyNDIsIDc5LCAzLCAxLCAyMzMsIDI0MiwgNzksIDYsIDEsIDc1LCA3OSwgMywgMSwgNzUsIAotICAgIDc5LCA2LCAxLCAyMjUsIDI0MCwgNzksIDMsIDEsIDIyNSwgMjQwLCA3OSwgNiwgMSwgMjIzLCAxMTIsIDc5LCAzLCAxLCAKLSAgICAyMjMsIDExMiwgNzksIDYsIDEsIDIyMCwgOTEsIDc5LCAzLCAxLCAyMjAsIDkxLCA3OSwgNiwgMSwgMjE3LCAyNDgsIDc5LCAKLSAgICAzLCAxLCAyMTcsIDI0OCwgNzksIDYsIDEsIDIxNSwgMTk2LCA3OSwgMywgMSwgMjE1LCAxOTYsIDc5LCA2LCAxLCAyNDQsIAotICAgIDkwLCA3OSwgMywgMSwgMjQ0LCA5MCwgNzksIDYsIDEsIDIzNCwgMTE4LCA3OSwgMywgMSwgMjM0LCAxMTgsIDc5LCA2LCAxLCAKLSAgICAyMjUsIDQ2LCA3OSwgMywgMSwgMjI1LCA0NiwgNzksIDYsIDEsIDIyNywgNDQsIDc5LCAzLCAxLCAyMjcsIDQ0LCA3OSwgNiwgCi0gICAgMSwgMjQ3LCAyMDUsIDI1NCwgNzgsIDc5LCAzLCAxLCAyNDcsIDIwNSwgMjU0LCA3OCwgNzksIDYsIDEsIDUzLCA3OSwgMjU0LCAKLSAgICAxMDMsIDc5LCAzLCAxLCA1MywgNzksIDI1NCwgMTAzLCA3OSwgNiwgMSwgMjQ5LCA1NSwgMjQ1LCAxNTEsIDc5LCAzLCAxLCAKLSAgICAyNDksIDU1LCAyNDUsIDE1MSwgNzksIDYsIDEsIDI0NywgMjA1LCAyMzQsIDIzMiwgNzksIDMsIDEsIDI0NywgMjA1LCAyMzQsIAotICAgIDIzMiwgNzksIDYsIDEsIDI0NywgMjA1LCAyMjksIDY0LCA3OSwgMywgMSwgMjQ3LCAyMDUsIDIyOSwgNjQsIDc5LCA2LCAxLCAKLSAgICAyNDksIDU1LCAyMjksIDY0LCA3OSwgMywgMSwgMjQ5LCA1NSwgMjI5LCA2NCwgNzksIDYsIDEsIDUzLCA3OSwgMjI3LCA0NCwgCi0gICAgNzksIDMsIDEsIDUzLCA3OSwgMjI3LCA0NCwgNzksIDYsIDEsIDIyMiwgMTYxLCA3OSwgMywgMSwgMjIyLCAxNjEsIDc5LCA2LCAKLSAgICAxLCAyNDksIDY4LCAyMjAsIDIzNSwgNzksIDMsIDEsIDI0OSwgNjgsIDIyMCwgMjM1LCA3OSwgNiwgMSwgNTMsIDc5LCAyMjAsIAotICAgIDIzNSwgNzksIDMsIDEsIDUzLCA3OSwgMjIwLCAyMzUsIDc5LCA2LCAxLCA1MywgNzksIDI0NSwgNDAsIDc5LCAzLCAxLCA1MywgCi0gICAgNzksIDI0NSwgNDAsIDc5LCA2LCAxLCAyNTQsIDkwLCAyMzQsIDEyMywgNzksIDMsIDEsIDI1NCwgOTAsIDIzNCwgMTIzLCAKLSAgICA3OSwgNiwgMSwgMjQ3LCAyMDUsIDI0MSwgMzIsIDc5LCAzLCAxLCAyNDcsIDIwNSwgMjQxLCAzMiwgNzksIDYsIDEsIDUzLCAKLSAgICA3OSwgMjQxLCAzMiwgNzksIDMsIDEsIDUzLCA3OSwgMjQxLCAzMiwgNzksIDYsIDEsIDUzLCA3OSwgMTU5LCA3OSwgMywgMSwgCi0gICAgNTMsIDc5LCAxNTksIDc5LCA2LCAxLCAyMzMsIDE3MCwgMTU5LCA3OSwgMywgMSwgMjMzLCAxNzAsIDE1OSwgNzksIDYsIDEsIAotICAgIDUzLCA3OSwgMjQxLCAyMDEsIDc5LCAzLCAxLCA1MywgNzksIDI0MSwgMjAxLCA3OSwgNiwgMSwgNTMsIDc5LCAyNDEsIDIzNCwgCi0gICAgNzksIDMsIDEsIDUzLCA3OSwgMjQxLCAyMzQsIDc5LCA2LCAxLCA1MywgNzksIDI0MywgNzgsIDc5LCAzLCAxLCA1MywgNzksIAotICAgIDI0MywgNzgsIDc5LCA2LCAxLCA1MywgNzksIDI0NywgMTE1LCA3OSwgMywgMSwgNTMsIDc5LCAyNDcsIDExNSwgNzksIDYsIAotICAgIDEsIDUzLCA3OSwgMjIwLCAyMDIsIDc5LCAzLCAxLCA1MywgNzksIDIyMCwgMjAyLCA3OSwgNiwgMSwgNTMsIDIyOCwgNjMsIAotICAgIDIyMCwgMjAyLCA3OSwgMywgMSwgNTMsIDIyOCwgNjMsIDIyMCwgMjAyLCA3OSwgNiwgMSwgNTMsIDIyOCwgNjMsIDIyOSwgCi0gICAgMTEzLCA3OSwgMywgMSwgNTMsIDIyOCwgNjMsIDIyOSwgMTEzLCA3OSwgNiwgMSwgNTMsIDIyOCwgNjMsIDIyOCwgMTAsIDc5LCAKLSAgICAzLCAxLCA1MywgMjI4LCA2MywgMjI4LCAxMCwgNzksIDYsIDEsIDUzLCAyMjgsIDYzLCAyMTQsIDIxLCA3OSwgMywgMSwgNTMsIAotICAgIDIyOCwgNjMsIDIxNCwgMjEsIDc5LCAxNiwgMjM0LCAyNTAsIDc5LCAxNiwgMjMxLCA0MywgMjIzLCAxMTIsIDc5LCAxNiwgCi0gICAgMjI1LCAyNDEsIDIyMywgMTEyLCA3OSwgMTYsIDIxOSwgODcsIDc5LCAxNiwgMjE3LCAyNDksIDIyMywgMTEyLCA3OSwgMTYsIAotICAgIDIzNCwgMTE5LCAyMjMsIDExMiwgNzksIDE2LCAyMjAsIDIwMywgMjIwLCA5MSwgNzksIDYsIDEsIDI0OSwgNTUsIDIyMCwgCi0gICAgMjM1LCA3OSwgMywgMSwgMjQ5LCA1NSwgMjIwLCAyMzUsIDc5LCA2LCAxLCAyNDksIDU1LCAyNDMsIDc4LCA3OSwgMywgMSwgCi0gICAgMjQ5LCA1NSwgMjQzLCA3OCwgNzksIDM3LCAyMjksIDY1LCA0OSwgNzksIDM3LCAyMTksIDE3OSwgMjUzLCAxMzksIDc5LCAKLSAgICAzNywgMjE5LCAxNzksIDIzMywgNDUsIDc5LCA1MywgMjI4LCA2MywgMjQzLCAyMDAsIDIxOSwgNjksIDc5LCA1MywgMjI4LCAKLSAgICA2MywgMjQ3LCAxNDksIDIyNCwgMTU4LCA3NywgNzksIDUzLCAyMjgsIDYzLCAyMzUsIDIzNCwgMjI0LCAxNTgsIDc3LCA3OSwgCi0gICAgNTMsIDIyOCwgNjMsIDIxNCwgMjE4LCAyNDcsIDEyNCwgNzksIDI0MywgMjI4LCAxMjIsIDI0MiwgOSwgNzksIDI0MywgMjAwLCAKLSAgICAyMTksIDY5LCA3OSwgMjMwLCAxOTQsIDI0NywgMTI0LCAxMDAsIDMsIDEsIDI1NCwgMzIsIDEwMCwgMywgMSwgMjUyLCA3MSwgCi0gICAgMTAwLCAzLCAxLCAyNDMsIDgyLCAxMDAsIDMsIDEsIDI0NywgODIsIDEwMCwgMywgMSwgMjQ1LCAxMDgsIDEwMCwgMywgMSwgCi0gICAgMjE0LCAxNDEsIDEwMCwgMywgMSwgMjEyLCA4MiwgMTAwLCAzLCAxLCAyMTgsIDExLCAxMDAsIDMsIDEsIDIzNSwgMjUxLCAKLSAgICAxMDAsIDMsIDEsIDIzNCwgMjM5LCAxMDAsIDMsIDEsIDIzMywgMTA0LCAxMDAsIDMsIDEsIDIzMSwgMjQ4LCAxMDAsIDMsIDEsIAotICAgIDIzMCwgMTUsIDEwMCwgMywgMSwgMjI3LCA2MiwgMTAwLCAzLCAxLCAyMjYsIDE0NSwgMTAwLCAzLCAxLCAyMTIsIDcxLCAKLSAgICAxMDAsIDMsIDEsIDIyNCwgNjEsIDEwMCwgMywgMSwgMjIyLCAxNTksIDEwMCwgMywgMSwgMjE4LCAxLCAxMDAsIDMsIDEsIAotICAgIDIxNSwgMTYwLCAxMDAsIDMsIDEsIDIyNiwgMTYsIDEwMCwgMywgMSwgMjM0LCAxMjcsIDEwMCwgMywgMSwgMjQyLCAyMTcsIAotICAgIDEwMCwgMywgMSwgMjI0LCAyMTcsIDEwMCwgMywgMSwgMjIwLCAyMDAsIDEwMCwgMywgMSwgMjUwLCAzNCwgMTAwLCAzLCAxLCAKLSAgICAyNTAsIDE5NSwgMTAwLCAzLCAxLCAyMzUsIDEwMywgMTAwLCAzLCAxLCAyNDksIDIzMywgMTAwLCAzLCAxLCAyNTAsIDc5LCAKLSAgICAxMDAsIDMsIDEsIDIxMywgMTUxLCAxMDAsIDMsIDEsIDIzNSwgMTEzLCAxMDAsIDMsIDEsIDI0MiwgMjQsIDEwMCwgMywgMSwgCi0gICAgMjQxLCAyMjIsIDEwMCwgMywgMSwgMjQxLCAxNjAsIDEwMCwgMywgMSwgMjE0LCA2LCAxMDAsIDMsIDEsIDI0MSwgMjQzLCAKLSAgICAxMDAsIDMsIDEsIDI0MSwgNTEsIDIxNywgNjIsIDEsIDE4NiwgMjE3LCA2MiwgMSwgMjEzLCA4NywgMjE3LCA2MiwgMSwgCi0gICAgMjEzLCA4NiwgMjE3LCA2MiwgMSwgMjEzLCA3NiwgMjE3LCA2MiwgMSwgMjEzLCA3NCwgMjE3LCA2MiwgMSwgMjUxLCAyMDksIAotICAgIDI1NCwgMTc2LCAyMTMsIDcwLCAyMTcsIDYyLCAxLCAyMTMsIDcwLCAyMTcsIDYyLCAxLCAyMTMsIDg0LCAyMTcsIDYyLCAxLCAKLSAgICAyMTMsIDgxLCAyMTcsIDYyLCAxLCAyMTMsIDgzLCAyMTcsIDYyLCAxLCAyMTMsIDgyLCAyMTcsIDYyLCAxLCAyMTMsIDMsIAotICAgIDIxNywgNjIsIDEsIDIxMywgNzgsIDIxNywgNjIsIDEsIDIxMywgNjgsIDIxNywgNjIsIDEsIDIxNiwgNzksIDIxMywgNjgsIAotICAgIDIxNywgNjIsIDEsIDIxMywgNjUsIDIxNywgNjIsIDEsIDIxMywgNzIsIDIxNywgNjIsIDEsIDI1MSwgMjA5LCAyNTQsIDE3NiwgCi0gICAgMjEzLCA3MiwgMjE3LCA2MiwgMSwgMjE2LCA3OSwgMjEzLCA3MiwgMjE3LCA2MiwgMSwgMjEzLCA3MSwgMjE3LCA2MiwgMSwgCi0gICAgMjEzLCA5MSwgMjE3LCA2MiwgMSwgMjEzLCA2NiwgMjE3LCA2MiwgMSwgMjE2LCA3OSwgMjEzLCA2NiwgMjE3LCA2MiwgMSwgCi0gICAgMjEzLCA1NiwgMjE3LCA2MiwgMSwgMjE2LCA3OSwgMjEzLCA1NiwgMjE3LCA2MiwgMSwgMjEyLCAyNTUsIDIxNywgNjIsIDEsIAotICAgIDIxMywgNDAsIDIxNywgNjIsIDEsIDI1NCwgMTEyLCAyMTMsIDQwLCAyMTcsIDYyLCAxLCAyMTYsIDc5LCAyMTMsIDQwLCAKLSAgICAyMTcsIDYyLCAxLCAyMTMsIDY0LCAyMTcsIDYyLCAxLCAyMTMsIDYzLCAyMTcsIDYyLCAxLCAyMTMsIDYwLCAyMTcsIDYyLCAKLSAgICAxLCAyMTYsIDc5LCAyMTMsIDczLCAyMTcsIDYyLCAxLCAyMTYsIDc5LCAyMTMsIDU4LCAyMTcsIDYyLCAxLCAyMTMsIDU3LCAKLSAgICAyMTcsIDYyLCAxLCAyMTIsIDIwMywgMjE3LCA2MiwgMSwgMjEzLCA1NCwgMjE3LCA2MiwgMSwgMjEzLCA1MywgMjE3LCA2MiwgCi0gICAgMSwgMjEzLCA3NSwgMjE3LCA2MiwgMSwgMjE2LCA3OSwgMjEzLCA3NSwgMjE3LCA2MiwgMSwgMjUzLCA3OSwgMjEzLCA3NSwgCi0gICAgMjE3LCA2MiwgMSwgMjEzLCA1MiwgMjE3LCA2MiwgMSwgMjEzLCA1MCwgMjE3LCA2MiwgMSwgMjEzLCA1MSwgMjE3LCA2MiwgCi0gICAgMSwgMjEzLCA0OSwgMjE3LCA2MiwgMSwgMjEzLCA0OCwgMjE3LCA2MiwgMSwgMjEzLCA4NSwgMjE3LCA2MiwgMSwgMjEzLCAKLSAgICA0NiwgMjE3LCA2MiwgMSwgMjEzLCA0NSwgMjE3LCA2MiwgMSwgMjEzLCA0NCwgMjE3LCA2MiwgMSwgMjEzLCA0MywgMjE3LCAKLSAgICA2MiwgMSwgMjEzLCA0MSwgMjE3LCA2MiwgMSwgMjE3LCAyNDEsIDIxMywgNDEsIDIxNywgNjIsIDEsIDIxMywgMzksIDIxNywgCi0gICAgNjIsIDU5LCAxLCAyMzMsIDE0OSwgNzcsIDIxNywgNjIsIDIyMSwgNTgsIDc3LCAyMTcsIDYyLCAyNDksIDEzMywgMjM1LCAKLSAgICA2NiwgMjgsIDQsIDIzMiwgMjA3LCAyOCwgNCwgMjMwLCAyMzAsIDI4LCA0LCAyMjMsIDExMCwgMjgsIDQsIDIxOSwgMjQxLCAKLSAgICAyOCwgNCwgMjIwLCAxODYsIDI4LCA0LCAyNTEsIDEyNywgMjgsIDQsIDIxNiwgMjUyLCAyOCwgNCwgMjQ5LCAxNzQsIDI4LCAKLSAgICA0LCAyMjgsIDE4MywgMjgsIDQsIDIyNywgMjUyLCAyOCwgNCwgMjQyLCAxNTYsIDIyNywgMTIwLCAyOCwgNCwgMjEyLCAxNSwgCi0gICAgMjgsIDQsIDI0NywgOTcsIDI4LCA0LCAyNDgsIDU1LCAyOCwgNCwgMjM1LCA3MCwgMjgsIDQsIDIxNywgMTA4LCAyOCwgNCwgCi0gICAgMjUwLCAyMiwgMjgsIDQsIDIyNSwgMjUyLCAyOCwgNCwgMjI1LCAxNDksIDI4LCA0LCAyNDIsIDIzMSwgMjgsIDQsIDI0MiwgCi0gICAgMjI3LCAyOCwgNCwgMjQyLCAyMjgsIDI4LCA0LCAyNDIsIDIyOSwgMjgsIDQsIDIxOSwgMTU3LCAyOCwgNCwgMjE5LCAxMTcsIAotICAgIDI4LCA0LCAyMTksIDEyOCwgMjgsIDQsIDIxOSwgMTU2LCAyOCwgNCwgMjE5LCAxMzIsIDI4LCA0LCAyMTksIDEzMywgMjgsIAotICAgIDQsIDIxOSwgMTIxLCAyOCwgNCwgMjUwLCAxNDYsIDI4LCA0LCAyNTAsIDEyNiwgMjgsIDQsIDI1MCwgMTI4LCAyOCwgNCwgCi0gICAgMjUwLCAxNDUsIDI4LCA0LCAyNTAsIDE0MywgMjgsIDQsIDI1MCwgMTQ0LCAyOCwgNCwgMjUwLCAxMjcsIDI4LCA0LCAyMTEsIAotICAgIDI0MiwgMjgsIDQsIDIxMSwgMjIyLCAyOCwgNCwgMjExLCAyMzMsIDI4LCA0LCAyMTEsIDI0MSwgMjgsIDQsIDIxMSwgMjM2LCAKLSAgICAyOCwgNCwgMjExLCAyMzcsIDI4LCA0LCAyMTEsIDIyNSwgMjgsIDQsIDI1MCwgMTQyLCAyOCwgNCwgMjUwLCAxMjksIDI4LCAKLSAgICA0LCAyNTAsIDEzMSwgMjgsIDQsIDI1MCwgMTQxLCAyOCwgNCwgMjUwLCAxMzksIDI4LCA0LCAyNTAsIDE0MCwgMjgsIDQsIAotICAgIDI1MCwgMTMwLCAyOCwgNCwgMjI0LCAxMjUsIDI4LCA0LCAyMjQsIDExNSwgMjgsIDQsIDIyNCwgMTIxLCAyOCwgNCwgMjI0LCAKLSAgICAxMjQsIDI4LCA0LCAyMjQsIDEyMiwgMjgsIDQsIDIyNCwgMTIzLCAyOCwgNCwgMjI0LCAxMjAsIDI4LCA0LCAyMzMsIDE4MSwgCi0gICAgMjgsIDQsIDIzMywgMTczLCAyOCwgNCwgMjMzLCAxNzYsIDI4LCA0LCAyMzMsIDE4MCwgMjgsIDQsIDIzMywgMTc3LCAyOCwgCi0gICAgNCwgMjMzLCAxNzgsIDI4LCA0LCAyMzMsIDE3NCwgMjgsIDQsIDIxMywgMTE4LCAyOCwgNCwgMjEzLCAxMDgsIDI4LCA0LCAKLSAgICAyMTMsIDExNCwgMjgsIDQsIDIxMywgMTE3LCAyOCwgNCwgMjEzLCAxMTUsIDI4LCA0LCAyMTMsIDExNiwgMjgsIDQsIDIxMywgCi0gICAgMTEzLCAyOCwgNCwgMjQyLCA1MiwgMjgsIDQsIDI0MiwgNDMsIDI4LCA0LCAyNDIsIDQ2LCAyOCwgNCwgMjQyLCA1MSwgMjgsIAotICAgIDQsIDI0MiwgNDgsIDI4LCA0LCAyNDIsIDQ5LCAyOCwgNCwgMjQyLCA0NSwgMzcsIDMzLCAxLCAyNTEsIDI1MSwgMzcsIDMzLCAKLSAgICAxLCAyMTQsIDIzMiwgMzcsIDMzLCAxLCAyNDIsIDIxMiwgMzcsIDMzLCAxLCAyNDgsIDQxLCAzNywgMzMsIDEsIDIxMiwgNjcsIAotICAgIDM3LCAzMywgMSwgMjEyLCA4NywgMzcsIDMzLCAxLCAxODEsIDM3LCAzMywgMSwgMjQ1LCAxMzEsIDM3LCAzMywgMSwgMjQ1LCAKLSAgICAxMTcsIDM3LCAzMywgMSwgMjQ1LCAxMDgsIDM3LCAzMywgMSwgNzUsIDM3LCAzMywgMSwgMjI2LCA5NiwgMzcsIDMzLCAxLCAKLSAgICAyNDUsIDU1LCAzNywgMzMsIDEsIDI0NSwgNDUsIDM3LCAzMywgMSwgMjE3LCAyMjksIDM3LCAzMywgMSwgMTU5LCAzNywgMzMsIAotICAgIDEsIDIxNiwgMTM2LCAzNywgMzMsIDEsIDI1MCwgNjcsIDM3LCAzMywgMSwgMjIxLCAyNCwgMzcsIDMzLCAxLCAyMjAsIDI0NSwgCi0gICAgMzcsIDMzLCAxLCAyNDQsIDUxLCAzNywgMzMsIDEsIDI0NSwgNDQsIDM3LCAzMywgMSwgNjEsIDM3LCAzMywgMSwgMjM2LCAKLSAgICA1NSwgMzcsIDMzLCAxLCAyNDcsIDExMywgMzcsIDMzLCAxLCAyMzAsIDIxMCwgMjE1LCAxNzUsIDM3LCAzMywgMSwgMjEzLCAKLSAgICA0OSwgMzcsIDMzLCAxLCAyMTIsIDIwMywgMzcsIDMzLCAxLCAyMzUsIDE4MSwgNjEsIDM3LCAzMywgMSwgMjMyLCAyMjEsIAotICAgIDIxMiwgMTc0LCAzNywgMzMsIDEsIDI1MSwgMTcyLCAyMTIsIDE3NCwgMzcsIDMzLCAxLCAyMzUsIDE4MSwgMjUxLCAxNzIsIAotICAgIDIxMiwgMTc0LCA0NiwgMjU0LCAxOSwgMjE5LCA1LCAyMzEsIDIxNywgNDYsIDI1NCwgMTksIDI0NiwgNzIsIDIxOSwgNSwgCi0gICAgMjMxLCAyMTcsIDQyLCAyMTksIDUsIDEyNSwgNDYsIDIxOSwgNSwgMTI1LCA0MiwgMjQ2LCA3MiwgMjE5LCA1LCAxMjUsIDQ2LCAKLSAgICAyNDYsIDcyLCAyMTksIDUsIDEyNSwgMjI0LCA0OCwgMjM1LCAxOTksIDIzMSwgMjE3LCAyMjQsIDQ4LCAyNDYsIDcyLCAyMzUsIAotICAgIDE5OSwgMjMxLCAyMTcsIDI0NiwgNzIsIDIxNiwgMTk5LCAyMzEsIDIxNywgNDIsIDIxNiwgMTk5LCAxMjUsIDQ2LCAyMTYsIAotICAgIDE5OSwgMTI1LCAyMjQsIDQ4LCAyMTksIDE2NiwgNDIsIDIyNCwgNDgsIDIyNywgNjQsIDEyNSwgNDYsIDIyNCwgNDgsIDIyNywgCi0gICAgNjQsIDEyNSwgMjQ1LCAxNjYsIDI0OSwgOTcsIDIyNiwgMTQxLCAyNDMsIDI0NywgMjI2LCAxNDEsIDIyMywgMjAyLCAyNDMsIAotICAgIDI0NywgMjI2LCAxNDEsIDI0MCwgMTU3LCAyNDYsIDcyLCAyMjcsIDExNSwgMjQ2LCA1OCwgMjU0LCAyOCwgMjE1LCAxMjQsIAotICAgIDI1NCwgMjgsIDI0NiwgNzIsIDIyMywgMTQ0LCAyNTQsIDE4LCA1MSwgMjI3LCAxMTIsIDI0MCwgMTYwLCAyMzUsIDE5MSwgCi0gICAgMjM1LCAxOTgsIDIyNiwgMTg2LCAyNTEsIDgxLCAyNDAsIDE2MSwgMiwgMjQ3LCAyMDksIDIxNywgNDMsIDIsIDIyMywgMTMxLCAKLSAgICA0OSwgNDIsIDExNSwgMjI2LCAxMzMsIDEyNSwgNDYsIDExNSwgMjI2LCAxMzMsIDEyNSwgMjE3LCA0MywgMiwgNjIsIDQ5LCAKLSAgICAyMTcsIDQzLCAyLCA2MiwgNTUsIDQyLCA3MSwgMjUyLCA2MCwgMiwgMjI0LCAxNTIsIDQ2LCA3MSwgMjUyLCA2MCwgMiwgCi0gICAgMjI0LCAxNTIsIDIxNiwgMjI3LCA0MiwgMTUxLCAxMjUsIDIxNiwgMjI3LCA0NiwgMTUxLCAxMjUsIDI1MSwgMTAxLCA0MiwgCi0gICAgMTUxLCAxMjUsIDI1MSwgMTAxLCA0NiwgMTUxLCAxMjUsIDQyLCAyMjAsIDExMywgMTExLCAxMjUsIDQ2LCAyMjAsIDExMywgCi0gICAgMTExLCAxMjUsIDQyLCA1MSwgMjI2LCAxMzEsIDQ2LCA1MSwgMjI2LCAxMzEsIDExNywgMTc2LCAxMTAsIDEyMiwgNjIsIAotICAgIDIyNSwgMjYsIDEyMiwgNjIsIDExMCwgMTE3LCAxNzYsIDIyNSwgMjYsIDkxLCAyNDMsIDIzNywgNjIsIDIyNSwgMjYsIDI0NCwgCi0gICAgNTAsIDYyLCA3NywgMjIzLCAyMDIsIDIyNCwgMTU4LCA3NywgNzEsIDIxNywgNDIsIDIyMywgMTMxLCAyMjUsIDE0NCwgMjEzLCAKLSAgICAxOTYsIDIyMSwgNTgsIDIzMSwgMzcsIDI0NywgNzQsIDksIDM0LCAyMjMsIDIyNywgOSwgMzQsIDI0OSwgMjAzLCA5LCAzNCwgCi0gICAgMjIyLCA5NSwgMTE2LCA5LCAzNCwgMjIyLCA5NSwgMTA5LCA5LCAzNCwgMjIyLCA5NSwgMTY2LCA5LCAzNCwgMjI2LCA0MywgCi0gICAgOSwgMzQsIDI1MSwgODksIDksIDM0LCAyMTgsIDQwLCA5LCAzNCwgMjM0LCA0MiwgMTE2LCA5LCAzNCwgMjM0LCA0MiwgMTA5LCAKLSAgICA5LCAzNCwgMjQ3LCAxMjIsIDksIDM0LCAyMjIsIDk4LCA5LCAzNCwgMywgMTE2LCA5LCAzNCwgMywgMTA5LCA5LCAzNCwgCi0gICAgMjMzLCAxMjEsIDExNiwgOSwgMzQsIDIzMywgMTIxLCAxMDksIDksIDM0LCAyMzMsIDEyMSwgMTY2LCA5LCAzNCwgMjMzLCAKLSAgICAxMjEsIDE2MywgOSwgMzQsIDIxOSwgMjUyLCA5LCAzNCwgMjE3LCA5OCwgOSwgMzQsIDIxOSwgMjUwLCAxMTYsIDksIDM0LCAKLSAgICAyMTksIDI1MCwgMTA5LCA5LCAzNCwgMjQxLCAyMTIsIDExNiwgOSwgMzQsIDI0MSwgMjEyLCAxMDksIDksIDM0LCAyNDEsIAotICAgIDI1NCwgOSwgMzQsIDIyNCwgMzksIDksIDM0LCAyNTAsIDE5LCA5LCAzNCwgMjE4LCAyMzgsIDksIDM0LCAyMzAsIDE5OCwgOSwgCi0gICAgMzQsIDI0OCwgMzksIDksIDM0LCAyMzAsIDE5MCwgOSwgMzQsIDI0OSwgMjE4LCA5LCAzNCwgMjE0LCAyNSwgMTE2LCA5LCAKLSAgICAzNCwgMjE0LCAyNSwgMTA5LCA5LCAzNCwgMjQ0LCA2NSwgOSwgMzQsIDIyNiwgMTA2LCAxMTYsIDksIDM0LCAyMjYsIDEwNiwgCi0gICAgMTA5LCA5LCAzNCwgMjIwLCA4NiwgMTUxLCAyMTYsIDE5NCwgMjE2LCAxNDYsIDksIDM0LCAyNDksIDg0LCA5LCAzNCwgMjQ3LCAKLSAgICA5MCwgOSwgMzQsIDIzNSwgMTM1LCA5LCAzNCwgMjUxLCAxMjIsIDY1LCAyNDksIDE4NywgOSwgMzQsIDI0NCwgMjM5LCA5LCAKLSAgICAzNCwgMjE5LCAxODEsIDExNiwgOSwgMzQsIDIxOSwgMTgxLCAxMDksIDksIDM0LCAyNTIsIDczLCA5LCAzNCwgMjIwLCA5MywgCi0gICAgOSwgMzQsIDI1MCwgMjQ5LCAyMjAsIDkzLCA5LCAzNCwgMjI5LCAxNzIsIDExNiwgOSwgMzQsIDIyOSwgMTcyLCAxMDksIDksIAotICAgIDM0LCAyMjksIDE3MiwgMTY2LCA5LCAzNCwgMjI5LCAxNzIsIDE2MywgOSwgMzQsIDIzMSwgMTExLCA5LCAzNCwgMjIwLCAKLSAgICAyMzcsIDksIDM0LCAyMjQsIDQ1LCA5LCAzNCwgMjQ1LCA0LCA5LCAzNCwgMjI3LCA3NSwgOSwgMzQsIDI1MSwgNjEsIDExNiwgCi0gICAgOSwgMzQsIDI1MSwgNjEsIDEwOSwgOSwgMzQsIDIzMSwgMTUxLCA5LCAzNCwgMjMwLCAxOTMsIDksIDM0LCAyNDIsIDExNywgCi0gICAgMTE2LCA5LCAzNCwgMjQyLCAxMTcsIDEwOSwgOSwgMzQsIDI0MiwgMTE3LCAxNjYsIDksIDM0LCAyMTcsIDYwLCA5LCAzNCwgCi0gICAgMjQ5LCAxODYsIDksIDM0LCAyMTMsIDI1MCwgMTE2LCA5LCAzNCwgMjEzLCAyNTAsIDEwOSwgOSwgMzQsIDI1MCwgMjQ5LCAKLSAgICAyMjIsIDg5LCA5LCAzNCwgMjIwLCA4NiwgMjQwLCAyMzUsIDksIDM0LCAyNDAsIDIzNSwgOSwgMzQsIDI1MCwgMjQ5LCAyMTksIAotICAgIDE5MCwgOSwgMzQsIDI1MCwgMjQ5LCAyMjAsIDIzMiwgOSwgMzQsIDI0NCwgMSwgOSwgMzQsIDI1MCwgMjQ5LCAyNTAsIDE2MCwgCi0gICAgOSwgMzQsIDIyMCwgODYsIDIxNCwgNDEsIDksIDM0LCAyMTQsIDQyLCAxMTYsIDksIDM0LCAyMTQsIDQyLCAxMDksIDksIDM0LCAKLSAgICAyNDksIDIyMCwgOSwgMzQsIDI1MCwgMjQ5LCAyNDIsIDE0MiwgOSwgMzQsIDE4NCwgMTE2LCA5LCAzNCwgMTg0LCAxMDksIDksIAotICAgIDM0LCAyNTAsIDI0OSwgMjMyLCAxOTAsIDksIDM0LCAyNTAsIDI0OSwgMjQzLCA2NCwgOSwgMzQsIDIzMCwgMTg5LCAxMTYsIAotICAgIDksIDM0LCAyMzAsIDE4OSwgMTA5LCA5LCAzNCwgMjI0LCA1MCwgOSwgMzQsIDI1MSwgMTMwLCA5LCAzNCwgMjUwLCAyNDksIAotICAgIDIxOCwgNywgMjMzLCA3NiwgOSwgMzQsIDI1MCwgMjQ5LCAyMzMsIDc3LCA5LCAzNCwgMjUwLCAyNDksIDIxMywgMjI0LCA5LCAKLSAgICAzNCwgMjUwLCAyNDksIDI0NCwgMTUsIDksIDM0LCAyNDUsIDE3NCwgMTE2LCA5LCAzNCwgMjQ1LCAxNzQsIDEwOSwgOSwgMzQsIAotICAgIDI0NSwgMTc0LCAxNjYsIDksIDM0LCAyNTAsIDI0OSwgMjQ1LCAxNzMsIDksIDM0LCAyNDEsIDIxOSwgOSwgMzQsIDI1MCwgCi0gICAgMjQ5LCAyNDAsIDIzMiwgOSwgMzQsIDI1MSwgMTE5LCA5LCAzNCwgMjQyLCAxOTgsIDksIDM0LCAyNTAsIDI0OSwgMjQ0LCAKLSAgICA1OSwgOSwgMzQsIDI1MCwgMjQ5LCAyNTEsIDE2MCwgOSwgMzQsIDI1MCwgMjQ5LCAyMjIsIDE3MiwgOSwgMzQsIDIyMCwgODYsIAotICAgIDIxMywgMjQzLCA5LCAzNCwgMjIwLCA4NiwgMjEzLCAzMiwgOSwgMzQsIDI1MCwgMjQ5LCAyNDMsIDIxNCwgOSwgMzQsIDIzNSwgCi0gICAgMTQxLCAyNDUsIDgsIDksIDM0LCAyNTAsIDI0OSwgMjQ1LCA4LCA5LCAzNCwgMjM1LCAxNDEsIDIxNiwgMjI4LCA5LCAzNCwgCi0gICAgMjUwLCAyNDksIDIxNiwgMjI4LCA5LCAzNCwgMjM1LCAxNDEsIDI0NiwgNTAsIDksIDM0LCAyNTAsIDI0OSwgMjQ2LCA1MCwgCi0gICAgOSwgMzQsIDIxNiwgNTUsIDksIDM0LCAyMzUsIDE0MSwgMjE2LCA1NSwgOSwgMzQsIDI1MCwgMjQ5LCAyMTYsIDU1LCA1NywgCi0gICAgMzQsIDExNiwgNTcsIDM0LCAyMzIsIDI0MiwgNTcsIDM0LCAyNDcsIDc0LCA1NywgMzQsIDIyMCwgMjMsIDU3LCAzNCwgMjIyLCAKLSAgICA5NCwgNTcsIDM0LCAxMDEsIDU3LCAzNCwgMTA5LCA1NywgMzQsIDIzMywgOSwgNTcsIDM0LCAyMzEsIDI0OCwgNTcsIDM0LCAKLSAgICAyMzMsIDU3LCA1NywgMzQsIDI0NSwgODgsIDU3LCAzNCwgMTk1LCA1NywgMzQsIDExOSwgMjUxLCA4OSwgNTcsIDM0LCAyNDksIAotICAgIDg2LCA1NywgMzQsIDI0MCwgMTA0LCA1NywgMzQsIDIxOCwgNDAsIDU3LCAzNCwgMjI3LCA0MCwgMjUxLCA4OSwgNTcsIDM0LCAKLSAgICAyMzQsIDQxLCA1NywgMzQsIDIyNSwgMTA0LCA1NywgMzQsIDIxMywgMTkwLCA1NywgMzQsIDIxOSwgMTc1LCA1NywgMzQsIAotICAgIDQ2LCAyMjcsIDQwLCAyNTEsIDg5LCA1NywgMzQsIDI0MSwgMTYxLCAyNDUsIDEwMywgNTcsIDM0LCAyMTcsIDIwMCwgNTcsIAotICAgIDM0LCAyNDcsIDEyMiwgNTcsIDM0LCAyMjIsIDk4LCA1NywgMzQsIDI0OSwgMjAzLCA1NywgMzQsIDIyNSwgNjUsIDU3LCAzNCwgCi0gICAgMjU0LCAxMjAsIDU3LCAzNCwgMjMwLCAxODAsIDU3LCAzNCwgMjQ1LCAxMDMsIDU3LCAzNCwgMjQ1LCAxNzksIDU3LCAzNCwgCi0gICAgMjIyLCAxMTgsIDU3LCAzNCwgMjQyLCAxNTAsIDU3LCAzNCwgMjQyLCAxNTEsIDIyMCwgOSwgNTcsIDM0LCAyNDUsIDcsIDU3LCAKLSAgICAzNCwgMjUxLCAxNzEsIDU3LCAzNCwgMjEzLCAyMDgsIDU3LCAzNCwgMjUwLCAzOCwgNTcsIDM0LCAyMjMsIDk4LCA1NywgMzQsIAotICAgIDIzNSwgMjQ3LCA1NywgMzQsIDIyMCwgNywgNTcsIDM0LCAyMzMsIDEyMCwgNTcsIDM0LCAyNDksIDk1LCA1NywgMzQsIDIxOSwgCi0gICAgMTY5LCA1NywgMzQsIDIzMCwgMTg1LCA1NywgMzQsIDIyMywgMTIxLCA1NywgMzQsIDIxMywgMTkzLCA1NywgMzQsIDIyNywgCi0gICAgNTYsIDU3LCAzNCwgMjE2LCA2MSwgNTcsIDM0LCAyNDYsIDM1LCA1NywgMzQsIDIyMCwgMTc1LCAyMTcsIDk4LCA1NywgMzQsIAotICAgIDI0NiwgNzIsIDI0OSwgMjAzLCA1NywgMzQsIDE4NCwgMjE5LCA0OCwgNTcsIDM0LCAxMTcsIDI0MSwgMjQ5LCA1NywgMzQsIAotICAgIDIyMCwgMTgwLCA1NywgMzQsIDI1MSwgOTUsIDU3LCAzNCwgMjE5LCAyNDksIDU3LCAzNCwgMjUxLCA2NSwgNTcsIDM0LCAKLSAgICAyMTksIDc4LCA1NywgMzQsIDI0MSwgMjExLCA1NywgMzQsIDI0MiwgMTAsIDU3LCAzNCwgMjQ3LCA3NywgNTcsIDM0LCAyNDEsIAotICAgIDI1NCwgNTcsIDM0LCAyNTEsIDgxLCA1NywgMzQsIDIyNCwgMzksIDU3LCAzNCwgMjIyLCAxMDYsIDU3LCAzNCwgMjQ3LCAKLSAgICAxNTEsIDU3LCAzNCwgMjUzLCA4NCwgNTcsIDM0LCAyMTksIDE2NiwgNTcsIDM0LCAyMjgsIDE2MiwgNTcsIDM0LCAyMTgsIAotICAgIDIzOCwgNTcsIDM0LCAyMjIsIDEyOSwgNTcsIDM0LCAyMzAsIDE5OCwgNTcsIDM0LCAyMTYsIDE5MywgNTcsIDM0LCAyMzMsIAotICAgIDE0NSwgNTcsIDM0LCAyMTksIDY5LCA1NywgMzQsIDI0OCwgMzksIDU3LCAzNCwgMjE0LCA1LCA1NywgMzQsIDI0NywgMTAwLCAKLSAgICAyMjgsIDE2MiwgNTcsIDM0LCAyNDksIDE1NCwgNTcsIDM0LCAyNDMsIDE5NCwgNTcsIDM0LCAyNDksIDIxNCwgNTcsIDM0LCAKLSAgICAyMTksIDgyLCA1NywgMzQsIDIxNCwgMjQsIDU3LCAzNCwgMjQ0LCA2NSwgNTcsIDM0LCAyNDksIDIxMSwgNTcsIDM0LCAyNDQsIAotICAgIDEyOSwgNTcsIDM0LCA1MSwgMjEzLCAxNjYsIDU3LCAzNCwgMTUxLCAyMTYsIDE5NCwgMjE2LCAxNDYsIDU3LCAzNCwgMjIwLCAKLSAgICAxNywgNTcsIDM0LCAyNDQsIDEzOSwgNTcsIDM0LCAyNDksIDg0LCA1NywgMzQsIDI0NywgOTAsIDU3LCAzNCwgMjI1LCA2MiwgCi0gICAgNTcsIDM0LCAyMzUsIDEzNSwgNTcsIDM0LCAyMzEsIDEzMSwgNTcsIDM0LCAyMTcsIDQxLCA1NywgMzQsIDIxOCwgMTkwLCAKLSAgICA1NywgMzQsIDIzMywgMywgNTcsIDM0LCAyMTUsIDEwMywgNTcsIDM0LCAyNDQsIDg5LCA1NywgMzQsIDI1MSwgMTIyLCA2NSwgCi0gICAgMjQ5LCAxODcsIDU3LCAzNCwgMjIwLCAxMTQsIDU3LCAzNCwgMjQ2LCA3MiwgMjE3LCAxOTUsIDU3LCAzNCwgMjEzLCAyMzgsIAotICAgIDU3LCAzNCwgMjIwLCAzMSwgNTcsIDM0LCAyNDcsIDEzOSwgNTcsIDM0LCAyNDQsIDIzOSwgNTcsIDM0LCAyMTksIDE5MywgCi0gICAgNTcsIDM0LCA2OCwgNTcsIDM0LCAyMTksIDcxLCA1NywgMzQsIDIxOSwgMTgwLCA1NywgMzQsIDIxNiwgMjEyLCA1NywgMzQsIAotICAgIDI0MiwgMTIzLCA1NywgMzQsIDI1MCwgMTUxLCA1NywgMzQsIDIxOSwgOTksIDU3LCAzNCwgMjUyLCA3MywgNTcsIDM0LCAKLSAgICAyMjMsIDE4NCwgNTcsIDM0LCAyMjAsIDkzLCA1NywgMzQsIDIzNSwgMTMwLCA1NywgMzQsIDIyOSwgMTcxLCA1NywgMzQsIAotICAgIDIyMCwgMjM3LCA1NywgMzQsIDI0NCwgMTE4LCA1NywgMzQsIDIyNywgNzUsIDU3LCAzNCwgMjU0LCAyNywgNTcsIDM0LCAKLSAgICAyMjUsIDE2MiwgNTcsIDM0LCAyNDUsIDE4MywgNTcsIDM0LCAyNTEsIDYwLCA1NywgMzQsIDIzMSwgMTUxLCA1NywgMzQsIAotICAgIDIzMCwgMjUyLCA1NywgMzQsIDIyMSwgNzYsIDU3LCAzNCwgMjUzLCAxNjcsIDU3LCAzNCwgMjMwLCAxOTMsIDU3LCAzNCwgCi0gICAgMjE2LCAyMzIsIDU3LCAzNCwgMjI3LCAzMSwgNTcsIDM0LCAyNTEsIDEyNCwgNTcsIDM0LCAyMTksIDY3LCA1NywgMzQsIAotICAgIDI0OSwgMTYzLCA1NywgMzQsIDI0MiwgMTE2LCA1NywgMzQsIDIxNywgNjAsIDU3LCAzNCwgMjM1LCAyMTQsIDU3LCAzNCwgCi0gICAgMjUxLCAxMzQsIDU3LCAzNCwgMjE0LCA0MiwgMjQ1LCAxMDMsIDU3LCAzNCwgMjQ5LCAxODYsIDU3LCAzNCwgMjEzLCAyNDksIAotICAgIDU3LCAzNCwgMjIyLCA4OSwgNTcsIDM0LCAyNDAsIDIzNSwgNTcsIDM0LCAyMTksIDE5MCwgNTcsIDM0LCAyMTQsIDI1NCwgCi0gICAgNTcsIDM0LCAyNTEsIDI0OCwgNTcsIDM0LCAyMjUsIDIwNSwgNTcsIDM0LCAyNTIsIDkyLCA1NywgMzQsIDIyMCwgMjMyLCAKLSAgICA1NywgMzQsIDIyNCwgMywgNTcsIDM0LCAyMjMsIDM3LCA1NywgMzQsIDI0NCwgMSwgNTcsIDM0LCAyNTEsIDEyMywgNTcsIAotICAgIDM0LCAyNTAsIDE2MCwgNTcsIDM0LCAyNTEsIDE0OSwgNTcsIDM0LCAyMzAsIDE5NSwgNTcsIDM0LCAyMTQsIDQxLCA1NywgCi0gICAgMzQsIDI0OSwgMjIwLCA1NywgMzQsIDIxMywgMjIxLCA1NywgMzQsIDI0NywgMTMyLCA1NywgMzQsIDIxNCwgMTQyLCA1NywgCi0gICAgMzQsIDI0MiwgMTQyLCA1NywgMzQsIDIzMiwgMTkwLCA1NywgMzQsIDI0MywgNjQsIDU3LCAzNCwgMjMwLCAxODgsIDU3LCAKLSAgICAzNCwgMjIwLCAyMiwgNTcsIDM0LCAyMjAsIDE3NSwgMjE4LCAyNiwgMjUxLCAxNjAsIDU3LCAzNCwgMjI0LCA1MCwgNTcsIAotICAgIDM0LCAyNTEsIDEzMCwgNTcsIDM0LCAyMTMsIDE4NSwgNTcsIDM0LCAyNDQsIDE1OCwgNTcsIDM0LCAyMzMsIDc2LCA1NywgCi0gICAgMzQsIDIxOCwgNywgMjMzLCA3NiwgNTcsIDM0LCAyMzMsIDcyLCA1NywgMzQsIDIxOSwgMjE3LCA1NywgMzQsIDIzMywgNzcsIAotICAgIDU3LCAzNCwgMjEzLCAyMjQsIDU3LCAzNCwgMjQ0LCAxNSwgNTcsIDM0LCAyNDUsIDE3MywgNTcsIDM0LCAyNDEsIDIxOSwgCi0gICAgNTcsIDM0LCAyNDMsIDIyNiwgNTcsIDM0LCAyNDAsIDIzMiwgNTcsIDM0LCAyNTEsIDExOSwgNTcsIDM0LCAyMTgsIDE0LCAKLSAgICA1NywgMzQsIDI0MiwgMTYsIDU3LCAzNCwgMjQ0LCA4MiwgNTcsIDM0LCAyMjIsIDE5NywgMjEzLCAyMjEsIDU3LCAzNCwgCi0gICAgMjUwLCAxNTMsIDU3LCAzNCwgMjQyLCAxOTgsIDU3LCAzNCwgMjQ0LCA1OSwgNTcsIDM0LCAyNTEsIDE2MCwgNTcsIDM0LCAKLSAgICAyMjIsIDE3MiwgNTcsIDM0LCAyNDgsIDI1LCA1NywgMzQsIDIxMywgMjQzLCA1NywgMzQsIDI0MSwgMTk0LCA1NywgMzQsIAotICAgIDIxMywgMzIsIDU3LCAzNCwgMjMxLCA1LCA1NywgMzQsIDI1MSwgMTQ0LCA1NywgMzQsIDI0NSwgMTEzLCA1NywgMzQsIDI0MywgCi0gICAgMjE0LCA1NywgMzQsIDIxNiwgMTY3LCA1NywgMzQsIDI0NiwgMzcsIDU3LCAzNCwgMjI0LCAzMywgNTcsIDM0LCAyMjgsIAotICAgIDE2NCwgNTcsIDM0LCAyNDUsIDgsIDU3LCAzNCwgMjE2LCAyMjgsIDU3LCAzNCwgMjQ2LCA1MCwgNTcsIDM0LCAyMTYsIDU1LCAKLSAgICA1NywgMzQsIDI0NCwgMTcsIDEwNSwgMjQ3LCAyNDQsIDEzNywgNDIsIDIxMSwgMjExLCAyMjMsIDE0OCwgMTA1LCAyNDcsIAotICAgIDI0NCwgMTM3LCA3OCwgMjExLCAyMTEsIDU1LCAxMDUsIDI0NywgMjQ0LCAxMzcsIDQyLCAyMTEsIDIxMSwgMjMxLCAzNywgCi0gICAgMjQsIDIyMywgMTQ4LCAxMDUsIDI0NywgMjQ0LCAxMzcsIDc4LCAyMTEsIDIxMSwgMjMxLCAzNywgMjQsIDU1LCAxMDUsIAotICAgIDI0NywgMjQ0LCAxMzcsIDI0MywgMjAwLCAyMTgsIDIxMCwgMTA1LCAyNDcsIDI0NCwgMTM3LCAyMTgsIDIxMSwgMjQzLCAKLSAgICAyMTMsIDQ5LCAxMDUsIDI0NywgMjQ0LCAxMzcsIDIxOCwgMjExLCAyNDMsIDIxMywgNTUsIDEwNSwgMjQ3LCAyNDQsIDEzNywgCi0gICAgMjE4LCAyMTEsIDI0MywgMjEzLCAyMzMsIDcwLCAxMDUsIDI0NywgMjQ0LCAxMzcsIDIxOCwgMjExLCAyNDMsIDIxMywgMjE1LCAKLSAgICAxMzEsIDIzMywgNzAsIDEwNSwgMjQ3LCAyNDQsIDEzNywgMjE4LCAyMTEsIDI0MywgMjEzLCAyMTUsIDEzMSwgMjIzLCAxNDgsIAotICAgIDEwNSwgMjQ3LCAyNDQsIDEzNywgMjE4LCAyMTEsIDI0MywgMjEzLCAyMzIsIDE2MywgMjMzLCA3MCwgMTA1LCAyNDcsIDI0NCwgCi0gICAgMTM3LCAyMjYsIDI0NiwgMTA1LCAyMTksIDIwNiwgMTA1LCAyNDksIDE1NywgMTA1LCAyNDMsIDIwMCwgMjE5LCA2OSwgMjQ3LCAKLSAgICAxMjksIDc3LCAyMzUsIDEzMSwgMjM1LCAyMzMsIDIxOSwgOTgsIDg3LCAxMDUsIDIzNSwgMTU2LCA3NywgMTA1LCAyNDksIAotICAgIDE4OSwgNzcsIDEwNSwgNTAsIDIxMiwgNzksIDQyLCAyNTQsIDE5LCAxMjUsIDQ2LCAyNTQsIDE5LCAxMjUsIDQyLCA1MSwgCi0gICAgMjU0LCAxOSwgMTI1LCA0NiwgNTEsIDI1NCwgMTksIDEyNSwgNDIsIDI0OSwgMTAwLCAxMjUsIDQ2LCAyNDksIDEwMCwgMTI1LCAKLSAgICA0MiwgNjcsIDI0OSwgMTAwLCAxMjUsIDQ2LCA2NywgMjQ5LCAxMDAsIDEyNSwgNDIsIDgzLCAyMzMsIDQ0LCAxMjUsIDQ2LCAKLSAgICA4MywgMjMzLCA0NCwgMTI1LCAyMjUsIDExNywgNzcsIDI0MywgOCwgNzcsIDQyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDEyNSwgCi0gICAgNDYsIDIxNiwgMjE5LCAyMjAsIDIzMywgMTI1LCA0MiwgNjcsIDIzMywgNDQsIDEyNSwgNDYsIDY3LCAyMzMsIDQ0LCAxMjUsIAotICAgIDQyLCA2NywgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIDQ2LCA2NywgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIDQyLCA2NywgCi0gICAgNDEsIDEyNSwgNDYsIDY3LCA0MSwgMTI1LCAyMTQsIDIwLCAyNDgsIDEwMSwgMjIzLCAyMDIsIDUxLCAyMjUsIDcyLCAyMjQsIAotICAgIDE0MywgNzcsIDUxLCAyMjUsIDcyLCAyMjQsIDE0MywgNzcsIDExNSwgNTEsIDIyNSwgNzIsIDIyNCwgMTQzLCA3NywgMjI1LCAKLSAgICAxMTcsIDE1MiwgMjQ0LCAxNTgsIDI0MSwgMjQ3LCAyMjgsIDU0LCAxMTYsIDI0MSwgMjQ3LCAyMjgsIDU0LCAxMDksIDI0MSwgCi0gICAgMjQ3LCAyMjgsIDU0LCAxNjYsIDI0MSwgMjQ3LCAyMjgsIDU0LCAxNjMsIDI0MSwgMjQ3LCAyMjgsIDU0LCAxODAsIDI0MSwgCi0gICAgMjQ3LCAyMjgsIDU0LCAxODksIDI0MSwgMjQ3LCAyMjgsIDU0LCAxOTgsIDI0MSwgMjQ3LCAyMjgsIDU0LCAxOTUsIDI0MSwgCi0gICAgMjQ3LCAyMjgsIDU0LCAyMDAsIDEwNSwgMjMzLCAyOSwgMTYwLCA3NywgMTA1LCAyMjMsIDEyNSwgMTYwLCA3NywgMTA1LCAKLSAgICAyNDcsIDI1MSwgMTYwLCA3NywgMTA1LCAyNDUsIDg3LCAxNjAsIDc3LCAyMywgMjIwLCA4MSwgNjIsIDE2MCwgNzcsIDIzLCAKLSAgICA1MSwgNjIsIDE2MCwgNzcsIDIxNCwgMTYsIDI0OCwgMTAxLCA3MSwgMjM0LCAyMzgsIDIyMywgMjI4LCA3NywgNzEsIDIzNCwgCi0gICAgMjM4LCAyMjMsIDIyOCwgMiwgMjE0LCAxMTYsIDIxOSwgMjE4LCA3NywgNzEsIDIzNCwgMjM4LCAyMjMsIDIyOCwgMTUyLCAKLSAgICAyMTUsIDEzMSwgMjQyLCA5LCA3MSwgMjM0LCAyMzgsIDIyMywgMjI4LCAyLCAyMTQsIDExNiwgMjE5LCAyMTgsIDE1MiwgCi0gICAgMjE1LCAxMzEsIDI0MiwgOSwgNzEsIDIzNCwgMjM4LCAyMjMsIDIyOCwgMTUyLCAyMzIsIDE2MywgMjQyLCA5LCAzNiwgMjI1LCAKLSAgICAxMTcsIDc3LCAxMDUsIDIwMSwgMjMyLCAyNDMsIDI0NCwgMTE1LCAyMjEsIDU4LCA4NywgMjQxLCAyNDcsIDIyOCwgNTQsIAotICAgIDIxNywgMjAwLCAyNDEsIDI0NywgMjI4LCA1NCwgMjE2LCAzOCwgMjQxLCAyNDcsIDIyOCwgNTQsIDIxNywgMTE1LCA3MSwgCi0gICAgMTA1LCAyMzUsIDE1NiwgNzcsIDIzMSwgMjAzLCA3NywgMjI2LCAxMjcsIDI1NCwgNDksIDc3LCAxMDUsIDQzLCAyMzUsIAotICAgIDIzNSwgMTA1LCAxNTEsIDI0NCwgNzUsIDIxOSwgMjA2LCAxNDIsIDEsIDMsIDYxLCAxNDIsIDEsIDYxLCAxNDIsIDEsIDMsIAotICAgIDcyLCAxNDIsIDEsIDcyLCAxNDIsIDEsIDMsIDY5LCAxNDIsIDEsIDY5LCAxNDIsIDEsIDMsIDc0LCAxNDIsIDEsIDc0LCAKLSAgICAxNDIsIDEsIDMsIDc1LCAxNDIsIDEsIDc1LCAxNDIsIDEsIDE4MSwgMTQyLCAxLCAyNDMsIDExMCwgMTQyLCAxLCAyMzQsIAotICAgIDEwMSwgMTQyLCAxLCAyNDIsIDE5MCwgMTQyLCAxLCAyMzMsIDIzOCwgMTQyLCAxLCAyNDIsIDkyLCAxNDIsIDEsIDIzNCwgCi0gICAgMTg4LCAxNDIsIDEsIDI0MywgMzgsIDE0MiwgMSwgMjM0LCAzNywgMTQyLCAxLCAyNDIsIDE1MCwgMTQyLCAxLCAyMjIsIAotICAgIDIwMiwgMTQyLCAxLCAyMTIsIDEwOSwgMTQyLCAxLCAyMjAsIDExNywgMTQyLCAxLCAyMTIsIDM3LCAxNDIsIDEsIDIxOSwgCi0gICAgMjcsIDE0MiwgMSwgMjEyLCA4LCAxNDIsIDEsIDIyMiwgMTAwLCAxNDIsIDEsIDIxMiwgODcsIDE0MiwgMSwgMjE5LCAyNDIsIAotICAgIDE0MiwgMSwgMjEyLCAxNiwgMTQyLCAxLCAyMTgsIDUyLCAxNDIsIDEsIDI0OCwgMTY0LCAxNDIsIDEsIDIxNywgNzEsIDE0MiwgCi0gICAgMSwgMjQ3LCAyMTEsIDE0MiwgMSwgMywgMjE2LCA4MiwgMTQyLCAxLCAyMTYsIDgyLCAxNDIsIDEsIDI0NiwgMzMsIDE0MiwgCi0gICAgMSwgMjE3LCAyMjksIDE0MiwgMSwgMjQ4LCA0MSwgMTQyLCAxLCAxMDgsIDE0MiwgMSwgMjQ3LCA5OSwgMTQyLCAxLCAyMDUsIAotICAgIDE0MiwgMSwgMjI5LCA2NCwgMTQyLCAxLCAyMjgsIDkyLCAxNDIsIDEsIDIyOSwgMTg3LCAxNDIsIDEsIDIyOCwgMTg1LCAKLSAgICAxNDIsIDEsIDE1OSwgMTQyLCAxLCAyNTIsIDEwNywgMTQyLCAxLCAxOTMsIDE0MiwgMSwgMjQxLCAxNjUsIDE0MiwgMSwgCi0gICAgMjUxLCAxODQsIDE0MiwgMSwgMjI1LCAyNDAsIDE0MiwgMSwgMjQwLCAyMTIsIDE0MiwgMSwgMjUxLCA1NCwgMTQyLCAxLCAKLSAgICAyMjUsIDM1LCAxNDIsIDEsIDI0MSwgMjIyLCAxNDIsIDEsIDI1MSwgMjUxLCAxNDIsIDEsIDIyNiwgOTYsIDE0MiwgMSwgCi0gICAgMjQxLCA1NCwgMTQyLCAxLCAyNTEsIDEyOCwgMTQyLCAxLCAyMjUsIDE1MCwgMTQyLCAxLCAxODgsIDE0MiwgMSwgMjMxLCAKLSAgICA0MiwgMTQyLCAxLCAyMzAsIDE3MiwgMTQyLCAxLCAyMzEsIDE1NiwgMTQyLCAxLCAyMzAsIDIzMSwgMTQyLCAxLCAzLCAxODYsIAotICAgIDE0MiwgMSwgMTg2LCAxNDIsIDEsIDMsIDIxMiwgMjAzLCAxNDIsIDEsIDIxMiwgMjAzLCAxNDIsIDEsIDMsIDIxMiwgMjM1LCAKLSAgICAxNDIsIDEsIDIxMiwgMjM1LCAxNDIsIDEsIDIwMywgMTQyLCAxLCAyMjMsIDE4OCwgMTQyLCAxLCAyMjMsIDUxLCAxNDIsIDEsIAotICAgIDIyNCwgMjEsIDE0MiwgMSwgMjIzLCAxMTIsIDE0MiwgMSwgMywgMjE0LCA0OSwgMTQyLCAxLCAyMTQsIDQ5LCAxNDIsIDEsIAotICAgIDIxMywgMjM1LCAxNDIsIDEsIDIxNCwgNiwgMTQyLCAxLCAyMTMsIDIxNCwgMTQyLCAxLCAyMDQsIDE0MiwgMSwgMjE0LCA5OSwgCi0gICAgMTQyLCAxLCAzLCAxODEsIDE0MiwgMSwgMywgMjM0LCAxODgsIDM3LCAyMzQsIDIwNiwgMjE0LCAxMTYsIDIxOSwgMjE4LCAKLSAgICA3NywgMzcsIDIzNCwgMjA2LCAyMjEsIDc1LCAyMTksIDIxOCwgNzcsIDIzNCwgMjA2LCAyMTQsIDExNiwgMjE5LCAyMTgsIAotICAgIDc3LCAyMzQsIDIwNiwgMjIxLCA3NSwgMjE5LCAyMTgsIDc3LCAxNDIsIDIzNSwgMTU2LCA3NywgMTQyLCAyMTQsIDExNiwgCi0gICAgMjM1LCAxNTYsIDc3LCAxNDIsIDI0NywgMTczLCAyMTIsIDIxNiwgMjM0LCAyMDYsIDUxLCAyNDAsIDE2MCwgNTYsIDEsIDMsIAotICAgIDYxLCA1NiwgMSwgNjEsIDU2LCAxLCAzLCA3MiwgNTYsIDEsIDcyLCA1NiwgMSwgMywgNjksIDU2LCAxLCA2OSwgNTYsIDEsIAotICAgIDMsIDc0LCA1NiwgMSwgNzQsIDU2LCAxLCAzLCA3NSwgNTYsIDEsIDc1LCA1NiwgMSwgMTgxLCA1NiwgMSwgMjQzLCAxMTAsIAotICAgIDU2LCAxLCAyMzQsIDEwMSwgNTYsIDEsIDI0MiwgMTkwLCA1NiwgMSwgMjMzLCAyMzgsIDU2LCAxLCAyNDIsIDkyLCA1NiwgMSwgCi0gICAgMjM0LCAxODgsIDU2LCAxLCAyNDMsIDM4LCA1NiwgMSwgMjM0LCAzNywgNTYsIDEsIDI0MiwgMTUwLCA1NiwgMSwgMjIyLCAKLSAgICAyMDIsIDU2LCAxLCAyMTIsIDEwOSwgNTYsIDEsIDIyMCwgMTE3LCA1NiwgMSwgMjEyLCAzNywgNTYsIDEsIDIxOSwgMjcsIAotICAgIDU2LCAxLCAyMTIsIDgsIDU2LCAxLCAyMjIsIDEwMCwgNTYsIDEsIDIxMiwgODcsIDU2LCAxLCAyMTksIDI0MiwgNTYsIDEsIAotICAgIDIxMiwgMTYsIDU2LCAxLCAyMTgsIDUyLCA1NiwgMSwgMjQ4LCAxNjQsIDU2LCAxLCAyMTcsIDcxLCA1NiwgMSwgMjQ3LCAKLSAgICAyMTEsIDU2LCAxLCAzLCAyMTYsIDgyLCA1NiwgMSwgMjE2LCA4MiwgNTYsIDEsIDI0NiwgMzMsIDU2LCAxLCAyMTcsIDIyOSwgCi0gICAgNTYsIDEsIDI0OCwgNDEsIDU2LCAxLCAxMDgsIDU2LCAxLCAyNDcsIDk5LCA1NiwgMSwgMjA1LCA1NiwgMSwgMjI5LCA2NCwgCi0gICAgNTYsIDEsIDIyOCwgOTIsIDU2LCAxLCAyMjksIDE4NywgNTYsIDEsIDIyOCwgMTg1LCA1NiwgMSwgMTU5LCA1NiwgMSwgMjUyLCAKLSAgICAxMDcsIDU2LCAxLCAxOTMsIDU2LCAxLCAyNDEsIDE2NSwgNTYsIDEsIDI1MSwgMTg0LCA1NiwgMSwgMjI1LCAyNDAsIDU2LCAKLSAgICAxLCAyNDAsIDIxMiwgNTYsIDEsIDI1MSwgNTQsIDU2LCAxLCAyMjUsIDM1LCA1NiwgMSwgMjQxLCAyMjIsIDU2LCAxLCAyNTEsIAotICAgIDI1MSwgNTYsIDEsIDIyNiwgOTYsIDU2LCAxLCAyNDEsIDU0LCA1NiwgMSwgMjUxLCAxMjgsIDU2LCAxLCAyMjUsIDE1MCwgCi0gICAgNTYsIDEsIDE4OCwgNTYsIDEsIDIzMSwgNDIsIDU2LCAxLCAyMzAsIDE3MiwgNTYsIDEsIDIzMSwgMTU2LCA1NiwgMSwgMjMwLCAKLSAgICAyMzEsIDU2LCAxLCAzLCAxODYsIDU2LCAxLCAxODYsIDU2LCAxLCAzLCAyMTIsIDIwMywgNTYsIDEsIDIxMiwgMjAzLCA1NiwgCi0gICAgMSwgMywgMjEyLCAyMzUsIDU2LCAxLCAyMTIsIDIzNSwgNTYsIDEsIDIwMywgNTYsIDEsIDIyMywgMTg4LCA1NiwgMSwgMjIzLCAKLSAgICA1MSwgNTYsIDEsIDIyNCwgMjEsIDU2LCAxLCAyMjMsIDExMiwgNTYsIDEsIDMsIDIxNCwgNDksIDU2LCAxLCAyMTQsIDQ5LCAKLSAgICA1NiwgMSwgMjEzLCAyMzUsIDU2LCAxLCAyMTQsIDYsIDU2LCAxLCAyMTMsIDIxNCwgNTYsIDEsIDIwNCwgNTYsIDEsIDIxNCwgCi0gICAgOTksIDU2LCAxLCAzLCAxODEsIDU2LCAxLCAzLCAyMzQsIDE4OCwgNTYsIDEsIDIxNSwgMSwgNTYsIDEsIDIxNCwgMTU0LCAKLSAgICA1NiwgMSwgMjE0LCAyMzIsIDU2LCAxLCAyMTQsIDExOSwgNTYsIDIzMSwgMzcsIDI0NywgNzQsIDIzNCwgMjA2LCAyMjUsIAotICAgIDU3LCAyMTksIDIxOCwgNzcsIDU2LCAyMzUsIDE1NiwgNzcsIDU2LCAyMTQsIDExNiwgMjM1LCAxNTYsIDc3LCA1NiwgMjQ3LCAKLSAgICAxNzMsIDIzNCwgOCwgMjAyLCAxLCAyNTMsIDc0LCAyMDIsIDEsIDIyNiwgMjI5LCAyMDIsIDEsIDE4MywgMjAyLCAxLCAyNDQsIAotICAgIDIzMCwgMjAyLCAxLCAyNDksIDMsIDIwMiwgMSwgMjE4LCA5OSwgMjAyLCAxLCAyMDQsIDIwMiwgMSwgMTUwLCAyMDIsIDEsIAotICAgIDI0MywgMTc3LCAyMDIsIDEsIDIzNSwgMjcsIDIwMiwgMSwgMjQyLCA0MSwgMjAyLCAxLCAyMzUsIDE0MiwgMjAyLCAxLCAKLSAgICAyMjQsIDI0MCwgMjAyLCAxLCAyMTMsIDE2NiwgMjAyLCAxLCAyMTIsIDc2LCAyMDIsIDEsIDI1MCwgOTMsIDIwMiwgMSwgCi0gICAgMjIxLCAyNiwgMjAyLCAxLCAxNDksIDIwMiwgMSwgMjEyLCAxNTIsIDIwMiwgMSwgMjUwLCAyNTIsIDIwMiwgMSwgMTk3LCAKLSAgICAyMDIsIDEsIDYxLCAyMDIsIDEsIDc1LCAyMDIsIDEsIDc0LCAyMDIsIDEsIDI0NSwgMTU0LCAyMDIsIDEsIDI1NCwgMTA4LCAKLSAgICAyMDIsIDEsIDI0NSwgMTUyLCAyMDIsIDEsIDI1MywgMTA4LCAyMDIsIDEsIDIyNywgMiwgMjAyLCAxLCAyNTQsIDMyLCAyMDIsIAotICAgIDEsIDI0NSwgMTA4LCAyMDIsIDEsIDI1NCwgMjQsIDIwMiwgMSwgMjQ1LCA5NiwgMjAyLCAxLCAyNDUsIDU1LCAyMDIsIDEsIAotICAgIDcyLCAyMDIsIDEsIDY5LCAyMDIsIDEsIDIzNSwgMTU0LCAyMDIsIDEsIDIxNSwgNzksIDIwMiwgMSwgMjI5LCAxNjEsIDIwMiwgCi0gICAgMSwgMjQyLCAxNTQsIDIwMiwgMSwgMjM2LCAyOSwgMjMsIDEsIDIzNCwgNjcsIDIzLCAxLCAyMTksIDE1MCwgMjMsIDEsIAotICAgIDIzNCwgNjAsIDIzLCAxLCAyMjksIDU3LCAyMywgMSwgMjI5LCA1NSwgMjMsIDEsIDIyOSwgNTQsIDIzLCAxLCAyMTcsIDU1LCAKLSAgICAyMywgMSwgMjE5LCAxMzksIDIzLCAxLCAyMjMsIDE3OSwgMjMsIDEsIDIyMywgMTc0LCAyMywgMSwgMjIzLCAxNzEsIDIzLCAKLSAgICAxLCAyMjMsIDE2NCwgMjMsIDEsIDIyMywgMTU5LCAyMywgMSwgMjIzLCAxNTQsIDIzLCAxLCAyMjMsIDE2NSwgMjMsIDEsIAotICAgIDIyMywgMTc3LCAyMywgMSwgMjMxLCAzMCwgMjMsIDEsIDIyNSwgMjI3LCAyMywgMSwgMjE5LCAxNDcsIDIzLCAxLCAyMjUsIAotICAgIDIxNiwgMjMsIDEsIDIyMCwgNzYsIDIzLCAxLCAyMTksIDE0NCwgMjMsIDEsIDIzNiwgNTEsIDIzLCAxLCAyNDksIDIzOSwgCi0gICAgMjMsIDEsIDIxOSwgMTU0LCAyMywgMSwgMjUwLCA0MywgMjMsIDEsIDIzNCwgMTE2LCAyMywgMSwgMjE3LCAxMjYsIDIzLCAxLCAKLSAgICAyMjYsIDcsIDIzLCAxLCAyNDEsIDE1OCwgMjMsIDEsIDYxLCAyMywgMSwgMjU0LCAxNDgsIDIzLCAxLCAxODYsIDIzLCAxLCAKLSAgICAyMTMsIDgwLCAyMywgMSwgMjQ1LCA3NiwgMjMsIDEsIDc0LCAyMywgMSwgMjEzLCAyNywgMjMsIDEsIDIxMywgMzgsIDIzLCAKLSAgICAxLCA3NSwgMjMsIDEsIDIxNCwgNDksIDIzLCAxLCAyMTQsIDQ2LCAyMywgMSwgMjI3LCA5OSwgMjMsIDEsIDIxMiwgMjM1LCAKLSAgICAyMywgMSwgNjksIDIzLCAxLCAyMTMsIDI1MiwgMjMsIDEsIDIxNCwgNiwgMjMsIDEsIDIxMywgMjM1LCAyMywgMSwgMjEyLCAKLSAgICAyMDMsIDIzLCAxLCAyNDUsIDIyLCAyMywgMSwgMjEyLCAyNTUsIDIzLCAxLCA3MiwgMjMsIDI0NCwgNzIsIDIzLCAxLCAyMTksIAotICAgIDE0OCwgMjMsIDEsIDIyOSwgNDcsIDIzLCAxLCAyMjksIDQ5LCAyMywgMSwgMjI5LCA1MiwgMjMsIDEsIDIyMywgMTcyLCAyMywgCi0gICAgMSwgMjIzLCAxNTMsIDIzLCAxLCAyMjMsIDE2MSwgMjMsIDEsIDIyMywgMTY2LCAyMywgMSwgMjIzLCAxNTEsIDIzLCAxLCAKLSAgICAyMzEsIDIzLCAyMywgMSwgMjMxLCAyMCwgMjMsIDEsIDIzMSwgMjQsIDIzLCAxLCAyMzQsIDIyNiwgMjMsIDEsIDIyNSwgCi0gICAgMjIyLCAyMywgMSwgMjI1LCAyMDgsIDIzLCAxLCAyMjUsIDIxNCwgMjMsIDEsIDIyNSwgMjExLCAyMywgMSwgMjI1LCAyMjUsIAotICAgIDIzLCAxLCAyMjUsIDIwOSwgMjMsIDEsIDIzNCwgMjI0LCAyMywgMSwgMjM0LCAyMjIsIDIzLCAxLCAyMjAsIDY5LCAyMywgMSwgCi0gICAgMjIwLCA2NywgMjMsIDEsIDIyMCwgNTksIDIzLCAxLCAyMjAsIDY0LCAyMywgMSwgMjIwLCA3NCwgMjMsIDEsIDIyNiwgMTYwLCAKLSAgICAyMywgMSwgMjE5LCAxNTEsIDIzLCAxLCAyMTMsIDE3LCAyMywgMSwgMjEzLCAxMywgMjMsIDEsIDIxMywgMTQsIDIzLCAxLCAKLSAgICAyMzQsIDIyNSwgMjMsIDEsIDIxOSwgMTUyLCAyMywgMSwgMjEzLCAyMywgMjMsIDEsIDIxMiwgMjI5LCAyMywgMSwgMjEyLCAKLSAgICAyMjgsIDIzLCAxLCAyMTIsIDIzMSwgMjMsIDEsIDIxMiwgMTk0LCAyMywgMSwgMjEyLCAxOTUsIDIzLCAxLCAyMTIsIDE5OCwgCi0gICAgMjMsIDEsIDI1MywgMjA0LCAyMywgMSwgMjUzLCAxOTgsIDEwNSwgMjU0LCAxMCwgMjMyLCAyMzIsIDc3LCAxMDUsIDI1NCwgCi0gICAgMTAsIDIyMywgMjAzLCA3NywgMTA1LCAyNTQsIDEwLCAxMjIsIDc3LCAxMDUsIDI1NCwgMTAsIDExNywgNzcsIDEwNSwgMjU0LCAKLSAgICAxMCwgMTMzLCA3NywgMTA1LCAyNTQsIDEwLCAyNDMsIDIzNywgNzcsIDEwNSwgMjU0LCAxMCwgMjE2LCAyMjcsIDc3LCAxMDUsIAotICAgIDI1NCwgMTAsIDIzMSwgMzcsIDc3LCAxMDUsIDI1NCwgMTAsIDI1MSwgMTAxLCA3NywgMTA1LCAyNTQsIDEwLCAyNDQsIDYxLCAKLSAgICA3NywgMTA1LCAyNTQsIDEwLCAyMjIsIDk1LCA3NywgMTA1LCAyNTQsIDEwLCAyMTcsIDEyMiwgNzcsIDEwNSwgMjU0LCAxMCwgCi0gICAgMjQzLCAyMzAsIDc3LCAxMDUsIDI1NCwgMTAsIDI0MSwgMjA4LCA3NywgMTA1LCAyNTQsIDEwLCAyNDUsIDE4MCwgNzcsIAotICAgIDEwNSwgMjU0LCAxMCwgMjMxLCAyNDksIDc3LCAyMDIsIDEsIDI1MSwgNTQsIDIwMiwgMSwgMjEyLCAzNywgMjAyLCAxLCAKLSAgICAyMzUsIDExMCwgMjAyLCAxLCAyNDIsIDkyLCAyMDIsIDEsIDI0NSwgMTY1LCAyMDIsIDEsIDI0NSwgOTMsIDIwMiwgMSwgCi0gICAgMjI3LCA0OSwgMjAyLCAxLCAyMjcsIDUzLCAyMDIsIDEsIDIzNSwgMTc3LCAyMDIsIDEsIDI1NCwgMTIsIDIwMiwgMSwgMjM1LCAKLSAgICAyMjEsIDIwMiwgMSwgMjE1LCAxMzksIDIwMiwgMSwgMjM2LCAxMSwgMjAyLCAxLCAyMjksIDE0MiwgMjAyLCAxLCAyNTQsIAotICAgIDEwMiwgMjAyLCAxLCAyNTMsIDEwMywgMjAyLCAxLCAyNTQsIDQ1LCAyMDIsIDEsIDIyNywgNzAsIDIwMiwgMSwgMjI3LCA1NSwgCi0gICAgMjAyLCAxLCAyMzUsIDIxOCwgMjAyLCA0MCwgMSwgMjI2LCAyMjksIDIwMiwgNDAsIDEsIDIxOCwgOTksIDIwMiwgNDAsIDEsIAotICAgIDIzNSwgMjcsIDIwMiwgNDAsIDEsIDI0MiwgNDEsIDIwMiwgMSwgMjQyLCAyMjYsIDIwMiwgMSwgMjMzLCAyNiwgMjAyLCAxLCAKLSAgICAyMTEsIDI0OSwgOSwgMjE5LCA0NSwgMjE4LCA5OSwgOSwgMjE5LCA0NSwgMjEzLCAyNDUsIDksIDIxOSwgNDUsIDIxMywgCi0gICAgMTQ2LCA5LCAyMTksIDQ1LCAyNTEsIDgsIDksIDIxOSwgNDUsIDIxOCwgMTk5LCA5LCAyMTksIDQ1LCAyNDAsIDE1MCwgOSwgCi0gICAgMjE5LCA0NSwgMjQwLCAxNTQsIDksIDIxOSwgNDUsIDI0MCwgMjE4LCA5LCAyMTksIDQ1LCAyNDAsIDE1MSwgOSwgMjE5LCAKLSAgICA0NSwgMjE4LCAxMDIsIDksIDIxOSwgNDUsIDI0MCwgMTUzLCA5LCAyMTksIDQ1LCAyNDAsIDE0OSwgOSwgMjE5LCA0NSwgCi0gICAgMjQwLCAyMTYsIDksIDIxOSwgNDUsIDI0MCwgMTUyLCA5LCAyMTksIDQ1LCAyNDAsIDE0OCwgOSwgMjE5LCA0NSwgMjA0LCA5LCAKLSAgICAyMTksIDQ1LCAyNDIsIDQxLCA5LCAyMTksIDQ1LCAxOTcsIDksIDIxOSwgNDUsIDIyNiwgMjI5LCA5LCAyMTksIDQ1LCAyMTksIAotICAgIDIwOCwgOSwgMjE5LCA0NSwgMjQ5LCAzLCA5LCAyMTksIDQ1LCAyNDAsIDE1NSwgOSwgMjE5LCA0NSwgMjQxLCAxNzUsIDksIAotICAgIDIxOSwgNDUsIDIxOCwgMTExLCA5LCAyMTksIDQ1LCAyMTgsIDE3OCwgOSwgMjE5LCA0NSwgMjE5LCAxMDcsIDksIDIxOSwgCi0gICAgNDUsIDIyMSwgMzEsIDksIDIxOSwgNDUsIDIyNiwgOTgsIDksIDIxOSwgNDUsIDIyNCwgMjQyLCA5LCAyMTksIDQ1LCAyMTYsIAotICAgIDI1MywgOSwgMjE5LCA0NSwgMjE4LCAxMDEsIDksIDIxOSwgNDUsIDIxOCwgMTg5LCA5LCAyMTksIDQ1LCAyNDAsIDE2MiwgOSwgCi0gICAgMjE5LCA0NSwgMjQwLCAxNDcsIDksIDIxOSwgNDUsIDIyNiwgMjUsIDksIDIxOSwgNDUsIDIyNCwgMjQwLCA1NiwgMSwgMywgCi0gICAgMjMzLCAyMzgsIDU2LCAxLCAzLCAyMjAsIDExNywgNTYsIDEsIDMsIDIxOSwgMjcsIDU2LCAxLCAzLCAxMDgsIDU2LCAxLCAzLCAKLSAgICAyMjgsIDkyLCA1NiwgMSwgMywgMTU5LCA1NiwgMSwgMywgMjQxLCAxNjUsIDU2LCAxLCAzLCAyNDAsIDIxMiwgNTYsIDEsIDMsIAotICAgIDI0MSwgMjIyLCA1NiwgMSwgMywgMjQxLCA1NCwgNTYsIDEsIDMsIDIzMCwgMTcyLCA1NiwgMSwgMywgMjAzLCA1NiwgMSwgMywgCi0gICAgMjIzLCAxODgsIDU2LCAxLCAzLCAyMjMsIDUxLCA1NiwgMSwgMywgMjI0LCAyMSwgNTYsIDEsIDMsIDIyMywgMTEyLCA4NiwgCi0gICAgMjMsIDIzNCwgNjcsIDg2LCAyMywgMjI5LCA1NywgODYsIDIzLCAyMTcsIDU1LCA4NiwgMjMsIDIyMywgMTc5LCA4NiwgMjMsIAotICAgIDIzMSwgMzAsIDg2LCAyMywgMjI1LCAyMjcsIDg2LCAyMywgMjIwLCA3NiwgODYsIDIzLCAyMzYsIDUxLCA4NiwgMjMsIDI0OSwgCi0gICAgMjM5LCA4NiwgMjMsIDI1MCwgNDMsIDg2LCAyMywgMjM0LCAxMTYsIDg2LCAyMywgMjE3LCAxMjYsIDg2LCAyMywgMjI2LCA3LCAKLSAgICA4NiwgMjMsIDI0MSwgMTU4LCA4NiwgMjMsIDIzNCwgNjgsIDYxLCA4NiwgMjMsIDIyOSwgNTgsIDYxLCA4NiwgMjMsIDIxNywgCi0gICAgNTYsIDYxLCA4NiwgMjMsIDIyMywgMTgwLCA2MSwgODYsIDIzLCAyMzEsIDMxLCA2MSwgODYsIDIzLCAyMjUsIDIyOCwgNjEsIAotICAgIDg2LCAyMywgMjIwLCA3NywgNjEsIDg2LCAyMywgMjM2LCA1MiwgNjEsIDg2LCAyMywgMjQ5LCAyNDAsIDYxLCA4NiwgMjMsIAotICAgIDI1MCwgNDQsIDYxLCA4NiwgMjMsIDIzNCwgMTE3LCA2MSwgODYsIDIzLCAyMTcsIDEyNywgNjEsIDg2LCAyMywgMjI2LCA4LCAKLSAgICA2MSwgODYsIDIzLCAyNDEsIDE1OSwgNjEsIDg2LCAyMywgMjQ5LCAyNDAsIDY5LCA4NiwgMjM0LCAxMiwgMTM3LCAyMjcsIAotICAgIDgzLCA4NiwgMjM0LCAxMiwgMTM3LCAxNTcsIDI0MCwgMjEyLCA4NiwgMTQzLCAxMTYsIDg2LCAxNDMsIDEwOSwgODYsIDE0MywgCi0gICAgMTY2LCA4NiwgMTQzLCAxNjMsIDg2LCAxNDMsIDE4MCwgODYsIDE0MywgMTg5LCA4NiwgMTQzLCAxOTgsIDg2LCAxNDMsIAotICAgIDE5NSwgODYsIDE0MywgMjAwLCA4NiwgMTQzLCAyMTcsIDIwMCwgODYsIDE0MywgMjMwLCAxOTgsIDg2LCAxNDMsIDI0NCwgCi0gICAgNjUsIDg2LCAxNDMsIDIxNCwgMjQsIDg2LCAxNDMsIDIxMywgMjAxLCA4NiwgMTQzLCAyMzEsIDEwNiwgODYsIDE0MywgMjQ1LCAKLSAgICAxNzksIDg2LCAxNDMsIDIxOCwgMjM4LCA4NiwgMTQzLCAyMTksIDcyLCA4NiwgMTQzLCAyNDEsIDIyOCwgODYsIDE0MywgCi0gICAgMjE5LCAyMzgsIDg2LCAxNDMsIDIzMCwgMjQsIDg2LCAxNDMsIDIxOSwgMTkyLCA4NiwgMTQzLCAyNDQsIDcxLCA4NiwgMTQzLCAKLSAgICAyNDksIDE0MCwgODYsIDE0MywgMjMzLCAxNDgsIDg2LCAxNDMsIDIyMywgMjIzLCA4NiwgMTQzLCAyNTAsIDIwMywgODYsIAotICAgIDE0MywgMjE5LCAzMCwgODYsIDE0MywgMjE4LCAyMjAsIDg2LCAxNDMsIDI0NSwgODYsIDg2LCAxNDMsIDIyMywgMjE1LCA4NiwgCi0gICAgMTQzLCAyNTQsIDU5LCA4NiwgMTQzLCAyNDQsIDk3LCA4NiwgMTQzLCAyMjMsIDIxMywgODYsIDE0MywgMjIxLCA3NiwgODYsIAotICAgIDE0MywgMjI0LCAyMCwgMzYsIDE0MywgMjI0LCAxNTcsIDM2LCAxNDMsIDIzNCwgODksIDM2LCAxNDMsIDIyMiwgMTE2LCAzNiwgCi0gICAgMTQzLCAyMzQsIDgsIDM2LCA1MCwgMjE3LCAyMDEsIDIyNywgNjMsIDgzLCAyMTksIDE2NiwgMzYsIDUwLCAyMTYsIDM5LCAKLSAgICAyMjcsIDYzLCA4MywgMjE5LCAxNjYsIDM2LCA1MCwgMjE3LCAxMTYsIDIyNywgNjMsIDgzLCAyMTksIDE2NiwgMzYsIDUwLCAKLSAgICAyNDMsIDI0MSwgMjI3LCA2MywgODMsIDIxOSwgMTY2LCAzNiwgNTAsIDI0NCwgODQsIDIyNywgNjMsIDgzLCAyMTksIDE2NiwgCi0gICAgMzYsIDUwLCAyMjAsIDQwLCAyMjcsIDYzLCA4MywgMjE5LCAxNjYsIDM2LCA1MCwgMjIxLCAzOCwgMjI3LCA2MywgODMsIAotICAgIDIxOSwgMTY2LCAzNiwgNTAsIDI0NSwgMTQyLCAyMjcsIDYzLCA4MywgMjE5LCAxNjYsIDIyNiwgMTIzLCA1MiwgMzYsIDUwLCAKLSAgICAyMTYsIDM5LCAxMTYsIDM2LCA1MCwgMjE2LCAzOSwgMTA5LCAzNiwgNTAsIDIxNiwgMzksIDE2NiwgMzYsIDUwLCAyMTYsIAotICAgIDM5LCAxNjMsIDM2LCA1MCwgMjE2LCAzOSwgMTgwLCAzNiwgNTAsIDIxNiwgMzksIDE4OSwgMzYsIDUwLCAyMTYsIDM5LCAKLSAgICAxOTgsIDM2LCA1MCwgMjE2LCAzOSwgMTk1LCAzNiwgNTAsIDIxNiwgMzksIDIwMCwgMzYsIDUwLCAyMTcsIDExNSwgMzYsIAotICAgIDUwLCAyMTcsIDExNiwgMTE2LCAzNiwgNTAsIDIxNywgMTE2LCAxMDksIDM2LCA1MCwgMjE3LCAxMTYsIDE2NiwgMzYsIDUwLCAKLSAgICAyMTcsIDExNiwgMTYzLCAzNiwgNTAsIDIxNywgMTE2LCAxODAsIDM2LCAyMywgMjM0LCA2NywgMzYsIDIzLCAyMjksIDU3LCAKLSAgICAzNiwgMjMsIDIxNywgNTUsIDM2LCAyMywgMjIzLCAxNzksIDM2LCAyMywgMjMxLCAzMCwgMzYsIDIzLCAyMjUsIDIyNywgMzYsIAotICAgIDIzLCAyMjAsIDc2LCAzNiwgMjMsIDIzNiwgNTEsIDM2LCAyMywgMjQ5LCAyMzksIDM2LCAyMywgMjUwLCA0MywgMzYsIDIzLCAKLSAgICAyMzQsIDExNiwgMzYsIDIzLCAyMTcsIDEyNiwgMzYsIDIzLCAyMjYsIDcsIDM2LCAyMywgMjQxLCAxNTgsIDM2LCAyMywgCi0gICAgMjM0LCA2OCwgNjEsIDM2LCAyMywgMjI5LCA1OCwgNjEsIDM2LCAyMywgMjE3LCA1NiwgNjEsIDM2LCAyMywgMjIzLCAxODAsIAotICAgIDYxLCAzNiwgMjMsIDIzMSwgMzEsIDYxLCAzNiwgMjMsIDIyNSwgMjI4LCA2MSwgMzYsIDIzLCAyMjAsIDc3LCA2MSwgMzYsIAotICAgIDIzLCAyMzYsIDUyLCA2MSwgMzYsIDIzLCAyNDksIDI0MCwgNjEsIDM2LCAyMywgMjUwLCA0NCwgNjEsIDM2LCAyMywgMjM0LCAKLSAgICAxMTcsIDYxLCAzNiwgMjMsIDIxNywgMTI3LCA2MSwgMzYsIDIzLCAyMjYsIDgsIDYxLCAzNiwgMjMsIDI0MSwgMTU5LCA2MSwgCi0gICAgMzYsIDIzNCwgMTIsIDEzNywgMjUwLCA4NCwgMzYsIDIzNCwgMTIsIDEzNywgMjM1LCA1MCwgMzYsIDIzLCAyMzYsIDUyLCAKLSAgICA2OSwgMjM0LCAxMiwgMjE5LCA5OCwgODcsIDM2LCAxNDMsIDExNiwgMzYsIDE0MywgMTA5LCAzNiwgMTQzLCAxNjYsIDM2LCAKLSAgICAxNDMsIDE2MywgMzYsIDE0MywgMTgwLCAzNiwgMTQzLCAxODksIDM2LCAxNDMsIDE5OCwgMzYsIDE0MywgMTk1LCAzNiwgCi0gICAgMTQzLCAyMDAsIDM2LCAxNDMsIDIxNywgMjAwLCAzNiwgMTQzLCAyMzAsIDE5OCwgMzYsIDE0MywgMjQ0LCA2NSwgMzYsIAotICAgIDE0MywgMjE0LCAyNCwgMzYsIDE0MywgMjEzLCAyMDEsIDM2LCAxNDMsIDIzMSwgMTA2LCAzNiwgMTQzLCAyNDUsIDE3OSwgCi0gICAgMzYsIDE0MywgMjE4LCAyMzgsIDM2LCAxNDMsIDIxOSwgNzIsIDM2LCAxNDMsIDI0MSwgMjI4LCAzNiwgMTQzLCAyMTksIAotICAgIDIzOCwgMzYsIDE0MywgMjMwLCAyNCwgMzYsIDE0MywgMjE5LCAxOTIsIDM2LCAxNDMsIDI0NCwgNzEsIDM2LCAxNDMsIDI0OSwgCi0gICAgMTQwLCAzNiwgMTQzLCAyMzMsIDE0OCwgMzYsIDE0MywgMjIyLCA5MywgMzYsIDE0MywgMjMxLCAyNTIsIDM2LCAxNDMsIAotICAgIDI0NCwgMTA2LCAzNiwgMTQzLCAyMTgsIDI1MCwgMzYsIDE0MywgMjQ1LCAxLCAzNiwgMTQzLCAyMjUsIDY4LCAzNiwgMTQzLCAKLSAgICAyNTMsIDExMiwgMzYsIDE0MywgMjM1LCAxNTcsIDM2LCAxNDMsIDIyMywgMjEzLCAzNiwgMTQzLCAyNDksIDEwMywgMzYsIAotICAgIDE0MywgMjQ5LCA5NCwgMzYsIDE0MywgMjQxLCAxNTEsIDM2LCAxNDMsIDI1MCwgMTA4LCAzNiwgMTQzLCAyMzIsIDE2NSwgCi0gICAgMzYsIDE0MywgMjMzLCA3MCwgMzYsIDE0MywgMjIzLCAxNDgsIDM2LCAxNDMsIDIzMSwgMTQ4LCAzNiwgMTQzLCAyMjMsIAotICAgIDIzNywgMzYsIDE0MywgMjE5LCAzMCwgMzYsIDE0MywgMjE4LCAyMjAsIDM2LCAxNDMsIDI0NSwgODYsIDM2LCAxNDMsIDIyMywgCi0gICAgMjE1LCAzNiwgMTQzLCAyNTQsIDU5LCAzNiwgMTQzLCAyMjksIDQzLCAzNiwgNTAsIDIxNywgMTE2LCAxODksIDM2LCA1MCwgCi0gICAgMjE3LCAxMTYsIDE5OCwgMzYsIDUwLCAyMTcsIDExNiwgMTk1LCAzNiwgNTAsIDIxNywgMTE2LCAyMDAsIDM2LCA1MCwgMjQzLCAKLSAgICAyNDAsIDM2LCA1MCwgMjQzLCAyNDEsIDExNiwgMzYsIDUwLCAyNDMsIDI0MSwgMTA5LCAzNiwgNTAsIDI0MywgMjQxLCAxNjYsIAotICAgIDM2LCA1MCwgMjQzLCAyNDEsIDE2MywgMzYsIDUwLCAyNDMsIDI0MSwgMTgwLCAzNiwgNTAsIDI0MywgMjQxLCAxODksIDM2LCAKLSAgICA1MCwgMjQzLCAyNDEsIDE5OCwgMzYsIDUwLCAyNDMsIDI0MSwgMTk1LCAzNiwgNTAsIDI0MywgMjQxLCAyMDAsIDM2LCA1MCwgCi0gICAgMjQ0LCA4MywgMTA1LCAyMDEsIDE2LCAzMSwgMjM1LCAxMzMsIDEwNSwgMjAxLCAxNiwgMzEsIDI0NCwgMTE3LCAxMDUsIAotICAgIDIwMSwgMTYsIDMxLCAyMzEsIDIyMywgMTA1LCAyMDEsIDE2LCAzMSwgMjUzLCAyMTcsIDEwNSwgMjAxLCAxNiwgMzEsIDIzMSwgCi0gICAgMTk2LCAxMDUsIDIwMSwgMTYsIDMxLCAyMzUsIDQ4LCAxMDUsIDIwMSwgMTYsIDMxLCAyMzUsIDQ5LCAxMDUsIDIwMSwgMTYsIAotICAgIDMxLCAyNTMsIDEwNCwgMTA1LCAyMDEsIDE2LCAzMSwgMjIxLCA1NiwgMTA1LCAyMDEsIDE2LCAzMSwgMjI3LCAxMDQsIDEwNSwgCi0gICAgMjAxLCAxNiwgMzEsIDIyOCwgMTUxLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDM2LCA0MSwgMjQxLCAxNzUsIDQxLCAyNDUsIAotICAgIDUxLCA0MSwgMjQ1LCAxMCwgMjMyLCAyNDgsIDIzMywgMTIsIDUyLCAzNiwgNTYsIDYxLCAzNiwgNTYsIDcyLCAzNiwgNTYsIAotICAgIDY5LCAzNiwgNTYsIDc0LCAzNiwgNTYsIDc1LCAzNiwgNTYsIDE4MSwgMzYsIDU2LCAyMzQsIDEwMSwgMzYsIDU2LCAyMzMsIAotICAgIDIzOCwgMzYsIDU2LCAyMzQsIDE4OCwgMzYsIDU2LCAyMzQsIDM3LCAzNiwgNTYsIDIyMiwgMjAyLCAzNiwgNTYsIDIyMCwgCi0gICAgMTE3LCAzNiwgNTYsIDIxOSwgMjcsIDM2LCA1NiwgMjIyLCAxMDAsIDM2LCA1NiwgMjE5LCAyNDIsIDM2LCA1NiwgMjE4LCAKLSAgICA1MiwgMzYsIDU2LCAyMTcsIDcxLCAzNiwgNTYsIDIxNiwgODIsIDM2LCA1NiwgMjE3LCAyMjksIDM2LCA1NiwgMTA4LCAzNiwgCi0gICAgNTYsIDIwNSwgMzYsIDU2LCAyMjksIDY0LCAzNiwgNTYsIDIyOCwgOTIsIDM2LCA1NiwgMjI5LCAxODcsIDM2LCA1NiwgMjI4LCAKLSAgICAxODUsIDM2LCA1NiwgMTU5LCAzNiwgNTYsIDI0MSwgMTY1LCAzNiwgNTYsIDI0MCwgMjEyLCAzNiwgNTYsIDI0MSwgMjIyLCAKLSAgICAzNiwgNTYsIDI0MSwgNTQsIDM2LCA1NiwgMTg4LCAzNiwgNTYsIDIzMSwgNDIsIDM2LCA1NiwgMjMwLCAxNzIsIDM2LCA1NiwgCi0gICAgMjMxLCAxNTYsIDM2LCA1NiwgMjMwLCAyMzEsIDM2LCA1NiwgMTg2LCAzNiwgNTYsIDIxMiwgMjAzLCAzNiwgNTYsIDIxMiwgCi0gICAgMjM1LCAzNiwgNTYsIDIwMywgMzYsIDU2LCAyMjMsIDE4OCwgMzYsIDU2LCAyMjMsIDUxLCAzNiwgNTYsIDIyNCwgMjEsIDM2LCAKLSAgICA1NiwgMjIzLCAxMTIsIDM2LCA1NiwgMjE0LCA0OSwgMzYsIDU2LCAyMTMsIDIzNSwgMzYsIDU2LCAyMTQsIDYsIDM2LCA1NiwgCi0gICAgMjEzLCAyMTQsIDQxLCAyNTMsIDIzOCwgNDEsIDI1MywgMTU0LCA0MSwgMjU0LCA2LCA0MSwgMjU0LCAxOTAsIDQxLCAyMzUsIAotICAgIDIyMywgNDEsIDIzNSwgMTkzLCA0MSwgMjE1LCAxMzcsIDQxLCAyNDUsIDMxLCA0MSwgMjQ1LCAxNjMsIDQxLCAyMjcsIDUyLCAKLSAgICA0MSwgMjI3LCA0NiwgNDEsIDIzNCwgMjQ5LCA0MSwgMjM0LCAyMTksIDQxLCAyMzQsIDIxNiwgNDEsIDI0MywgNjgsIDQxLCAKLSAgICAyNDMsIDc3LCA0MSwgMjQyLCAxODAsIDQxLCAyNDIsIDE3NiwgNDEsIDIzMywgMTcyLCA0MSwgMjQyLCAxNjksIDQxLCAyMzQsIAotICAgIDgxLCA0MSwgMjM0LCA4MCwgNDEsIDIzNCwgNzksIDQxLCAyMzQsIDc4LCA0MSwgMjQyLCA2NywgNDEsIDI0MiwgNjYsIDQxLCAKLSAgICAyMzMsIDIxNCwgNDEsIDIzMywgMjE2LCA0MSwgMjM0LCAxODQsIDQxLCAyMzQsIDEwLCA0MSwgMjM0LCAxNywgNDEsIDIyMiwgCi0gICAgMTg3LCA0MSwgMjIyLCAxNTMsIDQxLCAyMjAsIDU3LCA0MSwgMjIxLCA2MSwgNDEsIDIyMSwgNjAsIDQxLCAyNDgsIDE2MSwgCi0gICAgNDEsIDI0NywgMjQzLCA0MSwgMjQ3LCA3NSwgNDEsIDIxNiwgMjQzLCA0MSwgMjMwLCAyMCwgNDEsIDIyOCwgMTUyLCA0MSwgCi0gICAgMjQyLCAxNCwgNDEsIDIyNiwgMjA4LCA0MSwgMjI2LCAyMDcsIDQxLCAyNTIsIDEwNSwgNDEsIDIyNSwgMjM3LCA0MSwgMjI1LCAKLSAgICAyMDEsIDQxLCAyMjUsIDIwMiwgNDEsIDI1MSwgMTU3LCA0MSwgMjQwLCAyMTEsIDQxLCAyNDAsIDIwNywgNDEsIDI1MSwgMjAsIAotICAgIDQxLCAyNDAsIDE5NCwgNDEsIDI0MSwgMTk5LCA0MSwgMjI2LCAzNSwgNDEsIDIyNiwgNjksIDQxLCAyNDEsIDE4MywgNDEsIAotICAgIDIyNiwgNjYsIDQxLCAyMjYsIDgyLCA0MSwgMjUxLCAyMzcsIDQxLCAyMjUsIDE0MCwgNDEsIDI1MSwgMTA2LCA0MSwgMjQxLCAKLSAgICA0MiwgNDEsIDIyNSwgMTMwLCA0MSwgMjQxLCAzNSwgNDEsIDI0MSwgMzcsIDQxLCAyMzIsIDcsIDQxLCAyMzIsIDMsIDQxLCAKLSAgICAyMzIsIDExLCA0MSwgMjMxLCAyMTMsIDQxLCAyMzEsIDIzOCwgNDEsIDIzMSwgMTAsIDQxLCAyMzAsIDI0NSwgNDEsIDIzMCwgCi0gICAgMjQ0LCA0MSwgMjMxLCAxMzgsIDQxLCAyMzEsIDEzNSwgNDEsIDIzMSwgMTM5LCA0MSwgMjEzLCA5MCwgNDEsIDIxMywgODgsIAotICAgIDQxLCAyMTIsIDE5MiwgNDEsIDIyMywgMTIzLCA0MSwgMjIzLCAxMjcsIDQxLCAyMjMsIDI4LCA0MSwgMjIzLCAyMywgNDEsIAotICAgIDIyMywgMjM1LCA0MSwgMjIzLCAyMzIsIDQxLCAyMTQsIDIyLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMjEyLCA3OSwgCi0gICAgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDExNiwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDEwOSwgMTA1LCAKLSAgICAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDE2NiwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDE2MywgMTA1LCAyMDEsIAotICAgIDE2LCAzMSwgMjQwLCAyMjYsIDE4MCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDE4OSwgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQwLCAyMjYsIDE5OCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDE5NSwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAKLSAgICAyMjYsIDIwMCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDIxNywgMjAwLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIAotICAgIDIyNiwgMjQ1LCAxMjQsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAyMTYsIDQxLCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDAsIDIyNiwgMjE3LCAxMTcsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAyNDMsIDIzMSwgMTA1LCAyMDEsIDE2LCAKLSAgICAzMSwgMjQwLCAyMjYsIDI0NCwgODcsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAyMjAsIDQ3LCAxMDUsIDIwMSwgMTYsIAotICAgIDMxLCAyNDAsIDIyNiwgMjIxLCA0MCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDI0NSwgMTQ3LCAxMDUsIDIwMSwgCi0gICAgMTYsIDMxLCAyNDAsIDIyNiwgMjI5LCAyOCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDIxNiwgMzgsIDEwNSwgMjAxLCAKLSAgICAxNiwgMzEsIDI0MCwgMjI2LCAyMTYsIDMyLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMjE2LCAyOCwgMTA1LCAyMDEsIAotICAgIDE2LCAzMSwgMjQwLCAyMjYsIDIxNiwgMjksIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAyMTYsIDM0LCA0MSwgMjQwLCAKLSAgICAyMTcsIDQxLCAyNDgsIDE2NCwgNDEsIDI1MywgMTA4LCA0MSwgMTM0LCA0MSwgMjI2LCAyNDksIDQxLCAyMjYsIDk5LCA0MSwgCi0gICAgMjQ3LCAxMDEsIDQxLCAyNDcsIDEwMiwgMjE5LCAxNjUsIDQxLCAyNDcsIDEwMiwgMjQ5LCA0OSwgNDEsIDIzNSwgMTU0LCAKLSAgICA0MSwgMjQ1LCA1NCwgMjMwLCAyNSwgMjQxLCAyMDAsIDQxLCAyNDUsIDU0LCAyMzAsIDI1LCAyMTgsIDEyMCwgNDEsIDI0NSwgCi0gICAgNTQsIDIzMCwgMjUsIDIxOCwgMjQsIDQxLCAyNDUsIDU0LCAyMzAsIDI1LCAyMzEsIDEzNCwgNDEsIDI0OSwgOTYsIDQxLCAKLSAgICAyMjYsIDIxNCwgMjU0LCAzNCwgNDEsIDIwNSwgNDEsIDIzMCwgMTczLCA2MSwgNDEsIDE4OCwgNDEsIDE4MSwgNDEsIDIzNCwgCi0gICAgMTkxLCA0MSwgMjMxLCAxOTIsIDQxLCAyNDMsIDU2LCA0MSwgMjUwLCAyMDYsIDQxLCAyMzQsIDE5MCwgNDEsIDIyNiwgMjYsIAotICAgIDQxLCAyMjksIDE2MywgNDEsIDIzMCwgMTczLCAyNDQsIDIzMCwgNDEsIDIzMCwgMTczLCAyNDMsIDE3NywgNDEsIDIzMSwgCi0gICAgODIsIDQxLCAyMzQsIDE0MCwgNDEsIDI0MCwgMTU1LCA0MSwgMjM0LCAxMDMsIDQxLCAyMzEsIDQ0LCA0MSwgMjQyLCAxOTIsIAotICAgIDQxLCAyMTcsIDczLCA0MSwgMjMwLCAxNzMsIDE1MCwgNDEsIDIzMCwgMjM4LCA0MSwgMjQ3LCAxMDksIDQxLCAyMzQsIDQ5LCAKLSAgICA0MSwgMjQ0LCAxNCwgNDEsIDIyOCwgMjAwLCA0MSwgMjMwLCAxNzMsIDE4MywgNDEsIDIzMCwgMjM1LCA0MSwgMjQ5LCAxNzYsIAotICAgIDQxLCAyMzQsIDQzLCA0MSwgMjMwLCAyMzYsIDIxOSwgMTY1LCA0MSwgMjQ5LCAxNzcsIDIxOSwgMTY1LCA0MSwgMjMyLCAKLSAgICAxMTAsIDIxOSwgMTY1LCA0MSwgMjM0LCA0NCwgMjE5LCAxNjUsIDQxLCAyMzAsIDIzNiwgMjQ5LCA0OSwgNDEsIDI0OSwgCi0gICAgMTc3LCAyNDksIDQ5LCA0MSwgMjMyLCAxMTAsIDI0OSwgNDksIDQxLCAyMzQsIDQ0LCAyNDksIDQ5LCA0MSwgMjMyLCAxMTAsIAotICAgIDExMCwgMTk3LCA0MSwgMjMyLCAxMTAsIDExMCwgMjIzLCA0LCAyMTksIDE2NSwgNDEsIDE5MywgNDEsIDIzNCwgNCwgNDEsIAotICAgIDIzMCwgMTc1LCA0MSwgMjQyLCAxMjcsIDQxLCAyMjQsIDY2LCA0MSwgMjI0LCA2NywgMTEwLCAxOTcsIDQxLCAyMjQsIDY3LCAKLSAgICAxMTAsIDIyMywgNCwgMjE5LCAxNjUsIDQxLCAyMjUsIDQ3LCA0MSwgMjI4LCAxMjQsIDQxLCAyMzAsIDE3MywgMTk3LCA0MSwgCi0gICAgMjMwLCAxNzQsIDQxLCAyMjUsIDQsIDQxLCAyMjgsIDMzLCA0MSwgMjMwLCAxNzMsIDIxNSwgNzksIDQxLCAyMzAsIDEyMCwgCi0gICAgNDEsIDIzMywgMjA3LCA0MSwgMjMwLCAxMjEsIDIzMSwgMTM4LCA0MSwgMjI1LCAzLCA0MSwgMjI4LCAzMiwgNDEsIDIzMCwgCi0gICAgMTczLCAyMTQsIDgyLCA0MSwgMjMwLCAxMTUsIDQxLCAyMzMsIDIwNSwgNDEsIDIzMCwgMTE2LCAyMzEsIDEzOCwgNDEsIAotICAgIDIzNSwgMjgsIDIyNywgODYsIDQxLCAyMzIsIDExMCwgMjI3LCA4NiwgNDEsIDI1NCwgNDUsIDQxLCAyNTEsIDg3LCA0MSwgCi0gICAgMjUwLCAxNDcsIDQxLCAyNTAsIDEyNSwgNDEsIDI1MCwgMjUzLCAxMTAsIDIzNCwgMTQwLCA0MSwgMjQ5LCAxNzUsIDQxLCAKLSAgICAyNDgsIDg4LCA0MSwgMjQyLCA1MywgNDEsIDE1OSwgNDEsIDI0MCwgMjE4LCA0MSwgMjM1LCAyNTEsIDQxLCAyMzQsIDU2LCAKLSAgICA0MSwgMjM0LCA0NCwgMjUwLCAxODIsIDQxLCAyMzMsIDI0MCwgNDEsIDIzMiwgMjExLCA0MSwgMjMyLCAyMTAsIDQxLCAyMzIsIAotICAgIDIwMCwgNDEsIDIzMiwgMTIyLCA0MSwgMjMxLCAxOTMsIDIyMCwgNywgNDEsIDIzMSwgOSwgNDEsIDIzMCwgMjIyLCA0MSwgCi0gICAgMjI2LCAyNCwgNDEsIDIyNSwgMTUzLCA0MSwgMjI1LCA5OSwgNDEsIDIyNSwgOTcsIDQxLCAyMTksIDE1OSwgNDEsIDIxOCwgCi0gICAgMjAzLCA0MSwgMjE0LCA4LCA0MSwgMjE1LCA4MCwgMTEwLCAxODMsIDQxLCAxMTgsIDExMCwgMTgzLCAxMDUsIDIwMSwgMTYsIAotICAgIDMxLCAyNDgsIDkyLCAxMTYsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDEwOSwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCAKLSAgICA5MiwgMTY2LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAxNjMsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDE4MCwgCi0gICAgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMTg5LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAxOTgsIDEwNSwgMjAxLCAKLSAgICAxNiwgMzEsIDI0OCwgOTIsIDE5NSwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjAwLCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDgsIDkyLCAyMTcsIDIwMCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjQ1LCAxMjQsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNiwgNDEsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIxNywgMTE3LCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDgsIDkyLCAyNDMsIDIzMSwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjQ0LCA4NywgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjIwLCA0NywgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjIxLCA0MCwgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjQ1LCAxNDcsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIyOSwgMjgsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNiwgMzgsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIxNiwgMzIsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNiwgMjgsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIxNiwgMjksIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNiwgMzQsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIxNiwgMzUsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNiwgMzAsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIxNiwgMzEsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNiwgMzcsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIxNiwgMzMsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNywgMTE1LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAyMTcsIDExNCwgNDEsIDI0MywgOTQsIDI0MSwgCi0gICAgMTc3LCAzMSwgMjE3LCAxNDksIDI0OSwgODAsIDI0MSwgMjA3LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAyMjQsIDE1LCAKLSAgICAyNDUsIDE3OSwgMjQxLCAxNzcsIDMxLCAyNDcsIDE4MywgMjUzLCAxMjMsIDIxNywgMTQ5LCAyNTEsIDIzMiwgMjQxLCAxNzcsIAotICAgIDMxLCAyMTIsIDIxNCwgMjQ0LCA3LCAyNDEsIDE3NywgMzEsIDIxNCwgNDMsIDI0MSwgMTc3LCAzMSwgMjQ5LCAxNDIsIDI0MSwgCi0gICAgMTc3LCAzMSwgMjE3LCAxNDksIDI1MywgMTc0LCAyNDEsIDE3NywgMzEsIDI0MSwgNDYsIDIxNiwgMjQ5LCAyNDEsIDE3NywgCi0gICAgMzEsIDMsIDIxOCwgMTIsIDI0MSwgMTc3LCAzMSwgMjE2LCAxOTUsIDI0MSwgMTc3LCAzMSwgMjI2LCA5NCwgMjQxLCAxNzcsIAotICAgIDMxLCAyMTksIDk3LCAyNDEsIDE3NywgMzEsIDI0NCwgMTA4LCAyNDEsIDE3NywgMzEsIDI0MiwgMTA5LCAyMjUsIDEyMCwgCi0gICAgMjQxLCAxNzcsIDMxLCAyMzAsIDIyNSwgMjQxLCAxNzcsIDMxLCAyNDUsIDg1LCAyNDEsIDE3NywgMzEsIDI0NCwgOCwgMjQxLCAKLSAgICAxNzcsIDMxLCAyMTMsIDE5NCwgMjI3LCA2MywgMjE3LCAxNDksIDI0OCwgMzcsIDI0MSwgMTc3LCAzMSwgMjUzLCAyMjEsIAotICAgIDI0MSwgMTc3LCAzMSwgMjQ5LCAxMjQsIDI0MSwgMTc3LCAzMSwgMjUxLCAxNTAsIDIxNywgOTIsIDI0MSwgMTc3LCAzMSwgCi0gICAgMjQyLCAxMjUsIDI0MSwgMTc3LCAzMSwgMjE5LCAxNzcsIDI1MywgMjM3LCAyNDEsIDE3NywgMzEsIDIyMywgMjA1LCAyNDEsIAotICAgIDE3NywgMzEsIDIzNSwgMjE3LCAyNDEsIDE3NywgMzEsIDI0MiwgMTA5LCAyMTgsIDEyLCAyNDEsIDE3NywgMzEsIDIzMCwgCi0gICAgMTgxLCAyNDksIDk4LCAyNDEsIDE3NywgMzEsIDI0MiwgMTA5LCAyMjUsIDc3LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAKLSAgICAyNTQsIDE3OCwgMjE0LCAyNCwgMjQxLCAxNzcsIDMxLCAyMTcsIDE0OSwgMjQ5LCAyMDEsIDI0NCwgNjUsIDI0MSwgMTc3LCAKLSAgICAzMSwgMjM1LCAyMzAsIDI0MSwgMTc3LCAzMSwgMjQ2LCAxMiwgMjQxLCAxNzcsIDMxLCAyMjMsIDIwOCwgMjQxLCAxNzcsIAotICAgIDMxLCAyNDIsIDEwOSwgMjI1LCAxMDQsIDI0MSwgMTc3LCAzMSwgMjI1LCA2MSwgMjQxLCAxNzcsIDMxLCAyNDgsIDEwNiwgCi0gICAgNjUsIDIxNywgMTQ5LCAyMzMsIDIsIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIDI0NCwgMTQyLCAyNDEsIDE3NywgMzEsIAotICAgIDIyNywgMjksIDI0MSwgMTc3LCAzMSwgMjI3LCAxMDgsIDI0MSwgMTc3LCAzMSwgMjQ4LCAxMCwgMjQxLCAxNzcsIDMxLCAKLSAgICAyNDgsIDMwLCAyNDEsIDE3NywgMzEsIDIzNSwgMjQzLCAyNDEsIDE3NywgMzEsIDI1MSwgNzcsIDI0MSwgMTc3LCAzMSwgCi0gICAgMjQ5LCAxNTksIDIxMSwgMjExLCAyMzEsIDE0MSwgMjQxLCAxNzcsIDMxLCAyNDMsIDYzLCAyMTYsIDI0OSwgMjQxLCAxNzcsIAotICAgIDMxLCAyMjUsIDEyLCAyMTUsIDEyNSwgMjQxLCAxNzcsIDMxLCAyMjcsIDI4LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAKLSAgICAyMTMsIDI1NCwgMjQxLCAxNzcsIDMxLCAyMjMsIDE5OCwgMjQxLCAxNzcsIDMxLCAyMTcsIDE0OSwgMjUwLCAxNTMsIDI0MSwgCi0gICAgMTc3LCAzMSwgMjE3LCAxNDksIDI1MywgMTcwLCAyMTcsIDg3LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAyMzQsIDE4NSwgCi0gICAgMjE5LCA3NCwgMjMwLCAxODUsIDI0MSwgMTc3LCAzMSwgMjQ3LCAyMzksIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIDIzMSwgCi0gICAgMjE1LCAyMzIsIDgsIDI0MSwgMTc3LCAzMSwgMjU0LCAxNzksIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIDIxNCwgMzgsIAotICAgIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIDI0MywgMjMsIDIxMywgMjI0LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAyMzUsIAotICAgIDU1LCAyMzMsIDEzMSwgMjQxLCAxNzcsIDMxLCAyNDcsIDEzNiwgMjQxLCAxNzcsIDMxLCAyMzIsIDI0OSwgMjQxLCAxNzcsIAotICAgIDMxLCAyMzUsIDIyMCwgMjE2LCAxNDUsIDI0MSwgMTc3LCAzMSwgMywgMjI1LCA3NywgMjQxLCAxNzcsIDMxLCAyNTQsIDEyMiwgCi0gICAgMjQ5LCAxNTEsIDI0MSwgMTc3LCAzMSwgMjUxLCAyMzUsIDI0OSwgMTUxLCA4LCA0LCAyMzUsIDE1OCwgOCwgNCwgMjM1LCAKLSAgICAxNTEsIDgsIDQsIDcyLCA4LCA0LCAyMzUsIDE4MCwgOCwgNCwgMjM2LCA1MywgOCwgNCwgMjM2LCAzNiwgOCwgNCwgMjM2LCAKLSAgICA1NSwgOCwgNCwgMjM2LCA1NCwgOCwgNCwgMjUzLCAxMjIsIDgsIDQsIDI1MywgODUsIDgsIDQsIDYxLCA4LCA0LCAyNTMsIAotICAgIDIzOSwgOCwgNCwgMjE1LCAxMzUsIDgsIDQsIDIxNSwgMTM4LCA4LCA0LCAyMTUsIDEzNiwgOCwgNCwgMjI3LCA4LCA4LCA0LCAKLSAgICAyMjYsIDIzOCwgOCwgNCwgNzUsIDgsIDQsIDIyNywgNDEsIDgsIDQsIDI0NSwgMiwgOCwgNCwgNzQsIDgsIDQsIDIxMywgCi0gICAgMTgzLCA4LCA0LCAyNTEsIDE1MSwgOCwgNCwgMjUxLCAxNDgsIDgsIDQsIDI1MSwgMTg0LCA4LCA0LCAyNTEsIDE2MSwgOCwgCi0gICAgNCwgMjUxLCAxNzQsIDgsIDQsIDI1MSwgMTczLCA4LCA0LCAyNTEsIDE3NiwgOCwgNCwgMjUxLCAxNzUsIDgsIDQsIDI1MiwgCi0gICAgNDEsIDgsIDQsIDI1MiwgMzMsIDgsIDQsIDI1MiwgMTA3LCA4LCA0LCAyNTIsIDYxLCA4LCA0LCAyNTEsIDMwLCA4LCA0LCAKLSAgICAyNTEsIDM0LCA4LCA0LCAyNTEsIDMxLCA4LCA0LCAyNTEsIDEwNSwgOCwgNCwgMjUxLCA4OSwgOCwgNCwgMjUxLCAxMjgsIDgsIAotICAgIDQsIDI1MSwgMTEwLCA4LCA0LCAyNTEsIDE5OCwgOCwgNCwgMjUxLCAyNTEsIDgsIDQsIDI1MSwgMjEwLCA4LCA0LCAyNTEsIAotICAgIDE2LCA4LCA0LCAyNTEsIDEzLCA4LCA0LCAyNTEsIDU0LCA4LCA0LCAyNTEsIDI5LCA4LCA0LCAyNTEsIDIzLCA4LCA0LCAKLSAgICAyNTEsIDI3LCA4LCA0LCAyNTEsIDEsIDgsIDQsIDI1MSwgMCwgOCwgNCwgMjUxLCA2LCA4LCA0LCAyNTEsIDQsIDgsIDQsIAotICAgIDI1MSwgMiwgOCwgNCwgMjUxLCAzLCA4LCA0LCAyMjUsIDE4MSwgOCwgNCwgMjI1LCAxNzcsIDgsIDQsIDIyNSwgMjQwLCA4LCAKLSAgICA0LCAyMjUsIDE5MSwgOCwgNCwgMjI1LCAyMDcsIDgsIDQsIDIyNSwgMjM0LCA4LCA0LCAyMjUsIDIzMCwgOCwgNCwgMjI2LCAKLSAgICAxMTMsIDgsIDQsIDIyNiwgMTA0LCA4LCA0LCAxOTMsIDgsIDQsIDIyNiwgMTQ5LCA4LCA0LCAyMjUsIDIxLCA4LCA0LCAyMjUsIAotICAgIDIzLCA4LCA0LCAyMjUsIDIyLCA4LCA0LCAyMjUsIDExMywgOCwgNCwgMjI1LCAxMDIsIDgsIDQsIDIyNSwgMTUwLCA4LCA0LCAKLSAgICAyMjUsIDEyNSwgOCwgNCwgMjI1LCA4LCA4LCA0LCAyMjUsIDUsIDgsIDQsIDIyNSwgMzUsIDgsIDQsIDIyNSwgMjAsIDgsIDQsIAotICAgIDIyNSwgMTMsIDgsIDQsIDIyNSwgMTgsIDgsIDQsIDIyNCwgMjQ0LCA4LCA0LCAyMjQsIDI0MywgOCwgNCwgMjI0LCAyNDgsIAotICAgIDgsIDQsIDIyNCwgMjQ3LCA4LCA0LCAyMjQsIDI0NSwgOCwgNCwgMjI0LCAyNDYsIDgsIDQsIDI1MiwgMTYsIDgsIDQsIDI1MiwgCi0gICAgMTUsIDgsIDQsIDI1MiwgMjIsIDgsIDQsIDI1MiwgMTcsIDgsIDQsIDI1MiwgMTksIDgsIDQsIDI1MiwgMTgsIDgsIDQsIAotICAgIDI1MiwgMjEsIDgsIDQsIDI1MiwgMjAsIDgsIDQsIDI1MiwgMjgsIDgsIDQsIDI1MiwgMjcsIDgsIDQsIDI1MiwgMzEsIDgsIAotICAgIDQsIDI1MiwgMjksIDgsIDQsIDI1MiwgNywgOCwgNCwgMjUyLCA5LCA4LCA0LCAyNTIsIDgsIDgsIDQsIDI1MiwgMTIsIDgsIAotICAgIDQsIDI1MiwgMTEsIDgsIDQsIDI1MiwgMTQsIDgsIDQsIDI1MiwgMTMsIDgsIDQsIDI1MiwgMjMsIDgsIDQsIDI1MiwgMjYsIAotICAgIDgsIDQsIDI1MiwgMjQsIDgsIDQsIDI1MiwgMywgOCwgNCwgMjUyLCAyLCA4LCA0LCAyNTIsIDEwLCA4LCA0LCAyNTIsIDYsIAotICAgIDgsIDQsIDI1MiwgNCwgOCwgNCwgMjUyLCA1LCA4LCA0LCAyNTEsIDI1NSwgOCwgNCwgMjUxLCAyNTQsIDgsIDQsIDI1MiwgMSwgCi0gICAgOCwgNCwgMjUyLCAwLCA4LCA0LCAyMjksIDI0OCwgOCwgNCwgMjI5LCAyNDcsIDgsIDQsIDIyOSwgMjUzLCA4LCA0LCAyMjksIAotICAgIDI0OSwgOCwgNCwgMjI5LCAyNTAsIDgsIDQsIDIyOSwgMjUyLCA4LCA0LCAyMjksIDI1MSwgOCwgNCwgMjI5LCAyNTUsIDgsIAotICAgIDQsIDIyOSwgMjU0LCA4LCA0LCAyMzAsIDEsIDgsIDQsIDIzMCwgMCwgOCwgNCwgMjI5LCAyNDQsIDgsIDQsIDIyOSwgMjQzLCAKLSAgICA4LCA0LCAyMjksIDI0NiwgOCwgNCwgMjI5LCAyNDUsIDgsIDQsIDIyOSwgMjM4LCA4LCA0LCAyMjksIDIzNywgOCwgNCwgCi0gICAgMjI5LCAyNDIsIDgsIDQsIDIyOSwgMjQxLCA4LCA0LCAyMjksIDIzOSwgOCwgNCwgMjI5LCAyNDAsIDgsIDQsIDIyOSwgMjMyLCAKLSAgICA4LCA0LCAyMjksIDIzMSwgOCwgNCwgMjI5LCAyMzYsIDgsIDQsIDIyOSwgMjM1LCA4LCA0LCAyMjksIDIzMywgOCwgNCwgCi0gICAgMjI5LCAyMzQsIDgsIDQsIDI0MSwgOTYsIDgsIDQsIDI0MSwgOTUsIDgsIDQsIDI0MSwgMTAxLCA4LCA0LCAyNDEsIDk3LCA4LCAKLSAgICA0LCAyNDEsIDk4LCA4LCA0LCAyNDEsIDEwMCwgOCwgNCwgMjQxLCA5OSwgOCwgNCwgMjQxLCAxMDQsIDgsIDQsIDI0MSwgCi0gICAgMTAzLCA4LCA0LCAyNDEsIDEwNiwgOCwgNCwgMjQxLCAxMDUsIDgsIDQsIDI0MSwgODcsIDgsIDQsIDI0MSwgODksIDgsIDQsIAotICAgIDI0MSwgODgsIDgsIDQsIDI0MSwgOTIsIDgsIDQsIDI0MSwgOTEsIDgsIDQsIDI0MSwgOTQsIDgsIDQsIDI0MSwgOTMsIDgsIAotICAgIDQsIDI0MSwgODMsIDgsIDQsIDI0MSwgODIsIDgsIDQsIDI0MSwgOTAsIDgsIDQsIDI0MSwgODYsIDgsIDQsIDI0MSwgODQsIAotICAgIDgsIDQsIDI0MSwgODUsIDgsIDQsIDI0MSwgNzcsIDgsIDQsIDI0MSwgODEsIDgsIDQsIDI0MSwgODAsIDgsIDQsIDI0MSwgCi0gICAgNzgsIDgsIDQsIDI0MSwgNzksIDgsIDQsIDIzMCwgMjQxLCA4LCA0LCAyMzAsIDI0MCwgOCwgNCwgMjMxLCA0MiwgOCwgNCwgCi0gICAgMjMwLCAyNDcsIDgsIDQsIDIzMSwgMTYsIDgsIDQsIDIzMSwgMzQsIDgsIDQsIDIzMSwgMzIsIDgsIDQsIDIzMSwgMjAyLCA4LCAKLSAgICA0LCAyMzEsIDE5OCwgOCwgNCwgMTg4LCA4LCA0LCAyMzEsIDIzNSwgOCwgNCwgMjMwLCAxNDQsIDgsIDQsIDIzMCwgMTQzLCAKLSAgICA4LCA0LCAyMzAsIDE0NywgOCwgNCwgMjMwLCAxNDUsIDgsIDQsIDIzMCwgMTkxLCA4LCA0LCAyMzAsIDE3NywgOCwgNCwgCi0gICAgMjMwLCAyMzEsIDgsIDQsIDIzMCwgMTk2LCA4LCA0LCAyMzEsIDkzLCA4LCA0LCAyMzEsIDE1NiwgOCwgNCwgMjMwLCAxMjUsIAotICAgIDgsIDQsIDIzMCwgMTIyLCA4LCA0LCAyMzAsIDE3MiwgOCwgNCwgMjMwLCAxNDAsIDgsIDQsIDIzMCwgMTMzLCA4LCA0LCAKLSAgICAyMzAsIDEzOCwgOCwgNCwgMjMwLCAxMDAsIDgsIDQsIDIzMCwgOTksIDgsIDQsIDIzMCwgMTA1LCA4LCA0LCAyMzAsIDEwMiwgCi0gICAgOCwgNCwgMjQ0LCA1MiwgOCwgNCwgMjQ0LCA0NywgOCwgNCwgMjQ0LCA5MCwgOCwgNCwgMjQ0LCA2NywgOCwgNCwgMjQ0LCAKLSAgICAxMzUsIDgsIDQsIDI0NCwgMTI2LCA4LCA0LCAyNDQsIDE2NCwgOCwgNCwgMjQ0LCAxMzgsIDgsIDQsIDI0MywgMjI5LCA4LCAKLSAgICA0LCAyNDQsIDEyLCA4LCA0LCAyNDMsIDI1MiwgOCwgNCwgMjQzLCAxOTAsIDgsIDQsIDI0MywgMTg5LCA4LCA0LCAyNDMsIAotICAgIDIwNSwgOCwgNCwgMjQzLCAxOTUsIDgsIDQsIDI0MywgMTkzLCA4LCA0LCAyNDMsIDE5NCwgOCwgNCwgMjQzLCAxODAsIDgsIAotICAgIDQsIDI0MywgMTc5LCA4LCA0LCAyNDMsIDE4MywgOCwgNCwgMjQzLCAxODEsIDgsIDQsIDIxNCwgMTI1LCA4LCA0LCAyMTQsIAotICAgIDEyMCwgOCwgNCwgMjE0LCAxNTQsIDgsIDQsIDIxNCwgMTM0LCA4LCA0LCAyMTQsIDE0NiwgOCwgNCwgMjE0LCAxNDMsIDgsIAotICAgIDQsIDIxNCwgMTQ4LCA4LCA0LCAyMTQsIDE0NywgOCwgNCwgMjE0LCAyMzksIDgsIDQsIDIxNCwgMjM1LCA4LCA0LCAyMTUsIAotICAgIDEsIDgsIDQsIDIxNCwgMjUwLCA4LCA0LCAyMTQsIDEwNiwgOCwgNCwgMjE0LCAxMDIsIDgsIDQsIDIxNCwgMTE5LCA4LCA0LCAKLSAgICAyMTQsIDEwNywgOCwgNCwgMjE0LCAxNTUsIDgsIDQsIDIxNCwgMjIxLCA4LCA0LCAyMTQsIDkzLCA4LCA0LCAyMTQsIDkyLCAKLSAgICA4LCA0LCAyMTQsIDk5LCA4LCA0LCAyMTQsIDk2LCA4LCA0LCAyMTQsIDk0LCA4LCA0LCAyMTQsIDk1LCA4LCA0LCAyMTQsIAotICAgIDg2LCA4LCA0LCAyMTQsIDg1LCA4LCA0LCAyMTQsIDkwLCA4LCA0LCAyMTQsIDg5LCA4LCA0LCAyMTQsIDg3LCA4LCA0LCAKLSAgICAyMTQsIDg4LCA4LCA0LCAyNDcsIDEzMCwgOCwgNCwgMjQ3LCAxMTgsIDgsIDQsIDI0NywgMjExLCA4LCA0LCAyNDcsIDE1NSwgCi0gICAgOCwgNCwgMjQ3LCAxODgsIDgsIDQsIDI0NywgMTkyLCA4LCA0LCAyNDcsIDE5MSwgOCwgNCwgMjQ4LCA5OCwgOCwgNCwgMjQ4LCAKLSAgICA5MywgOCwgNCwgMjQ4LCAxNjQsIDgsIDQsIDI0OCwgMTE3LCA4LCA0LCAyNDYsIDE3LCA4LCA0LCAyNDYsIDE4LCA4LCA0LCAKLSAgICAyNDcsIDc0LCA4LCA0LCAyNDYsIDU2LCA4LCA0LCAyNDcsIDk5LCA4LCA0LCAyNDcsIDc2LCA4LCA0LCAyNDcsIDIzNywgOCwgCi0gICAgNCwgMjQ4LCA0MSwgOCwgNCwgMjQ3LCAyNTIsIDgsIDQsIDI0NiwgOCwgOCwgNCwgMjQ2LCA2LCA4LCA0LCAyNDYsIDMzLCA4LCAKLSAgICA0LCAyNDYsIDE2LCA4LCA0LCAyNDYsIDExLCA4LCA0LCAyNDYsIDE0LCA4LCA0LCAyMTcsIDIwLCA4LCA0LCAyMTcsIDE0LCAKLSAgICA4LCA0LCAyMTcsIDcxLCA4LCA0LCAyMTcsIDI5LCA4LCA0LCAyMTcsIDYzLCA4LCA0LCAyMTcsIDY1LCA4LCA0LCAyMTcsIAotICAgIDY0LCA4LCA0LCAyMTcsIDI1MywgOCwgNCwgMjE3LCAyNDAsIDgsIDQsIDIxOCwgNTIsIDgsIDQsIDIxOCwgNSwgOCwgNCwgCi0gICAgMjE2LCA2NiwgOCwgNCwgMjE2LCA2NSwgOCwgNCwgMjE2LCA2OCwgOCwgNCwgMjE2LCA2NywgOCwgNCwgMjE2LCAyMTgsIDgsIAotICAgIDQsIDIxNiwgMjE0LCA4LCA0LCAxMDgsIDgsIDQsIDIxNiwgMjI2LCA4LCA0LCAyMTcsIDE2NiwgOCwgNCwgMjE3LCAyMjksIAotICAgIDgsIDQsIDIxNywgMTkwLCA4LCA0LCAyMTYsIDUyLCA4LCA0LCAyMTYsIDQ4LCA4LCA0LCAyMTYsIDgyLCA4LCA0LCAyMTYsIAotICAgIDY0LCA4LCA0LCAyMTYsIDUzLCA4LCA0LCAyMTYsIDYyLCA4LCA0LCAyNDgsIDU4LCA4LCA0LCAyNDgsIDU3LCA4LCA0LCAKLSAgICAyNDgsIDYzLCA4LCA0LCAyNDgsIDU5LCA4LCA0LCAyNDgsIDYwLCA4LCA0LCAyNDgsIDYyLCA4LCA0LCAyNDgsIDYxLCA4LCAKLSAgICA0LCAyNDgsIDc5LCA4LCA0LCAyNDgsIDc4LCA4LCA0LCAyNDgsIDg2LCA4LCA0LCAyNDgsIDgwLCA4LCA0LCAyNDgsIDQ4LCAKLSAgICA4LCA0LCAyNDgsIDUwLCA4LCA0LCAyNDgsIDQ5LCA4LCA0LCAyNDgsIDUzLCA4LCA0LCAyNDgsIDUyLCA4LCA0LCAyNDgsIAotICAgIDU2LCA4LCA0LCAyNDgsIDU0LCA4LCA0LCAyNDgsIDcxLCA4LCA0LCAyNDgsIDc0LCA4LCA0LCAyNDgsIDcyLCA4LCA0LCAKLSAgICAyNDgsIDQ0LCA4LCA0LCAyNDgsIDQzLCA4LCA0LCAyNDgsIDUxLCA4LCA0LCAyNDgsIDQ3LCA4LCA0LCAyNDgsIDQ1LCA4LCAKLSAgICA0LCAyNDgsIDQ2LCA4LCA0LCAyMjksIDIwNiwgOCwgNCwgMjI5LCAyMDUsIDgsIDQsIDIyOSwgMjEzLCA4LCA0LCAyMjksIAotICAgIDIwOCwgOCwgNCwgMjI5LCAyMDksIDgsIDQsIDIyOSwgMjEwLCA4LCA0LCAyMjksIDIyMiwgOCwgNCwgMjI5LCAyMjEsIDgsIAotICAgIDQsIDIyOSwgMjI4LCA4LCA0LCAyMjksIDIyMywgOCwgNCwgMjI5LCAxOTgsIDgsIDQsIDIyOSwgMTk3LCA4LCA0LCAyMjksIAotICAgIDIwNCwgOCwgNCwgMjI5LCAxOTksIDgsIDQsIDIyOSwgMjE0LCA4LCA0LCAyMjksIDIyMCwgOCwgNCwgMjI5LCAyMTgsIDgsIAotICAgIDQsIDIyOSwgMTkwLCA4LCA0LCAyMjksIDE4OSwgOCwgNCwgMjI5LCAxOTUsIDgsIDQsIDIyOSwgMTkzLCA4LCA0LCAyMjksIAotICAgIDE5MSwgOCwgNCwgMjI5LCAxOTIsIDgsIDQsIDI0MSwgNjMsIDgsIDQsIDI0MSwgNjIsIDgsIDQsIDI0MSwgNjksIDgsIDQsIAotICAgIDI0MSwgNjQsIDgsIDQsIDI0MSwgNjYsIDgsIDQsIDI0MSwgNjUsIDgsIDQsIDI0MSwgNjgsIDgsIDQsIDI0MSwgNjcsIDgsIAotICAgIDQsIDI0MSwgNzQsIDgsIDQsIDI0MSwgNzMsIDgsIDQsIDI0MSwgNzYsIDgsIDQsIDI0MSwgNzUsIDgsIDQsIDI0MSwgNTcsIAotICAgIDgsIDQsIDI0MSwgNTgsIDgsIDQsIDI0MSwgNjAsIDgsIDQsIDI0MSwgNTksIDgsIDQsIDI0MSwgNjEsIDgsIDQsIDI0MSwgCi0gICAgNzAsIDgsIDQsIDI0MSwgNzIsIDgsIDQsIDI0MSwgNzEsIDgsIDQsIDI0MSwgNTYsIDgsIDQsIDIyOSwgMjAsIDgsIDQsIAotICAgIDIyOSwgMTgsIDgsIDQsIDIyOSwgNjQsIDgsIDQsIDIyOSwgMjMsIDgsIDQsIDIyOSwgNDYsIDgsIDQsIDIyOSwgNjAsIDgsIAotICAgIDQsIDIyOSwgNTksIDgsIDQsIDIzMCwgNSwgOCwgNCwgMjA1LCA4LCA0LCAyMzAsIDE3LCA4LCA0LCAyMjgsIDQyLCA4LCA0LCAKLSAgICAyMjgsIDQ0LCA4LCA0LCAyMjgsIDQzLCA4LCA0LCAyMjgsIDE2MiwgOCwgNCwgMjI4LCAxNDksIDgsIDQsIDIyOCwgMTg1LCAKLSAgICA4LCA0LCAyMjgsIDE3MSwgOCwgNCwgMjI5LCAxNjUsIDgsIDQsIDIyOSwgMTg3LCA4LCA0LCAyMjksIDE3NiwgOCwgNCwgCi0gICAgMjI4LCAzNywgOCwgNCwgMjI4LCAzNCwgOCwgNCwgMjI4LCA5MiwgOCwgNCwgMjI4LCA0MSwgOCwgNCwgMjI4LCAzOSwgOCwgCi0gICAgNCwgMjI4LCA0MCwgOCwgNCwgMjQxLCAxMjcsIDgsIDQsIDI0MSwgMTI2LCA4LCA0LCAyNDEsIDEzMiwgOCwgNCwgMjQxLCAKLSAgICAxMjgsIDgsIDQsIDI0MSwgMTI5LCA4LCA0LCAyNDEsIDEzMSwgOCwgNCwgMjQxLCAxMzAsIDgsIDQsIDI0MSwgMTM3LCA4LCAKLSAgICA0LCAyNDEsIDEzNiwgOCwgNCwgMjQxLCAxMzksIDgsIDQsIDI0MSwgMTM4LCA4LCA0LCAyNDEsIDExOSwgOCwgNCwgMjQxLCAKLSAgICAxMjEsIDgsIDQsIDI0MSwgMTIwLCA4LCA0LCAyNDEsIDEyMywgOCwgNCwgMjQxLCAxMjUsIDgsIDQsIDI0MSwgMTI0LCA4LCAKLSAgICA0LCAyNDEsIDEzMywgOCwgNCwgMjQxLCAxMzUsIDgsIDQsIDI0MSwgMTM0LCA4LCA0LCAyNDEsIDExNSwgOCwgNCwgMjQxLCAKLSAgICAxMTQsIDgsIDQsIDI0MSwgMTIyLCA4LCA0LCAyNDEsIDExOCwgOCwgNCwgMjQxLCAxMTYsIDgsIDQsIDI0MSwgMTE3LCA4LCAKLSAgICA0LCAyNDEsIDEwOSwgOCwgNCwgMjQxLCAxMDgsIDgsIDQsIDI0MSwgMTEzLCA4LCA0LCAyNDEsIDExMiwgOCwgNCwgMjQxLCAKLSAgICAxMTAsIDgsIDQsIDI0MSwgMTExLCA4LCA0LCAyMzIsIDIyNCwgOCwgNCwgMjMyLCAyMTgsIDgsIDQsIDIzMywgMTMsIDgsIDQsIAotICAgIDIzMiwgMjMxLCA4LCA0LCAyMzMsIDUsIDgsIDQsIDIzMywgNCwgOCwgNCwgMjMzLCA4LCA4LCA0LCAyMzMsIDYsIDgsIDQsIAotICAgIDIzMywgMTAyLCA4LCA0LCAyMzMsIDkzLCA4LCA0LCAyMzMsIDE1NywgOCwgNCwgMjMzLCAxMTEsIDgsIDQsIDIzMiwgMTM3LCAKLSAgICA4LCA0LCAyMzIsIDEzNiwgOCwgNCwgMjMyLCAxMzksIDgsIDQsIDIzMiwgMTM4LCA4LCA0LCAyMzIsIDE3MSwgOCwgNCwgCi0gICAgMjMyLCAxNjEsIDgsIDQsIDIzMiwgMjA4LCA4LCA0LCAyMzIsIDE3NSwgOCwgNCwgMjMzLCAyOCwgOCwgNCwgMjMzLCA4MiwgCi0gICAgOCwgNCwgMjMzLCA0MSwgOCwgNCwgMjMyLCAxMzIsIDgsIDQsIDIzMiwgMTMxLCA4LCA0LCAyMzIsIDE1NiwgOCwgNCwgMjMyLCAKLSAgICAxMzUsIDgsIDQsIDIzMiwgMTMzLCA4LCA0LCAyMzIsIDEzNCwgOCwgNCwgMjMyLCAxMTQsIDgsIDQsIDIzMiwgMTEzLCA4LCAKLSAgICA0LCAyMzIsIDEyMSwgOCwgNCwgMjMyLCAxMTcsIDgsIDQsIDIzMiwgMTE1LCA4LCA0LCAyMzIsIDExNiwgOCwgNCwgMjQyLCAKLSAgICAxNjUsIDgsIDQsIDI0MiwgMTY0LCA4LCA0LCAyNDIsIDE5MCwgOCwgNCwgMjQyLCAxNzUsIDgsIDQsIDI0MiwgMTgyLCA4LCAKLSAgICA0LCAyNDIsIDE4MSwgOCwgNCwgMjQyLCAxODQsIDgsIDQsIDI0MiwgMTgzLCA4LCA0LCAyNDMsIDY1LCA4LCA0LCAyNDMsIAotICAgIDYwLCA4LCA0LCAyNDMsIDExMCwgOCwgNCwgMjQzLCA3NSwgOCwgNCwgMjQyLCA3MiwgOCwgNCwgMjQyLCA3MSwgOCwgNCwgCi0gICAgMjQyLCA3NCwgOCwgNCwgMjQyLCA3MywgOCwgNCwgMjQyLCAxMzAsIDgsIDQsIDI0MiwgMTI4LCA4LCA0LCAyNDIsIDE1MCwgCi0gICAgOCwgNCwgMjQyLCAxMzgsIDgsIDQsIDI0MywgOSwgOCwgNCwgMjQzLCA3LCA4LCA0LCAyNDMsIDM4LCA4LCA0LCAyNDMsIDIwLCAKLSAgICA4LCA0LCAyNDIsIDYyLCA4LCA0LCAyNDIsIDYxLCA4LCA0LCAyNDIsIDkyLCA4LCA0LCAyNDIsIDcwLCA4LCA0LCAyNDIsIAotICAgIDYzLCA4LCA0LCAyNDIsIDY5LCA4LCA0LCAyMzQsIDcwLCA4LCA0LCAyMzQsIDY5LCA4LCA0LCAyMzQsIDEwMSwgOCwgNCwgCi0gICAgMjM0LCA4NCwgOCwgNCwgMjM0LCA5NCwgOCwgNCwgMjM0LCA5NywgOCwgNCwgMjM0LCA5NSwgOCwgNCwgMjM0LCAyMDcsIDgsIAotICAgIDQsIDIzNCwgMTk2LCA4LCA0LCAxODEsIDgsIDQsIDIzNCwgMjMzLCA4LCA0LCAyMzMsIDIyMSwgOCwgNCwgMjMzLCAyMjYsIAotICAgIDgsIDQsIDIzMywgMjIzLCA4LCA0LCAyMzQsIDksIDgsIDQsIDIzNCwgNSwgOCwgNCwgMjM0LCAzNywgOCwgNCwgMjM0LCAxNiwgCi0gICAgOCwgNCwgMjM0LCAxNjIsIDgsIDQsIDIzNCwgMTQ2LCA4LCA0LCAyMzQsIDE4OCwgOCwgNCwgMjM0LCAxNjUsIDgsIDQsIAotICAgIDIzMywgMjEwLCA4LCA0LCAyMzMsIDIwOCwgOCwgNCwgMjMzLCAyMzgsIDgsIDQsIDIzMywgMjIwLCA4LCA0LCAyMzMsIDIxMywgCi0gICAgOCwgNCwgMjMzLCAyMTcsIDgsIDQsIDI0MiwgMjQ3LCA4LCA0LCAyNDIsIDI0NiwgOCwgNCwgMjQyLCAyNTEsIDgsIDQsIAotICAgIDI0MiwgMjQ4LCA4LCA0LCAyNDIsIDI1MCwgOCwgNCwgMjQyLCAyNDksIDgsIDQsIDI0MywgMiwgOCwgNCwgMjQzLCAxLCA4LCAKLSAgICA0LCAyNDMsIDUsIDgsIDQsIDI0MywgMywgOCwgNCwgMjQyLCAyMzgsIDgsIDQsIDI0MiwgMjM3LCA4LCA0LCAyNDIsIDI0MCwgCi0gICAgOCwgNCwgMjQyLCAyMzksIDgsIDQsIDI0MiwgMjQzLCA4LCA0LCAyNDIsIDI0MiwgOCwgNCwgMjQyLCAyNDUsIDgsIDQsIAotICAgIDI0MiwgMjQ0LCA4LCA0LCAyNDIsIDI1MywgOCwgNCwgMjQyLCAyNTIsIDgsIDQsIDI0MywgMCwgOCwgNCwgMjQyLCAyNTQsIAotICAgIDgsIDQsIDI0MiwgMjMzLCA4LCA0LCAyNDIsIDIzMiwgOCwgNCwgMjQyLCAyNDEsIDgsIDQsIDI0MiwgMjM2LCA4LCA0LCAKLSAgICAyNDIsIDIzNCwgOCwgNCwgMjQyLCAyMzUsIDgsIDQsIDIzMSwgNjAsIDgsIDQsIDIzMSwgNjEsIDgsIDQsIDIzMSwgNzksIDgsIAotICAgIDQsIDIzMSwgNzgsIDgsIDQsIDIzMSwgODEsIDgsIDQsIDIzMSwgODAsIDgsIDQsIDIzMSwgNTEsIDgsIDQsIDIzMSwgNTMsIAotICAgIDgsIDQsIDIzMSwgNTIsIDgsIDQsIDIzMSwgNTYsIDgsIDQsIDIzMSwgNTUsIDgsIDQsIDIzMSwgNTgsIDgsIDQsIDIzMSwgCi0gICAgNTcsIDgsIDQsIDIzMSwgNjIsIDgsIDQsIDIzMSwgNjQsIDgsIDQsIDIzMSwgNjMsIDgsIDQsIDIzMSwgNDcsIDgsIDQsIAotICAgIDIzMSwgNDYsIDgsIDQsIDIzMSwgNTQsIDgsIDQsIDIzMSwgNTAsIDgsIDQsIDIzMSwgNDgsIDgsIDQsIDIzMSwgNDksIDgsIAotICAgIDQsIDI0MCwgMTcyLCA4LCA0LCAyNDAsIDE3MSwgOCwgNCwgMjQwLCAxNzgsIDgsIDQsIDI0MCwgMTczLCA4LCA0LCAyNDAsIAotICAgIDE3NSwgOCwgNCwgMjQwLCAxNzQsIDgsIDQsIDI0MCwgMTc3LCA4LCA0LCAyNDAsIDE3NiwgOCwgNCwgMjQwLCAxODMsIDgsIAotICAgIDQsIDI0MCwgMTgyLCA4LCA0LCAyNDAsIDE4NSwgOCwgNCwgMjQwLCAxODQsIDgsIDQsIDI0MCwgMTY0LCA4LCA0LCAyNDAsIAotICAgIDE2MywgOCwgNCwgMjQwLCAxNjYsIDgsIDQsIDI0MCwgMTY1LCA4LCA0LCAyNDAsIDE2OCwgOCwgNCwgMjQwLCAxNjcsIDgsIAotICAgIDQsIDI0MCwgMTcwLCA4LCA0LCAyNDAsIDE2OSwgOCwgNCwgMjQwLCAxNzksIDgsIDQsIDI0MCwgMTgxLCA4LCA0LCAyNDAsIAotICAgIDE4MCwgOCwgNCwgMjI5LCAxMTAsIDgsIDQsIDIyOSwgMTEyLCA4LCA0LCAyMjksIDExMSwgOCwgNCwgMjI5LCAxNTAsIDgsIAotICAgIDQsIDIyOSwgMTQ5LCA4LCA0LCAyMjksIDE1OSwgOCwgNCwgMjI5LCAxNTMsIDgsIDQsIDIyOSwgNzMsIDgsIDQsIDIyOSwgCi0gICAgNzIsIDgsIDQsIDIyOSwgNzQsIDgsIDQsIDIyOSwgODIsIDgsIDQsIDIyOSwgNzksIDgsIDQsIDIyOSwgOTAsIDgsIDQsIAotICAgIDIyOSwgODQsIDgsIDQsIDIyOSwgMTQzLCA4LCA0LCAyMjksIDE0OCwgOCwgNCwgMjI5LCAxNDUsIDgsIDQsIDI0MSwgMTQyLCAKLSAgICA4LCA0LCAyNDEsIDE1MiwgOCwgNCwgMjQxLCAxNjAsIDgsIDQsIDI0MSwgMjM0LCA4LCA0LCAyNDEsIDIyNywgOCwgNCwgCi0gICAgMTU5LCA4LCA0LCAyNDEsIDI0NSwgOCwgNCwgMjQwLCAxOTYsIDgsIDQsIDI0MCwgMTk1LCA4LCA0LCAyNDAsIDE5OCwgOCwgCi0gICAgNCwgMjQwLCAxOTcsIDgsIDQsIDI0MCwgMjI5LCA4LCA0LCAyNDAsIDIyMCwgOCwgNCwgMjQxLCA1NCwgOCwgNCwgMjQxLCAKLSAgICAzNCwgOCwgNCwgMjQxLCAxNzksIDgsIDQsIDI0MSwgMjIyLCA4LCA0LCAyNDEsIDE5MCwgOCwgNCwgMjE0LCAyNywgOCwgNCwgCi0gICAgMjE0LCAxMiwgOCwgNCwgMjE0LCA0OSwgOCwgNCwgMjE0LCAzNSwgOCwgNCwgMjEzLCAxNzMsIDgsIDQsIDIxMywgMTc1LCA4LCAKLSAgICA0LCAyMTMsIDE3NCwgOCwgNCwgMjEzLCAxOTEsIDgsIDQsIDIxMywgMjE0LCA4LCA0LCAyMTMsIDE5NywgOCwgNCwgMjEzLCAKLSAgICAyNDYsIDgsIDQsIDIxNCwgNiwgOCwgNCwgMjEzLCAyNTEsIDgsIDQsIDIxMiwgMjMsIDgsIDQsIDIxMiwgMjIsIDgsIDQsIAotICAgIDIxMiwgMzcsIDgsIDQsIDIxMiwgMjUsIDgsIDQsIDIxMiwgMzAsIDgsIDQsIDIxMiwgMzIsIDgsIDQsIDIxMiwgMzEsIDgsIAotICAgIDQsIDIxMiwgOTUsIDgsIDQsIDIxMiwgOTIsIDgsIDQsIDIxMiwgMTA5LCA4LCA0LCAyMTIsIDk4LCA4LCA0LCAyMTIsIDEsIAotICAgIDgsIDQsIDIxMiwgMywgOCwgNCwgMjEyLCAyLCA4LCA0LCAyMTIsIDEyLCA4LCA0LCAyMTIsIDExLCA4LCA0LCAyMTIsIDE2LCAKLSAgICA4LCA0LCAyMTIsIDEzLCA4LCA0LCAyMTIsIDc3LCA4LCA0LCAyMTIsIDg3LCA4LCA0LCAyMTIsIDgxLCA4LCA0LCAyMTEsIAotICAgIDI1MywgOCwgNCwgMjExLCAyNTIsIDgsIDQsIDIxMiwgOCwgOCwgNCwgMjEyLCAwLCA4LCA0LCAyMTEsIDI1NCwgOCwgNCwgCi0gICAgMjExLCAyNTUsIDgsIDQsIDIxMSwgMjQ0LCA4LCA0LCAyMTEsIDI0MywgOCwgNCwgMjExLCAyNDksIDgsIDQsIDIxMSwgMjQ3LCAKLSAgICA4LCA0LCAyMTEsIDI0NSwgOCwgNCwgMjExLCAyNDYsIDgsIDQsIDI0OSwgMjIxLCA4LCA0LCAyNDksIDIxNywgOCwgNCwgCi0gICAgMjQ5LCAyNDQsIDgsIDQsIDI0OSwgMjMwLCA4LCA0LCAyNDksIDI0MSwgOCwgNCwgMjQ5LCAyMzUsIDgsIDQsIDI0OSwgMjQzLCAKLSAgICA4LCA0LCAyNDksIDI0MiwgOCwgNCwgMjUwLCAxNTYsIDgsIDQsIDI1MCwgMTUwLCA4LCA0LCAyNTAsIDIxOSwgOCwgNCwgCi0gICAgMjUwLCAxODMsIDgsIDQsIDI0OSwgNDUsIDgsIDQsIDI0OSwgNDcsIDgsIDQsIDI0OSwgNDYsIDgsIDQsIDI0OSwgOTIsIDgsIAotICAgIDQsIDI0OSwgODMsIDgsIDQsIDI0OSwgMTc1LCA4LCA0LCAyNDksIDEwOCwgOCwgNCwgMjUwLCA5NCwgOCwgNCwgMjUwLCAKLSAgICAxMjQsIDgsIDQsIDI1MCwgOTksIDgsIDQsIDI0OSwgMjYsIDgsIDQsIDI0OSwgMjUsIDgsIDQsIDI0OSwgNTMsIDgsIDQsIAotICAgIDI0OSwgNDMsIDgsIDQsIDI0OSwgMzEsIDgsIDQsIDI0OSwgNDIsIDgsIDQsIDI0OSwgNiwgOCwgNCwgMjQ5LCA1LCA4LCA0LCAKLSAgICAyNDksIDE2LCA4LCA0LCAyNDksIDEyLCA4LCA0LCAyNDksIDcsIDgsIDQsIDI0OSwgOSwgOCwgNCwgMjExLCAyMjcsIDgsIDQsIAotICAgIDIxMSwgMjI2LCA4LCA0LCAyMTEsIDIzMywgOCwgNCwgMjExLCAyMjgsIDgsIDQsIDIxMSwgMjMwLCA4LCA0LCAyMTEsIDIyOSwgCi0gICAgOCwgNCwgMjExLCAyMzIsIDgsIDQsIDIxMSwgMjMxLCA4LCA0LCAyMTEsIDIzOSwgOCwgNCwgMjExLCAyMzgsIDgsIDQsIAotICAgIDIxMSwgMjQyLCA4LCA0LCAyMTEsIDI0MCwgOCwgNCwgMjExLCAyMjMsIDgsIDQsIDIxMSwgMjI1LCA4LCA0LCAyMTEsIDIyNCwgCi0gICAgOCwgNCwgMjExLCAyMzQsIDgsIDQsIDIxMSwgMjM3LCA4LCA0LCAyMTEsIDIzNSwgOCwgNCwgMjExLCAyMTgsIDgsIDQsIAotICAgIDIxMSwgMjIyLCA4LCA0LCAyMTEsIDIyMSwgOCwgNCwgMjExLCAyMTksIDgsIDQsIDIxMSwgMjIwLCA4LCA0LCAyMTEsIDIxMywgCi0gICAgOCwgNCwgMjExLCAyMTIsIDgsIDQsIDIxMSwgMjE3LCA4LCA0LCAyMTEsIDIxNiwgOCwgNCwgMjExLCAyMTQsIDgsIDQsIAotICAgIDIxMSwgMjE1LCA4LCA0LCAyMjcsIDIyNCwgOCwgNCwgMjI3LCAyMjMsIDgsIDQsIDIyNywgMjI5LCA4LCA0LCAyMjcsIDIyNSwgCi0gICAgOCwgNCwgMjI3LCAyMjYsIDgsIDQsIDIyNywgMjI4LCA4LCA0LCAyMjcsIDIyNywgOCwgNCwgMjI3LCAyMzQsIDgsIDQsIAotICAgIDIyNywgMjMzLCA4LCA0LCAyMjcsIDIzNywgOCwgNCwgMjI3LCAyMzYsIDgsIDQsIDIyNywgMjE3LCA4LCA0LCAyMjcsIDIxOCwgCi0gICAgOCwgNCwgMjI3LCAyMjEsIDgsIDQsIDIyNywgMjIyLCA4LCA0LCAyMjcsIDIzMCwgOCwgNCwgMjI3LCAyMzIsIDgsIDQsIAotICAgIDIyNywgMjEyLCA4LCA0LCAyMjcsIDIyMCwgOCwgNCwgMjI3LCAyMTYsIDgsIDQsIDIyNywgMjEzLCA4LCA0LCAyMjcsIDIxNCwgCi0gICAgOCwgNCwgMjI3LCAyMDcsIDgsIDQsIDIyNywgMjA2LCA4LCA0LCAyMjcsIDIxMSwgOCwgNCwgMjI3LCAyMTAsIDgsIDQsIAotICAgIDIyNywgMjA4LCA4LCA0LCAyMjcsIDIwOSwgOCwgNCwgMjIwLCA1NSwgOCwgNCwgMTg5LCA4LCA0LCAyMjAsIDExNywgOCwgNCwgCi0gICAgMjIwLCA1OCwgOCwgNCwgMjIwLCAxMDksIDgsIDQsIDIyMCwgMTEyLCA4LCA0LCAyMjAsIDExMCwgOCwgNCwgMjIyLCAxNDIsIAotICAgIDgsIDQsIDIyMiwgMTMyLCA4LCA0LCAyMjIsIDIwMiwgOCwgNCwgMjIyLCAxNTAsIDgsIDQsIDIxOCwgMjI4LCA4LCA0LCAKLSAgICAyMTgsIDIzMCwgOCwgNCwgMjE4LCAyMjksIDgsIDQsIDIxOSwgMjIxLCA4LCA0LCAyMTksIDIxMCwgOCwgNCwgMjE5LCAyNDIsIAotICAgIDgsIDQsIDIxOSwgMjI0LCA4LCA0LCAyMjEsIDM1LCA4LCA0LCAyMjIsIDEwMCwgOCwgNCwgMjIxLCA1OSwgOCwgNCwgMjE4LCAKLSAgICAyMDYsIDgsIDQsIDIxOCwgMjA0LCA4LCA0LCAyMTksIDI3LCA4LCA0LCAyMTgsIDIyNywgOCwgNCwgMjE4LCAyMDksIDgsIDQsIAotICAgIDIxOCwgMjE3LCA4LCA0LCAyMTgsIDExMywgOCwgNCwgMjE4LCAxMTIsIDgsIDQsIDIxOCwgMTc3LCA4LCA0LCAyMTgsIDExOSwgCi0gICAgOCwgNCwgMjE4LCAxMTQsIDgsIDQsIDIxOCwgMTE4LCA4LCA0LCAyMTksIDEyMywgOCwgNCwgMjE5LCAxMjIsIDgsIDQsIAotICAgIDIxOSwgMTI4LCA4LCA0LCAyMTksIDEyNCwgOCwgNCwgMjE5LCAxMjUsIDgsIDQsIDIxOSwgMTI3LCA4LCA0LCAyMTksIDEyNiwgCi0gICAgOCwgNCwgMjE5LCAxMzUsIDgsIDQsIDIxOSwgMTM0LCA4LCA0LCAyMTksIDE1NywgOCwgNCwgMjE5LCAxMzYsIDgsIDQsIAotICAgIDIxOSwgMTE5LCA4LCA0LCAyMTksIDExOCwgOCwgNCwgMjE5LCAxMjEsIDgsIDQsIDIxOSwgMTIwLCA4LCA0LCAyMTksIDEzMCwgCi0gICAgOCwgNCwgMjE5LCAxMzMsIDgsIDQsIDIxOSwgMTMxLCA4LCA0LCAyMTksIDExNSwgOCwgNCwgMjE5LCAxMTQsIDgsIDQsIAotICAgIDIxOSwgMTE3LCA4LCA0LCAyMTksIDExNiwgOCwgNCwgMjE5LCAxMDksIDgsIDQsIDIxOSwgMTA4LCA4LCA0LCAyMTksIDExMywgCi0gICAgOCwgNCwgMjE5LCAxMTIsIDgsIDQsIDIxOSwgMTEwLCA4LCA0LCAyMTksIDExMSwgOCwgNCwgMjEyLCA3MCwgOCwgNCwgMjEyLCAKLSAgICA2OSwgOCwgNCwgMjEyLCA3NSwgOCwgNCwgMjEyLCA3MiwgOCwgNCwgMjEyLCA1MiwgOCwgNCwgMjEyLCA1NCwgOCwgNCwgCi0gICAgMjEyLCA1MywgOCwgNCwgMjEyLCA1NywgOCwgNCwgMjEyLCA1NiwgOCwgNCwgMjEyLCA2MCwgOCwgNCwgMjEyLCA1OCwgOCwgCi0gICAgNCwgMjEyLCA2NCwgOCwgNCwgMjEyLCA2MywgOCwgNCwgMjEyLCA2NywgOCwgNCwgMjEyLCA2NSwgOCwgNCwgMjEyLCA0OCwgCi0gICAgOCwgNCwgMjEyLCA0NywgOCwgNCwgMjEyLCA1NSwgOCwgNCwgMjEyLCA1MSwgOCwgNCwgMjEyLCA0OSwgOCwgNCwgMjEyLCAKLSAgICA1MCwgOCwgNCwgMjEyLCA0MCwgOCwgNCwgMjEyLCAzOSwgOCwgNCwgMjEyLCA0NCwgOCwgNCwgMjEyLCA0MywgOCwgNCwgCi0gICAgMjEyLCA0MSwgOCwgNCwgMjEyLCA0MiwgOCwgNCwgMjUwLCA3MiwgOCwgNCwgMjUwLCA2OSwgOCwgNCwgMjUwLCA5MiwgOCwgCi0gICAgNCwgMjUwLCA4MCwgOCwgNCwgMjUwLCAyLCA4LCA0LCAyNTAsIDEsIDgsIDQsIDI1MCwgNCwgOCwgNCwgMjUwLCAzLCA4LCA0LCAKLSAgICAyNTAsIDE2LCA4LCA0LCAyNTAsIDE1LCA4LCA0LCAyNTAsIDIzLCA4LCA0LCAyNTAsIDE4LCA4LCA0LCAyNTAsIDUyLCA4LCAKLSAgICA0LCAyNTAsIDUwLCA4LCA0LCAyNTAsIDY3LCA4LCA0LCAyNTAsIDU4LCA4LCA0LCAyNDksIDI1MiwgOCwgNCwgMjUwLCA2LCAKLSAgICA4LCA0LCAyNTAsIDAsIDgsIDQsIDI0OSwgMjUzLCA4LCA0LCAyNDksIDI1NSwgOCwgNCwgMjQ5LCAyNDYsIDgsIDQsIDI0OSwgCi0gICAgMjQ1LCA4LCA0LCAyNDksIDI1MCwgOCwgNCwgMjQ5LCAyNDksIDgsIDQsIDI0OSwgMjQ3LCA4LCA0LCAyNDksIDI0OCwgOCwgCi0gICAgNCwgMjIzLCA4MCwgOCwgNCwgMjIzLCA4MSwgOCwgNCwgMjIzLCA2NywgOCwgNCwgMjIzLCA2OCwgOCwgNCwgMjIzLCA3MSwgCi0gICAgOCwgNCwgMjIzLCA3MCwgOCwgNCwgMjIzLCA3MywgOCwgNCwgMjIzLCA3MiwgOCwgNCwgMjIzLCA3NSwgOCwgNCwgMjIzLCAKLSAgICA3NCwgOCwgNCwgMjIzLCA3OSwgOCwgNCwgMjIzLCA3NiwgOCwgNCwgMjIzLCA2MywgOCwgNCwgMjIzLCA2MiwgOCwgNCwgCi0gICAgMjIzLCA2OSwgOCwgNCwgMjIzLCA2NiwgOCwgNCwgMjIzLCA2NCwgOCwgNCwgMjIzLCA2NSwgOCwgNCwgMjIzLCA1NywgOCwgCi0gICAgNCwgMjIzLCA1NiwgOCwgNCwgMjIzLCA2MSwgOCwgNCwgMjIzLCA2MCwgOCwgNCwgMjIzLCA1OCwgOCwgNCwgMjIzLCA1OSwgCi0gICAgOCwgNCwgMjI4LCAxNDUsIDgsIDQsIDIyOCwgMTQ0LCA4LCA0LCAyMjgsIDE0NywgOCwgNCwgMjI4LCAxNDYsIDgsIDQsIAotICAgIDIyOCwgMTM3LCA4LCA0LCAyMjgsIDEzOSwgOCwgNCwgMjI4LCAxMzgsIDgsIDQsIDIyOCwgMTQxLCA4LCA0LCAyMjgsIDE0MCwgCi0gICAgOCwgNCwgMjI4LCAxNDMsIDgsIDQsIDIyOCwgMTQyLCA4LCA0LCAyMjgsIDEzMiwgOCwgNCwgMjI4LCAxMzEsIDgsIDQsIAotICAgIDIyOCwgMTM2LCA4LCA0LCAyMjgsIDEzNSwgOCwgNCwgMjI4LCAxMzMsIDgsIDQsIDIyOCwgMTM0LCA4LCA0LCAyMjgsIDEyNiwgCi0gICAgOCwgNCwgMjI4LCAxMjUsIDgsIDQsIDIyOCwgMTMwLCA4LCA0LCAyMjgsIDEyOSwgOCwgNCwgMjI4LCAxMjcsIDgsIDQsIAotICAgIDIyOCwgMTI4LCA4LCA0LCAyMjAsIDI1MSwgOCwgNCwgMjIwLCAyNDcsIDgsIDQsIDIyMSwgMjQsIDgsIDQsIDIyMSwgNiwgOCwgCi0gICAgNCwgMjIwLCAxNDAsIDgsIDQsIDIyMCwgMTQyLCA4LCA0LCAyMjAsIDE0MSwgOCwgNCwgMjIwLCAxNjAsIDgsIDQsIDIyMCwgCi0gICAgMTU3LCA4LCA0LCAyMjAsIDE4NywgOCwgNCwgMjIwLCAxNzgsIDgsIDQsIDIyMCwgMjIyLCA4LCA0LCAyMjAsIDIxNSwgOCwgCi0gICAgNCwgMjIwLCAyNDMsIDgsIDQsIDIyMCwgMjMwLCA4LCA0LCAyMjAsIDEzNiwgOCwgNCwgMjIwLCAxMzUsIDgsIDQsIDIyMCwgCi0gICAgMTUwLCA4LCA0LCAyMjAsIDEzOSwgOCwgNCwgMjIwLCAxMzcsIDgsIDQsIDIyMCwgMTM4LCA4LCA0LCAyMjAsIDEyMCwgOCwgCi0gICAgNCwgMjIwLCAxMTksIDgsIDQsIDIyMCwgMTI2LCA4LCA0LCAyMjAsIDEyMywgOCwgNCwgMjIwLCAxMjEsIDgsIDQsIDIyMCwgCi0gICAgMTIyLCA4LCA0LCAyMjQsIDMzLCA4LCA0LCAyMjQsIDI4LCA4LCA0LCAyMDMsIDgsIDQsIDIyNCwgMzksIDgsIDQsIDIyMywgCi0gICAgMzEsIDgsIDQsIDIyMywgMzMsIDgsIDQsIDIyMywgMzIsIDgsIDQsIDIyMywgOTAsIDgsIDQsIDIyMywgODMsIDgsIDQsIAotICAgIDIyMywgMTEyLCA4LCA0LCAyMjMsIDk0LCA4LCA0LCAyMjMsIDE5NiwgOCwgNCwgMjI0LCAyMSwgOCwgNCwgMjIzLCAyMzEsIAotICAgIDgsIDQsIDIyMywgMjQsIDgsIDQsIDIyMywgMjIsIDgsIDQsIDIyMywgNTEsIDgsIDQsIDIyMywgMzAsIDgsIDQsIDIyMywgCi0gICAgMjYsIDgsIDQsIDIyMywgMjcsIDgsIDQsIDIyMywgNywgOCwgNCwgMjIzLCA2LCA4LCA0LCAyMjMsIDEyLCA4LCA0LCAyMjMsIAotICAgIDEwLCA4LCA0LCAyMjMsIDgsIDgsIDQsIDIyMywgOSwgOCwgNCwgMjM1LCAxMDEsIDgsIDQsIDIzNSwgMTAwLCA4LCA0LCAKLSAgICAyMzUsIDExMCwgOCwgNCwgMjM1LCAxMDIsIDgsIDQsIDIzNSwgMTA2LCA4LCA0LCAyMzUsIDEwNSwgOCwgNCwgMjM1LCAxMDgsIAotICAgIDgsIDQsIDIzNSwgMTA3LCA4LCA0LCAyMzUsIDQ0LCA4LCA0LCAyMzUsIDQzLCA4LCA0LCAyMzUsIDQ2LCA4LCA0LCAyMzUsIAotICAgIDQ1LCA4LCA0LCAyMzUsIDU5LCA4LCA0LCAyMzUsIDU3LCA4LCA0LCAyMzUsIDcxLCA4LCA0LCAyMzUsIDYxLCA4LCA0LCAKLSAgICAyMzUsIDM4LCA4LCA0LCAyMzUsIDM2LCA4LCA0LCAyMzUsIDU0LCA4LCA0LCAyMzUsIDQyLCA4LCA0LCAyMzUsIDM5LCA4LCAKLSAgICA0LCAyMzUsIDQwLCA4LCA0LCAyMzUsIDMwLCA4LCA0LCAyMzUsIDI5LCA4LCA0LCAyMzUsIDM0LCA4LCA0LCAyMzUsIDMzLCAKLSAgICA4LCA0LCAyMzUsIDMxLCA4LCA0LCAyMzUsIDMyLCA4LCA0LCAyMjQsIDE5MSwgOCwgNCwgMjI0LCAxODksIDgsIDQsIDIyNCwgCi0gICAgMTk4LCA4LCA0LCAyMjQsIDE5MiwgOCwgNCwgMjI0LCAxOTUsIDgsIDQsIDIyNCwgMTk0LCA4LCA0LCAyMjQsIDE5NywgOCwgCi0gICAgNCwgMjI0LCAxOTYsIDgsIDQsIDIyNCwgMTQ0LCA4LCA0LCAyMjQsIDE0MSwgOCwgNCwgMjI0LCAxNDYsIDgsIDQsIDIyNCwgCi0gICAgMTQ1LCA4LCA0LCAyMjQsIDE3OCwgOCwgNCwgMjI0LCAxNzcsIDgsIDQsIDIyNCwgMTg3LCA4LCA0LCAyMjQsIDE4MSwgOCwgCi0gICAgNCwgMjI0LCAxMzYsIDgsIDQsIDIyNCwgMTMyLCA4LCA0LCAyMjQsIDE3NSwgOCwgNCwgMjI0LCAxNDAsIDgsIDQsIDIyNCwgCi0gICAgMTM4LCA4LCA0LCAyMjQsIDEzOSwgOCwgNCwgMjI0LCAxMTYsIDgsIDQsIDIyNCwgMTE0LCA4LCA0LCAyMjQsIDEyNiwgOCwgCi0gICAgNCwgMjI0LCAxMTksIDgsIDQsIDIyNCwgMTE3LCA4LCA0LCAyMjQsIDExOCwgOCwgNCwgMjM1LCA5MCwgOCwgNCwgMjM1LCAKLSAgICA4OSwgOCwgNCwgMjM1LCA5NiwgOCwgNCwgMjM1LCA5MSwgOCwgNCwgMjM1LCA5MywgOCwgNCwgMjM1LCA5MiwgOCwgNCwgCi0gICAgMjM1LCA5NSwgOCwgNCwgMjM1LCA5NCwgOCwgNCwgMjM1LCA4MSwgOCwgNCwgMjM1LCA4MywgOCwgNCwgMjM1LCA4MiwgOCwgCi0gICAgNCwgMjM1LCA4NiwgOCwgNCwgMjM1LCA4NSwgOCwgNCwgMjM1LCA4OCwgOCwgNCwgMjM1LCA4NywgOCwgNCwgMjM1LCA3NywgCi0gICAgOCwgNCwgMjM1LCA3NiwgOCwgNCwgMjM1LCA4NCwgOCwgNCwgMjM1LCA4MCwgOCwgNCwgMjM1LCA3OCwgOCwgNCwgMjM1LCAKLSAgICA3OSwgOCwgNCwgMjM1LCA3MywgOCwgNCwgMjM1LCA3MiwgOCwgNCwgMjM1LCA3NSwgOCwgNCwgMjM1LCA3NCwgOCwgNCwgCi0gICAgMjI4LCAyNDksIDgsIDQsIDIyOCwgMjQ4LCA4LCA0LCAyMjksIDAsIDgsIDQsIDIyOCwgMjUwLCA4LCA0LCAyMjgsIDI1MiwgCi0gICAgOCwgNCwgMjI4LCAyNTEsIDgsIDQsIDIyOCwgMjU1LCA4LCA0LCAyMjgsIDI1MywgOCwgNCwgMjI4LCAyMzgsIDgsIDQsIAotICAgIDIyOCwgMjM5LCA4LCA0LCAyMjgsIDI0NCwgOCwgNCwgMjI4LCAyNDMsIDgsIDQsIDIyOCwgMjQ3LCA4LCA0LCAyMjgsIDI0NSwgCi0gICAgOCwgNCwgMjI4LCAyMzMsIDgsIDQsIDIyOCwgMjQyLCA4LCA0LCAyMjgsIDIzNywgOCwgNCwgMjI4LCAyMzQsIDgsIDQsIAotICAgIDIyOCwgMjM1LCA4LCA0LCAyMjgsIDIyOCwgOCwgNCwgMjI4LCAyMjcsIDgsIDQsIDIyOCwgMjMyLCA4LCA0LCAyMjgsIDIzMSwgCi0gICAgOCwgNCwgMjI4LCAyMjksIDgsIDQsIDIyOCwgMjMwLCA4LCA0LCAyMjgsIDAsIDgsIDQsIDIyNywgMjU1LCA4LCA0LCAyMjgsIAotICAgIDEwLCA4LCA0LCAyMjgsIDQsIDgsIDQsIDIyOCwgNywgOCwgNCwgMjI4LCA2LCA4LCA0LCAyMjgsIDksIDgsIDQsIDIyOCwgOCwgCi0gICAgOCwgNCwgMjI3LCAyNDMsIDgsIDQsIDIyNywgMjQ1LCA4LCA0LCAyMjcsIDI0NCwgOCwgNCwgMjI3LCAyNDksIDgsIDQsIAotICAgIDIyNywgMjQ4LCA4LCA0LCAyMjcsIDI1MywgOCwgNCwgMjI3LCAyNTAsIDgsIDQsIDIyNywgMjQxLCA4LCA0LCAyMjcsIDI0MCwgCi0gICAgOCwgNCwgMjI3LCAyNDcsIDgsIDQsIDIyNywgMjQyLCA4LCA0LCAyMTMsIDEzOCwgOCwgNCwgMjEzLCAxMzcsIDgsIDQsIAotICAgIDIxMywgMTQ1LCA4LCA0LCAyMTMsIDE0MCwgOCwgNCwgMjEzLCAxNDIsIDgsIDQsIDIxMywgMTQxLCA4LCA0LCAyMTMsIDE0NCwgCi0gICAgOCwgNCwgMjEzLCAxNDMsIDgsIDQsIDIxMywgMTI3LCA4LCA0LCAyMTMsIDEyOCwgOCwgNCwgMjEzLCAxMzIsIDgsIDQsIAotICAgIDIxMywgMTMxLCA4LCA0LCAyMTMsIDEzNiwgOCwgNCwgMjEzLCAxMzQsIDgsIDQsIDIxMywgMTA5LCA4LCA0LCAyMTMsIDEwNywgCi0gICAgOCwgNCwgMjEzLCAxMTksIDgsIDQsIDIxMywgMTEyLCA4LCA0LCAyMTMsIDExMCwgOCwgNCwgMjEzLCAxMTEsIDgsIDQsIAotICAgIDIxMiwgMjQxLCA4LCA0LCAyMTIsIDIzOSwgOCwgNCwgMjEyLCAyNTUsIDgsIDQsIDIxMiwgMjQyLCA4LCA0LCAyMTIsIDI0OSwgCi0gICAgOCwgNCwgMjEyLCAyNDgsIDgsIDQsIDIxMiwgMjUyLCA4LCA0LCAyMTIsIDI1MCwgOCwgNCwgMjEyLCAxODIsIDgsIDQsIAotICAgIDIxMiwgMTgxLCA4LCA0LCAyMTIsIDE4NSwgOCwgNCwgMjEyLCAxODMsIDgsIDQsIDIxMiwgMjE1LCA4LCA0LCAyMTIsIDIxMiwgCi0gICAgOCwgNCwgMjEyLCAyMzUsIDgsIDQsIDIxMiwgMjE5LCA4LCA0LCAyMTIsIDE3MywgOCwgNCwgMjEyLCAxNzAsIDgsIDQsIAotICAgIDIxMiwgMjAzLCA4LCA0LCAyMTIsIDE4MCwgOCwgNCwgMjEyLCAxNzYsIDgsIDQsIDIxMiwgMTc3LCA4LCA0LCAyMTIsIDE1NSwgCi0gICAgOCwgNCwgMjEyLCAxNTQsIDgsIDQsIDIxMiwgMTYxLCA4LCA0LCAyMTIsIDE1OCwgOCwgNCwgMjEyLCAxNTYsIDgsIDQsIAotICAgIDIxMiwgMTU3LCA4LCAzNCwgMjI0LCAxNzgsIDgsIDM0LCAyMzMsIDEzLCA4LCAzNCwgMjM0LCA3MCwgOCwgMzQsIDIyOCwgNCwgCi0gICAgOCwgMzQsIDI0OSwgMTIsIDgsIDM0LCAyMTksIDEyOCwgOCwgMzQsIDI0MiwgMjQ0LCA4LCAzNCwgMjQzLCAyMCwgOCwgMzQsIAotICAgIDIzMSwgNDIsIDgsIDM0LCAyNDAsIDE3MiwgOCwgMzQsIDIzMiwgMTE2LCA4LCAzNCwgMjUyLCAzLCA4LCAzNCwgMjMwLCAKLSAgICAxOTYsIDgsIDM0LCAyMTIsIDIzNSwgOCwgMzQsIDIyNSwgOCwgOCwgMzQsIDI0MCwgMTY2LCA4LCAzNCwgMjE3LCAyNTMsIDgsIAotICAgIDM0LCAyNDMsIDExMCwgOCwgMzQsIDIxMiwgMCwgOCwgMzQsIDI0OSwgNiwgOCwgMzQsIDI0OCwgNDYsIDgsIDM0LCAyNTEsIAotICAgIDI3LCA4LCAzNCwgMjQyLCAyNDAsIDgsIDM0LCAyMjcsIDI1MCwgOCwgMzQsIDIxNiwgODIsIDgsIDM0LCAyMjcsIDQxLCA4LCAKLSAgICAzNCwgMjM1LCA3NywgOCwgMzQsIDIxMiwgMTIsIDgsIDM0LCAyMjQsIDI0NCwgOCwgMzQsIDI0MSwgOTQsIDgsIDM0LCAyMTIsIAotICAgIDI0MSwgOCwgMzQsIDIxNCwgOTUsIDgsIDM0LCAyMjAsIDEyNiwgOCwgMzQsIDIxNCwgMjIxLCA4LCAzNCwgMjEyLCAxMDksIAotICAgIDgsIDM0LCAyMzUsIDcxLCA4LCAzNCwgMjI3LCAyMTYsIDgsIDM0LCAyMzUsIDc1LCA4LCAzNCwgMjQyLCAxMzAsIDgsIDM0LCAKLSAgICAyMzUsIDk1LCA4LCAzNCwgMjEzLCAyMTQsIDgsIDM0LCAyNDYsIDMzLCA4LCAzNCwgMjIwLCAxMzgsIDgsIDM0LCAyMzMsIDgsIAotICAgIDgsIDM0LCAyNDksIDE2LCA4LCAzNCwgMjQ5LCA0NiwgOCwgMzQsIDI0OSwgMjMwLCA4LCAzNCwgMjQwLCAxNjksIDgsIDM0LCAKLSAgICAyMjAsIDI1MSwgOCwgMzQsIDIxMSwgMjU1LCA4LCAzNCwgMjIwLCAxNzgsIDgsIDM0LCAyNTAsIDY3LCA4LCAzNCwgMjExLCAKLSAgICAyMzAsIDgsIDM0LCAyMjksIDI1MiwgOCwgMzQsIDIzNCwgMTg4LCAyMzIsIDIyNSwgMSwgMjUyLCAxMDcsIDIzMiwgMjI1LCAKLSAgICAxLCAxOTMsIDIzMiwgMjI1LCAxLCAyMjYsIDIzLCAyMzIsIDIyNSwgMSwgMjQ4LCAxNjQsIDIzMiwgMjI1LCAxLCAyMTgsIAotICAgIDUyLCAyMzIsIDIyNSwgMSwgMjE3LCAxNjEsIDIzMiwgMjI1LCAxLCAyNDMsIDExMCwgMjMyLCAyMjUsIDEsIDE4MSwgMjMyLCAKLSAgICAyMjUsIDEsIDIzNCwgMTM4LCAyMzIsIDIyNSwgMSwgMjM1LCAxMzksIDIzMiwgMjI1LCAxLCAyNTAsIDIxOSwgMjMyLCAyMjUsIAotICAgIDEsIDI1MCwgOTIsIDIzMiwgMjI1LCAxLCAyNDUsIDI0OSwgMjMyLCAyMjUsIDEsIDIxNiwgMTQxLCAyMzIsIDIyNSwgMSwgCi0gICAgMjE2LCAxMzMsIDIzMiwgMjI1LCAxLCAxODgsIDIzMiwgMjI1LCAxLCAyMDUsIDIzMiwgMjI1LCAxLCAyMzMsIDE1NywgMjMyLCAKLSAgICAyMjUsIDEsIDIyMiwgMjAyLCAyMzIsIDIyNSwgMSwgMjEyLCA3NSwgMjMyLCAyMjUsIDEsIDIxMiwgMTA5LCAyMzIsIDIyNSwgCi0gICAgMSwgMjI5LCAxNTksIDIzMiwgMjI1LCAxLCAxNTksIDIzMiwgMjI1LCAxLCAyMTMsIDE1MywgMjMyLCAyMjUsIDEsIDI0MSwgCi0gICAgMTc0LCAyMzIsIDIyNSwgMSwgMjQ0LCAxNjQsIDIzMiwgMjI1LCAxLCAyMTQsIDQ5LCAyMzIsIDIyNSwgMSwgMjIxLCAyNCwgCi0gICAgMjMyLCAyMjUsIDEsIDE4NiwgMjMyLCAyMjUsIDEsIDI0MiwgMjI1LCAyMzIsIDIyNSwgMSwgNjEsIDIzMiwgMjI1LCAxLCAKLSAgICAyNTQsIDE0OCwgMjMyLCAyMjUsIDEsIDc0LCAyMzIsIDIyNSwgMSwgMjQ1LCAyMiwgMjMyLCAyMjUsIDEsIDcyLCAyMzIsIAotICAgIDIyNSwgMSwgNzUsIDIzMiwgMjI1LCAxLCA2OSwgMjMyLCAyMjUsIDEsIDIxNSwgMTgzLCAyMzIsIDIyNSwgMSwgMjE1LCAKLSAgICAxNzgsIDIzMiwgMjI1LCAxLCAyMjcsIDk5LCAyMzIsIDIyNSwgMSwgMTYwLCAyMzAsIDEwNCwgMjE3LCA3MSwgMjMyLCAyMjUsIAotICAgIDEsIDE2MCwgMjMwLCA0NiwgMjI1LCAxNTAsIDIzMiwgMjI1LCAxLCAxNjAsIDIzMCwgMTA0LCAyNDksIDE1LCAyMzIsIDIyNSwgCi0gICAgMSwgMTYwLCAyMzAsIDEwNCwgMjUxLCAxMjgsIDIzMiwgMjI1LCAxLCAxNjAsIDIzMCwgMTA0LCAyMDUsIDIzMiwgMjI1LCAxLCAKLSAgICAxNjAsIDIzMCwgMTA0LCAyMzUsIDExNiwgMjMyLCAyMjUsIDIyNSwgMjcsIDI0OSwgMTU3LCAyMzIsIDIyNSwgMjI1LCAyNywgCi0gICAgMjQzLCAyMDAsIDIxOSwgNjksIDM5LCA0LCAyNDUsIDE2NSwgMzksIDQsIDI0NSwgMTYyLCAzOSwgNCwgMjQxLCAyMDQsIDM5LCAKLSAgICA0LCAyMTQsIDEsIDM5LCA0LCAyMTQsIDAsIDM5LCA0LCAyMjYsIDg2LCAzOSwgNCwgMjUxLCAxOTEsIDM5LCA0LCAyNTEsIAotICAgIDI0MiwgMzksIDQsIDIzMSwgMTc5LCAzOSwgNCwgMjM0LCAwLCAzOSwgNCwgMjMxLCA3MywgMzksIDQsIDI0MywgNTEsIDM5LCAKLSAgICA0LCAyNDQsIDExNiwgMzksIDQsIDIxNCwgMjI3LCAzOSwgNCwgMjE3LCAyMTksIDM5LCA0LCAyMTcsIDE0NywgMzksIDQsIAotICAgIDI0NywgMjI0LCAzOSwgNCwgMjQ3LCAyMjEsIDM5LCA0LCAyMzMsIDc0LCAzOSwgNCwgMjI0LCAxLCAzOSwgNCwgMjQ4LCAyOCwgCi0gICAgMzksIDQsIDIyOSwgMjE5LCAzOSwgNCwgMjIyLCA4OSwgMzksIDQsIDIyMCwgMjQxLCAzOSwgNCwgMjEyLCA4NSwgMzksIDQsIAotICAgIDIxMiwgNjYsIDM5LCA0LCAyNTAsIDExNiwgMzksIDQsIDIzNSwgMTI1LCAzOSwgNCwgMjI5LCA3LCAzOSwgNCwgMjEzLCAzNSwgCi0gICAgMzksIDQsIDIzNCwgMTg3LCAzOSwgNCwgMjI5LCAxMzYsIDM5LCA0LCAyNDMsIDMxLCAzOSwgNCwgMjMxLCAxNDUsIDM5LCA0LCAKLSAgICAyMjksIDE4NCwgMzksIDQsIDIyOCwgMTYsIDM5LCA0LCA3MiwgMzksIDQsIDIzNSwgMjUxLCAzOSwgNCwgMjQxLCAxNjUsIAotICAgIDM5LCA0LCAyNDEsIDE0NiwgMzksIDQsIDIxMywgMjM1LCAzOSwgNCwgMjEzLCAyMjYsIDM5LCA0LCAyMjUsIDI0MCwgMzksIAotICAgIDQsIDI1MSwgMTg5LCAzOSwgNCwgMjUxLCAxODQsIDM5LCA0LCAyMzEsIDE3MiwgMzksIDQsIDIzMywgMjUzLCAzOSwgNCwgCi0gICAgMjMxLCA3MCwgMzksIDQsIDI0MywgNDcsIDM5LCA0LCAyNDQsIDkwLCAzOSwgNCwgMjE0LCAxNTQsIDM5LCA0LCAyMTcsIDcxLCAKLSAgICAzOSwgNCwgMjE3LCAxMjgsIDM5LCA0LCAyNDcsIDIxNiwgMzksIDQsIDI0NywgMjIwLCAzOSwgNCwgMjMzLCAxMywgMzksIDQsIAotICAgIDIyMywgMTg4LCAzOSwgNCwgMjQ3LCAyMTEsIDM5LCA0LCAyMjksIDIxMywgMzksIDQsIDIyMCwgMTE3LCAzOSwgNCwgMjIwLCAKLSAgICAyMTIsIDM5LCA0LCAyMTIsIDM3LCAzOSwgNCwgMjEyLCA2MiwgMzksIDQsIDI0OSwgMjQ0LCAzOSwgNCwgMjM1LCAxMTAsIAotICAgIDM5LCA0LCAyMjksIDAsIDM5LCA0LCAyMTIsIDI1NSwgMzksIDQsIDIzNCwgMTAxLCAzOSwgNCwgMjI5LCAxMjgsIDM5LCA0LCAKLSAgICAyNDIsIDE5MCwgMzksIDQsIDIzMSwgNDIsIDM5LCA0LCAyMjksIDY0LCAzOSwgNCwgMjI4LCAxMCwgMzksIDQsIDYxLCAzOSwgCi0gICAgNCwgMjU0LCAzMiwgMzksIDQsIDIyOSwgMTU1LCAzOSwgNCwgMTU5LCAzOSwgNCwgMjQyLCAxLCAzOSwgNCwgMjE0LCA0OSwgCi0gICAgMzksIDQsIDIxNCwgMzksIDM5LCA0LCAxOTMsIDM5LCA0LCAyNTEsIDE5NSwgMzksIDQsIDI1MiwgMTA3LCAzOSwgNCwgMjMxLCAKLSAgICAxODcsIDM5LCA0LCAyMzQsIDQsIDM5LCA0LCAyMzQsIDMsIDM5LCA0LCAyMzEsIDc3LCAzOSwgNCwgMjQzLCA1NSwgMzksIDQsIAotICAgIDI0NCwgMTY0LCAzOSwgNCwgMjE1LCAxLCAzOSwgNCwgMjE4LCA1MiwgMzksIDQsIDIxNywgMTYxLCAzOSwgNCwgMjQ3LCAKLSAgICAyMzIsIDM5LCA0LCAyNDcsIDIyMywgMzksIDQsIDIzMywgMTU3LCAzOSwgNCwgMjAzLCAzOSwgNCwgMjQ4LCAxNjQsIDM5LCAKLSAgICA0LCAyMjksIDIyOCwgMzksIDQsIDIyMiwgMjAyLCAzOSwgNCwgMjIxLCAyNCwgMzksIDQsIDIxMiwgMTA5LCAzOSwgNCwgCi0gICAgMjEyLCA3NSwgMzksIDQsIDI1MCwgMjE5LCAzOSwgNCwgMjM1LCAxMzksIDM5LCA0LCAyMjksIDE2LCAzOSwgNCwgMTg2LCAKLSAgICAzOSwgNCwgMTgxLCAzOSwgNCwgMjM0LCAyMzksIDM5LCA0LCAyMjksIDE0MSwgMzksIDQsIDI0MywgMTEwLCAzOSwgNCwgCi0gICAgMTg4LCAzOSwgNCwgMjA1LCAzOSwgNCwgMjI4LCAyMywgMzksIDQsIDIyNywgNDksIDM5LCA0LCAyMjcsIDQ1LCAzOSwgNCwgCi0gICAgMjQxLCAzOSwgMzksIDQsIDIxMywgMjAyLCAzOSwgNCwgMjEzLCAxOTgsIDM5LCA0LCAyMjUsIDEyOSwgMzksIDQsIDI1MSwgCi0gICAgMTg3LCAzOSwgNCwgMjUxLCAxMTgsIDM5LCA0LCAyMzEsIDE2NywgMzksIDQsIDIzMywgMjUxLCAzOSwgNCwgMjMxLCA2NiwgCi0gICAgMzksIDQsIDI0MywgNDMsIDM5LCA0LCAyNDQsIDMsIDM5LCA0LCAyMTQsIDEwOCwgMzksIDQsIDIxNiwgMjMwLCAzOSwgNCwgCi0gICAgMjE3LCAxMDYsIDM5LCA0LCAyNDcsIDIxNCwgMzksIDQsIDI0NywgMjE4LCAzOSwgNCwgMjMyLCAxODAsIDM5LCA0LCAyMjMsIAotICAgIDk5LCAzOSwgNCwgMjQ3LCA3OSwgMzksIDQsIDIyOSwgMjAwLCAzOSwgNCwgMjE5LCAyMjYsIDM5LCA0LCAyMjAsIDE4MSwgCi0gICAgMzksIDQsIDIxMiwgMTQsIDM5LCA0LCAyMTIsIDU5LCAzOSwgNCwgMjQ5LCAxMTMsIDM5LCA0LCAyMzUsIDYyLCAzOSwgNCwgCi0gICAgMjI4LCAyNDYsIDM5LCA0LCAyMTIsIDIyMCwgMzksIDQsIDIzNCwgMTksIDM5LCA0LCAyMjksIDEyNiwgMzksIDQsIDI0MiwgCi0gICAgMTQwLCAzOSwgNCwgMjMwLCAyMDIsIDM5LCA0LCAyMjgsIDE3NSwgMzksIDQsIDIyNywgMjUxLCAzOSwgNCwgNjksIDM5LCA0LCAKLSAgICAyMTUsIDE2MCwgMzksIDQsIDI0MCwgMjEyLCAzOSwgNCwgMjQwLCAyMDIsIDM5LCA0LCAyMTMsIDE4MywgMzksIDQsIDIxMywgCi0gICAgMTc3LCAzOSwgNCwgMjI1LCAzNSwgMzksIDQsIDI1MSwgMTg2LCAzOSwgNCwgMjUxLCA1NCwgMzksIDQsIDIzMSwgMTY2LCAKLSAgICAzOSwgNCwgMjMzLCAyNDksIDM5LCA0LCAyMzEsIDY1LCAzOSwgNCwgMjQzLCA0MiwgMzksIDQsIDI0MywgMjA1LCAzOSwgNCwgCi0gICAgMjE0LCA5OSwgMzksIDQsIDIxNiwgODIsIDM5LCA0LCAyMTcsIDkwLCAzOSwgNCwgMjQ3LCAyMTIsIDM5LCA0LCAyNDcsIAotICAgIDIxNywgMzksIDQsIDIzMiwgMTU2LCAzOSwgNCwgMjIzLCA1MSwgMzksIDQsIDI0NiwgMzMsIDM5LCA0LCAyMjksIDE5NSwgCi0gICAgMzksIDQsIDIxOSwgMjcsIDM5LCA0LCAyMjAsIDE1MCwgMzksIDQsIDIxMiwgOCwgMzksIDQsIDIxMiwgNTUsIDM5LCA0LCAKLSAgICAyNDksIDUzLCAzOSwgNCwgMjM1LCA1NCwgMzksIDQsIDIyOCwgMjQyLCAzOSwgNCwgMjEyLCAyMDMsIDM5LCA0LCAyMzMsIAotICAgIDIzOCwgMzksIDQsIDIyOSwgMTI1LCAzOSwgNCwgMjQyLCA5MiwgMzksIDQsIDIzMCwgMTcyLCAzOSwgNCwgMjI4LCA5MiwgCi0gICAgMzksIDQsIDIyNywgMjQ3LCAzOSwgNCwgNzUsIDM5LCA0LCAyMjcsIDYyLCAzOSwgNCwgMjI5LCA4NiwgMzksIDQsIDI0MSwgCi0gICAgNTQsIDM5LCA0LCAyNDEsIDQyLCAzOSwgNCwgMjEzLCAyMTQsIDM5LCA0LCAyMTMsIDIwMywgMzksIDQsIDIyNSwgMTUwLCAKLSAgICAzOSwgNCwgMjUxLCAxODgsIDM5LCA0LCAyNTEsIDEyOCwgMzksIDQsIDIzMSwgMTY4LCAzOSwgNCwgMjMzLCAyNTIsIDM5LCAKLSAgICA0LCAyMzEsIDY4LCAzOSwgNCwgMjQzLCA0NSwgMzksIDQsIDI0MywgNDQsIDM5LCA0LCAyNDQsIDEyLCAzOSwgNCwgMjE0LCAKLSAgICAxMTksIDM5LCA0LCAxMDgsIDM5LCA0LCAyMTcsIDEwOSwgMzksIDQsIDI0NywgMjE1LCAzOSwgNCwgMjQ3LCAyMTksIDM5LCAKLSAgICA0LCAyMzIsIDIwOCwgMzksIDQsIDIyMywgMTEyLCAzOSwgNCwgMjQ3LCA5OSwgMzksIDQsIDIyOSwgMjA0LCAzOSwgNCwgCi0gICAgMjE5LCAyNDIsIDM5LCA0LCAyMjAsIDE4NywgMzksIDQsIDIxMiwgMTYsIDM5LCA0LCAyMTIsIDYwLCAzOSwgNCwgMjQ5LCAKLSAgICAxNzUsIDM5LCA0LCAyMzUsIDcxLCAzOSwgNCwgMjI4LCAyNDcsIDM5LCA0LCAyMTIsIDIzNSwgMzksIDQsIDIzNCwgMzcsIAotICAgIDM5LCA0LCAyMjksIDEyNywgMzksIDQsIDI0MiwgMTUwLCAzOSwgNCwgMjMwLCAyMzEsIDM5LCA0LCAyMjgsIDE4NSwgMzksIAotICAgIDQsIDIyNywgMjUzLCAzOSwgNCwgNzQsIDM5LCA0LCAyNDUsIDEwOCwgMzksIDQsIDIyOSwgMTQ2LCAzOSwgNCwgMjQxLCAKLSAgICAyMjIsIDM5LCA0LCAyNDEsIDE5MywgMzksIDQsIDIxNCwgNiwgMzksIDQsIDIxMywgMjUzLCAzOSwgNCwgMjI2LCA5NiwgMzksIAotICAgIDQsIDI1MSwgMTkyLCAzOSwgNCwgMjUxLCAyNTEsIDM5LCA0LCAyMzEsIDE4MCwgMzksIDQsIDIzNCwgMSwgMzksIDQsIDIzMywgCi0gICAgMjU1LCAzOSwgNCwgMjMxLCA3NCwgMzksIDQsIDI0MywgNTIsIDM5LCA0LCAyNDMsIDUwLCAzOSwgNCwgMjQ0LCAxMjMsIDM5LCAKLSAgICA0LCAyMTQsIDIzMiwgMzksIDQsIDIxNywgMjI5LCAzOSwgNCwgMjE3LCAxNDgsIDM5LCA0LCAyNDcsIDIyNSwgMzksIDQsIAotICAgIDI0NywgMjIyLCAzOSwgNCwgMjMzLCA4MiwgMzksIDQsIDIyNCwgMjEsIDM5LCA0LCAyNDgsIDQxLCAzOSwgNCwgMjI5LCAKLSAgICAyMjAsIDM5LCA0LCAyMjIsIDEwMCwgMzksIDQsIDIyMCwgMjQzLCAzOSwgNCwgMjEyLCA4NywgMzksIDQsIDIxMiwgNjcsIAotICAgIDM5LCA0LCAyNTAsIDEyNCwgMzksIDQsIDIzNSwgMTI3LCAzOSwgNCwgMjI5LCA5LCAzOSwgNCwgMjEzLCAzOCwgMzksIDQsIAotICAgIDIzNCwgMTg4LCAzOSwgNCwgMjI5LCAxMzcsIDM5LCA0LCAyMjksIDEzMywgMzksIDQsIDI0MywgMzgsIDM5LCA0LCAyNDMsIAotICAgIDI3LCAzOSwgNCwgMjMxLCAxNTYsIDM5LCA0LCAyMjksIDE4NywgMzksIDQsIDIyOCwgMTcsIDM5LCA0LCAyMjksIDE2MSwgCi0gICAgMzksIDQsIDIzMywgNDYsIDM5LCAyNDksIDE1NywgMzksIDI0MywgMjAwLCAyMTksIDY5LCAzOSwgMjI0LCAxNTgsIDc3LCAKLSAgICAzOSwgNCwgMjI5LCAyMDMsIDI0NCwgMTY0LCAzOSwgNCwgMjI5LCAyMDMsIDE4MSwgMzksIDQsIDIyOSwgMjAzLCAyMTksIAotICAgIDIyNiwgMzksIDE2LCAyNDQsIDExMywgMzksIDE2LCAyMzQsIDE4NiwgMzksIDE2LCAyMTcsIDM0LCAzOSwgMTYsIDIyOSwgCi0gICAgMzksIDM5LCAxNiwgMjUyLCA2NiwgMzksIDE2LCAyNDQsIDE2MywgMzksIDE2LCAyMTgsIDQ5LCAzOSwgMTYsIDI0OCwgMTIxLCAKLSAgICAzOSwgMTYsIDI0NywgNzgsIDM5LCAxNiwgMjMzLCAyMjcsIDM5LCAxNiwgMjE2LCAyMzQsIDM5LCAxNiwgMjQ3LCA5OCwgMzksIAotICAgIDE2LCAyMzUsIDYzLCAzOSwgMjEsIDIxMiwgNzksIDM5LCAyMSwgMTE2LCAzOSwgMjEsIDEwOSwgMzksIDIxLCAxNjYsIDM5LCAKLSAgICAyMSwgMTYzLCAzOSwgMjEsIDE4MCwgMzksIDIxLCAxODksIDM5LCAyMSwgMTk4LCAzOSwgMjEsIDE5NSwgMzksIDIxLCAyMDAsIAotICAgIDM5LCA0LCAyMjksIDIwMywgMTg4LCAzOSwgNCwgMjI5LCAyMDMsIDI0NywgOTksIDMzLCA2LCAxLCAyMTIsIDgzLCAzMywgMywgCi0gICAgMSwgMjEyLCA4MywgMzMsIDYsIDEsIDI0NSwgMjQ1LCAzMywgMywgMSwgMjQ1LCAyNDUsIDMzLCA2LCAxLCAyMjMsIDIwMiwgCi0gICAgMjQ1LCAyNDcsIDMzLCAzLCAxLCAyMjMsIDIwMiwgMjQ1LCAyNDcsIDMzLCA2LCAxLCAyMzUsIDE4MywgMzMsIDMsIDEsIAotICAgIDIzNSwgMTgzLCAzMywgNiwgMSwgMjQ3LCAxMTMsIDMzLCAzLCAxLCAyNDcsIDExMywgMzMsIDYsIDEsIDIzMCwgMjEwLCAKLSAgICAyMTUsIDE3NSwgMzMsIDMsIDEsIDIzMCwgMjEwLCAyMTUsIDE3NSwgMzMsIDYsIDEsIDI1MSwgNjQsIDIyNywgNjcsIDMzLCAKLSAgICAzLCAxLCAyNTEsIDY0LCAyMjcsIDY3LCAzMywgNiwgMSwgMjI5LCAxNjksIDIxMywgMjIsIDMzLCAzLCAxLCAyMjksIDE2OSwgCi0gICAgMjEzLCAyMiwgMzMsIDYsIDEsIDIxMywgMTksIDIsIDI1MiwgMTAyLCAyMTMsIDIyLCAzMywgMywgMSwgMjEzLCAxOSwgMiwgCi0gICAgMjUyLCAxMDIsIDIxMywgMjIsIDMzLCA2LCAxLCAyMzUsIDE4MSwgMjEzLCA0OSwgMzMsIDMsIDEsIDIzNSwgMTgxLCAyMTMsIAotICAgIDQ5LCAzMywgNiwgMSwgMjIzLCAyMDIsIDIxMiwgMjAzLCAzMywgMywgMSwgMjIzLCAyMDIsIDIxMiwgMjAzLCAzMywgNiwgMSwgCi0gICAgMjM1LCAxODEsIDYxLCAzMywgMywgMSwgMjM1LCAxODEsIDYxLCAzMywgNiwgMSwgMjQ5LCAxOTMsIDIzMiwgMjIxLCAyMTIsIAotICAgIDE3NCwgMzMsIDMsIDEsIDI0OSwgMTkzLCAyMzIsIDIyMSwgMjEyLCAxNzQsIDMzLCA2LCAxLCAyNTEsIDEzNywgMjEyLCAKLSAgICAxNzQsIDMzLCAzLCAxLCAyNTEsIDEzNywgMjEyLCAxNzQsIDMzLCA2LCAxLCAyMzUsIDE4MSwgMjQ5LCAxOTMsIDIzMiwgCi0gICAgMjIxLCAyMTIsIDE3NCwgMzMsIDMsIDEsIDIzNSwgMTgxLCAyNDksIDE5MywgMjMyLCAyMjEsIDIxMiwgMTc0LCAzMywgNiwgCi0gICAgMSwgMjEyLCAyMzcsIDMzLCAzLCAxLCAyMTIsIDIzNywgMzMsIDYsIDEsIDIyMywgMjAyLCAyMTYsIDEzNiwgMzMsIDMsIDEsIAotICAgIDIyMywgMjAyLCAyMTYsIDEzNiwgMzMsIDYsIDEsIDIxOSwgMjM2LCAyNDgsIDQxLCAzMywgMywgMSwgMjE5LCAyMzYsIDI0OCwgCi0gICAgNDEsIDMzLCA2LCAxLCAyMTksIDIzNiwgMjQ1LCAxMzEsIDMzLCAzLCAxLCAyMTksIDIzNiwgMjQ1LCAxMzEsIDMzLCA2LCAxLCAKLSAgICAyMTksIDIzNiwgMjQ1LCAxMTcsIDMzLCAzLCAxLCAyMTksIDIzNiwgMjQ1LCAxMTcsIDMzLCA2LCAxLCAyMzAsIDIxNCwgNzUsIAotICAgIDMzLCAzLCAxLCAyMzAsIDIxNCwgNzUsIDMzLCA2LCAxLCAyNTEsIDE2MywgNzUsIDMzLCAzLCAxLCAyNTEsIDE2MywgNzUsIAotICAgIDMzLCA2LCAxLCA1MSwgMjMwLCAyMTQsIDc1LCAzMywgMywgMSwgNTEsIDIzMCwgMjE0LCA3NSwgMzMsIDEsIDIzMCwgMTU2LCAKLSAgICA3NSwgMzcsIDMzLCAyMTQsIDg0LCAzNywgMzMsIDIxNywgMjAxLCAyMzEsIDQsIDUyLCAzNywgMzMsIDI0MCwgMjAxLCAyMzEsIAotICAgIDQsIDUyLCAzNywgMzMsIDIxNywgMTAxLCAyMzEsIDQsIDUyLCAyMjAsIDIxLCAyNTMsIDEzMiwgMzcsIDMzLCAyMzQsIDE5OCwgCi0gICAgMzcsIDMzLCAyMjYsIDEwMSwgMzMsIDIzNCwgMTk4LCAzMywgMjI2LCAxMDEsIDMzLCA2LCAxLCAyNDYsIDEsIDMzLCAzLCAxLCAKLSAgICAyNDYsIDEsIDMzLCA2LCAxLCAyNDUsIDIzOCwgMzMsIDMsIDEsIDI0NSwgMjM4LCAzMywgNiwgMSwgMjEyLCA0NSwgMzMsIDMsIAotICAgIDEsIDIxMiwgNDUsIDMzLCA2LCAxLCAyNTAsIDE0MCwgMzMsIDMsIDEsIDI1MCwgMTQwLCAzMywgNiwgMSwgMjQ1LCAyMzcsIAotICAgIDMzLCAzLCAxLCAyNDUsIDIzNywgMzMsIDYsIDEsIDIxNywgMjMwLCAyLCAyMzEsIDM3LCAxMDEsIDMzLCAzLCAxLCAyMTcsIAotICAgIDIzMCwgMiwgMjMxLCAzNywgMTAxLCAzMywgNiwgMSwgMjE2LCA0MywgMzMsIDMsIDEsIDIxNiwgNDMsIDMzLCA2LCAxLCAKLSAgICAyMTYsIDExOSwgMzMsIDMsIDEsIDIxNiwgMTE5LCAzMywgNiwgMSwgMjE2LCAxMjMsIDMzLCAzLCAxLCAyMTYsIDEyMywgMzMsIAotICAgIDYsIDEsIDIxNywgMjM1LCAzMywgMywgMSwgMjE3LCAyMzUsIDMzLCA2LCAxLCAyNDAsIDE5MCwgMzMsIDMsIDEsIDI0MCwgCi0gICAgMTkwLCAzMywgNiwgMSwgMjIwLCAxMzIsIDMzLCAzLCAxLCAyMjAsIDEzMiwgMjAsIDEsIDYxLCAyMCwgMSwgMTgxLCAyMCwgCi0gICAgMSwgNjksIDIwLCAxLCAyMzMsIDIzOCwgMjAsIDEsIDI0NSwgMTY1LCAyMCwgMSwgMjI0LCAxLCAyMCwgMSwgMjE4LCAzNSwgCi0gICAgMjAsIDEsIDc1LCAyMCwgMSwgMjI4LCAxMCwgMjAsIDEsIDcyLCAyMCwgMSwgMjMzLCAxNTcsIDIwLCAxLCAxOTMsIDIwLCAxLCAKLSAgICAyMjMsIDEzNiwgMjAsIDEsIDIyMywgMTgyLCAyMCwgMSwgMjMzLCA3MywgMjAsIDEsIDIzMSwgMTQ0LCAyMCwgMSwgMjE4LCAKLSAgICA0OSwgMjAsIDEsIDIyOSwgMjI2LCAyMCwgMSwgMjI5LCAxNCwgMjAsIDEsIDE4MywgMjAsIDEsIDIxOCwgMjA1LCAyMCwgMSwgCi0gICAgMjMwLCAxNzIsIDIwLCAxLCAyMjAsIDIwNywgMjAsIDEsIDIyMCwgMTE3LCAyMCwgMSwgMjIwLCAyMTcsIDIwLCAxLCAyMjEsIAotICAgIDQ0LCAyMCwgMSwgMjMzLCAxNzcsIDIwLCAxLCAyMzQsIDE2MiwgMjAsIDEsIDIyOCwgNjQsIDIwLCAxLCAyMjgsIDkyLCAyMCwgCi0gICAgMSwgMjI4LCAyNDEsIDIwLCAxLCAyMTIsIDIxNywgMjAsIDEsIDIyMCwgMTUwLCAyMCwgMSwgMjEyLCAxNzgsIDIwLCAxLCAKLSAgICAxODYsIDIwLCAxLCAyMjgsIDEyMCwgMjAsIDEsIDIzNCwgMTQ4LCAyMCwgMSwgMjI2LCAyNywgMjAsIDEsIDIyOSwgNywgMjAsIAotICAgIDEsIDIyOCwgMTAxLCAyMCwgMSwgMjI1LCAzMCwgMjAsIDEsIDIxMywgMTgwLCAyMCwgMSwgMjI2LCA4NiwgMjAsIDEsIDI0NCwgCi0gICAgMTE2LCAyMCwgMSwgMjIzLCA1MSwgMjAsIDEsIDIzMiwgMTU2LCAyMCwgMSwgMjMxLCA0MiwgMjAsIDEsIDIyOSwgNjQsIDIwLCAKLSAgICAxLCAyMjMsIDIwNCwgMjAsIDEsIDIyNCwgNjEsIDIwLCAxLCAyMzQsIDE3MSwgMjAsIDEsIDIyOSwgOTMsIDIwLCAxLCAyMjksIAotICAgIDE0MSwgMjAsIDEsIDIyOSwgMTU5LCAyMCwgMSwgMjIwLCAxODcsIDIwLCAxLCAyMjUsIDMzLCAyMCwgMSwgMjQzLCAyMDUsIAotICAgIDIwLCAxLCAyNDQsIDYsIDIwLCAxLCAyMTQsIDQ5LCAyMCwgMSwgMjA1LCAyMCwgMSwgMjMzLCAxMywgMjAsIDEsIDIyNSwgCi0gICAgMjQwLCAyMCwgMSwgMjMyLCAxNzQsIDIwLCAxLCAyMzQsIDM3LCAyMCwgMSwgMjMxLCAxNzcsIDIwLCAxLCAyMjMsIDIzMywgCi0gICAgMjAsIDEsIDIzMSwgMTIyLCAyMCwgMSwgMTg4LCAyMCwgMSwgMjE3LCA3MSwgMjAsIDEsIDIzNCwgMTAxLCAyMCwgMSwgMjMwLCAKLSAgICAyMzEsIDIwLCAxLCAyMzEsIDE4NSwgMjAsIDEsIDIxNywgMTgzLCAyMCwgMSwgMjM0LCA0LCAyMCwgMSwgMjE3LCAyMDAsIAotICAgIDIwLCAxLCAyMjgsIDkzLCAyMCwgMSwgMjIyLCAxNjYsIDIwLCAxLCAyNDQsIDE2MCwgMjAsIDEsIDIzNCwgNiwgMjAsIDEsIAotICAgIDIzNCwgMzMsIDIwLCAzNywgMTUyLCAyMzQsIDE0LCAyMCwgMzcsIDE1MiwgMjE2LCA3NCwgMjAsIDIyOSwgMTMsIDIwLCAKLSAgICAyNDMsIDIwMCwgMjE5LCA2OSwgMjAsIDI0OSwgMTY0LCAyMCwgMjQ5LCAxNTcsIDIwLCAyMjEsIDcwLCAyMCwgMjI0LCAxNTgsIAotICAgIDc3LCA1OSwgMSwgMjUwLCAzMywgMTYwLCAyMTIsIDI0NSwgMjI1LCAxOTMsIDU5LCAxLCAyNTAsIDMzLCAxNjAsIDIxMywgCi0gICAgNTksIDIyNSwgMTkzLCA1OSwgMSwgMjUwLCAzMywgMTYwLCAyMTIsIDI0NSwgMjIxLCA3LCA1OSwgMSwgMjUwLCAzMywgMTYwLCAKLSAgICAyMTMsIDU5LCAyMjEsIDcsIDU5LCAxLCAyNTAsIDMzLCAxNjAsIDIxMiwgMjQ1LCAyMjQsIDE3NSwgNTksIDEsIDI1MCwgMzMsIAotICAgIDE2MCwgMjEzLCA1OSwgMjI0LCAxNzUsIDU5LCAxLCAyNTAsIDMzLCAxNjAsIDIxMiwgMjQ1LCAyMjMsIDUxLCA1OSwgMSwgCi0gICAgMjUwLCAzMywgMTYwLCAyMTMsIDU5LCAyMjMsIDUxLCA1OSwgMSwgMjQ0LCAyNDQsIDI0NiwgNzIsIDE2MCwgMTM0LCA1OSwgCi0gICAgMSwgMTI0LCAyNDYsIDcyLCAxNjAsIDEzNCwgNTksIDEsIDIzMSwgMzgsIDI0NiwgNzIsIDE2MCwgMTM0LCA1OSwgMSwgMTE1LCAKLSAgICAyNDYsIDcyLCAxNjAsIDEzNCwgNTksIDEsIDI0NCwgMjQzLCAyNDYsIDcyLCAxNjAsIDEzNCwgNTksIDEsIDI0NCwgMjQ0LCAKLSAgICAyNDYsIDcyLCAyMzMsIDYzLCAxNjAsIDEzNCwgNTksIDEsIDEyNCwgMjQ2LCA3MiwgMjMzLCA2MywgMTYwLCAxMzQsIDU5LCAKLSAgICAxLCAyMzEsIDM4LCAyNDYsIDcyLCAyMzMsIDYzLCAxNjAsIDEzNCwgNTksIDEsIDExNSwgMjQ2LCA3MiwgMjMzLCA2MywgCi0gICAgMTYwLCAxMzQsIDU5LCAxLCAyNDQsIDI0MywgMjQ2LCA3MiwgMjMzLCA2MywgMTYwLCAxMzQsIDU5LCAxLCAyNDQsIDI0NCwgCi0gICAgMjMzLCA2MywgMTYwLCAxMzQsIDU5LCAxLCAxMjQsIDIzMywgNjMsIDE2MCwgMTM0LCA1OSwgMSwgMjMxLCAzOCwgMjMzLCAKLSAgICA2MywgMTYwLCAxMzQsIDU5LCAxLCAxMTUsIDIzMywgNjMsIDE2MCwgMTM0LCA1OSwgMSwgMjQ0LCAyNDMsIDIzMywgNjMsIAotICAgIDE2MCwgMTM0LCA1OSwgMSwgNjIsIDcxLCAxMzQsIDU5LCAxLCA2MiwgMjIwLCAyMywgNTksIDEsIDYyLCAxOTksIDEzNCwgCi0gICAgNTksIDEsIDIzMiwgMTYzLCA0NiwgMjQ5LCAxMDAsIDI1NCwgMTgsIDU5LCAxLCAyMjQsIDQ4LCAxMTQsIDY4LCA1OSwgMSwgCi0gICAgMjI0LCA0OCwgMTE5LCA2OCwgNTksIDEsIDIyNCwgNDgsIDI0NCwgMjU0LCA3NywgNTksIDEsIDIyNCwgNDgsIDIzNSwgMTkxLCAKLSAgICAyNDQsIDI1NCwgNzcsIDU5LCAxLCAxMTUsIDIzNSwgMTkxLCAyNDQsIDI1NCwgNzcsIDU5LCAxLCAyMTksIDUxLCAyNCwgCi0gICAgMTI0LCAyMTYsIDI0MSwgNTksIDEsIDIxOSwgNTEsIDI0LCAxMTUsIDIxNiwgMjQxLCA3LCA2LCAxLCAyNDUsIDE1NiwgMjU0LCAKLSAgICA3OCwgNywgMywgMSwgMjQ1LCAxNTYsIDI1NCwgNzgsIDcsIDYsIDEsIDI0NSwgMTU2LCAyNTQsIDEwMywgNywgMywgMSwgCi0gICAgMjQ1LCAxNTYsIDI1NCwgMTAzLCA3LCA2LCAxLCAyNDEsIDE5MSwgNywgMywgMSwgMjQxLCAxOTEsIDcsIDYsIDEsIDIxNiwgCi0gICAgNiwgNywgMywgMSwgMjE2LCA2LCA3LCA2LCAxLCAyMTYsIDE4NywgNywgMywgMSwgMjE2LCAxODcsIDcsIDYsIDEsIDI0OSwgCi0gICAgNTEsIDcsIDMsIDEsIDI0OSwgNTEsIDcsIDYsIDEsIDI0OSwgNTIsIDIsIDI0OSwgMTU3LCA3LCAzLCAxLCAyNDksIDUyLCAyLCAKLSAgICAyNDksIDE1NywgNywgMSwgMywgNiwgMjQ0LCAyMzAsIDcsIDEsIDMsIDYsIDE5NywgNywgNiwgMSwgMjU0LCAyMzIsIDcsIDMsIAotICAgIDEsIDI1NCwgMjMyLCA3LCA2LCAxLCAyNTMsIDI0MCwgNywgMywgMSwgMjUzLCAyNDAsIDcsIDYsIDEsIDI1MywgMTA4LCA3LCAKLSAgICAzLCAxLCAyNTMsIDEwOCwgNywgNiwgMSwgMjUzLCA5MiwgNywgMywgMSwgMjUzLCA5MiwgNywgNiwgMSwgMjUzLCA5MywgMiwgCi0gICAgMTk5LCAxMzQsIDcsIDMsIDEsIDI1MywgOTMsIDIsIDE5OSwgMTM0LCA3LCA2LCAxLCAyNTMsIDgzLCA3LCAzLCAxLCAyNTMsIAotICAgIDgzLCA3LCA2LCAxLCAyMjMsIDIwMiwgMjUwLCAyNTMsIDIsIDI0NywgNzQsIDcsIDMsIDEsIDIyMywgMjAyLCAyNTAsIDI1MywgCi0gICAgMiwgMjQ3LCA3NCwgNywgNiwgMSwgMjM1LCAyOCwgMiwgOTAsIDcsIDMsIDEsIDIzNSwgMjgsIDIsIDkwLCA3LCA2LCAxLCAKLSAgICAyMzUsIDI4LCAyLCAyNDcsIDIwNywgOTAsIDcsIDMsIDEsIDIzNSwgMjgsIDIsIDI0NywgMjA3LCA5MCwgNywgNiwgMSwgCi0gICAgMjM1LCAyOCwgMiwgMjE5LCA0NSwgMjQsIDI0NywgMjA3LCA5MCwgNywgMywgMSwgMjM1LCAyOCwgMiwgMjE5LCA0NSwgMjQsIAotICAgIDI0NywgMjA3LCA5MCwgNywgNiwgMSwgMjUxLCA2MywgMTUwLCA3LCAzLCAxLCAyNTEsIDYzLCAxNTAsIDcsIDYsIDEsIDIzMywgCi0gICAgMTcxLCAyLCAxMjQsIDkwLCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgMTI0LCA5MCwgNywgNiwgMSwgMTU3LCAyLCAxODQsIAotICAgIDIxOSwgNDUsIDIyNiwgMjQ0LCA3LCAzLCAxLCAxNTcsIDIsIDE4NCwgMjE5LCA0NSwgMjI2LCAyNDQsIDcsIDYsIDEsIDE1NywgCi0gICAgMiwgMjMyLCAxNzcsIDcsIDMsIDEsIDE1NywgMiwgMjMyLCAxNzcsIDcsIDYsIDEsIDIyNywgNDksIDcsIDMsIDEsIDIyNywgCi0gICAgNDksIDcsIDYsIDEsIDIyNiwgMjMwLCAyLCAyMTksIDQ1LCAyMTcsIDkzLCAyNDcsIDI0NiwgNywgMywgMSwgMjI2LCAyMzAsIAotICAgIDIsIDIxOSwgNDUsIDIxNywgOTMsIDI0NywgMjQ2LCA3LCA2LCAxLCAyMjYsIDIzMCwgMiwgMjQ0LCAyMiwgNywgMywgMSwgCi0gICAgMjI2LCAyMzAsIDIsIDI0NCwgMjIsIDcsIDYsIDEsIDIyNiwgMjMwLCAyLCAyMTksIDE2MSwgMjE4LCAyNywgNywgMywgMSwgCi0gICAgMjI2LCAyMzAsIDIsIDIxOSwgMTYxLCAyMTgsIDI3LCA3LCA2LCAxLCAyMjQsIDI0MSwgMiwgMjE5LCA0NSwgMjE3LCA5MywgCi0gICAgMjQ3LCAyNDYsIDcsIDMsIDEsIDIyNCwgMjQxLCAyLCAyMTksIDQ1LCAyMTcsIDkzLCAyNDcsIDI0NiwgNywgNiwgMSwgMjI0LCAKLSAgICAyNDEsIDIsIDI0NywgMjA3LCA5MCwgNywgMywgMSwgMjI0LCAyNDEsIDIsIDI0NywgMjA3LCA5MCwgNywgNiwgMSwgMjI0LCAKLSAgICAxMTMsIDIyMywgODgsIDcsIDMsIDEsIDIyNCwgMTEzLCAyMjMsIDg4LCA3LCA2LCAxLCAyMjMsIDQxLCAyMjMsIDg4LCA3LCAKLSAgICAzLCAxLCAyMjMsIDQxLCAyMjMsIDg4LCA3LCA2LCAxLCAyMTUsIDgwLCAyLCAyNDcsIDIwNywgOTAsIDcsIDMsIDEsIDIxNSwgCi0gICAgODAsIDIsIDI0NywgMjA3LCA5MCwgNywgNiwgMSwgMjE0LCA5MCwgNywgMywgMSwgMjE0LCA5MCwgNywgNiwgMSwgMjE0LCAKLSAgICAxMjYsIDIxMiwgMTUyLCA3LCAzLCAxLCAyMTQsIDEyNiwgMjEyLCAxNTIsIDcsIDYsIDEsIDIxNywgMTA1LCAyLCA5MCwgNywgCi0gICAgMywgMSwgMjE3LCAxMDUsIDIsIDkwLCA3LCA2LCAxLCAyMTcsIDEwNSwgMiwgMjE5LCA0NSwgMjE3LCA5MywgMjQ3LCAyNDYsIAotICAgIDcsIDMsIDEsIDIxNywgMTA1LCAyLCAyMTksIDQ1LCAyMTcsIDkzLCAyNDcsIDI0NiwgNywgNiwgMSwgMjE0LCAyMjIsIDcsIAotICAgIDMsIDEsIDIxNCwgMjIyLCA3LCA2LCAxLCAyNDUsIDMwLCA3LCAzLCAxLCAyNDUsIDMwLCA3LCA2LCAxLCAyMzUsIDE2OSwgNywgCi0gICAgMywgMSwgMjM1LCAxNjksIDcsIDYsIDEsIDI0OSwgMTQ2LCA3LCAzLCAxLCAyNDksIDE0NiwgNTksIDEsIDIxNSwgMTA0LCA3LCAKLSAgICAzLCAxLCAyNDYsIDI0LCA3LCAzLCAxLCAyMzIsIDE0MiwgNywgMywgMSwgMjMwLCAxNTAsIDcsIDMsIDEsIDIyOCwgNTcsIDcsIAotICAgIDMsIDEsIDIyMywgNDAsIDcsIDEsIDMsIDYsIDIyMywgNDAsIDcsIDMsIDEsIDIxNiwgNzIsIDcsIDMsIDEsIDIxNSwgMTY3LCAKLSAgICA3LCA2LCAxLCAyMzUsIDIxMCwgMjQ5LCAzLCA3LCAzLCAxLCAyMzUsIDIxMCwgMjQ5LCAzLCA3LCA2LCAxLCAyMzUsIDIxMCwgCi0gICAgMjQ0LCAyMzAsIDcsIDMsIDEsIDIzNSwgMjEwLCAyNDQsIDIzMCwgNywgNiwgMSwgMjM1LCAyMTAsIDI0MywgMTc3LCA3LCA2LCAKLSAgICAxLCAyMTYsIDU4LCAyMzUsIDIxMCwgMjQzLCAxNzcsIDcsIDMsIDEsIDIxNiwgNTgsIDIzNSwgMjEwLCAyNDMsIDE3NywgNywgCi0gICAgNiwgMSwgMjE2LCA1OCwgMTUwLCA3LCAzLCAxLCAyMTYsIDU4LCAxNTAsIDcsIDYsIDEsIDIzNSwgMjEwLCAxNDksIDcsIDMsIAotICAgIDEsIDIzNSwgMjEwLCAxNDksIDcsIDYsIDEsIDIzNSwgMjEwLCAxOTcsIDcsIDMsIDEsIDIzNSwgMjEwLCAxOTcsIDcsIDYsIAotICAgIDEsIDIzNSwgMjEwLCAyMTgsIDk5LCA3LCAzLCAxLCAyMzUsIDIxMCwgMjE4LCA5OSwgNTksIDEsIDExNSwgMjQ5LCAyMjQsIAotICAgIDI1NCwgMTc0LCA1OSwgMSwgMjQ5LCAxNjQsIDU5LCAxLCAyMjAsIDE3NSwgMjQ1LCA2MSwgNTIsIDcsIDYsIDEsIDIyMiwgCi0gICAgMTcwLCA3LCAzLCAxLCAyMjIsIDE3MCwgNywgNiwgMSwgMjE2LCA1OCwgMjQyLCA0MSwgNywgMywgMSwgMjMzLCAxNzEsIDIsIAotICAgIDIyMywgMjA3LCAyNDEsIDM4LCAyNCwgMjUxLCAyMTgsIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDI0NywgMjQ2LCA3LCAzLCAxLCAKLSAgICAyMzAsIDk4LCAyLCAyNDcsIDI0NiwgNywgNiwgMSwgMjQzLCAxNzgsIDIsIDIyNywgMTEyLCA5MCwgNywgMywgMSwgMjQzLCAKLSAgICAxNzgsIDIsIDIyNywgMTEyLCA5MCwgNywgNiwgMSwgMjM1LCAyOCwgMiwgMjI3LCAxMTIsIDkwLCA3LCAzLCAxLCAyMzUsIAotICAgIDI4LCAyLCAyMjcsIDExMiwgOTAsIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDIyNywgMTEyLCA5MCwgNywgMywgMSwgMjMwLCA5OCwgCi0gICAgMiwgMjI3LCAxMTIsIDkwLCA3LCA2LCAxLCAyMjQsIDExMywgMiwgMjI3LCAxMTIsIDkwLCA3LCAzLCAxLCAyMjQsIDExMywgCi0gICAgMiwgMjI3LCAxMTIsIDkwLCA3LCA2LCAxLCAyMjMsIDQsIDIsIDIyNywgMTEyLCA5MCwgNywgMywgMSwgMjIzLCA0LCAyLCAKLSAgICAyMjcsIDExMiwgOTAsIDcsIDEsIDMsIDYsIDIxNiwgNTgsIDE4MywgNywgMjQ1LCA2NiwgMSwgMjIzLCAyMDIsIDI0NCwgCi0gICAgMjMwLCA3LCAyNDUsIDY2LCAxLCAyMjMsIDIwMiwgMjI2LCAyMjksIDcsIDI0NSwgNjYsIDEsIDIzNSwgMTkxLCAxODMsIDcsIAotICAgIDI0NSwgNjYsIDEsIDI0MCwgMTQ2LCAyMzIsIDE4MiwgNywgMjQ1LCA2NiwgMSwgMjUzLCAxOTMsIDE4MywgMjE4LCAxNzUsIAotICAgIDIzMCwgMzIsIDEsIDYxLCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgNzIsIDIxOCwgMTc1LCAyMzAsIDMyLCA1LCAyNDYsIDMsIAotICAgIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCA2OSwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDc0LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgCi0gICAgNzUsIDIxOCwgMTc1LCAyMzAsIDMyLCA1LCAyNDEsIDIzNiwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDIzNCwgMzcsIDIxOCwgCi0gICAgMTc1LCAyMzAsIDMyLCAxLCAyMzQsIDExMywgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDI0MiwgMTUwLCAyMTgsIDE3NSwgMjMwLCAKLSAgICAzMiwgMSwgMjQyLCAyMDAsIDIxOCwgMTc1LCAyMzAsIDMyLCA1LCAyNTMsIDI0MiwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIAotICAgIDI0OSwgMTc1LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjUwLCAyMywgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDIzNSwgNzEsIAotICAgIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyMzUsIDExMSwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDIxNiwgOTUsIDIxOCwgMTc1LCAKLSAgICAyMzAsIDMyLCAxLCAyMTYsIDEwMCwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDI0OCwgNTYsIDIxOCwgMTc1LCAyMzAsIDMyLCAKLSAgICAxLCAyNDgsIDY1LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMTA4LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjE3LCAxMDksIAotICAgIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyNDcsIDk5LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjQ3LCAyMTUsIDIxOCwgMTc1LCAKLSAgICAyMzAsIDMyLCAxLCAyMjgsIDE4NSwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDIyNSwgMTUwLCAyMTgsIDE3NSwgMjMwLCAzMiwgCi0gICAgMSwgMjI1LCAyNTMsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyNTEsIDEyOCwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDI1MSwgCi0gICAgMTg4LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjMwLCAyMzEsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyMjMsIDExMiwgMjE4LCAKLSAgICAxNzUsIDIzMCwgMzIsIDEsIDIzMiwgMjA4LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjIzLCA3MywgMjE4LCAxNzUsIDIzMCwgCi0gICAgMzIsIDEsIDIxOSwgMjQyLCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjQxLCA1NCwgMjE4LCAxNzUsIDIzMCwgMzIsIDMwLCA1LCAKLSAgICA2MSwgMjE4LCAxNzUsIDIzMCwgMzIsIDMwLCA1LCA3MiwgMjE4LCAxNzUsIDIzMCwgMzIsIDMwLCA1LCA2OSwgMjE4LCAxNzUsIAotICAgIDIzMCwgMzIsIDMwLCA1LCA3NCwgMjE4LCAxNzUsIDIzMCwgMzIsIDMwLCA1LCAyMjcsIDQ5LCAyMTgsIDE3NSwgMjMwLCAzMiwgCi0gICAgMjI1LCAxNDYsIDIzMSwgMjIxLCAyMTgsIDE3NSwgMjMwLCAzMiwgMjI1LCAxNDYsIDIzMSwgMjIwLCAyMTgsIDE3NSwgMjMwLCAKLSAgICAzMiwgMjI1LCAxNDYsIDIzMSwgMjE5LCAyMTgsIDE3NSwgMjMwLCAzMiwgMjI1LCAxNDYsIDIzMSwgMjE4LCAyMjgsIDE2NywgCi0gICAgMjM1LCAyMzcsIDI0MywgMjI4LCAxMjIsIDIyNCwgMTY2LCAyMjgsIDE2NywgMjM1LCAyMzcsIDI0MywgMjI4LCAxMjIsIAotICAgIDI0MiwgOSwgMjI4LCAxNjcsIDIzNSwgMjM3LCAyNDMsIDIyOCwgMTMzLCAyMjQsIDE2NCwgMjI4LCAxNjcsIDIzNSwgMjM3LCAKLSAgICAyNDMsIDIyOCwgMTIyLCAyMjAsIDQ1LCAyMjgsIDE2NywgMjM1LCAyMzcsIDI0MywgMjI4LCAxMjIsIDI0NSwgMTQ1LCAyMjgsIAotICAgIDE2NywgMjM1LCAyMzcsIDI0MywgMjI4LCAxMzMsIDIyMCwgNDQsIDIyOCwgMTY3LCAyMzUsIDIzNywgMjI0LCAxNjcsIDc3LCAKLSAgICAyMjgsIDE2NywgMjM1LCAyMzcsIDIyNSwgMTcyLCA3NywgMjI4LCAxNjcsIDIzNSwgMjM3LCAyMjMsIDI5LCA3NywgMjI4LCAKLSAgICAxNjcsIDIzNSwgMjM3LCAyMjQsIDE2OCwgNzcsIDIyNiwgMjAsIDEsIDE4MSwgMjI2LCAyMCwgMSwgMjM0LCAxMzgsIDIyNiwgCi0gICAgMjAsIDEsIDI0MywgMTEwLCAyMjYsIDIwLCAxLCAyMjksIDE1OSwgMjI2LCAyMCwgMSwgMjUwLCAyMTksIDIyNiwgMjAsIDEsIAotICAgIDI1MCwgOTIsIDIyNiwgMjAsIDEsIDIzNSwgMTM5LCAyMjYsIDIwLCAxLCAyMjgsIDIzLCAyMjYsIDIwLCAxLCAyMTgsIDUyLCAKLSAgICAyMjYsIDIwLCAxLCAyMTcsIDE2MSwgMjI2LCAyMCwgMSwgMjQ4LCAxNjQsIDIyNiwgMjAsIDEsIDIwNSwgMjI2LCAyMCwgMSwgCi0gICAgMTkzLCAyMjYsIDIwLCAxLCAyMjYsIDIzLCAyMjYsIDIwLCAxLCAyNTIsIDEwNywgMjI2LCAyMCwgMSwgMTg4LCAyMjYsIDIwLCAKLSAgICAxLCAyMTYsIDE0MSwgMjI2LCAyMCwgMSwgMjE2LCAxMzMsIDIyNiwgMjAsIDEsIDI0NSwgMjQ5LCAyMjYsIDIwLCAxLCAyMTQsIAotICAgIDQ5LCAyMjYsIDIwLCAxLCAyMTIsIDc1LCAyMjYsIDIwLCAxLCAyMTIsIDEwOSwgMjI2LCAyMCwgMSwgMywgNjEsIDIyNiwgCi0gICAgMjAsIDEsIDE4NiwgMjI2LCAyMCwgMSwgMjAzLCAyMjYsIDIwLCAxLCAyMzMsIDE1NywgMjI2LCAyMCwgMSwgMjIxLCAyNCwgCi0gICAgMjI2LCAyMCwgMSwgMjIyLCAyMDIsIDIyNiwgMjAsIDEsIDE1OSwgMjI2LCAyMCwgMSwgNjEsIDIyNiwgMjAsIDEsIDcyLCAKLSAgICAyMjYsIDIwLCAxLCA2OSwgMjI2LCAyMCwgMSwgNzQsIDIyNiwgMjAsIDEsIDc1LCAyMjYsIDIwLCAxLCAyMjQsIDIzMiwgCi0gICAgMjI2LCAyMCwgMSwgMjEzLCAxNTMsIDIyNiwgMjAsIDEsIDI0NCwgMTY0LCAyMjYsIDIwLCAxLCAyNDMsIDUsIDIyNiwgMjAsIAotICAgIDEsIDI0NSwgMTY1LCAyMjYsIDIwLCAyMTksIDE4LCAxLCAyMTQsIDQ5LCAyMjYsIDIwLCAyMTksIDE4LCAxLCAxODYsIDIyNiwgCi0gICAgMjAsIDEsIDIxNiwgMTE1LCAyMjYsIDIwLCAxLCAyMTYsIDEwNSwgMjI2LCAyMCwgMSwgMjQ4LCA4NiwgMjI2LCAyMCwgMSwgCi0gICAgMjI4LCAxOTgsIDIyNiwgMjAsIDEsIDI1NCwgNTAsIDE4NiwgMjI2LCAyMCwgMSwgMjE0LCAxMTUsIDIyMSwgMjQsIDIyNiwgCi0gICAgMjAsIDEsIDIxNCwgMTE2LCAxNTksIDIyNiwgMjAsIDEsIDI1MywgMTM4LCAyNDQsIDE2NCwgMjI2LCAyMCwgMjE5LCAxOCwgCi0gICAgMSwgMjAzLCAyMjYsIDIwLCAyMTgsIDIyNSwgMSwgMjAzLCAyMjYsIDIwLCAxLCAyNTAsIDE4NywgMjI2LCAyMCwgMjIwLCAKLSAgICA4MSwgMjQxLCAyMjAsIDc3LCAyMjYsIDIwLCA1MSwgMjQxLCAyMjAsIDc3LCAyMjYsIDIwLCAxNTIsIDIyMSwgMTcsIDIyNiwgCi0gICAgMjAsIDE1MiwgNTEsIDIyMSwgMTcsIDE2OSwgNSwgMjUzLCAyNDIsIDE2OSwgNSwgMjE0LCAxMjgsIDE2OSwgMSwgNjEsIAotICAgIDE2OSwgMSwgMjU0LCAyMzIsIDE2OSwgMSwgNzIsIDE2OSwgMSwgMjM2LCAyOCwgMTY5LCAxLCA2OSwgMTY5LCAxLCAyMTUsIAotICAgIDkyLCAxNjksIDEsIDE2MSwgMTQ5LCAxNjksIDEsIDE2MSwgMjIzLCA4MiwgMTY5LCAxLCAxNjEsIDE1MCwgMTY5LCAxLCAKLSAgICAxNjEsIDIzMiwgMjE0LCAxNjksIDEsIDc0LCAxNjksIDEsIDI0NSwgMTY1LCAxNjksIDEsIDI1NCwgMTA4LCAxNjksIDEsIAotICAgIDc1LCAxNjksIDEsIDIyNywgNDksIDE2OSwgMSwgMjUzLCAxMDgsIDE2OSwgMSwgMTgxLCAxNjksIDEsIDIzNCwgMTM4LCAKLSAgICAxNjksIDEsIDI0MywgMTEwLCAxNjksIDEsIDI0MiwgMjI1LCAxNjksIDEsIDIyOSwgMTU5LCAxNjksIDEsIDI1MCwgMjE5LCAKLSAgICAxNjksIDEsIDI1MCwgOTIsIDE2OSwgMSwgMjM1LCAxMzksIDE2OSwgMSwgMjM1LCAxMTUsIDE2OSwgMSwgMjI4LCAyMywgCi0gICAgMTY5LCAxLCAyMTYsIDExNSwgMTY5LCAxLCAyMTYsIDEwNSwgMTY5LCAxLCAyNDgsIDg2LCAxNjksIDEsIDI0OCwgNzAsIAotICAgIDE2OSwgMSwgMjI4LCAxOTgsIDE2OSwgMSwgMjE4LCA1MiwgMTY5LCAxLCAyMTcsIDE2MSwgMTY5LCAxLCAyNDgsIDE2NCwgCi0gICAgMTY5LCAxLCAyNDcsIDIzMiwgMTY5LCAxLCAyMDUsIDE2OSwgMSwgMTkzLCAxNjksIDEsIDIyNiwgMjMsIDE2OSwgMSwgMjUyLCAKLSAgICAxMDcsIDE2OSwgMSwgMjUxLCAxOTUsIDE2OSwgMSwgMTg4LCAxNjksIDEsIDE4NiwgMTY5LCAxLCAyMDMsIDE2OSwgMSwgCi0gICAgMjMzLCAxNTcsIDE2OSwgMSwgMjE1LCAxLCAxNjksIDEsIDIyMSwgMjQsIDE2OSwgMSwgMjE5LCAxNTcsIDE2OSwgMSwgMjIyLCAKLSAgICAyMDIsIDE2OSwgMSwgMTU5LCAxNjksIDEsIDIzMiwgMjEzLCAxNjksIDI0OSwgMTMzLCA1LCAyNDIsIDI1LCAxNjksIDMwLCAKLSAgICA1LCAyNTQsIDIzMiwgMTY5LCAzMCwgNSwgNzIsIDE2OSwgMzAsIDUsIDIzNiwgMjgsIDE2OSwgMzAsIDUsIDY5LCAxNjksIAotICAgIDMwLCA1LCAyMTUsIDkyLCAxNjksIDMwLCA1LCAxNjEsIDE0OSwgMTY5LCAzMCwgNSwgMTYxLCAyMjMsIDgyLCAxNjksIDMwLCAKLSAgICA1LCAxNjEsIDE1MCwgMTY5LCAzMCwgNSwgMTYxLCAyMzIsIDIxNCwgMTY5LCAzMCwgNSwgNzQsIDE2OSwgMzAsIDUsIDI0NSwgCi0gICAgMTY1LCAxNjksIDMwLCA1LCAyNTQsIDEwOCwgMTY5LCAzMCwgNSwgNzUsIDE2OSwgMzAsIDUsIDIyNywgNDksIDE2OSwgMzAsIAotICAgIDUsIDI1MywgMTA4LCAxNjksIDUsIDIxNCwgMTMzLCAxNjksIDI0OCwgMTIzLCAxNjksIDUxLCAyNDgsIDEyMywgMTY5LCAyMSwgCi0gICAgMjEyLCA3OSwgMTY5LCAyMSwgMTE2LCAxNjksIDIxLCAxMDksIDE2OSwgMjEsIDE2NiwgMTY5LCAyMSwgMTYzLCAxNjksIDIxLCAKLSAgICAxODAsIDE2OSwgMjEsIDE4OSwgMTY5LCAyMSwgMTk4LCAxNjksIDIxLCAxOTUsIDE2OSwgMjEsIDIwMCwgMzcsIDgyLCAyMSwgCi0gICAgMjEyLCA3OSwgMzcsIDgyLCAyMSwgMTE2LCAzNywgODIsIDIxLCAxMDksIDM3LCA4MiwgMjEsIDE2NiwgMzcsIDgyLCAyMSwgCi0gICAgMTYzLCAzNywgODIsIDIxLCAxODAsIDM3LCA4MiwgMjEsIDE4OSwgMzcsIDgyLCAyMSwgMTk4LCAzNywgODIsIDIxLCAxOTUsIAotICAgIDM3LCA4MiwgMjEsIDIwMCwgMzcsIDgyLCAxLCA2MSwgMzcsIDgyLCAxLCA2OSwgMzcsIDgyLCAxLCAxODEsIDM3LCA4MiwgMSwgCi0gICAgMjA1LCAzNywgODIsIDEsIDE5MywgMzcsIDgyLCAxLCAyMDMsIDM3LCA4MiwgMSwgMjE0LCAxNTQsIDM3LCA4MiwgNSwgMjUzLCAKLSAgICA5MSwgODIsIDUsIDIxOSwgMjA1LCAyNTAsIDE4NywgODIsIDUsIDI1MCwgMTg4LCAyMTQsIDEzMywgODIsIDUsIDUxLCAyNTAsIAotICAgIDE4OCwgMjE0LCAxMzMsIDgyLCA1LCAyNTAsIDE4OCwgMTA5LCA4MiwgNSwgMjUwLCAxODgsIDE2NiwgODIsIDUsIDI1MCwgCi0gICAgMTg4LCAyNTMsIDkxLCA4MiwgNSwgMjI1LCAxMSwgODIsIDI0MywgNzYsIDI0NCwgNzIsIDgyLCAyNTAsIDE3MCwgODIsIAotICAgIDI0MSwgMjE0LCAyMzQsIDE5NCwgMjMzLCAxNCwgMjEsIDIxMiwgNzksIDIzNCwgMTk0LCAyMzMsIDE0LCAyMSwgMTE2LCAKLSAgICAyMzQsIDE5NCwgMjMzLCAxNCwgMjEsIDEwOSwgMjM0LCAxOTQsIDIzMywgMTQsIDIxLCAxNjYsIDIzNCwgMTk0LCAyMzMsIAotICAgIDE0LCAyMSwgMTYzLCAyMzQsIDE5NCwgMjMzLCAxNCwgMjEsIDE4MCwgMjM0LCAxOTQsIDIzMywgMTQsIDIxLCAxODksIDIzNCwgCi0gICAgMTk0LCAyMzMsIDE0LCAyMSwgMTk4LCAyMzQsIDE5NCwgMjMzLCAxNCwgMjEsIDE5NSwgMjM0LCAxOTQsIDIzMywgMTQsIDIxLCAKLSAgICAyMDAsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAxODEsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMzQsIDEzOCwgMjM0LCAxOTQsIAotICAgIDIzMywgMTQsIDEsIDI0MywgMTEwLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjI5LCAxNTksIDIzNCwgMTk0LCAyMzMsIDE0LCAKLSAgICAxLCAyMjIsIDIwMiwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIyMSwgMjQsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMTIsIAotICAgIDEwOSwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIyOCwgMjMsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMTgsIDUyLCAyMzQsIAotICAgIDE5NCwgMjMzLCAxNCwgMSwgMjQwLCAyMTQsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMDUsIDIzNCwgMTk0LCAyMzMsIDE0LCAKLSAgICAxLCAxOTMsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMjYsIDIzLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMTg4LCAyMzQsIAotICAgIDE5NCwgMjMzLCAxNCwgMSwgMjQ4LCAxNjQsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyNTIsIDEwNywgMjM0LCAxOTQsIDIzMywgCi0gICAgMTQsIDEsIDIwMywgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDE4NiwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIzMywgMTU3LCAKLSAgICAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjE0LCA0OSwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIxNywgMTYxLCAyMzQsIDE5NCwgCi0gICAgMjMzLCAxNCwgMSwgMTU5LCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjE1LCAxLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjUwLCAKLSAgICAyMTksIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCA2MSwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIyNywgOTksIDIzNCwgMTk0LCAKLSAgICAyMzMsIDE0LCAxLCA3MiwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIyNywgNDksIDIzNCwgMTk0LCAyMzMsIDE0LCAzMCwgCi0gICAgMjE1LCAxODMsIDIzNCwgMTk0LCAyMzMsIDE0LCAzMCwgNzQsIDIzNCwgMTk0LCAyMzMsIDE0LCAzMCwgNjksIDIzNCwgMTk0LCAKLSAgICAyMzMsIDE0LCAzMCwgMjQ1LCAxNjUsIDIzNCwgMTk0LCAyMzMsIDE0LCAzMCwgNzUsIDIzNCwgMTk0LCAyMzMsIDE0LCAxNjAsIAotICAgIDIyNSwgMTYzLCAyMzQsIDE5NCwgMjMzLCAxNCwgMTYwLCAyNTAsIDIwMCwgMjM0LCAxOTQsIDIzMywgMTQsIDE2MCwgMjUwLCAKLSAgICAyMDEsIDIyNSwgMTYzLCAyMzQsIDE5NCwgMjMzLCAxNCwgNSwgMjQ5LCAyMCwgMjM0LCAxOTQsIDIzMywgMTQsIDUsIDIyMCwgCi0gICAgMTI1LCAyMjMsIDI0MywgMSwgMTgxLCAyMjMsIDI0MywgMSwgMjQzLCAxMTAsIDIyMywgMjQzLCAxLCAyMjksIDE1OSwgMjIzLCAKLSAgICAyNDMsIDEsIDIxOCwgNTIsIDIyMywgMjQzLCAxLCAyNDgsIDE2NCwgMjIzLCAyNDMsIDEsIDIwNSwgMjIzLCAyNDMsIDEsIAotICAgIDE5MywgMjIzLCAyNDMsIDEsIDI1MiwgMTA3LCAyMjMsIDI0MywgMSwgMTg4LCAyMjMsIDI0MywgMSwgMjUwLCAyMTksIDIyMywgCi0gICAgMjQzLCAxLCAyMzUsIDEzOSwgMjIzLCAyNDMsIDEsIDIyOCwgMjMsIDIyMywgMjQzLCAxLCAyMjIsIDIwMiwgMjIzLCAyNDMsIAotICAgIDEsIDIwMywgMjIzLCAyNDMsIDEsIDIzMywgMTU3LCAyMjMsIDI0MywgMSwgMTg2LCAyMjMsIDI0MywgMSwgMjE0LCA0OSwgCi0gICAgMjIzLCAyNDMsIDEsIDE1OSwgMjIzLCAyNDMsIDEsIDIzMSwgMTg3LCAyMjMsIDI0MywgMSwgMjI5LCAxNDEsIDIyMywgMjQzLCAKLSAgICAxLCAyMjksIDIyOCwgMjIzLCAyNDMsIDEsIDIyNywgMjU0LCAyMjMsIDI0MywgMSwgNjEsIDIyMywgMjQzLCAzMCwgNSwgNzIsIAotICAgIDIyMywgMjQzLCAzMCwgNSwgNjksIDIyMywgMjQzLCAzMCwgNSwgNzQsIDIyMywgMjQzLCAzMCwgNSwgMjU0LCAxMDgsIDIyMywgCi0gICAgMjQzLCAzMCwgNSwgNzUsIDIyMywgMjQzLCAzMCwgNSwgMjUzLCAxMDgsIDIyMywgMjQzLCAzMCwgNSwgMjQ1LCAyMiwgMjIzLCAKLSAgICAyNDMsIDMwLCA1LCAyNDUsIDE4OSwgMjIzLCAyNDMsIDI0OSwgMTMzLCA1LCAyMjksIDE2MSwgMjIzLCAyNDMsIDI0OSwgCi0gICAgMTMzLCA1LCAyMDQsIDIyMywgMjQzLCAyNDksIDEzMywgNSwgMTQ5LCAyMjMsIDI0MywgMjQ5LCAxMzMsIDUsIDI0MiwgNDEsIAotICAgIDIyMywgMjQzLCAyMTQsIDEzMywgMjIzLCAyNDMsIDIyMiwgOTIsIDc3LCAyMywgOTcsIDIxNywgNTEsIDIzLCA5NywgMjE3LCAKLSAgICA1MCwgMjMsIDk3LCAyMTcsIDQ4LCAyMywgOTcsIDIxNywgNTMsIDIzLCA5NywgMjIzLCAxNzQsIDIzLCA5NywgMjIzLCAxNTgsIAotICAgIDIzLCA5NywgMjIzLCAxNTMsIDIzLCA5NywgMjIzLCAxNTUsIDIzLCA5NywgMjIzLCAxNzEsIDIzLCA5NywgMjIzLCAxNjQsIAotICAgIDIzLCA5NywgMjIzLCAxNTcsIDIzLCA5NywgMjIzLCAxNzYsIDIzLCA5NywgMjIzLCAxNTksIDIzLCA5NywgMjIzLCAxNzgsIAotICAgIDIzLCA5NywgMjIzLCAxNzUsIDIzLCA5NywgMjMxLCAyNiwgMjMsIDk3LCAyMzEsIDE3LCAyMywgOTcsIDIzMSwgMjAsIDIzLCAKLSAgICA5NywgMjI1LCAyMTIsIDIzLCA5NywgMjI1LCAyMjMsIDIzLCA5NywgMjI1LCAyMjQsIDIzLCA5NywgMjE5LCAxNDIsIDIzLCAKLSAgICA5NywgMjM2LCA0MSwgMjMsIDk3LCAyMzYsIDQ4LCAyMywgOTcsIDIxOSwgMTUzLCAyMywgOTcsIDIxOSwgMTQwLCAyMywgOTcsIAotICAgIDIyNiwgNiwgMjMsIDk3LCAyNDEsIDE1MywgMjMsIDk3LCAyMTksIDEzNywgMTQ0LCA1LCAyMjYsIDE1NSwgMTQ0LCA1LCAKLSAgICAyNTAsIDEyMSwgMTQ0LCA1LCAyMzMsIDkwLCAxNDQsIDUsIDIxMywgMjI4LCAxNDQsIDEsIDYxLCAxNDQsIDEsIDI0MCwgCi0gICAgMTQ2LCAyMzQsIDE5NywgMTQ0LCAxLCA3MiwgMTQ0LCAxLCAyMzYsIDI4LCAxNDQsIDEsIDY5LCAxNDQsIDEsIDIyNiwgMjE0LCAKLSAgICAyNTAsIDk3LCAxNDQsIDEsIDIyOSwgMTYwLCAyMzMsIDUyLCAxNDQsIDEsIDIyOSwgMTYwLCAyMzMsIDUzLCAyMjQsIDM0LCAKLSAgICAxNDQsIDEsIDc0LCAxNDQsIDEsIDI1NCwgMTA4LCAxNDQsIDEsIDc1LCAxNDQsIDEsIDE4MSwgMTQ0LCAxLCAyMzUsIDE3LCAKLSAgICAyMjIsIDE0NCwgMTQ0LCAxLCAyMzUsIDE3LCAyMzAsIDEzNiwgMTQ0LCAxLCAyNDMsIDExMCwgMTQ0LCAxLCAyNDMsIDExMSwgCi0gICAgMjMwLCAxMzYsIDE0NCwgMSwgMjI5LCAxNTksIDE0NCwgMSwgMjUwLCAyMTksIDE0NCwgMSwgMjUwLCAyMjAsIDIzMCwgMTM2LCAKLSAgICAxNDQsIDEsIDIzNSwgMTM5LCAxNDQsIDEsIDIyOCwgMjQsIDIzMCwgMTM2LCAxNDQsIDEsIDIzNSwgMTQwLCAyMzIsIDEyLCAKLSAgICAxNDQsIDEsIDIyOCwgMjMsIDE0NCwgMSwgMjE2LCAxMTUsIDE0NCwgMSwgMjE2LCAxMTYsIDIzMiwgMTIsIDE0NCwgMSwgCi0gICAgMjQ4LCA4NiwgMTQ0LCAxLCAyNDgsIDg3LCAyMzIsIDEyLCAxNDQsIDEsIDIzMCwgNDYsIDIzMCwgMTM2LCAxNDQsIDEsIAotICAgIDIxOCwgNTIsIDE0NCwgMSwgMjE4LCA1MywgMjMwLCAxMzYsIDE0NCwgMSwgMjQ4LCAxNjQsIDE0NCwgMSwgMjQ4LCAxNjUsIAotICAgIDIzMiwgMTIsIDE0NCwgMSwgMjA1LCAxNDQsIDEsIDE5MywgMTQ0LCAxLCAyMjYsIDIxNCwgMjMwLCAxMzYsIDE0NCwgMSwgCi0gICAgMjUyLCAxMDcsIDE0NCwgMSwgMjUyLCAxMDgsIDIzMCwgMTM2LCAxNDQsIDEsIDE4OCwgMTQ0LCAxLCAxODYsIDE0NCwgMSwgCi0gICAgMjAzLCAxNDQsIDEsIDIyNCwgNzcsIDI1NCwgMTE1LCAxNDQsIDEsIDIzMywgMTU3LCAxNDQsIDEsIDIxNCwgNDksIDE0NCwgCi0gICAgMSwgMjIyLCAyMDMsIDIzMCwgMTM2LCAxNDQsIDEsIDIyMiwgMjAzLCAyMzIsIDEyLCAxNDQsIDEsIDIyMiwgMjAyLCAxNDQsIAotICAgIDEsIDE1OSwgMTQ0LCA1LCAyNTAsIDEyMiwgMjE3LCAyMDMsIDE0NCwgMzAsIDUsIDIxNywgMjU0LCAxNDQsIDMwLCA1LCAKLSAgICAyMTYsIDI0NiwgMTQ0LCAzMCwgNSwgMjEzLCAxNzgsIDE0NCwgMzAsIDUsIDIxMywgMTc5LCAyMzEsIDEzMywgMTQ0LCAzMCwgCi0gICAgNSwgMjE4LCAyNDgsIDE0NCwgMzAsIDUsIDIxOCwgMjQ5LCAyMzEsIDEyMSwgMTQ0LCAzMCwgNSwgMjE4LCAxNiwgMTQ0LCAKLSAgICAzMCwgNSwgMjQ3LCAxNDYsIDIzMCwgMTM1LCAxNDQsIDMwLCA1LCAyMjYsIDU5LCAxNDQsIDI0OSwgMTMzLCA1LCAyMzQsIAotICAgIDE2NCwgMTQ0LCAyNDksIDEzMywgNSwgMjI2LCA3MSwgMTQ0LCAyNDksIDEzMywgNSwgMjUwLCAyMDcsIDE0NCwgMjI2LCAKLSAgICAxNjcsIDE0NCwgNDIsIDIyMywgMjIxLCAxNDQsIDQ2LCAyMjMsIDIyMSwgMTQ0LCAyMjYsIDIwMywgMjU0LCAyNiwgMTQ0LCAKLSAgICAyMjYsIDIwMywgMjMyLCAyOSwgMTQ0LCAyMjYsIDIwMywgMjMyLCAxNDYsIDE0NCwgMjI2LCAyMDMsIDIxMywgMjIzLCAxNDQsIAotICAgIDIyNiwgMjAzLCAyMjYsIDE2OCwgMTQ0LCAyMjYsIDIwMywgMjMyLCAyMzQsIDE0NCwgMjI2LCAyMDMsIDIzMiwgMTQwLCAKLSAgICAxNDQsIDIyNiwgMjAzLCAyNTQsIDE1NCwgMTQ0LCAyMjYsIDIwMywgMjU0LCAxNTUsIDI1NCwgMTU0LCAxNDQsIDIyNiwgCi0gICAgMjAzLCAyMjUsIDE4MywgMTQ0LCAyMTYsIDU4LCAyMjYsIDIwMywgMjI1LCAxODMsIDE0NCwgMjI2LCAxNjQsIDE0NCwgMjEsIAotICAgIDIxMiwgNzksIDE0NCwgMjEsIDExNiwgMTQ0LCAyMSwgMTA5LCAxNDQsIDIxLCAxNjYsIDE0NCwgMjEsIDE2MywgMTQ0LCAyMSwgCi0gICAgMTgwLCAxNDQsIDIxLCAxODksIDE0NCwgMjEsIDE5OCwgMTQ0LCAyMSwgMTk1LCAxNDQsIDIxLCAyMDAsIDE0NCwgMjI2LCAKLSAgICAyMDMsIDIxNywgMjIsIDIxNiwgNzAsIDE0NCwgMjI2LCAyMDMsIDIzNSwgMTY1LCAxNjIsIDEsIDYxLCAxNjIsIDEsIDcyLCAKLSAgICAxNjIsIDEsIDY5LCAxNjIsIDEsIDc0LCAxNjIsIDEsIDI1NCwgMTA4LCAxNjIsIDEsIDc1LCAxNjIsIDEsIDE4MSwgMTYyLCAKLSAgICAxLCAyMzQsIDEzOCwgMTYyLCAxLCAyNDMsIDExMCwgMTYyLCAxLCAyNDIsIDIyNSwgMTYyLCAxLCAyMjksIDc1LCAxNjIsIDEsIAotICAgIDIyOSwgMTU5LCAxNjIsIDEsIDI1MCwgOTIsIDE2MiwgMSwgMjUwLCA0OSwgMTYyLCAxLCAyMzUsIDEzOSwgMTYyLCAxLCAKLSAgICAyMzUsIDExNSwgMTYyLCAxLCAyMjksIDY2LCAxNjIsIDEsIDIyOSwgNjgsIDE2MiwgMSwgMjI5LCA2NywgMTYyLCAxLCAyMTgsIAotICAgIDUyLCAxNjIsIDEsIDIxNywgMTYxLCAxNjIsIDEsIDI0OCwgMTY0LCAxNjIsIDEsIDI0NywgMjMyLCAxNjIsIDEsIDIyOCwgCi0gICAgNjIsIDE2MiwgMSwgMjA1LCAxNjIsIDEsIDI0OCwgODYsIDE2MiwgMSwgMTkzLCAxNjIsIDEsIDIyNSwgMTAwLCAxNjIsIDEsIAotICAgIDIyNiwgMjMsIDE2MiwgMSwgMjUyLCAxMDcsIDE2MiwgMSwgMjUxLCAxOTUsIDE2MiwgMSwgMjMwLCAxNjUsIDE2MiwgMSwgCi0gICAgMTg4LCAxNjIsIDEsIDI1MiwgMzEsIDE2MiwgMSwgMTg2LCAxNjIsIDEsIDIwMywgMTYyLCAxLCAyMzMsIDE1NywgMTYyLCAxLCAKLSAgICAyMTUsIDEsIDE2MiwgMSwgMjE5LCAxNTcsIDE2MiwgMSwgMjIyLCAyMDIsIDE2MiwgMSwgMTU5LCAxNjIsIDMwLCA1LCAyNTQsIAotICAgIDIzMiwgMTYyLCAzMCwgNSwgNzIsIDE2MiwgMzAsIDUsIDIzNiwgMjgsIDE2MiwgMzAsIDUsIDI0NSwgMTUyLCAxNjIsIDMwLCAKLSAgICA1LCA2OSwgMTYyLCAzMCwgNSwgMjI3LCA5OSwgMTYyLCAzMCwgNSwgNzUsIDE2MiwgMzAsIDUsIDI1NCwgMTA4LCAxNjIsIAotICAgIDMwLCA1LCAyNTMsIDEwOCwgMTYyLCAzMCwgNSwgMjE1LCAxODMsIDE2MiwgMjQ5LCAxMzMsIDUsIDE4NiwgMTYyLCAyNDksIAotICAgIDEzMywgNSwgMjAzLCAxNjIsIDI0OSwgMTMzLCA1LCAyMzMsIDE1NywgMTYyLCAyNDksIDEzMywgNSwgMjE0LCA0OSwgMTYyLCAKLSAgICAxLCA0MCwgMjM1LCAyNywgMTYyLCAxLCA0MCwgMjQzLCAxNzcsIDE2MiwgMSwgNDAsIDIyOSwgMTYxLCAxNjIsIDI0OSwgCi0gICAgMTMzLCA1LCA0MCwgMjI5LCAxNjEsIDE2MiwgMSwgNDAsIDI1MCwgOTMsIDE2MiwgMSwgNDAsIDIxOCwgOTksIDE2MiwgMSwgCi0gICAgNDAsIDIwNCwgMTYyLCAxLCA0MCwgMjI2LCAyMjksIDE2MiwgMSwgNDAsIDIxMywgMTA1LCAxNjIsIDEsIDQwLCAxNDksIAotICAgIDE2MiwgMSwgNDAsIDE1MCwgMTYyLCAxLCA0MCwgMjE5LCAxNTgsIDE2MiwgMjQ5LCAxMzMsIDUsIDQwLCAxODMsIDE2MiwgCi0gICAgMjQ5LCAxMzMsIDUsIDQwLCAyNDIsIDQxLCAxNjIsIDIxLCAyMTIsIDc5LCAxNjIsIDIxLCAxMTYsIDE2MiwgMjEsIDEwOSwgCi0gICAgMTYyLCAyMSwgMTY2LCAxNjIsIDIxLCAxNjMsIDE2MiwgMjEsIDE4MCwgMTYyLCAyMSwgMTg5LCAxNjIsIDIxLCAxOTgsIAotICAgIDE2MiwgMjEsIDE5NSwgMTYyLCAyMSwgMjAwLCAxNjIsIDIyNSwgMjcsIDIxOSwgMTgzLCAxNjIsIDIyNSwgMjcsIDI0OCwgCi0gICAgMTIzLCAxNjIsIDIyNSwgMjcsIDUxLCAyNDgsIDEyMywgMTYyLCAyMjUsIDI3LCAyMTYsIDE2OSwgMjQ4LCAxMjMsIDY0LCAxLCAKLSAgICAyMzQsIDEzMiwgMjQzLCAxMTAsIDY0LCAxLCAyMzQsIDEzMiwgMjUwLCAyMTksIDY0LCAxLCAyMzQsIDEzMiwgMjUwLCA5MiwgCi0gICAgNjQsIDEsIDIzNCwgMTMyLCAyMzUsIDEzOSwgNjQsIDEsIDIzNCwgMTMyLCAyMzUsIDExNSwgNjQsIDEsIDIzNCwgMTMyLCAKLSAgICAyMjgsIDIzLCA2NCwgMSwgMjM0LCAxMzIsIDIxNiwgMTE1LCA2NCwgMSwgMjM0LCAxMzIsIDIxNiwgMTA1LCA2NCwgMSwgCi0gICAgMjM0LCAxMzIsIDI0OCwgODYsIDY0LCAxLCAyMzQsIDEzMiwgMjQ4LCA3MCwgNjQsIDEsIDIzNCwgMTMyLCAyNDcsIDIzMiwgCi0gICAgNjQsIDEsIDIzNCwgMTMyLCAyMDUsIDY0LCAxLCAyMzQsIDEzMiwgMjIyLCAyMDIsIDY0LCAxLCAyMzQsIDEzMiwgMTU5LCAKLSAgICA2NCwgMSwgMjM0LCAxMzIsIDI0MSwgMTc0LCA2NCwgMSwgMjM0LCAxMzIsIDI0NCwgMTY0LCA2NCwgNTksIDEsIDIzNCwgCi0gICAgMTMyLCAyMjQsIDIsIDY0LCAxLCAyMzQsIDEzMiwgMjEzLCAxNTMsIDY0LCAxLCAyMzQsIDEzMiwgMjEyLCAxMDksIDY0LCAxLCAKLSAgICAyMzQsIDEzMiwgMjAzLCA2NCwgMjMyLCAxOTgsIDIzNCwgMTMyLCAyMjcsIDExNywgNjQsIDIzMiwgMTk4LCAyMzQsIDEzMiwgCi0gICAgMjI0LCAxODgsIDY0LCAyMzIsIDE5OCwgMjM0LCAxMzIsIDI0MSwgMTA3LCA2NCwgMTYsIDI1NCwgOTgsIDI0NCwgMjUzLCAKLSAgICA2NCwgMTYsIDI1NCwgOTgsIDExNiwgNjQsIDE2LCAyNTQsIDk4LCAxMDksIDY0LCAxLCAyNTQsIDk4LCAyMDMsIDY0LCA1LCAKLSAgICAyMjYsIDE1MSwgMjM0LCAyMTgsIDIxNiwgMjQxLCAzOCwgMTkwLCAxLCAxMTUsIDIzNCwgMzcsIDM4LCAxOTAsIDEsIDEyNCwgCi0gICAgMjM0LCAzNywgMzgsIDE5MCwgMSwgMTE1LCAyMzQsIDExMywgMzgsIDE5MCwgMSwgMTI0LCAyMzQsIDExMywgMzgsIDE5MCwgCi0gICAgMSwgMTE1LCAyMzQsIDEyMCwgMzgsIDE5MCwgMSwgMTI0LCAyMzQsIDEyMCwgMzgsIDE5MCwgMSwgMTE1LCAyNDIsIDE1MCwgCi0gICAgMzgsIDE5MCwgMSwgMTI0LCAyNDIsIDE1MCwgMzgsIDE5MCwgMSwgMTE1LCAyMjksIDkwLCAzOCwgMTkwLCAxLCAxMjQsIAotICAgIDIyOSwgOTAsIDM4LCAxOTAsIDEsIDExNSwgMjQ5LCAxNzUsIDM4LCAxOTAsIDEsIDEyNCwgMjQ5LCAxNzUsIDM4LCAxOTAsIAotICAgIDEsIDExNSwgMjUwLCAyMywgMzgsIDE5MCwgMSwgMTI0LCAyNTAsIDIzLCAzOCwgMTkwLCAxLCAxMTUsIDIxOSwgMjQyLCAzOCwgCi0gICAgMTkwLCAxLCAxMjQsIDIxOSwgMjQyLCAzOCwgMTkwLCAxLCAxMTUsIDIyNywgMjUzLCAzOCwgMTkwLCAxLCAxMjQsIDIyNywgCi0gICAgMjUzLCAzOCwgMTkwLCAxLCAxMTUsIDI0NywgOTksIDM4LCAxOTAsIDEsIDEyNCwgMjQ3LCA5OSwgMzgsIDE5MCwgMSwgMTE1LCAKLSAgICAxMDgsIDM4LCAxOTAsIDEsIDEyNCwgMTA4LCAzOCwgMTkwLCAxLCAxMTUsIDIxNywgMTA5LCAzOCwgMTkwLCAxLCAxMjQsIAotICAgIDIxNywgMTA5LCAzOCwgMTkwLCAxLCAxMTUsIDIyOCwgMTg1LCAzOCwgMTkwLCAxLCAxMjQsIDIyOCwgMTg1LCAzOCwgMTkwLCAKLSAgICAxLCAxMTUsIDI1MSwgMTI4LCAzOCwgMTkwLCAxLCAxMjQsIDI1MSwgMTI4LCAzOCwgMTkwLCAxLCAxMTUsIDIyNSwgMTUwLCAKLSAgICAzOCwgMTkwLCAxLCAxMjQsIDIyNSwgMTUwLCAzOCwgMTkwLCAxLCAxMTUsIDIyNSwgMjUzLCAzOCwgMTkwLCAxLCAxMjQsIAotICAgIDIyNSwgMjUzLCAzOCwgMTkwLCAxLCAxMTUsIDI0NCwgMTIsIDM4LCAxOTAsIDEsIDEyNCwgMjQ0LCAxMiwgMzgsIDE5MCwgMSwgCi0gICAgMTE1LCAyMzAsIDIzMSwgMzgsIDE5MCwgMSwgMTI0LCAyMzAsIDIzMSwgMzgsIDE5MCwgMSwgMTE1LCAyMTIsIDIzNSwgMzgsIAotICAgIDE5MCwgMSwgMTI0LCAyMTIsIDIzNSwgMzgsIDE5MCwgMSwgMTE1LCAyMjMsIDExMiwgMzgsIDE5MCwgMSwgMTI0LCAyMjMsIAotICAgIDExMiwgMzgsIDE5MCwgMSwgMTE1LCAyMzIsIDIwOCwgMzgsIDE5MCwgMSwgMTI0LCAyMzIsIDIwOCwgMzgsIDE5MCwgMSwgCi0gICAgMTE1LCAyMTQsIDExOSwgMzgsIDE5MCwgMSwgMTI0LCAyMTQsIDExOSwgMzgsIDE5MCwgMSwgMTE1LCAyNDEsIDU0LCAzOCwgCi0gICAgMTkwLCAxLCAxMjQsIDI0MSwgNTQsIDM4LCAxOTAsIDEsIDExNSwgNzUsIDM4LCAxOTAsIDEsIDEyNCwgNzUsIDM4LCAxOTAsIAotICAgIDIzMiwgOSwgMjM0LCAyMzUsIDM4LCAxOTAsIDMwLCAyNTQsIDIzMiwgMzgsIDE5MCwgMzAsIDcyLCAzOCwgMTkwLCAzMCwgCi0gICAgMjE1LCAxODMsIDM4LCAxOTAsIDMwLCA2OSwgMzgsIDE5MCwgMzAsIDc0LCAzOCwgMTkwLCAzMCwgNzUsIDM4LCAxOTAsIAotICAgIDIzMiwgOSwgMjM0LCAxMTUsIDM4LCAxOTAsIDMwLCAyNDAsIDExMSwgMzgsIDE5MCwgMzAsIDIxNSwgMTgyLCAzOCwgMTkwLCAKLSAgICAzMCwgMjE1LCAxOTYsIDM4LCAxOTAsIDMwLCAyNTMsIDEwNiwgMzgsIDE5MCwgMzAsIDI1MywgODMsIDM4LCAxOTAsIDMwLCAKLSAgICAyNTQsIDMyLCAzOCwgMTkwLCAzMCwgMjU0LCA0NSwgMzgsIDE5MCwgMTYwLCAyMzIsIDksIDI0NSwgMTM3LCAzOCwgMTkwLCAKLSAgICAxNjAsIDIzMiwgOSwgMjI4LCA2MSwgMzgsIDE5MCwgMTYwLCAyMzIsIDksIDIxNywgMTA5LCAzOCwgMTkwLCAxNjAsIDIzMiwgCi0gICAgOSwgMjE5LCAyMjgsIDM4LCAxOTAsIDE2LCAyMzQsIDIyLCAzOCwgMTkwLCAxNiwgMjI4LCA2MSwgMzgsIDE5MCwgMTYsIAotICAgIDIyMiwgMTY4LCAzOCwgMTkwLCAxNiwgMjQxLCA1NSwgMjQxLCA1MCwgMzgsIDE5MCwgMTYsIDIzNCwgMzEsIDIzNCwgMzAsIAotICAgIDI4LCA0LCAyMTYsIDk4LCAyOCwgNCwgMjE2LCAxMDEsIDI4LCA0LCAyMTYsIDEwNCwgMjgsIDQsIDIxNiwgMTAyLCAyOCwgNCwgCi0gICAgMjE2LCAxMDMsIDI4LCA0LCAyMTYsIDEwMCwgMjgsIDQsIDI0OCwgNjQsIDI4LCA0LCAyNDgsIDY2LCAyOCwgNCwgMjQ4LCAKLSAgICA2OSwgMjgsIDQsIDI0OCwgNjcsIDI4LCA0LCAyNDgsIDY4LCAyOCwgNCwgMjQ4LCA2NSwgMjgsIDQsIDI0NSwgMjM5LCAyOCwgCi0gICAgNCwgMjQ1LCAyNDIsIDI4LCA0LCAyNDUsIDI0OCwgMjgsIDQsIDI0NSwgMjQ2LCAyOCwgNCwgMjQ1LCAyNDcsIDI4LCA0LCAKLSAgICAyNDUsIDI0MCwgMjgsIDQsIDI1MCwgMTM4LCAyOCwgNCwgMjUwLCAxMzIsIDI4LCA0LCAyNTAsIDEzNCwgMjgsIDQsIDI1MCwgCi0gICAgMTM3LCAyOCwgNCwgMjUwLCAxMzUsIDI4LCA0LCAyNTAsIDEzNiwgMjgsIDQsIDI1MCwgMTMzLCAyOCwgNCwgMjUyLCAzMSwgCi0gICAgMjgsIDQsIDI1MiwgMTAsIDI4LCA0LCAyNTIsIDIyLCAyOCwgNCwgMjUyLCAzMCwgMjgsIDQsIDI1MiwgMjUsIDI4LCA0LCAKLSAgICAyNTIsIDI2LCAyOCwgNCwgMjUyLCAxNCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMzQsIDI4LCAyMzEsIDE0MCwgMjMxLCAKLSAgICAxOTQsIDEsIDIyMiwgMTY4LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIzMywgMTMzLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIAotICAgIDIzMCwgMjQxLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDE5MywgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMDUsIDIzMSwgCi0gICAgMTQwLCAyMzEsIDE5NCwgMSwgMjUwLCAzOSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMTcsIDQ0LCAyMzEsIDE0MCwgMjMxLCAKLSAgICAxOTQsIDEsIDIzNCwgMTA5LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIyOSwgODAsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgCi0gICAgMjE3LCAxMDMsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjE0LCA0NCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMTMsIDU4LCAKLSAgICAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDI0MCwgMjA2LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIxNSwgMTYwLCAyMzEsIAotICAgIDE0MCwgMjMxLCAxOTQsIDEsIDcyLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIyNiwgMTgsIDIzMSwgMTQwLCAyMzEsIDE5NCwgCi0gICAgMSwgMjUzLCAxMTgsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjQyLCAxNDMsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjM1LCAKLSAgICAxMTQsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjI0LCA1NywgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyNTIsIDEwNywgCi0gICAgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMzUsIDEwMywgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyNDcsIDE3MSwgMjMxLCAKLSAgICAxNDAsIDIzMSwgMTk0LCAxLCAyNDIsIDE5NywgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyNDcsIDIxMywgMjMxLCAxNDAsIAotICAgIDIzMSwgMTk0LCAxLCAyNTEsIDE5NCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMzQsIDI5LCAyMzIsIDE4MSwgMjMxLCAKLSAgICAxNDAsIDIzMSwgMTk0LCAxLCAyMzMsIDEzNCwgMjMyLCAxODEsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjMwLCAyNDIsIAotICAgIDIzMiwgMTgxLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIyNiwgMjE0LCAyMzIsIDE4MSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAKLSAgICAxLCAyMzAsIDQ2LCAyMzIsIDE4MSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMTcsIDQ1LCAyMzIsIDE4MSwgMjMxLCAxNDAsIAotICAgIDIzMSwgMTk0LCAxLCAyMjksIDgxLCAyMzIsIDE4MSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyNDAsIDE0NiwgMjMyLCAKLSAgICAxODEsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMzAsIDUsIDIyNywgNjEsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMzAsIDUsIDIzNSwgCi0gICAgMjQ5LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDMwLCA1LCAyNTQsIDMxLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDMwLCA1LCAyMTMsIAotICAgIDI5LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDMwLCA1LCAyMTksIDIxOSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAzMCwgNSwgMjE1LCAKLSAgICAxNTcsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMzAsIDUsIDI1MCwgNjAsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMzAsIDUsIDIyOCwgCi0gICAgNDcsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjUwLCA2MSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAyMzIsIDE0MywgMjM1LCAxNDgsIAotICAgIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjUzLCAyMTYsIDIzNSwgMTQ4LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDIxLCAyMTIsIDc5LCAKLSAgICAyMzEsIDE0MCwgMjMxLCAxOTQsIDIxLCAxMTYsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjEsIDEwOSwgMjMxLCAxNDAsIDIzMSwgCi0gICAgMTk0LCAyMSwgMTY2LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDIxLCAxNjMsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjEsIDE4MCwgCi0gICAgMjMxLCAxNDAsIDIzMSwgMTk0LCAyMSwgMTg5LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDIxLCAxOTgsIDIzMSwgMTQwLCAyMzEsIAotICAgIDE5NCwgMjEsIDE5NSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAyMSwgMjAwLCAyMywgMTM1LCAyMjcsIDE5NywgMjMsIDEzNSwgCi0gICAgMjI3LCAyMDIsIDIzLCAxMzUsIDIxMiwgMjM0LCAyMywgMTM1LCAyMTIsIDIzMywgMjMsIDEzNSwgMjEyLCAyMzIsIDIzLCAKLSAgICAxMzUsIDIxNSwgMjQ2LCAyMywgMTM1LCAyMTUsIDI0OSwgMjMsIDEzNSwgMjEyLCAyMDEsIDIzLCAxMzUsIDIxMiwgMTk3LCAKLSAgICAyMywgMTM1LCAyNDUsIDIxLCAyMywgMTM1LCAyNDUsIDE5LCAyMywgMTM1LCAyNDUsIDIwLCAyMywgMTM1LCAyNDUsIDE3LCAKLSAgICAyMywgMTM1LCAyNDAsIDEzNiwgMjMsIDEzNSwgMjQwLCAxMzUsIDIzLCAxMzUsIDI0MCwgMTMzLCAyMywgMTM1LCAyNDAsIAotICAgIDEzNCwgMjMsIDEzNSwgMjQwLCAxMzksIDIzLCAxMzUsIDI0MCwgMTMyLCAyMywgMTM1LCAyNDAsIDEzMSwgMjMsIDEzNSwgCi0gICAgMjQwLCAxNDEsIDIzLCAxMzUsIDI1MywgMjAzLCAyMywgMTM1LCAyNTMsIDIwMiwgMjMsIDg5LCAyMjksIDUwLCAyMywgODksIAotICAgIDIyOSwgNTYsIDIzLCA4OSwgMjE5LCAxMzksIDIzLCA4OSwgMjE5LCAxMzgsIDIzLCA4OSwgMjE3LCA1MCwgMjMsIDg5LCAKLSAgICAyMTcsIDQ4LCAyMywgODksIDIxNywgNDcsIDIzLCA4OSwgMjE3LCA1MywgMjMsIDg5LCAyMTcsIDU0LCAyMywgODksIDIxNywgCi0gICAgNDYsIDIzLCA4OSwgMjIzLCAxNTgsIDIzLCA4OSwgMjIzLCAxNzMsIDIzLCA4OSwgMjE5LCAxNDUsIDIzLCA4OSwgMjIzLCAKLSAgICAxNzAsIDIzLCA4OSwgMjIzLCAxNjAsIDIzLCA4OSwgMjIzLCAxNjIsIDIzLCA4OSwgMjIzLCAxNDksIDIzLCA4OSwgMjIzLCAKLSAgICAxNTAsIDIzLCA4OSwgMjM0LCAyMjMsIDIzLCA4OSwgMjMxLCAyNSwgMjMsIDg5LCAyMzEsIDE5LCAyMywgODksIDIxOSwgCi0gICAgMTQ5LCAyMywgODksIDIzMSwgMjIsIDIzLCA4OSwgMjMxLCAyOCwgMjMsIDg5LCAyMjUsIDIwOCwgMjMsIDg5LCAyMjUsIAotICAgIDIxNywgMjMsIDg5LCAyMjUsIDIyMSwgMjMsIDg5LCAyMTksIDE0NywgMjMsIDg5LCAyMjUsIDIxMSwgMjMsIDg5LCAyMjUsIAotICAgIDIyNSwgMjMsIDg5LCAyMjUsIDIyNiwgMjMsIDg5LCAyMjAsIDY4LCAyMywgODksIDIyMCwgNzEsIDIzLCA4OSwgMjE5LCAKLSAgICAxNDMsIDIzLCA4OSwgMjE5LCAxNDEsIDIzLCA4OSwgMjIwLCA2NiwgMjMsIDg5LCAyMjAsIDc0LCAyMywgODksIDIyMCwgNzUsIAotICAgIDIzLCA4OSwgMjIwLCA2MCwgMjMsIDg5LCAyMjAsIDczLCAyMywgODksIDIyNiwgMTU4LCAyMywgODksIDIyNiwgMTU5LCAyMywgCi0gICAgODksIDIxMywgMTUsIDIzLCA4OSwgMjEzLCAxNiwgMjMsIDg5LCAyNDksIDIzNywgMjMsIDg5LCAyNDksIDIzNiwgMjMsIDg5LCAKLSAgICAyMTksIDE1NCwgMjMsIDg5LCAyMjYsIDQsIDIzLCA4OSwgMjI2LCAzLCA5LCAxMywgMjM4LCAxNywgOSwgMTMsIDIzOCwgMTYsIAotICAgIDksIDEzLCAyMzgsIDE1LCA5LCAxMywgMjM4LCAxNCwgOSwgMTMsIDIzOCwgMTMsIDksIDEzLCAyMzgsIDEyLCA5LCAxMywgCi0gICAgMjM4LCAxMSwgOSwgMTMsIDIzOCwgMTAsIDksIDEzLCAyMzgsIDksIDksIDEzLCAyMzgsIDgsIDksIDEzLCAyMzgsIDcsIDksIAotICAgIDEzLCAyMzgsIDYsIDksIDEzLCAyMzgsIDUsIDksIDEzLCAyMzgsIDQsIDksIDEzLCAyMzgsIDMsIDksIDEzLCAyMzgsIDIsIAotICAgIDksIDEzLCAyMzgsIDEsIDksIDEzLCAyMzgsIDAsIDksIDEzLCAyMzcsIDI1NSwgOSwgMTMsIDIzNywgMjU0LCA5LCAxMywgCi0gICAgMjM3LCAyNTMsIDksIDEzLCAyMzcsIDI1MiwgOSwgMTMsIDIzNywgMjUxLCA5LCAxMywgMjM3LCAyNTAsIDksIDEzLCAyMzcsIAotICAgIDI0OSwgOSwgMTMsIDIzNywgMjQ4LCA5LCAxMywgMjM3LCAyNDcsIDksIDEzLCAyMzcsIDI0NiwgOSwgMTMsIDIzNywgMjQ1LCAKLSAgICA5LCAxMywgMjM3LCAyNDQsIDksIDEzLCAyMzcsIDI0MywgOSwgMTMsIDIzNywgMjQyLCA5LCAxMywgMjM3LCAyNDEsIDksIAotICAgIDEzLCAyMzcsIDI0MCwgOSwgMTMsIDIzNywgMjM5LCA5LCAxMywgMjM3LCAyMzgsIDksIDEzLCAyMzcsIDIzNywgOSwgMTMsIAotICAgIDIzNywgMjM2LCA5LCAxMywgMjM3LCAyMzUsIDksIDEzLCAyMzcsIDIzNCwgOSwgMTMsIDIzNywgMjMzLCA5LCAxMywgMjM3LCAKLSAgICAyMzIsIDksIDEzLCAyMzcsIDIzMSwgOSwgMTMsIDIzNywgMjMwLCA5LCAxMywgMjM3LCAyMjksIDksIDEzLCAyMzcsIDIyOCwgCi0gICAgOSwgMTMsIDIzNywgMjI3LCA5LCAxMywgMjM3LCAyMjYsIDksIDEzLCAyMzcsIDIyNSwgOSwgMTMsIDIzNywgMjI0LCA5LCAKLSAgICAxMywgMjM3LCAyMjMsIDksIDEzLCAyMzcsIDIyMiwgOSwgMTMsIDIzNywgMjIxLCA5LCAxMywgMjM3LCAyMjAsIDksIDEzLCAKLSAgICAyMzcsIDIxOSwgOSwgMTMsIDIzNywgMjE4LCA5LCAxMywgMjM3LCAyMTcsIDksIDEzLCAyMzcsIDIxNiwgOSwgMTMsIDIzNywgCi0gICAgMjE1LCA5LCAxMywgMjM3LCAyMTQsIDksIDEzLCAyMzcsIDIxMywgOSwgMTMsIDIzNywgMjEyLCA5LCAxMywgMjM3LCAyMTEsIAotICAgIDksIDEzLCAyMzcsIDIxMCwgOSwgMTMsIDIzNywgMjA5LCA5LCAxMywgMjM3LCAyMDgsIDksIDEzLCAyMzcsIDIwNywgOSwgCi0gICAgMTMsIDIzNywgMjA2LCA5LCAxMywgMjM3LCAyMDUsIDksIDEzLCAyMzcsIDIwNCwgOSwgMTMsIDIzNywgMjAzLCA5LCAxMywgCi0gICAgMjM3LCAyMDIsIDksIDEzLCAyMzcsIDIwMSwgOSwgMTMsIDIzNywgMjAwLCA5LCAxMywgMjM3LCAxOTksIDksIDEzLCAyMzcsIAotICAgIDE5OCwgOSwgMTMsIDIzNywgMTk3LCA5LCAxMywgMjM3LCAxOTYsIDksIDEzLCAyMzcsIDE5NSwgOSwgMTMsIDIzNywgMTk0LCAKLSAgICA5LCAxMywgMjM3LCAxOTMsIDksIDEzLCAyMzcsIDE5MiwgOSwgMTMsIDIzNywgMTkxLCA5LCAxMywgMjM3LCAxOTAsIDksIAotICAgIDEzLCAyMzcsIDE4OSwgOSwgMTMsIDIzNywgMTg4LCA5LCAxMywgMjM3LCAxODcsIDksIDEzLCAyMzcsIDE4NiwgOSwgMTMsIAotICAgIDIzNywgMTg1LCA5LCAxMywgMjM3LCAxODQsIDksIDEzLCAyMzcsIDE4MywgOSwgMTMsIDIzNywgMTgyLCA5LCAxMywgMjM3LCAKLSAgICAxODEsIDksIDEzLCAyMzcsIDE4MCwgOSwgMTMsIDIzNywgMTc5LCA5LCAxMywgMjM3LCAxNzgsIDksIDEzLCAyMzcsIDE3NywgCi0gICAgOSwgMTMsIDIzNywgMTc2LCA5LCAxMywgMjM3LCAxNzUsIDksIDEzLCAyMzcsIDE3NCwgOSwgMTMsIDIzNywgMTczLCA5LCAKLSAgICAxMywgMjM3LCAxNzIsIDksIDEzLCAyMzcsIDE3MSwgOSwgMTMsIDIzNywgMTcwLCA5LCAxMywgMjM3LCAxNjksIDksIDEzLCAKLSAgICAyMzcsIDE2OCwgOSwgMTMsIDIzNywgMTY3LCA5LCAxMywgMjM3LCAxNjYsIDksIDEzLCAyMzcsIDE2NSwgOSwgMTMsIDIzNywgCi0gICAgMTY0LCA5LCAxMywgMjM3LCAxNjMsIDksIDEzLCAyMzcsIDE2MiwgOSwgMTMsIDIzNywgMTYxLCA5LCAxMywgMjM3LCAxNjAsIAotICAgIDksIDEzLCAyMzcsIDE1OSwgOSwgMTMsIDIzNywgMTU4LCA5LCAxMywgMjM3LCAxNTcsIDksIDEzLCAyMzcsIDE1NiwgOSwgCi0gICAgMTMsIDIzNywgMTU1LCA5LCAxMywgMjM3LCAxNTQsIDksIDEzLCAyMzcsIDE1MywgOSwgMTMsIDIzNywgMTUyLCA5LCAxMywgCi0gICAgMjM3LCAxNTEsIDksIDEzLCAyMzcsIDE1MCwgOSwgMTMsIDIzNywgMTQ5LCA5LCAxMywgMjM3LCAxNDgsIDksIDEzLCAyMzcsIAotICAgIDE0NywgOSwgMTMsIDIzNywgMTQ2LCA5LCAxMywgMjM3LCAxNDUsIDksIDEzLCAyMzcsIDE0NCwgOSwgMTMsIDIzNywgMTQzLCAKLSAgICA5LCAxMywgMjM3LCAxNDIsIDksIDEzLCAyMzcsIDE0MSwgOSwgMTMsIDIzNywgMTQwLCA5LCAxMywgMjM3LCAxMzksIDksIAotICAgIDEzLCAyMzcsIDEzOCwgOSwgMTMsIDIzNywgMTM3LCA5LCAxMywgMjM3LCAxMzYsIDksIDEzLCAyMzcsIDEzNSwgOSwgMTMsIAotICAgIDIzNywgMTM0LCA5LCAxMywgMjM3LCAxMzMsIDksIDEzLCAyMzcsIDEzMiwgOSwgMTMsIDIzNywgMTMxLCA5LCAxMywgMjM3LCAKLSAgICAxMzAsIDksIDEzLCAyMzcsIDEyOSwgOSwgMTMsIDIzNywgMTI4LCA5LCAxMywgMjM3LCAxMjcsIDksIDEzLCAyMzcsIDEyNiwgCi0gICAgOSwgMTMsIDIzNywgMTI1LCA5LCAxMywgMjM3LCAxMjQsIDksIDEzLCAyMzcsIDEyMywgOSwgMTMsIDIzNywgMTIyLCA5LCAKLSAgICAxMywgMjM3LCAxMjEsIDksIDEzLCAyMzcsIDEyMCwgOSwgMTMsIDIzNywgMTE5LCA5LCAxMywgMjM3LCAxMTgsIDksIDEzLCAKLSAgICAyMzcsIDExNywgOSwgMTMsIDIzNywgMTE2LCA5LCAxMywgMjM3LCAxMTUsIDksIDEzLCAyMzcsIDExNCwgOSwgMTMsIDIzNywgCi0gICAgMTEzLCA5LCAxMywgMjM3LCAxMTIsIDksIDEzLCAyMzcsIDExMSwgOSwgMTMsIDIzNywgMTEwLCA5LCAxMywgMjM3LCAxMDksIAotICAgIDksIDEzLCAyMzcsIDEwOCwgOSwgMTMsIDIzNywgMTA3LCA5LCAxMywgMjM3LCAxMDYsIDksIDEzLCAyMzcsIDEwNSwgOSwgCi0gICAgMTMsIDIzNywgMTA0LCA5LCAxMywgMjM3LCAxMDMsIDksIDEzLCAyMzcsIDEwMiwgOSwgMTMsIDIzNywgMTAxLCA5LCAxMywgCi0gICAgMjM3LCAxMDAsIDksIDEzLCAyMzcsIDk5LCA5LCAxMywgMjM3LCA5OCwgOSwgMTMsIDIzNywgOTcsIDksIDEzLCAyMzcsIDk2LCAKLSAgICA5LCAxMywgMjM3LCA5NSwgOSwgMTMsIDIzNywgOTQsIDksIDEzLCAyMzcsIDkzLCA5LCAxMywgMjM3LCA5MiwgOSwgMTMsIAotICAgIDIzNywgOTEsIDksIDEzLCAyMzcsIDkwLCA5LCAxMywgMjM3LCA4OSwgOSwgMTMsIDIzNywgODgsIDksIDEzLCAyMzcsIDg3LCAKLSAgICA5LCAxMywgMjM3LCA4NiwgOSwgMTMsIDIzNywgODUsIDksIDEzLCAyMzcsIDg0LCA5LCAxMywgMjM3LCA4MywgOSwgMTMsIAotICAgIDIzNywgODIsIDksIDEzLCAyMzcsIDgxLCA5LCAxMywgMjM3LCA4MCwgOSwgMTMsIDIzNywgNzksIDksIDEzLCAyMzcsIDc4LCAKLSAgICA5LCAxMywgMjM3LCA3NywgOSwgMTMsIDIzNywgNzYsIDksIDEzLCAyMzcsIDc1LCA5LCAxMywgMjM3LCA3NCwgOSwgMTMsIAotICAgIDIzNywgNzMsIDksIDEzLCAyMzcsIDcyLCA5LCAxMywgMjM3LCA3MSwgOSwgMTMsIDIzNywgNzAsIDksIDEzLCAyMzcsIDY5LCAKLSAgICA5LCAxMywgMjM3LCA2OCwgOSwgMTMsIDIzNywgNjcsIDksIDEzLCAyMzcsIDY2LCA5LCAxMywgMjM3LCA2NSwgOSwgMTMsIAotICAgIDIzNywgNjQsIDksIDEzLCAyMzcsIDYzLCA5LCAxMywgMjM3LCA2MiwgOSwgMTMsIDIzNywgNjEsIDksIDEzLCAyMzcsIDYwLCAKLSAgICA5LCAxMywgMjM3LCA1OSwgOSwgMTMsIDIzNywgNTgsIDksIDEzLCAyMzcsIDU3LCA5LCAxMywgMjM3LCA1NiwgOSwgMTMsIAotICAgIDIzNywgNTUsIDksIDEzLCAyMzcsIDU0LCA5LCAxMywgMjM3LCA1MywgOSwgMTMsIDIzNywgNTIsIDksIDEzLCAyMzcsIDUxLCAKLSAgICA5LCAxMywgMjM3LCA1MCwgOSwgMTMsIDIzNywgNDksIDksIDEzLCAyMzcsIDQ4LCA5LCAxMywgMjM3LCA0NywgOSwgMTMsIAotICAgIDIzNywgNDYsIDksIDEzLCAyMzcsIDQ1LCA5LCAxMywgMjM3LCA0NCwgOSwgMTMsIDIzNywgNDMsIDksIDEzLCAyMzcsIDQyLCAKLSAgICA5LCAxMywgMjM3LCA0MSwgOSwgMTMsIDIzNywgNDAsIDksIDEzLCAyMzcsIDM5LCA5LCAxMywgMjM3LCAzOCwgOSwgMTMsIAotICAgIDIzNywgMzcsIDksIDEzLCAyMzcsIDM2LCA5LCAxMywgMjM3LCAzNSwgOSwgMTMsIDIzNywgMzQsIDksIDEzLCAyMzcsIDMzLCAKLSAgICA5LCAxMywgMjM3LCAzMiwgOSwgMTMsIDIzNywgMzEsIDksIDEzLCAyMzcsIDMwLCA5LCAxMywgMjM3LCAyOSwgOSwgMTMsIAotICAgIDIzNywgMjgsIDksIDEzLCAyMzcsIDI3LCA5LCAxMywgMjM3LCAyNiwgOSwgMTMsIDIzNywgMjUsIDksIDEzLCAyMzcsIDI0LCAKLSAgICA5LCAxMywgMjM3LCAyMywgOSwgMTMsIDIzNywgMjIsIDksIDEzLCAyMzcsIDIxLCA5LCAxMywgMjM3LCAyMCwgOSwgMTMsIAotICAgIDIzNywgMTksIDksIDEzLCAyMzcsIDE4LCA5LCAxMywgMjM3LCAxNywgOSwgMTMsIDIzNywgMTYsIDksIDEzLCAyMzcsIDE1LCAKLSAgICA5LCAxMywgMjM3LCAxNCwgOSwgMTMsIDIzNywgMTMsIDksIDEzLCAyMzcsIDEyLCA5LCAxMywgMjM3LCAxMSwgOSwgMTMsIAotICAgIDIzNywgMTAsIDksIDEzLCAyMzcsIDksIDksIDEzLCAyMzcsIDgsIDksIDEzLCAyMzcsIDcsIDksIDEzLCAyMzcsIDYsIDksIAotICAgIDEzLCAyMzcsIDUsIDksIDEzLCAyMzcsIDQsIDksIDEzLCAyMzcsIDMsIDksIDEzLCAyMzcsIDIsIDksIDEzLCAyMzcsIDEsIAotICAgIDksIDEzLCAyMzcsIDAsIDksIDEzLCAyMzYsIDI1NSwgOSwgMTMsIDIzNiwgMjU0LCA5LCAxMywgMjM2LCAyNTMsIDksIDEzLCAKLSAgICAyMzYsIDI1MiwgOSwgMTMsIDIzNiwgMjUxLCA5LCAxMywgMjM2LCAyNTAsIDksIDEzLCAyMzYsIDI0OSwgOSwgMTMsIDIzNiwgCi0gICAgMjQ4LCA5LCAxMywgMjM2LCAyNDcsIDksIDEzLCAyMzYsIDI0NiwgOSwgMTMsIDIzNiwgMjQ1LCA5LCAxMywgMjM2LCAyNDQsIAotICAgIDksIDEzLCAyMzYsIDI0MywgOSwgMTMsIDIzNiwgMjQyLCA5LCAxMywgMjM2LCAyNDEsIDksIDEzLCAyMzYsIDI0MCwgOSwgCi0gICAgMTMsIDIzNiwgMjM5LCA5LCAxMywgMjM2LCAyMzgsIDksIDEzLCAyMzYsIDIzNywgOSwgMTMsIDIzNiwgMjM2LCA5LCAxMywgCi0gICAgMjM2LCAyMzUsIDksIDEzLCAyMzYsIDIzNCwgOSwgMTMsIDIzNiwgMjMzLCA5LCAxMywgMjM2LCAyMzIsIDksIDEzLCAyMzYsIAotICAgIDIzMSwgOSwgMTMsIDIzNiwgMjMwLCA5LCAxMywgMjM2LCAyMjksIDksIDEzLCAyMzYsIDIyOCwgOSwgMTMsIDIzNiwgMjI3LCAKLSAgICA5LCAxMywgMjM2LCAyMjYsIDksIDEzLCAyMzYsIDIyNSwgOSwgMTMsIDIzNiwgMjI0LCA5LCAxMywgMjM2LCAyMjMsIDksIAotICAgIDEzLCAyMzYsIDIyMiwgOSwgMTMsIDIzNiwgMjIxLCA5LCAxMywgMjM2LCAyMjAsIDksIDEzLCAyMzYsIDIxOSwgOSwgMTMsIAotICAgIDIzNiwgMjE4LCA5LCAxMywgMjM2LCAyMTcsIDksIDEzLCAyMzYsIDIxNiwgOSwgMTMsIDIzNiwgMjE1LCA5LCAxMywgMjM2LCAKLSAgICAyMTQsIDksIDEzLCAyMzYsIDIxMywgOSwgMTMsIDIzNiwgMjEyLCA5LCAxMywgMjM2LCAyMTEsIDksIDEzLCAyMzYsIDIxMCwgCi0gICAgOSwgMTMsIDIzNiwgMjA5LCA5LCAxMywgMjM2LCAyMDgsIDksIDEzLCAyMzYsIDIwNywgOSwgMTMsIDIzNiwgMjA2LCA5LCAKLSAgICAxMywgMjM2LCAyMDUsIDksIDEzLCAyMzYsIDIwNCwgOSwgMTMsIDIzNiwgMjAzLCA5LCAxMywgMjM2LCAyMDIsIDksIDEzLCAKLSAgICAyMzYsIDIwMSwgOSwgMTMsIDIzNiwgMjAwLCA5LCAxMywgMjM2LCAxOTksIDksIDEzLCAyMzYsIDE5OCwgOSwgMTMsIDIzNiwgCi0gICAgMTk3LCA5LCAxMywgMjM2LCAxOTYsIDksIDEzLCAyMzYsIDE5NSwgOSwgMTMsIDIzNiwgMTk0LCA5LCAxMywgMjM2LCAxOTMsIAotICAgIDksIDEzLCAyMzYsIDE5MiwgOSwgMTMsIDIzNiwgMTkxLCA5LCAxMywgMjM2LCAxOTAsIDksIDEzLCAyMzYsIDE4OSwgOSwgCi0gICAgMTMsIDIzNiwgMTg4LCA5LCAxMywgMjM2LCAxODcsIDksIDEzLCAyMzYsIDE4NiwgOSwgMTMsIDIzNiwgMTg1LCA5LCAxMywgCi0gICAgMjM2LCAxODQsIDksIDEzLCAyMzYsIDE4MywgOSwgMTMsIDIzNiwgMTgyLCA5LCAxMywgMjM2LCAxODEsIDksIDEzLCAyMzYsIAotICAgIDE4MCwgOSwgMTMsIDIzNiwgMTc5LCA5LCAxMywgMjM2LCAxNzgsIDksIDEzLCAyMzYsIDE3NywgOSwgMTMsIDIzNiwgMTc2LCAKLSAgICA5LCAxMywgMjM2LCAxNzUsIDksIDEzLCAyMzYsIDE3NCwgOSwgMTMsIDIzNiwgMTczLCA5LCAxMywgMjM2LCAxNzIsIDksIAotICAgIDEzLCAyMzYsIDE3MSwgOSwgMTMsIDIzNiwgMTcwLCA5LCAxMywgMjM2LCAxNjksIDksIDEzLCAyMzYsIDE2OCwgOSwgMTMsIAotICAgIDIzNiwgMTY3LCA5LCAxMywgMjM2LCAxNjYsIDksIDEzLCAyMzYsIDE2NSwgOSwgMTMsIDIzNiwgMTY0LCA5LCAxMywgMjM2LCAKLSAgICAxNjMsIDksIDEzLCAyMzYsIDE2MiwgOSwgMTMsIDIzNiwgMTYxLCA5LCAxMywgMjM2LCAxNjAsIDksIDEzLCAyMzYsIDE1OSwgCi0gICAgOSwgMTMsIDIzNiwgMTU4LCA5LCAxMywgMjM2LCAxNTcsIDksIDEzLCAyMzYsIDE1NiwgOSwgMTMsIDIzNiwgMTU1LCA5LCAKLSAgICAxMywgMjM2LCAxNTQsIDksIDEzLCAyMzYsIDE1MywgOSwgMTMsIDIzNiwgMTUyLCA5LCAxMywgMjM2LCAxNTEsIDksIDEzLCAKLSAgICAyMzYsIDE1MCwgOSwgMTMsIDIzNiwgMTQ5LCA5LCAxMywgMjM2LCAxNDgsIDksIDEzLCAyMzYsIDE0NywgOSwgMTMsIDIzNiwgCi0gICAgMTQ2LCA5LCAxMywgMjM2LCAxNDUsIDksIDEzLCAyMzYsIDE0NCwgOSwgMTMsIDIzNiwgMTQzLCA5LCAxMywgMjM2LCAxNDIsIAotICAgIDksIDEzLCAyMzYsIDE0MSwgOSwgMTMsIDIzNiwgMTQwLCA5LCAxMywgMjM2LCAxMzksIDksIDEzLCAyMzYsIDEzOCwgOSwgCi0gICAgMTMsIDIzNiwgMTM3LCA5LCAxMywgMjM2LCAxMzYsIDksIDEzLCAyMzYsIDEzNSwgOSwgMTMsIDIzNiwgMTM0LCA5LCAxMywgCi0gICAgMjM2LCAxMzMsIDksIDEzLCAyMzYsIDEzMiwgOSwgMTMsIDIzNiwgMTMxLCA5LCAxMywgMjM2LCAxMzAsIDksIDEzLCAyMzYsIAotICAgIDEyOSwgOSwgMTMsIDIzNiwgMTI4LCA5LCAxMywgMjM2LCAxMjcsIDksIDEzLCAyMzYsIDEyNiwgOSwgMTMsIDIzNiwgMTI1LCAKLSAgICA5LCAxMywgMjM2LCAxMjQsIDksIDEzLCAyMzYsIDEyMywgOSwgMTMsIDIzNiwgMTIyLCA5LCAxMywgMjM2LCAxMjEsIDksIAotICAgIDEzLCAyMzYsIDEyMCwgOSwgMTMsIDIzNiwgMTE5LCA5LCAxMywgMjM2LCAxMTgsIDksIDEzLCAyMzYsIDExNywgOSwgMTMsIAotICAgIDIzNiwgMTE2LCA5LCAxMywgMjM2LCAxMTUsIDksIDEzLCAyMzYsIDExNCwgOSwgMTMsIDIzNiwgMTEzLCA5LCAxMywgMjM2LCAKLSAgICAxMTIsIDksIDEzLCAyMzYsIDExMSwgOSwgMTMsIDIzNiwgMTEwLCA5LCAxMywgMjM2LCAxMDksIDksIDEzLCAyMzYsIDEwOCwgCi0gICAgOSwgMTMsIDIzNiwgMTA3LCA5LCAxMywgMjM2LCAxMDYsIDksIDEzLCAyMzYsIDEwNSwgOSwgMTMsIDIzNiwgMTA0LCA5LCAKLSAgICAxMywgMjM2LCAxMDMsIDksIDEzLCAyMzYsIDEwMiwgOSwgMTMsIDIzNiwgMTAxLCA5LCAxMywgMjM2LCAxMDAsIDksIDEzLCAKLSAgICAyMzYsIDk5LCA5LCAxMywgMjM2LCA5OCwgOSwgMTMsIDIzNiwgOTcsIDksIDEzLCAyMzYsIDk2LCA5LCAxMywgMjM2LCA5NSwgCi0gICAgOSwgMTMsIDIzNiwgOTQsIDksIDEzLCAyMzYsIDkzLCA5LCAxMywgMjM2LCA5MiwgOSwgMTMsIDIzNiwgOTEsIDksIDEzLCAKLSAgICAyMzYsIDkwLCA5LCAxMywgMjM2LCA4OSwgOSwgMTMsIDIzNiwgODgsIDksIDEzLCAyMzYsIDg3LCA5LCAxMywgMjM2LCA4NiwgCi0gICAgOSwgMTMsIDIzNiwgODUsIDksIDEzLCAyMzYsIDg0LCA5LCAxMywgMjM2LCA4MywgOSwgMTMsIDIzNiwgODIsIDksIDEzLCAKLSAgICAyMzYsIDgxLCA5LCAxMywgMjM2LCA4MCwgOSwgMTMsIDIzNiwgNzksIDksIDEzLCAyMzYsIDc4LCA5LCAxMywgMjM2LCA3NywgCi0gICAgOSwgMTMsIDIzNiwgNzYsIDksIDEzLCAyMzYsIDc1LCA5LCAxMywgMjM2LCA3NCwgOSwgMTMsIDIzNiwgNzMsIDksIDEzLCAKLSAgICAyMzYsIDcyLCA5LCAxMywgMjM2LCA3MSwgOSwgMTMsIDIzNiwgNzAsIDksIDEzLCAyMzYsIDY5LCA5LCAxMywgMjM2LCA2OCwgCi0gICAgOSwgMTMsIDIzNiwgNjcsIDksIDEzLCAyMzYsIDY2LCA5LCAxMywgMjM2LCA2NSwgOSwgMTMsIDIzNiwgNjQsIDksIDEzLCAKLSAgICAyMzYsIDYzLCA5LCAxMywgMjM2LCA2MiwgOSwgMTMsIDIzNiwgNjEsIDksIDEzLCAyMzYsIDYwLCA3LCAzLCAyNiwgMjQ0LCAKLSAgICA5NCwgNywgMywgMjYsIDI0NCwgOTAsIDcsIDMsIDI2LCAyNDQsIDQ1LCA3LCAzLCAyNiwgMjQ0LCA5MywgNywgMywgMjYsIAotICAgIDI0NCwgOTIsIDcsIDMsIDI2LCAxODQsIDIyMywgNCwgMjE4LCA5OSwgNywgMywgMjYsIDIxOSwgMTA3LCAxNDEsIDMsIDI2LCAKLSAgICAyMzEsIDEyMywgMjI4LCAxNTAsIDE0MSwgMywgMjYsIDIzMSwgMTIzLCAyNDUsIDE2OSwgMTQxLCAzLCAyNiwgMjMxLCAxMjMsIAotICAgIDIzNSwgMjI0LCAxNDEsIDMsIDI2LCAyMTQsIDE1NywgMjI4LCAxNTAsIDE0MSwgMywgMjYsIDIzMSwgMTIzLCAyMTMsIDE0OCwgCi0gICAgOTMsIDEsIDIxMiwgMjI1LCAyLCAyNDEsIDE0NCwgOTMsIDIyNSwgMTQ1LCAyMzUsIDUzLCAyMTQsIDI0MywgOTMsIDI2LCAKLSAgICAyMTIsIDI1MywgMjEyLCAyMjUsIDIxMiwgMjI1LCAyMjYsIDExMiwgOTMsIDEsIDI1NCwgNDgsIDI1MywgNzgsIDkzLCAxLCAKLSAgICAyMTMsIDIzMiwgMjU0LCA3OCwgOTMsIDEsIDIxMywgMjMyLCAyNDgsIDEzNCwgOTMsIDEsIDIxMywgMjMyLCAyNDEsIDIyMiwgCi0gICAgOTMsIDEsIDIxMywgMjMyLCAyMzQsIDI1NCwgOTMsIDEsIDIxMywgMjMyLCAyMzMsIDExOCwgOTMsIDEsIDIxMywgMjMyLCAKLSAgICA0MCwgMjMxLCAxMjksIDkzLCAxLCAyMTMsIDIzMiwgMjIzLCAyMTksIDkzLCAxLCAyMTMsIDIzMiwgMjE3LCAyNDUsIDkzLCAKLSAgICAxLCAyNTQsIDQ4LCA5NCwgNTIsIDkzLCAxLCAyMjAsIDIwMSwgMiwgMjIwLCAyMDEsIDI0NywgNzQsIDkzLCAxLCAyMjAsIAotICAgIDIwMSwgMiwgMjIwLCA4NSwgMjQ3LCA3NCwgOTMsIDEsIDIyMCwgMjAxLCAyLCAyNDgsIDE1MSwgMjQsIDIyMCwgMjAxLCAKLSAgICAyNDcsIDc0LCA5MywgMSwgMjIwLCAyMDEsIDIsIDI0OCwgMTUxLCAyNCwgMjIwLCA4NSwgMjQ3LCA3NCwgOTMsIDEsIDEwNiwgCi0gICAgMiwgMjI2LCAxMTIsIDkzLCAxLCAxMDYsIDIsIDIyNCwgMjIwLCA5MywgMSwgMTA2LCAyLCAyMzEsIDIzNCwgOTMsIDEsIAotICAgIDI1MSwgMjA2LCAyLCAyNDgsIDE1MCwgOTMsIDEsIDI0MiwgMTc4LCAyLCAyNDgsIDE1MCwgOTMsIDEsIDI0OCwgMTM1LCAyLCAKLSAgICAyNDgsIDE1MCwgOTMsIDEsIDI0MSwgMjIzLCAyLCAyMzEsIDIzNCwgOTMsIDEsIDIxNCwgMjM3LCAyLCAyNDgsIDE1MCwgOTMsIAotICAgIDEsIDIxMiwgOTEsIDIsIDI0OCwgMTUwLCA5MywgMSwgMjE3LCAxODQsIDIsIDI0OCwgMTUwLCA5MywgMSwgMjEyLCAyMjUsIAotICAgIDIsIDI0OCwgMTUwLCA5MywgMSwgNDAsIDIzNCwgMjU1LCAyLCAyNDgsIDE1MCwgOTMsIDEsIDIzNCwgMjU1LCAyLCAyNDgsIAotICAgIDE1MCwgOTMsIDEsIDIzMywgMTE5LCAyLCAyNDgsIDE1MCwgOTMsIDEsIDIzMSwgMTMwLCAyLCAyNDgsIDE1MCwgOTMsIDEsIAotICAgIDIyOCwgNTEsIDIsIDI0OCwgMTUwLCA5MywgMSwgMjIyLCAxNjUsIDIsIDI0OCwgMTUwLCA5MywgMSwgNDAsIDIyNiwgOTcsIAotICAgIDIsIDI0OCwgMTUwLCA5MywgMSwgMjI2LCA5NywgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMTYsIDEzOCwgMiwgMjQ4LCAxNTAsIAotICAgIDkzLCAxLCAyMjQsIDE4NSwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMjMsIDIyMCwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMjAsIAotICAgIDIwMSwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMTcsIDI0NiwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMTQsIDIzNywgMiwgMjQxLCAKLSAgICA0NywgOTMsIDEsIDI1MSwgMjA2LCAyLCAyMjQsIDU5LCA5MywgMSwgMjM0LCAyNTUsIDIsIDIyNCwgNTksIDkzLCAxLCAyMjYsIAotICAgIDk3LCAyLCAyMjQsIDU5LCA5MywgMjYsIDEwNiwgMjMzLCAxMTgsIDEyLCAxLCAxMDYsIDIxNCwgMzEsIDQ4LCAxNywgMTIsIAotICAgIDEsIDEwNiwgMjE0LCAzMSwgNDAsIDE3LCAxMiwgMSwgMjUxLCAyNDEsIDQ4LCAxNywgMTIsIDEsIDI1MSwgMjQxLCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyNTEsIDI0MSwgNzAsIDE3LCAxMiwgMSwgMjUxLCAyNDEsIDEzOCwgMTcsIDEyLCAxLCAyMjYsIDgxLCAKLSAgICA0OCwgMTcsIDEyLCAxLCAyMjYsIDgxLCA0MCwgMTcsIDEyLCAxLCAyMjYsIDgxLCA3MCwgMTcsIDEyLCAxLCAyMjYsIDgxLCAKLSAgICAxMzgsIDE3LCAxMiwgMSwgMjUxLCAyMjksIDQ4LCAxNywgMTIsIDEsIDI1MSwgMjI5LCA0MCwgMTcsIDEyLCAxLCAyNTEsIAotICAgIDIyOSwgNzAsIDE3LCAxMiwgMSwgMjUxLCAyMjksIDEzOCwgMTcsIDEyLCAxLCAyMTYsIDEwOCwgNDgsIDE3LCAxMiwgMSwgCi0gICAgMjE2LCAxMDgsIDQwLCAxNywgMTIsIDEsIDIxNiwgMTA4LCA3MCwgMTcsIDEyLCAxLCAyMTYsIDEwOCwgMTM4LCAxNywgMTIsIAotICAgIDEsIDIxNywgMjE0LCA0OCwgMTcsIDEyLCAxLCAyMTcsIDIxNCwgNDAsIDE3LCAxMiwgMSwgMjE3LCAyMTQsIDcwLCAxNywgCi0gICAgMTIsIDEsIDIxNywgMjE0LCAxMzgsIDE3LCAxMiwgMSwgMjE2LCAxMTAsIDQ4LCAxNywgMTIsIDEsIDIxNiwgMTEwLCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyMTYsIDExMCwgNzAsIDE3LCAxMiwgMSwgMjE2LCAxMTAsIDEzOCwgMTcsIDEyLCAxLCAyMTQsIDIyNiwgCi0gICAgNDgsIDE3LCAxMiwgMSwgMjE0LCAyMjYsIDQwLCAxNywgMTIsIDEsIDIxNCwgMjI2LCA3MCwgMTcsIDEyLCAxLCAyMTQsIAotICAgIDIyNiwgMTM4LCAxNywgMTIsIDEsIDIyNiwgNzksIDQ4LCAxNywgMTIsIDEsIDIyNiwgNzksIDQwLCAxNywgMTIsIDEsIDIyNiwgCi0gICAgNzksIDcwLCAxNywgMTIsIDEsIDIyNiwgNzksIDEzOCwgMTcsIDEyLCAxLCAyNDUsIDI1NSwgNDgsIDE3LCAxMiwgMSwgMjQ1LCAKLSAgICAyNTUsIDQwLCAxNywgMTIsIDEsIDI0NSwgMjU1LCA3MCwgMTcsIDEyLCAxLCAyNDUsIDI1NSwgMTM4LCAxNywgMTIsIDEsIAotICAgIDIyOCwgMTUsIDQ4LCAxNywgMTIsIDEsIDIyOCwgMTUsIDQwLCAxNywgMTIsIDEsIDIyOCwgMTUsIDcwLCAxNywgMTIsIDEsIAotICAgIDIyOCwgMTUsIDEzOCwgMTcsIDEyLCAxLCAyMTcsIDIzNCwgNDgsIDE3LCAxMiwgMSwgMjE3LCAyMzQsIDQwLCAxNywgMTIsIAotICAgIDEsIDIxNywgMjM0LCA3MCwgMTcsIDEyLCAxLCAyMTcsIDIzNCwgMTM4LCAxNywgMTIsIDEsIDIxNywgMjMyLCA0OCwgMTcsIAotICAgIDEyLCAxLCAyMTcsIDIzMiwgNDAsIDE3LCAxMiwgMSwgMjE3LCAyMzIsIDcwLCAxNywgMTIsIDEsIDIxNywgMjMyLCAxMzgsIAotICAgIDE3LCAxMiwgMSwgMjQ4LCA4NCwgNDgsIDE3LCAxMiwgMSwgMjQ4LCA4NCwgNDAsIDE3LCAxMiwgMSwgMjQ4LCAxNDcsIDQ4LCAKLSAgICAxNywgMTIsIDEsIDI0OCwgMTQ3LCA0MCwgMTcsIDEyLCAxLCAyNDYsIDI2LCA0OCwgMTcsIDEyLCAxLCAyNDYsIDI2LCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyNDgsIDgyLCA0OCwgMTcsIDEyLCAxLCAyNDgsIDgyLCA0MCwgMTcsIDEyLCAxLCAyMzUsIDEyMiwgNDgsIAotICAgIDE3LCAxMiwgMSwgMjM1LCAxMjIsIDQwLCAxNywgMTIsIDEsIDIyMywgNzgsIDQ4LCAxNywgMTIsIDEsIDIyMywgNzgsIDQwLCAKLSAgICAxNywgMTIsIDEsIDIzNCwgMTgxLCA0OCwgMTcsIDEyLCAxLCAyMzQsIDE4MSwgNDAsIDE3LCAxMiwgMSwgMjM0LCAxODEsIAotICAgIDcwLCAxNywgMTIsIDEsIDIzNCwgMTgxLCAxMzgsIDE3LCAxMiwgMSwgMjQzLCA5OCwgNDgsIDE3LCAxMiwgMSwgMjQzLCA5OCwgCi0gICAgNDAsIDE3LCAxMiwgMSwgMjQzLCA5OCwgNzAsIDE3LCAxMiwgMSwgMjQzLCA5OCwgMTM4LCAxNywgMTIsIDEsIDI0MiwgODMsIAotICAgIDQ4LCAxNywgMTIsIDEsIDI0MiwgODMsIDQwLCAxNywgMTIsIDEsIDI0MiwgODMsIDcwLCAxNywgMTIsIDEsIDI0MiwgODMsIAotICAgIDEzOCwgMTcsIDEyLCAxLCAyMjksIDg5LCA0OCwgMTcsIDEyLCAxLCAyMjksIDg5LCA0MCwgMTcsIDEyLCAxLCAyMjksIDg5LCAKLSAgICA3MCwgMTcsIDEyLCAxLCAyMjksIDg5LCAxMzgsIDE3LCAxMiwgMSwgMjI4LCAxNzQsIDI0MiwgMTk1LCA0OCwgMTcsIDEyLCAKLSAgICAxLCAyMjgsIDE3NCwgMjQyLCAxOTUsIDQwLCAxNywgMTIsIDEsIDIyMywgMTE2LCA0OCwgMTcsIDEyLCAxLCAyMjMsIDExNiwgCi0gICAgNDAsIDE3LCAxMiwgMSwgMjIzLCAxMTYsIDcwLCAxNywgMTIsIDEsIDIyMywgMTE2LCAxMzgsIDE3LCAxMiwgMSwgMjQxLCAKLSAgICAyMDMsIDIsIDczLCA3OCwgNDgsIDE3LCAxMiwgMSwgMjQxLCAyMDMsIDIsIDczLCA3OCwgNDAsIDE3LCAxMiwgMSwgMjQxLCAKLSAgICAyMDMsIDI0MiwgMTQ4LCA0OCwgMTcsIDEyLCAxLCAyNDEsIDIwMywgMjQyLCAxNDgsIDQwLCAxNywgMTIsIDEsIDI0MSwgCi0gICAgMjAzLCAyNDIsIDE0OCwgNzAsIDE3LCAxMiwgMSwgMjQxLCAyMDMsIDI0MiwgMTQ4LCAxMzgsIDE3LCAxMiwgMSwgMjQxLCAKLSAgICAyMDMsIDI0NywgOTYsIDQ4LCAxNywgMTIsIDEsIDI0MSwgMjAzLCAyNDcsIDk2LCA0MCwgMTcsIDEyLCAxLCAyNDEsIDIwMywgCi0gICAgMjQ3LCA5NiwgNzAsIDE3LCAxMiwgMSwgMjQxLCAyMDMsIDI0NywgOTYsIDEzOCwgMTcsIDEyLCAxLCA3MywgMjUyLCA1MywgCi0gICAgNDgsIDE3LCAxMiwgMSwgNzMsIDI1MiwgNTMsIDQwLCAxNywgMTIsIDEsIDczLCAyNTIsIDUzLCAyLCAxOTIsIDc4LCA0OCwgCi0gICAgMTcsIDEyLCAxLCA3MywgMjUyLCA1MywgMiwgMTkyLCA3OCwgNDAsIDE3LCAxMiwgMTYsIDYyLCA0OSwgMTIsIDE2LCA2MiwgCi0gICAgNTUsIDEyLCAxNiwgMTE3LCAxNzYsIDQ5LCAxMiwgMTYsIDExNywgMTc2LCA1NSwgMTIsIDE2LCAxMzMsIDE3NiwgNDksIDEyLCAKLSAgICAxNiwgMTMzLCAxNzYsIDU1LCAxMiwgMTYsIDEzMywgMTc2LCAyMjUsIDE0MSwgMjQ2LCA1OCwgNDksIDEyLCAxNiwgMTMzLCAKLSAgICAxNzYsIDIyNSwgMTQxLCAyNDYsIDU4LCA1NSwgMTIsIDE2LCAyNDMsIDIzNywgMTc2LCA0OSwgMTIsIDE2LCAyNDMsIDIzNywgCi0gICAgMTc2LCA1NSwgMTIsIDE2LCA1MSwgNzEsIDI1MiwgNjAsIDU1LCAxMiwgMTYsIDExNywgMTc2LCAyMTQsIDE2NiwgNDksIDEyLCAKLSAgICAxNiwgMTE3LCAxNzYsIDIxNCwgMTY2LCA1NSwgMTIsIDE2LCAyMjMsIDEzMCwgMTIsIDE2LCAzLCAyMTgsIDMwLCA0OSwgMTIsIAotICAgIDE2LCAzLCAyMTgsIDMwLCA1NSwgMTIsIDEsIDIyOSwgMTYyLCA0OCwgMTcsIDEyLCAxLCAyMjksIDE2MiwgNDAsIDE3LCAxMiwgCi0gICAgMSwgMjI5LCAxNjIsIDcwLCAxNywgMTIsIDEsIDIyOSwgMTYyLCAxMzgsIDE3LCAxMiwgMSwgMTExLCA0OCwgMTcsIDEyLCAxLCAKLSAgICAxMTEsIDQwLCAxNywgMTIsIDEsIDIyNywgMTAwLCA0OCwgMTcsIDEyLCAxLCAyMjcsIDEwMCwgNDAsIDE3LCAxMiwgMSwgCi0gICAgMjEyLCAyMDQsIDQ4LCAxNywgMTIsIDEsIDIxMiwgMjA0LCA0MCwgMTcsIDEyLCAxLCAxMTEsIDIsIDE5MiwgNzgsIDQ4LCAKLSAgICAxNywgMTIsIDEsIDIxNCwgMjMzLCA0OCwgMTcsIDEyLCAxLCAyMTQsIDIzMywgNDAsIDE3LCAxMiwgMSwgMjM0LCA4MiwgCi0gICAgMjI3LCAxMDAsIDQ4LCAxNywgMTIsIDEsIDIzNCwgODIsIDIyNywgMTAwLCA0MCwgMTcsIDEyLCAxLCAyMzQsIDgyLCAyMTIsIAotICAgIDIwNCwgNDgsIDE3LCAxMiwgMSwgMjM0LCA4MiwgMjEyLCAyMDQsIDQwLCAxNywgMTIsIDEsIDE5MSwgNDgsIDE3LCAxMiwgMSwgCi0gICAgMTkxLCA0MCwgMTcsIDEyLCAxLCAxOTEsIDcwLCAxNywgMTIsIDEsIDE5MSwgMTM4LCAxNywgMTIsIDEsIDIxNSwgMTc3LCAKLSAgICAyMzQsIDE5MiwgMjM0LCA4MiwgMTA2LCAyMTAsIDcwLCAxNywgMTIsIDEsIDIxNSwgMTc3LCAyMzQsIDE5MiwgMjM0LCA4MiwgCi0gICAgMTA2LCAyMTAsIDEzOCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDEwNiwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAKLSAgICAxOTIsIDc4LCAyLCAxMDYsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjU0LCAxNDksIDQ4LCAxNywgMTIsIAotICAgIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjU0LCAxNDksIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjE0LCAKLSAgICAxNSwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAyMTQsIDE1LCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIAotICAgIDE5MiwgNzgsIDIsIDExMSwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAxMTEsIDQwLCAxNywgMTIsIDI2LCAKLSAgICA3MywgMiwgMTkyLCA3OCwgMiwgMjI3LCAxMDAsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjI3LCAxMDAsIAotICAgIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjEyLCAyMDQsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCAKLSAgICA3OCwgMiwgMjEyLCAyMDQsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMTkxLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgNzMsIDIsIDE5MiwgNzgsIDIsIDE5MSwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAxOTEsIDcwLCAxNywgCi0gICAgMTIsIDI2LCAyMTUsIDE3NywgMjM0LCA4MiwgNzMsIDIsIDE5MiwgNzgsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgMjE1LCAxNzcsIDIzNCwgODIsIDczLCAyLCAxOTIsIDc4LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIxNSwgMTc3LCAKLSAgICAyMzQsIDgyLCA3MywgMiwgMTkyLCA3OCwgMiwgMTA2LCAyMTAsIDcwLCAxNywgMTIsIDEsIDI0NCwgMTM2LCA3MywgNDgsIAotICAgIDE3LCAxMiwgMSwgMjQ0LCAxMzYsIDczLCA0MCwgMTcsIDEyLCAxLCAyNDQsIDEzNiwgNzMsIDcwLCAxNywgMTIsIDEsIDI0NCwgCi0gICAgMTM2LCA3MywgMTM4LCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIAotICAgIDE5MiwgNzgsIDIsIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIAotICAgIDczLCAyLCAxOTIsIDc4LCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCA3MywgNDgsIAotICAgIDE3LCAxMiwgMjYsIDI1MSwgMjMxLCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgMTIxLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDIzNCwgMTM2LCA0OCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDYzLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDczLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAxMjEsIDQ4LCAxNywgMTIsIAotICAgIDI2LCAyMTcsIDIxNiwgMiwgMjM0LCAxMzYsIDQ4LCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgNjMsIDQ4LCAxNywgMTIsIAotICAgIDI2LCAyMTcsIDIxNiwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgNzMsIDQ4LCAxNywgMTIsIAotICAgIDI2LCAyMTcsIDE0NiwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgMjE3LCAxNDYsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgMTQ1LCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCAxNDUsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMTIxLCAyLCAxNDUsIDQ4LCAKLSAgICAxNywgMTIsIDI2LCAxMjEsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjM0LCAxMzYsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIAotICAgIDIzNCwgMTM2LCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDEzNiwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIAotICAgIDg2LCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAKLSAgICAyMzQsIDEzNiwgNDgsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIAotICAgIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAxNDUsIAotICAgIDQ4LCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMTIxLCA0OCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDIzNCwgMTM2LCAKLSAgICA0OCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjE4LCAzMCwgMiwgMTIxLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjE4LCAzMCwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyMTIsIDEwNSwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAKLSAgICAyNTQsIDEwNCwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjQyLCAKLSAgICAyMjEsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDI0MiwgMjIxLCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAKLSAgICAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyNDQsIDExMiwgMiwgMTIxLCA0OCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIAotICAgIDIzNCwgMTM2LCA0OCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIAotICAgIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIAotICAgIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAyLCAxMDYsIAotICAgIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAxMDYsIAotICAgIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDEyMSwgNDgsIAotICAgIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAyMzQsIDEzNiwgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAyMzMsIDEyNywgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAxMDYsIDIxMCwgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxNDUsIDQ4LCAKLSAgICAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTIxLCA0OCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDIzNCwgMTM2LCA0OCwgCi0gICAgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEwNiwgMjEwLCA0OCwgCi0gICAgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgNjMsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIAotICAgIDYzLCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCA2MywgMiwgMjM0LCAxMzYsIDQ4LCAxNywgMTIsIDI2LCA2MywgMiwgNjMsIAotICAgIDQ4LCAxNywgMTIsIDI2LCA2MywgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCA2MywgMiwgNzMsIDQ4LCAxNywgMTIsIAotICAgIDI2LCAyMjgsIDE3NCwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDEyMSwgNDgsIDE3LCAxMiwgMjYsIAotICAgIDIyOCwgMTc0LCAyLCAyMzQsIDEzNiwgNDgsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIAotICAgIDIyOCwgMTc0LCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIAotICAgIDI0MSwgMjAzLCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyNDEsIDIwMywgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyNDEsIAotICAgIDIwMywgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyNDEsIDIwMywgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgCi0gICAgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAyMzQsIDEzNiwgNDgsIDE3LCAKLSAgICAxMiwgMjYsIDczLCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDczLCAKLSAgICAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDIxNywgMTU2LCAyLCAyMTgsIDIyMywgMTA2LCA0OCwgMTcsIDEyLCAyNiwgMjIzLCAKLSAgICAyNDYsIDIsIDIxOCwgMjIzLCAxMDYsIDQ4LCAxNywgMTIsIDI2LCAxMDYsIDIxMCwgMiwgMjE4LCAyMjMsIDEwNiwgNDgsIAotICAgIDE3LCAxMiwgMjYsIDIyMSwgMTYsIDIsIDI0OCwgMTI4LCA0OCwgMTcsIDEyLCAyNiwgMjIxLCAxNiwgMiwgMjM0LCAyMDksIAotICAgIDQ4LCAxNywgMTIsIDI2LCAyMjEsIDE2LCAyLCAyNDQsIDEzNCwgNDgsIDE3LCAxMiwgMjYsIDIyMSwgMTYsIDIsIDI0OCwgCi0gICAgMTMwLCA0OCwgMTcsIDEyLCAyNiwgMjIxLCAxNiwgMiwgMjM0LCAyMTEsIDQ4LCAxNywgMTIsIDI2LCAyMjEsIDE2LCAyLCAKLSAgICAyMTgsIDIyMywgMTA2LCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDIxMiwgMTAyLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDYzLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDIyOCwgMTc0LCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgCi0gICAgNzgsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjUxLCAyMzEsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDIxMiwgMTAyLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjUxLCAyMzEsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDIyOCwgMTc0LCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjUxLCAyMzEsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDczLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjE3LCAyMTYsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDIxMiwgMTAyLCA0MCwgMTcsIAotICAgIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDIyOCwgMTc0LCA0MCwgMTcsIAotICAgIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDczLCA0MCwgMTcsIAotICAgIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDIxMiwgMTAyLCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDIyOCwgMTc0LCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDczLCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDczLCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDczLCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDEwNiwgNDAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAyMzMsIDEyNywgNDAsIAotICAgIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAxMDYsIDIxMCwgNDAsIAotICAgIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCA2MywgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDIzMywgMTI3LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCA3MywgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDYzLCAyLCAxMDYsIDQwLCAxNywgMTIsIDI2LCA2MywgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgCi0gICAgMjIzLCAyNDYsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMjEyLCAxMDIsIDQwLCAxNywgMTIsIDI2LCAyMjgsIAotICAgIDE3NCwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMjI4LCAxNzQsIDQwLCAxNywgMTIsIDI2LCAyMjgsIAotICAgIDE3NCwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAxMDYsIAotICAgIDIxMCwgMiwgMjE4LCAyMjMsIDEwNiwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgMjYsIAotICAgIDczLCAyLCAyMTIsIDEwMiwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAyMjgsIAotICAgIDE3NCwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCA3MywgNDAsIDE3LCAKLSAgICAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMTIxLCAKLSAgICA3MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgCi0gICAgNzgsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDI0MSwgMjAzLCA3MCwgMTcsIDEyLCAyNiwgCi0gICAgMjUxLCAyMzEsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDI1MSwgMjMxLCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAyNTEsIAotICAgIDIzMSwgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyNTEsIAotICAgIDIzMSwgMiwgMjQxLCAyMDMsIDcwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjE3LCAKLSAgICAyMTYsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDIxNywgCi0gICAgMjE2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAyNDEsIDIwMywgNzAsIDE3LCAxMiwgMjYsIDIxNywgCi0gICAgMTQ2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDE0NSwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCA2MywgNzAsIAotICAgIDE3LCAxMiwgMjYsIDEyMSwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMTIxLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIzNCwgCi0gICAgMTM2LCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMzQsIDEzNiwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAKLSAgICAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAyMzQsIAotICAgIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDEyMSwgCi0gICAgNzAsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCA2MywgCi0gICAgNzAsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMTIxLCA3MCwgCi0gICAgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDYzLCA3MCwgCi0gICAgMTcsIDEyLCAyNiwgMjE4LCAzMCwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjEyLCAxMDUsIDIsIDYzLCA3MCwgMTcsIDEyLCAKLSAgICAyNiwgMjU0LCAxMDQsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIAotICAgIDI0MiwgMjIxLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyNDIsIDIyMSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyNDQsIAotICAgIDExMiwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAKLSAgICAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAKLSAgICAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAyMjQsIDIyNiwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgCi0gICAgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAyMzQsIAotICAgIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAyMzMsIDEyNywgNzAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAKLSAgICA2MywgNzAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTIxLCAKLSAgICA3MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDYzLCAKLSAgICA3MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDI0MSwgMjAzLCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDE0NSwgNzAsIAotICAgIDE3LCAxMiwgMjYsIDYzLCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCA2MywgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCAKLSAgICA2MywgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIAotICAgIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAKLSAgICA2MywgNzAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAyNDEsIDIwMywgNzAsIDE3LCAxMiwgMjYsIDI0MSwgMjAzLCAyLCAKLSAgICAxNDUsIDcwLCAxNywgMTIsIDI2LCAyNDEsIDIwMywgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyNDEsIDIwMywgMiwgMjE4LCAKLSAgICAyMjMsIDEwNiwgNzAsIDE3LCAxMiwgMjYsIDczLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCA3MywgMiwgMTIxLCA3MCwgMTcsIAotICAgIDEyLCAyNiwgNzMsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgNzMsIAotICAgIDIsIDI0MSwgMjAzLCA3MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDYzLCAxMzgsIDE3LCAxMiwgMjYsIDczLCAKLSAgICAyLCAxOTIsIDc4LCAyLCAyNDEsIDIwMywgMTM4LCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgNjMsIDEzOCwgMTcsIDEyLCAKLSAgICAyNiwgMjUxLCAyMzEsIDIsIDI0MSwgMjAzLCAxMzgsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCA2MywgMTM4LCAxNywgMTIsIAotICAgIDI2LCAyMTcsIDIxNiwgMiwgMjQxLCAyMDMsIDEzOCwgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDYzLCAxMzgsIDE3LCAxMiwgCi0gICAgMjYsIDIxNywgMTQ2LCAyLCAyNDEsIDIwMywgMTM4LCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCA2MywgMTM4LCAxNywgMTIsIAotICAgIDI2LCAyMjIsIDg2LCAyLCAyNDEsIDIwMywgMTM4LCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgNjMsIDEzOCwgMTcsIDEyLCAKLSAgICAyNiwgMjIwLCAyNDAsIDIsIDI0MSwgMjAzLCAxMzgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAyMzMsIDEyNywgMTM4LCAKLSAgICAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgNjMsIDEzOCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDYzLCAxMzgsIDE3LCAKLSAgICAxMiwgMjYsIDIyOCwgMTc0LCAyLCA2MywgMTM4LCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMjQxLCAyMDMsIDEzOCwgMTcsIAotICAgIDEyLCAyNiwgNzMsIDIsIDYzLCAxMzgsIDE3LCAxMiwgMjYsIDczLCAyLCAyNDEsIDIwMywgMTM4LCAxNywgMTIsIDI2LCAKLSAgICAyMjEsIDE2LCAyLCAyNDQsIDEzNCwgMTM4LCAxNywgMTIsIDI2LCAyMjEsIDE2LCAyLCAyNDgsIDEzMCwgMTM4LCAxNywgMTIsIAotICAgIDI2LCAyMjEsIDE2LCAyLCAyMzQsIDIxMSwgMTM4LCAxNywgMTIsIDI2LCAyMTgsIDMwLCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAKLSAgICAxMiwgMjYsIDIxOCwgMzAsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMjQyLCAyMjEsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjQyLCAyMjEsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgCi0gICAgMTIsIDI2LCAyMjIsIDg2LCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAKLSAgICAxMiwgMjYsIDIyMCwgMjQwLCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDEyMSwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIAotICAgIDI2LCAxMjEsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDE0NSwgMiwgCi0gICAgNzMsIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDEzNiwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDEzNiwgMiwgCi0gICAgNzMsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDE5NiwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDE5NiwgMiwgCi0gICAgNzMsIDQ4LCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgCi0gICAgNzMsIDQ4LCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDEyMSwgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAyMzQsIDEzNiwgNDgsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCA2MywgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAyMjMsIDI0NiwgNDgsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDIyMywgCi0gICAgMjQ2LCA0OCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDIyMywgMjQ2LCA0OCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIAotICAgIDIyMywgMjQ2LCA0OCwgMTcsIDEyLCAyNiwgMjE4LCAzMCwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMTgsIDMwLCAKLSAgICAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAKLSAgICAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDI0MiwgMjIxLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDI0MiwgMjIxLCAKLSAgICAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgCi0gICAgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgCi0gICAgNzMsIDQwLCAxNywgMTIsIDI2LCAxMjEsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMTIxLCAyLCA3MywgNDAsIDE3LCAKLSAgICAxMiwgMjYsIDE0NSwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAxNDUsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjM0LCAxMzYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjM0LCAxMzYsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjIyLCAxOTYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjQ4LCAxNjAsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjIwLCAyNDAsIDIsIDE0NSwgNDAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAxMjEsIDQwLCAxNywgMTIsIDI2LCAyMjAsIAotICAgIDI0MCwgMiwgMjM0LCAxMzYsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjAsIAotICAgIDI0MCwgMiwgMjIzLCAyNDYsIDQwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgMjYsIAotICAgIDIyMiwgMTk2LCAyLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDIyMCwgMjQwLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgCi0gICAgMjIwLCAyNDAsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgCi0gICAgMjIyLCA4NiwgMiwgMjQxLCAyMDMsIDcwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMjQxLCAyMDMsIDcwLCAxNywgMTIsIAotICAgIDI2LCAyMTgsIDMwLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDE0NSwgMTM4LCAxNywgMTIsIDI2LCAKLSAgICAyMjIsIDg2LCAyLCAxMjEsIDEzOCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMjM0LCAxMzYsIDEzOCwgMTcsIDEyLCAyNiwgCi0gICAgMjIwLCAyNDAsIDIsIDE0NSwgMTM4LCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMTIxLCAxMzgsIDE3LCAxMiwgMjYsIAotICAgIDIyMCwgMjQwLCAyLCAyMzQsIDEzNiwgMTM4LCAxNywgMTIsIDI2LCAyMTgsIDMwLCAyLCA2MywgMTM4LCAxNywgMTIsIDI2LCAKLSAgICAyMTIsIDEwNSwgMiwgNjMsIDEzOCwgMTcsIDEyLCAyNiwgMTA2LCAyLCAyNDQsIDEzMiwgNDAsIDE3LCAxMiwgMjYsIDEwNiwgCi0gICAgMiwgMjQ0LCAxMzIsIDQ4LCAxNywgMjI3LCAxMywgNDIsIDIyNiwgMTMxLCAyMjcsIDEzLCA0NiwgMjI2LCAxMzEsIDEyLCAKLSAgICAyNiwgMjE3LCAyMTYsIDIsIDE0NSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMTIxLCAyLCAxNDUsIAotICAgIDQwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMTIxLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgCi0gICAgMTIxLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAyMzQsIDEzNiwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAKLSAgICAyMTcsIDIxNiwgMiwgNjMsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCA2MywgMiwgMTIxLCA3MCwgMTcsIAotICAgIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDYzLCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDE0NSwgMiwgNjMsIDIsIDEyMSwgCi0gICAgNDAsIDE3LCAxMiwgMjYsIDE0NSwgMiwgNjMsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDEyMSwgMiwgNjMsIDIsIDczLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgMTIxLCAyLCA2MywgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAxMjEsIAotICAgIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDE0NSwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgCi0gICAgMiwgMTQ1LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDYzLCAyLCAxMjEsIDQwLCAxNywgMTIsIAotICAgIDI2LCAyMjIsIDg2LCAyLCA2MywgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgNjMsIDIsIDE0NSwgNzAsIAotICAgIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDYzLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDYzLCAyLCA2MywgCi0gICAgNzAsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCAxMjEsIDIsIDEyMSwgNDAsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCAKLSAgICAxMjEsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCA2MywgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjAsIAotICAgIDI0MCwgMiwgMTIxLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAxMjEsIDIsIDYzLCA3MCwgMTcsIDEyLCAKLSAgICAyNiwgMjIwLCAyNDAsIDIsIDE0NSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgNjMsIDIsIDIzNCwgCi0gICAgMTM2LCA0MCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDYzLCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDIyMCwgCi0gICAgMjQwLCAyLCA2MywgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgNjMsIDIsIDYzLCA3MCwgMTcsIDEyLCAKLSAgICAyNiwgMjQ4LCAxNjAsIDIsIDEyMSwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMjM0LCAxMzYsIAotICAgIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDIzNCwgMTM2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIxOCwgCi0gICAgMzAsIDIsIDYzLCAyLCAxMjEsIDQwLCAxNywgMTIsIDI2LCAyMTgsIDMwLCAyLCA2MywgMiwgMTIxLCA3MCwgMTcsIDEyLCAKLSAgICAyNiwgMjE4LCAzMCwgMiwgNjMsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjE4LCAzMCwgMiwgNjMsIDIsIDczLCA0MCwgMTcsIAotICAgIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDE0NSwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyNTQsIDEwNCwgMiwgNjMsIDIsIDYzLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDYzLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAyLCA2MywgCi0gICAgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyNDIsIDIyMSwgMiwgNjMsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjQyLCAKLSAgICAyMjEsIDIsIDYzLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDI0MiwgMjIxLCAyLCA2MywgMiwgMTA2LCAyMTAsIDQwLCAxNywgCi0gICAgMTIsIDI2LCAyNDQsIDExMiwgMiwgMjM0LCAxMzYsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDIzNCwgCi0gICAgMTM2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAyLCA2MywgMiwgMTIxLCA0MCwgMTcsIDEyLCAyNiwgMjI0LCAKLSAgICAyMjYsIDIsIDYzLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMjEsIDIsIDYzLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjMzLCAxMjcsIDIsIDEyMSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTIxLCAyLCAxMDYsIAotICAgIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxNDUsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAKLSAgICAyLCAxNDUsIDIsIDE0NSwgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAyMzQsIDEzNiwgMiwgNjMsIDQwLCAxNywgMTIsIAotICAgIDI2LCAyMzMsIDEyNywgMiwgMjM0LCAxMzYsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDYzLCAyLCAKLSAgICAxMjEsIDQwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgNjMsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDYzLCAyLCAxMjEsIAotICAgIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDYzLCAyLCAxMjEsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDEyMSwgMiwgCi0gICAgNzMsIDQwLCAxNywgMTIsIDI2LCA2MywgMiwgMTQ1LCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCA2MywgMiwgMTQ1LCAyLCAKLSAgICA2MywgNzAsIDE3LCAxMiwgMjYsIDYzLCAyLCAyMzQsIDEzNiwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDIzNCwgCi0gICAgMTM2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDYzLCAyLCAxNDUsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjQxLCAKLSAgICAyMDMsIDIsIDYzLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyNDEsIDIwMywgMiwgNjMsIDIsIDYzLCA3MCwgMTcsIDEyLCAKLSAgICAyNiwgMjI4LCAxNzQsIDIsIDEyMSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMTIxLCAyLCAxMDYsIAotICAgIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAxNDUsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIAotICAgIDIsIDE0NSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMTQ1LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDIyOCwgMTc0LCAyLCA2MywgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgNjMsIDIsIDEwNiwgMjEwLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDYzLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCA2MywgMiwgNjMsIDcwLCAKLSAgICAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgMjM0LCAxMzYsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIAotICAgIDE0NSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMTQ1LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDIxNywgMjE2LCAyLCAyMzQsIDEzNiwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMjM0LCAxMzYsIAotICAgIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDYzLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIxNywgCi0gICAgMjE2LCAyLCA2MywgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAxNDUsIDIsIDYzLCAyLCA3MywgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDE0NSwgMiwgMTIxLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDE0NSwgMiwgNjMsIDIsIDEwNiwgMjEwLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMjM0LCAxMzYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjIyLCAKLSAgICAxOTYsIDIsIDEyMSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMTIxLCAyLCA3MywgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDI0OCwgMTYwLCAyLCAxMjEsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDE0NSwgMiwgNzMsIDQwLCAKLSAgICAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgNjMsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDEyMSwgMiwgNzMsIAotICAgIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTQ1LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCA2MywgMiwgNzMsIDQwLCAKLSAgICAxNywgMTIsIDI2LCA2MywgMiwgNjMsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDYzLCAyLCA3MywgNDAsIAotICAgIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAxMjEsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDYzLCAyLCAKLSAgICAxMjEsIDcwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTIxLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAKLSAgICAyLCA2MywgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgNjMsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjI4LCAxNzQsIDIsIDE0NSwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDIzNCwgMTM2LCAyLCA3MywgNDAsIDE3LCAKLSAgICAxMiwgMjYsIDIzMywgMTI3LCAyLCAxNDUsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDYzLCAyLCA2MywgCi0gICAgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxNDUsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIAotICAgIDE0NSwgMiwgMTIxLCA0MCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCAxMjEsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMTIxLCAyLCAKLSAgICAxNDUsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDE0NSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyNDQsIDExMiwgCi0gICAgMiwgNjMsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDEyMSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAKLSAgICAyMzQsIDI1NSwgMiwgNjMsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDE0NSwgMiwgNjMsIDcwLCAxNywgCi0gICAgMTIsIDI2LCAyMjIsIDE5NiwgMiwgNjMsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMjM0LCAxMzYsIDIsIAotICAgIDczLCA0MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDE0NSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjIsIDE3NSwgCi0gICAgMjE1LCAxMDIsIDI1MywgMTUzLCAyMzQsIDEzLCAyMTksIDcwLCA1LCA0OCwgMTcsIDEyLCAyNiwgMjI0LCAyMjIsIDIxNSwgCi0gICAgMTAyLCAyNTMsIDE1MywgMjM0LCAxMywgMjE5LCA3MCwgNSwgNDgsIDE3LCAxMiwgMjYsIDI1NCwgNjIsIDQ4LCAxNywgMTIsIAotICAgIDI2LCAyNTQsIDkxLCA0OCwgMTcsIDEyLCAyNiwgMjMwLCAyMjMsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDE3NiwgNDgsIDE3LCAKLSAgICAxMiwgMjYsIDIyNCwgMzUsIDQ4LCAxNywgMTIsIDI2LCAyNTQsIDgwLCA0OCwgMTcsIDEyLCAyNiwgMjE0LCAzMywgNDgsIAotICAgIDE3LCAxMiwgMjYsIDIyMiwgMTc1LCA0OCwgMTcsIDEyLCAyNiwgMjIyLCAxNzQsIDI1NCwgODAsIDIxNCwgMzIsIDEyLCAyNiwgCi0gICAgMjM1LCAxMzQsIDIyMywgMTg3LCA1MiwgMTIsIDI2LCAyNTEsIDE1MywgMjUzLCAyMDksIDI1MywgMjEwLCA0MywgMjIyLCAKLSAgICA3NiwgNDMsIDIyMSwgMjIxLCA0MywgMjIxLCAxNTMsIDQzLCAyMjEsIDE0MiwgNDMsIDIyMSwgMTMxLCA0MywgMjIxLCAxMjAsIAotICAgIDQzLCAyMjEsIDEwOSwgNDMsIDIyMSwgOTgsIDQzLCAyMjEsIDg3LCA0MywgMjIyLCA3NSwgNDMsIDIyMiwgNjQsIDQzLCAKLSAgICAyMjIsIDUzLCA0MywgMjIyLCA0MiwgNDMsIDIyMiwgMzEsIDQzLCAyMjIsIDIwLCA0MywgMjIyLCA5LCAyMjUsIDc0LCAyNDMsIAotICAgIDI0NSwgMzEsIDcxLCAyNDksIDE1NywgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgMTA1LCAyNDksIDE1NywgMjI1LCA3NCwgCi0gICAgMjQzLCAyNDUsIDMxLCA3MSwgMTA1LCAyNDMsIDIwMCwgMjE5LCA2OSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgMjQ5LCAKLSAgICAxNjQsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDIyMSwgNzAsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDI0NCwgCi0gICAgMjU0LCA3NywgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgMjI0LCAxNTgsIDc3LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIAotICAgIDcxLCA0MiwgNjcsIDIzMywgNDQsIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDYsIDY3LCAyMzMsIDQ0LCAKLSAgICAyNTEsIDgzLCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCAxOTksIDI0NSwgMTIwLCAzNywgMjYsIDQyLCAyNDIsIDksIAotICAgIDM3LCAyNiwgNDYsIDI0MiwgOSwgMzcsIDUxLCAyMTcsIDQzLCA0MiwgMjQyLCA5LCAzNywgNTEsIDIxNywgNDMsIDQ2LCAKLSAgICAyNDIsIDksIDM3LCAyMzIsIDM4LCA0MiwgMjQyLCA5LCAzNywgMjMyLCAzOCwgNDYsIDI0MiwgOSwgMzcsIDI0OSwgMTM3LCAKLSAgICAyMzIsIDM3LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCAxMTcsIDYyLCAyMzMsIDgwLCAyMjUsIDc0LCAyNDMsIDI0NSwgCi0gICAgMzEsIDcxLCAyNDUsIDExOCwgMjQ4LCAxMDEsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDI0NSwgMTA5LCAyNDgsIAotICAgIDEwMSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgMTE1LCAyMzIsIDI0MiwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgCi0gICAgMjE0LCAxNiwgMTE1LCAyMzIsIDI0MiwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDIsIDIyNiwgMTMxLCAyMjUsIDc0LCAKLSAgICAyNDMsIDI0NSwgMzEsIDcxLCA0NiwgMjI2LCAxMzEsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQyLCAyNDksIDQwLCAKLSAgICAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQ2LCAyNDksIDQwLCAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgCi0gICAgNzEsIDQyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDYsIDIxNiwgMjE5LCAKLSAgICAyMjAsIDIzMywgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0MiwgODMsIDIzMywgNDQsIDEyNSwgMjI1LCA3NCwgCi0gICAgMjQzLCAyNDUsIDMxLCA3MSwgNDYsIDgzLCAyMzMsIDQ0LCAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQyLCAKLSAgICA1MSwgMjU0LCAxOSwgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0NiwgNTEsIDI1NCwgMTksIDEyNSwgMjI1LCAKLSAgICA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDIsIDI1NCwgMTksIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDYsIAotICAgIDI1NCwgMTksIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDIsIDI0OSwgMTAwLCAxMjUsIDIyNSwgNzQsIDI0MywgCi0gICAgMjQ1LCAzMSwgNzEsIDQ2LCAyNDksIDEwMCwgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0MiwgNjcsIDI0OSwgCi0gICAgMTAwLCAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQ2LCA2NywgMjQ5LCAxMDAsIDEyNSwgMjIxLCA1MiwgMjQ3LCAKLSAgICA3NCwgNjcsIDIyMSwgNTIsIDI0NywgNzQsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQyLCA0MSwgMTI1LCAyMjUsIAotICAgIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0NiwgNDEsIDEyNSwgMjQ4LCAxMDAsIDIyNiwgMjQzLCAyNTAsIDEwNiwgMjI2LCAKLSAgICAyNDMsIDIxNCwgMTYsIDIyNiwgMjQzLCA1MSwgMjE0LCAxNiwgMjI2LCAyNDMsIDI0OCwgMTAwLCAxMTUsIDIzMiwgMjQyLCAKLSAgICAyNTAsIDEwNiwgMTE1LCAyMzIsIDI0MiwgMjE0LCAxNiwgMTE1LCAyMzIsIDI0MiwgMywgMjQ5LCAxNTcsIDMsIDEwNSwgCi0gICAgMjQ5LCAxNTcsIDMsIDI0MywgMjAwLCAyMTksIDY5LCAzLCAyMjEsIDcwLCAzLCAyNDksIDE2NCwgMywgMjI0LCAxNTgsIDc3LCAKLSAgICAzLCAyNDQsIDI1NCwgNzcsIDMsIDI0NSwgMTE4LCAyNDgsIDEwMSwgMywgNDIsIDIyNiwgMTMxLCAzLCA0NiwgMjI2LCAxMzEsIAotICAgIDMsIDQyLCAyNDksIDQwLCAxMjUsIDMsIDQ2LCAyNDksIDQwLCAxMjUsIDMsIDQyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDEyNSwgCi0gICAgMywgNDYsIDIxNiwgMjE5LCAyMjAsIDIzMywgMTI1LCAzLCA1MCwgNTIsIDMsIDI1NCwgMzUsIDMsIDI1MywgMTMyLCAzLCAKLSAgICA5NCwgNTIsIDMsIDI0MCwgMTU5LCAzLCAyMzMsIDM5LCA1MiwgMywgMjQyLCAxMDcsIDUyLCAzLCAyNDUsIDYxLCA1MiwgMywgCi0gICAgMjIzLCAyMDMsIDIxOSwgMjMxLCAzLCAyNDcsIDg2LCA1MiwgMywgMjI2LCA1NywgNTIsIDMsIDI0OSwgMTU2LCAyNTMsIAotICAgIDEyMiwgMTIsIDI0NCwgMTMyLCA0OCwgMTcsIDEyLCAyMTcsIDI1MSwgMiwgMjQ0LCAxMzIsIDQ5LCAxMiwgMjQ4LCAxMjgsIAotICAgIDQ4LCAxNywgMTIsIDIxOCwgMjgsIDI0MywgMjI3LCAxMiwgMjM0LCAyMDksIDQ4LCAxNywgMTIsIDI0NCwgMTM0LCA0OCwgCi0gICAgMTcsIDEyLCAyNDQsIDEzNCwgMTM4LCAxNywgMTIsIDI0OCwgMTMwLCA0OCwgMTcsIDEyLCAyNDgsIDEzMCwgMTM4LCAxNywgCi0gICAgMTIsIDIzNCwgMjExLCA0OCwgMTcsIDEyLCAyMzQsIDIxMSwgMTM4LCAxNywgMTIsIDIyMSwgMTYsIDQ4LCAxNywgMTIsIAotICAgIDIyMSwgMTYsIDEzOCwgMTcsIDEyLCAyMTgsIDI0NywgNDgsIDE3LCAxMiwgMjE4LCAyNDcsIDEzOCwgMTcsIDEyLCAxLCAKLSAgICAxOTIsIDQ4LCAxNywgMTIsIDEsIDEwNiwgMiwgMjMyLCAzMywgNzgsIDQ4LCAxNywgMTIsIDEsIDEwNiwgMiwgMjMyLCAzMywgCi0gICAgNzgsIDQwLCAxNywgMTIsIDEsIDEwNiwgMiwgMTkyLCA3OCwgNDgsIDE3LCAxMiwgMSwgMTA2LCAyLCAxOTIsIDc4LCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyMTQsIDE1LCAyLCAxOTIsIDc4LCA0OCwgMTcsIDEyLCAxLCAyMTQsIDE1LCAyLCAxOTIsIDc4LCA0MCwgCi0gICAgMTcsIDEyLCAxLCAxMDYsIDIsIDE5MiwgMjUxLCAyMjAsIDQ4LCAxNywgMTIsIDEsIDEwNiwgMiwgMTkyLCAyNTEsIDIyMCwgCi0gICAgNDAsIDE3LCAxMiwgMSwgNzMsIDIsIDE5MiwgNzgsIDQ4LCAxNywgMTIsIDEsIDczLCAyLCAxOTIsIDc4LCA0MCwgMTcsIDEyLCAKLSAgICAxLCA3MywgMiwgMTkyLCA3OCwgNzAsIDE3LCAxMiwgMSwgNzMsIDIsIDE5MiwgNzgsIDEzOCwgMTcsIDEyLCAxLCAxMDYsIAotICAgIDQ4LCAxNywgMTIsIDEsIDEwNiwgNDAsIDE3LCAxMiwgMSwgMjUxLCAyMzEsIDQ4LCAxNywgMTIsIDEsIDI1MSwgMjMxLCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyNTEsIDIzMSwgNzAsIDE3LCAxMiwgMSwgMjUxLCAyMzEsIDEzOCwgMTcsIDEyLCAxLCAyMTcsIDIxNiwgCi0gICAgMjMxLCAyMjgsIDQ4LCAxNywgMTIsIDEsIDIxNywgMjE2LCAyMzEsIDIyOCwgNDAsIDE3LCAxMiwgMSwgMjE3LCAyMTYsIDQ4LCAKLSAgICAxNywgMTIsIDEsIDIxNywgMjE2LCA0MCwgMTcsIDEyLCAxLCAyMTcsIDIxNiwgNzAsIDE3LCAxMiwgMSwgMjE3LCAyMTYsIAotICAgIDEzOCwgMTcsIDEyLCAxLCAyMTcsIDE0NiwgNDgsIDE3LCAxMiwgMSwgMjE3LCAxNDYsIDQwLCAxNywgMTIsIDEsIDIxNywgCi0gICAgMTQ2LCA3MCwgMTcsIDEyLCAxLCAyMTcsIDE0NiwgMTM4LCAxNywgMTIsIDEsIDE0NSwgNDgsIDE3LCAxMiwgMSwgMTQ1LCAKLSAgICA0MCwgMTcsIDEyLCAxLCAxNDUsIDcwLCAxNywgMTIsIDEsIDE0NSwgMTM4LCAxNywgMTIsIDEsIDEyMSwgNDgsIDE3LCAxMiwgCi0gICAgMSwgMTIxLCA0MCwgMTcsIDEyLCAxLCAxMjEsIDcwLCAxNywgMTIsIDEsIDEyMSwgMTM4LCAxNywgMTIsIDEsIDIzNCwgMTM2LCAKLSAgICA0OCwgMTcsIDEyLCAxLCAyMzQsIDEzNiwgNDAsIDE3LCAxMiwgMSwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDEsIDIzNCwgCi0gICAgMTM2LCAxMzgsIDE3LCAxMiwgMSwgMjQ4LCAxNDEsIDQ4LCAxNywgMTIsIDEsIDI0OCwgMTQxLCA0MCwgMTcsIDEyLCAxLCAKLSAgICAyMTcsIDE1NiwgNDgsIDE3LCAxMiwgMSwgMjE3LCAxNTYsIDQwLCAxNywgMTIsIDEsIDIyMywgMjQ2LCA0OCwgMTcsIDEyLCAKLSAgICAxLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgMSwgMjEyLCAxMDIsIDQ4LCAxNywgMTIsIDEsIDIxMiwgMTAyLCA0MCwgMTcsIAotICAgIDEyLCAxLCAyMjIsIDg2LCA0OCwgMTcsIDEyLCAxLCAyMjIsIDg2LCA0MCwgMTcsIDEyLCAxLCAyMjIsIDg2LCA3MCwgMTcsIAotICAgIDEyLCAxLCAyMjIsIDg2LCAxMzgsIDE3LCAxMiwgMSwgMjIwLCAyNDAsIDQ4LCAxNywgMTIsIDEsIDIyMCwgMjQwLCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyMjAsIDI0MCwgNzAsIDE3LCAxMiwgMSwgMjIwLCAyNDAsIDEzOCwgMTcsIDEyLCAxLCAyMjIsIDE5NiwgCi0gICAgNDgsIDE3LCAxMiwgMSwgMjIyLCAxOTYsIDQwLCAxNywgMTIsIDEsIDIyMiwgMTk2LCA3MCwgMTcsIDEyLCAxLCAyMjIsIAotICAgIDE5NiwgMTM4LCAxNywgMTIsIDEsIDI0OCwgMTYwLCA0OCwgMTcsIDEyLCAxLCAyNDgsIDE2MCwgNDAsIDE3LCAxMiwgMSwgCi0gICAgMjQ4LCAxNjAsIDcwLCAxNywgMTIsIDEsIDI0OCwgMTYwLCAxMzgsIDE3LCAxMiwgMSwgMjE4LCAzMCwgNDgsIDE3LCAxMiwgCi0gICAgMSwgMjE4LCAzMCwgNDAsIDE3LCAxMiwgMSwgMjE4LCAzMCwgNzAsIDE3LCAxMiwgMSwgMjE4LCAzMCwgMTM4LCAxNywgMTIsIAotICAgIDEsIDIxMiwgMTA1LCA0OCwgMTcsIDEyLCAxLCAyMTIsIDEwNSwgNDAsIDE3LCAxMiwgMSwgMjEyLCAxMDUsIDcwLCAxNywgCi0gICAgMTIsIDEsIDIxMiwgMTA1LCAxMzgsIDE3LCAxMiwgMSwgMjU0LCAxMDQsIDQ4LCAxNywgMTIsIDEsIDI1NCwgMTA0LCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyNTQsIDEwNCwgNzAsIDE3LCAxMiwgMSwgMjU0LCAxMDQsIDEzOCwgMTcsIDEyLCAxLCAyNDIsIDIyMSwgCi0gICAgNDgsIDE3LCAxMiwgMSwgMjQyLCAyMjEsIDQwLCAxNywgMTIsIDEsIDI0MiwgMjIxLCA3MCwgMTcsIDEyLCAxLCAyNDIsIAotICAgIDIyMSwgMTM4LCAxNywgMTIsIDEsIDI0NCwgMTEyLCA0OCwgMTcsIDEyLCAxLCAyNDQsIDExMiwgNDAsIDE3LCAxMiwgMSwgCi0gICAgMjQ0LCAxMTIsIDcwLCAxNywgMTIsIDEsIDI0NCwgMTEyLCAxMzgsIDE3LCAxMiwgMSwgMjI0LCAyMjYsIDQ4LCAxNywgMTIsIAotICAgIDEsIDIyNCwgMjI2LCA0MCwgMTcsIDEyLCAxLCAyMjQsIDIyNiwgNzAsIDE3LCAxMiwgMSwgMjI0LCAyMjYsIDEzOCwgMTcsIAotICAgIDEyLCAxLCAyMzQsIDI1NSwgNDgsIDE3LCAxMiwgMSwgMjM0LCAyNTUsIDQwLCAxNywgMTIsIDEsIDIzNCwgMjU1LCA3MCwgCi0gICAgMTcsIDEyLCAxLCAyMzQsIDI1NSwgMTM4LCAxNywgMTIsIDEsIDIzMywgMTI3LCA0OCwgMTcsIDEyLCAxLCAyMzMsIDEyNywgCi0gICAgNDAsIDE3LCAxMiwgMSwgMjMzLCAxMjcsIDcwLCAxNywgMTIsIDEsIDIzMywgMTI3LCAxMzgsIDE3LCAxMiwgMSwgNjMsIDQ4LCAKLSAgICAxNywgMTIsIDEsIDYzLCA0MCwgMTcsIDEyLCAxLCA2MywgNzAsIDE3LCAxMiwgMSwgNjMsIDEzOCwgMTcsIDEyLCAxLCAyMjgsIAotICAgIDE3NCwgNDgsIDE3LCAxMiwgMSwgMjI4LCAxNzQsIDQwLCAxNywgMTIsIDEsIDIyOCwgMTc0LCA3MCwgMTcsIDEyLCAxLCAKLSAgICAyMjgsIDE3NCwgMTM4LCAxNywgMTIsIDEsIDI0MSwgMjAzLCA0OCwgMTcsIDEyLCAxLCAyNDEsIDIwMywgNDAsIDE3LCAxMiwgCi0gICAgMSwgMjQxLCAyMDMsIDcwLCAxNywgMTIsIDEsIDI0MSwgMjAzLCAxMzgsIDE3LCAxMiwgMSwgMjE0LCAxNSwgNDgsIDE3LCAKLSAgICAxMiwgMSwgMjE0LCAxNSwgNDAsIDE3LCAxMiwgMSwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDEsIDEwNiwgMjEwLCA0MCwgMTcsIAotICAgIDEyLCAxLCA3MywgNDgsIDE3LCAxMiwgMSwgNzMsIDQwLCAxNywgMTIsIDEsIDczLCA3MCwgMTcsIDEyLCAxLCA3MywgMTM4LCAKLSAgICAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTA2LCAyLCAyMzIsIDMzLCA3OCwgNDgsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAKLSAgICAyLCAxMDYsIDIsIDIzMiwgMzMsIDc4LCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEwNiwgMiwgMTkyLCA3OCwgNDgsIAotICAgIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMDYsIDIsIDE5MiwgNzgsIDQwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgCi0gICAgMTA2LCAyLCAxOTIsIDI1MSwgMjIwLCA0OCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEwNiwgMiwgMTkyLCAyNTEsIAotICAgIDIyMCwgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMDYsIDQ4LCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTA2LCAKLSAgICA0MCwgMTcsIDIxMiwgODAsIDIxMywgMjMwLCAyMjgsIDE4NCwgMjE5LCAyMDYsIDEyMCwgMjQ0LCAyNTQsIDc3LCAxMjAsIAotICAgIDIyNCwgMTQzLCA3NywgMTIwLCA1MCwgNTIsIDEyMCwgMjQ3LCA4NiwgNTIsIDEyMCwgMjI2LCA1NywgNTIsIDEyMCwgMjU0LCAKLSAgICAzNSwgMTIwLCAyNTMsIDIyNiwgMTIwLCA0MiwgMjI2LCAxMzEsIDEyMCwgNDYsIDIyNiwgMTMxLCAxMjAsIDI1MywgMTMyLCAKLSAgICAxMjAsIDk0LCA1MiwgMTIwLCAyNDksIDE1NywgMTIwLCAyNDAsIDE1OSwgMTIwLCAyNDMsIDIwMCwgMjE5LCA2OSwgMTIwLCAKLSAgICAyMTksIDIzMSwgMTIwLCAyMSwgMjEyLCA3OSwgMTIwLCAyMSwgMTE2LCAxMjAsIDIxLCAxMDksIDEyMCwgMjEsIDE2NiwgCi0gICAgMTIwLCAyMSwgMTYzLCAxMjAsIDIxLCAxODAsIDEyMCwgMjEsIDE4OSwgMTIwLCAyMSwgMTk4LCAxMjAsIDIxLCAxOTUsIAotICAgIDEyMCwgMjEsIDIwMCwgMTIwLCAyNDksIDE2NCwgMTIwLCAyMjEsIDcwLCAxMjAsIDIzMywgMzksIDUyLCAxMjAsIDI0NSwgCi0gICAgNjEsIDUyLCAxMjAsIDI0MiwgMTA3LCA1MiwgMTIwLCAyMjQsIDE1OCwgNzcsIDEyMCwgMjQ5LCAxNTYsIDI1MywgMTIyLCAKLSAgICAxMjAsIDcsIDYsIDEsIDYxLCAxMjAsIDcsIDYsIDEsIDI1MywgNzQsIDEyMCwgNywgNiwgMSwgMjUwLCAyNTIsIDEyMCwgNywgCi0gICAgNiwgMSwgMjQ5LCAzLCAxMjAsIDcsIDYsIDEsIDc0LCAxMjAsIDcsIDYsIDEsIDI0NCwgMjMwLCAxMjAsIDcsIDYsIDEsIAotICAgIDI0MywgMTc3LCAxMjAsIDcsIDYsIDEsIDI0MiwgNDEsIDEyMCwgNywgNiwgMSwgNzIsIDEyMCwgNywgNiwgMSwgMjM1LCAKLSAgICAxNDIsIDEyMCwgNywgNiwgMSwgMjM1LCAyNywgMTIwLCA3LCA2LCAxLCAxNTAsIDEyMCwgNywgNiwgMSwgMTgzLCAxMjAsIDcsIAotICAgIDYsIDEsIDIwNCwgMTIwLCA3LCA2LCAxLCA3NSwgMTIwLCA3LCA2LCAxLCAyMjYsIDIyOSwgMTIwLCA3LCA2LCAxLCAyMjQsIAotICAgIDI0MCwgMTIwLCA3LCA2LCAxLCAxNDksIDEyMCwgNywgNiwgMSwgMTk3LCAxMjAsIDcsIDYsIDEsIDIxOCwgOTksIDEyMCwgNywgCi0gICAgNiwgMSwgNjksIDEyMCwgNywgNiwgMSwgMjE1LCA3OSwgMTIwLCA3LCA2LCAxLCAyMTQsIDgyLCAxMjAsIDcsIDYsIDEsIAotICAgIDIxMywgMTY2LCAxMjAsIDcsIDYsIDEsIDIxMywgMTA1LCAxMjAsIDcsIDYsIDEsIDIxMiwgMTUyLCAxMjAsIDQyLCA0MSwgCi0gICAgMTI1LCAxMjAsIDIyMywgMjAzLCAyMTksIDIzMSwgMTIwLCA0NiwgNDEsIDEyNSwgMTIwLCAyNDksIDIyNCwgMjU0LCAxNzQsIAotICAgIDEyMCwgMTE1LCAyMzIsIDI0MiwgMTIwLCAyNDIsIDExNCwgMjU0LCAxNzQsIDEyMCwgNywgMywgMSwgNjEsIDEyMCwgNywgMywgCi0gICAgMSwgMjUzLCA3NCwgMTIwLCA3LCAzLCAxLCAyNTAsIDI1MiwgMTIwLCA3LCAzLCAxLCAyNDksIDMsIDEyMCwgNywgMywgMSwgCi0gICAgNzQsIDEyMCwgNywgMywgMSwgMjQ0LCAyMzAsIDEyMCwgNywgMywgMSwgMjQzLCAxNzcsIDEyMCwgNywgMywgMSwgMjQyLCAKLSAgICA0MSwgMTIwLCA3LCAzLCAxLCA3MiwgMTIwLCA3LCAzLCAxLCAyMzUsIDE0MiwgMTIwLCA3LCAzLCAxLCAyMzUsIDI3LCAxMjAsIAotICAgIDcsIDMsIDEsIDE1MCwgMTIwLCA3LCAzLCAxLCAxODMsIDEyMCwgNywgMywgMSwgMjA0LCAxMjAsIDcsIDMsIDEsIDc1LCAKLSAgICAxMjAsIDcsIDMsIDEsIDIyNiwgMjI5LCAxMjAsIDcsIDMsIDEsIDIyNCwgMjQwLCAxMjAsIDcsIDMsIDEsIDE0OSwgMTIwLCAKLSAgICA3LCAzLCAxLCAxOTcsIDEyMCwgNywgMywgMSwgMjE4LCA5OSwgMTIwLCA3LCAzLCAxLCA2OSwgMTIwLCA3LCAzLCAxLCAyMTUsIAotICAgIDc5LCAxMjAsIDcsIDMsIDEsIDIxNCwgODIsIDEyMCwgNywgMywgMSwgMjEzLCAxNjYsIDEyMCwgNywgMywgMSwgMjEzLCAKLSAgICAxMDUsIDEyMCwgNywgMywgMSwgMjEyLCAxNTIsIDEyMCwgNDIsIDI0OSwgNDAsIDEyNSwgMTIwLCA3MSwgMjMyLCAyNDIsIAotICAgIDEyMCwgNDYsIDI0OSwgNDAsIDEyNSwgMTIwLCAyMTcsIDQyLCAxMjAsIDQyLCA2NywgMjI2LCAxMzEsIDEyMCwgNDYsIDY3LCAKLSAgICAyMjYsIDEzMSwgOTgsIDEwNSwgMjQzLCAyMDAsIDIxOSwgNjksIDk4LCA0MiwgMjQ5LCAxMDAsIDEyNSwgOTgsIDQ2LCAyNDksIAotICAgIDEwMCwgMTI1LCA5OCwgMTA1LCAyNDksIDE1NywgOTgsIDU2LCAyMzEsIDM3LCAyNDcsIDc0LCA5OCwgNTYsIDEsIDIxMywgCi0gICAgMjE0LCA5OCwgNTYsIDEsIDMsIDYxLCA5OCwgNTYsIDEsIDMsIDcyLCA5OCwgNTYsIDEsIDMsIDY5LCA5OCwgNTYsIDEsIDMsIAotICAgIDc0LCA5OCwgNTYsIDEsIDMsIDc1LCA5OCwgNTYsIDEsIDMsIDE4NiwgOTgsIDU2LCAxLCAzLCAyMTIsIDIwMywgOTgsIDU2LCAKLSAgICAxLCAzLCAyMTIsIDIzNSwgOTgsIDU2LCAxLCAzLCAyMTYsIDgyLCA5OCwgMjM0LCAyMDYsIDIyNSwgNTcsIDIxOSwgMjE4LCAKLSAgICA3NywgOTgsIDU2LCAxLCA2MSwgOTgsIDU2LCAxLCA3MiwgOTgsIDU2LCAxLCA2OSwgOTgsIDU2LCAxLCA3NCwgOTgsIDU2LCAKLSAgICAxLCA3NSwgOTgsIDU2LCAxLCAxODEsIDk4LCA1NiwgMSwgMjM0LCAxMDEsIDk4LCA1NiwgMSwgMjMzLCAyMzgsIDk4LCA1NiwgCi0gICAgMSwgMjM0LCAxODgsIDk4LCA1NiwgMSwgMjM0LCAzNywgOTgsIDU2LCAxLCAyMjIsIDIwMiwgOTgsIDU2LCAxLCAyMjAsIAotICAgIDExNywgOTgsIDU2LCAxLCAyMTksIDI3LCA5OCwgNTYsIDEsIDIyMiwgMTAwLCA5OCwgNTYsIDEsIDIxOSwgMjQyLCA5OCwgCi0gICAgNTYsIDEsIDIxOCwgNTIsIDk4LCA1NiwgMSwgMjE3LCA3MSwgOTgsIDU2LCAxLCAyMTYsIDgyLCA5OCwgNTYsIDEsIDIxNywgCi0gICAgMjI5LCA5OCwgNTYsIDEsIDEwOCwgOTgsIDU2LCAxLCAyMDUsIDk4LCA1NiwgMSwgMjI5LCA2NCwgOTgsIDU2LCAxLCAyMjgsIAotICAgIDkyLCA5OCwgNTYsIDEsIDIyOSwgMTg3LCA5OCwgNTYsIDEsIDIyOCwgMTg1LCA5OCwgNTYsIDEsIDE1OSwgOTgsIDU2LCAxLCAKLSAgICAyNDEsIDE2NSwgOTgsIDU2LCAxLCAyNDAsIDIxMiwgOTgsIDU2LCAxLCAyNDEsIDIyMiwgOTgsIDU2LCAxLCAyNDEsIDU0LCAKLSAgICA5OCwgNTYsIDEsIDE4OCwgOTgsIDU2LCAxLCAyMzEsIDQyLCA5OCwgNTYsIDEsIDIzMCwgMTcyLCA5OCwgNTYsIDEsIDIzMSwgCi0gICAgMTU2LCA5OCwgNTYsIDEsIDIzMCwgMjMxLCA5OCwgNTYsIDEsIDE4NiwgOTgsIDU2LCAxLCAyMTIsIDIwMywgOTgsIDU2LCAxLCAKLSAgICAyMTIsIDIzNSwgOTgsIDU2LCAxLCAyMDMsIDk4LCA1NiwgMSwgMjIzLCAxODgsIDk4LCA1NiwgMSwgMjIzLCA1MSwgOTgsIAotICAgIDU2LCAxLCAyMjQsIDIxLCA5OCwgNTYsIDEsIDIyMywgMTEyLCA5OCwgNTYsIDEsIDIxNCwgNDksIDk4LCA1NiwgMSwgMjA0LCAKLSAgICA5OCwgNTYsIDIxNCwgMTE2LCAyMTksIDIxOCwgNzcsIDk4LCA1NiwgMjIxLCA3NSwgMjE5LCAyMTgsIDc3LCA5OCwgMjMsIAotICAgIDI0NCwgNzIsIDk4LCAyMywgMSwgMjM0LCA2NywgOTgsIDIzLCAxLCAyMTksIDE1MCwgOTgsIDIzLCAxLCAyMzQsIDYwLCA5OCwgCi0gICAgMjMsIDEsIDIyOSwgNTcsIDk4LCAyMywgMSwgMjI5LCA1NSwgOTgsIDIzLCAxLCAyMjksIDU0LCA5OCwgMjMsIDEsIDIxNywgCi0gICAgNTUsIDk4LCAyMywgMSwgMjE5LCAxMzksIDk4LCAyMywgMSwgMjIzLCAxNzksIDk4LCAyMywgMSwgMjIzLCAxNzQsIDk4LCAKLSAgICAyMywgMSwgMjIzLCAxNzEsIDk4LCAyMywgMSwgMjIzLCAxNjQsIDk4LCAyMywgMSwgMjIzLCAxNTksIDk4LCAyMywgMSwgCi0gICAgMjIzLCAxNTQsIDk4LCAyMywgMSwgMjIzLCAxNjUsIDk4LCAyMywgMSwgMjIzLCAxNzcsIDk4LCAyMywgMSwgMjMxLCAzMCwgCi0gICAgOTgsIDIzLCAxLCAyMjUsIDIyNywgOTgsIDIzLCAxLCAyMTksIDE0NywgOTgsIDIzLCAxLCAyMjUsIDIxNiwgOTgsIDIzLCAxLCAKLSAgICAyMjAsIDc2LCA5OCwgMjMsIDEsIDIxOSwgMTQ0LCA5OCwgMjMsIDEsIDIzNiwgNTEsIDk4LCAyMywgMSwgMjQ5LCAyMzksIAotICAgIDk4LCAyMywgMSwgMjE5LCAxNTQsIDk4LCAyMywgMSwgMjUwLCA0MywgOTgsIDIzLCAxLCAyMzQsIDExNiwgOTgsIDIzLCAxLCAKLSAgICAyMTcsIDEyNiwgOTgsIDIzLCAxLCAyMjYsIDcsIDk4LCAyMywgMSwgMjQxLCAxNTgsIDk4LCAyMywgMSwgNjEsIDk4LCAyMywgCi0gICAgMSwgMjU0LCAxNDgsIDk4LCAyMywgMSwgMTg2LCA5OCwgMjMsIDEsIDIxMywgODAsIDk4LCAyMywgMSwgMjQ1LCA3NiwgOTgsIAotICAgIDIzLCAxLCA3NCwgOTgsIDIzLCAxLCAyMTMsIDI3LCA5OCwgMjMsIDEsIDIxMywgMzgsIDk4LCAyMywgMSwgNzUsIDk4LCAyMywgCi0gICAgMSwgMjE0LCA0OSwgOTgsIDIzLCAxLCAyMTQsIDQ2LCA5OCwgMjMsIDEsIDIyNywgOTksIDk4LCAyMywgMSwgMjEyLCAyMzUsIAotICAgIDk4LCAyMywgMSwgNjksIDk4LCAyMywgMSwgMjEzLCAyNTIsIDk4LCAyMywgMSwgMjE0LCA2LCA5OCwgMjMsIDEsIDIxMywgCi0gICAgMjM1LCA5OCwgMjMsIDEsIDIxMiwgMjAzLCA5OCwgMjMsIDEsIDI0NSwgMjIsIDk4LCAyMywgMSwgMjEyLCAyNTUsIDk4LCAKLSAgICAyMywgMSwgNzIsIDEyMCwgMjUwLCAxMTAsIDUyLCAxMjAsIDIyNSwgMTA4LCA1MiwgMTIwLCAyMjgsIDE2MywgNTIsIDEyMCwgCi0gICAgMjMyLCAzNywgMTIwLCAyNTEsIDYzLCAxMzQsIDEyMCwgMjEzLCAzMSwgNTIsIDEyMCwgMjEzLCAyMDQsIDUyLCA5OCwgMjQzLCAKLSAgICAyNDMsIDE3NywgMjE0LCAyMTYsIDk4LCAxMzIsIDY4LCA5OCwgMjE1LCAxMjQsIDY4LCA5OCwgOTUsIDY4LCA5OCwgMjQ2LCAKLSAgICA1OCwgNjgsIDk4LCA4MywgMjE5LCAxNjYsIDk4LCA2NywgMjQ5LCAyMjgsIDIzNSwgMjAxLCAyNTQsIDEwLCAyNTQsIDI5LCAKLSAgICAyMzUsIDIwMSwgMjU0LCAxMCwgMjIxLCA1NywgMjM1LCAyMDEsIDI1NCwgMTAsIDIxNywgMTg5LCAyMjcsIDExMywgMjIzLCAKLSAgICAyMjQsIDI1MCwgNzgsIDIyMywgMjI0LCAyNTAsIDc4LCA1OCwgNTQsIDQsIDI1MywgNTgsIDYxLCA1OCwgNTQsIDQsIDI1MywgCi0gICAgMjcsIDc0LCA1OCwgNTQsIDQsIDI1MywgMzYsIDcyLCA1OCwgNTQsIDQsIDI1MywgNCwgNzUsIDU4LCA1NCwgNCwgMjUzLCAKLSAgICA1NCwgNjksIDU4LCA1NCwgNCwgMjUzLCA3MywgMjQ4LCAxNjQsIDU4LCA1NCwgNCwgMjUzLCAyMCwgMjQ4LCA0MSwgNTgsIAotICAgIDU0LCA0LCAyNTMsIDYwLCAyNDcsIDIxMSwgNTgsIDU0LCA0LCAyNTMsIDUwLCAyNDcsIDk5LCA1OCwgNTQsIDQsIDI1MywgCi0gICAgMTQsIDI0NiwgMzMsIDU4LCA1NCwgNCwgMjUzLCA4LCAyMzUsIDEzOSwgNTgsIDU0LCA0LCAyNTMsIDE5LCAyMzUsIDEyNywgCi0gICAgNTgsIDU0LCA0LCAyNTMsIDI5LCAyMzUsIDcxLCA1OCwgNTQsIDQsIDI1MywgMCwgMjM1LCA1NCwgNTgsIDU0LCA0LCAyNTIsIAotICAgIDI0NCwgMTgxLCA1OCwgNTQsIDQsIDI1MywgMjEsIDIzNCwgMTg4LCA1OCwgNTQsIDQsIDI1MiwgMjU0LCAyMzQsIDEwMSwgCi0gICAgNTgsIDU0LCA0LCAyNTIsIDI1MSwgMjM0LCAzNywgNTgsIDU0LCA0LCAyNTIsIDI0MCwgMjMzLCAyMzgsIDU4LCA1NCwgNCwgCi0gICAgMjUyLCAyNDEsIDE4OCwgNTgsIDU0LCA0LCAyNTMsIDUxLCAyMzEsIDE1NiwgNTgsIDU0LCA0LCAyNTIsIDI0OCwgMjMxLCAKLSAgICA0MiwgNTgsIDU0LCA0LCAyNTMsIDQ5LCAyMzAsIDIzMSwgNTgsIDU0LCA0LCAyNTMsIDQxLCAyMzAsIDE3MiwgNTgsIDU0LCAKLSAgICA0LCAyNTMsIDYyLCAyMDUsIDU4LCA1NCwgNCwgMjUzLCA0MCwgMjI5LCAxODcsIDU4LCA1NCwgNCwgMjUzLCAzNCwgMjI5LCAKLSAgICA2NCwgNTgsIDU0LCA0LCAyNTMsIDEzLCAyMjgsIDE4NSwgNTgsIDU0LCA0LCAyNTMsIDEwLCAyMjgsIDkyLCA1OCwgNTQsIDQsIAotICAgIDI1MywgNjksIDE5MywgNTgsIDU0LCA0LCAyNTIsIDI0OSwgMjI2LCA5NiwgNTgsIDU0LCA0LCAyNTMsIDI2LCAyMjUsIDI0MCwgCi0gICAgNTgsIDU0LCA0LCAyNTMsIDUzLCAyMjUsIDE1MCwgNTgsIDU0LCA0LCAyNTMsIDE1LCAyMjUsIDM1LCA1OCwgNTQsIDQsIAotICAgIDI1MywgNDgsIDIyNCwgMjMyLCA1OCwgNTQsIDQsIDI1MiwgMjQzLCAyMjQsIDIxMywgNTgsIDU0LCA0LCAyNTMsIDQzLCAKLSAgICAyMjQsIDE5OCwgNTgsIDU0LCA0LCAyNTMsIDMyLCAyMjQsIDE4NywgNTgsIDU0LCA0LCAyNTMsIDUsIDIwMywgNTgsIDU0LCAKLSAgICA0LCAyNTMsIDM3LCAyMjQsIDIxLCA1OCwgNTQsIDQsIDI1MywgMTIsIDIyMywgMTg4LCA1OCwgNTQsIDQsIDI1MywgNzEsIAotICAgIDIyMywgMTEyLCA1OCwgNTQsIDQsIDI1MywgMzgsIDIyMywgNTEsIDU4LCA1NCwgNCwgMjUzLCAzMywgMjIyLCAyMDIsIDU4LCAKLSAgICA1NCwgNCwgMjUzLCA1NiwgMjIyLCAxMDAsIDU4LCA1NCwgNCwgMjUzLCAyNCwgMjIwLCAxMTcsIDU4LCA1NCwgNCwgMjUzLCAKLSAgICA1MiwgMjE5LCAyNDIsIDU4LCA1NCwgNCwgMjUzLCA3LCAyMTksIDI3LCA1OCwgNTQsIDQsIDI1MywgNiwgMjE4LCA1MiwgNTgsIAotICAgIDU0LCA0LCAyNTMsIDY3LCAyMTcsIDIyOSwgNTgsIDU0LCA0LCAyNTMsIDI4LCAyMTcsIDcxLCA1OCwgNTQsIDQsIDI1MywgCi0gICAgNjUsIDEwOCwgNTgsIDU0LCA0LCAyNTIsIDI1MiwgMjE2LCA4MiwgNTgsIDU0LCA0LCAyNTMsIDExLCAyMTQsIDQ5LCA1OCwgCi0gICAgNTQsIDQsIDI1MiwgMjQ2LCAyMTQsIDYsIDU4LCA1NCwgNCwgMjUzLCAyNSwgMjEzLCAyMzUsIDU4LCA1NCwgNCwgMjUzLCAKLSAgICAyMywgMjEzLCAyMTQsIDU4LCA1NCwgNCwgMjUzLCA0NywgMjEyLCAxMDksIDU4LCA1NCwgNCwgMjUyLCAyNDcsIDIxMiwgODcsIAotICAgIDU4LCA1NCwgNCwgMjUzLCA0NCwgMjEyLCAxNiwgNTgsIDU0LCA0LCAyNTMsIDM5LCAyNTQsIDIzNCwgNTgsIDU0LCA0LCAKLSAgICAyNTMsIDIyLCAyNTQsIDIzMywgNTgsIDU0LCA0LCAyNTIsIDIzNywgMjUzLCAxMDgsIDU4LCA1NCwgNCwgMjUyLCAyNTAsIAotICAgIDI0NiwgMSwgNTgsIDU0LCA0LCAyNTIsIDIzMywgMjQ2LCAwLCA1OCwgNTQsIDQsIDI1MywgMTcsIDIyOCwgMzEsIDU4LCA1NCwgCi0gICAgNCwgMjUzLCAzNSwgMjI1LCAzNCwgNTgsIDU0LCA0LCAyNTMsIDMsIDIyNSwgMzcsIDU4LCA1NCwgNCwgMjUyLCAyNDUsIAotICAgIDIyNCwgNzYsIDU4LCA1NCwgNCwgMjUzLCAzMSwgMjI0LCA3NSwgNTgsIDU0LCA0LCAyNTIsIDI1MywgMjIzLCAxMTEsIDU4LCAKLSAgICA1NCwgNCwgMjUyLCAyNTUsIDIxOCwgNTAsIDU4LCA1NCwgNCwgMjUyLCAyMzUsIDIxNiwgNDMsIDU4LCA1NCwgNCwgMjUyLCAKLSAgICAyMzIsIDEwOSwgNTgsIDU0LCAxNiwgMjUzLCA0NiwgNTgsIDU0LCAxNiwgMjUzLCA0NSwgNTgsIDU0LCAxNiwgMjUzLCA0MiwgCi0gICAgNTgsIDU0LCAxNiwgMjUzLCAzMCwgNTgsIDU0LCAxNiwgMjUzLCAxOCwgNTgsIDU0LCAxNiwgMjUzLCAxNiwgNTgsIDU0LCAKLSAgICAxNiwgMjUzLCA5LCA1OCwgNTQsIDE2LCAyNTMsIDIsIDU4LCA1NCwgMTYsIDI1MywgMSwgNTgsIDU0LCAxNiwgMjUyLCAyNDIsIAotICAgIDU4LCA1NCwgMTYsIDI1MiwgMjM5LCA1OCwgNTQsIDE2LCAyNTIsIDIzOCwgNTgsIDU0LCAxNiwgMjUyLCAyMzYsIDU4LCA1NCwgCi0gICAgMTYsIDI1MiwgMjM0LCA1OCwgNTQsIDEwMiwgMjUyLCAyMzEsIDIzMSwgMjQ4LCA1OCwgNTQsIDEwMiwgMjUyLCAyMzAsIAotICAgIDIxMywgMjA4LCA1OCwgNTQsIDEwMiwgMjUyLCAyMjksIDI0OCwgMjUsIDU4LCA1NCwgMTAyLCAyNTIsIDIyOCwgMjQ1LCA1OCwgCi0gICAgNTgsIDU0LCAxMDIsIDI1MiwgMjI3LCAyMzEsIDIyMiwgNTgsIDU0LCAxMDIsIDI1MiwgMjI2LCAyMTksIDEwMSwgNTgsIDU0LCAKLSAgICAxMDIsIDI1MiwgMjI1LCAyNDUsIDQsIDU4LCA1NCwgMTAyLCAyNTIsIDIyNCwgMjI0LCA0NSwgNTgsIDU0LCAxMDIsIDI1MiwgCi0gICAgMjIzLCAyMjAsIDI0MiwgNTgsIDU0LCAxMDIsIDI1MiwgMjIyLCAyNDEsIDIyMSwgNTgsIDU0LCAxMDIsIDI1MiwgMjIxLCAKLSAgICAyMTksIDIxMiwgNTgsIDU0LCAxMDIsIDI1MiwgMjIwLCAyNTEsIDEyNiwgNTgsIDU0LCAxMDIsIDI1MiwgMjE5LCAyNDksIAotICAgIDg0LCA1OCwgNTQsIDEwMiwgMjUyLCAyMTgsIDI1MSwgNDQsIDU4LCA1NCwgMTAyLCAyNTIsIDIxNywgMjEzLCAyNDMsIDU4LCAKLSAgICA1NCwgMTAyLCAyNTIsIDIxNiwgMjUyLCA1NiwgNTgsIDU0LCAxMDIsIDI1MiwgMjE1LCAyMjcsIDcxLCA1OCwgNTQsIDEwMiwgCi0gICAgMjUyLCAyMTQsIDIxOSwgMTg2LCA1OCwgNTQsIDEwMiwgMjUyLCAyMTMsIDI0OSwgMTEsIDU4LCA1NCwgMjMwLCAyMTIsIAotICAgIDI1MiwgMjEyLCAyMzQsIDIyOSwgNTgsIDU0LCAyMzAsIDIxMiwgMjUyLCAyMTEsIDIzNCwgMjM3LCA1OCwgNTQsIDEwMiwgCi0gICAgMjUyLCAyMTAsIDIyNywgODQsIDU4LCA1NCwgMTAyLCAyNTIsIDIwOSwgMjEzLCAyMjEsIDU4LCA1NCwgMTAyLCAyNTIsIAotICAgIDIwOCwgNTgsIDU0LCAyMzAsIDIxMiwgMjUyLCAyMDcsIDI1MywgMTg4LCA1OCwgNTQsIDIzMCwgMjEyLCAyNTIsIDIwNiwgCi0gICAgMjMxLCAxMTYsIDU4LCA1NCwgMTAyLCAyNTIsIDIwNSwgMjUxLCA2MiwgNTgsIDU0LCAxMDIsIDI1MiwgMjA0LCAyNDIsIAotICAgIDE0MiwgNTgsIDU0LCAxMDIsIDI1MiwgMjAzLCA1OCwgNTQsIDEwMiwgMjUyLCAyMDIsIDIxMywgMTk5LCA1OCwgNTQsIDEwMiwgCi0gICAgMjUyLCAyMDEsIDU4LCA1NCwgMTAyLCAyNTIsIDIwMCwgNTgsIDU0LCAxMDIsIDI1MiwgMTk5LCAyNDAsIDIzNSwgNTgsIDU0LCAKLSAgICAxMDIsIDI1MiwgMTk4LCA1OCwgNTQsIDEwMiwgMjUyLCAxOTcsIDU4LCA1NCwgMTAyLCAyNTIsIDE5NiwgNTgsIDU0LCAyMzAsIAotICAgIDIxMiwgMjUyLCAxOTQsIDIxNiwgNTYsIDU4LCA1NCwgMTAyLCAyNTIsIDE5MywgNTgsIDU0LCAxMDIsIDI1MiwgMTkyLCA1OCwgCi0gICAgNTQsIDEwMiwgMjUyLCAxOTEsIDI0OSwgMTg3LCA1OCwgNTQsIDEwMiwgMjUyLCAxOTAsIDU4LCA1NCwgMTAyLCAyNTIsIAotICAgIDE4OSwgNTgsIDU0LCAxMDIsIDI1MiwgMTg4LCAyNDMsIDY5LCA1OCwgNTQsIDEwMiwgMjUyLCAxODcsIDI1MywgMTc1LCA1OCwgCi0gICAgNTQsIDEwMiwgMjUyLCAxODYsIDU4LCA1NCwgMTAyLCAyNTIsIDE4NSwgNTgsIDU0LCAxMDIsIDI1MiwgMTg0LCA1OCwgNTQsIAotICAgIDEwMiwgMjUyLCAxODMsIDU4LCA1NCwgMTAyLCAyNTIsIDE4MiwgNTgsIDU0LCAxMDIsIDI1MiwgMTgxLCA1OCwgNTQsIDEwMiwgCi0gICAgMjUyLCAxODAsIDU4LCA1NCwgMTAyLCAyNTIsIDE3OSwgNTgsIDU0LCAxMDIsIDI1MiwgMTc4LCA1OCwgNTQsIDEwMiwgMjUyLCAKLSAgICAxNzcsIDIzMCwgMjA0LCA1OCwgNTQsIDEwMiwgMjUyLCAxNzYsIDU4LCA1NCwgMTAyLCAyNTIsIDE3NSwgMjE2LCAxOTMsIAotICAgIDU4LCA1NCwgMTAyLCAyNTIsIDE3NCwgNTgsIDU0LCAxMDIsIDI1MiwgMTczLCA1OCwgNTQsIDEwMiwgMjUyLCAxNzIsIDU4LCAKLSAgICA1NCwgMTAyLCAyNTIsIDE3MSwgNTgsIDU0LCAxMDIsIDI1MiwgMTcwLCA1OCwgNTQsIDEwMiwgMjUyLCAxNjksIDU4LCA1NCwgCi0gICAgMTAyLCAyNTIsIDE2OCwgNTgsIDU0LCAxMDIsIDI1MiwgMTY3LCA1OCwgNTQsIDEwMiwgMjUyLCAxNjYsIDU4LCA1NCwgMTAyLCAKLSAgICAyNTIsIDE2NSwgNTgsIDU0LCAxMDIsIDI1MiwgMTY0LCA1OCwgNTQsIDEwMiwgMjUyLCAxNjMsIDI0MSwgMTk1LCA1OCwgNTQsIAotICAgIDEwMiwgMjUyLCAxNDIsIDI0MywgMjUzLCA1OCwgNTQsIDEwMiwgMjUyLCAxMzksIDI1MiwgMzYsIDU4LCA1NCwgMTAyLCAKLSAgICAyNTIsIDEzNCwgMjE5LCAxOTMsIDU4LCA1NCwgMTAyLCAyNTIsIDEzMywgNjgsIDU4LCA1NCwgMTAyLCAyNTIsIDEzMiwgNTgsIAotICAgIDU0LCAxMDIsIDI1MiwgMTMxLCAyMTgsIDE4MSwgNTgsIDU0LCAxMDIsIDI1MiwgMTMwLCA1OCwgNTQsIDEwMiwgMjUyLCAKLSAgICAxMjksIDU4LCA1NCwgMTAyLCAyNTIsIDEyOCwgMjEzLCAyMzksIDI1MCwgNzUsIDU4LCA1NCwgMTAyLCAyNTIsIDEyNywgCi0gICAgMjUwLCA3NSwgNTgsIDU0LCAxMDIsIDI1MiwgMTI2LCAyNTAsIDc2LCAyNDMsIDIyNSwgNTgsIDU0LCAxMDIsIDI1MiwgMTI1LCAKLSAgICAyMTMsIDI0MSwgNTgsIDU0LCAxMDIsIDI1MiwgMTI0LCA1OCwgNTQsIDEwMiwgMjUyLCAxMjMsIDU4LCA1NCwgMjMwLCAyMTIsIAotICAgIDI1MiwgMTIyLCAyNDcsIDE1MCwgNTgsIDU0LCAxMDIsIDI1MiwgMTIxLCA1OCwgNTQsIDEwMiwgMjUyLCAxMjAsIDU4LCA1NCwgCi0gICAgMTAyLCAyNTIsIDExOCwgNTgsIDU0LCAxMDIsIDI1MiwgMTE3LCA1OCwgNTQsIDEwMiwgMjUyLCAxMTYsIDU4LCA1NCwgMTAyLCAKLSAgICAyNTIsIDExNSwgMjQ4LCAxMDQsIDU4LCA1NCwgMTAyLCAyNTIsIDExNCwgNTgsIDU0LCAxMDIsIDI1MiwgMTEzLCA1OCwgNTQsIAotICAgIDEwMiwgMjUyLCAxMTIsIDU4LCA1NCwgMTAyLCAyNTIsIDExMSwgNTgsIDU0LCAxMDIsIDI1MiwgMTEwLCA1OCwgNTQsIDEwMiwgCi0gICAgMjE0LCAxNjMsIDI1MiwgMTk1LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTYyLCA1OCwgNTQsIDEwMiwgMjE0LCAKLSAgICAxNjMsIDI1MiwgMTYxLCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTYwLCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIAotICAgIDI1MiwgMTU5LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTU4LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgCi0gICAgMTU3LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTU2LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTU1LCAKLSAgICA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTU0LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTUzLCA1OCwgNTQsIAotICAgIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTUyLCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTUxLCA1OCwgNTQsIDEwMiwgCi0gICAgMjE0LCAxNjMsIDI1MiwgMTUwLCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTQ5LCA1OCwgNTQsIDEwMiwgMjE0LCAKLSAgICAxNjMsIDI1MiwgMTQ4LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTQ3LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIAotICAgIDI1MiwgMTQ2LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTQ1LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgCi0gICAgMTQ0LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTQzLCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTQxLCAKLSAgICA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTQwLCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTM4LCA1OCwgNTQsIAotICAgIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTM3LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTM2LCA1OCwgNTQsIDEwMiwgCi0gICAgMjE0LCAxNjMsIDI1MiwgMTM1LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTE5LCA1OCwgNTQsIDEwMiwgMjE0LCAKLSAgICAxNjMsIDI1MiwgMTA5LCAyNTQsIDE0MSwgMjEzLCAxOTYsIDIyMSwgNTgsIDIzMiwgMjQyLCAyNTQsIDE0MSwgMjEzLCAxOTYsIAotICAgIDIyMSwgNTgsIDI0NywgNzQsIDI1NCwgMTQxLCAyNTAsIDY2LCA3NywgMjU0LCAxNDEsIDUwLCAxMTYsIDI1NCwgMTQxLCA1MCwgCi0gICAgMTA5LCAyNTQsIDE0MSwgNTAsIDE2NiwgMjU0LCAxNDEsIDUwLCAxNjMsIDI1NCwgMTQxLCA1MCwgMTgwLCAyNTQsIDE0MSwgCi0gICAgNTAsIDE4OSwgMjU0LCAxNDEsIDUwLCAxOTgsIDI1NCwgMTQxLCA1MCwgMTk1LCAyNTQsIDE0MSwgNTAsIDIwMCwgMjU0LCAKLSAgICAxNDEsIDUwLCAyMTcsIDIwMCwgMjU0LCAxNDEsIDUwLCAyMTYsIDM4LCAyNTQsIDE0MSwgNTAsIDIxNywgMTE1LCAyNTQsIAotICAgIDE0MSwgNTAsIDI0MywgMjQwLCAyNTQsIDE0MSwgNTAsIDI0NCwgODMsIDI1NCwgMTQxLCA1MCwgMjIwLCAzOSwgMjU0LCAKLSAgICAxNDEsIDUwLCAyMjEsIDM3LCAyNTQsIDE0MSwgNTAsIDI0NSwgMTQxLCAyNTQsIDE0MSwgNTAsIDIyOSwgMjYsIDI1NCwgCi0gICAgMTQxLCA1MCwgMTIyLCAyNDAsIDIwMCwgMjU0LCAxNDEsIDUwLCAxMTcsIDI0MCwgMjAwLCAyNTQsIDE0MSwgNTAsIDEzMywgCi0gICAgMjQwLCAyMDAsIDI1NCwgMTQxLCA1MCwgMjQzLCAyMzcsIDI0MCwgMjAwLCAyNTQsIDE0MSwgNTAsIDI0NCwgNTAsIDI0MCwgCi0gICAgMjAwLCAyNTQsIDE0MSwgNTAsIDIyMCwgNTMsIDI0MCwgMjAwLCAyNTQsIDE0MSwgNTAsIDIyMSwgNDMsIDI0MCwgMjAwLCAKLSAgICAyNTQsIDE0MSwgNTAsIDI0NSwgMTUwLCAyNDAsIDIwMCwgMjU0LCAxNDEsIDUwLCAyMjksIDMxLCAyNDAsIDIwMCwgMjU0LCAKLSAgICAxNDEsIDUwLCAxMjIsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDExNywgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMTMzLCAKLSAgICAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAyNDMsIDIzNywgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMjQ0LCA1MCwgMjE3LCAKLSAgICAxMDAsIDI1NCwgMTQxLCA1MCwgMjIwLCA1MywgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMjIxLCA0MywgMjE3LCAxMDAsIAotICAgIDI1NCwgMTQxLCA1MCwgMjQ1LCAxNTAsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDIyOSwgMzEsIDIxNywgMTAwLCAyNTQsIAotICAgIDE0MSwgNTAsIDIxNywgMjAxLCAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAyMTYsIDM5LCAyMTcsIDEwMCwgMjU0LCAxNDEsIAotICAgIDUwLCAyMTcsIDExNiwgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMjQzLCAyNDEsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIAotICAgIDI0NCwgODQsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDIyMCwgNDAsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDIyMSwgCi0gICAgMzgsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDI0NSwgMTQyLCAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAyMjksIDI3LCAKLSAgICAyMTcsIDEwMCwgMjU0LCAxNDEsIDIxMywgMjU1LCAyNTIsIDQ4LCAyMTUsIDE0NCwgMjU0LCAxNDEsIDIxMywgMjU1LCAyNDQsIAotICAgIDYxLCAyMTksIDQsIDI1NCwgMTQxLCAyMTMsIDI1NSwgMjIyLCA5NSwgMjE5LCA0LCAyNTQsIDE0MSwgMjEzLCAyNTUsIDIxNywgCi0gICAgMTIyLCAyMTksIDQsIDI1NCwgMTQxLCAyMTMsIDI1NSwgMjQzLCAyMzAsIDIxOSwgNCwgMjU0LCAxNDEsIDI0NiwgMzYsIAotICAgIDIzMSwgMTU1LCAyNDQsIDYxLCAyMTksIDQsIDI1NCwgMTQxLCAyMzIsIDIyOCwgMjMxLCAxNTUsIDI0NCwgNjEsIDIxOSwgNCwgCi0gICAgMjU0LCAxNDEsIDIzMSwgMTU1LCAyMjIsIDk1LCAyMTksIDQsIDI1NCwgMTQxLCAyMzEsIDE1NSwgMjE3LCAxMjIsIDIxOSwgCi0gICAgNCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMTIyLCAyMjQsIDE2NiwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMTIyLCAKLSAgICAyNDIsIDksIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDEyMiwgMjQ2LCA1NCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgCi0gICAgMTgwLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDgzLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDUwLCAKLSAgICAyNDAsIDIwMCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA1MCwgMjE3LCAxMDAsIDI1LCAyNTQsIDE2NywgMjUzLCAKLSAgICAxMTAsIDI0NCwgODQsIDIxNywgMTAwLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDUwLCAyMTgsIDE4LCAyNSwgCi0gICAgMjU0LCAxNjcsIDI1MywgMTEwLCAyMTcsIDIwMSwgMjE4LCAxOCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA4NCwgCi0gICAgMjE4LCAxOCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMTIyLCAyNDAsIDIwMSwgMjE4LCAxOCwgMjUsIDI1NCwgMTY3LCAKLSAgICAyNTMsIDExMCwgMjQ0LCA1MCwgMjQwLCAyMDEsIDIxOCwgMTgsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDEyMiwgMjE3LCAKLSAgICAxMDEsIDIxOCwgMTgsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDI0NCwgNTAsIDIxNywgMTAxLCAyMTgsIDE4LCAyNSwgCi0gICAgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDUwLCAyMTksIDkwLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyMTcsIDIwMSwgCi0gICAgMjE5LCA5MCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA4NCwgMjE5LCA5MCwgMjUsIDI1NCwgMTY3LCAyNTMsIAotICAgIDExMCwgMTIyLCAyNDAsIDIwMSwgMjE5LCA5MCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA1MCwgMjQwLCAyMDEsIAotICAgIDIxOSwgOTAsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDEyMiwgMjE3LCAxMDEsIDIxOSwgOTAsIDI1LCAyNTQsIDE2NywgCi0gICAgMjUzLCAxMTAsIDIxNywgMjAxLCAyMTcsIDEwMSwgMjE5LCA5MCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA4NCwgCi0gICAgMjE3LCAxMDEsIDIxOSwgOTAsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDIxNywgMjAxLCAyMzAsIDIzNCwgMjUsIDI1NCwgCi0gICAgMTY3LCAyNDEsIDE4OSwgMTIyLCAyMjUsIDE2NCwgMjUsIDI1NCwgMTY3LCAyMTcsIDEzNCwgMTE2LCAyNSwgMjU0LCAxNjcsIAotICAgIDI0MSwgMTg2LCAxMTYsIDI1LCAyNTQsIDE2NywgMjQ1LCA2NywgMTA5LCAyNSwgMjU0LCAxNjcsIDIxNywgMTM0LCAxMDksIAotICAgIDI1LCAyNTQsIDE2NywgMjQ5LCA4LCAxMTcsIDI0NiwgNTMsIDI1LCAyNTQsIDE2NywgMjQ1LCA2NywgMTE3LCAyNDYsIDUzLCAKLSAgICAyNSwgMjU0LCAxNjcsIDIxNiwgMTYxLCAxODAsIDI1LCAyNTQsIDE2NywgMjE2LCAxNjEsIDIxNywgMjAwLCAyNSwgMjU0LCAKLSAgICAxNjcsIDIxNiwgMTYxLCAyMTcsIDIwMSwgMjU0LCA1MCwgMTcsIDI1LCAyNTQsIDE2NywgMjQxLCAxODYsIDIxNywgMjAwLCAKLSAgICAyNSwgMjU0LCAxNjcsIDIzMSwgMTA4LCAyMTcsIDIwMCwgMjUsIDI1NCwgMTY3LCAyMTcsIDEzNCwgMjE3LCAyMDAsIDI1LCAKLSAgICAyNTQsIDE2NywgMjE3LCAxMzQsIDIxNywgMTE1LCAyNSwgMjU0LCAxNjcsIDIxNiwgMTYxLCAyNDQsIDgzLCAyNSwgMjU0LCAKLSAgICAxNjcsIDIxNiwgMTYxLCAyNDQsIDg0LCAyNTQsIDUwLCAxNywgMjUsIDI1NCwgMTY3LCAyNDEsIDE4NiwgMjQ0LCA4MywgMjUsIAotICAgIDI1NCwgMTY3LCAyMTcsIDEzNCwgMjQ0LCA4MywgMjUsIDI1NCwgMTY3LCAyMTcsIDEzNCwgMTIyLCAyNDAsIDIwMCwgMjUsIAotICAgIDI1NCwgMTY3LCAyMTcsIDEzNCwgMTMzLCAyNDAsIDIwMCwgMjUsIDI1NCwgMTY3LCAyNDUsIDY3LCAyNDQsIDUwLCAyNDAsIAotICAgIDIwMCwgMjUsIDI1NCwgMTY3LCAyMTYsIDE2MSwgMjQ0LCA1MCwgMjQwLCAyMDAsIDI1LCAyNTQsIDE2NywgMjE3LCAxMzQsIAotICAgIDI0NCwgNTAsIDI0MCwgMjAwLCAyNSwgMjU0LCAxNjcsIDI1MCwgMTU5LCAyNDQsIDUwLCAyNDAsIDIwMCwgMjUsIDI1NCwgCi0gICAgMTY3LCAyMzAsIDQsIDI0NCwgNTAsIDI0MCwgMjAwLCAyNSwgMjU0LCAxNjcsIDIxNywgMTM0LCAxMjIsIDIxNywgMTAwLCAKLSAgICAyNSwgMjU0LCAxNjcsIDIxNywgMTM0LCAyNDQsIDUwLCAyMTcsIDEwMCwgMjUsIDI1NCwgMTY3LCAyNDgsIDgsIDI0NCwgNTAsIAotICAgIDIzMCwgMjM0LCAyNSwgMjU0LCAxNjcsIDIxOSwgNTgsIDI0NCwgODQsIDIzMCwgMjM0LCAyNSwgMTIyLCAxNTEsIDUyLCAyNSwgCi0gICAgMTIyLCAxNTEsIDUsIDI1NCwgNTAsIDE3LCAyNSwgMTE3LCAyMTcsIDEyMCwgNTIsIDI1LCAxMzMsIDIyNCwgMTY1LCA1MiwgCi0gICAgMjUsIDIxMywgMzYsIDUyLCAyNSwgMjE4LCAxOSwgNTIsIDI1LCAyNDYsIDU1LCA1MiwgMjUsIDIyNywgMTEwLCA1MiwgMjUsIAotICAgIDExNywgMjI3LCAxMDksIDUyLCAyNSwgMTMzLCAyMjcsIDEwOSwgNTIsIDI1LCAyNDMsIDIzNywgMjI3LCAxMDksIDUyLCAyNSwgCi0gICAgMjQ0LCA1MCwgMjI3LCAxMDksIDUyLCAyNSwgMjMxLCAxMDIsIDUyLCAyNSwgMjMzLCAxNzksIDI1MiwgNDgsIDUyLCAyNSwgCi0gICAgMjMyLCAyMjMsIDUyLCAyNSwgMjI2LCAyNTUsIDUyLCAyNSwgMjEzLCAxNDcsIDUyLCAyNSwgMjUzLCAxNTgsIDUyLCAyNSwgCi0gICAgMjUzLCAxNzEsIDUyLCAyNSwgMjQyLCAxMjAsIDUyLCAyNSwgMjE2LCAxNDQsIDI1MiwgNDgsIDUyLCAyNSwgMjEyLCA4MCwgCi0gICAgNTIsIDIyMywgMTAwLCAyMjEsIDM0LCA1MiwgMjIzLCAxMDAsIDIxNSwgMTU1LCA1MiwgMjIzLCAxMDAsIDIyMSwgNjIsIDUyLCAKLSAgICAyMjMsIDEwMCwgMjIxLCAzMiwgNTIsIDIyMywgMTAwLCAyNDcsIDE2NSwgMjIxLCAzMiwgNTIsIDIyMywgMTAwLCAyMjAsIAotICAgIDk0LCA1MiwgMjIzLCAxMDAsIDI0OCwgNCwgNTIsIDIyMywgMTAwLCAyMjQsIDE1MSwgNTIsIDIyMywgMTAwLCAyMjEsIDUwLCAKLSAgICA1MiwgMjIzLCAxMDAsIDI0NiwgMTUsIDUyLCAyMjMsIDEwMCwgMjUzLCAxNTMsIDUyLCAyMjMsIDEwMCwgMjUwLCAxMDUsIAotICAgIDUyLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjI2LCA4OCwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIyNSwgMTU4LCAyNDEsIAotICAgIDIxOSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIxNywgMjUyLCAyNDEsIDIxOSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI1MCwgCi0gICAgMTc5LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjUwLCAzOCwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIxMywgMjA4LCAyMjYsIAotICAgIDE5LCAyNDcsIDE0MywgNSwgMjQxLCAxOTUsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNDMsIDYxLCAyMjYsIDE5LCAyNDcsIAotICAgIDE0MywgNSwgMjE3LCA3MCwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDY4LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjUxLCA5NSwgCi0gICAgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIyMCwgMjA5LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjQ5LCAxODEsIDIyNiwgMTksIAotICAgIDI0NywgMTQzLCA1LCAyMzEsIDI0NywgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIzMSwgMTk5LCAyMjYsIDE5LCAyNDcsIDE0MywgCi0gICAgNSwgMjIyLCAxMzQsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMzMsIDksIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNTEsIAotICAgIDExMywgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI1MCwgMTYzLCAyMjUsIDE2NywgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI0NywgCi0gICAgODcsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNDksIDE2MSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIyMCwgMTUsIDIyNiwgCi0gICAgMTksIDI0NywgMTQzLCA1LCAyNDksIDE2MiwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI1MSwgMjM5LCAyMjYsIDE5LCAyNDcsIAotICAgIDE0MywgNSwgMjIwLCAxOTYsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNDAsIDIzNSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIAotICAgIDI0MSwgMTYzLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjUxLCA0MSwgMjMzLCA2MCwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIAotICAgIDI1MCwgMTU2LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjI0LCA0NSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI0NSwgMTg2LCAKLSAgICAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjQ2LCA2MSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIxNiwgNjksIDIyNiwgMTksIAotICAgIDI0NywgMTQzLCA1LCAyNTEsIDI0MiwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIyNSwgMTY4LCAyMTYsIDE5MywgMjI2LCAxOSwgCi0gICAgMjQ3LCAxNDMsIDUsIDIxNCwgMTQwLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjI2LCAxNDYsIDIyNiwgMTksIDI0NywgMTQzLCAKLSAgICA1LCAyMjMsIDkyLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjMyLCAyNTIsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMjYsIAotICAgIDIzOSwgMjUyLCAxMDEsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNDQsIDE3LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjQyLCAKLSAgICAxMTUsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMTksIDU5LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMywgMjUzLCA4NCwgCi0gICAgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIxNCwgMTYsIDI1MiwgNjcsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAzNywgMjI3LCAKLSAgICAxMTIsIDkwLCAyMzIsIDEyMCwgMSwgNjEsIDIzMiwgMTIwLCAxLCA3NCwgMjMyLCAxMjAsIDEsIDI1MywgNzQsIDIzMiwgCi0gICAgMTIwLCAxLCAyNTEsIDE5NiwgMjMyLCAxMjAsIDEsIDI0MywgMTc3LCAyMzIsIDEyMCwgMSwgMjQ5LCAzLCAyMzIsIDEyMCwgCi0gICAgMSwgNzIsIDIzMiwgMTIwLCAxLCAyMTQsIDgyLCAyMzIsIDEyMCwgMSwgMjEyLCAxNTIsIDIzMiwgMTIwLCAxLCAyMTcsIAotICAgIDE2MywgMjMyLCAxMjAsIDEsIDIzNSwgMTQyLCAyMzIsIDEyMCwgMSwgMjM1LCAyNywgMjMyLCAxMjAsIDEsIDIyNCwgMjQwLCAKLSAgICAyMzIsIDEyMCwgMSwgMTUwLCAyMzIsIDEyMCwgMSwgMTgzLCAyMzIsIDEyMCwgMSwgMjA0LCAyMzIsIDEyMCwgMSwgMjMwLCAKLSAgICAyMzUsIDIzMiwgMTIwLCAxLCAyMjgsIDE5OSwgMjMyLCAxMjAsIDEsIDY5LCAyMzIsIDEyMCwgMSwgMjI2LCAyMjksIDIzMiwgCi0gICAgMTIwLCAxLCAyMzQsIDU2LCAyMzIsIDEyMCwgMSwgMTQ5LCAyMzIsIDEyMCwgMSwgMTk3LCAyMzIsIDEyMCwgMSwgMjE4LCAKLSAgICA5OSwgMjMyLCAxMjAsIDEsIDIxNiwgMTE4LCAyMzIsIDEyMCwgMSwgMjU0LCAzMiwgMjMyLCAxMjAsIDEsIDI0NSwgMTA4LCAKLSAgICAyMzIsIDEyMCwgMSwgMjQyLCA0MSwgMjMyLCAxMjAsIDEsIDIxMywgMTY2LCAyNTAsIDE2OSwgMSwgNjEsIDI1MCwgMTY5LCAKLSAgICAxLCAyMjYsIDIxNSwgMjUwLCAxNjksIDEsIDI0OSwgMywgMjUwLCAxNjksIDEsIDE1MCwgMjUwLCAxNjksIDEsIDIxNSwgOTAsIAotICAgIDI1MCwgMTY5LCAxLCAxNDksIDI1MCwgMTY5LCAxLCAyMzMsIDg2LCAyNTAsIDE2OSwgMSwgMjU0LCAyMzQsIDI1MCwgMTY5LCAKLSAgICAxLCAyMjQsIDI0MCwgMjUwLCAxNjksIDEsIDI1MywgNzQsIDI1MCwgMTY5LCAxLCAxODMsIDI1MCwgMTY5LCAxLCA3NSwgCi0gICAgMjUwLCAxNjksIDEsIDI0OCwgMTY2LCAyNTAsIDE2OSwgMSwgMjE4LCA5OSwgMjUwLCAxNjksIDEsIDIyMSwgMjYsIDI1MCwgCi0gICAgMTY5LCAxLCAyMjEsIDI1LCAyNTAsIDE2OSwgMSwgMTk3LCAyNTAsIDE2OSwgMSwgMjUwLCAyNTEsIDI1MCwgMTY5LCAxLCAKLSAgICA2OSwgMjUwLCAxNjksIDEsIDIyOCwgMTk5LCAyNTAsIDE2OSwgMSwgMjEzLCAxNjYsIDI1MCwgMTY5LCAxLCAyMDQsIDI1MCwgCi0gICAgMTY5LCAxLCAyMTYsIDExNywgMjUwLCAxNjksIDEsIDIyNiwgMjI5LCAyNTAsIDE2OSwgMSwgMjE5LCAxNTgsIDI1MCwgMTY5LCAKLSAgICAxLCA3MiwgMjUwLCAxNjksIDEsIDc0LCAyNTAsIDE2OSwgMSwgMjE1LCA4NywgMjUwLCAxNjksIDEsIDIzNSwgMjcsIDI1MCwgCi0gICAgMTY5LCAxLCAyMzUsIDE4LCAyNTAsIDE2OSwgMSwgMjI5LCAyMzAsIDI1MCwgMTY5LCAxLCAyMTUsIDkyLCAyNTAsIDE2OSwgCi0gICAgMSwgMjQzLCAxNzcsIDI1MCwgMTY5LCAxLCAyNDMsIDExMiwgMjUwLCAxNjksIDEsIDIxOSwgMTA3LCAyNTAsIDE2OSwgMSwgCi0gICAgMjE5LCAxMDYsIDI1MCwgMTY5LCAxLCAyMjksIDE2MSwgMjUwLCAxNjksIDEsIDIzNiwgMjgsIDI1MCwgMTY5LCAxLCAyNTAsIAotICAgIDI1MCwgMjUwLCAxNjksIDEsIDIxNiwgMTE4LCAyNTAsIDE2OSwgMSwgMjE1LCA4OSwgMjUwLCAxNjksIDEsIDIyMywgODIsIAotICAgIDI1MCwgMTY5LCAxLCAyMzEsIDE5MiwgMjUwLCAxNjksIDEsIDIzMSwgMTkxLCAyNTAsIDE2OSwgMSwgMjMxLCAxOTAsIDI1MCwgCi0gICAgMTY5LCAxLCAyMzEsIDE4OSwgMjUwLCAxNjksIDEsIDIzMywgODUsIDI1MCwgMTY5LCAxLCAyNDUsIDE5MCwgMjUwLCAxNjksIAotICAgIDEsIDIxNSwgODgsIDUzLCAzMiwgMSwgNjEsIDUzLCAzMiwgMSwgMjUxLCAyNTEsIDUzLCAzMiwgMSwgMjM0LCAxODgsIDUzLCAKLSAgICAzMiwgMSwgMjQ4LCA0MSwgNTMsIDMyLCAxLCA3NCwgNTMsIDMyLCAxLCAyMTQsIDIzMiwgNTMsIDMyLCAxLCAyMTIsIDg3LCAKLSAgICA1MywgMzIsIDEsIDI0MSwgMjIyLCA1MywgMzIsIDEsIDIxNywgMTQ4LCA1MywgMzIsIDEsIDcyLCA1MywgMzIsIDEsIDE4MSwgCi0gICAgNTMsIDMyLCAxLCAyNDUsIDEzMSwgNTMsIDMyLCAxLCAyNDUsIDExNywgNTMsIDMyLCAxLCAyNDUsIDEwOCwgNTMsIDMyLCAxLCAKLSAgICAyNDUsIDQwLCA1MywgMzIsIDEsIDc1LCA1MywgMzIsIDEsIDIyNiwgOTYsIDUzLCAzMiwgMSwgMjIwLCAyNDMsIDUzLCAzMiwgCi0gICAgMSwgMjMzLCAyMzgsIDUzLCAzMiwgMSwgMjQ1LCA1NSwgNTMsIDMyLCAxLCAyNDUsIDQ1LCA1MywgMzIsIDEsIDIxNywgMjI5LCAKLSAgICA1MywgMzIsIDEsIDY5LCA1MywgMzIsIDEsIDI0NSwgMTM0LCA1MywgMzIsIDEsIDIyNiwgMTIsIDUzLCAzMiwgMSwgMjM0LCAKLSAgICAxMjUsIDUzLCAzMiwgMSwgMjQ1LCAxNTksIDUzLCAzMiwgMSwgMjQ1LCA0NywgNTMsIDMyLCAxLCAyNTAsIDY3LCA1MywgMzIsIAotICAgIDEsIDIzNiwgMjgsIDUzLCAzMiwgMSwgMjE1LCA5MiwgNTMsIDMyLCAyMjgsIDU0LCAxMTYsIDUzLCAzMiwgMjI4LCA1NCwgCi0gICAgMTgwLCA1MywgMzIsIDIyOCwgNTQsIDIxNywgMjAwLCA1MywgMzIsIDIyOCwgNTQsIDI0NCwgODMsIDI0MiwgMTI5LCAxLCAKLSAgICAyNTQsIDExMSwgMjQyLCAxMjksIDEsIDI1MiwgODIsIDI0MiwgMTI5LCAxLCAyNDIsIDE4NywgMjQyLCAxMjksIDEsIDI0OCwgCi0gICAgMTQ4LCAyNDIsIDEyOSwgMSwgMjU0LCAxMDcsIDI0MiwgMTI5LCAxLCAyMjQsIDIyMywgMjQyLCAxMjksIDEsIDIzNSwgMTUzLCAKLSAgICAyNDIsIDEyOSwgMSwgMjQyLCAyMCwgMjQyLCAxMjksIDEsIDIxNywgMTExLCAyNDIsIDEyOSwgMSwgMjQ1LCAxNDAsIDI0MiwgCi0gICAgMTI5LCAxLCAyMzMsIDIxMSwgMjQyLCAxMjksIDEsIDIzMywgMTM2LCAyNDIsIDEyOSwgMSwgMjMxLCAyNDIsIDI0MiwgMTI5LCAKLSAgICAxLCAyMzAsIDYsIDI0MiwgMTI5LCAxLCAyMzUsIDEyMCwgMjQyLCAxMjksIDEsIDIxNSwgMTA3LCAyNDIsIDEyOSwgMSwgCi0gICAgMjI2LCAxOTYsIDI0MiwgMTI5LCAxLCAyMjksIDI2LCAyNDIsIDEyOSwgMSwgMjI0LCA1NiwgMjQyLCAxMjksIDEsIDIyMiwgCi0gICAgMTM2LCAyNDIsIDEyOSwgMSwgMjE3LCAyMTIsIDI0MiwgMTI5LCAxLCAyMTMsIDIxOSwgMjQyLCAxMjksIDEsIDI0NCwgMTQ2LCAKLSAgICAyNDIsIDEyOSwgMSwgMjM2LCAzMiwgMjQyLCAxMjksIDEsIDI0MCwgMTkxLCAyNDIsIDEyOSwgMSwgMjI3LCA3LCAyNDIsIAotICAgIDEyOSwgMSwgMjI5LCAzMSwgMjQwLCAyMDAsIDIxNSwgMTc5LCAxLCAyNTQsIDU2LCAyMTUsIDE3OSwgMSwgMjUxLCAyMDMsIAotICAgIDIxNSwgMTc5LCAxLCAyNDMsIDg0LCAyMTUsIDE3OSwgMSwgMjM0LCAxMzgsIDIxNSwgMTc5LCAxLCAyNDgsIDUsIDIxNSwgCi0gICAgMTc5LCAxLCAyNDEsIDU0LCAyMTUsIDE3OSwgMSwgMjEzLCAyMTQsIDIxNSwgMTc5LCAxLCAyMTIsIDc4LCAyMTUsIDE3OSwgCi0gICAgMSwgMjQwLCAyMjgsIDIxNSwgMTc5LCAxLCAyMTcsIDE4MywgMjE1LCAxNzksIDEsIDIxMiwgMjI0LCAyMTUsIDE3OSwgMSwgCi0gICAgMjM0LCAyNTQsIDIxNSwgMTc5LCAxLCAyMjAsIDIwMCwgMjE1LCAxNzksIDEsIDIzMywgMTIyLCAyMTUsIDE3OSwgMSwgMjMxLCAKLSAgICAxMjksIDIxNSwgMTc5LCAxLCAyNDcsIDIyOSwgMjE1LCAxNzksIDEsIDIyOCwgNTAsIDIxNSwgMTc5LCAxLCAyMTIsIDgsIAotICAgIDIxNSwgMTc5LCAxLCAyMjIsIDE2MywgMjE1LCAxNzksIDEsIDI1NCwgMTAzLCAyMTUsIDE3OSwgMSwgMjI1LCAzNSwgMjE1LCAKLSAgICAxNzksIDEsIDIyMiwgMTk0LCAyMTUsIDE3OSwgMSwgMjI0LCAxODAsIDIxNSwgMTc5LCAxLCAyMjQsIDM2LCAyMTUsIDE3OSwgCi0gICAgMSwgMjE3LCAxNTIsIDIxNSwgMTc5LCAxLCAyNDIsIDIyMCwgMjE1LCAxNzksIDEsIDEwOCwgMjE1LCAxNzksIDEsIDcyLCAKLSAgICAyMTUsIDE3OSwgMSwgNjksIDIxNSwgMTc5LCAxLCAyMTksIDExNywgMjE1LCAxNzksIDIxMywgMTk2LCAyNDcsIDEyNCwgNTMsIAotICAgIDIyNiwgNDUsIDUsIDYxLCA1MywgMjI2LCA0NSwgNSwgNzIsIDUzLCAyMjYsIDQ1LCA1LCA2OSwgNTMsIDIyNiwgNDUsIDUsIAotICAgIDE4MSwgNTMsIDIyNiwgNDUsIDUsIDIzMywgMjM4LCA1MywgMjI2LCA0NSwgNSwgMjQzLCAxMTAsIDUzLCAyMjYsIDQ1LCA1LCAKLSAgICAyNDIsIDkyLCA1MywgMjI2LCA0NSwgNSwgMjEzLCAxNTMsIDUzLCAyMjYsIDQ1LCA1LCAyNTAsIDIxOSwgNTMsIDIyNiwgNDUsIAotICAgIDUsIDIzNSwgMTM5LCA1MywgMjI2LCA0NSwgNSwgMjM1LCAxMTAsIDUzLCAyMjYsIDQ1LCA1LCAyMTgsIDUyLCA1MywgMjI2LCAKLSAgICA0NSwgNSwgMjE2LCA4MiwgNTMsIDIyNiwgNDUsIDUsIDI0OCwgMTY0LCA1MywgMjI2LCA0NSwgNSwgMjQ3LCAyMTEsIDUzLCAKLSAgICAyMjYsIDQ1LCA1LCAyNDYsIDMzLCA1MywgMjI2LCA0NSwgNSwgMjE3LCAxNjEsIDUzLCAyMjYsIDQ1LCA1LCAxOTMsIDUzLCAKLSAgICAyMjYsIDQ1LCA1LCAyNTIsIDEwNywgNTMsIDIyNiwgNDUsIDUsIDI0NCwgMTY0LCA1MywgMjI2LCA0NSwgNSwgMjA1LCA1MywgCi0gICAgMjI2LCA0NSwgNSwgMjI4LCA5MiwgNTMsIDIyNiwgNDUsIDUsIDE4OCwgNTMsIDIyNiwgNDUsIDUsIDIzMSwgNDIsIDUzLCAKLSAgICAyMjYsIDQ1LCA1LCAyMzAsIDE3MiwgNTMsIDIyNiwgNDUsIDUsIDE4NiwgNTMsIDIyNiwgNDUsIDUsIDIxNSwgMSwgNTMsIAotICAgIDIyNiwgNDUsIDUsIDIxNCwgMTU0LCA1MywgMjI2LCA0NSwgNSwgMjAzLCA1MywgMjI2LCA0NSwgNSwgMjIzLCA1MSwgNTMsIAotICAgIDIyNiwgNDUsIDUsIDIzMywgMTU3LCA1MywgMjI2LCA0NSwgNSwgMjIyLCAyMDIsIDUzLCAyMjYsIDQ1LCA1LCAyMTIsIDEwOSwgCi0gICAgNTMsIDIyNiwgNDUsIDUsIDIyMSwgMjQsIDUzLCAyMjYsIDQ1LCA1LCAyMTksIDE1NywgNTMsIDIyNiwgNDUsIDUsIDE1OSwgCi0gICAgNTMsIDIyNiwgNDUsIDUsIDI1MywgMTAyLCA1MywgMjI2LCA0NSwgNSwgMjUzLCAxMDEsIDUzLCAyMjYsIDQ1LCA1LCAyNTMsIAotICAgIDEwMCwgNTMsIDIyNiwgNDUsIDUsIDIxMywgMTMwLCA1MywgMjI2LCA0NSwgNSwgMjQ4LCAxNDUsIDUzLCAyMjYsIDQ1LCA1LCAKLSAgICAyNDgsIDE0NCwgNTMsIDIyNiwgNDUsIDUsIDI1MiwgODgsIDUzLCAyMjYsIDQ1LCA1LCAyNTEsIDE0LCA1MywgMjI2LCA0NSwgCi0gICAgMjEzLCAxOTYsIDI0NywgMTI0LCA1MywgMjI2LCA0NSwgNTAsIDExNiwgNTMsIDIyNiwgNDUsIDUwLCAxMDksIDUzLCAyMjYsIAotICAgIDQ1LCA1MCwgMjE3LCAyMDAsIDUzLCAyMjYsIDQ1LCA1MCwgMjE2LCAzOCwgNTMsIDIyNiwgNDUsIDUwLCAyNDAsIDIwMCwgCi0gICAgMTcxLCA2LCAxLCAxODQsIDcyLCAxNzEsIDYsIDEsIDE4NCwgNzQsIDE3MSwgNiwgMSwgMTg0LCA2MSwgMTcxLCA2LCAxLCAKLSAgICAxODQsIDI1NCwgMTE0LCAxNzEsIDYsIDEsIDE4NCwgNzUsIDE3MSwgNiwgMSwgMTg0LCAyMjcsIDQ5LCAxNzEsIDYsIDEsIAotICAgIDIyMCwgMTc1LCA3MiwgMTcxLCA2LCAxLCAyMjAsIDE3NSwgNzQsIDE3MSwgNiwgMSwgMjIwLCAxNzUsIDYxLCAxNzEsIDYsIAotICAgIDEsIDIyMCwgMTc1LCAyNTQsIDExNCwgMTcxLCA2LCAxLCAyMjAsIDE3NSwgNzUsIDE3MSwgNiwgMSwgMjIwLCAxNzUsIDIyNywgCi0gICAgNDksIDE3MSwgNiwgMSwgMjUzLCA4MywgMTcxLCA2LCAxLCAyMjYsIDI0MCwgMTcxLCA2LCAxLCAyMTMsIDE4MywgMTcxLCA2LCAKLSAgICAxLCAyMTMsIDM1LCAxNzEsIDYsIDEsIDI0MiwgNDEsIDE3MSwgNiwgMSwgMjI2LCA4NiwgMTcxLCA2LCAxLCAyNTEsIDI0MiwgCi0gICAgMTcxLCA2LCAxLCAyMTcsIDIxOSwgMTcxLCA2LCAxLCAyNDgsIDI4LCAxNzEsIDYsIDEsIDI1MCwgNjQsIDE3MSwgNiwgMSwgCi0gICAgMjM1LCAxMjUsIDE3MSwgNiwgMSwgMjM0LCAxOTUsIDE3MSwgNiwgMSwgMjQzLCA1OSwgMTcxLCA2LCAxLCAyNDUsIDE1OSwgCi0gICAgMTcxLCA2LCAxLCAyMTQsIDIyNywgMTcxLCA2LCAxLCAyNDUsIDI1LCAxNzEsIDYsIDEsIDIxNywgMTQ3LCAxNzEsIDYsIDEsIAotICAgIDI0NSwgNDUsIDE3MSwgNiwgMSwgMjEyLCA4NSwgMTcxLCA2LCAxLCAyNDUsIDQwLCAxNzEsIDYsIDEsIDIxMiwgNjYsIDE3MSwgCi0gICAgNiwgMSwgMjQ1LCA1NSwgMTcxLCA2LCAxLCAyNDUsIDEzMSwgMTcxLCA2LCAxLCAyNDUsIDExNywgMTcxLCA2LCAxLCAyNDUsIAotICAgIDEwOCwgMTcxLCA2LCAxLCAyNDUsIDk2LCAxNzEsIDYsIDEsIDIyNywgODUsIDE3MSwgNiwgMSwgMjQ1LCA1LCAxNzEsIDMsIAotICAgIDEsIDE4NCwgNzIsIDE3MSwgMywgMSwgMTg0LCA3NCwgMTcxLCAzLCAxLCAxODQsIDYxLCAxNzEsIDMsIDEsIDE4NCwgMjU0LCAKLSAgICAxMTQsIDE3MSwgMywgMSwgMTg0LCA3NSwgMTcxLCAzLCAxLCAxODQsIDIyNywgNDksIDE3MSwgMywgMSwgMjIwLCAxNzUsIAotICAgIDcyLCAxNzEsIDMsIDEsIDIyMCwgMTc1LCA3NCwgMTcxLCAzLCAxLCAyMjAsIDE3NSwgNjEsIDE3MSwgMywgMSwgMjIwLCAKLSAgICAxNzUsIDI1NCwgMTE0LCAxNzEsIDMsIDEsIDIyMCwgMTc1LCA3NSwgMTcxLCAzLCAxLCAyMjAsIDE3NSwgMjI3LCA0OSwgCi0gICAgMTcxLCAzLCAxLCAyNTMsIDgzLCAxNzEsIDMsIDEsIDIyNiwgMjQwLCAxNzEsIDMsIDEsIDIxMywgMTgzLCAxNzEsIDMsIDEsIAotICAgIDIxMywgMzUsIDE3MSwgMywgMSwgMjQyLCA0MSwgMTcxLCAzLCAxLCAyMjYsIDg2LCAxNzEsIDMsIDEsIDI1MSwgMjQyLCAKLSAgICAxNzEsIDMsIDEsIDIxNywgMjE5LCAxNzEsIDMsIDEsIDI0OCwgMjgsIDE3MSwgMywgMSwgMjUwLCA2NCwgMTcxLCAzLCAxLCAKLSAgICAyMzUsIDEyNSwgMTcxLCAzLCAxLCAyMzQsIDE5NSwgMTcxLCAzLCAxLCAyNDMsIDU5LCAxNzEsIDMsIDEsIDI0NSwgMTU5LCAKLSAgICAxNzEsIDMsIDEsIDIxNCwgMjI3LCAxNzEsIDMsIDEsIDI0NSwgMjUsIDE3MSwgMywgMSwgMjE3LCAxNDcsIDE3MSwgMywgMSwgCi0gICAgMjQ1LCA0NSwgMTcxLCAzLCAxLCAyMTIsIDg1LCAxNzEsIDMsIDEsIDI0NSwgNDAsIDE3MSwgMywgMSwgMjEyLCA2NiwgMTcxLCAKLSAgICAzLCAxLCAyNDUsIDU1LCAxNzEsIDMsIDEsIDI0NSwgMTMxLCAxNzEsIDMsIDEsIDI0NSwgMTE3LCAxNzEsIDMsIDEsIDI0NSwgCi0gICAgMTA4LCAxNzEsIDMsIDEsIDI0NSwgOTYsIDE3MSwgMywgMSwgMjI3LCA4NSwgMTcxLCAzLCAxLCAyNDUsIDUsIDIyMCwgMjQ5LCAKLSAgICAxLCAyMjYsIDg0LCAyMjAsIDI0OSwgMSwgMjE2LCAyMTgsIDIyMCwgMjQ5LCAxLCAyMzQsIDEwMCwgMjIwLCAyNDksIDEsIAotICAgIDI0NCwgMTE2LCAyMjAsIDI0OSwgMSwgMjE3LCAxMjUsIDIyMCwgMjQ5LCAxLCAyMTksIDI0MiwgMjIwLCAyNDksIDEsIDIxOCwgCi0gICAgMjE0LCAyMjAsIDI0OSwgMSwgMjQ5LCAyNTQsIDIyMCwgMjQ5LCAxLCAyMTMsIDM3LCAyMjAsIDI0OSwgMSwgMjQwLCAxOTksIAotICAgIDIyMCwgMjQ5LCAxLCAyNTEsIDE4MywgMjIwLCAyNDksIDEsIDI0OCwgNDAsIDIyMCwgMjQ5LCAxLCAyNDMsIDk2LCAyMjAsIAotICAgIDI0OSwgMSwgMjE0LCAxMDQsIDIyMCwgMjQ5LCAxLCAyMTcsIDEyOSwgMjIwLCAyNDksIDEsIDIxMiwgMTQsIDIyMCwgMjQ5LCAKLSAgICAxLCAyMzEsIDE1NCwgMjIwLCAyNDksIDEsIDIzNSwgNTIsIDIyMCwgMjQ5LCAxLCAyMTMsIDIxMiwgMjIwLCAyNDksIDEsIAotICAgIDI0MiwgMjksIDIyMCwgMjQ5LCAxLCAyMzIsIDE5NSwgMjIwLCAyNDksIDEsIDIzMSwgMiwgMjIwLCAyNDksIDEsIDIzNiwgCi0gICAgMzUsIDIyMCwgMjQ5LCAxLCAyNDUsIDE1OCwgMjIwLCAyNDksIDEsIDI1MywgMTQ2LCAyMjAsIDI0OSwgMSwgMjU0LCAxNTIsIAotICAgIDIyMCwgMjQ5LCAxLCAyMjcsIDYyLCAyMjAsIDI0OSwgMSwgMjEzLCAxOTksIDIyMCwgMjQ5LCAxLCAyMjYsIDI1NCwgMjIwLCAKLSAgICAyNDksIDEsIDI1NCwgMTE0LCAyMjAsIDI0OSwgMSwgMjIzLCAxMDksIDIyMCwgMjQ5LCAxLCAyMjgsIDUwLCAyMjAsIDI0OSwgCi0gICAgMSwgMjQ1LCAxNzMsIDIyMCwgMjQ5LCAxLCAyNTQsIDExOSwgMjIwLCAyNDksIDEsIDI0MCwgMTA0LCAyMjAsIDI0OSwgMSwgCi0gICAgMjE1LCAxMzQsIDIyMCwgMjQ5LCAxLCAyMjcsIDExOCwgMjIwLCAyNDksIDEsIDIyNywgNDIsIDIyMCwgMjQ5LCAxLCAyMjcsIAotICAgIDg0LCAyMjAsIDI0OSwgMSwgMjUzLCA4NiwgMjIwLCAyNDksIDEsIDI1MywgMTg5LCAyMjAsIDI0OSwgMSwgMjI3LCAyNCwgCi0gICAgMjIwLCAyNDksIDEsIDI1NCwgMTAwLCAyMjAsIDI0OSwgMSwgMjQ1LCA0OSwgMjIwLCAyNDksIDEsIDI1MywgMTY4LCAyMjAsIAotICAgIDI0OSwgMSwgMjQ1LCAxODMsIDIyMCwgMjQ5LCAxLCAyNDAsIDExMCwgMjIwLCAyNDksIDEsIDIxMywgNCwgMjI3LCA5LCAxLCAKLSAgICAyNTQsIDc4LCAyMjcsIDksIDEsIDI1MiwgMTA3LCAyMjcsIDksIDEsIDIxOCwgNTIsIDIyNywgOSwgMSwgMjM1LCAxMzksIAotICAgIDIyNywgOSwgMSwgMjEzLCAxNTMsIDIyNywgOSwgMSwgMjM0LCAxMzgsIDIyNywgOSwgMSwgMjQ4LCAyNywgMjI3LCA5LCAxLCAKLSAgICAyMDMsIDIyNywgOSwgMSwgMjIyLCAyMDIsIDIyNywgOSwgMSwgMjIwLCAyMDYsIDIyNywgOSwgMSwgMjQ3LCAyMzIsIDIyNywgCi0gICAgOSwgMSwgMjUwLCAxNDgsIDIyNywgOSwgMSwgMjQzLCAxMTAsIDIyNywgOSwgMSwgMjQ0LCAxNjQsIDIyNywgOSwgMSwgMjI0LCAKLSAgICAyMzAsIDIyNywgOSwgMSwgMjM1LCAxMywgMjI3LCA5LCAxLCAyMzMsIDE1MiwgMjI3LCA5LCAxLCAyMzEsIDEzLCAyMjcsIDksIAotICAgIDEsIDIyOCwgMzUsIDIyNywgOSwgMSwgMjE0LCAxNCwgMjI3LCA5LCAxLCAxNTksIDIyNywgOSwgMSwgMTg2LCAyMjcsIDksIAotICAgIDEsIDYxLCAyMjcsIDksIDEsIDc0LCAyMjcsIDksIDEsIDcyLCAyMjcsIDksIDEsIDc1LCAyMjcsIDksIDEsIDY5LCAyMjcsIAotICAgIDksIDEsIDI1NCwgMjMyLCAyMjcsIDksIDEsIDI0NSwgMTY1LCAyMjcsIDksIDEsIDIyNywgNDksIDIyNywgOSwgMjEsIDIxMiwgCi0gICAgNzksIDIyNywgOSwgMjEsIDExNiwgMjI3LCA5LCAyMSwgMTA5LCAyMjcsIDksIDIxLCAxNjYsIDIyNywgOSwgMjEsIDE2MywgCi0gICAgMjI3LCA5LCAyMSwgMTgwLCAyMjcsIDksIDIxLCAxODksIDIyNywgOSwgMjEsIDE5OCwgMjI3LCA5LCAyMSwgMTk1LCAyMjcsIAotICAgIDksIDIxLCAyMDAsIDI0OSwgMTAsIDQsIDYxLCAyNDksIDEwLCA0LCA3NCwgMjQ5LCAxMCwgNCwgNzIsIDI0OSwgMTAsIDQsIAotICAgIDc1LCAyNDksIDEwLCA0LCA2OSwgMjQ5LCAxMCwgNCwgMjM1LCAxMzksIDI0OSwgMTAsIDQsIDIzNSwgNzEsIDI0OSwgMTAsIAotICAgIDQsIDE4MSwgMjQ5LCAxMCwgNCwgMjM0LCAxODgsIDI0OSwgMTAsIDQsIDIzNCwgMTAxLCAyNDksIDEwLCA0LCAyMzQsIDM3LCAKLSAgICAyNDksIDEwLCA0LCAyMzMsIDIzOCwgMjQ5LCAxMCwgNCwgMjMzLCAxNTcsIDI0OSwgMTAsIDQsIDIzMywgODIsIDI0OSwgMTAsIAotICAgIDQsIDIzMywgMTMsIDI0OSwgMTAsIDQsIDIzMiwgMjA4LCAyNDksIDEwLCA0LCAyMzIsIDE1NiwgMjQ5LCAxMCwgNCwgMTg4LCAKLSAgICAyNDksIDEwLCA0LCAyMzEsIDE1NiwgMjQ5LCAxMCwgNCwgMjMxLCA0MiwgMjQ5LCAxMCwgNCwgMjMwLCAyMzEsIDI0OSwgMTAsIAotICAgIDQsIDIzMCwgMTcyLCAyNDksIDEwLCA0LCAyMDUsIDI0OSwgMTAsIDQsIDIyOSwgMTg3LCAyNDksIDEwLCA0LCAyMjksIDY0LCAKLSAgICAyNDksIDEwLCA0LCAyMjgsIDE4NSwgMjQ5LCAxMCwgNCwgMjI4LCA5MiwgMjQ5LCAxMCwgNCwgMTkzLCAyNDksIDEwLCA0LCAKLSAgICAyMjYsIDk2LCAyNDksIDEwLCA0LCAyMjUsIDI0MCwgMjQ5LCAxMCwgNCwgMjI1LCAxNTAsIDI0OSwgMTAsIDQsIDIyNSwgMzUsIAotICAgIDI0OSwgMTAsIDQsIDIwMywgMjQ5LCAxMCwgNCwgMjI0LCAyMSwgMjQ5LCAxMCwgNCwgMjIzLCAxODgsIDI0OSwgMTAsIDQsIAotICAgIDIyMywgMTEyLCAyNDksIDEwLCA0LCAyMjMsIDUxLCAyNDksIDEwLCA0LCAyMjIsIDIwMiwgMjQ5LCAxMCwgNCwgMjIyLCAKLSAgICAxMDAsIDI0OSwgMTAsIDQsIDIyMCwgMTE3LCAyNDksIDEwLCA0LCAyMTksIDI0MiwgMjQ5LCAxMCwgNCwgMjE5LCAyNywgCi0gICAgMjQ5LCAxMCwgNCwgMjE4LCA1MiwgMjQ5LCAxMCwgNCwgMjE3LCAyMjksIDI0OSwgMTAsIDQsIDIxNywgNzEsIDI0OSwgMTAsIAotICAgIDQsIDEwOCwgMjQ5LCAxMCwgNCwgMjE2LCA4MiwgMjQ5LCAxMCwgNCwgMjE0LCA0OSwgMjQ5LCAxMCwgNCwgMjE0LCA2LCAKLSAgICAyNDksIDEwLCA0LCAyMTMsIDIzNSwgMjQ5LCAxMCwgNCwgMjEzLCAyMTQsIDI0OSwgMTAsIDQsIDIxMywgMTUzLCAyNDksIAotICAgIDEwLCA0LCAyMTMsIDE1MCwgMjQ5LCAxMCwgNCwgMjEyLCAxMDksIDI0OSwgMTAsIDQsIDIxMiwgMTYsIDIzNSwgMjUzLCAKLSAgICAyNTMsIDE5NywgMSwgMjU0LCA3NiwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyNTEsIDIwMiwgMjM1LCAyNTMsIDI1MywgCi0gICAgMTk3LCAxLCAyNDIsIDE3NywgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyNDgsIDEzMywgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAKLSAgICAyNDEsIDIyMiwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMTQsIDE0LCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDIxMiwgOTAsIAotICAgIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjQxLCAxODAsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjE3LCAxNzksIDIzNSwgCi0gICAgMjUzLCAyNTMsIDE5NywgMSwgMjEyLCAyMjMsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjM0LCAyMzAsIDIzNSwgMjUzLCAKLSAgICAyNTMsIDE5NywgMSwgMjMzLCAxMTcsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjMxLCAxMjksIDIzNSwgMjUzLCAyNTMsIAotICAgIDE5NywgMSwgMjI4LCA1MCwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMjIsIDE2NCwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAKLSAgICAyNTMsIDc4LCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDIyNiwgOTYsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjIyLCAxOTMsIAotICAgIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjI0LCAxNzksIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjIzLCAyMTksIDIzNSwgCi0gICAgMjUzLCAyNTMsIDE5NywgMSwgMjIwLCAyMDAsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjE3LCAyNDMsIDIzNSwgMjUzLCAKLSAgICAyNTMsIDE5NywgMjIyLCA5MiwgNTIsIDIzNSwgMjUzLCAyNTMsIDE5NywgNTAsIDExNiwgMjM1LCAyNTMsIDI1MywgMTk3LCAKLSAgICA1MCwgMTA5LCAyMzUsIDI1MywgMjUzLCAxOTcsIDUwLCAxNjYsIDIzNSwgMjUzLCAyNTMsIDE5NywgNTAsIDIxNywgMjAwLCAKLSAgICAyMzUsIDI1MywgMjUzLCAxOTcsIDUwLCAyMTYsIDM4LCAyMzUsIDI1MywgMjUzLCAxOTcsIDUwLCAxMjIsIDI0MCwgMjAwLCAKLSAgICAyMzUsIDI1MywgMjUzLCAxOTcsIDUwLCAxMjIsIDIxNywgMTAwLCAyMzUsIDI1MywgMjUzLCAxOTcsIDUwLCAyMTcsIDIwMSwgCi0gICAgMjE3LCAxMDAsIDIyNSwgMjUxLCAxLCAyNTQsIDc0LCAyMjUsIDI1MSwgMSwgMjUxLCAyMDUsIDIyNSwgMjUxLCAxLCAyNDMsIAotICAgIDg1LCAyMjUsIDI1MSwgMSwgMjQ4LCA3LCAyMjUsIDI1MSwgMSwgMjQxLCAyMjIsIDIyNSwgMjUxLCAxLCAyMTQsIDIxLCAKLSAgICAyMjUsIDI1MSwgMSwgMjEyLCAxMDMsIDIyNSwgMjUxLCAxLCAyNDEsIDE4MiwgMjI1LCAyNTEsIDEsIDIxNywgMTgzLCAyMjUsIAotICAgIDI1MSwgMSwgMjEyLCAyMjQsIDIyNSwgMjUxLCAxLCAyMzQsIDI1NCwgMjI1LCAyNTEsIDEsIDIzMywgMTIzLCAyMjUsIDI1MSwgCi0gICAgMSwgMjMxLCAxMjksIDIyNSwgMjUxLCAxLCAyMjgsIDUwLCAyMjUsIDI1MSwgMSwgMjIxLCA2NCwgMjI1LCAyNTEsIDEsIAotICAgIDI1NCwgMTAzLCAyMjUsIDI1MSwgMSwgMjI2LCA5NiwgMjI1LCAyNTEsIDEsIDIyMiwgMTk0LCAyMjUsIDI1MSwgMSwgMjI0LCAKLSAgICAxODQsIDIyNSwgMjUxLCAxLCAyMjMsIDkxLCAyMjUsIDI1MSwgMSwgMjIwLCAyMDAsIDIyNSwgMjUxLCAxLCAyMTcsIDI0OCwgCi0gICAgMjI1LCAyNTEsIDUwLCAxMTYsIDIyNSwgMjUxLCA1MCwgMjE3LCAyMDAsIDIyNSwgMjUxLCA1MCwgMjE2LCAzOCwgMjI1LCAKLSAgICAyNTEsIDUwLCAxMjIsIDI0MCwgMjAwLCAyMjUsIDI1MSwgNTAsIDEwOSwgMjI1LCAyNTEsIDUwLCAxNjYsIDIyNSwgMjUxLCAKLSAgICAyMTMsIDE5NiwgMjIxLCA1NywgMjMyLCAxMTksIDEsIDYxLCAyMzIsIDExOSwgMSwgMjUzLCA3NCwgMjMyLCAxMTksIDEsIAotICAgIDI0MywgMTc3LCAyMzIsIDExOSwgMSwgMjQ5LCAzLCAyMzIsIDExOSwgMSwgNzQsIDIzMiwgMTE5LCAxLCAyMTUsIDc5LCAKLSAgICAyMzIsIDExOSwgMSwgNzIsIDIzMiwgMTE5LCAxLCAyMTMsIDEwNSwgMjMyLCAxMTksIDEsIDIzNSwgMjcsIDIzMiwgMTE5LCAKLSAgICAxLCAxNTAsIDIzMiwgMTE5LCAxLCAxODMsIDIzMiwgMTE5LCAxLCAyMDQsIDIzMiwgMTE5LCAxLCA3NSwgMjMyLCAxMTksIDEsIAotICAgIDE0OSwgMjMyLCAxMTksIDEsIDIxOSwgMTU4LCAyMzIsIDExOSwgMSwgMjE4LCA5OSwgMjMyLCAxMTksIDEsIDY5LCAyMzIsIAotICAgIDExOSwgMSwgMjQ0LCAyMzAsIDIzMiwgMTE5LCAxLCAyMjQsIDI0MCwgMjMyLCAxMTksIDEsIDE5NywgMjMyLCAxMTksIDEsIAotICAgIDIxNiwgMTE4LCAyMzIsIDExOSwgMSwgMjU0LCAzMiwgMjMyLCAxMTksIDEsIDI0NSwgMTA4LCAyMzIsIDExOSwgMSwgMjMyLCAKLSAgICAxMjEsIDIzMiwgMTE5LCAxLCAyMjgsIDE5OSwgMjMyLCAxMTksIDEsIDI1MCwgMjUyLCAyMzIsIDExOSwgMjE2LCAxODAsIAotICAgIDc3LCAyMzQsIDEyNiwgMSwgNjEsIDIzNCwgMTI2LCAzMCwgNSwgNzIsIDIzNCwgMTI2LCAzMCwgNSwgNjksIDIzNCwgMTI2LCAKLSAgICAzMCwgNSwgMTYxLCAxNDksIDIzNCwgMTI2LCAzMCwgNSwgNzQsIDIzNCwgMTI2LCAzMCwgNSwgNzUsIDIzNCwgMTI2LCAzMCwgCi0gICAgMjMzLCA0NywgNzcsIDIzNCwgMTI2LCA1LCA1MSwgMjIzLCAxMzEsIDU1LCAyMzQsIDEyNiwgNSwgMjUzLCAyNDIsIDIzNCwgCi0gICAgMTI2LCA1LCAyMTQsIDEyOCwgMjM0LCAxMjYsIDEsIDE4MSwgMjM0LCAxMjYsIDEsIDIzNCwgMTM4LCAyMzQsIDEyNiwgMSwgCi0gICAgMjQzLCAxMTAsIDIzNCwgMTI2LCAxLCAyNDIsIDIyNSwgMjM0LCAxMjYsIDEsIDI1MCwgMjE5LCAyMzQsIDEyNiwgMSwgMjUwLCAKLSAgICA5MiwgMjM0LCAxMjYsIDEsIDIzNSwgMTM5LCAyMzQsIDEyNiwgMSwgMjI4LCAyMywgMjM0LCAxMjYsIDEsIDIxNiwgMTE1LCAKLSAgICAyMzQsIDEyNiwgMSwgMjE2LCAxMDUsIDIzNCwgMTI2LCAxLCAyNDgsIDg2LCAyMzQsIDEyNiwgMSwgMjQ4LCA3MCwgMjM0LCAKLSAgICAxMjYsIDEsIDIyOCwgMTk4LCAyMzQsIDEyNiwgMSwgMjE4LCA1MiwgMjM0LCAxMjYsIDEsIDIxNywgMTYxLCAyMzQsIDEyNiwgCi0gICAgMSwgMjQ4LCAxNjQsIDIzNCwgMTI2LCAxLCAyNDcsIDIzMiwgMjM0LCAxMjYsIDEsIDIwNSwgMjM0LCAxMjYsIDEsIDE5MywgCi0gICAgMjM0LCAxMjYsIDEsIDIyNiwgMjMsIDIzNCwgMTI2LCAxLCAyNTIsIDEwNywgMjM0LCAxMjYsIDEsIDI1MSwgMTk1LCAyMzQsIAotICAgIDEyNiwgMSwgMTg4LCAyMzQsIDEyNiwgMSwgMTg2LCAyMzQsIDEyNiwgMSwgMjAzLCAyMzQsIDEyNiwgMSwgMjMzLCAxNTcsIAotICAgIDIzNCwgMTI2LCAxLCAyMTUsIDEsIDIzNCwgMTI2LCAxLCAyMjEsIDI0LCAyMzQsIDEyNiwgMSwgMjE5LCAxNTcsIDIzNCwgCi0gICAgMTI2LCAxLCAyMjIsIDIwMiwgMjM0LCAxMjYsIDEsIDIxMiwgMTA5LCAyMzQsIDEyNiwgMSwgMTU5LCAyMzQsIDEyNiwgMSwgCi0gICAgMjM0LCA1NSwgMjM0LCAxMjYsIDEsIDIxNiwgODcsIDIzNCwgMTI2LCA1LCAyNTIsIDYwLCA0OSwgMjM0LCAxMjYsIDUsIAotICAgIDI1MCwgMTU0LCAyMzQsIDEyNiwgNSwgNjIsIDU1LCAyMzQsIDEyNiwgMjE0LCAxMzMsIDIzNCwgMTI2LCAyMSwgMTE2LCAKLSAgICAyMzQsIDEyNiwgMjEsIDEwOSwgMjM0LCAxMjYsIDIxLCAxNjYsIDIzNCwgMTI2LCAyMSwgMTYzLCAyMzQsIDEyNiwgNTAsIAotICAgIDIxNywgMjAwLCAyMzQsIDEyNiwgNTAsIDIxNiwgMzgsIDIzNCwgMTI2LCA1MCwgMTIyLCAyNDAsIDIwMCwgMjM0LCAxMjYsIAotICAgIDUwLCAxMjIsIDIxNywgMTAwLCAyMzQsIDEyNiwgMjI1LCAyNywgMjQ3LCA3NCwgMjM0LCAxMjYsIDIyNSwgMjcsIDMsIDI0OSwgCi0gICAgMjI4LCAyMzQsIDEyNiwgMjI1LCAyNywgMjQ5LCAyMjgsIDIzNCwgMTI2LCAyMjUsIDI3LCAyNDksIDc3LCAxMzQsIDIzNCwgCi0gICAgMTI2LCAyMjUsIDI3LCAyMzEsIDI0MywgMjM0LCAxMjYsIDIyNSwgMjcsIDIzMiwgMTcwLCAyMzQsIDEyNiwgMjI1LCAyNywgCi0gICAgMjQ4LCAxMjMsIDIzNCwgMTI2LCAyMjUsIDI3LCA1MSwgMjQ4LCAxMjMsIDIzNCwgMTI2LCAyMjUsIDI3LCAyMzIsIDIzNiwgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjQxLCAyMjIsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIzMywgMTE3LCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNDEsIDE4MCwgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjMxLCAxMjksIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIyNCwgMTc5LCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMTQsIDE0LCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMjAsIDIwMCwgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjIzLCAyMTksIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDI1MSwgMjAyLCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMTcsIDI0MywgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjIyLCAxNDIsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIzNCwgMjMwLCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMjgsIDUwLCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMzQsIDEyMiwgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjIyLCAxOTMsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIyMiwgMTY0LCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNDQsIDEyMywgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjU0LCA3OCwgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjUzLCA3NywgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjQ3LCAyMzAsIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDI0MiwgMTc3LCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNDgsIDEzMywgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjQyLCAyMTQsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIxNywgMTc5LCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMTIsIDg5LCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNDcsIDIyNywgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjEyLCAyMjMsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIxNywgMTUwLCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMTcsIDEzMSwgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgNTAsIDExNiwgNTMsIAotICAgIDIxOSwgMjE1LCAyNTMsIDIwOCwgNTAsIDI0NCwgODMsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEyOCwgMjM1LCAyMzUsIAotICAgIDI1MywgODgsIDEsIDYxLCAyNTMsIDg4LCAxLCAyNTQsIDIzMiwgMjUzLCA4OCwgMSwgMjUzLCAyNDAsIDI1MywgODgsIDEsIAotICAgIDI1NCwgMTkxLCAyNTMsIDg4LCAxLCAyNTQsIDMyLCAyNTMsIDg4LCAxLCAyNTQsIDE5MiwgMjUzLCA4OCwgMSwgMjU0LCAKLSAgICAxNDgsIDI1MywgODgsIDEsIDI1NCwgMTQ0LCAyNTMsIDg4LCAxLCA3NCwgMjUzLCA4OCwgMSwgMjQ1LCAxNjUsIDI1MywgODgsIAotICAgIDEsIDc1LCAyNTMsIDg4LCAxLCAyMjcsIDQ5LCAyNTMsIDg4LCAxLCA3MiwgMjUzLCA4OCwgMSwgMjM2LCAyOCwgMjUzLCA4OCwgCi0gICAgMSwgNjksIDI1MywgODgsIDEsIDIxNSwgOTIsIDI1MywgODgsIDEsIDIzNCwgMTg4LCAyNTMsIDg4LCAxLCAyMTMsIDE1MCwgCi0gICAgMjUzLCA4OCwgMSwgMjEzLCAxMTYsIDI1MywgODgsIDEsIDIxMywgMTI1LCAyNTMsIDg4LCAxLCAyNDMsIDM4LCAyNTMsIDg4LCAKLSAgICAxLCAyNDMsIDAsIDI1MywgODgsIDEsIDI0MiwgMjEyLCAyNTMsIDg4LCAxLCAyNTAsIDEyNCwgMjUzLCA4OCwgMSwgMjM1LCAKLSAgICAxMjcsIDI1MywgODgsIDEsIDIxNywgMjI5LCAyNTMsIDg4LCAxLCAyMTcsIDE0OCwgMjUzLCA4OCwgMSwgMjQ4LCA0MSwgCi0gICAgMjUzLCA4OCwgMSwgMjQ3LCAyMjUsIDI1MywgODgsIDEsIDIxNiwgMTEyLCAyNTMsIDg4LCAxLCAyMjYsIDk2LCAyNTMsIDg4LCAKLSAgICAxLCAyNDQsIDEyMywgMjUzLCA4OCwgMSwgMjUxLCAyNTEsIDI1MywgODgsIDEsIDI1MSwgMTkyLCAyNTMsIDg4LCAxLCAyMjksIAotICAgIDE0OCwgMjUzLCA4OCwgMSwgMjI5LCA3MCwgMjUzLCA4OCwgMSwgMjI5LCA3MSwgMjUzLCA4OCwgMSwgMjI5LCAxODcsIDI1MywgCi0gICAgODgsIDEsIDIyOCwgMTcsIDI1MywgODgsIDEsIDIyOCwgMTk3LCAyNTMsIDg4LCAxLCAyMzEsIDE1NiwgMjUzLCA4OCwgMSwgCi0gICAgMjQxLCAxMDIsIDI1MywgODgsIDEsIDIxMiwgMTU5LCAyNTMsIDg4LCAxLCAyMTMsIDM4LCAyNTMsIDg4LCAxLCAyMTQsIAotICAgIDIzMiwgMjUzLCA4OCwgMSwgMjI0LCAyMSwgMjUzLCA4OCwgMSwgMjMzLCA4MiwgMjUzLCA4OCwgMSwgMjIyLCAxMDAsIDI1MywgCi0gICAgODgsIDEsIDIxMiwgODcsIDI1MywgODgsIDEsIDIyMCwgMjQzLCAyNTMsIDg4LCAxLCAyMTIsIDY3LCAyNTMsIDg4LCAxLCAKLSAgICAyMjAsIDEyNCwgMjUzLCA4OCwgMSwgMjE5LCAxMjksIDI1MywgODgsIDEsIDI0MSwgMjIyLCAyNTMsIDg4LCAyNTQsIDE4MSwgCi0gICAgNzcsIDIxNywgMzIsIDExNywgMTc2LCAxMTAsIDEyMiwgNjIsIDIyNSwgMjYsIDMsIDExNywgMTc2LCAxMTAsIDEyMiwgNjIsIAotICAgIDIyNSwgMjYsIDIzMywgMTA4LCAxMTcsIDE3NiwgMTEwLCAxMjIsIDYyLCAyMjUsIDI2LCAyMzMsIDEwOCwgMTIyLCA2MiwgCi0gICAgMTEwLCAxMTcsIDE3NiwgMjI1LCAyNiwgMjMzLCAxMDgsIDExNywgMjIzLCAxMjksIDExMCwgMTIyLCAyMjMsIDEzMSwgMjI1LCAKLSAgICAyNiwgMjMzLCAxMDgsIDEyMiwgMjIzLCAxMzEsIDExMCwgMTE3LCAyMjMsIDEyOSwgMjI1LCAyNiwgMjM1LCAyMTUsIDIyNiwgCi0gICAgMTI2LCAxLCAyNTQsIDc2LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDI1MSwgMjAyLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIAotICAgIDI0MiwgMTc3LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDI0OCwgMTMzLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDI0MSwgCi0gICAgMjIyLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDIxNCwgMTQsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjEyLCA5MCwgMjM1LCAKLSAgICAyMTUsIDIyNiwgMTI2LCAxLCAyNDEsIDE4MCwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMTcsIDE3OSwgMjM1LCAyMTUsIAotICAgIDIyNiwgMTI2LCAxLCAyMTIsIDIyMywgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMzQsIDIzMCwgMjM1LCAyMTUsIDIyNiwgCi0gICAgMTI2LCAxLCAyMzMsIDExNywgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMzEsIDEyOSwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAKLSAgICAyMjgsIDUwLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDIyMiwgMTY0LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDI1MywgNzgsIAotICAgIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjI2LCA5NiwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMjIsIDE5MywgMjM1LCAKLSAgICAyMTUsIDIyNiwgMTI2LCAxLCAyMjQsIDE3OSwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMjMsIDIxOSwgMjM1LCAyMTUsIAotICAgIDIyNiwgMTI2LCAxLCAyMjAsIDIwMCwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMTcsIDI0MywgMjM1LCAyMTUsIDIyNiwgCi0gICAgMTI2LCA1MCwgMTE2LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDUwLCAxMDksIDIzNSwgMjE1LCAyMjYsIDEyNiwgNTAsIDE2NiwgCi0gICAgMjM1LCAyMTUsIDIyNiwgMTI2LCA1MCwgMTYzLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDUwLCAyMTcsIDIwMCwgMjM1LCAyMTUsIAotICAgIDIyNiwgMTI2LCA1MCwgMjE2LCAzOCwgMjM1LCAyMTUsIDIyNiwgMTI2LCA1MCwgMTIyLCAyNDAsIDIwMCwgMjM1LCAyMTUsIAotICAgIDIyNiwgMTI2LCA1MCwgMTIyLCAyMTcsIDEwMCwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyNTQsIDc2LCAyMzUsIDIxNSwgCi0gICAgMjI2LCAxOTgsIDEsIDI1MSwgMjAyLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDI0MiwgMTc3LCAyMzUsIDIxNSwgMjI2LCAKLSAgICAxOTgsIDEsIDI0OCwgMTMzLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDI0MSwgMjIyLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIAotICAgIDIxNCwgMTMsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjEyLCA5MCwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyNDEsIDE4MCwgCi0gICAgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyMTcsIDE3OSwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyMTIsIDIyMywgMjM1LCAKLSAgICAyMTUsIDIyNiwgMTk4LCAxLCAyMzQsIDIzMCwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyMzMsIDExNywgMjM1LCAyMTUsIAotICAgIDIyNiwgMTk4LCAxLCAyMzEsIDEyOCwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyMjgsIDUwLCAyMzUsIDIxNSwgMjI2LCAKLSAgICAxOTgsIDEsIDIyMiwgMTY0LCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDIyNiwgOTYsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgCi0gICAgMjIyLCAxOTMsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjIwLCAyMDAsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjE3LCAKLSAgICAyNDMsIDIzNSwgMjE1LCAyMjYsIDE5OCwgNTAsIDExNiwgMjM1LCAyMTUsIDIyNiwgMTk4LCA1MCwgMTA5LCAyMzUsIDIxNSwgCi0gICAgMjI2LCAxOTgsIDUwLCAxNjYsIDIzNSwgMjE1LCAyMjYsIDE5OCwgNTAsIDE2MywgMjM1LCAyMTUsIDIyNiwgMTk4LCA1MCwgCi0gICAgMjE3LCAyMDAsIDIzNSwgMjE1LCAyMjYsIDE5OCwgNTAsIDIxNiwgMzgsIDIzNSwgMjE1LCAyMjYsIDE5OCwgNTAsIDEyMiwgCi0gICAgMjQwLCAyMDAsIDIzNSwgMjE1LCAyMjYsIDE5OCwgNTAsIDEyMiwgMjE3LCAxMDAsIDUzLCAxODUsIDEsIDIyNywgMTYsIDYxLCAKLSAgICA1MywgMTg1LCAxLCAyMTMsIDI4LCA2MSwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjU0LCAxNDgsIDUzLCAxODUsIDEsIDIyNywgCi0gICAgMTYsIDcyLCA1MywgMTg1LCAxLCAyMTMsIDI4LCA3MiwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgNzQsIDUzLCAxODUsIDEsIAotICAgIDIyNywgMTYsIDc1LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyMjcsIDk5LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyMjcsIDk5LCAKLSAgICA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDE4NSwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjU0LCAxODUsIDUzLCAxODUsIDEsIAotICAgIDIyNywgMTYsIDI1NCwgMTQ3LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNTQsIDE0NywgNTMsIDE4NSwgMSwgMjI3LCAxNiwgCi0gICAgMjU0LCAxMjEsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI1NCwgMTIxLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDE0MiwgCi0gICAgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjU0LCAxNDIsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMTYwLCA1MywgMTg1LCAxLCAKLSAgICAyMTMsIDI4LCAyNTQsIDE2MCwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjU0LCAxNDYsIDUzLCAxODUsIDEsIDIyNywgMTYsIAotICAgIDI0NCwgMjM2LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNDQsIDIzNiwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjUzLCA4MywgCi0gICAgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjUzLCA4MywgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjU0LCAxMjksIDUzLCAxODUsIDEsIAotICAgIDIxMywgMjgsIDI1NCwgMTI5LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDE0MCwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgCi0gICAgMjU0LCAxNDAsIDUzLCAxODUsIDEsIDIyNywgMTYsIDIyNywgOTgsIDUzLCAxODUsIDEsIDIxMywgMjgsIDIyNywgOTgsIDUzLCAKLSAgICAxODUsIDEsIDIyNywgMTYsIDI1NCwgODYsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI1NCwgODYsIDUzLCAxODUsIDEsIDIyNywgCi0gICAgMTYsIDI1NCwgMTM5LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNDUsIDExOSwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjQ1LCAKLSAgICAxMTcsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMzIsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMTM3LCA1MywgCi0gICAgMTg1LCAxLCAyMTMsIDI4LCAyNTQsIDEzNywgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjQ1LCA5MCwgNTMsIDE4NSwgMSwgMjEzLCAKLSAgICAyOCwgMjQ1LCA5MCwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjQ1LCAxMDUsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI0NSwgCi0gICAgMTA1LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNDUsIDc3LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNDUsIDc3LCA1MywgMTg1LCAKLSAgICAxLCAyMTMsIDI4LCAyNTQsIDI0LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNDUsIDk2LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAKLSAgICAyNTQsIDEzNiwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjQ1LCA3MCwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjI3LCA0MSwgNTMsIAotICAgIDE4NSwgMSwgMjI3LCAxNiwgMjQwLCAxMDYsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI0NSwgMTcxLCA1MywgMTg1LCAxLCAKLSAgICAyMTMsIDI4LCAyNDUsIDE3MSwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjUzLCAyMTUsIDUzLCAxODUsIDEsIDIxMywgMjgsIAotICAgIDI1MywgMjE1LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyMzUsIDE3OSwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjM1LCAxNzksIAotICAgIDUzLCAxODUsIDEsIDIyNywgMTYsIDIyNywgMjUsIDUzLCAxODUsIDEsIDIxMywgMjgsIDIyNywgMjUsIDUzLCAxODUsIDEsIAotICAgIDIyNywgMTYsIDI1MywgMjExLCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNTMsIDIxMSwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgCi0gICAgMjU0LCAxMzUsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1MywgMTUyLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDEzMywgCi0gICAgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjUzLCAxNDYsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI1MywgMTQ2LCA1MywgMTg1LCAxLCAKLSAgICAyMjcsIDE2LCAyNDUsIDQwLCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNDUsIDQwLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTMsIAotICAgIDEyMiwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjUzLCAxMjIsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMTMwLCA1MywgCi0gICAgMTg1LCAxLCAyMTMsIDI4LCAyNTQsIDEzMCwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjI3LCA4LCA1MywgMTg1LCAxLCAyMjcsIAotICAgIDE2LCAyNTIsIDQ1LCAyMjMsIDM4LCAyMSwgMTE2LCAyMjMsIDM4LCAyMSwgMTA5LCAyMjMsIDM4LCAyMSwgMTY2LCAyMjMsIAotICAgIDM4LCAyMSwgMTYzLCAyMjMsIDM4LCAyMSwgMTgwLCAyMjMsIDM4LCAyMSwgMTg5LCAyMjMsIDM4LCAyMSwgMTk4LCAyMjMsIAotICAgIDM4LCAyMSwgMTk1LCAyMjMsIDM4LCAyMSwgMjAwLCAyMjMsIDM4LCA1MCwgMjE3LCAyMDAsIDIyMywgMzgsIDUwLCAyMTYsIAotICAgIDM4LCAyMjMsIDM4LCA1MCwgMjE3LCAxMTUsIDIyMywgMzgsIDUwLCAyNDMsIDI0MCwgMjIzLCAzOCwgNTAsIDI0NCwgODMsIAotICAgIDIyMywgMzgsIDUwLCAyMjAsIDM5LCAyMjMsIDM4LCA1MCwgMjIxLCAzNywgMjIzLCAzOCwgNTAsIDI0NSwgMTQxLCAyMjMsIAotICAgIDM4LCA1MCwgMjI5LCAyNiwgMjIzLCAzOCwgNTAsIDEyMiwgMjQwLCAyMDAsIDIyMywgMzgsIDUwLCAxMTcsIDI0MCwgMjAwLCAKLSAgICAyMjMsIDM4LCA1MCwgMTMzLCAyNDAsIDIwMCwgMjIzLCAzOCwgNTAsIDI0MywgMjM3LCAyNDAsIDIwMCwgMjIzLCAzOCwgNTAsIAotICAgIDI0NCwgNTAsIDI0MCwgMjAwLCAyMjMsIDM4LCA1MCwgMjIwLCA1MywgMjQwLCAyMDAsIDIyMywgMzgsIDUwLCAyMjEsIDQzLCAKLSAgICAyNDAsIDIwMCwgMjIzLCAzOCwgNTAsIDI0NSwgMTUwLCAyNDAsIDIwMCwgMjIzLCAzOCwgNTAsIDIyOSwgMzEsIDI0MCwgCi0gICAgMjAwLCAyMjMsIDM4LCAyNDMsIDIyOCwgMTIyLCAyNDIsIDksIDIyMywgMzgsIDI0MywgMjI4LCAxMjIsIDIyNCwgMTY2LCAKLSAgICAyMjMsIDM4LCAyNDMsIDIyOCwgMTIyLCAyMTcsIDEyMSwgMjIzLCAzOCwgMjQzLCAyMjgsIDExNywgMjE3LCAxMTksIDExMiwgCi0gICAgNSwgMjUwLCAxODcsIDExMiwgNSwgMjUzLCAyNDIsIDExMiwgNSwgMjE0LCAxMjgsIDExMiwgNSwgMjM1LCAxMDQsIDExMiwgCi0gICAgNSwgMjE1LCAxMzIsIDExMiwgMSwgNjEsIDExMiwgMSwgMjU0LCAyMzIsIDExMiwgMSwgNzIsIDExMiwgMSwgMjM2LCAyOCwgCi0gICAgMTEyLCAxLCA2OSwgMTEyLCAxLCAyMTUsIDkyLCAxMTIsIDEsIDE2MSwgMTQ5LCAxMTIsIDEsIDE2MSwgMjIzLCA4MiwgMTEyLCAKLSAgICAxLCAxNjEsIDE1MCwgMTEyLCAxLCAxNjEsIDIzMiwgMjE0LCAxMTIsIDEsIDc0LCAxMTIsIDEsIDI1NCwgMTA4LCAxMTIsIDEsIAotICAgIDc1LCAxMTIsIDEsIDI1MywgMTA4LCAxMTIsIDEsIDE4MSwgMTEyLCAxLCAyMzQsIDEzOCwgMTEyLCAxLCAyNDMsIDExMCwgCi0gICAgMTEyLCAxLCAyNDIsIDIyNSwgMTEyLCAxLCAyMjksIDE1OSwgMTEyLCAxLCAyNTAsIDIxOSwgMTEyLCAxLCAyNTAsIDkyLCAKLSAgICAxMTIsIDEsIDIzNSwgMTM5LCAxMTIsIDEsIDIzNSwgMTE1LCAxMTIsIDEsIDIyOCwgMjMsIDExMiwgMSwgMjE2LCAxMTUsIAotICAgIDExMiwgMSwgMjE2LCAxMDUsIDExMiwgMSwgMjQ4LCA4NiwgMTEyLCAxLCAyNDgsIDcwLCAxMTIsIDEsIDIyOCwgMTk4LCAKLSAgICAxMTIsIDEsIDIxOCwgNTIsIDExMiwgMSwgMjE3LCAxNjEsIDExMiwgMSwgMjQ4LCAxNjQsIDExMiwgMSwgMjQ3LCAyMzIsIAotICAgIDExMiwgMSwgMjA1LCAxMTIsIDEsIDE5MywgMTEyLCAxLCAyMjYsIDIzLCAxMTIsIDEsIDI1MiwgMTA3LCAxMTIsIDEsIDI1MSwgCi0gICAgMTk1LCAxMTIsIDEsIDE4OCwgMTEyLCAxLCAxODYsIDExMiwgMSwgMjAzLCAxMTIsIDEsIDIzMywgMTU3LCAxMTIsIDEsIAotICAgIDIxNSwgMSwgMTEyLCAxLCAyMjEsIDI0LCAxMTIsIDEsIDIxOSwgMTU3LCAxMTIsIDEsIDIyMiwgMjAyLCAxMTIsIDEsIDE1OSwgCi0gICAgMTEyLCAxLCAyMzIsIDIxMywgMTEyLCAxLCA1MywgMTc4LCAyMzIsIDIxMiwgMTEyLCAxLCA1MywgMTc4LCAyMjMsIDgxLCAKLSAgICAxMTIsIDEsIDUzLCAxNzgsIDIyOCwgMTg5LCAxMTIsIDMwLCA1LCAyNTQsIDIzMiwgMTEyLCAzMCwgNSwgMjUxLCAxOTMsIAotICAgIDI1NCwgMjMyLCAxMTIsIDMwLCA1LCA3MiwgMTEyLCAzMCwgNSwgMjM2LCAyOCwgMTEyLCAzMCwgNSwgNjksIDExMiwgMzAsIAotICAgIDUsIDIxNSwgOTIsIDExMiwgMzAsIDUsIDE2MSwgMTQ5LCAxMTIsIDMwLCA1LCAxNjEsIDIyMywgODIsIDExMiwgMzAsIDUsIAotICAgIDE2MSwgMTUwLCAxMTIsIDMwLCA1LCAxNjEsIDIzMiwgMjE0LCAxMTIsIDMwLCA1LCA3NCwgMTEyLCAzMCwgNSwgMjU0LCAKLSAgICAxMDgsIDExMiwgMzAsIDUsIDc1LCAxMTIsIDMwLCA1LCAyNTMsIDEwOCwgMTEyLCAyMTQsIDEzMywgMTEyLCAyNDgsIDEyMywgCi0gICAgMTEyLCA1MSwgMjQ4LCAxMjMsIDExMiwgMjI1LCAyNywgMjQ3LCA3NCwgMTEyLCAyMjUsIDI3LCA1MSwgMjQ3LCA3NCwgMTEyLCAKLSAgICAyMjUsIDI3LCAyMzIsIDI0MiwgMTEyLCAyMjUsIDI3LCAyNDksIDc3LCAxMzQsIDExMiwgMjI1LCAyNywgMjMyLCAxNzAsIAotICAgIDExMiwgNTAsIDExNiwgMTEyLCA1MCwgMTA5LCAxMTIsIDUwLCAxNjYsIDExMiwgNTAsIDE2MywgMTEyLCA1MCwgMTgwLCAKLSAgICAxMTIsIDUwLCAxODksIDExMiwgNTAsIDE5OCwgMTEyLCA1MCwgMTk1LCAxMTIsIDUwLCAyMDAsIDExMiwgNTAsIDIxNywgCi0gICAgMjAwLCAxMTIsIDUwLCAyMTYsIDM4LCAxMTIsIDUwLCAyMTcsIDExNSwgMTEyLCA1MCwgMjQzLCAyNDAsIDExMiwgNTAsIAotICAgIDI0NCwgODMsIDExMiwgNTAsIDIyMCwgMzksIDExMiwgNTAsIDIyMSwgMzcsIDExMiwgNTAsIDI0NSwgMTQxLCAxMTIsIDUwLCAKLSAgICAyMjksIDI2LCAxMTIsIDUwLCAxMjIsIDI0MCwgMjAwLCAxMTIsIDUwLCAxMjIsIDIxNywgMTAwLCAxMTIsIDIxLCAyMTIsIAotICAgIDc5LCAxMTIsIDIxLCAxMTYsIDExMiwgMjEsIDEwOSwgMTEyLCAyMSwgMTY2LCAxMTIsIDIxLCAxNjMsIDExMiwgMjEsIDE4MCwgCi0gICAgMTEyLCAyMSwgMTg5LCAxMTIsIDIxLCAxOTgsIDExMiwgMjEsIDE5NSwgMTEyLCAyMSwgMjAwLCAyMDgsIDUsIDI1MCwgMTg3LCAKLSAgICAyMDgsIDUsIDI1MywgMjQyLCAyMDgsIDUsIDIxNCwgMTI4LCAyMDgsIDEsIDYxLCAyMDgsIDEsIDI1NCwgMjMyLCAyMDgsIDEsIAotICAgIDcyLCAyMDgsIDEsIDIzNiwgMjgsIDIwOCwgMSwgNjksIDIwOCwgMSwgMjE1LCA5MiwgMjA4LCAxLCA3NCwgMjA4LCAxLCAKLSAgICAyNTQsIDEwOCwgMjA4LCAxLCA3NSwgMjA4LCAxLCAyNTMsIDEwOCwgMjA4LCAxLCAxODEsIDIwOCwgMSwgMjM0LCAxMzgsIAotICAgIDIwOCwgMSwgMjQzLCAxMTAsIDIwOCwgMSwgMjQyLCAyMjUsIDIwOCwgMSwgMjI5LCAxNTksIDIwOCwgMSwgMjUwLCAyMTksIAotICAgIDIwOCwgMSwgMjUwLCA5MiwgMjA4LCAxLCAyMzUsIDEzOSwgMjA4LCAxLCAyMzUsIDExNSwgMjA4LCAxLCAyMjgsIDIzLCAKLSAgICAyMDgsIDEsIDIxNiwgMTE1LCAyMDgsIDEsIDIxNiwgMTA1LCAyMDgsIDEsIDI0OCwgODYsIDIwOCwgMSwgMjQ4LCA3NSwgCi0gICAgMjA4LCAxLCAyNDgsIDcwLCAyMDgsIDEsIDIyMywgMTkyLCAyMDgsIDEsIDIyOCwgMTk4LCAyMDgsIDEsIDIxOCwgNTIsIAotICAgIDIwOCwgMSwgMjE3LCAxNjEsIDIwOCwgMSwgMjQ4LCAxNjQsIDIwOCwgMSwgMjQ3LCAyMzIsIDIwOCwgMSwgMjA1LCAyMDgsIAotICAgIDEsIDE5MywgMjA4LCAxLCAyMjYsIDIzLCAyMDgsIDEsIDI1MiwgMTA3LCAyMDgsIDEsIDI1MSwgMTk1LCAyMDgsIDEsIDE4OCwgCi0gICAgMjA4LCAxLCAxODYsIDIwOCwgMSwgMjAzLCAyMDgsIDEsIDIzMywgMTU3LCAyMDgsIDEsIDIxNSwgMSwgMjA4LCAxLCAyMjEsIAotICAgIDI0LCAyMDgsIDEsIDIxOSwgMTU3LCAyMDgsIDEsIDIyMiwgMjAyLCAyMDgsIDEsIDE1OSwgMjA4LCAzMCwgNSwgMjU0LCAKLSAgICAyMzIsIDIwOCwgMzAsIDUsIDcyLCAyMDgsIDMwLCA1LCAyMzYsIDI4LCAyMDgsIDMwLCA1LCA2OSwgMjA4LCAzMCwgNSwgCi0gICAgMjE1LCA5MiwgMjA4LCAzMCwgNSwgNzQsIDIwOCwgMzAsIDUsIDI1NCwgMTA4LCAyMDgsIDMwLCA1LCA3NSwgMjA4LCAzMCwgCi0gICAgNSwgMjUzLCAxMDgsIDIwOCwgNSwgMjE0LCAxMzMsIDIwOCwgNSwgMjI4LCA2MCwgMjA4LCAyNTQsIDE4MSwgNTIsIDIwOCwgCi0gICAgMjQ1LCA4MCwgNTIsIDIwOCwgNTAsIDUyLCAyMDgsIDIyMiwgOTIsIDc3LCAyMDgsIDUxLCAyMjIsIDkyLCA3NywgMjA4LCAKLSAgICAyNDgsIDEyMywgMjA4LCA1MSwgMjQ4LCAxMjMsIDE1LCA1LCA2MSwgMTUsIDUsIDExOCwgMjksIDYxLCAxNSwgNSwgMTE4LCAKLSAgICAyOSwgMjUyLCA5NCwgMTUsIDUsIDExOCwgMjksIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMTE4LCAyOSwgMTU5LCAxNSwgCi0gICAgNSwgMTE4LCAyOSwgMjM2LCAzMCwgMTUsIDUsIDExOCwgMjksIDIzMywgMTM5LCAyNDIsIDc1LCAxNSwgNSwgMTE4LCAyOSwgCi0gICAgMjMwLCAxMzEsIDE1LCA1LCAxMTgsIDI5LCAyMjIsIDE5MCwgMTUsIDUsIDI1NCwgMjM0LCAxNSwgNSwgMjU0LCAxODUsIDE1LCAKLSAgICA1LCAyNTQsIDE4NiwgMjksIDI1MywgMTQ0LCAxNSwgNSwgMjU0LCAxODYsIDI5LCAyNDYsIDIyLCAyNDIsIDc1LCAxNSwgNSwgCi0gICAgMjU0LCAxODYsIDI5LCAyNDMsIDk0LCAxNSwgNSwgMjU0LCAxODYsIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIAotICAgIDI1NCwgMTg2LCAyOSwgMTU5LCAxNSwgNSwgMjU0LCAxODYsIDI5LCAyMzYsIDMxLCAyNDIsIDc1LCAxNSwgNSwgMjU0LCAKLSAgICAxODYsIDI5LCAyMzYsIDQsIDE1LCA1LCAyNTQsIDE4NiwgMjksIDIzMywgMTQwLCAxNSwgNSwgMjU0LCAxODYsIDI5LCAyMjAsIAotICAgIDIyOCwgMTUsIDUsIDI1NCwgMTg2LCAyOSwgMTExLCA5NCwgMTExLCA5NCwgNjksIDE1LCA1LCAyNTQsIDE4NiwgMjQyLCA3NSwgCi0gICAgMTUsIDUsIDI1NCwgMTgzLCAxNSwgNSwgMjU0LCAxODQsIDI5LCAyNTIsIDc5LCAxNSwgNSwgMjU0LCAxODQsIDI5LCAyNDMsIAotICAgIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDI1NCwgMTg0LCAyOSwgMjMxLCAxNTcsIDk0LCAyNDUsIDEwOCwgMTUsIDUsIDI1NCwgCi0gICAgMTg0LCAyOSwgMjIxLCAyMiwgMTUsIDUsIDI1NCwgMTg0LCAyOSwgMjE4LCAyMiwgMTUsIDUsIDI1NCwgMTYwLCAxNSwgNSwgCi0gICAgMjU0LCA5NCwgMTUsIDUsIDI1NCwgOTUsIDI5LCAyNDUsIDUwLCAxNSwgNSwgMjU0LCA5NSwgMjksIDIyMCwgMTkwLCA5NCwgCi0gICAgMjQyLCAxNjYsIDE1LCA1LCAyNTQsIDg2LCAxNSwgNSwgMjU0LCA4NywgMjksIDI1NCwgODYsIDE1LCA1LCAyNTQsIDg3LCAKLSAgICAyOSwgMjQ3LCAxNjgsIDE1LCA1LCAyNTQsIDg3LCAyOSwgMjQyLCAxNjYsIDE1LCA1LCAyNTQsIDg3LCAyOSwgMTU5LCAxNSwgCi0gICAgNSwgMjU0LCA4NywgMjksIDIzNSwgMywgMTUsIDUsIDI1NCwgODcsIDI5LCAyMzQsIDEwMSwgMTUsIDUsIDI1NCwgODcsIDI5LCAKLSAgICAyMjAsIDI0MywgMTUsIDUsIDI1NCwgODcsIDI5LCAyMTUsIDEwMCwgMTUsIDUsIDI1NCwgODMsIDE1LCA1LCAyNTQsIDc2LCAKLSAgICAxNSwgNSwgMjU0LCA0MSwgMTUsIDUsIDI1NCwgNDIsIDI5LCAyMjAsIDI0MywgMTUsIDUsIDI1NCwgMzIsIDE1LCA1LCAyNTQsIAotICAgIDMzLCAxMTAsIDI1NCwgMzIsIDE1LCA1LCAyNTQsIDMzLCAxMzMsIDIxNywgMzgsIDE1LCA1LCAyNTQsIDMzLCA5NCwgMjMwLCAKLSAgICAzNSwgMjI3LCAzMCwgMjU0LCAzMywgOTQsIDIzMCwgMzQsIDE1LCA1LCAyNTQsIDMzLCA5NCwgMjMwLCAzNSwgMjE5LCAxNjUsIAotICAgIDE1LCA1LCAyNTQsIDUsIDE1LCA1LCAyNTMsIDIzNSwgMTUsIDUsIDI1MywgMjA1LCAxNSwgNSwgMjUzLCAyMDYsIDI5LCAKLSAgICAyMzMsIDIxNywgMTUsIDUsIDI1MywgMTc5LCAxNSwgNSwgMjUzLCAxNTEsIDE1LCA1LCAyNTMsIDE0NiwgMTUsIDUsIDI1MywgCi0gICAgMTQ3LCAyMTIsIDMzLCAyMTcsIDE5MiwgMTUsIDUsIDI1MywgMTQ3LCAyMzUsIDcsIDIxNywgMTkyLCAxNSwgNSwgMjUzLCAKLSAgICAxNDcsIDExMCwgMjUzLCAxNDcsIDIxNiwgNzgsIDExMCwgMjE2LCA3OCwgMjE2LCA3OCwgMTEwLCAyMTYsIDc4LCAyMjYsIAotICAgIDE0OSwgMTUsIDUsIDI1MywgMTQ3LCAxMTAsIDI1MywgMTQ3LCAxMTAsIDI1MywgMTQ2LCAxNSwgNSwgMjUzLCAxNDcsIDExMCwgCi0gICAgMjUzLCAxNDcsIDExMCwgMjUzLCAxNDcsIDI0OSwgNjUsIDI1MywgMTQ3LCAxMTAsIDI1MywgMTQ3LCAxMTAsIDI1MywgMTQ2LCAKLSAgICAxNSwgNSwgMjUzLCAxNDQsIDE1LCA1LCAyNTMsIDE0MSwgMTUsIDUsIDI1MiwgMTA3LCAxNSwgNSwgMjUyLCA5NCwgMTUsIDUsIAotICAgIDI1MiwgODksIDE1LCA1LCAyNTIsIDg2LCAxNSwgNSwgMjUyLCA4MCwgMTUsIDUsIDI1MiwgODEsIDExMCwgMjUyLCA4MCwgCi0gICAgMTUsIDUsIDI1MiwgNzksIDE1LCA1LCAxMzQsIDE1LCA1LCAyNTIsIDU5LCAxNSwgNSwgMjUxLCAxODQsIDE1LCA1LCAyNTEsIAotICAgIDE4NSwgMjksIDYxLCAxNSwgNSwgMjUxLCAxODUsIDI5LCAyNDMsIDcyLCAxNSwgNSwgMjUxLCAxODUsIDI5LCAyMzYsIDMxLCAKLSAgICAyNDIsIDc1LCAxNSwgNSwgMjUxLCA1NCwgMTUsIDUsIDI1MSwgNTUsIDExMCwgMjUxLCA1NSwgMjU0LCAxODUsIDE1LCA1LCAKLSAgICAyNTEsIDU1LCAxMTAsIDI1MSwgNTUsIDIxNSwgMTYwLCAxNSwgNSwgMjUxLCA1NSwgMjQ5LCA2NSwgMjUxLCA1NCwgMTUsIDUsIAotICAgIDI1MSwgMzgsIDE1LCA1LCAyNTEsIDM5LCAxMTAsIDI1MSwgMzgsIDE1LCA1LCAyNTEsIDI3LCAxNSwgNSwgMjUxLCAyNiwgCi0gICAgMTUsIDUsIDI0OCwgMTY0LCAxNSwgNSwgMjQ4LCAxNTUsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDExOCwgOTQsIAotICAgIDIzMSwgMjEwLCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyNTQsIDQxLCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgCi0gICAgNzUsIDI5LCAyNTIsIDc5LCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyNTEsIDE4NCwgMTUsIDUsIDI0OCwgMTU2LCAKLSAgICAyMzQsIDc1LCAyOSwgMjQzLCAxMTAsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDI0MywgMTExLCA5NCwgMjMxLCAKLSAgICAyMTAsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDI0MiwgMTkwLCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIAotICAgIDI5LCAyNDIsIDE3MywgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjQyLCA4NCwgMTUsIDUsIDI0OCwgMTU2LCAKLSAgICAyMzQsIDc1LCAyOSwgMTU5LCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyMzUsIDE3NywgMTUsIDUsIDI0OCwgCi0gICAgMTU2LCAyMzQsIDc1LCAyOSwgMjM1LCAxNzgsIDk0LCAyMzIsIDE1NiwgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgCi0gICAgMjM0LCAyNDcsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDIzMywgMTU3LCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgCi0gICAgNzUsIDI5LCAyMzIsIDE1NiwgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjMyLCAxNTcsIDk0LCAyMzEsIDIwOSwgCi0gICAgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjMyLCAxNDIsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIAotICAgIDIyOSwgMTg3LCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyMjYsIDE1MCwgOTQsIDIyNiwgMTQ5LCAxNSwgNSwgCi0gICAgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyMjAsIDExNywgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjE4LCAyMiwgCi0gICAgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjE1LCAxOTgsIDk0LCAyNDIsIDE3MywgMTUsIDUsIDI0OCwgMTU2LCAKLSAgICAyMzQsIDc1LCAyOSwgMjE1LCAxMDAsIDE1LCA1LCAyNDgsIDEzMiwgMTUsIDUsIDI0OCwgMTExLCAxNSwgNSwgMjQ4LCAxMTAsIAotICAgIDE1LCA1LCAyNDgsIDEwOSwgMTUsIDUsIDI0NywgMjExLCAxNSwgNSwgMjQ3LCAxOTQsIDE1LCA1LCAyNDcsIDE2OSwgMTUsIAotICAgIDUsIDI0NywgMTcwLCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyNDcsIDE2OCwgMTUsIDUsIDI0NywgMTU4LCAxNSwgNSwgMjQ3LCAKLSAgICAxNTksIDIzNCwgMjEzLCAxMTEsIDI0MiwgNzYsIDI0NywgMTM5LCAxNSwgNSwgMjQ3LCAxMzksIDE1LCA1LCAyNDYsIDMzLCAKLSAgICAxNSwgNSwgMjQ2LCAzNCwgMTEwLCAyNDYsIDMzLCAxNSwgNSwgMjQ2LCAzNCwgMjQyLCA3NSwgMTUsIDUsIDI0NiwgMzQsIAotICAgIDIyMCwgMjI1LCAxNSwgNSwgMjQ2LCAzMSwgMTUsIDUsIDI0NiwgMzIsIDI5LCAyNDUsIDM3LCAxNSwgNSwgMjQ2LCAzMCwgCi0gICAgMTUsIDUsIDI0NiwgMjksIDE1LCA1LCAyNDYsIDI4LCAxNSwgNSwgMjQ2LCAyNywgMTUsIDUsIDI0NiwgMjMsIDE1LCA1LCAKLSAgICAyNDYsIDIxLCAxNSwgNSwgMjQ2LCAyMiwgMjQyLCA3NSwgMTUsIDUsIDI0NiwgMjIsIDI0MiwgNzYsIDI0MiwgNzUsIDE1LCAKLSAgICA1LCAyNDYsIDIwLCAxNSwgNSwgMjQ2LCAxMywgMTUsIDUsIDc0LCAxNSwgNSwgMTkxLCAyOSwgMjI2LCAxNDksIDE1LCA1LCAKLSAgICAxOTEsIDExMCwgMTkxLCAyMjgsIDUxLCAxMTAsIDIyOCwgNTAsIDE1LCA1LCAyNDUsIDE5MCwgMTUsIDUsIDI0NSwgMTkxLCAKLSAgICAyOSwgMTE4LCA5NCwgMjQyLCAzMCwgOTQsIDI0OCwgMTY0LCAxNSwgNSwgMjQ1LCAxOTEsIDI5LCAyNDMsIDcyLCAxNSwgNSwgCi0gICAgMjQ1LCAxOTEsIDI5LCAyMzEsIDQyLCAxNSwgNSwgMjQ1LCAxOTEsIDI5LCAyMjIsIDE3OSwgMTUsIDUsIDI0NSwgMTkxLCAKLSAgICAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyNDUsIDE5MSwgMjksIDY5LCAxNSwgNSwgMjQ1LCAxNjcsIDE1LCA1LCAyNDUsIDE1NywgCi0gICAgMTUsIDUsIDI0NSwgMTMxLCAxNSwgNSwgMjQ1LCAxMDgsIDE1LCA1LCAyNDUsIDEwOSwgMjksIDI0MywgODAsIDE1LCA1LCAKLSAgICAyNDUsIDEwOSwgMjksIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMjQ1LCAxMDksIDI5LCAyMzEsIDE1NiwgMTUsIDUsIAotICAgIDI0NSwgMTA5LCAyNDksIDY1LCAyNDUsIDEwOCwgMTUsIDUsIDI0NSwgMTA5LCAyMjcsIDMwLCAyNDUsIDEwOCwgMTUsIDUsIAotICAgIDI0NSwgMTA5LCAyMTksIDE2NSwgMTUsIDUsIDI0NSwgNTIsIDE1LCA1LCAyNDUsIDUwLCAxNSwgNSwgMjQ1LCAzNywgMTUsIAotICAgIDUsIDI0NCwgMjM0LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCA2MSwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMTE4LCA5NCwgMjMzLCAKLSAgICAxMjgsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDExOCwgOTQsIDIzMywgMTI5LCAyOSwgMjMzLCAxMjgsIDE1LCA1LCAyNDQsIAotICAgIDIzNSwgMjksIDI1NCwgMzIsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDI1MiwgOTQsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDI0NiwgCi0gICAgMjIsIDI0MiwgNzUsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDI0NiwgMjIsIDI0MiwgNzYsIDI0MiwgNzUsIDE1LCA1LCAyNDQsIAotICAgIDIzNSwgMjksIDE1OSwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjQyLCAzMCwgMjQyLCA3NSwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgCi0gICAgMjM2LCAzMSwgMjQyLCA3NSwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjM0LCAyMTIsIDE1LCA1LCAyNDQsIDIzNSwgMjksIAotICAgIDIzNCwgMjEzLCAyMTksIDE2NSwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjMzLCAyMzYsIDE1LCA1LCAyNDQsIDIzNSwgMjksIAotICAgIDIzMywgMTU3LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAyMzMsIDEyOSwgMjksIDIzMywgMTI4LCAxNSwgNSwgMjQ0LCAyMzUsIAotICAgIDI5LCAyMzMsIDEzLCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAyMzIsIDE1NiwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjE1LCAKLSAgICAxOTcsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDIxNSwgMTg4LCAxNSwgNSwgMjQzLCAxMTAsIDE1LCA1LCAyNDMsIDExMSwgCi0gICAgMjQyLCA3NSwgMTUsIDUsIDI0MywgMTA4LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAxMTgsIDk0LCAyNDgsIDE2NSwgOTQsIAotICAgIDE1OSwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMTE4LCA5NCwgMTU5LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAxMTgsIDk0LCAKLSAgICAyMzYsIDMwLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNTQsIDE4NCwgMjE3LCAxOTMsIDk0LCAyMTgsIDQxLCAxNSwgNSwgCi0gICAgMjQzLCAxMDksIDI5LCAyNTQsIDMyLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNTMsIDE0NiwgMTUsIDUsIDI0MywgMTA5LCAKLSAgICAyOSwgMjUzLCAxNDUsIDk0LCAyNDMsIDk0LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNTIsIDk0LCAxNSwgNSwgMjQzLCAxMDksIAotICAgIDI5LCAyNTIsIDYwLCA5NCwgMjAzLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNTEsIDI3LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAKLSAgICAyNTEsIDI4LCA5NCwgMjAzLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDgsIDE2NCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgCi0gICAgMjQ3LCAyMTEsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0NywgMTcwLCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyNDMsIDEwOSwgCi0gICAgMjksIDI0NiwgMzEsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0NSwgMTMxLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDUsIAotICAgIDEzMiwgOTQsIDIzMywgMTU3LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDUsIDEwOCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgCi0gICAgMjQ1LCAxMDksIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQzLCA4MSwgMjE3LCAxOTIsIAotICAgIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0MywgNzIsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0MiwgMTkwLCAxNSwgNSwgMjQzLCAKLSAgICAxMDksIDI5LCAyNDIsIDE4OCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQyLCAxODksIDk0LCA2MSwgMTUsIDUsIDI0MywgCi0gICAgMTA5LCAyOSwgMjQyLCAxNzQsIDk0LCAyMTksIDI3LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDIsIDMwLCA5NCwgMjMyLCAKLSAgICAxNTcsIDk0LCAyNDUsIDM3LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDIsIDEyLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDIsIAotICAgIDEzLCA5NCwgMjMzLCAxNTcsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0MSwgMTY2LCA5NCwgMjMzLCAxMywgMTUsIDUsIDI0MywgCi0gICAgMTA5LCAyOSwgMjQwLCAyMDgsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIzNiwgMzEsIDI0MiwgNzUsIDE1LCA1LCAyNDMsIAotICAgIDEwOSwgMjksIDIzNSwgMTY0LCA5NCwgMjQwLCAyMTMsIDk0LCAyNTMsIDE0NiwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjM0LCAKLSAgICAyNDcsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIzNCwgMjEyLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMzQsIDk4LCAxNSwgNSwgCi0gICAgMjQzLCAxMDksIDI5LCAyMzQsIDk5LCA5NCwgMjMzLCAxMjgsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIzMywgMjM3LCA5NCwgCi0gICAgMjU0LCAzMiwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjMzLCAxNTcsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIzMSwgMTU3LCAKLSAgICA5NCwgMjQ1LCAxMDgsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIzMSwgNDIsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIyOCwgNTAsIAotICAgIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIyOCwgNTEsIDExMCwgMjI4LCA1MCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMTkzLCAxNSwgCi0gICAgNSwgMjQzLCAxMDksIDI5LCAyMjIsIDE3OSwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjIyLCAxNDcsIDE1LCA1LCAyNDMsIAotICAgIDEwOSwgMjksIDIyMCwgMjQzLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMjAsIDI0NCwgOTQsIDIxNiwgNjIsIDE1LCA1LCAKLSAgICAyNDMsIDEwOSwgMjksIDIyMCwgMjEwLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMTgsIDI0NCwgMTUsIDUsIDI0MywgMTA5LCAKLSAgICAyOSwgMjE4LCAyMiwgMTUsIDUsIDI0MywgMTA5LCAyOSwgNjksIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIxNSwgMTg4LCAxNSwgCi0gICAgNSwgMjQzLCAxMDksIDI5LCAyMTUsIDE4OSwgOTQsIDI0NiwgMzMsIDE1LCA1LCAyNDMsIDEwOSwgMTEwLCAyNDMsIDEwOCwgCi0gICAgMTUsIDUsIDI0MywgMTAzLCAxNSwgNSwgMjQzLCAxMDQsIDI0OSwgNjUsIDI0MywgMTAzLCAxNSwgNSwgMjQzLCAxMDEsIDE1LCAKLSAgICA1LCAyNDMsIDEwMiwgMTEwLCAyNDMsIDEwMiwgMjQzLCA3MywgMTEwLCAyNDMsIDcyLCAxNSwgNSwgMjQzLCA5NCwgMTUsIDUsIAotICAgIDI0MywgOTUsIDI0MywgMTAyLCAxMTAsIDI0MywgMTAyLCAyNDMsIDczLCAxMTAsIDI0MywgNzIsIDE1LCA1LCAyNDMsIDkzLCAKLSAgICAxNSwgNSwgMjQzLCA5MSwgMTUsIDUsIDI0MywgODIsIDE1LCA1LCAyNDMsIDgwLCAxNSwgNSwgMjQzLCA4MSwgMjE3LCAxOTIsIAotICAgIDE1LCA1LCAyNDMsIDgxLCAxMTAsIDI0MywgODAsIDE1LCA1LCAyNDMsIDgxLCAyNDksIDY1LCAyNDMsIDgwLCAxNSwgNSwgCi0gICAgMjQzLCA3MiwgMTUsIDUsIDI0MywgNzEsIDE1LCA1LCAyNDMsIDY2LCAxNSwgNSwgMjQzLCAxMiwgMTUsIDUsIDI0MywgMTMsIAotICAgIDI5LCAyMzMsIDIxNywgMTUsIDUsIDI0MiwgMTkwLCAxNSwgNSwgMjQyLCAxOTEsIDI5LCA3NCwgMTUsIDUsIDI0MiwgMTkxLCAKLSAgICAyOSwgNjksIDE1LCA1LCAyNDIsIDE5MSwgMjQ5LCA2NSwgMjQyLCAxOTAsIDE1LCA1LCAyNDIsIDE4OCwgMTUsIDUsIDI0MiwgCi0gICAgMTg5LCAxMTAsIDI0MiwgMTg4LCAxNSwgNSwgMjQyLCAxODksIDI0OSwgNjUsIDI0MiwgMTg4LCAxNSwgNSwgMjQyLCAxODUsIAotICAgIDE1LCA1LCAyNDIsIDE3MywgMTUsIDUsIDI0MiwgMTc0LCAyNDIsIDc1LCAxNSwgNSwgMjQyLCAxNzEsIDE1LCA1LCAyNDIsIAotICAgIDE3MiwgMjksIDExOCwgOTQsIDIzNiwgMzAsIDE1LCA1LCAyNDIsIDE3MiwgMjksIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgCi0gICAgMjQyLCAxNzIsIDI5LCAyMzYsIDMwLCAxNSwgNSwgMjQyLCAxNzIsIDI5LCAyMzIsIDE1NywgOTQsIDIzNiwgMzAsIDE1LCA1LCAKLSAgICAyNDIsIDE3MiwgMjksIDE5MywgMTUsIDUsIDI0MiwgMTY4LCAxNSwgNSwgMjQyLCAxNjYsIDE1LCA1LCAyNDIsIDE2NywgCi0gICAgMjQ5LCA2NSwgMjQyLCAxNjYsIDE1LCA1LCAyNDIsIDE2NywgMjksIDI1MiwgOTQsIDE1LCA1LCAyNDIsIDE2NywgMjksIAotICAgIDIxOCwgMjIsIDE1LCA1LCAyNDIsIDE2NywgMjE3LCAxOTIsIDE1LCA1LCAyNDIsIDkyLCAxNSwgNSwgMjQyLCA5MywgMjQ5LCAKLSAgICA2NSwgMjQyLCA5MiwgMTUsIDUsIDI0MiwgOTAsIDE1LCA1LCAyNDIsIDkxLCAyOSwgMjM0LCAyNDcsIDE1LCA1LCAyNDIsIAotICAgIDkxLCAyOSwgMjM0LCAyNDgsIDI5LCAyMzYsIDMxLCAyNDIsIDc1LCAxNSwgNSwgMjQyLCA5MSwgMjksIDIyOCwgNTAsIDE1LCAKLSAgICA1LCAyNDIsIDkxLCAyOSwgMjIyLCAxODAsIDk0LCAyMTYsIDc3LCAxNSwgNSwgMjQyLCA5MSwgMjQyLCA3NSwgMTUsIDUsIAotICAgIDI0MiwgODQsIDE1LCA1LCAyNDIsIDg1LCAyOSwgMTE4LCA5NCwgMjMzLCAyMTcsIDE1LCA1LCAyNDIsIDg1LCAyOSwgMjMzLCAKLSAgICAyMTcsIDE1LCA1LCAyNDIsIDg1LCAxMTAsIDI0MiwgODUsIDIzMiwgMTQ5LCAxNSwgNSwgMjQyLCA3OSwgMTUsIDUsIDI0MiwgCi0gICAgNzcsIDE1LCA1LCAyNDIsIDc4LCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyNDIsIDY5LCAxNSwgNSwgMjQyLCA2OCwgMTUsIDUsIAotICAgIDI0MiwgNjUsIDE1LCA1LCAyNDIsIDY0LCAxNSwgNSwgMTU5LCAxNSwgNSwgMjQyLCAzMCwgMjE3LCAxOTIsIDE1LCA1LCAKLSAgICAyNDIsIDMwLCAyNDIsIDc1LCAxNSwgNSwgMjQyLCAxMiwgMTUsIDUsIDI0MSwgMTY1LCAxNSwgNSwgMjQxLCAxNjYsIDI5LCAKLSAgICAyNTMsIDE0NiwgMTUsIDUsIDI0MSwgMTY2LCAyOSwgMjUzLCAxNDQsIDE1LCA1LCAyNDEsIDE2NiwgMjksIDI1MiwgOTQsIAotICAgIDE1LCA1LCAyNDEsIDE2NiwgMjksIDI0NywgMTM5LCAxNSwgNSwgMjQxLCAxNjYsIDI5LCAyNDMsIDEwMSwgMTUsIDUsIDI0MSwgCi0gICAgMTY2LCAyOSwgMjM0LCA5MCwgMTUsIDUsIDI0MSwgMTY2LCAyOSwgMjI4LCA1MCwgMTUsIDUsIDI0MSwgMTY2LCAyOSwgMjIwLCAKLSAgICAyNDMsIDE1LCA1LCAyNDEsIDE2NiwgMjksIDY5LCAxNSwgNSwgMjQwLCAyMTIsIDE1LCA1LCAyNDAsIDIwOCwgMTUsIDUsIAotICAgIDI0MCwgMjA5LCAyOSwgMjU0LCAzMiwgMTUsIDUsIDI0MCwgMjA5LCAyOSwgMjQyLCAxMiwgMTUsIDUsIDI0MCwgMjA5LCAyOSwgCi0gICAgMjM0LCAyMTIsIDE1LCA1LCAyNDAsIDIwOSwgMjksIDIzMiwgMjI2LCAxNSwgNSwgMjQwLCAyMDksIDI5LCAyMTUsIDE4OCwgCi0gICAgMTUsIDUsIDI0MCwgMjA1LCAxNSwgNSwgNzIsIDE1LCA1LCAyNDAsIDE0NiwgNjEsIDE1LCA1LCAyNDAsIDEwOCwgMTUsIDUsIAotICAgIDIzNiwgNTgsIDE1LCA1LCAyMzYsIDU5LCAxMTAsIDIzNiwgNTksIDI1MSwgMjcsIDE1LCA1LCAyMzYsIDU5LCAxMTAsIDIzNiwgCi0gICAgNTksIDIxOSwgMTY1LCAxNSwgNSwgMjM2LCAzMywgMTUsIDUsIDIzNiwgMzAsIDE1LCA1LCAyMzYsIDMxLCAyNDcsIDE5NCwgCi0gICAgMTUsIDUsIDIzNiwgMzEsIDIyMywgMTg4LCAxNSwgNSwgMjM2LCAzMSwgMTEwLCAyMzYsIDMxLCAyMjAsIDE5NCwgMTEwLCAKLSAgICAyMjAsIDE5NCwgMjE1LCAxODksIDExMCwgMjE1LCAxODgsIDE1LCA1LCAyMzYsIDMxLCAyNDIsIDc1LCAxNSwgNSwgMjM2LCAKLSAgICAyMiwgMTUsIDUsIDIzNiwgMjMsIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDIzNiwgMjEsIDE1LCA1LCAyMzYsIAotICAgIDExLCAxNSwgNSwgMjM2LCAxMiwgMjksIDIxOCwgMjIsIDE1LCA1LCAyMzYsIDEyLCAyNDksIDY1LCAyMzYsIDExLCAxNSwgNSwgCi0gICAgMjM2LCAxMiwgMjI3LCAzMCwgMjM2LCAxMSwgMTUsIDUsIDIzNiwgMTIsIDIxOSwgMTY1LCAxNSwgNSwgMjM2LCA0LCAxNSwgCi0gICAgNSwgMjM1LCAyNTEsIDE1LCA1LCAyMzUsIDE3NywgMTUsIDUsIDIzNSwgMTYzLCAxNSwgNSwgMTgxLCAxNSwgNSwgMjM1LCAKLSAgICAxNywgMjksIDYxLCAxNSwgNSwgMjM1LCAxNywgMjksIDI1NCwgMTYwLCAxNSwgNSwgMjM1LCAxNywgMjksIDI1NCwgMTYxLCAKLSAgICA5NCwgMjMzLCAyMzYsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjUzLCAxNDQsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjUyLCA5NCwgCi0gICAgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNTIsIDc5LCAxNSwgNSwgMjM1LCAxNywgMjksIDEzNCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAKLSAgICAyNTEsIDE4NCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNDUsIDUwLCAxNSwgNSwgMjM1LCAxNywgMjksIDI0NSwgMzcsIDE1LCAKLSAgICA1LCAyMzUsIDE3LCAyOSwgMjQzLCAxMTAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjQzLCA5NCwgMTUsIDUsIDIzNSwgMTcsIAotICAgIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNDMsIDcyLCAxNSwgNSwgMjM1LCAxNywgMjksIAotICAgIDI0MywgNzMsIDk0LCAyMjEsIDIzLCA5NCwgNjEsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjQyLCAxOTAsIDE1LCA1LCAyMzUsIAotICAgIDE3LCAyOSwgMjQyLCAxNzMsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjQyLCAxNjcsIDk0LCAyMjIsIDE0NywgMTUsIDUsIDIzNSwgCi0gICAgMTcsIDI5LCAyNDIsIDE2NywgMjQ5LCA2NSwgMjQyLCAxNjYsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjQyLCA5MiwgMTUsIDUsIAotICAgIDIzNSwgMTcsIDI5LCAyNDIsIDY4LCAxNSwgNSwgMjM1LCAxNywgMjksIDIzNiwgMzAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgCi0gICAgMjM2LCAxMSwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMzQsIDI0NywgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMzQsIDEwMSwgMTUsIAotICAgIDUsIDIzNSwgMTcsIDI5LCAyMzQsIDk4LCAxNSwgNSwgMjM1LCAxNywgMjksIDIzMywgMTMsIDE1LCA1LCAyMzUsIDE3LCAyOSwgCi0gICAgMjMyLCAxNTYsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjMxLCAxNTYsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjMxLCAxNTcsIDk0LCAKLSAgICAyNDYsIDMzLCAxNSwgNSwgMjM1LCAxNywgMjksIDIzMSwgMTU3LCA5NCwgMjQyLCAxOTAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgCi0gICAgMjMxLCAxNTcsIDk0LCAyMTcsIDIyOSwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMzEsIDQyLCAxNSwgNSwgMjM1LCAxNywgMjksIAotICAgIDIzMSwgNDMsIDk0LCAyMjgsIDQ1LCAxNSwgNSwgMjM1LCAxNywgMjksIDIyOSwgMTg3LCAxNSwgNSwgMjM1LCAxNywgMjksIAotICAgIDIyOCwgNTAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjI1LCAyNDAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjIzLCA1MSwgMTUsIAotICAgIDUsIDIzNSwgMTcsIDI5LCAyMjIsIDIwMiwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMjIsIDE0NywgMTUsIDUsIDIzNSwgMTcsIAotICAgIDI5LCAyMjEsIDI0LCAxNSwgNSwgMjM1LCAxNywgMjksIDIyMCwgMjQzLCAxNSwgNSwgMjM1LCAxNywgMjksIDIyMCwgMjEwLCAKLSAgICAxNSwgNSwgMjM1LCAxNywgMjksIDIyMCwgMTUwLCAxNSwgNSwgMjM1LCAxNywgMjksIDIyMCwgMTA4LCAxNSwgNSwgMjM1LCAKLSAgICAxNywgMjksIDIxOCwgMjUyLCAxNSwgNSwgMjM1LCAxNywgMjksIDIxOCwgMSwgMTUsIDUsIDIzNSwgMTcsIDI5LCA2OSwgMTUsIAotICAgIDUsIDIzNSwgMTcsIDI5LCAyMTUsIDE5NywgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMTUsIDE4OCwgMTUsIDUsIDIzNSwgMTcsIAotICAgIDI5LCAyMTUsIDE2MywgMjksIDE5MywgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMTUsIDEwMCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAKLSAgICAyMTIsIDM3LCAxNSwgNSwgMjM1LCAxNSwgMTUsIDUsIDIzNSwgMTYsIDI0OSwgNjUsIDIzNSwgMTUsIDE1LCA1LCAyMzUsIDgsIAotICAgIDE1LCA1LCAyMzUsIDUsIDE1LCA1LCAyMzUsIDMsIDE1LCA1LCAyMzUsIDIsIDE1LCA1LCAyMzUsIDAsIDE1LCA1LCAyMzUsIAotICAgIDEsIDExMCwgMjM1LCAwLCAxNSwgNSwgMjM0LCAyNDcsIDE1LCA1LCAyMzQsIDI0OCwgMjksIDIzNiwgMzEsIDI0MiwgNzUsIAotICAgIDE1LCA1LCAyMzQsIDI0MywgMTUsIDUsIDIzNCwgMjQ0LCAyOSwgMjUyLCA5NCwgMTUsIDUsIDIzNCwgMjQ0LCAyNDksIDY1LCAKLSAgICAyMzQsIDI0MywgMTUsIDUsIDIzNCwgMjQxLCAxNSwgNSwgMjM0LCAyNDAsIDE1LCA1LCAyMzQsIDIxMiwgMTUsIDUsIDIzNCwgCi0gICAgMjEzLCAyMzMsIDE0MSwgMjksIDExMSwgMTEwLCAyMzMsIDE0MSwgMjksIDY5LCAxNSwgNSwgMjM0LCAyMTMsIDExMCwgMjM0LCAKLSAgICAyMTMsIDIzMywgMTQxLCAyOSwgMTExLCAxMTAsIDIzMywgMTQxLCAyOSwgNjksIDE1LCA1LCAyMzQsIDE2MywgMTUsIDUsIAotICAgIDIzNCwgMTAxLCAxNSwgNSwgMjM0LCAxMDIsIDI5LCAyNTIsIDk0LCAxNSwgNSwgMjM0LCAxMDIsIDI5LCA2OSwgMTUsIDUsIAotICAgIDIzNCwgMTAyLCAyOSwgMjE1LCAxODgsIDE1LCA1LCAyMzQsIDk4LCAxNSwgNSwgMjM0LCA5MCwgMTUsIDUsIDIzNCwgNzcsIAotICAgIDE1LCA1LCAyMzQsIDc2LCAxNSwgNSwgMjM0LCA3NCwgMTUsIDUsIDIzNCwgNzUsIDExMCwgMjM0LCA3NCwgMTUsIDUsIDIzMywgCi0gICAgMjM4LCAxNSwgNSwgMjMzLCAyMzksIDExMCwgMjQxLCAxNjYsIDI5LCAyNTMsIDE0NSwgMjMzLCAyMzksIDExMCwgMjQxLCAKLSAgICAxNjYsIDI5LCAyNTMsIDE0NCwgMTUsIDUsIDIzMywgMjM2LCAxNSwgNSwgMjMzLCAyMzQsIDE1LCA1LCAyMzMsIDIzNSwgCi0gICAgMjE0LCAyNDQsIDE3LCAxNSwgNSwgMjMzLCAyMzMsIDE1LCA1LCAyMzMsIDIzMCwgMTUsIDUsIDIzMywgMjMxLCAyNDIsIDc1LCAKLSAgICAxNSwgNSwgMjMzLCAyMjksIDE1LCA1LCAyMzMsIDIxNywgMTUsIDUsIDIzMywgMjE4LCAyMjcsIDMwLCAyMzMsIDIxNywgMTUsIAotICAgIDUsIDIzMywgMjEyLCAxNSwgNSwgMjMzLCAxOTQsIDE1LCA1LCAyMzMsIDE1NywgMTUsIDUsIDIzMywgMTQwLCAxNSwgNSwgCi0gICAgMjMzLCAxNDEsIDI5LCA2MSwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMTE4LCA5NCwgMjQ4LCAxNjUsIDk0LCAxNTksIDE1LCA1LCAKLSAgICAyMzMsIDE0MSwgMjksIDExOCwgOTQsIDI0MywgNzIsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDExOCwgOTQsIDIzMywgMTI4LCAKLSAgICAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyNTQsIDg2LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyNTQsIDMyLCAxNSwgNSwgMjMzLCAKLSAgICAxNDEsIDI5LCAyNTMsIDE0NywgMjEyLCAzMywgMjE3LCAxOTIsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDI1MiwgOTQsIDE1LCAKLSAgICA1LCAyMzMsIDE0MSwgMjksIDI1MSwgMTg0LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyNDgsIDExMSwgMTUsIDUsIDIzMywgCi0gICAgMTQxLCAyOSwgMjQ1LCAxMDgsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDI0MywgMTEwLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAKLSAgICAyNDMsIDcyLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyNDIsIDg0LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyNDIsIDg1LCA5NCwgCi0gICAgMjQyLCA4NCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMTU5LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyNDIsIDEyLCAxNSwgNSwgCi0gICAgMjMzLCAxNDEsIDI5LCAyNDEsIDE2NiwgMjksIDIyOCwgNTAsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzNiwgMzEsIDI0MiwgCi0gICAgNzUsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzNiwgMTEsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzNiwgMTIsIDk0LCAxNTksIAotICAgIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzNiwgMTIsIDk0LCAyMzIsIDE1NiwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjM0LCAKLSAgICAxMDEsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzNCwgOTAsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzMywgMjM2LCAxNSwgNSwgCi0gICAgMjMzLCAxNDEsIDI5LCAyMzMsIDIzMCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjMzLCAyMzEsIDk0LCAyNDEsIDE2NiwgOTQsIAotICAgIDYxLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMzMsIDE0MCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjMyLCAyMjYsIDE1LCA1LCAKLSAgICAyMzMsIDE0MSwgMjksIDIzMiwgMTU2LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMzIsIDE0NCwgMTUsIDUsIDIzMywgMTQxLCAKLSAgICAyOSwgMjMxLCAxNTYsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzMSwgMTU3LCA5NCwgMjQ1LCAxMDgsIDE1LCA1LCAyMzMsIAotICAgIDE0MSwgMjksIDIzMCwgMTMxLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMjksIDE4NywgMTUsIDUsIDIzMywgMTQxLCAyOSwgCi0gICAgMjIwLCAyNDQsIDk0LCAyMTgsIDI0NCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjIwLCAxOTAsIDk0LCAyNDIsIDE2NywgOTQsIAotICAgIDI0NSwgNTAsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIyMCwgMTkwLCA5NCwgMjQyLCAxNjcsIDIxNywgMTkyLCAxNSwgNSwgCi0gICAgMjMzLCAxNDEsIDI5LCAyMjAsIDE0OCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjIwLCAxNDksIDk0LCAyMjAsIDE0OCwgMTUsIAotICAgIDUsIDIzMywgMTQxLCAyOSwgMjE4LCAyNDQsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIxOCwgMzMsIDE1LCA1LCAyMzMsIDE0MSwgCi0gICAgMjksIDIxOCwgMjIsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIxNywgMjMwLCA5NCwgMTE4LCA5NCwgMjE5LCAyOCwgOTQsIAotICAgIDIwNSwgMTUsIDUsIDIzMywgMTQxLCAyOSwgNjksIDE1LCA1LCAyMzMsIDE0MSwgMjksIDExMSwgOTQsIDYxLCAxNSwgNSwgCi0gICAgMjMzLCAxNDEsIDI5LCAxMTEsIDk0LCAxMTEsIDk0LCA2OSwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjE1LCAxOTgsIDk0LCAKLSAgICAyNTMsIDE0NiwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjE1LCAxODgsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIxNSwgMTAwLCAKLSAgICAxNSwgNSwgMjMzLCAxNDEsIDIxOSwgMTY1LCAxNSwgNSwgMjMzLCAxMzgsIDE1LCA1LCAyMzMsIDEzOSwgMjksIDIyMCwgCi0gICAgMjQzLCAxNSwgNSwgMjMzLCAxMzksIDI5LCAyMjAsIDI0NCwgOTQsIDIxOCwgMjQ0LCAxNSwgNSwgMjMzLCAxMzksIDI0MiwgCi0gICAgNzUsIDE1LCA1LCAyMzMsIDEzOSwgMjQyLCA3NiwgMTEwLCAyMzMsIDEzOSwgMjQyLCA3NiwgMjIwLCAyNDMsIDE1LCA1LCAKLSAgICAyMzMsIDEzNSwgMTUsIDUsIDIzMywgMTI4LCAxNSwgNSwgMjMzLCAxMjksIDI5LCAyMzMsIDEyOCwgMTUsIDUsIDIzMywgCi0gICAgMTI2LCAxNSwgNSwgMjMzLCAxMjcsIDI5LCAyMzMsIDIxNywgMTUsIDUsIDIzMywgMTI3LCAyOSwgMjMzLCAyMTgsIDk0LCAKLSAgICAyMjMsIDUxLCAxNSwgNSwgMjMzLCAxMywgMTUsIDUsIDIzMiwgMjU0LCAxNSwgNSwgMjMyLCAyNDUsIDE1LCA1LCAyMzIsIAotICAgIDIyNiwgMTUsIDUsIDIzMiwgMTU2LCAxNSwgNSwgMjMyLCAxNTcsIDI5LCAyNTIsIDk0LCAxNSwgNSwgMjMyLCAxNTQsIDE1LCAKLSAgICA1LCAyMzIsIDE1NSwgMjksIDI1NCwgODYsIDE1LCA1LCAyMzIsIDE1NSwgMjksIDI1MiwgOTQsIDE1LCA1LCAyMzIsIDE1NSwgCi0gICAgMjksIDI0NSwgMzcsIDE1LCA1LCAyMzIsIDE1NSwgMjksIDI0NSwgMzgsIDIxNywgMTkyLCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAKLSAgICAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDIzMiwgMTU1LCAyOSwgMjQxLCAxNjYsIDI5LCAyNTIsIDk0LCAxNSwgNSwgCi0gICAgMjMyLCAxNTUsIDI5LCAyMzYsIDExLCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAyMzUsIDUsIDE1LCA1LCAyMzIsIDE1NSwgMjksIAotICAgIDIzNSwgMywgMTUsIDUsIDIzMiwgMTU1LCAyOSwgMjM1LCA0LCA5NCwgMjUzLCAxNDYsIDE1LCA1LCAyMzIsIDE1NSwgMjksIAotICAgIDIzNCwgMTAxLCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAyMzMsIDE1OCwgOTQsIDI1MywgMTQ2LCAxNSwgNSwgMjMyLCAxNTUsIAotICAgIDI5LCAyMzMsIDE0MCwgMTUsIDUsIDIzMiwgMTU1LCAyOSwgMjMxLCAxNTcsIDk0LCAyNDUsIDEwOCwgMTUsIDUsIDIzMiwgCi0gICAgMTU1LCAyOSwgMjI5LCAxODcsIDE1LCA1LCAyMzIsIDE1NSwgMjksIDIyOCwgOTIsIDE1LCA1LCAyMzIsIDE1NSwgMjksIAotICAgIDIyMCwgMTE4LCA5NCwgMjUzLCAxNDYsIDE1LCA1LCAyMzIsIDE1NSwgMjksIDIyMCwgMTAwLCA5NCwgMjUxLCA1NCwgMTUsIAotICAgIDUsIDIzMiwgMTU1LCAyOSwgMjE2LCA3NywgMTUsIDUsIDIzMiwgMTU1LCAyMTcsIDE5MiwgMTUsIDUsIDIzMiwgMTU1LCAKLSAgICAyNDksIDY1LCAyMzIsIDE1NCwgMTUsIDUsIDIzMiwgMTU1LCAyMjcsIDMwLCAyMzIsIDE1NCwgMTUsIDUsIDIzMiwgMTU1LCAKLSAgICAyMTksIDE2NSwgMTUsIDUsIDIzMiwgMTU1LCAyMjAsIDIyNSwgMTUsIDUsIDIzMiwgMTUzLCAxNSwgNSwgMjMyLCAxNDksIAotICAgIDE1LCA1LCAyMzIsIDE1MCwgMTEwLCAyMzIsIDE0OSwgMTUsIDUsIDIzMiwgMTUwLCAyMjcsIDMwLCAyMzIsIDE0OSwgMTUsIAotICAgIDUsIDIzMiwgMTUwLCAyMjAsIDIyNSwgMTUsIDUsIDIzMiwgMTQ3LCAxNSwgNSwgMjMyLCAxNDQsIDE1LCA1LCAyMzIsIDE0MiwgCi0gICAgMTUsIDUsIDIzMiwgMTQzLCAxMTAsIDIzMiwgMTQyLCAxNSwgNSwgMjMyLCAxNDMsIDExMCwgMjMyLCAxNDMsIDI0MywgNzMsIAotICAgIDExMCwgMjQzLCA3MiwgMTUsIDUsIDE4OCwgMTUsIDUsIDIzMiwgNDMsIDI5LCAyMTgsIDIyLCAxNSwgNSwgMjMyLCA0MywgCi0gICAgMjQyLCA3NSwgMTUsIDUsIDIzMiwgNDIsIDE1LCA1LCAyMzIsIDE1LCAxNSwgNSwgMjMxLCAyMjksIDE1LCA1LCAyMzEsIAotICAgIDIxMCwgMTUsIDUsIDIzMSwgMjA5LCAxNSwgNSwgMjMxLCAxNTYsIDE1LCA1LCAyMzEsIDExMiwgMTUsIDUsIDIzMSwgNDIsIAotICAgIDE1LCA1LCAyMzEsIDEsIDE1LCA1LCAyMzAsIDE3MiwgMTUsIDUsIDIzMCwgMTczLCAxMTAsIDIzMCwgMTcyLCAxNSwgNSwgCi0gICAgMjMwLCAxNjMsIDE1LCA1LCAyMzAsIDE2NCwgMjQyLCA3NSwgMTUsIDUsIDIzMCwgMTQ4LCAxNSwgNSwgMjMwLCAxMzQsIDE1LCAKLSAgICA1LCAyMzAsIDEzMSwgMTUsIDUsIDIzMCwgMTMyLCAyOSwgNjEsIDE1LCA1LCAyMzAsIDEzMiwgMjksIDIzMywgMjE3LCAxNSwgCi0gICAgNSwgMjMwLCAxMzIsIDI5LCAyMTIsIDEwOSwgMTUsIDUsIDIzMCwgMTMyLCAxMTAsIDIzMCwgMTMxLCAxNSwgNSwgMjMwLCAKLSAgICAxMzIsIDExMCwgMjMwLCAxMzIsIDI5LCAxMTgsIDk0LCAyMDUsIDE1LCA1LCAyMzAsIDEzMiwgMjQ5LCA2NSwgMjMwLCAxMzEsIAotICAgIDE1LCA1LCAyMzAsIDEyOSwgMTUsIDUsIDIzMCwgMTMwLCAyOSwgNjEsIDE1LCA1LCAyMzAsIDEzMCwgMjksIDExOCwgOTQsIAotICAgIDI0NywgMjExLCAxNSwgNSwgMjMwLCAxMzAsIDI5LCAyNDcsIDIxMSwgMTUsIDUsIDIzMCwgMTMwLCAyNDIsIDc1LCAxNSwgNSwgCi0gICAgMjA1LCAxNSwgNSwgMjMwLCA0NSwgMTUsIDUsIDIzMCwgMzQsIDE1LCA1LCAyMzAsIDM1LCAyMzUsIDE5MCwgMTUsIDUsIAotICAgIDIzMCwgMzUsIDI5LCAyMjAsIDE1MSwgMjE3LCAxOTIsIDE1LCA1LCAyMzAsIDM1LCAyMjcsIDMwLCAyMzAsIDM0LCAxNSwgNSwgCi0gICAgMjMwLCAzMywgMTUsIDUsIDIzMCwgMjgsIDIyOCwgMzYsIDE1LCA1LCAyMzAsIDI3LCAxNSwgNSwgMjMwLCAyNiwgMTUsIDUsIAotICAgIDIyOSwgMTg3LCAxNSwgNSwgMjI5LCAxODgsIDI5LCA2MSwgMTUsIDUsIDIyOSwgMTg4LCAyOSwgMjE1LCAxODgsIDE1LCA1LCAKLSAgICAyMjksIDE4OCwgMjIwLCAyMjUsIDE1LCA1LCAyMjksIDY0LCAxNSwgNSwgMjI5LCA2NSwgMjksIDc0LCAxNSwgNSwgMjI5LCAKLSAgICA2MywgMTUsIDUsIDIyOSwgMzQsIDE1LCA1LCAyMjksIDM1LCAyOSwgMjQzLCA4MSwgMjE3LCAxOTIsIDE1LCA1LCAyMjksIAotICAgIDM1LCAyOSwgMjQzLCA3MywgOTQsIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMjI5LCAzMiwgMTUsIDUsIDIyOSwgMzMsIAotICAgIDI5LCAyNTQsIDMyLCAxNSwgNSwgMjI5LCAzMywgMjksIDI1MywgMTQ2LCAxNSwgNSwgMjI5LCAzMywgMjksIDI1MywgMTQ3LCAKLSAgICA5NCwgMjUzLCAxNDYsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjQyLCA4NCwgMTUsIDUsIDIyOSwgMzMsIDI5LCAyMzEsIDE1NywgCi0gICAgOTQsIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMjI5LCAzMywgMjksIDIyOSwgMTg3LCAxNSwgNSwgMjI5LCAzMywgMjksIAotICAgIDIyOCwgNTAsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjIwLCAyNDQsIDk0LCAKLSAgICAxMTgsIDI1NCwgMzIsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjIwLCAyNDQsIDk0LCAyNTMsIDE0NiwgMTUsIDUsIDIyOSwgMzMsIAotICAgIDI5LCAyMjAsIDI0NCwgOTQsIDI1MywgMTQ3LCA5NCwgMjUzLCAxNDYsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjE1LCAxOTgsIAotICAgIDk0LCAyNTMsIDE0NiwgMTUsIDUsIDIyOSwgMzMsIDI5LCAyMTUsIDEwMCwgMTUsIDUsIDIyOSwgMjEsIDE1LCA1LCAyMjgsIAotICAgIDkyLCAxNSwgNSwgMjI4LCA2NSwgMTUsIDUsIDIyOCwgNTAsIDE1LCA1LCAyMjgsIDUxLCAyMzMsIDEzOSwgMjksIDI0MywgCi0gICAgNzIsIDE1LCA1LCAyMjgsIDUxLCAyMzMsIDEzOSwgMjksIDIzMSwgMjEwLCAxNSwgNSwgMjI4LCA1MSwgMjMzLCAxMzksIDI5LCAKLSAgICAyMjIsIDE3OSwgMTUsIDUsIDIyOCwgNTEsIDIzMywgMTM5LCAyOSwgMjIyLCAxODAsIDExMCwgMjI4LCA1MSwgMjMzLCAxMzksIAotICAgIDI5LCAyMjIsIDE3OSwgMTUsIDUsIDIyOCwgNTEsIDIzMywgMTM5LCAyOSwgMjE1LCAxMDAsIDE1LCA1LCAyMjgsIDUxLCAKLSAgICAyMTcsIDE5MiwgMTUsIDUsIDIyOCwgNTEsIDExMCwgMjI4LCA1MCwgMTUsIDUsIDIyOCwgNTEsIDI0OSwgNjUsIDIyOCwgNTAsIAotICAgIDE1LCA1LCAyMjgsIDUxLCAyNDksIDY1LCAyMjgsIDUxLCAyMzMsIDEzOSwgMTEwLCAyMzMsIDEzOCwgMTUsIDUsIDIyOCwgCi0gICAgNDUsIDE1LCA1LCAyMjgsIDQ2LCAyNTQsIDE4NCwgMjksIDI1MywgMTQxLCAxNSwgNSwgMjI4LCA0NiwgMjU0LCAxODQsIDI5LCAKLSAgICAyNTEsIDE4NCwgMTUsIDUsIDIyOCwgNDYsIDI1NCwgMTg0LCAyOSwgMjQ2LCAyOSwgMTUsIDUsIDIyOCwgNDYsIDI1NCwgCi0gICAgMTg0LCAyOSwgMjQyLCA4NCwgMTUsIDUsIDIyOCwgNDYsIDI1NCwgMTg0LCAyOSwgMjM2LCAzMSwgMjQyLCA3NSwgMTUsIDUsIAotICAgIDIyOCwgNDYsIDI1NCwgMTg0LCAyOSwgMjM1LCAzLCAxNSwgNSwgMjI4LCA0NiwgMjU0LCAxODQsIDI5LCAyMzMsIDE1NywgCi0gICAgMTUsIDUsIDIyOCwgNDYsIDI1NCwgMTg0LCAyOSwgMjI5LCAxODcsIDE1LCA1LCAyMjgsIDQ2LCAyNTQsIDE4NCwgMjksIAotICAgIDIyMCwgOTcsIDE1LCA1LCAyMjgsIDQ2LCAyNTQsIDE4NCwgMjksIDIxNSwgMTk3LCAxNSwgNSwgMjI4LCA0NiwgMjM0LCA3NSwgCi0gICAgMjksIDI1MSwgMTg0LCAxNSwgNSwgMjI4LCA0NiwgMjM0LCA3NSwgMjksIDI1MSwgMTg1LCA2OSwgMTUsIDUsIDE5MywgMTUsIAotICAgIDUsIDIyNiwgMjA0LCAxNSwgNSwgMjI2LCAxNzQsIDE1LCA1LCAyMjYsIDE0OSwgMTUsIDUsIDIyNiwgMzcsIDE1LCA1LCAKLSAgICAyMjUsIDI0MCwgMTUsIDUsIDIyNSwgMjQxLCAyOSwgNjEsIDE1LCA1LCAyMjUsIDI0MSwgMjksIDI1NCwgMTg1LCAxNSwgNSwgCi0gICAgMjI1LCAyNDEsIDI5LCAyNTEsIDE4NCwgMTUsIDUsIDIyNSwgMjQxLCAyOSwgMjUxLCA1NCwgMTUsIDUsIDIyNSwgMjQxLCAKLSAgICAyOSwgNzQsIDE1LCA1LCAyMjUsIDI0MSwgMjksIDcyLCAxNSwgNSwgMjI1LCAyNDEsIDI5LCAyNDAsIDEwOCwgMTUsIDUsIAotICAgIDIyNSwgMjQxLCAyOSwgNjksIDE1LCA1LCAyMjUsIDI0MSwgMjksIDIxNSwgMTk3LCAxNSwgNSwgMjI1LCAyNDEsIDI0OSwgCi0gICAgNjUsIDIyNSwgMjQwLCAxNSwgNSwgMjI1LCAxODUsIDE1LCA1LCAyMjUsIDE4NiwgMjksIDIzNCwgMjQzLCAxNSwgNSwgMjI1LCAKLSAgICAxODYsIDI5LCAyMTUsIDE4OCwgMTUsIDUsIDIyNSwgMTg2LCAyOSwgMjEyLCAxMDksIDE1LCA1LCAyMjUsIDE4NiwgMjI3LCAKLSAgICAzMCwgMjI1LCAxODUsIDE1LCA1LCAyMDMsIDE1LCA1LCAyMjQsIDcyLCAxNSwgNSwgMjIzLCAxODgsIDE1LCA1LCAyMjMsIAotICAgIDUxLCAxNSwgNSwgMjIyLCAyMDIsIDE1LCA1LCAyMjIsIDE5MSwgMjI4LCAzNiwgMTUsIDUsIDIyMiwgMTkwLCAxNSwgNSwgCi0gICAgMjIyLCAxOTEsIDI5LCA2MSwgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMjQ2LCAzMywgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMjQ2LCAKLSAgICAzMSwgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMTU5LCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyMzQsIDI0NywgMTUsIDUsIDIyMiwgCi0gICAgMTkxLCAyOSwgMjMzLCAyMTcsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDIzMiwgMTQyLCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAKLSAgICAyMzEsIDQyLCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyMjgsIDUwLCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyMjIsIDE3OSwgMTUsIAotICAgIDUsIDIyMiwgMTkxLCAyOSwgMjIwLCAyMTAsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDIxOCwgNDEsIDE1LCA1LCAyMjIsIDE5MSwgCi0gICAgMjksIDIxNSwgMTk3LCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyMTUsIDE5NCwgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMjE1LCAKLSAgICAxNjcsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDIxNSwgMTIxLCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyMTUsIDEwMCwgMTUsIDUsIAotICAgIDIyMiwgMTkxLCAxMTAsIDIyMiwgMTkwLCAxNSwgNSwgMjIyLCAxOTEsIDI0MiwgNzUsIDE1LCA1LCAyMjIsIDE3OSwgMTUsIAotICAgIDUsIDIyMiwgMTgwLCAyMzMsIDE0MSwgMjksIDI1MywgMTQ0LCAxNSwgNSwgMjIyLCAxNTUsIDE1LCA1LCAyMjIsIDE0NywgCi0gICAgMTUsIDUsIDIyMSwgMjQsIDE1LCA1LCAyMjEsIDIyLCAxNSwgNSwgMjIxLCAyMywgMjksIDYxLCAxNSwgNSwgMjIxLCAyMywgCi0gICAgMjksIDI1MiwgOTQsIDE1LCA1LCAyMjEsIDIzLCAyOSwgMjQyLCAxNjYsIDE1LCA1LCAyMjEsIDIzLCAyOSwgMjI5LCAxODcsIAotICAgIDE1LCA1LCAyMjEsIDIzLCAyOSwgMjIwLCAxNDgsIDE1LCA1LCAyMjEsIDIzLCAyOSwgMjE2LCA2MiwgMTUsIDUsIDIyMSwgCi0gICAgMjMsIDI5LCA2OSwgMTUsIDUsIDIyMSwgMjMsIDI5LCAxMTEsIDk0LCA2MSwgMTUsIDUsIDIyMSwgMjEsIDE1LCA1LCAyMjEsIAotICAgIDE5LCAxNSwgNSwgMjIxLCAxLCAxNSwgNSwgMjIwLCAyNDMsIDE1LCA1LCAyMjAsIDI0NCwgMjQwLCAyMTIsIDE1LCA1LCAKLSAgICAyMjAsIDI0NCwgMTEwLCAyMjAsIDI0NCwgMjQzLCAxMDIsIDExMCwgMjQzLCAxMDIsIDI0MywgNzMsIDExMCwgMjQzLCA3MiwgCi0gICAgMTUsIDUsIDIyMCwgMjQ0LCAxMTAsIDIyMCwgMjQ0LCAyMTgsIDQyLCAxMTAsIDIxOCwgNDIsIDI0MywgNzMsIDExMCwgMjQzLCAKLSAgICA3MiwgMTUsIDUsIDIyMCwgMjM2LCAxNSwgNSwgMjIwLCAyMzEsIDE1LCA1LCAyMjAsIDIyOCwgMTUsIDUsIDIyMCwgMjI3LCAKLSAgICAxNSwgNSwgMjIwLCAyMjQsIDE1LCA1LCAyMjAsIDIxMCwgMTUsIDUsIDIyMCwgMjExLCAyOSwgNjEsIDE1LCA1LCAyMjAsIAotICAgIDIxMSwgMjksIDIzNiwgMTEsIDE1LCA1LCAyMjAsIDIwNCwgMTUsIDUsIDIyMCwgMjA1LCAyOSwgNjEsIDE1LCA1LCAyMjAsIAotICAgIDIwNSwgMjksIDI1MiwgODAsIDE1LCA1LCAyMjAsIDIwNSwgMjksIDI1MSwgMzgsIDE1LCA1LCAyMjAsIDIwNSwgMjksIDI0NywgCi0gICAgMTU4LCAxNSwgNSwgMjIwLCAyMDUsIDI5LCAyNDMsIDcyLCAxNSwgNSwgMjIwLCAyMDUsIDI5LCAyMzYsIDMwLCAxNSwgNSwgCi0gICAgMjIwLCAyMDUsIDI5LCAyMzYsIDMxLCAyNDIsIDc1LCAxNSwgNSwgMjIwLCAyMDUsIDI5LCAyMzMsIDIxMiwgMTUsIDUsIAotICAgIDIyMCwgMjA1LCAyOSwgMjMyLCAxNDQsIDE1LCA1LCAyMjAsIDIwNSwgMjksIDIzMCwgMTYzLCAxNSwgNSwgMjIwLCAyMDUsIAotICAgIDI5LCAyMjIsIDE3OSwgMTUsIDUsIDIyMCwgMTk4LCAxNSwgNSwgMjIwLCAxOTMsIDE1LCA1LCAyMjAsIDE5NCwgMjE3LCAKLSAgICAxOTIsIDE1LCA1LCAyMjAsIDE5NCwgMTEwLCAyMjAsIDE5NCwgMjUxLCAyOCwgMTEwLCAyNTEsIDI3LCAxNSwgNSwgMjIwLCAKLSAgICAxODksIDE1LCA1LCAyMjAsIDE1MCwgMTUsIDUsIDIyMCwgMTUxLCAxMTAsIDIzNSwgMTkxLCAyMjAsIDE1MCwgMTUsIDUsIAotICAgIDIyMCwgMTQ4LCAxNSwgNSwgMjIwLCAxNDcsIDE1LCA1LCAyMjAsIDExNywgMTUsIDUsIDIyMCwgMTE4LCAyNDIsIDc1LCAxNSwgCi0gICAgNSwgMjIwLCAxMDgsIDE1LCA1LCAyMjAsIDEwNiwgMTUsIDUsIDIyMCwgMTA3LCAxMTAsIDIyMCwgMTA3LCAyMjAsIDE0OCwgCi0gICAgMTUsIDUsIDIyMCwgOTksIDE1LCA1LCAyMjAsIDk3LCAxNSwgNSwgMjE5LCAyNywgMTUsIDUsIDIxOSwgMjgsIDExMCwgMjE5LCAKLSAgICAyNywgMTUsIDUsIDIxOCwgMjU1LCAxNSwgNSwgMjE4LCAyNTQsIDE1LCA1LCAyMTgsIDI1MiwgMTUsIDUsIDIxOCwgMjQ0LCAKLSAgICAxNSwgNSwgMjE4LCAyNDMsIDE1LCA1LCAyMTgsIDIxNywgMTUsIDUsIDIxOCwgMjE2LCAxNSwgNSwgMjE4LCA1MiwgMTUsIDUsIAotICAgIDIxOCwgNTMsIDI1MywgMTMyLCAxNSwgNSwgMjE4LCA1MywgMjksIDI0MSwgMTY1LCAxNSwgNSwgMjE4LCA1MywgMjksIDIzMSwgCi0gICAgNDIsIDE1LCA1LCAyMTgsIDUzLCAyNDIsIDc1LCAxNSwgNSwgMjE4LCA0MSwgMTUsIDUsIDIxOCwgNDIsIDExMCwgMjE4LCAKLSAgICA0MiwgMjI5LCA2NSwgMTEwLCAyMjksIDY1LCAyNDcsIDE0MCwgMTEwLCAyNDcsIDEzOSwgMTUsIDUsIDIxOCwgNDIsIDIxOSwgCi0gICAgMTY1LCAxNSwgNSwgMjE4LCAzMywgMTUsIDUsIDEyNiwgMjksIDI1MSwgMTg0LCAxNSwgNSwgMTI2LCAyOSwgMjQyLCA4NCwgCi0gICAgMTUsIDUsIDEyNiwgMjksIDIyMCwgMjQzLCAxNSwgNSwgMTI2LCAyOSwgMjIwLCAxNTAsIDE1LCA1LCAxMjYsIDI5LCAyMTYsIAotICAgIDc3LCAxNSwgNSwgMTI2LCAyOSwgMjE1LCAxODgsIDE1LCA1LCAyMTgsIDIyLCAxNSwgNSwgMjE4LCAxLCAxNSwgNSwgMjE3LCAKLSAgICAyMjksIDE1LCA1LCAyMTcsIDIzMCwgMjQyLCA3NSwgMTUsIDUsIDIxNywgNzEsIDE1LCA1LCAyMTcsIDcyLCAyMTcsIDE5MiwgCi0gICAgMTUsIDUsIDIxNywgNDQsIDE1LCA1LCAyMTcsIDI1LCAxNSwgNSwgMjE3LCAyNiwgMjksIDIxOCwgMjIsIDE1LCA1LCAyMTcsIAotICAgIDI2LCAxMTAsIDIxNywgMjUsIDE1LCA1LCAyMTcsIDI2LCAxMTAsIDIxNywgMjYsIDI0MywgMTAyLCAxMTAsIDI0MywgMTAyLCAKLSAgICAyNDMsIDczLCAxMTAsIDI0MywgNzIsIDE1LCA1LCAyMTYsIDgyLCAxNSwgNSwgMjE2LCA3NywgMTUsIDUsIDIxNiwgNzUsIAotICAgIDE1LCA1LCAyMTYsIDcyLCAxNSwgNSwgMjE2LCA2MiwgMTUsIDUsIDIxNiwgNjMsIDExMCwgMjE2LCA2MywgMjEyLCAxMTAsIAotICAgIDExMCwgMjEyLCAxMDksIDE1LCA1LCA2OSwgMTUsIDUsIDExMSwgMjQyLCA4NCwgMTUsIDUsIDExMSwgMTExLCA2OSwgMTUsIAotICAgIDUsIDExMSwgMTEwLCAxMTEsIDIyNiwgMjE0LCAxMTAsIDIyNiwgMjE0LCAyNDMsIDczLCAxMTAsIDI0MywgNzIsIDE1LCA1LCAKLSAgICAxMTEsIDExMCwgMTExLCAyMTgsIDIxOCwgMTEwLCAyMTgsIDIxNywgMTUsIDUsIDExMSwgMTEwLCAxMTEsIDExMSwgMjIzLCAKLSAgICAyMDIsIDExMCwgMTExLCAyMjMsIDIwMSwgMTUsIDUsIDIxNSwgMTk3LCAxNSwgNSwgMjE1LCAxOTQsIDE1LCA1LCAyMTUsIAotICAgIDE4OCwgMTUsIDUsIDIxNSwgMTg5LCAyMzMsIDIxMiwgMTUsIDUsIDIxNSwgMTg5LCAyOSwgMjUyLCA5NCwgMTUsIDUsIDIxNSwgCi0gICAgMTg5LCAyOSwgMjMxLCA0MiwgMTUsIDUsIDIxNSwgMTg5LCAyOSwgMTExLCA5NCwgMTExLCA5NCwgNjksIDE1LCA1LCAyMTUsIAotICAgIDE4OSwgMjksIDExMSwgOTQsIDExMSwgOTQsIDExMSwgMjQyLCA3NSwgMTUsIDUsIDIxNSwgMTg5LCAyNDIsIDc1LCAxNSwgNSwgCi0gICAgMjE1LCAxODksIDIyMCwgMjI1LCAxNSwgNSwgMjE1LCAxODksIDIyMCwgMjI2LCAyOSwgMjUyLCA5NCwgMTUsIDUsIDIxNSwgCi0gICAgMTg0LCAxNSwgNSwgMjE1LCAxNjcsIDE1LCA1LCAyMTUsIDE2OCwgMjksIDIzMywgMTQwLCAxNSwgNSwgMjE1LCAxNjgsIDI5LCAKLSAgICAyMzEsIDE1NywgOTQsIDI0OCwgMTY0LCAxNSwgNSwgMjE1LCAxNjgsIDI5LCAyMjEsIDIyLCAxNSwgNSwgMjE1LCAxNjgsIAotICAgIDI5LCA2OSwgMTUsIDUsIDIxNSwgMTY2LCAxNSwgNSwgMjE1LCAxNjIsIDE1LCA1LCAyMTUsIDE2MywgMjksIDIzNCwgMjEyLCAKLSAgICAxNSwgNSwgMjE1LCAxNjMsIDI5LCAxOTMsIDE1LCA1LCAyMTUsIDE2MCwgMTUsIDUsIDIxNSwgMTYxLCAyNDIsIDc1LCAxNSwgCi0gICAgNSwgMjE1LCAxMjEsIDE1LCA1LCAyMTUsIDEyMiwgMjQ5LCA2NSwgMjE1LCAxMjEsIDE1LCA1LCAyMTUsIDEyMiwgMjIwLCAKLSAgICAyMjUsIDE1LCA1LCAyMTUsIDExOSwgMTUsIDUsIDIxNSwgMTIwLCAyOSwgMTE4LCA5NCwgMTU5LCAxNSwgNSwgMjE1LCAxMjAsIAotICAgIDI5LCAxMTgsIDk0LCAyMDUsIDE1LCA1LCAyMTUsIDEyMCwgMjksIDI1NCwgODYsIDE1LCA1LCAyMTUsIDEyMCwgMjksIDE1OSwgCi0gICAgMTUsIDUsIDIxNSwgMTIwLCAyOSwgMjI4LCA1MCwgMTUsIDUsIDIxNSwgMTIwLCAyOSwgMjE1LCAxOTcsIDE1LCA1LCAyMTUsIAotICAgIDEyMCwgMjksIDIxNSwgMTk4LCA5NCwgMjUzLCAxNDYsIDE1LCA1LCAyMTUsIDEyMCwgMjksIDIxNSwgMTk4LCA5NCwgMjUxLCAKLSAgICAxODQsIDE1LCA1LCAyMTUsIDExOCwgMTUsIDUsIDIxNSwgMTE1LCAxNSwgNSwgMjE1LCAxMTQsIDE1LCA1LCAyMTUsIDExMCwgCi0gICAgMTUsIDUsIDIxNSwgMTExLCAyOSwgNjEsIDE1LCA1LCAyMTUsIDExMSwgMjksIDI1MywgMTQxLCAxNSwgNSwgMjE1LCAxMTEsIAotICAgIDI5LCAxMzQsIDE1LCA1LCAyMTUsIDExMSwgMjksIDI0NiwgMjMsIDE1LCA1LCAyMTUsIDExMSwgMjksIDI0MywgMTEwLCAxNSwgCi0gICAgNSwgMjE1LCAxMTEsIDI5LCAyNDMsIDk0LCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIAotICAgIDIxNSwgMTExLCAyOSwgMjQzLCA3MiwgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjQyLCA5MiwgMTUsIDUsIDIxNSwgMTExLCAyOSwgCi0gICAgMTU5LCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyMzYsIDMwLCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyMzYsIDExLCAxNSwgNSwgCi0gICAgMjE1LCAxMTEsIDI5LCAyMzUsIDE2MywgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjM0LCAxMDEsIDE1LCA1LCAyMTUsIDExMSwgCi0gICAgMjksIDIzMiwgMTQyLCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyMzEsIDEsIDE1LCA1LCAyMTUsIDExMSwgMjksIDE5MywgMTUsIAotICAgIDUsIDIxNSwgMTExLCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyMTUsIDExMSwgMjksIDIyMCwgMTA2LCAxNSwgNSwgMjE1LCAKLSAgICAxMTEsIDI5LCAyMTYsIDgyLCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAxMTEsIDk0LCAyNDIsIDg0LCAxNSwgNSwgMjE1LCAxMTEsIAotICAgIDI5LCAyMTUsIDE4OCwgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjE1LCAxMDgsIDE1LCA1LCAyMTUsIDEwOCwgMTUsIDUsIDIxNSwgCi0gICAgMTA5LCAyOSwgNjksIDE1LCA1LCAyMTUsIDEwMCwgMTUsIDUsIDIxNSwgMTAxLCAyOSwgNjEsIDE1LCA1LCAyMTUsIDEwMSwgCi0gICAgMjksIDIzMywgMjM4LCAxNSwgNSwgMjE1LCAxMDEsIDI5LCAyMzMsIDIxNywgMTUsIDUsIDIxNSwgMTAxLCAyOSwgMjE4LCAKLSAgICAyMiwgMTUsIDUsIDIxNSwgOTYsIDE1LCA1LCAyMTUsIDk5LCAxNSwgNSwgMjE1LCA5NywgMTUsIDUsIDIxNSwgOTMsIDE1LCAKLSAgICA1LCAyMTUsIDgyLCAxNSwgNSwgMjE1LCA4MywgMjksIDIzNCwgMjEyLCAxNSwgNSwgMjE1LCA4MSwgMTUsIDUsIDIxMiwgCi0gICAgMTA5LCAxNSwgNSwgMjEyLCAxMTAsIDIxNywgMTkyLCAxNSwgNSwgMjEyLCAxMTAsIDkxLCAyOSwgMjMzLCAyMTcsIDE1LCA1LCAKLSAgICAyMTIsIDEwNiwgMTUsIDUsIDIxMiwgOTksIDE1LCA1LCAyMTIsIDg2LCAxNSwgNSwgMjEyLCAzNywgMTUsIDUsIDIxMiwgMzgsIAotICAgIDExMCwgMjEyLCAzNywgMTUsIDUsIDIxMiwgMzYsIDE1LCA1LCAyMTIsIDM0LCAxNSwgNSwgMjEyLCAzNSwgMjM1LCA3LCAKLSAgICAyMTcsIDE5MiwgMTUsIDUsIDIxMiwgMjksIDE1LCA1LCAyMTIsIDIxLCAxNSwgNSwgMjEyLCA4LCAxNSwgNSwgMjEyLCA2LCAKLSAgICAxNSwgNSwgMjEyLCA3LCAyOSwgNjEsIDE1LCA1LCAyMTIsIDUsIDE1LCA1LCAyMTIsIDQsIDE1LCAxMjgsIDUsIDExNywgCi0gICAgMjUzLCAxNDYsIDE1LCAxMjgsIDUsIDEzMywgMjUzLCAxNDYsIDE1LCAxMjgsIDUsIDI0MywgMjM3LCAyNTMsIDE0NiwgMTUsIAotICAgIDEyOCwgNSwgMjQ0LCA1MCwgMjUzLCAxNDYsIDE1LCAxMjgsIDUsIDIyMCwgNTMsIDI1MywgMTQ2LCAxNSwgMTI4LCA1LCAKLSAgICAyMjEsIDQzLCAyNTMsIDE0NiwgMTUsIDEyOCwgNSwgMjQ1LCAxNTAsIDI1MywgMTQ2LCAxNSwgMTI4LCA1LCAyMjksIDMxLCAKLSAgICAyNTMsIDE0NiwgMTUsIDEyOCwgNSwgMTMzLCAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgMjQzLCAyMzcsIDI0NywgMTM5LCAxNSwgCi0gICAgMTI4LCA1LCAyNDQsIDUwLCAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgMjIwLCA1MywgMjQ3LCAxMzksIDE1LCAxMjgsIDUsIAotICAgIDIyMSwgNDMsIDI0NywgMTM5LCAxNSwgMTI4LCA1LCAyNDUsIDE1MCwgMjQ3LCAxMzksIDE1LCAxMjgsIDUsIDIyOSwgMzEsIAotICAgIDI0NywgMTM5LCAxNSwgMTI4LCA1LCAyNDMsIDIzNywgNjksIDE1LCAxMjgsIDUsIDI0NCwgNTAsIDY5LCAxNSwgMTI4LCA1LCAKLSAgICAyMjAsIDUzLCA2OSwgMTUsIDEyOCwgNSwgMjIxLCA0MywgNjksIDE1LCAxMjgsIDUsIDI0NSwgMTUwLCA2OSwgMTUsIDEyOCwgCi0gICAgNSwgMjI5LCAzMSwgNjksIDE1LCAxMjgsIDUsIDEyMiwgMjQzLCAxNCwgMTUsIDEyOCwgNSwgMTE3LCAyNDMsIDE0LCAxNSwgCi0gICAgMTI4LCA1LCAxMzMsIDI0MywgMTQsIDE1LCAxMjgsIDUsIDI0MywgMjM3LCAyNDMsIDE0LCAxNSwgMTI4LCA1LCAyNDQsIDUwLCAKLSAgICAyNDMsIDE0LCAxNSwgMTI4LCA1LCAyMjAsIDUzLCAyNDMsIDE0LCAxNSwgMTI4LCA1LCAyMjEsIDQzLCAyNDMsIDE0LCAxNSwgCi0gICAgMTI4LCA1LCAyNDUsIDE1MCwgMjQzLCAxNCwgMTUsIDEyOCwgNSwgMjI5LCAzMSwgMjQzLCAxNCwgMTUsIDEyOCwgNSwgMTIyLCAKLSAgICAyNDMsIDExLCAxNSwgMTI4LCA1LCAxMTcsIDI0MywgMTEsIDE1LCAxMjgsIDUsIDEzMywgMjQzLCAxMSwgMTUsIDEyOCwgNSwgCi0gICAgMjQzLCAyMzcsIDI0MywgMTEsIDE1LCAxMjgsIDUsIDI0NCwgNTAsIDI0MywgMTEsIDE1LCAxMjgsIDUsIDExNywgMjIxLCAxLCAKLSAgICAxNSwgMTI4LCA1LCAxMzMsIDIyMSwgMSwgMTUsIDEyOCwgNSwgMTMzLCAyMjEsIDIsIDIxNCwgMjQ0LCAxNywgMTUsIDEyOCwgCi0gICAgNSwgMjQzLCAyMzcsIDIyMSwgMSwgMTUsIDEyOCwgNSwgMjQ0LCA1MCwgMjIxLCAxLCAxNSwgMTI4LCA1LCAyMjAsIDUzLCAKLSAgICAyMjEsIDEsIDE1LCAxMjgsIDUsIDIyMSwgNDMsIDIyMSwgMSwgMTUsIDEyOCwgNSwgMjQ1LCAxNTAsIDIyMSwgMSwgMTUsIAotICAgIDEyOCwgNSwgMjI5LCAzMSwgMjIxLCAxLCAxNSwgMTI4LCA1LCAxMjIsIDIyMCwgMjUyLCAxNSwgMTI4LCA1LCAxMTcsIDIyMCwgCi0gICAgMjUyLCAxNSwgMTI4LCA1LCAxMzMsIDIyMCwgMjUyLCAxNSwgMTI4LCA1LCAxMzMsIDIyMCwgMjUzLCAyMTQsIDI0NCwgMTcsIAotICAgIDE1LCAxMjgsIDUsIDI0MywgMjM3LCAyMjAsIDI1MiwgMTUsIDEyOCwgNSwgMjQ0LCA1MCwgMjIwLCAyNTIsIDE1LCAxMjgsIAotICAgIDUsIDIyMSwgMiwgMjksIDI0MywgOTUsIDk0LCAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgMjIxLCAyLCAyOSwgMjQzLCA5NSwgCi0gICAgOTQsIDIzMSwgMSwgMTUsIDEyOCwgNSwgMTIyLCAyNTEsIDI0LCAxNSwgMTI4LCA1LCAxMTcsIDI1MSwgMjQsIDE1LCAxMjgsIAotICAgIDUsIDEzMywgMjUxLCAyNCwgMTUsIDEyOCwgNSwgMTMzLCAyNTEsIDI1LCAyMTQsIDI0NCwgMTcsIDE1LCAxMjgsIDUsIDI0MywgCi0gICAgMjM3LCAyNTEsIDI0LCAxNSwgMTI4LCA1LCAyNDQsIDUwLCAyNTEsIDI0LCAxNSwgMTI4LCA1LCAxMzMsIDIxNCwgMjQ0LCAKLSAgICAyNDMsIDI0NSwgMjQ1LCAzOSwgMTUsIDEyOCwgNSwgMTMzLCAyMTQsIDI0NCwgMjQzLCAyNDUsIDI0NSwgMzYsIDE1LCAxMjgsIAotICAgIDUsIDI0MywgMjM3LCAyMTQsIDI0NCwgMjQzLCAyNDUsIDIzMiwgMjQ2LCAxNSwgMTI4LCA1LCAyNDMsIDIzNywgMjE0LCAKLSAgICAyNDQsIDI0MywgMjQ1LCAyMzIsIDI0NCwgMTUsIDEyOCwgNSwgMjQzLCAyMzcsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjMyLCAKLSAgICAyNDcsIDYxLCAxNSwgMTI4LCA1LCAyNDMsIDIzNywgMjE0LCAyNDQsIDI0MywgMjQ1LCAyMzIsIDI0NywgMjUzLCA3NCwgMTUsIAotICAgIDEyOCwgNSwgMjIwLCA1MywgMjE0LCAyNDQsIDI0MywgMjQ1LCAyNTMsIDE0MywgMTUsIDEyOCwgNSwgMjIxLCA0MywgMjE0LCAKLSAgICAyNDQsIDI0MywgMjQ1LCAyMzYsIDMsIDE1LCAxMjgsIDUsIDIyMSwgNDMsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjM2LCA1LCAKLSAgICA2MSwgMTUsIDEyOCwgNSwgMjIxLCA0MywgMjE0LCAyNDQsIDI0MywgMjQ1LCAyMzYsIDUsIDI1MywgNzQsIDE1LCAxMjgsIDUsIAotICAgIDI0NSwgMTUwLCAyMTQsIDI0NCwgMjQzLCAyNDUsIDIxNSwgOTUsIDE1LCAxMjgsIDUsIDI0NSwgMTUwLCAyMTQsIDI0NCwgCi0gICAgMjQzLCAyNDUsIDIxNSwgOTQsIDE1LCAxMjgsIDUsIDIyOSwgMzEsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjM2LCAxOSwgMTUsIAotICAgIDEyOCwgNSwgMjI5LCAzMSwgMjE0LCAyNDQsIDI0MywgMjQ1LCAyMzYsIDE4LCAxNSwgMTI4LCA1LCAyMjksIDMxLCAyMTQsIAotICAgIDI0NCwgMjQzLCAyNDUsIDIzNiwgMTcsIDE1LCAxMjgsIDUsIDIyOSwgMzEsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjM2LCAyMCwgCi0gICAgNjEsIDE1LCAxMjgsIDUsIDExNywgMjUzLCAxNDcsIDIxNywgMTkyLCAxNSwgMTI4LCA1LCAxMzMsIDI1MywgMTQ3LCAyMTcsIAotICAgIDE5MiwgMTUsIDEyOCwgNSwgMjQzLCAyMzcsIDI1MywgMTQ3LCAyMTcsIDE5MiwgMTUsIDEyOCwgNSwgMjQ0LCA1MCwgMjUzLCAKLSAgICAxNDcsIDIxNywgMTkyLCAxNSwgMTI4LCA1LCAyMjAsIDUzLCAyNTMsIDE0NywgMjE3LCAxOTIsIDE1LCAxMjgsIDUsIDEyMiwgCi0gICAgMjUyLCA2OSwgMTUsIDEyOCwgNSwgMTE3LCAyNTIsIDY5LCAxNSwgMTI4LCA1LCAxMzMsIDI1MiwgNjksIDE1LCAxMjgsIDUsIAotICAgIDI0MywgMjM3LCAyNTIsIDY5LCAxNSwgMTI4LCA1LCAyNDMsIDIzNywgMjUyLCA3MCwgMjE0LCAyNDQsIDE3LCAxNSwgMTI4LCAKLSAgICA1LCAyNDQsIDUwLCAyNTIsIDY5LCAxNSwgMTI4LCA1LCAyNDQsIDUwLCAyNTIsIDcwLCAyMTQsIDI0NCwgMTcsIDE1LCAxMjgsIAotICAgIDUsIDIyOSwgNDEsIDE1LCAxMjgsIDUsIDIyOSwgNDIsIDE1LCAxMjgsIDUsIDEyMiwgMjQ1LCAzNSwgMTUsIDEyOCwgNSwgCi0gICAgMTE3LCAyNDUsIDM1LCAxNSwgMTI4LCA1LCAxMjIsIDIxNywgMTIyLCAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgMTE3LCAyMTcsIAotICAgIDEyMCwgMjQ3LCAxMzksIDE1LCAxMjgsIDUsIDI0NCwgNTAsIDIyMCwgNDIsIDI0NywgMTM5LCAxNSwgMTI4LCA1LCAxMjIsIAotICAgIDIxNywgMTIyLCAyMTQsIDI0NCwgMjQzLCAyNDUsIDYxLCAxNSwgMTI4LCA1LCAxMTcsIDIxNywgMTIwLCAyMTQsIDI0NCwgCi0gICAgMjQzLCAyNDUsIDYxLCAxNSwgMTI4LCA1LCAxMjIsIDI0NSwgMTQ2LCAyNTMsIDE0NiwgMTUsIDEyOCwgNSwgMTIyLCAyMjQsIAotICAgIDE2NywgMjUzLCAxNDYsIDE1LCAxMjgsIDUsIDUzLCAyNTMsIDEzNSwgMTIyLCAyMjAsIDQzLCAxNSwgMTI4LCA1LCA1MywgCi0gICAgMjUzLCAxMzUsIDEyMiwgMjI0LCAxNjYsIDE1LCAyMjUsIDI3LCA1LCA1MywgMjUzLCAxMzUsIDIxMywgMTk2LCAyNDcsIAotICAgIDEyNCwgMTUsIDIyNSwgMjcsIDUsIDcxLCAyNDksIDE2NCwgMTUsIDIyNSwgMjcsIDUsIDI0NywgMjA3LCAyNDksIDE2NCwgCi0gICAgMTUsIDIyNSwgMjcsIDUsIDI0NywgMjA3LCAyMTYsIDE3OSwgMTAsIDExLCAyNTUsIDU4LCAxMCwgMTEsIDI1NSwgNTcsIDEwLCAKLSAgICAxMSwgMjU1LCA1NiwgMTAsIDExLCAyNTUsIDU1LCAxMCwgMTEsIDI1NSwgNTQsIDEwLCAxMSwgMjU1LCA1MywgMTAsIDExLCAKLSAgICAyNTUsIDUyLCAxMCwgMTEsIDI1NSwgNTEsIDEwLCAxMSwgMjU1LCA1MCwgMTAsIDExLCAyNTUsIDQ5LCAxMCwgMTEsIDI1NSwgCi0gICAgNDgsIDEwLCAxMSwgMjU1LCA0NywgMTAsIDExLCAyNTUsIDQ2LCAxMCwgMTEsIDI1NSwgNDUsIDEwLCAxMSwgMjU1LCA0NCwgCi0gICAgMTAsIDExLCAyNTUsIDQzLCAxMCwgMTEsIDI1NSwgNDIsIDEwLCAxMSwgMjU1LCA0MSwgMTAsIDExLCAyNTUsIDQwLCAxMCwgCi0gICAgMTEsIDI1NSwgMzksIDEwLCAxMSwgMjU1LCAzOCwgMTAsIDExLCAyNTUsIDM3LCAxMCwgMTEsIDI1NSwgMzYsIDEwLCAxMSwgCi0gICAgMjU1LCAzNSwgMTAsIDExLCAyNTUsIDM0LCAxMCwgMTEsIDI1NSwgMzMsIDEwLCAxMSwgMjU1LCAzMiwgMTAsIDExLCAyNTUsIAotICAgIDMxLCAxMCwgMTEsIDI1NSwgMzAsIDEwLCAxMSwgMjU1LCAyOSwgMTAsIDExLCAyNTUsIDI4LCAxMCwgMTEsIDI1NSwgMjcsIAotICAgIDEwLCAxMSwgMjU1LCAyNiwgMTAsIDExLCAyNTUsIDI1LCAxMCwgMTEsIDI1NSwgMjQsIDEwLCAxMSwgMjU1LCAyMywgMTAsIAotICAgIDExLCAyNTUsIDIyLCAxMCwgMTEsIDI1NSwgMjEsIDEwLCAxMSwgMjU1LCAyMCwgMTAsIDExLCAyNTUsIDE5LCAxMCwgMTEsIAotICAgIDI1NSwgMTgsIDEwLCAxMSwgMjU1LCAxNywgMTAsIDExLCAyNTUsIDE2LCAxMCwgMTEsIDI1NSwgMTUsIDEwLCAxMSwgMjU1LCAKLSAgICAxNCwgMTAsIDExLCAyNTUsIDEzLCAxMCwgMTEsIDI1NSwgMTIsIDEwLCAxMSwgMjU1LCAxMSwgMTAsIDExLCAyNTUsIDEwLCAKLSAgICAxMCwgMTEsIDI1NSwgOSwgMTAsIDExLCAyNTUsIDgsIDEwLCAxMSwgMjU1LCA3LCAxMCwgMTEsIDI1NSwgNiwgMTAsIDExLCAKLSAgICAyNTUsIDUsIDEwLCAxMSwgMjU1LCA0LCAxMCwgMTEsIDI1NSwgMywgMTAsIDExLCAyNTUsIDIsIDEwLCAxMSwgMjU1LCAxLCAKLSAgICAxMCwgMTEsIDI1NSwgMCwgMTAsIDExLCAyNTQsIDI1NSwgMTAsIDExLCAyNTQsIDI1NCwgMTAsIDExLCAyNTQsIDI1MywgMTAsIAotICAgIDExLCAyNTQsIDI1MiwgMTAsIDExLCAyNTQsIDI1MSwgMTAsIDExLCAyNTQsIDI1MCwgMTAsIDExLCAyNTQsIDI0OSwgMTAsIAotICAgIDExLCAyNTQsIDI0OCwgMTAsIDExLCAyNTQsIDI0NywgMTAsIDExLCAyNTQsIDI0NiwgMTAsIDExLCAyNTQsIDI0NSwgMTAsIAotICAgIDExLCAyNTQsIDI0NCwgMTAsIDExLCAyNTQsIDI0MywgMTAsIDExLCAyNTQsIDI0MiwgMTAsIDExLCAyNTQsIDI0MSwgMTAsIAotICAgIDExLCAyNTQsIDI0MCwgMTAsIDExLCAyNTQsIDIzOSwgMTAsIDExLCAyNTQsIDIzOCwgMTAsIDExLCAyNTQsIDIzNywgMTAsIAotICAgIDExLCAyNTQsIDIzNiwgMTAsIDExLCAyNTQsIDIzNSwgMTAsIDExLCAyNTMsIDcyLCAxMCwgMTEsIDI1MywgNzAsIDEwLCAxMSwgCi0gICAgMjUzLCA2OCwgMTAsIDExLCAyNTMsIDY2LCAxMCwgMTEsIDI1MywgNjQsIDEwLCAxMSwgMjUzLCA2MywgMTAsIDExLCAyNTMsIAotICAgIDYxLCAxMCwgMTEsIDI1MywgNTksIDEwLCAxMSwgMjUzLCA1NywgMTAsIDExLCAyNTMsIDU1LCAxMCwgMTEsIDI1MCwgMjQ4LCAKLSAgICAxMCwgMTEsIDI1MCwgMjQ3LCAxMCwgMTEsIDI1MCwgMjQ2LCAxMCwgMTEsIDI1MCwgMjQ1LCAxMCwgMTEsIDI1MCwgMjQ0LCAKLSAgICAxMCwgMTEsIDI1MCwgMjQzLCAxMCwgMTEsIDI1MCwgMjQyLCAxMCwgMTEsIDI1MCwgMjQxLCAxMCwgMTEsIDI1MCwgMjQwLCAKLSAgICAxMCwgMTEsIDI1MCwgMjM5LCAxMCwgMTEsIDI1MCwgMjM4LCAxMCwgMTEsIDI1MCwgMjM3LCAxMCwgMTEsIDI1MCwgMjM2LCAKLSAgICAxMCwgMTEsIDI1MCwgMjM1LCAxMCwgMTEsIDI1MCwgMjM0LCAxMCwgMTEsIDI1MCwgMjMzLCAxMCwgMTEsIDI1MCwgMjMyLCAKLSAgICAxMCwgMTEsIDI1MCwgMjMxLCAxMCwgMTEsIDI1MCwgMjMwLCAxMCwgMTEsIDI1MCwgMjI5LCAxMCwgMTEsIDI1MCwgMjI4LCAKLSAgICAxMCwgMTEsIDI1MCwgMjI3LCAxMCwgMTEsIDI1MCwgMjI2LCAxMCwgMTEsIDI1MCwgMjI1LCAxMCwgMTEsIDI1MCwgMjI0LCAKLSAgICAxMCwgMTEsIDI1MCwgMjIzLCAxMCwgMTEsIDI1MCwgMjIyLCAxMCwgMTEsIDI1MCwgMjIxLCAxMCwgMTEsIDI0OSwgMiwgMTAsIAotICAgIDExLCAyNDksIDEsIDEwLCAxMSwgMjQ5LCAwLCAxMCwgMTEsIDI0OCwgMjU1LCAxMCwgMTEsIDI0OCwgMjU0LCAxMCwgMTEsIAotICAgIDI0OCwgMjUzLCAxMCwgMTEsIDI0OCwgMjUyLCAxMCwgMTEsIDI0OCwgMjUxLCAxMCwgMTEsIDI0OCwgMjUwLCAxMCwgMTEsIAotICAgIDI0OCwgMjQ5LCAxMCwgMTEsIDI0OCwgMjQ4LCAxMCwgMTEsIDI0OCwgMjQ3LCAxMCwgMTEsIDI0OCwgMjQ2LCAxMCwgMTEsIAotICAgIDI0OCwgMjQ1LCAxMCwgMTEsIDI0OCwgMjQ0LCAxMCwgMTEsIDI0OCwgMjQzLCAxMCwgMTEsIDI0OCwgMjQyLCAxMCwgMTEsIAotICAgIDI0OCwgMjQxLCAxMCwgMTEsIDI0OCwgMjQwLCAxMCwgMTEsIDI0OCwgMjM5LCAxMCwgMTEsIDI0OCwgMjM4LCAxMCwgMTEsIAotICAgIDI0OCwgMjM3LCAxMCwgMTEsIDI0OCwgMjM2LCAxMCwgMTEsIDI0OCwgMjM1LCAxMCwgMTEsIDI0OCwgMjM0LCAxMCwgMTEsIAotICAgIDI0OCwgMjMzLCAxMCwgMTEsIDI0OCwgMjMyLCAxMCwgMTEsIDI0OCwgMjMxLCAxMCwgMTEsIDI0OCwgMjMwLCAxMCwgMTEsIAotICAgIDI0OCwgMjI5LCAxMCwgMTEsIDI0OCwgMjI4LCAxMCwgMTEsIDI0OCwgMjI3LCAxMCwgMTEsIDI0OCwgMjI2LCAxMCwgMTEsIAotICAgIDI0OCwgMjI1LCAxMCwgMTEsIDI0OCwgMjI0LCAxMCwgMTEsIDI0OCwgMjIzLCAxMCwgMTEsIDI0OCwgMjIyLCAxMCwgMTEsIAotICAgIDI0OCwgMjIxLCAxMCwgMTEsIDI0OCwgMjIwLCAxMCwgMTEsIDI0OCwgMjE5LCAxMCwgMTEsIDI0OCwgMjE4LCAxMCwgMTEsIAotICAgIDI0OCwgMjE3LCAxMCwgMTEsIDI0OCwgMjE2LCAxMCwgMTEsIDI0OCwgMjE1LCAxMCwgMTEsIDI0OCwgMjE0LCAxMCwgMTEsIAotICAgIDI0OCwgMjEzLCAxMCwgMTEsIDI0OCwgMjEyLCAxMCwgMTEsIDI0OCwgMjExLCAxMCwgMTEsIDI0OCwgMjEwLCAxMCwgMTEsIAotICAgIDI0OCwgMjA5LCAxMCwgMTEsIDI0OCwgMjA4LCAxMCwgMTEsIDI0OCwgMjA3LCAxMCwgMTEsIDI0OCwgMjA2LCAxMCwgMTEsIAotICAgIDI0OCwgMjA1LCAxMCwgMTEsIDI0OCwgMjA0LCAxMCwgMTEsIDI0OCwgMjAzLCAxMCwgMTEsIDI0OCwgMjAyLCAxMCwgMTEsIAotICAgIDI0OCwgMjAxLCAxMCwgMTEsIDI0OCwgMjAwLCAxMCwgMTEsIDI0OCwgMTk5LCAxMCwgMTEsIDI0OCwgMTk4LCAxMCwgMTEsIAotICAgIDI0OCwgMTk3LCAxMCwgMTEsIDI0OCwgMTk2LCAxMCwgMTEsIDI0OCwgMTk1LCAxMCwgMTEsIDI0OCwgMTk0LCAxMCwgMTEsIAotICAgIDI0OCwgMTkzLCAxMCwgMTEsIDI0OCwgMTkyLCAxMCwgMTEsIDI0OCwgMTkxLCAxMCwgMTEsIDI0OCwgMTkwLCAxMCwgMTEsIAotICAgIDI0OCwgMTg5LCAxMCwgMTEsIDI0OCwgMTg4LCAxMCwgMTEsIDI0OCwgMTg3LCAxMCwgMTEsIDI0OCwgMTg2LCAxMCwgMTEsIAotICAgIDI0OCwgMTg1LCAxMCwgMTEsIDI0OCwgMTg0LCAxMCwgMTEsIDI0OCwgMTgzLCAxMCwgMTEsIDI0OCwgMTgyLCAxMCwgMTEsIAotICAgIDI0OCwgMTgxLCAxMCwgMTEsIDI0OCwgMTgwLCAxMCwgMTEsIDI0OCwgMTc5LCAxMCwgMTEsIDI0OCwgMTc4LCAxMCwgMTEsIAotICAgIDI0OCwgMTc3LCAxMCwgMTEsIDI0OCwgMTc2LCAxMCwgMTEsIDI0OCwgMTc1LCAxMCwgMTEsIDI0OCwgMTc0LCAxMCwgMTEsIAotICAgIDI0OCwgMTczLCAxMCwgMTEsIDI0OCwgMTcyLCAxMCwgMTEsIDI0OCwgMTcxLCAxMCwgMTEsIDI0OCwgMTcwLCAxMCwgMTEsIAotICAgIDI0OCwgMTY5LCAxMCwgMTEsIDI0OCwgMTY4LCAxMCwgMTEsIDI0OCwgMTY3LCAxMCwgMTEsIDI0NSwgMjM1LCAxMCwgMTEsIAotICAgIDI0NSwgMjM0LCAxMCwgMTEsIDI0NSwgMjMzLCAxMCwgMTEsIDI0NSwgMjMyLCAxMCwgMTEsIDI0NSwgMjMxLCAxMCwgMTEsIAotICAgIDI0NSwgMjMwLCAxMCwgMTEsIDI0NSwgMjI5LCAxMCwgMTEsIDI0NSwgMjI4LCAxMCwgMTEsIDI0NSwgMjI3LCAxMCwgMTEsIAotICAgIDI0NSwgMjI2LCAxMCwgMTEsIDI0NSwgMjI1LCAxMCwgMTEsIDI0NSwgMjI0LCAxMCwgMTEsIDI0NSwgMjIzLCAxMCwgMTEsIAotICAgIDI0NSwgMjIyLCAxMCwgMTEsIDI0NSwgMjIxLCAxMCwgMTEsIDI0NSwgMjIwLCAxMCwgMTEsIDI0NSwgMjE5LCAxMCwgMTEsIAotICAgIDI0NSwgMjE4LCAxMCwgMTEsIDI0NSwgMjE3LCAxMCwgMTEsIDI0NSwgMjE2LCAxMCwgMTEsIDI0NSwgMjE1LCAxMCwgMTEsIAotICAgIDI0NSwgMjE0LCAxMCwgMTEsIDI0NSwgMjEzLCAxMCwgMTEsIDI0NSwgMjEyLCAxMCwgMTEsIDI0NSwgMjExLCAxMCwgMTEsIAotICAgIDI0NSwgMjEwLCAxMCwgMTEsIDI0NSwgMjA5LCAxMCwgMTEsIDI0NSwgMjA4LCAxMCwgMTEsIDI0NSwgMjA3LCAxMCwgMTEsIAotICAgIDI0NSwgMjA2LCAxMCwgMTEsIDI0NSwgMjA1LCAxMCwgMTEsIDI0NSwgMjA0LCAxMCwgMTEsIDI0NSwgMjAzLCAxMCwgMTEsIAotICAgIDI0NSwgMjAyLCAxMCwgMTEsIDI0NSwgMjAxLCAxMCwgMTEsIDI0NSwgMjAwLCAxMCwgMTEsIDI0NSwgMTk5LCAxMCwgMTEsIAotICAgIDI0NSwgMTk4LCAxMCwgMTEsIDI0NSwgMTk3LCAxMCwgMTEsIDI0NSwgMTk2LCAxMCwgMTEsIDI0NSwgMTk1LCAxMCwgMTEsIAotICAgIDI0NSwgMTk0LCAxMCwgMTEsIDI0NSwgMTkzLCAxMCwgMTEsIDI0NSwgMTkyLCAxMCwgMTEsIDI0NCwgMjI5LCAxMCwgMTEsIAotICAgIDI0NCwgMjI4LCAxMCwgMTEsIDI0NCwgMjI3LCAxMCwgMTEsIDI0NCwgMjI2LCAxMCwgMTEsIDI0NCwgMjI1LCAxMCwgMTEsIAotICAgIDI0NCwgMjI0LCAxMCwgMTEsIDI0NCwgMjIzLCAxMCwgMTEsIDI0NCwgMjIyLCAxMCwgMTEsIDI0NCwgMjIxLCAxMCwgMTEsIAotICAgIDI0NCwgMjIwLCAxMCwgMTEsIDI0NCwgMjE5LCAxMCwgMTEsIDI0NCwgMjE4LCAxMCwgMTEsIDI0NCwgMjE3LCAxMCwgMTEsIAotICAgIDI0NCwgMjE2LCAxMCwgMTEsIDI0NCwgMjE1LCAxMCwgMTEsIDI0NCwgMjE0LCAxMCwgMTEsIDI0NCwgMjEzLCAxMCwgMTEsIAotICAgIDI0NCwgMjEyLCAxMCwgMTEsIDI0NCwgMjExLCAxMCwgMTEsIDI0NCwgMjEwLCAxMCwgMTEsIDI0NCwgMjA5LCAxMCwgMTEsIAotICAgIDI0NCwgMjA4LCAxMCwgMTEsIDI0NCwgMjA3LCAxMCwgMTEsIDI0NCwgMjA2LCAxMCwgMTEsIDI0NCwgMjA1LCAxMCwgMTEsIAotICAgIDI0NCwgMjA0LCAxMCwgMTEsIDI0NCwgMjAzLCAxMCwgMTEsIDI0NCwgMjAyLCAxMCwgMTEsIDI0NCwgMjAxLCAxMCwgMTEsIAotICAgIDI0NCwgMjAwLCAxMCwgMTEsIDI0NCwgMTk5LCAxMCwgMTEsIDI0NCwgMTk4LCAxMCwgMTEsIDI0NCwgMTk3LCAxMCwgMTEsIAotICAgIDI0NCwgMTk2LCAxMCwgMTEsIDI0NCwgMTk1LCAxMCwgMTEsIDI0NCwgMTk0LCAxMCwgMTEsIDI0NCwgMTkzLCAxMCwgMTEsIAotICAgIDI0NCwgMTkyLCAxMCwgMTEsIDI0NCwgMTkxLCAxMCwgMTEsIDI0NCwgMTkwLCAxMCwgMTEsIDI0NCwgMTg5LCAxMCwgMTEsIAotICAgIDI0NCwgMTg4LCAxMCwgMTEsIDI0NCwgMTg3LCAxMCwgMTEsIDI0NCwgMTg2LCAxMCwgMTEsIDI0NCwgMTg1LCAxMCwgMTEsIAotICAgIDI0NCwgMTg0LCAxMCwgMTEsIDI0NCwgMTgzLCAxMCwgMTEsIDI0NCwgMTgyLCAxMCwgMTEsIDI0NCwgMTgxLCAxMCwgMTEsIAotICAgIDI0NCwgMTgwLCAxMCwgMTEsIDI0NCwgMTc5LCAxMCwgMTEsIDI0NCwgMTc4LCAxMCwgMTEsIDI0NCwgMTc3LCAxMCwgMTEsIAotICAgIDI0NCwgMTc2LCAxMCwgMTEsIDI0NCwgMTc1LCAxMCwgMTEsIDI0NCwgMTc0LCAxMCwgMTEsIDI0NCwgMTczLCAxMCwgMTEsIAotICAgIDI0NCwgMTcyLCAxMCwgMTEsIDI0NCwgMTcxLCAxMCwgMTEsIDI0NCwgMTcwLCAxMCwgMTEsIDI0NCwgMTY5LCAxMCwgMTEsIAotICAgIDI0NCwgMTY4LCAxMCwgMTEsIDI0NCwgMTY3LCAxMCwgMTEsIDI0NCwgMTY2LCAxMCwgMTEsIDI0NCwgMTY1LCAxMCwgMTEsIAotICAgIDI0MywgMTc2LCAxMCwgMTEsIDI0MywgMTc1LCAxMCwgMTEsIDI0MywgMTc0LCAxMCwgMTEsIDI0MywgMTczLCAxMCwgMTEsIAotICAgIDI0MywgMTcyLCAxMCwgMTEsIDI0MywgMTcxLCAxMCwgMTEsIDI0MywgMTcwLCAxMCwgMTEsIDI0MywgMTY5LCAxMCwgMTEsIAotICAgIDI0MywgMTY4LCAxMCwgMTEsIDI0MywgMTY3LCAxMCwgMTEsIDI0MywgMTY2LCAxMCwgMTEsIDI0MywgMTY1LCAxMCwgMTEsIAotICAgIDI0MywgMTY0LCAxMCwgMTEsIDI0MywgMTYzLCAxMCwgMTEsIDI0MywgMTYyLCAxMCwgMTEsIDI0MywgMTYxLCAxMCwgMTEsIAotICAgIDI0MywgMTYwLCAxMCwgMTEsIDI0MywgMTU5LCAxMCwgMTEsIDI0MywgMTU4LCAxMCwgMTEsIDI0MywgMTU3LCAxMCwgMTEsIAotICAgIDI0MywgMTU2LCAxMCwgMTEsIDI0MywgMTU1LCAxMCwgMTEsIDI0MywgMTU0LCAxMCwgMTEsIDI0MywgMTUzLCAxMCwgMTEsIAotICAgIDI0MywgMTUyLCAxMCwgMTEsIDI0MywgMTUxLCAxMCwgMTEsIDI0MywgMTUwLCAxMCwgMTEsIDI0MywgMTQ5LCAxMCwgMTEsIAotICAgIDI0MywgMTQ4LCAxMCwgMTEsIDI0MywgMTQ3LCAxMCwgMTEsIDI0MywgMTQ2LCAxMCwgMTEsIDI0MywgMTQ1LCAxMCwgMTEsIAotICAgIDI0MywgMTQ0LCAxMCwgMTEsIDI0MywgMTQzLCAxMCwgMTEsIDI0MywgMTQyLCAxMCwgMTEsIDI0MywgMTQxLCAxMCwgMTEsIAotICAgIDI0MywgMTQwLCAxMCwgMTEsIDI0MywgMTM5LCAxMCwgMTEsIDI0MywgMTM4LCAxMCwgMTEsIDI0MywgMTM3LCAxMCwgMTEsIAotICAgIDI0MywgMTM2LCAxMCwgMTEsIDI0MywgMTM1LCAxMCwgMTEsIDI0MywgMTM0LCAxMCwgMTEsIDI0MywgMTMzLCAxMCwgMTEsIAotICAgIDI0MywgMTMyLCAxMCwgMTEsIDI0MywgMTMxLCAxMCwgMTEsIDI0MywgMTMwLCAxMCwgMTEsIDI0MywgMTI5LCAxMCwgMTEsIAotICAgIDI0MywgMTI4LCAxMCwgMTEsIDI0MywgMTI3LCAxMCwgMTEsIDI0MywgMTI2LCAxMCwgMTEsIDI0MywgMTI1LCAxMCwgMTEsIAotICAgIDI0MywgMTI0LCAxMCwgMTEsIDI0MywgMTIzLCAxMCwgMTEsIDI0MywgMTIyLCAxMCwgMTEsIDI0MywgMTIxLCAxMCwgMTEsIAotICAgIDI0MywgMTIwLCAxMCwgMTEsIDI0MywgMTE5LCAxMCwgMTEsIDI0MywgMTE4LCAxMCwgMTEsIDI0MywgMTE3LCAxMCwgMTEsIAotICAgIDI0MywgMTE2LCAxMCwgMTEsIDI0MywgMTE1LCAxMCwgMTEsIDI0MywgMTE0LCAxMCwgMTEsIDI0MywgMTEzLCAxMCwgMTEsIAotICAgIDI0MiwgMzksIDEwLCAxMSwgMjQyLCAzOCwgMTAsIDExLCAyNDIsIDM3LCAxMCwgMTEsIDI0MiwgMzYsIDEwLCAxMSwgMjQyLCAKLSAgICAzNSwgMTAsIDExLCAyNDIsIDM0LCAxMCwgMTEsIDI0MiwgMzMsIDEwLCAxMSwgMjQyLCAzMiwgMTAsIDExLCAyNDIsIDMxLCAKLSAgICAxMCwgMTEsIDI0MCwgMTMwLCAxMCwgMTEsIDI0MCwgMTI5LCAxMCwgMTEsIDI0MCwgMTI4LCAxMCwgMTEsIDI0MCwgMTI3LCAKLSAgICAxMCwgMTEsIDI0MCwgMTI2LCAxMCwgMTEsIDI0MCwgMTI1LCAxMCwgMTEsIDI0MCwgMTI0LCAxMCwgMTEsIDI0MCwgMTIzLCAKLSAgICAxMCwgMTEsIDI0MCwgMTIyLCAxMCwgMTEsIDI0MCwgMTIxLCAxMCwgMTEsIDI0MCwgMTIwLCAxMCwgMTEsIDI0MCwgMTE5LCAKLSAgICAxMCwgMTEsIDI0MCwgMTE4LCAxMCwgMTEsIDI0MCwgMTE3LCAxMCwgMTEsIDI0MCwgMTE2LCAxMCwgMTEsIDI0MCwgMTE1LCAKLSAgICAxMCwgMTEsIDI0MCwgMTE0LCAxMCwgMTEsIDI0MCwgMTEzLCAxMCwgMTEsIDI0MCwgMTEyLCAxMCwgMTEsIDIzNSwgMjYsIAotICAgIDEwLCAxMSwgMjM1LCAyNSwgMTAsIDExLCAyMzUsIDI0LCAxMCwgMTEsIDIzNSwgMjMsIDEwLCAxMSwgMjM1LCAyMiwgMTAsIAotICAgIDExLCAyMzUsIDIxLCAxMCwgMTEsIDIzNSwgMjAsIDEwLCAxMSwgMjM1LCAxOSwgMTAsIDExLCAyMzMsIDE2OCwgMTAsIDExLCAKLSAgICAyMzMsIDE2NywgMTAsIDExLCAyMzMsIDE2NiwgMTAsIDExLCAyMzMsIDE2NSwgMTAsIDExLCAyMzMsIDE2NCwgMTAsIDExLCAKLSAgICAyMzMsIDE2MywgMTAsIDExLCAyMzMsIDE2MiwgMTAsIDExLCAyMzMsIDE2MSwgMTAsIDExLCAyMzMsIDE2MCwgMTAsIDExLCAKLSAgICAyMzMsIDE1OSwgMTAsIDExLCAyMzIsIDEwOSwgMTAsIDExLCAyMzIsIDEwOCwgMTAsIDExLCAyMzIsIDEwNywgMTAsIDExLCAKLSAgICAyMzIsIDEwNiwgMTAsIDExLCAyMzIsIDEwNSwgMTAsIDExLCAyMzIsIDEwNCwgMTAsIDExLCAyMzIsIDEwMywgMTAsIDExLCAKLSAgICAyMzIsIDEwMiwgMTAsIDExLCAyMzIsIDEwMSwgMTAsIDExLCAyMzIsIDEwMCwgMTAsIDExLCAyMzIsIDk5LCAxMCwgMTEsIAotICAgIDIzMiwgOTgsIDEwLCAxMSwgMjMyLCA5NywgMTAsIDExLCAyMzIsIDk2LCAxMCwgMTEsIDIzMiwgOTUsIDEwLCAxMSwgMjMyLCAKLSAgICA5NCwgMTAsIDExLCAyMzIsIDkzLCAxMCwgMTEsIDIzMiwgOTIsIDEwLCAxMSwgMjMyLCA5MSwgMTAsIDExLCAyMzIsIDkwLCAKLSAgICAxMCwgMTEsIDIzMiwgODksIDEwLCAxMSwgMjMyLCA4OCwgMTAsIDExLCAyMzIsIDg3LCAxMCwgMTEsIDIzMiwgODYsIDEwLCAKLSAgICAxMSwgMjMyLCA4NSwgMTAsIDExLCAyMzIsIDg0LCAxMCwgMTEsIDIzMiwgODMsIDEwLCAxMSwgMjMyLCA4MiwgMTAsIDExLCAKLSAgICAyMzIsIDgxLCAxMCwgMTEsIDIzMiwgODAsIDEwLCAxMSwgMjMyLCA3OSwgMTAsIDExLCAyMzIsIDc4LCAxMCwgMTEsIDIzMiwgCi0gICAgNzcsIDEwLCAxMSwgMjMyLCA3NiwgMTAsIDExLCAyMzIsIDc1LCAxMCwgMTEsIDIzMiwgNzQsIDEwLCAxMSwgMjMyLCA3MywgCi0gICAgMTAsIDExLCAyMzIsIDcyLCAxMCwgMTEsIDIzMiwgNzEsIDEwLCAxMSwgMjMyLCA3MCwgMTAsIDExLCAyMzIsIDY5LCAxMCwgCi0gICAgMTEsIDIzMiwgNjgsIDEwLCAxMSwgMjMyLCA2NywgMTAsIDExLCAyMzIsIDY2LCAxMCwgMTEsIDIzMiwgNjUsIDEwLCAxMSwgCi0gICAgMjMyLCA2NCwgMTAsIDExLCAyMzIsIDYzLCAxMCwgMTEsIDIzMiwgNjIsIDEwLCAxMSwgMjMyLCA2MSwgMTAsIDExLCAyMzIsIAotICAgIDYwLCAxMCwgMTEsIDIzMiwgNTksIDEwLCAxMSwgMjMyLCA1OCwgMTAsIDExLCAyMzIsIDU3LCAxMCwgMTEsIDIzMiwgNTYsIAotICAgIDEwLCAxMSwgMjMyLCA1NSwgMTAsIDExLCAyMzIsIDU0LCAxMCwgMTEsIDIzMiwgNTMsIDEwLCAxMSwgMjMyLCA1MiwgMTAsIAotICAgIDExLCAyMzIsIDUxLCAxMCwgMTEsIDIzMiwgNTAsIDEwLCAxMSwgMjMyLCA0OSwgMTAsIDExLCAyMzIsIDQ4LCAxMCwgMTEsIAotICAgIDIzMiwgNDcsIDEwLCAxMSwgMjMyLCA0NiwgMTAsIDExLCAyMzIsIDQ1LCAxMCwgMTEsIDIzMiwgNDQsIDEwLCAxMSwgMjMwLCAKLSAgICA5NSwgMTAsIDExLCAyMzAsIDk0LCAxMCwgMTEsIDIzMCwgOTMsIDEwLCAxMSwgMjMwLCA5MiwgMTAsIDExLCAyMzAsIDkxLCAKLSAgICAxMCwgMTEsIDIzMCwgOTAsIDEwLCAxMSwgMjMwLCA4OSwgMTAsIDExLCAyMzAsIDg4LCAxMCwgMTEsIDIzMCwgODcsIDEwLCAKLSAgICAxMSwgMjMwLCA4NiwgMTAsIDExLCAyMzAsIDg1LCAxMCwgMTEsIDIzMCwgODQsIDEwLCAxMSwgMjMwLCA4MywgMTAsIDExLCAKLSAgICAyMzAsIDgyLCAxMCwgMTEsIDIzMCwgODEsIDEwLCAxMSwgMjMwLCA4MCwgMTAsIDExLCAyMzAsIDc5LCAxMCwgMTEsIDIzMCwgCi0gICAgNzgsIDEwLCAxMSwgMjMwLCA3NywgMTAsIDExLCAyMzAsIDc2LCAxMCwgMTEsIDIzMCwgNzUsIDEwLCAxMSwgMjMwLCA3NCwgCi0gICAgMTAsIDExLCAyMzAsIDczLCAxMCwgMTEsIDIzMCwgNzIsIDEwLCAxMSwgMjMwLCA3MSwgMTAsIDExLCAyMzAsIDcwLCAxMCwgCi0gICAgMTEsIDIzMCwgNjksIDEwLCAxMSwgMjMwLCA2OCwgMTAsIDExLCAyMzAsIDY3LCAxMCwgMTEsIDIzMCwgNjYsIDEwLCAxMSwgCi0gICAgMjMwLCA2NSwgMTAsIDExLCAyMzAsIDY0LCAxMCwgMTEsIDIzMCwgNjMsIDEwLCAxMSwgMjMwLCA2MiwgMTAsIDExLCAyMzAsIAotICAgIDYxLCAxMCwgMTEsIDIzMCwgNjAsIDEwLCAxMSwgMjMwLCA1OSwgMTAsIDExLCAyMzAsIDU4LCAxMCwgMTEsIDIzMCwgNTcsIAotICAgIDEwLCAxMSwgMjMwLCA1NiwgMTAsIDExLCAyMzAsIDU1LCAxMCwgMTEsIDIzMCwgNTQsIDEwLCAxMSwgMjMwLCA1MywgMTAsIAotICAgIDExLCAyMzAsIDUyLCAxMCwgMTEsIDIzMCwgNTEsIDEwLCAxMSwgMjMwLCA1MCwgMTAsIDExLCAyMzAsIDQ5LCAxMCwgMTEsIAotICAgIDIzMCwgNDgsIDEwLCAxMSwgMjMwLCA0NywgMTAsIDExLCAyMjgsIDIyMiwgMTAsIDExLCAyMjgsIDIyMSwgMTAsIDExLCAKLSAgICAyMjgsIDIyMCwgMTAsIDExLCAyMjgsIDIxOSwgMTAsIDExLCAyMjgsIDIxOCwgMTAsIDExLCAyMjgsIDIxNywgMTAsIDExLCAKLSAgICAyMjgsIDIxNiwgMTAsIDExLCAyMjgsIDIxNSwgMTAsIDExLCAyMjgsIDIxNCwgMTAsIDExLCAyMjgsIDIxMywgMTAsIDExLCAKLSAgICAyMjgsIDIxMiwgMTAsIDExLCAyMjgsIDIxMSwgMTAsIDExLCAyMjgsIDIxMCwgMTAsIDExLCAyMjgsIDIwOSwgMTAsIDExLCAKLSAgICAyMjgsIDIwOCwgMTAsIDExLCAyMjgsIDIwNywgMTAsIDExLCAyMjgsIDIwNiwgMTAsIDExLCAyMjgsIDIwNSwgMTAsIDExLCAKLSAgICAyMjgsIDIwNCwgMTAsIDExLCAyMjgsIDIwMywgMTAsIDExLCAyMjgsIDIwMiwgMTAsIDExLCAyMjgsIDIwMSwgMTAsIDExLCAKLSAgICAyMjgsIDkxLCAxMCwgMTEsIDIyOCwgOTAsIDEwLCAxMSwgMjI4LCA4OSwgMTAsIDExLCAyMjgsIDg4LCAxMCwgMTEsIDIyOCwgCi0gICAgODcsIDEwLCAxMSwgMjI4LCA4NiwgMTAsIDExLCAyMjgsIDg1LCAxMCwgMTEsIDIyOCwgODQsIDEwLCAxMSwgMjI4LCA4MywgCi0gICAgMTAsIDExLCAyMjgsIDgyLCAxMCwgMTEsIDIyOCwgODEsIDEwLCAxMSwgMjI4LCA4MCwgMTAsIDExLCAyMjgsIDc5LCAxMCwgCi0gICAgMTEsIDIyOCwgNzgsIDEwLCAxMSwgMjI4LCA3NywgMTAsIDExLCAyMjgsIDc2LCAxMCwgMTEsIDIyOCwgNzUsIDEwLCAxMSwgCi0gICAgMjI4LCA3NCwgMTAsIDExLCAyMjgsIDczLCAxMCwgMTEsIDIyOCwgNzIsIDEwLCAxMSwgMjI4LCA3MSwgMTAsIDExLCAyMjgsIAotICAgIDcwLCAxMCwgMTEsIDIyOCwgNjksIDEwLCAxMSwgMjI4LCA2OCwgMTAsIDExLCAyMjgsIDY3LCAxMCwgMTEsIDIyOCwgNjYsIAotICAgIDEwLCAxMSwgMjI3LCAxOTYsIDEwLCAxMSwgMjI3LCAxOTUsIDEwLCAxMSwgMjI3LCAxOTQsIDEwLCAxMSwgMjI3LCAxOTMsIAotICAgIDEwLCAxMSwgMjI3LCAxOTIsIDEwLCAxMSwgMjI3LCAxOTEsIDEwLCAxMSwgMjI3LCAxOTAsIDEwLCAxMSwgMjI3LCAxODksIAotICAgIDEwLCAxMSwgMjI3LCAxODgsIDEwLCAxMSwgMjI3LCAxODcsIDEwLCAxMSwgMjI3LCAxODYsIDEwLCAxMSwgMjI3LCAxODUsIAotICAgIDEwLCAxMSwgMjI3LCAxODQsIDEwLCAxMSwgMjI3LCAxODMsIDEwLCAxMSwgMjI3LCAxODIsIDEwLCAxMSwgMjI3LCAxODEsIAotICAgIDEwLCAxMSwgMjI3LCAxODAsIDEwLCAxMSwgMjI3LCAxNzksIDEwLCAxMSwgMjI3LCAxNzgsIDEwLCAxMSwgMjI3LCAxNzcsIAotICAgIDEwLCAxMSwgMjI3LCAxNzYsIDEwLCAxMSwgMjI3LCAxNzUsIDEwLCAxMSwgMjI3LCAxNzQsIDEwLCAxMSwgMjI3LCAxNzMsIAotICAgIDEwLCAxMSwgMjI3LCAxNzIsIDEwLCAxMSwgMjI3LCAxNzEsIDEwLCAxMSwgMjI3LCAxNzAsIDEwLCAxMSwgMjI3LCAxNjksIAotICAgIDEwLCAxMSwgMjI3LCAxNjgsIDEwLCAxMSwgMjI3LCAxNjcsIDEwLCAxMSwgMjI3LCAxNjYsIDEwLCAxMSwgMjI3LCAxNjUsIAotICAgIDEwLCAxMSwgMjI3LCAxNjQsIDEwLCAxMSwgMjI3LCAxNjMsIDEwLCAxMSwgMjI3LCAxNjIsIDEwLCAxMSwgMjI3LCAxNjEsIAotICAgIDEwLCAxMSwgMjI3LCAxNjAsIDEwLCAxMSwgMjI3LCAxNTksIDEwLCAxMSwgMjI3LCAxNTgsIDEwLCAxMSwgMjI3LCAxNTcsIAotICAgIDEwLCAxMSwgMjI3LCAxNTYsIDEwLCAxMSwgMjI3LCAxNTUsIDEwLCAxMSwgMjI3LCAxNTQsIDEwLCAxMSwgMjI3LCAxNTMsIAotICAgIDEwLCAxMSwgMjI3LCAxNTIsIDEwLCAxMSwgMjI3LCAxNTEsIDEwLCAxMSwgMjI3LCAxNTAsIDEwLCAxMSwgMjI3LCAxNDksIAotICAgIDEwLCAxMSwgMjI3LCAxNDgsIDEwLCAxMSwgMjI3LCAxNDcsIDEwLCAxMSwgMjI3LCAxNDYsIDEwLCAxMSwgMjI3LCAxNDUsIAotICAgIDEwLCAxMSwgMjI3LCAxNDQsIDEwLCAxMSwgMjI3LCAxNDMsIDEwLCAxMSwgMjI3LCAxNDIsIDEwLCAxMSwgMjI3LCAxNDEsIAotICAgIDEwLCAxMSwgMjI3LCAxNDAsIDEwLCAxMSwgMjI3LCAxMzksIDEwLCAxMSwgMjI3LCAxMzgsIDEwLCAxMSwgMjI3LCAxMzcsIAotICAgIDEwLCAxMSwgMjI3LCAxMzYsIDEwLCAxMSwgMjI3LCAxMzUsIDEwLCAxMSwgMjI3LCAxMzQsIDEwLCAxMSwgMjI3LCAxMzMsIAotICAgIDEwLCAxMSwgMjI3LCAxMzIsIDEwLCAxMSwgMjI3LCAxMzEsIDEwLCAxMSwgMjI3LCAxMzAsIDEwLCAxMSwgMjI3LCAxMjksIAotICAgIDEwLCAxMSwgMjI3LCAxMjgsIDEwLCAxMSwgMjI3LCAxMjcsIDEwLCAxMSwgMjI3LCAxMjYsIDEwLCAxMSwgMjI3LCAxMjUsIAotICAgIDEwLCAxMSwgMjI3LCAxMjQsIDEwLCAxMSwgMjI3LCAxMjMsIDEwLCAxMSwgMjI3LCAxMjIsIDEwLCAxMSwgMjI2LCAyMjgsIAotICAgIDEwLCAxMSwgMjI2LCAyMjcsIDEwLCAxMSwgMjI2LCAyMjYsIDEwLCAxMSwgMjI2LCAyMjUsIDEwLCAxMSwgMjI2LCAyMjQsIAotICAgIDEwLCAxMSwgMjI2LCAyMjMsIDEwLCAxMSwgMjI2LCAyMjIsIDEwLCAxMSwgMjI2LCAyMjEsIDEwLCAxMSwgMjI2LCAyMjAsIAotICAgIDEwLCAxMSwgMjI2LCAyMTksIDEwLCAxMSwgMjI2LCAyMTgsIDEwLCAxMSwgMjI2LCAyMTcsIDEwLCAxMSwgMjI2LCAyMTYsIAotICAgIDEwLCAxMSwgMjI0LCAyMzksIDEwLCAxMSwgMjI0LCAyMzgsIDEwLCAxMSwgMjI0LCAyMzcsIDEwLCAxMSwgMjI0LCAyMzYsIAotICAgIDEwLCAxMSwgMjI0LCAyMzUsIDEwLCAxMSwgMjI0LCAyMzQsIDEwLCAxMSwgMjI0LCAyMzMsIDEwLCAxMSwgMjI0LCAxMTEsIAotICAgIDEwLCAxMSwgMjI0LCAxMTAsIDEwLCAxMSwgMjI0LCAxMDksIDEwLCAxMSwgMjI0LCAxMDgsIDEwLCAxMSwgMjI0LCAxMDcsIAotICAgIDEwLCAxMSwgMjI0LCAxMDYsIDEwLCAxMSwgMjI0LCAxMDUsIDEwLCAxMSwgMjI0LCAxMDQsIDEwLCAxMSwgMjI0LCAxMDMsIAotICAgIDEwLCAxMSwgMjI0LCAxMDIsIDEwLCAxMSwgMjI0LCAxMDEsIDEwLCAxMSwgMjI0LCAxMDAsIDEwLCAxMSwgMjI0LCA5OSwgCi0gICAgMTAsIDExLCAyMjQsIDk4LCAxMCwgMTEsIDIyNCwgOTcsIDEwLCAxMSwgMjI0LCA5NiwgMTAsIDExLCAyMjQsIDk1LCAxMCwgCi0gICAgMTEsIDIyNCwgOTQsIDEwLCAxMSwgMjI0LCA5MywgMTAsIDExLCAyMjQsIDkyLCAxMCwgMTEsIDIyNCwgOTEsIDEwLCAxMSwgCi0gICAgMjI0LCA5MCwgMTAsIDExLCAyMjQsIDg5LCAxMCwgMTEsIDIyNCwgODgsIDEwLCAxMSwgMjI0LCA4NywgMTAsIDExLCAyMjQsIAotICAgIDg2LCAxMCwgMTEsIDIyNCwgODUsIDEwLCAxMSwgMjI0LCA4NCwgMTAsIDExLCAyMjQsIDgzLCAxMCwgMTEsIDIyNCwgODIsIAotICAgIDEwLCAxMSwgMjI0LCA4MSwgMTAsIDExLCAyMjQsIDgwLCAxMCwgMTEsIDIyNCwgNzksIDEwLCAxMSwgMjI0LCA3OCwgMTAsIAotICAgIDExLCAyMjMsIDEsIDEwLCAxMSwgMjIzLCAwLCAxMCwgMTEsIDIyMiwgMjU1LCAxMCwgMTEsIDIyMiwgMjU0LCAxMCwgMTEsIAotICAgIDIyMiwgMjUzLCAxMCwgMTEsIDIyMiwgMjUyLCAxMCwgMTEsIDIyMiwgMjUxLCAxMCwgMTEsIDIyMiwgMjUwLCAxMCwgMTEsIAotICAgIDIyMiwgMjQ5LCAxMCwgMTEsIDIyMiwgMjQ4LCAxMCwgMTEsIDIyMiwgMjQ3LCAxMCwgMTEsIDIyMiwgMjQ2LCAxMCwgMTEsIAotICAgIDIyMiwgMjQ1LCAxMCwgMTEsIDIyMiwgMjQ0LCAxMCwgMTEsIDIyMiwgMjQzLCAxMCwgMTEsIDIyMiwgMjQyLCAxMCwgMTEsIAotICAgIDIyMiwgMjQxLCAxMCwgMTEsIDIyMiwgMjQwLCAxMCwgMTEsIDIyMiwgMjM5LCAxMCwgMTEsIDIyMiwgMjM4LCAxMCwgMTEsIAotICAgIDIyMiwgMjM3LCAxMCwgMTEsIDIyMiwgMjM2LCAxMCwgMTEsIDIyMiwgMjM1LCAxMCwgMTEsIDIyMiwgMjM0LCAxMCwgMTEsIAotICAgIDIyMiwgMjMzLCAxMCwgMTEsIDIyMiwgMjMyLCAxMCwgMTEsIDIyMiwgMjMxLCAxMCwgMTEsIDIyMiwgMjMwLCAxMCwgMTEsIAotICAgIDIyMiwgMjI5LCAxMCwgMTEsIDIyMiwgMjI4LCAxMCwgMTEsIDIyMiwgMjI3LCAxMCwgMTEsIDIyMiwgMjI2LCAxMCwgMTEsIAotICAgIDIyMiwgMjI1LCAxMCwgMTEsIDIyMiwgMjI0LCAxMCwgMTEsIDIyMiwgMjIzLCAxMCwgMTEsIDIyMiwgMjIyLCAxMCwgMTEsIAotICAgIDIyMiwgMjIxLCAxMCwgMTEsIDIyMiwgMjIwLCAxMCwgMTEsIDIyMiwgMjE5LCAxMCwgMTEsIDIyMiwgMjE4LCAxMCwgMTEsIAotICAgIDIyMiwgMjE3LCAxMCwgMTEsIDIyMiwgMjE2LCAxMCwgMTEsIDIyMiwgMjE1LCAxMCwgMTEsIDIyMiwgMjE0LCAxMCwgMTEsIAotICAgIDIyMiwgMjEzLCAxMCwgMTEsIDIyMiwgMjEyLCAxMCwgMTEsIDIyMiwgMjExLCAxMCwgMTEsIDIyMiwgMjEwLCAxMCwgMTEsIAotICAgIDIyMiwgMjA5LCAxMCwgMTEsIDIyMiwgMjA4LCAxMCwgMTEsIDIyMiwgMjA3LCAxMCwgMTEsIDIyMiwgMjA2LCAxMCwgMTEsIAotICAgIDIyMiwgMjA1LCAxMCwgMTEsIDIyMiwgMjA0LCAxMCwgMTEsIDIxOCwgOTcsIDEwLCAxMSwgMjE4LCA5NiwgMTAsIDExLCAKLSAgICAyMTgsIDk1LCAxMCwgMTEsIDIxOCwgOTQsIDEwLCAxMSwgMjE4LCA5MywgMTAsIDExLCAyMTgsIDkyLCAxMCwgMTEsIDIxOCwgCi0gICAgOTEsIDEwLCAxMSwgMjE4LCA5MCwgMTAsIDExLCAyMTgsIDg5LCAxMCwgMTEsIDIxOCwgODgsIDEwLCAxMSwgMjE4LCA4NywgCi0gICAgMTAsIDExLCAyMTgsIDg2LCAxMCwgMTEsIDIxOCwgODUsIDEwLCAxMSwgMjE4LCA4NCwgMTAsIDExLCAyMTgsIDgzLCAxMCwgCi0gICAgMTEsIDIxOCwgODIsIDEwLCAxMSwgMjE4LCA4MSwgMTAsIDExLCAyMTgsIDgwLCAxMCwgMTEsIDIxOCwgNzksIDEwLCAxMSwgCi0gICAgMjE4LCA3OCwgMTAsIDExLCAyMTgsIDc3LCAxMCwgMTEsIDIxOCwgNzYsIDEwLCAxMSwgMjE4LCA3NSwgMTAsIDExLCAyMTgsIAotICAgIDc0LCAxMCwgMTEsIDIxOCwgNzMsIDEwLCAxMSwgMjE4LCA3MiwgMTAsIDExLCAyMTgsIDcxLCAxMCwgMTEsIDIxOCwgNzAsIAotICAgIDEwLCAxMSwgMjE4LCA2OSwgMTAsIDExLCAyMTgsIDY4LCAxMCwgMTEsIDIxOCwgNjcsIDEwLCAxMSwgMjE4LCA2NiwgMTAsIAotICAgIDExLCAyMTgsIDY1LCAxMCwgMTEsIDIxOCwgNjQsIDEwLCAxMSwgMjE4LCA2MywgMTAsIDExLCAyMTgsIDYyLCAxMCwgMTEsIAotICAgIDIxOCwgNjEsIDEwLCAxMSwgMjE4LCA2MCwgMTAsIDExLCAyMTgsIDU5LCAxMCwgMTEsIDIxOCwgNTgsIDEwLCAxMSwgMjE4LCAKLSAgICA1NywgMTAsIDExLCAyMTgsIDU2LCAxMCwgMTEsIDIxOCwgNTUsIDEwLCAxMSwgMjE4LCA1NCwgMTAsIDExLCAyMTUsIDI0NSwgCi0gICAgMTAsIDExLCAyMTUsIDI0NCwgMTAsIDExLCAyMTUsIDI0MywgMTAsIDExLCAyMTUsIDI0MiwgMTAsIDExLCAyMTUsIDI0MSwgCi0gICAgMTAsIDExLCAyMTUsIDI0MCwgMTAsIDExLCAyMTUsIDIzOSwgMTAsIDExLCAyMTUsIDIzOCwgMTAsIDExLCAyMTUsIDIzNywgCi0gICAgMTAsIDExLCAyMTUsIDIzNiwgMTAsIDExLCAyMTUsIDIzNSwgMTAsIDExLCAyMTUsIDIzNCwgMTAsIDExLCAyMTUsIDIzMywgCi0gICAgMTAsIDExLCAyMTUsIDIzMiwgMTAsIDExLCAyMTUsIDIzMSwgMTAsIDExLCAyMTUsIDIzMCwgMTAsIDExLCAyMTUsIDIyOSwgCi0gICAgMTAsIDExLCAyMTUsIDIyOCwgMTAsIDExLCAyMTUsIDIyNywgMTAsIDExLCAyMTUsIDIyNiwgMTAsIDExLCAyMTUsIDIyNSwgCi0gICAgMTAsIDExLCAyMTUsIDIyNCwgMTAsIDExLCAyMTUsIDIyMywgMTAsIDExLCAyMTUsIDIyMiwgMTAsIDExLCAyMTUsIDIyMSwgCi0gICAgMTAsIDExLCAyMTUsIDIyMCwgMTAsIDExLCAyMTUsIDIxOSwgMTAsIDExLCAyMTUsIDIxOCwgMTAsIDExLCAyMTUsIDIxNywgCi0gICAgMTAsIDExLCAyMTUsIDIxNiwgMTAsIDExLCAyMTUsIDIxNSwgMTAsIDExLCAyMTUsIDIxNCwgMTAsIDExLCAyMTUsIDIxMywgCi0gICAgMTAsIDExLCAyMTUsIDIxMiwgMTAsIDExLCAyMTUsIDIxMSwgMTAsIDExLCAyMTUsIDIxMCwgMTAsIDExLCAyMTUsIDIwOSwgCi0gICAgMTAsIDExLCAyMTUsIDIwOCwgMTAsIDExLCAyMTUsIDIwNywgMTAsIDExLCAyMTUsIDIwNiwgMTAsIDExLCAyMTUsIDIwNSwgCi0gICAgMTAsIDExLCAyMTUsIDIwNCwgMTAsIDExLCAyMTUsIDIwMywgMTAsIDExLCAyMTUsIDIwMiwgMTAsIDExLCAyMTUsIDIwMSwgCi0gICAgMTAsIDExLCAyMTUsIDIwMCwgMTAsIDExLCAyMTUsIDE5OSwgMTAsIDExLCAyMTUsIDc4LCAxMCwgMTEsIDIxNSwgNzcsIDEwLCAKLSAgICAxMSwgMjE1LCA3NiwgMTAsIDExLCAyMTUsIDc1LCAxMCwgMTEsIDIxNSwgNzQsIDEwLCAxMSwgMjE1LCA3MywgMTAsIDExLCAKLSAgICAyMTUsIDcyLCAxMCwgMTEsIDIxNSwgNzEsIDEwLCAxMSwgMjE1LCA3MCwgMTAsIDExLCAyMTUsIDY5LCAxMCwgMTEsIDIxNSwgCi0gICAgNjgsIDEwLCAxMSwgMjE1LCA2NywgMTAsIDExLCAyMTUsIDY2LCAxMCwgMTEsIDIxNSwgNjUsIDEwLCAxMSwgMjE1LCA2NCwgCi0gICAgMTAsIDExLCAyMTUsIDYzLCAxMCwgMTEsIDIxNSwgNjIsIDEwLCAxMSwgMjE1LCA2MSwgMTAsIDExLCAyMTUsIDYwLCAxMCwgCi0gICAgMTEsIDIxNSwgNTksIDEwLCAxMSwgMjE1LCA1OCwgMTAsIDExLCAyMTUsIDU3LCAxMCwgMTEsIDIxNSwgNTYsIDEwLCAxMSwgCi0gICAgMjE1LCA1NSwgMTAsIDExLCAyMTUsIDU0LCAxMCwgMTEsIDIxNSwgNTMsIDEwLCAxMSwgMjE1LCA1MiwgMTAsIDExLCAyMTUsIAotICAgIDUxLCAxMCwgMTEsIDIxNSwgNTAsIDEwLCAxMSwgMjE1LCA0OSwgMTAsIDExLCAyMTUsIDQ4LCAxMCwgMTEsIDIxNSwgNDcsIAotICAgIDEwLCAxMSwgMjE1LCA0NiwgMTAsIDExLCAyMTUsIDQ1LCAxMCwgMTEsIDIxNSwgNDQsIDEwLCAxMSwgMjE1LCA0MywgMTAsIAotICAgIDExLCAyMTUsIDQyLCAxMCwgMTEsIDIxNSwgNDEsIDEwLCAxMSwgMjE1LCA0MCwgMTAsIDExLCAyMTUsIDM5LCAxMCwgMTEsIAotICAgIDIxNSwgMzgsIDEwLCAxMSwgMjE1LCAzNywgMTAsIDExLCAyMTUsIDM2LCAxMCwgMTEsIDIxNSwgMzUsIDEwLCAxMSwgMjE1LCAKLSAgICAzNCwgMTAsIDExLCAyMTUsIDMzLCAxMCwgMTEsIDIxNSwgMzIsIDEwLCAxMSwgMjE1LCAzMSwgMTAsIDExLCAyMTUsIDMwLCAKLSAgICAxMCwgMTEsIDIxNSwgMjksIDEwLCAxMSwgMjE1LCAyOCwgMTAsIDExLCAyMTUsIDI3LCAxMCwgMTEsIDIxNSwgMjYsIDEwLCAKLSAgICAxMSwgMjE1LCAyNSwgMTAsIDExLCAyMTUsIDI0LCAxMCwgMTEsIDIxNSwgMjMsIDEwLCAxMSwgMjE1LCAyMiwgMTAsIDExLCAKLSAgICAyMTUsIDIxLCAxMCwgMTEsIDIxNSwgMjAsIDEwLCAxMSwgMjE1LCAxOSwgMTAsIDExLCAyMTUsIDE4LCAxMCwgMTEsIDIxNSwgCi0gICAgMTcsIDEwLCAxMSwgMjE1LCAxNiwgMTAsIDExLCAyMTUsIDE1LCAxMCwgMTEsIDIxNSwgMTQsIDEwLCAxMSwgMjE1LCAxMywgCi0gICAgMTAsIDExLCAyMTUsIDEyLCAxMCwgMTEsIDIxNSwgMTEsIDEwLCAxMSwgMjE1LCAxMCwgMTAsIDExLCAyMTUsIDksIDEwLCAKLSAgICAxMSwgMjE1LCA4LCAxMCwgMTEsIDIxNSwgNywgMTAsIDExLCAyMTUsIDYsIDEwLCAxMSwgMjE1LCA1LCAxMCwgMTEsIDIxNSwgCi0gICAgNCwgMTAsIDExLCAyMTUsIDMsIDEwLCAxMSwgMjE1LCAyLCAxMCwgMTEsIDIxNCwgODEsIDEwLCAxMSwgMjE0LCA4MCwgMTAsIAotICAgIDExLCAyMTQsIDc5LCAxMCwgMTEsIDIxNCwgNzgsIDEwLCAxMSwgMjE0LCA3NywgMTAsIDExLCAyMTQsIDc2LCAxMCwgMTEsIAotICAgIDIxNCwgNzUsIDEwLCAxMSwgMjE0LCA3NCwgMTAsIDExLCAyMTQsIDczLCAxMCwgMTEsIDIxNCwgNzIsIDEwLCAxMSwgMjE0LCAKLSAgICA3MSwgMTAsIDExLCAyMTQsIDcwLCAxMCwgMTEsIDIxNCwgNjksIDEwLCAxMSwgMjE0LCA2OCwgMTAsIDExLCAyMTQsIDY3LCAKLSAgICAxMCwgMTEsIDIxNCwgNjYsIDEwLCAxMSwgMjE0LCA2NSwgMTAsIDExLCAyMTQsIDY0LCAxMCwgMTEsIDIxNCwgNjMsIDEwLCAKLSAgICAxMSwgMjE0LCA2MiwgMTAsIDExLCAyMTQsIDYxLCAxMCwgMTEsIDIxNCwgNjAsIDEwLCAxMSwgMjE0LCA1OSwgMTAsIDExLCAKLSAgICAyMTQsIDU4LCAxMCwgMTEsIDIxNCwgNTcsIDEwLCAxMSwgMjE0LCA1NiwgMTAsIDExLCAyMTQsIDU1LCAxMCwgMTEsIDIxNCwgCi0gICAgNTQsIDEwLCAxMSwgMjE0LCA1MywgMTAsIDExLCAyMTQsIDUyLCAxMCwgMTEsIDIxNCwgNTEsIDEwLCAxMSwgMjE0LCA1MCwgCi0gICAgMTAsIDExLCAyMTMsIDE2NSwgMTAsIDExLCAyMTMsIDE2NCwgMTAsIDExLCAyMTMsIDE2MywgMTAsIDExLCAyMTMsIDE2MiwgCi0gICAgMTAsIDExLCAyMTMsIDE2MSwgMTAsIDExLCAyMTMsIDE2MCwgMTAsIDExLCAyMTMsIDE1OSwgMTAsIDExLCAyMTMsIDE1OCwgCi0gICAgMTAsIDExLCAyMTMsIDE1NywgMTAsIDExLCAyMTMsIDE1NiwgMTAsIDExLCAyMTMsIDE1NSwgMTAsIDExLCAyMTMsIDE1NCwgCi0gICAgMTAsIDExLCAyMTMsIDEwMywgMTAsIDExLCAyMTMsIDEwMiwgMTAsIDExLCAyMTMsIDEwMSwgMTAsIDExLCAyMTMsIDEwMCwgCi0gICAgMTAsIDExLCAyMTMsIDk5LCAxMCwgMTEsIDIxMywgOTgsIDEwLCAxMSwgMjEzLCA5NywgMTAsIDExLCAyMTMsIDk2LCAxMCwgCi0gICAgMTEsIDIxMywgOTUsIDEwLCAxMSwgMjEyLCAxNTEsIDEwLCAxMSwgMjEyLCAxNTAsIDEwLCAxMSwgMjEyLCAxNDksIDEwLCAKLSAgICAxMSwgMjEyLCAxNDgsIDEwLCAxMSwgMjEyLCAxNDcsIDEwLCAxMSwgMjEyLCAxNDYsIDEwLCAxMSwgMjEyLCAxNDUsIDEwLCAKLSAgICAxMSwgMjEyLCAxNDQsIDEwLCAxMSwgMjEyLCAxNDMsIDEwLCAxMSwgMjEyLCAxNDIsIDEwLCAxMSwgMjEyLCAxNDEsIDEwLCAKLSAgICAxMSwgMjEyLCAxNDAsIDEwLCAxMSwgMjEyLCAxMzksIDEwLCAxMSwgMjEyLCAxMzgsIDEwLCAxMSwgMjEyLCAxMzcsIDEwLCAKLSAgICAxMSwgMjEyLCAxMzYsIDEwLCAxMSwgMjEyLCAxMzUsIDEwLCAxMSwgMjEyLCAxMzQsIDEwLCAxMSwgMjEyLCAxMzMsIDEwLCAKLSAgICAxMSwgMjEyLCAxMzIsIDEwLCAxMSwgMjEyLCAxMzEsIDEwLCAxMSwgMjEyLCAxMzAsIDEwLCAxMSwgMjEyLCAxMjksIDEwLCAKLSAgICAxMSwgMjEyLCAxMjgsIDEwLCAxMSwgMjEyLCAxMjcsIDEwLCAxMSwgMjEyLCAxMjYsIDEwLCAxMSwgMjEyLCAxMjUsIDEwLCAKLSAgICAxMSwgMjEyLCAxMjQsIDEwLCAxMSwgMjEyLCAxMjMsIDEwLCAxMSwgMjEyLCAxMjIsIDEwLCAxMSwgMjEyLCAxMjEsIDEwLCAKLSAgICAxMSwgMjEyLCAxMjAsIDEwLCAxMSwgMjEyLCAxMTksIDEwLCAxMSwgMjEyLCAxMTgsIDEwLCAxMSwgMjEyLCAxMTcsIDEwLCAKLSAgICAxMSwgMjEyLCAxMTYsIDEwLCAxMSwgMjEyLCAxMTUsIDEwLCAxMSwgMjEyLCAxMTQsIDEwLCAxMSwgMjEyLCAxMTMsIDEwLCAKLSAgICAxMSwgMjEyLCAxMTIsIDEwLCAxMSwgMjEyLCAxMTEsIDEwLCAxMSwgMjU0LCAyMzEsIDEwLCAxMSwgMjU0LCAyMzAsIDEwLCAKLSAgICAxMSwgMjU0LCAyMjksIDEwLCAxMSwgMjU0LCAyMjgsIDEwLCAxMSwgMjU0LCAyMjcsIDEwLCAxMSwgMjU0LCAyMjYsIDEwLCAKLSAgICAxMSwgMjU0LCAyMjUsIDEwLCAxMSwgMjU0LCAyMjQsIDEwLCAxMSwgMjU0LCAyMjMsIDEwLCAxMSwgMjU0LCAyMjIsIDEwLCAKLSAgICAxMSwgMjU0LCAyMjEsIDEwLCAxMSwgMjU0LCAyMjAsIDEwLCAxMSwgMjU0LCAyMTksIDEwLCAxMSwgMjU0LCAyMTgsIDEwLCAKLSAgICAxMSwgMjU0LCAyMTcsIDEwLCAxMSwgMjU0LCAyMTYsIDEwLCAxMSwgMjU0LCAyMTUsIDEwLCAxMSwgMjU0LCAyMTQsIDEwLCAKLSAgICAxMSwgMjU0LCAyMTMsIDEwLCAxMSwgMjU0LCAyMTIsIDEwLCAxMSwgMjU0LCAyMTEsIDEwLCAxMSwgMjU0LCAyMTAsIDEwLCAKLSAgICAxMSwgMjU0LCAyMDksIDEwLCAxMSwgMjU0LCAyMDgsIDEwLCAxMSwgMjU0LCAyMDcsIDEwLCAxMSwgMjU0LCAyMDYsIDEwLCAKLSAgICAxMSwgMjU0LCAyMDUsIDEwLCAxMSwgMjU0LCAyMDQsIDEwLCAxMSwgMjU0LCAyMDMsIDEwLCAxMSwgMjU0LCAyMDIsIDEwLCAKLSAgICAxMSwgMjU0LCAyMDEsIDEwLCAxMSwgMjU0LCAyMDAsIDEwLCAxMSwgMjU0LCAxOTksIDEwLCAxMSwgMjU0LCAxOTgsIDIwLCAKLSAgICAxLCAxNTMsIDIyOSwgOTgsIDIzMSwgODMsIDIwLCAxLCAxNTMsIDI0MywgNDYsIDI0NCwgNSwgMjAsIDEsIDE1MywgMjI1LCAKLSAgICAxMzEsIDIzMSwgODQsIDIyNSwgMTg5LCAyMCwgMSwgMTUzLCAyMjUsIDEzMSwgMjMxLCA4NCwgMjI1LCAxOTAsIDIwLCAxLCAKLSAgICAxNTMsIDIzMCwgNDQsIDIzMSwgODMsIDIwLCAxLCAxNTMsIDIyMCwgMTQ2LCAyMCwgMSwgMTUzLCAyMTcsIDE5LCAyMzEsIAotICAgIDgzLCAyMCwgMSwgMTUzLCAyMjcsIDIzOCwgMjMxLCA4MywgMjAsIDEsIDE1MywgMjIwLCAxOTksIDIyNiwgMjE0LCAyMjksIAotICAgIDAsIDIwLCAxLCAxNTMsIDIyNSwgMTMxLCAyMjYsIDIxNCwgMjI5LCAxLCAyMjUsIDE4OSwgMjAsIDEsIDE1MywgMjI1LCAKLSAgICAxMzEsIDIyNiwgMjE0LCAyMjksIDEsIDIyNSwgMTkwLCAyMCwgMSwgMTUzLCAyMzIsIDIzLCAyMCwgMSwgMTUzLCAyMTYsIAotICAgIDgzLCAyMzIsIDI0LCAyMCwgMSwgMTUzLCAyMjksIDE1NCwgMjAsIDEsIDE1MywgMjMyLCAyMCwgMjAsIDEsIDE1MywgMjMxLCAKLSAgICAyMzksIDIwLCAxLCAxNTMsIDIzMCwgMTE5LCAyMCwgMSwgMTUzLCAyMjEsIDQ1LCAyMCwgMSwgMTUzLCAyMjgsIDk2LCAyMCwgCi0gICAgMSwgMTUzLCAyMzQsIDE1NSwgMjAsIDEsIDE1MywgMjI4LCAyMjUsIDIwLCAxLCAxNTMsIDIxOCwgMjA1LCAyMCwgMSwgMTUzLCAKLSAgICAyMjksIDk3LCAyMCwgMSwgMTUzLCAyMzMsIDExMCwgMjAsIDEsIDE1MywgMjMzLCAzNiwgMjMzLCAyMTAsIDIwLCAxLCAxNTMsIAotICAgIDIyOCwgMTAzLCAyMzEsIDkxLCAyMCwgMSwgMTUzLCAyMzIsIDI3LCAyMCwgMSwgMTUzLCAyMjYsIDExOSwgMjAsIDEsIDE1MywgCi0gICAgMjQyLCAyMDcsIDIwLCAxLCAxNTMsIDIyNiwgMTc3LCAyMCwgMSwgMTUzLCAyMzAsIDIyMSwgMjI5LCAxMzAsIDIwLCAxLCAKLSAgICAxNTMsIDIyNywgMjE5LCAyMzEsIDk0LCAyMCwgMSwgMTUzLCAxMTEsIDIxMiwgMTc5LCAyMzAsIDM4LCAyMCwgMSwgMTUzLCAKLSAgICAyNDIsIDIwOCwgMjAsIDEsIDE1MywgMjI4LCAxMDMsIDIyOCwgMTA0LCAyMCwgMSwgMTUzLCAyMjAsIDU2LCAyMCwgMSwgCi0gICAgMTUzLCAyMzEsIDc2LCAyMCwgMSwgMTUzLCAyMzEsIDk3LCAyMCwgMSwgMTUzLCAyMzAsIDIwMCwgMjAsIDEsIDE1MywgMjM0LCAKLSAgICAyNTMsIDIwLCAxLCAxNTMsIDIyNiwgMjE0LCAyMzMsIDcxLCAyMCwgMSwgMTUzLCAyMjksIDIyOSwgMjMzLCA3MSwgMjAsIDEsIAotICAgIDE1MywgMjI2LCAzNCwgMjAsIDEsIDE1MywgMjMyLCAyMSwgMjAsIDEsIDE1MywgMjI5LCAzOCwgMjAsIDEsIDE1MywgMjI1LCAKLSAgICAyMCwgMjAsIDEsIDE1MywgMjE2LCA4MCwgMjAsIDEsIDE1MywgMjMyLCAxNTIsIDIwLCAxLCAxNTMsIDIxOSwgMjI3LCAyMCwgCi0gICAgMSwgMTUzLCAyMTcsIDE2OSwgMjAsIDEsIDE1MywgMjMyLCAxOCwgMjAsIDEsIDE1MywgMjM0LCAxNjIsIDIwLCAxLCAxNTMsIAotICAgIDIyOSwgMjI1LCAyMCwgMSwgMTUzLCAyMzMsIDIyMiwgMjAsIDEsIDE1MywgMjMwLCAyMDEsIDIwLCAxLCAxNTMsIDIyMCwgCi0gICAgMTQzLCAyMCwgMSwgMTUzLCAyMzIsIDE5MSwgMjAsIDEsIDE1MywgMjQ0LCA2MiwgMjAsIDEsIDE1MywgMjIzLCAxMDEsIDIwLCAKLSAgICAxLCAxNTMsIDIzMywgMjUwLCAyMCwgMSwgMTUzLCAyMTksIDIyMywgMjAsIDEsIDE1MywgMjMxLCAyMzYsIDIyNSwgMjMxLCAKLSAgICAyMCwgMSwgMTUzLCAyMjAsIDE5MiwgMjAsIDEsIDE1MywgMjI4LCAxMDIsIDIwLCAxLCAxNTMsIDIyMCwgMTc3LCAyMjgsIAotICAgIDExMywgMjEyLCAxODcsIDIwLCAxLCAxNTMsIDIyOCwgMSwgMjMwLCAyMTgsIDIwLCAxLCAxNTMsIDIyNiwgMjA5LCAyMCwgMSwgCi0gICAgMTUzLCAyMjgsIDIyNiwgMjAsIDEsIDE1MywgMjE1LCAxNDEsIDIwLCAxLCAxNTMsIDIyOSwgMTMzLCAyMCwgMSwgMTUzLCAKLSAgICAyMzIsIDE3LCAyMCwgMSwgMTUzLCAyMjksIDEyLCAyMCwgMSwgMTUzLCAyMzEsIDE4MiwgMjAsIDEsIDE1MywgMjI4LCAxMiwgCi0gICAgMjAsIDEsIDE1MywgMjE3LCAxNzMsIDIwLCAxLCAxNTMsIDIxOSwgMjIxLCAyMCwgMSwgMTUzLCAyMjYsIDIxMCwgMjAsIDEsIAotICAgIDE1MywgMjI4LCAxMTcsIDIwLCAxLCAxNTMsIDIzMiwgMjUsIDIwLCAxLCAxNTMsIDIyOCwgMTAsIDIwLCAxLCAxNTMsIDIzNCwgCi0gICAgMjIxLCAyMCwgMSwgMTUzLCAyMjgsIDEyMCwgMjAsIDEsIDE1MywgMjE0LCAyMjcsIDIwLCAxLCAxNTMsIDIzMiwgMTU2LCAKLSAgICAyMCwgMSwgMTUzLCAyMjksIDE4MCwgMjAsIDEsIDE1MywgMjMwLCAxNiwgMjAsIDEsIDE1MywgMjMxLCAxODEsIDIwLCAxLCAKLSAgICAyMjYsIDE0LCAyMjgsIDExNSwgMjAsIDEsIDIyNiwgMTQsIDIxNiwgODMsIDIzMiwgMjIsIDIwLCAxLCAyMjYsIDE0LCAyMjAsIAotICAgIDExMSwgMjAsIDEsIDIyNiwgMTQsIDIyMSwgNDksIDIxNiwgODIsIDIwLCAxLCAyMjYsIDE0LCAyMzIsIDE5MywgMjI4LCA5OSwgCi0gICAgMjAsIDEsIDIyNiwgMTQsIDIzMSwgMTg4LCAyMzIsIDI2LCAyMCwgMSwgMjI2LCAxNCwgMjM0LCA5NiwgMjAsIDEsIDIyNiwgCi0gICAgMTQsIDIxMywgNiwgMjAsIDEsIDIyNiwgMTQsIDIzMSwgMTgzLCAyMCwgMSwgMjI2LCAxNCwgMjM0LCAyNDIsIDIwLCAxLCAKLSAgICAyMjYsIDE0LCAyMjYsIDgzLCAyMCwgMSwgMjI2LCAxNCwgMjEzLCA3NywgMjMzLCA3MSwgMjAsIDEsIDIyNiwgMTQsIDIzMywgCi0gICAgMTI3LCAyMjgsIDExMywgMjI4LCAyMCwgMjAsIDEsIDIyNiwgMTQsIDIyOCwgOTcsIDIyMCwgMjE4LCAyMCwgMSwgMjI2LCAKLSAgICAxNCwgMjI5LCAxOTYsIDIyOSwgMTUsIDIwLCAxLCAyMjYsIDE0LCAyNDIsIDIwNSwgMjAsIDEsIDIyNiwgMTQsIDIyNSwgCi0gICAgMTgxLCAyMCwgMSwgMjI2LCAxNCwgMjE2LCA4MywgMjI4LCAxMTEsIDIwLCAxLCAyMjYsIDE0LCAyMjAsIDIyMywgMjI5LCAKLSAgICAxMCwgMjAsIDEsIDIyNiwgMTQsIDIyMCwgMjE5LCAyMCwgMSwgMjI2LCAxNCwgMjMxLCA4NCwgMjE3LCAxNzIsIDIwLCAxLCAKLSAgICAyMjYsIDE0LCAyMzEsIDE3MCwgMjMxLCAxODQsIDIwLCAxLCAyMjYsIDE0LCAyMjgsIDExLCAyMjgsIDk5LCAyMCwgMSwgCi0gICAgMjI2LCAxNCwgMjM0LCAxNTEsIDIwLCAxLCAyMjYsIDE0LCAyNDIsIDIwNiwgMjAsIDEsIDIyNiwgMTQsIDIzNCwgMTQ3LCAKLSAgICAyMCwgMSwgMjI2LCAxNCwgMjMzLCAxNTEsIDIwLCAxLCAyMjYsIDE0LCAyMjYsIDEyMSwgMjAsIDEsIDIyNiwgMTQsIDIxNCwgCi0gICAgMTU5LCAyMCwgMSwgMjI2LCAxNCwgMjI5LCA5OSwgMjMwLCAxMTcsIDIwLCAxLCAyMjYsIDE0LCAyMjksIDEzMiwgMjMxLCAKLSAgICAxNjYsIDIwLCAxLCAyMjYsIDE0LCAyMTMsIDE4MSwgMjAsIDEsIDIyNiwgMTQsIDIyMiwgMTgyLCAyMCwgMSwgMjI2LCAxNCwgCi0gICAgMjE4LCA0NSwgMjAsIDEsIDIyNiwgMTQsIDIzMSwgOTYsIDIwLCAxLCAyMjYsIDE0LCAyMjksIDExNywgMjAsIDEsIDIyNiwgCi0gICAgMTQsIDIyOSwgMTE4LCAyMzMsIDEwNywgMjAsIDEsIDIyNiwgMTQsIDIzMSwgODYsIDIwLCAxLCAyMjYsIDE0LCAyMTgsIAotICAgIDI1MywgMjAsIDEsIDIyNiwgMTQsIDIzMSwgMTc0LCAyMCwgMSwgMjI2LCAxNCwgMjMwLCAyMDMsIDIwLCAxLCAyMjYsIDE0LCAKLSAgICAyMjgsIDIxLCAyMCwgMSwgMjI2LCAxNCwgMjI1LCAyNCwgMjAsIDEsIDIyNiwgMTQsIDIzMSwgOTUsIDIyOSwgMTM0LCAyMCwgCi0gICAgMSwgMjI2LCAxNCwgMjQ0LCA5NSwgMjAsIDEsIDIyNiwgMTQsIDIzMSwgMTYxLCAyMCwgMSwgMjI2LCAxNCwgMjQ0LCAxMTYsIAotICAgIDIwLCAxLCAyMjYsIDE0LCAyMzQsIDE1OSwgMjAsIDEsIDIyNiwgMTQsIDIzMiwgNDMsIDIyOSwgNCwgMjAsIDEsIDIyNiwgCi0gICAgMTQsIDIzMiwgNDMsIDIyOCwgMjM2LCAyMCwgMSwgMjI2LCAxNCwgMjMzLCAzNSwgMjAsIDEsIDIyNiwgMTQsIDIyOSwgMTQwLCAKLSAgICAyMCwgMSwgMjI2LCAxNCwgMjI4LCAxMjIsIDIwLCAxLCAyMjYsIDE0LCAxODgsIDIwLCAxLCAyMjYsIDE0LCAyMzQsIDgzLCAKLSAgICAyMCwgMSwgMjI2LCAxNCwgMjI5LCA4NywgMjAsIDEsIDEzMSwgMjI5LCA5OCwgMjMyLCAyNCwgMjAsIDEsIDEzMSwgMjI3LCAKLSAgICAyMzcsIDIwLCAxLCAxMzEsIDIxMiwgMTg3LCAyMCwgMSwgMTMxLCAyMTQsIDM3LCAyMCwgMSwgMTMxLCAyMjksIDEzMywgMjAsIAotICAgIDEsIDEzMSwgMjI5LCAyMTcsIDIwLCAxLCAxMzEsIDIyOSwgMTA1LCAyMCwgMSwgMTMxLCAyNDIsIDIxNSwgMjAsIDEsIDEzMSwgCi0gICAgMjMxLCAxNzgsIDIwLCAxLCAxMzEsIDI0MywgNTMsIDIwLCAxLCAxMzEsIDIyOCwgMywgMjMwLCAyMzksIDIzMSwgOTgsIDIwLCAKLSAgICAxLCAxMzEsIDIyOCwgOTUsIDIzMSwgMTY5LCAyMCwgMSwgMTMxLCAyMzEsIDE3NSwgMjAsIDEsIDEzMSwgMjI1LCAxODcsIAotICAgIDIwLCAxLCAxMzEsIDIyOSwgMjAyLCAyMCwgMSwgMTMxLCAyMzEsIDE4NiwgMjUwLCAyMTUsIDIwLCAxLCAxMzEsIDIzNCwgCi0gICAgMTQ5LCAyMCwgMSwgMTMxLCAyNDIsIDIxNiwgMjAsIDEsIDEzMSwgMjM0LCAxNTYsIDIwLCAxLCAxMzEsIDIxMiwgMjA0LCAKLSAgICAyMzAsIDE0NiwgMjAsIDEsIDEzMSwgMjI3LCAyMzEsIDIwLCAxLCAxMzEsIDIzMSwgMTYzLCAyMCwgMSwgMTMxLCAyMjgsIAotICAgIDEyMSwgMjAsIDEsIDEzMSwgMjMxLCAxNjksIDIwLCAxLCAxMzEsIDIxMywgNywgMjAsIDEsIDEzMSwgMjM0LCAyLCAyMCwgMSwgCi0gICAgMTMxLCAyMzUsIDE0LCAyMCwgMSwgMTMxLCAyMjEsIDQ0LCAyMCwgMSwgMTMxLCAyMjksIDIxMSwgMjAsIDEsIDEzMSwgMjE4LCAKLSAgICA0MywgMjAsIDEsIDEzMSwgMjI4LCAyNDAsIDIwLCAxLCAxMzEsIDIxNywgMTksIDIxMiwgMTg5LCAyMCwgMSwgMTMxLCAyMTksIAotICAgIDIzLCAyMCwgMSwgMTMxLCAyMjksIDEyNCwgMjI4LCAyMCwgMjAsIDEsIDEzMSwgMjE0LCAxNTgsIDIwLCAxLCAxMzEsIDIzMCwgCi0gICAgMTksIDIwLCAxLCAxMzEsIDIzMiwgNDMsIDIzNCwgMTU4LCAyMCwgMSwgMTMxLCAyMjgsIDEwNCwgMjAsIDEsIDEzMSwgMjI5LCAKLSAgICAxMTksIDIwLCAxLCAxMzEsIDIzMywgMTExLCAyMCwgMSwgMTMxLCAyMzEsIDE3MSwgMjAsIDEsIDEzMSwgMjMxLCA3NSwgMjAsIAotICAgIDEsIDEzMSwgMjI4LCA5OCwgMjAsIDEsIDEzMSwgMjE3LCAxNjgsIDIwLCAxLCAxMzEsIDIyOSwgMTIxLCAyMCwgMSwgMTMxLCAKLSAgICAyNDMsIDIwNCwgMjAsIDEsIDEzMSwgMjI5LCAyMTYsIDIwLCAxLCAxMzEsIDIyOCwgMTIzLCAyMCwgMSwgMTMxLCAyMjgsIAotICAgIDExOSwgMjAsIDEsIDEzMSwgMjUxLCAzNiwgMjAsIDEsIDEzMSwgMjE0LCAxNjAsIDIwLCAxLCAxMzEsIDIzMSwgMTc2LCAyMCwgCi0gICAgMSwgMTMxLCAyMjMsIDUxLCAyMCwgMSwgMTMxLCAyMjksIDE0LCAyMCwgMSwgMTMxLCAyMzMsIDEyNiwgMjAsIDEsIDEzMSwgCi0gICAgMjE3LCAxNywgMjAsIDEsIDEzMSwgMjI4LCAxMDUsIDIyOSwgODcsIDIwLCAxLCAxMzEsIDIyOSwgNiwgMjAsIDEsIDEzMSwgCi0gICAgMjM0LCAxNjIsIDIwLCAxLCAxMzEsIDIyOSwgMTI1LCAyMCwgMSwgMTMxLCAyMzIsIDE3LCAyMCwgMSwgMTMxLCAyMzEsIAotICAgIDE2NCwgMjAsIDEsIDEzMSwgMjMyLCAxNTYsIDIwLCAxLCAxMzEsIDIzMywgMjEwLCAyMCwgMSwgMTMxLCAyMjksIDEyLCAyMCwgCi0gICAgMSwgMTMxLCAyMjksIDg3LCAyMCwgMSwgMTMxLCAyMTMsIDE3MiwgMjAsIDEsIDEzMSwgMjI5LCAxMjIsIDIwLCAxLCAxMzEsIAotICAgIDIyOCwgMTA4LCAyMCwgMSwgMTMxLCAyMjgsIDEwMCwgMjAsIDEsIDEzMSwgMjMzLCAyMjQsIDIyOCwgMjI2LCAyMCwgMSwgCi0gICAgMTMxLCAyMjgsIDEwNiwgMjAsIDEsIDEzMSwgMjI5LCAyMjQsIDIwLCAxLCAxMzEsIDIzMiwgNDMsIDIyOCwgMTExLCAyMCwgCi0gICAgMSwgMTMxLCAyMTMsIDkxLCAyMCwgMSwgMTMxLCAyMjksIDIyMywgMjAsIDEsIDEzMSwgMjIwLCAxNDUsIDIwLCAxLCAxMzEsIAotICAgIDIyMSwgNDcsIDIwLCAxLCAxMzEsIDIzMSwgMTcyLCAyMCwgMSwgMTMxLCAyMzIsIDI0LCAyMCwgMSwgMTMxLCAyMzEsIDE4MiwgCi0gICAgMjAsIDEsIDEzMSwgMjM0LCAxNTAsIDIwLCAxLCAxMzEsIDIzMSwgMTczLCAyMCwgMSwgMTMxLCAyMzQsIDE1NCwgMjAsIDEsIAotICAgIDEzMSwgMjMxLCAxODYsIDIyNSwgMjM1LCAyMCwgMSwgMTMxLCAyMTIsIDE3MSwgMjAsIDEsIDEzMSwgMjI5LCAyLCAyMCwgMSwgCi0gICAgMTMxLCAyMzEsIDMzLCAyMCwgMSwgMTMxLCAyMzAsIDE3MCwgMjAsIDEsIDEzMSwgMjIwLCAxOTUsIDIwLCAxLCAxMzEsIAotICAgIDIzNCwgMTcyLCAyMzMsIDk0LCAyMCwgMSwgMTMxLCAyMzQsIDE3MiwgMjQ0LCAxMjgsIDIwLCAxLCAxMzEsIDIyOSwgMTUyLCAKLSAgICAyMCwgMSwgMTMxLCAyMzAsIDE2LCAyMCwgMSwgMTMxLCAyMzIsIDIyOSwgMjAsIDEsIDEzMSwgMjI1LCAxOTcsIDIwLCAxLCAKLSAgICAxMzEsIDIyNiwgNzQsIDIwLCAxLCAxMzEsIDIxNywgMTgzLCAyMCwgMSwgMTAzLCAyMzEsIDE2MiwgMjAsIDEsIDEwMywgCi0gICAgMjE0LCAzNSwgMjAsIDEsIDEwMywgMjI5LCAwLCAyMCwgMSwgMTAzLCAyMzEsIDgzLCAyMCwgMSwgMTAzLCAyMjgsIDI1NCwgCi0gICAgMjAsIDEsIDEwMywgMjMzLCA3LCAyMCwgMSwgMTAzLCAyMjksIDMsIDIwLCAxLCAxMDMsIDIyOCwgMTE4LCAyMCwgMSwgMTAzLCAKLSAgICAyMjksIDEzOSwgMjAsIDEsIDEwMywgMjI4LCAyMCwgMjAsIDEsIDEwMywgMjEzLCAxODIsIDIwLCAxLCAxMDMsIDIyOSwgOTUsIAotICAgIDIwLCAxLCAxMDMsIDIyMCwgMjQxLCAyMCwgMSwgMTAzLCAyMjksIDEwNiwgMjAsIDEsIDEwMywgMjM0LCAxNTcsIDIwLCAxLCAKLSAgICAxMDMsIDIxNywgMTcwLCAyMCwgMSwgMTAzLCAyMjAsIDIyMSwgMjAsIDEsIDEwMywgMjI5LCAxMSwgMjAsIDEsIDEwMywgCi0gICAgMjE4LCAyNTMsIDIwLCAxLCAxMDMsIDIzNCwgMTYyLCAyMCwgMSwgMTAzLCAyMTMsIDc5LCAyMCwgMSwgMTAzLCAyMzMsIAotICAgIDIyNSwgMjAsIDEsIDEwMywgMjIyLCAxNTAsIDIwLCAxLCAxMDMsIDIzMSwgODgsIDIwLCAxLCAxMDMsIDIyOSwgMjE1LCAyMCwgCi0gICAgMSwgMTAzLCAyMzEsIDI1MSwgMjAsIDEsIDEwMywgMjMxLCA5NCwgMjAsIDEsIDEwMywgMjIxLCA0NiwgMjAsIDEsIDEwMywgCi0gICAgMjEzLCAzMCwgMjAsIDEsIDEwMywgMjI5LCA1LCAyMCwgMSwgMTAzLCAyMzQsIDE1MywgMjMxLCAxNjUsIDIwLCAxLCAxMDMsIAotICAgIDIyOSwgMTAyLCAyMCwgMSwgMTAzLCAyMTYsIDgyLCAyMCwgMSwgMTAzLCAyNDIsIDIyNCwgMjAsIDEsIDEwMywgMjI5LCA5MiwgCi0gICAgMjAsIDEsIDEwMywgMjQ0LCA5NiwgMjAsIDEsIDEwMywgMjI5LCAyMTksIDIwLCAxLCAxMDMsIDIzMSwgNjcsIDIwLCAxLCAKLSAgICAxMDMsIDIzMywgMzEsIDIwLCAxLCAxMDMsIDIyOSwgMjAxLCAyMCwgMSwgMTAzLCAyMzAsIDIxNywgMjAsIDEsIDEwMywgCi0gICAgMjMxLCA3MSwgMjAsIDEsIDEwMywgMjI1LCA2LCAyMCwgMSwgMTAzLCAyMzEsIDY5LCAyMCwgMSwgMTAzLCAyMzEsIDg1LCAKLSAgICAyMCwgMSwgMTAzLCAyMzIsIDE0MiwgMjAsIDEsIDEwMywgMjI4LCAxMTAsIDIwLCAxLCAxMDMsIDIzMSwgMTg1LCAyMCwgMSwgCi0gICAgMTAzLCAyMzMsIDIwMiwgMjAsIDEsIDEwMywgMjI4LCAxMiwgMjAsIDEsIDEwMywgMjE3LCAxNzMsIDIwLCAxLCAxMDMsIAotICAgIDIxOSwgMjIxLCAyMCwgMSwgMTAzLCAyMTIsIDE3MSwgMjAsIDEsIDEwMywgMjM0LCAxNTQsIDIwLCAxLCAxMDMsIDIyNCwgCi0gICAgNjAsIDIwLCAxLCAxMDMsIDIxNywgMjE4LCAyMCwgMSwgMTAzLCAyMjksIDEwMywgMjAsIDEsIDEwMywgMjMxLCA5MCwgMjAsIAotICAgIDEsIDEwMywgMjI4LCAxMDksIDIwLCAxLCAxMDMsIDIzNCwgMTUyLCAyMCwgMSwgMTAzLCAyMjUsIDE5MSwgMjAsIDEsIDEwMywgCi0gICAgMjI2LCAyOCwgMjAsIDEsIDEwMywgMjI3LCAyNDYsIDIwLCAxLCAxMDMsIDIzMywgMzUsIDIwLCAxLCAxMDMsIDIyOSwgMTQwLCAKLSAgICAyMCwgMSwgMTAzLCAyMzEsIDg3LCAyMCwgMSwgMTAzLCAyMjksIDExNCwgMjAsIDEsIDEwMywgMjEyLCAxODQsIDIwLCAxLCAKLSAgICAxMDMsIDIyNiwgMTQ5LCAyMCwgMSwgMTAzLCAyMTIsIDE4MywgMjAsIDEsIDEwMywgMjI5LCAyMjQsIDIwLCAxLCAxMDMsIAotICAgIDIyOCwgOTksIDIwLCAxLCAxMDMsIDIxOSwgMjUsIDIwLCAxLCAxMDMsIDIzMywgMjI5LCAyMCwgMSwgMTAzLCAyMjksIDEyOSwgCi0gICAgMjAsIDEsIDEwMywgMjI5LCAxMDAsIDIwLCAxLCAxMDMsIDIxNiwgNjYsIDIwLCAxLCAxMDMsIDIzMSwgOTgsIDIwLCAxLCAKLSAgICAxMDMsIDIzMywgMjE5LCAyMCwgMSwgMTAzLCAyMjgsIDEwNywgMjAsIDEsIDEwMywgMjE3LCAxNzEsIDIwLCAxLCAxMDMsIAotICAgIDIzMiwgMTksIDIwLCAxLCAxMDMsIDIyOSwgMTM4LCAyMCwgMSwgMTAzLCAyMzMsIDMwLCAyMCwgMSwgMTAzLCAyMjksIDEyMCwgCi0gICAgMjAsIDEsIDEwMywgMjI4LCAxMTIsIDIwLCAxLCAxMDMsIDIyOCwgMjQwLCAyMCwgMSwgMTAzLCAyNDIsIDIwOSwgMjAsIDEsIAotICAgIDEwMywgMjMzLCAyMzgsIDIwLCAxLCAxMDMsIDIyMywgMjM0LCAyMjcsIDc1LCAyMCwgMSwgMTAzLCAyMTgsIDM1LCAyMCwgMSwgCi0gICAgMTAzLCAyMTYsIDIyMywgMjAsIDEsIDEwMywgMjI4LCAxMCwgMjAsIDEsIDEwMywgMjIzLCAxMzYsIDIwLCAxLCAxMDMsIAotICAgIDIzMywgNzMsIDIwLCAxLCAxMDMsIDIzMSwgMTQ0LCAyMCwgMSwgMTAzLCAxODMsIDIwLCAxLCAxMDMsIDIxOCwgMjA1LCAyMCwgCi0gICAgMSwgMTAzLCAyMzAsIDE3MiwgMjAsIDEsIDEwMywgMjIwLCAyMDcsIDIwLCAxLCAxMDMsIDIyMCwgMjE3LCAyMCwgMSwgMTAzLCAKLSAgICAyMzMsIDE3NywgMjAsIDEsIDEwMywgMjI4LCA5MiwgMjAsIDEsIDEwMywgMjIwLCAxNTAsIDIwLCAxLCAxMDMsIDIyOCwgCi0gICAgMTAxLCAyMCwgMSwgMTAzLCAyMjYsIDg2LCAyMCwgMSwgMTAzLCAyMjksIDY0LCAyMCwgMSwgMTAzLCAyMjAsIDE3NiwgMjAsIAotICAgIDEsIDEwMywgMjI1LCAxOSwgMjAsIDEsIDEwMywgMjMwLCAxMTcsIDIwLCAxLCAxMDMsIDIzMiwgMTc0LCAyMCwgMSwgMTAzLCAKLSAgICAyMjMsIDIzNCwgMjMwLCAxNjYsIDIwLCAxLCAxMDMsIDIxNywgNzEsIDIwLCAxLCAxMDMsIDIyOCwgOTMsIDIwLCAxLCAxMDMsIAotICAgIDIzMSwgMTg2LCAxOTgsIDIwLCAxLCAxMDMsIDIyMiwgMTQ4LCAyMCwgMSwgMTAzLCAyNDQsIDE2MywgMjAsIDEsIDgwLCAKLSAgICAyMjksIDIyMywgMjAsIDEsIDgwLCAyMTYsIDIyOSwgMjAsIDEsIDgwLCAyMzEsIDE3NSwgMjAsIDEsIDgwLCAyMzMsIDExMSwgCi0gICAgMjAsIDEsIDgwLCAyMTQsIDEwOSwgMjAsIDEsIDgwLCAyMzIsIDE3OCwgMjAsIDEsIDgwLCAyMjYsIDIxMywgMjAsIDEsIDgwLCAKLSAgICAyMTksIDIzMCwgMjAsIDEsIDgwLCAyMjQsIDM3LCAyMCwgMSwgODAsIDIyOCwgMTE0LCAyMCwgMSwgODAsIDIyOSwgMTk0LCAKLSAgICAyMCwgMSwgODAsIDIyNSwgMzMsIDIwLCAxLCA4MCwgMjE4LCAxMywgMjAsIDEsIDgwLCAyMjksIDEwOCwgMjAsIDEsIDgwLCAKLSAgICAyMzMsIDI1NCwgMjAsIDEsIDgwLCAyMTMsIDE3NSwgMjAsIDEsIDgwLCAyMjIsIDg5LCAyMCwgMSwgODAsIDIyOSwgMTMwLCAKLSAgICAyMCwgMSwgODAsIDIyNiwgMjEwLCAyMCwgMSwgODAsIDIxNiwgMjMwLCAyMCwgMSwgODAsIDIzMywgMjIzLCAyMCwgMSwgODAsIAotICAgIDIzMiwgMTkyLCAyMCwgMSwgODAsIDIyOCwgMTE3LCAyMCwgMSwgODAsIDIyOSwgODQsIDIwLCAxLCA4MCwgMjMyLCAyNSwgCi0gICAgMjAsIDEsIDgwLCAyMjksIDEwMSwgMjAsIDEsIDgwLCAyMjksIDgzLCAyMCwgMSwgODAsIDIyOCwgMTE2LCAyMCwgMSwgODAsIAotICAgIDIyMywgMTM0LCAyMCwgMSwgODAsIDIyOSwgMiwgMjAsIDEsIDgwLCAyMjYsIDg1LCAyMCwgMSwgODAsIDIyMiwgMjAwLCAyMCwgCi0gICAgMSwgODAsIDIyOSwgMTE1LCAyMCwgMSwgODAsIDIzMSwgNzcsIDIwLCAxLCA4MCwgMjQyLCAyMDMsIDIwLCAxLCA4MCwgMjI5LCAKLSAgICAxMDQsIDIwLCAxLCA4MCwgMjI5LCAxMywgMjAsIDEsIDgwLCAyMzEsIDIzNSwgMjAsIDEsIDgwLCAyMzIsIDE3NiwgMjAsIDEsIAotICAgIDgwLCAyMjksIDEzNSwgMjAsIDEsIDgwLCAyMjksIDIwNywgMjAsIDEsIDgwLCAyMTgsIDM0LCAyMjgsIDk5LCAyMCwgMSwgCi0gICAgODAsIDIyMSwgNDgsIDIwLCAxLCA4MCwgMjI1LCAyOSwgMjAsIDEsIDgwLCAyMjksIDIyNywgMjE5LCAyMzUsIDIwLCAxLCAKLSAgICA4MCwgMjI5LCAxMjMsIDIyOCwgMjAsIDIwLCAxLCA4MCwgMjEyLCAyNTEsIDIwLCAxLCA4MCwgMjQyLCAyMDQsIDIwLCAxLCAKLSAgICA4MCwgMjE2LCA4MSwgMjAsIDEsIDgwLCAyMTMsIDEwLCAyMCwgMSwgODAsIDIyNSwgMTUwLCAyMCwgMSwgODAsIDIxNiwgNzEsIAotICAgIDIwLCAxLCA4MCwgMjM0LCAxNjAsIDIwLCAxLCA4MCwgMjE5LCAyNCwgMjAsIDEsIDgwLCAyMTcsIDE3MiwgMjAsIDEsIDgwLCAKLSAgICAyMTQsIDE2MSwgMjAsIDEsIDgwLCAyMTMsIDI0NywgMjAsIDEsIDgwLCAyMzMsIDE1NCwgMjAsIDEsIDgwLCAyMjUsIDM1LCAKLSAgICAyMCwgMSwgODAsIDIxOCwgNDQsIDIwLCAxLCA4MCwgMjQyLCAyMjMsIDIwLCAxLCA4MCwgMjI5LCAxNDQsIDIwLCAxLCA4MCwgCi0gICAgMjIwLCAyMjAsIDIwLCAxLCA4MCwgMjMxLCA3MiwgMjAsIDEsIDgwLCAyMzEsIDE3OSwgMjAsIDEsIDgwLCAyMjcsIDIzNSwgCi0gICAgMjAsIDEsIDgwLCAyMjgsIDIyMywgMjAsIDEsIDgwLCAyNDMsIDQ5LCAyMCwgMSwgODAsIDIxNiwgNzIsIDIwLCAxLCA4MCwgCi0gICAgMjMzLCAyMzIsIDIwLCAxLCA4MCwgMjEzLCA1NywgMjAsIDEsIDgwLCAyMjgsIDExLCAyNDksIDIwOSwgMjAsIDEsIDgwLCAKLSAgICAyMTIsIDI0MSwgMjAsIDEsIDgwLCAyMzEsIDg5LCAyMCwgMSwgODAsIDIyOSwgMjEyLCAyMCwgMSwgODAsIDIyNSwgMjMyLCAKLSAgICAyMCwgMSwgODAsIDIxMiwgMTg4LCAyMCwgMSwgODAsIDIzMywgMzIsIDIwLCAxLCA4MCwgMjQzLCAyMDQsIDIwLCAxLCA4MCwgCi0gICAgMjQzLCA0OCwgMjAsIDEsIDgwLCAyMjksIDk0LCAyMCwgMSwgODAsIDIzNCwgMTYyLCAyMCwgMSwgODAsIDIzMiwgMjgsIDIwLCAKLSAgICAxLCA4MCwgMjI5LCAxMDcsIDIwLCAxLCA4MCwgMjQyLCAyMTAsIDIwLCAxLCA4MCwgMjQ0LCAxNjQsIDIwLCAxLCA4MCwgCi0gICAgMjI4LCA5NCwgMjAsIDEsIDgwLCAyMjYsIDI5LCAyMCwgMSwgODAsIDIxMywgOCwgMjAsIDEsIDgwLCAyMjksIDEzMSwgMjAsIAotICAgIDEsIDgwLCAyMjgsIDExLCAyNTEsIDIwMCwgMjAsIDEsIDgwLCAyMjcsIDIxNSwgMjAsIDEsIDgwLCAyMjUsIDEyNywgMjAsIAotICAgIDEsIDgwLCAyMzEsIDMzLCAyMCwgMSwgODAsIDI0MywgMjAyLCAyMCwgMSwgODAsIDIzMCwgMzgsIDIwLCAxLCA4MCwgMjMwLCAKLSAgICAxNzAsIDIwLCAxLCA4MCwgMjQyLCAyMDksIDIwLCAxLCA4MCwgMjQzLCAyMDYsIDcyLCAyMCwgMSwgODAsIDIzMCwgMTE4LCAKLSAgICAyMCwgMSwgODAsIDIyNSwgMzIsIDIwLCAxLCA4MCwgMjI5LCA5NiwgMjAsIDEsIDgwLCAyMzMsIDIxMCwgMjAsIDEsIDgwLCAKLSAgICAyMjUsIDIyOSwgMjAsIDEsIDgwLCAyMjgsIDEwMiwgMjAsIDEsIDgwLCAyMTMsIDksIDIwLCAxLCA4MCwgMjI5LCAxMTYsIAotICAgIDIwLCAxLCA4MCwgMjI2LCAyMTQsIDIyNiwgNjIsIDIwLCAxLCA4MCwgMjQzLCAyMDYsIDI1MCwgMjAzLCAyMCwgMSwgODAsIAotICAgIDI0NCwgNiwgMjAsIDEsIDgwLCAyMjksIDcsIDIwLCAxLCA4MCwgNjEsIDIwLCAxLCA4MCwgMjE2LCAyMjMsIDIwLCAxLCA4MCwgCi0gICAgNzUsIDIwLCAxLCA4MCwgNzIsIDIwLCAxLCA4MCwgMjMzLCAxMDksIDIwLCAxLCA4MCwgMjI2LCAyMTQsIDIyNSwgMTU3LCAKLSAgICAyMCwgMSwgODAsIDIxOCwgNDksIDIwLCAxLCA4MCwgMjE4LCAyLCAyMCwgMSwgODAsIDIyOSwgMjI3LCAyMzAsIDEwNiwgCi0gICAgMjQwLCAyMjEsIDIwLCAxLCA4MCwgMjIwLCAxOTUsIDIwLCAxLCA4MCwgMjEzLCA1LCAyMCwgMSwgODAsIDIyOSwgNzcsIDIwLCAKLSAgICAxLCA4MCwgMjEyLCAxOTMsIDIwLCAxLCA4MCwgMjEyLCAyMTgsIDIxOCwgMTg1LCAyMCwgMSwgODAsIDIxMiwgMjE4LCAyNDksIAotICAgIDg2LCAyMCwgMSwgODAsIDIxMiwgMTc4LCAyMCwgMSwgODAsIDIxMiwgMTg2LCAyMCwgMSwgODAsIDIzNCwgMTQ4LCAyMCwgMSwgCi0gICAgODAsIDIyNiwgMjcsIDIwLCAxLCA4MCwgMjI5LCA4LCAyNDUsIDY1LCAyMCwgMSwgODAsIDIyNSwgMzAsIDIwLCAxLCA4MCwgCi0gICAgMjEzLCAxODAsIDIwLCAxLCA4MCwgMjQ0LCAxMTYsIDIwLCAxLCA4MCwgMjE0LCAyMjcsIDIwLCAxLCA4MCwgMjMyLCAxNTYsIAotICAgIDIwLCAxLCA4MCwgMjMxLCA0MiwgMjAsIDEsIDgwLCAyMjMsIDIwNCwgMjAsIDEsIDgwLCAyMjQsIDYxLCAyMCwgMSwgODAsIAotICAgIDIyOSwgNzYsIDIwLCAxLCA4MCwgMjI5LCAxNTksIDIwLCAxLCA4MCwgMjIwLCAxODcsIDIwLCAxLCA4MCwgMjIwLCAxNzYsIAotICAgIDIwLCAxLCA4MCwgMjQzLCAyMDYsIDIyMywgMjM2LCAyMCwgMSwgODAsIDIwNSwgMjAsIDEsIDgwLCAyMjUsIDI0MCwgMjAsIAotICAgIDEsIDgwLCAyMzIsIDE3NCwgMjAsIDEsIDgwLCAyMzQsIDM3LCAyMCwgMSwgODAsIDIzMSwgMTIyLCAyMCwgMSwgODAsIDE4OCwgCi0gICAgMjAsIDEsIDgwLCAyMzEsIDIzMiwgMjAsIDEsIDgwLCAyMTcsIDE3NCwgMjAsIDEsIDgwLCAyMzQsIDEwMSwgMjAsIDEsIDgwLCAKLSAgICAyMzAsIDIyMCwgMjAsIDEsIDgwLCAyMTcsIDIwMCwgMjAsIDEsIDgwLCAyNDQsIDEzNywgMjAsIDEsIDgwLCAyNDIsIDE5OSwgCi0gICAgMjAsIDEsIDIyNiwgMTMsIDE4MSwgMjAsIDEsIDIyNiwgMTMsIDY5LCAyMCwgMSwgMjI2LCAxMywgMjMzLCAyMzgsIDIwLCAxLCAKLSAgICAyMjYsIDEzLCAyNDUsIDE2NSwgMjAsIDEsIDIyNiwgMTMsIDIyNCwgMSwgMjAsIDEsIDIyNiwgMTMsIDIxOCwgMzUsIDIwLCAKLSAgICAxLCAyMjYsIDEzLCAyMjgsIDEwLCAyMCwgMSwgMjI2LCAxMywgMjMzLCAxNTcsIDIwLCAxLCAyMjYsIDEzLCAyMjMsIDEzNiwgCi0gICAgMjAsIDEsIDIyNiwgMTMsIDIyMywgMTgyLCAyMCwgMSwgMjI2LCAxMywgMjMxLCAxNDQsIDIwLCAxLCAyMjYsIDEzLCAyMTgsIAotICAgIDQ5LCAyMCwgMSwgMjI2LCAxMywgMjI5LCAyMjYsIDIwLCAxLCAyMjYsIDEzLCAyMjksIDE0LCAyMCwgMSwgMjI2LCAxMywgCi0gICAgMTgzLCAyMCwgMSwgMjI2LCAxMywgMjE4LCAyMDUsIDIwLCAxLCAyMjYsIDEzLCAyMjAsIDIwNywgMjAsIDEsIDIyNiwgMTMsIAotICAgIDIyMCwgMTE3LCAyMCwgMSwgMjI2LCAxMywgMjIxLCA0NCwgMjAsIDEsIDIyNiwgMTMsIDIzMywgMTc3LCAyMCwgMSwgMjI2LCAKLSAgICAxMywgMjM0LCAxNjIsIDIwLCAxLCAyMjYsIDEzLCAyMjgsIDY0LCAyMCwgMSwgMjI2LCAxMywgMjI4LCA5MiwgMjAsIDEsIAotICAgIDIyNiwgMTMsIDIyOCwgMjQxLCAyMCwgMSwgMjI2LCAxMywgMjEyLCAyMTcsIDIwLCAxLCAyMjYsIDEzLCAyMjAsIDE1MCwgCi0gICAgMjAsIDEsIDIyNiwgMTMsIDE4NiwgMjAsIDEsIDIyNiwgMTMsIDIyOCwgMTIwLCAyMCwgMSwgMjI2LCAxMywgMjI2LCAyNywgCi0gICAgMjAsIDEsIDIyNiwgMTMsIDIyOCwgMTAxLCAyMCwgMSwgMjI2LCAxMywgMjEzLCAxODAsIDIwLCAxLCAyMjYsIDEzLCAyMjYsIAotICAgIDg2LCAyMCwgMSwgMjI2LCAxMywgMjIzLCA1MSwgMjAsIDEsIDIyNiwgMTMsIDIyOSwgNjQsIDIwLCAxLCAyMjYsIDEzLCAKLSAgICAyMjMsIDIwNCwgMjAsIDEsIDIyNiwgMTMsIDIzNCwgMTcxLCAyMCwgMSwgMjI2LCAxMywgMjI5LCA5MywgMjAsIDEsIDIyNiwgCi0gICAgMTMsIDIyOSwgMTQxLCAyMCwgMSwgMjI2LCAxMywgMjIwLCAxODcsIDIwLCAxLCAyMjYsIDEzLCAyMjUsIDMzLCAyMCwgMSwgCi0gICAgMjI2LCAxMywgMjQ0LCA2LCAyMCwgMSwgMjI2LCAxMywgMjE0LCA0OSwgMjAsIDEsIDIyNiwgMTMsIDIzMywgMTMsIDIwLCAxLCAKLSAgICAyMjYsIDEzLCAyMzIsIDE3NCwgMjAsIDEsIDIyNiwgMTMsIDIzNCwgMzcsIDIwLCAxLCAyMjYsIDEzLCAyMzEsIDE3NywgMjAsIAotICAgIDEsIDIyNiwgMTMsIDIyMywgMjMzLCAyMCwgMSwgMjI2LCAxMywgMTg4LCAyMCwgMSwgMjI2LCAxMywgMjMwLCAyMzEsIDIwLCAKLSAgICAxLCAyMjYsIDEzLCAyMzEsIDE4NSwgMjAsIDEsIDIyNiwgMTMsIDIxNywgMTgzLCAyMCwgMSwgMjI2LCAxMywgMjM0LCA0LCAKLSAgICAyMCwgMSwgMjI2LCAxMywgMjIyLCAxNjYsIDIwLCAxLCAyMjYsIDEzLCAyMTQsIDk4LCA1NiwgMSwgMjUzLCAxOTMsIDc0LCAKLSAgICAxNDIsIDEsIDI1MywgMTkzLCAyMTMsIDM4LCA0NywgMjcsIDE2LCAyMjUsIDM5LCA0NywgMjcsIDE2LCAyNDgsIDEwMywgNDcsIAotICAgIDI3LCAxNiwgMjI2LCA1MCwgNDcsIDI3LCAxNiwgMjI2LCAyMzcsIDI0NSwgMTM1LCA0NywgMjcsIDE2LCAyMjYsIDIzNywgCi0gICAgMjQ3LCAxNTMsIDQ3LCAyNywgMTYsIDIxNCwgMjQ4LCAyNDUsIDEzNSwgNDcsIDI3LCAxNiwgMjE0LCAyNDgsIDI0NywgMTUzLCAKLSAgICA0NywgMjcsIDE2LCAyMzQsIDIwMiwgNDcsIDI3LCAxNiwgMjE4LCAxMTUsIDQ3LCAyNywgMTYsIDIyNiwgMTM3LCA0NywgMjcsIAotICAgIDE2LCAyMTIsIDIwOCwgNDcsIDI3LCAxNiwgMjEyLCAyMDksIDI0NywgMTUzLCA0NywgMjcsIDE2LCAyMzMsIDI0MywgNDcsIAotICAgIDI3LCAxNiwgMjUzLCAyMzYsIDI0NSwgMTM1LCA0NywgMjcsIDE2LCAyNDQsIDI0OSwgMjQ1LCAxMzUsIDQ3LCAyNywgMTYsIAotICAgIDIxNywgMjExLCA0NywgMjcsIDE2LCAyMzQsIDE2NywgNDcsIDI3LCAxNiwgMjUzLCAyMjcsIDQ3LCAyNywgMTYsIDI1MywgCi0gICAgMjI4LCAyNDcsIDE1MywgNDcsIDI3LCAxNiwgMjE4LCAxMjEsIDQ3LCAyNywgMTYsIDIxNywgMTEyLCA0NywgMjcsIDE2LCAKLSAgICAyMjcsIDcyLCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjQyLCAxMzUsIDI1MywgMTkxLCA0NywgMjcsIDE2LCAyMjUsIDM4LCAKLSAgICA0NywgMjcsIDE2LCAyNTAsIDg1LCA0NywgMjcsIDE2LCAyMTQsIDIzOCwgNDcsIDI3LCAxNiwgMjM1LCAxNjIsIDI1MywgCi0gICAgMTkxLCA0NywgMjcsIDE2LCAyMzQsIDE2OSwgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIDIzNCwgMTY4LCAyNTMsIDE5MSwgNDcsIAotICAgIDI3LCAxNiwgMjIyLCAxMzEsIDQ3LCAyNywgMTYsIDIyNiwgMTI4LCA0NywgMjcsIDE2LCAyMTksIDg2LCAyNTMsIDIzMCwgCi0gICAgNDcsIDI3LCAxNiwgMjI2LCAyMzYsIDI1MywgMTkxLCA0NywgMjcsIDE2LCAyMTQsIDI0NywgMjUzLCAxOTEsIDQ3LCAyNywgCi0gICAgMTYsIDI1MywgMjMxLCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjUzLCAyMjUsIDQ3LCAyNywgMTYsIDIzNCwgNDYsIDQ3LCAKLSAgICAyNywgMTYsIDIyMywgMTk5LCA0NywgMjcsIDE2LCAyMjUsIDIzOCwgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIDIxNywgMzYsIAotICAgIDQ3LCAyNywgMTYsIDI1NCwgMzAsIDQ3LCAyNywgMTYsIDIyMiwgNzgsIDQ3LCAyNywgMTYsIDIxOCwgMTI0LCAyNTMsIDE5MSwgCi0gICAgNDcsIDI3LCAxNiwgMjE4LCAxMjQsIDIzMSwgMTA3LCAyMTksIDg0LCA0NywgMjcsIDE2LCAyMjYsIDIzMSwgMjUzLCAxOTEsIAotICAgIDQ3LCAyNywgMTYsIDIxNywgMTQzLCA0NywgMjcsIDE2LCAyMzMsIDUxLCA0NywgMjcsIDE2LCAyNDUsIDI1MiwgNDcsIDI3LCAKLSAgICAxNiwgMjE2LCAxODUsIDQ3LCAyNywgMTYsIDIxNywgMTg1LCA0NywgMjcsIDE2LCAyMzMsIDI0NiwgNDcsIDI3LCAxNiwgCi0gICAgMjUzLCAyMzYsIDI0NCwgMjQ5LCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDI1MywgMTkxLCA0NywgMjcsIDE2LCAKLSAgICAyMzYsIDcsIDQ3LCAyNywgMTYsIDIxNiwgMTU3LCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjM0LCAyMDUsIDIxNiwgMTU2LCAKLSAgICA0NywgMjcsIDE2LCAyMjYsIDc1LCA0NywgMjcsIDE2LCAyMjUsIDQzLCA0NywgMjcsIDE2LCAyMzQsIDIwLCA0NywgMjcsIAotICAgIDE2LCAyNTAsIDE3LCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjI0LCAzOCwgNDcsIDI3LCAxNiwgMjI2LCAxNDAsIDI1MywgCi0gICAgMTkxLCA0NywgMjcsIDE2LCAyMjYsIDEzOCwgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIDI0MCwgMTAyLCA0NywgMjcsIDE2LCAKLSAgICAyMzAsIDIzLCA0NywgMjcsIDE2LCAyMjYsIDMyLCA0NywgMjcsIDE2LCAyMzQsIDIxLCAyNTQsIDU4LCA0NywgMjcsIDE2LCAKLSAgICAyMTYsIDE1NywgMjU0LCA1OCwgNDcsIDI3LCAxNiwgMjE5LCA2MywgNDcsIDI3LCAxNiwgMjQyLCAxMDEsIDQ3LCAyNywgMTYsIAotICAgIDIzNSwgMTYyLCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjI3LCA3MiwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIyNiwgMjM3LCAKLSAgICAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjI2LCAzMSwgNDcsIDI3LCAxNiwgMjM0LCA3LCA0NywgMjcsIDE2LCAyMjYsIDMwLCAKLSAgICA0NywgMjcsIDE2LCAyMzMsIDI0NSwgNDcsIDI3LCAxNiwgMjI2LCA3NiwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIzNCwgCi0gICAgMTY4LCAyMjksIDE3OCwgMjU0LCA3LCA0NywgMjcsIDE2LCAyMzQsIDE2OSwgMjI5LCAxNzgsIDI1NCwgNywgNDcsIDI3LCAKLSAgICAxNiwgMjEyLCAyMDYsIDQ3LCAyNywgMTYsIDI1MywgMjI4LCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjUzLCAyMjksIDIxOCwgCi0gICAgMTIyLCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjEyLCAyMDcsIDQ3LCAyNywgMTYsIDIzMywgMjQ0LCA0NywgMjcsIDE2LCAKLSAgICAyNDUsIDEzMCwgNDcsIDI3LCAxNiwgMjUwLCA4NiwgNDcsIDI3LCAxNiwgMjMxLCAxMSwgMjM1LCAxNjEsIDQ3LCAyNywgMTYsIAotICAgIDIxNCwgMjQ4LCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjI1LCAyMzgsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMjUsIDQ0LCAKLSAgICAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjI3LCA2OSwgNDcsIDI3LCAxNiwgMjUzLCAyNTEsIDQ3LCAyNywgMTYsIDIzMiwgCi0gICAgMTE4LCA0NywgMjcsIDE2LCAyMjYsIDEzOCwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIyNiwgMTQwLCAyMjksIDE3NywgNDcsIAotICAgIDI3LCAxNiwgMjQ1LCAyNiwgMjI2LCAxMzksIDQ3LCAyNywgMTYsIDIzMywgMTc1LCA0NywgMjcsIDE2LCAyNTMsIDI1MiwgCi0gICAgNDcsIDI3LCAxNiwgMjE2LCAxNTcsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyNDUsIDEzMywgNDcsIDI3LCAxNiwgMjE4LCAKLSAgICAxMjQsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMTgsIDExNiwgNDcsIDI3LCAxNiwgMjUwLCAxNywgMjI5LCAxNzcsIDQ3LCAKLSAgICAyNywgMTYsIDI0NSwgNjksIDQ3LCAyNywgMTYsIDIyMiwgNzksIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMTMsIDEzOSwgCi0gICAgMjM0LCA0NiwgNDcsIDI3LCAxNiwgMjE2LCAxNTQsIDQ3LCAyNywgMTYsIDIyNSwgNDUsIDQ3LCAyNywgMTYsIDIxNiwgMTU4LCAKLSAgICA0NywgMjcsIDE2LCAyMTYsIDE1NSwgNDcsIDI3LCAxNiwgMjI1LCA0MiwgNDcsIDI3LCAxNiwgMjE2LCAxNTMsIDQ3LCAyNywgCi0gICAgMTYsIDIyNSwgNDEsIDQ3LCAyNywgMTYsIDI0MiwgMTM0LCA0NywgMjcsIDE2LCAyNTMsIDE4NSwgNDcsIDI3LCAxNiwgMjQ1LCAKLSAgICAyNiwgMjUzLCAxODUsIDQ3LCAyNywgMTYsIDIyNiwgMjMxLCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjE3LCAxNDIsIDI0NSwgCi0gICAgMzQsIDQ3LCAyNywgMTYsIDIxNywgMTQyLCAyNDQsIDI0OCwgNDcsIDI3LCAxNiwgMjE3LCAxNDQsIDI1MywgMjMyLCA0NywgCi0gICAgMjcsIDE2LCAyMTcsIDEzNywgMjM0LCAyNTEsIDI1MywgMjI0LCA0NywgMjcsIDE2LCAyMzQsIDIwNCwgNDcsIDI3LCAxNiwgCi0gICAgMjQ1LCA5NywgNDcsIDI3LCAxNiwgMjEzLCAyLCAyMzQsIDIwMSwgNDcsIDI3LCAxNiwgMjEzLCAyLCAyNTQsIDcsIDQ3LCAKLSAgICAyNywgMTYsIDIxOSwgODUsIDQ3LCAyNywgMTYsIDIzNCwgNDcsIDI1NCwgNywgNDcsIDI3LCAxNiwgMjQ3LCAxNTQsIDI1MywgCi0gICAgMTkxLCA0NywgMjcsIDE2LCAyMzMsIDI0NywgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIDIzMywgMjQ3LCAyNTQsIDU4LCA0NywgCi0gICAgMjcsIDE2LCAyMzMsIDI0NywgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDI1MywgMjMxLCAyMjksIDE3NywgNDcsIDI3LCAxNiwgCi0gICAgMjUzLCAyMzMsIDQ3LCAyNywgMTYsIDI0NywgMTUzLCA0NywgMjcsIDE2LCAyMTYsIDE2OCwgNDcsIDI3LCAxNiwgMjE3LCAKLSAgICAxNzcsIDQ3LCAyNywgMTYsIDIzNCwgMTEsIDQ3LCAyNywgMTYsIDIzMywgNTYsIDI0NSwgOTIsIDI1MCwgOCwgNDcsIDI3LCAKLSAgICAxNiwgMjMzLCA1NiwgMjQ1LCAyNTMsIDI1MCwgOSwgNDcsIDI3LCAxNiwgMjMzLCA1NiwgMjE2LCAxNzAsIDI1MCwgOSwgNDcsIAotICAgIDI3LCAxNiwgMjMzLCA1NiwgMjE3LCAxODcsIDI1MCwgOSwgNDcsIDI3LCAxNiwgMjMzLCA1NiwgMjM2LCAyLCAyNTAsIDgsIAotICAgIDQ3LCAyNywgMTYsIDI0MiwgMTM1LCAyMjksIDE3OCwgMjU0LCA3LCA0NywgMjcsIDE2LCAyNDIsIDEzNSwgMjI2LCAxMjksIAotICAgIDI1MywgMTgxLCA0NywgMjcsIDE2LCAyNDIsIDEzNSwgMjI2LCAxMjksIDI0NywgMjM2LCA0NywgMjcsIDE2LCAyNDcsIDE3NywgCi0gICAgNDcsIDI3LCAxNiwgMjQ3LCAxNzgsIDIyNiwgMTI5LCAyNTMsIDE4MiwgMjM0LCAyMDEsIDQ3LCAyNywgMTYsIDI0NywgMTc4LCAKLSAgICAyMjYsIDEyOSwgMjUzLCAxODIsIDI1NCwgNywgNDcsIDI3LCAxNiwgMjQ3LCAxNzgsIDIyNiwgMTI5LCAyNDcsIDIzNiwgNDcsIAotICAgIDI3LCAxNiwgMjE2LCAxNzQsIDQ3LCAyNywgMTYsIDI1MywgMTg2LCA0NywgMjcsIDE2LCAyMzYsIDksIDQ3LCAyNywgMTYsIAotICAgIDI0NywgMTk4LCA0NywgMjcsIDE2LCAyNTQsIDExNiwgMjI1LCAxMzQsIDI1MywgMTg3LCA0NywgMjcsIDE2LCAyNTQsIDExNiwgCi0gICAgMjUzLCAxODQsIDQ3LCAyNywgMTYsIDI1NCwgMTE2LCAyNTMsIDE4NywgNDcsIDI3LCAxNiwgMjU0LCAxMTYsIDIzMSwgMTAxLCAKLSAgICA0NywgMjcsIDE2LCAyNTQsIDExNiwgMjMxLCAxMTAsIDQ3LCAyNywgMTYsIDI1NCwgMTE2LCAyNDIsIDEzNiwgNDcsIDI3LCAKLSAgICAxNiwgMjU0LCAxMTYsIDI0MiwgMTMzLCA0NywgMjcsIDE2LCAyNTQsIDExNiwgMjI1LCAxMzQsIDI0MiwgMTM2LCA0NywgMjcsIAotICAgIDE2LCAyMzEsIDIxNCwgMjI1LCA1MCwgMjQwLCAxMDAsIDQ3LCAyNywgMTYsIDIzMSwgMjE0LCAyNTQsIDYwLCAyMjUsIDUwLCAKLSAgICAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIDI0NywgMjM1LCAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIAotICAgIDI1NCwgNjAsIDI0NywgMjM1LCAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIDIxNiwgMTYzLCAyNDAsIDEwMCwgCi0gICAgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIDIxNiwgMTc1LCA0NywgMjcsIDE2LCAyMzEsIDIxNCwgMjE3LCAxODEsIDI0MCwgMTAwLCAKLSAgICA0NywgMjcsIDE2LCAyMzEsIDIxNCwgMjE3LCAxODEsIDIzMywgNTksIDI0MCwgMTAwLCA0NywgMjcsIDE2LCAyMzEsIDIxNCwgCi0gICAgMjMzLCA1OSwgMjQwLCAxMDAsIDQ3LCAyNywgMTYsIDIzMSwgMjE0LCAyMjUsIDE3MSwgMjQwLCAxMDAsIDQ3LCAyNywgMTYsIAotICAgIDIzNSwgMTY3LCAyMTcsIDIwNCwgMjQwLCAxMDEsIDQ3LCAyNywgMTYsIDI1MywgMjI5LCAyMTcsIDIwNCwgMjQwLCAxMDEsIAotICAgIDQ3LCAyNywgMTYsIDI0NCwgMTQwLCAyMTcsIDE3OCwgNDcsIDI3LCAxNiwgMjQ0LCAxNDAsIDIzMCwgMjEzLCA0NywgMjcsIAotICAgIDE2LCAyNDQsIDE0MCwgMjQ3LCAxODIsIDQ3LCAyNywgMTYsIDIzMSwgMjE0LCAyMTQsIDI0MiwgMjQwLCAxMDAsIDQ3LCAyNywgCi0gICAgMTYsIDIzMSwgMjE0LCAyMjUsIDQ5LCAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIDIyNSwgMTcxLCAyMTcsIAotICAgIDE4MSwgMjQwLCAxMDAsIDQ3LCAyNywgMTYsIDI0MiwgMTMxLCAyMzAsIDk4LCAyNTMsIDIzMiwgNDcsIDI3LCAxNiwgMjQyLCAKLSAgICAxMzEsIDIzMCwgOTgsIDI0NywgMTUyLCA0NywgMjcsIDE2LCAyNDUsIDEwNiwgMjM0LCAyNTEsIDI0MywgMjA3LCAyMTQsIAotICAgIDEwNSwgNDcsIDI3LCAxNiwgMjM2LCA4LCA0NywgMjcsIDE2LCAyMzYsIDYsIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyNTMsIAotICAgIDE5MiwgMjQ3LCAyMzQsIDI0MCwgOTksIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyNDcsIDE5NiwgMTkzLCA0NywgMjcsIDE2LCAKLSAgICAyNDMsIDIwNywgMjQ3LCAxOTYsIDIzMCwgMjMsIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyMzAsIDE4LCAyNDAsIDEwMCwgNDcsIAotICAgIDI3LCAxNiwgMjQzLCAyMDcsIDI0NywgMTk2LCAyNDcsIDIxMSwgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDIyMCwgMzAsIDI0NywgCi0gICAgMTk1LCAyNDcsIDIxMSwgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDI0NywgMTk2LCAyMzQsIDE4OCwgNDcsIDI3LCAxNiwgMjQzLCAKLSAgICAyMDcsIDI0NywgMTk2LCAyMTIsIDE2LCA0NywgMjcsIDE2LCAyNDMsIDIwNywgMjQ3LCAxOTYsIDIyOSwgNjUsIDIzNCwgCi0gICAgMjAxLCA0NywgMjcsIDE2LCAyNDMsIDIwNywgMjQ3LCAxOTYsIDIyOSwgNjUsIDI1NCwgNywgNDcsIDI3LCAxNiwgMjQzLCAKLSAgICAyMDcsIDIzMSwgMjU0LCAyNTAsIDEwLCAyNDcsIDE4MiwgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDIzMSwgMjU0LCAyNTAsIAotICAgIDEwLCAyMzAsIDIxMywgNDcsIDI3LCAxNiwgMjQ0LCA5MSwgMjIwLCAzMCwgMjUwLCAxMCwgMjE0LCAyNDEsIDQ3LCAyNywgCi0gICAgMTYsIDI0MywgMjA3LCAyMjAsIDMwLCAyNTAsIDEwLCAyMTgsIDEyNSwgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDIyOSwgMTc5LCAKLSAgICA0NywgMjcsIDE2LCAyNTAsIDExLCAyMTEsIDI0OCwgNDcsIDI3LCAxNiwgMjUwLCAxMSwgMjM0LCA0NSwgNDcsIDI3LCAxNiwgCi0gICAgMjUwLCAxMSwgMjE5LCAxOTcsIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyNDAsIDE0NiwgMjEzLCAxLCAyMTcsIDE4MiwgNDcsIAotICAgIDI3LCAxNiwgMjQzLCAyMDcsIDI0NSwgMTA3LCAyNTMsIDI1MywgNDcsIDI3LCAxNiwgMjEzLCAxLCAyMTYsIDE2NCwgNDcsIAotICAgIDI3LCAxNiwgMjQ3LCAxOTAsIDIxNiwgMTY0LCA0NywgMjcsIDE2LCAyNDcsIDE5MCwgMjE3LCAxODIsIDQ3LCAyNywgMTYsIAotICAgIDI0NywgMTkwLCAyNTMsIDIzNCwgMjQ1LCAyNTMsIDI0NywgOTMsIDQ3LCAyNywgMTYsIDI0NywgMTkwLCAyMzAsIDIxMSwgCi0gICAgMjE3LCAxODYsIDI0NywgOTMsIDQ3LCAyNywgMTYsIDI0NywgMTkwLCAyNDcsIDE3NCwgMjQ1LCAzLCAyNDcsIDkzLCA0NywgCi0gICAgMjcsIDE2LCAyNDcsIDE5MCwgMjE2LCAxNzIsIDIyNywgNzcsIDI0NywgOTMsIDQ3LCAyNywgMTYsIDIxMywgMSwgMjUzLCAKLSAgICAyMzQsIDI0NSwgMjUzLCAyNDcsIDkzLCA0NywgMjcsIDE2LCAyMTMsIDEsIDIzMCwgMjExLCAyMTcsIDE4NiwgMjQ3LCA5MywgCi0gICAgNDcsIDI3LCAxNiwgMjEzLCAxLCAyNDcsIDE3NCwgMjQ1LCAzLCAyNDcsIDkzLCA0NywgMjcsIDE2LCAyMTMsIDEsIDIxNiwgCi0gICAgMTcyLCAyMjcsIDc3LCAyNDcsIDkzLCA0NywgMjcsIDE2LCAyNDMsIDI1LCAyNDcsIDE4OSwgNDcsIDI3LCAxNiwgMjQzLCAKLSAgICAyNSwgMjEzLCAwLCA0NywgMjcsIDE2LCAyNDcsIDE5NywgMjUzLCAyMzQsIDIzMSwgMTIsIDQ3LCAyNywgMTYsIDI0NywgCi0gICAgMTk3LCAyNTMsIDIzNCwgMjMxLCAxMzcsIDQ3LCAyNywgMTYsIDI0NywgMTk3LCAyNDcsIDE1MywgNDcsIDI3LCAxNiwgMjQ3LCAKLSAgICAxOTcsIDIxNywgMTM1LCA0NywgMjcsIDE2LCAyMjAsIDg5LCAyMTcsIDEzNSwgNDcsIDI3LCAxNiwgMjIwLCA4OSwgMjE3LCAKLSAgICAxMzYsIDI0NywgMTM4LCA0NywgMjcsIDE2LCAyMjAsIDg5LCAyMTcsIDEzNiwgMjE2LCAxNjUsIDQ3LCAyNywgMTYsIDIyMCwgCi0gICAgODksIDIxNywgMTM2LCAyMTcsIDE3NSwgNDcsIDI3LCAxNiwgMjIwLCA4OSwgMjUzLCAxNTksIDQ3LCAyNywgMTYsIDIyMCwgCi0gICAgODksIDI1MywgMTYwLCAyNDcsIDEzOCwgNDcsIDI3LCAxNiwgMjIwLCA4OSwgMjUzLCAxNjAsIDIxNiwgMTY1LCA0NywgMjcsIAotICAgIDE2LCAyMjAsIDg5LCAyNTMsIDE2MCwgMjE3LCAxNzUsIDQ3LCAyNywgMTYsIDI0NywgMTc1LCAyNDMsIDYsIDQ3LCAyNywgCi0gICAgMTYsIDI0NywgMTgxLCAyMjcsIDIsIDQ3LCAyNywgMTYsIDIxOSwgNzcsIDQ3LCAyNywgMTYsIDI1MywgMTc4LCAxOTMsIDQ3LCAKLSAgICAyNywgMTYsIDI1MywgMTc4LCAyMTQsIDEwNSwgNDcsIDI3LCAxNiwgMjUzLCAxNzgsIDI0MywgMTEwLCA0NywgMjcsIDE2LCAKLSAgICAyNTMsIDE3OCwgMjQ3LCAyMTEsIDQ3LCAyNywgMTYsIDI1MywgMTc4LCAyMzQsIDE4OCwgNDcsIDI3LCAxNiwgMjUzLCAxNzgsIAotICAgIDIxMiwgMTYsIDQ3LCAyNywgMTYsIDI1MywgMTc4LCAyMjksIDY0LCA0NywgMjcsIDE2LCAyMzQsIDE2OCwgMjI5LCAxNzgsIAotICAgIDIzMSwgMTA5LCA0NywgMjcsIDE2LCAyMzQsIDE2OSwgMjI5LCAxNzgsIDIzMSwgMTA5LCA0NywgMjcsIDE2LCAyMzQsIDE2OCwgCi0gICAgMjI5LCAxNzgsIDIzNCwgMjAxLCA0NywgMjcsIDE2LCAyMzQsIDE2OSwgMjI5LCAxNzgsIDIzNCwgMjAxLCA0NywgMjcsIDE2LCAKLSAgICAyMzQsIDQ3LCAyMzQsIDIwMSwgNDcsIDI3LCAxNiwgMjQyLCAxMzUsIDIyOSwgMTc4LCAyMzQsIDIwMSwgMjcsIDE2LCAyMjAsIAotICAgIDgxLCAyNTIsIDU1LCAyNywgMTYsIDUxLCAyNTIsIDU1LCAyNywgMTYsIDQwLCAyNTIsIDU1LCAyNywgMTYsIDIyMywgMjAzLCAKLSAgICA0MCwgMjUyLCA1NSwgMjcsIDE2LCAyNDgsIDEwMCwgMjUyLCA1NSwgMjcsIDE2LCAyMjAsIDE3NSwgMjUyLCA1NSwgMjcsIAotICAgIDE2LCA0MiwgMjIzLCAyMjgsIDUyLCAyNywgMTYsIDQ2LCAyMjMsIDIyOCwgNTIsIDI3LCAxNiwgMjIzLCAyMjgsIDI0NywgCi0gICAgNzIsIDI3LCAxNiwgMjQ4LCAxNDEsIDIyMiwgODIsIDI3LCAxNiwgMjQ4LCAxNjUsIDI1MCwgMTgxLCAyNywgMTYsIDIyMiwgCi0gICAgODIsIDI3LCAxNiwgMjQ5LCAxNzEsIDI3LCAxNiwgMjIzLCAyMjYsIDI0NCwgODAsIDI3LCAxNiwgMjIzLCAyMjYsIDI0NCwgCi0gICAgNzksIDI3LCAxNiwgMjIzLCAyMjYsIDI0NCwgNzgsIDI3LCAxNiwgMjQ0LCAxMDAsIDI3LCAxNiwgMjQ0LCAxMDEsIDU1LCAKLSAgICAyNywgMTYsIDI1MSwgNzYsIDc3LCAyNywgMTYsIDI1MCwgMjEwLCAyNywgMTYsIDI1MSwgODYsIDI3LCAxNiwgMTI1LCAyNywgCi0gICAgMTYsIDIyNywgNTksIDIxOSwgMTAyLCAyNywgMTYsIDIxNiwgMjMsIDIxOSwgMTAyLCAyNywgMTYsIDIxNywgOTYsIDIxOSwgCi0gICAgMTAyLCAyNywgMTYsIDI0MywgMjM2LCAyMTksIDEwMiwgMjcsIDE2LCAyNDQsIDQ5LCAyMTksIDEwMiwgMjcsIDE2LCAyMjAsIAotICAgIDUyLCAyMTksIDEwMiwgMjcsIDE2LCAyMjAsIDUwLCAyNDMsIDIyMCwgMjcsIDE2LCAyNDMsIDIzNCwgMjQzLCAyMjAsIDI3LCAKLSAgICAxNiwgMjQzLCAxNzgsIDI0OSwgMjA3LCAyNywgMTYsIDI0MywgMTc4LCAyNDksIDIwOCwgMjI3LCA0LCAyNTQsIDUxLCAyNywgCi0gICAgMTYsIDI0MywgMTc4LCAyNDksIDIwOCwgMjI3LCA0LCAyNTIsIDQyLCAyNywgMTYsIDI1MCwgMjUzLCAyNDksIDIwNywgMjcsIAotICAgIDE2LCAyNDQsIDIzMSwgMjQ5LCAyMDcsIDI3LCAxNiwgMjQ0LCAyMzEsIDI0OSwgMjA4LCAyMjcsIDQsIDI1NCwgNTEsIDI3LCAKLSAgICAxNiwgMjQ0LCAyMzEsIDI0OSwgMjA4LCAyMjcsIDQsIDI1MiwgNDIsIDI3LCAxNiwgMjQ2LCAzOCwgMjQ5LCAyMDYsIDI3LCAKLSAgICAxNiwgMjQ2LCAzOCwgMjQ5LCAyMDUsIDI3LCAxNiwgMjMwLCAxNTUsIDIzMSwgMTU1LCAyMjMsIDIxMywgMjcsIDE2LCA1MSwgCi0gICAgMjIwLCAyNTQsIDI3LCAxNiwgNTEsIDI0NCwgMzQsIDI3LCAxNiwgMjQ0LCAzNSwgMjE1LCAxMzQsIDI3LCAxNiwgMjQ0LCAKLSAgICAzNSwgMjQ2LCA2MCwgMjcsIDE2LCAyMzAsIDksIDIxNSwgMTM0LCAyNywgMTYsIDIzMCwgOSwgMjQ2LCA2MCwgMjcsIDE2LCAKLSAgICAyMjAsIDI1NSwgMjE1LCAxMzQsIDI3LCAxNiwgMjIwLCAyNTUsIDI0NiwgNjAsIDI3LCAxNiwgMjI0LCAxNjcsIDE2MCwgCi0gICAgMjIwLCAyNTQsIDI3LCAxNiwgMjI0LCAxNjcsIDE2MCwgMjQ0LCAzNCwgMjcsIDE2LCAyNDksIDE1NSwgMjE3LCA0MCwgMjcsIAotICAgIDE2LCAyNDksIDI3LCAyMTcsIDQwLCAyNywgMTYsIDIyNywgNCwgMjU0LCA1MSwgMjcsIDE2LCAyMjcsIDQsIDI1MiwgNDIsIAotICAgIDI3LCAxNiwgMjI0LCAxNDksIDI1NCwgNTEsIDI3LCAxNiwgMjI0LCAxNDksIDI1MiwgNDIsIDI3LCAxNiwgMjMwLCAxNTgsIAotICAgIDIyMywgMjEzLCAyNywgMTYsIDIxMywgMjM2LCAyMjMsIDIxMywgMjcsIDE2LCAxNTEsIDIyMywgMjEzLCAyNywgMTYsIDIyNCwgCi0gICAgMTY3LCAyMjMsIDIxMywgMjcsIDE2LCAyNDUsIDE0NiwgMjIzLCAyMTMsIDI3LCAxNiwgMjIwLCA0NiwgMjIzLCAyMTMsIDI3LCAKLSAgICAxNiwgMjE3LCAxMTMsIDIyMywgMjEzLCAyNywgMTYsIDIyMCwgMzgsIDIyMywgMjEzLCAyNywgMTYsIDEyMiwgMjQwLCAyMDEsIAotICAgIDIxNiwgMzYsIDIyMywgMjEzLCAyNywgMTYsIDIxMywgMTY3LCAyMjgsIDE1NCwgMjcsIDE2LCA5NCwgMjI4LCAxNTQsIDI3LCAKLSAgICAxNiwgMjQ5LCAyMjksIDIxMywgMTY3LCAyMjgsIDE1NCwgMjcsIDE2LCA0MSwgMjI4LCAxNTUsIDIxMywgMjM4LCAyNywgMTYsIAotICAgIDQxLCAyMjgsIDE1NSwgMjUxLCAxNDQsIDI3LCAxNiwgMjE2LCAxODQsIDIyOCwgMTU1LCAxMTQsIDIxMywgMjM4LCAyNywgCi0gICAgMTYsIDIxNiwgMTg0LCAyMjgsIDE1NSwgMTE0LCAyNTEsIDE0NCwgMjcsIDE2LCAyMTYsIDE4NCwgMjI4LCAxNTUsIDQyLCAKLSAgICAyMTMsIDIzOCwgMjcsIDE2LCAyMTYsIDE4NCwgMjI4LCAxNTUsIDQyLCAyNTEsIDE0NCwgMjcsIDE2LCAyMTYsIDE4NCwgCi0gICAgMjI4LCAxNTUsIDQ2LCAyMTMsIDIzOCwgMjcsIDE2LCAyMTYsIDE4NCwgMjI4LCAxNTUsIDQ2LCAyNTEsIDE0NCwgMjcsIDE2LCAKLSAgICAyMTYsIDE4NCwgMjI4LCAxNTUsIDExOSwgMjEzLCAyMzgsIDI3LCAxNiwgMjE2LCAxODQsIDIyOCwgMTU1LCAxMTksIDI1MSwgCi0gICAgMTQ0LCAyNywgMTYsIDIxNiwgMTg0LCAyMjgsIDE1NSwgMTE0LCA0NiwgMjEzLCAyMzgsIDI3LCAxNiwgMjE2LCAxODQsIAotICAgIDIyOCwgMTU1LCAxMTQsIDQ2LCAyNTEsIDE0NCwgMjcsIDE2LCAyMzAsIDE5OSwgMjI4LCAxNTUsIDIxMywgMjM4LCAyNywgCi0gICAgMTYsIDIzMCwgMTk5LCAyMjgsIDE1NSwgMjUxLCAxNDQsIDI3LCAxNiwgMjE2LCAxODEsIDIyOCwgMTU1LCAxMTksIDIxMywgCi0gICAgMjM4LCAyNywgMTYsIDIxNiwgMTgxLCAyMjgsIDE1NSwgMTE5LCAyNTEsIDE0NCwgMjcsIDE2LCAyMjYsIDEzMiwgMjI4LCAKLSAgICAxNTQsIDI3LCAxNiwgMjE0LCAxMTMsIDIyOCwgMTU0LCAyNywgMTYsIDIyOCwgMTU1LCAyNTEsIDE0NCwgMjcsIDE2LCAyMjgsIAotICAgIDU5LCAyMjgsIDE1NCwgMjcsIDE2LCAyNDksIDE3OCwgMjI4LCAxNTUsIDIxMywgMjM4LCAyNywgMTYsIDI0OSwgMTc4LCAKLSAgICAyMjgsIDE1NSwgMjUxLCAxNDQsIDI3LCAxNiwgMjUxLCA3NCwgMjcsIDE2LCAyMTMsIDIzNiwgMjI4LCAxNTgsIDI3LCAxNiwgCi0gICAgMTUxLCAyMjgsIDE1OCwgMjcsIDE2LCAyMjQsIDE2NywgMjI4LCAxNTgsIDI3LCAxNiwgMjQ1LCAxNDYsIDIyOCwgMTU4LCAKLSAgICAyNywgMTYsIDIyMCwgNDYsIDIyOCwgMTU4LCAyNywgMTYsIDIxNywgMTEzLCAyMjgsIDE1OCwgMjcsIDE2LCAyMjAsIDM4LCAKLSAgICAyMjgsIDE1OCwgMjcsIDE2LCAxMjIsIDI0MCwgMjAxLCAyMTYsIDM2LCAyMjgsIDE1OCwgMjcsIDE2LCAzNywgMjE5LCA3OSwgCi0gICAgMjcsIDE2LCAzNywgMjE5LCAxNzIsIDIxOSwgNzksIDI3LCAxNiwgMzcsIDIxNiwgMTkyLCAyNywgMTYsIDM3LCAyMTYsIAotICAgIDE5MSwgMjcsIDE2LCAzNywgMjE2LCAxOTAsIDI3LCAxNiwgMjQ0LCA3MCwgMjE2LCAxOTIsIDI3LCAxNiwgMjQ0LCA3MCwgCi0gICAgMjE2LCAxOTEsIDI3LCAxNiwgMjQ0LCA3MCwgMjE2LCAxOTAsIDI3LCAxNiwgMzcsIDI1MywgMTA1LCAyNDcsIDc0LCAyNywgCi0gICAgMTYsIDM3LCAyNDQsIDQxLCAyNywgMTYsIDM3LCAyNDQsIDQwLCAyNywgMTYsIDM3LCAyNDQsIDM5LCAyNywgMTYsIDM3LCAKLSAgICAyNDQsIDM4LCAyNywgMTYsIDM3LCAyNDQsIDM3LCAyNywgMTYsIDI1MSwgMjM0LCAyNTEsIDI1MCwgMjcsIDE2LCAyNDUsIAotICAgIDEwMSwgMjUxLCAyNTAsIDI3LCAxNiwgMjUxLCAyMzQsIDIxNywgNjUsIDI3LCAxNiwgMjQ1LCAxMDEsIDIxNywgNjUsIDI3LCAKLSAgICAxNiwgMjUxLCAyMzQsIDIyMCwgOCwgMjcsIDE2LCAyNDUsIDEwMSwgMjIwLCA4LCAyNywgMTYsIDI1MSwgMjM0LCAyMjUsIAotICAgIDI0NywgMjcsIDE2LCAyNDUsIDEwMSwgMjI1LCAyNDcsIDI3LCAxNiwgMzcsIDI1NCwgMTc0LCAyNywgMTYsIDM3LCAyMTksIAotICAgIDEwNCwgMjcsIDE2LCAzNywgMjE3LCAxOTEsIDI3LCAxNiwgMzcsIDIxOSwgMTA1LCAyNywgMTYsIDM3LCAyMzEsIDIyNSwgCi0gICAgMjcsIDE2LCAzNywgMjMxLCAyMjQsIDI3LCAxNiwgMzcsIDI1NCwgMTczLCAyNywgMTYsIDM3LCAyMzIsIDE2NywgMjcsIDE2LCAKLSAgICAyNTMsIDE2OSwgMjE1LCAxMzQsIDI3LCAxNiwgMjUzLCAxNjksIDI0NiwgNjAsIDI3LCAxNiwgMzcsIDI0NywgODksIDI3LCAKLSAgICAxNiwgMzcsIDIyMywgMTI4LCAyNywgMTYsIDM3LCAyNDQsIDI3LCAyNywgMTYsIDM3LCAyMjAsIDQsIDI3LCAxNiwgMzcsIAotICAgIDI1MSwgMjE1LCAyNywgMTYsIDM3LCA1MSwgMjE2LCAyMzIsIDI3LCAxNiwgMzcsIDIxNiwgMTY5LCAyMTYsIDIzMiwgMjcsIAotICAgIDE2LCAyMjMsIDEzMiwgMjcsIDE2LCAyMTksIDIwLCAyNywgMTYsIDIxMiwgMTUyLCAyNywgMTYsIDIyNSwgMjM5LCAyNywgCi0gICAgMTYsIDIzMSwgOTIsIDI3LCAxNiwgMjQzLCAyNDIsIDI3LCAxNiwgMjQ5LCA3OCwgMjcsIDE2LCAyNDgsIDI5LCAyNywgMTYsIAotICAgIDI0MiwgMTI2LCAyMjgsIDE1OSwgMjIwLCAyMywgMjcsIDE2LCAyNDIsIDEyNiwgMjI4LCAxNTksIDIyOCwgMTg2LCAyMjAsIAotICAgIDIzLCAyNywgMTYsIDIxNiwgMjEzLCAyNywgMTYsIDIxNiwgNTksIDI3LCAxNiwgMjM1LCAxOTEsIDIxNiwgNTksIDI3LCAxNiwgCi0gICAgMjE2LCA2MCwgMjIwLCAyMywgMjcsIDE2LCAyMTYsIDYwLCAyMTUsIDEzNCwgMjcsIDE2LCAyMjcsIDE1LCAyMTksIDQ0LCAKLSAgICAyNywgMTYsIDIyNywgMTUsIDIxOSwgNDEsIDI3LCAxNiwgMjI3LCAxNSwgMjE5LCA0MCwgMjcsIDE2LCAyMjcsIDE1LCAyMTksIAotICAgIDM5LCAyNywgMTYsIDIyNywgMTUsIDIxOSwgMzgsIDI3LCAxNiwgMjI3LCAxNSwgMjE5LCAzNywgMjcsIDE2LCAyMjcsIDE1LCAKLSAgICAyMTksIDM2LCAyNywgMTYsIDIyNywgMTUsIDIxOSwgMzUsIDI3LCAxNiwgMjI3LCAxNSwgMjE5LCAzNCwgMjcsIDE2LCAyMjcsIAotICAgIDE1LCAyMTksIDQzLCAyNywgMTYsIDIyNywgMTUsIDIxOSwgNDIsIDI3LCAxNiwgMjQxLCAyMjksIDI3LCAxNiwgMjI5LCAKLSAgICAxODYsIDI3LCAxNiwgMjQ1LCAxMDEsIDY1LCAyMTksIDczLCAyNywgMTYsIDI0OCwgMjIsIDIyMCwgMjMsIDI3LCAxNiwgMzcsIAotICAgIDExOSwgMjUxLCA5NSwgMjcsIDE2LCAzNywgMTE0LCAyNTEsIDk1LCAyNywgMTYsIDM3LCAyNDEsIDIzOSwgMjcsIDE2LCAzNywgCi0gICAgMjE5LCAyNTEsIDIyNSwgMTc1LCAyNywgMTYsIDIyNiwgOTEsIDc3LCAyNywgMTYsIDIyNiwgOTEsIDExNCwgNzcsIDI3LCAKLSAgICAxNiwgMTUxLCAyMjYsIDkxLCA3NywgMjcsIDE2LCAyNDIsIDE1OCwgMjE1LCAxMzQsIDI3LCAxNiwgMjQyLCAxNTgsIDI0NiwgCi0gICAgNjAsIDI3LCAxNiwgMiwgMjQ0LCA2OSwgMjcsIDE2LCAyNDgsIDEyNSwgMjcsIDE2LCAyNDgsIDEyNiwgMjU0LCA2MywgMjcsIAotICAgIDE2LCAyMzEsIDE5NywgMjcsIDE2LCAyMzIsIDE4MiwgMjcsIDE2LCAyNTEsIDcxLCAyNywgMTYsIDIyMSwgNzQsIDIxMywgCi0gICAgMjM4LCAyNywgMTYsIDIyMSwgNzQsIDI1MSwgMTQ0LCAyNywgMTYsIDIzMCwgMjUzLCAyNywgMTYsIDIzMCwgMjU0LCAyNTEsIAotICAgIDE0NCwgMjcsIDE2LCAyMjEsIDY4LCAyMTMsIDIzOCwgMjcsIDE2LCAyMjEsIDY4LCAyNTEsIDE0NCwgMjcsIDE2LCAyNDMsIAotICAgIDE5MiwgMjEzLCAyMzgsIDI3LCAxNiwgMjQzLCAxOTIsIDI1MSwgMTQ0LCAyNywgMTYsIDIzMiwgMTgzLCAyMjYsIDU1LCAKLSAgICAyMjMsIDIxMywgMjcsIDE2LCAyMzIsIDE4MywgMjM2LCAwLCAyMjMsIDIxMywgMjcsIDE2LCAyNTEsIDcyLCAyMjMsIDIxMywgCi0gICAgMjcsIDE2LCAyMjEsIDc0LCAyMjMsIDIxMywgMjcsIDE2LCAyMzAsIDI1NCwgMjIzLCAyMTMsIDI3LCAxNiwgMjIxLCA2OCwgCi0gICAgMjIzLCAyMTMsIDI3LCAxNiwgMjE3LCAyMDIsIDIyNiwgNTMsIDI0OSwgNDgsIDIyNSwgNTgsIDIyNiwgNTQsIDI3LCAxNiwgCi0gICAgMjE3LCAyMDIsIDIyNiwgNTMsIDI0OSwgNDgsIDIyNSwgNTgsIDIzNSwgMjU1LCAyNywgMTYsIDIxNywgMjAyLCAyMjYsIDUzLCAKLSAgICAyNDksIDQ4LCAyMjUsIDU4LCAyMjYsIDU1LCAyNDcsIDE2MywgMjcsIDE2LCAyMTcsIDIwMiwgMjM1LCAyNTQsIDI0OSwgNDgsIAotICAgIDIyNSwgNTgsIDIyNiwgNTQsIDI3LCAxNiwgMjE3LCAyMDIsIDIzNSwgMjU0LCAyNDksIDQ4LCAyMjUsIDU4LCAyMzUsIDI1NSwgCi0gICAgMjcsIDE2LCAyMTcsIDIwMiwgMjM1LCAyNTQsIDI0OSwgNDgsIDIyNSwgNTgsIDIzNiwgMCwgMjQ3LCAxNjMsIDI3LCAxNiwgCi0gICAgMjE3LCAyMDIsIDIzNSwgMjU0LCAyNDksIDQ4LCAyMjUsIDU4LCAyMzYsIDAsIDI0NywgMTYyLCAyNywgMTYsIDIxNywgMjAyLCAKLSAgICAyMzUsIDI1NCwgMjQ5LCA0OCwgMjI1LCA1OCwgMjM2LCAwLCAyNDcsIDE2MSwgMjcsIDE2LCAyNDksIDczLCAyNywgMTYsIAotICAgIDI0MiwgMTAzLCAyNTAsIDI1MywgMjQ5LCAyMDcsIDI3LCAxNiwgMjQyLCAxMDMsIDI0NCwgMjMxLCAyNDksIDIwNywgMjcsIAotICAgIDE2LCA0MSwgMjUzLCA3NCwgMjcsIDE2LCAyMTQsIDEzMiwgMjcsIDE2LCAyMjUsIDE0OCwgMjcsIDE2LCAyNDksIDE5OCwgCi0gICAgMjcsIDE2LCAyMjIsIDEyMSwgMjcsIDE2LCAyNDksIDIwMiwgMjcsIDE2LCAyMTYsIDIyMCwgMjcsIDE2LCAyMjUsIDEyMiwgCi0gICAgMjcsIDE2LCAyMjUsIDEyMywgMjQ0LCAyOSwgMjcsIDE2LCAyMjIsIDEyMiwgMjQ0LCAyOSwgMjcsIDE2LCAyMTYsIDIyMSwgCi0gICAgMjIzLCAyMTAsIDI3LCAxNiwgMjI2LCAzOSwgMjE5LCAxMSwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTc0LCAyNSwgMjE0LCAKLSAgICAxMTgsIDE3NCwgMjE4LCAxNjMsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE1MywgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgCi0gICAgMTQ2LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxMzgsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDEzMiwgMjUsIDIxNCwgCi0gICAgMTE4LCAxNzQsIDIxOCwgMTMxLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxMzAsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIAotICAgIDEyOSwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTczLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNzIsIDI1LCAyMTQsIAotICAgIDExOCwgMTc0LCAyMTgsIDE3MSwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTcwLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAKLSAgICAxNjksIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE2OCwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTY3LCAyNSwgMjE0LCAKLSAgICAxMTgsIDE3NCwgMjE4LCAxNjYsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE2NSwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgCi0gICAgMTY0LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNjIsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE2MSwgMjUsIDIxNCwgCi0gICAgMTE4LCAxNzQsIDIxOCwgMTYwLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNTksIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIAotICAgIDE1OCwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTM3LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxMzYsIDI1LCAyMTQsIAotICAgIDExOCwgMTc0LCAyMTgsIDEzNSwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTM0LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAKLSAgICAxMzMsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE3NCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTYzLCAyNSwgMjM1LCAKLSAgICAyMTEsIDE3NCwgMjE4LCAxNDYsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDEzOCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgCi0gICAgMTMxLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxMzAsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE3MiwgMjUsIDIzNSwgCi0gICAgMjExLCAxNzQsIDIxOCwgMTcxLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNzAsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIAotICAgIDE2OSwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTY2LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNjUsIDI1LCAyMzUsIAotICAgIDIxMSwgMTc0LCAyMTgsIDE2NCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTU5LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAKLSAgICAxNTgsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE1NywgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTU2LCAyNSwgMjM1LCAKLSAgICAyMTEsIDE3NCwgMjE4LCAxNTUsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE1NCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgCi0gICAgMTUyLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNTEsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE1MCwgMjUsIDIzNSwgCi0gICAgMjExLCAxNzQsIDIxOCwgMTQ5LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNDgsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIAotICAgIDE0NywgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTQ1LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNDQsIDI1LCAyMzUsIAotICAgIDIxMSwgMTc0LCAyMTgsIDE0MywgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTQyLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAKLSAgICAxNDEsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE0MCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTM5LCAyNSwgMjM1LCAKLSAgICAyMTEsIDE3NCwgMjE4LCAxMzcsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDEzNiwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgCi0gICAgMTM1LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxMzQsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDEzMywgMzcsIDI1LCAKLSAgICAyNywgMjE2LCAxNjYsIDM3LCAyNSwgMjcsIDIxNywgMTc2LCAzNywgMjUsIDI3LCAyMjYsIDYzLCAyNSwgMjcsIDIzMywgNTUsIAotICAgIDIzMCwgMjEyLCAzMSwgMjQ1LCAxNzksIDI0NywgMTc2LCAzMSwgMjQxLCAyMDYsIDI0NSwgMTc5LCAyNDcsIDE3NiwgMzEsIAotICAgIDI0MCwgMjA0LCAyNDUsIDE3OSwgMjQ3LCAxNzYsIDMxLCAyNDUsIDE3OCwgMjQxLCAyMDcsIDI0NywgMTc2LCAzMSwgMjQ1LCAKLSAgICAxNzgsIDI0MCwgMjAzLCAyNDcsIDE3NiwgMzEsIDI0NSwgMTc5LCAxNzAsIDMxLCAyNTAsIDEwOCwgMTcwLCAzMSwgMjQzLCAKLSAgICAyMDAsIDI0OSwgMjI4LCAxNzAsIDMxLCAyMzAsIDI0NiwgMTcwLCAzMSwgMjUyLCA1MCwgMTcwLCAzMSwgMjM0LCAxODUsIAotICAgIDIyMCwgNywgMTcwLCAzMSwgMjQ5LCAxMTgsIDE3MCwgMzEsIDI1MywgMTQ4LCAxNzAsIDMxLCAyMjcsIDI5LCAxNzAsIDMxLCAKLSAgICAyNTEsIDgwLCAyMjYsIDI1NCwgMTcwLCAzMSwgMjQ4LCAyNCwgMTY3LCAyNDcsIDEzMSwgMTcwLCAzMSwgMjQ3LCAxMjgsIAotICAgIDE3MCwgMzEsIDIxMiwgMjEzLCAxNzAsIDMxLCAyMzUsIDI0MywgMTcwLCAzMSwgMjI2LCA3MiwgMTcwLCAzMSwgMjI0LCAyMCwgCi0gICAgMTcwLCAzMSwgMjQ5LCAxMjgsIDE3MCwgMzEsIDI0MSwgNDYsIDI1MiwgMTAxLCAxNzAsIDMxLCAyMTQsIDQzLCAxNzAsIDMxLCAKLSAgICAyNDQsIDgsIDE3MCwgMzEsIDI1NCwgMTUxLCAxNzAsIDMxLCAyMjMsIDIzOSwgMTcwLCAzMSwgMjIzLCAyMTcsIDE3MCwgMzEsIAotICAgIDI0NSwgMTc3LCAxNzAsIDMxLCAyMzUsIDU2LCAxNzAsIDMxLCAyNDksIDEyMywgMTcwLCAzMSwgMjQ1LCAxMDAsIDE3MCwgCi0gICAgMzEsIDI0NiwgNywgMTcwLCAzMSwgMjUwLCA4MSwgMTcwLCAzMSwgMjQ4LCAzMywgMTcwLCAzMSwgMjIsIDIyMywgMjE2LCAKLSAgICAxNzAsIDMxLCAyMjYsIDIwNSwgMTcwLCAzMSwgMjMzLCA1OCwgMTcwLCAzMSwgMjQ5LCAxOTEsIDE3MCwgMzEsIDIzNCwgODYsIAotICAgIDE3MCwgMzEsIDI0MywgNjIsIDE3MCwgMzEsIDIxOSwgNTIsIDE3MCwgMzEsIDIyNSwgMTYsIDE3MCwgMzEsIDI0MywgMTk5LCAKLSAgICAxNzAsIDMxLCAyMjMsIDIxOCwgMTcwLCAzMSwgMjMzLCA5NSwgMTY3LCAyMzAsIDIyNywgMTcwLCAzMSwgMjIzLCAyMTQsIAotICAgIDE3MCwgMzEsIDI0MiwgMTQ0LCAyMTEsIDIxMSwgMjMxLCAxNDEsIDE3MCwgMzEsIDI0NSwgMTAyLCAxNzAsIDMxLCAyMTksIAotICAgIDY0LCAxNzAsIDMxLCAyNDIsIDEwNSwgMTcwLCAzMSwgMjQ1LCA5NCwgMTcwLCAzMSwgMjI2LCAxMDgsIDE3MCwgMzEsIDIyMywgCi0gICAgMTIyLCAxNzAsIDMxLCAyNDQsIDI4LCAxNzAsIDMxLCAyMTQsIDI0MCwgMTY3LCAyMTQsIDI4LCAxNzAsIDMxLCAyNDksIAotICAgIDEzMiwgMTcwLCAzMSwgMjMxLCAxNTQsIDE3MCwgMzEsIDI0NSwgMjcsIDE3MCwgMzEsIDIxNSwgMTQzLCAxNzAsIDMxLCAKLSAgICAyNDcsIDE2NCwgMTcwLCAzMSwgMjQ5LCAxOTMsIDIzMCwgMTgwLCAxNzAsIDMxLCAyNDIsIDg3LCAxNzAsIDMxLCAyNDMsIAotICAgIDYzLCAyMzUsIDI1MSwgMTcwLCAzMSwgMjMxLCAyMDQsIDE3MCwgMzEsIDI1NCwgMTcwLCAxNzAsIDMxLCAyNDUsIDExNSwgCi0gICAgMTcwLCAzMSwgMjQ2LCA2MywgMTcwLCAzMSwgMjE0LCAyNiwgMTcwLCAzMSwgMjIwLCA3OCwgMTcwLCAzMSwgMjM1LCAyMTksIAotICAgIDE3MCwgMzEsIDI0NywgMjQ5LCAxNzAsIDMxLCAyNDgsIDEwNSwgMTcwLCAzMSwgMjQ3LCAxNjAsIDE3MCwgMzEsIDI0NCwgCi0gICAgMjUyLCAxNzAsIDMxLCAyMjEsIDM2LCAxNzAsIDMxLCAyMTksIDY4LCAxNzAsIDMxLCAyNDEsIDI0MSwgMTcwLCAzMSwgMjQ5LCAKLSAgICAxNTEsIDE3MCwgMzEsIDI0OSwgMTg4LCAxNzAsIDMxLCAyNDQsIDE0NSwgMTcwLCAzMSwgMjU0LCAxMTcsIDE3MCwgMzEsIAotICAgIDI0OSwgMTUwLCAxNzAsIDMxLCAyMjcsIDYzLCAyMTcsIDE0OSwgMjE0LCAyMTksIDE3MCwgMzEsIDI0NywgMTg0LCAxNzAsIAotICAgIDMxLCAyMzMsIDE0NywgMTcwLCAzMSwgMjQzLCAyMzksIDI0OSwgODgsIDIyMywgMTAzLCAyMTUsIDE0NSwgMjEsIDExNiwgCi0gICAgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNSwgMTQ1LCAyMSwgMTA5LCAyNDksIDg4LCAyMjMsIDEwMywgMjE1LCAxNDUsIDIxLCAKLSAgICAxNjYsIDI0OSwgODgsIDIyMywgMTAzLCAyMTUsIDE0NSwgMjEsIDE2MywgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNSwgMTQ1LCAKLSAgICAyMSwgMTgwLCAyNDksIDg4LCAyMjMsIDEwMywgMjE1LCAxNDUsIDIxLCAxODksIDI0OSwgODgsIDIyMywgMTAzLCAyMTUsIAotICAgIDE0NSwgMjEsIDE5OCwgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNSwgMTQ1LCAyMSwgMTk1LCAyNDksIDg4LCAyMjMsIDEwMywgCi0gICAgMjE1LCAxNDUsIDIxLCAyMDAsIDI0OSwgODgsIDIyMywgMTAzLCAyMTcsIDE5NiwgMjEsIDExNiwgMjQ5LCA4OCwgMjIzLCAKLSAgICAxMDMsIDIxNywgMTk2LCAyMSwgMTA5LCAyNDksIDg4LCAyMjMsIDEwMywgMjE3LCAxOTYsIDIxLCAxNjYsIDI0OSwgODgsIAotICAgIDIyMywgMTAzLCAyMTcsIDE5NiwgMjEsIDE2MywgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNywgMTk2LCAyMSwgMTgwLCAyNDksIAotICAgIDg4LCAyMjMsIDEwMywgMjE3LCAxOTYsIDIxLCAxODksIDI0OSwgODgsIDIyMywgMTAzLCAyMTcsIDE5NiwgMjEsIDE5OCwgCi0gICAgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNywgMTk2LCAyMSwgMTk1LCAyNDksIDg4LCAyMjMsIDEwMywgMjE3LCAxOTYsIDIxLCAKLSAgICAyMDAsIDE0LCAyMiwgNiwgNjEsIDE0LCAyMiwgNiwgMjUzLCA3NCwgMTQsIDIyLCA2LCAyNTAsIDI1MiwgMTQsIDIyLCA2LCAKLSAgICAyNDksIDMsIDE0LCAyMiwgNiwgNzQsIDE0LCAyMiwgNiwgMjQ0LCAyMzAsIDE0LCAyMiwgNiwgMjQzLCAxNzcsIDE0LCAyMiwgCi0gICAgNiwgMjQyLCA0MSwgMTQsIDIyLCA2LCA3MiwgMTQsIDIyLCA2LCAyMzUsIDE0MiwgMTQsIDIyLCA2LCAyMzUsIDI3LCAxNCwgCi0gICAgMjIsIDYsIDE1MCwgMTQsIDIyLCA2LCAxODMsIDE0LCAyMiwgNiwgMjA0LCAxNCwgMjIsIDYsIDc1LCAxNCwgMjIsIDYsIAotICAgIDIyNiwgMjI5LCAxNCwgMjIsIDYsIDIyNCwgMjQwLCAxNCwgMjIsIDYsIDE0OSwgMTQsIDIyLCA2LCAxOTcsIDE0LCAyMiwgNiwgCi0gICAgMjE4LCA5OSwgMTQsIDIyLCA2LCA2OSwgMTQsIDIyLCA2LCAyMTUsIDc5LCAxNCwgMjIsIDYsIDIxNCwgODIsIDE0LCAyMiwgCi0gICAgNiwgMjEzLCAxNjYsIDE0LCAyMiwgNiwgMjEzLCAxMDUsIDE0LCAyMiwgNiwgMjEyLCAxNTIsIDE0LCAyMiwgMywgNjEsIDE0LCAKLSAgICAyMiwgMywgMjUzLCA3NCwgMTQsIDIyLCAzLCAyNTAsIDI1MiwgMTQsIDIyLCAzLCAyNDksIDMsIDE0LCAyMiwgMywgNzQsIAotICAgIDE0LCAyMiwgMywgMjQ0LCAyMzAsIDE0LCAyMiwgMywgMjQzLCAxNzcsIDE0LCAyMiwgMywgMjQyLCA0MSwgMTQsIDIyLCAzLCAKLSAgICA3MiwgMTQsIDIyLCAzLCAyMzUsIDE0MiwgMTQsIDIyLCAzLCAyMzUsIDI3LCAxNCwgMjIsIDMsIDE1MCwgMTQsIDIyLCAzLCAKLSAgICAxODMsIDE0LCAyMiwgMywgMjA0LCAxNCwgMjIsIDMsIDc1LCAxNCwgMjIsIDMsIDIyNiwgMjI5LCAxNCwgMjIsIDMsIDIyNCwgCi0gICAgMjQwLCAxNCwgMjIsIDMsIDE0OSwgMTQsIDIyLCAzLCAxOTcsIDE0LCAyMiwgMywgMjE4LCA5OSwgMTQsIDIyLCAzLCA2OSwgCi0gICAgMTQsIDIyLCAzLCAyMTUsIDc5LCAxNCwgMjIsIDMsIDIxNCwgODIsIDE0LCAyMiwgMywgMjEzLCAxNjYsIDE0LCAyMiwgMywgCi0gICAgMjEzLCAxMDUsIDE0LCAyMiwgMywgMjEyLCAxNTIsIDE0LCAzMiwgNiwgNjEsIDE0LCAzMiwgNiwgMjUzLCA3NCwgMTQsIDMyLCAKLSAgICA2LCAyNTAsIDI1MiwgMTQsIDMyLCA2LCAyNDksIDMsIDE0LCAzMiwgNiwgNzQsIDE0LCAzMiwgNiwgMjQ0LCAyMzAsIDE0LCAKLSAgICAzMiwgNiwgMjQzLCAxNzcsIDE0LCAzMiwgNiwgMjQyLCA0MSwgMTQsIDMyLCA2LCA3MiwgMTQsIDMyLCA2LCAyMzUsIDE0MiwgCi0gICAgMTQsIDMyLCA2LCAyMzUsIDI3LCAxNCwgMzIsIDYsIDE1MCwgMTQsIDMyLCA2LCAxODMsIDE0LCAzMiwgNiwgMjA0LCAxNCwgCi0gICAgMzIsIDYsIDc1LCAxNCwgMzIsIDYsIDIyNiwgMjI5LCAxNCwgMzIsIDYsIDIyNCwgMjQwLCAxNCwgMzIsIDYsIDE0OSwgMTQsIAotICAgIDMyLCA2LCAxOTcsIDE0LCAzMiwgNiwgMjE4LCA5OSwgMTQsIDMyLCA2LCA2OSwgMTQsIDMyLCA2LCAyMTUsIDc5LCAxNCwgCi0gICAgMzIsIDYsIDIxNCwgODIsIDE0LCAzMiwgNiwgMjEzLCAxNjYsIDE0LCAzMiwgNiwgMjEzLCAxMDUsIDE0LCAzMiwgNiwgMjEyLCAKLSAgICAxNTIsIDE0LCAzMiwgMywgNjEsIDE0LCAzMiwgMywgMjUzLCA3NCwgMTQsIDMyLCAzLCAyNTAsIDI1MiwgMTQsIDMyLCAzLCAKLSAgICAyNDksIDMsIDE0LCAzMiwgMywgNzQsIDE0LCAzMiwgMywgMjQ0LCAyMzAsIDE0LCAzMiwgMywgMjQzLCAxNzcsIDE0LCAzMiwgCi0gICAgMywgNzIsIDE0LCAzMiwgMywgMjM1LCAxNDIsIDE0LCAzMiwgMywgMjM1LCAyNywgMTQsIDMyLCAzLCAxNTAsIDE0LCAzMiwgCi0gICAgMywgMTgzLCAxNCwgMzIsIDMsIDIwNCwgMTQsIDMyLCAzLCA3NSwgMTQsIDMyLCAzLCAyMjYsIDIyOSwgMTQsIDMyLCAzLCAKLSAgICAyMjQsIDI0MCwgMTQsIDMyLCAzLCAxNDksIDE0LCAzMiwgMywgMTk3LCAxNCwgMzIsIDMsIDIxOCwgOTksIDE0LCAzMiwgMywgCi0gICAgNjksIDE0LCAzMiwgMywgMjE1LCA3OSwgMTQsIDMyLCAzLCAyMTQsIDgyLCAxNCwgMzIsIDMsIDIxMywgMTY2LCAxNCwgMzIsIAotICAgIDMsIDIxMywgMTA1LCAxNCwgMzIsIDMsIDIxMiwgMTUyLCAxNCwgMjIsIDMyLCA2LCA2MSwgMTQsIDIyLCAzMiwgNiwgMjUzLCAKLSAgICA3NCwgMTQsIDIyLCAzMiwgNiwgMjUwLCAyNTIsIDE0LCAyMiwgMzIsIDYsIDI0OSwgMywgMTQsIDIyLCAzMiwgNiwgNzQsIAotICAgIDE0LCAyMiwgMzIsIDYsIDI0NCwgMjMwLCAxNCwgMjIsIDMyLCA2LCAyNDMsIDE3NywgMTQsIDIyLCAzMiwgNiwgMjQyLCA0MSwgCi0gICAgMTQsIDIyLCAzMiwgNiwgNzIsIDE0LCAyMiwgMzIsIDYsIDIzNSwgMTQyLCAxNCwgMjIsIDMyLCA2LCAyMzUsIDI3LCAxNCwgCi0gICAgMjIsIDMyLCA2LCAxNTAsIDE0LCAyMiwgMzIsIDYsIDE4MywgMTQsIDIyLCAzMiwgNiwgMjA0LCAxNCwgMjIsIDMyLCA2LCAKLSAgICA3NSwgMTQsIDIyLCAzMiwgNiwgMjI2LCAyMjksIDE0LCAyMiwgMzIsIDYsIDIyNCwgMjQwLCAxNCwgMjIsIDMyLCA2LCAxNDksIAotICAgIDE0LCAyMiwgMzIsIDYsIDE5NywgMTQsIDIyLCAzMiwgNiwgMjE4LCA5OSwgMTQsIDIyLCAzMiwgNiwgNjksIDE0LCAyMiwgCi0gICAgMzIsIDYsIDIxNSwgNzksIDE0LCAyMiwgMzIsIDYsIDIxNCwgODIsIDE0LCAyMiwgMzIsIDYsIDIxMywgMTY2LCAxNCwgMjIsIAotICAgIDMyLCA2LCAyMTMsIDEwNSwgMTQsIDIyLCAzMiwgNiwgMjEyLCAxNTIsIDE0LCAyMiwgMzIsIDMsIDYxLCAxNCwgMjIsIDMyLCAKLSAgICAzLCAyNTMsIDc0LCAxNCwgMjIsIDMyLCAzLCAyNTAsIDI1MiwgMTQsIDIyLCAzMiwgMywgMjQ5LCAzLCAxNCwgMjIsIDMyLCAKLSAgICAzLCA3NCwgMTQsIDIyLCAzMiwgMywgMjQ0LCAyMzAsIDE0LCAyMiwgMzIsIDMsIDI0MywgMTc3LCAxNCwgMjIsIDMyLCAzLCAKLSAgICAyNDIsIDQxLCAxNCwgMjIsIDMyLCAzLCA3MiwgMTQsIDIyLCAzMiwgMywgMjM1LCAxNDIsIDE0LCAyMiwgMzIsIDMsIDIzNSwgCi0gICAgMjcsIDE0LCAyMiwgMzIsIDMsIDE1MCwgMTQsIDIyLCAzMiwgMywgMTgzLCAxNCwgMjIsIDMyLCAzLCAyMDQsIDE0LCAyMiwgCi0gICAgMzIsIDMsIDc1LCAxNCwgMjIsIDMyLCAzLCAyMjYsIDIyOSwgMTQsIDIyLCAzMiwgMywgMjI0LCAyNDAsIDE0LCAyMiwgMzIsIAotICAgIDMsIDE0OSwgMTQsIDIyLCAzMiwgMywgMTk3LCAxNCwgMjIsIDMyLCAzLCAyMTgsIDk5LCAxNCwgMjIsIDMyLCAzLCA2OSwgCi0gICAgMTQsIDIyLCAzMiwgMywgMjE1LCA3OSwgMTQsIDIyLCAzMiwgMywgMjE0LCA4MiwgMTQsIDIyLCAzMiwgMywgMjEzLCAxNjYsIAotICAgIDE0LCAyMiwgMzIsIDMsIDIxMywgMTA1LCAxNCwgMjIsIDMyLCAzLCAyMTIsIDE1MiwgMTQsIDExMywgNiwgNjEsIDE0LCAKLSAgICAxMTMsIDYsIDI1MCwgMjUyLCAxNCwgMTEzLCA2LCAyNDksIDMsIDE0LCAxMTMsIDYsIDI0MywgMTc3LCAxNCwgMTEzLCA2LCAKLSAgICAyMzUsIDE0MiwgMTQsIDExMywgNiwgMjM1LCAyNywgMTQsIDExMywgNiwgMjA0LCAxNCwgMTEzLCA2LCA3NSwgMTQsIDExMywgCi0gICAgNiwgMjI2LCAyMjksIDE0LCAxMTMsIDYsIDIyNCwgMjQwLCAxNCwgMTEzLCA2LCAxOTcsIDE0LCAxMTMsIDYsIDIxOCwgOTksIAotICAgIDE0LCAxMTMsIDYsIDY5LCAxNCwgMTEzLCA2LCAyMTUsIDc5LCAxNCwgMTEzLCA2LCAyMTQsIDgyLCAxNCwgMTEzLCA2LCAKLSAgICAyMTMsIDE2NiwgMTQsIDExMywgNiwgMjEzLCAxMDUsIDE0LCAxMTMsIDYsIDIxMiwgMTUyLCAxNCwgMTEzLCAzLCA2MSwgMTQsIAotICAgIDExMywgMywgMjUzLCA3NCwgMTQsIDExMywgMywgMjUwLCAyNTIsIDE0LCAxMTMsIDMsIDI0OSwgMywgMTQsIDExMywgMywgCi0gICAgMjQ0LCAyMzAsIDE0LCAxMTMsIDMsIDI0MiwgNDEsIDE0LCAxMTMsIDMsIDcyLCAxNCwgMTEzLCAzLCAyMzUsIDE0MiwgMTQsIAotICAgIDExMywgMywgMjM1LCAyNywgMTQsIDExMywgMywgMTUwLCAxNCwgMTEzLCAzLCAxODMsIDE0LCAxMTMsIDMsIDIwNCwgMTQsIAotICAgIDExMywgMywgMjI2LCAyMjksIDE0LCAxMTMsIDMsIDIyNCwgMjQwLCAxNCwgMTEzLCAzLCAxNDksIDE0LCAxMTMsIDMsIDE5NywgCi0gICAgMTQsIDExMywgMywgMjE4LCA5OSwgMTQsIDExMywgMywgNjksIDE0LCAxMTMsIDMsIDIxNSwgNzksIDE0LCAxMTMsIDMsIAotICAgIDIxNCwgODIsIDE0LCAxMTMsIDMsIDIxMywgMTY2LCAxNCwgMTEzLCAzLCAyMTMsIDEwNSwgMTQsIDExMywgMywgMjEyLCAKLSAgICAxNTIsIDE0LCAyMiwgMTEzLCA2LCA2MSwgMTQsIDIyLCAxMTMsIDYsIDI1MywgNzQsIDE0LCAyMiwgMTEzLCA2LCAyNTAsIAotICAgIDI1MiwgMTQsIDIyLCAxMTMsIDYsIDI0OSwgMywgMTQsIDIyLCAxMTMsIDYsIDc0LCAxNCwgMjIsIDExMywgNiwgMjQ0LCAKLSAgICAyMzAsIDE0LCAyMiwgMTEzLCA2LCAyNDMsIDE3NywgMTQsIDIyLCAxMTMsIDYsIDI0MiwgNDEsIDE0LCAyMiwgMTEzLCA2LCAKLSAgICA3MiwgMTQsIDIyLCAxMTMsIDYsIDIzNSwgMTQyLCAxNCwgMjIsIDExMywgNiwgMjM1LCAyNywgMTQsIDIyLCAxMTMsIDYsIAotICAgIDE1MCwgMTQsIDIyLCAxMTMsIDYsIDE4MywgMTQsIDIyLCAxMTMsIDYsIDIwNCwgMTQsIDIyLCAxMTMsIDYsIDc1LCAxNCwgCi0gICAgMjIsIDExMywgNiwgMjI2LCAyMjksIDE0LCAyMiwgMTEzLCA2LCAyMjQsIDI0MCwgMTQsIDIyLCAxMTMsIDYsIDE0OSwgMTQsIAotICAgIDIyLCAxMTMsIDYsIDE5NywgMTQsIDIyLCAxMTMsIDYsIDIxOCwgOTksIDE0LCAyMiwgMTEzLCA2LCA2OSwgMTQsIDIyLCAKLSAgICAxMTMsIDYsIDIxNSwgNzksIDE0LCAyMiwgMTEzLCA2LCAyMTQsIDgyLCAxNCwgMjIsIDExMywgNiwgMjEzLCAxNjYsIDE0LCAKLSAgICAyMiwgMTEzLCA2LCAyMTMsIDEwNSwgMTQsIDIyLCAxMTMsIDYsIDIxMiwgMTUyLCAxNCwgMjIsIDExMywgMywgNjEsIDE0LCAKLSAgICAyMiwgMTEzLCAzLCAyNTMsIDc0LCAxNCwgMjIsIDExMywgMywgMjUwLCAyNTIsIDE0LCAyMiwgMTEzLCAzLCAyNDksIDMsIAotICAgIDE0LCAyMiwgMTEzLCAzLCA3NCwgMTQsIDIyLCAxMTMsIDMsIDI0NCwgMjMwLCAxNCwgMjIsIDExMywgMywgMjQzLCAxNzcsIAotICAgIDE0LCAyMiwgMTEzLCAzLCAyNDIsIDQxLCAxNCwgMjIsIDExMywgMywgNzIsIDE0LCAyMiwgMTEzLCAzLCAyMzUsIDE0MiwgCi0gICAgMTQsIDIyLCAxMTMsIDMsIDIzNSwgMjcsIDE0LCAyMiwgMTEzLCAzLCAxNTAsIDE0LCAyMiwgMTEzLCAzLCAxODMsIDE0LCAKLSAgICAyMiwgMTEzLCAzLCAyMDQsIDE0LCAyMiwgMTEzLCAzLCA3NSwgMTQsIDIyLCAxMTMsIDMsIDIyNiwgMjI5LCAxNCwgMjIsIAotICAgIDExMywgMywgMjI0LCAyNDAsIDE0LCAyMiwgMTEzLCAzLCAxNDksIDE0LCAyMiwgMTEzLCAzLCAxOTcsIDE0LCAyMiwgMTEzLCAKLSAgICAzLCAyMTgsIDk5LCAxNCwgMjIsIDExMywgMywgNjksIDE0LCAyMiwgMTEzLCAzLCAyMTUsIDc5LCAxNCwgMjIsIDExMywgMywgCi0gICAgMjE0LCA4MiwgMTQsIDIyLCAxMTMsIDMsIDIxMywgMTY2LCAxNCwgMjIsIDExMywgMywgMjEzLCAxMDUsIDE0LCAyMiwgMTEzLCAKLSAgICAzLCAyMTIsIDE1MiwgMTQsIDEyOSwgNiwgNjEsIDE0LCAxMjksIDYsIDI1MywgNzQsIDE0LCAxMjksIDYsIDI0OSwgMywgMTQsIAotICAgIDEyOSwgNiwgNzQsIDE0LCAxMjksIDYsIDI0NCwgMjMwLCAxNCwgMTI5LCA2LCAyNDMsIDE3NywgMTQsIDEyOSwgNiwgMjM1LCAKLSAgICAxNDIsIDE0LCAxMjksIDYsIDIzNSwgMjcsIDE0LCAxMjksIDYsIDE1MCwgMTQsIDEyOSwgNiwgMTgzLCAxNCwgMTI5LCA2LCAKLSAgICAyMDQsIDE0LCAxMjksIDYsIDc1LCAxNCwgMTI5LCA2LCAyMjYsIDIyOSwgMTQsIDEyOSwgNiwgMjI0LCAyNDAsIDE0LCAxMjksIAotICAgIDYsIDE5NywgMTQsIDEyOSwgNiwgMjE4LCA5OSwgMTQsIDEyOSwgNiwgNjksIDE0LCAxMjksIDYsIDIxNSwgNzksIDE0LCAKLSAgICAxMjksIDYsIDIxNCwgODIsIDE0LCAxMjksIDYsIDIxMywgMTY2LCAxNCwgMTI5LCA2LCAyMTMsIDEwNSwgMTQsIDEyOSwgMywgCi0gICAgNjEsIDE0LCAxMjksIDMsIDI1MywgNzQsIDE0LCAxMjksIDMsIDI1MCwgMjUyLCAxNCwgMTI5LCAzLCAyNDksIDMsIDE0LCAKLSAgICAxMjksIDMsIDc0LCAxNCwgMTI5LCAzLCAyNDQsIDIzMCwgMTQsIDEyOSwgMywgMjQzLCAxNzcsIDE0LCAxMjksIDMsIDI0MiwgCi0gICAgNDEsIDE0LCAxMjksIDMsIDcyLCAxNCwgMTI5LCAzLCAyMzUsIDE0MiwgMTQsIDEyOSwgMywgMjM1LCAyNywgMTQsIDEyOSwgCi0gICAgMywgMTUwLCAxNCwgMTI5LCAzLCAxODMsIDE0LCAxMjksIDMsIDIwNCwgMTQsIDEyOSwgMywgNzUsIDE0LCAxMjksIDMsIAotICAgIDIyNiwgMjI5LCAxNCwgMTI5LCAzLCAyMjQsIDI0MCwgMTQsIDEyOSwgMywgMTQ5LCAxNCwgMTI5LCAzLCAxOTcsIDE0LCAKLSAgICAxMjksIDMsIDIxOCwgOTksIDE0LCAxMjksIDMsIDY5LCAxNCwgMTI5LCAzLCAyMTUsIDc5LCAxNCwgMTI5LCAzLCAyMTQsIAotICAgIDgyLCAxNCwgMTI5LCAzLCAyMTMsIDE2NiwgMTQsIDEyOSwgMywgMjEzLCAxMDUsIDE0LCAxMjksIDMsIDIxMiwgMTUyLCAxNCwgCi0gICAgMTg3LCA2LCA2MSwgMTQsIDE4NywgNiwgMjUzLCA3NCwgMTQsIDE4NywgNiwgMjQ5LCAzLCAxNCwgMTg3LCA2LCA3NCwgMTQsIAotICAgIDE4NywgNiwgMjQ0LCAyMzAsIDE0LCAxODcsIDYsIDI0MywgMTc3LCAxNCwgMTg3LCA2LCA3MiwgMTQsIDE4NywgNiwgMjM1LCAKLSAgICAxNDIsIDE0LCAxODcsIDYsIDIzNSwgMjcsIDE0LCAxODcsIDYsIDE1MCwgMTQsIDE4NywgNiwgMTgzLCAxNCwgMTg3LCA2LCAKLSAgICA3NSwgMTQsIDE4NywgNiwgMTk3LCAxNCwgMTg3LCA2LCAyMTgsIDk5LCAxNCwgMTg3LCA2LCA2OSwgMTQsIDE4NywgNiwgCi0gICAgMjE1LCA3OSwgMTQsIDE4NywgNiwgMjE0LCA4MiwgMTQsIDE4NywgNiwgMjEzLCAxNjYsIDE0LCAxODcsIDYsIDIxMywgMTA1LCAKLSAgICAxNCwgMTg3LCAzLCA2MSwgMTQsIDE4NywgMywgMjUzLCA3NCwgMTQsIDE4NywgMywgMjUwLCAyNTIsIDE0LCAxODcsIDMsIAotICAgIDI0OSwgMywgMTQsIDE4NywgMywgNzQsIDE0LCAxODcsIDMsIDI0NCwgMjMwLCAxNCwgMTg3LCAzLCAyNDMsIDE3NywgMTQsIAotICAgIDE4NywgMywgMjQyLCA0MSwgMTQsIDE4NywgMywgNzIsIDE0LCAxODcsIDMsIDIzNSwgMTQyLCAxNCwgMTg3LCAzLCAyMzUsIAotICAgIDI3LCAxNCwgMTg3LCAzLCAxNTAsIDE0LCAxODcsIDMsIDE4MywgMTQsIDE4NywgMywgMjA0LCAxNCwgMTg3LCAzLCA3NSwgCi0gICAgMTQsIDE4NywgMywgMjI2LCAyMjksIDE0LCAxODcsIDMsIDIyNCwgMjQwLCAxNCwgMTg3LCAzLCAxNDksIDE0LCAxODcsIDMsIAotICAgIDE5NywgMTQsIDE4NywgMywgMjE4LCA5OSwgMTQsIDE4NywgMywgNjksIDE0LCAxODcsIDMsIDIxNSwgNzksIDE0LCAxODcsIAotICAgIDMsIDIxNCwgODIsIDE0LCAxODcsIDMsIDIxMywgMTY2LCAxNCwgMTg3LCAzLCAyMTMsIDEwNSwgMTQsIDE4NywgMywgMjEyLCAKLSAgICAxNTIsIDE0LCAyMiwgMTI5LCA2LCA2MSwgMTQsIDIyLCAxMjksIDYsIDI1MywgNzQsIDE0LCAyMiwgMTI5LCA2LCAyNTAsIAotICAgIDI1MiwgMTQsIDIyLCAxMjksIDYsIDI0OSwgMywgMTQsIDIyLCAxMjksIDYsIDc0LCAxNCwgMjIsIDEyOSwgNiwgMjQ0LCAKLSAgICAyMzAsIDE0LCAyMiwgMTI5LCA2LCAyNDMsIDE3NywgMTQsIDIyLCAxMjksIDYsIDI0MiwgNDEsIDE0LCAyMiwgMTI5LCA2LCAKLSAgICA3MiwgMTQsIDIyLCAxMjksIDYsIDIzNSwgMTQyLCAxNCwgMjIsIDEyOSwgNiwgMjM1LCAyNywgMTQsIDIyLCAxMjksIDYsIAotICAgIDE1MCwgMTQsIDIyLCAxMjksIDYsIDE4MywgMTQsIDIyLCAxMjksIDYsIDIwNCwgMTQsIDIyLCAxMjksIDYsIDc1LCAxNCwgCi0gICAgMjIsIDEyOSwgNiwgMjI2LCAyMjksIDE0LCAyMiwgMTI5LCA2LCAyMjQsIDI0MCwgMTQsIDIyLCAxMjksIDYsIDE0OSwgMTQsIAotICAgIDIyLCAxMjksIDYsIDE5NywgMTQsIDIyLCAxMjksIDYsIDIxOCwgOTksIDE0LCAyMiwgMTI5LCA2LCA2OSwgMTQsIDIyLCAKLSAgICAxMjksIDYsIDIxNSwgNzksIDE0LCAyMiwgMTI5LCA2LCAyMTQsIDgyLCAxNCwgMjIsIDEyOSwgNiwgMjEzLCAxNjYsIDE0LCAKLSAgICAyMiwgMTI5LCA2LCAyMTMsIDEwNSwgMTQsIDIyLCAxMjksIDYsIDIxMiwgMTUyLCAxNCwgMjIsIDEyOSwgMywgNjEsIDE0LCAKLSAgICAyMiwgMTI5LCAzLCAyNTMsIDc0LCAxNCwgMjIsIDEyOSwgMywgMjUwLCAyNTIsIDE0LCAyMiwgMTI5LCAzLCAyNDksIDMsIAotICAgIDE0LCAyMiwgMTI5LCAzLCA3NCwgMTQsIDIyLCAxMjksIDMsIDI0NCwgMjMwLCAxNCwgMjIsIDEyOSwgMywgMjQzLCAxNzcsIAotICAgIDE0LCAyMiwgMTI5LCAzLCAyNDIsIDQxLCAxNCwgMjIsIDEyOSwgMywgNzIsIDE0LCAyMiwgMTI5LCAzLCAyMzUsIDE0MiwgCi0gICAgMTQsIDIyLCAxMjksIDMsIDIzNSwgMjcsIDE0LCAyMiwgMTI5LCAzLCAxNTAsIDE0LCAyMiwgMTI5LCAzLCAxODMsIDE0LCAKLSAgICAyMiwgMTI5LCAzLCAyMDQsIDE0LCAyMiwgMTI5LCAzLCA3NSwgMTQsIDIyLCAxMjksIDMsIDIyNiwgMjI5LCAxNCwgMjIsIAotICAgIDEyOSwgMywgMjI0LCAyNDAsIDE0LCAyMiwgMTI5LCAzLCAxNDksIDE0LCAyMiwgMTI5LCAzLCAxOTcsIDE0LCAyMiwgMTI5LCAKLSAgICAzLCAyMTgsIDk5LCAxNCwgMjIsIDEyOSwgMywgNjksIDE0LCAyMiwgMTI5LCAzLCAyMTUsIDc5LCAxNCwgMjIsIDEyOSwgMywgCi0gICAgMjE0LCA4MiwgMTQsIDIyLCAxMjksIDMsIDIxMywgMTY2LCAxNCwgMjIsIDEyOSwgMywgMjEzLCAxMDUsIDE0LCAyMiwgMTI5LCAKLSAgICAzLCAyMTIsIDE1MiwgMTQsIDM1LCA2LCA2MSwgMTQsIDM1LCA2LCAyNTMsIDc0LCAxNCwgMzUsIDYsIDI1MCwgMjUyLCAxNCwgCi0gICAgMzUsIDYsIDI0OSwgMywgMTQsIDM1LCA2LCA3NCwgMTQsIDM1LCA2LCAyNDQsIDIzMCwgMTQsIDM1LCA2LCAyNDMsIDE3NywgCi0gICAgMTQsIDM1LCA2LCAyNDIsIDQxLCAxNCwgMzUsIDYsIDcyLCAxNCwgMzUsIDYsIDIzNSwgMTQyLCAxNCwgMzUsIDYsIDIzNSwgCi0gICAgMjcsIDE0LCAzNSwgNiwgMTUwLCAxNCwgMzUsIDYsIDE4MywgMTQsIDM1LCA2LCAyMDQsIDE0LCAzNSwgNiwgNzUsIDE0LCAKLSAgICAzNSwgNiwgMjI2LCAyMjksIDE0LCAzNSwgNiwgMjI0LCAyNDAsIDE0LCAzNSwgNiwgMTQ5LCAxNCwgMzUsIDYsIDE5NywgMTQsIAotICAgIDM1LCA2LCAyMTgsIDk5LCAxNCwgMzUsIDYsIDY5LCAxNCwgMzUsIDYsIDIxNSwgNzksIDE0LCAzNSwgNiwgMjE0LCA4MiwgCi0gICAgMTQsIDM1LCA2LCAyMTMsIDE2NiwgMTQsIDM1LCA2LCAyMTMsIDEwNSwgMTQsIDM1LCA2LCAyMTIsIDE1MiwgMTQsIDM1LCAzLCAKLSAgICA2MSwgMTQsIDM1LCAzLCAyNTMsIDc0LCAxNCwgMzUsIDMsIDI1MCwgMjUyLCAxNCwgMzUsIDMsIDI0OSwgMywgMTQsIDM1LCAKLSAgICAzLCA3NCwgMTQsIDM1LCAzLCAyNDQsIDIzMCwgMTQsIDM1LCAzLCAyNDMsIDE3NywgMTQsIDM1LCAzLCAyNDIsIDQxLCAxNCwgCi0gICAgMzUsIDMsIDcyLCAxNCwgMzUsIDMsIDIzNSwgMTQyLCAxNCwgMzUsIDMsIDIzNSwgMjcsIDE0LCAzNSwgMywgMTUwLCAxNCwgCi0gICAgMzUsIDMsIDE4MywgMTQsIDM1LCAzLCAyMDQsIDE0LCAzNSwgMywgNzUsIDE0LCAzNSwgMywgMjI2LCAyMjksIDE0LCAzNSwgCi0gICAgMywgMjI0LCAyNDAsIDE0LCAzNSwgMywgMTQ5LCAxNCwgMzUsIDMsIDE5NywgMTQsIDM1LCAzLCAyMTgsIDk5LCAxNCwgMzUsIAotICAgIDMsIDY5LCAxNCwgMzUsIDMsIDIxNSwgNzksIDE0LCAzNSwgMywgMjE0LCA4MiwgMTQsIDM1LCAzLCAyMTMsIDE2NiwgMTQsIAotICAgIDM1LCAzLCAyMTMsIDEwNSwgMTQsIDM1LCAzLCAyMTIsIDE1MiwgMTQsIDM1LCAyMiwgNiwgNjEsIDE0LCAzNSwgMjIsIDYsIAotICAgIDI1MywgNzQsIDE0LCAzNSwgMjIsIDYsIDI1MCwgMjUyLCAxNCwgMzUsIDIyLCA2LCAyNDksIDMsIDE0LCAzNSwgMjIsIDYsIAotICAgIDc0LCAxNCwgMzUsIDIyLCA2LCAyNDQsIDIzMCwgMTQsIDM1LCAyMiwgNiwgMjQzLCAxNzcsIDE0LCAzNSwgMjIsIDYsIDI0MiwgCi0gICAgNDEsIDE0LCAzNSwgMjIsIDYsIDcyLCAxNCwgMzUsIDIyLCA2LCAyMzUsIDE0MiwgMTQsIDM1LCAyMiwgNiwgMjM1LCAyNywgCi0gICAgMTQsIDM1LCAyMiwgNiwgMTUwLCAxNCwgMzUsIDIyLCA2LCAxODMsIDE0LCAzNSwgMjIsIDYsIDIwNCwgMTQsIDM1LCAyMiwgCi0gICAgNiwgNzUsIDE0LCAzNSwgMjIsIDYsIDIyNiwgMjI5LCAxNCwgMzUsIDIyLCA2LCAyMjQsIDI0MCwgMTQsIDM1LCAyMiwgNiwgCi0gICAgMTQ5LCAxNCwgMzUsIDIyLCA2LCAxOTcsIDE0LCAzNSwgMjIsIDYsIDIxOCwgOTksIDE0LCAzNSwgMjIsIDYsIDY5LCAxNCwgCi0gICAgMzUsIDIyLCA2LCAyMTUsIDc5LCAxNCwgMzUsIDIyLCA2LCAyMTQsIDgyLCAxNCwgMzUsIDIyLCA2LCAyMTMsIDE2NiwgMTQsIAotICAgIDM1LCAyMiwgNiwgMjEzLCAxMDUsIDE0LCAzNSwgMjIsIDYsIDIxMiwgMTUyLCAxNCwgMzUsIDIyLCAzLCA2MSwgMTQsIDM1LCAKLSAgICAyMiwgMywgMjUzLCA3NCwgMTQsIDM1LCAyMiwgMywgMjUwLCAyNTIsIDE0LCAzNSwgMjIsIDMsIDI0OSwgMywgMTQsIDM1LCAKLSAgICAyMiwgMywgNzQsIDE0LCAzNSwgMjIsIDMsIDI0NCwgMjMwLCAxNCwgMzUsIDIyLCAzLCAyNDMsIDE3NywgMTQsIDM1LCAyMiwgCi0gICAgMywgMjQyLCA0MSwgMTQsIDM1LCAyMiwgMywgNzIsIDE0LCAzNSwgMjIsIDMsIDIzNSwgMTQyLCAxNCwgMzUsIDIyLCAzLCAKLSAgICAyMzUsIDI3LCAxNCwgMzUsIDIyLCAzLCAxNTAsIDE0LCAzNSwgMjIsIDMsIDE4MywgMTQsIDM1LCAyMiwgMywgMjA0LCAxNCwgCi0gICAgMzUsIDIyLCAzLCA3NSwgMTQsIDM1LCAyMiwgMywgMjI2LCAyMjksIDE0LCAzNSwgMjIsIDMsIDIyNCwgMjQwLCAxNCwgMzUsIAotICAgIDIyLCAzLCAxNDksIDE0LCAzNSwgMjIsIDMsIDE5NywgMTQsIDM1LCAyMiwgMywgMjE4LCA5OSwgMTQsIDM1LCAyMiwgMywgCi0gICAgNjksIDE0LCAzNSwgMjIsIDMsIDIxNSwgNzksIDE0LCAzNSwgMjIsIDMsIDIxNCwgODIsIDE0LCAzNSwgMjIsIDMsIDIxMywgCi0gICAgMTY2LCAxNCwgMzUsIDIyLCAzLCAyMTMsIDEwNSwgMTQsIDM1LCAyMiwgMywgMjEyLCAxNTIsIDE0LCAzNSwgMzIsIDYsIDYxLCAKLSAgICAxNCwgMzUsIDMyLCA2LCAyNTMsIDc0LCAxNCwgMzUsIDMyLCA2LCAyNTAsIDI1MiwgMTQsIDM1LCAzMiwgNiwgMjQ5LCAzLCAKLSAgICAxNCwgMzUsIDMyLCA2LCA3NCwgMTQsIDM1LCAzMiwgNiwgMjQ0LCAyMzAsIDE0LCAzNSwgMzIsIDYsIDI0MywgMTc3LCAxNCwgCi0gICAgMzUsIDMyLCA2LCAyNDIsIDQxLCAxNCwgMzUsIDMyLCA2LCA3MiwgMTQsIDM1LCAzMiwgNiwgMjM1LCAxNDIsIDE0LCAzNSwgCi0gICAgMzIsIDYsIDIzNSwgMjcsIDE0LCAzNSwgMzIsIDYsIDE1MCwgMTQsIDM1LCAzMiwgNiwgMTgzLCAxNCwgMzUsIDMyLCA2LCAKLSAgICAyMDQsIDE0LCAzNSwgMzIsIDYsIDc1LCAxNCwgMzUsIDMyLCA2LCAyMjYsIDIyOSwgMTQsIDM1LCAzMiwgNiwgMjI0LCAyNDAsIAotICAgIDE0LCAzNSwgMzIsIDYsIDE0OSwgMTQsIDM1LCAzMiwgNiwgMTk3LCAxNCwgMzUsIDMyLCA2LCAyMTgsIDk5LCAxNCwgMzUsIAotICAgIDMyLCA2LCA2OSwgMTQsIDM1LCAzMiwgNiwgMjE1LCA3OSwgMTQsIDM1LCAzMiwgNiwgMjE0LCA4MiwgMTQsIDM1LCAzMiwgNiwgCi0gICAgMjEzLCAxNjYsIDE0LCAzNSwgMzIsIDYsIDIxMywgMTA1LCAxNCwgMzUsIDMyLCA2LCAyMTIsIDE1MiwgMTQsIDM1LCAzMiwgCi0gICAgMywgNjEsIDE0LCAzNSwgMzIsIDMsIDI1MywgNzQsIDE0LCAzNSwgMzIsIDMsIDI1MCwgMjUyLCAxNCwgMzUsIDMyLCAzLCAKLSAgICAyNDksIDMsIDE0LCAzNSwgMzIsIDMsIDc0LCAxNCwgMzUsIDMyLCAzLCAyNDQsIDIzMCwgMTQsIDM1LCAzMiwgMywgMjQzLCAKLSAgICAxNzcsIDE0LCAzNSwgMzIsIDMsIDI0MiwgNDEsIDE0LCAzNSwgMzIsIDMsIDcyLCAxNCwgMzUsIDMyLCAzLCAyMzUsIDE0MiwgCi0gICAgMTQsIDM1LCAzMiwgMywgMjM1LCAyNywgMTQsIDM1LCAzMiwgMywgMTUwLCAxNCwgMzUsIDMyLCAzLCAxODMsIDE0LCAzNSwgCi0gICAgMzIsIDMsIDIwNCwgMTQsIDM1LCAzMiwgMywgNzUsIDE0LCAzNSwgMzIsIDMsIDIyNiwgMjI5LCAxNCwgMzUsIDMyLCAzLCAKLSAgICAyMjQsIDI0MCwgMTQsIDM1LCAzMiwgMywgMTQ5LCAxNCwgMzUsIDMyLCAzLCAxOTcsIDE0LCAzNSwgMzIsIDMsIDIxOCwgOTksIAotICAgIDE0LCAzNSwgMzIsIDMsIDY5LCAxNCwgMzUsIDMyLCAzLCAyMTUsIDc5LCAxNCwgMzUsIDMyLCAzLCAyMTQsIDgyLCAxNCwgCi0gICAgMzUsIDMyLCAzLCAyMTMsIDE2NiwgMTQsIDM1LCAzMiwgMywgMjEzLCAxMDUsIDE0LCAzNSwgMzIsIDMsIDIxMiwgMTUyLCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgNiwgNjEsIDE0LCAzNSwgMjIsIDMyLCA2LCAyNTMsIDc0LCAxNCwgMzUsIDIyLCAzMiwgNiwgCi0gICAgMjUwLCAyNTIsIDE0LCAzNSwgMjIsIDMyLCA2LCAyNDksIDMsIDE0LCAzNSwgMjIsIDMyLCA2LCA3NCwgMTQsIDM1LCAyMiwgCi0gICAgMzIsIDYsIDI0NCwgMjMwLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjQzLCAxNzcsIDE0LCAzNSwgMjIsIDMyLCA2LCAyNDIsIDQxLCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgNiwgNzIsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMzUsIDE0MiwgMTQsIDM1LCAyMiwgMzIsIDYsIAotICAgIDIzNSwgMjcsIDE0LCAzNSwgMjIsIDMyLCA2LCAxNTAsIDE0LCAzNSwgMjIsIDMyLCA2LCAxODMsIDE0LCAzNSwgMjIsIDMyLCAKLSAgICA2LCAyMDQsIDE0LCAzNSwgMjIsIDMyLCA2LCA3NSwgMTQsIDM1LCAyMiwgMzIsIDYsIDIyNiwgMjI5LCAxNCwgMzUsIDIyLCAKLSAgICAzMiwgNiwgMjI0LCAyNDAsIDE0LCAzNSwgMjIsIDMyLCA2LCAxNDksIDE0LCAzNSwgMjIsIDMyLCA2LCAxOTcsIDE0LCAzNSwgCi0gICAgMjIsIDMyLCA2LCAyMTgsIDk5LCAxNCwgMzUsIDIyLCAzMiwgNiwgNjksIDE0LCAzNSwgMjIsIDMyLCA2LCAyMTUsIDc5LCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgNiwgMjE0LCA4MiwgMTQsIDM1LCAyMiwgMzIsIDYsIDIxMywgMTY2LCAxNCwgMzUsIDIyLCAzMiwgCi0gICAgNiwgMjEzLCAxMDUsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMTIsIDE1MiwgMTQsIDM1LCAyMiwgMzIsIDMsIDYxLCAxNCwgMzUsIAotICAgIDIyLCAzMiwgMywgMjUzLCA3NCwgMTQsIDM1LCAyMiwgMzIsIDMsIDI1MCwgMjUyLCAxNCwgMzUsIDIyLCAzMiwgMywgMjQ5LCAKLSAgICAzLCAxNCwgMzUsIDIyLCAzMiwgMywgNzQsIDE0LCAzNSwgMjIsIDMyLCAzLCAyNDQsIDIzMCwgMTQsIDM1LCAyMiwgMzIsIDMsIAotICAgIDI0MywgMTc3LCAxNCwgMzUsIDIyLCAzMiwgMywgMjQyLCA0MSwgMTQsIDM1LCAyMiwgMzIsIDMsIDcyLCAxNCwgMzUsIDIyLCAKLSAgICAzMiwgMywgMjM1LCAxNDIsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMzUsIDI3LCAxNCwgMzUsIDIyLCAzMiwgMywgMTUwLCAxNCwgCi0gICAgMzUsIDIyLCAzMiwgMywgMTgzLCAxNCwgMzUsIDIyLCAzMiwgMywgMjA0LCAxNCwgMzUsIDIyLCAzMiwgMywgNzUsIDE0LCAKLSAgICAzNSwgMjIsIDMyLCAzLCAyMjYsIDIyOSwgMTQsIDM1LCAyMiwgMzIsIDMsIDIyNCwgMjQwLCAxNCwgMzUsIDIyLCAzMiwgMywgCi0gICAgMTQ5LCAxNCwgMzUsIDIyLCAzMiwgMywgMTk3LCAxNCwgMzUsIDIyLCAzMiwgMywgMjE4LCA5OSwgMTQsIDM1LCAyMiwgMzIsIAotICAgIDMsIDY5LCAxNCwgMzUsIDIyLCAzMiwgMywgMjE1LCA3OSwgMTQsIDM1LCAyMiwgMzIsIDMsIDIxNCwgODIsIDE0LCAzNSwgCi0gICAgMjIsIDMyLCAzLCAyMTMsIDE2NiwgMTQsIDM1LCAyMiwgMzIsIDMsIDIxMywgMTA1LCAxNCwgMzUsIDIyLCAzMiwgMywgMjEyLCAKLSAgICAxNTIsIDE0LCAyMzAsIDIwOCwgNiwgNjEsIDE0LCAyMzAsIDIwOCwgNiwgMjUzLCA3NCwgMTQsIDIzMCwgMjA4LCA2LCAyNTAsIAotICAgIDI1MiwgMTQsIDIzMCwgMjA4LCA2LCAyNDksIDMsIDE0LCAyMzAsIDIwOCwgNiwgNzQsIDE0LCAyMzAsIDIwOCwgNiwgMjQ0LCAKLSAgICAyMzAsIDE0LCAyMzAsIDIwOCwgNiwgMjQzLCAxNzcsIDE0LCAyMzAsIDIwOCwgNiwgMjQyLCA0MSwgMTQsIDIzMCwgMjA4LCAKLSAgICA2LCA3MiwgMTQsIDIzMCwgMjA4LCA2LCAyMzUsIDE0MiwgMTQsIDIzMCwgMjA4LCA2LCAyMzUsIDI3LCAxNCwgMjMwLCAyMDgsIAotICAgIDYsIDE1MCwgMTQsIDIzMCwgMjA4LCA2LCAxODMsIDE0LCAyMzAsIDIwOCwgNiwgMjA0LCAxNCwgMjMwLCAyMDgsIDYsIDc1LCAKLSAgICAxNCwgMjMwLCAyMDgsIDYsIDIyNiwgMjI5LCAxNCwgMjMwLCAyMDgsIDYsIDIyNCwgMjQwLCAxNCwgMjMwLCAyMDgsIDYsIAotICAgIDE0OSwgMTQsIDIzMCwgMjA4LCA2LCAxOTcsIDE0LCAyMzAsIDIwOCwgNiwgMjE4LCA5OSwgMTQsIDIzMCwgMjA4LCA2LCA2OSwgCi0gICAgMTQsIDIzMCwgMjA4LCA2LCAyMTUsIDc5LCAxNCwgMjMwLCAyMDgsIDYsIDIxNCwgODIsIDE0LCAyMzAsIDIwOCwgNiwgMjEzLCAKLSAgICAxNjYsIDE0LCAyMzAsIDIwOCwgNiwgMjEzLCAxMDUsIDE0LCAyMzAsIDIwOCwgNiwgMjEyLCAxNTIsIDE0LCAyMzAsIDIwOCwgCi0gICAgMywgNjEsIDE0LCAyMzAsIDIwOCwgMywgMjUzLCA3NCwgMTQsIDIzMCwgMjA4LCAzLCAyNTAsIDI1MiwgMTQsIDIzMCwgMjA4LCAKLSAgICAzLCAyNDksIDMsIDE0LCAyMzAsIDIwOCwgMywgNzQsIDE0LCAyMzAsIDIwOCwgMywgMjQ0LCAyMzAsIDE0LCAyMzAsIDIwOCwgCi0gICAgMywgMjQzLCAxNzcsIDE0LCAyMzAsIDIwOCwgMywgMjQyLCA0MSwgMTQsIDIzMCwgMjA4LCAzLCA3MiwgMTQsIDIzMCwgMjA4LCAKLSAgICAzLCAyMzUsIDE0MiwgMTQsIDIzMCwgMjA4LCAzLCAyMzUsIDI3LCAxNCwgMjMwLCAyMDgsIDMsIDE1MCwgMTQsIDIzMCwgCi0gICAgMjA4LCAzLCAxODMsIDE0LCAyMzAsIDIwOCwgMywgMjA0LCAxNCwgMjMwLCAyMDgsIDMsIDc1LCAxNCwgMjMwLCAyMDgsIDMsIAotICAgIDIyNiwgMjI5LCAxNCwgMjMwLCAyMDgsIDMsIDIyNCwgMjQwLCAxNCwgMjMwLCAyMDgsIDMsIDE0OSwgMTQsIDIzMCwgMjA4LCAKLSAgICAzLCAxOTcsIDE0LCAyMzAsIDIwOCwgMywgMjE4LCA5OSwgMTQsIDIzMCwgMjA4LCAzLCA2OSwgMTQsIDIzMCwgMjA4LCAzLCAKLSAgICAyMTUsIDc5LCAxNCwgMjMwLCAyMDgsIDMsIDIxNCwgODIsIDE0LCAyMzAsIDIwOCwgMywgMjEzLCAxNjYsIDE0LCAyMzAsIAotICAgIDIwOCwgMywgMjEzLCAxMDUsIDE0LCAyMzAsIDIwOCwgMywgMjEyLCAxNTIsIDE0LCAzMiwgMywgMjQ3LCA3MywgNzIsIDE0LCAKLSAgICAzMiwgMywgMjQ3LCA3MywgMjM1LCAxNDIsIDE0LCAyMiwgNiwgMjU0LCA1MiwgMTQsIDIyLCA2LCAyNTEsIDIwMywgMTQsIAotICAgIDIyLCA2LCAyNDMsIDgzLCAxNCwgMjIsIDYsIDI0OCwgNSwgMTQsIDIyLCA2LCAyNDUsIDYzLCAxNCwgMjIsIDYsIDIxMiwgCi0gICAgNzgsIDE0LCAyMiwgNiwgMjQ1LCAyOCwgMTQsIDIyLCA2LCAyMTcsIDEzMiwgMTQsIDIyLCA2LCAyMzUsIDE4MywgMTQsIDIyLCAKLSAgICA2LCAyMzQsIDIyNywgMTQsIDIyLCA2LCAyMzMsIDEyMiwgMTQsIDIyLCA2LCAyMzAsIDE3MiwgMTQsIDIyLCA2LCAyMjgsIAotICAgIDkyLCAxNCwgMjIsIDYsIDIxMywgMTQ1LCAxNCwgMjIsIDYsIDIyNywgNjUsIDE0LCAyMiwgNiwgMjI1LCAyNDAsIDE0LCAyMiwgCi0gICAgNiwgMjIzLCAxOTAsIDE0LCAyMiwgNiwgMjE3LCAxMzMsIDg3LCAxNCwgMjIsIDYsIDIyMCwgMTAzLCAxNCwgMjIsIDYsIAotICAgIDIxNywgMjQ4LCAxNCwgMjIsIDYsIDIxNSwgMTI4LCAxNCwgMjIsIDYsIDIyNiwgOSwgMTQsIDIyLCA2LCAyNTAsIDQ3LCAxNCwgCi0gICAgMjIsIDYsIDIyNSwgNDYsIDE0LCAyMiwgNiwgMjI3LCA2NywgMTQsIDIyLCAyMzAsIDM5LCAxNCwgMjIsIDMsIDI1NCwgNTIsIAotICAgIDE0LCAyMiwgMywgMjUxLCAyMDMsIDE0LCAyMiwgMywgMjQzLCA4MywgMTQsIDIyLCAzLCAyNDgsIDUsIDE0LCAyMiwgMywgCi0gICAgMjQ1LCA2MywgMTQsIDIyLCAzLCAyMTIsIDc4LCAxNCwgMjIsIDMsIDI0NSwgMjgsIDE0LCAyMiwgMywgMjE3LCAxMzIsIDE0LCAKLSAgICAyMiwgMywgMjM1LCAxODMsIDE0LCAyMiwgMywgMjM0LCAyMjcsIDE0LCAyMiwgMywgMjMzLCAxMjIsIDE0LCAyMiwgMywgCi0gICAgMjMwLCAxNzIsIDE0LCAyMiwgMywgMjI4LCA5MiwgMTQsIDIyLCAzLCAyMTMsIDE0NSwgMTQsIDIyLCAzLCAyMjcsIDY1LCAKLSAgICAxNCwgMjIsIDMsIDIyNSwgMjQwLCAxNCwgMjIsIDMsIDIyMywgMTkwLCAxNCwgMjIsIDMsIDQwLCAyMjAsIDEwMywgMTQsIAotICAgIDIyLCAzLCAyMjAsIDEwMywgMTQsIDIyLCAzLCAyMTcsIDI0OCwgMTQsIDIyLCAzLCAyMTUsIDEyOCwgMTQsIDIyLCAzLCAKLSAgICAyMjYsIDksIDE0LCAyMiwgMywgMjUwLCA0NywgMTQsIDIyLCAzLCAyMjUsIDQ2LCAxNCwgMjIsIDMsIDIyNywgNjcsIDE0LCAKLSAgICAyMiwgMjI2LCAxMjUsIDI0NywgMTg1LCAxNCwgMjIsIDI0NSwgNjQsIDg3LCAxNCwgMjIsIDIxNywgMTMzLCA4NywgMTQsIAotICAgIDIyLCAyMzQsIDIyOCwgODcsIDE0LCAyMiwgMjI2LCAxMCwgODcsIDE0LCAyMiwgMjIzLCAxOTEsIDg3LCAxNCwgMjIsIDIyNSwgCi0gICAgMjQxLCA4NywgMTQsIDMyLCA2LCAyNTQsIDUyLCAxNCwgMzIsIDYsIDI1MSwgMjAzLCAxNCwgMzIsIDYsIDI0MywgODMsIDE0LCAKLSAgICAzMiwgNiwgMjQ4LCA1LCAxNCwgMzIsIDYsIDI0NSwgNjMsIDE0LCAzMiwgNiwgMjEyLCA3OCwgMTQsIDMyLCA2LCAyNDUsIAotICAgIDI4LCAxNCwgMzIsIDYsIDIxNywgMTMyLCAxNCwgMzIsIDYsIDIzNSwgMTgzLCAxNCwgMzIsIDYsIDIzNCwgMjI3LCAxNCwgCi0gICAgMzIsIDYsIDIzMywgMTIyLCAxNCwgMzIsIDYsIDIzMCwgMTcyLCAxNCwgMzIsIDYsIDIyOCwgOTIsIDE0LCAzMiwgNiwgMjEzLCAKLSAgICAxNDUsIDE0LCAzMiwgNiwgMjI3LCA2NSwgMTQsIDMyLCA2LCAyMjUsIDI0MCwgMTQsIDMyLCA2LCAyMjMsIDE5MCwgMTQsIAotICAgIDMyLCA2LCAyMTcsIDEzMywgODcsIDE0LCAzMiwgNiwgMjIwLCAxMDMsIDE0LCAzMiwgNiwgMjE3LCAyNDgsIDE0LCAzMiwgNiwgCi0gICAgMjE1LCAxMjgsIDE0LCAzMiwgNiwgMjI2LCA5LCAxNCwgMzIsIDYsIDI1MCwgNDcsIDE0LCAzMiwgNiwgMjI1LCA0NiwgMTQsIAotICAgIDMyLCA2LCAyMjcsIDY3LCAxNCwgMzIsIDIzMCwgMzksIDE0LCAzMiwgMywgMjU0LCA1MiwgMTQsIDMyLCAzLCAyNTEsIDIwMywgCi0gICAgMTQsIDMyLCAzLCAyNDMsIDgzLCAxNCwgMzIsIDMsIDI0OCwgNSwgMTQsIDMyLCAzLCAyNDUsIDYzLCAxNCwgMzIsIDMsIAotICAgIDIxMiwgNzgsIDE0LCAzMiwgMywgMjQ1LCAyOCwgMTQsIDMyLCAzLCAyMTcsIDEzMiwgMTQsIDMyLCAzLCAyMzUsIDE4MywgCi0gICAgMTQsIDMyLCAzLCAyMzQsIDIyNywgMTQsIDMyLCAzLCAyMzMsIDEyMiwgMTQsIDMyLCAzLCAyMzAsIDE3MiwgMTQsIDMyLCAzLCAKLSAgICAyMjgsIDkyLCAxNCwgMzIsIDMsIDIxMywgMTQ1LCAxNCwgMzIsIDMsIDIyNywgNjUsIDE0LCAzMiwgMywgMjI1LCAyNDAsIAotICAgIDE0LCAzMiwgMywgMjIzLCAxOTAsIDE0LCAzMiwgMywgNDAsIDIyMCwgMTAzLCAxNCwgMzIsIDMsIDIyMCwgMTAzLCAxNCwgCi0gICAgMzIsIDMsIDIxNywgMjQ4LCAxNCwgMzIsIDMsIDIxNSwgMTI4LCAxNCwgMzIsIDMsIDIyNiwgOSwgMTQsIDMyLCAzLCAyNTAsIAotICAgIDQ3LCAxNCwgMzIsIDMsIDIyNSwgNDYsIDE0LCAzMiwgMywgMjI3LCA2NywgMTQsIDMyLCAyMjYsIDEyNSwgMjQ3LCAxODUsIAotICAgIDE0LCAzMiwgMjQ1LCA2NCwgODcsIDE0LCAzMiwgMjE3LCAxMzMsIDg3LCAxNCwgMzIsIDIzNCwgMjI4LCA4NywgMTQsIDMyLCAKLSAgICAyMjYsIDEwLCA4NywgMTQsIDMyLCAyMjMsIDE5MSwgODcsIDE0LCAzMiwgMjI1LCAyNDEsIDg3LCAxNCwgMjIsIDMyLCA2LCAKLSAgICAyNTQsIDUyLCAxNCwgMjIsIDMyLCA2LCAyNTEsIDIwMywgMTQsIDIyLCAzMiwgNiwgMjQzLCA4MywgMTQsIDIyLCAzMiwgNiwgCi0gICAgMjQ4LCA1LCAxNCwgMjIsIDMyLCA2LCAyNDUsIDYzLCAxNCwgMjIsIDMyLCA2LCAyMTIsIDc4LCAxNCwgMjIsIDMyLCA2LCAKLSAgICAyNDUsIDI4LCAxNCwgMjIsIDMyLCA2LCAyMTcsIDEzMiwgMTQsIDIyLCAzMiwgNiwgMjM1LCAxODMsIDE0LCAyMiwgMzIsIDYsIAotICAgIDIzNCwgMjI3LCAxNCwgMjIsIDMyLCA2LCAyMzMsIDEyMiwgMTQsIDIyLCAzMiwgNiwgMjMwLCAxNzIsIDE0LCAyMiwgMzIsIAotICAgIDYsIDIyOCwgOTIsIDE0LCAyMiwgMzIsIDYsIDIxMywgMTQ1LCAxNCwgMjIsIDMyLCA2LCAyMjcsIDY1LCAxNCwgMjIsIDMyLCAKLSAgICA2LCAyMjUsIDI0MCwgMTQsIDIyLCAzMiwgNiwgMjIzLCAxOTAsIDE0LCAyMiwgMzIsIDYsIDIxNywgMTMzLCA4NywgMTQsIAotICAgIDIyLCAzMiwgNiwgMjIwLCAxMDMsIDE0LCAyMiwgMzIsIDYsIDIxNywgMjQ4LCAxNCwgMjIsIDMyLCA2LCAyMTUsIDEyOCwgCi0gICAgMTQsIDIyLCAzMiwgNiwgMjI2LCA5LCAxNCwgMjIsIDMyLCA2LCAyNTAsIDQ3LCAxNCwgMjIsIDMyLCA2LCAyMjUsIDQ2LCAKLSAgICAxNCwgMjIsIDMyLCA2LCAyMjcsIDY3LCAxNCwgMjIsIDMyLCAyMzAsIDM5LCAxNCwgMjIsIDMyLCAzLCAyNTQsIDUyLCAxNCwgCi0gICAgMjIsIDMyLCAzLCAyNTEsIDIwMywgMTQsIDIyLCAzMiwgMywgMjQzLCA4MywgMTQsIDIyLCAzMiwgMywgMjQ4LCA1LCAxNCwgCi0gICAgMjIsIDMyLCAzLCAyNDUsIDYzLCAxNCwgMjIsIDMyLCAzLCAyMTIsIDc4LCAxNCwgMjIsIDMyLCAzLCAyNDUsIDI4LCAxNCwgCi0gICAgMjIsIDMyLCAzLCAyMTcsIDEzMiwgMTQsIDIyLCAzMiwgMywgMjM1LCAxODMsIDE0LCAyMiwgMzIsIDMsIDIzNCwgMjI3LCAKLSAgICAxNCwgMjIsIDMyLCAzLCAyMzMsIDEyMiwgMTQsIDIyLCAzMiwgMywgMjMwLCAxNzIsIDE0LCAyMiwgMzIsIDMsIDIyOCwgOTIsIAotICAgIDE0LCAyMiwgMzIsIDMsIDIxMywgMTQ1LCAxNCwgMjIsIDMyLCAzLCAyMjcsIDY1LCAxNCwgMjIsIDMyLCAzLCAyMjUsIDI0MCwgCi0gICAgMTQsIDIyLCAzMiwgMywgMjIzLCAxOTAsIDE0LCAyMiwgMzIsIDMsIDQwLCAyMjAsIDEwMywgMTQsIDIyLCAzMiwgMywgMjIwLCAKLSAgICAxMDMsIDE0LCAyMiwgMzIsIDMsIDIxNywgMjQ4LCAxNCwgMjIsIDMyLCAzLCAyMTUsIDEyOCwgMTQsIDIyLCAzMiwgMywgCi0gICAgMjI2LCA5LCAxNCwgMjIsIDMyLCAzLCAyNTAsIDQ3LCAxNCwgMjIsIDMyLCAzLCAyMjUsIDQ2LCAxNCwgMjIsIDMyLCAzLCAKLSAgICAyMjcsIDY3LCAxNCwgMjIsIDMyLCAyMjYsIDEyNSwgMjQ3LCAxODUsIDE0LCAyMiwgMzIsIDI0NSwgNjQsIDg3LCAxNCwgMjIsIAotICAgIDMyLCAyMTcsIDEzMywgODcsIDE0LCAyMiwgMzIsIDIzNCwgMjI4LCA4NywgMTQsIDIyLCAzMiwgMjI2LCAxMCwgODcsIDE0LCAKLSAgICAyMiwgMzIsIDIyMywgMTkxLCA4NywgMTQsIDIyLCAzMiwgMjI1LCAyNDEsIDg3LCAxNCwgMzUsIDIyLCA2LCAyNTQsIDUyLCAKLSAgICAxNCwgMzUsIDIyLCA2LCAyNTEsIDIwMywgMTQsIDM1LCAyMiwgNiwgMjQzLCA4MywgMTQsIDM1LCAyMiwgNiwgMjQ4LCA1LCAKLSAgICAxNCwgMzUsIDIyLCA2LCAyNDUsIDYzLCAxNCwgMzUsIDIyLCA2LCAyMTIsIDc4LCAxNCwgMzUsIDIyLCA2LCAyNDUsIDI4LCAKLSAgICAxNCwgMzUsIDIyLCA2LCAyMTcsIDEzMiwgMTQsIDM1LCAyMiwgNiwgMjM1LCAxODMsIDE0LCAzNSwgMjIsIDYsIDIzNCwgCi0gICAgMjI3LCAxNCwgMzUsIDIyLCA2LCAyMzMsIDEyMiwgMTQsIDM1LCAyMiwgNiwgMjMwLCAxNzIsIDE0LCAzNSwgMjIsIDYsIAotICAgIDIyOCwgOTIsIDE0LCAzNSwgMjIsIDYsIDIxMywgMTQ1LCAxNCwgMzUsIDIyLCA2LCAyMjcsIDY1LCAxNCwgMzUsIDIyLCA2LCAKLSAgICAyMjUsIDI0MCwgMTQsIDM1LCAyMiwgNiwgMjIzLCAxOTAsIDE0LCAzNSwgMjIsIDYsIDIxNywgMTMzLCA4NywgMTQsIDM1LCAKLSAgICAyMiwgNiwgMjIwLCAxMDMsIDE0LCAzNSwgMjIsIDYsIDIxNywgMjQ4LCAxNCwgMzUsIDIyLCA2LCAyMTUsIDEyOCwgMTQsIAotICAgIDM1LCAyMiwgNiwgMjI2LCA5LCAxNCwgMzUsIDIyLCA2LCAyNTAsIDQ3LCAxNCwgMzUsIDIyLCA2LCAyMjUsIDQ2LCAxNCwgCi0gICAgMzUsIDIyLCA2LCAyMjcsIDY3LCAxNCwgMzUsIDIyLCAyMzAsIDM5LCAxNCwgMzUsIDIyLCAzLCAyNTQsIDUyLCAxNCwgMzUsIAotICAgIDIyLCAzLCAyNTEsIDIwMywgMTQsIDM1LCAyMiwgMywgMjQzLCA4MywgMTQsIDM1LCAyMiwgMywgMjQ4LCA1LCAxNCwgMzUsIAotICAgIDIyLCAzLCAyNDUsIDYzLCAxNCwgMzUsIDIyLCAzLCAyMTIsIDc4LCAxNCwgMzUsIDIyLCAzLCAyNDUsIDI4LCAxNCwgMzUsIAotICAgIDIyLCAzLCAyMTcsIDEzMiwgMTQsIDM1LCAyMiwgMywgMjM1LCAxODMsIDE0LCAzNSwgMjIsIDMsIDIzNCwgMjI3LCAxNCwgCi0gICAgMzUsIDIyLCAzLCAyMzMsIDEyMiwgMTQsIDM1LCAyMiwgMywgMjMwLCAxNzIsIDE0LCAzNSwgMjIsIDMsIDIyOCwgOTIsIDE0LCAKLSAgICAzNSwgMjIsIDMsIDIxMywgMTQ1LCAxNCwgMzUsIDIyLCAzLCAyMjcsIDY1LCAxNCwgMzUsIDIyLCAzLCAyMjUsIDI0MCwgMTQsIAotICAgIDM1LCAyMiwgMywgMjIzLCAxOTAsIDE0LCAzNSwgMjIsIDMsIDQwLCAyMjAsIDEwMywgMTQsIDM1LCAyMiwgMywgMjIwLCAKLSAgICAxMDMsIDE0LCAzNSwgMjIsIDMsIDIxNywgMjQ4LCAxNCwgMzUsIDIyLCAzLCAyMTUsIDEyOCwgMTQsIDM1LCAyMiwgMywgCi0gICAgMjI2LCA5LCAxNCwgMzUsIDIyLCAzLCAyNTAsIDQ3LCAxNCwgMzUsIDIyLCAzLCAyMjUsIDQ2LCAxNCwgMzUsIDIyLCAzLCAKLSAgICAyMjcsIDY3LCAxNCwgMzUsIDIyLCAyMjYsIDEyNSwgMjQ3LCAxODUsIDE0LCAzNSwgMjIsIDI0NSwgNjQsIDg3LCAxNCwgMzUsIAotICAgIDIyLCAyMTcsIDEzMywgODcsIDE0LCAzNSwgMjIsIDIzNCwgMjI4LCA4NywgMTQsIDM1LCAyMiwgMjI2LCAxMCwgODcsIDE0LCAKLSAgICAzNSwgMjIsIDIyMywgMTkxLCA4NywgMTQsIDM1LCAyMiwgMjI1LCAyNDEsIDg3LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjU0LCAKLSAgICA1MiwgMTQsIDM1LCAyMiwgMzIsIDYsIDI1MSwgMjAzLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjQzLCA4MywgMTQsIDM1LCAyMiwgCi0gICAgMzIsIDYsIDI0OCwgNSwgMTQsIDM1LCAyMiwgMzIsIDYsIDI0NSwgNjMsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMTIsIDc4LCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgNiwgMjQ1LCAyOCwgMTQsIDM1LCAyMiwgMzIsIDYsIDIxNywgMTMyLCAxNCwgMzUsIDIyLCAzMiwgCi0gICAgNiwgMjM1LCAxODMsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMzQsIDIyNywgMTQsIDM1LCAyMiwgMzIsIDYsIDIzMywgMTIyLCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgNiwgMjMwLCAxNzIsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMjgsIDkyLCAxNCwgMzUsIDIyLCAzMiwgCi0gICAgNiwgMjEzLCAxNDUsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMjcsIDY1LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjI1LCAyNDAsIDE0LCAKLSAgICAzNSwgMjIsIDMyLCA2LCAyMjMsIDE5MCwgMTQsIDM1LCAyMiwgMzIsIDYsIDIxNywgMTMzLCA4NywgMTQsIDM1LCAyMiwgMzIsIAotICAgIDYsIDIyMCwgMTAzLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjE3LCAyNDgsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMTUsIDEyOCwgCi0gICAgMTQsIDM1LCAyMiwgMzIsIDYsIDIyNiwgOSwgMTQsIDM1LCAyMiwgMzIsIDYsIDI1MCwgNDcsIDE0LCAzNSwgMjIsIDMyLCA2LCAKLSAgICAyMjUsIDQ2LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjI3LCA2NywgMTQsIDM1LCAyMiwgMzIsIDIzMCwgMzksIDE0LCAzNSwgMjIsIAotICAgIDMyLCAzLCAyNTQsIDUyLCAxNCwgMzUsIDIyLCAzMiwgMywgMjUxLCAyMDMsIDE0LCAzNSwgMjIsIDMyLCAzLCAyNDMsIDgzLCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgMywgMjQ4LCA1LCAxNCwgMzUsIDIyLCAzMiwgMywgMjQ1LCA2MywgMTQsIDM1LCAyMiwgMzIsIDMsIAotICAgIDIxMiwgNzgsIDE0LCAzNSwgMjIsIDMyLCAzLCAyNDUsIDI4LCAxNCwgMzUsIDIyLCAzMiwgMywgMjE3LCAxMzIsIDE0LCAzNSwgCi0gICAgMjIsIDMyLCAzLCAyMzUsIDE4MywgMTQsIDM1LCAyMiwgMzIsIDMsIDIzNCwgMjI3LCAxNCwgMzUsIDIyLCAzMiwgMywgMjMzLCAKLSAgICAxMjIsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMzAsIDE3MiwgMTQsIDM1LCAyMiwgMzIsIDMsIDIyOCwgOTIsIDE0LCAzNSwgMjIsIAotICAgIDMyLCAzLCAyMTMsIDE0NSwgMTQsIDM1LCAyMiwgMzIsIDMsIDIyNywgNjUsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMjUsIDI0MCwgCi0gICAgMTQsIDM1LCAyMiwgMzIsIDMsIDIyMywgMTkwLCAxNCwgMzUsIDIyLCAzMiwgMywgNDAsIDIyMCwgMTAzLCAxNCwgMzUsIDIyLCAKLSAgICAzMiwgMywgMjIwLCAxMDMsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMTcsIDI0OCwgMTQsIDM1LCAyMiwgMzIsIDMsIDIxNSwgCi0gICAgMTI4LCAxNCwgMzUsIDIyLCAzMiwgMywgMjI2LCA5LCAxNCwgMzUsIDIyLCAzMiwgMywgMjUwLCA0NywgMTQsIDM1LCAyMiwgCi0gICAgMzIsIDMsIDIyNSwgNDYsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMjcsIDY3LCAxNCwgMzUsIDIyLCAzMiwgMjI2LCAxMjUsIAotICAgIDI0NywgMTg1LCAxNCwgMzUsIDIyLCAzMiwgMjQ1LCA2NCwgODcsIDE0LCAzNSwgMjIsIDMyLCAyMTcsIDEzMywgODcsIDE0LCAKLSAgICAzNSwgMjIsIDMyLCAyMzQsIDIyOCwgODcsIDE0LCAzNSwgMjIsIDMyLCAyMjYsIDEwLCA4NywgMTQsIDM1LCAyMiwgMzIsIAotICAgIDIyMywgMTkxLCA4NywgMTQsIDM1LCAyMiwgMzIsIDIyNSwgMjQxLCA4NywgMTQsIDIyLCA2LCAyNDcsIDE3OSwgMTQsIDIyLCAKLSAgICAzLCAyNDcsIDE3OSwgMTQsIDIyLCAyMSwgMjEyLCA3OSwgMTQsIDIyLCAyMSwgMTE2LCAxNCwgMjIsIDIxLCAxMDksIDE0LCAKLSAgICAyMiwgMjEsIDE2NiwgMTQsIDIyLCAyMSwgMTYzLCAxNCwgMjIsIDIxLCAxODAsIDE0LCAyMiwgMjEsIDE4OSwgMTQsIDIyLCAKLSAgICAyMSwgMTk4LCAxNCwgMjIsIDIxLCAxOTUsIDE0LCAyMiwgMjEsIDIwMCwgMTQsIDE4NywgMjEsIDIxMiwgNzksIDE0LCAxODcsIAotICAgIDIxLCAxMTYsIDE0LCAxODcsIDIxLCAxMDksIDE0LCAxODcsIDIxLCAxNjYsIDE0LCAxODcsIDIxLCAxNjMsIDE0LCAxODcsIAotICAgIDIxLCAxODAsIDE0LCAxODcsIDIxLCAxODksIDE0LCAxODcsIDIxLCAxOTgsIDE0LCAxODcsIDIxLCAxOTUsIDE0LCAxODcsIAotICAgIDIxLCAyMDAsIDE0LCAzNSwgMjEsIDIxMiwgNzksIDE0LCAzNSwgMjEsIDExNiwgMTQsIDM1LCAyMSwgMTA5LCAxNCwgMzUsIAotICAgIDIxLCAxNjYsIDE0LCAzNSwgMjEsIDE2MywgMTQsIDM1LCAyMSwgMTgwLCAxNCwgMzUsIDIxLCAxODksIDE0LCAzNSwgMjEsIAotICAgIDE5OCwgMTQsIDM1LCAyMSwgMTk1LCAxNCwgMzUsIDIxLCAyMDAsIDE0LCAzNSwgMjIsIDIxLCAyMTIsIDc5LCAxNCwgMzUsIAotICAgIDIyLCAyMSwgMTE2LCAxNCwgMzUsIDIyLCAyMSwgMTA5LCAxNCwgMzUsIDIyLCAyMSwgMTY2LCAxNCwgMzUsIDIyLCAyMSwgCi0gICAgMTYzLCAxNCwgMzUsIDIyLCAyMSwgMTgwLCAxNCwgMzUsIDIyLCAyMSwgMTg5LCAxNCwgMzUsIDIyLCAyMSwgMTk4LCAxNCwgCi0gICAgMzUsIDIyLCAyMSwgMTk1LCAxNCwgMzUsIDIyLCAyMSwgMjAwLCAxNCwgMjMwLCAyMDgsIDIxLCAyMTIsIDc5LCAxNCwgMjMwLCAKLSAgICAyMDgsIDIxLCAxMTYsIDE0LCAyMzAsIDIwOCwgMjEsIDEwOSwgMTQsIDIzMCwgMjA4LCAyMSwgMTY2LCAxNCwgMjMwLCAyMDgsIAotICAgIDIxLCAxNjMsIDE0LCAyMzAsIDIwOCwgMjEsIDE4MCwgMTQsIDIzMCwgMjA4LCAyMSwgMTg5LCAxNCwgMjMwLCAyMDgsIDIxLCAKLSAgICAxOTgsIDE0LCAyMzAsIDIwOCwgMjEsIDE5NSwgMTQsIDIzMCwgMjA4LCAyMSwgMjAwLCAyMzIsIDEwLCA4NSwgMjQ1LCAxNzYsIAotICAgIDIxMywgMjI0LCAyMzIsIDEwLCA4NSwgMjE5LCAyMTUsIDIxMywgMjI0LCAyMzIsIDEwLCA4NSwgMjEzLCAyNTAsIDIxMywgCi0gICAgMjI0LCAyMzIsIDEwLCA4NSwgMjI4LCAxNjcsIDIxMywgMjI0LCAyMzIsIDEwLCA4NSwgMjI0LCA0LCAyNDYsIDUwLCAyMzIsIAotICAgIDEwLCA4NSwgMjQyLCAxMDQsIDI0NiwgNTAsIDIzMiwgMTAsIDg1LCA2NywgMjQ2LCA1MCwgMjMyLCAxMCwgODUsIDEyMiwgCi0gICAgNjUsIDI1MCwgNzcsIDIzMiwgMTAsIDg1LCAxMTcsIDY1LCAyNTAsIDc3LCAyMzIsIDEwLCA4NSwgMTMzLCA2NSwgMjUwLCAKLSAgICA3NywgMjMyLCAxMCwgODUsIDI0MywgMjM3LCA2NSwgMjUwLCA3NywgMjMyLCAxMCwgODUsIDI0NCwgNTAsIDY1LCAyNTAsIAotICAgIDc3LCAyMzIsIDEwLCA4NSwgMjIwLCA1MywgNjUsIDI1MCwgNzcsIDIzMiwgMTAsIDg1LCAyMjEsIDQzLCA2NSwgMjUwLCA3NywgCi0gICAgMjMyLCAxMCwgODUsIDI0NSwgMTUwLCA2NSwgMjUwLCA3NywgMjMyLCAxMCwgODUsIDIyOSwgMzEsIDY1LCAyNTAsIDc3LCAKLSAgICAyMzIsIDEwLCA4NSwgMTIyLCA2NSwgMjUyLCA3MiwgMjMyLCAxMCwgODUsIDExNywgNjUsIDI1MiwgNzIsIDIzMiwgMTAsIAotICAgIDg1LCAxMzMsIDY1LCAyNTIsIDcyLCAyMzIsIDEwLCA4NSwgMjQzLCAyMzcsIDY1LCAyNTIsIDcyLCAyMzIsIDEwLCA4NSwgCi0gICAgMjQ0LCA1MCwgNjUsIDI1MiwgNzIsIDIzMiwgMTAsIDg1LCAyMjAsIDUzLCA2NSwgMjUyLCA3MiwgMjMyLCAxMCwgODUsIAotICAgIDIyMSwgNDMsIDY1LCAyNTIsIDcyLCAyMzIsIDEwLCA4NSwgMjQ1LCAxNTAsIDY1LCAyNTIsIDcyLCAyMzIsIDEwLCA4NSwgCi0gICAgMjI5LCAzMSwgNjUsIDI1MiwgNzIsIDIzMiwgMTAsIDg1LCAxMjIsIDY1LCAyNDksIDIyNywgMjMyLCAxMCwgODUsIDExNywgCi0gICAgNjUsIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMTMzLCA2NSwgMjQ5LCAyMjcsIDIzMiwgMTAsIDg1LCAyNDMsIDIzNywgNjUsIAotICAgIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMjQ0LCA1MCwgNjUsIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMjIwLCA1MywgNjUsIAotICAgIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMjIxLCA0MywgNjUsIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMjQ1LCAxNTAsIDY1LCAKLSAgICAyNDksIDIyNywgMjMyLCAxMCwgODUsIDIyOSwgMzEsIDY1LCAyNDksIDIyNywgMjMyLCAxMCwgODUsIDIyNSwgMTU5LCAyMzIsIAotICAgIDEwLCA4NSwgMjI3LCAyMiwgMjMyLCAxMCwgODUsIDI1MiwgNzMsIDIzMiwgMTAsIDg1LCAyNTAsIDcsIDIzMiwgMTAsIDg1LCAKLSAgICAyMTksIDE3MSwgMjMyLCAxMCwgODUsIDIxOCwgMjQwLCAyMzIsIDEwLCA4NSwgMjUzLCA5NSwgMjMyLCAxMCwgODUsIDIxMywgCi0gICAgMjE3LCAyMzIsIDEwLCA4NSwgMjM1LCA2NSwgMjMyLCAxMCwgODUsIDI1MiwgMTAxLCAxMjcsIDg1LCAxOTksIDI1MiwgMTAxLCAKLSAgICAxMjcsIDg1LCAyNDEsIDMwLCAxMjcsIDg1LCAyNDEsIDI5LCAxMjcsIDg1LCAyNDEsIDI4LCAxMjcsIDg1LCAyNDEsIDI3LCAKLSAgICAxMjcsIDg1LCAyNDEsIDI2LCAxMjcsIDg1LCAyNDEsIDI1LCAxMjcsIDg1LCAyNDEsIDI0LCAxMjcsIDg1LCAyNDEsIDIzLCAKLSAgICAxMjcsIDg1LCAyNDEsIDIyLCAxMjcsIDg1LCAyNDEsIDIxLCAxMjcsIDg1LCAyNDEsIDIwLCAxMjcsIDg1LCAyNDEsIDE5LCAKLSAgICAxMjcsIDg1LCAyNDEsIDE4LCAxMjcsIDg1LCAyNDEsIDE3LCAxMjcsIDg1LCAyNDEsIDE2LCAxMjcsIDg1LCAyNDEsIDE1LCAKLSAgICAxMjcsIDg1LCAyNDEsIDE0LCAxMjcsIDg1LCAyNDEsIDEzLCAxMjcsIDg1LCAyNDEsIDEyLCAxMjcsIDg1LCAyNDEsIDExLCAKLSAgICAxMjcsIDg1LCAyNDEsIDEwLCAxMjcsIDg1LCAyNDEsIDksIDEyNywgODUsIDI0MSwgOCwgMTI3LCA4NSwgMjQxLCA3LCAxMjcsIAotICAgIDg1LCAyNDEsIDYsIDEyNywgODUsIDI0MSwgNSwgMTI3LCA4NSwgMjQxLCA0LCAxMjcsIDg1LCAyNDEsIDMsIDEyNywgODUsIAotICAgIDI0MSwgMiwgMTI3LCA4NSwgMjQxLCAxLCAxMjcsIDg1LCAyNDEsIDAsIDEyNywgODUsIDI0MCwgMjU1LCAxMjcsIDg1LCAKLSAgICAyNDAsIDI1NCwgMTI3LCA4NSwgMjQwLCAyNTMsIDEyNywgODUsIDI0MCwgMjUyLCAxMjcsIDg1LCAyNDAsIDI1MSwgMTI3LCAKLSAgICA4NSwgMjQwLCAyNTAsIDEyNywgODUsIDI0MCwgMjQ5LCAxMjcsIDg1LCAyNDAsIDI0OCwgMTI3LCA4NSwgMjQwLCAyNDcsIAotICAgIDEyNywgODUsIDI0MCwgMjQ2LCAxMjcsIDg1LCAyNDAsIDI0NSwgMTI3LCA4NSwgMjQwLCAyNDQsIDEyNywgODUsIDI0MCwgCi0gICAgMjQzLCAxMjcsIDg1LCAyNDAsIDI0MiwgMTI3LCA4NSwgMjQwLCAyNDEsIDEyNywgODUsIDI0MCwgMjQwLCAxMjcsIDg1LCAKLSAgICAyNDAsIDIzOSwgMTI3LCA4NSwgMjQwLCAyMzgsIDEyNywgODUsIDcxLCAyNTIsIDEwMSwgMTI3LCA4NSwgMjE0LCAyMTUsIAotICAgIDEyNywgODUsIDIxNCwgMjE0LCAxMjcsIDg1LCAyMTQsIDIxMywgMTI3LCA4NSwgMjE0LCAyMTIsIDEyNywgODUsIDIxNCwgCi0gICAgMjExLCAxMjcsIDg1LCAyMTQsIDIxMCwgMTI3LCA4NSwgMjE0LCAyMDksIDEyNywgODUsIDIxNCwgMjA4LCAxMjcsIDg1LCAKLSAgICAyMTQsIDIwNywgMTI3LCA4NSwgMjE0LCAyMDYsIDEyNywgODUsIDIxNCwgMjA1LCAxMjcsIDg1LCAyMTQsIDIwNCwgMTI3LCAKLSAgICA4NSwgMjE0LCAyMDMsIDEyNywgODUsIDIxNCwgMjAyLCAxMjcsIDg1LCAyMTQsIDIwMSwgMTI3LCA4NSwgMjE0LCAyMDAsIAotICAgIDEyNywgODUsIDIxNCwgMTk5LCAxMjcsIDg1LCAyMTQsIDE5OCwgMTI3LCA4NSwgMjE0LCAxOTcsIDEyNywgODUsIDIxNCwgCi0gICAgMTk2LCAxMjcsIDg1LCAyMTQsIDE5NSwgMTI3LCA4NSwgMjE0LCAxOTQsIDEyNywgODUsIDIxNCwgMTkzLCAxMjcsIDg1LCAKLSAgICAyMTQsIDE5MiwgMTI3LCA4NSwgMjE0LCAxOTEsIDEyNywgODUsIDIxNCwgMTkwLCAxMjcsIDg1LCAyMTQsIDE4OSwgMTI3LCAKLSAgICA4NSwgMjE0LCAxODgsIDEyNywgODUsIDIxNCwgMTg3LCAxMjcsIDg1LCAyMTQsIDE4NiwgMTI3LCA4NSwgMjE0LCAxODUsIAotICAgIDEyNywgODUsIDIxNCwgMTg0LCAxMjcsIDg1LCAyMTQsIDE4MywgMTI3LCA4NSwgMjE0LCAxODIsIDEyNywgODUsIDIxNCwgCi0gICAgMTgxLCAxMjcsIDg1LCAyMTQsIDE4MCwgMTI3LCA4NSwgMjE0LCAxNzksIDEyNywgODUsIDIxNCwgMTc4LCAxMjcsIDg1LCAKLSAgICAyMTQsIDE3NywgMTI3LCA4NSwgMjE0LCAxNzYsIDEyNywgODUsIDIxNCwgMTc1LCAxMjcsIDg1LCAyMTQsIDE3NCwgMTI3LCAKLSAgICA4NSwgMjE0LCAxNzMsIDEyNywgODUsIDIxNCwgMTcyLCAxMjcsIDg1LCAyMTQsIDE3MSwgMTI3LCA4NSwgMjE0LCAxNzAsIAotICAgIDEyNywgODUsIDIxNCwgMTY5LCAxMjcsIDg1LCAyMTQsIDE2OCwgMTI3LCA4NSwgMjE0LCAxNjcsIDIyNSwgMTY1LCAyNTAsIAotICAgIDE3NSwgMjUyLCAxMDEsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjU0LCAxNjksIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIDI1MCwgCi0gICAgMTc1LCAxMTcsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIDI1MCwgMTc1LCAxMzMsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIAotICAgIDI1MCwgMTc1LCAyNDMsIDIzNywgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0NCwgNTAsIDY1LCAyMTksIAotICAgIDIwMywgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjAsIDUzLCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjIxLCAKLSAgICA0MywgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0NSwgMTUwLCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAKLSAgICAyNTAsIDE3NSwgMjI5LCAzMSwgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIxNywgMjAxLCA2NSwgMjE5LCAKLSAgICAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjM1LCAxMzcsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzQsIAotICAgIDQwLCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjI0LCAxNjAsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIAotICAgIDI1MCwgMTc1LCAyMzQsIDg4LCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjU0LCAxNjksIDY1LCAyNDEsIAotICAgIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAxMTcsIDY1LCAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAxMzMsIDY1LCAKLSAgICAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyNDMsIDIzNywgNjUsIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIAotICAgIDI0NCwgNTAsIDY1LCAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjAsIDUzLCA2NSwgMjQxLCAyMDksIDIyNSwgCi0gICAgMTY1LCAyNTAsIDE3NSwgMjIxLCA0MywgNjUsIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0NSwgMTUwLCA2NSwgCi0gICAgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjI5LCAzMSwgNjUsIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIAotICAgIDIxNywgMjAxLCA2NSwgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjM1LCAxMzcsIDY1LCAyNDEsIDIwOSwgMjI1LCAKLSAgICAxNjUsIDI1MCwgMTc1LCAyMzQsIDQwLCA2NSwgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjI0LCAxNjAsIDY1LCAKLSAgICAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzQsIDg4LCA2NSwgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgCi0gICAgMjU0LCAxNjksIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAxMTcsIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIAotICAgIDI1MCwgMTc1LCAxMzMsIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyNDMsIDIzNywgNjUsIDI0NywgMTk5LCAKLSAgICAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0NCwgNTAsIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjAsIDUzLCAKLSAgICA2NSwgMjQ3LCAxOTksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjIxLCA0MywgNjUsIDI0NywgMTk5LCAyMjUsIDE2NSwgMjUwLCAKLSAgICAxNzUsIDI0NSwgMTUwLCA2NSwgMjQ3LCAxOTksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjI5LCAzMSwgNjUsIDI0NywgMTk5LCAKLSAgICAyMjUsIDE2NSwgMjUwLCAxNzUsIDIxNywgMjAxLCA2NSwgMjQ3LCAxOTksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjM1LCAxMzcsIAotICAgIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzQsIDQwLCA2NSwgMjQ3LCAxOTksIDIyNSwgMTY1LCAyNTAsIAotICAgIDE3NSwgMjI0LCAxNjAsIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzQsIDg4LCA2NSwgMjQ3LCAxOTksIAotICAgIDIyNSwgMTY1LCAyNTAsIDE3NSwgODMsIDIzNSwgNjUsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjU0LCAxNjksIDY1LCAyNDksIAotICAgIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAxMTcsIDY1LCAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAxMzMsIDY1LCAKLSAgICAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyNDMsIDIzNywgNjUsIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIAotICAgIDI0NCwgNTAsIDY1LCAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjAsIDUzLCA2NSwgMjQ5LCAxNzksIDIyNSwgCi0gICAgMTY1LCAyNTAsIDE3NSwgMjIxLCA0MywgNjUsIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0NSwgMTUwLCA2NSwgCi0gICAgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjI5LCAzMSwgNjUsIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIAotICAgIDIxNywgMjAxLCA2NSwgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjM1LCAxMzcsIDY1LCAyNDksIDE3OSwgMjI1LCAKLSAgICAxNjUsIDI1MCwgMTc1LCAyMzQsIDQwLCA2NSwgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjI0LCAxNjAsIDY1LCAKLSAgICAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzQsIDg4LCA2NSwgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgCi0gICAgNjcsIDIzNSwgNjUsIDIxLCAyMTIsIDgwLCAyNDMsIDIwMCwgMjE5LCA2OSwgMjEsIDIxMiwgODAsIDI0OSwgMTU3LCAyMSwgCi0gICAgMTIyLCAyNDksIDE1NywgMjEsIDExNywgMjQ5LCAxNTcsIDIxLCAxMzMsIDI0OSwgMTU3LCAyMSwgMjQzLCAyMzcsIDI0OSwgCi0gICAgMTU3LCAyMSwgMjQ0LCA1MCwgMjQ5LCAxNTcsIDIxLCAyMjAsIDUzLCAyNDksIDE1NywgMjEsIDIyMSwgNDMsIDI0OSwgMTU3LCAKLSAgICAyMSwgMjQ1LCAxNTAsIDI0OSwgMTU3LCAyMSwgMjI5LCAzMSwgMjQ5LCAxNTcsIDg2LCA3LCA2LCAxLCA2MSwgODYsIDcsIDYsIAotICAgIDEsIDI1MywgNzQsIDg2LCA3LCA2LCAxLCAyNTAsIDI1MiwgODYsIDcsIDYsIDEsIDI0OSwgMywgODYsIDcsIDYsIDEsIDc0LCAKLSAgICA4NiwgNywgNiwgMSwgMjQ0LCAyMzAsIDg2LCA3LCA2LCAxLCAyNDMsIDE3NywgODYsIDcsIDYsIDEsIDI0MiwgNDEsIDg2LCAKLSAgICA3LCA2LCAxLCA3MiwgODYsIDcsIDYsIDEsIDIzNSwgMTQyLCA4NiwgNywgNiwgMSwgMjM1LCAyNywgODYsIDcsIDYsIDEsIAotICAgIDE1MCwgODYsIDcsIDYsIDEsIDE4MywgODYsIDcsIDYsIDEsIDIwNCwgODYsIDcsIDYsIDEsIDc1LCA4NiwgNywgNiwgMSwgCi0gICAgMjI2LCAyMjksIDg2LCA3LCA2LCAxLCAyMjQsIDI0MCwgODYsIDcsIDYsIDEsIDE0OSwgODYsIDcsIDYsIDEsIDE5NywgODYsIAotICAgIDcsIDYsIDEsIDIxOCwgOTksIDg2LCA3LCA2LCAxLCA2OSwgODYsIDcsIDYsIDEsIDIxNSwgNzksIDg2LCA3LCA2LCAxLCAKLSAgICAyMTQsIDgyLCA4NiwgNywgNiwgMSwgMjEzLCAxNjYsIDg2LCA3LCA2LCAxLCAyMTMsIDEwNSwgODYsIDcsIDYsIDEsIDIxMiwgCi0gICAgMTUyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDcsIDYsIDEsIDE5NywgMzYsIDMyLCA3LCA2LCAxLCAyNTAsIAotICAgIDI1MiwgMzYsIDMyLCA3LCA2LCAxLCAxNDksIDM2LCAyNTAsIDEyNSwgMzYsIDIxMywgMTY4LCA5MSwgNywgNiwgMSwgNjEsIAotICAgIDkxLCA3LCA2LCAxLCAyNTMsIDc0LCA5MSwgNywgNiwgMSwgMjUwLCAyNTIsIDkxLCA3LCA2LCAxLCAyNDksIDMsIDkxLCA3LCAKLSAgICA2LCAxLCA3NCwgOTEsIDcsIDYsIDEsIDI0NCwgMjMwLCA5MSwgNywgNiwgMSwgMjQzLCAxNzcsIDkxLCA3LCA2LCAxLCAyNDIsIAotICAgIDQxLCA5MSwgNywgNiwgMSwgNzIsIDkxLCA3LCA2LCAxLCAyMzUsIDE0MiwgOTEsIDcsIDYsIDEsIDIzNSwgMjcsIDkxLCA3LCAKLSAgICA2LCAxLCAxNTAsIDkxLCA3LCA2LCAxLCAxODMsIDkxLCA3LCA2LCAxLCAyMDQsIDkxLCA3LCA2LCAxLCA3NSwgOTEsIDcsIDYsIAotICAgIDEsIDIyNiwgMjI5LCA5MSwgNywgNiwgMSwgMjI0LCAyNDAsIDkxLCA3LCA2LCAxLCAxNDksIDkxLCA3LCA2LCAxLCAxOTcsIAotICAgIDkxLCA3LCA2LCAxLCAyMTgsIDk5LCA5MSwgNywgNiwgMSwgNjksIDkxLCA3LCA2LCAxLCAyMTUsIDc5LCA5MSwgNywgNiwgMSwgCi0gICAgMjE0LCA4MiwgOTEsIDcsIDYsIDEsIDIxMywgMTY2LCA5MSwgNywgNiwgMSwgMjEzLCAxMDUsIDkxLCA3LCA2LCAxLCAyMTIsIAotICAgIDE1MiwgOTEsIDI0MCwgMTkzLCA5MSwgMjMwLCAxMjAsIDkxLCAyMjIsIDEwMiwgOTEsIDIxOSwgMTU4LCA5MSwgMjI1LCA5OCwgCi0gICAgOTEsIDIxNCwgNywgMTQ2LCAzNiwgNywgNiwgMSwgNjEsIDE0NiwgMzYsIDcsIDYsIDEsIDI1MywgNzQsIDE0NiwgMzYsIDcsIAotICAgIDYsIDEsIDI1MCwgMjUyLCAxNDYsIDM2LCA3LCA2LCAxLCAyNDksIDMsIDE0NiwgMzYsIDcsIDYsIDEsIDc0LCAxNDYsIDM2LCAKLSAgICA3LCA2LCAxLCAyNDQsIDIzMCwgMTQ2LCAzNiwgNywgNiwgMSwgMjQzLCAxNzcsIDE0NiwgMzYsIDcsIDYsIDEsIDI0MiwgNDEsIAotICAgIDE0NiwgMzYsIDcsIDYsIDEsIDcyLCAxNDYsIDM2LCA3LCA2LCAxLCAyMzUsIDE0MiwgMTQ2LCAzNiwgNywgNiwgMSwgMjM1LCAKLSAgICAyNywgMTQ2LCAzNiwgNywgNiwgMSwgMTUwLCAxNDYsIDM2LCA3LCA2LCAxLCAxODMsIDE0NiwgMzYsIDcsIDYsIDEsIDIwNCwgCi0gICAgMTQ2LCAzNiwgNywgNiwgMSwgNzUsIDE0NiwgMzYsIDcsIDYsIDEsIDIyNiwgMjI5LCAxNDYsIDM2LCA3LCA2LCAxLCAyMjQsIAotICAgIDI0MCwgMTQ2LCAzNiwgNywgNiwgMSwgMTQ5LCAxNDYsIDM2LCA3LCA2LCAxLCAxOTcsIDE0NiwgMzYsIDcsIDYsIDEsIDIxOCwgCi0gICAgOTksIDE0NiwgMzYsIDcsIDYsIDEsIDY5LCAxNDYsIDM2LCA3LCA2LCAxLCAyMTUsIDc5LCAxNDYsIDM2LCA3LCA2LCAxLCAKLSAgICAyMTQsIDgyLCAxNDYsIDM2LCA3LCA2LCAxLCAyMTMsIDE2NiwgMTQ2LCAzNiwgNywgNiwgMSwgMjEzLCAxMDUsIDE0NiwgMzYsIAotICAgIDcsIDYsIDEsIDIxMiwgMTUyLCAxNDYsIDkxLCA3LCA2LCAxLCA2MSwgMTQ2LCA5MSwgNywgNiwgMSwgMjUzLCA3NCwgMTQ2LCAKLSAgICA5MSwgNywgNiwgMSwgMjUwLCAyNTIsIDE0NiwgOTEsIDcsIDYsIDEsIDI0OSwgMywgMTQ2LCA5MSwgNywgNiwgMSwgNzQsIAotICAgIDE0NiwgOTEsIDcsIDYsIDEsIDI0NCwgMjMwLCAxNDYsIDkxLCA3LCA2LCAxLCAyNDMsIDE3NywgMTQ2LCA5MSwgNywgNiwgMSwgCi0gICAgMjQyLCA0MSwgMTQ2LCA5MSwgNywgNiwgMSwgNzIsIDE0NiwgOTEsIDcsIDYsIDEsIDIzNSwgMTQyLCAxNDYsIDkxLCA3LCA2LCAKLSAgICAxLCAyMzUsIDI3LCAxNDYsIDkxLCA3LCA2LCAxLCAxNTAsIDE0NiwgOTEsIDcsIDYsIDEsIDE4MywgMTQ2LCA5MSwgNywgNiwgCi0gICAgMSwgMjA0LCAxNDYsIDkxLCA3LCA2LCAxLCA3NSwgMTQ2LCA5MSwgNywgNiwgMSwgMjI2LCAyMjksIDE0NiwgOTEsIDcsIDYsIAotICAgIDEsIDIyNCwgMjQwLCAxNDYsIDkxLCA3LCA2LCAxLCAxNDksIDE0NiwgOTEsIDcsIDYsIDEsIDE5NywgMTQ2LCA5MSwgNywgNiwgCi0gICAgMSwgMjE4LCA5OSwgMTQ2LCA5MSwgNywgNiwgMSwgNjksIDE0NiwgOTEsIDcsIDYsIDEsIDIxNSwgNzksIDE0NiwgOTEsIDcsIAotICAgIDYsIDEsIDIxNCwgODIsIDE0NiwgOTEsIDcsIDYsIDEsIDIxMywgMTY2LCAxNDYsIDkxLCA3LCA2LCAxLCAyMTMsIDEwNSwgCi0gICAgMTQ2LCA5MSwgNywgNiwgMSwgMjEyLCAxNTIsIDI0OSwgNjgsIDE0NiwgOTEsIDcsIDYsIDEsIDIyNiwgMjI5LCAxNDYsIDkxLCAKLSAgICAyNDAsIDEwNiwgMTQ2LCA5MSwgMTkzLCAxNDYsIDkxLCAyMjIsIDIwMiwgMTQ2LCA5MSwgMjU0LCAxODUsIDE0NiwgOTEsIAotICAgIDIxNCwgNywgNDEsIDI0NywgMTE2LCA5MSwgMjQ5LCAyMTYsIDkxLCAyNDksIDEwOSwgOTEsIDI0MywgMjIyLCA5MSwgMjQwLCAKLSAgICA5OCwgOTEsIDIyOSwgMTY4LCA5MSwgMjI5LCAxNjEsIDkxLCAyMjcsIDgwLCA5MSwgMjE5LCAyMjIsIDkxLCAxMTQsIDIsIAotICAgIDI0NCwgMjU0LCA3NywgOTEsIDIxNCwgMTAwLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCA2MSwgMjIzLCAyNTMsIDIzNSwgCi0gICAgMjM2LCAxNiwgMSwgMjUzLCA3NCwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjUwLCAyNTIsIDIyMywgMjUzLCAyMzUsIAotICAgIDIzNiwgMTYsIDEsIDI0OSwgMywgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgNzQsIDIyMywgMjUzLCAyMzUsIDIzNiwgCi0gICAgMTYsIDEsIDI0NCwgMjMwLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAyNDMsIDE3NywgMjIzLCAyNTMsIDIzNSwgMjM2LCAKLSAgICAxNiwgMSwgMjQyLCA0MSwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgNzIsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIAotICAgIDIzNSwgMTQyLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAyMzUsIDI3LCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAKLSAgICAxNTAsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDE4MywgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjA0LCAyMjMsIAotICAgIDI1MywgMjM1LCAyMzYsIDE2LCAxLCA3NSwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjI2LCAyMjksIDIyMywgMjUzLCAKLSAgICAyMzUsIDIzNiwgMTYsIDEsIDIyNCwgMjQwLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAxNDksIDIyMywgMjUzLCAyMzUsIAotICAgIDIzNiwgMTYsIDEsIDE5NywgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjE4LCA5OSwgMjIzLCAyNTMsIDIzNSwgMjM2LCAKLSAgICAxNiwgMSwgNjksIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDIxNSwgNzksIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIAotICAgIDIxNCwgODIsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDIxMywgMTY2LCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAKLSAgICAyMTMsIDEwNSwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjEyLCAxNTIsIDQxLCAxNDIsIDI0MSwgNDksIDkxLCA1NiwgCi0gICAgMjM0LCAyNywgOTEsIDU2LCAyMjIsIDIwMiwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDQzLCA5MSwgOSwgMjE1LCAxNDgsIAotICAgIDIzOCwgNDcsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA1NSwgOTEsIDU2LCAyNDgsIDQxLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgCi0gICAgNjIsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA0OSwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDIxLCA5MSwgOSwgMjE1LCAxNDgsIAotICAgIDIzOCwgNDgsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA2MSwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDM1LCA5MSwgOSwgMjE1LCAKLSAgICAxNDgsIDIzOCwgMjgsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAzNywgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDU4LCA5MSwgOSwgCi0gICAgMjE1LCAxNDgsIDIzOCwgNDQsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA2MCwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDM2LCAKLSAgICA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNTksIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAyMiwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIAotICAgIDI3LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMjAsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA1MCwgOTEsIDksIDIxNSwgMTQ4LCAKLSAgICAyMzgsIDUyLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMzAsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA0MSwgOTEsIDksIDIxNSwgCi0gICAgMTQ4LCAyMzgsIDM5LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNjUsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA2NCwgOTEsIDksIAotICAgIDIxNSwgMTQ4LCAyMzgsIDE4LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNDUsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA2MywgCi0gICAgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDU0LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNDAsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAKLSAgICAxOSwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDQyLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMjQsIDkxLCA5LCAyMTUsIDE0OCwgCi0gICAgMjM4LCAyMywgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDUzLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMzEsIDkxLCA5LCAyMTUsIAotICAgIDE0OCwgMjM4LCAzMywgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDM0LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMjYsIDkxLCA5LCAKLSAgICAyMTUsIDE0OCwgMjM4LCA1NywgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDUxLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIAotICAgIDksIDIxNSwgMTQ4LCAyMzgsIDMyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAyMzgsIDY0LCAKLSAgICAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAyMzgsIDYyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIAotICAgIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAyMzgsIDQ2LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAKLSAgICAyMzgsIDI5LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAyMzgsIDQyLCAyMTYsIDIxOSwgCi0gICAgMjIwLCAyMzMsIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAyMzgsIDI1LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDksIAotICAgIDIxNSwgMTQ4LCAyMzgsIDU2LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAyMzgsIDM4LCAzNiwgCi0gICAgMTQzLCAyNTQsIDE1MCwgMzYsIDE0MywgMjU0LCAxNzIsIDI0OSwgMTQsIDI0NCwgMTEsIDI0OSwgMTkzLCAyMTUsIDE2NCwgCi0gICAgMjI5LCA0NCwgMiwgMjE5LCA5MiwgMjE4LCAyMzMsIDExMCwgMjMwLCAxODQsIDIxOCwgMjMyLCAyNDksIDIxOSwgMjUzLCAKLSAgICAxMjMsIDI0NiwgOSwgMjE4LCAyMzEsIDExMCwgMjUxLCA0NywgMjI0LCA0OSwgMjUxLCA2OCwgMjUzLCAxMjMsIDIyOSwgNDMsIAotICAgIDIxNCwgMjUsIDIxNCwgMTksIDIxNCwgMTEyLCAyMzEsIDgsIDIxNCwgOSwgMjQ1LCAxODAsIDI0MiwgMTU3LCAyNDUsIDEyLCAKLSAgICAyNDUsIDE4MCwgMjQyLCAxNTcsIDI1NCwgMzcsIDI0NSwgMTgwLCAyNDIsIDE1NywgMjUzLCAxNDAsIDI0MiwgMTU3LCAyLCAKLSAgICAyMzEsIDExNSwgMTU2LCAyMzAsIDE5OSwgODcsIDIxNCwgMTEsIDI0OSwgNzcsIDIzMCwgMTk5LCA4NywgMjQ0LCA2MSwgCi0gICAgMjI0LCAxNjcsIDIzMCwgMTk5LCA4NywgMjE0LCAxMSwgMjQyLCAxODYsIDIzMCwgMTk5LCA4NywgMjQzLCAyMDAsIDIzMCwgCi0gICAgMTk5LCA4NywgMjE0LCAzNiwgMjQyLCAxODYsIDIzMCwgMTk5LCA4NywgMjMzLCAxMDMsIDIyNCwgMTY3LCAyMzAsIDE5OSwgCi0gICAgODcsIDIxNCwgMzYsIDI0OSwgNzcsIDIzMCwgMTk5LCA4NywgMjQ5LCA3NywgMjMwLCAxOTgsIDE1NiwgMjMwLCAxOTksIDIsIAotICAgIDI0NCwgMTU4LCAyNDQsIDYxLCAyMjQsIDE2NywgMjMwLCAxOTksIDIsIDI0NCwgMTU4LCAyMzMsIDEwMywgMjI0LCAxNjcsIAotICAgIDIzMCwgMTk5LCAyLCAyNDQsIDE1OCwgMjQzLCAyMDAsIDIzMCwgMTk5LCAyLCAyNDQsIDE1OCwgMjE4LCAyMzksIDIsIDI0NCwgCi0gICAgMTU4LCAyNDIsIDE1NSwgMjE5LCA5NSwgMjIwLCAxNzksIDIxOSwgOTUsIDI1MCwgNTMsIDIyMiwgODcsIDI0NSwgNiwgMjE2LCAKLSAgICAxOTMsIDI0OCwgMzUsIDIxNiwgMTkzLCAyMjYsIDE4NiwgMjE2LCAxOTMsIDI1MCwgMjEzLCAyMTYsIDczLCAyNTAsIDU1LCAKLSAgICAyNTEsIDEzMywgMjIzLCA5MywgMjQxLCAxNjQsIDIxOCwgMjM2LCAyNTEsIDEzMywgMjQ1LCAxODQsIDY1LCAyMzIsIDAsIAotICAgIDI0NSwgMTg0LCA2NSwgMjIzLCAxODQsIDI0MSwgMTg4LCAyNDMsIDIzNywgMjMzLCA3OCwgMjQ5LCAxODMsIDIzMSwgMjMzLCAKLSAgICAyMzMsIDc3LCAyNDQsIDE0NCwgMjMzLCA3NywgMjMzLCA3OCwgMjQ0LCAxNiwgMjM1LCAyNTIsIDIxMywgMjI0LCAyMzAsIAotICAgIDEyOCwgMjE2LCAyNDUsIDI1MywgMTA3LCAyNDIsIDExOSwgMjMxLCAxMzEsIDIxNCwgMjMsIDIxOCwgOCwgMjMzLCA1MCwgCi0gICAgMjUyLCA2OCwgMjI1LCAxOTQsIDIyNCwgNCwgMjUzLCAyMjMsIDI0MiwgMTA0LCAyNTMsIDIyMywgMjI2LCA5MiwgMjI2LCAKLSAgICA5MywgMjUwLCA1NiwgMjE5LCA1NCwgMjQyLCA2LCAyMjAsIDE4LCA2NSwgMjI1LCAxNzYsIDIzMSwgMTUyLCAyMjcsIDYzLCAKLSAgICAyNTEsIDExOSwgMjI1LCAxMDksIDIzMywgNjAsIDIyMywgMTg1LCAyNDksIDgyLCAyMjMsIDE4NSwgMjUyLCA3OCwgMjQ5LCAKLSAgICAxMTIsIDIyMywgMTg0LCAyNDksIDM2LCAyNCwgMjIzLCAxODQsIDIxOSwgODEsIDI1MSwgOTMsIDIxOSwgMjAyLCAyNTEsIAotICAgIDc4LCAyNDMsIDIyMSwgMjQzLCAyMTcsIDIyMywgMTA4LCAyMTgsIDE5MSwgMjI1LCAxMTEsIDI0OCwgMTIwLCAyMjcsIDEwMSwgCi0gICAgMjE4LCAyMDgsIDI0MywgMjE4LCAyMjAsIDE1NSwgMjQ0LCA2MCwgMjUwLCAyMDksIDIsIDIxOCwgMTg0LCAyNDcsIDI0MiwgCi0gICAgMjE5LCAyMzYsIDI0MCwgMTA1LCAyNDksIDgxLCAyMjAsIDI1MCwgMjQwLCAxMDQsIDI0MCwgMTA1LCAyNDksIDgxLCAyNDYsIAotICAgIDYyLCAyNDksIDExMSwgMjUwLCAyMSwgMTM0LCAyNTAsIDE4NiwgMjMyLCAxOTQsIDI0OSwgMzAsIDI0MSwgNDEsIDIyNSwgCi0gICAgMTEzLCAyMjAsIDE2NCwgMjUxLCAyMTMsIDI1MSwgODksIDIyNSwgMTE0LCA2NSwgMjQ0LCAyLCAyNDksIDExMCwgMjQzLCAKLSAgICAyNDksIDI0LCAyMzQsIDQxLCAyMTcsIDIyNywgMjEzLCAyMTYsIDI0MSwgMjUyLCAyMjIsIDE4MywgMjUxLCAxMDMsIDI0LCAKLSAgICAyNDksIDQzLCAyMTMsIDIyMiwgMjQyLCAxNjAsIDI0OSwgMTcyLCAyNDIsIDE2MCwgMjE2LCAxNTEsIDI0NiwgNDUsIDI1MSwgCi0gICAgMjM4LCAyMzAsIDE2MywgMjQ5LCAyMDAsIDI1MSwgMjM4LCAyMzAsIDE2MiwgMjUyLCAxMDQsIDI1MSwgMTAyLCAyMjMsIAotICAgIDE4NiwgMjEzLCAxODksIDIyNSwgNzUsIDI1MSwgMTU4LCAyNTAsIDIwOCwgMjM1LCAxMzYsIDI1MCwgMTQsIDIxNiwgMTkzLCAKLSAgICAyNDQsIDEzMCwgMjUwLCAxMywgMjQ0LCA2MywgMjQ0LCA2NCwgMjE5LCAyMDAsIDI1MiwgNzcsIDIyNiwgMTIyLCAyMjUsIAotICAgIDEyNCwgMjQ5LCAxNDMsIDI1MiwgNzgsIDIxOCwgMTAsIDIxNiwgMTkzLCAyNDksIDY4LCAyNDQsIDM2LCAyMjUsIDE5NSwgCi0gICAgMjQ4LCAzMiwgMjM1LCAxMzEsIDI0NywgODUsIDI1MCwgMTY0LCAyMTksIDUzLCAyMTMsIDIyNSwgMjUwLCAzNSwgMjMwLCAKLSAgICAxOTksIDIxNCwgMTQ0LCAyNTAsIDk2LCAyMjIsIDExNywgMjIyLCAxNDEsIDI0MiwgMTI0LCAyNTAsIDE4MywgMjUwLCAxNjUsIAotICAgIDI0MCwgMjMyLCAyNDQsIDk5LCAyMTMsIDI0MSwgMjIzLCAxMDIsIDI0OSwgMTczLCAyNDQsIDU1LCAyMjUsIDEzNiwgMjQsIAotICAgIDI0NCwgNTksIDIzMSwgNDAsIDIzMCwgMTc4LCAyNTAsIDE5OCwgMjQ5LCAyMzIsIDI0MSwgMjE2LCAyNTMsIDE1NiwgMjI2LCAKLSAgICAxODksIDIxNiwgMjI3LCAyNDEsIDIzNCwgMjQ5LCAyMjIsIDIxNywgMTk1LCAyMTcsIDY3LCAyNDksIDIxMywgMjUxLCAxMjUsIAotICAgIDIyNiwgNTIsIDI1MywgMTU1LCAyMTQsIDE1MCwgMjQzLCA4NiwgMjQ3LCAxNDksIDI0MSwgMTQyLCAyMjAsIDEyLCAyMzIsIAotICAgIDM5LCAyNTEsIDE2OCwgMjQzLCA4NywgMjQ3LCAxOTIsIDI1MSwgOTIsIDI0NCwgMjEsIDIyNSwgMTY1LCAyNTAsIDE3MywgCi0gICAgMjcsIDIyOCwgMTU4LCAyMzAsIDE1NSwgMjcsIDIyOCwgMTUzLCAyMjIsIDEzMCwgMjQyLCA4MCwgMjcsIDIzNCwgMTQzLCAKLSAgICAyMTYsIDE0OCwgMjE0LCAxMzUsIDI3LCAyMjIsIDExMSwgMjIzLCAzNSwgMjIwLCAxOTEsIDIsIDIyMiwgMTQzLCAyMTcsIAotICAgIDE5NywgMjI0LCA2OCwgMjQsIDI1MiwgNzgsIDIyMCwgMzMsIDI0LCAyMjAsIDMzLCAyNTEsIDExMiwgMjUyLCA0MywgMjQsIAotICAgIDI0MSwgMzYsIDI1MCwgNTcsIDI0NCwgNDIsIDIxOSwgMjQ3LCAyMjMsIDM2LCAyMTgsIDIxMiwgMjE2LCAxNTIsIDI0MCwgCi0gICAgMjMzLCAyMjQsIDY5LCAyNTQsIDM4LCAyNDQsIDAsIDIyMywgNDcsIDI0NCwgMCwgMjE4LCAxODYsIDI0MCwgMjIyLCAyNTEsIAotICAgIDQ4LCAyNDAsIDIyMiwgMiwgMjQzLCA3MCwgMjI3LCA5NSwgMjUxLCA0OCwgMjM1LCAxMzEsIDIyNSwgMTE5LCAyMjcsIDk0LCAKLSAgICAyNDUsIDExLCAyMjUsIDExOSwgMjI3LCA5NCwgMjQwLCAyMzEsIDI1MiwgNjQsIDI1MywgOTcsIDIxNywgMjA1LCAyMzIsIAotICAgIDM5LCAyNDAsIDIyNywgMjMyLCAxNjYsIDI0MCwgMjI3LCAyNDksIDExNSwgMjE5LCA2NSwgMjIyLCAxMTYsIDI0NywgMjUwLCAKLSAgICAyMTksIDY1LCAyNDQsIDE0OCwgMjM1LCAxNDcsIDIzMywgMTEzLCAyMzUsIDEzMSwgMjUwLCAxNTgsIDI0NSwgMTEsIDI1MCwgCi0gICAgMTU4LCAyMjQsIDMzLCAyMzAsIDE4MiwgMjI2LCAyMzgsIDIxNCwgMjUsIDI1MSwgNTIsIDI0OSwgODQsIDIxNywgNjAsIAotICAgIDIzMywgNDIsIDIyNCwgNzAsIDI1MCwgMTU2LCAyNDYsIDUwLCAyNDksIDc1LCAyMTMsIDI0NCwgMjE5LCAyNTQsIDIxOSwgCi0gICAgMjUyLCAyNDAsIDIzMiwgMjI0LCA0NSwgMjQyLCAxNDYsIDIyMCwgMjM3LCAyMzAsIDIxNSwgMjIzLCA5NiwgMjUwLCA0NSwgCi0gICAgMjQ3LCA5MCwgMjI1LCAyMDUsIDI1MSwgMTI2LCAyNDUsIDEyNiwgMjI3LCAxMDMsIDIxOSwgMTg0LCAyMjAsIDIzMiwgMjUxLCAKLSAgICA1MSwgMjU0LCAzLCAyNDEsIDQwLCAyMzMsIDE0NCwgMjUxLCAyMzYsIDI0NCwgNTksIDIxNiwgMTUxLCAyNDQsIDU5LCAyNTEsIAotICAgIDEzMiwgMjE2LCA1NSwgMjQxLCAyMzIsIDI1MCwgNDYsIDI1MiwgMTA0LCAyNTAsIDQ2LCAyNDMsIDIxMiwgMjUyLCAxMDQsIAotICAgIDI1MCwgNDYsIDI1MSwgMTYwLCAyMjYsIDcwLCAyMzQsIDM1LCAyMjUsIDEyOCwgMjQ2LCA0MiwgMjUwLCAxOTksIDI1MiwgCi0gICAgOTUsIDI1MCwgMTk5LCAyNDcsIDg0LCAyMzAsIDE4MywgMjQ0LCAxNTgsIDI0OSwgODUsIDI0NCwgMTU4LCAyMTcsIDYxLCAKLSAgICAyNDQsIDE1OCwgMjI0LCA3MSwgMjQ0LCAxNTgsIDI1MCwgMTU3LCAyNDQsIDE1OCwgMjQ2LCA1MSwgMjQ0LCAxNTgsIDIxOSwgCi0gICAgMTczLCAyMTMsIDI0NCwgMjQwLCAyMzMsIDI0NCwgMTU4LCAyMzAsIDIxNiwgMjQ0LCAxNTgsIDI0NywgOTEsIDI0NCwgMTU4LCAKLSAgICAyMjUsIDIwNiwgMjQ0LCAxNTgsIDI0MywgMjE1LCAyNDQsIDE1OCwgMjQyLCAzLCAyNDQsIDE1OCwgMjEzLCAyMTEsIDI0NCwgCi0gICAgMTU4LCAyNTEsIDI0NywgMjQ0LCAxNTgsIDIyNiwgMTcyLCAyNDQsIDE1OCwgMjI1LCAyMDYsIDIyOCwgMTY0LCAyMjYsIAotICAgIDEwNiwgMjI1LCA2NywgMjQ0LCAyMzcsIDI0NSwgMTgzLCAyMjgsIDE2NCwgMjMwLCAxODAsIDIxNiwgMjMyLCA2NywgMTE0LCAKLSAgICAyMjUsIDE0MSwgMjUyLCA5OSwgMjM1LCAyMzksIDY3LCAxMTksIDIyNSwgMTQxLCAyNTIsIDk5LCAyMzUsIDIzOSwgNjcsIAotICAgIDQyLCAyMjUsIDE0MSwgMjUyLCA5OSwgMjM1LCAyMzksIDY3LCA0NiwgMjI1LCAxNDEsIDI1MiwgOTksIDIzNSwgMjM5LCAKLSAgICAyNDQsIDUzLCAyNDEsIDI1NSwgNTIsIDIxNCwgMTcsIDI0MSwgMjU1LCA1MiwgMjI3LCA4MSwgMjQxLCAyNTUsIDUyLCAyMTcsIAotICAgIDg5LCAxMTQsIDUyLCAyMTcsIDg5LCAxMTksIDUyLCAyNDksIDIxMiwgMjQxLCAyNTAsIDUyLCAyMjcsIDQwLCAyNDEsIDI1MCwgCi0gICAgNTIsIDI0OSwgNjMsIDIxMywgMjA3LCAyNDEsIDIzNCwgMjQ0LCAyMzgsIDIyOSwgMTg1LCAyMTgsIDk4LCAyMzUsIDEyNiwgCi0gICAgMjQ2LCA0NywgMjM0LCA5MSwgMjUxLCAxNzAsIDIxMywgMjA3LCAyNDksIDE4NiwgMjI1LCAxNCwgMjQxLCAyNTMsIDIyNSwgCi0gICAgMTEwLCAyMzEsIDI0MCwgMjIwLCAxODQsIDI1MywgMTE5LCAyMjAsIDE4NCwgMjQxLCAxNTAsIDIyMCwgMTg0LCAyMTMsIAotICAgIDIwNywgMjIyLCAxNTYsIDIxMywgMjA3LCAyNTEsIDExMSwgMjQzLCAyNTQsIDI1MSwgMTksIDIzNSwgMjUyLCAyMjAsIDk1LCAKLSAgICAyNTEsIDE4LCAyMzUsIDI1MiwgMjIwLCA5NSwgMjUxLCA4OCwgMjQyLCAxNzAsIDIzMSwgMjQ4LCAyMTMsIDIwOCwgMjQ0LCAKLSAgICAxNDIsIDIzMSwgMjQ5LCAyNCwgMjEzLCAyMDksIDI0MSwgNDYsIDI0MSwgMjQ5LCAxMTcsIDIzMSwgMTIzLCAyNDEsIDQ2LCAKLSAgICAyNDEsIDI0OSwgMTE3LCAyMTMsIDIwNiwgMjQxLCA0NiwgMjQxLCAyNDksIDIyNSwgMTMzLCAyMjcsIDkzLCAyMTMsIDIwOSwgCi0gICAgMiwgMjUxLCAzNSwgMjQ1LCAxODEsIDI1MSwgNjksIDIsIDIxNCwgMjIzLCAyMjYsIDQ0LCAyLCAyNTEsIDEzNSwgMjQyLCAKLSAgICAxNiwgMjMxLCAyNDksIDIsIDI0MiwgODksIDIyNSwgMjQxLCAyMzEsIDIzNywgMjMxLCAyNDksIDIsIDIxNiwgNjEsIDIyNywgCi0gICAgNzQsIDIzMSwgMjQ4LCAyMjcsIDc0LCAyMTMsIDIwOCwgMjUyLCAxMDMsIDI0OSwgMTI5LCAyMTMsIDE5MiwgMjI1LCA3MCwgCi0gICAgMjM1LCAxMzEsIDIyNywgODksIDIzNSwgMTMxLCAyNDIsIDE0NSwgMjQyLCAxOTgsIDI1MiwgMTA0LCAyNTQsIDIyLCAyNDQsIAotICAgIDI0MiwgMjU0LCA2OSwgMjU0LCA3MCwgMjMwLCAyMDYsIDIzNiwgMSwgMjIwLCAyOCwgMjM1LCAyMjksIDI0NywgMjQxLCAKLSAgICAyMjYsIDQzLCAyNDIsIDg2LCAyNDgsIDEyNCwgMjMyLCAyMzAsIDIzMCwgMzAsIDIyNSwgMTMyLCAyNDQsIDE1OSwgMjMxLCAKLSAgICAyMDUsIDI0MiwgMTUsIDI1MiwgNTgsIDIyNSwgMTM1LCAyMTgsIDExNywgMjI1LCAxOTgsIDIzNCwgNzMsIDc3LCAyMzIsIAotICAgIDE2NiwgMjMzLCAzNCwgMjIzLCAxMzAsIDI0MywgMzAsIDIxOSwgNzEsIDIzNCwgNzIsIDI1MSwgOTcsIDI0OSwgODcsIDIsIAotICAgIDI0MSwgMjExLCAyMTQsIDMsIDI1MSwgMjQ1LCAyNDEsIDIxMSwgMjUxLCA2MywgMjQxLCAyMTEsIDExNywgMjQxLCAyMDksIAotICAgIDIxOSwgMTk4LCAyNDEsIDIxMSwgMjQyLCA5OCwgMjQxLCAyMTEsIDI0MSwgMjEyLCAyLCA2OCwgMjUxLCAxMzEsIDI0MSwgCi0gICAgMjExLCAyNDIsIDEwNCwgMjQxLCAyMTEsIDIxMywgMzMsIDI0MSwgMjExLCAyMjUsIDE1LCAyNDEsIDIxMSwgMjQxLCAyMTIsIAotICAgIDIsIDIyMywgMTg2LCAyMjMsIDE5NywgMjQxLCAyMDksIDI0MSwgMjEyLCAyNDgsIDMyLCAyNDcsIDIwMSwgMjIxLCA1LCAyLCAKLSAgICAxMTgsIDYyLCAyMzUsIDIxMiwgMjQ1LCAxMjksIDE3NywgMjUxLCA0NSwgMjU0LCAyMSwgODcsIDI1MSwgMTIwLCAyMjAsIAotICAgIDIwLCA4NywgMjQ5LCAxNjYsIDg3LCAyMTksIDE3OCwgMjE4LCAxOTMsIDg3LCAyNDYsIDQwLCAyNDgsIDEwMiwgODcsIDIyNSwgCi0gICAgMTk5LCA2NSwgMjI1LCAxMjksIDI0NCwgMzAsIDI1MSwgMTgxLCAyNDcsIDExNywgODcsIDIxOSwgMTkxLCAyNTIsIDc3LCAKLSAgICAyMTcsIDEwMiwgMjUyLCA3NywgNjcsIDI0NCwgMjAsIDI0MCwgMjAxLCAyMjUsIDEzOSwgODcsIDIzMCwgMjE5LCAyNTIsIAotICAgIDkwLCAyNDksIDM5LCAyNDQsIDI1NSwgMTA3LCAyNDcsIDg2LCA1MiwgMjQ5LCA3OSwgMjUwLCAxNzQsIDI1MiwgNjMsIDIsIAotICAgIDIxMywgMzEsIDUyLCAyNTIsIDYzLCAyLCAyNDcsIDg2LCA1MiwgMjUyLCA2MywgMiwgMjQ1LCAxNCwgNTIsIDI1MiwgNjMsIAotICAgIDIsIDIyNSwgMTA4LCA1MiwgMjMwLCAyMTksIDIsIDIxMywgMjIwLCAyNTAsIDc0LCAyLCAyMTUsIDEyNCwgMjE2LCAxODksIAotICAgIDI0LCAyMTMsIDMxLCA1MiwgMjIyLCA5NywgMjI2LCA0MiwgMjQ5LCAxNDcsIDI1MSwgNjcsIDIzMCwgMjU1LCAyNDQsIDI1LCAKLSAgICAyNDcsIDEzNywgMjI3LCAyNywgMjQ3LCAxNDIsIDI0NiwgNCwgMjQ0LCA3NiwgMjQ0LCA5LCAyMjcsIDQwLCAyNDQsIDc2LCAKLSAgICAyNDQsIDksIDIyNiwgMjAxLCAyLCAyNDksIDQxLCAyMjYsIDIwMSwgMjQ0LCAxNTEsIDIxNSwgMTM0LCAyNTAsIDIwNCwgCi0gICAgMjE3LCAyMjYsIDI1MCwgMjA0LCAyNTAsIDE3NSwgMjM1LCAyMzksIDI1MCwgNzQsIDIsIDIxNSwgMTI0LCAyMTYsIDE4OCwgCi0gICAgMjUwLCA3NCwgMiwgMjQ2LCA1OCwgMjE2LCAxODgsIDI1MiwgNjAsIDI1MCwgNzMsIDI0OSwgMTk5LCAyMjUsIDEwLCAyMjMsIAotICAgIDg3LCAyMjUsIDEwLCAyMjYsIDE0NywgMjE5LCA2MSwgMjIzLCA0MiwgMjE2LCAxODAsIDIyMywgNDIsIDI1MSwgMTE2LCAKLSAgICAyMTgsIDM5LCAyMzMsIDc1LCAyMjgsIDE1NiwgMjI4LCAxNTcsIDIsIDI0OCwgMzEsIDI0OSwgODYsIDI0OSwgMTkzLCAyNTEsIAotICAgIDExNywgMjI3LCA0MCwgMjUxLCAxMTcsIDI0MiwgMTA0LCAyNTEsIDExNywgMjUxLCAxMzEsIDI1MSwgMTE3LCAyMjcsIDIzLCAKLSAgICAyNTEsIDExNywgMjUxLCAxMTQsIDIzMCwgMjUsIDI1MiwgOTMsIDIyMiwgMTA1LCAyMzEsIDEyNCwgMjE3LCAyMTAsIDIyNCwgCi0gICAgMTYsIDIyNiwgMTk5LCAyNDQsIDEyNywgMjMyLCAzOSwgMjIyLCAxNDAsIDI1NCwgMCwgMjI1LCAzMSwgMjU0LCAxNTcsIAotICAgIDIzMiwgMTY4LCAyNTAsIDYzLCAyMzEsIDEzNiwgMjI2LCAyNTMsIDIxNiwgMTk2LCAyMzUsIDI0OCwgMjE2LCAxOTYsIDIyNiwgCi0gICAgMjA2LCAyNDUsIDIzNiwgODcsIDIzNSwgMjQ1LCAyNDUsIDc4LCAyNDUsIDc5LCAyLCAyNDYsIDU4LCA3NiwgNDksIDI0OSwgCi0gICAgMTkzLCAyMzIsIDYsIDIsIDIzMiwgMTYyLCAyNDQsIDQyLCAyNDksIDE5MywgMjMyLCA2LCAyLCAyMjQsIDQ4LCAyNDQsIDQyLCAKLSAgICAyMjcsIDQwLCAyMzIsIDYsIDIsIDIyNCwgNDgsIDI0NCwgNDIsIDIyNywgNDAsIDIzMiwgNiwgMiwgMjMyLCAxNjIsIDI0NCwgCi0gICAgNDIsIDIyNSwgMTE2LCAyMjUsIDExNywgMjQwLCAyMzUsIDIyOSwgMTY2LCAyMzAsIDIyOSwgMjI1LCAyNDksIDIzMCwgMjI5LCAKLSAgICAyMjUsIDI1MCwgMiwgOTUsIDc2LCAyNTMsIDEyMywgMjMzLCA3MCwgMjE0LCAxNTMsIDIzMCwgMjI4LCAyMzAsIDIyOSwgCi0gICAgMjI1LCAyNTAsIDIyNywgOTYsIDIyOCwgMTg2LCAyMzAsIDIyOSwgMjI1LCAyNDgsIDI1NCwgMSwgMiwgMjUyLCA0OSwgMjUwLCAKLSAgICAxOTgsIDIxNCwgMTUwLCAyNTAsIDE5OCwgMjE3LCAyMDcsIDIyNCwgNjMsIDIxNCwgMTQ5LCAyMTYsIDI1LCA5NSwgMjUzLCAKLSAgICAxNjIsIDI0OSwgMTk1LCA5NSwgMjQsIDEzMiwgMjI3LCA0MCwgMjQ5LCAyMjksIDI1MywgMTYyLCAyNDksIDE5NSwgOTUsIAotICAgIDI0LCAxMzIsIDIyNywgNDAsIDI0OSwgMjI5LCAyNTMsIDE2MywgMiwgMzYsIDEyMiwgMjI2LCAyNDQsIDI0OSwgMTk1LCAKLSAgICAyNDYsIDU4LCAyNCwgMjE1LCAxMjQsIDIyNywgNDAsIDI0OSwgMjI5LCAyNTMsIDE2MiwgMjUzLCAyNTUsIDI0NiwgNTgsIAotICAgIDI0LCAyMTUsIDEyNCwgMjI3LCA0MCwgMjQ5LCAyMjksIDI1MywgMTYyLCAxMTUsIDI1MSwgNjYsIDg3LCAxMjQsIDI1MSwgCi0gICAgNjYsIDg3LCAyMTksIDE5NSwgMiwgMjUwLCAxOTIsIDkwLCAyMTksIDE5NCwgMjE5LCAxOTUsIDIsIDEyMiwgMjE5LCAyMTgsIAotICAgIDIxNCwgMTksIDIxOSwgMTk1LCAyLCAxMzMsIDIxOSwgMjE4LCAyMTQsIDE4LCAyNTIsIDM1LCAyNDUsIDEyOSwgMjI1LCAKLSAgICAxNjEsIDIzMywgNjYsIDIzMiwgMTYsIDI0MiwgMTYwLCAyMjMsIDE0NCwgMjMyLCAxNiwgMjQyLCAxNjAsIDIzMiwgMjA0LCAKLSAgICAyLCAyMzUsIDIyMiwgMjI2LCA3NCwgMjQ5LCAxOTMsIDIzMiwgMjA0LCAyLCAyMzQsIDE0NCwgMjM0LCAxNDQsIDIzMiwgCi0gICAgMjAzLCAyMjcsIDQwLCAyMzIsIDIwMywgMjUxLCAyMjEsIDI1MSwgMjIyLCAyLCAyNTAsIDE5MiwgOTAsIDI1MSwgMTE1LCAKLSAgICAyMzIsIDIzMywgODcsIDIyNCwgNjQsIDI1MSwgMTUsIDI1MiwgMTAyLCAyLCAxMzIsIDc2LCA0OSwgMjQ1LCAxMDEsIDIsIAotICAgIDEzMiwgNzYsIDQ5LCAyMjcsIDYzLCAyLCAyNDQsIDI1NCwgMTUyLCAyLCA0MiwgNDYsIDc2LCA0OSwgMjE5LCAyMjUsIDIsIAotICAgIDk1LCA3NiwgNDksIDIxNiwgMjI3LCAyLCAyMTUsIDEyNCwgNzYsIDQ5LCAyMjgsIDE4NiwgMTIyLCAyMTUsIDE1NCwgMjQ1LCAKLSAgICAxNDgsIDg3LCAyMzQsIDE0MiwgMjE3LCAyMDAsIDIzNSwgMjE2LCAxNiwgMzEsIDcsIDYsIDIzMywgMzMsIDIzNSwgMjE2LCAKLSAgICAxNiwgMzEsIDcsIDMsIDIzMywgMzMsIDIzNSwgMjE2LCAxNiwgMzEsIDIyOCwgNTUsIDIzNSwgMjE2LCAxNiwgMzEsIDIxOCwgCi0gICAgMTI4LCAyMzUsIDIxNiwgMTYsIDMxLCA3LCAyMzMsIDMzLCAyNDQsIDY1LCAyNDUsIDEyOSwgMjE2LCAyMjIsIDIxMywgMTg3LCAKLSAgICAyNDIsIDQsIDIyOCwgMzgsIDI0LCAyNTEsIDEyMSwgMjQxLCA1MiwgMjI1LCAxODIsIDIzMSwgMzksIDIxNywgMjA4LCAyNDksIAotICAgIDU0LCAyNTIsIDc4LCAyMjAsIDUzLCAyMjUsIDE0MywgMjE5LCA5NiwgMiwgMjMxLCAzNywgMjQ3LCA3NCwgMjM1LCAxMzEsIAotICAgIDE2LCAzMSwgMjUxLCAyMzMsIDIxNiwgMTc4LCAyNDUsIDExNCwgODMsIDQxLCAyNTEsIDE1LCA2NywgNDEsIDI1MSwgMTUsIAotICAgIDIzMywgMTA4LCAyMjQsIDQsIDI0OSwgMjI4LCAyMzMsIDEwOCwgMjUxLCAxMzEsIDI0OSwgMjI4LCAyMzMsIDEwOCwgMjI3LCAKLSAgICAyMywgMjQ3LCAyMDAsIDIzMywgMTA4LCAyNTEsIDEzMSwgMjQ3LCAyMDAsIDMsIDIyNywgMjMsIDI0NywgMjAwLCAzLCAyNTEsIAotICAgIDEzMSwgMjQ3LCAyMDAsIDIxNSwgMTMzLCAyMjQsIDQsIDIxNiwgMTgzLCAyNDYsIDU5LCAyMjQsIDQsIDIxNiwgMTgzLCAKLSAgICAyMTUsIDEzMywgMywgMjI0LCA0LCAyMTYsIDE4MywgMjQ2LCA1OSwgMywgMjI0LCA0LCAyMTYsIDE4MywgMjQ5LCAxOTcsIAotICAgIDI0NCwgMTU5LCAxMjIsIDIyNywgMTA2LCAyNDksIDE5NywgMjQ0LCAxNTksIDExNywgMjI3LCAxMDYsIDI0OSwgMTk3LCAKLSAgICAyNDQsIDE1OSwgMTMzLCAyMjcsIDEwNiwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyNDMsIDIzNywgMjI3LCAxMDYsIDI0OSwgCi0gICAgMTk3LCAyNDQsIDE1OSwgMjQ0LCA1MCwgMjI3LCAxMDYsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjIwLCA1MywgMjI3LCAxMDYsIAotICAgIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjIxLCA0MywgMjI3LCAxMDYsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjQ1LCAxNTAsIDIyNywgCi0gICAgMTA2LCAyNDksIDE5NywgMjQ0LCAxNTksIDIyOSwgMzEsIDIyNywgMTA2LCAyNDksIDE5NywgMjQ0LCAxNTksIDIxNywgMjAxLCAKLSAgICAyMjcsIDEwNiwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyNDUsIDEyNSwgMjI3LCAxMDYsIDI0OSwgMTk3LCAyNDQsIDE1OSwgCi0gICAgMjE2LCA0MiwgMjI3LCAxMDYsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjI3LCA1OCwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyMTYsIAotICAgIDIyLCAyNDksIDE5NywgMjQ0LCAxNTksIDIxNywgOTQsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjQzLCAyMzMsIDI0OSwgMTk3LCAKLSAgICAyNDQsIDE1OSwgMjQ0LCA0OCwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyMjAsIDQ5LCAyNDksIDE5NywgMjQ0LCAxNTksIDIyMSwgCi0gICAgNDIsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjQ1LCAxNDksIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjI5LCAzMCwgMjQ5LCAxOTcsIAotICAgIDI0NCwgMTU5LCAyMTcsIDE5OSwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyNDUsIDEyMywgMjQ5LCAxOTcsIDI0NCwgMTU5LCAKLSAgICAyMTYsIDQwLCAyMzAsIDE4NywgMjQzLCAyMDEsIDIxNiwgMjQ3LCAyMTYsIDIxNSwgMjE5LCA4OCwgNjUsIDIzMywgMTEsIAotICAgIDIyMCwgOTYsIDY1LCAyMzUsIDEzMiwgMjMwLCAxNzYsIDI0MiwgMTAyLCAyNDQsIDE1OSwgMiwgMjIwLCAyLCAyNDQsIDIzNywgCi0gICAgMjQ0LCAxNTksIDIsIDIxNywgMjIyLCA2NSwgMjM1LCA1NiwgMjIwLCAyLCAyNDQsIDE1OSwgMiwgMjI3LCA0MCwgMjMwLCAKLSAgICAxODAsIDIyMCwgMiwgMjQ0LCAxNTksIDIsIDIyNywgNDAsIDIzMCwgMTgxLCAyNCwgMjIwLCAyLCAyNDQsIDIzNywgMjIwLCAKLSAgICAyLCAyNDQsIDE1OSwgMiwgMjI3LCA0MCwgMjMwLCAxODEsIDI0LCAyNDksIDE2OCwgMjE4LCAxOTIsIDIyMCwgMiwgMjQ0LCAKLSAgICAxNTksIDIsIDIyNywgNDAsIDIzMCwgMTgxLCAyNCwgMjE3LCA1OCwgMjQ0LCAyMzcsIDIyMCwgMiwgMjQ0LCAxNTksIDIsIAotICAgIDI0MiwgOCwgMjIwLCAyLCAyNDQsIDE1OSwgMiwgMjQwLCAyMzQsIDIxMywgMjE4LCAyNDQsIDE1OCwgMjIwLCAyLCAyNDQsIAotICAgIDE1OSwgMiwgMjIwLCAyLCAyNDQsIDIzNywgMjQ0LCAxNTksIDIyMiwgMTM1LCAyNDgsIDEzLCAyNDQsIDIsIDIyMywgMjM4LCAKLSAgICAyNDQsIDE1OCwgMjIwLCAyLCAyNDQsIDE1OSwgMiwgMjQxLCAyMTAsIDI0NCwgMjM3LCAyMjAsIDIsIDI0NCwgMTU5LCAyLCAKLSAgICAyMTgsIDIzNCwgMjIwLCAxLCAyNDQsIDE1OCwgMjI5LCAxNjksIDI0NCwgMTU4LCAyMTUsIDE1OCwgMjQ0LCAxNTgsIDI0NCwgCi0gICAgMTU5LCAyLCAyNDksIDE2OCwgMjE4LCAxOTIsIDIyNiwgNjcsIDI0NCwgMTU4LCAyNDksIDE0MSwgMjQ0LCAxNTgsIDI0NCwgCi0gICAgMTU5LCAyMTcsIDkxLCAxMTgsIDIzNCwgNzIsIDIzNCwgNzEsIDI0NCwgMTU5LCAyLCAyNDksIDE5MywgMjQ0LCAyMzcsIAotICAgIDI0NCwgMTU5LCAyLCAyMTksIDMxLCAyMTYsIDIzMywgMjQsIDIxMywgMjE4LCAyNDQsIDIzOSwgMjQ0LCAxNTksIDIsIDIxOSwgCi0gICAgMzEsIDIxNiwgMjMzLCAyNCwgMjE3LCA1OCwgMjQ0LCAyMzcsIDI0NywgMTQ0LCAyNDQsIDE1OCwgMjU0LCAxNywgMjQ0LCAKLSAgICAxNTgsIDIyNSwgMTA3LCAyNDQsIDE1OCwgMjQ5LCA1NiwgMjQ0LCAxNTgsIDIyNiwgNDYsIDI0NCwgMTU4LCAyNDQsIDE1OSwgCi0gICAgMiwgMjMyLCAxNzksIDY1LCAyMTYsIDE2MiwgMjQ3LCAxNDQsIDI1MSwgMTcsIDIyMywgMjM4LCAyNDQsIDE1OCwgMjQ0LCAKLSAgICAxMjEsIDI0NCwgMTU4LCAyMTQsIDQsIDI0NCwgMTU4LCAyMjAsIDE5LCAyNDQsIDE1OCwgMjE3LCAyNCwgMjQ0LCAxNTgsIAotICAgIDIzMiwgMTY5LCAyNDksIDU2LCAyNDQsIDE1OCwgMjQ0LCAxNTksIDIsIDIyNywgNDAsIDIzMCwgMTgxLCAyNCwgMjQ5LCAKLSAgICAxNjgsIDIxOCwgMTkyLCAyNDQsIDE1OSwgMjIyLCAxMDksIDIzNSwgMjUyLCAyNDQsIDEyMiwgMjUzLCAxMjksIDI0NCwgCi0gICAgMTU4LCAyNDQsIDE4LCAyNDQsIDE1OCwgMjQ3LCAxMTcsIDI0NCwgMTU4LCAyNDQsIDE1OSwgMjEzLCAyMTYsIDIzMCwgMTgwLCAKLSAgICAyNDQsIDE1OSwgMiwgMjMxLCAxNDksIDIzMSwgMjA3LCAyNDIsIDEwMiwgMjUwLCAxNTcsIDI0NCwgMTU5LCAyLCAyMjAsIDIsIAotICAgIDI0NCwgMjM3LCAyNTAsIDE1NywgMjQ0LCAxNTksIDIsIDIxNywgMjIyLCA2NSwgMjM1LCA1NiwgMjIwLCAyLCAyNTAsIDE1NywgCi0gICAgMjQ0LCAxNTksIDIsIDIyNywgNDAsIDIzMCwgMTgwLCAyMjAsIDIsIDI1MCwgMTU3LCAyNDQsIDE1OSwgMiwgMjQxLCAyMTAsIAotICAgIDI0NCwgMjM3LCAyNTAsIDE1NywgMjQ0LCAxNTksIDIsIDIxMywgMTg0LCAyMjAsIDMsIDIzNCwgNzEsIDI1MCwgMTU3LCAKLSAgICAyNDQsIDE1OSwgMiwgMjQ5LCAxOTMsIDI0NCwgMjM3LCAyMjUsIDEwNywgMjUwLCAxNTcsIDI0NCwgMTU4LCAyNDksIDU2LCAKLSAgICAyNTAsIDE1NywgMjQ0LCAxNTgsIDIxNCwgNCwgMjUwLCAxNTcsIDI0NCwgMTU4LCAyNDQsIDE1OSwgMiwgMjI4LCAxODYsIAotICAgIDI0MiwgMTM5LCAyNDMsIDEwLCAyNDQsIDE1OSwgMiwgMjI3LCA4MSwgMjQzLCAxMCwgMjI2LCA0NCwgMjUxLCA5NCwgMjQ4LCAKLSAgICAyNiwgMjIyLCA4OCwgMjMwLCAyMTUsIDI0MSwgMjEzLCAyMzAsIDIxNSwgMjE5LCAxOTYsIDIzMCwgMjE1LCAyNDEsIDI0NCwgCi0gICAgMjI2LCA0NCwgMjI0LCA0NywgMTIyLCAyNDEsIDI1NCwgMjI2LCA0NCwgMjI0LCA0NywgMjUxLCAxMDQsIDI0MSwgMjUwLCAKLSAgICAyMzUsIDI1MiwgMjUwLCAxMTMsIDIyNiwgNDQsIDI0MywgMjA4LCAyMjYsIDQ0LCAyLCAyMjUsIDEwNywgMjQ0LCAxNTgsIAotICAgIDIyNiwgNDQsIDIsIDI0NCwgMTAsIDI0MSwgMjQ5LCAyMjMsIDEwNCwgMjQxLCAxOTgsIDIxOSwgODMsIDIzMiwgMjAyLCAKLSAgICAyMjQsIDUzLCAyNTAsIDE3NiwgMjQxLCAxNDgsIDIxNiwgMjA1LCAyNDEsIDE0OCwgMjE2LCAyMDYsIDIsIDI1MSwgNDMsIAotICAgIDIyOCwgMTY0LCAyMTYsIDIwNSwgMjMxLCA5OSwgMTc3LCAyMjQsIDU0LCAyMTksIDg5LCAyMTYsIDIwMywgMjE2LCAyMDQsIAotICAgIDI1MCwgMTc2LCAyNTEsIDIxLCAyMjcsIDYwLCAyNTEsIDIxLCAyMTYsIDE1OSwgMjUxLCAyMiwgMjE5LCA2OSwgMjMxLCAwLCAKLSAgICAyNTQsIDM5LCAyNDQsIDY2LCAyNDUsIDk1LCAyMjUsIDEzMywgMjUwLCAxNzYsIDIyNywgNjAsIDIyNSwgMTMzLCAyNTAsIAotICAgIDE3NiwgMjE3LCAyMzksIDIyNywgNjAsIDIxNywgMjM5LCAyNTMsIDk2LCAyMjcsIDYwLCAyNTMsIDk2LCAyMjQsIDExLCAKLSAgICAyMTQsIDIyNCwgMjQ4LCA5LCAyMTYsIDE1MCwgMjUzLCAxNTcsIDIzMiwgMTcyLCAyMTYsIDIxMSwgMjMwLCAyMDksIDIzMCwgCi0gICAgMTg2LCAyMjQsIDUyLCAyMTgsIDIwNywgMjI0LCA1MiwgMjMwLCAxODYsIDI1MCwgMjE0LCAyNTQsIDEzNCwgMjE2LCAyMDIsIAotICAgIDIyMCwgMTk2LCAyMjMsIDg0LCAyMTksIDE4OSwgMTk5LCAyMTYsIDIwOSwgMjMzLCAyLCA3MSwgMjE2LCAyMDksIDIzMywgMiwgCi0gICAgMjQ5LCAxMjksIDUyLCAyMjUsIDEzMywgMjUwLCAxNjEsIDIyMywgMTk3LCAyMzMsIDIsIDIxNiwgMTgwLCAyNDQsIDQzLCAKLSAgICAyMjcsIDYzLCAyMjUsIDExOCwgMjQ3LCA3NywgMjI4LCAxODYsIDI0NSwgODQsIDUyLCAyMjAsIDAsIDg3LCAyMjgsIDE4NiwgCi0gICAgMjIwLCAwLCA4NywgMjI1LCA5LCAyMzIsIDIyMiwgMjM1LCAyNTIsIDIzNSwgMTU1LCAyMjUsIDE3MywgODcsIDI0NywgMTAwLCAKLSAgICAyMjgsIDE2MywgMjMyLCAyMjIsIDg3LCAyMjUsIDExMiwgMjE0LCAyNSwgODcsIDIyOCwgMTc3LCAyMTQsIDI1LCA4NywgCi0gICAgMjUxLCAxODAsIDIyOCwgMTg2LCAyNTEsIDE3OSwgMjUxLCAxNzgsIDIzMCwgMTg2LCAyNTEsIDE3OCwgMjI2LCA4OCwgMjI4LCAKLSAgICAxODYsIDIyNiwgODcsIDI1MCwgMzcsIDI0OSwgNjQsIDIzMSwgMTIwLCA4NywgMjEzLCAyMDUsIDg3LCAyMjMsIDIxMSwgCi0gICAgMjUyLCAxMDQsIDg3LCAyMTYsIDI0OCwgMjE0LCAyNSwgMjQ5LCAxOTAsIDIyMCwgMTU4LCAyNTIsIDM4LCAyNTIsIDM2LCAKLSAgICAyMjYsIDExNSwgMjQ5LCAxMTYsIDI0OSwgMjgsIDI1MiwgODcsIDI0OSwgMjE1LCA0MiwgMjMyLCAxNDgsIDEwNCwgMTYsIAotICAgIDMxLCAyMjQsIDE0OCwgMTA0LCAxNiwgMzEsIDI1NCwgMTAwLCAxMDQsIDE2LCAzMSwgMjQ0LCA2NSwgMTA0LCAxNiwgMzEsIAotICAgIDI0NSwgMTc5LCAxMDQsIDE2LCAzMSwgMjE0LCAyNCwgMTA0LCAxNiwgMzEsIDI1MywgMjEzLCAxMDQsIDE2LCAzMSwgMjUzLCAKLSAgICAyMTQsIDIyMywgMjU1LCAxMDQsIDE2LCAzMSwgMjUzLCAyMTQsIDIyMywgMjU0LCAxMDQsIDE2LCAzMSwgMjUzLCAyMTQsIAotICAgIDIxNCwgMTI0LCAxMDQsIDE2LCAzMSwgMjUzLCAyMTQsIDIxNCwgMTIzLCAxMDQsIDE2LCAzMSwgMjE0LCAxMzgsIDEwNCwgCi0gICAgMTYsIDMxLCAyMTQsIDEzNywgMTA0LCAxNiwgMzEsIDIxNCwgMTM2LCAxMDQsIDE2LCAzMSwgMjE4LCAyNDUsIDEwNCwgMTYsIAotICAgIDMxLCAyMjYsIDEsIDIxOCwgMjQ1LCAxMDQsIDE2LCAzMSwgODMsIDIxOCwgMjQ1LCAxMDQsIDE2LCAzMSwgMjMxLCAxMTksIAotICAgIDIxOSwgMTYsIDEwNCwgMTYsIDMxLCAyMzEsIDExOSwgMjE5LCAxNSwgMTA0LCAxNiwgMzEsIDIzMSwgMTE5LCAyMTksIDE0LCAKLSAgICAxMDQsIDE2LCAzMSwgMjQ5LCAyMzEsIDEwNCwgMTYsIDMxLCAyMjIsIDE3MiwgMTA0LCAxNiwgMzEsIDIyOSwgMTksIDEwNCwgCi0gICAgMTYsIDMxLCAyMTQsIDEyMiwgMTA0LCAxNiwgMzEsIDIxNCwgMTIxLCAxMDQsIDE2LCAzMSwgMjIzLCAxMDUsIDIyMiwgMTcyLCAKLSAgICAxMDQsIDE2LCAzMSwgMjIzLCAxMDUsIDIyMiwgMTcxLCAxMDQsIDE2LCAzMSwgMjQyLCAxNDIsIDEwNCwgMTYsIDMxLCAyMjAsIAotICAgIDkyLCAxMDQsIDE2LCAzMSwgMjM1LCAxNzUsIDIyNywgMjAsIDEwNCwgMTYsIDMxLCAyMzUsIDE3NSwgMjI3LCAxOSwgMTA0LCAKLSAgICAxNiwgMzEsIDI0OSwgNzQsIDY1LCAyMzUsIDE3NCwgMTA0LCAxNiwgMzEsIDIyMywgMjUxLCA2NSwgMjM1LCAxNzQsIDEwNCwgCi0gICAgMTYsIDMxLCAyNDksIDEwNywgMjI3LCAyMCwgMTA0LCAxNiwgMzEsIDIzNSwgMTczLCAyMjcsIDIwLCAxMDQsIDE2LCAzMSwgCi0gICAgMjE5LCAxNywgNjUsIDI0OSwgMTA2LCAxMDQsIDE2LCAzMSwgMjQ5LCA3NCwgNjUsIDI0OSwgMTA2LCAxMDQsIDE2LCAzMSwgCi0gICAgMjQ5LCA3NCwgNjUsIDI0OSwgMTA1LCAxMDQsIDE2LCAzMSwgMjQ5LCAxMDcsIDI1MywgMjUwLCAxMDQsIDE2LCAzMSwgMjIyLCAKLSAgICAxNzMsIDY1LCAyNDksIDEwNywgMjUzLCAyNTAsIDEwNCwgMTYsIDMxLCAyMTksIDE3LCA2NSwgMjIyLCAxNzMsIDY1LCAyNDksIAotICAgIDEwNiwgMTA0LCAxNiwgMzEsIDIxNCwgMjIwLCAxMDQsIDE2LCAzMSwgMjE3LCAzNywgMjI3LCAyMCwgMTA0LCAxNiwgMzEsIAotICAgIDIzMywgODEsIDIyNywgMjAsIDEwNCwgMTYsIDMxLCAyNTMsIDI0OSwgMjI3LCAyMCwgMTA0LCAxNiwgMzEsIDIxOSwgMTcsIAotICAgIDY1LCAyNTMsIDI0OCwgMTA0LCAxNiwgMzEsIDIyMiwgMTczLCA2NSwgMjUzLCAyNDgsIDEwNCwgMTYsIDMxLCAyMTksIDE3LCAKLSAgICA2NSwgMjIyLCAxNzMsIDY1LCAyNTMsIDI0OCwgMTA0LCAxNiwgMzEsIDIxNCwgMTM5LCA2NSwgMjUzLCAyNDgsIDEwNCwgMTYsIAotICAgIDMxLCAyMjMsIDI1MSwgNjUsIDI1MywgMjQ4LCAxMDQsIDE2LCAzMSwgMjIzLCAyNTEsIDY1LCAyNTMsIDI0NywgMTA0LCAxNiwgCi0gICAgMzEsIDIyMywgMjUwLCAxMDQsIDE2LCAzMSwgMjIzLCAyNDksIDEwNCwgMTYsIDMxLCAyMjMsIDI0OCwgMTA0LCAxNiwgMzEsIAotICAgIDIyMywgMjQ3LCAxMDQsIDE2LCAzMSwgMjU0LCA2NiwgMTA0LCAxNiwgMzEsIDI1NCwgNjUsIDEwNCwgMTYsIDMxLCAyMzEsIAotICAgIDIyNiwgMTA0LCAxNiwgMzEsIDIyMiwgMTc4LCAxMDQsIDE2LCAzMSwgMjUzLCAxNjEsIDEwNCwgMTYsIDMxLCAyMjQsIDE4LCAKLSAgICAxMDQsIDE2LCAzMSwgMjI0LCAxNywgMTA0LCAxNiwgMzEsIDI1MywgOTksIDEwNCwgMTYsIDMxLCAyNTEsIDE1MiwgMjI3LCAKLSAgICAyMCwgMTA0LCAxNiwgMzEsIDIxOCwgMCwgMTA0LCAxNiwgMzEsIDIxNywgMjU1LCAxMDQsIDE2LCAzMSwgMjI0LCAxNTMsIAotICAgIDIzMiwgMjUxLCAxMDQsIDE2LCAzMSwgMjUxLCAxMDksIDEwNCwgMTYsIDMxLCAyNTEsIDEwOCwgMTA0LCAxNiwgMzEsIDI1MSwgCi0gICAgMTA3LCAxMDQsIDE2LCAzMSwgMjU0LCA0NywgMTA0LCAxNiwgMzEsIDIyNywgODQsIDEwNCwgMTYsIDMxLCAyMTksIDE4MCwgCi0gICAgMTA0LCAxNiwgMzEsIDIxNywgMzUsIDEwNCwgMTYsIDMxLCAyNDIsIDc3LCAxMDQsIDE2LCAzMSwgMjE0LCAxMiwgMTA0LCAKLSAgICAxNiwgMzEsIDIyNSwgMTA2LCAxMDQsIDE2LCAzMSwgMjUwLCAyMDIsIDEwNCwgMTYsIDMxLCAyMTYsIDUwLCAxMDQsIDE2LCAKLSAgICAzMSwgMjUwLCAxNzgsIDIzMCwgMTkyLCAxMDQsIDE2LCAzMSwgMjIyLCAxMjAsIDY1LCAyMzUsIDU4LCAxMDQsIDE2LCAzMSwgCi0gICAgMjUwLCAyMTEsIDEwNCwgMTYsIDMxLCAyMTYsIDE3NywgMTA0LCAxNiwgMzEsIDIxOSwgOTMsIDIxNiwgMTc3LCAxMDQsIDE2LCAKLSAgICAzMSwgMjMyLCAyMDEsIDEwNCwgMTYsIDMxLCAyMTksIDI0MCwgMTA0LCAxNiwgMzEsIDIxNSwgMTEzLCAxMDQsIDE2LCAzMSwgCi0gICAgMjQwLCAyMzMsIDI0NiwgMTksIDEwNCwgMTYsIDMxLCAyNTMsIDE0MiwgMTA0LCAxNiwgMzEsIDIyNSwgMTE0LCAyNTMsIAotICAgIDE0MiwgMTA0LCAxNiwgMzEsIDI1MSwgNzAsIDEwNCwgMTYsIDMxLCAyMjUsIDEwNSwgMjUxLCA3MCwgMTA0LCAxNiwgMzEsIAotICAgIDI1NCwgNDQsIDEwNCwgMTYsIDMxLCAyMTksIDU3LCAyMTgsIDIyNiwgMjE5LCA1NiwgMTA0LCAxNiwgMzEsIDIxOSwgNTcsIAotICAgIDIxOCwgMjI2LCAyMTksIDU1LCAxMDQsIDE2LCAzMSwgMjE5LCAxMywgMTA0LCAxNiwgMzEsIDIyNSwgODAsIDEwNCwgMTYsIAotICAgIDMxLCAyNDcsIDEzMywgMTA0LCAxNiwgMzEsIDI0NywgMTM1LCAxMDQsIDE2LCAzMSwgMjQ3LCAxMzQsIDEwNCwgMTYsIDMxLCAKLSAgICAyMjUsIDE3LCAxMDQsIDE2LCAzMSwgMjI1LCA3LCAxMDQsIDE2LCAzMSwgMjQ5LCA2MiwgMTA0LCAxNiwgMzEsIDI0OSwgNjEsIAotICAgIDEwNCwgMTYsIDMxLCAyNDksIDYwLCAxMDQsIDE2LCAzMSwgMjQ5LCA1OSwgMTA0LCAxNiwgMzEsIDI0OSwgNTgsIDEwNCwgCi0gICAgMTYsIDMxLCAyNTQsIDc3LCAxMDQsIDE2LCAzMSwgMjUyLCAzOSwgNjUsIDIzMSwgMjEyLCAxMDQsIDE2LCAzMSwgMjUyLCAKLSAgICAzOSwgNjUsIDIxNCwgMjQ5LCAxMDQsIDE2LCAzMSwgMjIzLCAyMDksIDEwNCwgMTYsIDMxLCAyNDAsIDIyNSwgMTA0LCAxNiwgCi0gICAgMzEsIDIyOSwgNDMsIDEwNCwgMTYsIDMxLCAyNDgsIDkxLCAxMDQsIDE2LCAzMSwgMjMwLCAyMDQsIDEwNCwgMTYsIDMxLCAKLSAgICAxNTEsIDI0NiwgNDksIDEwNCwgMTYsIDMxLCAxNTEsIDIyNywgMCwgOSwgMTMsIDI0MCwgOTUsIDksIDEzLCAyNDAsIDk0LCAKLSAgICA5LCAxMywgMjQwLCA5MywgOSwgMTMsIDI0MCwgOTIsIDksIDEzLCAyNDAsIDkxLCA5LCAxMywgMjQwLCA5MCwgOSwgMTMsIAotICAgIDI0MCwgODksIDksIDEzLCAyNDAsIDg4LCA5LCAxMywgMjQwLCA4NywgOSwgMTMsIDI0MCwgODYsIDksIDEzLCAyNDAsIDg1LCAKLSAgICA5LCAxMywgMjQwLCA4NCwgOSwgMTMsIDI0MCwgODMsIDksIDEzLCAyNDAsIDgyLCA5LCAxMywgMjQwLCA4MSwgOSwgMTMsIAotICAgIDI0MCwgODAsIDksIDEzLCAyNDAsIDc5LCA5LCAxMywgMjQwLCA3OCwgOSwgMTMsIDI0MCwgNzcsIDksIDEzLCAyNDAsIDc2LCAKLSAgICA5LCAxMywgMjQwLCA3NSwgOSwgMTMsIDI0MCwgNzQsIDksIDEzLCAyNDAsIDczLCA5LCAxMywgMjQwLCA3MiwgOSwgMTMsIAotICAgIDI0MCwgNzEsIDksIDEzLCAyNDAsIDcwLCA5LCAxMywgMjQwLCA2OSwgOSwgMTMsIDI0MCwgNjgsIDksIDEzLCAyNDAsIDY3LCAKLSAgICA5LCAxMywgMjQwLCA2NiwgOSwgMTMsIDI0MCwgNjUsIDksIDEzLCAyNDAsIDY0LCA5LCAxMywgMjQwLCA2MywgOSwgMTMsIAotICAgIDI0MCwgNjIsIDksIDEzLCAyNDAsIDYxLCA5LCAxMywgMjQwLCA2MCwgOSwgMTMsIDI0MCwgNTksIDksIDEzLCAyNDAsIDU4LCAKLSAgICA5LCAxMywgMjQwLCA1NywgOSwgMTMsIDI0MCwgNTYsIDksIDEzLCAyNDAsIDU1LCA5LCAxMywgMjQwLCA1NCwgOSwgMTMsIAotICAgIDI0MCwgNTMsIDksIDEzLCAyNDAsIDUyLCA5LCAxMywgMjQwLCA1MSwgOSwgMTMsIDI0MCwgNTAsIDksIDEzLCAyNDAsIDQ5LCAKLSAgICA5LCAxMywgMjQwLCA0OCwgOSwgMTMsIDI0MCwgNDcsIDksIDEzLCAyNDAsIDQ2LCA5LCAxMywgMjQwLCA0NSwgOSwgMTMsIAotICAgIDI0MCwgNDQsIDksIDEzLCAyNDAsIDQzLCA5LCAxMywgMjQwLCA0MiwgOSwgMTMsIDI0MCwgNDEsIDksIDEzLCAyNDAsIDQwLCAKLSAgICA5LCAxMywgMjQwLCAzOSwgOSwgMTMsIDI0MCwgMzgsIDksIDEzLCAyNDAsIDM3LCA5LCAxMywgMjQwLCAzNiwgOSwgMTMsIAotICAgIDI0MCwgMzUsIDksIDEzLCAyNDAsIDM0LCA5LCAxMywgMjQwLCAzMywgOSwgMTMsIDI0MCwgMzIsIDksIDEzLCAyNDAsIDMxLCAKLSAgICA5LCAxMywgMjQwLCAzMCwgOSwgMTMsIDI0MCwgMjksIDksIDEzLCAyNDAsIDI4LCA5LCAxMywgMjQwLCAyNywgOSwgMTMsIAotICAgIDI0MCwgMjYsIDksIDEzLCAyNDAsIDI1LCA5LCAxMywgMjQwLCAyNCwgOSwgMTMsIDI0MCwgMjMsIDksIDEzLCAyNDAsIDIyLCAKLSAgICA5LCAxMywgMjQwLCAyMSwgOSwgMTMsIDI0MCwgMjAsIDksIDEzLCAyNDAsIDE5LCA5LCAxMywgMjQwLCAxOCwgOSwgMTMsIAotICAgIDI0MCwgMTcsIDksIDEzLCAyNDAsIDE2LCA5LCAxMywgMjQwLCAxNSwgOSwgMTMsIDI0MCwgMTQsIDksIDEzLCAyNDAsIDEzLCAKLSAgICA5LCAxMywgMjQwLCAxMiwgOSwgMTMsIDI0MCwgMTEsIDksIDEzLCAyNDAsIDEwLCA5LCAxMywgMjQwLCA5LCA5LCAxMywgCi0gICAgMjQwLCA4LCA5LCAxMywgMjQwLCA3LCA5LCAxMywgMjQwLCA2LCA5LCAxMywgMjQwLCA1LCA5LCAxMywgMjQwLCA0LCA5LCAKLSAgICAxMywgMjQwLCAzLCA5LCAxMywgMjQwLCAyLCA5LCAxMywgMjQwLCAxLCA5LCAxMywgMjQwLCAwLCA5LCAxMywgMjM5LCAyNTUsIAotICAgIDksIDEzLCAyMzksIDI1NCwgOSwgMTMsIDIzOSwgMjUzLCA5LCAxMywgMjM5LCAyNTIsIDksIDEzLCAyMzksIDI1MSwgOSwgCi0gICAgMTMsIDIzOSwgMjUwLCA5LCAxMywgMjM5LCAyNDksIDksIDEzLCAyMzksIDI0OCwgOSwgMTMsIDIzOSwgMjQ3LCA5LCAxMywgCi0gICAgMjM5LCAyNDYsIDksIDEzLCAyMzksIDI0NSwgOSwgMTMsIDIzOSwgMjQ0LCA5LCAxMywgMjM5LCAyNDMsIDksIDEzLCAyMzksIAotICAgIDI0MiwgOSwgMTMsIDIzOSwgMjQxLCA5LCAxMywgMjM5LCAyNDAsIDksIDEzLCAyMzksIDIzOSwgOSwgMTMsIDIzOSwgMjM4LCAKLSAgICA5LCAxMywgMjM5LCAyMzcsIDksIDEzLCAyMzksIDIzNiwgOSwgMTMsIDIzOSwgMjM1LCA5LCAxMywgMjM5LCAyMzQsIDksIAotICAgIDEzLCAyMzksIDIzMywgOSwgMTMsIDIzOSwgMjMyLCA5LCAxMywgMjM5LCAyMzEsIDksIDEzLCAyMzksIDIzMCwgOSwgMTMsIAotICAgIDIzOSwgMjI5LCA5LCAxMywgMjM5LCAyMjgsIDksIDEzLCAyMzksIDIyNywgOSwgMTMsIDIzOSwgMjI2LCA5LCAxMywgMjM5LCAKLSAgICAyMjUsIDksIDEzLCAyMzksIDIyNCwgOSwgMTMsIDIzOSwgMjIzLCA5LCAxMywgMjM5LCAyMjIsIDksIDEzLCAyMzksIDIyMSwgCi0gICAgOSwgMTMsIDIzOSwgMjIwLCA5LCAxMywgMjM5LCAyMTksIDksIDEzLCAyMzksIDIxOCwgOSwgMTMsIDIzOSwgMjE3LCA5LCAKLSAgICAxMywgMjM5LCAyMTYsIDksIDEzLCAyMzksIDIxNSwgOSwgMTMsIDIzOSwgMjE0LCA5LCAxMywgMjM5LCAyMTMsIDksIDEzLCAKLSAgICAyMzksIDIxMiwgOSwgMTMsIDIzOSwgMjExLCA5LCAxMywgMjM5LCAyMTAsIDksIDEzLCAyMzksIDIwOSwgOSwgMTMsIDIzOSwgCi0gICAgMjA4LCA5LCAxMywgMjM5LCAyMDcsIDksIDEzLCAyMzksIDIwNiwgOSwgMTMsIDIzOSwgMjA1LCA5LCAxMywgMjM5LCAyMDQsIAotICAgIDksIDEzLCAyMzksIDIwMywgOSwgMTMsIDIzOSwgMjAyLCA5LCAxMywgMjM5LCAyMDEsIDksIDEzLCAyMzksIDIwMCwgOSwgCi0gICAgMTMsIDIzOSwgMTk5LCA5LCAxMywgMjM5LCAxOTgsIDksIDEzLCAyMzksIDE5NywgOSwgMTMsIDIzOSwgMTk2LCA5LCAxMywgCi0gICAgMjM5LCAxOTUsIDksIDEzLCAyMzksIDE5NCwgOSwgMTMsIDIzOSwgMTkzLCA5LCAxMywgMjM5LCAxOTIsIDksIDEzLCAyMzksIAotICAgIDE5MSwgOSwgMTMsIDIzOSwgMTkwLCA5LCAxMywgMjM5LCAxODksIDksIDEzLCAyMzksIDE4OCwgOSwgMTMsIDIzOSwgMTg3LCAKLSAgICA5LCAxMywgMjM5LCAxODYsIDksIDEzLCAyMzksIDE4NSwgOSwgMTMsIDIzOSwgMTg0LCA5LCAxMywgMjM5LCAxODMsIDksIAotICAgIDEzLCAyMzksIDE4MiwgOSwgMTMsIDIzOSwgMTgxLCA5LCAxMywgMjM5LCAxODAsIDksIDEzLCAyMzksIDE3OSwgOSwgMTMsIAotICAgIDIzOSwgMTc4LCA5LCAxMywgMjM5LCAxNzcsIDksIDEzLCAyMzksIDE3NiwgOSwgMTMsIDIzOSwgMTc1LCA5LCAxMywgMjM5LCAKLSAgICAxNzQsIDksIDEzLCAyMzksIDE3MywgOSwgMTMsIDIzOSwgMTcyLCA5LCAxMywgMjM5LCAxNzEsIDksIDEzLCAyMzksIDE3MCwgCi0gICAgOSwgMTMsIDIzOSwgMTY5LCA5LCAxMywgMjM5LCAxNjgsIDksIDEzLCAyMzksIDE2NywgOSwgMTMsIDIzOSwgMTY2LCA5LCAKLSAgICAxMywgMjM5LCAxNjUsIDksIDEzLCAyMzksIDE2NCwgOSwgMTMsIDIzOSwgMTYzLCA5LCAxMywgMjM5LCAxNjIsIDksIDEzLCAKLSAgICAyMzksIDE2MSwgOSwgMTMsIDIzOSwgMTYwLCA5LCAxMywgMjM5LCAxNTksIDksIDEzLCAyMzksIDE1OCwgOSwgMTMsIDIzOSwgCi0gICAgMTU3LCA5LCAxMywgMjM5LCAxNTYsIDksIDEzLCAyMzksIDE1NSwgOSwgMTMsIDIzOSwgMTU0LCA5LCAxMywgMjM5LCAxNTMsIAotICAgIDksIDEzLCAyMzksIDE1MiwgOSwgMTMsIDIzOSwgMTUxLCA5LCAxMywgMjM5LCAxNTAsIDksIDEzLCAyMzksIDE0OSwgOSwgCi0gICAgMTMsIDIzOSwgMTQ4LCA5LCAxMywgMjM5LCAxNDcsIDksIDEzLCAyMzksIDE0NiwgOSwgMTMsIDIzOSwgMTQ1LCA5LCAxMywgCi0gICAgMjM5LCAxNDQsIDksIDEzLCAyMzksIDE0MywgOSwgMTMsIDIzOSwgMTQyLCA5LCAxMywgMjM5LCAxNDEsIDksIDEzLCAyMzksIAotICAgIDE0MCwgOSwgMTMsIDIzOSwgMTM5LCA5LCAxMywgMjM5LCAxMzgsIDksIDEzLCAyMzksIDEzNywgOSwgMTMsIDIzOSwgMTM2LCAKLSAgICA5LCAxMywgMjM5LCAxMzUsIDksIDEzLCAyMzksIDEzNCwgOSwgMTMsIDIzOSwgMTMzLCA5LCAxMywgMjM5LCAxMzIsIDksIAotICAgIDEzLCAyMzksIDEzMSwgOSwgMTMsIDIzOSwgMTMwLCA5LCAxMywgMjM5LCAxMjksIDksIDEzLCAyMzksIDEyOCwgOSwgMTMsIAotICAgIDIzOSwgMTI3LCA5LCAxMywgMjM5LCAxMjYsIDksIDEzLCAyMzksIDEyNSwgOSwgMTMsIDIzOSwgMTI0LCA5LCAxMywgMjM5LCAKLSAgICAxMjMsIDksIDEzLCAyMzksIDEyMiwgOSwgMTMsIDIzOSwgMTIxLCA5LCAxMywgMjM5LCAxMjAsIDksIDEzLCAyMzksIDExOSwgCi0gICAgOSwgMTMsIDIzOSwgMTE4LCA5LCAxMywgMjM5LCAxMTcsIDksIDEzLCAyMzksIDExNiwgOSwgMTMsIDIzOSwgMTE1LCA5LCAKLSAgICAxMywgMjM5LCAxMTQsIDksIDEzLCAyMzksIDExMywgOSwgMTMsIDIzOSwgMTEyLCA5LCAxMywgMjM5LCAxMTEsIDksIDEzLCAKLSAgICAyMzksIDExMCwgOSwgMTMsIDIzOSwgMTA5LCA5LCAxMywgMjM5LCAxMDgsIDksIDEzLCAyMzksIDEwNywgOSwgMTMsIDIzOSwgCi0gICAgMTA2LCA5LCAxMywgMjM5LCAxMDUsIDksIDEzLCAyMzksIDEwNCwgOSwgMTMsIDIzOSwgMTAzLCA5LCAxMywgMjM5LCAxMDIsIAotICAgIDksIDEzLCAyMzksIDEwMSwgOSwgMTMsIDIzOSwgMTAwLCA5LCAxMywgMjM5LCA5OSwgOSwgMTMsIDIzOSwgOTgsIDksIDEzLCAKLSAgICAyMzksIDk3LCA5LCAxMywgMjM5LCA5NiwgOSwgMTMsIDIzOSwgOTUsIDksIDEzLCAyMzksIDk0LCA5LCAxMywgMjM5LCA5MywgCi0gICAgOSwgMTMsIDIzOSwgOTIsIDksIDEzLCAyMzksIDkxLCA5LCAxMywgMjM5LCA5MCwgOSwgMTMsIDIzOSwgODksIDksIDEzLCAKLSAgICAyMzksIDg4LCA5LCAxMywgMjM5LCA4NywgOSwgMTMsIDIzOSwgODYsIDksIDEzLCAyMzksIDg1LCA5LCAxMywgMjM5LCA4NCwgCi0gICAgOSwgMTMsIDIzOSwgODMsIDksIDEzLCAyMzksIDgyLCA5LCAxMywgMjM5LCA4MSwgOSwgMTMsIDIzOSwgODAsIDksIDEzLCAKLSAgICAyMzksIDc5LCA5LCAxMywgMjM5LCA3OCwgOSwgMTMsIDIzOSwgNzcsIDksIDEzLCAyMzksIDc2LCA5LCAxMywgMjM5LCA3NSwgCi0gICAgOSwgMTMsIDIzOSwgNzQsIDksIDEzLCAyMzksIDczLCA5LCAxMywgMjM5LCA3MiwgOSwgMTMsIDIzOSwgNzEsIDksIDEzLCAKLSAgICAyMzksIDcwLCA5LCAxMywgMjM5LCA2OSwgOSwgMTMsIDIzOSwgNjgsIDksIDEzLCAyMzksIDY3LCA5LCAxMywgMjM5LCA2NiwgCi0gICAgOSwgMTMsIDIzOSwgNjUsIDksIDEzLCAyMzksIDY0LCA5LCAxMywgMjM5LCA2MywgOSwgMTMsIDIzOSwgNjIsIDksIDEzLCAKLSAgICAyMzksIDYxLCA5LCAxMywgMjM5LCA2MCwgOSwgMTMsIDIzOSwgNTksIDksIDEzLCAyMzksIDU4LCA5LCAxMywgMjM5LCA1NywgCi0gICAgOSwgMTMsIDIzOSwgNTYsIDksIDEzLCAyMzksIDU1LCA5LCAxMywgMjM5LCA1NCwgOSwgMTMsIDIzOSwgNTMsIDksIDEzLCAKLSAgICAyMzksIDUyLCA5LCAxMywgMjM5LCA1MSwgOSwgMTMsIDIzOSwgNTAsIDksIDEzLCAyMzksIDQ5LCA5LCAxMywgMjM5LCA0OCwgCi0gICAgOSwgMTMsIDIzOSwgNDcsIDksIDEzLCAyMzksIDQ2LCA5LCAxMywgMjM5LCA0NSwgOSwgMTMsIDIzOSwgNDQsIDksIDEzLCAKLSAgICAyMzksIDQzLCA5LCAxMywgMjM5LCA0MiwgOSwgMTMsIDIzOSwgNDEsIDksIDEzLCAyMzksIDQwLCA5LCAxMywgMjM5LCAzOSwgCi0gICAgOSwgMTMsIDIzOSwgMzgsIDksIDEzLCAyMzksIDM3LCA5LCAxMywgMjM5LCAzNiwgOSwgMTMsIDIzOSwgMzUsIDksIDEzLCAKLSAgICAyMzksIDM0LCA5LCAxMywgMjM5LCAzMywgOSwgMTMsIDIzOSwgMzIsIDksIDEzLCAyMzksIDMxLCA5LCAxMywgMjM5LCAzMCwgCi0gICAgOSwgMTMsIDIzOSwgMjksIDksIDEzLCAyMzksIDI4LCA5LCAxMywgMjM5LCAyNywgOSwgMTMsIDIzOSwgMjYsIDksIDEzLCAKLSAgICAyMzksIDI1LCA5LCAxMywgMjM5LCAyNCwgOSwgMTMsIDIzOSwgMjMsIDksIDEzLCAyMzksIDIyLCA5LCAxMywgMjM5LCAyMSwgCi0gICAgOSwgMTMsIDIzOSwgMjAsIDksIDEzLCAyMzksIDE5LCA5LCAxMywgMjM5LCAxOCwgOSwgMTMsIDIzOSwgMTcsIDksIDEzLCAKLSAgICAyMzksIDE2LCA5LCAxMywgMjM5LCAxNSwgOSwgMTMsIDIzOSwgMTQsIDksIDEzLCAyMzksIDEzLCA5LCAxMywgMjM5LCAxMiwgCi0gICAgOSwgMTMsIDIzOSwgMTEsIDksIDEzLCAyMzksIDEwLCA5LCAxMywgMjM5LCA5LCA5LCAxMywgMjM5LCA4LCA5LCAxMywgMjM5LCAKLSAgICA3LCA5LCAxMywgMjM5LCA2LCA5LCAxMywgMjM5LCA1LCA5LCAxMywgMjM5LCA0LCA5LCAxMywgMjM5LCAzLCA5LCAxMywgCi0gICAgMjM5LCAyLCA5LCAxMywgMjM5LCAxLCA5LCAxMywgMjM5LCAwLCA5LCAxMywgMjM4LCAyNTUsIDksIDEzLCAyMzgsIDI1NCwgCi0gICAgOSwgMTMsIDIzOCwgMjUzLCA5LCAxMywgMjM4LCAyNTIsIDksIDEzLCAyMzgsIDI1MSwgOSwgMTMsIDIzOCwgMjUwLCA5LCAKLSAgICAxMywgMjM4LCAyNDksIDksIDEzLCAyMzgsIDI0OCwgOSwgMTMsIDIzOCwgMjQ3LCA5LCAxMywgMjM4LCAyNDYsIDksIDEzLCAKLSAgICAyMzgsIDI0NSwgOSwgMTMsIDIzOCwgMjQ0LCA5LCAxMywgMjM4LCAyNDMsIDksIDEzLCAyMzgsIDI0MiwgOSwgMTMsIDIzOCwgCi0gICAgMjQxLCA5LCAxMywgMjM4LCAyNDAsIDksIDEzLCAyMzgsIDIzOSwgOSwgMTMsIDIzOCwgMjM4LCA5LCAxMywgMjM4LCAyMzcsIAotICAgIDksIDEzLCAyMzgsIDIzNiwgOSwgMTMsIDIzOCwgMjM1LCA5LCAxMywgMjM4LCAyMzQsIDksIDEzLCAyMzgsIDIzMywgOSwgCi0gICAgMTMsIDIzOCwgMjMyLCA5LCAxMywgMjM4LCAyMzEsIDksIDEzLCAyMzgsIDIzMCwgOSwgMTMsIDIzOCwgMjI5LCA5LCAxMywgCi0gICAgMjM4LCAyMjgsIDksIDEzLCAyMzgsIDIyNywgOSwgMTMsIDIzOCwgMjI2LCA5LCAxMywgMjM4LCAyMjUsIDksIDEzLCAyMzgsIAotICAgIDIyNCwgOSwgMTMsIDIzOCwgMjIzLCA5LCAxMywgMjM4LCAyMjIsIDksIDEzLCAyMzgsIDIyMSwgOSwgMTMsIDIzOCwgMjIwLCAKLSAgICA5LCAxMywgMjM4LCAyMTksIDksIDEzLCAyMzgsIDIxOCwgOSwgMTMsIDIzOCwgMjE3LCA5LCAxMywgMjM4LCAyMTYsIDksIAotICAgIDEzLCAyMzgsIDIxNSwgOSwgMTMsIDIzOCwgMjE0LCA5LCAxMywgMjM4LCAyMTMsIDksIDEzLCAyMzgsIDIxMiwgOSwgMTMsIAotICAgIDIzOCwgMjExLCA5LCAxMywgMjM4LCAyMTAsIDksIDEzLCAyMzgsIDIwOSwgOSwgMTMsIDIzOCwgMjA4LCA5LCAxMywgMjM4LCAKLSAgICAyMDcsIDksIDEzLCAyMzgsIDIwNiwgOSwgMTMsIDIzOCwgMjA1LCA5LCAxMywgMjM4LCAyMDQsIDksIDEzLCAyMzgsIDIwMywgCi0gICAgOSwgMTMsIDIzOCwgMjAyLCA5LCAxMywgMjM4LCAyMDEsIDksIDEzLCAyMzgsIDIwMCwgOSwgMTMsIDIzOCwgMTk5LCA5LCAKLSAgICAxMywgMjM4LCAxOTgsIDksIDEzLCAyMzgsIDE5NywgOSwgMTMsIDIzOCwgMTk2LCA5LCAxMywgMjM4LCAxOTUsIDksIDEzLCAKLSAgICAyMzgsIDE5NCwgOSwgMTMsIDIzOCwgMTkzLCA5LCAxMywgMjM4LCAxOTIsIDksIDEzLCAyMzgsIDE5MSwgOSwgMTMsIDIzOCwgCi0gICAgMTkwLCA5LCAxMywgMjM4LCAxODksIDksIDEzLCAyMzgsIDE4OCwgOSwgMTMsIDIzOCwgMTg3LCA5LCAxMywgMjM4LCAxODYsIAotICAgIDksIDEzLCAyMzgsIDE4NSwgOSwgMTMsIDIzOCwgMTg0LCA5LCAxMywgMjM4LCAxODMsIDksIDEzLCAyMzgsIDE4MiwgOSwgCi0gICAgMTMsIDIzOCwgMTgxLCA5LCAxMywgMjM4LCAxODAsIDksIDEzLCAyMzgsIDE3OSwgOSwgMTMsIDIzOCwgMTc4LCA5LCAxMywgCi0gICAgMjM4LCAxNzcsIDksIDEzLCAyMzgsIDE3NiwgOSwgMTMsIDIzOCwgMTc1LCA5LCAxMywgMjM4LCAxNzQsIDksIDEzLCAyMzgsIAotICAgIDE3MywgOSwgMTMsIDIzOCwgMTcyLCA5LCAxMywgMjM4LCAxNzEsIDksIDEzLCAyMzgsIDE3MCwgOSwgMTMsIDIzOCwgMTY5LCAKLSAgICA5LCAxMywgMjM4LCAxNjgsIDksIDEzLCAyMzgsIDE2NywgOSwgMTMsIDIzOCwgMTY2LCA5LCAxMywgMjM4LCAxNjUsIDksIAotICAgIDEzLCAyMzgsIDE2NCwgOSwgMTMsIDIzOCwgMTYzLCA5LCAxMywgMjM4LCAxNjIsIDksIDEzLCAyMzgsIDE2MSwgOSwgMTMsIAotICAgIDIzOCwgMTYwLCA5LCAxMywgMjM4LCAxNTksIDksIDEzLCAyMzgsIDE1OCwgOSwgMTMsIDIzOCwgMTU3LCA5LCAxMywgMjM4LCAKLSAgICAxNTYsIDksIDEzLCAyMzgsIDE1NSwgOSwgMTMsIDIzOCwgMTU0LCA5LCAxMywgMjM4LCAxNTMsIDksIDEzLCAyMzgsIDE1MiwgCi0gICAgOSwgMTMsIDIzOCwgMTUxLCA5LCAxMywgMjM4LCAxNTAsIDksIDEzLCAyMzgsIDE0OSwgOSwgMTMsIDIzOCwgMTQ4LCA5LCAKLSAgICAxMywgMjM4LCAxNDcsIDksIDEzLCAyMzgsIDE0NiwgOSwgMTMsIDIzOCwgMTQ1LCA5LCAxMywgMjM4LCAxNDQsIDksIDEzLCAKLSAgICAyMzgsIDE0MywgOSwgMTMsIDIzOCwgMTQyLCA5LCAxMywgMjM4LCAxNDEsIDksIDEzLCAyMzgsIDE0MCwgOSwgMTMsIDIzOCwgCi0gICAgMTM5LCA5LCAxMywgMjM4LCAxMzgsIDksIDEzLCAyMzgsIDEzNywgOSwgMTMsIDIzOCwgMTM2LCA5LCAxMywgMjM4LCAxMzUsIAotICAgIDksIDEzLCAyMzgsIDEzNCwgOSwgMTMsIDIzOCwgMTMzLCA5LCAxMywgMjM4LCAxMzIsIDksIDEzLCAyMzgsIDEzMSwgOSwgCi0gICAgMTMsIDIzOCwgMTMwLCA5LCAxMywgMjM4LCAxMjksIDksIDEzLCAyMzgsIDEyOCwgOSwgMTMsIDIzOCwgMTI3LCA5LCAxMywgCi0gICAgMjM4LCAxMjYsIDksIDEzLCAyMzgsIDEyNSwgOSwgMTMsIDIzOCwgMTI0LCA5LCAxMywgMjM4LCAxMjMsIDksIDEzLCAyMzgsIAotICAgIDEyMiwgOSwgMTMsIDIzOCwgMTIxLCA5LCAxMywgMjM4LCAxMjAsIDksIDEzLCAyMzgsIDExOSwgOSwgMTMsIDIzOCwgMTE4LCAKLSAgICA5LCAxMywgMjM4LCAxMTcsIDksIDEzLCAyMzgsIDExNiwgOSwgMTMsIDIzOCwgMTE1LCA5LCAxMywgMjM4LCAxMTQsIDksIAotICAgIDEzLCAyMzgsIDExMywgOSwgMTMsIDIzOCwgMTEyLCA5LCAxMywgMjM4LCAxMTEsIDksIDEzLCAyMzgsIDExMCwgOSwgMTMsIAotICAgIDIzOCwgMTA5LCA5LCAxMywgMjM4LCAxMDgsIDksIDEzLCAyMzgsIDEwNywgOSwgMTMsIDIzOCwgMTA2LCA5LCAxMywgMjM4LCAKLSAgICAxMDUsIDksIDEzLCAyMzgsIDEwNCwgOSwgMTMsIDIzOCwgMTAzLCA5LCAxMywgMjM4LCAxMDIsIDksIDEzLCAyMzgsIDEwMSwgCi0gICAgOSwgMTMsIDIzOCwgMTAwLCA5LCAxMywgMjM4LCA5OSwgOSwgMTMsIDIzOCwgOTgsIDksIDEzLCAyMzgsIDk3LCA5LCAxMywgCi0gICAgMjM4LCA5NiwgOSwgMTMsIDIzOCwgOTUsIDksIDEzLCAyMzgsIDk0LCA5LCAxMywgMjM4LCA5MywgOSwgMTMsIDIzOCwgOTIsIAotICAgIDksIDEzLCAyMzgsIDkxLCA5LCAxMywgMjM4LCA5MCwgOSwgMTMsIDIzOCwgODksIDksIDEzLCAyMzgsIDg4LCA5LCAxMywgCi0gICAgMjM4LCA4NywgOSwgMTMsIDIzOCwgODYsIDksIDEzLCAyMzgsIDg1LCA5LCAxMywgMjM4LCA4NCwgOSwgMTMsIDIzOCwgODMsIAotICAgIDksIDEzLCAyMzgsIDgyLCA5LCAxMywgMjM4LCA4MSwgOSwgMTMsIDIzOCwgODAsIDksIDEzLCAyMzgsIDc5LCA5LCAxMywgCi0gICAgMjM4LCA3OCwgOSwgMTMsIDIzOCwgNzcsIDksIDEzLCAyMzgsIDc2LCA5LCAxMywgMjM4LCA3NSwgOSwgMTMsIDIzOCwgNzQsIAotICAgIDksIDEzLCAyMzgsIDczLCA5LCAxMywgMjM4LCA3MiwgOSwgMTMsIDIzOCwgNzEsIDksIDEzLCAyMzgsIDcwLCA5LCAxMywgCi0gICAgMjM4LCA2OSwgOSwgMTMsIDIzOCwgNjgsIDksIDEzLCAyMzgsIDY3LCA5LCAxMywgMjM4LCA2NiwgMjMzLCAxMTQsIDIxOCwgCi0gICAgMzMsIDEyNiwgMjE5LCAyMDYsIDEyNiwgMjQ0LCAyNTQsIDc3LCAxMjYsIDIyNCwgMTQzLCA3NywgMTI2LCA1MCwgNTIsIAotICAgIDEyNiwgMjQ3LCA4NiwgNTIsIDEyNiwgMjI2LCA1NywgNTIsIDEyNiwgMjU0LCAzNSwgMTI2LCAyNTMsIDIyNiwgMTI2LCA0MiwgCi0gICAgMjI2LCAxMzEsIDEyNiwgNDYsIDIyNiwgMTMxLCAxMjYsIDI1MywgMTMyLCAxMjYsIDk0LCA1MiwgMTI2LCAyNDksIDE1NywgCi0gICAgMTI2LCAyNDAsIDE1OSwgMTI2LCAyNDMsIDIwMCwgMjE5LCA2OSwgMTI2LCAyMTksIDIzMSwgMTI2LCAyMSwgMjEyLCA3OSwgCi0gICAgMTI2LCAyMSwgMTE2LCAxMjYsIDIxLCAxMDksIDEyNiwgMjEsIDE2NiwgMTI2LCAyMSwgMTYzLCAxMjYsIDIxLCAxODAsIAotICAgIDEyNiwgMjEsIDE4OSwgMTI2LCAyMSwgMTk4LCAxMjYsIDIxLCAxOTUsIDEyNiwgMjEsIDIwMCwgMTI2LCAyNDksIDE2NCwgCi0gICAgMTI2LCAyMjEsIDcwLCAxMjYsIDIzMywgMzksIDUyLCAxMjYsIDI0NSwgNjEsIDUyLCAxMjYsIDI0MiwgMTA3LCA1MiwgMTI2LCAKLSAgICAyMjQsIDE1OCwgNzcsIDEyNiwgMjQ5LCAxNTYsIDI1MywgMTIyLCAxMjYsIDcsIDYsIDEsIDYxLCAxMjYsIDcsIDYsIDEsIAotICAgIDI1MywgNzQsIDEyNiwgNywgNiwgMSwgMjUwLCAyNTIsIDEyNiwgNywgNiwgMSwgMjQ5LCAzLCAxMjYsIDcsIDYsIDEsIDc0LCAKLSAgICAxMjYsIDcsIDYsIDEsIDI0NCwgMjMwLCAxMjYsIDcsIDYsIDEsIDI0MywgMTc3LCAxMjYsIDcsIDYsIDEsIDI0MiwgNDEsIAotICAgIDEyNiwgNywgNiwgMSwgNzIsIDEyNiwgNywgNiwgMSwgMjM1LCAxNDIsIDEyNiwgNywgNiwgMSwgMjM1LCAyNywgMTI2LCA3LCAKLSAgICA2LCAxLCAxNTAsIDEyNiwgNywgNiwgMSwgMTgzLCAxMjYsIDcsIDYsIDEsIDIwNCwgMTI2LCA3LCA2LCAxLCA3NSwgMTI2LCAKLSAgICA3LCA2LCAxLCAyMjYsIDIyOSwgMTI2LCA3LCA2LCAxLCAyMjQsIDI0MCwgMTI2LCA3LCA2LCAxLCAxNDksIDEyNiwgNywgNiwgCi0gICAgMSwgMTk3LCAxMjYsIDcsIDYsIDEsIDIxOCwgOTksIDEyNiwgNywgNiwgMSwgNjksIDEyNiwgNywgNiwgMSwgMjE1LCA3OSwgCi0gICAgMTI2LCA3LCA2LCAxLCAyMTQsIDgyLCAxMjYsIDcsIDYsIDEsIDIxMywgMTY2LCAxMjYsIDcsIDYsIDEsIDIxMywgMTA1LCAKLSAgICAxMjYsIDcsIDYsIDEsIDIxMiwgMTUyLCAxMjYsIDQyLCA0MSwgMTI1LCAxMjYsIDIyMywgMjAzLCAyMTksIDIzMSwgMTI2LCAKLSAgICA0NiwgNDEsIDEyNSwgMTI2LCAyNDksIDIyNCwgMjU0LCAxNzQsIDEyNiwgMTE1LCAyMzIsIDI0MiwgMTI2LCAyNDIsIDExNCwgCi0gICAgMjU0LCAxNzQsIDEyNiwgNywgMywgMSwgNjEsIDEyNiwgNywgMywgMSwgMjUzLCA3NCwgMTI2LCA3LCAzLCAxLCAyNTAsIAotICAgIDI1MiwgMTI2LCA3LCAzLCAxLCAyNDksIDMsIDEyNiwgNywgMywgMSwgNzQsIDEyNiwgNywgMywgMSwgMjQ0LCAyMzAsIDEyNiwgCi0gICAgNywgMywgMSwgMjQzLCAxNzcsIDEyNiwgNywgMywgMSwgMjQyLCA0MSwgMTI2LCA3LCAzLCAxLCA3MiwgMTI2LCA3LCAzLCAxLCAKLSAgICAyMzUsIDE0MiwgMTI2LCA3LCAzLCAxLCAyMzUsIDI3LCAxMjYsIDcsIDMsIDEsIDE1MCwgMTI2LCA3LCAzLCAxLCAxODMsIAotICAgIDEyNiwgNywgMywgMSwgMjA0LCAxMjYsIDcsIDMsIDEsIDc1LCAxMjYsIDcsIDMsIDEsIDIyNiwgMjI5LCAxMjYsIDcsIDMsIAotICAgIDEsIDIyNCwgMjQwLCAxMjYsIDcsIDMsIDEsIDE0OSwgMTI2LCA3LCAzLCAxLCAxOTcsIDEyNiwgNywgMywgMSwgMjE4LCA5OSwgCi0gICAgMTI2LCA3LCAzLCAxLCA2OSwgMTI2LCA3LCAzLCAxLCAyMTUsIDc5LCAxMjYsIDcsIDMsIDEsIDIxNCwgODIsIDEyNiwgNywgCi0gICAgMywgMSwgMjEzLCAxNjYsIDEyNiwgNywgMywgMSwgMjEzLCAxMDUsIDEyNiwgNywgMywgMSwgMjEyLCAxNTIsIDEyNiwgNDIsIAotICAgIDI0OSwgNDAsIDEyNSwgMTI2LCA3MSwgMjMyLCAyNDIsIDEyNiwgNDYsIDI0OSwgNDAsIDEyNSwgMTI2LCAyMTcsIDQyLCAKLSAgICAyNTAsIDE5NCwgMjE4LCAzMywgNDMsIDIyMSwgMjU0LCA0MywgMjIxLCAyNDMsIDQzLCAyMjEsIDIzMiwgNDMsIDIyMSwgCi0gICAgMjIwLCA0MywgMjIxLCAyMDksIDQzLCAyMjEsIDE5OCwgNDMsIDIyMSwgMTg3LCA0MywgMjIxLCAxNzYsIDQzLCAyMjEsIAotICAgIDE2NSwgNDMsIDIyMSwgMTU3LCA0MywgMjIxLCAxNTYsIDQzLCAyMjEsIDE1NSwgNDMsIDIyMSwgMTU0LCA0MywgMjIxLCAKLSAgICAxNTIsIDQzLCAyMjEsIDE1MSwgNDMsIDIyMSwgMTUwLCA0MywgMjIxLCAxNDksIDQzLCAyMjEsIDE0OCwgNDMsIDIyMSwgCi0gICAgMTQ3LCA0MywgMjIxLCAxNDYsIDQzLCAyMjEsIDE0NSwgNDMsIDIyMSwgMTQ0LCA0MywgMjIxLCAxNDMsIDQzLCAyMjEsIAotICAgIDE0MSwgNDMsIDIyMSwgMTQwLCA0MywgMjIxLCAxMzksIDQzLCAyMjEsIDEzOCwgNDMsIDIyMSwgMTM3LCA0MywgMjIxLCAKLSAgICAxMzYsIDQzLCAyMjEsIDEzNSwgNDMsIDIyMSwgMTM0LCA0MywgMjIxLCAxMzMsIDQzLCAyMjEsIDEzMiwgNDMsIDIyMSwgCi0gICAgMTMwLCA0MywgMjIxLCAxMjksIDQzLCAyMjEsIDEyOCwgNDMsIDIyMSwgMTI3LCA0MywgMjIxLCAxMjYsIDQzLCAyMjEsIAotICAgIDEyNSwgNDMsIDIyMSwgMTI0LCA0MywgMjIxLCAxMjMsIDQzLCAyMjEsIDEyMiwgNDMsIDIyMSwgMTIxLCA0MywgMjIxLCAKLSAgICAxMTksIDQzLCAyMjEsIDExOCwgNDMsIDIyMSwgMTE3LCA0MywgMjIxLCAxMTYsIDQzLCAyMjEsIDExNSwgNDMsIDIyMSwgCi0gICAgMTE0LCA0MywgMjIxLCAxMTMsIDQzLCAyMjEsIDExMiwgNDMsIDIyMSwgMTExLCA0MywgMjIxLCAxMTAsIDQzLCAyMjEsIAotICAgIDEwOCwgNDMsIDIyMSwgMTA3LCA0MywgMjIxLCAxMDYsIDQzLCAyMjEsIDEwNSwgNDMsIDIyMSwgMTA0LCA0MywgMjIxLCAKLSAgICAxMDMsIDQzLCAyMjEsIDEwMiwgNDMsIDIyMSwgMTAxLCA0MywgMjIxLCAxMDAsIDQzLCAyMjEsIDk5LCA0MywgMjIxLCA5NywgCi0gICAgNDMsIDIyMSwgOTYsIDQzLCAyMjEsIDk1LCA0MywgMjIxLCA5NCwgNDMsIDIyMSwgOTMsIDQzLCAyMjEsIDkyLCA0MywgMjIxLCAKLSAgICA5MSwgNDMsIDIyMSwgOTAsIDQzLCAyMjEsIDg5LCA0MywgMjIxLCA4OCwgNDMsIDIyMSwgODYsIDQzLCAyMjEsIDg1LCA0MywgCi0gICAgMjIxLCA4NCwgNDMsIDIyMSwgODMsIDQzLCAyMjEsIDgyLCA0MywgMjIxLCA4MSwgNDMsIDIyMSwgODAsIDQzLCAyMjEsIDc5LCAKLSAgICA0MywgMjIxLCA3OCwgNDMsIDIyMSwgNzcsIDQzLCAyMjIsIDc0LCA0MywgMjIyLCA3MywgNDMsIDIyMiwgNzIsIDQzLCAyMjIsIAotICAgIDcxLCA0MywgMjIyLCA3MCwgNDMsIDIyMiwgNjksIDQzLCAyMjIsIDY4LCA0MywgMjIyLCA2NywgNDMsIDIyMiwgNjYsIDQzLCAKLSAgICAyMjIsIDY1LCA0MywgMjIyLCA2MywgNDMsIDIyMiwgNjIsIDQzLCAyMjIsIDYxLCA0MywgMjIyLCA2MCwgNDMsIDIyMiwgNTksIAotICAgIDQzLCAyMjIsIDU4LCA0MywgMjIyLCA1NywgNDMsIDIyMiwgNTYsIDQzLCAyMjIsIDU1LCA0MywgMjIyLCA1NCwgNDMsIDIyMiwgCi0gICAgNTIsIDQzLCAyMjIsIDUxLCA0MywgMjIyLCA1MCwgNDMsIDIyMiwgNDksIDQzLCAyMjIsIDQ4LCA0MywgMjIyLCA0NywgNDMsIAotICAgIDIyMiwgNDYsIDQzLCAyMjIsIDQ1LCA0MywgMjIyLCA0NCwgNDMsIDIyMiwgNDMsIDQzLCAyMjIsIDQxLCA0MywgMjIyLCA0MCwgCi0gICAgNDMsIDIyMiwgMzksIDQzLCAyMjIsIDM4LCA0MywgMjIyLCAzNywgNDMsIDIyMiwgMzYsIDQzLCAyMjIsIDM1LCA0MywgMjIyLCAKLSAgICAzNCwgNDMsIDIyMiwgMzMsIDQzLCAyMjIsIDMyLCA0MywgMjIyLCAzMCwgNDMsIDIyMiwgMjksIDQzLCAyMjIsIDI4LCA0MywgCi0gICAgMjIyLCAyNywgNDMsIDIyMiwgMjYsIDQzLCAyMjIsIDI1LCA0MywgMjIyLCAyNCwgNDMsIDIyMiwgMjMsIDQzLCAyMjIsIDIyLCAKLSAgICA0MywgMjIyLCAyMSwgNDMsIDIyMiwgMTksIDQzLCAyMjIsIDE4LCA0MywgMjIyLCAxNywgNDMsIDIyMiwgMTYsIDQzLCAyMjIsIAotICAgIDE1LCA0MywgMjIyLCAxNCwgNDMsIDIyMiwgMTMsIDQzLCAyMjIsIDEyLCA0MywgMjIyLCAxMSwgNDMsIDIyMiwgMTAsIDQzLCAKLSAgICAyMjIsIDgsIDQzLCAyMjIsIDcsIDQzLCAyMjIsIDYsIDQzLCAyMjIsIDUsIDQzLCAyMjIsIDQsIDQzLCAyMjIsIDMsIDQzLCAKLSAgICAyMjIsIDIsIDQzLCAyMjIsIDEsIDQzLCAyMjIsIDAsIDQzLCAyMjEsIDI1NSwgNDMsIDIyMSwgMjUzLCA0MywgMjIxLCAyNTIsIAotICAgIDQzLCAyMjEsIDI1MSwgNDMsIDIyMSwgMjUwLCA0MywgMjIxLCAyNDksIDQzLCAyMjEsIDI0OCwgNDMsIDIyMSwgMjQ3LCA0MywgCi0gICAgMjIxLCAyNDYsIDQzLCAyMjEsIDI0NSwgNDMsIDIyMSwgMjQ0LCA0MywgMjIxLCAyNDIsIDQzLCAyMjEsIDI0MSwgNDMsIAotICAgIDIyMSwgMjQwLCA0MywgMjIxLCAyMzksIDQzLCAyMjEsIDIzOCwgNDMsIDIyMSwgMjM3LCA0MywgMjIxLCAyMzYsIDQzLCAKLSAgICAyMjEsIDIzNSwgNDMsIDIyMSwgMjM0LCA0MywgMjIxLCAyMzMsIDQzLCAyMjEsIDIzMSwgNDMsIDIyMSwgMjMwLCA0MywgCi0gICAgMjIxLCAyMjksIDQzLCAyMjEsIDIyOCwgNDMsIDIyMSwgMjI3LCA0MywgMjIxLCAyMjYsIDQzLCAyMjEsIDIyNSwgNDMsIAotICAgIDIyMSwgMjI0LCA0MywgMjIxLCAyMjMsIDQzLCAyMjEsIDIyMiwgNDMsIDIyMSwgMjE5LCA0MywgMjIxLCAyMTgsIDQzLCAKLSAgICAyMjEsIDIxNywgNDMsIDIyMSwgMjE2LCA0MywgMjIxLCAyMTUsIDQzLCAyMjEsIDIxNCwgNDMsIDIyMSwgMjEzLCA0MywgCi0gICAgMjIxLCAyMTIsIDQzLCAyMjEsIDIxMSwgNDMsIDIyMSwgMjEwLCA0MywgMjIxLCAyMDgsIDQzLCAyMjEsIDIwNywgNDMsIAotICAgIDIyMSwgMjA2LCA0MywgMjIxLCAyMDUsIDQzLCAyMjEsIDIwNCwgNDMsIDIyMSwgMjAzLCA0MywgMjIxLCAyMDIsIDQzLCAKLSAgICAyMjEsIDIwMSwgNDMsIDIyMSwgMjAwLCA0MywgMjIxLCAxOTksIDQzLCAyMjEsIDE5NywgNDMsIDIyMSwgMTk2LCA0MywgCi0gICAgMjIxLCAxOTUsIDQzLCAyMjEsIDE5NCwgNDMsIDIyMSwgMTkzLCA0MywgMjIxLCAxOTIsIDQzLCAyMjEsIDE5MSwgNDMsIAotICAgIDIyMSwgMTkwLCA0MywgMjIxLCAxODksIDQzLCAyMjEsIDE4OCwgNDMsIDIyMSwgMTg2LCA0MywgMjIxLCAxODUsIDQzLCAKLSAgICAyMjEsIDE4NCwgNDMsIDIyMSwgMTgzLCA0MywgMjIxLCAxODIsIDQzLCAyMjEsIDE4MSwgNDMsIDIyMSwgMTgwLCA0MywgCi0gICAgMjIxLCAxNzksIDQzLCAyMjEsIDE3OCwgNDMsIDIyMSwgMTc3LCA0MywgMjIxLCAxNzUsIDQzLCAyMjEsIDE3NCwgNDMsIAotICAgIDIyMSwgMTczLCA0MywgMjIxLCAxNzIsIDQzLCAyMjEsIDE3MSwgNDMsIDIyMSwgMTcwLCA0MywgMjIxLCAxNjksIDQzLCAKLSAgICAyMjEsIDE2OCwgNDMsIDIyMSwgMTY3LCA0MywgMjIxLCAxNjYsIDQzLCAyMjEsIDE2NCwgNDMsIDIyMSwgMTYzLCA0MywgCi0gICAgMjIxLCAxNjIsIDQzLCAyMjEsIDE2MSwgNDMsIDIyMSwgMTYwLCA0MywgMjIxLCAxNTksIDQzLCAyMjEsIDE1OCwgCisgICAgMCwgMjE5LCAxOCwgMjQ1LCAzMSwgNzgsIDIyMywgMjU0LCA3OCwgNTQsIDUwLCAyNDcsIDEzMiwgNTAsIDIyNSwgMTgyLCAKKyAgICA1MCwgMjU0LCAxMjYsIDI1NCwgNTcsIDQzLCAyMjYsIDMsIDQ0LCAyMjYsIDMsIDI1MywgMjE2LCA5NiwgNTAsIDI0OSwgCisgICAgMjE5LCAyNDAsIDE2NywgMjQzLCAyMjksIDIxOCwgMTI5LCAyMTksIDQ2LCAyMSwgMjEwLCA4NiwgMjEsIDExMCwgMjEsIAorICAgIDEwNSwgMjEsIDE1OCwgMjEsIDE2MSwgMjEsIDE4OSwgMjEsIDE5NCwgMjEsIDE5OCwgMjEsIDE5NSwgMjEsIDIwMCwgMjQ5LCAKKyAgICAyMjYsIDIyMCwgMTUwLCAyMzMsIDE1LCA1MCwgMjQ1LCA5OCwgNTAsIDI0MiwgMTMwLCA1MCwgMjI0LCAxMywgNzgsIDI0OSwgCisgICAgMjE3LCAyNTMsIDIwNiwgNywgNiwgMSwgNjEsIDcsIDYsIDEsIDI1MywgMTU4LCA3LCA2LCAxLCAyNTEsIDY2LCA3LCA2LCAxLCAKKyAgICAyNDksIDYwLCA3LCA2LCAxLCA3NSwgNywgNiwgMSwgMjQ1LCA2LCA3LCA2LCAxLCAyNDMsIDIwMiwgNywgNiwgMSwgMjQyLCAKKyAgICA2MCwgNywgNiwgMSwgNzMsIDcsIDYsIDEsIDIzNSwgMTQ0LCA3LCA2LCAxLCAyMzUsIDIzLCA3LCA2LCAxLCAxNTYsIDcsIDYsIAorICAgIDEsIDE5MywgNywgNiwgMSwgMjMwLCAyNSwgNywgNiwgMSwgNzYsIDcsIDYsIDEsIDIyNiwgMTA1LCA3LCA2LCAxLCAyMjQsIAorICAgIDk2LCA3LCA2LCAxLCAxNTMsIDcsIDYsIDEsIDIyMiwgOTEsIDcsIDYsIDEsIDIxNywgMTUyLCA3LCA2LCAxLCA3MCwgNywgNiwgCisgICAgMSwgMjE0LCAxMDUsIDcsIDYsIDEsIDIxMiwgOTgsIDcsIDYsIDEsIDIxMSwgMTc4LCA3LCA2LCAxLCAyMTEsIDExNywgNywgCisgICAgNiwgMSwgMjEwLCAxNTksIDQzLCA0MiwgMTI3LCAyMjMsIDUwLCAyMTksIDQ2LCA0NCwgNDIsIDEyNywgMjUwLCAzMSwgMjU1LCAKKyAgICAxNCwgMTIxLCAyMzIsIDIxMywgMjQyLCAxMzcsIDI1NSwgMTQsIDcsIDQsIDEsIDYxLCA3LCA0LCAxLCAyNTMsIDE1OCwgNywgCisgICAgNCwgMSwgMjUxLCA2NiwgNywgNCwgMSwgMjQ5LCA2MCwgNywgNCwgMSwgNzUsIDcsIDQsIDEsIDI0NSwgNiwgNywgNCwgMSwgCisgICAgMjQzLCAyMDIsIDcsIDQsIDEsIDI0MiwgNjAsIDcsIDQsIDEsIDczLCA3LCA0LCAxLCAyMzUsIDE0NCwgNywgNCwgMSwgMjM1LCAKKyAgICAyMywgNywgNCwgMSwgMTU2LCA3LCA0LCAxLCAxOTMsIDcsIDQsIDEsIDIzMCwgMjUsIDcsIDQsIDEsIDc2LCA3LCA0LCAxLCAKKyAgICAyMjYsIDEwNSwgNywgNCwgMSwgMjI0LCA5NiwgNywgNCwgMSwgMTUzLCA3LCA0LCAxLCAyMjIsIDkxLCA3LCA0LCAxLCAyMTcsIAorICAgIDE1MiwgNywgNCwgMSwgNzAsIDcsIDQsIDEsIDIxNCwgMTA1LCA3LCA0LCAxLCAyMTIsIDk4LCA3LCA0LCAxLCAyMTEsIDE3OCwgCisgICAgNywgNCwgMSwgMjExLCAxMTcsIDcsIDQsIDEsIDIxMCwgMTU5LCA0MywgMjQ5LCA5OSwgMTI3LCA2NywgMjMyLCAyMTMsIDQ0LCAKKyAgICAyNDksIDk5LCAxMjcsIDE4MiwgMjI4LCA3MywgMjE5LCAxOCwgMjM1LCAxOTMsIDI0NSwgMzEsIDc4LCAyNTAsIDE3NiwgNTAsIAorICAgIDIyNCwgMjI4LCA1MCwgMjQ5LCA5OCwgNTAsIDIxMSwgNDAsIDUwLCAyNTEsIDEzNSwgMTMwLCAyMjEsIDE3MywgNTAsIDI0OCwgCisgICAgMSwgMjQ5LCAxNjMsIDUwLCAyNDQsIDEzNiwgMjI2LCAxNTQsIDIzNSwgMjM4LCAyMzMsIDQyLCA1MiwgMjU0LCAxMTAsIAorICAgIDIyMywgMjU0LCA3OCwgMjI4LCA1MiwgNTAsIDIxOSwgNTIsIDI0MCwgMTY4LCAyMjMsIDEwMiwgNTAsIDIzMSwgMjMyLCAKKyAgICAyNDgsIDcxLCA1MCwgMjI1LCAyMSwgNTAsIDIxOCwgMjMsIDEwNSwgMjE4LCAyMywgMTU4LCAyNTUsIDMsIDI1NSwgMTQsIAorICAgIDIzMCwgMjI4LCA1MCwgMjI1LCA2OCwgNTAsIDIzMCwgMjI0LCAyNDcsIDEyMCwgMjUwLCAxODMsIDIxOCwgMjMsIDExMCwgCisgICAgMjMxLCAxNDgsIDIyNiwgMTU0LCAyMzUsIDIzOCwgMjIyLCAyNDcsIDUyLCAyNTQsIDExMCwgMjIzLCAyNTQsIDc4LCAyMTIsIAorICAgIDExNCwgMjQ0LCAyLCAxMjMsIDIyNCwgMjEsIDIxMiwgMTE0LCAyNDQsIDIsIDEyMywgMjQyLCAyNywgMjEyLCAxMTQsIDI0NCwgCisgICAgMiwgMTM0LCAyMjQsIDE5LCAyMzUsIDE5MywgMjI0LCAxMywgNzgsIDcsIDYsIDEsIDExNSwgMiwgMjQyLCAxMzYsIDcsIDYsIAorICAgIDEsIDExNSwgMiwgMTQyLCA3LCA2LCAxLCAxMTUsIDIsIDI1MCwgMzAsIDcsIDYsIDEsIDExNSwgMiwgMTgyLCA3LCA2LCAxLCAKKyAgICAxMTUsIDIsIDI0OCwgMSwgNywgNiwgMSwgMTE1LCAyLCAyMjIsIDIzNCwgNDgsIDcsIDYsIDEsIDI1NCwgMjQzLCA3LCA2LCAKKyAgICAxLCAyNTEsIDY3LCAyLCAyNTAsIDE4MywgNywgNiwgMSwgMTYwLCAyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTYwLCAyLCAxNDIsIAorICAgIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMCwgNywgNiwgMSwgMTYwLCAyLCAyNDgsIDEsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAKKyAgICAyNDIsIDEzNiwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDE0MiwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDI1MCwgMzAsIDcsIDYsIAorICAgIDEsIDI0MCwgMTU0LCAyLCAyNDgsIDEsIDcsIDYsIDEsIDI0NSwgNTksIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDE4MiwgNywgNiwgCisgICAgMSwgMTQ0LCAyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTQ0LCAyLCAxNDIsIDcsIDYsIDEsIDE0NCwgMiwgMjUwLCAzMCwgNywgCisgICAgNiwgMSwgMTQ0LCAyLCAxODIsIDcsIDYsIDEsIDE0NCwgMiwgMjQ4LCAxLCAyMzAsIDg0LCA1MCwgNywgNiwgMSwgMTQ0LCAyLCAKKyAgICA5MSwgNywgNiwgMSwgMTA0LCAyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTA0LCAyLCAxNDIsIDcsIDYsIDEsIDEwNCwgMiwgCisgICAgMjUwLCAzMCwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDEsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAxNDIsIDcsIDYsIDEsIAorICAgIDIxNiwgMTUxLCA3LCA0LCAxLCAyMjAsIDc2LCAyMjIsIDkxLCA3LCA0LCAxLCAxMTUsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAKKyAgICAxMTUsIDIsIDE0MiwgNywgNCwgMSwgMTE1LCAyLCAyNTAsIDMwLCA3LCA0LCAxLCAxMTUsIDIsIDE4MiwgNywgNCwgMSwgCisgICAgMTE1LCAyLCAyNDgsIDEsIDcsIDQsIDEsIDExNSwgMiwgMjIyLCAyMzQsIDQ4LCA3LCA0LCAxLCAyNTQsIDI0MywgNywgNCwgCisgICAgMSwgMjUxLCA2NywgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDE2MCwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE2MCwgMiwgMTQyLCAKKyAgICA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgMzAsIDcsIDQsIDEsIDE2MCwgMiwgMjQ4LCAxLCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgCisgICAgMjQyLCAxMzYsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAxNDIsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAyNTAsIDMwLCA3LCA0LCAKKyAgICAxLCAyNDAsIDE1NCwgMiwgMjQ4LCAxLCA3LCA0LCAxLCAyNDUsIDU5LCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAxODIsIDcsIDQsIAorICAgIDEsIDE0NCwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE0NCwgMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzAsIDcsIAorICAgIDQsIDEsIDE0NCwgMiwgMTgyLCA3LCA0LCAxLCAxNDQsIDIsIDI0OCwgMSwgMjQ3LCAxNjksIDUwLCA3LCA0LCAxLCAxNDQsIAorICAgIDIsIDkxLCA3LCA0LCAxLCAxMDQsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxMDQsIDIsIDE0MiwgNywgNCwgMSwgMTA0LCAyLCAKKyAgICAyNTAsIDMwLCA3LCA0LCAxLCAxMDQsIDIsIDI0OCwgMSwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDE0MiwgNywgNCwgMSwgCisgICAgMjE2LCAxNTEsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAyNDgsIDEsIDcsIDYsIDEsIDExNSwgMiwgMjMxLCAyMzIsIDcsIDQsIAorICAgIDEsIDExNSwgMiwgMjMxLCAyMzIsIDcsIDYsIDEsIDExNSwgMiwgMjUxLCAxNDYsIDcsIDQsIDEsIDExNSwgMiwgMjUxLCAKKyAgICAxNDYsIDcsIDYsIDEsIDExNSwgMiwgMjI2LCAyMjQsIDcsIDQsIDEsIDExNSwgMiwgMjI2LCAyMjQsIDcsIDYsIDEsIDI1MSwgCisgICAgNjcsIDIsIDE0MiwgNywgNCwgMSwgMjUxLCA2NywgMiwgMTQyLCA3LCA2LCAxLCAyNTEsIDY3LCAyLCAyNTAsIDMwLCA3LCA0LCAKKyAgICAxLCAyNTEsIDY3LCAyLCAyNTAsIDMwLCA3LCA2LCAxLCAyNTEsIDY3LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI1MSwgNjcsIDIsIAorICAgIDU5LCA0OCwgNywgNiwgMSwgMjUxLCA2NywgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDI1MSwgNjcsIDIsIDI1MCwgMjM0LCA3LCAKKyAgICA2LCAxLCAyNDksIDYxLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjQ5LCA2MSwgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDI0OSwgCisgICAgNjEsIDIsIDkxLCA3LCA0LCAxLCAyNDksIDYxLCAyLCA5MSwgNywgNiwgMSwgMTYwLCAyLCAyMzEsIDIzMiwgNywgNCwgMSwgCisgICAgMTYwLCAyLCAyMzEsIDIzMiwgNywgNiwgMSwgMTYwLCAyLCAyNTEsIDE0NiwgNywgNCwgMSwgMTYwLCAyLCAyNTEsIDE0NiwgCisgICAgNywgNiwgMSwgMTYwLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDE2MCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAxNjAsIDIsIDIyNiwgCisgICAgMjI0LCA3LCA0LCAxLCAxNjAsIDIsIDIyNiwgMjI0LCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAxNjAsIAorICAgIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAyNDMsIDIwMywgMiwgMjUwLCAzMCwgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDI1MCwgCisgICAgMzAsIDcsIDYsIDEsIDI0MywgMjAzLCAyLCAyNTEsIDE0NiwgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDI1MSwgMTQ2LCA3LCA2LCAKKyAgICAxLCAyNDMsIDIwMywgMiwgNTksIDQ4LCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgNTksIDQ4LCA3LCA2LCAxLCAyNDMsIDIwMywgCisgICAgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAyNTAsIDE4MywgNywgNiwgMSwgMjQyLCA2MSwgMiwgMjUwLCAKKyAgICAzMCwgNywgNCwgMSwgMjQyLCA2MSwgMiwgMjUwLCAzMCwgNywgNiwgMSwgMjQyLCA2MSwgMiwgOTEsIDcsIDQsIDEsIDI0MiwgCisgICAgNjEsIDIsIDkxLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMTgyLCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMTgyLCA3LCA2LCAxLCAKKyAgICAyNDAsIDE1NCwgMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAyMzEsIDIzMiwgNywgNiwgMSwgMjQwLCAxNTQsIAorICAgIDIsIDI1MSwgMTQ2LCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjUxLCAxNDYsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAyMjYsIAorICAgIDIyNCwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDIyNiwgMjI0LCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgNTksIDQ4LCA3LCA0LCAKKyAgICAxLCAyNDcsIDExOSwgNzMsIDcsIDYsIDI3LCAyMzYsIDMxLCA3LCA0LCAyNywgMjM2LCAzMSwgNywgNiwgMSwgMjM1LCAxNDUsIAorICAgIDIsIDI1MCwgMzAsIDcsIDQsIDEsIDIzNSwgMTQ1LCAyLCAyNTAsIDMwLCA3LCA2LCAxLCAyMzUsIDI0LCAyLCAyNTAsIDE4MywgCisgICAgNywgNCwgMSwgMjM1LCAyNCwgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDIzMywgMjM5LCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgCisgICAgMTQyLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMTQyLCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgMjUwLCAxODMsIDcsIDQsIDEsIAorICAgIDIzMywgMTQ5LCAyLCAyNTAsIDE4MywgNywgNiwgMSwgMjMzLCAxNDksIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyMzMsIDE0OSwgCisgICAgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCAyMzAsIDIyNCwgMjQ3LCAxMjAsIDcsIDQsIDEsIDIzMywgMTQ5LCAKKyAgICAyLCAyMzAsIDIyNCwgMjQ3LCAxMjAsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCA5MSwgNywgNCwgMSwgMjMzLCAxNDksIDIsIAorICAgIDkxLCA3LCA2LCAxLCAyMzAsIDI2LCAyLCAxNDIsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDE0MiwgNywgNiwgMSwgMjMwLCAyNiwgCisgICAgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDI1MCwgMTgzLCA3LCA2LCAxLCAyMzAsIDI2LCAyLCAyNTAsIAorICAgIDIzNCwgNywgNCwgMSwgMjMwLCAyNiwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDIzMCwgMjYsIDIyNCwgMjA0LCAyNTEsIDc4LCAKKyAgICAyNTQsIDU3LCA3LCA2LCAxLCAyNDUsIDEzOCwgNywgNCwgMSwgMjQ1LCAxMzgsIDcsIDYsIDEsIDE0NCwgMiwgMjMxLCAyMzIsIAorICAgIDcsIDQsIDEsIDE0NCwgMiwgMjMxLCAyMzIsIDcsIDYsIDEsIDE0NCwgMiwgMjUxLCAxNDYsIDcsIDQsIDEsIDE0NCwgMiwgCisgICAgMjUxLCAxNDYsIDcsIDYsIDEsIDE0NCwgMiwgNTIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCA1MiwgMTQyLCA3LCA2LCAyNywgCisgICAgMjI2LCAyMzQsIDcsIDQsIDI3LCAyMjYsIDIzNCwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDE0MiwgNywgNCwgMSwgMjIzLCAKKyAgICAyMjQsIDIsIDE0MiwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDI1MCwgMTgzLCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMjUwLCAKKyAgICAxODMsIDcsIDYsIDEsIDIyMywgMjI0LCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDI1MCwgMjM0LCA3LCAKKyAgICA2LCAxLCAyMjIsIDkyLCAyLCAxNDIsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDE0MiwgNywgNiwgMSwgMjIyLCA5MiwgMiwgCisgICAgMjUwLCAzMCwgNywgNCwgMSwgMjIyLCA5MiwgMiwgMjUwLCAzMCwgNywgNiwgMSwgMjIyLCA5MiwgMiwgMjUwLCAxODMsIDcsIAorICAgIDQsIDEsIDIyMiwgOTIsIDIsIDI1MCwgMTgzLCA3LCA2LCAxLCAyMjIsIDkyLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjIyLCAKKyAgICA5MiwgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDIxNywgMTUzLCAyLCAyNTAsIDE4MywgNywgNCwgMSwgMjE3LCAxNTMsIDIsIAorICAgIDI1MCwgMTgzLCA3LCA2LCAxLCAyMTcsIDE1MywgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAyNTAsIDIzNCwgCisgICAgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDkxLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgOTEsIDcsIDYsIDEsIDEwNCwgMiwgMTgyLCAKKyAgICA3LCA0LCAxLCAxMDQsIDIsIDE4MiwgNywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzMiwgNywgNCwgMSwgMTA0LCAyLCAyMzEsIAorICAgIDIzMiwgNywgNiwgMSwgMTA0LCAyLCAyNTEsIDE0NiwgNywgNCwgMSwgMTA0LCAyLCAyNTEsIDE0NiwgNywgNiwgMSwgMTA0LCAKKyAgICAyLCAyMjIsIDIzNCwgNDgsIDcsIDQsIDEsIDEwNCwgMiwgMjIyLCAyMzQsIDQ4LCA3LCA2LCAxLCAxMDQsIDIsIDUyLCAxNDIsIAorICAgIDcsIDQsIDEsIDEwNCwgMiwgNTIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyMjYsIDIyNCwgNywgNCwgMSwgMTA0LCAyLCAKKyAgICAyMjYsIDIyNCwgNywgNiwgMSwgMjEyLCA5OSwgMiwgMjUwLCAzMCwgNywgNCwgMSwgMjEyLCA5OSwgMiwgMjUwLCAzMCwgNywgCisgICAgNiwgMSwgMjExLCAxMTgsIDIsIDI1MCwgMzAsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAyNTAsIDMwLCA3LCA2LCAxLCAyMTEsIAorICAgIDExOCwgMiwgMjQ4LCAxLCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgMTQyLCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMTQyLCA3LCAKKyAgICA2LCAxLCAyMTAsIDE2MCwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMTAsIAorICAgIDE2MCwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMTk5LCAyMjIsIDkxLCAKKyAgICA3LCA0LCAxLCA1NywgMiwgOTEsIDcsIDYsIDEsIDU3LCAyLCAxMDMsIDcsIDYsIDEsIDU3LCAyLCAyMTYsIDExLCA3LCA0LCAKKyAgICAxLCA1NywgMiwgMjE2LCAxMSwgNywgNiwgMSwgMTM4LCAxOTQsIDcsIDQsIDEsIDEzOCwgMTk0LCA3LCA2LCAxLCAyMDQsIAorICAgIDc2LCA3LCA2LCAxLCAyNTEsIDY3LCAyLCAxMDMsIDcsIDQsIDEsIDI1MSwgNjcsIDIsIDEwMywgNywgNiwgMSwgMjU0LCAKKyAgICAyMTksIDI0OSwgNjAsIDcsIDYsIDEsIDI0OSwgNjEsIDIsIDEwMywgNywgNiwgMSwgMjQ5LCA2MSwgMiwgMjE2LCAxMSwgNywgCisgICAgNCwgMSwgMjQ5LCA2MSwgMiwgMjE2LCAxMSwgNywgNCwgMSwgMjE1LCA5NCwgMjQ4LCA1NCwgNywgNiwgMSwgMjIzLCA0OSwgCisgICAgNzUsIDcsIDYsIDEsIDIyMSwgMTk1LCA3LCA2LCAxLCAyMDQsIDc1LCA3LCA2LCAxLCAyNDUsIDcsIDIsIDEwMywgNywgNCwgCisgICAgMSwgMjQ1LCA3LCAyLCAxMDMsIDcsIDYsIDEsIDI0MywgMjAzLCAyLCAxMDMsIDcsIDYsIDEsIDI0MywgMTA3LCA3LCA0LCAxLCAKKyAgICAyNDAsIDIwMSwgNywgNiwgMSwgMjM1LCAxODUsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCA5MSwgNywgNiwgMSwgMjM1LCAyNCwgCisgICAgMiwgMTAzLCA3LCA0LCAxLCAyMzUsIDI0LCAyLCAxMDMsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAxMzAsIDcsIDQsIDEsIAorICAgIDIzMywgMTAwLCAyLCA5MSwgNywgNiwgMSwgMjE1LCA5NCwgMTkzLCA3LCA2LCAxLCAyMzAsIDI2LCAyLCA0MywgMTAzLCA3LCAKKyAgICA0LCAxLCAyMzAsIDI2LCAyLCAxOTksIDQ0LCAyMzMsIDM2LCA3LCA2LCAxLCAxNDQsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDYsIAorICAgIDEsIDE0NCwgMiwgMjQwLCAyNDgsIDcsIDQsIDEsIDE0NCwgMiwgMjQwLCAyNDgsIDcsIDYsIDEsIDIyNiwgMjE5LCA3LCA0LCAKKyAgICAxLCAyMjYsIDIxOSwgNywgNiwgMSwgMjI2LCAxMDYsIDIsIDEwMywgNywgNCwgMSwgMjI2LCAxMDYsIDIsIDEwMywgNywgMSwgCisgICAgMjEwLCAyMTQsIDcsIDYsIDEsIDEzOCwgMTA1LCA3LCA0LCAxLCAxMzgsIDEwNSwgNywgNiwgMSwgMjQ1LCA3NSwgNywgMSwgCisgICAgMjIzLCA0OSwgMjQ1LCA3NiwgMjMyLCAxMjMsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAyMjYsIDY2LCAxMDMsIDcsIDYsIDEsIAorICAgIDIxNywgMTUzLCAyLCAxMDMsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAxMDMsIDcsIDYsIDEsIDIxNywgMTUzLCAyLCAyMjMsIAorICAgIDU1LCAxMDMsIDcsIDYsIDEsIDEwNCwgMiwgMjQwLCAyNDgsIDcsIDQsIDEsIDEwNCwgMiwgMjQwLCAyNDgsIDcsIDYsIDEsIAorICAgIDIxNCwgMTU3LCA3LCA2LCAxLCAyMTQsIDEwNiwgMiwgMTAzLCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMTAzLCA3LCA0LCAxLCAKKyAgICAyMTEsIDExOCwgMiwgMTAzLCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgOTEsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCA5MSwgNywgCisgICAgNiwgMSwgMjQ1LCA4LCA3LCA2LCAxLCAyNDUsIDksIDIyMywgNDgsIDcsIDQsIDEsIDI0NSwgOSwgMjIzLCA0OCwgNywgNCwgCisgICAgMSwgMjQ1LCA5LCAyLCAyMTcsIDc3LCA3LCAxLCAxMTMsIDIsIDkxLCA3LCA2LCAxLCAxMzgsIDE4OSwgNywgNCwgMSwgMTM4LCAKKyAgICAxODksIDcsIDEsIDIzNSwgMTkzLCAyNDIsIDE4MCwgMjE4LCAxMzAsIDIsIDkxLCA3LCAxLCAyMTEsIDE4MSwgNywgMSwgCisgICAgMjQ4LCA0NywgMjUwLCAxMSwgNywgMSwgMjMzLCA3NywgMjUwLCAxMSwgNywgMSwgMjU0LCAxMzcsIDI1MCwgMTEsIDcsIDEsIAorICAgIDIyMywgNTUsIDI1MCwgMTEsIDcsIDYsIDEsIDI0NiwgNDAsIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAyNDksIDYxLCAyLCA0LCAKKyAgICAxLCAyMTAsIDE2MCwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDI0NiwgNDAsIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAyMzIsIAorICAgIDE4OCwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDQsIDEsIDIzNSwgMTQ0LCA3LCA0LCAxLCAyMzIsIDE4OCwgNywgNiwgMSwgCisgICAgMjI4LCAxODYsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDQsIDEsIDIzNSwgMTQ0LCA3LCA0LCAxLCAyMjgsIDE4NiwgNywgNiwgCisgICAgMSwgMTE1LCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMTE1LCAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIAorICAgIDI1MCwgMjM0LCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDE0NCwgMiwgMjUwLCAyMzQsIDcsIAorICAgIDQsIDEsIDE0NCwgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDEwNCwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDEwNCwgMiwgMjUwLCAKKyAgICAyMzQsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAyLCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDEwNCwgMiwgMjQ4LCAyLCAyMiwgCisgICAgMjMxLCAyMzIsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAyLCAyMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDI0OCwgMiwgMjIsIAorICAgIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDIsIDIyLCAyNTAsIDIzNCwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDIsIDIyLCAKKyAgICAyNTAsIDIzNCwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDIsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDIsIAorICAgIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjE1LCA5NCwgNzUsIDcsIDYsIDEsIDExNSwgMiwgMjQ4LCAyLCAyMiwgMjMxLCAKKyAgICAyMzIsIDcsIDQsIDEsIDExNSwgMiwgMjQ4LCAyLCAyMiwgMjMxLCAyMzIsIDcsIDYsIDEsIDExNSwgMiwgNTksIDc3LCAyMiwgCisgICAgMjMxLCAyMzIsIDcsIDQsIDEsIDExNSwgMiwgNTksIDc3LCAyMiwgMjMxLCAyMzIsIDcsIDYsIDEsIDI1NCwgMjQ0LCAyLCAKKyAgICAyMzEsIDIzMiwgNywgNCwgMSwgMjU0LCAyNDQsIDIsIDIzMSwgMjMyLCA3LCA2LCAxLCAyNDMsIDIwMywgMiwgOTEsIDcsIDQsIAorICAgIDEsIDI0MywgMjAzLCAyLCA5MSwgNywgNiwgMSwgMjQzLCAyMDMsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgCisgICAgMjUwLCAyMzQsIDcsIDYsIDEsIDIzNSwgMjQsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyMzUsIDI0LCAyLCAyNTAsIDIzNCwgCisgICAgNywgNiwgMSwgMTQ0LCAyLCAyMjYsIDIyNCwgNywgNCwgMSwgMTQ0LCAyLCAyMjYsIDIyNCwgNywgNiwgMSwgMTQ0LCAyLCAKKyAgICAyMjYsIDIyNSwgMjIsIDIzMSwgMjMyLCA3LCA0LCAxLCAxNDQsIDIsIDIyNiwgMjI1LCAyMiwgMjMxLCAyMzIsIDcsIDYsIDEsIAorICAgIDI0NSwgOSwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDI0NSwgOSwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDIzNSwgMTQ1LCAyLCAKKyAgICAyNTAsIDIzNCwgNywgNiwgMSwgMjQ2LCAzOSwgNywgNiwgMSwgMjQ5LCA2MSwgMiwgNCwgMSwgMjEwLCAxNTksIDcsIDQsIDEsIAorICAgIDI0NiwgMzksIDcsIDYsIDEsIDI0MywgMjAzLCAyLCAxNDIsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAxNDIsIDcsIDYsIDEsIAorICAgIDI0MCwgMTk5LCA3LCA2LCAxLCAyMTEsIDE4MSwgNywgNiwgMSwgMjMwLCAyNiwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIzMCwgCisgICAgMjYsIDIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxMTUsIDIsIDIyMiwgMjM0LCA3NywgMjIsIDE0MiwgNywgNCwgMSwgMTE1LCAyLCAKKyAgICAyMjIsIDIzNCwgNzcsIDIyLCAxNDIsIDcsIDYsIDEsIDI1NCwgMjQ0LCAyLCAxNDIsIDcsIDQsIDEsIDI1NCwgMjQ0LCAyLCAKKyAgICAxNDIsIDcsIDYsIDEsIDE0NCwgMiwgMjE4LCAxMDMsIDIyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgMjE4LCAxMDMsIDIyLCAKKyAgICAxNDIsIDcsIDYsIDEsIDExNSwgMiwgNTIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxMTUsIDIsIDUyLCAyNDIsIDEzNiwgNywgNiwgCisgICAgMSwgMTE1LCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDQsIDEsIDExNSwgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA2LCAKKyAgICAxLCAxNjAsIDIsIDUyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTYwLCAyLCA1MiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE2MCwgMiwgCisgICAgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA0LCAxLCAxNjAsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNiwgMSwgMjQwLCAKKyAgICAxNTQsIDIsIDUyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDUyLCAyNDIsIDEzNiwgNywgNiwgMSwgMjQwLCAKKyAgICAxNTQsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgCisgICAgNiwgMSwgMTQ0LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE0NCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxNDQsIAorICAgIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNCwgMSwgMTQ0LCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDYsIDEsIDIyMywgCisgICAgMjI0LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDYsIDEsIDIyMywgCisgICAgMjI0LCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIAorICAgIDYsIDEsIDEwNCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxMDQsIDIsIDUyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTA0LCAKKyAgICAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDQsIDEsIDEwNCwgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA2LCAxLCAyMjIsIAorICAgIDkyLCAyLCAyNDksIDIyMCwgNTEsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDI0OSwgMjIwLCA1MSwgNywgNiwgMSwgMjE3LCAKKyAgICAxNTMsIDIsIDI0OSwgMjIwLCA1MSwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDI0OSwgMjIwLCA1MSwgNywgNiwgMSwgMjEwLCAKKyAgICAyMzEsIDcsIDQsIDEsIDIxMCwgMjMxLCA3LCA2LCAxLCAyNDIsIDYxLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjQyLCA2MSwgCisgICAgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDE5OSwgNDQsIDIzMywgMzYsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIAorICAgIDI0OSwgMTAwLCA3LCA2LCAxLCAyMjYsIDEzNCwgNywgNCwgMSwgMjI2LCAxMzQsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAKKyAgICAxMDMsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAxMDMsIDcsIDYsIDEsIDExNSwgMiwgNTksIDQ4LCA3LCA0LCAxLCAxMTUsIDIsIAorICAgIDU5LCA0OCwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDE4MywgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDE4MywgNywgNiwgMSwgCisgICAgMTQ0LCAyLCAyNDgsIDIsIDIyLCAyMzEsIDIzMiwgNywgNCwgMSwgMTQ0LCAyLCAyNDgsIDIsIDIyLCAyMzEsIDIzMiwgNywgCisgICAgNiwgMSwgMTQ0LCAyLCAyMTYsIDg5LCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDE0NCwgMiwgMjE2LCA4OSwgMjIsIDIzMSwgCisgICAgMjMyLCA3LCA2LCAxLCAxNDQsIDIsIDU5LCA0OCwgNywgNCwgMSwgMTQ0LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDE0NCwgMiwgCisgICAgNTksIDc3LCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDE0NCwgMiwgNTksIDc3LCAyMiwgMjMxLCAyMzIsIDcsIDYsIDEsIAorICAgIDIxMSwgMTE4LCAyLCAyMzEsIDIzMiwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDIzMSwgMjMyLCA3LCA0LCAxLCAyMzMsIDE0OSwgCisgICAgMiwgMjQ5LCAxMDAsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDI0OSwgMTAwLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgMjQ5LCAKKyAgICAxMDAsIDcsIDQsIDEsIDI0NywgMTE5LCAyMzUsIDE0NCwgNywgNCwgMSwgMjQ4LCAxNDMsIDI0NywgMjIwLCA3LCA0LCAxLCAKKyAgICAyMjQsIDMxLCAyNDcsIDIyMCwgNywgNiwgMSwgMTE1LCAyLCA5MSwgNywgNiwgMSwgMjUxLCA2NywgMiwgOTEsIDcsIDQsIDEsIAorICAgIDI1MSwgNjcsIDIsIDkxLCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgMTMwLCA3LCA2LCAxLCAyMTcsIDE1MywgMiwgMjQ3LCAKKyAgICAyNTUsIDkxLCA3LCA0LCAxLCAyMjIsIDkyLCAyLCAyMTcsIDI1MCwgMjE3LCA3NywgNywgNCwgMSwgMjEwLCAxNjAsIDIsIAorICAgIDIxNywgMjUwLCAyMTcsIDc3LCA3LCA2LCAxLCAyNDIsIDE4MCwgMjE4LCAxMjksIDcsIDQsIDEsIDI0MiwgMTgwLCAyMTgsIAorICAgIDEyOSwgNywgNiwgMSwgNTcsIDIsIDkxLCA3LCA2LCAxLCAxMDQsIDEzMCwgNywgNiwgMSwgMjE1LCA5NCwgMjE0LCAxMDUsIAorICAgIDcsIDYsIDEsIDE2MCwgMiwgOTEsIDcsIDQsIDEsIDE2MCwgMiwgOTEsIDcsIDYsIDEsIDIzNSwgMTQ1LCAyLCA5MSwgNywgNCwgCisgICAgMSwgMjM1LCAxNDUsIDIsIDkxLCA3LCA2LCAxLCA0LCAyMjQsIDk3LCAyLCAyNDEsIDUyLCAyMTcsIDc3LCA3LCA0LCAxLCAKKyAgICAyMjQsIDk3LCAyLCAyNDEsIDUyLCAyMTcsIDc3LCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgOTEsIDcsIDQsIDEsIDIyMywgCisgICAgMjI0LCAyLCA5MSwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDkxLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgOTEsIDcsIDQsIDEsIAorICAgIDIxNSwgOTQsIDYxLCA3LCA0LCAxLCAyNTQsIDE0MywgNywgNCwgMSwgMjE1LCA5NCwgMjU0LCAxNDMsIDcsIDQsIDEsIDU3LCAKKyAgICAyLCAxMDMsIDcsIDQsIDEsIDIwNCwgNzYsIDcsIDQsIDEsIDI1MSwgNjcsIDIsIDI0OSwgMTAwLCA3LCA0LCAxLCAyNDksIAorICAgIDYxLCAyLCAyMTcsIDc3LCA3LCA0LCAxLCAyNDksIDYxLCAyLCAxMDMsIDcsIDQsIDEsIDIyMywgNDksIDc1LCA3LCA0LCAxLCAKKyAgICAyMjEsIDE5NSwgNywgNCwgMSwgMjIxLCAxOTYsIDIsIDEwMywgNywgNCwgMSwgMjA0LCA3NSwgNywgNCwgMSwgMjIzLCA0OSwgCisgICAgMjA0LCA3NSwgNywgNCwgMSwgMjIzLCA0OSwgMjA0LCAxNjAsIDIsIDEwMywgNywgNCwgMSwgMjUwLCAwLCAyMjMsIDQ5LCAKKyAgICAyMDQsIDc1LCA3LCA0LCAxLCAyNDcsIDExOSwgMjM1LCAxNDUsIDIsIDkxLCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgMTAzLCAKKyAgICA3LCA0LCAxLCAxMTksIDI0MywgMjAyLCA3LCAxLCA0LCA2LCAyNDMsIDIwMiwgNywgNCwgMSwgMjQzLCAxMDcsIDcsIDQsIDEsIAorICAgIDIyMywgMTUxLCAyNDAsIDI0OCwgNywgNCwgMSwgMjE1LCA5NCwgMjQyLCA2MCwgNywgNCwgMSwgMjQyLCA2MSwgMiwgMTAzLCAKKyAgICA3LCA0LCAxLCAyNDEsIDIwOCwgMiwgMTAzLCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgOTEsIDcsIDQsIDEsIDIzNSwgMTg1LCAKKyAgICA3LCAxLCA0LCA2LCA3MywgNywgNCwgMSwgMjMzLCAxNDksIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDIzMywgMTQ5LCAKKyAgICAyLCAyNTIsIDQxLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAyMzMsIDEsIDcsIDQsIDEsIAorICAgIDIxNSwgOTQsIDE5MywgNywgNCwgMSwgMjE1LCA5NCwgMjMyLCA1MCwgMiwgMTk5LCAyMzMsIDM2LCA3LCA0LCAxLCAyMzIsIAorICAgIDUwLCAyLCAxMDMsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDQzLCAxMDMsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDIyMywgNTUsIAorICAgIDEwMywgNywgMSwgNCwgNiwgMjMwLCAyNSwgNywgNCwgMSwgMjUyLCAxMzQsIDc2LCA3LCAxLCA0LCA2LCAyMjYsIDIzNCwgNywgCisgICAgNCwgMSwgMjUwLCAwLCAyMjYsIDIwMSwgNywgNCwgMSwgMjI1LCAxMzMsIDcsIDQsIDEsIDIxNSwgOTQsIDE1MywgNywgNCwgCisgICAgMSwgMjE1LCA5NCwgMjIzLCAyMjQsIDIsIDE5OSwgMjMzLCAzNiwgNywgNCwgMSwgMjE1LCA5NCwgMjIzLCAyMjQsIDIsIAorICAgIDEwMywgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDE5OSwgMjMzLCAzNiwgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDIxNywgNzcsIAorICAgIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAyNDQsIDg3LCA3LCA0LCAxLCAyMjMsIDQ5LCAyMjMsIDIyNCwgMiwgMjQ0LCA4NywgNywgCisgICAgMSwgNCwgNiwgMTUzLCA3LCAxLCA0LCA2LCAyMzUsIDE5MywgMTUzLCA3LCA0LCAxLCAyMjIsIDkyLCAyLCAxMDMsIDcsIDQsIAorICAgIDEsIDI0NSwgNzUsIDcsIDQsIDEsIDI0NywgMTE5LCAyMzUsIDE0NSwgMiwgMjE4LCAxMDMsIDIyLCAxMDMsIDcsIDQsIDEsIAorICAgIDIxOCwgMjMxLCAyMjMsIDQ5LCAyNDUsIDc1LCA3LCA0LCAxLCAyNDUsIDc2LCAyLCAyNDksIDEwMCwgNywgNCwgMSwgMjE1LCAKKyAgICA5NCwgMjE3LCAxNTIsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDEwNCwgMTMwLCA3LCAKKyAgICA0LCAxLCAyMTQsIDE1NywgNywgNCwgMSwgMjE0LCAxMDYsIDIsIDEwMywgNywgNCwgMSwgMjE1LCA5NCwgMjE0LCAxMDUsIDcsIAorICAgIDQsIDEsIDIxNSwgOTQsIDIxMiwgOTgsIDcsIDQsIDEsIDIxNSwgOTQsIDIxMSwgMTE3LCA3LCAxLCA0LCA2LCAyMTEsIDExNywgCisgICAgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDI0OSwgMTAwLCA3LCA0LCAKKyAgICAxLCAyNDUsIDgsIDcsIDQsIDEsIDI0NSwgOSwgMiwgMjQ5LCAxMDAsIDcsIDEsIDI0MiwgMTgwLCAyMTgsIDEyOSwgNywgMSwgCisgICAgMjI1LCAxMzksIDIxMywgMTM1LCAyNDMsIDI0OSwgNywgMSwgMjM1LCAxOTMsIDI0MiwgMTgwLCAyMTgsIDEyOSwgNywgMSwgCisgICAgMjE4LCAxMTAsIDI1MSwgNjYsIDcsIDEsIDI1MSwgMjQ2LCAyNTAsIDExLCA3LCAxLCA0LCA2LCAyNTMsIDE1OCwgNywgNCwgCisgICAgMSwgMjUwLCAwLCAyMDQsIDc1LCA3LCAxLCA0LCA2LCAyNDMsIDIwMywgMiwgMTAzLCA3LCAxLCA0LCA2LCAyNDIsIDYwLCA3LCAKKyAgICA0LCAxLCAyMzUsIDE0NSwgMiwgMjQ5LCAxMjcsIDcsIDQsIDEsIDIxNSwgOTQsIDIzNSwgMjMsIDcsIDEsIDQsIDYsIDE1NiwgCisgICAgNywgNCwgMSwgMjI0LCA5NywgMiwgMTAzLCA3LCAxLCAyNDIsIDE4MCwgMjE4LCAxMzAsIDIsIDkxLCA3LCAxLCAyMjMsIDQ5LCAKKyAgICAyNDIsIDE4MCwgMjE4LCAxMzAsIDIsIDkxLCA3LCA0LCAxLCAyNDYsIDQwLCAyNDcsIDIyMCwgNywgNCwgMSwgMjQ4LCAyNiwgCisgICAgMjQ3LCAyMjAsIDcsIDQsIDEsIDI0NiwgNDAsIDI0NywgMjIxLCAyLCAyNDksIDEwMCwgNywgNCwgMSwgMjE1LCAxODUsIAorICAgIDI0NywgMjIwLCA3LCA0LCAxLCAyMTYsIDIzNSwgMjQ3LCAyMjAsIDcsIDQsIDEsIDIxNywgMjksIDI0NywgMjIxLCAyLCAKKyAgICAyNDksIDEwMCwgNywgNCwgMSwgMjQ0LCAxMzQsIDI0NywgMjIwLCA3LCA0LCAxLCAyMzIsIDEwMCwgMjQ3LCAyMjAsIDcsIDQsIAorICAgIDEsIDIzMiwgNTEsIDI0NywgMjIwLCA3LCAxLCAyNTEsIDI0NiwgMjI1LCAxODEsIDcsIDEsIDI1MSwgMjU0LCAyMjUsIDE4MSwgCisgICAgNywgNCwgMSwgMjE1LCA5NCwgMjQyLCA2MSwgMiwgMjQ0LCA4NywgNywgNCwgMSwgMjE1LCA5NCwgMjQyLCA2MSwgMiwgMjQ0LCAKKyAgICA4OCwgMjIsIDIxNywgNzcsIDU4LCAxLCA0LCAyNDIsIDYwLCA1OCwgMSwgNCwgMjQyLCA2MSwgMiwgMTAzLCA1OCwgMSwgNCwgCisgICAgMjM1LCAxNDQsIDU4LCAxLCA0LCAxNTMsIDU4LCAxLCA0LCAyMTUsIDk0LCAxNTMsIDU4LCAxLCA0LCAyMTUsIDk0LCAyMjMsIAorICAgIDIyNCwgMiwgMTAzLCA1OCwgMSwgNCwgNiwgMjM1LCAxOTMsIDE1MywgNTgsIDEsIDQsIDIxMiwgOTgsIDU4LCAxLCA0LCAKKyAgICAyMTEsIDExNywgNTgsIDEsIDIyNCwgMTkwLCA1OCwgMSwgNTIsIDIyNCwgMTkwLCA1OCwgMSwgMjE1LCA5NCwgMjQ5LCAyMTksIAorICAgIDU4LCAxLCAyNTQsIDU3LCA1OCwgMSwgMjIzLCA0OSwgMjQ5LCAyMTksIDU4LCAxLCA0NCwgMTYzLCAyMjIsIDIzMywgNTgsIAorICAgIDEsIDQzLCAxNjMsIDIyMiwgMjMzLCA1OCwgMSwgMjQyLCAxODAsIDIxOCwgMTI5LCA1OCwgMSwgMjIzLCA0OSwgMjQyLCAKKyAgICAxODAsIDIxOCwgMTI5LCA1OCwgMSwgNDMsIDI1MywgMjQ5LCA1OCwgMSwgNDQsIDI1MywgMjQ5LCA1OCwgMSwgMTIwLCAyNTMsIAorICAgIDI0OSwgNTgsIDEsIDEyNCwgMjUzLCAyNDksIDU4LCAxLCAyNTAsIDMxLCAyNTUsIDE0LCAyNTAsIDIzNCwgNTgsIDEsIDY3LCAKKyAgICAyMzIsIDIxMywgNTgsIDEsIDIzMSwgMjMyLCA1OCwgMSwgMjU1LCAzLCAyNTUsIDE0LCA1OCwgMSwgMjQyLCAxMzcsIDI1NSwgCisgICAgMTQsIDU4LCAxLCAxMjEsIDY3LCAyMzIsIDIxMywgNTgsIDEsIDEyMSwgMjMxLCAyMzIsIDU4LCAxLCAxMjEsIDI0MiwgMTM3LCAKKyAgICAyNTUsIDE0LCA1OCwgMSwgMTIxLCAyNTUsIDMsIDI1NSwgMTQsIDU4LCAxLCAyMTUsIDIyMiwgMjQ5LCAyMjYsIDU4LCAxLCAKKyAgICAxNjMsIDIxNSwgMjIyLCAyNDksIDIyNiwgNTgsIDEsIDI1MCwgMTczLCA0NCwgMTYzLCAyMjIsIDIzMywgNTgsIDEsIDI1MCwgCisgICAgMTczLCA0MywgMTYzLCAyMjIsIDIzMywgNTgsIDEsIDEyMCwgMjE3LCA4NywgNTgsIDEsIDEyNCwgMjE3LCA4NywgNTgsIDEsIAorICAgIDk2LCA1MCwgNTgsIDEsIDIzMCwgMTgyLCA1MCwgMjUxLCAxNDYsIDU5LCA0OCwgMjIyLCAyMzQsIDQ4LCAyMjYsIDIyNCwgNCwgCisgICAgMTgyLCA1MiwgMjU1LCAzLCAyNTUsIDE0LCA1OCwgMSwgMjIzLCAzNiwgMTAzLCA1OCwgMSwgMjQ5LCAxMzEsIDI1NSwgMTQsIAorICAgIDU4LCAxLCA0LCAyNDMsIDEwNywgNTgsIDEsIDQsIDE1NiwgNTgsIDEsIDQsIDIyMiwgOTEsIDU4LCAxLCA0LCAyMTEsIDE3OCwgCisgICAgNTgsIDEsIDQsIDIyMywgNDksIDI0MiwgMTgwLCAyMTgsIDEyOSwgNTgsIDEsIDI0NSwgMjAsIDEzOCwgMTMwLCA1OCwgMSwgCisgICAgMTI1LCAxMzgsIDEzMCwgNTgsIDEsIDIzMCwgMjI1LCAxMzgsIDEzMCwgNTgsIDEsIDEyMSwgMTM4LCAxMzAsIDU4LCAxLCAKKyAgICAyNDUsIDE5LCAxMzgsIDEzMCwgNTgsIDEsIDIxMCwgMjU0LCAyNDgsIDQ0LCAxMzgsIDc4LCA1OCwgMSwgMjExLCA3MCwgCisgICAgMjQ4LCA0NCwgMTM4LCA3OCwgNTgsIDEsIDIxMywgMTMzLCA1OCwgMSwgMjE0LCAxODYsIDU4LCAxLCA1MiwgMjU0LCA1NywgCisgICAgNTgsIDEsIDEyMSwgMTI0LCAyNTMsIDI0OSwgNTgsIDEsIDEyMSwgMTIwLCAyNTMsIDI0OSwgNTgsIDEsIDEyMSwgNDMsIAorICAgIDI1MywgMjQ5LCA1OCwgMSwgMTIxLCA0NCwgMjUzLCAyNDksIDU4LCAxLCAxMjEsIDIyMiwgMjMzLCA1OCwgMSwgMjMwLCAKKyAgICAyMjQsIDI0MiwgMTM3LCAyNTUsIDE0LCA1OCwgMSwgMjMwLCAyMjQsIDUyLCAyNDIsIDEzNywgMjU1LCAxNCwgNTgsIDEsIAorICAgIDIzMCwgMjI0LCA1MiwgMjU1LCAzLCAyNTUsIDE0LCA1OCwgMSwgMTIxLCAxODIsIDU4LCAxLCAyMjMsIDE1NywgMjQ5LCAKKyAgICAyMjYsIDU4LCAxLCAyNTIsIDU4LCAxMjUsIDIxNiwgMzAsIDU4LCAxLCAyNDUsIDE0MywgMTI1LCAyMTYsIDMwLCA1OCwgMSwgCisgICAgMjUyLCA1OCwgMTIxLCAyMTYsIDMwLCA1OCwgMSwgMjQ1LCAxNDMsIDEyMSwgMjE2LCAzMCwgNTgsIDEsIDIyMCwgNTQsIDU4LCAKKyAgICAxLCAyMDQsIDIyMCwgNTQsIDU4LCAxLCAxMjEsIDQzLCA3NCwgMzgsIDI0MiwgMTM3LCAyNTUsIDE0LCAzOCwgMjU1LCAzLCAKKyAgICAyNTUsIDE0LCAzOCwgMjUwLCAzMSwgMjU1LCAxNCwgMzgsIDE4MiwgMzgsIDIzMSwgMjMyLCAzOCwgMjI2LCAxMTksIDM4LCAKKyAgICAyNTEsIDE0NiwgMzgsIDU5LCA0OCwgMzgsIDI0OCwgMSwgMzgsIDI0MSwgNTIsIDQ4LCAzOCwgMjIyLCAyMzQsIDQ4LCAzOCwgCisgICAgNTIsIDI1NSwgMywgMjU1LCAxNCwgMzgsIDI1MCwgMjM0LCAzOCwgNjcsIDIzMiwgMjE0LCA0OCwgMzgsIDUyLCA2NywgMjMyLCAKKyAgICAyMTQsIDQ4LCAzOCwgNTIsIDI0MiwgMTM3LCAyNTUsIDE0LCAzOCwgMjUwLCAyNTUsIDM4LCAyMzUsIDE5MywgMjUxLCAxNDYsIAorICAgIDM4LCAyMTUsIDk0LCAyNDksIDIyMCwgNDgsIDM4LCAyNDksIDIyMCwgNDgsIDM4LCAyMjMsIDQ5LCAyNDksIDIyMCwgNDgsIAorICAgIDM4LCAyNDksIDIyMCwgNzcsIDIyMiwgMjUxLCAzOCwgMjQyLCAxMzcsIDI1NSwgMTUsIDUxLCAzOCwgMjU1LCAzLCAyNTUsIAorICAgIDE1LCA1MSwgMzgsIDQzLCAyMTcsIDg4LCA1MSwgMzgsIDQ0LCAyMTcsIDg4LCA1MSwgMzgsIDQzLCAyNTQsIDExMCwgNDgsIAorICAgIDM4LCAyNDAsIDI0OCwgMzgsIDQzLCAxNjMsIDIyMiwgMjM0LCA1MSwgMzgsIDEyMCwgMjE3LCA4OCwgNTEsIDM4LCAxMjQsIAorICAgIDIxNywgODgsIDUxLCAzOCwgOTYsIDUsIDUxLCAzOCwgMjMwLCAxODIsIDUsIDUxLCAzOCwgMjI2LCA2NCwgMjQxLCA1MiwgCisgICAgNTEsIDM4LCAyMjMsIDU1LCAyNDEsIDUyLCA1MSwgMzgsIDU5LCA1MSwgMzgsIDI0OCwgMiwgNTEsIDM4LCAyMjIsIDIzNCwgCisgICAgNTEsIDM4LCAyNDksIDIyMCwgNTEsIDM4LCAyNTAsIDE4MywgMzgsIDIyNiwgMjI0LCAzOCwgNjcsIDIzMiwgMjE0LCA1MSwgCisgICAgMzgsIDI1MSwgMTQwLCA1MSwgMzgsIDIzNSwgMTkzLCA1MiwgMjU0LCAyNCwgNTEsIDM4LCAyNTAsIDIzNSwgNTEsIDM4LCAKKyAgICAyNTAsIDMxLCAyNTUsIDE1LCA1MSwgMzgsIDI1MSwgMTQ3LCA1MSwgMzgsIDIzNSwgMTkzLCAyNTEsIDE0NywgNTEsIDM4LCAKKyAgICAyMTYsIDg5LCA1MSwgMzgsIDIzMSwgMjMzLCA1MSwgMzgsIDEyMSwgMjMyLCAyMTMsIDM4LCA1MiwgMTIxLCAyMzIsIDIxMywgCisgICAgMzgsIDIxNiwgODksIDIyNiwgMTIwLCAzOCwgMjE5LCAyNTEsIDIxOCwgMTAzLCAyMjYsIDEyMCwgMzgsIDE5OSwgMjE4LCAKKyAgICAxMDMsIDIyNiwgMTIwLCAzOCwgMjE5LCAyNTEsIDIxOSwgNDcsIDIyNiwgMTIwLCAzOCwgMTk5LCAyMTksIDQ3LCAyMjYsIAorICAgIDEyMCwgMzgsIDQ0LCAxNjMsIDIyMiwgMjM0LCA1MSwgMzgsIDIzNSwgMTkzLCAyNTEsIDE0MCwgNTEsIDM4LCA0MiwgNTEsIAorICAgIDM4LCAyMjEsIDE4MCwgNTEsIDM4LCAyMTEsIDE3OSwgNDgsIDM4LCA2NywgMTgyLCAzOCwgNTIsIDIyNiwgMTE5LCAzOCwgCisgICAgMjQyLCAxMzcsIDEzOCwgNzgsIDM4LCAyNTUsIDMsIDEzOCwgNzgsIDM4LCAyNiwgMjI1LCAxNzUsIDM4LCAyNiwgMjM0LCAyLCAKKyAgICAzOCwgMjYsIDI0NywgMjUyLCAyMTYsIDE4LCAzOCwgMjYsIDIxMCwgMjE5LCAzOCwgMjUxLCAxNDAsIDQ4LCAzOCwgMjQ1LCAKKyAgICA5OCwgNSwgNTEsIDM4LCA1MiwgNjcsIDIzMiwgMjE0LCA1MSwgMzgsIDQzLCAyNTQsIDExMCwgNTEsIDM4LCAyMjgsIDUyLCAKKyAgICAyMTYsIDg5LCA0OCwgMzgsIDI0MSwgNTgsIDQ4LCAzOCwgMjU0LCAxNDgsIDEyOCwgMjE2LCA0MiwgNDgsIDM4LCA0MywgNDQsIAorICAgIDgwLCA1MSwgMzgsIDIxNCwgMTUzLCA4MCwgNTEsIDM4LCAyNDIsIDE0MiwgMjM1LCA2MywgMzgsIDQ0LCAyNTMsIDI1MCwgCisgICAgNDgsIDM4LCA0MywgMTYzLCAyMjIsIDIzNCwgNDgsIDM4LCAyNDQsIDEzMSwgMzgsIDIxMSwgMTc5LCA1MSwgMzgsIDQzLCAKKyAgICAyNTMsIDI1MCwgNTEsIDM4LCA0NCwgMjUzLCAyNTAsIDUxLCAzOCwgNDQsIDI1MywgMjUwLCAyMiwgMTIwLCAyNTMsIDI1MCwgCisgICAgNTEsIDM4LCA0NCwgMTYzLCAyMjIsIDIzNCwgNDgsIDM4LCA1OSwgNzcsIDIyMiwgMjUxLCAzOCwgMjUzLCAyMTcsIDUxLCAKKyAgICAzOCwgNTIsIDIyMiwgMjM0LCA1MSwgMzgsIDIxMCwgMzUsIDQ4LCAzOCwgNTIsIDI1MSwgMTQ3LCA1MSwgMzgsIDUyLCAyNTEsIAorICAgIDE0NiwgMzgsIDUyLCAyMzEsIDIzMiwgMzgsIDUyLCAyMzEsIDIzMywgNTEsIDM4LCA1MiwgMTgyLCAzOCwgNTIsIDIzNSwgCisgICAgMTkzLCAyNTEsIDE0NiwgMzgsIDUyLCA5NywgODAsIDUxLCAzOCwgNywgNCwgMSwgNjEsIDM4LCA3LCA0LCAxLCA3NSwgMzgsIAorICAgIDcsIDQsIDEsIDczLCAzOCwgNywgNCwgMSwgNzYsIDM4LCA3LCA0LCAxLCA3MCwgMzgsIDcsIDQsIDEsIDI1MSwgNjYsIDM4LCAKKyAgICA3LCA0LCAxLCAyNDksIDYwLCAzOCwgNywgNCwgMSwgMjQyLCA2MCwgMzgsIDcsIDQsIDEsIDE5MywgMzgsIDcsIDQsIDEsIAorICAgIDE1MywgMzgsIDcsIDQsIDEsIDIxNywgMTUyLCAzOCwgNywgNCwgMSwgMjE0LCAxMDUsIDM4LCA3LCA0LCAxLCAyMTEsIDE3OCwgCisgICAgMjYsIDYsIDEsIDI0MSwgMTk2LCAyNiwgNCwgMSwgMjQxLCAxOTYsIDI2LCA2LCAxLCAyNTQsIDIzLCAyMjEsIDI0NiwgMjYsIAorICAgIDQsIDEsIDI1NCwgMjMsIDIyMSwgMjQ2LCAyNiwgMjI3LCAxOTgsIDUwLCAyNiwgMjMyLCAxMDgsIDIyNywgMTk4LCA1MCwgCisgICAgMjYsIDYsIDEsIDIyNiwgNTEsIDI0NywgMjI3LCAyNiwgNCwgMSwgMjI2LCA1MSwgMjQ3LCAyMjcsIDI2LCAyMTAsIDIxOSwgCisgICAgMjYsIDQsIDIyMywgNDksIDIzMiwgODMsIDIxOSwgMTc4LCA4NywgMjYsIDQsIDI0NiwgMTE4LCAyMzIsIDgzLCAyMTksIAorICAgIDE3OCwgODcsIDI2LCA0LCAyMjMsIDQ5LCAyNDYsIDExOCwgMjMyLCA4MywgMjE5LCAxNzgsIDg3LCAyNiwgMjI0LCAxMywgCisgICAgNzgsIDI2LCAyMTYsIDE4LCAyNiwgMjQ3LCAyNTIsIDIxNiwgMTgsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjE2LCAxOCwgCisgICAgMjYsIDI1NCwgOTcsIDIxNywgMiwgMjYsIDYsIDEsIDI0NSwgMTAxLCAyLCAyMTYsIDE4LCAyNiwgNiwgMSwgMjQ1LCA2NCwgCisgICAgMiwgMjE2LCAxOCwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMTYsIDE4LCAyNiwgNiwgMSwgMjI2LCAyMDAsIDIsIDIxNiwgCisgICAgMTgsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjE2LCAxOCwgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyMTYsIDE4LCAyNiwgCisgICAgNCwgMSwgMjM1LCAxODYsIDIsIDI0NywgMjUyLCAyMiwgMjE2LCAxOCwgMjYsIDYsIDEsIDI1NCwgMTQzLCAyNiwgNiwgMSwgCisgICAgMjUyLCAyNiwgMjYsIDYsIDEsIDI0MywgMTA3LCAyNiwgNiwgMSwgMjQ4LCA1NCwgMjYsIDYsIDEsIDI0NSwgMTAwLCAyNiwgCisgICAgNiwgMSwgMjEwLCA4NSwgMjYsIDYsIDEsIDI0NSwgNjMsIDI2LCA2LCAxLCAyMTYsIDE3OSwgMjYsIDYsIDEsIDIzNSwgMTg1LCAKKyAgICAyNiwgNiwgMSwgMjM0LCAyMjIsIDI2LCA2LCAxLCAyMzMsIDk4LCAyNiwgNiwgMSwgMjMwLCAxMDIsIDI2LCA2LCAxLCAyMjcsIAorICAgIDIzNywgMjYsIDYsIDEsIDIxMSwgMTU3LCAyNiwgNiwgMSwgMjI2LCAxOTksIDI2LCA2LCAxLCAyMjUsIDEwOCwgMjYsIDYsIAorICAgIDEsIDIyMywgMzcsIDI2LCA2LCAxLCAyMTksIDE3NywgMjYsIDYsIDEsIDIxNywgNDEsIDI2LCA2LCAxLCAyMTQsIDE1NywgCisgICAgMjYsIDYsIDEsIDIyNSwgMTMzLCAyNiwgNiwgMSwgMjUwLCAxMTAsIDI2LCA2LCAxLCAyMjQsIDE2MSwgMjYsIDYsIDEsIAorICAgIDIyNiwgMjAxLCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDI0NywgMjUxLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDI0NywgCisgICAgMjUxLCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIxNiwgMTgsIDI2LCA0LCAxLCAyNDUsIDEwMSwgMiwgMjE2LCAxOCwgMjYsIAorICAgIDQsIDEsIDI0NSwgNjQsIDIsIDIxNiwgMTgsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjE2LCAxOCwgMjYsIDQsIDEsIDIxNCwgCisgICAgMTU4LCAyLCAyNDcsIDI1MiwgMjIsIDIxNiwgMTgsIDI2LCA0LCAxLCAyNTQsIDE0MywgMjYsIDQsIDEsIDI1MiwgMjYsIDI2LCAKKyAgICA0LCAxLCAyNDMsIDEwNywgMjYsIDQsIDEsIDI0OCwgNTQsIDI2LCA0LCAxLCAyNDUsIDEwMCwgMjYsIDQsIDEsIDIxMCwgODUsIAorICAgIDI2LCA0LCAxLCAyNDUsIDYzLCAyNiwgNCwgMSwgMjE2LCAxNzksIDI2LCA0LCAxLCAyMzUsIDE4NSwgMjYsIDQsIDEsIDIzNCwgCisgICAgMjIyLCAyNiwgNCwgMSwgMjMzLCA5OCwgMjYsIDQsIDEsIDIzMCwgMTAyLCAyNiwgNCwgMSwgMjI3LCAyMzcsIDI2LCA0LCAxLCAKKyAgICAyMTEsIDE1NywgMjYsIDQsIDEsIDIyNiwgMTk5LCAyNiwgNCwgMSwgMjI1LCAxMDgsIDI2LCA0LCAxLCAyMjMsIDM3LCAyNiwgCisgICAgNCwgMSwgNDAsIDIxOSwgMTc3LCAyNiwgNCwgMSwgMjE5LCAxNzcsIDI2LCA0LCAxLCAyMTcsIDQxLCAyNiwgNCwgMSwgMjE0LCAKKyAgICAxNTcsIDI2LCA0LCAxLCAyMjUsIDEzMywgMjYsIDQsIDEsIDI1MCwgMTEwLCAyNiwgNCwgMSwgMjI0LCAxNjEsIDI2LCA0LCAKKyAgICAxLCAyMjYsIDIwMSwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyNDcsIDI1MSwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDcsIAorICAgIDI1MSwgMjYsIDQsIDEsIDIyNiwgMjAwLCAyLCAyMTYsIDE4LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIxNiwgMTgsIDI2LCAKKyAgICA0LCAxLCAyMjYsIDIwMiwgMiwgMjE2LCAxOCwgMjYsIDYsIDIzNCwgMjQ3LCA4NywgMjYsIDI1MiwgMjcsIDg3LCAyNiwgCisgICAgMjE2LCAxODAsIDg3LCAyNiwgMjE0LCAxNTgsIDIsIDI0MSwgNTIsIDg3LCAyNiwgMjE0LCAxNTgsIDIsIDI1NSwgMywgMjIsIAorICAgIDI0MSwgNTIsIDg3LCAyNiwgMjE0LCAxNTgsIDIsIDI0OCwgMiwgMjIsIDI0MSwgNTIsIDg3LCAyNiwgMjI1LCAxMzQsIDg3LCAKKyAgICAyNiwgMjI1LCAxMDksIDg3LCAyNiwgMjM0LCAyNDcsIDg3LCAyNiwgMSwgMjU0LCAyMywgMjM0LCA2LCAyNiwgNCwgMSwgCisgICAgMjU0LCAyMywgMjM0LCA2LCAyNiwgMSwgMjE4LCAxMzcsIDI2LCA0LCAxLCAyMTgsIDEzNywgMjYsIDEsIDI0NywgMjI3LCAKKyAgICAyNiwgNCwgMSwgMjQ3LCAyMjcsIDI2LCAxLCAyMzQsIDYsIDI2LCA0LCAxLCAyMzQsIDYsIDI2LCAxLCAyMjEsIDI0NiwgMjYsIAorICAgIDQsIDEsIDIyMSwgMjQ2LCA4MSwgNiwgMSwgMjIwLCA1NSwgODEsIDQsIDEsIDIyMCwgNTUsIDgxLCA2LCAxLCAyNDQsIDE0MCwgCisgICAgODEsIDQsIDEsIDI0NCwgMTQwLCA4MSwgNiwgMSwgMjM0LCAxMTcsIDgxLCA0LCAxLCAyMzQsIDExNywgODEsIDYsIDEsIAorICAgIDI0MSwgNDUsIDgxLCA0LCAxLCAyNDEsIDQ1LCA4MSwgNiwgMSwgMjQzLCAxMDIsIDgxLCA0LCAxLCAyNDMsIDEwMiwgODEsIAorICAgIDYsIDEsIDIyMCwgMjIsIDgxLCA0LCAxLCAyMjAsIDIyLCA4MSwgNiwgMSwgMjQ4LCA2OSwgODEsIDQsIDEsIDI0OCwgNjksIAorICAgIDI2LCAyMzQsIDIyMywgODcsIDI2LCAyMjMsIDM4LCA4NywgMjYsIDIzMiwgODMsIDIxOSwgMTc4LCA4NywgMjYsIDEsIDIxMCwgCisgICAgMjI0LCAyNiwgNiwgMjE2LCAxODAsIDg3LCAyNiwgMjMyLCA4MywgMjQ1LCAxMDEsIDg3LCAyNiwgMjIzLCA0OSwgMjMyLCAKKyAgICA4MywgMjQ1LCAxMDEsIDg3LCAyNiwgNiwgMSwgMjIwLCA3LCAyNiwgNCwgMSwgMjIwLCA3LCAyNiwgNiwgMjMyLCA4MywgCisgICAgMjE5LCAxNzgsIDg3LCAyNiwgNiwgMSwgMjIxLCAyNDMsIDI2LCA0LCAxLCAyMjEsIDI0MywgMjYsIDIyMywgMzgsIDIsIAorICAgIDIxOCwgMTAzLCA4NywgMjYsIDYsIDIyMywgNDksIDIzMiwgODMsIDIxOSwgMTc4LCA4NywgMjYsIDYsIDI0NiwgMTE4LCAKKyAgICAyMzIsIDgzLCAyMTksIDE3OCwgODcsIDI2LCA2LCAyMjMsIDQ5LCAyNDYsIDExOCwgMjMyLCA4MywgMjE5LCAxNzgsIDg3LCAKKyAgICAzMywgNiwgMSwgMjM2LCA2MSwgMiwgMjQyLCAxMzYsIDMzLCA2LCAxLCAyMzUsIDE4OSwgMzMsIDYsIDEsIDI0NywgMTYyLCAKKyAgICAzMywgNiwgMSwgMjQyLCAxODcsIDMzLCA2LCAxLCAyMTQsIDIwMiwgMjM2LCA2MCwgMzMsIDYsIDEsIDI0NiwgMzYsIDMzLCAKKyAgICA2LCAxLCAyNTEsIDc2LCA3MywgMzMsIDYsIDEsIDIxMSwgOCwgMzMsIDYsIDEsIDIzNSwgMTI2LCAzMywgNiwgMSwgMjMyLCAKKyAgICAxODcsIDMzLCA2LCAxLCAyMjgsIDE3OCwgMzMsIDYsIDEsIDIxNSwgMTc0LCAzMywgNiwgMSwgMjM0LCA0OCwgMzMsIDYsIDEsIAorICAgIDI0MCwgMTU0LCAyLCAyNDIsIDEzNiwgMzMsIDYsIDEsIDIxOSwgMjUxLCA3MCwgMzMsIDYsIDEsIDI0NiwgMzIsIDMzLCA2LCAKKyAgICAxLCA2MSwgMzMsIDYsIDEsIDI1MiwgNzUsIDMzLCA2LCAxLCAyMTMsIDI1NSwgMzMsIDYsIDEsIDI0MiwgMjM2LCAzMywgNiwgCisgICAgMSwgMjQ4LCA5MCwgMzMsIDYsIDEsIDIzNiwgNjAsIDMzLCA2LCAxLCAyMTAsIDc0LCAzMywgNiwgMSwgMjEwLCA5NCwgMzMsIAorICAgIDYsIDEsIDczLCAzMywgNiwgMSwgMjE5LCAyNTEsIDczLCAzMywgNiwgMSwgMTc2LCAzMywgNiwgMSwgMjQ1LCAxNzQsIDMzLCAKKyAgICA2LCAxLCAyNDUsIDE1OSwgMzMsIDYsIDEsIDI0NSwgMTUwLCAzMywgNiwgMSwgNzYsIDMzLCA2LCAxLCAyMjUsIDIyMSwgMzMsIAorICAgIDYsIDEsIDI0NSwgOTIsIDMzLCA2LCAxLCAyNDUsIDgyLCAzMywgNiwgMSwgMjE3LCAyMiwgMzMsIDYsIDEsIDcwLCAzMywgNiwgCisgICAgMSwgMjQ1LCAyMDIsIDMzLCA2LCAxLCAxNjIsIDMzLCA2LCAxLCAyMTUsIDE3OCwgMzMsIDYsIDEsIDI1MCwgMTMxLCAzMywgCisgICAgNiwgMSwgMjIwLCAxMDIsIDMzLCA2LCAxLCAyMjAsIDY1LCAzMywgNiwgMSwgMjQyLCAzLCA1MCwgMzMsIDYsIDEsIDIxMSwgCisgICAgMjcsIDMzLCA2LCAxLCAyMTksIDUyLCA1MCwgMzMsIDYsIDEsIDc1LCAzMywgNiwgMSwgMjEwLCAyMTIsIDMzLCA2LCAxLCAKKyAgICAxOTEsIDMzLCA0LCAxLCA2MSwgMzMsIDQsIDEsIDI1MiwgNzUsIDMzLCA0LCAxLCAyMTMsIDI1NSwgMzMsIDQsIDEsIDI0MiwgCisgICAgMjM2LCAzMywgNCwgMSwgMjQ4LCA5MCwgMzMsIDQsIDEsIDIzNiwgNjAsIDMzLCA0LCAxLCAyMTAsIDc0LCAzMywgNCwgMSwgCisgICAgMjEwLCA5NCwgMzMsIDQsIDEsIDczLCAzMywgNCwgMSwgMjE5LCAyNTEsIDczLCAzMywgNCwgMSwgMTc2LCAzMywgNCwgMSwgCisgICAgMjQ1LCAxNzQsIDMzLCA0LCAxLCAyNDUsIDE1OSwgMzMsIDQsIDEsIDI0NSwgMTUwLCAzMywgNCwgMSwgNzYsIDMzLCA0LCAxLCAKKyAgICAyMjUsIDIyMSwgMzMsIDQsIDEsIDI0NSwgOTIsIDMzLCA0LCAxLCAyNDUsIDgyLCAzMywgNCwgMSwgMjE3LCAyMiwgMzMsIDQsIAorICAgIDEsIDcwLCAzMywgNCwgMSwgMjQ1LCAyMDIsIDMzLCA0LCAxLCAxNjIsIDMzLCA0LCAxLCAyMTUsIDE3OCwgMzMsIDQsIDEsIAorICAgIDI1MCwgMTMxLCAzMywgNCwgMSwgMjIwLCAxMDIsIDMzLCA0LCAxLCAyMjAsIDY1LCAzMywgNCwgMSwgMjQyLCAzLCA1MCwgCisgICAgMzMsIDQsIDEsIDIxMSwgMjcsIDMzLCA0LCAxLCAyMTksIDUyLCA1MCwgMzMsIDQsIDEsIDc1LCAzMywgNCwgMSwgMjEwLCAKKyAgICAyMTIsIDMzLCA0LCAxLCAxOTEsIDMzLCA0LCAxLCAyMzYsIDYxLCAyLCAyNDIsIDEzNiwgMzMsIDQsIDEsIDIzNSwgMTg5LCAKKyAgICAzMywgNCwgMSwgMjQ3LCAxNjIsIDMzLCA0LCAxLCAyNDIsIDE4NywgMzMsIDQsIDEsIDIxNCwgMjAyLCAyMzYsIDYwLCAzMywgCisgICAgNCwgMSwgMjQ2LCAzNiwgMzMsIDQsIDEsIDI1MSwgNzYsIDczLCAzMywgNCwgMSwgMjExLCA4LCAzMywgNCwgMSwgMjM1LCAKKyAgICAxMjYsIDMzLCA0LCAxLCAyMzIsIDE4NywgMzMsIDQsIDEsIDIyOCwgMTc4LCAzMywgNCwgMSwgMjE1LCAxNzQsIDMzLCA0LCAKKyAgICAxLCAyMzQsIDQ4LCAzMywgNCwgMSwgMjQwLCAxNTQsIDIsIDI0MiwgMTM2LCAzMywgNCwgMSwgMjE5LCAyNTEsIDcwLCAzMywgCisgICAgNCwgMSwgMjQ2LCAzMiwgMzMsIDYsIDEsIDIyNiwgMjAxLCAzMywgNCwgMSwgMjI2LCAyMDEsIDMzLCA2LCAxLCAyMTEsIDU5LCAKKyAgICAzMywgNCwgMSwgMjExLCA1OSwgMzMsIDYsIDEsIDIzNSwgMTgzLCA3NSwgMzMsIDQsIDEsIDIzNSwgMTgzLCA3NSwgMzMsIDYsIAorICAgIDEsIDIzMiwgMTkyLCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzMiwgMTkyLCAyMTAsIDE4MywgMzMsIDYsIDEsIDIzNSwgMTgzLCAKKyAgICAyMzIsIDE5MiwgMjEwLCAxODMsIDMzLCA0LCAxLCAyMzUsIDE4MywgMjMyLCAxOTIsIDIxMCwgMTgzLCAzMywgNiwgMSwgCisgICAgMjUxLCAyNDksIDIxMCwgMTgzLCAzMywgNCwgMSwgMjUxLCAyNDksIDIxMCwgMTgzLCAzMywgNiwgMSwgMjM1LCAxODMsIAorICAgIDI1MSwgMjQ5LCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzNSwgMTgzLCAyNTEsIDI0OSwgMjEwLCAxODMsIDMzLCA2LCAxLCAKKyAgICAyMzMsIDIzMywgMzMsIDQsIDEsIDIzMywgMjMzLCAzMywgNiwgMSwgMjI0LCAxNjEsIDMzLCA0LCAxLCAyMjQsIDE2MSwgMzMsIAorICAgIDYsIDEsIDI0NCwgODIsIDMzLCA0LCAxLCAyNDQsIDgyLCAzMywgNiwgMSwgMjM1LCAxNDYsIDMzLCA0LCAxLCAyMzUsIDE0NiwgCisgICAgMzMsIDYsIDEsIDIzNSwgMTQ3LCAyLCA1MiwgMjQyLCAxMzcsIDI1NSwgMTQsIDMzLCA0LCAxLCAyMzUsIDE0NywgMiwgNTIsIAorICAgIDI0MiwgMTM3LCAyNTUsIDE0LCAzMywgNiwgMSwgMjE0LCAyMDUsIDMzLCA0LCAxLCAyMTQsIDIwNSwgMzMsIDYsIDEsIDIyMiwgCisgICAgMTg1LCAyMjYsIDIwMSwgMzMsIDQsIDEsIDIyMiwgMTg1LCAyMjYsIDIwMSwgMzMsIDYsIDEsIDIyNiwgMjAyLCAyLCAyMTYsIAorICAgIDY1LCAzMywgNCwgMSwgMjI2LCAyMDIsIDIsIDIxNiwgNjUsIDMzLCA2LCAxLCAyMjYsIDE0MCwgMzMsIDQsIDEsIDIyNiwgCisgICAgMTQwLCAzMywgNiwgMSwgMjM0LCA2LCAzMywgNCwgMSwgMjM0LCA2LCAzMywgMjE2LCAxNDYsIDUwLCAzOCwgMzMsIDIxNiwgCisgICAgNjUsIDM4LCAzMywgMjI2LCA2NSwgMzgsIDMzLCAyNDgsIDE1NCwgMjI1LCAxOCwgMzgsIDMzLCAyMjQsIDE1NSwgMjI1LCAKKyAgICAxOCwgMzgsIDMzLCAyMjUsIDMsIDM4LCAzMywgMjQwLCAyMTEsIDIxNiwgMTQ2LCA1MCwgMzgsIDMzLCAyMzAsIDE5MSwgNTAsIAorICAgIDMzLCA2LCAxLCAyMTksIDI1MSwgMjQwLCAxNTQsIDIsIDIxNywgNzcsIDMzLCA0LCAxLCAyMTksIDI1MSwgMjQwLCAxNTQsIAorICAgIDIsIDIxNywgNzcsIDMzLCA2LCAxLCAyMjAsIDE0NiwgNTAsIDMzLCA0LCAxLCAyMjAsIDE0NiwgNTAsIDMzLCA2LCAxLCAKKyAgICAyNDUsIDkzLCAyLCAyMTYsIDExNCwgMzMsIDQsIDEsIDI0NSwgOTMsIDIsIDIxNiwgMTE0LCAzMywgNiwgMSwgMjQyLCAyMzcsIAorICAgIDIsIDIxNCwgMTU2LCAzMywgNCwgMSwgMjQyLCAyMzcsIDIsIDIxNCwgMTU2LCAzMywgNiwgMSwgMjQyLCAyMzcsIDIsIDkxLCAKKyAgICAzMywgNCwgMSwgMjQyLCAyMzcsIDIsIDkxLCAzMywgNiwgMSwgMjQyLCAyMzcsIDIsIDIzMCwgMjI0LCAxMDMsIDMzLCA0LCAKKyAgICAxLCAyNDIsIDIzNywgMiwgMjMwLCAyMjQsIDEwMywgMzMsIDYsIDEsIDIxMCwgNzUsIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAKKyAgICAyMTAsIDc1LCAyLCAyNDgsIDM5LCAzMywgNiwgMSwgMjEwLCA5NSwgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIDIxMCwgOTUsIDIsIAorICAgIDI0OCwgMzksIDMzLCA2LCAxLCAyMzUsIDEzLCAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjM1LCAxMywgMiwgMjQ4LCAzOSwgCisgICAgMzMsIDYsIDEsIDIzNSwgMTMsIDIsIDY3LCA5MSwgMzMsIDQsIDEsIDIzNSwgMTMsIDIsIDY3LCA5MSwgMzMsIDYsIDEsIAorICAgIDIzNSwgMTMsIDIsIDkxLCAzMywgNCwgMSwgMjM1LCAxMywgMiwgOTEsIDMzLCA2LCAxLCAyNTIsIDEyNCwgMTc2LCAzMywgNCwgCisgICAgMSwgMjUyLCAxMjQsIDE3NiwgMzMsIDYsIDEsIDI0NSwgMTUxLCAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjQ1LCAxNTEsIDIsIAorICAgIDI0OCwgMzksIDMzLCA2LCAyNywgMjQ1LCAxNTEsIDI0MiwgMjM2LCAzMywgNCwgMjcsIDI0NSwgMTUxLCAyNDIsIDIzNiwgCisgICAgMzMsIDYsIDEsIDIyNSwgMjIyLCAyLCAyMzAsIDIyNCwgMTAzLCAzMywgNCwgMSwgMjI1LCAyMjIsIDIsIDIzMCwgMjI0LCAKKyAgICAxMDMsIDMzLCA2LCAxLCAyNTUsIDIwLCAxNjIsIDMzLCA0LCAxLCAyNTUsIDIwLCAxNjIsIDMzLCA2LCAxLCAyNDUsIDgzLCAKKyAgICAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjQ1LCA4MywgMiwgMjQ4LCAzOSwgMzMsIDYsIDEsIDIxNywgMjMsIDIsIDI0OCwgMzksIAorICAgIDMzLCA0LCAxLCAyMTcsIDIzLCAyLCAyNDgsIDM5LCAzMywgNiwgMSwgMjE4LCAxMjEsIDcwLCAzMywgNCwgMSwgMjE4LCAKKyAgICAxMjEsIDcwLCAzMywgNiwgMSwgMjE4LCAxMjEsIDEwNCwgMiwgOTEsIDMzLCA0LCAxLCAyMTgsIDEyMSwgMTA0LCAyLCA5MSwgCisgICAgMzMsIDYsIDEsIDI0MiwgNDksIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyNDIsIDQ5LCAyLCAyNDgsIDM5LCAzMywgNiwgMjcsIAorICAgIDIxNywgMjMsIDIxNSwgMTc4LCAzMywgNCwgMjcsIDIxNywgMjMsIDIxNSwgMTc4LCAzMywgNiwgMSwgMjUwLCAxMzIsIDIsIAorICAgIDI0OCwgMzksIDMzLCA0LCAxLCAyNTAsIDEzMiwgMiwgMjQ4LCAzOSwgMzMsIDYsIDEsIDI1MCwgMTMyLCAyLCA2NywgOTEsIAorICAgIDMzLCA0LCAxLCAyNTAsIDEzMiwgMiwgNjcsIDkxLCAzMywgNiwgMSwgMjIwLCAzMywgMzMsIDQsIDEsIDIyMCwgMzMsIDMzLCAKKyAgICA2LCAxLCAyNTUsIDIwLCAyNTAsIDEzMSwgMzMsIDQsIDEsIDI1NSwgMjAsIDI1MCwgMTMxLCAzMywgNiwgMSwgMjU1LCAyMCwgCisgICAgMjUwLCAxMzIsIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyNTUsIDIwLCAyNTAsIDEzMiwgMiwgMjQ4LCAzOSwgMzMsIDEsIAorICAgIDIyNiwgNTgsIDMzLCA2LCAxLCAyMTAsIDc1LCAyLCAyNTEsIDE0NiwgMzMsIDQsIDEsIDIxMCwgNzUsIDIsIDI1MSwgMTQ2LCAKKyAgICAzMywgNiwgMSwgMjM1LCAxMywgMiwgMTAzLCAzMywgNCwgMSwgMjM1LCAxMywgMiwgMTAzLCAzMywgNiwgMSwgMjQ1LCAxNzUsIAorICAgIDIsIDIxNywgNzcsIDMzLCA0LCAxLCAyNDUsIDE3NSwgMiwgMjE3LCA3NywgMzMsIDYsIDEsIDI0NSwgMTUxLCAyLCAxMDMsIAorICAgIDMzLCA0LCAxLCAyNDUsIDE1MSwgMiwgMTAzLCAzMywgNiwgMSwgMjQ1LCAxNTEsIDIsIDIxNywgNzcsIDMzLCA0LCAxLCAKKyAgICAyNDUsIDE1MSwgMiwgMjE3LCA3NywgMzMsIDYsIDEsIDIzNCwgMTI3LCAyNTAsIDEzMSwgMzMsIDQsIDEsIDIzNCwgMTI3LCAKKyAgICAyNTAsIDEzMSwgMzMsIDYsIDEsIDI0NSwgMTYwLCAyLCAyMTcsIDc3LCAzMywgNCwgMSwgMjQ1LCAxNjAsIDIsIDIxNywgNzcsIAorICAgIDMzLCA0LCAxLCAyMjYsIDU4LCAzMywgNiwgMSwgMTE1LCAyLCAyNTEsIDE0NiwgMzMsIDQsIDEsIDExNSwgMiwgMjUxLCAKKyAgICAxNDYsIDMzLCA2LCAxLCAxMTUsIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDExNSwgMiwgMjQ4LCAxLCAzMywgNiwgMjcsIDExNSwgCisgICAgMjM2LCA2MCwgMzMsIDQsIDI3LCAxMTUsIDIzNiwgNjAsIDMzLCA2LCAxLCAyMzYsIDYxLCAyLCAyNTEsIDE0NiwgMzMsIDQsIAorICAgIDEsIDIzNiwgNjEsIDIsIDI1MSwgMTQ2LCAzMywgNiwgMSwgMjIxLCAxOTUsIDMzLCA0LCAxLCAyMjEsIDE5NSwgMzMsIDYsIAorICAgIDEsIDIyMSwgMTk2LCAyLCAyNDgsIDEsIDMzLCA0LCAxLCAyMjEsIDE5NiwgMiwgMjQ4LCAxLCAzMywgNiwgMSwgMjEwLCA3NSwgCisgICAgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMjEwLCA3NSwgMiwgMjQ4LCAxLCAzMywgNiwgMSwgMjEwLCA5NSwgMiwgMjQ4LCAxLCAKKyAgICAzMywgNCwgMSwgMjEwLCA5NSwgMiwgMjQ4LCAxLCAzMywgNiwgMSwgMjU1LCAyMCwgMjQ2LCAzNiwgMzMsIDQsIDEsIDI1NSwgCisgICAgMjAsIDI0NiwgMzYsIDMzLCA2LCAxLCAyNDAsIDE1NCwgMiwgMjMxLCAyMzIsIDMzLCA0LCAxLCAyNDAsIDE1NCwgMiwgMjMxLCAKKyAgICAyMzIsIDMzLCA2LCAxLCAyNDAsIDE1NCwgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMjQwLCAxNTQsIDIsIDI0OCwgMSwgMzMsIDYsIAorICAgIDEsIDE0NCwgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMTQ0LCAyLCAyNDgsIDEsIDMzLCA2LCAxLCAyNTIsIDEzNCwgNzYsIDMzLCAKKyAgICA0LCAxLCAyNTIsIDEzNCwgNzYsIDMzLCA2LCAxLCAyNTIsIDEzNCwgMTQ0LCAyLCAyNDgsIDEsIDMzLCA0LCAxLCAyNTIsIAorICAgIDEzNCwgMTQ0LCAyLCAyNDgsIDEsIDMzLCA2LCAxLCAxNjAsIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDE2MCwgMiwgMjQ4LCAxLCAKKyAgICAzMywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzMiwgMzMsIDQsIDEsIDEwNCwgMiwgMjMxLCAyMzIsIDMzLCA2LCAxLCAxMDQsIDIsIAorICAgIDI0OCwgMSwgMzMsIDQsIDEsIDEwNCwgMiwgMjQ4LCAxLCAzMywgNiwgMSwgMTA0LCAyLCA1MiwgMTQyLCAzMywgNCwgMSwgCisgICAgMTA0LCAyLCA1MiwgMTQyLCAzMywgNiwgMSwgMjUwLCAxMzIsIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDI1MCwgMTMyLCAyLCAKKyAgICAyNDgsIDEsIDMzLCA2LCAxLCAyNDIsIDIzNywgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIDI0MiwgMjM3LCAyLCAyNDgsIDM5LCAKKyAgICAzMywgNiwgMSwgMjExLCAyOCwgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMjExLCAyOCwgMiwgMjQ4LCAxLCAzMywgNiwgMSwgCisgICAgMjQyLCAyMzcsIDIsIDIxOCwgMTAzLCAyMiwgMTAzLCAzMywgNCwgMSwgMjQyLCAyMzcsIDIsIDIxOCwgMTAzLCAyMiwgMTAzLCAKKyAgICAzMywgNiwgMSwgMjQyLCA0OSwgMiwgMTAzLCAzMywgNCwgMSwgMjQyLCA0OSwgMiwgMTAzLCAzMywgNiwgMSwgMjQyLCA0OSwgCisgICAgMiwgOTEsIDMzLCA0LCAxLCAyNDIsIDQ5LCAyLCA5MSwgMzMsIDYsIDEsIDIzNCwgMTQsIDI0OCwgOTAsIDMzLCA0LCAxLCAKKyAgICAyMzQsIDE0LCAyNDgsIDkwLCAzMywgNiwgMSwgMjM0LCAxNCwgMjQ3LCAxNjIsIDMzLCA0LCAxLCAyMzQsIDE0LCAyNDcsIAorICAgIDE2MiwgMzMsIDYsIDEsIDIzNCwgMTQsIDIxMCwgMjcsIDMzLCA0LCAxLCAyMzQsIDE0LCAyMTAsIDI3LCAzMywgNiwgMSwgCisgICAgMjM0LCAxNCwgMjQ2LCAzMCwgMzMsIDQsIDEsIDIzNCwgMTQsIDI0NiwgMzAsIDMzLCA2LCAxLCAyMzQsIDE0LCAyMzIsIAorICAgIDE4NywgMzMsIDQsIDEsIDIzNCwgMTQsIDIzMiwgMTg3LCAzMywgNiwgMSwgMjM0LCAxNCwgMjI4LCAxNzgsIDMzLCA0LCAxLCAKKyAgICAyMzQsIDE0LCAyMjgsIDE3OCwgMzMsIDYsIDEsIDIzNCwgMTQsIDIxOSwgMTA5LCAzMywgNCwgMSwgMjM0LCAxNCwgMjE5LCAKKyAgICAxMDksIDMzLCA2LCAxLCAyMzQsIDE0LCAyMTYsIDYwLCAzMywgNCwgMSwgMjM0LCAxNCwgMjE2LCA2MCwgMzMsIDYsIDEsIAorICAgIDIyMywgNDksIDIxMCwgOTQsIDMzLCA0LCAxLCAyMjMsIDQ5LCAyMTAsIDk0LCAzMywgNiwgMSwgMjQ1LCAxNzUsIDIsIDEwMywgCisgICAgMzMsIDQsIDEsIDI0NSwgMTc1LCAyLCAxMDMsIDMzLCA2LCAxLCAyMzIsIDI1NCwgMzMsIDQsIDEsIDIzMiwgMjU0LCAzMywgCisgICAgNiwgMSwgMjIzLCAzOSwgMzMsIDQsIDEsIDIyMywgMzksIDMzLCA2LCAxLCAyMTEsIDkyLCAzMywgNCwgMSwgMjExLCA5MiwgCisgICAgMzMsIDYsIDEsIDIyNCwgODgsIDMzLCA0LCAxLCAyMjQsIDg4LCAzMywgNiwgMSwgMjEyLCAyMiwgMzMsIDQsIDEsIDIxMiwgCisgICAgMjIsIDMzLCA2LCAxLCAyNTQsIDE2NiwgMTc2LCAzMywgNCwgMSwgMjU0LCAxNjYsIDE3NiwgMzMsIDYsIDEsIDI0NSwgMTc1LCAKKyAgICAyLCAyMzAsIDIyNCwgMTAzLCAzMywgNCwgMSwgMjQ1LCAxNzUsIDIsIDIzMCwgMjI0LCAxMDMsIDMzLCA2LCAxLCAyNDUsIAorICAgIDE1MSwgMiwgMjMwLCAyMjQsIDEwMywgMzMsIDQsIDEsIDI0NSwgMTUxLCAyLCAyMzAsIDIyNCwgMTAzLCAzMywgNiwgMSwgCisgICAgMjI1LCAyMjIsIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyMjUsIDIyMiwgMiwgMjQ4LCAzOSwgMzMsIDYsIDEsIDIyMCwgMzQsIAorICAgIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyMjAsIDM0LCAyLCAyNDgsIDM5LCAxNTAsIDYsIDEsIDI1MywgMTY0LCAxNTAsIDYsIAorICAgIDEsIDI1MiwgMzksIDE1MCwgNiwgMSwgMjQyLCAyMDMsIDE1MCwgNiwgMSwgMjQ4LCAyMjEsIDE1MCwgNiwgMSwgMjQ1LCAKKyAgICAyMTMsIDE1MCwgNiwgMSwgMjEwLCAxMTYsIDE1MCwgNiwgMSwgMjQ1LCAxOTcsIDE1MCwgNiwgMSwgMjQ1LCA2NSwgMTUwLCAKKyAgICA2LCAxLCAxMTEsIDE1MCwgNiwgMSwgMjEwLCA3NCwgMTUwLCA2LCAxLCAyMzUsIDIyNywgMTUwLCA2LCAxLCAyMzIsIDE5MCwgCisgICAgMTUwLCA2LCAxLCAyMTEsIDE2MCwgMTUwLCA2LCAxLCAyNTEsIDMzLCAxNTAsIDYsIDEsIDIzNCwgMTY1LCAxNTAsIDYsIDEsIAorICAgIDI0MSwgNjgsIDE1MCwgNiwgMSwgMjM1LCAxNDEsIDE1MCwgNiwgMSwgMjQyLCAyNDYsIDE1MCwgNiwgMSwgMjUwLCAxMjYsIAorICAgIDE1MCwgNiwgMSwgMjMxLCA1OCwgMTUwLCA2LCAxLCAyMTEsIDgsIDE1MCwgNiwgMSwgMjI4LCAzOSwgMTUwLCA2LCAxLCAKKyAgICAyMjAsIDEwMiwgMTUwLCA2LCAxLCAyMTMsIDEzOCwgMTUwLCA2LCAxLCAyNTAsIDE1NywgMTUwLCA2LCAxLCAyMjUsIDIwNSwgCisgICAgMTUwLCA2LCAxLCAyMzUsIDExMCwgMTUwLCA2LCAxLCAyMDUsIDE1MCwgNiwgMSwgMjIxLCAxNjEsIDE1MCwgNiwgMSwgMjEzLCAKKyAgICAxNzksIDE1MCwgNiwgMSwgMjE2LCA2MiwgMTUwLCA2LCAxLCAyMjMsIDk1LCAxNTAsIDYsIDEsIDI0OSwgMjM4LCAxNTAsIDYsIAorICAgIDEsIDIxMCwgMjQ5LCAxNTAsIDYsIDEsIDIyNSwgNDYsIDE1MCwgNiwgMSwgMjM0LCAxNzYsIDE1MCwgNiwgMSwgMjI2LCAKKyAgICAyMjIsIDE1MCwgNiwgMSwgMjQ0LCAxNDIsIDE1MCwgNTgsIDEsIDQzLCAxNjMsIDIyMiwgMjMzLCAxNTAsIDI1NCwgNTcsIAorICAgIDE1MCwgMjQ1LCAxNTQsIDc4LCAxNTAsIDI0NSwgMzEsIDc4LCAxNTAsIDI0OSwgMjE5LCAxNTAsIDIyNCwgMTMsIDc4LCAKKyAgICAxNTAsIDI1NSwgMjEsIDc4LCAxNTAsIDQsIDEsIDI1MywgMTY0LCAxNTAsIDQsIDEsIDI1MiwgMzksIDE1MCwgNCwgMSwgCisgICAgMjQyLCAyMDMsIDE1MCwgNCwgMSwgMjQ4LCAyMjEsIDE1MCwgNCwgMSwgMjQ1LCAyMTMsIDE1MCwgNCwgMSwgMjEwLCAxMTYsIAorICAgIDE1MCwgNCwgMSwgMjQ1LCAxOTcsIDE1MCwgNCwgMSwgMjQ1LCA2NSwgMTUwLCA0LCAxLCAxMTEsIDE1MCwgNCwgMSwgMjEwLCAKKyAgICA3NCwgMTUwLCA0LCAxLCAyMzUsIDIyNywgMTUwLCA0LCAxLCAyMzIsIDE5MCwgMTUwLCA0LCAxLCAyMTEsIDE2MCwgMTUwLCAKKyAgICA0LCAxLCAyNTEsIDMzLCAxNTAsIDQsIDEsIDIzNCwgMTY1LCAxNTAsIDQsIDEsIDI0MSwgNjgsIDE1MCwgNCwgMSwgMjM1LCAKKyAgICAxNDEsIDE1MCwgNCwgMSwgMjQyLCAyNDYsIDE1MCwgNCwgMSwgMjUwLCAxMjYsIDE1MCwgNCwgMSwgMjMxLCA1OCwgMTUwLCAKKyAgICA0LCAxLCAyMTEsIDgsIDE1MCwgNCwgMSwgMjI4LCAzOSwgMTUwLCA0LCAxLCAyMjAsIDEwMiwgMTUwLCA0LCAxLCAyMTMsIAorICAgIDEzOCwgMTUwLCA0LCAxLCAyNTAsIDE1NywgMTUwLCA0LCAxLCAyMjUsIDIwNSwgMTUwLCA0LCAxLCAyMzUsIDExMCwgMTUwLCAKKyAgICA0LCAxLCAyMDUsIDE1MCwgNCwgMSwgMjIxLCAxNjEsIDE1MCwgNCwgMSwgMjEzLCAxNzksIDE1MCwgNCwgMSwgMjE2LCA2MiwgCisgICAgMTUwLCA0LCAxLCAyMjMsIDk1LCAxNTAsIDQsIDEsIDI0OSwgMjM4LCAxNTAsIDQsIDEsIDIxMCwgMjQ5LCAxNTAsIDQsIDEsIAorICAgIDIyNSwgNDYsIDE1MCwgNCwgMSwgMjM0LCAxNzYsIDE1MCwgNCwgMSwgMjI2LCAyMjIsIDE1MCwgNCwgMSwgMjQ0LCAxNDIsIAorICAgIDE1MCwgNCwgMjcsIDI0NSwgMjE0LCAyMTAsIDI0OSwgMTUwLCAyNDMsIDIyOSwgMjE4LCAxMjksIDE1MCwgMjQwLCAxNjgsIAorICAgIDE1MCwgMjQ2LCA5NSwgNTAsIDk0LCAyNTUsIDE1LCAyNDUsIDU3LCA5NCwgMjU1LCAxNSwgMjIxLCAxNjIsIDk0LCAyNTUsIAorICAgIDE1LCAyMjAsIDg4LCA5NCwgMjU1LCAxNSwgMjEwLCAxMDQsIDIyNCwgNzEsIDk0LCAyNTUsIDE1LCAyMTAsIDEwNCwgMjQzLCAKKyAgICAxMjUsIDk0LCAyNTUsIDE1LCAyMTYsIDc1LCA5NCwgMjU1LCAxNSwgMjIzLCA0NywgOTQsIDI1NSwgMTUsIDIxMCwgMTAzLCAKKyAgICA5NCwgMjU1LCAxNSwgMjI1LCAyNDUsIDk0LCAyNTUsIDE1LCAyMTEsIDIwLCA5NCwgMjU1LCAxNSwgMjE2LCAyMTQsIDk0LCAKKyAgICAyNTUsIDE1LCAyNDMsIDQxLCA5NCwgMjU1LCAxNSwgMjQzLCA0MiwgMjMwLCA2OSwgOTQsIDI1NSwgMTUsIDI0MywgMzksIAorICAgIDk0LCAyNTUsIDE1LCAyMjQsIDcyLCAyMjYsIDE2LCA5NCwgMjU1LCAxNSwgMjE2LCAyNTMsIDI0MywgNTYsIDk0LCAyNTUsIAorICAgIDE1LCAyMjUsIDIyNiwgOTQsIDI1NSwgMTUsIDI1MywgMjAwLCAyNDIsIDQxLCA5NCwgMjU1LCAxNSwgMjMwLCA3OSwgOTQsIAorICAgIDI1NSwgMTUsIDIzMSwgMjA4LCA5NCwgMjU1LCAxNSwgMjMxLCA0OSwgOTQsIDI1NSwgMTUsIDIzMSwgNTAsIDIzNCwgMTc3LCAKKyAgICA5NCwgMjU1LCAxNSwgMjQ4LCAxNjMsIDk0LCAyNTUsIDE1LCAyMjQsIDgzLCA5NCwgMjU1LCAxNSwgMjE2LCAyNTMsIDIyNCwgCisgICAgNjcsIDk0LCAyNTUsIDE1LCAyMTEsIDMwLCAyNTIsIDQwLCAyMTAsIDIzMCwgOTQsIDI1NSwgMTUsIDIyNiwgMjA3LCA5NCwgCisgICAgMjU1LCAxNSwgMjM2LCAxOSwgOTQsIDI1NSwgMTUsIDI0OCwgNzAsIDk0LCAyNTUsIDE1LCAyMTAsIDMzLCA5NCwgMTY0LCAKKyAgICAyMzEsIDE0MywgMjUwLCAzNSwgOTQsIDIyNSwgMTEsIDIyMCwgMzYsIDk0LCAyMjUsIDExLCAyNDEsIDI1MCwgMjIxLCAxNjIsIAorICAgIDk0LCAyMjUsIDExLCAyNDEsIDI1MCwgMjI1LCAyMzksIDk0LCAyMjUsIDExLCAyNDEsIDI1MCwgMjI0LCA3NiwgOTQsIDIyNSwgCisgICAgMTEsIDI0MSwgMTU4LCA5NCwgMjI1LCAxMSwgMjE1LCAxNzYsIDk0LCAyMjUsIDExLCAyMjEsIDE2MiwgOTQsIDIyNSwgMTEsIAorICAgIDIyNSwgMjM5LCA5NCwgMjI1LCAxMSwgMjI0LCA3NiwgOTQsIDIyNSwgMTEsIDI0MSwgNjEsIDk0LCAyMjUsIDExLCAyNDEsIAorICAgIDYyLCAyNDEsIDI1MiwgMzEsIDIxNCwgMywgOTQsIDIyNSwgMTEsIDIyNCwgMTcsIDk0LCAyMjUsIDExLCAyNDgsIDIwOCwgCisgICAgMTc3LCAyMzEsIDE3MSwgOTQsIDIyNSwgMTEsIDIzMSwgMzgsIDk0LCAyMjQsIDE0MSwgMjMxLCAxNjgsIDk0LCAyMjUsIDExLCAKKyAgICAyMjMsIDE2OSwgOTQsIDIyNCwgMTQxLCAyMjUsIDI0NywgOTQsIDIyNSwgMTEsIDIyMCwgMjEsIDI0NywgMTIwLCA5NCwgCisgICAgMjI1LCAxMSwgMjE5LCAxNTksIDI0NywgMTIwLCA5NCwgMjI0LCAxNDEsIDIxOSwgNTMsIDIyNSwgMjQxLCA5NCwgMTY0LCAKKyAgICAyMTQsIDE2MCwgMjQ3LCAxMjAsIDk0LCAxNjQsIDIzMiwgMTA4LCAyNDcsIDEyMCwgOTQsIDIyNCwgMTQxLCAyMjcsIDE5NSwgCisgICAgMjQyLCA0MCwgOTQsIDIyNSwgMTEsIDIyNCwgNzcsIDIyNCwgNzEsIDk0LCAxLCAyNTQsIDE3MCwgOTQsIDEsIDI1MiwgMjgsIAorICAgIDk0LCAxLCAyNDIsIDIwMSwgOTQsIDEsIDI0OCwgMTg5LCA5NCwgMSwgMjQxLCAyMzgsIDk0LCAxLCAyMTQsIDMsIDk0LCAxLCAKKyAgICAyMTAsIDk3LCA5NCwgMSwgMjQxLCAxOTcsIDk0LCAxLCAyMTYsIDIzMCwgOTQsIDEsIDIxMCwgMjMzLCA5NCwgMSwgNDAsIAorICAgIDIzNCwgMjUwLCA5NCwgMSwgMjM0LCAyNTAsIDk0LCAxLCAyMzMsIDk0LCA5NCwgMSwgNDAsIDIzMSwgNjUsIDk0LCAxLCAKKyAgICAyMzEsIDY1LCA5NCwgMSwgNDAsIDIyNywgMTk0LCA5NCwgMSwgMjI3LCAxOTQsIDk0LCAxLCAyMjEsIDI0OSwgOTQsIDEsIAorICAgIDI1MywgMTYyLCA5NCwgMSwgNDAsIDIyNSwgMjIxLCA5NCwgMSwgMjI1LCAyMjEsIDk0LCAxLCA0MCwgMjE1LCAxNzksIDk0LCAKKyAgICAxLCAyMTUsIDE3OSwgOTQsIDEsIDIyNCwgMzksIDk0LCAxLCAyMjMsIDY3LCA5NCwgMSwgMjIwLCAyMCwgOTQsIDEsIDIxNywgCisgICAgMzgsIDk0LCAyNywgMjExLCA2LCA1MiwgMjE0LCAzLCA5NCwgMjcsIDIxMSwgNiwgMjE0LCA0LCAyMTAsIDIzMywgOTQsIDI3LCAKKyAgICAyMTEsIDYsIDUyLCAyMTAsIDIzMywgOTQsIDIyNCwgMTQxLCAyNDMsIDQxLCA5NCwgMjI0LCAxNDEsIDI0MywgMzksIDEwLCAKKyAgICA1NCwgNTAsIDEwLCA1LCAyMjEsIDI0MiwgMTAsIDI0NCwgMzAsIDIzMSwgMTU0LCAxMCwgNSwgMjIyLCAyMywgMTAsIDUsIAorICAgIDIyMSwgMjQ1LCAyNTQsIDM3LCAyNDksIDEwOSwgMjIyLCAxOTMsIDI1NCwgMzcsIDI0NCwgNCwgMjIyLCAxOTMsIDEwLCAKKyAgICAyMjMsIDEzNCwgMjU0LCAzNywgMjI1LCAxODMsIDIzMCwgMTkzLCA1MCwgMjU0LCAzNywgMjI1LCAxODMsIDIxNiwgMjQ4LCAKKyAgICAyMTYsIDE0OCwgNTAsIDI1NCwgMjIxLCA1MCwgMTAsIDI0OSwgMjE5LCAxMCwgMjQ4LCAxNTAsIDIyMCwgMTM3LCAxMCwgCisgICAgMjI1LCAxMywgMjEzLCAyNDEsIDUwLCAxMCwgNSwgMjMwLCAxNzQsIDEwLCA1LCAyMjIsIDMsIDI1NCwgMTcyLCAyMTIsIDQ1LCAKKyAgICAxMCwgNSwgMjU0LCAxNzIsIDI1MywgMjIxLCAxMCwgNSwgMjIzLCAxNjcsIDI1NCwgMTcxLCAxMCwgNSwgMjIzLCAxNzUsIAorICAgIDI1NCwgMTUyLCAyNTQsIDEwNCwgMTAsIDUsIDIxNywgNzAsIDEwLCA0LCAxMjUsIDIxNywgODAsIDEwLCA0LCAxMjUsIDI3LCAKKyAgICAxMTIsIDIsIDIzMywgMTAzLCAyLCAyMTEsIDQzLCAxMCwgNCwgMTI1LCAyMTAsIDEwOCwgMTAsIDQsIDI0NCwgMTY1LCAxMCwgCisgICAgNCwgMjQ4LCAxODQsIDEwLCA0LCAyMzQsIDIwNSwgMTAsIDIyMCwgMTUwLCAxMCwgMjE1LCAyMTEsIDU5LCAyMjQsIDE0MSwgCisgICAgNzgsIDEwLCAyMjQsIDEzLCA3OCwgMTAsIDEsIDIzNCwgMjA5LCAyMTEsIDQzLCAxMCwgMSwgMjQyLCAxOSwgMTAsIDEsIAorICAgIDExMiwgMiwgMjMxLCAyMjgsIDQ4LCAxMCwgMSwgMTEyLCAyLCAyMDIsIDQ4LCAxMCwgMSwgMjEyLCAzMSwgMiwgMjAyLCA0OCwgCisgICAgMTAsIDEsIDExMiwgMiwgMjAyLCA1MSwgMTAsIDEsIDc5LCAyLCAyMDIsIDQ4LCAxMCwgMSwgMjU0LCAxNzAsIDEwLCAxLCAKKyAgICAyNTIsIDU0LCAxMCwgMSwgMjE3LCA4LCAyMzEsIDE2NCwgMTAsIDEsIDIxNywgNywgMTAsIDEsIDIxNiwgMTkyLCAxMCwgMSwgCisgICAgMjM1LCAxMjMsIDEwLCAxLCAyNDIsIDM3LCAxMCwgMSwgMjM0LCAxMjksIDEwLCAxLCAyNDgsIDE5NSwgMTAsIDEsIDIxNiwgCisgICAgMjAyLCAxMCwgMSwgMjIzLCA5NSwgMTAsIDEsIDIxMCwgMTA4LCAxMCwgMSwgMjIxLCAxNjYsIDEwLCAxLCAyMjAsIDU5LCAKKyAgICAxMCwgMSwgMjIyLCAyNiwgMTAsIDEsIDI0OCwgMjE2LCAxMCwgMSwgMjE3LCA4MCwgMTAsIDEsIDIxMCwgMTExLCAxMCwgMSwgCisgICAgMjU0LCAxOTYsIDEwLCAxLCAyNDIsIDI0NCwgMTAsIDEsIDIzNCwgMTc1LCAyLCAxMTMsIDE3MCwgNDgsIDEwLCAxLCAyMzQsIAorICAgIDE3NSwgMiwgMTM0LCAxNzAsIDUxLCAxMCwgMSwgMjQ0LCAxNjgsIDc5LCAyLCAyMzUsIDE5MywgMjE0LCAxMDUsIDEwLCAxLCAKKyAgICAyNDQsIDE2OCwgNzksIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDI0NCwgMTY4LCA3OSwgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgCisgICAgMjE3LCA0MywgMTAsIDEsIDI0NCwgMTQyLCAxMCwgMSwgMjI0LCA4MSwgMTAsIDEsIDIzNCwgMjUwLCAxMCwgMSwgMjMzLCAKKyAgICAxMDIsIDEwLCAxLCAyMzEsIDc4LCAxMCwgMSwgMjI4LCA2MiwgMTAsIDEsIDI0MSwgMjE4LCAxMCwgMSwgMjEyLCAzMCwgMTAsIAorICAgIDEsIDExMiwgMjMxLCAxOTIsIDEwLCAxLCAyMTEsIDQzLCAxMCwgMjQ0LCAxNjMsIDEwLCAyNDgsIDE4MiwgMTAsIDIzNCwgCisgICAgMjAzLCAxMCwgMjQ0LCAxNjUsIDEwLCAyNDgsIDE4NCwgMTAsIDIzNCwgMjA1LCAxMCwgMjIwLCA5MywgMTAsIDIxOCwgNDUsIAorICAgIDEwLCAyMzEsIDIyNiwgNDgsIDEwLCAyMDIsIDQ4LCAxMCwgMjAyLCA1MSwgMTAsIDIxOCwgNjUsIDI1NCwgMTcwLCAxMCwgCisgICAgMjM1LCAxOTMsIDI0OCwgMTg0LCAxMCwgMTY0LCAyMjgsIDYzLCAyNDIsIDIxOCwgMTAsIDIwOSwgMjU1LCAxMCwgMjUsIDUsIAorICAgIDQsIDIxNCwgMTA2LCA0OCwgMTAsIDI1LCA1LCAyMzUsIDE5MywgNCwgMjE0LCAxMDYsIDQ4LCAxMCwgMjUsIDUsIDU5LCA1MSwgCisgICAgMTAsIDIyMywgNDksIDI0OCwgMTg0LCAxMCwgMjQ0LCAxNjYsIDIsIDExMywgMjQ3LCAxMTgsIDEwLCAyMTIsIDMyLCAyMDIsIAorICAgIDUxLCAyNTQsIDM3LCAyMSwgMjEwLCA4NiwgMjU0LCAzNywgMjEsIDExMCwgMjU0LCAzNywgMjEsIDEwNSwgMjU0LCAzNywgCisgICAgMjEsIDE1OCwgMjU0LCAzNywgMjEsIDE2MSwgMjU0LCAzNywgMjEsIDE4OSwgMjU0LCAzNywgMjEsIDE5NCwgMjU0LCAzNywgCisgICAgMjEsIDE5OCwgMjU0LCAzNywgMjEsIDE5NSwgMjU0LCAzNywgMjEsIDIwMCwgMTAsIDIyNSwgMTgyLCA1MCwgMTAsIDI0OCwgCisgICAgODMsIDIyMCwgMTM3LCAxMCwgMjE2LCAxNDYsIDIyMCwgMTM3LCAxMCwgMjQ0LCA4MSwgMjI1LCA5LCAyMTgsIDE1NiwgMTAsIAorICAgIDEsIDI0NywgMTE5LCAyNTIsIDU0LCAxMCwgMSwgMjQ3LCAxMTksIDIyNCwgODEsIDEwLCAxLCAyMTgsIDIzLCAyNTQsIDE3MCwgCisgICAgMTAsIDEsIDExMiwgMjEyLCA0NiwgMTAsIDEsIDExMiwgMiwgMjEyLCAzMiwgMjAyLCA0OCwgMTAsIDEsIDExMiwgMiwgMjEyLCAKKyAgICAzMiwgMjAyLCA1MSwgMTAsIDEsIDEyNSwgMjQyLCAxOSwgMTAsIDEsIDEyNSwgMjAyLCAyNTQsIDE3MCwgMTAsIDEsIDEyNSwgCisgICAgMjAyLCAyMTIsIDMwLCAxMCwgMSwgMTA0LCAyLCAyMDIsIDQ4LCAxMCwgMSwgMTI1LCAyMDIsIDIxMSwgNDMsIDEwLCAxLCAKKyAgICAyMTUsIDE0OCwgMTAsIDEsIDIxNSwgMTQ2LCAxMCwgMSwgMjUyLCA2NCwgMTAsIDEsIDIxNywgOCwgMiwgMjIyLCAyMzMsIAorICAgIDEwLCAxLCAyMTcsIDgsIDIsIDEzNCwgMTcwLCA3NywgMjQ2LCAxMDMsIDEwLCAxLCAyMjUsIDIwNSwgMTAsIDEsIDIxNywgNSwgCisgICAgMTAsIDEsIDI1MiwgNTIsIDEwLCAxLCAxMjIsIDIsIDIwMiwgNDgsIDEwLCAxLCAxMjIsIDIsIDExMywgMTcwLCA2NywgNDgsIAorICAgIDEwLCAxLCAyMjcsIDE1MywgMTAsIDEsIDI0NiwgNDMsIDEwLCAxLCAxMjIsIDIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDIxNywgCisgICAgMjYsIDEwLCAxLCAyMTcsIDI0LCAxMCwgMSwgMjQ4LCAxMzAsIDEwLCAxLCAyNDgsIDE5NiwgMiwgMjIyLCAyMzMsIDEwLCAxLCAKKyAgICAyNDgsIDE5NiwgMiwgNTksIDUxLCAxMCwgMSwgMjQ4LCAxOTYsIDIsIDU5LCAyNTIsIDQzLCAyMiwgNCwgMjE3LCA4MCwgMTAsIAorICAgIDEsIDI0OCwgMjAxLCAxMCwgMSwgMjQ4LCAxMzIsIDEwLCAxLCAyNDYsIDcwLCAxMCwgMSwgMjQ4LCAxOTYsIDIsIDEzNCwgCisgICAgMTcwLCA3NywgMjQ2LCAxMDMsIDEwLCAxLCAyNDgsIDE5NiwgMiwgMjQ0LCAxMSwgMTcwLCA0OCwgMTAsIDEsIDIyMiwgMTcxLCAKKyAgICAxMCwgMSwgMjIzLCA5NiwgMiwgNCwgMjE0LCAxMDUsIDEwLCAxLCAyMjMsIDk2LCAyLCAyMjIsIDIzMywgMTAsIDEsIDIyMywgCisgICAgOTYsIDIsIDU5LCA1MSwgMTAsIDEsIDIyMywgOTYsIDIsIDQsIDIxNCwgMTA2LCA1MSwgMTAsIDEsIDIyMywgOTYsIDIsIDU5LCAKKyAgICAyNTIsIDQzLCAyMiwgNTksIDQ4LCAxMCwgMSwgMjIzLCA5NiwgMiwgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMjM1LCAxMjAsIAorICAgIDEwLCAxLCAyMjMsIDk2LCAyLCAyNDQsIDExLCAxNzAsIDQ4LCAxMCwgMSwgMjIxLCAxNjcsIDIsIDU5LCAyNTIsIDQzLCAyMiwgCisgICAgNTksIDQ4LCAxMCwgMSwgMjIxLCAxNjcsIDIsIDEzNCwgMTcwLCA1MSwgMTAsIDEsIDIyMSwgMTY3LCAyLCAxMzQsIDE3MCwgCisgICAgMjUyLCA0MywgMjIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDIyMiwgMjcsIDIsIDExMywgMTcwLCA1MSwgMTAsIDEsIDIyMiwgCisgICAgMjcsIDIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDIxNywgODEsIDIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDI1NCwgMTk3LCAyLCAKKyAgICAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyNDcsIDExOSwgMjQ0LCAxNDIsIDEwLCAxLCAyNDQsIDE0MywgMiwgNTksIDIzMCwgCisgICAgMTA5LCA1MSwgMTAsIDEsIDI0NCwgMTQzLCAyLCA1OSwgNTEsIDEwLCAxLCAyMTMsIDI0OCwgMTAsIDEsIDI0NCwgMTQzLCAyLCAKKyAgICAxMzQsIDE3MCwgNTEsIDEwLCAxLCAyMjUsIDIwMywgMTAsIDEsIDIyNCwgODIsIDIsIDU5LCA0OCwgMTAsIDEsIDIyNCwgODIsIAorICAgIDIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDIzNCwgMTc0LCAxMCwgMSwgMjE3LCAyNTAsIDIzNCwgMjUwLCAxMCwgMSwgMjM0LCAKKyAgICAyNTEsIDIsIDIyMiwgMjMzLCAxMCwgMSwgMjM0LCAyNTEsIDIsIDU5LCA0OCwgMTAsIDEsIDIyOSwgNzksIDEwLCAxLCAyMzQsIAorICAgIDI1MSwgMiwgMTM0LCAxNzAsIDUxLCAxMCwgMSwgMjQzLCAxMjIsIDEwLCAxLCAyNDMsIDEyMywgMiwgMjIyLCAyMzMsIDEwLCAKKyAgICAxLCAyMjksIDIsIDEwLCAxLCAyNDMsIDEyMywgMiwgMTEzLCAxNzAsIDUxLCAxMCwgMSwgMjQyLCAxMDEsIDEwLCAxLCAyNDMsIAorICAgIDEyMywgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjMzLCAxMDMsIDIsIDQsIDIxNCwgMTA1LCAxMCwgMSwgMjMzLCAxMDMsIAorICAgIDIsIDU5LCA0OCwgMTAsIDEsIDIzMywgMTAzLCAyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyMzMsIDEwMywgMiwgMTM0LCAKKyAgICAxNzAsIDUxLCAxMCwgMSwgMjI4LCA2MywgMiwgNTksIDUxLCAxMCwgMSwgMjI4LCA2MywgMjQyLCAyMTgsIDEwLCAxLCAyMjIsIAorICAgIDIxNCwgMTAsIDEsIDIyOCwgNjMsIDIsIDIyMiwgMjMzLCAxMCwgMSwgMjI4LCA2MywgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgCisgICAgMjQxLCAyMTksIDI0NywgMTQxLCAxMCwgMSwgMjE3LCAyNywgMiwgNTksIDQ4LCAxMCwgMSwgMjQxLCAyMTksIDIsIDc5LCAKKyAgICA0OCwgMTAsIDEsIDI0MSwgMjE5LCAyNDIsIDE3MSwgMTAsIDEsIDI0MSwgMjE5LCAyNDIsIDE3MiwgMiwgMjAyLCA0OCwgMTAsIAorICAgIDEsIDIxNywgOCwgMjMxLCAxNjUsIDI0MiwgMTcxLCAxMCwgMSwgMjEyLCAzMSwgMiwgMjIyLCAyMzMsIDEwLCAxLCAyMzQsIAorICAgIDczLCAyMjYsIDIzNCwgMTAsIDEsIDIyNiwgMjM0LCAxMCwgMSwgNzAsIDEwLCAxLCAyMTAsIDIxMiwgMTAsIDEsIDIzNCwgCisgICAgNzMsIDIxMCwgMjEyLCAxMCwgMSwgMjEyLCAzMSwgMiwgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMjEzLCAyNTUsIDEwLCAxLCAKKyAgICAyNDQsIDE2OCwgMjExLCA0MywgMTAsIDEsIDc5LCAyLCAyMTcsIDc3LCAxMCwgMSwgNzksIDIsIDQsIDIxNCwgMTA1LCAxMCwgCisgICAgMSwgMjEyLCAzMSwgMiwgNTksIDQ4LCAxMCwgMSwgNzUsIDEwLCAxLCA3OSwgMiwgMTM0LCAxNzAsIDUxLCAxMCwgMSwgNzksIAorICAgIDI1MiwgMTMyLCAxMCwgMSwgNzksIDI1MiwgMTMzLCAyLCAyMDIsIDQ4LCAxMCwgMjQzLCAyMjksIDIxOCwgMTI5LCAxMCwgMSwgCisgICAgMjU0LCAyNDMsIDEwLCA0LCAxMjUsIDI3LCAyMjIsIDI3LCAyLCAyMzMsIDEwMywgMiwgMTEyLCAyMzEsIDE5MiwgMTAsIDQsIAorICAgIDEyNSwgMjcsIDIyNCwgODIsIDIsIDIzMywgMTAzLCAyLCAxMTIsIDIzMSwgMTkyLCAxMCwgNCwgMTI1LCA2NiwgNjUsIDE3LCAKKyAgICAxMCwgNCwgMTI1LCAyMzMsIDEwMywgMjU0LCAxNzAsIDEwLCA0LCAxMjUsIDIzNSwgMTIzLCAxMCwgNCwgMTI1LCAxMzQsIAorICAgIDI0NywgMTE4LCAxMCwgNCwgMTI1LCAyMjEsIDE2NiwgMTAsIDI0NSwgMTQzLCA2NCwgMjUzLCAxNjYsIDEwLCAyMTgsIDE1MiwgCisgICAgNjQsIDIyMiwgMTM4LCAyNDUsIDE3NSwgMjQxLCAxNTUsIDEwLCA0LCAxMjUsIDIyMiwgMTgzLCAyMTAsIDg2LCAxMCwgNCwgCisgICAgMTI1LCAyMTQsIDE1OSwgMjIzLCAxMTUsIDIxMCwgODYsIDEwLCA0LCAxMjUsIDI0NywgMTE5LCAyNDEsIDIzNiwgNjQsIAorICAgIDIzNCwgMTI5LCAxMCwgNCwgMTI1LCA2NiwgNTMsIDE3LCAxMCwgNCwgMTIxLCAyMjEsIDE2NiwgMTAsIDQsIDEyNSwgMjMxLCAKKyAgICAyMjcsIDEwLCA0LCAyMTIsIDMwLCAxMCwgNCwgMjExLCA0MywgMTAsIDQsIDEyNSwgMjExLCA0MywgMTAsIDQsIDEyNSwgCisgICAgMjI4LCA2MiwgMTAsIDIyNSwgNDEsIDY0LCAyMjIsIDEzLCAxMCwgMjQ1LCAxNTIsIDI1MCwgMTc1LCAxMjEsIDIxOCwgMTI5LCAKKyAgICAxMCwgMjQ1LCAxNTIsIDI1MCwgMTc1LCAxMjUsIDIxOCwgMTI5LCAxMCwgMjIyLCAxODMsIDEyNSwgMjE4LCAxMzAsIDIsIAorICAgIDI0NCwgMTA0LCAyNTAsIDE3NCwgMTAsIDQsIDEyMSwgMjMxLCA3OCwgMTAsIDEsIDI0OCwgMTk2LCAyLCAyMzUsIDE5MywgCisgICAgMjE0LCAxMDUsIDEwLCAxLCAyMjMsIDk2LCAyLCAyMzUsIDE5MywgMjE0LCAxMDUsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAKKyAgICAyMTAsIDg2LCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTEwLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTA1LCAyNDUsIDIyLCAKKyAgICAyNTQsIDM3LCAyMSwgMTU4LCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTYxLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTg5LCAKKyAgICAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTk0LCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTk4LCAyNDUsIDIyLCAyNTQsIDM3LCAKKyAgICAyMSwgMTk1LCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMjAwLCAxMCwgMSwgMjIwLCA2MCwgMiwgNTksIDUxLCAxMCwgMSwgCisgICAgMjQ4LCAyMTcsIDIsIDU5LCA1MSwgMTAsIDEsIDI0MiwgMjQ1LCAyLCA1OSwgNTEsIDEwLCA1LCAyMTksIDE1OCwgMjU0LCAKKyAgICAxMjYsIDEwLCA1LCAyMTksIDE1OCwgMjI0LCAyMzUsIDIzMSwgNTgsIDEwLCAxLCAyNDEsIDIxOSwgMiwgMjM1LCAxOTMsIAorICAgIDIxNCwgMTA1LCAxODgsIDI0NSwgMTQzLCA2NCwgMjI2LCAxNCwgMTg4LCAyMTgsIDE5LCAyNDMsIDIyOSwgMjE4LCAxMjksIAorICAgIDE4OCwgMjE4LCA2NywgMjQzLCAyMjksIDIxOCwgMTI5LCAxODgsIDIxOCwgMTksIDI0OSwgMjI2LCAxODgsIDIxOCwgNjcsIAorICAgIDI0OSwgMjI2LCAxODgsIDIwMywgMjQ5LCAyMjYsIDE4OCwgMjQ5LCAyMjcsIDIxOSwgMTA2LCAyMzMsIDQ2LCAxODgsIDI0OSwgCisgICAgMjI3LCAyMTksIDEwNiwgMjIyLCAyNTEsIDE4OCwgMjE4LCAxOSwgMjQ5LCAyMjcsIDIxOSwgMTA2LCAyMzMsIDQ2LCAxODgsIAorICAgIDIxOCwgNjcsIDI0OSwgMjI3LCAyMTksIDEwNiwgMjIyLCAyNTEsIDE4OCwgMjQ5LCAxODAsIDE4OCwgMjQyLCAxLCAyMjYsIAorICAgIDI1MCwgMTg4LCAyNDIsIDEsIDIzMSwgMzYsIDE4OCwgMjQyLCAxLCAyNTMsIDIxOCwgMTg4LCAyNTUsIDIxLCA3OCwgMTg4LCAKKyAgICAxLCAyNTQsIDE3NCwgMTg4LCAxLCAyMTgsIDIzLCAyNTQsIDE3NCwgMTg4LCAxLCAyNTIsIDI1LCAxODgsIDEsIDI0MywgCisgICAgMTEzLCAxODgsIDEsIDI0MywgMTE0LCAyNDMsIDkxLCAxODgsIDEsIDI0OCwgMTkyLCAxODgsIDEsIDI0NywgMTE5LCAyNDgsIAorICAgIDE5MywgMjIyLCAyMjksIDE4OCwgMSwgMjQxLCAyMzgsIDE4OCwgMSwgMjEyLCAzMCwgMTg4LCAxLCAyMTAsIDEwOCwgMTg4LCAKKyAgICAxLCAyNDEsIDE5NSwgMTg4LCAxLCAyMTYsIDIyNiwgMTg4LCAxLCAyMTYsIDIyNywgMjQzLCA5MSwgMTg4LCAxLCAyMTAsIAorICAgIDE5OSwgMTg4LCAxLCAyMTAsIDIwMCwgMjQxLCAyMzgsIDE4OCwgMSwgMjM0LCAyMjUsIDE4OCwgMSwgMjMzLCAxMDEsIDE4OCwgCisgICAgMSwgMjMwLCAxOTAsIDE4OCwgMSwgMjI3LCAxOTQsIDE4OCwgMSwgMjIwLCAxNDMsIDE4OCwgMSwgNDAsIDIyMCwgMTQzLCAKKyAgICAxODgsIDEsIDc1LCAxODgsIDEsIDIyNSwgMjIxLCAxODgsIDEsIDIyMywgNDksIDIyNSwgMjIxLCAxODgsIDEsIDIyMiwgMjQsIAorICAgIDE4OCwgMSwgMjI0LCA3NSwgMTg4LCAxLCAyMjIsIDIyOSwgMTg4LCAxLCAyMjAsIDIwLCAxODgsIDEsIDIxNywgMzYsIDE4OCwgCisgICAgMSwgMjI1LCAxNjksIDI1MiwgMTIsIDE4OCwgMSwgMjI1LCAxNjksIDI0MiwgMjQyLCAxODgsIDEsIDIyNSwgMTY5LCAyNDgsIAorICAgIDIwLCAxODgsIDIyNCwgMTUxLCA0OCwgMTg4LCAyMjQsIDE1MSwgNTEsIDE4OCwgMjI0LCAxNTEsIDI0NiwgMTE3LCAxODgsIAorICAgIDIxMCwgMTcsIDQ4LCAxODgsIDIxMCwgMTcsIDUxLCAxODgsIDIxMCwgMTcsIDI0NiwgMTE3LCAxODgsIDIyMywgMTMxLCA0OCwgCisgICAgMTg4LCAyMjMsIDEzMSwgNTEsIDE4OCwgMjQ2LCAxMTgsIDIxMCwgMjQsIDI0MSwgNDQsIDE4OCwgMjQ2LCAxMTgsIDIxMCwgCisgICAgMjQsIDI1NCwgMTA1LCAxODgsIDI0MSwgMjQxLCA0OCwgMTg4LCAyNDEsIDI0MSwgNTEsIDE4OCwgMjQxLCAyNDAsIDI0NiwgCisgICAgMTE3LCAxODgsIDI0NSwgNzksIDQ4LCAxODgsIDI0NSwgNzksIDUxLCAxODgsIDIyMiwgMTA3LCAxODgsIDI0NCwgMTM2LCAKKyAgICAyNDcsIDEyMCwgMTg4LCAyMjMsIDI0OCwgMTg4LCAyMjIsIDEzNCwgMTg4LCAxMTMsIDY3LCAxNzAsIDQ4LCAxODgsIDExMywgCisgICAgNjcsIDE3MCwgNTEsIDE4OCwgMTM0LCAxNzAsIDQ4LCAxODgsIDEzNCwgMTcwLCA1MSwgMTg4LCAyMjYsIDI0OCwgMjMyLCAKKyAgICAyMTQsIDQ4LCAxODgsIDIyNiwgMjQ4LCAyMzIsIDIxNCwgNTEsIDE4OCwgMjMwLCA1NiwgMTg4LCAyNTIsIDEzMSwgMTg4LCAKKyAgICAxLCAyMTksIDQ5LCAyMTAsIDgwLCAxODgsIDEsIDIxOSwgNDksIDIzNCwgMTIyLCAxODgsIDEsIDIxOSwgNDksIDI0NCwgCisgICAgMTU0LCAxMCwgMSwgMjUyLCA1NSwgMiwgMTM0LCAxNzAsIDI0MCwgMjUwLCA1MSwgMTAsIDEsIDI1MiwgNTUsIDIsIDU5LCAKKyAgICAyNTIsIDQzLCAyMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjUyLCA1NSwgMiwgMTM0LCAxNzAsIDIyNSwgNywgMjE0LCAxNTMsIAorICAgIDUxLCAxMCwgMSwgMjUyLCA1NSwgMiwgMTM0LCAxNzAsIDIyNSwgNywgMjE0LCAxNTMsIDI1MiwgNDMsIDIyLCAxMTMsIDE3MCwgCisgICAgNDgsIDEwLCAxLCAyNTIsIDU1LCAyLCAxMTMsIDE3MCwgMjUyLCA0MywgMjIsIDU5LCA0OCwgMTAsIDEsIDI1MiwgNTUsIDIsIAorICAgIDIzNSwgMTkzLCA0LCAyMTQsIDEwNiwgNTEsIDEwLCAxLCAyNTIsIDU1LCAyLCA0LCAyMTQsIDEwNSwgMTAsIDEsIDEyMiwgMiwgCisgICAgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMTIyLCAyLCAxMzQsIDE3MCwgMjI1LCA3LCAyMTQsIDE1MywgNTEsIDEwLCAxLCAyNDgsIAorICAgIDE5NiwgMiwgMTEzLCAxNzAsIDIxMywgMTg5LCAyNTIsIDQzLCAyMiwgNCwgMjE3LCA4MCwgMTAsIDEsIDI0OCwgMTk2LCAyLCAKKyAgICAyMzUsIDE5MywgNCwgMjE0LCAxMDYsIDUxLCAxMCwgMSwgMjIzLCA5NiwgMiwgOTEsIDEwLCAxLCAyMjEsIDE2NywgMiwgCisgICAgMjQ0LCAxMSwgMTcwLCA0OCwgMTAsIDEsIDI1NCwgMTk3LCAyLCAxMTMsIDE3MCwgNDgsIDEwLCAxLCAyNTQsIDE5NywgMiwgCisgICAgMTM0LCAxNzAsIDIyNSwgNywgMjQ2LCAxMDQsIDQ4LCAxMCwgMSwgMjU0LCAxOTcsIDIsIDExMywgMTcwLCAyMTMsIDE4OSwgCisgICAgNDgsIDEwLCAxLCAyNDQsIDE0MywgMiwgMTEzLCAxNzAsIDUxLCAxMCwgMSwgMjQ0LCAxNDMsIDIsIDEzNCwgMTcwLCAyMjUsIAorICAgIDcsIDIxNCwgMTUzLCA1MSwgMTAsIDEsIDIzNCwgMTc1LCAyLCA1OSwgNDgsIDEwLCAxLCAyMzQsIDE3NSwgMiwgMTM0LCAKKyAgICAxNzAsIDQ4LCAxMCwgMSwgMjM0LCAxNzUsIDIsIDEzNCwgMTcwLCAyMjUsIDcsIDIxNCwgMTUzLCA1MSwgMTAsIDEsIDY2LCAKKyAgICAyLCA1OSwgNDgsIDEwLCAxLCA2NiwgMiwgNTksIDUxLCAxMCwgMSwgMjI4LCA2MywgMiwgMTEzLCAxNzAsIDUxLCAxMCwgMSwgCisgICAgMjI4LCA2MywgMiwgNCwgMjE3LCA4MCwgMTAsIDEsIDIyOCwgNjMsIDIsIDQsIDIxNCwgMTA1LCAxMCwgMSwgMjMzLCAxMDMsIAorICAgIDIsIDEzMCwgMTAsIDEsIDIyMywgOTYsIDIsIDExMywgMTcwLCAyMTMsIDE4OSwgNDgsIDEwLCAxLCAyMjMsIDk2LCAyLCAKKyAgICAyMDIsIDQ4LCAxMCwgMSwgMjIxLCAxNjcsIDIsIDExMywgMTcwLCAyMTMsIDE4OSwgNDgsIDEwLCAxLCAxMjIsIDIsIDQsIAorICAgIDEwLCAxLCAyMTcsIDgxLCA1MSwgMTAsIDEsIDEyMiwgMiwgNCwgMTAsIDEsIDIxNywgODEsIDIyLCAxMTMsIDI0NywgMTE4LCAKKyAgICAxMCwgMSwgMjIxLCAxNjcsIDIsIDQsIDEwLCAxLCAyMTcsIDgxLCAyMiwgMTEzLCAyNDcsIDExOCwgMTAsIDEsIDIyMywgOTYsIAorICAgIDIsIDQsIDEwLCAxLCAyMTcsIDgxLCAyMiwgMTEzLCAyNDcsIDExOCwgMTAsIDEsIDEyMiwgMiwgNCwgMTAsIDEsIDIxNywgCisgICAgODEsIDQ4LCAxMCwgMSwgMTEyLCAyLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTEzLCA0OCwgMTAsIDEsIDExMiwgMiwgMjQ1LCAKKyAgICAyMiwgMjU0LCAzNywgMjEsIDEzNCwgNDgsIDEwLCAxLCAyNDQsIDE2OCwgNzksIDIsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAKKyAgICAxMTMsIDQ4LCAxMCwgMSwgMjQ0LCAxNjgsIDc5LCAyLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTM0LCA0OCwgMTAsIDEsIAorICAgIDI0NCwgMTY4LCA3OSwgMiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDI0NCwgMTEsIDUxLCAxMCwgMSwgMjEyLCAzMSwgMiwgCisgICAgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDExMywgNDgsIDEwLCAxLCAyMTIsIDMxLCAyLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgCisgICAgMTM0LCA0OCwgMTAsIDEsIDc5LCAyNTIsIDEzMywgMiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDExMywgNDgsIDEwLCAxLCAKKyAgICA3OSwgMjUyLCAxMzMsIDIsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxMzQsIDQ4LCAxMCwgMSwgMTIyLCAyLCAyNDUsIDIyLCAKKyAgICAyNTQsIDM3LCAyMSwgMjQ0LCAxMSwgNTEsIDEwLCAxLCAyMjEsIDE2NywgMiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDI0NCwgCisgICAgMTEsIDQ4LCAxMCwgMSwgMjIxLCAxNjcsIDIsIDIzNSwgMTkzLCAyMTQsIDEwNSwgMTAsIDEsIDIzNCwgMjUxLCAyLCAxMTMsIAorICAgIDE3MCwgNDgsIDIxNiwgMjA1LCAxLCAyNDIsIDQ2LCAyMTYsIDIwNSwgMSwgMjIwLCA2OCwgMjE2LCAyMDUsIDEsIDIyOCwgCisgICAgNjEsIDIxNiwgMjA1LCAxLCAyMjMsIDE4NCwgMjE2LCAyMDUsIDEsIDI1MiwgMTg5LCAyMTYsIDIwNSwgMSwgMjMyLCAyNTEsIAorICAgIDIxNiwgMjA1LCAxLCAyMzUsIDgsIDIxNiwgMjA1LCAxLCAyNTQsIDE1OSwgMjE2LCAyMDUsIDEsIDIxNCwgMjUsIDIxNiwgCisgICAgMjA1LCAxLCAyMzEsIDc3LCAyMTYsIDIwNSwgMSwgMjQ0LCAxOTQsIDIxNiwgMjA1LCAxLCAyNDgsIDIzLCAyMTYsIDIwNSwgCisgICAgMSwgMjE2LCAyMDcsIDIxNiwgMjA1LCAxLCAyMzMsIDEzMSwgMjE2LCAyMDUsIDEsIDI0MywgMTMxLCAyMTYsIDIwNSwgMSwgCisgICAgMjQyLCAxNzcsIDIxNiwgMjA1LCAxLCAyMjEsIDE2NSwgMjE2LCAyMDUsIDEsIDI0OCwgMTQ4LCAyMTYsIDIwNSwgMSwgMjEwLCAKKyAgICAxMDAsIDIxNiwgMjA1LCAxLCAyMTcsIDM3LCAyMTYsIDIwNSwgMSwgMjExLCAxMDMsIDIxNiwgMjA1LCAxLCAyMjUsIDIzMywgCisgICAgMjE2LCAyMDUsIDEsIDIzNSwgMTI4LCAyMTYsIDIwNSwgMSwgMjUwLCAxMzQsIDIxNiwgMjA1LCAxLCAyMTUsIDE1NSwgMjE2LCAKKyAgICAyMDUsIDEsIDI0MSwgMTg4LCAyMTYsIDIwNSwgMSwgMjM0LCAxMzEsIDIxNiwgMjA1LCAxLCAyMTYsIDIwNiwgMjE2LCAyMDUsIAorICAgIDEsIDIxMCwgMTE1LCAyMTYsIDIwNSwgMSwgMjIwLCA1OCwgMjE2LCAyMDUsIDEsIDIyMiwgMzAsIDIxNiwgMjA1LCAxLCAKKyAgICAyNDgsIDIxOSwgMjE2LCAyMDUsIDEsIDExMSwgMjE2LCAyMDUsIDEsIDIxMCwgMjMsIDIxNiwgMjA1LCAxLCAyNTQsIDE5MywgCisgICAgMjE2LCAyMDUsIDEsIDI0MiwgMjQzLCAyMTYsIDIwNSwgMSwgMjI0LCA4NSwgMjE2LCAyMDUsIDEsIDIxMiwgNjMsIDIxNiwgCisgICAgMjA1LCAyNTUsIDIyLCAyMTYsIDIwNSwgMjU1LCAzOCwgMjE2LCAyMDUsIDI0MCwgMTE0LCAyMTYsIDIwNSwgMjQ1LCAyMDgsIAorICAgIDIxNiwgMjA1LCAyMTQsIDIyMiwgMjE2LCAyMDUsIDIyNiwgMTgyLCAyMTYsIDIwNSwgMjQ1LCAyMTYsIDIxNiwgMjA1LCAKKyAgICAyNDUsIDE2LCAyMTYsIDIwNSwgMjI2LCAyNDcsIDIxNiwgMjA1LCAyMjYsIDI1NSwgMjE2LCAyMDUsIDIxOCwgNDUsIDIxNiwgCisgICAgMjA1LCAxLCAyMjksIDIyNSwgMjI4LCAxMzcsIDIxLCAyMTAsIDg2LCAyMjgsIDEzNywgMjEsIDExMCwgMjI4LCAxMzcsIDIxLCAKKyAgICAxMDUsIDIyOCwgMTM3LCAyMSwgMTU4LCAyMjgsIDEzNywgMjEsIDE2MSwgMjI4LCAxMzcsIDIxLCAxODksIDIyOCwgMTM3LCAKKyAgICAyMSwgMTk0LCAyMjgsIDEzNywgMjEsIDE5OCwgMjI4LCAxMzcsIDIxLCAxOTUsIDIyOCwgMTM3LCAyMSwgMjAwLCAyMjgsIAorICAgIDEzNywgMSwgNjEsIDIyOCwgMTM3LCAxLCAyNDUsIDIwOSwgMjI4LCAxMzcsIDEsIDczLCAyMjgsIDEzNywgMSwgNzUsIDIyOCwgCisgICAgMTM3LCAxLCA3MCwgMjI4LCAxMzcsIDEsIDIyNiwgMTgzLCAyMjgsIDEzNywgMSwgNzYsIDIyOCwgMTM3LCAxLCAyNDgsIAorICAgIDIwOSwgMjI4LCAxMzcsIDEsIDIzMCwgMjUsIDIyOCwgMTM3LCAxLCAyNTIsIDE5MSwgMjI4LCAxMzcsIDEsIDE5MCwgMjI4LCAKKyAgICAxMzcsIDEsIDIxNywgMTA1LCAyMjgsIDEzNywgMSwgMjM1LCAxNDEsIDIyOCwgMTM3LCAxLCAyNTAsIDE1NywgMjI4LCAxMzcsIAorICAgIDEsIDI0OCwgMjIxLCAyMjgsIDEzNywgMSwgMjA1LCAyMjgsIDEzNywgMSwgMjIyLCAxNzksIDIyOCwgMTM3LCAxLCAyMDYsIAorICAgIDIyOCwgMTM3LCAxLCAyNDMsIDc5LCAyMjgsIDEzNywgMSwgMjQ0LCAxOTYsIDIyOCwgMTM3LCAxLCAxNzYsIDIyOCwgMTM3LCAKKyAgICAxLCAyMzMsIDEzNSwgMjI4LCAxMzcsIDEsIDIyOSwgMjI5LCAyMTEsIDIyMywgMjI4LCAxMzcsIDEsIDE4NCwgMjI4LCAxMzcsIAorICAgIDEsIDIyNywgMTY1LCAyMjgsIDEzNywgMSwgMTk3LCAyMjgsIDEzNywgMSwgMTYyLCAyMjgsIDEzNywgMSwgMjEyLCA2NSwgCisgICAgMjI4LCAxMzcsIDEsIDE5MSwgMjI4LCAxMzcsIDEsIDIyNywgMTY2LCAyMTEsIDIyMywgMjI4LCAxMzcsIDEsIDIzNSwgNjEsIAorICAgIDIzNSwgMTQxLCAyMjgsIDEzNywgMSwgMjM1LCA2MSwgMjUwLCAxNTcsIDIyOCwgMTM3LCAxLCAyMzUsIDYxLCAyMDUsIDIyOCwgCisgICAgMTM3LCAzOCwgMjE5LCAyNTEsIDEyNSwgMjE2LCAzMCwgMjI4LCAxMzcsIDM4LCAyMTksIDI1MSwgMTIxLCAyMTYsIDMwLCAKKyAgICAyMjgsIDEzNywgMzgsIDIxOSwgMjUxLCAyMjIsIDIyOCwgMjE2LCAzMCwgMjI4LCAxMzcsIDM4LCAxOTksIDI0OCwgMzgsIAorICAgIDIxNiwgMzAsIDIyOCwgMTM3LCAzOCwgMTk5LCAxMjUsIDIxNiwgMzAsIDIyOCwgMTM3LCAzOCwgMTk5LCAxMjEsIDIxNiwgCisgICAgMzAsIDIyOCwgMTM3LCAzOCwgMTk5LCAyMjIsIDIyOCwgMjE2LCAzMCwgMjI4LCAxMzcsIDM4LCAyMjksIDE5MywgNzgsIAorICAgIDIyOCwgMTM3LCAzOCwgNTIsIDU5LCA0OCwgMjI4LCAxMzcsIDEyNSwgMTM4LCAyNTQsIDU3LCAyMjgsIDEzNywgMTIxLCAKKyAgICAxMzgsIDI1NCwgNTcsIDIyOCwgMTM3LCAxNiwgMjI2LCAxODQsIDI0OCwgNTAsIDIyOCwgMTM3LCAxNiwgMjQzLCA3OCwgCisgICAgMjI4LCAxMzcsIDI0OSwgMjE5LCAyMjgsIDEzNywgMjQ1LCAzMSwgNzgsIDIyOCwgMTM3LCAyMzMsIDEwOCwgMjIxLCAyNTIsIAorICAgIDEsIDI1NCwgMTc2LCAyMjEsIDI1MiwgMSwgMjUxLCAyMjgsIDIyMSwgMjUyLCAxLCAyNDMsIDExMiwgMjIxLCAyNTIsIDEsIAorICAgIDI0OCwgMTk0LCAyMjEsIDI1MiwgMSwgMjM1LCAxNTIsIDIyMSwgMjUyLCAxLCAyNTIsIDE4OSwgMjIxLCAyNTIsIDEsIDIxMCwgCisgICAgODksIDIyMSwgMjUyLCAxLCAyMzUsIDE2MCwgMjIxLCAyNTIsIDEsIDIxNiwgNjcsIDIyMSwgMjUyLCAxLCAyMTAsIDE4MiwgCisgICAgMjIxLCAyNTIsIDEsIDIzNSwgOSwgMjIxLCAyNTIsIDEsIDIzMywgMTI4LCAyMjEsIDI1MiwgMSwgMjMwLCAxOTAsIDIyMSwgCisgICAgMjUyLCAxLCAyMjcsIDE5NCwgMjIxLCAyNTIsIDEsIDIxOSwgMTU2LCAyMjEsIDI1MiwgMSwgMjM1LCAyNTUsIDIyMSwgMjUyLCAKKyAgICAxLCAyNDQsIDEyMSwgMjIxLCAyNTIsIDEsIDIxNSwgMTgxLCAyMjEsIDI1MiwgMSwgMjI0LCAxMCwgMjIxLCAyNTIsIDEsIAorICAgIDIyMiwgMjI5LCAyMjEsIDI1MiwgMSwgMjIwLCA4NSwgMjIxLCAyNTIsIDEsIDIxNywgMTAwLCAyMjEsIDI1MiwgMTY0LCAKKyAgICAyMzUsIDI1NSwgMjIxLCAyNTIsIDE2NCwgMjM1LCAyNTQsIDIyMSwgMjUyLCAxNjQsIDIyNiwgMjQzLCAyMjEsIDI1MiwgCisgICAgMTY0LCAyNDgsIDIwNywgMjIxLCAyNTIsIDU4LCAxLCAyNDUsIDEwNSwgMjEwLCAxODIsIDIyMSwgMjUyLCAxNjQsIDI0NSwgCisgICAgMTA1LCAyMTAsIDE4MiwgMjIxLCAyNTIsIDI1LCA1LCAxOTksIDc1LCAyMjEsIDI1MiwgMjUsIDUsIDc1LCAyMjEsIDI1MiwgCisgICAgMjUsIDUsIDIyNiwgMTE4LCAyNTUsIDczLCAyMjEsIDI1MiwgMjUsIDUsIDE5OSwgMjU1LCA3MywgMjIxLCAyNTIsIDI1LCA1LCAKKyAgICAyNTUsIDczLCAyMjEsIDI1MiwgMjUsIDUsIDIyNiwgMTE4LCA2MSwgMjIxLCAyNTIsIDI1LCA1LCAxOTksIDYxLCAyMjEsIAorICAgIDI1MiwgMjUsIDUsIDYxLCAyMjEsIDI1MiwgNTgsIDEsIDIxOSwgMjUxLCA2MSwgMjIxLCAyNTIsIDI1LCA1LCAyMTksIDI1MSwgCisgICAgNjEsIDIyMSwgMjUyLCAyNSwgNSwgMTk5LCA3MCwgMjIxLCAyNTIsIDI1LCA1LCA3MCwgMjIxLCAyNTIsIDU4LCAxLCA3MywgCisgICAgMjIxLCAyNTIsIDI1LCA1LCAxOTksIDczLCAyMjEsIDI1MiwgMjUsIDUsIDczLCAyMjEsIDI1MiwgMjUsIDUsIDc2LCAyMjEsIAorICAgIDI1MiwgMjUsIDUsIDIxOCwgNDUsIDIyMSwgMjUyLCAxNjQsIDIyOSwgOTIsIDIyMSwgMjUyLCAyMjQsIDE0MSwgMjI5LCA5MiwgCisgICAgMjIxLCAyNTIsIDIyNCwgMTQxLCAyNTQsIDIxOCwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyNTQsIDExNCwgMjIxLCAyNTIsIAorICAgIDIyNCwgMTQxLCAyNTIsIDExNCwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyNTMsIDIwMSwgMjIxLCAyNTIsIDIyNCwgMTQxLCAKKyAgICAyMjAsIDgsIDIyMSwgMjUyLCAyNTUsIDIxLCA3OCwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyMzEsIDY4LCAyMjQsIDQ1LCAyMjEsIAorICAgIDI1MiwgMjI0LCAxNDEsIDIxMCwgMzEsIDIyMSwgMjUyLCAyMjQsIDE0MSwgMjI0LCA0NSwgMjIxLCAyNTIsIDIyNCwgMTQxLCAKKyAgICAyMTAsIDExNCwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyMTUsIDkwLCAyMjEsIDI1MiwgMjI0LCAxNDEsIDI1NCwgOSwgMjIxLCAKKyAgICAyNTIsIDIyNCwgMTQxLCAyMTksIDUzLCAyMzEsIDE0NSwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyNTQsIDEwMCwgMjMxLCAxODIsIAorICAgIDEsIDI0MiwgMjQsIDIzMSwgMTgyLCAxLCAyNTUsIDI1LCAyMzEsIDE4MiwgMSwgMjU0LCAyMTYsIDIzMSwgMTgyLCAxLCAKKyAgICAyNTQsIDI1NSwgMjMxLCAxODIsIDEsIDI1NCwgMjA5LCAyMzEsIDE4MiwgMSwgMjE0LCAxMjQsIDIzMSwgMTgyLCAxLCAyNTMsIAorICAgIDE2MCwgMjMxLCAxODIsIDEsIDIzNSwgMTYwLCAyMzEsIDE4MiwgMSwgMjUzLCAxOTgsIDIzMSwgMTgyLCAxLCAyNTQsIDE4MSwgCisgICAgMjMxLCAxODIsIDEsIDI1NCwgMTg2LCAyMzEsIDE4MiwgMSwgMjU0LCAxNzgsIDIzMSwgMTgyLCAxLCAyNTQsIDEzNiwgMjMxLCAKKyAgICAxODIsIDEsIDI1NCwgMTIzLCAyMzEsIDE4MiwgMSwgMjUzLCAyMzcsIDIzMSwgMTgyLCAxLCAyMzUsIDI1NSwgMjMxLCAxODIsIAorICAgIDEsIDI1NCwgNzIsIDIzMSwgMTgyLCAxLCAyNTMsIDIwOCwgMjMxLCAxODIsIDEsIDI1NCwgNDUsIDIzMSwgMTgyLCAxLCAKKyAgICAyNTQsIDQxLCAyMzEsIDE4MiwgMSwgMjUzLCAyMzEsIDIzMSwgMTgyLCAxLCAyNTMsIDIwNiwgMjMxLCAxODIsIDEsIDI0NiwgCisgICAgNTUsIDIzMSwgMTgyLCAxLCAyMzUsIDIsIDIzMSwgMTgyLCAxLCAyNTQsIDE5NiwgMjMxLCAxODIsIDI1NCwgMjIyLCA3OCwgCisgICAgMjMxLCAxODIsIDIxMywgMTM2LCA3OCwgMjMxLCAxODIsIDI0MywgNTMsIDc4LCAyMzEsIDE4MiwgMjI0LCAxNDAsIDEwLCAxLCAKKyAgICAyNTIsIDU1LCAyLCA0LCAyMTQsIDEwNiwgNTEsIDEwLCAxLCAxNTEsIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDIxNywgODEsIAorICAgIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDI0NCwgMTQzLCAyLCA1OSwgMjUyLCA0MywgMjIsIDEzNCwgMTcwLCA0OCwgMTAsIAorICAgIDEsIDIyNCwgODIsIDIsIDU5LCA1MSwgMTAsIDEsIDIzMywgMTAzLCAyLCA1MiwgMTMwLCAxMCwgMSwgNjYsIDIsIDEzNCwgCisgICAgMTcwLCA0OCwgMTAsIDEsIDc5LCAyLCAxMTMsIDE3MCwgMjUyLCA0MywgMjIsIDIwMiwgNDgsIDEwLCAxLCA3OSwgMiwgMTEzLCAKKyAgICAxNzAsIDI1MiwgNDMsIDIyLCA1OSwgNDgsIDEwLCAxLCAyMjMsIDk2LCAyLCAyMzIsIDEyMywgMTAsIDEsIDIxMiwgMzEsIDIsIAorICAgIDU5LCAyMTEsIDIzMSwgMTAsIDEsIDIyMiwgMjAxLCAyMTEsIDQzLCAxMCwgMjQ5LCA5OSwgMjQ0LCAxNjUsIDEwLCAyNDksIAorICAgIDk5LCAyNDgsIDE4NCwgMTAsIDI0OSwgOTksIDIzNCwgMjA1LCAxMCwgMjQ5LCA5OSwgMjQ0LCAxNjMsIDEwLCAyNDksIDk5LCAKKyAgICAyNDgsIDE4MiwgMTAsIDI0OSwgOTksIDIzNCwgMjAzLCAxMCwgMTM4LCAxMjMsIDU5LCA0OCwgMTAsIDEzOCwgMTEzLCAxNzAsIAorICAgIDQ4LCAxMCwgMTM4LCAyMzIsIDEyNCwgNDgsIDEwLCAxMzgsIDEyMywgNTksIDUxLCAxMCwgMTM4LCAxMTMsIDE3MCwgNTEsIAorICAgIDEwLCAxMzgsIDIzMiwgMTI0LCA1MSwgMTAsIDIwNCwgMjQ0LCAxNjMsIDEwLCAyMDQsIDI0OCwgMTgyLCAxMCwgMjA0LCAKKyAgICAyMzQsIDIwMywgMTAsIDQsIDEyNSwgMjEyLCAzMCwgMTAsIDI0NCwgMTY2LCAyLCAyMjIsIDIzMywgMTAsIDI0NCwgMTY2LCAKKyAgICAyLCA1OSwgNDgsIDEwLCAyMzQsIDIwNiwgMiwgNTksIDUxLCAxMCwgNDMsIDI1MywgMjUwLCA0OCwgMTAsIDQ0LCAyNTMsIAorICAgIDI1MCwgNDgsIDEwLCA0MywgMjUzLCAyNTAsIDUxLCAxMCwgNDQsIDI1MywgMjUwLCA1MSwgMTAsIDUyLCA0NCwgMjUzLCAKKyAgICAyNTAsIDQ4LCAxMCwgNTIsIDQ0LCAyNTMsIDI1MCwgNzcsIDIsIDI0NywgMTIwLCAxMCwgNDQsIDI1MywgMjUwLCA3NywgMiwgCisgICAgMjQ3LCAxMjAsIDEwLCAyNDgsIDE4NSwgMiwgMjQ3LCAxMjAsIDg0LCA1LCAyMzUsIDE5MywgMjUwLCAyNTUsIDg0LCA1LCAKKyAgICAyNTAsIDI1NSwgODQsIDUsIDI1NCwgNzUsIDg0LCA1LCAyMTMsIDE0NywgODQsIDEsIDIxOSwgMjUxLCA2MSwgODQsIDEsIAorICAgIDYxLCA4NCwgMSwgMjU1LCA3MywgODQsIDEsIDczLCA4NCwgMSwgMjM2LCAzMywgODQsIDEsIDcwLCA4NCwgMSwgMjE0LCAKKyAgICAxMTgsIDg0LCAxLCAxNDksIDE1MywgODQsIDEsIDE0OSwgMTU2LCA4NCwgMSwgMjUxLCAyLCA3NSwgODQsIDEsIDIxOSwgCisgICAgMjUxLCA3NSwgODQsIDEsIDc1LCA4NCwgMSwgMjU0LCAyMDEsIDg0LCAxLCAyNTEsIDIsIDc2LCA4NCwgMSwgMjE5LCAyNTEsIAorICAgIDc2LCA4NCwgMSwgNzYsIDg0LCAxLCAyNTMsIDE5MiwgODQsIDEsIDE3NiwgODQsIDEsIDIzNCwgMTMyLCA4NCwgMSwgMjQzLCAKKyAgICAxMzUsIDg0LCAxLCAyNDIsIDI0OSwgODQsIDEsIDIyOSwgNzcsIDg0LCAxLCAyNTEsIDMzLCA4NCwgMSwgMjUwLCAxNTcsIAorICAgIDg0LCAxLCAyMzUsIDE0MSwgODQsIDEsIDIzNSwgMTE0LCA4NCwgMSwgMjI3LCAxNjUsIDg0LCAxLCAyMTUsIDE1NiwgODQsIAorICAgIDEsIDIxNSwgMTQ0LCA4NCwgMSwgMjQ4LCAxMzUsIDg0LCAxLCAyNDgsIDExOSwgODQsIDEsIDIyOCwgMTEwLCA4NCwgMSwgCisgICAgMjE3LCAxMDUsIDg0LCAxLCAyMTYsIDIwOCwgODQsIDEsIDI0OCwgMjIxLCA4NCwgMSwgMjQ4LCAyNSwgODQsIDEsIDE5NywgCisgICAgODQsIDEsIDIyOCwgOTIsIDg0LCAxLCAxOTAsIDg0LCAxLCAyMjUsIDE0NywgODQsIDEsIDI1MiwgMTkxLCA4NCwgMSwgMjUyLCAKKyAgICAxOCwgODQsIDEsIDE4NCwgODQsIDEsIDE5MSwgODQsIDEsIDIwNSwgODQsIDEsIDIyMiwgMTc5LCA4NCwgMSwgMjMzLCAxMzUsIAorICAgIDg0LCAxLCAyMzIsIDE4NCwgODQsIDEsIDIzMiwgMTc1LCA4NCwgMSwgMjE0LCAyNywgODQsIDEsIDIyMCwgMTAyLCA4NCwgMSwgCisgICAgMjE4LCAyMjMsIDg0LCAxLCAyMDYsIDg0LCAxLCAxNjIsIDg0LCAyNSwgNSwgMjI2LCAyMzQsIDg0LCAyNSwgNSwgMjI2LCAKKyAgICAxODEsIDg0LCA1LCAyMjcsIDIwNSwgODQsIDUsIDI1MywgMTc1LCA4NCwgMjUsIDUsIDI1NSwgNzMsIDg0LCAyNSwgNSwgNzMsIAorICAgIDg0LCAyNSwgNSwgMjM2LCAzMywgODQsIDI1LCA1LCA3MCwgODQsIDI1LCA1LCAyMTQsIDExOCwgODQsIDI1LCA1LCAxNDksIAorICAgIDE1MywgODQsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCA4NCwgMjUsIDUsIDI1MSwgMiwgNzUsIDg0LCAyNSwgNSwgMjE5LCAKKyAgICAyNTEsIDc1LCA4NCwgMjUsIDUsIDc1LCA4NCwgMjUsIDUsIDI1NCwgMjAxLCA4NCwgMjUsIDUsIDI1MSwgMiwgNzYsIDg0LCAKKyAgICAyNSwgNSwgMjE5LCAyNTEsIDc2LCA4NCwgMjUsIDUsIDc2LCA4NCwgMjUsIDUsIDI1MywgMTkyLCA4NCwgNSwgMjEzLCAxNTIsIAorICAgIDg0LCAyNSwgNSwgMjI0LCAxODUsIDc1LCA4NCwgMjUsIDUsIDI1MywgMTcxLCA4NCwgMjI2LCAyMDQsIDg0LCAyMTgsIDExMSwgCisgICAgNSwgMjE0LCAyMTYsIDg0LCAyMTgsIDExMSwgNSwgMjU0LCA3NywgODQsIDI0MiwgMTM3LCAyNTUsIDE0LCA4NCwgMjU1LCAzLCAKKyAgICAyNTUsIDE0LCA4NCwgMjUsIDUsIDI1MSwgMiwgMTk5LCA3NSwgODQsIDI1LCA1LCAyMTQsIDIxNCwgODQsIDI1LCA1LCAyMTQsIAorICAgIDExNywgODQsIDEsIDIyNCwgODgsIDg0LCAxLCAyMzQsIDExNSwgODQsIDEsIDI0MiwgMjI2LCA4NCwgMSwgMjEwLCAxMTYsIAorICAgIDg0LCAxLCAyNDgsIDEyNCwgODQsIDEsIDIyMywgMzksIDg0LCAxLCAyNDQsIDE5NiwgODQsIDEsIDIxMCwgMTY4LCA4NCwgMSwgCisgICAgMTQ5LCAyMjIsIDE4MCwgODQsIDEsIDE0OSwgMjMyLCAxODUsIDg0LCAyNSwgNSwgMTQ5LCAxNTYsIDg0LCAyNSwgNSwgMTQ5LCAKKyAgICAyMzIsIDE4NSwgODQsIDI0OCwgMTc4LCA4NCwgNTIsIDI0OCwgMTc4LCA4NCwgMjEsIDIxMCwgODYsIDg0LCAyMSwgMTEwLCAKKyAgICA4NCwgMjEsIDEwNSwgODQsIDIxLCAxNTgsIDg0LCAyMSwgMTYxLCA4NCwgMjEsIDE4OSwgODQsIDIxLCAxOTQsIDg0LCAyMSwgCisgICAgMTk4LCA4NCwgMjEsIDE5NSwgODQsIDIxLCAyMDAsIDg0LCAyNTUsIDIxLCA1MCwgODQsIDUsIDEyNSwgMjE5LCAxNywgMjQ3LCAKKyAgICAxMjAsIDg0LCAxLCAyNTEsIDIsIDYxLCA4NCwgMSwgMjI2LCAyMzQsIDg0LCAxLCAyMjYsIDE4MSwgODQsIDEsIDI1MywgCisgICAgMTcxLCA4NCwgMSwgMjE0LCAyMTQsIDg0LCAxLCAyMTQsIDExNywgODQsIDEsIDIxMCwgODIsIDg0LCAxLCAxMTQsIDE5MSwgCisgICAgODQsIDEsIDI0MywgMjksIDg0LCAxLCAyMzUsIDk2LCA4NCwgMSwgMjQyLCAxODAsIDIxOCwgMTI5LCA4NCwgMSwgMjQ4LCAKKyAgICAxMjUsIDg0LCAxLCAyNTIsIDExMSwgMTQ2LCA1LCAyNTAsIDI1NSwgMTQ2LCA1LCAyNTQsIDc1LCAxNDYsIDUsIDIxMywgCisgICAgMTQ3LCAxNDYsIDEsIDYxLCAxNDYsIDEsIDI1NSwgNzMsIDE0NiwgMSwgNzMsIDE0NiwgMSwgMjM2LCAzMywgMTQ2LCAxLCAKKyAgICA3MCwgMTQ2LCAxLCAyMTQsIDExOCwgMTQ2LCAxLCAxNDksIDE1MywgMTQ2LCAxLCAxNDksIDE1NiwgMTQ2LCAxLCA3NSwgCisgICAgMTQ2LCAxLCAyNTQsIDIwMSwgMTQ2LCAxLCA3NiwgMTQ2LCAxLCAyNTMsIDE5MiwgMTQ2LCAxLCAxNzYsIDE0NiwgMSwgMjM0LCAKKyAgICAxMzIsIDE0NiwgMSwgMjQzLCAxMzUsIDE0NiwgMSwgMjQyLCAyNDksIDE0NiwgMSwgMjI5LCA3NywgMTQ2LCAxLCAyNTEsIAorICAgIDMzLCAxNDYsIDEsIDI1MCwgMTU3LCAxNDYsIDEsIDIzNSwgMTQxLCAxNDYsIDEsIDIzNSwgMTE0LCAxNDYsIDEsIDIyNywgCisgICAgMTY1LCAxNDYsIDEsIDIxNSwgMTU2LCAxNDYsIDEsIDIxNSwgMTQ0LCAxNDYsIDEsIDI0OCwgMTM1LCAxNDYsIDEsIDI0OCwgCisgICAgMTE5LCAxNDYsIDEsIDIyOCwgMTEwLCAxNDYsIDEsIDIxNywgMTA1LCAxNDYsIDEsIDIxNiwgMjA4LCAxNDYsIDEsIDI0OCwgCisgICAgMjIxLCAxNDYsIDEsIDI0OCwgMjUsIDE0NiwgMSwgMTk3LCAxNDYsIDEsIDE5MCwgMTQ2LCAxLCAyMjUsIDE0NywgMTQ2LCAxLCAKKyAgICAyNTIsIDE5MSwgMTQ2LCAxLCAyNTIsIDE4LCAxNDYsIDEsIDE4NCwgMTQ2LCAxLCAxOTEsIDE0NiwgMSwgMjA1LCAxNDYsIDEsIAorICAgIDIzMywgMTM1LCAxNDYsIDEsIDIyMCwgMTAyLCAxNDYsIDEsIDIxOCwgMjIzLCAxNDYsIDEsIDIwNiwgMTQ2LCAxLCAxNjIsIAorICAgIDE0NiwgNSwgMjI3LCAyMDUsIDE0NiwgNSwgMjUzLCAxNzUsIDE0NiwgMjUsIDUsIDI1NSwgNzMsIDE0NiwgMjUsIDUsIDczLCAKKyAgICAxNDYsIDI1LCA1LCAyMzYsIDMzLCAxNDYsIDI1LCA1LCA3MCwgMTQ2LCAyNSwgNSwgMjE0LCAxMTgsIDE0NiwgMjUsIDUsIAorICAgIDE0OSwgMTUzLCAxNDYsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCAxNDYsIDI1LCA1LCA3NSwgMTQ2LCAyNSwgNSwgMjU0LCAKKyAgICAyMDEsIDE0NiwgMjUsIDUsIDc2LCAxNDYsIDI1LCA1LCAyNTMsIDE5MiwgMTQ2LCA1LCAyMTMsIDE1MiwgMTQ2LCAxLCAyMzQsIAorICAgIDEyNCwgMjE3LCAxMDUsIDE0NiwgMjUzLCAxOTMsIDIzMywgMjMsIDc4LCAxNDYsIDEsIDIyMiwgMTc5LCAxNDYsIDEsIDIyMywgCisgICAgMzksIDE0NiwgMSwgMjEwLCAxNjgsIDE0NiwgMSwgMTQ5LCAyMjIsIDE4MCwgMTQ2LCAxLCAxNDksIDIzMiwgMTg1LCAxNDYsIAorICAgIDI1LCA1LCAxNDksIDE1NiwgMTQ2LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTQ2LCAyMSwgMjEwLCA4NiwgMTQ2LCAyMSwgCisgICAgMTEwLCAxNDYsIDIxLCAxMDUsIDE0NiwgMjEsIDE1OCwgMTQ2LCAyMSwgMTYxLCAxNDYsIDIxLCAxODksIDE0NiwgMjEsIAorICAgIDE5NCwgMTQ2LCAyMSwgMTk4LCAxNDYsIDIxLCAxOTUsIDE0NiwgMjEsIDIwMCwgMTQ2LCAxLCAyMjMsIDE4OCwgMiwgMjMwLCAKKyAgICAyMjQsIDI0NywgMjU0LCAxNDYsIDEsIDIyMywgMTg4LCAyLCAyMzIsIDEwOCwgMjQ3LCAyNTQsIDE0NiwgMjIyLCAxMTgsIAorICAgIDc4LCAxNDYsIDIyMiwgMTE4LCA1MCwgMTQ2LCAyNDksIDk4LCAyMjcsIDE5NywgMTEwLCAxNDYsIDI0OSwgOTgsIDIyNywgCisgICAgMTk3LCAxMDUsIDE0NiwgMjQ5LCA5OCwgMjI3LCAxOTcsIDE1OCwgMTQ2LCAyNDksIDk4LCAyMjcsIDE5NywgMTYxLCAxNDYsIAorICAgIDI0OSwgOTgsIDIyNywgMTk3LCAxMjMsIDIzMywgMTYsIDIxNiwgMjAxLCAyMTYsIDE5NiwgMjQ4LCA0OCwgMTQ2LCAyNDksIAorICAgIDk4LCAyNDgsIDQ5LCAyMTksIDExOSwgMTQ2LCAyMzUsIDE2MSwgMTQ2LCAyNDMsIDEwMywgNzgsIDE4MywgNSwgMjU0LCAKKyAgICAyNTQsIDI1MSwgMjQzLCAxODMsIDUsIDI1MSwgMjQzLCAxODMsIDUsIDIxMywgMTQ3LCAxODMsIDEsIDYxLCAxODMsIDEsIAorICAgIDI1NSwgNzMsIDE4MywgMSwgNzMsIDE4MywgMSwgMjM2LCAzMywgMTgzLCAxLCA3MCwgMTgzLCAxLCAyMTQsIDExOCwgMTgzLCAKKyAgICAxLCAyNDUsIDIwOSwgMTgzLCAxLCAyNTQsIDIwMSwgMTgzLCAxLCAyMjYsIDE4MywgMTgzLCAxLCAyNTMsIDE5MiwgMTgzLCAKKyAgICAxLCAxNzYsIDE4MywgMSwgMjM0LCAxMzIsIDE4MywgMSwgMjQzLCAxMzUsIDE4MywgMSwgMjQyLCAyNDksIDE4MywgMSwgCisgICAgMjI5LCA3NywgMTgzLCAxLCAyNTEsIDMzLCAxODMsIDEsIDI1MCwgMTU3LCAxODMsIDEsIDIzNSwgMTQxLCAxODMsIDEsIAorICAgIDIzNSwgMTE0LCAxODMsIDEsIDIyNywgMTY1LCAxODMsIDEsIDIxNSwgMTU2LCAxODMsIDEsIDIxNSwgMTQ0LCAxODMsIDEsIAorICAgIDI0OCwgMTM1LCAxODMsIDEsIDI0OCwgMTE5LCAxODMsIDEsIDIyOCwgMTEwLCAxODMsIDEsIDIxNywgMTA1LCAxODMsIDEsIAorICAgIDIxNiwgMjA4LCAxODMsIDEsIDI0OCwgMjIxLCAxODMsIDEsIDI0OCwgMjUsIDE4MywgMSwgMTk3LCAxODMsIDEsIDE5MCwgCisgICAgMTgzLCAxLCAyMjUsIDE0NywgMTgzLCAxLCAyNTIsIDE5MSwgMTgzLCAxLCAyNTIsIDE4LCAxODMsIDEsIDE4NCwgMTgzLCAxLCAKKyAgICAxOTEsIDE4MywgMSwgMjA1LCAxODMsIDEsIDIzMywgMTM1LCAxODMsIDEsIDIzMiwgMTg0LCAxODMsIDEsIDIxNCwgMjcsIAorICAgIDE4MywgMSwgMjIwLCAxMDIsIDE4MywgMSwgMjA2LCAxODMsIDEsIDE2MiwgMTgzLCA1LCAyMjcsIDIwNSwgMTgzLCAyNSwgNSwgCisgICAgMjU1LCA3MywgMTgzLCAyNSwgNSwgNzMsIDE4MywgMjUsIDUsIDIzNiwgMzMsIDE4MywgMjUsIDUsIDcwLCAxODMsIDI1LCA1LCAKKyAgICAyMTQsIDExOCwgMTgzLCAyNSwgNSwgMjQ1LCAyMDksIDE4MywgMjUsIDUsIDI1NCwgMjAxLCAxODMsIDI1LCA1LCAyMjYsIAorICAgIDE4MywgMTgzLCAyNSwgNSwgMjUzLCAxOTIsIDE4MywgNSwgMjEzLCAxNTIsIDE4MywgNSwgMjE0LCAyMTgsIDE4MywgMSwgCisgICAgMjM0LCAxMTUsIDE4MywgMSwgMjQyLCAyMjYsIDE4MywgMSwgMjEwLCAxMTYsIDE4MywgMSwgMjIyLCAxNzksIDE4MywgMSwgCisgICAgMjQ0LCAxOTYsIDE4MywgMjEsIDIxMCwgODYsIDE4MywgMjEsIDExMCwgMTgzLCAyMSwgMTA1LCAxODMsIDIxLCAxNTgsIAorICAgIDE4MywgMjEsIDE2MSwgMTgzLCAyMSwgMTg5LCAxODMsIDIxLCAxOTQsIDE4MywgMjEsIDE5OCwgMTgzLCAyMSwgMTk1LCAKKyAgICAxODMsIDIxLCAyMDAsIDE4MywgMjE2LCA3NCwgMTgzLCAyNTQsIDI1MywgMTgzLCAyMzUsIDE3OCwgMTgzLCAyMTQsIDE0NiwgCisgICAgMTgzLCAyNDUsIDE4MSwgMjI2LCAxODgsIDE4MywgNSwgMjExLCA3OCwgMTcxLCA1LCAyNTAsIDI1NSwgMTcxLCA1LCAyNTQsIAorICAgIDc1LCAxNzEsIDUsIDIxMywgMTQ3LCAxNzEsIDEsIDYxLCAxNzEsIDEsIDI1NSwgNzMsIDE3MSwgMSwgNzMsIDE3MSwgMSwgCisgICAgMjM2LCAzMywgMTcxLCAxLCA3MCwgMTcxLCAxLCAyMTQsIDExOCwgMTcxLCAxLCAxNDksIDE1MywgMTcxLCAxLCAxNDksIAorICAgIDE1NiwgMTcxLCAyNSwgMjUxLCAyLCA3NSwgMTcxLCAxLCA3NSwgMTcxLCAxLCAyNTQsIDIwMSwgMTcxLCAyNSwgMjUxLCAyLCAKKyAgICA3NiwgMTcxLCAxLCA3NiwgMTcxLCAxLCAyNTMsIDE5MiwgMTcxLCAxLCAxNzYsIDE3MSwgMSwgMjM0LCAxMzIsIDE3MSwgMSwgCisgICAgMjQzLCAxMzUsIDE3MSwgMSwgMjQyLCAyNDksIDE3MSwgMSwgMjI5LCA3NywgMTcxLCAxLCAyNTEsIDMzLCAxNzEsIDEsIAorICAgIDI1MCwgMTU3LCAxNzEsIDEsIDIzNSwgMTQxLCAxNzEsIDEsIDIzNSwgMTE0LCAxNzEsIDEsIDIyNywgMTY1LCAxNzEsIDEsIAorICAgIDIxNSwgMTU2LCAxNzEsIDEsIDIxNSwgMTQ0LCAxNzEsIDEsIDI0OCwgMTM1LCAxNzEsIDEsIDI0OCwgMTE5LCAxNzEsIDEsIAorICAgIDIyOCwgMTEwLCAxNzEsIDEsIDIxNywgMTA1LCAxNzEsIDEsIDIxNiwgMjA4LCAxNzEsIDEsIDI0OCwgMjIxLCAxNzEsIDEsIAorICAgIDI0OCwgMjUsIDE3MSwgMSwgMTk3LCAxNzEsIDEsIDE5MCwgMTcxLCAxLCAyMjUsIDE0NywgMTcxLCAxLCAyNTIsIDE5MSwgCisgICAgMTcxLCAxLCAyNTIsIDE4LCAxNzEsIDEsIDE4NCwgMTcxLCAxLCAxOTEsIDE3MSwgMSwgMjA1LCAxNzEsIDEsIDIzMywgMTM1LCAKKyAgICAxNzEsIDEsIDIzMiwgMTg0LCAxNzEsIDEsIDIxNCwgMjcsIDE3MSwgMSwgMjIwLCAxMDIsIDE3MSwgMSwgMjE4LCAyMjMsIAorICAgIDE3MSwgMSwgMjA2LCAxNzEsIDEsIDE2MiwgMTcxLCA1LCAyMjcsIDIwNSwgMTcxLCA1LCAyNTMsIDE3NSwgMTcxLCAyNSwgNSwgCisgICAgMjU1LCA3MywgMTcxLCAyNSwgNSwgNzMsIDE3MSwgMjUsIDUsIDIzNiwgMzMsIDE3MSwgMjUsIDUsIDcwLCAxNzEsIDI1LCA1LCAKKyAgICAyMTQsIDExOCwgMTcxLCAyNSwgNSwgMTQ5LCAxNTMsIDE3MSwgMjUsIDUsIDE0OSwgMjIyLCAxODAsIDE3MSwgMjUsIDUsIAorICAgIDI1MSwgMiwgNzUsIDE3MSwgMjUsIDUsIDc1LCAxNzEsIDI1LCA1LCAyNTQsIDIwMSwgMTcxLCAyNSwgNSwgMjUxLCAyLCA3NiwgCisgICAgMTcxLCAyNSwgNSwgNzYsIDE3MSwgMjUsIDUsIDI1MywgMTkyLCAxNzEsIDUsIDIxMywgMTUyLCAxNzEsIDIyNiwgMjA0LCAKKyAgICAxNzEsIDEsIDE0OSwgMjIyLCAxODAsIDE3MSwgMSwgMTQ5LCAyMzIsIDE4NSwgMTcxLCAyNSwgNSwgMTQ5LCAxNTYsIDE3MSwgCisgICAgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDE3MSwgMjEsIDIxMCwgODYsIDE3MSwgMjEsIDExMCwgMTcxLCAyMSwgMTA1LCAxNzEsIAorICAgIDIxLCAxNTgsIDE3MSwgMjEsIDE2MSwgMTcxLCAyMSwgMTg5LCAxNzEsIDIxLCAxOTQsIDE3MSwgMjEsIDE5OCwgMTcxLCAyMSwgCisgICAgMTk1LCAxNzEsIDIxLCAyMDAsIDE3MSwgMjU1LCAyMSwgNTAsIDE3MSwgMjIyLCAxMTgsIDUwLCAxNTcsIDUsIDI1MCwgMjU1LCAKKyAgICAxNTcsIDUsIDI1NCwgNzUsIDE1NywgNSwgMjEzLCAxNDcsIDE1NywgMSwgNjEsIDE1NywgMSwgMjU1LCA3MywgMTU3LCAxLCAKKyAgICA3MywgMTU3LCAxLCAyMzYsIDMzLCAxNTcsIDEsIDcwLCAxNTcsIDEsIDIxNCwgMTE4LCAxNTcsIDEsIDE0OSwgMTUzLCAxNTcsIAorICAgIDEsIDE0OSwgMTU2LCAxNTcsIDEsIDc1LCAxNTcsIDEsIDI1NCwgMjAxLCAxNTcsIDEsIDc2LCAxNTcsIDEsIDI1MywgMTkyLCAKKyAgICAxNTcsIDEsIDE3NiwgMTU3LCAxLCAyMzQsIDEzMiwgMTU3LCAxLCAyNDMsIDEzNSwgMTU3LCAxLCAyNDIsIDI0OSwgMTU3LCAKKyAgICAxLCAyMjksIDc3LCAxNTcsIDEsIDI1MSwgMzMsIDE1NywgMSwgMjUwLCAxNTcsIDE1NywgMSwgMjM1LCAxNDEsIDE1NywgMSwgCisgICAgMjM1LCAxMTQsIDE1NywgMSwgMjI3LCAxNjUsIDE1NywgMSwgMjE1LCAxNTYsIDE1NywgMSwgMjE1LCAxNDQsIDE1NywgMSwgCisgICAgMjQ4LCAxMzUsIDE1NywgMSwgMjQ4LCAxMTksIDE1NywgMSwgMjI4LCAxMTAsIDE1NywgMSwgMjE3LCAxMDUsIDE1NywgMSwgCisgICAgMjE2LCAyMDgsIDE1NywgMSwgMjQ4LCAyMjEsIDE1NywgMSwgMjQ4LCAyNSwgMTU3LCAxLCAxOTcsIDE1NywgMSwgMTkwLCAKKyAgICAxNTcsIDEsIDIyNSwgMTQ3LCAxNTcsIDEsIDI1MiwgMTkxLCAxNTcsIDEsIDI1MiwgMTgsIDE1NywgMSwgMTg0LCAxNTcsIDEsIAorICAgIDE5MSwgMTU3LCAxLCAyMDUsIDE1NywgMSwgMjMzLCAxMzUsIDE1NywgMSwgMjMyLCAxODQsIDE1NywgMSwgMjE0LCAyNywgCisgICAgMTU3LCAxLCAyMjAsIDEwMiwgMTU3LCAxLCAyMTgsIDIyMywgMTU3LCAxLCAyMDYsIDE1NywgMSwgMTYyLCAxNTcsIDUsIAorICAgIDIyNywgMjA1LCAxNTcsIDUsIDI1MywgMTc1LCAxNTcsIDI1LCA1LCAyNTUsIDczLCAxNTcsIDI1LCA1LCA3MywgMTU3LCAyNSwgCisgICAgNSwgMjM2LCAzMywgMTU3LCAyNSwgNSwgNzAsIDE1NywgMjUsIDUsIDIxNCwgMTE4LCAxNTcsIDI1LCA1LCAxNDksIDE1MywgCisgICAgMTU3LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgMTU3LCAyNSwgNSwgNzUsIDE1NywgMjUsIDUsIDI1NCwgMjAxLCAxNTcsIDI1LCAKKyAgICA1LCA3NiwgMTU3LCAyNSwgNSwgMjUzLCAxOTIsIDE1NywgNSwgMjEzLCAxNTIsIDE1NywgMjU0LCAyMDIsIDIzMywgMjMsIAorICAgIDc4LCAxNTcsIDI1MywgMTkzLCAyMzMsIDIzLCA3OCwgMTU3LCAxLCAyMjIsIDE3OSwgMTU3LCAxLCAyMjMsIDM5LCAxNTcsIAorICAgIDEsIDIxMCwgMTY4LCAxNTcsIDEsIDE0OSwgMjIyLCAxODAsIDE1NywgMSwgMTQ5LCAyMzIsIDE4NSwgMTU3LCAyNSwgNSwgCisgICAgMTQ5LCAxNTYsIDE1NywgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDE1NywgMjEsIDIxMCwgODYsIDE1NywgMjEsIDExMCwgMTU3LCAKKyAgICAyMSwgMTA1LCAxNTcsIDIxLCAxNTgsIDE1NywgMjEsIDE2MSwgMTU3LCAyMSwgMTg5LCAxNTcsIDIxLCAxOTQsIDE1NywgMjEsIAorICAgIDE5OCwgMTU3LCAyMSwgMTk1LCAxNTcsIDIxLCAyMDAsIDE1NywgMjM1LCAxNjEsIDE1NywgMSwgMjEyLCA2NSwgMTU3LCAKKyAgICAyNDQsIDIsIDEyMywgMjI0LCAyMSwgMTU3LCAyNDQsIDIsIDEyMywgMjQyLCAyNywgMTU3LCAyNDQsIDIsIDEzNCwgMjI0LCAKKyAgICAxOSwgMTU3LCAyNDQsIDIsIDEyMywgMjE5LCAxMTcsIDE1NywgMjQ0LCAyLCAxMjMsIDI0NSwgMTg4LCAxNTcsIDI0NCwgMiwgCisgICAgMTM0LCAyMTksIDExNiwgMzYsIDUsIDI1NCwgNzUsIDM2LCA1LCAyMTMsIDE0NywgMzYsIDEsIDYxLCAzNiwgMSwgMjU1LCAKKyAgICA3MywgMzYsIDEsIDczLCAzNiwgMSwgMjM2LCAzMywgMzYsIDEsIDcwLCAzNiwgMSwgMjE0LCAxMTgsIDM2LCAxLCA3NSwgMzYsIAorICAgIDEsIDI0NSwgMjA5LCAzNiwgMSwgMjU0LCAyMDEsIDM2LCAxLCA3NiwgMzYsIDEsIDIyNiwgMTgzLCAzNiwgMSwgMjUzLCAKKyAgICAxOTIsIDM2LCAxLCAxNzYsIDM2LCAxLCAyMjksIDc3LCAzNiwgMSwgMjUxLCAzMywgMzYsIDEsIDIzNSwgMTQxLCAzNiwgMSwgCisgICAgMjI3LCAxNjUsIDM2LCAxLCAyMTUsIDE1NiwgMzYsIDEsIDIyOCwgMTEwLCAzNiwgMSwgMjE3LCAxMDUsIDM2LCAxLCAxOTcsIAorICAgIDM2LCAxLCAyMjgsIDkyLCAzNiwgMSwgMTkwLCAzNiwgMSwgMTg0LCAzNiwgMSwgMTkxLCAzNiwgMSwgMjA1LCAzNiwgMSwgCisgICAgMjIyLCAxNzksIDM2LCAxLCAyMzMsIDEzNSwgMzYsIDEsIDIzMiwgMTg0LCAzNiwgMSwgMjMyLCAxNzUsIDM2LCAxLCAyMTQsIAorICAgIDI3LCAzNiwgMSwgMjIwLCAxMDIsIDM2LCAxLCAyMTgsIDIyMywgMzYsIDEsIDIwNiwgMzYsIDEsIDE2MiwgMzYsIDI1LCA1LCAKKyAgICAyNTUsIDczLCAzNiwgMjUsIDUsIDczLCAzNiwgMjUsIDUsIDIzNiwgMzMsIDM2LCAyNSwgNSwgNzAsIDM2LCAyNSwgNSwgCisgICAgMjE0LCAxMTgsIDM2LCAyNSwgNSwgNzUsIDM2LCAyNSwgNSwgMjQ1LCAyMDksIDM2LCAyNSwgNSwgMjU0LCAyMDEsIDM2LCAKKyAgICAyNSwgNSwgNzYsIDM2LCAyNSwgNSwgMjI2LCAxODMsIDM2LCAyNSwgNSwgMjUzLCAxOTIsIDM2LCA1LCAyMTMsIDE1MiwgMzYsIAorICAgIDIyNiwgMjA0LCAzNiwgMjUzLCAxOTMsIDIzMywgMjMsIDc4LCAzNiwgMjEsIDIxMCwgODYsIDM2LCAyMSwgMTEwLCAzNiwgCisgICAgMjEsIDEwNSwgMzYsIDIxLCAxNTgsIDM2LCAyMSwgMTYxLCAzNiwgMjEsIDE4OSwgMzYsIDIxLCAxOTQsIDM2LCAyMSwgMTk4LCAKKyAgICAzNiwgMjEsIDE5NSwgMzYsIDIxLCAyMDAsIDM2LCA1NCwgMjE2LCAyNDcsIDM2LCA1NCwgMTIzLCAyNDAsIDIxMCwgMzYsIAorICAgIDU0LCAxMjMsIDIxNiwgMTQ3LCAzNiwgMjQ4LCAxNDYsIDUwLCAzNiwgMjMwLCAxMzUsIDUwLCAzNiwgMjExLCA0NSwgNTAsIAorICAgIDM2LCAyNDgsIDg3LCA1MCwgMzYsIDI0OSwgMTM5LCA1MCwgMzYsIDI1MywgMjM4LCA3NywgNTAsIDM2LCAyMjIsIDExOCwgCisgICAgNTAsIDM2LCA1NCwgNTAsIDE0OCwgNSwgMjUwLCAyNTUsIDE0OCwgNSwgMjU0LCA3NSwgMTQ4LCA1LCAyMTMsIDE0NywgMTQ4LCAKKyAgICAxLCA2MSwgMTQ4LCAxLCAyNTUsIDczLCAxNDgsIDEsIDczLCAxNDgsIDEsIDIzNiwgMzMsIDE0OCwgMSwgNzAsIDE0OCwgMSwgCisgICAgMjE0LCAxMTgsIDE0OCwgMSwgMTQ5LCAxNTMsIDE0OCwgMSwgMTQ5LCAxNTYsIDE0OCwgMSwgNzUsIDE0OCwgMSwgMjQ1LCAKKyAgICAyMDksIDE0OCwgMSwgMjU0LCAyMDEsIDE0OCwgMSwgNzYsIDE0OCwgMSwgMjI2LCAxODMsIDE0OCwgMSwgMjUzLCAxOTIsIAorICAgIDE0OCwgMSwgMTc2LCAxNDgsIDEsIDIzNCwgMTMyLCAxNDgsIDEsIDI0MywgMTM1LCAxNDgsIDEsIDI0MiwgMjQ5LCAxNDgsIAorICAgIDEsIDIyOSwgNzcsIDE0OCwgMSwgMjUxLCAzMywgMTQ4LCAxLCAyNTAsIDE1NywgMTQ4LCAxLCAyMzUsIDE0MSwgMTQ4LCAxLCAKKyAgICAyMzUsIDExNCwgMTQ4LCAxLCAyMjcsIDE2NSwgMTQ4LCAxLCAyMTUsIDE1NiwgMTQ4LCAxLCAyMTUsIDE0NCwgMTQ4LCAxLCAKKyAgICAyNDgsIDEzNSwgMTQ4LCAxLCAyNDgsIDExOSwgMTQ4LCAxLCAyMjgsIDExMCwgMTQ4LCAxLCAyMTcsIDEwNSwgMTQ4LCAxLCAKKyAgICAyMTYsIDIwOCwgMTQ4LCAxLCAyNDgsIDIyMSwgMTQ4LCAxLCAyNDgsIDI1LCAxNDgsIDEsIDE5NywgMTQ4LCAxLCAxOTAsIAorICAgIDE0OCwgMSwgMjI1LCAxNDcsIDE0OCwgMSwgMjUyLCAxOTEsIDE0OCwgMSwgMjUyLCAxOCwgMTQ4LCAxLCAxODQsIDE0OCwgMSwgCisgICAgMTkxLCAxNDgsIDEsIDIwNSwgMTQ4LCAxLCAyMjIsIDE3OSwgMTQ4LCAxLCAyMzMsIDEzNSwgMTQ4LCAxLCAyMzIsIDE4NCwgCisgICAgMTQ4LCAxLCAyMTQsIDI3LCAxNDgsIDEsIDIyMCwgMTAyLCAxNDgsIDEsIDIxOCwgMjIzLCAxNDgsIDEsIDIwNiwgMTQ4LCAxLCAKKyAgICAxNjIsIDE0OCwgNSwgMjUzLCAxNzUsIDE0OCwgMjUsIDUsIDI1NSwgNzMsIDE0OCwgMjUsIDUsIDczLCAxNDgsIDI1LCA1LCAKKyAgICAyMzYsIDMzLCAxNDgsIDI1LCA1LCA3MCwgMTQ4LCAyNSwgNSwgMjE0LCAxMTgsIDE0OCwgMjUsIDUsIDE0OSwgMTUzLCAxNDgsIAorICAgIDI1LCA1LCAxNDksIDIyMiwgMTgwLCAxNDgsIDI1LCA1LCA3NSwgMTQ4LCAyNSwgNSwgMjQ1LCAyMDksIDE0OCwgMjUsIDUsIAorICAgIDI1NCwgMjAxLCAxNDgsIDI1LCA1LCA3NiwgMTQ4LCAyNSwgNSwgMjI2LCAxODMsIDE0OCwgMjUsIDUsIDI1MywgMTkyLCAKKyAgICAxNDgsIDUsIDIxMywgMTUyLCAxNDgsIDIzMywgMjMsIDc4LCAxNDgsIDI1NCwgMjAyLCAyMzMsIDIzLCA3OCwgMTQ4LCAxLCAKKyAgICAyMTUsIDE4MywgMTQ4LCAxLCAyNDYsIDM4LCAxNDgsIDEsIDE0OSwgMjIyLCAxODAsIDE0OCwgMSwgMTQ5LCAyMzIsIDE4NSwgCisgICAgMTQ4LCAyNSwgNSwgMTQ5LCAxNTYsIDE0OCwgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDE0OCwgMjEsIDIxMCwgODYsIDE0OCwgCisgICAgMjEsIDExMCwgMTQ4LCAyMSwgMTA1LCAxNDgsIDIxLCAxNTgsIDE0OCwgMjEsIDE2MSwgMTQ4LCAyMSwgMTg5LCAxNDgsIDIxLCAKKyAgICAxOTQsIDE0OCwgMjEsIDE5OCwgMTQ4LCAyMSwgMTk1LCAxNDgsIDIxLCAyMDAsIDE0OCwgMjQ0LCAyLCAyMSwgMjEwLCA4NywgCisgICAgMzEsIDIyNiwgMjM3LCAyMjQsIDIyMywgNjQsIDE2MSwgMTQ4LCAyNDQsIDIsIDIxLCAxMjMsIDMxLCAyMjYsIDIzNywgMjI0LCAKKyAgICAyMjMsIDY0LCAxNjEsIDE0OCwgMjQ0LCAyLCAyMSwgMTEzLCAzMSwgMjI2LCAyMzcsIDIyNCwgMjIzLCA2NCwgMTYxLCAxNDgsIAorICAgIDI0NCwgMiwgMjEsIDEzNCwgMzEsIDIyNiwgMjM3LCAyMjQsIDIyMywgNjQsIDE2MSwgMTQ4LCAyNDQsIDIsIDIxLCAxMjMsIAorICAgIDMxLCAyNDUsIDQyLCAyMjQsIDIyMywgNjQsIDE2MSwgMTQ4LCAyNDQsIDIsIDIxLCAxMTMsIDMxLCAyNDUsIDQyLCAyMjQsIAorICAgIDIyMywgNjQsIDE2MSwgMTQ4LCAyNDQsIDIsIDIxLCAxMzQsIDMxLCAyNDUsIDQyLCAyMjQsIDIyMywgNjQsIDE2MSwgMTQ4LCAKKyAgICA1LCAyMTUsIDg0LCAxNjUsIDUsIDI1NCwgNzUsIDE2NSwgNSwgMjEzLCAxNDcsIDE2NSwgMSwgNjEsIDE2NSwgMSwgMjU1LCAKKyAgICA3MywgMTY1LCAxLCA3MywgMTY1LCAxLCAyMzYsIDMzLCAxNjUsIDEsIDcwLCAxNjUsIDEsIDIxNCwgMTE4LCAxNjUsIDEsIAorICAgIDE0OSwgMTUzLCAxNjUsIDEsIDE0OSwgMTU2LCAxNjUsIDEsIDc1LCAxNjUsIDEsIDI0NSwgMjA5LCAxNjUsIDEsIDI1NCwgCisgICAgMjAxLCAxNjUsIDEsIDc2LCAxNjUsIDEsIDIyNiwgMTgzLCAxNjUsIDEsIDI1MywgMTkyLCAxNjUsIDEsIDE3NiwgMTY1LCAxLCAKKyAgICAyMzQsIDEzMiwgMTY1LCAxLCAyNDMsIDEzNSwgMTY1LCAxLCAyNDIsIDI0OSwgMTY1LCAxLCAyMjksIDc3LCAxNjUsIDEsIAorICAgIDI1MSwgMzMsIDE2NSwgMSwgMjUwLCAxNTcsIDE2NSwgMSwgMjM1LCAxNDEsIDE2NSwgMSwgMjM1LCAxMTQsIDE2NSwgMSwgCisgICAgMjI3LCAxNjUsIDE2NSwgMSwgMjE1LCAxNTYsIDE2NSwgMSwgMjE1LCAxNDQsIDE2NSwgMSwgMjQ4LCAxMzUsIDE2NSwgMSwgCisgICAgMjQ4LCAxMTksIDE2NSwgMSwgMjI4LCAxMTAsIDE2NSwgMSwgMjE3LCAxMDUsIDE2NSwgMSwgMjE2LCAyMDgsIDE2NSwgMSwgCisgICAgMjQ4LCAyMjEsIDE2NSwgMSwgMjQ4LCAyNSwgMTY1LCAxLCAxOTcsIDE2NSwgMSwgMTkwLCAxNjUsIDEsIDIyNSwgMTQ3LCAKKyAgICAxNjUsIDEsIDI1MiwgMTkxLCAxNjUsIDEsIDI1MiwgMTgsIDE2NSwgMSwgMTg0LCAxNjUsIDEsIDE5MSwgMTY1LCAxLCAyMDUsIAorICAgIDE2NSwgMSwgMjIyLCAxNzksIDE2NSwgMSwgMjMzLCAxMzUsIDE2NSwgMSwgMjMyLCAxODQsIDE2NSwgMSwgMjE0LCAyNywgCisgICAgMTY1LCAxLCAyMjAsIDEwMiwgMTY1LCAxLCAyMTgsIDIyMywgMTY1LCAxLCAyMDYsIDE2NSwgMSwgMTYyLCAxNjUsIDUsIAorICAgIDIyNywgMjA1LCAxNjUsIDUsIDI1MywgMTc1LCAxNjUsIDI1LCA1LCAyNTUsIDczLCAxNjUsIDI1LCA1LCA3MywgMTY1LCAyNSwgCisgICAgNSwgMjM2LCAzMywgMTY1LCAyNSwgNSwgNzAsIDE2NSwgMjUsIDUsIDIxNCwgMTE4LCAxNjUsIDI1LCA1LCAxNDksIDE1MywgCisgICAgMTY1LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgMTY1LCAyNSwgNSwgNzUsIDE2NSwgMjUsIDUsIDI0NSwgMjA5LCAxNjUsIDI1LCAKKyAgICA1LCAyNTQsIDIwMSwgMTY1LCAyNSwgNSwgNzYsIDE2NSwgMjUsIDUsIDIyNiwgMTgzLCAxNjUsIDI1LCA1LCAyNTMsIDE5MiwgCisgICAgMTY1LCA1LCAyMTMsIDE1MiwgMTY1LCAyMzMsIDIzLCA3OCwgMTY1LCAyNTQsIDIwMiwgMjMzLCAyMywgNzgsIDE2NSwgMSwgCisgICAgMjQ0LCAxOTYsIDE2NSwgMSwgMTQ5LCAyMjIsIDE4MCwgMTY1LCAxLCAxNDksIDIzMiwgMTg1LCAxNjUsIDI1LCA1LCAxNDksIAorICAgIDE1NiwgMTY1LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTY1LCAyMSwgMjEwLCA4NiwgMTY1LCAyMSwgMTEwLCAxNjUsIDIxLCAKKyAgICAxMDUsIDE2NSwgMjEsIDE1OCwgMTY1LCAyMSwgMTYxLCAxNjUsIDIxLCAxODksIDE2NSwgMjEsIDE5NCwgMTY1LCAyMSwgCisgICAgMTk4LCAxNjUsIDIxLCAxOTUsIDE2NSwgMjEsIDIwMCwgMTY1LCA1LCAyMzUsIDEwMiwgMTY1LCA1LCAyMTQsIDE2MSwgMTM2LCAKKyAgICA1LCAyNTQsIDc1LCAxMzYsIDUsIDIxMywgMTQ3LCAxMzYsIDEsIDYxLCAxMzYsIDEsIDI1NSwgNzMsIDEzNiwgMSwgNzMsIAorICAgIDEzNiwgMSwgMjM2LCAzMywgMTM2LCAxLCA3MCwgMTM2LCAxLCAyMTQsIDExOCwgMTM2LCAxLCAxNDksIDE1MywgMTM2LCAxLCAKKyAgICAxNDksIDE1NiwgMTM2LCAxLCA3NSwgMTM2LCAxLCAyNDUsIDIwOSwgMTM2LCAxLCAyNTQsIDIwMSwgMTM2LCAxLCA3NiwgCisgICAgMTM2LCAxLCAyMjYsIDE4MywgMTM2LCAxLCAyNTMsIDE5MiwgMTM2LCAxLCAxNzYsIDEzNiwgMSwgMjM0LCAxMzIsIDEzNiwgCisgICAgMSwgMjQzLCAxMzUsIDEzNiwgMSwgMjQyLCAyNDksIDEzNiwgMSwgMjI5LCA3NywgMTM2LCAxLCAyNTEsIDMzLCAxMzYsIDEsIAorICAgIDI1MCwgMTU3LCAxMzYsIDEsIDIzNSwgMTQxLCAxMzYsIDEsIDIzNSwgMTE0LCAxMzYsIDEsIDIyNywgMTY1LCAxMzYsIDEsIAorICAgIDIxNSwgMTU2LCAxMzYsIDEsIDIxNSwgMTQ0LCAxMzYsIDEsIDI0OCwgMTM1LCAxMzYsIDEsIDI0OCwgMTE5LCAxMzYsIDEsIAorICAgIDIyOCwgMTEwLCAxMzYsIDEsIDIxNywgMTA1LCAxMzYsIDEsIDIxNiwgMjA4LCAxMzYsIDEsIDI0OCwgMjIxLCAxMzYsIDEsIAorICAgIDI0OCwgMjUsIDEzNiwgMSwgMTk3LCAxMzYsIDEsIDIyOCwgOTIsIDEzNiwgMSwgMTkwLCAxMzYsIDEsIDIyNSwgMTQ3LCAKKyAgICAxMzYsIDEsIDI1MiwgMTkxLCAxMzYsIDEsIDI1MiwgMTgsIDEzNiwgMSwgMTg0LCAxMzYsIDEsIDE5MSwgMTM2LCAxLCAyMDUsIAorICAgIDEzNiwgMSwgMjIyLCAxNzksIDEzNiwgMSwgMjMzLCAxMzUsIDEzNiwgMSwgMjMyLCAxODQsIDEzNiwgMSwgMjMyLCAxNzUsIAorICAgIDEzNiwgMSwgMjE0LCAyNywgMTM2LCAxLCAyMjAsIDEwMiwgMTM2LCAxLCAyMTgsIDIyMywgMTM2LCAxLCAyMDYsIDEzNiwgMSwgCisgICAgMTYyLCAxMzYsIDEsIDIxNSwgMTI1LCAxMzYsIDUsIDI1MywgMTc1LCAxMzYsIDI1LCA1LCAyNTUsIDczLCAxMzYsIDI1LCA1LCAKKyAgICA3MywgMTM2LCAyNSwgNSwgMjM2LCAzMywgMTM2LCAyNSwgNSwgNzAsIDEzNiwgMjUsIDUsIDIxNCwgMTE4LCAxMzYsIDI1LCAKKyAgICA1LCAxNDksIDE1MywgMTM2LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgMTM2LCAyNSwgNSwgNzUsIDEzNiwgMjUsIDUsIDI0NSwgCisgICAgMjA5LCAxMzYsIDI1LCA1LCAyNTQsIDIwMSwgMTM2LCAyNSwgNSwgNzYsIDEzNiwgMjUsIDUsIDIyNiwgMTgzLCAxMzYsIDI1LCAKKyAgICA1LCAyNTMsIDE5MiwgMTM2LCA1LCAyMTMsIDE1MiwgMTM2LCAxLCA1OSwgMjIzLCA3MywgMTM2LCAyNTMsIDE5MywgMjMzLCAKKyAgICAyMywgNzgsIDEzNiwgMSwgMTQ5LCAyMjIsIDE4MCwgMTM2LCAxLCAxNDksIDIzMiwgMTg1LCAxMzYsIDI1LCA1LCAxNDksIAorICAgIDE1NiwgMTM2LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTM2LCAyMSwgMjEwLCA4NiwgMTM2LCAyMSwgMTEwLCAxMzYsIDIxLCAKKyAgICAxMDUsIDEzNiwgMjEsIDE1OCwgMTM2LCAyMSwgMTYxLCAxMzYsIDIxLCAxODksIDEzNiwgMjEsIDE5NCwgMTM2LCAyMSwgCisgICAgMTk4LCAxMzYsIDIxLCAxOTUsIDEzNiwgMjEsIDIwMCwgMTM2LCA1NCwgMjE2LCAyNDcsIDEzNiwgNTQsIDEyMywgMjQwLCAKKyAgICAyMTAsIDEzNiwgNTQsIDEyMywgMjE2LCAxNDcsIDEzNiwgMjQ0LCAyLCAxMjMsIDIyNCwgMjEsIDEzNiwgMjQ0LCAyLCAxMjMsIAorICAgIDI0MiwgMjcsIDEzNiwgMjQ0LCAyLCAxMzQsIDIyNCwgMTksIDEzNiwgMjQ4LCAxNTAsIDc4LCAxMzYsIDEsIDI1MCwgOTksIAorICAgIDIyOCwgMTExLCAxMzYsIDEsIDI1MCwgOTksIDIzMCwgMjUsIDEzNiwgMSwgMjUwLCA5OSwgMjIyLCAxODAsIDEzNiwgMSwgCisgICAgMjUwLCA5OSwgMTU2LCAxMzYsIDEsIDI1MCwgOTksIDIzMiwgMTg1LCAxMzYsIDEsIDI1MCwgOTksIDIzNSwgMjMsIDE3NSwgCisgICAgNSwgMjU0LCA3NCwgMTc1LCA1LCAyMTMsIDE0NiwgMTc1LCAxLCAyNTMsIDE2NSwgMTc1LCAxLCAyNTUsIDI3LCAxNzUsIDEsIAorICAgIDI1NCwgMjIzLCAxNzUsIDEsIDI1NCwgMjM4LCAxNzUsIDEsIDIzNSwgMTUxLCAxNzUsIDEsIDIzNiwgMzIsIDE3NSwgMSwgCisgICAgMjE0LCAxMTAsIDE3NSwgMSwgMjE0LCAxMTIsIDE3NSwgMSwgMjM1LCAxNzMsIDE3NSwgMSwgMjM1LCAxNzQsIDE3NSwgMSwgCisgICAgMjM2LCAxOCwgMTc1LCAxLCAyMzYsIDIwLCAxNzUsIDEsIDI0NSwgMTcsIDE3NSwgMSwgMjQ1LCAyMDQsIDE3NSwgMSwgMjU0LCAKKyAgICAxODgsIDE3NSwgMSwgMjI2LCAxMDgsIDE3NSwgMSwgMjI2LCAxNzcsIDE3NSwgMSwgMjUzLCAxNzgsIDE3NSwgMSwgMjU0LCAKKyAgICAxNDYsIDIzNCwgMTg3LCAxNzUsIDEsIDIzMSwgMjA5LCAyMzQsIDE4NywgMTc1LCAxLCAyNTQsIDE0NiwgMjQzLCA4MiwgCisgICAgMTc1LCAxLCAyMzEsIDIwOSwgMjQzLCA4MiwgMTc1LCAxLCAyMzQsIDIyOSwgMjI5LCAyMjIsIDE3NSwgMSwgMjIxLCAyMzYsIAorICAgIDI0MywgODIsIDE3NSwgMSwgMjU0LCAxNDYsIDI1MCwgMjE2LCAxNzUsIDEsIDIzMSwgMjA5LCAyNTAsIDIxNiwgMTc1LCAxLCAKKyAgICAyNTQsIDE0NiwgMjM1LCAxMjcsIDE3NSwgMSwgMjMxLCAyMDksIDIzNSwgMTI3LCAxNzUsIDEsIDIxNywgOTgsIDIyOSwgCisgICAgMjIyLCAxNzUsIDEsIDIxNywgOTgsIDIyMSwgMjM1LCAyMjksIDIyMywgMTc1LCAxLCAyMjEsIDIzNiwgMjM1LCAxMjcsIAorICAgIDE3NSwgMSwgMjU0LCAxNDYsIDIxNSwgMTUyLCAxNzUsIDEsIDIzMSwgMjA5LCAyMTUsIDE1MiwgMTc1LCAxLCAyNTQsIDE0NiwgCisgICAgMjQ4LCAxMjYsIDE3NSwgMSwgMjMxLCAyMDksIDI0OCwgMTI2LCAxNzUsIDEsIDIzMCwgNTMsIDIyOSwgMTgwLCAxNzUsIDEsIAorICAgIDIyMSwgMjM2LCAyNDgsIDEyNiwgMTc1LCAxLCAyNTQsIDE0NiwgMjE3LCAzMCwgMTc1LCAxLCAyMzEsIDIwOSwgMjE3LCAzMCwgCisgICAgMTc1LCAxLCAyNTQsIDE0NiwgMjQ4LCAxNDQsIDE3NSwgMSwgMjMxLCAyMDksIDI0OCwgMTQ0LCAxNzUsIDEsIDI0OCwgMTc0LCAKKyAgICAyMjksIDE4MCwgMTc1LCAxLCAyMjEsIDIzNiwgMjQ4LCAxNDQsIDE3NSwgMSwgMjU0LCAxNDYsIDIyNSwgMjI4LCAxNzUsIDEsIAorICAgIDIzMSwgMjA5LCAyMjUsIDIyOCwgMTc1LCAxLCAyNTQsIDE0NiwgMjUyLCAxMTIsIDE3NSwgMSwgMjMxLCAyMDksIDI1MiwgCisgICAgMTEyLCAxNzUsIDEsIDIzMSwgMTMxLCAxNzUsIDEsIDI1NCwgMTMxLCAyNTIsIDExMiwgMTc1LCAxLCAyMTEsIDUxLCAxNzUsIAorICAgIDEsIDIyMywgMTMzLCAxNzUsIDEsIDI0OCwgMTc0LCAyMzMsIDY3LCAxNzUsIDEsIDIxNCwgMSwgMTc1LCAxLCAyMTcsIDk4LCAKKyAgICAyMjEsIDIxMCwgMTc1LCAxLCAyMzAsIDUzLCAyMjEsIDIxMCwgMTc1LCAxLCAyNDgsIDE3NCwgMjIxLCAyMTAsIDE3NSwgMSwgCisgICAgMjQxLCAyNDIsIDE3NSwgMSwgMjMwLCA1MywgMjMzLCA2NywgMTc1LCAxLCAyNDQsIDE1NiwgMTc1LCA1LCAyNTQsIDE3NywgCisgICAgMTc1LCAyNSwgNSwgMjU0LCAyMzMsIDE3NSwgMjUsIDUsIDIzNCwgMTU1LCAyNTQsIDI0MCwgMTc1LCAyNSwgNSwgMjQ3LCAKKyAgICAyMjgsIDI1NCwgMjQwLCAxNzUsIDI1LCA1LCAyMzQsIDE1NSwgMjM1LCAxNzAsIDE3NSwgMjUsIDUsIDI0NywgMjI4LCAyMzUsIAorICAgIDE3MCwgMTc1LCAyNSwgNSwgMjM0LCAxNTUsIDIyNiwgODgsIDE3NSwgMjUsIDUsIDI0NywgMjI4LCAyMjYsIDg4LCAxNzUsIAorICAgIDI1LCA1LCAyNDMsIDEyNCwgMTc1LCAyNSwgNSwgMjM0LCAxNSwgMTc1LCAyNSwgNSwgMjQ3LCAyMjgsIDIzNCwgMTUsIDE3NSwgCisgICAgMjUsIDUsIDIzNCwgMTcsIDI0OCwgNjcsIDE3NSwgMjUsIDUsIDIzNCwgMTYsIDI0MiwgNDcsIDI1NCwgMjMzLCAxNzUsIDI1LCAKKyAgICA1LCAyMzQsIDE2LCAyNDIsIDQ3LCAyNDcsIDIyOCwgMjU0LCAyMzMsIDE3NSwgMjUsIDUsIDIzNCwgMTYsIDI0MiwgNDcsIAorICAgIDI0MywgODEsIDE3NSwgMjUsIDUsIDI0MywgODEsIDE3NSwgMjUsIDUsIDI0NywgMjI4LCAyNDMsIDEyNCwgMTc1LCAyNSwgNSwgCisgICAgMjQ3LCAyMjgsIDI0MywgODEsIDE3NSwgMjI0LCAxNDEsIDIzMywgMjA3LCAxNjgsIDEzNSwgMjM0LCAyOSwgMjM0LCAyNDYsIAorICAgIDE2OCwgMTM1LCAyMzQsIDEwNiwgMjM0LCAxMjgsIDE2OCwgMTM1LCAyMzQsIDEwNiwgMjM0LCA5OSwgMTY4LCAxMzUsIDIzNCwgCisgICAgMTA2LCAyMzQsIDk1LCAxNjgsIDEzNSwgMjM0LCAxMDYsIDIzNCwgMTAzLCAxNjgsIDEzNSwgMjM0LCAxMDYsIDIyMywgMTU0LCAKKyAgICAxNjgsIDEzNSwgMjI5LCA1LCAyMjgsIDI0OCwgMTY4LCAxMzUsIDI1MCwgODcsIDI1MCwgMTQ3LCAxNjgsIDEzNSwgMjUwLCAKKyAgICA4NywgMjUwLCA5NSwgMTY4LCAxMzUsIDI1MCwgODcsIDI1MCwgMTQ2LCAxNjgsIDEzNSwgMjE5LCA1OSwgMjE5LCA1OCwgCisgICAgMTY4LCAxMzUsIDI1MCwgODcsIDI1MCwgODMsIDE2OCwgMTM1LCAyMTAsIDI0NSwgMjEwLCAyNTIsIDE2OCwgMTM1LCAyNDcsIAorICAgIDE0NiwgMjUwLCAxNTQsIDE2OCwgMTM1LCAyMTYsIDQyLCAyMjUsIDIzOCwgMTY4LCAxMzUsIDIxNiwgMTU3LCAyMTYsIDIwMCwgCisgICAgMTY4LCAxMzUsIDIxNiwgMTU3LCAyMjksIDIwMSwgMTY4LCAxMzUsIDIxNiwgMTU3LCAyMjUsIDExMSwgMTY4LCAxMzUsIAorICAgIDIyOCwgNzUsIDIyOSwgOTgsIDE2OCwgMTM1LCAyNDcsIDE0NiwgMjQ4LCA2OCwgMTY4LCAxMzUsIDIxNiwgNDIsIDIxNywgCisgICAgNTUsIDE2OCwgMTM1LCAyMTYsIDE1NywgMjE2LCAxMzEsIDE2OCwgMTM1LCAyMTYsIDE1NywgMjE2LCAyMDQsIDE2OCwgMTM1LCAKKyAgICAyMTYsIDE1NywgMjE2LCAxNTQsIDE2OCwgMTM1LCAyMjgsIDc1LCAyMjcsIDIzNywgMTY4LCAxMzUsIDI1MSwgMjA2LCAyNTIsIAorICAgIDE2NCwgMTY4LCAxMzUsIDIyNSwgMTcsIDIyNSwgNDIsIDE2OCwgMTM1LCAyMjUsIDEyMiwgMjI1LCAxMTMsIDE2OCwgMTM1LCAKKyAgICAyNDQsIDQ0LCAyNDQsIDE5NiwgMTY4LCAxMzUsIDIyNSwgMTIyLCAyMjUsIDE0MSwgMTY4LCAxMzUsIDI0NCwgNDQsIDI0NCwgCisgICAgMTczLCAxNjgsIDEzNSwgMjI1LCAxMjIsIDIyMSwgMjQ3LCAxNjgsIDEzNSwgMjMwLCAxNjIsIDE4NCwgMTY4LCAxMzUsIAorICAgIDIxMCwgMjQ1LCAyMTEsIDc5LCAxNjgsIDEzNSwgMjIyLCAyMTIsIDIyMiwgMTM5LCAxNjgsIDEzNSwgMjIyLCAxNDAsIDE2OCwgCisgICAgMTM1LCAyMzIsIDE1NywgMjMyLCAyMDYsIDE2OCwgMTM1LCAyMzIsIDk4LCAxNjgsIDEzNSwgMjExLCAyMjgsIDIxMiwgNjEsIAorICAgIDE2OCwgMTM1LCAyMTksIDU5LCAyMjIsIDYsIDE2OCwgMTM1LCAyMTksIDU5LCAyMjIsIDExNCwgMTY4LCAxMzUsIDIxOSwgCisgICAgNTksIDIxOCwgODIsIDE2OCwgMTM1LCAyNDEsIDY5LCAyNDEsIDE1OSwgMTY4LCAxMzUsIDIzMiwgMTU3LCAyNTAsIDY4LCAKKyAgICAxNjgsIDEzNSwgMTQ0LCAyNTQsIDExNSwgMTY4LCAxMzUsIDI0MSwgNjksIDIyOCwgNzAsIDE2OCwgMTM1LCAyMjYsIDY4LCAKKyAgICAxNjgsIDEzNSwgMjIxLCAyMzAsIDYxLCAxNjgsIDEzNSwgMjMxLCAyMDQsIDI0MiwgMTcsIDE2OCwgMTM1LCAyMjEsIDIzMCwgCisgICAgMjU1LCA3MywgMTY4LCAxMzUsIDIyMSwgMjMwLCAyNTQsIDEzNiwgMTY4LCAxMzUsIDIyMSwgMjMwLCA3MywgMTY4LCAxMzUsIAorICAgIDIyMSwgMjMwLCAyMzYsIDMzLCAxNjgsIDEzNSwgMjIxLCAyMzAsIDIxNCwgMjE0LCAxNjgsIDEzNSwgMjIxLCAyMzAsIDIxNCwgCisgICAgMjEyLCAxNjgsIDEzNSwgMjIxLCAyMzAsIDcwLCAxNjgsIDEzNSwgMjIxLCAyMzAsIDIxNCwgMTE4LCAxNjgsIDEzNSwgMjI1LCAKKyAgICAxMjQsIDE2OCwgMjQ5LCA5OCwgMTYsIDI1MiwgMTY1LCAxNjgsIDEzNSwgMjIxLCAyMzAsIDc1LCAxNjgsIDEzNSwgMjIxLCAKKyAgICAyMzAsIDI1NCwgMjQzLCAxNjgsIDEzNSwgMjIxLCAyMzAsIDc2LCAxNjgsIDEzNSwgMjIxLCAyMzAsIDI1NCwgMjAyLCAyMzEsIAorICAgIDE5OCwgMTY4LCAxMzUsIDIyMSwgMjMwLCAyNTQsIDIwMiwgMjMxLCAxOTksIDE2OCwgMTM1LCAyMzMsIDEwNiwgMTY4LCAKKyAgICAxMzUsIDIzMSwgMTk1LCAxNjgsIDEzNSwgMjMxLCAxOTYsIDE2OCwgMTM1LCAyMzEsIDIwNCwgMjQ1LCAxODAsIDE2OCwgCisgICAgMTM1LCAyMzEsIDIwNCwgMjE2LCAxNTYsIDE2OCwgMTM1LCAyMzEsIDIwNCwgMjE1LCAyMjgsIDE2OCwgMTM1LCAyMzEsIAorICAgIDIwNCwgMjUwLCAxMzUsIDE2OCwgMTM1LCAyMTYsIDE5OCwgMTY4LCAxMzUsIDIyOCwgMjA1LCAxNjgsIDEzNSwgMjExLCA3MywgCisgICAgMTY4LCAxMzUsIDI0NCwgMzUsIDE2OCwgMjEsIDIxMCwgODYsIDE2OCwgMjEsIDExMCwgMTY4LCAyMSwgMTA1LCAxNjgsIDIxLCAKKyAgICAxNTgsIDE2OCwgMjEsIDE2MSwgMTY4LCAyMSwgMTg5LCAxNjgsIDIxLCAxOTQsIDE2OCwgMjEsIDE5OCwgMTY4LCAyMSwgCisgICAgMTk1LCAxNjgsIDIxLCAyMDAsIDE2OCwgMTM1LCAyNTQsIDExMSwgMTY4LCAxMzUsIDIzNCwgMTA0LCAyMDksIDIwOSwgMSwgCisgICAgMjM0LCAyOCwgMjA5LCAyMDksIDEsIDIzNCwgMTA2LCAyMTgsIDM1LCAyMDksIDIwOSwgMSwgMjM0LCAxMDYsIDIxNywgNjIsIAorICAgIDIwOSwgMjA5LCAxLCAyMjksIDQsIDIwOSwgMjA5LCAxLCAyNDksIDIzOCwgMjA5LCAyMDksIDEsIDIxOSwgNTksIDIxNywgCisgICAgNjIsIDIwOSwgMjA5LCAxLCAyMjcsIDEzNCwgMjA5LCAyMDksIDEsIDI0NywgMTQ1LCAyMDksIDIwOSwgMSwgMTExLCAyMDksIAorICAgIDIwOSwgMSwgMjE2LCAxNTcsIDIxOCwgMzUsIDIwOSwgMjA5LCAxLCAyMTYsIDE1NywgMjE3LCA2MiwgMjA5LCAyMDksIDEsIAorICAgIDIyOCwgNzQsIDIwOSwgMjA5LCAxLCAyNTEsIDIwNSwgMjA5LCAyMDksIDEsIDIyNSwgMTYsIDIwOSwgMjA5LCAxLCAyMjUsIAorICAgIDEyMiwgMjE4LCAzNSwgMjA5LCAyMDksIDEsIDI0NCwgNDQsIDIxNywgNjIsIDIwOSwgMjA5LCAxLCAyMjUsIDEyMiwgMjE3LCAKKyAgICA2MiwgMjA5LCAyMDksIDEsIDI0NCwgNDQsIDIxOCwgMzUsIDIwOSwgMjA5LCAxLCAyMzAsIDE2MSwgMjA5LCAyMDksIDEsIAorICAgIDIxMCwgMjQ0LCAyMDksIDIwOSwgMSwgMjMyLCAxNTcsIDIzMiwgMjA2LCAyMDksIDIwOSwgMSwgMjMyLCAxNTcsIDIzMiwgCisgICAgMTIxLCAyMDksIDIwOSwgMSwgMjExLCAyMjcsIDIwOSwgMjA5LCAxLCAyMTksIDU5LCAyMTgsIDM1LCAyMDksIDIwOSwgMSwgCisgICAgMjQxLCA2OSwgMjE4LCAzNSwgMjA5LCAyMDksIDEsIDc2LCAyMDksIDIwOSwgMSwgMjQxLCA2OSwgMjE3LCA2MiwgMjA5LCAKKyAgICAyMDksIDI0NSwgMTYzLCAyMDksIDIwOSwgMjUsIDUsIDYxLCAyMDksIDIwOSwgMjUsIDUsIDIzMSwgMjA0LCAyMzQsIDIzNCwgCisgICAgMjA5LCAyMDksIDI1LCA1LCAyNTUsIDczLCAyMDksIDIwOSwgMjUsIDUsIDI1NCwgMTM2LCAyMDksIDIwOSwgMjUsIDUsIDczLCAKKyAgICAyMDksIDIwOSwgMjUsIDUsIDIzNiwgMzMsIDIwOSwgMjA5LCAyNSwgNSwgMjExLCAxMTcsIDIwOSwgMjA5LCAyNSwgNSwgCisgICAgMjEwLCAxNjksIDIwOSwgMjA5LCAyNSwgNSwgNzAsIDIwOSwgMjA5LCAyNSwgNSwgMjE0LCAxMTgsIDIwOSwgMjA5LCAyNSwgCisgICAgNSwgMjMxLCAyMDQsIDIzNCwgMTMsIDIwOSwgMjA5LCAyMjAsIDE0NSwgNSwgMjMyLCAxNTYsIDIwOSwgMjA5LCAyMjAsIAorICAgIDE0NSwgNSwgMjI3LCAxMzQsIDIwOSwgMjA5LCAyNSwgNSwgNzUsIDIwOSwgMjA5LCAyNSwgNSwgMjQ1LCAxOTUsIDIwOSwgCisgICAgMjA5LCAyNSwgNSwgNzYsIDIwOSwgMjA5LCAyNSwgNSwgMjUzLCAxNjcsIDIwOSwgMjA5LCAyNSwgNSwgMjU0LCAyMDEsIAorICAgIDIwOSwgMjA5LCAyMzQsIDI5LCAyMzMsIDEzNSwgMjA5LCAyMDksIDEzOCwgMjMxLCAyMDQsIDI0NSwgMTgwLCAyMDksIDIwOSwgCisgICAgMTM4LCAyMzEsIDIwNCwgMjE2LCAxNTYsIDIwOSwgMjA5LCAxMzgsIDIzMSwgMjA0LCAyMTYsIDExNywgMjA5LCAyMDksIAorICAgIDEzOCwgMjMxLCAyMDQsIDI1MCwgMjIzLCAyMDksIDIwOSwgMjUxLCA0LCA3OCwgMjA5LCAyMDksIDIyOCwgMjE0LCAyMDksIAorICAgIDIwOSwgMjEsIDIxMCwgODYsIDIwOSwgMjA5LCAyMSwgMTEwLCAyMDksIDIwOSwgMjEsIDEwNSwgMjA5LCAyMDksIDIxLCAKKyAgICAxNTgsIDIwOSwgMjA5LCAyMSwgMTYxLCAyMDksIDIwOSwgMjEsIDE4OSwgMjA5LCAyMDksIDIxLCAxOTQsIDIwOSwgMjA5LCAKKyAgICAyMSwgMTk4LCAyMDksIDIwOSwgMjEsIDE5NSwgMjA5LCAyMDksIDIxLCAyMDAsIDIwOSwgMjA5LCAyNDEsIDY5LCAyMjgsIAorICAgIDc0LCAyMDksIDIwOSwgMjQxLCA2OSwgMjMwLCAxNjEsIDIwOSwgMjA5LCAxLCAyMzQsIDEwNywgMjQyLCAxNzQsIDIwOSwgCisgICAgMjA5LCAxLCAyMzQsIDEwNywgMjI3LCAxMzQsIDYzLCAzLCAyMjYsIDIwNCwgNjMsIDE2NCwgMjQyLCAxMTUsIDIxMSwgMCwgCisgICAgMjMwLCAyNDgsIDIxNSwgMTg5LCA2MSwgNjMsIDE2NCwgMjQyLCAxMTUsIDIxMSwgMCwgMjMwLCAyNDgsIDI1NSwgMTU5LCAKKyAgICAyMjIsIDIxNiwgMjUyLCA3NywgMTg0LCA2MywgMTY0LCAyNDIsIDExNSwgMjExLCAwLCAyMzAsIDI0OCwgMjU1LCAxNTksIAorICAgIDI0MiwgMTE1LCAyMTUsIDE3MywgMTg0LCA2MywgMTY0LCA2NSwgMjExLCAwLCAyMzAsIDI0OCwgMjMxLCA5MywgMTg0LCA2MywgCisgICAgMTY0LCAyNDksIDI1MiwgMjExLCAwLCAyMzAsIDI0OCwgMjIwLCAxMDksIDE4NCwgNjMsIDE2NCwgMjUwLCAyMzksIDIxMSwgCisgICAgMCwgMjMwLCAyNDgsIDIyNSwgMTEyLCAyMjAsIDk2LCAxODQsIDYzLCAxNjQsIDIxMSwgMCwgMjMwLCAyNDgsIDIxNSwgMTczLCAKKyAgICAyMjAsIDk2LCAxODQsIDYzLCAxNjQsIDIyMSwgMjA4LCAyMjAsIDk1LCA2MywgMTY0LCAyNTEsIDEyOCwgMjExLCAwLCAyMzAsIAorICAgIDI0NywgNjMsIDE2NCwgMjUxLCAyMjMsIDIyMCwgMywgMjExLCAwLCAyMzAsIDI0NywgNjMsIDE2NCwgMjM1LCAxOTcsIDIxNSwgCisgICAgMTcyLCA2MywgMTY0LCAyNDgsIDYxLCAyMTUsIDE3MywgMjUxLCAxMjcsIDYzLCAxNjQsIDIyMCwgOTUsIDYzLCAxNjQsIAorICAgIDIyNywgMTM5LCAyMjAsIDk1LCA2MywgMTY0LCAyMTUsIDE3MywgMjIwLCA5NSwgNjMsIDE2NCwgMjI3LCAxMzksIDIxNSwgCisgICAgMTczLCAyMjAsIDk1LCA2MywgMTY0LCAyMjIsIDIzNiwgMjUwLCAxMjIsIDIxOCwgMjM2LCAyMjAsIDk1LCA2MywgMTY0LCAKKyAgICAyMjMsIDQyLCAyNDIsIDE0NiwgMjIwLCA5NSwgNjMsIDE2NCwgMjUwLCAyMzksIDI1NSwgMTYzLCAyMjIsIDE0NCwgMjMxLCAKKyAgICA5MiwgMTk5LCAyNTEsIDcsIDYzLCAxNjQsIDI0MiwgMTE1LCAyMTUsIDE3MiwgNjMsIDIzMiwgMTQ0LCA1LCAyNTAsIDE1NSwgCisgICAgMjIyLCAxNDMsIDYzLCAyMzIsIDE0NCwgNSwgMjMyLCAyNTIsIDIyMiwgMTQzLCA2MywgMjUzLCAyMTIsIDUsIDIyMCwgMTA1LCAKKyAgICAyNDMsIDY1LCAyNTUsIDE2NCwgMjIyLCAxNDMsIDYzLCAyNTMsIDIxMiwgNSwgMjU1LCAxNjEsIDE5MCwgNjMsIDI1MywgCisgICAgMjEyLCA1LCAyMjEsIDE4MiwgMjE1LCAxNjgsIDYzLCA1LCAyMjMsIDEzMCwgMjQ3LCAxNTksIDI0MywgNjQsIDYzLCA1LCAKKyAgICAyMjMsIDEzMCwgMjQ3LCAxNTksIDI0MiwgMTc2LCA2MywgNSwgMjIzLCAxMzAsIDI0NywgMTU5LCAyNDIsIDExNiwgNjMsIDUsIAorICAgIDIyMywgMTMwLCAyMjksIDIxOSwgMjQzLCA2NCwgNjMsIDUsIDIyMywgMTMwLCAyMjksIDIxOSwgMjQyLCAxNzYsIDYzLCA1LCAKKyAgICAyMjMsIDEzMCwgMjQ3LCAxNTksIDIyMywgMTMwLCAyMjksIDIxOCwgNjMsIDIxLCAyMTAsIDg2LCA2MywgMjEsIDExMCwgNjMsIAorICAgIDIxLCAxMDUsIDYzLCAyMSwgMTU4LCA2MywgMjEsIDE2MSwgNjMsIDIxLCAxODksIDYzLCAyMSwgMTk0LCA2MywgMjEsIDE5OCwgCisgICAgNjMsIDIxLCAxOTUsIDYzLCAyMSwgMjAwLCA2MywgMjEsIDE2MywgMTEwLCA2MywgMjEsIDE2MywgMTA1LCA2MywgMjEsIAorICAgIDE2MywgMTU4LCA2MywgMjEsIDE2MywgMTYxLCA2MywgMjEsIDE2MywgMTg5LCA2MywgMjEsIDE2MywgMTk0LCA2MywgMjEsIAorICAgIDE2MywgMTk4LCA2MywgMjEsIDE2MywgMTk1LCA2MywgMjEsIDE2MywgMjAwLCA2MywgMjEsIDE2MywgMjEwLCA4NiwgNjMsIAorICAgIDE2NCwgMjUxLCAxMzAsIDIyMiwgMTQzLCA2MywgMTY0LCAyMjksIDY4LCAyNTEsIDY4LCAyMjcsIDE0OSwgMjEwLCAyNSwgCisgICAgNjMsIDE2NCwgMjUwLCAyMzksIDI1NSwgMTYzLCAyMjIsIDE0NCwgMjUxLCA2OSwgMjMwLCAyMDIsIDI1MSwgNywgNjMsIAorICAgIDE2NCwgMjI5LCA2OCwgMjUxLCA2OCwgMjIwLCAxMDYsIDIyMiwgMTQzLCA2MywgMTY0LCAyNTAsIDEzMiwgMjMwLCAyNDcsIAorICAgIDYzLCAxNjQsIDIxNSwgMTg0LCAyNTUsIDE2MCwgNjMsIDE2NCwgMjQyLCAxMDAsIDIyMiwgMTQ0LCAyNDIsIDYzLCA2MywgCisgICAgMTY0LCAyNDIsIDEwMCwgMjIyLCAxNDQsIDI0MiwgNjksIDYzLCAxNjQsIDI1NCwgMTE2LCAyMzQsIDEyMywgMjQyLCA2MywgCisgICAgNjMsIDE2NCwgMjU0LCAxMTYsIDIzNCwgMTIzLCAyNDIsIDY5LCA2MywgNSwgMjExLCA2NSwgMjE1LCAxNzEsIDYzLCA1LCAKKyAgICAyMzEsIDE2NywgMjE1LCAxNzEsIDYzLCAxLCAxNzYsIDYzLCAxLCAyMzQsIDEzMiwgNjMsIDEsIDI0MywgMTM1LCA2MywgMSwgCisgICAgMjQyLCAyNDksIDYzLCAxLCAyMjksIDc3LCA2MywgMSwgMjUxLCAzMywgNjMsIDEsIDI1MCwgMTU3LCA2MywgMSwgMjM1LCAKKyAgICAxNDEsIDYzLCAxLCAyMjcsIDE2NSwgNjMsIDEsIDIxNSwgMTU2LCA2MywgMSwgMjE1LCAxNDQsIDYzLCAxLCAyNDgsIDEzNSwgCisgICAgNjMsIDEsIDI0OCwgMTE5LCA2MywgMSwgMjI4LCAxMTAsIDYzLCAxLCAyMTcsIDEwNSwgNjMsIDEsIDIxNiwgMjA4LCA2MywgCisgICAgMSwgMjQ4LCAyMjEsIDYzLCAxLCAyNDgsIDI1LCA2MywgMSwgMTk3LCA2MywgMSwgMTkwLCA2MywgMSwgMjI1LCAxNDcsIDYzLCAKKyAgICAxLCAyNTIsIDE5MSwgNjMsIDEsIDI1MiwgMTgsIDYzLCAxLCAxODQsIDYzLCAxLCAyMTUsIDE4MywgNjMsIDEsIDIxNSwgCisgICAgMTc1LCA2MywgMSwgMjQ2LCAzOCwgNjMsIDEsIDI0NiwgMzMsIDYzLCAxLCAyMTIsIDY1LCA2MywgMSwgMjEwLCA4MiwgNjMsIAorICAgIDEsIDIxMCwgMTE2LCA2MywgMSwgMjU1LCAxNjYsIDYzLCAxLCAxOTEsIDYzLCAxLCAyMDUsIDYzLCAxLCAyMzMsIDEzNSwgCisgICAgNjMsIDEsIDIyMCwgMTAyLCA2MywgMSwgMjE4LCAyMjMsIDYzLCAxLCAyMDYsIDYzLCAxLCAxNjIsIDYzLCAxLCA2MSwgNjMsIAorICAgIDEsIDIzMywgMjMxLCA2MywgMSwgMjQ0LCA3NywgMjA1LCA2MywgMSwgMjM0LCA0NiwgNjMsIDEsIDIyMiwgMTc5LCA2MywgCisgICAgMjUsIDUsIDI1NSwgNzMsIDYzLCAyNSwgNSwgNzMsIDYzLCAyNSwgNSwgMjM2LCAzMywgNjMsIDI1LCA1LCA3MCwgNjMsIDI1LCAKKyAgICA1LCAyMTQsIDExOCwgNjMsIDI1LCA1LCAxNDksIDE1MywgNjMsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCA2MywgMjUsIDUsIAorICAgIDE0OSwgMTU2LCA2MywgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDYzLCAyNSwgNSwgNzUsIDYzLCAyNSwgNSwgMjQ1LCAyMDksIAorICAgIDYzLCAyNSwgNSwgNzYsIDYzLCAyNSwgNSwgMjI2LCAxODMsIDYzLCA1LCAyMjIsIDIyMSwgMjE4LCA4NCwgMjI5LCA3OCwgCisgICAgMjIyLCAyMTEsIDYzLCA1LCAyMjIsIDIxNiwgMjUyLCA3NiwgNjMsIDI1LCA1LCAyMjMsIDQ5LCA3MywgNjMsIDI1LCA1LCAKKyAgICAyMjMsIDQ5LCAyMzYsIDMzLCA2MywgNSwgMjI3LCAxNDksIDIxMCwgMjYsIDIyOSwgMjI2LCAyNDgsIDIyMSwgNjMsIDUsIAorICAgIDIxOSwgNzEsIDIzMywgNjAsIDYzLCAxNjQsIDI0MiwgMjksIDYzLCAxNjQsIDIyNiwgNTcsIDYzLCA1LCAyMzMsIDYzLCAKKyAgICAyMjIsIDE0MywgNjMsIDUsIDIxMSwgNzAsIDIyMiwgMTQzLCA2MywgNSwgMjMzLCA2NCwgMjE1LCAxODQsIDI1MSwgNywgNjMsIAorICAgIDUsIDIzMSwgOTUsIDI1MSwgNywgNjMsIDUsIDI0MiwgMTE5LCAyNTEsIDgsIDIyMywgNDAsIDYzLCA1LCAyNDIsIDExOSwgCisgICAgMjMxLCA4NSwgMjIzLCA0MCwgNjMsIDUsIDIzNSwgMTkzLCAyMzEsIDk1LCAyNTEsIDcsIDYzLCAyMTgsIDczLCA1LCAyMzMsIAorICAgIDY0LCAyMTUsIDE4NCwgMjUxLCA3LCA2MywgMjE4LCA3MywgNSwgMjMxLCA5NSwgMjUxLCA3LCA2MywgMjE4LCA3MywgNSwgCisgICAgMjM1LCAxOTMsIDIzMSwgOTUsIDI1MSwgNywgNjMsIDIxOCwgNzMsIDEsIDE3NiwgNjMsIDIxOCwgNzMsIDEsIDIzNCwgMTMyLCAKKyAgICA2MywgMjE4LCA3MywgMSwgMjQzLCAxMzUsIDYzLCAyMTgsIDczLCAxLCAyNDIsIDI0OSwgNjMsIDIxOCwgNzMsIDEsIDIyOSwgCisgICAgNzcsIDYzLCAyMTgsIDczLCAxLCAyNTEsIDMzLCA2MywgMjE4LCA3MywgMSwgMjUwLCAxNTcsIDYzLCAyMTgsIDczLCAxLCAKKyAgICAyMzUsIDE0MSwgNjMsIDIxOCwgNzMsIDEsIDIyNywgMTY1LCA2MywgMjE4LCA3MywgMSwgMjE1LCAxNTYsIDYzLCAyMTgsIAorICAgIDczLCAxLCAyMTUsIDE0NCwgNjMsIDIxOCwgNzMsIDEsIDI0OCwgMTM1LCA2MywgMjE4LCA3MywgMSwgMjQ4LCAxMTksIDYzLCAKKyAgICAyMTgsIDczLCAxLCAyMjgsIDExMCwgNjMsIDIxOCwgNzMsIDEsIDIxNywgMTA1LCA2MywgMjE4LCA3MywgMSwgMjE2LCAyMDgsIAorICAgIDYzLCAyMTgsIDczLCAxLCAyNDgsIDIyMSwgNjMsIDIxOCwgNzMsIDEsIDI0OCwgMjUsIDYzLCAyMTgsIDczLCAxLCAxOTcsIAorICAgIDYzLCAyMTgsIDczLCAxLCAxOTAsIDYzLCAyMTgsIDczLCAxLCAyMjUsIDE0NywgNjMsIDIxOCwgNzMsIDEsIDI1MiwgMTkxLCAKKyAgICA2MywgMjE4LCA3MywgMSwgMjUyLCAxOCwgNjMsIDIxOCwgNzMsIDEsIDE4NCwgNjMsIDIxOCwgNzMsIDEsIDIxNSwgMTgzLCAKKyAgICA2MywgMjE4LCA3MywgMSwgMjE1LCAxNzUsIDYzLCAyMTgsIDczLCAxLCAyNDYsIDM4LCA2MywgMjE4LCA3MywgMSwgMjQ2LCAKKyAgICAzMywgNjMsIDIxOCwgNzMsIDEsIDIxMiwgNjUsIDYzLCAyMTgsIDczLCAxLCAyMTAsIDgyLCA2MywgMjE4LCA3MywgMSwgCisgICAgMjEwLCAxMTYsIDYzLCAyMTgsIDczLCAxLCAyNTUsIDE2NiwgNjMsIDIxOCwgNzMsIDEsIDE5MSwgNjMsIDIxOCwgNzMsIDEsIAorICAgIDIwNSwgNjMsIDIxOCwgNzMsIDEsIDIzMywgMTM1LCA2MywgMjE4LCA3MywgMSwgMjIwLCAxMDIsIDYzLCAyMTgsIDczLCAxLCAKKyAgICAyMTgsIDIyMywgNjMsIDIxOCwgNzMsIDEsIDIwNiwgNjMsIDIxOCwgNzMsIDEsIDE2MiwgNjMsIDIxOCwgNzMsIDEsIDYxLCAKKyAgICA2MywgMjE4LCA3MywgMSwgMjMzLCAyMzEsIDYzLCAyMTgsIDczLCAxLCAyNDQsIDc3LCAyMTIsIDY1LCA2MywgMjE4LCA3MywgCisgICAgMSwgMjQ0LCA3NywgMTkxLCA2MywgMjE4LCA3MywgMSwgMjQ0LCA3NywgMjA1LCA2MywgMjMzLCAyMTgsIDIyMiwgMTQxLCAKKyAgICAyMzQsIDEzMiwgNjMsIDIzMywgMjE4LCAyMjIsIDE0MSwgMjM0LCAxMzMsIDI1MSwgNjksIDIzMCwgMjAyLCAyNTEsIDcsIAorICAgIDYzLCAyNTAsIDI1MiwgNSwgMTE0LCAyNTIsIDcwLCA2MywgMjUwLCAyNTIsIDUsIDE5MiwgMjUyLCA3MCwgNjMsIDI1MCwgCisgICAgMjUyLCA1LCAyNTAsIDI1MywgMjE3LCAyMCwgNjMsIDI1MCwgMjUyLCA1LCAyMjEsIDIwNywgMjU1LCAxNjUsIDYzLCAxNiwgCisgICAgMjQ2LCA5MSwgMjUxLCAxMjUsIDYzLCAxNiwgMjIzLCAxMjksIDIyMiwgMjIyLCA2MywgMTYsIDIyNiwgNzcsIDI0MywgNjMsIAorICAgIDYzLCAxNiwgMjIzLCAxMjksIDIyMiwgMjIzLCAyMjMsIDQyLCAyNDIsIDE0NSwgNjMsIDE2LCAyMjUsIDExMiwgMTkwLCA2MywgCisgICAgMTYsIDIyOCwgNTksIDI1MSwgMTI1LCA2MywgMTYsIDIyOCwgNTksIDI1MSwgMTI2LCAyMjcsIDEzOSwgMjU1LCAxNjIsIDYzLCAKKyAgICAxNiwgMjI4LCA1OSwgMjUxLCAxMjYsIDI0MiwgMTE3LCAyNTUsIDE2MiwgNjMsIDE2LCAyMjgsIDU5LCAyNTEsIDEyNiwgCisgICAgMjUxLCA2OSwgMjU1LCAxNjIsIDYzLCA1LCAyMjMsIDEzMCwgMjI5LCAyMTksIDIyMywgMTMwLCAyNDcsIDE1OCwgNjMsIDUsIAorICAgIDIyMywgMTMwLCAyMjksIDIxOSwgMjQyLCAxMTYsIDYzLCAxNjQsIDI1MSwgMTI5LCAyMjAsIDMsIDI0MiwgMjE1LCAyMzAsIAorICAgIDI0OCwgMjIzLCA0MSwgNjMsIDE2NCwgMjMwLCAxNjMsIDIxMSwgMCwgMjQyLCAyMTUsIDIzMCwgMjQ4LCAyMjMsIDQxLCA2MywgCisgICAgMTY0LCAyMjcsIDEzOSwgMjE1LCAxNzIsIDYzLCAxNjQsIDY1LCAyNTEsIDE1MiwgMjIyLCAyMTMsIDIxMSwgMCwgMjMwLCAKKyAgICAyNDgsIDIzMSwgOTMsIDE4NCwgNjMsIDE2NCwgMjQ5LCAyNTIsIDI1MSwgMTUyLCAyMjIsIDIxMywgMjExLCAwLCAyMzAsIAorICAgIDI0OCwgMjIwLCAxMDksIDE4NCwgMjIyLCAyNTAsIDIxNywgMjU1LCA1MCwgMjMzLCA0NSwgMjE3LCAyNTUsIDUwLCAyMjIsIAorICAgIDI1MCwgMjE3LCAyNTUsIDUsIDIsIDI0NywgMTE4LCAyMzMsIDQ1LCAyMTcsIDI1NSwgNSwgMiwgMjQ3LCAxMTgsIDYzLCAKKyAgICAxNjQsIDIzMywgNTUsIDIzMSwgOTYsIDIyMiwgMTQzLCA2MywgMTY0LCAyMTUsIDI1MCwgMjMxLCA5NiwgMjIyLCAxNDMsIAorICAgIDY4LCAxLCAxNzYsIDY4LCAxLCAyMzQsIDEzMiwgNjgsIDEsIDI0MywgMTM1LCA2OCwgMSwgMjQyLCAyNDksIDY4LCAxLCAKKyAgICAyMjksIDc3LCA2OCwgMSwgMjUxLCAzMywgNjgsIDEsIDI1MCwgMTU3LCA2OCwgMSwgMjM1LCAxNDEsIDY4LCAxLCAyMzUsIAorICAgIDExNCwgNjgsIDEsIDIyNywgMTY1LCA2OCwgMSwgMjI4LCA3NiwgNjgsIDEsIDIxNSwgMTU2LCA2OCwgMSwgMjE1LCAxNDQsIAorICAgIDY4LCAxLCAyNDgsIDEzNSwgNjgsIDEsIDI0OCwgMTE5LCA2OCwgMSwgMjI4LCAxMTAsIDY4LCAxLCAyMTcsIDEwNSwgNjgsIAorICAgIDEsIDIxNiwgMjA4LCA2OCwgMSwgMjQ4LCAyMjEsIDY4LCAxLCAyNDgsIDI1LCA2OCwgMSwgMTk3LCA2OCwgMSwgMTkwLCA2OCwgCisgICAgMSwgMjI1LCAxNDcsIDY4LCAxLCAyNTIsIDE5MSwgNjgsIDEsIDI1MiwgMTgsIDY4LCAxLCAxODQsIDY4LCAxLCAxOTEsIDY4LCAKKyAgICAxLCAyMDUsIDY4LCAxLCAyMzMsIDEzNSwgNjgsIDEsIDIxMiwgNjUsIDY4LCAxLCAyMDYsIDY4LCAxLCAxNjIsIDY4LCAxLCAKKyAgICAyMzIsIDE4NCwgNjgsIDEsIDYxLCA2OCwgMSwgMjIwLCA4NiwgNjEsIDY4LCAxLCA3MywgNjgsIDEsIDIzNiwgMzMsIDY4LCAKKyAgICAxLCA3MCwgNjgsIDEsIDIxNCwgMTE4LCA2OCwgMSwgNzUsIDY4LCAxLCAyMzAsIDE1MSwgNzUsIDY4LCAxLCA3NiwgNjgsIDEsIAorICAgIDI1MywgMTkyLCA2OCwgMjUsIDUsIDIxNywgNjQsIDI1NSwgNzMsIDY4LCAyNSwgNSwgMjU1LCA3MywgNjgsIDI1LCA1LCA3MywgCisgICAgNjgsIDI1LCA1LCAyMzYsIDMzLCA2OCwgMjUsIDUsIDcwLCA2OCwgMjUsIDUsIDIxNCwgMTE4LCA2OCwgMjUsIDUsIDc1LCAKKyAgICA2OCwgMjUsIDUsIDI1NCwgMjAxLCA2OCwgMjUsIDUsIDIzMCwgMTUxLCAyMzYsIDMzLCA2OCwgMjUsIDUsIDIzMCwgMTUxLCAKKyAgICA3NiwgNjgsIDI1LCA1LCAxNjAsIDQ4LCA2OCwgNSwgMjU0LCA3NSwgNjgsIDUsIDU5LCA1MSwgNjgsIDUsIDIxMywgMTQ3LCAKKyAgICA2OCwgNSwgMjEzLCAxNTIsIDY4LCA1LCAyNTMsIDIzNSwgNjgsIDExNiwgNSwgMTQ3LCAxOTEsIDY4LCAxMTYsIDUsIDE0NywgCisgICAgMjA1LCA2OCwgMTE2LCA1LCAxNDcsIDIxMiwgNjUsIDY4LCAxMTYsIDUsIDE0NywgMTYyLCA2OCwgMSwgMjQyLCAxMzIsIAorICAgIDIwNiwgNjgsIDIxLCAyMTAsIDg2LCA2OCwgMjEsIDExMCwgNjgsIDIxLCAxMDUsIDY4LCAyMSwgMTU4LCA2OCwgMjEsIDE2MSwgCisgICAgNjgsIDIxLCAxODksIDY4LCAyMSwgMTk0LCA2OCwgMjEsIDE5OCwgNjgsIDIxLCAxOTUsIDY4LCAyMSwgMjAwLCA2OCwgNSwgCisgICAgMjMyLCAxOTIsIDIyMSwgMTcyLCA2OCwgNSwgMjIxLCAxNzIsIDY4LCAxNiwgMjMyLCAxNTMsIDY4LCAxNiwgMjQ5LCAyMTMsIAorICAgIDY4LCAxNiwgMjU0LCAyMjAsIDY4LCAxNiwgMjQzLCA0OCwgNjgsIDEsIDIyMCwgMTAyLCA2OCwgMSwgMjE4LCAyMjMsIDY4LCAKKyAgICAxLCAxNDksIDE1MywgNjgsIDEsIDE0OSwgMjIyLCAxODAsIDY4LCAxLCAxNDksIDE1NiwgNjgsIDEsIDE0OSwgMjMyLCAxODUsIAorICAgIDY4LCAyNSwgNSwgMTQ5LCAxNTMsIDY4LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgNjgsIDI1LCA1LCAxNDksIDE1NiwgNjgsIAorICAgIDI1LCA1LCAxNDksIDIzMiwgMTg1LCA2OCwgMSwgMjMwLCAxNTEsIDIyOSwgNzcsIDY4LCAxLCAyMzAsIDE1MSwgMjM1LCAKKyAgICAxMTQsIDY4LCAxLCAyMzAsIDE1MSwgMjUyLCAxMTEsIDY4LCAxLCAyMzAsIDE1MSwgMjUyLCAxMDYsIDY4LCAxMTYsIDUsIAorICAgIDIzMCwgMTUxLCAxNDcsIDE5NywgNjgsIDExNiwgNSwgMjMwLCAxNTEsIDE0NywgMTg0LCA2OCwgMTE2LCA1LCAyMzAsIDE1MSwgCisgICAgMTQ3LCAyMzMsIDEzNSwgNjgsIDEsIDIyMCwgMTA4LCAyMzQsIDIxMywgMjIwLCAxMDIsIDY4LCAyNSwgNSwgMjIwLCAxMDgsIAorICAgIDIzNCwgMjEzLCAyNDUsIDU1LCA2OCwgMTM4LCAxNjQsIDIyMCwgMTA4LCAyMzQsIDIxMywgMjQxLCAyNDcsIDY4LCAxMzgsIAorICAgIDE2NCwgMjIwLCAxMDgsIDIzNCwgMjEzLCAyMzQsIDE4MywgMjI1LCAxMjEsIDY4LCAxLCAyMTIsIDcsIDIyNCwgMTA4LCAKKyAgICAyMzQsIDIxMywgMjE2LCAyMDgsIDY4LCAxLCAyMTIsIDcsIDIyNCwgMTA4LCAyMzQsIDIxMywgMjI0LCAxMTQsIDY4LCAyNSwgCisgICAgNSwgMjEyLCA3LCAyMjQsIDEwOCwgMjM0LCAyMTMsIDI0NSwgNTUsIDY4LCAyNSwgNSwgMjEyLCA3LCAyMjQsIDEwOCwgMjM0LCAKKyAgICAyMTMsIDIxNCwgMjE0LCA2OCwgNSwgMjEyLCA3LCAyMjQsIDEwOCwgMjM0LCAyMTMsIDIxNiwgMjksIDY4LCA1LCAyMTIsIDcsIAorICAgIDIyNCwgMTA4LCAyMzQsIDIxMywgMjE2LCAyOCwgNjgsIDUsIDIxMiwgNywgMjI0LCAxMDgsIDIzNCwgMjEzLCAyMTYsIDI3LCAKKyAgICA2OCwgNSwgMjEyLCA3LCAyMjQsIDEwOCwgMjM0LCAyMTMsIDIxNiwgMjYsIDY4LCA1LCAyMTIsIDcsIDIyNCwgMTA4LCAyMzQsIAorICAgIDIxMywgMjE2LCAyNSwgNjgsIDEsIDI0NSwgMjE5LCAyMjQsIDEwOCwgMjM0LCAyMTMsIDIyOCwgMTEwLCA2OCwgMSwgMjQ1LCAKKyAgICAyMTksIDIyNCwgMTA4LCAyMzQsIDIxMywgMjEwLCAxNzYsIDY4LCAxLCAyNDUsIDIxOSwgMjI0LCAxMDgsIDIzNCwgMjEzLCAKKyAgICAyNDIsIDIxNywgNjgsIDI1LCA1LCAyNDMsIDU5LCAyMzQsIDIxMywgNzMsIDY4LCAyNSwgNSwgMjM0LCAxODgsIDIyNiwgCisgICAgMjM0LCA2OCwgMjUsIDUsIDIzNCwgMTg4LCA3MCwgNjgsIDI1LCA1LCAyMzQsIDE4OCwgMjQ1LCAyMDksIDY4LCAxLCAyMjAsIAorICAgIDg2LCAxNzYsIDY4LCAxLCAyMjAsIDg2LCAyMzQsIDEzMiwgNjgsIDEsIDIyMCwgODYsIDI0MywgMTM1LCA2OCwgMSwgMjIwLCAKKyAgICA4NiwgMjUxLCAzMywgNjgsIDEsIDIyMCwgODYsIDIxMCwgMTE2LCA2OCwgMSwgMjIwLCA4NiwgMjI3LCAxNjUsIDY4LCAxLCAKKyAgICAyMjAsIDg2LCAyNDgsIDIyMSwgNjgsIDEsIDIyMCwgODYsIDE5NywgNjgsIDEsIDIyMCwgODYsIDIyNSwgMTQ3LCA2OCwgMSwgCisgICAgMjIwLCA4NiwgMjQ0LCAxOTYsIDY4LCAxLCAyMjAsIDg2LCAyNTIsIDE5MSwgNjgsIDEsIDIyMCwgODYsIDIxNiwgMjA4LCAKKyAgICA2OCwgMSwgMjIwLCA4NiwgMTYyLCA2OCwgMTE2LCA1LCAyMjAsIDg2LCAxNDcsIDIxMiwgNjUsIDY4LCAyNSwgNSwgMjIwLCAKKyAgICA4NiwgMjU1LCA3MywgNjgsIDI1LCA1LCAyMjAsIDg2LCA3NSwgNjgsIDI1LCA1LCAyMjAsIDg2LCAxNjAsIDQ4LCA2OCwgMjUsIAorICAgIDUsIDIyMCwgODYsIDQwLCAyMTEsIDExNywgNjgsIDUsIDIyMCwgODYsIDIxNiwgMjgsIDY4LCA1LCAyMjAsIDg2LCAyMTYsIAorICAgIDI3LCA2OCwgNSwgMjIwLCA4NiwgMjE2LCAyNSwgNjgsIDUsIDIyMCwgODYsIDIxNiwgMjQsIDY4LCA1LCAyMjAsIDg2LCAKKyAgICAyNDksIDE1MiwgMjE2LCAyOCwgNjgsIDUsIDIyMCwgODYsIDI0OSwgMTUyLCAyMTYsIDI3LCA2OCwgNSwgMjIwLCA4NiwgCisgICAgMjQ5LCAxNTIsIDI0NSwgMTUzLCAyMTYsIDMwLCA2OCwgMSwgMjIyLCAxMjgsIDIyNiwgNjMsIDI0NCwgMTk2LCA2OCwgNSwgCisgICAgMjIyLCAxMjgsIDIyNiwgNjMsIDIxNiwgMjUsIDY4LCAyMjAsIDg2LCAyMSwgMjEwLCA4NiwgNjgsIDIyMCwgODYsIDIxLCAKKyAgICAxMTAsIDY4LCAyMjAsIDg2LCAyMSwgMTA1LCA2OCwgMjIwLCA4NiwgMjEsIDE1OCwgNjgsIDIyMCwgODYsIDIxLCAxNjEsIAorICAgIDY4LCAyMjAsIDg2LCAyMSwgMTg5LCA2OCwgMjIwLCA4NiwgMjEsIDE5NCwgNjgsIDIyMCwgODYsIDIxLCAxOTgsIDY4LCAKKyAgICAyMjAsIDg2LCAyMSwgMTk1LCA2OCwgMjIwLCA4NiwgMjEsIDIwMCwgNjgsIDUsIDIzNCwgMTI2LCAyMTYsIDI5LCA2OCwgNSwgCisgICAgMjM0LCAxMjYsIDIxNiwgMjcsIDY4LCAyNSwgNSwgMjU0LCAxOTAsIDYxLCA2OCwgMjUsIDUsIDI1NCwgMTkwLCAyNTQsIAorICAgIDIwMSwgNjgsIDE2LCAyMjAsIDg2LCAxMTAsIDY4LCAxNiwgMjIwLCA4NiwgMjQ1LCAzMCwgOTgsIDYsIDEsIDI1NCwgMTIzLCAKKyAgICA5OCwgNiwgMSwgMjUyLCAxNTIsIDk4LCA2LCAxLCAyNDMsIDEwNiwgOTgsIDYsIDEsIDI0NywgMTI4LCA5OCwgNiwgMSwgCisgICAgMjQ1LCAxNTAsIDk4LCA2LCAxLCAyMTMsIDE2MCwgOTgsIDYsIDEsIDIxMCwgODksIDk4LCA2LCAxLCAyMTcsIDYwLCA5OCwgCisgICAgNiwgMSwgMjM1LCAyNTUsIDk4LCA2LCAxLCAyMzQsIDIzNCwgOTgsIDYsIDEsIDIzMywgODEsIDk4LCA2LCAxLCAyMzEsIAorICAgIDE4NSwgOTgsIDYsIDEsIDIyOSwgMTk1LCA5OCwgNiwgMSwgMjI2LCAxOTYsIDk4LCA2LCAxLCAyMjYsIDE3LCA5OCwgNiwgMSwgCisgICAgMjEwLCA3OCwgOTgsIDYsIDEsIDIyMywgMTcxLCA5OCwgNiwgMSwgMjIxLCAyNDMsIDk4LCA2LCAxLCAyMTcsIDUwLCA5OCwgCisgICAgNiwgMSwgMjE0LCAxOTAsIDk4LCA2LCAxLCAyMjUsIDE0MCwgOTgsIDYsIDEsIDIzNCwgMTIxLCA5OCwgNiwgMSwgMjQyLCAKKyAgICAyNDEsIDk4LCA2LCAxLCAyMjQsIDczLCA5OCwgNiwgMSwgMjIwLCAyMCwgOTgsIDYsIDEsIDI1MCwgOTcsIDk4LCA2LCAxLCAKKyAgICAyNTEsIDcsIDk4LCA2LCAxLCAyMzUsIDEwMCwgOTgsIDYsIDEsIDI1MCwgNDAsIDk4LCA2LCAxLCAyNTAsIDE0MywgOTgsIDYsIAorICAgIDEsIDIxMSwgMTYzLCA5OCwgNiwgMSwgMjM1LCAxMTEsIDk4LCA2LCAxLCAyNDIsIDQzLCA5OCwgNiwgMSwgMjQxLCAyMzgsIAorICAgIDk4LCA2LCAxLCAyNDEsIDE3NSwgOTgsIDYsIDEsIDIxMiwgMjIsIDk4LCA2LCAxLCAyNDIsIDQsIDk4LCA2LCAxLCAyNDEsIAorICAgIDY1LCA5OCwgNiwgMSwgMjEwLCAyNDYsIDk4LCA2LCAxLCAyNTQsIDIzMiwgOTgsIDEsIDI1NCwgMTIzLCA5OCwgMSwgMjUyLCAKKyAgICAxNTIsIDk4LCAxLCAyNDMsIDEwNiwgOTgsIDEsIDI0NywgMTI4LCA5OCwgMSwgMjQ1LCAxNTAsIDk4LCAxLCAyMTMsIDE2MCwgCisgICAgOTgsIDEsIDIxMCwgODksIDk4LCAxLCAyMTcsIDYwLCA5OCwgMSwgMjM1LCAyNTUsIDk4LCAxLCAyMzQsIDIzNCwgOTgsIDEsIAorICAgIDIzMywgODEsIDk4LCAxLCAyMzEsIDE4NSwgOTgsIDEsIDIyOSwgMTk1LCA5OCwgMSwgMjI2LCAxOTYsIDk4LCAxLCAyMjYsIAorICAgIDE3LCA5OCwgMSwgMjEwLCA3OCwgOTgsIDEsIDIyMywgMTcxLCA5OCwgMSwgMjIxLCAyNDMsIDk4LCAxLCAyMTcsIDUwLCA5OCwgCisgICAgMSwgMjE0LCAxOTAsIDk4LCAxLCAyMjUsIDE0MCwgOTgsIDEsIDIzNCwgMTIxLCA5OCwgMSwgMjQyLCAyNDEsIDk4LCAxLCAKKyAgICAyMjQsIDczLCA5OCwgMSwgMjIwLCAyMCwgOTgsIDEsIDI1MCwgOTcsIDk4LCAxLCAyNTEsIDcsIDk4LCAxLCAyMzUsIDEwMCwgCisgICAgOTgsIDEsIDI1MCwgNDAsIDk4LCAxLCAyNTAsIDE0MywgOTgsIDEsIDIxMSwgMTYzLCA5OCwgMSwgMjM1LCAxMTEsIDk4LCAxLCAKKyAgICAyNDIsIDQzLCA5OCwgMSwgMjQxLCAyMzgsIDk4LCAxLCAyNDEsIDE3NSwgOTgsIDEsIDIxMiwgMjIsIDk4LCAxLCAyNDIsIDQsIAorICAgIDk4LCAxLCAyNDEsIDY1LCA5OCwgMSwgMjQ0LCAxMjEsIDk4LCAxLCAyMTAsIDI0NiwgOTgsIDEsIDI0NSwgMTY1LCA5OCwgMSwgCisgICAgMjE1LCA5NCwgMjQzLCAxMDYsIDk4LCAxLCAyNTQsIDE5NiwgOTgsIDIyNiwgMTUsIDIyMCwgMTM3LCA1OCwgMSwgOTgsIAorICAgIDIyOSwgMTk1LCA5OCwgMSwgMjU0LCAyMzIsIDk4LCAxLCAyNDIsIDMsIDUwLCA5OCwgMSwgMjMzLCAxMjcsIDUwLCAyNCwgCisgICAgMTAwLCAyMzQsIDU4LCAyNCwgMTAwLCAyMTgsIDIxNSwgMjQsIDEwMCwgMjI4LCAyMjYsIDI0LCAxMDAsIDIxNiwgMTAxLCAKKyAgICAyNCwgMTAwLCAyMTgsIDIwNCwgMjQsIDEwMCwgMjIzLCAyNiwgMjQsIDEwMCwgMjMwLCAyMTcsIDI0LCAxMDAsIDIyNSwgOTUsIAorICAgIDI0LCAxMDAsIDIxOCwgMjEyLCAyNCwgMTAwLCAyMTksIDE0OCwgMjQsIDEwMCwgMjE4LCAyMDksIDI0LCAxMDAsIDIzNiwgCisgICAgNTYsIDI0LCAxMDAsIDI1MCwgNDYsIDI0LCAxMDAsIDIxOCwgMjE5LCAyNCwgMTAwLCAyNTAsIDEwNiwgMjQsIDEwMCwgMjM0LCAKKyAgICAxMTAsIDI0LCAxMDAsIDIxNiwgMTczLCAyNCwgMTAwLCAyMjUsIDEzMSwgMjQsIDEwMCwgMjQxLCAxNzIsIDI0LCAxMDAsIAorICAgIDIyOCwgMjIyLCAyNCwgMTAwLCAyMTgsIDIxMywgMjQsIDEwMCwgMjI4LCAyMTYsIDI0LCAxMDAsIDIyOCwgMjIwLCAyNCwgCisgICAgMTAwLCAyMTYsIDk4LCAyNCwgMTAwLCAyMjMsIDE0LCAyNCwgMTAwLCAyMTgsIDIxMSwgMjQsIDEwMCwgMjIzLCAyNCwgMjQsIAorICAgIDEwMCwgMjM0LCAyMTgsIDI0LCAxMDAsIDIzMCwgMjEwLCAyNCwgMTAwLCAyMzQsIDIyMSwgMjQsIDEwMCwgMjI1LCA5MCwgCisgICAgMjQsIDEwMCwgMjI1LCA4OCwgMjQsIDEwMCwgMjI1LCA3NiwgMjQsIDEwMCwgMjI1LCA4NCwgMjQsIDEwMCwgMjI1LCA4MiwgCisgICAgMjQsIDEwMCwgMjI1LCA3OSwgMjQsIDEwMCwgMjI1LCA4MSwgMjQsIDEwMCwgMjI1LCA3OCwgMjQsIDEwMCwgMjI1LCA4MywgCisgICAgMjQsIDEwMCwgMjI1LCA5MywgMjQsIDEwMCwgMjI1LCA5NCwgMjQsIDEwMCwgMjI1LCA3NywgMjQsIDEwMCwgMjI1LCA4NywgCisgICAgMjQsIDEwMCwgMjM0LCAyMTksIDI0LCAxMDAsIDIzNCwgMjE3LCAyNCwgMTAwLCAyMTksIDE0MSwgMjQsIDEwMCwgMjE5LCAKKyAgICAxMzksIDI0LCAxMDAsIDIxOSwgMTMxLCAyNCwgMTAwLCAyMTksIDEzNCwgMjQsIDEwMCwgMjE5LCAxNDAsIDI0LCAxMDAsIAorICAgIDIxOSwgMTM2LCAyNCwgMTAwLCAyMTksIDEzNSwgMjQsIDEwMCwgMjE5LCAxMzMsIDI0LCAxMDAsIDIxOSwgMTQ0LCAyNCwgCisgICAgMTAwLCAyMTksIDE0NiwgMjQsIDEwMCwgMjE5LCAxNDcsIDI0LCAxMDAsIDIxOSwgMTQyLCAyNCwgMTAwLCAyMTksIDEzMiwgCisgICAgMjQsIDEwMCwgMjE5LCAxMzcsIDI0LCAxMDAsIDIxOSwgMTQ1LCAyNCwgMTAwLCAyNTAsIDkwLCAyNCwgMTAwLCAyNTAsIDg4LCAKKyAgICAyNCwgMTAwLCAyNTAsIDE2OCwgMjQsIDEwMCwgMjUwLCAxNjYsIDI0LCAxMDAsIDIyNiwgMzIsIDI0LCAxMDAsIDIzNiwgNTEsIAorICAgIDI0LCAxMDAsIDIzNiwgNDIsIDI0LCAxMDAsIDIzNiwgNTAsIDI0LCAxMDAsIDIzNiwgNDcsIDI0LCAxMDAsIDIzNiwgNDUsIAorICAgIDI0LCAxMDAsIDIzNiwgNDksIDI0LCAxMDAsIDIxOCwgMjE2LCAyNCwgMTAwLCAyMzYsIDU0LCAyNCwgMTAwLCAyMzYsIDU1LCAKKyAgICAyNCwgMTAwLCAyMzYsIDQzLCAyNCwgMTAwLCAyMzYsIDQ4LCAyNCwgMTAwLCAyMTEsIDI2LCAyNCwgMTAwLCAyNTAsIDQ1LCAKKyAgICAyNCwgMTAwLCAyNTAsIDkxLCAyNCwgMTAwLCAyNTAsIDg5LCAyNCwgMTAwLCAyNTAsIDE2OSwgMjQsIDEwMCwgMjUwLCAxNjcsIAorICAgIDI0LCAxMDAsIDI1MCwgMTA0LCAyNCwgMTAwLCAyNTAsIDEwNSwgMjQsIDEwMCwgMjUwLCA5MiwgMjQsIDEwMCwgMjUwLCAKKyAgICAxNzAsIDI0LCAxMDAsIDIyNSwgMTI5LCAyNCwgMTAwLCAyMzQsIDIyMCwgMjQsIDEwMCwgMjE4LCAyMTcsIDI0LCAxMDAsIAorICAgIDIxMSwgMzIsIDI0LCAxMDAsIDIzNCwgNDksIDI0LCAxMDAsIDIyOCwgMjE4LCAyNCwgMTAwLCAyMjgsIDIyNCwgMjQsIDEwMCwgCisgICAgMjI4LCAyMjMsIDI0LCAxMDAsIDIxNiwgOTUsIDI0LCAxMDAsIDI0NCwgMTAzLCAyNCwgMTQzLCAyNDQsIDEwMywgMjQsIAorICAgIDE0MywgNjEsIDI0LCAxNDMsIDI1NCwgMjQzLCAyNCwgMTQzLCAxOTEsIDI0LCAxNDMsIDIxMSwgOTIsIDI0LCAxNDMsIDI0NSwgCisgICAgMTE3LCAyNCwgMTQzLCA3NSwgMjQsIDE0MywgMjExLCAzNiwgMjQsIDE0MywgMjExLCA0NywgMjQsIDE0MywgNzYsIDI0LCAKKyAgICAxNDMsIDIxMiwgNjUsIDI0LCAxNDMsIDIxMiwgNjIsIDI0LCAxNDMsIDIyNiwgMjM0LCAyNCwgMTQzLCAyMTAsIDI0NCwgMjQsIAorICAgIDE0MywgNzAsIDI0LCAxNDMsIDIxMiwgMTEsIDI0LCAxNDMsIDIxMiwgMjIsIDI0LCAxNDMsIDIxMSwgMjUwLCAyNCwgMTQzLCAKKyAgICAyMTAsIDIxMiwgMjQsIDE0MywgMjQ1LCA1NSwgMjQsIDE0MywgMjExLCA4LCAyNCwgMTQzLCA3MywgMjQsIDE0MywgMjU1LCAKKyAgICAxNTcsIDI0LCAxNDMsIDI1NSwgMTU2LCAyNCwgMTQzLCAyMTEsIDEwNiwgMjQsIDE0MywgMjExLCAxMDQsIDI0LCAxNDMsIAorICAgIDI0NSwgMTE1LCAyNCwgMTQzLCAyNDUsIDExNCwgMjQsIDE0MywgMjQ1LCAxMTYsIDI0LCAxNDMsIDIxMSwgMzUsIDI0LCAKKyAgICAxNDMsIDIxMSwgMzQsIDI0LCAxNDMsIDIyNywgODQsIDI0LCAxNDMsIDIyNywgODUsIDI0LCAxNDMsIDIyNywgNzgsIDI0LCAKKyAgICAxNDMsIDIyNywgODMsIDI0LCAxNDMsIDIyNywgODEsIDI0LCAxNDMsIDIxMCwgMjM4LCAyNCwgMTQzLCAyMTAsIDIzNywgMjQsIAorICAgIDE0MywgMjEwLCAyMzYsIDI0LCAxNDMsIDIxMCwgMjM5LCAyNCwgMTQzLCAyMTAsIDI0MCwgMjQsIDE0MywgMjE1LCAzMCwgCisgICAgMjQsIDE0MywgMjE1LCAyOSwgMjQsIDE0MywgMjE1LCAyNywgMjQsIDE0MywgMjE1LCAyNCwgMjQsIDE0MywgMjE1LCAyNSwgCisgICAgMjQsIDE0MywgMjEwLCAyMTEsIDI0LCAxNDMsIDIxMCwgMjA4LCAyNCwgMTQzLCAyMTAsIDIwOSwgMjQsIDE0MywgMjEwLCAKKyAgICAyMDMsIDI0LCAxNDMsIDIxMCwgMjA0LCAyNCwgMTQzLCAyMTAsIDIwNSwgMjQsIDE0MywgMjEwLCAyMDcsIDI0LCAxNDMsIAorICAgIDI0NSwgNDksIDI0LCAxNDMsIDI0NSwgNTEsIDI0LCAxNDMsIDIxMSwgNywgMjQsIDE0MywgMjQwLCAxNTMsIDI0LCAxNDMsIAorICAgIDI0MCwgMTQ1LCAyNCwgMTQzLCAyNDAsIDE0OCwgMjQsIDE0MywgMjQwLCAxNDYsIDI0LCAxNDMsIDI0MCwgMTUwLCAyNCwgCisgICAgMTQzLCAyNDAsIDE1MiwgMjQsIDE0MywgMjU0LCAzNCwgMjQsIDE0MywgMjU0LCAzMSwgMjQsIDE0MywgMjU0LCAyOSwgMjQsIAorICAgIDE0MywgMjU0LCAzMCwgMjQsIDE0MywgMjE4LCAyMjAsIDI0LCAxNDMsIDI1NSwgMTU4LCAyNCwgMTQzLCAyMTEsIDEwNSwgCisgICAgMjQsIDE0MywgMjExLCAzMywgMjQsIDE0MywgMjI3LCA4MCwgMjQsIDE0MywgMjI3LCA3OSwgMjQsIDkwLCAyMzQsIDU4LCAKKyAgICAyNCwgOTAsIDIxOCwgMjE1LCAyNCwgOTAsIDIzNCwgNTEsIDI0LCA5MCwgMjI4LCAyMjYsIDI0LCA5MCwgMjI4LCAyMjQsIAorICAgIDI0LCA5MCwgMjI4LCAyMjMsIDI0LCA5MCwgMjE2LCAxMDEsIDI0LCA5MCwgMjIzLCAyNiwgMjQsIDkwLCAyMjMsIDIxLCAyNCwgCisgICAgOTAsIDIyMywgMTgsIDI0LCA5MCwgMjIzLCAxMSwgMjQsIDkwLCAyMjMsIDYsIDI0LCA5MCwgMjIzLCAxLCAyNCwgOTAsIAorICAgIDIyMywgMTIsIDI0LCA5MCwgMjIzLCAyNCwgMjQsIDkwLCAyMzAsIDIxNywgMjQsIDkwLCAyMjUsIDk1LCAyNCwgOTAsIDIyNSwgCisgICAgODQsIDI0LCA5MCwgMjE5LCAxNDgsIDI0LCA5MCwgMjE4LCAyMDksIDI0LCA5MCwgMjM2LCA1NiwgMjQsIDkwLCAyNTAsIDQ2LCAKKyAgICAyNCwgOTAsIDI1MCwgMTA2LCAyNCwgOTAsIDIzNCwgMTEwLCAyNCwgOTAsIDIxNiwgMTczLCAyNCwgOTAsIDIyNSwgMTMxLCAKKyAgICAyNCwgOTAsIDI0MSwgMTcyLCAyNCwgOTAsIDIzNCwgNTIsIDI0LCA5MCwgMjM0LCA1MCwgMjQsIDkwLCAyMjgsIDIyMiwgMjQsIAorICAgIDkwLCAyMjgsIDIxNiwgMjQsIDkwLCAyMjgsIDIxOCwgMjQsIDkwLCAyMjgsIDIyMSwgMjQsIDkwLCAyMjgsIDIxNywgMjQsIAorICAgIDkwLCAyMTYsIDk4LCAyNCwgOTAsIDIxNiwgOTUsIDI0LCA5MCwgMjIzLCAxOSwgMjQsIDkwLCAyMjMsIDE0LCAyNCwgOTAsIAorICAgIDIyMywgMCwgMjQsIDkwLCAyMjIsIDI1NSwgMjQsIDkwLCAyMTgsIDIxMSwgMjQsIDkwLCAyMjMsIDE2LCAyNCwgOTAsIDIyMywgCisgICAgMTUsIDI0LCA5MCwgMjIzLCA4LCAyNCwgOTAsIDIyMywgMTAsIDI0LCA5MCwgMjIzLCAyMywgMjQsIDkwLCAyMjMsIDMsIDI0LCAKKyAgICA5MCwgMjIzLCAxMywgMjQsIDkwLCAyMjMsIDIyLCAyNCwgOTAsIDIyMiwgMjU0LCAyNCwgOTAsIDIzMCwgMjEzLCAyNCwgOTAsIAorICAgIDIzMCwgMjA4LCAyNCwgOTAsIDIzMCwgMjEwLCAyNCwgOTAsIDIzMCwgMjA3LCAyNCwgOTAsIDIzMCwgMjA1LCAyNCwgOTAsIAorICAgIDIzMCwgMjExLCAyNCwgOTAsIDIzMCwgMjE2LCAyNCwgOTAsIDIzMCwgMjE0LCAyNCwgOTAsIDIzNCwgMjIxLCAyNCwgOTAsIAorICAgIDIyNSwgODYsIDI0LCA5MCwgMjI1LCA4NywgMjQsIDkwLCAyMjUsIDkyLCAyNCwgOTAsIDIzNCwgMjE5LCAyNCwgOTAsIDIxOSwgCisgICAgMTQxLCAyNCwgOTAsIDIxOSwgMTMxLCAyNCwgOTAsIDIxOSwgMTM0LCAyNCwgOTAsIDIxOSwgMTM2LCAyNCwgOTAsIDIyNiwgCisgICAgMzIsIDI0LCA5MCwgMjM2LCA1MSwgMjQsIDkwLCAyMzYsIDQ0LCAyNCwgOTAsIDIxOCwgMjE2LCAyNCwgOTAsIDIzNiwgNTIsIAorICAgIDI0LCA5MCwgMjExLCAyNiwgMjQsIDkwLCAyMTEsIDIyLCAyNCwgOTAsIDIxMSwgMjMsIDI0LCA5MCwgMjI1LCAxMjksIDI0LCAKKyAgICA5MCwgMjM0LCAyMjAsIDI0LCA5MCwgMjQxLCAxNzAsIDI0LCA5MCwgMjQxLCAxNjgsIDI0LCA5MCwgMjQxLCAxNzEsIDI0LCAKKyAgICA5MCwgMjQxLCAxNjksIDI0LCA5MCwgMjExLCAzMiwgMjQsIDkwLCAyMzQsIDU0LCAyNCwgOTAsIDIzNCwgNTMsIDI0LCA5MCwgCisgICAgMjM0LCA1NywgMjQsIDkwLCAyMzQsIDU1LCAyNCwgOTAsIDIzNCwgNTYsIDI0LCA5MCwgMjE4LCAyMTMsIDI5LCAzLCAxNjIsIAorICAgIDI5LCAzLCAyNDAsIDIyMiwgMjksIDMsIDI0MSwgMTgwLCAyOSwgMywgMjQyLCA0NiwgMjksIDMsIDI0MSwgMjIwLCAyOSwgMywgCisgICAgMjQxLCAyMzgsIDI5LCAzLCAyNDEsIDY4LCAyOSwgMywgMjQxLCA2NywgMjksIDMsIDIzMywgMTM1LCAyOSwgMywgMjMyLCAKKyAgICA5OCwgMjksIDMsIDIzMiwgMjQxLCAyOSwgMywgMjMzLCAxMzQsIDI5LCAzLCAyMzMsIDUwLCAyOSwgMywgMjMzLCA1OCwgMjksIAorICAgIDMsIDIzMiwgMTU2LCAyOSwgMywgMjMyLCA3MCwgMjksIDMsIDI0MSwgMTg5LCAyOSwgMywgMjQxLCAxODMsIDI5LCAzLCAKKyAgICAyNDEsIDE4NSwgMjksIDMsIDI0MSwgMTg4LCAyOSwgMywgMjQxLCAxODYsIDI5LCAzLCAyNDEsIDE4NywgMjksIDMsIDI0MSwgCisgICAgMTg0LCAyOSwgMywgMjQxLCAxODIsIDI5LCAzLCAxODQsIDI5LCAzLCAyMzAsIDEwMiwgMjksIDMsIDIzMCwgMjMwLCAyOSwgCisgICAgMywgMjMxLCAyMzcsIDI5LCAzLCAyMzEsIDgwLCAyOSwgMywgMjMxLCA5MSwgMjksIDMsIDIzMCwgMTYxLCAyOSwgMywgMjMwLCAKKyAgICA0MiwgMjksIDMsIDIxNywgMTYzLCAyOSwgMywgMjE3LCAxNTcsIDI5LCAzLCAyMTcsIDE1OSwgMjksIDMsIDIxNywgMTYyLCAKKyAgICAyOSwgMywgMjE3LCAxNjAsIDI5LCAzLCAyMTcsIDE2MSwgMjksIDMsIDIxNywgMTU4LCAyOSwgMywgMjE3LCAxNTYsIDI5LCAKKyAgICAzLCAyMDUsIDI5LCAzLCAyMjIsIDE0MCwgMjksIDMsIDIyMywgMzUsIDI5LCAzLCAyMjMsIDE4NCwgMjksIDMsIDIyMywgCisgICAgMTA4LCAyOSwgMywgMjIzLCAxMjgsIDI5LCAzLCAyMjIsIDIxMSwgMjksIDMsIDIyMiwgMTA5LCAyOSwgMywgMjA2LCAyOSwgCisgICAgMywgMjE4LCA4MywgMjksIDMsIDIxOSwgMTkxLCAyOSwgMywgMjIyLCAzMSwgMjksIDMsIDIyMSwgMTcwLCAyOSwgMywgMjIxLCAKKyAgICAxODEsIDI5LCAzLCAyMTksIDU4LCAyOSwgMywgMjE3LCAyNTMsIDI5LCAzLCAyMjAsIDEwMiwgMjksIDMsIDIxOSwgMjI1LCAKKyAgICAyOSwgMywgMjIwLCAzMiwgMjksIDMsIDIyMCwgOTgsIDI5LCAzLCAyMjAsIDYxLCAyOSwgMywgMjIwLCA2MywgMjksIDMsIAorICAgIDIyMCwgNywgMjksIDMsIDIxOSwgMjA4LCAyOSwgMywgMjI0LCA4OCwgMjksIDMsIDIyNCwgMzAsIDI5LCAzLCAyMjQsIDUzLCAKKyAgICAyOSwgMywgMjI0LCA4NywgMjksIDMsIDIyNCwgNjgsIDI5LCAzLCAyMjQsIDY5LCAyOSwgMywgMjI0LCA0MiwgMjksIDMsIAorICAgIDIyNCwgNDEsIDI5LCAzLCAyMjMsIDI0MiwgMjksIDMsIDIyMywgMjM4LCAyOSwgMywgMjIzLCAyNDEsIDI5LCAzLCAyMjMsIAorICAgIDIzOSwgMjksIDMsIDIyMywgMjQwLCAyOSwgMywgMjI0LCA2NSwgMjksIDMsIDIyNCwgNTksIDI5LCAzLCAyMjQsIDYxLCAyOSwgCisgICAgMywgMjI0LCA2NCwgMjksIDMsIDIyNCwgNjIsIDI5LCAzLCAyMjQsIDYzLCAyOSwgMywgMjI0LCA2MCwgMjksIDMsIDIyNCwgCisgICAgNTgsIDI5LCAzLCAyMjQsIDU0LCAyOSwgMywgMjI0LCA1NywgMjksIDMsIDIyNCwgNTUsIDI5LCAzLCAyMjQsIDU2LCAyOSwgCisgICAgMywgMjUyLCAxOTEsIDI5LCAzLCAyNTEsIDEyNSwgMjksIDMsIDI1MiwgNiwgMjksIDMsIDI1MiwgMTg5LCAyOSwgMywgMjUyLCAKKyAgICA2NiwgMjksIDMsIDI1MiwgNzUsIDI5LCAzLCAyNTEsIDIwNSwgMjksIDMsIDI1MSwgODMsIDI5LCAzLCAyMTQsIDI3LCAyOSwgCisgICAgMywgMjEyLCAxMTYsIDI5LCAzLCAyMTMsIDE3NiwgMjksIDMsIDIxNCwgMjYsIDI5LCAzLCAyMTMsIDI1MCwgMjksIDMsIAorICAgIDIxMywgMjU1LCAyOSwgMywgMjEzLCAxMzgsIDI5LCAzLCAyMTIsIDEwNywgMjksIDMsIDIxNywgMTA1LCAyOSwgMywgMjE1LCAKKyAgICAxMTgsIDI5LCAzLCAyMTYsIDExNywgMjksIDMsIDIxNywgMTAxLCAyOSwgMywgMjE3LCAxMSwgMjksIDMsIDIxNywgMjIsIAorICAgIDI5LCAzLCAxMTEsIDI5LCAzLCAyMTUsIDgwLCAyOSwgMywgMjUxLCAzMywgMjksIDMsIDI0OSwgMTEyLCAyOSwgMywgMjUwLCAKKyAgICA1MSwgMjksIDMsIDI1MSwgMzIsIDI5LCAzLCAyNTAsIDE4MiwgMjksIDMsIDI1MCwgMTkwLCAyOSwgMywgMjQ5LCAyMzgsIAorICAgIDI5LCAzLCAyNDksIDgxLCAyOSwgMywgMjExLCAxNjUsIDI5LCAzLCAyMTEsIDE0MSwgMjksIDMsIDIxMSwgMTU3LCAyOSwgMywgCisgICAgMjExLCAxNjQsIDI5LCAzLCAyMTEsIDE2MSwgMjksIDMsIDIxMSwgMTYyLCAyOSwgMywgMjExLCAxNDgsIDI5LCAzLCAyMTEsIAorICAgIDE0NywgMjksIDMsIDIxMSwgMTM2LCAyOSwgMywgMjExLCAxMzIsIDI5LCAzLCAyMTEsIDEzNSwgMjksIDMsIDIxMSwgMTMzLCAKKyAgICAyOSwgMywgMjExLCAxMzQsIDI5LCAzLCAxOTcsIDI5LCAzLCAyMjcsIDIzNywgMjksIDMsIDIyOCwgMjMzLCAyOSwgMywgCisgICAgMjI5LCAyMjUsIDI5LCAzLCAyMjksIDEwMywgMjksIDMsIDIyOSwgMTA3LCAyOSwgMywgMjI4LCA3NCwgMjksIDMsIDIyNywgCisgICAgMTc0LCAyOSwgMywgMjI3LCAxNjUsIDI5LCAzLCAyMjcsIDEyOCwgMjksIDMsIDIyNywgMTQ4LCAyOSwgMywgMjI3LCAxNjQsIAorICAgIDI5LCAzLCAyMjcsIDE1NSwgMjksIDMsIDIyNywgMTU2LCAyOSwgMywgMjI3LCAxMzQsIDI5LCAzLCAyMjcsIDExOSwgMjksIAorICAgIDMsIDI0MiwgMTgwLCA2MSwgMjksIDMsIDI0MiwgMTgwLCA3MCwgMjksIDMsIDI0MiwgMTgwLCA3MywgMjksIDMsIDI0MiwgCisgICAgMTgwLCAyNTUsIDczLCAyOSwgMywgMjQyLCAxODAsIDI0NSwgMjA5LCAyOSwgMywgMjQyLCAxODAsIDc1LCAyOSwgMywgMjQyLCAKKyAgICAxODAsIDc2LCAyOSwgMywgMjQyLCAxODAsIDIxMiwgNjUsIDI5LCAzLCAxNzYsIDI5LCAzLCAyMzMsIDIxNywgMjksIDMsIAorICAgIDIzNCwgOTIsIDI5LCAzLCAyMzUsIDEwLCAyOSwgMywgMjM0LCAxODEsIDI5LCAzLCAyMzQsIDE4MiwgMjksIDMsIDIzNCwgCisgICAgMjgsIDI5LCAzLCAyMzQsIDI3LCAyOSwgMywgMjMzLCAxODIsIDI5LCAzLCAyMzMsIDE3NiwgMjksIDMsIDIzMywgMTgxLCAKKyAgICAyOSwgMywgMjMzLCAxNzcsIDI5LCAzLCAyMzMsIDE3OCwgMjksIDMsIDIzMywgMTcxLCAyOSwgMywgMjMzLCAxNjUsIDI5LCAKKyAgICAzLCAyMzMsIDE2NywgMjksIDMsIDIzMywgMTcwLCAyOSwgMywgMjMzLCAxNjgsIDI5LCAzLCAyMzMsIDE2OSwgMjksIDMsIAorICAgIDIzMywgMTY2LCAyOSwgMywgMjMzLCAxNjQsIDI5LCAzLCAyMzMsIDE2MCwgMjksIDMsIDIzMywgMTYzLCAyOSwgMywgMjMzLCAKKyAgICAxNjEsIDI5LCAzLCAyMzMsIDE2MiwgMjksIDMsIDIxMiwgNjUsIDI5LCAzLCAyMTEsIDE5NSwgMjksIDMsIDIxMSwgMjUwLCAKKyAgICAyOSwgMywgMjEyLCA2NCwgMjksIDMsIDIxMiwgMTcsIDI5LCAzLCAyMTIsIDIyLCAyOSwgMywgMjExLCAyMjcsIDI5LCAzLCAKKyAgICAyMTEsIDIyNiwgMjksIDMsIDIyNSwgMTM5LCA2MSwgMjksIDMsIDIyNSwgMTM5LCA3MCwgMjksIDMsIDIyNSwgMTM5LCA3MywgCisgICAgMjksIDMsIDIyNSwgMTM5LCAyNTUsIDczLCAyOSwgMywgMjI1LCAxMzksIDI0NSwgMjA5LCAyOSwgMywgMjI1LCAxMzksIDc1LCAKKyAgICAyOSwgMywgMjI1LCAxMzksIDc2LCAyOSwgMywgMjEwLCAxMTYsIDI5LCAzLCAyMTAsIDEzLCAyOSwgMywgMjEwLCA0NCwgMjksIAorICAgIDMsIDIxMCwgMTE1LCAyOSwgMywgMjEwLCA5MiwgMjksIDMsIDIxMCwgOTQsIDI5LCAzLCAyMTAsIDIzLCAyOSwgMywgMjEwLCAKKyAgICAwLCAyOSwgMywgMjEwLCA4MiwgMjksIDMsIDIxMCwgNjIsIDI5LCAzLCAyMTAsIDY5LCAyOSwgMywgMjEwLCA4MSwgMjksIDMsIAorICAgIDIxMCwgNzMsIDI5LCAzLCAyMTAsIDc0LCAyOSwgMywgMjEwLCA2NywgMjksIDMsIDIxMCwgNTMsIDI5LCAzLCAxOTEsIDI5LCAKKyAgICAzLCAyMTAsIDIxMiwgMjksIDMsIDIxMSwgOCwgMjksIDMsIDIxMSwgMTAzLCAyOSwgMywgMjExLCA0NCwgMjksIDMsIDIxMSwgCisgICAgNDcsIDI5LCAzLCAyMTAsIDI0NCwgMjksIDMsIDIxMCwgMjM1LCAyOSwgMywgMjQ4LCAyMjEsIDI5LCAzLCAyNDYsIDc4LCAKKyAgICAyOSwgMywgMjQ4LCAzLCAyOSwgMywgMjQ4LCAyMjAsIDI5LCAzLCAyNDgsIDc3LCAyOSwgMywgMjQ4LCA5MCwgMjksIDMsIAorICAgIDI0NywgMTQ1LCAyOSwgMywgMjQ2LCA0NywgMjksIDMsIDI0OCwgMTM1LCAyOSwgMywgMjQ4LCAxMDAsIDI5LCAzLCAyNDgsIAorICAgIDExMiwgMjksIDMsIDI0OCwgMTM0LCAyOSwgMywgMjQ4LCAxMjIsIDI5LCAzLCAyNDgsIDEyMywgMjksIDMsIDI0OCwgMTA1LCAKKyAgICAyOSwgMywgMjQ4LCA5MSwgMjksIDMsIDIzNSwgMTQxLCAyOSwgMywgMjM1LCA1MSwgMjksIDMsIDIzNSwgMTA4LCAyOSwgMywgCisgICAgMjM1LCAxNDAsIDI5LCAzLCAyMzUsIDEyNCwgMjksIDMsIDIzNSwgMTI2LCAyOSwgMywgMjM1LCA2OCwgMjksIDMsIDIzNSwgCisgICAgMzEsIDI5LCAzLCAyNDMsIDEzNSwgMjksIDMsIDI0MiwgMTEzLCAyOSwgMywgMjQyLCAyMTQsIDI5LCAzLCAyNDMsIDEzMiwgCisgICAgMjksIDMsIDI0MywgNTUsIDI5LCAzLCAyNDMsIDYyLCAyOSwgMywgMjQyLCAxNzQsIDI5LCAzLCAyNDIsIDE3MywgMjksIDMsIAorICAgIDI0MiwgNzgsIDI5LCAzLCAyNDIsIDc0LCAyOSwgMywgMjQyLCA3NywgMjksIDMsIDI0MiwgNzUsIDI5LCAzLCAyNDIsIDc2LCAKKyAgICAyOSwgMywgMjQzLCAyOSwgMjksIDMsIDI0MywgOSwgMjksIDMsIDI0MywgMTksIDI5LCAzLCAyNDMsIDI4LCAyOSwgMywgCisgICAgMjQzLCAyMywgMjksIDMsIDI0MywgMjQsIDI5LCAzLCAyNDMsIDEzLCAyOSwgMywgMjQyLCAyNTQsIDI5LCAzLCAyMTYsIAorICAgIDIwOCwgMjksIDMsIDIxNiwgMTM2LCAyOSwgMywgMjE2LCAxNzUsIDI5LCAzLCAyMTYsIDIwNywgMjksIDMsIDIxNiwgMTk0LCAKKyAgICAyOSwgMywgMjE2LCAxOTUsIDI5LCAzLCAyMTYsIDE1NiwgMjksIDMsIDIxNiwgMTI4LCAyOSwgMywgMjUwLCAxNTcsIDI5LCAKKyAgICAzLCAyNTAsIDY5LCAyOSwgMywgMjUwLCAxMTAsIDI5LCAzLCAyNTAsIDE1NiwgMjksIDMsIDI1MCwgMTI4LCAyOSwgMywgCisgICAgMjUwLCAxMzEsIDI5LCAzLCAyNTAsIDg2LCAyOSwgMywgMjUwLCA1OCwgMjksIDMsIDIyNSwgMTQ3LCAyOSwgMywgMjI1LCAKKyAgICAxMTQsIDI5LCAzLCAyMjUsIDEzMywgMjksIDMsIDIyNSwgMTQ2LCAyOSwgMywgMjI1LCAxMzUsIDI5LCAzLCAyMjUsIDEzNiwgCisgICAgMjksIDMsIDIyNSwgMTIxLCAyOSwgMywgMjI1LCAxMTAsIDI5LCAzLCAyMTUsIDE4MywgMjksIDMsIDIxNSwgMTYzLCAyOSwgCisgICAgMywgMjE1LCAxNjcsIDI5LCAzLCAyMTUsIDE4MiwgMjksIDMsIDIxNSwgMTc3LCAyOSwgMywgMjE1LCAxNzgsIDI5LCAzLCAKKyAgICAyMTUsIDE2NiwgMjksIDMsIDIxNSwgMTYxLCAyOSwgMywgMjE1LCAzOSwgMjksIDMsIDIxNSwgMzEsIDI5LCAzLCAyMTUsIAorICAgIDM1LCAyOSwgMywgMjE1LCAzOCwgMjksIDMsIDIxNSwgMzYsIDI5LCAzLCAyMTUsIDM3LCAyOSwgMywgMjE1LCAzMywgMjksIAorICAgIDMsIDIxNSwgMzIsIDI5LCAzLCAyNDQsIDE5NiwgMjksIDMsIDI0MywgMjM0LCAyOSwgMywgMjQ0LCAxMjEsIDI5LCAzLCAKKyAgICAyNDQsIDE5NSwgMjksIDMsIDI0NCwgMTQ3LCAyOSwgMywgMjQ0LCAxNTQsIDI5LCAzLCAyNDQsIDQzLCAyOSwgMywgMjQzLCAKKyAgICAyMTMsIDI5LCAzLCAxOTAsIDI5LCAzLCAyMjQsIDE1MCwgMjksIDMsIDIyNSwgMTA4LCAyOSwgMywgMjI2LCA4OSwgMjksIDMsIAorICAgIDIyNSwgMjExLCAyOSwgMywgMjI1LCAyMjEsIDI5LCAzLCAyMjUsIDE2LCAyOSwgMywgMjI0LCAxMTQsIDI5LCAzLCAyMjIsIAorICAgIDk5LCAyOSwgMywgMjMwLCAzMSwgMjksIDMsIDI0MywgMjA3LCAyOSwgMzgsIDI0MywgNTMsIDIyLCAyNSwgMjMzLCAyMywgCisgICAgNzgsIDI5LCAzOCwgMjUsIDIzMywgMjMsIDc4LCAyOSwgMzgsIDI0MywgNTMsIDc4LCAyOSwgMjIxLCAxNzMsIDc4LCAyOSwgCisgICAgMjExLCAyMDgsIDI5LCAyNDMsIDIyOSwgMjE4LCAxMjksIDI5LCAyNDksIDIxOSwgMjksIDIyMCwgMTUwLCAyOSwgMjQ5LCAKKyAgICAyMjYsIDI5LCAyMjQsIDE5OSwgMjQ5LCAyMjYsIDI5LCAyMjQsIDEzLCA3OCwgMjksIDIyNiwgMTUsIDIyMCwgMTM3LCAyOSwgCisgICAgMjEsIDExMCwgMjksIDIxLCAxMDUsIDI5LCAyMSwgMTU4LCAyOSwgMjEsIDE2MSwgMjksIDIxLCAxODksIDI5LCAyMSwgMTk0LCAKKyAgICAyOSwgMjEsIDE5OCwgMjksIDIxLCAxOTUsIDI5LCAyMSwgMjAwLCAyOSwgNTQsIDIxNiwgMjQ3LCAyOSwgNTQsIDIxNSwgNzMsIAorICAgIDI5LCA1NCwgMjE2LCAxNjIsIDI5LCA1NCwgMjQ0LCAxNSwgMjksIDU0LCAyNDQsIDExNCwgMjksIDU0LCAyMTksIDExMSwgCisgICAgMjksIDU0LCAyMjAsIDExNiwgMjksIDU0LCAyNDUsIDE4NCwgMjksIDU0LCAyMjgsIDE5NSwgMjksIDU0LCAyNDAsIDIxMCwgCisgICAgMjksIDU0LCAyMTYsIDI0OCwgMjE2LCAxNDcsIDI5LCAzLCAyMjEsIDE3NywgMjMwLCA0MiwgMjksIDMsIDIzMCwgMzgsIDI5LCAKKyAgICAzLCAyMzAsIDM5LCAyOSwgMywgMjMwLCA0MCwgMjksIDMsIDIyMSwgMTc3LCAyNTEsIDgzLCAyOSwgMywgMjUxLCA4MCwgMjksIAorICAgIDMsIDI1MSwgODEsIDI5LCAzLCAyNTEsIDgyLCAyOSwgMywgMjIxLCAxNzcsIDI0MywgMjEzLCAyOSwgMywgMjQzLCAyMDksIAorICAgIDI5LCAzLCAyNDMsIDIxMCwgMjksIDMsIDI0MywgMjExLCAyOSwgMywgMjIxLCAxNzcsIDIyNCwgMTE0LCAyOSwgMywgMjI0LCAKKyAgICAxMTAsIDI5LCAzLCAyMjQsIDExMSwgMjksIDMsIDIyNCwgMTEyLCAyOSwgMjE2LCAzMSwgMTY0LCAyMTAsIDI0NywgMjksIAorICAgIDIxNiwgMzEsIDE2NCwgMjQ4LCA0MSwgMjksIDIxNiwgMzEsIDE2NCwgMjIyLCAyMzgsIDI5LCAyMTYsIDMxLCAxNjQsIDIxOSwgCisgICAgMjUxLCAyMjIsIDIzOCwgMjksIDIxNiwgMzEsIDE2NCwgMjQ3LCAyMzUsIDI5LCAyMTYsIDMxLCAxNjQsIDIzNCwgMTY0LCAKKyAgICAyOSwgMjE2LCAzMSwgMTY0LCAyNTAsIDk0LCAyOSwgMjE2LCAzMSwgMTY0LCAyNDEsIDE3NywgMjksIDIxNiwgMzEsIDE2NCwgCisgICAgMjQ4LCA0MCwgMjksIDIxNiwgMzEsIDE2NCwgMjMzLCAxOTQsIDE2OSwgMSwgNjEsIDE2OSwgMSwgNzUsIDE2OSwgMSwgNzMsIAorICAgIDE2OSwgMSwgNzYsIDE2OSwgMSwgNzAsIDE2OSwgMSwgMjE0LCAxMDUsIDE2OSwgMSwgMjQzLCAxMzUsIDE2OSwgMSwgMTc2LCAKKyAgICAxNjksIDEsIDI0MywgNjIsIDE2OSwgMSwgMjQyLCAyMTQsIDE2OSwgMSwgMjQyLCAxNzQsIDE2OSwgMSwgMjQyLCAxMTMsIAorICAgIDE2OSwgMSwgMjQyLCA3OSwgMTY5LCAxLCAxNjIsIDE2OSwgMSwgMjQxLCAyMzgsIDE2OSwgMSwgMjQxLCAxODAsIDE2OSwgMSwgCisgICAgMjQxLCA2OCwgMTY5LCAxLCAyNDAsIDIyMiwgMTY5LCAxLCAyNDAsIDIwMSwgMTY5LCAxLCAyMzMsIDEzNSwgMTY5LCAxLCAKKyAgICAyMzMsIDU4LCAxNjksIDEsIDIzMiwgMjQxLCAxNjksIDEsIDIzMiwgMTU2LCAxNjksIDEsIDIzMiwgOTgsIDE2OSwgMSwgCisgICAgMjMyLCA3MSwgMTY5LCAxLCAxODQsIDE2OSwgMSwgMjMxLCA5MSwgMTY5LCAxLCAyMzAsIDIzMCwgMTY5LCAxLCAyMzAsIAorICAgIDE2MSwgMTY5LCAxLCAyMzAsIDEwMiwgMTY5LCAxLCAxOTcsIDE2OSwgMSwgMjQxLCA5MCwgMTY5LCAxLCAyMjksIDIxMywgCisgICAgMTY5LCAxLCAyMjksIDEwNywgMTY5LCAxLCAyMjgsIDIzMywgMTY5LCAxLCAyMjgsIDc0LCAxNjksIDEsIDIyNywgMjM3LCAKKyAgICAxNjksIDEsIDIyNywgMTc2LCAxNjksIDEsIDIyNCwgMjksIDE2OSwgMSwgMjI0LCAxNiwgMTY5LCAxLCAyMjQsIDksIDE2OSwgCisgICAgMSwgMjI0LCAxLCAxNjksIDEsIDIyMywgMjQ2LCAxNjksIDEsIDIyMywgMjQ0LCAxNjksIDEsIDIwNiwgMTY5LCAxLCAyMjIsIAorICAgIDkxLCAxNjksIDEsIDIyMSwgMTgxLCAxNjksIDEsIDIxOSwgMTkxLCAxNjksIDEsIDIxOSwgNTgsIDE2OSwgMSwgMjE4LCA4MywgCisgICAgMTY5LCAxLCAyMTgsIDIsIDE2OSwgMSwgMjQ4LCAyMjEsIDE2OSwgMSwgMjE3LCAxMDUsIDE2OSwgMSwgMjQ4LCA5MCwgMTY5LCAKKyAgICAxLCAyMTcsIDIyLCAxNjksIDEsIDI0OCwgMywgMTY5LCAxLCAyMTYsIDExNywgMTY5LCAxLCAyNDcsIDE0NSwgMTY5LCAxLCAKKyAgICAyNDYsIDc4LCAxNjksIDEsIDI0NiwgNTAsIDE2OSwgMSwgMjQ3LCAxNTYsIDE2OSwgMSwgMjE2LCA1OSwgMTY5LCAxLCAyMTYsIAorICAgIDU4LCAxNjksIDEsIDIxNiwgNDcsIDE2OSwgMSwgMjE2LCA0NiwgMTY5LCAxLCAyMTYsIDQ1LCAxNjksIDEsIDIxNiwgNDQsIAorICAgIDE2OSwgMSwgMjE1LCAxODMsIDE2OSwgMSwgMjE1LCAxNzgsIDE2OSwgMSwgMjE1LCAxNjcsIDE2OSwgMSwgMjE1LCAxNjYsIAorICAgIDE2OSwgMSwgMjE1LCAxNjMsIDE2OSwgMSwgMjE1LCAxNjIsIDE2OSwgMSwgMjEyLCA2NSwgMTY5LCAxLCAyMTIsIDIyLCAKKyAgICAxNjksIDEsIDIxMSwgMjUwLCAxNjksIDEsIDIxMSwgMjI3LCAxNjksIDEsIDIxMSwgMTk1LCAxNjksIDEsIDIxMSwgMTgzLCAKKyAgICAxNjksIDEsIDE5MSwgMTY5LCAxLCAyMTEsIDQ3LCAxNjksIDEsIDIxMSwgOCwgMTY5LCAxLCAyMTAsIDI0NCwgMTY5LCAxLCAKKyAgICAyMTAsIDIxMiwgMTY5LCAxLCAyMTAsIDE3NywgMTgsIDE5LCAyNDAsIDE2OCwgMTgsIDE5LCA3NSwgMTgsIDE5LCAyNTUsIAorICAgIDM3LCAxOCwgMTksIDczLCAxOCwgMTksIDIzNiwgMzMsIDE4LCAxOSwgNzYsIDE4LCAxOSwgMjI2LCAxODMsIDE4LCAxOSwgCisgICAgMjExLCAxMTYsIDIyNiwgMTgzLCAxOCwgMTksIDcyLCAyNDUsIDIwOSwgMTgsIDE5LCA3MiwgNzMsIDE4LCAxOSwgNjEsIDE4LCAKKyAgICAxOSwgMjU1LCA3MywgMTgsIDE5LCAyMTIsIDIyLCAxOCwgMTksIDE1OSwgMjEyLCAyMiwgMTgsIDE5LCAyMTEsIDI1MCwgMTgsIAorICAgIDE5LCAxNTksIDIxMSwgMjUwLCAxOCwgMTksIDIxMSwgMjQyLCAxOCwgMTksIDE1OSwgMjExLCAyNDIsIDE4LCAxOSwgMjExLCAKKyAgICAyMjcsIDE4LCAxOSwgMTU5LCAyMTEsIDIyNywgMTgsIDE5LCAyMTEsIDIxNSwgMTgsIDE5LCAxNTksIDIxMSwgMjE1LCAxOCwgCisgICAgMTksIDIyOSwgMTkwLCAyMTEsIDIxNSwgMTgsIDE5LCAyMTIsIDY1LCAxOCwgMTksIDE1OSwgMjEyLCA2NSwgMTgsIDE5LCAKKyAgICAyMTIsIDY0LCAxOCwgMTksIDE1OSwgMjEyLCA2NCwgMTgsIDE5LCAyMjksIDE5MCwgMjEyLCA2NCwgMTgsIDE5LCAyNTQsIAorICAgIDIwMSwgMTgsIDE5LCAyMTEsIDExNiwgMjEyLCA5OCwgMTgsIDE5LCAyNDIsIDE4MCwgMjE4LCAxMjksIDE4LCAxOSwgNDAsIAorICAgIDE0MiwgMTgsIDE5LCA0MCwgMjQyLCAxMzYsIDE4LCAxOSwgNDAsIDI1MSwgMTc1LCAxNjMsIDIyMiwgMjMzLCAxOCwgMTksIAorICAgIDQwLCAyMTYsIDE0LCAxNjMsIDIyMiwgMjMzLCAxOCwgMTksIDQwLCA0NCwgMTYzLCAyMjIsIDIzMywgMTgsIDE5LCA0MCwgCisgICAgMjIyLCAyMzMsIDE4LCAxOSwgNDAsIDUyLCAxNDIsIDE4LCAxOSwgNDAsIDUyLCAyMTksIDI1MSwgNjcsIDIxOCwgOTAsIDE4LCAKKyAgICAxOSwgNDAsIDIzMCwgMjI0LCAyNDcsIDEyMCwgMTgsIDE5LCA0MCwgMjE5LCAyNTEsIDIwMywgOTEsIDE4LCAxOSwgNDAsIAorICAgIDIyNSwgMjIsIDE4LCAxOSwgNDAsIDEyNCwgMjE3LCA4NywgMTgsIDE5LCAyNDUsIDE1MCwgMTgsIDE5LCAyMzUsIDI1NSwgCisgICAgMTgsIDE5LCAyMjYsIDE5NiwgMTgsIDE5LCAyNTQsIDEyMywgMTgsIDE5LCAyMjUsIDIyMSwgMTgsIDE5LCAyMjYsIDg3LCAKKyAgICAxOCwgMTksIDIyNSwgMTA4LCAxOCwgMTksIDIyNSwgNzEsIDE4LCAxOSwgMjI1LCAxNiwgMTgsIDE5LCAyMjQsIDI0OSwgMTgsIAorICAgIDE5LCAyMTEsIDExNiwgMjI0LCAyNDksIDE4LCAxOSwgNzIsIDI0MSwgMjIwLCAxOCwgMTksIDcyLCAyNDEsIDE4MCwgMTgsIAorICAgIDE5LCAxOTAsIDE4LCAxOSwgMjI2LCA4OSwgMTgsIDE5LCAyMjQsIDExMiwgMTgsIDE5LCAxNTksIDIyNCwgMTEyLCAxOCwgCisgICAgMTksIDIyNCwgMTEwLCAxOCwgMTksIDE1OSwgMjI0LCAxMTAsIDE4LCAxOSwgMjI0LCAxMDksIDE4LCAxOSwgMTU5LCAyMjQsIAorICAgIDEwOSwgMTgsIDE5LCAyMjQsIDEwNywgMTgsIDE5LCAxNTksIDIyNCwgMTA3LCAxOCwgMTksIDIyNCwgMTA2LCAxOCwgMTksIAorICAgIDE1OSwgMjI0LCAxMDYsIDE4LCAxOSwgMjI0LCAxMTQsIDE4LCAxOSwgMTU5LCAyMjQsIDExNCwgMTgsIDE5LCAyMjQsIDExMywgCisgICAgMTgsIDE5LCAxNTksIDIyNCwgMTEzLCAxOCwgMTksIDIxMSwgMTE2LCAyMjQsIDExMywgMTgsIDE5LCAyMjYsIDEwNSwgMTgsIAorICAgIDE5LCAxNTksIDIyNiwgMTA1LCAxOCwgMTksIDcyLCAyNDIsIDYwLCAxOCwgMTksIDIxNywgMjIsIDE4LCAxOSwgMjE3LCA5OSwgCisgICAgMTgsIDE5LCAyMTYsIDExNywgMTgsIDE5LCAyMTYsIDEwMywgMTgsIDE5LCAxMTEsIDE4LCAxOSwgMjE2LCAxNywgMTgsIDE5LCAKKyAgICAyMTEsIDExNiwgMjE2LCAxNywgMTgsIDE5LCA3MiwgMjQ4LCA3NywgMTgsIDE5LCA3MiwgMjQ4LCAzLCAxOCwgMTksIDIxNywgCisgICAgMTA1LCAxOCwgMTksIDIxNywgMTAxLCAxOCwgMTksIDIxNSwgNzgsIDE4LCAxOSwgMTU5LCAyMTUsIDc4LCAxOCwgMTksIAorICAgIDIxNSwgNjIsIDE4LCAxOSwgMTU5LCAyMTUsIDYyLCAxOCwgMTksIDIxNSwgNjEsIDE4LCAxOSwgMTU5LCAyMTUsIDYxLCAxOCwgCisgICAgMTksIDEwNSwgMTgsIDE5LCAxNTksIDEwNSwgMTgsIDE5LCAyMTUsIDU0LCAxOCwgMTksIDE1OSwgMjE1LCA1NCwgMTgsIDE5LCAKKyAgICAyMTUsIDgwLCAxOCwgMTksIDE1OSwgMjE1LCA4MCwgMTgsIDE5LCAyMTUsIDc5LCAxOCwgMTksIDE1OSwgMjE1LCA3OSwgMTgsIAorICAgIDE5LCAyMjksIDE5MCwgMjE1LCA3OSwgMTgsIDE5LCAyMTcsIDE1MiwgMTgsIDE5LCAyMTUsIDE1MSwgMTgsIDE5LCAyMTUsIAorICAgIDEzNSwgMTgsIDE5LCAyMTUsIDEzMywgMTgsIDE5LCAyMTUsIDE1NiwgMTgsIDE5LCAyMzQsIDE4MiwgMTgsIDE5LCAyMzUsIAorICAgIDcsIDE4LCAxOSwgMjM0LCA5MiwgMTgsIDE5LCAyMzQsIDgzLCAxOCwgMTksIDIzNCwgMjgsIDE4LCAxOSwgMjM0LCAxMCwgCisgICAgMTgsIDE5LCAyMTEsIDExNiwgMjM0LCAxMCwgMTgsIDE5LCAxNzYsIDE4LCAxOSwgMjM1LCAxMCwgMTgsIDE5LCAyMzMsIAorICAgIDE3OCwgMTgsIDE5LCAxNTksIDIzMywgMTc4LCAxOCwgMTksIDIzMywgMTc2LCAxOCwgMTksIDE1OSwgMjMzLCAxNzYsIDE4LCAKKyAgICAxOSwgMjMzLCAxNzUsIDE4LCAxOSwgMTU5LCAyMzMsIDE3NSwgMTgsIDE5LCAyMzMsIDE3NCwgMTgsIDE5LCAxNTksIDIzMywgCisgICAgMTc0LCAxOCwgMTksIDIzMywgMTczLCAxOCwgMTksIDE1OSwgMjMzLCAxNzMsIDE4LCAxOSwgMjMzLCAxODIsIDE4LCAxOSwgCisgICAgMTU5LCAyMzMsIDE4MiwgMTgsIDE5LCAyMzMsIDE4MSwgMTgsIDE5LCAxNTksIDIzMywgMTgxLCAxOCwgMTksIDIyOSwgMTkwLCAKKyAgICAyMzMsIDE4MSwgMTgsIDE5LCAyMzUsIDIzLCAxOCwgMTksIDIzMywgMTgzLCAxOCwgMTksIDIxOSwgMjcsIDIzNCwgMTc2LCAKKyAgICAxOCwgMTksIDIxOSwgMjcsIDIzNCwgODQsIDE4LCAxOSwgMjE5LCAyNywgMjM0LCAyMywgMTgsIDE5LCAyMTksIDI3LCAyMzQsIAorICAgIDI0OCwgMTgsIDE5LCAyNTAsIDE5MCwgMTgsIDE5LCAyNTEsIDMxLCAxOCwgMTksIDI1MCwgNTEsIDE4LCAxOSwgMjUwLCA0MSwgCisgICAgMTgsIDE5LCAyNDksIDIzOCwgMTgsIDE5LCAyNDksIDE3NCwgMTgsIDE5LCAyMTEsIDExNiwgMjQ5LCAxNzQsIDE4LCAxOSwgCisgICAgMjUxLCAzMywgMTgsIDE5LCAyNTEsIDMyLCAxOCwgMTksIDI0OSwgNzksIDE4LCAxOSwgMTU5LCAyNDksIDc5LCAxOCwgMTksIAorICAgIDI0OSwgNzcsIDE4LCAxOSwgMTU5LCAyNDksIDc3LCAxOCwgMTksIDI0OSwgNzYsIDE4LCAxOSwgMTU5LCAyNDksIDc2LCAxOCwgCisgICAgMTksIDI0OSwgNzUsIDE4LCAxOSwgMTU5LCAyNDksIDc1LCAxOCwgMTksIDI0OSwgNzQsIDE4LCAxOSwgMTU5LCAyNDksIDc0LCAKKyAgICAxOCwgMTksIDI0OSwgODEsIDE4LCAxOSwgMTU5LCAyNDksIDgxLCAxOCwgMTksIDI0OSwgODAsIDE4LCAxOSwgMTU5LCAyNDksIAorICAgIDgwLCAxOCwgMTksIDIyOSwgMTkwLCAyNDksIDgwLCAxOCwgMTksIDI1MSwgNjYsIDE4LCAxOSwgMjIxLCAyMDksIDIxNiwgCisgICAgMjEwLCAxOCwgMTksIDIzMSwgOTEsIDE4LCAxOSwgMjMxLCAyMzYsIDE4LCAxOSwgMjMwLCAyMzAsIDE4LCAxOSwgMjMwLCAKKyAgICAyMDEsIDE4LCAxOSwgMjMwLCAxNjEsIDE4LCAxOSwgMjMwLCAxMzIsIDE4LCAxOSwgMjExLCAxMTYsIDIzMCwgMTMyLCAxOCwgCisgICAgMTksIDE4NCwgMTgsIDE5LCAyMzEsIDIzNywgMTgsIDE5LCAyMzAsIDQwLCAxOCwgMTksIDE1OSwgMjMwLCA0MCwgMTgsIDE5LCAKKyAgICAyMzAsIDM4LCAxOCwgMTksIDE1OSwgMjMwLCAzOCwgMTgsIDE5LCAyMzAsIDM3LCAxOCwgMTksIDE1OSwgMjMwLCAzNywgMTgsIAorICAgIDE5LCAyMzAsIDM2LCAxOCwgMTksIDE1OSwgMjMwLCAzNiwgMTgsIDE5LCAyMzAsIDM1LCAxOCwgMTksIDE1OSwgMjMwLCAzNSwgCisgICAgMTgsIDE5LCAyMzAsIDQyLCAxOCwgMTksIDE1OSwgMjMwLCA0MiwgMTgsIDE5LCAyMzAsIDQxLCAxOCwgMTksIDE1OSwgMjMwLCAKKyAgICA0MSwgMTgsIDE5LCAyMjksIDE5MCwgMjMwLCA0MSwgMTgsIDE5LCAxOTMsIDE4LCAxOSwgMTU5LCAxOTMsIDE4LCAxOSwgCisgICAgMjMwLCAyMzQsIDE4LCAxOSwgMjUzLCAyMDUsIDE5MywgMTgsIDE5LCAyMjEsIDIwOSwgMTkzLCAxOCwgMTksIDIyOSwgMTA3LCAKKyAgICAxOCwgMTksIDIyOSwgMjI0LCAxOCwgMTksIDIyOCwgMjMzLCAxOCwgMTksIDIyOCwgMjA4LCAxOCwgMTksIDIyOCwgNzQsIAorICAgIDE4LCAxOSwgMjI4LCA2NCwgMTgsIDE5LCAyMTEsIDExNiwgMjI4LCA2NCwgMTgsIDE5LCAxOTcsIDE4LCAxOSwgMjI5LCAKKyAgICAyMjUsIDE4LCAxOSwgMjI3LCAxNzIsIDE4LCAxOSwgMTU5LCAyMjcsIDE3MiwgMTgsIDE5LCAyMjcsIDE3NCwgMTgsIDE5LCAKKyAgICAxNTksIDIyNywgMTc0LCAxOCwgMTksIDIyNywgMTczLCAxOCwgMTksIDE1OSwgMjI3LCAxNzMsIDE4LCAxOSwgMjI5LCAxOTAsIAorICAgIDIyNywgMTczLCAxOCwgMTksIDIzMCwgMjUsIDE4LCAxOSwgNzIsIDIyOSwgNzksIDE4LCAxOSwgMjI4LCAyMzgsIDE4LCAxOSwgCisgICAgMjMzLCA1OCwgMTgsIDE5LCAyMzMsIDEzMywgMTgsIDE5LCAyMzIsIDI0MSwgMTgsIDE5LCAyMzIsIDIyNywgMTgsIDE5LCAKKyAgICAyMzIsIDE1NiwgMTgsIDE5LCAyMzIsIDEyNywgMTgsIDE5LCAyMTEsIDExNiwgMjMyLCAxMjcsIDE4LCAxOSwgMjMzLCAxMzUsIAorICAgIDE4LCAxOSwgMjMzLCAxMzQsIDE4LCAxOSwgMjMyLCA2OCwgMTgsIDE5LCAxNTksIDIzMiwgNjgsIDE4LCAxOSwgMjMyLCA2NywgCisgICAgMTgsIDE5LCAxNTksIDIzMiwgNjcsIDE4LCAxOSwgMjMyLCA2NiwgMTgsIDE5LCAxNTksIDIzMiwgNjYsIDE4LCAxOSwgMjMyLCAKKyAgICA2NSwgMTgsIDE5LCAxNTksIDIzMiwgNjUsIDE4LCAxOSwgMjMyLCA2NCwgMTgsIDE5LCAxNTksIDIzMiwgNjQsIDE4LCAxOSwgCisgICAgMjMyLCA3MCwgMTgsIDE5LCAxNTksIDIzMiwgNzAsIDE4LCAxOSwgMjMyLCA2OSwgMTgsIDE5LCAxNTksIDIzMiwgNjksIDE4LCAKKyAgICAxOSwgMTU2LCAxOCwgMTksIDE1OSwgMTU2LCAxOCwgMTksIDE0NywgMTU2LCAxOCwgMTksIDIyMSwgMTgxLCAxOCwgMTksIAorICAgIDIyMiwgMjksIDE4LCAxOSwgMjE5LCAxOTEsIDE4LCAxOSwgMjE5LCAxNzUsIDE4LCAxOSwgMjE5LCA1OCwgMTgsIDE5LCAKKyAgICAyMTksIDQwLCAxOCwgMTksIDIxMSwgMTE2LCAyMTksIDQwLCAxOCwgMTksIDIwNiwgMTgsIDE5LCAyMjIsIDMxLCAxOCwgMTksIAorICAgIDIxNywgMjQ5LCAxOCwgMTksIDE1OSwgMjE3LCAyNDksIDE4LCAxOSwgMjE3LCAyNDMsIDE4LCAxOSwgMTU5LCAyMTcsIDI0MywgCisgICAgMTgsIDE5LCAyMTcsIDI0MiwgMTgsIDE5LCAxNTksIDIxNywgMjQyLCAxOCwgMTksIDIxNywgMjM4LCAxOCwgMTksIDE1OSwgCisgICAgMjE3LCAyMzgsIDE4LCAxOSwgMjE3LCAyMzcsIDE4LCAxOSwgMTU5LCAyMTcsIDIzNywgMTgsIDE5LCAyMTcsIDI1MywgMTgsIAorICAgIDE5LCAxNTksIDIxNywgMjUzLCAxOCwgMTksIDIxNywgMjUyLCAxOCwgMTksIDE1OSwgMjE3LCAyNTIsIDE4LCAxOSwgMjI5LCAKKyAgICAxOTAsIDIxNywgMjUyLCAxOCwgMTksIDIyMiwgOTEsIDE4LCAxOSwgMjUzLCAyMDUsIDIyMiwgOTEsIDE4LCAxOSwgMjE3LCAKKyAgICAyNTQsIDE4LCAxOSwgMjUxLCAyMTgsIDIyMiwgOTEsIDE4LCAxOSwgMjMwLCAxMjcsIDIxOSwgMTA4LCAxOCwgMTksIDIyOSwgCisgICAgMTkwLCAyMTksIDk5LCAxOCwgMTksIDIyOSwgMTkwLCAyMjIsIDg5LCAxOCwgMTksIDIyOSwgMTkwLCAyMTgsIDIzNSwgMTgsIAorICAgIDE5LCAyMjksIDE5MCwgMjE4LCA4NiwgMTgsIDE5LCAyMjksIDE5MCwgMjE5LCA5OCwgMTgsIDE5LCAyMjksIDE5MCwgMjIxLCAKKyAgICAxODQsIDE4LCAxOSwgMjIwLCA2MywgMTgsIDE5LCAyMjAsIDMyLCAxOCwgMTksIDIyMCwgMjcsIDE4LCAxOSwgMjIwLCA3LCAKKyAgICAxOCwgMTksIDIyMCwgMSwgMTgsIDE5LCAyMjAsIDEwMiwgMTgsIDE5LCAyMjAsIDk4LCAxOCwgMTksIDIxOSwgMjA2LCAxOCwgCisgICAgMTksIDE1OSwgMjE5LCAyMDYsIDE4LCAxOSwgMjE5LCAyMDUsIDE4LCAxOSwgMTU5LCAyMTksIDIwNSwgMTgsIDE5LCAyMTksIAorICAgIDIwNCwgMTgsIDE5LCAxNTksIDIxOSwgMjA0LCAxOCwgMTksIDIxOSwgMjAzLCAxOCwgMTksIDE1OSwgMjE5LCAyMDMsIDE4LCAKKyAgICAxOSwgMjE5LCAyMDIsIDE4LCAxOSwgMTU5LCAyMTksIDIwMiwgMTgsIDE5LCAyMTksIDIwOCwgMTgsIDE5LCAxNTksIDIxOSwgCisgICAgMjA4LCAxOCwgMTksIDIxOSwgMjA3LCAxOCwgMTksIDE1OSwgMjE5LCAyMDcsIDE4LCAxOSwgMjIwLCAxMDQsIDE4LCAxOSwgCisgICAgMjExLCA0NywgMTgsIDE5LCAyMTEsIDEwMSwgMTgsIDE5LCAyMTEsIDgsIDE4LCAxOSwgMjEwLCAyNTUsIDE4LCAxOSwgMjEwLCAKKyAgICAyNDQsIDE4LCAxOSwgMjEwLCAyMjksIDE4LCAxOSwgMjExLCAxMTYsIDIxMCwgMjI5LCAxOCwgMTksIDE5MSwgMTgsIDE5LCAKKyAgICAyMTEsIDEwMywgMTgsIDE5LCAyMTAsIDE3NCwgMTgsIDE5LCAxNTksIDIxMCwgMTc0LCAxOCwgMTksIDIxMCwgMTczLCAxOCwgCisgICAgMTksIDE1OSwgMjEwLCAxNzMsIDE4LCAxOSwgMjEwLCAxNzIsIDE4LCAxOSwgMTU5LCAyMTAsIDE3MiwgMTgsIDE5LCAyMTAsIAorICAgIDE3MSwgMTgsIDE5LCAxNTksIDIxMCwgMTcxLCAxOCwgMTksIDIxMCwgMTcwLCAxOCwgMTksIDE1OSwgMjEwLCAxNzAsIDE4LCAKKyAgICAxOSwgMjEwLCAxNzYsIDE4LCAxOSwgMTU5LCAyMTAsIDE3NiwgMTgsIDE5LCAyMTAsIDE3NSwgMTgsIDE5LCAxNTksIDIxMCwgCisgICAgMTc1LCAxOCwgMTksIDIyOSwgMTkwLCAyMTAsIDE3NSwgMTgsIDE5LCAyMTEsIDExNywgMTgsIDE5LCAyNTIsIDQsIDIxMSwgCisgICAgMTE3LCAxOCwgMTksIDE1OSwgMjExLCAxMTcsIDE4LCAxOSwgMjIxLCAyMDksIDIxMSwgOCwgMTgsIDE5LCAyMjMsIDEyOCwgCisgICAgMTgsIDE5LCAyMjMsIDIyMywgMjIzLCAxMjgsIDE4LCAxOSwgMTU5LCAyMzMsIDU4LCAxOCwgMTksIDIyMywgMTgzLCAxOCwgCisgICAgMTksIDIyMywgMzUsIDE4LCAxOSwgMjIyLCAyMzksIDE4LCAxOSwgMjIyLCAyMTEsIDE4LCAxOSwgMjIyLCAxOTcsIDE4LCAKKyAgICAxOSwgMTU5LCAyMzIsIDE1NiwgMTgsIDE5LCAyMDUsIDE4LCAxOSwgMjIzLCAxODQsIDE4LCAxOSwgMTU5LCAyMzMsIDEzNSwgCisgICAgMTgsIDE5LCAyMjIsIDEwOCwgMTgsIDE5LCAxNTksIDIyMiwgMTA4LCAxOCwgMTksIDE1MywgMTgsIDE5LCAxNTksIDE1MywgCisgICAgMTgsIDE5LCAxNDcsIDE1MywgMTgsIDE5LCAyNDQsIDE1NCwgMTgsIDE5LCAyNDQsIDE5MywgMTgsIDE5LCAyNDQsIDEyMSwgCisgICAgMTgsIDE5LCAyNDQsIDEwOCwgMTgsIDE5LCAyNDQsIDQzLCAxOCwgMTksIDI0NCwgMzQsIDE4LCAxOSwgMjQ0LCAxOTYsIDE4LCAKKyAgICAxOSwgMjQ0LCAxOTUsIDE4LCAxOSwgMjQzLCAyMTIsIDE4LCAxOSwgMTU5LCAyNDMsIDIxMiwgMTgsIDE5LCAyNDUsIDYsIAorICAgIDE4LCAxOSwgMjE2LCAxOTUsIDE4LCAxOSwgMjMwLCAyMywgMjE2LCAxOTUsIDE4LCAxOSwgMjE2LCAxNzUsIDE4LCAxOSwgCisgICAgMjMwLCAyMywgMjE2LCAxNzUsIDE4LCAxOSwgMjE2LCAxNzEsIDE4LCAxOSwgMjMwLCAyMywgMjE2LCAxNzEsIDE4LCAxOSwgCisgICAgMjE2LCAxNTYsIDE4LCAxOSwgMjE2LCAxNTMsIDE4LCAxOSwgMjE2LCAyMDgsIDE4LCAxOSwgMjE2LCAyMDcsIDE4LCAxOSwgCisgICAgMjE2LCAxMjcsIDE4LCAxOSwgMTU5LCAyMTYsIDEyNywgMTgsIDE5LCAyMTYsIDIxMCwgMTgsIDE5LCAyMTUsIDE0MiwgMTgsIAorICAgIDE5LCAyMTUsIDE0MCwgMTgsIDE5LCAyMTUsIDEzOSwgMTgsIDE5LCAyMTUsIDE0NCwgMTgsIDE5LCAyMTUsIDE0NSwgMTgsIAorICAgIDE5LCAyMTUsIDUyLCAxOCwgMTksIDIxNSwgNTEsIDE4LCAxOSwgMjE1LCA1MCwgMTgsIDE5LCAyMTUsIDUzLCAxOCwgMTksIAorICAgIDIyNywgMTkzLCAyNDEsIDIzOCwgMTgsIDE5LCAyMjcsIDE5MywgMjQxLCAxODAsIDE4LCAxOSwgMjI3LCAxOTMsIDI0MSwgCisgICAgMTYxLCAxOCwgMTksIDIyNywgMTkzLCAyNDEsIDY4LCAxOCwgMTksIDIyNywgMTkzLCAyNDEsIDUzLCAxOCwgMTksIDIyNywgCisgICAgMTkzLCAxNjIsIDE4LCAxOSwgMjI3LCAxOTMsIDI0MiwgNDYsIDE4LCAxOSwgMjI3LCAxOTMsIDI0MiwgNjAsIDE4LCAxOSwgCisgICAgMjI3LCAxOTIsIDI0MiwgNjAsIDE4LCAxOSwgMjQxLCAxNTQsIDE4LCAxOSwgMjI0LCA4NCwgMTgsIDE5LCAyMjQsIDUzLCAKKyAgICAxOCwgMTksIDIyNCwgNDgsIDE4LCAxOSwgMjI0LCA0MiwgMTgsIDE5LCAyMjQsIDM3LCAxOCwgMTksIDIyNCwgODgsIDE4LCAKKyAgICAxOSwgMjI0LCA4NywgMTgsIDE5LCAyMjQsIDk2LCAxOCwgMTksIDIxNiwgNTUsIDE4LCAxOSwgMjE2LCA1MywgMTgsIDE5LCAKKyAgICAyMTYsIDUyLCAxOCwgMTksIDIxNiwgNTYsIDE4LCAxOSwgMTU5LCAyMjMsIDEyOCwgMTgsIDE5LCAxNTksIDIyMywgMzUsIAorICAgIDE4LCAxOSwgMTU5LCAyMjIsIDIxMSwgMTgsIDE5LCAxNTksIDIwNSwgMTgsIDE5LCAyMjksIDc1LCAxOCwgMTksIDIyOSwgCisgICAgMjcsIDE4LCAxOSwgMjI5LCAyMywgMTgsIDE5LCAyMjksIDQsIDE4LCAxOSwgMjI4LCAyNTUsIDE4LCAxOSwgMjI5LCA3NywgCisgICAgMTgsIDE5LCAyMjksIDc2LCAxOCwgMTksIDIyOSwgNzksIDE4LCAxOSwgMjI4LCAxMDMsIDE4LCAxOSwgMjIxLCAyMDksIAorICAgIDIyMCwgNjMsIDE4LCAxOSwgMjIxLCAyMDksIDIyMCwgMzIsIDE4LCAxOSwgMjIxLCAyMDksIDIyMCwgNywgMTgsIDE5LCAKKyAgICAyMjEsIDIwOSwgMjIwLCAxMDIsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTk1LCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIAorICAgIDE3NSwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxNTYsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMjA4LCAxOCwgMTksIDIxMSwgCisgICAgMjEzLCAyMTYsIDIxMCwgMTgsIDE5LCAyMzIsIDI0OCwgMTgsIDE5LCAyMzIsIDI0NywgMTgsIDE5LCAyMzIsIDI0NiwgMTgsIAorICAgIDE5LCAyMzIsIDI0NSwgMTgsIDE5LCAyMzIsIDI1NCwgMTgsIDE5LCAyMzIsIDI1MywgMTgsIDE5LCAyMzIsIDI1NSwgMTgsIAorICAgIDE5LCAyMTYsIDIwOSwgMjE2LCAxOTUsIDE4LCAxOSwgMjE2LCAyMDksIDIxNiwgMTc1LCAxOCwgMTksIDIxNiwgMjA5LCAKKyAgICAyMTYsIDE3MSwgMTgsIDE5LCAyMTYsIDIwOSwgMjE2LCAxNTYsIDE4LCAxOSwgMjE2LCAyMDksIDIxNiwgMTUzLCAxOCwgMTksIAorICAgIDIxNiwgMjA5LCAyMTYsIDIwOCwgMTgsIDE5LCAyMTYsIDIwOSwgMjE2LCAyMDcsIDE4LCAxOSwgMjE2LCAyMDksIDIxNiwgCisgICAgMjEwLCAxOCwgMTksIDI1NCwgMTg5LCAyNTMsIDE1OCwgMTgsIDE5LCAyNTEsIDIxOCwgNzUsIDE4LCAxOSwgMjUxLCAyMTgsIAorICAgIDczLCAxOCwgMTksIDI1MSwgMjE4LCA3NiwgMTgsIDE5LCAyNTEsIDIxOCwgNjEsIDE4LCAxOSwgMjUxLCAyMTgsIDIxMiwgCisgICAgMjIsIDE4LCAxOSwgMjUxLCAyMTgsIDIxMSwgMjUwLCAxOCwgMTksIDI1MSwgMjE4LCAyMTEsIDIyNywgMTgsIDE5LCAyNTEsIAorICAgIDIxOCwgMjEyLCA2NSwgMTgsIDE5LCAyNTEsIDIxOCwgMjI5LCAxMDcsIDE4LCAxOSwgMjUxLCAyMTgsIDIyOCwgMjMzLCAxOCwgCisgICAgMTksIDI1MSwgMjE4LCAyMjgsIDc0LCAxOCwgMTksIDI1MSwgMjE4LCAxOTcsIDE4LCAxOSwgMjUxLCAyMTgsIDIzNCwgMTgyLCAKKyAgICAxOCwgMTksIDI1MSwgMjE4LCAyMzQsIDkyLCAxOCwgMTksIDI1MSwgMjE4LCAyMzQsIDI4LCAxOCwgMTksIDI1MSwgMjE4LCAKKyAgICAxNzYsIDE4LCAxOSwgMjIxLCAyMDksIDI0MSwgMjM4LCAxOCwgMTksIDIyMSwgMjA5LCAyNDEsIDE4MCwgMTgsIDE5LCAyMjEsIAorICAgIDIwOSwgMjQxLCA2OCwgMTgsIDE5LCAyMjEsIDIwOSwgMTYyLCAxOCwgMTksIDcyLCAyNDIsIDIyMCwgMTgsIDE5LCA3MiwgCisgICAgMjQyLCAyMjQsIDE4LCAxOSwgNzIsIDI0MiwgMjM2LCAxOCwgMTksIDcyLCAyNDIsIDIzNSwgMTgsIDE5LCA3MiwgMjQyLCAKKyAgICAyMjUsIDE4LCAxOSwgNzIsIDI0MiwgMjQ5LCAxOCwgMTksIDcyLCAyMjIsIDE0MCwgMTgsIDE5LCA3MiwgMjIyLCAyMTEsIAorICAgIDE4LCAxOSwgNzIsIDIyMywgMTI4LCAxOCwgMTksIDcyLCAyMjMsIDEwOCwgMTgsIDE5LCA3MiwgMjIzLCAzNSwgMTgsIDE5LCAKKyAgICA3MiwgMjA1LCAxOCwgMTksIDcyLCAyMTEsIDE5NSwgMTgsIDE5LCA3MiwgMjExLCAyMjcsIDE4LCAxOSwgNzIsIDIxMiwgMjIsIAorICAgIDE4LCAxOSwgNzIsIDIxMiwgMTcsIDE4LCAxOSwgNzIsIDIxMSwgMjUwLCAxOCwgMTksIDcyLCAyMTIsIDY1LCAxOCwgMTksIAorICAgIDcyLCAyNDAsIDE5NCwgMTgsIDE5LCA3MiwgMjQwLCAxOTUsIDE4LCAxOSwgNzIsIDI0MCwgMTk4LCAxOCwgMTksIDcyLCAKKyAgICAyNDAsIDE5NywgMTgsIDE5LCA3MiwgMjQwLCAxOTYsIDE4LCAxOSwgNzIsIDI0MCwgMjAwLCAxOCwgMTksIDcyLCAyMTYsIAorICAgIDEzNiwgMTgsIDE5LCA3MiwgMjE2LCAxNTYsIDE4LCAxOSwgNzIsIDIxNiwgMTk1LCAxOCwgMTksIDcyLCAyMTYsIDE5NCwgCisgICAgMTgsIDE5LCA3MiwgMjE2LCAxNzUsIDE4LCAxOSwgNzIsIDIxNiwgMjA4LCAxOCwgMTksIDcyLCAyMTUsIDEyMywgMTgsIDE5LCAKKyAgICA3MiwgMjE1LCAxMzMsIDE4LCAxOSwgNzIsIDIxNSwgMTUxLCAxOCwgMTksIDcyLCAyMTUsIDE1MCwgMTgsIDE5LCA3MiwgCisgICAgMjE1LCAxMzUsIDE4LCAxOSwgNzIsIDIxNSwgMTU2LCAxOCwgMTksIDcyLCAyMjQsIDE1MCwgMTgsIDE5LCA3MiwgMjI1LCAKKyAgICAxNiwgMTgsIDE5LCA3MiwgMjI1LCAyMjEsIDE4LCAxOSwgNzIsIDIyNSwgMjExLCAxOCwgMTksIDcyLCAyMjUsIDEwOCwgMTgsIAorICAgIDE5LCA3MiwgMTkwLCAxOCwgMTksIDcyLCAyMjYsIDEwNSwgMTgsIDE5LCA3MiwgMjQyLCAxMTMsIDE4LCAxOSwgNzIsIDI0MiwgCisgICAgMTc0LCAxOCwgMTksIDcyLCAyNDMsIDYyLCAxOCwgMTksIDcyLCAyNDMsIDU1LCAxOCwgMTksIDcyLCAyNDIsIDIxNCwgMTgsIAorICAgIDE5LCA3MiwgMjQzLCAxMzUsIDE4LCAxOSwgNzIsIDIzNCwgMTAwLCAxOCwgMTksIDcyLCAyMzQsIDEwNSwgMTgsIDE5LCA3MiwgCisgICAgMjM0LCAxMTksIDE4LCAxOSwgNzIsIDIzNCwgMTE4LCAxOCwgMTksIDcyLCAyMzQsIDExMiwgMTgsIDE5LCA3MiwgMjM0LCAKKyAgICAxMzIsIDE4LCAxOSwgNzIsIDIzNCwgNDEsIDE4LCAxOSwgNzIsIDIzNCwgNDIsIDE4LCAxOSwgNzIsIDIzNCwgNDUsIDE4LCAKKyAgICAxOSwgNzIsIDIzNCwgNDQsIDE4LCAxOSwgNzIsIDIzNCwgNDMsIDE4LCAxOSwgNzIsIDIzNCwgNDYsIDE4LCAxOSwgNzIsIAorICAgIDIzNCwgNDcsIDE4LCAxOSwgNzIsIDIyNywgMjM3LCAxOCwgMTksIDcyLCAyMjgsIDc0LCAxOCwgMTksIDcyLCAyMjksIDEwNywgCisgICAgMTgsIDE5LCA3MiwgMjI5LCAxMDMsIDE4LCAxOSwgNzIsIDIyOCwgMjMzLCAxOCwgMTksIDcyLCAxOTcsIDE4LCAxOSwgNzIsIAorICAgIDIzMCwgMTAyLCAxOCwgMTksIDcyLCAyMzAsIDE2MSwgMTgsIDE5LCA3MiwgMjMxLCA5MSwgMTgsIDE5LCA3MiwgMjMxLCA4MCwgCisgICAgMTgsIDE5LCA3MiwgMjMwLCAyMzAsIDE4LCAxOSwgNzIsIDE4NCwgMTgsIDE5LCA3MiwgMjEwLCAyMTIsIDE4LCAxOSwgNzIsIAorICAgIDIxMCwgMjQ0LCAxOCwgMTksIDcyLCAyMTEsIDQ3LCAxOCwgMTksIDcyLCAyMTEsIDQ0LCAxOCwgMTksIDcyLCAyMTEsIDgsIAorICAgIDE4LCAxOSwgNzIsIDE5MSwgMTgsIDE5LCA3MiwgMjM1LCA1MSwgMTgsIDE5LCAyMjEsIDIwOSwgMjM1LCA1MSwgMTgsIDE5LCAKKyAgICA3MiwgMjM1LCA2OCwgMTgsIDE5LCA3MiwgMjM1LCAxMjYsIDE4LCAxOSwgNzIsIDIzNSwgMTI0LCAxOCwgMTksIDcyLCAyMzUsIAorICAgIDEwOCwgMTgsIDE5LCAyMjEsIDIwOSwgMjM1LCAxMDgsIDE4LCAxOSwgNzIsIDIzNSwgMTQxLCAxOCwgMTksIDcyLCAyMzUsIAorICAgIDgxLCAxOCwgMTksIDcyLCAyMzUsIDg1LCAxOCwgMTksIDcyLCAyMzUsIDk1LCAxOCwgMTksIDcyLCAyMzUsIDk0LCAxOCwgCisgICAgMTksIDcyLCAyMzUsIDkzLCAxOCwgMTksIDcyLCAyMzUsIDk2LCAxOCwgMTksIDcyLCAyMzIsIDk4LCAxOCwgMTksIDcyLCAKKyAgICAyMzIsIDE1NiwgMTgsIDE5LCA3MiwgMjMzLCA1OCwgMTgsIDE5LCA3MiwgMjMzLCA1MCwgMTgsIDE5LCA3MiwgMjMyLCAyNDEsIAorICAgIDE4LCAxOSwgNzIsIDIzMywgMTM1LCAxOCwgMTksIDcyLCAyNDcsIDE0OSwgMTgsIDE5LCA3MiwgMjQ3LCAxNTAsIDE4LCAxOSwgCisgICAgNzIsIDI0NywgMTU1LCAxOCwgMTksIDcyLCAyNDcsIDE1NCwgMTgsIDE5LCA3MiwgMjQ3LCAxNTEsIDE4LCAxOSwgNzIsIAorICAgIDI0NywgMTU2LCAxOCwgMTksIDcyLCAyMzIsIDI0NCwgMTgsIDE5LCA3MiwgMjMyLCAyNDYsIDE4LCAxOSwgNzIsIDIzMiwgCisgICAgMjUwLCAxOCwgMTksIDcyLCAyMzIsIDI0OSwgMTgsIDE5LCA3MiwgMjMyLCAyNDgsIDE4LCAxOSwgNzIsIDIzMiwgMjU0LCAKKyAgICAxOCwgMTksIDcyLCAyMTYsIDUwLCAxOCwgMTksIDcyLCAyMTYsIDUyLCAxOCwgMTksIDcyLCAyMTYsIDU1LCAxOCwgMTksIAorICAgIDcyLCAyMTYsIDU0LCAxOCwgMTksIDcyLCAyMTYsIDUzLCAxOCwgMTksIDcyLCAyMTYsIDU2LCAxOCwgMTksIDcyLCAyMTYsIAorICAgIDQ1LCAxOCwgMTksIDcyLCAyMTYsIDQ2LCAxOCwgMTksIDcyLCAyMTYsIDU4LCAxOCwgMTksIDcyLCAyMTYsIDU3LCAxOCwgCisgICAgMTksIDcyLCAyMTYsIDQ3LCAxOCwgMTksIDcyLCAyMTYsIDU5LCAxOCwgMTksIDcyLCAyMTAsIDEzLCAxOCwgMTksIDcyLCAKKyAgICAyMTAsIDIzLCAxOCwgMTksIDcyLCAyMTAsIDk0LCAxOCwgMTksIDcyLCAyMTAsIDkyLCAxOCwgMTksIDcyLCAyMTAsIDQ0LCAKKyAgICAxOCwgMTksIDcyLCAyMTAsIDExNiwgMTgsIDE5LCA3MiwgMjEwLCAxNTksIDE4LCAxOSwgNzIsIDY1LCAyMTAsIDE1OSwgMTgsIAorICAgIDE5LCA3MiwgMjQ2LCAyOCwgMTgsIDE5LCA3MiwgMjQ2LCAyOSwgMTgsIDE5LCA3MiwgMjQ2LCAzNiwgMTgsIDE5LCA3MiwgCisgICAgMjQ2LCAzNSwgMTgsIDE5LCA3MiwgMjQ2LCAzMSwgMTgsIDE5LCA3MiwgMjQ2LCAzOCwgMTgsIDE5LCA3MiwgMjE4LCA4MywgCisgICAgMTgsIDE5LCA3MiwgMjE5LCA1OCwgMTgsIDE5LCA3MiwgMjIxLCAxODEsIDE4LCAxOSwgNzIsIDIyMSwgMTcwLCAxOCwgMTksIAorICAgIDcyLCAyMTksIDE5MSwgMTgsIDE5LCA3MiwgMjA2LCAxOCwgMTksIDcyLCAyMTksIDIyNSwgMTgsIDE5LCA3MiwgMjIwLCA3LCAKKyAgICAxOCwgMTksIDcyLCAyMjAsIDYzLCAxOCwgMTksIDcyLCAyMjAsIDYxLCAxOCwgMTksIDcyLCAyMjAsIDMyLCAxOCwgMTksIAorICAgIDcyLCAyMjAsIDEwMiwgMTgsIDE5LCA3MiwgMjIwLCAxMDQsIDE4LCAxOSwgNzIsIDIxNSwgMTYzLCAxOCwgMTksIDcyLCAKKyAgICAyMTUsIDE2NiwgMTgsIDE5LCA3MiwgMjE1LCAxNzgsIDE4LCAxOSwgNzIsIDIxNSwgMTc3LCAxOCwgMTksIDcyLCAyMTUsIAorICAgIDE2NywgMTgsIDE5LCA3MiwgMjE1LCAxODMsIDE4LCAxOSwgNzIsIDI1MCwgNjksIDE4LCAxOSwgNzIsIDI1MCwgODYsIDE4LCAKKyAgICAxOSwgNzIsIDI1MCwgMTMxLCAxOCwgMTksIDcyLCAyNTAsIDEyOCwgMTgsIDE5LCA3MiwgMjUwLCAxMTAsIDE4LCAxOSwgNzIsIAorICAgIDI1MCwgMTU3LCAxOCwgMTksIDcyLCAyMTUsIDEyNiwgMTgsIDE5LCA3MiwgMjE1LCAxMjcsIDE4LCAxOSwgNzIsIDIxNSwgCisgICAgMTMwLCAxOCwgMTksIDcyLCAyMTUsIDEyOSwgMTgsIDE5LCA3MiwgMjE1LCAxMjgsIDE4LCAxOSwgNzIsIDIxNSwgMTMxLCAKKyAgICAxOCwgMTksIDI1MCwgMTExLCA1MCwgMTgsIDE5LCAyNDMsIDIyOSwgMjE4LCAxMjksIDE4LCAxOSwgMjI0LCA4MCwgMTgsIAorICAgIDE5LCAyMjksIDczLCAxOCwgMTksIDIyOCwgMTAwLCAxOCwgMTksIDIyOCwgOTksIDE4LCAxOSwgMjI4LCA5OCwgMTgsIDE5LCAKKyAgICAyMjgsIDk3LCAxOCwgMTksIDIyOCwgMTAyLCAxOCwgMTksIDIyOCwgMTAxLCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDEyNSwgCisgICAgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxMjQsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTIzLCAxOCwgMTksIDIxMSwgMjEzLCAKKyAgICAyMTYsIDEyMiwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxMjEsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTI4LCAxOCwgMTksIAorICAgIDIxMSwgMjEzLCAyMTYsIDEyNywgMTgsIDE5LCAyMTEsIDIxMywgNDAsIDIxNiwgMjEwLCAxOCwgMTksIDI1MSwgMjE4LCAKKyAgICAyMTIsIDk4LCAyMjYsIDIyNiwgMjE5LCAxOSwgNzgsIDIyNiwgMjI2LCAxLCAyNTIsIDQ4LCAyMjYsIDIyNiwgMSwgMjMyLCAKKyAgICA4NywgMjI2LCAyMjYsIDEsIDI0NCwgMTUxLCAyMjYsIDIyNiwgMSwgMjIyLCAxNSwgMjI2LCAyMjYsIDEsIDIyOCwgMTkzLCAKKyAgICAyMjYsIDIyNiwgMSwgMjE0LCAyMjYsIDIyNiwgMjI2LCAxLCAyNDgsIDE5NywgMjI2LCAyMjYsIDEsIDIxNiwgODAsIDIyNiwgCisgICAgMjI2LCAxLCAyNDksIDIyOSwgMjI2LCAyMjYsIDEsIDI1MCwgMTgwLCAyMjYsIDIyNiwgMSwgMjMwLCA5MSwgMjI2LCAyMjYsIAorICAgIDEsIDI0MiwgMTU2LCAyMjYsIDIyNiwgMSwgMjI5LCA2MywgMjI2LCAyMjYsIDEsIDIxOCwgMTIyLCAyMjYsIDIyNiwgMSwgCisgICAgMjIyLCAxMzUsIDIyNiwgMjI2LCAxLCAyNTQsIDE5OCwgMjI2LCAyMjYsIDEsIDIyNiwgMTg3LCAyMjYsIDIyNiwgMSwgMjE0LCAKKyAgICAxNTAsIDIyNiwgMjI2LCAxLCAyNDUsIDIzMSwgMjI2LCAyMjYsIDEsIDIzNSwgMTg4LCAyMjYsIDIyNiwgMSwgMjQ1LCAyMzIsIAorICAgIDIyNiwgMjI2LCAxLCAyMjYsIDE1OCwgMjI2LCAyMjYsIDEsIDIxNCwgMjA2LCAyMjYsIDIyNiwgMSwgMjM2LCAzOSwgMjI2LCAKKyAgICAyMjYsIDEsIDI0NSwgMjI5LCAyMjYsIDIyNiwgMSwgMjI1LCAyMDIsIDIyNiwgMjI2LCAyNDQsIDE1MCwgNzgsIDIyNiwgCisgICAgMjI2LCAyMjMsIDQ5LCAyNDQsIDE1MCwgNzgsIDE3OCwgMSwgMjQ0LCAxNDEsIDI0NCwgMTMzLCAyNDQsIDE1NSwgMjQ1LCA2LCAKKyAgICAxNzgsIDEsIDIxNCwgMTA1LCAxNzgsIDEsIDIxNCwgMTM1LCAyMTQsIDE1MSwgNzAsIDE3OCwgMSwgMjEwLCAyMTQsIDE3OCwgCisgICAgMSwgMjExLCAxMTcsIDE3OCwgMSwgMjEyLCA5OCwgMTc4LCAxLCAyMTYsIDEzMCwgMjE2LCAxMjksIDIxNiwgMTUxLCAxNzgsIAorICAgIDEsIDI0NSwgNTksIDE3OCwgMSwgMjU0LCA5MywgNjEsIDE3OCwgMSwgMjI2LCAxNDMsIDc2LCAxNzgsIDEsIDI1NSwgMTcsIAorICAgIDYxLCAxNzgsIDEsIDI1NCwgMjI3LCAxNzgsIDEsIDIzMiwgMTMzLCA3NiwgMTc4LCAxLCAyMTksIDI0NCwgNzYsIDE3OCwgMSwgCisgICAgNzYsIDE3OCwgMSwgMjI2LCAyMzQsIDE3OCwgMSwgMjI2LCAxOTYsIDE3OCwgMSwgMjIzLCAxNjQsIDIyMywgMTc3LCAyMjMsIAorICAgIDk0LCAxNTMsIDE3OCwgMSwgMjM0LCAxOTMsIDE3OCwgMSwgMjUwLCAxNzcsIDE3OCwgMSwgMjM0LCAxOTQsIDIzNSwgMjMsIAorICAgIDE3OCwgMSwgMjQzLCAyMDIsIDE3OCwgMSwgMjQ1LCAxMzgsIDE3OCwgMSwgMjQzLCA1OCwgMjQyLCA2NiwgMjQzLCAyMDIsIAorICAgIDE3OCwgMSwgMjQzLCA5NiwgMTc4LCAxLCAyMTEsIDE4OCwgMjExLCAxODIsIDIxMiwgOTgsIDE3OCwgMSwgMjQyLCAzOCwgCisgICAgMjQyLCA2MCwgMTc4LCAxLCAyNDIsIDQyLCAyNDIsIDYwLCAxNzgsIDEsIDIzMiwgMTM1LCAyNDIsIDYwLCAxNzgsIDEsIAorICAgIDIxOSwgMjQ3LCAyNDIsIDYwLCAxNzgsIDEsIDIyOSwgMTg1LCAyMjcsIDE1NywgMjI5LCAxODYsIDIzMCwgMjUsIDE3OCwgMSwgCisgICAgMjE5LCAyNDUsIDIzMCwgMjUsIDE3OCwgMSwgMjQ2LCAxMTUsIDE3OCwgMSwgMjM1LCAxNjgsIDIzNSwgMTcyLCAyMzUsIAorICAgIDE2MiwgNzMsIDE3OCwgMSwgNzUsIDE3OCwgMSwgMjM1LCAxMTcsIDIzNSwgMTQ0LCAxNzgsIDEsIDI0MywgNDMsIDE3OCwgMSwgCisgICAgMjMyLCAxMzYsIDI1NCwgMjQzLCAxNzgsIDEsIDIxOSwgMjQ5LCA2MSwgMTc4LCAxLCAyMzUsIDE1NCwgMjQ1LCAxMTMsIAorICAgIDE3OCwgMSwgMjI1LCAxNjQsIDIyNSwgMTg2LCAyMjYsIDEwNSwgMTc4LCAxLCAyNTQsIDE2MywgMjQ1LCAxMTEsIDE3OCwgMSwgCisgICAgMjE5LCAyNCwgMjIyLCA5MSwgMTc4LCAxLCAyMTksIDE3OSwgMjMyLCAxMzIsIDIyMiwgOTEsIDE3OCwgMSwgMjE5LCAyNDMsIAorICAgIDIyMiwgOTEsIDE3OCwgMSwgMjUxLCA2NiwgMTc4LCAxLCAyMTAsIDE1OSwgMTc4LCAxLCAyMTYsIDYzLCAyMTYsIDczLCAKKyAgICAyMTUsIDQxLCAyMTcsIDE1MiwgMTc4LCAxLCAyMTksIDI0MiwgMjE3LCAxNTIsIDE3OCwgMSwgMjQ5LCA2MCwgMTc4LCAxLCAKKyAgICAyNTIsIDMxLCAyNTIsIDM0LCAyNTEsIDIyNCwgMjUzLCAxNTgsIDE3OCwgMSwgMjE5LCAyNDgsIDI1MywgMTU4LCAxNzgsIDEsIAorICAgIDI0NiwgMTE0LCAxNzgsIDEsIDIyNiwgMTcxLCAxNzgsIDEsIDI0NSwgMTk2LCAyNDUsIDE5OCwgNzUsIDE3OCwgMSwgMjMxLCAKKyAgICAxNzgsIDIzMSwgMTg2LCAxOTMsIDE3OCwgMSwgMjMyLCAxMzQsIDE5MywgMTc4LCAxLCAyMTksIDI0NiwgMTkzLCAxNzgsIDEsIAorICAgIDIzMywgNzMsIDIzMywgMTE0LCAyMzIsIDE0MywgMTU2LCAxNzgsIDEsIDI0NiwgMTE2LCAxNzgsIDEsIDIzNSwgMjMwLCAKKyAgICAxNzgsIDEsIDIzNSwgMjMxLCAxNzgsIDEsIDI0OCwgMjEwLCAyNDgsIDIxNSwgMjQ5LCA2MCwgMTc4LCAxLCAyMjYsIDEzOCwgCisgICAgMjQ1LCA1OCwgNzYsIDE3OCwgMSwgMjQ1LCAyMjcsIDE3OCwgMSwgMjM1LCAxODcsIDE3OCwgMSwgMjQ5LCA3OCwgMTc4LCAxLCAKKyAgICAyNTEsIDE3LCAxNzgsIDEsIDI1MCwgMTg5LCAxNzgsIDEsIDIxOCwgMTYxLCAxNzgsIDEsIDIzMiwgMTMxLCAxNzgsIDEsIAorICAgIDIxOSwgMjQxLCAxNzgsIDEsIDI0MCwgMTEwLCAxNzgsIDEsIDIyNCwgOTYsIDE3OCwgMSwgMjExLCAxNzgsIDE3OCwgMjE5LCAKKyAgICAxNTUsIDIyNCwgMTQwLCAxNzgsIDIzMCwgODUsIDIyNCwgMTQwLCAxNzgsIDI0OSwgMTMxLCAyMjQsIDE0MCwgMTc4LCAyNTQsIAorICAgIDYsIDg3LCAxNzgsIDIxNSwgODIsIDg3LCAxNzgsIDI1MiwgNDYsIDg3LCAyMTcsIDgzLCAxLCA2MSwgMjE3LCA4MywgMSwgCisgICAgNzMsIDIxNywgODMsIDEsIDcwLCAyMTcsIDgzLCAxLCAxNzYsIDIxNywgODMsIDEsIDI0MywgMTM1LCAyMTcsIDgzLCAxLCAKKyAgICAyMjksIDc3LCAyMTcsIDgzLCAxLCAyMTcsIDEwNSwgMjE3LCA4MywgMSwgMjQ4LCAyMjEsIDIxNywgODMsIDEsIDE5NywgCisgICAgMjE3LCA4MywgMSwgMTkwLCAyMTcsIDgzLCAxLCAyNTIsIDE5MSwgMjE3LCA4MywgMSwgMTg0LCAyMTcsIDgzLCAxLCAxOTEsIAorICAgIDIxNywgODMsIDEsIDIzMywgMTM1LCAyMTcsIDgzLCAxLCAyMTIsIDY1LCAyMTcsIDgzLCAxLCAyMDYsIDIxNywgODMsIDEsIAorICAgIDE2MiwgMjE3LCA4MywgMjUsIDUsIDczLCAyMTcsIDgzLCAyNSwgNSwgNzAsIDIxNywgODMsIDUsIDIxMywgMTUyLCAyNDIsIAorICAgIDcsIDEsIDYxLCAyNDIsIDcsIDEsIDczLCAyNDIsIDcsIDEsIDcwLCAyNDIsIDcsIDEsIDE3NiwgMjQyLCA3LCAxLCAyNDMsIAorICAgIDEzNSwgMjQyLCA3LCAxLCAyMjksIDc3LCAyNDIsIDcsIDEsIDIxNywgMTA1LCAyNDIsIDcsIDEsIDI0OCwgMjIxLCAyNDIsIAorICAgIDcsIDEsIDE5NywgMjQyLCA3LCAxLCAxOTAsIDI0MiwgNywgMSwgMjUyLCAxOTEsIDI0MiwgNywgMSwgMTg0LCAyNDIsIDcsIAorICAgIDEsIDE5MSwgMjQyLCA3LCAxLCAyMDUsIDI0MiwgNywgMSwgMjMzLCAxMzUsIDI0MiwgNywgMSwgMjEyLCA2NSwgMjQyLCA3LCAKKyAgICAxLCAyMDYsIDI0MiwgNywgMSwgMTYyLCAyNDIsIDcsIDI1LCA1LCA3MywgMjQyLCA3LCAyNSwgNSwgNzAsIDI0MiwgNywgNSwgCisgICAgMjI2LCA0OSwgMjI1LCAxMjYsIDIxOSwgMTU1LCAyMjQsIDE0MCwgMjI1LCAxMjYsIDUyLCAyMjQsIDE0MCwgMjUxLCAxMjAsIAorICAgIDEsIDYxLCAyNTEsIDEyMCwgMSwgNzMsIDI1MSwgMTIwLCAxLCA3MCwgMjUxLCAxMjAsIDEsIDE3NiwgMjUxLCAxMjAsIDEsIAorICAgIDI0MywgMTM1LCAyNTEsIDEyMCwgMSwgMjI5LCA3NywgMjUxLCAxMjAsIDEsIDIxNywgMTA1LCAyNTEsIDEyMCwgMSwgMjQ4LCAKKyAgICAyMjEsIDI1MSwgMTIwLCAxLCAxOTcsIDI1MSwgMTIwLCAxLCAxOTAsIDI1MSwgMTIwLCAxLCAyNTIsIDE5MSwgMjUxLCAxMjAsIAorICAgIDEsIDE4NCwgMjUxLCAxMjAsIDEsIDE5MSwgMjUxLCAxMjAsIDEsIDIwNSwgMjUxLCAxMjAsIDEsIDIzMywgMTM1LCAyNTEsIAorICAgIDEyMCwgMSwgMjEyLCA2NSwgMjUxLCAxMjAsIDEsIDIwNiwgMjUxLCAxMjAsIDEsIDE2MiwgMjUxLCAxMjAsIDI1LCA1LCA3MywgCisgICAgMjUxLCAxMjAsIDI1LCA1LCA3MCwgMjE3LCA4MiwgMSwgNjEsIDIxNywgODIsIDEsIDczLCAyMTcsIDgyLCAxLCA3MCwgMjE3LCAKKyAgICA4MiwgMSwgMTc2LCAyMTcsIDgyLCAxLCAyNDMsIDEzNSwgMjE3LCA4MiwgMSwgMjI5LCA3NywgMjE3LCA4MiwgMSwgMjE3LCAKKyAgICAxMDUsIDIxNywgODIsIDEsIDI0OCwgMjIxLCAyMTcsIDgyLCAxLCAxOTcsIDIxNywgODIsIDEsIDE5MCwgMjE3LCA4MiwgMSwgCisgICAgMjUyLCAxOTEsIDIxNywgODIsIDEsIDE4NCwgMjE3LCA4MiwgMSwgMTkxLCAyMTcsIDgyLCAxLCAyMzMsIDEzNSwgMjE3LCAKKyAgICA4MiwgMSwgMjEyLCA2NSwgMjE3LCA4MiwgMSwgMjA2LCAyMTcsIDgyLCAyNSwgNSwgNzMsIDIxNywgODIsIDI1LCA1LCA3MCwgCisgICAgNjksIDEsIDE3NiwgNjksIDEsIDIzNCwgMTMyLCA2OSwgMSwgMjM0LCAyOCwgNjksIDEsIDIzNCwgMTA1LCA2OSwgMSwgMjI5LCAKKyAgICA0LCA2OSwgMSwgMjUxLCAzMywgNjksIDEsIDI1MCwgMTU3LCA2OSwgMSwgMjQ5LCAyMzgsIDY5LCAxLCAyNTAsIDg2LCA2OSwgCisgICAgMSwgMjI3LCAxMzQsIDY5LCAxLCAyNDgsIDIyMSwgNjksIDEsIDIxNSwgMTQ0LCA2OSwgMSwgMjQ3LCAxNDUsIDY5LCAxLCAKKyAgICAyMTUsIDEzOSwgNjksIDEsIDIyOCwgODAsIDY5LCAxLCAyMTcsIDEwNSwgNjksIDEsIDIxNiwgMjA4LCA2OSwgMSwgMTExLCAKKyAgICA2OSwgMSwgMjE2LCAxNTYsIDY5LCAxLCAyMjgsIDc0LCA2OSwgMSwgMjUyLCAxOTEsIDY5LCAxLCAyMjUsIDE0NywgNjksIDEsIAorICAgIDIyNSwgMTYsIDY5LCAxLCAyMjUsIDEyMSwgNjksIDEsIDIzMCwgMTYxLCA2OSwgMSwgMjEwLCAyNDQsIDY5LCAxLCAyMjIsIAorICAgIDIxMSwgNjksIDEsIDIzMiwgMTU2LCA2OSwgMSwgMjEzLCAxMzgsIDY5LCAxLCAyMjAsIDEwMiwgNjksIDEsIDIxOCwgMTg0LCAKKyAgICA2OSwgMSwgMjA2LCA2OSwgMSwgMTYyLCA2OSwgMSwgMjMzLCAxMzUsIDY5LCAxLCAyMjQsIDg4LCA2OSwgMjM1LCAyNDMsIAorICAgIDI1LCAyMjQsIDc0LCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIDg3LCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIDUzLCA2OSwgCisgICAgMjM1LCAyNDMsIDI1LCAyMjQsIDQ4LCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIDMwLCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIAorICAgIDIsIDY5LCAyMzUsIDI0MywgMjUsIDIyMywgMjQ2LCA2OSwgMjM1LCAyNDMsIDI1LCAyMjMsIDI0NSwgNjksIDIzNSwgMjQzLCAKKyAgICAyNSwgMjIyLCAxMDAsIDY5LCAyMzUsIDI0MywgMjUsIDIyMiwgOTMsIDY5LCAyMzUsIDI0MywgMjUsIDIzMiwgNjIsIDY5LCAKKyAgICAyMzUsIDI0MywgMjUsIDIzMiwgNTIsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgNjksIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgCisgICAgODAsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgMzgsIDIxNSwgNDksIDExMCwgNjksIDIzNSwgMjQzLCAyNSwgMjI0LCAzOCwgCisgICAgMjE1LCA0OSwgMTA1LCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIDcwLCA2OSwgMjUsIDIzNSwgMjI5LCAyNTQsIDQ1LCA2OSwgCisgICAgMjUsIDIzNSwgMjI5LCAyNTUsIDczLCA2OSwgMjUsIDUsIDI1NSwgNzMsIDY5LCAyNSwgNSwgNzMsIDY5LCAyNSwgNSwgMjM2LCAKKyAgICAzMywgNjksIDI1LCA1LCAyMTEsIDExNywgNjksIDI1LCA1LCAyMTAsIDE2OSwgNjksIDI1LCA1LCA3MCwgNjksIDI1LCA1LCAKKyAgICAyMTQsIDExOCwgNjksIDI1LCA1LCAyMTQsIDIyOSwgNjksIDI1LCA1LCAyMjYsIDIzNCwgNjksIDI1LCA1LCAxOTEsIDY5LCAKKyAgICAyNSwgNSwgMjM2LCA2MCwgNjksIDI1LCA1LCA3NSwgNjksIDI1LCA1LCAyNTQsIDI0MywgNjksIDI1LCA1LCAyNTQsIDIwMSwgCisgICAgNjksIDI1LCA1LCAyMjYsIDE4MywgNjksIDI1LCA1LCAyNTMsIDE5MiwgNjksIDUsIDIyOCwgMjA2LCA2OSwgNSwgMjIzLCAKKyAgICAxMjYsIDY5LCA1LCAyMTAsIDE4MCwgNjksIDUsIDIzMCwgNTIsIDY5LCA1LCAyMTUsIDIxMywgNjksIDUsIDI1MiwgMTQzLCAKKyAgICA2OSwgNSwgMjIyLCAyMDYsIDY5LCA1LCAyMTYsIDQwLCA2OSwgNSwgMjM0LCAyNDEsIDY5LCA1LCAyNTQsIDIwMywgNjksIDUsIAorICAgIDIyMSwgMjQ0LCAyMjEsIDIzOCwgNjksIDUsIDIxMywgMTQ5LCA2OSwgNSwgMjQ5LCAyMzIsIDY5LCA1LCAyNTIsIDExNywgCisgICAgNjksIDUsIDIzNCwgMTI1LCA2OSwgNSwgMjUyLCAxMzcsIDY5LCA1LCAyNTEsIDksIDIyNSwgNzIsIDIzMywgMTg3LCA2OSwgCisgICAgNSwgMjMzLCAzMCwgMjE2LCAxNywgNjksIDUsIDI1MiwgMjAsIDY5LCA1LCAyMjUsIDEyMywgMjMwLCA5OSwgNjksIDUsIAorICAgIDIzNCwgOSwgNjksIDI0OSwgOTgsIDE2LCAyMjMsIDI4LCA2OSwgNSwgMjUzLCAxNzQsIDY5LCA1LCAyNTMsIDE5NSwgNjksIAorICAgIDIxLCAyMTAsIDg2LCA2OSwgMjEsIDExMCwgNjksIDIxLCAxMDUsIDY5LCAyMSwgMTU4LCA2OSwgMjEsIDE2MSwgNjksIDIxLCAKKyAgICAxODksIDY5LCAyMSwgMTk0LCA2OSwgMjEsIDE5OCwgNjksIDIxLCAxOTUsIDY5LCAyMSwgMjAwLCA2OSwgMTYsIDIzMywgMzAsIAorICAgIDI1MywgMTk3LCAyMTksIDQzLCA2OSwgMTYsIDIzMywgMzAsIDI1MywgMTk3LCAyMzAsIDcxLCA2OSwgMTYsIDIzMywgMzAsIAorICAgIDI1MywgMTk3LCAyMjUsIDcxLCA2OSwgMTYsIDIzMywgMzAsIDI1MywgMTk3LCAyNTIsIDQ5LCA2OSwgMTYsIDIzMywgMzAsIAorICAgIDI1MywgMTk3LCAyNTEsIDEwMywgNjksIDE2LCAyMzMsIDMwLCAyNTMsIDE5NywgMjI0LCAyMTUsIDY5LCAxNiwgMjMzLCAzMCwgCisgICAgMjUzLCAxOTcsIDIyNCwgMjA5LCA2OSwgMTYsIDIzMywgMzAsIDI1MywgMTk3LCAyMjQsIDIwNywgNjksIDE2LCAyMzMsIDMwLCAKKyAgICAyNTMsIDE5NywgMjI0LCAyMTMsIDY5LCAxNiwgMjMzLCAzMCwgMjUzLCAxOTcsIDIyNCwgMjExLCA4MywgMjUxLCAyMzYsIAorICAgIDgzLCAyNDUsIDE2MywgODMsIDI0OSwgMjE5LCA4MywgMjQzLCAyMjksIDIxOCwgMTI5LCA4MywgMjQ5LCAyMjYsIDgzLCAKKyAgICAyNDQsIDExLCAyNDcsIDExOCwgODMsIDIxNiwgMzksIDIxOSwgNTIsIDI0MCwgMTY4LCA4MywgMjE5LCAxOTAsIDMsIDI1MSwgCisgICAgMTcyLCAyMzEsIDE1NCwgODMsIDIzMSwgMTgzLCAyNDksIDIxOSwgODMsIDIzMSwgMTgzLCAyNDMsIDIyOSwgMjE4LCAxMjksIAorICAgIDgzLCAyMjgsIDE5MSwgODMsIDI0MywgMjUzLCA0NSwgMjIxLCAxNTcsIDExMCwgODMsIDI0MywgMjUzLCA0NSwgMjIxLCAKKyAgICAxNTcsIDEwNSwgODMsIDI0MywgMjUzLCA0NSwgMjIxLCAxNTcsIDE1OCwgODMsIDI1LCAyMjAsIDEzNywgODMsIDIxLCAyMTAsIAorICAgIDg2LCA4MywgMjEsIDExMCwgODMsIDIxLCAxMDUsIDgzLCAyMSwgMTU4LCA4MywgMjEsIDE2MSwgODMsIDIxLCAxODksIDgzLCAKKyAgICAyMSwgMTk0LCA4MywgMjEsIDE5OCwgODMsIDIxLCAxOTUsIDgzLCAyMSwgMjAwLCA4MywgMSwgNjEsIDgzLCAxLCA3NSwgODMsIAorICAgIDEsIDczLCA4MywgMSwgNzYsIDgzLCAxLCA3MCwgODMsIDEsIDIyNiwgMjM0LCA4MywgMSwgMjE0LCAyMTQsIDgzLCAxLCAKKyAgICAyNDUsIDIwOSwgODMsIDEsIDE5NywgODMsIDEsIDI1NCwgMTE1LCA4MywgMSwgMjUyLCAxOTEsIDgzLCAxLCAxOTAsIDgzLCAKKyAgICAxLCAyMjQsIDg4LCA4MywgMSwgMjQzLCAxMzUsIDgzLCAxLCAxODQsIDgzLCAxLCAyMzMsIDEzNSwgODMsIDEsIDIwNiwgODMsIAorICAgIDEsIDIyMCwgMTAyLCA4MywgMSwgMjE3LCAxMDUsIDgzLCAxLCAyNDgsIDIyMSwgODMsIDEsIDI1MCwgMTU3LCA4MywgMSwgCisgICAgMjM1LCAxNDEsIDgzLCAxLCAxOTEsIDgzLCAxLCAyMDUsIDgzLCAxLCAyMTIsIDY1LCA4MywgMSwgMjQ0LCAxOTYsIDgzLCAxLCAKKyAgICAxNzYsIDgzLCAxLCAyMzQsIDEzMiwgODMsIDEsIDIxNSwgMTgzLCA4MywgMSwgMjEwLCAxMTYsIDgzLCAxLCAyNDIsIDQ2LCAKKyAgICA4MywgMSwgMjEwLCAxNiwgODMsIDEsIDIzMiwgMjU0LCA4MywgMSwgMjEwLCA2OSwgODMsIDEsIDI1MCwgMTEwLCA4MywgMSwgCisgICAgMjE2LCAzOSwgMTk5LCAyNSwgNTAsIDgzLCAxLCAyMTYsIDM5LCA3NSwgODMsIDEsIDIxNiwgMzksIDczLCA4MywgMSwgMjE2LCAKKyAgICAzOSwgNzYsIDgzLCAxLCAyMTYsIDM5LCA3MCwgODMsIDEsIDIxNiwgMzksIDIyNiwgMjM0LCA4MywgMSwgMjE2LCAzOSwgCisgICAgMjE0LCAyMTQsIDgzLCAxLCAyMTYsIDM5LCAyNTQsIDExNSwgODMsIDEsIDIxNiwgMzksIDI1MiwgMTkxLCA4MywgMSwgMjE2LCAKKyAgICAzOSwgMTkwLCA4MywgMSwgMjE2LCAzOSwgMjI0LCA4OCwgODMsIDEsIDIxNiwgMzksIDI0MywgMTM1LCA4MywgMSwgMjE2LCAKKyAgICAzOSwgMTg0LCA4MywgMSwgMjE2LCAzOSwgMjE3LCAxMDUsIDgzLCAxLCAyMTYsIDM5LCAyNDgsIDIyMSwgODMsIDEsIDIxNiwgCisgICAgMzksIDI1MCwgMTU3LCA4MywgMSwgMjE2LCAzOSwgMjM1LCAxNDEsIDgzLCAxLCAyMTYsIDM5LCAyMTUsIDE4MywgODMsIDEsIAorICAgIDIxNiwgMzksIDE5MSwgODMsIDEsIDIxNiwgMzksIDIxMiwgNjUsIDgzLCAxLCAyMTYsIDM5LCAxNzYsIDgzLCAxLCAyMTYsIAorICAgIDM5LCAyNDMsIDEzMiwgODMsIDEsIDIxNiwgMzksIDI0MiwgNDYsIDgzLCAxLCAyMTYsIDM5LCAyMzUsIDEwNywgODMsIDEsIAorICAgIDIxNiwgMzksIDIyOCwgMjMxLCA4MywgMSwgMjE2LCAzOSwgMjQ2LCAzOCwgODMsIDEsIDIxOSwgMTkwLCA3NSwgODMsIDEsIAorICAgIDIxOSwgMTkwLCA3MywgODMsIDEsIDIxOSwgMTkwLCAyMzUsIDE1MiwgODMsIDEsIDIxOSwgMTkwLCAyMTQsIDIxNCwgODMsIAorICAgIDEsIDIxOSwgMTkwLCA3MCwgODMsIDEsIDIxOSwgMTkwLCAyNTQsIDExNSwgODMsIDEsIDIxOSwgMTkwLCAxNzYsIDgzLCAxLCAKKyAgICAyMTksIDE5MCwgMjQzLCAxMzUsIDgzLCAxLCAyMTksIDE5MCwgMTYyLCA4MywgMSwgMjE5LCAxOTAsIDE5MCwgODMsIDEsIAorICAgIDIxOSwgMTkwLCAyMjAsIDEwMiwgODMsIDEsIDIxOSwgMTkwLCAyMTcsIDEwNSwgODMsIDEsIDIxOSwgMTkwLCAyNDgsIDIyMSwgCisgICAgODMsIDEsIDIxOSwgMTkwLCAyMzUsIDE0MSwgODMsIDEsIDIxOSwgMTkwLCAyNDQsIDE5NiwgODMsIDEsIDIxOSwgMTkwLCAKKyAgICAyNDMsIDEzMiwgODMsIDEsIDIxOSwgMTkwLCAyNDIsIDQ2LCA4MywgMSwgMjE5LCAxOTAsIDIxNSwgMTgzLCA4MywgMSwgCisgICAgMjE5LCAxOTAsIDIxMCwgMTE2LCA4MywgMSwgMjE5LCAxOTAsIDIyMywgMTg0LCA4MywgMSwgMjE5LCAxOTAsIDI1MCwgMTU3LCAKKyAgICA4MywgMSwgMjE5LCAxOTAsIDIxMCwgODIsIDgzLCAxLCAyMzEsIDE4MywgNzMsIDgzLCAxLCAyMzEsIDE4MywgMTc2LCA4MywgCisgICAgMSwgMjMxLCAxODMsIDIwNSwgODMsIDEsIDIzMSwgMTgzLCAyNDQsIDE5NiwgODMsIDEsIDIzMSwgMTgzLCAyMTAsIDgyLCAKKyAgICA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyNTQsIDc2LCAxMTAsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxMywgCisgICAgMTQ4LCAxMTAsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDI0OCwgMTg2LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAKKyAgICAyMTQsIDIyNCwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjM1LCAxOTMsIDIxNCwgMjI0LCA4MywgMSwgMjU0LCAxNjIsIAorICAgIDI0MywgMTE2LCAyNTIsIDE1NSwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMTM0LCAyNTIsIDE1NSwgODMsIDEsIDI1NCwgCisgICAgMTYyLCAyNDMsIDExNiwgNjEsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDczLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgCisgICAgMTE2LCAxNzYsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIyOSwgNzcsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIAorICAgIDI1MSwgMzMsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxNSwgMTU2LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAKKyAgICAyMTUsIDE0NCwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjQ4LCAxMzUsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIAorICAgIDIyOCwgMTEwLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTcsIDEwNSwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgCisgICAgMjQ4LCAyMjEsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDE5MCwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjI1LCAKKyAgICAxNDcsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxOCwgMjIzLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTAsIAorICAgIDgyLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTAsIDExNiwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjU0LCAKKyAgICAyMDksIDgzLCAxLCAyMTYsIDM5LCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxNywgMTA1LCA4MywgMSwgMjE2LCAzOSwgMjU0LCAKKyAgICAxNjIsIDI0MywgMTE2LCAyMTAsIDgyLCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjQyLCAyNDksIAorICAgIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyMjksIDc3LCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAKKyAgICAyNDMsIDExNiwgMjUxLCAzMywgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIzNSwgMTE0LCA4MywgMSwgCisgICAgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjE1LCAxNTYsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgCisgICAgMTE2LCAyNDgsIDExOSwgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxNywgMTA1LCA4MywgMSwgMjMxLCAKKyAgICAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjQ4LCAyNSwgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIAorICAgIDIxOCwgMjIzLCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjQ5LCA3MiwgODMsIDEsIDIzMSwgMTgzLCAKKyAgICAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxMCwgODIsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTAsIAorICAgIDExNiwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMTYzLCA3MCwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMTYzLCAKKyAgICAxOTEsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyNTIsIDE4LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgCisgICAgMTE2LCAyNDgsIDIxMSwgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIzMiwgMjU0LCAxOCwgMTksIAorICAgIDIyNiwgMTA5LCAxOCwgMTksIDI1MywgMTY3LCAxOCwgMTksIDI1NSwgMjgsIDE4LCAxOSwgMjEyLCAyNSwgMTgsIDE5LCAKKyAgICAyMjQsIDIyMSwgMTgsIDE5LCAyMjUsIDIyOSwgMTgsIDE5LCAyMjQsIDEwNSwgMTgsIDE5LCAyMTcsIDMxLCAxOCwgMTksIAorICAgIDIzNCwgMTg5LCAxOCwgMTksIDIzMywgMTc5LCAxOCwgMTksIDIzMSwgMTMyLCAxOCwgMTksIDIyOCwgMzcsIDE4LCAxOSwgCisgICAgMjI5LCAxODEsIDE4LCAxOSwgMjMzLCA2OCwgMTgsIDE5LCAyMTksIDIyLCAxOCwgMTksIDIyMSwgMjExLCAxOCwgMTksIAorICAgIDIxOSwgMjMyLCAxOCwgMTksIDIyMCwgNjYsIDE4LCAxOSwgMjE5LCAyMDEsIDE4LCAxOSwgMjEwLCAyMjAsIDE4LCAxOSwgCisgICAgMjExLCA1MiwgMTgsIDE5LCAyMjMsIDEzNCwgMTgsIDE5LCAyMjcsIDE3MSwgMTgsIDE5LCAyMjYsIDIxNiwgMjI3LCAxNzEsIAorICAgIDE4LCAxOSwgMjI3LCAxNzAsIDE4LCAxOSwgMjI2LCAyMTYsIDIyNywgMTcwLCAxOCwgMTksIDIyNywgMTY5LCAxOCwgMTksIAorICAgIDIyNiwgMjE2LCAyMjcsIDE2OSwgMTgsIDE5LCAyMjcsIDE2OCwgMTgsIDE5LCAyMjYsIDIxNiwgMjI3LCAxNjgsIDE4LCAxOSwgCisgICAgMjIyLCAxMDUsIDE4LCAxOSwgMjIyLCAxMDQsIDE4LCAxOSwgMjIyLCAxMDMsIDE4LCAxOSwgMjIyLCAxMDIsIDE4LCAxOSwgCisgICAgMjIyLCAxMDEsIDE4LCAxOSwgMjIyLCAxMDksIDE4LCAxOSwgMjI2LCAyMTYsIDIyNiwgMTA1LCAxOCwgMTksIDIyNiwgMjE2LCAKKyAgICAyMTcsIDE1MiwgMTgsIDE5LCAyMjYsIDIxNiwgMjM1LCAyMywgMTgsIDE5LCAyMjYsIDIxNiwgMjUxLCA2NiwgMTgsIDE5LCAKKyAgICAyMjYsIDIxNiwgMTkzLCAxOCwgMTksIDIyNiwgMjE2LCAyMzAsIDI1LCAxOCwgMTksIDIyNiwgMjE2LCAyMjIsIDkxLCAxOCwgCisgICAgMTksIDIyNiwgMjE2LCAyMjAsIDEwNCwgMTgsIDE5LCAyNDUsIDIxOSwgMjEyLCA5OCwgMTgsIDE5LCAyMTIsIDcsIDIxMiwgCisgICAgOTgsIDE4LCAxOSwgNDAsIDQsIDIyMiwgMjMzLCAxOCwgMTksIDQwLCAyMjMsIDE1NywgMjQ3LCAxMjAsIDE4LCAxOSwgMjIzLCAKKyAgICAyMjMsIDIyMiwgMTA2LCAxOCwgMTksIDE1OSwgMjMyLCAxMjcsIDE4LCAxOSwgMTU5LCAyMzMsIDEzNCwgMTgsIDE5LCAyMTYsIAorICAgIDEyNiwgMTgsIDE5LCAyMTYsIDEyOCwgMTgsIDE5LCAyMTUsIDEzNiwgMTgsIDE5LCAyMTUsIDEzOCwgMTgsIDE5LCAyMTUsIAorICAgIDE0MywgMTgsIDE5LCAyMTYsIDQ5LCAxOCwgMTksIDIxNiwgNTEsIDE4LCAxOSwgMjIxLCAyMDksIDIxOSwgMjA2LCAxOCwgCisgICAgMTksIDIyMSwgMjA5LCAyMjAsIDEsIDE4LCAxOSwgMjIxLCAyMDksIDI0MSwgNTMsIDE4LCAxOSwgNzIsIDI0MiwgNzMsIDE4LCAKKyAgICAxOSwgNzIsIDI0OCwgNTIsIDI0MywgNTUsIDE4LCAxOSwgNzIsIDI0MywgMTMyLCAxOCwgMTksIDcyLCAyNDIsIDc4LCAxOCwgCisgICAgMTksIDIyMSwgMjA5LCAyMzUsIDMzLCAxOCwgMTksIDcyLCAyMzUsIDMxLCAxOCwgMTksIDI1MiwgNjgsIDI0OCwgNTIsIAorICAgIDE1NiwgMTgsIDE5LCAyNTIsIDY4LCAyNDgsIDUyLCAxNTMsIDE4LCAxOSwgNzIsIDI0OCwgNDcsIDIyMiwgOTEsIDIzMiwgCisgICAgMjIzLCAyMTMsIDEyMiwgMjMzLCAxMCwgMjMyLCAyMjMsIDEsIDE3NiwgMjMyLCAyMjMsIDEsIDIzNCwgMTMyLCAyMzIsIAorICAgIDIyMywgMSwgMjQzLCAxMzUsIDIzMiwgMjIzLCAxLCAyNDIsIDI0OSwgMjMyLCAyMjMsIDEsIDIyOSwgNzcsIDIzMiwgMjIzLCAKKyAgICAxLCAyNTEsIDMzLCAyMzIsIDIyMywgMSwgMjUwLCAxNTcsIDIzMiwgMjIzLCAxLCAyMzUsIDE0MSwgMjMyLCAyMjMsIDEsIAorICAgIDIzNSwgMTE0LCAyMzIsIDIyMywgMSwgMjExLCA3MSwgMjMyLCAyMjMsIDEsIDIxNywgMTA1LCAyMzIsIDIyMywgMSwgMjE2LCAKKyAgICAyMDgsIDIzMiwgMjIzLCAxLCAyNDgsIDIyMSwgMjMyLCAyMjMsIDEsIDI0OCwgMjUsIDIzMiwgMjIzLCAxLCAxOTcsIDIzMiwgCisgICAgMjIzLCAxLCAxOTAsIDIzMiwgMjIzLCAxLCAyMjUsIDE0NywgMjMyLCAyMjMsIDEsIDI1MiwgMTkxLCAyMzIsIDIyMywgMSwgCisgICAgMjUyLCAxOCwgMjMyLCAyMjMsIDEsIDE4NCwgMjMyLCAyMjMsIDEsIDE5MSwgMjMyLCAyMjMsIDEsIDIwNSwgMjMyLCAyMjMsIAorICAgIDEsIDIzMywgMTM1LCAyMzIsIDIyMywgMSwgMjEyLCA2NSwgMjMyLCAyMjMsIDEsIDIyMCwgMTAyLCAyMzIsIDIyMywgMSwgCisgICAgMjE4LCAyMjMsIDIzMiwgMjIzLCAxLCAyMDYsIDIzMiwgMjIzLCAxLCAxNjIsIDIzMiwgMjIzLCAyNSwgNSwgNjEsIDIzMiwgCisgICAgMjIzLCAyNSwgNSwgNzMsIDIzMiwgMjIzLCAyNSwgNSwgNzAsIDIzMiwgMjIzLCAyNSwgNSwgMjQ1LCAyMDksIDIzMiwgMjIzLCAKKyAgICAyNSwgNSwgMjU0LCAyMDEsIDIzMiwgMjIzLCAyNSwgNSwgMjI2LCAxODMsIDIzMiwgMjIzLCAyNSwgNSwgMjUzLCAxOTIsIAorICAgIDIzMiwgMjIzLCAyNSwgNSwgNzUsIDIzMiwgMjIzLCAyNSwgNSwgNzYsIDIzMiwgMjIzLCAyMTgsIDczLCAxLCAxOTEsIDIzMiwgCisgICAgMjIzLCAyMTgsIDczLCAxLCAyMDUsIDIzMiwgMjIzLCAyMTgsIDczLCAxLCAyMTIsIDY1LCAyMzIsIDIyMywgNCwgMSwgMTc2LCAKKyAgICAyMzIsIDIyMywgNCwgMSwgMjI5LCA3NywgMjMyLCAyMjMsIDQsIDEsIDI1NCwgNzUsIDIzMiwgMjIzLCA0LCAxLCAyMTcsIAorICAgIDEwNSwgMjMyLCAyMjMsIDQsIDEsIDE5NywgMjMyLCAyMjMsIDQsIDEsIDE5MCwgMjMyLCAyMjMsIDQsIDEsIDE4NCwgMjMyLCAKKyAgICAyMjMsIDQsIDEsIDIwNSwgMjMyLCAyMjMsIDQsIDEsIDIzMywgMTM1LCAyMzIsIDIyMywgNSwgMjMwLCA4OSwgMjMyLCAyMjMsIAorICAgIDUsIDIzNCwgMTcxLCAyMzIsIDIyMywgNSwgMjIyLCAzMiwgMjMyLCAyMjMsIDUsIDIzMiwgMTI3LCAyMzIsIDIyMywgMjQ1LCAKKyAgICAzMSwgNzgsIDIzMiwgMjIzLCAyMjQsIDEzLCA3OCwgMjMyLCAyMjMsIDIxLCAyMTAsIDg2LCAyMzIsIDIyMywgMjEsIDExMCwgCisgICAgMjMyLCAyMjMsIDIxLCAxMDUsIDIzMiwgMjIzLCAyMSwgMTU4LCAyMzIsIDIyMywgMjEsIDE2MSwgMjMyLCAyMjMsIDIxLCAKKyAgICAxODksIDIzMiwgMjIzLCAyMSwgMTk0LCAyMzIsIDIyMywgMjEsIDE5OCwgMjMyLCAyMjMsIDIxLCAxOTUsIDIzMiwgMjIzLCAKKyAgICAyMSwgMjAwLCAzOSwgMjMzLCA1OSwgMSwgMTc2LCAzOSwgMjMzLCA1OSwgMSwgMjExLCAxNjUsIDM5LCAyMzMsIDU5LCAxLCAKKyAgICAyMjksIDc3LCAzOSwgMjMzLCA1OSwgMSwgMjE1LCAxODMsIDM5LCAyMzMsIDU5LCAxLCAyMDYsIDM5LCAyMzMsIDU5LCAxLCAKKyAgICAxOTEsIDM5LCAyMzMsIDU5LCAxLCAyMTcsIDEwNSwgMzksIDIzMywgNTksIDEsIDIxNiwgMjA4LCAzOSwgMjMzLCA1OSwgMSwgCisgICAgMjMzLCAxMzUsIDM5LCAyMzMsIDU5LCAxLCAxOTAsIDM5LCAyMzMsIDU5LCAxLCAyMjUsIDE0NywgMzksIDIzMywgNTksIDEsIAorICAgIDE4NCwgMzksIDIzMywgNTksIDEsIDI0NCwgMTk2LCAzOSwgMjMzLCA1OSwgMSwgMjE0LCAyNywgMzksIDIzMywgNTksIDEsIAorICAgIDE2MiwgMzksIDIzMywgNTksIDEsIDIyNCwgODgsIDM5LCAyMzMsIDU5LCAxLCAyMzQsIDEzMiwgMzksIDIzMywgNTksIDEsIAorICAgIDIxNSwgMTc1LCAzOSwgMjMzLCA1OSwgMSwgMTk3LCAzOSwgMjMzLCA1OSwgMSwgNjEsIDM5LCAyMzMsIDU5LCAxLCA3MywgCisgICAgMzksIDIzMywgNTksIDEsIDI0NSwgMjA5LCAzOSwgMjMzLCA1OSwgMSwgMjQ1LCAxOTcsIDM5LCAyMzMsIDU5LCAxLCA3MCwgCisgICAgMzksIDIzMywgNTksIDEsIDIyNiwgMTgzLCAzOSwgMjMzLCA1OSwgMSwgNzYsIDM5LCAyMzMsIDU5LCAxLCAyMTQsIDIxNCwgCisgICAgMzksIDIzMywgNTksIDEsIDc1LCAzOSwgMjMzLCA1OSwgMSwgMjUzLCAxOTAsIDM5LCAyMzMsIDU5LCAxLCAyNTQsIDIwMSwgCisgICAgMzksIDIzMywgNTksIDEsIDIxNiwgMjgsIDM5LCAyMzMsIDU5LCAxLCAyMTYsIDI3LCAzOSwgMjMzLCA1OSwgMSwgMjE2LCAKKyAgICAyNiwgMzksIDIzMywgNTksIDEsIDIxNiwgMjUsIDM5LCAyMzMsIDU5LCAxLCAyMTYsIDI0LCAxNjYsIDM5LCAxNzMsIDEsIAorICAgIDEyNSwgMjI0LCA4OCwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIyNCwgODgsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAxNzYsIAorICAgIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMTEsIDE2NSwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIyOSwgNzcsIDE2NiwgMzksIAorICAgIDE3MywgMSwgMTIxLCAxNzYsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMTEsIDE2NSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIAorICAgIDIyOSwgNzcsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMTUsIDE4MywgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIwNiwgMTY2LCAKKyAgICAzOSwgMTczLCAxLCAxMjUsIDE5MSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIxNSwgMTgzLCAxNjYsIDM5LCAxNzMsIDEsIAorICAgIDEyMSwgMjA2LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMTkxLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjE3LCAxMDUsIDE2NiwgCisgICAgMzksIDE3MywgMSwgMTI1LCAyMTYsIDIwOCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDE5NywgMTY2LCAzOSwgMTczLCAxLCAKKyAgICAxMjEsIDIxNywgMTA1LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjE2LCAyMDgsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAxOTcsIAorICAgIDE2NiwgMzksIDE3MywgMSwgMTI1LCAxOTAsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMjUsIDE0NywgMTY2LCAzOSwgMTczLCAKKyAgICAxLCAxMjUsIDE4NCwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDE5MCwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIyNSwgMTQ3LCAKKyAgICAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMTg0LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjQ0LCAxOTYsIDE2NiwgMzksIDE3MywgCisgICAgMSwgMTI1LCAyMTQsIDI3LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjMzLCAxMzUsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAKKyAgICAyNDQsIDE5NiwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIxNCwgMjcsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMzMsIDEzNSwgCisgICAgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDE2MiwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDI0OCwgMjIxLCAxNjYsIDM5LCAxNzMsIAorICAgIDEsIDEyNSwgMjUyLCAxOTEsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAxNjIsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyNDgsIAorICAgIDIyMSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDI1MiwgMTkxLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjMzLCAxODQsIDE2NiwgCisgICAgMzksIDE3MywgMSwgMTI1LCAyMTEsIDEzOCwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIzMywgMTg0LCAxNjYsIDM5LCAxNzMsIAorICAgIDEsIDEyMSwgMjExLCAxMzgsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMTgsIDgyLCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgCisgICAgMjE4LCA4MiwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjUsIDIxOSwgMjM5LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyNTUsIDczLCAKKyAgICAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMzYsIDMzLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCA3MCwgMTY2LCAzOSwgMTczLCAyNSwgCisgICAgNSwgMjE0LCAxMTgsIDE2NiwgMzksIDE3MywgMjUsIDUsIDc1LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyNTQsIDI0MywgMTY2LCAKKyAgICAzOSwgMTczLCAyNSwgNSwgNzYsIDE2NiwgMzksIDE3MywgMjUsIDUsIDIyNywgMCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgCisgICAgMjE0LCAyMTQsIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1MywgMTY3LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyNTUsIDI4LCAKKyAgICAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMTQsIDExMSwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjI2LCAxMDksIDE2NiwgMzksIAorICAgIDE3MywgMjUsIDUsIDIyNiwgMjUzLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMTQsIDIxMCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgCisgICAgMjM1LCAxNTIsIDE2NiwgMzksIDE3MywgMSwgNDAsIDIxNCwgMTA1LCAxNjYsIDM5LCAxNzMsIDEsIDQwLCAyMjksIDc5LCAKKyAgICAxNjYsIDM5LCAxNzMsIDEsIDQwLCAyMzAsIDI1LCAxNjYsIDM5LCAxNzMsIDEsIDQwLCAxOTMsIDE2NiwgMzksIDE3MywgMSwgCisgICAgNDAsIDIzNSwgMjMsIDE2NiwgMzksIDE3MywgMSwgNDAsIDI0OSwgNjAsIDE2NiwgMzksIDE3MywgMSwgNDAsIDI1MywgMTU4LCAKKyAgICAxNjYsIDM5LCAxNzMsIDEzOCwgMjMxLCAxNTgsIDE2NiwgMzksIDE3MywgMTM4LCAyMzEsIDE1NywgMTY2LCAzOSwgMTczLCAKKyAgICAyMSwgMjEwLCA4NiwgMTY2LCAzOSwgMTczLCAyMSwgMTEwLCAxNjYsIDM5LCAxNzMsIDIxLCAxMDUsIDE2NiwgMzksIDE3MywgCisgICAgMjEsIDE1OCwgMTY2LCAzOSwgMTczLCAyMSwgMTYxLCAxNjYsIDM5LCAxNzMsIDIxLCAxODksIDE2NiwgMzksIDE3MywgMjEsIAorICAgIDE5NCwgMTY2LCAzOSwgMTczLCAyMSwgMTk4LCAxNjYsIDM5LCAxNzMsIDIxLCAxOTUsIDE2NiwgMzksIDE3MywgMjEsIDIwMCwgCisgICAgMTY2LCAzOSwgMTczLCA4OSwgMjEsIDExMCwgMTY2LCAzOSwgMTczLCA1LCAyMzMsIDEyMCwgMTY2LCAzOSwgMTczLCA1LCAKKyAgICAyMzMsIDExOSwgNjksIDE2LCAyMjUsIDIzNiwgNjksIDE2LCAyMzAsIDcyLCAyMzQsIDI1LCA2OSwgMTYsIDIyNSwgNzIsIAorICAgIDIzNCwgMjUsIDY5LCAxNiwgMjUyLCA1MCwgMjM0LCAyNSwgNjksIDE2LCAyNTEsIDEwNCwgMjM0LCAyNSwgNjksIDE2LCAKKyAgICAyMjQsIDIxNiwgMjM0LCAyNSwgNjksIDE2LCAyMjQsIDIxMCwgMjM0LCAyNSwgNjksIDE2LCAyMjQsIDIwOCwgMjM0LCAyNSwgCisgICAgNjksIDE2LCAyMjQsIDIxNCwgMjM0LCAyNSwgNjksIDE2LCAyMjQsIDIxMiwgMjM0LCAyNSwgNjksIDE2LCAyNDgsIDE3MywgCisgICAgMjM0LCAyNSwgNjksIDE2LCAyNDgsIDE2OSwgMjM0LCAyNSwgNjksIDE2LCAyNDgsIDE2OCwgMjM0LCAyNSwgNjksIDE2LCAKKyAgICAyNDgsIDE3MSwgMjM0LCAyNSwgNjksIDE2LCAyNDgsIDE3MCwgMjM0LCAyNSwgNjksIDE2LCAyNDgsIDE2NywgMjM0LCAyNSwgCisgICAgNjksIDE2LCAyMTUsIDg3LCA2OSwgMTYsIDIzMCwgNzIsIDIyMiwgMjA1LCA2OSwgMTYsIDIyNSwgNzIsIDIyMiwgMjA1LCAKKyAgICA2OSwgMTYsIDI1MiwgNTAsIDIyMiwgMjA1LCA2OSwgMTYsIDI1MSwgMTA0LCAyMjIsIDIwNSwgNjksIDE2LCAyMjQsIDIxNiwgCisgICAgMjIyLCAyMDUsIDY5LCAxNiwgMjI0LCAyMTAsIDIyMiwgMjA1LCA2OSwgMTYsIDIyNCwgMjA4LCAyMjIsIDIwNSwgNjksIDE2LCAKKyAgICAyMjQsIDIxNCwgMjIyLCAyMDUsIDY5LCAxNiwgMjI0LCAyMTIsIDIyMiwgMjA1LCA2OSwgMTYsIDI0OCwgMTczLCAyMjIsIAorICAgIDIwNSwgNjksIDE2LCAyNDgsIDE2OSwgMjIyLCAyMDUsIDY5LCAxNiwgMjQ4LCAxNjgsIDIyMiwgMjA1LCA2OSwgMTYsIDI0OCwgCisgICAgMTcxLCAyMjIsIDIwNSwgNjksIDE2LCAyNDgsIDE3MCwgMjIyLCAyMDUsIDY5LCAxNiwgMjQ4LCAxNjcsIDIyMiwgMjA1LCAKKyAgICAyNTEsIDEyMSwgMSwgMTc2LCAyNTEsIDEyMSwgMSwgMjQzLCAxMzUsIDI1MSwgMTIxLCAxLCAyMjksIDc3LCAyNTEsIDEyMSwgCisgICAgMSwgMjI5LCAyMiwgMjUxLCAxMjEsIDEsIDE5MCwgMjUxLCAxMjEsIDEsIDI1MiwgMTkxLCAyNTEsIDEyMSwgMSwgMTg0LCAKKyAgICAyNTEsIDEyMSwgMSwgMjMwLCAxMDUsIDI1MSwgMTIxLCAxLCAyMTcsIDEwNSwgMjUxLCAxMjEsIDEsIDI0OCwgMjIxLCAyNTEsIAorICAgIDEyMSwgMSwgMTk3LCAyNTEsIDEyMSwgMSwgMjI4LCAzNiwgMjUxLCAxMjEsIDEsIDI1MSwgMzMsIDI1MSwgMTIxLCAxLCAKKyAgICAyMzUsIDE0MSwgMjUxLCAxMjEsIDEsIDIyNywgMTY1LCAyNTEsIDEyMSwgMSwgMjI3LCAxNTgsIDI1MSwgMTIxLCAxLCAxOTEsIAorICAgIDI1MSwgMTIxLCAxLCAyMDUsIDI1MSwgMTIxLCAxLCAyMzMsIDEzNSwgMjUxLCAxMjEsIDEsIDIxNCwgMjcsIDI1MSwgMTIxLCAKKyAgICAxLCAyMDYsIDI1MSwgMTIxLCAxLCA2MSwgMjUxLCAxMjEsIDEsIDE2MiwgMjUxLCAxMjEsIDI1LCA1LCA3MywgMjUxLCAxMjEsIAorICAgIDI1LCA1LCA3MCwgMjUxLCAxMjEsIDI1LCA1LCA3NSwgMjUxLCAxMjEsIDI1LCA1LCA3NiwgMjUxLCAxMjEsIDI1LCA1LCAKKyAgICAyNTQsIDI0MywgMjUxLCAxMjEsIDIyNiwgNjAsIDI1MSwgMTIxLCAyNDUsIDE0MywgNjQsIDIyMSwgMTcyLCAzOSwgODksIDEsIAorICAgIDEyNSwgMTc2LCAzOSwgODksIDEsIDEyNSwgMjM0LCAxMzIsIDM5LCA4OSwgMSwgMTI1LCAyMzMsIDE3MSwgMzksIDg5LCAxLCAKKyAgICAxMjEsIDE3NiwgMzksIDg5LCAxLCAxMjEsIDIzMywgMTcxLCAzOSwgODksIDEsIDEyMSwgMjM0LCAxMzIsIDM5LCA4OSwgMSwgCisgICAgMjI5LCA3NywgMzksIDg5LCAxLCAxMjUsIDI1MSwgMzMsIDM5LCA4OSwgMSwgMTI1LCAyNTAsIDE1NywgMzksIDg5LCAxLCAKKyAgICAxMjEsIDI1MSwgMzMsIDM5LCA4OSwgMSwgMTIxLCAyMDYsIDM5LCA4OSwgMSwgMTIxLCAyNTAsIDE1NywgMzksIDg5LCAxLCAKKyAgICAyMjcsIDE2NSwgMzksIDg5LCAxLCAyMjMsIDE0MCwgMzksIDg5LCAxLCAxMjUsIDIyMywgMTM4LCAzOSwgODksIDEsIDI0OCwgCisgICAgMjIxLCAzOSwgODksIDEsIDEyMSwgMjIzLCAxMzgsIDM5LCA4OSwgMSwgMjIzLCAxNDksIDM5LCA4OSwgMSwgMTI1LCAyMTcsIAorICAgIDEwNSwgMzksIDg5LCAxLCAxMjUsIDIxNiwgMjA4LCAzOSwgODksIDEsIDEyMSwgMjE3LCAxMDUsIDM5LCA4OSwgMSwgMTIxLCAKKyAgICAyMTYsIDIwOCwgMzksIDg5LCAxLCAxOTcsIDM5LCA4OSwgMSwgMjUyLCAxOTEsIDM5LCA4OSwgMSwgMTI1LCAxOTAsIDM5LCAKKyAgICA4OSwgMSwgMTI1LCAyMjUsIDE0NywgMzksIDg5LCAxLCAxMjUsIDI0NCwgMTk2LCAzOSwgODksIDEsIDEyMSwgMTkwLCAzOSwgCisgICAgODksIDEsIDEyMSwgMjQ0LCAxOTYsIDM5LCA4OSwgMSwgMTIxLCAyMjUsIDE0NywgMzksIDg5LCAxLCAxODQsIDM5LCA4OSwgCisgICAgMSwgMTIxLCAxOTEsIDM5LCA4OSwgMSwgMTI1LCAxOTEsIDM5LCA4OSwgMSwgMjA1LCAzOSwgODksIDEsIDIyMiwgMTM3LCAKKyAgICAzOSwgODksIDEsIDIzMywgMTM1LCAzOSwgODksIDEsIDIzMiwgOTMsIDM5LCA4OSwgMSwgMjEyLCA2NSwgMzksIDg5LCAxLCAKKyAgICAxMjUsIDIyMCwgMTAyLCAzOSwgODksIDEsIDEyNSwgMjE4LCAyMjMsIDM5LCA4OSwgMSwgMTI1LCAyMDYsIDM5LCA4OSwgMSwgCisgICAgMTI1LCAxNjIsIDM5LCA4OSwgMSwgMjMyLCAxODQsIDM5LCA4OSwgMSwgNjEsIDM5LCA4OSwgMSwgMTIxLCAxNjIsIDM5LCAKKyAgICA4OSwgMSwgNzMsIDM5LCA4OSwgMSwgMjM2LCAzMywgMzksIDg5LCAxLCA3MCwgMzksIDg5LCAxLCAyMTQsIDExOCwgMzksIAorICAgIDg5LCAxLCAyNDUsIDIwOSwgMzksIDg5LCAxLCAyMjYsIDE4MywgMzksIDg5LCAxLCAyMzMsIDEyMCwgMzksIDg5LCAxLCAKKyAgICAyNDIsIDEzMiwgMjA2LCAzOSwgODksIDExNiwgNSwgMTQ3LCAyMDUsIDM5LCA4OSwgMTE2LCA1LCAxNDcsIDIzMywgMTM1LCAKKyAgICAzOSwgODksIDExNiwgNSwgMjMzLCAxMzYsIDIxNywgNTgsIDIzMywgMTA5LCAzOSwgODksIDUsIDIzMSwgMjA0LCAyMzQsIAorICAgIDIzMSwgMjMzLCAxMDksIDM5LCA4OSwgMTE2LCA1LCA0MCwgMjI5LCA3NywgMzksIDg5LCAxMTYsIDUsIDEyMSwgMTkwLCAzOSwgCisgICAgODksIDExNiwgNSwgMTI1LCAyMjMsIDEzOSwgMTc3LCAxMjEsIDE5MCwgMzksIDg5LCAxMTYsIDUsIDE4NCwgMzksIDg5LCAKKyAgICAxMTYsIDUsIDI1MiwgMTkxLCAzOSwgODksIDExNiwgNSwgMjA2LCAzOSwgODksIDUsIDIyMiwgMTAsIDM5LCA4OSwgMjUsIDUsIAorICAgIDYxLCAzOSwgODksIDI1LCA1LCAyMzEsIDIwNCwgMjIxLCAyMjYsIDM5LCA4OSwgMjUsIDUsIDI1NSwgNzMsIDM5LCA4OSwgCisgICAgMjUsIDUsIDIxNywgNjQsIDI1NSwgNzMsIDM5LCA4OSwgMjUsIDUsIDczLCAzOSwgODksIDI1LCA1LCAyMzYsIDMzLCAzOSwgCisgICAgODksIDI1LCA1LCAyMTQsIDIxNCwgMzksIDg5LCAyNSwgNSwgMjE0LCAxMTcsIDM5LCA4OSwgMjUsIDUsIDcwLCAzOSwgODksIAorICAgIDI1LCA1LCAyMTQsIDExOCwgMzksIDg5LCAyNSwgNSwgNzYsIDM5LCA4OSwgMjUsIDUsIDIyNywgMSwgNTEsIDM5LCA4OSwgCisgICAgMjUsIDUsIDIyNiwgMTA5LCAzOSwgODksIDI1LCA1LCA3NSwgMzksIDg5LCAyNSwgNSwgMjU0LCAyNDMsIDM5LCA4OSwgMjUsIAorICAgIDUsIDIyNiwgMTgzLCAzOSwgODksIDI1LCA1LCAyNTQsIDIwMSwgMzksIDg5LCAyNSwgNSwgODksIDI1NCwgMjAxLCAzOSwgCisgICAgODksIDI1LCA1LCAyMjcsIDEsIDQ4LCAzOSwgODksIDUsIDIzMSwgMjA0LCAyMzQsIDIzMCwgMzksIDg5LCA1LCAyMTYsIDI5LCAKKyAgICAzOSwgODksIDUsIDIxNiwgMjgsIDM5LCA4OSwgNSwgMjM0LCA5NywgMjE2LCAyNywgMzksIDg5LCA1LCAyMzQsIDk3LCAyMTYsIAorICAgIDI2LCAzOSwgODksIDUsIDIzNCwgOTcsIDIxNiwgMjUsIDM5LCA4OSwgNSwgMjIzLCAxODgsIDI0MiwgNDUsIDM5LCA4OSwgNSwgCisgICAgMjMxLCAyMDQsIDIyMSwgMjUzLCAzOSwgODksIDUsIDIzNCwgOTYsIDIzNCwgMjE1LCAzOSwgODksIDM4LCAyNDksIDExNSwgCisgICAgMjQ3LCAxMjAsIDM5LCA4OSwgMjQxLCA0NiwgMjEsIDIxMCwgODYsIDM5LCA4OSwgMjQxLCA0NiwgMjEsIDExMCwgMzksIDg5LCAKKyAgICAyNDEsIDQ2LCAyMSwgMTA1LCAzOSwgODksIDI0MSwgNDYsIDIxLCAxNTgsIDM5LCA4OSwgMjQxLCA0NiwgMjEsIDE2MSwgMzksIAorICAgIDg5LCAyNDEsIDQ2LCAyMSwgMTg5LCAzOSwgODksIDI0MSwgNDYsIDIxLCAxOTQsIDM5LCA4OSwgMjQxLCA0NiwgMjEsIDE5OCwgCisgICAgMzksIDg5LCAyNDEsIDQ2LCAyMSwgMTk1LCAzOSwgODksIDI0MSwgNDYsIDIxLCAyMDAsIDM5LCA4OSwgODksIDIxLCAyMTAsIAorICAgIDg2LCAzOSwgODksIDg5LCAyMSwgMTEwLCAzOSwgODksIDg5LCAyMSwgMTA1LCAzOSwgODksIDg5LCAyMSwgMTU4LCAzOSwgCisgICAgODksIDg5LCAyMSwgMTYxLCAzOSwgODksIDg5LCAyMSwgMTg5LCAzOSwgODksIDg5LCAyMSwgMTk0LCAzOSwgODksIDg5LCAKKyAgICAyMSwgMTk4LCAzOSwgODksIDg5LCAyMSwgMTk1LCAzOSwgODksIDg5LCAyMSwgMjAwLCAzOSwgODksIDUsIDIxMSwgMjQ5LCAKKyAgICAzOSwgODksIDUsIDIxMSwgMjQ4LCAzOSwgODksIDUsIDIyMSwgMjE1LCAzOSwgODksIDUsIDIzNCwgMTYwLCAzOSwgODksIDUsIAorICAgIDI0MCwgMjMyLCAzOSwgODksIDUsIDI0NywgMTM0LCAzOSwgODksIDUsIDIyMywgNDksIDIyMiwgMTg3LCAyMjMsIDE0OSwgCisgICAgMzksIDg5LCA1LCAyMzEsIDIwNCwgMjExLCA3MiwgMzksIDg5LCA1LCAyMzUsIDYsIDM5LCA4OSwgNSwgMjM1LCA1LCAzOSwgCisgICAgODksIDUsIDIyMSwgMjIyLCAzOSwgODksIDUsIDIyMSwgMjIxLCAzOSwgODksIDUsIDI0MiwgOSwgMzksIDg5LCA1LCAyNTEsIAorICAgIDMwLCAxMDIsIDUsIDIxNCwgMjAwLCAyMjMsIDMwLCAxMDIsIDUsIDIxNCwgMjAwLCAyNTEsIDEsIDEwMiwgNSwgMjUwLCAKKyAgICAxODYsIDEwMiwgNSwgMjE4LCAxNSwgMTAyLCA1LCAyNTEsIDIzMywgMTAyLCAxLCAyNTQsIDE4NCwgMTAyLCAxLCAyNTQsIAorICAgIDE4NSwgMjE3LCAxMywgMTAyLCAxLCAyMzYsIDI5LCAxMDIsIDEsIDIzNiwgMzAsIDIxNywgMTMsIDEwMiwgMSwgMjE0LCAKKyAgICAyMDMsIDEwMiwgMSwgMjE0LCAyMDQsIDIxNywgMTMsIDEwMiwgMSwgMjIzLCAxODgsIDIyMywgNzksIDEwMiwgMSwgMjIzLCAKKyAgICAxODgsIDIyMywgODAsIDIxNywgMTMsIDEwMiwgMSwgMjMzLCAxMzYsIDIzMywgMjQsIDEwMiwgMSwgMjMzLCAxMzYsIDIzMywgCisgICAgMjUsIDIxNywgMTMsIDEwMiwgMSwgMjQ1LCAxNzksIDEwMiwgMSwgMjU0LCAxOTksIDEwMiwgMSwgMjI2LCAyMTIsIDEwMiwgCisgICAgMSwgMjI2LCAyMTMsIDIxNywgMTMsIDEwMiwgMSwgMTc2LCAxMDIsIDEsIDIzNSwgMTMsIDIzMSwgMjA3LCAxMDIsIDEsIAorICAgIDI0MywgMTM1LCAxMDIsIDEsIDI0MywgMTM2LCAyNDIsIDE2MSwgMTAyLCAxLCAyMjksIDc3LCAxMDIsIDEsIDI1MSwgMzMsIAorICAgIDEwMiwgMSwgMjUxLCAzNCwgMjMzLCAxMjMsIDEwMiwgMSwgMjM1LCAxNDEsIDEwMiwgMSwgMjM1LCAxNDIsIDIzNSwgMTE4LCAKKyAgICAxMDIsIDEsIDIyNywgMTY1LCAxMDIsIDEsIDIxNywgMTA2LCAyMzMsIDc2LCAxMDIsIDEsIDIxNywgMTA2LCAyMzAsIDY3LCAKKyAgICAyMzEsIDIwNywgMTAyLCAxLCAyNDgsIDIyMiwgMjMwLCA2NywgMjU0LCAxNDUsIDEwMiwgMSwgMjQ4LCAyMjIsIDIzMCwgNjcsIAorICAgIDIzMSwgMjA3LCAxMDIsIDEsIDIyOSwgMjI5LCAyMjMsIDE1MiwgMTAyLCAxLCAyMTcsIDEwNSwgMTAyLCAxLCAyMTcsIDEwNiwgCisgICAgMjE3LCAzNSwgMTAyLCAxLCAyNDgsIDIyMSwgMTAyLCAxLCAyNDgsIDIyMiwgMjMxLCAyMjUsIDEwMiwgMSwgMTk3LCAxMDIsIAorICAgIDEsIDE5MCwgMTAyLCAxLCAyMjYsIDkwLCAyMzQsIDIyNiwgMTAyLCAxLCAyNTIsIDE5MSwgMTAyLCAxLCAyNTIsIDE5MiwgCisgICAgMjM0LCAxNzIsIDEwMiwgMSwgMTg0LCAxMDIsIDEsIDE5MSwgMTAyLCAxLCAyMDUsIDEwMiwgMSwgMjMzLCAxMzUsIDEwMiwgCisgICAgMSwgMjEyLCA2NSwgMTAyLCAxLCAyMjIsIDM0LCAyMjIsIDIwLCAxMDIsIDEsIDIyMiwgMzQsIDIyMSwgMjMzLCAxMDIsIDEsIAorICAgIDIwNiwgMTAyLCAxLCAxNjIsIDEwMiwgNSwgMjIzLCA3MCwgMTAyLCAyNSwgNSwgMjE3LCAxMywgMTAyLCAyNSwgNSwgMjE0LCAKKyAgICAxOTksIDEwMiwgMjUsIDUsIDIxNCwgMjAwLCAyMjEsIDIyOSwgMTAyLCAyNSwgNSwgMjE4LCA0NywgMTAyLCAyNSwgNSwgCisgICAgMjE4LCA0OCwgMjM2LCAyMSwgMTAyLCAyNSwgNSwgMjIzLCAxODgsIDIyMywgNzksIDEwMiwgMjUsIDUsIDIyMywgMTg4LCAKKyAgICAyMjMsIDgwLCAyMTcsIDEzLCAxMDIsIDI1LCA1LCAyMzMsIDEzNiwgMjMzLCAyNCwgMTAyLCAyNSwgNSwgMjMzLCAxMzYsIAorICAgIDIzMywgMjUsIDIxNywgMTMsIDEwMiwgMjUsIDUsIDIxNywgNjUsIDEwMiwgMjUsIDUsIDIxNywgNjYsIDIyMywgNzksIDEwMiwgCisgICAgMjUsIDUsIDIxNywgNjYsIDIxNywgMTMsIDEwMiwgMjUsIDUsIDIxNywgNjYsIDIyMywgODAsIDIxNywgMTMsIDEwMiwgMjUsIAorICAgIDUsIDIyNSwgMTg0LCAxMDIsIDI1LCA1LCAyMjUsIDE4NSwgMjE3LCAxMywgMTAyLCAyNTQsIDI1MCwgMjU0LCAyNDksIDEwMiwgCisgICAgMSwgMjM0LCAyNTEsIDIyMSwgMjI4LCAxMDIsIDEsIDIzNCwgMTAyLCAyMjEsIDIyOCwgMTAyLCAxLCAyMTUsIDM0LCAyMjEsIAorICAgIDIyOCwgMTAyLCAxLCAyNDUsIDIwMywgMjIxLCAyMjgsIDEwMiwgMSwgMjE0LCAwLCAyMjEsIDIyOCwgMTAyLCAxLCAyMTAsIAorICAgIDEwNywgMjIxLCAyMjgsIDEwMiwgMSwgMjUzLCAyMDksIDIyMSwgMjI4LCAxMDIsIDIxLCAyMTAsIDg2LCAxMDIsIDIxLCAKKyAgICAxMTAsIDEwMiwgMjEsIDEwNSwgMTAyLCAyMSwgMTU4LCAxMDIsIDIxLCAxNjEsIDEwMiwgMjEsIDE4OSwgMTAyLCAyMSwgCisgICAgMTk0LCAxMDIsIDIxLCAxOTgsIDEwMiwgMjEsIDE5NSwgMTAyLCAyMSwgMjAwLCAxMDIsIDIyNiwgMjksIDEwMiwgMjI2LCAKKyAgICA1NSwgMTAyLCAyMTEsIDIzOCwgMTAyLCAyNTAsIDIzNiwgMjI2LCA0OCwgMTAyLCAyNTAsIDIzNiwgMjE5LCAxNzIsIDEwMiwgCisgICAgMjUwLCAyMzYsIDIyNiwgMiwgMTAyLCAyMjYsIDU0LCAxMDIsIDI4LCAxNiwgMjQ3LCAxMjYsIDEwMiwgMjgsIDE2LCAyNDgsIAorICAgIDUxLCAxMDIsIDI4LCAxNiwgMjQ2LCA2NCwgMTAyLCAyOCwgMTYsIDI0OCwgMTc2LCAxMDIsIDI4LCAxNiwgMjQ4LCAxNzcsIAorICAgIDIxOCwgMTUsIDEwMiwgMjgsIDE2LCAyNDcsIDIwNSwgMTAyLCAyOCwgMTYsIDI0OCwgMjE0LCAxMDIsIDI4LCAxNiwgMjQ4LCAKKyAgICAzMywgMTAyLCAyOCwgMTYsIDI0OCwgMTk4LCAxMDIsIDI4LCAxNiwgMjQ4LCAxNzcsIDI0MywgNTcsIDEwMiwgMjgsIDE2LCAKKyAgICAzOCwgMjE3LCA5LCAxMDIsIDI4LCAxNiwgMzgsIDI0NSwgMTQxLCAxMDIsIDI4LCAxNiwgMzgsIDIzNCwgMTY3LCAxMDIsIAorICAgIDI4LCAxNiwgMzgsIDIzNCwgMTY5LCAxMDIsIDI4LCAxNiwgMzgsIDIzNSwgMTIyLCAxMDIsIDI4LCAxNiwgMzgsIDIzNCwgCisgICAgMTY4LCAyLCAyMzUsIDEyMiwgMTAyLCAyOCwgMTYsIDM4LCAyMzQsIDE3MCwgMiwgMjM1LCAxMjIsIDEwMiwgMjgsIDE2LCAKKyAgICAzOCwgMjUyLCAzNywgMTAyLCAyOCwgMTYsIDM4LCAyNDIsIDE2NSwgMTAyLCAyOCwgMTYsIDIyMiwgMjQ5LCAyMDQsIDI0NiwgCisgICAgNzQsIDEwMiwgMjgsIDE2LCAyMjIsIDI0OSwgMjA0LCAyNDgsIDIxMiwgMTAyLCAyOCwgMTYsIDIyMiwgMjQ5LCAyNTAsIDAsIAorICAgIDIxNSwgMTExLCAxMDIsIDI4LCAxNiwgMjIyLCAyNDksIDI1MCwgMCwgMjE3LCA3MywgMTAyLCAyOCwgMTYsIDIzMywgNDQsIAorICAgIDIwNCwgMjI2LCA0MywgMTAyLCAyOCwgMTYsIDIzMywgNDQsIDIwNCwgMjI0LCAxMzksIDEwMiwgMjgsIDE2LCAyMzMsIDQ0LCAKKyAgICAyNTAsIDAsIDIyNSwgMzgsIDEwMiwgMjgsIDE2LCAyMzMsIDQ0LCAyNTAsIDAsIDIyNSwgMjYsIDEwMiwgMjgsIDE2LCAyMzMsIAorICAgIDQ0LCAyMDQsIDIyNSwgNjEsIDIwNywgNSwgMjI2LCAyNiwgMjA3LCA1LCAyMjYsIDM5LCAyMDcsIDUsIDIyNiwgMzUsIDIwNywgCisgICAgMSwgNjEsIDIwNywgMSwgNzMsIDIwNywgMSwgNzAsIDIwNywgMSwgMjU0LCAyNDMsIDIwNywgMSwgNzYsIDIwNywgMSwgNzUsIAorICAgIDIwNywgMSwgMjQ1LCA1NSwgMjA3LCAxLCAxNzYsIDIwNywgMSwgMjI0LCA4OCwgMjA3LCAxLCAyNDMsIDEzNSwgMjA3LCAxLCAKKyAgICAyMjksIDc3LCAyMDcsIDEsIDI1MSwgMzMsIDIwNywgMSwgMjM1LCAxNDEsIDIwNywgMSwgMjEwLCAxMTYsIDIwNywgMSwgCisgICAgMjI3LCAxNjUsIDIwNywgMSwgMjE3LCAxMDUsIDIwNywgMSwgMjQ4LCAyMjEsIDIwNywgMSwgMTk3LCAyMDcsIDEsIDE5MCwgCisgICAgMjA3LCAxLCAyNDQsIDE5NiwgMjA3LCAxLCAyMTQsIDI3LCAyMDcsIDEsIDI1MiwgMTkxLCAyMDcsIDEsIDE4NCwgMjA3LCAxLCAKKyAgICAxOTEsIDIwNywgMSwgMjA1LCAyMDcsIDEsIDIzMywgMTM1LCAyMDcsIDEsIDIxMiwgNjUsIDIwNywgMSwgMjA2LCAyMDcsIDEsIAorICAgIDIxMSwgMTY1LCAyMDcsIDEsIDE2MiwgMjA3LCAxMTYsIDUsIDIyNiwgNTIsIDIwNywgMTE2LCA1LCAyMjYsIDI4LCAyMDcsIAorICAgIDExNiwgNSwgMjI2LCAyNSwgMjA3LCAyNSwgNSwgMjI2LCA0MiwgMjA3LCAyNSwgNSwgMjI2LCAyNCwgMjA3LCAyNSwgNSwgCisgICAgMjI2LCA0NiwgMjA3LCAyNSwgNSwgMjI2LCAzNCwgMjA3LCAyNSwgNSwgMjI2LCA1MywgMjA3LCAyNSwgNSwgMjI2LCA0NCwgCisgICAgMjA3LCA1LCAyMjYsIDU2LCAyMDcsIDUsIDIxMywgMTUyLCAyMDcsIDExNiwgNSwgMjI1LCAyNDgsIDE4NCwgMjA3LCAxMTYsIAorICAgIDUsIDIyNSwgMjQ4LCAyMTIsIDY1LCAyMDcsIDEsIDIzNCwgMTMyLCAyMDcsIDEsIDIxNywgMjMxLCAyMDcsIDIxLCAyMTAsIAorICAgIDg2LCAyMDcsIDIxLCAxMTAsIDIwNywgMjEsIDEwNSwgMjA3LCAyMSwgMTU4LCAyMDcsIDIxLCAxNjEsIDIwNywgMjEsIDE4OSwgCisgICAgMjA3LCAyMSwgMTk0LCAyMDcsIDIxLCAxOTgsIDIwNywgMjEsIDE5NSwgMjA3LCAyMSwgMjAwLCAyMDcsIDI1MywgMTc1LCAKKyAgICAyMDcsIDEsIDIyMywgNTIsIDIwNywgMSwgMjMzLCA3LCAyMDcsIDEsIDI1MiwgMTgsIDIwNywgMSwgNDAsIDIzNSwgMjMsIAorICAgIDIwNywgMSwgNDAsIDE5MywgMjUyLCAxMjAsIDEsIDYxLCAyNTIsIDEyMCwgMSwgMjE5LCAxNjQsIDYxLCAyNTIsIDEyMCwgMSwgCisgICAgMTYyLCAyNTIsIDEyMCwgMSwgMjE5LCAxNjQsIDE2MiwgMjUyLCAxMjAsIDEsIDIzMSwgMTgxLCAxNjIsIDI1MiwgMTIwLCAxLCAKKyAgICAyNTIsIDE5MSwgMjUyLCAxMjAsIDEsIDIzNCwgMjEyLCAyNTIsIDE5MSwgMjUyLCAxMjAsIDEsIDE5MCwgMjUyLCAxMjAsIDEsIAorICAgIDIxOSwgMTY0LCAxOTAsIDI1MiwgMTIwLCAxLCAxOTcsIDI1MiwgMTIwLCAxLCAyMzEsIDE4MSwgMTk3LCAyNTIsIDEyMCwgMSwgCisgICAgMjEyLCA2NSwgMjUyLCAxMjAsIDEsIDIxOSwgMTY0LCAyMTIsIDY1LCAyNTIsIDEyMCwgMSwgMjI2LCA2NywgMjEyLCA2NSwgCisgICAgMjUyLCAxMjAsIDEsIDI0MywgMTM1LCAyNTIsIDEyMCwgMSwgMjE5LCAxNjQsIDI0MywgMTM1LCAyNTIsIDEyMCwgMSwgMjM1LCAKKyAgICAxNDEsIDI1MiwgMTIwLCAxLCAyNDgsIDIyMSwgMjUyLCAxMjAsIDEsIDIwNSwgMjUyLCAxMjAsIDEsIDIxOSwgMTY0LCAyMDUsIAorICAgIDI1MiwgMTIwLCAxLCAxODQsIDI1MiwgMTIwLCAxLCAyMTksIDE2NCwgMTg0LCAyNTIsIDEyMCwgMSwgMjE5LCAyNiwgMjE3LCAKKyAgICAxMDUsIDI1MiwgMTIwLCAxLCAyMjgsIDU1LCAyMTcsIDEwNSwgMjUyLCAxMjAsIDEsIDIwNiwgMjUyLCAxMjAsIDEsIDIxOSwgCisgICAgMTY0LCAyMDYsIDI1MiwgMTIwLCAxLCAyMzEsIDE4MSwgMjA2LCAyNTIsIDEyMCwgMSwgMTkxLCAyNTIsIDEyMCwgMSwgMjE5LCAKKyAgICAxNjQsIDE5MSwgMjUyLCAxMjAsIDEsIDIyOSwgNzcsIDI1MiwgMTIwLCAxLCAyMzMsIDEzNSwgMjUyLCAxMjAsIDEsIDIxOSwgCisgICAgMTY0LCAyMzMsIDEzNSwgMjUyLCAxMjAsIDEsIDIyNywgMTY1LCAyNTIsIDEyMCwgMSwgMjUxLCAzMywgMjUyLCAxMjAsIDEsIAorICAgIDIyOSwgMTQ4LCAyNTIsIDEyMCwgMSwgMjMxLCAxMjQsIDI1MiwgMTIwLCAxLCA3MywgMjUyLCAxMjAsIDEsIDcwLCAyNTIsIAorICAgIDEyMCwgNSwgMjE2LCAzMywgMjUyLCAxMjAsIDI1LCA1LCA3NSwgMjUyLCAxMjAsIDI1LCA1LCAyMjYsIDY3LCA3NSwgMjUyLCAKKyAgICAxMjAsIDI1LCA1LCAyNDUsIDIwOSwgMjUyLCAxMjAsIDI1LCA1LCA3MywgMjUyLCAxMjAsIDI1LCA1LCAyMzQsIDIxMiwgNzMsIAorICAgIDI1MiwgMTIwLCAyNSwgNSwgNzYsIDI1MiwgMTIwLCAyNSwgNSwgMjM0LCAyMTIsIDc2LCAyNTIsIDEyMCwgMjUsIDUsIDcwLCAKKyAgICAyNTIsIDEyMCwgMjUsIDUsIDEwNCwgMzEsIDIxOSwgMTY0LCAyMDYsIDI1MiwgMTIwLCAxMTYsIDUsIDIyOSwgNzksIDI1MiwgCisgICAgMTIwLCAxMTYsIDUsIDI0MiwgNjAsIDI1MiwgMTIwLCAyMjYsIDM3LCAyNTIsIDEyMCwgMjI2LCAzMywgMjUyLCAxMjAsIDE2LCAKKyAgICAyNTEsIDI0MSwgMjI5LCAyMjksIDIzMSwgMzcsIDI1MiwgMTIwLCAxNiwgMjUxLCAyNDEsIDIyNSwgNjQsIDI1MiwgMTIwLCAKKyAgICAxNiwgMjUxLCAyNDEsIDIzNSwgNDgsIDI1MiwgMTIwLCAxNiwgMjUxLCAyNDEsIDIyNiwgMzcsIDE5NiwgMSwgMTc2LCAxOTYsIAorICAgIDEsIDIzNCwgMzksIDE5NiwgMSwgMjM0LCAxMzIsIDE5NiwgMSwgMjQzLCAxMzUsIDE5NiwgMSwgMjQyLCAxODYsIDE5NiwgMSwgCisgICAgMjI5LCA3NywgMTk2LCAxLCAyNTEsIDMzLCAxOTYsIDEsIDI1MCwgMTU3LCAxOTYsIDEsIDIzNSwgMTQxLCAxOTYsIDEsIAorICAgIDIyNywgMTY1LCAxOTYsIDEsIDIxNywgMTA1LCAxOTYsIDEsIDIxNiwgMjA4LCAxOTYsIDEsIDI0OCwgMjIxLCAxOTYsIDEsIAorICAgIDE5NywgMTk2LCAxLCAxOTAsIDE5NiwgMSwgMjI1LCA0MiwgMTk2LCAxLCAyMjUsIDE0NywgMTk2LCAxLCAyNDQsIDE5NiwgCisgICAgMTk2LCAxLCAyNDQsIDc1LCAxOTYsIDEsIDI1MiwgMTkxLCAxOTYsIDEsIDI1MSwgMjIyLCAxOTYsIDEsIDE4NCwgMTk2LCAxLCAKKyAgICAyMzAsIDE2OCwgMTk2LCAxLCAyMTUsIDE4MywgMTk2LCAxLCAyMTUsIDE3NSwgMTk2LCAxLCAyNDYsIDM4LCAxOTYsIDEsIAorICAgIDE5MSwgMTk2LCAxLCAyMDUsIDE5NiwgMSwgMjMzLCAxMzUsIDE5NiwgMSwgMTYyLCAxOTYsIDEsIDI0MSwgMTUzLCAxOTYsIAorICAgIDEsIDIxNCwgMjcsIDE5NiwgMSwgMjA2LCAxOTYsIDEsIDIyMCwgMTAyLCAxOTYsIDEsIDIxMiwgNjUsIDE5NiwgMSwgNjEsIAorICAgIDE5NiwgMjE4LCA3MywgMSwgMTkxLCAxOTYsIDIxOCwgNzMsIDEsIDIwNSwgMTk2LCAyNSwgNSwgMjU1LCA3MywgMTk2LCAyNSwgCisgICAgNSwgNzMsIDE5NiwgMjUsIDUsIDc2LCAxOTYsIDI1LCA1LCAyMjYsIDE4MywgMTk2LCAyNSwgNSwgNzAsIDE5NiwgMjUsIDUsIAorICAgIDIxNCwgMTE4LCAxOTYsIDI1LCA1LCA3NSwgMTk2LCAxMTYsIDUsIDIzNSwgMjMsIDE5NiwgMTE2LCA1LCAxOTMsIDE5NiwgCisgICAgMTE2LCA1LCAxNTYsIDE5NiwgMTE2LCA1LCAyMzAsIDI1LCAxOTYsIDExNiwgNSwgMjI2LCAxMDUsIDE5NiwgMTE2LCA1LCAKKyAgICAxNTMsIDE5NiwgMTE2LCA1LCAyMTcsIDE1MiwgMTk2LCAxMTYsIDUsIDIyNywgMTQyLCAxOTYsIDExNiwgNSwgMjM0LCAyMzAsIAorICAgIDE5NiwgNSwgMjIzLCAxNTAsIDE5NiwgNSwgMjI3LCAyMDUsIDE5NiwgMjI0LCAxNDEsIDIxNywgMTAzLCAxOTYsIDIyNCwgCisgICAgMTQxLCAyMjcsIDE1MiwgMjE2LCAxMjAsIDIxNywgMTAzLCAxOTYsIDIyNCwgMTQxLCAyNTAsIDE2NCwgMTk2LCAyMjQsIAorICAgIDE0MSwgMjE1LCAxNzAsIDI1MCwgMTY0LCAxOTYsIDIyNCwgMTQxLCAyMTUsIDE2OSwgMTk2LCAyMSwgMjEwLCA4NiwgMTk2LCAKKyAgICAyMSwgMTEwLCAxOTYsIDIxLCAxMDUsIDE5NiwgMjEsIDE1OCwgMTk2LCAyMSwgMTYxLCAxOTYsIDIxLCAxODksIDE5NiwgMjEsIAorICAgIDE5NCwgMTk2LCAyMSwgMTk4LCAxOTYsIDIxLCAxOTUsIDE5NiwgMjEsIDIwMCwgMTk2LCAxLCAyMTUsIDE1NiwgMTk2LCAxLCAKKyAgICAyMTUsIDE0NCwgMTk2LCAxLCAyNDgsIDEzNSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMSwgMjEwLCA4NiwgMjI2LCAyMTAsIAorICAgIDI1MCwgMTAzLCAyMSwgMTEwLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIxLCAxMDUsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjEsIAorICAgIDE1OCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMSwgMTYxLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIxLCAxODksIDIyNiwgMjEwLCAKKyAgICAyNTAsIDEwMywgMjEsIDE5NCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMSwgMTk4LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIxLCAKKyAgICAxOTUsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjEsIDIwMCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMzMsIDEzNSwgMjI2LCAKKyAgICAyMTAsIDI1MCwgMTAzLCAxLCAyNTMsIDIwNiwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNTQsIDIxNiwgMjI2LCAyMTAsIAorICAgIDI1MCwgMTAzLCAxLCAyNTQsIDExNSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNTQsIDE3OCwgMjI2LCAyMTAsIDI1MCwgCisgICAgMTAzLCAxLCAyMzMsIDEzNCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNTUsIDM1LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIAorICAgIDI1NSwgMzYsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjU1LCAzNCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNTUsIDI5LCAKKyAgICAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDIzMiwgMjQxLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDIzNSwgMTcxLCAyMjYsIAorICAgIDIxMCwgMjUwLCAxMDMsIDEsIDIzNiwgMzQsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjM1LCAxOTAsIDIyNiwgMjEwLCAKKyAgICAyNTAsIDEwMywgMSwgMjM1LCAxNzksIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjMyLCA5OCwgMjI2LCAyMTAsIDI1MCwgCisgICAgMTAzLCAxLCAyMTQsIDIyMSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMTQsIDIxOSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAKKyAgICAyMTQsIDE2OCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMTQsIDExMSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMzMsIAorICAgIDU4LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI0NSwgMTA4LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI0NSwgMjEyLCAKKyAgICAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI0NSwgMTUwLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI0NSwgODYsIDIyNiwgCisgICAgMjEwLCAyNTAsIDEwMywgMSwgMjMyLCAxNTYsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjI2LCAxMzcsIDIyNiwgMjEwLCAKKyAgICAyNTAsIDEwMywgMSwgMjI2LCAyNTIsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjI2LCAxMjUsIDIyNiwgMjEwLCAyNTAsIAorICAgIDEwMywgMSwgMjI2LCAyMjIsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjMwLCAxMDMsIDIxNSwgMTIxLCAyMjYsIDIxMCwgMjUwLCAKKyAgICAxMDMsIDI0MywgMTMwLCAyMTUsIDEyMiwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMzAsIDEwMSwgMjE1LCAxMjIsIDIyNiwgCisgICAgMjEwLCAyNTAsIDEwMywgMjIzLCA5MiwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMjUsIDE0NSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAKKyAgICAyNTQsIDIwOCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMjQsIDE0MSwgMjMwLCA5OCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMjQsIAorICAgIDE0MSwgNTIsIDIzMCwgOTgsIDIwNywgMjI0LCAxNDEsIDI1MSwgMjQxLCAyMTgsIDgsIDIwNywgMjI0LCAxNDEsIDI1MSwgCisgICAgMjQxLCAyMjYsIDM4LCAyMDcsIDIyNCwgMTQxLCAyNTEsIDI0MSwgMjI0LCAxMjksIDIwNywgMjI0LCAxNDEsIDI1MSwgMjQxLCAKKyAgICAyNTEsIDE5LCAyMDcsIDIyNCwgMTQxLCAyNTEsIDI0MSwgMjMzLCA4LCAyMjEsIDIyNSwgMjA3LCAyMjQsIDE0MSwgMjUxLCAKKyAgICAyNDEsIDIzNSwgMTMsIDIyMSwgMjI1LCAyMDcsIDIyNCwgMTQxLCAyNTEsIDI0MSwgMjQ4LCAyMjIsIDIyMSwgMjI1LCAyMDcsIAorICAgIDIyNCwgMTQxLCAyNTEsIDI0MSwgMjUyLCAxOTIsIDIyMSwgMjI1LCAyMTMsIDI1MiwgMTM4LCAyMzQsIDIxMCwgMjEzLCAKKyAgICAyNTIsIDEzOCwgMjIwLCA3NywgMjEzLCAyNTIsIDEzOCwgMjI0LCAxOTgsIDIxMywgMjUyLCA1LCAyMjgsIDIwOSwgMjEzLCAKKyAgICAyNTIsIDUsIDIxMSwgODAsIDIzMCwgMjIyLCAyMTgsIDAsIDIxMywgMjUyLCAxMzgsIDIxMSwgODAsIDI1NCwgMjEzLCAyMzUsIAorICAgIDI0MywgMjE4LCAwLCAyMTMsIDI1MiwgMTM4LCAyMTEsIDgwLCAyMzUsIDI0MywgMjE4LCAwLCAyMTMsIDI1MiwgMTM4LCAKKyAgICAyMTEsIDgwLCAyMzQsIDE5OCwgMjM1LCAyNDMsIDIxOCwgMCwgMjEzLCAyNTIsIDEzOCwgMjUxLCAyLCA1MSwgMjEzLCAyNTIsIAorICAgIDEzOCwgMjExLCA4MCwgMjM0LCAxOTgsIDIzNSwgMjQzLCAyMTgsIDEsIDIyMSwgMTk3LCAyMTMsIDI1MiwgMTM4LCA1MiwgCisgICAgMjE4LCAwLCAyMTMsIDI1MiwgMTM4LCAyMTUsIDIxMSwgMjE4LCAwLCAyMTMsIDI1MiwgMTM4LCAyMzQsIDE5OCwgMjU0LCAKKyAgICA3NywgMjEzLCAyNTIsIDEzOCwgNTksIDUxLCAyMTMsIDI1MiwgMTM4LCAxMTMsIDE3MCwgNTEsIDIxMywgMjUyLCAxMzgsIAorICAgIDEzNCwgMTcwLCA1MSwgMjEzLCAyNTIsIDEzOCwgMjIyLCAyNDAsIDIzNCwgMjA5LCAyMzUsIDI0MywgMjE4LCAwLCAyMTMsIAorICAgIDI1MiwgMTM4LCAyNTMsIDIwNCwgMjM1LCAyNDMsIDIxOCwgMCwgMjEzLCAyNTIsIDUsIDIxMywgMTQ4LCAyMTgsIDAsIDIxMywgCisgICAgMjUyLCA1LCAyMTMsIDE0OCwgMjE0LCAyMTYsIDIxMywgMjUyLCA1LCAyMjMsIDQ5LCAyMTMsIDE0OCwgMjE0LCAyMTYsIAorICAgIDIxMywgMjUyLCA1LCAyMTMsIDE0OCwgMjU0LCA3NywgMjEzLCAyNTIsIDUsIDIyMywgNDksIDIxMywgMTQ4LCAyNTQsIDc3LCAKKyAgICAyMTMsIDI1MiwgNSwgMjEzLCAxNDgsIDIxNCwgMjE3LCAyLCAyMTcsIDc3LCAyMTMsIDI1MiwgNSwgMjEzLCAxNDgsIDI1NCwgCisgICAgNzgsIDIsIDIxNywgNzcsIDIxMywgMjUyLCA1LCAyNTQsIDc2LCAyNTQsIDkxLCAyMTMsIDI1MiwgNSwgMjU0LCA3NiwgMjUyLCAKKyAgICAxNjYsIDIxMywgMjUyLCA1LCAyNTQsIDc2LCAyMTQsIDIwLCAyMTMsIDI1MiwgNSwgMjU0LCA3NiwgMjE0LCAyMSwgMiwgCisgICAgMjE3LCA3NywgMjEzLCAyNTIsIDUsIDIxNiwgNjgsIDIxMywgMjUyLCA1LCAyNDEsIDE5MSwgMTk5LCAyNTQsIDc1LCAyMTMsIAorICAgIDI1MiwgNSwgMTk5LCAyNTQsIDc1LCAyMTMsIDI1MiwgNSwgMjIyLCAxNDIsIDE5OSwgMjU0LCA3NSwgMjEzLCAyNTIsIDUsIAorICAgIDI1NCwgNzYsIDIxNCwgMjIzLCAyMzAsIDkwLCAyMTMsIDI1MiwgNSwgMjU0LCAyMCwgMjEzLCAyNTIsIDUsIDIyMiwgMTg3LCAKKyAgICAyNTQsIDIwLCAyMTMsIDI1MiwgMTM4LCAyNTEsIDIsIDQ4LCAyMTMsIDI1MiwgNSwgMjM1LCAxMDIsIDIxMywgMjUyLCA1LCAKKyAgICAyMTQsIDE2MSwgNywgMSwgNCwgNiwgNjEsIDcsIDEsIDQsIDYsIDI1NCwgMjQzLCA3LCA0LCAxLCAyMTUsIDk0LCAyNTQsIAorICAgIDI0MywgNywgMSwgNCwgNiwgMjUyLCAxMzQsIDI1MywgMTU4LCA3LCAxLCA0LCA2LCAyNTEsIDY2LCA3LCAxLCA0LCA2LCAKKyAgICAyNDksIDYwLCA3LCAxLCA0LCA2LCAyNDUsIDU5LCA3LCAxLCA0LCA2LCA3NSwgNywgNCwgMSwgMjE1LCA5NCwgMjA0LCA3NSwgCisgICAgNywgNCwgMSwgMjE1LCA5NCwgNzMsIDcsIDEsIDQsIDYsIDIzNSwgMTQ0LCA3LCAxLCA0LCA2LCAyMzUsIDIzLCA3LCAxLCA0LCAKKyAgICA2LCAyMzMsIDE0OSwgMiwgOTEsIDcsIDEsIDQsIDYsIDE5MywgNywgMSwgNCwgNiwgMjIzLCA0OSwgMjMwLCAyNSwgNywgMSwgCisgICAgNCwgNiwgNzYsIDcsIDEsIDQsIDYsIDIwNCwgNzYsIDcsIDQsIDEsIDIxOSwgMTg3LCA3NiwgNywgNCwgMSwgMjE5LCAxODcsIAorICAgIDIwNCwgNzYsIDcsIDQsIDEsIDIxOSwgMTg3LCAxNDQsIDIsIDkxLCA3LCA0LCAxLCAyMTUsIDk0LCAyMjYsIDIzNCwgNywgMSwgCisgICAgNCwgNiwgMjI2LCAxMzQsIDcsIDQsIDEsIDIxNiwgMTQsIDE2MywgNzYsIDcsIDQsIDEsIDI1MSwgMTc1LCAxNjMsIDc2LCA3LCAKKyAgICAxLCA0LCA2LCAyMjYsIDEwNSwgNywgMSwgNCwgNiwgMjIzLCA0OSwgMTUzLCA3LCAxLCA0LCA2LCAyMTUsIDk0LCAxNTMsIDcsIAorICAgIDEsIDQsIDYsIDIxNywgMTUyLCA3LCAxLCA0LCA2LCA3MCwgNywgNCwgMSwgMjE5LCAxODcsIDcwLCA3LCA0LCAxLCAyMTksIAorICAgIDE4NywgMjQ4LCAwLCA3MCwgNywgNCwgMSwgMjE5LCAxODcsIDIxNSwgOTQsIDE5MywgNywgMSwgNCwgNiwgMjE0LCAxMDUsIAorICAgIDcsIDEsIDQsIDYsIDIxMiwgOTgsIDcsIDEsIDQsIDYsIDIxMCwgMTU5LCA3LCAxLCA0LCA2LCAyNDUsIDgsIDcsIDEsIDIxMywgCisgICAgMTM1LCAyMzMsIDgyLCAyMTgsIDI1MCwgNywgMSwgMjU0LCAxOTYsIDI2LCAxLCA0LCA2LCAyNDMsIDEwNywgMjYsIDEsIDQsIAorICAgIDYsIDIzMywgOTgsIDI2LCAxLCA0LCA2LCAyMjUsIDEwOCwgMjYsIDEsIDQsIDYsIDIyMywgMzcsIDI2LCAxLCA0LCA2LCAKKyAgICAyMjQsIDE2MSwgMzMsIDEsIDQsIDYsIDI0NSwgMTc0LCA1OCwgMSwgNiwgNjEsIDU4LCAxLCA2LCAyNTQsIDI0MywgNTgsIDEsIAorICAgIDYsIDI1MywgMTU4LCA1OCwgMSwgNiwgMjUyLCAxMzQsIDI1MywgMTU4LCA1OCwgMSwgNiwgMjQ5LCA2MCwgNTgsIDEsIDYsIAorICAgIDc1LCA1OCwgMSwgNiwgMjIzLCA0OSwgNzUsIDU4LCAxLCA2LCAyNDMsIDIwMiwgNTgsIDEsIDYsIDI0MiwgNjAsIDU4LCAxLCAKKyAgICA2LCA3MywgNTgsIDEsIDYsIDIzNSwgMTQ0LCA1OCwgMSwgNiwgMjM1LCAyMywgNTgsIDEsIDYsIDE1NiwgNTgsIDEsIDYsIAorICAgIDE5MywgNTgsIDEsIDYsIDIzMCwgMjUsIDU4LCAxLCA2LCAyMjMsIDQ5LCAyMzAsIDI1LCA1OCwgMSwgNiwgNzYsIDU4LCAxLCAKKyAgICA2LCAyMjYsIDEzNCwgNTgsIDEsIDYsIDIyNiwgMTA1LCA1OCwgMSwgNiwgMTUzLCA1OCwgMSwgNiwgMjE3LCAxNTIsIDU4LCAKKyAgICAxLCA2LCA3MCwgNTgsIDEsIDYsIDIxMiwgOTgsIDU4LCAxLCA0LCA2MSwgNTgsIDEsIDQsIDIxNSwgOTQsIDYxLCA1OCwgMSwgCisgICAgNCwgMjU0LCAxNDMsIDU4LCAxLCA0LCAyMTUsIDk0LCAyNTQsIDI0MywgNTgsIDEsIDQsIDI1MywgMTU4LCA1OCwgMSwgNCwgCisgICAgMjQ5LCA2MCwgNTgsIDEsIDQsIDc1LCA1OCwgMSwgNCwgMjIxLCAxOTUsIDU4LCAxLCA0LCAyMDQsIDc1LCA1OCwgMSwgNCwgCisgICAgMjE1LCA5NCwgMjA0LCA3NSwgNTgsIDEsIDQsIDI0MywgMjAyLCA1OCwgMSwgNCwgMjE1LCA5NCwgNzMsIDU4LCAxLCA0LCAKKyAgICAyMzUsIDIzLCA1OCwgMSwgNCwgMTkzLCA1OCwgMSwgNCwgMjQ1LCAxMzgsIDU4LCAxLCA0LCA3NiwgNTgsIDEsIDQsIDIwNCwgCisgICAgNzYsIDU4LCAxLCA0LCAyMTYsIDE0LCAxNjMsIDc2LCA1OCwgMSwgNCwgMjUxLCAxNzUsIDE2MywgNzYsIDU4LCAxLCA0LCAKKyAgICAyMjYsIDEwNSwgNTgsIDEsIDQsIDIxNywgMTUyLCA1OCwgMSwgNCwgNzAsIDU4LCAxLCA0LCAyMTksIDE4NywgNzAsIDU4LCAKKyAgICAxLCA0LCAyMTUsIDk0LCAxOTMsIDU4LCAxLCA0LCAyMTQsIDEwNSwgNTgsIDEsIDQsIDI1NCwgMTk2LCA1OCwgMSwgNCwgCisgICAgMjUyLCAyNiwgNTgsIDEsIDQsIDI2LCAyNDMsIDEwNywgNTgsIDEsIDQsIDI0OCwgNTQsIDU4LCAxLCA0LCAyNiwgMjI1LCAKKyAgICAxMzMsIDU4LCAxLCA0LCAyNTAsIDExMCwgNywgMjE4LCA2NSwgNCwgMSwgNzMsIDcsIDIxOCwgNjUsIDQsIDEsIDE1MywgNywgCisgICAgMjE4LCA2NSwgNCwgMSwgNzAsIDcsIDIxOCwgNjUsIDQsIDEsIDIxNCwgMTA1LCAyNiwgMjE4LCA2NSwgNCwgMSwgMjUyLCAKKyAgICAyNiwgMjYsIDIxOCwgNjUsIDQsIDEsIDI0MywgMTA3LCAyNiwgMjE4LCA2NSwgNCwgMSwgMjIzLCAzNywgMjYsIDIxOCwgNjUsIAorICAgIDQsIDEsIDIyNSwgMTMzLCAyNiwgMjE4LCA2NSwgNCwgMSwgMjUwLCAxMTAsIDcsIDQsIDEsIDIxNCwgMjE0LCA3LCA0LCAxLCAKKyAgICA1NywgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjQ5LCA2MSwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjQ1LCAKKyAgICA3LCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyMzIsIDUwLCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyMzAsIAorICAgIDI2LCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyMjYsIDEwNiwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjIzLCAKKyAgICAyMjQsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAyNDQsIDg4LCAyMiwgMjMwLCAyMjQsIDE4MiwgCisgICAgNywgNCwgMSwgMjIyLCA5MiwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDIzMCwgMjI0LCAxODIsIAorICAgIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyMTUsIDk0LCAyNDMsIDIwMiwgNTgsIDEsIAorICAgIDMzLCAyNDUsIDE1MCwgNywgNCwgMSwgMjM1LCAyMTMsIDI0MywgMjAyLCA3LCA0LCAxLCAyMTYsIDIxMSwgMiwgMjE4LCAKKyAgICAxMDcsIDcsIDQsIDYsIDEsIDI0MCwgMTU0LCAyLCA5MSwgNywgNCwgMSwgMjM1LCAxODYsIDIsIDkxLCA3LCA0LCAxLCAyMjYsIAorICAgIDEwNiwgMiwgOTEsIDcsIDQsIDYsIDEsIDEwNCwgMiwgOTEsIDcsIDQsIDEsIDIxNCwgMTU4LCAyLCA5MSwgNywgNCwgMSwgCisgICAgNTcsIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjQ5LCA2MSwgMiwgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyNDUsIDcsIAorICAgIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjM1LCAyNCwgMiwgCisgICAgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMzIsIDUwLCAyLCAKKyAgICAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjI2LCAxMDYsIDIsIAorICAgIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjIyLCA5MiwgMiwgCisgICAgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyNDUsIDc2LCAyLCAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAKKyAgICAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIxMSwgMTc5LCAyLCAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAKKyAgICAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDExNSwgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjIzLCAKKyAgICA1NSwgMTAzLCA3LCA0LCAxLCAyNDksIDYxLCAyLCAyNDEsIDUyLCAyMiwgMjE3LCA3NywgNywgNCwgMSwgMTYwLCAyLCAyMjMsIAorICAgIDU1LCAxMDMsIDcsIDQsIDEsIDIwNCwgMTYwLCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDIyMywgNDksIDIwNCwgMTYwLCAKKyAgICAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDIyMSwgMTk2LCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDI0MCwgMTU0LCAKKyAgICAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDIwNCwgMTQ0LCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDI0NSwgNzYsIDIsIAorICAgIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMTA0LCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDI0NSwgOSwgMiwgMjIzLCA1NSwgCisgICAgMTAzLCA1OCwgMSwgNCwgMjE1LCA5NCwgMjU0LCAxNDMsIDU4LCAxLCA0LCAyNTEsIDY2LCA1OCwgMSwgNCwgMjUxLCA2NywgCisgICAgMiwgMjQ5LCAxMDAsIDU4LCAxLCA0LCAyNDUsIDU5LCA1OCwgMSwgNCwgMjIzLCA0OSwgMjA0LCA3NSwgNTgsIDEsIDQsIAorICAgIDI0NSwgNiwgNTgsIDEsIDQsIDI0NywgMTE5LCAyMzUsIDE0NSwgMiwgOTEsIDU4LCAxLCA0LCAxMTksIDI0MywgMjAyLCA1OCwgCisgICAgMSwgNCwgMjE1LCA5NCwgMjQyLCA2MCwgNTgsIDEsIDQsIDI0MCwgMTU0LCAyLCA5MSwgNTgsIDEsIDQsIDIzNSwgMTg1LCAKKyAgICA1OCwgMSwgNCwgNiwgNzMsIDU4LCAxLCA0LCA2LCAyNDAsIDE1NCwgMiwgOTEsIDU4LCAxLCA0LCAyMzUsIDE0NSwgMiwgCisgICAgMjQ5LCAxMjcsIDU4LCAxLCA0LCAyMzMsIDE0OSwgMiwgMjIzLCA1NSwgMTAzLCA1OCwgMSwgNCwgMjMzLCAxNDksIDIsIAorICAgIDIyNiwgNjYsIDEwMywgNTgsIDEsIDQsIDYsIDE1NiwgNTgsIDEsIDQsIDIzMiwgNTAsIDIsIDEwMywgNTgsIDEsIDQsIDIxNSwgCisgICAgOTQsIDIzMiwgNTAsIDIsIDE5OSwgMjMzLCAzNiwgNTgsIDEsIDQsIDIzMCwgMjYsIDIsIDQzLCAxMDMsIDU4LCAxLCA0LCAKKyAgICAyMzAsIDI2LCAyLCAyMjMsIDU1LCAxMDMsIDU4LCAxLCA0LCA2LCAyMzAsIDI1LCA1OCwgMSwgNCwgMjUyLCAxMzQsIDc2LCAKKyAgICA1OCwgMSwgNCwgMjI1LCAxMzMsIDU4LCAxLCA0LCAyMjIsIDkyLCAyLCAxMDMsIDU4LCAxLCA0LCAyNDUsIDc1LCA1OCwgMSwgCisgICAgNCwgMjE3LCAxNTMsIDIsIDIyNiwgNjYsIDEwMywgNTgsIDEsIDQsIDEwNCwgMTMwLCA1OCwgMSwgNCwgMjE0LCAxNTcsIDU4LCAKKyAgICAxLCA0LCA2LCA3MCwgNTgsIDEsIDQsIDIxNCwgMTA2LCAyLCAxMDMsIDU4LCAxLCA0LCAyMTUsIDk0LCAyMTQsIDEwNSwgNTgsIAorICAgIDEsIDQsIDIxMCwgMTU5LCA1OCwgMSwgNCwgMjEwLCAxNjAsIDIsIDIyMywgNTUsIDEwMywgNTgsIDEsIDQsIDIxMCwgMTYwLCAKKyAgICAyLCAyNDksIDEwMCwgNTgsIDEsIDQsIDI0NSwgOCwgNTgsIDEsIDQsIDIxNiwgMTc5LCAzOCwgMjQ2LCAxMTgsIDI0MiwgCisgICAgMTM3LCAyNTUsIDE0LCAzOCwgMjQ2LCAxMTgsIDI1NSwgMywgMjU1LCAxNCwgMzgsIDIxOSwgNjksIDUxLCAzOCwgMjE4LCA2LCAKKyAgICA3OCwgMzgsIDIzMSwgMjMxLCAzOCwgMjQyLCAxMzQsIDM4LCAyMzEsIDIyOSwgMzgsIDI1NSwgMSwgMzgsIDI0MiwgMTM1LCAKKyAgICAzOCwgMjU1LCAyLCAzOCwgNywgNCwgMSwgMjIzLCAyMjQsIDUxLCAzOCwgMjUxLCAxNDUsIDM4LCAyMzEsIDIzMCwgMzgsIAorICAgIDUyLCAyNTAsIDMxLCA0OCwgMzgsIDIyNiwgMjI1LCA0OCwgMzgsIDIxMCwgMzUsIDUxLCAzOCwgMjM1LCAxNzIsIDUxLCAzOCwgCisgICAgMjE0LCAxNTEsIDQ4LCAzOCwgMjE0LCAxMzQsIDQ4LCAzOCwgNywgNCwgMSwgMjQ0LCA2MywgMjA0LCAxMTUsIDQ4LCAzOCwgCisgICAgNywgNCwgMSwgMjU0LCAyNDMsIDM4LCA3LCA0LCAxLCAyNTQsIDczLCAzOCwgNywgNCwgMSwgMjUzLCAxNzYsIDM4LCA3LCA0LCAKKyAgICAxLCAyNTEsIDY3LCAyNTAsIDE4MywgMzgsIDcsIDQsIDEsIDIzNSwgMjEzLCAyNDksIDYwLCAzOCwgNywgNCwgMSwgMjQ1LCAKKyAgICA1OSwgMzgsIDcsIDQsIDEsIDI0MywgMjAyLCAzOCwgNywgMSwgNCwgNiwgMjQzLCAyMDIsIDM4LCA3LCA0LCAxLCAyMzUsIAorICAgIDIzLCAzOCwgNywgNCwgMSwgMTU2LCAzOCwgNywgMSwgNCwgNiwgMTU2LCAzOCwgNywgMSwgNCwgNiwgMTkzLCAzOCwgNywgNCwgCisgICAgMSwgMjMwLCAyNSwgMzgsIDcsIDEsIDQsIDYsIDIzMCwgMjUsIDM4LCA3LCAxLCA0LCA2LCAxNTMsIDM4LCA3LCA0LCAxLCAKKyAgICAyMjMsIDIyNCwgMjIyLCAxODYsIDM4LCA3LCA0LCAxLCAyMjIsIDkxLCAzOCwgNywgNCwgMSwgMTk5LCAyMjIsIDkxLCAzOCwgCisgICAgNywgNCwgMSwgMjEwLCAxNTksIDM4LCA1MiwgMjM1LCAxOTMsIDI1MSwgMTQ3LCA1MSwgMzgsIDI1NCwgMTQ4LCAxMjgsIAorICAgIDIxNiwgNDIsIDUxLCAzOCwgNDMsIDI1MywgMjUwLCA0OCwgMzgsIDQ0LCAyNTMsIDI1MCwgMjIsIDEyNCwgMjUzLCAyNTAsIAorICAgIDUxLCA3LCA2LCAxLCAxMTUsIDIsIDIyMiwgMjM0LCA1MSwgNywgNCwgMSwgMTE1LCAyLCAyMjIsIDIzNCwgNTEsIDcsIDYsIAorICAgIDEsIDU3LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDU3LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDU3LCAyLCA1OSwgNTEsIDcsIDQsIAorICAgIDEsIDU3LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDU3LCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDU3LCAyLCAyMzIsIDIxNCwgCisgICAgNTEsIDcsIDYsIDEsIDI1MSwgNjcsIDIsIDI1MCwgMTg0LCAyMiwgMTQyLCA3LCA0LCAxLCAyNTEsIDY3LCAyLCAyNTAsIAorICAgIDE4NCwgMjIsIDE0MiwgNywgNiwgMSwgMjQ5LCA2MSwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyNDksIDYxLCAyLCA1OSwgNDgsIAorICAgIDcsIDYsIDEsIDI0OSwgNjEsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjQ5LCA2MSwgMiwgNTksIDUxLCA3LCA2LCAxLCAyNDksIAorICAgIDYxLCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDIzMiwgMjE0LCA1MSwgNywgNiwgMSwgMjQ5LCA2MSwgCisgICAgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDI1MCwgMTgzLCA3LCA2LCAxLCAyNDksIDYxLCAyLCAyNTAsIDMxLCAKKyAgICA1MSwgNywgNCwgMSwgMjQ5LCA2MSwgMiwgMjUwLCAzMSwgNTEsIDcsIDYsIDEsIDE2MCwgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIAorICAgIDEzNiwgNywgNCwgMSwgMTYwLCAyLCAyMzEsIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxNjAsIDIsIDIzMSwgMjMzLCAKKyAgICAyMiwgMTQyLCA3LCA0LCAxLCAxNjAsIDIsIDIzMSwgMjMzLCAyMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzEsIAorICAgIDUxLCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDUxLCA3LCA2LCAxLCAxNjAsIDIsIDIxNiwgODksIDUxLCA3LCA0LCAxLCAKKyAgICAxNjAsIDIsIDIxNiwgODksIDUxLCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMTg0LCAyMiwgMjUxLCAxNDYsIDcsIDQsIDEsIAorICAgIDE2MCwgMiwgMjUwLCAxODQsIDIyLCAyNTEsIDE0NiwgNywgNiwgMSwgMjQ1LCA3LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0NSwgCisgICAgNywgMiwgNTksIDQ4LCA3LCA2LCAxLCAyNDMsIDIwMywgMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAyMzEsIAorICAgIDIzMiwgNywgNiwgMSwgMjQyLCA2MSwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyNDIsIDYxLCAyLCA1OSwgNDgsIDcsIDYsIDEsIAorICAgIDI0MiwgNjEsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjQyLCA2MSwgMiwgNTksIDUxLCA3LCA2LCAxLCAyNDIsIDYxLCAyLCAKKyAgICAyNDgsIDEsIDcsIDQsIDEsIDI0MiwgNjEsIDIsIDI0OCwgMSwgNywgNiwgMSwgMjQyLCA2MSwgMiwgMjUwLCAxODMsIDcsIDQsIAorICAgIDEsIDI0MiwgNjEsIDIsIDI1MCwgMTgzLCA3LCA2LCAxLCAyNDIsIDYxLCAyLCAyNTEsIDE0NywgNTEsIDcsIDQsIDEsIDI0MiwgCisgICAgNjEsIDIsIDI1MSwgMTQ3LCA1MSwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDIxNiwgODksIDUxLCA3LCA0LCAxLCAyNDAsIAorICAgIDE1NCwgMiwgMjE2LCA4OSwgNTEsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAyNDgsIDIsIDIyLCAxNDIsIDcsIDQsIDEsIDI0MCwgCisgICAgMTU0LCAyLCAyNDgsIDIsIDIyLCAxNDIsIDcsIDYsIDEsIDIzNSwgMjQsIDIsIDE0MiwgNywgNCwgMSwgMjM1LCAyNCwgMiwgCisgICAgMTQyLCA3LCA2LCAxLCAyMzUsIDI0LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDU5LCA1MSwgNywgNiwgMSwgCisgICAgMjM1LCAyNCwgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAyMzUsIDI0LCAyLCAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIAorICAgIDIzMywgMTQ5LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCAKKyAgICA1OSwgMjUyLCA0MywgMjIsIDIzMSwgMjMyLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgNTksIDI1MiwgNDMsIDIyLCAyMzEsIAorICAgIDIzMiwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDIzMiwgMjE0LCAKKyAgICA1MSwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDI1MCwgMzEsIDUxLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMjUwLCAzMSwgNTEsIAorICAgIDcsIDYsIDEsIDIzMiwgNTAsIDIsIDE0MiwgNywgNCwgMSwgMjMyLCA1MCwgMiwgMTQyLCA3LCA2LCAxLCAyMzIsIDUwLCAyLCAKKyAgICA1OSwgNDgsIDcsIDQsIDEsIDIzMiwgNTAsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjMyLCA1MCwgMiwgNTksIDUxLCA3LCA0LCAKKyAgICAxLCAyMzIsIDUwLCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjMwLCAyNiwgMiwgCisgICAgNTksIDQ4LCA3LCA2LCAxLCAyMzAsIDI2LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDU5LCA1MSwgNywgNiwgCisgICAgMSwgMjMwLCAyNiwgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIAorICAgIDIzMCwgMjYsIDIsIDI1MCwgMzEsIDUxLCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAyNTAsIDMxLCA1MSwgNywgNiwgMSwgMTQ0LCAKKyAgICAyLCAyMTYsIDg5LCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDIxNiwgODksIDIyLCAxNDIsIDcsIDYsIDEsIDE0NCwgMiwgCisgICAgMjE2LCA4OSwgMjIsIDI0OCwgMSwgNywgNCwgMSwgMTQ0LCAyLCAyMTYsIDg5LCAyMiwgMjQ4LCAxLCA3LCA2LCAxLCAxNDQsIAorICAgIDIsIDIzMSwgMjMzLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE0NCwgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNiwgCisgICAgMSwgMTQ0LCAyLCAyMzEsIDIzMywgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyMzEsIDIzMywgMjIsIDE0MiwgNywgNiwgCisgICAgMSwgMjI2LCAxMDYsIDIsIDE0MiwgNywgNCwgMSwgMjI2LCAxMDYsIDIsIDE0MiwgNywgNiwgMSwgMjI2LCAxMDYsIDIsIDU5LCAKKyAgICA0OCwgNywgNCwgMSwgMjI2LCAxMDYsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDU5LCA0OCwgNywgNCwgMSwgCisgICAgMjIzLCAyMjQsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjIzLCAyMjQsIDIsIAorICAgIDU5LCA1MSwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDU5LCAyNTIsIDQzLCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDIyMywgCisgICAgMjI0LCAyLCA1OSwgMjUyLCA0MywgMjIsIDIzMSwgMjMyLCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgMjMyLCAyMTQsIDUxLCA3LCAKKyAgICA0LCAxLCAyMjMsIDIyNCwgMiwgMjMyLCAyMTQsIDUxLCA3LCA2LCAxLCAyMjIsIDkyLCAyLCA1OSwgNDgsIDcsIDQsIDEsIAorICAgIDIyMiwgOTIsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIyLCA5MiwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMjIsIDkyLCAyLCA1OSwgCisgICAgNTEsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDI1NSwgMywgMjIsIDU5LCA0OCwgNywgNCwgMSwgMjIyLCA5MiwgMiwgMjU1LCAzLCAKKyAgICAyMiwgNTksIDQ4LCA3LCA2LCAxLCAyMjIsIDkyLCAyLCAyNTAsIDIzNSwgMjIsIDU5LCA0OCwgNywgNCwgMSwgMjIyLCA5MiwgCisgICAgMiwgMjUwLCAyMzUsIDIyLCA1OSwgNDgsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDU5LCAyNTIsIDQzLCAyMiwgNTksIDQ4LCA3LCAKKyAgICA0LCAxLCAyMjIsIDkyLCAyLCA1OSwgMjUyLCA0MywgMjIsIDU5LCA0OCwgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDU5LCA0OCwgCisgICAgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjE3LCAKKyAgICAxNTMsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIAorICAgIDIzMiwgMjE0LCA1MSwgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDI1MCwgMzEsIDUxLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgCisgICAgMjUwLCAzMSwgNTEsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAyLCA1MSwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDIsIDUxLCA3LCAKKyAgICA2LCAxLCAxMDQsIDIsIDIxNiwgODksIDUxLCA3LCA0LCAxLCAxMDQsIDIsIDIxNiwgODksIDUxLCA3LCA2LCAxLCAxMDQsIDIsIAorICAgIDI1MCwgMzEsIDUxLCA3LCA0LCAxLCAxMDQsIDIsIDI1MCwgMzEsIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDIxNiwgODksIDIyLCAKKyAgICAxNDIsIDcsIDQsIDEsIDEwNCwgMiwgMjE2LCA4OSwgMjIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzMywgMjIsIAorICAgIDI0OCwgMSwgNywgNCwgMSwgMTA0LCAyLCAyMzEsIDIzMywgMjIsIDI0OCwgMSwgNywgNiwgMSwgMjE0LCAxMDYsIDIsIDE4MiwgCisgICAgNywgNCwgMSwgMjE0LCAxMDYsIDIsIDE4MiwgNywgNiwgMSwgMjE0LCAxMDYsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjE0LCAKKyAgICAxMDYsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjEyLCA5OSwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIxMiwgOTksIDIsIDI0MiwgCisgICAgMTM2LCA3LCA2LCAxLCAyMTIsIDk5LCAyLCAxNDIsIDcsIDQsIDEsIDIxMiwgOTksIDIsIDE0MiwgNywgNiwgMSwgMjEyLCAKKyAgICA5OSwgMiwgMjQ4LCAxLCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAyNDgsIDEsIDcsIDYsIDEsIDIxMiwgOTksIDIsIDU5LCA0OCwgCisgICAgNywgNCwgMSwgMjEyLCA5OSwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMTIsIDk5LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIxMiwgCisgICAgOTksIDIsIDU5LCA1MSwgNywgNiwgMSwgMjExLCAxNzksIDIsIDU5LCA0OCwgNywgNCwgMSwgMjExLCAxNzksIDIsIDU5LCAKKyAgICA0OCwgNywgNiwgMSwgMjExLCAxNzksIDIsIDI0OCwgMSwgNywgNCwgMSwgMjExLCAxNzksIDIsIDI0OCwgMSwgNywgNiwgMSwgCisgICAgMjExLCAxMTgsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIAorICAgIDI1MCwgMzAsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyNTAsIDMwLCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgNTksIDUxLCA3LCAKKyAgICA0LCAxLCAyMTAsIDE2MCwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAKKyAgICAyMTAsIDE2MCwgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAyNDIsIDYxLCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIAorICAgIDIxNywgMTUzLCAyLCAyNDgsIDEsIDcsIDQsIDEsIDIxMiwgOTksIDIsIDIyMiwgMjM0LCA0OCwgNywgNCwgMSwgMjExLCAKKyAgICAxMTgsIDIsIDIyMiwgMjM0LCA0OCwgNywgNCwgMSwgMTE1LCAyLCA0NCwgMTYzLCAyMjIsIDIzMywgNywgNCwgMSwgMTk5LCAKKyAgICAyMjIsIDkyLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDE5OSwgMjIyLCA5MiwgMiwgMjQ3LCAyNTUsIDkxLCA3LCA0LCAxLCAxOTksIAorICAgIDIyMiwgOTIsIDIsIDEyNSwgOTEsIDcsIDYsIDEsIDIyMCwgNzYsIDIyMiwgOTEsIDcsIDQsIDEsIDI0OCwgNTQsIDcsIDYsIAorICAgIDEsIDExNSwgMiwgNTksIDUxLCA3LCA0LCAxLCAxMTUsIDIsIDU5LCA1MSwgNywgNiwgMSwgMTE1LCAyLCAyNDEsIDUyLCA0OCwgCisgICAgNywgNCwgMSwgMTE1LCAyLCAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMTE1LCAyLCAyNTAsIDMxLCAyMiwgMTQyLCA3LCA0LCAxLCAKKyAgICAxMTUsIDIsIDI1MCwgMzEsIDIyLCAxNDIsIDcsIDYsIDEsIDExNSwgMiwgMjUwLCAzMSwgMjIsIDI0MiwgMTM2LCA3LCA0LCAKKyAgICAxLCAxMTUsIDIsIDI1MCwgMzEsIDIyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTE1LCAyLCAyNTAsIDMxLCAyMiwgMjQxLCA1MiwgCisgICAgNDgsIDcsIDQsIDEsIDExNSwgMiwgMjUwLCAzMSwgMjIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxMTUsIDIsIDI1MCwgMzEsIAorICAgIDIyLCAxODIsIDcsIDQsIDEsIDExNSwgMiwgMjUwLCAzMSwgMjIsIDE4MiwgNywgNiwgMSwgMTE1LCAyLCAyNTAsIDMxLCAyMiwgCisgICAgNTksIDUxLCA3LCA0LCAxLCAxMTUsIDIsIDI1MCwgMzEsIDIyLCA1OSwgNTEsIDcsIDYsIDEsIDExNSwgMiwgMjUxLCAxNDcsIAorICAgIDIyLCAxNDIsIDcsIDQsIDEsIDExNSwgMiwgMjUxLCAxNDcsIDIyLCAxNDIsIDcsIDYsIDEsIDExNSwgMiwgMjUxLCAxNDcsIAorICAgIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTE1LCAyLCAyNTEsIDE0NywgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxMTUsIDIsIAorICAgIDI1MSwgMTQ3LCAyMiwgMjQxLCA1MiwgNDgsIDcsIDQsIDEsIDExNSwgMiwgMjUxLCAxNDcsIDIyLCAyNDEsIDUyLCA0OCwgNywgCisgICAgNiwgMSwgMTE1LCAyLCAyNTEsIDE0NywgMjIsIDE4MiwgNywgNCwgMSwgMTE1LCAyLCAyNTEsIDE0NywgMjIsIDE4MiwgNywgCisgICAgNiwgMSwgMTE1LCAyLCAyNTEsIDE0NywgMjIsIDU5LCA1MSwgNywgNCwgMSwgMTE1LCAyLCAyNTEsIDE0NywgMjIsIDU5LCAKKyAgICA1MSwgNywgNiwgMSwgMTYwLCAyLCA1OSwgNTEsIDcsIDQsIDEsIDE2MCwgMiwgNTksIDUxLCA3LCA2LCAxLCAxNjAsIDIsIAorICAgIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAxNjAsIDIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxNjAsIDIsIDE4MiwgNywgNCwgMSwgCisgICAgMTYwLCAyLCAxODIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDE0MiwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDMxLCAKKyAgICAyMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIAorICAgIDMxLCAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAKKyAgICAxNjAsIDIsIDI1MCwgMzEsIDIyLCAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgMTgyLCA3LCAKKyAgICA0LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDIyLCAxODIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDU5LCA1MSwgNywgCisgICAgNCwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgNTksIDUxLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMjQxLCA1MiwgNDgsIDcsIAorICAgIDQsIDEsIDI0MCwgMTU0LCAyLCAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDU5LCA1MSwgNywgNCwgMSwgCisgICAgMjQwLCAxNTQsIDIsIDU5LCA1MSwgNywgNiwgMSwgMTQ0LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDE0NCwgMiwgNTksIDUxLCA3LCAKKyAgICA2LCAxLCAxNDQsIDIsIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAxNDQsIDIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxNDQsIDIsIAorICAgIDI1MCwgMzEsIDIyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDE0MiwgNywgNiwgMSwgMTQ0LCAyLCAKKyAgICAyNTAsIDMxLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAKKyAgICAxNDQsIDIsIDI1MCwgMzEsIDIyLCAyNDEsIDUyLCA0OCwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDMxLCAyMiwgMjQxLCA1MiwgCisgICAgNDgsIDcsIDYsIDEsIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDE4MiwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDMxLCAyMiwgMTgyLCAKKyAgICA3LCA2LCAxLCAxNDQsIDIsIDI1MCwgMzEsIDIyLCA1OSwgNTEsIDcsIDQsIDEsIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDU5LCAKKyAgICA1MSwgNywgNiwgMSwgMTQ0LCAyLCAyNDAsIDI0OSwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyNDAsIDI0OSwgMjIsIAorICAgIDE0MiwgNywgNiwgMSwgMTQ0LCAyLCAyNDAsIDI0OSwgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAKKyAgICAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE0NCwgMiwgMjQwLCAyNDksIDIyLCAyNDEsIDUyLCA0OCwgNywgNCwgMSwgMTQ0LCAKKyAgICAyLCAyNDAsIDI0OSwgMjIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgMTgyLCA3LCA0LCAKKyAgICAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgMTgyLCA3LCA2LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgNTksIDUxLCA3LCAKKyAgICA0LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgNTksIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDU5LCA1MSwgNywgNCwgMSwgCisgICAgMTA0LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDEwNCwgMiwgMjQxLCA1MiwgNDgsIDcsIDQsIDEsIDEwNCwgMiwgMjQxLCA1MiwgCisgICAgNDgsIDcsIDYsIDEsIDEwNCwgMiwgMjQwLCAyNDksIDIyLCAxNDIsIDcsIDQsIDEsIDEwNCwgMiwgMjQwLCAyNDksIDIyLCAKKyAgICAxNDIsIDcsIDYsIDEsIDEwNCwgMiwgMjQwLCAyNDksIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgCisgICAgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxMDQsIDIsIDI0MCwgMjQ5LCAyMiwgMjQxLCA1MiwgNDgsIDcsIDQsIDEsIDEwNCwgCisgICAgMiwgMjQwLCAyNDksIDIyLCAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDE4MiwgNywgNCwgCisgICAgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDE4MiwgNywgNiwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDU5LCA1MSwgNywgCisgICAgNCwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDU5LCA1MSwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDI0MiwgMTM2LCA3LCA0LCAKKyAgICAxLCAyMTEsIDExOCwgMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIxMSwgCisgICAgMTE4LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAyNDEsIDUyLCA0OCwgNywgNCwgMSwgMjExLCAxMTgsIDIsIAorICAgIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMTgyLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgMTgyLCA3LCA2LCAKKyAgICAxLCAyMzAsIDIyMywgMjMyLCAxODUsIDcsIDQsIDEsIDIzMCwgMjIzLCAyMzIsIDE4NSwgNywgNiwgMSwgMjMwLCAyMjMsIAorICAgIDIxNCwgMTA1LCA3LCA0LCAxLCAyMzAsIDIyMywgMjE0LCAxMDUsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAyMzIsIDEyMywgNywgCisgICAgNCwgMSwgMjExLCAxMTgsIDIsIDIzMiwgMTIzLCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU0LCAyNiwgNCwgMSwgCisgICAgMjU0LCAxNDQsIDIsIDI0OCwgMTUzLCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxMywgMjYsIAorICAgIDQsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAKKyAgICAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgCisgICAgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIAorICAgIDIyLCAyMjUsIDE3NSwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NCwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAKKyAgICAyNDgsIDE1MywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNTQsIAorICAgIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAKKyAgICAxMTAsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAKKyAgICAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIAorICAgIDI2LCA0LCAxLCAyNDUsIDEwMSwgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAyNDUsIDEwMSwgMiwgMjQ4LCAxNTMsIDI2LCA0LCAKKyAgICAxLCAyNDUsIDEwMSwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCAxMDEsIDIsIDI0OCwgMTU0LCAKKyAgICAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgMTAxLCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgCisgICAgMjQ1LCAxMDEsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyNDUsIDEwMSwgMiwgMjI0LCAxNTQsIDI2LCAKKyAgICA2LCAxLCAyNDUsIDEwMSwgMiwgMjQ4LCAxNTMsIDI2LCA2LCAxLCAyNDUsIDEwMSwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIAorICAgIDEzLCAyNiwgNiwgMSwgMjQ1LCAxMDEsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI0NSwgMTAxLCAyLCAKKyAgICAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjQ1LCAxMDEsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIAorICAgIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NCwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDI0OCwgMTUzLCAyNiwgNCwgMSwgCisgICAgMjQ1LCA2NCwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAKKyAgICAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDI0NSwgNjQsIAorICAgIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc1LCAKKyAgICAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNCwgCisgICAgMTU0LCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTMsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIAorICAgIDIxNCwgMTMsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNDUsIDY0LCAKKyAgICAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgCisgICAgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIAorICAgIDE1NCwgMjIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDIyNCwgMTU0LCAyNiwgNCwgMSwgMjM1LCAxODYsIAorICAgIDIsIDI0OCwgMTUzLCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIzNSwgCisgICAgMTg2LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIAorICAgIDExMCwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjM1LCAxODYsIAorICAgIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgCisgICAgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMjQsIDE1NCwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyNDgsIDE1MywgMjYsIDYsIAorICAgIDEsIDIzNSwgMTg2LCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMzUsIDE4NiwgMiwgMjQ4LCAxNTQsIAorICAgIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAKKyAgICAyMzUsIDE4NiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMjQsIDE1NSwgMjIsIAorICAgIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMjYsIAorICAgIDIwMCwgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAyMjYsIDIwMCwgMiwgMjQ4LCAxNTMsIDI2LCA0LCAxLCAyMjYsIDIwMCwgMiwgCisgICAgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDAsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIAorICAgIDQsIDEsIDIyNiwgMjAwLCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjI2LCAyMDAsIDIsIDI0OCwgCisgICAgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyMjYsIDIwMCwgMiwgMjI0LCAxNTQsIDI2LCA2LCAxLCAyMjYsIDIwMCwgCisgICAgMiwgMjQ4LCAxNTMsIDI2LCA2LCAxLCAyMjYsIDIwMCwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAKKyAgICAyMDAsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgMjAwLCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgCisgICAgMTEwLCAyNiwgNiwgMSwgMjI2LCAyMDAsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMTQsIDE1OCwgCisgICAgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNTMsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjI0LCAKKyAgICAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIAorICAgIDIxNCwgMTU4LCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTU0LCAyMiwgCisgICAgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDIxNCwgCisgICAgMTU4LCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTUzLCAyNiwgNiwgCisgICAgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE1NCwgCisgICAgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAKKyAgICAyMjYsIDIwMiwgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTMsIDI2LCA0LCAxLCAyMjYsIAorICAgIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAKKyAgICAxMywgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIAorICAgIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NSwgCisgICAgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIAorICAgIDIyNCwgMTU0LCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTUzLCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgCisgICAgMTU1LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAKKyAgICAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIAorICAgIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA2LCAxLCAyMjYsIAorICAgIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgCisgICAgMjU0LCAxNDQsIDIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjQ1LCAxMDEsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNDUsIAorICAgIDEwMSwgMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgCisgICAgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyMjYsIAorICAgIDExMCwgMjYsIDQsIDEsIDIyNiwgMjAwLCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDAsIDIsIDIyNiwgMTEwLCAyNiwgCisgICAgNCwgMSwgMjE0LCAxNTgsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAKKyAgICAyMjYsIDIwMiwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDI1NCwgCisgICAgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAyMiwgMjEwLCAKKyAgICAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAKKyAgICAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgCisgICAgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAKKyAgICAyMiwgMjI2LCAxMTEsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgCisgICAgMTc2LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NiwgMjIsIAorICAgIDIxMCwgMjE5LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNTQsIAorICAgIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgCisgICAgMTQsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTQsIDIyLCAyMjQsIAorICAgIDE2NywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTExLCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAKKyAgICAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMSwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjU0LCAxNDQsIAorICAgIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzYsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgCisgICAgMjIsIDIyNSwgMTc2LCAyMiwgMjI0LCAxNjcsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIxMCwgMjE5LCAKKyAgICAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIyNCwgCisgICAgMTU1LCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIAorICAgIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTExLCAyMiwgMjEwLCAKKyAgICAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTExLCAyMiwgMjEwLCAyMTksIDI2LCA0LCAKKyAgICAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc2LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAKKyAgICAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc2LCAyMiwgMjEwLCAyMTksIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgCisgICAgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIAorICAgIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxNCwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgCisgICAgMjQ4LCAxNTQsIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIAorICAgIDIyNiwgMTExLCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTExLCAyMiwgCisgICAgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc2LCAyMiwgMjI0LCAxNjcsIDI2LCAKKyAgICA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc2LCAyMiwgMjI0LCAxNjcsIDI2LCA0LCAxLCAyMjYsIAorICAgIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIxMCwgCisgICAgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgCisgICAgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIAorICAgIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTEsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgCisgICAgMjIsIDIyNiwgMTExLCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIAorICAgIDE3NiwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzYsIDIyLCAKKyAgICAyMTAsIDIxOSwgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjI2LCAKKyAgICAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIAorICAgIDE0LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAKKyAgICAxNjcsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMSwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgCisgICAgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTEsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDIyNiwgMjAyLCAKKyAgICAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc2LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIAorICAgIDIyLCAyMjUsIDE3NiwgMjIsIDIyNCwgMTY3LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIxMywgMTIwLCAyNiwgNCwgMSwgCisgICAgMjU0LCAxNDQsIDIsIDIzMSwgMjMyLCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIAorICAgIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMjYsIDExMSwgMjIsIDIxMCwgCisgICAgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNSwgMTc2LCAKKyAgICAyMiwgMjEwLCAyMTksIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjEzLCAxMjAsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgCisgICAgMjMxLCAyMzIsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjYsIAorICAgIDExMCwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE2NywgMjYsIDIzNCwgMiwgMjYsIDIyNCwgMTY3LCAyNiwgMjI0LCAKKyAgICAxNTQsIDI2LCAyMjUsIDE3NSwgMjYsIDI0NywgMjUyLCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMTQsIAorICAgIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIAorICAgIDIyNiwgMTExLCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDI0NSwgCisgICAgNjQsIDIsIDIyNSwgMTc2LCAyMiwgMjEwLCAyMTksIDI2LCA2LCAxLCAyNDUsIDEwMSwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIAorICAgIDI0NSwgMTAxLCAyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNDUsIDY0LCAKKyAgICAyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTY3LCAyNiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAKKyAgICAyNiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMzUsIAorICAgIDE4NiwgMiwgMjEzLCAxMjAsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjMxLCAyMzIsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgCisgICAgMjQ3LCAyNTIsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDI0NywgMjUyLCAyMiwgMjI2LCAxMTAsIDI2LCAKKyAgICA0LCAxLCAyMzUsIDE4NiwgMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjQ3LCAyNTIsIDIyLCAyMjUsIAorICAgIDE3NSwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMTMsIDEyMCwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMzEsIDIzMiwgCisgICAgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDIyNiwgMTEwLCAyNiwgMjQ4LCAKKyAgICAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIAorICAgIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjEzLCAxMjAsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjMxLCAyMzIsIDI2LCA0LCAKKyAgICAxLCAyMTQsIDE1OCwgMiwgMjQ3LCAyNTIsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0NywgMjUyLCAKKyAgICAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMjMsIDM4LCAyLCAyMjQsIDE1NCwgMjYsIDQsIDEsIDIyMywgMzgsIDIsIDI0OCwgCisgICAgMTUzLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0NywgMjUyLCAKKyAgICAyMiwgMjI1LCAxNzUsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjEzLCAxMjAsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgCisgICAgMjMxLCAyMzIsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyMjYsIAorICAgIDExMCwgMjYsIDYsIDEsIDIyMywgMzgsIDIsIDI0OCwgMTUzLCAyNiwgMjQ3LCAyNTIsIDIyLCAyMTQsIDEzLCAyNiwgMjQ3LCAKKyAgICAyNTIsIDIyLCAyMjYsIDExMCwgMjYsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjE0LCAxNCwgMjIsIDIxMCwgCisgICAgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDIyNiwgMTExLCAKKyAgICAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgCisgICAgMjI1LCAxNzYsIDIyLCAyMTAsIDIxOSwgMjYsIDYsIDEsIDIyNiwgMjAwLCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAKKyAgICAyMDAsIDIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgCisgICAgMjI2LCAxMTAsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNjcsIDI2LCAyMjYsIDExMCwgMjYsIDI0OCwgMTUzLCAKKyAgICAyNDUsIDE1MSwgMjI0LCAyNywgMjQ1LCAxNjAsIDIyNCwgMjcsIDI0NSwgMTUxLCAyMTksIDE4LCAyNDUsIDE2MCwgMjE5LCAKKyAgICAxOCwgMjE2LCAxNDEsIDIxOSwgMTgsIDI0NCwgOSwgMjE5LCAxOCwgMjE5LCAxMjMsIDIxOSwgMTgsIDI0NCwgMTEyLCAyMTksIAorICAgIDE4LCAyMjQsIDE0MSwgMjE5LCAxOCwgMjE2LCAxNzAsIDIxOSwgMTgsIDI0MiwgMzUsIDIxOSwgMTgsIDIxMCwgODcsIDIxMSwgCisgICAgMjQ1LCAyMTksIDE4LCAyMTAsIDg3LCAyMTEsIDI0NSwgMjI4LCA2NywgMjEwLCA4NywgMjExLCAyNDUsIDIzNSwgNjMsIAorICAgIDIzMywgMzgsIDc4LCAyMjIsIDI0MywgNzgsIDI0MCwgMTY4LCAyMjgsIDY4LCAyNDAsIDE2OCwgMjQ0LCAxMTIsIDI0OCwgCisgICAgMTU2LCAyNDUsIDE1MSwgMjQ4LCAxNTYsIDI0NSwgMTYwLCAyNDgsIDE1NiwgMjAzLCAxMzAsIDUyLCA2NywgMjMyLCAyMTMsIAorICAgIDUyLCAxMjEsIDIzMiwgMjEzLCA0MywgMjE5LCAxNTUsIDIyMywgMjU0LCA3OCwgNDQsIDIxOSwgMTU1LCAyMjMsIDI1NCwgCisgICAgNzgsIDIxOSwgMTU1LCAyMzIsIDEwOSwgMjIzLCAyNTQsIDc4LCAyMTksIDE1NSwgMjQxLCAxNjMsIDIyMywgMjU0LCA3OCwgCisgICAgNDMsIDUyLCAyMjMsIDI1NCwgNzgsIDQ0LCA1MiwgMjIzLCAyNTQsIDc4LCA1MiwgMjMyLCAxMDksIDIyMywgMjU0LCA3OCwgCisgICAgNTIsIDI0MSwgMTYzLCAyMjMsIDI1NCwgNzgsIDI0OCwgMjA1LCA1MiwgMjQ4LCAyMDUsIDI1MSwgMTEzLCAyMTUsIDIyMiwgCisgICAgMjUxLCAxMTMsIDEyMywgNTksIDIzMywgNTYsIDExMywgNTksIDIzMywgNTYsIDIwMywgMjQ1LCAxNjMsIDI0MCwgMTY2LCAKKyAgICAyMjUsIDEwLCAyMzIsIDIxNCwgMjIwLCAxMzcsIDIyNiwgMTUsIDIyMCwgMTM3LCAyMzMsIDM4LCAyNDUsIDE1OCwgMjIyLCAKKyAgICAyNDMsIDI0NSwgMTU4LCAyMjQsIDI0NiwgMjQ3LCAxOTYsIDI0NCwgMTksIDIzMywgMzgsIDIyNiwgMTE3LCAyMjIsIDI0MywgCisgICAgMjI2LCAxMTcsIDIyOSwgMTk0LCAyMjgsIDczLCAyMTksIDE4LCAyMjUsIDE4MywgMjMwLCAxOTMsIDUwLCAyMjUsIDE4MywgCisgICAgMjE2LCAyNDgsIDIxNiwgMTQ4LCA1MCwgMjI0LCAxOTAsIDUyLCAyMjQsIDE5MCwgMjE1LCAyMTEsIDIyNCwgMTkwLCAyMjMsIAorICAgIDQ5LCAyMjQsIDE5MCwgMjIzLCA0OSwgNTIsIDIyNCwgMTkwLCAyMjMsIDQ5LCAyMTUsIDIxMSwgMjI0LCAxOTAsIDI1MCwgCisgICAgMjM4LCAyMTksIDE1NSwgMjMzLCA0MiwgMjU0LCAxMTAsIDIyMywgMjU0LCA3OCwgMjE5LCAxNTUsIDIyMiwgMjQ3LCAyNTQsIAorICAgIDExMCwgMjIzLCAyNTQsIDc4LCAyMjMsIDEwNywgNzgsIDUyLCAyNDUsIDMxLCA3OCwgMjM1LCAyMDEsIDIyNiwgMTE5LCAKKyAgICAyMTQsIDE4MCwgMTM1LCAyMTYsIDExMSwgMjUwLCAyMzksIDIzNSwgMjE2LCAyMjUsIDEwLCAyNTMsIDIxNCwgMjQwLCAxNjksIAorICAgIDI1MSwgMTEzLCAyNDQsIDIsIDIxOSwgOTUsIDQzLCA0MiwgMjUxLCAxNTgsIDIsIDIyNCwgNywgNDQsIDQyLCAyNTEsIDE1OCwgCisgICAgMiwgMjI0LCA3LCA1MiwgMjI0LCAxMywgNzgsIDIyNCwgMTMsIDI0NSwgMzEsIDc4LCAyNDUsIDMxLCAyMjQsIDEzLCA3OCwgCisgICAgMjE2LCA3MCwgNSwgMjQ1LCA2NSwgMjIzLCA0OSwgMjI1LCA2OCwgNTAsIDg1LCAxNDAsIDI1MSwgMTEzLCA4NSwgOTcsIAorICAgIDI1MSwgMTEzLCAxMjEsIDI1MywgMjE2LCAyMjMsIDQ5LCAyMjAsIDE1MCwgMjUwLCAxLCAyMTQsIDE2MywgMTEzLCAyNTMsIAorICAgIDIxNSwgMjU0LCAxNTgsIDIxMywgMTg4LCAyNDksIDIxNywgMjMwLCAxODIsIDUwLCAyMTcsIDIzNCwgMjQ4LCAxNTYsIDIzNSwgCisgICAgMTkzLCAyMTQsIDE4MCwgMjQ0LCA1MiwgMjI0LCAxNDEsIDc4LCAxMzQsIDU5LCAyMjQsIDE0MCwgMjI0LCAyNCwgMjI0LCAKKyAgICAxOTAsIDI0NCwgMTEsIDU5LCAyMjQsIDE0MCwgMjQ0LCA4MSwgNTksIDIyNCwgMTQwLCAxMTMsIDU5LCAyMjQsIDE0MCwgCisgICAgMjQ0LCAxMSwgNTksIDc4LCAyNDYsIDExOCwgMjQ5LCAxMzAsIDIxNSwgMjIxLCA2NywgMjQ0LCAxMSwgMjQ3LCAxMTgsIAorICAgIDIzMSwgODIsIDExLCAyMTksIDE4LCAyMTEsIDIwOSwgMjM1LCA2MywgMjQzLCAyMjcsIDI1NCwgNTIsIDIzNSwgMTkxLCAKKyAgICAyMTYsIDg1LCAyMzUsIDE5MSwgMjIwLCAxMzcsIDIzNSwgMTkxLCAyMjUsIDIyLCAyMzUsIDIyOCwgMjE3LCAxODIsIDIxNywgCisgICAgMjUxLCAyNTUsIDUsIDIxNywgMTgyLCAyMTcsIDI1MSwgMjM1LCAyMjgsIDEwLCAyNDQsIDIwLCAyMjAsIDgwLCAyNTUsIDUsIAorICAgIDEwLCAyNDQsIDIwLCAyMjAsIDgwLCAyMjksIDE4OSwgMjEsIDIyMCwgODEsIDIyOCwgNjksIDIxLCAyMjAsIDgxLCAyMTgsIAorICAgIDIzLCAyMTAsIDg2LCAyMTgsIDIzLCA3LCA0LCAxLCA3MywgMjE4LCAyMywgMTYxLCAyMTgsIDIzLCAxODksIDIxOCwgMjMsIAorICAgIDE5NCwgMjE4LCAyMywgMTk4LCAyMTgsIDIzLCAxOTUsIDIxOCwgMjMsIDIwMCwgMjE4LCAyMywgOTYsIDUwLCAyMTgsIDIzLCAKKyAgICAyMzAsIDE4MSwgMjE4LCAyMywgMjQ1LCA5OCwgNTAsIDIxOCwgMjMsIDQzLCAyMjYsIDMsIDIxOCwgMjMsIDQ0LCAyMjYsIDMsIAorICAgIDIxOCwgMjMsIDcsIDQsIDEsIDIzMCwgMjUsIDIxOCwgNjUsIDIxMCwgODYsIDIxOCwgNjUsIDExMCwgMjE4LCA2NSwgMTA1LCAKKyAgICAyMTgsIDY1LCAxNTgsIDIxOCwgNjUsIDE2MSwgMjE4LCA2NSwgMTg5LCAyMTgsIDY1LCAxOTQsIDIxOCwgNjUsIDE5OCwgCisgICAgMjE4LCA2NSwgMTk1LCAyMTgsIDY1LCAyMDAsIDIxOCwgNjUsIDk2LCA1MCwgMjE4LCA2NSwgMjMwLCAxODEsIDIxOCwgNjUsIAorICAgIDI0NSwgOTgsIDUwLCAyMTgsIDY1LCA0MywgMjI2LCAzLCAyMTgsIDY1LCA0NCwgMjI2LCAzLCA3LCAyMTgsIDY1LCA0LCAxLCAKKyAgICA2MSwgNywgMjE4LCA2NSwgNCwgMSwgNzUsIDcsIDIxOCwgNjUsIDQsIDEsIDc2LCA3LCAyMTgsIDY1LCA0LCAxLCAyMTEsIAorICAgIDE3OCwgNywgMjE4LCA2NSwgNCwgMSwgMjIxLCAxOTUsIDcsIDIxOCwgNjUsIDQsIDEsIDI0MiwgNjAsIDcsIDIxOCwgNjUsIAorICAgIDQsIDEsIDIzNSwgMjMsIDcsIDIxOCwgNjUsIDQsIDEsIDE1NiwgNywgMjE4LCA2NSwgNCwgMSwgMTkzLCA3LCAyMTgsIDY1LCAKKyAgICA0LCAxLCAyMzAsIDI1LCA3LCAyMTgsIDY1LCA0LCAxLCAyMjYsIDEwNSwgNywgMjE4LCA2NSwgNCwgMSwgMjIyLCA5MSwgNywgCisgICAgMjE4LCA2NSwgNCwgMSwgMjE3LCAxNTIsIDI0NSwgNDYsIDUwLCAyNDksIDIyNywgNTAsIDI0OSwgMTE3LCA1MCwgMjQzLCAKKyAgICAyNTEsIDI0MywgMjU0LCA1MCwgMjMyLCAxOTgsIDUwLCAyMzAsIDE5NCwgNTAsIDIyOSwgMjEwLCA1MCwgMjI1LCAxNjIsIAorICAgIDUwLCAyMjIsIDExOCwgNTAsIDIxMSwgMjE3LCA1MCwgMTY2LCAyMjAsIDQ5LCA1MCwgMjQ3LCAxMjcsIDUwLCAyNDUsIDQ3LCAKKyAgICA1MCwgMjM0LCA3NiwgNTAsIDIxNSwgMTEyLCA1MCwgMjQ2LCAxMDEsIDUwLCAyNDMsIDQwLCAyMjUsIDE5MywgNTAsIDIyNSwgCisgICAgMTYwLCA1MCwgMjQyLCAxMDksIDUwLCAyNTMsIDE4MiwgNTAsIDI0MCwgMjI4LCA1MCwgMjUwLCAxODUsIDUwLCAyMzIsIAorICAgIDE5MSwgMjE2LCAzLCA1MCwgMjE5LCAwLCA1MCwgMjE2LCAyNDUsIDUwLCAyMzUsIDI0MSwgMjIyLCAxMTgsIDUwLCAzOCwgCisgICAgNDMsIDI0MSwgMjU1LCA0OCwgMzgsIDQ0LCAyNDEsIDI1NSwgNDgsIDM4LCAxOTksIDY3LCAyMzIsIDIxNCwgMjI2LCAxMjAsIAorICAgIDM4LCAyMTksIDI1MSwgNjcsIDIzMiwgMjE0LCAyMjYsIDEyMCwgMzgsIDI1NCwgODgsIDgwLCA0OCwgMzgsIDI1MCwgMiwgCisgICAgODAsIDQ4LCAzOCwgNDMsIDgwLCA0OCwgMzgsIDQ0LCA4MCwgNDgsIDM4LCAyMjIsIDIzNCwgMjI2LCAxMjAsIDM4LCAyNTAsIAorICAgIDIsIDIyMiwgMjM0LCAyMjYsIDEyMCwgMzgsIDI1NCwgODgsIDIyMiwgMjM0LCAyMjYsIDEyMCwgMzgsIDEzNCwgMTcwLCA0OCwgCisgICAgMzgsIDI0NCwgMTEsIDE3MCwgNDgsIDM4LCAyNDUsIDE0NiwgMjUwLCAzNSwgMzgsIDI0NSwgMTQ2LCAyMTgsIDIzNCwgMzgsIAorICAgIDI0NSwgMTQ2LCAyNDcsIDI0OCwgMzgsIDI0NSwgMTQ2LCAyNTAsIDM2LCAyNTIsIDE4MCwgMzgsIDQzLCA0NCwgODAsIDQ4LCAKKyAgICAzOCwgMjQ1LCAxNDYsIDIyMSwgMTg4LCAzOCwgMjQ1LCAxNDYsIDIzNCwgMTM1LCAzOCwgMjQ1LCAxNDYsIDIxNCwgMTU1LCAKKyAgICAyMjUsIDcsIDIxNSwgMjI1LCAzOCwgMjIzLCA1MCwgMjE5LCA0NywgMjI2LCAxMjAsIDM4LCA1MiwgNjcsIDIxOCwgMTAzLCAKKyAgICAyMjYsIDEyMCwgMzgsIDI1NCwgOTgsIDg3LCAzOCwgMjE1LCAyMTEsIDIxNCwgMTgyLCAzOCwgMjExLCAyNDcsIDI1MSwgCisgICAgMTQwLCA0OCwgMzgsIDE0MCwgODAsIDIyNiwgMTIwLCAzOCwgMTk5LCA1MiwgMjE5LCA0NywgMjI2LCAxMjAsIDM4LCA5NywgCisgICAgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyNDYsIDEwMywgMzgsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyNDYsIAorICAgIDEwMywgMzgsIDQzLCA4MCwgNTEsIDM4LCA0NCwgODAsIDUxLCAzOCwgMjUzLCAyMTcsIDQ4LCAyNTUsIDExLCAyMjYsIDIzMSwgCisgICAgMjU0LCAyNTEsIDIxNiwgNDIsIDIxNiwgMTk2LCAyMTgsIDc0LCAxMzksIDYsIDI1MSwgNjYsIDI0OCwgNzEsIDI1MCwgMTc4LCAKKyAgICAyNTAsIDE3NSwgMjMyLCAyMTQsIDg3LCAyNTAsIDI0MCwgMjI2LCAyMzEsIDI1MSwgMjYsIDIxNCwgMTg5LCAyNDUsIDQ4LCAKKyAgICAyNDksIDE5MSwgMjIxLCAxODUsIDI0OCwgNzEsIDI0NCwgMTc5LCAxMTksIDQsIDI0MywgMjAyLCAxMTksIDYsIDI0MiwgNjAsIAorICAgIDI1MSwgMjE5LCA2LCAyNDIsIDYwLCAxMzksIDYsIDI0MiwgNjAsIDIyNSwgMzcsIDI0OSwgMTkxLCAyMjUsIDM3LCAyNDksIAorICAgIDE5MiwgMTE3LCAxMTMsIDIyNSwgMTA4LCAxMTksIDYsIDczLCAyNTEsIDIxOSwgNiwgNzMsIDExOSwgNiwgMTU2LCAxMTksIAorICAgIDQsIDE1NiwgMjMzLCAxNDksIDU3LCAyNTIsIDE0MSwgODcsIDEzOSwgNiwgMjMwLCAyNSwgMjI3LCAxOTYsIDUwLCAyMTksIAorICAgIDMxLCAyMjMsIDExOSwgMjQ5LCAxNjIsIDExOSwgNiwgMjI2LCAxMDUsIDEzOSwgNiwgMjI2LCAxMDUsIDEzOSwgNiwgMjI0LCAKKyAgICA5NiwgMTE5LCA2LCAxNTMsIDI1MSwgMjE5LCA2LCAxNTMsIDEzOSwgNiwgMTUzLCAyMjQsIDE5NiwgMjE3LCA3MSwgMjIzLCAKKyAgICA2MiwgMjIwLCAxMzIsIDc4LCAyMTcsIDEsIDUwLCAyMTUsIDI1MywgMTY0LCA1MCwgMjEzLCAyNDAsIDEzOSwgNiwgMjEwLCAKKyAgICAxNTksIDIyNiwgMTMzLCA1MCwgMjI2LCAyMjEsIDUwLCAyMzUsIDE5MywgMjI2LCAyMjEsIDUwLCAyNTEsIDIxOSwgNiwgCisgICAgMjEwLCAxNTksIDIxNSwgOTQsIDI2LCA0LCAxLCAyMzUsIDE4NSwgMjM0LCAxNzMsIDUwLCAyNTQsIDEwNywgNTAsIDExOSwgCisgICAgNiwgMjUzLCAxNTgsIDI1MSwgMjE5LCA2LCAyNTEsIDY2LCAyNDUsIDY4LCA4NywgMTE5LCA0LCA3NSwgMTE5LCA2LCA3NSwgCisgICAgMTE5LCA2LCAyNDUsIDYsIDIxNSwgOTQsIDYsIDI0NSwgNiwgMTE5LCA2LCAxOTMsIDExOSwgNCwgNzYsIDExMiwgODcsIAorICAgIDI1MiwgMjksIDg3LCAyNDIsIDIwMiwgODcsIDI0OCwgMTkwLCA4NywgMjM1LCAyMzIsIDIxOSwgMjksIDIyMiwgMTg3LCA2LCAKKyAgICAyMjQsIDk2LCAyNDQsIDE4MiwgNTAsIDEzOSwgNCwgMjI1LCAxMDgsIDEzOSwgNCwgMjQzLCAxMDcsIDEzOSwgNiwgMjQzLCAKKyAgICAxMDcsIDEzOSwgNiwgMjI1LCAxMDgsIDEzOSwgMjMwLCAyNCwgMjE4LCA0MCwgMjE1LCA5NCwgMzUsIDYsIDI0MywgMjAyLCAKKyAgICAyMTUsIDk0LCAzNSwgNiwgMTU2LCAyMjMsIDQ5LCAzNSwgNiwgMTU2LCAyMTUsIDk0LCAzNSwgNiwgMjExLCAxMTcsIDEzOSwgCisgICAgMzIsIDYsIDI0OSwgNjAsIDEzOSwgMzIsIDQsIDI0OSwgNjAsIDEzOSwgMzIsIDQsIDc1LCAxMzksIDMyLCA0LCA3MywgMTM5LCAKKyAgICAzMiwgNCwgMjM1LCAxNDQsIDIyNCwgMTcwLCAyMzIsIDIxMywgMjE1LCA5NCwgMjU0LCAxMjYsIDIyNSwgMTgzLCA1MCwgCisgICAgMjU0LCAxODAsIDIxNSwgOTQsIDQsIDI0NSwgNiwgMTYsIDMxLCAyMjEsIDI1MiwgMjE5LCAyOSwgMjEyLCAxMTQsIDI0NCwgCisgICAgMiwgMTIzLCAyMjAsIDExOCwgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAyMjgsIDE5NCwgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAKKyAgICAyMTYsIDI0MSwgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAyMTYsIDE2OCwgMjEyLCAxMTQsIDI0NCwgMiwgMTEzLCAyMTYsIAorICAgIDE2NiwgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAyNDQsIDExNywgMjEyLCAxMTQsIDI0NCwgMiwgMTEzLCAyNDQsIDExNiwgCisgICAgMjEyLCAxMTQsIDI0NCwgMiwgMTM0LCAyNDQsIDExNiwgMjEyLCAxMTQsIDI0NCwgMiwgMjQ0LCAxMSwgMjQ0LCAxMTYsIAorICAgIDIxMiwgMTE0LCAyNDQsIDIsIDEyMywgMjE5LCAxMTUsIDIxMiwgMTE0LCAyNDQsIDIsIDI0NCwgODEsIDIxOSwgMTEzLCAKKyAgICAyMTIsIDExNCwgMjQ0LCAyLCAxMjMsIDI0NSwgMTg4LCAyMTIsIDExNCwgMjQ0LCAyLCAxMzQsIDI0NSwgMTg2LCAyMTIsIAorICAgIDExNCwgMjQ0LCAyLCAyNDQsIDgxLCAyNDUsIDE4NiwgMjEyLCAxMTQsIDI0NCwgMiwgMjIwLCAxMjIsIDI0NSwgMTg2LCAKKyAgICAyNDQsIDIsIDIyNywgMTk3LCAxMTAsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTEwLCAyMjIsIDE5OCwgMjI3LCAxOTgsIDEwNSwgCisgICAgMjIyLCAxOTgsIDIyNywgMTk4LCAxNTgsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTYxLCAyMjIsIDE5OCwgMjI3LCAxOTgsIAorICAgIDE4OSwgMjIyLCAxOTgsIDIyNywgMTk4LCAxOTQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTk4LCAyMjIsIDE5OCwgMjI3LCAKKyAgICAxOTgsIDE5NSwgMjIyLCAxOTgsIDIyNywgMTk4LCAyMDAsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjE2LCAyNDcsIDIyMiwgCisgICAgMTk4LCAyMjcsIDE5OCwgMjQ1LCAxNjcsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjE1LCA3NiwgMjIyLCAxOTgsIDIyNywgMTk4LCAKKyAgICAyNDQsIDExNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxMjMsIDI0MCwgMjEwLCAyMjIsIDE5OCwgMjI3LCAxOTgsIDI0NCwgODEsIAorICAgIDI0MCwgMjEwLCAyMjIsIDE5OCwgMjI3LCAxOTgsIDEyMywgMjE2LCAxNDcsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTEwLCAKKyAgICA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDEwNSwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxNTgsIDQsIDIyMiwgMTk4LCAyMjcsIAorICAgIDE5OCwgMTYxLCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDE4OSwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxOTQsIDQsIDIyMiwgCisgICAgMTk4LCAyMjcsIDE5OCwgMTk4LCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDE5NSwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAKKyAgICAyMDAsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjE2LCAyNDcsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjQ1LCAxNjcsIDQsIAorICAgIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjE1LCA3NiwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAyNDQsIDExNCwgNCwgMjIyLCAKKyAgICAxOTgsIDIyNywgMTk4LCAxMjMsIDI0MCwgMjEwLCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDI0NCwgODEsIDI0MCwgMjEwLCAKKyAgICA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDEyMywgMjE2LCAxNDcsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTIzLCAyMTYsIDE0OCwgCisgICAgMjUxLCA2NywgMjQ5LCA2MCwgMjIyLCAxOTgsIDIyNywgMTk4LCAyNDQsIDgxLCAyMTYsIDE0NywgMjIyLCAxOTgsIDIyNywgCisgICAgMTk4LCAyMTYsIDI0OCwgMjE2LCAxNDcsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjIzLCA0OSwgMTIzLCAyNDAsIDIxMCwgNywgCisgICAgNCwgMSwgMjIzLCA0OSwgMjUxLCA2NiwgMjIyLCAxOTgsIDIyNywgMTk4LCAyMTksIDEyNSwgMjMzLCA3OCwgMTcsIDIyMiwgCisgICAgMTk4LCAyMjcsIDE5OCwgMjQ0LCAxMTUsIDI0NSwgMjI2LCAxNywgMjIyLCAxOTgsIDIyNywgMTk4LCAyNDQsIDExNSwgMjE2LCAKKyAgICAxNDcsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTIzLCAyNDAsIDIxMSwgMjE2LCAxNDcsIDIxMiwgMTE0LCAyNDQsIDIsIDIxMCwgCisgICAgODcsIDIxNiwgMTY2LCAxNDAsIDc0LCAyMTQsIDE1MywgNzQsIDk3LCA3NCwgMjQ2LCAxMDQsIDc0LCA0MywgNDQsIDc0LCAKKyAgICAxMjAsIDEyNCwgNzQsIDIyOCwgNTYsIDIxMiwgOSwgNzQsIDIyOCwgNTYsIDI0NSwgMjIwLCA3NCwgMjE5LCAyOCwgMjQ1LCAKKyAgICAyMjAsIDc0LCAyMTksIDI4LCAyMTIsIDksIDc0LCAxNDAsIDgwLCAyLCA5MSwgOTcsIDgwLCAyLCA5MSwgMTQwLCAyMTIsIAorICAgIDM2LCA3NCwgOTcsIDIxMiwgMzYsIDc0LCAxNDAsIDExMywgMjQxLCAyMzQsIDc0LCAyMTQsIDE1MywgMTEzLCAyNDEsIDIzNCwgCisgICAgNzQsIDk3LCAxMTMsIDI0MSwgMjM0LCA3NCwgMjQ2LCAxMDQsIDExMywgMjQxLCAyMzQsIDc0LCAxNDAsIDgwLCAyLCAyMTcsIAorICAgIDc3LCA5NywgODAsIDIsIDIxNywgNzcsIDE0MCwgODAsIDI0MywgMjQzLCAxMzAsIDIxNCwgMTUzLCA4MCwgMjQzLCAyNDMsIAorICAgIDEzMCwgOTcsIDgwLCAyNDMsIDI0MywgMTMwLCAyNDYsIDEwNCwgODAsIDI0MywgMjQzLCAxMzAsIDEyMCwgMTI0LCA4MCwgMiwgCisgICAgMjUyLCAxMjcsIDE0MCwgODAsIDIsIDEwMywgOTcsIDgwLCAyLCAxMDMsIDE0MCwgODAsIDIsIDIzMiwgMTIzLCA5NywgODAsIAorICAgIDIsIDIzMiwgMTIzLCA0MywgNDQsIDIxMiwgMzYsIDc0LCA0MywgNDQsIDgwLCAyLCA5MSwgMjQ2LCAxMDQsIDIxMCwgMzUsIAorICAgIDc0LCAyMTQsIDE1MywgODAsIDIsIDIxNiwgNzcsIDIzMywgMzcsIDIxNCwgMTUzLCA4MCwgMiwgMjE2LCA3NywgMjIyLCAKKyAgICAyNDEsIDI0NiwgMTA0LCA4MCwgMiwgMjE2LCA3NywgMjMzLCAzNywgMjQ2LCAxMDQsIDgwLCAyLCAyMTYsIDc3LCAyMjIsIAorICAgIDI0MSwgOTcsIDgwLCAyLCAyNDksIDE2MSwgMjQ2LCAxMDMsIDI0NiwgMTA0LCA4MCwgMiwgMjQ5LCAxNjEsIDIzMywgMzcsIAorICAgIDI1NCwgODgsIDIxNiwgMTQsIDIyMCwgMTUzLCA3NCwgMjUwLCAyLCAyMTYsIDE0LCAyMjAsIDE1MywgNzQsIDIyOCwgNTYsIAorICAgIDIxMiwgOSwgODAsIDIxNiwgNDIsIDE5OSwgMTMwLCAxNDAsIDgwLCAyMTYsIDQyLCAyNTIsIDE0MSwgMTE3LCA5NywgODAsIAorICAgIDIxNiwgNDIsIDEzMCwgMjU0LCA4OCwgMjA0LCAyNTAsIDM2LCA3NCwgMjUwLCAyLCAyMDQsIDI1MCwgMzYsIDc0LCAxNDAsIAorICAgIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjE0LCAxNTIsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyNDYsIDEwMywgCisgICAgMjE0LCAxNTMsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjIyLCAyNDEsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAKKyAgICAxMzksIDIzMywgMzcsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDIxNCwgMTUyLCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgCisgICAgMTM5LCAyNDYsIDEwMywgMjQ2LCAxMDQsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjIyLCAyNDEsIDI0NiwgMTA0LCAyNDEsIAorICAgIDI1NSwgMiwgMjUyLCAxMzksIDIzMywgMzcsIDk3LCA4MCwgMTE3LCAxNDAsIDc0LCAyMTQsIDE1MywgODAsIDE0MCwgNjQsIAorICAgIDI0NiwgMTA0LCA3NCwgMTQwLCA4MCwgMTE3LCA5NywgNzQsIDE0MCwgMjI2LCA3MCwgMjUzLCAyNDcsIDIxNCwgMTUzLCAKKyAgICAyMjYsIDcwLCAyNTMsIDI0NywgOTcsIDIyNiwgNzAsIDI1MywgMjQ3LCAyNDYsIDEwNCwgMjI2LCA3MCwgMjUzLCAyNDcsIAorICAgIDE0MCwgMjQxLCAyNTUsIDExNywgOTcsIDI0MSwgMjU0LCA5NywgMjQxLCAyNTUsIDExNywgMTQwLCAyNDEsIDI1NCwgMTQwLCAKKyAgICA1MiwgODAsIDIsIDkxLCA0MywgNDQsIDUyLCA4MCwgMiwgOTEsIDk3LCA1MiwgODAsIDIsIDkxLCAxNDAsIDUyLCA3NCwgCisgICAgMjE0LCAxNTMsIDUyLCA3NCwgOTcsIDUyLCA3NCwgMjQ2LCAxMDQsIDUyLCA3NCwgNDMsIDQ0LCA1MiwgNzQsIDEyMCwgMTI0LCAKKyAgICA1MiwgNzQsIDIyOCwgNTYsIDIxMiwgOSwgNTIsIDc0LCAyMjgsIDU2LCAyNDUsIDIyMCwgNTIsIDc0LCAyMTksIDI4LCAyNDUsIAorICAgIDIyMCwgNTIsIDc0LCAyMTksIDI4LCAyMTIsIDksIDUyLCA3NCwgMTQwLCAyMTUsIDIxMSwgNzQsIDk3LCAyMTUsIDIxMSwgCisgICAgNzQsIDE0MCwgMjE4LCAyMzAsIDc0LCA5NywgMjE4LCAyMzAsIDc0LCAyMTQsIDE1MywgODAsIDIsIDUyLCA5MSwgMjQ2LCAKKyAgICAxMDQsIDgwLCAyLCA1MiwgOTEsIDE0MCwgMjQ4LCAxNTUsIDc0LCAyMTQsIDE1MywgMjQ4LCAxNTUsIDc0LCA5NywgMjQ4LCAKKyAgICAxNTUsIDc0LCAyNDYsIDEwNCwgMjQ4LCAxNTUsIDc0LCAxNDAsIDgwLCAyMTYsIDQyLCAxMzAsIDk3LCA4MCwgMjE2LCA0MiwgCisgICAgMTMwLCAxNDAsIDcxLCA3NCwgMjE0LCAxNTMsIDcxLCA3NCwgOTcsIDcxLCA3NCwgMjQ2LCAxMDQsIDcxLCA3NCwgMjE0LCAKKyAgICAxNTMsIDcxLCA4MCwgMjQzLCAyNDMsIDEzMCwgMjE0LCAxNTMsIDcxLCA4MCwgMjI2LCAxOTcsIDIyNSwgMjE0LCAyMTQsIAorICAgIDE1MywgNzEsIDgwLCAyMjYsIDE5NywgMjI1LCAyMTUsIDIsIDIwMywgMTMwLCAyMTQsIDE1MywgNzEsIDgwLCAyMjYsIDE5NywgCisgICAgMjI1LCAyMTUsIDIsIDY3LCAxMzAsIDIxNCwgMTUzLCA3MSwgNTIsIDc0LCAyMTQsIDE1MywgNzEsIDUyLCA4MCwgMjI2LCAKKyAgICAxOTcsIDIyNSwgMjE0LCA5NywgNzEsIDgwLCAyNDMsIDI0MywgMjEyLCA1NiwgMjI4LCA1NiwgMjEyLCA5LCA4MCwgMjE2LCAKKyAgICA0MiwgMjQ5LCAxNjAsIDIxOSwgMjgsIDI0NSwgMjIwLCA4MCwgMjE2LCA0MiwgMjQ5LCAxNjAsIDEyMCwgMTI0LCA3MSwgNzQsIAorICAgIDQ0LCA4MCwgMiwgNCwgMjUwLCAzNSwgMjQ2LCAxMDQsIDgwLCAxNDAsIDY0LCAyMTQsIDE1MywgNzQsIDEzNCwgOTcsIDI1MywgCisgICAgMjQ3LCAxNDAsIDgwLCAyLCA2NywgOTEsIDk3LCA4MCwgMiwgNjcsIDkxLCA0MywgNDQsIDgwLCAyLCA2NywgOTEsIDE0MCwgCisgICAgODAsIDIsIDUyLCA2NywgOTEsIDk3LCA4MCwgMiwgNTIsIDY3LCA5MSwgNDMsIDQ0LCA4MCwgMiwgNTIsIDY3LCA5MSwgMTQwLCAKKyAgICAyMjYsIDE3MywgNzQsIDk3LCAyMjYsIDE3MywgNzQsIDQzLCA0NCwgMjI2LCAxNzMsIDc0LCAzMSwgMjU0LCAxNTQsIDI0OSwgCisgICAgMjE0LCAyMjUsIDI1MywgMjQ3LCAyMzMsIDIxNiwgMTg3LCAyNDUsIDI3LCAyMTYsIDE4NywgMjQ3LCAxMzgsIDIyOCwgNTIsIAorICAgIDI0NSwgMjgsIDI0NSwgMTUyLCAyMjAsIDEyNywgMjM1LCAyNDUsIDIyOSwgMjIxLCAyNDUsIDE3MCwgMjI2LCAyMzEsIDIyOCwgCisgICAgNTIsIDI1NCwgMTI0LCAyNDUsIDE3MCwgMjI2LCAyMzEsIDQsIDI0NSwgMTcwLCAyMjYsIDIzMSwgMjQ5LCAxODYsIDI1MywgCisgICAgMjM4LCAyMzEsIDYyLCAyNDcsIDEzOCwgMjI4LCA1MiwgMjQ5LCAxODgsIDI1MywgMjM4LCAyMzEsIDYyLCA0LCAyNDksIAorICAgIDE4NiwgMjUzLCAyMzgsIDIzMSwgNjIsIDI0NSwgMTQzLCA2NCwgMjI0LCAxNzIsIDIzMCwgMjQsIDIyNCwgMTgwLCAyMzAsIAorICAgIDI0LCAyNDksIDE2NSwgMjMwLCAyNCwgMjE4LCA0MCwgMjMwLCAxODIsIDUwLCAyMzAsIDE4MCwgNTAsIDU5LCAyMjUsIDIyLCAKKyAgICAyNDcsIDE2OSwgMjE5LCA5NSwgMjIwLCAxMjgsIDIzMCwgMTgxLCAyNTMsIDIxNywgMjI2LCAxNjcsIDIyMiwgMjM0LCAyMjYsIAorICAgIDE2NywgMjUxLCAxMTQsIDIyNiwgMTY3LCA0MiwgMjIyLCAxOTMsIDI0OSwgMTA5LCAyMjIsIDE5MywgMjQ0LCA0LCAyMjIsIAorICAgIDE5MywgMjI0LCAxNjgsIDExMSwgMjM1LCAyMzQsIDQ0LCAyNTQsIDEwOSwgMjU0LCAxMDksIDIzMSwgODgsIDI1NCwgMTA5LCAKKyAgICAyMTgsIDI1NSwgMjU0LCAxMDksIDI0NywgMTcxLCAyNDcsIDEzOCwgMjI4LCA1MiwgMjQ3LCAxNzQsIDIyNiwgOCwgMTExLCAKKyAgICAyMjgsIDUyLCAyMjYsIDgsIDExMSwgMjMyLCAxNDYsIDI1NCwgMTE4LCAyMzIsIDE0NiwgMjI2LCAxNTgsIDIzNSwgMTk4LCAKKyAgICAyMTQsIDE3NSwgMjM1LCAyMTEsIDUyLCAyMzUsIDIxMSwgMjE1LCAyMTEsIDIzNSwgMjExLCAyNDksIDE4MiwgMjM1LCAyMTEsIAorICAgIDIxOCwgMTMsIDIzNSwgMjExLCAyMTMsIDEyOSwgMjM1LCAyMTEsIDI1MCwgMiwgMjM1LCAyMTEsIDI1MCwgMiwgMjQ5LCAKKyAgICAxODIsIDIzNSwgMjExLCAyNTQsIDg4LCAyNDksIDE4MiwgMjM1LCAyMTEsIDIxNiwgMTg2LCAyNTIsIDY3LCAyMjMsIDEzNywgCisgICAgMjI0LCAxNjksIDU5LCAyMzAsIDE4MSwgMjQ1LCAzMywgMjQzLCA0NiwgMjI0LCAxNjksIDI0MSwgNTcsIDIxNiwgODksIAorICAgIDIyNiwgMTY3LCAyMjMsIDQ5LCAxODIsIDIzNSwgMTkzLCAyMzMsIDY1LCAyMjIsIDkxLCAyMTksIDE1NywgMjEyLCAzNSwgCisgICAgMjExLCAyMDAsIDIyNCwgMTgwLCAyMjgsIDUyLCAxODIsIDIzMCwgMTgyLCAxODIsIDI1MywgMjEwLCAxMjgsIDExMSwgMjI4LCAKKyAgICA1MiwgMjUzLCAyMTAsIDEyOCwgMTExLCAyNTQsIDQ4LCAxMjgsIDExMSwgMjU0LCA0OCwgMjUxLCA4OCwgMjI4LCA1MiwgCisgICAgMjU1LCA0LCAxMjgsIDExMSwgMjI5LCAxMDAsIDI1NCwgNDgsIDIyOCwgNTksIDI1NSwgNCwgMTI4LCAxMTEsIDI1NCwgMTQ4LCAKKyAgICAxMjgsIDExMSwgMjI4LCA1MiwgMjU0LCAxNDgsIDEyOCwgMTExLCAyNTQsIDE0OCwgMTI4LCAxNzcsIDEyOCwgMTExLCAyMTUsIAorICAgIDIxMSwgMTgyLCAyNTQsIDE1NSwgMTI4LCAxMTEsIDI0NSwgOTQsIDExMSwgMjQzLCA0NSwgMjQ1LCA5NCwgMTExLCAyNDcsIAorICAgIDIzNCwgMjUyLCAyMywgMjU0LCA1MCwgMjE2LCAxOTYsIDIzMiwgMjIxLCAyNDMsIDQ1LCAxMjgsIDExMSwgMjU0LCA0OCwgCisgICAgMTI4LCAyMTYsIDQyLCAxNzcsIDIxNiwgMTk2LCAyMzYsIDE1LCAyMjYsIDIzMSwgMjM2LCAxNSwgNjQsIDE3NywgMjU0LCAKKyAgICA0OCwgMTI4LCAxMTEsIDI0OSwgMjI3LCAyNDUsIDk3LCAyNDUsIDk4LCAyNDksIDIyNiwgMjIyLCAyMzQsIDIzNiwgMCwgCisgICAgMTI4LCAxMTEsIDIyMiwgMjM0LCAxMjgsIDExMSwgMjQ5LCAxNTQsIDExMSwgMjQ1LCA2NywgMjQ1LCA5NiwgMTExLCAyMTgsIAorICAgIDE1NywgMjQ1LCA5NywgMjQ4LCA1NSwgMTI4LCAxMTEsIDEyOCwgMjE2LCA0MiwgMjUxLCA3OCwgMjQ4LCA3MiwgMjMxLCA4OCwgCisgICAgMjUxLCA3NywgMjI0LCAxMSwgMTI4LCAxMTEsIDIyOCwgNTIsIDEyOCwgMTExLCAyNDAsIDEwNCwgMTExLCAyMjgsIDUyLCAKKyAgICAyNDAsIDEwNCwgMTExLCAyMTgsIDEwOSwgMjQ1LCA5NCwgMTExLCAyMzMsIDE1LCAxNzcsIDEyOCwgMTExLCAyNDIsIDEzMCwgCisgICAgMTc3LCAxMjgsIDExMSwgMjMzLCAxNSwgMTE3LCAxMjgsIDExMSwgMjQyLCAxMzAsIDExNywgMTI4LCAxMTEsIDIzMywgMTUsIAorICAgIDI1MSwgODgsIDIyOCwgNTIsIDEyOCwgMTExLCAyNDIsIDEzMCwgMjUxLCA4OCwgMjI4LCA1MiwgMTI4LCAxMTEsIDIzMCwgCisgICAgOTcsIDIzMywgMTQsIDIzMCwgOTcsIDI0MiwgMTI5LCAyNTIsIDIzLCAyMjgsIDUyLCAyNDUsIDk0LCAxMTEsIDIyOCwgNTIsIAorICAgIDIzMywgMTQsIDIyOCwgNTIsIDI0MiwgMTI5LCAyMjksIDEwMCwgMjMzLCAxNSwgMjI4LCA1OSwgMTI4LCAxMTEsIDIyOSwgCisgICAgMTAwLCAyNDIsIDEzMCwgMjI4LCA1OSwgMTI4LCAxMTEsIDIzMywgMTUsIDE3NywgMjQ1LCA5NCwgMTExLCAyNDIsIDEzMCwgCisgICAgMTc3LCAyNDUsIDk0LCAxMTEsIDIyOSwgMTAwLCAyMzMsIDE1LCAyMjgsIDU5LCAyNDUsIDk0LCAxMTEsIDIyOSwgMTAwLCAKKyAgICAyNDIsIDEzMCwgMjI4LCA1OSwgMjQ1LCA5NCwgMTExLCAyMzMsIDE1LCAxNzcsIDI0MiwgMTI5LCAyNDIsIDEzMCwgMTc3LCAKKyAgICAyMzMsIDE0LCAyMjksIDEwMCwgMjMzLCAxNSwgMjI4LCA1OSwgMjQyLCAxMjksIDIyOSwgMTAwLCAyNDIsIDEzMCwgMjI4LCAKKyAgICA1OSwgMjMzLCAxNCwgMjI0LCAyMDIsIDIxOCwgNTUsIDIyNCwgMjAzLCAxNzcsIDEyOCwgMTExLCAyMTgsIDU2LCAxNzcsIAorICAgIDEyOCwgMTExLCAyMjQsIDIwMywgMTc3LCAyNDUsIDk0LCAxMTEsIDIxOCwgNTYsIDE3NywgMjQ1LCA5NCwgMTExLCAyNDcsIAorICAgIDEzOCwgMjI4LCA1MiwgMjI0LCAyMDUsIDI0NywgMTM4LCAyMjgsIDUyLCAyMTgsIDU3LCAyMTgsIDY0LCAyMjYsIDIzMSwgCisgICAgMjE4LCAyMiwgMjI2LCAyMzEsIDIyOCwgNTIsIDExNSwgMjE4LCA2NCwgMjI2LCAyMzEsIDIyOCwgNTIsIDExNSwgMjE4LCAKKyAgICAyMiwgMjI2LCAyMzEsIDIxOCwgNjQsIDY0LCAxNzcsIDEyOCwgMTExLCAyMTgsIDIyLCA2NCwgMTc3LCAxMjgsIDExMSwgCisgICAgMjI5LCAxMDAsIDExNSwgMjE4LCA2NCwgNjQsIDIyOCwgNTksIDEyOCwgMTExLCAyMjksIDEwMCwgMTE1LCAyMTgsIDIyLCAKKyAgICA2NCwgMjI4LCA1OSwgMTI4LCAxMTEsIDIxOCwgNjQsIDY0LCAyLCAyMjgsIDUyLCAxMjgsIDExMSwgMjE4LCAyMiwgNjQsIDIsIAorICAgIDIyOCwgNTIsIDEyOCwgMTExLCAyMzAsIDgxLCAyMzAsIDgyLCAyMzAsIDgzLCAyMzAsIDgyLCAyMTQsIDE3NSwgNDIsIDIzNiwgCisgICAgMTUsIDIyNiwgMjMxLCA0MiwgMjI2LCAxNTAsIDIyNiwgMjMxLCA0MiwgMjM2LCAxNSwgNjQsIDE3NywgMTI4LCAxMTEsIDQyLCAKKyAgICAyMjYsIDE1MCwgNjQsIDE3NywgMTI4LCAxMTEsIDQyLCAyNTAsIDI1MSwgNDIsIDI0OSwgMTAyLCAzNywgMjI1LCAyMiwgMzcsIAorICAgIDIzMCwgMTgxLCAzNywgMjE2LCA4NSwgMzcsIDI0NywgMTY5LCAyMTksIDk1LCAzNywgNTksIDIyNiwgMTY3LCAzNywgMjIyLCAKKyAgICAyMzQsIDIyNiwgMTY3LCAzNywgMjUzLCAyMTcsIDIyNiwgMTY3LCAzNywgMjQ1LCA5NywgMzcsIDI0OCwgMTU2LCA5MiwgCisgICAgMjI1LCAyMiwgOTIsIDIzMCwgMTgxLCA5MiwgMjE2LCA4NSwgOTIsIDU5LCAyMjYsIDE2NywgNDQsIDIxNywgODcsIDQzLCAKKyAgICAyMTcsIDg3LCAxMjQsIDIxNywgODcsIDEyMCwgMjE3LCA4NywgMjUzLCAyMjAsIDIzMCwgMTU2LCAyMTUsIDE5MSwgMjQ0LCAKKyAgICAyNSwgMjE1LCAyMTEsIDY3LCAyNTIsIDE0MSwgNDQsIDIxNSwgOTMsIDUyLCA2NywgMjUyLCAxNDEsIDUyLCA0NCwgMjE1LCAKKyAgICA5MywgMjQ3LCAxMzgsIDIyOCwgNTIsIDIyNCwgMTYzLCAyMjgsIDUyLCAyMTUsIDE5MSwgMjQ3LCAxMzgsIDIyOCwgNTIsIAorICAgIDI0NCwgMjYsIDIyOSwgMTAyLCA1MiwgNjcsIDI1MiwgMTQxLCA1MiwgNDQsIDIxNSwgOTMsIDIyNCwgMjAzLCAyMTQsIDE4NCwgCisgICAgMjIzLCA5MSwgMjE4LCA1NiwgMjE0LCAxODQsIDIyMywgOTEsIDIyOCwgNTcsIDIxOCwgNzcsIDIyNiwgMjMxLCAyNDksIAorICAgIDE4NiwgMjUzLCAyMzgsIDIyOCwgNTcsIDIxOCwgNzYsIDIyOCwgNTcsIDIxOCwgNzcsIDY0LCAxNzcsIDEyOCwgMTExLCAKKyAgICAyNDksIDE4NiwgMjUzLCAyMzgsIDIyOCwgNTcsIDIxOCwgNzcsIDE3NywgMTI4LCAxMTEsIDIyNiwgMTUwLCAyMjYsIDIzMSwgCisgICAgMjM2LCAxNSwgMjI2LCAyMzEsIDIzMCwgODcsIDI0MSwgMjAwLCAyNDksIDE5NiwgMjMxLCAxMzcsIDIzNSwgMjA4LCAyMTEsIAorICAgIDE0NSwgMjI5LCAyMDIsIDIyOCwgNTgsIDQ0LCAyNTQsIDExMCwgMiwgMjU0LCAyNSwgNDQsIDIxNSwgMjI1LCAyMzAsIDI0LCAKKyAgICAyMzIsIDE0NiwgMjU0LCAxMTgsIDIzMCwgMjQsIDIzMiwgMTQ2LCAyMjYsIDE1OCwgMjMwLCAyNCwgMjM1LCAxOTgsIDIzMCwgCisgICAgMjQsIDIxNCwgMTc1LCAyNDcsIDI0OSwgMjI2LCAxNjcsIDU5LCAyMjYsIDE2NywgMjE4LCAxNTcsIDIyNiwgMTY3LCAyNDcsIAorICAgIDE2OSwgMjE2LCA4NSwgMjUxLCAxNjQsIDQzLCAyMjgsIDU3LCAyNDQsIDE4MSwgMjIwLCAxNDksIDIyNCwgMTgwLCA0NCwgCisgICAgMjI4LCA1NywgMjQ0LCAxODEsIDIyMCwgMTQ5LCAyMjQsIDE4MCwgNDMsIDIyMCwgMTQ5LCAyMjQsIDE4MCwgNDQsIDIyMCwgCisgICAgMTQ5LCAyMjQsIDE4MCwgMjIzLCA0OSwgMjE2LCA4OSwgMjQ1LCA5NywgMjQ5LCA5OSwgMjMyLCAxNDYsIDIyNiwgMTU4LCAKKyAgICAyNDksIDk5LCAyMzIsIDE0NiwgMjU0LCAxMTgsIDUyLCAyMTgsIDYzLCA1MiwgMjE4LCAyMSwgNTIsIDIzNSwgMTk4LCA1MiwgCisgICAgMjE0LCAxNzUsIDIyNSwgNDcsIDEyOCwgMjIsIDIyNiwgOCwgMTExLCAyMzMsIDE1LCAyLCAyNDcsIDEyMCwgMjQyLCAxMzAsIAorICAgIDIsIDI0NywgMTIwLCAyMTMsIDE4NywgMjMwLCA5NywgMjMzLCAxNCwgMjEzLCAxODcsIDIzMCwgOTcsIDI0MiwgMTI5LCAKKyAgICAyMzMsIDE1LCAxMjgsIDIxNiwgNDIsIDE3NywgMjQyLCAxMjksIDI0MiwgMTMwLCAxMjgsIDIxNiwgNDIsIDE3NywgMjMzLCAKKyAgICAxNCwgMTI4LCAyMTYsIDQyLCAxNzcsIDIzMywgMTQsIDEyOCwgMjE2LCA0MiwgMTc3LCAyNDIsIDEyOSwgMTI4LCAyMTYsIAorICAgIDQyLCAxNzcsIDIyNCwgMjAyLCAxMjgsIDIxNiwgNDIsIDE3NywgMjE4LCA1NSwgMjQ3LCAxMzgsIDIyOCwgNTIsIDIyNCwgCisgICAgMjA2LCAxNzcsIDI0NSwgOTksIDI0NywgMTM4LCAyMjgsIDUyLCAyMTgsIDU4LCAxNzcsIDI0NSwgOTksIDIyOCwgNTIsIDQyLCAKKyAgICAyMzYsIDE1LCA2NCwgMTc3LCAxMjgsIDExMSwgMjI4LCA1MiwgNDIsIDIyNiwgMTUwLCA2NCwgMTc3LCAxMjgsIDExMSwgNDIsIAorICAgIDIzNiwgMTUsIDY0LCAxNzcsIDIyOCwgNTIsIDEyOCwgMTExLCA0MiwgMjI2LCAxNTAsIDY0LCAxNzcsIDIyOCwgNTIsIDEyOCwgCisgICAgMTExLCAyMzMsIDE1LCAyNTEsIDg4LCAyMjgsIDUyLCAyNDUsIDk0LCAxMTEsIDI0MiwgMTMwLCAyNTEsIDg4LCAyMjgsIDUyLCAKKyAgICAyNDUsIDk0LCAxMTEsIDIyNCwgMjAzLCAyNTEsIDg4LCAyMjgsIDUyLCAyNDUsIDk0LCAxMTEsIDIxOCwgNTYsIDI1MSwgODgsIAorICAgIDIyOCwgNTIsIDI0NSwgOTQsIDExMSwgMjI4LCA1MiwgMjI4LCA1NywgMjE4LCA3NywgMjI2LCAyMzEsIDI0NywgMTM4LCAKKyAgICAyMjgsIDUyLCAyNDksIDE4OCwgMjUzLCAyMzgsIDIyOCwgNTcsIDIxOCwgNzYsIDIyOCwgNTIsIDIyOCwgNTcsIDIxOCwgNzcsIAorICAgIDY0LCAxNzcsIDEyOCwgMTExLCAyNDcsIDEzOCwgMjI4LCA1MiwgMjQ5LCAxODgsIDI1MywgMjM4LCAyMjgsIDU3LCAyMTgsIAorICAgIDc3LCAxNzcsIDI0NSwgOTksIDY3LCAyNDUsIDE2MywgMjMwLCAyMjIsIDIwMywgMjQ1LCAxNjMsIDEyMCwgNDQsIDI0NywgCisgICAgMjU1LCAyNDUsIDE2MywgMTI0LCA0NCwgMjQ3LCAyNTUsIDI0NSwgMTYzLCAyNDUsIDE3MCwgNjQsIDIsIDE5OSwgMjAzLCAKKyAgICA5MSwgMjQ1LCAxNzAsIDY0LCAyLCA2NywgMjUyLCAxNDEsIDI1MywgMjA3LCAyNDUsIDE0MywgNjQsIDIwMywgOTEsIDQsIAorICAgIDI0NSwgMTcwLCA2NCwgMiwgNjcsIDI1MiwgMTQxLCAyNTMsIDIwNywgMjQ1LCAxNDMsIDY0LCAyMDMsIDkxLCAyNDUsIDE3MCwgCisgICAgNjQsIDIsIDU5LCA0OCwgMjQ1LCAxNzAsIDY0LCAyLCAyMjYsIDEyMywgNCwgMjQ1LCAxNzAsIDY0LCAyLCAyMjYsIDEyMywgCisgICAgMjQ1LCAxNzAsIDY0LCAyLCAyMTQsIDE4MywgMjQ1LCAxNzAsIDY0LCAyLCAxMTMsIDIwMywgMjE4LCA5MCwgMjQ5LCAxODYsIAorICAgIDIsIDE5OSwgMjAzLCA5MSwgMjQ5LCAxODYsIDIsIDY3LCAyNTIsIDE0MSwgMjUzLCAyMDcsIDI0NSwgMTQzLCA2NCwgMjAzLCAKKyAgICA5MSwgNCwgMjQ5LCAxODYsIDIsIDY3LCAyNTIsIDE0MSwgMjUzLCAyMDcsIDI0NSwgMTQzLCA2NCwgMjAzLCA5MSwgMjQ5LCAKKyAgICAxODYsIDIsIDIyNiwgMTIzLCA0LCAyNDksIDE4NiwgMiwgMjI2LCAxMjMsIDIxMCwgMTYwLCAxODcsIDI1MiwgMTczLCAyMzEsIAorICAgIDYxLCAyNDcsIDI1MCwgNTAsIDI0NSwgMTcyLCA3NCwgMjQwLCAyMzQsIDEyMCwgMjUzLCAyNDksIDEyNCwgMjUzLCAyNDksIAorICAgIDIyNCwgMTc1LCAyMjUsIDE2NSwgMjEyLCAzMiwgMjMyLCAyMTMsIDQzLCAyNTAsIDE4MSwgNDQsIDI1MCwgMTgxLCA0MywgCisgICAgMjQ0LCA1NywgNDQsIDI0NCwgNTcsIDI1MSwgMTc1LCA0NCwgMjQ5LCAxMzIsIDI1MSwgMTc1LCA0MywgMjQ5LCAxMzIsIAorICAgIDIxNiwgMTQsIDQ0LCAyNDksIDEzMiwgMjE2LCAxNCwgNDMsIDI0OSwgMTMyLCAyMjMsIDQ5LCAyMjgsIDUyLCA1MCwgNDIsIAorICAgIDIzMiwgMTA0LCAyNTQsIDI1LCAyMjEsIDE2NCwgMjIxLCAxNzEsIDIxNywgMSwgMjIzLCAxMjAsIDIyNCwgMjQxLCAyMzUsIAorICAgIDIzOCwgMjEzLCAxNjUsIDIxOCwgMjM0LCAyMjUsIDQxLCA2NCwgMjM1LCAyMDcsIDUwLCAyMTUsIDk0LCAyMjgsIDUyLCA1MCwgCisgICAgMjEyLCA0MiwgMjQwLCAyMzYsIDIxNiwgMTQsIDQzLCAyNDksIDE2MCwgMjE2LCAxNCwgNDQsIDI0OSwgMTYwLCAyNTEsIAorICAgIDE3NSwgNDMsIDI0OSwgMTYwLCAyNTEsIDE3NSwgNDQsIDI0OSwgMTYwLCAyMTYsIDE0LCAxNjMsIDIzNSwgMjExLCAyNTEsIAorICAgIDE3NSwgMTYzLCAyMzUsIDIxMSwgMjQzLCAyNDAsIDIxOSwgNzUsIDEyMCwgMjUzLCAyNTAsIDI1MiwgMjQsIDExMywgMjAzLCAKKyAgICAyNTIsIDEyOSwgMjI2LCAxNjAsIDIzNCwgMTM4LCAyNDUsIDkwLCAyMTYsIDQyLCAyMTYsIDE5NiwgMjIyLCAyNTEsIDIxMSwgCisgICAgMTc5LCAyMzYsIDAsIDExNSwgMjIzLCAxMTcsIDI1MSwgMTYzLCAyMzQsIDEzNywgMjMzLCA0MiwgMjU0LCAxMTAsIDEyNywgCisgICAgMjIyLCAyNDcsIDI1NCwgMTEwLCAxMjcsIDI0NSwgOTAsIDIxNiwgNDIsIDIxNiwgMTk2LCAyMzMsIDQ2LCAyNTIsIDM1LCAKKyAgICAyMjIsIDIzMywgMjQ5LCA3MCwgMjU0LCAxNTUsIDI1NCwgMSwgMjE3LCAxODEsIDIxNiwgNCwgMjIyLCAxMjMsIDI0NywgCisgICAgMjE1LCAyMjYsIDE1MSwgMjQ5LCAxOTgsIDIxNywgNTIsIDIxOSwgODYsIDI0OSwgMTUxLCAyNDksIDE1MCwgMjU0LCA2NiwgCisgICAgMjQzLCAyMjUsIDE2LCAyNDAsIDE1MSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMTgsIDIyOCwgMjI0LCAyNywgMjU0LCAKKyAgICA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyNDUsIDk5LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDI0NywgCisgICAgMTc0LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDI0NywgMjQ4LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIAorICAgIDIyNCwgMjgsIDIzNSwgNTYsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjUwLCAzNSwgMjU0LCA2NiwgMjQzLCAKKyAgICAyMjUsIDE2LCAyNTAsIDM2LCAyMTgsIDEzNSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNTAsIDM2LCAyMzUsIDU2LCAyNTQsIAorICAgIDY2LCAyNDMsIDIyNSwgMTYsIDIxOSwgOTYsIDEzMCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNTIsIDE4MSwgMTMwLCAKKyAgICAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDIxOSwgOTUsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgCisgICAgMjUyLCAxODAsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjMzLCAxNCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAKKyAgICAyMjQsIDI4LCAyNDIsIDEyOSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAxNDAsIDIxNCwgMTksIDI1NCwgNjYsIDI0MywgCisgICAgMjI1LCAxNiwgOTcsIDIxNCwgMTksIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMTQwLCA3NCwgMjU0LCA2NiwgCisgICAgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCA5NywgNzQsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjUwLCAzNiwgMjUyLCAxODAsIAorICAgIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTI0LCAyMTcsIDg4LCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAKKyAgICAyNDgsIDU1LCAyMTgsIDEzNSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAxMjQsIDI1MCwgMjM4LCAyNTQsIAorICAgIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDI0OCwgNTQsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTI0LCAyMTcsIDg4LCAKKyAgICAyMzUsIDU2LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIxNCwgMTUzLCAyMTQsIDE5LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIAorICAgIDIyNCwgMjgsIDIxNCwgMTUzLCA3NCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAxMjAsIDIxNywgODgsIDIyNiwgMTIzLCAKKyAgICAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI0OCwgNjYsIDIxOCwgMTM1LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIAorICAgIDEyMCwgMjUwLCAyMzgsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjQ4LCA2NSwgMjU0LCA2NiwgMjQzLCAKKyAgICAyMjUsIDE2LCAxMjAsIDIxNywgODgsIDIzNSwgNTYsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjQ2LCAxMDQsIDIxNCwgMTksIAorICAgIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjQ2LCAxMDQsIDc0LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyMywgCisgICAgMjUzLCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNDgsIDU1LCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAKKyAgICAyMjUsIDE2LCAyNDcsIDI0OSwgMjE0LCAxODMsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjM1LCA1NywgMjE0LCAxODMsIAorICAgIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjUwLCAzNiwgMjE0LCAxODMsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTIwLCAKKyAgICAyMjAsIDUsIDIzNSwgNTYsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjIzLCAyNTMsIDIyNCwgMjcsIDI1NCwgNjYsIDI0MywgCisgICAgMjI1LCAxNiwgMjUwLCAzNiwgMjE4LCAxNTYsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjQ5LCAyMjYsIAorICAgIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTIwLCAyMTcsIDg4LCAyNDgsIDEsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjQ4LCAKKyAgICA2NiwgMjQ4LCAxLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIxOCwgMTU3LCAyNDgsIDEsIDI1NCwgNjYsIDI0MywgMjI1LCAKKyAgICAxNiwgMjM1LCA1NywgMjQ4LCAxLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI1MCwgMzYsIDI0OCwgMSwgMjU0LCA2NiwgCisgICAgMjQzLCAyMjUsIDE2LCAxMjQsIDIyMCwgNSwgMjE4LCAxMzUsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgNDMsIDIyMCwgNSwgCisgICAgMjE4LCAxMzUsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjE2LCA4OSwgMjQ4LCAxLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIAorICAgIDI0MiwgMTMwLCAyNDgsIDEsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjQ5LCAyMjAsIDEzMCwgMjU0LCA2NiwgMjQzLCAKKyAgICAyMjUsIDE2LCAyNDgsIDY2LCAxODIsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjEwLCAzNCwgMjU0LCA2NiwgMjQzLCAyMjUsIAorICAgIDE2LCAyMTgsIDEzNiwgMTgyLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyMCwgMTUxLCAyMTQsIDE4MywgMjU0LCA2NiwgCisgICAgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyMjgsIDUyLCAyNDUsIDk5LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIAorICAgIDIyNCwgMTIsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTI0LCAyNTAsIDIzOSwgMTgyLCAyNTQsIDY2LCAyNDMsIDIyNSwgCisgICAgMTYsIDEyMCwgMjUwLCAyMzksIDE4MiwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMzUsIDE4NSwgMjU0LCA2NiwgMjQzLCAKKyAgICAyMjUsIDE2LCAyMjMsIDM3LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNiwgMjAxLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIAorICAgIDI1NCwgMTQ0LCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNDUsIDEwMSwgMjE0LCAxODMsIDI1NCwgNjYsIAorICAgIDI0MywgMjI1LCAxNiwgMjM1LCAxODYsIDIxNCwgMTgzLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNiwgMjAyLCAyMTQsIAorICAgIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNTQsIDE0MywgMjI4LCA1MiwgMjUwLCAxMzAsIDc4LCA0NCwgMjU0LCAKKyAgICAxMTAsIDIsIDI0NiwgMTA0LCAyMTAsIDM1LCA3NCwgMjE5LCAyMzUsIDIwNCwgMjUxLCAxNjMsIDI1MiwgNDUsIDg3LCA2NywgCisgICAgMjMyLCAyMTQsIDIsIDIzMCwgMjI0LCAyNDcsIDEyMCwgMjM1LCAyMTYsIDg3LCAyNDksIDE4MywgMjE0LCAxODEsIDg3LCAKKyAgICAyNDcsIDE4OSwgMjE0LCAxODEsIDg3LCAyNDUsIDE1NCwgODcsIDI0OSwgMjEwLCA4NywgNzEsIDQyLCAyLCAyNTAsIDE3NSwgCisgICAgNjcsIDIzMiwgMjEzLCAyNDUsIDEzMCwgODcsIDI1NCwgMTM5LCAyMzQsIDEzOSwgODcsIDI0MSwgMjEzLCA4NywgMzcsIAorICAgIDIwMywgMjUyLCAxNDEsIDIsIDIyOCwgNTAsIDM3LCAyMTUsIDIyNiwgMjQ2LCAxMDYsIDI1MSwgMTM1LCAyNTAsIDM2LCAyLCAKKyAgICAyMjgsIDU0LCA3NCwgMjE0LCAxNzksIDg3LCAyMzAsIDEzNywgODcsIDI0MCwgMTY0LCA4NywgMjI2LCAxNzQsIDI0MiwgNTksIAorICAgIDg3LCAyMjYsIDE3NCwgMjMzLCAxNDcsIDg3LCAyMjUsIDI0NCwgODcsIDIyNSwgMjQzLCA4NywgMjQ3LCAxOTcsIDI0OSwgCisgICAgOTcsIDE2LCAyNDQsIDIwLCAxMDUsIDIxOSwgNTAsIDg3LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjcsIDI0OCwgCisgICAgODMsIDIyMCwgMTM4LCAyMzQsIDEzOSwgODcsIDIyNCwgMTkyLCAyMjYsIDc1LCAyMjksIDgyLCAyMjYsIDc1LCAyMjQsIAorICAgIDE4OCwgMjIxLCAxODksIDg3LCAyNTAsIDE3LCAyMjEsIDE4OSwgODcsIDQzLCAyMjYsIDQsIDIxNCwgMTYwLCAxMDMsIDQzLCAKKyAgICAyMjYsIDQsIDI0NSwgMjEsIDQzLCAyMjYsIDQsIDIzMiwgMTA4LCAxMDMsIDQ0LCAyMjYsIDQsIDIxNCwgMTYwLCAxMDMsIAorICAgIDQ0LCAyMjYsIDQsIDI0NSwgMjEsIDQ0LCAyMjYsIDQsIDIzMiwgMTA4LCAxMDMsIDQzLCA0MiwgMjUxLCAxNTgsIDIxNCwgCisgICAgMTYwLCAyNDksIDE2MCwgNDMsIDQyLCAyNTEsIDE1OCwgMjQ1LCAyMSwgNDMsIDQyLCAyNTEsIDE1OCwgMjMyLCAxMDgsIAorICAgIDI0OSwgMTYwLCA0NCwgNDIsIDI1MSwgMTU4LCAyMTQsIDE2MCwgMjQ5LCAxNjAsIDQ0LCA0MiwgMjUxLCAxNTgsIDI0NSwgCisgICAgMjEsIDQ0LCA0MiwgMjUxLCAxNTgsIDIzMiwgMTA4LCAyNDksIDE2MCwgNDMsIDI0OSwgOTksIDI1MSwgMTU4LCAyMTQsIAorICAgIDE2MCwgMTAzLCA0MywgMjQ5LCA5OSwgMjUxLCAxNTgsIDIzMCwgMjI0LCAyMjUsIDEwMSwgNDMsIDI0OSwgOTksIDI1MSwgCisgICAgMTU4LCAyMzIsIDEwOCwgMTAzLCAyNDksIDk5LCAyNTEsIDE1OCwgMjQ1LCAyMSwgNDQsIDI0OSwgOTksIDI1MSwgMTU4LCAKKyAgICAyMTQsIDE2MCwgMTAzLCA0NCwgMjQ5LCA5OSwgMjUxLCAxNTgsIDIzMCwgMjI0LCAyMjUsIDEwMSwgNDQsIDI0OSwgOTksIAorICAgIDI1MSwgMTU4LCAyMzIsIDEwOCwgMTAzLCAyMzUsIDIxMiwgMjQ1LCAyMSwgMjAzLCAyMzIsIDIxNCwgMjQ1LCAyMSwgMjE0LCAKKyAgICAxNjAsIDQzLCAxNzcsIDIzMiwgMTA4LCA0NCwgMjQ5LCA5OSwgMjUxLCAxNTgsIDIyMSwgMTcyLCAyMTQsIDE2MCwgNDQsIAorICAgIDE3NywgMjMyLCAxMDgsIDQzLCAyNDksIDk5LCAyNTEsIDE1OCwgMjIxLCAxNzIsIDIxOCwgNDEsIDIxNiwgMTMsIDIxOCwgCisgICAgNDEsIDI1MSwgMTc0LCAyMTYsIDE0LCA0MiwgMTI3LCAyNTEsIDE3NSwgNDIsIDEyNywgMjUxLCAxNzUsIDQyLCAyNTEsIAorICAgIDE1OCwgMTE3LCAyMTYsIDE0LCA0MiwgMTI3LCAzNCwgMTYsIDI1MSwgMTc0LCA0MywgNjcsIDkzLCAyMzIsIDIxMywgNDQsIAorICAgIDY3LCA5MywgMjMyLCAyMTMsIDIwMywgMjIxLCAyMDUsIDIzMiwgMjEyLCAyMDMsIDIyMSwgMjA1LCAyMzIsIDIxMSwgMjAzLCAKKyAgICAyMjEsIDIwNSwgMjMyLCAyMTAsIDIwMywgMjIxLCAyMDUsIDIzMiwgMjA5LCAyNDgsIDQ2LCAxNiwgMTkyLCA2NywgMjIsIAorICAgIDIxNiwgMTQsIDIyMiwgMjUxLCAyNDgsIDQ2LCAxNiwgMTkyLCA2NywgMjIsIDI1MSwgMTc1LCAyMjIsIDI1MSwgMjQ4LCA0NiwgCisgICAgMTYsIDE5MiwgNjcsIDIsIDI1MCwgMzUsIDI0OCwgNDYsIDE2LCAxOTIsIDEyNCwgMjIsIDIwMywgMiwgMjUwLCAzNSwgMjQ4LCAKKyAgICA0NiwgMTYsIDE5MiwgMTIwLCAyMiwgMjAzLCAyLCAyNTAsIDM1LCAyNDgsIDQ2LCAxNiwgMTkyLCA2NywgMiwgMjE1LCAyMjUsIAorICAgIDI0OCwgNDYsIDE2LCAxOTIsIDEyNCwgMjIsIDIwMywgMiwgMjE1LCAyMjUsIDI0OCwgNDYsIDE2LCAxOTIsIDEyMCwgMjIsIAorICAgIDIwMywgMiwgMjE1LCAyMjUsIDI0OCwgNDYsIDE2LCAxOTIsIDY3LCAyMiwgMjEyLCAzNSwgMjQ4LCA0NiwgMTYsIDE5MiwgCisgICAgMTI0LCAyMiwgMjAzLCAyLCAyMTIsIDM1LCAyNDgsIDQ2LCAxNiwgMTkyLCAxMjAsIDIyLCAyMDMsIDIsIDIxMiwgMzUsIAorICAgIDI0OCwgNDYsIDE2LCAxOTIsIDEyNCwgMjIsIDI0MSwgNDQsIDI0OCwgNDYsIDE2LCAxOTIsIDEyMCwgMjIsIDI0MSwgNDQsIAorICAgIDI0OCwgNDYsIDE2LCAxOTIsIDY3LCAyMiwgMjE2LCAxNCwgMjMzLCA0NiwgMjQ4LCA0NiwgMTYsIDE5MiwgNjcsIDIyLCAKKyAgICAyNTEsIDE3NSwgMjMzLCA0NiwgNDIsIDI0NCwgMzIsIDIyMywgNTQsIDg3LCAyNDUsIDE4MiwgODcsIDY3LCAyMzIsIDIxNCwgCisgICAgMjQ1LCAyMSwgMjMxLCAzMywgMjUxLCAxNDYsIDIzMSwgMzMsIDE5OSwgMTE3LCAyMTksIDI1MCwgMjMxLCAzMywgMjE5LCAKKyAgICAyNTEsIDExNywgMjMyLCAxMzcsIDIzMSwgMzMsIDE5OSwgMTE3LCAxMTMsIDIxOSwgMjM3LCAyMzEsIDMzLCAxMTMsIDIxOSwgCisgICAgMjM4LCAxMTcsIDIzMiwgMTM3LCAyMzEsIDMzLCAxMTMsIDIxOSwgMjM4LCAyMzUsIDY0LCAyMzEsIDMzLCAyMTUsIDIwOCwgCisgICAgMjMxLCAzMywgMjE2LCAyMjMsIDIzMSwgMzMsIDIyNSwgMTg4LCAyNDUsIDIyNCwgMjQyLCAxMjIsIDI0MywgMjE5LCAyMTYsIAorICAgIDE0LCAyMjYsIDMsIDI1MSwgMTc1LCAyMjYsIDMsIDIxNiwgMTQsIDI0OSwgOTksIDEyNywgMjUxLCAxNzUsIDI0OSwgOTksIAorICAgIDEyNywgMjE2LCAxNCwgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDI1MSwgMTc1LCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgNzEsIAorICAgIDIxNSwgMjM5LCAyNTIsIDM1LCAyMjIsIDIzNCwgMiwgMjUwLCAzNSwgMjE4LCAxMjAsIDI0NCwgNjQsIDI1NSwgMTcsIDI0OSwgCisgICAgOTYsIDI0NSwgMTcxLCAyMzUsIDE5OCwgMjQ4LCA4MywgMjQ1LCAyNCwgODcsIDg1LCAyMjIsIDI0NywgNTIsIDIxNSwgMjI1LCAKKyAgICA4NSwgMjMzLCA0MiwgNTIsIDIxNSwgMjI1LCA4NSwgMjE0LCAxNjIsIDUyLCAyMTUsIDIyNSwgODUsIDI0NiwgMTA1LCA1MiwgCisgICAgMjE1LCAyMjUsIDg1LCAyMjIsIDI0NywgNTIsIDIxNSwgMjI2LCAyLCA2NywgMTMwLCA4NSwgMjMzLCA0MiwgNTIsIDIxNSwgCisgICAgMjI2LCAyLCA2NywgMTMwLCA4NSwgMjIyLCAyNDcsIDIxNSwgMjI2LCAyLCA1MiwgNjcsIDEzMCwgMjU0LCAxNzMsIDI1MCwgCisgICAgMywgMjE4LCAxMjYsIDIxNiwgODYsIDI1MCwgMywgMjQwLCAyMzcsIDIsIDI0NCwgNTAsIDIyMSwgMjQxLCAxNiwgMzEsIAorICAgIDIyNywgMjAyLCAxNiwgMzEsIDIxOCwgMTUyLCA2NCwgMjQxLCAyMzMsIDE2LCAzMSwgMjE4LCAxNTIsIDY0LCAyMTYsIDIxMiwgCisgICAgMTYsIDMxLCAyNDUsIDE0MywgNjQsIDIxNiwgMjEyLCAxNiwgMzEsIDI0NSwgMTQzLCA2NCwgMjE1LCAyNDMsIDE2LCAzMSwgCisgICAgMjQ1LCAxMzIsIDE2LCAzMSwgMjU1LCA3LCAxNiwgMzEsIDI1MiwgNDQsIDE2LCAzMSwgMjUyLCAxNzksIDE2LCAzMSwgMjAzLCAKKyAgICAyMTcsIDg5LCAxNiwgMzEsIDIzMiwgMjE0LCAyNDQsIDE0NSwgMTYsIDMxLCA2NywgMjE3LCA4OSwgMTYsIDMxLCAyNDQsIAorICAgIDIwLCAyNDQsIDE0NSwgMTYsIDMxLCAyNTAsIDIzMCwgMjIzLCA1MywgMTYsIDMxLCAyMjAsIDI4LCAyMjYsIDEzMCwgMTYsIAorICAgIDMxLCAyMjAsIDI4LCAyMzUsIDI1NSwgMTYsIDMxLCAyNDgsIDE1MSwgMjMyLCAyMDQsIDI0NSwgNzcsIDE2LCAzMSwgMjQ4LCAKKyAgICAzMSwgMjQ5LCAxNzgsIDExMCwgMTYsIDMxLCAyNDgsIDMxLCAyNDksIDE3OCwgMTA1LCAxNiwgMzEsIDI0OCwgMzEsIDI0OSwgCisgICAgMTc4LCAxNTgsIDE2LCAzMSwgMjQ4LCAzMSwgMjQ5LCAxNzgsIDE2MSwgMTYsIDMxLCAxNTIsIDI1NSwgNywgMTYsIDMxLCAKKyAgICAyMTcsIDE3NywgMjM2LCA2MiwgMTYsIDMxLCAyNDUsIDE0MywgNjQsIDIxNSwgMjQ0LCAyNTEsIDIxMywgMTYsIDMxLCAyNTEsIAorICAgIDUsIDE2LCAzMSwgMjQ1LCAxNDMsIDY0LCAyMzEsIDgxLCAxNiwgMzEsIDIxOCwgNjEsIDE2LCAzMSwgMjQ1LCA3NywgMTYsIAorICAgIDMxLCAyNDQsIDEwNywgMjIwLCAxMzcsIDE2LCAzMSwgMjQyLCAxMjEsIDIyMCwgMTM3LCAxNiwgMzEsIDIyMywgMTIxLCAKKyAgICAyMjAsIDEzNywgMTYsIDMxLCAyMTQsIDE3NCwgMjIwLCAxMzcsIDE2LCAzMSwgMjE5LCAxOCwgMTYsIDMxLCAyNDgsIDYzLCAKKyAgICAyNTEsIDIxNiwgODcsIDIwNCwgMjUxLCAxNjMsIDE2LCAzMSwgMjI5LCA4NSwgMTYsIDMxLCAyNDgsIDY0LCAyNDQsIDIwLCAKKyAgICAxMDUsIDE2LCAzMSwgMjE4LCA2MiwgMjQ0LCAyMCwgMTA1LCAyMjYsIDI0MSwgMTAzLCAyMjYsIDI0MSwgMjUwLCAxNTIsIAorICAgIDIyNiwgMjQxLCAyNDQsIDIzLCAyMjYsIDI0MSwgMjM1LCAxOTMsIDI0NCwgMjMsIDIyNiwgMjQxLCAyNTIsIDQyLCAyNTEsIAorICAgIDEyNCwgMjI2LCAyNDEsIDI1MSwgMTcwLCAyMTYsIDExMSwgMjI2LCAyNDEsIDI1MSwgMTU1LCAyNTIsIDE0NiwgMjQwLCAKKyAgICAxMDMsIDIyNiwgMjQxLCAyNTQsIDEyNywgNjQsIDI1MCwgMTI5LCAyMjYsIDI0MSwgMjQ4LCAxNTYsIDIyNiwgMjQxLCAyNDksIAorICAgIDg3LCAyNTUsIDExLCAyMjcsIDIwMCwgMjI2LCAyNDEsIDUyLCAyNTIsIDE4MCwgMzcsIDIxLCAxMTAsIDM3LCAyMSwgMTA1LCAKKyAgICAzNywgMjEsIDE1OCwgMzcsIDIxLCAxNjEsIDM3LCAyMSwgMTg5LCAzNywgMjEsIDE5NCwgMzcsIDIxLCAxOTgsIDM3LCAyMSwgCisgICAgMTk1LCAzNywgMjEsIDIwMCwgMzcsIDU0LCAyMTYsIDI0NywgMzcsIDU0LCAyNDUsIDE2NywgMzcsIDU0LCAyMTUsIDc2LCAKKyAgICAzNywgNTQsIDIxNiwgMTY0LCAzNywgNTQsIDI0NCwgNSwgMzcsIDU0LCAyNDQsIDExOCwgMzcsIDU0LCAyMTksIDExOSwgMzcsIAorICAgIDU0LCAyMjAsIDExOSwgMzcsIDU0LCAyNDUsIDE5MCwgMzcsIDU0LCAyMjgsIDE5NywgMzcsIDU0LCAyMTUsIDczLCA4OCwgCisgICAgMjEsIDExMCwgODgsIDIxLCAxMDUsIDg4LCAyMSwgMTU4LCA4OCwgMjEsIDE2MSwgODgsIDIxLCAxODksIDg4LCAyMSwgMTk0LCAKKyAgICA4OCwgMjEsIDE5OCwgODgsIDIxLCAxOTUsIDg4LCAyMSwgMjAwLCA4OCwgNTQsIDIxNiwgMjQ3LCA4OCwgNTQsIDI0NSwgCisgICAgMTY3LCA4OCwgNTQsIDIxNSwgNzYsIDg4LCA1NCwgMjE2LCAxNjQsIDg4LCA1NCwgMjQ0LCA1LCA4OCwgNTQsIDI0NCwgMTE4LCAKKyAgICA4OCwgNTQsIDIxOSwgMTE5LCA4OCwgNTQsIDIyMCwgMTE5LCA4OCwgNTQsIDI0NSwgMTkwLCA4OCwgNTQsIDIyOCwgMTk3LCAKKyAgICA4OCwgNTQsIDIxNSwgNzMsIDIxLCAxMjMsIDI0MywgMjI5LCAyMTgsIDEyOSwgMjEsIDExMywgMjQzLCAyMjksIDIxOCwgCisgICAgMTI5LCAyMSwgMTM0LCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAyNDQsIDExLCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAKKyAgICAyNDQsIDgxLCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAyMTksIDEyNSwgMjQzLCAyMjksIDIxOCwgMTI5LCAyMSwgMjIwLCAKKyAgICAxMjIsIDI0MywgMjI5LCAyMTgsIDEyOSwgMjEsIDI0NSwgMTkzLCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAyMjgsIDIwMCwgCisgICAgMjQzLCAyMjksIDIxOCwgMTI5LCA1NCwgMjE2LCAyNDgsIDI0MywgMjI5LCAyMTgsIDEyOSwgNTQsIDI0NSwgMTY4LCAyNDMsIAorICAgIDIyOSwgMjE4LCAxMjksIDU0LCAyMTUsIDc3LCAyNDMsIDIyOSwgMjE4LCAxMjksIDU0LCAyMTYsIDE2NSwgMjQzLCAyMjksIAorICAgIDIxOCwgMTI5LCA1NCwgMjQ0LCA2LCAyNDMsIDIyOSwgMjE4LCAxMjksIDU0LCAyNDQsIDExOSwgMjQzLCAyMjksIDIxOCwgCisgICAgMTI5LCA1NCwgMjE5LCAxMjAsIDI0MywgMjI5LCAyMTgsIDEyOSwgNTQsIDIyMCwgMTIwLCAyNDMsIDIyOSwgMjE4LCAxMjksIAorICAgIDU0LCAyNDUsIDE5MSwgMjQzLCAyMjksIDIxOCwgMTI5LCA1NCwgMjI4LCAxOTgsIDI0MywgMjI5LCAyMTgsIDEyOSwgNTQsIAorICAgIDIxNSwgNzQsIDI0MywgMjI5LCAyMTgsIDEyOSwgODgsIDcsIDQsIDEsIDYxLCA4OCwgNywgNCwgMSwgMjUzLCAxNTgsIDg4LCAKKyAgICA3LCA0LCAxLCAyNTEsIDY2LCA4OCwgNywgNCwgMSwgMjQ5LCA2MCwgODgsIDcsIDQsIDEsIDc1LCA4OCwgNywgNCwgMSwgCisgICAgMjQ1LCA2LCA4OCwgNywgNCwgMSwgMjQzLCAyMDIsIDg4LCA3LCA0LCAxLCAyNDIsIDYwLCA4OCwgNywgNCwgMSwgNzMsIDg4LCAKKyAgICA3LCA0LCAxLCAyMzUsIDE0NCwgODgsIDcsIDQsIDEsIDIzNSwgMjMsIDg4LCA3LCA0LCAxLCAxNTYsIDg4LCA3LCA0LCAxLCAKKyAgICAxOTMsIDg4LCA3LCA0LCAxLCAyMzAsIDI1LCA4OCwgNywgNCwgMSwgNzYsIDg4LCA3LCA0LCAxLCAyMjYsIDEwNSwgODgsIDcsIAorICAgIDQsIDEsIDIyNCwgOTYsIDg4LCA3LCA0LCAxLCAxNTMsIDg4LCA3LCA0LCAxLCAyMjIsIDkxLCA4OCwgNywgNCwgMSwgMjE3LCAKKyAgICAxNTIsIDg4LCA3LCA0LCAxLCA3MCwgODgsIDcsIDQsIDEsIDIxNCwgMTA1LCA4OCwgNywgNCwgMSwgMjEyLCA5OCwgODgsIDcsIAorICAgIDQsIDEsIDIxMSwgMTc4LCA4OCwgNywgNCwgMSwgMjExLCAxMTcsIDg4LCA3LCA0LCAxLCAyMTAsIDE1OSwgMzcsIDcsIDYsIAorICAgIDEsIDYxLCAzNywgNywgNiwgMSwgMjUzLCAxNTgsIDM3LCA3LCA2LCAxLCAyNTEsIDY2LCAzNywgNywgNiwgMSwgMjQ5LCA2MCwgCisgICAgMzcsIDcsIDYsIDEsIDc1LCAzNywgNywgNiwgMSwgMjQ1LCA2LCAzNywgNywgNiwgMSwgMjQzLCAyMDIsIDM3LCA3LCA2LCAxLCAKKyAgICAyNDIsIDYwLCAzNywgNywgNiwgMSwgNzMsIDM3LCA3LCA2LCAxLCAyMzUsIDE0NCwgMzcsIDcsIDYsIDEsIDIzNSwgMjMsIAorICAgIDM3LCA3LCA2LCAxLCAxNTYsIDM3LCA3LCA2LCAxLCAxOTMsIDM3LCA3LCA2LCAxLCAyMzAsIDI1LCAzNywgNywgNiwgMSwgCisgICAgNzYsIDM3LCA3LCA2LCAxLCAyMjYsIDEwNSwgMzcsIDcsIDYsIDEsIDIyNCwgOTYsIDM3LCA3LCA2LCAxLCAxNTMsIDM3LCA3LCAKKyAgICA2LCAxLCAyMjIsIDkxLCAzNywgNywgNiwgMSwgMjE3LCAxNTIsIDM3LCA3LCA2LCAxLCA3MCwgMzcsIDcsIDYsIDEsIDIxNCwgCisgICAgMTA1LCAzNywgNywgNiwgMSwgMjEyLCA5OCwgMzcsIDcsIDYsIDEsIDIxMSwgMTc4LCAzNywgNywgNiwgMSwgMjExLCAxMTcsIAorICAgIDM3LCA3LCA2LCAxLCAyMTAsIDE1OSwgMzcsIDcsIDQsIDEsIDYxLCAzNywgNywgNCwgMSwgMjUzLCAxNTgsIDM3LCA3LCA0LCAKKyAgICAxLCAyNTEsIDY2LCAzNywgNywgNCwgMSwgMjQ5LCA2MCwgMzcsIDcsIDQsIDEsIDc1LCAzNywgNywgNCwgMSwgMjQ1LCA2LCAKKyAgICAzNywgNywgNCwgMSwgMjQzLCAyMDIsIDM3LCA3LCA0LCAxLCAyNDIsIDYwLCAzNywgNywgNCwgMSwgNzMsIDM3LCA3LCA0LCAKKyAgICAxLCAyMzUsIDE0NCwgMzcsIDcsIDQsIDEsIDIzNSwgMjMsIDM3LCA3LCA0LCAxLCAxNTYsIDM3LCA3LCA0LCAxLCAxOTMsIAorICAgIDM3LCA3LCA0LCAxLCAyMzAsIDI1LCAzNywgNywgNCwgMSwgNzYsIDM3LCA3LCA0LCAxLCAyMjYsIDEwNSwgMzcsIDcsIDQsIAorICAgIDEsIDIyNCwgOTYsIDM3LCA3LCA0LCAxLCAxNTMsIDM3LCA3LCA0LCAxLCAyMjIsIDkxLCAzNywgNywgNCwgMSwgMjE3LCAKKyAgICAxNTIsIDM3LCA3LCA0LCAxLCA3MCwgMzcsIDcsIDQsIDEsIDIxNCwgMTA1LCAzNywgNywgNCwgMSwgMjEyLCA5OCwgMzcsIDcsIAorICAgIDQsIDEsIDIxMSwgMTc4LCAzNywgNywgNCwgMSwgMjExLCAxMTcsIDM3LCA3LCA0LCAxLCAyMTAsIDE1OSwgMzcsIDIxLCAKKyAgICAyMTAsIDg2LCAxNTIsIDM3LCA1NCwgMjQ1LCAxNjcsIDE1MiwgMzcsIDU0LCAyMTUsIDc2LCAxNTIsIDM3LCA1NCwgMjE2LCAKKyAgICAxNjQsIDE1MiwgMzcsIDU0LCAyNDQsIDUsIDE1MiwgMzcsIDU0LCAyNDQsIDExOCwgMTUyLCAzNywgNTQsIDIxOSwgMTE5LCAKKyAgICAxNTIsIDM3LCA1NCwgMjIwLCAxMTksIDE1MiwgMzcsIDU0LCAyNDUsIDE5MCwgMTUyLCAzNywgNTQsIDIyOCwgMTk3LCAxNTIsIAorICAgIDM3LCA1NCwgMjE1LCA3MywgNTIsIDM3LCAyMSwgMTEwLCA1MiwgMzcsIDIxLCAxMDUsIDUyLCAzNywgMjEsIDE1OCwgNTIsIAorICAgIDM3LCAyMSwgMTYxLCA1MiwgMzcsIDIxLCAxODksIDUyLCAzNywgMjEsIDE5NCwgNTIsIDM3LCAyMSwgMTk4LCA1MiwgMzcsIAorICAgIDIxLCAxOTUsIDUyLCAzNywgMjEsIDIwMCwgNTIsIDM3LCA1NCwgMjE2LCAyNDcsIDE1MiwgMzcsIDIxLCAyMTAsIDg2LCA5MywgCisgICAgOTksIDE5MiwgMjQxLCA0NCwgOTMsIDk5LCAxMTQsIDI0MSwgNDQsIDkzLCA5OSwgMTkyLCAyMTMsIDIzOSwgOTMsIDk5LCAKKyAgICAxMTQsIDIxMywgMjM5LCA5MywgOTksIDE5MiwgMjE1LCAyMTEsIDI0OCwgMTU3LCAyNDEsIDQ0LCA5MywgOTksIDExNCwgCisgICAgMjE1LCAyMTEsIDI0OCwgMTU3LCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgMjE1LCAyMTEsIDI0OCwgMTU3LCAyMTMsIDIzOSwgCisgICAgOTMsIDk5LCAxMTQsIDIxNSwgMjExLCAyNDgsIDE1NywgMjEzLCAyMzksIDkzLCA5OSwgMTkyLCAyMjQsIDI0LCAyNDgsIAorICAgIDE1NywgMjQxLCA0NCwgOTMsIDk5LCAxMTQsIDIyNCwgMjQsIDI0OCwgMTU3LCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgMjI0LCAKKyAgICAyNCwgMjQ4LCAxNTcsIDIxMywgMjM5LCA5MywgOTksIDExNCwgMjI0LCAyNCwgMjQ4LCAxNTcsIDIxMywgMjM5LCA5MywgOTksIAorICAgIDE5MiwgMTI0LCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgMTI0LCAxOTIsIDIyLCA0NCwgMjQxLCAyMjEsIDkzLCA5OSwgMTI0LCAKKyAgICAxMTQsIDIyLCA0NCwgMjMyLCAyMzAsIDkzLCA5OSwgMTE0LCAxMjQsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCAxOTIsIDEyNCwgCisgICAgMjIsIDIzMywgNDYsIDkzLCA5OSwgMTI0LCAxOTIsIDIyLCA0MywgMjQxLCAyMjEsIDkzLCA5OSwgMTI0LCAxMTQsIDIyLCAKKyAgICA0MywgMjMyLCAyMzAsIDkzLCA5OSwgMTE0LCAxMjQsIDIyLCAyMzMsIDQ2LCA5MywgOTksIDE5MiwgMTIwLCAyMiwgMjIyLCAKKyAgICAyNTEsIDkzLCA5OSwgMTIwLCAxOTIsIDIyLCA0NCwgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCA0NCwgMjMyLCAKKyAgICAyMzAsIDkzLCA5OSwgMTE0LCAxMjAsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCAxOTIsIDEyMCwgMjIsIDIzMywgNDYsIDkzLCAKKyAgICA5OSwgMTIwLCAxOTIsIDIyLCA0MywgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCA0MywgMjMyLCAyMzAsIDkzLCAKKyAgICA5OSwgMTE0LCAxMjAsIDIyLCAyMzMsIDQ2LCA5MywgOTksIDE5MiwgNjcsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCA2NywgCisgICAgMTkyLCAyMiwgNDQsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTE0LCAyMiwgNDQsIDEyNCwgMjMyLCAyMzAsIDkzLCA5OSwgCisgICAgMTI0LCAxMTQsIDIyLCA0NCwgMTIwLCAyMzIsIDIzMCwgOTMsIDk5LCA2NywgMTE0LCAyMiwgNDQsIDIzMiwgMjMwLCA5MywgCisgICAgOTksIDEyNCwgMTkyLCAyMiwgNDQsIDEyMCwgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxOTIsIDIyLCA0NCwgMTI0LCAyNDEsIAorICAgIDIyMSwgOTMsIDk5LCAxMTQsIDY3LCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgMTkyLCA2NywgMjIsIDIzMywgNDYsIDkzLCA5OSwgCisgICAgNjcsIDE5MiwgMjIsIDQzLCAyNDEsIDIyMSwgOTMsIDk5LCAxMjAsIDExNCwgMjIsIDQzLCAxMjQsIDIzMiwgMjMwLCA5MywgCisgICAgOTksIDEyNCwgMTE0LCAyMiwgNDMsIDEyMCwgMjMyLCAyMzAsIDkzLCA5OSwgNjcsIDExNCwgMjIsIDQzLCAyMzIsIDIzMCwgCisgICAgOTMsIDk5LCAxMjQsIDE5MiwgMjIsIDQzLCAxMjAsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTkyLCAyMiwgNDMsIDEyNCwgCisgICAgMjQxLCAyMjEsIDkzLCA5OSwgMTE0LCA2NywgMjIsIDIzMywgNDYsIDkzLCA5OSwgMTkyLCAxMjQsIDIyLCAyNDEsIDQ0LCAKKyAgICA5MywgOTksIDQzLCAxMTQsIDIyLCA0NCwgMTI0LCAyMzIsIDIzMCwgOTMsIDk5LCA0NCwgMTE0LCAyMiwgNDMsIDEyNCwgCisgICAgMjMyLCAyMzAsIDkzLCA5OSwgMTI0LCAxOTIsIDIyLCAyMDMsIDI0MSwgMjIxLCA5MywgOTksIDEyNCwgMTE0LCAyMiwgMjAzLCAKKyAgICAyMzIsIDIzMCwgOTMsIDk5LCA0NCwgMTkyLCAyMiwgNDMsIDEyNCwgMjQxLCAyMjEsIDkzLCA5OSwgNDMsIDE5MiwgMjIsIAorICAgIDQ0LCAxMjQsIDI0MSwgMjIxLCA5MywgOTksIDExNCwgMTI0LCAyMiwgMjQxLCA0NCwgOTMsIDk5LCAxOTIsIDEyMCwgMjIsIAorICAgIDI0MSwgNDQsIDkzLCA5OSwgNDMsIDExNCwgMjIsIDQ0LCAxMjAsIDIzMiwgMjMwLCA5MywgOTksIDQ0LCAxMTQsIDIyLCA0MywgCisgICAgMTIwLCAyMzIsIDIzMCwgOTMsIDk5LCAxMjAsIDE5MiwgMjIsIDIwMywgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCAKKyAgICAyMDMsIDIzMiwgMjMwLCA5MywgOTksIDQ0LCAxOTIsIDIyLCA0MywgMTIwLCAyNDEsIDIyMSwgOTMsIDk5LCA0MywgMTkyLCAKKyAgICAyMiwgNDQsIDEyMCwgMjQxLCAyMjEsIDkzLCA5OSwgMTE0LCAxMjAsIDIyLCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgNjcsIAorICAgIDIyLCAyNDEsIDQ0LCA5MywgOTksIDQzLCAxMTQsIDIyLCA0NCwgNjcsIDIzMiwgMjMwLCA5MywgOTksIDQ0LCAxMTQsIDIyLCAKKyAgICA0MywgNjcsIDIzMiwgMjMwLCA5MywgOTksIDY3LCAxOTIsIDIyLCAyMDMsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTE0LCAKKyAgICAyMiwgMTI0LCAyMDMsIDIzMiwgMjMwLCA5MywgOTksIDEyNCwgMTE0LCAyMiwgMTIwLCAyMDMsIDIzMiwgMjMwLCA5MywgOTksIAorICAgIDY3LCAxMTQsIDIyLCAyMDMsIDIzMiwgMjMwLCA5MywgOTksIDQzLCAxMjAsIDExNCwgMjIsIDQ0LCAxMjQsIDIzMiwgMjMwLCAKKyAgICA5MywgOTksIDQ0LCAxMjAsIDExNCwgMjIsIDQzLCAxMjQsIDIzMiwgMjMwLCA5MywgOTksIDQzLCAxMjQsIDExNCwgMjIsIAorICAgIDQ0LCAxMjAsIDIzMiwgMjMwLCA5MywgOTksIDQ0LCAxMjQsIDExNCwgMjIsIDQzLCAxMjAsIDIzMiwgMjMwLCA5MywgOTksIAorICAgIDEyNCwgMTkyLCAyMiwgMTIwLCAyMDMsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTkyLCAyMiwgMTI0LCAyMDMsIDI0MSwgCisgICAgMjIxLCA5MywgOTksIDQ0LCAxOTIsIDIyLCA0MywgNjcsIDI0MSwgMjIxLCA5MywgOTksIDQzLCAxOTIsIDIyLCA0NCwgNjcsIAorICAgIDI0MSwgMjIxLCA5MywgOTksIDExNCwgNjcsIDIyLCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgNTIsIDI0OCwgMTU3LCAyNDEsIAorICAgIDQ0LCA5MywgOTksIDExNCwgNTIsIDI0OCwgMTU3LCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgNTIsIDI0OCwgMTU3LCAyMTMsIAorICAgIDIzOSwgOTMsIDk5LCAxMTQsIDUyLCAyNDgsIDE1NywgMjEzLCAyMzksIDkzLCA5OSwgNTIsIDI0MSwgNDQsIDkzLCA5OSwgCisgICAgNTIsIDIxMywgMjM5LCA5MywgOTksIDEyNCwgMjE5LCAxNTUsIDIyLCA0NCwgMjQ2LCAxMTMsIDkzLCA5OSwgMTI0LCA1MiwgCisgICAgMjIsIDQ0LCAyMTksIDE1NCwgOTMsIDk5LCA1MiwgMTI0LCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgMTI0LCAyMTksIDE1NSwgCisgICAgMjIsIDQzLCAyNDYsIDExMywgOTMsIDk5LCAxMjQsIDUyLCAyMiwgNDMsIDIxOSwgMTU0LCA5MywgOTksIDUyLCAxMjQsIDIyLCAKKyAgICAyMzMsIDQ2LCA5MywgOTksIDEyMCwgMjE5LCAxNTUsIDIyLCA0NCwgMjQ2LCAxMTMsIDkzLCA5OSwgMTIwLCA1MiwgMjIsIAorICAgIDQ0LCAyMTksIDE1NCwgOTMsIDk5LCA1MiwgMTIwLCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgMTIwLCAyMTksIDE1NSwgMjIsIAorICAgIDQzLCAyNDYsIDExMywgOTMsIDk5LCAxMjAsIDUyLCAyMiwgNDMsIDIxOSwgMTU0LCA5MywgOTksIDUyLCAxMjAsIDIyLCAKKyAgICAyMzMsIDQ2LCA5MywgOTksIDY3LCAyMTksIDE1NSwgMjIsIDQ0LCAyNDYsIDExMywgOTMsIDk5LCA2NywgNTIsIDIyLCA0NCwgCisgICAgMjE5LCAxNTQsIDkzLCA5OSwgNTIsIDY3LCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgNjcsIDIxOSwgMTU1LCAyMiwgNDMsIAorICAgIDI0NiwgMTEzLCA5MywgOTksIDY3LCA1MiwgMjIsIDQzLCAyMTksIDE1NCwgOTMsIDk5LCA1MiwgNjcsIDIyLCAyMzMsIDQ2LCAKKyAgICA5MywgOTksIDEyNCwgMjE5LCAxNTUsIDIyLCAyMDMsIDI0NiwgMTEzLCA5MywgOTksIDEyNCwgNTIsIDIyLCAyMDMsIDIxOSwgCisgICAgMTU0LCA5MywgOTksIDUyLCAxMjQsIDIyLCAyNDEsIDQ0LCA5MywgOTksIDEyMCwgMjE5LCAxNTUsIDIyLCAyMDMsIDI0NiwgCisgICAgMTEzLCA5MywgOTksIDEyMCwgNTIsIDIyLCAyMDMsIDIxOSwgMTU0LCA5MywgOTksIDUyLCAxMjAsIDIyLCAyNDEsIDQ0LCAKKyAgICA5MywgOTksIDY3LCAyMTksIDE1NSwgMjIsIDIwMywgMjQ2LCAxMTMsIDkzLCA5OSwgNjcsIDUyLCAyMiwgMjAzLCAyMTksIAorICAgIDE1NCwgOTMsIDk5LCA1MiwgNjcsIDIyLCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgMjU0LCAyNiwgMTI0LCAyMiwgMjIyLCAKKyAgICAyNTEsIDkzLCA5OSwgMTkyLCAyNTQsIDI2LCAxMjQsIDIyLCAyMzMsIDQ2LCA5MywgOTksIDE5MiwgMjU0LCAyNiwgMTIwLCAKKyAgICAyMiwgMjMzLCA0NiwgOTMsIDk5LCAxOTIsIDI1NCwgMjYsIDEyMCwgMjIsIDIyMiwgMjUxLCA5MywgOTksIDE5MiwgMjQ3LCAKKyAgICAyNTUsIDIxNCwgMTYwLCA0NCwgMjE2LCA0MiwgMjMyLCAxMDgsIDIzMywgNDYsIDkzLCA5OSwgMTkyLCAyNDcsIDI1NSwgCisgICAgMjE0LCAxNjAsIDQzLCAyMTYsIDQyLCAyMzIsIDEwOCwgMjIyLCAyNTEsIDkzLCA5OSwgMTkyLCAyNDcsIDI1NSwgMjQ5LCAKKyAgICAxMzAsIDkzLCA5OSwgMTkyLCAyMzMsIDQ2LCA5MywgOTksIDE5MiwgMjE0LCAxNjMsIDkzLCA5OSwgMTkyLCAyMjIsIDI1MSwgCisgICAgOTMsIDk5LCAxOTIsIDI0NiwgMTA2LCA5MywgOTksIDExNCwgMjMzLCA0NiwgOTMsIDk5LCAxMTQsIDIxNCwgMTYzLCA5MywgCisgICAgOTksIDExNCwgMjIyLCAyNTEsIDkzLCA5OSwgMTE0LCAyNDYsIDEwNiwgOTMsIDk5LCAxOTIsIDQzLCAyMiwgMTE0LCAyMjIsIAorICAgIDI1MSwgOTMsIDk5LCAxOTIsIDEyMCwgMjIsIDExNCwgMjQ2LCAxMDYsIDkzLCA5OSwgMTE0LCA0MywgMjIsIDE5MiwgMjIyLCAKKyAgICAyNTEsIDkzLCA5OSwgMTE0LCAxMjAsIDIyLCAxOTIsIDI0NiwgMTA2LCAyMTQsIDE2MCwgMTYzLCAyNTEsIDIxMywgMjMyLCAKKyAgICAxMDgsIDEyMywgMjQ1LCAxODksIDI1MSwgMjEzLCAyMzIsIDEwOCwgMTIzLCAyMjQsIDIyLCAyNTEsIDIxMywgMjMyLCAxMDgsIAorICAgIDEzNCwgMjQ1LCAxODcsIDI1MSwgMjEzLCAyMzIsIDEwOCwgMTYzLCAyNTEsIDIxMywgMjMyLCAxMDgsIDI0NCwgODEsIDI0NSwgCisgICAgMTg3LCAyNTEsIDIxMywgMjMyLCAxMDgsIDEzNCwgMjI0LCAyMCwgMjUxLCAyMTMsIDIzMiwgMTA4LCAyMjAsIDEyMiwgMjQ1LCAKKyAgICAxODcsIDI1MSwgMjEzLCAyNDMsIDIyOSwgMjUxLCAyMTMsIDQzLCAyMjAsIDEyMiwgMjQ1LCAxODcsIDI1MSwgMjEzLCA0MywgCisgICAgMTM0LCAyMjQsIDIwLCAyNTEsIDIxMywgNDMsIDI0NCwgODEsIDI0NSwgMTg3LCAyNTEsIDIxMywgNDMsIDE2MywgMjUxLCAKKyAgICAyMTMsIDQzLCAxMzQsIDI0NSwgMTg3LCAyNTEsIDIxMywgNDMsIDEyMywgMjI0LCAyMiwgMjUxLCAyMTMsIDQzLCAxMjMsIAorICAgIDI0NSwgMTg5LCAyNTEsIDIxMywgNDQsIDE2MywgMjUxLCAyMTMsIDE5MiwgMjIwLCA5MiwgMjMxLCA4MiwgMjIwLCA5MiwgCisgICAgMjQ4LCAxNjIsIDIyMCwgOTIsIDIxNCwgMTYwLCAxMjMsIDI0NSwgMTg5LCAyNTEsIDIxMywgNDQsIDEyMywgMjQ1LCAxODksIAorICAgIDI1MSwgMjEzLCAyMjQsIDI2LCAyMzIsIDEwOCwgMjMzLCA0NiwgMjI0LCAyNiwgMjMyLCAxMDgsIDIyMiwgMjUxLCAyMjQsIAorICAgIDI2LCAyMTQsIDE2MCwgMjMzLCA0NiwgMjI0LCAyNiwgMjE0LCAxNjAsIDQzLCAyMiwgMjMyLCAxMDgsIDQzLCAyMiwgMjMyLCAKKyAgICAxMDgsIDIyMiwgMjUxLCAyMjQsIDI2LCAyMTQsIDE2MCwgNDMsIDIyLCAyMzIsIDEwOCwgMjIyLCAyNTEsIDIyNCwgMjYsIAorICAgIDIxNCwgMTYwLCA0MywgMjIsIDIxNCwgMTYwLCA0NCwgMjIsIDIzMiwgMTA4LCAyMzMsIDQ2LCAyMjQsIDI2LCAyMTQsIDE2MCwgCisgICAgNDMsIDIyLCAyMTQsIDE2MCwgNDQsIDIyLCAyMzIsIDEwOCwgMjIyLCAyNTEsIDIyNCwgMjYsIDIxNCwgMTYwLCAyMjIsIAorICAgIDI1MSwgMjI0LCAyNiwgMjE0LCAxNjAsIDQ0LCAyMiwgMjMyLCAxMDgsIDIzMywgNDYsIDIyNCwgMjYsIDIxNCwgMTYwLCA0NCwgCisgICAgMjIsIDIzMiwgMTA4LCA0MywgMjIsIDIzMiwgMTA4LCAyMjIsIDI1MSwgODUsIDIxOCwgMjM0LCA3MSwgMjE4LCAyMzQsIDcxLCAKKyAgICA0MiwgMiwgMjIyLCAxODMsIDI0OSwgMTU5LCA3MSwgNDIsIDI0OSwgMTg3LCA4NSwgNCwgMjE4LCAyMzQsIDQyLCAyLCAyMDMsIAorICAgIDI0NCwgMTA1LCA0MiwgMiwgNjcsIDI0NCwgMTA1LCA0MiwgMiwgMjI2LCAxNDQsIDI0OSwgMTI2LCAyNDQsIDEwNSwgNDIsIAorICAgIDIsIDIxNCwgMTYwLCA0MywgMjE2LCA0MiwgMjMyLCAxMDgsIDQ0LCAyNDQsIDEwNSwgNDIsIDIsIDIxNCwgMTYwLCA0NCwgCisgICAgMjE2LCA0MiwgMjMyLCAxMDgsIDQzLCAyNDQsIDEwNSwgNDIsIDIsIDI0NywgMjU1LCAyNDksIDEyNiwgMjQ0LCAxMDUsIDg1LCAKKyAgICA0LCAyMTgsIDIzNCwgNzEsIDQsIDIxOCwgMjM0LCA4NSwgMjIzLCAxMTYsIDcxLCAyMjMsIDExNiwgODUsIDY3LCAyMjMsIAorICAgIDExNiwgNzEsIDY3LCAyMjMsIDExNiwgODUsIDIyNiwgNiwgNzEsIDIyNiwgNiwgODUsIDIxNCwgMTYyLCAyMTUsIDIyNSwgCisgICAgNzEsIDIxNCwgMTYyLCAyMTUsIDIyNSwgODUsIDIxNCwgMTYyLCA0LCAyMTUsIDIyNSwgNzEsIDIxNCwgMTYyLCA0LCAyMTUsIAorICAgIDIyNSwgODUsIDIyMiwgMjQ3LCAyMTUsIDIyNSwgNzEsIDIyMiwgMjQ3LCAyMTUsIDIyNSwgODUsIDIyMiwgMjQ3LCA0LCAKKyAgICAyMTUsIDIyNSwgNzEsIDIyMiwgMjQ3LCA0LCAyMTUsIDIyNSwgODUsIDIyMiwgMjQ3LCAyMjUsIDgsIDcxLCAyMjIsIDI0NywgCisgICAgMjI1LCA4LCA4NSwgMjQ2LCAxMDUsIDIxNSwgMjI1LCA3MSwgMjQ2LCAxMDUsIDIxNSwgMjI1LCA4NSwgMjQ2LCAxMDUsIDQsIAorICAgIDIxNSwgMjI1LCA3MSwgMjQ2LCAxMDUsIDQsIDIxNSwgMjI1LCA4NSwgMjMzLCA0MiwgMjE1LCAyMjUsIDcxLCAyMzMsIDQyLCAKKyAgICAyMTUsIDIyNSwgODUsIDIzMywgNDIsIDQsIDIxNSwgMjI1LCA3MSwgMjMzLCA0MiwgNCwgMjE1LCAyMjUsIDg1LCAyMzMsIAorICAgIDQyLCAyMjUsIDgsIDcxLCAyMzMsIDQyLCAyMjUsIDgsIDg1LCAyNDcsIDI0OCwgNzEsIDI0NywgMjQ4LCA3MSwgMjQ3LCAKKyAgICAyNDksIDI0OSwgMTg3LCA4NSwgNCwgMjQ3LCAyNDgsIDI0NCwgODksIDIzMiwgMTA0LCA3MSwgMjUwLCAzNSwgMjQ2LCAxMTgsIAorICAgIDI1MCwgMzUsIDI1MCwgMzYsIDIsIDY3LCAyNDQsIDEwNSwgMjUxLCAxMTEsIDg1LCAyNTAsIDM1LCAyNTAsIDM2LCAyLCA0MywgCisgICAgMTYzLCAyNTEsIDIyMSwgMjUwLCAzNiwgMiwgNDQsIDE2MywgMjUxLCAyMjEsIDI1MCwgMzYsIDIsIDIzMiwgMTA4LCAxNjMsIAorICAgIDI1MSwgMjIxLCAyNTAsIDM2LCAyLCAyMTQsIDE2MCwgMTYzLCAyNTEsIDIyMSwgMjUwLCAzNiwgMiwgMjE0LCAxNjAsIDQ0LCAKKyAgICAyMjQsIDI2LCAyNTEsIDIyMSwgMjUwLCAzNiwgMiwgMjU0LCAxNTUsIDI1MSwgODgsIDIxNCwgMTYwLCA0MywgMjI0LCAyNiwgCisgICAgMjUxLCAyMjEsIDQzLCAxNjMsIDg1LCAyNTAsIDM1LCA0NCwgMTYzLCA4NSwgMjUwLCAzNSwgMjM1LCAxOTQsIDI1MSwgMTEzLCAKKyAgICAyMzUsIDE5NCwgNzEsIDI1MCwgMzUsIDIxNCwgMTYwLCAxNjMsIDIzNSwgMTk0LCA3MSwgMjUwLCAzNSwgMjMyLCAxMDgsIAorICAgIDE2MywgMjM1LCAxOTQsIDcxLCAyNTAsIDM1LCAyMTQsIDE2MCwgNDMsIDIyNCwgMjYsIDI1MCwgMzMsIDI1NCwgMjUsIDIxNCwgCisgICAgMTYwLCA0NCwgMjI0LCAyNiwgMjUwLCAzMywgMjU0LCAyNSwgMjMyLCAxMDgsIDQ0LCAyMjQsIDI2LCAyNTAsIDMzLCAyNTQsIAorICAgIDI1LCAyMzIsIDEwOCwgNDMsIDIyNCwgMjYsIDI1MCwgMzMsIDI1NCwgMjUsIDIxNCwgMTYwLCAxNjMsIDI1MCwgMzUsIDIzMiwgCisgICAgMTA4LCAxNjMsIDI1MCwgMzUsIDg1LCAyMzIsIDEwOCwgNDQsIDIxNSwgMjI1LCA4NSwgMjMyLCAxMDgsIDQzLCAyMTUsIAorICAgIDIyNSwgODUsIDIxNCwgMTYwLCA0MywgMjE1LCAyMjUsIDg1LCAyMTQsIDE2MCwgNDQsIDIxNSwgMjI1LCA3MSwgMjUxLCAKKyAgICAxMTMsIDQyLCAyLCA0MywgMTYzLCAyNTEsIDIyMSwgNDIsIDIsIDQ0LCAxNjMsIDI1MSwgMjIxLCA0MiwgMiwgMjE0LCAxNjAsIAorICAgIDQzLCAyNDcsIDI1NSwgMTYzLCAyNTEsIDIyMSwgNDIsIDIsIDIzMiwgMTA4LCA0NCwgMjQ3LCAyNTUsIDE2MywgMjUxLCAKKyAgICAyMjEsIDcxLCA0MiwgMiwgNjcsIDI1MSwgMjMyLCAyMzIsIDIxMywgNzEsIDIxNCwgMTYyLCAyMTUsIDIyNiwgMiwgMjQ3LCAKKyAgICAxMjAsIDIxNCwgMTYyLCAyMTUsIDIyNiwgMiwgNDMsIDE2MywgMjUxLCAyMjEsIDIxNCwgMTYyLCAyMTUsIDIyNiwgMiwgNDQsIAorICAgIDE2MywgMjUxLCAyMjEsIDIzMywgODUsIDI1MCwgMzUsIDcxLCA0MiwgMiwgMjE0LCAxNjAsIDQzLCAyMjQsIDI1LCA3MSwgCisgICAgNDIsIDIsIDIzMiwgMTA4LCA0MywgMjI0LCAyNSwgNzEsIDQyLCAyLCAyMzIsIDEwOCwgNDQsIDIyNCwgMjUsIDcxLCA0MiwgCisgICAgMiwgMjE0LCAxNjAsIDQ0LCAyMjQsIDI1LCA3MSwgMjUwLCAzNiwgMiwgMjE0LCAxNjAsIDQzLCAyMjQsIDI1LCA3MSwgMjUwLCAKKyAgICAzNiwgMiwgMjMyLCAxMDgsIDQzLCAyMjQsIDI1LCA3MSwgMjUwLCAzNiwgMiwgMjMyLCAxMDgsIDQ0LCAyMjQsIDI1LCA3MSwgCisgICAgMjUwLCAzNiwgMiwgMjE0LCAxNjAsIDQ0LCAyMjQsIDI1LCAyMTQsIDE2MCwgNDMsIDIxNSwgMjI1LCAyMTQsIDE2MCwgNDQsIAorICAgIDIxNSwgMjI1LCAyMzIsIDEwOCwgNDMsIDIxNSwgMjI1LCA3MSwgMjMxLCA4MiwgMjE4LCAyMzQsIDg1LCAyMzEsIDgyLCAKKyAgICAyMTgsIDIzNCwgNzEsIDIzMSwgODIsIDQsIDIxOCwgMjM0LCA4NSwgMjMxLCA4MiwgNCwgMjE4LCAyMzQsIDIzMiwgMTA4LCAKKyAgICA0NCwgMjE1LCAyMjUsIDg1LCAyMTgsIDM4LCAyLCAyMjMsIDEzMiwgMjQ5LCAyNDcsIDIxNCwgMTk0LCAyMTksIDYwLCAyNDksIAorICAgIDIyMiwgODUsIDIxOCwgMTU2LCA3MSwgMjE4LCAxNTYsIDIzMiwgMjI4LCAyMTYsIDEzMiwgMjE4LCAzNywgMjUzLCAyMzQsIAorICAgIDIyOCwgNzEsIDI0OCwgMzgsIDIyOCwgNzEsIDI0OSwgMTk1LCAyMjYsIDE2MywgODUsIDIxNywgMCwgNzEsIDIxNywgMCwgCisgICAgMjUyLCAxNTYsIDI1MSwgMTYzLCAyNTIsIDE1NiwgOTMsIDIsIDI1MCwgMTI5LCAyNTIsIDE1NiwgOTMsIDIsIDIxMSwgMTc4LCAKKyAgICAyMjEsIDI1NCwgMjE0LCAxOTUsIDIsIDIyMywgMTYwLCAyNDYsIDg0LCAyNDAsIDI0MywgMjUyLCAyMiwgNzEsIDIyMCwgMiwgCisgICAgMjI1LCAxMDEsIDg1LCAyMjAsIDIsIDIyNSwgMTAxLCAyMjAsIDg3LCAyMjMsIDQ5LCAyMjIsIDE4NywgMjQ0LCA1NSwgMjQxLCAKKyAgICAyMjgsIDI1MSwgMTEzLCA4NSwgNDMsIDIyNSwgNywgMjM1LCAyNDIsIDg1LCA0NCwgMjI1LCA3LCAyMzUsIDI0MiwgNzEsIAorICAgIDQzLCAyMjUsIDcsIDIzNSwgMjQyLCA3MSwgMTIwLCAyMjUsIDcsIDIzNSwgMjQyLCA3MSwgNDQsIDIyNSwgNywgMjM1LCAKKyAgICAyNDIsIDcxLCAxMjQsIDIyNSwgNywgMjM1LCAyNDIsIDIxOSwgMTAxLCAyMiwgMjQ5LCAxMjksIDI1MCwgMjE5LCA1MCwgCisgICAgMjIzLCAxNzIsIDUwLCAyNTEsIDIzOSwgNTAsIDI1MSwgMjUsIDI1NCwgMTAyLCAyMjYsIDE0NSwgMjQ5LCAxMzAsIDI1MCwgCisgICAgMTExLCAyMjMsIDM3LCAyNDksIDEzMSwgNjQsIDIzMiwgMTE4LCAyNDksIDEzMSwgNjQsIDIzNSwgMTE2LCAyMTgsIDE1NywgCisgICAgMjIsIDI0OSwgMTM2LCAyNDQsIDE2OCwgODcsIDI1NCwgMjQ4LCAyMjAsIDg5LCAyNDIsIDIyLCAyMiwgMjE5LCAxODksIAorICAgIDIyNSwgMjIwLCA4NywgMjEwLCAyNTQsIDIxMSwgNjksIDIxNSwgMjE1LCAzMSwgMjQxLCAyMjMsIDIxNSwgMjE1LCAzMSwgCisgICAgMjMzLCAxMDcsIDIxNSwgMjE1LCAzMSwgMjQ0LCA5NiwgMjE1LCAyMTUsIDMxLCAyMTYsIDEzMywgMjE1LCAyMTUsIDMxLCAKKyAgICAyMTEsIDIzOSwgMjE1LCAyMTUsIDMxLCAyMTIsIDQwLCAyMTUsIDIxNSwgMzEsIDIzMCwgMTE1LCAyMTUsIDIxNSwgMzEsIAorICAgIDI0NSwgMjIzLCAyMTIsIDEsIDY0LCAyNDgsIDE4LCA3MSwgMjQzLCAyMzksIDI0NCwgMTkwLCA3MSwgMjE5LCA3NCwgMjQ0LCAKKyAgICAxOTAsIDg1LCAyMTksIDc0LCAyNDQsIDE5MCwgNzEsIDIxOCwgMzgsIDIsIDIyMywgMTMyLCAyNDQsIDkyLCAyMjQsIDIyLCAKKyAgICAyMzAsIDEyOCwgMjMzLCA4MCwgMjI0LCAyMiwgMjMwLCAxMjgsIDIzMSwgNTQsIDI0NCwgMTM4LCA1MCwgMjQ1LCAyMjMsIAorICAgIDIzMSwgMTkwLCA1MCwgMjM1LCAzOCwgMjIxLCAyMjAsIDIxNCwgMTQ1LCAyMjksIDkzLCAyMjUsIDIwLCAyNTQsIDEyLCAKKyAgICAyMTcsIDQwLCAyNDMsIDUyLCAyNTEsIDMsIDIzMywgMTksIDIxMywgMTUwLCAyMzIsIDIzOCwgMjIxLCAxOTEsIDIyMiwgMTksIAorICAgIDI1MCwgMjQ4LCAyNTQsIDQyLCAyMjUsIDUyLCA3MSwgMjUwLCAxMTcsIDIzNCwgNzgsIDcxLCAyNTAsIDExNywgMjI0LCAxNCwgCisgICAgNzEsIDI1MCwgMTE3LCAyMjIsIDE5NSwgNzEsIDI1MCwgMTE3LCAyNTEsIDIzMSwgNzEsIDI1MCwgMTE3LCAyMzQsIDMwLCAKKyAgICA3MSwgMjUwLCAxMTcsIDIyNSwgMjMxLCA4NSwgMjUwLCAxMTcsIDIzNCwgNzgsIDg1LCAyNTAsIDExNywgMjI0LCAxNCwgODUsIAorICAgIDI1MCwgMTE3LCAyMjIsIDE5NSwgODUsIDI1MCwgMTE3LCAyNTEsIDIzMSwgODUsIDI1MCwgMTE3LCAyMzQsIDMwLCA4NSwgCisgICAgMjUwLCAxMTcsIDIyNSwgMjMxLCA4NSwgMjE5LCAxNiwgMjE4LCA1MCwgNzEsIDI0MSwgMjI4LCAyMTgsIDUwLCA3MSwgMjQ3LCAKKyAgICAyNDksIDIxOCwgNTAsIDg1LCAyNDksIDI0NSwgMjE4LCA1MCwgNzEsIDIxOSwgMTYsIDIxOCwgNTAsIDg1LCAyNDEsIDIyOCwgCisgICAgMjE4LCA1MCwgODUsIDI0NywgMjQ5LCAyMTgsIDUwLCA3MSwgMjQ5LCAyNDUsIDIxOCwgNTAsIDI0MCwgMjQzLCAyMTgsIAorICAgIDIzOCwgMjI0LCAyMiwgMjI4LCA0NywgMjQ1LCAxODksIDIyOCwgNDcsIDI1MiwgNzMsIDI0NSwgMTg5LCAyMjgsIDQyLCAKKyAgICAyNTIsIDczLCAyMTksIDExOCwgMjI4LCA0MiwgMjMwLCA1NywgMjQ0LCA2NiwgNTAsIDIzMCwgNTcsIDIyOSwgMTg4LCA1MCwgCisgICAgMjMwLCA1NywgMjIwLCA3NiwgNTAsIDIxMiwgOSwgMTg4LCAyNDksIDEzMCwgMjQ1LCAyMjAsIDE4OCwgMjQ5LCAxMzAsIAorICAgIDIxNCwgMTcxLCAyMjMsIDExMiwgODcsIDIyMywgMTEyLCAxNiwgMzEsIDIxNSwgNDgsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgCisgICAgMzEsIDIxNSwgNDcsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgMzEsIDIxNSwgNDYsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgCisgICAgMzEsIDIxNSwgNDUsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgMzEsIDIxNSwgNDQsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgCisgICAgMzEsIDIxNSwgNDMsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgMzEsIDIxNSwgNDIsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgCisgICAgMzEsIDI0MywgNTAsIDIzMSwgMTM4LCA4NSwgMjE0LCAxNzEsIDIyMywgMTEyLCA4NywgMjIzLCAxMTMsIDIyNiwgMjAsIDg3LCAKKyAgICAyMjUsIDI1MiwgMjI2LCAyMCwgODcsIDIyNSwgMTc0LCAyMjYsIDIwLCA1MCwgMjExLCAyNTUsIDg3LCAyNDcsIDI0MSwgCisgICAgMjQ0LCAxODksIDI0NywgMjQxLCAyNDQsIDE4OCwgMjQ3LCAyNDEsIDI0NCwgMTg3LCAyNDcsIDI0MSwgMjQ0LCAxODYsIAorICAgIDI0NywgMjQxLCAyNDQsIDE4NSwgMjQ3LCAyNDEsIDI0NCwgMTg0LCA3MSwgMjUwLCAzNiwgMiwgNTksIDIyMiwgMjUxLCA3MSwgCisgICAgMjUwLCAzNiwgMiwgMTEzLCAyNDcsIDExOCwgODUsIDI1MCwgMzYsIDIsIDcxLCA1OSwgMjIyLCAyNTEsIDg1LCAyNTAsIDM2LCAKKyAgICAyLCAxMTMsIDcxLCAyNDcsIDExOCwgMjMwLCAxNDIsIDMxLCAyMTEsIDY5LCAyMzAsIDE0MiwgMzEsIDIxMCwgMjUzLCAyNDcsIAorICAgIDIyNCwgMzEsIDI0MiwgMTMxLCAyMTEsIDY5LCAyNDcsIDIyNCwgMzEsIDIzMywgMTMsIDIxMCwgMjUzLCAyNDcsIDIyNCwgCisgICAgMzEsIDIzMywgMTMsIDIxMSwgNjksIDI0NywgMjI0LCAzMSwgMjQyLCAxMzEsIDIxMCwgMjUzLCA3MSwgMjQ0LCA3MywgODUsIAorICAgIDI0NCwgNzMsIDI0MiwgMjIsIDIyLCAyMjUsIDEwNCwgMjU0LCAxMjAsIDI0OSwgMTI4LCAyMTcsIDIzNSwgMjE4LCAxNjQsIAorICAgIDY0LCAyNTQsIDIyNiwgMjIxLCAyMDYsIDI1NCwgMTY5LCAyNDQsIDUxLCAyNDMsIDYwLCAyMTgsIDE2NCwgNjQsIDI0MSwgCisgICAgMjAyLCAyNTMsIDE5OSwgODcsIDI0NCwgNjIsIDIyNiwgMTI2LCA3MSwgMjE4LCAxNTYsIDEzNCwgMjMyLCAyMDgsIDI0OSwgCisgICAgMTc1LCAyMjIsIDI1MSwgMTM0LCAyMzIsIDIwOCwgMjQ5LCAxNzUsIDIzMywgNDYsIDIxMiwgNTAsIDUwLCAxMjUsIDIxMywgCisgICAgMTMwLCA1MCwgMjQ2LCAxMTAsIDI0NCwgMTM4LCA1MCwgMjQ2LCAxMTAsIDIzMSwgMTkwLCA1MCwgMjM1LCAyMDMsIDI0NCwgCisgICAgMTM4LCAyMiwgMjMxLCAxOTAsIDUwLCAyMzEsIDE5MCwgMjIsIDI0NCwgMTM4LCA1MCwgMjMxLCAxOTAsIDIsIDIxOCwgMTAzLCAKKyAgICA1MCwgMjMxLCAxOTAsIDIsIDIxOCwgMTAzLCAyMiwgMjMxLCAxOTAsIDIyLCAyNDQsIDEzOCwgNTAsIDY3LCAyMzEsIDE5MCwgCisgICAgMiwgMjE4LCAxMDMsIDUwLCAyMDMsIDIzMSwgMTkwLCAyLCAyMTgsIDEwMywgNTAsIDIzMSwgODIsIDcxLCAyNTAsIDM1LCAKKyAgICAyMzEsIDgyLCA4NSwgMjUwLCAzNSwgMjMxLCA4MiwgNCwgNzEsIDI1MCwgMzUsIDIzMSwgMTUzLCA4NywgMjQ3LCAxNjcsIAorICAgIDg3LCAyMTQsIDE2OSwgMjI1LCAyNTEsIDg3LCAyNDksIDIzMSwgMjQzLCAyMjQsIDIxNCwgMTQxLCAyMjksIDg4LCAyNTAsIAorICAgIDE2MSwgMjI2LCA2MSwgMjM1LCA0NCwgMjEzLCAxODUsIDI1MCwgOTMsIDg1LCAyMzAsIDEyOSwgMjMyLCAyMjUsIDIyMCwgCisgICAgMTEyLCAyMjAsIDE0NywgMjI0LCA1LCAyMjAsIDEzMCwgMjE5LCA1NSwgMjUyLCAxNTksIDI1MiwgMTI2LCA5MiwgMjM0LCAKKyAgICAxMzgsIDcxLCAyNDYsIDkzLCAyMzEsIDE4NSwgNzEsIDI0NiwgOTMsIDIzNCwgNzgsIDg1LCAyNDYsIDkzLCAyMzEsIDE4NSwgCisgICAgODUsIDI0NiwgOTMsIDIzNCwgNzgsIDIxOSwgNjEsIDIxMSwgMjMwLCAyMTksIDY0LCAyMTgsIDM4LCAyNTIsIDUxLCAyNDksIAorICAgIDI0NywgMjIzLCAxNTksIDg1LCAyMTksIDYwLCAyMTYsIDEzNCwgMjQ5LCAyNDgsIDIyLCAyMjMsIDE1OSwgMjE1LCA5NCwgCisgICAgNzEsIDIyMCwgMiwgMjI1LCAxMDEsIDIxNSwgOTQsIDg1LCAyMjAsIDIsIDIyNSwgMTAxLCA3MSwgMjQ3LCAyNDksIDIzNiwgCisgICAgMCwgMjE4LCAyMzQsIDI0OSwgMTI1LCAyMzMsIDkxLCAyNDcsIDE5MywgMjUwLCAyNDQsIDIyNiwgMTY2LCAyMjUsIDEwNCwgCisgICAgMjUwLCAyNDUsIDIxOSwgODgsIDI0MSwgMjEyLCAyLCA3MSwgMjQ5LCAxMzAsIDM3LCAyNDksIDEyNSwgMjMzLCA5MSwgMjUwLCAKKyAgICAxNTMsIDIyOCwgNzUsIDI0NSwgMTI0LCAyNTQsIDE0MSwgMjI2LCAxOTEsIDQzLCAyMTIsIDI2LCAyMTUsIDI1MSwgODUsIAorICAgIDIxNSwgNTUsIDQzLCAyMTIsIDI2LCAyMTUsIDI1MSwgNzEsIDIxNSwgNTUsIDQzLCAyMTIsIDI2LCAyMTUsIDI1MSwgODUsIAorICAgIDQzLCAyMzMsIDkyLCAyMzEsIDUzLCA3MSwgNDMsIDIzMywgOTIsIDIzMSwgNTMsIDI0NiwgODksIDIxOSwgODIsIDUwLCAKKyAgICAxMTQsIDcxLCAyNDYsIDEwNSwgMjE1LCAyMjUsIDQzLCAyNTAsIDAsIDI0NSwgMTI0LCA5MiwgMjIxLCAyNTQsIDI0NCwgCisgICAgMTc1LCAyNDcsIDI1NSwgMjM2LCAwLCA3MSwgMjUwLCAzNiwgMjM2LCAwLCA4NSwgMjE4LCAyMzQsIDg1LCAyMTUsIDE5MiwgCisgICAgMjIzLCA2MCwgNDMsIDI0NSwgMTIzLCAyMjMsIDYwLCA0MywgMjQ1LCAxMjIsIDI1MywgMjExLCAxNiwgMzEsIDIxNCwgMTQ1LCAKKyAgICAxMTQsIDI1MCwgMzYsIDIsIDIxOCwgMTAzLCAyMiwgMTEzLCAxNzAsIDQ4LCAyMjUsIDE4OSwgMjIyLCAyNDgsIDIzNSwgCisgICAgMjA1LCAyMjUsIDE4OSwgMjMzLCA0MywgMjM1LCAyMDUsIDIyNSwgMTg5LCAyMzUsIDE5MywgMjI1LCAxODksIDg1LCAyNDksIAorICAgIDEzMSwgMjI2LCAxOTcsIDIyMCwgMjksIDIyMCwgMTcsIDIxOSwgMjI5LCAyNTAsIDYxLCAyNTAsIDIyNiwgMjQxLCAxNTcsIAorICAgIDIxOSwgMTI2LCAyNDMsIDYxLCAyMTEsIDIzMCwgMjQwLCAyMjAsIDI0MywgNjEsIDIsIDI0MiwgMTIsIDIzMSwgMTczLCAxNiwgCisgICAgMzEsIDIzMiwgMjI5LCAyMzAsIDExNSwgMjE0LCAxOTUsIDIyNiwgMTk3LCAyNDIsIDEyMiwgMjQ0LCAxMiwgMjQ0LCA3NCwgCisgICAgMjM2LCAwLCAyNDEsIDU5LCAyNDQsIDEyOSwgMjIyLCAxNCwgNDIsIDI0NCwgMTEsIDI0OSwgMTU5LCAyMTksIDEwNCwgMjQwLCAKKyAgICAxMTIsIDIxOSwgMTA3LCAyMjUsIDE2OCwgMiwgMjUyLCAxNTksIDIxNiwgMjQyLCAyMzUsIDEzMSwgMjUyLCAxNDYsIDg3LCAKKyAgICAyNDEsIDIzMSwgMjQyLCAxMzMsIDg3LCAyNDMsIDIzMiwgMjI0LCAxNDIsIDI0OSwgMTAzLCAyMjYsIDE5NywgODUsIDIxOCwgCisgICAgMjM0LCA3MSwgMjQ0LCA3NCwgMiwgMjAzLCAyMzAsIDIyNCwgODUsIDIxOCwgMTA0LCAyMTQsIDE2MCwgMjUxLCAyMTcsIAorICAgIDIyMSwgMTkzLCA4NSwgMjIxLCAxOTMsIDIzMiwgMTA4LCAyNTEsIDIxNywgMjIxLCAxOTMsIDcxLCAyMjEsIDE5MywgNzEsIAorICAgIDExNCwgMjUwLCAxMzAsIDc4LCAyMTcsIDEsIDIzMiwgMTU0LCA1MCwgMjE3LCA1MywgMjQ2LCA4OCwgMjU0LCAxOTEsIDI0NSwgCisgICAgMTE5LCAyMjMsIDE1NywgMjQ0LCA4NSwgMjIzLCAxNTcsIDI0MiwgMTUsIDIxMywgMTc0LCAyNDIsIDE1LCAyMTEsIDE5OCwgCisgICAgMjQyLCAxNSwgMjMyLCAxMDgsIDQ0LCAyMjUsIDE5OCwgMjI1LCAxOTgsIDIxNCwgMTYwLCA0NCwgMjI1LCAxOTgsIDcxLCAKKyAgICAyMjgsIDIzMCwgODUsIDIyOCwgMjMwLCAyNTAsIDEzMCwgNzgsIDExNCwgMjUwLCAxMzAsIDc4LCAyMzAsIDg0LCAyMTEsIAorICAgIDE3OCwgMTE0LCAyMzAsIDg0LCAyMTEsIDE3OCwgMjUyLCAxNTYsIDIxMSwgMTc4LCAxMTQsIDI1MiwgMTU2LCAyMTEsIDE3OCwgCisgICAgMjI2LCAxMjYsIDI2LCAyNDksIDEzMCwgMTE0LCAyNiwgMjQ5LCAxMzAsIDIwNCwgMjUwLCAxNzUsIDI0OSwgMTMwLCAxMTQsIAorICAgIDIwNCwgMjUwLCAxNzUsIDI0OSwgMTMwLCA3LCAyNDksIDEzMCwgMjIwLCA5MSwgNzEsIDcsIDI0OSwgMTMwLCAyMjYsIDEyNiwgCisgICAgNywgMjQ5LCAxMzAsIDIzMSwgMTg3LCAyNDksIDEzMCwgMjE4LCAxNTcsIDY0LCAyNDgsIDE0OSwgMjQ0LCAxMSwgMjE3LCAKKyAgICAxNSwgMjUzLCAyMTYsIDI0NCwgMTEsIDI1MiwgMTU3LCAyNTMsIDIxNiwgMTE0LCAyNDQsIDExLCAyNTIsIDE1NywgMjUzLCAKKyAgICAyMTYsIDI0NCwgMTEsIDI0OSwgMjQzLCAyNTMsIDIxNiwgODUsIDI0NCwgMTEsIDIyNSwgOSwgMjE4LCAxNTYsIDcxLCAyNDQsIAorICAgIDExLCAyMjUsIDksIDIxOCwgMTU2LCAyMTksIDExLCAyMTgsIDExMSwgMjI2LCAxMjYsIDcxLCAyMTgsIDE1NiwgMzcsIDcxLCAKKyAgICAyMTgsIDE1NiwgMjA0LCAyNTAsIDE3NSwgODUsIDIxOCwgMTU2LCA4NSwgMjUwLCAxNzUsIDcxLCAyMTgsIDE1NiwgMjI2LCAKKyAgICAxMjYsIDg1LCAyMTgsIDE1NiwgMTE0LCAyMjYsIDEyNiwgODUsIDIxOCwgMTU2LCAyMjUsIDYwLCAyMTgsIDE1NiwgMjIwLCAKKyAgICA5MSwgNzEsIDIxOCwgMTU2LCAxMTQsIDI1MywgMjE2LCAyMDQsIDI1MCwgMTc1LCAyNTMsIDIxNiwgMjQ1LCAxOTMsIDIxOCwgCisgICAgMjQ0LCAyNTMsIDIxNiwgMjQ1LCAxOTMsIDIyNSwgOSwgODUsIDIxOCwgMTU2LCAyNDUsIDE5MywgMjI1LCA5LCAyMjUsIDYwLCAKKyAgICAyMTgsIDE1NiwgMjE5LCAxMjUsIDIyNSwgOSwgODUsIDIxOCwgMTU2LCAyNDUsIDE5MywgMjI1LCA5LCAyMjMsIDExNCwgODUsIAorICAgIDIxOCwgMTU2LCAxMTQsIDI0NSwgMTkzLCAyMjUsIDksIDIyMywgMTE0LCA4NSwgMjE4LCAxNTYsIDIxNSwgNzcsIDIyNSwgOSwgCisgICAgODUsIDIxOCwgMTU2LCAyMTksIDEyMCwgMjI1LCA5LCAyNTMsIDIxNiwgMjE3LCAxNSwgMjUzLCAyMTYsIDIwNCwgMjUwLCAKKyAgICAxNzUsIDIxNywgMTUsIDI1MywgMjE2LCAxMTQsIDIxNywgMTUsIDI1MywgMjE2LCAyMTksIDEyNSwgMjI1LCAxNTcsIDg1LCAKKyAgICAyMiwgNzEsIDI0NCwgNTQsIDg1LCAyNDQsIDU0LCA3MSwgMjQ0LCA1NCwgMjQ1LCAxOTMsIDIyNSwgMTU3LCAyMjYsIDEyNiwgCisgICAgODUsIDI0NCwgNTQsIDM3LCAyMDQsIDI1MCwgMTc1LCAyNDUsIDE5MywgMjI1LCA5LCAyMTgsIDE1NiwgMTE0LCAyMTcsIDE1LCAKKyAgICAyMjUsIDYwLCAyNTMsIDIxNiwgMjE5LCA2MiwgMjE2LCAxMDUsIDIxNSwgMjE4LCAyMTksIDYyLCAxMTQsIDI1MCwgMTE0LCAKKyAgICAyMTksIDYyLCAyMTksIDEzLCAxMTQsIDIxOSwgMTMsIDI1MiwgMTU3LCAyNTMsIDIxNiwgMjQ1LCAxOTMsIDIxNywgMTUsIAorICAgIDIyNCwgMTcxLCAyNTMsIDIxNiwgMTE0LCAyNDUsIDE5MywgMjE3LCAxNSwgMjI0LCAxNzEsIDI1MywgMjE2LCAyNDksIDEzMSwgCisgICAgNzgsIDIyMCwgOTEsIDcxLCAyNTAsIDM1LCAxNTIsIDkyLCAyNDksIDEzMSwgNzgsIDIzMiwgMTA4LCA0NCwgMjQ2LCA4NiwgCisgICAgNzEsIDIxOCwgMjM0LCAyMTQsIDE2MCwgNDQsIDI0NiwgODYsIDcxLCAyMTgsIDIzNCwgMjMyLCAxMDgsIDQ0LCAyMjAsIDkxLCAKKyAgICA3MSwgMjE4LCAyMzQsIDIxNCwgMTYwLCA0NCwgMjIwLCA5MSwgNzEsIDIxOCwgMjM0LCA4NSwgMjI0LCAxMywgMTY0LCAyMjYsIAorICAgIDE0NywgNzEsIDIyNCwgMTMsIDE2NCwgMjI2LCAxNDcsIDcxLCAyNDUsIDMxLCAxNjQsIDIyNiwgMTQ3LCA4NSwgMjQ3LCAKKyAgICAyNDksIDIzMCwgMTgyLCA3MSwgMjExLCAxNzgsIDExNCwgMjQ1LCAzMSwgMTY0LCA4NywgMTkyLCA2NywgMTMwLCAyMzEsIAorICAgIDgyLCA2NywgMTMwLCAxMTQsIDY3LCAxMzAsIDExNCwgMjE5LCAxNTUsIDIxNSwgOTQsIDI0OSwgMjIwLCAyMjMsIDI1NCwgCisgICAgMTY0LCAyMjYsIDE0NywgMTE0LCAyMTksIDE1NSwgMjQ5LCAyMjAsIDIyMywgMjU0LCAxNjQsIDIyNiwgMTQ3LCAxMTQsIDUyLCAKKyAgICAyMTUsIDk0LCAyNDksIDIyMCwgMjIzLCAyNTQsIDE2NCwgMjI2LCAxNDcsIDExNCwgNTIsIDI0OSwgMjIwLCAyMjMsIDI1NCwgCisgICAgMTY0LCAyMjYsIDE0NywgMTE0LCAxMjEsIDIxOSwgMTU1LCAyNDksIDIyMCwgMjIzLCAyNTQsIDE2NCwgMjI2LCAxNDcsIAorICAgIDExNCwgMTIxLCA1MiwgMjQ5LCAyMjAsIDIyMywgMjU0LCAxNjQsIDIyNiwgMTQ3LCAyNDksIDkxLCAyMTgsIDE0MCwgMjI2LCAKKyAgICAxNSwgNSwgMjI2LCAxNDcsIDExNCwgMjQ1LCAzMSwgMTY0LCAyMjYsIDE0NywgMTE0LCAyNDEsIDIyOCwgMjQ1LCAzMSwgCisgICAgMTY0LCAyMjYsIDE0NywgMTE0LCA4NSwgMjQxLCAyMjcsIDIyMiwgMTg3LCAxMTQsIDg1LCAyNDEsIDIyOCwgMjUxLCAxMTMsIAorICAgIDI0NCwgNTUsIDI0MSwgMjI3LCAyMjIsIDE4NywgMjQ0LCA1NSwgMjQxLCAyMjgsIDI1MSwgMTEzLCAyMzEsIDgyLCA0MywgCisgICAgMjI2LCA0LCAyMjYsIDE0NywgMjMxLCA4MiwgNDQsIDIyNiwgNCwgMjI2LCAxNDcsIDIzMSwgODIsIDI0NCwgNjMsIDQzLCAKKyAgICAyMjYsIDQsIDIyNiwgMTQ3LCAyMzEsIDgyLCAyNDQsIDYzLCA0NCwgMjI2LCA0LCAyMjYsIDE0NywgMjMxLCA4MiwgMjMzLCAKKyAgICA0MiwgMjU0LCAxMTAsIDI1MSwgMTU4LCAyMjYsIDE0NywgMjMxLCA4MiwgMjIyLCAyNDcsIDI1NCwgMTEwLCAyNTEsIDE1OCwgCisgICAgMjI2LCAxNDcsIDExNCwgMjMzLCA0MiwgMjU0LCAxMTAsIDIyMywgMjU0LCAxNjQsIDIyNiwgMTQ3LCAxMTQsIDIyMiwgMjQ3LCAKKyAgICAyNTQsIDExMCwgMjIzLCAyNTQsIDE2NCwgMjI2LCAxNDcsIDExNCwgMjMzLCA0MiwgMjU0LCAxMTAsIDI1MSwgMTU4LCAyMjYsIAorICAgIDE0NywgMTE0LCAyMjIsIDI0NywgMjU0LCAxMTAsIDI1MSwgMTU4LCAyMjYsIDE0NywgMTkyLCA0MywgMjE2LCA2LCAyMjAsIAorICAgIDUzLCAyNTEsIDE1OCwgMjI2LCAxNDcsIDE5MiwgNDQsIDIxNiwgNiwgMjIwLCA1MywgMjUxLCAxNTgsIDIyNiwgMTQ3LCAKKyAgICAyMzEsIDgyLCA0MywgMjQ5LCA5OSwgMjUxLCAxNTgsIDIyNiwgMTQ3LCAyMzEsIDgyLCA0NCwgMjQ5LCA5OSwgMjUxLCAxNTgsIAorICAgIDIyNiwgMTQ3LCAyNDcsIDIwNCwgMTUyLCAzNywgMjEsIDExMCwgMjQ3LCAyMDQsIDE1MiwgMzcsIDIxLCAxMDUsIDI0NywgCisgICAgMjA0LCAxNTIsIDM3LCAyMSwgMTU4LCAyNDcsIDIwNCwgMTUyLCAzNywgMjEsIDE2MSwgMjQ3LCAyMDQsIDE1MiwgMzcsIDIxLCAKKyAgICAxODksIDI0NywgMjA0LCAxNTIsIDM3LCAyMSwgMTk0LCAyNDcsIDIwNCwgMTUyLCAzNywgMjEsIDE5OCwgMjQ3LCAyMDQsIAorICAgIDE1MiwgMzcsIDIxLCAxOTUsIDI0NywgMjA0LCAxNTIsIDM3LCAyMSwgMjAwLCAyNDcsIDIwNCwgMTUyLCAzNywgNTQsIDIxNiwgCisgICAgMjQ3LCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMTEwLCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMTA1LCAyNDcsIDIwNCwgMzcsIAorICAgIDM1LCAyMSwgMTU4LCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMTYxLCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMTg5LCAyNDcsIAorICAgIDIwNCwgMzcsIDM1LCAyMSwgMTk0LCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMTk4LCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgCisgICAgMTk1LCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMjAwLCAyNDcsIDIwNCwgMzcsIDM1LCA1NCwgMjE2LCAyNDcsIDI0NywgMjA0LCAKKyAgICAxNTIsIDM3LCAzNSwgMjEsIDExMCwgMjQ3LCAyMDQsIDE1MiwgMzcsIDM1LCAyMSwgMTA1LCAyNDcsIDIwNCwgMTUyLCAzNywgCisgICAgMzUsIDIxLCAxNTgsIDI0NywgMjA0LCAxNTIsIDM3LCAzNSwgMjEsIDE2MSwgMjQ3LCAyMDQsIDE1MiwgMzcsIDM1LCAyMSwgCisgICAgMTg5LCAyNDcsIDIwNCwgMTUyLCAzNywgMzUsIDIxLCAxOTQsIDI0NywgMjA0LCAxNTIsIDM3LCAzNSwgMjEsIDE5OCwgMjQ3LCAKKyAgICAyMDQsIDE1MiwgMzcsIDM1LCAyMSwgMTk1LCAyNDcsIDIwNCwgMTUyLCAzNywgMzUsIDIxLCAyMDAsIDI0NywgMjA0LCAxNTIsIAorICAgIDM3LCAzNSwgNTQsIDIxNiwgMjQ3LCAxMTQsIDIxMSwgMjQ2LCA5NywgNzQsIDExNCwgOTYsIDUwLCAxMTQsIDIzMCwgMTgyLCAKKyAgICA1MCwgMTE0LCAyNDcsIDE2OSwgNTAsIDExNCwgMjE5LCAyOCwgMjQ1LCAyMjAsIDc0LCAxMTQsIDk3LCA3NCwgMTE0LCAyMjgsIAorICAgIDU2LCAyNDUsIDIyMCwgNzQsIDI0NiwgOTgsIDIyNSwgMTEsIDk3LCA3NCwgMTE0LCAyMjIsIDE4NCwgOTcsIDc0LCAyMTUsIAorICAgIDIyNCwgOTcsIDc0LCAxMTQsIDIxNSwgMjI0LCA5NywgNzQsIDI0OCwgMTU1LCAyMTUsIDIyNCwgOTcsIDc0LCAxMTQsIDI0OCwgCisgICAgMTU1LCAyMTUsIDIyNCwgOTcsIDc0LCA4NSwgOTcsIDc0LCAyMTYsIDE0NCwgMjE2LCAxMiwgOTcsIDI1MywgMjQ5LCAyMTYsIAorICAgIDE0NCwgMjUxLCAxNzMsIDk3LCAyNTMsIDI0OSwgODUsIDk3LCAyNTMsIDI0OSwgMTE0LCA4NSwgMjQ5LCA5MSwgMjQ2LCAKKyAgICAxMDQsIDIyLCA5NywgNzQsIDExNCwgODUsIDI0OSwgOTEsIDIxNCwgMTUzLCAyMiwgOTcsIDc0LCAyMTgsIDIzMSwgODUsIAorICAgIDk3LCA3NCwgMTE0LCAyNDksIDIwNiwgODUsIDk3LCA3NCwgMjIyLCAyNDYsIDcxLCA5NywgNzQsIDIzMywgNDEsIDcxLCA5NywgCisgICAgNzQsIDI1MiwgMTgzLCAyMjAsIDkxLCA3MSwgOTcsIDc0LCAyNDMsIDI0MSwgMjIwLCA5MSwgNzEsIDk3LCA3NCwgMTE0LCAKKyAgICAyMzIsIDEwOCwgMjIyLCAyNDUsIDcxLCA5NywgNzQsIDExNCwgMjE0LCAxNjAsIDIyMiwgMjQ1LCA3MSwgOTcsIDc0LCAyMjgsIAorICAgIDQ5LCAyMzIsIDEwOCwgMjIyLCAyNDUsIDcxLCA5NywgNzQsIDI0OSwgOTksIDIzMiwgMTIzLCAyMjgsIDQ5LCAyMTQsIDE2MCwgCisgICAgMjIyLCAyNDUsIDcxLCA5NywgNzQsIDM3LCAxMTQsIDcxLCA5NywgNzQsIDIxMSwgMjUyLCA5NywgNzQsIDI1MSwgMjIwLCAKKyAgICAyMTksIDI4LCAyNDUsIDIyMCwgNzQsIDI1MSwgMjIwLCA5NywgNzQsIDI1MSwgMjIwLCAyMjgsIDU2LCAyNDUsIDIyMCwgNzQsIAorICAgIDExNCwgMjUxLCAyMjAsIDIxOSwgMjgsIDI0NSwgMjIwLCA3NCwgMTE0LCAyNTEsIDIyMCwgOTcsIDc0LCAxMTQsIDI1MSwgCisgICAgMjIwLCAyMjgsIDU2LCAyNDUsIDIyMCwgNzQsIDIxNywgMTcsIDk3LCA3NCwgMTE0LCAyMTcsIDE2LCA5NywgNzQsIDIxMiwgCisgICAgMTgsIDk3LCA3NCwgMTE0LCAyMTIsIDE4LCA5NywgNzQsIDIyNiwgMTcyLCA5NywgNzQsIDUyLCAyNDksIDk5LCAyMzIsIAorICAgIDEyMywgMTM0LCAyNDcsIDIxNCwgMjU0LCAxMDksIDcxLCAyMTUsIDIyNiwgMjQ5LCAxODcsIDQsIDcxLCAyMTUsIDIyNSwgCisgICAgMjI1LCAxNzEsIDIwNCwgMjE4LCA2MywgMjA0LCAyMTgsIDIxLCA0MywgMjIyLCA5MCwgMjUyLCAxNzMsIDI0OCwgNjAsIDQ0LCAKKyAgICAyMjIsIDkwLCAyNTIsIDE3MywgMjQ4LCA2MCwgMTc3LCAyLCA1OSwgMjM1LCAyMTUsIDIyMywgNTAsIDIxOSwgNDcsIDIyNCwgCisgICAgMjAxLCAyMTgsIDYzLCAyMTgsIDIyLCAyMjQsIDIwMSwgMjE5LCA0NiwgNjcsIDI1MiwgMTQxLCAyLCAyMDMsIDkxLCAxMSwgCisgICAgMjIyLCAyMjgsIDI0NywgMjU0LCAxOTksIDI0NywgMTY4LCAxMSwgMjQ0LCAxNzUsIDI0NywgMjU0LCA5MiwgMjMyLCAxNDYsIAorICAgIDI1NCwgMTE4LCA5MiwgMjMyLCAxNDYsIDIyNiwgMTU4LCA3MSwgMjQ3LCAyNDksIDIsIDI1MCwgMTczLCAyNDcsIDEyMCwgCisgICAgMjIsIDIsIDI0NywgMTIwLCAyNDUsIDE3MCwgNjQsIDIyNiwgMTcwLCAyMTQsIDE1MiwgMjMyLCAxMDgsIDQ0LCAyNDksIAorICAgIDE2MSwgMiwgMjQ3LCAxMjAsIDIxNCwgMTYwLCA0MywgMjQ5LCAxNjEsIDIsIDI0NywgMTIwLCA0MywgMjI2LCAxMjgsIDIzNSwgCisgICAgNjYsIDQ0LCAyMjYsIDEyOCwgMjM1LCA2NiwgMjQzLCAyMjksIDIyNiwgMTI4LCAyMzUsIDY2LCAyMzMsIDg1LCAxMjAsIAorICAgIDIxNywgODcsIDIzMywgODUsIDEyNCwgMjE3LCA4NywgNDMsIDIyLCA0NCwgNTIsIDIxNSwgOTMsIDQzLCAyMiwgNDQsIDIxNywgCisgICAgODcsIDQzLCAyMzAsIDg3LCAxOTksIDQ0LCAyMTcsIDg3LCAxOTksIDQzLCAyMTcsIDg3LCAxMjAsIDIxNywgODgsIDIsIAorICAgIDI1MCwgMzYsIDQ4LCAyMzIsIDEwNSwgMjQ3LCAxNzMsIDI1MSwgNzgsIDIwMywgMjIyLCAxMzMsIDcxLCAyNDksIDIwNSwgCisgICAgMjQ3LCAyNDgsIDcxLCAyNDksIDIwNSwgMjQ3LCAyNDksIDIsIDE0MCwgMjE2LCAxMTQsIDcxLCAyNDksIDIwNSwgMjQ3LCAKKyAgICAyNDksIDIsIDk3LCAyMTYsIDExNCwgNzEsIDQyLCAyLCAxNDAsIDIxNiwgMTE0LCA3MSwgNDIsIDIsIDk3LCAyMTYsIDExNCwgCisgICAgMTEsIDQzLCA3MSwgNDIsIDEyNywgMTEsIDQ0LCA3MSwgNDIsIDEyNywgMTEsIDQzLCAyNTQsIDExMCwgMTI3LCAxMSwgNDQsIAorICAgIDI1NCwgMTEwLCAxMjcsIDExLCA0MywgNTIsIDI1NCwgMTEwLCAxMjcsIDExLCA0NCwgNTIsIDI1NCwgMTEwLCAxMjcsIDExLCAKKyAgICA0MywgNzEsIDIxNiwgNiwgMjIwLCA1MywgMTI3LCAxMSwgNDQsIDcxLCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgMTEsIDQzLCAKKyAgICAyNDQsIDYzLCAyMjYsIDMsIDExLCA0NCwgMjQ0LCA2MywgMjI2LCAzLCAyMTQsIDE1MywgMjI0LCAyNCwgNzQsIDI0NiwgCisgICAgMTA0LCAyMjQsIDI0LCA3NCwgMjU0LCA4OCwgMjQzLCA5OCwgMjUwLCAzNiwgNzQsIDI1MCwgMiwgMjQzLCA5OCwgMjUwLCAKKyAgICAzNiwgNzQsIDQ0LCA4MCwgMiwgMzcsIDIyNSwgMjIsIDE5OSwgMTQwLCA3NCwgMTk5LCA5NywgNzQsIDE5OSwgNDMsIDQ0LCAKKyAgICA3NCwgMTk5LCAxNDAsIDUyLCA3NCwgMTk5LCA5NywgNTIsIDc0LCAxOTksIDQzLCA0NCwgNTIsIDc0LCAxOTksIDE0MCwgODAsIAorICAgIDI0MywgMjQzLCAxMzAsIDE5OSwgOTcsIDgwLCAyNDMsIDI0MywgMTMwLCAxOTksIDE0MCwgNTIsIDgwLCAyNDMsIDI0MywgCisgICAgMTMwLCAxOTksIDk3LCA1MiwgODAsIDI0MywgMjQzLCAxMzAsIDE5OSwgOTcsIDIxOCwgMjMwLCA3NCwgNDYsIDQ3LCAyNTEsIAorICAgIDIxNSwgNDYsIDQ3LCAyNDcsIDExNywgNDYsIDQ3LCAyNDYsIDI0NSwgNDYsIDQ3LCAyNDcsIDExNiwgNDYsIDQ3LCAyNDYsIAorICAgIDE4MSwgNDYsIDQ3LCAyNDcsIDUyLCA0NiwgNDcsIDI0NiwgMjQ0LCA0NiwgNDcsIDI0NywgMTE1LCA0NiwgNDcsIDI0NiwgCisgICAgMTQ5LCA0NiwgNDcsIDI0NywgMjAsIDQ2LCA0NywgMjQ2LCAyMTIsIDQ2LCA0NywgMjQ3LCA4MywgNDYsIDQ3LCAyNDYsIAorICAgIDE4MCwgNDYsIDQ3LCAyNDcsIDUxLCA0NiwgNDcsIDI0NiwgMjQzLCA0NiwgNDcsIDI0NywgMTE0LCA0NiwgNDcsIDI0NiwgCisgICAgMTMzLCA0NiwgNDcsIDI0NywgNCwgNDYsIDQ3LCAyNDYsIDE5NiwgNDYsIDQ3LCAyNDcsIDY3LCA0NiwgNDcsIDI0NiwgMTY0LCAKKyAgICA0NiwgNDcsIDI0NywgMzUsIDQ2LCA0NywgMjQ2LCAyMjcsIDQ2LCA0NywgMjQ3LCA5OCwgNDYsIDQ3LCAyNDYsIDE0OCwgNDYsIAorICAgIDQ3LCAyNDcsIDE5LCA0NiwgNDcsIDI0NiwgMjExLCA0NiwgNDcsIDI0NywgODIsIDQ2LCA0NywgMjQ2LCAxNzksIDQ2LCA0NywgCisgICAgMjQ3LCA1MCwgNDYsIDQ3LCAyNDYsIDI0MiwgNDYsIDQ3LCAyNDcsIDExMywgNDYsIDQ3LCAyNDYsIDEyNSwgNDYsIDQ3LCAKKyAgICAyNDYsIDI1MiwgNDYsIDQ3LCAyNDYsIDE4OCwgNDYsIDQ3LCAyNDcsIDU5LCA0NiwgNDcsIDI0NiwgMTU2LCA0NiwgNDcsIAorICAgIDI0NywgMjcsIDQ2LCA0NywgMjQ2LCAyMTksIDQ2LCA0NywgMjQ3LCA5MCwgNDYsIDQ3LCAyNDYsIDE0MCwgNDYsIDQ3LCAKKyAgICAyNDcsIDExLCA0NiwgNDcsIDI0NiwgMjAzLCA0NiwgNDcsIDI0NywgNzQsIDQ2LCA0NywgMjQ2LCAxNzEsIDQ2LCA0NywgCisgICAgMjQ3LCA0MiwgNDYsIDQ3LCAyNDYsIDIzNCwgNDYsIDQ3LCAyNDcsIDEwNSwgNDYsIDQ3LCAyNDYsIDEzMiwgNDYsIDQ3LCAKKyAgICAyNDcsIDMsIDQ2LCA0NywgMjQ2LCAxOTUsIDQ2LCA0NywgMjQ3LCA2NiwgNDYsIDQ3LCAyNDYsIDE2MywgNDYsIDQ3LCAyNDcsIAorICAgIDM0LCA0NiwgNDcsIDI0NiwgMjI2LCA0NiwgNDcsIDI0NywgOTcsIDQ2LCA0NywgMjQ2LCAxNDcsIDQ2LCA0NywgMjQ3LCAxOCwgCisgICAgNDYsIDQ3LCAyNDYsIDIxMCwgNDYsIDQ3LCAyNDcsIDgxLCA0NiwgNDcsIDI0NiwgMTc4LCA0NiwgNDcsIDI0NywgNDksIDQ2LCAKKyAgICA0NywgMjQ2LCAyNDEsIDQ2LCA0NywgMjQ3LCAxMTIsIDQ2LCA0NywgMjQ2LCAxMjEsIDQ2LCA0NywgMjQ2LCAyNDgsIDQ2LCAKKyAgICA0NywgMjQ2LCAxODQsIDQ2LCA0NywgMjQ3LCA1NSwgNDYsIDQ3LCAyNDYsIDE1MiwgNDYsIDQ3LCAyNDcsIDIzLCA0NiwgNDcsIAorICAgIDI0NiwgMjE1LCA0NiwgNDcsIDI0NywgODYsIDQ2LCA0NywgMjQ2LCAxMzYsIDQ2LCA0NywgMjQ3LCA3LCA0NiwgNDcsIDI0NiwgCisgICAgMTk5LCA0NiwgNDcsIDI0NywgNzAsIDQ2LCA0NywgMjQ2LCAxNjcsIDQ2LCA0NywgMjQ3LCAzOCwgNDYsIDQ3LCAyNDYsIAorICAgIDIzMCwgNDYsIDQ3LCAyNDcsIDEwMSwgNDYsIDQ3LCAyNDYsIDEyOCwgNDYsIDQ3LCAyNDYsIDI1NSwgNDYsIDQ3LCAyNDYsIAorICAgIDE5MSwgNDYsIDQ3LCAyNDcsIDYyLCA0NiwgNDcsIDI0NiwgMTU5LCA0NiwgNDcsIDI0NywgMzAsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMjIsIDQ2LCA0NywgMjQ3LCA5MywgNDYsIDQ3LCAyNDYsIDE0MywgNDYsIDQ3LCAyNDcsIDE0LCA0NiwgNDcsIDI0NiwgCisgICAgMjA2LCA0NiwgNDcsIDI0NywgNzcsIDQ2LCA0NywgMjQ2LCAxNzQsIDQ2LCA0NywgMjQ3LCA0NSwgNDYsIDQ3LCAyNDYsIAorICAgIDIzNywgNDYsIDQ3LCAyNDcsIDEwOCwgNDYsIDQ3LCAyNDYsIDEyNCwgNDYsIDQ3LCAyNDYsIDI1MSwgNDYsIDQ3LCAyNDYsIAorICAgIDE4NywgNDYsIDQ3LCAyNDcsIDU4LCA0NiwgNDcsIDI0NiwgMTU1LCA0NiwgNDcsIDI0NywgMjYsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMTgsIDQ2LCA0NywgMjQ3LCA4OSwgNDYsIDQ3LCAyNDYsIDEzOSwgNDYsIDQ3LCAyNDcsIDEwLCA0NiwgNDcsIDI0NiwgCisgICAgMjAyLCA0NiwgNDcsIDI0NywgNzMsIDQ2LCA0NywgMjQ2LCAxNzAsIDQ2LCA0NywgMjQ3LCA0MSwgNDYsIDQ3LCAyNDYsIAorICAgIDIzMywgNDYsIDQ3LCAyNDcsIDEwNCwgNDYsIDQ3LCAyNDYsIDEzMSwgNDYsIDQ3LCAyNDcsIDIsIDQ2LCA0NywgMjQ2LCAKKyAgICAxOTQsIDQ2LCA0NywgMjQ3LCA2NSwgNDYsIDQ3LCAyNDYsIDE2MiwgNDYsIDQ3LCAyNDcsIDMzLCA0NiwgNDcsIDI0NiwgCisgICAgMjI1LCA0NiwgNDcsIDI0NywgOTYsIDQ2LCA0NywgMjQ2LCAxNDYsIDQ2LCA0NywgMjQ3LCAxNywgNDYsIDQ3LCAyNDYsIAorICAgIDIwOSwgNDYsIDQ3LCAyNDcsIDgwLCA0NiwgNDcsIDI0NiwgMTc3LCA0NiwgNDcsIDI0NywgNDgsIDQ2LCA0NywgMjQ2LCAKKyAgICAyNDAsIDQ2LCA0NywgMjQ3LCAxMTEsIDQ2LCA0NywgMjQ2LCAxMTksIDQ2LCA0NywgMjQ2LCAyNDYsIDQ2LCA0NywgMjQ2LCAKKyAgICAxODIsIDQ2LCA0NywgMjQ3LCA1MywgNDYsIDQ3LCAyNDYsIDE1MCwgNDYsIDQ3LCAyNDcsIDIxLCA0NiwgNDcsIDI0NiwgCisgICAgMjEzLCA0NiwgNDcsIDI0NywgODQsIDQ2LCA0NywgMjQ2LCAxMzQsIDQ2LCA0NywgMjQ3LCA1LCA0NiwgNDcsIDI0NiwgMTk3LCAKKyAgICA0NiwgNDcsIDI0NywgNjgsIDQ2LCA0NywgMjQ2LCAxNjUsIDQ2LCA0NywgMjQ3LCAzNiwgNDYsIDQ3LCAyNDYsIDIyOCwgNDYsIAorICAgIDQ3LCAyNDcsIDk5LCA0NiwgNDcsIDI0NiwgMTI2LCA0NiwgNDcsIDI0NiwgMjUzLCA0NiwgNDcsIDI0NiwgMTg5LCA0NiwgCisgICAgNDcsIDI0NywgNjAsIDQ2LCA0NywgMjQ2LCAxNTcsIDQ2LCA0NywgMjQ3LCAyOCwgNDYsIDQ3LCAyNDYsIDIyMCwgNDYsIDQ3LCAKKyAgICAyNDcsIDkxLCA0NiwgNDcsIDI0NiwgMTQxLCA0NiwgNDcsIDI0NywgMTIsIDQ2LCA0NywgMjQ2LCAyMDQsIDQ2LCA0NywgCisgICAgMjQ3LCA3NSwgNDYsIDQ3LCAyNDYsIDE3MiwgNDYsIDQ3LCAyNDcsIDQzLCA0NiwgNDcsIDI0NiwgMjM1LCA0NiwgNDcsIAorICAgIDI0NywgMTA2LCA0NiwgNDcsIDI0NiwgMTIyLCA0NiwgNDcsIDI0NiwgMjQ5LCA0NiwgNDcsIDI0NiwgMTg1LCA0NiwgNDcsIAorICAgIDI0NywgNTYsIDQ2LCA0NywgMjQ2LCAxNTMsIDQ2LCA0NywgMjQ3LCAyNCwgNDYsIDQ3LCAyNDYsIDIxNiwgNDYsIDQ3LCAKKyAgICAyNDcsIDg3LCA0NiwgNDcsIDI0NiwgMTM3LCA0NiwgNDcsIDI0NywgOCwgNDYsIDQ3LCAyNDYsIDIwMCwgNDYsIDQ3LCAyNDcsIAorICAgIDcxLCA0NiwgNDcsIDI0NiwgMTY4LCA0NiwgNDcsIDI0NywgMzksIDQ2LCA0NywgMjQ2LCAyMzEsIDQ2LCA0NywgMjQ3LCAKKyAgICAxMDIsIDQ2LCA0NywgMjQ2LCAxMjksIDQ2LCA0NywgMjQ3LCAwLCA0NiwgNDcsIDI0NiwgMTkyLCA0NiwgNDcsIDI0NywgNjMsIAorICAgIDQ2LCA0NywgMjQ2LCAxNjAsIDQ2LCA0NywgMjQ3LCAzMSwgNDYsIDQ3LCAyNDYsIDIyMywgNDYsIDQ3LCAyNDcsIDk0LCA0NiwgCisgICAgNDcsIDI0NiwgMTQ0LCA0NiwgNDcsIDI0NywgMTUsIDQ2LCA0NywgMjQ2LCAyMDcsIDQ2LCA0NywgMjQ3LCA3OCwgNDYsIDQ3LCAKKyAgICAyNDYsIDE3NSwgNDYsIDQ3LCAyNDcsIDQ2LCA0NiwgNDcsIDI0NiwgMjM4LCA0NiwgNDcsIDI0NywgMTA5LCA0NiwgNDcsIAorICAgIDI0NiwgMTIwLCA0NiwgNDcsIDI0NiwgMjQ3LCA0NiwgNDcsIDI0NiwgMTgzLCA0NiwgNDcsIDI0NywgNTQsIDQ2LCA0NywgCisgICAgMjQ2LCAxNTEsIDQ2LCA0NywgMjQ3LCAyMiwgNDYsIDQ3LCAyNDYsIDIxNCwgNDYsIDQ3LCAyNDcsIDg1LCA0NiwgNDcsIAorICAgIDI0NiwgMTM1LCA0NiwgNDcsIDI0NywgNiwgNDYsIDQ3LCAyNDYsIDE5OCwgNDYsIDQ3LCAyNDcsIDY5LCA0NiwgNDcsIDI0NiwgCisgICAgMTY2LCA0NiwgNDcsIDI0NywgMzcsIDQ2LCA0NywgMjQ2LCAyMjksIDQ2LCA0NywgMjQ3LCAxMDAsIDQ2LCA0NywgMjQ2LCAKKyAgICAxMjcsIDQ2LCA0NywgMjQ2LCAyNTQsIDQ2LCA0NywgMjQ2LCAxOTAsIDQ2LCA0NywgMjQ3LCA2MSwgNDYsIDQ3LCAyNDYsIAorICAgIDE1OCwgNDYsIDQ3LCAyNDcsIDI5LCA0NiwgNDcsIDI0NiwgMjIxLCA0NiwgNDcsIDI0NywgOTIsIDQ2LCA0NywgMjQ2LCAKKyAgICAxNDIsIDQ2LCA0NywgMjQ3LCAxMywgNDYsIDQ3LCAyNDYsIDIwNSwgNDYsIDQ3LCAyNDcsIDc2LCA0NiwgNDcsIDI0NiwgCisgICAgMTczLCA0NiwgNDcsIDI0NywgNDQsIDQ2LCA0NywgMjQ2LCAyMzYsIDQ2LCA0NywgMjQ3LCAxMDcsIDQ2LCA0NywgMjQ2LCAKKyAgICAxMjMsIDQ2LCA0NywgMjQ2LCAyNTAsIDQ2LCA0NywgMjQ2LCAxODYsIDQ2LCA0NywgMjQ3LCA1NywgNDYsIDQ3LCAyNDYsIAorICAgIDE1NCwgNDYsIDQ3LCAyNDcsIDI1LCA0NiwgNDcsIDI0NiwgMjE3LCA0NiwgNDcsIDI0NywgODgsIDQ2LCA0NywgMjQ2LCAKKyAgICAxMzgsIDQ2LCA0NywgMjQ3LCA5LCA0NiwgNDcsIDI0NiwgMjAxLCA0NiwgNDcsIDI0NywgNzIsIDQ2LCA0NywgMjQ2LCAxNjksIAorICAgIDQ2LCA0NywgMjQ3LCA0MCwgNDYsIDQ3LCAyNDYsIDIzMiwgNDYsIDQ3LCAyNDcsIDEwMywgNDYsIDQ3LCAyNDYsIDEzMCwgCisgICAgNDYsIDQ3LCAyNDcsIDEsIDQ2LCA0NywgMjQ2LCAxOTMsIDQ2LCA0NywgMjQ3LCA2NCwgNDYsIDQ3LCAyNDYsIDE2MSwgNDYsIAorICAgIDQ3LCAyNDcsIDMyLCA0NiwgNDcsIDI0NiwgMjI0LCA0NiwgNDcsIDI0NywgOTUsIDQ2LCA0NywgMjQ2LCAxNDUsIDQ2LCA0NywgCisgICAgMjQ3LCAxNiwgNDYsIDQ3LCAyNDYsIDIwOCwgNDYsIDQ3LCAyNDcsIDc5LCA0NiwgNDcsIDI0NiwgMTc2LCA0NiwgNDcsIAorICAgIDI0NywgNDcsIDQ2LCA0NywgMjQ2LCAyMzksIDQ2LCA0NywgMjQ3LCAxMTAsIDk3LCAyMTUsIDU4LCA4MCwgMiwgNjcsIDkxLCAKKyAgICA5NywgMjE1LCA1OCwgODAsIDIsIDUyLCA2NywgOTEsIDE0MCwgNTIsIDgwLCAyLCA2NywgOTEsIDk3LCA1MiwgODAsIDIsIAorICAgIDY3LCA5MSwgNDMsIDQ0LCA1MiwgODAsIDIsIDY3LCA5MSwgOTcsIDIxNSwgNTgsIDgwLCAyNDMsIDI0MywgMTMwLCAxNDAsIAorICAgIDUyLCA4MCwgMjQzLCAyNDMsIDEzMCwgOTcsIDUyLCA4MCwgMjQzLCAyNDMsIDEzMCwgMjQ2LCAxMDQsIDgwLCAyLCAyMDMsIAorICAgIDkxLCAyMTQsIDE1MywgODAsIDIsIDIwMywgOTEsIDIxNCwgMTUzLCAyMTUsIDIxMSwgNzQsIDI0NiwgMTA0LCAyMTUsIDIxMSwgCisgICAgNzQsIDE0MCwgNTIsIDI0OCwgMTU3LCA3NCwgOTcsIDUyLCAyNDgsIDE1NywgNzQsIDE0MCwgMjE1LCAyMTEsIDI0OCwgMTU3LCAKKyAgICA3NCwgOTcsIDIxNSwgMjExLCAyNDgsIDE1NywgNzQsIDk3LCAyMTUsIDU4LCAyMTUsIDIxMSwgMjQ4LCAxNTcsIDc0LCA5NywgCisgICAgODAsIDIsIDI0NiwgMTE4LCAyMTgsIDEzOSwgMjE0LCAxNTMsIDgwLCAyMTYsIDQyLCAxMzAsIDI0NiwgMTA0LCA4MCwgMjE2LCAKKyAgICA0MiwgMTMwLCA5NywgODAsIDIsIDIxNywgNzgsIDIsIDY3LCA5MSwgOTcsIDgwLCAyLCAyMTcsIDc4LCAyLCA1MiwgNjcsIAorICAgIDkxLCA5NywgMjE1LCA1OCwgODAsIDIsIDIxNywgNzcsIDk3LCAyMTUsIDU4LCA4MCwgMiwgMjE3LCA3OCwgMiwgNjcsIDkxLCAKKyAgICA5NywgMjE1LCA1OCwgODAsIDIsIDIxNywgNzgsIDIsIDUyLCA2NywgOTEsIDE0MCwgMjUzLCAyNTEsIDk3LCAyNTMsIDI1MSwgCisgICAgMTQwLCA1MiwgMjUzLCAyNTEsIDk3LCA1MiwgMjUzLCAyNTEsIDE0MCwgODAsIDIxNiwgNDIsIDg1LCAyNDcsIDI0OCwgOTcsIAorICAgIDgwLCAyMTYsIDQyLCA4NSwgMjQ3LCAyNDgsIDE0MCwgODAsIDI0MywgMjQzLCAyNTIsIDE0MSwgMjE2LCA0MiwgODUsIDI0NywgCisgICAgMjQ4LCA5NywgODAsIDI0MywgMjQzLCAyNTIsIDE0MSwgMjE2LCA0MiwgODUsIDI0NywgMjQ4LCAyMjgsIDU2LCAyMTIsIDksIAorICAgIDIyLCAyMTksIDI4LCAyNDUsIDIyMCwgNzQsIDIyOCwgNTYsIDI0NSwgMjIwLCAyMiwgMjE5LCAyOCwgMjEyLCA5LCA3NCwgCisgICAgMjI4LCA1NiwgMjEyLCA5LCA4MCwgMiwgMTAzLCAyMjgsIDU2LCAyNDUsIDIyMCwgODAsIDIsIDEwMywgMjE5LCAyOCwgMjQ1LCAKKyAgICAyMjAsIDgwLCAyLCAxMDMsIDIxOSwgMjgsIDIxMiwgOSwgODAsIDIsIDEwMywgMjI4LCA1NiwgMjEyLCA5LCA4MCwgMjIsIAorICAgIDIyOCwgNTYsIDI0NSwgMjIwLCA3NCwgMjI4LCA1NiwgMjQ1LCAyMjAsIDgwLCAyMiwgMjE5LCAyOCwgMjQ1LCAyMjAsIDc0LCAKKyAgICAyMTksIDI4LCAyNDUsIDIyMCwgODAsIDIyLCAyMTksIDI4LCAyMTIsIDksIDc0LCAyMTksIDI4LCAyMTIsIDksIDgwLCAyMiwgCisgICAgMjI4LCA1NiwgMjEyLCA5LCA3NCwgMjIyLCAyMjgsIDI0NywgMjU1LCAyNDksIDEyNSwgMjQ0LCAxNzUsIDI0NywgMjU0LCAKKyAgICAyNDQsIDE3NSwgMjQ3LCAyNTUsIDI0OSwgMTI1LCAyMjIsIDIyOCwgMjQ3LCAyNTQsIDIxOSwgMjgsIDI0NSwgMjIwLCA4MCwgCisgICAgMjQ5LCAxMjUsIDIyOCwgNTYsIDI0NSwgMjIwLCA3NCwgMjI4LCA1NiwgMjQ1LCAyMjAsIDgwLCAyNDksIDEyNSwgMjE5LCAKKyAgICAyOCwgMjQ1LCAyMjAsIDc0LCAyNDQsIDE3NSwgMjQ3LCAyNTUsIDI0OSwgMTI1LCAyMjgsIDU2LCAyNDUsIDIyMCwgNzQsIAorICAgIDIyMiwgMjI4LCAyNDcsIDI1NSwgMjQ5LCAxMjUsIDIxOSwgMjgsIDI0NSwgMjIwLCA3NCwgMjI4LCA1NiwgMjQ1LCAyMjAsIAorICAgIDgwLCAyNDksIDEyNSwgMjI4LCA1NiwgMjEyLCA5LCA3NCwgMjI4LCA1NiwgMjEyLCA5LCA4MCwgMjQ5LCAxMjUsIDIyOCwgCisgICAgNTYsIDI0NSwgMjIwLCA3NCwgMjEyLCAzNiwgODAsIDIyNSwgNywgMjQ3LCAxOTUsIDIyMiwgMjUxLCA4MCwgMjI1LCA3LCAKKyAgICA5NywgMjE2LCAxODgsIDI0OSwgOTAsIDIxNCwgMTUyLCA4MCwgMjI1LCA3LCA5NywgMjE2LCAxODgsIDI0OSwgOTAsIDI0NiwgCisgICAgMTAzLCA4MCwgMjI1LCA3LCAyNDYsIDEwNCwgMjE2LCAxODgsIDI0OSwgOTAsIDIzMywgMzcsIDgwLCAyMjUsIDcsIDI0NiwgCisgICAgMTA0LCAyMTYsIDE4OCwgMjQ5LCA5MCwgMjIyLCAyNDEsIDIyMiwgMjQ0LCAyNTQsIDI2LCAyNTAsIDIsIDc0LCAyMzMsIDQwLCAKKyAgICAyNTQsIDI2LCAyNTQsIDg4LCA3NCwgMjE2LCAxNCwgMjU0LCAyNiwgMjU0LCA4OCwgNzQsIDI1MSwgMTc1LCAyNTQsIDI2LCAKKyAgICAyNTQsIDg4LCA3NCwgMjE2LCAxNCwgMjU0LCAyNiwgMjUwLCAyLCA4MCwgMiwgMjMwLCAxODEsIDIxNiwgMTQsIDI1NCwgMjYsIAorICAgIDI1NCwgODgsIDgwLCAyLCAyMjUsIDIyLCAyMzIsIDEwOCwgNDQsIDIyMCwgMTUyLCAyNTAsIDIsIDc0LCAyMzIsIDEwOCwgCisgICAgNDMsIDIyMCwgMTUyLCAyNTQsIDg4LCA3NCwgMjU0LCA4OCwgMjUwLCAwLCAyNTAsIDM2LCA3NCwgMjUwLCAyLCAyNTAsIDAsIAorICAgIDI1MCwgMzYsIDc0LCA5NywgODAsIDc3LCAyMTksIDI1MSwgMTQwLCA3NCwgMTQwLCA4MCwgNzcsIDIxOSwgMjUxLCA5NywgCisgICAgNzQsIDIxOSwgMjUxLCA5NywgODAsIDc3LCAxNDAsIDc0LCA5NywgODAsIDIsIDk2LCA1MSwgMTQwLCA4MCwgMiwgOTYsIDUxLCAKKyAgICA5NywgODAsIDIxNiwgMTM5LCAyMTEsIDE3OCwgNDMsIDQ0LCA4MCwgMjE2LCAxMzksIDQsIDI1MCwgMzUsIDIxNCwgMTUzLCAKKyAgICAyMTUsIDU4LCA4MCwgMjQzLCAyNDMsIDQsIDI1MCwgMzUsIDQzLCAyNTIsIDEzOSwgMTIwLCA0NCwgMjUyLCAxMzksIDEyNCwgCisgICAgMjQxLCAyNTQsIDQzLCAyNTIsIDEzOSwgMTI0LCA0NCwgMjUyLCAxMzksIDEyMCwgMjQxLCAyNTQsIDEyMCwgMjUyLCAxMzksIAorICAgIDQ0LCAxMjQsIDI1MiwgMTM5LCA0MywgMjQxLCAyNTQsIDEyMCwgMjUyLCAxMzksIDQzLCAxMjQsIDI1MiwgMTM5LCA0NCwgCisgICAgMjQxLCAyNTQsIDQzLCAyNTIsIDEzOSwgMTIwLCA0NCwgMjUyLCAxMzksIDEyMCwgMjQxLCAyNTQsIDEyMCwgMjUyLCAxMzksIAorICAgIDQ0LCAxMjQsIDI1MiwgMTM5LCA0NCwgMjQxLCAyNTQsIDQzLCAyNTIsIDEzOSwgMTI0LCA0NCwgMjUyLCAxMzksIDEyNCwgCisgICAgMjQxLCAyNTQsIDEyMCwgMjUyLCAxMzksIDQzLCAxMjQsIDI1MiwgMTM5LCA0MywgMjQxLCAyNTQsIDE0MCwgMjQxLCAyNTUsIAorICAgIDIsIDI1MiwgMTM5LCAxMjAsIDIxNiwgNDIsIDEzMCwgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTIwLCAyMTYsIDQyLCAKKyAgICAxMzAsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQ0LCAyMTYsIDQyLCAxMzAsIDI0NiwgMTA0LCAyNDEsIAorICAgIDI1NSwgMiwgMjUyLCAxMzksIDQ0LCAyMTYsIDQyLCAxMzAsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjQsIDIxNiwgCisgICAgNDIsIDEzMCwgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTI0LCAyMTYsIDQyLCAxMzAsIDIxNCwgMTUzLCAyNDEsIAorICAgIDI1NSwgMiwgMjUyLCAxMzksIDQzLCAyMTYsIDQyLCAxMzAsIDI0NiwgMTA0LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQzLCAKKyAgICAyMTYsIDQyLCAxMzAsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjAsIDI0MywgMjQzLCAxMzAsIDk3LCAyNDEsIAorICAgIDI1NSwgMiwgMjUyLCAxMzksIDEyMCwgMjQzLCAyNDMsIDEzMCwgMjE0LCAxNTMsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgCisgICAgNDQsIDI0MywgMjQzLCAxMzAsIDI0NiwgMTA0LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQ0LCAyNDMsIDI0MywgMTMwLCAKKyAgICAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTI0LCAyNDMsIDI0MywgMTMwLCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgCisgICAgMTM5LCAxMjQsIDI0MywgMjQzLCAxMzAsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQzLCAyNDMsIDI0MywgCisgICAgMTMwLCAyNDYsIDEwNCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCA0MywgMjQzLCAyNDMsIDEzMCwgMTQwLCAyNDEsIDI1NSwgCisgICAgMiwgMjUyLCAxMzksIDEyMCwgNzcsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyNDYsIDEwNiwgMjE0LCAxNTMsIAorICAgIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgNDMsIDI1MiwgMzAsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDIyMiwgCisgICAgMjUxLCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjAsIDc3LCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyNDYsIAorICAgIDEwNiwgMjQ2LCAxMDQsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgNDMsIDI1MiwgMzAsIDI0NiwgMTA0LCAyNDEsIDI1NSwgMiwgCisgICAgMjUyLCAxMzksIDIyMiwgMjUxLCAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTIwLCA3NywgOTcsIDI0MSwgMjU1LCAyLCAKKyAgICAyNTIsIDEzOSwgMjE0LCAxNjMsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjQsIDc3LCA5NywgMjQxLCAyNTUsIDIsIAorICAgIDI1MiwgMTM5LCAyNDYsIDEwNiwgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTIwLCA3NywgMTQwLCAyNDEsIDI1NSwgMiwgCisgICAgMjUyLCAxMzksIDIxNCwgMTYzLCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjQsIDc3LCAxNDAsIDI0MSwgMjU1LCAyLCAKKyAgICAyNTIsIDEzOSwgMjQ2LCAxMDYsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjAsIDc3LCAxOTksIDI0OCwgMTU2LCAKKyAgICAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTI0LCAyNTIsIDQzLCAxOTksIDI0OCwgMTU2LCA5NywgMjQxLCAyNTUsIDIsIAorICAgIDI1MiwgMTM5LCAxMjAsIDc3LCAxOTksIDI0OCwgMTU2LCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjQsIDI1MiwgCisgICAgNDMsIDE5OSwgMjQ4LCAxNTYsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQzLCAyNTIsIDMwLCAyNDYsIAorICAgIDEwNCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyMjIsIDI1MSwgMjQ2LCAxMDQsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgCisgICAgNDMsIDI1MiwgMzAsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDIyMiwgMjUxLCA0NCwgNTIsIDgwLCAyLCAKKyAgICAyMjIsIDE4MywgMjQxLCAyMzUsIDI0NSwgOTgsIDUsIDc3LCA5NywgNzQsIDIxNiwgODksIDIyNiwgMTY4LCA3NywgOTcsIAorICAgIDc0LCAxNDAsIDgwLCA3NywgMjE2LCA4OSwgMjI2LCAxNjcsIDk3LCA4MCwgNzcsIDIxNiwgODksIDIyNiwgMTY3LCA5NywgCisgICAgODAsIDc3LCAyNTQsIDE0OCwgMTI4LCAxMTEsIDIzMywgMTUsIDc3LCAxNDAsIDc0LCAxNDAsIDgwLCAyMTYsIDEzOSwgMjMzLCAKKyAgICAxNCwgMjQyLCAxMzAsIDc3LCA5NywgNzQsIDIxOCwgNjQsIDc3LCA5NywgNzQsIDE0MCwgODAsIDIxNiwgMTM5LCAyMTgsIAorICAgIDYzLCAyMTgsIDIyLCA3NywgMTQwLCA3NCwgNDMsIDI0NCwgOTEsIDIxNywgNzcsIDQ0LCAyNDQsIDkxLCAyMTcsIDc3LCAKKyAgICAxMjAsIDI0NCwgOTEsIDIxNywgNzcsIDEyNCwgMjQ0LCA5MSwgMjE3LCA3NywgMjE1LCAyMTEsIDY3LCAyNTIsIDE0MSwgCisgICAgMjQ4LCA2MCwgMjEwLCAxNjAsIDE4NywgMjE4LCAyNDIsIDIxMCwgMTYwLCAxODcsIDIxNSwgNDksIDI0OSwgMjI2LCA0MywgCisgICAgNzEsIDI0OSwgOTksIDEyNywgNDQsIDcxLCAyNDksIDk5LCAxMjcsIDQzLCA3MSwgMjI2LCAzLCA0NCwgNzEsIDIyNiwgMywgCisgICAgMjEwLCAxNjAsIDE4NywgNDMsIDIzNiwgMTUsIDEyNywgMjEwLCAxNjAsIDE4NywgNDQsIDIzNiwgMTUsIDEyNywgMjEwLCAKKyAgICAxNjAsIDE4NywgNDMsIDI1MSwgMjQyLCAxMjcsIDIxMCwgMTYwLCAxODcsIDQ0LCAyNTEsIDI0MiwgMTI3LCA0MywgNDIsIAorICAgIDI1MSwgMTU4LCAyLCAyMTQsIDE4MywgNDQsIDQyLCAyNTEsIDE1OCwgMiwgMjE0LCAxODMsIDQzLCA0MiwgMjUxLCAxNTgsIAorICAgIDIsIDIxNiwgMTE1LCAyMzYsIDAsIDIxNiwgMTQsIDI0OSwgMTYwLCA0NCwgNDIsIDI1MSwgMTU4LCAyLCAyMTYsIDExNSwgCisgICAgMjM2LCAwLCAyNTEsIDE3NSwgMjQ5LCAxNjAsIDQzLCA0MiwgMjUxLCAxNTgsIDIsIDIxNiwgMTE1LCAyMzYsIDAsIDI1MSwgCisgICAgMTc1LCAyNDksIDE2MCwgNDQsIDQyLCAyNTEsIDE1OCwgMiwgMjE2LCAxMTUsIDIzNiwgMCwgMjE2LCAxNCwgMjQ5LCAxNjAsIAorICAgIDQzLCAyNTQsIDExMCwgMjUxLCAxNTgsIDIsIDI0NywgMTIwLCA0NCwgMjU0LCAxMTAsIDI1MSwgMTU4LCAyLCAyNDcsIDEyMCwgCisgICAgNDMsIDI1NCwgMjYsIDIzMywgMTUsIDEyNywgNDQsIDI1NCwgMjYsIDI0MiwgMTMwLCAxMjcsIDUyLCA0MywgMjU0LCAyNiwgCisgICAgMjQyLCAxMzAsIDEyNywgNTIsIDQ0LCAyNTQsIDI2LCAyMzMsIDE1LCAxMjcsIDQzLCA4NSwgMjE2LCA2LCAyMjAsIDUzLCAKKyAgICAxMjcsIDQ0LCA4NSwgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDI0NiwgMTE4LCAyNDQsIDEzNSwgNjcsIDIxMCwgMzUsIDIzMiwgCisgICAgMjEzLCAyMzEsIDg4LCAyNTQsIDExMCwgMjI2LCAxNzAsIDIzMywgNDYsIDQ0LCAyNTQsIDExMCwgMjE0LCAxMiwgMiwgMjE4LCAKKyAgICAyMzQsIDIzMSwgODgsIDQ0LCAyNTQsIDExMCwgMiwgMjQ3LCAxMjAsIDI1NCwgMTEwLCAyLCAyMjIsIDkyLCAyMzUsIDIxNSwgCisgICAgMjU1LCAzLCAyNTQsIDEwOSwgMjE4LCAyNTUsIDI1NCwgMTEwLCAyMjYsIDE3MCwgMjMzLCA0NiwgMjE4LCAyNTUsIDI1NCwgCisgICAgMTEwLCAyMjYsIDE3MCwgMjE0LCAxNjMsIDIxNSwgOTQsIDI1NCwgMTA5LCAyMjMsIDQ5LCAyNTQsIDEwOSwgMjU0LCAxMTAsIAorICAgIDIsIDIxNCwgMTgzLCAyMjMsIDQ5LCAyNTQsIDExMCwgMiwgMjE0LCAxODMsIDIyNiwgMjQ4LCAyNTQsIDExMCwgMjI2LCAKKyAgICAxNzAsIDIxNCwgMTYzLCAyMjYsIDI0OCwgMjU0LCAxMTAsIDIyNiwgMTcwLCAyNDYsIDEwNiwgMjMxLCA4OCwgMjU0LCAxMTAsIAorICAgIDIsIDIwNCwgMjU0LCA1LCAyNDUsIDE0MCwgMjM2LCAwLCA4MCwgMjI1LCA3LCAxMjAsIDIyLCAyMjIsIDI1MSwgMjMxLCA4OCwgCisgICAgMjU0LCAxMTAsIDIsIDIwNCwgMjU0LCA1LCAyNDUsIDE0MCwgMjM2LCAwLCA4MCwgMjI1LCA3LCAxMjAsIDIyLCAyMzMsIDQ2LCAKKyAgICAyMzEsIDg4LCAyNTQsIDExMCwgMiwgMjA0LCAyNTQsIDUsIDI0NSwgMTQwLCAyMzYsIDAsIDgwLCAyMjUsIDcsIDEyNCwgMjIsIAorICAgIDIyMiwgMjUxLCAyMzEsIDg4LCAyNTQsIDExMCwgMiwgMjA0LCAyNTQsIDUsIDI0NSwgMTQwLCAyMzYsIDAsIDgwLCAyMjUsIAorICAgIDcsIDEyNCwgMjIsIDIzMywgNDYsIDIzMSwgODgsIDI1NCwgMTEwLCAyLCAyMDQsIDI1NCwgNSwgMjQ1LCAxNDAsIDIzNiwgMCwgCisgICAgODAsIDIyNSwgNywgNDQsIDIyLCAyMTQsIDE2MywgMjMxLCA4OCwgMjU0LCAxMTAsIDIsIDIwNCwgMjU0LCA1LCAyNDUsIAorICAgIDE0MCwgMjM2LCAwLCA4MCwgMjI1LCA3LCA0MywgMjIsIDIxNCwgMTYzLCAyMzEsIDg4LCAyNTQsIDExMCwgMiwgMjA0LCAKKyAgICAyNTQsIDUsIDI0NSwgMTQwLCAyMzYsIDAsIDgwLCAyMjUsIDcsIDQ0LCAyMiwgMjQ2LCAxMDYsIDIzMSwgODgsIDI1NCwgCisgICAgMTEwLCAyLCAyMDQsIDI1NCwgNSwgMjQ1LCAxNDAsIDIzNiwgMCwgODAsIDIyNSwgNywgNDMsIDIyLCAyNDYsIDEwNiwgMjIzLCAKKyAgICA0OSwgMjQ1LCAxNTIsIDIyMCwgMTI3LCAyNDUsIDE1MiwgMjIwLCAxMjgsIDIsIDIyNiwgMTIzLCAyNDUsIDE1MiwgMjIwLCAKKyAgICAxMjgsIDIsIDQsIDI1MCwgMzYsIDQ4LCAyNDUsIDE1MiwgMjIwLCAxMjgsIDIsIDQ0LCA4MCwgNDgsIDI0NSwgMTUyLCAyMjAsIAorICAgIDEyOCwgMiwgNDMsIDgwLCA0OCwgMjUwLCAzNiwgMiwgMjAzLCAxMzAsIDM3LCA2NywgMTMwLCAzNywgMjI2LCA3LCAzNywgCisgICAgMjIzLCA1MCwgMjE5LCA0NiwgMzcsIDIyNSwgMTcxLCAyNTAsIDM2LCAyNDcsIDE3MywgMjUxLCA3OCwgMjAzLCAyNTIsIAorICAgIDE0MSwgMjIsIDIxNiwgMTQsIDE2MywgMjQ3LCAxNzMsIDI1MSwgNzgsIDY3LCAxMzAsIDI1MCwgMzYsIDIsIDIxOCwgMjQsIAorICAgIDIxMSwgMTc4LCAzNywgMjU0LCA4NywgMjQ3LCAxNjksIDUwLCAxMjAsIDgwLCAyMTYsIDEzOSwgMjUwLCAzNSwgMzcsIDcxLCAKKyAgICAyNTEsIDExMywgMzcsIDI1MSwgMTEzLCAzNywgMjMzLCAxNCwgMzcsIDI0MiwgMTI5LCAyNTAsIDM2LCAyLCA0LCAyNTAsIAorICAgIDM2LCAyMTYsIDQyLCAyMTYsIDE5NiwgMjIyLCAyNTEsIDI1MCwgMzYsIDIsIDExMywgMjAzLCAyMTgsIDkxLCAyMTYsIDQyLCAKKyAgICAyMTYsIDE5NiwgMjIyLCAyNTEsIDkyLCAyMjIsIDIyOCwgMjQ3LCAyNTUsIDIxOSwgOTUsIDkyLCAyNDQsIDE3NSwgMjQ3LCAKKyAgICAyNTUsIDIxOSwgOTUsIDkyLCAyNTMsIDIxNiwgOTIsIDQsIDI1MCwgMzUsIDkyLCAyMTgsIDIzNCwgMTEzLCAyMzUsIDY1LCAKKyAgICAyMTgsIDIzMiwgMjE1LCAyMjYsIDIsIDU5LCA0OCwgMjE1LCAyMjYsIDIsIDIxNCwgMTgzLCAyMjIsIDkyLCAyMzYsIDAsIAorICAgIDIxNSwgMjI1LCAyMTUsIDIyNiwgMiwgMjIwLCAxMzQsIDI1MywgMjA3LCAyNTEsIDE3NCwgNDQsIDIxNSwgMjI2LCA3NywgCisgICAgNDMsIDIxNSwgMjI1LCA0MywgMjE1LCAyMjYsIDI1MiwgMzAsIDY3LCAxMzAsIDY3LCAyNTIsIDE0MSwgMjUyLCAzMCwgNDQsIAorICAgIDIxNSwgMjI1LCAyNTEsIDE2NSwgMiwgNDMsIDE2MywgMjUxLCAyMjEsIDI1MSwgMTY1LCAyLCA0NCwgMTYzLCAyNTEsIDIyMSwgCisgICAgODUsIDI1MSwgMTY0LCAzMCwgMiwgNDMsIDE2MywgMjUxLCAyMjEsIDMwLCAyLCA0NCwgMTYzLCAyNTEsIDIyMSwgNzEsIAorICAgIDI0MCwgMjM2LCA4NSwgMjQwLCAyMzYsIDQzLCAyMTEsIDI0NCwgMjQ0LCAxMzUsIDQ0LCAyMTEsIDI0NCwgMjQ0LCAxMzUsIAorICAgIDQzLCA1MiwgMjExLCAyNDQsIDI0NCwgMTM1LCA0NCwgNTIsIDIxMSwgMjQ0LCAyNDQsIDEzNSwgMjM1LCAyNDgsIDIzNSwgCisgICAgMjM0LCAyMTYsIDExMiwgMTE3LCAyMzUsIDIzNCwgMjM1LCAyMzUsIDIyOSwgMTAyLCAyLCA2NywgMTMwLCAyNDYsIDExMiwgCisgICAgMjMwLCA4NywgNDIsIDIsIDI0OSwgMTgxLCAyMjYsIDEyNywgMjM1LCAyNDYsIDI1MywgMjM3LCAyMTksIDIxOSwgMjI0LCAKKyAgICAxODAsIDI0NSwgOTgsIDUsIDIyLCAyMTksIDk3LCAyMjYsIDcsIDI0NSwgOTgsIDUsIDIyLCAyMTksIDk3LCAyMjYsIDgsIDIsIAorICAgIDIxNiwgODksIDQ4LCAyNDAsIDEwNCwgMjE2LCA0MiwgMjIsIDIxOSwgOTcsIDIyNiwgNywgMjQyLCAxODMsIDIxOCwgMTU1LCAKKyAgICAyMTYsIDE4NSwgMjQ2LCAxMDUsIDIxNSwgMjI2LCAyLCA0MywgMTYzLCAyNTEsIDIyMSwgMjQ2LCAxMDUsIDIxNSwgMjI2LCAKKyAgICAyLCA0NCwgMTYzLCAyNTEsIDIyMSwgODUsIDI0NywgMjQ5LCAyLCAxMjQsIDc0LCA4NSwgMjMyLCAxMDQsIDcxLCAyNTAsIAorICAgIDM2LCAyLCAxMjQsIDc0LCA4NSwgMjUwLCAzNiwgMiwgMTI0LCA3NCwgMjQ1LCA4NSwgNzEsIDIxOCwgMjM0LCAyNDUsIDg1LCAKKyAgICA4NSwgMjE4LCAyMzQsIDI0NSwgODUsIDcxLCAyNDcsIDI0OCwgMjQ1LCA4NSwgODUsIDI0NywgMjQ4LCAyNDUsIDg1LCA3MSwgCisgICAgMjUwLCAzNSwgMjQ1LCA4NSwgODUsIDI1MCwgMzUsIDIyMiwgMTMyLCAyMjMsIDUwLCAyMTksIDQ3LCAyMjYsIDE2NywgMjE5LCAKKyAgICA0NywgMiwgMjI2LCAxMjMsIDIyMywgNTAsIDIxOSwgNDcsIDIsIDIwMywgOTEsIDI1MSwgMjQ5LCAyMTksIDQ2LCAyNTEsIAorICAgIDI0OSwgMjIzLCA1MCwgMjE5LCA0NiwgNTIsIDIyNSwgMjIsIDIxNSwgMjExLCAyMjUsIDIyLCAyMzMsIDQyLCAyNDksIDkxLCAKKyAgICAyNTQsIDExMCwgMTI3LCAyMjIsIDI0NywgMjQ5LCA5MSwgMjU0LCAxMTAsIDEyNywgMjE2LCA3OCwgMjMwLCAxNzksIDIzMCwgCisgICAgMjQsIDM3LCA1OSwgMjI2LCAxNjcsIDIzMCwgMjQsIDM3LCA5NiwgMjI2LCAxNjcsIDIzMCwgMjQsIDM3LCAzMCwgMjI2LCAKKyAgICAxNjcsIDIzMCwgMjQsIDIxNCwgMTc2LCAyMjYsIDE2OCwgMiwgMjQ3LCAxMjAsIDIzMCwgMjQsIDIxNCwgMTc2LCAyMjYsIAorICAgIDE2OCwgMiwgMjI1LCAyMiwgMjMwLCAyNCwgNDIsIDIzNSwgMTk5LCAyMjYsIDE2NywgMjMwLCAyNCwgNDIsIDIxNCwgMTc2LCAKKyAgICAyMjYsIDE2NywgMTEzLCAyMzIsIDE0NiwgMjIsIDIyNiwgMTY3LCAxMTMsIDIzMiwgMTQ2LCAxNzcsIDIyNiwgMTY3LCAyMzAsIAorICAgIDI0LCAzMCwgMjI2LCAxNjcsIDIzMCwgMTU0LCAxMTMsIDIxOCwgNDMsIDIxOCwgNDEsIDIsIDIzNSwgMjExLCAyMjQsIDI0LCAKKyAgICAyMzUsIDIxMiwgMjI2LCAxNjcsIDI0NCwgOTksIDIyNSwgMjU1LCAyMzUsIDIxMSwgMjM1LCAyMTIsIDIsIDUyLCA5MSwgCisgICAgMjM1LCAyMTIsIDI1MywgMTczLCAyLCAyMTksIDk1LCAyNTAsIDMyLCAyNDMsIDIyNiwgMjU0LCA4OCwgMjM1LCAyMDksIAorICAgIDIzMiwgMjE0LCAyMzUsIDIxMCwgMiwgMjIzLCAxMTUsIDIyNSwgMjM3LCAyNTQsIDIsIDIyNSwgMSwgMjMyLCAyMTQsIDIzNSwgCisgICAgMjEwLCAyLCAyMjAsIDE1MiwgMjI1LCAyMzcsIDI1NCwgMiwgMjI1LCAxLCAyMzIsIDIxNCwgMjM1LCAyMTAsIDIyOCwgNTIsIAorICAgIDIzNSwgMjUwLCAyMTYsIDE5NiwgMjI1LCAxLCAyMzUsIDIxMiwgMjU0LCAyLCAxMTUsIDIyNSwgMTEsIDIyNiwgMTY3LCAKKyAgICAyMjQsIDE4LCAyMzUsIDIxMiwgMjI2LCAxNjcsIDIzNSwgMjEyLCAyLCAxNDAsIDgwLCAyLCAxMDMsIDIzNSwgMjEyLCAyLCAKKyAgICAzMCwgNTAsIDIzNSwgMjEyLCAyLCAyMzUsIDE5OCwgMjM1LCAyMTIsIDIsIDIxNCwgMTc1LCAyMzUsIDIxMiwgMiwgMjI2LCAKKyAgICAxMjMsIDIzNSwgMjEyLCAyLCAyMTQsIDE4MywgMjM1LCA2NiwgMjMzLCA4NSwgNDMsIDIxNSwgMjI2LCAyMjYsIDE2NywgCisgICAgMjEwLCAxNjAsIDE4NywgMjIxLCAyMDEsIDI0OSwgMjA5LCAyMTAsIDE2MCwgMTg3LCAyMjEsIDIwMSwgMjI1LCA1NiwgMjEwLCAKKyAgICAxNjAsIDE4NywgMjIxLCAyMDEsIDIyNCwgMTc2LCA5NiwgNSwgMiwgNCwgMjUwLCAzNiwgNDgsIDk2LCA1LCAyLCAyNTAsIAorICAgIDMxLCAyNTUsIDE1LCA0OCwgOTYsIDUsIDIsIDIxNiwgODksIDQ4LCA5NiwgNSwgMiwgNTksIDUxLCA5NiwgNSwgMiwgMjE2LCAKKyAgICA4OSwgNTEsIDk2LCA1LCAyLCAyMTgsIDY1LCAxMDUsIDk2LCA1LCAyLCA4NSwgMjE1LCAyMjUsIDIzMCwgMTgyLCA1LCAyLCAKKyAgICAyNDksIDIyMCwgNDgsIDIzMCwgMTgyLCA1LCAyLCA1OSwgNTEsIDIzMCwgMTgyLCA1LCAyLCAyNDQsIDE3NSwgMjQ3LCAxMTgsIAorICAgIDIzMCwgMTgyLCA1LCAyLCAyMjIsIDIyOCwgMjQ3LCAxMTgsIDk2LCA1LCAyMzYsIDAsIDQzLCAxNjMsIDI1MCwgMzUsIDk2LCAKKyAgICA1LCAyMzYsIDAsIDQ0LCAxNjMsIDI1MCwgMzUsIDIxMywgMjU0LCAxNzcsIDI0OSwgMTMxLCAyMjQsIDE4MCwgMjMwLCA4NCwgCisgICAgNSwgMiwgNTksIDQ4LCAyMzAsIDg0LCA1LCAyLCAyMTQsIDE4MywgMjIwLCAxNDksIDIyNCwgMTgxLCAyLCAyNTEsIDE3NSwgCisgICAgMjQ5LCAyNTUsIDIxOSwgNzcsIDIyNCwgMTgwLCAyMzAsIDg0LCA1LCAyMzYsIDAsIDQzLCAxNjMsIDI1MCwgMzUsIDIzMCwgCisgICAgODQsIDUsIDIzNiwgMCwgNDQsIDE2MywgMjUwLCAzNSwgMzcsIDIzMCwgODQsIDUsIDIsIDI1MCwgMzEsIDI1NSwgMTQsIAorICAgIDIzMCwgODQsIDUsIDIzNiwgMCwgNTIsIDI1MCwgMzUsIDM3LCAyNDcsIDE2OSwgNTAsIDk2LCA1LCAyMzYsIDAsIDIxNSwgCisgICAgMjI1LCAyMzAsIDE4MiwgNSwgMjM2LCAwLCAyMTUsIDIyNSwgMjMwLCA4NCwgNSwgMjM2LCAwLCAyMTUsIDIyNSwgMjM1LCAKKyAgICAyMDYsIDIyNCwgMTgwLCAyMjIsIDI0MiwgMjM1LCAyMDYsIDIyNCwgMTgwLCAyMTAsIDE2MCwgMTg3LCAyMjMsIDkwLCAyNDksIAorICAgIDIwOSwgMjU0LCAxMzQsIDE3NywgMjQ5LCAxNjUsIDIzNSwgMTk5LCAyLCAyNDcsIDEyMCwgMjE0LCAxNzYsIDIsIDIzMCwgCisgICAgMTgyLCA1MCwgMjE0LCAxNzYsIDIsIDIyNiwgMTIzLCAyMzUsIDE5OSwgMiwgMjI2LCAxMjMsIDIzNSwgMTk5LCAyLCAyMzIsIAorICAgIDE0NiwgMjU0LCAxMTgsIDIxNCwgMTc2LCAyLCAyMzIsIDE0NiwgMjI2LCAxNTgsIDIxNCwgMTc2LCA3NywgMjM1LCAxOTgsIAorICAgIDIzNSwgMTk5LCA3NywgMjE0LCAxNzUsIDIxNCwgMTc2LCA3NywgMjUyLCAxNDEsIDc3LCAyMzUsIDE5OCwgMjM1LCAxOTksIAorICAgIDc3LCAyNTIsIDE0MSwgNzcsIDIxNCwgMTc1LCAyMTQsIDE3NiwgMjUyLCAzMCwgMjIsIDIzNSwgNjUsIDIsIDIxNCwgMTc1LCAKKyAgICAyMzUsIDE5OSwgMjUyLCAzMCwgMjIsIDIzNSwgNjUsIDIsIDIzNSwgMTk4LCAyNTAsIDAsIDIxNCwgMTc2LCAyLCAyMjAsIAorICAgIDEzMywgMjUwLCAwLCAyMzUsIDE5OSwgMiwgMjIwLCAxMzMsIDUyLCA0MiwgMjM1LCAxOTgsIDUyLCA0MiwgMjE0LCAxNzUsIAorICAgIDI1MCwgMCwgMjE0LCAxNzYsIDIsIDIyMCwgMTM0LCAyMiwgMjE5LCA3NywgMjI0LCAxODAsIDIzMiwgMTQ2LCAyMiwgMiwgCisgICAgNTksIDQ4LCAyMzIsIDE0NiwgMTc3LCAyLCA1OSwgNDgsIDUyLCAyMzIsIDE0NiwgMjU0LCAxMTgsIDUyLCAyMzIsIDE0NiwgCisgICAgMjI2LCAxNTgsIDExMywgMjM1LCAyMDAsIDIzMiwgMTQ2LCAyNTQsIDExOCwgMTEzLCAyMzUsIDIwMCwgMjMyLCAxNDYsIAorICAgIDIyNiwgMTU4LCAyMTksIDg1LCAyMzMsIDg1LCAyMjYsIDE1OCwgMjE5LCA4NSwgMjMzLCA4NSwgMjU0LCAxMTgsIDIzMiwgCisgICAgMTQ2LCAxNzcsIDIyNiwgMTIxLCAyMzIsIDE0NiwgMjU0LCAxMTgsIDIzMiwgMTQ2LCAyMiwgMiwgMjMwLCAyMjQsIDIxOCwgCisgICAgMTM5LCAyMzIsIDE0NiwgMTc3LCAyLCAyMzAsIDIyNCwgMjE4LCAxMzksIDIzMiwgMTQ2LCAyMiwgMiwgMjAzLCAyNDgsIAorICAgIDE1NiwgMjMyLCAxNDYsIDE3NywgMiwgMjAzLCAyNDgsIDE1NiwgMjMyLCAxNDYsIDIyLCAyLCA1MiwgMjI2LCAxMjMsIDIzMiwgCisgICAgMTQ2LCAyMiwgMiwgMjE0LCAxODMsIDIzMiwgMTQ2LCAyMiwgMiwgNTIsIDIxNCwgMTgzLCA0LCAyMTMsIDI1MSwgMiwgMjE0LCAKKyAgICAxODMsIDIzMiwgMTQ2LCAxNzcsIDIsIDUyLCAyMjYsIDEyMywgMjMyLCAxNDYsIDE3NywgMiwgNTIsIDIxNCwgMTgzLCAyMTAsIAorICAgIDE2MCwgMTg3LCAyNDcsIDEyOSwgMjU0LCA3OSwgMjEwLCAxNjAsIDE4NywgMjIzLCAxNDgsIDI1NCwgNzksIDI0NSwgOTgsIAorICAgIDUsIDIsIDU5LCA1MSwgMjQwLCAxMDQsIDIsIDU5LCA0OCwgMjE1LCAyMTEsIDIwMywgMjUyLCAxNDEsIDIsIDUyLCA2NywgCisgICAgOTEsIDIxNSwgMjExLCAyMDMsIDI1MiwgMTQxLCAyLCAyMTUsIDIxMSwgNjcsIDkxLCAyMTYsIDg5LCAyMjYsIDE2OCwgMiwgCisgICAgNTksIDQ4LCAyMTYsIDg5LCAyMjYsIDE2OCwgMiwgMjIyLCAyMjgsIDI0NywgMTE4LCAyMTksIDE2MiwgMjMwLCAxODIsIAorICAgIDIxOSwgMTYxLCAyNDksIDE5OSwgMiwgNTksIDQ4LCAyNDUsIDk4LCAyLCAyNTMsIDIxNiwgMjU0LCAxNDgsIDEyOCwgMjE2LCAKKyAgICA0MiwgMiwgMjUwLCAzMSwgMjU1LCAxNCwgMjU0LCA0OCwgMTI4LCAxNzcsIDEyOCwgMTExLCAyNDUsIDk4LCA1LCA3NywgOTYsIAorICAgIDUwLCA5NiwgNSwgNzcsIDI0NSwgOTgsIDUwLCAyNDUsIDk4LCA1LCA3NywgMjE2LCA4OSwgMjI2LCAxNjcsIDUyLCAyNDksIAorICAgIDIyNywgMjQ1LCA5OSwgMTEzLCAyNDksIDE5NCwgMjQ1LCA5OCwgMjE5LCAxNzYsIDEzNCwgMjQ5LCAxOTQsIDI0NSwgOTgsIAorICAgIDIxOSwgMTc2LCAyNDUsIDk4LCA1LCAyLCAxMTMsIDE3MCwgNzcsIDIyLCAxMTMsIDE3MCwgNTEsIDI0NSwgOTQsIDIsIDI0NCwgCisgICAgMTEsIDE3MCwgNDgsIDIzMywgMTUsIDIsIDI1MCwgMzYsIDIzNSwgMjE1LCAyNDIsIDEzMCwgMiwgMjUwLCAzNiwgMjM1LCAKKyAgICAyMTUsIDIzMywgMTUsIDIsIDIyNCwgMTMsIDE2NCwgNDgsIDI0MiwgMTMwLCAyLCAyMjQsIDEzLCAxNjQsIDQ4LCAyMzMsIAorICAgIDE1LCAxNzcsIDIxOSwgOTcsIDEyOCwgMTExLCAyNDIsIDEzMCwgMTc3LCAyMTksIDk3LCAxMjgsIDExMSwgMjMzLCAxNSwgCisgICAgMTc3LCAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIDIsIDU5LCAyMzUsIDIxNSwgMjQyLCAxMzAsIDE3NywgMjE5LCA5NywgMTI4LCAKKyAgICAyMTYsIDQyLCAyLCA1OSwgMjM1LCAyMTUsIDIzMywgMTUsIDE3NywgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAyLCA1OSwgNDgsIAorICAgIDI0MiwgMTMwLCAxNzcsIDIxOSwgOTcsIDEyOCwgMjE2LCA0MiwgMiwgNTksIDQ4LCAyMzMsIDE1LCAxNzcsIDIxOSwgOTcsIAorICAgIDEyOCwgMjE2LCA0MiwgMiwgNTksIDc3LCAyMjIsIDI1MSwgMjQyLCAxMzAsIDE3NywgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAKKyAgICAyLCA1OSwgNzcsIDIzMywgNDYsIDIzMywgMTUsIDE3NywgMjU0LCA0OSwgMjQyLCAxMzAsIDE3NywgMjU0LCA0OSwgMjMzLCAKKyAgICAxNSwgMjIsIDIxOSwgMTUzLCAyMjgsIDUyLCAxMjgsIDExMSwgMjQyLCAxMzAsIDIyLCAyMTksIDE1MywgMjI4LCA1MiwgCisgICAgMTI4LCAxMTEsIDIzMywgMTUsIDIyLCAyMjgsIDUyLCAyNTQsIDQ5LCAyNDIsIDEzMCwgMjIsIDIyOCwgNTIsIDI1NCwgNDksIAorICAgIDIzMywgMTUsIDc3LCAyNDYsIDExMSwgMTI4LCA3NywgMjQyLCAxMjksIDI0MiwgMTMwLCA3NywgMjQ2LCAxMTEsIDEyOCwgCisgICAgNzcsIDIzMywgMTQsIDIzMywgMTUsIDc3LCAyMTksIDE2MiwgMTc3LCAyNDUsIDk5LCAyNDIsIDEzMCwgNzcsIDIxOSwgMTYyLCAKKyAgICAxNzcsIDI0NSwgOTksIDIzMywgMTUsIDc3LCAyMTksIDE2MiwgNzcsIDI0MiwgMTI5LCAyNDIsIDEzMCwgNzcsIDIxOSwgCisgICAgMTYyLCA3NywgMjMzLCAxNCwgMjMzLCAxNSwgNzcsIDI0MiwgMTMwLCA3NywgMjQ2LCAxMTEsIDI0NSwgOTksIDI0MiwgMTMwLCAKKyAgICA3NywgMjMzLCAxNSwgNzcsIDI0NiwgMTExLCAyNDUsIDk5LCAyMzMsIDE1LCA3NywgMjE5LCA5NywgMTI4LCA3NywgMjQyLCAKKyAgICAxMzAsIDc3LCAyMTksIDk3LCAyNDUsIDk5LCAyNDIsIDEzMCwgNzcsIDIxOSwgOTcsIDEyOCwgNzcsIDIzMywgMTUsIDc3LCAKKyAgICAyMTksIDk3LCAyNDUsIDk5LCAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIDE3NywgMjMzLCAxNCwgMjE5LCA5NywgMTI4LCAyMTYsIAorICAgIDQyLCAxNzcsIDI0MiwgMTI5LCAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIDE3NywgMjMzLCAxNSwgMiwgNTksIDIzNSwgMjE1LCAKKyAgICAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIDE3NywgMjQyLCAxMzAsIDIsIDU5LCAyMzUsIDIxNSwgMjQ2LCAxMTEsIDEyOCwgCisgICAgMjE2LCA0MiwgMTc3LCAyMzMsIDE0LCAyNDYsIDExMSwgMTI4LCAyMTYsIDQyLCAxNzcsIDI0MiwgMTI5LCAyNDYsIDExMSwgCisgICAgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAxNzcsIDIzMywgMTQsIDI0NiwgMTExLCAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIAorICAgIDE3NywgMjQyLCAxMjksIDIxOSwgMTYyLCAxNzcsIDIzMywgMTQsIDIxOSwgMTYyLCAxNzcsIDI0MiwgMTI5LCAyMTksIDE2MiwgCisgICAgNzcsIDIzMywgMTUsIDc3LCAyNDUsIDk4LCA1MCwgMjE5LCAxNjIsIDc3LCAyNDIsIDEzMCwgNzcsIDI0NSwgOTgsIDUwLCAKKyAgICA1MiwgMjI5LCA5MSwgMjMzLCAxNCwgNTIsIDIyOSwgOTEsIDI0MiwgMTI5LCA1MiwgMjI5LCA5MSwgMjMzLCAxNSwgMiwgCisgICAgMjE0LCAxODMsIDI0MiwgMTMwLCAyMjYsIDEyMSwgMjMzLCAxNCwgMjQyLCAxMzAsIDI1MiwgMzAsIDIzMywgMTQsIDIzMywgCisgICAgMTUsIDI1MCwgMCwgMjUxLCA3OCwgMjQ5LCA5MiwgMjQyLCAxMzAsIDI1MCwgMCwgMjUxLCA3OCwgMjQ5LCA5MiwgMjMzLCAKKyAgICAxNSwgMjUwLCAwLCAyNTEsIDc4LCAyNDksIDkzLCA3NywgMjE5LCA5NywgMjQ1LCA5OSwgMjQyLCAxMzAsIDI1MCwgMCwgCisgICAgMjUxLCA3OCwgMjQ5LCA5MywgNzcsIDIxOSwgOTcsIDI0NSwgOTksIDIxOSwgNzgsIDIxNiwgMjAwLCAyMzMsIDgzLCAyMTYsIAorICAgIDIwMCwgMjE5LCA3OCwgMjE2LCAyMDEsIDE3NywgMTI4LCAxMTEsIDIzMywgODMsIDIxNiwgMjAxLCAxNzcsIDEyOCwgMTExLCAKKyAgICAyNDUsIDk4LCA1LCAyLCAyNTEsIDEwOCwgNDgsIDIyNCwgMjAzLCA3NywgMjE5LCAxNTMsIDI0NSwgOTgsIDUwLCAyMTgsIAorICAgIDU2LCA3NywgMjE5LCAxNTMsIDI0NSwgOTgsIDUwLCAyMjQsIDIwMywgNzcsIDIxOSwgMTUzLCAyMjgsIDUyLCAxMjgsIDExMSwgCisgICAgMjE4LCA1NiwgNzcsIDIxOSwgMTUzLCAyMjgsIDUyLCAxMjgsIDExMSwgMjI0LCAyMDMsIDc3LCAyNDUsIDk4LCA1MCwgMjE4LCAKKyAgICA1NiwgNzcsIDI0NSwgOTgsIDUwLCAyMjQsIDIwMywgNzcsIDIyOCwgNTIsIDEyOCwgMTExLCAyMTgsIDU2LCA3NywgMjI4LCAKKyAgICA1MiwgMTI4LCAxMTEsIDIyNCwgMjAzLCA3NywgMjU0LCAxNDgsIDEyOCwgMTExLCAyMTgsIDU2LCA3NywgMjU0LCAxNDgsIAorICAgIDEyOCwgMTExLCAyMjQsIDIwMywgNzcsIDIyOCwgNTIsIDI1NCwgMTQ4LCAxMjgsIDExMSwgMjE4LCA1NiwgNzcsIDIyOCwgCisgICAgNTIsIDI1NCwgMTQ4LCAxMjgsIDExMSwgNTIsIDIyNCwgMjAyLCA1MiwgMjE4LCA1NSwgMjE4LCA2NCwgMiwgMjQ3LCAxMjAsIAorICAgIDIxOCwgMjIsIDIsIDI0NywgMTIwLCAyMTgsIDY0LCAyLCA5NiwgNSwgNTEsIDIxOCwgMjIsIDIsIDk2LCA1LCA1MSwgMjE4LCAKKyAgICA2NCwgMiwgMjMwLCA4NCwgNSwgNTEsIDIxOCwgMjIsIDIsIDIzMCwgODQsIDUsIDUxLCAyMTgsIDY0LCA2NCwgMTc3LCAxMjgsIAorICAgIDIxNiwgNDIsIDIsIDU5LCA0OCwgMjE4LCAyMiwgNjQsIDE3NywgMTI4LCAyMTYsIDQyLCAyLCA1OSwgNDgsIDIxOCwgNjQsIAorICAgIDY0LCA3NywgMjQ1LCA5OCwgNTAsIDIxOCwgMjIsIDY0LCA3NywgMjQ1LCA5OCwgNTAsIDIxOCwgNjQsIDY0LCA3NywgMjE2LCAKKyAgICA4OSwgMjI2LCAxNjcsIDIxOCwgMjIsIDY0LCA3NywgMjE2LCA4OSwgMjI2LCAxNjcsIDIxOCwgNjQsIDY0LCA3NywgMjU0LCAKKyAgICAxNDgsIDEyOCwgMTExLCAyMTgsIDIyLCA2NCwgNzcsIDI1NCwgMTQ4LCAxMjgsIDExMSwgMjE4LCA2NCwgNjQsIDc3LCAyMjgsIAorICAgIDUyLCAxMjgsIDExMSwgMjE4LCAyMiwgNjQsIDc3LCAyMjgsIDUyLCAxMjgsIDExMSwgNDIsIDQzLCAyMDQsIDkzLCAyMjYsIAorICAgIDE2NywgNDIsIDQ0LCAyMDQsIDkzLCAyMjYsIDE2NywgMjUwLCAwLCAyMTgsIDYzLCAyNTAsIDAsIDIxOCwgMjEsIDI1MCwgMCwgCisgICAgMjE4LCA2NCwgMTc3LCAxMjgsIDExMSwgMjUwLCAwLCAyMTgsIDIyLCAxNzcsIDEyOCwgMTExLCAyMTgsIDY0LCA3NywgMjE4LCAKKyAgICAyMSwgMjE4LCAyMiwgNzcsIDIxOCwgNjMsIDIxOCwgNjQsIDc3LCAyMTgsIDYzLCAyMTgsIDIyLCA3NywgMjE4LCAyMSwgCisgICAgMjE4LCAyMiwgMjUyLCAzMCwgMjE4LCA2MywgMjE4LCAyMiwgMjUyLCAzMCwgMjIsIDIzNSwgNjUsIDI1MSwgNzgsIDI0OCwgCisgICAgMTU3LCAyLCAyMTgsIDYzLCAyNDUsIDE3MCwgNjQsIDIyNiwgMTcwLCAyNDYsIDEwMywgMjI1LCA0OCwgMiwgMjE3LCAxMiwgCisgICAgMjE2LCAxMywgMjE1LCAyNDAsIDIzNSwgMTk4LCAyNDQsIDIxLCAyMjgsIDY1LCAyMTksIDI1MSwgNDMsIDIxNywgODcsIAorICAgIDIxOSwgMjUxLCAxMjQsIDIxNywgODcsIDIxOSwgMjUxLCAxMjAsIDIxNywgODcsIDIyNSwgMTcyLCAyLCAyMjIsIDkxLCA2NywgCisgICAgMjUyLCAxNDEsIDIxNSwgMjExLCA0NCwgMjE1LCA5MywgNTIsIDY3LCAyNTIsIDE0MSwgNDMsIDIxNSwgOTMsIDY3LCAyNTIsIAorICAgIDE0MSwgNTIsIDQzLCAyMTUsIDkzLCA1MiwgNjcsIDI1MiwgMTQxLCA1MiwgNDMsIDIxNSwgOTMsIDE5OSwgMjQ4LCAxNTcsIAorICAgIDI0MywgMjQzLCA0MywgMjMxLCA2MywgNjQsIDUyLCAyMTMsIDIzOSwgMjE5LCAyNTEsIDEyNCwgMjE3LCA4OCwgMiwgMjI2LCAKKyAgICAxMjMsIDIxOSwgMjUxLCAxMjAsIDIxNywgODgsIDIsIDIxNCwgMTgzLCAyMTksIDI1MSwgMTIwLCAyMTcsIDg4LCA3NywgCisgICAgMjE5LCAyNTEsIDEyNCwgMjE3LCA4NywgNTIsIDEyNCwgMjE3LCA4NywgNTIsIDEyMCwgMjE3LCA4NywgNTIsIDIxOCwgMTAzLCAKKyAgICAyMjgsIDUyLCA1MCwgMjIzLCA0OSwgNTIsIDIxOCwgMTAzLCAyMjgsIDUyLCA1MCwgMjQ3LCAxMzgsIDIyOCwgNTIsIDI0NywgCisgICAgMTc1LCAyLCAyMjMsIDQ5LCAyMjksIDEwMSwgMjE5LCA5NSwgNjcsIDIzMiwgMjE0LCAyLCAyNTAsIDM2LCA0OCwgNjcsIAorICAgIDIzMiwgMjE0LCAyLCAyNTAsIDM2LCA1MSwgMTI0LCAyMTcsIDg4LCAyLCAyNTAsIDM2LCA1MSwgMjI2LCA4LCAyLCAyMDMsIAorICAgIDkxLCAyMjYsIDgsIDIsIDIxNiwgODksIDIyNiwgMTY3LCAyMTUsIDIxMSwgNjcsIDI1MiwgMTQxLCAyNTEsIDI0NCwgMjIzLCAKKyAgICA5MSwgMjE1LCAyMTEsIDY3LCAyNTIsIDE0MSwgMiwgMjAzLCA5MSwgMjE1LCAyMTEsIDI0OSwgMjI3LCAyMjYsIDE2NywgCisgICAgMjE1LCAyMTEsIDIyOSwgOTEsIDIzMywgMTQsIDIxNSwgMjExLCAyMjksIDkxLCAyNDIsIDEyOSwgMjQ2LCAxMTEsIDIxOSwgCisgICAgOTcsIDIzMywgMTUsIDE3NywgMTI4LCAxMTEsIDI0NiwgMTExLCAyMTksIDk3LCAyNDIsIDEzMCwgMTc3LCAxMjgsIDExMSwgCisgICAgMjE1LCAyMTEsIDIxOSwgNDcsIDI1MSwgMjQ0LCAyMjMsIDkxLCAyMzMsIDg1LCAyMTUsIDIxMSwgNjcsIDI1MiwgMTQxLCAKKyAgICAyMjYsIDE2NywgNTIsIDIxOSwgNDcsIDIyNiwgMTY3LCA3MSwgNjcsIDEzMCwgMjMwLCAyNCwgNzEsIDY3LCAxMzAsIDIyOCwgCisgICAgNTYsIDI0NSwgMjIwLCA3MSwgNzQsIDIyOCwgNTYsIDIxMiwgOSwgNzEsIDc0LCAyMTksIDI4LCAyNDUsIDIyMCwgNzEsIDc0LCAKKyAgICAyMTksIDI4LCAyMTIsIDksIDcxLCA3NCwgNDMsIDQ0LCA3MSwgNzQsIDE0MCwgODUsIDc0LCAyMTQsIDE1MywgODUsIDc0LCAKKyAgICAyNDYsIDEwNCwgODUsIDc0LCAyMjgsIDU2LCAyNDUsIDIyMCwgODUsIDc0LCAyMjgsIDU2LCAyMTIsIDksIDg1LCA3NCwgCisgICAgMjE5LCAyOCwgMjQ1LCAyMjAsIDg1LCA3NCwgMjE5LCAyOCwgMjEyLCA5LCA4NSwgNzQsIDQzLCA0NCwgODUsIDc0LCAxMjAsIAorICAgIDEyNCwgODUsIDc0LCA5NywgODAsIDIsIDIxNiwgNzcsIDI0NiwgMTAzLCA5NywgODAsIDIsIDIxNiwgNzcsIDIxNCwgMTUyLCAKKyAgICAxNDAsIDgwLCAyLCAyMTYsIDc3LCAyNDYsIDEwMywgMTQwLCA4MCwgMiwgMjE2LCA3NywgMjE0LCAxNTIsIDQyLCAyLCAyMTYsIAorICAgIDE0LCAxNjMsIDI1MSwgMjIxLCA0MiwgMiwgMjUxLCAxNzUsIDE2MywgMjUxLCAyMjEsIDQyLCAyLCAyMTQsIDE2MCwgNDQsIAorICAgIDI0NywgMjU1LCAxNjMsIDI1MSwgMjIxLCA0MiwgMiwgMjMyLCAxMDgsIDQzLCAyNDcsIDI1NSwgMTYzLCAyNTEsIDIyMSwgCisgICAgMjQ3LCAyNDksIDIsIDQzLCAxNjMsIDI1MSwgMjIxLCAyNDcsIDI0OSwgMiwgNDQsIDE2MywgMjUxLCAyMjEsIDI0NywgMjQ5LCAKKyAgICAyLCAyMTYsIDE0LCAxNjMsIDI1MSwgMjIxLCAyNDcsIDI0OSwgMiwgMjUxLCAxNzUsIDE2MywgMjUxLCAyMjEsIDI0NiwgCisgICAgMTE4LCAyMTgsIDIzNCwgODUsIDIzMywgODUsIDIxOCwgMjM0LCA3MSwgMjMzLCA4NSwgMjE4LCAyMzQsIDg1LCAyMTMsIAorICAgIDE4NywgNCwgMjE4LCAyMzQsIDcxLCAyMTMsIDE4NywgNCwgMjE4LCAyMzQsIDg1LCAyMjUsIDE5MCwgNzEsIDIyNSwgMTkwLCAKKyAgICA3MSwgMjQxLCAxOTMsIDg1LCAyNDEsIDE5MywgMjAzLCA4NSwgMjQxLCAxOTMsIDg1LCAyMzMsIDg1LCAyNTAsIDM1LCA4NSwgCisgICAgMjMxLCA4MiwgMjQ3LCAyNDgsIDcxLCAyMzEsIDgyLCAyNDcsIDI0OCwgODUsIDIzMSwgODIsIDIzMiwgMTA0LCA3MSwgMjMxLCAKKyAgICA4MiwgMjMyLCAxMDQsIDg1LCA0LCAyNDcsIDI0OCwgODUsIDQsIDIzMiwgMTA0LCA3MSwgNCwgMjMyLCAxMDQsIDg1LCAyMDMsIAorICAgIDI0NSwgMTY0LCA3MSwgMjAzLCAyNDUsIDE2NCwgODUsIDY3LCAyNDUsIDE2NCwgNzEsIDY3LCAyNDUsIDE2NCwgNDMsIDgwLCAKKyAgICAyLCA0LCAyNTAsIDM1LCAxMzQsIDE0MCwgMjUzLCAyNDcsIDQzLCA4MCwgMiwgMzcsIDIyNSwgMjIsIDE5OSwgMTQwLCAyMTgsIAorICAgIDIzMCwgNzQsIDE0MCwgMjE1LCA1OCwgODAsIDIsIDY3LCA5MSwgMTQwLCAyMTUsIDU4LCA4MCwgMiwgNTIsIDY3LCA5MSwgCisgICAgMTQwLCAyMTUsIDU4LCA4MCwgMjQzLCAyNDMsIDEzMCwgMTQwLCAyMTUsIDU4LCAyMTUsIDIxMSwgMjQ4LCAxNTcsIDc0LCAKKyAgICAxNDAsIDgwLCAyLCAyNDYsIDExOCwgMjE4LCAxMzksIDE0MCwgODAsIDIsIDIxNywgNzgsIDIsIDY3LCA5MSwgMTQwLCA4MCwgCisgICAgMiwgMjE3LCA3OCwgMiwgNTIsIDY3LCA5MSwgMTQwLCAyMTUsIDU4LCA4MCwgMiwgMjE3LCA3NywgMTQwLCAyMTUsIDU4LCAKKyAgICA4MCwgMiwgMjE3LCA3OCwgMiwgNjcsIDkxLCAxNDAsIDIxNSwgNTgsIDgwLCAyLCAyMTcsIDc4LCAyLCA1MiwgNjcsIDkxLCAKKyAgICAxNDAsIDgwLCAyMTYsIDEzOSwgMjExLCAxNzgsIDIxMiwgMzYsIDgwLCAyMjUsIDcsIDI0NywgMTk1LCAyMzMsIDQ2LCAyNDUsIAorICAgIDk4LCA1LCA3NywgMTQwLCA3NCwgMjIzLCA1MCwgMjE2LCA4OSwgMjI2LCAxNjgsIDc3LCAxNDAsIDc0LCAxNDAsIDgwLCA3NywgCisgICAgMjIzLCA1MCwgMjU0LCAxNDgsIDEyOCwgMTExLCA5NywgODAsIDIxNiwgMTM5LCAyNDIsIDEyOSwgOTcsIDgwLCAyMTYsIAorICAgIDEzOSwgMjE4LCAyMSwgMTQwLCAyMjQsIDI0LCA3NCwgOTcsIDIyNCwgMjQsIDc0LCAyMjMsIDUwLCAyMTYsIDg5LCAyMjYsIAorICAgIDE2OCwgNzcsIDk3LCA3NCwgOTcsIDgwLCA3NywgMjIzLCA1MCwgMjU0LCAxNDgsIDEyOCwgMTExLCAyMTYsIDg5LCAyMjYsIAorICAgIDE2OCwgNzcsIDE0MCwgNzQsIDE0MCwgODAsIDc3LCAyNTQsIDE0OCwgMTI4LCAxMTEsIDE0MCwgODAsIDc3LCAyMjMsIDUwLCAKKyAgICAyMTYsIDg5LCAyMjYsIDE2NywgOTcsIDgwLCA3NywgMjIzLCA1MCwgMjE2LCA4OSwgMjI2LCAxNjcsIDcxLCAyMzEsIDgyLCAKKyAgICAyMTgsIDE1NiwgODUsIDQsIDIxOCwgMTU2LCA3MSwgNCwgMjE4LCAxNTYsIDg1LCAyMjIsIDI0NywgMjI1LCAxOTAsIDcxLCAKKyAgICAyMjIsIDI0NywgMjI1LCAxOTAsIDExNCwgMjMzLCA4NSwgMjUwLCAzNSwgMTE0LCAyMjYsIDEyNCwgMiwgMjI2LCAxMjQsIAorICAgIDIzNSwgMjE1LCAxMTQsIDI1MCwgMzYsIDIsIDI1MCwgMzYsIDIzNSwgMjE1LCAxMTQsIDI1MCwgMzUsIDExNCwgMzcsIDIyMSwgCisgICAgMjU0LCAxNDUsIDYsIDEsIDI1MywgMTU5LCAxNDUsIDYsIDEsIDI1MSwgMTE3LCAxNDUsIDYsIDEsIDIxMywgMjUzLCAxNDUsIAorICAgIDYsIDEsIDI0MiwgMTg1LCAxNDUsIDYsIDEsIDI0NywgMTQwLCAxNDUsIDYsIDEsIDIxMSwgMjEsIDE0NSwgNiwgMSwgMjEwLCAKKyAgICA2OCwgMTQ1LCA2LCAxLCAyNDYsIDM0LCAxNDUsIDYsIDEsIDIxMCwgOTEsIDE0NSwgNiwgMSwgMjM1LCAxNDgsIDE0NSwgNiwgCisgICAgMSwgNjUsIDIzNSwgMTQ4LCAxNDUsIDYsIDEsIDczLCAxNDUsIDYsIDEsIDI0NywgMTYwLCAxNDUsIDYsIDEsIDIzNCwgMjQwLCAKKyAgICAxNDUsIDYsIDEsIDIzMiwgMTg2LCAxNDUsIDYsIDEsIDIzMCwgMjksIDE0NSwgNiwgMSwgMjI5LCAxOTEsIDE0NSwgNiwgMSwgCisgICAgMjI2LCAxODUsIDE0NSwgNiwgMSwgMjI1LCA0LCAxNDUsIDYsIDEsIDIyMiwgMjI3LCAxNDUsIDYsIDEsIDIxOSwgODMsIAorICAgIDE0NSwgNiwgMSwgMjE1LCA4MSwgMTQ1LCA2LCAxLCAyMTQsIDIwMSwgMTQ1LCA2LCAxLCAyNDMsIDI0NiwgMTQ1LCA2LCAxLCAKKyAgICAyNDEsIDE5OSwgMTQ1LCA2LCAxLCAyMjYsIDEzNSwgMTQ1LCA2LCAxLCAyMjUsIDIyMSwgMTQ1LCA2LCAxLCAyMTksIDIyOCwgCisgICAgMTQ1LCA2LCAxLCAyMTUsIDE2NywgMTQ1LCA2LCAxLCAyNTAsIDc1LCAxNDUsIDYsIDEsIDIyMCwgMTAyLCAxNDUsIDYsIDEsIAorICAgIDIxMSwgMjcsIDE0NSwgNiwgMSwgMjExLCAyOSwgMTQ1LCA2LCAxLCAyMTEsIDU3LCAxNDUsIDYsIDEsIDIxOCwgMjUzLCAKKyAgICAxNjIsIDE0NSwgNiwgMSwgMjEwLCAyMTIsIDE0NSwgNiwgMSwgNCwgMjEwLCAxODMsIDE0NSwgNiwgMSwgNCwgMjEwLCAxODQsIAorICAgIDIsIDIxNywgNzcsIDE0NSwgNiwgMSwgMjEwLCAyNDQsIDE0NSwgNiwgMSwgMjM1LCAxODQsIDQsIDIxMCwgMTgzLCAxNDUsIAorICAgIDYsIDEsIDI1MSwgMjQ5LCAyMTAsIDE4MywgMTQ1LCA2LCAxLCAyMzUsIDE4NCwgMjUxLCAyNDksIDIxMCwgMTgzLCAxNDUsIAorICAgIDYsIDEsIDI0NCwgODIsIDE0NSwgNiwgMSwgMjM1LCAxNDYsIDE0NSwgNiwgMSwgMjE5LCAyMjcsIDE0NSwgNiwgMSwgMjE1LCAKKyAgICAyMDIsIDYxLCAxNDUsIDYsIDEsIDIzMywgNzUsIDIzMCwgMjksIDE0NSwgNCwgMSwgMjUzLCAxNTksIDE0NSwgNCwgMSwgCisgICAgMjUxLCAxMTcsIDE0NSwgNCwgMSwgMjEzLCAyNTMsIDE0NSwgNCwgMSwgMjQyLCAxODUsIDE0NSwgNCwgMSwgMjQ3LCAxNDAsIAorICAgIDE0NSwgNCwgMSwgMjExLCAyMSwgMTQ1LCA0LCAxLCAyMTAsIDY4LCAxNDUsIDQsIDEsIDI0NiwgMzQsIDE0NSwgNCwgMSwgCisgICAgMjEwLCA5MSwgMTQ1LCA0LCAxLCAyMzUsIDE0OCwgMTQ1LCA0LCAxLCA2NSwgMjM1LCAxNDgsIDE0NSwgNCwgMSwgNzMsIAorICAgIDE0NSwgNCwgMSwgMjQ3LCAxNjAsIDE0NSwgNCwgMSwgMjM0LCAyNDAsIDE0NSwgNCwgMSwgMjMyLCAxODYsIDE0NSwgNCwgMSwgCisgICAgMjMwLCAyOSwgMTQ1LCA0LCAxLCAyMjksIDE5MSwgMTQ1LCA0LCAxLCAyMjYsIDE4NSwgMTQ1LCA0LCAxLCAyMjUsIDQsIAorICAgIDE0NSwgNCwgMSwgMjIyLCAyMjcsIDE0NSwgNCwgMSwgMjE5LCA4MywgMTQ1LCA0LCAxLCAyMTUsIDgxLCAxNDUsIDQsIDEsIAorICAgIDIxNCwgMjAxLCAxNDUsIDQsIDEsIDI0MywgMjQ2LCAxNDUsIDQsIDEsIDI0MSwgMTk5LCAxNDUsIDQsIDEsIDIyNiwgMTM1LCAKKyAgICAxNDUsIDQsIDEsIDIyNSwgMjIxLCAxNDUsIDQsIDEsIDIxOSwgMjI4LCAxNDUsIDQsIDEsIDIxNSwgMTY3LCAxNDUsIDQsIDEsIAorICAgIDI1MCwgNzUsIDE0NSwgNCwgMSwgMjIwLCAxMDIsIDE0NSwgNCwgMSwgMjExLCAyNywgMTQ1LCA0LCAxLCAyMTEsIDI5LCAKKyAgICAxNDUsIDQsIDEsIDIxMSwgNTcsIDE0NSwgNCwgMSwgMjE4LCAyNTMsIDE2MiwgMTQ1LCA0LCAxLCAyMTAsIDIxMiwgMTQ1LCAKKyAgICA0LCAxLCA0LCAyMTAsIDE4MywgMTQ1LCA0LCAxLCA0LCAyMTAsIDE4NCwgMiwgMjE3LCA3NywgMTQ1LCA0LCAxLCAyMTAsIAorICAgIDI0NCwgMTQ1LCA0LCAxLCAyMzUsIDE4NCwgNCwgMjEwLCAxODMsIDE0NSwgNCwgMSwgMjUxLCAyNDksIDIxMCwgMTgzLCAKKyAgICAxNDUsIDQsIDEsIDIzNSwgMTg0LCAyNTEsIDI0OSwgMjEwLCAxODMsIDE0NSwgNCwgMSwgMjQ0LCA4MiwgMTQ1LCA0LCAxLCAKKyAgICAyMzUsIDE0NiwgMTQ1LCA0LCAxLCAyMTksIDIyNywgMTQ1LCA0LCAxLCAyMTUsIDIwMiwgNjEsIDE0NSwgNCwgMSwgMjMzLCAKKyAgICA3NSwgMjMwLCAyOSwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDUyLCAxMzAsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCA1MiwgCisgICAgMTMwLCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNiwgMSwgMjI2LCAxMDYsIDIsIDkxLCA3LCA2LCAKKyAgICAxLCAyMjMsIDIyNCwgMiwgMjE3LCA3NywgNywgNCwgMSwgMTE1LCAyLCA5MSwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDI0NywgCisgICAgMjU1LCA5MSwgNywgNiwgMSwgMjQyLCA2MSwgMiwgMjQ4LCAzOSwgNywgNCwgMSwgMjQyLCA2MSwgMiwgMjQ4LCAzOSwgNywgCisgICAgNiwgMSwgMjM1LCAyNCwgMiwgMjQ4LCAzOSwgNywgNCwgMSwgMjM1LCAyNCwgMiwgMjQ4LCAzOSwgNywgNiwgMSwgMjEwLCAKKyAgICAxNjAsIDIsIDI0OCwgMzksIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyNDgsIDM5LCA3LCA2LCAxLCAyNTQsIDE0MywgNywgNiwgCisgICAgMSwgMjMyLCA1MCwgMiwgMTAzLCA3LCA2LCAxLCAyMTUsIDk0LCA2MSwgNywgNiwgMSwgMjE1LCA5NCwgMjU0LCAxNDMsIDcsIAorICAgIDQsIDEsIDIxNCwgMTA2LCAyLCA0NCwgMTAzLCA3LCA2LCAxLCAyMTIsIDk5LCAyLCAxMDMsIDcsIDQsIDEsIDIxMiwgOTksIAorICAgIDIsIDEwMywgNywgNCwgMSwgMjE0LCAxMDYsIDIsIDI0OSwgMTAwLCA3LCA2LCAxLCAxNjMsIDI0MiwgNjAsIDcsIDQsIDEsIAorICAgIDE2MywgMjQyLCA2MCwgNywgNCwgMSwgMjE3LCA3NSwgMjI1LCAxMzMsIDcsIDQsIDEsIDE2MCwgMiwgMjI4LCA1MCwgNywgNCwgCisgICAgMSwgMjE1LCA5NCwgMjIzLCAyMjQsIDIsIDIxNywgNzcsIDcsIDQsIDEsIDE0NCwgMiwgMTIxLCAyMjIsIDIzNCwgMjM1LCAKKyAgICAyMTUsIDcsIDEsIDQsIDYsIDIxNSwgOTQsIDc1LCA3LCAyMTgsIDY1LCA0LCAxLCAyMzUsIDE0NCwgNTgsIDEsIDYsIDIxNCwgCisgICAgMTA1LCA3LCA2LCAxLCAyMjIsIDkyLCAyLCAyMTcsIDI1MCwgMjE3LCA3NywgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDIxNywgCisgICAgMjUwLCAyMTcsIDc3LCA4MSwgNiwgMSwgMjU0LCAxNjQsIDgxLCA0LCAxLCAyNTQsIDE2NCwgODEsIDYsIDEsIDIxMywgMTczLCAKKyAgICA4MSwgNCwgMSwgMjEzLCAxNzMsIDgxLCA2LCAxLCAyNDMsIDEwNywgODEsIDQsIDEsIDI0MywgMTA3LCA4MSwgNiwgMSwgCisgICAgMjQ4LCAxOTEsIDgxLCA0LCAxLCAyNDgsIDE5MSwgODEsIDYsIDEsIDI0NSwgMTk0LCA4MSwgNCwgMSwgMjQ1LCAxOTQsIDgxLCAKKyAgICA2LCAxLCAyMTksIDMzLCA4MSwgNCwgMSwgMjE5LCAzMywgODEsIDYsIDEsIDIxMCwgMTAxLCA4MSwgNCwgMSwgMjEwLCAxMDEsIAorICAgIDgxLCA2LCAxLCAyNDEsIDI0OCwgODEsIDQsIDEsIDI0MSwgMjQ4LCA4MSwgNiwgMSwgMjE2LCAxNzcsIDgxLCA0LCAxLCAKKyAgICAyMTYsIDE3NywgODEsIDYsIDEsIDI0MCwgMTE2LCA4MSwgNCwgMSwgMjQwLCAxMTYsIDgxLCA2LCAxLCAyMzQsIDIyNywgODEsIAorICAgIDQsIDEsIDIzNCwgMjI3LCA4MSwgNiwgMSwgMjMzLCA3MiwgODEsIDQsIDEsIDIzMywgNzIsIDgxLCA2LCAxLCAyMzAsIDIzMCwgCisgICAgODEsIDQsIDEsIDIzMCwgMjMwLCA4MSwgNiwgMSwgMjI4LCAyMzMsIDgxLCA0LCAxLCAyMjgsIDIzMywgODEsIDYsIDEsIAorICAgIDIzMywgMjMzLCA4MSwgNCwgMSwgMjMzLCAyMzMsIDgxLCA2LCAxLCA3NiwgODEsIDQsIDEsIDc2LCA4MSwgNiwgMSwgMjI1LCAKKyAgICAxMDgsIDgxLCA0LCAxLCAyMjUsIDEwOCwgODEsIDYsIDEsIDIyMiwgMjExLCA4MSwgNCwgMSwgMjIyLCAyMTEsIDgxLCA2LCAKKyAgICAxLCAyMTksIDE2NSwgODEsIDQsIDEsIDIxOSwgMTY1LCA4MSwgNiwgMSwgMjE3LCA0MSwgODEsIDQsIDEsIDIxNywgNDEsIAorICAgIDgxLCA2LCAxLCAyMTQsIDIyOSwgODEsIDQsIDEsIDIxNCwgMjI5LCA4MSwgNiwgMSwgMjQ0LCAxMjEsIDgxLCA0LCAxLCAKKyAgICAyNDQsIDEyMSwgODEsIDYsIDEsIDIzNCwgMTEyLCA4MSwgNCwgMSwgMjM0LCAxMTIsIDgxLCA2LCAxLCAyMjQsIDE2MSwgODEsIAorICAgIDQsIDEsIDIyNCwgMTYxLCA4MSwgNiwgMSwgMjI2LCAxNzgsIDgxLCA0LCAxLCAyMjYsIDE3OCwgODEsIDYsIDEsIDI0NywgCisgICAgMjUzLCAyNTQsIDE3MCwgODEsIDQsIDEsIDI0NywgMjUzLCAyNTQsIDE3MCwgODEsIDYsIDEsIDU1LCA4MSwgMjU0LCAxOTYsIAorICAgIDgxLCA0LCAxLCA1NSwgODEsIDI1NCwgMTk2LCA4MSwgNiwgMSwgMjQ5LCAxMTUsIDI0NSwgMTk0LCA4MSwgNCwgMSwgMjQ5LCAKKyAgICAxMTUsIDI0NSwgMTk0LCA4MSwgNiwgMSwgMjQ3LCAyNTMsIDIzNCwgMjI3LCA4MSwgNCwgMSwgMjQ3LCAyNTMsIDIzNCwgCisgICAgMjI3LCA4MSwgNiwgMSwgMjQ3LCAyNTMsIDIyOCwgMjMzLCA4MSwgNCwgMSwgMjQ3LCAyNTMsIDIyOCwgMjMzLCA4MSwgNiwgCisgICAgMSwgMjQ5LCAxMTUsIDIyOCwgMjMzLCA4MSwgNCwgMSwgMjQ5LCAxMTUsIDIyOCwgMjMzLCA4MSwgNiwgMSwgNTUsIDgxLCAKKyAgICAyMjYsIDE3OCwgODEsIDQsIDEsIDU1LCA4MSwgMjI2LCAxNzgsIDgxLCA2LCAxLCAyMjEsIDI0NiwgODEsIDQsIDEsIDIyMSwgCisgICAgMjQ2LCA4MSwgNiwgMSwgMjQ5LCAxMjgsIDIyMCwgNTUsIDgxLCA0LCAxLCAyNDksIDEyOCwgMjIwLCA1NSwgODEsIDYsIDEsIAorICAgIDU1LCA4MSwgMjIwLCA1NSwgODEsIDQsIDEsIDU1LCA4MSwgMjIwLCA1NSwgODEsIDYsIDEsIDU1LCA4MSwgMjQ1LCA3NSwgCisgICAgODEsIDQsIDEsIDU1LCA4MSwgMjQ1LCA3NSwgODEsIDYsIDEsIDI1NCwgMTgyLCAyMzQsIDExNywgODEsIDQsIDEsIDI1NCwgCisgICAgMTgyLCAyMzQsIDExNywgODEsIDYsIDEsIDI0NywgMjUzLCAyNDEsIDQ1LCA4MSwgNCwgMSwgMjQ3LCAyNTMsIDI0MSwgNDUsIAorICAgIDgxLCA2LCAxLCA1NSwgODEsIDI0MSwgNDUsIDgxLCA0LCAxLCA1NSwgODEsIDI0MSwgNDUsIDgxLCA2LCAxLCA1NSwgODEsIAorICAgIDE2MiwgODEsIDQsIDEsIDU1LCA4MSwgMTYyLCA4MSwgNiwgMSwgMjMzLCAxNDgsIDE2MiwgODEsIDQsIDEsIDIzMywgMTQ4LCAKKyAgICAxNjIsIDgxLCA2LCAxLCA1NSwgODEsIDI0MSwgMjE3LCA4MSwgNCwgMSwgNTUsIDgxLCAyNDEsIDIxNywgODEsIDYsIDEsIAorICAgIDU1LCA4MSwgMjQxLCAyNTEsIDgxLCA0LCAxLCA1NSwgODEsIDI0MSwgMjUxLCA4MSwgNiwgMSwgNTUsIDgxLCAyNDMsIDEwMiwgCisgICAgODEsIDQsIDEsIDU1LCA4MSwgMjQzLCAxMDIsIDgxLCA2LCAxLCA1NSwgODEsIDI0NywgMTYzLCA4MSwgNCwgMSwgNTUsIDgxLCAKKyAgICAyNDcsIDE2MywgODEsIDYsIDEsIDU1LCA4MSwgMjIwLCAyMiwgODEsIDQsIDEsIDU1LCA4MSwgMjIwLCAyMiwgODEsIDYsIDEsIAorICAgIDU1LCAyMjcsIDIwOCwgMjIwLCAyMiwgODEsIDQsIDEsIDU1LCAyMjcsIDIwOCwgMjIwLCAyMiwgODEsIDYsIDEsIDU1LCAKKyAgICAyMjcsIDIwOCwgMjI5LCAyNywgODEsIDQsIDEsIDU1LCAyMjcsIDIwOCwgMjI5LCAyNywgODEsIDYsIDEsIDU1LCAyMjcsIAorICAgIDIwOCwgMjI3LCAxNDgsIDgxLCA0LCAxLCA1NSwgMjI3LCAyMDgsIDIyNywgMTQ4LCA4MSwgNiwgMSwgNTUsIDIyNywgMjA4LCAKKyAgICAyMTIsIDM3LCA4MSwgNCwgMSwgNTUsIDIyNywgMjA4LCAyMTIsIDM3LCA4MSwgMTYsIDIzNCwgMjQ2LCA4MSwgMTYsIDIzMCwgCisgICAgMjMxLCAyMjIsIDIxMSwgODEsIDE2LCAyMjUsIDEwOSwgMjIyLCAyMTEsIDgxLCAxNiwgMjE4LCAxNDcsIDgxLCAxNiwgMjE3LCAKKyAgICA0MiwgMjIyLCAyMTEsIDgxLCAxNiwgMjM0LCAxMTMsIDIyMiwgMjExLCA4MSwgMTYsIDIyMCwgMjMsIDIxOSwgMTY1LCA4MSwgCisgICAgNiwgMSwgMjQ5LCAxMTUsIDIyMCwgNTUsIDgxLCA0LCAxLCAyNDksIDExNSwgMjIwLCA1NSwgODEsIDYsIDEsIDI0OSwgMTE1LCAKKyAgICAyNDMsIDEwMiwgODEsIDQsIDEsIDI0OSwgMTE1LCAyNDMsIDEwMiwgODEsIDM4LCAyMjgsIDIzNCwgNDgsIDgxLCAzOCwgCisgICAgMjE4LCAyNDcsIDI1MywgMjI0LCA4MSwgMzgsIDIxOCwgMjQ3LCAyMzMsIDIxLCA4MSwgNiwgMSwgMjUxLCAxOTksIDIzNCwgCisgICAgMTE3LCA4MSwgNCwgMSwgMjUxLCAxOTksIDIzNCwgMTE3LCA4MSwgNTUsIDIyNywgMjA4LCAyNDMsIDIyOSwgMjE4LCAxMjksIAorICAgIDgxLCA1NSwgMjI3LCAyMDgsIDI0NywgMTk3LCAyMjQsIDEzLCA3OCwgODEsIDU1LCAyMjcsIDIwOCwgMjM1LCAyMzcsIDIyNCwgCisgICAgMTMsIDc4LCA4MSwgNTUsIDIyNywgMjA4LCAyMTMsIDI0MSwgMjQ3LCAxNzIsIDgxLCAyNDQsIDIsIDEyMywgMjQyLCAyNywgCisgICAgODEsIDI0MywgMjI5LCAyMTgsIDEyOSwgODEsIDIzMCwgMTI0LCAyNDcsIDE3MiwgOTgsIDQsIDEsIDI1NCwgMTIzLCA5OCwgCisgICAgNCwgMSwgMjUyLCAxNTIsIDk4LCA0LCAxLCAyNDMsIDEwNiwgOTgsIDQsIDEsIDI0NywgMTI4LCA5OCwgNCwgMSwgMjQ1LCAKKyAgICAxNTAsIDk4LCA0LCAxLCAyMTMsIDE2MCwgOTgsIDQsIDEsIDIxMCwgODksIDk4LCA0LCAxLCAyMTcsIDYwLCA5OCwgNCwgMSwgCisgICAgMjM1LCAyNTUsIDk4LCA0LCAxLCAyMzQsIDIzNCwgOTgsIDQsIDEsIDIzMywgODEsIDk4LCA0LCAxLCAyMzEsIDE4NSwgOTgsIAorICAgIDQsIDEsIDIyOSwgMTk1LCA5OCwgNCwgMSwgMjI2LCAxOTYsIDk4LCA0LCAxLCAyMjYsIDE3LCA5OCwgNCwgMSwgMjEwLCA3OCwgCisgICAgOTgsIDQsIDEsIDIyMywgMTcxLCA5OCwgNCwgMSwgMjIxLCAyNDMsIDk4LCA0LCAxLCAyMTcsIDUwLCA5OCwgNCwgMSwgMjE0LCAKKyAgICAxOTAsIDk4LCA0LCAxLCAyMjUsIDE0MCwgOTgsIDQsIDEsIDIzNCwgMTIxLCA5OCwgNCwgMSwgMjQyLCAyNDEsIDk4LCA0LCAKKyAgICAxLCAyMjQsIDczLCA5OCwgNCwgMSwgMjIwLCAyMCwgOTgsIDQsIDEsIDI1MCwgOTcsIDk4LCA0LCAxLCAyNTEsIDcsIDk4LCAKKyAgICA0LCAxLCAyMzUsIDEwMCwgOTgsIDQsIDEsIDI1MCwgNDAsIDk4LCA0LCAxLCAyNTAsIDE0MywgOTgsIDQsIDEsIDIxMSwgCisgICAgMTYzLCA5OCwgNCwgMSwgMjM1LCAxMTEsIDk4LCA0LCAxLCAyNDIsIDQzLCA5OCwgNCwgMSwgMjQxLCAyMzgsIDk4LCA0LCAxLCAKKyAgICAyNDEsIDE3NSwgOTgsIDQsIDEsIDIxMiwgMjIsIDk4LCA0LCAxLCAyNDIsIDQsIDk4LCA0LCAxLCAyNDEsIDY1LCA5OCwgNCwgCisgICAgMSwgMjEwLCAyNDYsIDk4LCA0LCAxLCAyNTQsIDIzMiwgMjE2LCAxMDgsIDEsIDE5MSwgMjE2LCAxMDgsIDEsIDIxMSwgOTksIAorICAgIDIxNiwgMTA4LCAxLCAyMTEsIDk4LCAyMTYsIDEwOCwgMSwgMjExLCA4OCwgMjE2LCAxMDgsIDEsIDIxMSwgODYsIDIxNiwgCisgICAgMTA4LCAxLCAyNTIsIDMyLCAyNTUsIDE2LCAyMTEsIDgxLCAyMTYsIDEwOCwgMSwgMjExLCA4MSwgMjE2LCAxMDgsIDEsIAorICAgIDIxMSwgOTYsIDIxNiwgMTA4LCAxLCAyMTEsIDkzLCAyMTYsIDEwOCwgMSwgMjExLCA5NSwgMjE2LCAxMDgsIDEsIDIxMSwgCisgICAgOTQsIDIxNiwgMTA4LCAxLCAyMTEsIDEyLCAyMTYsIDEwOCwgMSwgMjExLCA5MCwgMjE2LCAxMDgsIDEsIDIxMSwgNzksIAorICAgIDIxNiwgMTA4LCAxLCAyMTUsIDExNSwgMjExLCA3OSwgMjE2LCAxMDgsIDEsIDIxMSwgNzYsIDIxNiwgMTA4LCAxLCAyMTEsIAorICAgIDg0LCAyMTYsIDEwOCwgMSwgMjUyLCAzMiwgMjU1LCAxNiwgMjExLCA4NCwgMjE2LCAxMDgsIDEsIDIxNSwgMTE1LCAyMTEsIAorICAgIDg0LCAyMTYsIDEwOCwgMSwgMjExLCA4MywgMjE2LCAxMDgsIDEsIDIxMSwgMTAzLCAyMTYsIDEwOCwgMSwgMjExLCA3NywgCisgICAgMjE2LCAxMDgsIDEsIDIxNSwgMTE1LCAyMTEsIDc3LCAyMTYsIDEwOCwgMSwgMjExLCA2NiwgMjE2LCAxMDgsIDEsIDIxNSwgCisgICAgMTE1LCAyMTEsIDY2LCAyMTYsIDEwOCwgMSwgMjExLCA4LCAyMTYsIDEwOCwgMSwgMjExLCA0OSwgMjE2LCAxMDgsIDEsIAorICAgIDI1NCwgMjA3LCAyMTEsIDQ5LCAyMTYsIDEwOCwgMSwgMjE1LCAxMTUsIDIxMSwgNDksIDIxNiwgMTA4LCAxLCAyMTEsIDc1LCAKKyAgICAyMTYsIDEwOCwgMSwgMjExLCA3NCwgMjE2LCAxMDgsIDEsIDIxMSwgNzEsIDIxNiwgMTA4LCAxLCAyMTUsIDExNSwgMjExLCAKKyAgICA4NSwgMjE2LCAxMDgsIDEsIDIxNSwgMTE1LCAyMTEsIDY5LCAyMTYsIDEwOCwgMSwgMjExLCA2NywgMjE2LCAxMDgsIDEsIAorICAgIDIxMCwgMjEyLCAyMTYsIDEwOCwgMSwgMjExLCA2NCwgMjE2LCAxMDgsIDEsIDIxMSwgNjMsIDIxNiwgMTA4LCAxLCAyMTEsIAorICAgIDg3LCAyMTYsIDEwOCwgMSwgMjE1LCAxMTUsIDIxMSwgODcsIDIxNiwgMTA4LCAxLCAyNTMsIDE2MywgMjExLCA4NywgMjE2LCAKKyAgICAxMDgsIDEsIDIxMSwgNjIsIDIxNiwgMTA4LCAxLCAyMTEsIDYwLCAyMTYsIDEwOCwgMSwgMjExLCA2MSwgMjE2LCAxMDgsIDEsIAorICAgIDIxMSwgNTksIDIxNiwgMTA4LCAxLCAyMTEsIDU4LCAyMTYsIDEwOCwgMSwgMjExLCA5NywgMjE2LCAxMDgsIDEsIDIxMSwgCisgICAgNTYsIDIxNiwgMTA4LCAxLCAyMTEsIDU0LCAyMTYsIDEwOCwgMSwgMjExLCA1MywgMjE2LCAxMDgsIDEsIDIxMSwgNTIsIAorICAgIDIxNiwgMTA4LCAxLCAyMTEsIDUwLCAyMTYsIDEwOCwgMSwgMjE3LCAzNCwgMjExLCA1MCwgMjE2LCAxMDgsIDEsIDIxMSwgCisgICAgNDgsIDIxNiwgMTA4LCAxLCAyMTEsIDQ3LCAyMTYsIDEwOCwgMSwgMjEwLCAyNDQsIDIxNiwgMTA4LCA1OCwgMSwgMjMzLCAKKyAgICAxMjYsIDc4LCAyMTYsIDEwOCwgMjIwLCAxMzgsIDc4LCAyMTYsIDEwOCwgMTE2LCAyMzUsIDYzLCAyOSwgMywgMjMyLCAxNTUsIAorICAgIDI5LCAzLCAyMzAsIDE2MCwgMjksIDMsIDIyMiwgMjA5LCAyOSwgMywgMjE5LCA1NywgMjksIDMsIDIyMCwgNiwgMjksIDMsIAorICAgIDI1MSwgMjA0LCAyOSwgMywgMjE2LCA0MSwgMjksIDMsIDI0OSwgMjM3LCAyOSwgMywgMjI4LCA3MiwgMjksIDMsIDIyNywgCisgICAgMTMzLCAyOSwgMywgMjQyLCAxODAsIDIyNywgMCwgMjksIDMsIDIxMCwgMjIsIDI5LCAzLCAyNDcsIDE0MywgMjksIDMsIAorICAgIDI0OCwgMTA0LCAyOSwgMywgMjM1LCA2NywgMjksIDMsIDIxNiwgMTU1LCAyOSwgMywgMjUwLCA4NSwgMjksIDMsIDIyNSwgCisgICAgMTIwLCAyOSwgMywgMjI1LCAxNSwgMjksIDMsIDI0MiwgMjU1LCAyOSwgMywgMjQyLCAyNTEsIDI5LCAzLCAyNDIsIDI1MiwgCisgICAgMjksIDMsIDI0MiwgMjUzLCAyOSwgMywgMjE4LCAyMjMsIDI5LCAzLCAyMTgsIDE3OSwgMjksIDMsIDIxOCwgMTkyLCAyOSwgCisgICAgMywgMjE4LCAyMjIsIDI5LCAzLCAyMTgsIDE5NiwgMjksIDMsIDIxOCwgMTk3LCAyOSwgMywgMjE4LCAxODQsIDI5LCAzLCAKKyAgICAyNTAsIDIxMywgMjksIDMsIDI1MCwgMTkyLCAyOSwgMywgMjUwLCAxOTQsIDI5LCAzLCAyNTAsIDIxMiwgMjksIDMsIDI1MCwgCisgICAgMjEwLCAyOSwgMywgMjUwLCAyMTEsIDI5LCAzLCAyNTAsIDE5MywgMjksIDMsIDIwOSwgMjQzLCAyOSwgMywgMjA5LCAyMjEsIAorICAgIDI5LCAzLCAyMDksIDIzNCwgMjksIDMsIDIwOSwgMjQyLCAyOSwgMywgMjA5LCAyMzcsIDI5LCAzLCAyMDksIDIzOCwgMjksIAorICAgIDMsIDIwOSwgMjI2LCAyOSwgMywgMjUwLCAyMDgsIDI5LCAzLCAyNTAsIDE5NSwgMjksIDMsIDI1MCwgMTk3LCAyOSwgMywgCisgICAgMjUwLCAyMDcsIDI5LCAzLCAyNTAsIDIwNSwgMjksIDMsIDI1MCwgMjA2LCAyOSwgMywgMjUwLCAxOTYsIDI5LCAzLCAyMjMsIAorICAgIDIzNiwgMjksIDMsIDIyMywgMjI2LCAyOSwgMywgMjIzLCAyMzIsIDI5LCAzLCAyMjMsIDIzNSwgMjksIDMsIDIyMywgMjMzLCAKKyAgICAyOSwgMywgMjIzLCAyMzQsIDI5LCAzLCAyMjMsIDIzMSwgMjksIDMsIDIzMywgMTU5LCAyOSwgMywgMjMzLCAxNTEsIDI5LCAKKyAgICAzLCAyMzMsIDE1NCwgMjksIDMsIDIzMywgMTU4LCAyOSwgMywgMjMzLCAxNTUsIDI5LCAzLCAyMzMsIDE1NiwgMjksIDMsIAorICAgIDIzMywgMTUyLCAyOSwgMywgMjExLCAxMzAsIDI5LCAzLCAyMTEsIDEyMCwgMjksIDMsIDIxMSwgMTI2LCAyOSwgMywgMjExLCAKKyAgICAxMjksIDI5LCAzLCAyMTEsIDEyNywgMjksIDMsIDIxMSwgMTI4LCAyOSwgMywgMjExLCAxMjUsIDI5LCAzLCAyNDIsIDcxLCAKKyAgICAyOSwgMywgMjQyLCA2MiwgMjksIDMsIDI0MiwgNjUsIDI5LCAzLCAyNDIsIDcwLCAyOSwgMywgMjQyLCA2NywgMjksIDMsIAorICAgIDI0MiwgNjgsIDI5LCAzLCAyNDIsIDY0LCAzOCwgMzMsIDEsIDI1MiwgNzUsIDM4LCAzMywgMSwgMjEzLCAyNTUsIDM4LCAzMywgCisgICAgMSwgMjQyLCAyMzYsIDM4LCAzMywgMSwgMjQ4LCA5MCwgMzgsIDMzLCAxLCAyMTAsIDc0LCAzOCwgMzMsIDEsIDIxMCwgOTQsIAorICAgIDM4LCAzMywgMSwgMTc2LCAzOCwgMzMsIDEsIDI0NSwgMTc0LCAzOCwgMzMsIDEsIDI0NSwgMTU5LCAzOCwgMzMsIDEsIDI0NSwgCisgICAgMTUwLCAzOCwgMzMsIDEsIDc2LCAzOCwgMzMsIDEsIDIyNSwgMjIxLCAzOCwgMzMsIDEsIDI0NSwgOTIsIDM4LCAzMywgMSwgCisgICAgMjQ1LCA4MiwgMzgsIDMzLCAxLCAyMTcsIDIyLCAzOCwgMzMsIDEsIDE2MiwgMzgsIDMzLCAxLCAyMTUsIDE3OCwgMzgsIDMzLCAKKyAgICAxLCAyNTAsIDEzMSwgMzgsIDMzLCAxLCAyMjAsIDEwMiwgMzgsIDMzLCAxLCAyMjAsIDY1LCAzOCwgMzMsIDEsIDI0NCwgODIsIAorICAgIDM4LCAzMywgMSwgMjQ1LCA4MSwgMzgsIDMzLCAxLCA2MSwgMzgsIDMzLCAxLCAyMzYsIDYwLCAzOCwgMzMsIDEsIDI0NywgCisgICAgMTYxLCAzOCwgMzMsIDEsIDIzMCwgMTQwLCAyMTQsIDIwNSwgMzgsIDMzLCAxLCAyMTEsIDU5LCAzOCwgMzMsIDEsIDIxMCwgCisgICAgMjEyLCAzOCwgMzMsIDEsIDIzNSwgMTgzLCA2MSwgMzgsIDMzLCAxLCAyMzIsIDE5MiwgMjEwLCAxODMsIDM4LCAzMywgMSwgCisgICAgMjUxLCAyNDksIDIxMCwgMTgzLCAzOCwgMzMsIDEsIDIzNSwgMTgzLCAyNTEsIDI0OSwgMjEwLCAxODMsIDQ0LCAyNTQsIAorICAgIDExMCwgMjE4LCA2MCwgMjMxLCAxNTQsIDQ0LCAyNTQsIDExMCwgMjQ2LCAxMTgsIDIxOCwgNjAsIDIzMSwgMTU0LCA0MywgCisgICAgMjE4LCA2MCwgMTI3LCA0NCwgMjE4LCA2MCwgMTI3LCA0MywgMjQ2LCAxMTgsIDIxOCwgNjAsIDEyNywgNDQsIDI0NiwgMTE4LCAKKyAgICAyMTgsIDYwLCAxMjcsIDIyMywgMTU3LCAyMzUsIDIwMiwgMjMxLCAxNTQsIDIyMywgMTU3LCAyNDYsIDExOCwgMjM1LCAyMDIsIAorICAgIDIzMSwgMTU0LCAyNDYsIDExOCwgMjE1LCAyNDEsIDIzMSwgMTU0LCA0MywgMjE1LCAyNDEsIDEyNywgNDQsIDIxNSwgMjQxLCAKKyAgICAxMjcsIDIyMywgMTU3LCAyMTgsIDIzNCwgNDMsIDIyMywgMTU3LCAyMjYsIDE5OCwgMTI3LCA0NCwgMjIzLCAxNTcsIDIyNiwgCisgICAgMTk4LCAxMjcsIDI0NSwgMjEwLCAyNDksIDE1OCwgMjI2LCAxMywgMjQ0LCAyMiwgMjI2LCAxMywgMjIzLCA0OSwgMjQ0LCAKKyAgICAyMiwgMjI2LCAxMywgMjQwLCAxNjUsIDI0NiwgMTE4LCAyMjYsIDI1MSwgMjQ2LCAxMDQsIDI1NCwgMTE5LCAyMTQsIDE1MywgCisgICAgMjU0LCAxMTksIDI0NiwgMTE4LCAyMjIsIDI0NywgMjU0LCAxMDksIDUyLCAyMjYsIDI0OCwgMjQwLCAxNjgsIDIzNSwgMTkzLCAKKyAgICAyMzUsIDIwMSwgMjI2LCA1OSwgMjUxLCAxNTQsIDI0MCwgMTY5LCAyLCAyNDgsIDEsIDIxNiwgODksIDIsIDIyMiwgMjM0LCAKKyAgICA0OCwgNDMsIDEyMSwgMjI2LCA1LCAxMjcsIDQ0LCAxMjEsIDIyNiwgNSwgMTI3LCAyMTYsIDg5LCAyLCA1OSwgNDgsIDIxNiwgCisgICAgODksIDIsIDU5LCA1MSwgNDMsIDY3LCAyNTIsIDE0MSwgMiwgMjI0LCA3LCA0NCwgNjcsIDI1MiwgMTQxLCAyLCAyMjQsIDcsIAorICAgIDIxNiwgMTQsIDQzLCAxNjMsIDEyNywgMjE2LCAxNCwgNDQsIDE2MywgMTI3LCAyNTEsIDE3NSwgNDMsIDE2MywgMTI3LCAKKyAgICAyNTEsIDE3NSwgNDQsIDE2MywgMTI3LCA0MywgMjE5LCAxODcsIDEwNCwgMTI3LCA0NCwgMjE5LCAxODcsIDEwNCwgMTI3LCAKKyAgICA0MywgNTIsIDIyNiwgMywgNDQsIDUyLCAyMjYsIDMsIDExMywgMTcwLCAxMTcsIDEyMywgNTksIDIyNCwgMTQwLCAxMjMsIAorICAgIDU5LCAxMTcsIDExMywgMTcwLCAyMjQsIDE0MCwgOTIsIDI0NCwgMTEsIDU5LCAyMjQsIDE0MCwgMjQ0LCA4MSwgNTksIDc4LCAKKyAgICAyMjMsIDQ5LCAyMjQsIDEzLCA3OCwgNjcsIDE4MiwgMjIyLCAyMzQsIDIyNSwgMTAsIDIxMSwgMjA5LCAyMjAsIDEzOCwgCisgICAgMjMwLCAyMjQsIDI0NywgMTIwLCAyMTUsIDk0LCAyNDksIDIxOSwgMjIzLCAxNTcsIDI0NywgMTIwLCAyMjMsIDE1NywgMjQ5LCAKKyAgICAyMTksIDIxNSwgOTQsIDIyMCwgMTUwLCAyNDgsIDIwNiwgMiwgNDMsIDI0MiwgMTA4LCAyNDgsIDIwNiwgMiwgNDQsIDI0MiwgCisgICAgMTA4LCAyMTUsIDk0LCAyNDgsIDIwNSwgMjE2LCAxNCwgMTYzLCAyMjEsIDE3MywgNTAsIDIxNSwgNTksIDI0OCwgMTU2LCAKKyAgICAyMTYsIDE0MywgMjQ4LCAxNTYsIDksIDM0LCAyMjMsIDc2LCA5LCAzNCwgMjUwLCAxMCwgOSwgMzQsIDIyMSwgMTc2LCAxMTAsIAorICAgIDksIDM0LCAyMjEsIDE3NiwgMTA1LCA5LCAzNCwgMjIxLCAxNzYsIDE1OCwgOSwgMzQsIDIyNSwgMTY3LCA5LCAzNCwgMjUxLCAKKyAgICAxNjMsIDksIDM0LCAyMTcsIDkyLCA5LCAzNCwgMjM0LCAzMywgMTEwLCA5LCAzNCwgMjM0LCAzMywgMTA1LCA5LCAzNCwgCisgICAgMjQ3LCAxNzAsIDksIDM0LCAyMjEsIDE3OSwgOSwgMzQsIDQsIDExMCwgOSwgMzQsIDQsIDEwNSwgOSwgMzQsIDIzMywgOTcsIAorICAgIDExMCwgOSwgMzQsIDIzMywgOTcsIDEwNSwgOSwgMzQsIDIzMywgOTcsIDE1OCwgOSwgMzQsIDIzMywgOTcsIDE2MSwgOSwgCisgICAgMzQsIDIxOSwgNjgsIDksIDM0LCAyMTYsIDE0NSwgOSwgMzQsIDIxOSwgNjYsIDExMCwgOSwgMzQsIDIxOSwgNjYsIDEwNSwgCisgICAgOSwgMzQsIDI0MSwgMjI4LCAxMTAsIDksIDM0LCAyNDEsIDIyOCwgMTA1LCA5LCAzNCwgMjQyLCAxNSwgOSwgMzQsIDIyMywgCisgICAgMTQ3LCA5LCAzNCwgMjUwLCA4MiwgOSwgMzQsIDIxOCwgMzcsIDksIDM0LCAyMzAsIDEyOCwgOSwgMzQsIDI0OCwgODgsIDksIAorICAgIDM0LCAyMzAsIDEyMCwgOSwgMzQsIDI1MCwgMjUsIDksIDM0LCAyMTIsIDQxLCAxMTAsIDksIDM0LCAyMTIsIDQxLCAxMDUsIAorICAgIDksIDM0LCAyNDQsIDk2LCA5LCAzNCwgMjI1LCAyMzIsIDExMCwgOSwgMzQsIDIyNSwgMjMyLCAxMDUsIDksIDM0LCAyMTksIAorICAgIDE2MCwgMTYzLCAyMTUsIDIzNiwgMjE1LCAxODgsIDksIDM0LCAyNDksIDE0NSwgOSwgMzQsIDI0NywgMTM2LCA5LCAzNCwgCisgICAgMjM1LCAxMzcsIDksIDM0LCAyNTEsIDE5OCwgNjQsIDI0OSwgMjUwLCA5LCAzNCwgMjQ1LCAxNSwgOSwgMzQsIDIxOCwgMjQ5LCAKKyAgICAxMTAsIDksIDM0LCAyMTgsIDI0OSwgMTA1LCA5LCAzNCwgMjUyLCAxNTQsIDksIDM0LCAyMTksIDE2NywgOSwgMzQsIDI1MSwgCisgICAgNjMsIDIxOSwgMTY3LCA5LCAzNCwgMjI5LCA5MCwgMTEwLCA5LCAzNCwgMjI5LCA5MCwgMTA1LCA5LCAzNCwgMjI5LCA5MCwgCisgICAgMTU4LCA5LCAzNCwgMjI5LCA5MCwgMTYxLCA5LCAzNCwgMjMxLCA0NiwgOSwgMzQsIDIyMCwgNTcsIDksIDM0LCAyMjMsIAorICAgIDE1MywgOSwgMzQsIDI0NSwgMzcsIDksIDM0LCAyMjYsIDIwOSwgOSwgMzQsIDI1MSwgMTMzLCAxMTAsIDksIDM0LCAyNTEsIAorICAgIDEzMywgMTA1LCA5LCAzNCwgMjMxLCA4NiwgOSwgMzQsIDIzMCwgMTIzLCA5LCAzNCwgMjQyLCAxNDAsIDExMCwgOSwgMzQsIAorICAgIDI0MiwgMTQwLCAxMDUsIDksIDM0LCAyNDIsIDE0MCwgMTU4LCA5LCAzNCwgMjE2LCAxMDYsIDksIDM0LCAyNDksIDI0OSwgOSwgCisgICAgMzQsIDIxMiwgOSwgMTEwLCA5LCAzNCwgMjEyLCA5LCAxMDUsIDksIDM0LCAyNTEsIDYzLCAyMjEsIDE3MCwgOSwgMzQsIAorICAgIDIxOSwgMTYwLCAyNDAsIDI0OCwgOSwgMzQsIDI0MCwgMjQ4LCA5LCAzNCwgMjUxLCA2MywgMjE5LCAyLCA5LCAzNCwgMjUxLCAKKyAgICA2MywgMjIwLCA1MiwgOSwgMzQsIDI0NCwgMzIsIDksIDM0LCAyNTEsIDYzLCAyNTAsIDIyOCwgOSwgMzQsIDIxOSwgMTYwLCAKKyAgICAyMTIsIDU3LCA5LCAzNCwgMjEyLCA1OCwgMTEwLCA5LCAzNCwgMjEyLCA1OCwgMTA1LCA5LCAzNCwgMjUwLCAyNywgOSwgMzQsIAorICAgIDI1MSwgNjMsIDI0MiwgMTY2LCA5LCAzNCwgMTk5LCAxMTAsIDksIDM0LCAxOTksIDEwNSwgOSwgMzQsIDI1MSwgNjMsIDIzMiwgCisgICAgMTM3LCA5LCAzNCwgMjUxLCA2MywgMjQzLCA4OCwgOSwgMzQsIDIzMCwgMTE5LCAxMTAsIDksIDM0LCAyMzAsIDExOSwgMTA1LCAKKyAgICA5LCAzNCwgMjIzLCAxNTksIDksIDM0LCAyNTEsIDIwNywgOSwgMzQsIDI1MSwgNjMsIDIxNywgNTYsIDIzMywgNTIsIDksIAorICAgIDM0LCAyNTEsIDYzLCAyMzMsIDUzLCA5LCAzNCwgMjUxLCA2MywgMjExLCAyMzksIDksIDM0LCAyNTEsIDYzLCAyNDQsIDQ2LCAKKyAgICA5LCAzNCwgMjQ1LCAyMTgsIDExMCwgOSwgMzQsIDI0NSwgMjE4LCAxMDUsIDksIDM0LCAyNDUsIDIxOCwgMTU4LCA5LCAzNCwgCisgICAgMjUxLCA2MywgMjQ1LCAyMTcsIDksIDM0LCAyNDEsIDIzNSwgOSwgMzQsIDI1MSwgNjMsIDI0MCwgMjQ1LCA5LCAzNCwgMjUxLCAKKyAgICAxOTQsIDksIDM0LCAyNDIsIDIyMiwgOSwgMzQsIDI1MSwgNjMsIDI0NCwgOTAsIDksIDM0LCAyNTEsIDYzLCAyNTEsIDIzNywgCisgICAgOSwgMzQsIDI1MSwgNjMsIDIyMiwgMSwgOSwgMzQsIDIxOSwgMTYwLCAyMTIsIDIsIDksIDM0LCAyMTksIDE2MCwgMjExLCAKKyAgICA0MSwgOSwgMzQsIDI1MSwgNjMsIDI0MywgMjQ0LCA5LCAzNCwgMjM1LCAxNDMsIDI0NSwgNDEsIDksIDM0LCAyNTEsIDYzLCAKKyAgICAyNDUsIDQxLCA5LCAzNCwgMjM1LCAxNDMsIDIxNiwgMTUsIDksIDM0LCAyNTEsIDYzLCAyMTYsIDE1LCA5LCAzNCwgMjM1LCAKKyAgICAxNDMsIDI0NiwgOTYsIDksIDM0LCAyNTEsIDYzLCAyNDYsIDk2LCA5LCAzNCwgMjE1LCA5MSwgOSwgMzQsIDIzNSwgMTQzLCAKKyAgICAyMTUsIDkxLCA5LCAzNCwgMjUxLCA2MywgMjE1LCA5MSwgNjAsIDM0LCAxMTAsIDYwLCAzNCwgMjMyLCAyMTMsIDYwLCAzNCwgCisgICAgMjQ3LCAxMjAsIDYwLCAzNCwgMjE5LCA5NSwgNjAsIDM0LCAyMjEsIDE3NSwgNjAsIDM0LCAxMDMsIDYwLCAzNCwgMTA1LCAKKyAgICA2MCwgMzQsIDIzMiwgMjM3LCA2MCwgMzQsIDIzMSwgMTg1LCA2MCwgMzQsIDIzMywgMzMsIDYwLCAzNCwgMjQ1LCAxMjksIAorICAgIDYwLCAzNCwgMTk1LCA2MCwgMzQsIDEyNCwgMjUxLCAxNjMsIDYwLCAzNCwgMjQ5LCAxNDcsIDYwLCAzNCwgMjQwLCAxMTEsIAorICAgIDYwLCAzNCwgMjE3LCA5MiwgNjAsIDM0LCAyMDQsIDI1MSwgMTYzLCA2MCwgMzQsIDIzNCwgMzIsIDYwLCAzNCwgMjI0LCAKKyAgICAyMjQsIDYwLCAzNCwgMjExLCAyMDIsIDYwLCAzNCwgMjE4LCAyNDMsIDYwLCAzNCwgNDQsIDIwNCwgMjUxLCAxNjMsIDYwLCAKKyAgICAzNCwgMjQxLCAxNzYsIDI0NSwgMTQ1LCA2MCwgMzQsIDIxNiwgMjQ3LCA2MCwgMzQsIDI0NywgMTcwLCA2MCwgMzQsIDIyMSwgCisgICAgMTc5LCA2MCwgMzQsIDI1MCwgMTAsIDYwLCAzNCwgMjI0LCAxODIsIDYwLCAzNCwgMjU0LCAyMTUsIDYwLCAzNCwgMjMwLCAKKyAgICAxMTAsIDYwLCAzNCwgMjQ1LCAxNDUsIDYwLCAzNCwgMjQ1LCAyMjMsIDYwLCAzNCwgMjIxLCAyMDAsIDYwLCAzNCwgMjQyLCAKKyAgICAxNzQsIDYwLCAzNCwgMjQyLCAxNzUsIDIxOSwgODEsIDYwLCAzNCwgMjQ1LCA0MCwgNjAsIDM0LCAyNTEsIDI0OCwgNjAsIAorICAgIDM0LCAyMTEsIDIyMSwgNjAsIDM0LCAyNTAsIDEwMSwgNjAsIDM0LCAyMjIsIDE5NiwgNjAsIDM0LCAyMzUsIDI1MSwgNjAsIAorICAgIDM0LCAyMTksIDc5LCA2MCwgMzQsIDIzMywgOTYsIDYwLCAzNCwgMjQ5LCAxNTYsIDYwLCAzNCwgMjE4LCAyMzcsIDYwLCAzNCwgCisgICAgMjMwLCAxMTUsIDYwLCAzNCwgMjIyLCAyMjQsIDYwLCAzNCwgMjExLCAyMDYsIDYwLCAzNCwgMjI2LCAxOTAsIDYwLCAzNCwgCisgICAgMjE1LCA5NywgNjAsIDM0LCAyNDYsIDgwLCA2MCwgMzQsIDIxOSwgMjUxLCAyMTYsIDE0NSwgNjAsIDM0LCAyNDYsIDExOCwgCisgICAgMjUwLCAxMCwgNjAsIDM0LCAxOTksIDIxOCwgMTA4LCA2MCwgMzQsIDExMywgMjQyLCAxMCwgNjAsIDM0LCAyMjAsIDAsIDYwLCAKKyAgICAzNCwgMjUxLCAxNjksIDYwLCAzNCwgMjE5LCA2NSwgNjAsIDM0LCAyNTEsIDEzNywgNjAsIDM0LCAyMTgsIDEzOCwgNjAsIAorICAgIDM0LCAyNDEsIDIyNywgNjAsIDM0LCAyNDIsIDI4LCA2MCwgMzQsIDI0NywgMTIzLCA2MCwgMzQsIDI0MiwgMTUsIDYwLCAzNCwgCisgICAgMjUxLCAxNTQsIDYwLCAzNCwgMjIzLCAxNDcsIDYwLCAzNCwgMjIxLCAxODcsIDYwLCAzNCwgMjQ3LCAxOTksIDYwLCAzNCwgCisgICAgMjUzLCAxNjgsIDYwLCAzNCwgMjE4LCAyMzQsIDYwLCAzNCwgMjI4LCA1MSwgNjAsIDM0LCAyMTgsIDM3LCA2MCwgMzQsIAorICAgIDIyMSwgMjExLCA2MCwgMzQsIDIzMCwgMTI4LCA2MCwgMzQsIDIxNSwgMjM1LCA2MCwgMzQsIDIzMywgMTIyLCA2MCwgMzQsIAorICAgIDIxOCwgMTI5LCA2MCwgMzQsIDI0OCwgODgsIDYwLCAzNCwgMjEyLCAyMSwgNjAsIDM0LCAyNDcsIDE0NiwgMjI4LCA1MSwgCisgICAgNjAsIDM0LCAyNDksIDIxNSwgNjAsIDM0LCAyNDMsIDIyMiwgNjAsIDM0LCAyNTAsIDIxLCA2MCwgMzQsIDIxOCwgMTQyLCAKKyAgICA2MCwgMzQsIDIxMiwgNDAsIDYwLCAzNCwgMjQ0LCA5NiwgNjAsIDM0LCAyNTAsIDE4LCA2MCwgMzQsIDI0NCwgMTYxLCA2MCwgCisgICAgMzQsIDUyLCAyMTEsIDE3OCwgNjAsIDM0LCAxNjMsIDIxNSwgMjM2LCAyMTUsIDE4OCwgNjAsIDM0LCAyMTksIDg5LCA2MCwgCisgICAgMzQsIDI0NCwgMTcxLCA2MCwgMzQsIDI0OSwgMTQ1LCA2MCwgMzQsIDI0NywgMTM2LCA2MCwgMzQsIDIyNCwgMTc5LCA2MCwgCisgICAgMzQsIDIzNSwgMTM3LCA2MCwgMzQsIDIzMSwgNjcsIDYwLCAzNCwgMjE2LCA4OCwgNjAsIDM0LCAyMTcsIDI0NSwgNjAsIDM0LCAKKyAgICAyMzIsIDIzMSwgNjAsIDM0LCAyMTQsIDEzMSwgNjAsIDM0LCAyNDQsIDEyMCwgNjAsIDM0LCAyNTEsIDE5OCwgNjQsIDI0OSwgCisgICAgMjUwLCA2MCwgMzQsIDIxOSwgMTg4LCA2MCwgMzQsIDI0NiwgMTE4LCAyMTYsIDI0MiwgNjAsIDM0LCAyMTEsIDI1MywgNjAsIAorICAgIDM0LCAyMTksIDEwMywgNjAsIDM0LCAyNDcsIDE4NywgNjAsIDM0LCAyNDUsIDE1LCA2MCwgMzQsIDIxOSwgNSwgNjAsIDM0LCAKKyAgICA3NCwgNjAsIDM0LCAyMTgsIDEzMSwgNjAsIDM0LCAyMTgsIDI0OCwgNjAsIDM0LCAyMTUsIDI1NSwgNjAsIDM0LCAyNDIsIAorICAgIDE0NywgNjAsIDM0LCAyNTAsIDIxOCwgNjAsIDM0LCAyMTgsIDE2MCwgNjAsIDM0LCAyNTIsIDE1NCwgNjAsIDM0LCAyMjMsIAorICAgIDMxLCA2MCwgMzQsIDIxOSwgMTY3LCA2MCwgMzQsIDIzNSwgMTMwLCA2MCwgMzQsIDIyOSwgODksIDYwLCAzNCwgMjIwLCA1NywgCisgICAgNjAsIDM0LCAyNDQsIDE0OSwgNjAsIDM0LCAyMjYsIDIwOSwgNjAsIDM0LCAyNTQsIDExOCwgNjAsIDM0LCAyMjUsIDI5LCAKKyAgICA2MCwgMzQsIDI0NSwgMjI3LCA2MCwgMzQsIDI1MSwgMTMyLCA2MCwgMzQsIDIzMSwgODYsIDYwLCAzNCwgMjMwLCAxODMsIAorICAgIDYwLCAzNCwgMjIwLCAxNTYsIDYwLCAzNCwgMjUzLCAyNTIsIDYwLCAzNCwgMjMwLCAxMjMsIDYwLCAzNCwgMjE2LCAxOSwgCisgICAgNjAsIDM0LCAyMjYsIDE2NSwgNjAsIDM0LCAyNTEsIDIwMSwgNjAsIDM0LCAyMTgsIDEyNywgNjAsIDM0LCAyNDksIDIyNSwgCisgICAgNjAsIDM0LCAyNDIsIDEzOSwgNjAsIDM0LCAyMTYsIDEwNiwgNjAsIDM0LCAyMzUsIDIxNywgNjAsIDM0LCAyNTEsIDIxMSwgCisgICAgNjAsIDM0LCAyMTIsIDU4LCAyNDUsIDE0NSwgNjAsIDM0LCAyNDksIDI0OSwgNjAsIDM0LCAyMTIsIDgsIDYwLCAzNCwgMjIxLCAKKyAgICAxNzAsIDYwLCAzNCwgMjQwLCAyNDgsIDYwLCAzNCwgMjE5LCAyLCA2MCwgMzQsIDIxNCwgMjIsIDYwLCAzNCwgMjUyLCA3MiwgCisgICAgNjAsIDM0LCAyMjUsIDczLCA2MCwgMzQsIDI1MiwgMTc0LCA2MCwgMzQsIDIyMCwgNTIsIDYwLCAzNCwgMjIzLCAxMTAsIDYwLCAKKyAgICAzNCwgMjIyLCAxMjYsIDYwLCAzNCwgMjQ0LCAzMiwgNjAsIDM0LCAyNTEsIDIwMCwgNjAsIDM0LCAyNTAsIDIyOCwgNjAsIAorICAgIDM0LCAyNTEsIDIyNiwgNjAsIDM0LCAyMzAsIDEyNSwgNjAsIDM0LCAyMTIsIDU3LCA2MCwgMzQsIDI1MCwgMjcsIDYwLCAzNCwgCisgICAgMjExLCAyMzYsIDYwLCAzNCwgMjQ3LCAxODAsIDYwLCAzNCwgMjEzLCAxNjEsIDYwLCAzNCwgMjQyLCAxNjYsIDYwLCAzNCwgCisgICAgMjMyLCAxMzcsIDYwLCAzNCwgMjQzLCA4OCwgNjAsIDM0LCAyMzAsIDExOCwgNjAsIDM0LCAyMTksIDk0LCA2MCwgMzQsIAorICAgIDIxOSwgMjUxLCAyMTcsIDc2LCAyNTEsIDIzNywgNjAsIDM0LCAyMjMsIDE1OSwgNjAsIDM0LCAyNTEsIDIwNywgNjAsIDM0LCAKKyAgICAyMTEsIDE5NywgNjAsIDM0LCAyNDQsIDE5MCwgNjAsIDM0LCAyMzMsIDUyLCA2MCwgMzQsIDIxNywgNTYsIDIzMywgNTIsIAorICAgIDYwLCAzNCwgMjMzLCA0OCwgNjAsIDM0LCAyMTksIDMwLCA2MCwgMzQsIDIzMywgNTMsIDYwLCAzNCwgMjExLCAyMzksIDYwLCAKKyAgICAzNCwgMjQ0LCA0NiwgNjAsIDM0LCAyNDUsIDIxNywgNjAsIDM0LCAyNDEsIDIzNSwgNjAsIDM0LCAyNDQsIDAsIDYwLCAzNCwgCisgICAgMjQwLCAyNDUsIDYwLCAzNCwgMjUxLCAxOTQsIDYwLCAzNCwgMjE3LCA2MywgNjAsIDM0LCAyNDIsIDM0LCA2MCwgMzQsIAorICAgIDI0NCwgMTEzLCA2MCwgMzQsIDIyMiwgMjgsIDIxMSwgMjM2LCA2MCwgMzQsIDI1MCwgMjIwLCA2MCwgMzQsIDI0MiwgMjIyLCAKKyAgICA2MCwgMzQsIDI0NCwgOTAsIDYwLCAzNCwgMjUxLCAyMzcsIDYwLCAzNCwgMjIyLCAxLCA2MCwgMzQsIDI0OCwgNzQsIDYwLCAKKyAgICAzNCwgMjEyLCAyLCA2MCwgMzQsIDI0MSwgMjEwLCA2MCwgMzQsIDIxMSwgNDEsIDYwLCAzNCwgMjMwLCAxOTIsIDYwLCAzNCwgCisgICAgMjUxLCAyMjEsIDYwLCAzNCwgMjQ1LCAxNTUsIDYwLCAzNCwgMjQzLCAyNDQsIDYwLCAzNCwgMjE1LCAyMDksIDYwLCAzNCwgCisgICAgMjQ2LCA4MiwgNjAsIDM0LCAyMjMsIDE0MSwgNjAsIDM0LCAyMjgsIDUzLCA2MCwgMzQsIDI0NSwgNDEsIDYwLCAzNCwgMjE2LCAKKyAgICAxNSwgNjAsIDM0LCAyNDYsIDk2LCA2MCwgMzQsIDIxNSwgOTEsIDYwLCAzNCwgMjQ0LCA0OCwgMTA5LCAyNDgsIDM3LCAxMzUsIAorICAgIDQzLCAyMTYsIDQyLCAyMjIsIDI1MSwgMTA5LCAyNDgsIDM3LCAxMzUsIDc3LCAyMTYsIDQyLCA1MSwgMTA5LCAyNDgsIDM3LCAKKyAgICAxMzUsIDQzLCAyMTYsIDQyLCAyMzAsIDIyNCwgMjIsIDIyMiwgMjUxLCAxMDksIDI0OCwgMzcsIDEzNSwgNzcsIDIxNiwgNDIsIAorICAgIDIzMCwgMjI0LCAyMiwgNTEsIDEwOSwgMjQ4LCAzNywgMTM1LCAyNDMsIDIyOSwgMjE4LCAxMCwgMTA5LCAyNDgsIDM3LCAKKyAgICAxMzUsIDIxOCwgMTEsIDI0MywgMjQzLCA0OCwgMTA5LCAyNDgsIDM3LCAxMzUsIDIxOCwgMTEsIDI0MywgMjQzLCA1MSwgCisgICAgMTA5LCAyNDgsIDM3LCAxMzUsIDIxOCwgMTEsIDI0MywgMjQzLCAyMzMsIDQ2LCAxMDksIDI0OCwgMzcsIDEzNSwgMjE4LCAKKyAgICAxMSwgMjQzLCAyNDMsIDIxNCwgMTYwLCAyMzMsIDQ2LCAxMDksIDI0OCwgMzcsIDEzNSwgMjE4LCAxMSwgMjQzLCAyNDMsIAorICAgIDIxNCwgMTYwLCAyMjIsIDI1MSwgMTA5LCAyNDgsIDM3LCAxMzUsIDIxOCwgMTEsIDI0MywgMjQzLCAyMzIsIDEwOCwgMjMzLCAKKyAgICA0NiwgMTA5LCAyNDgsIDM3LCAxMzUsIDIyNiwgMTIyLCAxMDksIDIxOSwgMTgsIDEwOSwgMjQ5LCAyMTksIDEwOSwgMjQzLCAKKyAgICAyMjksIDIxOCwgMTI5LCAyNDcsIDE3NywgNzgsIDIzNSwgMTMxLCAyMzUsIDIzNiwgMjE4LCAxNTksIDg3LCAxMDksIDIzNSwgCisgICAgMTU4LCA3OCwgMTA5LCAyNDksIDI1MiwgNzgsIDEwOSwgNTQsIDIxMCwgODYsIDQzLCAyNTQsIDExMCwgMTI3LCA0NCwgMjU0LCAKKyAgICAxMTAsIDEyNywgNDMsIDUyLCAyNTQsIDExMCwgMTI3LCA0NCwgNTIsIDI1NCwgMTEwLCAxMjcsIDQzLCAyNDksIDE2MSwgCisgICAgMTI3LCA0NCwgMjQ5LCAxNjEsIDEyNywgNDMsIDcxLCAyNDksIDE2MSwgMTI3LCA0NCwgNzEsIDI0OSwgMTYxLCAxMjcsIDQzLCAKKyAgICA4NSwgMjMzLCAyMCwgMTI3LCA0NCwgODUsIDIzMywgMjAsIDEyNywgMjI0LCAyMzcsIDc4LCAyNDMsIDMyLCA3OCwgNDMsIAorICAgIDIxNiwgNiwgMjIwLCA1MywgMTI3LCA0NCwgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDQzLCA3MSwgMjMzLCAyMCwgMTI3LCA0NCwgCisgICAgNzEsIDIzMywgMjAsIDEyNywgNDMsIDcxLCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgNDQsIDcxLCAyMTYsIDYsIDIyMCwgNTMsIAorICAgIDEyNywgNDMsIDcxLCA0MiwgMTI3LCA0NCwgNzEsIDQyLCAxMjcsIDIxMiwgMzYsIDI0OCwgMTU2LCAyMjMsIDQ5LCA1MiwgCisgICAgMjI0LCAxOTEsIDIyMywgMjU0LCA3OCwgNTIsIDIyNCwgMTkxLCAyMjMsIDI1NCwgNzgsIDEyMSwgNTIsIDIyNCwgMTkxLCAKKyAgICAyMjMsIDI1NCwgNzgsIDIyNCwgMjM3LCAxNjQsIDI0NCwgMTkwLCAyNDIsIDgsIDIyNywgMTk4LCAxMTAsIDI0MiwgOCwgCisgICAgMjI3LCAxOTgsIDEwNSwgMjQyLCA4LCAyMjcsIDE5OCwgMTU4LCAyNDIsIDgsIDIyNywgMTk4LCAxNjEsIDI0MiwgOCwgMjI3LCAKKyAgICAxOTgsIDE4OSwgMjQyLCA4LCAyMjcsIDE5OCwgMTk0LCAyNDIsIDgsIDIyNywgMTk4LCAxOTgsIDI0MiwgOCwgMjI3LCAxOTgsIAorICAgIDE5NSwgMjQyLCA4LCAyMjcsIDE5OCwgMjAwLCAxMDksIDIzMywgMywgMTM4LCA3OCwgMTA5LCAyMjIsIDIyOCwgMTM4LCA3OCwgCisgICAgMTA5LCAyNDgsIDQ0LCAxMzgsIDc4LCAxMDksIDI0NSwgMTI4LCAxMzgsIDc4LCAyNCwgMjE5LCAxNTUsIDU5LCAxMzgsIDc4LCAKKyAgICAyNCwgNTIsIDU5LCAxMzgsIDc4LCAyMTIsIDMyLCAyNDgsIDE1NiwgNjcsIDIzNCwgMjMzLCAyMjMsIDc3LCA3OCwgNjcsIAorICAgIDIzNCwgMjMzLCAyMjMsIDc3LCAyLCAyMTMsIDEzNSwgMjE5LCAzMSwgNzgsIDY3LCAyMzQsIDIzMywgMjIzLCA3NywgMTY0LCAKKyAgICAyMTQsIDE2MCwgMjQyLCAyNywgNjcsIDIzNCwgMjMzLCAyMjMsIDc3LCAyLCAyMTMsIDEzNSwgMjE5LCAzMSwgMTY0LCAyMTQsIAorICAgIDE2MCwgMjQyLCAyNywgNjcsIDIzNCwgMjMzLCAyMjMsIDc3LCAxNjQsIDIzMiwgMTA4LCAyNDIsIDI3LCAzNywgMjI0LCAKKyAgICAyMzcsIDc4LCAxMDksIDIxNywgMywgMjMyLCAyMTQsIDI0NCwgMTQ2LCAyMjAsIDEzOCwgODcsIDI0MiwgOCwgMjI3LCAxOTgsIAorICAgIDIxNiwgMjQ3LCAyNDIsIDgsIDIyNywgMTk4LCAyMTUsIDczLCAyNDIsIDgsIDIyNywgMTk4LCAyMTYsIDE2MiwgNjcsIDEwOSwgCisgICAgMjM1LCAxNTgsIDc4LCAyMzEsIDE0MCwgNzgsIDIyNSwgMjU1LCAyNTQsIDE0MCwgNzgsIDEwOSwgNDUsIDIzNSwgMjM4LCAKKyAgICAxMDksIDE2MywgMjQ0LCAxMDYsIDIxOSwgMTgsIDE0MSwgMSwgNCwgNjEsIDE0MSwgMSwgNjEsIDE0MSwgMSwgNCwgNzMsIAorICAgIDE0MSwgMSwgNzMsIDE0MSwgMSwgNCwgNzAsIDE0MSwgMSwgNzAsIDE0MSwgMSwgNCwgNzUsIDE0MSwgMSwgNzUsIDE0MSwgMSwgCisgICAgNCwgNzYsIDE0MSwgMSwgNzYsIDE0MSwgMSwgMTc2LCAxNDEsIDEsIDI0MywgMTM1LCAxNDEsIDEsIDIzNCwgOTIsIDE0MSwgCisgICAgMSwgMjQyLCAyMTQsIDE0MSwgMSwgMjMzLCAyMTcsIDE0MSwgMSwgMjQyLCAxMTMsIDE0MSwgMSwgMjM0LCAxODIsIDE0MSwgCisgICAgMSwgMjQzLCA2MiwgMTQxLCAxLCAyMzQsIDI4LCAxNDEsIDEsIDI0MiwgMTc0LCAxNDEsIDEsIDIwNiwgMTQxLCAxLCAyMTAsIAorICAgIDExNiwgMTQxLCAxLCAyMTksIDE5MSwgMTQxLCAxLCAyMTAsIDQ0LCAxNDEsIDEsIDIxOCwgODMsIDE0MSwgMSwgMjEwLCAxMywgCisgICAgMTQxLCAxLCAyMjEsIDE4MSwgMTQxLCAxLCAyMTAsIDk0LCAxNDEsIDEsIDIxOSwgNTgsIDE0MSwgMSwgMjEwLCAyMywgMTQxLCAKKyAgICAxLCAyMTcsIDEwNSwgMTQxLCAxLCAyNDgsIDIyMSwgMTQxLCAxLCAyMTYsIDExNywgMTQxLCAxLCAyNDgsIDMsIDE0MSwgMSwgCisgICAgNCwgMjE1LCAxMTgsIDE0MSwgMSwgMjE1LCAxMTgsIDE0MSwgMSwgMjQ2LCA3OCwgMTQxLCAxLCAyMTcsIDIyLCAxNDEsIDEsIAorICAgIDI0OCwgOTAsIDE0MSwgMSwgMTExLCAxNDEsIDEsIDI0NywgMTQ1LCAxNDEsIDEsIDE5NywgMTQxLCAxLCAyMjgsIDIzMywgCisgICAgMTQxLCAxLCAyMjcsIDIzNywgMTQxLCAxLCAyMjksIDEwNywgMTQxLCAxLCAyMjgsIDc0LCAxNDEsIDEsIDE2MiwgMTQxLCAxLCAKKyAgICAyNTIsIDE5MSwgMTQxLCAxLCAxOTAsIDE0MSwgMSwgMjQxLCAxODAsIDE0MSwgMSwgMjUyLCA2LCAxNDEsIDEsIDIyNSwgCisgICAgMTA4LCAxNDEsIDEsIDI0MCwgMjIyLCAxNDEsIDEsIDI1MSwgMTI1LCAxNDEsIDEsIDIyNCwgMTUwLCAxNDEsIDEsIDI0MSwgCisgICAgMjM4LCAxNDEsIDEsIDI1MiwgNzUsIDE0MSwgMSwgMjI1LCAyMjEsIDE0MSwgMSwgMjQxLCA2OCwgMTQxLCAxLCAyNTEsIAorICAgIDIwNSwgMTQxLCAxLCAyMjUsIDE2LCAxNDEsIDEsIDE4NCwgMTQxLCAxLCAyMzAsIDIzMCwgMTQxLCAxLCAyMzAsIDEwMiwgCisgICAgMTQxLCAxLCAyMzEsIDkxLCAxNDEsIDEsIDIzMCwgMTYxLCAxNDEsIDEsIDQsIDE5MSwgMTQxLCAxLCAxOTEsIDE0MSwgMSwgCisgICAgNCwgMjEwLCAyMTIsIDE0MSwgMSwgMjEwLCAyMTIsIDE0MSwgMSwgNCwgMjEwLCAyNDQsIDE0MSwgMSwgMjEwLCAyNDQsIAorICAgIDE0MSwgMSwgMjA1LCAxNDEsIDEsIDIyMywgMzUsIDE0MSwgMSwgMjIyLCAxNDAsIDE0MSwgMSwgMjIzLCAxMjgsIDE0MSwgMSwgCisgICAgMjIyLCAyMTEsIDE0MSwgMSwgNCwgMjEyLCA2NSwgMTQxLCAxLCAyMTIsIDY1LCAxNDEsIDEsIDIxMSwgMjUwLCAxNDEsIDEsIAorICAgIDIxMiwgMjIsIDE0MSwgMSwgMjExLCAyMjcsIDE0MSwgMSwgMjMwLCAyNSwgMTQxLCAxLCAyMTIsIDExNiwgMTQxLCAxLCA0LCAKKyAgICAxNzYsIDE0MSwgMSwgNCwgMjM0LCAxODIsIDM4LCAyMzQsIDIwMSwgMjEzLCAxMzUsIDIxOSwgMzEsIDc4LCAzOCwgMjM0LCAKKyAgICAyMDEsIDIyMCwgMTU1LCAyMTksIDMxLCA3OCwgMjM0LCAyMDEsIDIxMywgMTM1LCAyMTksIDMxLCA3OCwgMjM0LCAyMDEsIAorICAgIDIyMCwgMTU1LCAyMTksIDMxLCA3OCwgMTQxLCAyMzUsIDE1OCwgNzgsIDE0MSwgMjEzLCAxMzUsIDIzNSwgMTU4LCA3OCwgCisgICAgMTQxLCAyNDcsIDIyMSwgMjEwLCAyMjUsIDIzNCwgMjAxLCA1MiwgMjQwLCAxNjgsIDU2LCAxLCA0LCA2MSwgNTYsIDEsIDYxLCAKKyAgICA1NiwgMSwgNCwgNzMsIDU2LCAxLCA3MywgNTYsIDEsIDQsIDcwLCA1NiwgMSwgNzAsIDU2LCAxLCA0LCA3NSwgNTYsIDEsIAorICAgIDc1LCA1NiwgMSwgNCwgNzYsIDU2LCAxLCA3NiwgNTYsIDEsIDE3NiwgNTYsIDEsIDI0MywgMTM1LCA1NiwgMSwgMjM0LCA5MiwgCisgICAgNTYsIDEsIDI0MiwgMjE0LCA1NiwgMSwgMjMzLCAyMTcsIDU2LCAxLCAyNDIsIDExMywgNTYsIDEsIDIzNCwgMTgyLCA1NiwgCisgICAgMSwgMjQzLCA2MiwgNTYsIDEsIDIzNCwgMjgsIDU2LCAxLCAyNDIsIDE3NCwgNTYsIDEsIDIwNiwgNTYsIDEsIDIxMCwgMTE2LCAKKyAgICA1NiwgMSwgMjE5LCAxOTEsIDU2LCAxLCAyMTAsIDQ0LCA1NiwgMSwgMjE4LCA4MywgNTYsIDEsIDIxMCwgMTMsIDU2LCAxLCAKKyAgICAyMjEsIDE4MSwgNTYsIDEsIDIxMCwgOTQsIDU2LCAxLCAyMTksIDU4LCA1NiwgMSwgMjEwLCAyMywgNTYsIDEsIDIxNywgCisgICAgMTA1LCA1NiwgMSwgMjQ4LCAyMjEsIDU2LCAxLCAyMTYsIDExNywgNTYsIDEsIDI0OCwgMywgNTYsIDEsIDQsIDIxNSwgMTE4LCAKKyAgICA1NiwgMSwgMjE1LCAxMTgsIDU2LCAxLCAyNDYsIDc4LCA1NiwgMSwgMjE3LCAyMiwgNTYsIDEsIDI0OCwgOTAsIDU2LCAxLCAKKyAgICAxMTEsIDU2LCAxLCAyNDcsIDE0NSwgNTYsIDEsIDE5NywgNTYsIDEsIDIyOCwgMjMzLCA1NiwgMSwgMjI3LCAyMzcsIDU2LCAKKyAgICAxLCAyMjksIDEwNywgNTYsIDEsIDIyOCwgNzQsIDU2LCAxLCAxNjIsIDU2LCAxLCAyNTIsIDE5MSwgNTYsIDEsIDE5MCwgNTYsIAorICAgIDEsIDI0MSwgMTgwLCA1NiwgMSwgMjUyLCA2LCA1NiwgMSwgMjI1LCAxMDgsIDU2LCAxLCAyNDAsIDIyMiwgNTYsIDEsIDI1MSwgCisgICAgMTI1LCA1NiwgMSwgMjI0LCAxNTAsIDU2LCAxLCAyNDEsIDIzOCwgNTYsIDEsIDI1MiwgNzUsIDU2LCAxLCAyMjUsIDIyMSwgCisgICAgNTYsIDEsIDI0MSwgNjgsIDU2LCAxLCAyNTEsIDIwNSwgNTYsIDEsIDIyNSwgMTYsIDU2LCAxLCAxODQsIDU2LCAxLCAyMzAsIAorICAgIDIzMCwgNTYsIDEsIDIzMCwgMTAyLCA1NiwgMSwgMjMxLCA5MSwgNTYsIDEsIDIzMCwgMTYxLCA1NiwgMSwgNCwgMTkxLCA1NiwgCisgICAgMSwgMTkxLCA1NiwgMSwgNCwgMjEwLCAyMTIsIDU2LCAxLCAyMTAsIDIxMiwgNTYsIDEsIDQsIDIxMCwgMjQ0LCA1NiwgMSwgCisgICAgMjEwLCAyNDQsIDU2LCAxLCAyMDUsIDU2LCAxLCAyMjMsIDM1LCA1NiwgMSwgMjIyLCAxNDAsIDU2LCAxLCAyMjMsIDEyOCwgCisgICAgNTYsIDEsIDIyMiwgMjExLCA1NiwgMSwgNCwgMjEyLCA2NSwgNTYsIDEsIDIxMiwgNjUsIDU2LCAxLCAyMTEsIDI1MCwgNTYsIAorICAgIDEsIDIxMiwgMjIsIDU2LCAxLCAyMTEsIDIyNywgNTYsIDEsIDIzMCwgMjUsIDU2LCAxLCAyMTIsIDExNiwgNTYsIDEsIDQsIAorICAgIDE3NiwgNTYsIDEsIDQsIDIzNCwgMTgyLCA1NiwgMSwgMjE0LCAyNywgNTYsIDEsIDIxMywgMTc2LCA1NiwgMSwgMjEzLCAKKyAgICAyNTUsIDU2LCAxLCAyMTMsIDEzOCwgNTYsIDIzMCwgMjI0LCAyNDcsIDEyMCwgMjM0LCAyMDEsIDIyNCwgMTczLCAyMTksIAorICAgIDMxLCA3OCwgNTYsIDIzNSwgMTU4LCA3OCwgNTYsIDIxMywgMTM1LCAyMzUsIDE1OCwgNzgsIDU2LCAyNDcsIDIyMSwgMjMzLCAKKyAgICAyNTUsIDI1MSwgMTg0LCAxLCAyNTMsIDE1OCwgMjUxLCAxODQsIDEsIDIyNiwgMTA1LCAyNTEsIDE4NCwgMSwgMTkzLCAyNTEsIAorICAgIDE4NCwgMSwgMjQ1LCA2LCAyNTEsIDE4NCwgMSwgMjQ5LCA2MCwgMjUxLCAxODQsIDEsIDIxNywgMTUyLCAyNTEsIDE4NCwgMSwgCisgICAgMjMwLCAyNSwgMjUxLCAxODQsIDEsIDE1NiwgMjUxLCAxODQsIDEsIDI0MywgMjAyLCAyNTEsIDE4NCwgMSwgMjM1LCAyMywgCisgICAgMjUxLCAxODQsIDEsIDI0MiwgNjAsIDI1MSwgMTg0LCAxLCAyMzUsIDE0NCwgMjUxLCAxODQsIDEsIDIyNCwgOTYsIDI1MSwgCisgICAgMTg0LCAxLCAyMTEsIDE3OCwgMjUxLCAxODQsIDEsIDIxMCwgODMsIDI1MSwgMTg0LCAxLCAyNTAsIDE1OCwgMjUxLCAxODQsIAorICAgIDEsIDIyMCwgMTA0LCAyNTEsIDE4NCwgMSwgMTUzLCAyNTEsIDE4NCwgMSwgMjEwLCAxNTksIDI1MSwgMTg0LCAxLCAyNTEsIAorICAgIDY2LCAyNTEsIDE4NCwgMSwgMjIyLCA5MSwgMjUxLCAxODQsIDEsIDYxLCAyNTEsIDE4NCwgMSwgNzYsIDI1MSwgMTg0LCAxLCAKKyAgICA3NSwgMjUxLCAxODQsIDEsIDI0NSwgMTk3LCAyNTEsIDE4NCwgMSwgMjU0LCAyMDEsIDI1MSwgMTg0LCAxLCAyNDUsIDE5NSwgCisgICAgMjUxLCAxODQsIDEsIDI1MywgMTkyLCAyNTEsIDE4NCwgMSwgMjI2LCAxMzQsIDI1MSwgMTg0LCAxLCAyNTQsIDEyMywgMjUxLCAKKyAgICAxODQsIDEsIDI0NSwgMTUwLCAyNTEsIDE4NCwgMSwgMjU0LCAxMTUsIDI1MSwgMTg0LCAxLCAyNDUsIDEzOCwgMjUxLCAxODQsIAorICAgIDEsIDI0NSwgOTIsIDI1MSwgMTg0LCAxLCA3MywgMjUxLCAxODQsIDEsIDcwLCAyNTEsIDE4NCwgMSwgMjM1LCAxNTYsIDI1MSwgCisgICAgMTg0LCAxLCAyMTQsIDEwNSwgMjUxLCAxODQsIDEsIDIyOSwgNzksIDI1MSwgMTg0LCAxLCAyNDIsIDE3OCwgMjUxLCAxODQsIAorICAgIDEsIDIzNiwgMzQsIDI0LCAxLCAyMzQsIDU4LCAyNCwgMSwgMjE4LCAyMTUsIDI0LCAxLCAyMzQsIDUxLCAyNCwgMSwgMjI4LCAKKyAgICAyMjYsIDI0LCAxLCAyMjgsIDIyNCwgMjQsIDEsIDIyOCwgMjIzLCAyNCwgMSwgMjE2LCAxMDEsIDI0LCAxLCAyMTgsIDIwNCwgCisgICAgMjQsIDEsIDIyMywgMjYsIDI0LCAxLCAyMjMsIDIxLCAyNCwgMSwgMjIzLCAxOCwgMjQsIDEsIDIyMywgMTEsIDI0LCAxLCAKKyAgICAyMjMsIDYsIDI0LCAxLCAyMjMsIDEsIDI0LCAxLCAyMjMsIDEyLCAyNCwgMSwgMjIzLCAyNCwgMjQsIDEsIDIzMCwgMjE3LCAKKyAgICAyNCwgMSwgMjI1LCA5NSwgMjQsIDEsIDIxOCwgMjEyLCAyNCwgMSwgMjI1LCA4NCwgMjQsIDEsIDIxOSwgMTQ4LCAyNCwgMSwgCisgICAgMjE4LCAyMDksIDI0LCAxLCAyMzYsIDU2LCAyNCwgMSwgMjUwLCA0NiwgMjQsIDEsIDIxOCwgMjE5LCAyNCwgMSwgMjUwLCAKKyAgICAxMDYsIDI0LCAxLCAyMzQsIDExMCwgMjQsIDEsIDIxNiwgMTczLCAyNCwgMSwgMjI1LCAxMzEsIDI0LCAxLCAyNDEsIDE3MiwgCisgICAgMjQsIDEsIDYxLCAyNCwgMSwgMjU0LCAyNDMsIDI0LCAxLCAxOTEsIDI0LCAxLCAyMTEsIDkyLCAyNCwgMSwgMjQ1LCAxMTcsIAorICAgIDI0LCAxLCA3NSwgMjQsIDEsIDIxMSwgMzYsIDI0LCAxLCAyMTEsIDQ3LCAyNCwgMSwgNzYsIDI0LCAxLCAyMTIsIDY1LCAyNCwgCisgICAgMSwgMjEyLCA2MiwgMjQsIDEsIDIyNiwgMjM0LCAyNCwgMSwgMjEwLCAyNDQsIDI0LCAxLCA3MCwgMjQsIDEsIDIxMiwgMTEsIAorICAgIDI0LCAxLCAyMTIsIDIyLCAyNCwgMSwgMjExLCAyNTAsIDI0LCAxLCAyMTAsIDIxMiwgMjQsIDEsIDI0NSwgNTUsIDI0LCAxLCAKKyAgICAyMTEsIDgsIDI0LCAxLCA3MywgMjQsIDI0NCwgMTAzLCAyNCwgMSwgMjE4LCAyMTMsIDI0LCAxLCAyMjgsIDIxNiwgMjQsIDEsIAorICAgIDIyOCwgMjE4LCAyNCwgMSwgMjI4LCAyMjEsIDI0LCAxLCAyMjMsIDE5LCAyNCwgMSwgMjIzLCAwLCAyNCwgMSwgMjIzLCA4LCAKKyAgICAyNCwgMSwgMjIzLCAxMywgMjQsIDEsIDIyMiwgMjU0LCAyNCwgMSwgMjMwLCAyMTAsIDI0LCAxLCAyMzAsIDIwNywgMjQsIDEsIAorICAgIDIzMCwgMjExLCAyNCwgMSwgMjM0LCAyMjEsIDI0LCAxLCAyMjUsIDkwLCAyNCwgMSwgMjI1LCA3NiwgMjQsIDEsIDIyNSwgCisgICAgODIsIDI0LCAxLCAyMjUsIDc5LCAyNCwgMSwgMjI1LCA5MywgMjQsIDEsIDIyNSwgNzcsIDI0LCAxLCAyMzQsIDIxOSwgMjQsIAorICAgIDEsIDIzNCwgMjE3LCAyNCwgMSwgMjE5LCAxNDEsIDI0LCAxLCAyMTksIDEzOSwgMjQsIDEsIDIxOSwgMTMxLCAyNCwgMSwgCisgICAgMjE5LCAxMzYsIDI0LCAxLCAyMTksIDE0NiwgMjQsIDEsIDIyNiwgMzIsIDI0LCAxLCAyMTgsIDIxNiwgMjQsIDEsIDIxMSwgCisgICAgMjYsIDI0LCAxLCAyMTEsIDIyLCAyNCwgMSwgMjExLCAyMywgMjQsIDEsIDIzNCwgMjIwLCAyNCwgMSwgMjE4LCAyMTcsIDI0LCAKKyAgICAxLCAyMTEsIDMyLCAyNCwgMSwgMjEwLCAyMzgsIDI0LCAxLCAyMTAsIDIzNywgMjQsIDEsIDIxMCwgMjQwLCAyNCwgMSwgCisgICAgMjEwLCAyMDMsIDI0LCAxLCAyMTAsIDIwNCwgMjQsIDEsIDIxMCwgMjA3LCAyNCwgMSwgMjU0LCAzNCwgMjQsIDEsIDI1NCwgCisgICAgMjgsIDEwOSwgMjU0LCA5OSwgMjMyLCAyMDMsIDc4LCAxMDksIDI1NCwgOTksIDIyMywgNTAsIDc4LCAxMDksIDI1NCwgOTksIAorICAgIDEyMywgNzgsIDEwOSwgMjU0LCA5OSwgMTEzLCA3OCwgMTA5LCAyNTQsIDk5LCAxMzQsIDc4LCAxMDksIDI1NCwgOTksIDI0NCwgCisgICAgMTEsIDc4LCAxMDksIDI1NCwgOTksIDIxNiwgMTQsIDc4LCAxMDksIDI1NCwgOTksIDIzMCwgMjI0LCA3OCwgMTA5LCAyNTQsIAorICAgIDk5LCAyNTEsIDE3NSwgNzgsIDEwOSwgMjU0LCA5OSwgMjQ0LCA5MiwgNzgsIDEwOSwgMjU0LCA5OSwgMjIxLCAxNzYsIDc4LCAKKyAgICAxMDksIDI1NCwgOTksIDIxNiwgMTY5LCA3OCwgMTA5LCAyNTQsIDk5LCAyNDQsIDQsIDc4LCAxMDksIDI1NCwgOTksIDI0MSwgCisgICAgMjI0LCA3OCwgMTA5LCAyNTQsIDk5LCAyNDUsIDIyNCwgNzgsIDEwOSwgMjU0LCA5OSwgMjMxLCAxODYsIDc4LCAyNTEsIAorICAgIDE4NCwgMSwgMjUxLCAxMjUsIDI1MSwgMTg0LCAxLCAyMTAsIDQ0LCAyNTEsIDE4NCwgMSwgMjM1LCAxMDgsIDI1MSwgMTg0LCAKKyAgICAxLCAyNDIsIDExMywgMjUxLCAxODQsIDEsIDI0NSwgMjA5LCAyNTEsIDE4NCwgMSwgMjQ1LCAxMzUsIDI1MSwgMTg0LCAxLCAKKyAgICAyMjYsIDE4MywgMjUxLCAxODQsIDEsIDIyNiwgMTg3LCAyNTEsIDE4NCwgMSwgMjM1LCAxNzksIDI1MSwgMTg0LCAxLCAyNTQsIAorICAgIDEwMSwgMjUxLCAxODQsIDEsIDIzNSwgMjI0LCAyNTEsIDE4NCwgMSwgMjE0LCAxNjgsIDI1MSwgMTg0LCAxLCAyMzYsIDE2LCAKKyAgICAyNTEsIDE4NCwgMSwgMjI5LCA1NywgMjUxLCAxODQsIDEsIDI1NCwgMTk1LCAyNTEsIDE4NCwgMSwgMjUzLCAxODcsIDI1MSwgCisgICAgMTg0LCAxLCAyNTQsIDEzNiwgMjUxLCAxODQsIDEsIDIyNiwgMjA0LCAyNTEsIDE4NCwgMSwgMjI2LCAxODksIDI1MSwgMTg0LCAKKyAgICAxLCAyMzUsIDIyMSwgMjUxLCAxODQsIDQwLCAxLCAyMjYsIDEwNSwgMjUxLCAxODQsIDQwLCAxLCAyMTcsIDE1MiwgMjUxLCAKKyAgICAxODQsIDQwLCAxLCAyMzUsIDIzLCAyNTEsIDE4NCwgNDAsIDEsIDI0MiwgNjAsIDI1MSwgMTg0LCAxLCAyNDIsIDI1MCwgCisgICAgMjUxLCAxODQsIDEsIDIzMiwgMjU1LCAyNTEsIDE4NCwgMSwgMjA5LCAyNTAsIDksIDIxOCwgMTAzLCAyMTcsIDE1MiwgOSwgCisgICAgMjE4LCAxMDMsIDIxMiwgNCwgOSwgMjE4LCAxMDMsIDIxMSwgMTU4LCA5LCAyMTgsIDEwMywgMjUxLCA3OSwgOSwgMjE4LCAKKyAgICAxMDMsIDIxNywgMjU0LCA5LCAyMTgsIDEwMywgMjQwLCAxNTgsIDksIDIxOCwgMTAzLCAyNDAsIDE2MiwgOSwgMjE4LCAxMDMsIAorICAgIDI0MCwgMjMxLCA5LCAyMTgsIDEwMywgMjQwLCAxNTksIDksIDIxOCwgMTAzLCAyMTcsIDE1NSwgOSwgMjE4LCAxMDMsIDI0MCwgCisgICAgMTYxLCA5LCAyMTgsIDEwMywgMjQwLCAxNTcsIDksIDIxOCwgMTAzLCAyNDAsIDIyOSwgOSwgMjE4LCAxMDMsIDI0MCwgMTYwLCAKKyAgICA5LCAyMTgsIDEwMywgMjQwLCAxNTYsIDksIDIxOCwgMTAzLCAyMzAsIDI1LCA5LCAyMTgsIDEwMywgMjQyLCA2MCwgOSwgCisgICAgMjE4LCAxMDMsIDIyMiwgOTEsIDksIDIxOCwgMTAzLCAyMjYsIDEwNSwgOSwgMjE4LCAxMDMsIDIxOSwgMjEsIDksIDIxOCwgCisgICAgMTAzLCAyNDksIDYwLCA5LCAyMTgsIDEwMywgMjQwLCAxNjMsIDksIDIxOCwgMTAzLCAyNDEsIDE5MCwgOSwgMjE4LCAxMDMsIAorICAgIDIxNywgMTY0LCA5LCAyMTgsIDEwMywgMjE3LCAyMzMsIDksIDIxOCwgMTAzLCAyMTgsIDE2OCwgOSwgMjE4LCAxMDMsIDIyMCwgCisgICAgMTEwLCA5LCAyMTgsIDEwMywgMjI1LCAyMjQsIDksIDIxOCwgMTAzLCAyMjQsIDk4LCA5LCAyMTgsIDEwMywgMjE2LCA0MywgCisgICAgOSwgMjE4LCAxMDMsIDIxNywgMTU0LCA5LCAyMTgsIDEwMywgMjE3LCAyNDQsIDksIDIxOCwgMTAzLCAyNDAsIDE3MCwgOSwgCisgICAgMjE4LCAxMDMsIDI0MCwgMTU1LCA5LCAyMTgsIDEwMywgMjI1LCAxNDksIDksIDIxOCwgMTAzLCAyMjQsIDk2LCA1NiwgMSwgCisgICAgNCwgMjMzLCAyMTcsIDU2LCAxLCA0LCAyMTksIDE5MSwgNTYsIDEsIDQsIDIxOCwgODMsIDU2LCAxLCA0LCAxMTEsIDU2LCAxLCAKKyAgICA0LCAyMjcsIDIzNywgNTYsIDEsIDQsIDE2MiwgNTYsIDEsIDQsIDI0MSwgMTgwLCA1NiwgMSwgNCwgMjQwLCAyMjIsIDU2LCAKKyAgICAxLCA0LCAyNDEsIDIzOCwgNTYsIDEsIDQsIDI0MSwgNjgsIDU2LCAxLCA0LCAyMzAsIDEwMiwgNTYsIDEsIDQsIDIwNSwgNTYsIAorICAgIDEsIDQsIDIyMywgMzUsIDU2LCAxLCA0LCAyMjIsIDE0MCwgNTYsIDEsIDQsIDIyMywgMTI4LCA1NiwgMSwgNCwgMjIyLCAKKyAgICAyMTEsIDg4LCAyNCwgMjM0LCA1OCwgODgsIDI0LCAyMjgsIDIyNiwgODgsIDI0LCAyMTYsIDEwMSwgODgsIDI0LCAyMjMsIAorICAgIDI2LCA4OCwgMjQsIDIzMCwgMjE3LCA4OCwgMjQsIDIyNSwgOTUsIDg4LCAyNCwgMjE5LCAxNDgsIDg4LCAyNCwgMjM2LCA1NiwgCisgICAgODgsIDI0LCAyNTAsIDQ2LCA4OCwgMjQsIDI1MCwgMTA2LCA4OCwgMjQsIDIzNCwgMTEwLCA4OCwgMjQsIDIxNiwgMTczLCAKKyAgICA4OCwgMjQsIDIyNSwgMTMxLCA4OCwgMjQsIDI0MSwgMTcyLCA4OCwgMjQsIDIzNCwgNTksIDYxLCA4OCwgMjQsIDIyOCwgCisgICAgMjI3LCA2MSwgODgsIDI0LCAyMTYsIDEwMiwgNjEsIDg4LCAyNCwgMjIzLCAyNywgNjEsIDg4LCAyNCwgMjMwLCAyMTgsIDYxLCAKKyAgICA4OCwgMjQsIDIyNSwgOTYsIDYxLCA4OCwgMjQsIDIxOSwgMTQ5LCA2MSwgODgsIDI0LCAyMzYsIDU3LCA2MSwgODgsIDI0LCAKKyAgICAyNTAsIDQ3LCA2MSwgODgsIDI0LCAyNTAsIDEwNywgNjEsIDg4LCAyNCwgMjM0LCAxMTEsIDYxLCA4OCwgMjQsIDIxNiwgCisgICAgMTc0LCA2MSwgODgsIDI0LCAyMjUsIDEzMiwgNjEsIDg4LCAyNCwgMjQxLCAxNzMsIDYxLCA4OCwgMjQsIDI1MCwgNDcsIDcwLCAKKyAgICA4OCwgMjM0LCAzLCAxMzUsIDIyNiwgMjE3LCA4OCwgMjM0LCAzLCAxMzUsIDE0NCwgMjQwLCAyMjIsIDg4LCAxNTQsIDExMCwgCisgICAgODgsIDE1NCwgMTA1LCA4OCwgMTU0LCAxNTgsIDg4LCAxNTQsIDE2MSwgODgsIDE1NCwgMTg5LCA4OCwgMTU0LCAxOTQsIDg4LCAKKyAgICAxNTQsIDE5OCwgODgsIDE1NCwgMTk1LCA4OCwgMTU0LCAyMDAsIDg4LCAxNTQsIDIxNiwgMjQ3LCA4OCwgMTU0LCAyMzAsIAorICAgIDEyOCwgODgsIDE1NCwgMjQ0LCA5NiwgODgsIDE1NCwgMjEyLCA0MCwgODgsIDE1NCwgMjExLCAyMTQsIDg4LCAxNTQsIDIzMSwgCisgICAgMzksIDg4LCAxNTQsIDI0NSwgMjIzLCA4OCwgMTU0LCAyMTgsIDM3LCA4OCwgMTU0LCAyMTgsIDEzMiwgODgsIDE1NCwgMjQxLCAKKyAgICAyNDQsIDg4LCAxNTQsIDIxOSwgNTQsIDg4LCAxNTQsIDIyOSwgMjA0LCA4OCwgMTU0LCAyMTksIDQsIDg4LCAxNTQsIDI0NCwgCisgICAgMTAyLCA4OCwgMTU0LCAyNDksIDIwMCwgODgsIDE1NCwgMjMzLCAxMjUsIDg4LCAxNTQsIDIyMywgNzEsIDg4LCAxNTQsIAorICAgIDI1MSwgMTUsIDg4LCAxNTQsIDIxOCwgODcsIDg4LCAxNTQsIDIxOCwgMjAsIDg4LCAxNTQsIDI0NSwgMTI3LCA4OCwgMTU0LCAKKyAgICAyMjMsIDYzLCA4OCwgMTU0LCAyNTQsIDE1MCwgODgsIDE1NCwgMjQ0LCAxMjgsIDg4LCAxNTQsIDIyMywgNjEsIDg4LCAxNTQsIAorICAgIDIyMCwgMTU2LCA4OCwgMTU0LCAyMjMsIDEyNywgMzcsIDE1NCwgMjI0LCAxMiwgMzcsIDE1NCwgMjM0LCA4MCwgMzcsIDE1NCwgCisgICAgMjIxLCAxOTgsIDM3LCAxNTQsIDIzMywgMjU1LCAzNywgNTQsIDIxNiwgMjQ4LCAyMjYsIDE5NywgODUsIDIxOCwgMjM0LCAKKyAgICAzNywgNTQsIDIxNSwgNzQsIDIyNiwgMTk3LCA4NSwgMjE4LCAyMzQsIDM3LCA1NCwgMjE2LCAxNjMsIDIyNiwgMTk3LCA4NSwgCisgICAgMjE4LCAyMzQsIDM3LCA1NCwgMjQ0LCAxNiwgMjI2LCAxOTcsIDg1LCAyMTgsIDIzNCwgMzcsIDU0LCAyNDQsIDExNSwgMjI2LCAKKyAgICAxOTcsIDg1LCAyMTgsIDIzNCwgMzcsIDU0LCAyMTksIDExMiwgMjI2LCAxOTcsIDg1LCAyMTgsIDIzNCwgMzcsIDU0LCAyMjAsIAorICAgIDExNywgMjI2LCAxOTcsIDg1LCAyMTgsIDIzNCwgMzcsIDU0LCAyNDUsIDE4NSwgMjI2LCAxOTcsIDg1LCAyMTgsIDIzNCwgCisgICAgMjI1LCAyNTEsIDUwLCAzNywgNTQsIDIxNSwgNzQsIDExMCwgMzcsIDU0LCAyMTUsIDc0LCAxMDUsIDM3LCA1NCwgMjE1LCAKKyAgICA3NCwgMTU4LCAzNywgNTQsIDIxNSwgNzQsIDE2MSwgMzcsIDU0LCAyMTUsIDc0LCAxODksIDM3LCA1NCwgMjE1LCA3NCwgCisgICAgMTk0LCAzNywgNTQsIDIxNSwgNzQsIDE5OCwgMzcsIDU0LCAyMTUsIDc0LCAxOTUsIDM3LCA1NCwgMjE1LCA3NCwgMjAwLCAKKyAgICAzNywgNTQsIDIxNiwgMTYyLCAzNywgNTQsIDIxNiwgMTYzLCAxMTAsIDM3LCA1NCwgMjE2LCAxNjMsIDEwNSwgMzcsIDU0LCAKKyAgICAyMTYsIDE2MywgMTU4LCAzNywgNTQsIDIxNiwgMTYzLCAxNjEsIDM3LCA1NCwgMjE2LCAxNjMsIDE4OSwgMzcsIDI0LCAyMzQsIAorICAgIDU4LCAzNywgMjQsIDIyOCwgMjI2LCAzNywgMjQsIDIxNiwgMTAxLCAzNywgMjQsIDIyMywgMjYsIDM3LCAyNCwgMjMwLCAKKyAgICAyMTcsIDM3LCAyNCwgMjI1LCA5NSwgMzcsIDI0LCAyMTksIDE0OCwgMzcsIDI0LCAyMzYsIDU2LCAzNywgMjQsIDI1MCwgNDYsIAorICAgIDM3LCAyNCwgMjUwLCAxMDYsIDM3LCAyNCwgMjM0LCAxMTAsIDM3LCAyNCwgMjE2LCAxNzMsIDM3LCAyNCwgMjI1LCAxMzEsIAorICAgIDM3LCAyNCwgMjQxLCAxNzIsIDM3LCAyNCwgMjM0LCA1OSwgNjEsIDM3LCAyNCwgMjI4LCAyMjcsIDYxLCAzNywgMjQsIDIxNiwgCisgICAgMTAyLCA2MSwgMzcsIDI0LCAyMjMsIDI3LCA2MSwgMzcsIDI0LCAyMzAsIDIxOCwgNjEsIDM3LCAyNCwgMjI1LCA5NiwgNjEsIAorICAgIDM3LCAyNCwgMjE5LCAxNDksIDYxLCAzNywgMjQsIDIzNiwgNTcsIDYxLCAzNywgMjQsIDI1MCwgNDcsIDYxLCAzNywgMjQsIAorICAgIDI1MCwgMTA3LCA2MSwgMzcsIDI0LCAyMzQsIDExMSwgNjEsIDM3LCAyNCwgMjE2LCAxNzQsIDYxLCAzNywgMjQsIDIyNSwgCisgICAgMTMyLCA2MSwgMzcsIDI0LCAyNDEsIDE3MywgNjEsIDM3LCAyMzQsIDMsIDEzNSwgMjUwLCAxNDgsIDM3LCAyMzQsIDMsIAorICAgIDEzNSwgMjM1LCA0NywgMzcsIDI0LCAyMzYsIDU3LCA3MCwgMjM0LCAzLCAyMTgsIDE1OSwgODcsIDM3LCAxNTQsIDExMCwgCisgICAgMzcsIDE1NCwgMTA1LCAzNywgMTU0LCAxNTgsIDM3LCAxNTQsIDE2MSwgMzcsIDE1NCwgMTg5LCAzNywgMTU0LCAxOTQsIDM3LCAKKyAgICAxNTQsIDE5OCwgMzcsIDE1NCwgMTk1LCAzNywgMTU0LCAyMDAsIDM3LCAxNTQsIDIxNiwgMjQ3LCAzNywgMTU0LCAyMzAsIAorICAgIDEyOCwgMzcsIDE1NCwgMjQ0LCA5NiwgMzcsIDE1NCwgMjEyLCA0MCwgMzcsIDE1NCwgMjExLCAyMTQsIDM3LCAxNTQsIDIzMSwgCisgICAgMzksIDM3LCAxNTQsIDI0NSwgMjIzLCAzNywgMTU0LCAyMTgsIDM3LCAzNywgMTU0LCAyMTgsIDEzMiwgMzcsIDE1NCwgMjQxLCAKKyAgICAyNDQsIDM3LCAxNTQsIDIxOSwgNTQsIDM3LCAxNTQsIDIyOSwgMjA0LCAzNywgMTU0LCAyMTksIDQsIDM3LCAxNTQsIDI0NCwgCisgICAgMTAyLCAzNywgMTU0LCAyNDksIDIwMCwgMzcsIDE1NCwgMjMzLCAxMjUsIDM3LCAxNTQsIDIyMSwgMTc0LCAzNywgMTU0LCAKKyAgICAyMzEsIDE4OSwgMzcsIDE1NCwgMjQ0LCAxMzcsIDM3LCAxNTQsIDIxOCwgNDksIDM3LCAxNTQsIDI0NSwgMzQsIDM3LCAxNTQsIAorICAgIDIyNCwgMTg3LCAzNywgMTU0LCAyNTMsIDE5NiwgMzcsIDE1NCwgMjM1LCAxNTksIDM3LCAxNTQsIDIyMywgNjEsIDM3LCAKKyAgICAxNTQsIDI0OSwgMTY0LCAzNywgMTU0LCAyNDksIDE1NSwgMzcsIDE1NCwgMjQxLCAxNjUsIDM3LCAxNTQsIDI1MCwgMTc0LCAKKyAgICAzNywgMTU0LCAyMzIsIDExMCwgMzcsIDE1NCwgMjMzLCA0NiwgMzcsIDE1NCwgMjIyLCAyNTEsIDM3LCAxNTQsIDIzMSwgODMsIAorICAgIDM3LCAxNTQsIDIyMywgODcsIDM3LCAxNTQsIDIxOCwgODcsIDM3LCAxNTQsIDIxOCwgMjAsIDM3LCAxNTQsIDI0NSwgMTI3LCAKKyAgICAzNywgMTU0LCAyMjMsIDYzLCAzNywgMTU0LCAyNTQsIDE1MCwgMzcsIDE1NCwgMjI4LCAyMTIsIDM3LCA1NCwgMjE2LCAxNjMsIAorICAgIDE5NCwgMzcsIDU0LCAyMTYsIDE2MywgMTk4LCAzNywgNTQsIDIxNiwgMTYzLCAxOTUsIDM3LCA1NCwgMjE2LCAxNjMsIDIwMCwgCisgICAgMzcsIDU0LCAyNDQsIDE1LCAzNywgNTQsIDI0NCwgMTYsIDExMCwgMzcsIDU0LCAyNDQsIDE2LCAxMDUsIDM3LCA1NCwgMjQ0LCAKKyAgICAxNiwgMTU4LCAzNywgNTQsIDI0NCwgMTYsIDE2MSwgMzcsIDU0LCAyNDQsIDE2LCAxODksIDM3LCA1NCwgMjQ0LCAxNiwgCisgICAgMTk0LCAzNywgNTQsIDI0NCwgMTYsIDE5OCwgMzcsIDU0LCAyNDQsIDE2LCAxOTUsIDM3LCA1NCwgMjQ0LCAxNiwgMjAwLCAKKyAgICAzNywgNTQsIDI0NCwgMTE0LCAxMDksIDIxNywgMywgMTYsIDMxLCAyMzUsIDEzMywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgCisgICAgMjQ0LCAxNDgsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDIzMSwgMTYwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNTQsIDQ3LCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyMzEsIDEzMiwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjM1LCA0NSwgMTA5LCAyMTcsIDMsIAorICAgIDE2LCAzMSwgMjM1LCA0NiwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjUzLCAxODgsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDIyMCwgCisgICAgMTM2LCAxMDksIDIxNywgMywgMTYsIDMxLCAyMjYsIDIzOSwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjI4LCA0MCwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQ4LCA4NSwgNDIsIDI0MSwgMTkwLCA0MiwgMjQ1LCA4OCwgNDIsIDI0NSwgNDMsIDIzMiwgCisgICAgMjE5LCAyMzIsIDI0MCwgNTAsIDM3LCA1NiwgNjEsIDM3LCA1NiwgNzMsIDM3LCA1NiwgNzAsIDM3LCA1NiwgNzUsIDM3LCAKKyAgICA1NiwgNzYsIDM3LCA1NiwgMTc2LCAzNywgNTYsIDIzNCwgOTIsIDM3LCA1NiwgMjMzLCAyMTcsIDM3LCA1NiwgMjM0LCAxODIsIAorICAgIDM3LCA1NiwgMjM0LCAyOCwgMzcsIDU2LCAyMDYsIDM3LCA1NiwgMjE5LCAxOTEsIDM3LCA1NiwgMjE4LCA4MywgMzcsIDU2LCAKKyAgICAyMjEsIDE4MSwgMzcsIDU2LCAyMTksIDU4LCAzNywgNTYsIDIxNywgMTA1LCAzNywgNTYsIDIxNiwgMTE3LCAzNywgNTYsIAorICAgIDIxNSwgMTE4LCAzNywgNTYsIDIxNywgMjIsIDM3LCA1NiwgMTExLCAzNywgNTYsIDE5NywgMzcsIDU2LCAyMjgsIDIzMywgCisgICAgMzcsIDU2LCAyMjcsIDIzNywgMzcsIDU2LCAyMjksIDEwNywgMzcsIDU2LCAyMjgsIDc0LCAzNywgNTYsIDE2MiwgMzcsIDU2LCAKKyAgICAyNDEsIDE4MCwgMzcsIDU2LCAyNDAsIDIyMiwgMzcsIDU2LCAyNDEsIDIzOCwgMzcsIDU2LCAyNDEsIDY4LCAzNywgNTYsIAorICAgIDE4NCwgMzcsIDU2LCAyMzAsIDIzMCwgMzcsIDU2LCAyMzAsIDEwMiwgMzcsIDU2LCAyMzEsIDkxLCAzNywgNTYsIDIzMCwgCisgICAgMTYxLCAzNywgNTYsIDE5MSwgMzcsIDU2LCAyMTAsIDIxMiwgMzcsIDU2LCAyMTAsIDI0NCwgMzcsIDU2LCAyMDUsIDM3LCAKKyAgICA1NiwgMjIzLCAzNSwgMzcsIDU2LCAyMjIsIDE0MCwgMzcsIDU2LCAyMjMsIDEyOCwgMzcsIDU2LCAyMjIsIDIxMSwgMzcsIAorICAgIDU2LCAyMTIsIDY1LCAzNywgNTYsIDIxMSwgMjUwLCAzNywgNTYsIDIxMiwgMjIsIDM3LCA1NiwgMjExLCAyMjcsIDQyLCAKKyAgICAyNTQsIDcxLCA0MiwgMjUzLCAyMzksIDQyLCAyNTQsIDk1LCA0MiwgMjU1LCAzMSwgNDIsIDIzNSwgMjI2LCA0MiwgMjM1LCAKKyAgICAxOTYsIDQyLCAyMTQsIDE2NiwgNDIsIDI0NSwgNjYsIDQyLCAyNDUsIDIwNiwgNDIsIDIyNiwgMTg2LCA0MiwgMjI2LCAxODAsIAorICAgIDQyLCAyMzQsIDI0NSwgNDIsIDIzNCwgMjE0LCA0MiwgMjM0LCAyMTEsIDQyLCAyNDMsIDkyLCA0MiwgMjQzLCAxMDEsIDQyLCAKKyAgICAyNDIsIDIwNCwgNDIsIDI0MiwgMjAwLCA0MiwgMjMzLCAxNTAsIDQyLCAyNDIsIDE5MywgNDIsIDIzNCwgNzIsIDQyLCAyMzQsIAorICAgIDcxLCA0MiwgMjM0LCA3MCwgNDIsIDIzNCwgNjksIDQyLCAyNDIsIDg2LCA0MiwgMjQyLCA4NSwgNDIsIDIzMywgMTkzLCA0MiwgCisgICAgMjMzLCAxOTUsIDQyLCAyMzQsIDE3OCwgNDIsIDIzNCwgMSwgNDIsIDIzNCwgOCwgNDIsIDIyMiwgMTYsIDQyLCAyMjEsIAorICAgIDIzNywgNDIsIDIxOSwgMTI5LCA0MiwgMjIwLCAxNDEsIDQyLCAyMjAsIDE0MCwgNDIsIDI0OCwgMjE4LCA0MiwgMjQ4LCAzNiwgCisgICAgNDIsIDI0NywgMTIxLCA0MiwgMjE2LCAzMiwgNDIsIDIyOSwgMjAwLCA0MiwgMjI4LCA0MSwgNDIsIDI0MiwgMzIsIDQyLCAKKyAgICAyMjYsIDg0LCA0MiwgMjI2LCA4MywgNDIsIDI1MiwgMTg4LCA0MiwgMjI1LCAxMDUsIDQyLCAyMjUsIDY5LCA0MiwgMjI1LCAKKyAgICA3MCwgNDIsIDI1MSwgMjM0LCA0MiwgMjQwLCAyMjEsIDQyLCAyNDAsIDIxNywgNDIsIDI1MSwgOTEsIDQyLCAyNDAsIDIwNCwgCisgICAgNDIsIDI0MSwgMjE1LCA0MiwgMjI1LCAxNTksIDQyLCAyMjUsIDE5NCwgNDIsIDI0MSwgMTk4LCA0MiwgMjI1LCAxOTEsIDQyLCAKKyAgICAyMjUsIDIwNywgNDIsIDI1MiwgNjEsIDQyLCAyMjUsIDYsIDQyLCAyNTEsIDE4MCwgNDIsIDI0MSwgNTYsIDQyLCAyMjQsIAorICAgIDI1MCwgNDIsIDI0MSwgNDgsIDQyLCAyNDEsIDUwLCA0MiwgMjMxLCAyMDEsIDQyLCAyMzEsIDE5NywgNDIsIDIzMSwgMjA2LCAKKyAgICA0MiwgMjMxLCAxNTAsIDQyLCAyMzEsIDE3NSwgNDIsIDIzMCwgMTk3LCA0MiwgMjMwLCAxNzYsIDQyLCAyMzAsIDE3NSwgNDIsIAorICAgIDIzMSwgNzQsIDQyLCAyMzEsIDcxLCA0MiwgMjMxLCA3NSwgNDIsIDIxMSwgMTAyLCA0MiwgMjExLCAxMDAsIDQyLCAyMTAsIAorICAgIDIwMSwgNDIsIDIyMiwgMjI2LCA0MiwgMjIyLCAyMzAsIDQyLCAyMjIsIDExNywgNDIsIDIyMiwgMTExLCA0MiwgMjIzLCA4NSwgCisgICAgNDIsIDIyMywgODIsIDQyLCAyMTIsIDM4LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjEwLCA4NiwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDExMCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDEwNSwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE1OCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE2MSwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE4OSwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE5NCwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE5OCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE5NSwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIwMCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIxNiwgMjQ3LCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjQ1LCAxNjcsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAKKyAgICAyMTUsIDc2LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjE2LCAxNjQsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIAorICAgIDI0MCwgMjM5LCAyNDQsIDUsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyNDQsIDExOCwgMTA5LCAyMTcsIDMsIAorICAgIDE2LCAzMSwgMjQwLCAyMzksIDIxOSwgMTE5LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjIwLCAxMTksIDEwOSwgCisgICAgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyNDUsIDE5MCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIyOCwgCisgICAgMTk3LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjE1LCA3MywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAKKyAgICAyMzksIDIxNSwgNjcsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyMTUsIDYzLCAxMDksIDIxNywgMywgMTYsIAorICAgIDMxLCAyNDAsIDIzOSwgMjE1LCA2NCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIxNSwgNjksIDQyLCAyNDAsIAorICAgIDIzMCwgNDIsIDI0OCwgMjIxLCA0MiwgMjUzLCAxOTIsIDQyLCAxMzAsIDQyLCAyMjYsIDEyNSwgNDIsIDIyNSwgMjI1LCA0MiwgCisgICAgMjQ3LCAxNDcsIDQyLCAyNDcsIDE0OCwgMjE4LCAyMzMsIDQyLCAyNDcsIDE0OCwgMjQ5LCAxMDgsIDQyLCAyMzUsIDE1NiwgCisgICAgNDIsIDI0NSwgOTEsIDIyOSwgMjA1LCAyNDEsIDIxNiwgNDIsIDI0NSwgOTEsIDIyOSwgMjA1LCAyMTcsIDE3NCwgNDIsIAorICAgIDI0NSwgOTEsIDIyOSwgMjA1LCAyMTcsIDc0LCA0MiwgMjQ1LCA5MSwgMjI5LCAyMDUsIDIzMSwgNzAsIDQyLCAyNDksIDE1NywgCisgICAgNDIsIDIyNiwgOTAsIDI1NCwgMTI1LCA0MiwgMTk3LCA0MiwgMjMwLCAxMDMsIDYxLCA0MiwgMTg0LCA0MiwgMTc2LCA0MiwgCisgICAgMjM0LCAxODUsIDQyLCAyMzEsIDEyOSwgNDIsIDI0MywgODAsIDQyLCAyNTEsIDE4LCA0MiwgMjM0LCAxODQsIDQyLCAyMjUsIAorICAgIDE1MCwgNDIsIDIyOSwgODEsIDQyLCAyMzAsIDEwMywgMjQ1LCA2LCA0MiwgMjMwLCAxMDMsIDI0MywgMjAyLCA0MiwgMjMxLCAKKyAgICAxNSwgNDIsIDIzNCwgMTM0LCA0MiwgMjQwLCAxNjMsIDQyLCAyMzQsIDk0LCA0MiwgMjMwLCAyMzIsIDQyLCAyNDIsIDIxNiwgCisgICAgNDIsIDIxNiwgMTE5LCA0MiwgMjMwLCAxMDMsIDE1NiwgNDIsIDIzMCwgMTY5LCA0MiwgMjQ3LCAxNTcsIDQyLCAyMzQsIDQwLCAKKyAgICA0MiwgMjQ0LCA0NSwgNDIsIDIyOCwgMTEyLCA0MiwgMjMwLCAxMDMsIDE5MywgNDIsIDIzMCwgMTY2LCA0MiwgMjQ5LCAyMzksIAorICAgIDQyLCAyMzQsIDM0LCA0MiwgMjMwLCAxNjcsIDIxOCwgMjMzLCA0MiwgMjQ5LCAyNDAsIDIxOCwgMjMzLCA0MiwgMjMyLCA1MCwgCisgICAgMjE4LCAyMzMsIDQyLCAyMzQsIDM1LCAyMTgsIDIzMywgNDIsIDIzMCwgMTY3LCAyNDksIDEwOCwgNDIsIDI0OSwgMjQwLCAKKyAgICAyNDksIDEwOCwgNDIsIDIzMiwgNTAsIDI0OSwgMTA4LCA0MiwgMjM0LCAzNSwgMjQ5LCAxMDgsIDQyLCAyMzIsIDUwLCAxMTcsIAorICAgIDIyMiwgOTEsIDQyLCAyMzIsIDUwLCAxMTcsIDIyMiwgOTIsIDIxOCwgMjMzLCA0MiwgMTkwLCA0MiwgMjMzLCAyNTEsIDQyLCAKKyAgICAyMzAsIDEwNSwgNDIsIDI0MiwgMTUxLCA0MiwgMjIzLCAxNzYsIDQyLCAyMjMsIDE3NywgMTE3LCAyMjIsIDkxLCA0MiwgCisgICAgMjIzLCAxNzcsIDExNywgMjIyLCA5MiwgMjE4LCAyMzMsIDQyLCAyMjQsIDE2MiwgNDIsIDIyOCwgMTMsIDQyLCAyMzAsIAorICAgIDEwMywgMjIyLCA5MSwgNDIsIDIzMCwgMTA0LCA0MiwgMjI0LCAxMTYsIDQyLCAyMjcsIDE3NiwgNDIsIDIzMCwgMTAzLCAKKyAgICAyMTQsIDEwNSwgNDIsIDIzMCwgNDksIDQyLCAyMzMsIDE4NSwgNDIsIDIzMCwgNTAsIDIzMSwgNzQsIDQyLCAyMjQsIDExNSwgCisgICAgNDIsIDIyNywgMTc1LCA0MiwgMjMwLCAxMDMsIDIxMiwgOTgsIDQyLCAyMzAsIDQzLCA0MiwgMjMzLCAxODMsIDQyLCAyMzAsIAorICAgIDQ0LCAyMzEsIDc0LCA0MiwgMjM1LCAyNCwgMjI2LCAyMjAsIDQyLCAyMzIsIDUwLCAyMjYsIDIyMCwgNDIsIDI1NCwgMTM2LCAKKyAgICA0MiwgMjUxLCAxNjAsIDQyLCAyNTAsIDIxNCwgNDIsIDI1MCwgMTkxLCA0MiwgMjUxLCA2NywgMTE3LCAyMzQsIDEzNCwgNDIsIAorICAgIDI0OSwgMjM4LCA0MiwgMjQ4LCAxNDIsIDQyLCAyNDIsIDcyLCA0MiwgMTYyLCA0MiwgMjQwLCAyMzEsIDQyLCAyMzUsIDI1NSwgCisgICAgNDIsIDIzNCwgNDcsIDQyLCAyMzQsIDM1LCAyNTAsIDI1MCwgNDIsIDIzMywgMjE5LCA0MiwgMjMyLCAxNTksIDQyLCAyMzIsIAorICAgIDE1OCwgNDIsIDIzMiwgMTQ3LCA0MiwgMjMyLCA2MywgNDIsIDIzMSwgMTMwLCAyMTksIDc5LCA0MiwgMjMwLCAxOTYsIDQyLCAKKyAgICAyMzAsIDE1MiwgNDIsIDIyNSwgMTQ4LCA0MiwgMjI1LCAxOSwgNDIsIDIyNCwgMjE5LCA0MiwgMjI0LCAyMTcsIDQyLCAyMTgsIAorICAgIDIyNywgNDIsIDIxOCwgMiwgNDIsIDIxMiwgMjQsIDQyLCAyMTQsIDEwNiwgMTE3LCAxOTMsIDQyLCAxMTUsIDExNywgMTkzLCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTEwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTA1LCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTU4LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTYxLCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTg5LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTk0LCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTk4LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTk1LCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjAwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE2LCAKKyAgICAyNDcsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyNDUsIDE2NywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAKKyAgICAxNDYsIDIxNSwgNzYsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTYsIDE2NCwgMTA5LCAyMTcsIDMsIDE2LCAKKyAgICAzMSwgMjQ4LCAxNDYsIDI0NCwgNSwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDI0NCwgMTE4LCAxMDksIDIxNywgCisgICAgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE5LCAxMTksIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMjAsIDExOSwgCisgICAgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDI0NSwgMTkwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgCisgICAgMjI4LCAxOTcsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIDczLCAxMDksIDIxNywgMywgMTYsIDMxLCAKKyAgICAyNDgsIDE0NiwgMjE1LCA2NywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNSwgNjMsIDEwOSwgMjE3LCAzLCAKKyAgICAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIDY0LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE1LCA2OSwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNSwgNzAsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIAorICAgIDY1LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE1LCA2NiwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAKKyAgICAxNDYsIDIxNSwgNzIsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIDY4LCAxMDksIDIxNywgMywgMTYsIAorICAgIDMxLCAyNDgsIDE0NiwgMjE2LCAxNjIsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTYsIDE2MSwgNDIsIDI0MywgCisgICAgMTE4LCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAyNDksIDE0MCwgMjQxLCAyMjMsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIAorICAgIDIyMywgMTIyLCAyNDUsIDIyMywgMjQxLCAxOTIsIDMxLCAyNDcsIDIzMSwgMjUzLCAyMDcsIDIxNiwgMTk2LCAyNTIsIDU2LCAKKyAgICAyNDEsIDE5MiwgMzEsIDIxMCwgMjIzLCAyNDQsIDM4LCAyNDEsIDE5MiwgMzEsIDIxMiwgNTksIDI0MSwgMTkyLCAzMSwgCisgICAgMjQ5LCAyMDMsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIDI1NCwgMywgMjQxLCAxOTIsIDMxLCAyNDEsIDYwLCAyMTYsIDM4LCAKKyAgICAyNDEsIDE5MiwgMzEsIDQsIDIxNywgNjEsIDI0MSwgMTkyLCAzMSwgMjE1LCAyMzcsIDI0MSwgMTkyLCAzMSwgMjI1LCAyMTksIAorICAgIDI0MSwgMTkyLCAzMSwgMjE4LCAxNTgsIDI0MSwgMTkyLCAzMSwgMjQ0LCAxMzksIDI0MSwgMTkyLCAzMSwgMjQyLCAxMzIsIAorICAgIDIyNCwgMjQwLCAyNDEsIDE5MiwgMzEsIDIzMCwgMTU1LCAyNDEsIDE5MiwgMzEsIDI0NSwgMTI2LCAyNDEsIDE5MiwgMzEsIAorICAgIDI0NCwgMzksIDI0MSwgMTkyLCAzMSwgMjExLCAyMDcsIDIyNiwgMTk3LCAyMTYsIDE5NiwgMjQ4LCA4NiwgMjQxLCAxOTIsIAorICAgIDMxLCAyNTQsIDUxLCAyNDEsIDE5MiwgMzEsIDI0OSwgMTg1LCAyNDEsIDE5MiwgMzEsIDI1MSwgMjI3LCAyMTYsIDEzOCwgCisgICAgMjQxLCAxOTIsIDMxLCAyNDIsIDE0OSwgMjQxLCAxOTIsIDMxLCAyMTgsIDI0NSwgMjU0LCA3MCwgMjQxLCAxOTIsIDMxLCAKKyAgICAyMjMsIDUzLCAyNDEsIDE5MiwgMzEsIDIzNSwgMjIwLCAyNDEsIDE5MiwgMzEsIDI0MiwgMTMyLCAyMTcsIDYxLCAyNDEsIAorICAgIDE5MiwgMzEsIDIzMCwgMTExLCAyNDksIDE1OSwgMjQxLCAxOTIsIDMxLCAyNDIsIDEzMiwgMjI0LCAxOTcsIDI0MSwgMTkyLCAKKyAgICAzMSwgMjE2LCAxOTYsIDI1NSwgMTgsIDIxMiwgNDAsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIDI1MCwgOCwgMjQ0LCA5NiwgCisgICAgMjQxLCAxOTIsIDMxLCAyMzUsIDIzMywgMjQxLCAxOTIsIDMxLCAyNDYsIDU3LCAyNDEsIDE5MiwgMzEsIDIyMywgNTYsIAorICAgIDI0MSwgMTkyLCAzMSwgMjQyLCAxMzIsIDIyNCwgMjI0LCAyNDEsIDE5MiwgMzEsIDIyNCwgMTc3LCAyNDEsIDE5MiwgMzEsIAorICAgIDI0OCwgMTYxLCA2NCwgMjE2LCAxOTYsIDIzMiwgMjMwLCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAyNDQsIDE3NCwgMjQxLCAKKyAgICAxOTIsIDMxLCAyMjYsIDE2MywgMjQxLCAxOTIsIDMxLCAyMjYsIDI0NCwgMjQxLCAxOTIsIDMxLCAyNDgsIDU5LCAyNDEsIAorICAgIDE5MiwgMzEsIDI0OCwgNzksIDI0MSwgMTkyLCAzMSwgMjM1LCAyNDcsIDI0MSwgMTkyLCAzMSwgMjUxLCAxNDksIDI0MSwgCisgICAgMTkyLCAzMSwgMjQ5LCAyMjEsIDIxNiwgNDIsIDIzMSwgNzYsIDI0MSwgMTkyLCAzMSwgMjQzLCA4NywgMjE2LCAzOCwgMjQxLCAKKyAgICAxOTIsIDMxLCAyMjQsIDEyNSwgMjE0LCAxNTQsIDI0MSwgMTkyLCAzMSwgMjI2LCAxNjIsIDI0MSwgMTkyLCAzMSwgMjE2LCAKKyAgICAxOTYsIDIxMiwgMTMsIDI0MSwgMTkyLCAzMSwgMjIzLCA0NSwgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjUwLCAyMjAsIAorICAgIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIDI1MywgMjU1LCAyMTYsIDEzMywgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjM0LCAKKyAgICAxNzksIDIxOCwgMTM0LCAyMzAsIDExNSwgMjQxLCAxOTIsIDMxLCAyNDgsIDMyLCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAKKyAgICAyMzEsIDE1MiwgMjMxLCAyMDIsIDI0MSwgMTkyLCAzMSwgMjU1LCAxOSwgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjEyLCAKKyAgICA1NCwgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjQzLCA0NywgMjExLCAyMzksIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIAorICAgIDIzNSwgNTIsIDIzMywgMTA3LCAyNDEsIDE5MiwgMzEsIDI0NywgMTg0LCAyNDEsIDE5MiwgMzEsIDIzMiwgMjIwLCAyNDEsIAorICAgIDE5MiwgMzEsIDIzNSwgMjIzLCAyMTUsIDE4NywgMjQxLCAxOTIsIDMxLCA0LCAyMjQsIDE5NywgMjQxLCAxOTIsIDMxLCAKKyAgICAyNTQsIDIxNywgMjQ5LCAyMTIsIDI0MSwgMTkyLCAzMSwgMjUyLCA1OSwgMjQ5LCAyMTIsIDgsIDMsIDIzNSwgMTYwLCA4LCAKKyAgICAzLCAyMzUsIDE1MywgOCwgMywgNzMsIDgsIDMsIDIzNSwgMTgyLCA4LCAzLCAyMzYsIDU4LCA4LCAzLCAyMzYsIDQxLCA4LCAKKyAgICAzLCAyMzYsIDYwLCA4LCAzLCAyMzYsIDU5LCA4LCAzLCAyNTMsIDIwNiwgOCwgMywgMjUzLCAxNjksIDgsIDMsIDYxLCA4LCAKKyAgICAzLCAyNTQsIDcyLCA4LCAzLCAyMTQsIDE2NCwgOCwgMywgMjE0LCAxNjcsIDgsIDMsIDIxNCwgMTY1LCA4LCAzLCAyMjYsIAorICAgIDE0MCwgOCwgMywgMjI2LCAxMTQsIDgsIDMsIDc2LCA4LCAzLCAyMjYsIDE3NSwgOCwgMywgMjQ1LCAzNSwgOCwgMywgNzUsIAorICAgIDgsIDMsIDIxMSwgMTk1LCA4LCAzLCAyNTEsIDIyOCwgOCwgMywgMjUxLCAyMjUsIDgsIDMsIDI1MiwgNiwgOCwgMywgMjUxLCAKKyAgICAyMzgsIDgsIDMsIDI1MSwgMjUxLCA4LCAzLCAyNTEsIDI1MCwgOCwgMywgMjUxLCAyNTMsIDgsIDMsIDI1MSwgMjUyLCA4LCAKKyAgICAzLCAyNTIsIDEyMSwgOCwgMywgMjUyLCAxMTMsIDgsIDMsIDI1MiwgMTkxLCA4LCAzLCAyNTIsIDE0MiwgOCwgMywgMjUxLCAKKyAgICAxMDEsIDgsIDMsIDI1MSwgMTA1LCA4LCAzLCAyNTEsIDEwMiwgOCwgMywgMjUxLCAxNzksIDgsIDMsIDI1MSwgMTYzLCA4LCAKKyAgICAzLCAyNTEsIDIwNSwgOCwgMywgMjUxLCAxODUsIDgsIDMsIDI1MiwgMjEsIDgsIDMsIDI1MiwgNzUsIDgsIDMsIDI1MiwgMzMsIAorICAgIDgsIDMsIDI1MSwgODcsIDgsIDMsIDI1MSwgODQsIDgsIDMsIDI1MSwgMTI1LCA4LCAzLCAyNTEsIDEwMCwgOCwgMywgMjUxLCAKKyAgICA5NCwgOCwgMywgMjUxLCA5OCwgOCwgMywgMjUxLCA3MiwgOCwgMywgMjUxLCA3MCwgOCwgMywgMjUxLCA3NywgOCwgMywgCisgICAgMjUxLCA3NSwgOCwgMywgMjUxLCA3MywgOCwgMywgMjUxLCA3NCwgOCwgMywgMjI1LCA0OSwgOCwgMywgMjI1LCA0NSwgOCwgCisgICAgMywgMjI1LCAxMDgsIDgsIDMsIDIyNSwgNTksIDgsIDMsIDIyNSwgNzUsIDgsIDMsIDIyNSwgMTAyLCA4LCAzLCAyMjUsIDk4LCAKKyAgICA4LCAzLCAyMjUsIDI0MCwgOCwgMywgMjI1LCAyMzAsIDgsIDMsIDE5MCwgOCwgMywgMjI2LCAyMSwgOCwgMywgMjI0LCAxMzUsIAorICAgIDgsIDMsIDIyNCwgMTM3LCA4LCAzLCAyMjQsIDEzNiwgOCwgMywgMjI0LCAyMzMsIDgsIDMsIDIyNCwgMjIyLCA4LCAzLCAKKyAgICAyMjUsIDE2LCA4LCAzLCAyMjQsIDI0NSwgOCwgMywgMjI0LCAxMjEsIDgsIDMsIDIyNCwgMTE3LCA4LCAzLCAyMjQsIDE1MCwgCisgICAgOCwgMywgMjI0LCAxMzQsIDgsIDMsIDIyNCwgMTI2LCA4LCAzLCAyMjQsIDEzMiwgOCwgMywgMjI0LCAxMDAsIDgsIDMsIAorICAgIDIyNCwgOTksIDgsIDMsIDIyNCwgMTA0LCA4LCAzLCAyMjQsIDEwMywgOCwgMywgMjI0LCAxMDEsIDgsIDMsIDIyNCwgMTAyLCAKKyAgICA4LCAzLCAyNTIsIDk2LCA4LCAzLCAyNTIsIDk1LCA4LCAzLCAyNTIsIDEwMiwgOCwgMywgMjUyLCA5NywgOCwgMywgMjUyLCAKKyAgICA5OSwgOCwgMywgMjUyLCA5OCwgOCwgMywgMjUyLCAxMDEsIDgsIDMsIDI1MiwgMTAwLCA4LCAzLCAyNTIsIDEwOCwgOCwgMywgCisgICAgMjUyLCAxMDcsIDgsIDMsIDI1MiwgMTExLCA4LCAzLCAyNTIsIDEwOSwgOCwgMywgMjUyLCA4NywgOCwgMywgMjUyLCA4OSwgCisgICAgOCwgMywgMjUyLCA4OCwgOCwgMywgMjUyLCA5MiwgOCwgMywgMjUyLCA5MSwgOCwgMywgMjUyLCA5NCwgOCwgMywgMjUyLCAKKyAgICA5MywgOCwgMywgMjUyLCAxMDMsIDgsIDMsIDI1MiwgMTA2LCA4LCAzLCAyNTIsIDEwNCwgOCwgMywgMjUyLCA4MywgOCwgMywgCisgICAgMjUyLCA4MiwgOCwgMywgMjUyLCA5MCwgOCwgMywgMjUyLCA4NiwgOCwgMywgMjUyLCA4NCwgOCwgMywgMjUyLCA4NSwgOCwgCisgICAgMywgMjUyLCA3OSwgOCwgMywgMjUyLCA3OCwgOCwgMywgMjUyLCA4MSwgOCwgMywgMjUyLCA4MCwgOCwgMywgMjI5LCAxNjksIAorICAgIDgsIDMsIDIyOSwgMTY4LCA4LCAzLCAyMjksIDE3NCwgOCwgMywgMjI5LCAxNzAsIDgsIDMsIDIyOSwgMTcxLCA4LCAzLCAKKyAgICAyMjksIDE3MywgOCwgMywgMjI5LCAxNzIsIDgsIDMsIDIyOSwgMTc3LCA4LCAzLCAyMjksIDE3NiwgOCwgMywgMjI5LCAxNzksIAorICAgIDgsIDMsIDIyOSwgMTc4LCA4LCAzLCAyMjksIDE2NSwgOCwgMywgMjI5LCAxNjQsIDgsIDMsIDIyOSwgMTY3LCA4LCAzLCAKKyAgICAyMjksIDE2NiwgOCwgMywgMjI5LCAxNTgsIDgsIDMsIDIyOSwgMTU3LCA4LCAzLCAyMjksIDE2MiwgOCwgMywgMjI5LCAxNjEsIAorICAgIDgsIDMsIDIyOSwgMTU5LCA4LCAzLCAyMjksIDE2MCwgOCwgMywgMjI5LCAxNTIsIDgsIDMsIDIyOSwgMTUxLCA4LCAzLCAKKyAgICAyMjksIDE1NiwgOCwgMywgMjI5LCAxNTUsIDgsIDMsIDIyOSwgMTUzLCA4LCAzLCAyMjksIDE1NCwgOCwgMywgMjQxLCAxMTAsIAorICAgIDgsIDMsIDI0MSwgMTA5LCA4LCAzLCAyNDEsIDExNSwgOCwgMywgMjQxLCAxMTEsIDgsIDMsIDI0MSwgMTEyLCA4LCAzLCAKKyAgICAyNDEsIDExNCwgOCwgMywgMjQxLCAxMTMsIDgsIDMsIDI0MSwgMTE4LCA4LCAzLCAyNDEsIDExNywgOCwgMywgMjQxLCAxMjAsIAorICAgIDgsIDMsIDI0MSwgMTE5LCA4LCAzLCAyNDEsIDEwMSwgOCwgMywgMjQxLCAxMDMsIDgsIDMsIDI0MSwgMTAyLCA4LCAzLCAKKyAgICAyNDEsIDEwNiwgOCwgMywgMjQxLCAxMDUsIDgsIDMsIDI0MSwgMTA4LCA4LCAzLCAyNDEsIDEwNywgOCwgMywgMjQxLCA5NywgCisgICAgOCwgMywgMjQxLCA5NiwgOCwgMywgMjQxLCAxMDQsIDgsIDMsIDI0MSwgMTAwLCA4LCAzLCAyNDEsIDk4LCA4LCAzLCAyNDEsIAorICAgIDk5LCA4LCAzLCAyNDEsIDkxLCA4LCAzLCAyNDEsIDk1LCA4LCAzLCAyNDEsIDk0LCA4LCAzLCAyNDEsIDkyLCA4LCAzLCAKKyAgICAyNDEsIDkzLCA4LCAzLCAyMzAsIDE3MiwgOCwgMywgMjMwLCAxNzEsIDgsIDMsIDIzMCwgMjMwLCA4LCAzLCAyMzAsIDE3OCwgCisgICAgOCwgMywgMjMwLCAyMDMsIDgsIDMsIDIzMCwgMjIxLCA4LCAzLCAyMzAsIDIxOSwgOCwgMywgMjMxLCAxMzksIDgsIDMsIAorICAgIDIzMSwgMTM0LCA4LCAzLCAxODQsIDgsIDMsIDIzMSwgMTcyLCA4LCAzLCAyMzAsIDc0LCA4LCAzLCAyMzAsIDczLCA4LCAzLCAKKyAgICAyMzAsIDc3LCA4LCAzLCAyMzAsIDc1LCA4LCAzLCAyMzAsIDEyMSwgOCwgMywgMjMwLCAxMDcsIDgsIDMsIDIzMCwgMTYxLCAKKyAgICA4LCAzLCAyMzAsIDEyNiwgOCwgMywgMjMxLCAyNiwgOCwgMywgMjMxLCA5MSwgOCwgMywgMjMwLCA1NSwgOCwgMywgMjMwLCAKKyAgICA1MSwgOCwgMywgMjMwLCAxMDIsIDgsIDMsIDIzMCwgNzAsIDgsIDMsIDIzMCwgNjMsIDgsIDMsIDIzMCwgNjgsIDgsIDMsIAorICAgIDIzMCwgMjgsIDgsIDMsIDIzMCwgMjcsIDgsIDMsIDIzMCwgMzMsIDgsIDMsIDIzMCwgMzAsIDgsIDMsIDI0NCwgODMsIDgsIAorICAgIDMsIDI0NCwgNzgsIDgsIDMsIDI0NCwgMTIxLCA4LCAzLCAyNDQsIDk4LCA4LCAzLCAyNDQsIDE2NywgOCwgMywgMjQ0LCAKKyAgICAxNTgsIDgsIDMsIDI0NCwgMTk2LCA4LCAzLCAyNDQsIDE3MCwgOCwgMywgMjQ0LCAzLCA4LCAzLCAyNDQsIDQzLCA4LCAzLCAKKyAgICAyNDQsIDI3LCA4LCAzLCAyNDMsIDIxOCwgOCwgMywgMjQzLCAyMTcsIDgsIDMsIDI0MywgMjM0LCA4LCAzLCAyNDMsIDIyMywgCisgICAgOCwgMywgMjQzLCAyMjEsIDgsIDMsIDI0MywgMjIyLCA4LCAzLCAyNDMsIDIwNSwgOCwgMywgMjQzLCAyMDQsIDgsIDMsIAorICAgIDI0MywgMjA4LCA4LCAzLCAyNDMsIDIwNiwgOCwgMywgMjEzLCAxNDQsIDgsIDMsIDIxMywgMTM5LCA4LCAzLCAyMTMsIDE3NiwgCisgICAgOCwgMywgMjEzLCAxNTMsIDgsIDMsIDIxMywgMTY2LCA4LCAzLCAyMTMsIDE2MywgOCwgMywgMjEzLCAxNjgsIDgsIDMsIAorICAgIDIxMywgMTY3LCA4LCAzLCAyMTQsIDcsIDgsIDMsIDIxNCwgMiwgOCwgMywgMjE0LCAyNywgOCwgMywgMjE0LCAxOCwgOCwgMywgCisgICAgMjEzLCAxMjUsIDgsIDMsIDIxMywgMTIxLCA4LCAzLCAyMTMsIDEzOCwgOCwgMywgMjEzLCAxMjYsIDgsIDMsIDIxMywgMTc4LCAKKyAgICA4LCAzLCAyMTMsIDI0NCwgOCwgMywgMjEyLCAxMTAsIDgsIDMsIDIxMiwgMTA4LCA4LCAzLCAyMTIsIDExNiwgOCwgMywgCisgICAgMjEyLCAxMTMsIDgsIDMsIDIxMiwgMTExLCA4LCAzLCAyMTIsIDExMiwgOCwgMywgMjEyLCAxMDIsIDgsIDMsIDIxMiwgMTAxLCAKKyAgICA4LCAzLCAyMTIsIDEwNiwgOCwgMywgMjEyLCAxMDUsIDgsIDMsIDIxMiwgMTAzLCA4LCAzLCAyMTIsIDEwNCwgOCwgMywgCisgICAgMjQ3LCAxNzgsIDgsIDMsIDI0NywgMTY2LCA4LCAzLCAyNDgsIDMsIDgsIDMsIDI0NywgMjAzLCA4LCAzLCAyNDcsIDIzNiwgCisgICAgOCwgMywgMjQ3LCAyNDAsIDgsIDMsIDI0NywgMjM5LCA4LCAzLCAyNDgsIDE1MiwgOCwgMywgMjQ4LCAxNDcsIDgsIDMsIAorICAgIDI0OCwgMjIxLCA4LCAzLCAyNDgsIDE3MiwgOCwgMywgMjQ2LCA2MiwgOCwgMywgMjQ2LCA2MywgOCwgMywgMjQ3LCAxMjAsIAorICAgIDgsIDMsIDI0NiwgMTAyLCA4LCAzLCAyNDcsIDE0NSwgOCwgMywgMjQ3LCAxMjIsIDgsIDMsIDI0OCwgMzAsIDgsIDMsIDI0OCwgCisgICAgOTAsIDgsIDMsIDI0OCwgNDUsIDgsIDMsIDI0NiwgNTMsIDgsIDMsIDI0NiwgNTEsIDgsIDMsIDI0NiwgNzgsIDgsIDMsIAorICAgIDI0NiwgNjEsIDgsIDMsIDI0NiwgNTYsIDgsIDMsIDI0NiwgNTksIDgsIDMsIDIxNiwgNjcsIDgsIDMsIDIxNiwgNjEsIDgsIAorICAgIDMsIDIxNiwgMTE3LCA4LCAzLCAyMTYsIDc2LCA4LCAzLCAyMTYsIDEwOSwgOCwgMywgMjE2LCAxMTEsIDgsIDMsIDIxNiwgCisgICAgMTEwLCA4LCAzLCAyMTcsIDQ2LCA4LCAzLCAyMTcsIDMzLCA4LCAzLCAyMTcsIDEwNSwgOCwgMywgMjE3LCA1NCwgOCwgMywgCisgICAgMjE1LCAxMDIsIDgsIDMsIDIxNSwgMTAxLCA4LCAzLCAyMTUsIDEwNCwgOCwgMywgMjE1LCAxMDMsIDgsIDMsIDIxNiwgNSwgCisgICAgOCwgMywgMjE2LCAxLCA4LCAzLCAxMTEsIDgsIDMsIDIxNiwgMTMsIDgsIDMsIDIxNiwgMjEzLCA4LCAzLCAyMTcsIDIyLCA4LCAKKyAgICAzLCAyMTYsIDIzNywgOCwgMywgMjE1LCA4OCwgOCwgMywgMjE1LCA4MywgOCwgMywgMjE1LCAxMTgsIDgsIDMsIDIxNSwgCisgICAgMTAwLCA4LCAzLCAyMTUsIDg5LCA4LCAzLCAyMTUsIDk4LCA4LCAzLCAyNDgsIDEwNywgOCwgMywgMjQ4LCAxMDYsIDgsIDMsIAorICAgIDI0OCwgMTEyLCA4LCAzLCAyNDgsIDEwOCwgOCwgMywgMjQ4LCAxMDksIDgsIDMsIDI0OCwgMTExLCA4LCAzLCAyNDgsIDExMCwgCisgICAgOCwgMywgMjQ4LCAxMjgsIDgsIDMsIDI0OCwgMTI3LCA4LCAzLCAyNDgsIDEzNSwgOCwgMywgMjQ4LCAxMjksIDgsIDMsIAorICAgIDI0OCwgOTcsIDgsIDMsIDI0OCwgOTksIDgsIDMsIDI0OCwgOTgsIDgsIDMsIDI0OCwgMTAyLCA4LCAzLCAyNDgsIDEwMSwgOCwgCisgICAgMywgMjQ4LCAxMDUsIDgsIDMsIDI0OCwgMTAzLCA4LCAzLCAyNDgsIDEyMCwgOCwgMywgMjQ4LCAxMjMsIDgsIDMsIDI0OCwgCisgICAgMTIxLCA4LCAzLCAyNDgsIDkzLCA4LCAzLCAyNDgsIDkyLCA4LCAzLCAyNDgsIDEwMCwgOCwgMywgMjQ4LCA5NiwgOCwgMywgCisgICAgMjQ4LCA5NCwgOCwgMywgMjQ4LCA5NSwgOCwgMywgMjI5LCAxMjYsIDgsIDMsIDIyOSwgMTI1LCA4LCAzLCAyMjksIDEzMywgCisgICAgOCwgMywgMjI5LCAxMjgsIDgsIDMsIDIyOSwgMTI5LCA4LCAzLCAyMjksIDEzMCwgOCwgMywgMjI5LCAxNDIsIDgsIDMsIAorICAgIDIyOSwgMTQxLCA4LCAzLCAyMjksIDE0OCwgOCwgMywgMjI5LCAxNDMsIDgsIDMsIDIyOSwgMTE4LCA4LCAzLCAyMjksIDExNywgCisgICAgOCwgMywgMjI5LCAxMjQsIDgsIDMsIDIyOSwgMTE5LCA4LCAzLCAyMjksIDEzNCwgOCwgMywgMjI5LCAxNDAsIDgsIDMsIAorICAgIDIyOSwgMTM4LCA4LCAzLCAyMjksIDExMCwgOCwgMywgMjI5LCAxMDksIDgsIDMsIDIyOSwgMTE1LCA4LCAzLCAyMjksIDExMywgCisgICAgOCwgMywgMjI5LCAxMTEsIDgsIDMsIDIyOSwgMTEyLCA4LCAzLCAyNDEsIDc3LCA4LCAzLCAyNDEsIDc2LCA4LCAzLCAyNDEsIAorICAgIDgzLCA4LCAzLCAyNDEsIDc4LCA4LCAzLCAyNDEsIDgwLCA4LCAzLCAyNDEsIDc5LCA4LCAzLCAyNDEsIDgyLCA4LCAzLCAKKyAgICAyNDEsIDgxLCA4LCAzLCAyNDEsIDg4LCA4LCAzLCAyNDEsIDg3LCA4LCAzLCAyNDEsIDkwLCA4LCAzLCAyNDEsIDg5LCA4LCAKKyAgICAzLCAyNDEsIDcxLCA4LCAzLCAyNDEsIDcyLCA4LCAzLCAyNDEsIDc0LCA4LCAzLCAyNDEsIDczLCA4LCAzLCAyNDEsIDc1LCAKKyAgICA4LCAzLCAyNDEsIDg0LCA4LCAzLCAyNDEsIDg2LCA4LCAzLCAyNDEsIDg1LCA4LCAzLCAyNDEsIDcwLCA4LCAzLCAyMjgsIAorICAgIDE4OSwgOCwgMywgMjI4LCAxODcsIDgsIDMsIDIyOCwgMjMzLCA4LCAzLCAyMjgsIDE5MiwgOCwgMywgMjI4LCAyMTUsIDgsIAorICAgIDMsIDIyOCwgMjI5LCA4LCAzLCAyMjgsIDIyOCwgOCwgMywgMjI5LCAxODMsIDgsIDMsIDE5NywgOCwgMywgMjI5LCAxOTcsIAorICAgIDgsIDMsIDIyNywgMTg2LCA4LCAzLCAyMjcsIDE4OCwgOCwgMywgMjI3LCAxODcsIDgsIDMsIDIyOCwgNTEsIDgsIDMsIDIyOCwgCisgICAgMzgsIDgsIDMsIDIyOCwgNzQsIDgsIDMsIDIyOCwgNjAsIDgsIDMsIDIyOSwgODMsIDgsIDMsIDIyOSwgMTA3LCA4LCAzLCAKKyAgICAyMjksIDk0LCA4LCAzLCAyMjcsIDE4MSwgOCwgMywgMjI3LCAxNzcsIDgsIDMsIDIyNywgMjM3LCA4LCAzLCAyMjcsIDE4NSwgCisgICAgOCwgMywgMjI3LCAxODMsIDgsIDMsIDIyNywgMTg0LCA4LCAzLCAyNDEsIDE0MSwgOCwgMywgMjQxLCAxNDAsIDgsIDMsIAorICAgIDI0MSwgMTQ2LCA4LCAzLCAyNDEsIDE0MiwgOCwgMywgMjQxLCAxNDMsIDgsIDMsIDI0MSwgMTQ1LCA4LCAzLCAyNDEsIDE0NCwgCisgICAgOCwgMywgMjQxLCAxNTEsIDgsIDMsIDI0MSwgMTUwLCA4LCAzLCAyNDEsIDE1MywgOCwgMywgMjQxLCAxNTIsIDgsIDMsIAorICAgIDI0MSwgMTMzLCA4LCAzLCAyNDEsIDEzNSwgOCwgMywgMjQxLCAxMzQsIDgsIDMsIDI0MSwgMTM3LCA4LCAzLCAyNDEsIDEzOSwgCisgICAgOCwgMywgMjQxLCAxMzgsIDgsIDMsIDI0MSwgMTQ3LCA4LCAzLCAyNDEsIDE0OSwgOCwgMywgMjQxLCAxNDgsIDgsIDMsIAorICAgIDI0MSwgMTI5LCA4LCAzLCAyNDEsIDEyOCwgOCwgMywgMjQxLCAxMzYsIDgsIDMsIDI0MSwgMTMyLCA4LCAzLCAyNDEsIDEzMCwgCisgICAgOCwgMywgMjQxLCAxMzEsIDgsIDMsIDI0MSwgMTIzLCA4LCAzLCAyNDEsIDEyMiwgOCwgMywgMjQxLCAxMjcsIDgsIDMsIAorICAgIDI0MSwgMTI2LCA4LCAzLCAyNDEsIDEyNCwgOCwgMywgMjQxLCAxMjUsIDgsIDMsIDIzMiwgMTk1LCA4LCAzLCAyMzIsIDE4OSwgCisgICAgOCwgMywgMjMyLCAyNDEsIDgsIDMsIDIzMiwgMjAyLCA4LCAzLCAyMzIsIDIzMywgOCwgMywgMjMyLCAyMzIsIDgsIDMsIAorICAgIDIzMiwgMjM2LCA4LCAzLCAyMzIsIDIzNCwgOCwgMywgMjMzLCA3OSwgOCwgMywgMjMzLCA2OSwgOCwgMywgMjMzLCAxMzUsIAorICAgIDgsIDMsIDIzMywgODgsIDgsIDMsIDIzMiwgNzksIDgsIDMsIDIzMiwgNzgsIDgsIDMsIDIzMiwgODEsIDgsIDMsIDIzMiwgCisgICAgODAsIDgsIDMsIDIzMiwgMTE2LCA4LCAzLCAyMzIsIDEwNiwgOCwgMywgMjMyLCAxNTYsIDgsIDMsIDIzMiwgMTIwLCA4LCAzLCAKKyAgICAyMzMsIDIsIDgsIDMsIDIzMywgNTgsIDgsIDMsIDIzMywgMTcsIDgsIDMsIDIzMiwgNzQsIDgsIDMsIDIzMiwgNzIsIDgsIDMsIAorICAgIDIzMiwgOTgsIDgsIDMsIDIzMiwgNzcsIDgsIDMsIDIzMiwgNzUsIDgsIDMsIDIzMiwgNzYsIDgsIDMsIDIzMiwgNTQsIDgsIAorICAgIDMsIDIzMiwgNTMsIDgsIDMsIDIzMiwgNjIsIDgsIDMsIDIzMiwgNTcsIDgsIDMsIDIzMiwgNTUsIDgsIDMsIDIzMiwgNTYsIAorICAgIDgsIDMsIDI0MiwgMTg5LCA4LCAzLCAyNDIsIDE4OCwgOCwgMywgMjQyLCAyMTQsIDgsIDMsIDI0MiwgMTk5LCA4LCAzLCAKKyAgICAyNDIsIDIwNiwgOCwgMywgMjQyLCAyMDUsIDgsIDMsIDI0MiwgMjA4LCA4LCAzLCAyNDIsIDIwNywgOCwgMywgMjQzLCA4OSwgCisgICAgOCwgMywgMjQzLCA4NCwgOCwgMywgMjQzLCAxMzUsIDgsIDMsIDI0MywgOTksIDgsIDMsIDI0MiwgOTEsIDgsIDMsIDI0MiwgCisgICAgOTAsIDgsIDMsIDI0MiwgOTMsIDgsIDMsIDI0MiwgOTIsIDgsIDMsIDI0MiwgMTU0LCA4LCAzLCAyNDIsIDE1MiwgOCwgMywgCisgICAgMjQyLCAxNzQsIDgsIDMsIDI0MiwgMTYyLCA4LCAzLCAyNDMsIDMzLCA4LCAzLCAyNDMsIDMxLCA4LCAzLCAyNDMsIDYyLCA4LCAKKyAgICAzLCAyNDMsIDQ0LCA4LCAzLCAyNDIsIDgxLCA4LCAzLCAyNDIsIDgwLCA4LCAzLCAyNDIsIDExMywgOCwgMywgMjQyLCA4OSwgCisgICAgOCwgMywgMjQyLCA4MiwgOCwgMywgMjQyLCA4OCwgOCwgMywgMjM0LCA2MSwgOCwgMywgMjM0LCA2MCwgOCwgMywgMjM0LCAKKyAgICA5MiwgOCwgMywgMjM0LCA3NSwgOCwgMywgMjM0LCA4NSwgOCwgMywgMjM0LCA4OCwgOCwgMywgMjM0LCA4NiwgOCwgMywgCisgICAgMjM0LCAyMDIsIDgsIDMsIDIzNCwgMTkwLCA4LCAzLCAxNzYsIDgsIDMsIDIzNCwgMjI4LCA4LCAzLCAyMzMsIDIwMCwgOCwgCisgICAgMywgMjMzLCAyMDUsIDgsIDMsIDIzMywgMjAyLCA4LCAzLCAyMzQsIDAsIDgsIDMsIDIzMywgMjUyLCA4LCAzLCAyMzQsIDI4LCAKKyAgICA4LCAzLCAyMzQsIDcsIDgsIDMsIDIzNCwgMTU2LCA4LCAzLCAyMzQsIDE0MCwgOCwgMywgMjM0LCAxODIsIDgsIDMsIDIzNCwgCisgICAgMTU5LCA4LCAzLCAyMzMsIDE4OSwgOCwgMywgMjMzLCAxODYsIDgsIDMsIDIzMywgMjE3LCA4LCAzLCAyMzMsIDE5OSwgOCwgCisgICAgMywgMjMzLCAxOTIsIDgsIDMsIDIzMywgMTk2LCA4LCAzLCAyNDMsIDE1LCA4LCAzLCAyNDMsIDE0LCA4LCAzLCAyNDMsIDE5LCAKKyAgICA4LCAzLCAyNDMsIDE2LCA4LCAzLCAyNDMsIDE4LCA4LCAzLCAyNDMsIDE3LCA4LCAzLCAyNDMsIDI2LCA4LCAzLCAyNDMsIAorICAgIDI1LCA4LCAzLCAyNDMsIDI5LCA4LCAzLCAyNDMsIDI3LCA4LCAzLCAyNDMsIDYsIDgsIDMsIDI0MywgNSwgOCwgMywgMjQzLCAKKyAgICA4LCA4LCAzLCAyNDMsIDcsIDgsIDMsIDI0MywgMTEsIDgsIDMsIDI0MywgMTAsIDgsIDMsIDI0MywgMTMsIDgsIDMsIDI0MywgCisgICAgMTIsIDgsIDMsIDI0MywgMjEsIDgsIDMsIDI0MywgMjAsIDgsIDMsIDI0MywgMjQsIDgsIDMsIDI0MywgMjIsIDgsIDMsIAorICAgIDI0MywgMSwgOCwgMywgMjQzLCAwLCA4LCAzLCAyNDMsIDksIDgsIDMsIDI0MywgNCwgOCwgMywgMjQzLCAyLCA4LCAzLCAKKyAgICAyNDMsIDMsIDgsIDMsIDIzMCwgMjQ5LCA4LCAzLCAyMzAsIDI1MCwgOCwgMywgMjMxLCAxMiwgOCwgMywgMjMxLCAxMSwgOCwgCisgICAgMywgMjMxLCAxNCwgOCwgMywgMjMxLCAxMywgOCwgMywgMjMwLCAyNDAsIDgsIDMsIDIzMCwgMjQyLCA4LCAzLCAyMzAsIAorICAgIDI0MSwgOCwgMywgMjMwLCAyNDUsIDgsIDMsIDIzMCwgMjQ0LCA4LCAzLCAyMzAsIDI0NywgOCwgMywgMjMwLCAyNDYsIDgsIAorICAgIDMsIDIzMCwgMjUxLCA4LCAzLCAyMzAsIDI1MywgOCwgMywgMjMwLCAyNTIsIDgsIDMsIDIzMCwgMjM2LCA4LCAzLCAyMzAsIAorICAgIDIzNSwgOCwgMywgMjMwLCAyNDMsIDgsIDMsIDIzMCwgMjM5LCA4LCAzLCAyMzAsIDIzNywgOCwgMywgMjMwLCAyMzgsIDgsIAorICAgIDMsIDI0MCwgMTgwLCA4LCAzLCAyNDAsIDE3OSwgOCwgMywgMjQwLCAxODYsIDgsIDMsIDI0MCwgMTgxLCA4LCAzLCAyNDAsIAorICAgIDE4MywgOCwgMywgMjQwLCAxODIsIDgsIDMsIDI0MCwgMTg1LCA4LCAzLCAyNDAsIDE4NCwgOCwgMywgMjQwLCAxOTEsIDgsIAorICAgIDMsIDI0MCwgMTkwLCA4LCAzLCAyNDAsIDE5MywgOCwgMywgMjQwLCAxOTIsIDgsIDMsIDI0MCwgMTcyLCA4LCAzLCAyNDAsIAorICAgIDE3MSwgOCwgMywgMjQwLCAxNzQsIDgsIDMsIDI0MCwgMTczLCA4LCAzLCAyNDAsIDE3NiwgOCwgMywgMjQwLCAxNzUsIDgsIAorICAgIDMsIDI0MCwgMTc4LCA4LCAzLCAyNDAsIDE3NywgOCwgMywgMjQwLCAxODcsIDgsIDMsIDI0MCwgMTg5LCA4LCAzLCAyNDAsIAorICAgIDE4OCwgOCwgMywgMjI5LCAyNCwgOCwgMywgMjI5LCAyNiwgOCwgMywgMjI5LCAyNSwgOCwgMywgMjI5LCA2NywgOCwgMywgCisgICAgMjI5LCA2NSwgOCwgMywgMjI5LCA3NywgOCwgMywgMjI5LCA3MCwgOCwgMywgMjI4LCAyNDMsIDgsIDMsIDIyOCwgMjQyLCA4LCAKKyAgICAzLCAyMjgsIDI0NCwgOCwgMywgMjI4LCAyNTIsIDgsIDMsIDIyOCwgMjQ5LCA4LCAzLCAyMjksIDQsIDgsIDMsIDIyOCwgCisgICAgMjU0LCA4LCAzLCAyMjksIDU4LCA4LCAzLCAyMjksIDY0LCA4LCAzLCAyMjksIDYwLCA4LCAzLCAyNDEsIDE1NiwgOCwgMywgCisgICAgMjQxLCAxNjYsIDgsIDMsIDI0MSwgMTc1LCA4LCAzLCAyNDEsIDI1MSwgOCwgMywgMjQxLCAyNDMsIDgsIDMsIDE2MiwgOCwgCisgICAgMywgMjQyLCA2LCA4LCAzLCAyNDAsIDIwNiwgOCwgMywgMjQwLCAyMDUsIDgsIDMsIDI0MCwgMjA4LCA4LCAzLCAyNDAsIAorICAgIDIwNywgOCwgMywgMjQwLCAyNDIsIDgsIDMsIDI0MCwgMjMzLCA4LCAzLCAyNDEsIDY4LCA4LCAzLCAyNDEsIDQ3LCA4LCAzLCAKKyAgICAyNDEsIDE5NCwgOCwgMywgMjQxLCAyMzgsIDgsIDMsIDI0MSwgMjA2LCA4LCAzLCAyMTIsIDQzLCA4LCAzLCAyMTIsIDI4LCAKKyAgICA4LCAzLCAyMTIsIDY1LCA4LCAzLCAyMTIsIDUxLCA4LCAzLCAyMTEsIDE4NSwgOCwgMywgMjExLCAxODcsIDgsIDMsIDIxMSwgCisgICAgMTg2LCA4LCAzLCAyMTEsIDIwMywgOCwgMywgMjExLCAyMjcsIDgsIDMsIDIxMSwgMjEwLCA4LCAzLCAyMTIsIDUsIDgsIDMsIAorICAgIDIxMiwgMjIsIDgsIDMsIDIxMiwgMTAsIDgsIDMsIDIxMCwgMzAsIDgsIDMsIDIxMCwgMjksIDgsIDMsIDIxMCwgNDQsIDgsIAorICAgIDMsIDIxMCwgMzIsIDgsIDMsIDIxMCwgMzcsIDgsIDMsIDIxMCwgMzksIDgsIDMsIDIxMCwgMzgsIDgsIDMsIDIxMCwgMTAyLCAKKyAgICA4LCAzLCAyMTAsIDk5LCA4LCAzLCAyMTAsIDExNiwgOCwgMywgMjEwLCAxMDUsIDgsIDMsIDIxMCwgNiwgOCwgMywgMjEwLCAKKyAgICA4LCA4LCAzLCAyMTAsIDcsIDgsIDMsIDIxMCwgMTksIDgsIDMsIDIxMCwgMTgsIDgsIDMsIDIxMCwgMjMsIDgsIDMsIDIxMCwgCisgICAgMjAsIDgsIDMsIDIxMCwgODQsIDgsIDMsIDIxMCwgOTQsIDgsIDMsIDIxMCwgODgsIDgsIDMsIDIxMCwgMiwgOCwgMywgMjEwLCAKKyAgICAxLCA4LCAzLCAyMTAsIDEzLCA4LCAzLCAyMTAsIDUsIDgsIDMsIDIxMCwgMywgOCwgMywgMjEwLCA0LCA4LCAzLCAyMDksIAorICAgIDI0NSwgOCwgMywgMjA5LCAyNDQsIDgsIDMsIDIwOSwgMjUwLCA4LCAzLCAyMDksIDI0OCwgOCwgMywgMjA5LCAyNDYsIDgsIAorICAgIDMsIDIwOSwgMjQ3LCA4LCAzLCAyNTAsIDI4LCA4LCAzLCAyNTAsIDI0LCA4LCAzLCAyNTAsIDUxLCA4LCAzLCAyNTAsIDM3LCAKKyAgICA4LCAzLCAyNTAsIDQ4LCA4LCAzLCAyNTAsIDQyLCA4LCAzLCAyNTAsIDUwLCA4LCAzLCAyNTAsIDQ5LCA4LCAzLCAyNTAsIAorICAgIDIyNCwgOCwgMywgMjUwLCAyMTcsIDgsIDMsIDI1MSwgMzMsIDgsIDMsIDI1MCwgMjUxLCA4LCAzLCAyNDksIDEwNCwgOCwgMywgCisgICAgMjQ5LCAxMDYsIDgsIDMsIDI0OSwgMTA1LCA4LCAzLCAyNDksIDE1MywgOCwgMywgMjQ5LCAxNDQsIDgsIDMsIDI0OSwgMjM4LCAKKyAgICA4LCAzLCAyNDksIDE2OSwgOCwgMywgMjUwLCAxNjAsIDgsIDMsIDI1MCwgMTkwLCA4LCAzLCAyNTAsIDE2NSwgOCwgMywgCisgICAgMjQ5LCA4NCwgOCwgMywgMjQ5LCA4MiwgOCwgMywgMjQ5LCAxMTIsIDgsIDMsIDI0OSwgMTAyLCA4LCAzLCAyNDksIDg5LCA4LCAKKyAgICAzLCAyNDksIDEwMSwgOCwgMywgMjQ5LCA2MywgOCwgMywgMjQ5LCA2MiwgOCwgMywgMjQ5LCA3MywgOCwgMywgMjQ5LCA2OSwgCisgICAgOCwgMywgMjQ5LCA2NCwgOCwgMywgMjQ5LCA2NiwgOCwgMywgMjA5LCAyMjgsIDgsIDMsIDIwOSwgMjI3LCA4LCAzLCAyMDksIAorICAgIDIzNCwgOCwgMywgMjA5LCAyMjksIDgsIDMsIDIwOSwgMjMxLCA4LCAzLCAyMDksIDIzMCwgOCwgMywgMjA5LCAyMzMsIDgsIAorICAgIDMsIDIwOSwgMjMyLCA4LCAzLCAyMDksIDI0MCwgOCwgMywgMjA5LCAyMzksIDgsIDMsIDIwOSwgMjQzLCA4LCAzLCAyMDksIAorICAgIDI0MSwgOCwgMywgMjA5LCAyMjQsIDgsIDMsIDIwOSwgMjI2LCA4LCAzLCAyMDksIDIyNSwgOCwgMywgMjA5LCAyMzUsIDgsIAorICAgIDMsIDIwOSwgMjM4LCA4LCAzLCAyMDksIDIzNiwgOCwgMywgMjA5LCAyMTcsIDgsIDMsIDIwOSwgMjIxLCA4LCAzLCAyMDksIAorICAgIDIyMCwgOCwgMywgMjA5LCAyMTgsIDgsIDMsIDIwOSwgMjE5LCA4LCAzLCAyMDksIDIxMSwgOCwgMywgMjA5LCAyMTAsIDgsIAorICAgIDMsIDIwOSwgMjE2LCA4LCAzLCAyMDksIDIxNCwgOCwgMywgMjA5LCAyMTIsIDgsIDMsIDIwOSwgMjEzLCA4LCAzLCAyMjcsIAorICAgIDEwNCwgOCwgMywgMjI3LCAxMDMsIDgsIDMsIDIyNywgMTA5LCA4LCAzLCAyMjcsIDEwNSwgOCwgMywgMjI3LCAxMDYsIDgsIAorICAgIDMsIDIyNywgMTA4LCA4LCAzLCAyMjcsIDEwNywgOCwgMywgMjI3LCAxMTQsIDgsIDMsIDIyNywgMTEzLCA4LCAzLCAyMjcsIAorICAgIDExNywgOCwgMywgMjI3LCAxMTYsIDgsIDMsIDIyNywgOTcsIDgsIDMsIDIyNywgOTgsIDgsIDMsIDIyNywgMTAxLCA4LCAzLCAKKyAgICAyMjcsIDEwMiwgOCwgMywgMjI3LCAxMTAsIDgsIDMsIDIyNywgMTEyLCA4LCAzLCAyMjcsIDkyLCA4LCAzLCAyMjcsIDEwMCwgCisgICAgOCwgMywgMjI3LCA5NiwgOCwgMywgMjI3LCA5MywgOCwgMywgMjI3LCA5NCwgOCwgMywgMjI3LCA4NywgOCwgMywgMjI3LCAKKyAgICA4NiwgOCwgMywgMjI3LCA5MSwgOCwgMywgMjI3LCA5MCwgOCwgMywgMjI3LCA4OCwgOCwgMywgMjI3LCA4OSwgOCwgMywgCisgICAgMjE5LCAxMjcsIDgsIDMsIDE5NCwgOCwgMywgMjE5LCAxOTEsIDgsIDMsIDIxOSwgMTMwLCA4LCAzLCAyMTksIDE4MywgOCwgCisgICAgMywgMjE5LCAxODYsIDgsIDMsIDIxOSwgMTg0LCA4LCAzLCAyMjEsIDIyNiwgOCwgMywgMjIxLCAyMTQsIDgsIDMsIDIwNiwgCisgICAgOCwgMywgMjIxLCAyMzQsIDgsIDMsIDIxOCwgMjgsIDgsIDMsIDIxOCwgMzAsIDgsIDMsIDIxOCwgMjksIDgsIDMsIDIxOSwgCisgICAgMzQsIDgsIDMsIDIxOSwgMjMsIDgsIDMsIDIxOSwgNTgsIDgsIDMsIDIxOSwgMzgsIDgsIDMsIDIyMCwgMTE0LCA4LCAzLCAKKyAgICAyMjEsIDE4MSwgOCwgMywgMjIwLCAxMzksIDgsIDMsIDIxOCwgNSwgOCwgMywgMjE4LCAzLCA4LCAzLCAyMTgsIDgzLCA4LCAKKyAgICAzLCAyMTgsIDI3LCA4LCAzLCAyMTgsIDksIDgsIDMsIDIxOCwgMTcsIDgsIDMsIDIxNywgMTY2LCA4LCAzLCAyMTcsIDE2NSwgCisgICAgOCwgMywgMjE3LCAyMzIsIDgsIDMsIDIxNywgMTczLCA4LCAzLCAyMTcsIDE2OCwgOCwgMywgMjE3LCAxNzIsIDgsIDMsIAorICAgIDIxOCwgMTg2LCA4LCAzLCAyMTgsIDE4NSwgOCwgMywgMjE4LCAxOTIsIDgsIDMsIDIxOCwgMTg3LCA4LCAzLCAyMTgsIDE4OSwgCisgICAgOCwgMywgMjE4LCAxOTEsIDgsIDMsIDIxOCwgMTkwLCA4LCAzLCAyMTgsIDIwMCwgOCwgMywgMjE4LCAxOTgsIDgsIDMsIAorICAgIDIxOCwgMjIzLCA4LCAzLCAyMTgsIDIwMSwgOCwgMywgMjE4LCAxODEsIDgsIDMsIDIxOCwgMTgwLCA4LCAzLCAyMTgsIDE4NCwgCisgICAgOCwgMywgMjE4LCAxODIsIDgsIDMsIDIxOCwgMTk0LCA4LCAzLCAyMTgsIDE5NywgOCwgMywgMjE4LCAxOTUsIDgsIDMsIAorICAgIDIxOCwgMTc3LCA4LCAzLCAyMTgsIDE3NSwgOCwgMywgMjE4LCAxNzksIDgsIDMsIDIxOCwgMTc4LCA4LCAzLCAyMTgsIDE3MCwgCisgICAgOCwgMywgMjE4LCAxNjksIDgsIDMsIDIxOCwgMTc0LCA4LCAzLCAyMTgsIDE3MywgOCwgMywgMjE4LCAxNzEsIDgsIDMsIAorICAgIDIxOCwgMTcyLCA4LCAzLCAyMTAsIDc3LCA4LCAzLCAyMTAsIDc2LCA4LCAzLCAyMTAsIDgyLCA4LCAzLCAyMTAsIDc5LCA4LCAKKyAgICAzLCAyMTAsIDU5LCA4LCAzLCAyMTAsIDYxLCA4LCAzLCAyMTAsIDYwLCA4LCAzLCAyMTAsIDY0LCA4LCAzLCAyMTAsIDYzLCAKKyAgICA4LCAzLCAyMTAsIDY3LCA4LCAzLCAyMTAsIDY1LCA4LCAzLCAyMTAsIDcxLCA4LCAzLCAyMTAsIDcwLCA4LCAzLCAyMTAsIAorICAgIDc0LCA4LCAzLCAyMTAsIDcyLCA4LCAzLCAyMTAsIDU1LCA4LCAzLCAyMTAsIDU0LCA4LCAzLCAyMTAsIDYyLCA4LCAzLCAKKyAgICAyMTAsIDU4LCA4LCAzLCAyMTAsIDU2LCA4LCAzLCAyMTAsIDU3LCA4LCAzLCAyMTAsIDQ3LCA4LCAzLCAyMTAsIDQ2LCA4LCAKKyAgICAzLCAyMTAsIDUxLCA4LCAzLCAyMTAsIDUwLCA4LCAzLCAyMTAsIDQ4LCA4LCAzLCAyMTAsIDQ5LCA4LCAzLCAyNTAsIDEzNiwgCisgICAgOCwgMywgMjUwLCAxMzMsIDgsIDMsIDI1MCwgMTU3LCA4LCAzLCAyNTAsIDE0NCwgOCwgMywgMjUwLCA2NSwgOCwgMywgMjUwLCAKKyAgICA2NCwgOCwgMywgMjUwLCA2NywgOCwgMywgMjUwLCA2NiwgOCwgMywgMjUwLCA3OSwgOCwgMywgMjUwLCA3OCwgOCwgMywgCisgICAgMjUwLCA4NiwgOCwgMywgMjUwLCA4MSwgOCwgMywgMjUwLCAxMTUsIDgsIDMsIDI1MCwgMTEzLCA4LCAzLCAyNTAsIDEzMSwgCisgICAgOCwgMywgMjUwLCAxMjEsIDgsIDMsIDI1MCwgNTksIDgsIDMsIDI1MCwgNjksIDgsIDMsIDI1MCwgNjMsIDgsIDMsIDI1MCwgCisgICAgNjAsIDgsIDMsIDI1MCwgNjIsIDgsIDMsIDI1MCwgNTMsIDgsIDMsIDI1MCwgNTIsIDgsIDMsIDI1MCwgNTcsIDgsIDMsIAorICAgIDI1MCwgNTYsIDgsIDMsIDI1MCwgNTQsIDgsIDMsIDI1MCwgNTUsIDgsIDMsIDIyMiwgMTc1LCA4LCAzLCAyMjIsIDE3OSwgOCwgCisgICAgMywgMjIyLCAxNTgsIDgsIDMsIDIyMiwgMTU5LCA4LCAzLCAyMjIsIDE2MiwgOCwgMywgMjIyLCAxNjEsIDgsIDMsIDIyMiwgCisgICAgMTY1LCA4LCAzLCAyMjIsIDE2MywgOCwgMywgMjIyLCAxNjksIDgsIDMsIDIyMiwgMTY4LCA4LCAzLCAyMjIsIDE3NCwgOCwgCisgICAgMywgMjIyLCAxNzAsIDgsIDMsIDIyMiwgMTU0LCA4LCAzLCAyMjIsIDE1MiwgOCwgMywgMjIyLCAxNjAsIDgsIDMsIDIyMiwgCisgICAgMTU3LCA4LCAzLCAyMjIsIDE1NSwgOCwgMywgMjIyLCAxNTYsIDgsIDMsIDIyMiwgMTQ3LCA4LCAzLCAyMjIsIDE0NiwgOCwgCisgICAgMywgMjIyLCAxNTEsIDgsIDMsIDIyMiwgMTUwLCA4LCAzLCAyMjIsIDE0OCwgOCwgMywgMjIyLCAxNDksIDgsIDMsIDIyOCwgCisgICAgMzQsIDgsIDMsIDIyOCwgMzMsIDgsIDMsIDIyOCwgMzYsIDgsIDMsIDIyOCwgMzUsIDgsIDMsIDIyOCwgMjYsIDgsIDMsIAorICAgIDIyOCwgMjgsIDgsIDMsIDIyOCwgMjcsIDgsIDMsIDIyOCwgMzAsIDgsIDMsIDIyOCwgMjksIDgsIDMsIDIyOCwgMzIsIDgsIAorICAgIDMsIDIyOCwgMzEsIDgsIDMsIDIyOCwgMjEsIDgsIDMsIDIyOCwgMjAsIDgsIDMsIDIyOCwgMjUsIDgsIDMsIDIyOCwgMjQsIAorICAgIDgsIDMsIDIyOCwgMjIsIDgsIDMsIDIyOCwgMjMsIDgsIDMsIDIyOCwgMTUsIDgsIDMsIDIyOCwgMTQsIDgsIDMsIDIyOCwgCisgICAgMTksIDgsIDMsIDIyOCwgMTgsIDgsIDMsIDIyOCwgMTYsIDgsIDMsIDIyOCwgMTcsIDgsIDMsIDIyMCwgNzIsIDgsIDMsIAorICAgIDIyMCwgNjcsIDgsIDMsIDIyMCwgMTAyLCA4LCAzLCAyMjAsIDgzLCA4LCAzLCAyMTksIDIxNSwgOCwgMywgMjE5LCAyMTcsIAorICAgIDgsIDMsIDIxOSwgMjE2LCA4LCAzLCAyMTksIDIzNiwgOCwgMywgMjE5LCAyMzMsIDgsIDMsIDIyMCwgNywgOCwgMywgMjE5LCAKKyAgICAyNTQsIDgsIDMsIDIyMCwgNDIsIDgsIDMsIDIyMCwgMzUsIDgsIDMsIDIyMCwgNjMsIDgsIDMsIDIyMCwgNTAsIDgsIDMsIAorICAgIDIxOSwgMjExLCA4LCAzLCAyMTksIDIwOSwgOCwgMywgMjE5LCAyMjUsIDgsIDMsIDIxOSwgMjE0LCA4LCAzLCAyMTksIDIxMiwgCisgICAgOCwgMywgMjE5LCAyMTMsIDgsIDMsIDIxOSwgMTk0LCA4LCAzLCAyMTksIDE5MywgOCwgMywgMjE5LCAyMDAsIDgsIDMsIAorICAgIDIxOSwgMTk3LCA4LCAzLCAyMTksIDE5NSwgOCwgMywgMjE5LCAxOTYsIDgsIDMsIDIyMywgMTQxLCA4LCAzLCAyMjMsIDEzNSwgCisgICAgOCwgMywgMjA1LCA4LCAzLCAyMjMsIDE0NywgOCwgMywgMjIyLCAxMjAsIDgsIDMsIDIyMiwgMTIyLCA4LCAzLCAyMjIsIAorICAgIDEyMSwgOCwgMywgMjIyLCAxODgsIDgsIDMsIDIyMiwgMTgxLCA4LCAzLCAyMjIsIDIxMSwgOCwgMywgMjIyLCAxOTIsIDgsIAorICAgIDMsIDIyMywgNDMsIDgsIDMsIDIyMywgMTI4LCA4LCAzLCAyMjMsIDgxLCA4LCAzLCAyMjIsIDExMywgOCwgMywgMjIyLCAKKyAgICAxMTAsIDgsIDMsIDIyMiwgMTQwLCA4LCAzLCAyMjIsIDExOSwgOCwgMywgMjIyLCAxMTUsIDgsIDMsIDIyMiwgMTE2LCA4LCAKKyAgICAzLCAyMjIsIDk1LCA4LCAzLCAyMjIsIDk0LCA4LCAzLCAyMjIsIDEwMCwgOCwgMywgMjIyLCA5OCwgOCwgMywgMjIyLCA5NiwgCisgICAgOCwgMywgMjIyLCA5NywgOCwgMywgMjM1LCA5OCwgOCwgMywgMjM1LCA5NywgOCwgMywgMjM1LCAxMDgsIDgsIDMsIDIzNSwgCisgICAgOTksIDgsIDMsIDIzNSwgMTA0LCA4LCAzLCAyMzUsIDEwMywgOCwgMywgMjM1LCAxMDYsIDgsIDMsIDIzNSwgMTA1LCA4LCAzLCAKKyAgICAyMzUsIDQxLCA4LCAzLCAyMzUsIDQwLCA4LCAzLCAyMzUsIDQzLCA4LCAzLCAyMzUsIDQyLCA4LCAzLCAyMzUsIDU2LCA4LCAKKyAgICAzLCAyMzUsIDU0LCA4LCAzLCAyMzUsIDY4LCA4LCAzLCAyMzUsIDU4LCA4LCAzLCAyMzUsIDM0LCA4LCAzLCAyMzUsIDMyLCAKKyAgICA4LCAzLCAyMzUsIDUxLCA4LCAzLCAyMzUsIDM5LCA4LCAzLCAyMzUsIDM2LCA4LCAzLCAyMzUsIDM3LCA4LCAzLCAyMzUsIAorICAgIDI2LCA4LCAzLCAyMzUsIDI1LCA4LCAzLCAyMzUsIDMwLCA4LCAzLCAyMzUsIDI5LCA4LCAzLCAyMzUsIDI3LCA4LCAzLCAKKyAgICAyMzUsIDI4LCA4LCAzLCAyMjQsIDQ2LCA4LCAzLCAyMjQsIDQ0LCA4LCAzLCAyMjQsIDUzLCA4LCAzLCAyMjQsIDQ3LCA4LCAKKyAgICAzLCAyMjQsIDUwLCA4LCAzLCAyMjQsIDQ5LCA4LCAzLCAyMjQsIDUyLCA4LCAzLCAyMjQsIDUxLCA4LCAzLCAyMjMsIDI1NSwgCisgICAgOCwgMywgMjIzLCAyNTIsIDgsIDMsIDIyNCwgMSwgOCwgMywgMjI0LCAwLCA4LCAzLCAyMjQsIDMzLCA4LCAzLCAyMjQsIDMyLCAKKyAgICA4LCAzLCAyMjQsIDQyLCA4LCAzLCAyMjQsIDM2LCA4LCAzLCAyMjMsIDI0NywgOCwgMywgMjIzLCAyNDMsIDgsIDMsIDIyNCwgCisgICAgMzAsIDgsIDMsIDIyMywgMjUxLCA4LCAzLCAyMjMsIDI0OSwgOCwgMywgMjIzLCAyNTAsIDgsIDMsIDIyMywgMjI3LCA4LCAzLCAKKyAgICAyMjMsIDIyNSwgOCwgMywgMjIzLCAyMzcsIDgsIDMsIDIyMywgMjMwLCA4LCAzLCAyMjMsIDIyOCwgOCwgMywgMjIzLCAyMjksIAorICAgIDgsIDMsIDIzNSwgODcsIDgsIDMsIDIzNSwgODYsIDgsIDMsIDIzNSwgOTMsIDgsIDMsIDIzNSwgODgsIDgsIDMsIDIzNSwgCisgICAgOTAsIDgsIDMsIDIzNSwgODksIDgsIDMsIDIzNSwgOTIsIDgsIDMsIDIzNSwgOTEsIDgsIDMsIDIzNSwgNzgsIDgsIDMsIAorICAgIDIzNSwgODAsIDgsIDMsIDIzNSwgNzksIDgsIDMsIDIzNSwgODMsIDgsIDMsIDIzNSwgODIsIDgsIDMsIDIzNSwgODUsIDgsIAorICAgIDMsIDIzNSwgODQsIDgsIDMsIDIzNSwgNzQsIDgsIDMsIDIzNSwgNzMsIDgsIDMsIDIzNSwgODEsIDgsIDMsIDIzNSwgNzcsIAorICAgIDgsIDMsIDIzNSwgNzUsIDgsIDMsIDIzNSwgNzYsIDgsIDMsIDIzNSwgNzAsIDgsIDMsIDIzNSwgNjksIDgsIDMsIDIzNSwgCisgICAgNzIsIDgsIDMsIDIzNSwgNzEsIDgsIDMsIDIyOCwgMTYyLCA4LCAzLCAyMjgsIDE2MSwgOCwgMywgMjI4LCAxNjksIDgsIDMsIAorICAgIDIyOCwgMTYzLCA4LCAzLCAyMjgsIDE2NSwgOCwgMywgMjI4LCAxNjQsIDgsIDMsIDIyOCwgMTY4LCA4LCAzLCAyMjgsIDE2NiwgCisgICAgOCwgMywgMjI4LCAxNTEsIDgsIDMsIDIyOCwgMTUyLCA4LCAzLCAyMjgsIDE1NywgOCwgMywgMjI4LCAxNTYsIDgsIDMsIAorICAgIDIyOCwgMTYwLCA4LCAzLCAyMjgsIDE1OCwgOCwgMywgMjI4LCAxNDYsIDgsIDMsIDIyOCwgMTU1LCA4LCAzLCAyMjgsIDE1MCwgCisgICAgOCwgMywgMjI4LCAxNDcsIDgsIDMsIDIyOCwgMTQ4LCA4LCAzLCAyMjgsIDE0MSwgOCwgMywgMjI4LCAxNDAsIDgsIDMsIAorICAgIDIyOCwgMTQ1LCA4LCAzLCAyMjgsIDE0NCwgOCwgMywgMjI4LCAxNDIsIDgsIDMsIDIyOCwgMTQzLCA4LCAzLCAyMjcsIDEzNywgCisgICAgOCwgMywgMjI3LCAxMzYsIDgsIDMsIDIyNywgMTQ4LCA4LCAzLCAyMjcsIDE0MSwgOCwgMywgMjI3LCAxNDUsIDgsIDMsIAorICAgIDIyNywgMTQ0LCA4LCAzLCAyMjcsIDE0NywgOCwgMywgMjI3LCAxNDYsIDgsIDMsIDIyNywgMTI0LCA4LCAzLCAyMjcsIDEyNiwgCisgICAgOCwgMywgMjI3LCAxMjUsIDgsIDMsIDIyNywgMTMwLCA4LCAzLCAyMjcsIDEyOSwgOCwgMywgMjI3LCAxMzQsIDgsIDMsIAorICAgIDIyNywgMTMxLCA4LCAzLCAyMjcsIDEyMiwgOCwgMywgMjI3LCAxMjAsIDgsIDMsIDIyNywgMTI4LCA4LCAzLCAyMjcsIDEyMywgCisgICAgOCwgMywgMjExLCAxNTAsIDgsIDMsIDIxMSwgMTQ5LCA4LCAzLCAyMTEsIDE1NywgOCwgMywgMjExLCAxNTIsIDgsIDMsIAorICAgIDIxMSwgMTU0LCA4LCAzLCAyMTEsIDE1MywgOCwgMywgMjExLCAxNTYsIDgsIDMsIDIxMSwgMTU1LCA4LCAzLCAyMTEsIDEzOSwgCisgICAgOCwgMywgMjExLCAxNDAsIDgsIDMsIDIxMSwgMTQ0LCA4LCAzLCAyMTEsIDE0MywgOCwgMywgMjExLCAxNDgsIDgsIDMsIAorICAgIDIxMSwgMTQ2LCA4LCAzLCAyMTEsIDEyMSwgOCwgMywgMjExLCAxMTksIDgsIDMsIDIxMSwgMTMxLCA4LCAzLCAyMTEsIDEyNCwgCisgICAgOCwgMywgMjExLCAxMjIsIDgsIDMsIDIxMSwgMTIzLCA4LCAzLCAyMTAsIDI1MCwgOCwgMywgMjEwLCAyNDgsIDgsIDMsIAorICAgIDIxMSwgOCwgOCwgMywgMjEwLCAyNTEsIDgsIDMsIDIxMSwgMiwgOCwgMywgMjExLCAxLCA4LCAzLCAyMTEsIDUsIDgsIDMsIAorICAgIDIxMSwgMywgOCwgMywgMjEwLCAxOTEsIDgsIDMsIDIxMCwgMTkwLCA4LCAzLCAyMTAsIDE5NCwgOCwgMywgMjEwLCAxOTIsIAorICAgIDgsIDMsIDIxMCwgMjI0LCA4LCAzLCAyMTAsIDIyMSwgOCwgMywgMjEwLCAyNDQsIDgsIDMsIDIxMCwgMjI4LCA4LCAzLCAKKyAgICAyMTAsIDE4MiwgOCwgMywgMjEwLCAxNzgsIDgsIDMsIDIxMCwgMjEyLCA4LCAzLCAyMTAsIDE4OSwgOCwgMywgMjEwLCAxODUsIAorICAgIDgsIDMsIDIxMCwgMTg2LCA4LCAzLCAyMTAsIDE2MiwgOCwgMywgMjEwLCAxNjEsIDgsIDMsIDIxMCwgMTY5LCA4LCAzLCAKKyAgICAyMTAsIDE2NSwgOCwgMywgMjEwLCAxNjMsIDgsIDMsIDIxMCwgMTY0LCA4LCAzNCwgMjI0LCAzMywgOCwgMzQsIDIzMiwgCisgICAgMjQxLCA4LCAzNCwgMjM0LCA2MSwgOCwgMzQsIDIyNywgMTQxLCA4LCAzNCwgMjQ5LCA2OSwgOCwgMzQsIDIxOCwgMTkyLCA4LCAKKyAgICAzNCwgMjQzLCAxMiwgOCwgMzQsIDI0MywgNDQsIDgsIDM0LCAyMzAsIDIzMCwgOCwgMzQsIDI0MCwgMTgwLCA4LCAzNCwgCisgICAgMjMyLCA1NiwgOCwgMzQsIDI1MiwgODMsIDgsIDM0LCAyMzAsIDEyNiwgOCwgMzQsIDIxMCwgMjQ0LCA4LCAzNCwgMjI0LCAKKyAgICAxMjEsIDgsIDM0LCAyNDAsIDE3NCwgOCwgMzQsIDIxNywgNDYsIDgsIDM0LCAyNDMsIDEzNSwgOCwgMzQsIDIxMCwgNSwgOCwgCisgICAgMzQsIDI0OSwgNjMsIDgsIDM0LCAyNDgsIDk1LCA4LCAzNCwgMjUxLCA5OCwgOCwgMzQsIDI0MywgOCwgOCwgMzQsIDIyNywgCisgICAgMTMxLCA4LCAzNCwgMjE1LCAxMTgsIDgsIDM0LCAyMjYsIDE3NSwgOCwgMzQsIDIzNSwgNzQsIDgsIDM0LCAyMTAsIDE5LCA4LCAKKyAgICAzNCwgMjI0LCAxMDAsIDgsIDM0LCAyNDEsIDEwOCwgOCwgMzQsIDIxMCwgMjUwLCA4LCAzNCwgMjEyLCAxMTIsIDgsIDM0LCAKKyAgICAyMTksIDIwMCwgOCwgMzQsIDIxMywgMjQ0LCA4LCAzNCwgMjEwLCAxMTYsIDgsIDM0LCAyMzUsIDY4LCA4LCAzNCwgMjI3LCAKKyAgICA5NiwgOCwgMzQsIDIzNSwgNzIsIDgsIDM0LCAyNDIsIDE1NCwgOCwgMzQsIDIzNSwgOTIsIDgsIDM0LCAyMTEsIDIyNywgOCwgCisgICAgMzQsIDI0NiwgNzgsIDgsIDM0LCAyMTksIDIxMywgOCwgMzQsIDIzMiwgMjM2LCA4LCAzNCwgMjQ5LCA3MywgOCwgMzQsIAorICAgIDI0OSwgMTA1LCA4LCAzNCwgMjUwLCAzNywgOCwgMzQsIDI0MCwgMTc3LCA4LCAzNCwgMjIwLCA3MiwgOCwgMzQsIDIxMCwgNCwgCisgICAgOCwgMzQsIDIxOSwgMjU0LCA4LCAzNCwgMjUwLCAxMzEsIDgsIDM0LCAyMDksIDIzMSwgOCwgMzQsIDIyOSwgMTczLCA4LCAKKyAgICAzNCwgMjM0LCAxODIsIDIzMiwgMTk2LCAxLCAyNTIsIDE5MSwgMjMyLCAxOTYsIDEsIDE5MCwgMjMyLCAxOTYsIDEsIDIyNSwgCisgICAgMTQ3LCAyMzIsIDE5NiwgMSwgMjQ4LCAyMjEsIDIzMiwgMTk2LCAxLCAyMTcsIDEwNSwgMjMyLCAxOTYsIDEsIDIxNiwgMjA4LCAKKyAgICAyMzIsIDE5NiwgMSwgMjQzLCAxMzUsIDIzMiwgMTk2LCAxLCAxNzYsIDIzMiwgMTk2LCAxLCAyMzQsIDEzMiwgMjMyLCAxOTYsIAorICAgIDEsIDIzNSwgMTQxLCAyMzIsIDE5NiwgMSwgMjUxLCAzMywgMjMyLCAxOTYsIDEsIDI1MCwgMTU3LCAyMzIsIDE5NiwgMSwgCisgICAgMjQ2LCAzOCwgMjMyLCAxOTYsIDEsIDIxNSwgMTgzLCAyMzIsIDE5NiwgMSwgMjE1LCAxNzUsIDIzMiwgMTk2LCAxLCAxODQsIAorICAgIDIzMiwgMTk2LCAxLCAxOTcsIDIzMiwgMTk2LCAxLCAyMzMsIDEzNSwgMjMyLCAxOTYsIDEsIDIwNiwgMjMyLCAxOTYsIDEsIAorICAgIDIxMCwgODIsIDIzMiwgMTk2LCAxLCAyMTAsIDExNiwgMjMyLCAxOTYsIDEsIDIyOSwgNzcsIDIzMiwgMTk2LCAxLCAxNjIsIAorICAgIDIzMiwgMTk2LCAxLCAyMTEsIDE2NSwgMjMyLCAxOTYsIDEsIDI0MSwgMTg5LCAyMzIsIDE5NiwgMSwgMjQ0LCAxOTYsIDIzMiwgCisgICAgMTk2LCAxLCAyMTIsIDY1LCAyMzIsIDE5NiwgMSwgMjIwLCAxMDIsIDIzMiwgMTk2LCAxLCAxOTEsIDIzMiwgMTk2LCAxLCAKKyAgICAyNDIsIDI0OSwgMjMyLCAxOTYsIDEsIDYxLCAyMzIsIDE5NiwgMSwgMjU0LCAyNDMsIDIzMiwgMTk2LCAxLCA3NSwgMjMyLCAKKyAgICAxOTYsIDEsIDI0NSwgNTUsIDIzMiwgMTk2LCAxLCA3MywgMjMyLCAxOTYsIDEsIDc2LCAyMzIsIDE5NiwgMSwgNzAsIDIzMiwgCisgICAgMTk2LCAxLCAyMTQsIDIxNCwgMjMyLCAxOTYsIDEsIDIxNCwgMjA4LCAyMzIsIDE5NiwgMSwgMjI2LCAyMzQsIDIzMiwgMTk2LCAKKyAgICAxLCAxMzgsIDIzMCwgMzIsIDIxNiwgMTE3LCAyMzIsIDE5NiwgMSwgMTM4LCAyMjksIDIyOSwgMjI1LCAxNiwgMjMyLCAxOTYsIAorICAgIDEsIDEzOCwgMjMwLCAzMiwgMjQ5LCA3MiwgMjMyLCAxOTYsIDEsIDEzOCwgMjMwLCAzMiwgMjUxLCAyMDUsIDIzMiwgMTk2LCAKKyAgICAxLCAxMzgsIDIzMCwgMzIsIDE5NywgMjMyLCAxOTYsIDEsIDEzOCwgMjMwLCAzMiwgMjM1LCAxMTUsIDIzMiwgMTk2LCAyMjQsIAorICAgIDE0MSwgMjQ5LCAyMTksIDIzMiwgMTk2LCAyMjQsIDE0MSwgMjQzLCAyMjksIDIxOCwgMTI5LCA0MSwgMywgMjQ1LCAyMDksIAorICAgIDQxLCAzLCAyNDUsIDIwNSwgNDEsIDMsIDI0MSwgMjIwLCA0MSwgMywgMjEyLCAxNywgNDEsIDMsIDIxMiwgMTYsIDQxLCAzLCAKKyAgICAyMjUsIDIxMSwgNDEsIDMsIDI1MiwgMTMsIDQxLCAzLCAyNTIsIDY2LCA0MSwgMywgMjMxLCAxMTYsIDQxLCAzLCAyMzMsIAorICAgIDI0NywgNDEsIDMsIDIzMSwgNiwgNDEsIDMsIDI0MywgNzUsIDQxLCAzLCAyNDQsIDE0NywgNDEsIDMsIDIxMywgMjUwLCA0MSwgCisgICAgMywgMjE3LCAxMSwgNDEsIDMsIDIxNiwgMTk0LCA0MSwgMywgMjQ4LCAxNiwgNDEsIDMsIDI0OCwgMTMsIDQxLCAzLCAyMzMsIAorICAgIDUwLCA0MSwgMywgMjIzLCAxMDgsIDQxLCAzLCAyNDgsIDc3LCA0MSwgMywgMjI5LCAxMzksIDQxLCAzLCAyMjEsIDE3MCwgCisgICAgNDEsIDMsIDIyMCwgNjEsIDQxLCAzLCAyMTAsIDkyLCA0MSwgMywgMjEwLCA3MywgNDEsIDMsIDI1MCwgMTgyLCA0MSwgMywgCisgICAgMjM1LCAxMjQsIDQxLCAzLCAyMjgsIDE3NiwgNDEsIDMsIDIxMSwgNDQsIDQxLCAzLCAyMzQsIDE4MSwgNDEsIDMsIDIyOSwgCisgICAgNTEsIDQxLCAzLCAyNDMsIDU1LCA0MSwgMywgMjMxLCA4MCwgNDEsIDMsIDIyOSwgMTAzLCA0MSwgMywgMjI3LCAxNTUsIDQxLCAKKyAgICAzLCA3MywgNDEsIDMsIDIzNSwgMjU1LCA0MSwgMywgMjQxLCAxODAsIDQxLCAzLCAyNDEsIDE2MCwgNDEsIDMsIDIxMSwgCisgICAgMjUwLCA0MSwgMywgMjExLCAyNDEsIDQxLCAzLCAyMjUsIDEwOCwgNDEsIDMsIDI1MiwgMTEsIDQxLCAzLCAyNTIsIDYsIDQxLCAKKyAgICAzLCAyMzEsIDEwOSwgNDEsIDMsIDIzMywgMjQ0LCA0MSwgMywgMjMxLCAzLCA0MSwgMywgMjQzLCA3MSwgNDEsIDMsIDI0NCwgCisgICAgMTIxLCA0MSwgMywgMjEzLCAxNzYsIDQxLCAzLCAyMTYsIDExNywgNDEsIDMsIDIxNiwgMTc1LCA0MSwgMywgMjQ4LCA4LCAKKyAgICA0MSwgMywgMjQ4LCAxMiwgNDEsIDMsIDIzMiwgMjQxLCA0MSwgMywgMjIzLCAzNSwgNDEsIDMsIDI0OCwgMywgNDEsIDMsIAorICAgIDIyOSwgMTMzLCA0MSwgMywgMjE5LCAxOTEsIDQxLCAzLCAyMjAsIDMyLCA0MSwgMywgMjEwLCA0NCwgNDEsIDMsIDIxMCwgCisgICAgNjksIDQxLCAzLCAyNTAsIDUxLCA0MSwgMywgMjM1LCAxMDgsIDQxLCAzLCAyMjgsIDE2OSwgNDEsIDMsIDIxMSwgOCwgNDEsIAorICAgIDMsIDIzNCwgOTIsIDQxLCAzLCAyMjksIDQzLCA0MSwgMywgMjQyLCAyMTQsIDQxLCAzLCAyMzAsIDIzMCwgNDEsIDMsIDIyOCwgCisgICAgMjMzLCA0MSwgMywgMjI3LCAxNDgsIDQxLCAzLCA2MSwgNDEsIDMsIDI1NCwgMTIzLCA0MSwgMywgMjI5LCA3MiwgNDEsIDMsIAorICAgIDE2MiwgNDEsIDMsIDI0MiwgMTgsIDQxLCAzLCAyMTIsIDY1LCA0MSwgMywgMjEyLCA1NSwgNDEsIDMsIDE5MCwgNDEsIDMsIAorICAgIDI1MiwgMTgsIDQxLCAzLCAyNTIsIDE5MSwgNDEsIDMsIDIzMSwgMTI0LCA0MSwgMywgMjMzLCAyNTEsIDQxLCAzLCAyMzMsIAorICAgIDI1MCwgNDEsIDMsIDIzMSwgMTAsIDQxLCAzLCAyNDMsIDc5LCA0MSwgMywgMjQ0LCAxOTYsIDQxLCAzLCAyMTQsIDI3LCA0MSwgCisgICAgMywgMjE3LCAxMDUsIDQxLCAzLCAyMTYsIDIwOCwgNDEsIDMsIDI0OCwgMjUsIDQxLCAzLCAyNDgsIDE1LCA0MSwgMywgMjMzLCAKKyAgICAxMzUsIDQxLCAzLCAyMDUsIDQxLCAzLCAyNDgsIDIyMSwgNDEsIDMsIDIyOSwgMTQ4LCA0MSwgMywgMjA2LCA0MSwgMywgCisgICAgMjIwLCAxMDIsIDQxLCAzLCAyMTAsIDExNiwgNDEsIDMsIDIxMCwgODIsIDQxLCAzLCAyNTEsIDMzLCA0MSwgMywgMjM1LCAKKyAgICAxNDEsIDQxLCAzLCAyMjgsIDE4NSwgNDEsIDMsIDE5MSwgNDEsIDMsIDE3NiwgNDEsIDMsIDIzNCwgMjM0LCA0MSwgMywgCisgICAgMjI5LCA1NiwgNDEsIDMsIDI0MywgMTM1LCA0MSwgMywgMTg0LCA0MSwgMywgMTk3LCA0MSwgMywgMjI3LCAxNjUsIDQxLCAzLCAKKyAgICAyMjYsIDE4MywgNDEsIDMsIDIyNiwgMTc5LCA0MSwgMywgMjQxLCA1MywgNDEsIDMsIDIxMSwgMjE1LCA0MSwgMywgMjExLCAKKyAgICAyMTEsIDQxLCAzLCAyMjQsIDI0OSwgNDEsIDMsIDI1MiwgOSwgNDEsIDMsIDI1MSwgMTkzLCA0MSwgMywgMjMxLCAxMDQsIAorICAgIDQxLCAzLCAyMzMsIDI0MiwgNDEsIDMsIDIzMCwgMjU1LCA0MSwgMywgMjQzLCA2NywgNDEsIDMsIDI0NCwgMzQsIDQxLCAzLCAKKyAgICAyMTMsIDEyNywgNDEsIDMsIDIxNiwgMTcsIDQxLCAzLCAyMTYsIDE1MywgNDEsIDMsIDI0OCwgNiwgNDEsIDMsIDI0OCwgMTAsIAorICAgIDQxLCAzLCAyMzIsIDEyNywgNDEsIDMsIDIyMiwgMTk3LCA0MSwgMywgMjQ3LCAxMjUsIDQxLCAzLCAyMjksIDEyMCwgNDEsIAorICAgIDMsIDIxOSwgNDAsIDQxLCAzLCAyMjAsIDEsIDQxLCAzLCAyMTAsIDIxLCA0MSwgMywgMjEwLCA2NiwgNDEsIDMsIDI0OSwgCisgICAgMTc0LCA0MSwgMywgMjM1LCA1OSwgNDEsIDMsIDIyOCwgMTU5LCA0MSwgMywgMjEwLCAyMjksIDQxLCAzLCAyMzQsIDEwLCAKKyAgICA0MSwgMywgMjI5LCA0MSwgNDEsIDMsIDI0MiwgMTY0LCA0MSwgMywgMjMwLCAxMzIsIDQxLCAzLCAyMjgsIDY0LCA0MSwgMywgCisgICAgMjI3LCAxMzIsIDQxLCAzLCA3MCwgNDEsIDMsIDIxNCwgMTkwLCA0MSwgMywgMjQwLCAyMjIsIDQxLCAzLCAyNDAsIDIxMiwgCisgICAgNDEsIDMsIDIxMSwgMTk1LCA0MSwgMywgMjExLCAxODksIDQxLCAzLCAyMjQsIDE1MCwgNDEsIDMsIDI1MiwgOCwgNDEsIDMsIAorICAgIDI1MSwgMTI1LCA0MSwgMywgMjMxLCAxMDMsIDQxLCAzLCAyMzMsIDI0MCwgNDEsIDMsIDIzMCwgMjU0LCA0MSwgMywgMjQzLCAKKyAgICA2NiwgNDEsIDMsIDI0MywgMjM0LCA0MSwgMywgMjEyLCAxMTYsIDQxLCAzLCAyMTUsIDExOCwgNDEsIDMsIDIxNiwgMTM2LCAKKyAgICA0MSwgMywgMjQ4LCA0LCA0MSwgMywgMjQ4LCA5LCA0MSwgMywgMjMyLCA5OCwgNDEsIDMsIDIyMiwgMTQwLCA0MSwgMywgCisgICAgMjQ2LCA3OCwgNDEsIDMsIDIyOSwgMTE1LCA0MSwgMywgMjE4LCA4MywgNDEsIDMsIDIxOSwgMjI1LCA0MSwgMywgMjEwLCAKKyAgICAxMywgNDEsIDMsIDIxMCwgNjIsIDQxLCAzLCAyNDksIDExMiwgNDEsIDMsIDIzNSwgNTEsIDQxLCAzLCAyMjgsIDE1NSwgNDEsIAorICAgIDMsIDIxMCwgMjEyLCA0MSwgMywgMjMzLCAyMTcsIDQxLCAzLCAyMjksIDQwLCA0MSwgMywgMjQyLCAxMTMsIDQxLCAzLCAKKyAgICAyMzAsIDEwMiwgNDEsIDMsIDIyNywgMjM3LCA0MSwgMywgMjI3LCAxMjgsIDQxLCAzLCA3NiwgNDEsIDMsIDIyNiwgMTk2LCAKKyAgICA0MSwgMywgMjI5LCAwLCA0MSwgMywgMjQxLCA2OCwgNDEsIDMsIDI0MSwgNTYsIDQxLCAzLCAyMTEsIDIyNywgNDEsIDMsIAorICAgIDIxMSwgMjE2LCA0MSwgMywgMjI1LCAxNiwgNDEsIDMsIDI1MiwgMTAsIDQxLCAzLCAyNTEsIDIwNSwgNDEsIDMsIDIzMSwgCisgICAgMTA1LCA0MSwgMywgMjMzLCAyNDMsIDQxLCAzLCAyMzEsIDEsIDQxLCAzLCAyNDMsIDY5LCA0MSwgMywgMjQzLCA2OCwgNDEsIAorICAgIDMsIDI0NCwgNDMsIDQxLCAzLCAyMTMsIDEzOCwgNDEsIDMsIDExMSwgNDEsIDMsIDIxNiwgMTU2LCA0MSwgMywgMjQ4LCA3LCAKKyAgICA0MSwgMywgMjQ4LCAxMSwgNDEsIDMsIDIzMiwgMTU2LCA0MSwgMywgMjIyLCAyMTEsIDQxLCAzLCAyNDcsIDE0NSwgNDEsIDMsIAorICAgIDIyOSwgMTI0LCA0MSwgMywgMjE5LCA1OCwgNDEsIDMsIDIyMCwgNywgNDEsIDMsIDIxMCwgMjMsIDQxLCAzLCAyMTAsIDY3LCAKKyAgICA0MSwgMywgMjQ5LCAyMzgsIDQxLCAzLCAyMzUsIDY4LCA0MSwgMywgMjI4LCAxNjAsIDQxLCAzLCAyMTAsIDI0NCwgNDEsIDMsIAorICAgIDIzNCwgMjgsIDQxLCAzLCAyMjksIDQyLCA0MSwgMywgMjQyLCAxNzQsIDQxLCAzLCAyMzAsIDE2MSwgNDEsIDMsIDIyOCwgCisgICAgNzQsIDQxLCAzLCAyMjcsIDEzNCwgNDEsIDMsIDc1LCA0MSwgMywgMjQ1LCAxNTAsIDQxLCAzLCAyMjksIDYxLCA0MSwgMywgCisgICAgMjQxLCAyMzgsIDQxLCAzLCAyNDEsIDIwOSwgNDEsIDMsIDIxMiwgMjIsIDQxLCAzLCAyMTIsIDEyLCA0MSwgMywgMjI1LCAKKyAgICAyMjEsIDQxLCAzLCAyNTIsIDE0LCA0MSwgMywgMjUyLCA3NSwgNDEsIDMsIDIzMSwgMTE3LCA0MSwgMywgMjMzLCAyNDgsIAorICAgIDQxLCAzLCAyMzMsIDI0NiwgNDEsIDMsIDIzMSwgNywgNDEsIDMsIDI0MywgNzYsIDQxLCAzLCAyNDMsIDc0LCA0MSwgMywgCisgICAgMjQ0LCAxNTQsIDQxLCAzLCAyMTMsIDI1NSwgNDEsIDMsIDIxNywgMjIsIDQxLCAzLCAyMTYsIDE5NSwgNDEsIDMsIDI0OCwgCisgICAgMTcsIDQxLCAzLCAyNDgsIDE0LCA0MSwgMywgMjMzLCA1OCwgNDEsIDMsIDIyMywgMTI4LCA0MSwgMywgMjQ4LCA5MCwgNDEsIAorICAgIDMsIDIyOSwgMTQwLCA0MSwgMywgMjIxLCAxODEsIDQxLCAzLCAyMjAsIDYzLCA0MSwgMywgMjEwLCA5NCwgNDEsIDMsIDIxMCwgCisgICAgNzQsIDQxLCAzLCAyNTAsIDE5MCwgNDEsIDMsIDIzNSwgMTI2LCA0MSwgMywgMjI4LCAxNzgsIDQxLCAzLCAyMTEsIDQ3LCAKKyAgICA0MSwgMywgMjM0LCAxODIsIDQxLCAzLCAyMjksIDUyLCA0MSwgMywgMjI5LCA0OCwgNDEsIDMsIDI0MywgNjIsIDQxLCAzLCAKKyAgICAyNDMsIDUxLCA0MSwgMywgMjMxLCA5MSwgNDEsIDMsIDIyOSwgMTA3LCA0MSwgMywgMjI3LCAxNTYsIDQxLCAzLCAyMjksIAorICAgIDc5LCA0MSwgMywgMjMzLCAyMiwgNDEsIDI0OSwgMjE5LCA0MSwgMjQzLCAyMjksIDIxOCwgMTI5LCA0MSwgMjI0LCAxMywgCisgICAgNzgsIDQxLCAzLCAyMjksIDEyMywgMjQ0LCAxOTYsIDQxLCAzLCAyMjksIDEyMywgMTc2LCA0MSwgMywgMjI5LCAxMjMsIAorICAgIDIxOSwgNDAsIDQxLCAxNiwgMjQ0LCAxNDQsIDQxLCAxNiwgMjM0LCAxODAsIDQxLCAxNiwgMjE2LCA4MSwgNDEsIDE2LCAKKyAgICAyMjgsIDIwOCwgNDEsIDE2LCAyNTIsIDE0NywgNDEsIDE2LCAyNDQsIDE5NSwgNDEsIDE2LCAyMTcsIDEwMSwgNDEsIDE2LCAKKyAgICAyNDgsIDE3NiwgNDEsIDE2LCAyNDcsIDEyNCwgNDEsIDE2LCAyMzMsIDIwNiwgNDEsIDE2LCAyMTYsIDIxLCA0MSwgMTYsIAorICAgIDI0NywgMTQ0LCA0MSwgMTYsIDIzNSwgNjAsIDQxLCAyMSwgMjEwLCA4NiwgNDEsIDIxLCAxMTAsIDQxLCAyMSwgMTA1LCA0MSwgCisgICAgMjEsIDE1OCwgNDEsIDIxLCAxNjEsIDQxLCAyMSwgMTg5LCA0MSwgMjEsIDE5NCwgNDEsIDIxLCAxOTgsIDQxLCAyMSwgMTk1LCAKKyAgICA0MSwgMjEsIDIwMCwgNDEsIDMsIDIyOSwgMTIzLCAxODQsIDQxLCAzLCAyMjksIDEyMywgMjQ3LCAxNDUsIDMzLCA2LCAxLCAKKyAgICAyMTAsIDkwLCAzMywgNCwgMSwgMjEwLCA5MCwgMzMsIDYsIDEsIDI0NiwgMzQsIDMzLCA0LCAxLCAyNDYsIDM0LCAzMywgNiwgCisgICAgMSwgMjIzLCA0OSwgMjQ2LCAzNiwgMzMsIDQsIDEsIDIyMywgNDksIDI0NiwgMzYsIDMzLCA2LCAxLCAyMzUsIDE4NSwgMzMsIAorICAgIDQsIDEsIDIzNSwgMTg1LCAzMywgNiwgMSwgMjQ3LCAxNjEsIDMzLCA0LCAxLCAyNDcsIDE2MSwgMzMsIDYsIDEsIDIzMCwgCisgICAgMTQwLCAyMTQsIDIwNSwgMzMsIDQsIDEsIDIzMCwgMTQwLCAyMTQsIDIwNSwgMzMsIDYsIDEsIDI1MSwgMTM2LCAyMjYsIAorICAgIDIwMSwgMzMsIDQsIDEsIDI1MSwgMTM2LCAyMjYsIDIwMSwgMzMsIDYsIDEsIDIyOSwgODcsIDIxMSwgMzEsIDMzLCA0LCAxLCAKKyAgICAyMjksIDg3LCAyMTEsIDMxLCAzMywgNiwgMSwgMjExLCAyOCwgMiwgMjUyLCAxODUsIDIxMSwgMzEsIDMzLCA0LCAxLCAyMTEsIAorICAgIDI4LCAyLCAyNTIsIDE4NSwgMjExLCAzMSwgMzMsIDYsIDEsIDIzNSwgMTgzLCAyMTEsIDU5LCAzMywgNCwgMSwgMjM1LCAKKyAgICAxODMsIDIxMSwgNTksIDMzLCA2LCAxLCAyMjMsIDQ5LCAyMTAsIDIxMiwgMzMsIDQsIDEsIDIyMywgNDksIDIxMCwgMjEyLCAKKyAgICAzMywgNiwgMSwgMjM1LCAxODMsIDYxLCAzMywgNCwgMSwgMjM1LCAxODMsIDYxLCAzMywgNiwgMSwgMjUwLCAwLCAyMzIsIAorICAgIDE5MiwgMjEwLCAxODMsIDMzLCA0LCAxLCAyNTAsIDAsIDIzMiwgMTkyLCAyMTAsIDE4MywgMzMsIDYsIDEsIDI1MSwgMjE0LCAKKyAgICAyMTAsIDE4MywgMzMsIDQsIDEsIDI1MSwgMjE0LCAyMTAsIDE4MywgMzMsIDYsIDEsIDIzNSwgMTgzLCAyNTAsIDAsIDIzMiwgCisgICAgMTkyLCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzNSwgMTgzLCAyNTAsIDAsIDIzMiwgMTkyLCAyMTAsIDE4MywgMzMsIDYsIDEsIAorICAgIDIxMCwgMjQ2LCAzMywgNCwgMSwgMjEwLCAyNDYsIDMzLCA2LCAxLCAyMjMsIDQ5LCAyMTUsIDE3OCwgMzMsIDQsIDEsIDIyMywgCisgICAgNDksIDIxNSwgMTc4LCAzMywgNiwgMSwgMjE5LCA1MiwgMjQ4LCA5MCwgMzMsIDQsIDEsIDIxOSwgNTIsIDI0OCwgOTAsIDMzLCAKKyAgICA2LCAxLCAyMTksIDUyLCAyNDUsIDE3NCwgMzMsIDQsIDEsIDIxOSwgNTIsIDI0NSwgMTc0LCAzMywgNiwgMSwgMjE5LCA1MiwgCisgICAgMjQ1LCAxNTksIDMzLCA0LCAxLCAyMTksIDUyLCAyNDUsIDE1OSwgMzMsIDYsIDEsIDIzMCwgMTQ0LCA3NiwgMzMsIDQsIDEsIAorICAgIDIzMCwgMTQ0LCA3NiwgMzMsIDYsIDEsIDI1MSwgMjQwLCA3NiwgMzMsIDQsIDEsIDI1MSwgMjQwLCA3NiwgMzMsIDYsIDEsIAorICAgIDUyLCAyMzAsIDE0NCwgNzYsIDMzLCA0LCAxLCA1MiwgMjMwLCAxNDQsIDc2LCAzMywgMSwgMjMwLCA4NiwgNzYsIDM4LCAzMywgCisgICAgMjEyLCAxMDAsIDM4LCAzMywgMjE2LCAyNDgsIDIzMCwgMTkxLCA1MCwgMzgsIDMzLCAyNDAsIDIxMSwgMjMwLCAxOTEsIDUwLCAKKyAgICAzOCwgMzMsIDIxNiwgMTQ4LCAyMzAsIDE5MSwgNTAsIDIxOSwgOTMsIDI1MywgMjE2LCAzOCwgMzMsIDEsIDIxNCwgMjAyLCAKKyAgICAyMzYsIDYwLCAzOCwgMzMsIDEsIDczLCAzOCwgMzMsIDEsIDIxMSwgOCwgMzgsIDMzLCAxLCA3MCwgMzgsIDMzLCAxLCAyNDIsIAorICAgIDMsIDUwLCAzOCwgMzMsIDEsIDIxMSwgMjcsIDM4LCAzMywgMSwgMjE5LCA1MiwgNTAsIDM4LCAzMywgMSwgMjI2LCAyMDEsIAorICAgIDM4LCAzMywgMjM0LCAxOTIsIDM4LCAzMywgMjI1LCAyMjcsIDMzLCAyMzQsIDE5MiwgMzMsIDIyNSwgMjI3LCAzMywgNiwgMSwgCisgICAgMjQ2LCA0NiwgMzMsIDQsIDEsIDI0NiwgNDYsIDMzLCA2LCAxLCAyNDYsIDI3LCAzMywgNCwgMSwgMjQ2LCAyNywgMzMsIDYsIAorICAgIDEsIDIxMCwgNTIsIDMzLCA0LCAxLCAyMTAsIDUyLCAzMywgNiwgMSwgMjUwLCAyMDYsIDMzLCA0LCAxLCAyNTAsIDIwNiwgCisgICAgMzMsIDYsIDEsIDI0NiwgMjUsIDMzLCA0LCAxLCAyNDYsIDI1LCAzMywgNiwgMSwgMjE3LCAyMywgMiwgMjMwLCAyMjQsIAorICAgIDEwMywgMzMsIDQsIDEsIDIxNywgMjMsIDIsIDIzMCwgMjI0LCAxMDMsIDMzLCA2LCAxLCAyMTUsIDc4LCAzMywgNCwgMSwgCisgICAgMjE1LCA3OCwgMzMsIDYsIDEsIDIxNSwgMTYwLCAzMywgNCwgMSwgMjE1LCAxNjAsIDMzLCA2LCAxLCAyMTUsIDE2NCwgMzMsIAorICAgIDQsIDEsIDIxNSwgMTY0LCAzMywgNiwgMSwgMjE3LCAyOCwgMzMsIDQsIDEsIDIxNywgMjgsIDMzLCA2LCAxLCAyNDAsIDE5OCwgCisgICAgMzMsIDQsIDEsIDI0MCwgMTk4LCAzMywgNiwgMSwgMjE5LCAyMDYsIDMzLCA0LCAxLCAyMTksIDIwNiwgMzgsIDMzLCAxLCAKKyAgICAyMzUsIDE4MywgNzUsIDIwLCAxLCA2MSwgMjAsIDEsIDE3NiwgMjAsIDEsIDcwLCAyMCwgMSwgMjMzLCAyMTcsIDIwLCAxLCAKKyAgICAyNDUsIDIwOSwgMjAsIDEsIDIyMywgMTA4LCAyMCwgMSwgMjE3LCA4NiwgMjAsIDEsIDc2LCAyMCwgMSwgMjI3LCAxNDgsIAorICAgIDIwLCAxLCA3MywgMjAsIDEsIDIzMywgMTM1LCAyMCwgMSwgMTkwLCAyMCwgMSwgMjIyLCAyMzksIDIwLCAxLCAyMjMsIDI5LCAKKyAgICAyMCwgMSwgMjMzLCA0OSwgMjAsIDEsIDIzMSwgNzksIDIwLCAxLCAyMTcsIDEwMSwgMjAsIDEsIDIyOSwgMTQ2LCAyMCwgMSwgCisgICAgMjI4LCAxODMsIDIwLCAxLCAxOTMsIDIwLCAxLCAyMTgsIDQsIDIwLCAxLCAyMzAsIDEwMiwgMjAsIDEsIDIyMCwgMjcsIDIwLCAKKyAgICAxLCAyMTksIDE5MSwgMjAsIDEsIDIyMCwgMzcsIDIwLCAxLCAyMjAsIDEyMywgMjAsIDEsIDIzMywgMTU1LCAyMCwgMSwgCisgICAgMjM0LCAxNTYsIDIwLCAxLCAyMjcsIDIwOSwgMjAsIDEsIDIyNywgMjM3LCAyMCwgMSwgMjI4LCAxNTQsIDIwLCAxLCAyMTAsIAorICAgIDIyNiwgMjAsIDEsIDIxOSwgMjI1LCAyMCwgMSwgMjEwLCAxODcsIDIwLCAxLCAxOTEsIDIwLCAxLCAyMjgsIDksIDIwLCAxLCAKKyAgICAyMzQsIDE0MiwgMjAsIDEsIDIyNSwgMTUxLCAyMCwgMSwgMjI4LCAxNzYsIDIwLCAxLCAyMjcsIDI0NiwgMjAsIDEsIDIyNCwgCisgICAgMTQ0LCAyMCwgMSwgMjExLCAxOTIsIDIwLCAxLCAyMjUsIDIxMSwgMjAsIDEsIDI0NCwgMTQ3LCAyMCwgMSwgMjIyLCAxNDAsIAorICAgIDIwLCAxLCAyMzIsIDk4LCAyMCwgMSwgMjMwLCAyMzAsIDIwLCAxLCAyMjgsIDIzMywgMjAsIDEsIDIyMywgNTEsIDIwLCAxLCAKKyAgICAyMjMsIDE3MSwgMjAsIDEsIDIzNCwgMTY1LCAyMCwgMSwgMjI5LCA3LCAyMCwgMSwgMjI5LCA1NiwgMjAsIDEsIDIyOSwgNzcsIAorICAgIDIwLCAxLCAyMjAsIDcsIDIwLCAxLCAyMjQsIDE0NywgMjAsIDEsIDI0MywgMjM0LCAyMCwgMSwgMjQ0LCAzNywgMjAsIDEsIAorICAgIDIxMiwgNjUsIDIwLCAxLCAxOTcsIDIwLCAxLCAyMzIsIDI0MSwgMjAsIDEsIDIyNSwgMTA4LCAyMCwgMSwgMjMyLCAxMTksIAorICAgIDIwLCAxLCAyMzQsIDI4LCAyMCwgMSwgMjMxLCAxMTQsIDIwLCAxLCAyMjMsIDgzLCAyMCwgMSwgMjMxLCA1OCwgMjAsIDEsIAorICAgIDE4NCwgMjAsIDEsIDIxNiwgMTE3LCAyMCwgMSwgMjM0LCA5MiwgMjAsIDEsIDIzMCwgMTYxLCAyMCwgMSwgMjMxLCAxMjIsIAorICAgIDIwLCAxLCAyMTYsIDIzMCwgMjAsIDEsIDIzMywgMjUxLCAyMCwgMSwgMjE2LCAyNDcsIDIwLCAxLCAyMjcsIDIzOCwgMjAsIAorICAgIDEsIDIyMSwgMjUxLCAyMCwgMSwgMjQ0LCAxOTIsIDIwLCAxLCAyMzMsIDI1MywgMjAsIDEsIDIzNCwgMjQsIDIwLCAzOCwgCisgICAgMTY0LCAyMzQsIDUsIDIwLCAzOCwgMTY0LCAyMTUsIDExMCwgMjAsIDIyOCwgMTgyLCAyMCwgMjQzLCAyMjksIDIxOCwgMTI5LCAKKyAgICAyMCwgMjQ5LCAyMjYsIDIwLCAyNDksIDIxOSwgMjAsIDIyMCwgMTUwLCAyMCwgMjI0LCAxMywgNzgsIDU4LCAxLCAyNTAsIAorICAgIDk2LCAxMzgsIDIxMCwgMjU0LCAyMjUsIDYxLCA1OCwgMSwgMjUwLCA5NiwgMTM4LCAyMTEsIDcwLCAyMjUsIDYxLCA1OCwgMSwgCisgICAgMjUwLCA5NiwgMTM4LCAyMTAsIDI1NCwgMjIwLCA4NCwgNTgsIDEsIDI1MCwgOTYsIDEzOCwgMjExLCA3MCwgMjIwLCA4NCwgCisgICAgNTgsIDEsIDI1MCwgOTYsIDEzOCwgMjEwLCAyNTQsIDIyNCwgMzAsIDU4LCAxLCAyNTAsIDk2LCAxMzgsIDIxMSwgNzAsIAorICAgIDIyNCwgMzAsIDU4LCAxLCAyNTAsIDk2LCAxMzgsIDIxMCwgMjU0LCAyMjIsIDE0MCwgNTgsIDEsIDI1MCwgOTYsIDEzOCwgCisgICAgMjExLCA3MCwgMjIyLCAxNDAsIDU4LCAxLCAyNDUsIDIwLCAyNDYsIDExOCwgMTM4LCAxMzAsIDU4LCAxLCAxMjUsIDI0NiwgCisgICAgMTE4LCAxMzgsIDEzMCwgNTgsIDEsIDIzMCwgMjI1LCAyNDYsIDExOCwgMTM4LCAxMzAsIDU4LCAxLCAxMjEsIDI0NiwgMTE4LCAKKyAgICAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMTksIDI0NiwgMTE4LCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMjAsIDI0NiwgMTE4LCAKKyAgICAyMzMsIDM5LCAxMzgsIDEzMCwgNTgsIDEsIDEyNSwgMjQ2LCAxMTgsIDIzMywgMzksIDEzOCwgMTMwLCA1OCwgMSwgMjMwLCAKKyAgICAyMjUsIDI0NiwgMTE4LCAyMzMsIDM5LCAxMzgsIDEzMCwgNTgsIDEsIDEyMSwgMjQ2LCAxMTgsIDIzMywgMzksIDEzOCwgCisgICAgMTMwLCA1OCwgMSwgMjQ1LCAxOSwgMjQ2LCAxMTgsIDIzMywgMzksIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAyMCwgMjMzLCAKKyAgICAzOSwgMTM4LCAxMzAsIDU4LCAxLCAxMjUsIDIzMywgMzksIDEzOCwgMTMwLCA1OCwgMSwgMjMwLCAyMjUsIDIzMywgMzksIAorICAgIDEzOCwgMTMwLCA1OCwgMSwgMTIxLCAyMzMsIDM5LCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMTksIDIzMywgMzksIDEzOCwgCisgICAgMTMwLCA1OCwgMSwgNTksIDY3LCAxMzAsIDU4LCAxLCA1OSwgMjE5LCA5NSwgNTgsIDEsIDU5LCAyMDMsIDEzMCwgNTgsIDEsIAorICAgIDIzMiwgMTA4LCA0NCwgMjQ5LCAxNjEsIDI1NCwgMTA5LCA1OCwgMSwgMjIzLCAxNTcsIDEyMCwgNzQsIDU4LCAxLCAyMjMsIAorICAgIDE1NywgMTI0LCA3NCwgNTgsIDEsIDIyMywgMTU3LCAyNDUsIDMxLCA3OCwgNTgsIDEsIDIyMywgMTU3LCAyMzUsIDE5MywgCisgICAgMjQ1LCAzMSwgNzgsIDU4LCAxLCAxMjEsIDIzNSwgMTkzLCAyNDUsIDMxLCA3OCwgNTgsIDEsIDIxOCwgMTExLCAyMiwgMTI1LCAKKyAgICAyMTYsIDMwLCA1OCwgMSwgMjE4LCAxMTEsIDIyLCAxMjEsIDIxNiwgMzAsIDcsIDYsIDEsIDI0NSwgMTk5LCAyNTQsIDE3MCwgCisgICAgNywgNCwgMSwgMjQ1LCAxOTksIDI1NCwgMTcwLCA3LCA2LCAxLCAyNDUsIDE5OSwgMjU0LCAxOTYsIDcsIDQsIDEsIDI0NSwgCisgICAgMTk5LCAyNTQsIDE5NiwgNywgNiwgMSwgMjQxLCAyMDcsIDcsIDQsIDEsIDI0MSwgMjA3LCA3LCA2LCAxLCAyMTUsIDQwLCA3LCAKKyAgICA0LCAxLCAyMTUsIDQwLCA3LCA2LCAxLCAyMTUsIDIyOSwgNywgNCwgMSwgMjE1LCAyMjksIDcsIDYsIDEsIDI0OSwgMTEwLCAKKyAgICA3LCA0LCAxLCAyNDksIDExMCwgNywgNiwgMSwgMjQ5LCAxMTEsIDIsIDI0OSwgMjE5LCA3LCA0LCAxLCAyNDksIDExMSwgMiwgCisgICAgMjQ5LCAyMTksIDcsIDEsIDQsIDYsIDI0NSwgNiwgNywgMSwgNCwgNiwgMjIyLCA5MSwgNywgNiwgMSwgMjU1LCA3MywgNywgCisgICAgNCwgMSwgMjU1LCA3MywgNywgNiwgMSwgMjU0LCA3MywgNywgNCwgMSwgMjU0LCA3MywgNywgNiwgMSwgMjUzLCAxOTIsIDcsIAorICAgIDQsIDEsIDI1MywgMTkyLCA3LCA2LCAxLCAyNTMsIDE3NiwgNywgNCwgMSwgMjUzLCAxNzYsIDcsIDYsIDEsIDI1MywgMTc3LCAKKyAgICAyLCAyMDMsIDEzMCwgNywgNCwgMSwgMjUzLCAxNzcsIDIsIDIwMywgMTMwLCA3LCA2LCAxLCAyNTMsIDE2NywgNywgNCwgMSwgCisgICAgMjUzLCAxNjcsIDcsIDYsIDEsIDIyMywgNDksIDI1MSwgNjcsIDIsIDI0NywgMTIwLCA3LCA0LCAxLCAyMjMsIDQ5LCAyNTEsIAorICAgIDY3LCAyLCAyNDcsIDEyMCwgNywgNiwgMSwgMjM1LCAyNCwgMiwgOTEsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDkxLCA3LCA2LCAKKyAgICAxLCAyMzUsIDI0LCAyLCAyNDcsIDI1NSwgOTEsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDI0NywgMjU1LCA5MSwgNywgNiwgMSwgCisgICAgMjM1LCAyNCwgMiwgMjE4LCAxMDMsIDIyLCAyNDcsIDI1NSwgOTEsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDIxOCwgMTAzLCAKKyAgICAyMiwgMjQ3LCAyNTUsIDkxLCA3LCA2LCAxLCAyNTEsIDEzNSwgMTU2LCA3LCA0LCAxLCAyNTEsIDEzNSwgMTU2LCA3LCA2LCAKKyAgICAxLCAyMzMsIDE0OSwgMiwgMTI1LCA5MSwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDEyNSwgOTEsIDcsIDYsIDEsIDE0NCwgMiwgCisgICAgMTk5LCAyMTgsIDEwMywgMjI2LCAxMjAsIDcsIDQsIDEsIDE0NCwgMiwgMTk5LCAyMTgsIDEwMywgMjI2LCAxMjAsIDcsIDYsIAorICAgIDEsIDE0NCwgMiwgMjMyLCAxMjMsIDcsIDQsIDEsIDE0NCwgMiwgMjMyLCAxMjMsIDcsIDYsIDEsIDIyNiwgMTgzLCA3LCA0LCAKKyAgICAxLCAyMjYsIDE4MywgNywgNiwgMSwgMjI2LCAxMDYsIDIsIDIxOCwgMTAzLCAyMTYsIDEzOSwgMjQ4LCAzOSwgNywgNCwgMSwgCisgICAgMjI2LCAxMDYsIDIsIDIxOCwgMTAzLCAyMTYsIDEzOSwgMjQ4LCAzOSwgNywgNiwgMSwgMjI2LCAxMDYsIDIsIDI0NCwgNTMsIAorICAgIDcsIDQsIDEsIDIyNiwgMTA2LCAyLCAyNDQsIDUzLCA3LCA2LCAxLCAyMjYsIDEwNiwgMiwgMjE4LCAyMjksIDIxNywgNzcsIAorICAgIDcsIDQsIDEsIDIyNiwgMTA2LCAyLCAyMTgsIDIyOSwgMjE3LCA3NywgNywgNiwgMSwgMjI0LCA5NywgMiwgMjE4LCAxMDMsIAorICAgIDIxNiwgMTM5LCAyNDgsIDM5LCA3LCA0LCAxLCAyMjQsIDk3LCAyLCAyMTgsIDEwMywgMjE2LCAxMzksIDI0OCwgMzksIDcsIAorICAgIDYsIDEsIDIyNCwgOTcsIDIsIDI0NywgMjU1LCA5MSwgNywgNCwgMSwgMjI0LCA5NywgMiwgMjQ3LCAyNTUsIDkxLCA3LCA2LCAKKyAgICAxLCAyMjMsIDIyNCwgMjIyLCAxODYsIDcsIDQsIDEsIDIyMywgMjI0LCAyMjIsIDE4NiwgNywgNiwgMSwgMjIyLCAxMzAsIAorICAgIDIyMiwgMTg2LCA3LCA0LCAxLCAyMjIsIDEzMCwgMjIyLCAxODYsIDcsIDYsIDEsIDIxNCwgMTA2LCAyLCAyNDcsIDI1NSwgCisgICAgOTEsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAyNDcsIDI1NSwgOTEsIDcsIDYsIDEsIDIxMiwgMTA2LCA3LCA0LCAxLCAyMTIsIAorICAgIDEwNiwgNywgNiwgMSwgMjEzLCAxNDUsIDIxMCwgMTU5LCA3LCA0LCAxLCAyMTMsIDE0NSwgMjEwLCAxNTksIDcsIDYsIDEsIAorICAgIDIxNiwgMTUyLCAyLCA5MSwgNywgNCwgMSwgMjE2LCAxNTIsIDIsIDkxLCA3LCA2LCAxLCAyMTYsIDE1MiwgMiwgMjE4LCAKKyAgICAxMDMsIDIxNiwgMTM5LCAyNDgsIDM5LCA3LCA0LCAxLCAyMTYsIDE1MiwgMiwgMjE4LCAxMDMsIDIxNiwgMTM5LCAyNDgsIAorICAgIDM5LCA3LCA2LCAxLCAyMTMsIDI0NSwgNywgNCwgMSwgMjEzLCAyNDUsIDcsIDYsIDEsIDI0NSwgNjUsIDcsIDQsIDEsIDI0NSwgCisgICAgNjUsIDcsIDYsIDEsIDIzNSwgMTcxLCA3LCA0LCAxLCAyMzUsIDE3MSwgNywgNiwgMSwgMjQ5LCAyMDcsIDcsIDQsIDEsIAorICAgIDI0OSwgMjA3LCA1OCwgMSwgMjE0LCAxMzMsIDcsIDQsIDEsIDI0NiwgNjksIDcsIDQsIDEsIDIzMiwgODQsIDcsIDQsIDEsIAorICAgIDIzMCwgODAsIDcsIDQsIDEsIDIyNywgMjAxLCA3LCA0LCAxLCAyMjIsIDEyOSwgNywgMSwgNCwgNiwgMjIyLCAxMjksIDcsIAorICAgIDQsIDEsIDIxNSwgMTA4LCA3LCA0LCAxLCAyMTQsIDE5NywgNywgNiwgMSwgMjM1LCAyMTMsIDI0OSwgNjAsIDcsIDQsIDEsIAorICAgIDIzNSwgMjEzLCAyNDksIDYwLCA3LCA2LCAxLCAyMzUsIDIxMywgMjQ1LCA2LCA3LCA0LCAxLCAyMzUsIDIxMywgMjQ1LCA2LCAKKyAgICA3LCA2LCAxLCAyMzUsIDIxMywgMjQzLCAyMDIsIDcsIDYsIDEsIDIxNSwgOTQsIDIzNSwgMjEzLCAyNDMsIDIwMiwgNywgNCwgCisgICAgMSwgMjE1LCA5NCwgMjM1LCAyMTMsIDI0MywgMjAyLCA3LCA2LCAxLCAyMTUsIDk0LCAxNTYsIDcsIDQsIDEsIDIxNSwgOTQsIAorICAgIDE1NiwgNywgNiwgMSwgMjM1LCAyMTMsIDE1MywgNywgNCwgMSwgMjM1LCAyMTMsIDE1MywgNywgNiwgMSwgMjM1LCAyMTMsIAorICAgIDIyMiwgOTEsIDcsIDQsIDEsIDIzNSwgMjEzLCAyMjIsIDkxLCA3LCA2LCAxLCAyMzUsIDIxMywgMjE3LCAxNTIsIDcsIDQsIAorICAgIDEsIDIzNSwgMjEzLCAyMTcsIDE1MiwgNTgsIDEsIDEyMSwgMjUwLCAzMSwgMjU1LCAxNCwgNTgsIDEsIDI0OSwgMjI2LCA1OCwgCisgICAgMSwgMjE5LCAyNTEsIDI0NSwgOTgsIDUwLCA3LCA2LCAxLCAyMjEsIDI1NSwgNywgNCwgMSwgMjIxLCAyNTUsIDcsIDYsIDEsIAorICAgIDIxNSwgOTQsIDI0MiwgNjAsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAyMjMsIDU1LCAyNDEsIDUyLCAyMiwgMjUyLCA0MSwgNywgCisgICAgNiwgMSwgMjMwLCAyNiwgMiwgMjQ4LCAzOSwgNywgNCwgMSwgMjMwLCAyNiwgMiwgMjQ4LCAzOSwgNywgNiwgMSwgMjUxLCAKKyAgICA2NywgMiwgMTMwLCA3LCA0LCAxLCAyNTEsIDY3LCAyLCAxMzAsIDcsIDYsIDEsIDI0MywgMjAzLCAyLCAyMjYsIDI0OCwgOTEsIAorICAgIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAyMjYsIDI0OCwgOTEsIDcsIDYsIDEsIDIzNSwgMjQsIDIsIDIyNiwgMjQ4LCA5MSwgNywgCisgICAgNCwgMSwgMjM1LCAyNCwgMiwgMjI2LCAyNDgsIDkxLCA3LCA2LCAxLCAyMzAsIDI2LCAyLCAyMjYsIDI0OCwgOTEsIDcsIDQsIAorICAgIDEsIDIzMCwgMjYsIDIsIDIyNiwgMjQ4LCA5MSwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDIyNiwgMjQ4LCA5MSwgNywgNCwgMSwgCisgICAgMjIzLCAyMjQsIDIsIDIyNiwgMjQ4LCA5MSwgNywgNiwgMSwgMjIyLCA5MiwgMiwgMjI2LCAyNDgsIDkxLCA3LCA0LCAxLCAKKyAgICAyMjIsIDkyLCAyLCAyMjYsIDI0OCwgOTEsIDcsIDYsIDEsIDI0MiwgNjEsIDIsIDEwMywgNTgsIDEsIDYsIDI0MiwgNjEsIDIsIAorICAgIDkxLCA1OCwgMSwgNCwgMjcsIDIyNiwgMjM0LCA3LCAxLCA0LCA2LCAyMTUsIDk0LCAxOTMsIDcsIDI0NSwgMTAzLCAxLCAKKyAgICAyMjMsIDQ5LCAyNDUsIDYsIDcsIDI0NSwgMTAzLCAxLCAyMjMsIDQ5LCAyMjYsIDEwNSwgNywgMjQ1LCAxMDMsIDEsIDIzNSwgCisgICAgMTkzLCAxOTMsIDcsIDI0NSwgMTAzLCAxLCAyNDAsIDE1NCwgMjMyLCAxMjksIDcsIDI0NSwgMTAzLCAxLCAyNTQsIDIzLCAKKyAgICAxOTMsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgNjEsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgNzMsIDIxNywgMjMwLCAyMjksIAorICAgIDIxNCwgNSwgMjQ2LCA0OCwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCA3MCwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCA3NSwgCisgICAgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCA3NiwgMjE3LCAyMzAsIDIyOSwgMjE0LCA1LCAyNDEsIDI1MywgMjE3LCAyMzAsIAorICAgIDIyOSwgMjE0LCAxLCAyMzQsIDI4LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIzNCwgMTA1LCAyMTcsIDIzMCwgMjI5LCAKKyAgICAyMTQsIDEsIDI0MiwgMTc0LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDI0MiwgMjI0LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDUsIAorICAgIDI1NCwgNzUsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjQ5LCAyMzgsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjUwLCA4NiwgCisgICAgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyMzUsIDY4LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIzNSwgMTA5LCAyMTcsIAorICAgIDIzMCwgMjI5LCAyMTQsIDEsIDIxNSwgMTMzLCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIxNSwgMTM5LCAyMTcsIDIzMCwgCisgICAgMjI5LCAyMTQsIDEsIDI0OCwgMTA1LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDI0OCwgMTE0LCAyMTcsIDIzMCwgMjI5LCAKKyAgICAyMTQsIDEsIDExMSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyMTYsIDE1NiwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyNDcsIAorICAgIDE0NSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyNDgsIDcsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjI4LCA3NCwgMjE3LCAKKyAgICAyMzAsIDIyOSwgMjE0LCAxLCAyMjUsIDE2LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIyNSwgMTIxLCAyMTcsIDIzMCwgCisgICAgMjI5LCAyMTQsIDEsIDI1MSwgMjA1LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDI1MiwgMTAsIDIxNywgMjMwLCAyMjksIAorICAgIDIxNCwgMSwgMjMwLCAxNjEsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjIyLCAyMTEsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgCisgICAgMjMyLCAxNTYsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjIyLCAxNjUsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjE5LCAKKyAgICA1OCwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyNDEsIDY4LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDI1LCA1LCA2MSwgMjE3LCAKKyAgICAyMzAsIDIyOSwgMjE0LCAyNSwgNSwgNzMsIDIxNywgMjMwLCAyMjksIDIxNCwgMjUsIDUsIDcwLCAyMTcsIDIzMCwgMjI5LCAKKyAgICAyMTQsIDI1LCA1LCA3NSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAyNSwgNSwgMjI2LCAxODMsIDIxNywgMjMwLCAyMjksIDIxNCwgCisgICAgMjI1LCAxMiwgMjMxLCAxNTgsIDIxNywgMjMwLCAyMjksIDIxNCwgMjI1LCAxMiwgMjMxLCAxNTcsIDIxNywgMjMwLCAyMjksIAorICAgIDIxNCwgMjI1LCAxMiwgMjMxLCAxNTYsIDIxNywgMjMwLCAyMjksIDIxNCwgMjI1LCAxMiwgMjMxLCAxNTUsIDIyOCwgNTYsIAorICAgIDIzNSwgMjQwLCAyNDQsIDIsIDEyMywgMjI0LCAyMSwgMjI4LCA1NiwgMjM1LCAyNDAsIDI0NCwgMiwgMTIzLCAyNDIsIDI3LCAKKyAgICAyMjgsIDU2LCAyMzUsIDI0MCwgMjQ0LCAyLCAxMzQsIDIyNCwgMTksIDIyOCwgNTYsIDIzNSwgMjQwLCAyNDQsIDIsIDEyMywgCisgICAgMjE5LCAxMTcsIDIyOCwgNTYsIDIzNSwgMjQwLCAyNDQsIDIsIDEyMywgMjQ1LCAxODgsIDIyOCwgNTYsIDIzNSwgMjQwLCAKKyAgICAyNDQsIDIsIDEzNCwgMjE5LCAxMTYsIDIyOCwgNTYsIDIzNSwgMjQwLCAyMjQsIDIyLCA3OCwgMjI4LCA1NiwgMjM1LCAyNDAsIAorICAgIDIyNSwgNDAsIDc4LCAyMjgsIDU2LCAyMzUsIDI0MCwgMjIyLCAxMTgsIDc4LCAyMjgsIDU2LCAyMzUsIDI0MCwgMjI0LCAyMywgCisgICAgNzgsIDIyNSwgMTQ0LCAxLCAxNzYsIDIyNSwgMTQ0LCAxLCAyMzQsIDEzMiwgMjI1LCAxNDQsIDEsIDI0MywgMTM1LCAyMjUsIAorICAgIDE0NCwgMSwgMjI5LCA3NywgMjI1LCAxNDQsIDEsIDI1MSwgMzMsIDIyNSwgMTQ0LCAxLCAyNTAsIDE1NywgMjI1LCAxNDQsIAorICAgIDEsIDIzNSwgMTQxLCAyMjUsIDE0NCwgMSwgMjI3LCAxNjUsIDIyNSwgMTQ0LCAxLCAyMTcsIDEwNSwgMjI1LCAxNDQsIDEsIAorICAgIDIxNiwgMjA4LCAyMjUsIDE0NCwgMSwgMjQ4LCAyMjEsIDIyNSwgMTQ0LCAxLCAxOTcsIDIyNSwgMTQ0LCAxLCAxOTAsIDIyNSwgCisgICAgMTQ0LCAxLCAyMjUsIDE0NywgMjI1LCAxNDQsIDEsIDI1MiwgMTkxLCAyMjUsIDE0NCwgMSwgMTg0LCAyMjUsIDE0NCwgMSwgCisgICAgMjE1LCAxODMsIDIyNSwgMTQ0LCAxLCAyMTUsIDE3NSwgMjI1LCAxNDQsIDEsIDI0NiwgMzgsIDIyNSwgMTQ0LCAxLCAyMTIsIAorICAgIDY1LCAyMjUsIDE0NCwgMSwgMjEwLCA4MiwgMjI1LCAxNDQsIDEsIDIxMCwgMTE2LCAyMjUsIDE0NCwgMSwgNCwgNjEsIDIyNSwgCisgICAgMTQ0LCAxLCAxOTEsIDIyNSwgMTQ0LCAxLCAyMDUsIDIyNSwgMTQ0LCAxLCAyMzMsIDEzNSwgMjI1LCAxNDQsIDEsIDIyMCwgCisgICAgMTAyLCAyMjUsIDE0NCwgMSwgMjA2LCAyMjUsIDE0NCwgMSwgMTYyLCAyMjUsIDE0NCwgMSwgNjEsIDIyNSwgMTQ0LCAxLCAKKyAgICA3MywgMjI1LCAxNDQsIDEsIDcwLCAyMjUsIDE0NCwgMSwgNzUsIDIyNSwgMTQ0LCAxLCA3NiwgMjI1LCAxNDQsIDEsIDIyNCwgCisgICAgODgsIDIyNSwgMTQ0LCAxLCAyMTEsIDE2NSwgMjI1LCAxNDQsIDEsIDI0NCwgMTk2LCAyMjUsIDE0NCwgMSwgMjQzLCAyOSwgCisgICAgMjI1LCAxNDQsIDEsIDI0NSwgMjA5LCAyMjUsIDE0NCwgMjE4LCA3MywgMSwgMjEyLCA2NSwgMjI1LCAxNDQsIDIxOCwgNzMsIAorICAgIDEsIDE5MSwgMjI1LCAxNDQsIDEsIDIxNSwgMTU2LCAyMjUsIDE0NCwgMSwgMjE1LCAxNDQsIDIyNSwgMTQ0LCAxLCAyNDgsIAorICAgIDEzNSwgMjI1LCAxNDQsIDEsIDIyOCwgMTEwLCAyMjUsIDE0NCwgMSwgMjU0LCAxNDEsIDE5MSwgMjI1LCAxNDQsIDEsIDIxMywgCisgICAgMTM0LCAyMjAsIDEwMiwgMjI1LCAxNDQsIDEsIDIxMywgMTM1LCAxNjIsIDIyNSwgMTQ0LCAxLCAyNTMsIDIyMywgMjQ0LCAKKyAgICAxOTYsIDIyNSwgMTQ0LCAyMTgsIDczLCAxLCAyMDUsIDIyNSwgMTQ0LCAyMTgsIDI1LCAxLCAyMDUsIDIyNSwgMTQ0LCAxLCAKKyAgICAyNTAsIDI1NSwgMjI1LCAxNDQsIDIxOSwgMTU1LCAyNDEsIDIzNiwgNzgsIDIyNSwgMTQ0LCA1MiwgMjQxLCAyMzYsIDc4LCAKKyAgICAyMjUsIDE0NCwgMTY0LCAyMjAsIDk1LCAyMjUsIDE0NCwgMTY0LCA1MiwgMjIwLCA5NSwgMTc5LCA1LCAyNTQsIDc1LCAxNzksIAorICAgIDUsIDIxMywgMTQ3LCAxNzksIDEsIDYxLCAxNzksIDEsIDI1NSwgNzMsIDE3OSwgMSwgNzMsIDE3OSwgMSwgMjM2LCAzMywgCisgICAgMTc5LCAxLCA3MCwgMTc5LCAxLCAyMTQsIDExOCwgMTc5LCAxLCAxNDksIDE1MywgMTc5LCAxLCAxNDksIDIyMiwgMTgwLCAKKyAgICAxNzksIDEsIDE0OSwgMTU2LCAxNzksIDEsIDE0OSwgMjMyLCAxODUsIDE3OSwgMSwgNzUsIDE3OSwgMSwgMjQ1LCAyMDksIAorICAgIDE3OSwgMSwgMjU0LCAyMDEsIDE3OSwgMSwgNzYsIDE3OSwgMSwgMjI2LCAxODMsIDE3OSwgMSwgMjUzLCAxOTIsIDE3OSwgMSwgCisgICAgMTc2LCAxNzksIDEsIDIzNCwgMTMyLCAxNzksIDEsIDI0MywgMTM1LCAxNzksIDEsIDI0MiwgMjQ5LCAxNzksIDEsIDIyOSwgCisgICAgNzcsIDE3OSwgMSwgMjUxLCAzMywgMTc5LCAxLCAyNTAsIDE1NywgMTc5LCAxLCAyMzUsIDE0MSwgMTc5LCAxLCAyMzUsIAorICAgIDExNCwgMTc5LCAxLCAyMjcsIDE2NSwgMTc5LCAxLCAyMTUsIDE1NiwgMTc5LCAxLCAyMTUsIDE0NCwgMTc5LCAxLCAyNDgsIAorICAgIDEzNSwgMTc5LCAxLCAyNDgsIDExOSwgMTc5LCAxLCAyMjgsIDExMCwgMTc5LCAxLCAyMTcsIDEwNSwgMTc5LCAxLCAyMTYsIAorICAgIDIwOCwgMTc5LCAxLCAyNDgsIDIyMSwgMTc5LCAxLCAyNDgsIDI1LCAxNzksIDEsIDE5NywgMTc5LCAxLCAxOTAsIDE3OSwgMSwgCisgICAgMjI1LCAxNDcsIDE3OSwgMSwgMjUyLCAxOTEsIDE3OSwgMSwgMjUyLCAxOCwgMTc5LCAxLCAxODQsIDE3OSwgMSwgMTkxLCAKKyAgICAxNzksIDEsIDIwNSwgMTc5LCAxLCAyMzMsIDEzNSwgMTc5LCAxLCAyMTQsIDI3LCAxNzksIDEsIDIyMCwgMTAyLCAxNzksIDEsIAorICAgIDIxOCwgMjIzLCAxNzksIDEsIDIwNiwgMTc5LCAxLCAxNjIsIDE3OSwgMSwgMjMyLCAxODQsIDE3OSwgMTE2LCA1LCAyNDIsIAorICAgIDQ0LCAxNzksIDI1LCA1LCAyNTUsIDczLCAxNzksIDI1LCA1LCA3MywgMTc5LCAyNSwgNSwgMjM2LCAzMywgMTc5LCAyNSwgNSwgCisgICAgNzAsIDE3OSwgMjUsIDUsIDIxNCwgMTE4LCAxNzksIDI1LCA1LCAxNDksIDE1MywgMTc5LCAyNSwgNSwgMTQ5LCAyMjIsIAorICAgIDE4MCwgMTc5LCAyNSwgNSwgMTQ5LCAxNTYsIDE3OSwgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDE3OSwgMjUsIDUsIDc1LCAKKyAgICAxNzksIDI1LCA1LCAyNDUsIDIwOSwgMTc5LCAyNSwgNSwgMjU0LCAyMDEsIDE3OSwgMjUsIDUsIDc2LCAxNzksIDI1LCA1LCAKKyAgICAyMjYsIDE4MywgMTc5LCAyNSwgNSwgMjUzLCAxOTIsIDE3OSwgNSwgMjEzLCAxNTIsIDE3OSwgMjQ4LCAxNzgsIDE3OSwgNTIsIAorICAgIDI0OCwgMTc4LCAxNzksIDIxLCAyMTAsIDg2LCAxNzksIDIxLCAxMTAsIDE3OSwgMjEsIDEwNSwgMTc5LCAyMSwgMTU4LCAKKyAgICAxNzksIDIxLCAxNjEsIDE3OSwgMjEsIDE4OSwgMTc5LCAyMSwgMTk0LCAxNzksIDIxLCAxOTgsIDE3OSwgMjEsIDE5NSwgCisgICAgMTc5LCAyMSwgMjAwLCAzOCwgODQsIDIxLCAyMTAsIDg2LCAzOCwgODQsIDIxLCAxMTAsIDM4LCA4NCwgMjEsIDEwNSwgMzgsIAorICAgIDg0LCAyMSwgMTU4LCAzOCwgODQsIDIxLCAxNjEsIDM4LCA4NCwgMjEsIDE4OSwgMzgsIDg0LCAyMSwgMTk0LCAzOCwgODQsIAorICAgIDIxLCAxOTgsIDM4LCA4NCwgMjEsIDE5NSwgMzgsIDg0LCAyMSwgMjAwLCAzOCwgODQsIDEsIDYxLCAzOCwgODQsIDEsIDcwLCAKKyAgICAzOCwgODQsIDEsIDE3NiwgMzgsIDg0LCAxLCAxOTcsIDM4LCA4NCwgMSwgMTkwLCAzOCwgODQsIDEsIDIwNSwgMzgsIDg0LCAKKyAgICAxLCAyMTMsIDE3NiwgMzgsIDg0LCA1LCAyNTMsIDE3NSwgODQsIDUsIDIxOSwgMTcsIDI1MCwgMjU1LCA4NCwgNSwgMjUxLCAKKyAgICAwLCAyMTMsIDE1MiwgODQsIDUsIDUyLCAyNTEsIDAsIDIxMywgMTUyLCA4NCwgNSwgMjUxLCAwLCAxMDUsIDg0LCA1LCAyNTEsIAorICAgIDAsIDE1OCwgODQsIDUsIDI1MSwgMCwgMjUzLCAxNzUsIDg0LCA1LCAyMjQsIDEyNCwgODQsIDI0MywgMTAwLCAyNDQsIDEwMywgCisgICAgODQsIDI1MCwgMjM4LCA4NCwgMjQxLCAyMzAsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjEsIDIxMCwgODYsIDIzNCwgMTg4LCAKKyAgICAyMzIsIDI0MiwgMjEsIDExMCwgMjM0LCAxODgsIDIzMiwgMjQyLCAyMSwgMTA1LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDIxLCAKKyAgICAxNTgsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjEsIDE2MSwgMjM0LCAxODgsIDIzMiwgMjQyLCAyMSwgMTg5LCAyMzQsIDE4OCwgCisgICAgMjMyLCAyNDIsIDIxLCAxOTQsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjEsIDE5OCwgMjM0LCAxODgsIDIzMiwgMjQyLCAyMSwgCisgICAgMTk1LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDIxLCAyMDAsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMTc2LCAyMzQsIDE4OCwgCisgICAgMjMyLCAyNDIsIDEsIDIzNCwgMTMyLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDI0MywgMTM1LCAyMzQsIDE4OCwgMjMyLCAKKyAgICAyNDIsIDEsIDIyOSwgNzcsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjA2LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIyMCwgCisgICAgMTAyLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIxMCwgMTE2LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIyNywgMTY1LCAKKyAgICAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIxNywgMTA1LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDI0MCwgMjI2LCAyMzQsIAorICAgIDE4OCwgMjMyLCAyNDIsIDEsIDE5NywgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAxOTAsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgCisgICAgMjI1LCAxNDcsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMTg0LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDI0OCwgMjIxLCAKKyAgICAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDI1MiwgMTkxLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIwNSwgMjM0LCAxODgsIAorICAgIDIzMiwgMjQyLCAxLCAxOTEsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjMzLCAxMzUsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgCisgICAgMjEyLCA2NSwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMTYsIDIwOCwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAxNjIsIAorICAgIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjE0LCAyNywgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyNTEsIDMzLCAyMzQsIDE4OCwgCisgICAgMjMyLCAyNDIsIDEsIDYxLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIyNiwgMjM0LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIAorICAgIDczLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIyNiwgMTgzLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDI1LCAyMTQsIDIxNCwgCisgICAgMjM0LCAxODgsIDIzMiwgMjQyLCAyNSwgNzUsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjUsIDcwLCAyMzQsIDE4OCwgMjMyLCAKKyAgICAyNDIsIDI1LCAyNDUsIDIwOSwgMjM0LCAxODgsIDIzMiwgMjQyLCAyNSwgNzYsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMTM4LCAKKyAgICAyMjUsIDMwLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEzOCwgMjUxLCAxMiwgMjM0LCAxODgsIDIzMiwgMjQyLCAxMzgsIDI1MSwgCisgICAgMTMsIDIyNSwgMzAsIDIzNCwgMTg4LCAyMzIsIDI0MiwgNSwgMjQ5LCA3NywgMjM0LCAxODgsIDIzMiwgMjQyLCA1LCAyMTksIAorICAgIDE5OSwgMjIzLCA5MywgMSwgMTc2LCAyMjMsIDkzLCAxLCAyNDMsIDEzNSwgMjIzLCA5MywgMSwgMjI5LCA3NywgMjIzLCA5MywgCisgICAgMSwgMjE3LCAxMDUsIDIyMywgOTMsIDEsIDI0OCwgMjIxLCAyMjMsIDkzLCAxLCAxOTcsIDIyMywgOTMsIDEsIDE5MCwgMjIzLCAKKyAgICA5MywgMSwgMjUyLCAxOTEsIDIyMywgOTMsIDEsIDE4NCwgMjIzLCA5MywgMSwgMjUxLCAzMywgMjIzLCA5MywgMSwgMjM1LCAKKyAgICAxNDEsIDIyMywgOTMsIDEsIDIyNywgMTY1LCAyMjMsIDkzLCAxLCAyMDYsIDIyMywgOTMsIDEsIDIwNSwgMjIzLCA5MywgMSwgCisgICAgMjMzLCAxMzUsIDIyMywgOTMsIDEsIDE5MSwgMjIzLCA5MywgMSwgMjEyLCA2NSwgMjIzLCA5MywgMSwgMTYyLCAyMjMsIDkzLCAKKyAgICAxLCAyMzEsIDEyNCwgMjIzLCA5MywgMSwgMjI5LCA1NiwgMjIzLCA5MywgMSwgMjI5LCAxNDgsIDIyMywgOTMsIDEsIDIyNywgCisgICAgMTM1LCAyMjMsIDkzLCAxLCA2MSwgMjIzLCA5MywgMjUsIDUsIDczLCAyMjMsIDkzLCAyNSwgNSwgNzAsIDIyMywgOTMsIDI1LCAKKyAgICA1LCA3NSwgMjIzLCA5MywgMjUsIDUsIDI1NCwgMjAxLCAyMjMsIDkzLCAyNSwgNSwgNzYsIDIyMywgOTMsIDI1LCA1LCAyNTMsIAorICAgIDE5MiwgMjIzLCA5MywgMjUsIDUsIDI0NSwgNTUsIDIyMywgOTMsIDI1LCA1LCAyNDUsIDIzMywgMjIzLCA5MywgMTE2LCA1LCAKKyAgICAyMjksIDc5LCAyMjMsIDkzLCAxMTYsIDUsIDIzMCwgMjUsIDIyMywgOTMsIDExNiwgNSwgMTUzLCAyMjMsIDkzLCAxMTYsIDUsIAorICAgIDI0MiwgNjAsIDIyMywgOTMsIDIxMywgMTUyLCAyMjMsIDkzLCAyMjEsIDE3MywgNzgsIDI0LCAxMDAsIDIxNiwgOTcsIDI0LCAKKyAgICAxMDAsIDIxNiwgOTYsIDI0LCAxMDAsIDIxNiwgOTQsIDI0LCAxMDAsIDIxNiwgOTksIDI0LCAxMDAsIDIyMywgMjEsIDI0LCAKKyAgICAxMDAsIDIyMywgNSwgMjQsIDEwMCwgMjIzLCAwLCAyNCwgMTAwLCAyMjMsIDIsIDI0LCAxMDAsIDIyMywgMTgsIDI0LCAxMDAsIAorICAgIDIyMywgMTEsIDI0LCAxMDAsIDIyMywgNCwgMjQsIDEwMCwgMjIzLCAyMywgMjQsIDEwMCwgMjIzLCA2LCAyNCwgMTAwLCAKKyAgICAyMjMsIDI1LCAyNCwgMTAwLCAyMjMsIDIyLCAyNCwgMTAwLCAyMzAsIDIxMywgMjQsIDEwMCwgMjMwLCAyMDQsIDI0LCAxMDAsIAorICAgIDIzMCwgMjA3LCAyNCwgMTAwLCAyMjUsIDgwLCAyNCwgMTAwLCAyMjUsIDkxLCAyNCwgMTAwLCAyMjUsIDkyLCAyNCwgMTAwLCAKKyAgICAyMTgsIDIwNywgMjQsIDEwMCwgMjM2LCA0NiwgMjQsIDEwMCwgMjM2LCA1MywgMjQsIDEwMCwgMjE4LCAyMTgsIDI0LCAxMDAsIAorICAgIDIxOCwgMjA1LCAyNCwgMTAwLCAyMjUsIDEzMCwgMjQsIDEwMCwgMjQxLCAxNjcsIDI0LCAxMDAsIDIxOCwgMjAyLCAxNTUsIAorICAgIDUsIDIyNiwgMjcsIDE1NSwgNSwgMjUwLCAxODcsIDE1NSwgNSwgMjMzLCA2NiwgMTU1LCA1LCAyMTEsIDI0MywgMTU1LCAxLCAKKyAgICA2MSwgMTU1LCAxLCAyNDAsIDE1NCwgMjM0LCAxOTEsIDE1NSwgMSwgNzMsIDE1NSwgMSwgMjM2LCAzMywgMTU1LCAxLCA3MCwgCisgICAgMTU1LCAxLCAyMjYsIDkwLCAyNTAsIDE2MywgMTU1LCAxLCAyMjksIDc4LCAyMzMsIDI4LCAxNTUsIDEsIDIyOSwgNzgsIAorICAgIDIzMywgMjksIDIyMywgMTQyLCAxNTUsIDEsIDc1LCAxNTUsIDEsIDI1NCwgMjAxLCAxNTUsIDEsIDc2LCAxNTUsIDEsIDE3NiwgCisgICAgMTU1LCAxLCAyMzUsIDEzLCAyMjEsIDIyOCwgMTU1LCAxLCAyMzUsIDEzLCAyMzAsIDY2LCAxNTUsIDEsIDI0MywgMTM1LCAKKyAgICAxNTUsIDEsIDI0MywgMTM2LCAyMzAsIDY2LCAxNTUsIDEsIDIyOSwgNzcsIDE1NSwgMSwgMjUxLCAzMywgMTU1LCAxLCAyNTEsIAorICAgIDM0LCAyMzAsIDY2LCAxNTUsIDEsIDIzNSwgMTQxLCAxNTUsIDEsIDIyNywgMTY2LCAyMzAsIDY2LCAxNTUsIDEsIDIzNSwgCisgICAgMTQyLCAyMzEsIDIwNywgMTU1LCAxLCAyMjcsIDE2NSwgMTU1LCAxLCAyMTUsIDE1NiwgMTU1LCAxLCAyMTUsIDE1NywgMjMxLCAKKyAgICAyMDcsIDE1NSwgMSwgMjQ4LCAxMzUsIDE1NSwgMSwgMjQ4LCAxMzYsIDIzMSwgMjA3LCAxNTUsIDEsIDIyOSwgMjI5LCAyMzAsIAorICAgIDY2LCAxNTUsIDEsIDIxNywgMTA1LCAxNTUsIDEsIDIxNywgMTA2LCAyMzAsIDY2LCAxNTUsIDEsIDI0OCwgMjIxLCAxNTUsIAorICAgIDEsIDI0OCwgMjIyLCAyMzEsIDIwNywgMTU1LCAxLCAxOTcsIDE1NSwgMSwgMTkwLCAxNTUsIDEsIDIyNiwgOTAsIDIzMCwgCisgICAgNjYsIDE1NSwgMSwgMjUyLCAxOTEsIDE1NSwgMSwgMjUyLCAxOTIsIDIzMCwgNjYsIDE1NSwgMSwgMTg0LCAxNTUsIDEsIAorICAgIDE5MSwgMTU1LCAxLCAyMDUsIDE1NSwgMSwgMjIzLCAxODgsIDI1NCwgMjEwLCAxNTUsIDEsIDIzMywgMTM1LCAxNTUsIDEsIAorICAgIDIxMiwgNjUsIDE1NSwgMSwgMjIyLCAzNCwgMjMwLCA2NiwgMTU1LCAxLCAyMjIsIDM0LCAyMzEsIDIwNywgMTU1LCAxLCAKKyAgICAyMDYsIDE1NSwgMSwgMTYyLCAxNTUsIDUsIDI1MCwgMTg4LCAyMTYsIDI1MCwgMTU1LCAyNSwgNSwgMjE3LCA0NywgMTU1LCAKKyAgICAyNSwgNSwgMjE2LCAzNSwgMTU1LCAyNSwgNSwgMjExLCAxOTAsIDE1NSwgMjUsIDUsIDIxMSwgMTkxLCAyMzEsIDY5LCAxNTUsIAorICAgIDI1LCA1LCAyMTgsIDQ3LCAxNTUsIDI1LCA1LCAyMTgsIDQ4LCAyMzEsIDU3LCAxNTUsIDI1LCA1LCAyMTcsIDY1LCAxNTUsIAorICAgIDI1LCA1LCAyNDcsIDE5NCwgMjMwLCA2NSwgMTU1LCAyNSwgNSwgMjI1LCAxODQsIDE1NSwgMTE2LCA1LCAyMzQsIDE1OCwgCisgICAgMTU1LCAxMTYsIDUsIDIyNSwgMTk2LCAxNTUsIDExNiwgNSwgMjUxLCAxOSwgMTU1LCAyMjYsIDQwLCAxNTUsIDQzLCAyMjMsIAorICAgIDY5LCAxNTUsIDQ0LCAyMjMsIDY5LCAxNTUsIDIyNiwgNzksIDI1NCwgMTE3LCAxNTUsIDIyNiwgNzksIDIzMSwgMjI0LCAKKyAgICAxNTUsIDIyNiwgNzksIDIzMiwgODgsIDE1NSwgMjI2LCA3OSwgMjExLCAyMzgsIDE1NSwgMjI2LCA3OSwgMjI2LCA0MSwgCisgICAgMTU1LCAyMjYsIDc5LCAyMzIsIDIwNSwgMTU1LCAyMjYsIDc5LCAyMzIsIDgyLCAxNTUsIDIyNiwgNzksIDI1NCwgMjQ5LCAKKyAgICAxNTUsIDIyNiwgNzksIDI1NCwgMjUwLCAyNTQsIDI0OSwgMTU1LCAyMjYsIDc5LCAyMjUsIDUxLCAxNTUsIDIxNSwgOTQsIAorICAgIDIyNiwgNzksIDIyNSwgNTEsIDE1NSwgMjI2LCAzNiwgMTU1LCAyMSwgMjEwLCA4NiwgMTU1LCAyMSwgMTEwLCAxNTUsIDIxLCAKKyAgICAxMDUsIDE1NSwgMjEsIDE1OCwgMTU1LCAyMSwgMTYxLCAxNTUsIDIxLCAxODksIDE1NSwgMjEsIDE5NCwgMTU1LCAyMSwgCisgICAgMTk4LCAxNTUsIDIxLCAxOTUsIDE1NSwgMjEsIDIwMCwgMTU1LCAyMjYsIDc5LCAyMTYsIDY5LCAyMTUsIDEwNiwgMTU1LCAKKyAgICAyMjYsIDc5LCAyMzUsIDE2NywgMTcyLCAxLCA2MSwgMTcyLCAxLCA3MywgMTcyLCAxLCA3MCwgMTcyLCAxLCA3NSwgMTcyLCAKKyAgICAxLCAyNTQsIDIwMSwgMTcyLCAxLCA3NiwgMTcyLCAxLCAxNzYsIDE3MiwgMSwgMjM0LCAxMzIsIDE3MiwgMSwgMjQzLCAxMzUsIAorICAgIDE3MiwgMSwgMjQyLCAyNDksIDE3MiwgMSwgMjI4LCAyNDUsIDE3MiwgMSwgMjI5LCA3NywgMTcyLCAxLCAyNTAsIDE1NywgCisgICAgMTcyLCAxLCAyNTAsIDExMiwgMTcyLCAxLCAyMzUsIDE0MSwgMTcyLCAxLCAyMzUsIDExNCwgMTcyLCAxLCAyMjgsIDIzNSwgCisgICAgMTcyLCAxLCAyMjgsIDIzNywgMTcyLCAxLCAyMjgsIDIzNiwgMTcyLCAxLCAyMTcsIDEwNSwgMTcyLCAxLCAyMTYsIDIwOCwgCisgICAgMTcyLCAxLCAyNDgsIDIyMSwgMTcyLCAxLCAyNDgsIDI1LCAxNzIsIDEsIDIyNywgMjA3LCAxNzIsIDEsIDE5NywgMTcyLCAxLCAKKyAgICAyNDgsIDEzNSwgMTcyLCAxLCAxOTAsIDE3MiwgMSwgMjI0LCAyMjAsIDE3MiwgMSwgMjI1LCAxNDcsIDE3MiwgMSwgMjUyLCAKKyAgICAxOTEsIDE3MiwgMSwgMjUyLCAxOCwgMTcyLCAxLCAyMzAsIDk1LCAxNzIsIDEsIDE4NCwgMTcyLCAxLCAyNTIsIDExMSwgCisgICAgMTcyLCAxLCAxOTEsIDE3MiwgMSwgMjA1LCAxNzIsIDEsIDIzMywgMTM1LCAxNzIsIDEsIDIxNCwgMjcsIDE3MiwgMSwgMjE4LCAKKyAgICAyMjMsIDE3MiwgMSwgMjA2LCAxNzIsIDEsIDE2MiwgMTcyLCAyNSwgNSwgMjU1LCA3MywgMTcyLCAyNSwgNSwgNzMsIDE3MiwgCisgICAgMjUsIDUsIDIzNiwgMzMsIDE3MiwgMjUsIDUsIDI0NSwgMTk1LCAxNzIsIDI1LCA1LCA3MCwgMTcyLCAyNSwgNSwgMjI2LCAKKyAgICAyMzQsIDE3MiwgMjUsIDUsIDc2LCAxNzIsIDI1LCA1LCAyNTQsIDIwMSwgMTcyLCAyNSwgNSwgMjUzLCAxOTIsIDE3MiwgMjUsIAorICAgIDUsIDIxNCwgMjE0LCAxNzIsIDExNiwgNSwgMTkxLCAxNzIsIDExNiwgNSwgMjA1LCAxNzIsIDExNiwgNSwgMjMzLCAxMzUsIAorICAgIDE3MiwgMTE2LCA1LCAyMTIsIDY1LCAxNzIsIDEsIDQwLCAyMzUsIDIzLCAxNzIsIDEsIDQwLCAyNDMsIDIwMiwgMTcyLCAxLCAKKyAgICA0MCwgMjI5LCA3OSwgMTcyLCAxMTYsIDUsIDQwLCAyMjksIDc5LCAxNzIsIDEsIDQwLCAyNTAsIDE1OCwgMTcyLCAxLCA0MCwgCisgICAgMjE3LCAxNTIsIDE3MiwgMSwgNDAsIDIzMCwgMjUsIDE3MiwgMSwgNDAsIDIyNiwgMTA1LCAxNzIsIDEsIDQwLCAyMTEsIAorICAgIDExNywgMTcyLCAxLCA0MCwgMTUzLCAxNzIsIDEsIDQwLCAxNTYsIDE3MiwgMSwgNDAsIDIxOCwgMjI2LCAxNzIsIDExNiwgNSwgCisgICAgNDAsIDE5MywgMTcyLCAxMTYsIDUsIDQwLCAyNDIsIDYwLCAxNzIsIDIxLCAyMTAsIDg2LCAxNzIsIDIxLCAxMTAsIDE3MiwgCisgICAgMjEsIDEwNSwgMTcyLCAyMSwgMTU4LCAxNzIsIDIxLCAxNjEsIDE3MiwgMjEsIDE4OSwgMTcyLCAyMSwgMTk0LCAxNzIsIDIxLCAKKyAgICAxOTgsIDE3MiwgMjEsIDE5NSwgMTcyLCAyMSwgMjAwLCAxNzIsIDIyNCwgMTQxLCAyMTgsIDI1MSwgMTcyLCAyMjQsIDE0MSwgCisgICAgMjQ4LCAxNzgsIDE3MiwgMjI0LCAxNDEsIDUyLCAyNDgsIDE3OCwgMTcyLCAyMjQsIDE0MSwgMjE1LCAyMTEsIDI0OCwgMTc4LCAKKyAgICA2OCwgMSwgMjM0LCAxMjYsIDI0MywgMTM1LCA2OCwgMSwgMjM0LCAxMjYsIDI1MSwgMzMsIDY4LCAxLCAyMzQsIDEyNiwgCisgICAgMjUwLCAxNTcsIDY4LCAxLCAyMzQsIDEyNiwgMjM1LCAxNDEsIDY4LCAxLCAyMzQsIDEyNiwgMjM1LCAxMTQsIDY4LCAxLCAKKyAgICAyMzQsIDEyNiwgMjI3LCAxNjUsIDY4LCAxLCAyMzQsIDEyNiwgMjE1LCAxNTYsIDY4LCAxLCAyMzQsIDEyNiwgMjE1LCAxNDQsIAorICAgIDY4LCAxLCAyMzQsIDEyNiwgMjQ4LCAxMzUsIDY4LCAxLCAyMzQsIDEyNiwgMjQ4LCAxMTksIDY4LCAxLCAyMzQsIDEyNiwgCisgICAgMjQ4LCAyNSwgNjgsIDEsIDIzNCwgMTI2LCAxOTcsIDY4LCAxLCAyMzQsIDEyNiwgMjA2LCA2OCwgMSwgMjM0LCAxMjYsIAorICAgIDE2MiwgNjgsIDEsIDIzNCwgMTI2LCAyNDEsIDE4OSwgNjgsIDEsIDIzNCwgMTI2LCAyNDQsIDE5NiwgNjgsIDU4LCAxLCAKKyAgICAyMzQsIDEyNiwgMjIzLCAxMDksIDY4LCAxLCAyMzQsIDEyNiwgMjExLCAxNjUsIDY4LCAxLCAyMzQsIDEyNiwgMjEwLCAxMTYsIAorICAgIDY4LCAxLCAyMzQsIDEyNiwgMjA1LCA2OCwgMjMyLCAxNDUsIDIzNCwgMTI2LCAyMjYsIDI1MywgNjgsIDIzMiwgMTQ1LCAKKyAgICAyMzQsIDEyNiwgMjI0LCA0MywgNjgsIDIzMiwgMTQ1LCAyMzQsIDEyNiwgMjQxLCAxMjEsIDY4LCAxNiwgMjU0LCAxOTAsIAorICAgIDI0NSwgMzAsIDY4LCAxNiwgMjU0LCAxOTAsIDExMCwgNjgsIDE2LCAyNTQsIDE5MCwgMTA1LCA2OCwgMSwgMjU0LCAxOTAsIAorICAgIDIwNSwgNjgsIDUsIDIyNiwgMjMsIDIzNCwgMjEzLCAyMTYsIDMwLCAzOSwgMjA4LCAxLCAxMjEsIDIzNCwgMjgsIDM5LCAKKyAgICAyMDgsIDEsIDEyNSwgMjM0LCAyOCwgMzksIDIwOCwgMSwgMTIxLCAyMzQsIDEwNSwgMzksIDIwOCwgMSwgMTI1LCAyMzQsIAorICAgIDEwNSwgMzksIDIwOCwgMSwgMTIxLCAyMzQsIDExNCwgMzksIDIwOCwgMSwgMTI1LCAyMzQsIDExNCwgMzksIDIwOCwgMSwgCisgICAgMTIxLCAyNDIsIDE3NCwgMzksIDIwOCwgMSwgMTI1LCAyNDIsIDE3NCwgMzksIDIwOCwgMSwgMTIxLCAyMjksIDQsIDM5LCAKKyAgICAyMDgsIDEsIDEyNSwgMjI5LCA0LCAzOSwgMjA4LCAxLCAxMjEsIDI0OSwgMjM4LCAzOSwgMjA4LCAxLCAxMjUsIDI0OSwgCisgICAgMjM4LCAzOSwgMjA4LCAxLCAxMjEsIDI1MCwgODYsIDM5LCAyMDgsIDEsIDEyNSwgMjUwLCA4NiwgMzksIDIwOCwgMSwgMTIxLCAKKyAgICAyMTksIDU4LCAzOSwgMjA4LCAxLCAxMjUsIDIxOSwgNTgsIDM5LCAyMDgsIDEsIDEyMSwgMjI3LCAxMzQsIDM5LCAyMDgsIDEsIAorICAgIDEyNSwgMjI3LCAxMzQsIDM5LCAyMDgsIDEsIDEyMSwgMjQ3LCAxNDUsIDM5LCAyMDgsIDEsIDEyNSwgMjQ3LCAxNDUsIDM5LCAKKyAgICAyMDgsIDEsIDEyMSwgMTExLCAzOSwgMjA4LCAxLCAxMjUsIDExMSwgMzksIDIwOCwgMSwgMTIxLCAyMTYsIDE1NiwgMzksIAorICAgIDIwOCwgMSwgMTI1LCAyMTYsIDE1NiwgMzksIDIwOCwgMSwgMTIxLCAyMjgsIDc0LCAzOSwgMjA4LCAxLCAxMjUsIDIyOCwgCisgICAgNzQsIDM5LCAyMDgsIDEsIDEyMSwgMjUxLCAyMDUsIDM5LCAyMDgsIDEsIDEyNSwgMjUxLCAyMDUsIDM5LCAyMDgsIDEsIAorICAgIDEyMSwgMjI1LCAxNiwgMzksIDIwOCwgMSwgMTI1LCAyMjUsIDE2LCAzOSwgMjA4LCAxLCAxMjEsIDIyNSwgMTIxLCAzOSwgCisgICAgMjA4LCAxLCAxMjUsIDIyNSwgMTIxLCAzOSwgMjA4LCAxLCAxMjEsIDI0NCwgNDMsIDM5LCAyMDgsIDEsIDEyNSwgMjQ0LCAKKyAgICA0MywgMzksIDIwOCwgMSwgMTIxLCAyMzAsIDE2MSwgMzksIDIwOCwgMSwgMTI1LCAyMzAsIDE2MSwgMzksIDIwOCwgMSwgCisgICAgMTIxLCAyMTAsIDI0NCwgMzksIDIwOCwgMSwgMTI1LCAyMTAsIDI0NCwgMzksIDIwOCwgMSwgMTIxLCAyMjIsIDIxMSwgMzksIAorICAgIDIwOCwgMSwgMTI1LCAyMjIsIDIxMSwgMzksIDIwOCwgMSwgMTIxLCAyMzIsIDE1NiwgMzksIDIwOCwgMSwgMTI1LCAyMzIsIAorICAgIDE1NiwgMzksIDIwOCwgMSwgMTIxLCAyMTMsIDEzOCwgMzksIDIwOCwgMSwgMTI1LCAyMTMsIDEzOCwgMzksIDIwOCwgMSwgCisgICAgMTIxLCAyNDEsIDY4LCAzOSwgMjA4LCAxLCAxMjUsIDI0MSwgNjgsIDM5LCAyMDgsIDEsIDEyMSwgNzYsIDM5LCAyMDgsIDEsIAorICAgIDEyNSwgNzYsIDM5LCAyMDgsIDIzMSwgMjA0LCAyMzQsIDIzMCwgMzksIDIwOCwgMjUsIDI1NSwgNzMsIDM5LCAyMDgsIDI1LCAKKyAgICA3MywgMzksIDIwOCwgMjUsIDIxNCwgMjE0LCAzOSwgMjA4LCAyNSwgNzAsIDM5LCAyMDgsIDI1LCA3NSwgMzksIDIwOCwgMjUsIAorICAgIDc2LCAzOSwgMjA4LCAyMzEsIDIwNCwgMjM0LCAxMDgsIDM5LCAyMDgsIDI1LCAyNDAsIDExOSwgMzksIDIwOCwgMjUsIDIxNCwgCisgICAgMjEzLCAzOSwgMjA4LCAyNSwgMjE0LCAyMjksIDM5LCAyMDgsIDI1LCAyNTMsIDE5MCwgMzksIDIwOCwgMjUsIDI1MywgMTY3LCAKKyAgICAzOSwgMjA4LCAyNSwgMjU0LCAxMjMsIDM5LCAyMDgsIDI1LCAyNTQsIDEzNiwgMzksIDIwOCwgMTM4LCAyMzEsIDIwNCwgCisgICAgMjQ1LCAxODAsIDM5LCAyMDgsIDEzOCwgMjMxLCAyMDQsIDIyNywgMjA2LCAzOSwgMjA4LCAxMzgsIDIzMSwgMjA0LCAyMTYsIAorICAgIDE1NiwgMzksIDIwOCwgMTM4LCAyMzEsIDIwNCwgMjE5LCA0MiwgMzksIDIwOCwgMTYsIDIzNCwgMTMsIDM5LCAyMDgsIDE2LCAKKyAgICAyMjcsIDIwNiwgMzksIDIwOCwgMTYsIDIyMSwgMjUzLCAzOSwgMjA4LCAxNiwgMjQxLCA2OSwgMjQxLCA2NCwgMzksIDIwOCwgCisgICAgMTYsIDIzNCwgMjIsIDIzNCwgMjEsIDE4NiwgMTg1LCAxLCA3NSwgMTg2LCAxODUsIDEsIDc2LCAxODYsIDE4NSwgMSwgMjUwLCAKKyAgICAxNTcsIDE4NiwgMTg1LCAxLCAyMjcsIDE2NSwgMTg2LCAxODUsIDEsIDIxNSwgMTU2LCAxODYsIDE4NSwgMSwgMjE1LCAxNDQsIAorICAgIDE4NiwgMTg1LCAxLCAyNDgsIDEzNSwgMTg2LCAxODUsIDEsIDI0OCwgMTE5LCAxODYsIDE4NSwgMSwgMjI4LCAxMTAsIDE4NiwgCisgICAgMTg1LCAxLCAyMjAsIDEwMiwgMTg2LCAxODUsIDEsIDIxOCwgMjIzLCAxODYsIDE4NSwgMjUsIDUsIDIzNiwgMzMsIDE4NiwgCisgICAgMTg1LCAyNSwgNSwgMjE0LCAxMTgsIDE4NiwgMTg1LCAyNSwgNSwgMjU1LCAzNywgMTg2LCAxODUsIDI1LCA1LCAyNTMsIAorICAgIDE5MiwgMTg2LCAxODUsIDI1LCA1LCAyNTUsIDMwLCAxODYsIDE4NSwgMjUwLCAxMjUsIDE4NiwgMTg1LCAyNTQsIDIwNiwgCisgICAgMjM0LCA5OCwgMTg2LCAxODUsIDI1NCwgMTAzLCAxODYsIDE4NSwgMywgMjIzLCA3NCwgNzgsIDE4NiwgMTg1LCAyMTEsIAorICAgIDIwOSwgMjIzLCA3NCwgNzgsIDE4NiwgMTg1LCAyNSwgNSwgMjEzLCAxNDcsIDE4NiwgMTg1LCAyMTMsIDE1MiwgMjksIDMsIAorICAgIDIxNSwgMTM3LCAyOSwgMywgMjE1LCAxNDAsIDI5LCAzLCAyMTUsIDE0MywgMjksIDMsIDIxNSwgMTQxLCAyOSwgMywgMjE1LCAKKyAgICAxNDIsIDI5LCAzLCAyMTUsIDEzOSwgMjksIDMsIDI0OCwgMTEzLCAyOSwgMywgMjQ4LCAxMTUsIDI5LCAzLCAyNDgsIDExOCwgCisgICAgMjksIDMsIDI0OCwgMTE2LCAyOSwgMywgMjQ4LCAxMTcsIDI5LCAzLCAyNDgsIDExNCwgMjksIDMsIDI0NiwgMjgsIDI5LCAzLCAKKyAgICAyNDYsIDMxLCAyOSwgMywgMjQ2LCAzNywgMjksIDMsIDI0NiwgMzUsIDI5LCAzLCAyNDYsIDM2LCAyOSwgMywgMjQ2LCAyOSwgCisgICAgMjksIDMsIDI1MCwgMjA0LCAyOSwgMywgMjUwLCAxOTgsIDI5LCAzLCAyNTAsIDIwMCwgMjksIDMsIDI1MCwgMjAzLCAyOSwgCisgICAgMywgMjUwLCAyMDEsIDI5LCAzLCAyNTAsIDIwMiwgMjksIDMsIDI1MCwgMTk5LCAyOSwgMywgMjUyLCAxMTEsIDI5LCAzLCAKKyAgICAyNTIsIDkwLCAyOSwgMywgMjUyLCAxMDIsIDI5LCAzLCAyNTIsIDExMCwgMjksIDMsIDI1MiwgMTA1LCAyOSwgMywgMjUyLCAKKyAgICAxMDYsIDI5LCAzLCAyNTIsIDk0LCAxODYsIDE4NSwgMSwgMjM0LCAxOSwgMTg2LCAxODUsIDEsIDIyMSwgMjUzLCAxODYsIAorICAgIDE4NSwgMSwgMjMzLCAxMDksIDE4NiwgMTg1LCAxLCAyMzAsIDE3MiwgMTg2LCAxODUsIDEsIDE5MCwgMTg2LCAxODUsIDEsIAorICAgIDE5NywgMTg2LCAxODUsIDEsIDI1MCwgMTAyLCAxODYsIDE4NSwgMSwgMjE2LCA5MCwgMTg2LCAxODUsIDEsIDIzNCwgMTAxLCAKKyAgICAxODYsIDE4NSwgMSwgMjI4LCAyNTAsIDE4NiwgMTg1LCAxLCAyMTYsIDE1MCwgMTg2LCAxODUsIDEsIDIxMiwgNjAsIDE4NiwgCisgICAgMTg1LCAxLCAyMTEsIDY5LCAxODYsIDE4NSwgMSwgMjQwLCAyMTYsIDE4NiwgMTg1LCAxLCAyMTQsIDE5MCwgMTg2LCAxODUsIAorICAgIDEsIDczLCAxODYsIDE4NSwgMSwgMjI1LCAxNDIsIDE4NiwgMTg1LCAxLCAyNTMsIDIwMiwgMTg2LCAxODUsIDEsIDI0MiwgCisgICAgMTY3LCAxODYsIDE4NSwgMSwgMjM1LCAxMTIsIDE4NiwgMTg1LCAxLCAyMjMsIDE2NiwgMTg2LCAxODUsIDEsIDI1MiwgMTkxLCAKKyAgICAxODYsIDE4NSwgMSwgMjM1LCAxMDAsIDE4NiwgMTg1LCAxLCAyNDcsIDIxOSwgMTg2LCAxODUsIDEsIDI0MiwgMjIxLCAxODYsIAorICAgIDE4NSwgMSwgMjQ4LCA1LCAxODYsIDE4NSwgMSwgMjUyLCAxNiwgMTg2LCAxODUsIDEsIDIzNCwgMjAsIDIzMiwgMTI4LCAKKyAgICAxODYsIDE4NSwgMSwgMjMzLCAxMTAsIDIzMiwgMTI4LCAxODYsIDE4NSwgMSwgMjMwLCAxNzMsIDIzMiwgMTI4LCAxODYsIAorICAgIDE4NSwgMSwgMjI2LCA5MCwgMjMyLCAxMjgsIDE4NiwgMTg1LCAxLCAyMjksIDIyOSwgMjMyLCAxMjgsIDE4NiwgMTg1LCAxLCAKKyAgICAyMTYsIDkxLCAyMzIsIDEyOCwgMTg2LCAxODUsIDEsIDIyOCwgMjUxLCAyMzIsIDEyOCwgMTg2LCAxODUsIDEsIDI0MCwgCisgICAgMTU0LCAyMzIsIDEyOCwgMTg2LCAxODUsIDI1LCA1LCAyMjYsIDE5NSwgMTg2LCAxODUsIDI1LCA1LCAyMzUsIDI1MywgMTg2LCAKKyAgICAxODUsIDI1LCA1LCAyNTQsIDEyMiwgMTg2LCAxODUsIDI1LCA1LCAyMTEsIDM4LCAxODYsIDE4NSwgMjUsIDUsIDIxOSwgMzIsIAorICAgIDE4NiwgMTg1LCAyNSwgNSwgMjE0LCAxODcsIDE4NiwgMTg1LCAyNSwgNSwgMjUwLCAxMjMsIDE4NiwgMTg1LCAyNSwgNSwgCisgICAgMjI3LCAxOTEsIDE4NiwgMTg1LCAyNTAsIDEyNCwgMTg2LCAxODUsIDIzMiwgODUsIDIzNSwgMTUwLCAxODYsIDE4NSwgMjU0LCAKKyAgICA0NiwgMjM1LCAxNTAsIDE4NiwgMTg1LCAyMSwgMjEwLCA4NiwgMTg2LCAxODUsIDIxLCAxMTAsIDE4NiwgMTg1LCAyMSwgCisgICAgMTA1LCAxODYsIDE4NSwgMjEsIDE1OCwgMTg2LCAxODUsIDIxLCAxNjEsIDE4NiwgMTg1LCAyMSwgMTg5LCAxODYsIDE4NSwgCisgICAgMjEsIDE5NCwgMTg2LCAxODUsIDIxLCAxOTgsIDE4NiwgMTg1LCAyMSwgMTk1LCAxODYsIDE4NSwgMjEsIDIwMCwgMjQsIAorICAgIDE0MywgMjI3LCA3NywgMjQsIDE0MywgMjI3LCA4MiwgMjQsIDE0MywgMjEwLCAyNDMsIDI0LCAxNDMsIDIxMCwgMjQyLCAyNCwgCisgICAgMTQzLCAyMTAsIDI0MSwgMjQsIDE0MywgMjE1LCAyMywgMjQsIDE0MywgMjE1LCAyNiwgMjQsIDE0MywgMjEwLCAyMTAsIDI0LCAKKyAgICAxNDMsIDIxMCwgMjA2LCAyNCwgMTQzLCAyNDUsIDU0LCAyNCwgMTQzLCAyNDUsIDUyLCAyNCwgMTQzLCAyNDUsIDUzLCAyNCwgCisgICAgMTQzLCAyNDUsIDUwLCAyNCwgMTQzLCAyNDAsIDE0NCwgMjQsIDE0MywgMjQwLCAxNDMsIDI0LCAxNDMsIDI0MCwgMTQxLCAKKyAgICAyNCwgMTQzLCAyNDAsIDE0MiwgMjQsIDE0MywgMjQwLCAxNDcsIDI0LCAxNDMsIDI0MCwgMTQwLCAyNCwgMTQzLCAyNDAsIAorICAgIDEzOSwgMjQsIDE0MywgMjQwLCAxNDksIDI0LCAxNDMsIDI1NCwgMzMsIDI0LCAxNDMsIDI1NCwgMzIsIDI0LCA5MCwgMjI4LCAKKyAgICAyMTksIDI0LCA5MCwgMjI4LCAyMjUsIDI0LCA5MCwgMjE4LCAyMDQsIDI0LCA5MCwgMjE4LCAyMDMsIDI0LCA5MCwgMjE2LCAKKyAgICA5NiwgMjQsIDkwLCAyMTYsIDk0LCAyNCwgOTAsIDIxNiwgOTMsIDI0LCA5MCwgMjE2LCA5OSwgMjQsIDkwLCAyMTYsIDEwMCwgCisgICAgMjQsIDkwLCAyMTYsIDkyLCAyNCwgOTAsIDIyMywgNSwgMjQsIDkwLCAyMjMsIDIwLCAyNCwgOTAsIDIxOCwgMjEwLCAyNCwgCisgICAgOTAsIDIyMywgMTcsIDI0LCA5MCwgMjIzLCA3LCAyNCwgOTAsIDIyMywgOSwgMjQsIDkwLCAyMjIsIDI1MiwgMjQsIDkwLCAKKyAgICAyMjIsIDI1MywgMjQsIDkwLCAyMzQsIDIxOCwgMjQsIDkwLCAyMzAsIDIxMiwgMjQsIDkwLCAyMzAsIDIwNiwgMjQsIDkwLCAKKyAgICAyMTgsIDIxNCwgMjQsIDkwLCAyMzAsIDIwOSwgMjQsIDkwLCAyMzAsIDIxNSwgMjQsIDkwLCAyMjUsIDc2LCAyNCwgOTAsIAorICAgIDIyNSwgODUsIDI0LCA5MCwgMjI1LCA4OSwgMjQsIDkwLCAyMTgsIDIxMiwgMjQsIDkwLCAyMjUsIDc5LCAyNCwgOTAsIDIyNSwgCisgICAgOTMsIDI0LCA5MCwgMjI1LCA5NCwgMjQsIDkwLCAyMTksIDE0MCwgMjQsIDkwLCAyMTksIDE0MywgMjQsIDkwLCAyMTgsIAorICAgIDIwOCwgMjQsIDkwLCAyMTgsIDIwNiwgMjQsIDkwLCAyMTksIDEzOCwgMjQsIDkwLCAyMTksIDE0NiwgMjQsIDkwLCAyMTksIAorICAgIDE0NywgMjQsIDkwLCAyMTksIDEzMiwgMjQsIDkwLCAyMTksIDE0NSwgMjQsIDkwLCAyMjYsIDMwLCAyNCwgOTAsIDIyNiwgCisgICAgMzEsIDI0LCA5MCwgMjExLCAyNCwgMjQsIDkwLCAyMTEsIDI1LCAyNCwgOTAsIDI1MCwgNDQsIDI0LCA5MCwgMjUwLCA0MywgCisgICAgMjQsIDkwLCAyMTgsIDIxOSwgMjQsIDkwLCAyMjUsIDEyOCwgMjQsIDkwLCAyMjUsIDEyNywgOSwgMTQsIDIzOCwgMjQsIDksIAorICAgIDE0LCAyMzgsIDIzLCA5LCAxNCwgMjM4LCAyMiwgOSwgMTQsIDIzOCwgMjEsIDksIDE0LCAyMzgsIDIwLCA5LCAxNCwgMjM4LCAKKyAgICAxOSwgOSwgMTQsIDIzOCwgMTgsIDksIDE0LCAyMzgsIDE3LCA5LCAxNCwgMjM4LCAxNiwgOSwgMTQsIDIzOCwgMTUsIDksIAorICAgIDE0LCAyMzgsIDE0LCA5LCAxNCwgMjM4LCAxMywgOSwgMTQsIDIzOCwgMTIsIDksIDE0LCAyMzgsIDExLCA5LCAxNCwgMjM4LCAKKyAgICAxMCwgOSwgMTQsIDIzOCwgOSwgOSwgMTQsIDIzOCwgOCwgOSwgMTQsIDIzOCwgNywgOSwgMTQsIDIzOCwgNiwgOSwgMTQsIAorICAgIDIzOCwgNSwgOSwgMTQsIDIzOCwgNCwgOSwgMTQsIDIzOCwgMywgOSwgMTQsIDIzOCwgMiwgOSwgMTQsIDIzOCwgMSwgOSwgCisgICAgMTQsIDIzOCwgMCwgOSwgMTQsIDIzNywgMjU1LCA5LCAxNCwgMjM3LCAyNTQsIDksIDE0LCAyMzcsIDI1MywgOSwgMTQsIAorICAgIDIzNywgMjUyLCA5LCAxNCwgMjM3LCAyNTEsIDksIDE0LCAyMzcsIDI1MCwgOSwgMTQsIDIzNywgMjQ5LCA5LCAxNCwgMjM3LCAKKyAgICAyNDgsIDksIDE0LCAyMzcsIDI0NywgOSwgMTQsIDIzNywgMjQ2LCA5LCAxNCwgMjM3LCAyNDUsIDksIDE0LCAyMzcsIDI0NCwgCisgICAgOSwgMTQsIDIzNywgMjQzLCA5LCAxNCwgMjM3LCAyNDIsIDksIDE0LCAyMzcsIDI0MSwgOSwgMTQsIDIzNywgMjQwLCA5LCAKKyAgICAxNCwgMjM3LCAyMzksIDksIDE0LCAyMzcsIDIzOCwgOSwgMTQsIDIzNywgMjM3LCA5LCAxNCwgMjM3LCAyMzYsIDksIDE0LCAKKyAgICAyMzcsIDIzNSwgOSwgMTQsIDIzNywgMjM0LCA5LCAxNCwgMjM3LCAyMzMsIDksIDE0LCAyMzcsIDIzMiwgOSwgMTQsIDIzNywgCisgICAgMjMxLCA5LCAxNCwgMjM3LCAyMzAsIDksIDE0LCAyMzcsIDIyOSwgOSwgMTQsIDIzNywgMjI4LCA5LCAxNCwgMjM3LCAyMjcsIAorICAgIDksIDE0LCAyMzcsIDIyNiwgOSwgMTQsIDIzNywgMjI1LCA5LCAxNCwgMjM3LCAyMjQsIDksIDE0LCAyMzcsIDIyMywgOSwgCisgICAgMTQsIDIzNywgMjIyLCA5LCAxNCwgMjM3LCAyMjEsIDksIDE0LCAyMzcsIDIyMCwgOSwgMTQsIDIzNywgMjE5LCA5LCAxNCwgCisgICAgMjM3LCAyMTgsIDksIDE0LCAyMzcsIDIxNywgOSwgMTQsIDIzNywgMjE2LCA5LCAxNCwgMjM3LCAyMTUsIDksIDE0LCAyMzcsIAorICAgIDIxNCwgOSwgMTQsIDIzNywgMjEzLCA5LCAxNCwgMjM3LCAyMTIsIDksIDE0LCAyMzcsIDIxMSwgOSwgMTQsIDIzNywgMjEwLCAKKyAgICA5LCAxNCwgMjM3LCAyMDksIDksIDE0LCAyMzcsIDIwOCwgOSwgMTQsIDIzNywgMjA3LCA5LCAxNCwgMjM3LCAyMDYsIDksIAorICAgIDE0LCAyMzcsIDIwNSwgOSwgMTQsIDIzNywgMjA0LCA5LCAxNCwgMjM3LCAyMDMsIDksIDE0LCAyMzcsIDIwMiwgOSwgMTQsIAorICAgIDIzNywgMjAxLCA5LCAxNCwgMjM3LCAyMDAsIDksIDE0LCAyMzcsIDE5OSwgOSwgMTQsIDIzNywgMTk4LCA5LCAxNCwgMjM3LCAKKyAgICAxOTcsIDksIDE0LCAyMzcsIDE5NiwgOSwgMTQsIDIzNywgMTk1LCA5LCAxNCwgMjM3LCAxOTQsIDksIDE0LCAyMzcsIDE5MywgCisgICAgOSwgMTQsIDIzNywgMTkyLCA5LCAxNCwgMjM3LCAxOTEsIDksIDE0LCAyMzcsIDE5MCwgOSwgMTQsIDIzNywgMTg5LCA5LCAKKyAgICAxNCwgMjM3LCAxODgsIDksIDE0LCAyMzcsIDE4NywgOSwgMTQsIDIzNywgMTg2LCA5LCAxNCwgMjM3LCAxODUsIDksIDE0LCAKKyAgICAyMzcsIDE4NCwgOSwgMTQsIDIzNywgMTgzLCA5LCAxNCwgMjM3LCAxODIsIDksIDE0LCAyMzcsIDE4MSwgOSwgMTQsIDIzNywgCisgICAgMTgwLCA5LCAxNCwgMjM3LCAxNzksIDksIDE0LCAyMzcsIDE3OCwgOSwgMTQsIDIzNywgMTc3LCA5LCAxNCwgMjM3LCAxNzYsIAorICAgIDksIDE0LCAyMzcsIDE3NSwgOSwgMTQsIDIzNywgMTc0LCA5LCAxNCwgMjM3LCAxNzMsIDksIDE0LCAyMzcsIDE3MiwgOSwgCisgICAgMTQsIDIzNywgMTcxLCA5LCAxNCwgMjM3LCAxNzAsIDksIDE0LCAyMzcsIDE2OSwgOSwgMTQsIDIzNywgMTY4LCA5LCAxNCwgCisgICAgMjM3LCAxNjcsIDksIDE0LCAyMzcsIDE2NiwgOSwgMTQsIDIzNywgMTY1LCA5LCAxNCwgMjM3LCAxNjQsIDksIDE0LCAyMzcsIAorICAgIDE2MywgOSwgMTQsIDIzNywgMTYyLCA5LCAxNCwgMjM3LCAxNjEsIDksIDE0LCAyMzcsIDE2MCwgOSwgMTQsIDIzNywgMTU5LCAKKyAgICA5LCAxNCwgMjM3LCAxNTgsIDksIDE0LCAyMzcsIDE1NywgOSwgMTQsIDIzNywgMTU2LCA5LCAxNCwgMjM3LCAxNTUsIDksIAorICAgIDE0LCAyMzcsIDE1NCwgOSwgMTQsIDIzNywgMTUzLCA5LCAxNCwgMjM3LCAxNTIsIDksIDE0LCAyMzcsIDE1MSwgOSwgMTQsIAorICAgIDIzNywgMTUwLCA5LCAxNCwgMjM3LCAxNDksIDksIDE0LCAyMzcsIDE0OCwgOSwgMTQsIDIzNywgMTQ3LCA5LCAxNCwgMjM3LCAKKyAgICAxNDYsIDksIDE0LCAyMzcsIDE0NSwgOSwgMTQsIDIzNywgMTQ0LCA5LCAxNCwgMjM3LCAxNDMsIDksIDE0LCAyMzcsIDE0MiwgCisgICAgOSwgMTQsIDIzNywgMTQxLCA5LCAxNCwgMjM3LCAxNDAsIDksIDE0LCAyMzcsIDEzOSwgOSwgMTQsIDIzNywgMTM4LCA5LCAKKyAgICAxNCwgMjM3LCAxMzcsIDksIDE0LCAyMzcsIDEzNiwgOSwgMTQsIDIzNywgMTM1LCA5LCAxNCwgMjM3LCAxMzQsIDksIDE0LCAKKyAgICAyMzcsIDEzMywgOSwgMTQsIDIzNywgMTMyLCA5LCAxNCwgMjM3LCAxMzEsIDksIDE0LCAyMzcsIDEzMCwgOSwgMTQsIDIzNywgCisgICAgMTI5LCA5LCAxNCwgMjM3LCAxMjgsIDksIDE0LCAyMzcsIDEyNywgOSwgMTQsIDIzNywgMTI2LCA5LCAxNCwgMjM3LCAxMjUsIAorICAgIDksIDE0LCAyMzcsIDEyNCwgOSwgMTQsIDIzNywgMTIzLCA5LCAxNCwgMjM3LCAxMjIsIDksIDE0LCAyMzcsIDEyMSwgOSwgCisgICAgMTQsIDIzNywgMTIwLCA5LCAxNCwgMjM3LCAxMTksIDksIDE0LCAyMzcsIDExOCwgOSwgMTQsIDIzNywgMTE3LCA5LCAxNCwgCisgICAgMjM3LCAxMTYsIDksIDE0LCAyMzcsIDExNSwgOSwgMTQsIDIzNywgMTE0LCA5LCAxNCwgMjM3LCAxMTMsIDksIDE0LCAyMzcsIAorICAgIDExMiwgOSwgMTQsIDIzNywgMTExLCA5LCAxNCwgMjM3LCAxMTAsIDksIDE0LCAyMzcsIDEwOSwgOSwgMTQsIDIzNywgMTA4LCAKKyAgICA5LCAxNCwgMjM3LCAxMDcsIDksIDE0LCAyMzcsIDEwNiwgOSwgMTQsIDIzNywgMTA1LCA5LCAxNCwgMjM3LCAxMDQsIDksIAorICAgIDE0LCAyMzcsIDEwMywgOSwgMTQsIDIzNywgMTAyLCA5LCAxNCwgMjM3LCAxMDEsIDksIDE0LCAyMzcsIDEwMCwgOSwgMTQsIAorICAgIDIzNywgOTksIDksIDE0LCAyMzcsIDk4LCA5LCAxNCwgMjM3LCA5NywgOSwgMTQsIDIzNywgOTYsIDksIDE0LCAyMzcsIDk1LCAKKyAgICA5LCAxNCwgMjM3LCA5NCwgOSwgMTQsIDIzNywgOTMsIDksIDE0LCAyMzcsIDkyLCA5LCAxNCwgMjM3LCA5MSwgOSwgMTQsIAorICAgIDIzNywgOTAsIDksIDE0LCAyMzcsIDg5LCA5LCAxNCwgMjM3LCA4OCwgOSwgMTQsIDIzNywgODcsIDksIDE0LCAyMzcsIDg2LCAKKyAgICA5LCAxNCwgMjM3LCA4NSwgOSwgMTQsIDIzNywgODQsIDksIDE0LCAyMzcsIDgzLCA5LCAxNCwgMjM3LCA4MiwgOSwgMTQsIAorICAgIDIzNywgODEsIDksIDE0LCAyMzcsIDgwLCA5LCAxNCwgMjM3LCA3OSwgOSwgMTQsIDIzNywgNzgsIDksIDE0LCAyMzcsIDc3LCAKKyAgICA5LCAxNCwgMjM3LCA3NiwgOSwgMTQsIDIzNywgNzUsIDksIDE0LCAyMzcsIDc0LCA5LCAxNCwgMjM3LCA3MywgOSwgMTQsIAorICAgIDIzNywgNzIsIDksIDE0LCAyMzcsIDcxLCA5LCAxNCwgMjM3LCA3MCwgOSwgMTQsIDIzNywgNjksIDksIDE0LCAyMzcsIDY4LCAKKyAgICA5LCAxNCwgMjM3LCA2NywgOSwgMTQsIDIzNywgNjYsIDksIDE0LCAyMzcsIDY1LCA5LCAxNCwgMjM3LCA2NCwgOSwgMTQsIAorICAgIDIzNywgNjMsIDksIDE0LCAyMzcsIDYyLCA5LCAxNCwgMjM3LCA2MSwgOSwgMTQsIDIzNywgNjAsIDksIDE0LCAyMzcsIDU5LCAKKyAgICA5LCAxNCwgMjM3LCA1OCwgOSwgMTQsIDIzNywgNTcsIDksIDE0LCAyMzcsIDU2LCA5LCAxNCwgMjM3LCA1NSwgOSwgMTQsIAorICAgIDIzNywgNTQsIDksIDE0LCAyMzcsIDUzLCA5LCAxNCwgMjM3LCA1MiwgOSwgMTQsIDIzNywgNTEsIDksIDE0LCAyMzcsIDUwLCAKKyAgICA5LCAxNCwgMjM3LCA0OSwgOSwgMTQsIDIzNywgNDgsIDksIDE0LCAyMzcsIDQ3LCA5LCAxNCwgMjM3LCA0NiwgOSwgMTQsIAorICAgIDIzNywgNDUsIDksIDE0LCAyMzcsIDQ0LCA5LCAxNCwgMjM3LCA0MywgOSwgMTQsIDIzNywgNDIsIDksIDE0LCAyMzcsIDQxLCAKKyAgICA5LCAxNCwgMjM3LCA0MCwgOSwgMTQsIDIzNywgMzksIDksIDE0LCAyMzcsIDM4LCA5LCAxNCwgMjM3LCAzNywgOSwgMTQsIAorICAgIDIzNywgMzYsIDksIDE0LCAyMzcsIDM1LCA5LCAxNCwgMjM3LCAzNCwgOSwgMTQsIDIzNywgMzMsIDksIDE0LCAyMzcsIDMyLCAKKyAgICA5LCAxNCwgMjM3LCAzMSwgOSwgMTQsIDIzNywgMzAsIDksIDE0LCAyMzcsIDI5LCA5LCAxNCwgMjM3LCAyOCwgOSwgMTQsIAorICAgIDIzNywgMjcsIDksIDE0LCAyMzcsIDI2LCA5LCAxNCwgMjM3LCAyNSwgOSwgMTQsIDIzNywgMjQsIDksIDE0LCAyMzcsIDIzLCAKKyAgICA5LCAxNCwgMjM3LCAyMiwgOSwgMTQsIDIzNywgMjEsIDksIDE0LCAyMzcsIDIwLCA5LCAxNCwgMjM3LCAxOSwgOSwgMTQsIAorICAgIDIzNywgMTgsIDksIDE0LCAyMzcsIDE3LCA5LCAxNCwgMjM3LCAxNiwgOSwgMTQsIDIzNywgMTUsIDksIDE0LCAyMzcsIDE0LCAKKyAgICA5LCAxNCwgMjM3LCAxMywgOSwgMTQsIDIzNywgMTIsIDksIDE0LCAyMzcsIDExLCA5LCAxNCwgMjM3LCAxMCwgOSwgMTQsIAorICAgIDIzNywgOSwgOSwgMTQsIDIzNywgOCwgOSwgMTQsIDIzNywgNywgOSwgMTQsIDIzNywgNiwgOSwgMTQsIDIzNywgNSwgOSwgCisgICAgMTQsIDIzNywgNCwgOSwgMTQsIDIzNywgMywgOSwgMTQsIDIzNywgMiwgOSwgMTQsIDIzNywgMSwgOSwgMTQsIDIzNywgMCwgCisgICAgOSwgMTQsIDIzNiwgMjU1LCA5LCAxNCwgMjM2LCAyNTQsIDksIDE0LCAyMzYsIDI1MywgOSwgMTQsIDIzNiwgMjUyLCA5LCAKKyAgICAxNCwgMjM2LCAyNTEsIDksIDE0LCAyMzYsIDI1MCwgOSwgMTQsIDIzNiwgMjQ5LCA5LCAxNCwgMjM2LCAyNDgsIDksIDE0LCAKKyAgICAyMzYsIDI0NywgOSwgMTQsIDIzNiwgMjQ2LCA5LCAxNCwgMjM2LCAyNDUsIDksIDE0LCAyMzYsIDI0NCwgOSwgMTQsIDIzNiwgCisgICAgMjQzLCA5LCAxNCwgMjM2LCAyNDIsIDksIDE0LCAyMzYsIDI0MSwgOSwgMTQsIDIzNiwgMjQwLCA5LCAxNCwgMjM2LCAyMzksIAorICAgIDksIDE0LCAyMzYsIDIzOCwgOSwgMTQsIDIzNiwgMjM3LCA5LCAxNCwgMjM2LCAyMzYsIDksIDE0LCAyMzYsIDIzNSwgOSwgCisgICAgMTQsIDIzNiwgMjM0LCA5LCAxNCwgMjM2LCAyMzMsIDksIDE0LCAyMzYsIDIzMiwgOSwgMTQsIDIzNiwgMjMxLCA5LCAxNCwgCisgICAgMjM2LCAyMzAsIDksIDE0LCAyMzYsIDIyOSwgOSwgMTQsIDIzNiwgMjI4LCA5LCAxNCwgMjM2LCAyMjcsIDksIDE0LCAyMzYsIAorICAgIDIyNiwgOSwgMTQsIDIzNiwgMjI1LCA5LCAxNCwgMjM2LCAyMjQsIDksIDE0LCAyMzYsIDIyMywgOSwgMTQsIDIzNiwgMjIyLCAKKyAgICA5LCAxNCwgMjM2LCAyMjEsIDksIDE0LCAyMzYsIDIyMCwgOSwgMTQsIDIzNiwgMjE5LCA5LCAxNCwgMjM2LCAyMTgsIDksIAorICAgIDE0LCAyMzYsIDIxNywgOSwgMTQsIDIzNiwgMjE2LCA5LCAxNCwgMjM2LCAyMTUsIDksIDE0LCAyMzYsIDIxNCwgOSwgMTQsIAorICAgIDIzNiwgMjEzLCA5LCAxNCwgMjM2LCAyMTIsIDksIDE0LCAyMzYsIDIxMSwgOSwgMTQsIDIzNiwgMjEwLCA5LCAxNCwgMjM2LCAKKyAgICAyMDksIDksIDE0LCAyMzYsIDIwOCwgOSwgMTQsIDIzNiwgMjA3LCA5LCAxNCwgMjM2LCAyMDYsIDksIDE0LCAyMzYsIDIwNSwgCisgICAgOSwgMTQsIDIzNiwgMjA0LCA5LCAxNCwgMjM2LCAyMDMsIDksIDE0LCAyMzYsIDIwMiwgOSwgMTQsIDIzNiwgMjAxLCA5LCAKKyAgICAxNCwgMjM2LCAyMDAsIDksIDE0LCAyMzYsIDE5OSwgOSwgMTQsIDIzNiwgMTk4LCA5LCAxNCwgMjM2LCAxOTcsIDksIDE0LCAKKyAgICAyMzYsIDE5NiwgOSwgMTQsIDIzNiwgMTk1LCA5LCAxNCwgMjM2LCAxOTQsIDksIDE0LCAyMzYsIDE5MywgOSwgMTQsIDIzNiwgCisgICAgMTkyLCA5LCAxNCwgMjM2LCAxOTEsIDksIDE0LCAyMzYsIDE5MCwgOSwgMTQsIDIzNiwgMTg5LCA5LCAxNCwgMjM2LCAxODgsIAorICAgIDksIDE0LCAyMzYsIDE4NywgOSwgMTQsIDIzNiwgMTg2LCA5LCAxNCwgMjM2LCAxODUsIDksIDE0LCAyMzYsIDE4NCwgOSwgCisgICAgMTQsIDIzNiwgMTgzLCA5LCAxNCwgMjM2LCAxODIsIDksIDE0LCAyMzYsIDE4MSwgOSwgMTQsIDIzNiwgMTgwLCA5LCAxNCwgCisgICAgMjM2LCAxNzksIDksIDE0LCAyMzYsIDE3OCwgOSwgMTQsIDIzNiwgMTc3LCA5LCAxNCwgMjM2LCAxNzYsIDksIDE0LCAyMzYsIAorICAgIDE3NSwgOSwgMTQsIDIzNiwgMTc0LCA5LCAxNCwgMjM2LCAxNzMsIDksIDE0LCAyMzYsIDE3MiwgOSwgMTQsIDIzNiwgMTcxLCAKKyAgICA5LCAxNCwgMjM2LCAxNzAsIDksIDE0LCAyMzYsIDE2OSwgOSwgMTQsIDIzNiwgMTY4LCA5LCAxNCwgMjM2LCAxNjcsIDksIAorICAgIDE0LCAyMzYsIDE2NiwgOSwgMTQsIDIzNiwgMTY1LCA5LCAxNCwgMjM2LCAxNjQsIDksIDE0LCAyMzYsIDE2MywgOSwgMTQsIAorICAgIDIzNiwgMTYyLCA5LCAxNCwgMjM2LCAxNjEsIDksIDE0LCAyMzYsIDE2MCwgOSwgMTQsIDIzNiwgMTU5LCA5LCAxNCwgMjM2LCAKKyAgICAxNTgsIDksIDE0LCAyMzYsIDE1NywgOSwgMTQsIDIzNiwgMTU2LCA5LCAxNCwgMjM2LCAxNTUsIDksIDE0LCAyMzYsIDE1NCwgCisgICAgOSwgMTQsIDIzNiwgMTUzLCA5LCAxNCwgMjM2LCAxNTIsIDksIDE0LCAyMzYsIDE1MSwgOSwgMTQsIDIzNiwgMTUwLCA5LCAKKyAgICAxNCwgMjM2LCAxNDksIDksIDE0LCAyMzYsIDE0OCwgOSwgMTQsIDIzNiwgMTQ3LCA5LCAxNCwgMjM2LCAxNDYsIDksIDE0LCAKKyAgICAyMzYsIDE0NSwgOSwgMTQsIDIzNiwgMTQ0LCA5LCAxNCwgMjM2LCAxNDMsIDksIDE0LCAyMzYsIDE0MiwgOSwgMTQsIDIzNiwgCisgICAgMTQxLCA5LCAxNCwgMjM2LCAxNDAsIDksIDE0LCAyMzYsIDEzOSwgOSwgMTQsIDIzNiwgMTM4LCA5LCAxNCwgMjM2LCAxMzcsIAorICAgIDksIDE0LCAyMzYsIDEzNiwgOSwgMTQsIDIzNiwgMTM1LCA5LCAxNCwgMjM2LCAxMzQsIDksIDE0LCAyMzYsIDEzMywgOSwgCisgICAgMTQsIDIzNiwgMTMyLCA5LCAxNCwgMjM2LCAxMzEsIDksIDE0LCAyMzYsIDEzMCwgOSwgMTQsIDIzNiwgMTI5LCA5LCAxNCwgCisgICAgMjM2LCAxMjgsIDksIDE0LCAyMzYsIDEyNywgOSwgMTQsIDIzNiwgMTI2LCA5LCAxNCwgMjM2LCAxMjUsIDksIDE0LCAyMzYsIAorICAgIDEyNCwgOSwgMTQsIDIzNiwgMTIzLCA5LCAxNCwgMjM2LCAxMjIsIDksIDE0LCAyMzYsIDEyMSwgOSwgMTQsIDIzNiwgMTIwLCAKKyAgICA5LCAxNCwgMjM2LCAxMTksIDksIDE0LCAyMzYsIDExOCwgOSwgMTQsIDIzNiwgMTE3LCA5LCAxNCwgMjM2LCAxMTYsIDksIAorICAgIDE0LCAyMzYsIDExNSwgOSwgMTQsIDIzNiwgMTE0LCA5LCAxNCwgMjM2LCAxMTMsIDksIDE0LCAyMzYsIDExMiwgOSwgMTQsIAorICAgIDIzNiwgMTExLCA5LCAxNCwgMjM2LCAxMTAsIDksIDE0LCAyMzYsIDEwOSwgOSwgMTQsIDIzNiwgMTA4LCA5LCAxNCwgMjM2LCAKKyAgICAxMDcsIDksIDE0LCAyMzYsIDEwNiwgOSwgMTQsIDIzNiwgMTA1LCA5LCAxNCwgMjM2LCAxMDQsIDksIDE0LCAyMzYsIDEwMywgCisgICAgOSwgMTQsIDIzNiwgMTAyLCA5LCAxNCwgMjM2LCAxMDEsIDksIDE0LCAyMzYsIDEwMCwgOSwgMTQsIDIzNiwgOTksIDksIDE0LCAKKyAgICAyMzYsIDk4LCA5LCAxNCwgMjM2LCA5NywgOSwgMTQsIDIzNiwgOTYsIDksIDE0LCAyMzYsIDk1LCA5LCAxNCwgMjM2LCA5NCwgCisgICAgOSwgMTQsIDIzNiwgOTMsIDksIDE0LCAyMzYsIDkyLCA5LCAxNCwgMjM2LCA5MSwgOSwgMTQsIDIzNiwgOTAsIDksIDE0LCAKKyAgICAyMzYsIDg5LCA5LCAxNCwgMjM2LCA4OCwgOSwgMTQsIDIzNiwgODcsIDksIDE0LCAyMzYsIDg2LCA5LCAxNCwgMjM2LCA4NSwgCisgICAgOSwgMTQsIDIzNiwgODQsIDksIDE0LCAyMzYsIDgzLCA5LCAxNCwgMjM2LCA4MiwgOSwgMTQsIDIzNiwgODEsIDksIDE0LCAKKyAgICAyMzYsIDgwLCA5LCAxNCwgMjM2LCA3OSwgOSwgMTQsIDIzNiwgNzgsIDksIDE0LCAyMzYsIDc3LCA5LCAxNCwgMjM2LCA3NiwgCisgICAgOSwgMTQsIDIzNiwgNzUsIDksIDE0LCAyMzYsIDc0LCA5LCAxNCwgMjM2LCA3MywgOSwgMTQsIDIzNiwgNzIsIDksIDE0LCAKKyAgICAyMzYsIDcxLCA5LCAxNCwgMjM2LCA3MCwgOSwgMTQsIDIzNiwgNjksIDksIDE0LCAyMzYsIDY4LCA5LCAxNCwgMjM2LCA2NywgCisgICAgOSwgMTQsIDIzNiwgNjYsIDksIDE0LCAyMzYsIDY1LCA3LCA0LCAyNywgMjQ0LCAxMjUsIDcsIDQsIDI3LCAyNDQsIDEyMSwgCisgICAgNywgNCwgMjcsIDI0NCwgNzYsIDcsIDQsIDI3LCAyNDQsIDEyNCwgNywgNCwgMjcsIDI0NCwgMTIzLCA3LCA0LCAyNywgMTk5LCAKKyAgICAyMjIsIDkyLCAyMTcsIDE1MiwgNywgNCwgMjcsIDIxOCwgMTY4LCAxNTAsIDQsIDI3LCAyMzEsIDU5LCAyMjgsIDM5LCAxNTAsIAorICAgIDQsIDI3LCAyMzEsIDU5LCAyNDUsIDIxMywgMTUwLCA0LCAyNywgMjMxLCA1OSwgMjM1LCAyMjcsIDE1MCwgNCwgMjcsIDIxMywgCisgICAgMTgwLCAyMjgsIDM5LCAxNTAsIDQsIDI3LCAyMzEsIDU5LCAyMTEsIDE2MCwgOTQsIDEsIDIxMCwgMjM0LCAyLCAyNDEsIAorICAgIDE1OCwgOTQsIDIyNSwgMTEsIDIzNSwgNTAsIDIxNCwgMTEsIDk0LCAyNywgMjExLCA2LCAyMTAsIDIzNCwgMjEwLCAyMzQsIAorICAgIDIyNSwgMjM5LCA5NCwgMSwgMjU0LCAxMzksIDI1MywgMTYyLCA5NCwgMSwgMjExLCAyNDcsIDI1NCwgMTcwLCA5NCwgMSwgCisgICAgMjExLCAyNDcsIDI0OCwgMTg5LCA5NCwgMSwgMjExLCAyNDcsIDI0MSwgMjM4LCA5NCwgMSwgMjExLCAyNDcsIDIzNCwgMjUwLCAKKyAgICA5NCwgMSwgMjExLCAyNDcsIDIzMywgOTQsIDk0LCAxLCAyMTEsIDI0NywgNDAsIDIzMSwgNjUsIDk0LCAxLCAyMTEsIDI0NywgCisgICAgMjIzLCA2NywgOTQsIDEsIDIxMSwgMjQ3LCAyMTcsIDM4LCA5NCwgMSwgMjU0LCAxMzksIDk2LCA1MCwgOTQsIDEsIDIyMCwgCisgICAgMjEsIDIsIDIyMCwgMjEsIDI0NywgMTIwLCA5NCwgMSwgMjIwLCAyMSwgMiwgMjE5LCAxNTksIDI0NywgMTIwLCA5NCwgMSwgCisgICAgMjIwLCAyMSwgMiwgMjQ4LCAyMDgsIDIyLCAyMjAsIDIxLCAyNDcsIDEyMCwgOTQsIDEsIDIyMCwgMjEsIDIsIDI0OCwgMjA4LCAKKyAgICAyMiwgMjE5LCAxNTksIDI0NywgMTIwLCA5NCwgMSwgMTEyLCAyLCAyMjUsIDIzOSwgOTQsIDEsIDExMiwgMiwgMjI0LCA3NiwgCisgICAgOTQsIDEsIDExMiwgMiwgMjMxLCAxNzEsIDk0LCAxLCAyNTIsIDI5LCAyLCAyNDgsIDIwNywgOTQsIDEsIDI0MiwgMjAyLCAyLCAKKyAgICAyNDgsIDIwNywgOTQsIDEsIDI0OCwgMTkwLCAyLCAyNDgsIDIwNywgOTQsIDEsIDI0MSwgMjM5LCAyLCAyMzEsIDE3MSwgOTQsIAorICAgIDEsIDIxNCwgNCwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyMTAsIDk4LCAyLCAyNDgsIDIwNywgOTQsIDEsIDIxNiwgMjMxLCAyLCAKKyAgICAyNDgsIDIwNywgOTQsIDEsIDIxMCwgMjM0LCAyLCAyNDgsIDIwNywgOTQsIDEsIDQwLCAyMzQsIDI1MSwgMiwgMjQ4LCAyMDcsIAorICAgIDk0LCAxLCAyMzQsIDI1MSwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyMzMsIDk1LCAyLCAyNDgsIDIwNywgOTQsIDEsIDIzMSwgCisgICAgNjYsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjI3LCAxOTUsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjIxLCAyNTAsIDIsIDI0OCwgCisgICAgMjA3LCA5NCwgMSwgNDAsIDIyNSwgMjIyLCAyLCAyNDgsIDIwNywgOTQsIDEsIDIyNSwgMjIyLCAyLCAyNDgsIDIwNywgOTQsIAorICAgIDEsIDIxNSwgMTgwLCAyLCAyNDgsIDIwNywgOTQsIDEsIDIyNCwgNDAsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjIzLCA2OCwgMiwgCisgICAgMjQ4LCAyMDcsIDk0LCAxLCAyMjAsIDIxLCAyLCAyNDgsIDIwNywgOTQsIDEsIDIxNywgMzksIDIsIDI0OCwgMjA3LCA5NCwgCisgICAgMSwgMjE0LCA0LCAyLCAyNDEsIDYxLCA5NCwgMSwgMjUyLCAyOSwgMiwgMjIzLCAxNjksIDk0LCAxLCAyMzQsIDI1MSwgMiwgCisgICAgMjIzLCAxNjksIDk0LCAxLCAyMjUsIDIyMiwgMiwgMjIzLCAxNjksIDk0LCAyNywgMTEyLCAyMzMsIDk0LCAxMCwgMSwgMTEyLCAKKyAgICAyMTIsIDQ3LCA1MywgMTcsIDEwLCAxLCAxMTIsIDIxMiwgNDcsIDQwLCAxNywgMTAsIDEsIDI1MiwgNjUsIDUzLCAxNywgMTAsIAorICAgIDEsIDI1MiwgNjUsIDQwLCAxNywgMTAsIDEsIDI1MiwgNjUsIDY1LCAxNywgMTAsIDEsIDI1MiwgNjUsIDE0NywgMTcsIDEwLCAKKyAgICAxLCAyMjUsIDIwNiwgNTMsIDE3LCAxMCwgMSwgMjI1LCAyMDYsIDQwLCAxNywgMTAsIDEsIDIyNSwgMjA2LCA2NSwgMTcsIAorICAgIDEwLCAxLCAyMjUsIDIwNiwgMTQ3LCAxNywgMTAsIDEsIDI1MiwgNTMsIDUzLCAxNywgMTAsIDEsIDI1MiwgNTMsIDQwLCAxNywgCisgICAgMTAsIDEsIDI1MiwgNTMsIDY1LCAxNywgMTAsIDEsIDI1MiwgNTMsIDE0NywgMTcsIDEwLCAxLCAyMTUsIDE0NywgNTMsIDE3LCAKKyAgICAxMCwgMSwgMjE1LCAxNDcsIDQwLCAxNywgMTAsIDEsIDIxNSwgMTQ3LCA2NSwgMTcsIDEwLCAxLCAyMTUsIDE0NywgMTQ3LCAKKyAgICAxNywgMTAsIDEsIDIxNywgNiwgNTMsIDE3LCAxMCwgMSwgMjE3LCA2LCA0MCwgMTcsIDEwLCAxLCAyMTcsIDYsIDY1LCAxNywgCisgICAgMTAsIDEsIDIxNywgNiwgMTQ3LCAxNywgMTAsIDEsIDIxNSwgMTQ5LCA1MywgMTcsIDEwLCAxLCAyMTUsIDE0OSwgNDAsIDE3LCAKKyAgICAxMCwgMSwgMjE1LCAxNDksIDY1LCAxNywgMTAsIDEsIDIxNSwgMTQ5LCAxNDcsIDE3LCAxMCwgMSwgMjEzLCAyNDksIDUzLCAKKyAgICAxNywgMTAsIDEsIDIxMywgMjQ5LCA0MCwgMTcsIDEwLCAxLCAyMTMsIDI0OSwgNjUsIDE3LCAxMCwgMSwgMjEzLCAyNDksIAorICAgIDE0NywgMTcsIDEwLCAxLCAyMjUsIDIwNCwgNTMsIDE3LCAxMCwgMSwgMjI1LCAyMDQsIDQwLCAxNywgMTAsIDEsIDIyNSwgCisgICAgMjA0LCA2NSwgMTcsIDEwLCAxLCAyMjUsIDIwNCwgMTQ3LCAxNywgMTAsIDEsIDI0NiwgNDQsIDUzLCAxNywgMTAsIDEsIAorICAgIDI0NiwgNDQsIDQwLCAxNywgMTAsIDEsIDI0NiwgNDQsIDY1LCAxNywgMTAsIDEsIDI0NiwgNDQsIDE0NywgMTcsIDEwLCAxLCAKKyAgICAyMjcsIDE1NCwgNTMsIDE3LCAxMCwgMSwgMjI3LCAxNTQsIDQwLCAxNywgMTAsIDEsIDIyNywgMTU0LCA2NSwgMTcsIDEwLCAKKyAgICAxLCAyMjcsIDE1NCwgMTQ3LCAxNywgMTAsIDEsIDIxNywgMjcsIDUzLCAxNywgMTAsIDEsIDIxNywgMjcsIDQwLCAxNywgMTAsIAorICAgIDEsIDIxNywgMjcsIDY1LCAxNywgMTAsIDEsIDIxNywgMjcsIDE0NywgMTcsIDEwLCAxLCAyMTcsIDI1LCA1MywgMTcsIDEwLCAKKyAgICAxLCAyMTcsIDI1LCA0MCwgMTcsIDEwLCAxLCAyMTcsIDI1LCA2NSwgMTcsIDEwLCAxLCAyMTcsIDI1LCAxNDcsIDE3LCAxMCwgCisgICAgMSwgMjQ4LCAxMzMsIDUzLCAxNywgMTAsIDEsIDI0OCwgMTMzLCA0MCwgMTcsIDEwLCAxLCAyNDgsIDIwMiwgNTMsIDE3LCAKKyAgICAxMCwgMSwgMjQ4LCAyMDIsIDQwLCAxNywgMTAsIDEsIDI0NiwgNzEsIDUzLCAxNywgMTAsIDEsIDI0NiwgNzEsIDQwLCAxNywgCisgICAgMTAsIDEsIDI0OCwgMTMxLCA1MywgMTcsIDEwLCAxLCAyNDgsIDEzMSwgNDAsIDE3LCAxMCwgMSwgMjM1LCAxMjEsIDUzLCAKKyAgICAxNywgMTAsIDEsIDIzNSwgMTIxLCA0MCwgMTcsIDEwLCAxLCAyMjIsIDE3MiwgNTMsIDE3LCAxMCwgMSwgMjIyLCAxNzIsIAorICAgIDQwLCAxNywgMTAsIDEsIDIzNCwgMTc1LCA1MywgMTcsIDEwLCAxLCAyMzQsIDE3NSwgNDAsIDE3LCAxMCwgMSwgMjM0LCAKKyAgICAxNzUsIDY1LCAxNywgMTAsIDEsIDIzNCwgMTc1LCAxNDcsIDE3LCAxMCwgMSwgMjQzLCAxMjMsIDUzLCAxNywgMTAsIDEsIAorICAgIDI0MywgMTIzLCA0MCwgMTcsIDEwLCAxLCAyNDMsIDEyMywgNjUsIDE3LCAxMCwgMSwgMjQzLCAxMjMsIDE0NywgMTcsIDEwLCAKKyAgICAxLCAyNDIsIDEwMiwgNTMsIDE3LCAxMCwgMSwgMjQyLCAxMDIsIDQwLCAxNywgMTAsIDEsIDI0MiwgMTAyLCA2NSwgMTcsIAorICAgIDEwLCAxLCAyNDIsIDEwMiwgMTQ3LCAxNywgMTAsIDEsIDIyOSwgMywgNTMsIDE3LCAxMCwgMSwgMjI5LCAzLCA0MCwgMTcsIAorICAgIDEwLCAxLCAyMjksIDMsIDY1LCAxNywgMTAsIDEsIDIyOSwgMywgMTQ3LCAxNywgMTAsIDEsIDIyOCwgNjMsIDI0MiwgMjE5LCAKKyAgICA1MywgMTcsIDEwLCAxLCAyMjgsIDYzLCAyNDIsIDIxOSwgNDAsIDE3LCAxMCwgMSwgMjIyLCAyMTUsIDUzLCAxNywgMTAsIDEsIAorICAgIDIyMiwgMjE1LCA0MCwgMTcsIDEwLCAxLCAyMjIsIDIxNSwgNjUsIDE3LCAxMCwgMSwgMjIyLCAyMTUsIDE0NywgMTcsIDEwLCAKKyAgICAxLCAyNDEsIDIxOSwgMiwgNzksIDc3LCA1MywgMTcsIDEwLCAxLCAyNDEsIDIxOSwgMiwgNzksIDc3LCA0MCwgMTcsIDEwLCAKKyAgICAxLCAyNDEsIDIxOSwgMjQyLCAxNzIsIDUzLCAxNywgMTAsIDEsIDI0MSwgMjE5LCAyNDIsIDE3MiwgNDAsIDE3LCAxMCwgMSwgCisgICAgMjQxLCAyMTksIDI0MiwgMTcyLCA2NSwgMTcsIDEwLCAxLCAyNDEsIDIxOSwgMjQyLCAxNzIsIDE0NywgMTcsIDEwLCAxLCAKKyAgICAyNDEsIDIxOSwgMjQ3LCAxNDIsIDUzLCAxNywgMTAsIDEsIDI0MSwgMjE5LCAyNDcsIDE0MiwgNDAsIDE3LCAxMCwgMSwgCisgICAgMjQxLCAyMTksIDI0NywgMTQyLCA2NSwgMTcsIDEwLCAxLCAyNDEsIDIxOSwgMjQ3LCAxNDIsIDE0NywgMTcsIDEwLCAxLCAKKyAgICA3OSwgMjUyLCAxMzMsIDUzLCAxNywgMTAsIDEsIDc5LCAyNTIsIDEzMywgNDAsIDE3LCAxMCwgMSwgNzksIDI1MiwgMTMzLCAKKyAgICAyLCAyMDIsIDc3LCA1MywgMTcsIDEwLCAxLCA3OSwgMjUyLCAxMzMsIDIsIDIwMiwgNzcsIDQwLCAxNywgMTAsIDE2LCA1OSwgCisgICAgNDgsIDEwLCAxNiwgNTksIDUxLCAxMCwgMTYsIDExMywgMTcwLCA0OCwgMTAsIDE2LCAxMTMsIDE3MCwgNTEsIDEwLCAxNiwgCisgICAgMTM0LCAxNzAsIDQ4LCAxMCwgMTYsIDEzNCwgMTcwLCA1MSwgMTAsIDE2LCAxMzQsIDE3MCwgMjI1LCA3LCAyNDYsIDEwNCwgCisgICAgNDgsIDEwLCAxNiwgMTM0LCAxNzAsIDIyNSwgNywgMjQ2LCAxMDQsIDUxLCAxMCwgMTYsIDI0NCwgMTEsIDE3MCwgNDgsIDEwLCAKKyAgICAxNiwgMjQ0LCAxMSwgMTcwLCA1MSwgMTAsIDE2LCA1MiwgNjcsIDI1MiwgMTQxLCA1MSwgMTAsIDE2LCAxMTMsIDE3MCwgCisgICAgMjEzLCAxODksIDQ4LCAxMCwgMTYsIDExMywgMTcwLCAyMTMsIDE4OSwgNTEsIDEwLCAxNiwgMjIyLCAyMzMsIDEwLCAxNiwgCisgICAgNCwgMjE3LCA4MSwgNDgsIDEwLCAxNiwgNCwgMjE3LCA4MSwgNTEsIDEwLCAxLCAyMjksIDgwLCA1MywgMTcsIDEwLCAxLCAKKyAgICAyMjksIDgwLCA0MCwgMTcsIDEwLCAxLCAyMjksIDgwLCA2NSwgMTcsIDEwLCAxLCAyMjksIDgwLCAxNDcsIDE3LCAxMCwgMSwgCisgICAgMTA0LCA1MywgMTcsIDEwLCAxLCAxMDQsIDQwLCAxNywgMTAsIDEsIDIyNiwgMjM1LCA1MywgMTcsIDEwLCAxLCAyMjYsIAorICAgIDIzNSwgNDAsIDE3LCAxMCwgMSwgMjEwLCAyMTMsIDUzLCAxNywgMTAsIDEsIDIxMCwgMjEzLCA0MCwgMTcsIDEwLCAxLCAKKyAgICAxMDQsIDIsIDIwMiwgNzcsIDUzLCAxNywgMTAsIDEsIDIxNCwgMCwgNTMsIDE3LCAxMCwgMSwgMjE0LCAwLCA0MCwgMTcsIAorICAgIDEwLCAxLCAyMzQsIDczLCAyMjYsIDIzNSwgNTMsIDE3LCAxMCwgMSwgMjM0LCA3MywgMjI2LCAyMzUsIDQwLCAxNywgMTAsIAorICAgIDEsIDIzNCwgNzMsIDIxMCwgMjEzLCA1MywgMTcsIDEwLCAxLCAyMzQsIDczLCAyMTAsIDIxMywgNDAsIDE3LCAxMCwgMSwgCisgICAgMTYwLCA1MywgMTcsIDEwLCAxLCAxNjAsIDQwLCAxNywgMTAsIDEsIDE2MCwgNjUsIDE3LCAxMCwgMSwgMTYwLCAxNDcsIDE3LCAKKyAgICAxMCwgMSwgMjE0LCAyMDcsIDIzNCwgMTg2LCAyMzQsIDczLCAxMTIsIDIzMSwgMTkzLCA2NSwgMTcsIDEwLCAxLCAyMTQsIAorICAgIDIwNywgMjM0LCAxODYsIDIzNCwgNzMsIDExMiwgMjMxLCAxOTMsIDE0NywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIAorICAgIDIsIDExMiwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAxMTIsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgCisgICAgMjAyLCA3NywgMiwgMjU0LCAyNDQsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjU0LCAyNDQsIDQwLCAKKyAgICAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjEyLCAzMSwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAKKyAgICAyLCAyMTIsIDMxLCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDEwNCwgNTMsIDE3LCAxMCwgMjcsIDc5LCAKKyAgICAyLCAyMDIsIDc3LCAyLCAxMDQsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjI2LCAyMzUsIDUzLCAxNywgCisgICAgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjI2LCAyMzUsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgCisgICAgMjEwLCAyMTMsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjEwLCAyMTMsIDQwLCAxNywgMTAsIDI3LCAKKyAgICA3OSwgMiwgMjAyLCA3NywgMiwgMTYwLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDE2MCwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAxNjAsIDY1LCAxNywgMTAsIDI3LCAyMTQsIDIwNywgMjM0LCA3MywgNzksIDIsIAorICAgIDIwMiwgNzcsIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyMTQsIDIwNywgMjM0LCA3MywgNzksIDIsIDIwMiwgCisgICAgNzcsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMTQsIDIwNywgMjM0LCA3MywgNzksIDIsIDIwMiwgNzcsIAorICAgIDIsIDExMiwgMjMxLCAxOTMsIDY1LCAxNywgMTAsIDEsIDI0NCwgMTY4LCA3OSwgNTMsIDE3LCAxMCwgMSwgMjQ0LCAxNjgsIAorICAgIDc5LCA0MCwgMTcsIDEwLCAxLCAyNDQsIDE2OCwgNzksIDY1LCAxNywgMTAsIDEsIDI0NCwgMTY4LCA3OSwgMTQ3LCAxNywgCisgICAgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDEyMiwgCisgICAgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAKKyAgICAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgCisgICAgMjUyLCA1NSwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjUyLCAKKyAgICA1NSwgMiwgMjM0LCAxMzAsIDUzLCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIAorICAgIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIxNywgOCwgCisgICAgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDIzNCwgCisgICAgMTMwLCA1MywgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTEyLCAyMzEsIAorICAgIDE5MywgNTMsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMTYsIDE5MywgMiwgMTUxLCA1MywgCisgICAgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDExMiwgMjMxLCAxOTMsIAorICAgIDUzLCAxNywgMTAsIDI3LCAyMTYsIDE5MywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAxNTEsIDIsIDEyMiwgNTMsIDE3LCAxMCwgCisgICAgMjcsIDE1MSwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAxMjIsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDEyMiwgMiwgNjYsIAorICAgIDUzLCAxNywgMTAsIDI3LCAyMzQsIDEzMCwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjM0LCAxMzAsIDIsIDEyMiwgNTMsIAorICAgIDE3LCAxMCwgMjcsIDIzNCwgMTMwLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAxNTEsIDUzLCAxNywgCisgICAgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDIzNCwgMTMwLCA1MywgMTcsIAorICAgIDEwLCAyNywgMjIxLCAxNjcsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgCisgICAgMjIyLCAyNywgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjQ4LCAKKyAgICAyMTcsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAyMzQsIDEzMCwgNTMsIDE3LCAxMCwgMjcsIDI0OCwgCisgICAgMjE3LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIAorICAgIDY2LCA1MywgMTcsIDEwLCAyNywgMjEwLCAxMTIsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDE1MSwgCisgICAgNTMsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI0MiwgMjQ1LCAyLCAxNTEsIDUzLCAKKyAgICAxNywgMTAsIDI3LCAyNDIsIDI0NSwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyNDQsIDE0MywgMiwgMTUxLCA1MywgMTcsIAorICAgIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCAyMzQsIDEzMCwgNTMsIDE3LCAKKyAgICAxMCwgMjcsIDI0NCwgMTQzLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCAxMTIsIDIzMSwgMTkzLCA1MywgCisgICAgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgMTIyLCA1MywgMTcsIDEwLCAKKyAgICAyNywgMjI0LCA4MiwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMjQsIDgyLCAyLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIAorICAgIDEwLCAyNywgMjI0LCA4MiwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMTEyLCA1MywgMTcsIDEwLCAyNywgCisgICAgMjM0LCAyNTEsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyMzQsIAorICAgIDI1MSwgMiwgMjM0LCAxMzAsIDUzLCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMjMzLCAxMDMsIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMzQsIDI1MSwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgCisgICAgMjcsIDIzNCwgMjUxLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMzMsIDEwMywgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDIzNCwgMTMwLCA1MywgMTcsIDEwLCAyNywgCisgICAgMjMzLCAxMDMsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIAorICAgIDI3LCAyMzMsIDEwMywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCA2NiwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgNjYsIDIsIAorICAgIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDY2LCAyLCAyMzQsIDEzMCwgNTMsIDE3LCAxMCwgMjcsIDY2LCAyLCA2NiwgNTMsIDE3LCAKKyAgICAxMCwgMjcsIDY2LCAyLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgNjYsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgCisgICAgMjI4LCA2MywgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjI4LCAKKyAgICA2MywgMiwgMjM0LCAxMzAsIDUzLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIAorICAgIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDI0MSwgCisgICAgMjE5LCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyNDEsIDIxOSwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyNDEsIDIxOSwgCisgICAgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDI0MSwgMjE5LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAKKyAgICAxNTEsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIzNCwgMTMwLCA1MywgMTcsIAorICAgIDEwLCAyNywgNzksIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAKKyAgICA3OSwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMTYsIDIwMywgMiwgMjE4LCAyMywgMTEyLCA1MywgMTcsIDEwLCAyNywgCisgICAgMjIzLCA5NiwgMiwgMjE4LCAyMywgMTEyLCA1MywgMTcsIDEwLCAyNywgMTEyLCAyMzEsIDE5MywgMiwgMjE4LCAyMywgMTEyLCAKKyAgICA1MywgMTcsIDEwLCAyNywgMjIwLCA5NCwgMiwgMjQ4LCAxODMsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDk0LCAyLCAyMzQsIAorICAgIDIwNCwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgOTQsIDIsIDI0NCwgMTY2LCA1MywgMTcsIDEwLCAyNywgMjIwLCA5NCwgMiwgCisgICAgMjQ4LCAxODUsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDk0LCAyLCAyMzQsIDIwNiwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgOTQsIAorICAgIDIsIDIxOCwgMjMsIDExMiwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMjMsIDk2LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDIxMCwgMTA5LCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDY2LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDIyOCwgNjMsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCAKKyAgICA3NywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCA3OSwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDI1MiwgNTUsIDIsIDIyMywgOTYsIDQwLCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCAyMTAsIDEwOSwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDI1MiwgNTUsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgMjI4LCA2MywgNDAsIDE3LCAxMCwgCisgICAgMjcsIDI1MiwgNTUsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCA3OSwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIxNywgOCwgMiwgMjIzLCA5NiwgNDAsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMjEwLCAxMDksIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMTcsIDgsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAyMjgsIDYzLCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjE3LCA4LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCA3OSwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDIxNiwgMTkzLCAyLCAyMjMsIDk2LCA0MCwgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDIxMCwgMTA5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjE2LCAxOTMsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDIyOCwgNjMsIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMTYsIDE5MywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIxNiwgMTkzLCAyLCA3OSwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDc5LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyNCwgODIsIDIsIAorICAgIDc5LCA0MCwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDExMiwgNDAsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAyMzMsIAorICAgIDEwMywgNDAsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAxMTIsIAorICAgIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIAorICAgIDY2LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgCisgICAgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA2NiwgMiwgMTEyLCA0MCwgMTcsIDEwLCAyNywgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjI4LCA2MywgMiwgMjIzLCA5NiwgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDIxMCwgMTA5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjI4LCA2MywgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAyMjgsIDYzLCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjI4LCA2MywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDc5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMTEyLCAyMzEsIDE5MywgMiwgMjE4LCAyMywgMTEyLCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIyMywgOTYsIAorICAgIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjEwLCAxMDksIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgNjYsIDQwLCAxNywgMTAsIAorICAgIDI3LCA3OSwgMiwgMjI4LCA2MywgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgCisgICAgNzksIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDc5LCAyLCAKKyAgICAyMDIsIDc3LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIAorICAgIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjQxLCAyMTksIAorICAgIDY1LCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCAxMjIsIDY1LCAxNywgCisgICAgMTAsIDI3LCAyNTIsIDU1LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDY2LCA2NSwgMTcsIDEwLCAKKyAgICAyNywgMjUyLCA1NSwgMiwgMjQxLCAyMTksIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIAorICAgIDIxNywgOCwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDIxNywgCisgICAgOCwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDI0MSwgMjE5LCA2NSwgMTcsIDEwLCAyNywgMjE2LCAxOTMsIAorICAgIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMTUxLCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAxNTEsIDIsIDY2LCA2NSwgMTcsIAorICAgIDEwLCAyNywgMTIyLCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAxMjIsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjM0LCAKKyAgICAxMzAsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIzNCwgMTMwLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAKKyAgICAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIAorICAgIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgCisgICAgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAKKyAgICA2NiwgNjUsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMTIyLCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDY2LCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjEwLCAxMTIsIDIsIDY2LCA2NSwgMTcsIAorICAgIDEwLCAyNywgMjU0LCAxOTcsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA2NiwgNjUsIDE3LCAxMCwgCisgICAgMjcsIDI0MiwgMjQ1LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNDIsIDI0NSwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAKKyAgICAyNDQsIDE0MywgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDI0NCwgCisgICAgMTQzLCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyNCwgCisgICAgODIsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIyNCwgODIsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIAorICAgIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMjM0LCAKKyAgICAxMzAsIDY1LCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMjMzLCAxMDMsIDY1LCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgCisgICAgNjYsIDY1LCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDEyMiwgCisgICAgNjUsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCA2NiwgCisgICAgNjUsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAyNDEsIDIxOSwgNjUsIDE3LCAxMCwgMjcsIDY2LCAyLCAxNTEsIDY1LCAKKyAgICAxNywgMTAsIDI3LCA2NiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgNjYsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgCisgICAgNjYsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgCisgICAgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAKKyAgICA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDI0MSwgMjE5LCA2NSwgMTcsIDEwLCAyNywgMjQxLCAyMTksIDIsIAorICAgIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDI0MSwgMjE5LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDI0MSwgMjE5LCAyLCAyMTgsIAorICAgIDIzLCAxMTIsIDY1LCAxNywgMTAsIDI3LCA3OSwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgNzksIDIsIDEyMiwgNjUsIDE3LCAKKyAgICAxMCwgMjcsIDc5LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDc5LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDc5LCAKKyAgICAyLCAyNDEsIDIxOSwgNjUsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCA2NiwgMTQ3LCAxNywgMTAsIDI3LCA3OSwgCisgICAgMiwgMjAyLCA3NywgMiwgMjQxLCAyMTksIDE0NywgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgNjYsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjUyLCA1NSwgMiwgMjQxLCAyMTksIDE0NywgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCA2NiwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyMTcsIDgsIDIsIDI0MSwgMjE5LCAxNDcsIDE3LCAxMCwgMjcsIDIxNiwgMTkzLCAyLCA2NiwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyMTYsIDE5MywgMiwgMjQxLCAyMTksIDE0NywgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDY2LCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDIyMSwgMTY3LCAyLCAyNDEsIDIxOSwgMTQ3LCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA2NiwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyMjAsIDYwLCAyLCAyNDEsIDIxOSwgMTQ3LCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMjMzLCAxMDMsIDE0NywgCisgICAgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDY2LCAxNDcsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCA2NiwgMTQ3LCAxNywgCisgICAgMTAsIDI3LCAyMjgsIDYzLCAyLCA2NiwgMTQ3LCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAyNDEsIDIxOSwgMTQ3LCAxNywgCisgICAgMTAsIDI3LCA3OSwgMiwgNjYsIDE0NywgMTcsIDEwLCAyNywgNzksIDIsIDI0MSwgMjE5LCAxNDcsIDE3LCAxMCwgMjcsIAorICAgIDIyMCwgOTQsIDIsIDI0NCwgMTY2LCAxNDcsIDE3LCAxMCwgMjcsIDIyMCwgOTQsIDIsIDI0OCwgMTg1LCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDIyMCwgOTQsIDIsIDIzNCwgMjA2LCAxNDcsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAKKyAgICAxNywgMTAsIDI3LCAyMTcsIDgxLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCAxMTIsIDIzMSwgMTkzLCAKKyAgICA1MywgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjQyLCAyNDUsIDIsIDExMiwgMjMxLCAKKyAgICAxOTMsIDUzLCAxNywgMTAsIDI3LCAyNDIsIDI0NSwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTEyLCAKKyAgICAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIAorICAgIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDEyMiwgMiwgCisgICAgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDEyMiwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAxNTEsIDIsIDExMiwgCisgICAgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAxNTEsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjM0LCAxMzAsIDIsIDExMiwgCisgICAgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyMzQsIDEzMCwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAKKyAgICAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgCisgICAgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgCisgICAgNjAsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIAorICAgIDIzNCwgMTMwLCA1MywgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAKKyAgICAyMjMsIDk2LCA1MywgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDIyMywgOTYsIDUzLCAxNywgMTAsIDI3LCAyMjIsIDI3LCAKKyAgICAyLCAyMjMsIDk2LCA1MywgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDIyMywgOTYsIDUzLCAxNywgMTAsIDI3LCAyMTcsIAorICAgIDgxLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAKKyAgICAyNTQsIDE5NywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA3OSwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDI0MiwgMjQ1LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjQyLCAyNDUsIDIsIDc5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjIxLCAxNjcsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgNzksIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNzksIAorICAgIDQwLCAxNywgMTAsIDI3LCAxMjIsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAxMjIsIDIsIDc5LCA0MCwgCisgICAgMTcsIDEwLCAyNywgMTUxLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMTUxLCAyLCA3OSwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIzNCwgMTMwLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjM0LCAxMzAsIDIsIDc5LCA0MCwgCisgICAgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIDc5LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgCisgICAgNzksIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxNTEsIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxMjIsIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAyMzQsIDEzMCwgNDAsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDY2LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjIwLCA2MCwgMiwgMjIzLCA5NiwgNDAsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAyMjMsIDk2LCA0MCwgCisgICAgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgMjIzLCA5NiwgNDAsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAyMjMsIDk2LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMTIyLCA2NSwgMTcsIAorICAgIDEwLCAyNywgMjIwLCA2MCwgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA2NiwgNjUsIDE3LCAxMCwgCisgICAgMjcsIDIyMSwgMTY3LCAyLCAyNDEsIDIxOSwgNjUsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDI0MSwgMjE5LCA2NSwgMTcsIAorICAgIDEwLCAyNywgMjE3LCA4MSwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTUxLCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDIyMSwgMTY3LCAyLCAxMjIsIDE0NywgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDIzNCwgMTMwLCAxNDcsIDE3LCAKKyAgICAxMCwgMjcsIDIyMCwgNjAsIDIsIDE1MSwgMTQ3LCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxMjIsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjIwLCA2MCwgMiwgMjM0LCAxMzAsIDE0NywgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgNjYsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjEwLCAxMTIsIDIsIDY2LCAxNDcsIDE3LCAxMCwgMjcsIDExMiwgMiwgMjQ0LCAxNjQsIDQwLCAxNywgMTAsIDI3LCAKKyAgICAxMTIsIDIsIDI0NCwgMTY0LCA1MywgMTcsIDIyNiwgMTQ2LCA0MywgMjI2LCAzLCAyMjYsIDE0NiwgNDQsIDIyNiwgMywgMTAsIAorICAgIDI3LCAyMTcsIDgsIDIsIDE1MSwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDEyMiwgMiwgMTUxLCA0MCwgCisgICAgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAxMjIsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTIyLCAyLCAKKyAgICA2NiwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMjM0LCAxMzAsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjE3LCA4LCAKKyAgICAyLCA2NiwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgCisgICAgMjE3LCA4LCAyLCA2NiwgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAxNTEsIDIsIDY2LCAyLCAxMjIsIDQwLCAxNywgCisgICAgMTAsIDI3LCAxNTEsIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAxMjIsIDIsIDY2LCAyLCA3OSwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDEyMiwgMiwgNjYsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTIyLCAKKyAgICAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTUxLCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMjEsIAorICAgIDE2NywgMiwgMTUxLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDY2LCAyLCAxMjIsIAorICAgIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgNjYsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCA2NiwgCisgICAgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAKKyAgICAyLCA2NiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAxMjIsIDIsIDEyMiwgNDAsIDE3LCAxMCwgMjcsIAorICAgIDIyMiwgMjcsIDIsIDEyMiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjIwLCA2MCwgMiwgMTIyLCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDEyMiwgMiwgNjYsIAorICAgIDY1LCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxNTEsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNjYsIAorICAgIDIsIDIzNCwgMTMwLCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNjYsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgCisgICAgMjIwLCA2MCwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDEwLCAKKyAgICAyNywgMjQ4LCAyMTcsIDIsIDEyMiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAyMzQsIAorICAgIDEzMCwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMjM0LCAxMzAsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgCisgICAgMjE3LCA4MSwgMiwgNjYsIDIsIDEyMiwgNDAsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgCisgICAgMTAsIDI3LCAyMTcsIDgxLCAyLCA2NiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgxLCAyLCA2NiwgMiwgNzksIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgMTUxLCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA2NiwgMiwgCisgICAgNjYsIDQwLCAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIAorICAgIDY2LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjQyLCAyNDUsIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDI0MiwgMjQ1LCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyNDIsIDI0NSwgMiwgNjYsIDIsIDExMiwgMjMxLCAKKyAgICAxOTMsIDQwLCAxNywgMTAsIDI3LCAyNDQsIDE0MywgMiwgMjM0LCAxMzAsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjQ0LCAKKyAgICAxNDMsIDIsIDIzNCwgMTMwLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyNCwgODIsIDIsIDY2LCAyLCAxMjIsIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMjQsIDgyLCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTIyLCAyLCA2NiwgCisgICAgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMjIsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIAorICAgIDEyMiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxNTEsIDIsIDE1MSwgNjUsIDE3LCAKKyAgICAxMCwgMjcsIDIzMywgMTAzLCAyLCAxNTEsIDIsIDE1MSwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAyMzQsIDEzMCwgCisgICAgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMjM0LCAxMzAsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjMzLCAKKyAgICAxMDMsIDIsIDY2LCAyLCAxMjIsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgNjYsIDIsIDEyMiwgNjUsIDE3LCAxMCwgCisgICAgMjcsIDY2LCAyLCAxMjIsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDY2LCAyLCAxMjIsIDIsIDY2LCA2NSwgMTcsIDEwLCAKKyAgICAyNywgNjYsIDIsIDEyMiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA2NiwgMiwgMTUxLCAyLCAxMjIsIDY1LCAxNywgMTAsIAorICAgIDI3LCA2NiwgMiwgMTUxLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDY2LCAyLCAyMzQsIDEzMCwgMiwgMTUxLCA2NSwgMTcsIAorICAgIDEwLCAyNywgNjYsIDIsIDIzNCwgMTMwLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDY2LCAyLCAxNTEsIDIsIDIzNCwgMTMwLCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjQxLCAyMTksIDIsIDY2LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNDEsIDIxOSwgMiwgNjYsIAorICAgIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTIyLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIAorICAgIDIsIDEyMiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDE1MSwgMiwgNjYsIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMjgsIDYzLCAyLCAxNTEsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTUxLCAyLCAxMTIsIAorICAgIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgCisgICAgMiwgNjYsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgNzksIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDIzNCwgMTMwLCAyLCA3OSwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTUxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTUxLCAyLCAKKyAgICAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAyMzQsIDEzMCwgMiwgNzksIDQwLCAxNywgMTAsIAorICAgIDI3LCAyMTcsIDgsIDIsIDIzNCwgMTMwLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCA2NiwgCisgICAgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDY2LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgCisgICAgMTUxLCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAxNTEsIDIsIDEyMiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDE1MSwgMiwgNjYsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMjM0LCAKKyAgICAxMzAsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAxMjIsIDIsIDc5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjIwLCA2MCwgMiwgMTIyLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAxMjIsIDIsIDc5LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgNjYsIAorICAgIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDEyMiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMTUxLCAyLCAKKyAgICA3OSwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA2NiwgMiwgNjYsIDIsIDc5LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTIyLCAKKyAgICAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIyNCwgODIsIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMzMsIDEwMywgCisgICAgMiwgMTIyLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAKKyAgICAyMzQsIDI1MSwgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTUxLCAyLCAxMjIsIDY1LCAxNywgCisgICAgMTAsIDI3LCA2NiwgMiwgMjM0LCAxMzAsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgMiwgNjYsIAorICAgIDY1LCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgCisgICAgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAxNTEsIDIsIDEyMiwgNDAsIDE3LCAxMCwgMjcsIDE1MSwgMiwgCisgICAgMTIyLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDEyMiwgMiwgMTUxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDY2LCAyLCAKKyAgICAxNTEsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDY2LCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDI1MiwgCisgICAgNTUsIDIsIDEyMiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDEwLCAKKyAgICAyNywgMjU0LCAxOTcsIDIsIDE1MSwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCA2NiwgMiwgNjYsIDY1LCAKKyAgICAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMjM0LCAxMzAsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgCisgICAgMTUxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIyMiwgNCwgMjE0LCAxMjgsIDI1MywgMjM4LCAyMzQsIDQsIDIxOCwgMTMwLCAKKyAgICA1LCA1MywgMTcsIDEwLCAyNywgMjI0LCA3OCwgMjE0LCAxMjgsIDI1MywgMjM4LCAyMzQsIDQsIDIxOCwgMTMwLCA1LCA1MywgCisgICAgMTcsIDEwLCAyNywgMjU0LCAxNTMsIDUzLCAxNywgMTAsIDI3LCAyNTQsIDE4MywgNTMsIDE3LCAxMCwgMjcsIDIzMCwgMTUzLCAKKyAgICA1MywgMTcsIDEwLCAyNywgMjIyLCA1LCA1MywgMTcsIDEwLCAyNywgMjIzLCAxNDMsIDUzLCAxNywgMTAsIDI3LCAyNTQsIAorICAgIDE3MiwgNTMsIDE3LCAxMCwgMjcsIDIxMiwgNDksIDUzLCAxNywgMTAsIDI3LCAyMjIsIDQsIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMjIsIDMsIDI1NCwgMTcyLCAyMTIsIDQ4LCAxMCwgMjcsIDIzNSwgMTM0LCAyMjMsIDM0LCA1MCwgMTAsIDI3LCAyNTEsIAorICAgIDIzMCwgMjU0LCAzOSwgMjU0LCA0MCwgNDUsIDIyMSwgMTU2LCA0NSwgMjIxLCA0NSwgNDUsIDIyMCwgMjMzLCA0NSwgMjIwLCAKKyAgICAyMjIsIDQ1LCAyMjAsIDIxMSwgNDUsIDIyMCwgMjAwLCA0NSwgMjIwLCAxODksIDQ1LCAyMjAsIDE3OCwgNDUsIDIyMCwgCisgICAgMTY3LCA0NSwgMjIxLCAxNTUsIDQ1LCAyMjEsIDE0NCwgNDUsIDIyMSwgMTMzLCA0NSwgMjIxLCAxMjIsIDQ1LCAyMjEsIAorICAgIDExMSwgNDUsIDIyMSwgMTAwLCA0NSwgMjIxLCA4OSwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgMjQ5LCAyMTksIDIyNCwgCisgICAgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDEwOSwgMjQ5LCAyMTksIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDEwOSwgMjQzLCAKKyAgICAyMjksIDIxOCwgMTI5LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAyNDksIDIyNiwgMjI0LCAxOTQsIDI0NCwgMjAsIAorICAgIDMxLCA2NywgMjIwLCAxNTAsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDI0NSwgMzEsIDc4LCAyMjQsIDE5NCwgMjQ0LCAKKyAgICAyMCwgMzEsIDY3LCAyMjQsIDEzLCA3OCwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDMsIDcxLCAyMzMsIDIwLCAxMjcsIAorICAgIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQ0LCA3MSwgMjMzLCAyMCwgMjUxLCAxNTYsIDIyNCwgMTk0LCAyNDQsIDIwLCAKKyAgICAzMSwgNjcsIDIwMywgMjQ1LCAxNjMsIDM4LCAyNywgNDMsIDI0MiwgMjcsIDM4LCAyNywgNDQsIDI0MiwgMjcsIDM4LCA1MiwgCisgICAgMjE2LCA4OSwgNDMsIDI0MiwgMjcsIDM4LCA1MiwgMjE2LCA4OSwgNDQsIDI0MiwgMjcsIDM4LCAyMzEsIDIzMywgNDMsIAorICAgIDI0MiwgMjcsIDM4LCAyMzEsIDIzMywgNDQsIDI0MiwgMjcsIDM4LCAyNDksIDE5NywgMjMxLCAyMzIsIDIyNCwgMTk0LCAKKyAgICAyNDQsIDIwLCAzMSwgNjcsIDExMywgNTksIDIzMywgNTYsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDI0NSwgMTYwLCAKKyAgICAyNDgsIDE1NiwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgMjQ1LCAxNTEsIDI0OCwgMTU2LCAyMjQsIDE5NCwgMjQ0LCAKKyAgICAyMCwgMzEsIDY3LCAxMjEsIDIzMiwgMjEzLCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAyMTIsIDMyLCAxMjEsIDIzMiwgCisgICAgMjEzLCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0MywgMjI2LCAzLCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAKKyAgICA0NCwgMjI2LCAzLCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0MywgMjQ5LCA5OSwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAKKyAgICAyMCwgMzEsIDY3LCA0NCwgMjQ5LCA5OSwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0MywgMjE2LCA2LCAyMjAsIAorICAgIDUzLCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQ0LCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgMjI0LCAxOTQsIAorICAgIDI0NCwgMjAsIDMxLCA2NywgNDMsIDg1LCAyMzMsIDIwLCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQ0LCA4NSwgCisgICAgMjMzLCAyMCwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0MywgNTIsIDI1NCwgMTEwLCAxMjcsIDIyNCwgMTk0LCAKKyAgICAyNDQsIDIwLCAzMSwgNjcsIDQ0LCA1MiwgMjU0LCAxMTAsIDEyNywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDMsIAorICAgIDI1NCwgMTEwLCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQ0LCAyNTQsIDExMCwgMTI3LCAyMjQsIDE5NCwgCisgICAgMjQ0LCAyMCwgMzEsIDY3LCA0MywgMjQ5LCAxNjEsIDEyNywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDQsIDI0OSwgCisgICAgMTYxLCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQzLCA3MSwgMjQ5LCAxNjEsIDEyNywgMjI0LCAxOTQsIAorICAgIDI0NCwgMjAsIDMxLCA2NywgNDQsIDcxLCAyNDksIDE2MSwgMTI3LCAyMjAsIDEzMSwgMjQ3LCAxMjAsIDcxLCAyMjAsIDEzMSwgCisgICAgMjQ3LCAxMjAsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQzLCA0MiwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIAorICAgIDY3LCA0NCwgNDIsIDEyNywgMjQ4LCAxNTUsIDIyNiwgMTE5LCAyNTAsIDE3MiwgMjI2LCAxMTksIDIxMiwgMzIsIDIyNiwgCisgICAgMTE5LCA1MiwgMjEyLCAzMiwgMjI2LCAxMTksIDI0OCwgMTU1LCAxMjEsIDIzMiwgMjEzLCAyNTAsIDE3MiwgMTIxLCAyMzIsIAorICAgIDIxMywgMjEyLCAzMiwgMTIxLCAyMzIsIDIxMywgNCwgMjQ5LCAyMTksIDQsIDEwOSwgMjQ5LCAyMTksIDQsIDI0MywgMjI5LCAKKyAgICAyMTgsIDEyOSwgNCwgMjIwLCAxNTAsIDQsIDI0OSwgMjI2LCA0LCAyMjQsIDEzLCA3OCwgNCwgMjQ1LCAzMSwgNzgsIDQsIAorICAgIDI0NSwgMTYwLCAyNDgsIDE1NiwgNCwgNDMsIDIyNiwgMywgNCwgNDQsIDIyNiwgMywgNCwgNDMsIDI0OSwgOTksIDEyNywgNCwgCisgICAgNDQsIDI0OSwgOTksIDEyNywgNCwgNDMsIDIxNiwgNiwgMjIwLCA1MywgMTI3LCA0LCA0NCwgMjE2LCA2LCAyMjAsIDUzLCAKKyAgICAxMjcsIDQsIDU0LCA1MCwgNCwgMjU0LCAxMjYsIDQsIDI1MywgMjE2LCA0LCA5NiwgNTAsIDQsIDI0MCwgMTY3LCA0LCAyMzMsIAorICAgIDE1LCA1MCwgNCwgMjQyLCAxMzAsIDUwLCA0LCAyNDUsIDk4LCA1MCwgNCwgMjIzLCA1MCwgMjE5LCA0NiwgNCwgMjQ3LCAKKyAgICAxMzIsIDUwLCA0LCAyMjUsIDE4MiwgNTAsIDQsIDI0OSwgMjE3LCAyNTMsIDIwNiwgMTAsIDI0NCwgMTY0LCA1MywgMTcsIAorICAgIDEwLCAyMTcsIDQ0LCAyLCAyNDQsIDE2NCwgNDgsIDEwLCAyNDgsIDE4MywgNTMsIDE3LCAxMCwgMjE3LCA3OCwgMjQ0LCAxLCAKKyAgICAxMCwgMjM0LCAyMDQsIDUzLCAxNywgMTAsIDI0NCwgMTY2LCA1MywgMTcsIDEwLCAyNDQsIDE2NiwgMTQ3LCAxNywgMTAsIAorICAgIDI0OCwgMTg1LCA1MywgMTcsIDEwLCAyNDgsIDE4NSwgMTQ3LCAxNywgMTAsIDIzNCwgMjA2LCA1MywgMTcsIDEwLCAyMzQsIAorICAgIDIwNiwgMTQ3LCAxNywgMTAsIDIyMCwgOTQsIDUzLCAxNywgMTAsIDIyMCwgOTQsIDE0NywgMTcsIDEwLCAyMTgsIDQ2LCA1MywgCisgICAgMTcsIDEwLCAyMTgsIDQ2LCAxNDcsIDE3LCAxMCwgMSwgMjAyLCA1MywgMTcsIDEwLCAxLCAxMTIsIDIsIDIzMSwgMjI4LCAKKyAgICA3NywgNTMsIDE3LCAxMCwgMSwgMTEyLCAyLCAyMzEsIDIyOCwgNzcsIDQwLCAxNywgMTAsIDEsIDExMiwgMiwgMjAyLCA3NywgCisgICAgNTMsIDE3LCAxMCwgMSwgMTEyLCAyLCAyMDIsIDc3LCA0MCwgMTcsIDEwLCAxLCAyMTIsIDMxLCAyLCAyMDIsIDc3LCA1MywgCisgICAgMTcsIDEwLCAxLCAyMTIsIDMxLCAyLCAyMDIsIDc3LCA0MCwgMTcsIDEwLCAxLCAxMTIsIDIsIDIwMiwgMjUyLCA0MywgNTMsIAorICAgIDE3LCAxMCwgMSwgMTEyLCAyLCAyMDIsIDI1MiwgNDMsIDQwLCAxNywgMTAsIDEsIDc5LCAyLCAyMDIsIDc3LCA1MywgMTcsIAorICAgIDEwLCAxLCA3OSwgMiwgMjAyLCA3NywgNDAsIDE3LCAxMCwgMSwgNzksIDIsIDIwMiwgNzcsIDY1LCAxNywgMTAsIDEsIDc5LCAKKyAgICAyLCAyMDIsIDc3LCAxNDcsIDE3LCAxMCwgMSwgMTEyLCA1MywgMTcsIDEwLCAxLCAxMTIsIDQwLCAxNywgMTAsIDEsIDI1MiwgCisgICAgNTUsIDUzLCAxNywgMTAsIDEsIDI1MiwgNTUsIDQwLCAxNywgMTAsIDEsIDI1MiwgNTUsIDY1LCAxNywgMTAsIDEsIDI1MiwgCisgICAgNTUsIDE0NywgMTcsIDEwLCAxLCAyMTcsIDgsIDIzMSwgMTY1LCA1MywgMTcsIDEwLCAxLCAyMTcsIDgsIDIzMSwgMTY1LCAKKyAgICA0MCwgMTcsIDEwLCAxLCAyMTcsIDgsIDUzLCAxNywgMTAsIDEsIDIxNywgOCwgNDAsIDE3LCAxMCwgMSwgMjE3LCA4LCA2NSwgCisgICAgMTcsIDEwLCAxLCAyMTcsIDgsIDE0NywgMTcsIDEwLCAxLCAyMTYsIDE5MywgNTMsIDE3LCAxMCwgMSwgMjE2LCAxOTMsIDQwLCAKKyAgICAxNywgMTAsIDEsIDIxNiwgMTkzLCA2NSwgMTcsIDEwLCAxLCAyMTYsIDE5MywgMTQ3LCAxNywgMTAsIDEsIDE1MSwgNTMsIAorICAgIDE3LCAxMCwgMSwgMTUxLCA0MCwgMTcsIDEwLCAxLCAxNTEsIDY1LCAxNywgMTAsIDEsIDE1MSwgMTQ3LCAxNywgMTAsIDEsIAorICAgIDEyMiwgNTMsIDE3LCAxMCwgMSwgMTIyLCA0MCwgMTcsIDEwLCAxLCAxMjIsIDY1LCAxNywgMTAsIDEsIDEyMiwgMTQ3LCAxNywgCisgICAgMTAsIDEsIDIzNCwgMTMwLCA1MywgMTcsIDEwLCAxLCAyMzQsIDEzMCwgNDAsIDE3LCAxMCwgMSwgMjM0LCAxMzAsIDY1LCAKKyAgICAxNywgMTAsIDEsIDIzNCwgMTMwLCAxNDcsIDE3LCAxMCwgMSwgMjQ4LCAxOTYsIDUzLCAxNywgMTAsIDEsIDI0OCwgMTk2LCAKKyAgICA0MCwgMTcsIDEwLCAxLCAyMTYsIDIwMywgNTMsIDE3LCAxMCwgMSwgMjE2LCAyMDMsIDQwLCAxNywgMTAsIDEsIDIyMywgOTYsIAorICAgIDUzLCAxNywgMTAsIDEsIDIyMywgOTYsIDQwLCAxNywgMTAsIDEsIDIxMCwgMTA5LCA1MywgMTcsIDEwLCAxLCAyMTAsIDEwOSwgCisgICAgNDAsIDE3LCAxMCwgMSwgMjIxLCAxNjcsIDUzLCAxNywgMTAsIDEsIDIyMSwgMTY3LCA0MCwgMTcsIDEwLCAxLCAyMjEsIAorICAgIDE2NywgNjUsIDE3LCAxMCwgMSwgMjIxLCAxNjcsIDE0NywgMTcsIDEwLCAxLCAyMjAsIDYwLCA1MywgMTcsIDEwLCAxLCAKKyAgICAyMjAsIDYwLCA0MCwgMTcsIDEwLCAxLCAyMjAsIDYwLCA2NSwgMTcsIDEwLCAxLCAyMjAsIDYwLCAxNDcsIDE3LCAxMCwgMSwgCisgICAgMjIyLCAyNywgNTMsIDE3LCAxMCwgMSwgMjIyLCAyNywgNDAsIDE3LCAxMCwgMSwgMjIyLCAyNywgNjUsIDE3LCAxMCwgMSwgCisgICAgMjIyLCAyNywgMTQ3LCAxNywgMTAsIDEsIDI0OCwgMjE3LCA1MywgMTcsIDEwLCAxLCAyNDgsIDIxNywgNDAsIDE3LCAxMCwgCisgICAgMSwgMjQ4LCAyMTcsIDY1LCAxNywgMTAsIDEsIDI0OCwgMjE3LCAxNDcsIDE3LCAxMCwgMSwgMjE3LCA4MSwgNTMsIDE3LCAKKyAgICAxMCwgMSwgMjE3LCA4MSwgNDAsIDE3LCAxMCwgMSwgMjE3LCA4MSwgNjUsIDE3LCAxMCwgMSwgMjE3LCA4MSwgMTQ3LCAxNywgCisgICAgMTAsIDEsIDIxMCwgMTEyLCA1MywgMTcsIDEwLCAxLCAyMTAsIDExMiwgNDAsIDE3LCAxMCwgMSwgMjEwLCAxMTIsIDY1LCAKKyAgICAxNywgMTAsIDEsIDIxMCwgMTEyLCAxNDcsIDE3LCAxMCwgMSwgMjU0LCAxOTcsIDUzLCAxNywgMTAsIDEsIDI1NCwgMTk3LCAKKyAgICA0MCwgMTcsIDEwLCAxLCAyNTQsIDE5NywgNjUsIDE3LCAxMCwgMSwgMjU0LCAxOTcsIDE0NywgMTcsIDEwLCAxLCAyNDIsIAorICAgIDI0NSwgNTMsIDE3LCAxMCwgMSwgMjQyLCAyNDUsIDQwLCAxNywgMTAsIDEsIDI0MiwgMjQ1LCA2NSwgMTcsIDEwLCAxLCAKKyAgICAyNDIsIDI0NSwgMTQ3LCAxNywgMTAsIDEsIDI0NCwgMTQzLCA1MywgMTcsIDEwLCAxLCAyNDQsIDE0MywgNDAsIDE3LCAxMCwgCisgICAgMSwgMjQ0LCAxNDMsIDY1LCAxNywgMTAsIDEsIDI0NCwgMTQzLCAxNDcsIDE3LCAxMCwgMSwgMjI0LCA4MiwgNTMsIDE3LCAKKyAgICAxMCwgMSwgMjI0LCA4MiwgNDAsIDE3LCAxMCwgMSwgMjI0LCA4MiwgNjUsIDE3LCAxMCwgMSwgMjI0LCA4MiwgMTQ3LCAxNywgCisgICAgMTAsIDEsIDIzNCwgMjUxLCA1MywgMTcsIDEwLCAxLCAyMzQsIDI1MSwgNDAsIDE3LCAxMCwgMSwgMjM0LCAyNTEsIDY1LCAKKyAgICAxNywgMTAsIDEsIDIzNCwgMjUxLCAxNDcsIDE3LCAxMCwgMSwgMjMzLCAxMDMsIDUzLCAxNywgMTAsIDEsIDIzMywgMTAzLCAKKyAgICA0MCwgMTcsIDEwLCAxLCAyMzMsIDEwMywgNjUsIDE3LCAxMCwgMSwgMjMzLCAxMDMsIDE0NywgMTcsIDEwLCAxLCA2NiwgNTMsIAorICAgIDE3LCAxMCwgMSwgNjYsIDQwLCAxNywgMTAsIDEsIDY2LCA2NSwgMTcsIDEwLCAxLCA2NiwgMTQ3LCAxNywgMTAsIDEsIDIyOCwgCisgICAgNjMsIDUzLCAxNywgMTAsIDEsIDIyOCwgNjMsIDQwLCAxNywgMTAsIDEsIDIyOCwgNjMsIDY1LCAxNywgMTAsIDEsIDIyOCwgCisgICAgNjMsIDE0NywgMTcsIDEwLCAxLCAyNDEsIDIxOSwgNTMsIDE3LCAxMCwgMSwgMjQxLCAyMTksIDQwLCAxNywgMTAsIDEsIAorICAgIDI0MSwgMjE5LCA2NSwgMTcsIDEwLCAxLCAyNDEsIDIxOSwgMTQ3LCAxNywgMTAsIDEsIDIxMiwgMzEsIDUzLCAxNywgMTAsIAorICAgIDEsIDIxMiwgMzEsIDQwLCAxNywgMTAsIDEsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDEsIDExMiwgMjMxLCAxOTMsIAorICAgIDQwLCAxNywgMTAsIDEsIDc5LCA1MywgMTcsIDEwLCAxLCA3OSwgNDAsIDE3LCAxMCwgMSwgNzksIDY1LCAxNywgMTAsIDEsIAorICAgIDc5LCAxNDcsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMTIsIDIsIDIzMSwgMjI4LCA3NywgNTMsIDE3LCAxMCwgMjcsIAorICAgIDIzMywgMTAzLCAyLCAxMTIsIDIsIDIzMSwgMjI4LCA3NywgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMTIsIDIsIAorICAgIDIwMiwgNzcsIDUzLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTEyLCAyLCAyMDIsIDc3LCA0MCwgMTcsIDEwLCAyNywgCisgICAgMjMzLCAxMDMsIDIsIDExMiwgMiwgMjAyLCAyNTIsIDQzLCA1MywgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDExMiwgMiwgCisgICAgMjAyLCAyNTIsIDQzLCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDExMiwgNTMsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAKKyAgICAyLCAxMTIsIDQwLCAxNywgMjEwLCA4NywgMjExLCAyNDUsIDIyOCwgNzMsIDIxOSwgMTgsIDEyNiwgMjQ1LCAzMSwgNzgsIAorICAgIDEyNiwgMjIzLCAyNTQsIDc4LCAxMjYsIDU0LCA1MCwgMTI2LCAyNDcsIDEzMiwgNTAsIDEyNiwgMjI1LCAxODIsIDUwLCAKKyAgICAxMjYsIDI1NCwgMTI2LCAxMjYsIDI1NCwgNTcsIDEyNiwgNDMsIDIyNiwgMywgMTI2LCA0NCwgMjI2LCAzLCAxMjYsIDI1MywgCisgICAgMjE2LCAxMjYsIDk2LCA1MCwgMTI2LCAyNDksIDIxOSwgMTI2LCAyNDAsIDE2NywgMTI2LCAyNDMsIDIyOSwgMjE4LCAxMjksIAorICAgIDEyNiwgMjE5LCA0NiwgMTI2LCAyMSwgMjEwLCA4NiwgMTI2LCAyMSwgMTEwLCAxMjYsIDIxLCAxMDUsIDEyNiwgMjEsIDE1OCwgCisgICAgMTI2LCAyMSwgMTYxLCAxMjYsIDIxLCAxODksIDEyNiwgMjEsIDE5NCwgMTI2LCAyMSwgMTk4LCAxMjYsIDIxLCAxOTUsIAorICAgIDEyNiwgMjEsIDIwMCwgMTI2LCAyNDksIDIyNiwgMTI2LCAyMjAsIDE1MCwgMTI2LCAyMzMsIDE1LCA1MCwgMTI2LCAyNDUsIAorICAgIDk4LCA1MCwgMTI2LCAyNDIsIDEzMCwgNTAsIDEyNiwgMjI0LCAxMywgNzgsIDEyNiwgMjQ5LCAyMTcsIDI1MywgMjA2LCAKKyAgICAxMjYsIDcsIDYsIDEsIDYxLCAxMjYsIDcsIDYsIDEsIDI1MywgMTU4LCAxMjYsIDcsIDYsIDEsIDI1MSwgNjYsIDEyNiwgNywgCisgICAgNiwgMSwgMjQ5LCA2MCwgMTI2LCA3LCA2LCAxLCA3NSwgMTI2LCA3LCA2LCAxLCAyNDUsIDYsIDEyNiwgNywgNiwgMSwgMjQzLCAKKyAgICAyMDIsIDEyNiwgNywgNiwgMSwgMjQyLCA2MCwgMTI2LCA3LCA2LCAxLCA3MywgMTI2LCA3LCA2LCAxLCAyMzUsIDE0NCwgCisgICAgMTI2LCA3LCA2LCAxLCAyMzUsIDIzLCAxMjYsIDcsIDYsIDEsIDE1NiwgMTI2LCA3LCA2LCAxLCAxOTMsIDEyNiwgNywgNiwgCisgICAgMSwgMjMwLCAyNSwgMTI2LCA3LCA2LCAxLCA3NiwgMTI2LCA3LCA2LCAxLCAyMjYsIDEwNSwgMTI2LCA3LCA2LCAxLCAyMjQsIAorICAgIDk2LCAxMjYsIDcsIDYsIDEsIDE1MywgMTI2LCA3LCA2LCAxLCAyMjIsIDkxLCAxMjYsIDcsIDYsIDEsIDIxNywgMTUyLCAKKyAgICAxMjYsIDcsIDYsIDEsIDcwLCAxMjYsIDcsIDYsIDEsIDIxNCwgMTA1LCAxMjYsIDcsIDYsIDEsIDIxMiwgOTgsIDEyNiwgNywgCisgICAgNiwgMSwgMjExLCAxNzgsIDEyNiwgNywgNiwgMSwgMjExLCAxMTcsIDEyNiwgNywgNiwgMSwgMjEwLCAxNTksIDEyNiwgNDMsIAorICAgIDQyLCAxMjcsIDEyNiwgMjIzLCA1MCwgMjE5LCA0NiwgMTI2LCA0NCwgNDIsIDEyNywgMTI2LCAyNTAsIDMxLCAyNTUsIDE0LCAKKyAgICAxMjYsIDEyMSwgMjMyLCAyMTMsIDEyNiwgMjQyLCAxMzcsIDI1NSwgMTQsIDEyNiwgNywgNCwgMSwgNjEsIDEyNiwgNywgNCwgCisgICAgMSwgMjUzLCAxNTgsIDEyNiwgNywgNCwgMSwgMjUxLCA2NiwgMTI2LCA3LCA0LCAxLCAyNDksIDYwLCAxMjYsIDcsIDQsIDEsIAorICAgIDc1LCAxMjYsIDcsIDQsIDEsIDI0NSwgNiwgMTI2LCA3LCA0LCAxLCAyNDMsIDIwMiwgMTI2LCA3LCA0LCAxLCAyNDIsIDYwLCAKKyAgICAxMjYsIDcsIDQsIDEsIDczLCAxMjYsIDcsIDQsIDEsIDIzNSwgMTQ0LCAxMjYsIDcsIDQsIDEsIDIzNSwgMjMsIDEyNiwgNywgCisgICAgNCwgMSwgMTU2LCAxMjYsIDcsIDQsIDEsIDE5MywgMTI2LCA3LCA0LCAxLCAyMzAsIDI1LCAxMjYsIDcsIDQsIDEsIDc2LCAKKyAgICAxMjYsIDcsIDQsIDEsIDIyNiwgMTA1LCAxMjYsIDcsIDQsIDEsIDIyNCwgOTYsIDEyNiwgNywgNCwgMSwgMTUzLCAxMjYsIDcsIAorICAgIDQsIDEsIDIyMiwgOTEsIDEyNiwgNywgNCwgMSwgMjE3LCAxNTIsIDEyNiwgNywgNCwgMSwgNzAsIDEyNiwgNywgNCwgMSwgCisgICAgMjE0LCAxMDUsIDEyNiwgNywgNCwgMSwgMjEyLCA5OCwgMTI2LCA3LCA0LCAxLCAyMTEsIDE3OCwgMTI2LCA3LCA0LCAxLCAKKyAgICAyMTEsIDExNywgMTI2LCA3LCA0LCAxLCAyMTAsIDE1OSwgMTI2LCA0MywgMjQ5LCA5OSwgMTI3LCAxMjYsIDY3LCAyMzIsIAorICAgIDIxMywgMTI2LCA0NCwgMjQ5LCA5OSwgMTI3LCAxMjYsIDE4MiwgMTI2LCA0MywgNzEsIDIyNiwgMywgMTI2LCA0NCwgNzEsIAorICAgIDIyNiwgMywgMTAxLCAxMDksIDI0MywgMjI5LCAyMTgsIDEyOSwgMTAxLCA0MywgMjQ5LCAxNjEsIDEyNywgMTAxLCA0NCwgCisgICAgMjQ5LCAxNjEsIDEyNywgMTAxLCAxMDksIDI0OSwgMjE5LCAxMDEsIDU2LCAyMzAsIDIyNCwgMjQ3LCAxMjAsIDEwMSwgNTYsIAorICAgIDEsIDIxMSwgMjI3LCAxMDEsIDU2LCAxLCA0LCA2MSwgMTAxLCA1NiwgMSwgNCwgNzMsIDEwMSwgNTYsIDEsIDQsIDcwLCAKKyAgICAxMDEsIDU2LCAxLCA0LCA3NSwgMTAxLCA1NiwgMSwgNCwgNzYsIDEwMSwgNTYsIDEsIDQsIDE5MSwgMTAxLCA1NiwgMSwgNCwgCisgICAgMjEwLCAyMTIsIDEwMSwgNTYsIDEsIDQsIDIxMCwgMjQ0LCAxMDEsIDU2LCAxLCA0LCAyMTUsIDExOCwgMTAxLCAyMzQsIAorICAgIDIwMSwgMjI0LCAxNzMsIDIxOSwgMzEsIDc4LCAxMDEsIDU2LCAxLCA2MSwgMTAxLCA1NiwgMSwgNzMsIDEwMSwgNTYsIDEsIAorICAgIDcwLCAxMDEsIDU2LCAxLCA3NSwgMTAxLCA1NiwgMSwgNzYsIDEwMSwgNTYsIDEsIDE3NiwgMTAxLCA1NiwgMSwgMjM0LCA5MiwgCisgICAgMTAxLCA1NiwgMSwgMjMzLCAyMTcsIDEwMSwgNTYsIDEsIDIzNCwgMTgyLCAxMDEsIDU2LCAxLCAyMzQsIDI4LCAxMDEsIDU2LCAKKyAgICAxLCAyMDYsIDEwMSwgNTYsIDEsIDIxOSwgMTkxLCAxMDEsIDU2LCAxLCAyMTgsIDgzLCAxMDEsIDU2LCAxLCAyMjEsIDE4MSwgCisgICAgMTAxLCA1NiwgMSwgMjE5LCA1OCwgMTAxLCA1NiwgMSwgMjE3LCAxMDUsIDEwMSwgNTYsIDEsIDIxNiwgMTE3LCAxMDEsIDU2LCAKKyAgICAxLCAyMTUsIDExOCwgMTAxLCA1NiwgMSwgMjE3LCAyMiwgMTAxLCA1NiwgMSwgMTExLCAxMDEsIDU2LCAxLCAxOTcsIDEwMSwgCisgICAgNTYsIDEsIDIyOCwgMjMzLCAxMDEsIDU2LCAxLCAyMjcsIDIzNywgMTAxLCA1NiwgMSwgMjI5LCAxMDcsIDEwMSwgNTYsIDEsIAorICAgIDIyOCwgNzQsIDEwMSwgNTYsIDEsIDE2MiwgMTAxLCA1NiwgMSwgMjQxLCAxODAsIDEwMSwgNTYsIDEsIDI0MCwgMjIyLCAKKyAgICAxMDEsIDU2LCAxLCAyNDEsIDIzOCwgMTAxLCA1NiwgMSwgMjQxLCA2OCwgMTAxLCA1NiwgMSwgMTg0LCAxMDEsIDU2LCAxLCAKKyAgICAyMzAsIDIzMCwgMTAxLCA1NiwgMSwgMjMwLCAxMDIsIDEwMSwgNTYsIDEsIDIzMSwgOTEsIDEwMSwgNTYsIDEsIDIzMCwgCisgICAgMTYxLCAxMDEsIDU2LCAxLCAxOTEsIDEwMSwgNTYsIDEsIDIxMCwgMjEyLCAxMDEsIDU2LCAxLCAyMTAsIDI0NCwgMTAxLCAKKyAgICA1NiwgMSwgMjA1LCAxMDEsIDU2LCAxLCAyMjMsIDM1LCAxMDEsIDU2LCAxLCAyMjIsIDE0MCwgMTAxLCA1NiwgMSwgMjIzLCAKKyAgICAxMjgsIDEwMSwgNTYsIDEsIDIyMiwgMjExLCAxMDEsIDU2LCAxLCAyMTIsIDY1LCAxMDEsIDU2LCAxLCAyMzAsIDI1LCAxMDEsIAorICAgIDU2LCAyMTMsIDEzNSwgMjE5LCAzMSwgNzgsIDEwMSwgNTYsIDIyMCwgMTU1LCAyMTksIDMxLCA3OCwgMTAxLCAyNCwgMjQ0LCAKKyAgICAxMDMsIDEwMSwgMjQsIDEsIDIzNCwgNTgsIDEwMSwgMjQsIDEsIDIxOCwgMjE1LCAxMDEsIDI0LCAxLCAyMzQsIDUxLCAxMDEsIAorICAgIDI0LCAxLCAyMjgsIDIyNiwgMTAxLCAyNCwgMSwgMjI4LCAyMjQsIDEwMSwgMjQsIDEsIDIyOCwgMjIzLCAxMDEsIDI0LCAxLCAKKyAgICAyMTYsIDEwMSwgMTAxLCAyNCwgMSwgMjE4LCAyMDQsIDEwMSwgMjQsIDEsIDIyMywgMjYsIDEwMSwgMjQsIDEsIDIyMywgMjEsIAorICAgIDEwMSwgMjQsIDEsIDIyMywgMTgsIDEwMSwgMjQsIDEsIDIyMywgMTEsIDEwMSwgMjQsIDEsIDIyMywgNiwgMTAxLCAyNCwgMSwgCisgICAgMjIzLCAxLCAxMDEsIDI0LCAxLCAyMjMsIDEyLCAxMDEsIDI0LCAxLCAyMjMsIDI0LCAxMDEsIDI0LCAxLCAyMzAsIDIxNywgCisgICAgMTAxLCAyNCwgMSwgMjI1LCA5NSwgMTAxLCAyNCwgMSwgMjE4LCAyMTIsIDEwMSwgMjQsIDEsIDIyNSwgODQsIDEwMSwgMjQsIAorICAgIDEsIDIxOSwgMTQ4LCAxMDEsIDI0LCAxLCAyMTgsIDIwOSwgMTAxLCAyNCwgMSwgMjM2LCA1NiwgMTAxLCAyNCwgMSwgMjUwLCAKKyAgICA0NiwgMTAxLCAyNCwgMSwgMjE4LCAyMTksIDEwMSwgMjQsIDEsIDI1MCwgMTA2LCAxMDEsIDI0LCAxLCAyMzQsIDExMCwgCisgICAgMTAxLCAyNCwgMSwgMjE2LCAxNzMsIDEwMSwgMjQsIDEsIDIyNSwgMTMxLCAxMDEsIDI0LCAxLCAyNDEsIDE3MiwgMTAxLCAKKyAgICAyNCwgMSwgNjEsIDEwMSwgMjQsIDEsIDI1NCwgMjQzLCAxMDEsIDI0LCAxLCAxOTEsIDEwMSwgMjQsIDEsIDIxMSwgOTIsIAorICAgIDEwMSwgMjQsIDEsIDI0NSwgMTE3LCAxMDEsIDI0LCAxLCA3NSwgMTAxLCAyNCwgMSwgMjExLCAzNiwgMTAxLCAyNCwgMSwgCisgICAgMjExLCA0NywgMTAxLCAyNCwgMSwgNzYsIDEwMSwgMjQsIDEsIDIxMiwgNjUsIDEwMSwgMjQsIDEsIDIxMiwgNjIsIDEwMSwgCisgICAgMjQsIDEsIDIyNiwgMjM0LCAxMDEsIDI0LCAxLCAyMTAsIDI0NCwgMTAxLCAyNCwgMSwgNzAsIDEwMSwgMjQsIDEsIDIxMiwgCisgICAgMTEsIDEwMSwgMjQsIDEsIDIxMiwgMjIsIDEwMSwgMjQsIDEsIDIxMSwgMjUwLCAxMDEsIDI0LCAxLCAyMTAsIDIxMiwgMTAxLCAKKyAgICAyNCwgMSwgMjQ1LCA1NSwgMTAxLCAyNCwgMSwgMjExLCA4LCAxMDEsIDI0LCAxLCA3MywgMTI2LCAyNTAsIDE3NiwgNTAsIAorICAgIDEyNiwgMjI0LCAyMjgsIDUwLCAxMjYsIDIyOCwgNTIsIDUwLCAxMjYsIDIzMSwgMjMyLCAxMjYsIDI1MSwgMTM1LCAxMzAsIAorICAgIDEyNiwgMjExLCA0MCwgNTAsIDEyNiwgMjExLCAyMTcsIDUwLCAxMDEsIDI0NCwgMTgsIDE5MiwgMjEzLCAyMzksIDEwMSwgCisgICAgMTQwLCA3NCwgMTAxLCAyMTQsIDE1MywgNzQsIDEwMSwgOTcsIDc0LCAxMDEsIDI0NiwgMTA0LCA3NCwgMTAxLCA4NSwgMjE4LCAKKyAgICAyMzQsIDEwMSwgNzEsIDI1MCwgMzUsIDIzNSwgMjA0LCAyNTQsIDk5LCAyNTQsIDEyMCwgMjM1LCAyMDQsIDI1NCwgOTksIAorICAgIDIyMCwgMTM3LCAyMzUsIDIwNCwgMjU0LCA5OSwgMjE2LCAyMzYsIDIyNiwgMjQ5LCAyMjMsIDcyLCAyNTAsIDE0MiwgMjIzLCAKKyAgICA3MiwgMjUwLCAxNDIsIDYyLCA1NywgMywgMjUzLCAxNDIsIDYxLCA2MiwgNTcsIDMsIDI1MywgMTExLCA3NSwgNjIsIDU3LCAKKyAgICAzLCAyNTMsIDEyMCwgNzMsIDYyLCA1NywgMywgMjUzLCA4OCwgNzYsIDYyLCA1NywgMywgMjUzLCAxMzgsIDcwLCA2MiwgNTcsIAorICAgIDMsIDI1MywgMTU3LCAyNDgsIDIyMSwgNjIsIDU3LCAzLCAyNTMsIDEwNCwgMjQ4LCA5MCwgNjIsIDU3LCAzLCAyNTMsIDE0NCwgCisgICAgMjQ4LCAzLCA2MiwgNTcsIDMsIDI1MywgMTM0LCAyNDcsIDE0NSwgNjIsIDU3LCAzLCAyNTMsIDk4LCAyNDYsIDc4LCA2MiwgCisgICAgNTcsIDMsIDI1MywgOTIsIDIzNSwgMTQxLCA2MiwgNTcsIDMsIDI1MywgMTAzLCAyMzUsIDEyNiwgNjIsIDU3LCAzLCAyNTMsIAorICAgIDExMywgMjM1LCA2OCwgNjIsIDU3LCAzLCAyNTMsIDg0LCAyMzUsIDUxLCA2MiwgNTcsIDMsIDI1MywgNzIsIDE3NiwgNjIsIAorICAgIDU3LCAzLCAyNTMsIDEwNSwgMjM0LCAxODIsIDYyLCA1NywgMywgMjUzLCA4MiwgMjM0LCA5MiwgNjIsIDU3LCAzLCAyNTMsIAorICAgIDc5LCAyMzQsIDI4LCA2MiwgNTcsIDMsIDI1MywgNjgsIDIzMywgMjE3LCA2MiwgNTcsIDMsIDI1MywgNjksIDE4NCwgNjIsIAorICAgIDU3LCAzLCAyNTMsIDEzNSwgMjMxLCA5MSwgNjIsIDU3LCAzLCAyNTMsIDc2LCAyMzAsIDIzMCwgNjIsIDU3LCAzLCAyNTMsIAorICAgIDEzMywgMjMwLCAxNjEsIDYyLCA1NywgMywgMjUzLCAxMjUsIDIzMCwgMTAyLCA2MiwgNTcsIDMsIDI1MywgMTQ2LCAxOTcsIAorICAgIDYyLCA1NywgMywgMjUzLCAxMjQsIDIyOSwgMTA3LCA2MiwgNTcsIDMsIDI1MywgMTE4LCAyMjgsIDIzMywgNjIsIDU3LCAzLCAKKyAgICAyNTMsIDk3LCAyMjgsIDc0LCA2MiwgNTcsIDMsIDI1MywgOTQsIDIyNywgMjM3LCA2MiwgNTcsIDMsIDI1MywgMTUzLCAxOTAsIAorICAgIDYyLCA1NywgMywgMjUzLCA3NywgMjI1LCAyMjEsIDYyLCA1NywgMywgMjUzLCAxMTAsIDIyNSwgMTA4LCA2MiwgNTcsIDMsIAorICAgIDI1MywgMTM3LCAyMjUsIDE2LCA2MiwgNTcsIDMsIDI1MywgOTksIDIyNCwgMTUwLCA2MiwgNTcsIDMsIDI1MywgMTMyLCAKKyAgICAyMjQsIDg4LCA2MiwgNTcsIDMsIDI1MywgNzEsIDIyNCwgNjksIDYyLCA1NywgMywgMjUzLCAxMjcsIDIyNCwgNTMsIDYyLCAKKyAgICA1NywgMywgMjUzLCAxMTYsIDIyNCwgNDIsIDYyLCA1NywgMywgMjUzLCA4OSwgMjA1LCA2MiwgNTcsIDMsIDI1MywgMTIxLCAKKyAgICAyMjMsIDEyOCwgNjIsIDU3LCAzLCAyNTMsIDk2LCAyMjMsIDM1LCA2MiwgNTcsIDMsIDI1MywgMTU1LCAyMjIsIDIxMSwgNjIsIAorICAgIDU3LCAzLCAyNTMsIDEyMiwgMjIyLCAxNDAsIDYyLCA1NywgMywgMjUzLCAxMTcsIDIwNiwgNjIsIDU3LCAzLCAyNTMsIDE0MCwgCisgICAgMjIxLCAxODEsIDYyLCA1NywgMywgMjUzLCAxMDgsIDIxOSwgMTkxLCA2MiwgNTcsIDMsIDI1MywgMTM2LCAyMTksIDU4LCAKKyAgICA2MiwgNTcsIDMsIDI1MywgOTEsIDIxOCwgODMsIDYyLCA1NywgMywgMjUzLCA5MCwgMjE3LCAxMDUsIDYyLCA1NywgMywgCisgICAgMjUzLCAxNTEsIDIxNywgMjIsIDYyLCA1NywgMywgMjUzLCAxMTIsIDIxNiwgMTE3LCA2MiwgNTcsIDMsIDI1MywgMTQ5LCAKKyAgICAxMTEsIDYyLCA1NywgMywgMjUzLCA4MCwgMjE1LCAxMTgsIDYyLCA1NywgMywgMjUzLCA5NSwgMjEyLCA2NSwgNjIsIDU3LCAKKyAgICAzLCAyNTMsIDc0LCAyMTIsIDIyLCA2MiwgNTcsIDMsIDI1MywgMTA5LCAyMTEsIDI1MCwgNjIsIDU3LCAzLCAyNTMsIDEwNywgCisgICAgMjExLCAyMjcsIDYyLCA1NywgMywgMjUzLCAxMzEsIDIxMCwgMTE2LCA2MiwgNTcsIDMsIDI1MywgNzUsIDIxMCwgOTQsIDYyLCAKKyAgICA1NywgMywgMjUzLCAxMjgsIDIxMCwgMjMsIDYyLCA1NywgMywgMjUzLCAxMjMsIDI1NSwgNzUsIDYyLCA1NywgMywgMjUzLCAKKyAgICAxMDYsIDI1NSwgNzQsIDYyLCA1NywgMywgMjUzLCA2NSwgMjUzLCAxOTIsIDYyLCA1NywgMywgMjUzLCA3OCwgMjQ2LCA0NiwgCisgICAgNjIsIDU3LCAzLCAyNTMsIDYxLCAyNDYsIDQ1LCA2MiwgNTcsIDMsIDI1MywgMTAxLCAyMjcsIDE3NCwgNjIsIDU3LCAzLCAKKyAgICAyNTMsIDExOSwgMjI0LCAxNDgsIDYyLCA1NywgMywgMjUzLCA4NywgMjI0LCAxNTIsIDYyLCA1NywgMywgMjUzLCA3MywgCisgICAgMjIzLCAxODYsIDYyLCA1NywgMywgMjUzLCAxMTUsIDIyMywgMTg1LCA2MiwgNTcsIDMsIDI1MywgODEsIDIyMiwgMjEwLCAKKyAgICA2MiwgNTcsIDMsIDI1MywgODMsIDIxNywgMTAyLCA2MiwgNTcsIDMsIDI1MywgNjMsIDIxNSwgNzgsIDYyLCA1NywgMywgCisgICAgMjUzLCA2MCwgMTA1LCA2MiwgNTcsIDE2LCAyNTMsIDEzMCwgNjIsIDU3LCAxNiwgMjUzLCAxMjksIDYyLCA1NywgMTYsIAorICAgIDI1MywgMTI2LCA2MiwgNTcsIDE2LCAyNTMsIDExNCwgNjIsIDU3LCAxNiwgMjUzLCAxMDIsIDYyLCA1NywgMTYsIDI1MywgCisgICAgMTAwLCA2MiwgNTcsIDE2LCAyNTMsIDkzLCA2MiwgNTcsIDE2LCAyNTMsIDg2LCA2MiwgNTcsIDE2LCAyNTMsIDg1LCA2MiwgCisgICAgNTcsIDE2LCAyNTMsIDcwLCA2MiwgNTcsIDE2LCAyNTMsIDY3LCA2MiwgNTcsIDE2LCAyNTMsIDY2LCA2MiwgNTcsIDE2LCAKKyAgICAyNTMsIDY0LCA2MiwgNTcsIDE2LCAyNTMsIDYyLCA2MiwgNTcsIDEwNiwgMjUzLCA1OSwgMjMxLCAxODUsIDYyLCA1NywgCisgICAgMTA2LCAyNTMsIDU4LCAyMTEsIDIyMSwgNjIsIDU3LCAxMDYsIDI1MywgNTcsIDI0OCwgNzQsIDYyLCA1NywgMTA2LCAyNTMsIAorICAgIDU2LCAyNDUsIDk1LCA2MiwgNTcsIDEwNiwgMjUzLCA1NSwgMjMxLCAxNTksIDYyLCA1NywgMTA2LCAyNTMsIDU0LCAyMTgsIAorICAgIDE2MiwgNjIsIDU3LCAxMDYsIDI1MywgNTMsIDI0NSwgMzcsIDYyLCA1NywgMTA2LCAyNTMsIDUyLCAyMjMsIDE1MywgNjIsIAorICAgIDU3LCAxMDYsIDI1MywgNTEsIDIyMCwgNjIsIDYyLCA1NywgMTA2LCAyNTMsIDUwLCAyNDEsIDIzNywgNjIsIDU3LCAxMDYsIAorICAgIDI1MywgNDksIDIxOSwgMjUsIDYyLCA1NywgMTA2LCAyNTMsIDQ4LCAyNTEsIDIwMywgNjIsIDU3LCAxMDYsIDI1MywgNDcsIAorICAgIDI0OSwgMTQ1LCA2MiwgNTcsIDEwNiwgMjUzLCA0NiwgMjUxLCAxMTUsIDYyLCA1NywgMTA2LCAyNTMsIDQ1LCAyMTIsIDIsIAorICAgIDYyLCA1NywgMTA2LCAyNTMsIDQ0LCAyNTIsIDEzNiwgNjIsIDU3LCAxMDYsIDI1MywgNDMsIDIyNiwgMjA1LCA2MiwgNTcsIAorICAgIDEwNiwgMjUzLCA0MiwgMjE4LCAyNTQsIDYyLCA1NywgMTA2LCAyNTMsIDQxLCAyNDksIDY4LCA2MiwgNTcsIDIzMCwgMTQyLCAKKyAgICAyNTMsIDQwLCAyMzQsIDIyNCwgNjIsIDU3LCAyMzAsIDE0MiwgMjUzLCAzOSwgMjM0LCAyMzIsIDYyLCA1NywgMTA2LCAyNTMsIAorICAgIDM4LCAyMjYsIDIxOCwgNjIsIDU3LCAxMDYsIDI1MywgMzcsIDIxMSwgMjM2LCA2MiwgNTcsIDEwNiwgMjUzLCAzNiwgNjIsIAorICAgIDU3LCAyMzAsIDE0MiwgMjUzLCAzNSwgMjU0LCAxNywgNjIsIDU3LCAyMzAsIDE0MiwgMjUzLCAzNCwgMjMxLCA1MiwgNjIsIAorICAgIDU3LCAxMDYsIDI1MywgMzMsIDI1MSwgMTM0LCA2MiwgNTcsIDEwNiwgMjUzLCAzMiwgMjQyLCAxNjYsIDYyLCA1NywgMTA2LCAKKyAgICAyNTMsIDMxLCA2MiwgNTcsIDEwNiwgMjUzLCAzMCwgMjExLCAyMTIsIDYyLCA1NywgMTA2LCAyNTMsIDI5LCA2MiwgNTcsIAorICAgIDEwNiwgMjUzLCAyOCwgNjIsIDU3LCAxMDYsIDI1MywgMjcsIDI0MCwgMjQ4LCA2MiwgNTcsIDEwNiwgMjUzLCAyNiwgNjIsIAorICAgIDU3LCAxMDYsIDI1MywgMjUsIDYyLCA1NywgMTA2LCAyNTMsIDI0LCA2MiwgNTcsIDIzMCwgMTQyLCAyNTMsIDIyLCAyMTUsIAorICAgIDkyLCA2MiwgNTcsIDEwNiwgMjUzLCAyMSwgNjIsIDU3LCAxMDYsIDI1MywgMjAsIDYyLCA1NywgMTA2LCAyNTMsIDE5LCAKKyAgICAyNDksIDI1MCwgNjIsIDU3LCAxMDYsIDI1MywgMTgsIDYyLCA1NywgMTA2LCAyNTMsIDE3LCA2MiwgNTcsIDEwNiwgMjUzLCAKKyAgICAxNiwgMjQzLCA5MywgNjIsIDU3LCAxMDYsIDI1MywgMTUsIDI1NCwgNCwgNjIsIDU3LCAxMDYsIDI1MywgMTQsIDYyLCA1NywgCisgICAgMTA2LCAyNTMsIDEzLCA2MiwgNTcsIDEwNiwgMjUzLCAxMiwgNjIsIDU3LCAxMDYsIDI1MywgMTEsIDYyLCA1NywgMTA2LCAKKyAgICAyNTMsIDEwLCA2MiwgNTcsIDEwNiwgMjUzLCA5LCA2MiwgNTcsIDEwNiwgMjUzLCA4LCA2MiwgNTcsIDEwNiwgMjUzLCA3LCAKKyAgICA2MiwgNTcsIDEwNiwgMjUzLCA2LCA2MiwgNTcsIDEwNiwgMjUzLCA1LCAyMzAsIDEzNCwgNjIsIDU3LCAxMDYsIDI1MywgNCwgCisgICAgNjIsIDU3LCAxMDYsIDI1MywgMywgMjE1LCAyMzUsIDYyLCA1NywgMTA2LCAyNTMsIDIsIDYyLCA1NywgMTA2LCAyNTMsIDEsIAorICAgIDYyLCA1NywgMTA2LCAyNTMsIDAsIDYyLCA1NywgMTA2LCAyNTIsIDI1NSwgNjIsIDU3LCAxMDYsIDI1MiwgMjU0LCA2MiwgCisgICAgNTcsIDEwNiwgMjUyLCAyNTMsIDYyLCA1NywgMTA2LCAyNTIsIDI1MiwgNjIsIDU3LCAxMDYsIDI1MiwgMjUxLCA2MiwgNTcsIAorICAgIDEwNiwgMjUyLCAyNTAsIDYyLCA1NywgMTA2LCAyNTIsIDI0OSwgNjIsIDU3LCAxMDYsIDI1MiwgMjQ4LCA2MiwgNTcsIDEwNiwgCisgICAgMjUyLCAyNDcsIDI0MSwgMjExLCA2MiwgNTcsIDEwNiwgMjUyLCAyMjYsIDI0NCwgMjgsIDYyLCA1NywgMTA2LCAyNTIsIAorICAgIDIyMywgMjUyLCAxMTYsIDYyLCA1NywgMTA2LCAyNTIsIDIxOCwgMjE5LCA1LCA2MiwgNTcsIDEwNiwgMjUyLCAyMTcsIDc0LCAKKyAgICA2MiwgNTcsIDEwNiwgMjUyLCAyMTYsIDYyLCA1NywgMTA2LCAyNTIsIDIxNSwgMjE3LCAyMzYsIDYyLCA1NywgMTA2LCAyNTIsIAorICAgIDIxNCwgNjIsIDU3LCAxMDYsIDI1MiwgMjEzLCA2MiwgNTcsIDEwNiwgMjUyLCAyMTIsIDIxMSwgMjU0LCAyNTAsIDEzOSwgCisgICAgNjIsIDU3LCAxMDYsIDI1MiwgMjExLCAyNTAsIDEzOSwgNjIsIDU3LCAxMDYsIDI1MiwgMjEwLCAyNTAsIDE0MCwgMjQzLCAKKyAgICAyNTUsIDYyLCA1NywgMTA2LCAyNTIsIDIwOSwgMjEyLCAwLCA2MiwgNTcsIDEwNiwgMjUyLCAyMDgsIDYyLCA1NywgMTA2LCAKKyAgICAyNTIsIDIwNywgNjIsIDU3LCAyMzAsIDE0MiwgMjUyLCAyMDYsIDI0NywgMTk4LCA2MiwgNTcsIDEwNiwgMjUyLCAyMDUsIAorICAgIDYyLCA1NywgMTA2LCAyNTIsIDIwNCwgNjIsIDU3LCAxMDYsIDI1MiwgMjAyLCA2MiwgNTcsIDEwNiwgMjUyLCAyMDEsIDYyLCAKKyAgICA1NywgMTA2LCAyNTIsIDIwMCwgNjIsIDU3LCAxMDYsIDI1MiwgMTk5LCAyNDgsIDE1OSwgNjIsIDU3LCAxMDYsIDI1MiwgCisgICAgMTk4LCA2MiwgNTcsIDEwNiwgMjUyLCAxOTcsIDYyLCA1NywgMTA2LCAyNTIsIDE5NiwgNjIsIDU3LCAxMDYsIDI1MiwgMTk1LCAKKyAgICA2MiwgNTcsIDEwNiwgMjUyLCAxOTQsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUzLCAyMywgNjIsIDU3LCAxMDYsIDIxMywgCisgICAgMTg2LCAyNTIsIDI0NiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0NSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAKKyAgICAyNTIsIDI0NCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIAorICAgIDI0MiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MCwgCisgICAgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzOSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzOCwgNjIsIDU3LCAKKyAgICAxMDYsIDIxMywgMTg2LCAyNTIsIDIzNywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzNiwgNjIsIDU3LCAxMDYsIAorICAgIDIxMywgMTg2LCAyNTIsIDIzNSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzNCwgNjIsIDU3LCAxMDYsIDIxMywgCisgICAgMTg2LCAyNTIsIDIzMywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzMiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAKKyAgICAyNTIsIDIzMSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzMCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIAorICAgIDIyOSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyOCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyNywgCisgICAgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyNSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyNCwgNjIsIDU3LCAKKyAgICAxMDYsIDIxMywgMTg2LCAyNTIsIDIyMiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyMSwgNjIsIDU3LCAxMDYsIAorICAgIDIxMywgMTg2LCAyNTIsIDIyMCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIxOSwgNjIsIDU3LCAxMDYsIDIxMywgCisgICAgMTg2LCAyNTIsIDIwMywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDE5MywgMjU0LCAyMzYsIDIxMSwgMjA5LCAyMjAsIAorICAgIDEzOCwgMjMyLCAyMTMsIDI1NCwgMjM2LCAyMTEsIDIwOSwgMjIwLCAxMzgsIDI0NywgMTIwLCAyNTQsIDIzNiwgMjUwLCAKKyAgICAxMzAsIDc4LCAyNTQsIDIzNiwgNTQsIDExMCwgMjU0LCAyMzYsIDU0LCAxMDUsIDI1NCwgMjM2LCA1NCwgMTU4LCAyNTQsIAorICAgIDIzNiwgNTQsIDE2MSwgMjU0LCAyMzYsIDU0LCAxODksIDI1NCwgMjM2LCA1NCwgMTk0LCAyNTQsIDIzNiwgNTQsIDE5OCwgCisgICAgMjU0LCAyMzYsIDU0LCAxOTUsIDI1NCwgMjM2LCA1NCwgMjAwLCAyNTQsIDIzNiwgNTQsIDIxNiwgMjQ3LCAyNTQsIDIzNiwgCisgICAgNTQsIDIxNSwgNzMsIDI1NCwgMjM2LCA1NCwgMjE2LCAxNjIsIDI1NCwgMjM2LCA1NCwgMjQ0LCAxNSwgMjU0LCAyMzYsIDU0LCAKKyAgICAyNDQsIDExNCwgMjU0LCAyMzYsIDU0LCAyMTksIDExMSwgMjU0LCAyMzYsIDU0LCAyMjAsIDExNiwgMjU0LCAyMzYsIDU0LCAKKyAgICAyNDUsIDE4NCwgMjU0LCAyMzYsIDU0LCAyMjgsIDE5NSwgMjU0LCAyMzYsIDU0LCAxMjMsIDI0MCwgMjEwLCAyNTQsIDIzNiwgCisgICAgNTQsIDExMywgMjQwLCAyMTAsIDI1NCwgMjM2LCA1NCwgMTM0LCAyNDAsIDIxMCwgMjU0LCAyMzYsIDU0LCAyNDQsIDExLCAKKyAgICAyNDAsIDIxMCwgMjU0LCAyMzYsIDU0LCAyNDQsIDgxLCAyNDAsIDIxMCwgMjU0LCAyMzYsIDU0LCAyMTksIDEyNSwgMjQwLCAKKyAgICAyMTAsIDI1NCwgMjM2LCA1NCwgMjIwLCAxMjIsIDI0MCwgMjEwLCAyNTQsIDIzNiwgNTQsIDI0NSwgMTkzLCAyNDAsIDIxMCwgCisgICAgMjU0LCAyMzYsIDU0LCAyMjgsIDIwMCwgMjQwLCAyMTAsIDI1NCwgMjM2LCA1NCwgMTIzLCAyMTYsIDE0NywgMjU0LCAyMzYsIAorICAgIDU0LCAxMTMsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDEzNCwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjQ0LCAxMSwgCisgICAgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjQ0LCA4MSwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjE5LCAxMjUsIDIxNiwgCisgICAgMTQ3LCAyNTQsIDIzNiwgNTQsIDIyMCwgMTIyLCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyNDUsIDE5MywgMjE2LCAxNDcsIAorICAgIDI1NCwgMjM2LCA1NCwgMjI4LCAyMDAsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDIxNiwgMjQ4LCAyMTYsIDE0NywgMjU0LCAKKyAgICAyMzYsIDU0LCAyMTUsIDc0LCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyMTYsIDE2MywgMjE2LCAxNDcsIDI1NCwgMjM2LCAKKyAgICA1NCwgMjQ0LCAxNiwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjQ0LCAxMTUsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIAorICAgIDIxOSwgMTEyLCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyMjAsIDExNywgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjQ1LCAKKyAgICAxODUsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDIyOCwgMTk2LCAyMTYsIDE0NywgMjU0LCAyMzYsIDIxMiwgMTQsIDI1MiwgCisgICAgMTI4LCAyMTQsIDE3MywgMjU0LCAyMzYsIDIxMiwgMTQsIDI0NCwgOTIsIDIxOCwgNTksIDI1NCwgMjM2LCAyMTIsIDE0LCAKKyAgICAyMjEsIDE3NiwgMjE4LCA1OSwgMjU0LCAyMzYsIDIxMiwgMTQsIDIxNiwgMTY5LCAyMTgsIDU5LCAyNTQsIDIzNiwgMjEyLCAKKyAgICAxNCwgMjQ0LCA0LCAyMTgsIDU5LCAyNTQsIDIzNiwgMjQ2LCA4MSwgMjMxLCA5MCwgMjQ0LCA5MiwgMjE4LCA1OSwgMjU0LCAKKyAgICAyMzYsIDIzMiwgMTk5LCAyMzEsIDkwLCAyNDQsIDkyLCAyMTgsIDU5LCAyNTQsIDIzNiwgMjMxLCA5MCwgMjIxLCAxNzYsIAorICAgIDIxOCwgNTksIDI1NCwgMjM2LCAyMzEsIDkwLCAyMTYsIDE2OSwgMjE4LCA1OSwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDEyMywgCisgICAgMjI0LCAyMSwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDEyMywgMjQyLCAyNywgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDEyMywgCisgICAgMjQ2LCAxMDAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAxODksIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDExNCwgMjYsIAorICAgIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgODEsIDI0MCwgMjEwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCA4MSwgMjE2LCAKKyAgICAxNDcsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDExNSwgMjE2LCAxNDcsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIAorICAgIDgxLCAyMTcsIDY3LCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjE2LCAyNDgsIDIxNywgNjcsIDI2LCAyNTUsIDYsIDI1MywgCisgICAgMTk0LCAyNDQsIDExNSwgMjE3LCA2NywgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDEyMywgMjQwLCAyMTEsIDIxNywgNjcsIDI2LCAKKyAgICAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDgxLCAyNDAsIDIxMSwgMjE3LCA2NywgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDEyMywgCisgICAgMjE2LCAxNDgsIDIxNywgNjcsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDgxLCAyMTYsIDE0OCwgMjE3LCA2NywgMjYsIAorICAgIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgODEsIDIxOCwgMTUwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjE2LCAyNDgsIDIxOCwgCisgICAgMTUwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCAxMTUsIDIxOCwgMTUwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMTIzLCAKKyAgICAyNDAsIDIxMSwgMjE4LCAxNTAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDgxLCAyNDAsIDIxMSwgMjE4LCAxNTAsIAorICAgIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAxMjMsIDIxNiwgMTQ4LCAyMTgsIDE1MCwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDIxNiwgCisgICAgMjQ4LCAyMTYsIDE0OCwgMjE4LCAxNTAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDExNSwgMjE2LCAxNDgsIDIxOCwgCisgICAgMTUwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjE2LCAyNDgsIDIzMCwgMTY0LCAyNiwgMjU1LCA2LCAyNDEsIDIwNSwgMTIzLCAKKyAgICAyMjUsIDMxLCAyNiwgMjU1LCA2LCAyMTYsIDE4MSwgMTEwLCAyNiwgMjU1LCA2LCAyNDEsIDIwMSwgMTEwLCAyNiwgMjU1LCAKKyAgICA2LCAyNDUsIDEwNCwgMTA1LCAyNiwgMjU1LCA2LCAyMTYsIDE4MSwgMTA1LCAyNiwgMjU1LCA2LCAyNDksIDY1LCAxMTMsIAorICAgIDI0NiwgOTksIDI2LCAyNTUsIDYsIDI0NSwgMTA0LCAxMTMsIDI0NiwgOTksIDI2LCAyNTUsIDYsIDIxNSwgMjAzLCAxODksIAorICAgIDI2LCAyNTUsIDYsIDIxNSwgMjAzLCAyMTYsIDI0NywgMjYsIDI1NSwgNiwgMjE1LCAyMDMsIDIxNiwgMjQ4LCAyNTQsIDE0MSwgCisgICAgMTcsIDI2LCAyNTUsIDYsIDI0MSwgMjAxLCAyMTYsIDI0NywgMjYsIDI1NSwgNiwgMjMxLCA0MSwgMjE2LCAyNDcsIDI2LCAKKyAgICAyNTUsIDYsIDIxNiwgMTgxLCAyMTYsIDI0NywgMjYsIDI1NSwgNiwgMjE2LCAxODEsIDIxNiwgMTYyLCAyNiwgMjU1LCA2LCAKKyAgICAyMTUsIDIwMywgMjQ0LCAxMTQsIDI2LCAyNTUsIDYsIDIxNSwgMjAzLCAyNDQsIDExNSwgMjU0LCAxNDEsIDE3LCAyNiwgCisgICAgMjU1LCA2LCAyNDEsIDIwMSwgMjQ0LCAxMTQsIDI2LCAyNTUsIDYsIDIxNiwgMTgxLCAyNDQsIDExNCwgMjYsIDI1NSwgNiwgCisgICAgMjE2LCAxODEsIDEyMywgMjQwLCAyMTAsIDI2LCAyNTUsIDYsIDIxNiwgMTgxLCAxMzQsIDI0MCwgMjEwLCAyNiwgMjU1LCA2LCAKKyAgICAyNDUsIDEwNCwgMjQ0LCA4MSwgMjQwLCAyMTAsIDI2LCAyNTUsIDYsIDIxNSwgMjAzLCAyNDQsIDgxLCAyNDAsIDIxMCwgMjYsIAorICAgIDI1NSwgNiwgMjE2LCAxODEsIDI0NCwgODEsIDI0MCwgMjEwLCAyNiwgMjU1LCA2LCAyNTAsIDIyNywgMjQ0LCA4MSwgMjQwLCAKKyAgICAyMTAsIDI2LCAyNTUsIDYsIDIyOSwgMTgyLCAyNDQsIDgxLCAyNDAsIDIxMCwgMjYsIDI1NSwgNiwgMjE2LCAxODEsIDEyMywgCisgICAgMjE2LCAxNDcsIDI2LCAyNTUsIDYsIDIxNiwgMTgxLCAyNDQsIDgxLCAyMTYsIDE0NywgMjYsIDI1NSwgNiwgMjQ4LCA1NywgCisgICAgMjQ0LCA4MSwgMjMwLCAxNjQsIDI2LCAyNTUsIDYsIDIxOCwgMTE4LCAyNDQsIDExNSwgMjMwLCAxNjQsIDI2LCAxMjMsIAorICAgIDE2MywgNTAsIDI2LCAxMjMsIDE2MywgNSwgMjU0LCAxNDEsIDE3LCAyNiwgMTEzLCAyMTYsIDE2NywgNTAsIDI2LCAxMzQsIAorICAgIDIyNCwgMjAsIDUwLCAyNiwgMjExLCA0NSwgNTAsIDI2LCAyMTcsIDY4LCA1MCwgMjYsIDI0NiwgMTAxLCA1MCwgMjYsIDIyNiwgCisgICAgMjQ2LCA1MCwgMjYsIDExMywgMjI2LCAyNDUsIDUwLCAyNiwgMTM0LCAyMjYsIDI0NSwgNTAsIDI2LCAyNDQsIDExLCAyMjYsIAorICAgIDI0NSwgNTAsIDI2LCAyNDQsIDgxLCAyMjYsIDI0NSwgNTAsIDI2LCAyMzEsIDM1LCA1MCwgMjYsIDIzMywgMTU3LCAyNTIsIAorICAgIDEyOCwgNTAsIDI2LCAyMzIsIDE5NCwgNTAsIDI2LCAyMjYsIDEzMSwgNTAsIDI2LCAyMTEsIDE1OSwgNTAsIDI2LCAyNTMsIAorICAgIDI0MywgNTAsIDI2LCAyNTQsIDAsIDUwLCAyNiwgMjQyLCAxNDQsIDUwLCAyNiwgMjE1LCAxODYsIDI1MiwgMTI4LCA1MCwgCisgICAgMjYsIDIxMCwgODcsIDUwLCAyMjIsIDE5OCwgMjIwLCAxMTMsIDUwLCAyMjIsIDE5OCwgMjE0LCAxODUsIDUwLCAyMjIsIAorICAgIDE5OCwgMjIwLCAxNDIsIDUwLCAyMjIsIDE5OCwgMjIwLCAxMTEsIDUwLCAyMjIsIDE5OCwgMjQ3LCAyMTMsIDIyMCwgMTExLCAKKyAgICA1MCwgMjIyLCAxOTgsIDIxOSwgMTY4LCA1MCwgMjIyLCAxOTgsIDI0OCwgNTMsIDUwLCAyMjIsIDE5OCwgMjI0LCA2LCA1MCwgCisgICAgMjIyLCAxOTgsIDIyMCwgMTI5LCA1MCwgMjIyLCAxOTgsIDI0NiwgNjAsIDUwLCAyMjIsIDE5OCwgMjUzLCAyMzgsIDUwLCAKKyAgICAyMjIsIDE5OCwgMjUwLCAxNzEsIDUwLCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIyNSwgMjEzLCAyMjUsIDE0MywgMjQ3LCAKKyAgICAxOTEsIDUsIDIyNSwgMjQsIDI0MSwgMjM1LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIxNywgNDUsIDI0MSwgMjM1LCAyMjUsIAorICAgIDE0MywgMjQ3LCAxOTEsIDUsIDI1MCwgMjQ3LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI1MCwgMTAxLCAyMjUsIDE0MywgCisgICAgMjQ3LCAxOTEsIDUsIDIxMSwgMjIxLCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI0MSwgMjExLCAyMjUsIDE0MywgMjQ3LCAKKyAgICAxOTEsIDUsIDI0MywgODUsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjE2LCAxMTYsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgCisgICAgNzQsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjUxLCAxNjksIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjIwLCAyOSwgMjI1LCAKKyAgICAxNDMsIDI0NywgMTkxLCA1LCAyNDksIDI0NCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMzEsIDE4NCwgMjI1LCAxNDMsIAorICAgIDI0NywgMTkxLCA1LCAyMzEsIDEzNiwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMjEsIDIxNiwgMjI1LCAxNDMsIDI0NywgCisgICAgMTkxLCA1LCAyMzIsIDIzNywgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNTEsIDE4OCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAKKyAgICAyNTAsIDIzMSwgMjI1LCAzNSwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNDcsIDEzMywgMjI1LCAxNDMsIDI0NywgMTkxLCAKKyAgICA1LCAyNDksIDIyMywgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMTksIDg3LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI0OSwgCisgICAgMjI0LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI1MiwgNjMsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjIwLCAxNiwgMjI1LCAKKyAgICAxNDMsIDI0NywgMTkxLCA1LCAyNDAsIDI0OCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNDEsIDE3OCwgMjI1LCAxNDMsIAorICAgIDI0NywgMTkxLCA1LCAyNTEsIDExMiwgMjMzLCAzNiwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNTAsIDIyNCwgMjI1LCAKKyAgICAxNDMsIDI0NywgMTkxLCA1LCAyMjMsIDE1MywgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNDUsIDIzMCwgMjI1LCAxNDMsIAorICAgIDI0NywgMTkxLCA1LCAyNDYsIDEwNywgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMTUsIDEwNSwgMjI1LCAxNDMsIDI0NywgCisgICAgMTkxLCA1LCAyNTIsIDY2LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIyNSwgMzYsIDIxNSwgMjM1LCAyMjUsIDE0MywgMjQ3LCAKKyAgICAxOTEsIDUsIDIxMywgMTU5LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIyNiwgMTgsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgCisgICAgMjIyLCAxOTAsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjMyLCAyMjQsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjI2LCAKKyAgICAxMTUsIDI1MiwgMTg0LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI0NCwgNDgsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgCisgICAgMjQyLCAxMzgsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjE4LCAxMTksIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgNCwgMjUzLCAKKyAgICAxNjgsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjEyLCAzMiwgMjUyLCAxNDgsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMzgsIAorICAgIDIyNiwgMjQ4LCA5MSwgMjMyLCA2MCwgMSwgNjEsIDIzMiwgNjAsIDEsIDc1LCAyMzIsIDYwLCAxLCAyNTMsIDE1OCwgMjMyLCAKKyAgICA2MCwgMSwgMjUyLCAxOSwgMjMyLCA2MCwgMSwgMjQzLCAyMDIsIDIzMiwgNjAsIDEsIDI0OSwgNjAsIDIzMiwgNjAsIDEsIAorICAgIDczLCAyMzIsIDYwLCAxLCAyMTIsIDk4LCAyMzIsIDYwLCAxLCAyMTAsIDE1OSwgMjMyLCA2MCwgMSwgMjE2LCAyMTAsIDIzMiwgCisgICAgNjAsIDEsIDIzNSwgMTQ0LCAyMzIsIDYwLCAxLCAyMzUsIDIzLCAyMzIsIDYwLCAxLCAyMjQsIDk2LCAyMzIsIDYwLCAxLCAKKyAgICAxNTYsIDIzMiwgNjAsIDEsIDE5MywgMjMyLCA2MCwgMSwgMjMwLCAyNSwgMjMyLCA2MCwgMSwgMjMwLCAxNjYsIDIzMiwgNjAsIAorICAgIDEsIDIyOCwgMTExLCAyMzIsIDYwLCAxLCA3MCwgMjMyLCA2MCwgMSwgMjI2LCAxMDUsIDIzMiwgNjAsIDEsIDIzNCwgNDcsIAorICAgIDIzMiwgNjAsIDEsIDE1MywgMjMyLCA2MCwgMSwgMjIyLCA5MSwgMjMyLCA2MCwgMSwgMjE3LCAxNTIsIDIzMiwgNjAsIDEsIAorICAgIDIxNSwgMTU5LCAyMzIsIDYwLCAxLCAyNTQsIDEyMywgMjMyLCA2MCwgMSwgMjQ1LCAxNTAsIDIzMiwgNjAsIDEsIDI0MiwgCisgICAgNjAsIDIzMiwgNjAsIDEsIDIxMSwgMTc4LCAyNTAsIDIzNywgMSwgNjEsIDI1MCwgMjM3LCAxLCAyMjYsIDkxLCAyNTAsIAorICAgIDIzNywgMSwgMjQ5LCA2MCwgMjUwLCAyMzcsIDEsIDE1NiwgMjUwLCAyMzcsIDEsIDIxNCwgMTE2LCAyNTAsIDIzNywgMSwgCisgICAgMTUzLCAyNTAsIDIzNywgMSwgMjMzLCA2MiwgMjUwLCAyMzcsIDEsIDI1NSwgNzUsIDI1MCwgMjM3LCAxLCAyMjQsIDk2LCAKKyAgICAyNTAsIDIzNywgMSwgMjUzLCAxNTgsIDI1MCwgMjM3LCAxLCAxOTMsIDI1MCwgMjM3LCAxLCA3NiwgMjUwLCAyMzcsIDEsIAorICAgIDI0OCwgMjIzLCAyNTAsIDIzNywgMSwgMjE3LCAxNTIsIDI1MCwgMjM3LCAxLCAyMjAsIDEwNCwgMjUwLCAyMzcsIDEsIDIyMCwgCisgICAgMTAzLCAyNTAsIDIzNywgMSwgMjIyLCA5MSwgMjUwLCAyMzcsIDEsIDI1MSwgNjUsIDI1MCwgMjM3LCAxLCA3MCwgMjUwLCAKKyAgICAyMzcsIDEsIDIyOCwgMTExLCAyNTAsIDIzNywgMSwgMjExLCAxNzgsIDI1MCwgMjM3LCAxLCAyMzAsIDI1LCAyNTAsIDIzNywgCisgICAgMSwgMjE1LCAxNTgsIDI1MCwgMjM3LCAxLCAyMjYsIDEwNSwgMjUwLCAyMzcsIDEsIDIxOCwgMjI2LCAyNTAsIDIzNywgMSwgCisgICAgNzMsIDI1MCwgMjM3LCAxLCA3NSwgMjUwLCAyMzcsIDEsIDIxNCwgMTEzLCAyNTAsIDIzNywgMSwgMjM1LCAyMywgMjUwLCAKKyAgICAyMzcsIDEsIDIzNSwgMTQsIDI1MCwgMjM3LCAxLCAyMjksIDE1MCwgMjUwLCAyMzcsIDEsIDIxNCwgMTE4LCAyNTAsIDIzNywgCisgICAgMSwgMjQzLCAyMDIsIDI1MCwgMjM3LCAxLCAyNDMsIDEzNywgMjUwLCAyMzcsIDEsIDIxOCwgMTY4LCAyNTAsIDIzNywgMSwgCisgICAgMjE4LCAxNjcsIDI1MCwgMjM3LCAxLCAyMjksIDc5LCAyNTAsIDIzNywgMSwgMjM2LCAzMywgMjUwLCAyMzcsIDEsIDI1MSwgCisgICAgNjQsIDI1MCwgMjM3LCAxLCAyMTUsIDE1OSwgMjUwLCAyMzcsIDEsIDIxNCwgMTE1LCAyNTAsIDIzNywgMSwgMjIyLCAxODAsIAorICAgIDI1MCwgMjM3LCAxLCAyMzEsIDEyOSwgMjUwLCAyMzcsIDEsIDIzMSwgMTI4LCAyNTAsIDIzNywgMSwgMjMxLCAxMjcsIDI1MCwgCisgICAgMjM3LCAxLCAyMzEsIDEyNiwgMjUwLCAyMzcsIDEsIDIzMywgNjEsIDI1MCwgMjM3LCAxLCAyNDUsIDIzNCwgMjUwLCAyMzcsIAorICAgIDEsIDIxNCwgMTE0LCA1NSwgMzIsIDEsIDYxLCA1NSwgMzIsIDEsIDI1MiwgNzUsIDU1LCAzMiwgMSwgMjM0LCAxODIsIDU1LCAKKyAgICAzMiwgMSwgMjQ4LCA5MCwgNTUsIDMyLCAxLCA3NSwgNTUsIDMyLCAxLCAyMTMsIDI1NSwgNTUsIDMyLCAxLCAyMTAsIDk0LCAKKyAgICA1NSwgMzIsIDEsIDI0MSwgMjM4LCA1NSwgMzIsIDEsIDIxNiwgMTk1LCA1NSwgMzIsIDEsIDczLCA1NSwgMzIsIDEsIDE3NiwgCisgICAgNTUsIDMyLCAxLCAyNDUsIDE3NCwgNTUsIDMyLCAxLCAyNDUsIDE1OSwgNTUsIDMyLCAxLCAyNDUsIDE1MCwgNTUsIDMyLCAxLCAKKyAgICAyNDUsIDc1LCA1NSwgMzIsIDEsIDc2LCA1NSwgMzIsIDEsIDIyNSwgMjIxLCA1NSwgMzIsIDEsIDIyMCwgNjMsIDU1LCAzMiwgCisgICAgMSwgMjMzLCAyMTcsIDU1LCAzMiwgMSwgMjQ1LCA5MiwgNTUsIDMyLCAxLCAyNDUsIDgyLCA1NSwgMzIsIDEsIDIxNywgMjIsIAorICAgIDU1LCAzMiwgMSwgNzAsIDU1LCAzMiwgMSwgMjQ1LCAxNzcsIDU1LCAzMiwgMSwgMjI1LCAxMzYsIDU1LCAzMiwgMSwgMjM0LCAKKyAgICAxMTksIDU1LCAzMiwgMSwgMjQ1LCAyMDIsIDU1LCAzMiwgMSwgMjQ1LCA4NCwgNTUsIDMyLCAxLCAyNTAsIDEzMSwgNTUsIAorICAgIDMyLCAxLCAyMzYsIDMzLCA1NSwgMzIsIDEsIDIxNCwgMTE4LCA1NSwgMzIsIDIyNywgMTk4LCAxMTAsIDU1LCAzMiwgMjI3LCAKKyAgICAxOTgsIDE4OSwgNTUsIDMyLCAyMjcsIDE5OCwgMjE2LCAyNDcsIDU1LCAzMiwgMjI3LCAxOTgsIDI0NCwgMTE0LCAyNDIsIAorICAgIDE1MywgMSwgMjU0LCAyMDQsIDI0MiwgMTUzLCAxLCAyNTIsIDE2MywgMjQyLCAxNTMsIDEsIDI0MiwgMjExLCAyNDIsIDE1MywgCisgICAgMSwgMjQ4LCAyMDQsIDI0MiwgMTUzLCAxLCAyNTQsIDIwMCwgMjQyLCAxNTMsIDEsIDIyNCwgNzksIDI0MiwgMTUzLCAxLCAKKyAgICAyMzUsIDE1NSwgMjQyLCAxNTMsIDEsIDI0MiwgMzksIDI0MiwgMTUzLCAxLCAyMTYsIDE1OCwgMjQyLCAxNTMsIDEsIDI0NSwgCisgICAgMTgzLCAyNDIsIDE1MywgMSwgMjMzLCAxOTAsIDI0MiwgMTUzLCAxLCAyMzMsIDExMywgMjQyLCAxNTMsIDEsIDIzMSwgMTc5LCAKKyAgICAyNDIsIDE1MywgMSwgMjI5LCAxODQsIDI0MiwgMTUzLCAxLCAyMzUsIDExOSwgMjQyLCAxNTMsIDEsIDIxNCwgMTM2LCAyNDIsIAorICAgIDE1MywgMSwgMjI2LCA2OSwgMjQyLCAxNTMsIDEsIDIyOCwgMTk1LCAyNDIsIDE1MywgMSwgMjIzLCAxNjUsIDI0MiwgMTUzLCAKKyAgICAxLCAyMjEsIDIxOCwgMjQyLCAxNTMsIDEsIDIxNywgNCwgMjQyLCAxNTMsIDEsIDIxMSwgMjM0LCAyNDIsIDE1MywgMSwgCisgICAgMjQ0LCAxNzgsIDI0MiwgMTUzLCAxLCAyMzYsIDM3LCAyNDIsIDE1MywgMSwgMjQwLCAxOTksIDI0MiwgMTUzLCAxLCAyMjYsIAorICAgIDEzOSwgMjQyLCAxNTMsIDEsIDIyOCwgMjAwLCAyNDAsIDIxMCwgMjE0LCAyMDksIDEsIDI1NCwgMTQ3LCAyMTQsIDIwOSwgMSwgCisgICAgMjUyLCAyNiwgMjE0LCAyMDksIDEsIDI0MywgMTA4LCAyMTQsIDIwOSwgMSwgMjM0LCAxMzIsIDIxNCwgMjA5LCAxLCAyNDgsIAorICAgIDU0LCAyMTQsIDIwOSwgMSwgMjQxLCA2OCwgMjE0LCAyMDksIDEsIDIxMSwgMjI3LCAyMTQsIDIwOSwgMSwgMjEwLCA4NSwgCisgICAgMjE0LCAyMDksIDEsIDI0MCwgMjQxLCAyMTQsIDIwOSwgMSwgMjE2LCAyMzAsIDIxNCwgMjA5LCAxLCAyMTAsIDIzMywgMjE0LCAKKyAgICAyMDksIDEsIDIzNCwgMjUwLCAyMTQsIDIwOSwgMSwgMjIwLCAyMCwgMjE0LCAyMDksIDEsIDIzMywgOTgsIDIxNCwgMjA5LCAKKyAgICAxLCAyMzEsIDY1LCAyMTQsIDIwOSwgMSwgMjQ4LCAyMSwgMjE0LCAyMDksIDEsIDIyNywgMTk0LCAyMTQsIDIwOSwgMSwgCisgICAgMjEwLCAxMywgMjE0LCAyMDksIDEsIDIyMSwgMjQ4LCAyMTQsIDIwOSwgMSwgMjU0LCAxOTYsIDIxNCwgMjA5LCAxLCAyMjQsIAorICAgIDE1MCwgMjE0LCAyMDksIDEsIDIyMiwgMjUsIDIxNCwgMjA5LCAxLCAyMjQsIDM1LCAyMTQsIDIwOSwgMSwgMjIzLCAxNDQsIAorICAgIDIxNCwgMjA5LCAxLCAyMTYsIDE5OSwgMjE0LCAyMDksIDEsIDI0MiwgMjQ0LCAyMTQsIDIwOSwgMSwgMTExLCAyMTQsIDIwOSwgCisgICAgMSwgNzMsIDIxNCwgMjA5LCAxLCA3MCwgMjE0LCAyMDksIDEsIDIxOCwgMTc5LCAyMTQsIDIwOSwgMjExLCAyMDksIDI0NywgCisgICAgMTcyLCA1NSwgMjI1LCAxNjksIDUsIDYxLCA1NSwgMjI1LCAxNjksIDUsIDczLCA1NSwgMjI1LCAxNjksIDUsIDcwLCA1NSwgCisgICAgMjI1LCAxNjksIDUsIDE3NiwgNTUsIDIyNSwgMTY5LCA1LCAyMzMsIDIxNywgNTUsIDIyNSwgMTY5LCA1LCAyNDMsIDEzNSwgCisgICAgNTUsIDIyNSwgMTY5LCA1LCAyNDIsIDExMywgNTUsIDIyNSwgMTY5LCA1LCAyMTEsIDE2NSwgNTUsIDIyNSwgMTY5LCA1LCAKKyAgICAyNTEsIDMzLCA1NSwgMjI1LCAxNjksIDUsIDIzNSwgMTQxLCA1NSwgMjI1LCAxNjksIDUsIDIzNSwgMTA4LCA1NSwgMjI1LCAKKyAgICAxNjksIDUsIDIxNywgMTA1LCA1NSwgMjI1LCAxNjksIDUsIDIxNSwgMTE4LCA1NSwgMjI1LCAxNjksIDUsIDI0OCwgMjIxLCAKKyAgICA1NSwgMjI1LCAxNjksIDUsIDI0OCwgMywgNTUsIDIyNSwgMTY5LCA1LCAyNDYsIDc4LCA1NSwgMjI1LCAxNjksIDUsIDIxNiwgCisgICAgMjA4LCA1NSwgMjI1LCAxNjksIDUsIDE5MCwgNTUsIDIyNSwgMTY5LCA1LCAyNTIsIDE5MSwgNTUsIDIyNSwgMTY5LCA1LCAKKyAgICAyNDQsIDE5NiwgNTUsIDIyNSwgMTY5LCA1LCAxOTcsIDU1LCAyMjUsIDE2OSwgNSwgMjI3LCAyMzcsIDU1LCAyMjUsIDE2OSwgCisgICAgNSwgMTg0LCA1NSwgMjI1LCAxNjksIDUsIDIzMCwgMjMwLCA1NSwgMjI1LCAxNjksIDUsIDIzMCwgMTAyLCA1NSwgMjI1LCAKKyAgICAxNjksIDUsIDE5MSwgNTUsIDIyNSwgMTY5LCA1LCAyMTQsIDI3LCA1NSwgMjI1LCAxNjksIDUsIDIxMywgMTc2LCA1NSwgCisgICAgMjI1LCAxNjksIDUsIDIwNSwgNTUsIDIyNSwgMTY5LCA1LCAyMjIsIDE0MCwgNTUsIDIyNSwgMTY5LCA1LCAyMzMsIDEzNSwgCisgICAgNTUsIDIyNSwgMTY5LCA1LCAyMDYsIDU1LCAyMjUsIDE2OSwgNSwgMjEwLCAxMTYsIDU1LCAyMjUsIDE2OSwgNSwgMjIwLCAKKyAgICAxMDIsIDU1LCAyMjUsIDE2OSwgNSwgMjE4LCAyMjMsIDU1LCAyMjUsIDE2OSwgNSwgMTYyLCA1NSwgMjI1LCAxNjksIDUsIAorICAgIDI1MywgMTg2LCA1NSwgMjI1LCAxNjksIDUsIDI1MywgMTg1LCA1NSwgMjI1LCAxNjksIDUsIDI1MywgMTg0LCA1NSwgMjI1LCAKKyAgICAxNjksIDUsIDIxMSwgMTQyLCA1NSwgMjI1LCAxNjksIDUsIDI0OCwgMjAwLCA1NSwgMjI1LCAxNjksIDUsIDI0OCwgMTk5LCAKKyAgICA1NSwgMjI1LCAxNjksIDUsIDI1MiwgMTcwLCA1NSwgMjI1LCAxNjksIDUsIDI1MSwgODUsIDU1LCAyMjUsIDE2OSwgMjExLCAKKyAgICAyMDksIDI0NywgMTcyLCA1NSwgMjI1LCAxNjksIDU0LCAxMTAsIDU1LCAyMjUsIDE2OSwgNTQsIDEwNSwgNTUsIDIyNSwgCisgICAgMTY5LCA1NCwgMjE2LCAyNDcsIDU1LCAyMjUsIDE2OSwgNTQsIDIxNSwgNzMsIDU1LCAyMjUsIDE2OSwgNTQsIDI0MCwgMjEwLCAKKyAgICAxODEsIDYsIDEsIDE5OSwgNzMsIDE4MSwgNiwgMSwgMTk5LCA3NSwgMTgxLCA2LCAxLCAxOTksIDYxLCAxODEsIDYsIDEsIAorICAgIDE5OSwgMjU0LCAyMDksIDE4MSwgNiwgMSwgMTk5LCA3NiwgMTgxLCA2LCAxLCAxOTksIDIyNiwgMTgzLCAxODEsIDYsIDEsIAorICAgIDIxOSwgMjUxLCA3MywgMTgxLCA2LCAxLCAyMTksIDI1MSwgNzUsIDE4MSwgNiwgMSwgMjE5LCAyNTEsIDYxLCAxODEsIDYsIAorICAgIDEsIDIxOSwgMjUxLCAyNTQsIDIwOSwgMTgxLCA2LCAxLCAyMTksIDI1MSwgNzYsIDE4MSwgNiwgMSwgMjE5LCAyNTEsIDIyNiwgCisgICAgMTgzLCAxODEsIDYsIDEsIDI1MywgMTY3LCAxODEsIDYsIDEsIDIyNiwgMTE2LCAxODEsIDYsIDEsIDIxMSwgMTk1LCAxODEsIAorICAgIDYsIDEsIDIxMSwgNDQsIDE4MSwgNiwgMSwgMjQyLCA2MCwgMTgxLCA2LCAxLCAyMjUsIDIxMSwgMTgxLCA2LCAxLCAyNTIsIAorICAgIDY2LCAxODEsIDYsIDEsIDIxNywgMTEsIDE4MSwgNiwgMSwgMjQ4LCA3NywgMTgxLCA2LCAxLCAyNTAsIDEyOCwgMTgxLCA2LCAKKyAgICAxLCAyMzUsIDEyNCwgMTgxLCA2LCAxLCAyMzQsIDE4OSwgMTgxLCA2LCAxLCAyNDMsIDgzLCAxODEsIDYsIDEsIDI0NSwgCisgICAgMjAyLCAxODEsIDYsIDEsIDIxMywgMjUwLCAxODEsIDYsIDEsIDI0NSwgNTksIDE4MSwgNiwgMSwgMjE2LCAxOTQsIDE4MSwgCisgICAgNiwgMSwgMjQ1LCA4MiwgMTgxLCA2LCAxLCAyMTAsIDkyLCAxODEsIDYsIDEsIDI0NSwgNzUsIDE4MSwgNiwgMSwgMjEwLCAKKyAgICA3MywgMTgxLCA2LCAxLCAyNDUsIDkyLCAxODEsIDYsIDEsIDI0NSwgMTc0LCAxODEsIDYsIDEsIDI0NSwgMTU5LCAxODEsIDYsIAorICAgIDEsIDI0NSwgMTUwLCAxODEsIDYsIDEsIDI0NSwgMTM4LCAxODEsIDYsIDEsIDIyNiwgMjE5LCAxODEsIDYsIDEsIDI0NSwgCisgICAgMzgsIDE4MSwgNCwgMSwgMTk5LCA3MywgMTgxLCA0LCAxLCAxOTksIDc1LCAxODEsIDQsIDEsIDE5OSwgNjEsIDE4MSwgNCwgCisgICAgMSwgMTk5LCAyNTQsIDIwOSwgMTgxLCA0LCAxLCAxOTksIDc2LCAxODEsIDQsIDEsIDE5OSwgMjI2LCAxODMsIDE4MSwgNCwgCisgICAgMSwgMjE5LCAyNTEsIDczLCAxODEsIDQsIDEsIDIxOSwgMjUxLCA3NSwgMTgxLCA0LCAxLCAyMTksIDI1MSwgNjEsIDE4MSwgCisgICAgNCwgMSwgMjE5LCAyNTEsIDI1NCwgMjA5LCAxODEsIDQsIDEsIDIxOSwgMjUxLCA3NiwgMTgxLCA0LCAxLCAyMTksIDI1MSwgCisgICAgMjI2LCAxODMsIDE4MSwgNCwgMSwgMjUzLCAxNjcsIDE4MSwgNCwgMSwgMjI2LCAxMTYsIDE4MSwgNCwgMSwgMjExLCAxOTUsIAorICAgIDE4MSwgNCwgMSwgMjExLCA0NCwgMTgxLCA0LCAxLCAyNDIsIDYwLCAxODEsIDQsIDEsIDIyNSwgMjExLCAxODEsIDQsIDEsIAorICAgIDI1MiwgNjYsIDE4MSwgNCwgMSwgMjE3LCAxMSwgMTgxLCA0LCAxLCAyNDgsIDc3LCAxODEsIDQsIDEsIDI1MCwgMTI4LCAKKyAgICAxODEsIDQsIDEsIDIzNSwgMTI0LCAxODEsIDQsIDEsIDIzNCwgMTg5LCAxODEsIDQsIDEsIDI0MywgODMsIDE4MSwgNCwgMSwgCisgICAgMjQ1LCAyMDIsIDE4MSwgNCwgMSwgMjEzLCAyNTAsIDE4MSwgNCwgMSwgMjQ1LCA1OSwgMTgxLCA0LCAxLCAyMTYsIDE5NCwgCisgICAgMTgxLCA0LCAxLCAyNDUsIDgyLCAxODEsIDQsIDEsIDIxMCwgOTIsIDE4MSwgNCwgMSwgMjQ1LCA3NSwgMTgxLCA0LCAxLCAKKyAgICAyMTAsIDczLCAxODEsIDQsIDEsIDI0NSwgOTIsIDE4MSwgNCwgMSwgMjQ1LCAxNzQsIDE4MSwgNCwgMSwgMjQ1LCAxNTksIAorICAgIDE4MSwgNCwgMSwgMjQ1LCAxNTAsIDE4MSwgNCwgMSwgMjQ1LCAxMzgsIDE4MSwgNCwgMSwgMjI2LCAyMTksIDE4MSwgNCwgMSwgCisgICAgMjQ1LCAzOCwgMjIwLCA2OSwgMSwgMjI1LCAyMDksIDIyMCwgNjksIDEsIDIxNiwgNSwgMjIwLCA2OSwgMSwgMjM0LCA5MSwgCisgICAgMjIwLCA2OSwgMSwgMjQ0LCAxNDcsIDIyMCwgNjksIDEsIDIxNiwgMTcyLCAyMjAsIDY5LCAxLCAyMTksIDU4LCAyMjAsIDY5LCAKKyAgICAxLCAyMTgsIDE0LCAyMjAsIDY5LCAxLCAyNTAsIDYxLCAyMjAsIDY5LCAxLCAyMTEsIDQ2LCAyMjAsIDY5LCAxLCAyNDAsIAorICAgIDIwOSwgMjIwLCA2OSwgMSwgMjUyLCA1LCAyMjAsIDY5LCAxLCAyNDgsIDg5LCAyMjAsIDY5LCAxLCAyNDMsIDEyMSwgMjIwLCAKKyAgICA2OSwgMSwgMjEzLCAxMjMsIDIyMCwgNjksIDEsIDIxNiwgMTc2LCAyMjAsIDY5LCAxLCAyMTAsIDIxLCAyMjAsIDY5LCAxLCAKKyAgICAyMzEsIDg5LCAyMjAsIDY5LCAxLCAyMzUsIDQ5LCAyMjAsIDY5LCAxLCAyMTEsIDIyNSwgMjIwLCA2OSwgMSwgMjQyLCA0OCwgCisgICAgMjIwLCA2OSwgMSwgMjMyLCAxNDIsIDIyMCwgNjksIDEsIDIzMCwgMTg5LCAyMjAsIDY5LCAxLCAyMzYsIDQwLCAyMjAsIDY5LCAKKyAgICAxLCAyNDUsIDIwMSwgMjIwLCA2OSwgMSwgMjUzLCAyMzEsIDIyMCwgNjksIDEsIDI1NCwgMjQ3LCAyMjAsIDY5LCAxLCAyMjYsIAorICAgIDE5NiwgMjIwLCA2OSwgMSwgMjExLCAyMTIsIDIyMCwgNjksIDEsIDIyNiwgMTMwLCAyMjAsIDY5LCAxLCAyNTQsIDIwOSwgCisgICAgMjIwLCA2OSwgMSwgMjIyLCAyMDgsIDIyMCwgNjksIDEsIDIyNywgMTk0LCAyMjAsIDY5LCAxLCAyNDUsIDIxNywgMjIwLCAKKyAgICA2OSwgMSwgMjU0LCAyMTQsIDIyMCwgNjksIDEsIDI0MCwgMTExLCAyMjAsIDY5LCAxLCAyMTQsIDE2MywgMjIwLCA2OSwgMSwgCisgICAgMjI2LCAyNTQsIDIyMCwgNjksIDEsIDIyNiwgMTc2LCAyMjAsIDY5LCAxLCAyMjYsIDIxOCwgMjIwLCA2OSwgMSwgMjUzLCAKKyAgICAxNzAsIDIyMCwgNjksIDEsIDI1NCwgMTksIDIyMCwgNjksIDEsIDIyNiwgMTU4LCAyMjAsIDY5LCAxLCAyNTQsIDE5MiwgCisgICAgMjIwLCA2OSwgMSwgMjQ1LCA4NiwgMjIwLCA2OSwgMSwgMjUzLCAyNTMsIDIyMCwgNjksIDEsIDI0NSwgMjI3LCAyMjAsIDY5LCAKKyAgICAxLCAyNDAsIDExOCwgMjIwLCA2OSwgMSwgMjExLCAxMywgMjI2LCAxNDEsIDEsIDI1NCwgMTcwLCAyMjYsIDE0MSwgMSwgCisgICAgMjUyLCAxOTEsIDIyNiwgMTQxLCAxLCAyMTcsIDEwNSwgMjI2LCAxNDEsIDEsIDIzNSwgMTQxLCAyMjYsIDE0MSwgMSwgMjExLCAKKyAgICAxNjUsIDIyNiwgMTQxLCAxLCAyMzQsIDEzMiwgMjI2LCAxNDEsIDEsIDI0OCwgNzYsIDIyNiwgMTQxLCAxLCAyMDUsIDIyNiwgCisgICAgMTQxLCAxLCAyMDYsIDIyNiwgMTQxLCAxLCAyMjAsIDI2LCAyMjYsIDE0MSwgMSwgMjQ4LCAyNSwgMjI2LCAxNDEsIDEsIAorICAgIDI1MCwgMjE1LCAyMjYsIDE0MSwgMSwgMjQzLCAxMzUsIDIyNiwgMTQxLCAxLCAyNDQsIDE5NiwgMjI2LCAxNDEsIDEsIDIyNCwgCisgICAgODYsIDIyNiwgMTQxLCAxLCAyMzUsIDksIDIyNiwgMTQxLCAxLCAyMzMsIDEzMCwgMjI2LCAxNDEsIDEsIDIzMCwgMjAwLCAKKyAgICAyMjYsIDE0MSwgMSwgMjI3LCAxNzgsIDIyNiwgMTQxLCAxLCAyMTIsIDMwLCAyMjYsIDE0MSwgMSwgMTYyLCAyMjYsIDE0MSwgCisgICAgMSwgMTkxLCAyMjYsIDE0MSwgMSwgNjEsIDIyNiwgMTQxLCAxLCA3NSwgMjI2LCAxNDEsIDEsIDczLCAyMjYsIDE0MSwgMSwgCisgICAgNzYsIDIyNiwgMTQxLCAxLCA3MCwgMjI2LCAxNDEsIDEsIDI1NSwgNzMsIDIyNiwgMTQxLCAxLCAyNDUsIDIwOSwgMjI2LCAKKyAgICAxNDEsIDEsIDIyNiwgMTgzLCAyMjYsIDE0MSwgMjEsIDIxMCwgODYsIDIyNiwgMTQxLCAyMSwgMTEwLCAyMjYsIDE0MSwgMjEsIAorICAgIDEwNSwgMjI2LCAxNDEsIDIxLCAxNTgsIDIyNiwgMTQxLCAyMSwgMTYxLCAyMjYsIDE0MSwgMjEsIDE4OSwgMjI2LCAxNDEsIAorICAgIDIxLCAxOTQsIDIyNiwgMTQxLCAyMSwgMTk4LCAyMjYsIDE0MSwgMjEsIDE5NSwgMjI2LCAxNDEsIDIxLCAyMDAsIDI0OSwgCisgICAgNjcsIDMsIDYxLCAyNDksIDY3LCAzLCA3NSwgMjQ5LCA2NywgMywgNzMsIDI0OSwgNjcsIDMsIDc2LCAyNDksIDY3LCAzLCAKKyAgICA3MCwgMjQ5LCA2NywgMywgMjM1LCAxNDEsIDI0OSwgNjcsIDMsIDIzNSwgNjgsIDI0OSwgNjcsIDMsIDE3NiwgMjQ5LCA2NywgCisgICAgMywgMjM0LCAxODIsIDI0OSwgNjcsIDMsIDIzNCwgOTIsIDI0OSwgNjcsIDMsIDIzNCwgMjgsIDI0OSwgNjcsIDMsIDIzMywgCisgICAgMjE3LCAyNDksIDY3LCAzLCAyMzMsIDEzNSwgMjQ5LCA2NywgMywgMjMzLCA1OCwgMjQ5LCA2NywgMywgMjMyLCAyNDEsIAorICAgIDI0OSwgNjcsIDMsIDIzMiwgMTU2LCAyNDksIDY3LCAzLCAyMzIsIDk4LCAyNDksIDY3LCAzLCAxODQsIDI0OSwgNjcsIDMsIAorICAgIDIzMSwgOTEsIDI0OSwgNjcsIDMsIDIzMCwgMjMwLCAyNDksIDY3LCAzLCAyMzAsIDE2MSwgMjQ5LCA2NywgMywgMjMwLCAKKyAgICAxMDIsIDI0OSwgNjcsIDMsIDE5NywgMjQ5LCA2NywgMywgMjI5LCAxMDcsIDI0OSwgNjcsIDMsIDIyOCwgMjMzLCAyNDksIAorICAgIDY3LCAzLCAyMjgsIDc0LCAyNDksIDY3LCAzLCAyMjcsIDIzNywgMjQ5LCA2NywgMywgMTkwLCAyNDksIDY3LCAzLCAyMjUsIAorICAgIDIyMSwgMjQ5LCA2NywgMywgMjI1LCAxMDgsIDI0OSwgNjcsIDMsIDIyNSwgMTYsIDI0OSwgNjcsIDMsIDIyNCwgMTUwLCAKKyAgICAyNDksIDY3LCAzLCAyMDUsIDI0OSwgNjcsIDMsIDIyMywgMTI4LCAyNDksIDY3LCAzLCAyMjMsIDM1LCAyNDksIDY3LCAzLCAKKyAgICAyMjIsIDIxMSwgMjQ5LCA2NywgMywgMjIyLCAxNDAsIDI0OSwgNjcsIDMsIDIwNiwgMjQ5LCA2NywgMywgMjIxLCAxODEsIAorICAgIDI0OSwgNjcsIDMsIDIxOSwgMTkxLCAyNDksIDY3LCAzLCAyMTksIDU4LCAyNDksIDY3LCAzLCAyMTgsIDgzLCAyNDksIDY3LCAKKyAgICAzLCAyMTcsIDEwNSwgMjQ5LCA2NywgMywgMjE3LCAyMiwgMjQ5LCA2NywgMywgMjE2LCAxMTcsIDI0OSwgNjcsIDMsIDExMSwgCisgICAgMjQ5LCA2NywgMywgMjE1LCAxMTgsIDI0OSwgNjcsIDMsIDIxMiwgNjUsIDI0OSwgNjcsIDMsIDIxMiwgMjIsIDI0OSwgNjcsIAorICAgIDMsIDIxMSwgMjUwLCAyNDksIDY3LCAzLCAyMTEsIDIyNywgMjQ5LCA2NywgMywgMjExLCAxNjUsIDI0OSwgNjcsIDMsIDIxMSwgCisgICAgMTYyLCAyNDksIDY3LCAzLCAyMTAsIDExNiwgMjQ5LCA2NywgMywgMjEwLCAyMywgMjM2LCAxLCAyNTQsIDI3LCAxLCAyNTQsIAorICAgIDE2OCwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyNTIsIDI1LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDI0MiwgMjAxLCAyMzYsIDEsIAorICAgIDI1NCwgMjcsIDEsIDI0OCwgMTg4LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDI0MSwgMjM4LCAyMzYsIDEsIDI1NCwgMjcsIDEsIAorICAgIDIxMiwgMzAsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjEwLCA5NywgMjM2LCAxLCAyNTQsIDI3LCAxLCAyNDEsIDE5NSwgMjM2LCAKKyAgICAxLCAyNTQsIDI3LCAxLCAyMTYsIDIyNiwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMTAsIDIzMiwgMjM2LCAxLCAyNTQsIDI3LCAKKyAgICAxLCAyMzQsIDIyNSwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMzMsIDkzLCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIzMSwgNjUsIAorICAgIDIzNiwgMSwgMjU0LCAyNywgMSwgMjI3LCAxOTQsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjIxLCAyNDksIDIzNiwgMSwgMjU0LCAKKyAgICAyNywgMSwgMjUzLCAxNjIsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjI1LCAyMjEsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjIyLCAKKyAgICAyNCwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMjQsIDM0LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIyMywgNjcsIDIzNiwgMSwgCisgICAgMjU0LCAyNywgMSwgMjIwLCAyMCwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMTcsIDM2LCAyMzYsIDEsIDI1NCwgMjcsIDIyMSwgCisgICAgMTczLCA1MCwgMjM2LCAxLCAyNTQsIDI3LCA1NCwgMTEwLCAyMzYsIDEsIDI1NCwgMjcsIDU0LCAxMDUsIDIzNiwgMSwgMjU0LCAKKyAgICAyNywgNTQsIDE1OCwgMjM2LCAxLCAyNTQsIDI3LCA1NCwgMjE2LCAyNDcsIDIzNiwgMSwgMjU0LCAyNywgNTQsIDIxNSwgNzMsIAorICAgIDIzNiwgMSwgMjU0LCAyNywgNTQsIDEyMywgMjQwLCAyMTAsIDIzNiwgMSwgMjU0LCAyNywgNTQsIDEyMywgMjE2LCAxNDcsIAorICAgIDIzNiwgMSwgMjU0LCAyNywgNTQsIDIxNiwgMjQ4LCAyMTYsIDE0NywgMjI1LCAxMTksIDEsIDI1NCwgMTY1LCAyMjUsIDExOSwgCisgICAgMSwgMjUyLCAyOCwgMjI1LCAxMTksIDEsIDI0MywgMTA5LCAyMjUsIDExOSwgMSwgMjQ4LCA1NiwgMjI1LCAxMTksIDEsIAorICAgIDI0MSwgMjM4LCAyMjUsIDExOSwgMSwgMjEyLCAzNywgMjI1LCAxMTksIDEsIDIxMCwgMTEwLCAyMjUsIDExOSwgMSwgMjQxLCAKKyAgICAxOTcsIDIyNSwgMTE5LCAxLCAyMTYsIDIzMCwgMjI1LCAxMTksIDEsIDIxMCwgMjMzLCAyMjUsIDExOSwgMSwgMjM0LCAyNTAsIAorICAgIDIyNSwgMTE5LCAxLCAyMzMsIDk5LCAyMjUsIDExOSwgMSwgMjMxLCA2NSwgMjI1LCAxMTksIDEsIDIyNywgMTk0LCAyMjUsIAorICAgIDExOSwgMSwgMjIwLCAxNDQsIDIyNSwgMTE5LCAxLCAyNTQsIDE5NiwgMjI1LCAxMTksIDEsIDIyNSwgMjIxLCAyMjUsIDExOSwgCisgICAgMSwgMjIyLCAyNSwgMjI1LCAxMTksIDEsIDIyNCwgMzksIDIyNSwgMTE5LCAxLCAyMjIsIDE4OSwgMjI1LCAxMTksIDEsIAorICAgIDIyMCwgMjAsIDIyNSwgMTE5LCAxLCAyMTcsIDQxLCAyMjUsIDExOSwgNTQsIDExMCwgMjI1LCAxMTksIDU0LCAyMTYsIDI0NywgCisgICAgMjI1LCAxMTksIDU0LCAyMTUsIDczLCAyMjUsIDExOSwgNTQsIDEyMywgMjQwLCAyMTAsIDIyNSwgMTE5LCA1NCwgMTA1LCAKKyAgICAyMjUsIDExOSwgNTQsIDE1OCwgMjI1LCAxMTksIDIxMSwgMjA5LCAyMjAsIDEzNywgMjMyLCA1OSwgMSwgNjEsIDIzMiwgNTksIAorICAgIDEsIDI1MywgMTU4LCAyMzIsIDU5LCAxLCAyNDMsIDIwMiwgMjMyLCA1OSwgMSwgMjQ5LCA2MCwgMjMyLCA1OSwgMSwgNzUsIAorICAgIDIzMiwgNTksIDEsIDIxNCwgMTA1LCAyMzIsIDU5LCAxLCA3MywgMjMyLCA1OSwgMSwgMjExLCAxMTcsIDIzMiwgNTksIDEsIAorICAgIDIzNSwgMjMsIDIzMiwgNTksIDEsIDE1NiwgMjMyLCA1OSwgMSwgMTkzLCAyMzIsIDU5LCAxLCAyMzAsIDI1LCAyMzIsIDU5LCAKKyAgICAxLCA3NiwgMjMyLCA1OSwgMSwgMTUzLCAyMzIsIDU5LCAxLCAyMTgsIDIyNiwgMjMyLCA1OSwgMSwgMjE3LCAxNTIsIDIzMiwgCisgICAgNTksIDEsIDcwLCAyMzIsIDU5LCAxLCAyNDUsIDYsIDIzMiwgNTksIDEsIDIyNCwgOTYsIDIzMiwgNTksIDEsIDIyMiwgOTEsIAorICAgIDIzMiwgNTksIDEsIDIxNSwgMTU5LCAyMzIsIDU5LCAxLCAyNTQsIDEyMywgMjMyLCA1OSwgMSwgMjQ1LCAxNTAsIDIzMiwgCisgICAgNTksIDEsIDIzMiwgNjIsIDIzMiwgNTksIDEsIDIyOCwgMTExLCAyMzIsIDU5LCAxLCAyNTEsIDY2LCAyMzIsIDU5LCAyMTUsIAorICAgIDIyMiwgNzgsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCA2MSwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDc1LCAyMzEsIDQ4LCAKKyAgICAyNDEsIDE3NCwgMSwgNzMsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCA3NiwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDE5MSwgCisgICAgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIxMiwgNjUsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyNTIsIDE5MSwgMjMxLCA0OCwgCisgICAgMjQxLCAxNzQsIDEsIDI1MiwgMTkwLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMTkwLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgCisgICAgMTg0LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMTk3LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjI5LCAyMjgsIDIzMSwgNDgsIAorICAgIDI0MSwgMTc0LCAxLCAyMjksIDEwNywgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIyOSwgMTA2LCAyMzEsIDQ4LCAyNDEsIDE3NCwgCisgICAgMSwgMjA1LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjIzLCAxODcsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMzMsIDEzNSwgCisgICAgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIzNCwgMTMyLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjQxLCAxODksIDIzMSwgNDgsIAorICAgIDI0MSwgMTc0LCAxLCAyMDYsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMjIsIDMzLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgCisgICAgMjIxLCAxODEsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAxNzYsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMjQsIDg4LCAyMzEsIAorICAgIDQ4LCAyNDEsIDE3NCwgMSwgMjE3LCAxMDUsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMTcsIDEwNCwgMjMxLCA0OCwgMjQxLCAKKyAgICAxNzQsIDEsIDIxNywgMjIsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMTcsIDIxLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgCisgICAgMTExLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjQ4LCAyMjEsIDIzMSwgNDgsIDI0MSwgMTc0LCAxNiwgMjEzLCAxNzAsIAorICAgIDIzMSwgNDgsIDI0MSwgMTc0LCAxNiwgMjEzLCAxNjksIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDYxLCAyMzEsIDQ4LCAyNDksIAorICAgIDk0LCAxLCA3NSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgNzMsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDc2LCAyMzEsIDQ4LCAKKyAgICAyNDksIDk0LCAxLCAxOTEsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDIxMiwgNjUsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDI1MiwgCisgICAgMTkxLCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAxOTAsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDE4NCwgMjMxLCA0OCwgMjQ5LCAKKyAgICA5NCwgMSwgMTk3LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyMjksIDEwNywgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjA1LCAyMzEsIAorICAgIDQ4LCAyNDksIDk0LCAxLCAyMzMsIDEzNSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjM0LCAxMzIsIDIzMSwgNDgsIDI0OSwgCisgICAgOTQsIDEsIDI0MSwgMTg5LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyMDYsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDI1NCwgMjMsIAorICAgIDIwNiwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjIxLCAxODEsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDE3NiwgMjMxLCA0OCwgCisgICAgMjQ5LCA5NCwgMSwgMjI0LCA4OCwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjE3LCAxMDUsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIAorICAgIDIxNywgMjIsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDExMSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjQ4LCAyMjEsIDIzMSwgCisgICAgNDgsIDI0OSwgOTQsIDIzMiwgMTQ1LCAyMjIsIDIxNywgMjMxLCA0OCwgMjQ5LCA5NCwgMjMyLCAxNDUsIDIzNiwgNiwgMjM0LCAKKyAgICAxMjAsIDEsIDYxLCAyMzQsIDEyMCwgMjUsIDUsIDczLCAyMzQsIDEyMCwgMjUsIDUsIDcwLCAyMzQsIDEyMCwgMjUsIDUsIAorICAgIDE0OSwgMTUzLCAyMzQsIDEyMCwgMjUsIDUsIDc1LCAyMzQsIDEyMCwgMjUsIDUsIDc2LCAyMzQsIDEyMCwgMjUsIDIzMywgCisgICAgMjMsIDc4LCAyMzQsIDEyMCwgNSwgNTIsIDIyMiwgMjM0LCA1MSwgMjM0LCAxMjAsIDUsIDI1NCwgNzUsIDIzNCwgMTIwLCA1LCAKKyAgICAyMTMsIDE0NywgMjM0LCAxMjAsIDEsIDE3NiwgMjM0LCAxMjAsIDEsIDIzNCwgMTMyLCAyMzQsIDEyMCwgMSwgMjQzLCAxMzUsIAorICAgIDIzNCwgMTIwLCAxLCAyNDIsIDI0OSwgMjM0LCAxMjAsIDEsIDI1MSwgMzMsIDIzNCwgMTIwLCAxLCAyNTAsIDE1NywgMjM0LCAKKyAgICAxMjAsIDEsIDIzNSwgMTQxLCAyMzQsIDEyMCwgMSwgMjI3LCAxNjUsIDIzNCwgMTIwLCAxLCAyMTUsIDE1NiwgMjM0LCAxMjAsIAorICAgIDEsIDIxNSwgMTQ0LCAyMzQsIDEyMCwgMSwgMjQ4LCAxMzUsIDIzNCwgMTIwLCAxLCAyNDgsIDExOSwgMjM0LCAxMjAsIDEsIAorICAgIDIyOCwgMTEwLCAyMzQsIDEyMCwgMSwgMjE3LCAxMDUsIDIzNCwgMTIwLCAxLCAyMTYsIDIwOCwgMjM0LCAxMjAsIDEsIDI0OCwgCisgICAgMjIxLCAyMzQsIDEyMCwgMSwgMjQ4LCAyNSwgMjM0LCAxMjAsIDEsIDE5NywgMjM0LCAxMjAsIDEsIDE5MCwgMjM0LCAxMjAsIAorICAgIDEsIDIyNSwgMTQ3LCAyMzQsIDEyMCwgMSwgMjUyLCAxOTEsIDIzNCwgMTIwLCAxLCAyNTIsIDE4LCAyMzQsIDEyMCwgMSwgCisgICAgMTg0LCAyMzQsIDEyMCwgMSwgMTkxLCAyMzQsIDEyMCwgMSwgMjA1LCAyMzQsIDEyMCwgMSwgMjMzLCAxMzUsIDIzNCwgMTIwLCAKKyAgICAxLCAyMTQsIDI3LCAyMzQsIDEyMCwgMSwgMjIwLCAxMDIsIDIzNCwgMTIwLCAxLCAyMTgsIDIyMywgMjM0LCAxMjAsIDEsIAorICAgIDIwNiwgMjM0LCAxMjAsIDEsIDIxMCwgMTE2LCAyMzQsIDEyMCwgMSwgMTYyLCAyMzQsIDEyMCwgMSwgMjM0LCA0NiwgMjM0LCAKKyAgICAxMjAsIDEsIDIxNSwgMTI0LCAyMzQsIDEyMCwgNSwgMjUyLCAxNDEsIDQ4LCAyMzQsIDEyMCwgNSwgMjUwLCAyMjEsIDIzNCwgCisgICAgMTIwLCA1LCA1OSwgNTEsIDIzNCwgMTIwLCAyMTMsIDE1MiwgMjM0LCAxMjAsIDIxLCAxMTAsIDIzNCwgMTIwLCAyMSwgMTA1LCAKKyAgICAyMzQsIDEyMCwgMjEsIDE1OCwgMjM0LCAxMjAsIDIxLCAxNjEsIDIzNCwgMTIwLCA1NCwgMjE2LCAyNDcsIDIzNCwgMTIwLCAKKyAgICA1NCwgMjE1LCA3MywgMjM0LCAxMjAsIDU0LCAxMjMsIDI0MCwgMjEwLCAyMzQsIDEyMCwgNTQsIDEyMywgMjE2LCAxNDcsIAorICAgIDIzNCwgMTIwLCAyMjQsIDE0MSwgMjQ3LCAxMjAsIDIzNCwgMTIwLCAyMjQsIDE0MSwgNCwgMjUwLCAzNSwgMjM0LCAxMjAsIAorICAgIDIyNCwgMTQxLCAyNTAsIDM1LCAyMzQsIDEyMCwgMjI0LCAxNDEsIDI0OSwgMTM3LCAxMzAsIDIzNCwgMTIwLCAyMjQsIDE0MSwgCisgICAgMjMxLCAxODAsIDIzNCwgMTIwLCAyMjQsIDE0MSwgMjMyLCAxMTUsIDIzNCwgMTIwLCAyMjQsIDE0MSwgMjQ4LCAxNzgsIAorICAgIDIzNCwgMTIwLCAyMjQsIDE0MSwgNTIsIDI0OCwgMTc4LCAyMzQsIDEyMCwgMjI0LCAxNDEsIDIzMiwgMjA3LCA1NSwgMjE5LCAKKyAgICAyOCwgMjU0LCAzOCwgMSwgMjQxLCAyMzgsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMzMsIDkzLCA1NSwgMjE5LCAyOCwgCisgICAgMjU0LCAzOCwgMSwgMjQxLCAxOTUsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMzEsIDY1LCA1NSwgMjE5LCAyOCwgMjU0LCAKKyAgICAzOCwgMSwgMjI0LCAzNCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIxMiwgMzAsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAKKyAgICAxLCAyMjAsIDIwLCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjIzLCA2NywgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIAorICAgIDI1MiwgMjUsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMTcsIDM2LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjIxLCAKKyAgICAyMjYsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMzQsIDIyNSwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIyNywgCisgICAgMTk0LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjM0LCAxMTYsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMjIsIDI0LCAKKyAgICA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjIxLCAyNDksIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyNDQsIDE1NCwgNTUsIAorICAgIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDI1NCwgMTcwLCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjUzLCAxNjEsIDU1LCAKKyAgICAyMTksIDI4LCAyNTQsIDM4LCAxLCAyNDgsIDIyLCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjQyLCAyMDEsIDU1LCAyMTksIAorICAgIDI4LCAyNTQsIDM4LCAxLCAyNDgsIDE4OCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDI0MiwgMjM4LCA1NSwgMjE5LCAyOCwgCisgICAgMjU0LCAzOCwgMSwgMjE2LCAyMjYsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMTAsIDk2LCA1NSwgMjE5LCAyOCwgMjU0LCAKKyAgICAzOCwgMSwgMjQ4LCAxOSwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIxMCwgMjMyLCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgCisgICAgMSwgMjE2LCAxOTcsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMTYsIDE3OCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDU0LCAKKyAgICAxMTAsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCA1NCwgMjQ0LCAxMTQsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxMzIsIDIzNSwgCisgICAgMjM4LCAyNTMsIDE3MiwgMSwgNjEsIDI1MywgMTcyLCAxLCAyNTUsIDczLCAyNTMsIDE3MiwgMSwgMjU0LCA3MywgMjUzLCAKKyAgICAxNzIsIDEsIDI1NSwgMzIsIDI1MywgMTcyLCAxLCAyNTQsIDEyMywgMjUzLCAxNzIsIDEsIDI1NSwgMzMsIDI1MywgMTcyLCAKKyAgICAxLCAyNTQsIDI0MywgMjUzLCAxNzIsIDEsIDI1NCwgMjM5LCAyNTMsIDE3MiwgMSwgNzUsIDI1MywgMTcyLCAxLCAyNDUsIAorICAgIDIwOSwgMjUzLCAxNzIsIDEsIDc2LCAyNTMsIDE3MiwgMSwgMjI2LCAxODMsIDI1MywgMTcyLCAxLCA3MywgMjUzLCAxNzIsIAorICAgIDEsIDIzNiwgMzMsIDI1MywgMTcyLCAxLCA3MCwgMjUzLCAxNzIsIDEsIDIxNCwgMTE4LCAyNTMsIDE3MiwgMSwgMjM0LCAKKyAgICAxODIsIDI1MywgMTcyLCAxLCAyMTEsIDE2MiwgMjUzLCAxNzIsIDEsIDIxMSwgMTI4LCAyNTMsIDE3MiwgMSwgMjExLCAxMzcsIAorICAgIDI1MywgMTcyLCAxLCAyNDMsIDYyLCAyNTMsIDE3MiwgMSwgMjQzLCAyNCwgMjUzLCAxNzIsIDEsIDI0MiwgMjM2LCAyNTMsIAorICAgIDE3MiwgMSwgMjUwLCAxOTAsIDI1MywgMTcyLCAxLCAyMzUsIDEyNiwgMjUzLCAxNzIsIDEsIDIxNywgMjIsIDI1MywgMTcyLCAKKyAgICAxLCAyMTYsIDE5NSwgMjUzLCAxNzIsIDEsIDI0OCwgOTAsIDI1MywgMTcyLCAxLCAyNDgsIDE3LCAyNTMsIDE3MiwgMSwgCisgICAgMjE1LCAxNTEsIDI1MywgMTcyLCAxLCAyMjUsIDIyMSwgMjUzLCAxNzIsIDEsIDI0NCwgMTU0LCAyNTMsIDE3MiwgMSwgMjUyLCAKKyAgICA3NSwgMjUzLCAxNzIsIDEsIDI1MiwgMTQsIDI1MywgMTcyLCAxLCAyMjksIDY0LCAyNTMsIDE3MiwgMSwgMjI4LCAyMzksIAorICAgIDI1MywgMTcyLCAxLCAyMjgsIDI0MCwgMjUzLCAxNzIsIDEsIDIyOSwgMTA3LCAyNTMsIDE3MiwgMSwgMjI3LCAxNTYsIDI1MywgCisgICAgMTcyLCAxLCAyMjgsIDEwNSwgMjUzLCAxNzIsIDEsIDIzMSwgOTEsIDI1MywgMTcyLCAxLCAyNDEsIDExNiwgMjUzLCAxNzIsIAorICAgIDEsIDIxMCwgMTY2LCAyNTMsIDE3MiwgMSwgMjExLCA0NywgMjUzLCAxNzIsIDEsIDIxMywgMjU1LCAyNTMsIDE3MiwgMSwgCisgICAgMjIzLCAxMjgsIDI1MywgMTcyLCAxLCAyMzMsIDU4LCAyNTMsIDE3MiwgMSwgMjIxLCAxODEsIDI1MywgMTcyLCAxLCAyMTAsIAorICAgIDk0LCAyNTMsIDE3MiwgMSwgMjIwLCA2MywgMjUzLCAxNzIsIDEsIDIxMCwgNzQsIDI1MywgMTcyLCAxLCAyMTksIDE5OCwgCisgICAgMjUzLCAxNzIsIDEsIDIxOCwgMTkzLCAyNTMsIDE3MiwgMSwgMjQxLCAyMzgsIDI1MywgMTcyLCAyNTUsIDIxLCA3OCwgMjE2LCAKKyAgICA3OSwgMTEzLCAxNzAsIDExNywgMTIzLCA1OSwgMjI0LCAxNDAsIDQsIDExMywgMTcwLCAxMTcsIDEyMywgNTksIDIyNCwgCisgICAgMTQwLCAyMzMsIDg1LCAxMTMsIDE3MCwgMTE3LCAxMjMsIDU5LCAyMjQsIDE0MCwgMjMzLCA4NSwgMTIzLCA1OSwgMTE3LCAKKyAgICAxMTMsIDE3MCwgMjI0LCAxNDAsIDIzMywgODUsIDExMywgMjIyLCAyMzIsIDExNywgMTIzLCAyMjIsIDIzNCwgMjI0LCAxNDAsIAorICAgIDIzMywgODUsIDEyMywgMjIyLCAyMzQsIDExNywgMTEzLCAyMjIsIDIzMiwgMjI0LCAxNDAsIDIzNSwgMjE4LCAyMjUsIDI1NCwgCisgICAgMSwgMjU0LCAxNjgsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjUyLCAyNSwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyNDIsIAorICAgIDIwMSwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyNDgsIDE4OCwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyNDEsIDIzOCwgCisgICAgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMTIsIDMwLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIxMCwgOTcsIDIzNSwgMjE4LCAKKyAgICAyMjUsIDI1NCwgMSwgMjQxLCAxOTUsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjE2LCAyMjYsIDIzNSwgMjE4LCAyMjUsIAorICAgIDI1NCwgMSwgMjEwLCAyMzIsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjM0LCAyMjUsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgCisgICAgMjMzLCA5MywgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMzEsIDY1LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIyNywgMTk0LCAKKyAgICAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIyMSwgMjQ5LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDI1MywgMTYyLCAyMzUsIAorICAgIDIxOCwgMjI1LCAyNTQsIDEsIDIyNSwgMjIxLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIyMiwgMjQsIDIzNSwgMjE4LCAKKyAgICAyMjUsIDI1NCwgMSwgMjI0LCAzNCwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMjMsIDY3LCAyMzUsIDIxOCwgMjI1LCAyNTQsIAorICAgIDEsIDIyMCwgMjAsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjE3LCAzNiwgMjM1LCAyMTgsIDIyNSwgMjU0LCA1NCwgMTEwLCAKKyAgICAyMzUsIDIxOCwgMjI1LCAyNTQsIDU0LCAxMDUsIDIzNSwgMjE4LCAyMjUsIDI1NCwgNTQsIDE1OCwgMjM1LCAyMTgsIDIyNSwgCisgICAgMjU0LCA1NCwgMTYxLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDU0LCAyMTYsIDI0NywgMjM1LCAyMTgsIDIyNSwgMjU0LCA1NCwgCisgICAgMjE1LCA3MywgMjM1LCAyMTgsIDIyNSwgMjU0LCA1NCwgMTIzLCAyNDAsIDIxMCwgMjM1LCAyMTgsIDIyNSwgMjU0LCA1NCwgCisgICAgMTIzLCAyMTYsIDE0NywgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDI1NCwgMTY4LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjUyLCAKKyAgICAyNSwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDI0MiwgMjAxLCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjQ4LCAxODgsIDIzNSwgCisgICAgMjE4LCAyMjYsIDcyLCAxLCAyNDEsIDIzOCwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIxMiwgMjksIDIzNSwgMjE4LCAyMjYsIAorICAgIDcyLCAxLCAyMTAsIDk3LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjQxLCAxOTUsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAKKyAgICAyMTYsIDIyNiwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIxMCwgMjMyLCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjM0LCAyMjUsIAorICAgIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyMzMsIDkzLCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjMxLCA2NCwgMjM1LCAyMTgsIAorICAgIDIyNiwgNzIsIDEsIDIyNywgMTk0LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjIxLCAyNDksIDIzNSwgMjE4LCAyMjYsIDcyLCAKKyAgICAxLCAyMjUsIDIyMSwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIyMiwgMjQsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyMjAsIAorICAgIDIwLCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjE3LCAzNiwgMjM1LCAyMTgsIDIyNiwgNzIsIDU0LCAxMTAsIDIzNSwgMjE4LCAKKyAgICAyMjYsIDcyLCA1NCwgMTA1LCAyMzUsIDIxOCwgMjI2LCA3MiwgNTQsIDE1OCwgMjM1LCAyMTgsIDIyNiwgNzIsIDU0LCAxNjEsIAorICAgIDIzNSwgMjE4LCAyMjYsIDcyLCA1NCwgMjE2LCAyNDcsIDIzNSwgMjE4LCAyMjYsIDcyLCA1NCwgMjE1LCA3MywgMjM1LCAKKyAgICAyMTgsIDIyNiwgNzIsIDU0LCAxMjMsIDI0MCwgMjEwLCAyMzUsIDIxOCwgMjI2LCA3MiwgNTQsIDEyMywgMjE2LCAxNDcsIAorICAgIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCA2MSwgNTUsIDIwMSwgMSwgMjExLCAzNywgNjEsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIAorICAgIDI1NCwgMjQzLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgNzMsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDczLCA1NSwgMjAxLCAxLCAKKyAgICAyMTEsIDM3LCA3NSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDc2LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjI2LCAyMzQsIAorICAgIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDIyNiwgMjM0LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU1LCAyNSwgNTUsIDIwMSwgMSwgCisgICAgMjExLCAzNywgMjU1LCAyNSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjQyLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAKKyAgICAyNTQsIDI0MiwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjE2LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIxNiwgCisgICAgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjM3LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIzNywgNTUsIDIwMSwgCisgICAgMSwgMjI2LCAxNDksIDI1NCwgMjU1LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDI1NSwgNTUsIDIwMSwgMSwgMjI2LCAKKyAgICAxNDksIDI1NCwgMjQxLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjQ1LCAxMiwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjQ1LCAKKyAgICAxMiwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1MywgMTY3LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTMsIDE2NywgNTUsIAorICAgIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjI0LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIyNCwgNTUsIDIwMSwgMSwgCisgICAgMjI2LCAxNDksIDI1NCwgMjM1LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIzNSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIAorICAgIDIyNiwgMjMzLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyMjYsIDIzMywgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMTc4LCAKKyAgICA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDE3OCwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjM0LCA1NSwgMjAxLCAKKyAgICAxLCAyMjYsIDE0OSwgMjQ1LCAxNjEsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNDUsIDE1OSwgNTUsIDIwMSwgMSwgMjI2LCAKKyAgICAxNDksIDI1NCwgMTIzLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCAyMzIsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgCisgICAgMjMyLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjQ1LCAxMzEsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI0NSwgMTMxLCA1NSwgCisgICAgMjAxLCAxLCAyMjYsIDE0OSwgMjQ1LCAxNDcsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI0NSwgMTQ3LCA1NSwgMjAxLCAxLCAKKyAgICAyMjYsIDE0OSwgMjQ1LCAxMTgsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI0NSwgMTE4LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAKKyAgICAyNTQsIDExNSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI0NSwgMTM4LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIzMSwgCisgICAgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI0NSwgMTA4LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjI2LCAxNzUsIDU1LCAyMDEsIAorICAgIDEsIDIyNiwgMTQ5LCAyNDAsIDExMywgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI0NSwgMjE1LCA1NSwgMjAxLCAxLCAyMTEsIAorICAgIDM3LCAyNDUsIDIxNSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgNDUsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgCisgICAgNDUsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyMzUsIDE4MSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjM1LCAxODEsIDU1LCAKKyAgICAyMDEsIDEsIDIyNiwgMTQ5LCAyMjYsIDE1OSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjI2LCAxNTksIDU1LCAyMDEsIDEsIAorICAgIDIyNiwgMTQ5LCAyNTQsIDQxLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDQxLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgCisgICAgMjU0LCAyMzAsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTMsIDIzNywgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjI4LCAKKyAgICA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjUzLCAyMzEsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1MywgMjMxLCA1NSwgMjAxLCAKKyAgICAxLCAyMjYsIDE0OSwgMjQ1LCA3NSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjQ1LCA3NSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIAorICAgIDI1MywgMjA2LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTMsIDIwNiwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjI1LCAKKyAgICA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIyNSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDIyNiwgMTQwLCA1NSwgMjAxLCAKKyAgICAxLCAyMjYsIDE0OSwgMjUyLCAxMjUsIDIyMiwgMTI3LCAyMSwgMTEwLCAyMjIsIDEyNywgMjEsIDEwNSwgMjIyLCAxMjcsIAorICAgIDIxLCAxNTgsIDIyMiwgMTI3LCAyMSwgMTYxLCAyMjIsIDEyNywgMjEsIDE4OSwgMjIyLCAxMjcsIDIxLCAxOTQsIDIyMiwgCisgICAgMTI3LCAyMSwgMTk4LCAyMjIsIDEyNywgMjEsIDE5NSwgMjIyLCAxMjcsIDIxLCAyMDAsIDIyMiwgMTI3LCA1NCwgMjE2LCAKKyAgICAyNDcsIDIyMiwgMTI3LCA1NCwgMjE1LCA3MywgMjIyLCAxMjcsIDU0LCAyMTYsIDE2MiwgMjIyLCAxMjcsIDU0LCAyNDQsIAorICAgIDE1LCAyMjIsIDEyNywgNTQsIDI0NCwgMTE0LCAyMjIsIDEyNywgNTQsIDIxOSwgMTExLCAyMjIsIDEyNywgNTQsIDIyMCwgCisgICAgMTE2LCAyMjIsIDEyNywgNTQsIDI0NSwgMTg0LCAyMjIsIDEyNywgNTQsIDIyOCwgMTk1LCAyMjIsIDEyNywgNTQsIDEyMywgCisgICAgMjQwLCAyMTAsIDIyMiwgMTI3LCA1NCwgMTEzLCAyNDAsIDIxMCwgMjIyLCAxMjcsIDU0LCAxMzQsIDI0MCwgMjEwLCAyMjIsIAorICAgIDEyNywgNTQsIDI0NCwgMTEsIDI0MCwgMjEwLCAyMjIsIDEyNywgNTQsIDI0NCwgODEsIDI0MCwgMjEwLCAyMjIsIDEyNywgCisgICAgNTQsIDIxOSwgMTI1LCAyNDAsIDIxMCwgMjIyLCAxMjcsIDU0LCAyMjAsIDEyMiwgMjQwLCAyMTAsIDIyMiwgMTI3LCA1NCwgCisgICAgMjQ1LCAxOTMsIDI0MCwgMjEwLCAyMjIsIDEyNywgNTQsIDIyOCwgMjAwLCAyNDAsIDIxMCwgMjIyLCAxMjcsIDI0NCwgMiwgCisgICAgMTIzLCAyNDIsIDI3LCAyMjIsIDEyNywgMjQ0LCAyLCAxMjMsIDIyNCwgMjEsIDIyMiwgMTI3LCAyNDQsIDIsIDEyMywgMjE2LCAKKyAgICAxNjgsIDIyMiwgMTI3LCAyNDQsIDIsIDExMywgMjE2LCAxNjYsIDExOCwgNSwgMjUwLCAyNTUsIDExOCwgNSwgMjU0LCA3NSwgCisgICAgMTE4LCA1LCAyMTMsIDE0NywgMTE4LCA1LCAyMzUsIDEwMiwgMTE4LCA1LCAyMTQsIDE2MSwgMTE4LCAxLCA2MSwgMTE4LCAxLCAKKyAgICAyNTUsIDczLCAxMTgsIDEsIDczLCAxMTgsIDEsIDIzNiwgMzMsIDExOCwgMSwgNzAsIDExOCwgMSwgMjE0LCAxMTgsIDExOCwgCisgICAgMSwgMTQ5LCAxNTMsIDExOCwgMSwgMTQ5LCAyMjIsIDE4MCwgMTE4LCAxLCAxNDksIDE1NiwgMTE4LCAxLCAxNDksIDIzMiwgCisgICAgMTg1LCAxMTgsIDEsIDc1LCAxMTgsIDEsIDI1NCwgMjAxLCAxMTgsIDEsIDc2LCAxMTgsIDEsIDI1MywgMTkyLCAxMTgsIDEsIAorICAgIDE3NiwgMTE4LCAxLCAyMzQsIDEzMiwgMTE4LCAxLCAyNDMsIDEzNSwgMTE4LCAxLCAyNDIsIDI0OSwgMTE4LCAxLCAyMjksIAorICAgIDc3LCAxMTgsIDEsIDI1MSwgMzMsIDExOCwgMSwgMjUwLCAxNTcsIDExOCwgMSwgMjM1LCAxNDEsIDExOCwgMSwgMjM1LCAKKyAgICAxMTQsIDExOCwgMSwgMjI3LCAxNjUsIDExOCwgMSwgMjE1LCAxNTYsIDExOCwgMSwgMjE1LCAxNDQsIDExOCwgMSwgMjQ4LCAKKyAgICAxMzUsIDExOCwgMSwgMjQ4LCAxMTksIDExOCwgMSwgMjI4LCAxMTAsIDExOCwgMSwgMjE3LCAxMDUsIDExOCwgMSwgMjE2LCAKKyAgICAyMDgsIDExOCwgMSwgMjQ4LCAyMjEsIDExOCwgMSwgMjQ4LCAyNSwgMTE4LCAxLCAxOTcsIDExOCwgMSwgMTkwLCAxMTgsIDEsIAorICAgIDIyNSwgMTQ3LCAxMTgsIDEsIDI1MiwgMTkxLCAxMTgsIDEsIDI1MiwgMTgsIDExOCwgMSwgMTg0LCAxMTgsIDEsIDE5MSwgCisgICAgMTE4LCAxLCAyMDUsIDExOCwgMSwgMjMzLCAxMzUsIDExOCwgMSwgMjE0LCAyNywgMTE4LCAxLCAyMjAsIDEwMiwgMTE4LCAxLCAKKyAgICAyMTgsIDIyMywgMTE4LCAxLCAyMDYsIDExOCwgMSwgMTYyLCAxMTgsIDEsIDIzMiwgMTg0LCAxMTgsIDEsIDU1LCAzNiwgCisgICAgMjMyLCAxNzUsIDExOCwgMSwgNTUsIDM2LCAyMjIsIDE3OSwgMTE4LCAxLCA1NSwgMzYsIDIyOCwgOTIsIDExOCwgMjUsIDUsIAorICAgIDI1NSwgNzMsIDExOCwgMjUsIDUsIDI1MiwgMTUsIDI1NSwgNzMsIDExOCwgMjUsIDUsIDczLCAxMTgsIDI1LCA1LCAyMzYsIAorICAgIDMzLCAxMTgsIDI1LCA1LCA3MCwgMTE4LCAyNSwgNSwgMjE0LCAxMTgsIDExOCwgMjUsIDUsIDE0OSwgMTUzLCAxMTgsIDI1LCAKKyAgICA1LCAxNDksIDIyMiwgMTgwLCAxMTgsIDI1LCA1LCAxNDksIDE1NiwgMTE4LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTE4LCAKKyAgICAyNSwgNSwgNzUsIDExOCwgMjUsIDUsIDI1NCwgMjAxLCAxMTgsIDI1LCA1LCA3NiwgMTE4LCAyNSwgNSwgMjUzLCAxOTIsIAorICAgIDExOCwgMjEzLCAxNTIsIDExOCwgMjQ4LCAxNzgsIDExOCwgNTIsIDI0OCwgMTc4LCAxMTgsIDIyNCwgMTQxLCAyNDcsIDEyMCwgCisgICAgMTE4LCAyMjQsIDE0MSwgNTIsIDI0NywgMTIwLCAxMTgsIDIyNCwgMTQxLCAyMzIsIDIxMywgMTE4LCAyMjQsIDE0MSwgMjQ5LCAKKyAgICAxMzcsIDEzMCwgMTE4LCAyMjQsIDE0MSwgMjMyLCAxMTUsIDExOCwgNTQsIDExMCwgMTE4LCA1NCwgMTA1LCAxMTgsIDU0LCAKKyAgICAxNTgsIDExOCwgNTQsIDE2MSwgMTE4LCA1NCwgMTg5LCAxMTgsIDU0LCAxOTQsIDExOCwgNTQsIDE5OCwgMTE4LCA1NCwgCisgICAgMTk1LCAxMTgsIDU0LCAyMDAsIDExOCwgNTQsIDIxNiwgMjQ3LCAxMTgsIDU0LCAyMTUsIDczLCAxMTgsIDU0LCAyMTYsIAorICAgIDE2MiwgMTE4LCA1NCwgMjQ0LCAxNSwgMTE4LCA1NCwgMjQ0LCAxMTQsIDExOCwgNTQsIDIxOSwgMTExLCAxMTgsIDU0LCAKKyAgICAyMjAsIDExNiwgMTE4LCA1NCwgMjQ1LCAxODQsIDExOCwgNTQsIDIyOCwgMTk1LCAxMTgsIDU0LCAxMjMsIDI0MCwgMjEwLCAKKyAgICAxMTgsIDU0LCAxMjMsIDIxNiwgMTQ3LCAxMTgsIDIxLCAyMTAsIDg2LCAxMTgsIDIxLCAxMTAsIDExOCwgMjEsIDEwNSwgCisgICAgMTE4LCAyMSwgMTU4LCAxMTgsIDIxLCAxNjEsIDExOCwgMjEsIDE4OSwgMTE4LCAyMSwgMTk0LCAxMTgsIDIxLCAxOTgsIAorICAgIDExOCwgMjEsIDE5NSwgMTE4LCAyMSwgMjAwLCAyMzQsIDI0NCwgNSwgMjUwLCAyNTUsIDIzNCwgMjQ0LCA1LCAyNTQsIDc1LCAKKyAgICAyMzQsIDI0NCwgNSwgMjEzLCAxNDcsIDIzNCwgMjQ0LCAxLCA2MSwgMjM0LCAyNDQsIDEsIDI1NSwgNzMsIDIzNCwgMjQ0LCAKKyAgICAxLCA3MywgMjM0LCAyNDQsIDEsIDIzNiwgMzMsIDIzNCwgMjQ0LCAxLCA3MCwgMjM0LCAyNDQsIDEsIDIxNCwgMTE4LCAyMzQsIAorICAgIDI0NCwgMSwgNzUsIDIzNCwgMjQ0LCAxLCAyNTQsIDIwMSwgMjM0LCAyNDQsIDEsIDc2LCAyMzQsIDI0NCwgMSwgMjUzLCAKKyAgICAxOTIsIDIzNCwgMjQ0LCAxLCAxNzYsIDIzNCwgMjQ0LCAxLCAyMzQsIDEzMiwgMjM0LCAyNDQsIDEsIDI0MywgMTM1LCAyMzQsIAorICAgIDI0NCwgMSwgMjQyLCAyNDksIDIzNCwgMjQ0LCAxLCAyMjksIDc3LCAyMzQsIDI0NCwgMSwgMjUxLCAzMywgMjM0LCAyNDQsIAorICAgIDEsIDI1MCwgMTU3LCAyMzQsIDI0NCwgMSwgMjM1LCAxNDEsIDIzNCwgMjQ0LCAxLCAyMzUsIDExNCwgMjM0LCAyNDQsIDEsIAorICAgIDIyNywgMTY1LCAyMzQsIDI0NCwgMSwgMjE1LCAxNTYsIDIzNCwgMjQ0LCAxLCAyMTUsIDE0NCwgMjM0LCAyNDQsIDEsIDI0OCwgCisgICAgMTM1LCAyMzQsIDI0NCwgMSwgMjQ4LCAxMjQsIDIzNCwgMjQ0LCAxLCAyNDgsIDExOSwgMjM0LCAyNDQsIDEsIDIyMywgMzksIAorICAgIDIzNCwgMjQ0LCAxLCAyMjgsIDExMCwgMjM0LCAyNDQsIDEsIDIxNywgMTA1LCAyMzQsIDI0NCwgMSwgMjE2LCAyMDgsIDIzNCwgCisgICAgMjQ0LCAxLCAyNDgsIDIyMSwgMjM0LCAyNDQsIDEsIDI0OCwgMjUsIDIzNCwgMjQ0LCAxLCAxOTcsIDIzNCwgMjQ0LCAxLCAKKyAgICAxOTAsIDIzNCwgMjQ0LCAxLCAyMjUsIDE0NywgMjM0LCAyNDQsIDEsIDI1MiwgMTkxLCAyMzQsIDI0NCwgMSwgMjUyLCAxOCwgCisgICAgMjM0LCAyNDQsIDEsIDE4NCwgMjM0LCAyNDQsIDEsIDE5MSwgMjM0LCAyNDQsIDEsIDIwNSwgMjM0LCAyNDQsIDEsIDIzMywgCisgICAgMTM1LCAyMzQsIDI0NCwgMSwgMjE0LCAyNywgMjM0LCAyNDQsIDEsIDIyMCwgMTAyLCAyMzQsIDI0NCwgMSwgMjE4LCAyMjMsIAorICAgIDIzNCwgMjQ0LCAxLCAyMDYsIDIzNCwgMjQ0LCAxLCAxNjIsIDIzNCwgMjQ0LCAyNSwgNSwgMjU1LCA3MywgMjM0LCAyNDQsIAorICAgIDI1LCA1LCA3MywgMjM0LCAyNDQsIDI1LCA1LCAyMzYsIDMzLCAyMzQsIDI0NCwgMjUsIDUsIDcwLCAyMzQsIDI0NCwgMjUsIAorICAgIDUsIDIxNCwgMTE4LCAyMzQsIDI0NCwgMjUsIDUsIDc1LCAyMzQsIDI0NCwgMjUsIDUsIDI1NCwgMjAxLCAyMzQsIDI0NCwgCisgICAgMjUsIDUsIDc2LCAyMzQsIDI0NCwgMjUsIDUsIDI1MywgMTkyLCAyMzQsIDI0NCwgNSwgMjEzLCAxNTIsIDIzNCwgMjQ0LCA1LCAKKyAgICAyMjcsIDIwNSwgMjM0LCAyNDQsIDI1NSwgMjEsIDUwLCAyMzQsIDI0NCwgMjQ1LCAxMjEsIDUwLCAyMzQsIDI0NCwgNTQsIAorICAgIDUwLCAyMzQsIDI0NCwgMjIxLCAxNzMsIDc4LCAyMzQsIDI0NCwgNTIsIDIyMSwgMTczLCA3OCwgMjM0LCAyNDQsIDI0OCwgCisgICAgMTc4LCAyMzQsIDI0NCwgNTIsIDI0OCwgMTc4LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMjIsIDE4LCAyMTksIDM2LCAyMTksIAorICAgIDQ0LCAxLCAyMTcsIDgwLCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyNTIsIDE2OCwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjUxLCAKKyAgICAyMywgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjQ4LCAyMDMsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDI0MywgMTIwLCAyMTksIAorICAgIDM2LCAyMTksIDQ0LCAxLCAyMzEsIDIxMCwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjI5LCA3NCwgMjE5LCAzNiwgMjE5LCA0NCwgCisgICAgMSwgMjMzLCAxMTIsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIyOSwgMjEzLCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMTQsIDI0LCAKKyAgICAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMjYsIDczLCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMTEsIDg0LCAyMTksIDM2LCAyMTksIAorICAgIDQ0LCAxLCAyMjMsIDE2OCwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjQyLCAzNywgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjM0LCAKKyAgICAyNDgsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIzNSwgMTM2LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMjcsIDE2MiwgMjE5LCAKKyAgICAzNiwgMjE5LCA0NCwgMSwgMjU0LCAyMDksIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDI0NSwgMjA3LCAyMTksIDM2LCAyMTksIAorICAgIDQ0LCAxLCAyMzYsIDM0LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMTQsIDIwOCwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjI2LCAKKyAgICAyMjIsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDI0NSwgMTk3LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMzEsIDIyMywgMjE5LCAKKyAgICAzNiwgMjE5LCA0NCwgMjEsIDIxMCwgODYsIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAxMTAsIDIxOSwgMzYsIDIxOSwgNDQsIAorICAgIDIxLCAxMDUsIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAxNTgsIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAxNjEsIDIxOSwgMzYsIAorICAgIDIxOSwgNDQsIDIxLCAxODksIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAxOTQsIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAxOTgsIAorICAgIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAxOTUsIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAyMDAsIDI1MCwgMTUxLCA1LCAyNTAsIAorICAgIDI1NSwgMjUwLCAxNTEsIDUsIDI1NCwgNzUsIDI1MCwgMTUxLCA1LCAyMTMsIDE0NywgMjUwLCAxNTEsIDEsIDI1NSwgNzMsIAorICAgIDI1MCwgMTUxLCAxLCA3MywgMjUwLCAxNTEsIDEsIDcwLCAyNTAsIDE1MSwgMSwgNzUsIDI1MCwgMTUxLCAxLCAyMzUsIDEwLCAKKyAgICAyNTAsIDE1MSwgMSwgMjM0LCAxMzEsIDI1MCwgMTUxLCAxLCAyNDMsIDEzMiwgMjUwLCAxNTEsIDEsIDI0MiwgMjQ4LCAyNTAsIAorICAgIDE1MSwgMSwgMjI5LCA3NiwgMjUwLCAxNTEsIDEsIDI1MSwgMzIsIDI1MCwgMTUxLCAxLCAyNTAsIDE1NiwgMjUwLCAxNTEsIAorICAgIDEsIDIzNSwgMTQwLCAyNTAsIDE1MSwgMSwgMjM1LCAxMTMsIDI1MCwgMTUxLCAxLCAyMjcsIDE2NCwgMjUwLCAxNTEsIDEsIAorICAgIDIxNSwgMTU1LCAyNTAsIDE1MSwgMSwgMjE1LCAxNDMsIDI1MCwgMTUxLCAxLCAyNDgsIDEzNCwgMjUwLCAxNTEsIDEsIDI0OCwgCisgICAgMTE4LCAyNTAsIDE1MSwgMSwgMjI4LCAxMDksIDI1MCwgMTUxLCAxLCAyMTcsIDEwMSwgMjUwLCAxNTEsIDEsIDIxNiwgMjA3LCAKKyAgICAyNTAsIDE1MSwgMSwgMjQ4LCAyMjAsIDI1MCwgMTUxLCAxLCAyNDgsIDI0LCAyNTAsIDE1MSwgMSwgMjI5LCAyMjUsIDI1MCwgCisgICAgMTUxLCAxLCAyMjYsIDg5LCAyNTAsIDE1MSwgMSwgMjI1LCAxNDYsIDI1MCwgMTUxLCAxLCAyNTIsIDE4OSwgMjUwLCAxNTEsIAorICAgIDEsIDI1MiwgMTcsIDI1MCwgMTUxLCAxLCAyMzEsIDIzNywgMjUwLCAxNTEsIDEsIDIxMCwgMTY3LCAyNTAsIDE1MSwgMSwgCisgICAgMjExLCAxMDMsIDI1MCwgMTUxLCAxLCAyMjMsIDE4NCwgMjUwLCAxNTEsIDEsIDIzMywgMTM0LCAyNTAsIDE1MSwgMSwgMjEyLCAKKyAgICA2NCwgMjUwLCAxNTEsIDEsIDIyMiwgMzEsIDI1MCwgMTUxLCAxLCAyNDIsIDQ2LCAyNTAsIDE1MSwgMjUsIDUsIDYxLCAyNTAsIAorICAgIDE1MSwgMjUsIDUsIDczLCAyNTAsIDE1MSwgMjUsIDUsIDIzNiwgMzMsIDI1MCwgMTUxLCAyNSwgNSwgNzAsIDI1MCwgMTUxLCAKKyAgICAyNSwgNSwgMjE0LCAxMTgsIDI1MCwgMTUxLCAyNSwgNSwgNzUsIDI1MCwgMTUxLCAyNSwgNSwgMjU0LCAyMDEsIDI1MCwgCisgICAgMTUxLCAyNSwgNSwgNzYsIDI1MCwgMTUxLCAyNSwgNSwgMjUzLCAxOTIsIDI1MCwgMTUxLCAyNSwgNSwgMjI2LCAyMTksIAorICAgIDI1MCwgMTUxLCAxNDQsIDc4LCAyNTAsIDE1MSwgMjUzLCAxOTMsIDc4LCAyNTAsIDE1MSwgMjEzLCAxNTIsIDI1MCwgMTUxLCAKKyAgICAyMzEsIDIzNSwgMjUwLCAxNTEsIDIxLCAyMTAsIDg2LCAyNTAsIDE1MSwgMjEsIDExMCwgMjUwLCAxNTEsIDIxLCAxMDUsIAorICAgIDI1MCwgMTUxLCAyMSwgMTU4LCAyNTAsIDE1MSwgMjEsIDE2MSwgMjUwLCAxNTEsIDIxLCAxODksIDI1MCwgMTUxLCAyMSwgCisgICAgMTk0LCAyNTAsIDE1MSwgMjEsIDE5OCwgMjUwLCAxNTEsIDIxLCAxOTUsIDI1MCwgMTUxLCAyMSwgMjAwLCAyNTAsIDE1MSwgCisgICAgMjIxLCAxNzMsIDc4LCAyNTAsIDE1MSwgMjQ4LCAxNzgsIDI1MCwgMTUxLCA1MiwgMjQ4LCAxNzgsIDI1MCwgMTUxLCAyMjQsIAorICAgIDEzLCA3OCwgMTc0LCA1LCAyNTAsIDI1NSwgMTc0LCA1LCAyNTQsIDc1LCAxNzQsIDUsIDIxMywgMTQ3LCAxNzQsIDEsIDYxLCAKKyAgICAxNzQsIDEsIDI1NSwgNzMsIDE3NCwgMSwgNzMsIDE3NCwgMSwgMjM2LCAzMywgMTc0LCAxLCA3MCwgMTc0LCAxLCAyMTQsIAorICAgIDExOCwgMTc0LCAxLCAxNDksIDE1MywgMTc0LCAxLCAxNDksIDIyMiwgMTgwLCAxNzQsIDEsIDE0OSwgMTU2LCAxNzQsIDEsIAorICAgIDE0OSwgMjMyLCAxODUsIDE3NCwgMSwgNzUsIDE3NCwgMSwgMjU0LCAyMDEsIDE3NCwgMSwgNzYsIDE3NCwgMSwgMjUzLCAKKyAgICAxOTIsIDE3NCwgMSwgMTc2LCAxNzQsIDEsIDIzNCwgMTMyLCAxNzQsIDEsIDI0MywgMTM1LCAxNzQsIDEsIDI0MiwgMjQ5LCAKKyAgICAxNzQsIDEsIDIyOSwgNzcsIDE3NCwgMSwgMjUxLCAzMywgMTc0LCAxLCAyNTAsIDE1NywgMTc0LCAxLCAyMzUsIDE0MSwgCisgICAgMTc0LCAxLCAyMzUsIDExNCwgMTc0LCAxLCAyMjcsIDE2NSwgMTc0LCAxLCAyMTUsIDE1NiwgMTc0LCAxLCAyMTUsIDE0NCwgCisgICAgMTc0LCAxLCAyNDgsIDEzNSwgMTc0LCAxLCAyNDgsIDExOSwgMTc0LCAxLCAyMjgsIDExMCwgMTc0LCAxLCAyMTcsIDEwNSwgCisgICAgMTc0LCAxLCAyMTYsIDIwOCwgMTc0LCAxLCAyNDgsIDIyMSwgMTc0LCAxLCAyNDgsIDI1LCAxNzQsIDEsIDE5NywgMTc0LCAxLCAKKyAgICAxOTAsIDE3NCwgMSwgMjI1LCAxNDcsIDE3NCwgMSwgMjUyLCAxOTEsIDE3NCwgMSwgMjUyLCAxOCwgMTc0LCAxLCAxODQsIAorICAgIDE3NCwgMSwgMTkxLCAxNzQsIDEsIDIwNSwgMTc0LCAxLCAyMzMsIDEzNSwgMTc0LCAxLCAyMzIsIDE4NCwgMTc0LCAxLCAKKyAgICAyMTQsIDI3LCAxNzQsIDEsIDIyMCwgMTAyLCAxNzQsIDEsIDIxOCwgMjIzLCAxNzQsIDEsIDIwNiwgMTc0LCAxLCAxNjIsIAorICAgIDE3NCwgMjUsIDUsIDI1NSwgNzMsIDE3NCwgMjUsIDUsIDczLCAxNzQsIDI1LCA1LCAyMzYsIDMzLCAxNzQsIDI1LCA1LCA3MCwgCisgICAgMTc0LCAyNSwgNSwgMjE0LCAxMTgsIDE3NCwgMjUsIDUsIDE0OSwgMTUzLCAxNzQsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCAKKyAgICAxNzQsIDI1LCA1LCAxNDksIDE1NiwgMTc0LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTc0LCAyNSwgNSwgNzUsIDE3NCwgMjUsIAorICAgIDUsIDI1NCwgMjAxLCAxNzQsIDI1LCA1LCA3NiwgMTc0LCAyNSwgNSwgMjUzLCAxOTIsIDE3NCwgNSwgMjEzLCAxNTIsIDE3NCwgCisgICAgNSwgMjUzLCAxNzUsIDE3NCwgNSwgMjM1LCAxMDIsIDE3NCwgNSwgMjE0LCAxNjEsIDE3NCwgMjI2LCAyMDQsIDE3NCwgMjQ4LCAKKyAgICAxNzgsIDE3NCwgNTIsIDI0OCwgMTc4LCAxNzQsIDI1NSwgMjEsIDUwLCAxNzQsIDIyMCwgMTM3LCAxNzQsIDIxLCAyMTAsIAorICAgIDg2LCAxNzQsIDIxLCAxMTAsIDE3NCwgMjEsIDEwNSwgMTc0LCAyMSwgMTU4LCAxNzQsIDIxLCAxNjEsIDE3NCwgMjEsIDE4OSwgCisgICAgMTc0LCAyMSwgMTk0LCAxNzQsIDIxLCAxOTgsIDE3NCwgMjEsIDE5NSwgMTc0LCAyMSwgMjAwLCAyMTcsIDY5LCAxLCA2MSwgCisgICAgMjE3LCA2OSwgMSwgMjU1LCA3MywgMjE3LCA2OSwgMSwgNzMsIDIxNywgNjksIDEsIDIzNiwgMzMsIDIxNywgNjksIDEsIDcwLCAKKyAgICAyMTcsIDY5LCAxLCAyMTQsIDExOCwgMjE3LCA2OSwgMSwgNzUsIDIxNywgNjksIDEsIDI1NCwgMjAxLCAyMTcsIDY5LCAxLCAKKyAgICA3NiwgMjE3LCA2OSwgMSwgMjUzLCAxOTIsIDIxNywgNjksIDEsIDE3NiwgMjE3LCA2OSwgMSwgMjM0LCAxMzIsIDIxNywgNjksIAorICAgIDEsIDI0MywgMTM1LCAyMTcsIDY5LCAxLCAyNDIsIDI0OSwgMjE3LCA2OSwgMSwgMjI5LCA3NywgMjE3LCA2OSwgMSwgMjUxLCAKKyAgICAzMywgMjE3LCA2OSwgMSwgMjUwLCAxNTcsIDIxNywgNjksIDEsIDIzNSwgMTQxLCAyMTcsIDY5LCAxLCAyMzUsIDExNCwgCisgICAgMjE3LCA2OSwgMSwgMjI3LCAxNjUsIDIxNywgNjksIDEsIDIxNSwgMTU2LCAyMTcsIDY5LCAxLCAyMTUsIDE0NCwgMjE3LCAKKyAgICA2OSwgMSwgMjQ4LCAxMzUsIDIxNywgNjksIDEsIDI0OCwgMTE5LCAyMTcsIDY5LCAxLCAyMjgsIDExMCwgMjE3LCA2OSwgMSwgCisgICAgMjE3LCAxMDUsIDIxNywgNjksIDEsIDIxNiwgMjA4LCAyMTcsIDY5LCAxLCAyNDgsIDIyMSwgMjE3LCA2OSwgMSwgMjQ4LCAKKyAgICAyNSwgMjE3LCA2OSwgMSwgMTk3LCAyMTcsIDY5LCAxLCAxOTAsIDIxNywgNjksIDEsIDIyNSwgMTQ3LCAyMTcsIDY5LCAxLCAKKyAgICAyNTIsIDE5MSwgMjE3LCA2OSwgMSwgMjUyLCAxOCwgMjE3LCA2OSwgMSwgMTg0LCAyMTcsIDY5LCAxLCAxOTEsIDIxNywgNjksIAorICAgIDEsIDIwNSwgMjE3LCA2OSwgMSwgMjMzLCAxMzUsIDIxNywgNjksIDEsIDIxNCwgMjcsIDIxNywgNjksIDEsIDIyMCwgMTAyLCAKKyAgICAyMTcsIDY5LCAxLCAyMDYsIDIxNywgNjksIDEsIDE2MiwgMjE3LCA2OSwgMSwgMjIyLCAxNzksIDIxNywgNjksIDUsIDI1NCwgCisgICAgNzUsIDIxNywgNjksIDUsIDIxMywgMTQ3LCAyMTcsIDY5LCAyNSwgNSwgMjU1LCA3MywgMjE3LCA2OSwgMjUsIDUsIDczLCAKKyAgICAyMTcsIDY5LCAyNSwgNSwgMjM2LCAzMywgMjE3LCA2OSwgMjUsIDUsIDcwLCAyMTcsIDY5LCAyNSwgNSwgMjE0LCAxMTgsIAorICAgIDIxNywgNjksIDI1LCA1LCA3NSwgMjE3LCA2OSwgMjUsIDUsIDI1NCwgMjAxLCAyMTcsIDY5LCAyNSwgNSwgNzYsIDIxNywgCisgICAgNjksIDI1LCA1LCAyNTMsIDE5MiwgMjE3LCA2OSwgNSwgMjEzLCAxNTIsIDIxNywgNjksIDUsIDIyNywgMjA1LCAyMTcsIDY5LCAKKyAgICAyMSwgMjEwLCA4NiwgMjE3LCA2OSwgMjEsIDExMCwgMjE3LCA2OSwgMjEsIDEwNSwgMjE3LCA2OSwgMjEsIDE1OCwgMjE3LCAKKyAgICA2OSwgMjEsIDE2MSwgMjE3LCA2OSwgMjEsIDE4OSwgMjE3LCA2OSwgMjEsIDE5NCwgMjE3LCA2OSwgMjEsIDE5OCwgMjE3LCAKKyAgICA2OSwgMjEsIDE5NSwgMjE3LCA2OSwgMjEsIDIwMCwgMTUsIDUsIDYxLCAxNSwgNSwgMTE1LCAzMCwgNjEsIDE1LCA1LCAxMTUsIAorICAgIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDExNSwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDExNSwgMzAsIDE2MiwgCisgICAgMTUsIDUsIDExNSwgMzAsIDIzNiwgMzUsIDE1LCA1LCAxMTUsIDMwLCAyMzMsIDExNiwgMjQyLCA5NCwgMTUsIDUsIDExNSwgCisgICAgMzAsIDIzMCwgNjEsIDE1LCA1LCAxMTUsIDMwLCAyMjIsIDIxLCAxNSwgNSwgMjU1LCA3NSwgMTUsIDUsIDI1NSwgMjUsIDE1LCAKKyAgICA1LCAyNTUsIDI2LCAzMCwgMjUzLCAyMjksIDE1LCA1LCAyNTUsIDI2LCAzMCwgMjQ2LCA2NywgMjQyLCA5NCwgMTUsIDUsIAorICAgIDI1NSwgMjYsIDMwLCAyNDMsIDExOCwgMTUsIDUsIDI1NSwgMjYsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAKKyAgICAyNTUsIDI2LCAzMCwgMTYyLCAxNSwgNSwgMjU1LCAyNiwgMzAsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAyNTUsIDI2LCAKKyAgICAzMCwgMjM2LCA5LCAxNSwgNSwgMjU1LCAyNiwgMzAsIDIzMywgMTE3LCAxNSwgNSwgMjU1LCAyNiwgMzAsIDIyMCwgNDgsIAorICAgIDE1LCA1LCAyNTUsIDI2LCAzMCwgMTA0LCA5NiwgMTA0LCA5NiwgNzAsIDE1LCA1LCAyNTUsIDI2LCAyNDIsIDk0LCAxNSwgNSwgCisgICAgMjU1LCAyMywgMTUsIDUsIDI1NSwgMjQsIDMwLCAyNTIsIDE2MCwgMTUsIDUsIDI1NSwgMjQsIDMwLCAyNDMsIDEwNSwgMjE2LCAKKyAgICAyMzksIDE1LCA1LCAyNTUsIDI0LCAzMCwgMjMxLCA5MiwgOTYsIDI0NSwgMTUwLCAxNSwgNSwgMjU1LCAyNCwgMzAsIDIyMCwgCisgICAgMTAwLCAxNSwgNSwgMjU1LCAyNCwgMzAsIDIxNywgNzIsIDE1LCA1LCAyNTQsIDI1NSwgMTUsIDUsIDI1NCwgMTg2LCAxNSwgCisgICAgNSwgMjU0LCAxODcsIDMwLCAyNDUsIDg3LCAxNSwgNSwgMjU0LCAxODcsIDMwLCAyMjAsIDEwLCA5NiwgMjQyLCAxOTAsIDE1LCAKKyAgICA1LCAyNTQsIDE3OCwgMTUsIDUsIDI1NCwgMTc5LCAzMCwgMjU0LCAxNzgsIDE1LCA1LCAyNTQsIDE3OSwgMzAsIDI0NywgCisgICAgMjE2LCAxNSwgNSwgMjU0LCAxNzksIDMwLCAyNDIsIDE5MCwgMTUsIDUsIDI1NCwgMTc5LCAzMCwgMTYyLCAxNSwgNSwgMjU0LCAKKyAgICAxNzksIDMwLCAyMzQsIDI1NSwgMTUsIDUsIDI1NCwgMTc5LCAzMCwgMjM0LCA5MiwgMTUsIDUsIDI1NCwgMTc5LCAzMCwgCisgICAgMjIwLCA2MywgMTUsIDUsIDI1NCwgMTc5LCAzMCwgMjE0LCAxMjYsIDE1LCA1LCAyNTQsIDE3NSwgMTUsIDUsIDI1NCwgMTY4LCAKKyAgICAxNSwgNSwgMjU0LCAxMzIsIDE1LCA1LCAyNTQsIDEzMywgMzAsIDIyMCwgNjMsIDE1LCA1LCAyNTQsIDEyMywgMTUsIDUsIAorICAgIDI1NCwgMTI0LCAxMTcsIDI1NCwgMTIzLCAxNSwgNSwgMjU0LCAxMjQsIDEzNCwgMjE2LCA4NSwgMTUsIDUsIDI1NCwgMTI0LCAKKyAgICA5NiwgMjI5LCAyMTcsIDIyNiwgMTY0LCAyNTQsIDEyNCwgOTYsIDIyOSwgMjE2LCAxNSwgNSwgMjU0LCAxMjQsIDk2LCAyMjksIAorICAgIDIxNywgMjE4LCAyMzMsIDE1LCA1LCAyNTQsIDk0LCAxNSwgNSwgMjU0LCA2NywgMTUsIDUsIDI1NCwgMzUsIDE1LCA1LCAKKyAgICAyNTQsIDM2LCAzMCwgMjMzLCAxOTYsIDE1LCA1LCAyNTQsIDgsIDE1LCA1LCAyNTMsIDIzNiwgMTUsIDUsIDI1MywgMjMxLCAKKyAgICAxNSwgNSwgMjUzLCAyMzIsIDIxMCwgNDAsIDIxNiwgMjM5LCAxNSwgNSwgMjUzLCAyMzIsIDIzNSwgMywgMjE2LCAyMzksIAorICAgIDE1LCA1LCAyNTMsIDIzMiwgMTE3LCAyNTMsIDIzMiwgMjE1LCAxMTQsIDExNywgMjE1LCAxMTQsIDIxNSwgMTE0LCAxMTcsIAorICAgIDIxNSwgMTE0LCAyMjYsIDIxLCAxNSwgNSwgMjUzLCAyMzIsIDExNywgMjUzLCAyMzIsIDExNywgMjUzLCAyMzEsIDE1LCA1LCAKKyAgICAyNTMsIDIzMiwgMTE3LCAyNTMsIDIzMiwgMTE3LCAyNTMsIDIzMiwgMjQ5LCAxMjUsIDI1MywgMjMyLCAxMTcsIDI1MywgCisgICAgMjMyLCAxMTcsIDI1MywgMjMxLCAxNSwgNSwgMjUzLCAyMjksIDE1LCA1LCAyNTMsIDIyNiwgMTUsIDUsIDI1MiwgMTkxLCAKKyAgICAxNSwgNSwgMjUyLCAxNzYsIDE1LCA1LCAyNTIsIDE3MSwgMTUsIDUsIDI1MiwgMTY3LCAxNSwgNSwgMjUyLCAxNjEsIDE1LCAKKyAgICA1LCAyNTIsIDE2MiwgMTE3LCAyNTIsIDE2MSwgMTUsIDUsIDI1MiwgMTYwLCAxNSwgNSwgMTMwLCAxNSwgNSwgMjUyLCAxNDAsIAorICAgIDE1LCA1LCAyNTIsIDYsIDE1LCA1LCAyNTIsIDcsIDMwLCA2MSwgMTUsIDUsIDI1MiwgNywgMzAsIDI0MywgOTYsIDE1LCA1LCAKKyAgICAyNTIsIDcsIDMwLCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjUxLCAxMjUsIDE1LCA1LCAyNTEsIDEyNiwgMTE3LCAyNTEsIAorICAgIDEyNiwgMjU1LCAyNSwgMTUsIDUsIDI1MSwgMTI2LCAxMTcsIDI1MSwgMTI2LCAyMTQsIDE5MCwgMTUsIDUsIDI1MSwgMTI2LCAKKyAgICAyNDksIDEyNSwgMjUxLCAxMjUsIDE1LCA1LCAyNTEsIDEwOSwgMTUsIDUsIDI1MSwgMTEwLCAxMTcsIDI1MSwgMTA5LCAxNSwgCisgICAgNSwgMjUxLCA5OCwgMTUsIDUsIDI1MSwgOTcsIDE1LCA1LCAyNDgsIDIyMSwgMTUsIDUsIDI0OCwgMjEyLCAxNSwgNSwgMjQ4LCAKKyAgICAyMTMsIDIzNCwgNjYsIDMwLCAxMTUsIDk2LCAyMzEsIDE0NywgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjU0LCAKKyAgICAxMzIsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDI1MiwgMTYwLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIAorICAgIDMwLCAyNTIsIDYsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDI0MywgMTM1LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgCisgICAgNjYsIDMwLCAyNDMsIDEzNiwgOTYsIDIzMSwgMTQ3LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyNDIsIDIxNCwgCisgICAgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjQyLCAxOTcsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIAorICAgIDI0MiwgMTAzLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAxNjIsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgCisgICAgMzAsIDIzNSwgMTc5LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMzUsIDE4MCwgOTYsIDIzMiwgOTgsIDE1LCA1LCAKKyAgICAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIzNCwgMjQyLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMzMsIDEzNSwgCisgICAgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjMyLCA5OCwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjMyLCAKKyAgICA5OSwgOTYsIDIzMSwgMTQ2LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMzIsIDg0LCAxNSwgNSwgMjQ4LCAyMTMsIAorICAgIDIzNCwgNjYsIDMwLCAyMjksIDEwNywgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjI2LCAyMiwgOTYsIDIyNiwgCisgICAgMjEsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIxOSwgMTkxLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAKKyAgICAyMTcsIDcyLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMTQsIDIzMSwgOTYsIDI0MiwgMTk3LCAxNSwgNSwgCisgICAgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMTQsIDEyNiwgMTUsIDUsIDI0OCwgMTg3LCAxNSwgNSwgMjQ4LCAxNjYsIDE1LCA1LCAKKyAgICAyNDgsIDE2NSwgMTUsIDUsIDI0OCwgMTY0LCAxNSwgNSwgMjQ4LCAzLCAxNSwgNSwgMjQ3LCAyNDIsIDE1LCA1LCAyNDcsIAorICAgIDIxNywgMTUsIDUsIDI0NywgMjE4LCAzMCwgMjIwLCA2MywgMTUsIDUsIDI0NywgMjE2LCAxNSwgNSwgMjQ3LCAyMDYsIDE1LCAKKyAgICA1LCAyNDcsIDIwNywgMjM0LCAyMDgsIDEwNCwgMjQyLCA5NSwgMjQ3LCAxODcsIDE1LCA1LCAyNDcsIDE4NywgMTUsIDUsIAorICAgIDI0NiwgNzgsIDE1LCA1LCAyNDYsIDc5LCAxMTcsIDI0NiwgNzgsIDE1LCA1LCAyNDYsIDc5LCAyNDIsIDk0LCAxNSwgNSwgCisgICAgMjQ2LCA3OSwgMjIwLCA0NSwgMTUsIDUsIDI0NiwgNzYsIDE1LCA1LCAyNDYsIDc3LCAzMCwgMjQ1LCA3MiwgMTUsIDUsIAorICAgIDI0NiwgNzUsIDE1LCA1LCAyNDYsIDc0LCAxNSwgNSwgMjQ2LCA3MywgMTUsIDUsIDI0NiwgNzIsIDE1LCA1LCAyNDYsIDY4LCAKKyAgICAxNSwgNSwgMjQ2LCA2NiwgMTUsIDUsIDI0NiwgNjcsIDI0MiwgOTQsIDE1LCA1LCAyNDYsIDY3LCAyNDIsIDk1LCAyNDIsIAorICAgIDk0LCAxNSwgNSwgMjQ2LCA2NSwgMTUsIDUsIDI0NiwgNTgsIDE1LCA1LCA3NSwgMTUsIDUsIDE2MCwgMzAsIDIyNiwgMjEsIAorICAgIDE1LCA1LCAxNjAsIDExNywgMTYwLCAyMjcsIDE5NSwgMTE3LCAyMjcsIDE5NCwgMTUsIDUsIDI0NSwgMjM0LCAxNSwgNSwgCisgICAgMjQ1LCAyMzUsIDMwLCAxMTUsIDk2LCAyNDIsIDQ5LCA5NiwgMjQ4LCAyMjEsIDE1LCA1LCAyNDUsIDIzNSwgMzAsIDI0MywgCisgICAgOTYsIDE1LCA1LCAyNDUsIDIzNSwgMzAsIDIzMCwgMjMwLCAxNSwgNSwgMjQ1LCAyMzUsIDMwLCAyMjIsIDgsIDE1LCA1LCAKKyAgICAyNDUsIDIzNSwgMzAsIDIyMCwgNjMsIDE1LCA1LCAyNDUsIDIzNSwgMzAsIDcwLCAxNSwgNSwgMjQ1LCAyMTEsIDE1LCA1LCAKKyAgICAyNDUsIDIwMCwgMTUsIDUsIDI0NSwgMTc0LCAxNSwgNSwgMjQ1LCAxNTAsIDE1LCA1LCAyNDUsIDE1MSwgMzAsIDI0MywgCisgICAgMTA0LCAxNSwgNSwgMjQ1LCAxNTEsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAyNDUsIDE1MSwgMzAsIDIzMSwgCisgICAgOTEsIDE1LCA1LCAyNDUsIDE1MSwgMjQ5LCAxMjUsIDI0NSwgMTUwLCAxNSwgNSwgMjQ1LCAxNTEsIDIyNiwgMTY0LCAyNDUsIAorICAgIDE1MCwgMTUsIDUsIDI0NSwgMTUxLCAyMTgsIDIzMywgMTUsIDUsIDI0NSwgODksIDE1LCA1LCAyNDUsIDg3LCAxNSwgNSwgCisgICAgMjQ1LCA3MiwgMTUsIDUsIDI0NSwgMTAsIDE1LCA1LCAyNDUsIDExLCAzMCwgNjEsIDE1LCA1LCAyNDUsIDExLCAzMCwgMTE1LCAKKyAgICA5NiwgMjMzLCAxMDQsIDE1LCA1LCAyNDUsIDExLCAzMCwgMTE1LCA5NiwgMjMzLCAxMDUsIDMwLCAyMzMsIDEwNCwgMTUsIDUsIAorICAgIDI0NSwgMTEsIDMwLCAyNTQsIDEyMywgMTUsIDUsIDI0NSwgMTEsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDI0NSwgMTEsIDMwLCAKKyAgICAyNDYsIDY3LCAyNDIsIDk0LCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDI0NiwgNjcsIDI0MiwgOTUsIDI0MiwgOTQsIDE1LCA1LCAKKyAgICAyNDUsIDExLCAzMCwgMTYyLCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDI0MiwgNDksIDI0MiwgOTQsIDE1LCA1LCAyNDUsIDExLCAKKyAgICAzMCwgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDI0NSwgMTEsIDMwLCAyMzQsIDIwNywgMTUsIDUsIDI0NSwgMTEsIDMwLCAKKyAgICAyMzQsIDIwOCwgMjE4LCAyMzMsIDE1LCA1LCAyNDUsIDExLCAzMCwgMjMzLCAyMTUsIDE1LCA1LCAyNDUsIDExLCAzMCwgCisgICAgMjMzLCAxMzUsIDE1LCA1LCAyNDUsIDExLCAzMCwgMjMzLCAxMDUsIDMwLCAyMzMsIDEwNCwgMTUsIDUsIDI0NSwgMTEsIDMwLCAKKyAgICAyMzIsIDI0MSwgMTUsIDUsIDI0NSwgMTEsIDMwLCAyMzIsIDk4LCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDIxNCwgMjMwLCAxNSwgCisgICAgNSwgMjQ1LCAxMSwgMzAsIDIxNCwgMjE5LCAxNSwgNSwgMjQzLCAxMzUsIDE1LCA1LCAyNDMsIDEzNiwgMjQyLCA5NCwgMTUsIAorICAgIDUsIDI0MywgMTMzLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAxMTUsIDk2LCAyNDgsIDIyMiwgOTYsIDE2MiwgMTUsIDUsIDI0MywgCisgICAgMTM0LCAzMCwgMTE1LCA5NiwgMTYyLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAxMTUsIDk2LCAyMzYsIDM1LCAxNSwgNSwgMjQzLCAKKyAgICAxMzQsIDMwLCAyNTUsIDI0LCAyMTYsIDI0MCwgOTYsIDIxNywgOTMsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI1NCwgMTIzLCAKKyAgICAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNTMsIDIzMSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjUzLCAyMzAsIDk2LCAyNDMsIAorICAgIDExOCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI1MiwgMTQxLCA5NiwgCisgICAgMjA1LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNTEsIDk4LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNTEsIDk5LCA5NiwgMjA1LCAKKyAgICAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDgsIDIyMSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQ4LCAzLCAxNSwgNSwgMjQzLCAKKyAgICAxMzQsIDMwLCAyNDcsIDIxOCwgMzAsIDIyMCwgNjMsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0NiwgNzYsIDE1LCA1LCAyNDMsIAorICAgIDEzNCwgMzAsIDI0NSwgMTc0LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDUsIDE3NSwgOTYsIDIzMywgMTM1LCAxNSwgNSwgCisgICAgMjQzLCAxMzQsIDMwLCAyNDUsIDE1MCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQ1LCAxNTEsIDMwLCAyNDMsIDEwNSwgMjE2LCAKKyAgICAyMzksIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQzLCAKKyAgICA5NiwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQyLCAyMTQsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0MiwgMjEyLCAxNSwgNSwgCisgICAgMjQzLCAxMzQsIDMwLCAyNDIsIDIxMywgOTYsIDYxLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDIsIDE5OCwgOTYsIDIxOCwgCisgICAgODMsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0MiwgNDksIDk2LCAyMzIsIDk5LCA5NiwgMjQ1LCA3MiwgMTUsIDUsIDI0MywgCisgICAgMTM0LCAzMCwgMjQyLCAzMCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQyLCAzMSwgOTYsIDIzMywgMTM1LCAxNSwgNSwgMjQzLCAKKyAgICAxMzQsIDMwLCAyNDEsIDE4MSwgOTYsIDIzMiwgMjQxLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDAsIDIxOCwgMTUsIDUsIAorICAgIDI0MywgMTM0LCAzMCwgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjM1LCAxNjYsIDk2LCAyNDAsIAorICAgIDIyMywgOTYsIDI1MywgMjMxLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMzQsIDI0MiwgMTUsIDUsIDI0MywgMTM0LCAzMCwgCisgICAgMjM0LCAyMDcsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIzNCwgODksIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIzNCwgOTAsIDk2LCAKKyAgICAyMzMsIDEwNCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjMzLCAyMTYsIDk2LCAyNTQsIDEyMywgMTUsIDUsIDI0MywgMTM0LCAKKyAgICAzMCwgMjMzLCAxMzUsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIzMSwgOTIsIDk2LCAyNDUsIDE1MCwgMTUsIDUsIDI0MywgCisgICAgMTM0LCAzMCwgMjMwLCAyMzAsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIyNywgMTk0LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAKKyAgICAyMjcsIDE5NSwgMTE3LCAyMjcsIDE5NCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMTkwLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAKKyAgICAyMjIsIDgsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIyMSwgMjMxLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMjAsIDYzLCAxNSwgCisgICAgNSwgMjQzLCAxMzQsIDMwLCAyMjAsIDY0LCA5NiwgMjE1LCA5OCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjIwLCAzMCwgMTUsIAorICAgIDUsIDI0MywgMTM0LCAzMCwgMjE4LCA0MywgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjE3LCA3MiwgMTUsIDUsIDI0MywgMTM0LCAKKyAgICAzMCwgNzAsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIxNCwgMjE5LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMTQsIDIyMCwgOTYsIAorICAgIDI0NiwgNzgsIDE1LCA1LCAyNDMsIDEzNCwgMTE3LCAyNDMsIDEzMywgMTUsIDUsIDI0MywgMTI4LCAxNSwgNSwgMjQzLCAKKyAgICAxMjksIDI0OSwgMTI1LCAyNDMsIDEyOCwgMTUsIDUsIDI0MywgMTI2LCAxNSwgNSwgMjQzLCAxMjcsIDExNywgMjQzLCAxMjcsIAorICAgIDI0MywgOTcsIDExNywgMjQzLCA5NiwgMTUsIDUsIDI0MywgMTE4LCAxNSwgNSwgMjQzLCAxMTksIDI0MywgMTI3LCAxMTcsIAorICAgIDI0MywgMTI3LCAyNDMsIDk3LCAxMTcsIDI0MywgOTYsIDE1LCA1LCAyNDMsIDExNywgMTUsIDUsIDI0MywgMTE1LCAxNSwgNSwgCisgICAgMjQzLCAxMDYsIDE1LCA1LCAyNDMsIDEwNCwgMTUsIDUsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDI0MywgMTA1LCAKKyAgICAxMTcsIDI0MywgMTA0LCAxNSwgNSwgMjQzLCAxMDUsIDI0OSwgMTI1LCAyNDMsIDEwNCwgMTUsIDUsIDI0MywgOTYsIDE1LCAKKyAgICA1LCAyNDMsIDk1LCAxNSwgNSwgMjQzLCA5MCwgMTUsIDUsIDI0MywgMzYsIDE1LCA1LCAyNDMsIDM3LCAzMCwgMjMzLCAxOTYsIAorICAgIDE1LCA1LCAyNDIsIDIxNCwgMTUsIDUsIDI0MiwgMjE1LCAzMCwgNzUsIDE1LCA1LCAyNDIsIDIxNSwgMzAsIDcwLCAxNSwgNSwgCisgICAgMjQyLCAyMTUsIDI0OSwgMTI1LCAyNDIsIDIxNCwgMTUsIDUsIDI0MiwgMjEyLCAxNSwgNSwgMjQyLCAyMTMsIDExNywgMjQyLCAKKyAgICAyMTIsIDE1LCA1LCAyNDIsIDIxMywgMjQ5LCAxMjUsIDI0MiwgMjEyLCAxNSwgNSwgMjQyLCAyMDksIDE1LCA1LCAyNDIsIAorICAgIDE5NywgMTUsIDUsIDI0MiwgMTk4LCAyNDIsIDk0LCAxNSwgNSwgMjQyLCAxOTUsIDE1LCA1LCAyNDIsIDE5NiwgMzAsIDExNSwgCisgICAgOTYsIDIzNiwgMzUsIDE1LCA1LCAyNDIsIDE5NiwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDI0MiwgMTk2LCAKKyAgICAzMCwgMjM2LCAzNSwgMTUsIDUsIDI0MiwgMTk2LCAzMCwgMjMyLCA5OSwgOTYsIDIzNiwgMzUsIDE1LCA1LCAyNDIsIDE5NiwgCisgICAgMzAsIDE5MCwgMTUsIDUsIDI0MiwgMTkyLCAxNSwgNSwgMjQyLCAxOTAsIDE1LCA1LCAyNDIsIDE5MSwgMjQ5LCAxMjUsIAorICAgIDI0MiwgMTkwLCAxNSwgNSwgMjQyLCAxOTEsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDI0MiwgMTkxLCAzMCwgMjE3LCA3MiwgCisgICAgMTUsIDUsIDI0MiwgMTkxLCAyMTYsIDIzOSwgMTUsIDUsIDI0MiwgMTEzLCAxNSwgNSwgMjQyLCAxMTQsIDI0OSwgMTI1LCAKKyAgICAyNDIsIDExMywgMTUsIDUsIDI0MiwgMTExLCAxNSwgNSwgMjQyLCAxMTIsIDMwLCAyMzQsIDI0MiwgMTUsIDUsIDI0MiwgCisgICAgMTEyLCAzMCwgMjM0LCAyNDMsIDMwLCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjQyLCAxMTIsIDMwLCAyMjcsIDE5NCwgCisgICAgMTUsIDUsIDI0MiwgMTEyLCAzMCwgMjIyLCA5LCA5NiwgMjE1LCAxMTMsIDE1LCA1LCAyNDIsIDExMiwgMjQyLCA5NCwgMTUsIAorICAgIDUsIDI0MiwgMTAzLCAxNSwgNSwgMjQyLCAxMDQsIDMwLCAxMTUsIDk2LCAyMzMsIDE5NiwgMTUsIDUsIDI0MiwgMTA0LCAzMCwgCisgICAgMjMzLCAxOTYsIDE1LCA1LCAyNDIsIDEwNCwgMTE3LCAyNDIsIDEwNCwgMjMyLCA5MSwgMTUsIDUsIDI0MiwgOTgsIDE1LCA1LCAKKyAgICAyNDIsIDk2LCAxNSwgNSwgMjQyLCA5NywgMzAsIDIyMCwgNjMsIDE1LCA1LCAyNDIsIDg4LCAxNSwgNSwgMjQyLCA4NywgMTUsIAorICAgIDUsIDI0MiwgODQsIDE1LCA1LCAyNDIsIDgzLCAxNSwgNSwgMTYyLCAxNSwgNSwgMjQyLCA0OSwgMjE2LCAyMzksIDE1LCA1LCAKKyAgICAyNDIsIDQ5LCAyNDIsIDk0LCAxNSwgNSwgMjQyLCAzMCwgMTUsIDUsIDI0MSwgMTgwLCAxNSwgNSwgMjQxLCAxODEsIDMwLCAKKyAgICAyNTMsIDIzMSwgMTUsIDUsIDI0MSwgMTgxLCAzMCwgMjUzLCAyMjksIDE1LCA1LCAyNDEsIDE4MSwgMzAsIDI1MiwgMTc2LCAKKyAgICAxNSwgNSwgMjQxLCAxODEsIDMwLCAyNDcsIDE4NywgMTUsIDUsIDI0MSwgMTgxLCAzMCwgMjQzLCAxMjYsIDE1LCA1LCAyNDEsIAorICAgIDE4MSwgMzAsIDIzNCwgODEsIDE1LCA1LCAyNDEsIDE4MSwgMzAsIDIyNywgMTk0LCAxNSwgNSwgMjQxLCAxODEsIDMwLCAKKyAgICAyMjAsIDYzLCAxNSwgNSwgMjQxLCAxODEsIDMwLCA3MCwgMTUsIDUsIDI0MCwgMjIyLCAxNSwgNSwgMjQwLCAyMTgsIDE1LCAKKyAgICA1LCAyNDAsIDIxOSwgMzAsIDI1NCwgMTIzLCAxNSwgNSwgMjQwLCAyMTksIDMwLCAyNDIsIDMwLCAxNSwgNSwgMjQwLCAyMTksIAorICAgIDMwLCAyMzQsIDIwNywgMTUsIDUsIDI0MCwgMjE5LCAzMCwgMjMyLCAxOTcsIDE1LCA1LCAyNDAsIDIxOSwgMzAsIDIxNCwgCisgICAgMjE5LCAxNSwgNSwgMjQwLCAyMTUsIDE1LCA1LCA3MywgMTUsIDUsIDI0MCwgMTU0LCA2MSwgMTUsIDUsIDI0MCwgMTE1LCAKKyAgICAxNSwgNSwgMjM2LCA2MywgMTUsIDUsIDIzNiwgNjQsIDExNywgMjM2LCA2NCwgMjUxLCA5OCwgMTUsIDUsIDIzNiwgNjQsIAorICAgIDExNywgMjM2LCA2NCwgMjE4LCAyMzMsIDE1LCA1LCAyMzYsIDM4LCAxNSwgNSwgMjM2LCAzNSwgMTUsIDUsIDIzNiwgMzYsIAorICAgIDI0NywgMjQyLCAxNSwgNSwgMjM2LCAzNiwgMjIzLCAzNSwgMTUsIDUsIDIzNiwgMzYsIDExNywgMjM2LCAzNiwgMjIwLCAxNCwgCisgICAgMTE3LCAyMjAsIDE0LCAyMTQsIDIyMCwgMTE3LCAyMTQsIDIxOSwgMTUsIDUsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAKKyAgICAyMzYsIDI3LCAxNSwgNSwgMjM2LCAyOCwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDIzNiwgMjYsIDE1LCA1LCAKKyAgICAyMzYsIDE2LCAxNSwgNSwgMjM2LCAxNywgMzAsIDIxNywgNzIsIDE1LCA1LCAyMzYsIDE3LCAyNDksIDEyNSwgMjM2LCAxNiwgCisgICAgMTUsIDUsIDIzNiwgMTcsIDIyNiwgMTY0LCAyMzYsIDE2LCAxNSwgNSwgMjM2LCAxNywgMjE4LCAyMzMsIDE1LCA1LCAyMzYsIAorICAgIDksIDE1LCA1LCAyMzUsIDI1NSwgMTUsIDUsIDIzNSwgMTc5LCAxNSwgNSwgMjM1LCAxNjUsIDE1LCA1LCAxNzYsIDE1LCA1LCAKKyAgICAyMzUsIDEzLCAzMCwgNjEsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjU0LCAyNTUsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjU1LCAKKyAgICAwLCA5NiwgMjMzLCAyMTUsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjUzLCAyMjksIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjUyLCAKKyAgICAxNzYsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjUyLCAxNjAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMTMwLCAxNSwgNSwgMjM1LCAKKyAgICAxMywgMzAsIDI1MiwgNiwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNDUsIDg3LCAxNSwgNSwgMjM1LCAxMywgMzAsIDI0NSwgNzIsIAorICAgIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQzLCAxMzUsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQzLCAxMTgsIDE1LCA1LCAyMzUsIAorICAgIDEzLCAzMCwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMjM1LCAxMywgMzAsIDI0MywgOTYsIDE1LCA1LCAyMzUsIDEzLCAKKyAgICAzMCwgMjQzLCA5NywgOTYsIDIyMCwgMTAxLCA5NiwgNjEsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQyLCAyMTQsIDE1LCA1LCAKKyAgICAyMzUsIDEzLCAzMCwgMjQyLCAxOTcsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQyLCAxOTEsIDk2LCAyMjEsIDIzMSwgMTUsIDUsIAorICAgIDIzNSwgMTMsIDMwLCAyNDIsIDE5MSwgMjQ5LCAxMjUsIDI0MiwgMTkwLCAxNSwgNSwgMjM1LCAxMywgMzAsIDI0MiwgMTEzLCAKKyAgICAxNSwgNSwgMjM1LCAxMywgMzAsIDI0MiwgODcsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjM2LCAzNSwgMTUsIDUsIDIzNSwgMTMsIAorICAgIDMwLCAyMzYsIDE2LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIzNCwgMjQyLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIzNCwgOTIsIAorICAgIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjM0LCA4OSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMzIsIDI0MSwgMTUsIDUsIDIzNSwgCisgICAgMTMsIDMwLCAyMzIsIDk4LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIzMSwgOTEsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjMxLCAKKyAgICA5MiwgOTYsIDI0NiwgNzgsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjMxLCA5MiwgOTYsIDI0MiwgMjE0LCAxNSwgNSwgMjM1LCAKKyAgICAxMywgMzAsIDIzMSwgOTIsIDk2LCAyMTcsIDIyLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIzMCwgMjMwLCAxNSwgNSwgMjM1LCAKKyAgICAxMywgMzAsIDIzMCwgMjMxLCA5NiwgMjI3LCAxODksIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjI5LCAxMDcsIDE1LCA1LCAyMzUsIAorICAgIDEzLCAzMCwgMjI3LCAxOTQsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjI1LCAxMDgsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjIyLCAKKyAgICAxNDAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjA2LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIyMSwgMjMxLCAxNSwgNSwgMjM1LCAKKyAgICAxMywgMzAsIDIyMCwgMTAyLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIyMCwgNjMsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjIwLCAKKyAgICAzMCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMTksIDIyNSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMTksIDE4MiwgMTUsIDUsIAorICAgIDIzNSwgMTMsIDMwLCAyMTgsIDUxLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIxNywgNTAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgCisgICAgNzAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjE0LCAyMTksIDE1LCA1LCAKKyAgICAyMzUsIDEzLCAzMCwgMjE0LCAxOTMsIDMwLCAxOTAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjE0LCAxMjYsIDE1LCA1LCAyMzUsIAorICAgIDEzLCAzMCwgMjEwLCA0NCwgMTUsIDUsIDIzNSwgMTEsIDE1LCA1LCAyMzUsIDEyLCAyNDksIDEyNSwgMjM1LCAxMSwgMTUsIAorICAgIDUsIDIzNSwgNCwgMTUsIDUsIDIzNSwgMSwgMTUsIDUsIDIzNCwgMjU1LCAxNSwgNSwgMjM0LCAyNTQsIDE1LCA1LCAyMzQsIAorICAgIDI1MiwgMTUsIDUsIDIzNCwgMjUzLCAxMTcsIDIzNCwgMjUyLCAxNSwgNSwgMjM0LCAyNDIsIDE1LCA1LCAyMzQsIDI0MywgCisgICAgMzAsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAyMzQsIDIzOCwgMTUsIDUsIDIzNCwgMjM5LCAzMCwgMjUyLCAxNzYsIDE1LCAKKyAgICA1LCAyMzQsIDIzOSwgMjQ5LCAxMjUsIDIzNCwgMjM4LCAxNSwgNSwgMjM0LCAyMzYsIDE1LCA1LCAyMzQsIDIzNSwgMTUsIDUsIAorICAgIDIzNCwgMjA3LCAxNSwgNSwgMjM0LCAyMDgsIDIzMywgMTE4LCAzMCwgMTA0LCAxMTcsIDIzMywgMTE4LCAzMCwgNzAsIDE1LCAKKyAgICA1LCAyMzQsIDIwOCwgMTE3LCAyMzQsIDIwOCwgMjMzLCAxMTgsIDMwLCAxMDQsIDExNywgMjMzLCAxMTgsIDMwLCA3MCwgMTUsIAorICAgIDUsIDIzNCwgMTU3LCAxNSwgNSwgMjM0LCA5MiwgMTUsIDUsIDIzNCwgOTMsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDIzNCwgCisgICAgOTMsIDMwLCA3MCwgMTUsIDUsIDIzNCwgOTMsIDMwLCAyMTQsIDIxOSwgMTUsIDUsIDIzNCwgODksIDE1LCA1LCAyMzQsIDgxLCAKKyAgICAxNSwgNSwgMjM0LCA2OCwgMTUsIDUsIDIzNCwgNjcsIDE1LCA1LCAyMzQsIDY1LCAxNSwgNSwgMjM0LCA2NiwgMTE3LCAyMzQsIAorICAgIDY1LCAxNSwgNSwgMjMzLCAyMTcsIDE1LCA1LCAyMzMsIDIxOCwgMTE3LCAyNDEsIDE4MSwgMzAsIDI1MywgMjMwLCAyMzMsIAorICAgIDIxOCwgMTE3LCAyNDEsIDE4MSwgMzAsIDI1MywgMjI5LCAxNSwgNSwgMjMzLCAyMTUsIDE1LCA1LCAyMzMsIDIxMywgMTUsIAorICAgIDUsIDIzMywgMjE0LCAyMTQsIDEyLCAxNywgMTUsIDUsIDIzMywgMjEyLCAxNSwgNSwgMjMzLCAyMDksIDE1LCA1LCAyMzMsIAorICAgIDIxMCwgMjQyLCA5NCwgMTUsIDUsIDIzMywgMjA4LCAxNSwgNSwgMjMzLCAxOTYsIDE1LCA1LCAyMzMsIDE5NywgMjI2LCAKKyAgICAxNjQsIDIzMywgMTk2LCAxNSwgNSwgMjMzLCAxOTEsIDE1LCA1LCAyMzMsIDE3MiwgMTUsIDUsIDIzMywgMTM1LCAxNSwgNSwgCisgICAgMjMzLCAxMTcsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDYxLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAxMTUsIDk2LCAyNDgsIAorICAgIDIyMiwgOTYsIDE2MiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMTE1LCA5NiwgMjQzLCA5NiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgCisgICAgMTE1LCA5NiwgMjMzLCAxMDQsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDI1NCwgMTc4LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAKKyAgICAyNTQsIDEyMywgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjUzLCAyMzIsIDIxMCwgNDAsIDIxNiwgMjM5LCAxNSwgNSwgMjMzLCAKKyAgICAxMTgsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjUyLCA2LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyNDgsIAorICAgIDE2NiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjQ1LCAxNTAsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDI0MywgMTM1LCAxNSwgNSwgCisgICAgMjMzLCAxMTgsIDMwLCAyNDMsIDk2LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyNDIsIDEwMywgMTUsIDUsIDIzMywgMTE4LCAKKyAgICAzMCwgMjQyLCAxMDQsIDk2LCAyNDIsIDEwMywgMTUsIDUsIDIzMywgMTE4LCAzMCwgMTYyLCAxNSwgNSwgMjMzLCAxMTgsIAorICAgIDMwLCAyNDIsIDMwLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyNDEsIDE4MSwgMzAsIDIyNywgMTk0LCAxNSwgNSwgMjMzLCAKKyAgICAxMTgsIDMwLCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzYsIDE2LCAxNSwgNSwgMjMzLCAxMTgsIAorICAgIDMwLCAyMzYsIDE3LCA5NiwgMTYyLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzYsIDE3LCA5NiwgMjMyLCA5OCwgMTUsIDUsIAorICAgIDIzMywgMTE4LCAzMCwgMjM0LCA5MiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjM0LCA4MSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgCisgICAgMjMzLCAyMTUsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIzMywgMjA5LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzMsIDIxMCwgCisgICAgOTYsIDI0MSwgMTgxLCA5NiwgNjEsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIzMywgMTE3LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAKKyAgICAyMzIsIDE5NywgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjMyLCA5OCwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjMyLCA4NiwgMTUsIAorICAgIDUsIDIzMywgMTE4LCAzMCwgMjMxLCA5MSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjMxLCA5MiwgOTYsIDI0NSwgMTUwLCAxNSwgCisgICAgNSwgMjMzLCAxMTgsIDMwLCAyMzAsIDYxLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMjksIDEwNywgMTUsIDUsIDIzMywgMTE4LCAKKyAgICAzMCwgMjIwLCA2NCwgOTYsIDIxOCwgNDMsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIyMCwgMTAsIDk2LCAyNDIsIDE5MSwgOTYsIAorICAgIDI0NSwgODcsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIyMCwgMTAsIDk2LCAyNDIsIDE5MSwgMjE2LCAyMzksIDE1LCA1LCAKKyAgICAyMzMsIDExOCwgMzAsIDIxOSwgMjIzLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMTksIDIyNCwgOTYsIDIxOSwgMjIzLCAxNSwgCisgICAgNSwgMjMzLCAxMTgsIDMwLCAyMTgsIDQzLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMTcsIDg0LCAxNSwgNSwgMjMzLCAxMTgsIAorICAgIDMwLCAyMTcsIDcyLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMTcsIDIzLCA5NiwgMTE1LCA5NiwgMjE4LCA4NCwgOTYsIDE5NywgCisgICAgMTUsIDUsIDIzMywgMTE4LCAzMCwgNzAsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDEwNCwgOTYsIDYxLCAxNSwgNSwgMjMzLCAKKyAgICAxMTgsIDMwLCAxMDQsIDk2LCAxMDQsIDk2LCA3MCwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjE0LCAyMzEsIDk2LCAyNTMsIAorICAgIDIzMSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIxNCwgMTI2LCAxNSwgNSwgCisgICAgMjMzLCAxMTgsIDIxOCwgMjMzLCAxNSwgNSwgMjMzLCAxMTUsIDE1LCA1LCAyMzMsIDExNiwgMzAsIDIyMCwgNjMsIDE1LCA1LCAKKyAgICAyMzMsIDExNiwgMzAsIDIyMCwgNjQsIDk2LCAyMTgsIDQzLCAxNSwgNSwgMjMzLCAxMTYsIDI0MiwgOTQsIDE1LCA1LCAyMzMsIAorICAgIDExNiwgMjQyLCA5NSwgMTE3LCAyMzMsIDExNiwgMjQyLCA5NSwgMjIwLCA2MywgMTUsIDUsIDIzMywgMTExLCAxNSwgNSwgCisgICAgMjMzLCAxMDQsIDE1LCA1LCAyMzMsIDEwNSwgMzAsIDIzMywgMTA0LCAxNSwgNSwgMjMzLCAxMDIsIDE1LCA1LCAyMzMsIAorICAgIDEwMywgMzAsIDIzMywgMTk2LCAxNSwgNSwgMjMzLCAxMDMsIDMwLCAyMzMsIDE5NywgOTYsIDIyMiwgMTQwLCAxNSwgNSwgCisgICAgMjMyLCAyNDEsIDE1LCA1LCAyMzIsIDIyNiwgMTUsIDUsIDIzMiwgMjE2LCAxNSwgNSwgMjMyLCAxOTcsIDE1LCA1LCAyMzIsIAorICAgIDk4LCAxNSwgNSwgMjMyLCA5OSwgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjMyLCA5NiwgMTUsIDUsIDIzMiwgOTcsIDMwLCAKKyAgICAyNTQsIDE3OCwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyNDUsIDcyLCAxNSwgCisgICAgNSwgMjMyLCA5NywgMzAsIDI0NSwgNzMsIDIxNiwgMjM5LCAxNSwgNSwgMjMyLCA5NywgMzAsIDI0MywgMTA1LCAyMTYsIAorICAgIDIzOSwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyNDEsIDE4MSwgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjMyLCA5NywgMzAsIDIzNiwgCisgICAgMTYsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjM1LCAxLCAxNSwgNSwgMjMyLCA5NywgMzAsIDIzNCwgMjU1LCAxNSwgNSwgMjMyLCAKKyAgICA5NywgMzAsIDIzNSwgMCwgOTYsIDI1MywgMjMxLCAxNSwgNSwgMjMyLCA5NywgMzAsIDIzNCwgOTIsIDE1LCA1LCAyMzIsIAorICAgIDk3LCAzMCwgMjMzLCAxMzYsIDk2LCAyNTMsIDIzMSwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyMzMsIDExNywgMTUsIDUsIDIzMiwgCisgICAgOTcsIDMwLCAyMzEsIDkyLCA5NiwgMjQ1LCAxNTAsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjI5LCAxMDcsIDE1LCA1LCAyMzIsIAorICAgIDk3LCAzMCwgMjI3LCAyMzcsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjE5LCAxOTIsIDk2LCAyNTMsIDIzMSwgMTUsIDUsIDIzMiwgCisgICAgOTcsIDMwLCAyMTksIDE3NCwgOTYsIDI1MSwgMTI1LCAxNSwgNSwgMjMyLCA5NywgMzAsIDIxNSwgMTEzLCAxNSwgNSwgMjMyLCAKKyAgICA5NywgMjE2LCAyMzksIDE1LCA1LCAyMzIsIDk3LCAyNDksIDEyNSwgMjMyLCA5NiwgMTUsIDUsIDIzMiwgOTcsIDIyNiwgCisgICAgMTY0LCAyMzIsIDk2LCAxNSwgNSwgMjMyLCA5NywgMjE4LCAyMzMsIDE1LCA1LCAyMzIsIDk3LCAyMjAsIDQ1LCAxNSwgNSwgCisgICAgMjMyLCA5NSwgMTUsIDUsIDIzMiwgOTEsIDE1LCA1LCAyMzIsIDkyLCAxMTcsIDIzMiwgOTEsIDE1LCA1LCAyMzIsIDkyLCAKKyAgICAyMjYsIDE2NCwgMjMyLCA5MSwgMTUsIDUsIDIzMiwgOTIsIDIyMCwgNDUsIDE1LCA1LCAyMzIsIDg5LCAxNSwgNSwgMjMyLCAKKyAgICA4NiwgMTUsIDUsIDIzMiwgODQsIDE1LCA1LCAyMzIsIDg1LCAxMTcsIDIzMiwgODQsIDE1LCA1LCAyMzIsIDg1LCAxMTcsIAorICAgIDIzMiwgODUsIDI0MywgOTcsIDExNywgMjQzLCA5NiwgMTUsIDUsIDE4NCwgMTUsIDUsIDIzMSwgMjM5LCAzMCwgMjE3LCA3MiwgCisgICAgMTUsIDUsIDIzMSwgMjM5LCAyNDIsIDk0LCAxNSwgNSwgMjMxLCAyMzgsIDE1LCA1LCAyMzEsIDIxMCwgMTUsIDUsIDIzMSwgCisgICAgMTY2LCAxNSwgNSwgMjMxLCAxNDcsIDE1LCA1LCAyMzEsIDE0NiwgMTUsIDUsIDIzMSwgOTEsIDE1LCA1LCAyMzEsIDQ3LCAKKyAgICAxNSwgNSwgMjMwLCAyMzAsIDE1LCA1LCAyMzAsIDE4OCwgMTUsIDUsIDIzMCwgMTAyLCAxNSwgNSwgMjMwLCAxMDMsIDExNywgCisgICAgMjMwLCAxMDIsIDE1LCA1LCAyMzAsIDkzLCAxNSwgNSwgMjMwLCA5NCwgMjQyLCA5NCwgMTUsIDUsIDIzMCwgNzgsIDE1LCA1LCAKKyAgICAyMzAsIDY0LCAxNSwgNSwgMjMwLCA2MSwgMTUsIDUsIDIzMCwgNjIsIDMwLCA2MSwgMTUsIDUsIDIzMCwgNjIsIDMwLCAyMzMsIAorICAgIDE5NiwgMTUsIDUsIDIzMCwgNjIsIDMwLCAyMTAsIDExNiwgMTUsIDUsIDIzMCwgNjIsIDExNywgMjMwLCA2MSwgMTUsIDUsIAorICAgIDIzMCwgNjIsIDExNywgMjMwLCA2MiwgMzAsIDExNSwgOTYsIDE5NywgMTUsIDUsIDIzMCwgNjIsIDI0OSwgMTI1LCAyMzAsIAorICAgIDYxLCAxNSwgNSwgMjMwLCA1OSwgMTUsIDUsIDIzMCwgNjAsIDMwLCA2MSwgMTUsIDUsIDIzMCwgNjAsIDMwLCAxMTUsIDk2LCAKKyAgICAyNDgsIDMsIDE1LCA1LCAyMzAsIDYwLCAzMCwgMjQ4LCAzLCAxNSwgNSwgMjMwLCA2MCwgMjQyLCA5NCwgMTUsIDUsIDE5NywgCisgICAgMTUsIDUsIDIyOSwgMjI3LCAxNSwgNSwgMjI5LCAyMTYsIDE1LCA1LCAyMjksIDIxNywgMjM1LCAxOTIsIDE1LCA1LCAyMjksIAorICAgIDIxNywgMzAsIDIxOSwgMjI2LCAyMTYsIDIzOSwgMTUsIDUsIDIyOSwgMjE3LCAyMjYsIDE2NCwgMjI5LCAyMTYsIDE1LCA1LCAKKyAgICAyMjksIDIxNSwgMTUsIDUsIDIyOSwgMjA4LCAyMjcsIDE4MCwgMTUsIDUsIDIyOSwgMjA3LCAxNSwgNSwgMjI5LCAyMDYsIAorICAgIDE1LCA1LCAyMjksIDEwNywgMTUsIDUsIDIyOSwgMTA4LCAzMCwgNjEsIDE1LCA1LCAyMjksIDEwOCwgMzAsIDIxNCwgMjE5LCAKKyAgICAxNSwgNSwgMjI5LCAxMDgsIDIyMCwgNDUsIDE1LCA1LCAyMjgsIDIzMywgMTUsIDUsIDIyOCwgMjM0LCAzMCwgNzUsIDE1LCAKKyAgICA1LCAyMjgsIDIzMiwgMTUsIDUsIDIyOCwgMjAzLCAxNSwgNSwgMjI4LCAyMDQsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIAorICAgIDE1LCA1LCAyMjgsIDIwNCwgMzAsIDI0MywgOTcsIDk2LCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAyMjgsIDIwMSwgCisgICAgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjU0LCAxMjMsIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDI1MywgMjMxLCAxNSwgNSwgMjI4LCAKKyAgICAyMDIsIDMwLCAyNTMsIDIzMiwgOTYsIDI1MywgMjMxLCAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyNDIsIDEwMywgMTUsIDUsIAorICAgIDIyOCwgMjAyLCAzMCwgMjMxLCA5MiwgOTYsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjI5LCAKKyAgICAxMDcsIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDIyNywgMTk0LCAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyMjAsIDYzLCAxNSwgNSwgCisgICAgMjI4LCAyMDIsIDMwLCAyMjAsIDY0LCA5NiwgMTE1LCAyNTQsIDEyMywgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjIwLCA2NCwgCisgICAgOTYsIDI1MywgMjMxLCAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyMjAsIDY0LCA5NiwgMjUzLCAyMzIsIDk2LCAyNTMsIDIzMSwgCisgICAgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjE0LCAyMzEsIDk2LCAyNTMsIDIzMSwgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjE0LCAKKyAgICAxMjYsIDE1LCA1LCAyMjgsIDE5MCwgMTUsIDUsIDIyNywgMjM3LCAxNSwgNSwgMjI3LCAyMTAsIDE1LCA1LCAyMjcsIDE5NCwgCisgICAgMTUsIDUsIDIyNywgMTk1LCAyMzMsIDExNiwgMzAsIDI0MywgOTYsIDE1LCA1LCAyMjcsIDE5NSwgMjMzLCAxMTYsIDMwLCAKKyAgICAyMzEsIDE0NywgMTUsIDUsIDIyNywgMTk1LCAyMzMsIDExNiwgMzAsIDIyMiwgOCwgMTUsIDUsIDIyNywgMTk1LCAyMzMsIAorICAgIDExNiwgMzAsIDIyMiwgOSwgMTE3LCAyMjcsIDE5NSwgMjMzLCAxMTYsIDMwLCAyMjIsIDgsIDE1LCA1LCAyMjcsIDE5NSwgCisgICAgMjMzLCAxMTYsIDMwLCAyMTQsIDEyNiwgMTUsIDUsIDIyNywgMTk1LCAyMTYsIDIzOSwgMTUsIDUsIDIyNywgMTk1LCAxMTcsIAorICAgIDIyNywgMTk0LCAxNSwgNSwgMjI3LCAxOTUsIDI0OSwgMTI1LCAyMjcsIDE5NCwgMTUsIDUsIDIyNywgMTk1LCAyNDksIDEyNSwgCisgICAgMjI3LCAxOTUsIDIzMywgMTE2LCAxMTcsIDIzMywgMTE1LCAxNSwgNSwgMjI3LCAxODksIDE1LCA1LCAyMjcsIDE5MCwgMjU1LCAKKyAgICAyNCwgMzAsIDI1MywgMjI2LCAxNSwgNSwgMjI3LCAxOTAsIDI1NSwgMjQsIDMwLCAyNTIsIDYsIDE1LCA1LCAyMjcsIDE5MCwgCisgICAgMjU1LCAyNCwgMzAsIDI0NiwgNzQsIDE1LCA1LCAyMjcsIDE5MCwgMjU1LCAyNCwgMzAsIDI0MiwgMTAzLCAxNSwgNSwgMjI3LCAKKyAgICAxOTAsIDI1NSwgMjQsIDMwLCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjI3LCAxOTAsIDI1NSwgMjQsIDMwLCAyMzQsIAorICAgIDI1NSwgMTUsIDUsIDIyNywgMTkwLCAyNTUsIDI0LCAzMCwgMjMzLCAxMzUsIDE1LCA1LCAyMjcsIDE5MCwgMjU1LCAyNCwgCisgICAgMzAsIDIyOSwgMTA3LCAxNSwgNSwgMjI3LCAxOTAsIDI1NSwgMjQsIDMwLCAyMTksIDE3MSwgMTUsIDUsIDIyNywgMTkwLCAKKyAgICAyNTUsIDI0LCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMjcsIDE5MCwgMjM0LCA2NiwgMzAsIDI1MiwgNiwgMTUsIDUsIDIyNywgCisgICAgMTkwLCAyMzQsIDY2LCAzMCwgMjUyLCA3LCA3MCwgMTUsIDUsIDE5MCwgMTUsIDUsIDIyNiwgODAsIDE1LCA1LCAyMjYsIDQ3LCAKKyAgICAxNSwgNSwgMjI2LCAyMSwgMTUsIDUsIDIyNSwgMTYxLCAxNSwgNSwgMjI1LCAxMDgsIDE1LCA1LCAyMjUsIDEwOSwgMzAsIAorICAgIDYxLCAxNSwgNSwgMjI1LCAxMDksIDMwLCAyNTUsIDI1LCAxNSwgNSwgMjI1LCAxMDksIDMwLCAyNTIsIDYsIDE1LCA1LCAKKyAgICAyMjUsIDEwOSwgMzAsIDI1MSwgMTI1LCAxNSwgNSwgMjI1LCAxMDksIDMwLCA3NSwgMTUsIDUsIDIyNSwgMTA5LCAzMCwgNzMsIAorICAgIDE1LCA1LCAyMjUsIDEwOSwgMzAsIDI0MCwgMTE1LCAxNSwgNSwgMjI1LCAxMDksIDMwLCA3MCwgMTUsIDUsIDIyNSwgMTA5LCAKKyAgICAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMjUsIDEwOSwgMjQ5LCAxMjUsIDIyNSwgMTA4LCAxNSwgNSwgMjI1LCA1MywgMTUsIDUsIAorICAgIDIyNSwgNTQsIDMwLCAyMzQsIDIzOCwgMTUsIDUsIDIyNSwgNTQsIDMwLCAyMTQsIDIxOSwgMTUsIDUsIDIyNSwgNTQsIDMwLCAKKyAgICAyMTAsIDExNiwgMTUsIDUsIDIyNSwgNTQsIDIyNiwgMTY0LCAyMjUsIDUzLCAxNSwgNSwgMjA1LCAxNSwgNSwgMjIzLCAxODIsIAorICAgIDE1LCA1LCAyMjMsIDM1LCAxNSwgNSwgMjIyLCAxNDAsIDE1LCA1LCAyMDYsIDE1LCA1LCAyMjIsIDIyLCAyMjcsIDE4MCwgCisgICAgMTUsIDUsIDIyMiwgMjEsIDE1LCA1LCAyMjIsIDIyLCAzMCwgNjEsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjQ2LCA3OCwgMTUsIAorICAgIDUsIDIyMiwgMjIsIDMwLCAyNDYsIDc2LCAxNSwgNSwgMjIyLCAyMiwgMzAsIDE2MiwgMTUsIDUsIDIyMiwgMjIsIDMwLCAKKyAgICAyMzQsIDI0MiwgMTUsIDUsIDIyMiwgMjIsIDMwLCAyMzMsIDE5NiwgMTUsIDUsIDIyMiwgMjIsIDMwLCAyMzIsIDg0LCAxNSwgCisgICAgNSwgMjIyLCAyMiwgMzAsIDIzMCwgMjMwLCAxNSwgNSwgMjIyLCAyMiwgMzAsIDIyNywgMTk0LCAxNSwgNSwgMjIyLCAyMiwgCisgICAgMzAsIDIyMiwgOCwgMTUsIDUsIDIyMiwgMjIsIDMwLCAyMjAsIDMwLCAxNSwgNSwgMjIyLCAyMiwgMzAsIDIxNywgOTMsIDE1LCAKKyAgICA1LCAyMjIsIDIyLCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjE0LCAyMjUsIDE1LCA1LCAyMjIsIDIyLCAKKyAgICAzMCwgMjE0LCAxOTcsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjE0LCAxNTAsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjE0LCAxMjYsIAorICAgIDE1LCA1LCAyMjIsIDIyLCAxMTcsIDIyMiwgMjEsIDE1LCA1LCAyMjIsIDIyLCAyNDIsIDk0LCAxNSwgNSwgMjIyLCA4LCAxNSwgCisgICAgNSwgMjIyLCA5LCAyMzMsIDExOCwgMzAsIDI1MywgMjI5LCAxNSwgNSwgMjIxLCAyMzksIDE1LCA1LCAyMjEsIDIzMSwgMTUsIAorICAgIDUsIDIyMCwgMTAyLCAxNSwgNSwgMjIwLCAxMDAsIDE1LCA1LCAyMjAsIDEwMSwgMzAsIDYxLCAxNSwgNSwgMjIwLCAxMDEsIAorICAgIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDIyMCwgMTAxLCAzMCwgMjQyLCAxOTAsIDE1LCA1LCAyMjAsIDEwMSwgMzAsIDIyOSwgCisgICAgMTA3LCAxNSwgNSwgMjIwLCAxMDEsIDMwLCAyMTksIDIyMywgMTUsIDUsIDIyMCwgMTAxLCAzMCwgMjE1LCA5OCwgMTUsIDUsIAorICAgIDIyMCwgMTAxLCAzMCwgNzAsIDE1LCA1LCAyMjAsIDEwMSwgMzAsIDEwNCwgOTYsIDYxLCAxNSwgNSwgMjIwLCA5OSwgMTUsIAorICAgIDUsIDIyMCwgOTcsIDE1LCA1LCAyMjAsIDc4LCAxNSwgNSwgMjIwLCA2MywgMTUsIDUsIDIyMCwgNjQsIDI0MCwgMjIyLCAxNSwgCisgICAgNSwgMjIwLCA2NCwgMTE3LCAyMjAsIDY0LCAyNDMsIDEyNywgMTE3LCAyNDMsIDEyNywgMjQzLCA5NywgMTE3LCAyNDMsIDk2LCAKKyAgICAxNSwgNSwgMjIwLCA2NCwgMTE3LCAyMjAsIDY0LCAyMTcsIDk0LCAxMTcsIDIxNywgOTQsIDI0MywgOTcsIDExNywgMjQzLCAKKyAgICA5NiwgMTUsIDUsIDIyMCwgNTYsIDE1LCA1LCAyMjAsIDUxLCAxNSwgNSwgMjIwLCA0OCwgMTUsIDUsIDIyMCwgNDcsIDE1LCAKKyAgICA1LCAyMjAsIDQ0LCAxNSwgNSwgMjIwLCAzMCwgMTUsIDUsIDIyMCwgMzEsIDMwLCA2MSwgMTUsIDUsIDIyMCwgMzEsIDMwLCAKKyAgICAyMzYsIDE2LCAxNSwgNSwgMjIwLCAyNCwgMTUsIDUsIDIyMCwgMjUsIDMwLCA2MSwgMTUsIDUsIDIyMCwgMjUsIDMwLCAyNTIsIAorICAgIDE2MSwgMTUsIDUsIDIyMCwgMjUsIDMwLCAyNTEsIDEwOSwgMTUsIDUsIDIyMCwgMjUsIDMwLCAyNDcsIDIwNiwgMTUsIDUsIAorICAgIDIyMCwgMjUsIDMwLCAyNDMsIDk2LCAxNSwgNSwgMjIwLCAyNSwgMzAsIDIzNiwgMzUsIDE1LCA1LCAyMjAsIDI1LCAzMCwgCisgICAgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDIyMCwgMjUsIDMwLCAyMzMsIDE5MSwgMTUsIDUsIDIyMCwgMjUsIDMwLCAyMzIsIAorICAgIDg2LCAxNSwgNSwgMjIwLCAyNSwgMzAsIDIzMCwgOTMsIDE1LCA1LCAyMjAsIDI1LCAzMCwgMjIyLCA4LCAxNSwgNSwgMjIwLCAKKyAgICAxOCwgMTUsIDUsIDIyMCwgMTMsIDE1LCA1LCAyMjAsIDE0LCAyMTYsIDIzOSwgMTUsIDUsIDIyMCwgMTQsIDExNywgMjIwLCAKKyAgICAxNCwgMjUxLCA5OSwgMTE3LCAyNTEsIDk4LCAxNSwgNSwgMjIwLCA5LCAxNSwgNSwgMjE5LCAyMjUsIDE1LCA1LCAyMTksIAorICAgIDIyNiwgMTE3LCAyMzUsIDE5MywgMjE5LCAyMjUsIDE1LCA1LCAyMTksIDIyMywgMTUsIDUsIDIxOSwgMjIyLCAxNSwgNSwgCisgICAgMjE5LCAxOTEsIDE1LCA1LCAyMTksIDE5MiwgMjQyLCA5NCwgMTUsIDUsIDIxOSwgMTgyLCAxNSwgNSwgMjE5LCAxODAsIDE1LCAKKyAgICA1LCAyMTksIDE4MSwgMTE3LCAyMTksIDE4MSwgMjE5LCAyMjMsIDE1LCA1LCAyMTksIDE3MywgMTUsIDUsIDIxOSwgMTcxLCAKKyAgICAxNSwgNSwgMjE4LCA4MywgMTUsIDUsIDIxOCwgODQsIDExNywgMjE4LCA4MywgMTUsIDUsIDIxOCwgNTQsIDE1LCA1LCAyMTgsIAorICAgIDUzLCAxNSwgNSwgMjE4LCA1MSwgMTUsIDUsIDIxOCwgNDMsIDE1LCA1LCAyMTgsIDQyLCAxNSwgNSwgMjE4LCAxNywgMTUsIAorICAgIDUsIDIxOCwgMTYsIDE1LCA1LCAyMTcsIDEwNSwgMTUsIDUsIDIxNywgMTA2LCAyNTMsIDIxNiwgMTUsIDUsIDIxNywgMTA2LCAKKyAgICAzMCwgMjQxLCAxODAsIDE1LCA1LCAyMTcsIDEwNiwgMzAsIDIzMCwgMjMwLCAxNSwgNSwgMjE3LCAxMDYsIDI0MiwgOTQsIAorICAgIDE1LCA1LCAyMTcsIDkzLCAxNSwgNSwgMjE3LCA5NCwgMTE3LCAyMTcsIDk0LCAyMjgsIDIzNCwgMTE3LCAyMjgsIDIzNCwgCisgICAgMjQ3LCAxODgsIDExNywgMjQ3LCAxODcsIDE1LCA1LCAyMTcsIDk0LCAyMTgsIDIzMywgMTUsIDUsIDIxNywgODQsIDE1LCA1LCAKKyAgICAxMjksIDMwLCAyNTIsIDYsIDE1LCA1LCAxMjksIDMwLCAyNDIsIDEwMywgMTUsIDUsIDEyOSwgMzAsIDIyMCwgNjMsIDE1LCAKKyAgICA1LCAxMjksIDMwLCAyMTksIDIyNSwgMTUsIDUsIDEyOSwgMzAsIDIxNSwgMTEzLCAxNSwgNSwgMTI5LCAzMCwgMjE0LCAyMTksIAorICAgIDE1LCA1LCAyMTcsIDcyLCAxNSwgNSwgMjE3LCA1MCwgMTUsIDUsIDIxNywgMjIsIDE1LCA1LCAyMTcsIDIzLCAyNDIsIDk0LCAKKyAgICAxNSwgNSwgMjE2LCAxMTcsIDE1LCA1LCAyMTYsIDExOCwgMjE2LCAyMzksIDE1LCA1LCAyMTYsIDkwLCAxNSwgNSwgMjE2LCAKKyAgICA3MiwgMTUsIDUsIDIxNiwgNzMsIDMwLCAyMTcsIDcyLCAxNSwgNSwgMjE2LCA3MywgMTE3LCAyMTYsIDcyLCAxNSwgNSwgCisgICAgMjE2LCA3MywgMTE3LCAyMTYsIDczLCAyNDMsIDEyNywgMTE3LCAyNDMsIDEyNywgMjQzLCA5NywgMTE3LCAyNDMsIDk2LCAKKyAgICAxNSwgNSwgMjE1LCAxMTgsIDE1LCA1LCAyMTUsIDExMywgMTUsIDUsIDIxNSwgMTExLCAxNSwgNSwgMjE1LCAxMDgsIDE1LCAKKyAgICA1LCAyMTUsIDk4LCAxNSwgNSwgMjE1LCA5OSwgMTE3LCAyMTUsIDk5LCAyMTAsIDExNywgMTE3LCAyMTAsIDExNiwgMTUsIDUsIAorICAgIDcwLCAxNSwgNSwgMTA0LCAyNDIsIDEwMywgMTUsIDUsIDEwNCwgMTA0LCA3MCwgMTUsIDUsIDEwNCwgMTE3LCAxMDQsIDIyNiwgCisgICAgOTAsIDExNywgMjI2LCA5MCwgMjQzLCA5NywgMTE3LCAyNDMsIDk2LCAxNSwgNSwgMTA0LCAxMTcsIDEwNCwgMjE4LCAxOCwgCisgICAgMTE3LCAyMTgsIDE3LCAxNSwgNSwgMTA0LCAxMTcsIDEwNCwgMTA0LCAyMjMsIDQ5LCAxMTcsIDEwNCwgMjIzLCA0OCwgMTUsIAorICAgIDUsIDIxNCwgMjMwLCAxNSwgNSwgMjE0LCAyMjUsIDE1LCA1LCAyMTQsIDIxOSwgMTUsIDUsIDIxNCwgMjIwLCAyMzMsIDE5MSwgCisgICAgMTUsIDUsIDIxNCwgMjIwLCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyMTQsIDIyMCwgMzAsIDIzMCwgMjMwLCAxNSwgNSwgMjE0LCAKKyAgICAyMjAsIDMwLCAxMDQsIDk2LCAxMDQsIDk2LCA3MCwgMTUsIDUsIDIxNCwgMjIwLCAzMCwgMTA0LCA5NiwgMTA0LCA5NiwgCisgICAgMTA0LCAyNDIsIDk0LCAxNSwgNSwgMjE0LCAyMjAsIDI0MiwgOTQsIDE1LCA1LCAyMTQsIDIyMCwgMjIwLCA0NSwgMTUsIDUsIAorICAgIDIxNCwgMjIwLCAyMjAsIDQ2LCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyMTQsIDIxNSwgMTUsIDUsIDIxNCwgMTk3LCAxNSwgNSwgCisgICAgMjE0LCAxOTgsIDMwLCAyMzMsIDExNywgMTUsIDUsIDIxNCwgMTk4LCAzMCwgMjMxLCA5MiwgOTYsIDI0OCwgMjIxLCAxNSwgCisgICAgNSwgMjE0LCAxOTgsIDMwLCAyMjAsIDEwMCwgMTUsIDUsIDIxNCwgMTk4LCAzMCwgNzAsIDE1LCA1LCAyMTQsIDE5NiwgMTUsIAorICAgIDUsIDIxNCwgMTkyLCAxNSwgNSwgMjE0LCAxOTMsIDMwLCAyMzQsIDIwNywgMTUsIDUsIDIxNCwgMTkzLCAzMCwgMTkwLCAxNSwgCisgICAgNSwgMjE0LCAxOTAsIDE1LCA1LCAyMTQsIDE5MSwgMjQyLCA5NCwgMTUsIDUsIDIxNCwgMTUwLCAxNSwgNSwgMjE0LCAxNTEsIAorICAgIDI0OSwgMTI1LCAyMTQsIDE1MCwgMTUsIDUsIDIxNCwgMTUxLCAyMjAsIDQ1LCAxNSwgNSwgMjE0LCAxNDgsIDE1LCA1LCAKKyAgICAyMTQsIDE0OSwgMzAsIDExNSwgOTYsIDE2MiwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMTE1LCA5NiwgMTk3LCAxNSwgNSwgCisgICAgMjE0LCAxNDksIDMwLCAyNTQsIDE3OCwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMTYyLCAxNSwgNSwgMjE0LCAxNDksIDMwLCAKKyAgICAyMjcsIDE5NCwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDIxNCwgMjMxLCAKKyAgICA5NiwgMjUzLCAyMzEsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDIxNCwgMjMxLCA5NiwgMjUyLCA2LCAxNSwgNSwgMjE0LCAxNDcsIAorICAgIDE1LCA1LCAyMTQsIDE0NCwgMTUsIDUsIDIxNCwgMTQzLCAxNSwgNSwgMjE0LCAxMzksIDE1LCA1LCAyMTQsIDE0MCwgMzAsIAorICAgIDYxLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyNTMsIDIyNiwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMTMwLCAxNSwgNSwgMjE0LCAKKyAgICAxNDAsIDMwLCAyNDYsIDY4LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyNDMsIDEzNSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgCisgICAgMjQzLCAxMTgsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgCisgICAgMjQzLCA5NiwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjQyLCAxMTMsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDE2MiwgMTUsIDUsIAorICAgIDIxNCwgMTQwLCAzMCwgMjM2LCAzNSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjM2LCAxNiwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgCisgICAgMjM1LCAxNjUsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIzNCwgOTIsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIzMiwgODQsIDE1LCAKKyAgICA1LCAyMTQsIDE0MCwgMzAsIDIzMCwgMTg4LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAxOTAsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIAorICAgIDIyMCwgNjMsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIxOSwgMTgwLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMTUsIDExOCwgCisgICAgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMTA0LCA5NiwgMjQyLCAxMDMsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIxNCwgMjE5LCAKKyAgICAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMTQsIDEzNywgMTUsIDUsIDIxNCwgMTM3LCAxNSwgNSwgMjE0LCAxMzgsIDMwLCA3MCwgCisgICAgMTUsIDUsIDIxNCwgMTI2LCAxNSwgNSwgMjE0LCAxMjcsIDMwLCA2MSwgMTUsIDUsIDIxNCwgMTI3LCAzMCwgMjMzLCAyMTcsIAorICAgIDE1LCA1LCAyMTQsIDEyNywgMzAsIDIzMywgMTk2LCAxNSwgNSwgMjE0LCAxMjcsIDMwLCAyMTcsIDcyLCAxNSwgNSwgMjE0LCAKKyAgICAxMjIsIDE1LCA1LCAyMTQsIDEyNSwgMTUsIDUsIDIxNCwgMTIzLCAxNSwgNSwgMjE0LCAxMTksIDE1LCA1LCAyMTQsIDEwOCwgCisgICAgMTUsIDUsIDIxNCwgMTA5LCAzMCwgMjM0LCAyMDcsIDE1LCA1LCAyMTQsIDEwNywgMTUsIDUsIDIxMCwgMTE2LCAxNSwgNSwgCisgICAgMjEwLCAxMTcsIDIxNiwgMjM5LCAxNSwgNSwgMjEwLCAxMTcsIDkyLCAzMCwgMjMzLCAxOTYsIDE1LCA1LCAyMTAsIDExMywgCisgICAgMTUsIDUsIDIxMCwgMTA2LCAxNSwgNSwgMjEwLCA5MywgMTUsIDUsIDIxMCwgNDQsIDE1LCA1LCAyMTAsIDQ1LCAxMTcsIAorICAgIDIxMCwgNDQsIDE1LCA1LCAyMTAsIDQzLCAxNSwgNSwgMjEwLCA0MSwgMTUsIDUsIDIxMCwgNDIsIDIzNSwgMywgMjE2LCAKKyAgICAyMzksIDE1LCA1LCAyMTAsIDM2LCAxNSwgNSwgMjEwLCAyOCwgMTUsIDUsIDIxMCwgMTMsIDE1LCA1LCAyMTAsIDExLCAxNSwgCisgICAgNSwgMjEwLCAxMiwgMzAsIDYxLCAxNSwgNSwgMjEwLCAxMCwgMTUsIDUsIDIxMCwgOSwgMTUsIDEzMiwgNSwgMTEzLCAyNTMsIAorICAgIDIzMSwgMTUsIDEzMiwgNSwgMTM0LCAyNTMsIDIzMSwgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjUzLCAyMzEsIDE1LCAxMzIsIAorICAgIDUsIDI0NCwgODEsIDI1MywgMjMxLCAxNSwgMTMyLCA1LCAyMTksIDEyNSwgMjUzLCAyMzEsIDE1LCAxMzIsIDUsIDIyMCwgCisgICAgMTIyLCAyNTMsIDIzMSwgMTUsIDEzMiwgNSwgMjQ1LCAxOTMsIDI1MywgMjMxLCAxNSwgMTMyLCA1LCAyMjgsIDIwMCwgMjUzLCAKKyAgICAyMzEsIDE1LCAxMzIsIDUsIDEzNCwgMjQ3LCAxODcsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDI0NywgMTg3LCAxNSwgMTMyLCAKKyAgICA1LCAyNDQsIDgxLCAyNDcsIDE4NywgMTUsIDEzMiwgNSwgMjE5LCAxMjUsIDI0NywgMTg3LCAxNSwgMTMyLCA1LCAyMjAsIAorICAgIDEyMiwgMjQ3LCAxODcsIDE1LCAxMzIsIDUsIDI0NSwgMTkzLCAyNDcsIDE4NywgMTUsIDEzMiwgNSwgMjI4LCAyMDAsIDI0NywgCisgICAgMTg3LCAxNSwgMTMyLCA1LCAyNDQsIDExLCA3MCwgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgNzAsIDE1LCAxMzIsIDUsIDIxOSwgCisgICAgMTI1LCA3MCwgMTUsIDEzMiwgNSwgMjIwLCAxMjIsIDcwLCAxNSwgMTMyLCA1LCAyNDUsIDE5MywgNzAsIDE1LCAxMzIsIDUsIAorICAgIDIyOCwgMjAwLCA3MCwgMTUsIDEzMiwgNSwgMTIzLCAyNDMsIDM4LCAxNSwgMTMyLCA1LCAxMTMsIDI0MywgMzgsIDE1LCAKKyAgICAxMzIsIDUsIDEzNCwgMjQzLCAzOCwgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjQzLCAzOCwgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgCisgICAgMjQzLCAzOCwgMTUsIDEzMiwgNSwgMjE5LCAxMjUsIDI0MywgMzgsIDE1LCAxMzIsIDUsIDIyMCwgMTIyLCAyNDMsIDM4LCAKKyAgICAxNSwgMTMyLCA1LCAyNDUsIDE5MywgMjQzLCAzOCwgMTUsIDEzMiwgNSwgMjI4LCAyMDAsIDI0MywgMzgsIDE1LCAxMzIsIDUsIAorICAgIDEyMywgMjQzLCAzNSwgMTUsIDEzMiwgNSwgMTEzLCAyNDMsIDM1LCAxNSwgMTMyLCA1LCAxMzQsIDI0MywgMzUsIDE1LCAKKyAgICAxMzIsIDUsIDI0NCwgMTEsIDI0MywgMzUsIDE1LCAxMzIsIDUsIDI0NCwgODEsIDI0MywgMzUsIDE1LCAxMzIsIDUsIDExMywgCisgICAgMjIwLCA3OCwgMTUsIDEzMiwgNSwgMTM0LCAyMjAsIDc4LCAxNSwgMTMyLCA1LCAxMzQsIDIyMCwgNzksIDIxNCwgMTIsIDE3LCAKKyAgICAxNSwgMTMyLCA1LCAyNDQsIDExLCAyMjAsIDc4LCAxNSwgMTMyLCA1LCAyNDQsIDgxLCAyMjAsIDc4LCAxNSwgMTMyLCA1LCAKKyAgICAyMTksIDEyNSwgMjIwLCA3OCwgMTUsIDEzMiwgNSwgMjIwLCAxMjIsIDIyMCwgNzgsIDE1LCAxMzIsIDUsIDI0NSwgMTkzLCAKKyAgICAyMjAsIDc4LCAxNSwgMTMyLCA1LCAyMjgsIDIwMCwgMjIwLCA3OCwgMTUsIDEzMiwgNSwgMTIzLCAyMjAsIDczLCAxNSwgCisgICAgMTMyLCA1LCAxMTMsIDIyMCwgNzMsIDE1LCAxMzIsIDUsIDEzNCwgMjIwLCA3MywgMTUsIDEzMiwgNSwgMTM0LCAyMjAsIDc0LCAKKyAgICAyMTQsIDEyLCAxNywgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjIwLCA3MywgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgMjIwLCA3MywgCisgICAgMTUsIDEzMiwgNSwgMjIwLCA3OSwgMzAsIDI0MywgMTE5LCA5NiwgMjQ3LCAxODcsIDE1LCAxMzIsIDUsIDIyMCwgNzksIDMwLCAKKyAgICAyNDMsIDExOSwgOTYsIDIzMCwgMTg4LCAxNSwgMTMyLCA1LCAxMjMsIDI1MSwgOTUsIDE1LCAxMzIsIDUsIDExMywgMjUxLCAKKyAgICA5NSwgMTUsIDEzMiwgNSwgMTM0LCAyNTEsIDk1LCAxNSwgMTMyLCA1LCAxMzQsIDI1MSwgOTYsIDIxNCwgMTIsIDE3LCAxNSwgCisgICAgMTMyLCA1LCAyNDQsIDExLCAyNTEsIDk1LCAxNSwgMTMyLCA1LCAyNDQsIDgxLCAyNTEsIDk1LCAxNSwgMTMyLCA1LCAxMzQsIAorICAgIDIxNCwgMTIsIDI0NCwgMjAsIDI0NSwgNzQsIDE1LCAxMzIsIDUsIDEzNCwgMjE0LCAxMiwgMjQ0LCAyMCwgMjQ1LCA3MSwgCisgICAgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjE0LCAxMiwgMjQ0LCAyMCwgMjMyLCAyMTcsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIAorICAgIDIxNCwgMTIsIDI0NCwgMjAsIDIzMiwgMjE1LCAxNSwgMTMyLCA1LCAyNDQsIDExLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzIsIAorICAgIDIxOCwgNjEsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDIxNCwgMTIsIDI0NCwgMjAsIDIzMiwgMjE4LCAyNTMsIDE1OCwgMTUsIAorICAgIDEzMiwgNSwgMjE5LCAxMjUsIDIxNCwgMTIsIDI0NCwgMjAsIDI1MywgMjI4LCAxNSwgMTMyLCA1LCAyMjAsIDEyMiwgMjE0LCAKKyAgICAxMiwgMjQ0LCAyMCwgMjM2LCA4LCAxNSwgMTMyLCA1LCAyMjAsIDEyMiwgMjE0LCAxMiwgMjQ0LCAyMCwgMjM2LCAxMCwgNjEsIAorICAgIDE1LCAxMzIsIDUsIDIyMCwgMTIyLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzYsIDEwLCAyNTMsIDE1OCwgMTUsIDEzMiwgNSwgCisgICAgMjQ1LCAxOTMsIDIxNCwgMTIsIDI0NCwgMjAsIDIxNCwgMTIxLCAxNSwgMTMyLCA1LCAyNDUsIDE5MywgMjE0LCAxMiwgMjQ0LCAKKyAgICAyMCwgMjE0LCAxMjAsIDE1LCAxMzIsIDUsIDIyOCwgMjAwLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzYsIDI0LCAxNSwgMTMyLCAKKyAgICA1LCAyMjgsIDIwMCwgMjE0LCAxMiwgMjQ0LCAyMCwgMjM2LCAyMywgMTUsIDEzMiwgNSwgMjI4LCAyMDAsIDIxNCwgMTIsIAorICAgIDI0NCwgMjAsIDIzNiwgMjIsIDE1LCAxMzIsIDUsIDIyOCwgMjAwLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzYsIDI1LCA2MSwgCisgICAgMTUsIDEzMiwgNSwgMTEzLCAyNTMsIDIzMiwgMjE2LCAyMzksIDE1LCAxMzIsIDUsIDEzNCwgMjUzLCAyMzIsIDIxNiwgMjM5LCAKKyAgICAxNSwgMTMyLCA1LCAyNDQsIDExLCAyNTMsIDIzMiwgMjE2LCAyMzksIDE1LCAxMzIsIDUsIDI0NCwgODEsIDI1MywgMjMyLCAKKyAgICAyMTYsIDIzOSwgMTUsIDEzMiwgNSwgMjE5LCAxMjUsIDI1MywgMjMyLCAyMTYsIDIzOSwgMTUsIDEzMiwgNSwgMTIzLCAyNTIsIAorICAgIDE1MCwgMTUsIDEzMiwgNSwgMTEzLCAyNTIsIDE1MCwgMTUsIDEzMiwgNSwgMTM0LCAyNTIsIDE1MCwgMTUsIDEzMiwgNSwgCisgICAgMjQ0LCAxMSwgMjUyLCAxNTAsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDI1MiwgMTUxLCAyMTQsIDEyLCAxNywgMTUsIDEzMiwgCisgICAgNSwgMjQ0LCA4MSwgMjUyLCAxNTAsIDE1LCAxMzIsIDUsIDI0NCwgODEsIDI1MiwgMTUxLCAyMTQsIDEyLCAxNywgMTUsIAorICAgIDEzMiwgNSwgMjI4LCAyMTAsIDE1LCAxMzIsIDUsIDIyOCwgMjExLCAxNSwgMTMyLCA1LCAxMjMsIDI0NSwgNzAsIDE1LCAKKyAgICAxMzIsIDUsIDExMywgMjQ1LCA3MCwgMTUsIDEzMiwgNSwgMTIzLCAyMTYsIDE2OSwgMjQ3LCAxODcsIDE1LCAxMzIsIDUsIAorICAgIDExMywgMjE2LCAxNjcsIDI0NywgMTg3LCAxNSwgMTMyLCA1LCAyNDQsIDgxLCAyMTksIDExNCwgMjQ3LCAxODcsIDE1LCAKKyAgICAxMzIsIDUsIDEyMywgMjE2LCAxNjksIDIxNCwgMTIsIDI0NCwgMjAsIDYxLCAxNSwgMTMyLCA1LCAxMTMsIDIxNiwgMTY3LCAKKyAgICAyMTQsIDEyLCAyNDQsIDIwLCA2MSwgMTUsIDEzMiwgNSwgMTIzLCAyNDUsIDE4OSwgMjUzLCAyMzEsIDE1LCAxMzIsIDUsIAorICAgIDEyMywgMjI0LCAyMiwgMjUzLCAyMzEsIDE1LCAxMzIsIDUsIDU1LCAyNTMsIDIxOSwgMTIzLCAyMTksIDExNSwgMTUsIDEzMiwgCisgICAgNSwgNTUsIDI1MywgMjE5LCAxMjMsIDIyNCwgMjEsIDE1LCAyMjQsIDE0MSwgNSwgNTUsIDI1MywgMjE5LCAyMTEsIDIwOSwgCisgICAgMjQ3LCAxNzIsIDE1LCAyMjQsIDE0MSwgNSwgNjcsIDI0OSwgMjI2LCAxNSwgMjI0LCAxNDEsIDUsIDI0NywgMjU1LCAyNDksIAorICAgIDIyNiwgMTUsIDIyNCwgMTQxLCA1LCAyNDcsIDI1NSwgMjE1LCAyMjEsIDEyLCAxMywgMjU1LCAxNTUsIDEyLCAxMywgMjU1LCAKKyAgICAxNTQsIDEyLCAxMywgMjU1LCAxNTMsIDEyLCAxMywgMjU1LCAxNTIsIDEyLCAxMywgMjU1LCAxNTEsIDEyLCAxMywgMjU1LCAKKyAgICAxNTAsIDEyLCAxMywgMjU1LCAxNDksIDEyLCAxMywgMjU1LCAxNDgsIDEyLCAxMywgMjU1LCAxNDcsIDEyLCAxMywgMjU1LCAKKyAgICAxNDYsIDEyLCAxMywgMjU1LCAxNDUsIDEyLCAxMywgMjU1LCAxNDQsIDEyLCAxMywgMjU1LCAxNDMsIDEyLCAxMywgMjU1LCAKKyAgICAxNDIsIDEyLCAxMywgMjU1LCAxNDEsIDEyLCAxMywgMjU1LCAxNDAsIDEyLCAxMywgMjU1LCAxMzksIDEyLCAxMywgMjU1LCAKKyAgICAxMzgsIDEyLCAxMywgMjU1LCAxMzcsIDEyLCAxMywgMjU1LCAxMzYsIDEyLCAxMywgMjU1LCAxMzUsIDEyLCAxMywgMjU1LCAKKyAgICAxMzQsIDEyLCAxMywgMjU1LCAxMzMsIDEyLCAxMywgMjU1LCAxMzIsIDEyLCAxMywgMjU1LCAxMzEsIDEyLCAxMywgMjU1LCAKKyAgICAxMzAsIDEyLCAxMywgMjU1LCAxMjksIDEyLCAxMywgMjU1LCAxMjgsIDEyLCAxMywgMjU1LCAxMjcsIDEyLCAxMywgMjU1LCAKKyAgICAxMjYsIDEyLCAxMywgMjU1LCAxMjUsIDEyLCAxMywgMjU1LCAxMjQsIDEyLCAxMywgMjU1LCAxMjMsIDEyLCAxMywgMjU1LCAKKyAgICAxMjIsIDEyLCAxMywgMjU1LCAxMjEsIDEyLCAxMywgMjU1LCAxMjAsIDEyLCAxMywgMjU1LCAxMTksIDEyLCAxMywgMjU1LCAKKyAgICAxMTgsIDEyLCAxMywgMjU1LCAxMTcsIDEyLCAxMywgMjU1LCAxMTYsIDEyLCAxMywgMjU1LCAxMTUsIDEyLCAxMywgMjU1LCAKKyAgICAxMTQsIDEyLCAxMywgMjU1LCAxMTMsIDEyLCAxMywgMjU1LCAxMTIsIDEyLCAxMywgMjU1LCAxMTEsIDEyLCAxMywgMjU1LCAKKyAgICAxMTAsIDEyLCAxMywgMjU1LCAxMDksIDEyLCAxMywgMjU1LCAxMDgsIDEyLCAxMywgMjU1LCAxMDcsIDEyLCAxMywgMjU1LCAKKyAgICAxMDYsIDEyLCAxMywgMjU1LCAxMDUsIDEyLCAxMywgMjU1LCAxMDQsIDEyLCAxMywgMjU1LCAxMDMsIDEyLCAxMywgMjU1LCAKKyAgICAxMDIsIDEyLCAxMywgMjU1LCAxMDEsIDEyLCAxMywgMjU1LCAxMDAsIDEyLCAxMywgMjU1LCA5OSwgMTIsIDEzLCAyNTUsIAorICAgIDk4LCAxMiwgMTMsIDI1NSwgOTcsIDEyLCAxMywgMjU1LCA5NiwgMTIsIDEzLCAyNTUsIDk1LCAxMiwgMTMsIDI1NSwgOTQsIAorICAgIDEyLCAxMywgMjU1LCA5MywgMTIsIDEzLCAyNTUsIDkyLCAxMiwgMTMsIDI1NSwgOTEsIDEyLCAxMywgMjU1LCA5MCwgMTIsIAorICAgIDEzLCAyNTUsIDg5LCAxMiwgMTMsIDI1NSwgODgsIDEyLCAxMywgMjU1LCA4NywgMTIsIDEzLCAyNTUsIDg2LCAxMiwgMTMsIAorICAgIDI1NSwgODUsIDEyLCAxMywgMjU1LCA4NCwgMTIsIDEzLCAyNTUsIDgzLCAxMiwgMTMsIDI1NSwgODIsIDEyLCAxMywgMjU1LCAKKyAgICA4MSwgMTIsIDEzLCAyNTUsIDgwLCAxMiwgMTMsIDI1NSwgNzksIDEyLCAxMywgMjU1LCA3OCwgMTIsIDEzLCAyNTUsIDc3LCAKKyAgICAxMiwgMTMsIDI1NSwgNzYsIDEyLCAxMywgMjUzLCAxNTYsIDEyLCAxMywgMjUzLCAxNTQsIDEyLCAxMywgMjUzLCAxNTIsIAorICAgIDEyLCAxMywgMjUzLCAxNTAsIDEyLCAxMywgMjUzLCAxNDgsIDEyLCAxMywgMjUzLCAxNDcsIDEyLCAxMywgMjUzLCAxNDUsIAorICAgIDEyLCAxMywgMjUzLCAxNDMsIDEyLCAxMywgMjUzLCAxNDEsIDEyLCAxMywgMjUzLCAxMzksIDEyLCAxMywgMjUxLCA2MiwgCisgICAgMTIsIDEzLCAyNTEsIDYxLCAxMiwgMTMsIDI1MSwgNjAsIDEyLCAxMywgMjUxLCA1OSwgMTIsIDEzLCAyNTEsIDU4LCAxMiwgCisgICAgMTMsIDI1MSwgNTcsIDEyLCAxMywgMjUxLCA1NiwgMTIsIDEzLCAyNTEsIDU1LCAxMiwgMTMsIDI1MSwgNTQsIDEyLCAxMywgCisgICAgMjUxLCA1MywgMTIsIDEzLCAyNTEsIDUyLCAxMiwgMTMsIDI1MSwgNTEsIDEyLCAxMywgMjUxLCA1MCwgMTIsIDEzLCAyNTEsIAorICAgIDQ5LCAxMiwgMTMsIDI1MSwgNDgsIDEyLCAxMywgMjUxLCA0NywgMTIsIDEzLCAyNTEsIDQ2LCAxMiwgMTMsIDI1MSwgNDUsIAorICAgIDEyLCAxMywgMjUxLCA0NCwgMTIsIDEzLCAyNTEsIDQzLCAxMiwgMTMsIDI1MSwgNDIsIDEyLCAxMywgMjUxLCA0MSwgMTIsIAorICAgIDEzLCAyNTEsIDQwLCAxMiwgMTMsIDI1MSwgMzksIDEyLCAxMywgMjUxLCAzOCwgMTIsIDEzLCAyNTEsIDM3LCAxMiwgMTMsIAorICAgIDI1MSwgMzYsIDEyLCAxMywgMjUxLCAzNSwgMTIsIDEzLCAyNDksIDU5LCAxMiwgMTMsIDI0OSwgNTgsIDEyLCAxMywgMjQ5LCAKKyAgICA1NywgMTIsIDEzLCAyNDksIDU2LCAxMiwgMTMsIDI0OSwgNTUsIDEyLCAxMywgMjQ5LCA1NCwgMTIsIDEzLCAyNDksIDUzLCAKKyAgICAxMiwgMTMsIDI0OSwgNTIsIDEyLCAxMywgMjQ5LCA1MSwgMTIsIDEzLCAyNDksIDUwLCAxMiwgMTMsIDI0OSwgNDksIDEyLCAKKyAgICAxMywgMjQ5LCA0OCwgMTIsIDEzLCAyNDksIDQ3LCAxMiwgMTMsIDI0OSwgNDYsIDEyLCAxMywgMjQ5LCA0NSwgMTIsIDEzLCAKKyAgICAyNDksIDQ0LCAxMiwgMTMsIDI0OSwgNDMsIDEyLCAxMywgMjQ5LCA0MiwgMTIsIDEzLCAyNDksIDQxLCAxMiwgMTMsIDI0OSwgCisgICAgNDAsIDEyLCAxMywgMjQ5LCAzOSwgMTIsIDEzLCAyNDksIDM4LCAxMiwgMTMsIDI0OSwgMzcsIDEyLCAxMywgMjQ5LCAzNiwgCisgICAgMTIsIDEzLCAyNDksIDM1LCAxMiwgMTMsIDI0OSwgMzQsIDEyLCAxMywgMjQ5LCAzMywgMTIsIDEzLCAyNDksIDMyLCAxMiwgCisgICAgMTMsIDI0OSwgMzEsIDEyLCAxMywgMjQ5LCAzMCwgMTIsIDEzLCAyNDksIDI5LCAxMiwgMTMsIDI0OSwgMjgsIDEyLCAxMywgCisgICAgMjQ5LCAyNywgMTIsIDEzLCAyNDksIDI2LCAxMiwgMTMsIDI0OSwgMjUsIDEyLCAxMywgMjQ5LCAyNCwgMTIsIDEzLCAyNDksIAorICAgIDIzLCAxMiwgMTMsIDI0OSwgMjIsIDEyLCAxMywgMjQ5LCAyMSwgMTIsIDEzLCAyNDksIDIwLCAxMiwgMTMsIDI0OSwgMTksIAorICAgIDEyLCAxMywgMjQ5LCAxOCwgMTIsIDEzLCAyNDksIDE3LCAxMiwgMTMsIDI0OSwgMTYsIDEyLCAxMywgMjQ5LCAxNSwgMTIsIAorICAgIDEzLCAyNDksIDE0LCAxMiwgMTMsIDI0OSwgMTMsIDEyLCAxMywgMjQ5LCAxMiwgMTIsIDEzLCAyNDksIDExLCAxMiwgMTMsIAorICAgIDI0OSwgMTAsIDEyLCAxMywgMjQ5LCA5LCAxMiwgMTMsIDI0OSwgOCwgMTIsIDEzLCAyNDksIDcsIDEyLCAxMywgMjQ5LCA2LCAKKyAgICAxMiwgMTMsIDI0OSwgNSwgMTIsIDEzLCAyNDksIDQsIDEyLCAxMywgMjQ5LCAzLCAxMiwgMTMsIDI0OSwgMiwgMTIsIDEzLCAKKyAgICAyNDksIDEsIDEyLCAxMywgMjQ5LCAwLCAxMiwgMTMsIDI0OCwgMjU1LCAxMiwgMTMsIDI0OCwgMjU0LCAxMiwgMTMsIDI0OCwgCisgICAgMjUzLCAxMiwgMTMsIDI0OCwgMjUyLCAxMiwgMTMsIDI0OCwgMjUxLCAxMiwgMTMsIDI0OCwgMjUwLCAxMiwgMTMsIDI0OCwgCisgICAgMjQ5LCAxMiwgMTMsIDI0OCwgMjQ4LCAxMiwgMTMsIDI0OCwgMjQ3LCAxMiwgMTMsIDI0OCwgMjQ2LCAxMiwgMTMsIDI0OCwgCisgICAgMjQ1LCAxMiwgMTMsIDI0OCwgMjQ0LCAxMiwgMTMsIDI0OCwgMjQzLCAxMiwgMTMsIDI0OCwgMjQyLCAxMiwgMTMsIDI0OCwgCisgICAgMjQxLCAxMiwgMTMsIDI0OCwgMjQwLCAxMiwgMTMsIDI0OCwgMjM5LCAxMiwgMTMsIDI0OCwgMjM4LCAxMiwgMTMsIDI0OCwgCisgICAgMjM3LCAxMiwgMTMsIDI0OCwgMjM2LCAxMiwgMTMsIDI0OCwgMjM1LCAxMiwgMTMsIDI0OCwgMjM0LCAxMiwgMTMsIDI0OCwgCisgICAgMjMzLCAxMiwgMTMsIDI0OCwgMjMyLCAxMiwgMTMsIDI0OCwgMjMxLCAxMiwgMTMsIDI0OCwgMjMwLCAxMiwgMTMsIDI0OCwgCisgICAgMjI5LCAxMiwgMTMsIDI0OCwgMjI4LCAxMiwgMTMsIDI0OCwgMjI3LCAxMiwgMTMsIDI0OCwgMjI2LCAxMiwgMTMsIDI0OCwgCisgICAgMjI1LCAxMiwgMTMsIDI0OCwgMjI0LCAxMiwgMTMsIDI0NiwgMjMsIDEyLCAxMywgMjQ2LCAyMiwgMTIsIDEzLCAyNDYsIDIxLCAKKyAgICAxMiwgMTMsIDI0NiwgMjAsIDEyLCAxMywgMjQ2LCAxOSwgMTIsIDEzLCAyNDYsIDE4LCAxMiwgMTMsIDI0NiwgMTcsIDEyLCAKKyAgICAxMywgMjQ2LCAxNiwgMTIsIDEzLCAyNDYsIDE1LCAxMiwgMTMsIDI0NiwgMTQsIDEyLCAxMywgMjQ2LCAxMywgMTIsIDEzLCAKKyAgICAyNDYsIDEyLCAxMiwgMTMsIDI0NiwgMTEsIDEyLCAxMywgMjQ2LCAxMCwgMTIsIDEzLCAyNDYsIDksIDEyLCAxMywgMjQ2LCAKKyAgICA4LCAxMiwgMTMsIDI0NiwgNywgMTIsIDEzLCAyNDYsIDYsIDEyLCAxMywgMjQ2LCA1LCAxMiwgMTMsIDI0NiwgNCwgMTIsIAorICAgIDEzLCAyNDYsIDMsIDEyLCAxMywgMjQ2LCAyLCAxMiwgMTMsIDI0NiwgMSwgMTIsIDEzLCAyNDYsIDAsIDEyLCAxMywgMjQ1LCAKKyAgICAyNTUsIDEyLCAxMywgMjQ1LCAyNTQsIDEyLCAxMywgMjQ1LCAyNTMsIDEyLCAxMywgMjQ1LCAyNTIsIDEyLCAxMywgMjQ1LCAKKyAgICAyNTEsIDEyLCAxMywgMjQ1LCAyNTAsIDEyLCAxMywgMjQ1LCAyNDksIDEyLCAxMywgMjQ1LCAyNDgsIDEyLCAxMywgMjQ1LCAKKyAgICAyNDcsIDEyLCAxMywgMjQ1LCAyNDYsIDEyLCAxMywgMjQ1LCAyNDUsIDEyLCAxMywgMjQ1LCAyNDQsIDEyLCAxMywgMjQ1LCAKKyAgICAyNDMsIDEyLCAxMywgMjQ1LCAyNDIsIDEyLCAxMywgMjQ1LCAyNDEsIDEyLCAxMywgMjQ1LCAyNDAsIDEyLCAxMywgMjQ1LCAKKyAgICAyMzksIDEyLCAxMywgMjQ1LCAyMzgsIDEyLCAxMywgMjQ1LCAyMzcsIDEyLCAxMywgMjQ1LCAyMzYsIDEyLCAxMywgMjQ1LCAKKyAgICA1LCAxMiwgMTMsIDI0NSwgNCwgMTIsIDEzLCAyNDUsIDMsIDEyLCAxMywgMjQ1LCAyLCAxMiwgMTMsIDI0NSwgMSwgMTIsIAorICAgIDEzLCAyNDUsIDAsIDEyLCAxMywgMjQ0LCAyNTUsIDEyLCAxMywgMjQ0LCAyNTQsIDEyLCAxMywgMjQ0LCAyNTMsIDEyLCAxMywgCisgICAgMjQ0LCAyNTIsIDEyLCAxMywgMjQ0LCAyNTEsIDEyLCAxMywgMjQ0LCAyNTAsIDEyLCAxMywgMjQ0LCAyNDksIDEyLCAxMywgCisgICAgMjQ0LCAyNDgsIDEyLCAxMywgMjQ0LCAyNDcsIDEyLCAxMywgMjQ0LCAyNDYsIDEyLCAxMywgMjQ0LCAyNDUsIDEyLCAxMywgCisgICAgMjQ0LCAyNDQsIDEyLCAxMywgMjQ0LCAyNDMsIDEyLCAxMywgMjQ0LCAyNDIsIDEyLCAxMywgMjQ0LCAyNDEsIDEyLCAxMywgCisgICAgMjQ0LCAyNDAsIDEyLCAxMywgMjQ0LCAyMzksIDEyLCAxMywgMjQ0LCAyMzgsIDEyLCAxMywgMjQ0LCAyMzcsIDEyLCAxMywgCisgICAgMjQ0LCAyMzYsIDEyLCAxMywgMjQ0LCAyMzUsIDEyLCAxMywgMjQ0LCAyMzQsIDEyLCAxMywgMjQ0LCAyMzMsIDEyLCAxMywgCisgICAgMjQ0LCAyMzIsIDEyLCAxMywgMjQ0LCAyMzEsIDEyLCAxMywgMjQ0LCAyMzAsIDEyLCAxMywgMjQ0LCAyMjksIDEyLCAxMywgCisgICAgMjQ0LCAyMjgsIDEyLCAxMywgMjQ0LCAyMjcsIDEyLCAxMywgMjQ0LCAyMjYsIDEyLCAxMywgMjQ0LCAyMjUsIDEyLCAxMywgCisgICAgMjQ0LCAyMjQsIDEyLCAxMywgMjQ0LCAyMjMsIDEyLCAxMywgMjQ0LCAyMjIsIDEyLCAxMywgMjQ0LCAyMjEsIDEyLCAxMywgCisgICAgMjQ0LCAyMjAsIDEyLCAxMywgMjQ0LCAyMTksIDEyLCAxMywgMjQ0LCAyMTgsIDEyLCAxMywgMjQ0LCAyMTcsIDEyLCAxMywgCisgICAgMjQ0LCAyMTYsIDEyLCAxMywgMjQ0LCAyMTUsIDEyLCAxMywgMjQ0LCAyMTQsIDEyLCAxMywgMjQ0LCAyMTMsIDEyLCAxMywgCisgICAgMjQ0LCAyMTIsIDEyLCAxMywgMjQ0LCAyMTEsIDEyLCAxMywgMjQ0LCAyMTAsIDEyLCAxMywgMjQ0LCAyMDksIDEyLCAxMywgCisgICAgMjQ0LCAyMDgsIDEyLCAxMywgMjQ0LCAyMDcsIDEyLCAxMywgMjQ0LCAyMDYsIDEyLCAxMywgMjQ0LCAyMDUsIDEyLCAxMywgCisgICAgMjQ0LCAyMDQsIDEyLCAxMywgMjQ0LCAyMDMsIDEyLCAxMywgMjQ0LCAyMDIsIDEyLCAxMywgMjQ0LCAyMDEsIDEyLCAxMywgCisgICAgMjQ0LCAyMDAsIDEyLCAxMywgMjQ0LCAxOTksIDEyLCAxMywgMjQ0LCAxOTgsIDEyLCAxMywgMjQ0LCAxOTcsIDEyLCAxMywgCisgICAgMjQzLCAyMDEsIDEyLCAxMywgMjQzLCAyMDAsIDEyLCAxMywgMjQzLCAxOTksIDEyLCAxMywgMjQzLCAxOTgsIDEyLCAxMywgCisgICAgMjQzLCAxOTcsIDEyLCAxMywgMjQzLCAxOTYsIDEyLCAxMywgMjQzLCAxOTUsIDEyLCAxMywgMjQzLCAxOTQsIDEyLCAxMywgCisgICAgMjQzLCAxOTMsIDEyLCAxMywgMjQzLCAxOTIsIDEyLCAxMywgMjQzLCAxOTEsIDEyLCAxMywgMjQzLCAxOTAsIDEyLCAxMywgCisgICAgMjQzLCAxODksIDEyLCAxMywgMjQzLCAxODgsIDEyLCAxMywgMjQzLCAxODcsIDEyLCAxMywgMjQzLCAxODYsIDEyLCAxMywgCisgICAgMjQzLCAxODUsIDEyLCAxMywgMjQzLCAxODQsIDEyLCAxMywgMjQzLCAxODMsIDEyLCAxMywgMjQzLCAxODIsIDEyLCAxMywgCisgICAgMjQzLCAxODEsIDEyLCAxMywgMjQzLCAxODAsIDEyLCAxMywgMjQzLCAxNzksIDEyLCAxMywgMjQzLCAxNzgsIDEyLCAxMywgCisgICAgMjQzLCAxNzcsIDEyLCAxMywgMjQzLCAxNzYsIDEyLCAxMywgMjQzLCAxNzUsIDEyLCAxMywgMjQzLCAxNzQsIDEyLCAxMywgCisgICAgMjQzLCAxNzMsIDEyLCAxMywgMjQzLCAxNzIsIDEyLCAxMywgMjQzLCAxNzEsIDEyLCAxMywgMjQzLCAxNzAsIDEyLCAxMywgCisgICAgMjQzLCAxNjksIDEyLCAxMywgMjQzLCAxNjgsIDEyLCAxMywgMjQzLCAxNjcsIDEyLCAxMywgMjQzLCAxNjYsIDEyLCAxMywgCisgICAgMjQzLCAxNjUsIDEyLCAxMywgMjQzLCAxNjQsIDEyLCAxMywgMjQzLCAxNjMsIDEyLCAxMywgMjQzLCAxNjIsIDEyLCAxMywgCisgICAgMjQzLCAxNjEsIDEyLCAxMywgMjQzLCAxNjAsIDEyLCAxMywgMjQzLCAxNTksIDEyLCAxMywgMjQzLCAxNTgsIDEyLCAxMywgCisgICAgMjQzLCAxNTcsIDEyLCAxMywgMjQzLCAxNTYsIDEyLCAxMywgMjQzLCAxNTUsIDEyLCAxMywgMjQzLCAxNTQsIDEyLCAxMywgCisgICAgMjQzLCAxNTMsIDEyLCAxMywgMjQzLCAxNTIsIDEyLCAxMywgMjQzLCAxNTEsIDEyLCAxMywgMjQzLCAxNTAsIDEyLCAxMywgCisgICAgMjQzLCAxNDksIDEyLCAxMywgMjQzLCAxNDgsIDEyLCAxMywgMjQzLCAxNDcsIDEyLCAxMywgMjQzLCAxNDYsIDEyLCAxMywgCisgICAgMjQzLCAxNDUsIDEyLCAxMywgMjQzLCAxNDQsIDEyLCAxMywgMjQzLCAxNDMsIDEyLCAxMywgMjQzLCAxNDIsIDEyLCAxMywgCisgICAgMjQzLCAxNDEsIDEyLCAxMywgMjQzLCAxNDAsIDEyLCAxMywgMjQzLCAxMzksIDEyLCAxMywgMjQzLCAxMzgsIDEyLCAxMywgCisgICAgMjQyLCA1OCwgMTIsIDEzLCAyNDIsIDU3LCAxMiwgMTMsIDI0MiwgNTYsIDEyLCAxMywgMjQyLCA1NSwgMTIsIDEzLCAyNDIsIAorICAgIDU0LCAxMiwgMTMsIDI0MiwgNTMsIDEyLCAxMywgMjQyLCA1MiwgMTIsIDEzLCAyNDIsIDUxLCAxMiwgMTMsIDI0MiwgNTAsIAorICAgIDEyLCAxMywgMjQwLCAxMzgsIDEyLCAxMywgMjQwLCAxMzcsIDEyLCAxMywgMjQwLCAxMzYsIDEyLCAxMywgMjQwLCAxMzUsIAorICAgIDEyLCAxMywgMjQwLCAxMzQsIDEyLCAxMywgMjQwLCAxMzMsIDEyLCAxMywgMjQwLCAxMzIsIDEyLCAxMywgMjQwLCAxMzEsIAorICAgIDEyLCAxMywgMjQwLCAxMzAsIDEyLCAxMywgMjQwLCAxMjksIDEyLCAxMywgMjQwLCAxMjgsIDEyLCAxMywgMjQwLCAxMjcsIAorICAgIDEyLCAxMywgMjQwLCAxMjYsIDEyLCAxMywgMjQwLCAxMjUsIDEyLCAxMywgMjQwLCAxMjQsIDEyLCAxMywgMjQwLCAxMjMsIAorICAgIDEyLCAxMywgMjQwLCAxMjIsIDEyLCAxMywgMjQwLCAxMjEsIDEyLCAxMywgMjQwLCAxMjAsIDEyLCAxMywgMjM1LCAyMiwgCisgICAgMTIsIDEzLCAyMzUsIDIxLCAxMiwgMTMsIDIzNSwgMjAsIDEyLCAxMywgMjM1LCAxOSwgMTIsIDEzLCAyMzUsIDE4LCAxMiwgCisgICAgMTMsIDIzNSwgMTcsIDEyLCAxMywgMjM1LCAxNiwgMTIsIDEzLCAyMzUsIDE1LCAxMiwgMTMsIDIzMywgMTQ2LCAxMiwgMTMsIAorICAgIDIzMywgMTQ1LCAxMiwgMTMsIDIzMywgMTQ0LCAxMiwgMTMsIDIzMywgMTQzLCAxMiwgMTMsIDIzMywgMTQyLCAxMiwgMTMsIAorICAgIDIzMywgMTQxLCAxMiwgMTMsIDIzMywgMTQwLCAxMiwgMTMsIDIzMywgMTM5LCAxMiwgMTMsIDIzMywgMTM4LCAxMiwgMTMsIAorICAgIDIzMywgMTM3LCAxMiwgMTMsIDIzMiwgNDksIDEyLCAxMywgMjMyLCA0OCwgMTIsIDEzLCAyMzIsIDQ3LCAxMiwgMTMsIDIzMiwgCisgICAgNDYsIDEyLCAxMywgMjMyLCA0NSwgMTIsIDEzLCAyMzIsIDQ0LCAxMiwgMTMsIDIzMiwgNDMsIDEyLCAxMywgMjMyLCA0MiwgCisgICAgMTIsIDEzLCAyMzIsIDQxLCAxMiwgMTMsIDIzMiwgNDAsIDEyLCAxMywgMjMyLCAzOSwgMTIsIDEzLCAyMzIsIDM4LCAxMiwgCisgICAgMTMsIDIzMiwgMzcsIDEyLCAxMywgMjMyLCAzNiwgMTIsIDEzLCAyMzIsIDM1LCAxMiwgMTMsIDIzMiwgMzQsIDEyLCAxMywgCisgICAgMjMyLCAzMywgMTIsIDEzLCAyMzIsIDMyLCAxMiwgMTMsIDIzMiwgMzEsIDEyLCAxMywgMjMyLCAzMCwgMTIsIDEzLCAyMzIsIAorICAgIDI5LCAxMiwgMTMsIDIzMiwgMjgsIDEyLCAxMywgMjMyLCAyNywgMTIsIDEzLCAyMzIsIDI2LCAxMiwgMTMsIDIzMiwgMjUsIAorICAgIDEyLCAxMywgMjMyLCAyNCwgMTIsIDEzLCAyMzIsIDIzLCAxMiwgMTMsIDIzMiwgMjIsIDEyLCAxMywgMjMyLCAyMSwgMTIsIAorICAgIDEzLCAyMzIsIDIwLCAxMiwgMTMsIDIzMiwgMTksIDEyLCAxMywgMjMyLCAxOCwgMTIsIDEzLCAyMzIsIDE3LCAxMiwgMTMsIAorICAgIDIzMiwgMTYsIDEyLCAxMywgMjMyLCAxNSwgMTIsIDEzLCAyMzIsIDE0LCAxMiwgMTMsIDIzMiwgMTMsIDEyLCAxMywgMjMyLCAKKyAgICAxMiwgMTIsIDEzLCAyMzIsIDExLCAxMiwgMTMsIDIzMiwgMTAsIDEyLCAxMywgMjMyLCA5LCAxMiwgMTMsIDIzMiwgOCwgMTIsIAorICAgIDEzLCAyMzIsIDcsIDEyLCAxMywgMjMyLCA2LCAxMiwgMTMsIDIzMiwgNSwgMTIsIDEzLCAyMzIsIDQsIDEyLCAxMywgMjMyLCAKKyAgICAzLCAxMiwgMTMsIDIzMiwgMiwgMTIsIDEzLCAyMzIsIDEsIDEyLCAxMywgMjMyLCAwLCAxMiwgMTMsIDIzMSwgMjU1LCAxMiwgCisgICAgMTMsIDIzMSwgMjU0LCAxMiwgMTMsIDIzMSwgMjUzLCAxMiwgMTMsIDIzMSwgMjUyLCAxMiwgMTMsIDIzMSwgMjUxLCAxMiwgCisgICAgMTMsIDIzMSwgMjUwLCAxMiwgMTMsIDIzMSwgMjQ5LCAxMiwgMTMsIDIzMSwgMjQ4LCAxMiwgMTMsIDIzMSwgMjQ3LCAxMiwgCisgICAgMTMsIDIzMSwgMjQ2LCAxMiwgMTMsIDIzMSwgMjQ1LCAxMiwgMTMsIDIzMSwgMjQ0LCAxMiwgMTMsIDIzMSwgMjQzLCAxMiwgCisgICAgMTMsIDIzMSwgMjQyLCAxMiwgMTMsIDIzMSwgMjQxLCAxMiwgMTMsIDIzMSwgMjQwLCAxMiwgMTMsIDIzMCwgMjIsIDEyLCAKKyAgICAxMywgMjMwLCAyMSwgMTIsIDEzLCAyMzAsIDIwLCAxMiwgMTMsIDIzMCwgMTksIDEyLCAxMywgMjMwLCAxOCwgMTIsIDEzLCAKKyAgICAyMzAsIDE3LCAxMiwgMTMsIDIzMCwgMTYsIDEyLCAxMywgMjMwLCAxNSwgMTIsIDEzLCAyMzAsIDE0LCAxMiwgMTMsIDIzMCwgCisgICAgMTMsIDEyLCAxMywgMjMwLCAxMiwgMTIsIDEzLCAyMzAsIDExLCAxMiwgMTMsIDIzMCwgMTAsIDEyLCAxMywgMjMwLCA5LCAKKyAgICAxMiwgMTMsIDIzMCwgOCwgMTIsIDEzLCAyMzAsIDcsIDEyLCAxMywgMjMwLCA2LCAxMiwgMTMsIDIzMCwgNSwgMTIsIDEzLCAKKyAgICAyMzAsIDQsIDEyLCAxMywgMjMwLCAzLCAxMiwgMTMsIDIzMCwgMiwgMTIsIDEzLCAyMzAsIDEsIDEyLCAxMywgMjMwLCAwLCAKKyAgICAxMiwgMTMsIDIyOSwgMjU1LCAxMiwgMTMsIDIyOSwgMjU0LCAxMiwgMTMsIDIyOSwgMjUzLCAxMiwgMTMsIDIyOSwgMjUyLCAKKyAgICAxMiwgMTMsIDIyOSwgMjUxLCAxMiwgMTMsIDIyOSwgMjUwLCAxMiwgMTMsIDIyOSwgMjQ5LCAxMiwgMTMsIDIyOSwgMjQ4LCAKKyAgICAxMiwgMTMsIDIyOSwgMjQ3LCAxMiwgMTMsIDIyOSwgMjQ2LCAxMiwgMTMsIDIyOSwgMjQ1LCAxMiwgMTMsIDIyOSwgMjQ0LCAKKyAgICAxMiwgMTMsIDIyOSwgMjQzLCAxMiwgMTMsIDIyOSwgMjQyLCAxMiwgMTMsIDIyOSwgMjQxLCAxMiwgMTMsIDIyOSwgMjQwLCAKKyAgICAxMiwgMTMsIDIyOSwgMjM5LCAxMiwgMTMsIDIyOSwgMjM4LCAxMiwgMTMsIDIyOSwgMjM3LCAxMiwgMTMsIDIyOSwgMjM2LCAKKyAgICAxMiwgMTMsIDIyOSwgMjM1LCAxMiwgMTMsIDIyOSwgMjM0LCAxMiwgMTMsIDIyOSwgMjMzLCAxMiwgMTMsIDIyOSwgMjMyLCAKKyAgICAxMiwgMTMsIDIyOSwgMjMxLCAxMiwgMTMsIDIyOSwgMjMwLCAxMiwgMTMsIDIyOCwgMTM0LCAxMiwgMTMsIDIyOCwgMTMzLCAKKyAgICAxMiwgMTMsIDIyOCwgMTMyLCAxMiwgMTMsIDIyOCwgMTMxLCAxMiwgMTMsIDIyOCwgMTMwLCAxMiwgMTMsIDIyOCwgMTI5LCAKKyAgICAxMiwgMTMsIDIyOCwgMTI4LCAxMiwgMTMsIDIyOCwgMTI3LCAxMiwgMTMsIDIyOCwgMTI2LCAxMiwgMTMsIDIyOCwgMTI1LCAKKyAgICAxMiwgMTMsIDIyOCwgMTI0LCAxMiwgMTMsIDIyOCwgMTIzLCAxMiwgMTMsIDIyOCwgMTIyLCAxMiwgMTMsIDIyOCwgMTIxLCAKKyAgICAxMiwgMTMsIDIyOCwgMTIwLCAxMiwgMTMsIDIyOCwgMTE5LCAxMiwgMTMsIDIyOCwgMTE4LCAxMiwgMTMsIDIyOCwgMTE3LCAKKyAgICAxMiwgMTMsIDIyOCwgMTE2LCAxMiwgMTMsIDIyOCwgMTE1LCAxMiwgMTMsIDIyOCwgMTE0LCAxMiwgMTMsIDIyOCwgMTEzLCAKKyAgICAxMiwgMTMsIDIyNywgMjM2LCAxMiwgMTMsIDIyNywgMjM1LCAxMiwgMTMsIDIyNywgMjM0LCAxMiwgMTMsIDIyNywgMjMzLCAKKyAgICAxMiwgMTMsIDIyNywgMjMyLCAxMiwgMTMsIDIyNywgMjMxLCAxMiwgMTMsIDIyNywgMjMwLCAxMiwgMTMsIDIyNywgMjI5LCAKKyAgICAxMiwgMTMsIDIyNywgMjI4LCAxMiwgMTMsIDIyNywgMjI3LCAxMiwgMTMsIDIyNywgMjI2LCAxMiwgMTMsIDIyNywgMjI1LCAKKyAgICAxMiwgMTMsIDIyNywgMjI0LCAxMiwgMTMsIDIyNywgMjIzLCAxMiwgMTMsIDIyNywgMjIyLCAxMiwgMTMsIDIyNywgMjIxLCAKKyAgICAxMiwgMTMsIDIyNywgMjIwLCAxMiwgMTMsIDIyNywgMjE5LCAxMiwgMTMsIDIyNywgMjE4LCAxMiwgMTMsIDIyNywgMjE3LCAKKyAgICAxMiwgMTMsIDIyNywgMjE2LCAxMiwgMTMsIDIyNywgMjE1LCAxMiwgMTMsIDIyNywgMjE0LCAxMiwgMTMsIDIyNywgMjEzLCAKKyAgICAxMiwgMTMsIDIyNywgMjEyLCAxMiwgMTMsIDIyNywgMjExLCAxMiwgMTMsIDIyNywgNzYsIDEyLCAxMywgMjI3LCA3NSwgMTIsIAorICAgIDEzLCAyMjcsIDc0LCAxMiwgMTMsIDIyNywgNzMsIDEyLCAxMywgMjI3LCA3MiwgMTIsIDEzLCAyMjcsIDcxLCAxMiwgMTMsIAorICAgIDIyNywgNzAsIDEyLCAxMywgMjI3LCA2OSwgMTIsIDEzLCAyMjcsIDY4LCAxMiwgMTMsIDIyNywgNjcsIDEyLCAxMywgMjI3LCAKKyAgICA2NiwgMTIsIDEzLCAyMjcsIDY1LCAxMiwgMTMsIDIyNywgNjQsIDEyLCAxMywgMjI3LCA2MywgMTIsIDEzLCAyMjcsIDYyLCAKKyAgICAxMiwgMTMsIDIyNywgNjEsIDEyLCAxMywgMjI3LCA2MCwgMTIsIDEzLCAyMjcsIDU5LCAxMiwgMTMsIDIyNywgNTgsIDEyLCAKKyAgICAxMywgMjI3LCA1NywgMTIsIDEzLCAyMjcsIDU2LCAxMiwgMTMsIDIyNywgNTUsIDEyLCAxMywgMjI3LCA1NCwgMTIsIDEzLCAKKyAgICAyMjcsIDUzLCAxMiwgMTMsIDIyNywgNTIsIDEyLCAxMywgMjI3LCA1MSwgMTIsIDEzLCAyMjcsIDUwLCAxMiwgMTMsIDIyNywgCisgICAgNDksIDEyLCAxMywgMjI3LCA0OCwgMTIsIDEzLCAyMjcsIDQ3LCAxMiwgMTMsIDIyNywgNDYsIDEyLCAxMywgMjI3LCA0NSwgCisgICAgMTIsIDEzLCAyMjcsIDQ0LCAxMiwgMTMsIDIyNywgNDMsIDEyLCAxMywgMjI3LCA0MiwgMTIsIDEzLCAyMjcsIDQxLCAxMiwgCisgICAgMTMsIDIyNywgNDAsIDEyLCAxMywgMjI3LCAzOSwgMTIsIDEzLCAyMjcsIDM4LCAxMiwgMTMsIDIyNywgMzcsIDEyLCAxMywgCisgICAgMjI3LCAzNiwgMTIsIDEzLCAyMjcsIDM1LCAxMiwgMTMsIDIyNywgMzQsIDEyLCAxMywgMjI3LCAzMywgMTIsIDEzLCAyMjcsIAorICAgIDMyLCAxMiwgMTMsIDIyNywgMzEsIDEyLCAxMywgMjI3LCAzMCwgMTIsIDEzLCAyMjcsIDI5LCAxMiwgMTMsIDIyNywgMjgsIAorICAgIDEyLCAxMywgMjI3LCAyNywgMTIsIDEzLCAyMjcsIDI2LCAxMiwgMTMsIDIyNywgMjUsIDEyLCAxMywgMjI3LCAyNCwgMTIsIAorICAgIDEzLCAyMjcsIDIzLCAxMiwgMTMsIDIyNywgMjIsIDEyLCAxMywgMjI3LCAyMSwgMTIsIDEzLCAyMjcsIDIwLCAxMiwgMTMsIAorICAgIDIyNywgMTksIDEyLCAxMywgMjI3LCAxOCwgMTIsIDEzLCAyMjcsIDE3LCAxMiwgMTMsIDIyNywgMTYsIDEyLCAxMywgMjI3LCAKKyAgICAxNSwgMTIsIDEzLCAyMjcsIDE0LCAxMiwgMTMsIDIyNywgMTMsIDEyLCAxMywgMjI3LCAxMiwgMTIsIDEzLCAyMjcsIDExLCAKKyAgICAxMiwgMTMsIDIyNywgMTAsIDEyLCAxMywgMjI3LCA5LCAxMiwgMTMsIDIyNywgOCwgMTIsIDEzLCAyMjcsIDcsIDEyLCAxMywgCisgICAgMjI3LCA2LCAxMiwgMTMsIDIyNywgNSwgMTIsIDEzLCAyMjcsIDQsIDEyLCAxMywgMjI3LCAzLCAxMiwgMTMsIDIyNywgMiwgCisgICAgMTIsIDEzLCAyMjYsIDEwNCwgMTIsIDEzLCAyMjYsIDEwMywgMTIsIDEzLCAyMjYsIDEwMiwgMTIsIDEzLCAyMjYsIDEwMSwgCisgICAgMTIsIDEzLCAyMjYsIDEwMCwgMTIsIDEzLCAyMjYsIDk5LCAxMiwgMTMsIDIyNiwgOTgsIDEyLCAxMywgMjI2LCA5NywgMTIsIAorICAgIDEzLCAyMjYsIDk2LCAxMiwgMTMsIDIyNiwgOTUsIDEyLCAxMywgMjI2LCA5NCwgMTIsIDEzLCAyMjYsIDkzLCAxMiwgMTMsIAorICAgIDIyNiwgOTIsIDEyLCAxMywgMjI0LCA5NSwgMTIsIDEzLCAyMjQsIDk0LCAxMiwgMTMsIDIyNCwgOTMsIDEyLCAxMywgMjI0LCAKKyAgICA5MiwgMTIsIDEzLCAyMjQsIDkxLCAxMiwgMTMsIDIyNCwgOTAsIDEyLCAxMywgMjI0LCA4OSwgMTIsIDEzLCAyMjMsIDIyMiwgCisgICAgMTIsIDEzLCAyMjMsIDIyMSwgMTIsIDEzLCAyMjMsIDIyMCwgMTIsIDEzLCAyMjMsIDIxOSwgMTIsIDEzLCAyMjMsIDIxOCwgCisgICAgMTIsIDEzLCAyMjMsIDIxNywgMTIsIDEzLCAyMjMsIDIxNiwgMTIsIDEzLCAyMjMsIDIxNSwgMTIsIDEzLCAyMjMsIDIxNCwgCisgICAgMTIsIDEzLCAyMjMsIDIxMywgMTIsIDEzLCAyMjMsIDIxMiwgMTIsIDEzLCAyMjMsIDIxMSwgMTIsIDEzLCAyMjMsIDIxMCwgCisgICAgMTIsIDEzLCAyMjMsIDIwOSwgMTIsIDEzLCAyMjMsIDIwOCwgMTIsIDEzLCAyMjMsIDIwNywgMTIsIDEzLCAyMjMsIDIwNiwgCisgICAgMTIsIDEzLCAyMjMsIDIwNSwgMTIsIDEzLCAyMjMsIDIwNCwgMTIsIDEzLCAyMjMsIDIwMywgMTIsIDEzLCAyMjMsIDIwMiwgCisgICAgMTIsIDEzLCAyMjMsIDIwMSwgMTIsIDEzLCAyMjMsIDIwMCwgMTIsIDEzLCAyMjMsIDE5OSwgMTIsIDEzLCAyMjMsIDE5OCwgCisgICAgMTIsIDEzLCAyMjMsIDE5NywgMTIsIDEzLCAyMjMsIDE5NiwgMTIsIDEzLCAyMjMsIDE5NSwgMTIsIDEzLCAyMjMsIDE5NCwgCisgICAgMTIsIDEzLCAyMjMsIDE5MywgMTIsIDEzLCAyMjMsIDE5MiwgMTIsIDEzLCAyMjMsIDE5MSwgMTIsIDEzLCAyMjMsIDE5MCwgCisgICAgMTIsIDEzLCAyMjMsIDE4OSwgMTIsIDEzLCAyMjIsIDg4LCAxMiwgMTMsIDIyMiwgODcsIDEyLCAxMywgMjIyLCA4NiwgMTIsIAorICAgIDEzLCAyMjIsIDg1LCAxMiwgMTMsIDIyMiwgODQsIDEyLCAxMywgMjIyLCA4MywgMTIsIDEzLCAyMjIsIDgyLCAxMiwgMTMsIAorICAgIDIyMiwgODEsIDEyLCAxMywgMjIyLCA4MCwgMTIsIDEzLCAyMjIsIDc5LCAxMiwgMTMsIDIyMiwgNzgsIDEyLCAxMywgMjIyLCAKKyAgICA3NywgMTIsIDEzLCAyMjIsIDc2LCAxMiwgMTMsIDIyMiwgNzUsIDEyLCAxMywgMjIyLCA3NCwgMTIsIDEzLCAyMjIsIDczLCAKKyAgICAxMiwgMTMsIDIyMiwgNzIsIDEyLCAxMywgMjIyLCA3MSwgMTIsIDEzLCAyMjIsIDcwLCAxMiwgMTMsIDIyMiwgNjksIDEyLCAKKyAgICAxMywgMjIyLCA2OCwgMTIsIDEzLCAyMjIsIDY3LCAxMiwgMTMsIDIyMiwgNjYsIDEyLCAxMywgMjIyLCA2NSwgMTIsIDEzLCAKKyAgICAyMjIsIDY0LCAxMiwgMTMsIDIyMiwgNjMsIDEyLCAxMywgMjIyLCA2MiwgMTIsIDEzLCAyMjIsIDYxLCAxMiwgMTMsIDIyMiwgCisgICAgNjAsIDEyLCAxMywgMjIyLCA1OSwgMTIsIDEzLCAyMjIsIDU4LCAxMiwgMTMsIDIyMiwgNTcsIDEyLCAxMywgMjIyLCA1NiwgCisgICAgMTIsIDEzLCAyMjIsIDU1LCAxMiwgMTMsIDIyMiwgNTQsIDEyLCAxMywgMjIyLCA1MywgMTIsIDEzLCAyMjIsIDUyLCAxMiwgCisgICAgMTMsIDIyMiwgNTEsIDEyLCAxMywgMjIyLCA1MCwgMTIsIDEzLCAyMjIsIDQ5LCAxMiwgMTMsIDIyMiwgNDgsIDEyLCAxMywgCisgICAgMjIyLCA0NywgMTIsIDEzLCAyMjIsIDQ2LCAxMiwgMTMsIDIyMiwgNDUsIDEyLCAxMywgMjIyLCA0NCwgMTIsIDEzLCAyMjIsIAorICAgIDQzLCAxMiwgMTMsIDIyMiwgNDIsIDEyLCAxMywgMjIyLCA0MSwgMTIsIDEzLCAyMjIsIDQwLCAxMiwgMTMsIDIyMiwgMzksIAorICAgIDEyLCAxMywgMjIyLCAzOCwgMTIsIDEzLCAyMjIsIDM3LCAxMiwgMTMsIDIyMiwgMzYsIDEyLCAxMywgMjIyLCAzNSwgMTIsIAorICAgIDEzLCAyMTcsIDE1MCwgMTIsIDEzLCAyMTcsIDE0OSwgMTIsIDEzLCAyMTcsIDE0OCwgMTIsIDEzLCAyMTcsIDE0NywgMTIsIAorICAgIDEzLCAyMTcsIDE0NiwgMTIsIDEzLCAyMTcsIDE0NSwgMTIsIDEzLCAyMTcsIDE0NCwgMTIsIDEzLCAyMTcsIDE0MywgMTIsIAorICAgIDEzLCAyMTcsIDE0MiwgMTIsIDEzLCAyMTcsIDE0MSwgMTIsIDEzLCAyMTcsIDE0MCwgMTIsIDEzLCAyMTcsIDEzOSwgMTIsIAorICAgIDEzLCAyMTcsIDEzOCwgMTIsIDEzLCAyMTcsIDEzNywgMTIsIDEzLCAyMTcsIDEzNiwgMTIsIDEzLCAyMTcsIDEzNSwgMTIsIAorICAgIDEzLCAyMTcsIDEzNCwgMTIsIDEzLCAyMTcsIDEzMywgMTIsIDEzLCAyMTcsIDEzMiwgMTIsIDEzLCAyMTcsIDEzMSwgMTIsIAorICAgIDEzLCAyMTcsIDEzMCwgMTIsIDEzLCAyMTcsIDEyOSwgMTIsIDEzLCAyMTcsIDEyOCwgMTIsIDEzLCAyMTcsIDEyNywgMTIsIAorICAgIDEzLCAyMTcsIDEyNiwgMTIsIDEzLCAyMTcsIDEyNSwgMTIsIDEzLCAyMTcsIDEyNCwgMTIsIDEzLCAyMTcsIDEyMywgMTIsIAorICAgIDEzLCAyMTcsIDEyMiwgMTIsIDEzLCAyMTcsIDEyMSwgMTIsIDEzLCAyMTcsIDEyMCwgMTIsIDEzLCAyMTcsIDExOSwgMTIsIAorICAgIDEzLCAyMTcsIDExOCwgMTIsIDEzLCAyMTcsIDExNywgMTIsIDEzLCAyMTcsIDExNiwgMTIsIDEzLCAyMTcsIDExNSwgMTIsIAorICAgIDEzLCAyMTcsIDExNCwgMTIsIDEzLCAyMTcsIDExMywgMTIsIDEzLCAyMTcsIDExMiwgMTIsIDEzLCAyMTcsIDExMSwgMTIsIAorICAgIDEzLCAyMTcsIDExMCwgMTIsIDEzLCAyMTcsIDEwOSwgMTIsIDEzLCAyMTcsIDEwOCwgMTIsIDEzLCAyMTcsIDEwNywgMTIsIAorICAgIDEzLCAyMTUsIDIyLCAxMiwgMTMsIDIxNSwgMjEsIDEyLCAxMywgMjE1LCAyMCwgMTIsIDEzLCAyMTUsIDE5LCAxMiwgMTMsIAorICAgIDIxNSwgMTgsIDEyLCAxMywgMjE1LCAxNywgMTIsIDEzLCAyMTUsIDE2LCAxMiwgMTMsIDIxNSwgMTUsIDEyLCAxMywgMjE1LCAKKyAgICAxNCwgMTIsIDEzLCAyMTUsIDEzLCAxMiwgMTMsIDIxNSwgMTIsIDEyLCAxMywgMjE1LCAxMSwgMTIsIDEzLCAyMTUsIDEwLCAKKyAgICAxMiwgMTMsIDIxNSwgOSwgMTIsIDEzLCAyMTUsIDgsIDEyLCAxMywgMjE1LCA3LCAxMiwgMTMsIDIxNSwgNiwgMTIsIDEzLCAKKyAgICAyMTUsIDUsIDEyLCAxMywgMjE1LCA0LCAxMiwgMTMsIDIxNSwgMywgMTIsIDEzLCAyMTUsIDIsIDEyLCAxMywgMjE1LCAxLCAKKyAgICAxMiwgMTMsIDIxNSwgMCwgMTIsIDEzLCAyMTQsIDI1NSwgMTIsIDEzLCAyMTQsIDI1NCwgMTIsIDEzLCAyMTQsIDI1MywgMTIsIAorICAgIDEzLCAyMTQsIDI1MiwgMTIsIDEzLCAyMTQsIDI1MSwgMTIsIDEzLCAyMTQsIDI1MCwgMTIsIDEzLCAyMTQsIDI0OSwgMTIsIAorICAgIDEzLCAyMTQsIDI0OCwgMTIsIDEzLCAyMTQsIDI0NywgMTIsIDEzLCAyMTQsIDI0NiwgMTIsIDEzLCAyMTQsIDI0NSwgMTIsIAorICAgIDEzLCAyMTQsIDI0NCwgMTIsIDEzLCAyMTQsIDI0MywgMTIsIDEzLCAyMTQsIDI0MiwgMTIsIDEzLCAyMTQsIDI0MSwgMTIsIAorICAgIDEzLCAyMTQsIDI0MCwgMTIsIDEzLCAyMTQsIDIzOSwgMTIsIDEzLCAyMTQsIDIzOCwgMTIsIDEzLCAyMTQsIDIzNywgMTIsIAorICAgIDEzLCAyMTQsIDIzNiwgMTIsIDEzLCAyMTQsIDIzNSwgMTIsIDEzLCAyMTQsIDIzNCwgMTIsIDEzLCAyMTQsIDIzMywgMTIsIAorICAgIDEzLCAyMTQsIDIzMiwgMTIsIDEzLCAyMTQsIDEwNCwgMTIsIDEzLCAyMTQsIDEwMywgMTIsIDEzLCAyMTQsIDEwMiwgMTIsIAorICAgIDEzLCAyMTQsIDEwMSwgMTIsIDEzLCAyMTQsIDEwMCwgMTIsIDEzLCAyMTQsIDk5LCAxMiwgMTMsIDIxNCwgOTgsIDEyLCAxMywgCisgICAgMjE0LCA5NywgMTIsIDEzLCAyMTQsIDk2LCAxMiwgMTMsIDIxNCwgOTUsIDEyLCAxMywgMjE0LCA5NCwgMTIsIDEzLCAyMTQsIAorICAgIDkzLCAxMiwgMTMsIDIxNCwgOTIsIDEyLCAxMywgMjE0LCA5MSwgMTIsIDEzLCAyMTQsIDkwLCAxMiwgMTMsIDIxNCwgODksIAorICAgIDEyLCAxMywgMjE0LCA4OCwgMTIsIDEzLCAyMTQsIDg3LCAxMiwgMTMsIDIxNCwgODYsIDEyLCAxMywgMjE0LCA4NSwgMTIsIAorICAgIDEzLCAyMTQsIDg0LCAxMiwgMTMsIDIxNCwgODMsIDEyLCAxMywgMjE0LCA4MiwgMTIsIDEzLCAyMTQsIDgxLCAxMiwgMTMsIAorICAgIDIxNCwgODAsIDEyLCAxMywgMjE0LCA3OSwgMTIsIDEzLCAyMTQsIDc4LCAxMiwgMTMsIDIxNCwgNzcsIDEyLCAxMywgMjE0LCAKKyAgICA3NiwgMTIsIDEzLCAyMTQsIDc1LCAxMiwgMTMsIDIxNCwgNzQsIDEyLCAxMywgMjE0LCA3MywgMTIsIDEzLCAyMTQsIDcyLCAKKyAgICAxMiwgMTMsIDIxNCwgNzEsIDEyLCAxMywgMjE0LCA3MCwgMTIsIDEzLCAyMTQsIDY5LCAxMiwgMTMsIDIxNCwgNjgsIDEyLCAKKyAgICAxMywgMjE0LCA2NywgMTIsIDEzLCAyMTQsIDY2LCAxMiwgMTMsIDIxNCwgNjUsIDEyLCAxMywgMjE0LCA2NCwgMTIsIDEzLCAKKyAgICAyMTQsIDYzLCAxMiwgMTMsIDIxNCwgNjIsIDEyLCAxMywgMjE0LCA2MSwgMTIsIDEzLCAyMTQsIDYwLCAxMiwgMTMsIDIxNCwgCisgICAgNTksIDEyLCAxMywgMjE0LCA1OCwgMTIsIDEzLCAyMTQsIDU3LCAxMiwgMTMsIDIxNCwgNTYsIDEyLCAxMywgMjE0LCA1NSwgCisgICAgMTIsIDEzLCAyMTQsIDU0LCAxMiwgMTMsIDIxNCwgNTMsIDEyLCAxMywgMjE0LCA1MiwgMTIsIDEzLCAyMTQsIDUxLCAxMiwgCisgICAgMTMsIDIxNCwgNTAsIDEyLCAxMywgMjE0LCA0OSwgMTIsIDEzLCAyMTQsIDQ4LCAxMiwgMTMsIDIxNCwgNDcsIDEyLCAxMywgCisgICAgMjE0LCA0NiwgMTIsIDEzLCAyMTQsIDQ1LCAxMiwgMTMsIDIxNCwgNDQsIDEyLCAxMywgMjE0LCA0MywgMTIsIDEzLCAyMTQsIAorICAgIDQyLCAxMiwgMTMsIDIxNCwgNDEsIDEyLCAxMywgMjE0LCA0MCwgMTIsIDEzLCAyMTQsIDM5LCAxMiwgMTMsIDIxNCwgMzgsIAorICAgIDEyLCAxMywgMjE0LCAzNywgMTIsIDEzLCAyMTQsIDM2LCAxMiwgMTMsIDIxNCwgMzUsIDEyLCAxMywgMjE0LCAzNCwgMTIsIAorICAgIDEzLCAyMTQsIDMzLCAxMiwgMTMsIDIxNCwgMzIsIDEyLCAxMywgMjE0LCAzMSwgMTIsIDEzLCAyMTQsIDMwLCAxMiwgMTMsIAorICAgIDIxNCwgMjksIDEyLCAxMywgMjE0LCAyOCwgMTIsIDEzLCAyMTIsIDk3LCAxMiwgMTMsIDIxMiwgOTYsIDEyLCAxMywgMjEyLCAKKyAgICA5NSwgMTIsIDEzLCAyMTIsIDk0LCAxMiwgMTMsIDIxMiwgOTMsIDEyLCAxMywgMjEyLCA5MiwgMTIsIDEzLCAyMTIsIDkxLCAKKyAgICAxMiwgMTMsIDIxMiwgOTAsIDEyLCAxMywgMjEyLCA4OSwgMTIsIDEzLCAyMTIsIDg4LCAxMiwgMTMsIDIxMiwgODcsIDEyLCAKKyAgICAxMywgMjEyLCA4NiwgMTIsIDEzLCAyMTIsIDg1LCAxMiwgMTMsIDIxMiwgODQsIDEyLCAxMywgMjEyLCA4MywgMTIsIDEzLCAKKyAgICAyMTIsIDgyLCAxMiwgMTMsIDIxMiwgODEsIDEyLCAxMywgMjEyLCA4MCwgMTIsIDEzLCAyMTIsIDc5LCAxMiwgMTMsIDIxMiwgCisgICAgNzgsIDEyLCAxMywgMjEyLCA3NywgMTIsIDEzLCAyMTIsIDc2LCAxMiwgMTMsIDIxMiwgNzUsIDEyLCAxMywgMjEyLCA3NCwgCisgICAgMTIsIDEzLCAyMTIsIDczLCAxMiwgMTMsIDIxMiwgNzIsIDEyLCAxMywgMjEyLCA3MSwgMTIsIDEzLCAyMTIsIDcwLCAxMiwgCisgICAgMTMsIDIxMiwgNjksIDEyLCAxMywgMjEyLCA2OCwgMTIsIDEzLCAyMTIsIDY3LCAxMiwgMTMsIDIxMiwgNjYsIDEyLCAxMywgCisgICAgMjExLCAxNzcsIDEyLCAxMywgMjExLCAxNzYsIDEyLCAxMywgMjExLCAxNzUsIDEyLCAxMywgMjExLCAxNzQsIDEyLCAxMywgCisgICAgMjExLCAxNzMsIDEyLCAxMywgMjExLCAxNzIsIDEyLCAxMywgMjExLCAxNzEsIDEyLCAxMywgMjExLCAxNzAsIDEyLCAxMywgCisgICAgMjExLCAxNjksIDEyLCAxMywgMjExLCAxNjgsIDEyLCAxMywgMjExLCAxNjcsIDEyLCAxMywgMjExLCAxNjYsIDEyLCAxMywgCisgICAgMjExLCAxMTUsIDEyLCAxMywgMjExLCAxMTQsIDEyLCAxMywgMjExLCAxMTMsIDEyLCAxMywgMjExLCAxMTIsIDEyLCAxMywgCisgICAgMjExLCAxMTEsIDEyLCAxMywgMjExLCAxMTAsIDEyLCAxMywgMjExLCAxMDksIDEyLCAxMywgMjExLCAxMDgsIDEyLCAxMywgCisgICAgMjExLCAxMDcsIDEyLCAxMywgMjEwLCAxNTgsIDEyLCAxMywgMjEwLCAxNTcsIDEyLCAxMywgMjEwLCAxNTYsIDEyLCAxMywgCisgICAgMjEwLCAxNTUsIDEyLCAxMywgMjEwLCAxNTQsIDEyLCAxMywgMjEwLCAxNTMsIDEyLCAxMywgMjEwLCAxNTIsIDEyLCAxMywgCisgICAgMjEwLCAxNTEsIDEyLCAxMywgMjEwLCAxNTAsIDEyLCAxMywgMjEwLCAxNDksIDEyLCAxMywgMjEwLCAxNDgsIDEyLCAxMywgCisgICAgMjEwLCAxNDcsIDEyLCAxMywgMjEwLCAxNDYsIDEyLCAxMywgMjEwLCAxNDUsIDEyLCAxMywgMjEwLCAxNDQsIDEyLCAxMywgCisgICAgMjEwLCAxNDMsIDEyLCAxMywgMjEwLCAxNDIsIDEyLCAxMywgMjEwLCAxNDEsIDEyLCAxMywgMjEwLCAxNDAsIDEyLCAxMywgCisgICAgMjEwLCAxMzksIDEyLCAxMywgMjEwLCAxMzgsIDEyLCAxMywgMjEwLCAxMzcsIDEyLCAxMywgMjEwLCAxMzYsIDEyLCAxMywgCisgICAgMjEwLCAxMzUsIDEyLCAxMywgMjEwLCAxMzQsIDEyLCAxMywgMjEwLCAxMzMsIDEyLCAxMywgMjEwLCAxMzIsIDEyLCAxMywgCisgICAgMjEwLCAxMzEsIDEyLCAxMywgMjEwLCAxMzAsIDEyLCAxMywgMjEwLCAxMjksIDEyLCAxMywgMjEwLCAxMjgsIDEyLCAxMywgCisgICAgMjEwLCAxMjcsIDEyLCAxMywgMjEwLCAxMjYsIDEyLCAxMywgMjEwLCAxMjUsIDEyLCAxMywgMjEwLCAxMjQsIDEyLCAxMywgCisgICAgMjEwLCAxMjMsIDEyLCAxMywgMjEwLCAxMjIsIDEyLCAxMywgMjEwLCAxMjEsIDEyLCAxMywgMjEwLCAxMjAsIDEyLCAxMywgCisgICAgMjEwLCAxMTksIDEyLCAxMywgMjEwLCAxMTgsIDEyLCAxMywgMjU1LCA3MiwgMTIsIDEzLCAyNTUsIDcxLCAxMiwgMTMsIAorICAgIDI1NSwgNzAsIDEyLCAxMywgMjU1LCA2OSwgMTIsIDEzLCAyNTUsIDY4LCAxMiwgMTMsIDI1NSwgNjcsIDEyLCAxMywgMjU1LCAKKyAgICA2NiwgMTIsIDEzLCAyNTUsIDY1LCAxMiwgMTMsIDI1NSwgNjQsIDEyLCAxMywgMjU1LCA2MywgMTIsIDEzLCAyNTUsIDYyLCAKKyAgICAxMiwgMTMsIDI1NSwgNjEsIDEyLCAxMywgMjU1LCA2MCwgMTIsIDEzLCAyNTUsIDU5LCAxMiwgMTMsIDI1NSwgNTgsIDEyLCAKKyAgICAxMywgMjU1LCA1NywgMTIsIDEzLCAyNTUsIDU2LCAxMiwgMTMsIDI1NSwgNTUsIDEyLCAxMywgMjU1LCA1NCwgMTIsIDEzLCAKKyAgICAyNTUsIDUzLCAxMiwgMTMsIDI1NSwgNTIsIDEyLCAxMywgMjU1LCA1MSwgMTIsIDEzLCAyNTUsIDUwLCAxMiwgMTMsIDI1NSwgCisgICAgNDksIDEyLCAxMywgMjU1LCA0OCwgMTIsIDEzLCAyNTUsIDQ3LCAxMiwgMTMsIDI1NSwgNDYsIDEyLCAxMywgMjU1LCA0NSwgCisgICAgMTIsIDEzLCAyNTUsIDQ0LCAxMiwgMTMsIDI1NSwgNDMsIDEyLCAxMywgMjU1LCA0MiwgMTIsIDEzLCAyNTUsIDQxLCAxMiwgCisgICAgMTMsIDI1NSwgNDAsIDEyLCAxMywgMjU1LCAzOSwgMjAsIDEsIDE2NywgMjI5LCAxMiwgMjMxLCAxNiwgMjAsIDEsIDE2NywgCisgICAgMjQzLCA3MCwgMjQ0LCAzNiwgMjAsIDEsIDE2NywgMjI0LCAyNTEsIDIzMSwgMTcsIDIyNSwgNTcsIDIwLCAxLCAxNjcsIAorICAgIDIyNCwgMjUxLCAyMzEsIDE3LCAyMjUsIDU4LCAyMCwgMSwgMTY3LCAyMjksIDIyNiwgMjMxLCAxNiwgMjAsIDEsIDE2NywgCisgICAgMjE5LCAyMjEsIDIwLCAxLCAxNjcsIDIxNiwgNjYsIDIzMSwgMTYsIDIwLCAxLCAxNjcsIDIyNywgMTE4LCAyMzEsIDE2LCAKKyAgICAyMCwgMSwgMTY3LCAyMjAsIDE5LCAyMjYsIDkwLCAyMjgsIDE2OSwgMjAsIDEsIDE2NywgMjI0LCAyNTEsIDIyNiwgOTAsIAorICAgIDIyOCwgMTcwLCAyMjUsIDU3LCAyMCwgMSwgMTY3LCAyMjQsIDI1MSwgMjI2LCA5MCwgMjI4LCAxNzAsIDIyNSwgNTgsIDIwLCAKKyAgICAxLCAxNjcsIDIzMSwgMjE4LCAyMCwgMSwgMTY3LCAyMTUsIDExOSwgMjMxLCAyMTksIDIwLCAxLCAxNjcsIDIyOSwgNzEsIAorICAgIDIwLCAxLCAxNjcsIDIzMSwgMjE1LCAyMCwgMSwgMTY3LCAyMzEsIDE3NiwgMjAsIDEsIDE2NywgMjMwLCA0OCwgMjAsIDEsIAorICAgIDE2NywgMjIwLCAxMjQsIDIwLCAxLCAxNjcsIDIyNywgMjQxLCAyMCwgMSwgMTY3LCAyMzQsIDE0OSwgMjAsIDEsIDE2NywgCisgICAgMjI4LCAxMzgsIDIwLCAxLCAxNjcsIDIxOCwgNCwgMjAsIDEsIDE2NywgMjI5LCAxMSwgMjAsIDEsIDE2NywgMjMzLCA4NywgCisgICAgMjAsIDEsIDE2NywgMjMzLCAxMiwgMjMzLCAxODksIDIwLCAxLCAxNjcsIDIyNywgMjQ4LCAyMzEsIDI0LCAyMCwgMSwgMTY3LCAKKyAgICAyMzEsIDIyMiwgMjAsIDEsIDE2NywgMjI1LCAyNDYsIDIwLCAxLCAxNjcsIDI0MiwgMjMxLCAyMCwgMSwgMTY3LCAyMjYsIAorICAgIDUwLCAyMCwgMSwgMTY3LCAyMzAsIDE1MSwgMjI5LCA0NSwgMjAsIDEsIDE2NywgMjI3LCA5OSwgMjMxLCAyNywgMjAsIDEsIAorICAgIDE2NywgMTA0LCAyMTAsIDE4OCwgMjI5LCAyMjAsIDIwLCAxLCAxNjcsIDI0MiwgMjMyLCAyMCwgMSwgMTY3LCAyMjcsIDI0OCwgCisgICAgMjI3LCAyNDksIDIwLCAxLCAxNjcsIDIxOSwgMTI4LCAyMCwgMSwgMTY3LCAyMzEsIDksIDIwLCAxLCAxNjcsIDIzMSwgMzAsIAorICAgIDIwLCAxLCAxNjcsIDIzMCwgMTMwLCAyMCwgMSwgMTY3LCAyMzQsIDI0OSwgMjAsIDEsIDE2NywgMjI2LCA5MCwgMjMzLCA0NywgCisgICAgMjAsIDEsIDE2NywgMjI5LCAxNDksIDIzMywgNDcsIDIwLCAxLCAxNjcsIDIyNSwgMTU4LCAyMCwgMSwgMTY3LCAyMzEsIAorICAgIDIxNiwgMjAsIDEsIDE2NywgMjI4LCAyMDcsIDIwLCAxLCAxNjcsIDIyNCwgMTM0LCAyMCwgMSwgMTY3LCAyMTUsIDExNiwgCisgICAgMjAsIDEsIDE2NywgMjMyLCA5NCwgMjAsIDEsIDE2NywgMjE5LCA0MSwgMjAsIDEsIDE2NywgMjE2LCAyMTYsIDIwLCAxLCAKKyAgICAxNjcsIDIzMSwgMjEzLCAyMCwgMSwgMTY3LCAyMzQsIDE1NiwgMjAsIDEsIDE2NywgMjI5LCAxNDUsIDIwLCAxLCAxNjcsIAorICAgIDIzMywgMjAxLCAyMCwgMSwgMTY3LCAyMzAsIDEzMSwgMjAsIDEsIDE2NywgMjE5LCAyMTgsIDIwLCAxLCAxNjcsIDIzMiwgCisgICAgMTM4LCAyMCwgMSwgMTY3LCAyNDQsIDkzLCAyMCwgMSwgMTY3LCAyMjIsIDE5OSwgMjAsIDEsIDE2NywgMjMzLCAyNDEsIDIwLCAKKyAgICAxLCAxNjcsIDIxOSwgMzcsIDIwLCAxLCAxNjcsIDIzMSwgMTczLCAyMjUsIDk5LCAyMCwgMSwgMTY3LCAyMjAsIDEyLCAyMCwgCisgICAgMSwgMTY3LCAyMjcsIDI0NywgMjAsIDEsIDE2NywgMjE5LCAyNTMsIDIyOCwgMiwgMjEwLCAxOTYsIDIwLCAxLCAxNjcsIAorICAgIDIyNywgMTM4LCAyMzAsIDE0OCwgMjAsIDEsIDE2NywgMjI2LCA4NSwgMjAsIDEsIDE2NywgMjI4LCAxMzksIDIwLCAxLCAKKyAgICAxNjcsIDIxNCwgMTcwLCAyMCwgMSwgMTY3LCAyMjksIDQ4LCAyMCwgMSwgMTY3LCAyMzEsIDIxMiwgMjAsIDEsIDE2NywgCisgICAgMjI4LCAxODEsIDIwLCAxLCAxNjcsIDIzMSwgMTE5LCAyMCwgMSwgMTY3LCAyMjcsIDE1MSwgMjAsIDEsIDE2NywgMjE2LCAKKyAgICAyMjAsIDIwLCAxLCAxNjcsIDIxOSwgMzQsIDIwLCAxLCAxNjcsIDIyNiwgODYsIDIwLCAxLCAxNjcsIDIyOCwgNiwgMjAsIDEsIAorICAgIDE2NywgMjMxLCAyMjAsIDIwLCAxLCAxNjcsIDIyNywgMTQ4LCAyMCwgMSwgMTY3LCAyMzQsIDIxNiwgMjAsIDEsIDE2NywgCisgICAgMjI4LCA5LCAyMCwgMSwgMTY3LCAyMTMsIDI1MCwgMjAsIDEsIDE2NywgMjMyLCA5OCwgMjAsIDEsIDE2NywgMjI5LCA5OCwgCisgICAgMjAsIDEsIDE2NywgMjI5LCAxOTYsIDIwLCAxLCAxNjcsIDIzMSwgMTE4LCAyMCwgMSwgMjI1LCAxMzgsIDIyOCwgNCwgMjAsIAorICAgIDEsIDIyNSwgMTM4LCAyMTUsIDExOSwgMjMxLCAyMTcsIDIwLCAxLCAyMjUsIDEzOCwgMjE5LCAxODUsIDIwLCAxLCAyMjUsIAorICAgIDEzOCwgMjIwLCAxMjgsIDIxNSwgMTE4LCAyMCwgMSwgMjI1LCAxMzgsIDIzMiwgMTQwLCAyMjcsIDI0NCwgMjAsIDEsIDIyNSwgCisgICAgMTM4LCAyMzEsIDEyNSwgMjMxLCAyMjEsIDIwLCAxLCAyMjUsIDEzOCwgMjM0LCA4NywgMjAsIDEsIDIyNSwgMTM4LCAyMTEsIAorICAgIDE1LCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgMTIwLCAyMCwgMSwgMjI1LCAxMzgsIDIzNCwgMjM3LCAyMCwgMSwgMjI1LCAKKyAgICAxMzgsIDIyNSwgMjA4LCAyMCwgMSwgMjI1LCAxMzgsIDIxMSwgODksIDIzMywgNDcsIDIwLCAxLCAyMjUsIDEzOCwgMjMzLCAKKyAgICAxMDMsIDIyOCwgMiwgMjI3LCAxNjAsIDIwLCAxLCAyMjUsIDEzOCwgMjI3LCAyNDIsIDIyMCwgMzgsIDIwLCAxLCAyMjUsIAorICAgIDEzOCwgMjI5LCAxMTYsIDIyOCwgMTg0LCAyMCwgMSwgMjI1LCAxMzgsIDI0MiwgMjI5LCAyMCwgMSwgMjI1LCAxMzgsIDIyNSwgCisgICAgNDksIDIwLCAxLCAyMjUsIDEzOCwgMjE1LCAxMTksIDIyOCwgMCwgMjAsIDEsIDIyNSwgMTM4LCAyMjAsIDQzLCAyMjgsIAorICAgIDE3OSwgMjAsIDEsIDIyNSwgMTM4LCAyMjAsIDM5LCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgMTcsIDIxNiwgMjE5LCAyMCwgMSwgCisgICAgMjI1LCAxMzgsIDIzMSwgMTA3LCAyMzEsIDEyMSwgMjAsIDEsIDIyNSwgMTM4LCAyMjcsIDE0OSwgMjI3LCAyNDQsIDIwLCAxLCAKKyAgICAyMjUsIDEzOCwgMjM0LCAxNDUsIDIwLCAxLCAyMjUsIDEzOCwgMjQyLCAyMzAsIDIwLCAxLCAyMjUsIDEzOCwgMjM0LCAxNDEsIAorICAgIDIwLCAxLCAyMjUsIDEzOCwgMjMzLCAxMjksIDIwLCAxLCAyMjUsIDEzOCwgMjI1LCAyNDksIDIwLCAxLCAyMjUsIDEzOCwgCisgICAgMjEzLCAxODIsIDIwLCAxLCAyMjUsIDEzOCwgMjI5LCAxMywgMjMwLCA0NiwgMjAsIDEsIDIyNSwgMTM4LCAyMjksIDQ3LCAKKyAgICAyMzEsIDEwMywgMjAsIDEsIDIyNSwgMTM4LCAyMTEsIDE5MywgMjAsIDEsIDIyNSwgMTM4LCAyMjIsIDExLCAyMCwgMSwgCisgICAgMjI1LCAxMzgsIDIxNywgOTcsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAyOSwgMjAsIDEsIDIyNSwgMTM4LCAyMjksIDMyLCAKKyAgICAyMCwgMSwgMjI1LCAxMzgsIDIyOSwgMzMsIDIzMywgODQsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAxOSwgMjAsIDEsIDIyNSwgCisgICAgMTM4LCAyMTgsIDUyLCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgMTExLCAyMCwgMSwgMjI1LCAxMzgsIDIzMCwgMTMzLCAyMCwgCisgICAgMSwgMjI1LCAxMzgsIDIyNywgMTYzLCAyMCwgMSwgMjI1LCAxMzgsIDIyNCwgMTM4LCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgCisgICAgMjgsIDIyOSwgNDksIDIwLCAxLCAyMjUsIDEzOCwgMjQ0LCAxMjYsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCA5OCwgMjAsIDEsIAorICAgIDIyNSwgMTM4LCAyNDQsIDE0NywgMjAsIDEsIDIyNSwgMTM4LCAyMzQsIDE1MywgMjAsIDEsIDIyNSwgMTM4LCAyMzEsIDIzOSwgCisgICAgMjI4LCAxNzMsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAyMzksIDIyOCwgMTQ5LCAyMCwgMSwgMjI1LCAxMzgsIDIzMywgMTEsIAorICAgIDIwLCAxLCAyMjUsIDEzOCwgMjI5LCA1NSwgMjAsIDEsIDIyNSwgMTM4LCAyMjgsIDExLCAyMCwgMSwgMjI1LCAxMzgsIDE4NCwgCisgICAgMjAsIDEsIDIyNSwgMTM4LCAyMzQsIDc0LCAyMCwgMSwgMjI1LCAxMzgsIDIyOSwgMSwgMjAsIDEsIDEzNywgMjI5LCAxMiwgCisgICAgMjMxLCAyMTksIDIwLCAxLCAxMzcsIDIyNywgMTE3LCAyMCwgMSwgMTM3LCAyMTAsIDE5NiwgMjAsIDEsIDEzNywgMjEyLCAKKyAgICA1MywgMjAsIDEsIDEzNywgMjI5LCA0OCwgMjAsIDEsIDEzNywgMjI5LCAxMzcsIDIwLCAxLCAxMzcsIDIyOSwgMTksIDIwLCAKKyAgICAxLCAxMzcsIDI0MiwgMjM5LCAyMCwgMSwgMTM3LCAyMzEsIDExNSwgMjAsIDEsIDEzNywgMjQzLCA3NywgMjAsIDEsIDEzNywgCisgICAgMjI3LCAxNDAsIDIzMCwgMTcwLCAyMzEsIDMxLCAyMCwgMSwgMTM3LCAyMjcsIDI0MCwgMjMxLCAxMDYsIDIwLCAxLCAxMzcsIAorICAgIDIzMSwgMTEyLCAyMCwgMSwgMTM3LCAyMjUsIDU1LCAyMCwgMSwgMTM3LCAyMjksIDEyMiwgMjAsIDEsIDEzNywgMjMxLCAKKyAgICAxMjMsIDI1MSwgMjksIDIwLCAxLCAxMzcsIDIzNCwgMTQzLCAyMCwgMSwgMTM3LCAyNDIsIDI0MCwgMjAsIDEsIDEzNywgCisgICAgMjM0LCAxNTAsIDIwLCAxLCAxMzcsIDIxMCwgMjEzLCAyMzAsIDc2LCAyMCwgMSwgMTM3LCAyMjcsIDExMSwgMjAsIDEsIAorICAgIDEzNywgMjMxLCAxMDAsIDIwLCAxLCAxMzcsIDIyOCwgMTAsIDIwLCAxLCAxMzcsIDIzMSwgMTA2LCAyMCwgMSwgMTM3LCAKKyAgICAyMTEsIDE2LCAyMCwgMSwgMTM3LCAyMzMsIDI0OSwgMjAsIDEsIDEzNywgMjM1LCAxMCwgMjAsIDEsIDEzNywgMjIwLCAxMjMsIAorICAgIDIwLCAxLCAxMzcsIDIyOSwgMTMxLCAyMCwgMSwgMTM3LCAyMTcsIDk1LCAyMCwgMSwgMTM3LCAyMjgsIDE1MywgMjAsIDEsIAorICAgIDEzNywgMjE2LCA2NiwgMjEwLCAxOTgsIDIwLCAxLCAxMzcsIDIxOCwgNzksIDIwLCAxLCAxMzcsIDIyOSwgMzksIDIyNywgCisgICAgMTYwLCAyMCwgMSwgMTM3LCAyMTMsIDE4MSwgMjAsIDEsIDEzNywgMjI5LCAxOTksIDIwLCAxLCAxMzcsIDIzMSwgMjM5LCAKKyAgICAyMzQsIDE1MiwgMjAsIDEsIDEzNywgMjI3LCAyNDksIDIwLCAxLCAxMzcsIDIyOSwgMzQsIDIwLCAxLCAxMzcsIDIzMywgODgsIAorICAgIDIwLCAxLCAxMzcsIDIzMSwgMTA4LCAyMCwgMSwgMTM3LCAyMzEsIDgsIDIwLCAxLCAxMzcsIDIyNywgMjQzLCAyMCwgMSwgCisgICAgMTM3LCAyMTYsIDIxNSwgMjAsIDEsIDEzNywgMjI5LCAzNiwgMjAsIDEsIDEzNywgMjQzLCAyMzMsIDIwLCAxLCAxMzcsIAorICAgIDIyOSwgMTM2LCAyMCwgMSwgMTM3LCAyMjgsIDEyLCAyMCwgMSwgMTM3LCAyMjgsIDgsIDIwLCAxLCAxMzcsIDI1MSwgMTA3LCAKKyAgICAyMCwgMSwgMTM3LCAyMTMsIDE4MywgMjAsIDEsIDEzNywgMjMxLCAxMTMsIDIwLCAxLCAxMzcsIDIyMiwgMTQwLCAyMCwgMSwgCisgICAgMTM3LCAyMjgsIDE4MywgMjAsIDEsIDEzNywgMjMzLCAxMDIsIDIwLCAxLCAxMzcsIDIxNiwgNjQsIDIwLCAxLCAxMzcsIAorICAgIDIyNywgMjUwLCAyMjksIDEsIDIwLCAxLCAxMzcsIDIyOCwgMTc1LCAyMCwgMSwgMTM3LCAyMzQsIDE1NiwgMjAsIDEsIDEzNywgCisgICAgMjI5LCA0MCwgMjAsIDEsIDEzNywgMjMxLCAyMTIsIDIwLCAxLCAxMzcsIDIzMSwgMTAxLCAyMCwgMSwgMTM3LCAyMzIsIDk4LCAKKyAgICAyMCwgMSwgMTM3LCAyMzMsIDE4OSwgMjAsIDEsIDEzNywgMjI4LCAxODEsIDIwLCAxLCAxMzcsIDIyOSwgMSwgMjAsIDEsIAorICAgIDEzNywgMjExLCAxODQsIDIwLCAxLCAxMzcsIDIyOSwgMzcsIDIwLCAxLCAxMzcsIDIyNywgMjUzLCAyMCwgMSwgMTM3LCAKKyAgICAyMjcsIDI0NSwgMjAsIDEsIDEzNywgMjMzLCAyMDMsIDIyOCwgMTM5LCAyMCwgMSwgMTM3LCAyMjcsIDI1MSwgMjAsIDEsIAorICAgIDEzNywgMjI5LCAxNDQsIDIwLCAxLCAxMzcsIDIzMSwgMjM5LCAyMjgsIDAsIDIwLCAxLCAxMzcsIDIxMSwgMTAzLCAyMCwgMSwgCisgICAgMTM3LCAyMjksIDE0MywgMjAsIDEsIDEzNywgMjE5LCAyMjAsIDIwLCAxLCAxMzcsIDIyMCwgMTI2LCAyMCwgMSwgMTM3LCAKKyAgICAyMzEsIDEwOSwgMjAsIDEsIDEzNywgMjMxLCAyMTksIDIwLCAxLCAxMzcsIDIzMSwgMTE5LCAyMCwgMSwgMTM3LCAyMzQsIAorICAgIDE0NCwgMjAsIDEsIDEzNywgMjMxLCAxMTAsIDIwLCAxLCAxMzcsIDIzNCwgMTQ4LCAyMCwgMSwgMTM3LCAyMzEsIDEyMywgCisgICAgMjI1LCAxMDMsIDIwLCAxLCAxMzcsIDIxMCwgMTc5LCAyMCwgMSwgMTM3LCAyMjgsIDE3MSwgMjAsIDEsIDEzNywgMjMwLCAKKyAgICAyMjAsIDIwLCAxLCAxMzcsIDIzMCwgMTAwLCAyMCwgMSwgMTM3LCAyMjAsIDE1LCAyMCwgMSwgMTM3LCAyMzQsIDE2NiwgCisgICAgMjMzLCA3MCwgMjAsIDEsIDEzNywgMjM0LCAxNjYsIDI0NCwgMTYwLCAyMCwgMSwgMTM3LCAyMjksIDY5LCAyMCwgMSwgMTM3LCAKKyAgICAyMjksIDE5NiwgMjAsIDEsIDEzNywgMjMyLCAyMDAsIDIwLCAxLCAxMzcsIDIyNSwgNjUsIDIwLCAxLCAxMzcsIDIyNSwgCisgICAgMTk5LCAyMCwgMSwgMTM3LCAyMTYsIDIzMCwgMjAsIDEsIDEwNywgMjMxLCA5OSwgMjAsIDEsIDEwNywgMjEyLCA1MSwgMjAsIAorICAgIDEsIDEwNywgMjI4LCAxNjksIDIwLCAxLCAxMDcsIDIzMSwgMTYsIDIwLCAxLCAxMDcsIDIyOCwgMTY3LCAyMCwgMSwgMTA3LCAKKyAgICAyMzIsIDIzNSwgMjAsIDEsIDEwNywgMjI4LCAxNzIsIDIwLCAxLCAxMDcsIDIyOCwgNywgMjAsIDEsIDEwNywgMjI5LCA1NCwgCisgICAgMjAsIDEsIDEwNywgMjI3LCAxNjAsIDIwLCAxLCAxMDcsIDIxMSwgMTk0LCAyMCwgMSwgMTA3LCAyMjksIDksIDIwLCAxLCAKKyAgICAxMDcsIDIyMCwgNjEsIDIwLCAxLCAxMDcsIDIyOSwgMjAsIDIwLCAxLCAxMDcsIDIzNCwgMTUxLCAyMCwgMSwgMTA3LCAyMTYsIAorICAgIDIxNywgMjAsIDEsIDEwNywgMjIwLCA0MSwgMjAsIDEsIDEwNywgMjI4LCAxODAsIDIwLCAxLCAxMDcsIDIxOCwgNTIsIDIwLCAKKyAgICAxLCAxMDcsIDIzNCwgMTU2LCAyMCwgMSwgMTA3LCAyMTEsIDkxLCAyMCwgMSwgMTA3LCAyMzMsIDIwNCwgMjAsIDEsIDEwNywgCisgICAgMjIxLCAyMzQsIDIwLCAxLCAxMDcsIDIzMSwgMjEsIDIwLCAxLCAxMDcsIDIyOSwgMTM1LCAyMCwgMSwgMTA3LCAyMzEsIAorICAgIDE4OCwgMjAsIDEsIDEwNywgMjMxLCAyNywgMjAsIDEsIDEwNywgMjIwLCAxMjUsIDIwLCAxLCAxMDcsIDIxMSwgMzksIDIwLCAKKyAgICAxLCAxMDcsIDIyOCwgMTc0LCAyMCwgMSwgMTA3LCAyMzQsIDE0NywgMjMxLCAxMDIsIDIwLCAxLCAxMDcsIDIyOSwgMTYsIAorICAgIDIwLCAxLCAxMDcsIDIxNSwgMTE4LCAyMCwgMSwgMTA3LCAyNDIsIDI0OCwgMjAsIDEsIDEwNywgMjI5LCA2LCAyMCwgMSwgCisgICAgMTA3LCAyNDQsIDEyNywgMjAsIDEsIDEwNywgMjI5LCAxMzksIDIwLCAxLCAxMDcsIDIzMSwgMCwgMjAsIDEsIDEwNywgMjMzLCAKKyAgICA1LCAyMCwgMSwgMTA3LCAyMjksIDEyMSwgMjAsIDEsIDEwNywgMjMwLCAxNDcsIDIwLCAxLCAxMDcsIDIzMSwgNCwgMjAsIDEsIAorICAgIDEwNywgMjI0LCAxMTgsIDIwLCAxLCAxMDcsIDIzMSwgMiwgMjAsIDEsIDEwNywgMjMxLCAxOCwgMjAsIDEsIDEwNywgMjMyLCAKKyAgICA4NCwgMjAsIDEsIDEwNywgMjI3LCAyNTUsIDIwLCAxLCAxMDcsIDIzMSwgMTIyLCAyMCwgMSwgMTA3LCAyMzMsIDE4MCwgMjAsIAorICAgIDEsIDEwNywgMjI3LCAxNTEsIDIwLCAxLCAxMDcsIDIxNiwgMjIwLCAyMCwgMSwgMTA3LCAyMTksIDM0LCAyMCwgMSwgMTA3LCAKKyAgICAyMTAsIDE3OSwgMjAsIDEsIDEwNywgMjM0LCAxNDgsIDIwLCAxLCAxMDcsIDIyMywgMTcwLCAyMCwgMSwgMTA3LCAyMTcsIAorICAgIDEwLCAyMCwgMSwgMTA3LCAyMjksIDE3LCAyMCwgMSwgMTA3LCAyMzEsIDIzLCAyMCwgMSwgMTA3LCAyMjcsIDI1NCwgMjAsIAorICAgIDEsIDEwNywgMjM0LCAxNDYsIDIwLCAxLCAxMDcsIDIyNSwgNTksIDIwLCAxLCAxMDcsIDIyNSwgMTUyLCAyMCwgMSwgMTA3LCAKKyAgICAyMjcsIDEyNywgMjAsIDEsIDEwNywgMjMzLCAxMSwgMjAsIDEsIDEwNywgMjI5LCA1NSwgMjAsIDEsIDEwNywgMjMxLCAyMCwgCisgICAgMjAsIDEsIDEwNywgMjI5LCAyOSwgMjAsIDEsIDEwNywgMjEwLCAxOTMsIDIwLCAxLCAxMDcsIDIyNiwgMjEsIDIwLCAxLCAKKyAgICAxMDcsIDIxMCwgMTkyLCAyMCwgMSwgMTA3LCAyMjksIDE0NCwgMjAsIDEsIDEwNywgMjI3LCAyNDQsIDIwLCAxLCAxMDcsIAorICAgIDIxOCwgODEsIDIwLCAxLCAxMDcsIDIzMywgMjA4LCAyMCwgMSwgMTA3LCAyMjksIDQ0LCAyMCwgMSwgMTA3LCAyMjksIDE0LCAKKyAgICAyMCwgMSwgMTA3LCAyMTUsIDEwMiwgMjAsIDEsIDEwNywgMjMxLCAzMSwgMjAsIDEsIDEwNywgMjMzLCAxOTgsIDIwLCAxLCAKKyAgICAxMDcsIDIyNywgMjUyLCAyMCwgMSwgMTA3LCAyMTYsIDIxOCwgMjAsIDEsIDEwNywgMjMxLCAyMTQsIDIwLCAxLCAxMDcsIAorICAgIDIyOSwgNTMsIDIwLCAxLCAxMDcsIDIzMywgNCwgMjAsIDEsIDEwNywgMjI5LCAzNSwgMjAsIDEsIDEwNywgMjI4LCAxLCAyMCwgCisgICAgMSwgMTA3LCAyMjgsIDE1MywgMjAsIDEsIDEwNywgMjQyLCAyMzMsIDIwLCAxLCAxMDcsIDIzMywgMjE3LCAyMCwgMSwgMTA3LCAKKyAgICAyMjMsIDg0LCAyMjYsIDIwOSwgMjAsIDEsIDEwNywgMjE3LCA4NiwgMjAsIDEsIDEwNywgMjE2LCAxMCwgMjAsIDEsIDEwNywgCisgICAgMjI3LCAxNDgsIDIwLCAxLCAxMDcsIDIyMiwgMjM5LCAyMCwgMSwgMTA3LCAyMzMsIDQ5LCAyMCwgMSwgMTA3LCAyMzEsIDc5LCAKKyAgICAyMCwgMSwgMTA3LCAxOTMsIDIwLCAxLCAxMDcsIDIxOCwgNCwgMjAsIDEsIDEwNywgMjMwLCAxMDIsIDIwLCAxLCAxMDcsIAorICAgIDIyMCwgMjcsIDIwLCAxLCAxMDcsIDIyMCwgMzcsIDIwLCAxLCAxMDcsIDIzMywgMTU1LCAyMCwgMSwgMTA3LCAyMjcsIDIzNywgCisgICAgMjAsIDEsIDEwNywgMjE5LCAyMjUsIDIwLCAxLCAxMDcsIDIyNywgMjQ2LCAyMCwgMSwgMTA3LCAyMjUsIDIxMSwgMjAsIDEsIAorICAgIDEwNywgMjI4LCAyMzMsIDIwLCAxLCAxMDcsIDIxOSwgMjUyLCAyMCwgMSwgMTA3LCAyMjQsIDEzMywgMjAsIDEsIDEwNywgCisgICAgMjMwLCA0NiwgMjAsIDEsIDEwNywgMjMyLCAxMTksIDIwLCAxLCAxMDcsIDIyMywgODQsIDIzMCwgOTYsIDIwLCAxLCAxMDcsIAorICAgIDIxNiwgMTE3LCAyMCwgMSwgMTA3LCAyMjcsIDIzOCwgMjAsIDEsIDEwNywgMjMxLCAxMjMsIDE5OCwgMjAsIDEsIDEwNywgCisgICAgMjIxLCAyMzIsIDIwLCAxLCAxMDcsIDI0NCwgMTk1LCAyMCwgMSwgODIsIDIyOSwgMTQzLCAyMCwgMSwgODIsIDIxNiwgMTYsIAorICAgIDIwLCAxLCA4MiwgMjMxLCAxMTIsIDIwLCAxLCA4MiwgMjMzLCA4OCwgMjAsIDEsIDgyLCAyMTMsIDEyOCwgMjAsIDEsIDgyLCAKKyAgICAyMzIsIDEyNSwgMjAsIDEsIDgyLCAyMjYsIDg5LCAyMCwgMSwgODIsIDIxOSwgNDUsIDIwLCAxLCA4MiwgMjIzLCAxNDUsIAorICAgIDIwLCAxLCA4MiwgMjI4LCAzLCAyMCwgMSwgODIsIDIyOSwgMTE0LCAyMCwgMSwgODIsIDIyNCwgMTQ3LCAyMCwgMSwgODIsIAorICAgIDIxNywgNjIsIDIwLCAxLCA4MiwgMjI5LCAyMiwgMjAsIDEsIDgyLCAyMzMsIDI0NSwgMjAsIDEsIDgyLCAyMTEsIDE4NywgCisgICAgMjAsIDEsIDgyLCAyMjEsIDE3MCwgMjAsIDEsIDgyLCAyMjksIDQ1LCAyMCwgMSwgODIsIDIyNiwgODYsIDIwLCAxLCA4MiwgCisgICAgMjE2LCAxNywgMjAsIDEsIDgyLCAyMzMsIDIwMiwgMjAsIDEsIDgyLCAyMzIsIDEzOSwgMjAsIDEsIDgyLCAyMjgsIDYsIDIwLCAKKyAgICAxLCA4MiwgMjI4LCAyNTQsIDIwLCAxLCA4MiwgMjMxLCAyMjAsIDIwLCAxLCA4MiwgMjI5LCAxNSwgMjAsIDEsIDgyLCAyMjgsIAorICAgIDI1MywgMjAsIDEsIDgyLCAyMjgsIDUsIDIwLCAxLCA4MiwgMjIyLCAyMzcsIDIwLCAxLCA4MiwgMjI4LCAxNzEsIDIwLCAxLCAKKyAgICA4MiwgMjI1LCAyMTAsIDIwLCAxLCA4MiwgMjIyLCAzMSwgMjAsIDEsIDgyLCAyMjksIDMwLCAyMCwgMSwgODIsIDIzMSwgMTAsIAorICAgIDIwLCAxLCA4MiwgMjQyLCAyMjcsIDIwLCAxLCA4MiwgMjI5LCAxOCwgMjAsIDEsIDgyLCAyMjgsIDE4MiwgMjAsIDEsIDgyLCAKKyAgICAyMzEsIDE3MiwgMjAsIDEsIDgyLCAyMzIsIDEyMSwgMjAsIDEsIDgyLCAyMjksIDUwLCAyMCwgMSwgODIsIDIyOSwgMTI3LCAKKyAgICAyMCwgMSwgODIsIDIxNywgODUsIDIyNywgMjQ0LCAyMCwgMSwgODIsIDIyMCwgMTI3LCAyMCwgMSwgODIsIDIyNCwgMTQzLCAKKyAgICAyMCwgMSwgODIsIDIyOSwgMTQ3LCAyMTksIDUxLCAyMCwgMSwgODIsIDIyOSwgMzgsIDIyNywgMTYwLCAyMCwgMSwgODIsIAorICAgIDIxMSwgNCwgMjAsIDEsIDgyLCAyNDIsIDIyOCwgMjAsIDEsIDgyLCAyMTUsIDExNywgMjAsIDEsIDgyLCAyMTEsIDE5LCAyMCwgCisgICAgMSwgODIsIDIyNSwgMTYsIDIwLCAxLCA4MiwgMjE1LCAxMDcsIDIwLCAxLCA4MiwgMjM0LCAxNTQsIDIwLCAxLCA4MiwgMjE4LCAKKyAgICA4MCwgMjAsIDEsIDgyLCAyMTYsIDIxOSwgMjAsIDEsIDgyLCAyMTMsIDE4NCwgMjAsIDEsIDgyLCAyMTIsIDYsIDIwLCAxLCAKKyAgICA4MiwgMjMzLCAxMzIsIDIwLCAxLCA4MiwgMjI0LCAxNTAsIDIwLCAxLCA4MiwgMjE3LCA5NiwgMjAsIDEsIDgyLCAyNDIsIAorICAgIDI0NywgMjAsIDEsIDgyLCAyMjksIDU5LCAyMCwgMSwgODIsIDIyMCwgNDAsIDIwLCAxLCA4MiwgMjMxLCA1LCAyMCwgMSwgCisgICAgODIsIDIzMSwgMTE2LCAyMCwgMSwgODIsIDIyNywgMTE1LCAyMCwgMSwgODIsIDIyOCwgMTM2LCAyMCwgMSwgODIsIDI0MywgCisgICAgNzMsIDIwLCAxLCA4MiwgMjE1LCAxMDgsIDIwLCAxLCA4MiwgMjMzLCAyMTEsIDIwLCAxLCA4MiwgMjExLCA2NywgMjAsIDEsIAorICAgIDgyLCAyMjcsIDE0OSwgMjUwLCAxNiwgMjAsIDEsIDgyLCAyMTAsIDI1MCwgMjAsIDEsIDgyLCAyMzEsIDIyLCAyMCwgMSwgCisgICAgODIsIDIyOSwgMTMyLCAyMCwgMSwgODIsIDIyNSwgMTAwLCAyMCwgMSwgODIsIDIxMCwgMTk3LCAyMCwgMSwgODIsIDIzMywgCisgICAgNiwgMjAsIDEsIDgyLCAyNDMsIDIzMywgMjAsIDEsIDgyLCAyNDMsIDcyLCAyMCwgMSwgODIsIDIyOSwgOCwgMjAsIDEsIDgyLCAKKyAgICAyMzQsIDE1NiwgMjAsIDEsIDgyLCAyMzEsIDIyMywgMjAsIDEsIDgyLCAyMjksIDIxLCAyMCwgMSwgODIsIDI0MiwgMjM0LCAKKyAgICAyMCwgMSwgODIsIDI0NCwgMTk2LCAyMCwgMSwgODIsIDIyNywgMjM5LCAyMCwgMSwgODIsIDIyNSwgMTUzLCAyMCwgMSwgODIsIAorICAgIDIxMSwgMTcsIDIwLCAxLCA4MiwgMjI5LCA0NiwgMjAsIDEsIDgyLCAyMjcsIDE0OSwgMjUyLCAyMywgMjAsIDEsIDgyLCAKKyAgICAyMjcsIDk1LCAyMCwgMSwgODIsIDIyNCwgMjQ3LCAyMCwgMSwgODIsIDIzMCwgMjIwLCAyMCwgMSwgODIsIDI0MywgMjMxLCAKKyAgICAyMCwgMSwgODIsIDIyOSwgMjIwLCAyMCwgMSwgODIsIDIzMCwgMTAwLCAyMCwgMSwgODIsIDI0MiwgMjMzLCAyMCwgMSwgODIsIAorICAgIDI0MywgMjM1LCA3MywgMjAsIDEsIDgyLCAyMzAsIDQ3LCAyMCwgMSwgODIsIDIyNCwgMTQ2LCAyMCwgMSwgODIsIDIyOSwgCisgICAgMTAsIDIwLCAxLCA4MiwgMjMzLCAxODksIDIwLCAxLCA4MiwgMjI1LCA5NywgMjAsIDEsIDgyLCAyMjcsIDI0NywgMjAsIDEsIAorICAgIDgyLCAyMTEsIDE4LCAyMCwgMSwgODIsIDIyOSwgMzEsIDIwLCAxLCA4MiwgMjI2LCA5MCwgMjI1LCAxODcsIDIwLCAxLCA4MiwgCisgICAgMjQzLCAyMzUsIDI1MSwgMTUsIDIwLCAxLCA4MiwgMjQ0LCAzNywgMjAsIDEsIDgyLCAyMjgsIDE3NiwgMjAsIDEsIDgyLCAKKyAgICA2MSwgMjAsIDEsIDgyLCAyMTYsIDEwLCAyMCwgMSwgODIsIDc2LCAyMCwgMSwgODIsIDczLCAyMCwgMSwgODIsIDIzMywgODYsIAorICAgIDIwLCAxLCA4MiwgMjI2LCA5MCwgMjI1LCAyMywgMjAsIDEsIDgyLCAyMTcsIDEwMSwgMjAsIDEsIDgyLCAyMTcsIDUxLCAyMCwgCisgICAgMSwgODIsIDIyOSwgMTQ3LCAyMzAsIDM0LCAyNDAsIDIzNCwgMjAsIDEsIDgyLCAyMjAsIDE1LCAyMCwgMSwgODIsIDIxMSwgCisgICAgMTQsIDIwLCAxLCA4MiwgMjI4LCAyNDcsIDIwLCAxLCA4MiwgMjEwLCAyMDIsIDIwLCAxLCA4MiwgMjEwLCAyMjcsIDIxNywgCisgICAgMjQwLCAyMCwgMSwgODIsIDIxMCwgMjI3LCAyNDksIDE0NywgMjAsIDEsIDgyLCAyMTAsIDE4NywgMjAsIDEsIDgyLCAyMTAsIAorICAgIDE5NSwgMjAsIDEsIDgyLCAyMzQsIDE0MiwgMjAsIDEsIDgyLCAyMjUsIDE1MSwgMjAsIDEsIDgyLCAyMjgsIDE3NywgMjQ1LCAKKyAgICAxMDIsIDIwLCAxLCA4MiwgMjI0LCAxNDQsIDIwLCAxLCA4MiwgMjExLCAxOTIsIDIwLCAxLCA4MiwgMjQ0LCAxNDcsIDIwLCAKKyAgICAxLCA4MiwgMjEzLCAyNTAsIDIwLCAxLCA4MiwgMjMyLCA5OCwgMjAsIDEsIDgyLCAyMzAsIDIzMCwgMjAsIDEsIDgyLCAyMjMsIAorICAgIDUxLCAyMCwgMSwgODIsIDIyMywgMTcxLCAyMCwgMSwgODIsIDIyOCwgMjQ2LCAyMCwgMSwgODIsIDIyOSwgNzcsIDIwLCAxLCAKKyAgICA4MiwgMjIwLCA3LCAyMCwgMSwgODIsIDIxOSwgMjUyLCAyMCwgMSwgODIsIDI0MywgMjM1LCAyMjMsIDg2LCAyMCwgMSwgODIsIAorICAgIDE5NywgMjAsIDEsIDgyLCAyMjUsIDEwOCwgMjAsIDEsIDgyLCAyMzIsIDExOSwgMjAsIDEsIDgyLCAyMzQsIDI4LCAyMCwgMSwgCisgICAgODIsIDIzMSwgNTgsIDIwLCAxLCA4MiwgMTg0LCAyMCwgMSwgODIsIDIzMSwgMTY5LCAyMCwgMSwgODIsIDIxNiwgMjIxLCAKKyAgICAyMCwgMSwgODIsIDIzNCwgOTIsIDIwLCAxLCA4MiwgMjMwLCAxNTAsIDIwLCAxLCA4MiwgMjE2LCAyNDcsIDIwLCAxLCA4MiwgCisgICAgMjQ0LCAxNjksIDIwLCAxLCA4MiwgMjQyLCAyMjMsIDIwLCAxLCAyMjUsIDEzNywgMTc2LCAyMCwgMSwgMjI1LCAxMzcsIDcwLCAKKyAgICAyMCwgMSwgMjI1LCAxMzcsIDIzMywgMjE3LCAyMCwgMSwgMjI1LCAxMzcsIDI0NSwgMjA5LCAyMCwgMSwgMjI1LCAxMzcsIAorICAgIDIyMywgMTA4LCAyMCwgMSwgMjI1LCAxMzcsIDIxNywgODYsIDIwLCAxLCAyMjUsIDEzNywgMjI3LCAxNDgsIDIwLCAxLCAKKyAgICAyMjUsIDEzNywgMjMzLCAxMzUsIDIwLCAxLCAyMjUsIDEzNywgMjIyLCAyMzksIDIwLCAxLCAyMjUsIDEzNywgMjIzLCAyOSwgCisgICAgMjAsIDEsIDIyNSwgMTM3LCAyMzEsIDc5LCAyMCwgMSwgMjI1LCAxMzcsIDIxNywgMTAxLCAyMCwgMSwgMjI1LCAxMzcsIAorICAgIDIyOSwgMTQ2LCAyMCwgMSwgMjI1LCAxMzcsIDIyOCwgMTgzLCAyMCwgMSwgMjI1LCAxMzcsIDE5MywgMjAsIDEsIDIyNSwgCisgICAgMTM3LCAyMTgsIDQsIDIwLCAxLCAyMjUsIDEzNywgMjIwLCAyNywgMjAsIDEsIDIyNSwgMTM3LCAyMTksIDE5MSwgMjAsIDEsIAorICAgIDIyNSwgMTM3LCAyMjAsIDEyMywgMjAsIDEsIDIyNSwgMTM3LCAyMzMsIDE1NSwgMjAsIDEsIDIyNSwgMTM3LCAyMzQsIDE1NiwgCisgICAgMjAsIDEsIDIyNSwgMTM3LCAyMjcsIDIwOSwgMjAsIDEsIDIyNSwgMTM3LCAyMjcsIDIzNywgMjAsIDEsIDIyNSwgMTM3LCAKKyAgICAyMjgsIDE1NCwgMjAsIDEsIDIyNSwgMTM3LCAyMTAsIDIyNiwgMjAsIDEsIDIyNSwgMTM3LCAyMTksIDIyNSwgMjAsIDEsIAorICAgIDIyNSwgMTM3LCAxOTEsIDIwLCAxLCAyMjUsIDEzNywgMjI4LCA5LCAyMCwgMSwgMjI1LCAxMzcsIDIyNSwgMTUxLCAyMCwgMSwgCisgICAgMjI1LCAxMzcsIDIyNywgMjQ2LCAyMCwgMSwgMjI1LCAxMzcsIDIxMSwgMTkyLCAyMCwgMSwgMjI1LCAxMzcsIDIyNSwgMjExLCAKKyAgICAyMCwgMSwgMjI1LCAxMzcsIDIyMiwgMTQwLCAyMCwgMSwgMjI1LCAxMzcsIDIyOCwgMjMzLCAyMCwgMSwgMjI1LCAxMzcsIAorICAgIDIyMywgNTEsIDIwLCAxLCAyMjUsIDEzNywgMjM0LCAxNjUsIDIwLCAxLCAyMjUsIDEzNywgMjI5LCA3LCAyMCwgMSwgMjI1LCAKKyAgICAxMzcsIDIyOSwgNTYsIDIwLCAxLCAyMjUsIDEzNywgMjIwLCA3LCAyMCwgMSwgMjI1LCAxMzcsIDIyNCwgMTQ3LCAyMCwgMSwgCisgICAgMjI1LCAxMzcsIDI0NCwgMzcsIDIwLCAxLCAyMjUsIDEzNywgMjEyLCA2NSwgMjAsIDEsIDIyNSwgMTM3LCAyMzIsIDI0MSwgCisgICAgMjAsIDEsIDIyNSwgMTM3LCAyMzIsIDExOSwgMjAsIDEsIDIyNSwgMTM3LCAyMzQsIDI4LCAyMCwgMSwgMjI1LCAxMzcsIAorICAgIDIzMSwgMTE0LCAyMCwgMSwgMjI1LCAxMzcsIDIyMywgODMsIDIwLCAxLCAyMjUsIDEzNywgMTg0LCAyMCwgMSwgMjI1LCAKKyAgICAxMzcsIDIzMCwgMTYxLCAyMCwgMSwgMjI1LCAxMzcsIDIzMSwgMTIyLCAyMCwgMSwgMjI1LCAxMzcsIDIxNiwgMjMwLCAyMCwgCisgICAgMSwgMjI1LCAxMzcsIDIzMywgMjUxLCAyMCwgMSwgMjI1LCAxMzcsIDIyMSwgMjUxLCAyMCwgMSwgMjI1LCAxMzcsIDIxMiwgCisgICAgMTE1LCA5NSwgMSwgMTkwLCA5NSwgMSwgMjUyLCAxOTEsIDk1LCAxLCA4LCAxOTAsIDk1LCAxLCAyMjUsIDQyLCA5NSwgMSwgCisgICAgMTg0LCA5NSwgMSwgMjMwLCAyMzMsIDk1LCAxLCAyNTQsIDIzLCAxODQsIDk1LCAxLCAyNDQsIDE5NiwgOTUsIDEsIDIxNCwgCisgICAgMjcsIDk1LCAxLCAyMTMsIDE3NywgOTUsIDEsIDIxNywgMTA1LCA5NSwgMSwgMjQ4LCAyMjEsIDk1LCAxLCA4LCAyMTUsIAorICAgIDE1NiwgOTUsIDEsIDgsIDIxNywgMTA1LCA5NSwgMSwgMjE1LCAxNTYsIDk1LCAxLCAyNDgsIDEzNSwgOTUsIDEsIDE5NywgCisgICAgOTUsIDEsIDIyOCwgMjM3LCA5NSwgMSwgOCwgMjI4LCAxMTAsIDk1LCAxLCAyNTQsIDIzLCAxOTcsIDk1LCAxLCAyMjgsIAorICAgIDExMCwgOTUsIDEsIDIyOCwgOTYsIDk1LCAxLCAyMzMsIDEzNSwgOTUsIDEsIDIzMiwgNjEsIDk1LCAxLCAyMzIsIDI1NCwgCisgICAgOTUsIDEsIDIzMiwgMjQzLCA5NSwgMSwgMjE2LCA1NiwgOTUsIDEsIDI0NywgMTUzLCA5NSwgMSwgMjE2LCA0OCwgOTUsIDEsIAorICAgIDI0NywgMTUyLCA5NSwgMSwgMTc2LCA5NSwgMSwgMjQzLCAxMzUsIDk1LCAxLCA4LCAxNzYsIDk1LCAxLCAyMjQsIDg4LCA5NSwgCisgICAgMSwgMjI0LCA2NiwgOTUsIDEsIDIyOSwgNzcsIDk1LCAxLCAyMjksIDI4LCA5NSwgMSwgMjU0LCAyMywgMjI5LCA3NywgOTUsIAorICAgIDEsIDE2MiwgOTUsIDEsIDIxMSwgMTY1LCA5NSwgMSwgMjQyLCAyNDksIDk1LCAxLCAyNDIsIDIyNiwgOTUsIDEsIDIxNSwgCisgICAgMTY1LCA5NSwgMSwgMjQ2LCAyNiwgOTUsIDEsIDIyNywgMTY1LCA5NSwgMSwgMjI3LCAxNTAsIDk1LCAxLCAyMTUsIDE3NSwgCisgICAgOTUsIDEsIDI0NiwgMzMsIDk1LCAxLCA4LCAyMTUsIDE3NSwgOTUsIDEsIDgsIDI0NiwgMzMsIDk1LCAxLCAyMjMsIDEwNiwgCisgICAgMjE1LCAxNzUsIDk1LCAxLCAyMjAsIDEwMiwgOTUsIDEsIDIxOCwgMjIzLCA5NSwgMSwgMjEwLCA4MiwgOTUsIDEsIDIxMCwgCisgICAgMTQsIDk1LCAxLCAyMTUsIDE4MywgOTUsIDEsIDI0NiwgMzgsIDk1LCAxLCA4LCAyMTUsIDE4MywgOTUsIDEsIDIwNiwgOTUsIAorICAgIDEsIDIxMCwgMTE2LCA5NSwgMSwgMjEwLCAxNSwgOTUsIDEsIDIwOSwgMjQzLCA5NSwgMSwgMjA5LCAyMjMsIDk1LCAxLCAKKyAgICAyNTQsIDIzLCAyMDksIDI0MywgOTUsIDEsIDIwOSwgMjE1LCA5NSwgMSwgMjA5LCAyMjIsIDk1LCAxLCAyMTIsIDY1LCA5NSwgCisgICAgMSwgMjU0LCAyMDksIDk1LCAxLCAyNDEsIDE4OSwgOTUsIDEsIDIyOSwgMTkyLCA5NSwgNSwgMjUzLCAyMjIsIDk1LCA1LCAKKyAgICAyMjMsIDEwNiwgMjEzLCAxMzMsIDk1LCA1LCAyMjMsIDEwNiwgMjUzLCAyMjIsIDk1LCAyNSwgNSwgNjEsIDk1LCAyNSwgNSwgCisgICAgMjU1LCA3MywgOTUsIDI1LCA1LCAyNTQsIDIwNSwgOTUsIDI1LCA1LCAyNTQsIDEyMywgOTUsIDI1LCA1LCAyNTQsIDExNSwgCisgICAgOTUsIDI1LCA1LCA3NiwgOTUsIDI1LCA1LCAyMjYsIDE4MywgOTUsIDI1LCA1LCAyMTEsIDIyNywgOTUsIDI1LCA1LCAyMTIsIAorICAgIDk4LCA5NSwgMjUsIDUsIDc1LCA5NSwgMjUsIDUsIDI0NSwgMTUwLCA5NSwgMjUsIDUsIDI0NSwgMTM4LCA5NSwgMjUsIDUsIAorICAgIDIyNiwgMjMyLCA5NSwgMjUsIDUsIDczLCA5NSwgMjUsIDUsIDI0MCwgMTE5LCA5NSwgMjUsIDUsIDI0MCwgMTE4LCA5NSwgCisgICAgMjUsIDUsIDI0MCwgMTE3LCA5NSwgMjUsIDUsIDIzNSwgMTg5LCA5NSwgMjUsIDUsIDIzNiwgNjAsIDk1LCAyNSwgNSwgMjM2LCAKKyAgICAzMywgOTUsIDI1LCA1LCAyMzUsIDE1NiwgOTUsIDI1LCA1LCAyMzUsIDIzMSwgOTUsIDI1LCA1LCA3MCwgOTUsIDI1LCA1LCAKKyAgICAyMTQsIDIyOSwgOTUsIDI1LCA1LCAyMTQsIDIyOCwgOTUsIDI1LCA1LCAyMTQsIDIyNywgOTUsIDI1LCA1LCAyMTQsIDExOCwgCisgICAgOTUsIDI1LCA1LCAyMTQsIDIxMSwgOTUsIDI1LCA1LCAyMTQsIDE3OCwgOTUsIDI1LCA1LCAyMTEsIDExNywgOTUsIDI1LCA1LCAKKyAgICAyMTEsIDgsIDk1LCAyNSwgNSwgMjU0LCAyNDMsIDk1LCAyNSwgNSwgMjU0LCAyMzksIDk1LCAyNSwgNSwgMjQ1LCA4NiwgOTUsIAorICAgIDI1LCA1LCAyMjIsIDE4MywgMjQ1LCA4NiwgOTUsIDI1LCA1LCAyNDUsIDkyLCA5NSwgMjUsIDUsIDIyMiwgMTgzLCAyNDUsIAorICAgIDkyLCA5NSwgMjUsIDUsIDI1NCwgMjAxLCA5NSwgMjUsIDUsIDI0NSwgMTk1LCA5NSwgMjUsIDUsIDI1MywgMTkyLCA5NSwgCisgICAgMjUsIDUsIDIyNiwgMTM0LCA5NSwgMjUsIDUsIDIzMCwgMjUsIDk1LCAyNSwgNSwgMjI5LCA3OSwgOTUsIDEzOCwgMjIyLCAKKyAgICAyNTEsIDk1LCAxMzgsIDIxNiwgMTQsIDIyMiwgMjUxLCA5NSwgMTM4LCA0OCwgOTUsIDEzOCwgNTEsIDk1LCAxLCAyMTYsIAorICAgIDI4LCA5NSwgMSwgMjE2LCAyNywgOTUsIDEsIDIxNiwgMjYsIDk1LCAxLCAyMTYsIDI1LCA5NSwgMSwgMjE2LCAyNCwgOTUsIAorICAgIDEsIDIxNiwgMjMsIDk1LCAxLCAyMTYsIDIyLCA5NSwgMSwgMjIzLCAxMDYsIDIxNiwgMjksIDk1LCAxLCAyMjMsIDEwNiwgCisgICAgMjE2LCAyOCwgOTUsIDEsIDIyMywgMTA2LCAyMTYsIDI2LCA5NSwgMSwgMjIzLCAxMDYsIDIxNiwgMjUsIDk1LCAxLCAyMjMsIAorICAgIDEwNiwgMjE2LCAyNCwgOTUsIDEsIDIyMywgMTA2LCAyMTYsIDIyLCA1NiwgMSwgMjU0LCAyMywgNzUsIDE0MSwgMSwgMjU0LCAKKyAgICAyMywgMjExLCA0NywgNDksIDI4LCAxNiwgMjI0LCAxNTQsIDQ5LCAyOCwgMTYsIDI0OCwgMTU4LCA0OSwgMjgsIDE2LCAyMjUsIAorICAgIDE3NSwgNDksIDI4LCAxNiwgMjI2LCAxMTMsIDI0NSwgMTc4LCA0OSwgMjgsIDE2LCAyMjYsIDExMywgMjQ3LCAyMDEsIDQ5LCAKKyAgICAyOCwgMTYsIDIxNCwgMTYsIDI0NSwgMTc4LCA0OSwgMjgsIDE2LCAyMTQsIDE2LCAyNDcsIDIwMSwgNDksIDI4LCAxNiwgCisgICAgMjM0LCAxOTcsIDQ5LCAyOCwgMTYsIDIxNywgMTY5LCA0OSwgMjgsIDE2LCAyMjYsIDksIDQ5LCAyOCwgMTYsIDIxMCwgMjE3LCAKKyAgICA0OSwgMjgsIDE2LCAyMTAsIDIxOCwgMjQ3LCAyMDEsIDQ5LCAyOCwgMTYsIDIzMywgMjM0LCA0OSwgMjgsIDE2LCAyNTQsIAorICAgIDY4LCAyNDUsIDE3OCwgNDksIDI4LCAxNiwgMjQ1LCAyNiwgMjQ1LCAxNzgsIDQ5LCAyOCwgMTYsIDIxNywgMiwgNDksIDI4LCAKKyAgICAxNiwgMjM0LCAxNjEsIDQ5LCAyOCwgMTYsIDI1NCwgNTgsIDQ5LCAyOCwgMTYsIDI1NCwgNTksIDI0NywgMjAxLCA0OSwgMjgsIAorICAgIDE2LCAyMTcsIDE3NSwgNDksIDI4LCAxNiwgMjE2LCAxNTksIDQ5LCAyOCwgMTYsIDIyNiwgMjA2LCAyNTQsIDIxLCA0OSwgCisgICAgMjgsIDE2LCAyNDIsIDE1OSwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjI0LCAxNTMsIDQ5LCAyOCwgMTYsIDI1MCwgMTQ5LCAKKyAgICA0OSwgMjgsIDE2LCAyMTQsIDYsIDQ5LCAyOCwgMTYsIDIzNSwgMTY0LCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMzQsIDE2MywgCisgICAgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjM0LCAxNjIsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIyMSwgMjEzLCA0OSwgMjgsIDE2LCAKKyAgICAyMjYsIDAsIDQ5LCAyOCwgMTYsIDIxOCwgMTQ2LCAyNTQsIDYxLCA0OSwgMjgsIDE2LCAyMjYsIDExMiwgMjU0LCAyMSwgNDksIAorICAgIDI4LCAxNiwgMjE0LCAxNSwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjU0LCA2MiwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjU0LCAKKyAgICA1NiwgNDksIDI4LCAxNiwgMjM0LCAzNywgNDksIDI4LCAxNiwgMjIzLCA0NiwgNDksIDI4LCAxNiwgMjI1LCAxMDYsIDI1NCwgCisgICAgMjEsIDQ5LCAyOCwgMTYsIDIxNiwgODMsIDQ5LCAyOCwgMTYsIDI1NCwgMTIxLCA0OSwgMjgsIDE2LCAyMjEsIDE1OSwgNDksIAorICAgIDI4LCAxNiwgMjE3LCAxNzgsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIxNywgMTc4LCAyMzEsIDQwLCAyMTgsIDE0NCwgNDksIAorICAgIDI4LCAxNiwgMjI2LCAxMDcsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIxNiwgMTkwLCA0OSwgMjgsIDE2LCAyMzMsIDI3LCA0OSwgCisgICAgMjgsIDE2LCAyNDYsIDQxLCA0OSwgMjgsIDE2LCAyMTUsIDIyNywgNDksIDI4LCAxNiwgMjE2LCAyMzIsIDQ5LCAyOCwgMTYsIAorICAgIDIzMywgMjM3LCA0OSwgMjgsIDE2LCAyNTQsIDY4LCAyNDUsIDI2LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgCisgICAgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjM2LCAxMiwgNDksIDI4LCAxNiwgMjE1LCAxOTksIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIAorICAgIDIzNCwgMjAwLCAyMTUsIDE5OCwgNDksIDI4LCAxNiwgMjI1LCAyMDAsIDQ5LCAyOCwgMTYsIDIyNCwgMTU4LCA0OSwgMjgsIAorICAgIDE2LCAyMzQsIDExLCA0OSwgMjgsIDE2LCAyNTAsIDgwLCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMjMsIDE0NiwgNDksIDI4LCAKKyAgICAxNiwgMjI2LCAxMiwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjI2LCAxMCwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjQwLCAxMDksIAorICAgIDQ5LCAyOCwgMTYsIDIyOSwgMjAzLCA0OSwgMjgsIDE2LCAyMjUsIDE1NiwgNDksIDI4LCAxNiwgMjM0LCAxMiwgMjU0LCAKKyAgICAxNDksIDQ5LCAyOCwgMTYsIDIxNSwgMTk5LCAyNTQsIDE0OSwgNDksIDI4LCAxNiwgMjE4LCAxMjMsIDQ5LCAyOCwgMTYsIAorICAgIDI0MiwgMTIzLCA0OSwgMjgsIDE2LCAyMzUsIDE2NCwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjI2LCAyMDYsIDIyOSwgOTUsIAorICAgIDQ5LCAyOCwgMTYsIDIyNiwgMTEzLCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMjUsIDE1NSwgNDksIDI4LCAxNiwgMjMzLCAKKyAgICAyNTQsIDQ5LCAyOCwgMTYsIDIyNSwgMTU0LCA0OSwgMjgsIDE2LCAyMzMsIDIzNiwgNDksIDI4LCAxNiwgMjI1LCAyMDEsIAorICAgIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIzNCwgMTYyLCAyMjksIDk2LCAyNTQsIDk2LCA0OSwgMjgsIDE2LCAyMzQsIDE2MywgCisgICAgMjI5LCA5NiwgMjU0LCA5NiwgNDksIDI4LCAxNiwgMjEwLCAyMTUsIDQ5LCAyOCwgMTYsIDI1NCwgNTksIDIyOSwgOTUsIDQ5LCAKKyAgICAyOCwgMTYsIDI1NCwgNjAsIDIxNywgMTc2LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMTAsIDIxNiwgNDksIDI4LCAxNiwgCisgICAgMjMzLCAyMzUsIDQ5LCAyOCwgMTYsIDI0NSwgMTczLCA0OSwgMjgsIDE2LCAyNTAsIDE1MCwgNDksIDI4LCAxNiwgMjMwLCAKKyAgICAxOTgsIDIzNSwgMTYzLCA0OSwgMjgsIDE2LCAyMTQsIDE2LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMjUsIDEwNiwgMjI5LCAKKyAgICA5NSwgNDksIDI4LCAxNiwgMjI0LCAxNTksIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIyNiwgMjAzLCA0OSwgMjgsIDE2LCAyNTQsIAorICAgIDg0LCA0OSwgMjgsIDE2LCAyMzIsIDU4LCA0OSwgMjgsIDE2LCAyMjYsIDEwLCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMjYsIAorICAgIDEyLCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyNDUsIDYwLCAyMjYsIDExLCA0OSwgMjgsIDE2LCAyMzMsIDE1MywgNDksIDI4LCAKKyAgICAxNiwgMjU0LCA4NSwgNDksIDI4LCAxNiwgMjE1LCAxOTksIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDI0NSwgMTc2LCA0OSwgMjgsIAorICAgIDE2LCAyMTcsIDE3OCwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjE3LCAxNzAsIDQ5LCAyOCwgMTYsIDI1MCwgODAsIDIyOSwgCisgICAgOTUsIDQ5LCAyOCwgMTYsIDI0NSwgMTA2LCA0OSwgMjgsIDE2LCAyMjEsIDE2MCwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjExLCAKKyAgICAxNTEsIDIzNCwgMzcsIDQ5LCAyOCwgMTYsIDIxNSwgMTk2LCA0OSwgMjgsIDE2LCAyMjQsIDE2MCwgNDksIDI4LCAxNiwgCisgICAgMjE1LCAyMDAsIDQ5LCAyOCwgMTYsIDIxNSwgMTk3LCA0OSwgMjgsIDE2LCAyMjQsIDE1NywgNDksIDI4LCAxNiwgMjE1LCAKKyAgICAxOTUsIDQ5LCAyOCwgMTYsIDIyNCwgMTU2LCA0OSwgMjgsIDE2LCAyNDIsIDE1OCwgNDksIDI4LCAxNiwgMjU0LCAxNCwgNDksIAorICAgIDI4LCAxNiwgMjQ1LCA2MCwgMjU0LCAxNCwgNDksIDI4LCAxNiwgMjI2LCAxMDcsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIxNiwgCisgICAgMTg5LCAyNDUsIDY5LCA0OSwgMjgsIDE2LCAyMTYsIDE4OSwgMjQ1LCAyNSwgNDksIDI4LCAxNiwgMjE2LCAxOTEsIDI1NCwgCisgICAgNjMsIDQ5LCAyOCwgMTYsIDIxNiwgMTg0LCAyMzQsIDI0NywgMjU0LCA1NSwgNDksIDI4LCAxNiwgMjM0LCAxOTksIDQ5LCAKKyAgICAyOCwgMTYsIDI0NSwgMTM5LCA0OSwgMjgsIDE2LCAyMTEsIDExLCAyMzQsIDE5NiwgNDksIDI4LCAxNiwgMjExLCAxMSwgCisgICAgMjU0LCA5NiwgNDksIDI4LCAxNiwgMjE4LCAxNDUsIDQ5LCAyOCwgMTYsIDIzNCwgMzgsIDI1NCwgOTYsIDQ5LCAyOCwgMTYsIAorICAgIDI0NywgMjAyLCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMzMsIDIzOCwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjMzLCAyMzgsIAorICAgIDI1NCwgMTQ5LCA0OSwgMjgsIDE2LCAyMzMsIDIzOCwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjU0LCA2MiwgMjI5LCA5NSwgCisgICAgNDksIDI4LCAxNiwgMjU0LCA2NCwgNDksIDI4LCAxNiwgMjQ3LCAyMDEsIDQ5LCAyOCwgMTYsIDIxNSwgMjEwLCA0OSwgMjgsIAorICAgIDE2LCAyMTYsIDIyNCwgNDksIDI4LCAxNiwgMjM0LCAyLCA0OSwgMjgsIDE2LCAyMzMsIDMyLCAyNDUsIDEzNCwgMjUwLCA3MSwgCisgICAgNDksIDI4LCAxNiwgMjMzLCAzMiwgMjQ2LCA0MiwgMjUwLCA3MiwgNDksIDI4LCAxNiwgMjMzLCAzMiwgMjE1LCAyMTIsIAorICAgIDI1MCwgNzIsIDQ5LCAyOCwgMTYsIDIzMywgMzIsIDIxNiwgMjM0LCAyNTAsIDcyLCA0OSwgMjgsIDE2LCAyMzMsIDMyLCAKKyAgICAyMzYsIDcsIDI1MCwgNzEsIDQ5LCAyOCwgMTYsIDI0MiwgMTU5LCAyMjksIDk2LCAyNTQsIDk2LCA0OSwgMjgsIDE2LCAyNDIsIAorICAgIDE1OSwgMjI2LCAxLCAyNTQsIDEwLCA0OSwgMjgsIDE2LCAyNDIsIDE1OSwgMjI2LCAxLCAyNDgsIDI5LCA0OSwgMjgsIDE2LCAKKyAgICAyNDcsIDIyNSwgNDksIDI4LCAxNiwgMjQ3LCAyMjYsIDIyNiwgMSwgMjU0LCAxMSwgMjM0LCAxOTYsIDQ5LCAyOCwgMTYsIAorICAgIDI0NywgMjI2LCAyMjYsIDEsIDI1NCwgMTEsIDI1NCwgOTYsIDQ5LCAyOCwgMTYsIDI0NywgMjI2LCAyMjYsIDEsIDI0OCwgCisgICAgMjksIDQ5LCAyOCwgMTYsIDIxNSwgMjE2LCA0OSwgMjgsIDE2LCAyNTQsIDE1LCA0OSwgMjgsIDE2LCAyMzYsIDE0LCA0OSwgCisgICAgMjgsIDE2LCAyNDcsIDI0NiwgNDksIDI4LCAxNiwgMjU0LCAyMTEsIDIyNSwgMCwgMjU0LCAxNiwgNDksIDI4LCAxNiwgMjU0LCAKKyAgICAyMTEsIDI1NCwgMTMsIDQ5LCAyOCwgMTYsIDI1NCwgMjExLCAyNTQsIDE2LCA0OSwgMjgsIDE2LCAyNTQsIDIxMSwgMjMxLCAKKyAgICAzNCwgNDksIDI4LCAxNiwgMjU0LCAyMTEsIDIzMSwgNDUsIDQ5LCAyOCwgMTYsIDI1NCwgMjExLCAyNDIsIDE2MCwgNDksIAorICAgIDI4LCAxNiwgMjU0LCAyMTEsIDI0MiwgMTU3LCA0OSwgMjgsIDE2LCAyNTQsIDIxMSwgMjI1LCAwLCAyNDIsIDE2MCwgNDksIAorICAgIDI4LCAxNiwgMjMxLCAxNTEsIDIyNCwgMTY1LCAyNDAsIDEwNywgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDI1NCwgMTUxLCAKKyAgICAyMjQsIDE2NSwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyNDgsIDI4LCAyNDAsIDEwNywgNDksIDI4LCAxNiwgCisgICAgMjMxLCAxNTEsIDI1NCwgMTUxLCAyNDgsIDI4LCAyNDAsIDEwNywgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDIxNSwgMjA1LCAKKyAgICAyNDAsIDEwNywgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDIxNSwgMjE3LCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjE2LCAyMjgsIAorICAgIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjE2LCAyMjgsIDIzMywgMzUsIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAKKyAgICAyMzEsIDE1MSwgMjMzLCAzNSwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyMjUsIDM5LCAyNDAsIDEwNywgNDksIAorICAgIDI4LCAxNiwgMjM1LCAxNjksIDIxNiwgMjUxLCAyNDAsIDEwOCwgNDksIDI4LCAxNiwgMjU0LCA2MCwgMjE2LCAyNTEsIDI0MCwgCisgICAgMTA4LCA0OSwgMjgsIDE2LCAyNDQsIDE3MiwgMjE2LCAyMjUsIDQ5LCAyOCwgMTYsIDI0NCwgMTcyLCAyMzAsIDE0MywgNDksIAorICAgIDI4LCAxNiwgMjQ0LCAxNzIsIDI0NywgMjMwLCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjE0LCAxMCwgMjQwLCAxMDcsIDQ5LCAKKyAgICAyOCwgMTYsIDIzMSwgMTUxLCAyMjQsIDE2NCwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyMjUsIDM5LCAyMTYsIAorICAgIDIyOCwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDI0MiwgMTU1LCAyMzAsIDI2LCAyNTQsIDYzLCA0OSwgMjgsIDE2LCAyNDIsIAorICAgIDE1NSwgMjMwLCAyNiwgMjQ3LCAyMDAsIDQ5LCAyOCwgMTYsIDI0NSwgMTQ4LCAyMzQsIDI0NywgMjQzLCAyMzYsIDIxMywgCisgICAgMTI0LCA0OSwgMjgsIDE2LCAyMzYsIDEzLCA0OSwgMjgsIDE2LCAyMzYsIDExLCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjU0LCAKKyAgICAyMiwgMjQ4LCAyNywgMjQwLCAxMDYsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyNDcsIDI0NCwgMTkwLCA0OSwgMjgsIDE2LCAKKyAgICAyNDMsIDIzNiwgMjQ3LCAyNDQsIDIyOSwgMjAzLCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjI5LCAxOTgsIDI0MCwgMTA3LCAKKyAgICA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjQ3LCAyNDQsIDI0OCwgMywgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDIxOSwgMTAyLCAKKyAgICAyNDcsIDI0MywgMjQ4LCAzLCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjQ3LCAyNDQsIDIzNCwgMTgyLCA0OSwgMjgsIDE2LCAKKyAgICAyNDMsIDIzNiwgMjQ3LCAyNDQsIDIxMCwgMjMsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyNDcsIDI0NCwgMjI4LCAyMzQsIAorICAgIDIzNCwgMTk2LCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjQ3LCAyNDQsIDIyOCwgMjM0LCAyNTQsIDk2LCA0OSwgMjgsIDE2LCAKKyAgICAyNDMsIDIzNiwgMjMxLCAxOTEsIDI1MCwgNzMsIDI0NywgMjMwLCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjMxLCAxOTEsIAorICAgIDI1MCwgNzMsIDIzMCwgMTQzLCA0OSwgMjgsIDE2LCAyNDQsIDEyMiwgMjE5LCAxMDIsIDI1MCwgNzMsIDIxNCwgOSwgNDksIAorICAgIDI4LCAxNiwgMjQzLCAyMzYsIDIxOSwgMTAyLCAyNTAsIDczLCAyMTcsIDE3OSwgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDIyOSwgCisgICAgOTcsIDQ5LCAyOCwgMTYsIDI1MCwgNzQsIDIwOSwgMjQ5LCA0OSwgMjgsIDE2LCAyNTAsIDc0LCAyMzQsIDM2LCA0OSwgMjgsIAorICAgIDE2LCAyNTAsIDc0LCAyMTksIDksIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyNDAsIDE1NCwgMjExLCAxMCwgMjE2LCAyMjksIAorICAgIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyNDUsIDE0OSwgMjU0LCA4NiwgNDksIDI4LCAxNiwgMjExLCAxMCwgMjE1LCAyMDYsIAorICAgIDQ5LCAyOCwgMTYsIDI0NywgMjM4LCAyMTUsIDIwNiwgNDksIDI4LCAxNiwgMjQ3LCAyMzgsIDIxNiwgMjI5LCA0OSwgMjgsIAorICAgIDE2LCAyNDcsIDIzOCwgMjU0LCA2NSwgMjQ2LCA0MiwgMjQ3LCAxMzksIDQ5LCAyOCwgMTYsIDI0NywgMjM4LCAyMzAsIDE0MSwgCisgICAgMjE2LCAyMzMsIDI0NywgMTM5LCA0OSwgMjgsIDE2LCAyNDcsIDIzOCwgMjQ3LCAyMjIsIDI0NSwgMzYsIDI0NywgMTM5LCAKKyAgICA0OSwgMjgsIDE2LCAyNDcsIDIzOCwgMjE1LCAyMTQsIDIyNiwgMjExLCAyNDcsIDEzOSwgNDksIDI4LCAxNiwgMjExLCAxMCwgCisgICAgMjU0LCA2NSwgMjQ2LCA0MiwgMjQ3LCAxMzksIDQ5LCAyOCwgMTYsIDIxMSwgMTAsIDIzMCwgMTQxLCAyMTYsIDIzMywgMjQ3LCAKKyAgICAxMzksIDQ5LCAyOCwgMTYsIDIxMSwgMTAsIDI0NywgMjIyLCAyNDUsIDM2LCAyNDcsIDEzOSwgNDksIDI4LCAxNiwgMjExLCAKKyAgICAxMCwgMjE1LCAyMTQsIDIyNiwgMjExLCAyNDcsIDEzOSwgNDksIDI4LCAxNiwgMjQzLCA0OSwgMjQ3LCAyMzcsIDQ5LCAyOCwgCisgICAgMTYsIDI0MywgNDksIDIxMSwgOSwgNDksIDI4LCAxNiwgMjQ3LCAyNDUsIDI1NCwgNjUsIDIzMCwgMTk5LCA0OSwgMjgsIDE2LCAKKyAgICAyNDcsIDI0NSwgMjU0LCA2NSwgMjMxLCA3MywgNDksIDI4LCAxNiwgMjQ3LCAyNDUsIDI0NywgMjAxLCA0OSwgMjgsIDE2LCAKKyAgICAyNDcsIDI0NSwgMjE2LCAxODIsIDQ5LCAyOCwgMTYsIDIxOSwgMTYzLCAyMTYsIDE4MiwgNDksIDI4LCAxNiwgMjE5LCAxNjMsIAorICAgIDIxNiwgMTgzLCAyNDcsIDE4NiwgNDksIDI4LCAxNiwgMjE5LCAxNjMsIDIxNiwgMTgzLCAyMTUsIDIwNywgNDksIDI4LCAxNiwgCisgICAgMjE5LCAxNjMsIDIxNiwgMTgzLCAyMTYsIDIyMiwgNDksIDI4LCAxNiwgMjE5LCAxNjMsIDI1MywgMjQ0LCA0OSwgMjgsIDE2LCAKKyAgICAyMTksIDE2MywgMjUzLCAyNDUsIDI0NywgMTg2LCA0OSwgMjgsIDE2LCAyMTksIDE2MywgMjUzLCAyNDUsIDIxNSwgMjA3LCAKKyAgICA0OSwgMjgsIDE2LCAyMTksIDE2MywgMjUzLCAyNDUsIDIxNiwgMjIyLCA0OSwgMjgsIDE2LCAyNDcsIDIyMywgMjQzLCAzMCwgCisgICAgNDksIDI4LCAxNiwgMjQ3LCAyMjksIDIyNiwgMTM0LCA0OSwgMjgsIDE2LCAyMTgsIDEzNywgNDksIDI4LCAxNiwgMjU0LCA3LCAKKyAgICAxOTAsIDQ5LCAyOCwgMTYsIDI1NCwgNywgMjEzLCAxMjQsIDQ5LCAyOCwgMTYsIDI1NCwgNywgMjQzLCAxMzUsIDQ5LCAyOCwgCisgICAgMTYsIDI1NCwgNywgMjQ4LCAzLCA0OSwgMjgsIDE2LCAyNTQsIDcsIDIzNCwgMTgyLCA0OSwgMjgsIDE2LCAyNTQsIDcsIAorICAgIDIxMCwgMjMsIDQ5LCAyOCwgMTYsIDI1NCwgNywgMjI4LCAyMzMsIDQ5LCAyOCwgMTYsIDIzNCwgMTYyLCAyMjksIDk2LCAKKyAgICAyMzEsIDQ0LCA0OSwgMjgsIDE2LCAyMzQsIDE2MywgMjI5LCA5NiwgMjMxLCA0NCwgNDksIDI4LCAxNiwgMjM0LCAxNjIsIAorICAgIDIyOSwgOTYsIDIzNCwgMTk2LCA0OSwgMjgsIDE2LCAyMzQsIDE2MywgMjI5LCA5NiwgMjM0LCAxOTYsIDQ5LCAyOCwgMTYsIAorICAgIDIzNCwgMzgsIDIzNCwgMTk2LCA0OSwgMjgsIDE2LCAyNDIsIDE1OSwgMjI5LCA5NiwgMjM0LCAxOTYsIDI4LCAxNiwgMjE5LCAKKyAgICAxNTUsIDI1MiwgMTM1LCAyOCwgMTYsIDUyLCAyNTIsIDEzNSwgMjgsIDE2LCA0MCwgMjUyLCAxMzUsIDI4LCAxNiwgMjIzLCAKKyAgICA1MCwgNDAsIDI1MiwgMTM1LCAyOCwgMTYsIDI0OCwgMTU1LCAyNTIsIDEzNSwgMjgsIDE2LCAyMTksIDI1MSwgMjUyLCAxMzUsIAorICAgIDI4LCAxNiwgNDMsIDIyMywgNzcsIDUwLCAyOCwgMTYsIDQ0LCAyMjMsIDc3LCA1MCwgMjgsIDE2LCAyMjMsIDc3LCAyNDcsIAorICAgIDExOCwgMjgsIDE2LCAyNDgsIDE5NiwgMjIxLCAxNjMsIDI4LCAxNiwgMjQ4LCAyMjIsIDI1MCwgMjQ5LCAyOCwgMTYsIDIyMSwgCisgICAgMTYzLCAyOCwgMTYsIDI0OSwgMjM0LCAyOCwgMTYsIDIyMywgNzUsIDI0NCwgMTExLCAyOCwgMTYsIDIyMywgNzUsIDI0NCwgCisgICAgMTEwLCAyOCwgMTYsIDIyMywgNzUsIDI0NCwgMTA5LCAyOCwgMTYsIDI0NCwgMTMxLCAyOCwgMTYsIDI0NCwgMTMyLCA1MSwgCisgICAgMjgsIDE2LCAyNTEsIDE0OCwgNzgsIDI4LCAxNiwgMjUxLCAyNCwgMjgsIDE2LCAyNTEsIDE1OSwgMjgsIDE2LCAxMjcsIDI4LCAKKyAgICAxNiwgMjI2LCAxOTMsIDIxOCwgMTYzLCAyOCwgMTYsIDIxNSwgNTcsIDIxOCwgMTYzLCAyOCwgMTYsIDIxNiwgMTQyLCAyMTgsIAorICAgIDE2MywgMjgsIDE2LCAyNDQsIDEwLCAyMTgsIDE2MywgMjgsIDE2LCAyNDQsIDgwLCAyMTgsIDE2MywgMjgsIDE2LCAyMTksIAorICAgIDEyNCwgMjE4LCAxNjMsIDI4LCAxNiwgMjE5LCAxMjIsIDI0MywgMjUwLCAyOCwgMTYsIDI0NCwgOCwgMjQzLCAyNTAsIDI4LCAKKyAgICAxNiwgMjQzLCAyMDMsIDI1MCwgMTQsIDI4LCAxNiwgMjQzLCAyMDMsIDI1MCwgMTUsIDIyNiwgMTM2LCAyNTQsIDE0MiwgMjgsIAorICAgIDE2LCAyNDMsIDIwMywgMjUwLCAxNSwgMjI2LCAxMzYsIDI1MiwgMTIyLCAyOCwgMTYsIDI1MSwgNjcsIDI1MCwgMTQsIDI4LCAKKyAgICAxNiwgMjQ1LCA3LCAyNTAsIDE0LCAyOCwgMTYsIDI0NSwgNywgMjUwLCAxNSwgMjI2LCAxMzYsIDI1NCwgMTQyLCAyOCwgMTYsIAorICAgIDI0NSwgNywgMjUwLCAxNSwgMjI2LCAxMzYsIDI1MiwgMTIyLCAyOCwgMTYsIDI0NiwgODMsIDI1MCwgMTMsIDI4LCAxNiwgCisgICAgMjQ2LCA4MywgMjUwLCAxMiwgMjgsIDE2LCAyMzAsIDg1LCAyMzEsIDkwLCAyMjMsIDYxLCAyOCwgMTYsIDUyLCAyMjAsIDc1LCAKKyAgICAyOCwgMTYsIDUyLCAyNDQsIDY1LCAyOCwgMTYsIDI0NCwgNjYsIDIxNCwgMTYzLCAyOCwgMTYsIDI0NCwgNjYsIDI0NiwgCisgICAgMTA2LCAyOCwgMTYsIDIyOSwgMTg4LCAyMTQsIDE2MywgMjgsIDE2LCAyMjksIDE4OCwgMjQ2LCAxMDYsIDI4LCAxNiwgMjIwLCAKKyAgICA3NiwgMjE0LCAxNjMsIDI4LCAxNiwgMjIwLCA3NiwgMjQ2LCAxMDYsIDI4LCAxNiwgMjI0LCAyMiwgMTM4LCAyMjAsIDc1LCAKKyAgICAyOCwgMTYsIDIyNCwgMjIsIDEzOCwgMjQ0LCA2NSwgMjgsIDE2LCAyNDksIDIxNiwgMjE2LCA4NywgMjgsIDE2LCAyNDksIAorICAgIDg1LCAyMTYsIDg3LCAyOCwgMTYsIDIyNiwgMTM2LCAyNTQsIDE0MiwgMjgsIDE2LCAyMjYsIDEzNiwgMjUyLCAxMjIsIDI4LCAKKyAgICAxNiwgMjI0LCA0LCAyNTQsIDE0MiwgMjgsIDE2LCAyMjQsIDQsIDI1MiwgMTIyLCAyOCwgMTYsIDIzMCwgODgsIDIyMywgNjEsIAorICAgIDI4LCAxNiwgMjExLCAyNTEsIDIyMywgNjEsIDI4LCAxNiwgMTYzLCAyMjMsIDYxLCAyOCwgMTYsIDIyNCwgMjIsIDIyMywgCisgICAgNjEsIDI4LCAxNiwgMjQ1LCAxODksIDIyMywgNjEsIDI4LCAxNiwgMjE5LCAxMTgsIDIyMywgNjEsIDI4LCAxNiwgMjE2LCAKKyAgICAxNjAsIDIyMywgNjEsIDI4LCAxNiwgMjE5LCAxMTAsIDIyMywgNjEsIDI4LCAxNiwgMTIzLCAyNDAsIDIxMSwgMjE1LCA3MSwgCisgICAgMjIzLCA2MSwgMjgsIDE2LCAyMTEsIDE3OSwgMjI4LCA0MywgMjgsIDE2LCA5NiwgMjI4LCA0MywgMjgsIDE2LCAyNTAsIDM2LCAKKyAgICAyMTEsIDE3OSwgMjI4LCA0MywgMjgsIDE2LCA0MiwgMjI4LCA0NCwgMjExLCAyNTMsIDI4LCAxNiwgNDIsIDIyOCwgNDQsIAorICAgIDI1MSwgMjIxLCAyOCwgMTYsIDIxNSwgMjI2LCAyMjgsIDQ0LCAxMjAsIDIxMSwgMjUzLCAyOCwgMTYsIDIxNSwgMjI2LCAKKyAgICAyMjgsIDQ0LCAxMjAsIDI1MSwgMjIxLCAyOCwgMTYsIDIxNSwgMjI2LCAyMjgsIDQ0LCA0MywgMjExLCAyNTMsIDI4LCAxNiwgCisgICAgMjE1LCAyMjYsIDIyOCwgNDQsIDQzLCAyNTEsIDIyMSwgMjgsIDE2LCAyMTUsIDIyNiwgMjI4LCA0NCwgNDQsIDIxMSwgMjUzLCAKKyAgICAyOCwgMTYsIDIxNSwgMjI2LCAyMjgsIDQ0LCA0NCwgMjUxLCAyMjEsIDI4LCAxNiwgMjE1LCAyMjYsIDIyOCwgNDQsIDEyNCwgCisgICAgMjExLCAyNTMsIDI4LCAxNiwgMjE1LCAyMjYsIDIyOCwgNDQsIDEyNCwgMjUxLCAyMjEsIDI4LCAxNiwgMjE1LCAyMjYsIAorICAgIDIyOCwgNDQsIDEyMCwgNDQsIDIxMSwgMjUzLCAyOCwgMTYsIDIxNSwgMjI2LCAyMjgsIDQ0LCAxMjAsIDQ0LCAyNTEsIDIyMSwgCisgICAgMjgsIDE2LCAyMzAsIDEyOSwgMjI4LCA0NCwgMjExLCAyNTMsIDI4LCAxNiwgMjMwLCAxMjksIDIyOCwgNDQsIDI1MSwgMjIxLCAKKyAgICAyOCwgMTYsIDIxNSwgMjIzLCAyMjgsIDQ0LCAxMjQsIDIxMSwgMjUzLCAyOCwgMTYsIDIxNSwgMjIzLCAyMjgsIDQ0LCAxMjQsIAorICAgIDI1MSwgMjIxLCAyOCwgMTYsIDIyNiwgNCwgMjI4LCA0MywgMjgsIDE2LCAyMTMsIDEzMiwgMjI4LCA0MywgMjgsIDE2LCAKKyAgICAyMjgsIDQ0LCAyNTEsIDIyMSwgMjgsIDE2LCAyMjcsIDIwMywgMjI4LCA0MywgMjgsIDE2LCAyNDksIDI0MSwgMjI4LCA0NCwgCisgICAgMjExLCAyNTMsIDI4LCAxNiwgMjQ5LCAyNDEsIDIyOCwgNDQsIDI1MSwgMjIxLCAyOCwgMTYsIDI1MSwgMTQ2LCAyOCwgMTYsIAorICAgIDIxMSwgMjUxLCAyMjgsIDQ3LCAyOCwgMTYsIDE2MywgMjI4LCA0NywgMjgsIDE2LCAyMjQsIDIyLCAyMjgsIDQ3LCAyOCwgCisgICAgMTYsIDI0NSwgMTg5LCAyMjgsIDQ3LCAyOCwgMTYsIDIxOSwgMTE4LCAyMjgsIDQ3LCAyOCwgMTYsIDIxNiwgMTYwLCAyMjgsIAorICAgIDQ3LCAyOCwgMTYsIDIxOSwgMTEwLCAyMjgsIDQ3LCAyOCwgMTYsIDEyMywgMjQwLCAyMTEsIDIxNSwgNzEsIDIyOCwgNDcsIAorICAgIDI4LCAxNiwgMzgsIDIxOCwgMTM5LCAyOCwgMTYsIDM4LCAyMTgsIDI0MCwgMjE4LCAxMzksIDI4LCAxNiwgMzgsIDIxNSwgCisgICAgMjM0LCAyOCwgMTYsIDM4LCAyMTUsIDIzMywgMjgsIDE2LCAzOCwgMjE1LCAyMzIsIDI4LCAxNiwgMjQ0LCAxMDEsIDIxNSwgCisgICAgMjM0LCAyOCwgMTYsIDI0NCwgMTAxLCAyMTUsIDIzMywgMjgsIDE2LCAyNDQsIDEwMSwgMjE1LCAyMzIsIDI4LCAxNiwgMzgsIAorICAgIDI1MywgMTg5LCAyNDcsIDEyMCwgMjgsIDE2LCAzOCwgMjQ0LCA3MiwgMjgsIDE2LCAzOCwgMjQ0LCA3MSwgMjgsIDE2LCAzOCwgCisgICAgMjQ0LCA3MCwgMjgsIDE2LCAzOCwgMjQ0LCA2OSwgMjgsIDE2LCAzOCwgMjQ0LCA2OCwgMjgsIDE2LCAyNTIsIDU4LCAyNTIsIAorICAgIDc0LCAyOCwgMTYsIDI0NSwgMTQzLCAyNTIsIDc0LCAyOCwgMTYsIDI1MiwgNTgsIDIxNiwgMTExLCAyOCwgMTYsIDI0NSwgCisgICAgMTQzLCAyMTYsIDExMSwgMjgsIDE2LCAyNTIsIDU4LCAyMTksIDgwLCAyOCwgMTYsIDI0NSwgMTQzLCAyMTksIDgwLCAyOCwgCisgICAgMTYsIDI1MiwgNTgsIDIyNSwgMTE1LCAyOCwgMTYsIDI0NSwgMTQzLCAyMjUsIDExNSwgMjgsIDE2LCAzOCwgMjU1LCAxNCwgCisgICAgMjgsIDE2LCAzOCwgMjE4LCAxNjUsIDI4LCAxNiwgMzgsIDIxNiwgMjM4LCAyOCwgMTYsIDM4LCAyMTgsIDE2NiwgMjgsIDE2LCAKKyAgICAzOCwgMjMxLCAxNjIsIDI4LCAxNiwgMzgsIDIzMSwgMTYxLCAyOCwgMTYsIDM4LCAyNTUsIDEzLCAyOCwgMTYsIDM4LCAyMzIsIAorICAgIDExMiwgMjgsIDE2LCAyNTMsIDI1NCwgMjE0LCAxNjMsIDI4LCAxNiwgMjUzLCAyNTQsIDI0NiwgMTA2LCAyOCwgMTYsIDM4LCAKKyAgICAyNDcsIDEzNSwgMjgsIDE2LCAzOCwgMjIyLCAyMzEsIDI4LCAxNiwgMzgsIDI0NCwgNTgsIDI4LCAxNiwgMzgsIDIxOSwgNzYsIAorICAgIDI4LCAxNiwgMzgsIDI1MiwgMzgsIDI4LCAxNiwgMzgsIDUyLCAyMTYsIDE5LCAyOCwgMTYsIDM4LCAyMTUsIDIxMSwgMjE2LCAKKyAgICAxOSwgMjgsIDE2LCAyMjIsIDIzNSwgMjgsIDE2LCAyMTgsIDc1LCAyOCwgMTYsIDIxMCwgMTU5LCAyOCwgMTYsIDIyNSwgCisgICAgMTA3LCAyOCwgMTYsIDIzMSwgMjUsIDI4LCAxNiwgMjQ0LCAxNywgMjgsIDE2LCAyNDksIDEzOCwgMjgsIDE2LCAyNDgsIDc4LCAKKyAgICAyOCwgMTYsIDI0MiwgMTUwLCAyMjgsIDQ4LCAyMTksIDk1LCAyOCwgMTYsIDI0MiwgMTUwLCAyMjgsIDQ4LCAyMjgsIDc1LCAKKyAgICAyMTksIDk1LCAyOCwgMTYsIDIxNiwgMCwgMjgsIDE2LCAyMTUsIDk1LCAyOCwgMTYsIDIzNSwgMTkzLCAyMTUsIDk1LCAyOCwgCisgICAgMTYsIDIxNSwgOTYsIDIxOSwgOTUsIDI4LCAxNiwgMjE1LCA5NiwgMjE0LCAxNjMsIDI4LCAxNiwgMjI2LCAxNDgsIDIxOCwgCisgICAgMTAyLCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIDk5LCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIDk4LCAyOCwgMTYsIDIyNiwgCisgICAgMTQ4LCAyMTgsIDk3LCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIDk2LCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIDk1LCAyOCwgCisgICAgMTYsIDIyNiwgMTQ4LCAyMTgsIDk0LCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIDkzLCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIAorICAgIDkyLCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIDEwMSwgMjgsIDE2LCAyMjYsIDE0OCwgMjE4LCAxMDAsIDI4LCAxNiwgMjQxLCAKKyAgICAyNDUsIDI4LCAxNiwgMjI5LCAxMDUsIDI4LCAxNiwgMjQ1LCAxNDMsIDY0LCAyMTgsIDEzMywgMjgsIDE2LCAyNDgsIDcxLCAKKyAgICAyMTksIDk1LCAyOCwgMTYsIDM4LCAxMjQsIDI1MSwgMTY5LCAyOCwgMTYsIDM4LCAxMjAsIDI1MSwgMTY5LCAyOCwgMTYsIAorICAgIDM4LCAyNDIsIDAsIDI4LCAxNiwgMzgsIDIxOSwgNjcsIDIyNSwgNDMsIDI4LCAxNiwgMjI1LCAyMTYsIDc4LCAyOCwgMTYsIAorICAgIDIyNSwgMjE2LCAxMjAsIDc4LCAyOCwgMTYsIDE2MywgMjI1LCAyMTYsIDc4LCAyOCwgMTYsIDI0MiwgMTgyLCAyMTQsIDE2MywgCisgICAgMjgsIDE2LCAyNDIsIDE4MiwgMjQ2LCAxMDYsIDI4LCAxNiwgMiwgMjQ0LCAxMDAsIDI4LCAxNiwgMjQ4LCAxODAsIDI4LCAKKyAgICAxNiwgMjQ4LCAxODEsIDI1NCwgMTU0LCAyOCwgMTYsIDIzMSwgMTMzLCAyOCwgMTYsIDIzMiwgMTI5LCAyOCwgMTYsIDI1MSwgCisgICAgMTQzLCAyOCwgMTYsIDIyMCwgMTU0LCAyMTEsIDI1MywgMjgsIDE2LCAyMjAsIDE1NCwgMjUxLCAyMjEsIDI4LCAxNiwgMjMwLCAKKyAgICAxODQsIDI4LCAxNiwgMjMwLCAxODUsIDI1MSwgMjIxLCAyOCwgMTYsIDIyMCwgMTQ4LCAyMTEsIDI1MywgMjgsIDE2LCAyMjAsIAorICAgIDE0OCwgMjUxLCAyMjEsIDI4LCAxNiwgMjQzLCAyMjAsIDIxMSwgMjUzLCAyOCwgMTYsIDI0MywgMjIwLCAyNTEsIDIyMSwgCisgICAgMjgsIDE2LCAyMzIsIDEzMCwgMjI1LCAxODAsIDIyMywgNjEsIDI4LCAxNiwgMjMyLCAxMzAsIDIzNiwgNCwgMjIzLCA2MSwgCisgICAgMjgsIDE2LCAyNTEsIDE0NCwgMjIzLCA2MSwgMjgsIDE2LCAyMjAsIDE1NCwgMjIzLCA2MSwgMjgsIDE2LCAyMzAsIDE4NSwgCisgICAgMjIzLCA2MSwgMjgsIDE2LCAyMjAsIDE0OCwgMjIzLCA2MSwgMjgsIDE2LCAyMTYsIDI0OSwgMjI1LCAxNzgsIDI0OSwgMTA3LCAKKyAgICAyMjQsIDE3NCwgMjI1LCAxNzksIDI4LCAxNiwgMjE2LCAyNDksIDIyNSwgMTc4LCAyNDksIDEwNywgMjI0LCAxNzQsIDIzNiwgCisgICAgMywgMjgsIDE2LCAyMTYsIDI0OSwgMjI1LCAxNzgsIDI0OSwgMTA3LCAyMjQsIDE3NCwgMjI1LCAxODAsIDI0NywgMjExLCAKKyAgICAyOCwgMTYsIDIxNiwgMjQ5LCAyMzYsIDIsIDI0OSwgMTA3LCAyMjQsIDE3NCwgMjI1LCAxNzksIDI4LCAxNiwgMjE2LCAyNDksIAorICAgIDIzNiwgMiwgMjQ5LCAxMDcsIDIyNCwgMTc0LCAyMzYsIDMsIDI4LCAxNiwgMjE2LCAyNDksIDIzNiwgMiwgMjQ5LCAxMDcsIAorICAgIDIyNCwgMTc0LCAyMzYsIDQsIDI0NywgMjExLCAyOCwgMTYsIDIxNiwgMjQ5LCAyMzYsIDIsIDI0OSwgMTA3LCAyMjQsIDE3NCwgCisgICAgMjM2LCA0LCAyNDcsIDIxMCwgMjgsIDE2LCAyMTYsIDI0OSwgMjM2LCAyLCAyNDksIDEwNywgMjI0LCAxNzQsIDIzNiwgNCwgCisgICAgMjQ3LCAyMDksIDI4LCAxNiwgMjQ5LCAxMzMsIDI4LCAxNiwgMjQyLCAxMjYsIDI1MSwgNjcsIDI1MCwgMTQsIDI4LCAxNiwgCisgICAgMjQyLCAxMjYsIDI0NSwgNywgMjUwLCAxNCwgMjgsIDE2LCA0MiwgMjUzLCAxNTgsIDI4LCAxNiwgMjEzLCAxNTEsIDI4LCAKKyAgICAxNiwgMjI1LCAxNCwgMjgsIDE2LCAyNTAsIDUsIDI4LCAxNiwgMjIxLCAyMDMsIDI4LCAxNiwgMjUwLCA5LCAyOCwgMTYsIAorICAgIDIxNiwgNywgMjgsIDE2LCAyMjQsIDI0MiwgMjgsIDE2LCAyMjQsIDI0MywgMjQ0LCA2MCwgMjgsIDE2LCAyMjEsIDIwNCwgCisgICAgMjQ0LCA2MCwgMjgsIDE2LCAyMTYsIDgsIDIyMywgNTgsIDI4LCAxNiwgMjI1LCAxNjMsIDIxOCwgNjYsIDI2LCAyMTMsIAorICAgIDEzNywgMTg3LCAyMTcsIDIyOSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjE4LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAKKyAgICAyMDgsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIwMSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMTkzLCAyNiwgMjEzLCAKKyAgICAxMzcsIDE4NywgMjE3LCAxODcsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDE4NiwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgCisgICAgMTg1LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAxODQsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIyOCwgMjYsIDIxMywgCisgICAgMTM3LCAxODcsIDIxNywgMjI3LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMjYsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIAorICAgIDIyNSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjI0LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMjMsIDI2LCAyMTMsIAorICAgIDEzNywgMTg3LCAyMTcsIDIyMiwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjIxLCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAKKyAgICAyMjAsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIxOSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjE3LCAyNiwgMjEzLCAKKyAgICAxMzcsIDE4NywgMjE3LCAyMTYsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIxNSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgCisgICAgMjE0LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMTMsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDE5MiwgMjYsIDIxMywgCisgICAgMTM3LCAxODcsIDIxNywgMTkxLCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAxOTAsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIAorICAgIDE4OSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMTg4LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMjksIDI2LCAyMzUsIAorICAgIDIxNCwgMTg3LCAyMTcsIDIxOCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjAxLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAKKyAgICAxOTMsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDE4NiwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMTg1LCAyNiwgMjM1LCAKKyAgICAyMTQsIDE4NywgMjE3LCAyMjcsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIyNiwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgCisgICAgMjI1LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMjQsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIyMSwgMjYsIDIzNSwgCisgICAgMjE0LCAxODcsIDIxNywgMjIwLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMTksIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIAorICAgIDIxNCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjEzLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMTIsIDI2LCAyMzUsIAorICAgIDIxNCwgMTg3LCAyMTcsIDIxMSwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjEwLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAKKyAgICAyMDksIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIwNywgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjA2LCAyNiwgMjM1LCAKKyAgICAyMTQsIDE4NywgMjE3LCAyMDUsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIwNCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgCisgICAgMjAzLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMDIsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIwMCwgMjYsIDIzNSwgCisgICAgMjE0LCAxODcsIDIxNywgMTk5LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAxOTgsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIAorICAgIDE5NywgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMTk2LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAxOTUsIDI2LCAyMzUsIAorICAgIDIxNCwgMTg3LCAyMTcsIDE5NCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMTkyLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAKKyAgICAxOTEsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDE5MCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMTg5LCAyNiwgMjM1LCAKKyAgICAyMTQsIDE4NywgMjE3LCAxODgsIDM4LCAyNiwgMjgsIDIxNSwgMjA4LCAzOCwgMjYsIDI4LCAyMTYsIDIyMywgMzgsIDI2LCAKKyAgICAyOCwgMjI1LCAxODgsIDI2LCAyOCwgMjMzLCAzMSwgMjMwLCAxNDIsIDMxLCAyNDUsIDIyMywgMjQ3LCAyMjQsIDMxLCAyNDEsIAorICAgIDIyMiwgMjQ1LCAyMjMsIDI0NywgMjI0LCAzMSwgMjQwLCAyMTQsIDI0NSwgMjIzLCAyNDcsIDIyNCwgMzEsIDI0NSwgMjIyLCAKKyAgICAyNDEsIDIyMywgMjQ3LCAyMjQsIDMxLCAyNDUsIDIyMiwgMjQwLCAyMTMsIDI0NywgMjI0LCAzMSwgMjQ1LCAyMjMsIDE4MCwgCisgICAgMzEsIDI1MCwgMTc0LCAxODAsIDMxLCAyNDMsIDIyOSwgMjUwLCAzNSwgMTgwLCAzMSwgMjMwLCAxNzcsIDE4MCwgMzEsIAorICAgIDI1MiwgMTMwLCAxODAsIDMxLCAyMzQsIDE3OSwgMjE5LCA3OSwgMTgwLCAzMSwgMjQ5LCAxNzksIDE4MCwgMzEsIDI1MywgCisgICAgMjMzLCAxODAsIDMxLCAyMjYsIDE2MywgMTgwLCAzMSwgMjUxLCAxNTMsIDIyNiwgMTMwLCAxODAsIDMxLCAyNDgsIDczLCAKKyAgICAxNzcsIDI0NywgMTc5LCAxODAsIDMxLCAyNDcsIDE3NiwgMTgwLCAzMSwgMjEwLCAyMjIsIDE4MCwgMzEsIDIzNSwgMjQ3LCAKKyAgICAxODAsIDMxLCAyMjUsIDE5NywgMTgwLCAzMSwgMjIzLCAxMjcsIDE4MCwgMzEsIDI0OSwgMTg5LCAxODAsIDMxLCAyNDEsIAorICAgIDYwLCAyNTIsIDE4NCwgMTgwLCAzMSwgMjEyLCA1OSwgMTgwLCAzMSwgMjQ0LCAzOSwgMTgwLCAzMSwgMjU0LCAyNDYsIDE4MCwgCisgICAgMzEsIDIyMywgODksIDE4MCwgMzEsIDIyMywgNjUsIDE4MCwgMzEsIDI0NSwgMjIxLCAxODAsIDMxLCAyMzUsIDUzLCAxODAsIAorICAgIDMxLCAyNDksIDE4NCwgMTgwLCAzMSwgMjQ1LCAxNDIsIDE4MCwgMzEsIDI0NiwgNTIsIDE4MCwgMzEsIDI1MCwgMTQ1LCAKKyAgICAxODAsIDMxLCAyNDgsIDgyLCAxODAsIDMxLCAyMywgMjIzLCA2NCwgMTgwLCAzMSwgMjI2LCA4MSwgMTgwLCAzMSwgMjMzLCAKKyAgICAzNCwgMTgwLCAzMSwgMjQ5LCAyNTQsIDE4MCwgMzEsIDIzNCwgNzcsIDE4MCwgMzEsIDI0MywgODYsIDE4MCwgMzEsIDIxOCwgCisgICAgMTEyLCAxODAsIDMxLCAyMjQsIDEzMCwgMTgwLCAzMSwgMjQzLCAyMjgsIDE4MCwgMzEsIDIyMywgNjYsIDE4MCwgMzEsIAorICAgIDIzMywgNzEsIDE3NywgMjMwLCAxNTcsIDE4MCwgMzEsIDIyMywgNjIsIDE4MCwgMzEsIDI0MiwgMTY4LCAyMTYsIDQyLCAKKyAgICAyMzEsIDc2LCAxODAsIDMxLCAyNDUsIDE0NCwgMTgwLCAzMSwgMjE4LCAxMjQsIDE4MCwgMzEsIDI0MiwgMTI4LCAxODAsIAorICAgIDMxLCAyNDUsIDEzNiwgMTgwLCAzMSwgMjI1LCAyMzUsIDE4MCwgMzEsIDIyMiwgMjI1LCAxODAsIDMxLCAyNDQsIDU5LCAKKyAgICAxODAsIDMxLCAyMTQsIDgsIDE3NywgMjEyLCA0NCwgMTgwLCAzMSwgMjQ5LCAxOTMsIDE4MCwgMzEsIDIzMSwgODksIDE4MCwgCisgICAgMzEsIDI0NSwgNjEsIDE4MCwgMzEsIDIxNCwgMTcyLCAxODAsIDMxLCAyNDcsIDIxMiwgMTgwLCAzMSwgMjUwLCAwLCAyMzAsIAorICAgIDExMCwgMTgwLCAzMSwgMjQyLCAxMDYsIDE4MCwgMzEsIDI0MywgODcsIDIzNSwgMjU1LCAxODAsIDMxLCAyMzEsIDE0MSwgCisgICAgMTgwLCAzMSwgMjU1LCAxMCwgMTgwLCAzMSwgMjQ1LCAxNTcsIDE4MCwgMzEsIDI0NiwgMTA5LCAxODAsIDMxLCAyMTIsIDQyLCAKKyAgICAxODAsIDMxLCAyMTksIDE1MCwgMTgwLCAzMSwgMjM1LCAyMjIsIDE4MCwgMzEsIDI0OCwgNDIsIDE4MCwgMzEsIDI0OCwgCisgICAgMTYwLCAxODAsIDMxLCAyNDcsIDIwOCwgMTgwLCAzMSwgMjQ1LCAyOSwgMTgwLCAzMSwgMjIwLCAxMTUsIDE4MCwgMzEsIAorICAgIDIxOCwgMTI4LCAxODAsIDMxLCAyNDIsIDIsIDE4MCwgMzEsIDI0OSwgMjEyLCAxODAsIDMxLCAyNDksIDI1MSwgMTgwLCAzMSwgCisgICAgMjQ0LCAxNzcsIDE4MCwgMzEsIDI1NCwgMjEyLCAxODAsIDMxLCAyNDksIDIxMSwgMTgwLCAzMSwgMjI2LCAxOTcsIDIxNiwgCisgICAgMTk2LCAyMTMsIDI0MiwgMTgwLCAzMSwgMjQ3LCAyMzIsIDE4MCwgMzEsIDIzMywgMTI0LCAxODAsIDMxLCAyNDQsIDEzLCAKKyAgICAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAyMSwgMTEwLCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAyMSwgCisgICAgMTA1LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAyMSwgMTU4LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAKKyAgICAyMSwgMTYxLCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAyMSwgMTg5LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgCisgICAgMTc0LCAyMSwgMTk0LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAyMSwgMTk4LCAyNDksIDE0OSwgMjIyLCAyMDIsIAorICAgIDIxNCwgMTc0LCAyMSwgMTk1LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAyMSwgMjAwLCAyNDksIDE0OSwgMjIyLCAKKyAgICAyMDIsIDIxNiwgMjQzLCAyMSwgMTEwLCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMTA1LCAyNDksIDE0OSwgCisgICAgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMTU4LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMTYxLCAyNDksIAorICAgIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMTg5LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMTk0LCAKKyAgICAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMTk4LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgCisgICAgMTk1LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMjAwLCAxMSwgMjMsIDYsIDYxLCAxMSwgMjMsIDYsIAorICAgIDI1MywgMTU4LCAxMSwgMjMsIDYsIDI1MSwgNjYsIDExLCAyMywgNiwgMjQ5LCA2MCwgMTEsIDIzLCA2LCA3NSwgMTEsIDIzLCAKKyAgICA2LCAyNDUsIDYsIDExLCAyMywgNiwgMjQzLCAyMDIsIDExLCAyMywgNiwgMjQyLCA2MCwgMTEsIDIzLCA2LCA3MywgMTEsIAorICAgIDIzLCA2LCAyMzUsIDE0NCwgMTEsIDIzLCA2LCAyMzUsIDIzLCAxMSwgMjMsIDYsIDE1NiwgMTEsIDIzLCA2LCAxOTMsIDExLCAKKyAgICAyMywgNiwgMjMwLCAyNSwgMTEsIDIzLCA2LCA3NiwgMTEsIDIzLCA2LCAyMjYsIDEwNSwgMTEsIDIzLCA2LCAyMjQsIDk2LCAKKyAgICAxMSwgMjMsIDYsIDE1MywgMTEsIDIzLCA2LCAyMjIsIDkxLCAxMSwgMjMsIDYsIDIxNywgMTUyLCAxMSwgMjMsIDYsIDcwLCAKKyAgICAxMSwgMjMsIDYsIDIxNCwgMTA1LCAxMSwgMjMsIDYsIDIxMiwgOTgsIDExLCAyMywgNiwgMjExLCAxNzgsIDExLCAyMywgNiwgCisgICAgMjExLCAxMTcsIDExLCAyMywgNiwgMjEwLCAxNTksIDExLCAyMywgNCwgNjEsIDExLCAyMywgNCwgMjUzLCAxNTgsIDExLCAKKyAgICAyMywgNCwgMjUxLCA2NiwgMTEsIDIzLCA0LCAyNDksIDYwLCAxMSwgMjMsIDQsIDc1LCAxMSwgMjMsIDQsIDI0NSwgNiwgMTEsIAorICAgIDIzLCA0LCAyNDMsIDIwMiwgMTEsIDIzLCA0LCAyNDIsIDYwLCAxMSwgMjMsIDQsIDczLCAxMSwgMjMsIDQsIDIzNSwgMTQ0LCAKKyAgICAxMSwgMjMsIDQsIDIzNSwgMjMsIDExLCAyMywgNCwgMTU2LCAxMSwgMjMsIDQsIDE5MywgMTEsIDIzLCA0LCAyMzAsIDI1LCAKKyAgICAxMSwgMjMsIDQsIDc2LCAxMSwgMjMsIDQsIDIyNiwgMTA1LCAxMSwgMjMsIDQsIDIyNCwgOTYsIDExLCAyMywgNCwgMTUzLCAKKyAgICAxMSwgMjMsIDQsIDIyMiwgOTEsIDExLCAyMywgNCwgMjE3LCAxNTIsIDExLCAyMywgNCwgNzAsIDExLCAyMywgNCwgMjE0LCAKKyAgICAxMDUsIDExLCAyMywgNCwgMjEyLCA5OCwgMTEsIDIzLCA0LCAyMTEsIDE3OCwgMTEsIDIzLCA0LCAyMTEsIDExNywgMTEsIAorICAgIDIzLCA0LCAyMTAsIDE1OSwgMTEsIDMyLCA2LCA2MSwgMTEsIDMyLCA2LCAyNTMsIDE1OCwgMTEsIDMyLCA2LCAyNTEsIDY2LCAKKyAgICAxMSwgMzIsIDYsIDI0OSwgNjAsIDExLCAzMiwgNiwgNzUsIDExLCAzMiwgNiwgMjQ1LCA2LCAxMSwgMzIsIDYsIDI0MywgCisgICAgMjAyLCAxMSwgMzIsIDYsIDI0MiwgNjAsIDExLCAzMiwgNiwgNzMsIDExLCAzMiwgNiwgMjM1LCAxNDQsIDExLCAzMiwgNiwgCisgICAgMjM1LCAyMywgMTEsIDMyLCA2LCAxNTYsIDExLCAzMiwgNiwgMTkzLCAxMSwgMzIsIDYsIDIzMCwgMjUsIDExLCAzMiwgNiwgCisgICAgNzYsIDExLCAzMiwgNiwgMjI2LCAxMDUsIDExLCAzMiwgNiwgMjI0LCA5NiwgMTEsIDMyLCA2LCAxNTMsIDExLCAzMiwgNiwgCisgICAgMjIyLCA5MSwgMTEsIDMyLCA2LCAyMTcsIDE1MiwgMTEsIDMyLCA2LCA3MCwgMTEsIDMyLCA2LCAyMTQsIDEwNSwgMTEsIDMyLCAKKyAgICA2LCAyMTIsIDk4LCAxMSwgMzIsIDYsIDIxMSwgMTc4LCAxMSwgMzIsIDYsIDIxMSwgMTE3LCAxMSwgMzIsIDYsIDIxMCwgCisgICAgMTU5LCAxMSwgMzIsIDQsIDYxLCAxMSwgMzIsIDQsIDI1MywgMTU4LCAxMSwgMzIsIDQsIDI1MSwgNjYsIDExLCAzMiwgNCwgCisgICAgMjQ5LCA2MCwgMTEsIDMyLCA0LCA3NSwgMTEsIDMyLCA0LCAyNDUsIDYsIDExLCAzMiwgNCwgMjQzLCAyMDIsIDExLCAzMiwgCisgICAgNCwgNzMsIDExLCAzMiwgNCwgMjM1LCAxNDQsIDExLCAzMiwgNCwgMjM1LCAyMywgMTEsIDMyLCA0LCAxNTYsIDExLCAzMiwgCisgICAgNCwgMTkzLCAxMSwgMzIsIDQsIDIzMCwgMjUsIDExLCAzMiwgNCwgNzYsIDExLCAzMiwgNCwgMjI2LCAxMDUsIDExLCAzMiwgCisgICAgNCwgMjI0LCA5NiwgMTEsIDMyLCA0LCAxNTMsIDExLCAzMiwgNCwgMjIyLCA5MSwgMTEsIDMyLCA0LCAyMTcsIDE1MiwgMTEsIAorICAgIDMyLCA0LCA3MCwgMTEsIDMyLCA0LCAyMTQsIDEwNSwgMTEsIDMyLCA0LCAyMTIsIDk4LCAxMSwgMzIsIDQsIDIxMSwgMTc4LCAKKyAgICAxMSwgMzIsIDQsIDIxMSwgMTE3LCAxMSwgMzIsIDQsIDIxMCwgMTU5LCAxMSwgMjMsIDMyLCA2LCA2MSwgMTEsIDIzLCAzMiwgCisgICAgNiwgMjUzLCAxNTgsIDExLCAyMywgMzIsIDYsIDI1MSwgNjYsIDExLCAyMywgMzIsIDYsIDI0OSwgNjAsIDExLCAyMywgMzIsIAorICAgIDYsIDc1LCAxMSwgMjMsIDMyLCA2LCAyNDUsIDYsIDExLCAyMywgMzIsIDYsIDI0MywgMjAyLCAxMSwgMjMsIDMyLCA2LCAKKyAgICAyNDIsIDYwLCAxMSwgMjMsIDMyLCA2LCA3MywgMTEsIDIzLCAzMiwgNiwgMjM1LCAxNDQsIDExLCAyMywgMzIsIDYsIDIzNSwgCisgICAgMjMsIDExLCAyMywgMzIsIDYsIDE1NiwgMTEsIDIzLCAzMiwgNiwgMTkzLCAxMSwgMjMsIDMyLCA2LCAyMzAsIDI1LCAxMSwgCisgICAgMjMsIDMyLCA2LCA3NiwgMTEsIDIzLCAzMiwgNiwgMjI2LCAxMDUsIDExLCAyMywgMzIsIDYsIDIyNCwgOTYsIDExLCAyMywgCisgICAgMzIsIDYsIDE1MywgMTEsIDIzLCAzMiwgNiwgMjIyLCA5MSwgMTEsIDIzLCAzMiwgNiwgMjE3LCAxNTIsIDExLCAyMywgMzIsIAorICAgIDYsIDcwLCAxMSwgMjMsIDMyLCA2LCAyMTQsIDEwNSwgMTEsIDIzLCAzMiwgNiwgMjEyLCA5OCwgMTEsIDIzLCAzMiwgNiwgCisgICAgMjExLCAxNzgsIDExLCAyMywgMzIsIDYsIDIxMSwgMTE3LCAxMSwgMjMsIDMyLCA2LCAyMTAsIDE1OSwgMTEsIDIzLCAzMiwgCisgICAgNCwgNjEsIDExLCAyMywgMzIsIDQsIDI1MywgMTU4LCAxMSwgMjMsIDMyLCA0LCAyNTEsIDY2LCAxMSwgMjMsIDMyLCA0LCAKKyAgICAyNDksIDYwLCAxMSwgMjMsIDMyLCA0LCA3NSwgMTEsIDIzLCAzMiwgNCwgMjQ1LCA2LCAxMSwgMjMsIDMyLCA0LCAyNDMsIAorICAgIDIwMiwgMTEsIDIzLCAzMiwgNCwgMjQyLCA2MCwgMTEsIDIzLCAzMiwgNCwgNzMsIDExLCAyMywgMzIsIDQsIDIzNSwgMTQ0LCAKKyAgICAxMSwgMjMsIDMyLCA0LCAyMzUsIDIzLCAxMSwgMjMsIDMyLCA0LCAxNTYsIDExLCAyMywgMzIsIDQsIDE5MywgMTEsIDIzLCAKKyAgICAzMiwgNCwgMjMwLCAyNSwgMTEsIDIzLCAzMiwgNCwgNzYsIDExLCAyMywgMzIsIDQsIDIyNiwgMTA1LCAxMSwgMjMsIDMyLCAKKyAgICA0LCAyMjQsIDk2LCAxMSwgMjMsIDMyLCA0LCAxNTMsIDExLCAyMywgMzIsIDQsIDIyMiwgOTEsIDExLCAyMywgMzIsIDQsIAorICAgIDIxNywgMTUyLCAxMSwgMjMsIDMyLCA0LCA3MCwgMTEsIDIzLCAzMiwgNCwgMjE0LCAxMDUsIDExLCAyMywgMzIsIDQsIDIxMiwgCisgICAgOTgsIDExLCAyMywgMzIsIDQsIDIxMSwgMTc4LCAxMSwgMjMsIDMyLCA0LCAyMTEsIDExNywgMTEsIDIzLCAzMiwgNCwgMjEwLCAKKyAgICAxNTksIDExLCAxMTksIDYsIDYxLCAxMSwgMTE5LCA2LCAyNTEsIDY2LCAxMSwgMTE5LCA2LCAyNDksIDYwLCAxMSwgMTE5LCAKKyAgICA2LCAyNDMsIDIwMiwgMTEsIDExOSwgNiwgMjM1LCAxNDQsIDExLCAxMTksIDYsIDIzNSwgMjMsIDExLCAxMTksIDYsIDIzMCwgCisgICAgMjUsIDExLCAxMTksIDYsIDc2LCAxMSwgMTE5LCA2LCAyMjYsIDEwNSwgMTEsIDExOSwgNiwgMjI0LCA5NiwgMTEsIDExOSwgCisgICAgNiwgMjIyLCA5MSwgMTEsIDExOSwgNiwgMjE3LCAxNTIsIDExLCAxMTksIDYsIDcwLCAxMSwgMTE5LCA2LCAyMTQsIDEwNSwgCisgICAgMTEsIDExOSwgNiwgMjEyLCA5OCwgMTEsIDExOSwgNiwgMjExLCAxNzgsIDExLCAxMTksIDYsIDIxMSwgMTE3LCAxMSwgMTE5LCAKKyAgICA2LCAyMTAsIDE1OSwgMTEsIDExOSwgNCwgNjEsIDExLCAxMTksIDQsIDI1MywgMTU4LCAxMSwgMTE5LCA0LCAyNTEsIDY2LCAKKyAgICAxMSwgMTE5LCA0LCAyNDksIDYwLCAxMSwgMTE5LCA0LCAyNDUsIDYsIDExLCAxMTksIDQsIDI0MiwgNjAsIDExLCAxMTksIDQsIAorICAgIDczLCAxMSwgMTE5LCA0LCAyMzUsIDE0NCwgMTEsIDExOSwgNCwgMjM1LCAyMywgMTEsIDExOSwgNCwgMTU2LCAxMSwgMTE5LCAKKyAgICA0LCAxOTMsIDExLCAxMTksIDQsIDIzMCwgMjUsIDExLCAxMTksIDQsIDIyNiwgMTA1LCAxMSwgMTE5LCA0LCAyMjQsIDk2LCAKKyAgICAxMSwgMTE5LCA0LCAxNTMsIDExLCAxMTksIDQsIDIyMiwgOTEsIDExLCAxMTksIDQsIDIxNywgMTUyLCAxMSwgMTE5LCA0LCAKKyAgICA3MCwgMTEsIDExOSwgNCwgMjE0LCAxMDUsIDExLCAxMTksIDQsIDIxMiwgOTgsIDExLCAxMTksIDQsIDIxMSwgMTc4LCAxMSwgCisgICAgMTE5LCA0LCAyMTEsIDExNywgMTEsIDExOSwgNCwgMjEwLCAxNTksIDExLCAyMywgMTE5LCA2LCA2MSwgMTEsIDIzLCAxMTksIAorICAgIDYsIDI1MywgMTU4LCAxMSwgMjMsIDExOSwgNiwgMjUxLCA2NiwgMTEsIDIzLCAxMTksIDYsIDI0OSwgNjAsIDExLCAyMywgCisgICAgMTE5LCA2LCA3NSwgMTEsIDIzLCAxMTksIDYsIDI0NSwgNiwgMTEsIDIzLCAxMTksIDYsIDI0MywgMjAyLCAxMSwgMjMsIAorICAgIDExOSwgNiwgMjQyLCA2MCwgMTEsIDIzLCAxMTksIDYsIDczLCAxMSwgMjMsIDExOSwgNiwgMjM1LCAxNDQsIDExLCAyMywgCisgICAgMTE5LCA2LCAyMzUsIDIzLCAxMSwgMjMsIDExOSwgNiwgMTU2LCAxMSwgMjMsIDExOSwgNiwgMTkzLCAxMSwgMjMsIDExOSwgCisgICAgNiwgMjMwLCAyNSwgMTEsIDIzLCAxMTksIDYsIDc2LCAxMSwgMjMsIDExOSwgNiwgMjI2LCAxMDUsIDExLCAyMywgMTE5LCA2LCAKKyAgICAyMjQsIDk2LCAxMSwgMjMsIDExOSwgNiwgMTUzLCAxMSwgMjMsIDExOSwgNiwgMjIyLCA5MSwgMTEsIDIzLCAxMTksIDYsIAorICAgIDIxNywgMTUyLCAxMSwgMjMsIDExOSwgNiwgNzAsIDExLCAyMywgMTE5LCA2LCAyMTQsIDEwNSwgMTEsIDIzLCAxMTksIDYsIAorICAgIDIxMiwgOTgsIDExLCAyMywgMTE5LCA2LCAyMTEsIDE3OCwgMTEsIDIzLCAxMTksIDYsIDIxMSwgMTE3LCAxMSwgMjMsIDExOSwgCisgICAgNiwgMjEwLCAxNTksIDExLCAyMywgMTE5LCA0LCA2MSwgMTEsIDIzLCAxMTksIDQsIDI1MywgMTU4LCAxMSwgMjMsIDExOSwgCisgICAgNCwgMjUxLCA2NiwgMTEsIDIzLCAxMTksIDQsIDI0OSwgNjAsIDExLCAyMywgMTE5LCA0LCA3NSwgMTEsIDIzLCAxMTksIDQsIAorICAgIDI0NSwgNiwgMTEsIDIzLCAxMTksIDQsIDI0MywgMjAyLCAxMSwgMjMsIDExOSwgNCwgMjQyLCA2MCwgMTEsIDIzLCAxMTksIAorICAgIDQsIDczLCAxMSwgMjMsIDExOSwgNCwgMjM1LCAxNDQsIDExLCAyMywgMTE5LCA0LCAyMzUsIDIzLCAxMSwgMjMsIDExOSwgNCwgCisgICAgMTU2LCAxMSwgMjMsIDExOSwgNCwgMTkzLCAxMSwgMjMsIDExOSwgNCwgMjMwLCAyNSwgMTEsIDIzLCAxMTksIDQsIDc2LCAKKyAgICAxMSwgMjMsIDExOSwgNCwgMjI2LCAxMDUsIDExLCAyMywgMTE5LCA0LCAyMjQsIDk2LCAxMSwgMjMsIDExOSwgNCwgMTUzLCAKKyAgICAxMSwgMjMsIDExOSwgNCwgMjIyLCA5MSwgMTEsIDIzLCAxMTksIDQsIDIxNywgMTUyLCAxMSwgMjMsIDExOSwgNCwgNzAsIAorICAgIDExLCAyMywgMTE5LCA0LCAyMTQsIDEwNSwgMTEsIDIzLCAxMTksIDQsIDIxMiwgOTgsIDExLCAyMywgMTE5LCA0LCAyMTEsIAorICAgIDE3OCwgMTEsIDIzLCAxMTksIDQsIDIxMSwgMTE3LCAxMSwgMjMsIDExOSwgNCwgMjEwLCAxNTksIDExLCAxMzMsIDYsIDYxLCAKKyAgICAxMSwgMTMzLCA2LCAyNTMsIDE1OCwgMTEsIDEzMywgNiwgMjQ5LCA2MCwgMTEsIDEzMywgNiwgNzUsIDExLCAxMzMsIDYsIAorICAgIDI0NSwgNiwgMTEsIDEzMywgNiwgMjQzLCAyMDIsIDExLCAxMzMsIDYsIDIzNSwgMTQ0LCAxMSwgMTMzLCA2LCAyMzUsIDIzLCAKKyAgICAxMSwgMTMzLCA2LCAxNTYsIDExLCAxMzMsIDYsIDE5MywgMTEsIDEzMywgNiwgMjMwLCAyNSwgMTEsIDEzMywgNiwgNzYsIAorICAgIDExLCAxMzMsIDYsIDIyNiwgMTA1LCAxMSwgMTMzLCA2LCAyMjQsIDk2LCAxMSwgMTMzLCA2LCAyMjIsIDkxLCAxMSwgMTMzLCAKKyAgICA2LCAyMTcsIDE1MiwgMTEsIDEzMywgNiwgNzAsIDExLCAxMzMsIDYsIDIxNCwgMTA1LCAxMSwgMTMzLCA2LCAyMTIsIDk4LCAKKyAgICAxMSwgMTMzLCA2LCAyMTEsIDE3OCwgMTEsIDEzMywgNiwgMjExLCAxMTcsIDExLCAxMzMsIDQsIDYxLCAxMSwgMTMzLCA0LCAKKyAgICAyNTMsIDE1OCwgMTEsIDEzMywgNCwgMjUxLCA2NiwgMTEsIDEzMywgNCwgMjQ5LCA2MCwgMTEsIDEzMywgNCwgNzUsIDExLCAKKyAgICAxMzMsIDQsIDI0NSwgNiwgMTEsIDEzMywgNCwgMjQzLCAyMDIsIDExLCAxMzMsIDQsIDI0MiwgNjAsIDExLCAxMzMsIDQsIAorICAgIDczLCAxMSwgMTMzLCA0LCAyMzUsIDE0NCwgMTEsIDEzMywgNCwgMjM1LCAyMywgMTEsIDEzMywgNCwgMTU2LCAxMSwgMTMzLCAKKyAgICA0LCAxOTMsIDExLCAxMzMsIDQsIDIzMCwgMjUsIDExLCAxMzMsIDQsIDc2LCAxMSwgMTMzLCA0LCAyMjYsIDEwNSwgMTEsIAorICAgIDEzMywgNCwgMjI0LCA5NiwgMTEsIDEzMywgNCwgMTUzLCAxMSwgMTMzLCA0LCAyMjIsIDkxLCAxMSwgMTMzLCA0LCAyMTcsIAorICAgIDE1MiwgMTEsIDEzMywgNCwgNzAsIDExLCAxMzMsIDQsIDIxNCwgMTA1LCAxMSwgMTMzLCA0LCAyMTIsIDk4LCAxMSwgMTMzLCAKKyAgICA0LCAyMTEsIDE3OCwgMTEsIDEzMywgNCwgMjExLCAxMTcsIDExLCAxMzMsIDQsIDIxMCwgMTU5LCAxMSwgMTM5LCA2LCA2MSwgCisgICAgMTEsIDEzOSwgNiwgMjUzLCAxNTgsIDExLCAxMzksIDYsIDI0OSwgNjAsIDExLCAxMzksIDYsIDc1LCAxMSwgMTM5LCA2LCAKKyAgICAyNDUsIDYsIDExLCAxMzksIDYsIDI0MywgMjAyLCAxMSwgMTM5LCA2LCA3MywgMTEsIDEzOSwgNiwgMjM1LCAxNDQsIDExLCAKKyAgICAxMzksIDYsIDIzNSwgMjMsIDExLCAxMzksIDYsIDE1NiwgMTEsIDEzOSwgNiwgMTkzLCAxMSwgMTM5LCA2LCA3NiwgMTEsIAorICAgIDEzOSwgNiwgMjIyLCA5MSwgMTEsIDEzOSwgNiwgMjE3LCAxNTIsIDExLCAxMzksIDYsIDcwLCAxMSwgMTM5LCA2LCAyMTQsIAorICAgIDEwNSwgMTEsIDEzOSwgNiwgMjEyLCA5OCwgMTEsIDEzOSwgNiwgMjExLCAxNzgsIDExLCAxMzksIDYsIDIxMSwgMTE3LCAxMSwgCisgICAgMTM5LCA0LCA2MSwgMTEsIDEzOSwgNCwgMjUzLCAxNTgsIDExLCAxMzksIDQsIDI1MSwgNjYsIDExLCAxMzksIDQsIDI0OSwgCisgICAgNjAsIDExLCAxMzksIDQsIDc1LCAxMSwgMTM5LCA0LCAyNDUsIDYsIDExLCAxMzksIDQsIDI0MywgMjAyLCAxMSwgMTM5LCA0LCAKKyAgICAyNDIsIDYwLCAxMSwgMTM5LCA0LCA3MywgMTEsIDEzOSwgNCwgMjM1LCAxNDQsIDExLCAxMzksIDQsIDIzNSwgMjMsIDExLCAKKyAgICAxMzksIDQsIDE1NiwgMTEsIDEzOSwgNCwgMTkzLCAxMSwgMTM5LCA0LCAyMzAsIDI1LCAxMSwgMTM5LCA0LCA3NiwgMTEsIAorICAgIDEzOSwgNCwgMjI2LCAxMDUsIDExLCAxMzksIDQsIDIyNCwgOTYsIDExLCAxMzksIDQsIDE1MywgMTEsIDEzOSwgNCwgMjIyLCAKKyAgICA5MSwgMTEsIDEzOSwgNCwgMjE3LCAxNTIsIDExLCAxMzksIDQsIDcwLCAxMSwgMTM5LCA0LCAyMTQsIDEwNSwgMTEsIDEzOSwgCisgICAgNCwgMjEyLCA5OCwgMTEsIDEzOSwgNCwgMjExLCAxNzgsIDExLCAxMzksIDQsIDIxMSwgMTE3LCAxMSwgMTM5LCA0LCAyMTAsIAorICAgIDE1OSwgMTEsIDIzLCAxMzMsIDYsIDYxLCAxMSwgMjMsIDEzMywgNiwgMjUzLCAxNTgsIDExLCAyMywgMTMzLCA2LCAyNTEsIAorICAgIDY2LCAxMSwgMjMsIDEzMywgNiwgMjQ5LCA2MCwgMTEsIDIzLCAxMzMsIDYsIDc1LCAxMSwgMjMsIDEzMywgNiwgMjQ1LCA2LCAKKyAgICAxMSwgMjMsIDEzMywgNiwgMjQzLCAyMDIsIDExLCAyMywgMTMzLCA2LCAyNDIsIDYwLCAxMSwgMjMsIDEzMywgNiwgNzMsIAorICAgIDExLCAyMywgMTMzLCA2LCAyMzUsIDE0NCwgMTEsIDIzLCAxMzMsIDYsIDIzNSwgMjMsIDExLCAyMywgMTMzLCA2LCAxNTYsIAorICAgIDExLCAyMywgMTMzLCA2LCAxOTMsIDExLCAyMywgMTMzLCA2LCAyMzAsIDI1LCAxMSwgMjMsIDEzMywgNiwgNzYsIDExLCAyMywgCisgICAgMTMzLCA2LCAyMjYsIDEwNSwgMTEsIDIzLCAxMzMsIDYsIDIyNCwgOTYsIDExLCAyMywgMTMzLCA2LCAxNTMsIDExLCAyMywgCisgICAgMTMzLCA2LCAyMjIsIDkxLCAxMSwgMjMsIDEzMywgNiwgMjE3LCAxNTIsIDExLCAyMywgMTMzLCA2LCA3MCwgMTEsIDIzLCAKKyAgICAxMzMsIDYsIDIxNCwgMTA1LCAxMSwgMjMsIDEzMywgNiwgMjEyLCA5OCwgMTEsIDIzLCAxMzMsIDYsIDIxMSwgMTc4LCAxMSwgCisgICAgMjMsIDEzMywgNiwgMjExLCAxMTcsIDExLCAyMywgMTMzLCA2LCAyMTAsIDE1OSwgMTEsIDIzLCAxMzMsIDQsIDYxLCAxMSwgCisgICAgMjMsIDEzMywgNCwgMjUzLCAxNTgsIDExLCAyMywgMTMzLCA0LCAyNTEsIDY2LCAxMSwgMjMsIDEzMywgNCwgMjQ5LCA2MCwgCisgICAgMTEsIDIzLCAxMzMsIDQsIDc1LCAxMSwgMjMsIDEzMywgNCwgMjQ1LCA2LCAxMSwgMjMsIDEzMywgNCwgMjQzLCAyMDIsIDExLCAKKyAgICAyMywgMTMzLCA0LCAyNDIsIDYwLCAxMSwgMjMsIDEzMywgNCwgNzMsIDExLCAyMywgMTMzLCA0LCAyMzUsIDE0NCwgMTEsIAorICAgIDIzLCAxMzMsIDQsIDIzNSwgMjMsIDExLCAyMywgMTMzLCA0LCAxNTYsIDExLCAyMywgMTMzLCA0LCAxOTMsIDExLCAyMywgCisgICAgMTMzLCA0LCAyMzAsIDI1LCAxMSwgMjMsIDEzMywgNCwgNzYsIDExLCAyMywgMTMzLCA0LCAyMjYsIDEwNSwgMTEsIDIzLCAKKyAgICAxMzMsIDQsIDIyNCwgOTYsIDExLCAyMywgMTMzLCA0LCAxNTMsIDExLCAyMywgMTMzLCA0LCAyMjIsIDkxLCAxMSwgMjMsIAorICAgIDEzMywgNCwgMjE3LCAxNTIsIDExLCAyMywgMTMzLCA0LCA3MCwgMTEsIDIzLCAxMzMsIDQsIDIxNCwgMTA1LCAxMSwgMjMsIAorICAgIDEzMywgNCwgMjEyLCA5OCwgMTEsIDIzLCAxMzMsIDQsIDIxMSwgMTc4LCAxMSwgMjMsIDEzMywgNCwgMjExLCAxMTcsIDExLCAKKyAgICAyMywgMTMzLCA0LCAyMTAsIDE1OSwgMTEsIDM1LCA2LCA2MSwgMTEsIDM1LCA2LCAyNTMsIDE1OCwgMTEsIDM1LCA2LCAyNTEsIAorICAgIDY2LCAxMSwgMzUsIDYsIDI0OSwgNjAsIDExLCAzNSwgNiwgNzUsIDExLCAzNSwgNiwgMjQ1LCA2LCAxMSwgMzUsIDYsIDI0MywgCisgICAgMjAyLCAxMSwgMzUsIDYsIDI0MiwgNjAsIDExLCAzNSwgNiwgNzMsIDExLCAzNSwgNiwgMjM1LCAxNDQsIDExLCAzNSwgNiwgCisgICAgMjM1LCAyMywgMTEsIDM1LCA2LCAxNTYsIDExLCAzNSwgNiwgMTkzLCAxMSwgMzUsIDYsIDIzMCwgMjUsIDExLCAzNSwgNiwgCisgICAgNzYsIDExLCAzNSwgNiwgMjI2LCAxMDUsIDExLCAzNSwgNiwgMjI0LCA5NiwgMTEsIDM1LCA2LCAxNTMsIDExLCAzNSwgNiwgCisgICAgMjIyLCA5MSwgMTEsIDM1LCA2LCAyMTcsIDE1MiwgMTEsIDM1LCA2LCA3MCwgMTEsIDM1LCA2LCAyMTQsIDEwNSwgMTEsIDM1LCAKKyAgICA2LCAyMTIsIDk4LCAxMSwgMzUsIDYsIDIxMSwgMTc4LCAxMSwgMzUsIDYsIDIxMSwgMTE3LCAxMSwgMzUsIDYsIDIxMCwgCisgICAgMTU5LCAxMSwgMzUsIDQsIDYxLCAxMSwgMzUsIDQsIDI1MywgMTU4LCAxMSwgMzUsIDQsIDI1MSwgNjYsIDExLCAzNSwgNCwgCisgICAgMjQ5LCA2MCwgMTEsIDM1LCA0LCA3NSwgMTEsIDM1LCA0LCAyNDUsIDYsIDExLCAzNSwgNCwgMjQzLCAyMDIsIDExLCAzNSwgCisgICAgNCwgMjQyLCA2MCwgMTEsIDM1LCA0LCA3MywgMTEsIDM1LCA0LCAyMzUsIDE0NCwgMTEsIDM1LCA0LCAyMzUsIDIzLCAxMSwgCisgICAgMzUsIDQsIDE1NiwgMTEsIDM1LCA0LCAxOTMsIDExLCAzNSwgNCwgMjMwLCAyNSwgMTEsIDM1LCA0LCA3NiwgMTEsIDM1LCA0LCAKKyAgICAyMjYsIDEwNSwgMTEsIDM1LCA0LCAyMjQsIDk2LCAxMSwgMzUsIDQsIDE1MywgMTEsIDM1LCA0LCAyMjIsIDkxLCAxMSwgMzUsIAorICAgIDQsIDIxNywgMTUyLCAxMSwgMzUsIDQsIDcwLCAxMSwgMzUsIDQsIDIxNCwgMTA1LCAxMSwgMzUsIDQsIDIxMiwgOTgsIDExLCAKKyAgICAzNSwgNCwgMjExLCAxNzgsIDExLCAzNSwgNCwgMjExLCAxMTcsIDExLCAzNSwgNCwgMjEwLCAxNTksIDExLCAzNSwgMjMsIDYsIAorICAgIDYxLCAxMSwgMzUsIDIzLCA2LCAyNTMsIDE1OCwgMTEsIDM1LCAyMywgNiwgMjUxLCA2NiwgMTEsIDM1LCAyMywgNiwgMjQ5LCAKKyAgICA2MCwgMTEsIDM1LCAyMywgNiwgNzUsIDExLCAzNSwgMjMsIDYsIDI0NSwgNiwgMTEsIDM1LCAyMywgNiwgMjQzLCAyMDIsIAorICAgIDExLCAzNSwgMjMsIDYsIDI0MiwgNjAsIDExLCAzNSwgMjMsIDYsIDczLCAxMSwgMzUsIDIzLCA2LCAyMzUsIDE0NCwgMTEsIAorICAgIDM1LCAyMywgNiwgMjM1LCAyMywgMTEsIDM1LCAyMywgNiwgMTU2LCAxMSwgMzUsIDIzLCA2LCAxOTMsIDExLCAzNSwgMjMsIAorICAgIDYsIDIzMCwgMjUsIDExLCAzNSwgMjMsIDYsIDc2LCAxMSwgMzUsIDIzLCA2LCAyMjYsIDEwNSwgMTEsIDM1LCAyMywgNiwgCisgICAgMjI0LCA5NiwgMTEsIDM1LCAyMywgNiwgMTUzLCAxMSwgMzUsIDIzLCA2LCAyMjIsIDkxLCAxMSwgMzUsIDIzLCA2LCAyMTcsIAorICAgIDE1MiwgMTEsIDM1LCAyMywgNiwgNzAsIDExLCAzNSwgMjMsIDYsIDIxNCwgMTA1LCAxMSwgMzUsIDIzLCA2LCAyMTIsIDk4LCAKKyAgICAxMSwgMzUsIDIzLCA2LCAyMTEsIDE3OCwgMTEsIDM1LCAyMywgNiwgMjExLCAxMTcsIDExLCAzNSwgMjMsIDYsIDIxMCwgCisgICAgMTU5LCAxMSwgMzUsIDIzLCA0LCA2MSwgMTEsIDM1LCAyMywgNCwgMjUzLCAxNTgsIDExLCAzNSwgMjMsIDQsIDI1MSwgNjYsIAorICAgIDExLCAzNSwgMjMsIDQsIDI0OSwgNjAsIDExLCAzNSwgMjMsIDQsIDc1LCAxMSwgMzUsIDIzLCA0LCAyNDUsIDYsIDExLCAzNSwgCisgICAgMjMsIDQsIDI0MywgMjAyLCAxMSwgMzUsIDIzLCA0LCAyNDIsIDYwLCAxMSwgMzUsIDIzLCA0LCA3MywgMTEsIDM1LCAyMywgCisgICAgNCwgMjM1LCAxNDQsIDExLCAzNSwgMjMsIDQsIDIzNSwgMjMsIDExLCAzNSwgMjMsIDQsIDE1NiwgMTEsIDM1LCAyMywgNCwgCisgICAgMTkzLCAxMSwgMzUsIDIzLCA0LCAyMzAsIDI1LCAxMSwgMzUsIDIzLCA0LCA3NiwgMTEsIDM1LCAyMywgNCwgMjI2LCAxMDUsIAorICAgIDExLCAzNSwgMjMsIDQsIDIyNCwgOTYsIDExLCAzNSwgMjMsIDQsIDE1MywgMTEsIDM1LCAyMywgNCwgMjIyLCA5MSwgMTEsIAorICAgIDM1LCAyMywgNCwgMjE3LCAxNTIsIDExLCAzNSwgMjMsIDQsIDcwLCAxMSwgMzUsIDIzLCA0LCAyMTQsIDEwNSwgMTEsIDM1LCAKKyAgICAyMywgNCwgMjEyLCA5OCwgMTEsIDM1LCAyMywgNCwgMjExLCAxNzgsIDExLCAzNSwgMjMsIDQsIDIxMSwgMTE3LCAxMSwgMzUsIAorICAgIDIzLCA0LCAyMTAsIDE1OSwgMTEsIDM1LCAzMiwgNiwgNjEsIDExLCAzNSwgMzIsIDYsIDI1MywgMTU4LCAxMSwgMzUsIDMyLCAKKyAgICA2LCAyNTEsIDY2LCAxMSwgMzUsIDMyLCA2LCAyNDksIDYwLCAxMSwgMzUsIDMyLCA2LCA3NSwgMTEsIDM1LCAzMiwgNiwgCisgICAgMjQ1LCA2LCAxMSwgMzUsIDMyLCA2LCAyNDMsIDIwMiwgMTEsIDM1LCAzMiwgNiwgMjQyLCA2MCwgMTEsIDM1LCAzMiwgNiwgCisgICAgNzMsIDExLCAzNSwgMzIsIDYsIDIzNSwgMTQ0LCAxMSwgMzUsIDMyLCA2LCAyMzUsIDIzLCAxMSwgMzUsIDMyLCA2LCAxNTYsIAorICAgIDExLCAzNSwgMzIsIDYsIDE5MywgMTEsIDM1LCAzMiwgNiwgMjMwLCAyNSwgMTEsIDM1LCAzMiwgNiwgNzYsIDExLCAzNSwgCisgICAgMzIsIDYsIDIyNiwgMTA1LCAxMSwgMzUsIDMyLCA2LCAyMjQsIDk2LCAxMSwgMzUsIDMyLCA2LCAxNTMsIDExLCAzNSwgMzIsIAorICAgIDYsIDIyMiwgOTEsIDExLCAzNSwgMzIsIDYsIDIxNywgMTUyLCAxMSwgMzUsIDMyLCA2LCA3MCwgMTEsIDM1LCAzMiwgNiwgCisgICAgMjE0LCAxMDUsIDExLCAzNSwgMzIsIDYsIDIxMiwgOTgsIDExLCAzNSwgMzIsIDYsIDIxMSwgMTc4LCAxMSwgMzUsIDMyLCA2LCAKKyAgICAyMTEsIDExNywgMTEsIDM1LCAzMiwgNiwgMjEwLCAxNTksIDExLCAzNSwgMzIsIDQsIDYxLCAxMSwgMzUsIDMyLCA0LCAyNTMsIAorICAgIDE1OCwgMTEsIDM1LCAzMiwgNCwgMjUxLCA2NiwgMTEsIDM1LCAzMiwgNCwgMjQ5LCA2MCwgMTEsIDM1LCAzMiwgNCwgNzUsIAorICAgIDExLCAzNSwgMzIsIDQsIDI0NSwgNiwgMTEsIDM1LCAzMiwgNCwgMjQzLCAyMDIsIDExLCAzNSwgMzIsIDQsIDI0MiwgNjAsIAorICAgIDExLCAzNSwgMzIsIDQsIDczLCAxMSwgMzUsIDMyLCA0LCAyMzUsIDE0NCwgMTEsIDM1LCAzMiwgNCwgMjM1LCAyMywgMTEsIAorICAgIDM1LCAzMiwgNCwgMTU2LCAxMSwgMzUsIDMyLCA0LCAxOTMsIDExLCAzNSwgMzIsIDQsIDIzMCwgMjUsIDExLCAzNSwgMzIsIAorICAgIDQsIDc2LCAxMSwgMzUsIDMyLCA0LCAyMjYsIDEwNSwgMTEsIDM1LCAzMiwgNCwgMjI0LCA5NiwgMTEsIDM1LCAzMiwgNCwgCisgICAgMTUzLCAxMSwgMzUsIDMyLCA0LCAyMjIsIDkxLCAxMSwgMzUsIDMyLCA0LCAyMTcsIDE1MiwgMTEsIDM1LCAzMiwgNCwgNzAsIAorICAgIDExLCAzNSwgMzIsIDQsIDIxNCwgMTA1LCAxMSwgMzUsIDMyLCA0LCAyMTIsIDk4LCAxMSwgMzUsIDMyLCA0LCAyMTEsIDE3OCwgCisgICAgMTEsIDM1LCAzMiwgNCwgMjExLCAxMTcsIDExLCAzNSwgMzIsIDQsIDIxMCwgMTU5LCAxMSwgMzUsIDIzLCAzMiwgNiwgNjEsIAorICAgIDExLCAzNSwgMjMsIDMyLCA2LCAyNTMsIDE1OCwgMTEsIDM1LCAyMywgMzIsIDYsIDI1MSwgNjYsIDExLCAzNSwgMjMsIDMyLCAKKyAgICA2LCAyNDksIDYwLCAxMSwgMzUsIDIzLCAzMiwgNiwgNzUsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDUsIDYsIDExLCAzNSwgMjMsIAorICAgIDMyLCA2LCAyNDMsIDIwMiwgMTEsIDM1LCAyMywgMzIsIDYsIDI0MiwgNjAsIDExLCAzNSwgMjMsIDMyLCA2LCA3MywgMTEsIAorICAgIDM1LCAyMywgMzIsIDYsIDIzNSwgMTQ0LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjM1LCAyMywgMTEsIDM1LCAyMywgMzIsIDYsIAorICAgIDE1NiwgMTEsIDM1LCAyMywgMzIsIDYsIDE5MywgMTEsIDM1LCAyMywgMzIsIDYsIDIzMCwgMjUsIDExLCAzNSwgMjMsIDMyLCAKKyAgICA2LCA3NiwgMTEsIDM1LCAyMywgMzIsIDYsIDIyNiwgMTA1LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI0LCA5NiwgMTEsIDM1LCAKKyAgICAyMywgMzIsIDYsIDE1MywgMTEsIDM1LCAyMywgMzIsIDYsIDIyMiwgOTEsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTcsIDE1MiwgCisgICAgMTEsIDM1LCAyMywgMzIsIDYsIDcwLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE0LCAxMDUsIDExLCAzNSwgMjMsIDMyLCA2LCAKKyAgICAyMTIsIDk4LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjExLCAxNzgsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTEsIDExNywgMTEsIAorICAgIDM1LCAyMywgMzIsIDYsIDIxMCwgMTU5LCAxMSwgMzUsIDIzLCAzMiwgNCwgNjEsIDExLCAzNSwgMjMsIDMyLCA0LCAyNTMsIAorICAgIDE1OCwgMTEsIDM1LCAyMywgMzIsIDQsIDI1MSwgNjYsIDExLCAzNSwgMjMsIDMyLCA0LCAyNDksIDYwLCAxMSwgMzUsIDIzLCAKKyAgICAzMiwgNCwgNzUsIDExLCAzNSwgMjMsIDMyLCA0LCAyNDUsIDYsIDExLCAzNSwgMjMsIDMyLCA0LCAyNDMsIDIwMiwgMTEsIAorICAgIDM1LCAyMywgMzIsIDQsIDI0MiwgNjAsIDExLCAzNSwgMjMsIDMyLCA0LCA3MywgMTEsIDM1LCAyMywgMzIsIDQsIDIzNSwgCisgICAgMTQ0LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjM1LCAyMywgMTEsIDM1LCAyMywgMzIsIDQsIDE1NiwgMTEsIDM1LCAyMywgMzIsIAorICAgIDQsIDE5MywgMTEsIDM1LCAyMywgMzIsIDQsIDIzMCwgMjUsIDExLCAzNSwgMjMsIDMyLCA0LCA3NiwgMTEsIDM1LCAyMywgCisgICAgMzIsIDQsIDIyNiwgMTA1LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI0LCA5NiwgMTEsIDM1LCAyMywgMzIsIDQsIDE1MywgMTEsIAorICAgIDM1LCAyMywgMzIsIDQsIDIyMiwgOTEsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTcsIDE1MiwgMTEsIDM1LCAyMywgMzIsIDQsIAorICAgIDcwLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjE0LCAxMDUsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTIsIDk4LCAxMSwgMzUsIDIzLCAKKyAgICAzMiwgNCwgMjExLCAxNzgsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTEsIDExNywgMTEsIDM1LCAyMywgMzIsIDQsIDIxMCwgCisgICAgMTU5LCAxMSwgMjMwLCAxMzgsIDYsIDYxLCAxMSwgMjMwLCAxMzgsIDYsIDI1MywgMTU4LCAxMSwgMjMwLCAxMzgsIDYsIAorICAgIDI1MSwgNjYsIDExLCAyMzAsIDEzOCwgNiwgMjQ5LCA2MCwgMTEsIDIzMCwgMTM4LCA2LCA3NSwgMTEsIDIzMCwgMTM4LCA2LCAKKyAgICAyNDUsIDYsIDExLCAyMzAsIDEzOCwgNiwgMjQzLCAyMDIsIDExLCAyMzAsIDEzOCwgNiwgMjQyLCA2MCwgMTEsIDIzMCwgCisgICAgMTM4LCA2LCA3MywgMTEsIDIzMCwgMTM4LCA2LCAyMzUsIDE0NCwgMTEsIDIzMCwgMTM4LCA2LCAyMzUsIDIzLCAxMSwgMjMwLCAKKyAgICAxMzgsIDYsIDE1NiwgMTEsIDIzMCwgMTM4LCA2LCAxOTMsIDExLCAyMzAsIDEzOCwgNiwgMjMwLCAyNSwgMTEsIDIzMCwgCisgICAgMTM4LCA2LCA3NiwgMTEsIDIzMCwgMTM4LCA2LCAyMjYsIDEwNSwgMTEsIDIzMCwgMTM4LCA2LCAyMjQsIDk2LCAxMSwgMjMwLCAKKyAgICAxMzgsIDYsIDE1MywgMTEsIDIzMCwgMTM4LCA2LCAyMjIsIDkxLCAxMSwgMjMwLCAxMzgsIDYsIDIxNywgMTUyLCAxMSwgCisgICAgMjMwLCAxMzgsIDYsIDcwLCAxMSwgMjMwLCAxMzgsIDYsIDIxNCwgMTA1LCAxMSwgMjMwLCAxMzgsIDYsIDIxMiwgOTgsIDExLCAKKyAgICAyMzAsIDEzOCwgNiwgMjExLCAxNzgsIDExLCAyMzAsIDEzOCwgNiwgMjExLCAxMTcsIDExLCAyMzAsIDEzOCwgNiwgMjEwLCAKKyAgICAxNTksIDExLCAyMzAsIDEzOCwgNCwgNjEsIDExLCAyMzAsIDEzOCwgNCwgMjUzLCAxNTgsIDExLCAyMzAsIDEzOCwgNCwgCisgICAgMjUxLCA2NiwgMTEsIDIzMCwgMTM4LCA0LCAyNDksIDYwLCAxMSwgMjMwLCAxMzgsIDQsIDc1LCAxMSwgMjMwLCAxMzgsIDQsIAorICAgIDI0NSwgNiwgMTEsIDIzMCwgMTM4LCA0LCAyNDMsIDIwMiwgMTEsIDIzMCwgMTM4LCA0LCAyNDIsIDYwLCAxMSwgMjMwLCAKKyAgICAxMzgsIDQsIDczLCAxMSwgMjMwLCAxMzgsIDQsIDIzNSwgMTQ0LCAxMSwgMjMwLCAxMzgsIDQsIDIzNSwgMjMsIDExLCAyMzAsIAorICAgIDEzOCwgNCwgMTU2LCAxMSwgMjMwLCAxMzgsIDQsIDE5MywgMTEsIDIzMCwgMTM4LCA0LCAyMzAsIDI1LCAxMSwgMjMwLCAKKyAgICAxMzgsIDQsIDc2LCAxMSwgMjMwLCAxMzgsIDQsIDIyNiwgMTA1LCAxMSwgMjMwLCAxMzgsIDQsIDIyNCwgOTYsIDExLCAyMzAsIAorICAgIDEzOCwgNCwgMTUzLCAxMSwgMjMwLCAxMzgsIDQsIDIyMiwgOTEsIDExLCAyMzAsIDEzOCwgNCwgMjE3LCAxNTIsIDExLCAKKyAgICAyMzAsIDEzOCwgNCwgNzAsIDExLCAyMzAsIDEzOCwgNCwgMjE0LCAxMDUsIDExLCAyMzAsIDEzOCwgNCwgMjEyLCA5OCwgMTEsIAorICAgIDIzMCwgMTM4LCA0LCAyMTEsIDE3OCwgMTEsIDIzMCwgMTM4LCA0LCAyMTEsIDExNywgMTEsIDIzMCwgMTM4LCA0LCAyMTAsIAorICAgIDE1OSwgMTEsIDMyLCA0LCAyNDcsIDExOSwgNzMsIDExLCAzMiwgNCwgMjQ3LCAxMTksIDIzNSwgMTQ0LCAxMSwgMjMsIDYsIAorICAgIDI1NCwgMTQzLCAxMSwgMjMsIDYsIDI1MiwgMjYsIDExLCAyMywgNiwgMjQzLCAxMDcsIDExLCAyMywgNiwgMjQ4LCA1NCwgCisgICAgMTEsIDIzLCA2LCAyNDUsIDEwMCwgMTEsIDIzLCA2LCAyMTAsIDg1LCAxMSwgMjMsIDYsIDI0NSwgNjMsIDExLCAyMywgNiwgCisgICAgMjE2LCAxNzksIDExLCAyMywgNiwgMjM1LCAxODUsIDExLCAyMywgNiwgMjM0LCAyMjIsIDExLCAyMywgNiwgMjMzLCA5OCwgCisgICAgMTEsIDIzLCA2LCAyMzAsIDEwMiwgMTEsIDIzLCA2LCAyMjcsIDIzNywgMTEsIDIzLCA2LCAyMTEsIDE1NywgMTEsIDIzLCA2LCAKKyAgICAyMjYsIDE5OSwgMTEsIDIzLCA2LCAyMjUsIDEwOCwgMTEsIDIzLCA2LCAyMjMsIDM3LCAxMSwgMjMsIDYsIDIxNiwgMTgwLCAKKyAgICA4NywgMTEsIDIzLCA2LCAyMTksIDE3NywgMTEsIDIzLCA2LCAyMTcsIDQxLCAxMSwgMjMsIDYsIDIxNCwgMTU3LCAxMSwgMjMsIAorICAgIDYsIDIyNSwgMTMzLCAxMSwgMjMsIDYsIDI1MCwgMTEwLCAxMSwgMjMsIDYsIDIyNCwgMTYxLCAxMSwgMjMsIDYsIDIyNiwgCisgICAgMjAxLCAxMSwgMjMsIDIyOSwgMjIxLCAxMSwgMjMsIDQsIDI1NCwgMTQzLCAxMSwgMjMsIDQsIDI1MiwgMjYsIDExLCAyMywgCisgICAgNCwgMjQzLCAxMDcsIDExLCAyMywgNCwgMjQ4LCA1NCwgMTEsIDIzLCA0LCAyNDUsIDEwMCwgMTEsIDIzLCA0LCAyMTAsIDg1LCAKKyAgICAxMSwgMjMsIDQsIDI0NSwgNjMsIDExLCAyMywgNCwgMjE2LCAxNzksIDExLCAyMywgNCwgMjM1LCAxODUsIDExLCAyMywgNCwgCisgICAgMjM0LCAyMjIsIDExLCAyMywgNCwgMjMzLCA5OCwgMTEsIDIzLCA0LCAyMzAsIDEwMiwgMTEsIDIzLCA0LCAyMjcsIDIzNywgCisgICAgMTEsIDIzLCA0LCAyMTEsIDE1NywgMTEsIDIzLCA0LCAyMjYsIDE5OSwgMTEsIDIzLCA0LCAyMjUsIDEwOCwgMTEsIDIzLCA0LCAKKyAgICAyMjMsIDM3LCAxMSwgMjMsIDQsIDQwLCAyMTksIDE3NywgMTEsIDIzLCA0LCAyMTksIDE3NywgMTEsIDIzLCA0LCAyMTcsIAorICAgIDQxLCAxMSwgMjMsIDQsIDIxNCwgMTU3LCAxMSwgMjMsIDQsIDIyNSwgMTMzLCAxMSwgMjMsIDQsIDI1MCwgMTEwLCAxMSwgCisgICAgMjMsIDQsIDIyNCwgMTYxLCAxMSwgMjMsIDQsIDIyNiwgMjAxLCAxMSwgMjMsIDIyNSwgMjUzLCAyNDcsIDIzMywgMTEsIDIzLCAKKyAgICAyNDUsIDEwMSwgODcsIDExLCAyMywgMjE2LCAxODAsIDg3LCAxMSwgMjMsIDIzNCwgMjIzLCA4NywgMTEsIDIzLCAyMjUsIAorICAgIDEzNCwgODcsIDExLCAyMywgMjIzLCAzOCwgODcsIDExLCAyMywgMjI1LCAxMDksIDg3LCAxMSwgMzIsIDYsIDI1NCwgMTQzLCAKKyAgICAxMSwgMzIsIDYsIDI1MiwgMjYsIDExLCAzMiwgNiwgMjQzLCAxMDcsIDExLCAzMiwgNiwgMjQ4LCA1NCwgMTEsIDMyLCA2LCAKKyAgICAyNDUsIDEwMCwgMTEsIDMyLCA2LCAyMTAsIDg1LCAxMSwgMzIsIDYsIDI0NSwgNjMsIDExLCAzMiwgNiwgMjE2LCAxNzksIAorICAgIDExLCAzMiwgNiwgMjM1LCAxODUsIDExLCAzMiwgNiwgMjM0LCAyMjIsIDExLCAzMiwgNiwgMjMzLCA5OCwgMTEsIDMyLCA2LCAKKyAgICAyMzAsIDEwMiwgMTEsIDMyLCA2LCAyMjcsIDIzNywgMTEsIDMyLCA2LCAyMTEsIDE1NywgMTEsIDMyLCA2LCAyMjYsIDE5OSwgCisgICAgMTEsIDMyLCA2LCAyMjUsIDEwOCwgMTEsIDMyLCA2LCAyMjMsIDM3LCAxMSwgMzIsIDYsIDIxNiwgMTgwLCA4NywgMTEsIDMyLCAKKyAgICA2LCAyMTksIDE3NywgMTEsIDMyLCA2LCAyMTcsIDQxLCAxMSwgMzIsIDYsIDIxNCwgMTU3LCAxMSwgMzIsIDYsIDIyNSwgCisgICAgMTMzLCAxMSwgMzIsIDYsIDI1MCwgMTEwLCAxMSwgMzIsIDYsIDIyNCwgMTYxLCAxMSwgMzIsIDYsIDIyNiwgMjAxLCAxMSwgCisgICAgMzIsIDIyOSwgMjIxLCAxMSwgMzIsIDQsIDI1NCwgMTQzLCAxMSwgMzIsIDQsIDI1MiwgMjYsIDExLCAzMiwgNCwgMjQzLCAKKyAgICAxMDcsIDExLCAzMiwgNCwgMjQ4LCA1NCwgMTEsIDMyLCA0LCAyNDUsIDEwMCwgMTEsIDMyLCA0LCAyMTAsIDg1LCAxMSwgMzIsIAorICAgIDQsIDI0NSwgNjMsIDExLCAzMiwgNCwgMjE2LCAxNzksIDExLCAzMiwgNCwgMjM1LCAxODUsIDExLCAzMiwgNCwgMjM0LCAKKyAgICAyMjIsIDExLCAzMiwgNCwgMjMzLCA5OCwgMTEsIDMyLCA0LCAyMzAsIDEwMiwgMTEsIDMyLCA0LCAyMjcsIDIzNywgMTEsIAorICAgIDMyLCA0LCAyMTEsIDE1NywgMTEsIDMyLCA0LCAyMjYsIDE5OSwgMTEsIDMyLCA0LCAyMjUsIDEwOCwgMTEsIDMyLCA0LCAKKyAgICAyMjMsIDM3LCAxMSwgMzIsIDQsIDQwLCAyMTksIDE3NywgMTEsIDMyLCA0LCAyMTksIDE3NywgMTEsIDMyLCA0LCAyMTcsIAorICAgIDQxLCAxMSwgMzIsIDQsIDIxNCwgMTU3LCAxMSwgMzIsIDQsIDIyNSwgMTMzLCAxMSwgMzIsIDQsIDI1MCwgMTEwLCAxMSwgCisgICAgMzIsIDQsIDIyNCwgMTYxLCAxMSwgMzIsIDQsIDIyNiwgMjAxLCAxMSwgMzIsIDIyNSwgMjUzLCAyNDcsIDIzMywgMTEsIDMyLCAKKyAgICAyNDUsIDEwMSwgODcsIDExLCAzMiwgMjE2LCAxODAsIDg3LCAxMSwgMzIsIDIzNCwgMjIzLCA4NywgMTEsIDMyLCAyMjUsIAorICAgIDEzNCwgODcsIDExLCAzMiwgMjIzLCAzOCwgODcsIDExLCAzMiwgMjI1LCAxMDksIDg3LCAxMSwgMjMsIDMyLCA2LCAyNTQsIAorICAgIDE0MywgMTEsIDIzLCAzMiwgNiwgMjUyLCAyNiwgMTEsIDIzLCAzMiwgNiwgMjQzLCAxMDcsIDExLCAyMywgMzIsIDYsIDI0OCwgCisgICAgNTQsIDExLCAyMywgMzIsIDYsIDI0NSwgMTAwLCAxMSwgMjMsIDMyLCA2LCAyMTAsIDg1LCAxMSwgMjMsIDMyLCA2LCAyNDUsIAorICAgIDYzLCAxMSwgMjMsIDMyLCA2LCAyMTYsIDE3OSwgMTEsIDIzLCAzMiwgNiwgMjM1LCAxODUsIDExLCAyMywgMzIsIDYsIDIzNCwgCisgICAgMjIyLCAxMSwgMjMsIDMyLCA2LCAyMzMsIDk4LCAxMSwgMjMsIDMyLCA2LCAyMzAsIDEwMiwgMTEsIDIzLCAzMiwgNiwgMjI3LCAKKyAgICAyMzcsIDExLCAyMywgMzIsIDYsIDIxMSwgMTU3LCAxMSwgMjMsIDMyLCA2LCAyMjYsIDE5OSwgMTEsIDIzLCAzMiwgNiwgCisgICAgMjI1LCAxMDgsIDExLCAyMywgMzIsIDYsIDIyMywgMzcsIDExLCAyMywgMzIsIDYsIDIxNiwgMTgwLCA4NywgMTEsIDIzLCAKKyAgICAzMiwgNiwgMjE5LCAxNzcsIDExLCAyMywgMzIsIDYsIDIxNywgNDEsIDExLCAyMywgMzIsIDYsIDIxNCwgMTU3LCAxMSwgMjMsIAorICAgIDMyLCA2LCAyMjUsIDEzMywgMTEsIDIzLCAzMiwgNiwgMjUwLCAxMTAsIDExLCAyMywgMzIsIDYsIDIyNCwgMTYxLCAxMSwgCisgICAgMjMsIDMyLCA2LCAyMjYsIDIwMSwgMTEsIDIzLCAzMiwgMjI5LCAyMjEsIDExLCAyMywgMzIsIDQsIDI1NCwgMTQzLCAxMSwgCisgICAgMjMsIDMyLCA0LCAyNTIsIDI2LCAxMSwgMjMsIDMyLCA0LCAyNDMsIDEwNywgMTEsIDIzLCAzMiwgNCwgMjQ4LCA1NCwgMTEsIAorICAgIDIzLCAzMiwgNCwgMjQ1LCAxMDAsIDExLCAyMywgMzIsIDQsIDIxMCwgODUsIDExLCAyMywgMzIsIDQsIDI0NSwgNjMsIDExLCAKKyAgICAyMywgMzIsIDQsIDIxNiwgMTc5LCAxMSwgMjMsIDMyLCA0LCAyMzUsIDE4NSwgMTEsIDIzLCAzMiwgNCwgMjM0LCAyMjIsIAorICAgIDExLCAyMywgMzIsIDQsIDIzMywgOTgsIDExLCAyMywgMzIsIDQsIDIzMCwgMTAyLCAxMSwgMjMsIDMyLCA0LCAyMjcsIDIzNywgCisgICAgMTEsIDIzLCAzMiwgNCwgMjExLCAxNTcsIDExLCAyMywgMzIsIDQsIDIyNiwgMTk5LCAxMSwgMjMsIDMyLCA0LCAyMjUsIAorICAgIDEwOCwgMTEsIDIzLCAzMiwgNCwgMjIzLCAzNywgMTEsIDIzLCAzMiwgNCwgNDAsIDIxOSwgMTc3LCAxMSwgMjMsIDMyLCA0LCAKKyAgICAyMTksIDE3NywgMTEsIDIzLCAzMiwgNCwgMjE3LCA0MSwgMTEsIDIzLCAzMiwgNCwgMjE0LCAxNTcsIDExLCAyMywgMzIsIDQsIAorICAgIDIyNSwgMTMzLCAxMSwgMjMsIDMyLCA0LCAyNTAsIDExMCwgMTEsIDIzLCAzMiwgNCwgMjI0LCAxNjEsIDExLCAyMywgMzIsIAorICAgIDQsIDIyNiwgMjAxLCAxMSwgMjMsIDMyLCAyMjUsIDI1MywgMjQ3LCAyMzMsIDExLCAyMywgMzIsIDI0NSwgMTAxLCA4NywgCisgICAgMTEsIDIzLCAzMiwgMjE2LCAxODAsIDg3LCAxMSwgMjMsIDMyLCAyMzQsIDIyMywgODcsIDExLCAyMywgMzIsIDIyNSwgMTM0LCAKKyAgICA4NywgMTEsIDIzLCAzMiwgMjIzLCAzOCwgODcsIDExLCAyMywgMzIsIDIyNSwgMTA5LCA4NywgMTEsIDM1LCAyMywgNiwgCisgICAgMjU0LCAxNDMsIDExLCAzNSwgMjMsIDYsIDI1MiwgMjYsIDExLCAzNSwgMjMsIDYsIDI0MywgMTA3LCAxMSwgMzUsIDIzLCA2LCAKKyAgICAyNDgsIDU0LCAxMSwgMzUsIDIzLCA2LCAyNDUsIDEwMCwgMTEsIDM1LCAyMywgNiwgMjEwLCA4NSwgMTEsIDM1LCAyMywgNiwgCisgICAgMjQ1LCA2MywgMTEsIDM1LCAyMywgNiwgMjE2LCAxNzksIDExLCAzNSwgMjMsIDYsIDIzNSwgMTg1LCAxMSwgMzUsIDIzLCA2LCAKKyAgICAyMzQsIDIyMiwgMTEsIDM1LCAyMywgNiwgMjMzLCA5OCwgMTEsIDM1LCAyMywgNiwgMjMwLCAxMDIsIDExLCAzNSwgMjMsIDYsIAorICAgIDIyNywgMjM3LCAxMSwgMzUsIDIzLCA2LCAyMTEsIDE1NywgMTEsIDM1LCAyMywgNiwgMjI2LCAxOTksIDExLCAzNSwgMjMsIAorICAgIDYsIDIyNSwgMTA4LCAxMSwgMzUsIDIzLCA2LCAyMjMsIDM3LCAxMSwgMzUsIDIzLCA2LCAyMTYsIDE4MCwgODcsIDExLCAzNSwgCisgICAgMjMsIDYsIDIxOSwgMTc3LCAxMSwgMzUsIDIzLCA2LCAyMTcsIDQxLCAxMSwgMzUsIDIzLCA2LCAyMTQsIDE1NywgMTEsIDM1LCAKKyAgICAyMywgNiwgMjI1LCAxMzMsIDExLCAzNSwgMjMsIDYsIDI1MCwgMTEwLCAxMSwgMzUsIDIzLCA2LCAyMjQsIDE2MSwgMTEsIAorICAgIDM1LCAyMywgNiwgMjI2LCAyMDEsIDExLCAzNSwgMjMsIDIyOSwgMjIxLCAxMSwgMzUsIDIzLCA0LCAyNTQsIDE0MywgMTEsIAorICAgIDM1LCAyMywgNCwgMjUyLCAyNiwgMTEsIDM1LCAyMywgNCwgMjQzLCAxMDcsIDExLCAzNSwgMjMsIDQsIDI0OCwgNTQsIDExLCAKKyAgICAzNSwgMjMsIDQsIDI0NSwgMTAwLCAxMSwgMzUsIDIzLCA0LCAyMTAsIDg1LCAxMSwgMzUsIDIzLCA0LCAyNDUsIDYzLCAxMSwgCisgICAgMzUsIDIzLCA0LCAyMTYsIDE3OSwgMTEsIDM1LCAyMywgNCwgMjM1LCAxODUsIDExLCAzNSwgMjMsIDQsIDIzNCwgMjIyLCAKKyAgICAxMSwgMzUsIDIzLCA0LCAyMzMsIDk4LCAxMSwgMzUsIDIzLCA0LCAyMzAsIDEwMiwgMTEsIDM1LCAyMywgNCwgMjI3LCAyMzcsIAorICAgIDExLCAzNSwgMjMsIDQsIDIxMSwgMTU3LCAxMSwgMzUsIDIzLCA0LCAyMjYsIDE5OSwgMTEsIDM1LCAyMywgNCwgMjI1LCAKKyAgICAxMDgsIDExLCAzNSwgMjMsIDQsIDIyMywgMzcsIDExLCAzNSwgMjMsIDQsIDQwLCAyMTksIDE3NywgMTEsIDM1LCAyMywgNCwgCisgICAgMjE5LCAxNzcsIDExLCAzNSwgMjMsIDQsIDIxNywgNDEsIDExLCAzNSwgMjMsIDQsIDIxNCwgMTU3LCAxMSwgMzUsIDIzLCA0LCAKKyAgICAyMjUsIDEzMywgMTEsIDM1LCAyMywgNCwgMjUwLCAxMTAsIDExLCAzNSwgMjMsIDQsIDIyNCwgMTYxLCAxMSwgMzUsIDIzLCAKKyAgICA0LCAyMjYsIDIwMSwgMTEsIDM1LCAyMywgMjI1LCAyNTMsIDI0NywgMjMzLCAxMSwgMzUsIDIzLCAyNDUsIDEwMSwgODcsIAorICAgIDExLCAzNSwgMjMsIDIxNiwgMTgwLCA4NywgMTEsIDM1LCAyMywgMjM0LCAyMjMsIDg3LCAxMSwgMzUsIDIzLCAyMjUsIDEzNCwgCisgICAgODcsIDExLCAzNSwgMjMsIDIyMywgMzgsIDg3LCAxMSwgMzUsIDIzLCAyMjUsIDEwOSwgODcsIDExLCAzNSwgMjMsIDMyLCA2LCAKKyAgICAyNTQsIDE0MywgMTEsIDM1LCAyMywgMzIsIDYsIDI1MiwgMjYsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDMsIDEwNywgMTEsIAorICAgIDM1LCAyMywgMzIsIDYsIDI0OCwgNTQsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDUsIDEwMCwgMTEsIDM1LCAyMywgMzIsIDYsIAorICAgIDIxMCwgODUsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDUsIDYzLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE2LCAxNzksIDExLCAzNSwgCisgICAgMjMsIDMyLCA2LCAyMzUsIDE4NSwgMTEsIDM1LCAyMywgMzIsIDYsIDIzNCwgMjIyLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjMzLCAKKyAgICA5OCwgMTEsIDM1LCAyMywgMzIsIDYsIDIzMCwgMTAyLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI3LCAyMzcsIDExLCAzNSwgMjMsIAorICAgIDMyLCA2LCAyMTEsIDE1NywgMTEsIDM1LCAyMywgMzIsIDYsIDIyNiwgMTk5LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI1LCAKKyAgICAxMDgsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjMsIDM3LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE2LCAxODAsIDg3LCAxMSwgMzUsIAorICAgIDIzLCAzMiwgNiwgMjE5LCAxNzcsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTcsIDQxLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE0LCAKKyAgICAxNTcsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjUsIDEzMywgMTEsIDM1LCAyMywgMzIsIDYsIDI1MCwgMTEwLCAxMSwgMzUsIAorICAgIDIzLCAzMiwgNiwgMjI0LCAxNjEsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjYsIDIwMSwgMTEsIDM1LCAyMywgMzIsIDIyOSwgCisgICAgMjIxLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjU0LCAxNDMsIDExLCAzNSwgMjMsIDMyLCA0LCAyNTIsIDI2LCAxMSwgMzUsIDIzLCAKKyAgICAzMiwgNCwgMjQzLCAxMDcsIDExLCAzNSwgMjMsIDMyLCA0LCAyNDgsIDU0LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQ1LCAxMDAsIAorICAgIDExLCAzNSwgMjMsIDMyLCA0LCAyMTAsIDg1LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQ1LCA2MywgMTEsIDM1LCAyMywgMzIsIAorICAgIDQsIDIxNiwgMTc5LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjM1LCAxODUsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzQsIDIyMiwgCisgICAgMTEsIDM1LCAyMywgMzIsIDQsIDIzMywgOTgsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzAsIDEwMiwgMTEsIDM1LCAyMywgMzIsIAorICAgIDQsIDIyNywgMjM3LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjExLCAxNTcsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjYsIDE5OSwgCisgICAgMTEsIDM1LCAyMywgMzIsIDQsIDIyNSwgMTA4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjIzLCAzNywgMTEsIDM1LCAyMywgMzIsIAorICAgIDQsIDQwLCAyMTksIDE3NywgMTEsIDM1LCAyMywgMzIsIDQsIDIxOSwgMTc3LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjE3LCA0MSwgCisgICAgMTEsIDM1LCAyMywgMzIsIDQsIDIxNCwgMTU3LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI1LCAxMzMsIDExLCAzNSwgMjMsIDMyLCAKKyAgICA0LCAyNTAsIDExMCwgMTEsIDM1LCAyMywgMzIsIDQsIDIyNCwgMTYxLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI2LCAyMDEsIAorICAgIDExLCAzNSwgMjMsIDMyLCAyMjUsIDI1MywgMjQ3LCAyMzMsIDExLCAzNSwgMjMsIDMyLCAyNDUsIDEwMSwgODcsIDExLCAzNSwgCisgICAgMjMsIDMyLCAyMTYsIDE4MCwgODcsIDExLCAzNSwgMjMsIDMyLCAyMzQsIDIyMywgODcsIDExLCAzNSwgMjMsIDMyLCAyMjUsIAorICAgIDEzNCwgODcsIDExLCAzNSwgMjMsIDMyLCAyMjMsIDM4LCA4NywgMTEsIDM1LCAyMywgMzIsIDIyNSwgMTA5LCA4NywgMTEsIAorICAgIDIzLCA2LCAyNDcsIDIyNywgMTEsIDIzLCA0LCAyNDcsIDIyNywgMTEsIDIzLCAyMSwgMjEwLCA4NiwgMTEsIDIzLCAyMSwgCisgICAgMTEwLCAxMSwgMjMsIDIxLCAxMDUsIDExLCAyMywgMjEsIDE1OCwgMTEsIDIzLCAyMSwgMTYxLCAxMSwgMjMsIDIxLCAxODksIAorICAgIDExLCAyMywgMjEsIDE5NCwgMTEsIDIzLCAyMSwgMTk4LCAxMSwgMjMsIDIxLCAxOTUsIDExLCAyMywgMjEsIDIwMCwgMTEsIAorICAgIDEzOSwgMjEsIDIxMCwgODYsIDExLCAxMzksIDIxLCAxMTAsIDExLCAxMzksIDIxLCAxMDUsIDExLCAxMzksIDIxLCAxNTgsIAorICAgIDExLCAxMzksIDIxLCAxNjEsIDExLCAxMzksIDIxLCAxODksIDExLCAxMzksIDIxLCAxOTQsIDExLCAxMzksIDIxLCAxOTgsIAorICAgIDExLCAxMzksIDIxLCAxOTUsIDExLCAxMzksIDIxLCAyMDAsIDExLCAzNSwgMjEsIDIxMCwgODYsIDExLCAzNSwgMjEsIDExMCwgCisgICAgMTEsIDM1LCAyMSwgMTA1LCAxMSwgMzUsIDIxLCAxNTgsIDExLCAzNSwgMjEsIDE2MSwgMTEsIDM1LCAyMSwgMTg5LCAxMSwgCisgICAgMzUsIDIxLCAxOTQsIDExLCAzNSwgMjEsIDE5OCwgMTEsIDM1LCAyMSwgMTk1LCAxMSwgMzUsIDIxLCAyMDAsIDExLCAzNSwgCisgICAgMjMsIDIxLCAyMTAsIDg2LCAxMSwgMzUsIDIzLCAyMSwgMTEwLCAxMSwgMzUsIDIzLCAyMSwgMTA1LCAxMSwgMzUsIDIzLCAKKyAgICAyMSwgMTU4LCAxMSwgMzUsIDIzLCAyMSwgMTYxLCAxMSwgMzUsIDIzLCAyMSwgMTg5LCAxMSwgMzUsIDIzLCAyMSwgMTk0LCAKKyAgICAxMSwgMzUsIDIzLCAyMSwgMTk4LCAxMSwgMzUsIDIzLCAyMSwgMTk1LCAxMSwgMzUsIDIzLCAyMSwgMjAwLCAxMSwgMjMwLCAKKyAgICAxMzgsIDIxLCAyMTAsIDg2LCAxMSwgMjMwLCAxMzgsIDIxLCAxMTAsIDExLCAyMzAsIDEzOCwgMjEsIDEwNSwgMTEsIDIzMCwgCisgICAgMTM4LCAyMSwgMTU4LCAxMSwgMjMwLCAxMzgsIDIxLCAxNjEsIDExLCAyMzAsIDEzOCwgMjEsIDE4OSwgMTEsIDIzMCwgMTM4LCAKKyAgICAyMSwgMTk0LCAxMSwgMjMwLCAxMzgsIDIxLCAxOTgsIDExLCAyMzAsIDEzOCwgMjEsIDE5NSwgMTEsIDIzMCwgMTM4LCAyMSwgCisgICAgMjAwLCAxMCwgMTEsIDI1NCwgMTcwLCAxMCwgMTEsIDI1MiwgNTQsIDEwLCAxMSwgMjM1LCAxMjMsIDEwLCAxMSwgMjQ4LCAKKyAgICAxOTUsIDEwLCAxMSwgMjEyLCAzMCwgMTAsIDExLCAyMTAsIDEwOCwgMTAsIDExLCAyNDIsIDM3LCAxMCwgMTEsIDIxNywgODAsIAorICAgIDEwLCAxMSwgMjExLCA0MywgMTAsIDExLCAyMzQsIDI1MCwgMTAsIDExLCAyMzMsIDEwMiwgMTAsIDExLCAyMzEsIDc4LCAxMCwgCisgICAgMTEsIDIyOCwgNjIsIDEwLCAxMSwgMjIxLCAxNjYsIDEwLCAxMSwgMjU0LCAxOTYsIDEwLCAxMSwgMjQ0LCAxNDIsIDEwLCAKKyAgICAxMSwgMjIyLCAyNiwgMTAsIDExLCAyMjQsIDgxLCAxMCwgMTEsIDIyMywgOTUsIDEwLCAxMSwgMjIwLCA1OSwgMTAsIDExLCAKKyAgICAyMTcsIDcsIDEwLCAxMSwgMjE2LCAxOTIsIDEwLCAxMSwgMjM0LCAxMjksIDEwLCAxMSwgMjE2LCAyMDIsIDEwLCAxMSwgCisgICAgMjQ4LCAyMTYsIDEwLCAxMSwgMjEwLCAxMTEsIDEwLCAxMSwgMjQyLCAyNDQsIDEwLCAxMSwgMjQ3LCAxMTksIDI1MiwgNTQsIAorICAgIDEwLCAxMSwgMjQ3LCAxMTksIDIyOCwgNjIsIDEwLCAxMSwgMjQ3LCAxMTksIDI0NCwgMTQyLCAxMCwgMTEsIDI0NywgMTE5LCAKKyAgICAyMjQsIDgxLCAxMCwgMTEsIDY1LCAyNTIsIDU0LCAxMCwgMTEsIDY1LCAyMzUsIDEyMywgMTAsIDExLCA2NSwgMjQxLCAyMTgsIAorICAgIDEwLCAxMSwgNjUsIDI0MiwgMzcsIDEwLCAxMSwgNjUsIDIxMSwgNDMsIDEwLCAxMSwgNjUsIDIzNCwgMjUwLCAxMCwgMTEsIAorICAgIDY1LCAyMzMsIDEwMiwgMTAsIDExLCA2NSwgMjMxLCA3OCwgMTAsIDExLCA2NSwgMjI4LCA2MiwgMTAsIDExLCA2NSwgMjIxLCAKKyAgICAxNjYsIDEwLCAxMSwgNjUsIDI1NCwgMTk2LCAxMCwgMTEsIDY1LCAyNDQsIDE0MiwgMTAsIDExLCA2NSwgMjIyLCAyNiwgMTAsIAorICAgIDExLCA2NSwgMjI0LCA4MSwgMTAsIDExLCA2NSwgMjIwLCA1OSwgMTAsIDExLCA2NSwgMjE3LCA3LCAxMCwgMTEsIDY1LCAKKyAgICAyMTYsIDE5MiwgMTAsIDExLCA2NSwgMjM0LCAxMjksIDEwLCAxMSwgNjUsIDI0OCwgMjE2LCAxMCwgMTEsIDY1LCAyNDIsIAorICAgIDI0NCwgMTAsIDExLCAyMTcsIDc2LCAyMzUsIDEyMywgMTAsIDExLCAyMTcsIDc2LCAyNDIsIDM3LCAxMCwgMTEsIDIxNywgCisgICAgNzYsIDIxMSwgNDMsIDEwLCAxMSwgMjE3LCA3NiwgMjMzLCAxMDIsIDEwLCAxMSwgMjE3LCA3NiwgMjI4LCA2MiwgMTAsIDExLCAKKyAgICAyMTcsIDc2LCAyMjEsIDE2NiwgMTAsIDExLCAyMTcsIDc2LCAyNTQsIDE5NiwgMTAsIDExLCAyMTcsIDc2LCAyMjIsIDI2LCAKKyAgICAxMCwgMTEsIDIxNywgNzYsIDIyNCwgODEsIDEwLCAxMSwgMjE3LCA3NiwgMjIwLCA1OSwgMTAsIDExLCAyMTcsIDc2LCAyMzQsIAorICAgIDEyOSwgMTAsIDExLCAyMTcsIDc2LCAyNDgsIDIxNiwgMTAsIDExLCAyMTcsIDc2LCAyNDIsIDI0NCwgMTAsIDExLCAyMTcsIAorICAgIDc2LCAyNDcsIDExOSwgMjI4LCA2MiwgMTAsIDExLCAyMTcsIDc2LCAyNDcsIDExOSwgMjI0LCA4MSwgMTAsIDExLCAyMTgsIAorICAgIDExMCwgMjUyLCA1NCwgMTAsIDExLCAyMTgsIDExMCwgMjM1LCAxMjMsIDEwLCAxMSwgMjE4LCAxMTAsIDI0MSwgMjE4LCAxMCwgCisgICAgMTEsIDIxOCwgMTEwLCAyNDIsIDM3LCAxMCwgMTEsIDIxOCwgMTEwLCAyMTcsIDgwLCAxMCwgMTEsIDIxOCwgMTEwLCAyMTEsIAorICAgIDQzLCAxMCwgMTEsIDIxOCwgMTEwLCAyMzQsIDI1MCwgMTAsIDExLCAyMTgsIDExMCwgMjMxLCA3OCwgMTAsIDExLCAyMTgsIAorICAgIDExMCwgMjI4LCA2MiwgMTAsIDExLCAyMTgsIDExMCwgMjIxLCAxNjYsIDEwLCAxMSwgMjE4LCAxMTAsIDI1NCwgMTk2LCAxMCwgCisgICAgMTEsIDIxOCwgMTEwLCAyNDQsIDE0MiwgMTAsIDExLCAyMTgsIDExMCwgMjIyLCAyNiwgMTAsIDExLCAyMTgsIDExMCwgMjI0LCAKKyAgICA4MSwgMTAsIDExLCAyMTgsIDExMCwgMjIwLCA1OSwgMTAsIDExLCAyMTgsIDExMCwgMjE3LCA3LCAxMCwgMTEsIDIxOCwgCisgICAgMTEwLCAyMTYsIDE5MiwgMTAsIDExLCAyMTgsIDExMCwgMjM0LCAxMjksIDEwLCAxMSwgMjE4LCAxMTAsIDI0OCwgMjE2LCAKKyAgICAxMCwgMTEsIDIxOCwgMTEwLCAyMTAsIDExMSwgMTAsIDExLCAyMTgsIDExMCwgMjQyLCAyNDQsIDEwLCAxMSwgMjE4LCAxMTAsIAorICAgIDI0NywgMTE5LCAyNTIsIDU0LCAxMCwgMTEsIDIxOCwgMTEwLCAyNDcsIDExOSwgMjQ0LCAxNDIsIDEwLCAxMSwgMjMyLCAKKyAgICAxMjIsIDI1NCwgMTcwLCAxMCwgMTEsIDIzMiwgMTIyLCAyNTIsIDU0LCAxMCwgMTEsIDIzMiwgMTIyLCAyMzUsIDEyMywgMTAsIAorICAgIDExLCAyMzIsIDEyMiwgMjQ4LCAxOTUsIDEwLCAxMSwgMjMyLCAxMjIsIDI0MSwgMjE4LCAxMCwgMTEsIDIzMiwgMTIyLCAKKyAgICAyMTIsIDMwLCAxMCwgMTEsIDIzMiwgMTIyLCAyMTAsIDEwOCwgMTAsIDExLCAyMzIsIDEyMiwgMjQyLCAzNywgMTAsIDExLCAKKyAgICAyMzIsIDEyMiwgMjE3LCA4MCwgMTAsIDExLCAyMzIsIDEyMiwgMjExLCA0MywgMTAsIDExLCAyMzIsIDEyMiwgMjMzLCAxMDIsIAorICAgIDEwLCAxMSwgMjMyLCAxMjIsIDIzMSwgNzgsIDEwLCAxMSwgMjMyLCAxMjIsIDIyOCwgNjIsIDEwLCAxMSwgMjMyLCAxMjIsIAorICAgIDIyMSwgMTY2LCAxMCwgMTEsIDIzMiwgMTIyLCAyNTQsIDE5NiwgMTAsIDExLCAyMzIsIDEyMiwgMjQ0LCAxNDIsIDEwLCAxMSwgCisgICAgMjMyLCAxMjIsIDIyMiwgMjYsIDEwLCAxMSwgMjMyLCAxMjIsIDIyNCwgODEsIDEwLCAxMSwgMjMyLCAxMjIsIDIyMywgOTUsIAorICAgIDEwLCAxMSwgMjMyLCAxMjIsIDIyMCwgNTksIDEwLCAxMSwgMjMyLCAxMjIsIDIxNywgNywgMTAsIDExLCAyMzIsIDEyMiwgCisgICAgMjE2LCAxOTIsIDEwLCAxMSwgMjMyLCAxMjIsIDIzNCwgMTI5LCAxMCwgMTEsIDIzMiwgMTIyLCAyMTYsIDIwMiwgMTAsIDExLCAKKyAgICAyMzIsIDEyMiwgMjQ4LCAyMTYsIDEwLCAxMSwgMjMyLCAxMjIsIDIxMCwgMTExLCAxMCwgMTEsIDIzMiwgMTIyLCAyNDIsIAorICAgIDI0NCwgMTAsIDExLCAxMzksIDI1MiwgNTQsIDEwLCAxMSwgMTM5LCAyMzUsIDEyMywgMTAsIDExLCAxMzksIDI0OCwgMTk1LCAKKyAgICAxMCwgMTEsIDEzOSwgMjEyLCAzMCwgMTAsIDExLCAxMzksIDIxMCwgMTA4LCAxMCwgMTEsIDEzOSwgMjQyLCAzNywgMTAsIAorICAgIDExLCAxMzksIDIxNywgODAsIDEwLCAxMSwgMTM5LCAyMTEsIDQzLCAxMCwgMTEsIDEzOSwgMjMzLCAxMDIsIDEwLCAxMSwgCisgICAgMTM5LCAyMzEsIDc4LCAxMCwgMTEsIDEzOSwgMjI4LCA2MiwgMTAsIDExLCAxMzksIDIyMSwgMTY2LCAxMCwgMTEsIDEzOSwgCisgICAgMjU0LCAxOTYsIDEwLCAxMSwgMTM5LCAyNDQsIDE0MiwgMTAsIDExLCAxMzksIDIyMiwgMjYsIDEwLCAxMSwgMTM5LCAyMjQsIAorICAgIDgxLCAxMCwgMTEsIDEzOSwgMjIzLCA5NSwgMTAsIDExLCAxMzksIDIyMCwgNTksIDEwLCAxMSwgMTM5LCAyMTcsIDcsIDEwLCAKKyAgICAxMSwgMTM5LCAyMTYsIDE5MiwgMTAsIDExLCAxMzksIDIzNCwgMTI5LCAxMCwgMTEsIDEzOSwgMjE2LCAyMDIsIDEwLCAxMSwgCisgICAgMTM5LCAyNDgsIDIxNiwgMTAsIDExLCAxMzksIDIxMCwgMTExLCAxMCwgMTEsIDEzOSwgMjQyLCAyNDQsIDEwLCAxMSwgMjI2LCAKKyAgICAxNjgsIDY2LCAyLCAxMjIsIDIsIDIxNywgNDMsIDEwLCAxMSwgMjI2LCAxNjgsIDEyMiwgMiwgMjQ4LCAxOTUsIDIzMSwgCisgICAgMjA1LCA4NiwgMjQ1LCAyMjAsIDIxMSwgMjM5LCAyMzEsIDIwNSwgODYsIDIxOSwgMjgsIDIxMSwgMjM5LCAyMzEsIDIwNSwgCisgICAgODYsIDIxMiwgOSwgMjExLCAyMzksIDIzMSwgMjA1LCA4NiwgMjI4LCA1NiwgMjExLCAyMzksIDIzMSwgMjA1LCA4NiwgMjIzLCAKKyAgICAxMTEsIDI0NiwgOTYsIDIzMSwgMjA1LCA4NiwgMjQyLCAxMjcsIDI0NiwgOTYsIDIzMSwgMjA1LCA4NiwgNzEsIDI0NiwgOTYsIAorICAgIDIzMSwgMjA1LCA4NiwgMTIzLCA2NCwgMjUwLCAxNDEsIDIzMSwgMjA1LCA4NiwgMTEzLCA2NCwgMjUwLCAxNDEsIDIzMSwgCisgICAgMjA1LCA4NiwgMTM0LCA2NCwgMjUwLCAxNDEsIDIzMSwgMjA1LCA4NiwgMjQ0LCAxMSwgNjQsIDI1MCwgMTQxLCAyMzEsIAorICAgIDIwNSwgODYsIDI0NCwgODEsIDY0LCAyNTAsIDE0MSwgMjMxLCAyMDUsIDg2LCAyMTksIDEyNSwgNjQsIDI1MCwgMTQxLCAKKyAgICAyMzEsIDIwNSwgODYsIDIyMCwgMTIyLCA2NCwgMjUwLCAxNDEsIDIzMSwgMjA1LCA4NiwgMjQ1LCAxOTMsIDY0LCAyNTAsIAorICAgIDE0MSwgMjMxLCAyMDUsIDg2LCAyMjgsIDIwMCwgNjQsIDI1MCwgMTQxLCAyMzEsIDIwNSwgODYsIDEyMywgNjQsIDI1MiwgCisgICAgMTUzLCAyMzEsIDIwNSwgODYsIDExMywgNjQsIDI1MiwgMTUzLCAyMzEsIDIwNSwgODYsIDEzNCwgNjQsIDI1MiwgMTUzLCAKKyAgICAyMzEsIDIwNSwgODYsIDI0NCwgMTEsIDY0LCAyNTIsIDE1MywgMjMxLCAyMDUsIDg2LCAyNDQsIDgxLCA2NCwgMjUyLCAxNTMsIAorICAgIDIzMSwgMjA1LCA4NiwgMjE5LCAxMjUsIDY0LCAyNTIsIDE1MywgMjMxLCAyMDUsIDg2LCAyMjAsIDEyMiwgNjQsIDI1MiwgCisgICAgMTUzLCAyMzEsIDIwNSwgODYsIDI0NSwgMTkzLCA2NCwgMjUyLCAxNTMsIDIzMSwgMjA1LCA4NiwgMjI4LCAyMDAsIDY0LCAKKyAgICAyNTIsIDE1MywgMjMxLCAyMDUsIDg2LCAxMjMsIDY0LCAyNTAsIDM0LCAyMzEsIDIwNSwgODYsIDExMywgNjQsIDI1MCwgMzQsIAorICAgIDIzMSwgMjA1LCA4NiwgMTM0LCA2NCwgMjUwLCAzNCwgMjMxLCAyMDUsIDg2LCAyNDQsIDExLCA2NCwgMjUwLCAzNCwgMjMxLCAKKyAgICAyMDUsIDg2LCAyNDQsIDgxLCA2NCwgMjUwLCAzNCwgMjMxLCAyMDUsIDg2LCAyMTksIDEyNSwgNjQsIDI1MCwgMzQsIDIzMSwgCisgICAgMjA1LCA4NiwgMjIwLCAxMjIsIDY0LCAyNTAsIDM0LCAyMzEsIDIwNSwgODYsIDI0NSwgMTkzLCA2NCwgMjUwLCAzNCwgMjMxLCAKKyAgICAyMDUsIDg2LCAyMjgsIDIwMCwgNjQsIDI1MCwgMzQsIDIzMSwgMjA1LCA4NiwgMjI1LCAyNSwgMjMxLCAyMDUsIDg2LCAyMjYsIAorICAgIDE1NiwgMjMxLCAyMDUsIDg2LCAyNTIsIDE1NCwgMjMxLCAyMDUsIDg2LCAyNTAsIDcwLCAyMzEsIDIwNSwgODYsIDIxOCwgCisgICAgMjM5LCAyMzEsIDIwNSwgODYsIDIxOCwgMzksIDIzMSwgMjA1LCA4NiwgMjUzLCAxNzksIDIzMSwgMjA1LCA4NiwgMjExLCAKKyAgICAyMzIsIDIzMSwgMjA1LCA4NiwgMjM1LCA2MiwgMjMxLCAyMDUsIDg2LCAyNTIsIDE4NCwgMTMxLCA4NiwgMjAzLCAyNTIsIAorICAgIDE4NCwgMTMxLCA4NiwgMjQxLCA0MywgMTMxLCA4NiwgMjQxLCA0MiwgMTMxLCA4NiwgMjQxLCA0MSwgMTMxLCA4NiwgMjQxLCAKKyAgICA0MCwgMTMxLCA4NiwgMjQxLCAzOSwgMTMxLCA4NiwgMjQxLCAzOCwgMTMxLCA4NiwgMjQxLCAzNywgMTMxLCA4NiwgMjQxLCAKKyAgICAzNiwgMTMxLCA4NiwgMjQxLCAzNSwgMTMxLCA4NiwgMjQxLCAzNCwgMTMxLCA4NiwgMjQxLCAzMywgMTMxLCA4NiwgMjQxLCAKKyAgICAzMiwgMTMxLCA4NiwgMjQxLCAzMSwgMTMxLCA4NiwgMjQxLCAzMCwgMTMxLCA4NiwgMjQxLCAyOSwgMTMxLCA4NiwgMjQxLCAKKyAgICAyOCwgMTMxLCA4NiwgMjQxLCAyNywgMTMxLCA4NiwgMjQxLCAyNiwgMTMxLCA4NiwgMjQxLCAyNSwgMTMxLCA4NiwgMjQxLCAKKyAgICAyNCwgMTMxLCA4NiwgMjQxLCAyMywgMTMxLCA4NiwgMjQxLCAyMiwgMTMxLCA4NiwgMjQxLCAyMSwgMTMxLCA4NiwgMjQxLCAKKyAgICAyMCwgMTMxLCA4NiwgMjQxLCAxOSwgMTMxLCA4NiwgMjQxLCAxOCwgMTMxLCA4NiwgMjQxLCAxNywgMTMxLCA4NiwgMjQxLCAKKyAgICAxNiwgMTMxLCA4NiwgMjQxLCAxNSwgMTMxLCA4NiwgMjQxLCAxNCwgMTMxLCA4NiwgMjQxLCAxMywgMTMxLCA4NiwgMjQxLCAKKyAgICAxMiwgMTMxLCA4NiwgMjQxLCAxMSwgMTMxLCA4NiwgMjQxLCAxMCwgMTMxLCA4NiwgMjQxLCA5LCAxMzEsIDg2LCAyNDEsIDgsIAorICAgIDEzMSwgODYsIDI0MSwgNywgMTMxLCA4NiwgMjQxLCA2LCAxMzEsIDg2LCAyNDEsIDUsIDEzMSwgODYsIDI0MSwgNCwgMTMxLCAKKyAgICA4NiwgMjQxLCAzLCAxMzEsIDg2LCAyNDEsIDIsIDEzMSwgODYsIDI0MSwgMSwgMTMxLCA4NiwgMjQxLCAwLCAxMzEsIDg2LCAKKyAgICAyNDAsIDI1NSwgMTMxLCA4NiwgMjQwLCAyNTQsIDEzMSwgODYsIDI0MCwgMjUzLCAxMzEsIDg2LCAyNDAsIDI1MiwgMTMxLCAKKyAgICA4NiwgMjQwLCAyNTEsIDEzMSwgODYsIDY3LCAyNTIsIDE4NCwgMTMxLCA4NiwgMjEzLCAyMzgsIDEzMSwgODYsIDIxMywgCisgICAgMjM3LCAxMzEsIDg2LCAyMTMsIDIzNiwgMTMxLCA4NiwgMjEzLCAyMzUsIDEzMSwgODYsIDIxMywgMjM0LCAxMzEsIDg2LCAKKyAgICAyMTMsIDIzMywgMTMxLCA4NiwgMjEzLCAyMzIsIDEzMSwgODYsIDIxMywgMjMxLCAxMzEsIDg2LCAyMTMsIDIzMCwgMTMxLCAKKyAgICA4NiwgMjEzLCAyMjksIDEzMSwgODYsIDIxMywgMjI4LCAxMzEsIDg2LCAyMTMsIDIyNywgMTMxLCA4NiwgMjEzLCAyMjYsIAorICAgIDEzMSwgODYsIDIxMywgMjI1LCAxMzEsIDg2LCAyMTMsIDIyNCwgMTMxLCA4NiwgMjEzLCAyMjMsIDEzMSwgODYsIDIxMywgCisgICAgMjIyLCAxMzEsIDg2LCAyMTMsIDIyMSwgMTMxLCA4NiwgMjEzLCAyMjAsIDEzMSwgODYsIDIxMywgMjE5LCAxMzEsIDg2LCAKKyAgICAyMTMsIDIxOCwgMTMxLCA4NiwgMjEzLCAyMTcsIDEzMSwgODYsIDIxMywgMjE2LCAxMzEsIDg2LCAyMTMsIDIxNSwgMTMxLCAKKyAgICA4NiwgMjEzLCAyMTQsIDEzMSwgODYsIDIxMywgMjEzLCAxMzEsIDg2LCAyMTMsIDIxMiwgMTMxLCA4NiwgMjEzLCAyMTEsIAorICAgIDEzMSwgODYsIDIxMywgMjEwLCAxMzEsIDg2LCAyMTMsIDIwOSwgMTMxLCA4NiwgMjEzLCAyMDgsIDEzMSwgODYsIDIxMywgCisgICAgMjA3LCAxMzEsIDg2LCAyMTMsIDIwNiwgMTMxLCA4NiwgMjEzLCAyMDUsIDEzMSwgODYsIDIxMywgMjA0LCAxMzEsIDg2LCAKKyAgICAyMTMsIDIwMywgMTMxLCA4NiwgMjEzLCAyMDIsIDEzMSwgODYsIDIxMywgMjAxLCAxMzEsIDg2LCAyMTMsIDIwMCwgMTMxLCAKKyAgICA4NiwgMjEzLCAxOTksIDEzMSwgODYsIDIxMywgMTk4LCAxMzEsIDg2LCAyMTMsIDE5NywgMTMxLCA4NiwgMjEzLCAxOTYsIAorICAgIDEzMSwgODYsIDIxMywgMTk1LCAxMzEsIDg2LCAyMTMsIDE5NCwgMTMxLCA4NiwgMjEzLCAxOTMsIDEzMSwgODYsIDIxMywgCisgICAgMTkyLCAxMzEsIDg2LCAyMTMsIDE5MSwgMTMxLCA4NiwgMjEzLCAxOTAsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNTIsIDE4NCwgCisgICAgMjI1LCAzMywgMjUwLCAyNDMsIDI1NSwgOSwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAxMTMsIDY0LCAyMTksIAorICAgIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMTM0LCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDI0NCwgMTEsIDY0LCAKKyAgICAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjQ0LCA4MSwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMTksIAorICAgIDEyNSwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjAsIDEyMiwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgCisgICAgMjQzLCAyNDUsIDE5MywgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjgsIDIwMCwgNjQsIDIxOSwgMTUsIAorICAgIDIyNSwgMzMsIDI1MCwgMjQzLCAyMTYsIDI0OCwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzUsIDEzOSwgCisgICAgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDMxLCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIAorICAgIDIyNCwgMTUsIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjM0LCA3OSwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIAorICAgIDI1MCwgMjQzLCAyNTUsIDksIDY0LCAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIDExMywgNjQsIDI0MSwgMjI1LCAKKyAgICAyMjUsIDMzLCAyNTAsIDI0MywgMTM0LCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDQsIDExLCA2NCwgCisgICAgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDQsIDgxLCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAKKyAgICAyMTksIDEyNSwgNjQsIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjIwLCAxMjIsIDY0LCAyNDEsIDIyNSwgMjI1LCAKKyAgICAzMywgMjUwLCAyNDMsIDI0NSwgMTkzLCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjgsIDIwMCwgNjQsIAorICAgIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjE2LCAyNDgsIDY0LCAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIAorICAgIDIzNSwgMTM5LCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDMxLCA2NCwgMjQxLCAyMjUsIDIyNSwgCisgICAgMzMsIDI1MCwgMjQzLCAyMjQsIDE1LCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDc5LCA2NCwgMjQxLCAKKyAgICAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNTUsIDksIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDExMywgNjQsIAorICAgIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMTM0LCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDQsIAorICAgIDExLCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDQsIDgxLCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgCisgICAgMjQzLCAyMTksIDEyNSwgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMjIwLCAxMjIsIDY0LCAyNDcsIDI0NywgCisgICAgMjI1LCAzMywgMjUwLCAyNDMsIDI0NSwgMTkzLCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjgsIDIwMCwgCisgICAgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMjE2LCAyNDgsIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAKKyAgICAyNDMsIDIzNSwgMTM5LCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDMxLCA2NCwgMjQ3LCAyNDcsIAorICAgIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjQsIDE1LCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDc5LCA2NCwgCisgICAgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCA4NSwgMjM1LCA2MiwgMjI1LCAzMywgMjUwLCAyNDMsIDI1NSwgOSwgNjQsIAorICAgIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMTEzLCA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAxMzQsIAorICAgIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDI0NCwgMTEsIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAKKyAgICAyNDMsIDI0NCwgODEsIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDIxOSwgMTI1LCA2NCwgMjQ5LCAyNDIsIAorICAgIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjAsIDEyMiwgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMjQ1LCAxOTMsIAorICAgIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDIyOCwgMjAwLCA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgCisgICAgMjQzLCAyMTYsIDI0OCwgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMjM1LCAxMzksIDY0LCAyNDksIDI0MiwgCisgICAgMjI1LCAzMywgMjUwLCAyNDMsIDIzNCwgMzEsIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDIyNCwgMTUsIDY0LCAKKyAgICAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDIzNCwgNzksIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIAorICAgIDcxLCAyMzUsIDYyLCAyMSwgMjEwLCA4NywgMjQzLCAyMjksIDIxOCwgMTI5LCAyMSwgMjEwLCA4NywgMjQ5LCAyMTksIDIxLCAKKyAgICAxMjMsIDI0OSwgMjE5LCAyMSwgMTEzLCAyNDksIDIxOSwgMjEsIDEzNCwgMjQ5LCAyMTksIDIxLCAyNDQsIDExLCAyNDksIAorICAgIDIxOSwgMjEsIDI0NCwgODEsIDI0OSwgMjE5LCAyMSwgMjE5LCAxMjUsIDI0OSwgMjE5LCAyMSwgMjIwLCAxMjIsIDI0OSwgCisgICAgMjE5LCAyMSwgMjQ1LCAxOTMsIDI0OSwgMjE5LCAyMSwgMjI4LCAyMDAsIDI0OSwgMjE5LCA4OCwgNywgNiwgMSwgNjEsIDg4LCAKKyAgICA3LCA2LCAxLCAyNTMsIDE1OCwgODgsIDcsIDYsIDEsIDI1MSwgNjYsIDg4LCA3LCA2LCAxLCAyNDksIDYwLCA4OCwgNywgNiwgCisgICAgMSwgNzUsIDg4LCA3LCA2LCAxLCAyNDUsIDYsIDg4LCA3LCA2LCAxLCAyNDMsIDIwMiwgODgsIDcsIDYsIDEsIDI0MiwgNjAsIAorICAgIDg4LCA3LCA2LCAxLCA3MywgODgsIDcsIDYsIDEsIDIzNSwgMTQ0LCA4OCwgNywgNiwgMSwgMjM1LCAyMywgODgsIDcsIDYsIAorICAgIDEsIDE1NiwgODgsIDcsIDYsIDEsIDE5MywgODgsIDcsIDYsIDEsIDIzMCwgMjUsIDg4LCA3LCA2LCAxLCA3NiwgODgsIDcsIAorICAgIDYsIDEsIDIyNiwgMTA1LCA4OCwgNywgNiwgMSwgMjI0LCA5NiwgODgsIDcsIDYsIDEsIDE1MywgODgsIDcsIDYsIDEsIDIyMiwgCisgICAgOTEsIDg4LCA3LCA2LCAxLCAyMTcsIDE1MiwgODgsIDcsIDYsIDEsIDcwLCA4OCwgNywgNiwgMSwgMjE0LCAxMDUsIDg4LCA3LCAKKyAgICA2LCAxLCAyMTIsIDk4LCA4OCwgNywgNiwgMSwgMjExLCAxNzgsIDg4LCA3LCA2LCAxLCAyMTEsIDExNywgODgsIDcsIDYsIDEsIAorICAgIDIxMCwgMTU5LCAyMTYsIDYsIDIyMCwgNTMsIDI1MSwgMTU3LCA3LCA2LCAxLCAyMjIsIDkxLCAzNywgMzIsIDcsIDYsIDEsIAorICAgIDI1MSwgNjYsIDM3LCAzMiwgNywgNiwgMSwgMTUzLCAzNywgMjUwLCAxOTEsIDM3LCAyMTEsIDE4MCwgOTIsIDcsIDYsIDEsIAorICAgIDYxLCA5MiwgNywgNiwgMSwgMjUzLCAxNTgsIDkyLCA3LCA2LCAxLCAyNTEsIDY2LCA5MiwgNywgNiwgMSwgMjQ5LCA2MCwgCisgICAgOTIsIDcsIDYsIDEsIDc1LCA5MiwgNywgNiwgMSwgMjQ1LCA2LCA5MiwgNywgNiwgMSwgMjQzLCAyMDIsIDkyLCA3LCA2LCAxLCAKKyAgICAyNDIsIDYwLCA5MiwgNywgNiwgMSwgNzMsIDkyLCA3LCA2LCAxLCAyMzUsIDE0NCwgOTIsIDcsIDYsIDEsIDIzNSwgMjMsIAorICAgIDkyLCA3LCA2LCAxLCAxNTYsIDkyLCA3LCA2LCAxLCAxOTMsIDkyLCA3LCA2LCAxLCAyMzAsIDI1LCA5MiwgNywgNiwgMSwgCisgICAgNzYsIDkyLCA3LCA2LCAxLCAyMjYsIDEwNSwgOTIsIDcsIDYsIDEsIDIyNCwgOTYsIDkyLCA3LCA2LCAxLCAxNTMsIDkyLCA3LCAKKyAgICA2LCAxLCAyMjIsIDkxLCA5MiwgNywgNiwgMSwgMjE3LCAxNTIsIDkyLCA3LCA2LCAxLCA3MCwgOTIsIDcsIDYsIDEsIDIxNCwgCisgICAgMTA1LCA5MiwgNywgNiwgMSwgMjEyLCA5OCwgOTIsIDcsIDYsIDEsIDIxMSwgMTc4LCA5MiwgNywgNiwgMSwgMjExLCAxMTcsIAorICAgIDkyLCA3LCA2LCAxLCAyMTAsIDE1OSwgOTIsIDI0MCwgMjAxLCA5MiwgMjMwLCA0OSwgOTIsIDIyMSwgMTgzLCA5MiwgMjE4LCAKKyAgICAyMjYsIDkyLCAyMjQsIDIxOCwgOTIsIDIxMiwgMjMsIDE1MiwgMzcsIDcsIDYsIDEsIDYxLCAxNTIsIDM3LCA3LCA2LCAxLCAKKyAgICAyNTMsIDE1OCwgMTUyLCAzNywgNywgNiwgMSwgMjUxLCA2NiwgMTUyLCAzNywgNywgNiwgMSwgMjQ5LCA2MCwgMTUyLCAzNywgCisgICAgNywgNiwgMSwgNzUsIDE1MiwgMzcsIDcsIDYsIDEsIDI0NSwgNiwgMTUyLCAzNywgNywgNiwgMSwgMjQzLCAyMDIsIDE1MiwgCisgICAgMzcsIDcsIDYsIDEsIDI0MiwgNjAsIDE1MiwgMzcsIDcsIDYsIDEsIDczLCAxNTIsIDM3LCA3LCA2LCAxLCAyMzUsIDE0NCwgCisgICAgMTUyLCAzNywgNywgNiwgMSwgMjM1LCAyMywgMTUyLCAzNywgNywgNiwgMSwgMTU2LCAxNTIsIDM3LCA3LCA2LCAxLCAxOTMsIAorICAgIDE1MiwgMzcsIDcsIDYsIDEsIDIzMCwgMjUsIDE1MiwgMzcsIDcsIDYsIDEsIDc2LCAxNTIsIDM3LCA3LCA2LCAxLCAyMjYsIAorICAgIDEwNSwgMTUyLCAzNywgNywgNiwgMSwgMjI0LCA5NiwgMTUyLCAzNywgNywgNiwgMSwgMTUzLCAxNTIsIDM3LCA3LCA2LCAxLCAKKyAgICAyMjIsIDkxLCAxNTIsIDM3LCA3LCA2LCAxLCAyMTcsIDE1MiwgMTUyLCAzNywgNywgNiwgMSwgNzAsIDE1MiwgMzcsIDcsIDYsIAorICAgIDEsIDIxNCwgMTA1LCAxNTIsIDM3LCA3LCA2LCAxLCAyMTIsIDk4LCAxNTIsIDM3LCA3LCA2LCAxLCAyMTEsIDE3OCwgMTUyLCAKKyAgICAzNywgNywgNiwgMSwgMjExLCAxMTcsIDE1MiwgMzcsIDcsIDYsIDEsIDIxMCwgMTU5LCAyMjMsIDE1NywgMjMxLCA5NywgNTAsIAorICAgIDIyMywgMTU3LCAyMzEsIDk0LCA1MCwgMTUyLCA5MiwgNywgNiwgMSwgNjEsIDE1MiwgOTIsIDcsIDYsIDEsIDI1MywgMTU4LCAKKyAgICAxNTIsIDkyLCA3LCA2LCAxLCAyNTEsIDY2LCAxNTIsIDkyLCA3LCA2LCAxLCAyNDksIDYwLCAxNTIsIDkyLCA3LCA2LCAxLCAKKyAgICA3NSwgMTUyLCA5MiwgNywgNiwgMSwgMjQ1LCA2LCAxNTIsIDkyLCA3LCA2LCAxLCAyNDMsIDIwMiwgMTUyLCA5MiwgNywgNiwgCisgICAgMSwgMjQyLCA2MCwgMTUyLCA5MiwgNywgNiwgMSwgNzMsIDE1MiwgOTIsIDcsIDYsIDEsIDIzNSwgMTQ0LCAxNTIsIDkyLCA3LCAKKyAgICA2LCAxLCAyMzUsIDIzLCAxNTIsIDkyLCA3LCA2LCAxLCAxNTYsIDE1MiwgOTIsIDcsIDYsIDEsIDE5MywgMTUyLCA5MiwgNywgCisgICAgNiwgMSwgMjMwLCAyNSwgMTUyLCA5MiwgNywgNiwgMSwgNzYsIDE1MiwgOTIsIDcsIDYsIDEsIDIyNiwgMTA1LCAxNTIsIDkyLCAKKyAgICA3LCA2LCAxLCAyMjQsIDk2LCAxNTIsIDkyLCA3LCA2LCAxLCAxNTMsIDE1MiwgOTIsIDcsIDYsIDEsIDIyMiwgOTEsIDE1MiwgCisgICAgOTIsIDcsIDYsIDEsIDIxNywgMTUyLCAxNTIsIDkyLCA3LCA2LCAxLCA3MCwgMTUyLCA5MiwgNywgNiwgMSwgMjE0LCAxMDUsIAorICAgIDE1MiwgOTIsIDcsIDYsIDEsIDIxMiwgOTgsIDE1MiwgOTIsIDcsIDYsIDEsIDIxMSwgMTc4LCAxNTIsIDkyLCA3LCA2LCAxLCAKKyAgICAyMTEsIDExNywgMTUyLCA5MiwgNywgNiwgMSwgMjEwLCAxNTksIDI0OSwgMTI4LCAxNTIsIDkyLCA3LCA2LCAxLCAyMjYsIAorICAgIDEwNSwgMTUyLCA5MiwgMjQwLCAxMTMsIDE1MiwgOTIsIDE5MCwgMTUyLCA5MiwgMjA2LCAxNTIsIDkyLCAyNTUsIDI1LCAKKyAgICAxNTIsIDkyLCAyMTIsIDIzLCA0MiwgMjQ3LCAxNjQsIDkyLCAyNTAsIDIzLCA5MiwgMjQ5LCAxNzAsIDkyLCAyNDMsIDI1MiwgCisgICAgOTIsIDI0MCwgMTA1LCA5MiwgMjI5LCA4NiwgOTIsIDIyOSwgNzksIDkyLCAyMjYsIDIxNCwgOTIsIDIxOSwgMzUsIDkyLCAKKyAgICAxMjAsIDIsIDI0NSwgMzEsIDc4LCA5MiwgMjEzLCAxMTksIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDYxLCAyMjMsIAorICAgIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyNTMsIDE1OCwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjUxLCA2NiwgMjIzLCAKKyAgICAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjQ5LCA2MCwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgNzUsIDIyMywgMTAzLCAKKyAgICAyMzUsIDIzOSwgMTYsIDEsIDI0NSwgNiwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjQzLCAyMDIsIDIyMywgMTAzLCAKKyAgICAyMzUsIDIzOSwgMTYsIDEsIDI0MiwgNjAsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDczLCAyMjMsIDEwMywgMjM1LCAKKyAgICAyMzksIDE2LCAxLCAyMzUsIDE0NCwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjM1LCAyMywgMjIzLCAxMDMsIDIzNSwgCisgICAgMjM5LCAxNiwgMSwgMTU2LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAxOTMsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIAorICAgIDEsIDIzMCwgMjUsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDc2LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAKKyAgICAyMjYsIDEwNSwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjI0LCA5NiwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgCisgICAgMTUzLCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMjIsIDkxLCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMTcsIAorICAgIDE1MiwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgNzAsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDIxNCwgMTA1LCAKKyAgICAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMTIsIDk4LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMTEsIDE3OCwgCisgICAgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjExLCAxMTcsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDIxMCwgMTU5LCAKKyAgICA0MiwgMTQxLCAyNDEsIDYzLCA5MiwgNTYsIDIzNCwgMTgsIDkyLCA1NiwgMjA2LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTAsIAorICAgIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1NCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDYyLCA5MiwgNTYsIDI0OCwgOTAsIDkyLCAKKyAgICA5LCAyMTQsIDE3NywgMjM4LCA2OSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDU2LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMjgsIAorICAgIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1NSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDY4LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgCisgICAgNDIsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAzNSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDQ0LCA5MiwgOSwgMjE0LCAxNzcsIAorICAgIDIzOCwgNjUsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1MSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDY3LCA5MiwgOSwgMjE0LCAKKyAgICAxNzcsIDIzOCwgNDMsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA2NiwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDI5LCA5MiwgOSwgCisgICAgMjE0LCAxNzcsIDIzOCwgMzQsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAyNywgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDU3LCAKKyAgICA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTksIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAzNywgOTIsIDksIDIxNCwgMTc3LCAyMzgsIAorICAgIDQ4LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNDYsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA3MiwgOTIsIDksIDIxNCwgMTc3LCAKKyAgICAyMzgsIDcxLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMjUsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1MiwgOTIsIDksIDIxNCwgCisgICAgMTc3LCAyMzgsIDcwLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNjEsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA0NywgOTIsIDksIAorICAgIDIxNCwgMTc3LCAyMzgsIDI2LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNDksIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAzMSwgCisgICAgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDMwLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNjAsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAKKyAgICAzOCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDQwLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNDEsIDkyLCA5LCAyMTQsIDE3NywgCisgICAgMjM4LCAzMywgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDY0LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTgsIDIxNiwgNiwgMjIwLCAKKyAgICA1MywgMjUxLCAxNTcsIDksIDIxNCwgMTc3LCAyMzgsIDM5LCAyMTYsIDYsIDIyMCwgNTMsIDI1MSwgMTU3LCA5LCAyMTQsIAorICAgIDE3NywgMjM4LCA3MSwgMjE2LCA2LCAyMjAsIDUzLCAyNTEsIDE1NywgOSwgMjE0LCAxNzcsIDIzOCwgNjksIDIxNiwgNiwgCisgICAgMjIwLCA1MywgMjUxLCAxNTcsIDksIDIxNCwgMTc3LCAyMzgsIDUzLCAyMTYsIDYsIDIyMCwgNTMsIDI1MSwgMTU3LCA5LCAKKyAgICAyMTQsIDE3NywgMjM4LCAzNiwgMjE2LCA2LCAyMjAsIDUzLCAyNTEsIDE1NywgOSwgMjE0LCAxNzcsIDIzOCwgNDksIDIxNiwgCisgICAgNiwgMjIwLCA1MywgMjUxLCAxNTcsIDksIDIxNCwgMTc3LCAyMzgsIDMyLCAyMTYsIDYsIDIyMCwgNTMsIDI1MSwgMTU3LCA5LCAKKyAgICAyMTQsIDE3NywgMjM4LCA2MywgMjE2LCA2LCAyMjAsIDUzLCAyNTEsIDE1NywgOSwgMjE0LCAxNzcsIDIzOCwgNDUsIDM3LCAKKyAgICAxNTQsIDI1NCwgMjQ1LCAzNywgMTU0LCAyNTUsIDEyLCAyNDksIDcxLCAyNDQsIDQyLCAyNTAsIDAsIDIxNCwgMTk0LCAyMjgsIAorICAgIDIxMywgMiwgMjE4LCAxNTMsIDIxOCwgMzMsIDExNywgMjMwLCAxMTQsIDIxOCwgMzIsIDI1MCwgMjYsIDI1MywgMjA3LCAKKyAgICAyNDYsIDU0LCAyMTgsIDMxLCAxMTcsIDI1MSwgMTE4LCAyMjMsIDE1OCwgMjUxLCAxNDAsIDI1MywgMjA3LCAyMjgsIDIxMiwgCisgICAgMjEyLCA0MSwgMjEyLCAzNSwgMjEzLCAxMzEsIDIzMCwgMTk1LCAyMTIsIDI1LCAyNDUsIDIyNCwgMjQyLCAxODEsIDI0NSwgCisgICAgNDUsIDI0NSwgMjI0LCAyNDIsIDE4MSwgMjU0LCAxMjgsIDI0NSwgMjI0LCAyNDIsIDE4MSwgMjUzLCAyMjUsIDI0MiwgMTgxLCAKKyAgICAyLCAyMzEsIDUxLCAxNjYsIDIzMCwgMTI5LCA4NywgMjEyLCAyNywgMjQ5LCAxMzcsIDIzMCwgMTI5LCA4NywgMjQ0LCA5MiwgCisgICAgMjI0LCAyMiwgMjMwLCAxMjksIDg3LCAyMTIsIDI3LCAyNDIsIDIxMCwgMjMwLCAxMjksIDg3LCAyNDMsIDIyOSwgMjMwLCAKKyAgICAxMjksIDg3LCAyMTIsIDUyLCAyNDIsIDIxMCwgMjMwLCAxMjksIDg3LCAyMzMsIDgwLCAyMjQsIDIyLCAyMzAsIDEyOSwgODcsIAorICAgIDIxMiwgNTIsIDI0OSwgMTM3LCAyMzAsIDEyOSwgODcsIDI0OSwgMTM3LCAyMzAsIDEyOCwgMTY2LCAyMzAsIDEyOSwgMiwgCisgICAgMjQ0LCAxOTAsIDI0NCwgOTIsIDIyNCwgMjIsIDIzMCwgMTI5LCAyLCAyNDQsIDE5MCwgMjMzLCA4MCwgMjI0LCAyMiwgMjMwLCAKKyAgICAxMjksIDIsIDI0NCwgMTkwLCAyNDMsIDIyOSwgMjMwLCAxMjksIDIsIDI0NCwgMTkwLCAyMTgsIDM4LCAyLCAyNDQsIDE5MCwgCisgICAgMjQyLCAxNzksIDIxOCwgMTU2LCAyMTksIDI1NSwgMjE4LCAxNTYsIDI1MCwgMTE2LCAyMjEsIDE2OCwgMjQ1LCAzOSwgMjE1LCAKKyAgICAyMzUsIDI0OCwgODQsIDIxNSwgMjM1LCAyMjYsIDU5LCAyMTUsIDIzNSwgMjUxLCAyNywgMjE1LCAxMDksIDI1MCwgMTE4LCAKKyAgICAyNTEsIDIxMCwgMjIyLCAxOTEsIDI0MSwgMTc5LCAyMTgsIDM2LCAyNTEsIDIxMCwgMjQ1LCAyMjgsIDY0LCAyMzEsIDE5NCwgCisgICAgMjQ1LCAyMjgsIDY0LCAyMjMsIDMxLCAyNDEsIDIwNCwgMjQ0LCAxMSwgMjMzLCA1NCwgMjQ5LCAyNDYsIDIzMSwgMTcwLCAKKyAgICAyMzMsIDUzLCAyNDQsIDE3NiwgMjMzLCA1MywgMjMzLCA1NCwgMjQ0LCA0NywgMjM2LCAwLCAyMTEsIDIzOSwgMjMwLCA1OCwgCisgICAgMjE2LCAzNCwgMjUzLCAxOTEsIDI0MiwgMTQzLCAyMzEsIDY3LCAyMTIsIDM5LCAyMTcsIDU3LCAyMzMsIDI2LCAyNTIsIAorICAgIDE0OSwgMjI1LCA2MiwgMjIzLCAxMTEsIDI1NCwgNTQsIDI0MiwgMTI3LCAyNTQsIDU0LCAyMjUsIDIxNywgMjI1LCAyMTgsIAorICAgIDI1MCwgMTE5LCAyMTgsIDExNCwgMjQyLCAyMywgMjE5LCA5MCwgNjQsIDIyNSwgNDQsIDIzMSwgODcsIDIyNiwgMTk3LCAKKyAgICAyNTEsIDE5NCwgMjI0LCAyMjksIDIzMywgMzYsIDIyMywgMzIsIDI0OSwgMTQyLCAyMjMsIDMyLCAyNTIsIDE1OSwgMjQ5LCAKKyAgICAxNzMsIDIyMywgMzEsIDI0OSwgOTUsIDIyLCAyMjMsIDMxLCAyMTgsIDE0MSwgMjUxLCAxNjcsIDIxOSwgMTQsIDI1MSwgCisgICAgMTUxLCAyNDMsIDI1MSwgMjQzLCAyNDcsIDIyMiwgMjA3LCAyMTcsIDI0NiwgMjI0LCAyMzEsIDI0OCwgMTc1LCAyMjYsIAorICAgIDIzNiwgMjE4LCA3LCAyNDMsIDI0OCwgMjE5LCAyMzAsIDI0NCwgOTEsIDI1MSwgMjEsIDIsIDIxNywgMjM5LCAyNDgsIDM1LCAKKyAgICAyMTksIDUyLCAyNDAsIDExMiwgMjQ5LCAxNDEsIDIyMCwgNzAsIDI0MCwgMTExLCAyNDAsIDExMiwgMjQ5LCAxNDEsIDI0NiwgCisgICAgMTA4LCAyNDksIDE3MiwgMjUwLCA4NCwgMTMwLCAyNTAsIDI1NCwgMjMyLCAxNDEsIDI0OSwgODgsIDI0MSwgNTUsIDIyNCwgCisgICAgMjMzLCAyMTksIDI0MCwgMjUyLCAzNiwgMjUxLCAxNjMsIDIyNCwgMjM0LCA2NCwgMjQ0LCAzMywgMjQ5LCAxNzEsIDI0NCwgCisgICAgMjQsIDIyLCAyMzQsIDMyLCAyMTcsIDE5LCAyMTEsIDIzMCwgMjQyLCAxMywgMjIyLCAxMiwgMjUxLCAxNzcsIDIyLCAyNDksIAorICAgIDEwMiwgMjExLCAyMzcsIDI0MiwgMTg0LCAyNDksIDIzNSwgMjQyLCAxODQsIDIxNSwgMTkzLCAyNDYsIDkwLCAyNTIsIDYyLCAKKyAgICAyMzAsIDkzLCAyNTAsIDcsIDI1MiwgNjIsIDIzMCwgOTIsIDI1MiwgMTg3LCAyNTEsIDE3NiwgMjIzLCAzMywgMjExLCAyMDEsIAorICAgIDIyNCwgMTk1LCAyNTEsIDIzNSwgMjUxLCAyMCwgMjM1LCAxMzgsIDI1MCwgNzcsIDIxNSwgMjM1LCAyNDQsIDE2MiwgMjUwLCAKKyAgICA3NiwgMjQ0LCA5NCwgMjQ0LCA5NSwgMjE5LCAxMiwgMjUyLCAxNTgsIDIyNSwgMjUwLCAyMjQsIDI0NCwgMjQ5LCAyMDQsIAorICAgIDI1MiwgMTU5LCAyMTcsIDU5LCAyMTUsIDIzNSwgMjQ5LCAxMjgsIDI0NCwgNjcsIDIyNSwgNjMsIDI0OCwgODEsIDIzNSwgCisgICAgMTMxLCAyNDcsIDEzMSwgMjUwLCAyMzIsIDIxOCwgMTEzLCAyMTEsIDI0MCwgMjUwLCA5OCwgMjMwLCAxMjksIDIxMywgMTY0LCAKKyAgICAyNTAsIDE2MiwgMjIxLCAxOTksIDIyMSwgMjI0LCAyNDIsIDE0OCwgMjUwLCAyNTEsIDI1MCwgMjMzLCAyNDAsIDI0NSwgCisgICAgMjQ0LCAxMzAsIDIxMiwgMCwgMjIyLCAyMDAsIDI0OSwgMjM2LCAyNDQsIDg2LCAyMjUsIDIsIDIyLCAyNDQsIDkwLCAyMzAsIAorICAgIDIyNywgMjMwLCAxMDgsIDI1MSwgMTAsIDI1MCwgMzksIDI0MSwgMjMyLCAyNTMsIDI0MSwgMjI2LCA2MiwgMjE2LCAxNCwgCisgICAgMjQxLCAyNTEsIDI1MCwgMjksIDIxNiwgMjQyLCAyMTYsIDExMywgMjUwLCAyMCwgMjUxLCAyMDIsIDIyNSwgMTc3LCAyNTMsIAorICAgIDI0MCwgMjEzLCAxNzIsIDI0MywgMTEwLCAyNDcsIDE5NywgMjQxLCAxNTYsIDIxOSwgODQsIDIzMSwgMjM0LCAyNTEsIDI0NSwgCisgICAgMjQzLCAxMTEsIDI0NywgMjQwLCAyNTEsIDE2NiwgMjQ0LCA1MiwgMjI1LCAzMywgMjUwLCAyNDEsIDI4LCAyMjgsIDQ3LCAKKyAgICAyMzAsIDg1LCAyOCwgMjI4LCA0MiwgMjIxLCAyMTIsIDI0MiwgOTksIDI4LCAyMzQsIDEzNywgMjE1LCAxOTAsIDIxMywgCisgICAgMTU0LCAyOCwgMjIxLCAxOTIsIDIyMiwgMTI0LCAyMjAsIDExLCAyLCAyMjEsIDIyNywgMjE2LCAyNDQsIDIyMywgMTc4LCAKKyAgICAyMiwgMjUyLCAxNTksIDIxOSwgMTA1LCAyMiwgMjE5LCAxMDUsIDI1MSwgMTg3LCAyNTIsIDEyMywgMjIsIDI0MSwgNDksIAorICAgIDI1MCwgMTIwLCAyNDQsIDczLCAyMTksIDYzLCAyMjIsIDEyNSwgMjE4LCAxMiwgMjE1LCAxOTQsIDI0MCwgMjQ2LCAyMjMsIAorICAgIDE3OSwgMjU0LCAxMjksIDI0NCwgMzEsIDIyMiwgMTM2LCAyNDQsIDMxLCAyMTcsIDI0MSwgMjQwLCAyMzUsIDI1MSwgMTE5LCAKKyAgICAyNDAsIDIzNSwgMiwgMjQzLCA5NCwgMjI2LCAyMjksIDI1MSwgMTE5LCAyMzUsIDEzMSwgMjI0LCAyMzksIDIyNiwgMjI4LCAKKyAgICAyNDUsIDQ0LCAyMjQsIDIzOSwgMjI2LCAyMjgsIDI0MCwgMjQ0LCAyNTIsIDE0NSwgMjUzLCAxODEsIDIxNiwgMjUyLCAyMzEsIAorICAgIDIzNCwgMjQwLCAyNDAsIDIzMiwgMTExLCAyNDAsIDI0MCwgMjQ5LCAxNzYsIDIxOCwgMTI1LCAyMjEsIDE5OCwgMjQ4LCA0MywgCisgICAgMjE4LCAxMjUsIDI0NCwgMTgwLCAyMzUsIDE0OSwgMjMzLCA4OSwgMjM1LCAxMzEsIDI1MCwgMjI2LCAyNDUsIDQ0LCAyNTAsIAorICAgIDIyNiwgMjIzLCAxNDEsIDIzMCwgMTEyLCAyMjYsIDExNCwgMjEyLCA0MSwgMjUxLCAxMjMsIDI0OSwgMTQ1LCAyMTYsIDEwNiwgCisgICAgMjMzLCAxOCwgMjIzLCAxODAsIDI1MCwgMjI0LCAyNDYsIDk2LCAyNDksIDEzNSwgMjEyLCAzLCAyMTksIDcwLCAyMTksIDY4LCAKKyAgICAyNDAsIDI0NSwgMjIzLCAxNTMsIDI0MiwgMTcwLCAyMjAsIDU3LCAyMzAsIDE0NSwgMjIyLCAxOTQsIDI1MCwgMTA4LCAyNDcsIAorICAgIDEzNiwgMjI1LCA3MywgMjUxLCAyMDMsIDI0NSwgMTY5LCAyMjYsIDIzOCwgMjE4LCAyNTIsIDIyMCwgNTIsIDI1MSwgMTIyLCAKKyAgICAyNTQsIDkyLCAyNDEsIDU0LCAyMzMsIDEyMSwgMjUyLCA2MCwgMjQ0LCA5MCwgMjE1LCAxOTMsIDI0NCwgOTAsIDI1MSwgCisgICAgMjA5LCAyMTUsIDkxLCAyNDEsIDI0OSwgMjUwLCAxMDksIDI1MiwgMTg3LCAyNTAsIDEwOSwgMjQzLCAyNDIsIDI1MiwgMTg3LCAKKyAgICAyNTAsIDEwOSwgMjUxLCAyMzcsIDIyNSwgMTk1LCAyMzQsIDI2LCAyMjQsIDI0OCwgMjQ2LCA4NywgMjUxLCAxMSwgMjUyLCAKKyAgICAxNzcsIDI1MSwgMTEsIDI0NywgMTMwLCAyMzAsIDExMywgMjQ0LCAxOTAsIDI0OSwgMTQ2LCAyNDQsIDE5MCwgMjE2LCAxMDcsIAorICAgIDI0NCwgMTkwLCAyMjMsIDE4MSwgMjQ0LCAxOTAsIDI1MCwgMjI1LCAyNDQsIDE5MCwgMjQ2LCA5NywgMjQ0LCAxOTAsIDIxOCwgCisgICAgMjQxLCAyMTIsIDMsIDI0MCwgMjQ2LCAyNDQsIDE5MCwgMjMwLCAxNDYsIDI0NCwgMTkwLCAyNDcsIDEzNywgMjQ0LCAxOTAsIAorICAgIDIyNSwgNzQsIDI0NCwgMTkwLCAyNDMsIDI0NSwgMjQ0LCAxOTAsIDI0MiwgMjAsIDI0NCwgMTkwLCAyMTEsIDIyNCwgMjQ0LCAKKyAgICAxOTAsIDI1MiwgNzEsIDI0NCwgMTkwLCAyMjYsIDQ1LCAyNDQsIDE5MCwgMjI1LCA3NCwgMjI4LCA1MywgMjI1LCAyMzIsIAorICAgIDIyNCwgMTg2LCAyNDUsIDEzLCAyNDUsIDIyNywgMjI4LCA1MywgMjMwLCAxMTAsIDIxNiwgMTksIDcxLCAxMjAsIDIyNSwgNywgCisgICAgMjUyLCAxODIsIDIzNSwgMjQyLCA3MSwgMTI0LCAyMjUsIDcsIDI1MiwgMTgyLCAyMzUsIDI0MiwgNzEsIDQzLCAyMjUsIDcsIAorICAgIDI1MiwgMTgyLCAyMzUsIDI0MiwgNzEsIDQ0LCAyMjUsIDcsIDI1MiwgMTgyLCAyMzUsIDI0MiwgMjQ0LCA4NCwgMjQyLCAxNiwgCisgICAgNTAsIDIxMiwgMzMsIDI0MiwgMTYsIDUwLCAyMjYsIDIxNSwgMjQyLCAxNiwgNTAsIDIxNiwgMTM1LCAxMjAsIDUwLCAyMTYsIAorICAgIDEzNSwgMTI0LCA1MCwgMjUwLCAxOSwgMjQyLCAxMSwgNTAsIDIwNCwgMjQyLCAxMSwgNTAsIDI0OSwgMTIzLCAyMTEsIDIyMCwgCisgICAgMjQxLCAyNTEsIDI0NSwgMTQsIDIyOSwgMTA0LCAyMTcsIDE1MSwgMjM1LCAxMjUsIDI0NiwgOTIsIDIzNCwgODIsIDI1MSwgCisgICAgMjQ3LCAyMTEsIDIyMCwgMjQ5LCAyNDksIDIyNCwgMTI3LCAyNDIsIDE0LCAyMjQsIDIzMCwgMjMxLCAxNzcsIDIyMCwgNCwgCisgICAgMjUzLCAyMDMsIDIyMCwgNCwgMjQxLCAxNjQsIDIyMCwgNCwgMjExLCAyMjAsIDIyMSwgMjQwLCAyMTEsIDIyMCwgMjUxLCAKKyAgICAxODYsIDI0NCwgMjksIDI1MSwgOTAsIDIzNiwgMCwgMjE5LCAxNjksIDI1MSwgODksIDIzNiwgMCwgMjE5LCAxNjksIDI1MSwgCisgICAgMTYyLCAyNDIsIDE5NCwgMjMxLCAxODUsIDIxMSwgMjIxLCAyNDQsIDE3NCwgMjMxLCAxODYsIDIyLCAyMTEsIDIyMiwgMjQxLCAKKyAgICA2MCwgMjQyLCAxMCwgMTEzLCAyMzEsIDU5LCAyNDEsIDYwLCAyNDIsIDEwLCAxMTMsIDIxMSwgMjE5LCAyNDEsIDYwLCAyNDIsIAorICAgIDEwLCAyMjQsIDI1NSwgMjI2LCAyMjcsIDIxMSwgMjIyLCAyLCAyNTEsIDEwNiwgMjQ1LCAyMjUsIDI1MSwgMTQxLCAyLCAKKyAgICAyMTMsIDI0NiwgMjI1LCAxNjgsIDIsIDI1MSwgMjEyLCAyNDIsIDM0LCAyMzEsIDE4NiwgMiwgMjQyLCAxMTAsIDIyNSwgCisgICAgMTA5LCAyMzEsIDE3NCwgMjMxLCAxODYsIDIsIDIxNSwgOTcsIDIyNiwgMjA4LCAyMzEsIDE4NSwgMjI2LCAyMDgsIDIxMSwgCisgICAgMjIxLCAyNTIsIDE4NiwgMjQ5LCAxOTAsIDIxMSwgMjA1LCAyMjQsIDE4OSwgMjM1LCAxMzEsIDIyNiwgMjIzLCAyMzUsIAorICAgIDEzMSwgMjQyLCAxNjksIDI0MiwgMjIyLCAyNTIsIDE4NywgMjU0LCAxMTMsIDI0NSwgMTgsIDI1NCwgMTYwLCAyNTQsIDE2MSwgCisgICAgMjMwLCAxMzYsIDIzNiwgNSwgMjE5LCAxMDAsIDIzNSwgMjMyLCAyNDgsIDM0LCAyMjUsIDE2NywgMjQyLCAxMDUsIDI0OCwgCisgICAgMTc5LCAyMzIsIDIwMSwgMjI5LCAyMTEsIDIyNCwgMjU0LCAyNDQsIDE5MSwgMjMxLCAxNDIsIDI0MiwgMzMsIDI1MiwgMTM4LCAKKyAgICAyMjUsIDEsIDIxNywgMTcxLCAyMjUsIDY2LCAyMzQsIDY0LCA3OCwgMjMyLCAxMTEsIDIzMywgMTAsIDIyMiwgMjMzLCAyNDMsIAorICAgIDU0LCAyMTgsIDEzMSwgMjM0LCA2MywgMjUxLCAxNzEsIDI0OSwgMTQ4LCAyLCAyNDEsIDIyNywgMjEyLCAxOSwgMjUyLCA2OSwgCisgICAgMjQxLCAyMjcsIDI1MSwgMTM1LCAyNDEsIDIyNywgMTEzLCAyNDEsIDIyNSwgMjE5LCAxMCwgMjQxLCAyMjcsIDI0MiwgMTIwLCAKKyAgICAyNDEsIDIyNywgMjQxLCAyMjgsIDIsIDc0LCAyNTEsIDIwOCwgMjQxLCAyMjcsIDI0MiwgMTI3LCAyNDEsIDIyNywgMjExLCAKKyAgICA0MiwgMjQxLCAyMjcsIDIyNCwgMTI4LCAyNDEsIDIyNywgMjQxLCAyMjgsIDIsIDIyMywgMzMsIDIyMywgNDQsIDI0MSwgCisgICAgMjI1LCAyNDEsIDIyOCwgMjQ4LCA4MSwgMjQ3LCAyNDksIDIyMCwgODIsIDIsIDExNSwgNTksIDIzNSwgMjE1LCAyNDUsIAorICAgIDE3MiwgMTkyLCAyNTEsIDExNiwgMjU0LCAxMTIsIDg3LCAyNTEsIDE5NSwgMjE5LCA5MiwgODcsIDI0OSwgMjI4LCA4NywgCisgICAgMjE4LCAyNDYsIDIxNywgMjQ4LCA4NywgMjQ2LCA4NSwgMjQ4LCAxNTcsIDg3LCAyMjUsIDY3LCA2NCwgMjI0LCAyNDksIAorICAgIDI0NCwgNjEsIDI1MiwgMywgMjQ3LCAxNjUsIDg3LCAyMTksIDMsIDI1MiwgMTU4LCAyMTYsIDE0OSwgMjUyLCAxNTgsIDcxLCAKKyAgICAyNDQsIDUxLCAyNDAsIDIxMSwgMjI1LCA1LCA4NywgMjMwLCAxNDksIDI1MiwgMTcyLCAyNDksIDk4LCAyNDUsIDMyLCAxMTQsIAorICAgIDI0NywgMTMyLCA1MCwgMjQ5LCAxMzksIDI1MCwgMjQyLCAyNTIsIDE0NCwgMiwgMjExLCA0MCwgNTAsIDI1MiwgMTQ0LCAyLCAKKyAgICAyNDcsIDEzMiwgNTAsIDI1MiwgMTQ0LCAyLCAyNDUsIDQ3LCA1MCwgMjUyLCAxNDQsIDIsIDIyNCwgMjI4LCA1MCwgMjMwLCAKKyAgICAxNDksIDIsIDIxMSwgMjM1LCAyNTAsIDEzOCwgMiwgMjE0LCAxNTMsIDIxNSwgMjMxLCAyMiwgMjExLCA0MCwgNTAsIDIyMSwgCisgICAgMTc4LCAyMjUsIDE2NiwgMjQ5LCAyMDgsIDI1MSwgMTM5LCAyMzAsIDE4NiwgMjQ0LCA1NiwgMjQ3LCAxODUsIDIyNiwgMTYxLCAKKyAgICAyNDcsIDE5MCwgMjQ2LCA0OSwgMjQ0LCAxMDcsIDI0NCwgNDAsIDIwNCwgMjQ0LCAxMDcsIDI0NCwgNDAsIDIyNiwgNzYsIDIsIAorICAgIDI0OSwgMTAwLCAyMjYsIDc2LCAyNDQsIDE4MywgMjE0LCAxNjMsIDI1MSwgMTYsIDIxNywgMTgsIDI1MSwgMTYsIDI1MCwgCisgICAgMjQzLCAyMzUsIDI0MiwgMjUwLCAxMzgsIDIsIDIxNCwgMTUzLCAyMTUsIDIzMCwgMjUwLCAxMzgsIDIsIDI0NiwgMTA0LCAKKyAgICAyMTUsIDIzMCwgMjUyLCAxNDEsIDI1MCwgMTM3LCAyNTAsIDYsIDIyNCwgMTIzLCAyMjIsIDE4NSwgMjI0LCAxMjMsIDIyNiwgCisgICAgMTksIDIxOCwgMTIxLCAyMjIsIDEzMSwgMjE1LCAyMjIsIDIyMiwgMTMxLCAyNTEsIDE5MSwgMjE3LCA5MSwgMjMzLCA1MSwgCisgICAgMjI4LCA0NSwgMjI4LCA0NiwgMiwgMjQ4LCA4MCwgMjQ5LCAxNDcsIDI1MCwgMCwgMjUxLCAxOTIsIDIwNCwgMjUxLCAxOTIsIAorICAgIDI0MiwgMTI3LCAyNTEsIDE5MiwgMjUxLCAyMDgsIDI1MSwgMTkyLCAyMjYsIDE1NywgMjUxLCAxOTIsIDI1MSwgMTg5LCAKKyAgICAyMjksIDIwNSwgMjUyLCAxNzUsIDIyMSwgMTg2LCAyMzEsIDYwLCAyMTcsIDEsIDIyMywgMTIzLCAyMjYsIDc0LCAyNDQsIAorICAgIDE1OSwgMjMxLCAyMzQsIDIyMSwgMjIzLCAyNTQsIDg5LCAyMjQsIDE0NSwgMjU0LCAyNTIsIDIzMiwgMTEzLCAyNTAsIDEyNywgCisgICAgMjMxLCA3MiwgMjI2LCAxMjksIDIxNSwgMjM4LCAyMzUsIDI1MiwgMjE1LCAyMzgsIDIyNiwgODIsIDI0NiwgMjQsIDg3LCAKKyAgICAyMzUsIDI0OSwgMjQ1LCAxMTksIDI0NSwgMTIwLCAyLCAyNDYsIDEwNCwgODAsIDQ4LCAyNTAsIDAsIDIzMSwgMjAwLCAyLCAKKyAgICAyMzIsIDEwNywgMjQ0LCA3MywgMjUwLCAwLCAyMzEsIDIwMCwgMiwgMjIzLCAxNTcsIDI0NCwgNzMsIDIwNCwgMjMxLCAyMDAsIAorICAgIDIsIDIyMywgMTU3LCAyNDQsIDczLCAyMDQsIDIzMSwgMjAwLCAyLCAyMzIsIDEwNywgMjQ0LCA3MywgMjI0LCAyMzYsIDIyNCwgCisgICAgMjM3LCAyNDAsIDI0OCwgMjI5LCA4NCwgMjMwLCAxNTksIDIyNSwgMTE3LCAyMzAsIDE1OSwgMjI1LCAxMTgsIDIsIDk3LCAKKyAgICA4MCwgMjUzLCAyMDcsIDIzMywgNDYsIDIxMywgMTc1LCAyMzAsIDE1OCwgMjMwLCAxNTksIDIyNSwgMTE4LCAyMjYsIDIzMCwgCisgICAgMjI4LCA3NSwgMjMwLCAxNTksIDIyNSwgMTE2LCAyNTQsIDkwLCAyLCAyNTIsIDEyOSwgMjUxLCAxMCwgMjEzLCAxNzIsIAorICAgIDI1MSwgMTAsIDIxNiwgMjU0LCAyMjMsIDE3MywgMjEzLCAxNzEsIDIxNSwgNjAsIDk3LCAyNTMsIDI0NywgMjUwLCAyLCA5NywgCisgICAgMjIsIDE0MCwgMjA0LCAyNTAsIDM2LCAyNTMsIDI0NywgMjUwLCAyLCA5NywgMjIsIDE0MCwgMjA0LCAyNTAsIDM2LCAyNTMsIAorICAgIDI0OCwgMiwgMzcsIDEyMywgMjI2LCAxMjAsIDI1MCwgMiwgMjQ2LCAxMDQsIDIyLCAyMTQsIDE1MywgMjA0LCAyNTAsIDM2LCAKKyAgICAyNTMsIDI0NywgMjU0LCA4OCwgMjQ2LCAxMDQsIDIyLCAyMTQsIDE1MywgMjA0LCAyNTAsIDM2LCAyNTMsIDI0NywgMTIxLCAKKyAgICAyNTEsIDEzOCwgODcsIDEyNSwgMjUxLCAxMzgsIDg3LCAyMTksIDcsIDIsIDI1MSwgNCwgOTEsIDIxOSwgNiwgMjE5LCA3LCAKKyAgICAyLCAxMjMsIDIxOSwgMzEsIDIxMiwgMzUsIDIxOSwgNywgMiwgMTM0LCAyMTksIDMxLCAyMTIsIDM0LCAyNTIsIDExNSwgCisgICAgMjQ1LCAxNzIsIDIyNSwgMjcsIDIzMywgNDIsIDIzMSwgMjExLCAyNDIsIDE4NCwgMjIyLCAyNDcsIDIzMSwgMjExLCAyNDIsIAorICAgIDE4NCwgMjMyLCAxNTIsIDIsIDIzNSwgMjI1LCAyMjUsIDE5OSwgMjUwLCAwLCAyMzIsIDE1MiwgMiwgMjM0LCAxMzgsIDIzNCwgCisgICAgMTM4LCAyMzIsIDE1MSwgMjA0LCAyMzIsIDE1MSwgMjUyLCA0NCwgMjUyLCA0NSwgMiwgMjUxLCA0LCA5MSwgMjUxLCAxOTAsIAorICAgIDIzMiwgMjA0LCA4NywgMjIzLCAxNzQsIDI1MSwgODYsIDI1MiwgMTg1LCAyLCAxNDAsIDgwLCA0OCwgMjQ1LCAxNDMsIDIsIAorICAgIDE0MCwgODAsIDQ4LCAyMjYsIDE5NywgMiwgMjQ1LCAzMSwgMTY0LCAyLCA0MywgNDQsIDgwLCA0OCwgMjE5LCAzOSwgMiwgCisgICAgOTcsIDgwLCA0OCwgMjE2LCAxNCwgMiwgMjE0LCAxNTMsIDgwLCA0OCwgMjI4LCA3NSwgMTIzLCAyMTQsIDE4NCwgMjQ1LCAKKyAgICAxOTEsIDg3LCAyMzQsIDEzNiwgMjE2LCAyNDcsIDIzNSwgMjE5LCAxNiwgMzEsIDcsIDYsIDIzMywgOSwgMjM1LCAyMTksIAorICAgIDE2LCAzMSwgNywgNCwgMjMzLCA5LCAyMzUsIDIxOSwgMTYsIDMxLCAyMjcsIDE5OSwgMjM1LCAyMTksIDE2LCAzMSwgMjE3LCAKKyAgICAxODMsIDIzNSwgMjE5LCAxNiwgMzEsIDcsIDIzMywgOSwgMjQ0LCA5NiwgMjQ1LCAxNzIsIDIxNiwgOSwgMjExLCAxOTksIAorICAgIDI0MiwgMjEsIDIyNywgMTgyLCAyMiwgMjUxLCAxOTcsIDI0MSwgNjYsIDIyNSwgNTAsIDIzMCwgMjI2LCAyMTYsIDI1NSwgCisgICAgMjQ5LCAxMTQsIDI1MiwgMTU5LCAyMTksIDEyNSwgMjI1LCA5LCAyMTgsIDE1NywgMiwgMjMwLCAyMjQsIDI0NywgMTIwLCAKKyAgICAyMzUsIDEzMSwgMTYsIDMxLCAyNTIsIDU3LCAyMTUsIDIyMCwgMjQ1LCAxNTYsIDg1LCA0MiwgMjUxLCA4NiwgNzEsIDQyLCAKKyAgICAyNTEsIDg2LCAyMzMsIDg1LCAyMjMsIDExMSwgMjUwLCAzNSwgMjMzLCA4NSwgMjUxLCAyMDgsIDI1MCwgMzUsIDIzMywgODUsIAorICAgIDIyNiwgMTU3LCAyNDcsIDI0OCwgMjMzLCA4NSwgMjUxLCAyMDgsIDI0NywgMjQ4LCA0LCAyMjYsIDE1NywgMjQ3LCAyNDgsIAorICAgIDQsIDI1MSwgMjA4LCAyNDcsIDI0OCwgMjE0LCAxNjIsIDIyMywgMTExLCAyMTUsIDIyNSwgMjQ2LCAxMDUsIDIyMywgMTExLCAKKyAgICAyMTUsIDIyNSwgMjE0LCAxNjIsIDQsIDIyMywgMTExLCAyMTUsIDIyNSwgMjQ2LCAxMDUsIDQsIDIyMywgMTExLCAyMTUsIAorICAgIDIyNSwgMzcsIDI0OSwgMTMxLCAyMjQsIDI1MiwgMjQ5LCAxMzEsIDIyNCwgMjUzLCAyLCAyNDIsIDI2LCA1MSwgMjQ5LCAKKyAgICAxMzEsIDIyNCwgMjUyLCAyMjgsIDQ5LCA0MywgMjIwLCAxNTMsIDIsIDEzNCwgMjQ3LCAxMTgsIDI1MCwgNCwgMjQ0LCAxOTEsIAorICAgIDEyMywgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDExMywgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDEzNCwgCisgICAgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDI0NCwgMTEsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAyNDQsIDgxLCAKKyAgICAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgMjE5LCAxMjUsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAyMjAsIAorICAgIDEyMiwgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDI0NSwgMTkzLCAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgCisgICAgMjI4LCAyMDAsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAyMTYsIDI0OCwgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAKKyAgICAxOTEsIDI0NSwgMTY4LCAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgMjE1LCA3NywgMjI2LCAyNDIsIDI1MCwgNCwgCisgICAgMjQ0LCAxOTEsIDIyNiwgMTkyLCAyNTAsIDQsIDI0NCwgMTkxLCAyMTUsIDU2LCAyNTAsIDQsIDI0NCwgMTkxLCAyMTYsIAorICAgIDE0MCwgMjUwLCA0LCAyNDQsIDE5MSwgMjQ0LCA3LCAyNTAsIDQsIDI0NCwgMTkxLCAyNDQsIDc5LCAyNTAsIDQsIDI0NCwgCisgICAgMTkxLCAyMTksIDEyMSwgMjUwLCA0LCAyNDQsIDE5MSwgMjIwLCAxMjEsIDI1MCwgNCwgMjQ0LCAxOTEsIDI0NSwgMTkyLCAKKyAgICAyNTAsIDQsIDI0NCwgMTkxLCAyMjgsIDE5OSwgMjUwLCA0LCAyNDQsIDE5MSwgMjE2LCAyNDYsIDI1MCwgNCwgMjQ0LCAxOTEsIAorICAgIDI0NSwgMTY2LCAyNTAsIDQsIDI0NCwgMTkxLCAyMTUsIDc1LCAyMzAsIDExNywgMjQzLCAyMzAsIDIxNiwgMzYsIDIxNiwgMiwgCisgICAgMjE4LCAxNDgsIDY0LCAyMzIsIDIzOSwgMjE5LCAxNzAsIDY0LCAyMzUsIDEzMiwgMjMwLCAxMDYsIDI0MiwgMTI0LCAyNDQsIAorICAgIDE5MCwgMjQyLCAxMjQsIDI0NCwgMTkxLCAyLCAyMTksIDc0LCAyNDUsIDEzLCAyNDQsIDE5MSwgMiwgMjE3LCAxNCwgNjQsIAorICAgIDIzNSwgNTMsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyMDQsIDIzMCwgMTEwLCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjA0LCAKKyAgICAyMzAsIDExMSwgMjIsIDIxOSwgNzQsIDI0NSwgMTMsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyMDQsIDIzMCwgMTExLCAyMiwgCisgICAgMjQ5LCAyMzAsIDIxNywgMjQ3LCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjA0LCAyMzAsIDExMSwgMjIsIDIxNiwgMTA0LCAKKyAgICAyNDUsIDEzLCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjQyLCAyNSwgMjE5LCA3NCwgMjQ0LCAxOTEsIDIsIDI0MCwgMjQ3LCAKKyAgICAyMTEsIDIzMywgMjQ0LCAxOTAsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyMTksIDc0LCAyNDUsIDEzLCAyNDQsIDE5MSwgCisgICAgMjIxLCAyMTcsIDI0OCwgNjIsIDI0NCwgMzMsIDIyMywgODgsIDI0NCwgMTkwLCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjQxLCAKKyAgICAyMjYsIDI0NSwgMTMsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyMTgsIDM0LCAyMTksIDczLCAyNDQsIDE5MCwgMjI5LCA4NywgCisgICAgMjQ0LCAxOTAsIDI0NSwgMjMsIDI0NCwgMTkwLCAyMTQsIDE4OCwgMjQ0LCAxOTAsIDI0NCwgMTkxLCAyLCAyNDksIDIzMCwgCisgICAgMjE3LCAyNDcsIDIyNSwgMTkyLCAyNDQsIDE5MCwgMjQ5LCAyMDEsIDI0NCwgMTkwLCAyNDksIDIwMiwgMjQ0LCAxOTAsIAorICAgIDIzNCwgNjIsIDI0NCwgMTkwLCAyNDQsIDE5MSwgMjE2LCAxMzcsIDExNSwgMjM0LCA2MywgMjM0LCA2MiwgMjQ0LCAxOTEsIAorICAgIDIsIDIxOSwgNzQsIDI0NSwgMTMsIDIzNCwgNjIsIDI0NCwgMTkxLCAyLCAyNTAsIDAsIDI0NSwgMTMsIDI0NCwgMTkxLCAyLCAKKyAgICAyMTgsIDg4LCAyMTYsIDE5LCAyNDQsIDE5MSwgMiwgMjE4LCA4OCwgMjE2LCAyMCwgMjIsIDIxMSwgMjMzLCAyNDUsIDE1LCAKKyAgICAyNDQsIDE5MSwgMiwgMjE4LCA4OCwgMjE2LCAyMCwgMjIsIDIxNiwgMTA0LCAyNDUsIDEzLCAyNDcsIDE5MiwgMjQ0LCAxOTAsIAorICAgIDIxMSwgMjA0LCAyNDQsIDE5MCwgMjU0LCAxMDgsIDI0NCwgMTkwLCAyMjQsIDIyNywgMjQ0LCAxOTAsIDI0OSwgMTE2LCAKKyAgICAyNDQsIDE5MCwgMjI1LCAxNzAsIDI0NCwgMTkwLCAyNDQsIDE5MSwgMiwgMjMyLCAxMjYsIDY0LCAyMTUsIDIwNCwgMjQ3LCAKKyAgICAxOTIsIDI1MSwgODgsIDIyMywgODgsIDI0NCwgMTkwLCAyNDMsIDIzOSwgMjQ0LCAxOTEsIDIsIDIwNCwgMjMwLCAxMTAsIAorICAgIDI1NCwgMTA2LCAyNDQsIDE5MCwgMjQ0LCAxNTIsIDI0NCwgMTkwLCAyMTIsIDIwLCAyNDQsIDE5MCwgMjE5LCA5MSwgMjQ0LCAKKyAgICAxOTAsIDIxNiwgNzEsIDI0NCwgMTkwLCAyNDIsIDEyNSwgMjQ0LCAxOTAsIDIzMiwgMTE0LCAyNDksIDExNiwgMjQ0LCAxOTAsIAorICAgIDI0NCwgMTkxLCAyLCAyMDQsIDIzMCwgMTEwLCAyNDAsIDIwMywgMjQ0LCAxOTAsIDI0NCwgMTkxLCAyLCAyMDQsIDIzMCwgCisgICAgMTExLCAyMiwgMjQ5LCAyMzAsIDIxNywgMjQ3LCAyNDQsIDE5MSwgMjIxLCAxOTAsIDIzNiwgMCwgMjQ0LCAxNTMsIDI1MywgCisgICAgMjEzLCAyNDQsIDE5MCwgMjQ0LCA0OSwgMjQ0LCAxOTAsIDIxOSwgOTIsIDI0NCwgMTkwLCAyNDcsIDE2NSwgMjQ0LCAxOTAsIAorICAgIDI0NCwgMTkxLCAyMTEsIDIzMCwgMjMwLCAxMTAsIDI0NCwgMTkxLCAyLCAyMzEsIDg0LCAyMzEsIDE0NCwgMjQyLCAxMjQsIAorICAgIDI1MCwgMjI1LCAyNDQsIDE5MSwgMiwgMjE5LCA3NCwgMjQ1LCAxMywgMjUwLCAyMjUsIDI0NCwgMTkxLCAyLCAyMTcsIDE0LCAKKyAgICA2NCwgMjM1LCA1MywgMjE5LCA3NCwgMjUwLCAyMjUsIDI0NCwgMTkxLCAyLCAyMDQsIDIzMCwgMTEwLCAyMTksIDc0LCAyNTAsIAorICAgIDIyNSwgMjQ0LCAxOTEsIDIsIDI0MSwgMjI2LCAyNDUsIDEzLCAyNTAsIDIyNSwgMjQ0LCAxOTEsIDIsIDIxMSwgMTk2LCAKKyAgICAyMTksIDc1LCAyMzQsIDYyLCAyNTAsIDIyNSwgMjQ0LCAxOTEsIDIsIDI1MCwgMCwgMjQ1LCAxMywgMjI0LCAyMjcsIDI1MCwgCisgICAgMjI1LCAyNDQsIDE5MCwgMjQ5LCAxMTYsIDI1MCwgMjI1LCAyNDQsIDE5MCwgMjEyLCAyMCwgMjUwLCAyMjUsIDI0NCwgMTkwLCAKKyAgICAyNDQsIDE5MSwgMiwgMjI4LCA3NSwgMjQyLCAxNjMsIDI0MywgMzQsIDI0NCwgMTkxLCAyLCAyMjYsIDIxNSwgMjQzLCAzNCwgCisgICAgMjI1LCAxNjgsIDI1MSwgMTY4LCAyNDgsIDc1LCAyMjEsIDE2OSwgMjMwLCAxNDUsIDI0MSwgMjI5LCAyMzAsIDE0NSwgMjE5LCAKKyAgICA4LCAyMzAsIDE0NSwgMjQyLCA1LCAyMjUsIDE2OCwgMjIzLCAxNTYsIDEyMywgMjQyLCAxNSwgMjI1LCAxNjgsIDIyMywgCisgICAgMTU2LCAyNTEsIDE3OCwgMjQyLCAxMSwgMjM2LCAwLCAyNTAsIDE3OSwgMjI1LCAxNjgsIDI0MywgMjM4LCAyMjUsIDE2OCwgCisgICAgMiwgMjI0LCAyMjcsIDI0NCwgMTkwLCAyMjUsIDE2OCwgMiwgMjQ0LCA0MSwgMjQyLCAxMCwgMjIyLCAyMDMsIDI0MSwgMjE0LCAKKyAgICAyMTgsIDE0MywgMjMyLCAxNDksIDIyMywgMTYyLCAyNTAsIDI0NCwgMjQxLCAxNjIsIDIxNSwgMjQ4LCAyNDEsIDE2MiwgCisgICAgMjE1LCAyNDksIDIsIDI1MSwgMTE0LCAyMjgsIDUzLCAyMTUsIDI0OCwgMjMxLCAzMiwgMTkyLCAyMjMsIDE2MywgMjE4LCAKKyAgICAxNDksIDIxNSwgMjQ2LCAyMTUsIDI0NywgMjUwLCAyNDQsIDI1MSwgOTIsIDIyNiwgMTk0LCAyNTEsIDkyLCAyMTUsIDIwMSwgCisgICAgMjUxLCA5MywgMjE4LCAxMjksIDIzMCwgMTg3LCAyNTQsIDEzMCwgMjQ0LCA5NywgMjQ1LCAxMzcsIDIyNCwgMjU1LCAyNTAsIAorICAgIDI0NCwgMjI2LCAxOTQsIDIyNCwgMjU1LCAyNTAsIDI0NCwgMjE3LCAzMiwgMjI2LCAxOTQsIDIxNywgMzIsIDI1MywgMTgwLCAKKyAgICAyMjYsIDE5NCwgMjUzLCAxODAsIDIyMywgMTE4LCAyMTMsIDI0NywgMjQ4LCA1OCwgMjE1LCAxOTIsIDI1MywgMjQyLCAyMzIsIAorICAgIDExNywgMjE1LCAyNTQsIDIzMCwgMTM5LCAyMzAsIDExNiwgMjIzLCAxNjEsIDIxOCwgNiwgMjIzLCAxNjEsIDIzMCwgMTE2LCAKKyAgICAyNTEsIDI4LCAyNTQsIDIyOSwgMjE1LCAyNDUsIDIyMCwgMTYsIDIyMiwgMTgyLCAyMTksIDEsIDIwMywgMjE1LCAyNTIsIAorICAgIDIzMiwgMjMwLCA2NywgMjE1LCAyNTIsIDIzMiwgMjMwLCAyNDksIDE5MCwgNTAsIDIyNCwgMjU1LCAyNTAsIDIyOSwgMjIzLCAKKyAgICA0NCwgMjMyLCAyMzAsIDIxNSwgMjIyLCAyNDQsIDc0LCAyMjYsIDE5NywgMjI0LCAyMzgsIDI0NywgMTIzLCAyMjgsIDc1LCAKKyAgICAyNDUsIDEyNSwgNTAsIDIxOSwgNzIsIDg3LCAyMjgsIDc1LCAyMTksIDcyLCA4NywgMjI0LCAxMjIsIDIzMiwgMTkzLCAyMzYsIAorICAgIDAsIDIzNSwgMTU3LCAyMjUsIDQxLCA4NywgMjQ3LCAxNDYsIDIyOCwgNTIsIDIzMiwgMTkzLCA4NywgMjI0LCAyMzIsIDIxMiwgCisgICAgNDEsIDg3LCAyMjgsIDY2LCAyMTIsIDQxLCA4NywgMjUyLCAyLCAyMjgsIDc1LCAyNTIsIDEsIDI1MiwgMCwgMjMwLCAxMTYsIAorICAgIDI1MiwgMCwgMjI1LCAyMTMsIDIyOCwgNzUsIDIyNSwgMjEyLCAyNTAsIDEwMCwgMjQ5LCAxMjQsIDIzMSwgNTYsIDg3LCAKKyAgICAyMTEsIDIxOCwgODcsIDIyMywgNTksIDI1MiwgMTg3LCA4NywgMjE2LCAzNywgMjEyLCA0MSwgMjQ5LCAyNTMsIDIxOSwgCisgICAgMjM0LCAyNTIsIDExOCwgMjUyLCAxMTYsIDIyNSwgMjQyLCAyNDksIDE3NywgMjQ5LCA4NiwgMjUyLCAxNjksIDI1MCwgMjIsIAorICAgIDQzLCAyMzIsIDkwLCAxMDgsIDE2LCAzMSwgMjI0LCAzLCAxMDgsIDE2LCAzMSwgMjU0LCAxOTIsIDEwOCwgMTYsIDMxLCAKKyAgICAyNDQsIDk2LCAxMDgsIDE2LCAzMSwgMjQ1LCAyMjMsIDEwOCwgMTYsIDMxLCAyMTIsIDQwLCAxMDgsIDE2LCAzMSwgMjU0LCAKKyAgICA0MywgMTA4LCAxNiwgMzEsIDI1NCwgNDQsIDIyMywgMTA1LCAxMDgsIDE2LCAzMSwgMjU0LCA0NCwgMjIzLCAxMDQsIDEwOCwgCisgICAgMTYsIDMxLCAyNTQsIDQ0LCAyMTMsIDE0MywgMTA4LCAxNiwgMzEsIDI1NCwgNDQsIDIxMywgMTQyLCAxMDgsIDE2LCAzMSwgCisgICAgMjEzLCAxNTcsIDEwOCwgMTYsIDMxLCAyMTMsIDE1NiwgMTA4LCAxNiwgMzEsIDIxMywgMTU1LCAxMDgsIDE2LCAzMSwgMjE4LCAKKyAgICA0NCwgMTA4LCAxNiwgMzEsIDIyNSwgMTI1LCAyMTgsIDQ0LCAxMDgsIDE2LCAzMSwgODUsIDIxOCwgNDQsIDEwOCwgMTYsIAorICAgIDMxLCAyMzEsIDU1LCAyMTgsIDcxLCAxMDgsIDE2LCAzMSwgMjMxLCA1NSwgMjE4LCA3MCwgMTA4LCAxNiwgMzEsIDIzMSwgCisgICAgNTUsIDIxOCwgNjksIDEwOCwgMTYsIDMxLCAyNTAsIDM4LCAxMDgsIDE2LCAzMSwgMjIyLCAxLCAxMDgsIDE2LCAzMSwgMjI4LCAKKyAgICAxODgsIDEwOCwgMTYsIDMxLCAyMTMsIDE0MSwgMTA4LCAxNiwgMzEsIDIxMywgMTQwLCAxMDgsIDE2LCAzMSwgMjIyLCAyMDQsIAorICAgIDIyMiwgMSwgMTA4LCAxNiwgMzEsIDIyMiwgMjA0LCAyMjIsIDAsIDEwOCwgMTYsIDMxLCAyNDIsIDE2NiwgMTA4LCAxNiwgCisgICAgMzEsIDIxOSwgMTY2LCAxMDgsIDE2LCAzMSwgMjM1LCAxNzcsIDIyNiwgMTUzLCAxMDgsIDE2LCAzMSwgMjM1LCAxNzcsIAorICAgIDIyNiwgMTUyLCAxMDgsIDE2LCAzMSwgMjQ5LCAxMzQsIDY0LCAyMzUsIDE3NiwgMTA4LCAxNiwgMzEsIDIyMywgMTAxLCA2NCwgCisgICAgMjM1LCAxNzYsIDEwOCwgMTYsIDMxLCAyNDksIDE2OCwgMjI2LCAxNTMsIDEwOCwgMTYsIDMxLCAyMzUsIDE3NSwgMjI2LCAKKyAgICAxNTMsIDEwOCwgMTYsIDMxLCAyMTgsIDcyLCA2NCwgMjQ5LCAxNjcsIDEwOCwgMTYsIDMxLCAyNDksIDEzNCwgNjQsIDI0OSwgCisgICAgMTY3LCAxMDgsIDE2LCAzMSwgMjQ5LCAxMzQsIDY0LCAyNDksIDE2NiwgMTA4LCAxNiwgMzEsIDI0OSwgMTY4LCAyNTQsIDgzLCAKKyAgICAxMDgsIDE2LCAzMSwgMjIyLCAyLCA2NCwgMjQ5LCAxNjgsIDI1NCwgODMsIDEwOCwgMTYsIDMxLCAyMTgsIDcyLCA2NCwgCisgICAgMjIyLCAyLCA2NCwgMjQ5LCAxNjcsIDEwOCwgMTYsIDMxLCAyMTMsIDI0MywgMTA4LCAxNiwgMzEsIDIxNiwgODQsIDIyNiwgCisgICAgMTUzLCAxMDgsIDE2LCAzMSwgMjMzLCA1NywgMjI2LCAxNTMsIDEwOCwgMTYsIDMxLCAyNTQsIDgyLCAyMjYsIDE1MywgMTA4LCAKKyAgICAxNiwgMzEsIDIxOCwgNzIsIDY0LCAyNTQsIDgxLCAxMDgsIDE2LCAzMSwgMjIyLCAyLCA2NCwgMjU0LCA4MSwgMTA4LCAxNiwgCisgICAgMzEsIDIxOCwgNzIsIDY0LCAyMjIsIDIsIDY0LCAyNTQsIDgxLCAxMDgsIDE2LCAzMSwgMjEzLCAxNTgsIDY0LCAyNTQsIDgxLCAKKyAgICAxMDgsIDE2LCAzMSwgMjIzLCAxMDEsIDY0LCAyNTQsIDgxLCAxMDgsIDE2LCAzMSwgMjIzLCAxMDEsIDY0LCAyNTQsIDgwLCAKKyAgICAxMDgsIDE2LCAzMSwgMjIzLCAxMDAsIDEwOCwgMTYsIDMxLCAyMjMsIDk5LCAxMDgsIDE2LCAzMSwgMjIzLCA5OCwgMTA4LCAKKyAgICAxNiwgMzEsIDIyMywgOTcsIDEwOCwgMTYsIDMxLCAyNTQsIDE1NywgMTA4LCAxNiwgMzEsIDI1NCwgMTU2LCAxMDgsIDE2LCAKKyAgICAzMSwgMjMxLCAxNjMsIDEwOCwgMTYsIDMxLCAyMjIsIDcsIDEwOCwgMTYsIDMxLCAyNTMsIDI0NiwgMTA4LCAxNiwgMzEsIAorICAgIDIyMywgMTI1LCAxMDgsIDE2LCAzMSwgMjIzLCAxMjQsIDEwOCwgMTYsIDMxLCAyNTMsIDE4MywgMTA4LCAxNiwgMzEsIDI1MSwgCisgICAgMjI5LCAyMjYsIDE1MywgMTA4LCAxNiwgMzEsIDIxNywgNDksIDEwOCwgMTYsIDMxLCAyMTcsIDQ4LCAxMDgsIDE2LCAzMSwgCisgICAgMjI0LCA4LCAyMzIsIDIyMiwgMTA4LCAxNiwgMzEsIDI1MSwgMTgzLCAxMDgsIDE2LCAzMSwgMjUxLCAxODIsIDEwOCwgMTYsIAorICAgIDMxLCAyNTEsIDE4MSwgMTA4LCAxNiwgMzEsIDI1NCwgMTM4LCAxMDgsIDE2LCAzMSwgMjI2LCAyMTgsIDEwOCwgMTYsIDMxLCAKKyAgICAyMTgsIDI0OCwgMTA4LCAxNiwgMzEsIDIxNiwgODIsIDEwOCwgMTYsIDMxLCAyNDIsIDk2LCAxMDgsIDE2LCAzMSwgMjEyLCAKKyAgICAyOCwgMTA4LCAxNiwgMzEsIDIyNCwgMjI2LCAxMDgsIDE2LCAzMSwgMjUxLCAxNCwgMTA4LCAxNiwgMzEsIDIxNSwgODYsIAorICAgIDEwOCwgMTYsIDMxLCAyNTAsIDI0NiwgMjMwLCAxMjIsIDEwOCwgMTYsIDMxLCAyMjEsIDIwMiwgNjQsIDIzNSwgNTUsIDEwOCwgCisgICAgMTYsIDMxLCAyNTEsIDI1LCAxMDgsIDE2LCAzMSwgMjE1LCAyMTksIDEwOCwgMTYsIDMxLCAyMTgsIDE1NCwgMjE1LCAyMTksIAorICAgIDEwOCwgMTYsIDMxLCAyMzIsIDE0OCwgMTA4LCAxNiwgMzEsIDIxOSwgNTYsIDEwOCwgMTYsIDMxLCAyMTQsIDE0MiwgMTA4LCAKKyAgICAxNiwgMzEsIDI0MCwgMjQ2LCAyNDYsIDY0LCAxMDgsIDE2LCAzMSwgMjUzLCAyMjcsIDEwOCwgMTYsIDMxLCAyMjQsIDIzNCwgCisgICAgMjUzLCAyMjcsIDEwOCwgMTYsIDMxLCAyNTEsIDE0MiwgMTA4LCAxNiwgMzEsIDIyNCwgMjI1LCAyNTEsIDE0MiwgMTA4LCAKKyAgICAxNiwgMzEsIDI1NCwgMTM1LCAxMDgsIDE2LCAzMSwgMjE4LCAxMTcsIDIxOCwgMjYsIDIxOCwgMTE2LCAxMDgsIDE2LCAzMSwgCisgICAgMjE4LCAxMTcsIDIxOCwgMjYsIDIxOCwgMTE1LCAxMDgsIDE2LCAzMSwgMjE4LCA2OCwgMTA4LCAxNiwgMzEsIDIyNCwgMjAwLCAKKyAgICAxMDgsIDE2LCAzMSwgMjQ3LCAxODEsIDEwOCwgMTYsIDMxLCAyNDcsIDE4MywgMTA4LCAxNiwgMzEsIDI0NywgMTgyLCAxMDgsIAorICAgIDE2LCAzMSwgMjI0LCAxMzEsIDEwOCwgMTYsIDMxLCAyMjQsIDEyMCwgMTA4LCAxNiwgMzEsIDI0OSwgMTIyLCAxMDgsIDE2LCAKKyAgICAzMSwgMjQ5LCAxMjEsIDEwOCwgMTYsIDMxLCAyNDksIDEyMCwgMTA4LCAxNiwgMzEsIDI0OSwgMTE5LCAxMDgsIDE2LCAzMSwgCisgICAgMjQ5LCAxMTgsIDEwOCwgMTYsIDMxLCAyNTQsIDE2OSwgMTA4LCAxNiwgMzEsIDI1MiwgMTE5LCA2NCwgMjMxLCAxNDksIAorICAgIDEwOCwgMTYsIDMxLCAyNTIsIDExOSwgNjQsIDIxNCwgMTcsIDEwOCwgMTYsIDMxLCAyMjMsIDU3LCAxMDgsIDE2LCAzMSwgCisgICAgMjQwLCAyMzgsIDEwOCwgMTYsIDMxLCAyMjgsIDIxMiwgMTA4LCAxNiwgMzEsIDI0OCwgMTQ1LCAxMDgsIDE2LCAzMSwgMjMwLCAKKyAgICAxMzQsIDEwOCwgMTYsIDMxLCAxNjMsIDI0NiwgOTQsIDEwOCwgMTYsIDMxLCAxNjMsIDIyNiwgMTMyLCA5LCAxNCwgMjQwLCAKKyAgICAxMDIsIDksIDE0LCAyNDAsIDEwMSwgOSwgMTQsIDI0MCwgMTAwLCA5LCAxNCwgMjQwLCA5OSwgOSwgMTQsIDI0MCwgOTgsIDksIAorICAgIDE0LCAyNDAsIDk3LCA5LCAxNCwgMjQwLCA5NiwgOSwgMTQsIDI0MCwgOTUsIDksIDE0LCAyNDAsIDk0LCA5LCAxNCwgMjQwLCAKKyAgICA5MywgOSwgMTQsIDI0MCwgOTIsIDksIDE0LCAyNDAsIDkxLCA5LCAxNCwgMjQwLCA5MCwgOSwgMTQsIDI0MCwgODksIDksIAorICAgIDE0LCAyNDAsIDg4LCA5LCAxNCwgMjQwLCA4NywgOSwgMTQsIDI0MCwgODYsIDksIDE0LCAyNDAsIDg1LCA5LCAxNCwgMjQwLCAKKyAgICA4NCwgOSwgMTQsIDI0MCwgODMsIDksIDE0LCAyNDAsIDgyLCA5LCAxNCwgMjQwLCA4MSwgOSwgMTQsIDI0MCwgODAsIDksIAorICAgIDE0LCAyNDAsIDc5LCA5LCAxNCwgMjQwLCA3OCwgOSwgMTQsIDI0MCwgNzcsIDksIDE0LCAyNDAsIDc2LCA5LCAxNCwgMjQwLCAKKyAgICA3NSwgOSwgMTQsIDI0MCwgNzQsIDksIDE0LCAyNDAsIDczLCA5LCAxNCwgMjQwLCA3MiwgOSwgMTQsIDI0MCwgNzEsIDksIAorICAgIDE0LCAyNDAsIDcwLCA5LCAxNCwgMjQwLCA2OSwgOSwgMTQsIDI0MCwgNjgsIDksIDE0LCAyNDAsIDY3LCA5LCAxNCwgMjQwLCAKKyAgICA2NiwgOSwgMTQsIDI0MCwgNjUsIDksIDE0LCAyNDAsIDY0LCA5LCAxNCwgMjQwLCA2MywgOSwgMTQsIDI0MCwgNjIsIDksIAorICAgIDE0LCAyNDAsIDYxLCA5LCAxNCwgMjQwLCA2MCwgOSwgMTQsIDI0MCwgNTksIDksIDE0LCAyNDAsIDU4LCA5LCAxNCwgMjQwLCAKKyAgICA1NywgOSwgMTQsIDI0MCwgNTYsIDksIDE0LCAyNDAsIDU1LCA5LCAxNCwgMjQwLCA1NCwgOSwgMTQsIDI0MCwgNTMsIDksIAorICAgIDE0LCAyNDAsIDUyLCA5LCAxNCwgMjQwLCA1MSwgOSwgMTQsIDI0MCwgNTAsIDksIDE0LCAyNDAsIDQ5LCA5LCAxNCwgMjQwLCAKKyAgICA0OCwgOSwgMTQsIDI0MCwgNDcsIDksIDE0LCAyNDAsIDQ2LCA5LCAxNCwgMjQwLCA0NSwgOSwgMTQsIDI0MCwgNDQsIDksIAorICAgIDE0LCAyNDAsIDQzLCA5LCAxNCwgMjQwLCA0MiwgOSwgMTQsIDI0MCwgNDEsIDksIDE0LCAyNDAsIDQwLCA5LCAxNCwgMjQwLCAKKyAgICAzOSwgOSwgMTQsIDI0MCwgMzgsIDksIDE0LCAyNDAsIDM3LCA5LCAxNCwgMjQwLCAzNiwgOSwgMTQsIDI0MCwgMzUsIDksIAorICAgIDE0LCAyNDAsIDM0LCA5LCAxNCwgMjQwLCAzMywgOSwgMTQsIDI0MCwgMzIsIDksIDE0LCAyNDAsIDMxLCA5LCAxNCwgMjQwLCAKKyAgICAzMCwgOSwgMTQsIDI0MCwgMjksIDksIDE0LCAyNDAsIDI4LCA5LCAxNCwgMjQwLCAyNywgOSwgMTQsIDI0MCwgMjYsIDksIAorICAgIDE0LCAyNDAsIDI1LCA5LCAxNCwgMjQwLCAyNCwgOSwgMTQsIDI0MCwgMjMsIDksIDE0LCAyNDAsIDIyLCA5LCAxNCwgMjQwLCAKKyAgICAyMSwgOSwgMTQsIDI0MCwgMjAsIDksIDE0LCAyNDAsIDE5LCA5LCAxNCwgMjQwLCAxOCwgOSwgMTQsIDI0MCwgMTcsIDksIAorICAgIDE0LCAyNDAsIDE2LCA5LCAxNCwgMjQwLCAxNSwgOSwgMTQsIDI0MCwgMTQsIDksIDE0LCAyNDAsIDEzLCA5LCAxNCwgMjQwLCAKKyAgICAxMiwgOSwgMTQsIDI0MCwgMTEsIDksIDE0LCAyNDAsIDEwLCA5LCAxNCwgMjQwLCA5LCA5LCAxNCwgMjQwLCA4LCA5LCAxNCwgCisgICAgMjQwLCA3LCA5LCAxNCwgMjQwLCA2LCA5LCAxNCwgMjQwLCA1LCA5LCAxNCwgMjQwLCA0LCA5LCAxNCwgMjQwLCAzLCA5LCAKKyAgICAxNCwgMjQwLCAyLCA5LCAxNCwgMjQwLCAxLCA5LCAxNCwgMjQwLCAwLCA5LCAxNCwgMjM5LCAyNTUsIDksIDE0LCAyMzksIAorICAgIDI1NCwgOSwgMTQsIDIzOSwgMjUzLCA5LCAxNCwgMjM5LCAyNTIsIDksIDE0LCAyMzksIDI1MSwgOSwgMTQsIDIzOSwgMjUwLCAKKyAgICA5LCAxNCwgMjM5LCAyNDksIDksIDE0LCAyMzksIDI0OCwgOSwgMTQsIDIzOSwgMjQ3LCA5LCAxNCwgMjM5LCAyNDYsIDksIAorICAgIDE0LCAyMzksIDI0NSwgOSwgMTQsIDIzOSwgMjQ0LCA5LCAxNCwgMjM5LCAyNDMsIDksIDE0LCAyMzksIDI0MiwgOSwgMTQsIAorICAgIDIzOSwgMjQxLCA5LCAxNCwgMjM5LCAyNDAsIDksIDE0LCAyMzksIDIzOSwgOSwgMTQsIDIzOSwgMjM4LCA5LCAxNCwgMjM5LCAKKyAgICAyMzcsIDksIDE0LCAyMzksIDIzNiwgOSwgMTQsIDIzOSwgMjM1LCA5LCAxNCwgMjM5LCAyMzQsIDksIDE0LCAyMzksIDIzMywgCisgICAgOSwgMTQsIDIzOSwgMjMyLCA5LCAxNCwgMjM5LCAyMzEsIDksIDE0LCAyMzksIDIzMCwgOSwgMTQsIDIzOSwgMjI5LCA5LCAKKyAgICAxNCwgMjM5LCAyMjgsIDksIDE0LCAyMzksIDIyNywgOSwgMTQsIDIzOSwgMjI2LCA5LCAxNCwgMjM5LCAyMjUsIDksIDE0LCAKKyAgICAyMzksIDIyNCwgOSwgMTQsIDIzOSwgMjIzLCA5LCAxNCwgMjM5LCAyMjIsIDksIDE0LCAyMzksIDIyMSwgOSwgMTQsIDIzOSwgCisgICAgMjIwLCA5LCAxNCwgMjM5LCAyMTksIDksIDE0LCAyMzksIDIxOCwgOSwgMTQsIDIzOSwgMjE3LCA5LCAxNCwgMjM5LCAyMTYsIAorICAgIDksIDE0LCAyMzksIDIxNSwgOSwgMTQsIDIzOSwgMjE0LCA5LCAxNCwgMjM5LCAyMTMsIDksIDE0LCAyMzksIDIxMiwgOSwgCisgICAgMTQsIDIzOSwgMjExLCA5LCAxNCwgMjM5LCAyMTAsIDksIDE0LCAyMzksIDIwOSwgOSwgMTQsIDIzOSwgMjA4LCA5LCAxNCwgCisgICAgMjM5LCAyMDcsIDksIDE0LCAyMzksIDIwNiwgOSwgMTQsIDIzOSwgMjA1LCA5LCAxNCwgMjM5LCAyMDQsIDksIDE0LCAyMzksIAorICAgIDIwMywgOSwgMTQsIDIzOSwgMjAyLCA5LCAxNCwgMjM5LCAyMDEsIDksIDE0LCAyMzksIDIwMCwgOSwgMTQsIDIzOSwgMTk5LCAKKyAgICA5LCAxNCwgMjM5LCAxOTgsIDksIDE0LCAyMzksIDE5NywgOSwgMTQsIDIzOSwgMTk2LCA5LCAxNCwgMjM5LCAxOTUsIDksIAorICAgIDE0LCAyMzksIDE5NCwgOSwgMTQsIDIzOSwgMTkzLCA5LCAxNCwgMjM5LCAxOTIsIDksIDE0LCAyMzksIDE5MSwgOSwgMTQsIAorICAgIDIzOSwgMTkwLCA5LCAxNCwgMjM5LCAxODksIDksIDE0LCAyMzksIDE4OCwgOSwgMTQsIDIzOSwgMTg3LCA5LCAxNCwgMjM5LCAKKyAgICAxODYsIDksIDE0LCAyMzksIDE4NSwgOSwgMTQsIDIzOSwgMTg0LCA5LCAxNCwgMjM5LCAxODMsIDksIDE0LCAyMzksIDE4MiwgCisgICAgOSwgMTQsIDIzOSwgMTgxLCA5LCAxNCwgMjM5LCAxODAsIDksIDE0LCAyMzksIDE3OSwgOSwgMTQsIDIzOSwgMTc4LCA5LCAKKyAgICAxNCwgMjM5LCAxNzcsIDksIDE0LCAyMzksIDE3NiwgOSwgMTQsIDIzOSwgMTc1LCA5LCAxNCwgMjM5LCAxNzQsIDksIDE0LCAKKyAgICAyMzksIDE3MywgOSwgMTQsIDIzOSwgMTcyLCA5LCAxNCwgMjM5LCAxNzEsIDksIDE0LCAyMzksIDE3MCwgOSwgMTQsIDIzOSwgCisgICAgMTY5LCA5LCAxNCwgMjM5LCAxNjgsIDksIDE0LCAyMzksIDE2NywgOSwgMTQsIDIzOSwgMTY2LCA5LCAxNCwgMjM5LCAxNjUsIAorICAgIDksIDE0LCAyMzksIDE2NCwgOSwgMTQsIDIzOSwgMTYzLCA5LCAxNCwgMjM5LCAxNjIsIDksIDE0LCAyMzksIDE2MSwgOSwgCisgICAgMTQsIDIzOSwgMTYwLCA5LCAxNCwgMjM5LCAxNTksIDksIDE0LCAyMzksIDE1OCwgOSwgMTQsIDIzOSwgMTU3LCA5LCAxNCwgCisgICAgMjM5LCAxNTYsIDksIDE0LCAyMzksIDE1NSwgOSwgMTQsIDIzOSwgMTU0LCA5LCAxNCwgMjM5LCAxNTMsIDksIDE0LCAyMzksIAorICAgIDE1MiwgOSwgMTQsIDIzOSwgMTUxLCA5LCAxNCwgMjM5LCAxNTAsIDksIDE0LCAyMzksIDE0OSwgOSwgMTQsIDIzOSwgMTQ4LCAKKyAgICA5LCAxNCwgMjM5LCAxNDcsIDksIDE0LCAyMzksIDE0NiwgOSwgMTQsIDIzOSwgMTQ1LCA5LCAxNCwgMjM5LCAxNDQsIDksIAorICAgIDE0LCAyMzksIDE0MywgOSwgMTQsIDIzOSwgMTQyLCA5LCAxNCwgMjM5LCAxNDEsIDksIDE0LCAyMzksIDE0MCwgOSwgMTQsIAorICAgIDIzOSwgMTM5LCA5LCAxNCwgMjM5LCAxMzgsIDksIDE0LCAyMzksIDEzNywgOSwgMTQsIDIzOSwgMTM2LCA5LCAxNCwgMjM5LCAKKyAgICAxMzUsIDksIDE0LCAyMzksIDEzNCwgOSwgMTQsIDIzOSwgMTMzLCA5LCAxNCwgMjM5LCAxMzIsIDksIDE0LCAyMzksIDEzMSwgCisgICAgOSwgMTQsIDIzOSwgMTMwLCA5LCAxNCwgMjM5LCAxMjksIDksIDE0LCAyMzksIDEyOCwgOSwgMTQsIDIzOSwgMTI3LCA5LCAKKyAgICAxNCwgMjM5LCAxMjYsIDksIDE0LCAyMzksIDEyNSwgOSwgMTQsIDIzOSwgMTI0LCA5LCAxNCwgMjM5LCAxMjMsIDksIDE0LCAKKyAgICAyMzksIDEyMiwgOSwgMTQsIDIzOSwgMTIxLCA5LCAxNCwgMjM5LCAxMjAsIDksIDE0LCAyMzksIDExOSwgOSwgMTQsIDIzOSwgCisgICAgMTE4LCA5LCAxNCwgMjM5LCAxMTcsIDksIDE0LCAyMzksIDExNiwgOSwgMTQsIDIzOSwgMTE1LCA5LCAxNCwgMjM5LCAxMTQsIAorICAgIDksIDE0LCAyMzksIDExMywgOSwgMTQsIDIzOSwgMTEyLCA5LCAxNCwgMjM5LCAxMTEsIDksIDE0LCAyMzksIDExMCwgOSwgCisgICAgMTQsIDIzOSwgMTA5LCA5LCAxNCwgMjM5LCAxMDgsIDksIDE0LCAyMzksIDEwNywgOSwgMTQsIDIzOSwgMTA2LCA5LCAxNCwgCisgICAgMjM5LCAxMDUsIDksIDE0LCAyMzksIDEwNCwgOSwgMTQsIDIzOSwgMTAzLCA5LCAxNCwgMjM5LCAxMDIsIDksIDE0LCAyMzksIAorICAgIDEwMSwgOSwgMTQsIDIzOSwgMTAwLCA5LCAxNCwgMjM5LCA5OSwgOSwgMTQsIDIzOSwgOTgsIDksIDE0LCAyMzksIDk3LCA5LCAKKyAgICAxNCwgMjM5LCA5NiwgOSwgMTQsIDIzOSwgOTUsIDksIDE0LCAyMzksIDk0LCA5LCAxNCwgMjM5LCA5MywgOSwgMTQsIDIzOSwgCisgICAgOTIsIDksIDE0LCAyMzksIDkxLCA5LCAxNCwgMjM5LCA5MCwgOSwgMTQsIDIzOSwgODksIDksIDE0LCAyMzksIDg4LCA5LCAKKyAgICAxNCwgMjM5LCA4NywgOSwgMTQsIDIzOSwgODYsIDksIDE0LCAyMzksIDg1LCA5LCAxNCwgMjM5LCA4NCwgOSwgMTQsIDIzOSwgCisgICAgODMsIDksIDE0LCAyMzksIDgyLCA5LCAxNCwgMjM5LCA4MSwgOSwgMTQsIDIzOSwgODAsIDksIDE0LCAyMzksIDc5LCA5LCAKKyAgICAxNCwgMjM5LCA3OCwgOSwgMTQsIDIzOSwgNzcsIDksIDE0LCAyMzksIDc2LCA5LCAxNCwgMjM5LCA3NSwgOSwgMTQsIDIzOSwgCisgICAgNzQsIDksIDE0LCAyMzksIDczLCA5LCAxNCwgMjM5LCA3MiwgOSwgMTQsIDIzOSwgNzEsIDksIDE0LCAyMzksIDcwLCA5LCAKKyAgICAxNCwgMjM5LCA2OSwgOSwgMTQsIDIzOSwgNjgsIDksIDE0LCAyMzksIDY3LCA5LCAxNCwgMjM5LCA2NiwgOSwgMTQsIDIzOSwgCisgICAgNjUsIDksIDE0LCAyMzksIDY0LCA5LCAxNCwgMjM5LCA2MywgOSwgMTQsIDIzOSwgNjIsIDksIDE0LCAyMzksIDYxLCA5LCAKKyAgICAxNCwgMjM5LCA2MCwgOSwgMTQsIDIzOSwgNTksIDksIDE0LCAyMzksIDU4LCA5LCAxNCwgMjM5LCA1NywgOSwgMTQsIDIzOSwgCisgICAgNTYsIDksIDE0LCAyMzksIDU1LCA5LCAxNCwgMjM5LCA1NCwgOSwgMTQsIDIzOSwgNTMsIDksIDE0LCAyMzksIDUyLCA5LCAKKyAgICAxNCwgMjM5LCA1MSwgOSwgMTQsIDIzOSwgNTAsIDksIDE0LCAyMzksIDQ5LCA5LCAxNCwgMjM5LCA0OCwgOSwgMTQsIDIzOSwgCisgICAgNDcsIDksIDE0LCAyMzksIDQ2LCA5LCAxNCwgMjM5LCA0NSwgOSwgMTQsIDIzOSwgNDQsIDksIDE0LCAyMzksIDQzLCA5LCAKKyAgICAxNCwgMjM5LCA0MiwgOSwgMTQsIDIzOSwgNDEsIDksIDE0LCAyMzksIDQwLCA5LCAxNCwgMjM5LCAzOSwgOSwgMTQsIDIzOSwgCisgICAgMzgsIDksIDE0LCAyMzksIDM3LCA5LCAxNCwgMjM5LCAzNiwgOSwgMTQsIDIzOSwgMzUsIDksIDE0LCAyMzksIDM0LCA5LCAKKyAgICAxNCwgMjM5LCAzMywgOSwgMTQsIDIzOSwgMzIsIDksIDE0LCAyMzksIDMxLCA5LCAxNCwgMjM5LCAzMCwgOSwgMTQsIDIzOSwgCisgICAgMjksIDksIDE0LCAyMzksIDI4LCA5LCAxNCwgMjM5LCAyNywgOSwgMTQsIDIzOSwgMjYsIDksIDE0LCAyMzksIDI1LCA5LCAKKyAgICAxNCwgMjM5LCAyNCwgOSwgMTQsIDIzOSwgMjMsIDksIDE0LCAyMzksIDIyLCA5LCAxNCwgMjM5LCAyMSwgOSwgMTQsIDIzOSwgCisgICAgMjAsIDksIDE0LCAyMzksIDE5LCA5LCAxNCwgMjM5LCAxOCwgOSwgMTQsIDIzOSwgMTcsIDksIDE0LCAyMzksIDE2LCA5LCAKKyAgICAxNCwgMjM5LCAxNSwgOSwgMTQsIDIzOSwgMTQsIDksIDE0LCAyMzksIDEzLCA5LCAxNCwgMjM5LCAxMiwgOSwgMTQsIDIzOSwgCisgICAgMTEsIDksIDE0LCAyMzksIDEwLCA5LCAxNCwgMjM5LCA5LCA5LCAxNCwgMjM5LCA4LCA5LCAxNCwgMjM5LCA3LCA5LCAxNCwgCisgICAgMjM5LCA2LCA5LCAxNCwgMjM5LCA1LCA5LCAxNCwgMjM5LCA0LCA5LCAxNCwgMjM5LCAzLCA5LCAxNCwgMjM5LCAyLCA5LCAKKyAgICAxNCwgMjM5LCAxLCA5LCAxNCwgMjM5LCAwLCA5LCAxNCwgMjM4LCAyNTUsIDksIDE0LCAyMzgsIDI1NCwgOSwgMTQsIDIzOCwgCisgICAgMjUzLCA5LCAxNCwgMjM4LCAyNTIsIDksIDE0LCAyMzgsIDI1MSwgOSwgMTQsIDIzOCwgMjUwLCA5LCAxNCwgMjM4LCAyNDksIAorICAgIDksIDE0LCAyMzgsIDI0OCwgOSwgMTQsIDIzOCwgMjQ3LCA5LCAxNCwgMjM4LCAyNDYsIDksIDE0LCAyMzgsIDI0NSwgOSwgCisgICAgMTQsIDIzOCwgMjQ0LCA5LCAxNCwgMjM4LCAyNDMsIDksIDE0LCAyMzgsIDI0MiwgOSwgMTQsIDIzOCwgMjQxLCA5LCAxNCwgCisgICAgMjM4LCAyNDAsIDksIDE0LCAyMzgsIDIzOSwgOSwgMTQsIDIzOCwgMjM4LCA5LCAxNCwgMjM4LCAyMzcsIDksIDE0LCAyMzgsIAorICAgIDIzNiwgOSwgMTQsIDIzOCwgMjM1LCA5LCAxNCwgMjM4LCAyMzQsIDksIDE0LCAyMzgsIDIzMywgOSwgMTQsIDIzOCwgMjMyLCAKKyAgICA5LCAxNCwgMjM4LCAyMzEsIDksIDE0LCAyMzgsIDIzMCwgOSwgMTQsIDIzOCwgMjI5LCA5LCAxNCwgMjM4LCAyMjgsIDksIAorICAgIDE0LCAyMzgsIDIyNywgOSwgMTQsIDIzOCwgMjI2LCA5LCAxNCwgMjM4LCAyMjUsIDksIDE0LCAyMzgsIDIyNCwgOSwgMTQsIAorICAgIDIzOCwgMjIzLCA5LCAxNCwgMjM4LCAyMjIsIDksIDE0LCAyMzgsIDIyMSwgOSwgMTQsIDIzOCwgMjIwLCA5LCAxNCwgMjM4LCAKKyAgICAyMTksIDksIDE0LCAyMzgsIDIxOCwgOSwgMTQsIDIzOCwgMjE3LCA5LCAxNCwgMjM4LCAyMTYsIDksIDE0LCAyMzgsIDIxNSwgCisgICAgOSwgMTQsIDIzOCwgMjE0LCA5LCAxNCwgMjM4LCAyMTMsIDksIDE0LCAyMzgsIDIxMiwgOSwgMTQsIDIzOCwgMjExLCA5LCAKKyAgICAxNCwgMjM4LCAyMTAsIDksIDE0LCAyMzgsIDIwOSwgOSwgMTQsIDIzOCwgMjA4LCA5LCAxNCwgMjM4LCAyMDcsIDksIDE0LCAKKyAgICAyMzgsIDIwNiwgOSwgMTQsIDIzOCwgMjA1LCA5LCAxNCwgMjM4LCAyMDQsIDksIDE0LCAyMzgsIDIwMywgOSwgMTQsIDIzOCwgCisgICAgMjAyLCA5LCAxNCwgMjM4LCAyMDEsIDksIDE0LCAyMzgsIDIwMCwgOSwgMTQsIDIzOCwgMTk5LCA5LCAxNCwgMjM4LCAxOTgsIAorICAgIDksIDE0LCAyMzgsIDE5NywgOSwgMTQsIDIzOCwgMTk2LCA5LCAxNCwgMjM4LCAxOTUsIDksIDE0LCAyMzgsIDE5NCwgOSwgCisgICAgMTQsIDIzOCwgMTkzLCA5LCAxNCwgMjM4LCAxOTIsIDksIDE0LCAyMzgsIDE5MSwgOSwgMTQsIDIzOCwgMTkwLCA5LCAxNCwgCisgICAgMjM4LCAxODksIDksIDE0LCAyMzgsIDE4OCwgOSwgMTQsIDIzOCwgMTg3LCA5LCAxNCwgMjM4LCAxODYsIDksIDE0LCAyMzgsIAorICAgIDE4NSwgOSwgMTQsIDIzOCwgMTg0LCA5LCAxNCwgMjM4LCAxODMsIDksIDE0LCAyMzgsIDE4MiwgOSwgMTQsIDIzOCwgMTgxLCAKKyAgICA5LCAxNCwgMjM4LCAxODAsIDksIDE0LCAyMzgsIDE3OSwgOSwgMTQsIDIzOCwgMTc4LCA5LCAxNCwgMjM4LCAxNzcsIDksIAorICAgIDE0LCAyMzgsIDE3NiwgOSwgMTQsIDIzOCwgMTc1LCA5LCAxNCwgMjM4LCAxNzQsIDksIDE0LCAyMzgsIDE3MywgOSwgMTQsIAorICAgIDIzOCwgMTcyLCA5LCAxNCwgMjM4LCAxNzEsIDksIDE0LCAyMzgsIDE3MCwgOSwgMTQsIDIzOCwgMTY5LCA5LCAxNCwgMjM4LCAKKyAgICAxNjgsIDksIDE0LCAyMzgsIDE2NywgOSwgMTQsIDIzOCwgMTY2LCA5LCAxNCwgMjM4LCAxNjUsIDksIDE0LCAyMzgsIDE2NCwgCisgICAgOSwgMTQsIDIzOCwgMTYzLCA5LCAxNCwgMjM4LCAxNjIsIDksIDE0LCAyMzgsIDE2MSwgOSwgMTQsIDIzOCwgMTYwLCA5LCAKKyAgICAxNCwgMjM4LCAxNTksIDksIDE0LCAyMzgsIDE1OCwgOSwgMTQsIDIzOCwgMTU3LCA5LCAxNCwgMjM4LCAxNTYsIDksIDE0LCAKKyAgICAyMzgsIDE1NSwgOSwgMTQsIDIzOCwgMTU0LCA5LCAxNCwgMjM4LCAxNTMsIDksIDE0LCAyMzgsIDE1MiwgOSwgMTQsIDIzOCwgCisgICAgMTUxLCA5LCAxNCwgMjM4LCAxNTAsIDksIDE0LCAyMzgsIDE0OSwgOSwgMTQsIDIzOCwgMTQ4LCA5LCAxNCwgMjM4LCAxNDcsIAorICAgIDksIDE0LCAyMzgsIDE0NiwgOSwgMTQsIDIzOCwgMTQ1LCA5LCAxNCwgMjM4LCAxNDQsIDksIDE0LCAyMzgsIDE0MywgOSwgCisgICAgMTQsIDIzOCwgMTQyLCA5LCAxNCwgMjM4LCAxNDEsIDksIDE0LCAyMzgsIDE0MCwgOSwgMTQsIDIzOCwgMTM5LCA5LCAxNCwgCisgICAgMjM4LCAxMzgsIDksIDE0LCAyMzgsIDEzNywgOSwgMTQsIDIzOCwgMTM2LCA5LCAxNCwgMjM4LCAxMzUsIDksIDE0LCAyMzgsIAorICAgIDEzNCwgOSwgMTQsIDIzOCwgMTMzLCA5LCAxNCwgMjM4LCAxMzIsIDksIDE0LCAyMzgsIDEzMSwgOSwgMTQsIDIzOCwgMTMwLCAKKyAgICA5LCAxNCwgMjM4LCAxMjksIDksIDE0LCAyMzgsIDEyOCwgOSwgMTQsIDIzOCwgMTI3LCA5LCAxNCwgMjM4LCAxMjYsIDksIAorICAgIDE0LCAyMzgsIDEyNSwgOSwgMTQsIDIzOCwgMTI0LCA5LCAxNCwgMjM4LCAxMjMsIDksIDE0LCAyMzgsIDEyMiwgOSwgMTQsIAorICAgIDIzOCwgMTIxLCA5LCAxNCwgMjM4LCAxMjAsIDksIDE0LCAyMzgsIDExOSwgOSwgMTQsIDIzOCwgMTE4LCA5LCAxNCwgMjM4LCAKKyAgICAxMTcsIDksIDE0LCAyMzgsIDExNiwgOSwgMTQsIDIzOCwgMTE1LCA5LCAxNCwgMjM4LCAxMTQsIDksIDE0LCAyMzgsIDExMywgCisgICAgOSwgMTQsIDIzOCwgMTEyLCA5LCAxNCwgMjM4LCAxMTEsIDksIDE0LCAyMzgsIDExMCwgOSwgMTQsIDIzOCwgMTA5LCA5LCAKKyAgICAxNCwgMjM4LCAxMDgsIDksIDE0LCAyMzgsIDEwNywgOSwgMTQsIDIzOCwgMTA2LCA5LCAxNCwgMjM4LCAxMDUsIDksIDE0LCAKKyAgICAyMzgsIDEwNCwgOSwgMTQsIDIzOCwgMTAzLCA5LCAxNCwgMjM4LCAxMDIsIDksIDE0LCAyMzgsIDEwMSwgOSwgMTQsIDIzOCwgCisgICAgMTAwLCA5LCAxNCwgMjM4LCA5OSwgOSwgMTQsIDIzOCwgOTgsIDksIDE0LCAyMzgsIDk3LCA5LCAxNCwgMjM4LCA5NiwgOSwgCisgICAgMTQsIDIzOCwgOTUsIDksIDE0LCAyMzgsIDk0LCA5LCAxNCwgMjM4LCA5MywgOSwgMTQsIDIzOCwgOTIsIDksIDE0LCAyMzgsIAorICAgIDkxLCA5LCAxNCwgMjM4LCA5MCwgOSwgMTQsIDIzOCwgODksIDksIDE0LCAyMzgsIDg4LCA5LCAxNCwgMjM4LCA4NywgOSwgCisgICAgMTQsIDIzOCwgODYsIDksIDE0LCAyMzgsIDg1LCA5LCAxNCwgMjM4LCA4NCwgOSwgMTQsIDIzOCwgODMsIDksIDE0LCAyMzgsIAorICAgIDgyLCA5LCAxNCwgMjM4LCA4MSwgOSwgMTQsIDIzOCwgODAsIDksIDE0LCAyMzgsIDc5LCA5LCAxNCwgMjM4LCA3OCwgOSwgCisgICAgMTQsIDIzOCwgNzcsIDksIDE0LCAyMzgsIDc2LCA5LCAxNCwgMjM4LCA3NSwgOSwgMTQsIDIzOCwgNzQsIDksIDE0LCAyMzgsIAorICAgIDczLCAyMzMsIDkwLCAyMTcsIDg0LCAxMjksIDIxOSwgMTgsIDEyOSwgMjQ1LCAzMSwgNzgsIDEyOSwgMjIzLCAyNTQsIDc4LCAKKyAgICAxMjksIDU0LCA1MCwgMTI5LCAyNDcsIDEzMiwgNTAsIDEyOSwgMjI1LCAxODIsIDUwLCAxMjksIDI1NCwgMTI2LCAxMjksIAorICAgIDI1NCwgNTcsIDEyOSwgNDMsIDIyNiwgMywgMTI5LCA0NCwgMjI2LCAzLCAxMjksIDI1MywgMjE2LCAxMjksIDk2LCA1MCwgCisgICAgMTI5LCAyNDksIDIxOSwgMTI5LCAyNDAsIDE2NywgMTI5LCAyNDMsIDIyOSwgMjE4LCAxMjksIDEyOSwgMjE5LCA0NiwgMTI5LCAKKyAgICAyMSwgMjEwLCA4NiwgMTI5LCAyMSwgMTEwLCAxMjksIDIxLCAxMDUsIDEyOSwgMjEsIDE1OCwgMTI5LCAyMSwgMTYxLCAxMjksIAorICAgIDIxLCAxODksIDEyOSwgMjEsIDE5NCwgMTI5LCAyMSwgMTk4LCAxMjksIDIxLCAxOTUsIDEyOSwgMjEsIDIwMCwgMTI5LCAKKyAgICAyNDksIDIyNiwgMTI5LCAyMjAsIDE1MCwgMTI5LCAyMzMsIDE1LCA1MCwgMTI5LCAyNDUsIDk4LCA1MCwgMTI5LCAyNDIsIAorICAgIDEzMCwgNTAsIDEyOSwgMjI0LCAxMywgNzgsIDEyOSwgMjQ5LCAyMTcsIDI1MywgMjA2LCAxMjksIDcsIDYsIDEsIDYxLCAKKyAgICAxMjksIDcsIDYsIDEsIDI1MywgMTU4LCAxMjksIDcsIDYsIDEsIDI1MSwgNjYsIDEyOSwgNywgNiwgMSwgMjQ5LCA2MCwgCisgICAgMTI5LCA3LCA2LCAxLCA3NSwgMTI5LCA3LCA2LCAxLCAyNDUsIDYsIDEyOSwgNywgNiwgMSwgMjQzLCAyMDIsIDEyOSwgNywgCisgICAgNiwgMSwgMjQyLCA2MCwgMTI5LCA3LCA2LCAxLCA3MywgMTI5LCA3LCA2LCAxLCAyMzUsIDE0NCwgMTI5LCA3LCA2LCAxLCAKKyAgICAyMzUsIDIzLCAxMjksIDcsIDYsIDEsIDE1NiwgMTI5LCA3LCA2LCAxLCAxOTMsIDEyOSwgNywgNiwgMSwgMjMwLCAyNSwgCisgICAgMTI5LCA3LCA2LCAxLCA3NiwgMTI5LCA3LCA2LCAxLCAyMjYsIDEwNSwgMTI5LCA3LCA2LCAxLCAyMjQsIDk2LCAxMjksIDcsIAorICAgIDYsIDEsIDE1MywgMTI5LCA3LCA2LCAxLCAyMjIsIDkxLCAxMjksIDcsIDYsIDEsIDIxNywgMTUyLCAxMjksIDcsIDYsIDEsIAorICAgIDcwLCAxMjksIDcsIDYsIDEsIDIxNCwgMTA1LCAxMjksIDcsIDYsIDEsIDIxMiwgOTgsIDEyOSwgNywgNiwgMSwgMjExLCAKKyAgICAxNzgsIDEyOSwgNywgNiwgMSwgMjExLCAxMTcsIDEyOSwgNywgNiwgMSwgMjEwLCAxNTksIDEyOSwgNDMsIDQyLCAxMjcsIAorICAgIDEyOSwgMjIzLCA1MCwgMjE5LCA0NiwgMTI5LCA0NCwgNDIsIDEyNywgMTI5LCAyNTAsIDMxLCAyNTUsIDE0LCAxMjksIDEyMSwgCisgICAgMjMyLCAyMTMsIDEyOSwgMjQyLCAxMzcsIDI1NSwgMTQsIDEyOSwgNywgNCwgMSwgNjEsIDEyOSwgNywgNCwgMSwgMjUzLCAKKyAgICAxNTgsIDEyOSwgNywgNCwgMSwgMjUxLCA2NiwgMTI5LCA3LCA0LCAxLCAyNDksIDYwLCAxMjksIDcsIDQsIDEsIDc1LCAxMjksIAorICAgIDcsIDQsIDEsIDI0NSwgNiwgMTI5LCA3LCA0LCAxLCAyNDMsIDIwMiwgMTI5LCA3LCA0LCAxLCAyNDIsIDYwLCAxMjksIDcsIAorICAgIDQsIDEsIDczLCAxMjksIDcsIDQsIDEsIDIzNSwgMTQ0LCAxMjksIDcsIDQsIDEsIDIzNSwgMjMsIDEyOSwgNywgNCwgMSwgCisgICAgMTU2LCAxMjksIDcsIDQsIDEsIDE5MywgMTI5LCA3LCA0LCAxLCAyMzAsIDI1LCAxMjksIDcsIDQsIDEsIDc2LCAxMjksIDcsIAorICAgIDQsIDEsIDIyNiwgMTA1LCAxMjksIDcsIDQsIDEsIDIyNCwgOTYsIDEyOSwgNywgNCwgMSwgMTUzLCAxMjksIDcsIDQsIDEsIAorICAgIDIyMiwgOTEsIDEyOSwgNywgNCwgMSwgMjE3LCAxNTIsIDEyOSwgNywgNCwgMSwgNzAsIDEyOSwgNywgNCwgMSwgMjE0LCAKKyAgICAxMDUsIDEyOSwgNywgNCwgMSwgMjEyLCA5OCwgMTI5LCA3LCA0LCAxLCAyMTEsIDE3OCwgMTI5LCA3LCA0LCAxLCAyMTEsIAorICAgIDExNywgMTI5LCA3LCA0LCAxLCAyMTAsIDE1OSwgMTI5LCA0MywgMjQ5LCA5OSwgMTI3LCAxMjksIDY3LCAyMzIsIDIxMywgCisgICAgMTI5LCA0NCwgMjQ5LCA5OSwgMTI3LCAxMjksIDE4MiwgMjUxLCA2LCAyMTcsIDg0LCA0NSwgMjIxLCA3OCwgNDUsIDIyMSwgCisgICAgNjcsIDQ1LCAyMjEsIDU2LCA0NSwgMjIxLCA0NCwgNDUsIDIyMSwgMzMsIDQ1LCAyMjEsIDIyLCA0NSwgMjIxLCAxMSwgNDUsIAorICAgIDIyMSwgMCwgNDUsIDIyMCwgMjQ1LCA0NSwgMjIwLCAyMzcsIDQ1LCAyMjAsIDIzNiwgNDUsIDIyMCwgMjM1LCA0NSwgMjIwLCAKKyAgICAyMzQsIDQ1LCAyMjAsIDIzMiwgNDUsIDIyMCwgMjMxLCA0NSwgMjIwLCAyMzAsIDQ1LCAyMjAsIDIyOSwgNDUsIDIyMCwgCisgICAgMjI4LCA0NSwgMjIwLCAyMjcsIDQ1LCAyMjAsIDIyNiwgNDUsIDIyMCwgMjI1LCA0NSwgMjIwLCAyMjQsIDQ1LCAyMjAsIAorICAgIDIyMywgNDUsIDIyMCwgMjIxLCA0NSwgMjIwLCAyMjAsIDQ1LCAyMjAsIDIxOSwgNDUsIDIyMCwgMjE4LCA0NSwgMjIwLCAKKyAgICAyMTcsIDQ1LCAyMjAsIDIxNiwgNDUsIDIyMCwgMjE1LCA0NSwgMjIwLCAyMTQsIDQ1LCAyMjAsIDIxMywgNDUsIDIyMCwgCisgICAgMjEyLCA0NSwgMjIwLCAyMTAsIDQ1LCAyMjAsIDIwOSwgNDUsIDIyMCwgMjA4LCA0NSwgMjIwLCAyMDcsIDQ1LCAyMjAsIAorICAgIDIwNiwgNDUsIDIyMCwgMjA1LCA0NSwgMjIwLCAyMDQsIDQ1LCAyMjAsIDIwMywgNDUsIDIyMCwgMjAyLCA0NSwgMjIwLCAKKyAgICAyMDEsIDQ1LCAyMjAsIDE5OSwgNDUsIDIyMCwgMTk4LCA0NSwgMjIwLCAxOTcsIDQ1LCAyMjAsIDE5NiwgNDUsIDIyMCwgCisgICAgMTk1LCA0NSwgMjIwLCAxOTQsIDQ1LCAyMjAsIDE5MywgNDUsIDIyMCwgMTkyLCA0NSwgMjIwLCAxOTEsIDQ1LCAyMjAsIAorICAgIDE5MCwgNDUsIDIyMCwgMTg4LCA0NSwgMjIwLCAxODcsIDQ1LCAyMjAsIDE4NiwgNDUsIDIyMCwgMTg1LCA0NSwgMjIwLCAKKyAgICAxODQsIDQ1LCAyMjAsIDE4MywgNDUsIDIyMCwgMTgyLCA0NSwgMjIwLCAxODEsIDQ1LCAyMjAsIDE4MCwgNDUsIDIyMCwgCisgICAgMTc5LCA0NSwgMjIwLCAxNzcsIDQ1LCAyMjAsIDE3NiwgNDUsIDIyMCwgMTc1LCA0NSwgMjIwLCAxNzQsIDQ1LCAyMjAsIAorICAgIDE3MywgNDUsIDIyMCwgMTcyLCA0NSwgMjIwLCAxNzEsIDQ1LCAyMjAsIDE3MCwgNDUsIDIyMCwgMTY5LCA0NSwgMjIwLCAKKyAgICAxNjgsIDQ1LCAyMjAsIDE2NiwgNDUsIDIyMCwgMTY1LCA0NSwgMjIwLCAxNjQsIDQ1LCAyMjAsIDE2MywgNDUsIDIyMCwgCisgICAgMTYyLCA0NSwgMjIwLCAxNjEsIDQ1LCAyMjAsIDE2MCwgNDUsIDIyMCwgMTU5LCA0NSwgMjIwLCAxNTgsIDQ1LCAyMjAsIAorICAgIDE1NywgNDUsIDIyMSwgMTU0LCA0NSwgMjIxLCAxNTMsIDQ1LCAyMjEsIDE1MiwgNDUsIDIyMSwgMTUxLCA0NSwgMjIxLCAKKyAgICAxNTAsIDQ1LCAyMjEsIDE0OSwgNDUsIDIyMSwgMTQ4LCA0NSwgMjIxLCAxNDcsIDQ1LCAyMjEsIDE0NiwgNDUsIDIyMSwgCisgICAgMTQ1LCA0NSwgMjIxLCAxNDMsIDQ1LCAyMjEsIDE0MiwgNDUsIDIyMSwgMTQxLCA0NSwgMjIxLCAxNDAsIDQ1LCAyMjEsIAorICAgIDEzOSwgNDUsIDIyMSwgMTM4LCA0NSwgMjIxLCAxMzcsIDQ1LCAyMjEsIDEzNiwgNDUsIDIyMSwgMTM1LCA0NSwgMjIxLCAKKyAgICAxMzQsIDQ1LCAyMjEsIDEzMiwgNDUsIDIyMSwgMTMxLCA0NSwgMjIxLCAxMzAsIDQ1LCAyMjEsIDEyOSwgNDUsIDIyMSwgCisgICAgMTI4LCA0NSwgMjIxLCAxMjcsIDQ1LCAyMjEsIDEyNiwgNDUsIDIyMSwgMTI1LCA0NSwgMjIxLCAxMjQsIDQ1LCAyMjEsIAorICAgIDEyMywgNDUsIDIyMSwgMTIxLCA0NSwgMjIxLCAxMjAsIDQ1LCAyMjEsIDExOSwgNDUsIDIyMSwgMTE4LCA0NSwgMjIxLCAKKyAgICAxMTcsIDQ1LCAyMjEsIDExNiwgNDUsIDIyMSwgMTE1LCA0NSwgMjIxLCAxMTQsIDQ1LCAyMjEsIDExMywgNDUsIDIyMSwgCisgICAgMTEyLCA0NSwgMjIxLCAxMTAsIDQ1LCAyMjEsIDEwOSwgNDUsIDIyMSwgMTA4LCA0NSwgMjIxLCAxMDcsIDQ1LCAyMjEsIAorICAgIDEwNiwgNDUsIDIyMSwgMTA1LCA0NSwgMjIxLCAxMDQsIDQ1LCAyMjEsIDEwMywgNDUsIDIyMSwgMTAyLCA0NSwgMjIxLCAKKyAgICAxMDEsIDQ1LCAyMjEsIDk5LCA0NSwgMjIxLCA5OCwgNDUsIDIyMSwgOTcsIDQ1LCAyMjEsIDk2LCA0NSwgMjIxLCA5NSwgNDUsIAorICAgIDIyMSwgOTQsIDQ1LCAyMjEsIDkzLCA0NSwgMjIxLCA5MiwgNDUsIDIyMSwgOTEsIDQ1LCAyMjEsIDkwLCA0NSwgMjIxLCA4OCwgCisgICAgNDUsIDIyMSwgODcsIDQ1LCAyMjEsIDg2LCA0NSwgMjIxLCA4NSwgNDUsIDIyMSwgODQsIDQ1LCAyMjEsIDgzLCA0NSwgMjIxLCAKKyAgICA4MiwgNDUsIDIyMSwgODEsIDQ1LCAyMjEsIDgwLCA0NSwgMjIxLCA3OSwgNDUsIDIyMSwgNzcsIDQ1LCAyMjEsIDc2LCA0NSwgCisgICAgMjIxLCA3NSwgNDUsIDIyMSwgNzQsIDQ1LCAyMjEsIDczLCA0NSwgMjIxLCA3MiwgNDUsIDIyMSwgNzEsIDQ1LCAyMjEsIDcwLCAKKyAgICA0NSwgMjIxLCA2OSwgNDUsIDIyMSwgNjgsIDQ1LCAyMjEsIDY2LCA0NSwgMjIxLCA2NSwgNDUsIDIyMSwgNjQsIDQ1LCAyMjEsIAorICAgIDYzLCA0NSwgMjIxLCA2MiwgNDUsIDIyMSwgNjEsIDQ1LCAyMjEsIDYwLCA0NSwgMjIxLCA1OSwgNDUsIDIyMSwgNTgsIDQ1LCAKKyAgICAyMjEsIDU3LCA0NSwgMjIxLCA1NSwgNDUsIDIyMSwgNTQsIDQ1LCAyMjEsIDUzLCA0NSwgMjIxLCA1MiwgNDUsIDIyMSwgNTEsIAorICAgIDQ1LCAyMjEsIDUwLCA0NSwgMjIxLCA0OSwgNDUsIDIyMSwgNDgsIDQ1LCAyMjEsIDQ3LCA0NSwgMjIxLCA0NiwgNDUsIDIyMSwgCisgICAgNDMsIDQ1LCAyMjEsIDQyLCA0NSwgMjIxLCA0MSwgNDUsIDIyMSwgNDAsIDQ1LCAyMjEsIDM5LCA0NSwgMjIxLCAzOCwgNDUsIAorICAgIDIyMSwgMzcsIDQ1LCAyMjEsIDM2LCA0NSwgMjIxLCAzNSwgNDUsIDIyMSwgMzQsIDQ1LCAyMjEsIDMyLCA0NSwgMjIxLCAzMSwgCisgICAgNDUsIDIyMSwgMzAsIDQ1LCAyMjEsIDI5LCA0NSwgMjIxLCAyOCwgNDUsIDIyMSwgMjcsIDQ1LCAyMjEsIDI2LCA0NSwgMjIxLCAKKyAgICAyNSwgNDUsIDIyMSwgMjQsIDQ1LCAyMjEsIDIzLCA0NSwgMjIxLCAyMSwgNDUsIDIyMSwgMjAsIDQ1LCAyMjEsIDE5LCA0NSwgCisgICAgMjIxLCAxOCwgNDUsIDIyMSwgMTcsIDQ1LCAyMjEsIDE2LCA0NSwgMjIxLCAxNSwgNDUsIDIyMSwgMTQsIDQ1LCAyMjEsIDEzLCAKKyAgICA0NSwgMjIxLCAxMiwgNDUsIDIyMSwgMTAsIDQ1LCAyMjEsIDksIDQ1LCAyMjEsIDgsIDQ1LCAyMjEsIDcsIDQ1LCAyMjEsIDYsIAorICAgIDQ1LCAyMjEsIDUsIDQ1LCAyMjEsIDQsIDQ1LCAyMjEsIDMsIDQ1LCAyMjEsIDIsIDQ1LCAyMjEsIDEsIDQ1LCAyMjAsIDI1NSwgCisgICAgNDUsIDIyMCwgMjU0LCA0NSwgMjIwLCAyNTMsIDQ1LCAyMjAsIDI1MiwgNDUsIDIyMCwgMjUxLCA0NSwgMjIwLCAyNTAsIDQ1LCAKKyAgICAyMjAsIDI0OSwgNDUsIDIyMCwgMjQ4LCA0NSwgMjIwLCAyNDcsIDQ1LCAyMjAsIDI0NiwgNDUsIDIyMCwgMjQ0LCA0NSwgCisgICAgMjIwLCAyNDMsIDQ1LCAyMjAsIDI0MiwgNDUsIDIyMCwgMjQxLCA0NSwgMjIwLCAyNDAsIDQ1LCAyMjAsIDIzOSwgNDUsIAorICAgIDIyMCwgMjM4LCAyMjcsIDIwMiwgMjI3LCAyMDQsIDIxOCwgMTUyLCA2NCwgMjQxLCAyMzMsIDIxOSwgNDgsIDIxOCwgMTUyLCAKKyAgICA2NCwgMjE2LCAyMTIsIDIxOCwgODUsIDI0NSwgMTQzLCA2NCwgMjE2LCAyMTIsIDI0NSwgNTYsIDI0NSwgMTQzLCA2NCwgCisgICAgMjE1LCAyNDMsIDI0NSwgMTA5LCAyNDUsIDEzMiwgMjQ1LCAxMzMsIDI1NSwgNywgMjU1LCA4LCAyNTQsIDE2NywgMjUyLCAKKyAgICA0NywgMjUyLCAxNzksIDI1MSwgMTMxLCAxMzUsIDIxNywgODksIDIwMywgMjE3LCA4OSwgMjQwLCAyMjcsIDIxNywgOTMsIAorICAgIDIzMiwgMjE0LCAyNDQsIDE0NSwgMTY2LCAyMzIsIDIxMywgMjQ1LCAxNDMsIDY0LCAyMzIsIDIxMywgMjMzLCAwLCAyMjgsIAorICAgIDEzNSwgMjQ1LCAxMTIsIDIzMiwgMjE0LCAyMTcsIDg5LCA2NywgMjE3LCA4OSwgMjEyLCAxMTgsIDI0NCwgMjAsIDI0NCwgCisgICAgMTQ1LCAyNDQsIDEyNSwgMjUwLCAyMzAsIDIyMywgNTMsIDI0OSwgMTQzLCAyMjAsIDI4LCAyMjYsIDEzMCwgMjMyLCAxNTAsIAorICAgIDExMCwgMjE5LCA1OCwgMjIwLCAyOCwgMjM1LCAyNTUsIDIzMiwgMTUwLCAyMTAsIDg2LCAyMTksIDE5MSwgMjQ4LCAxNTEsIAorICAgIDIzMiwgMjA0LCAyNDUsIDc3LCAyNDcsIDE1NSwgMjQ4LCAzMSwgMjQ5LCAxNzgsIDExMCwgMjQ4LCAxNDEsIDI0OCwgMzEsIAorICAgIDI0OSwgMTc4LCAxMDUsIDI0OCwgMTQwLCAyNDgsIDMxLCAyNDksIDE3OCwgMTU4LCAyNDgsIDEzOSwgMjQ4LCAzMSwgMjQ5LCAKKyAgICAxNzgsIDE2MSwgMjQ4LCAxMzgsIDE1MiwgMjU1LCA3LCAyMjksIDIwOSwgMjE3LCAxNzcsIDIzNiwgNjIsIDIxNywgMTgwLCAKKyAgICAyNDUsIDE0MywgNjQsIDIxNSwgMjQ0LCAyNTEsIDIxMywgMjQ1LCA2MiwgMjUxLCA1LCAyNTEsIDcsIDI0NSwgMTQzLCA2NCwgCisgICAgMjMxLCA4MSwgMjQ1LCAxMTAsIDIxOCwgNjEsIDIxOCwgNzgsIDI0NSwgNzcsIDI0NSwgNzgsIDIzNSwgMjMyLCAyMjAsIAorICAgIDEzOCwgMTYxLCAyNDQsIDEwNywgMjIwLCAxMzcsIDI0MywgMjM3LCAyMzUsIDIzMiwgMjIwLCAxMzgsIDE1OCwgMjQyLCAKKyAgICAxMjEsIDIyMCwgMTM3LCAyNDIsIDExOCwgMjM1LCAyMzIsIDIyMCwgMTM4LCAxMDUsIDIyMywgMTIxLCAyMjAsIDEzNywgCisgICAgMjIyLCAxNDUsIDIzNSwgMjMyLCAyMjAsIDEzOCwgMTEwLCAyMTQsIDE3NCwgMjIwLCAxMzcsIDIxNCwgMTMzLCAyMTksIDIxLCAKKyAgICAyNDgsIDYzLCAyNDgsIDY1LCAyMjYsIDc4LCAyNTAsIDE0MiwgMjI2LCA4MCwgMTI1LCAyMjYsIDI0MCwgMjI0LCAxOTMsIAorICAgIDI0MSwgNDcsIDI1MSwgMTUwLCAyMjUsIDE3MywgMjQxLCAyMDMsIDI1MSwgMTYxLCAyMjgsIDc1LCAyNTEsIDE1MCwgMjQxLCAKKyAgICAyMDMsIDIyOSwgMTc1LCAyMzUsIDI0MiwgMjM1LCAyNDQsIDIyOSwgODIsIDIzMiwgMjEzLCAyMjksIDk5LCAyMTgsIDE1MiwgCisgICAgNjQsIDIyMSwgMTU4LCAyNTQsIDE4LCAyMTgsIDIyMywgMjQ1LCAxNDMsIDY0LCAyMjEsIDE1OCwgMjU0LCAxOCwgMjQ1LCAKKyAgICA4MCwgMTM1LCAyMTcsIDkwLCAyMjAsIDEyNywgMjAzLCAyMTcsIDkwLCAyMjAsIDEyNywgMjQwLCAyMjQsIDEzNSwgMjE3LCAKKyAgICA5MCwgMiwgMjM1LCAzNSwgMjAzLCAyMTcsIDkwLCAyLCAyMzUsIDM1LCAyNDAsIDIyNSwgMjMyLCAyMTQsIDIxNywgOTAsIAorICAgIDIyMCwgMTI3LCA2NywgMjE3LCA5MCwgMjIwLCAxMjcsIDIxMiwgMTE3LCAyMjUsIDI1MywgMjMyLCAyMTQsIDI0NCwgMTQsIAorICAgIDIyNSwgMjUzLCAyMzIsIDIxNCwgMjQ2LCAxMDYsIDIyNSwgMzIsIDIyNSwgMjUzLCAyMzIsIDIxNCwgMjUyLCAxNzgsIDIyNSwgCisgICAgMjUzLCAyMzIsIDIxNCwgMjE0LCAxNjMsIDIyNSwgMjgsIDIyMywgNTAsIDIzMiwgMjE0LCAyNDQsIDE0NSwgMjIzLCA1MCwgCisgICAgMjM1LCAyNDIsIDIyMywgMzUsIDIxOSwgMTU1LCAyMjAsIDI4LCAxMDUsIDIxOSwgMTUyLCAyMTgsIDIyNSwgMjE5LCAxNTUsIAorICAgIDIyMCwgMjgsIDE1OCwgMjE5LCAxNTEsIDIxOCwgMjI0LCAyNDgsIDMxLCAyNDksIDE3OCwgMjE4LCAxMDUsIDI0OCwgMTM3LCAKKyAgICAyMjQsIDE4MywgMjE0LCAxMzIsIDExMCwgMjI0LCAxODMsIDIxNCwgMTMwLCAyMjQsIDE0OSwgMjI0LCAxODMsIDIxNCwgCisgICAgMTMyLCAxMDUsIDIyNCwgMTgzLCAyMTQsIDEyOSwgMjI0LCAxNDgsIDIyMCwgMTI4LCAyMTUsIDI0MiwgMjE4LCAxNTEsIAorICAgIDIxOCwgODksIDI1MSwgNiwgMjUwLCAxNDIsIDI1MCwgMjA5LCAyMzEsIDQzLCAyMTIsIDU5LCAyMzAsIDQzLCAyMTgsIDE1MiwgCisgICAgNjQsIDI0MiwgMTA3LCAyNTQsIDE4LCAyMTgsIDE1MiwgNjQsIDIyNCwgMTY2LCAyNTQsIDE4LCAyMTksIDIwLCAyNDUsIAorICAgIDE0MywgNjQsIDI0MiwgMTA3LCAyNTQsIDE4LCAyNDUsIDE0MywgNjQsIDIyNCwgMTY2LCAyNTQsIDE4LCAyNDUsIDEwNywgCisgICAgMjE4LCAxNTIsIDY0LCAyMTgsIDEwNSwgMjE5LCAzNSwgMjE5LCAxNTUsIDI0MiwgMTQxLCAxMzUsIDIzNSwgMTk1LCAyMjAsIAorICAgIDEwNywgMjE5LCAxNTUsIDEzNSwgMjM1LCAxOTUsIDIyMSwgMTk0LCAyNDksIDE3OCwgMjIwLCAxMzUsIDIzNSwgMTk1LCAKKyAgICAyNDksIDExMywgMjE4LCAxMDYsIDIxNiwgMjM2LCAyMTgsIDE2OCwgMjI2LCAxNjksIDIxNywgMTY3LCAyNDksIDIxOCwgCisgICAgMjI2LCAxNDIsIDIyNCwgMTg0LCAyMzEsIDQyLCAyMjUsIDE5LCAyNTQsIDUzLCAyMjQsIDE3OCwgMjQ5LCAyMTgsIDI1NCwgCisgICAgNjksIDIyOSwgMTYzLCAyMTksIDIwMCwgNywgNiwgMSwgMjQyLCAyNDksIDcsIDQsIDEsIDI0MiwgMjQ5LCAyNTAsIDE1OSwgCisgICAgMTY1LCAxLCAyMzIsIDE3NSwgMjA5LCAyMDksIDEsIDI0NCwgNDQsIDI0NCwgMzYsIDIwOSwgMjA5LCAxLCAyNDQsIDQ0LCAKKyAgICAyNDQsIDE1NywgMjA5LCAyMDksIDEsIDIyMiwgMjExLCAyMDksIDIwOSwgMSwgMjMyLCAxNTYsIDYzLCAxNjQsIDI1MSwgCisgICAgMjIzLCAyMjAsIDMsIDI0MiwgMjE1LCAyMzAsIDI0OCwgMjIzLCA0MSwgMjQzLCAyMTYsIDI0MywgMjE1LCAyNDMsIDIxNCwgCisgICAgMjMwLCA0NSwgMjA5LCAyNTEsIDIwOSwgMjUyLCAyMDksIDI1NCwgMjMyLCAxMDIsIDIyMiwgMjE5LCAyMzIsIDEwMywgMjIyLCAKKyAgICAyMjAsIDIyNSwgMjIzLCAyMzIsIDEwMSwgMjIyLCAyMTgsIDIyOCwgMTA2LCAyMzAsIDE2NSwgMjExLCAyMjksIDIxMiwgMTUsIAorICAgIDI0NSwgMTYyLCAyNDMsIDIyNiwgMjMwLCAyMjksIDIyNiwgMTk3LCAyMTQsIDEzNCwgODcsIDIzMCwgMjI5LCAyNDgsIDE1NywgCisgICAgODcsIDgsIDMsIDIzNSwgMTU4LCA3OCwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDQsIDcxLCAyMzMsIDIwLCAxMjcsIAorICAgIDIxMywgMTE4LCAyMTMsIDcsIDIxMiwgMTk1LCAyMTIsIDE4NCwgMjEyLCAxNzMsIDIxMiwgMTYyLCAyMTIsIDE1MSwgMjEyLCAKKyAgICAxNDAsIDIxMiwgMTI5LCAyMTMsIDExNywgMjEzLCAxMDYsIDIxMywgOTUsIDIxMywgODQsIDIxMywgNzMsIDIxMywgNjIsIAorICAgIDIxMywgNTEsIDI1MSwgNzEsIDIyNiwgMTU1LCA3OCwgMjUxLCAxOTYsIDIwOSwgMjUzLCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgCisgICAgMjE5LCAxMDIsIDI1MCwgNzMsIDIxNCwgOSwgMjEzLCA0MCwgMjEzLCAyOSwgMjEzLCAxOCwgMjEzLCA2LCAyMTIsIDI1MSwgCisgICAgMjEyLCAyNDAsIDIxMiwgMjI5LCAyMTIsIDIxOCwgMjEyLCAyMDcsIDIxMiwgMTk5LCAyMTIsIDE5OCwgMjEyLCAxOTcsIAorICAgIDIxMiwgMTk2LCAyMTIsIDE5NCwgMjEyLCAxOTMsIDIxMiwgMTkyLCAyMTIsIDE5MSwgMjEyLCAxOTAsIDIxMiwgMTg5LCAKKyAgICAyMTIsIDE4OCwgMjEyLCAxODcsIDIxMiwgMTg2LCAyMTIsIDE4NSwgMjEyLCAxODMsIDIxMiwgMTgyLCAyMTIsIDE4MSwgCisgICAgMjEyLCAxODAsIDIxMiwgMTc5LCAyMTIsIDE3OCwgMjEyLCAxNzcsIDIxMiwgMTc2LCAyMTIsIDE3NSwgMjEyLCAxNzQsIAorICAgIDIxMiwgMTcyLCAyMTIsIDE3MSwgMjEyLCAxNzAsIDIxMiwgMTY5LCAyMTIsIDE2OCwgMjEyLCAxNjcsIDIxMiwgMTY2LCAKKyAgICAyMTIsIDE2NSwgMjEyLCAxNjQsIDIxMiwgMTYzLCAyMTIsIDE2MSwgMjEyLCAxNjAsIDIxMiwgMTU5LCAyMTIsIDE1OCwgCisgICAgMjEyLCAxNTcsIDIxMiwgMTU2LCAyMTIsIDE1NSwgMjEyLCAxNTQsIDIxMiwgMTUzLCAyMTIsIDE1MiwgMjEyLCAxNTAsIAorICAgIDIxMiwgMTQ5LCAyMTIsIDE0OCwgMjEyLCAxNDcsIDIxMiwgMTQ2LCAyMTIsIDE0NSwgMjEyLCAxNDQsIDIxMiwgMTQzLCAKKyAgICAyMTIsIDE0MiwgMjEyLCAxNDEsIDIxMiwgMTM5LCAyMTIsIDEzOCwgMjEyLCAxMzcsIDIxMiwgMTM2LCAyMTIsIDEzNSwgCisgICAgMjEyLCAxMzQsIDIxMiwgMTMzLCAyMTIsIDEzMiwgMjEyLCAxMzEsIDIxMiwgMTMwLCAyMTIsIDEyOCwgMjEyLCAxMjcsIAorICAgIDIxMiwgMTI2LCAyMTIsIDEyNSwgMjEyLCAxMjQsIDIxMiwgMTIzLCAyMTIsIDEyMiwgMjEyLCAxMjEsIDIxMiwgMTIwLCAKKyAgICAyMTIsIDExOSwgMjEzLCAxMTYsIDIxMywgMTE1LCAyMTMsIDExNCwgMjEzLCAxMTMsIDIxMywgMTEyLCAyMTMsIDExMSwgCisgICAgMjEzLCAxMTAsIDIxMywgMTA5LCAyMTMsIDEwOCwgMjEzLCAxMDcsIDIxMywgMTA1LCAyMTMsIDEwNCwgMjEzLCAxMDMsIAorICAgIDIxMywgMTAyLCAyMTMsIDEwMSwgMjEzLCAxMDAsIDIxMywgOTksIDIxMywgOTgsIDIxMywgOTcsIDIxMywgOTYsIDIxMywgCisgICAgOTQsIDIxMywgOTMsIDIxMywgOTIsIDIxMywgOTEsIDIxMywgOTAsIDIxMywgODksIDIxMywgODgsIDIxMywgODcsIDIxMywgCisgICAgODYsIDIxMywgODUsIDIxMywgODMsIDIxMywgODIsIDIxMywgODEsIDIxMywgODAsIDIxMywgNzksIDIxMywgNzgsIDIxMywgCisgICAgNzcsIDIxMywgNzYsIDIxMywgNzUsIDIxMywgNzQsIDIxMywgNzIsIDIxMywgNzEsIDIxMywgNzAsIDIxMywgNjksIDIxMywgCisgICAgNjgsIDIxMywgNjcsIDIxMywgNjYsIDIxMywgNjUsIDIxMywgNjQsIDIxMywgNjMsIDIxMywgNjEsIDIxMywgNjAsIDIxMywgCisgICAgNTksIDIxMywgNTgsIDIxMywgNTcsIDIxMywgNTYsIDIxMywgNTUsIDIxMywgNTQsIDIxMywgNTMsIDIxMywgNTIsIDIxMywgCisgICAgNTAsIDIxMywgNDksIDIxMywgNDgsIDIxMywgNDcsIDIxMywgNDYsIDIxMywgNDUsIDIxMywgNDQsIDIxMywgNDMsIDIxMywgCisgICAgNDIsIDIxMywgNDEsIDIxMywgMzksIDIxMywgMzgsIDIxMywgMzcsIDIxMywgMzYsIDIxMywgMzUsIDIxMywgMzQsIDIxMywgCisgICAgMzMsIDIxMywgMzIsIDIxMywgMzEsIDIxMywgMzAsIDIxMywgMjgsIDIxMywgMjcsIDIxMywgMjYsIDIxMywgMjUsIDIxMywgCisgICAgMjQsIDIxMywgMjMsIDIxMywgMjIsIDIxMywgMjEsIDIxMywgMjAsIDIxMywgMTksIDIxMywgMTcsIDIxMywgMTYsIDIxMywgCisgICAgMTUsIDIxMywgMTQsIDIxMywgMTMsIDIxMywgMTIsIDIxMywgMTEsIDIxMywgMTAsIDIxMywgOSwgMjEzLCA4LCAyMTMsIDUsIAorICAgIDIxMywgNCwgMjEzLCAzLCAyMTMsIDIsIDIxMywgMSwgMjEzLCAwLCAyMTIsIDI1NSwgMjEyLCAyNTQsIDIxMiwgMjUzLCAKKyAgICAyMTIsIDI1MiwgMjEyLCAyNTAsIDIxMiwgMjQ5LCAyMTIsIDI0OCwgMjEyLCAyNDcsIDIxMiwgMjQ2LCAyMTIsIDI0NSwgCisgICAgMjEyLCAyNDQsIDIxMiwgMjQzLCAyMTIsIDI0MiwgMjEyLCAyNDEsIDIxMiwgMjM5LCAyMTIsIDIzOCwgMjEyLCAyMzcsIAorICAgIDIxMiwgMjM2LCAyMTIsIDIzNSwgMjEyLCAyMzQsIDIxMiwgMjMzLCAyMTIsIDIzMiwgMjEyLCAyMzEsIDIxMiwgMjMwLCAKKyAgICAyMTIsIDIyOCwgMjEyLCAyMjcsIDIxMiwgMjI2LCAyMTIsIDIyNSwgMjEyLCAyMjQsIDIxMiwgMjIzLCAyMTIsIDIyMiwgCisgICAgMjEyLCAyMjEsIDIxMiwgMjIwLCAyMTIsIDIxOSwgMjEyLCAyMTcsIDIxMiwgMjE2LCAyMTIsIDIxNSwgMjEyLCAyMTQsIAorICAgIDIxMiwgMjEzLCAyMTIsIDIxMiwgMjEyLCAyMTEsIDIxMiwgMjEwLCAyMTIsIDIwOSwgMjEyLCAyMDgsIDIxMiwgMjA2LCAKKyAgICAyMTIsIDIwNSwgMjEyLCAyMDQsIDIxMiwgMjAzLCAyMTIsIDIwMiwgMjEyLCAyMDEsIDIxMiwgMjAwLCA3LCA2LCAxLCAxMTUsIAorICAgIDIsIDIzMSwgMjMzLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDExNSwgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNiwgCisgICAgMSwgMTYwLCAyLCA2NywgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAxNjAsIDIsIDY3LCAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIAorICAgIDE2MCwgMiwgNjcsIDIzMiwgMjE0LCAyNTIsIDQzLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE2MCwgMiwgNjcsIDIzMiwgCisgICAgMjE0LCAyNTIsIDQzLCAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE2MCwgMiwgNjcsIDIzMiwgMjE0LCAyNTIsIDQzLCAyMiwgCisgICAgMTQyLCA3LCA0LCAxLCAxNjAsIDIsIDY3LCAyMzIsIDIxNCwgMjUyLCA0MywgMjIsIDE0MiwgNywgNiwgMSwgMTYwLCAyLCAKKyAgICAyNTAsIDMxLCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDIzMSwgMjMyLCA3LCA2LCAxLCAKKyAgICAxNjAsIDIsIDI1MCwgMzEsIDIyLCAyNTAsIDIzNCwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgMjUwLCAyMzQsIDcsIAorICAgIDYsIDEsIDI0MCwgMTU0LCAyLCAyMzEsIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjMxLCAKKyAgICAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDU5LCA3NywgMjIsIDE0MiwgNywgNCwgMSwgMjI5LCAKKyAgICA4MCwgMiwgMjE2LCA4OSwgNDgsIDcsIDYsIDEsIDE0NCwgMiwgNjcsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMTQ0LCAyLCAKKyAgICA2NywgMjMyLCAyMTQsIDUxLCA3LCA2LCAxLCAxNDQsIDIsIDY3LCAyMzIsIDIxNCwgMjUyLCA0MywgMjIsIDI0MiwgMTM2LCAKKyAgICA3LCA0LCAxLCAxNDQsIDIsIDY3LCAyMzIsIDIxNCwgMjUyLCA0MywgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxNDQsIDIsIAorICAgIDY3LCAyMzIsIDIxNCwgMjUyLCA0MywgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCA2NywgMjMyLCAyMTQsIDI1MiwgNDMsIAorICAgIDIyLCAxNDIsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDY3LCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDY3LCAKKyAgICAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTA0LCAyLCAKKyAgICAyMzEsIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxMTUsIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA0LCAxLCAxMTUsIAorICAgIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA2LCAxLCAxMTUsIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCA3LCA0LCAxLCAxMTUsIAorICAgIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCA3LCA2LCAxLCAxNjAsIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA0LCAxLCAxNjAsIAorICAgIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCA3LCA0LCAxLCAxNjAsIAorICAgIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCA3LCA2LCAxLCAxNjAsIDIsIDU5LCA3NywgMjIsIDE0MiwgNywgNCwgMSwgMTYwLCAyLCAKKyAgICA1OSwgNzcsIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgNTksIDc3LCAyMiwgMTgyLCA3LCA0LCAxLCAxNjAsIDIsIDU5LCAKKyAgICA3NywgMjIsIDE4MiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDU5LCA3NywgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyNDAsIAorICAgIDE1NCwgMiwgNTksIDc3LCAyMiwgMTgyLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMjI2LCAyMjUsIDIyLCAxNDIsIDcsIDQsIAorICAgIDEsIDI0MCwgMTU0LCAyLCAyMjYsIDIyNSwgMjIsIDU5LCA3NywgMjIsIDE0MiwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDIyNiwgCisgICAgMjI1LCAyMiwgMTgyLCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjI2LCAyMjUsIDIyLCA1OSwgNzcsIDIyLCAxODIsIDcsIDYsIAorICAgIDEsIDIzNSwgMTQ1LCAyLCAxODIsIDcsIDQsIDEsIDIzNSwgMTQ1LCAyLCA1OSwgNzcsIDIyLCAxODIsIDcsIDYsIDEsIDIzMywgCisgICAgMTQ5LCAyLCAxODIsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAxODIsIDcsIDYsIDEsIDIzMiwgNTAsIDIsIDE4MiwgNywgNCwgCisgICAgMSwgMjMyLCA1MCwgMiwgMTgyLCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgMTgyLCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMTgyLCAKKyAgICA3LCA2LCAxLCAxMDQsIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCAKKyAgICA3LCA2LCAxLCAxMDQsIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCA3LCA0LCAxLCAxMDQsIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCAKKyAgICA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgMTQyLCAKKyAgICA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgMTgyLCA3LCA0LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgMTgyLCAKKyAgICA3LCA0LCAxLCAyNTQsIDI0NCwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIwNCwgMTQ0LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgCisgICAgMjA0LCAxNDQsIDIsIDE0MiwgNywgNCwgMSwgMjE1LCA5NCwgMjE0LCAxMDYsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyMTUsIAorICAgIDk0LCAyMTQsIDEwNiwgMiwgMTQyLCA3LCA0LCAxLCAyMjEsIDE5NiwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIyMSwgMTk2LCAKKyAgICAyLCAxNDIsIDcsIDQsIDEsIDI0MSwgNTEsIDIyMSwgMTk2LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjQxLCA1MSwgMjIxLCAKKyAgICAxOTYsIDIsIDE0MiwgMTQ2LCAxLCAyMzQsIDEwOSwgMzYsIDExNiwgMjM1LCAyMywgMzYsIDExNiwgMjI5LCA3OSwgMzYsIAorICAgIDExNiwgMjUxLCA2NiwgMzYsIDExNiwgMjI3LCAxNjcsIDM2LCAxMTYsIDIxNSwgMTU5LCAzNiwgMTE2LCAyMjgsIDExMSwgCisgICAgMzYsIDExNiwgMjE3LCAxNTIsIDM2LCAxMTYsIDIzMCwgMjUsIDM2LCAxMTYsIDIyNiwgMTA1LCAzNiwgMTE2LCAxOTMsIDM2LCAKKyAgICAxMTYsIDIxMSwgMTE3LCAzNiwgMTE2LCAxNTMsIDM2LCAxMTYsIDE1NiwgMzYsIDExNiwgMjE0LCAxMDUsIDM2LCAxMTYsIAorICAgIDIzMiwgMTc2LCAzNiwgMTE2LCAyMzIsIDE4NSwgMzYsIDExNiwgMjIyLCAxODAsIDM2LCAxMTYsIDIyOCwgOTMsIDM2LCAKKyAgICAxMTYsIDIzNSwgMTQ0LCAzNiwgMTE2LCAyMjAsIDEwNCwgMzYsIDExNiwgMjE4LCAyMjYsIDM2LCAxMTYsIDIyMiwgOTEsIAorICAgIDM2LCAxMTYsIDI0MiwgNjAsIDM2LCAxMTYsIDIzMywgMjMyLCAzNiwgMywgMjM1LCAxMCwgMzYsIDMsIDIzNCwgOTIsIDM2LCAKKyAgICAzLCAyMzQsIDgzLCAzNiwgMywgMjMzLCAyMTcsIDM2LCAzLCAyMzMsIDE4OCwgMzYsIDMsIDIzNCwgMTgyLCAzNiwgMywgCisgICAgMjM0LCAxODEsIDM2LCAzLCAyMzQsIDI0NiwgMzYsIDMsIDIzNCwgMjgsIDM2LCAzLCAyMzQsIDEwLCAzNiwgMywgMjM0LCAKKyAgICAxOTUsIDM2LCAzLCAyMjksIDc2LCAzNiwgMywgMjI5LCAyNywgMzYsIDMsIDIyOSwgMjMsIDM2LCAzLCAyMjgsIDI0OCwgMzYsIAorICAgIDMsIDIyOCwgMjQxLCAzNiwgMywgMjI5LCA2NCwgMzYsIDMsIDIyOSwgNjIsIDM2LCAzLCAyMjksIDczLCAzNiwgMywgMjI5LCAKKyAgICA0LCAzNiwgMywgMjI4LCAyNTUsIDM2LCAzLCAyMjksIDY2LCAzNiwgMywgMjUxLCAzMiwgMzYsIDMsIDI1MCwgNTEsIDM2LCAKKyAgICAzLCAyNTAsIDQxLCAzNiwgMywgMjQ5LCAxMTIsIDM2LCAzLCAyNDksIDgzLCAzNiwgMywgMjUwLCAxOTAsIDM2LCAzLCAyNTAsIAorICAgIDE4MiwgMzYsIDMsIDI1MSwgMjIsIDM2LCAzLCAyNDksIDIzOCwgMzYsIDMsIDI0OSwgMTc0LCAzNiwgMywgMjUwLCAyMjIsIAorICAgIDM2LCAzLCAyMjcsIDE2NCwgMzYsIDMsIDIyNywgMTQ4LCAzNiwgMywgMjI3LCAxNDMsIDM2LCAzLCAyMjcsIDEyOCwgMzYsIAorICAgIDMsIDIyNywgMTIxLCAzNiwgMywgMjI3LCAxNTYsIDM2LCAzLCAyMjcsIDE1NSwgMzYsIDMsIDIyNywgMTYxLCAzNiwgMywgCisgICAgMjI3LCAxMzQsIDM2LCAzLCAyMjcsIDEzMiwgMzYsIDMsIDIyNywgMTU5LCAzNiwgMywgMjE1LCAxNTUsIDM2LCAzLCAyMTUsIAorICAgIDEzNSwgMzYsIDMsIDIxNSwgMTM0LCAzNiwgMywgMjE1LCAxMjMsIDM2LCAzLCAyMTUsIDEyMCwgMzYsIDMsIDIxNSwgMTUxLCAKKyAgICAzNiwgMywgMjE1LCAxNTAsIDM2LCAzLCAyMTUsIDE1NCwgMzYsIDMsIDIxNSwgMTMzLCAzNiwgMywgMjE1LCAxMzIsIDM2LCAKKyAgICAzLCAyMTUsIDE1MywgMzYsIDMsIDIyOCwgMTA5LCAzNiwgMywgMjI4LCA5NSwgMzYsIDMsIDIyOCwgOTQsIDM2LCAzLCAyMjgsIAorICAgIDc4LCAzNiwgMywgMjI4LCA3NywgMzYsIDMsIDIyOCwgMTA1LCAzNiwgMywgMjI4LCAxMDQsIDM2LCAzLCAyMjgsIDEwOCwgCisgICAgMzYsIDMsIDIyOCwgODAsIDM2LCAzLCAyMjgsIDc5LCAzNiwgMywgMjI4LCAxMDcsIDM2LCAzLCAyMTcsIDEwMSwgMzYsIDMsIAorICAgIDIxNiwgMTE3LCAzNiwgMywgMjE2LCAxMDMsIDM2LCAzLCAyMTUsIDExOCwgMzYsIDMsIDIxNSwgODUsIDM2LCAzLCAyMTcsIAorICAgIDIyLCAzNiwgMywgMjE3LCAxMSwgMzYsIDMsIDIxNywgNzksIDM2LCAzLCAxMTEsIDM2LCAzLCAyMTYsIDE3LCAzNiwgMywgCisgICAgMjE3LCA0MSwgMzYsIDMsIDIyOSwgMjI1LCAzNiwgMywgMjI4LCAyMzMsIDM2LCAzLCAyMjgsIDIwOCwgMzYsIDMsIDIyNywgCisgICAgMjM3LCAzNiwgMywgMjI3LCAxNzksIDM2LCAzLCAyMjksIDEwNywgMzYsIDMsIDIyOSwgMTAzLCAzNiwgMywgMjI5LCAyMTIsIAorICAgIDM2LCAzLCAyMjgsIDc0LCAzNiwgMywgMjI4LCA2NCwgMzYsIDMsIDIyOSwgMTg3LCAzNiwgMywgMjI2LCA4OSwgMzYsIDMsIAorICAgIDIyNSwgMTA4LCAzNiwgMywgMjI1LCA3MSwgMzYsIDMsIDIyNCwgMTUwLCAzNiwgMywgMjI0LCAxMTksIDM2LCAzLCAyMjUsIAorICAgIDIyMSwgMzYsIDMsIDIyNSwgMjExLCAzNiwgMywgMjI2LCA3MSwgMzYsIDMsIDIyNSwgMTYsIDM2LCAzLCAyMjQsIDI0OSwgCisgICAgMzYsIDMsIDIyNSwgMjM0LCAzNiwgMywgMjMxLCAyMzcsIDM2LCAzLCAyMzAsIDIzMCwgMzYsIDMsIDIzMCwgMjAxLCAzNiwgCisgICAgMywgMjMwLCAxMDIsIDM2LCAzLCAyMzAsIDU0LCAzNiwgMywgMjMxLCA5MSwgMzYsIDMsIDIzMSwgODAsIDM2LCAzLCAyMzEsIAorICAgIDIwMywgMzYsIDMsIDIzMCwgMTYxLCAzNiwgMywgMjMwLCAxMzIsIDM2LCAzLCAyMzEsIDEzNSwgMzYsIDMsIDIxMSwgMTAzLCAKKyAgICAzNiwgMywgMjExLCA4LCAzNiwgMywgMjEwLCAyNTUsIDM2LCAzLCAyMTAsIDIxMiwgMzYsIDMsIDIxMCwgMTgxLCAzNiwgMywgCisgICAgMjExLCA0NywgMzYsIDMsIDIxMSwgNDQsIDM2LCAzLCAyMTEsIDgyLCAzNiwgMywgMjEwLCAyNDQsIDM2LCAzLCAyMTAsIAorICAgIDIyOSwgMzYsIDMsIDIxMSwgNTUsIDM2LCAzLCAyMjMsIDE4NCwgMzYsIDMsIDIyMywgMzUsIDM2LCAzLCAyMjIsIDIzOSwgCisgICAgMzYsIDMsIDIyMiwgMTQwLCAzNiwgMywgMjIyLCAxMTIsIDM2LCAzLCAyMjMsIDEyOCwgMzYsIDMsIDIyMywgMTA4LCAzNiwgCisgICAgMywgMjIzLCAxNjYsIDM2LCAzLCAyMjIsIDIxMSwgMzYsIDMsIDIyMiwgMTk3LCAzNiwgMywgMjIzLCAxMzYsIDM2LCAzLCAKKyAgICAyMzMsIDEzNCwgMzYsIDMsIDIzMiwgMjQxLCAzNiwgMywgMjMyLCAyMjcsIDM2LCAzLCAyMzIsIDk4LCAzNiwgMywgMjMyLCAKKyAgICA3MywgMzYsIDMsIDIzMywgNTgsIDM2LCAzLCAyMzMsIDUwLCAzNiwgMywgMjMzLCAxMDksIDM2LCAzLCAyMzIsIDE1NiwgMzYsIAorICAgIDMsIDIzMiwgMTI3LCAzNiwgMywgMjMzLCA3NCwgMzYsIDMsIDIxNCwgMjYsIDM2LCAzLCAyMTMsIDE3NiwgMzYsIDMsIDIxMywgCisgICAgMTYyLCAzNiwgMywgMjEyLCAxMTYsIDM2LCAzLCAyMTIsIDEwOSwgMzYsIDMsIDIxMywgMjU1LCAzNiwgMywgMjEzLCAyNTAsIAorICAgIDM2LCAzLCAyMTQsIDIzLCAzNiwgMywgMjEzLCAxMzgsIDM2LCAzLCAyMTMsIDEyNywgMzYsIDMsIDIxNCwgNSwgMzYsIDMsIAorICAgIDIzMiwgMTc0LCAzNiwgMywgMjMyLCAxNjksIDM2LCAzLCAyMzIsIDE2OCwgMzYsIDMsIDIzMiwgMTY1LCAzNiwgMywgMjMyLCAKKyAgICAxNjQsIDM2LCAzLCAyMzIsIDE3MSwgMzYsIDMsIDIzMiwgMTcwLCAzNiwgMywgMjMyLCAxNzMsIDM2LCAzLCAyMzIsIDE2NywgCisgICAgMzYsIDMsIDIzMiwgMTY2LCAzNiwgMywgMjMyLCAxNzIsIDM2LCAzLCAyMzIsIDE4MywgMzYsIDMsIDIzMiwgMTc4LCAzNiwgCisgICAgMywgMjMyLCAxNzcsIDM2LCAzLCAyMzIsIDE2MSwgMzYsIDMsIDIzMiwgMTYwLCAzNiwgMywgMjMyLCAxODAsIDM2LCAzLCAKKyAgICAyMzIsIDE3OSwgMzYsIDMsIDIzMiwgMTgyLCAzNiwgMywgMjMyLCAxNjMsIDM2LCAzLCAyMzIsIDE2MiwgMzYsIDMsIDIzMiwgCisgICAgMTgxLCAzNiwgMywgMjIyLCAxNzgsIDM2LCAzLCAyMjIsIDE2NywgMzYsIDMsIDIyMiwgMTY2LCAzNiwgMywgMjIyLCAxNjAsIAorICAgIDM2LCAzLCAyMjIsIDE1MywgMzYsIDMsIDIyMiwgMTc0LCAzNiwgMywgMjIyLCAxNzMsIDM2LCAzLCAyMjIsIDE3NywgMzYsIAorICAgIDMsIDIyMiwgMTY1LCAzNiwgMywgMjIyLCAxNjQsIDM2LCAzLCAyMjIsIDE3NiwgMzYsIDMsIDIyOCwgOTEsIDM2LCAzLCAKKyAgICAyMjgsIDg2LCAzNiwgMywgMjI4LCA4NSwgMzYsIDMsIDIyOCwgODIsIDM2LCAzLCAyMjgsIDgxLCAzNiwgMywgMjI4LCA4OCwgCisgICAgMzYsIDMsIDIyOCwgODcsIDM2LCAzLCAyMjgsIDkwLCAzNiwgMywgMjI4LCA4NCwgMzYsIDMsIDIyOCwgODMsIDM2LCAzLCAKKyAgICAyMjgsIDg5LCAzNiwgMywgMjM1LCAxNDAsIDM2LCAzLCAyMzUsIDEwOCwgMzYsIDMsIDIzNSwgMTAxLCAzNiwgMywgMjM1LCAKKyAgICA1MSwgMzYsIDMsIDIzNSwgMzMsIDM2LCAzLCAyMzUsIDEyNiwgMzYsIDMsIDIzNSwgMTI0LCAzNiwgMywgMjM1LCAxMzUsIAorICAgIDM2LCAzLCAyMzUsIDY4LCAzNiwgMywgMjM1LCA1OSwgMzYsIDMsIDIzNSwgMTI5LCAzNiwgMywgMjIwLCA5OCwgMzYsIDMsIAorICAgIDIyMCwgMzIsIDM2LCAzLCAyMjAsIDI3LCAzNiwgMywgMjE5LCAyMjUsIDM2LCAzLCAyMTksIDIxMCwgMzYsIDMsIDIyMCwgCisgICAgNjMsIDM2LCAzLCAyMjAsIDYxLCAzNiwgMywgMjIwLCA5MCwgMzYsIDMsIDIyMCwgNywgMzYsIDMsIDIyMCwgMSwgMzYsIDMsIAorICAgIDIyMCwgNzEsIDM2LCAzLCAyMTgsIDIyMiwgMzYsIDMsIDIxOCwgMTkyLCAzNiwgMywgMjE4LCAxODgsIDM2LCAzLCAyMTgsIAorICAgIDE3OSwgMzYsIDMsIDIxOCwgMTc2LCAzNiwgMywgMjE4LCAxOTcsIDM2LCAzLCAyMTgsIDE5NiwgMzYsIDMsIDIxOCwgMjIxLCAKKyAgICAzNiwgMywgMjE4LCAxODQsIDM2LCAzLCAyMTgsIDE4MywgMzYsIDMsIDIxOCwgMTk5LCAzNiwgMywgMjIyLCAzMSwgMzYsIDMsIAorICAgIDIxOSwgMTkxLCAzNiwgMywgMjE5LCAxNzUsIDM2LCAzLCAyMTgsIDgzLCAzNiwgMywgMjE4LCA0LCAzNiwgMywgMjIxLCAKKyAgICAxODEsIDM2LCAzLCAyMjEsIDE3MCwgMzYsIDMsIDIyMiwgMTcsIDM2LCAzLCAyMTksIDU4LCAzNiwgMywgMjE5LCA0MCwgMzYsIAorICAgIDMsIDIyMSwgMjE5LCAzNiwgMywgMjQyLCA0NiwgMzYsIDMsIDI0MSwgMTgwLCAzNiwgMywgMjQxLCAxNjEsIDM2LCAzLCAKKyAgICAyNDAsIDIyMiwgMzYsIDMsIDI0MCwgMjAyLCAzNiwgMywgMjQxLCAyMzgsIDM2LCAzLCAyNDEsIDIyMCwgMzYsIDMsIDI0MiwgCisgICAgMzYsIDM2LCAzLCAyNDEsIDY4LCAzNiwgMywgMjQxLCA1MywgMzYsIDMsIDI0MSwgMjQ2LCAzNiwgMywgMjMzLCAyMzEsIDM2LCAKKyAgICAzLCAyMzMsIDIzMCwgMzYsIDMsIDIzMywgMjI1LCAzNiwgMywgMjMzLCAyMjQsIDM2LCAzLCAyMzMsIDIyMSwgMzYsIDMsIAorICAgIDIzMywgMjIwLCAzNiwgMywgMjMzLCAyMjcsIDM2LCAzLCAyMzMsIDIyNiwgMzYsIDMsIDIzMywgMjI5LCAzNiwgMywgMjMzLCAKKyAgICAyMjMsIDM2LCAzLCAyMzMsIDIyMiwgMzYsIDMsIDIzMywgMjI4LCAzNiwgMywgMjE5LCAyMzEsIDE3NSwgMTE2LCA1LCAyMTEsIAorICAgIDY4LCAxNzUsIDExNiwgNSwgMjIzLCAxNTUsIDE3NSwgMTE2LCA1LCAyMjMsIDc4LCA5OCwgMSwgMjE1LCAyOCwgNjksIDExNiwgCisgICAgNSwgMjQ5LCAyMzMsIDE3NiwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIzNCwgMTMyLCA2OSwgMTE2LCA1LCAyNDksIDIzMywgCisgICAgMjM0LCAyOCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIzNCwgMTA1LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjI5LCA0LCAKKyAgICA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjUxLCAzMywgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDI1MCwgMTU3LCA2OSwgMTE2LCAKKyAgICA1LCAyNDksIDIzMywgMjQ5LCAyMzgsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyNTAsIDg2LCA2OSwgMTE2LCA1LCAyNDksIAorICAgIDIzMywgMjI3LCAxMzQsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyNDgsIDIyMSwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIxNSwgCisgICAgMTQ0LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjQ3LCAxNDUsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMTUsIDEzOSwgNjksIAorICAgIDExNiwgNSwgMjQ5LCAyMzMsIDE5NywgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIxNywgMTA1LCA2OSwgMTE2LCA1LCAyNDksIAorICAgIDIzMywgMjE2LCAyMDgsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAxMTEsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMTYsIDE1NiwgCisgICAgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIyOCwgNzQsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyNTIsIDE5MSwgNjksIDExNiwgCisgICAgNSwgMjQ5LCAyMzMsIDIyNSwgMTQ3LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjI1LCAxNiwgNjksIDExNiwgNSwgMjQ5LCAKKyAgICAyMzMsIDIyNSwgMTIxLCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjMwLCAxNjEsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMTAsIAorICAgIDI0NCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIyMiwgMjExLCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjMyLCAxNTYsIDY5LCAKKyAgICAxMTYsIDUsIDI0OSwgMjMzLCAyMTMsIDEzOCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIyMCwgMTAyLCA2OSwgMTE2LCA1LCAKKyAgICAyNDksIDIzMywgMjE4LCAyMjMsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMDYsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAxNjIsIAorICAgIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMzMsIDEzNSwgNjksIDI1LCA1LCAyNDksIDIzMywgMjI0LCA4OCwgNjksIDIzNSwgCisgICAgMjQzLCAyNSwgNSwgMjQ5LCAyMzMsIDIyNCwgMzAsIDY5LCAyMzUsIDI0MywgMjUsIDUsIDI0OSwgMjMzLCAyMjIsIDEwMCwgCisgICAgNjksIDIzNSwgMjQzLCAyNSwgNSwgMjQ5LCAyMzMsIDIyMiwgOTMsIDY5LCAyMzUsIDI0MywgMjUsIDUsIDI0OSwgMjMzLCAKKyAgICAyMjQsIDY5LCA2OSwgMjUsIDUsIDIyNiwgMjA0LCA2OSwgMjUsIDUsIDI1NSwgMzQsIDE0MSwgMSwgMjUxLCAyNTUsIDIyOSwgCisgICAgNzcsIDE0MSwgMSwgMjUxLCAyNTUsIDIyOSwgMjcsIDE0MSwgMSwgMjUxLCAyNTUsIDIyOCwgMjQ4LCAxNDEsIDEsIDI1MSwgCisgICAgMjU1LCAyMjksIDY0LCAxNDEsIDEsIDI1MSwgMjU1LCAyMjksIDQsIDU2LCAxLCAyNTEsIDI1NSwgMjI5LCA3NywgNTYsIDEsIAorICAgIDI1MSwgMjU1LCAyMjksIDI3LCA1NiwgMSwgMjUxLCAyNTUsIDIyOCwgMjQ4LCA1NiwgMSwgMjUxLCAyNTUsIDIyOSwgNjQsIAorICAgIDU2LCAxLCAyNTEsIDI1NSwgMjI5LCA0LCA1NiwgMSwgMjU0LCAxOTQsIDI1MCwgMTkwLCA1NiwgMSwgMjU0LCAxOTQsIDIxNSwgCisgICAgMTE4LCA1NiwgMSwgMjU0LCAxOTQsIDExMSwgNTYsIDEsIDI1NCwgMTk0LCAyMjYsIDEwNSwgNTgsIDEsIDI0NSwgMjAsIAorICAgIDI0NSwgMTksIDI0OSwgMTgyLCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMTksIDI0NSwgMjAsIDI0OSwgMTgyLCAxMzgsIDEzMCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgY2hhciBwaHJhc2Vib29rX29mZnNldDFbXSA9IHsKQEAgLTEzMTI3LDQ4NyArMTM4MjQsNDg4IEBACiAgICAgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgCiAgICAgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgCiAgICAgNTcsIDU4LCA1OSwgNjAsIDYxLCA2MiwgNjMsIDY0LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgCi0gICAgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgMTcsIDg3LCA4OCwgODksIDkwLCA5MSwgCi0gICAgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxMDMsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTA0LCAxMDUsIDEwNiwgMTA3LCAxMDgsIAotICAgIDEwOSwgMTEwLCAxMTEsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAxMTcsIDExOCwgMTE5LCAxMjAsIDEyMSwgMTIyLCAKLSAgICAxMjMsIDEyNCwgMTI1LCAxMjYsIDEyNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTI4LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxMjksIDEzMCwgCi0gICAgMTMxLCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIAotICAgIDE0NSwgMTQ2LCAxNywgMTQ3LCAxNDgsIDE0OSwgMTUwLCAxNTEsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE1MiwgMTcsIAotICAgIDE1MywgMTcsIDE1NCwgMTcsIDE1NSwgMTcsIDE1NiwgMTcsIDE3LCAxNywgMTU3LCAxNywgMTcsIDE3LCAxNTgsIDE1OSwgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTYwLCAxNjEsIDE2MiwgMTYzLCAxNjQsIAotICAgIDE2NSwgMTY2LCAxNywgMTY3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE2OCwgMTY5LCAxNzAsIDE3MSwgMTcyLCAxNzMsIAotICAgIDE3NCwgMTc1LCAxNzYsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNzcsIAotICAgIDE3OCwgMTc5LCAxODAsIDE4MSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE4MiwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTgzLCAxODQsIDE4NSwgMTg2LCAxODcsIDE3LCAxODgsIAotICAgIDE3LCAxODksIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTk3LCAxOTgsIDE5OSwgMjAwLCAyMDEsIDE3LCAyMDIsIDIwMywgMjA0LCAyMDUsIDIwNiwgCi0gICAgMjA3LCAyMDgsIDIwOSwgMjEwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAyMTEsIDIxMiwgMjEzLCAKLSAgICAyMTQsIDIxNSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMjE2LCAxNywgMjE3LCAyMTgsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCisgICAgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTAsIDkxLCA5MiwgCisgICAgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTA0LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDEwNSwgMTA2LCAxMDcsIDEwOCwgMTA5LCAKKyAgICAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLCAxMjIsIDEyMywgCisgICAgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjgsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDEyOSwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTMwLCAxMzEsIAorICAgIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgMTQ1LCAKKyAgICAxNDYsIDE0NywgODcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMTUyLCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxNTMsIDg3LCAKKyAgICAxNTQsIDE1NSwgMTU2LCA4NywgMTU3LCA4NywgMTU4LCA4NywgODcsIDg3LCAxNTksIDg3LCA4NywgODcsIDE2MCwgMTYxLCAKKyAgICAxNjIsIDE2MywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTY0LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxNjUsIDE2NiwgMTY3LCAxNjgsIAorICAgIDE2OSwgMTcwLCAxNzEsIDg3LCAxNzIsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTczLCAxNzQsIDE3NSwgMTc2LCAxNzcsIDE3OCwgCisgICAgMTc5LCAxODAsIDE4MSwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE4MiwgCisgICAgMTgzLCAxODQsIDE4NSwgMTg2LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxODcsIDE4OCwgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICAxODksIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCA4NywgMTk1LCAKKyAgICA4NywgMTk2LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgMjA0LCAyMDUsIDg3LCA4NywgMjA2LCAyMDcsIDIwOCwgMjA5LCAyMTAsIDg3LCAyMTEsIDIxMiwgMjEzLCAyMTQsIAorICAgIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAyMjAsIDIyMSwgCisgICAgMjIyLCAyMjMsIDIyNCwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMjI1LCA4NywgMjI2LCAyMjcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCAyMjgsIDIyOSwgMjMwLCAyMzEsIDIzMiwgMjMzLCAyMzQsIDIzNSwgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgcGhyYXNlYm9va19vZmZzZXQyW10gPSB7CkBAIC0xMzYxNSwyODAzICsxNDMxMywzMDE1IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMywgNiwgOSwgMTEsIDE0LCAxNywgMTksIDIxLCAyNCwgMjcsIDI5LCAzMSwgCiAgICAgMzMsIDM1LCAzOSwgNDEsIDQ0LCA0NiwgNDgsIDUwLCA1MiwgNTQsIDU2LCA1OCwgNjAsIDYyLCA2NCwgNjYsIDY5LCA3MiwgCiAgICAgNzUsIDc4LCA4MiwgODYsIDkxLCA5NiwgMTAxLCAxMDUsIDExMCwgMTE1LCAxMjAsIDEyNCwgMTI5LCAxMzQsIDEzOCwgMTQyLCAKLSAgICAxNDYsIDE1MCwgMTU1LCAxNjAsIDE2NCwgMTY4LCAxNzMsIDE3NywgMTgyLCAxODcsIDE5MiwgMTk3LCAyMDIsIDIwNSwgCi0gICAgMjA5LCAyMTIsIDIxNiwgMjE5LCAyMjMsIDIyNywgMjMyLCAyMzcsIDI0MiwgMjQ2LCAyNTEsIDI1NiwgMjYxLCAyNjUsIAotICAgIDI3MCwgMjc1LCAyNzksIDI4MywgMjg3LCAyOTEsIDI5NiwgMzAxLCAzMDUsIDMwOSwgMzE0LCAzMTgsIDMyMywgMzI4LCAKLSAgICAzMzMsIDMzOCwgMzQzLCAzNDcsIDM1MCwgMzU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTYsIDM2MCwgMzY1LCAKLSAgICAzNjgsIDM3MSwgMzc0LCAzNzcsIDM4MCwgMzgzLCAzODUsIDM4OCwgMzk0LCA0MDIsIDQwNSwgNDA5LCA0MTIsIDQxNCwgCi0gICAgNDE3LCA0MjAsIDQyMywgNDI2LCA0MzAsIDQzMywgNDM2LCA0NDAsIDQ0MiwgNDQ1LCA0NTEsIDQ1OSwgNDY2LCA0NzMsIAotICAgIDQ4MCwgNDg1LCA0OTIsIDQ5OCwgNTA1LCA1MTIsIDUxOSwgNTI3LCA1MzIsIDU0MCwgNTQ3LCA1NTMsIDU2MCwgNTY3LCAKLSAgICA1NzUsIDU4MiwgNTkwLCA1OTgsIDYwMywgNjExLCA2MTgsIDYyNCwgNjMxLCA2MzgsIDY0NSwgNjQ4LCA2NTQsIDY2MSwgCi0gICAgNjY3LCA2NzQsIDY4MSwgNjg4LCA2OTMsIDY5OSwgNzA2LCA3MTIsIDcxOSwgNzI2LCA3MzMsIDc0MSwgNzQ2LCA3NTQsIAotICAgIDc2MSwgNzY3LCA3NzQsIDc4MSwgNzg5LCA3OTYsIDgwNCwgODEyLCA4MTcsIDgyNSwgODMyLCA4MzgsIDg0NSwgODUyLCAKLSAgICA4NTksIDg2MiwgODY4LCA4NzUsIDg4MSwgODg4LCA4OTUsIDkwMiwgOTA3LCA5MTUsIDkyMiwgOTI5LCA5MzYsIDk0MywgCi0gICAgOTUwLCA5NTcsIDk2NCwgOTcxLCA5NzksIDk4NywgOTk1LCAxMDAzLCAxMDExLCAxMDE5LCAxMDI3LCAxMDM1LCAxMDQyLCAKLSAgICAxMDQ5LCAxMDU2LCAxMDYzLCAxMDcwLCAxMDc3LCAxMDg0LCAxMDkxLCAxMDk4LCAxMTA1LCAxMTEyLCAxMTE5LCAxMTI3LCAKLSAgICAxMTM1LCAxMTQzLCAxMTUxLCAxMTU5LCAxMTY3LCAxMTc1LCAxMTgzLCAxMTkxLCAxMTk5LCAxMjA2LCAxMjEzLCAxMjIxLCAKLSAgICAxMjI5LCAxMjM3LCAxMjQ1LCAxMjUzLCAxMjYxLCAxMjY5LCAxMjc3LCAxMjg1LCAxMjkxLCAxMjk2LCAxMzAxLCAxMzA5LCAKLSAgICAxMzE3LCAxMzI1LCAxMzMzLCAxMzM4LCAxMzQ1LCAxMzUyLCAxMzYwLCAxMzY4LCAxMzc2LCAxMzg0LCAxMzk0LCAxNDA0LCAKLSAgICAxNDExLCAxNDE4LCAxNDI1LCAxNDMyLCAxNDQwLCAxNDQ4LCAxNDU2LCAxNDY0LCAxNDc1LCAxNDgwLCAxNDg1LCAxNDkyLCAKLSAgICAxNDk5LCAxNTA2LCAxNTEzLCAxNTIwLCAxNTI3LCAxNTMyLCAxNTM3LCAxNTQ0LCAxNTUxLCAxNTU5LCAxNTY3LCAxNTc1LCAKLSAgICAxNTgzLCAxNTkwLCAxNTk3LCAxNjA1LCAxNjEzLCAxNjIxLCAxNjI5LCAxNjM3LCAxNjQ1LCAxNjUzLCAxNjYxLCAxNjY5LCAKLSAgICAxNjc3LCAxNjg0LCAxNjkxLCAxNjk4LCAxNzA1LCAxNzEyLCAxNzE5LCAxNzI2LCAxNzMzLCAxNzQxLCAxNzQ5LCAxNzU2LCAKLSAgICAxNzYzLCAxNzcwLCAxNzc3LCAxNzg1LCAxNzkzLCAxODAxLCAxODA5LCAxODE3LCAxODI0LCAxODMxLCAxODM5LCAxODQ3LCAKLSAgICAxODU1LCAxODYzLCAxODY4LCAxODc0LCAxODgwLCAxODg3LCAxODk0LCAxODk5LCAxOTA0LCAxOTEwLCAxOTE3LCAxOTI0LCAKLSAgICAxOTMxLCAxOTM4LCAxOTQ2LCAxOTU0LCAxOTYxLCAxOTY3LCAxOTcyLCAxOTc4LCAxOTg1LCAxOTkyLCAxOTk5LCAyMDA0LCAKLSAgICAyMDA5LCAyMDE0LCAyMDIxLCAyMDI4LCAyMDM1LCAyMDQyLCAyMDQ5LCAyMDU1LCAyMDYzLCAyMDczLCAyMDgyLCAyMDg5LCAKLSAgICAyMDk2LCAyMTAxLCAyMTA2LCAyMTEzLCAyMTIwLCAyMTI0LCAyMTI5LCAyMTM0LCAyMTM5LCAyMTQ3LCAyMTU2LCAyMTYzLCAKLSAgICAyMTcwLCAyMTc5LCAyMTg2LCAyMTkzLCAyMTk4LCAyMjA1LCAyMjEyLCAyMjE5LCAyMjI2LCAyMjMzLCAyMjM4LCAyMjQ1LCAKLSAgICAyMjUyLCAyMjYwLCAyMjY1LCAyMjcwLCAyMjc1LCAyMjg1LCAyMjg5LCAyMjk1LCAyMzAxLCAyMzA3LCAyMzEzLCAyMzIxLCAKLSAgICAyMzM0LCAyMzQyLCAyMzQ3LCAyMzU3LCAyMzYyLCAyMzY3LCAyMzc3LCAyMzgyLCAyMzg5LCAyMzk2LCAyNDA0LCAyNDEyLCAKLSAgICAyNDE5LCAyNDI2LCAyNDMzLCAyNDQwLCAyNDUwLCAyNDYwLCAyNDY5LCAyNDc4LCAyNDg4LCAyNDk4LCAyNTA4LCAyNTE4LCAKLSAgICAyNTI0LCAyNTM0LCAyNTQ0LCAyNTU0LCAyNTY0LCAyNTcyLCAyNTgwLCAyNTg3LCAyNTk0LCAyNjAyLCAyNjEwLCAyNjE4LCAKLSAgICAyNjI2LCAyNjMzLCAyNjQwLCAyNjUwLCAyNjYwLCAyNjY4LCAyNjc2LCAyNjg0LCAyNjg5LCAyNjk5LCAyNzA0LCAyNzExLCAKLSAgICAyNzE4LCAyNzIzLCAyNzI4LCAyNzM2LCAyNzQ0LCAyNzU0LCAyNzY0LCAyNzcxLCAyNzc4LCAyNzg3LCAyNzk2LCAyODA0LCAKLSAgICAyODEyLCAyODIxLCAyODMwLCAyODM4LCAyODQ2LCAyODU1LCAyODY0LCAyODczLCAyODgyLCAyODkyLCAyOTAyLCAyOTEwLCAKLSAgICAyOTE4LCAyOTI3LCAyOTM2LCAyOTQ1LCAyOTU0LCAyOTY0LCAyOTc0LCAyOTgyLCAyOTkwLCAyOTk5LCAzMDA4LCAzMDE3LCAKLSAgICAzMDI2LCAzMDM1LCAzMDQ0LCAzMDQ5LCAzMDU0LCAzMDYyLCAzMDcwLCAzMDgwLCAzMDg4LCAzMDkzLCAzMDk4LCAzMTA1LCAKLSAgICAzMTEyLCAzMTE5LCAzMTI2LCAzMTMzLCAzMTQwLCAzMTUwLCAzMTYwLCAzMTcwLCAzMTgwLCAzMTg3LCAzMTk0LCAzMjA0LCAKLSAgICAzMjE0LCAzMjIyLCAzMjMwLCAzMjM4LCAzMjQ2LCAzMjU0LCAzMjYxLCAzMjY4LCAzMjc1LCAzMjgxLCAzMjg4LCAzMjk1LCAKLSAgICAzMzAyLCAzMzExLCAzMzIxLCAzMzMxLCAzMzM4LCAzMzQ1LCAzMzUxLCAzMzU2LCAzMzYzLCAzMzY5LCAzMzc1LCAzMzgyLCAKLSAgICAzMzg5LCAzNDAwLCAzNDEwLCAzNDE3LCAzNDI0LCAzNDMxLCAzNDM4LCAzNDQ0LCAzNDQ5LCAzNDU2LCAzNDYyLCAzNDY4LCAKLSAgICAzNDc2LCAzNDg0LCAzNDkxLCAzNDk3LCAzNTAyLCAzNTA5LCAzNTE1LCAzNTIzLCAzNTMzLCAzNTQzLCAzNTUyLCAzNTU5LCAKLSAgICAzNTY1LCAzNTcxLCAzNTc2LCAzNTgzLCAzNTkwLCAzNTk3LCAzNjA0LCAzNjExLCAzNjE2LCAzNjIxLCAzNjMxLCAzNjM5LCAKLSAgICAzNjQ4LCAzNjUzLCAzNjU5LCAzNjcwLCAzNjc3LCAzNjg1LCAzNjk0LCAzNjk5LCAzNzA1LCAzNzExLCAzNzE4LCAzNzIzLCAKLSAgICAzNzI5LCAzNzQwLCAzNzQ5LCAzNzU4LCAzNzY2LCAzNzc0LCAzNzg0LCAzNzg5LCAzNzk2LCAzODAzLCAzODA4LCAzODIwLCAKLSAgICAzODI5LCAzODM3LCAzODQ0LCAzODUzLCAzODU4LCAzODYzLCAzODcwLCAzODc3LCAzODg0LCAzODkxLCAzODk3LCAzOTA2LCAKLSAgICAzOTE0LCAzOTE5LCAzOTI3LCAzOTMzLCAzOTQxLCAzOTQ5LCAzOTU1LCAzOTYxLCAzOTY3LCAzOTc1LCAzOTgzLCAzOTg5LCAKLSAgICAzOTk3LCA0MDA0LCA0MDA5LCA0MDE2LCA0MDI0LCA0MDM0LCA0MDQxLCA0MDQ4LCA0MDU4LCA0MDY1LCA0MDcyLCA0MDgyLCAKLSAgICA0MDg5LCA0MDk2LCA0MTAzLCA0MTA5LCA0MTE1LCA0MTI1LCA0MTM4LCA0MTQzLCA0MTUwLCA0MTU1LCA0MTU5LCA0MTY1LCAKLSAgICA0MTc0LCA0MTgxLCA0MTg2LCA0MTkxLCA0MTk1LCA0MjAwLCA0MjA2LCA0MjEwLCA0MjE2LCA0MjIyLCA0MjI4LCA0MjM0LCAKLSAgICA0MjQyLCA0MjQ3LCA0MjUyLCA0MjU3LCA0MjYyLCA0MjY4LCA0MjcwLCA0Mjc1LCA0Mjc5LCA0Mjg1LCA0MjkxLCA0Mjk3LCAKLSAgICA0MzAyLCA0MzA5LCA0MzE2LCA0MzIyLCA0MzI5LCA0MzM3LCA0MzQ1LCA0MzUwLCA0MzU1LCA0MzU5LCA0MzY0LCA0MzY2LCAKLSAgICA0MzY4LCA0MzcxLCA0MzczLCA0Mzc2LCA0MzgxLCA0Mzg2LCA0MzkyLCA0Mzk3LCA0NDAxLCA0NDA1LCA0NDEwLCA0NDE5LCAKLSAgICA0NDI1LCA0NDMwLCA0NDM2LCA0NDQxLCA0NDQ3LCA0NDU1LCA0NDYzLCA0NDY3LCA0NDcxLCA0NDc2LCA0NDgyLCA0NDg4LCAKLSAgICA0NDk0LCA0NTAwLCA0NTA1LCA0NTEzLCA0NTIyLCA0NTMxLCA0NTM2LCA0NTQyLCA0NTQ5LCA0NTU2LCA0NTYzLCA0NTcwLCAKLSAgICA0NTc0LCA0NTgwLCA0NTg1LCA0NTkwLCA0NTk1LCA0NjAwLCA0NjAzLCA0NjA2LCA0NjA5LCA0NjEyLCA0NjE1LCA0NjE4LCAKLSAgICA0NjIyLCA0NjI2LCA0NjMyLCA0NjM1LCA0NjQwLCA0NjQ2LCA0NjUyLCA0NjU1LCA0NjYwLCA0NjY2LCA0NjcwLCA0Njc2LCAKLSAgICA0NjgyLCA0Njg4LCA0Njk0LCA0Njk5LCA0NzA0LCA0NzA5LCA0NzEyLCA0NzE4LCA0NzIzLCA0NzI4LCA0NzMyLCA0NzM3LCAKLSAgICA0NzQzLCA0NzQ5LCA0NzUyLCA0NzU2LCA0NzYwLCA0NzY0LCA0NzY3LCA0NzcwLCA0Nzc1LCA0Nzc5LCA0Nzg2LCA0NzkwLCAKLSAgICA0Nzk2LCA0ODAwLCA0ODA2LCA0ODEwLCA0ODE0LCA0ODE4LCA0ODIzLCA0ODI4LCA0ODM1LCA0ODQxLCA0ODQ4LCA0ODU0LCAKLSAgICA0ODYwLCA0ODY2LCA0ODY5LCA0ODczLCA0ODc3LCA0ODgxLCA0ODg1LCA0ODkwLCA0ODk1LCA0ODk5LCA0OTAzLCA0OTA5LCAKLSAgICA0OTEzLCA0OTE3LCA0OTIyLCA0OTI4LCA0OTMzLCA0OTM5LCA0OTQzLCA0OTUwLCA0OTU1LCA0OTYwLCA0OTY1LCA0OTcwLCAKLSAgICA0OTc2LCA0OTc5LCA0OTgzLCA0OTg4LCA0OTkzLCA1MDAyLCA1MDA4LCA1MDEzLCA1MDE3LCA1MDIyLCA1MDI2LCA1MDMxLCAKLSAgICA1MDM1LCA1MDM5LCA1MDQ0LCA1MDQ4LCA1MDU0LCA1MDU5LCA1MDY0LCA1MDY5LCA1MDc0LCA1MDc5LCA1MDg0LCA1MDkwLCAKLSAgICA1MDk2LCA1MTAyLCA1MTA3LCA1MTEyLCA1MTE4LCA1MTI0LCA1MTMwLCA1MTM1LCA1MTQwLCA1MTQ3LCA1MTU0LCA1MTU4LCAKLSAgICA1MTY0LCA1MTcxLCAwLCAwLCA1MTc4LCA1MTgxLCA1MTkwLCA1MTk5LCA1MjEwLCAwLCAwLCAwLCAwLCAwLCA1MjE0LCAKLSAgICA1MjE3LCA1MjIyLCA1MjMwLCA1MjM1LCA1MjQzLCA1MjUxLCAwLCA1MjU5LCAwLCA1MjY3LCA1Mjc1LCA1MjgzLCA1Mjk0LCAKLSAgICA1Mjk5LCA1MzA0LCA1MzA5LCA1MzE0LCA1MzE5LCA1MzI0LCA1MzI5LCA1MzM0LCA1MzM5LCA1MzQ0LCA1MzQ5LCA1MzU0LCAKLSAgICA1MzU5LCA1MzY0LCA1MzY5LCA1Mzc0LCAwLCA1Mzc5LCA1Mzg0LCA1Mzg5LCA1Mzk0LCA1Mzk5LCA1NDA0LCA1NDA5LCAKLSAgICA1NDE0LCA1NDIyLCA1NDMwLCA1NDM4LCA1NDQ2LCA1NDU0LCA1NDYyLCA1NDczLCA1NDc4LCA1NDgzLCA1NDg4LCA1NDkzLCAKLSAgICA1NDk4LCA1NTAzLCA1NTA4LCA1NTEzLCA1NTE4LCA1NTIzLCA1NTI4LCA1NTMzLCA1NTM4LCA1NTQzLCA1NTQ4LCA1NTUzLCAKLSAgICA1NTU4LCA1NTY0LCA1NTY5LCA1NTc0LCA1NTc5LCA1NTg0LCA1NTg5LCA1NTk0LCA1NTk5LCA1NjA3LCA1NjE1LCA1NjIzLCAKLSAgICA1NjMxLCA1NjM5LCA1NjQ0LCA1NjQ4LCA1NjUyLCA1NjU5LCA1NjY5LCA1Njc5LCA1NjgzLCA1Njg3LCA1NjkxLCA1Njk3LCAKLSAgICA1NzA0LCA1NzA4LCA1NzEzLCA1NzE3LCA1NzIyLCA1NzI2LCA1NzMxLCA1NzM1LCA1NzQwLCA1NzQ1LCA1NzUwLCA1NzU1LCAKLSAgICA1NzYwLCA1NzY1LCA1NzcwLCA1Nzc1LCA1NzgwLCA1Nzg1LCA1NzkwLCA1Nzk1LCA1ODAwLCA1ODA1LCA1ODEwLCA1ODE0LCAKLSAgICA1ODE4LCA1ODI0LCA1ODI4LCA1ODMzLCA1ODM5LCA1ODQ3LCA1ODUyLCA1ODU3LCA1ODY0LCA1ODY5LCA1ODc0LCA1ODgxLCAKLSAgICA1ODkwLCA1ODk5LCA1OTEwLCA1OTE4LCA1OTIzLCA1OTI4LCA1OTMzLCA1OTQwLCA1OTQ1LCA1OTUxLCA1OTU2LCA1OTYxLCAKLSAgICA1OTY2LCA1OTcxLCA1OTc2LCA1OTgxLCA1OTg5LCA1OTk1LCA2MDAwLCA2MDA0LCA2MDA5LCA2MDE0LCA2MDE5LCA2MDI0LCAKLSAgICA2MDI5LCA2MDM0LCA2MDM5LCA2MDQzLCA2MDQ5LCA2MDUzLCA2MDU4LCA2MDYzLCA2MDY4LCA2MDcyLCA2MDc3LCA2MDgyLCAKLSAgICA2MDg3LCA2MDkyLCA2MDk2LCA2MTAxLCA2MTA1LCA2MTEwLCA2MTE1LCA2MTIwLCA2MTI1LCA2MTMxLCA2MTM2LCA2MTQyLCAKLSAgICA2MTQ2LCA2MTUxLCA2MTU1LCA2MTU5LCA2MTY0LCA2MTY5LCA2MTc0LCA2MTc5LCA2MTg0LCA2MTg5LCA2MTk0LCA2MTk4LCAKLSAgICA2MjA0LCA2MjA4LCA2MjEzLCA2MjE4LCA2MjIzLCA2MjI3LCA2MjMyLCA2MjM3LCA2MjQyLCA2MjQ3LCA2MjUxLCA2MjU2LCAKLSAgICA2MjYwLCA2MjY1LCA2MjcwLCA2Mjc1LCA2MjgwLCA2Mjg2LCA2MjkxLCA2Mjk3LCA2MzAxLCA2MzA2LCA2MzEwLCA2MzE4LCAKLSAgICA2MzIzLCA2MzI4LCA2MzMzLCA2MzQwLCA2MzQ1LCA2MzUxLCA2MzU2LCA2MzYxLCA2MzY2LCA2MzcxLCA2Mzc2LCA2MzgxLCAKLSAgICA2Mzg5LCA2Mzk1LCA2NDAwLCA2NDA1LCA2NDEwLCA2NDE1LCA2NDIwLCA2NDI2LCA2NDMyLCA2NDM5LCA2NDQ2LCA2NDU1LCAKLSAgICA2NDY0LCA2NDcxLCA2NDc4LCA2NDg3LCA2NDk2LCA2NTAxLCA2NTA2LCA2NTExLCA2NTE2LCA2NTIxLCA2NTI2LCA2NTMxLCAKLSAgICA2NTM2LCA2NTQ3LCA2NTU4LCA2NTYzLCA2NTY4LCA2NTc1LCA2NTgyLCA2NTkwLCA2NTk4LCA2NjAzLCA2NjA4LCA2NjEzLCAKLSAgICA2NjE4LCA2NjIyLCA2NjI2LCA2NjMwLCA2NjM1LCA2NjQxLCA2NjQ1LCA2NjUyLCA2NjU3LCA2NjY3LCA2Njc3LCA2NjgzLCAKLSAgICA2Njg5LCA2Njk3LCA2NzA1LCA2NzEzLCA2NzIxLCA2NzI4LCA2NzM1LCA2NzQ0LCA2NzUzLCA2NzYxLCA2NzY5LCA2Nzc3LCAKLSAgICA2Nzg1LCA2NzkzLCA2ODAxLCA2ODA5LCA2ODE3LCA2ODI0LCA2ODMxLCA2ODM3LCA2ODQzLCA2ODUxLCA2ODU5LCA2ODY2LCAKLSAgICA2ODczLCA2ODgyLCA2ODkxLCA2ODk3LCA2OTAzLCA2OTExLCA2OTE5LCA2OTI3LCA2OTM1LCA2OTQxLCA2OTQ3LCA2OTU1LCAKLSAgICA2OTYzLCA2OTcxLCA2OTc5LCA2OTg2LCA2OTkzLCA3MDAxLCA3MDA5LCA3MDE3LCA3MDI1LCA3MDMwLCA3MDM1LCA3MDQyLCAKLSAgICA3MDQ5LCA3MDU5LCA3MDY5LCA3MDczLCA3MDgxLCA3MDg5LCA3MDk2LCA3MTAzLCA3MTExLCA3MTE5LCA3MTI2LCA3MTMzLCAKLSAgICA3MTQxLCA3MTQ5LCA3MTU2LCA3MTYzLCA3MTcxLCA3MTc5LCA3MTg0LCA3MTkxLCA3MTk4LCA3MjA1LCA3MjEyLCA3MjE4LCAKLSAgICA3MjI0LCA3MjMyLCA3MjQwLCA3MjQ1LCA3MjUwLCA3MjU4LCA3MjY2LCA3Mjc0LCA3MjgyLCA3MjkwLCA3Mjk4LCA3MzA1LCAKLSAgICA3MzEyLCA3MzIwLCA3MzI4LCA3MzM2LCA3MzQ0LCA3MzUxLCA3MzU4LCA3MzY0LCA3MzcwLCA3Mzc5LCA3Mzg4LCA3Mzk1LCAKLSAgICA3NDAyLCA3NDA5LCA3NDE2LCA3NDIzLCA3NDMwLCA3NDM3LCA3NDQ0LCA3NDUyLCA3NDYwLCA3NDY4LCA3NDc2LCA3NDg0LCAKLSAgICA3NDkyLCA3NTAyLCA3NTEyLCA3NTE5LCA3NTI2LCA3NTMzLCA3NTQwLCA3NTQ3LCA3NTU0LCA3NTYxLCA3NTY4LCA3NTc1LCAKLSAgICA3NTgyLCA3NTg5LCA3NTk2LCA3NjAzLCA3NjEwLCA3NjE3LCA3NjI0LCA3NjMxLCA3NjM4LCA3NjQ1LCA3NjUyLCA3NjU5LCAKLSAgICA3NjY2LCA3NjczLCA3NjgwLCA3Njg1LCA3NjkwLCA3Njk1LCA3NzAwLCA3NzA1LCA3NzEwLCA3NzE1LCA3NzIwLCA3NzI1LCAKLSAgICA3NzMwLCA3NzM2LCA3NzQyLCA3NzUxLCA3NzYwLCA3NzY5LCA3Nzc4LCA3Nzg2LCA3Nzk0LCA3ODAyLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3ODEwLCA3ODE1LCA3ODIwLCA3ODI1LCA3ODMwLCA3ODM1LCA3ODQwLCA3ODQ1LCA3ODUwLCAKLSAgICA3ODU0LCA3ODU5LCA3ODY0LCA3ODY5LCA3ODc0LCA3ODc5LCA3ODg0LCA3ODg5LCA3ODk0LCA3ODk5LCA3OTA0LCA3OTA5LCAKLSAgICA3OTE0LCA3OTE5LCA3OTI0LCA3OTI5LCA3OTM0LCA3OTM5LCA3OTQ0LCA3OTQ4LCA3OTUzLCA3OTU4LCA3OTYzLCA3OTY4LCAKLSAgICA3OTczLCA3OTc4LCA3OTgzLCA3OTg4LCA3OTkzLCAwLCAwLCA3OTk4LCA4MDA1LCA4MDA4LCA4MDEyLCA4MDE2LCA4MDE5LCAKLSAgICA4MDIzLCAwLCA4MDI3LCA4MDMyLCA4MDM3LCA4MDQyLCA4MDQ3LCA4MDUyLCA4MDU3LCA4MDYyLCA4MDY3LCA4MDcxLCAKLSAgICA4MDc2LCA4MDgxLCA4MDg2LCA4MDkxLCA4MDk2LCA4MTAxLCA4MTA2LCA4MTExLCA4MTE2LCA4MTIxLCA4MTI2LCA4MTMxLCAKLSAgICA4MTM2LCA4MTQxLCA4MTQ2LCA4MTUxLCA4MTU2LCA4MTYxLCA4MTY1LCA4MTcwLCA4MTc1LCA4MTgwLCA4MTg1LCA4MTkwLCAKLSAgICA4MTk1LCA4MjAwLCA4MjA1LCA4MjEwLCA4MjE1LCAwLCA4MjIyLCA4MjI3LCAwLCAwLCAwLCAwLCAwLCAwLCA4MjMwLCAKLSAgICA4MjM1LCA4MjQwLCA4MjQ1LCA4MjUyLCA4MjU5LCA4MjY0LCA4MjY5LCA4Mjc0LCA4Mjc5LCA4Mjg0LCA4Mjg5LCA4Mjk0LCAKLSAgICA4MzAxLCA4MzA2LCA4MzEzLCA4MzIwLCA4MzI1LCA4MzMyLCA4MzM3LCA4MzQyLCA4MzQ3LCA4MzU0LCA4MzU5LCA4MzY0LCAKLSAgICA4MzcxLCA4MzgwLCA4Mzg1LCA4MzkwLCA4Mzk1LCA4NDAwLCA4NDA2LCA4NDExLCA4NDE4LCA4NDI1LCA4NDMyLCA4NDM3LCAKLSAgICA4NDQyLCA4NDQ3LCA4NDUyLCA4NDU3LCA4NDYyLCA4NDcyLCA4NDc3LCA4NDg1LCA4NDkwLCA4NDk1LCA4NTAwLCA4NTA1LCAKLSAgICA4NTEyLCA4NTE5LCA4NTI2LCA4NTMyLCA4NTM4LCA4NTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NTUyLCA4NTU2LCAKLSAgICA4NTYwLCA4NTY0LCA4NTY4LCA4NTcyLCA4NTc2LCA4NTgwLCA4NTg0LCA4NTg4LCA4NTkyLCA4NTk3LCA4NjAxLCA4NjA1LCAKLSAgICA4NjEwLCA4NjE0LCA4NjE5LCA4NjIzLCA4NjI3LCA4NjMxLCA4NjM2LCA4NjQwLCA4NjQ1LCA4NjQ5LCA4NjUzLCA4NjU3LCAKLSAgICA4NjYxLCAwLCAwLCAwLCAwLCAwLCA4NjY1LCA4NjcyLCA4NjgwLCA4Njg3LCA4NjkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA4Njk3LCA4NzAwLCA4NzA0LCA4NzA5LCAwLCAwLCA4NzEzLCA4NzE5LCA4NzI1LCA4NzI4LCA4NzM1LCAKLSAgICA4NzQ0LCA4NzQ3LCA4NzUwLCA4NzU1LCA4NzYxLCA4NzY1LCA4NzczLCA4Nzc5LCA4Nzg1LCA4NzkzLCA4Nzk3LCA4ODAyLCAKLSAgICA4ODEzLCA4ODE4LCA4ODIyLCA4ODI2LCA4ODMwLCAwLCAwLCA4ODMzLCA4ODQwLCA4ODQ0LCA4ODUwLCA4ODU0LCA4ODYxLCAKLSAgICA4ODY3LCA4ODc0LCA4ODgwLCA4ODg2LCA4ODkwLCA4ODk0LCA4OTAwLCA4OTA0LCA4OTA4LCA4OTEyLCA4OTE2LCA4OTIwLCAKLSAgICA4OTI0LCA4OTI4LCA4OTMyLCA4OTM2LCA4OTQwLCA4OTQ0LCA4OTQ4LCA4OTUyLCA4OTU2LCA4OTYwLCA4OTY0LCA4OTY4LCAKLSAgICA4OTc2LCA4OTg0LCA4OTk0LCA5MDAzLCA5MDEyLCA5MDE1LCA5MDE5LCA5MDIzLCA5MDI3LCA5MDMxLCA5MDM1LCA5MDM5LCAKLSAgICA5MDQzLCA5MDQ3LCA5MDUyLCA5MDU2LCA5MDU5LCA5MDYyLCA5MDY1LCA5MDY4LCA5MDcxLCA5MDc0LCA5MDc3LCA5MDgwLCAKLSAgICA5MDg0LCA5MDg3LCA5MDkwLCA5MDk1LCA5MTAwLCA5MTA2LCA5MTA5LCA5MTE2LCA5MTI1LCA5MTMwLCA5MTM1LCA5MTQyLCAKLSAgICA5MTQ3LCA5MTUyLCA5MTU2LCA5MTYwLCA5MTY0LCA5MTY4LCA5MTcyLCA5MTc2LCA5MTgwLCA5MTg0LCA5MTg4LCA5MTkyLCAKLSAgICA5MTk3LCA5MjAyLCA5MjA5LCA5MjE1LCA5MjIxLCA5MjI3LCA5MjMyLCA5MjQwLCA5MjQ4LCA5MjUzLCA5MjU5LCA5MjY1LCAKLSAgICA5MjcxLCA5Mjc3LCA5MjgxLCA5Mjg1LCA5Mjg5LCA5Mjk2LCA5MzA2LCA5MzEwLCA5MzE0LCA5MzE4LCA5MzI0LCA5MzMyLCAKLSAgICA5MzM2LCA5MzQwLCA5MzQ3LCA5MzUxLCA5MzU1LCA5MzU5LCA5MzY2LCA5MzczLCA5Mzg1LCA5Mzg5LCA5MzkzLCA5Mzk3LCAKLSAgICA5NDA3LCA5NDE2LCA5NDIwLCA5NDI4LCA5NDM1LCA5NDQyLCA5NDUxLCA5NDYyLCA5NDcwLCA5NDc0LCA5NDgzLCA5NDk0LCAKLSAgICA5NTAyLCA5NTE1LCA5NTIzLCA5NTMxLCA5NTM5LCA5NTQ3LCA5NTUzLCA5NTYyLCA5NTY5LCA5NTczLCA5NTgxLCA5NTg1LCAKLSAgICA5NTkyLCA5NjAwLCA5NjA0LCA5NjEwLCA5NjE3LCA5NjI0LCA5NjI4LCA5NjM2LCA5NjQwLCA5NjQ3LCA5NjUxLCA5NjU5LCAKLSAgICA5NjYzLCA5NjcxLCA5Njc5LCA5Njg2LCA5Njk0LCA5NzAyLCA5NzA5LCA5NzE1LCA5NzE5LCA5NzI2LCA5NzM0LCA5NzQwLCAKLSAgICA5NzQ3LCA5NzU0LCA5NzYwLCA5NzY5LCA5Nzc3LCA5Nzg0LCA5NzkwLCA5Nzk0LCA5Nzk3LCA5ODAxLCA5ODA3LCA5ODE1LCAKLSAgICA5ODE5LCA5ODI1LCA5ODMxLCA5ODM4LCA5ODQ1LCA5ODQ4LCA5ODU1LCA5ODYwLCA5ODY4LCA5ODczLCA5ODc3LCA5ODkwLCAKLSAgICA5OTAzLCA5OTA5LCA5OTE2LCA5OTIxLCA5OTI3LCA5OTMyLCA5OTM4LCA5OTQ4LCA5OTU1LCA5OTY0LCA5OTc0LCA5OTgwLCAKLSAgICA5OTg1LCA5OTkwLCA5OTk0LCA5OTk4LCAxMDAwMywgMTAwMDgsIDEwMDE0LCAxMDAyMiwgMTAwMzAsIDEwMDQxLCAxMDA0NiwgCi0gICAgMTAwNTUsIDEwMDY0LCAxMDA3MSwgMTAwNzcsIDEwMDgzLCAxMDA4OSwgMTAwOTUsIDEwMTAxLCAxMDEwNywgMTAxMTMsIAotICAgIDEwMTE5LCAxMDEyNSwgMTAxMzIsIDEwMTM5LCAxMDE0NiwgMTAxNTIsIDEwMTYwLCAxMDE2OSwgMTAxNzUsIDEwMTgyLCAKLSAgICAxMDE4OSwgMTAxOTQsIDEwMTk5LCAxMDIwMywgMTAyMTAsIDEwMjE3LCAxMDIyNiwgMTAyMzUsIDEwMjM4LCAxMDI0MywgCi0gICAgMTAyNDgsIDAsIDEwMjUzLCAxMDI1NywgMTAyNjEsIDEwMjY3LCAxMDI3MSwgMTAyNzUsIDEwMjgxLCAxMDI4NSwgMTAyOTMsIAotICAgIDEwMjk3LCAxMDMwMSwgMTAzMDUsIDEwMzA5LCAxMDMxMywgMTAzMTksIDEwMzIzLCAxMDMyOSwgMTAzMzMsIDEwMzM3LCAKLSAgICAxMDM0MSwgMTAzNDUsIDEwMzQ5LCAxMDM1NCwgMTAzNTcsIDEwMzYxLCAxMDM2NywgMTAzNzEsIDEwMzc1LCAxMDM3OSwgCi0gICAgMTAzODMsIDEwMzg3LCAxMDM5MywgMTAzOTksIDEwNDA1LCAxMDQwOSwgMTA0MTMsIDEwNDE4LCAxMDQyMiwgMTA0MjYsIAotICAgIDEwNDMxLCAxMDQzNSwgMTA0MzksIDEwNDQ2LCAxMDQ1MywgMTA0NTcsIDEwNDYxLCAxMDQ2NiwgMTA0NzAsIDEwNDc0LCAKLSAgICAxMDQ3NywgMTA0ODIsIDEwNDg1LCAxMDQ4OCwgMTA0OTMsIDEwNDk4LCAxMDUwMiwgMTA1MDYsIDEwNTEyLCAxMDUxOCwgCi0gICAgMTA1MjEsIDAsIDAsIDEwNTI0LCAxMDUzMCwgMTA1MzYsIDEwNTQyLCAxMDU1MiwgMTA1NjQsIDEwNTc2LCAxMDU5MywgCi0gICAgMTA2MDUsIDEwNjE2LCAxMDYyNCwgMTA2MzEsIDEwNjQyLCAxMDY1NywgMTA2NjgsIDEwNjc0LCAxMDY4MywgMTA2OTEsIAotICAgIDEwNzAzLCAxMDcxMywgMTA3MjEsIDEwNzMzLCAxMDc0MCwgMTA3NDgsIDEwNzYwLCAxMDc2NiwgMTA3NzIsIDEwNzgwLCAKLSAgICAxMDc4OCwgMTA3OTYsIDEwODAyLCAxMDgxMiwgMTA4MTksIDEwODI5LCAxMDgzOSwgMTA4NTIsIDEwODY2LCAxMDg4MCwgCi0gICAgMTA4OTAsIDEwOTAxLCAxMDkxMiwgMTA5MjUsIDEwOTM4LCAxMDk1MiwgMTA5NjQsIDEwOTc2LCAxMDk4OSwgMTEwMDIsIAotICAgIDExMDE0LCAxMTAyNywgMTEwMzYsIDExMDQ0LCAxMTA0OSwgMTEwNTQsIDExMDU5LCAxMTA2NCwgMTEwNjksIDExMDc0LCAKLSAgICAxMTA3OSwgMTEwODQsIDExMDg5LCAxMTA5NCwgMTEwOTksIDExMTA0LCAxMTEwOSwgMTExMTQsIDExMTE5LCAxMTEyNCwgCi0gICAgMTExMjksIDExMTM0LCAxMTEzOSwgMTExNDQsIDExMTQ5LCAxMTE1NCwgMTExNTksIDExMTY0LCAxMTE2OSwgMTExNzQsIAotICAgIDExMTc5LCAxMTE4NCwgMTExODksIDExMTk0LCAxMTE5OSwgMTEyMDQsIDExMjA4LCAxMTIxMywgMTEyMTgsIDExMjIzLCAKLSAgICAxMTIyOCwgMTEyMzMsIDExMjM3LCAxMTI0MSwgMTEyNDUsIDExMjQ5LCAxMTI1MywgMTEyNTcsIDExMjYxLCAxMTI2NSwgCi0gICAgMTEyNjksIDExMjczLCAxMTI3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEyODIsIAotICAgIDExMjg3LCAxMTI5MSwgMTEyOTUsIDExMjk5LCAxMTMwMywgMTEzMDcsIDExMzExLCAxMTMxNSwgMTEzMTksIDExMzIzLCAKLSAgICAxMTMyNywgMTEzMzIsIDExMzM2LCAxMTM0MCwgMTEzNDQsIDExMzQ5LCAxMTM1MywgMTEzNTgsIDExMzYyLCAxMTM2NywgCi0gICAgMTEzNzEsIDExMzc2LCAxMTM4MSwgMTEzODYsIDExMzkxLCAxMTM5NSwgMTE0MDAsIDExNDA1LCAxMTQxMCwgMTE0MTUsIAotICAgIDExNDE5LCAxMTQyNCwgMTE0MzEsIDExNDM1LCAxMTQ0MCwgMTE0NDQsIDExNDQ4LCAxMTQ1MywgMTE0NTcsIDExNDY0LCAKLSAgICAxMTQ3MSwgMTE0NzgsIDExNDg0LCAxMTQ5MiwgMTE1MDAsIDExNTA5LCAxMTUxNywgMTE1MjQsIDExNTMxLCAxMTUzOSwgCi0gICAgMTE1NDUsIDExNTUxLCAxMTU1NywgMTE1NjMsIDExNTcwLCAxMTU3NSwgMTE1NzksIDExNTg0LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMTU4OCwgMTE1OTMsIDExNTk4LCAxMTYwMywgMTE2MDgsIDExNjEzLCAxMTYxOCwgMTE2MjMsIDExNjI4LCAxMTYzMywgCi0gICAgMTE2MzgsIDExNjQzLCAxMTY0OCwgMTE2NTMsIDExNjU4LCAxMTY2MywgMTE2NjgsIDExNjczLCAxMTY3OCwgMTE2ODMsIAotICAgIDExNjg4LCAxMTY5MywgMTE2OTgsIDExNzAzLCAxMTcwOCwgMTE3MTMsIDExNzE4LCAxMTcyNiwgMTE3MzMsIDExNzM5LCAKLSAgICAxMTc0NCwgMTE3NTIsIDExNzU5LCAxMTc2NSwgMTE3NzIsIDExNzc4LCAxMTc4MywgMTE3OTAsIDExNzk3LCAxMTgwMywgCi0gICAgMTE4MDgsIDExODEzLCAxMTgxOSwgMTE4MjQsIDExODI5LCAxMTgzNSwgMCwgMCwgMTE4NDAsIDExODQ2LCAxMTg1MiwgCi0gICAgMTE4NTgsIDExODY0LCAxMTg3MCwgMTE4NzYsIDExODgxLCAxMTg4OSwgMTE4OTUsIDExOTAxLCAxMTkwNywgMTE5MTMsIAotICAgIDExOTE5LCAxMTkyNywgMCwgMTE5MzMsIDExOTM4LCAxMTk0MywgMTE5NDgsIDExOTUzLCAxMTk1OCwgMTE5NjMsIDExOTY4LCAKLSAgICAxMTk3MywgMTE5NzgsIDExOTgzLCAxMTk4OCwgMTE5OTMsIDExOTk4LCAxMjAwMywgMTIwMDgsIDEyMDEzLCAxMjAxOCwgCi0gICAgMTIwMjMsIDEyMDI4LCAxMjAzMywgMTIwMzgsIDEyMDQzLCAxMjA0OCwgMTIwNTMsIDEyMDU4LCAxMjA2MywgMTIwNjgsIDAsIAotICAgIDAsIDEyMDczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjA3NywgMTIwODMsIAotICAgIDEyMDg3LCAxMjA5MSwgMTIwOTUsIDEyMTAwLCAxMjEwMywgMTIxMDcsIDEyMTEwLCAxMjExNCwgMTIxMTcsIDEyMTIxLCAKLSAgICAxMjEyNSwgMTIxMjksIDEyMTM0LCAxMjEzOSwgMTIxNDIsIDEyMTQ2LCAxMjE1MSwgMTIxNTYsIDEyMTU5LCAxMjE2MywgCi0gICAgMTIxNjYsIDEyMTcwLCAxMjE3NCwgMTIxNzgsIDEyMTgyLCAxMjE4NiwgMTIxOTAsIDEyMTk0LCAxMjE5OCwgMTIyMDIsIAotICAgIDEyMjA2LCAxMjIxMCwgMTIyMTQsIDEyMjE4LCAxMjIyMiwgMTIyMjYsIDEyMjMwLCAxMjIzNCwgMTIyMzgsIDEyMjQxLCAKLSAgICAxMjI0NSwgMTIyNDgsIDEyMjUyLCAxMjI1NiwgMTIyNjAsIDEyMjYzLCAxMjI2NiwgMTIyNjksIDEyMjczLCAxMjI3NywgCi0gICAgMTIyODEsIDEyMjg1LCAxMjI4OSwgMTIyOTMsIDEyMjk3LCAxMjMwMSwgMTIzMDQsIDEyMzA5LCAxMjMxNCwgMTIzMTgsIAotICAgIDEyMzIyLCAxMjMyNywgMTIzMzEsIDEyMzM2LCAxMjM0MCwgMTIzNDUsIDEyMzUwLCAxMjM1NiwgMTIzNjIsIDEyMzY4LCAKLSAgICAxMjM3MiwgMTIzNzcsIDEyMzgzLCAxMjM4OSwgMTIzOTMsIDEyMzk4LCAxMjQwMiwgMTI0MDgsIDEyNDEzLCAxMjQxNiwgCi0gICAgMTI0MjIsIDEyNDI4LCAxMjQzMywgMTI0MzgsIDEyNDQ1LCAxMjQ1MCwgMTI0NTUsIDEyNDU5LCAxMjQ2MywgMTI0NjcsIAotICAgIDEyNDcxLCAxMjQ3NSwgMTI0NzksIDEyNDgzLCAxMjQ4NywgMTI0OTIsIDEyNDk3LCAxMjUwMiwgMTI1MDgsIDEyNTExLCAKLSAgICAxMjUxNSwgMTI1MTksIDEyNTIyLCAxMjUyNSwgMTI1MjgsIDEyNTMxLCAxMjUzNCwgMTI1MzcsIDEyNTQwLCAxMjU0MywgCi0gICAgMTI1NDYsIDEyNTUwLCAxMjU1NywgMTI1NjIsIDEyNTY2LCAxMjU3MCwgMTI1NzQsIDEyNTc4LCAwLCAxMjU4MiwgMTI1ODYsIAotICAgIDEyNTkwLCAxMjU5NCwgMTI1OTgsIDEyNjA0LCAxMjYwOCwgMCwgMTI2MTIsIDEyNjE2LCAxMjYyMCwgMCwgMTI2MjQsIAotICAgIDEyNjI3LCAxMjYzMSwgMTI2MzQsIDEyNjM4LCAxMjY0MSwgMTI2NDUsIDEyNjQ5LCAwLCAwLCAxMjY1MywgMTI2NTYsIDAsIAotICAgIDAsIDEyNjYwLCAxMjY2MywgMTI2NjcsIDEyNjcwLCAxMjY3NCwgMTI2NzgsIDEyNjgyLCAxMjY4NiwgMTI2OTAsIDEyNjk0LCAKLSAgICAxMjY5OCwgMTI3MDIsIDEyNzA2LCAxMjcxMCwgMTI3MTQsIDEyNzE4LCAxMjcyMiwgMTI3MjYsIDEyNzMwLCAxMjczNCwgCi0gICAgMTI3MzgsIDEyNzQyLCAwLCAxMjc0NSwgMTI3NDgsIDEyNzUyLCAxMjc1NiwgMTI3NjAsIDEyNzYzLCAxMjc2NiwgMCwgCi0gICAgMTI3NjksIDAsIDAsIDAsIDEyNzczLCAxMjc3NywgMTI3ODEsIDEyNzg1LCAwLCAwLCAxMjc4OCwgMTI3OTIsIDEyNzk2LCAKLSAgICAxMjgwMSwgMTI4MDUsIDEyODEwLCAxMjgxNCwgMTI4MTksIDEyODI0LCAwLCAwLCAxMjgzMCwgMTI4MzQsIDAsIDAsIAotICAgIDEyODM5LCAxMjg0MywgMTI4NDgsIDEyODUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjg1OCwgMCwgMCwgMCwgMCwgCi0gICAgMTI4NjQsIDEyODY4LCAwLCAxMjg3MiwgMTI4NzYsIDEyODgxLCAxMjg4NiwgMTI4OTEsIDAsIDAsIDEyODk3LCAxMjkwMSwgCi0gICAgMTI5MDQsIDEyOTA3LCAxMjkxMCwgMTI5MTMsIDEyOTE2LCAxMjkxOSwgMTI5MjIsIDEyOTI1LCAxMjkyOCwgMTI5MzcsIAotICAgIDEyOTQ2LCAxMjk1MCwgMTI5NTQsIDEyOTYwLCAxMjk2NiwgMTI5NzIsIDEyOTc4LCAxMjk5MiwgMTI5OTksIDEzMDAyLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMzAwNiwgMTMwMTIsIDEzMDE2LCAwLCAxMzAyMCwgMTMwMjMsIDEzMDI3LCAxMzAzMCwgMTMwMzQsIAotICAgIDEzMDM3LCAwLCAwLCAwLCAwLCAxMzA0MSwgMTMwNDUsIDAsIDAsIDEzMDQ5LCAxMzA1MywgMTMwNTcsIDEzMDYwLCAxMzA2NCwgCi0gICAgMTMwNjgsIDEzMDcyLCAxMzA3NiwgMTMwODAsIDEzMDg0LCAxMzA4OCwgMTMwOTIsIDEzMDk2LCAxMzEwMCwgMTMxMDQsIAotICAgIDEzMTA4LCAxMzExMiwgMTMxMTYsIDEzMTIwLCAxMzEyNCwgMTMxMjgsIDEzMTMyLCAwLCAxMzEzNSwgMTMxMzgsIDEzMTQyLCAKLSAgICAxMzE0NiwgMTMxNTAsIDEzMTUzLCAxMzE1NiwgMCwgMTMxNTksIDEzMTYzLCAwLCAxMzE2NywgMTMxNzEsIDAsIDEzMTc1LCAKLSAgICAxMzE3OSwgMCwgMCwgMTMxODIsIDAsIDEzMTg2LCAxMzE5MSwgMTMxOTUsIDEzMjAwLCAxMzIwNCwgMCwgMCwgMCwgMCwgCi0gICAgMTMyMDksIDEzMjE0LCAwLCAwLCAxMzIxOSwgMTMyMjQsIDEzMjI5LCAwLCAwLCAwLCAxMzIzMywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTMyMzcsIDEzMjQxLCAxMzI0NSwgMTMyNDksIDAsIDEzMjUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzI1NywgCi0gICAgMTMyNjEsIDEzMjY0LCAxMzI2NywgMTMyNzAsIDEzMjczLCAxMzI3NiwgMTMyNzksIDEzMjgyLCAxMzI4NSwgMTMyODgsIAotICAgIDEzMjkxLCAxMzI5NCwgMTMyOTcsIDEzMzAwLCAxMzMwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTMzMDksIDEzMzEzLCAxMzMxNywgMCwgMTMzMjEsIDEzMzI0LCAxMzMyOCwgMTMzMzEsIDEzMzM1LCAxMzMzOCwgMTMzNDIsIAotICAgIDEzMzQ2LCAxMzM1MCwgMCwgMTMzNTUsIDEzMzU4LCAxMzM2MiwgMCwgMTMzNjcsIDEzMzcwLCAxMzM3NCwgMTMzNzcsIAotICAgIDEzMzgxLCAxMzM4NSwgMTMzODksIDEzMzkzLCAxMzM5NywgMTM0MDEsIDEzNDA1LCAxMzQwOSwgMTM0MTMsIDEzNDE3LCAKLSAgICAxMzQyMSwgMTM0MjUsIDEzNDI5LCAxMzQzMywgMTM0MzcsIDEzNDQxLCAxMzQ0NSwgMTM0NDksIDAsIDEzNDUyLCAxMzQ1NSwgCi0gICAgMTM0NTksIDEzNDYzLCAxMzQ2NywgMTM0NzAsIDEzNDczLCAwLCAxMzQ3NiwgMTM0ODAsIDAsIDEzNDg0LCAxMzQ4OCwgCi0gICAgMTM0OTIsIDEzNDk2LCAxMzUwMCwgMCwgMCwgMTM1MDMsIDEzNTA3LCAxMzUxMSwgMTM1MTYsIDEzNTIwLCAxMzUyNSwgCi0gICAgMTM1MjksIDEzNTM0LCAxMzUzOSwgMTM1NDUsIDAsIDEzNTUxLCAxMzU1NSwgMTM1NjAsIDAsIDEzNTY2LCAxMzU3MCwgCi0gICAgMTM1NzUsIDAsIDAsIDEzNTc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzU4MiwgCi0gICAgMTM1ODcsIDEzNTkyLCAxMzU5NywgMCwgMCwgMTM2MDMsIDEzNjA3LCAxMzYxMCwgMTM2MTMsIDEzNjE2LCAxMzYxOSwgCi0gICAgMTM2MjIsIDEzNjI1LCAxMzYyOCwgMTM2MzEsIDAsIDEzNjM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMzYzOCwgMTM2NDIsIDEzNjQ2LCAwLCAxMzY1MCwgMTM2NTMsIDEzNjU3LCAxMzY2MCwgMTM2NjQsIAotICAgIDEzNjY3LCAxMzY3MSwgMTM2NzUsIDAsIDAsIDEzNjc5LCAxMzY4MiwgMCwgMCwgMTM2ODYsIDEzNjg5LCAxMzY5MywgCi0gICAgMTM2OTYsIDEzNzAwLCAxMzcwNCwgMTM3MDgsIDEzNzEyLCAxMzcxNiwgMTM3MjAsIDEzNzI0LCAxMzcyOCwgMTM3MzIsIAotICAgIDEzNzM2LCAxMzc0MCwgMTM3NDQsIDEzNzQ4LCAxMzc1MiwgMTM3NTYsIDEzNzYwLCAxMzc2NCwgMTM3NjgsIDAsIDEzNzcxLCAKLSAgICAxMzc3NCwgMTM3NzgsIDEzNzgyLCAxMzc4NiwgMTM3ODksIDEzNzkyLCAwLCAxMzc5NSwgMTM3OTksIDAsIDEzODAzLCAKLSAgICAxMzgwNywgMTM4MTEsIDEzODE1LCAxMzgxOSwgMCwgMCwgMTM4MjIsIDEzODI2LCAxMzgzMCwgMTM4MzUsIDEzODM5LCAKLSAgICAxMzg0NCwgMTM4NDgsIDEzODUzLCAxMzg1OCwgMCwgMCwgMTM4NjQsIDEzODY4LCAwLCAwLCAxMzg3MywgMTM4NzcsIAotICAgIDEzODgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzg4NiwgMTM4OTIsIDAsIDAsIDAsIDAsIDEzODk4LCAxMzkwMiwgMCwgCi0gICAgMTM5MDYsIDEzOTEwLCAxMzkxNSwgMTM5MjAsIDEzOTI1LCAwLCAwLCAxMzkzMSwgMTM5MzUsIDEzOTM4LCAxMzk0MSwgCi0gICAgMTM5NDQsIDEzOTQ3LCAxMzk1MCwgMTM5NTMsIDEzOTU2LCAxMzk1OSwgMTM5NjIsIDEzOTY1LCAxMzk2OSwgMTM5NzUsIAotICAgIDEzOTgxLCAxMzk4NywgMTM5OTMsIDEzOTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDAwNSwgMTQwMDksIAotICAgIDAsIDE0MDEzLCAxNDAxNiwgMTQwMjAsIDE0MDIzLCAxNDAyNywgMTQwMzAsIDAsIDAsIDAsIDE0MDM0LCAxNDAzNywgCi0gICAgMTQwNDEsIDAsIDE0MDQ1LCAxNDA0OCwgMTQwNTIsIDE0MDU2LCAwLCAwLCAwLCAxNDA1OSwgMTQwNjMsIDAsIDE0MDY3LCAwLCAKLSAgICAxNDA3MSwgMTQwNzUsIDAsIDAsIDAsIDE0MDc5LCAxNDA4MywgMCwgMCwgMCwgMTQwODcsIDE0MDkwLCAxNDA5NCwgMCwgMCwgCi0gICAgMCwgMTQwOTcsIDE0MTAwLCAxNDEwMywgMTQxMDYsIDE0MTEwLCAxNDExNCwgMTQxMTgsIDE0MTIyLCAxNDEyNiwgMTQxMzAsIAotICAgIDE0MTM0LCAxNDEzOCwgMCwgMCwgMCwgMCwgMTQxNDEsIDE0MTQ2LCAxNDE1MCwgMTQxNTUsIDE0MTU5LCAwLCAwLCAwLCAKLSAgICAxNDE2NCwgMTQxNjgsIDE0MTczLCAwLCAxNDE3OCwgMTQxODIsIDE0MTg3LCAxNDE5MiwgMCwgMCwgMTQxOTYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE0MTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDIwNSwgMTQyMDksIAotICAgIDE0MjEyLCAxNDIxNSwgMTQyMTgsIDE0MjIxLCAxNDIyNCwgMTQyMjcsIDE0MjMwLCAxNDIzMywgMTQyMzYsIDE0MjQwLCAKLSAgICAxNDI0NSwgMTQyNTAsIDE0MjU0LCAxNDI1OCwgMTQyNjIsIDE0MjY2LCAxNDI3MCwgMTQyNzUsIDE0Mjc5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxNDI4MiwgMTQyODYsIDE0MjkwLCAwLCAxNDI5NCwgMTQyOTcsIDE0MzAxLCAxNDMwNCwgMTQzMDgsIAotICAgIDE0MzExLCAxNDMxNSwgMTQzMTksIDAsIDE0MzIzLCAxNDMyNiwgMTQzMzAsIDAsIDE0MzM0LCAxNDMzNywgMTQzNDEsIAotICAgIDE0MzQ1LCAxNDM0OCwgMTQzNTIsIDE0MzU2LCAxNDM2MCwgMTQzNjQsIDE0MzY4LCAxNDM3MiwgMTQzNzYsIDE0MzgwLCAKLSAgICAxNDM4NCwgMTQzODgsIDE0MzkyLCAxNDM5NiwgMTQ0MDAsIDE0NDA0LCAxNDQwOCwgMTQ0MTIsIDE0NDE2LCAxNDQyMCwgMCwgCi0gICAgMTQ0MjMsIDE0NDI2LCAxNDQzMCwgMTQ0MzQsIDE0NDM4LCAxNDQ0MSwgMTQ0NDQsIDE0NDQ3LCAxNDQ1MSwgMTQ0NTUsIDAsIAotICAgIDE0NDU5LCAxNDQ2MywgMTQ0NjcsIDE0NDcxLCAxNDQ3NSwgMCwgMCwgMCwgMTQ0NzgsIDE0NDgyLCAxNDQ4NywgMTQ0OTEsIAotICAgIDE0NDk2LCAxNDUwMCwgMTQ1MDUsIDE0NTEwLCAwLCAxNDUxNiwgMTQ1MjAsIDE0NTI1LCAwLCAxNDUzMCwgMTQ1MzQsIAotICAgIDE0NTM5LCAxNDU0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ1NDgsIDE0NTUyLCAwLCAxNDU1OCwgMTQ1NjIsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE0NTY2LCAxNDU3MSwgMTQ1NzYsIDE0NTgxLCAwLCAwLCAxNDU4NywgMTQ1OTEsIDE0NTk0LCAxNDU5NywgCi0gICAgMTQ2MDAsIDE0NjAzLCAxNDYwNiwgMTQ2MDksIDE0NjEyLCAxNDYxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2MTgsIAotICAgIDE0NjMxLCAxNDY0MywgMTQ2NTUsIDE0NjY3LCAxNDY3OSwgMTQ2OTEsIDE0NzAzLCAwLCAwLCAxNDcwNywgMTQ3MTEsIDAsIAotICAgIDE0NzE1LCAxNDcxOCwgMTQ3MjIsIDE0NzI1LCAxNDcyOSwgMTQ3MzIsIDE0NzM2LCAxNDc0MCwgMCwgMTQ3NDQsIDE0NzQ3LCAKLSAgICAxNDc1MSwgMCwgMTQ3NTUsIDE0NzU4LCAxNDc2MiwgMTQ3NjYsIDE0NzY5LCAxNDc3MywgMTQ3NzcsIDE0NzgxLCAxNDc4NSwgCi0gICAgMTQ3ODksIDE0NzkzLCAxNDc5NywgMTQ4MDEsIDE0ODA1LCAxNDgwOSwgMTQ4MTMsIDE0ODE3LCAxNDgyMSwgMTQ4MjUsIAotICAgIDE0ODI5LCAxNDgzMywgMTQ4MzcsIDE0ODQxLCAwLCAxNDg0NCwgMTQ4NDcsIDE0ODUxLCAxNDg1NSwgMTQ4NTksIDE0ODYyLCAKLSAgICAxNDg2NSwgMTQ4NjgsIDE0ODcyLCAxNDg3NiwgMCwgMTQ4ODAsIDE0ODg0LCAxNDg4OCwgMTQ4OTIsIDE0ODk2LCAwLCAwLCAKLSAgICAxNDg5OSwgMTQ5MDMsIDE0OTA3LCAxNDkxMiwgMTQ5MTYsIDE0OTIxLCAxNDkyNSwgMTQ5MzAsIDE0OTM1LCAwLCAxNDk0MSwgCi0gICAgMTQ5NDUsIDE0OTUwLCAwLCAxNDk1NSwgMTQ5NTksIDE0OTY0LCAxNDk2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ5NzMsIAotICAgIDE0OTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDk4MywgMCwgMTQ5ODcsIDE0OTkyLCAxNDk5NywgMTUwMDIsIDAsIDAsIAotICAgIDE1MDA4LCAxNTAxMiwgMTUwMTUsIDE1MDE4LCAxNTAyMSwgMTUwMjQsIDE1MDI3LCAxNTAzMCwgMTUwMzMsIDE1MDM2LCAwLCAKLSAgICAxNTAzOSwgMTUwNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MDQ3LCAxNTA1MSwgCi0gICAgMCwgMTUwNTUsIDE1MDU4LCAxNTA2MiwgMTUwNjUsIDE1MDY5LCAxNTA3MiwgMTUwNzYsIDE1MDgwLCAwLCAxNTA4NCwgCi0gICAgMTUwODcsIDE1MDkxLCAwLCAxNTA5NSwgMTUwOTgsIDE1MTAyLCAxNTEwNiwgMTUxMDksIDE1MTEzLCAxNTExNywgMTUxMjEsIAotICAgIDE1MTI1LCAxNTEyOSwgMTUxMzMsIDE1MTM3LCAxNTE0MSwgMTUxNDUsIDE1MTQ5LCAxNTE1MywgMTUxNTcsIDE1MTYxLCAKLSAgICAxNTE2NSwgMTUxNjksIDE1MTczLCAxNTE3NywgMTUxODEsIDE1MTg0LCAxNTE4OCwgMTUxOTEsIDE1MTk1LCAxNTE5OSwgCi0gICAgMTUyMDMsIDE1MjA2LCAxNTIwOSwgMTUyMTIsIDE1MjE2LCAxNTIyMCwgMTUyMjQsIDE1MjI4LCAxNTIzMiwgMTUyMzYsIAotICAgIDE1MjQwLCAxNTI0NCwgMTUyNDcsIDAsIDAsIDE1MjUxLCAxNTI1NSwgMTUyNjAsIDE1MjY0LCAxNTI2OSwgMTUyNzMsIAotICAgIDE1Mjc4LCAxNTI4MywgMCwgMTUyODksIDE1MjkzLCAxNTI5OCwgMCwgMTUzMDMsIDE1MzA3LCAxNTMxMiwgMTUzMTcsIAotICAgIDE1MzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzMzIsIAotICAgIDE1MzM3LCAxNTM0MiwgMTUzNDcsIDAsIDAsIDE1MzUzLCAxNTM1NywgMTUzNjAsIDE1MzYzLCAxNTM2NiwgMTUzNjksIAotICAgIDE1MzcyLCAxNTM3NSwgMTUzNzgsIDE1MzgxLCAxNTM4NCwgMTUzODgsIDE1MzkzLCAxNTM5OCwgMTU0MDQsIDE1NDEwLCAwLCAKLSAgICAwLCAwLCAxNTQxNiwgMTU0MjAsIDE1NDI2LCAxNTQzMSwgMTU0MzcsIDE1NDQyLCAxNTQ0OCwgMCwgMCwgMTU0NTQsIAotICAgIDE1NDU4LCAwLCAxNTQ2MiwgMTU0NjYsIDE1NDcwLCAxNTQ3NCwgMTU0NzgsIDE1NDgyLCAxNTQ4NiwgMTU0OTAsIDE1NDk0LCAKLSAgICAxNTQ5OCwgMTU1MDIsIDE1NTA2LCAxNTUxMCwgMTU1MTQsIDE1NTE4LCAxNTUyMiwgMTU1MjYsIDE1NTMwLCAwLCAwLCAwLCAKLSAgICAxNTUzNCwgMTU1NDAsIDE1NTQ2LCAxNTU1MiwgMTU1NTgsIDE1NTY0LCAxNTU3MCwgMTU1NzYsIDE1NTgyLCAxNTU4OCwgCi0gICAgMTU1OTQsIDE1NjAwLCAxNTYwOCwgMTU2MTQsIDE1NjIwLCAxNTYyNiwgMTU2MzIsIDE1NjM4LCAxNTY0NCwgMTU2NTAsIAotICAgIDE1NjU2LCAxNTY2MiwgMTU2NjgsIDE1Njc0LCAwLCAxNTY4MCwgMTU2ODYsIDE1NjkyLCAxNTY5OCwgMTU3MDQsIDE1NzEwLCAKLSAgICAxNTcxNCwgMTU3MjAsIDE1NzI0LCAwLCAxNTcyOCwgMCwgMCwgMTU3MzQsIDE1NzM4LCAxNTc0NCwgMTU3NTAsIDE1NzU2LCAKLSAgICAxNTc2MCwgMTU3NjYsIDAsIDAsIDAsIDE1NzcwLCAwLCAwLCAwLCAwLCAxNTc3NCwgMTU3NzksIDE1Nzg2LCAxNTc5MywgCi0gICAgMTU4MDAsIDE1ODA3LCAwLCAxNTgxNCwgMCwgMTU4MjEsIDE1ODI2LCAxNTgzMSwgMTU4MzgsIDE1ODQ1LCAxNTg1NCwgCi0gICAgMTU4NjUsIDE1ODc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNTg3OSwgMTU4ODYsIDE1ODkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTg5OCwgMTU5MDQsIAotICAgIDE1OTEwLCAxNTkxNiwgMTU5MjIsIDE1OTI4LCAxNTkzNCwgMTU5NDAsIDE1OTQ2LCAxNTk1MiwgMTU5NTgsIDE1OTY0LCAKLSAgICAxNTk3MCwgMTU5NzYsIDE1OTgyLCAxNTk4OCwgMTU5OTQsIDE2MDAwLCAxNjAwNiwgMTYwMTIsIDE2MDE4LCAxNjAyNCwgCi0gICAgMTYwMzAsIDE2MDM2LCAxNjA0MiwgMTYwNDgsIDE2MDU0LCAxNjA2MCwgMTYwNjYsIDE2MDcyLCAxNjA3OCwgMTYwODQsIAotICAgIDE2MDkwLCAxNjA5NSwgMTYxMDEsIDE2MTA3LCAxNjExMSwgMTYxMTcsIDE2MTIxLCAxNjEyNywgMTYxMzMsIDE2MTM5LCAKLSAgICAxNjE0NSwgMTYxNTEsIDE2MTU3LCAxNjE2MiwgMTYxNjgsIDE2MTcyLCAxNjE3NywgMTYxODMsIDE2MTg5LCAxNjE5NSwgCi0gICAgMTYyMDAsIDE2MjA2LCAxNjIxMiwgMTYyMTgsIDE2MjIzLCAxNjIyOSwgMCwgMCwgMCwgMCwgMTYyMzMsIDE2MjM5LCAKLSAgICAxNjI0NCwgMTYyNTAsIDE2MjU1LCAxNjI2MywgMTYyNzEsIDE2Mjc1LCAxNjI3OSwgMTYyODMsIDE2Mjg5LCAxNjI5NSwgCi0gICAgMTYzMDEsIDE2MzA3LCAxNjMxMSwgMTYzMTUsIDE2MzE5LCAxNjMyMywgMTYzMjcsIDE2MzMwLCAxNjMzMywgMTYzMzYsIAotICAgIDE2MzM5LCAxNjM0MiwgMTYzNDUsIDE2MzQ4LCAxNjM1MSwgMTYzNTQsIDE2MzU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxNjM2MiwgMTYzNjcsIDAsIDE2Mzc0LCAwLCAwLCAxNjM4MSwgMTYzODYsIDAsIDE2MzkxLCAwLCAKLSAgICAwLCAxNjM5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY0MDMsIDE2NDA4LCAxNjQxMiwgMTY0MTksIDAsIDE2NDI2LCAxNjQzMSwgCi0gICAgMTY0MzYsIDE2NDQxLCAxNjQ0OCwgMTY0NTUsIDE2NDYyLCAwLCAxNjQ2OSwgMTY0NzQsIDE2NDc5LCAwLCAxNjQ4NiwgMCwgCi0gICAgMTY0OTMsIDAsIDAsIDE2NDk4LCAxNjUwNSwgMCwgMTY1MTIsIDE2NTE2LCAxNjUyMywgMTY1MjcsIDE2NTMyLCAxNjU0MCwgCi0gICAgMTY1NDYsIDE2NTUyLCAxNjU1NywgMTY1NjMsIDE2NTY5LCAxNjU3NSwgMTY1ODAsIDAsIDE2NTg2LCAxNjU5NCwgMTY2MDEsIAotICAgIDAsIDAsIDE2NjA4LCAxNjYxMywgMTY2MTksIDE2NjI0LCAxNjYzMCwgMCwgMTY2MzYsIDAsIDE2NjQyLCAxNjY0OSwgCi0gICAgMTY2NTYsIDE2NjYzLCAxNjY3MCwgMTY2NzUsIDAsIDAsIDE2Njc5LCAxNjY4NCwgMTY2ODgsIDE2NjkyLCAxNjY5NiwgCi0gICAgMTY3MDAsIDE2NzA0LCAxNjcwOCwgMTY3MTIsIDE2NzE2LCAwLCAwLCAxNjcyMCwgMTY3MjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE2NzMyLCAxNjczNiwgMTY3NDcsIDE2NzYyLCAxNjc3NywgMTY3ODcsIDE2Nzk4LCAxNjgxMSwgCi0gICAgMTY4MjIsIDE2ODI4LCAxNjgzNiwgMTY4NDYsIDE2ODUyLCAxNjg2MCwgMTY4NjQsIDE2ODcwLCAxNjg3NiwgMTY4ODQsIAotICAgIDE2ODk0LCAxNjkwMiwgMTY5MTUsIDE2OTIxLCAxNjkyOSwgMTY5MzcsIDE2OTQ5LCAxNjk1NiwgMTY5NjQsIDE2OTcyLCAKLSAgICAxNjk4MCwgMTY5ODgsIDE2OTk2LCAxNzAwNCwgMTcwMTQsIDE3MDE4LCAxNzAyMSwgMTcwMjQsIDE3MDI3LCAxNzAzMCwgCi0gICAgMTcwMzMsIDE3MDM2LCAxNzAzOSwgMTcwNDIsIDE3MDQ1LCAxNzA0OSwgMTcwNTMsIDE3MDU3LCAxNzA2MSwgMTcwNjUsIAotICAgIDE3MDY5LCAxNzA3MywgMTcwNzcsIDE3MDgxLCAxNzA4NiwgMTcwOTIsIDE3MTAyLCAxNzExNiwgMTcxMjYsIDE3MTMyLCAKLSAgICAxNzEzOCwgMTcxNDYsIDE3MTU0LCAxNzE2MiwgMTcxNzAsIDE3MTc2LCAxNzE4MiwgMTcxODUsIDE3MTg5LCAxNzE5MywgCi0gICAgMTcxOTcsIDE3MjAxLCAxNzIwNSwgMTcyMDksIDAsIDE3MjEzLCAxNzIxNywgMTcyMjEsIDE3MjI1LCAxNzIyOSwgMTcyMzMsIAotICAgIDE3MjM3LCAxNzI0MSwgMTcyNDUsIDE3MjQ5LCAxNzI1MywgMTcyNTYsIDE3MjU5LCAxNzI2MywgMTcyNjcsIDE3MjcxLCAKLSAgICAxNzI3NCwgMTcyNzgsIDE3MjgyLCAxNzI4NiwgMTcyOTAsIDE3Mjk0LCAxNzI5OCwgMTczMDIsIDE3MzA2LCAxNzMwOSwgCi0gICAgMTczMTIsIDE3MzE2LCAxNzMyMCwgMTczMjQsIDE3MzI4LCAxNzMzMSwgMTczMzQsIDE3MzM4LCAxNzM0MywgMTczNDcsIDAsIAotICAgIDAsIDAsIDAsIDE3MzUxLCAxNzM1NiwgMTczNjAsIDE3MzY1LCAxNzM2OSwgMTczNzQsIDE3Mzc5LCAxNzM4NSwgMTczOTAsIAotICAgIDE3Mzk2LCAxNzQwMCwgMTc0MDUsIDE3NDA5LCAxNzQxNCwgMTc0MjQsIDE3NDMwLCAxNzQzNiwgMTc0NDMsIDE3NDUzLCAKLSAgICAxNzQ1OSwgMTc0NjMsIDE3NDY3LCAxNzQ3MywgMTc0NzksIDE3NDg3LCAxNzQ5MywgMTc1MDEsIDE3NTA5LCAxNzUxNywgCi0gICAgMTc1MjcsIDE3NTM1LCAxNzU0NSwgMTc1NTAsIDE3NTU2LCAxNzU2MiwgMTc1NjgsIDE3NTc0LCAxNzU4MCwgMTc1ODYsIDAsIAotICAgIDE3NTkyLCAxNzU5OCwgMTc2MDQsIDE3NjEwLCAxNzYxNiwgMTc2MjIsIDE3NjI4LCAxNzYzNCwgMTc2NDAsIDE3NjQ2LCAKLSAgICAxNzY1MiwgMTc2NTcsIDE3NjYyLCAxNzY2OCwgMTc2NzQsIDE3NjgwLCAxNzY4NSwgMTc2OTEsIDE3Njk3LCAxNzcwMywgCi0gICAgMTc3MDksIDE3NzE1LCAxNzcyMSwgMTc3MjcsIDE3NzMzLCAxNzczOCwgMTc3NDMsIDE3NzQ5LCAxNzc1NSwgMTc3NjEsIAotICAgIDE3NzY3LCAxNzc3MiwgMTc3NzcsIDE3NzgzLCAxNzc5MSwgMTc3OTgsIDAsIDE3ODA1LCAxNzgxMiwgMTc4MjUsIDE3ODMyLCAKLSAgICAxNzgzOSwgMTc4NDcsIDE3ODU1LCAxNzg2MSwgMTc4NjcsIDE3ODczLCAxNzg4MywgMTc4ODgsIDE3ODk0LCAxNzkwNCwgCi0gICAgMTc5MTQsIDAsIDE3OTI0LCAxNzkzNCwgMTc5NDIsIDE3OTU0LCAxNzk2NiwgMTc5NzIsIDE3OTg2LCAxODAwMSwgMTgwMDYsIAotICAgIDE4MDExLCAxODAxOSwgMTgwMjcsIDE4MDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODA0MywgCi0gICAgMTgwNDYsIDE4MDUwLCAxODA1NCwgMTgwNTgsIDE4MDYyLCAxODA2NiwgMTgwNzAsIDE4MDc0LCAxODA3OCwgMTgwODIsIAotICAgIDE4MDg2LCAxODA5MCwgMTgwOTQsIDE4MDk4LCAxODEwMiwgMTgxMDYsIDE4MTEwLCAxODExNCwgMTgxMTgsIDE4MTIyLCAKLSAgICAxODEyNSwgMTgxMjgsIDE4MTMyLCAxODEzNiwgMTgxNDAsIDE4MTQzLCAxODE0NiwgMTgxNDksIDE4MTUzLCAxODE1NywgCi0gICAgMTgxNjEsIDE4MTY0LCAxODE2OCwgMTgxNzEsIDE4MTc2LCAxODE3OSwgMTgxODMsIDE4MTg2LCAxODE5MCwgMTgxOTMsIAotICAgIDE4MTk4LCAxODIwMSwgMTgyMDUsIDE4MjEyLCAxODIxNywgMTgyMjEsIDE4MjI2LCAxODIzMCwgMTgyMzUsIDE4MjM5LCAKLSAgICAxODI0NCwgMTgyNTEsIDE4MjU3LCAxODI2MiwgMTgyNjYsIDE4MjcwLCAxODI3NCwgMTgyNzgsIDE4MjgyLCAxODI4OCwgCi0gICAgMTgyOTQsIDE4MzAxLCAxODMwNywgMTgzMTMsIDE4MzE3LCAxODMyMCwgMTgzMjMsIDE4MzI2LCAxODMyOSwgMTgzMzIsIAotICAgIDE4MzM1LCAxODMzOCwgMTgzNDEsIDE4MzQ0LCAxODM1MCwgMTgzNTQsIDE4MzU4LCAxODM2MiwgMTgzNjYsIDE4MzcwLCAKLSAgICAxODM3NCwgMTgzNzgsIDE4MzgyLCAxODM4NywgMTgzOTEsIDE4Mzk2LCAxODQwMSwgMTg0MDcsIDE4NDEyLCAxODQxOCwgCi0gICAgMTg0MjQsIDE4NDMwLCAxODQzNiwgMTg0NDIsIDE4NDUwLCAxODQ1OCwgMTg0NjcsIDE4NDc1LCAxODQ4NCwgMTg0OTMsIAotICAgIDE4NTA0LCAxODUxNCwgMTg1MjQsIDE4NTM1LCAxODU0NiwgMTg1NTYsIDE4NTY2LCAxODU3NiwgMTg1ODYsIDE4NTk2LCAKLSAgICAxODYwNiwgMTg2MTYsIDE4NjI2LCAxODYzNCwgMTg2NDEsIDE4NjQ3LCAxODY1NCwgMTg2NTksIDE4NjY1LCAxODY3MSwgCi0gICAgMTg2NzcsIDE4NjgzLCAxODY4OSwgMTg2OTUsIDE4NzAwLCAxODcwNiwgMTg3MTIsIDE4NzE4LCAxODcyNCwgMTg3MjksIAotICAgIDE4NzM4LCAxODc0NSwgMTg3NTEsIDE4NzU4LCAxODc2NiwgMTg3NzIsIDE4Nzc4LCAxODc4NCwgMTg3OTAsIDE4Nzk4LCAKLSAgICAxODgwNiwgMTg4MTYsIDE4ODI0LCAxODgzMiwgMTg4MzgsIDE4ODQzLCAxODg0OCwgMTg4NTMsIDE4ODU4LCAxODg2MywgCi0gICAgMTg4NjgsIDE4ODczLCAxODg3OCwgMTg4ODMsIDE4ODg5LCAxODg5NSwgMTg5MDEsIDE4OTA4LCAxODkxMywgMTg5MTksIAotICAgIDE4OTI0LCAxODkyOSwgMTg5MzQsIDE4OTM5LCAxODk0NCwgMTg5NDksIDE4OTU0LCAxODk1OSwgMTg5NjQsIDE4OTY5LCAKLSAgICAxODk3NCwgMTg5NzksIDE4OTg0LCAxODk4OSwgMTg5OTQsIDE4OTk5LCAxOTAwNCwgMTkwMDksIDE5MDE0LCAxOTAxOSwgCi0gICAgMTkwMjQsIDE5MDI5LCAxOTAzNCwgMTkwMzksIDE5MDQ0LCAxOTA0OSwgMTkwNTQsIDE5MDU5LCAxOTA2NCwgMTkwNjksIAotICAgIDE5MDc0LCAxOTA3OSwgMTkwODQsIDE5MDg5LCAxOTA5NCwgMTkwOTksIDE5MTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxOTEwOSwgMTkxMTMsIDE5MTE3LCAxOTEyMSwgMTkxMjUsIDE5MTI5LCAxOTEzMywgMTkxMzcsIDE5MTQxLCAKLSAgICAxOTE0NSwgMTkxNDksIDE5MTUzLCAxOTE1NywgMTkxNjEsIDE5MTY1LCAxOTE2OSwgMTkxNzMsIDE5MTc3LCAxOTE4MSwgCi0gICAgMTkxODUsIDE5MTg5LCAxOTE5MywgMTkxOTcsIDE5MjAxLCAxOTIwNSwgMTkyMDksIDE5MjEzLCAxOTIxNywgMTkyMjEsIAotICAgIDE5MjI1LCAxOTIyOSwgMTkyMzMsIDE5MjM3LCAxOTI0MSwgMTkyNDUsIDE5MjQ5LCAxOTI1MywgMTkyNTcsIDE5MjYxLCAKLSAgICAxOTI2NSwgMTkyNjksIDE5MjczLCAxOTI3OSwgMTkyODMsIDE5Mjg4LCAwLCAwLCAwLCAxOTI5MywgMTkyOTcsIDE5MzAxLCAKLSAgICAxOTMwNSwgMTkzMDksIDE5MzEzLCAxOTMxNywgMTkzMjEsIDE5MzI1LCAxOTMyOSwgMTkzMzMsIDE5MzM3LCAxOTM0MSwgCi0gICAgMTkzNDUsIDE5MzQ5LCAxOTM1MywgMTkzNTcsIDE5MzYxLCAxOTM2NSwgMTkzNjksIDE5MzczLCAxOTM3NywgMTkzODEsIAotICAgIDE5Mzg1LCAxOTM4OSwgMTkzOTMsIDE5Mzk3LCAxOTQwMSwgMTk0MDUsIDE5NDA5LCAxOTQxMywgMTk0MTcsIDE5NDIxLCAKLSAgICAxOTQyNSwgMTk0MjksIDE5NDMzLCAxOTQzNywgMTk0NDEsIDE5NDQ1LCAxOTQ0OSwgMTk0NTMsIDE5NDU3LCAxOTQ2MSwgCi0gICAgMTk0NjUsIDE5NDY5LCAxOTQ3MywgMTk0NzcsIDE5NDgxLCAxOTQ4NSwgMTk0ODksIDE5NDkzLCAxOTQ5NywgMTk1MDEsIAotICAgIDE5NTA1LCAxOTUwOSwgMTk1MTMsIDE5NTE3LCAxOTUyMSwgMTk1MjUsIDE5NTI5LCAxOTUzMywgMTk1MzcsIDE5NTQxLCAKLSAgICAxOTU0NSwgMTk1NDksIDE5NTUzLCAxOTU1NywgMTk1NjEsIDE5NTY1LCAxOTU2OSwgMTk1NzMsIDE5NTc3LCAxOTU4MSwgCi0gICAgMTk1ODUsIDE5NTg5LCAxOTU5MywgMTk1OTcsIDE5NjAxLCAxOTYwNSwgMTk2MDksIDE5NjEzLCAxOTYxNywgMTk2MjEsIAotICAgIDE5NjI1LCAxOTYyOSwgMTk2MzMsIDE5NjM3LCAxOTY0MSwgMTk2NDUsIDE5NjQ5LCAxOTY1MywgMTk2NTcsIDE5NjYxLCAKLSAgICAxOTY2NSwgMTk2NjksIDE5NjczLCAxOTY3NywgMTk2ODEsIDE5Njg0LCAxOTY4OCwgMTk2OTEsIDE5Njk1LCAxOTY5OSwgCi0gICAgMTk3MDIsIDE5NzA2LCAxOTcxMCwgMTk3MTMsIDE5NzE3LCAxOTcyMSwgMTk3MjUsIDE5NzI5LCAxOTczMiwgMTk3MzYsIAotICAgIDE5NzQwLCAxOTc0NCwgMTk3NDgsIDE5NzUyLCAxOTc1NiwgMTk3NTksIDE5NzYzLCAxOTc2NywgMTk3NzEsIDE5Nzc1LCAKLSAgICAxOTc3OSwgMTk3ODMsIDE5Nzg3LCAxOTc5MSwgMTk3OTUsIDE5Nzk5LCAxOTgwMywgMTk4MDcsIDE5ODExLCAxOTgxNSwgCi0gICAgMTk4MTksIDE5ODIzLCAxOTgyNywgMTk4MzEsIDE5ODM1LCAxOTgzOSwgMTk4NDMsIDE5ODQ3LCAxOTg1MSwgMTk4NTUsIAotICAgIDE5ODU5LCAxOTg2MywgMTk4NjcsIDE5ODcxLCAxOTg3NSwgMTk4NzksIDE5ODgzLCAxOTg4NywgMTk4OTEsIDE5ODk1LCAKLSAgICAxOTg5OSwgMTk5MDMsIDE5OTA3LCAxOTkxMSwgMTk5MTUsIDE5OTE5LCAxOTkyMywgMTk5MjcsIDE5OTMxLCAxOTkzNSwgCi0gICAgMTk5MzksIDE5OTQzLCAxOTk0NywgMTk5NTEsIDE5OTU1LCAxOTk1OSwgMTk5NjMsIDE5OTY3LCAxOTk3MSwgMTk5NzUsIAotICAgIDE5OTc5LCAxOTk4MywgMTk5ODcsIDE5OTkxLCAxOTk5NSwgMTk5OTksIDIwMDAzLCAyMDAwNywgMjAwMTEsIDIwMDE1LCAKLSAgICAyMDAxOSwgMjAwMjMsIDIwMDI3LCAyMDAzMSwgMjAwMzUsIDIwMDM5LCAyMDA0MywgMjAwNDcsIDIwMDUxLCAyMDA1NSwgCi0gICAgMjAwNTksIDIwMDYzLCAyMDA2NywgMjAwNzEsIDIwMDc1LCAyMDA3OSwgMjAwODMsIDIwMDg3LCAyMDA5MSwgMjAwOTUsIAotICAgIDIwMDk5LCAyMDEwMywgMjAxMDcsIDIwMTExLCAyMDExNSwgMjAxMTksIDIwMTIzLCAyMDEyNywgMjAxMzEsIDIwMTM1LCAKLSAgICAyMDEzOSwgMjAxNDMsIDIwMTQ3LCAyMDE1MSwgMjAxNTUsIDIwMTU5LCAyMDE2MywgMjAxNjcsIDIwMTcxLCAyMDE3NSwgCi0gICAgMjAxNzksIDIwMTgzLCAyMDE4NywgMjAxOTEsIDIwMTk1LCAyMDE5OSwgMjAyMDMsIDIwMjA3LCAyMDIxMSwgMjAyMTUsIAotICAgIDIwMjE5LCAyMDIyMywgMjAyMjcsIDIwMjMxLCAyMDIzNSwgMjAyMzksIDIwMjQzLCAyMDI0NywgMjAyNTEsIDIwMjU1LCAKLSAgICAyMDI1OSwgMjAyNjMsIDIwMjY3LCAyMDI3MSwgMjAyNzUsIDIwMjc5LCAyMDI4MywgMjAyODcsIDIwMjkxLCAyMDI5NSwgCi0gICAgMjAyOTksIDIwMzAzLCAyMDMwNywgMjAzMTEsIDIwMzE0LCAyMDMxOCwgMjAzMjIsIDIwMzI2LCAyMDMzMCwgMjAzMzQsIAotICAgIDIwMzM4LCAyMDM0MiwgMjAzNDYsIDIwMzUwLCAyMDM1NCwgMjAzNTgsIDIwMzYyLCAyMDM2NiwgMjAzNzAsIDIwMzc0LCAKLSAgICAyMDM3OCwgMjAzODIsIDIwMzg2LCAyMDM5MCwgMjAzOTQsIDIwMzk4LCAyMDQwMiwgMjA0MDYsIDIwNDA5LCAyMDQxMywgCi0gICAgMjA0MTcsIDIwNDIxLCAyMDQyNSwgMjA0MjksIDIwNDMzLCAyMDQzNywgMjA0NDEsIDIwNDQ1LCAyMDQ0OSwgMjA0NTMsIAotICAgIDIwNDU3LCAyMDQ2MSwgMjA0NjUsIDIwNDY5LCAyMDQ3MiwgMjA0NzYsIDIwNDgwLCAyMDQ4NCwgMjA0ODgsIDIwNDkyLCAKLSAgICAyMDQ5NiwgMjA1MDAsIDIwNTA0LCAyMDUwOCwgMjA1MTIsIDIwNTE2LCAyMDUyMCwgMjA1MjQsIDIwNTI4LCAyMDUzMiwgCi0gICAgMjA1MzYsIDIwNTQwLCAyMDU0NCwgMjA1NDgsIDIwNTUyLCAyMDU1NiwgMjA1NjAsIDIwNTY0LCAyMDU2OCwgMjA1NzIsIAotICAgIDIwNTc2LCAyMDU4MCwgMjA1ODQsIDIwNTg4LCAyMDU5MiwgMjA1OTYsIDAsIDIwNjAwLCAyMDYwNCwgMjA2MDgsIDIwNjEyLCAKLSAgICAwLCAwLCAyMDYxNiwgMjA2MjAsIDIwNjI0LCAyMDYyOCwgMjA2MzIsIDIwNjM2LCAyMDY0MCwgMCwgMjA2NDQsIDAsIAotICAgIDIwNjQ4LCAyMDY1MiwgMjA2NTYsIDIwNjYwLCAwLCAwLCAyMDY2NCwgMjA2NjgsIDIwNjcyLCAyMDY3NiwgMjA2ODAsIAotICAgIDIwNjg0LCAyMDY4OCwgMjA2OTIsIDIwNjk2LCAyMDcwMCwgMjA3MDQsIDIwNzA4LCAyMDcxMiwgMjA3MTYsIDIwNzIwLCAKLSAgICAyMDcyNCwgMjA3MjgsIDIwNzMyLCAyMDczNiwgMjA3NDAsIDIwNzQ0LCAyMDc0OCwgMjA3NTIsIDIwNzU1LCAyMDc1OSwgCi0gICAgMjA3NjMsIDIwNzY3LCAyMDc3MSwgMjA3NzUsIDIwNzc5LCAyMDc4MywgMjA3ODcsIDIwNzkxLCAyMDc5NSwgMjA3OTksIAotICAgIDIwODAzLCAyMDgwNywgMjA4MTEsIDIwODE1LCAyMDgxOSwgMjA4MjMsIDAsIDIwODI3LCAyMDgzMSwgMjA4MzUsIDIwODM5LCAKLSAgICAwLCAwLCAyMDg0MywgMjA4NDYsIDIwODUwLCAyMDg1NCwgMjA4NTgsIDIwODYyLCAyMDg2NiwgMjA4NzAsIDIwODc0LCAKLSAgICAyMDg3OCwgMjA4ODIsIDIwODg2LCAyMDg5MCwgMjA4OTQsIDIwODk4LCAyMDkwMiwgMjA5MDYsIDIwOTExLCAyMDkxNiwgCi0gICAgMjA5MjEsIDIwOTI3LCAyMDkzMywgMjA5MzgsIDIwOTQzLCAyMDk0OSwgMjA5NTIsIDIwOTU2LCAyMDk2MCwgMjA5NjQsIAotICAgIDIwOTY4LCAyMDk3MiwgMjA5NzYsIDIwOTgwLCAwLCAyMDk4NCwgMjA5ODgsIDIwOTkyLCAyMDk5NiwgMCwgMCwgMjEwMDAsIAotICAgIDIxMDA0LCAyMTAwOCwgMjEwMTIsIDIxMDE2LCAyMTAyMCwgMjEwMjQsIDAsIDIxMDI4LCAwLCAyMTAzMiwgMjEwMzYsIAotICAgIDIxMDQwLCAyMTA0NCwgMCwgMCwgMjEwNDgsIDIxMDUyLCAyMTA1NiwgMjEwNjAsIDIxMDY0LCAyMTA2OCwgMjEwNzIsIAotICAgIDIxMDc2LCAyMTA4MCwgMjEwODUsIDIxMDkwLCAyMTA5NSwgMjExMDEsIDIxMTA3LCAyMTExMiwgMCwgMjExMTcsIDIxMTIxLCAKLSAgICAyMTEyNSwgMjExMjksIDIxMTMzLCAyMTEzNywgMjExNDEsIDIxMTQ1LCAyMTE0OSwgMjExNTMsIDIxMTU3LCAyMTE2MSwgCi0gICAgMjExNjUsIDIxMTY5LCAyMTE3MywgMjExNzcsIDIxMTgxLCAyMTE4NCwgMjExODgsIDIxMTkyLCAyMTE5NiwgMjEyMDAsIAotICAgIDIxMjA0LCAyMTIwOCwgMjEyMTIsIDIxMjE2LCAyMTIyMCwgMjEyMjQsIDIxMjI4LCAyMTIzMiwgMjEyMzYsIDIxMjQwLCAKLSAgICAyMTI0NCwgMjEyNDgsIDIxMjUyLCAyMTI1NiwgMjEyNjAsIDIxMjY0LCAyMTI2OCwgMjEyNzIsIDIxMjc2LCAyMTI4MCwgCi0gICAgMjEyODQsIDIxMjg4LCAyMTI5MiwgMjEyOTYsIDIxMzAwLCAyMTMwNCwgMjEzMDgsIDIxMzEyLCAyMTMxNiwgMjEzMjAsIAotICAgIDIxMzI0LCAyMTMyOCwgMjEzMzIsIDIxMzM2LCAyMTM0MCwgMCwgMjEzNDQsIDIxMzQ4LCAyMTM1MiwgMjEzNTYsIDAsIDAsIAotICAgIDIxMzYwLCAyMTM2NCwgMjEzNjgsIDIxMzcyLCAyMTM3NiwgMjEzODAsIDIxMzg0LCAyMTM4OCwgMjEzOTIsIDIxMzk2LCAKLSAgICAyMTQwMCwgMjE0MDQsIDIxNDA4LCAyMTQxMiwgMjE0MTYsIDIxNDIwLCAyMTQyNCwgMjE0MjgsIDIxNDMyLCAyMTQzNiwgCi0gICAgMjE0NDAsIDIxNDQ0LCAyMTQ0OCwgMjE0NTIsIDIxNDU2LCAyMTQ2MCwgMjE0NjQsIDIxNDY4LCAyMTQ3MiwgMjE0NzYsIAotICAgIDIxNDgwLCAyMTQ4NCwgMjE0ODgsIDIxNDkyLCAyMTQ5NiwgMjE1MDAsIDIxNTA0LCAyMTUwOCwgMjE1MTIsIDIxNTE2LCAKLSAgICAyMTUyMCwgMjE1MjQsIDIxNTI4LCAyMTUzMiwgMjE1MzYsIDIxNTQwLCAyMTU0NCwgMjE1NDgsIDIxNTUyLCAyMTU1NiwgCi0gICAgMjE1NjAsIDIxNTY0LCAyMTU2OCwgMjE1NzIsIDIxNTc2LCAyMTU4MCwgMjE1ODQsIDIxNTg3LCAyMTU5MSwgMjE1OTUsIAotICAgIDIxNTk5LCAyMTYwMywgMjE2MDcsIDIxNjExLCAyMTYxNSwgMjE2MTksIDIxNjIzLCAwLCAwLCAyMTYyNywgMjE2MzYsIAotICAgIDIxNjQyLCAyMTY0NywgMjE2NTEsIDIxNjU0LCAyMTY1OSwgMjE2NjIsIDIxNjY1LCAyMTY2OCwgMjE2NzMsIDIxNjc3LCAKLSAgICAyMTY4MiwgMjE2ODUsIDIxNjg4LCAyMTY5MSwgMjE2OTQsIDIxNjk3LCAyMTcwMCwgMjE3MDMsIDIxNzA2LCAyMTcwOSwgCi0gICAgMjE3MTMsIDIxNzE3LCAyMTcyMSwgMjE3MjUsIDIxNzI5LCAyMTczMywgMjE3MzcsIDIxNzQxLCAyMTc0NSwgMjE3NDksIDAsIAotICAgIDAsIDAsIDIxNzU1LCAyMTc2MSwgMjE3NjUsIDIxNzY5LCAyMTc3MywgMjE3NzksIDIxNzgzLCAyMTc4NywgMjE3OTEsIAotICAgIDIxNzk3LCAyMTgwMSwgMjE4MDUsIDIxODA5LCAyMTgxNSwgMjE4MTksIDIxODIzLCAyMTgyNywgMjE4MzMsIDIxODM5LCAKLSAgICAyMTg0NSwgMjE4NTMsIDIxODU5LCAyMTg2NSwgMjE4NzEsIDIxODc3LCAyMTg4MywgMCwgMCwgMCwgMCwgMCwgMCwgMjE4ODksIAotICAgIDIxODkyLCAyMTg5NSwgMjE4OTgsIDIxOTAxLCAyMTkwNCwgMjE5MDgsIDIxOTEyLCAyMTkxNSwgMjE5MTksIDIxOTIzLCAKLSAgICAyMTkyNywgMjE5MzEsIDIxOTM1LCAyMTkzOCwgMjE5NDIsIDIxOTQ2LCAyMTk1MCwgMjE5NTQsIDIxOTU4LCAyMTk2MiwgCi0gICAgMjE5NjYsIDIxOTcwLCAyMTk3NCwgMjE5NzgsIDIxOTgyLCAyMTk4NSwgMjE5ODksIDIxOTkzLCAyMTk5NywgMjIwMDEsIAotICAgIDIyMDA0LCAyMjAwOCwgMjIwMTIsIDIyMDE2LCAyMjAyMCwgMjIwMjQsIDIyMDI4LCAyMjAzMiwgMjIwMzYsIDIyMDQwLCAKLSAgICAyMjA0NCwgMjIwNDgsIDIyMDUyLCAyMjA1NiwgMjIwNjAsIDIyMDYzLCAyMjA2NywgMjIwNzEsIDIyMDc1LCAyMjA3OSwgCi0gICAgMjIwODMsIDIyMDg3LCAyMjA5MSwgMjIwOTUsIDIyMDk5LCAyMjEwMywgMjIxMDcsIDIyMTExLCAyMjExNSwgMjIxMTksIAotICAgIDIyMTIzLCAyMjEyNywgMjIxMzEsIDIyMTM1LCAyMjEzOSwgMjIxNDMsIDIyMTQ3LCAyMjE1MSwgMjIxNTUsIDIyMTU5LCAKLSAgICAyMjE2MywgMjIxNjcsIDIyMTcxLCAyMjE3NSwgMjIxNzksIDIyMTgzLCAyMjE4NywgMjIxOTEsIDIyMTk1LCAyMjE5OCwgCi0gICAgMjIyMDIsIDIyMjA2LCAyMjIxMCwgMjIyMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyMjE4LCAKLSAgICAyMjIyMiwgMjIyMjUsIDIyMjI5LCAyMjIzMiwgMjIyMzYsIDIyMjM5LCAyMjI0MywgMjIyNDksIDIyMjU0LCAyMjI1OCwgCi0gICAgMjIyNjEsIDIyMjY1LCAyMjI2OSwgMjIyNzQsIDIyMjc4LCAyMjI4MywgMjIyODcsIDIyMjkyLCAyMjI5NiwgMjIzMDEsIAotICAgIDIyMzA1LCAyMjMxMCwgMjIzMTYsIDIyMzIwLCAyMjMyNSwgMjIzMjksIDIyMzM0LCAyMjM0MCwgMjIzNDQsIDIyMzUwLCAKLSAgICAyMjM1NiwgMjIzNjAsIDIyMzY1LCAyMjM3MywgMjIzODEsIDIyMzg4LCAyMjM5MywgMjIzOTgsIDIyNDA3LCAyMjQxNCwgCi0gICAgMjI0MjEsIDIyNDI2LCAyMjQzMiwgMjI0MzYsIDIyNDQwLCAyMjQ0NCwgMjI0NDgsIDIyNDUyLCAyMjQ1NiwgMjI0NjAsIAotICAgIDIyNDY0LCAyMjQ2OCwgMjI0NzIsIDIyNDc4LCAyMjQ4MywgMjI0ODgsIDIyNDkxLCAyMjQ5NSwgMjI0OTksIDIyNTA0LCAKLSAgICAyMjUwOCwgMjI1MTMsIDIyNTE3LCAyMjUyMiwgMjI1MjYsIDIyNTMxLCAyMjUzNSwgMjI1NDAsIDIyNTQ0LCAyMjU0OSwgCi0gICAgMjI1NTMsIDIyNTU4LCAyMjU2NCwgMjI1NjgsIDIyNTczLCAyMjU3OCwgMjI1ODIsIDIyNTg2LCAyMjU5MCwgMjI1OTQsIAotICAgIDIyNTk3LCAyMjYwMSwgMjI2MDcsIDIyNjEyLCAyMjYxNywgMjI2MjEsIDIyNjI1LCAyMjYyOSwgMjI2MzQsIDIyNjM4LCAKLSAgICAyMjY0MywgMjI2NDcsIDIyNjUyLCAyMjY1NSwgMjI2NTksIDIyNjYzLCAyMjY2OCwgMjI2NzIsIDIyNjc3LCAyMjY4MSwgCi0gICAgMjI2ODYsIDIyNjkyLCAyMjY5NiwgMjI3MDAsIDIyNzA0LCAyMjcwOCwgMjI3MTIsIDIyNzE2LCAyMjcyMCwgMjI3MjQsIAotICAgIDIyNzI4LCAyMjczMiwgMjI3MzYsIDIyNzQyLCAyMjc0NSwgMjI3NDksIDIyNzUzLCAyMjc1OCwgMjI3NjIsIDIyNzY3LCAKLSAgICAyMjc3MSwgMjI3NzYsIDIyNzgwLCAyMjc4NSwgMjI3ODksIDIyNzk0LCAyMjc5OCwgMjI4MDMsIDIyODA3LCAyMjgxMiwgCi0gICAgMjI4MTgsIDIyODIyLCAyMjgyNiwgMjI4MzIsIDIyODM4LCAyMjg0NCwgMjI4NTAsIDIyODU0LCAyMjg1OCwgMjI4NjIsIAotICAgIDIyODY2LCAyMjg3MCwgMjI4NzQsIDIyODgwLCAyMjg4NCwgMjI4ODgsIDIyODkyLCAyMjg5NywgMjI5MDEsIDIyOTA2LCAKLSAgICAyMjkxMCwgMjI5MTUsIDIyOTE5LCAyMjkyNCwgMjI5MjgsIDIyOTMzLCAyMjkzNywgMjI5NDIsIDIyOTQ2LCAyMjk1MSwgCi0gICAgMjI5NTcsIDIyOTYxLCAyMjk2NywgMjI5NzEsIDIyOTc1LCAyMjk3OSwgMjI5ODMsIDIyOTg3LCAyMjk5MSwgMjI5OTcsIAotICAgIDIzMDAwLCAyMzAwNCwgMjMwMDgsIDIzMDEzLCAyMzAxNywgMjMwMjIsIDIzMDI2LCAyMzAzMSwgMjMwMzUsIDIzMDQwLCAKLSAgICAyMzA0NCwgMjMwNDksIDIzMDUzLCAyMzA1OCwgMjMwNjIsIDIzMDY3LCAyMzA3MywgMjMwNzYsIDIzMDgwLCAyMzA4NCwgCi0gICAgMjMwODksIDIzMDk0LCAyMzA5OCwgMjMxMDIsIDIzMTA2LCAyMzExMCwgMjMxMTQsIDIzMTE4LCAyMzEyNCwgMjMxMjcsIAotICAgIDIzMTMxLCAyMzEzNSwgMjMxNDAsIDIzMTQ0LCAyMzE0OSwgMjMxNTMsIDIzMTU4LCAyMzE2NCwgMjMxNjcsIDIzMTcyLCAKLSAgICAyMzE3NiwgMjMxODAsIDIzMTg0LCAyMzE4OCwgMjMxOTIsIDIzMTk2LCAyMzIwMCwgMjMyMDYsIDIzMjEwLCAyMzIxNCwgCi0gICAgMjMyMTgsIDIzMjIzLCAyMzIyNywgMjMyMzIsIDIzMjM2LCAyMzI0MSwgMjMyNDUsIDIzMjUwLCAyMzI1NCwgMjMyNTksIAotICAgIDIzMjYzLCAyMzI2OCwgMjMyNzIsIDIzMjc3LCAyMzI4MCwgMjMyODQsIDIzMjg4LCAyMzI5MiwgMjMyOTYsIDIzMzAwLCAKLSAgICAyMzMwNCwgMjMzMDgsIDIzMzEyLCAyMzMxOCwgMjMzMjIsIDIzMzI2LCAyMzMzMCwgMjMzMzUsIDIzMzM5LCAyMzM0NCwgCi0gICAgMjMzNDgsIDIzMzUzLCAyMzM1NywgMjMzNjIsIDIzMzY2LCAyMzM3MSwgMjMzNzUsIDIzMzgwLCAyMzM4NCwgMjMzODksIAotICAgIDIzMzk1LCAyMzM5OCwgMjM0MDMsIDIzNDA3LCAyMzQxMiwgMjM0MTgsIDIzNDI0LCAyMzQzMCwgMjM0MzYsIDIzNDQyLCAKLSAgICAyMzQ0OCwgMjM0NTQsIDIzNDU4LCAyMzQ2MiwgMjM0NjYsIDIzNDcwLCAyMzQ3NCwgMjM0NzgsIDIzNDgyLCAyMzQ4NiwgCi0gICAgMjM0OTEsIDIzNDk1LCAyMzUwMCwgMjM1MDQsIDIzNTA5LCAyMzUxMywgMjM1MTgsIDIzNTIyLCAyMzUyNywgMjM1MzEsIAotICAgIDIzNTM2LCAyMzU0MCwgMjM1NDUsIDIzNTQ5LCAyMzU1MywgMjM1NTcsIDIzNTYxLCAyMzU2NSwgMjM1NjksIDIzNTczLCAKLSAgICAyMzU3OSwgMjM1ODIsIDIzNTg2LCAyMzU5MCwgMjM1OTUsIDIzNTk5LCAyMzYwNCwgMjM2MDgsIDIzNjEzLCAyMzYxNywgCi0gICAgMjM2MjIsIDIzNjI2LCAyMzYzMSwgMjM2MzUsIDIzNjQwLCAyMzY0NCwgMjM2NDksIDIzNjU1LCAyMzY1OSwgMjM2NjUsIAotICAgIDIzNjcwLCAyMzY3NiwgMjM2ODAsIDIzNjg2LCAyMzY5MSwgMjM2OTUsIDIzNjk5LCAyMzcwMywgMjM3MDcsIDIzNzExLCAKLSAgICAyMzcxNiwgMjM3MTksIDIzNzIzLCAyMzcyOCwgMjM3MzIsIDIzNzM3LCAyMzc0MCwgMjM3NDQsIDIzNzQ4LCAyMzc1MiwgCi0gICAgMjM3NTYsIDIzNzYwLCAyMzc2NCwgMjM3NjgsIDIzNzcyLCAyMzc3NiwgMjM3ODAsIDIzNzg0LCAyMzc4OSwgMjM3OTMsIAotICAgIDIzNzk3LCAyMzgwMywgMjM4MDcsIDIzODEzLCAyMzgxNywgMjM4MjMsIDIzODI3LCAyMzgzMSwgMjM4MzUsIDIzODM5LCAKLSAgICAyMzg0MywgMjM4NDgsIDIzODUyLCAyMzg1NiwgMjM4NjAsIDIzODY0LCAyMzg2OCwgMjM4NzIsIDIzODc2LCAyMzg4MCwgCi0gICAgMjM4ODQsIDIzODg4LCAyMzg5NCwgMjM5MDAsIDIzOTA2LCAyMzkxMiwgMjM5MTgsIDIzOTIzLCAyMzkyOSwgMjM5MzUsIAotICAgIDIzOTQxLCAyMzk0NSwgMjM5NDksIDIzOTUzLCAyMzk1NywgMjM5NjEsIDIzOTY1LCAyMzk2OSwgMjM5NzMsIDIzOTc3LCAKLSAgICAyMzk4MSwgMjM5ODUsIDIzOTg5LCAyMzk5MywgMjM5OTgsIDI0MDAzLCAyNDAwOCwgMjQwMTIsIDI0MDE2LCAyNDAyMCwgCi0gICAgMjQwMjQsIDI0MDI4LCAyNDAzMiwgMjQwMzYsIDI0MDQwLCAyNDA0NCwgMjQwNDgsIDI0MDU0LCAyNDA2MCwgMjQwNjYsIAotICAgIDI0MDcyLCAyNDA3OCwgMjQwODQsIDI0MDkwLCAyNDA5NiwgMjQxMDIsIDI0MTA2LCAyNDExMCwgMjQxMTQsIDI0MTE4LCAKLSAgICAyNDEyMiwgMjQxMjYsIDI0MTMwLCAyNDEzNiwgMjQxNDIsIDI0MTQ4LCAyNDE1NCwgMjQxNjAsIDI0MTY2LCAyNDE3MiwgCi0gICAgMjQxNzgsIDI0MTg0LCAyNDE4OSwgMjQxOTQsIDI0MTk5LCAyNDIwNCwgMjQyMTAsIDI0MjE2LCAyNDIyMiwgMjQyMjgsIAotICAgIDI0MjM0LCAyNDI0MCwgMjQyNDYsIDI0MjUxLCAyNDI1NywgMjQyNjMsIDI0MjY5LCAyNDI3NCwgMjQyODAsIDI0Mjg2LCAKLSAgICAyNDI5MiwgMjQyOTcsIDI0MzAyLCAyNDMwNywgMjQzMTIsIDI0MzE3LCAyNDMyMiwgMjQzMjcsIDI0MzMyLCAyNDMzNywgCi0gICAgMjQzNDIsIDI0MzQ3LCAyNDM1MiwgMjQzNTYsIDI0MzYxLCAyNDM2NiwgMjQzNzEsIDI0Mzc2LCAyNDM4MSwgMjQzODYsIAotICAgIDI0MzkxLCAyNDM5NiwgMjQ0MDEsIDI0NDA2LCAyNDQxMSwgMjQ0MTYsIDI0NDIxLCAyNDQyNiwgMjQ0MzEsIDI0NDM2LCAKLSAgICAyNDQ0MSwgMjQ0NDYsIDI0NDUxLCAyNDQ1NiwgMjQ0NjEsIDI0NDY2LCAyNDQ3MSwgMjQ0NzYsIDI0NDgxLCAyNDQ4NiwgCi0gICAgMjQ0OTEsIDI0NDk2LCAyNDUwMSwgMjQ1MDUsIDI0NTEwLCAyNDUxNSwgMjQ1MjAsIDI0NTI1LCAyNDUzMCwgMjQ1MzUsIAotICAgIDI0NTQwLCAyNDU0NSwgMjQ1NTAsIDI0NTU1LCAyNDU2MCwgMjQ1NjUsIDI0NTcwLCAyNDU3NSwgMjQ1ODAsIDI0NTg1LCAKLSAgICAyNDU5MCwgMjQ1OTUsIDI0NjAwLCAyNDYwNSwgMjQ2MTAsIDI0NjE1LCAyNDYyMCwgMjQ2MjUsIDI0NjMwLCAyNDYzNCwgCi0gICAgMjQ2MzksIDI0NjQ0LCAyNDY0OSwgMjQ2NTQsIDI0NjU5LCAyNDY2MywgMjQ2NjgsIDI0NjczLCAyNDY3OCwgMjQ2ODMsIAotICAgIDI0Njg4LCAyNDY5MiwgMjQ2OTcsIDI0NzAzLCAyNDcwOCwgMjQ3MTMsIDI0NzE4LCAyNDcyMywgMjQ3MjksIDI0NzM0LCAKLSAgICAyNDczOSwgMjQ3NDQsIDI0NzQ5LCAyNDc1NCwgMjQ3NTksIDI0NzY0LCAyNDc2OSwgMjQ3NzQsIDI0Nzc5LCAyNDc4NCwgCi0gICAgMjQ3ODksIDI0Nzk0LCAyNDc5OSwgMjQ4MDQsIDI0ODA5LCAyNDgxNCwgMjQ4MTksIDI0ODI0LCAyNDgyOSwgMjQ4MzQsIAotICAgIDI0ODM5LCAyNDg0NCwgMjQ4NDksIDI0ODU0LCAyNDg1OSwgMjQ4NjQsIDI0ODY5LCAyNDg3NCwgMjQ4NzksIDI0ODg0LCAKLSAgICAyNDg4OSwgMjQ4OTQsIDI0ODk5LCAyNDkwNCwgMjQ5MDksIDI0OTE0LCAyNDkxOSwgMjQ5MjQsIDI0OTI5LCAyNDkzNCwgCi0gICAgMjQ5MzksIDI0OTQ0LCAyNDk0OSwgMjQ5NTUsIDI0OTYwLCAyNDk2NSwgMjQ5NzAsIDI0OTc1LCAyNDk4MCwgMjQ5ODUsIAotICAgIDI0OTkwLCAyNDk5NSwgMjUwMDAsIDI1MDA1LCAyNTAxMCwgMjUwMTUsIDI1MDIwLCAyNTAyNSwgMjUwMzAsIDI1MDM1LCAKLSAgICAyNTA0MCwgMjUwNDUsIDI1MDUwLCAyNTA1NSwgMjUwNjAsIDI1MDY1LCAyNTA3MCwgMjUwNzUsIDI1MDgwLCAyNTA4NSwgCi0gICAgMjUwOTAsIDI1MDk1LCAyNTEwMCwgMjUxMDUsIDI1MTEwLCAyNTExNSwgMjUxMjAsIDI1MTI1LCAyNTEzMCwgMjUxMzUsIAotICAgIDI1MTQwLCAyNTE0NSwgMjUxNTEsIDI1MTU1LCAyNTE1OSwgMjUxNjMsIDI1MTY3LCAyNTE3MSwgMjUxNzUsIDI1MTc5LCAKLSAgICAyNTE4MywgMjUxODksIDI1MTk1LCAyNTIwMSwgMjUyMDcsIDI1MjEzLCAyNTIxOSwgMjUyMjUsIDI1MjMyLCAyNTIzOCwgCi0gICAgMjUyNDMsIDI1MjQ4LCAyNTI1MywgMjUyNTgsIDI1MjYzLCAyNTI2OCwgMjUyNzMsIDI1Mjc4LCAyNTI4MywgMjUyODgsIAotICAgIDI1MjkzLCAyNTI5OCwgMjUzMDMsIDI1MzA4LCAyNTMxMywgMjUzMTgsIDI1MzIzLCAyNTMyOCwgMjUzMzMsIDI1MzM4LCAKLSAgICAyNTM0MywgMjUzNDgsIDI1MzUzLCAyNTM1OCwgMjUzNjMsIDI1MzY4LCAyNTM3MywgMjUzNzgsIDAsIDAsIDAsIDI1Mzg1LCAKLSAgICAyNTM5NSwgMjUzOTksIDI1NDA2LCAyNTQxMCwgMjU0MTQsIDI1NDE4LCAyNTQyNiwgMjU0MzAsIDI1NDM1LCAyNTQ0MCwgCi0gICAgMjU0NDUsIDI1NDQ5LCAyNTQ1NCwgMjU0NTksIDI1NDYyLCAyNTQ2NiwgMjU0NzAsIDI1NDc5LCAyNTQ4MywgMjU0ODcsIAotICAgIDI1NDkzLCAyNTQ5NywgMjU1MDEsIDI1NTA5LCAyNTUxMywgMjU1MjEsIDI1NTI3LCAyNTUzMywgMjU1MzksIDI1NTQ1LCAKLSAgICAyNTU1NCwgMjU1NTksIDI1NTYzLCAyNTU3MiwgMjU1NzUsIDI1NTgxLCAyNTU4NSwgMjU1OTEsIDI1NTk2LCAyNTYwMiwgCi0gICAgMjU2MTAsIDI1NjE2LCAyNTYyMSwgMjU2MjgsIDI1NjMzLCAyNTYzNywgMjU2NDEsIDI1NjUxLCAyNTY1NywgMjU2NjEsIAotICAgIDI1NjcxLCAyNTY3NywgMjU2ODEsIDI1Njg1LCAyNTY5MiwgMjU2OTksIDI1NzA0LCAyNTcwOSwgMjU3MTgsIDI1NzIyLCAKLSAgICAyNTcyNiwgMjU3MzAsIDI1NzM4LCAyNTc0NSwgMjU3NDksIDI1NzUzLCAyNTc1NywgMjU3NjEsIDI1NzY1LCAyNTc2OSwgCi0gICAgMjU3NzMsIDI1Nzc3LCAyNTc4MSwgMjU3ODUsIDI1Nzg5LCAyNTc5NCwgMjU3OTksIDI1ODA0LCAyNTgwOCwgMjU4MTIsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1ODE2LCAyNTgyMCwgMjU4MjQsIDI1ODI4LCAKLSAgICAyNTgzMiwgMjU4MzcsIDI1ODQyLCAyNTg0NywgMjU4NTIsIDI1ODU2LCAyNTg2MCwgMjU4NjUsIDI1ODY5LCAwLCAyNTg3MywgCi0gICAgMjU4NzgsIDI1ODgzLCAyNTg4OCwgMjU4OTIsIDI1ODk3LCAyNTkwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjU5MDcsIDI1OTExLCAyNTkxNSwgMjU5MTksIDI1OTIzLCAyNTkyOCwgMjU5MzMsIDI1OTM4LCAyNTk0MywgMjU5NDcsIAotICAgIDI1OTUxLCAyNTk1NiwgMjU5NjAsIDI1OTY0LCAyNTk2OCwgMjU5NzMsIDI1OTc4LCAyNTk4MywgMjU5ODcsIDI1OTkyLCAKLSAgICAyNTk5NywgMjYwMDIsIDI2MDA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjAxMywgMjYwMTcsIDI2MDIxLCAKLSAgICAyNjAyNSwgMjYwMjksIDI2MDM0LCAyNjAzOSwgMjYwNDQsIDI2MDQ5LCAyNjA1MywgMjYwNTcsIDI2MDYyLCAyNjA2NiwgCi0gICAgMjYwNzAsIDI2MDc0LCAyNjA3OSwgMjYwODQsIDI2MDg5LCAyNjA5MywgMjYwOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDI2MTAzLCAyNjEwNywgMjYxMTEsIDI2MTE1LCAyNjExOSwgMjYxMjQsIDI2MTI5LCAyNjEzNCwgCi0gICAgMjYxMzksIDI2MTQzLCAyNjE0NywgMjYxNTIsIDI2MTU2LCAwLCAyNjE2MCwgMjYxNjUsIDI2MTcwLCAwLCAyNjE3NSwgCi0gICAgMjYxODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MTg1LCAyNjE4OCwgMjYxOTIsIDI2MTk2LCAKLSAgICAyNjIwMCwgMjYyMDQsIDI2MjA4LCAyNjIxMiwgMjYyMTYsIDI2MjIwLCAyNjIyNCwgMjYyMjgsIDI2MjMyLCAyNjIzNiwgCi0gICAgMjYyNDAsIDI2MjQ0LCAyNjI0OCwgMjYyNTIsIDI2MjU1LCAyNjI1OSwgMjYyNjMsIDI2MjY3LCAyNjI3MSwgMjYyNzUsIAotICAgIDI2Mjc5LCAyNjI4MywgMjYyODcsIDI2MjkxLCAyNjI5NSwgMjYyOTksIDI2MzAzLCAyNjMwNywgMjYzMTEsIDI2MzE0LCAKLSAgICAyNjMxOCwgMjYzMjIsIDI2MzI4LCAyNjMzNCwgMjYzNDAsIDI2MzQ2LCAyNjM1MiwgMjYzNTgsIDI2MzY0LCAyNjM3MCwgCi0gICAgMjYzNzYsIDI2MzgyLCAyNjM4OCwgMjYzOTQsIDI2NDAwLCAyNjQwNiwgMjY0MTUsIDI2NDI0LCAyNjQzMCwgMjY0MzYsIAotICAgIDI2NDQyLCAyNjQ0NywgMjY0NTEsIDI2NDU2LCAyNjQ2MSwgMjY0NjYsIDI2NDcwLCAyNjQ3NSwgMjY0ODAsIDI2NDg1LCAKLSAgICAyNjQ4OSwgMjY0OTQsIDI2NDk4LCAyNjUwMywgMjY1MDgsIDI2NTEzLCAyNjUxOCwgMjY1MjIsIDI2NTI2LCAyNjUzMCwgCi0gICAgMjY1MzQsIDI2NTM4LCAyNjU0MiwgMjY1NDYsIDI2NTUwLCAyNjU1NCwgMjY1NTgsIDI2NTY0LCAyNjU2OCwgMjY1NzIsIAotICAgIDI2NTc2LCAyNjU4MCwgMjY1ODQsIDI2NTkyLCAyNjU5OCwgMjY2MDIsIDI2NjA4LCAyNjYxMiwgMjY2MTgsIDI2NjIyLCAwLCAKLSAgICAwLCAyNjYyNiwgMjY2MzAsIDI2NjMzLCAyNjYzNiwgMjY2MzksIDI2NjQyLCAyNjY0NSwgMjY2NDgsIDI2NjUxLCAyNjY1NCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMjY2NTcsIDI2NjY1LCAyNjY3MywgMjY2ODEsIDI2Njg5LCAyNjY5NywgMjY3MDUsIDI2NzEzLCAKLSAgICAyNjcyMSwgMjY3MjksIDAsIDAsIDAsIDAsIDAsIDAsIDI2NzM3LCAyNjc0MCwgMjY3NDMsIDI2NzQ2LCAyNjc1MSwgMjY3NTQsIAotICAgIDI2NzU5LCAyNjc2NiwgMjY3NzQsIDI2Nzc5LCAyNjc4NiwgMjY3ODksIDI2Nzk2LCAyNjgwMywgMjY4MTAsIDAsIDI2ODE0LCAKLSAgICAyNjgxOCwgMjY4MjEsIDI2ODI0LCAyNjgyNywgMjY4MzAsIDI2ODMzLCAyNjgzNiwgMjY4MzksIDI2ODQyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAyNjg0NSwgMjY4NDgsIDI2ODUxLCAyNjg1NCwgMjY4NTcsIDI2ODYwLCAyNjg2NCwgMjY4NjgsIDI2ODcyLCAKLSAgICAyNjg3NSwgMjY4NzksIDI2ODgzLCAyNjg4NiwgMjY4OTAsIDI2ODk0LCAyNjg5NywgMjY5MDEsIDI2OTA1LCAyNjkwOSwgCi0gICAgMjY5MTMsIDI2OTE3LCAyNjkyMSwgMjY5MjUsIDI2OTI4LCAyNjkzMSwgMjY5MzUsIDI2OTM5LCAyNjk0MiwgMjY5NDYsIAotICAgIDI2OTUwLCAyNjk1NCwgMjY5NTgsIDI2OTYyLCAyNjk2NiwgMjY5NzAsIDI2OTc0LCAyNjk4MSwgMjY5ODYsIDI2OTkxLCAKLSAgICAyNjk5NiwgMjcwMDEsIDI3MDA3LCAyNzAxMywgMjcwMTksIDI3MDI1LCAyNzAzMCwgMjcwMzYsIDI3MDQyLCAyNzA0NywgCi0gICAgMjcwNTMsIDI3MDU5LCAyNzA2NSwgMjcwNzEsIDI3MDc3LCAyNzA4MiwgMjcwODgsIDI3MDkzLCAyNzA5OSwgMjcxMDUsIAotICAgIDI3MTExLCAyNzExNywgMjcxMjMsIDI3MTI4LCAyNzEzMywgMjcxMzksIDI3MTQ1LCAyNzE1MCwgMjcxNTYsIDI3MTYxLCAKLSAgICAyNzE2NywgMjcxNzIsIDI3MTc3LCAyNzE4MywgMjcxODksIDI3MTk1LCAyNzIwMSwgMjcyMDcsIDI3MjEzLCAyNzIxOSwgCi0gICAgMjcyMjUsIDI3MjMxLCAyNzIzNywgMjcyNDMsIDI3MjQ5LCAyNzI1NCwgMjcyNTksIDI3MjY0LCAyNzI3MCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjcyNzYsIDI3Mjg1LCAyNzI5NCwgMjczMDIsIDI3MzEwLCAyNzMyMCwgMjczMjgsIDI3MzM3LCAKLSAgICAyNzM0NCwgMjczNTEsIDI3MzU4LCAyNzM2NiwgMjczNzQsIDI3MzgyLCAyNzM5MCwgMjczOTgsIDI3NDA2LCAyNzQxNCwgCi0gICAgMjc0MjIsIDI3NDI5LCAyNzQzNywgMjc0NDUsIDI3NDUzLCAyNzQ2MSwgMjc0NjksIDI3NDc5LCAyNzQ4OSwgMjc0OTksIAotICAgIDI3NTA5LCAyNzUxOSwgMjc1MjksIDI3NTM5LCAyNzU0OSwgMjc1NTksIDI3NTY5LCAyNzU3OSwgMjc1ODksIDI3NTk5LCAKLSAgICAyNzYwOSwgMjc2MTcsIDI3NjI1LCAyNzYzNSwgMjc2NDMsIDAsIDAsIDAsIDAsIDAsIDI3NjUzLCAyNzY1NywgMjc2NjEsIAotICAgIDI3NjY1LCAyNzY2OSwgMjc2NzMsIDI3Njc3LCAyNzY4MSwgMjc2ODUsIDI3Njg5LCAyNzY5MywgMjc2OTcsIDI3NzAxLCAKLSAgICAyNzcwNSwgMjc3MDksIDI3NzEzLCAyNzcxNywgMjc3MjEsIDI3NzI1LCAyNzcyOSwgMjc3MzMsIDI3NzM3LCAyNzc0MSwgCi0gICAgMjc3NDUsIDI3NzUxLCAyNzc1NSwgMjc3NjEsIDI3NzY1LCAyNzc3MSwgMjc3NzUsIDI3NzgxLCAyNzc4NSwgMjc3ODksIAotICAgIDI3NzkzLCAyNzc5NywgMjc4MDEsIDI3ODA1LCAyNzgxMSwgMjc4MTcsIDI3ODIzLCAyNzgyOSwgMjc4MzQsIDI3ODM5LCAKLSAgICAyNzg0NCwgMjc4NTAsIDI3ODU2LCAyNzg2MiwgMjc4NjgsIDI3ODc1LCAyNzg4MSwgMjc4ODYsIDI3ODkxLCAyNzg5NSwgCi0gICAgMjc4OTksIDI3OTAzLCAyNzkwNywgMjc5MTEsIDI3OTE1LCAyNzkxOSwgMjc5MjUsIDI3OTMxLCAyNzkzNywgMjc5NDIsIAotICAgIDI3OTQ5LCAyNzk1NCwgMjc5NTksIDI3OTY1LCAyNzk3MCwgMjc5NzcsIDI3OTg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyNzk5MCwgMjc5OTUsIDI3OTk4LCAyODAwMiwgMjgwMDYsIDI4MDEwLCAyODAxNCwgMjgwMTgsIDI4MDIyLCAKLSAgICAyODAyNiwgMjgwMzAsIDI4MDM0LCAyODAzOCwgMjgwNDIsIDI4MDQ2LCAyODA1MCwgMjgwNTMsIDI4MDU2LCAyODA2MCwgCi0gICAgMjgwNjQsIDI4MDY4LCAyODA3MSwgMjgwNzQsIDI4MDc3LCAyODA4MSwgMjgwODUsIDI4MDg5LCAyODA5MywgMjgwOTcsIDAsIAotICAgIDAsIDAsIDI4MTAwLCAyODEwNCwgMjgxMDgsIDI4MTEyLCAyODExNywgMjgxMjIsIDI4MTI3LCAyODEzMiwgMjgxMzYsIAotICAgIDI4MTQwLCAyODE0NSwgMjgxNTAsIDAsIDAsIDAsIDAsIDI4MTU2LCAyODE2MCwgMjgxNjUsIDI4MTcwLCAyODE3NSwgCi0gICAgMjgxNzksIDI4MTgzLCAyODE4NywgMjgxOTEsIDI4MTk2LCAyODIwMCwgMjgyMDQsIDAsIDAsIDAsIDAsIDI4MjA4LCAwLCAwLCAKLSAgICAwLCAyODIxMiwgMjgyMTYsIDI4MjIwLCAyODIyNCwgMjgyMjcsIDI4MjMwLCAyODIzMywgMjgyMzYsIDI4MjM5LCAyODI0MiwgCi0gICAgMjgyNDUsIDI4MjQ4LCAyODI1MSwgMjgyNTYsIDI4MjYyLCAyODI2OCwgMjgyNzQsIDI4MjgwLCAyODI4NSwgMjgyOTEsIAotICAgIDI4Mjk3LCAyODMwMywgMjgzMDgsIDI4MzE0LCAyODMxOSwgMjgzMjUsIDI4MzMxLCAyODMzNiwgMjgzNDIsIDI4MzQ4LCAKLSAgICAyODM1NCwgMjgzNTksIDI4MzY0LCAyODM2OSwgMjgzNzUsIDI4MzgxLCAyODM4NiwgMjgzOTIsIDI4Mzk3LCAyODQwMywgCi0gICAgMjg0MDgsIDI4NDE0LCAwLCAwLCAyODQyMCwgMjg0MjYsIDI4NDMyLCAyODQzOCwgMjg0NDQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI4NDUwLCAyODQ1NywgMjg0NjQsIDI4NDcwLCAyODQ3NywgMjg0ODQsIDI4NDkwLCAyODQ5NywgCi0gICAgMjg1MDQsIDI4NTExLCAyODUxOCwgMjg1MjQsIDI4NTMxLCAyODUzOCwgMjg1NDQsIDI4NTUxLCAyODU1OCwgMjg1NjQsIAotICAgIDI4NTcxLCAyODU3OCwgMjg1ODQsIDI4NTkwLCAyODU5NywgMjg2MDMsIDI4NjA5LCAyODYxNiwgMjg2MjIsIDI4NjI5LCAKLSAgICAyODYzNiwgMjg2NDMsIDI4NjUwLCAyODY1NywgMjg2NjQsIDI4NjcwLCAyODY3NywgMjg2ODQsIDI4NjkwLCAyODY5NywgCi0gICAgMjg3MDQsIDI4NzExLCAyODcxOCwgMjg3MjUsIDI4NzMyLCAyODczOSwgMCwgMCwgMCwgMCwgMjg3NDYsIDI4NzU0LCAKLSAgICAyODc2MSwgMjg3NjgsIDI4Nzc0LCAyODc4MSwgMjg3ODcsIDI4Nzk0LCAyODgwMCwgMjg4MDcsIDI4ODE0LCAyODgyMSwgCi0gICAgMjg4MjgsIDI4ODM1LCAyODg0MiwgMjg4NDksIDI4ODU2LCAyODg2MywgMjg4NzAsIDI4ODc3LCAyODg4MywgMjg4ODksIAotICAgIDI4ODk2LCAyODkwMywgMjg5MTAsIDI4OTE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyODkyMiwgMjg5MjgsIDI4OTMzLCAyODkzOCwgCi0gICAgMjg5NDMsIDI4OTQ4LCAyODk1MywgMjg5NTgsIDI4OTYzLCAyODk2OCwgMjg5NzMsIDAsIDAsIDAsIDI4OTc5LCAyODk4NSwgCi0gICAgMjg5OTEsIDI4OTk1LCAyOTAwMSwgMjkwMDcsIDI5MDEzLCAyOTAxOSwgMjkwMjUsIDI5MDMxLCAyOTAzNywgMjkwNDMsIAotICAgIDI5MDQ5LCAyOTA1NSwgMjkwNjEsIDI5MDY3LCAyOTA3MywgMjkwNzksIDI5MDg1LCAyOTA4OSwgMjkwOTUsIDI5MTAxLCAKLSAgICAyOTEwNywgMjkxMTMsIDI5MTE5LCAyOTEyNSwgMjkxMzEsIDI5MTM3LCAyOTE0MywgMjkxNDksIDI5MTU1LCAyOTE2MSwgCi0gICAgMjkxNjcsIDI5MTczLCAyOTE3OSwgMjkxODMsIDI5MTg4LCAyOTE5MywgMjkxOTgsIDI5MjAyLCAyOTIwNywgMjkyMTEsIAotICAgIDI5MjE2LCAyOTIyMSwgMjkyMjYsIDI5MjMwLCAyOTIzNSwgMjkyNDAsIDI5MjQ1LCAyOTI1MCwgMjkyNTUsIDI5MjU5LCAKLSAgICAyOTI2MywgMjkyNjgsIDI5MjczLCAyOTI3OCwgMjkyODIsIDI5Mjg2LCAyOTI5MSwgMjkyOTYsIDI5MzAxLCAyOTMwNiwgMCwgCi0gICAgMCwgMjkzMTIsIDI5MzE2LCAyOTMyMywgMjkzMjgsIDI5MzM0LCAyOTM0MCwgMjkzNDUsIDI5MzUxLCAyOTM1NywgMjkzNjIsIAotICAgIDI5MzY4LCAyOTM3NCwgMjkzODAsIDI5Mzg2LCAyOTM5MiwgMjkzOTcsIDI5NDAyLCAyOTQwOCwgMjk0MTMsIDI5NDE5LCAKLSAgICAyOTQyNCwgMjk0MzAsIDI5NDM2LCAyOTQ0MiwgMjk0NDgsIDI5NDUyLCAyOTQ1NywgMjk0NjIsIDI5NDY4LCAyOTQ3NCwgCi0gICAgMjk0NzksIDI5NDg1LCAyOTQ5MSwgMjk0OTUsIDI5NTAwLCAyOTUwNSwgMjk1MDksIDI5NTE0LCAyOTUxOSwgMjk1MjQsIAotICAgIDI5NTI5LCAyOTUzNSwgMjk1NDEsIDI5NTQ3LCAyOTU1MiwgMjk1NTcsIDI5NTYxLCAyOTU2NiwgMjk1NzAsIDI5NTc1LCAKLSAgICAyOTU3OSwgMjk1ODQsIDI5NTg5LCAyOTU5NCwgMjk1OTksIDI5NjA2LCAyOTYxMywgMjk2MjEsIDI5NjMyLCAyOTY0MSwgCi0gICAgMjk2NDksIDI5NjU2LCAyOTY2NywgMjk2NzMsIDI5NjgwLCAwLCAyOTY4NywgMjk2OTIsIDI5Njk3LCAyOTcwNSwgMjk3MTEsIAotICAgIDI5NzE5LCAyOTcyNCwgMjk3MzAsIDI5NzM2LCAyOTc0MiwgMjk3NDcsIDI5NzUzLCAyOTc1OCwgMjk3NjUsIDI5NzcxLCAKLSAgICAyOTc3NiwgMjk3ODIsIDI5Nzg4LCAyOTc5NCwgMjk4MDEsIDI5ODA4LCAyOTgxNSwgMjk4MjAsIDI5ODI1LCAyOTgzMiwgCi0gICAgMjk4MzksIDI5ODQ2LCAyOTg1MywgMjk4NjAsIDAsIDAsIDI5ODY3LCAyOTg3NCwgMjk4ODEsIDI5ODg3LCAyOTg5MywgCi0gICAgMjk4OTksIDI5OTA1LCAyOTkxMSwgMjk5MTcsIDI5OTIzLCAyOTkyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMjk5MzUsIDI5OTQxLCAKLSAgICAyOTk0NiwgMjk5NTEsIDI5OTU2LCAyOTk2MSwgMjk5NjYsIDI5OTcxLCAyOTk3NiwgMjk5ODEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI5OTg2LCAyOTk5MSwgMjk5OTYsIDMwMDAxLCAzMDAwNiwgMzAwMTEsIDMwMDE2LCAzMDAyNSwgMzAwMzIsIDMwMDM3LCAKLSAgICAzMDA0MiwgMzAwNDcsIDMwMDUyLCAzMDA1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAwNjIsIDMwMDY4LCAKLSAgICAzMDA3NCwgMzAwNzgsIDMwMDgyLCAzMDA4NiwgMzAwOTAsIDMwMDk2LCAzMDEwMCwgMzAxMDYsIDMwMTEwLCAzMDExNiwgCi0gICAgMzAxMjIsIDMwMTMwLCAzMDEzNiwgMzAxNDQsIDMwMTQ4LCAzMDE1MiwgMzAxNTYsIDMwMTYyLCAzMDE2NSwgMzAxNzEsIAotICAgIDMwMTc1LCAzMDE4MSwgMzAxODUsIDMwMTg5LCAzMDE5NSwgMzAxOTksIDMwMjA1LCAzMDIwOSwgMzAyMTUsIDMwMjIzLCAKLSAgICAzMDIzMSwgMzAyMzksIDMwMjQ1LCAzMDI0OSwgMzAyNTUsIDMwMjU5LCAzMDI2NSwgMzAyNjgsIDMwMjcxLCAzMDI3NywgCi0gICAgMzAyODEsIDMwMjg3LCAzMDI5MCwgMzAyOTMsIDMwMjk2LCAzMDMwMCwgMzAzMDQsIDMwMzEwLCAzMDMxNiwgMzAzMjAsIAotICAgIDMwMzIzLCAzMDMyNywgMzAzMzIsIDMwMzM3LCAzMDM0NCwgMzAzNDksIDMwMzU2LCAzMDM2MywgMzAzNzIsIDMwMzc5LCAKLSAgICAzMDM4OCwgMzAzOTMsIDMwNDAwLCAzMDQwNywgMzA0MTYsIDMwNDIxLCAzMDQyOCwgMzA0MzMsIDMwNDM5LCAzMDQ0NSwgCi0gICAgMzA0NTEsIDMwNDU3LCAzMDQ2MywgMzA0NjksIDAsIDAsIDAsIDAsIDMwNDc1LCAzMDQ3OSwgMzA0ODIsIDMwNDg1LCAKLSAgICAzMDQ4OCwgMzA0OTEsIDMwNDk0LCAzMDQ5NywgMzA1MDAsIDMwNTAzLCAzMDUwNiwgMzA1MDksIDMwNTEyLCAzMDUxNSwgCi0gICAgMzA1MjAsIDMwNTI1LCAzMDUzMCwgMzA1MzMsIDMwNTM4LCAzMDU0MywgMzA1NDgsIDMwNTUzLCAzMDU2MCwgMzA1NjUsIAotICAgIDMwNTcwLCAzMDU3NSwgMzA1ODAsIDMwNTg3LCAzMDU5MywgMzA1OTksIDMwNjA1LCAzMDYxMSwgMzA2MTcsIDMwNjI2LCAKLSAgICAzMDYzNSwgMzA2NDEsIDMwNjQ3LCAzMDY1NiwgMzA2NjUsIDMwNjc0LCAzMDY4MywgMzA2OTIsIDMwNzAxLCAzMDcxMCwgCi0gICAgMzA3MTksIDAsIDAsIDAsIDMwNzI4LCAzMDczMywgMzA3MzgsIDMwNzQzLCAzMDc0NywgMzA3NTEsIDMwNzU1LCAzMDc2MCwgCi0gICAgMzA3NjQsIDMwNzY4LCAzMDc3MywgMzA3NzcsIDMwNzgyLCAzMDc4NywgMzA3OTIsIDMwNzk3LCAzMDgwMiwgMzA4MDcsIAotICAgIDMwODEyLCAzMDgxNywgMzA4MjIsIDMwODI2LCAzMDgzMCwgMzA4MzUsIDMwODQwLCAzMDg0NSwgMzA4NDksIDMwODUzLCAKLSAgICAzMDg1NywgMzA4NjIsIDMwODY3LCAzMDg3MiwgMzA4NzcsIDMwODgxLCAzMDg4OCwgMzA4OTUsIDMwOTAyLCAzMDkwOCwgCi0gICAgMzA5MTQsIDMwOTIwLCAzMDkyNiwgMzA5MzIsIDMwOTM4LCAwLCAwLCAwLCAzMDk0MywgMzA5NDgsIDMwOTUzLCAzMDk1OCwgCi0gICAgMzA5NjIsIDMwOTY2LCAzMDk3MCwgMzA5NzQsIDMwOTc4LCAzMDk4MiwgMzA5ODYsIDMwOTkwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzMDk5NCwgMzA5OTgsIDMxMDA0LCAzMTAwOCwgMzEwMTQsIDMxMDIwLCAzMTAyNSwgMzEwMzIsIDMxMDM2LCAzMTA0MiwgCi0gICAgMzEwNDYsIDMxMDUyLCAzMTA1NywgMzEwNjQsIDMxMDcxLCAzMTA3NiwgMzEwODMsIDMxMDg4LCAzMTA5MywgMzEwOTcsIAotICAgIDMxMTAzLCAzMTEwNywgMzExMTMsIDMxMTIwLCAzMTEyNywgMzExMzIsIDMxMTM5LCAzMTE0NiwgMzExNTAsIDMxMTU2LCAKLSAgICAzMTE2MSwgMzExNjYsIDMxMTczLCAzMTE3OCwgMzExODMsIDMxMTg4LCAzMTE5MywgMzExOTcsIDMxMjAxLCAzMTIwNiwgCi0gICAgMzEyMTEsIDMxMjE4LCAzMTIyNCwgMzEyMjksIDMxMjM2LCAzMTI0MSwgMzEyNDgsIDMxMjUzLCAzMTI2MywgMzEyNzAsIAotICAgIDMxMjc3LCAzMTI4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEyODUsIDMxMjk0LCAzMTMwMSwgMzEzMDgsIDMxMzE1LCAKLSAgICAzMTMxOCwgMzEzMjIsIDMxMzI2LCAzMTMzMCwgMzEzMzQsIDMxMzM4LCAzMTM0MiwgMzEzNDYsIDMxMzUwLCAzMTM1NCwgCi0gICAgMzEzNTgsIDMxMzYyLCAzMTM2NiwgMzEzNjksIDMxMzcyLCAzMTM3NiwgMzEzODAsIDMxMzg0LCAzMTM4OCwgMzEzOTIsIAotICAgIDMxMzk2LCAzMTM5OSwgMzE0MDMsIDMxNDA3LCAzMTQxMSwgMzE0MTUsIDMxNDE4LCAzMTQyMSwgMzE0MjUsIDMxNDI4LCAKLSAgICAzMTQzMiwgMzE0MzYsIDMxNDQwLCAzMTQ0NCwgMzE0NDgsIDMxNDUxLCAzMTQ1NiwgMzE0NjEsIDMxNDY2LCAzMTQ3MCwgCi0gICAgMzE0NzQsIDMxNDc5LCAzMTQ4MywgMzE0ODgsIDMxNDkyLCAzMTQ5OCwgMzE1MDMsIDMxNTA4LCAzMTUxMywgMzE1MTksIAotICAgIDMxNTI0LCAzMTUzMCwgMzE1MzYsIDMxNTQyLCAzMTU0NiwgMCwgMCwgMCwgMzE1NTAsIDMxNTU1LCAzMTU2NCwgMzE1NjksIAotICAgIDMxNTc2LCAzMTU4MSwgMzE1ODUsIDMxNTg4LCAzMTU5MSwgMzE1OTQsIDMxNTk3LCAzMTYwMCwgMzE2MDMsIDMxNjA2LCAKLSAgICAzMTYwOSwgMCwgMCwgMCwgMzE2MTIsIDMxNjE2LCAzMTYyMCwgMzE2MjQsIDMxNjMxLCAzMTYzNywgMzE2NDMsIDMxNjQ5LCAKLSAgICAzMTY1NSwgMzE2NjEsIDMxNjY3LCAzMTY3MywgMzE2NzksIDMxNjg1LCAzMTY5MiwgMzE2OTksIDMxNzA2LCAzMTcxMywgCi0gICAgMzE3MjAsIDMxNzI3LCAzMTczNCwgMzE3NDEsIDMxNzQ4LCAzMTc1NSwgMzE3NjIsIDMxNzY5LCAzMTc3NiwgMzE3ODMsIAotICAgIDMxNzkwLCAzMTc5NywgMzE4MDQsIDMxODExLCAzMTgxOCwgMzE4MjUsIDMxODMyLCAzMTgzOSwgMzE4NDYsIDMxODUzLCAKLSAgICAzMTg2MCwgMzE4NjcsIDMxODc0LCAzMTg4MSwgMzE4ODgsIDMxODk1LCAzMTkwMywgMzE5MTEsIDMxOTE5LCAzMTkyNSwgCi0gICAgMzE5MzEsIDMxOTM3LCAzMTk0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE5NTQsIDMxOTU5LCAzMTk2NCwgMzE5NjksIAotICAgIDMxOTc0LCAzMTk4MywgMzE5OTQsIDMyMDAzLCAzMjAxNCwgMzIwMjAsIDMyMDMzLCAzMjAzOSwgMzIwNDYsIDMyMDUzLCAKLSAgICAzMjA1OCwgMzIwNjQsIDMyMDcwLCAzMjA4MSwgMzIwOTAsIDMyMDk3LCAzMjEwNCwgMzIxMTMsIDMyMTIwLCAzMjEyOSwgCi0gICAgMzIxMzksIDMyMTQ5LCAzMjE1NiwgMzIxNjMsIDMyMTcwLCAzMjE4MCwgMzIxODUsIDMyMTkzLCAzMjE5OSwgMzIyMDcsIAotICAgIDMyMjE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjIyMSwgMzIyMjYsIDMyMjMyLCAzMjIzOSwgCi0gICAgMzIyNDcsIDMyMjUzLCAzMjI1OSwgMzIyNjUsIDMyMjcwLCAzMjI3OCwgMzIyODQsIDMyMjkwLCAzMjI5NiwgMzIzMDQsIAotICAgIDMyMzA5LCAzMjMxNiwgMzIzMjEsIDMyMzI4LCAzMjMzNCwgMzIzNDIsIDMyMzUwLCAzMjM1NywgMzIzNjMsIDMyMzcwLCAKLSAgICAzMjM3NywgMzIzODMsIDMyMzkwLCAzMjM5NywgMzI0MDMsIDMyNDA4LCAzMjQxNCwgMzI0MjIsIDMyNDMwLCAzMjQzNiwgCi0gICAgMzI0NDIsIDMyNDQ4LCAzMjQ1NCwgMzI0NjIsIDMyNDY2LCAzMjQ3MiwgMzI0NzgsIDMyNDg0LCAzMjQ5MCwgMzI0OTYsIAotICAgIDMyNTAyLCAzMjUwNiwgMzI1MTEsIDMyNTE2LCAzMjUyMywgMzI1MjgsIDMyNTMyLCAzMjUzOCwgMzI1NDMsIDMyNTQ4LCAKLSAgICAzMjU1MiwgMzI1NTcsIDMyNTYyLCAzMjU2NiwgMzI1NzAsIDMyNTc0LCAzMjU4MCwgMzI1ODQsIDMyNTg5LCAzMjU5NCwgCi0gICAgMzI1OTgsIDMyNjAzLCAzMjYwNywgMzI2MTIsIDMyNjE2LCAzMjYyMiwgMzI2MjcsIDMyNjM0LCAzMjYzOSwgMzI2NDQsIAotICAgIDMyNjQ4LCAzMjY1MywgMzI2NTksIDMyNjY3LCAzMjY3MiwgMzI2NzgsIDMyNjgzLCAzMjY4NywgMzI2OTIsIDMyNjk2LCAKLSAgICAzMjcwMiwgMzI3MDksIDMyNzE2LCAzMjcyMSwgMzI3MjYsIDMyNzMwLCAzMjczNiwgMzI3NDIsIDMyNzQ3LCAzMjc1MiwgCi0gICAgMzI3NTcsIDMyNzYzLCAzMjc2OCwgMzI3NzQsIDMyNzc5LCAzMjc4NSwgMzI3OTEsIDMyNzk3LCAzMjgwNCwgMzI4MTEsIAotICAgIDMyODE4LCAzMjgyNSwgMzI4MzIsIDMyODM5LCAzMjg0NCwgMzI4NTMsIDMyODYzLCAzMjg3MywgMzI4ODMsIDMyODkzLCAKLSAgICAzMjkwMywgMzI5MTMsIDMyOTI2LCAzMjkzNiwgMzI5NDYsIDMyOTU2LCAzMjk2MywgMzI5NjgsIDMyOTc1LCAzMjk4MywgCi0gICAgMzI5OTEsIDMyOTk4LCAzMzAwNSwgMzMwMTIsIDMzMDE5LCAzMzAyNywgMzMwMzYsIDMzMDQ1LCAzMzA1NCwgMzMwNjMsIAotICAgIDMzMDcyLCAzMzA4MSwgMzMwOTAsIDMzMDk5LCAzMzEwOCwgMzMxMTcsIDMzMTI2LCAzMzEzNSwgMzMxNDQsIDMzMTUzLCAKLSAgICAzMzE2MSwgMzMxNzAsIDMzMTgxLCAzMzE4OSwgMzMxOTksIDMzMjExLCAzMzIyMCwgMzMyMjksIDMzMjM5LCAzMzI0OCwgCi0gICAgMzMyNTYsIDMzMjY1LCAzMzI3MiwgMzMyNzcsIDMzMjg1LCAzMzI5MCwgMzMyOTgsIDMzMzAzLCAzMzMxMiwgMzMzMTgsIAotICAgIDMzMzI1LCAzMzMzMiwgMzMzMzcsIDMzMzQyLCAzMzM1MCwgMzMzNTgsIDMzMzY3LCAzMzM3NiwgMzMzODEsIDMzMzg4LCAKLSAgICAzMzM5OSwgMzM0MDcsIDMzNDE2LCAzMzQyMSwgMzM0MjcsIDMzNDMyLCAzMzQzOSwgMzM0NDQsIDMzNDUzLCAzMzQ1OCwgCi0gICAgMzM0NjMsIDMzNDY4LCAzMzQ3NSwgMzM0ODIsIDMzNDg3LCAzMzQ5NiwgMzM1MDQsIDMzNTA5LCAzMzUxNCwgMzM1MjEsIAotICAgIDMzNTI4LCAzMzUzMiwgMzM1MzYsIDMzNTM5LCAzMzU0MiwgMzM1NDUsIDMzNTQ4LCAzMzU1MSwgMzM1NTQsIDMzNTYxLCAKLSAgICAzMzU2NCwgMzM1NjcsIDMzNTcyLCAzMzU3NiwgMzM1ODAsIDMzNTg0LCAzMzU4OCwgMzM1OTIsIDMzNjAyLCAzMzYwOCwgCi0gICAgMzM2MTQsIDMzNjIwLCAzMzYyOCwgMzM2MzYsIDMzNjQyLCAzMzY0OCwgMzM2NTUsIDMzNjYxLCAzMzY2NiwgMzM2NzIsIAotICAgIDMzNjc4LCAzMzY4MywgMzM2ODksIDMzNjk1LCAzMzcwMywgMzM3MDgsIDMzNzE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzcyMCwgMzM3MjcsIDMzNzM0LCAzMzczOSwgMzM3NDgsIAotICAgIDMzNzU2LCAzMzc2NCwgMzM3NzEsIDMzNzc4LCAzMzc4NSwgMzM3OTIsIDMzODAwLCAzMzgwOCwgMzM4MTgsIDMzODI4LCAKLSAgICAzMzgzNiwgMzM4NDQsIDMzODUyLCAzMzg2MCwgMzM4NjksIDMzODc4LCAzMzg4NiwgMzM4OTQsIDMzOTAzLCAzMzkxMiwgCi0gICAgMzM5MjIsIDMzOTMyLCAzMzk0MSwgMzM5NTAsIDMzOTU4LCAzMzk2NiwgMzM5NzQsIDMzOTgyLCAzMzk5MiwgMzQwMDIsIAotICAgIDM0MDEwLCAzNDAxOCwgMzQwMjYsIDM0MDM0LCAzNDA0MiwgMzQwNTAsIDM0MDU4LCAzNDA2NiwgMzQwNzQsIDM0MDgyLCAKLSAgICAzNDA5MCwgMzQwOTgsIDM0MTA3LCAzNDExNiwgMzQxMjUsIDM0MTM0LCAzNDE0NCwgMzQxNTQsIDM0MTYxLCAzNDE2OCwgCi0gICAgMzQxNzYsIDM0MTg0LCAzNDE5MywgMzQyMDIsIDM0MjEwLCAzNDIxOCwgMzQyMzAsIDM0MjQyLCAzNDI1MSwgMzQyNjAsIAotICAgIDM0MjY5LCAzNDI3OCwgMzQyODUsIDM0MjkyLCAzNDMwMCwgMzQzMDgsIDM0MzE2LCAzNDMyNCwgMzQzMzIsIDM0MzQwLCAKLSAgICAzNDM0OCwgMzQzNTYsIDM0MzY1LCAzNDM3NCwgMzQzODMsIDM0MzkyLCAzNDQwMSwgMzQ0MTAsIDM0NDIwLCAzNDQzMCwgCi0gICAgMzQ0NDAsIDM0NDUwLCAzNDQ1OSwgMzQ0NjgsIDM0NDc1LCAzNDQ4MiwgMzQ0OTAsIDM0NDk4LCAzNDUwNiwgMzQ1MTQsIAotICAgIDM0NTIyLCAzNDUzMCwgMzQ1NDIsIDM0NTU0LCAzNDU2MywgMzQ1NzIsIDM0NTgwLCAzNDU4OCwgMzQ1OTYsIDM0NjA0LCAKLSAgICAzNDYxNSwgMzQ2MjYsIDM0NjM3LCAzNDY0OCwgMzQ2NjAsIDM0NjcyLCAzNDY4MCwgMzQ2ODgsIDM0Njk2LCAzNDcwNCwgCi0gICAgMzQ3MTMsIDM0NzIyLCAzNDczMSwgMzQ3NDAsIDM0NzQ4LCAzNDc1NiwgMzQ3NjQsIDM0NzcyLCAzNDc4MCwgMzQ3ODgsIAotICAgIDM0Nzk3LCAzNDgwNiwgMzQ4MTYsIDM0ODI2LCAzNDgzNCwgMzQ4NDIsIDM0ODUwLCAzNDg1OCwgMzQ4NjYsIDM0ODc0LCAKLSAgICAzNDg4MSwgMzQ4ODgsIDM0ODk2LCAzNDkwNCwgMzQ5MTIsIDM0OTIwLCAzNDkyOCwgMzQ5MzYsIDM0OTQ0LCAzNDk1MiwgCi0gICAgMzQ5NjAsIDM0OTY4LCAzNDk3NiwgMzQ5ODQsIDM0OTkyLCAzNTAwMCwgMzUwMDgsIDM1MDE2LCAzNTAyNSwgMzUwMzQsIAotICAgIDM1MDQzLCAzNTA1MSwgMzUwNjAsIDM1MDY5LCAzNTA3OCwgMzUwODcsIDM1MDk3LCAzNTEwNiwgMzUxMTIsIDM1MTE3LCAKLSAgICAzNTEyNCwgMzUxMzEsIDM1MTM5LCAzNTE0NywgMzUxNTYsIDM1MTY1LCAzNTE3NSwgMzUxODUsIDM1MTk2LCAzNTIwNywgCi0gICAgMzUyMTcsIDM1MjI3LCAzNTIzNywgMzUyNDcsIDM1MjU2LCAzNTI2NSwgMzUyNzUsIDM1Mjg1LCAzNTI5NiwgMzUzMDcsIAotICAgIDM1MzE3LCAzNTMyNywgMzUzMzcsIDM1MzQ3LCAzNTM1NCwgMzUzNjEsIDM1MzY5LCAzNTM3NywgMzUzODQsIDM1MzkxLCAKLSAgICAzNTQwMCwgMzU0MDksIDM1NDE5LCAzNTQyOSwgMzU0NDAsIDM1NDUxLCAzNTQ2MSwgMzU0NzEsIDM1NDgxLCAzNTQ5MSwgCi0gICAgMzU1MDAsIDM1NTA5LCAzNTUxNywgMzU1MjUsIDM1NTMyLCAzNTUzOSwgMzU1NDcsIDM1NTU1LCAzNTU2NCwgMzU1NzMsIAotICAgIDM1NTgzLCAzNTU5MywgMzU2MDQsIDM1NjE1LCAzNTYyNSwgMzU2MzUsIDM1NjQ1LCAzNTY1NSwgMzU2NjQsIDM1NjczLCAKLSAgICAzNTY4MywgMzU2OTMsIDM1NzA0LCAzNTcxNSwgMzU3MjUsIDM1NzM1LCAzNTc0NSwgMzU3NTUsIDM1NzYyLCAzNTc2OSwgCi0gICAgMzU3NzcsIDM1Nzg1LCAzNTc5NCwgMzU4MDMsIDM1ODEzLCAzNTgyMywgMzU4MzQsIDM1ODQ1LCAzNTg1NSwgMzU4NjUsIAotICAgIDM1ODc1LCAzNTg4NSwgMzU4OTMsIDM1OTAxLCAzNTkwOSwgMzU5MTcsIDM1OTI2LCAzNTkzNSwgMzU5NDMsIDM1OTUxLCAKLSAgICAzNTk1OCwgMzU5NjUsIDM1OTcyLCAzNTk3OSwgMzU5ODcsIDM1OTk1LCAzNjAwMywgMzYwMTEsIDM2MDIyLCAzNjAzMiwgCi0gICAgMzYwNDMsIDM2MDUzLCAzNjA2NCwgMzYwNzQsIDM2MDgyLCAzNjA5MCwgMzYxMDEsIDM2MTExLCAzNjEyMiwgMzYxMzIsIAotICAgIDM2MTQzLCAzNjE1MywgMzYxNjEsIDM2MTY5LCAzNjE4MCwgMzYxOTAsIDM2MjAxLCAwLCAwLCAzNjIxMSwgMzYyMTksIAotICAgIDM2MjI3LCAzNjIzOCwgMzYyNDgsIDM2MjU5LCAwLCAwLCAzNjI2OSwgMzYyNzcsIDM2Mjg1LCAzNjI5NiwgMzYzMDYsIAotICAgIDM2MzE3LCAzNjMyNywgMzYzMzgsIDM2MzQ4LCAzNjM1NiwgMzYzNjQsIDM2Mzc1LCAzNjM4NSwgMzYzOTYsIDM2NDA2LCAKLSAgICAzNjQxNywgMzY0MjcsIDM2NDM1LCAzNjQ0MywgMzY0NTQsIDM2NDY0LCAzNjQ3NSwgMzY0ODUsIDM2NDk2LCAzNjUwNiwgCi0gICAgMzY1MTQsIDM2NTIyLCAzNjUzMywgMzY1NDMsIDM2NTU0LCAzNjU2NCwgMzY1NzUsIDM2NTg1LCAzNjU5MywgMzY2MDEsIAotICAgIDM2NjEyLCAzNjYyMiwgMzY2MzMsIDAsIDAsIDM2NjQzLCAzNjY1MSwgMzY2NTksIDM2NjcwLCAzNjY4MCwgMzY2OTEsIDAsIAotICAgIDAsIDM2NzAxLCAzNjcwOSwgMzY3MTcsIDM2NzI4LCAzNjczOCwgMzY3NDksIDM2NzU5LCAzNjc3MCwgMCwgMzY3ODAsIDAsIAotICAgIDM2Nzg4LCAwLCAzNjc5OCwgMCwgMzY4MDgsIDM2ODE4LCAzNjgyNiwgMzY4MzQsIDM2ODQ1LCAzNjg1NSwgMzY4NjYsIAotICAgIDM2ODc2LCAzNjg4NywgMzY4OTcsIDM2OTA1LCAzNjkxMywgMzY5MjQsIDM2OTM0LCAzNjk0NSwgMzY5NTUsIDM2OTY2LCAKLSAgICAzNjk3NiwgMzY5ODQsIDM2OTkyLCAzNzAwMCwgMzcwMDgsIDM3MDE2LCAzNzAyNCwgMzcwMzIsIDM3MDQwLCAzNzA0OCwgCi0gICAgMzcwNTYsIDM3MDY0LCAzNzA3MiwgMzcwODAsIDAsIDAsIDM3MDg4LCAzNzA5OSwgMzcxMDksIDM3MTIzLCAzNzEzNiwgCi0gICAgMzcxNTAsIDM3MTYzLCAzNzE3NywgMzcxOTAsIDM3MjAxLCAzNzIxMSwgMzcyMjUsIDM3MjM4LCAzNzI1MiwgMzcyNjUsIAotICAgIDM3Mjc5LCAzNzI5MiwgMzczMDMsIDM3MzEzLCAzNzMyNywgMzczNDAsIDM3MzU0LCAzNzM2NywgMzczODEsIDM3Mzk0LCAKLSAgICAzNzQwNSwgMzc0MTUsIDM3NDI5LCAzNzQ0MiwgMzc0NTYsIDM3NDY5LCAzNzQ4MywgMzc0OTYsIDM3NTA3LCAzNzUxNywgCi0gICAgMzc1MzEsIDM3NTQ0LCAzNzU1OCwgMzc1NzEsIDM3NTg1LCAzNzU5OCwgMzc2MDksIDM3NjE5LCAzNzYzMywgMzc2NDYsIAotICAgIDM3NjYwLCAzNzY3MywgMzc2ODcsIDM3NzAwLCAzNzcwOCwgMzc3MTYsIDM3NzI3LCAzNzczNSwgMCwgMzc3NDYsIDM3NzU0LCAKLSAgICAzNzc2NSwgMzc3NzMsIDM3NzgxLCAzNzc4OSwgMzc3OTcsIDM3ODA1LCAzNzgwOCwgMzc4MTEsIDM3ODE0LCAzNzgxNywgCi0gICAgMzc4MjMsIDM3ODM0LCAzNzg0MiwgMCwgMzc4NTMsIDM3ODYxLCAzNzg3MiwgMzc4ODAsIDM3ODg4LCAzNzg5NiwgMzc5MDQsIAotICAgIDM3OTEyLCAzNzkxOCwgMzc5MjQsIDM3OTMwLCAzNzkzOCwgMzc5NDYsIDM3OTU3LCAwLCAwLCAzNzk2OCwgMzc5NzYsIAotICAgIDM3OTg3LCAzNzk5NSwgMzgwMDMsIDM4MDExLCAwLCAzODAxOSwgMzgwMjQsIDM4MDI5LCAzODAzNCwgMzgwNDIsIDM4MDUwLCAKLSAgICAzODA2MSwgMzgwNzIsIDM4MDgwLCAzODA4OCwgMzgwOTYsIDM4MTA3LCAzODExNSwgMzgxMjMsIDM4MTMxLCAzODEzOSwgCi0gICAgMzgxNDcsIDM4MTUzLCAzODE1OSwgMCwgMCwgMzgxNjIsIDM4MTczLCAzODE4MSwgMCwgMzgxOTIsIDM4MjAwLCAzODIxMSwgCi0gICAgMzgyMTksIDM4MjI3LCAzODIzNSwgMzgyNDMsIDM4MjUxLCAzODI1NCwgMCwgMzgyNTcsIDM4MjYxLCAzODI2NSwgMzgyNjksIAotICAgIDM4MjczLCAzODI3NywgMzgyODEsIDM4Mjg1LCAzODI4OSwgMzgyOTMsIDM4Mjk3LCAzODMwMSwgMzgzMDcsIDM4MzEzLCAKLSAgICAzODMxOSwgMzgzMjIsIDM4MzI1LCAzODMyNywgMzgzMzEsIDM4MzM1LCAzODMzOSwgMzgzNDMsIDM4MzQ1LCAzODM0OSwgCi0gICAgMzgzNTMsIDM4MzU5LCAzODM2NSwgMzgzNzIsIDM4Mzc5LCAzODM4NCwgMzgzODksIDM4Mzk1LCAzODQwMSwgMzg0MDMsIAotICAgIDM4NDA2LCAzODQwOCwgMzg0MTIsIDM4NDE2LCAzODQyMCwgMzg0MjMsIDM4NDI3LCAzODQzMSwgMzg0MzUsIDM4NDM5LCAKLSAgICAzODQ0MywgMzg0NDksIDM4NDUzLCAzODQ1NywgMzg0NjMsIDM4NDY4LCAzODQ3NSwgMzg0NzcsIDM4NDgwLCAzODQ4NCwgCi0gICAgMzg0ODgsIDM4NDkzLCAzODQ5OSwgMzg1MDEsIDM4NTEwLCAzODUxOSwgMzg1MjIsIDM4NTI2LCAzODUyOCwgMzg1MzAsIAotICAgIDM4NTMyLCAzODUzNSwgMzg1NDEsIDM4NTQzLCAzODU0NywgMzg1NTEsIDM4NTU4LCAzODU2NSwgMzg1NjksIDM4NTc0LCAKLSAgICAzODU3OSwgMzg1ODQsIDM4NTg5LCAzODU5MywgMzg1OTcsIDM4NjAwLCAzODYwNCwgMzg2MDgsIDM4NjE1LCAzODYyMCwgCi0gICAgMzg2MjQsIDM4NjI4LCAzODYzMywgMzg2MzcsIDM4NjQxLCAzODY0NiwgMzg2NTEsIDM4NjU1LCAzODY1OSwgMzg2NjMsIAotICAgIDM4NjY1LCAzODY3MCwgMzg2NzUsIDM4Njc5LCAzODY4MywgMzg2ODcsIDM4NjkxLCAwLCAwLCAwLCAwLCAwLCAzODY5NSwgCi0gICAgMzg3MDEsIDM4NzA3LCAzODcxNCwgMzg3MjEsIDM4NzI2LCAzODczMSwgMzg3MzUsIDAsIDAsIDM4NzQxLCAzODc0NCwgCi0gICAgMzg3NDcsIDM4NzUwLCAzODc1MywgMzg3NTYsIDM4NzU5LCAzODc2MywgMzg3NjcsIDM4NzcyLCAzODc3NywgMzg3ODIsIAotICAgIDM4Nzg4LCAzODc5MiwgMzg3OTUsIDM4Nzk4LCAzODgwMSwgMzg4MDQsIDM4ODA3LCAzODgxMCwgMzg4MTMsIDM4ODE2LCAKLSAgICAzODgxOSwgMzg4MjMsIDM4ODI3LCAzODgzMiwgMzg4MzcsIDAsIDM4ODQyLCAzODg0OCwgMzg4NTQsIDM4ODYwLCAzODg2NywgCi0gICAgMzg4NzQsIDM4ODgxLCAzODg4OCwgMzg4OTQsIDM4OTAwLCAzODkwNiwgMzg5MTMsIDM4OTE5LCAwLCAwLCAwLCAzODkyNiwgCi0gICAgMzg5MjksIDM4OTMyLCAzODkzNSwgMzg5NDAsIDM4OTQzLCAzODk0NiwgMzg5NDksIDM4OTUyLCAzODk1NSwgMzg5NTgsIAotICAgIDM4OTYyLCAzODk2NSwgMzg5NjgsIDM4OTcxLCAzODk3NCwgMzg5NzcsIDM4OTgyLCAzODk4NSwgMzg5ODgsIDM4OTkxLCAKLSAgICAzODk5NCwgMzg5OTcsIDM5MDAyLCAzOTAwNSwgMzkwMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MDEzLCAzOTAxOCwgMzkwMjMsIDM5MDMwLCAzOTAzOCwgMzkwNDMsIAotICAgIDM5MDQ4LCAzOTA1MiwgMzkwNTYsIDM5MDYxLCAzOTA2OCwgMzkwNzUsIDM5MDc5LCAzOTA4NCwgMzkwODksIDM5MDk0LCAKLSAgICAzOTA5OSwgMzkxMDYsIDM5MTExLCAzOTExNiwgMzkxMjEsIDM5MTMwLCAzOTEzNywgMzkxNDQsIDM5MTQ4LCAzOTE1MywgCi0gICAgMzkxNTksIDM5MTY0LCAzOTE3MSwgMzkxNzksIDM5MTg3LCAzOTE5MSwgMzkxOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MTk5LCAzOTIwMywgMzkyMTEsIDM5MjE1LCAzOTIxOSwgMzkyMjQsIDM5MjI4LCAKLSAgICAzOTIzMiwgMzkyMzYsIDM5MjM4LCAzOTI0MiwgMzkyNDYsIDM5MjUwLCAzOTI1NSwgMzkyNTksIDM5MjYzLCAzOTI3MSwgCi0gICAgMzkyNzQsIDM5Mjc4LCAzOTI4MSwgMzkyODQsIDM5MjkwLCAzOTI5MywgMzkyOTYsIDM5MzAyLCAzOTMwNiwgMzkzMTAsIAotICAgIDM5MzE0LCAzOTMxNywgMzkzMjEsIDM5MzI0LCAzOTMyOCwgMzkzMzAsIDM5MzMzLCAzOTMzNiwgMzkzNDAsIDM5MzQyLCAKLSAgICAzOTM0NiwgMzkzNDksIDM5MzUyLCAzOTM1NywgMzkzNjIsIDM5MzY5LCAzOTM3MiwgMzkzNzUsIDM5Mzc5LCAzOTM4NCwgCi0gICAgMzkzODcsIDM5MzkwLCAzOTM5MywgMzkzOTcsIDM5NDAyLCAzOTQwNSwgMzk0MDgsIDM5NDEwLCAzOTQxMywgMzk0MTYsIAotICAgIDM5NDE5LCAzOTQyMywgMzk0MjgsIDM5NDMxLCAzOTQzNSwgMzk0MzksIDM5NDQzLCAzOTQ0NywgMzk0NTIsIDM5NDU4LCAKLSAgICAzOTQ2MywgMzk0NjgsIDM5NDc0LCAzOTQ3OSwgMzk0ODQsIDM5NDg4LCAzOTQ5MiwgMzk0OTcsIDM5NTAxLCAzOTUwNSwgCi0gICAgMzk1MDgsIDM5NTEwLCAzOTUxNSwgMzk1MjEsIDM5NTI4LCAzOTUzNSwgMzk1NDIsIDM5NTQ5LCAzOTU1NiwgMzk1NjMsIAotICAgIDM5NTcwLCAzOTU3NywgMzk1ODUsIDM5NTkyLCAzOTYwMCwgMzk2MDcsIDM5NjE0LCAzOTYyMiwgMzk2MzAsIDM5NjM1LCAKLSAgICAzOTY0MCwgMzk2NDUsIDM5NjUwLCAzOTY1NSwgMzk2NjAsIDM5NjY1LCAzOTY3MCwgMzk2NzUsIDM5NjgwLCAzOTY4NiwgCi0gICAgMzk2OTIsIDM5Njk4LCAzOTcwNCwgMzk3MTEsIDM5NzE5LCAzOTcyNiwgMzk3MzIsIDM5NzM4LCAzOTc0NCwgMzk3NTAsIAotICAgIDM5NzU2LCAzOTc2MiwgMzk3NjgsIDM5Nzc0LCAzOTc4MCwgMzk3ODcsIDM5Nzk0LCAzOTgwMSwgMzk4MDgsIDM5ODE2LCAKLSAgICAzOTgyNSwgMzk4MzMsIDM5ODQ0LCAzOTg1MiwgMzk4NjAsIDM5ODY5LCAzOTg3NiwgMzk4ODUsIDM5ODk0LCAzOTkwMiwgCi0gICAgMzk5MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDM5OTE5LCAzOTkyMSwgMzk5MjQsIDM5OTI2LCAzOTkyOSwgMzk5MzIsIDM5OTM1LCAKLSAgICAzOTk0MCwgMzk5NDUsIDM5OTUwLCAzOTk1NSwgMzk5NTksIDM5OTYzLCAzOTk2NywgMzk5NzEsIDM5OTc2LCAzOTk4MiwgCi0gICAgMzk5ODcsIDM5OTkzLCAzOTk5OCwgNDAwMDMsIDQwMDA4LCA0MDAxNCwgNDAwMTksIDQwMDI1LCA0MDAzMSwgNDAwMzUsIAotICAgIDQwMDM5LCA0MDA0NCwgNDAwNDksIDQwMDU0LCA0MDA1OSwgNDAwNjQsIDQwMDcyLCA0MDA4MCwgNDAwODgsIDQwMDk2LCAKLSAgICA0MDEwMywgNDAxMTEsIDQwMTE4LCA0MDEyNSwgNDAxMzQsIDQwMTQ2LCA0MDE1MywgNDAxNjAsIDQwMTY3LCA0MDE3NCwgCi0gICAgNDAxODIsIDQwMTkwLCA0MDE5NywgNDAyMDQsIDQwMjEyLCA0MDIyMCwgNDAyMjUsIDQwMjMzLCA0MDIzOCwgNDAyNDMsIAotICAgIDQwMjQ5LCA0MDI1NCwgNDAyNjAsIDQwMjY3LCA0MDI3NCwgNDAyNzksIDQwMjg1LCA0MDI5MCwgNDAyOTMsIDQwMjk3LCAKLSAgICA0MDMwMCwgNDAzMDQsIDQwMzA4LCA0MDMxMiwgNDAzMTgsIDQwMzI0LCA0MDMzMCwgNDAzMzYsIDQwMzQwLCA0MDM0NCwgCi0gICAgNDAzNDgsIDQwMzUyLCA0MDM1OCwgNDAzNjQsIDQwMzY4LCA0MDM3MywgNDAzNzcsIDQwMzgyLCA0MDM4NywgNDAzOTIsIAotICAgIDQwMzk1LCA0MDM5OSwgNDA0MDIsIDQwNDA2LCA0MDQxMywgNDA0MjEsIDQwNDMyLCA0MDQ0MywgNDA0NDgsIDQwNDU3LCAKLSAgICA0MDQ2NCwgNDA0NzMsIDQwNDgyLCA0MDQ4NiwgNDA0OTIsIDQwNTAwLCA0MDUwNCwgNDA1MDksIDQwNTE0LCA0MDUyMCwgCi0gICAgNDA1MjYsIDQwNTMyLCA0MDUzOSwgNDA1NDMsIDQwNTQ3LCA0MDU1MiwgNDA1NTUsIDQwNTU3LCA0MDU2MSwgNDA1NjUsIAotICAgIDQwNTczLCA0MDU3NywgNDA1NzksIDQwNTgxLCA0MDU4NSwgNDA1OTMsIDQwNTk4LCA0MDYwNCwgNDA2MTQsIDQwNjIxLCAKLSAgICA0MDYyNiwgNDA2MzAsIDQwNjM0LCA0MDYzOCwgNDA2NDEsIDQwNjQ0LCA0MDY0NywgNDA2NTEsIDQwNjU1LCA0MDY1OSwgCi0gICAgNDA2NjMsIDQwNjY3LCA0MDY3MCwgNDA2NzQsIDQwNjc4LCA0MDY4MSwgNDA2ODMsIDQwNjg2LCA0MDY4OCwgNDA2OTIsIAotICAgIDQwNjk2LCA0MDY5OCwgNDA3MDQsIDQwNzA3LCA0MDcxMiwgNDA3MTYsIDQwNzIwLCA0MDcyMiwgNDA3MjQsIDQwNzI2LCAKLSAgICA0MDcyOSwgNDA3MzMsIDQwNzM3LCA0MDc0MSwgNDA3NDUsIDQwNzQ5LCA0MDc1NSwgNDA3NjEsIDQwNzYzLCA0MDc2NSwgCi0gICAgNDA3NjcsIDQwNzY5LCA0MDc3MiwgNDA3NzQsIDQwNzc4LCA0MDc4MCwgNDA3ODQsIDQwNzg4LCA0MDc5MywgNDA3OTcsIAotICAgIDQwODAxLCA0MDgwNSwgNDA4MDksIDQwODEzLCA0MDgxOSwgNDA4MjMsIDQwODMzLCA0MDg0MywgNDA4NDcsIDQwODUzLCAKLSAgICA0MDg1OSwgNDA4NjMsIDQwODY3LCA0MDg3MCwgNDA4NzUsIDQwODc5LCA0MDg4NSwgNDA4ODksIDQwOTAxLCA0MDkwOSwgCi0gICAgNDA5MTMsIDQwOTE3LCA0MDkyMywgNDA5MjcsIDQwOTMwLCA0MDkzMiwgNDA5MzUsIDQwOTM5LCA0MDk0MywgNDA5NTAsIAotICAgIDQwOTU0LCA0MDk1OCwgNDA5NjIsIDQwOTY1LCA0MDk3MCwgNDA5NzUsIDQwOTgwLCA0MDk4NSwgNDA5OTAsIDQwOTk1LCAKLSAgICA0MTAwMywgNDEwMTEsIDQxMDE1LCA0MTAxOSwgNDEwMjEsIDQxMDI2LCA0MTAzMCwgNDEwMzQsIDQxMDQyLCA0MTA1MCwgCi0gICAgNDEwNTYsIDQxMDYyLCA0MTA3MSwgNDEwODAsIDQxMDg1LCA0MTA5MCwgNDEwOTgsIDQxMTA2LCA0MTEwOCwgNDExMTAsIAotICAgIDQxMTE1LCA0MTEyMCwgNDExMjYsIDQxMTMyLCA0MTEzOCwgNDExNDQsIDQxMTQ4LCA0MTE1MiwgNDExNTksIDQxMTY2LCAKLSAgICA0MTE3MiwgNDExNzgsIDQxMTg4LCA0MTE5OCwgNDEyMDYsIDQxMjE0LCA0MTIxNiwgNDEyMjAsIDQxMjI0LCA0MTIyOSwgCi0gICAgNDEyMzQsIDQxMjQxLCA0MTI0OCwgNDEyNTEsIDQxMjU0LCA0MTI1NywgNDEyNjAsIDQxMjYzLCA0MTI2OCwgNDEyNzIsIAotICAgIDQxMjc3LCA0MTI4MiwgNDEyODUsIDQxMjg4LCA0MTI5MSwgNDEyOTQsIDQxMjk3LCA0MTMwMSwgNDEzMDQsIDQxMzA3LCAKLSAgICA0MTMxMCwgNDEzMTMsIDQxMzE1LCA0MTMxNywgNDEzMTksIDQxMzIxLCA0MTMyOSwgNDEzMzcsIDQxMzQzLCA0MTM0NywgCi0gICAgNDEzNTMsIDQxMzYzLCA0MTM2OSwgNDEzNzUsIDQxMzgxLCA0MTM4OSwgNDEzOTcsIDQxNDA4LCA0MTQxMiwgNDE0MTYsIAotICAgIDQxNDE4LCA0MTQyNCwgNDE0MjYsIDQxNDI4LCA0MTQzMCwgNDE0MzIsIDQxNDM4LCA0MTQ0MSwgNDE0NDcsIDQxNDUzLCAKLSAgICA0MTQ1NywgNDE0NjEsIDQxNDY1LCA0MTQ2OCwgNDE0NzIsIDQxNDc2LCA0MTQ3OCwgNDE0ODcsIDQxNDk2LCA0MTUwMSwgCi0gICAgNDE1MDYsIDQxNTEyLCA0MTUxOCwgNDE1MjQsIDQxNTI3LCA0MTUzMCwgNDE1MzMsIDQxNTM2LCA0MTUzOCwgNDE1NDMsIAotICAgIDQxNTQ4LCA0MTU1MywgNDE1NTksIDQxNTY1LCA0MTU3MywgNDE1ODEsIDQxNTg3LCA0MTU5MywgNDE1OTksIDQxNjA1LCAKLSAgICA0MTYxNCwgNDE2MjMsIDQxNjMyLCA0MTY0MSwgNDE2NTAsIDQxNjU5LCA0MTY2OCwgNDE2NzcsIDQxNjg2LCA0MTY5NSwgCi0gICAgNDE3MDMsIDQxNzE1LCA0MTcyNSwgNDE3NDAsIDQxNzQzLCA0MTc0OCwgNDE3NTQsIDQxNzYwLCA0MTc2NywgNDE3ODEsIAotICAgIDQxNzk2LCA0MTgwMiwgNDE4MDgsIDQxODE1LCA0MTgyMSwgNDE4MjksIDQxODM1LCA0MTg0OCwgNDE4NjIsIDQxODY3LCAKLSAgICA0MTg3MywgNDE4ODAsIDQxODgzLCA0MTg4NiwgNDE4ODgsIDQxODkxLCA0MTg5NCwgNDE4OTYsIDQxODk4LCA0MTkwMiwgCi0gICAgNDE5MDUsIDQxOTA4LCA0MTkxMSwgNDE5MTQsIDQxOTE5LCA0MTkyNCwgNDE5MjksIDQxOTM0LCA0MTkzOSwgNDE5NDIsIAotICAgIDQxOTQ0LCA0MTk0NiwgNDE5NDgsIDQxOTUyLCA0MTk1NiwgNDE5NjAsIDQxOTY2LCA0MTk3MSwgNDE5NzMsIDQxOTc1LCAKLSAgICA0MTk4MCwgNDE5ODUsIDQxOTkwLCA0MTk5NSwgNDIwMDAsIDQyMDA1LCA0MjAwNywgNDIwMDksIDQyMDE4LCA0MjAyMiwgCi0gICAgNDIwMzAsIDQyMDM5LCA0MjA0MSwgNDIwNDYsIDQyMDUxLCA0MjA1OSwgNDIwNjMsIDQyMDY1LCA0MjA2OSwgNDIwNzEsIAotICAgIDQyMDc1LCA0MjA3OSwgNDIwODMsIDQyMDg1LCA0MjA4NywgNDIwODksIDQyMDk0LCA0MjEwMSwgNDIxMDgsIDQyMTE1LCAKLSAgICA0MjEyMiwgNDIxMjksIDQyMTM2LCA0MjE0MywgNDIxNTAsIDQyMTU2LCA0MjE2MiwgNDIxNjksIDQyMTc2LCA0MjE4MywgCi0gICAgNDIxOTAsIDQyMTk2LCA0MjIwMiwgNDIyMDksIDQyMjE2LCA0MjIyMywgNDIyMzEsIDQyMjM4LCA0MjI0NiwgNDIyNTMsIAotICAgIDQyMjYxLCA0MjI2OCwgNDIyNzYsIDQyMjg0LCA0MjI5MSwgNDIyOTksIDQyMzA2LCA0MjMxNCwgNDIzMjEsIDQyMzI5LCAKLSAgICA0MjMzNiwgNDIzNDMsIDQyMzUwLCA0MjM1NywgNDIzNjQsIDQyMzcyLCA0MjM3OSwgNDIzODYsIDQyMzkzLCA0MjQwMSwgCi0gICAgNDI0MDgsIDQyNDE1LCA0MjQyMiwgNDI0MjksIDQyNDM3LCA0MjQ0NSwgNDI0NTIsIDQyNDU5LCA0MjQ2NSwgNDI0NzIsIAotICAgIDQyNDc3LCA0MjQ4NCwgNDI0OTEsIDQyNTAwLCA0MjUwNywgNDI1MTUsIDQyNTIzLCA0MjUyOCwgNDI1MzMsIDQyNTM4LCAKLSAgICA0MjU0NSwgNDI1NTIsIDQyNTU5LCA0MjU2NiwgNDI1NzEsIDQyNTc2LCA0MjU4NSwgNDI1OTEsIDQyNTk0LCA0MjYwMiwgCi0gICAgNDI2MDUsIDQyNjEwLCA0MjYxNSwgNDI2MTgsIDQyNjIxLCA0MjYyOSwgNDI2MzIsIDQyNjM3LCA0MjY0MCwgNDI2NDcsIAotICAgIDQyNjUyLCA0MjY2MCwgNDI2NjMsIDQyNjY2LCA0MjY2OSwgNDI2NzQsIDQyNjc5LCA0MjY4MiwgNDI2ODUsIDQyNjkzLCAKLSAgICA0MjY5NiwgNDI3MDEsIDQyNzA4LCA0MjcxMiwgNDI3MTYsIDQyNzIxLCA0MjcyNiwgNDI3MzIsIDQyNzM3LCA0Mjc0MywgCi0gICAgNDI3NDksIDQyNzU0LCA0Mjc2MCwgNDI3NjgsIDQyNzc0LCA0Mjc4MiwgNDI3OTAsIDQyNzk2LCA0MjgwNCwgNDI4MTIsIAotICAgIDQyODIxLCA0MjgyOSwgNDI4MzUsIDQyODQzLCA0Mjg1MiwgNDI4NjAsIDQyODY0LCA0Mjg2OSwgNDI4ODIsIDQyODk1LCAKLSAgICA0Mjg5OSwgNDI5MDMsIDQyOTA3LCA0MjkxMSwgNDI5MjEsIDQyOTI1LCA0MjkzMCwgNDI5MzUsIDQyOTQwLCA0Mjk0NSwgCi0gICAgNDI5NTAsIDQyOTU1LCA0Mjk2NSwgNDI5NzUsIDQyOTgzLCA0Mjk5MywgNDMwMDMsIDQzMDExLCA0MzAyMSwgNDMwMzEsIAotICAgIDQzMDM5LCA0MzA0OSwgNDMwNTksIDQzMDY3LCA0MzA3NSwgNDMwODUsIDQzMDk1LCA0MzA5OCwgNDMxMDEsIDQzMTA0LCAKLSAgICA0MzEwOSwgNDMxMTMsIDQzMTE5LCA0MzEyNiwgNDMxMzMsIDQzMTQxLCA0MzE0OCwgNDMxNTIsIDQzMTU2LCA0MzE2MCwgCi0gICAgNDMxNjQsIDQzMTY2LCA0MzE3MCwgNDMxNzQsIDQzMTc5LCA0MzE4NCwgNDMxOTEsIDQzMTk4LCA0MzIwMSwgNDMyMDgsIAotICAgIDQzMjEwLCA0MzIxMiwgNDMyMTYsIDQzMjIwLCA0MzIyNSwgNDMyMzEsIDQzMjM3LCA0MzI0MywgNDMyNDksIDQzMjU4LCAKLSAgICA0MzI2NywgNDMyNzYsIDQzMjgwLCA0MzI4MiwgNDMyODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQzMjkzLCA0MzI5NywgNDMzMDQsIDQzMzExLCA0MzMxOCwgNDMzMjUsIDQzMzI5LCA0MzMzMywgNDMzMzcsIDQzMzQxLCAKLSAgICA0MzM0NiwgNDMzNTIsIDQzMzU3LCA0MzM2MywgNDMzNjksIDQzMzc1LCA0MzM4MSwgNDMzODksIDQzMzk2LCA0MzQwMywgCi0gICAgNDM0MTAsIDQzNDE3LCA0MzQyMiwgNDM0MjgsIDQzNDM3LCA0MzQ0MSwgNDM0NDgsIDQzNDUyLCA0MzQ1NiwgNDM0NjIsIAotICAgIDQzNDY4LCA0MzQ3NCwgNDM0ODAsIDQzNDg0LCA0MzQ4OCwgNDM0OTEsIDQzNDk1LCA0MzQ5OSwgNDM1MDYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzNTEzLCAKLSAgICA0MzUxNiwgNDM1MjAsIDQzNTI0LCA0MzUzMCwgNDM1MzYsIDQzNTQyLCA0MzU1MCwgNDM1NTcsIDQzNTYxLCA0MzU2OSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM1NzQsIDQzNTc3LCAKLSAgICA0MzU4MCwgNDM1ODMsIDQzNTg2LCA0MzU4OSwgNDM1OTIsIDQzNTk1LCA0MzU5OCwgNDM2MDEsIDQzNjA1LCA0MzYwOSwgCi0gICAgNDM2MTMsIDQzNjE3LCA0MzYyMSwgNDM2MjUsIDQzNjI5LCA0MzYzMywgNDM2MzcsIDQzNjQxLCA0MzY0NSwgNDM2NDgsIAotICAgIDQzNjUxLCA0MzY1NCwgNDM2NTcsIDQzNjYwLCA0MzY2MywgNDM2NjYsIDQzNjY5LCA0MzY3MiwgNDM2NzYsIDQzNjgwLCAKLSAgICA0MzY4NCwgNDM2ODgsIDQzNjkyLCA0MzY5NiwgNDM3MDAsIDQzNzA0LCA0MzcwOCwgNDM3MTIsIDQzNzE2LCA0MzcyMiwgCi0gICAgNDM3MjgsIDQzNzM0LCA0Mzc0MSwgNDM3NDgsIDQzNzU1LCA0Mzc2MiwgNDM3NjksIDQzNzc2LCA0Mzc4MywgNDM3OTAsIAotICAgIDQzNzk3LCA0MzgwNCwgNDM4MTEsIDQzODE4LCA0MzgyNSwgNDM4MzIsIDQzODM5LCA0Mzg0NiwgNDM4NTMsIDQzODU4LCAKLSAgICA0Mzg2NCwgNDM4NzAsIDQzODc2LCA0Mzg4MSwgNDM4ODcsIDQzODkzLCA0Mzg5OSwgNDM5MDQsIDQzOTEwLCA0MzkxNiwgCi0gICAgNDM5MjEsIDQzOTI2LCA0MzkzMSwgNDM5MzYsIDQzOTQyLCA0Mzk0OCwgNDM5NTMsIDQzOTU4LCA0Mzk2NCwgNDM5NjksIAotICAgIDQzOTc1LCA0Mzk4MSwgNDM5ODcsIDQzOTkzLCA0Mzk5OSwgNDQwMDQsIDQ0MDEwLCA0NDAxNiwgNDQwMjIsIDQ0MDI3LCAKLSAgICA0NDAzMywgNDQwMzksIDQ0MDQ1LCA0NDA1MCwgNDQwNTYsIDQ0MDYyLCA0NDA2NywgNDQwNzIsIDQ0MDc3LCA0NDA4MiwgCi0gICAgNDQwODgsIDQ0MDk0LCA0NDA5OSwgNDQxMDQsIDQ0MTEwLCA0NDExNSwgNDQxMjEsIDQ0MTI3LCA0NDEzMywgNDQxMzksIAotICAgIDQ0MTQ1LCA0NDE1MCwgNDQxNTYsIDQ0MTYyLCA0NDE2OCwgNDQxNzMsIDQ0MTc5LCA0NDE4NSwgNDQxOTEsIDQ0MTk2LCAKLSAgICA0NDIwMiwgNDQyMDgsIDQ0MjEzLCA0NDIxOCwgNDQyMjMsIDQ0MjI4LCA0NDIzNCwgNDQyNDAsIDQ0MjQ1LCA0NDI1MCwgCi0gICAgNDQyNTYsIDQ0MjYxLCA0NDI2NywgNDQyNzMsIDQ0Mjc5LCA0NDI4NSwgNDQyOTEsIDQ0Mjk1LCA0NDMwMCwgNDQzMDUsIAotICAgIDQ0MzEwLCA0NDMxNSwgNDQzMjAsIDQ0MzI1LCA0NDMzMCwgNDQzMzUsIDQ0MzQwLCA0NDM0NSwgNDQzNDksIDQ0MzUzLCAKLSAgICA0NDM1NywgNDQzNjEsIDQ0MzY1LCA0NDM2OSwgNDQzNzMsIDQ0Mzc3LCA0NDM4MSwgNDQzODYsIDQ0MzkxLCA0NDM5NiwgCi0gICAgNDQ0MDEsIDQ0NDA2LCA0NDQxMSwgNDQ0MjAsIDQ0NDI5LCA0NDQzOCwgNDQ0NDcsIDQ0NDU2LCA0NDQ2NSwgNDQ0NzQsIAotICAgIDQ0NDgzLCA0NDQ5MCwgNDQ0OTgsIDQ0NTA2LCA0NDUxMywgNDQ1MjAsIDQ0NTI4LCA0NDUzNiwgNDQ1NDMsIDQ0NTUwLCAKLSAgICA0NDU1OCwgNDQ1NjYsIDQ0NTczLCA0NDU4MCwgNDQ1ODgsIDQ0NTk2LCA0NDYwMywgNDQ2MTAsIDQ0NjE4LCA0NDYyNywgCi0gICAgNDQ2MzYsIDQ0NjQ0LCA0NDY1MywgNDQ2NjIsIDQ0NjY5LCA0NDY3NiwgNDQ2ODQsIDQ0NjkzLCA0NDcwMiwgNDQ3MTAsIAotICAgIDQ0NzE5LCA0NDcyOCwgNDQ3MzUsIDQ0NzQyLCA0NDc1MSwgNDQ3NjAsIDQ0NzY4LCA0NDc3NiwgNDQ3ODUsIDQ0Nzk0LCAKLSAgICA0NDgwMSwgNDQ4MDgsIDQ0ODE3LCA0NDgyNiwgNDQ4MzQsIDQ0ODQyLCA0NDg1MSwgNDQ4NjAsIDQ0ODY3LCA0NDg3NCwgCi0gICAgNDQ4ODMsIDQ0ODkyLCA0NDkwMCwgNDQ5MDksIDQ0OTE4LCA0NDkyNiwgNDQ5MzYsIDQ0OTQ2LCA0NDk1NiwgNDQ5NjYsIAotICAgIDQ0OTc1LCA0NDk4NCwgNDQ5OTMsIDQ1MDAyLCA0NTAwOSwgNDUwMTcsIDQ1MDI1LCA0NTAzMywgNDUwNDEsIDQ1MDQ2LCAKLSAgICA0NTA1MSwgNDUwNjAsIDQ1MDY4LCA0NTA3NSwgNDUwODQsIDQ1MDkyLCA0NTA5OSwgNDUxMDgsIDQ1MTE2LCA0NTEyMywgCi0gICAgNDUxMzIsIDQ1MTQwLCA0NTE0NywgNDUxNTYsIDQ1MTY0LCA0NTE3MSwgNDUxODAsIDQ1MTg4LCA0NTE5NSwgNDUyMDQsIAotICAgIDQ1MjEyLCA0NTIxOSwgNDUyMjgsIDQ1MjM2LCA0NTI0MywgNDUyNTIsIDQ1MjYwLCA0NTI2NywgNDUyNzYsIDQ1Mjg1LCAKLSAgICA0NTI5NCwgNDUzMDMsIDQ1MzE3LCA0NTMzMSwgNDUzMzgsIDQ1MzQzLCA0NTM0OCwgNDUzNTMsIDQ1MzU4LCA0NTM2MywgCi0gICAgNDUzNjgsIDQ1MzczLCA0NTM3OCwgNDUzODYsIDQ1Mzk0LCA0NTQwMiwgNDU0MTAsIDQ1NDE1LCA0NTQyMiwgNDU0MjksIAotICAgIDQ1NDM2LCA0NTQ0MSwgNDU0NDksIDQ1NDU2LCA0NTQ2NCwgNDU0NjgsIDQ1NDc1LCA0NTQ4MSwgNDU0ODgsIDQ1NDkyLCAKLSAgICA0NTQ5OCwgNDU1MDQsIDQ1NTEwLCA0NTUxNCwgNDU1MTcsIDQ1NTIxLCA0NTUyNSwgNDU1MzIsIDQ1NTM4LCA0NTU0NCwgCi0gICAgNDU1NTAsIDQ1NTU2LCA0NTU3MCwgNDU1ODAsIDQ1NTk0LCA0NTYwOCwgNDU2MTQsIDQ1NjI0LCA0NTYzOCwgNDU2NDEsIAotICAgIDQ1NjQ0LCA0NTY1MSwgNDU2NTksIDQ1NjY0LCA0NTY2OSwgNDU2NzcsIDQ1Njg5LCA0NTcwMSwgNDU3MDksIDQ1NzEzLCAKLSAgICA0NTcxNywgNDU3MjAsIDQ1NzIzLCA0NTcyNywgNDU3MzEsIDQ1NzM0LCA0NTczNywgNDU3NDIsIDQ1NzQ3LCA0NTc1MywgCi0gICAgNDU3NTksIDQ1NzY0LCA0NTc2OSwgNDU3NzUsIDQ1NzgxLCA0NTc4NiwgNDU3OTEsIDQ1Nzk2LCA0NTgwMSwgNDU4MDcsIAotICAgIDQ1ODEzLCA0NTgxOCwgNDU4MjMsIDQ1ODI5LCA0NTgzNSwgNDU4NDAsIDQ1ODQ1LCA0NTg0OCwgNDU4NTEsIDQ1ODYwLCAKLSAgICA0NTg2MiwgNDU4NjQsIDQ1ODY3LCA0NTg3MSwgNDU4NzcsIDQ1ODc5LCA0NTg4MiwgNDU4ODksIDQ1ODk2LCA0NTkwNCwgCi0gICAgNDU5MTIsIDQ1OTIyLCA0NTkzNiwgNDU5NDEsIDQ1OTQ2LCA0NTk1MCwgNDU5NTUsIDQ1OTYzLCA0NTk3MSwgNDU5ODAsIAotICAgIDQ1OTg5LCA0NTk5OCwgNDYwMDcsIDQ2MDEyLCA0NjAxNywgNDYwMjMsIDQ2MDI5LCA0NjAzNSwgNDYwNDEsIDQ2MDQ0LCAKLSAgICA0NjA1MCwgNDYwNTYsIDQ2MDY2LCA0NjA3NiwgNDYwODQsIDQ2MDkyLCA0NjEwMSwgNDYxMTAsIDQ2MTE0LCA0NjEyMiwgCi0gICAgNDYxMzAsIDQ2MTM4LCA0NjE0NiwgNDYxNTUsIDQ2MTY0LCA0NjE3MywgNDYxODIsIDQ2MTg3LCA0NjE5MiwgNDYxOTcsIAotICAgIDQ2MjAyLCA0NjIwNywgNDYyMTMsIDQ2MjE5LCA0NjIyNCwgNDYyMzAsIDQ2MjMyLCA0NjIzNCwgNDYyMzYsIDQ2MjM4LCAKLSAgICA0NjI0MSwgNDYyNDQsIDQ2MjQ2LCA0NjI0OCwgNDYyNTAsIDQ2MjU0LCA0NjI1OCwgNDYyNjAsIDQ2MjYyLCA0NjI2NSwgCi0gICAgNDYyNjgsIDQ2MjcyLCA0NjI3OCwgNDYyODQsIDQ2Mjg2LCA0NjI5MywgNDYyOTcsIDQ2MzAyLCA0NjMwNywgNDYzMDksIAotICAgIDQ2MzE5LCA0NjMyNSwgNDYzMzEsIDQ2MzM3LCA0NjM0MywgNDYzNDksIDQ2MzU1LCA0NjM2MCwgNDYzNjMsIDQ2MzY2LCAKLSAgICA0NjM2OSwgNDYzNzEsIDQ2MzczLCA0NjM3NywgNDYzODEsIDQ2Mzg2LCA0NjM5MSwgNDYzOTYsIDQ2Mzk5LCA0NjQwMywgCi0gICAgNDY0MDgsIDQ2NDExLCA0NjQxNSwgNDY0MjAsIDQ2NDI1LCA0NjQzMCwgNDY0MzUsIDQ2NDQwLCA0NjQ0NSwgNDY0NTAsIAotICAgIDQ2NDU1LCA0NjQ2MCwgNDY0NjUsIDQ2NDcwLCA0NjQ3NSwgNDY0ODEsIDQ2NDg3LCA0NjQ5MywgNDY0OTUsIDQ2NDk4LCAKLSAgICA0NjUwMCwgNDY1MDMsIDQ2NTA1LCA0NjUwNywgNDY1MDksIDQ2NTExLCA0NjUxMywgNDY1MTUsIDQ2NTE3LCA0NjUxOSwgCi0gICAgNDY1MjEsIDQ2NTIzLCA0NjUyNSwgNDY1MjcsIDQ2NTI5LCA0NjUzMSwgNDY1MzMsIDQ2NTM1LCA0NjUzNywgNDY1NDIsIAotICAgIDQ2NTQ3LCA0NjU1MiwgNDY1NTcsIDQ2NTYyLCA0NjU2NywgNDY1NzIsIDQ2NTc3LCA0NjU4MiwgNDY1ODcsIDQ2NTkyLCAKLSAgICA0NjU5NywgNDY2MDIsIDQ2NjA3LCA0NjYxMiwgNDY2MTcsIDQ2NjIyLCA0NjYyNywgNDY2MzIsIDQ2NjM3LCA0NjY0MSwgCi0gICAgNDY2NDUsIDQ2NjQ5LCA0NjY1NSwgNDY2NjEsIDQ2NjY2LCA0NjY3MSwgNDY2NzYsIDQ2NjgxLCA0NjY4NiwgNDY2OTEsIAotICAgIDQ2Njk5LCA0NjcwNywgNDY3MTUsIDQ2NzIzLCA0NjczMSwgNDY3MzksIDQ2NzQ3LCA0Njc1NSwgNDY3NjEsIDQ2NzY2LCAKLSAgICA0Njc3MSwgNDY3NzYsIDQ2Nzc5LCA0Njc4MywgNDY3ODcsIDQ2NzkxLCA0Njc5NSwgNDY3OTksIDQ2ODAzLCA0NjgxMCwgCi0gICAgNDY4MTcsIDQ2ODI1LCA0NjgzMywgNDY4MzgsIDQ2ODQzLCA0Njg1MCwgNDY4NTcsIDQ2ODY0LCA0Njg3MSwgNDY4NzQsIAotICAgIDQ2ODc3LCA0Njg4MiwgNDY4ODQsIDQ2ODg4LCA0Njg5MywgNDY4OTUsIDQ2ODk3LCA0Njg5OSwgNDY5MDEsIDQ2OTA2LCAKLSAgICA0NjkwOSwgNDY5MTEsIDQ2OTE2LCA0NjkyMywgNDY5MzAsIDQ2OTMzLCA0NjkzNywgNDY5NDIsIDQ2OTQ3LCA0Njk1NSwgCi0gICAgNDY5NjEsIDQ2OTY3LCA0Njk3OSwgNDY5ODYsIDQ2OTkzLCA0Njk5OCwgNDcwMDMsIDQ3MDA5LCA0NzAxMiwgNDcwMTUsIAotICAgIDQ3MDIwLCA0NzAyMiwgNDcwMjYsIDQ3MDI4LCA0NzAzMCwgNDcwMzIsIDQ3MDM0LCA0NzAzNiwgNDcwMzgsIDQ3MDQzLCAKLSAgICA0NzA0NSwgNDcwNDcsIDQ3MDQ5LCA0NzA1MSwgNDcwNTUsIDQ3MDU3LCA0NzA2MCwgNDcwNjUsIDQ3MDcwLCA0NzA3NSwgCi0gICAgNDcwODAsIDQ3MDg2LCA0NzA5MiwgNDcwOTQsIDQ3MDk3LCA0NzEwNCwgNDcxMTEsIDQ3MTE4LCA0NzEyNSwgNDcxMjksIAotICAgIDQ3MTMzLCA0NzEzNSwgNDcxMzcsIDQ3MTQxLCA0NzE0NywgNDcxNTIsIDQ3MTU0LCA0NzE1OCwgNDcxNjcsIDQ3MTc1LCAKLSAgICA0NzE4MywgNDcxODksIDQ3MTk1LCA0NzIwMCwgNDcyMDYsIDQ3MjExLCA0NzIxNCwgNDcyMjgsIDQ3MjMxLCA0NzIzNiwgCi0gICAgNDcyNDEsIDQ3MjQ3LCA0NzI1NywgNDcyNTksIDQ3MjY1LCA0NzI3MSwgNDcyNzUsIDQ3MjgyLCA0NzI4NiwgNDcyODgsIAotICAgIDQ3MjkwLCA0NzI5NCwgNDczMDAsIDQ3MzA1LCA0NzMxMSwgNDczMTMsIDQ3MzE5LCA0NzMyMSwgNDczMjcsIDQ3MzI5LCAKLSAgICA0NzMzMSwgNDczMzYsIDQ3MzM4LCA0NzM0MiwgNDczNDcsIDQ3MzQ5LCA0NzM1NCwgNDczNTksIDQ3MzYzLCA0NzM3MCwgMCwgCi0gICAgNDczODAsIDQ3Mzg2LCA0NzM4OSwgNDczOTUsIDQ3Mzk4LCA0NzQwMywgNDc0MDgsIDQ3NDEyLCA0NzQxNCwgNDc0MTYsIAotICAgIDQ3NDIwLCA0NzQyNCwgNDc0MjgsIDQ3NDMyLCA0NzQzNywgNDc0MzksIDQ3NDQ0LCA0NzQ0NywgNDc0NTAsIDQ3NDUzLCAKLSAgICA0NzQ1NywgNDc0NjEsIDQ3NDY2LCA0NzQ3MCwgNDc0NzUsIDQ3NDgwLCA0NzQ4NCwgNDc0OTAsIDQ3NDk3LCA0NzUwMCwgCi0gICAgNDc1MDYsIDQ3NTExLCA0NzUxNSwgNDc1MjAsIDQ3NTI2LCA0NzUzMiwgNDc1MzksIDQ3NTQ1LCA0NzU1MiwgNDc1NTksIAotICAgIDQ3NTYxLCA0NzU2OCwgNDc1NzIsIDQ3NTc5LCA0NzU4NSwgNDc1OTAsIDQ3NTk2LCA0NzYwMCwgNDc2MDUsIDQ3NjA4LCAKLSAgICA0NzYxNCwgNDc2MjAsIDQ3NjI3LCA0NzYzNSwgNDc2NDIsIDQ3NjUxLCA0NzY2MSwgNDc2NjgsIDQ3Njc0LCA0NzY3OCwgCi0gICAgNDc2ODYsIDQ3NjkxLCA0NzcwMCwgNDc3MDMsIDQ3NzA2LCA0NzcxNSwgNDc3MjYsIDQ3NzMzLCA0NzczNSwgNDc3NDEsIAotICAgIDQ3NzQ2LCA0Nzc0OCwgNDc3NTEsIDQ3NzU1LCA0Nzc2MywgNDc3NzIsIDQ3Nzc1LCA0Nzc4MCwgNDc3ODUsIDQ3NzkzLCAKLSAgICA0NzgwMSwgNDc4MDksIDQ3ODE3LCA0NzgyMywgNDc4MjksIDQ3ODM1LCA0Nzg0MywgNDc4NDgsIDQ3ODUxLCA0Nzg1NSwgCi0gICAgNDc4NTgsIDQ3ODcwLCA0Nzg4MCwgNDc4OTEsIDQ3OTAwLCA0NzkxMSwgNDc5MjEsIDQ3OTMwLCA0NzkzNiwgNDc5NDQsIAotICAgIDQ3OTQ4LCA0Nzk1NiwgNDc5NjAsIDQ3OTY4LCA0Nzk3NSwgNDc5ODIsIDQ3OTkxLCA0ODAwMCwgNDgwMTAsIDQ4MDIwLCAKLSAgICA0ODAzMCwgNDgwNDAsIDQ4MDQ5LCA0ODA1OCwgNDgwNjgsIDQ4MDc4LCA0ODA4NywgNDgwOTYsIDQ4MTAyLCA0ODEwOCwgCi0gICAgNDgxMTQsIDQ4MTIwLCA0ODEyNiwgNDgxMzIsIDQ4MTM4LCA0ODE0NCwgNDgxNTAsIDQ4MTU3LCA0ODE2MywgNDgxNjksIAotICAgIDQ4MTc1LCA0ODE4MSwgNDgxODcsIDQ4MTkzLCA0ODE5OSwgNDgyMDUsIDQ4MjExLCA0ODIxOCwgNDgyMjUsIDQ4MjMyLCAKLSAgICA0ODIzOSwgNDgyNDYsIDQ4MjUzLCA0ODI2MCwgNDgyNjcsIDQ4Mjc0LCA0ODI4MSwgNDgyODksIDQ4Mjk0LCA0ODI5NywgCi0gICAgNDgzMDEsIDQ4MzA1LCA0ODMxMSwgNDgzMTQsIDQ4MzIwLCA0ODMyNiwgNDgzMzEsIDQ4MzM1LCA0ODM0MCwgNDgzNDYsIAotICAgIDQ4MzUzLCA0ODM1NiwgNDgzNjMsIDQ4MzcwLCA0ODM3NCwgNDgzODMsIDQ4MzkyLCA0ODM5NywgNDg0MDMsIDQ4NDA4LCAKLSAgICA0ODQxMywgNDg0MjAsIDQ4NDI3LCA0ODQzNSwgNDg0NDMsIDQ4NDUyLCA0ODQ1NiwgNDg0NjUsIDQ4NDcwLCA0ODQ3NCwgCi0gICAgNDg0ODEsIDQ4NDg1LCA0ODQ5MiwgNDg1MDAsIDQ4NTA1LCA0ODUxMywgNDg1MTcsIDQ4NTIyLCA0ODUyNiwgNDg1MzEsIAotICAgIDQ4NTM1LCA0ODU0MCwgNDg1NDUsIDQ4NTU0LCA0ODU1NiwgNDg1NjAsIDQ4NTY0LCA0ODU3MSwgNDg1NzgsIDQ4NTgzLCAKLSAgICA0ODU5MSwgNDg1OTcsIDAsIDQ4NjAzLCAwLCA0ODYwNiwgNDg2MTEsIDQ4NjE2LCA0ODYyNCwgNDg2MjgsIDQ4NjM1LCAKLSAgICA0ODY0MywgNDg2NTEsIDQ4NjU2LCA0ODY2MSwgNDg2NjcsIDQ4NjcyLCA0ODY3NywgNDg2ODMsIDQ4Njg4LCA0ODY5MSwgCi0gICAgNDg2OTUsIDQ4Njk5LCA0ODcwNiwgNDg3MTUsIDQ4NzIwLCA0ODcyOSwgNDg3MzgsIDQ4NzQ0LCA0ODc1MCwgNDg3NTUsIAotICAgIDQ4NzYwLCA0ODc2NSwgNDg3NzAsIDQ4Nzc2LCA0ODc4MiwgNDg3OTAsIDQ4Nzk4LCA0ODgwNCwgNDg4MTAsIDQ4ODE1LCAKLSAgICA0ODgyMCwgNDg4MjcsIDQ4ODM0LCA0ODg0MCwgNDg4NDMsIDQ4ODQ2LCA0ODg1MCwgNDg4NTQsIDQ4ODU4LCA0ODg2MywgCi0gICAgNDg4NjksIDQ4ODc1LCA0ODg4MiwgNDg4ODksIDQ4ODk0LCA0ODg5OCwgNDg5MDIsIDQ4OTA2LCA0ODkxMCwgNDg5MTQsIAotICAgIDQ4OTE4LCA0ODkyMiwgNDg5MjYsIDQ4OTMwLCA0ODkzNCwgNDg5MzgsIDQ4OTQyLCA0ODk0NiwgNDg5NTAsIDQ4OTU0LCAKLSAgICA0ODk1OCwgNDg5NjIsIDQ4OTY2LCA0ODk3MCwgNDg5NzQsIDQ4OTc4LCA0ODk4MiwgNDg5ODYsIDQ4OTkwLCA0ODk5NCwgCi0gICAgNDg5OTgsIDQ5MDAyLCA0OTAwNiwgNDkwMTAsIDQ5MDE0LCA0OTAxOCwgNDkwMjIsIDQ5MDI2LCA0OTAzMCwgNDkwMzQsIAotICAgIDQ5MDM4LCA0OTA0MiwgNDkwNDYsIDQ5MDUwLCA0OTA1NCwgNDkwNTgsIDQ5MDYyLCA0OTA2NiwgNDkwNzAsIDQ5MDc0LCAKLSAgICA0OTA3OCwgNDkwODIsIDQ5MDg2LCA0OTA5MCwgNDkwOTQsIDQ5MDk4LCA0OTEwMiwgNDkxMDYsIDQ5MTEwLCA0OTExNCwgCi0gICAgNDkxMTgsIDQ5MTIyLCA0OTEyNiwgNDkxMzAsIDQ5MTM0LCA0OTEzOCwgNDkxNDIsIDQ5MTQ2LCA0OTE1MCwgNDkxNTQsIAotICAgIDQ5MTU4LCA0OTE2MiwgNDkxNjYsIDQ5MTcwLCA0OTE3NCwgNDkxNzgsIDQ5MTgyLCA0OTE4NiwgNDkxOTAsIDQ5MTk0LCAKLSAgICA0OTE5OCwgNDkyMDIsIDQ5MjA2LCA0OTIxMCwgNDkyMTQsIDQ5MjE4LCA0OTIyMiwgNDkyMjYsIDQ5MjMwLCA0OTIzNCwgCi0gICAgNDkyMzgsIDQ5MjQyLCA0OTI0NiwgNDkyNTAsIDQ5MjU0LCA0OTI1OCwgNDkyNjIsIDQ5MjY2LCA0OTI3MCwgNDkyNzQsIAotICAgIDQ5Mjc4LCA0OTI4MiwgNDkyODYsIDQ5MjkwLCA0OTI5NCwgNDkyOTgsIDQ5MzAyLCA0OTMwNiwgNDkzMTAsIDQ5MzE0LCAKLSAgICA0OTMxOCwgNDkzMjIsIDQ5MzI2LCA0OTMzMCwgNDkzMzQsIDQ5MzM4LCA0OTM0MiwgNDkzNDYsIDQ5MzUwLCA0OTM1NCwgCi0gICAgNDkzNTgsIDQ5MzYyLCA0OTM2NiwgNDkzNzAsIDQ5Mzc0LCA0OTM3OCwgNDkzODIsIDQ5Mzg2LCA0OTM5MCwgNDkzOTQsIAotICAgIDQ5Mzk4LCA0OTQwMiwgNDk0MDYsIDQ5NDEwLCA0OTQxNCwgNDk0MTgsIDQ5NDIyLCA0OTQyNiwgNDk0MzAsIDQ5NDM0LCAKLSAgICA0OTQzOCwgNDk0NDIsIDQ5NDQ2LCA0OTQ1MCwgNDk0NTQsIDQ5NDU4LCA0OTQ2MiwgNDk0NjYsIDQ5NDcwLCA0OTQ3NCwgCi0gICAgNDk0NzgsIDQ5NDgyLCA0OTQ4NiwgNDk0OTAsIDQ5NDk0LCA0OTQ5OCwgNDk1MDIsIDQ5NTA2LCA0OTUxMCwgNDk1MTQsIAotICAgIDQ5NTE4LCA0OTUyMiwgNDk1MjYsIDQ5NTMwLCA0OTUzNCwgNDk1MzgsIDQ5NTQyLCA0OTU0NiwgNDk1NTAsIDQ5NTU0LCAKLSAgICA0OTU1OCwgNDk1NjIsIDQ5NTY2LCA0OTU3MCwgNDk1NzQsIDQ5NTc4LCA0OTU4MiwgNDk1ODYsIDQ5NTkwLCA0OTU5NCwgCi0gICAgNDk1OTgsIDQ5NjAyLCA0OTYwNiwgNDk2MTAsIDQ5NjE0LCA0OTYxOCwgNDk2MjIsIDQ5NjI2LCA0OTYzMCwgNDk2MzQsIAotICAgIDQ5NjM4LCA0OTY0MiwgNDk2NDYsIDQ5NjUwLCA0OTY1NCwgNDk2NTgsIDQ5NjYyLCA0OTY2NiwgNDk2NzAsIDQ5Njc0LCAKLSAgICA0OTY3OCwgNDk2ODIsIDQ5Njg2LCA0OTY5MCwgNDk2OTQsIDQ5Njk4LCA0OTcwMiwgNDk3MDYsIDQ5NzEwLCA0OTcxNCwgCi0gICAgNDk3MTgsIDQ5NzIyLCA0OTcyNiwgNDk3MzAsIDQ5NzM0LCA0OTczOCwgNDk3NDIsIDQ5NzQ2LCA0OTc1MCwgNDk3NTQsIAotICAgIDQ5NzU4LCA0OTc2MiwgNDk3NjYsIDQ5NzcwLCA0OTc3NCwgNDk3NzgsIDQ5NzgyLCA0OTc4NiwgNDk3OTAsIDQ5Nzk0LCAKLSAgICA0OTc5OCwgNDk4MDIsIDQ5ODA2LCA0OTgxMCwgNDk4MTQsIDQ5ODE4LCA0OTgyMiwgNDk4MjYsIDQ5ODMwLCA0OTgzNCwgCi0gICAgNDk4MzgsIDQ5ODQyLCA0OTg0NiwgNDk4NTAsIDQ5ODU0LCA0OTg1OCwgNDk4NjIsIDQ5ODY2LCA0OTg3MCwgNDk4NzQsIAotICAgIDQ5ODc4LCA0OTg4MiwgNDk4ODYsIDQ5ODkwLCA0OTg5NCwgNDk4OTgsIDQ5OTAyLCA0OTkwNiwgNDk5MTAsIDQ5OTE0LCAKLSAgICA0OTkxOCwgNDk5MjUsIDQ5OTMzLCA0OTkzOSwgNDk5NDUsIDQ5OTUyLCA0OTk1OSwgNDk5NjUsIDQ5OTcxLCA0OTk3NywgCi0gICAgNDk5ODMsIDQ5OTg4LCA0OTk5MywgNDk5OTgsIDUwMDAzLCA1MDAwOSwgNTAwMTUsIDUwMDIzLCA1MDAzMCwgNTAwMzYsIAotICAgIDUwMDQyLCA1MDA1MCwgNTAwNTksIDUwMDY2LCA1MDA3NiwgNTAwODcsIDUwMDkwLCA1MDA5MywgNTAwOTcsIDUwMTAxLCAKLSAgICA1MDEwOCwgNTAxMTUsIDUwMTI2LCA1MDEzNywgNTAxNDcsIDUwMTU3LCA1MDE2NCwgNTAxNzEsIDUwMTc4LCA1MDE4NSwgCi0gICAgNTAxOTYsIDUwMjA3LCA1MDIxOCwgNTAyMjksIDUwMjM5LCA1MDI0OSwgNTAyNjEsIDUwMjczLCA1MDI4NCwgNTAyOTUsIAotICAgIDUwMzA3LCA1MDMxOSwgNTAzMjgsIDUwMzM4LCA1MDM0OCwgNTAzNTksIDUwMzcwLCA1MDM3NywgNTAzODQsIDUwMzkxLCAKLSAgICA1MDM5OCwgNTA0MDgsIDUwNDE4LCA1MDQyNiwgNTA0MzQsIDUwNDQxLCA1MDQ0OCwgNTA0NTUsIDUwNDYyLCA1MDQ2OSwgCi0gICAgNTA0NzQsIDUwNDc5LCA1MDQ4NSwgNTA0OTMsIDUwNTAzLCA1MDUxMSwgNTA1MTksIDUwNTI3LCA1MDUzNSwgNTA1NDMsIAotICAgIDUwNTUxLCA1MDU1OSwgNTA1NjcsIDUwNTc2LCA1MDU4NSwgNTA1OTUsIDUwNjA1LCA1MDYxNCwgNTA2MjMsIDUwNjMzLCAKLSAgICA1MDY0MywgNTA2NTIsIDUwNjYxLCA1MDY3MSwgNTA2ODEsIDUwNjkwLCA1MDY5OSwgNTA3MDksIDUwNzE5LCA1MDczMywgCi0gICAgNTA3NTAsIDUwNzY0LCA1MDc4MSwgNTA3OTUsIDUwODA5LCA1MDgyMywgNTA4MzcsIDUwODQ3LCA1MDg1OCwgNTA4NjgsIAotICAgIDUwODc5LCA1MDg5NiwgNTA5MTMsIDUwOTIxLCA1MDkyNywgNTA5MzQsIDUwOTQxLCA1MDk0OCwgNTA5NTUsIDUwOTYwLCAKLSAgICA1MDk2NiwgNTA5NzEsIDUwOTc2LCA1MDk4MiwgNTA5ODcsIDUwOTkyLCA1MDk5NywgNTEwMDIsIDUxMDA3LCA1MTAxNCwgCi0gICAgNTEwMTksIDUxMDI2LCA1MTAzMSwgNTEwMzYsIDUxMDQwLCA1MTA0NCwgNTEwNTEsIDUxMDU4LCA1MTA2NSwgNTEwNzIsIAotICAgIDUxMDc5LCA1MTA4NiwgNTEwOTksIDUxMTEyLCA1MTEyNSwgNTExMzgsIDUxMTQ2LCA1MTE1NCwgNTExNjAsIDUxMTY2LCAKLSAgICA1MTE3MywgNTExODAsIDUxMTg3LCA1MTE5NCwgNTExOTgsIDUxMjAzLCA1MTIxMSwgNTEyMTksIDUxMjI3LCA1MTIzNCwgCi0gICAgNTEyMzgsIDUxMjQ2LCA1MTI1NCwgNTEyNTgsIDUxMjYyLCA1MTI2NywgNTEyNzQsIDUxMjgyLCA1MTI5MCwgNTEzMTAsIAotICAgIDUxMzMwLCA1MTM1MCwgNTEzNzAsIDUxMzkwLCA1MTQxMCwgNTE0MzAsIDUxNDUwLCA1MTQ1NiwgNTE0NjMsIDUxNDcyLCAKLSAgICA1MTQ4MCwgNTE0ODgsIDUxNDkzLCA1MTQ5NiwgNTE0OTksIDUxNTA0LCA1MTUwNywgNTE1MjYsIDUxNTMzLCA1MTUzOSwgCi0gICAgNTE1NDUsIDUxNTQ5LCA1MTU1MiwgNTE1NTUsIDUxNTU4LCA1MTU3MCwgNTE1ODMsIDUxNTkwLCA1MTU5NywgNTE2MDAsIAotICAgIDUxNjA0LCA1MTYwNywgNTE2MTIsIDUxNjE3LCA1MTYyMiwgNTE2MjgsIDUxNjM3LCA1MTY0NCwgNTE2NTEsIDUxNjU5LCAKLSAgICA1MTY2NiwgNTE2NzMsIDUxNjc2LCA1MTY4MiwgNTE2ODgsIDUxNjkxLCA1MTY5NCwgNTE2OTksIDUxNzA0LCA1MTcxMCwgCi0gICAgNTE3MTYsIDUxNzIwLCA1MTcyNSwgNTE3MzIsIDUxNzM2LCA1MTc0MiwgNTE3NDYsIDUxNzUwLCA1MTc1OCwgNTE3NzAsIAotICAgIDUxNzc5LCA1MTc4MywgNTE3ODUsIDUxNzk0LCA1MTgwMywgNTE4MDksIDUxODEyLCA1MTgxOCwgNTE4MjQsIDUxODI5LCAKLSAgICA1MTgzNCwgNTE4MzksIDUxODQ0LCA1MTg0OSwgNTE4NTQsIDUxODU2LCA1MTg2MiwgNTE4NjcsIDUxODc0LCA1MTg3OCwgCi0gICAgNTE4ODQsIDUxODg3LCA1MTg5MSwgNTE4OTgsIDUxOTA1LCA1MTkwNywgNTE5MDksIDUxOTE1LCA1MTkyMSwgNTE5MjcsIAotICAgIDUxOTM2LCA1MTk0NSwgNTE5NTIsIDUxOTU5LCA1MTk2NSwgNTE5NzEsIDUxOTc2LCA1MTk4MSwgNTE5ODYsIDUxOTkyLCAKLSAgICA1MTk5OCwgNTIwMDMsIDUyMDEwLCA1MjAxNCwgNTIwMTgsIDUyMDMxLCA1MjA0NCwgNTIwNTYsIDUyMDY1LCA1MjA3MSwgCi0gICAgNTIwNzgsIDUyMDgzLCA1MjA4OCwgNTIwOTMsIDUyMDk4LCA1MjEwMywgNTIxMDUsIDUyMTEyLCA1MjExOSwgNTIxMjYsIAotICAgIDUyMTMzLCA1MjE0MCwgNTIxNDgsIDUyMTU0LCA1MjE1OSwgNTIxNjUsIDUyMTcxLCA1MjE3NywgNTIxODQsIDUyMTkwLCAKLSAgICA1MjE5OCwgNTIyMDYsIDUyMjE0LCA1MjIyMiwgNTIyMjksIDUyMjM1LCA1MjI0MSwgNTIyNTAsIDUyMjU0LCA1MjI2MywgCi0gICAgNTIyNzIsIDUyMjgxLCA1MjI4OSwgNTIyOTMsIDUyMjk5LCA1MjMwNiwgNTIzMTMsIDUyMzE3LCA1MjMyMywgNTIzMzAsIAotICAgIDUyMzM1LCA1MjM0MCwgNTIzNDYsIDUyMzUxLCA1MjM1NiwgNTIzNjMsIDUyMzcwLCA1MjM3NSwgNTIzODAsIDUyMzg4LCAKLSAgICA1MjM5NiwgNTI0MDYsIDUyNDE2LCA1MjQyMywgNTI0MzAsIDUyNDM0LCA1MjQzOCwgNTI0NTAsIDUyNDU2LCA1MjQ2MiwgCi0gICAgNTI0NjcsIDUyNDcyLCA1MjQ3OSwgNTI0ODYsIDUyNDkyLCA1MjQ5OCwgNTI1MDcsIDUyNTE1LCA1MjUyMywgNTI1MzAsIAotICAgIDUyNTM3LCA1MjU0NCwgNTI1NTAsIDUyNTU3LCA1MjU2MywgNTI1NzAsIDUyNTc3LCA1MjU4NCwgNTI1OTEsIDUyNTk3LCAKLSAgICA1MjYwMiwgNTI2MTEsIDUyNjIxLCA1MjYyOCwgNTI2MzcsIDUyNjQzLCA1MjY0OCwgNTI2NTMsIDUyNjYzLCA1MjY2OSwgCi0gICAgNTI2NzUsIDUyNjgxLCA1MjY4OSwgNTI2OTQsIDUyNzAxLCA1MjcwOCwgNTI3MTksIDUyNzI2LCA1MjczMywgNTI3NDAsIAotICAgIDUyNzQ3LCA1Mjc1NCwgNTI3NjEsIDUyNzY4LCA1Mjc4MCwgNTI3OTIsIDUyODAzLCA1MjgxNCwgNTI4MjcsIDUyODQwLCAKLSAgICA1Mjg0NSwgNTI4NTAsIDUyODU5LCA1Mjg2OCwgNTI4NzUsIDUyODgyLCA1Mjg5MSwgNTI5MDAsIDUyOTA4LCA1MjkxNiwgCi0gICAgNTI5MjQsIDUyOTMyLCA1Mjk0MiwgNTI5NTIsIDUyOTY2LCA1Mjk4MCwgNTI5ODgsIDUyOTk2LCA1MzAwOCwgNTMwMjAsIAotICAgIDUzMDI4LCA1MzAzNiwgNTMwNDYsIDUzMDU2LCA1MzA2MSwgNTMwNjYsIDUzMDc1LCA1MzA4NCwgNTMwODksIDUzMDk0LCAKLSAgICA1MzEwMiwgNTMxMDgsIDUzMTE0LCA1MzEyMiwgNTMxMzAsIDUzMTQzLCA1MzE1NiwgNTMxNjAsIDUzMTY0LCA1MzE3MSwgCi0gICAgNTMxNzgsIDUzMTg1LCA1MzE5MywgNTMyMDEsIDUzMjEwLCA1MzIxOSwgNTMyMjUsIDUzMjMxLCA1MzIzOCwgNTMyNDUsIAotICAgIDUzMjUyLCA1MzI1OSwgNTMyNjgsIDUzMjc3LCA1MzI4MCwgNTMyODMsIDUzMjg4LCA1MzI5MywgNTMyOTksIDUzMzA1LCAKLSAgICA1MzMxMiwgNTMzMTksIDUzMzI5LCA1MzMzOSwgNTMzNDYsIDUzMzUzLCA1MzM2MSwgNTMzNjksIDUzMzc3LCA1MzM4NSwgCi0gICAgNTMzOTMsIDUzNDAxLCA1MzQwOCwgNTM0MTUsIDUzNDE5LCA1MzQyMywgNTM0MzAsIDUzNDM3LCA1MzQ0MiwgNTM0NDcsIAotICAgIDUzNDUyLCA1MzQ1NywgNTM0NjMsIDUzNDc3LCA1MzQ4NCwgNTM0OTEsIDUzNDk1LCA1MzQ5NywgNTM0OTksIDUzNTA0LCAKLSAgICA1MzUwOSwgNTM1MTQsIDUzNTE4LCA1MzUyNiwgNTM1MzMsIDUzNTQwLCA1MzU0OCwgNTM1NjAsIDUzNTY4LCA1MzU3NiwgCi0gICAgNTM1ODcsIDUzNTkxLCA1MzU5NSwgNTM2MDEsIDUzNjA5LCA1MzYyMiwgNTM2MjksIDUzNjM2LCA1MzY0MywgNTM2NDgsIAotICAgIDUzNjU1LCA1MzY2NCwgNTM2NzIsIDUzNjc4LCA1MzY4NCwgNTM2OTAsIDUzNjk5LCA1MzcwOCwgNTM3MTYsIDUzNzI1LCAKLSAgICA1MzczMCwgNTM3MzMsIDUzNzM4LCA1Mzc0NCwgNTM3NTAsIDUzNzU2LCA1Mzc2MiwgNTM3NjYsIDUzNzY5LCA1Mzc3MywgCi0gICAgNTM3NzcsIDUzNzgzLCA1Mzc4OSwgNTM3OTUsIDUzODAxLCA1MzgwNSwgNTM4MDksIDUzODE2LCA1MzgyMywgNTM4MzAsIAotICAgIDUzODM3LCA1Mzg0NCwgNTM4NTEsIDUzODYxLCA1Mzg3MSwgNTM4NzgsIDUzODg1LCA1Mzg5MywgNTM5MDEsIDUzOTA1LCAKLSAgICA1MzkxMCwgNTM5MTUsIDUzOTIxLCA1MzkyNywgNTM5MzAsIDUzOTMzLCA1MzkzNiwgNTM5MzksIDUzOTQzLCA1Mzk0OCwgCi0gICAgNTM5NTMsIDUzOTU4LCA1Mzk2MywgNTM5NjgsIDUzOTcyLCA1Mzk3NiwgNTM5ODAsIDUzOTg0LCA1Mzk4OCwgNTM5OTIsIAotICAgIDUzOTk2LCA1NDAwMiwgNTQwMDYsIDU0MDEyLCA1NDAxNywgNTQwMjQsIDU0MDMyLCA1NDAzOSwgNTQwNDcsIDU0MDU0LCAKLSAgICA1NDA2MiwgNTQwNzEsIDU0MDc4LCA1NDA4OCwgNTQwOTksIDU0MTA1LCA1NDExNCwgNTQxMjAsIDU0MTI5LCA1NDEzOCwgCi0gICAgNTQxNDQsIDU0MTUwLCA1NDE1NCwgNTQxNTgsIDU0MTY3LCA1NDE3NiwgNTQxODMsIDU0MTkwLCA1NDE5OSwgMCwgMCwgMCwgCi0gICAgNTQyMDgsIDU0MjEzLCA1NDIxNywgNTQyMjEsIDU0MjI2LCA1NDIzMSwgNTQyMzYsIDU0MjQ0LCA1NDI1MiwgNTQyNTUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0MjU5LCA1NDI2NCwgNTQyNjksIDU0Mjc0LCA1NDI3OSwgCi0gICAgNTQyODQsIDU0Mjg5LCA1NDI5NCwgNTQyOTksIDU0MzA0LCA1NDMwOSwgNTQzMTUsIDU0MzE5LCA1NDMyNCwgNTQzMjksIAotICAgIDU0MzM0LCA1NDMzOSwgNTQzNDQsIDU0MzQ5LCA1NDM1NCwgNTQzNTksIDU0MzY0LCA1NDM2OSwgNTQzNzQsIDU0Mzc5LCAKLSAgICA1NDM4NCwgNTQzODksIDU0Mzk0LCA1NDM5OSwgNTQ0MDQsIDU0NDA5LCA1NDQxNCwgNTQ0MTksIDU0NDI0LCA1NDQyOSwgCi0gICAgNTQ0MzUsIDU0NDQwLCA1NDQ0NiwgNTQ0NTUsIDU0NDYwLCA1NDQ2OCwgNTQ0NzUsIDU0NDg0LCA1NDQ4OSwgNTQ0OTQsIAotICAgIDU0NDk5LCA1NDUwNSwgMCwgNTQ1MTIsIDU0NTE3LCA1NDUyMiwgNTQ1MjcsIDU0NTMyLCA1NDUzNywgNTQ1NDIsIDU0NTQ3LCAKLSAgICA1NDU1MiwgNTQ1NTcsIDU0NTYyLCA1NDU2OCwgNTQ1NzIsIDU0NTc3LCA1NDU4MiwgNTQ1ODcsIDU0NTkyLCA1NDU5NywgCi0gICAgNTQ2MDIsIDU0NjA3LCA1NDYxMiwgNTQ2MTcsIDU0NjIyLCA1NDYyNywgNTQ2MzIsIDU0NjM3LCA1NDY0MiwgNTQ2NDcsIAotICAgIDU0NjUyLCA1NDY1NywgNTQ2NjIsIDU0NjY3LCA1NDY3MiwgNTQ2NzcsIDU0NjgyLCA1NDY4OCwgNTQ2OTMsIDU0Njk5LCAKLSAgICA1NDcwOCwgNTQ3MTMsIDU0NzIxLCA1NDcyOCwgNTQ3MzcsIDU0NzQyLCA1NDc0NywgNTQ3NTIsIDU0NzU4LCAwLCA1NDc2NSwgCi0gICAgNTQ3NzMsIDU0NzgxLCA1NDc5MSwgNTQ3OTgsIDU0ODA2LCA1NDgxMiwgNTQ4MjEsIDU0ODI5LCA1NDgzNywgNTQ4NDUsIAotICAgIDU0ODUzLCA1NDg2MSwgNTQ4NjksIDU0ODc0LCA1NDg4MSwgNTQ4ODcsIDU0ODk0LCA1NDkwMiwgNTQ5MDksIDU0OTE2LCAKLSAgICA1NDkyNCwgNTQ5MzAsIDU0OTM2LCA1NDk0MywgNTQ5NTAsIDU0OTYwLCA1NDk3MCwgNTQ5NzcsIDU0OTg0LCA1NDk4OSwgCi0gICAgNTQ5OTksIDU1MDA5LCA1NTAxNCwgNTUwMTksIDU1MDI0LCA1NTAyOSwgNTUwMzQsIDU1MDM5LCA1NTA0NCwgNTUwNDksIAotICAgIDU1MDU0LCA1NTA1OSwgNTUwNjQsIDU1MDY5LCA1NTA3NCwgNTUwNzksIDU1MDg0LCA1NTA4OSwgNTUwOTQsIDU1MDk5LCAKLSAgICA1NTEwNCwgNTUxMDksIDU1MTE0LCA1NTExOSwgNTUxMjQsIDU1MTI5LCA1NTEzNCwgNTUxMzksIDU1MTQ0LCA1NTE0OSwgCi0gICAgNTUxNTQsIDU1MTU5LCA1NTE2MywgNTUxNjcsIDU1MTcyLCA1NTE3NywgNTUxODIsIDU1MTg3LCA1NTE5MiwgNTUxOTcsIAotICAgIDU1MjAyLCA1NTIwNywgNTUyMTIsIDU1MjE3LCA1NTIyMiwgNTUyMjcsIDU1MjMyLCA1NTIzNywgNTUyNDIsIDU1MjQ3LCAKLSAgICA1NTI1MiwgNTUyNTcsIDU1MjY0LCA1NTI3MSwgNTUyNzgsIDU1Mjg1LCA1NTI5MiwgNTUyOTksIDU1MzA2LCA1NTMxMywgCi0gICAgNTUzMjAsIDU1MzI3LCA1NTMzNCwgNTUzNDEsIDU1MzQ4LCA1NTM1NSwgNTUzNjAsIDU1MzY1LCA1NTM3MiwgNTUzNzksIAotICAgIDU1Mzg2LCA1NTM5MywgNTU0MDAsIDU1NDA3LCA1NTQxNCwgNTU0MjEsIDU1NDI4LCA1NTQzNSwgNTU0NDIsIDU1NDQ5LCAKLSAgICA1NTQ1NSwgNTU0NjEsIDU1NDY3LCA1NTQ3MywgNTU0ODAsIDU1NDg3LCA1NTQ5NCwgNTU1MDEsIDU1NTA4LCA1NTUxNSwgCi0gICAgNTU1MjIsIDU1NTI5LCA1NTUzNiwgNTU1NDMsIDU1NTUxLCA1NTU1OSwgNTU1NjcsIDU1NTc1LCA1NTU4MywgNTU1OTEsIAotICAgIDU1NTk5LCA1NTYwNywgNTU2MTEsIDU1NjE3LCA1NTYyMywgNTU2MjcsIDU1NjMzLCA1NTYzOSwgNTU2NDUsIDU1NjUyLCAKLSAgICA1NTY1OSwgNTU2NjYsIDU1NjczLCA1NTY3OCwgNTU2ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NjkwLCA1NTY5OCwgCi0gICAgNTU3MDcsIDU1NzE2LCA1NTcyNCwgNTU3MzAsIDU1NzM1LCA1NTc0MCwgNTU3NDUsIDU1NzUwLCA1NTc1NSwgNTU3NjAsIAotICAgIDU1NzY1LCA1NTc3MCwgNTU3NzUsIDU1NzgwLCA1NTc4NSwgNTU3OTAsIDU1Nzk1LCA1NTgwMCwgNTU4MDUsIDU1ODEwLCAKLSAgICA1NTgxNSwgNTU4MjAsIDU1ODI1LCA1NTgzMCwgNTU4MzUsIDU1ODQwLCA1NTg0NSwgNTU4NTAsIDU1ODU1LCA1NTg2MCwgCi0gICAgNTU4NjUsIDU1ODcwLCA1NTg3NSwgNTU4ODAsIDU1ODg1LCA1NTg5MCwgNTU4OTUsIDU1OTAwLCA1NTkwNSwgNTU5MTAsIAotICAgIDU1OTE1LCA1NTkyMCwgNTU5MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1OTMwLCA1NTkzNCwgNTU5MzksIAotICAgIDU1OTQ0LCA1NTk0OSwgNTU5NTQsIDU1OTYzLCA1NTk2OCwgNTU5NzMsIDU1OTc4LCA1NTk4MywgNTU5ODgsIDU1OTkzLCAKLSAgICA1NTk5OCwgNTYwMDMsIDU2MDEwLCA1NjAxNSwgNTYwMjAsIDU2MDI5LCA1NjAzNiwgNTYwNDEsIDU2MDQ2LCA1NjA1MSwgCi0gICAgNTYwNTgsIDU2MDYzLCA1NjA3MCwgNTYwNzUsIDU2MDgwLCA1NjA4NywgNTYwOTQsIDU2MDk5LCA1NjEwNCwgNTYxMDksIAotICAgIDU2MTE2LCA1NjEyMywgNTYxMjgsIDU2MTMzLCA1NjEzOCwgNTYxNDMsIDU2MTQ4LCA1NjE1NSwgNTYxNjIsIDU2MTY3LCAKLSAgICA1NjE3MiwgNTYxNzcsIDU2MTgyLCA1NjE4NywgNTYxOTIsIDU2MTk3LCA1NjIwMiwgNTYyMDcsIDU2MjEyLCA1NjIxNywgCi0gICAgNTYyMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2MjI5LCA1NjIzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTYyNDEsIDU2MjQ3LCA1NjI1MSwgNTYyNTUsIDU2MjU5LCA1NjI2MywgNTYyNjcsIDU2MjcxLCAKLSAgICA1NjI3NSwgNTYyNzksIDU2MjgzLCA1NjI4NywgNTYyOTMsIDU2Mjk3LCA1NjMwMSwgNTYzMDUsIDU2MzA5LCA1NjMxMywgCi0gICAgNTYzMTcsIDU2MzIxLCA1NjMyNSwgNTYzMjksIDU2MzMzLCA1NjMzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTYzNDEsIDU2MzQ1LCA1NjM0OSwgNTYzNTMsIDU2MzU3LCA1NjM2MSwgNTYzNjUsIDAsIDU2MzY5LCA1NjM3MywgNTYzNzcsIAotICAgIDU2MzgxLCA1NjM4NSwgNTYzODksIDU2MzkzLCAwLCA1NjM5NywgNTY0MDEsIDU2NDA1LCA1NjQwOSwgNTY0MTMsIDU2NDE3LCAKLSAgICA1NjQyMSwgMCwgNTY0MjUsIDU2NDI5LCA1NjQzMywgNTY0MzcsIDU2NDQxLCA1NjQ0NSwgNTY0NDksIDAsIDU2NDUzLCAKLSAgICA1NjQ1NywgNTY0NjEsIDU2NDY1LCA1NjQ2OSwgNTY0NzMsIDU2NDc3LCAwLCA1NjQ4MSwgNTY0ODUsIDU2NDg5LCA1NjQ5MywgCi0gICAgNTY0OTcsIDU2NTAxLCA1NjUwNSwgMCwgNTY1MDksIDU2NTEzLCA1NjUxNywgNTY1MjEsIDU2NTI1LCA1NjUyOSwgNTY1MzMsIAotICAgIDAsIDU2NTM3LCA1NjU0MSwgNTY1NDUsIDU2NTQ5LCA1NjU1MywgNTY1NTcsIDU2NTYxLCAwLCA1NjU2NSwgNTY1NzAsIAotICAgIDU2NTc1LCA1NjU4MCwgNTY1ODUsIDU2NTkwLCA1NjU5NSwgNTY1OTksIDU2NjA0LCA1NjYwOSwgNTY2MTQsIDU2NjE4LCAKLSAgICA1NjYyMywgNTY2MjgsIDU2NjMzLCA1NjYzOCwgNTY2NDIsIDU2NjQ3LCA1NjY1MiwgNTY2NTcsIDU2NjYyLCA1NjY2NywgCi0gICAgNTY2NzIsIDU2Njc2LCA1NjY4MSwgNTY2ODYsIDU2NjkzLCA1NjY5OCwgNTY3MDMsIDU2NzA5LCA1NjcxNiwgNTY3MjMsIAotICAgIDU2NzMyLCA1NjczOSwgNTY3NDgsIDU2NzUyLCA1Njc1NiwgNTY3NjIsIDU2NzY4LCA1Njc3NCwgNTY3ODIsIDU2Nzg4LCAKLSAgICA1Njc5MiwgNTY3OTYsIDU2ODAwLCA1NjgwNiwgNTY4MTIsIDU2ODE2LCA1NjgxOCwgNTY4MjIsIDU2ODI4LCA1NjgzMCwgCi0gICAgNTY4MzQsIDU2ODM4LCA1Njg0MiwgNTY4NDgsIDU2ODUzLCA1Njg1NywgNTY4NjEsIDU2ODY2LCA1Njg3MiwgNTY4NzcsIAotICAgIDU2ODgyLCA1Njg4NywgNTY4OTIsIDU2ODk5LCA1NjkwNiwgNTY5MTEsIDU2OTE2LCA1NjkyMSwgNTY5MjYsIDU2OTMxLCAKLSAgICA1NjkzNiwgNTY5NDAsIDU2OTQ0LCA1Njk1MSwgNTY5NTgsIDU2OTY0LCA1Njk2OCwgNTY5NzMsIDU2OTc2LCA1Njk4MCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTY5ODgsIDU2OTkyLCA1Njk5NiwgNTcwMDEsIDU3MDA2LCA1NzAxMSwgNTcwMTUsIDU3MDE5LCAKLSAgICA1NzAyMywgNTcwMjgsIDU3MDMzLCA1NzAzNywgNTcwNDEsIDU3MDQ1LCA1NzA0OSwgNTcwNTQsIDU3MDU5LCA1NzA2NCwgCi0gICAgNTcwNjksIDU3MDczLCA1NzA3NywgNTcwODIsIDU3MDg3LCA1NzA5MiwgNTcwOTcsIDU3MTAxLCAwLCA1NzEwNSwgNTcxMDksIAotICAgIDU3MTEzLCA1NzExNywgNTcxMjEsIDU3MTI1LCA1NzEyOSwgNTcxMzQsIDU3MTM5LCA1NzE0MywgNTcxNDgsIDU3MTUzLCAKLSAgICA1NzE2MiwgNTcxNjYsIDU3MTcwLCA1NzE3NCwgNTcxODEsIDU3MTg1LCA1NzE5MCwgNTcxOTUsIDU3MTk5LCA1NzIwMywgCi0gICAgNTcyMDksIDU3MjE0LCA1NzIxOSwgNTcyMjQsIDU3MjI5LCA1NzIzMywgNTcyMzcsIDU3MjQxLCA1NzI0NSwgNTcyNDksIAotICAgIDU3MjU0LCA1NzI1OSwgNTcyNjMsIDU3MjY3LCA1NzI3MiwgNTcyNzcsIDU3MjgyLCA1NzI4NiwgNTcyOTAsIDU3Mjk1LCAKLSAgICA1NzMwMCwgNTczMDYsIDU3MzEyLCA1NzMxNiwgNTczMjIsIDU3MzI4LCA1NzMzMiwgNTczMzgsIDU3MzQ0LCA1NzM0OSwgCi0gICAgNTczNTQsIDU3MzU4LCA1NzM2NCwgNTczNjgsIDU3MzcyLCA1NzM3OCwgNTczODQsIDU3Mzg5LCA1NzM5NCwgNTczOTgsIAotICAgIDU3NDAyLCA1NzQxMCwgNTc0MTYsIDU3NDIyLCA1NzQyOCwgNTc0MzMsIDU3NDM4LCA1NzQ0MywgNTc0NDksIDU3NDUzLCAKLSAgICA1NzQ1OSwgNTc0NjMsIDU3NDY3LCA1NzQ3MywgNTc0NzksIDU3NDg1LCA1NzQ5MSwgNTc0OTcsIDU3NTAzLCA1NzUwOSwgCi0gICAgNTc1MTUsIDU3NTIxLCA1NzUyNywgNTc1MzMsIDU3NTM5LCA1NzU0MywgNTc1NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDU3NTU1LCA1NzU1OCwgNTc1NjIsIDU3NTY2LCA1NzU3MCwgNTc1NzQsIDU3NTc3LCA1NzU4MCwgCi0gICAgNTc1ODQsIDU3NTg4LCA1NzU5MiwgNTc1OTYsIDU3NTk5LCA1NzYwNCwgNTc2MDgsIDU3NjEyLCA1NzYxNiwgNTc2MjIsIAotICAgIDU3NjI2LCA1NzYzMCwgNTc2MzQsIDU3NjM4LCA1NzY0NSwgNTc2NTEsIDU3NjU1LCA1NzY1OSwgNTc2NjMsIDU3NjY3LCAKLSAgICA1NzY3MSwgNTc2NzUsIDU3Njc5LCA1NzY4MywgNTc2ODcsIDU3NjkxLCA1NzY5NSwgNTc3MDEsIDU3NzA1LCA1NzcwOSwgCi0gICAgNTc3MTMsIDU3NzE3LCA1NzcyMSwgNTc3MjUsIDU3NzI5LCA1NzczMywgNTc3MzcsIDU3NzQxLCA1Nzc0NSwgNTc3NDksIAotICAgIDU3NzUzLCA1Nzc1NywgNTc3NjEsIDU3NzY1LCA1Nzc3MSwgNTc3NzcsIDU3NzgyLCA1Nzc4NywgNTc3OTEsIDU3Nzk1LCAKLSAgICA1Nzc5OSwgNTc4MDMsIDU3ODA3LCA1NzgxMSwgNTc4MTUsIDU3ODE5LCA1NzgyMywgNTc4MjcsIDU3ODMxLCA1NzgzNSwgCi0gICAgNTc4MzksIDU3ODQzLCA1Nzg0NywgNTc4NTEsIDU3ODU1LCA1Nzg1OSwgNTc4NjMsIDU3ODY3LCA1Nzg3MSwgNTc4NzUsIAotICAgIDU3ODc5LCA1Nzg4MywgNTc4ODksIDU3ODkzLCA1Nzg5NywgNTc5MDEsIDU3OTA1LCA1NzkwOSwgNTc5MTMsIDU3OTE3LCAKLSAgICA1NzkyMSwgNTc5MjYsIDU3OTMzLCA1NzkzNywgNTc5NDEsIDU3OTQ1LCA1Nzk0OSwgNTc5NTMsIDU3OTU3LCA1Nzk2MSwgCi0gICAgNTc5NjUsIDU3OTY5LCA1Nzk3MywgNTc5NzcsIDU3OTgxLCA1Nzk4OCwgNTc5OTIsIDU3OTk4LCA1ODAwMiwgNTgwMDYsIAotICAgIDU4MDEwLCA1ODAxNCwgNTgwMTgsIDU4MDIxLCA1ODAyNSwgNTgwMjksIDU4MDMzLCA1ODAzNywgNTgwNDEsIDU4MDQ1LCAKLSAgICA1ODA0OSwgNTgwNTMsIDU4MDU3LCA1ODA2MSwgNTgwNjUsIDU4MDY5LCA1ODA3MywgNTgwNzcsIDU4MDgxLCA1ODA4NSwgCi0gICAgNTgwODksIDU4MDkzLCA1ODA5NywgNTgxMDEsIDU4MTA1LCA1ODEwOSwgNTgxMTMsIDU4MTE3LCA1ODEyMSwgNTgxMjUsIAotICAgIDU4MTI5LCA1ODEzMywgNTgxMzcsIDU4MTQxLCA1ODE0NSwgNTgxNDksIDU4MTU1LCA1ODE1OSwgNTgxNjMsIDU4MTY3LCAKLSAgICA1ODE3MSwgNTgxNzUsIDU4MTc5LCA1ODE4MywgNTgxODcsIDU4MTkxLCA1ODE5NSwgNTgxOTksIDU4MjAzLCA1ODIwNywgCi0gICAgNTgyMTEsIDU4MjE1LCA1ODIxOSwgNTgyMjMsIDU4MjI3LCA1ODIzMSwgNTgyMzUsIDU4MjM5LCA1ODI0MywgNTgyNDcsIAotICAgIDU4MjUxLCA1ODI1NSwgNTgyNTksIDU4MjYzLCA1ODI3MSwgNTgyNzUsIDU4Mjc5LCA1ODI4MywgNTgyODcsIDU4MjkxLCAKLSAgICA1ODI5NywgNTgzMDEsIDU4MzA1LCA1ODMwOSwgNTgzMTMsIDU4MzE3LCA1ODMyMSwgNTgzMjUsIDU4MzI5LCA1ODMzMywgCi0gICAgNTgzMzcsIDU4MzQxLCA1ODM0NSwgNTgzNDksIDU4MzU1LCA1ODM1OSwgNTgzNjMsIDU4MzY3LCA1ODM3MSwgNTgzNzUsIAotICAgIDU4Mzc5LCA1ODM4MywgNTgzODcsIDU4MzkxLCA1ODM5NSwgNTgzOTksIDU4NDAzLCA1ODQwNywgNTg0MTEsIDU4NDE1LCAKLSAgICA1ODQxOSwgNTg0MjMsIDU4NDI3LCA1ODQzMSwgNTg0MzUsIDU4NDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODQ0MywgNTg0NTIsIDU4NDYwLCAKLSAgICA1ODQ3MiwgNTg0ODMsIDU4NDkxLCA1ODUwMCwgNTg1MDksIDU4NTE5LCA1ODUzMSwgNTg1NDMsIDU4NTU1LCAwLCAwLCAwLCAKLSAgICAwLCA1ODU2MSwgNTg1NjQsIDU4NTY3LCA1ODU3MiwgNTg1NzUsIDU4NTgyLCA1ODU4NiwgNTg1OTAsIDU4NTk0LCA1ODU5OCwgCi0gICAgNTg2MDIsIDU4NjA3LCA1ODYxMiwgNTg2MTYsIDU4NjIwLCA1ODYyNSwgNTg2MzAsIDU4NjM1LCA1ODY0MCwgNTg2NDMsIAotICAgIDU4NjQ2LCA1ODY1MiwgNTg2NTgsIDU4NjYzLCA1ODY2OCwgNTg2NzUsIDU4NjgyLCA1ODY4NiwgNTg2OTAsIDU4Njk0LCAKLSAgICA1ODcwMiwgNTg3MDgsIDU4NzE1LCA1ODcyMCwgNTg3MjUsIDU4NzMwLCA1ODczNSwgNTg3NDAsIDU4NzQ1LCA1ODc1MCwgCi0gICAgNTg3NTUsIDU4NzYwLCA1ODc2NSwgNTg3NzAsIDU4Nzc1LCA1ODc4MCwgNTg3ODUsIDU4NzkxLCA1ODc5NiwgNTg4MDAsIAotICAgIDU4ODA2LCA1ODgxNywgNTg4MjcsIDU4ODQyLCA1ODg1MiwgNTg4NTYsIDU4ODY1LCA1ODg3MSwgNTg4NzcsIDU4ODgzLCAKLSAgICA1ODg4OCwgNTg4OTEsIDU4ODk2LCA1ODkwMCwgMCwgNTg5MDYsIDU4OTEwLCA1ODkxMywgNTg5MTcsIDU4OTIwLCA1ODkyNCwgCi0gICAgNTg5MjcsIDU4OTMxLCA1ODkzNCwgNTg5MzgsIDU4OTQxLCA1ODk0NCwgNTg5NDgsIDU4OTUyLCA1ODk1NiwgNTg5NjAsIAotICAgIDU4OTY0LCA1ODk2OCwgNTg5NzIsIDU4OTc2LCA1ODk4MCwgNTg5ODQsIDU4OTg4LCA1ODk5MiwgNTg5OTYsIDU5MDAwLCAKLSAgICA1OTAwNCwgNTkwMDgsIDU5MDEyLCA1OTAxNiwgNTkwMjAsIDU5MDI0LCA1OTAyOCwgNTkwMzIsIDU5MDM2LCA1OTA0MSwgCi0gICAgNTkwNDUsIDU5MDQ5LCA1OTA1MywgNTkwNTcsIDU5MDYwLCA1OTA2NCwgNTkwNjcsIDU5MDcxLCA1OTA3NSwgNTkwNzksIAotICAgIDU5MDgzLCA1OTA4NiwgNTkwOTAsIDU5MDkzLCA1OTA5NywgNTkxMDEsIDU5MTA1LCA1OTEwOSwgNTkxMTMsIDU5MTE3LCAKLSAgICA1OTEyMSwgNTkxMjUsIDU5MTI5LCA1OTEzMywgNTkxMzcsIDU5MTQxLCA1OTE0NCwgNTkxNDgsIDU5MTUyLCA1OTE1NiwgCi0gICAgNTkxNjAsIDU5MTY0LCA1OTE2NywgNTkxNzIsIDU5MTc2LCA1OTE4MSwgNTkxODUsIDU5MTg4LCA1OTE5MiwgNTkxOTYsIAotICAgIDU5MjAwLCA1OTIwNCwgNTkyMDksIDU5MjEzLCA1OTIxNywgNTkyMjEsIDU5MjI1LCA1OTIyOCwgNTkyMzIsIDU5MjM2LCAwLCAKLSAgICAwLCA1OTI0MSwgNTkyNDksIDU5MjU3LCA1OTI2NCwgNTkyNzEsIDU5Mjc1LCA1OTI4MSwgNTkyODYsIDU5MjkxLCA1OTI5NSwgCi0gICAgNTkyOTgsIDU5MzAyLCA1OTMwNSwgNTkzMDksIDU5MzEyLCA1OTMxNiwgNTkzMTksIDU5MzIzLCA1OTMyNiwgNTkzMjksIAotICAgIDU5MzMzLCA1OTMzNywgNTkzNDEsIDU5MzQ1LCA1OTM0OSwgNTkzNTMsIDU5MzU3LCA1OTM2MSwgNTkzNjUsIDU5MzY5LCAKLSAgICA1OTM3MywgNTkzNzcsIDU5MzgxLCA1OTM4NSwgNTkzODksIDU5MzkzLCA1OTM5NywgNTk0MDEsIDU5NDA1LCA1OTQwOSwgCi0gICAgNTk0MTMsIDU5NDE3LCA1OTQyMSwgNTk0MjYsIDU5NDMwLCA1OTQzNCwgNTk0MzgsIDU5NDQyLCA1OTQ0NSwgNTk0NDksIAotICAgIDU5NDUyLCA1OTQ1NiwgNTk0NjAsIDU5NDY0LCA1OTQ2OCwgNTk0NzEsIDU5NDc1LCA1OTQ3OCwgNTk0ODIsIDU5NDg2LCAKLSAgICA1OTQ5MCwgNTk0OTQsIDU5NDk4LCA1OTUwMiwgNTk1MDYsIDU5NTEwLCA1OTUxNCwgNTk1MTgsIDU5NTIyLCA1OTUyNiwgCi0gICAgNTk1MjksIDU5NTMzLCA1OTUzNywgNTk1NDEsIDU5NTQ1LCA1OTU0OSwgNTk1NTIsIDU5NTU3LCA1OTU2MSwgNTk1NjYsIAotICAgIDU5NTcwLCA1OTU3MywgNTk1NzcsIDU5NTgxLCA1OTU4NSwgNTk1ODksIDU5NTk0LCA1OTU5OCwgNTk2MDIsIDU5NjA2LCAKLSAgICA1OTYxMCwgNTk2MTMsIDU5NjE3LCA1OTYyMSwgNTk2MjYsIDU5NjMwLCA1OTYzNCwgNTk2MzgsIDU5NjQyLCA1OTY0NywgCi0gICAgNTk2NTQsIDU5NjU4LCA1OTY2NCwgMCwgMCwgMCwgMCwgMCwgNTk2NjksIDU5NjczLCA1OTY3NywgNTk2ODAsIDU5Njg0LCAKLSAgICA1OTY4OCwgNTk2OTIsIDU5Njk1LCA1OTY5OCwgNTk3MDIsIDU5NzA2LCA1OTcxMCwgNTk3MTQsIDU5NzE4LCA1OTcyMiwgCi0gICAgNTk3MjYsIDU5NzMwLCA1OTczNCwgNTk3MzcsIDU5NzQxLCA1OTc0NSwgNTk3NDgsIDU5NzUxLCA1OTc1NCwgNTk3NTcsIAotICAgIDU5NzYxLCA1OTc2NSwgNTk3NjksIDU5NzczLCA1OTc3NywgNTk3ODEsIDU5Nzg1LCA1OTc4OSwgNTk3OTMsIDU5Nzk3LCAKLSAgICA1OTgwMCwgNTk4MDMsIDU5ODA3LCA1OTgxMSwgNTk4MTUsIDU5ODE5LCAwLCAwLCAwLCA1OTgyMywgNTk4MjcsIDU5ODMxLCAKLSAgICA1OTgzNSwgNTk4MzksIDU5ODQzLCA1OTg0NywgNTk4NTEsIDU5ODU1LCA1OTg1OSwgNTk4NjMsIDU5ODY3LCA1OTg3MSwgCi0gICAgNTk4NzUsIDU5ODc5LCA1OTg4MywgNTk4ODcsIDU5ODkxLCA1OTg5NSwgNTk4OTksIDU5OTAzLCA1OTkwNywgNTk5MTEsIAotICAgIDU5OTE1LCA1OTkxOSwgNTk5MjMsIDU5OTI3LCA1OTkzMSwgNTk5MzUsIDU5OTM5LCA1OTk0MywgNTk5NDYsIDU5OTUwLCAKLSAgICA1OTk1MywgNTk5NTcsIDU5OTYxLCA1OTk2NCwgNTk5NjgsIDU5OTcyLCA1OTk3NSwgNTk5NzksIDU5OTgzLCA1OTk4NywgCi0gICAgNTk5OTEsIDU5OTk0LCA1OTk5OCwgNjAwMDIsIDYwMDA2LCA2MDAxMCwgNjAwMTQsIDYwMDE4LCA2MDAyMSwgNjAwMjQsIAotICAgIDYwMDI4LCA2MDAzMiwgNjAwMzYsIDYwMDQwLCA2MDA0NCwgNjAwNDgsIDYwMDUyLCA2MDA1NiwgNjAwNjAsIDYwMDY0LCAKLSAgICA2MDA2OCwgNjAwNzIsIDYwMDc2LCA2MDA4MCwgNjAwODQsIDYwMDg4LCA2MDA5MiwgNjAwOTYsIDYwMTAwLCA2MDEwNCwgCi0gICAgNjAxMDgsIDYwMTEyLCA2MDExNiwgNjAxMjAsIDYwMTI0LCA2MDEyOCwgNjAxMzIsIDYwMTM2LCA2MDE0MCwgNjAxNDQsIAotICAgIDYwMTQ4LCA2MDE1MiwgNjAxNTYsIDYwMTYwLCA2MDE2NCwgNjAxNjgsIDYwMTcyLCA2MDE3NiwgNjAxODAsIDYwMTg0LCAKLSAgICA2MDE4OCwgMCwgNjAxOTIsIDYwMTk4LCA2MDIwNCwgNjAyMDksIDYwMjE0LCA2MDIxOSwgNjAyMjUsIDYwMjMxLCA2MDIzNywgCi0gICAgNjAyNDMsIDYwMjQ5LCA2MDI1NSwgNjAyNjEsIDYwMjY3LCA2MDI3MywgNjAyNzksIDYwMjg1LCA2MDI4OSwgNjAyOTMsIAotICAgIDYwMjk3LCA2MDMwMSwgNjAzMDUsIDYwMzA5LCA2MDMxMywgNjAzMTcsIDYwMzIxLCA2MDMyNSwgNjAzMjksIDYwMzMzLCAKLSAgICA2MDMzNywgNjAzNDEsIDYwMzQ1LCA2MDM0OSwgNjAzNTMsIDYwMzU3LCA2MDM2MSwgNjAzNjUsIDYwMzcwLCA2MDM3NSwgCi0gICAgNjAzODAsIDYwMzg1LCA2MDM4OSwgNjAzOTMsIDAsIDAsIDAsIDAsIDAsIDYwMzk3LCA2MDQwMiwgNjA0MDcsIDYwNDEyLCAKLSAgICA2MDQxNywgNjA0MjIsIDYwNDI3LCA2MDQzMiwgNjA0MzcsIDYwNDQyLCA2MDQ0NywgNjA0NTIsIDYwNDU3LCA2MDQ2MiwgCi0gICAgNjA0NjcsIDYwNDcyLCA2MDQ3NiwgNjA0ODEsIDYwNDg1LCA2MDQ5MCwgNjA0OTUsIDYwNTAwLCA2MDUwNSwgNjA1MTAsIAotICAgIDYwNTE1LCA2MDUyMCwgNjA1MjUsIDYwNTMwLCA2MDUzNSwgNjA1NDAsIDYwNTQ1LCA2MDU1MCwgNjA1NTUsIDYwNTYwLCAKLSAgICA2MDU2NSwgNjA1NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNTc1LCA2MDU4MCwgNjA1ODUsIAotICAgIDYwNTkwLCA2MDU5NCwgNjA1OTksIDYwNjAzLCA2MDYwOCwgNjA2MTMsIDYwNjE4LCA2MDYyMywgNjA2MjgsIDYwNjMyLCAKLSAgICA2MDYzNywgNjA2NDIsIDYwNjQ3LCA2MDY1MiwgNjA2NTYsIDYwNjYwLCA2MDY2NCwgNjA2NjgsIDYwNjcyLCA2MDY3NiwgCi0gICAgNjA2ODAsIDYwNjg0LCA2MDY4OCwgNjA2OTIsIDYwNjk2LCA2MDcwMCwgNjA3MDQsIDYwNzA4LCA2MDcxMywgNjA3MTgsIAotICAgIDYwNzIzLCA2MDcyOCwgNjA3MzMsIDYwNzM4LCA2MDc0MywgNjA3NDgsIDYwNzUzLCA2MDc1OCwgNjA3NjMsIDYwNzY4LCAKLSAgICA2MDc3MywgNjA3NzgsIDYwNzgzLCA2MDc4OSwgMCwgNjA3OTYsIDYwNzk5LCA2MDgwMiwgNjA4MDUsIDYwODA4LCA2MDgxMSwgCi0gICAgNjA4MTQsIDYwODE3LCA2MDgyMCwgNjA4MjMsIDYwODI3LCA2MDgzMSwgNjA4MzUsIDYwODM5LCA2MDg0MywgNjA4NDcsIAotICAgIDYwODUxLCA2MDg1NSwgNjA4NTksIDYwODYzLCA2MDg2NywgNjA4NzEsIDYwODc1LCA2MDg3OSwgNjA4ODMsIDYwODg3LCAKLSAgICA2MDg5MSwgNjA4OTUsIDYwODk5LCA2MDkwMywgNjA5MDcsIDYwOTExLCA2MDkxNSwgNjA5MTksIDYwOTIzLCA2MDkyNywgCi0gICAgNjA5MzEsIDYwOTM1LCA2MDkzOSwgNjA5NDMsIDYwOTQ3LCA2MDk1NiwgNjA5NjUsIDYwOTc0LCA2MDk4MywgNjA5OTIsIAotICAgIDYxMDAxLCA2MTAxMCwgNjEwMTksIDYxMDIyLCA2MTAyNywgNjEwMzIsIDYxMDM3LCA2MTA0MiwgNjEwNDcsIDYxMDUyLCAKLSAgICA2MTA1NywgNjEwNjIsIDYxMDY3LCA2MTA3MSwgNjEwNzYsIDYxMDgxLCA2MTA4NiwgNjEwOTEsIDYxMDk2LCA2MTEwMCwgCi0gICAgNjExMDQsIDYxMTA4LCA2MTExMiwgNjExMTYsIDYxMTIwLCA2MTEyNCwgNjExMjgsIDYxMTMyLCA2MTEzNiwgNjExNDAsIAotICAgIDYxMTQ0LCA2MTE0OCwgNjExNTIsIDYxMTU3LCA2MTE2MiwgNjExNjcsIDYxMTcyLCA2MTE3NywgNjExODIsIDYxMTg3LCAKLSAgICA2MTE5MiwgNjExOTcsIDYxMjAyLCA2MTIwNywgNjEyMTIsIDYxMjE3LCA2MTIyMiwgNjEyMjgsIDYxMjM0LCA2MTIzOSwgCi0gICAgNjEyNDQsIDYxMjQ3LCA2MTI1MCwgNjEyNTMsIDYxMjU2LCA2MTI1OSwgNjEyNjIsIDYxMjY1LCA2MTI2OCwgNjEyNzEsIAotICAgIDYxMjc1LCA2MTI3OSwgNjEyODMsIDYxMjg3LCA2MTI5MSwgNjEyOTUsIDYxMjk5LCA2MTMwMywgNjEzMDcsIDYxMzExLCAKLSAgICA2MTMxNSwgNjEzMTksIDYxMzIzLCA2MTMyNywgNjEzMzEsIDYxMzM1LCA2MTMzOSwgNjEzNDMsIDYxMzQ3LCA2MTM1MSwgCi0gICAgNjEzNTUsIDYxMzU5LCA2MTM2MywgNjEzNjcsIDYxMzcxLCA2MTM3NSwgNjEzNzksIDYxMzgzLCA2MTM4NywgNjEzOTEsIAotICAgIDYxMzk1LCA2MTM5OSwgNjE0MDMsIDYxNDA3LCA2MTQxMSwgNjE0MTUsIDYxNDE5LCA2MTQyMywgNjE0MjcsIDYxNDMxLCAKLSAgICA2MTQzNiwgNjE0NDEsIDYxNDQ2LCA2MTQ1MSwgNjE0NTUsIDYxNDYwLCA2MTQ2NSwgNjE0NzAsIDYxNDc1LCA2MTQ4MCwgCi0gICAgNjE0ODUsIDYxNDkwLCA2MTQ5NSwgNjE1MDAsIDYxNTA0LCA2MTUxMCwgNjE1MTYsIDYxNTIyLCA2MTUyOCwgNjE1MzQsIAotICAgIDYxNTQwLCA2MTU0NiwgNjE1NTIsIDYxNTU4LCA2MTU2NCwgNjE1NzAsIDYxNTc2LCA2MTU3OSwgNjE1ODIsIDYxNTg1LCAKLSAgICA2MTU5MCwgNjE1OTMsIDYxNTk2LCA2MTU5OSwgNjE2MDIsIDYxNjA1LCA2MTYwOCwgNjE2MTIsIDYxNjE2LCA2MTYyMCwgCi0gICAgNjE2MjQsIDYxNjI4LCA2MTYzMiwgNjE2MzYsIDYxNjQwLCA2MTY0NCwgNjE2NDgsIDYxNjUyLCA2MTY1NiwgNjE2NjAsIAotICAgIDYxNjYzLCA2MTY2NiwgNjE2NzAsIDYxNjc0LCA2MTY3OCwgNjE2ODIsIDYxNjg1LCA2MTY4OSwgNjE2OTMsIDYxNjk3LCAKLSAgICA2MTcwMSwgNjE3MDQsIDYxNzA4LCA2MTcxMiwgNjE3MTYsIDYxNzIwLCA2MTcyMywgNjE3MjcsIDYxNzMxLCA2MTczNCwgCi0gICAgNjE3MzgsIDYxNzQyLCA2MTc0NiwgNjE3NTAsIDYxNzU0LCA2MTc1OCwgNjE3NjIsIDAsIDYxNzY2LCA2MTc2OSwgNjE3NzIsIAotICAgIDYxNzc1LCA2MTc3OCwgNjE3ODEsIDYxNzg0LCA2MTc4NywgNjE3OTAsIDYxNzkzLCA2MTc5NiwgNjE3OTksIDYxODAyLCAKLSAgICA2MTgwNSwgNjE4MDgsIDYxODExLCA2MTgxNCwgNjE4MTcsIDYxODIwLCA2MTgyMywgNjE4MjYsIDYxODI5LCA2MTgzMiwgCi0gICAgNjE4MzUsIDYxODM4LCA2MTg0MSwgNjE4NDQsIDYxODQ3LCA2MTg1MCwgNjE4NTMsIDYxODU2LCA2MTg1OSwgNjE4NjIsIAotICAgIDYxODY1LCA2MTg2OCwgNjE4NzEsIDYxODc0LCA2MTg3NywgNjE4ODAsIDYxODgzLCA2MTg4NiwgNjE4ODksIDYxODkyLCAKLSAgICA2MTg5NSwgNjE4OTgsIDYxOTAxLCA2MTkwNCwgNjE5MDcsIDYxOTEwLCA2MTkxMywgNjE5MTYsIDYxOTE5LCA2MTkyMiwgCi0gICAgNjE5MjUsIDYxOTI4LCA2MTkzMSwgNjE5MzQsIDYxOTM3LCA2MTk0MCwgNjE5NDMsIDYxOTQ2LCA2MTk0OSwgNjE5NTIsIAotICAgIDYxOTU1LCA2MTk1OCwgNjE5NjEsIDYxOTY0LCA2MTk2NywgNjE5NzAsIDYxOTczLCA2MTk3NiwgNjE5NzksIDYxOTgyLCAKLSAgICA2MTk4NSwgNjE5ODgsIDYxOTkxLCA2MTk5NCwgNjE5OTcsIDYyMDAwLCA2MjAwMywgNjIwMDYsIDYyMDA5LCA2MjAxMiwgCi0gICAgNjIwMTUsIDYyMDE4LCA2MjAyMSwgNjIwMjQsIDYyMDI3LCA2MjAzMCwgNjIwMzgsIDYyMDQ1LCA2MjA1MiwgNjIwNTksIAotICAgIDYyMDY2LCA2MjA3MywgNjIwODAsIDYyMDg3LCA2MjA5NCwgNjIxMDEsIDYyMTA5LCA2MjExNywgNjIxMjUsIDYyMTMzLCAKLSAgICA2MjE0MSwgNjIxNDksIDYyMTU3LCA2MjE2NSwgNjIxNzMsIDYyMTgxLCA2MjE4OSwgNjIxOTcsIDYyMjA1LCA2MjIxMywgCi0gICAgNjIyMjEsIDYyMjI0LCA2MjIyNywgNjIyMzAsIDYyMjMyLCA2MjIzNSwgNjIyMzgsIDYyMjQxLCA2MjI0NiwgNjIyNTEsIAotICAgIDYyMjU0LCA2MjI2MSwgNjIyNjgsIDYyMjc1LCA2MjI4MiwgNjIyODUsIDYyMjkwLCA2MjI5MiwgNjIyOTYsIDYyMjk4LCAKLSAgICA2MjMwMCwgNjIzMDMsIDYyMzA2LCA2MjMwOSwgNjIzMTIsIDYyMzE1LCA2MjMxOCwgNjIzMjEsIDYyMzI2LCA2MjMzMSwgCi0gICAgNjIzMzQsIDYyMzM3LCA2MjM0MCwgNjIzNDMsIDYyMzQ2LCA2MjM0OSwgNjIzNTIsIDYyMzU2LCA2MjM1OSwgNjIzNjIsIAotICAgIDYyMzY1LCA2MjM2OCwgNjIzNzEsIDYyMzc1LCA2MjM3OCwgNjIzODEsIDYyMzg0LCA2MjM4OSwgNjIzOTQsIDYyMzk5LCAKLSAgICA2MjQwNCwgNjI0MDksIDYyNDE0LCA2MjQxOSwgNjI0MjQsIDYyNDI5LCA2MjQzNywgNjI0MzksIDYyNDQyLCA2MjQ0NSwgCi0gICAgNjI0NDgsIDYyNDUxLCA2MjQ1NiwgNjI0NjQsIDYyNDY3LCA2MjQ3MCwgNjI0NzQsIDYyNDc3LCA2MjQ4MCwgNjI0ODMsIAotICAgIDYyNDg4LCA2MjQ5MSwgNjI0OTQsIDYyNDk5LCA2MjUwMiwgNjI1MDUsIDYyNTEwLCA2MjUxMywgNjI1MTYsIDYyNTIxLCAKLSAgICA2MjUyNiwgNjI1MzEsIDYyNTM0LCA2MjUzNywgNjI1NDAsIDYyNTQzLCA2MjU0OSwgNjI1NTIsIDYyNTU1LCA2MjU1OCwgCi0gICAgNjI1NjAsIDYyNTYzLCA2MjU2NiwgNjI1NjksIDYyNTc0LCA2MjU3NywgNjI1ODAsIDYyNTgzLCA2MjU4NiwgNjI1ODksIAotICAgIDYyNTk0LCA2MjU5NywgNjI2MDAsIDYyNjAzLCA2MjYwNiwgNjI2MDksIDYyNjEyLCA2MjYxNSwgNjI2MTgsIDYyNjIxLCAKLSAgICA2MjYyNiwgNjI2MzAsIDYyNjM3LCA2MjY0NCwgNjI2NTEsIDYyNjU4LCA2MjY2NSwgNjI2NzIsIDYyNjc5LCA2MjY4NiwgCi0gICAgNjI2OTMsIDYyNzAxLCA2MjcwOSwgNjI3MTcsIDYyNzI1LCA2MjczMywgNjI3NDEsIDYyNzQ5LCA2Mjc1NywgNjI3NjUsIAotICAgIDYyNzczLCA2Mjc4MSwgNjI3ODksIDYyNzk3LCA2MjgwNSwgNjI4MTMsIDYyODIxLCA2MjgyOSwgNjI4MzcsIDYyODQ1LCAKLSAgICA2Mjg1MywgNjI4NjEsIDYyODY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDcsIDE1MSwgMTU2LCAxNjEsIDE2NSwgMTcwLCAxNzUsIDE3OSwgMTg0LCAxODksIDE5NCwgMTk5LCAyMDQsIDIwNywgCisgICAgMjExLCAyMTQsIDIxOCwgMjIxLCAyMjUsIDIyOSwgMjM0LCAyMzksIDI0NCwgMjQ4LCAyNTMsIDI1OCwgMjYzLCAyNjcsIAorICAgIDI3MiwgMjc3LCAyODEsIDI4NSwgMjkwLCAyOTQsIDI5OSwgMzA0LCAzMDgsIDMxMywgMzE4LCAzMjIsIDMyNywgMzMyLCAKKyAgICAzMzcsIDM0MiwgMzQ3LCAzNTEsIDM1NCwgMzU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTksIDM2MywgMzY4LCAKKyAgICAzNzEsIDM3NCwgMzc3LCAzODAsIDM4MywgMzg2LCAzODgsIDM5MSwgMzk3LCA0MDUsIDQwOCwgNDEyLCA0MTUsIDQxNywgCisgICAgNDIwLCA0MjMsIDQyNiwgNDI5LCA0MzMsIDQzNiwgNDM5LCA0NDMsIDQ0NSwgNDQ4LCA0NTQsIDQ2MiwgNDY5LCA0NzYsIAorICAgIDQ4MywgNDg4LCA0OTUsIDUwMSwgNTA4LCA1MTQsIDUyMSwgNTI5LCA1MzQsIDU0MiwgNTQ5LCA1NTUsIDU2MiwgNTY5LCAKKyAgICA1NzcsIDU4NCwgNTkyLCA2MDAsIDYwNSwgNjEyLCA2MTksIDYyNSwgNjMyLCA2MzgsIDY0NSwgNjQ4LCA2NTQsIDY2MSwgCisgICAgNjY3LCA2NzQsIDY4MSwgNjg4LCA2OTMsIDcwMCwgNzA3LCA3MTMsIDcyMCwgNzI2LCA3MzMsIDc0MSwgNzQ2LCA3NTQsIAorICAgIDc2MSwgNzY3LCA3NzQsIDc4MSwgNzg5LCA3OTYsIDgwNCwgODEyLCA4MTcsIDgyNCwgODMxLCA4MzcsIDg0NCwgODUwLCAKKyAgICA4NTcsIDg2MCwgODY2LCA4NzMsIDg3OSwgODg2LCA4OTMsIDkwMCwgOTA1LCA5MTMsIDkyMCwgOTI3LCA5MzQsIDk0MSwgCisgICAgOTQ4LCA5NTUsIDk2MiwgOTY5LCA5NzcsIDk4NSwgOTkzLCAxMDAxLCAxMDA5LCAxMDE3LCAxMDI1LCAxMDMzLCAxMDQwLCAKKyAgICAxMDQ3LCAxMDU0LCAxMDYxLCAxMDY4LCAxMDc1LCAxMDgyLCAxMDg5LCAxMDk2LCAxMTAzLCAxMTEwLCAxMTE3LCAxMTI1LCAKKyAgICAxMTMzLCAxMTQxLCAxMTQ5LCAxMTU3LCAxMTY1LCAxMTczLCAxMTgxLCAxMTg5LCAxMTk3LCAxMjA0LCAxMjExLCAxMjE4LCAKKyAgICAxMjI1LCAxMjMzLCAxMjQxLCAxMjQ5LCAxMjU3LCAxMjY1LCAxMjczLCAxMjgxLCAxMjg3LCAxMjkyLCAxMjk3LCAxMzA1LCAKKyAgICAxMzEzLCAxMzIxLCAxMzI5LCAxMzM0LCAxMzQxLCAxMzQ4LCAxMzU2LCAxMzY0LCAxMzcyLCAxMzgwLCAxMzkwLCAxNDAwLCAKKyAgICAxNDA3LCAxNDE0LCAxNDIxLCAxNDI4LCAxNDM2LCAxNDQ0LCAxNDUyLCAxNDYwLCAxNDcxLCAxNDc2LCAxNDgxLCAxNDg4LCAKKyAgICAxNDk1LCAxNTAyLCAxNTA5LCAxNTE2LCAxNTIzLCAxNTI4LCAxNTMzLCAxNTQwLCAxNTQ3LCAxNTU1LCAxNTYzLCAxNTcxLCAKKyAgICAxNTc5LCAxNTg2LCAxNTkzLCAxNjAxLCAxNjA5LCAxNjE3LCAxNjI1LCAxNjMzLCAxNjQxLCAxNjQ5LCAxNjU3LCAxNjY1LCAKKyAgICAxNjczLCAxNjgwLCAxNjg3LCAxNjkzLCAxNjk5LCAxNzA2LCAxNzEzLCAxNzIwLCAxNzI3LCAxNzM1LCAxNzQzLCAxNzUwLCAKKyAgICAxNzU3LCAxNzY0LCAxNzcxLCAxNzc5LCAxNzg3LCAxNzk1LCAxODAzLCAxODExLCAxODE4LCAxODI1LCAxODMzLCAxODQxLCAKKyAgICAxODQ5LCAxODU3LCAxODYzLCAxODY5LCAxODc1LCAxODgyLCAxODg5LCAxODk0LCAxODk5LCAxOTA0LCAxOTExLCAxOTE4LCAKKyAgICAxOTI1LCAxOTMyLCAxOTQwLCAxOTQ4LCAxOTU1LCAxOTYxLCAxOTY2LCAxOTcxLCAxOTc4LCAxOTg1LCAxOTkyLCAxOTk3LCAKKyAgICAyMDAyLCAyMDA3LCAyMDE0LCAyMDIxLCAyMDI4LCAyMDM1LCAyMDQyLCAyMDQ4LCAyMDU2LCAyMDY2LCAyMDc0LCAyMDgxLCAKKyAgICAyMDg4LCAyMDkzLCAyMDk4LCAyMTA1LCAyMTEyLCAyMTE2LCAyMTIxLCAyMTI2LCAyMTMxLCAyMTM5LCAyMTQ4LCAyMTU1LCAKKyAgICAyMTYyLCAyMTcxLCAyMTc4LCAyMTg1LCAyMTkwLCAyMTk3LCAyMjA0LCAyMjExLCAyMjE4LCAyMjI1LCAyMjMwLCAyMjM3LCAKKyAgICAyMjQ0LCAyMjUyLCAyMjU3LCAyMjYyLCAyMjY3LCAyMjc3LCAyMjgxLCAyMjg3LCAyMjkzLCAyMjk5LCAyMzA1LCAyMzEzLCAKKyAgICAyMzI2LCAyMzM0LCAyMzM5LCAyMzQ5LCAyMzU0LCAyMzU5LCAyMzY5LCAyMzc0LCAyMzgxLCAyMzg4LCAyMzk2LCAyNDA0LCAKKyAgICAyNDExLCAyNDE4LCAyNDI1LCAyNDMyLCAyNDQyLCAyNDUyLCAyNDYxLCAyNDcwLCAyNDgwLCAyNDkwLCAyNTAwLCAyNTEwLCAKKyAgICAyNTE2LCAyNTI2LCAyNTM2LCAyNTQ2LCAyNTU2LCAyNTY0LCAyNTcyLCAyNTc5LCAyNTg2LCAyNTk0LCAyNjAyLCAyNjEwLCAKKyAgICAyNjE4LCAyNjI1LCAyNjMyLCAyNjQyLCAyNjUyLCAyNjYwLCAyNjY4LCAyNjc2LCAyNjgxLCAyNjkxLCAyNjk2LCAyNzAzLCAKKyAgICAyNzEwLCAyNzE1LCAyNzIwLCAyNzI4LCAyNzM2LCAyNzQ2LCAyNzU2LCAyNzYzLCAyNzcwLCAyNzc5LCAyNzg4LCAyNzk2LCAKKyAgICAyODA0LCAyODEzLCAyODIyLCAyODMwLCAyODM4LCAyODQ3LCAyODU2LCAyODY1LCAyODc0LCAyODg0LCAyODk0LCAyOTAyLCAKKyAgICAyOTEwLCAyOTE5LCAyOTI4LCAyOTM3LCAyOTQ2LCAyOTU2LCAyOTY2LCAyOTc0LCAyOTgyLCAyOTkxLCAzMDAwLCAzMDA5LCAKKyAgICAzMDE4LCAzMDI3LCAzMDM2LCAzMDQxLCAzMDQ2LCAzMDU0LCAzMDYyLCAzMDcyLCAzMDgwLCAzMDg1LCAzMDkwLCAzMDk3LCAKKyAgICAzMTA0LCAzMTExLCAzMTE4LCAzMTI1LCAzMTMyLCAzMTQyLCAzMTUyLCAzMTYyLCAzMTcyLCAzMTc5LCAzMTg2LCAzMTk2LCAKKyAgICAzMjA2LCAzMjE0LCAzMjIyLCAzMjMwLCAzMjM4LCAzMjQ2LCAzMjUzLCAzMjYwLCAzMjY3LCAzMjczLCAzMjgwLCAzMjg3LCAKKyAgICAzMjk0LCAzMzAzLCAzMzEzLCAzMzIzLCAzMzMwLCAzMzM3LCAzMzQzLCAzMzQ4LCAzMzU1LCAzMzYxLCAzMzY3LCAzMzc0LCAKKyAgICAzMzgxLCAzMzkyLCAzNDAyLCAzNDA5LCAzNDE2LCAzNDIzLCAzNDMwLCAzNDM2LCAzNDQxLCAzNDQ4LCAzNDU0LCAzNDU5LCAKKyAgICAzNDY3LCAzNDc1LCAzNDgyLCAzNDg4LCAzNDkzLCAzNTAwLCAzNTA1LCAzNTEyLCAzNTIxLCAzNTMwLCAzNTM5LCAzNTQ2LCAKKyAgICAzNTUyLCAzNTU4LCAzNTYzLCAzNTcwLCAzNTc3LCAzNTg0LCAzNTkxLCAzNTk4LCAzNjAzLCAzNjA4LCAzNjE3LCAzNjI1LCAKKyAgICAzNjM0LCAzNjM5LCAzNjQ1LCAzNjU2LCAzNjYzLCAzNjcxLCAzNjgwLCAzNjg2LCAzNjkyLCAzNjk4LCAzNzA1LCAzNzEwLCAKKyAgICAzNzE2LCAzNzI3LCAzNzM2LCAzNzQ1LCAzNzUzLCAzNzYxLCAzNzcxLCAzNzc2LCAzNzgzLCAzNzkwLCAzNzk1LCAzODA3LCAKKyAgICAzODE2LCAzODI0LCAzODMxLCAzODQwLCAzODQ1LCAzODUwLCAzODU3LCAzODY0LCAzODcxLCAzODc4LCAzODg0LCAzODkzLCAKKyAgICAzOTAxLCAzOTA2LCAzOTE0LCAzOTIwLCAzOTI4LCAzOTM2LCAzOTQyLCAzOTQ4LCAzOTU0LCAzOTYxLCAzOTY5LCAzOTc1LCAKKyAgICAzOTgzLCAzOTkwLCAzOTk1LCA0MDAyLCA0MDEwLCA0MDIwLCA0MDI3LCA0MDM0LCA0MDQ0LCA0MDUxLCA0MDU4LCA0MDY4LCAKKyAgICA0MDc1LCA0MDgyLCA0MDg5LCA0MDk1LCA0MTAxLCA0MTExLCA0MTI0LCA0MTI5LCA0MTM2LCA0MTQxLCA0MTQ1LCA0MTUxLCAKKyAgICA0MTYwLCA0MTY3LCA0MTcyLCA0MTc3LCA0MTgxLCA0MTg2LCA0MTkyLCA0MTk2LCA0MjAyLCA0MjA4LCA0MjE0LCA0MjIwLCAKKyAgICA0MjI4LCA0MjMzLCA0MjM4LCA0MjQzLCA0MjQ4LCA0MjU0LCA0MjU2LCA0MjYxLCA0MjY1LCA0MjcxLCA0Mjc3LCA0MjgzLCAKKyAgICA0Mjg4LCA0Mjk1LCA0MzAyLCA0MzA4LCA0MzE1LCA0MzIzLCA0MzMxLCA0MzM2LCA0MzQxLCA0MzQ1LCA0MzUwLCA0MzUyLCAKKyAgICA0MzU0LCA0MzU3LCA0MzU5LCA0MzYxLCA0MzY2LCA0MzcxLCA0Mzc3LCA0MzgyLCA0Mzg2LCA0MzkxLCA0Mzk2LCA0NDA1LCAKKyAgICA0NDExLCA0NDE2LCA0NDIyLCA0NDI3LCA0NDMzLCA0NDQxLCA0NDQ5LCA0NDUzLCA0NDU3LCA0NDYyLCA0NDY4LCA0NDc0LCAKKyAgICA0NDgwLCA0NDg2LCA0NDkxLCA0NDk5LCA0NTA4LCA0NTE3LCA0NTIxLCA0NTI3LCA0NTM0LCA0NTQxLCA0NTQ4LCA0NTU1LCAKKyAgICA0NTU5LCA0NTY0LCA0NTY5LCA0NTc0LCA0NTc5LCA0NTg0LCA0NTg2LCA0NTg5LCA0NTkyLCA0NTk1LCA0NTk4LCA0NjAxLCAKKyAgICA0NjA1LCA0NjA5LCA0NjE1LCA0NjE4LCA0NjIzLCA0NjI5LCA0NjM1LCA0NjM4LCA0NjQzLCA0NjQ5LCA0NjUzLCA0NjU5LCAKKyAgICA0NjY1LCA0NjcxLCA0Njc3LCA0NjgyLCA0Njg3LCA0NjkyLCA0Njk1LCA0NzAxLCA0NzA2LCA0NzExLCA0NzE1LCA0NzIwLCAKKyAgICA0NzI2LCA0NzMyLCA0NzM1LCA0NzM5LCA0NzQzLCA0NzQ3LCA0NzUwLCA0NzUzLCA0NzU4LCA0NzYyLCA0NzY5LCA0NzczLCAKKyAgICA0Nzc5LCA0NzgzLCA0Nzg5LCA0NzkzLCA0Nzk3LCA0ODAxLCA0ODA2LCA0ODExLCA0ODE4LCA0ODI0LCA0ODMxLCA0ODM3LCAKKyAgICA0ODQzLCA0ODQ5LCA0ODUyLCA0ODU2LCA0ODYwLCA0ODYzLCA0ODY3LCA0ODcyLCA0ODc3LCA0ODgxLCA0ODg1LCA0ODkxLCAKKyAgICA0ODk1LCA0ODk5LCA0OTA0LCA0OTEwLCA0OTE1LCA0OTIxLCA0OTI1LCA0OTMyLCA0OTM3LCA0OTQyLCA0OTQ3LCA0OTUyLCAKKyAgICA0OTU4LCA0OTYxLCA0OTY1LCA0OTcwLCA0OTc1LCA0OTg0LCA0OTkwLCA0OTk1LCA0OTk5LCA1MDA0LCA1MDA4LCA1MDEzLCAKKyAgICA1MDE3LCA1MDIxLCA1MDI2LCA1MDI5LCA1MDM1LCA1MDQwLCA1MDQ1LCA1MDUwLCA1MDU1LCA1MDYwLCA1MDY1LCA1MDcxLCAKKyAgICA1MDc3LCA1MDgzLCA1MDg4LCA1MDkzLCA1MDk5LCA1MTA1LCA1MTExLCA1MTE2LCA1MTIxLCA1MTI4LCA1MTM1LCA1MTM5LCAKKyAgICA1MTQ1LCA1MTUyLCAwLCAwLCA1MTU5LCA1MTYyLCA1MTcxLCA1MTgwLCA1MTkxLCAwLCAwLCAwLCAwLCAwLCA1MTk1LCAKKyAgICA1MTk4LCA1MjAzLCA1MjExLCA1MjE2LCA1MjI0LCA1MjMyLCAwLCA1MjQwLCAwLCA1MjQ4LCA1MjU2LCA1MjY0LCA1Mjc1LCAKKyAgICA1MjgwLCA1Mjg1LCA1MjkwLCA1Mjk1LCA1MzAwLCA1MzA1LCA1MzEwLCA1MzE1LCA1MzIwLCA1MzI1LCA1MzMwLCA1MzM1LCAKKyAgICA1MzQwLCA1MzQ1LCA1MzUwLCA1MzU1LCAwLCA1MzYwLCA1MzY1LCA1MzcwLCA1Mzc1LCA1MzgwLCA1Mzg1LCA1MzkwLCAKKyAgICA1Mzk1LCA1NDAzLCA1NDExLCA1NDE5LCA1NDI3LCA1NDM1LCA1NDQzLCA1NDU0LCA1NDU5LCA1NDY0LCA1NDY5LCA1NDc0LCAKKyAgICA1NDc5LCA1NDg0LCA1NDg5LCA1NDk0LCA1NDk5LCA1NTA0LCA1NTA5LCA1NTE0LCA1NTE5LCA1NTI0LCA1NTI5LCA1NTM0LCAKKyAgICA1NTM5LCA1NTQ1LCA1NTUwLCA1NTU1LCA1NTYwLCA1NTY1LCA1NTcwLCA1NTc1LCA1NTgwLCA1NTg4LCA1NTk2LCA1NjA0LCAKKyAgICA1NjEyLCA1NjIwLCA1NjI1LCA1NjI5LCA1NjMzLCA1NjQwLCA1NjUwLCA1NjYwLCA1NjY0LCA1NjY4LCA1NjcyLCA1Njc4LCAKKyAgICA1Njg1LCA1Njg5LCA1Njk0LCA1Njk4LCA1NzAzLCA1NzA3LCA1NzEyLCA1NzE2LCA1NzIxLCA1NzI2LCA1NzMxLCA1NzM2LCAKKyAgICA1NzQxLCA1NzQ2LCA1NzUxLCA1NzU2LCA1NzYxLCA1NzY2LCA1NzcxLCA1Nzc2LCA1NzgxLCA1Nzg2LCA1NzkxLCA1Nzk1LCAKKyAgICA1Nzk5LCA1ODA1LCA1ODA5LCA1ODE0LCA1ODIwLCA1ODI4LCA1ODMzLCA1ODM4LCA1ODQ1LCA1ODUwLCA1ODU1LCA1ODYyLCAKKyAgICA1ODcxLCA1ODgwLCA1ODkxLCA1ODk5LCA1OTA0LCA1OTA5LCA1OTE0LCA1OTIxLCA1OTI2LCA1OTMyLCA1OTM3LCA1OTQyLCAKKyAgICA1OTQ3LCA1OTUyLCA1OTU3LCA1OTYyLCA1OTcwLCA1OTc2LCA1OTgxLCA1OTg1LCA1OTkwLCA1OTk1LCA2MDAwLCA2MDA1LCAKKyAgICA2MDEwLCA2MDE1LCA2MDIwLCA2MDI0LCA2MDMwLCA2MDM0LCA2MDM5LCA2MDQ0LCA2MDQ5LCA2MDUzLCA2MDU4LCA2MDYzLCAKKyAgICA2MDY4LCA2MDczLCA2MDc3LCA2MDgyLCA2MDg2LCA2MDkxLCA2MDk2LCA2MTAxLCA2MTA2LCA2MTEyLCA2MTE3LCA2MTIzLCAKKyAgICA2MTI3LCA2MTMyLCA2MTM2LCA2MTQwLCA2MTQ1LCA2MTUwLCA2MTU1LCA2MTYwLCA2MTY1LCA2MTcwLCA2MTc1LCA2MTc5LCAKKyAgICA2MTg1LCA2MTg5LCA2MTk0LCA2MTk5LCA2MjA0LCA2MjA4LCA2MjEzLCA2MjE4LCA2MjIzLCA2MjI4LCA2MjMyLCA2MjM3LCAKKyAgICA2MjQxLCA2MjQ2LCA2MjUxLCA2MjU2LCA2MjYxLCA2MjY3LCA2MjcyLCA2Mjc4LCA2MjgyLCA2Mjg3LCA2MjkxLCA2Mjk5LCAKKyAgICA2MzA0LCA2MzA5LCA2MzE0LCA2MzIxLCA2MzI2LCA2MzMyLCA2MzM3LCA2MzQyLCA2MzQ3LCA2MzUyLCA2MzU3LCA2MzYyLCAKKyAgICA2MzcwLCA2Mzc2LCA2MzgxLCA2Mzg2LCA2MzkxLCA2Mzk2LCA2NDAxLCA2NDA3LCA2NDEzLCA2NDIwLCA2NDI3LCA2NDM2LCAKKyAgICA2NDQ1LCA2NDUyLCA2NDU5LCA2NDY4LCA2NDc3LCA2NDgyLCA2NDg3LCA2NDkyLCA2NDk3LCA2NTAyLCA2NTA3LCA2NTEyLCAKKyAgICA2NTE3LCA2NTI4LCA2NTM5LCA2NTQ0LCA2NTQ5LCA2NTU2LCA2NTYzLCA2NTcxLCA2NTc5LCA2NTg0LCA2NTg5LCA2NTk0LCAKKyAgICA2NTk5LCA2NjAzLCA2NjA3LCA2NjExLCA2NjE3LCA2NjIzLCA2NjI3LCA2NjM0LCA2NjM5LCA2NjQ5LCA2NjU5LCA2NjY1LCAKKyAgICA2NjcxLCA2Njc5LCA2Njg3LCA2Njk1LCA2NzAzLCA2NzEwLCA2NzE3LCA2NzI2LCA2NzM1LCA2NzQzLCA2NzUxLCA2NzU5LCAKKyAgICA2NzY3LCA2Nzc1LCA2NzgzLCA2NzkxLCA2Nzk5LCA2ODA2LCA2ODEzLCA2ODE5LCA2ODI1LCA2ODMzLCA2ODQxLCA2ODQ4LCAKKyAgICA2ODU1LCA2ODY0LCA2ODczLCA2ODc5LCA2ODg1LCA2ODkzLCA2OTAxLCA2OTA5LCA2OTE3LCA2OTIzLCA2OTI5LCA2OTM3LCAKKyAgICA2OTQ1LCA2OTUzLCA2OTYxLCA2OTY4LCA2OTc1LCA2OTgzLCA2OTkxLCA2OTk5LCA3MDA3LCA3MDEyLCA3MDE3LCA3MDI0LCAKKyAgICA3MDMxLCA3MDQxLCA3MDUxLCA3MDU1LCA3MDYzLCA3MDcxLCA3MDc4LCA3MDg1LCA3MDkzLCA3MTAxLCA3MTA4LCA3MTE1LCAKKyAgICA3MTIzLCA3MTMxLCA3MTM4LCA3MTQ1LCA3MTUzLCA3MTYxLCA3MTY2LCA3MTczLCA3MTgwLCA3MTg3LCA3MTk0LCA3MjAwLCAKKyAgICA3MjA2LCA3MjE0LCA3MjIyLCA3MjI3LCA3MjMyLCA3MjQwLCA3MjQ4LCA3MjU2LCA3MjY0LCA3MjcyLCA3MjgwLCA3Mjg3LCAKKyAgICA3Mjk0LCA3MzAyLCA3MzEwLCA3MzE4LCA3MzI2LCA3MzMzLCA3MzQwLCA3MzQ2LCA3MzUyLCA3MzYxLCA3MzcwLCA3Mzc3LCAKKyAgICA3Mzg0LCA3MzkxLCA3Mzk4LCA3NDA1LCA3NDEyLCA3NDE5LCA3NDI2LCA3NDM0LCA3NDQyLCA3NDUwLCA3NDU4LCA3NDY2LCAKKyAgICA3NDc0LCA3NDg0LCA3NDk0LCA3NTAxLCA3NTA4LCA3NTE1LCA3NTIyLCA3NTI5LCA3NTM2LCA3NTQzLCA3NTUwLCA3NTU3LCAKKyAgICA3NTY0LCA3NTcxLCA3NTc4LCA3NTg1LCA3NTkyLCA3NTk5LCA3NjA2LCA3NjEzLCA3NjIwLCA3NjI3LCA3NjM0LCA3NjQxLCAKKyAgICA3NjQ4LCA3NjU1LCA3NjYyLCA3NjY3LCA3NjcyLCA3Njc3LCA3NjgyLCA3Njg3LCA3NjkyLCA3Njk3LCA3NzAyLCA3NzA3LCAKKyAgICA3NzEyLCA3NzE4LCA3NzI0LCA3NzMzLCA3NzQyLCA3NzUxLCA3NzYwLCA3NzY4LCA3Nzc2LCA3Nzg0LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA3NzkyLCA3Nzk3LCA3ODAyLCA3ODA3LCA3ODEyLCA3ODE3LCA3ODIyLCA3ODI3LCA3ODMyLCAKKyAgICA3ODM2LCA3ODQxLCA3ODQ2LCA3ODUxLCA3ODU2LCA3ODYxLCA3ODY2LCA3ODcxLCA3ODc2LCA3ODgxLCA3ODg2LCA3ODkxLCAKKyAgICA3ODk2LCA3OTAxLCA3OTA2LCA3OTExLCA3OTE2LCA3OTIxLCA3OTI2LCA3OTMwLCA3OTM1LCA3OTQwLCA3OTQ1LCA3OTUwLCAKKyAgICA3OTU1LCA3OTYwLCA3OTY1LCA3OTcwLCA3OTc1LCAwLCAwLCA3OTgwLCA3OTg3LCA3OTkwLCA3OTk0LCA3OTk4LCA4MDAxLCAKKyAgICA4MDA1LCAwLCA4MDA5LCA4MDE0LCA4MDE5LCA4MDI0LCA4MDI5LCA4MDM0LCA4MDM5LCA4MDQ0LCA4MDQ5LCA4MDUzLCAKKyAgICA4MDU4LCA4MDYzLCA4MDY4LCA4MDczLCA4MDc4LCA4MDgzLCA4MDg4LCA4MDkzLCA4MDk4LCA4MTAzLCA4MTA4LCA4MTEzLCAKKyAgICA4MTE4LCA4MTIzLCA4MTI4LCA4MTMzLCA4MTM4LCA4MTQzLCA4MTQ3LCA4MTUyLCA4MTU3LCA4MTYyLCA4MTY3LCA4MTcyLCAKKyAgICA4MTc3LCA4MTgyLCA4MTg3LCA4MTkyLCA4MTk3LCAwLCA4MjA0LCA4MjA5LCAwLCAwLCAwLCAwLCA4MjEyLCAwLCA4MjE2LCAKKyAgICA4MjIxLCA4MjI2LCA4MjMxLCA4MjM4LCA4MjQ1LCA4MjUwLCA4MjU1LCA4MjYwLCA4MjY1LCA4MjcwLCA4Mjc1LCA4MjgwLCAKKyAgICA4Mjg3LCA4MjkyLCA4Mjk5LCA4MzA2LCA4MzExLCA4MzE4LCA4MzIzLCA4MzI4LCA4MzMzLCA4MzQwLCA4MzQ1LCA4MzUwLCAKKyAgICA4MzU3LCA4MzY2LCA4MzcxLCA4Mzc2LCA4MzgxLCA4Mzg2LCA4MzkyLCA4Mzk3LCA4NDA0LCA4NDExLCA4NDE4LCA4NDIzLCAKKyAgICA4NDI4LCA4NDMzLCA4NDM4LCA4NDQzLCA4NDQ4LCA4NDU4LCA4NDYzLCA4NDcxLCA4NDc2LCA4NDgxLCA4NDg2LCA4NDkxLCAKKyAgICA4NDk4LCA4NTA1LCA4NTEyLCA4NTE4LCA4NTI0LCA4NTMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NTM4LCA4NTQyLCAKKyAgICA4NTQ2LCA4NTUwLCA4NTU0LCA4NTU4LCA4NTYyLCA4NTY2LCA4NTcwLCA4NTc0LCA4NTc4LCA4NTgzLCA4NTg3LCA4NTkxLCAKKyAgICA4NTk2LCA4NjAwLCA4NjA1LCA4NjA5LCA4NjEzLCA4NjE3LCA4NjIyLCA4NjI2LCA4NjMxLCA4NjM1LCA4NjM5LCA4NjQzLCAKKyAgICA4NjQ3LCAwLCAwLCAwLCAwLCAwLCA4NjUxLCA4NjU4LCA4NjY2LCA4NjczLCA4Njc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA4NjgzLCA4Njg2LCA4NjkwLCA4Njk1LCA4Njk5LCAwLCA4NzAzLCA4NzA5LCA4NzE1LCA4NzE4LCAKKyAgICA4NzI1LCA4NzM0LCA4NzM3LCA4NzQwLCA4NzQ1LCA4NzUxLCA4NzU1LCA4NzYzLCA4NzY5LCA4Nzc1LCA4NzgzLCA4Nzg3LCAKKyAgICA4NzkyLCA4ODAzLCA4ODA4LCA4ODEyLCA4ODE2LCA4ODIwLCAwLCAwLCA4ODIzLCA4ODMwLCA4ODM0LCA4ODQwLCA4ODQ0LCAKKyAgICA4ODUxLCA4ODU3LCA4ODY0LCA4ODcwLCA4ODc2LCA4ODgwLCA4ODg0LCA4ODkwLCA4ODk0LCA4ODk4LCA4OTAyLCA4OTA2LCAKKyAgICA4OTEwLCA4OTE0LCA4OTE4LCA4OTIyLCA4OTI2LCA4OTMwLCA4OTM0LCA4OTM4LCA4OTQyLCA4OTQ2LCA4OTUwLCA4OTU0LCAKKyAgICA4OTU4LCA4OTY2LCA4OTc0LCA4OTg0LCA4OTkzLCA5MDAyLCA5MDA1LCA5MDA5LCA5MDEzLCA5MDE3LCA5MDIxLCA5MDI1LCAKKyAgICA5MDI5LCA5MDMzLCA5MDM3LCA5MDQyLCA5MDQ2LCA5MDQ5LCA5MDUyLCA5MDU1LCA5MDU4LCA5MDYxLCA5MDY0LCA5MDY3LCAKKyAgICA5MDcwLCA5MDc0LCA5MDc3LCA5MDgwLCA5MDg1LCA5MDkwLCA5MDk2LCA5MDk5LCA5MTA2LCA5MTE1LCA5MTIwLCA5MTI1LCAKKyAgICA5MTMyLCA5MTM3LCA5MTQyLCA5MTQ2LCA5MTUwLCA5MTU0LCA5MTU4LCA5MTYyLCA5MTY2LCA5MTcwLCA5MTc0LCA5MTc4LCAKKyAgICA5MTgyLCA5MTg3LCA5MTkyLCA5MTk5LCA5MjA1LCA5MjExLCA5MjE3LCA5MjIyLCA5MjMwLCA5MjM4LCA5MjQzLCA5MjQ5LCAKKyAgICA5MjU1LCA5MjYxLCA5MjY3LCA5MjcxLCA5Mjc1LCA5Mjc5LCA5Mjg2LCA5Mjk2LCA5MzAwLCA5MzA0LCA5MzA4LCA5MzE0LCAKKyAgICA5MzIyLCA5MzI2LCA5MzMwLCA5MzM3LCA5MzQxLCA5MzQ1LCA5MzQ5LCA5MzU2LCA5MzYzLCA5Mzc1LCA5Mzc5LCA5MzgzLCAKKyAgICA5Mzg3LCA5Mzk3LCA5NDA2LCA5NDEwLCA5NDE4LCA5NDI1LCA5NDMyLCA5NDQxLCA5NDUyLCA5NDYwLCA5NDY0LCA5NDczLCAKKyAgICA5NDg0LCA5NDkyLCA5NTA1LCA5NTEzLCA5NTIxLCA5NTI5LCA5NTM3LCA5NTQzLCA5NTUyLCA5NTU5LCA5NTYzLCA5NTcxLCAKKyAgICA5NTc1LCA5NTgyLCA5NTkwLCA5NTk0LCA5NjAwLCA5NjA3LCA5NjE0LCA5NjE4LCA5NjI2LCA5NjMwLCA5NjM3LCA5NjQxLCAKKyAgICA5NjQ5LCA5NjUzLCA5NjYxLCA5NjY5LCA5Njc2LCA5Njg0LCA5NjkyLCA5Njk5LCA5NzA1LCA5NzA5LCA5NzE2LCA5NzI0LCAKKyAgICA5NzMwLCA5NzM3LCA5NzQ0LCA5NzUwLCA5NzU5LCA5NzY3LCA5Nzc0LCA5NzgwLCA5Nzg0LCA5Nzg3LCA5NzkxLCA5Nzk3LCAKKyAgICA5ODA1LCA5ODA5LCA5ODE1LCA5ODIxLCA5ODI4LCA5ODM1LCA5ODM4LCA5ODQ1LCA5ODUwLCA5ODU4LCA5ODYzLCA5ODY3LCAKKyAgICA5ODgwLCA5ODkzLCA5ODk5LCA5OTA2LCA5OTExLCA5OTE3LCA5OTIyLCA5OTI4LCA5OTM4LCA5OTQ1LCA5OTU0LCA5OTY0LCAKKyAgICA5OTcwLCA5OTc1LCA5OTgwLCA5OTg0LCA5OTg4LCA5OTkzLCA5OTk4LCAxMDAwNCwgMTAwMTIsIDEwMDIwLCAxMDAzMSwgCisgICAgMTAwMzYsIDEwMDQ1LCAxMDA1NCwgMTAwNjEsIDEwMDY3LCAxMDA3MywgMTAwNzksIDEwMDg1LCAxMDA5MSwgMTAwOTcsIAorICAgIDEwMTAzLCAxMDEwOSwgMTAxMTUsIDEwMTIyLCAxMDEyOSwgMTAxMzYsIDEwMTQyLCAxMDE1MCwgMTAxNTksIDEwMTY1LCAKKyAgICAxMDE3MiwgMTAxNzksIDEwMTg0LCAxMDE4OSwgMTAxOTMsIDEwMjAwLCAxMDIwNywgMTAyMTYsIDEwMjI1LCAxMDIyOCwgCisgICAgMTAyMzMsIDEwMjM4LCAwLCAxMDI0MywgMTAyNDcsIDEwMjUxLCAxMDI1NywgMTAyNjEsIDEwMjY1LCAxMDI3MSwgMTAyNzUsIAorICAgIDEwMjgzLCAxMDI4NywgMTAyOTEsIDEwMjk1LCAxMDI5OSwgMTAzMDMsIDEwMzA5LCAxMDMxMywgMTAzMTksIDEwMzIzLCAKKyAgICAxMDMyNywgMTAzMzEsIDEwMzM1LCAxMDMzOSwgMTAzNDQsIDEwMzQ3LCAxMDM1MSwgMTAzNTcsIDEwMzYxLCAxMDM2NSwgCisgICAgMTAzNjksIDEwMzczLCAxMDM3NywgMTAzODMsIDEwMzg5LCAxMDM5NSwgMTAzOTksIDEwNDAzLCAxMDQwOCwgMTA0MTIsIAorICAgIDEwNDE2LCAxMDQyMSwgMTA0MjUsIDEwNDI5LCAxMDQzNiwgMTA0NDMsIDEwNDQ3LCAxMDQ1MSwgMTA0NTYsIDEwNDYwLCAKKyAgICAxMDQ2NCwgMTA0NjcsIDEwNDcyLCAxMDQ3NSwgMTA0NzgsIDEwNDgzLCAxMDQ4OCwgMTA0OTIsIDEwNDk2LCAxMDUwMiwgCisgICAgMTA1MDgsIDEwNTExLCAwLCAwLCAxMDUxNCwgMTA1MjAsIDEwNTI2LCAxMDUzMiwgMTA1NDIsIDEwNTU0LCAxMDU2NiwgCisgICAgMTA1ODMsIDEwNTk1LCAxMDYwNiwgMTA2MTQsIDEwNjIxLCAxMDYzMiwgMTA2NDcsIDEwNjU4LCAxMDY2NCwgMTA2NzMsIAorICAgIDEwNjgxLCAxMDY5MywgMTA3MDMsIDEwNzExLCAxMDcyMywgMTA3MzAsIDEwNzM4LCAxMDc1MCwgMTA3NTYsIDEwNzYyLCAKKyAgICAxMDc3MCwgMTA3NzgsIDEwNzg2LCAxMDc5MiwgMTA4MDIsIDEwODA5LCAxMDgxOSwgMTA4MjksIDEwODQyLCAxMDg1NiwgCisgICAgMTA4NzAsIDEwODgwLCAxMDg5MSwgMTA5MDIsIDEwOTE1LCAxMDkyOCwgMTA5NDIsIDEwOTU0LCAxMDk2NiwgMTA5NzksIAorICAgIDEwOTkyLCAxMTAwNCwgMTEwMTcsIDExMDI2LCAxMTAzNCwgMTEwMzksIDExMDQ0LCAxMTA0OSwgMTEwNTQsIDExMDU5LCAKKyAgICAxMTA2NCwgMTEwNjksIDExMDc0LCAxMTA3OSwgMTEwODQsIDExMDg5LCAxMTA5NCwgMTEwOTksIDExMTA0LCAxMTEwOSwgCisgICAgMTExMTQsIDExMTE5LCAxMTEyNCwgMTExMjksIDExMTM0LCAxMTEzOSwgMTExNDQsIDExMTQ5LCAxMTE1NCwgMTExNTksIAorICAgIDExMTY0LCAxMTE2OSwgMTExNzQsIDExMTc5LCAxMTE4NCwgMTExODksIDExMTk0LCAxMTE5OCwgMTEyMDMsIDExMjA4LCAKKyAgICAxMTIxMywgMTEyMTgsIDExMjIzLCAxMTIyNywgMTEyMzEsIDExMjM1LCAxMTIzOSwgMTEyNDMsIDExMjQ3LCAxMTI1MSwgCisgICAgMTEyNTUsIDExMjU5LCAxMTI2MywgMTEyNjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDExMjcyLCAxMTI3NywgMTEyODEsIDExMjg1LCAxMTI4OSwgMTEyOTMsIDExMjk3LCAxMTMwMSwgMTEzMDUsIDExMzA5LCAKKyAgICAxMTMxMywgMTEzMTcsIDExMzIyLCAxMTMyNiwgMTEzMzAsIDExMzM0LCAxMTMzOSwgMTEzNDMsIDExMzQ4LCAxMTM1MywgCisgICAgMTEzNTgsIDExMzYyLCAxMTM2NywgMTEzNzIsIDExMzc3LCAxMTM4MiwgMTEzODYsIDExMzkxLCAxMTM5NSwgMTE0MDAsIAorICAgIDExNDA1LCAxMTQwOSwgMTE0MTQsIDExNDIxLCAxMTQyNSwgMTE0MzAsIDExNDM0LCAxMTQzOCwgMTE0NDMsIDExNDQ3LCAKKyAgICAxMTQ1NCwgMTE0NjEsIDExNDY4LCAxMTQ3NCwgMTE0ODIsIDExNDkwLCAxMTQ5OSwgMTE1MDcsIDExNTE0LCAxMTUyMSwgCisgICAgMTE1MjksIDExNTM1LCAxMTU0MSwgMTE1NDcsIDExNTUzLCAxMTU2MCwgMTE1NjUsIDExNTY5LCAxMTU3NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTE1NzgsIDExNTgzLCAxMTU4OCwgMTE1OTMsIDExNTk4LCAxMTYwMywgMTE2MDgsIDExNjEzLCAxMTYxOCwgCisgICAgMTE2MjMsIDExNjI4LCAxMTYzMywgMTE2MzgsIDExNjQzLCAxMTY0OCwgMTE2NTMsIDExNjU4LCAxMTY2MywgMTE2NjgsIAorICAgIDExNjczLCAxMTY3OCwgMTE2ODMsIDExNjg4LCAxMTY5MywgMTE2OTgsIDExNzAzLCAxMTcwOCwgMTE3MTYsIDExNzIzLCAKKyAgICAxMTcyOSwgMTE3MzQsIDExNzQyLCAxMTc0OSwgMTE3NTUsIDExNzYyLCAxMTc2OCwgMTE3NzMsIDExNzgwLCAxMTc4NywgCisgICAgMTE3OTMsIDExNzk4LCAxMTgwMywgMTE4MDksIDExODE0LCAxMTgxOSwgMTE4MjUsIDAsIDAsIDExODMwLCAxMTgzNiwgCisgICAgMTE4NDIsIDExODQ4LCAxMTg1NCwgMTE4NjAsIDExODY2LCAxMTg3MSwgMTE4NzksIDExODg1LCAxMTg5MSwgMTE4OTcsIAorICAgIDExOTAzLCAxMTkwOSwgMTE5MTcsIDAsIDExOTIzLCAxMTkyOCwgMTE5MzMsIDExOTM4LCAxMTk0MywgMTE5NDgsIDExOTUzLCAKKyAgICAxMTk1OCwgMTE5NjMsIDExOTY4LCAxMTk3MywgMTE5NzgsIDExOTgzLCAxMTk4OCwgMTE5OTMsIDExOTk4LCAxMjAwMywgCisgICAgMTIwMDgsIDEyMDEzLCAxMjAxOCwgMTIwMjMsIDEyMDI4LCAxMjAzMywgMTIwMzgsIDEyMDQzLCAxMjA0OCwgMTIwNTMsIAorICAgIDEyMDU4LCAwLCAwLCAxMjA2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjI4NzIsIDYyODgxLCA2Mjg5MCwgNjI5MDEsIDYyOTA4LCA2MjkxMywgNjI5MTgsIDYyOTI1LCA2MjkzMiwgNjI5MzgsIAotICAgIDYyOTQzLCA2Mjk0OCwgNjI5NTMsIDYyOTU4LCA2Mjk2NSwgNjI5NzAsIDYyOTc1LCA2Mjk4MCwgNjI5OTEsIDYyOTk2LCAKLSAgICA2MzAwMSwgNjMwMDgsIDYzMDEzLCA2MzAyMCwgNjMwMjUsIDYzMDMwLCA2MzAzNywgNjMwNDQsIDYzMDUxLCA2MzA2MCwgCi0gICAgNjMwNjksIDYzMDc0LCA2MzA3OSwgNjMwODQsIDYzMDkxLCA2MzA5NiwgNjMxMDYsIDYzMTEzLCA2MzExOCwgNjMxMjMsIAotICAgIDYzMTI4LCA2MzEzMywgNjMxMzgsIDYzMTQzLCA2MzE1MiwgNjMxNTksIDYzMTY2LCA2MzE3MSwgNjMxNzgsIDYzMTgzLCAKLSAgICA2MzE5MCwgNjMxOTksIDYzMjEwLCA2MzIxNSwgNjMyMjQsIDYzMjI5LCA2MzIzNiwgNjMyNDUsIDYzMjU0LCA2MzI1OSwgCi0gICAgNjMyNjQsIDYzMjcxLCA2MzI3NywgNjMyODQsIDYzMjkxLCA2MzI5NSwgNjMyOTksIDYzMzAyLCA2MzMwNiwgNjMzMTAsIAotICAgIDYzMzE0LCA2MzMxOCwgNjMzMjIsIDYzMzI2LCA2MzMzMCwgNjMzMzMsIDYzMzM3LCA2MzM0MSwgNjMzNDUsIDYzMzQ5LCAKLSAgICA2MzM1MywgNjMzNTcsIDYzMzYwLCA2MzM2NCwgNjMzNjgsIDYzMzcxLCA2MzM3NSwgNjMzNzksIDYzMzgzLCA2MzM4NywgCi0gICAgNjMzOTEsIDYzMzk1LCA2MzM5OSwgNjM0MDMsIDYzNDA3LCA2MzQxMSwgNjM0MTUsIDYzNDE5LCA2MzQyMywgNjM0MjcsIAotICAgIDYzNDMxLCA2MzQzNSwgNjM0MzksIDYzNDQzLCA2MzQ0NywgNjM0NTEsIDYzNDU1LCA2MzQ1OSwgNjM0NjMsIDYzNDY3LCAKLSAgICA2MzQ3MSwgNjM0NzUsIDYzNDc5LCA2MzQ4MywgNjM0ODcsIDYzNDkxLCA2MzQ5NSwgNjM0OTksIDYzNTAzLCA2MzUwNywgCi0gICAgNjM1MTEsIDYzNTE1LCA2MzUxOSwgNjM1MjMsIDYzNTI3LCA2MzUzMSwgNjM1MzUsIDYzNTM5LCA2MzU0MywgNjM1NDcsIAotICAgIDYzNTUwLCA2MzU1NCwgNjM1NTgsIDYzNTYyLCA2MzU2NiwgNjM1NzAsIDYzNTc0LCA2MzU3OCwgNjM1ODIsIDYzNTg2LCAKLSAgICA2MzU5MCwgNjM1OTQsIDYzNTk4LCA2MzYwMiwgNjM2MDYsIDYzNjEwLCA2MzYxNCwgNjM2MTgsIDYzNjIyLCA2MzYyNiwgCi0gICAgNjM2MzAsIDYzNjM0LCA2MzYzOCwgNjM2NDIsIDYzNjQ2LCA2MzY1MCwgNjM2NTQsIDYzNjU4LCA2MzY2MiwgNjM2NjYsIAotICAgIDYzNjcwLCA2MzY3NCwgNjM2NzgsIDYzNjgyLCA2MzY4NiwgNjM2OTAsIDYzNjk0LCA2MzY5OCwgNjM3MDIsIDYzNzA2LCAKLSAgICA2MzcxMCwgNjM3MTQsIDYzNzE4LCA2MzcyMiwgNjM3MjYsIDYzNzMwLCA2MzczNCwgNjM3MzgsIDYzNzQyLCA2Mzc0NiwgCi0gICAgNjM3NTAsIDYzNzU0LCA2Mzc1OCwgNjM3NjIsIDYzNzY2LCA2Mzc3MCwgNjM3NzQsIDYzNzc4LCA2Mzc4MiwgNjM3ODYsIAotICAgIDYzNzkwLCA2Mzc5NCwgNjM3OTgsIDYzODAyLCA2MzgwNiwgNjM4MTAsIDYzODE0LCA2MzgxOCwgNjM4MjIsIDYzODI2LCAKLSAgICA2MzgzMCwgNjM4MzQsIDYzODM4LCA2Mzg0MiwgNjM4NDYsIDYzODUwLCA2Mzg1NCwgNjM4NTgsIDYzODYyLCA2Mzg2NiwgCi0gICAgNjM4NzAsIDYzODc0LCA2Mzg3OCwgNjM4ODIsIDYzODg2LCA2Mzg5MCwgNjM4OTQsIDYzODk4LCA2MzkwMiwgNjM5MDYsIAotICAgIDYzOTEwLCA2MzkxNCwgNjM5MTgsIDYzOTIyLCA2MzkyNiwgNjM5MzAsIDYzOTM0LCA2MzkzOCwgNjM5NDIsIDYzOTQ2LCAKLSAgICA2Mzk1MCwgNjM5NTQsIDYzOTU4LCA2Mzk2MiwgNjM5NjYsIDYzOTcwLCA2Mzk3NCwgNjM5NzgsIDYzOTgyLCA2Mzk4NiwgCi0gICAgNjM5OTAsIDYzOTk0LCA2Mzk5OCwgNjQwMDIsIDY0MDA2LCA2NDAxMCwgNjQwMTQsIDY0MDE4LCA2NDAyMSwgNjQwMjUsIAotICAgIDY0MDI5LCA2NDAzMywgNjQwMzcsIDY0MDQxLCA2NDA0NSwgNjQwNDksIDY0MDUzLCA2NDA1NywgNjQwNjEsIDY0MDY1LCAKLSAgICA2NDA2OSwgNjQwNzMsIDY0MDc3LCA2NDA4MSwgNjQwODUsIDY0MDg5LCA2NDA5MywgNjQwOTcsIDY0MTAxLCA2NDEwNSwgCi0gICAgNjQxMDksIDY0MTEzLCA2NDExNywgNjQxMjEsIDY0MTI1LCA2NDEyOSwgNjQxMzMsIDY0MTM3LCA2NDE0MSwgNjQxNDUsIAotICAgIDY0MTQ5LCA2NDE1MywgNjQxNTcsIDY0MTYxLCA2NDE2NSwgNjQxNjksIDY0MTczLCA2NDE3NywgNjQxODEsIDY0MTg1LCAKLSAgICA2NDE4OSwgNjQxOTMsIDY0MTk3LCA2NDIwMSwgNjQyMDUsIDY0MjA5LCA2NDIxMywgNjQyMTcsIDY0MjIxLCA2NDIyNSwgCi0gICAgNjQyMjksIDY0MjMzLCA2NDIzNywgNjQyNDEsIDY0MjQ1LCA2NDI0OSwgNjQyNTMsIDY0MjU3LCA2NDI2MSwgNjQyNjUsIAotICAgIDY0MjY5LCA2NDI3MywgNjQyNzcsIDY0MjgxLCA2NDI4NSwgNjQyODksIDY0MjkzLCA2NDI5NywgNjQzMDEsIDY0MzA1LCAKLSAgICA2NDMwOSwgNjQzMTMsIDY0MzE3LCA2NDMyMSwgNjQzMjUsIDY0MzI5LCA2NDMzMywgNjQzMzcsIDY0MzQxLCA2NDM0NSwgCi0gICAgNjQzNDksIDY0MzUzLCA2NDM1NywgNjQzNjEsIDY0MzY1LCA2NDM2OSwgNjQzNzMsIDY0Mzc3LCA2NDM4MSwgNjQzODUsIAotICAgIDY0Mzg5LCA2NDM5MywgNjQzOTcsIDY0NDAxLCA2NDQwNSwgNjQ0MDksIDY0NDEzLCA2NDQxNywgNjQ0MjEsIDY0NDI1LCAKLSAgICA2NDQyOSwgNjQ0MzMsIDY0NDM3LCA2NDQ0MSwgNjQ0NDUsIDY0NDQ5LCA2NDQ1MywgNjQ0NTcsIDY0NDYxLCA2NDQ2NSwgCi0gICAgNjQ0NjksIDY0NDczLCA2NDQ3NywgNjQ0ODEsIDY0NDg0LCA2NDQ4OCwgNjQ0OTIsIDY0NDk2LCA2NDUwMCwgNjQ1MDQsIAotICAgIDY0NTA4LCA2NDUxMiwgNjQ1MTYsIDY0NTIwLCA2NDUyNCwgNjQ1MjgsIDY0NTMyLCA2NDUzNiwgNjQ1NDAsIDY0NTQ0LCAKLSAgICA2NDU0OCwgNjQ1NTIsIDY0NTU2LCA2NDU2MCwgNjQ1NjQsIDY0NTY4LCA2NDU3MiwgNjQ1NzYsIDY0NTgwLCA2NDU4NCwgCi0gICAgNjQ1ODgsIDY0NTkyLCA2NDU5NiwgNjQ2MDAsIDY0NjA0LCA2NDYwOCwgNjQ2MTIsIDY0NjE2LCA2NDYyMCwgNjQ2MjQsIAotICAgIDY0NjI4LCA2NDYzMiwgNjQ2MzYsIDY0NjQwLCA2NDY0NCwgNjQ2NDgsIDY0NjUyLCA2NDY1NiwgNjQ2NjAsIDY0NjY0LCAKLSAgICA2NDY2OCwgNjQ2NzIsIDY0Njc2LCA2NDY4MCwgNjQ2ODQsIDY0Njg4LCA2NDY5MiwgNjQ2OTYsIDY0NzAwLCA2NDcwNCwgCi0gICAgNjQ3MDgsIDY0NzEyLCA2NDcxNiwgNjQ3MjAsIDY0NzI0LCA2NDcyOCwgNjQ3MzIsIDY0NzM2LCA2NDc0MCwgNjQ3NDQsIAotICAgIDY0NzQ4LCA2NDc1MiwgNjQ3NTYsIDY0NzYwLCA2NDc2NCwgNjQ3NjgsIDY0NzcyLCA2NDc3NiwgNjQ3ODAsIDY0Nzg0LCAKLSAgICA2NDc4OCwgNjQ3OTIsIDY0Nzk2LCA2NDgwMCwgNjQ4MDQsIDY0ODA4LCA2NDgxMiwgNjQ4MTYsIDY0ODIwLCA2NDgyNCwgCi0gICAgNjQ4MjgsIDY0ODMyLCA2NDgzNiwgNjQ4NDAsIDY0ODQzLCA2NDg0NywgNjQ4NTEsIDY0ODU1LCA2NDg1OSwgNjQ4NjMsIAotICAgIDY0ODY3LCA2NDg3MSwgNjQ4NzUsIDY0ODc5LCA2NDg4MywgNjQ4ODcsIDY0ODkxLCA2NDg5NSwgNjQ4OTksIDY0OTAzLCAKLSAgICA2NDkwNywgNjQ5MTEsIDY0OTE1LCA2NDkxOSwgNjQ5MjMsIDY0OTI3LCA2NDkzMSwgNjQ5MzUsIDY0OTM5LCA2NDk0MywgCi0gICAgNjQ5NDcsIDY0OTUxLCA2NDk1NSwgNjQ5NTksIDY0OTYzLCA2NDk2NywgNjQ5NzEsIDY0OTc1LCA2NDk3OSwgNjQ5ODMsIAotICAgIDY0OTg3LCA2NDk5MSwgNjQ5OTUsIDY0OTk5LCA2NTAwMywgNjUwMDcsIDY1MDExLCA2NTAxNSwgNjUwMTksIDY1MDIzLCAKLSAgICA2NTAyNywgNjUwMzEsIDY1MDM1LCA2NTAzOSwgNjUwNDMsIDY1MDQ3LCA2NTA1MSwgNjUwNTUsIDY1MDU5LCA2NTA2MywgCi0gICAgNjUwNjcsIDY1MDcxLCA2NTA3NSwgNjUwNzksIDY1MDgzLCA2NTA4NywgNjUwOTEsIDY1MDk1LCA2NTA5OSwgNjUxMDMsIAotICAgIDY1MTA3LCA2NTExMSwgNjUxMTUsIDY1MTE5LCA2NTEyMywgNjUxMjcsIDY1MTMxLCA2NTEzNSwgNjUxMzksIDY1MTQzLCAKLSAgICA2NTE0NywgNjUxNTEsIDY1MTU1LCA2NTE1OSwgNjUxNjMsIDY1MTY3LCA2NTE3MSwgNjUxNzUsIDY1MTc5LCA2NTE4MywgCi0gICAgNjUxODcsIDY1MTkxLCA2NTE5NSwgNjUxOTksIDY1MjAzLCA2NTIwNywgNjUyMTEsIDY1MjE1LCA2NTIxOSwgNjUyMjMsIAotICAgIDY1MjI3LCA2NTIzMSwgNjUyMzUsIDY1MjM5LCA2NTI0MywgNjUyNDcsIDY1MjUxLCA2NTI1NSwgNjUyNTksIDY1MjYzLCAKLSAgICA2NTI2NywgNjUyNzEsIDY1Mjc1LCA2NTI3OSwgNjUyODMsIDY1Mjg3LCA2NTI5MSwgNjUyOTUsIDY1Mjk5LCA2NTMwMywgCi0gICAgNjUzMDcsIDY1MzExLCA2NTMxNSwgNjUzMTksIDY1MzIzLCA2NTMyNywgNjUzMzEsIDY1MzM1LCA2NTMzOCwgNjUzNDIsIAotICAgIDY1MzQ2LCA2NTM1MCwgNjUzNTQsIDY1MzU4LCA2NTM2MiwgNjUzNjYsIDY1MzcwLCA2NTM3NCwgNjUzNzgsIDY1MzgyLCAKLSAgICA2NTM4NiwgNjUzOTAsIDY1Mzk0LCA2NTM5OCwgNjU0MDIsIDY1NDA2LCA2NTQxMCwgNjU0MTQsIDY1NDE4LCA2NTQyMiwgCi0gICAgNjU0MjYsIDY1NDMwLCA2NTQzNCwgNjU0MzgsIDY1NDQyLCA2NTQ0NiwgNjU0NTAsIDY1NDU0LCA2NTQ1OCwgNjU0NjIsIAotICAgIDY1NDY2LCA2NTQ3MCwgNjU0NzQsIDY1NDc4LCA2NTQ4MiwgNjU0ODYsIDY1NDkwLCA2NTQ5NCwgNjU0OTgsIDY1NTAyLCAKLSAgICA2NTUwNiwgNjU1MTAsIDY1NTE0LCA2NTUxOCwgNjU1MjIsIDY1NTI2LCA2NTUzMCwgNjU1MzQsIDY1NTM4LCA2NTU0MiwgCi0gICAgNjU1NDYsIDY1NTUwLCA2NTU1NCwgNjU1NTgsIDY1NTYyLCA2NTU2NiwgNjU1NzAsIDY1NTc0LCA2NTU3OCwgNjU1ODIsIAotICAgIDY1NTg2LCA2NTU5MCwgNjU1OTQsIDY1NTk4LCA2NTYwMiwgNjU2MDYsIDY1NjEwLCA2NTYxNCwgNjU2MTgsIDY1NjIyLCAKLSAgICA2NTYyNiwgNjU2MzAsIDY1NjM0LCA2NTYzOCwgNjU2NDIsIDY1NjQ2LCA2NTY1MCwgNjU2NTQsIDY1NjU4LCA2NTY2MiwgCi0gICAgNjU2NjYsIDY1NjcwLCA2NTY3NCwgNjU2NzgsIDY1NjgyLCA2NTY4NiwgNjU2OTAsIDY1Njk0LCA2NTY5OCwgNjU3MDIsIAotICAgIDY1NzA2LCA2NTcxMCwgNjU3MTQsIDY1NzE4LCA2NTcyMiwgNjU3MjYsIDY1NzMwLCA2NTczNCwgNjU3MzgsIDY1NzQyLCAKLSAgICA2NTc0NiwgNjU3NTAsIDY1NzU0LCA2NTc1OCwgNjU3NjIsIDY1NzY2LCA2NTc3MCwgNjU3NzQsIDY1Nzc4LCA2NTc4MiwgCi0gICAgNjU3ODYsIDY1NzkwLCA2NTc5MywgNjU3OTcsIDY1ODAxLCA2NTgwNSwgNjU4MDksIDY1ODEzLCA2NTgxNywgNjU4MjEsIAotICAgIDY1ODI1LCA2NTgyOSwgNjU4MzMsIDY1ODM3LCA2NTg0MSwgNjU4NDUsIDY1ODQ5LCA2NTg1MywgNjU4NTcsIDY1ODYxLCAKLSAgICA2NTg2NSwgNjU4NjksIDY1ODczLCA2NTg3NywgNjU4ODEsIDY1ODg1LCA2NTg4OSwgNjU4OTMsIDY1ODk3LCA2NTkwMSwgCi0gICAgNjU5MDUsIDY1OTA5LCA2NTkxMywgNjU5MTcsIDY1OTIxLCA2NTkyNSwgNjU5MjksIDY1OTMzLCA2NTkzNywgNjU5NDEsIAotICAgIDY1OTQ1LCA2NTk0OSwgNjU5NTMsIDY1OTU3LCA2NTk2MSwgNjU5NjUsIDY1OTY5LCA2NTk3MywgNjU5NzcsIDY1OTgxLCAKLSAgICA2NTk4NSwgNjU5ODksIDY1OTkzLCA2NTk5NywgNjYwMDEsIDY2MDA1LCA2NjAwOSwgNjYwMTMsIDY2MDE3LCA2NjAyMSwgCi0gICAgNjYwMjUsIDY2MDI5LCA2NjAzMywgNjYwMzcsIDY2MDQxLCA2NjA0NSwgNjYwNDksIDY2MDUzLCA2NjA1NywgNjYwNjEsIAotICAgIDY2MDY1LCA2NjA2OSwgNjYwNzMsIDY2MDc3LCA2NjA4MSwgNjYwODUsIDY2MDg5LCA2NjA5MywgNjYwOTcsIDY2MTAxLCAKLSAgICA2NjEwNSwgNjYxMDksIDY2MTEzLCA2NjExNywgNjYxMjEsIDY2MTI1LCA2NjEyOSwgNjYxMzMsIDY2MTM3LCA2NjE0MSwgCi0gICAgNjYxNDUsIDY2MTQ5LCA2NjE1MywgNjYxNTcsIDY2MTYxLCA2NjE2NSwgNjYxNjksIDY2MTczLCA2NjE3NywgNjYxODEsIAotICAgIDY2MTg1LCA2NjE4OSwgNjYxOTMsIDY2MTk3LCA2NjIwMSwgNjYyMDUsIDY2MjA5LCA2NjIxMywgNjYyMTcsIDY2MjIxLCAKLSAgICA2NjIyNSwgNjYyMjksIDY2MjMzLCA2NjIzNywgNjYyNDEsIDY2MjQ1LCA2NjI0OSwgNjYyNTMsIDY2MjU3LCA2NjI2MSwgCi0gICAgNjYyNjUsIDY2MjY5LCA2NjI3MywgNjYyNzcsIDY2MjgxLCA2NjI4NSwgNjYyODksIDY2MjkzLCA2NjI5NywgNjYzMDEsIAotICAgIDY2MzA1LCA2NjMwOSwgNjYzMTMsIDY2MzE3LCA2NjMyMSwgNjYzMjUsIDY2MzI5LCA2NjMzMywgNjYzMzcsIDY2MzQxLCAKLSAgICA2NjM0NSwgNjYzNDksIDY2MzUzLCA2NjM1NywgNjYzNjEsIDY2MzY1LCA2NjM2OSwgNjYzNzMsIDY2Mzc3LCA2NjM4MSwgCi0gICAgNjYzODUsIDY2Mzg5LCA2NjM5MywgNjYzOTYsIDY2NDAwLCA2NjQwNCwgNjY0MDgsIDY2NDEyLCA2NjQxNiwgNjY0MjAsIAotICAgIDY2NDI0LCA2NjQyOCwgNjY0MzIsIDY2NDM2LCA2NjQ0MCwgNjY0NDQsIDY2NDQ4LCA2NjQ1MiwgNjY0NTYsIDY2NDYwLCAKLSAgICA2NjQ2NCwgNjY0NjgsIDY2NDcyLCA2NjQ3NiwgNjY0ODAsIDY2NDg0LCA2NjQ4OCwgNjY0OTIsIDY2NDk2LCA2NjUwMCwgCi0gICAgNjY1MDQsIDY2NTA4LCA2NjUxMiwgNjY1MTYsIDY2NTIwLCA2NjUyNCwgNjY1MjgsIDY2NTMyLCA2NjUzNiwgNjY1NDAsIAotICAgIDY2NTQ0LCA2NjU0OCwgNjY1NTIsIDY2NTU2LCA2NjU2MCwgNjY1NjQsIDY2NTY4LCA2NjU3MiwgNjY1NzYsIDY2NTgwLCAKLSAgICA2NjU4NCwgNjY1ODgsIDY2NTkyLCA2NjU5NiwgNjY2MDAsIDY2NjA0LCA2NjYwOCwgNjY2MTIsIDY2NjE2LCA2NjYyMCwgCi0gICAgNjY2MjQsIDY2NjI4LCA2NjYzMiwgNjY2MzYsIDY2NjQwLCA2NjY0NCwgNjY2NDgsIDY2NjUyLCA2NjY1NiwgNjY2NjAsIAotICAgIDY2NjY0LCA2NjY2OCwgNjY2NzIsIDY2Njc2LCA2NjY4MCwgNjY2ODQsIDY2Njg4LCA2NjY5MiwgNjY2OTYsIDY2NzAwLCAKLSAgICA2NjcwNCwgNjY3MDgsIDY2NzEyLCA2NjcxNiwgNjY3MjAsIDY2NzI0LCA2NjcyOCwgNjY3MzIsIDY2NzM2LCA2Njc0MCwgCi0gICAgNjY3NDQsIDY2NzQ4LCA2Njc1MiwgNjY3NTYsIDY2NzYwLCA2Njc2NCwgNjY3NjgsIDY2NzcyLCA2Njc3NiwgNjY3ODAsIAotICAgIDY2Nzg0LCA2Njc4OCwgNjY3OTIsIDY2Nzk2LCA2NjgwMCwgNjY4MDQsIDY2ODA4LCA2NjgxMiwgNjY4MTYsIDY2ODIwLCAKLSAgICA2NjgyNCwgNjY4MjgsIDY2ODMyLCA2NjgzNiwgNjY4NDAsIDY2ODQ0LCA2Njg0OCwgNjY4NTIsIDY2ODU2LCA2Njg2MCwgCi0gICAgNjY4NjQsIDY2ODY4LCA2Njg3MiwgNjY4NzYsIDY2ODgwLCA2Njg4NCwgNjY4ODgsIDY2ODkyLCA2Njg5NiwgNjY5MDAsIAotICAgIDY2OTA0LCA2NjkwOCwgNjY5MTIsIDY2OTE2LCA2NjkyMCwgNjY5MjQsIDY2OTI4LCA2NjkzMiwgNjY5MzYsIDY2OTQwLCAKLSAgICA2Njk0NCwgNjY5NDgsIDY2OTUyLCA2Njk1NiwgNjY5NjAsIDY2OTY0LCA2Njk2OCwgNjY5NzIsIDY2OTc2LCA2Njk4MCwgCi0gICAgNjY5ODQsIDY2OTg4LCA2Njk5MiwgNjY5OTYsIDY3MDAwLCA2NzAwNCwgNjcwMDgsIDY3MDEyLCA2NzAxNiwgNjcwMjAsIAotICAgIDY3MDI0LCA2NzAyOCwgNjcwMzIsIDY3MDM2LCA2NzA0MCwgNjcwNDQsIDY3MDQ4LCA2NzA1MiwgNjcwNTYsIDY3MDYwLCAKLSAgICA2NzA2NCwgNjcwNjgsIDY3MDcyLCA2NzA3NiwgNjcwODAsIDY3MDg0LCA2NzA4OCwgNjcwOTIsIDY3MDk2LCA2NzEwMCwgCi0gICAgNjcxMDQsIDY3MTA4LCA2NzExMiwgNjcxMTYsIDY3MTIwLCA2NzEyNCwgNjcxMjgsIDY3MTMyLCA2NzEzNiwgNjcxNDAsIAotICAgIDY3MTQ0LCA2NzE0OCwgNjcxNTIsIDY3MTU1LCA2NzE1OSwgNjcxNjMsIDY3MTY3LCA2NzE3MSwgNjcxNzUsIDY3MTc5LCAKLSAgICA2NzE4MywgNjcxODcsIDY3MTkxLCA2NzE5NSwgNjcxOTksIDY3MjAzLCA2NzIwNywgNjcyMTEsIDY3MjE1LCA2NzIxOSwgCi0gICAgNjcyMjMsIDY3MjI3LCA2NzIzMSwgNjcyMzUsIDY3MjM5LCA2NzI0MywgNjcyNDcsIDY3MjUxLCA2NzI1NSwgNjcyNTksIAotICAgIDY3MjYzLCA2NzI2NywgNjcyNzEsIDY3Mjc1LCA2NzI3OSwgNjcyODMsIDY3Mjg3LCA2NzI5MSwgNjcyOTUsIDY3Mjk5LCAKLSAgICA2NzMwMywgNjczMDcsIDY3MzExLCA2NzMxNSwgNjczMTksIDY3MzIzLCA2NzMyNywgNjczMzEsIDY3MzM1LCA2NzMzOSwgCi0gICAgNjczNDMsIDY3MzQ3LCA2NzM1MSwgNjczNTUsIDY3MzU5LCA2NzM2MywgNjczNjcsIDY3MzcxLCA2NzM3NSwgNjczNzksIAotICAgIDY3MzgzLCA2NzM4NywgNjczOTEsIDY3Mzk1LCA2NzM5OSwgNjc0MDMsIDY3NDA3LCA2NzQxMSwgNjc0MTUsIDY3NDE5LCAKLSAgICA2NzQyMywgNjc0MjcsIDY3NDMxLCA2NzQzNSwgNjc0MzksIDY3NDQzLCA2NzQ0NywgNjc0NTEsIDY3NDU1LCA2NzQ1OSwgCi0gICAgNjc0NjMsIDY3NDY3LCA2NzQ3MSwgNjc0NzUsIDY3NDc5LCA2NzQ4MywgNjc0ODcsIDY3NDkxLCA2NzQ5NSwgNjc0OTksIAotICAgIDY3NTAzLCA2NzUwNywgNjc1MTEsIDY3NTE1LCA2NzUxOSwgNjc1MjMsIDY3NTI3LCA2NzUzMSwgNjc1MzUsIDY3NTM5LCAKLSAgICA2NzU0MywgNjc1NDcsIDY3NTUxLCA2NzU1NSwgNjc1NTksIDY3NTYzLCA2NzU2NywgNjc1NzEsIDY3NTc1LCA2NzU3OSwgCi0gICAgNjc1ODMsIDY3NTg3LCA2NzU5MSwgNjc1OTUsIDY3NTk5LCA2NzYwMywgNjc2MDcsIDY3NjExLCA2NzYxNSwgNjc2MTksIAotICAgIDY3NjIzLCA2NzYyNywgNjc2MzEsIDY3NjM1LCA2NzYzOSwgNjc2NDMsIDY3NjQ3LCA2NzY1MSwgNjc2NTUsIDY3NjU5LCAKLSAgICA2NzY2MywgNjc2NjcsIDY3NjcxLCA2NzY3NSwgNjc2NzksIDY3NjgzLCA2NzY4NywgNjc2OTEsIDY3Njk1LCA2NzY5OSwgCi0gICAgNjc3MDMsIDY3NzA3LCA2NzcxMSwgNjc3MTUsIDY3NzE5LCA2NzcyMywgNjc3MjcsIDY3NzMxLCA2NzczNSwgNjc3MzksIAotICAgIDY3NzQzLCA2Nzc0NywgNjc3NTEsIDY3NzU1LCA2Nzc1OSwgNjc3NjMsIDY3NzY3LCA2Nzc3MSwgNjc3NzUsIDY3Nzc5LCAKLSAgICA2Nzc4MywgNjc3ODcsIDY3NzkxLCA2Nzc5NSwgNjc3OTksIDY3ODAzLCA2NzgwNywgNjc4MTEsIDY3ODE1LCA2NzgxOSwgCi0gICAgNjc4MjMsIDY3ODI3LCA2NzgzMSwgNjc4MzUsIDY3ODM5LCA2Nzg0MywgNjc4NDcsIDY3ODUxLCA2Nzg1NSwgNjc4NTksIAotICAgIDY3ODYzLCA2Nzg2NywgNjc4NzEsIDY3ODc1LCA2Nzg3OSwgNjc4ODMsIDY3ODg3LCA2Nzg5MSwgNjc4OTUsIDY3ODk5LCAKLSAgICA2NzkwMywgNjc5MDcsIDY3OTExLCA2NzkxNSwgNjc5MTksIDY3OTIzLCA2NzkyNywgNjc5MzEsIDY3OTM1LCAwLCAwLCAwLCAKLSAgICA2NzkzOSwgNjc5NDMsIDY3OTQ3LCA2Nzk1MSwgNjc5NTUsIDY3OTU5LCA2Nzk2MywgNjc5NjcsIDY3OTcxLCA2Nzk3NSwgCi0gICAgNjc5NzksIDY3OTgzLCA2Nzk4NywgNjc5OTEsIDY3OTk1LCA2Nzk5OSwgNjgwMDMsIDY4MDA3LCA2ODAxMSwgNjgwMTUsIAotICAgIDY4MDE5LCA2ODAyMywgNjgwMjcsIDY4MDMxLCA2ODAzNSwgNjgwMzksIDY4MDQzLCA2ODA0NywgNjgwNTEsIDY4MDU1LCAKLSAgICA2ODA1OSwgNjgwNjMsIDY4MDY3LCA2ODA3MSwgNjgwNzUsIDY4MDc5LCA2ODA4MywgNjgwODcsIDY4MDkxLCA2ODA5NSwgCi0gICAgNjgwOTksIDY4MTAzLCA2ODEwNywgNjgxMTEsIDY4MTE1LCA2ODExOSwgNjgxMjMsIDY4MTI3LCA2ODEzMSwgNjgxMzUsIAotICAgIDY4MTM5LCA2ODE0MywgNjgxNDcsIDY4MTUxLCA2ODE1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjgxNTksIAotICAgIDY4MTY0LCA2ODE2OCwgNjgxNzMsIDY4MTc4LCA2ODE4MywgNjgxODgsIDY4MTkzLCA2ODE5NywgNjgyMDIsIDY4MjA3LCAKLSAgICA2ODIxMiwgNjgyMTcsIDY4MjIyLCA2ODIyNywgNjgyMzIsIDY4MjM2LCA2ODI0MCwgNjgyNDUsIDY4MjUwLCA2ODI1NSwgCi0gICAgNjgyNjAsIDY4MjY1LCA2ODI2OSwgNjgyNzQsIDY4Mjc5LCA2ODI4NCwgNjgyODksIDY4Mjk0LCA2ODI5OCwgNjgzMDMsIAotICAgIDY4MzA3LCA2ODMxMiwgNjgzMTYsIDY4MzIxLCA2ODMyNSwgNjgzMjksIDY4MzMzLCA2ODMzOCwgNjgzNDMsIDY4MzQ4LCAKLSAgICA2ODM1NiwgNjgzNjQsIDY4MzcyLCA2ODM4MCwgNjgzODcsIDY4Mzk1LCA2ODQwMSwgNjg0MDksIDY4NDEzLCA2ODQxNywgCi0gICAgNjg0MjEsIDY4NDI1LCA2ODQyOSwgNjg0MzMsIDY4NDM3LCA2ODQ0MSwgNjg0NDUsIDY4NDQ5LCA2ODQ1MywgNjg0NTcsIAotICAgIDY4NDYxLCA2ODQ2NSwgNjg0NjksIDY4NDczLCA2ODQ3NywgNjg0ODEsIDY4NDg1LCA2ODQ4OSwgNjg0OTMsIDY4NDk3LCAKLSAgICA2ODUwMSwgNjg1MDUsIDY4NTA5LCA2ODUxMywgNjg1MTcsIDY4NTIxLCA2ODUyNSwgNjg1MjksIDY4NTMzLCA2ODUzNywgCi0gICAgNjg1NDEsIDY4NTQ1LCA2ODU0OSwgNjg1NTMsIDY4NTU2LCA2ODU2MCwgNjg1NjQsIDY4NTY4LCA2ODU3MiwgNjg1NzYsIAotICAgIDY4NTgwLCA2ODU4NCwgNjg1ODgsIDY4NTkyLCA2ODU5NiwgNjg2MDAsIDY4NjA0LCA2ODYwOCwgNjg2MTIsIDY4NjE2LCAKLSAgICA2ODYyMCwgNjg2MjQsIDY4NjI4LCA2ODYzMiwgNjg2MzYsIDY4NjQwLCA2ODY0NCwgNjg2NDgsIDY4NjUyLCA2ODY1NiwgCi0gICAgNjg2NjAsIDY4NjY0LCA2ODY2OCwgNjg2NzIsIDY4Njc2LCA2ODY4MCwgNjg2ODQsIDY4Njg4LCA2ODY5MiwgNjg2OTYsIAotICAgIDY4NzAwLCA2ODcwMywgNjg3MDcsIDY4NzExLCA2ODcxNCwgNjg3MTgsIDY4NzIyLCA2ODcyNiwgNjg3MjksIDY4NzMzLCAKLSAgICA2ODczNywgNjg3NDEsIDY4NzQ1LCA2ODc0OSwgNjg3NTMsIDY4NzU3LCA2ODc2MSwgNjg3NjUsIDY4NzY5LCA2ODc3MywgCi0gICAgNjg3NzcsIDY4NzgxLCA2ODc4NSwgNjg3ODgsIDY4NzkyLCA2ODc5NiwgNjg4MDAsIDY4ODA0LCA2ODgwOCwgNjg4MTIsIAotICAgIDY4ODE2LCA2ODgyMCwgNjg4MjQsIDY4ODI3LCA2ODgzMCwgNjg4MzQsIDY4ODM4LCA2ODg0MiwgNjg4NDUsIDY4ODQ4LCAKLSAgICA2ODg1MiwgNjg4NTYsIDY4ODYwLCA2ODg2NCwgNjg4NjgsIDY4ODcyLCA2ODg3NiwgNjg4ODAsIDY4ODg0LCA2ODg4OCwgCi0gICAgNjg4OTIsIDY4ODk2LCA2ODkwMCwgNjg5MDQsIDY4OTA4LCA2ODkxMiwgNjg5MTYsIDY4OTIwLCA2ODkyNCwgNjg5MjgsIAotICAgIDY4OTMyLCA2ODkzNiwgNjg5NDAsIDY4OTQ0LCA2ODk0OCwgNjg5NTIsIDY4OTU2LCA2ODk2MCwgNjg5NjQsIDY4OTY4LCAKLSAgICA2ODk3MiwgNjg5NzYsIDY4OTgwLCA2ODk4NCwgNjg5ODgsIDY4OTkyLCA2ODk5NiwgNjg5OTksIDY5MDAzLCA2OTAwNywgCi0gICAgNjkwMTEsIDY5MDE1LCA2OTAxOSwgNjkwMjMsIDY5MDI3LCA2OTAzMSwgNjkwMzUsIDY5MDM5LCA2OTA0MywgNjkwNDcsIAotICAgIDY5MDUxLCA2OTA1NSwgNjkwNTksIDY5MDYzLCA2OTA2NywgNjkwNzEsIDY5MDc1LCA2OTA3OSwgNjkwODMsIDY5MDg3LCAKLSAgICA2OTA5MSwgNjkwOTUsIDY5MDk5LCA2OTEwMywgNjkxMDcsIDY5MTExLCA2OTExNSwgNjkxMTksIDY5MTIzLCA2OTEyNywgCi0gICAgNjkxMzEsIDY5MTM1LCA2OTEzOSwgNjkxNDMsIDY5MTQ2LCA2OTE1MCwgNjkxNTQsIDY5MTU4LCA2OTE2MiwgNjkxNjYsIAotICAgIDY5MTcwLCA2OTE3NCwgNjkxNzgsIDY5MTgyLCA2OTE4NiwgNjkxOTAsIDY5MTk0LCA2OTE5OCwgNjkyMDIsIDY5MjA2LCAKLSAgICA2OTIxMCwgNjkyMTMsIDY5MjE3LCA2OTIyMSwgNjkyMjUsIDY5MjI5LCA2OTIzMywgNjkyMzcsIDY5MjQxLCA2OTI0NSwgCi0gICAgNjkyNDksIDY5MjUzLCA2OTI1NywgNjkyNjEsIDY5MjY1LCA2OTI2OSwgNjkyNzMsIDY5Mjc3LCA2OTI4MSwgNjkyODUsIAotICAgIDY5Mjg5LCA2OTI5MywgNjkyOTcsIDY5MzAwLCA2OTMwNCwgNjkzMDgsIDY5MzEyLCA2OTMxNiwgNjkzMjAsIDY5MzI0LCAKLSAgICA2OTMyOCwgNjkzMzIsIDY5MzM2LCA2OTM0MCwgNjkzNDQsIDY5MzQ4LCA2OTM1MiwgNjkzNTYsIDY5MzYwLCA2OTM2NCwgCi0gICAgNjkzNjgsIDY5MzcyLCA2OTM3NiwgNjkzODAsIDY5Mzg0LCA2OTM4OCwgNjkzOTIsIDY5Mzk2LCA2OTQwMCwgNjk0MDQsIAotICAgIDY5NDA4LCA2OTQxMiwgNjk0MTYsIDY5NDIwLCA2OTQyNCwgNjk0MjgsIDY5NDMyLCA2OTQzNiwgNjk0NDAsIDY5NDQ0LCAKLSAgICA2OTQ0OCwgNjk0NTIsIDY5NDU2LCA2OTQ2MCwgNjk0NjQsIDY5NDY4LCA2OTQ3MiwgNjk0NzUsIDY5NDgwLCA2OTQ4NCwgCi0gICAgNjk0OTAsIDY5NDk1LCA2OTUwMSwgNjk1MDUsIDY5NTA5LCA2OTUxMywgNjk1MTcsIDY5NTIxLCA2OTUyNSwgNjk1MjksIAotICAgIDY5NTMzLCA2OTUzNywgNjk1NDEsIDY5NTQ1LCA2OTU0OSwgNjk1NTMsIDY5NTU3LCA2OTU2MCwgNjk1NjMsIDY5NTY2LCAKLSAgICA2OTU2OSwgNjk1NzIsIDY5NTc1LCA2OTU3OCwgNjk1ODEsIDY5NTg0LCA2OTU4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjk1OTUsIDY5NjAwLCA2OTYwNSwgNjk2MTAsIDY5NjE1LCAKLSAgICA2OTYyMiwgNjk2MjksIDY5NjM0LCA2OTYzOSwgNjk2NDQsIDY5NjQ5LCA2OTY1NiwgNjk2NjMsIDY5NjcwLCA2OTY3NywgCi0gICAgNjk2ODQsIDY5NjkxLCA2OTcwMSwgNjk3MTEsIDY5NzE4LCA2OTcyNSwgNjk3MzIsIDY5NzM5LCA2OTc0NSwgNjk3NTEsIAotICAgIDY5NzYwLCA2OTc2OSwgNjk3NzYsIDY5NzgzLCA2OTc5NCwgNjk4MDUsIDY5ODEwLCA2OTgxNSwgNjk4MjIsIDY5ODI5LCAKLSAgICA2OTgzNiwgNjk4NDMsIDY5ODUwLCA2OTg1NywgNjk4NjQsIDY5ODcxLCA2OTg3NywgNjk4ODMsIDY5ODg5LCA2OTg5NSwgCi0gICAgNjk5MDIsIDY5OTA5LCA2OTkxNCwgNjk5MTgsIDY5OTI1LCA2OTkzMiwgNjk5MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY5OTQzLCA2OTk0NywgNjk5NTEsIDY5OTU0LCA2OTk1NywgNjk5NjIsIDY5OTY3LCA2OTk3MiwgNjk5NzcsIDY5OTgyLCAKLSAgICA2OTk4NywgNjk5OTIsIDY5OTk3LCA3MDAwMiwgNzAwMDcsIDcwMDE2LCA3MDAyNSwgNzAwMzAsIDcwMDM1LCA3MDA0MCwgCi0gICAgNzAwNDUsIDcwMDUwLCA3MDA1NSwgNzAwNjAsIDcwMDY1LCA3MDA3MCwgNzAwNzUsIDcwMDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3MDA4NSwgNzAwODgsIDcwMDkxLCA3MDA5NCwgNzAwOTgsIDcwMTAyLCA3MDEwNiwgNzAxMTAsIDcwMTEzLCAKLSAgICA3MDExNywgNzAxMjAsIDcwMTI0LCA3MDEyNywgNzAxMzEsIDcwMTM1LCA3MDEzOSwgNzAxNDMsIDcwMTQ3LCA3MDE1MSwgCi0gICAgNzAxNTUsIDcwMTU4LCA3MDE2MiwgNzAxNjYsIDcwMTcwLCA3MDE3NCwgNzAxNzgsIDcwMTgyLCA3MDE4NiwgNzAxOTAsIAotICAgIDcwMTk0LCA3MDE5OCwgNzAyMDIsIDcwMjA2LCA3MDIxMCwgNzAyMTQsIDcwMjE3LCA3MDIyMSwgNzAyMjUsIDcwMjI5LCAKLSAgICA3MDIzMywgNzAyMzcsIDcwMjQxLCA3MDI0NSwgNzAyNDksIDcwMjUzLCA3MDI1NywgNzAyNjEsIDcwMjY1LCA3MDI2OSwgCi0gICAgNzAyNzMsIDcwMjc3LCA3MDI4MSwgNzAyODUsIDcwMjg5LCA3MDI5MywgNzAyOTcsIDcwMzAxLCA3MDMwNSwgNzAzMDksIAotICAgIDcwMzEzLCA3MDMxNiwgNzAzMjAsIDcwMzI0LCA3MDMyOCwgNzAzMzIsIDcwMzM2LCA3MDM0MCwgNzAzNDQsIDcwMzQ3LCAKLSAgICA3MDM1MSwgNzAzNTUsIDcwMzU5LCA3MDM2MywgNzAzNjcsIDcwMzcxLCA3MDM3NSwgNzAzNzksIDcwMzgzLCA3MDM4NywgCi0gICAgNzAzOTEsIDcwMzk1LCA3MDQwMCwgNzA0MDUsIDcwNDA4LCA3MDQxMywgNzA0MTYsIDcwNDE5LCA3MDQyMiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNzA0MjYsIDcwNDM1LCA3MDQ0NCwgNzA0NTMsIDcwNDYyLCA3MDQ3MSwgNzA0ODAsIDcwNDg5LCAKLSAgICA3MDQ5OCwgNzA1MDYsIDcwNTEzLCA3MDUyMSwgNzA1MjgsIDcwNTM2LCA3MDU0NiwgNzA1NTUsIDcwNTY1LCA3MDU3NCwgCi0gICAgNzA1ODQsIDcwNTkyLCA3MDU5OSwgNzA2MDcsIDcwNjE0LCA3MDYyMiwgNzA2MjcsIDcwNjMyLCA3MDYzNywgNzA2NDYsIAotICAgIDcwNjUyLCA3MDY1OCwgNzA2NjUsIDcwNjc0LCA3MDY4MiwgNzA2OTAsIDcwNjk4LCA3MDcwNSwgNzA3MTIsIDcwNzE5LCAKLSAgICA3MDcyNiwgNzA3MzEsIDcwNzM2LCA3MDc0MSwgNzA3NDYsIDcwNzUxLCA3MDc1NiwgNzA3NjEsIDcwNzY2LCA3MDc3NCwgCi0gICAgNzA3ODIsIDcwNzg4LCA3MDc5MywgNzA3OTgsIDcwODAzLCA3MDgwOCwgNzA4MTMsIDcwODE4LCA3MDgyMywgNzA4MjgsIAotICAgIDcwODMzLCA3MDg0MSwgNzA4NDksIDcwODU0LCA3MDg1OSwgNzA4NjksIDcwODc5LCA3MDg4NiwgNzA4OTMsIDcwOTAyLCAKLSAgICA3MDkxMSwgNzA5MjMsIDcwOTM1LCA3MDk0MSwgNzA5NDcsIDcwOTU1LCA3MDk2MywgNzA5NzMsIDcwOTgzLCA3MDk5MCwgCi0gICAgNzA5OTcsIDcxMDAyLCA3MTAwNywgNzEwMTksIDcxMDMxLCA3MTAzOSwgNzEwNDcsIDcxMDU3LCA3MTA2NywgNzEwNzksIAotICAgIDcxMDkxLCA3MTEwMCwgNzExMDksIDcxMTE2LCA3MTEyMywgNzExMzAsIDcxMTM3LCA3MTE0NiwgNzExNTUsIDcxMTYwLCAKLSAgICA3MTE2NSwgNzExNzIsIDcxMTc5LCA3MTE4NiwgNzExOTMsIDcxMjA1LCA3MTIxNywgNzEyMjIsIDcxMjI3LCA3MTIzMiwgCi0gICAgNzEyMzcsIDcxMjQyLCA3MTI0NywgNzEyNTIsIDcxMjU3LCA3MTI2MSwgNzEyNjYsIDcxMjcxLCA3MTI3NiwgNzEyODEsIAotICAgIDcxMjg2LCA3MTI5MiwgNzEyOTcsIDcxMzAyLCA3MTMwOSwgNzEzMTYsIDcxMzIzLCA3MTMzMCwgNzEzMzcsIDcxMzQ2LCAKLSAgICA3MTM1NSwgNzEzNjEsIDcxMzY3LCA3MTM3MywgNzEzNzksIDcxMzg1LCA3MTM5MSwgNzEzOTgsIDcxNDA1LCA3MTQxMiwgCi0gICAgNzE0MTYsIDcxNDIzLCA3MTQyOCwgNzE0MzMsIDcxNDQwLCAwLCA3MTQ1MywgNzE0NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcxNDY5LCA3MTQ3OCwgNzE0ODcsIDcxNDk2LCA3MTUwNSwgNzE1MTQsIDcxNTIzLCAKLSAgICA3MTUzMiwgNzE1NDEsIDcxNTUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMjA2NywgMCwgMTIwNzYsIDEyMDgzLCAxMjA5MSwgMTIxMDMsIDEyMTEwLCAxMjExNywgMTIxMjQsIDEyMTM1LCAxMjE0NiwgCisgICAgMTIxNTMsIDEyMTYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjE2NywgMTIxNzIsIDEyMTc3LCAxMjE4MiwgMTIxODcsIAorICAgIDEyMTkyLCAxMjE5NywgMTIyMDIsIDEyMjA3LCAxMjIxMiwgMTIyMTcsIDEyMjIyLCAxMjIyNywgMTIyMzEsIDEyMjM1LCAKKyAgICAxMjIzOSwgMTIyNDQsIDEyMjUwLCAxMjI1NiwgMTIyNjIsIDEyMjY3LCAxMjI3MiwgMTIyNzcsIDEyMjgyLCAxMjI4OCwgCisgICAgMTIyOTcsIDEyMzA1LCAwLCAxMjMxMSwgMTIzMTcsIDEyMzIxLCAxMjMyNSwgMTIzMjksIDEyMzM0LCAxMjMzNywgMTIzNDEsIAorICAgIDEyMzQ0LCAxMjM0OCwgMTIzNTEsIDEyMzU1LCAxMjM1OSwgMTIzNjMsIDEyMzY4LCAxMjM3MywgMTIzNzYsIDEyMzgwLCAKKyAgICAxMjM4NSwgMTIzOTAsIDEyMzkzLCAxMjM5NywgMTI0MDAsIDEyNDA0LCAxMjQwOCwgMTI0MTIsIDEyNDE2LCAxMjQyMCwgCisgICAgMTI0MjQsIDEyNDI4LCAxMjQzMiwgMTI0MzYsIDEyNDQwLCAxMjQ0NCwgMTI0NDgsIDEyNDUyLCAxMjQ1NiwgMTI0NjAsIAorICAgIDEyNDY0LCAxMjQ2OCwgMTI0NzIsIDEyNDc1LCAxMjQ3OSwgMTI0ODIsIDEyNDg2LCAxMjQ5MCwgMTI0OTQsIDEyNDk3LCAKKyAgICAxMjUwMCwgMTI1MDMsIDEyNTA3LCAxMjUxMSwgMTI1MTUsIDEyNTE5LCAxMjUyMywgMTI1MjcsIDEyNTMxLCAxMjUzNCwgCisgICAgMTI1MzcsIDEyNTQyLCAxMjU0NywgMTI1NTEsIDEyNTU1LCAxMjU2MCwgMTI1NjQsIDEyNTY5LCAxMjU3MywgMTI1NzgsIAorICAgIDEyNTgzLCAxMjU4OSwgMTI1OTUsIDEyNjAxLCAxMjYwNSwgMTI2MTAsIDEyNjE2LCAxMjYyMiwgMTI2MjYsIDEyNjMxLCAKKyAgICAxMjYzNSwgMTI2NDEsIDEyNjQ2LCAxMjY0OSwgMTI2NTUsIDEyNjYxLCAxMjY2NiwgMTI2NzEsIDEyNjc4LCAxMjY4MywgCisgICAgMTI2ODgsIDEyNjkyLCAxMjY5NiwgMTI3MDAsIDEyNzA0LCAxMjcwOCwgMTI3MTIsIDEyNzE2LCAxMjcyMCwgMTI3MjUsIAorICAgIDEyNzMwLCAxMjczNSwgMTI3NDEsIDEyNzQ0LCAxMjc0OCwgMTI3NTIsIDEyNzU1LCAxMjc1OCwgMTI3NjEsIDEyNzY0LCAKKyAgICAxMjc2NywgMTI3NzAsIDEyNzczLCAxMjc3NiwgMTI3NzksIDEyNzgzLCAxMjc5MCwgMTI3OTUsIDEyNzk5LCAxMjgwMywgCisgICAgMTI4MDcsIDEyODExLCAwLCAxMjgxNSwgMTI4MTksIDEyODIzLCAxMjgyNywgMTI4MzEsIDEyODM3LCAxMjg0MSwgMCwgCisgICAgMTI4NDUsIDEyODQ5LCAxMjg1MywgMCwgMTI4NTcsIDEyODYwLCAxMjg2NCwgMTI4NjcsIDEyODcxLCAxMjg3NCwgMTI4NzgsIAorICAgIDEyODgyLCAwLCAwLCAxMjg4NiwgMTI4ODksIDAsIDAsIDEyODkzLCAxMjg5NiwgMTI5MDAsIDEyOTAzLCAxMjkwNywgCisgICAgMTI5MTEsIDEyOTE1LCAxMjkxOSwgMTI5MjMsIDEyOTI3LCAxMjkzMSwgMTI5MzUsIDEyOTM5LCAxMjk0MywgMTI5NDcsIAorICAgIDEyOTUxLCAxMjk1NSwgMTI5NTksIDEyOTYzLCAxMjk2NywgMTI5NzEsIDEyOTc1LCAwLCAxMjk3OCwgMTI5ODEsIDEyOTg1LCAKKyAgICAxMjk4OSwgMTI5OTMsIDEyOTk2LCAxMjk5OSwgMCwgMTMwMDIsIDAsIDAsIDAsIDEzMDA2LCAxMzAxMCwgMTMwMTQsIAorICAgIDEzMDE3LCAwLCAwLCAxMzAyMCwgMTMwMjQsIDEzMDI4LCAxMzAzMywgMTMwMzcsIDEzMDQyLCAxMzA0NiwgMTMwNTEsIAorICAgIDEzMDU2LCAwLCAwLCAxMzA2MiwgMTMwNjYsIDAsIDAsIDEzMDcxLCAxMzA3NSwgMTMwODAsIDEzMDg0LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMzA5MCwgMCwgMCwgMCwgMCwgMTMwOTYsIDEzMTAwLCAwLCAxMzEwNCwgMTMxMDgsIDEzMTEzLCAKKyAgICAxMzExOCwgMTMxMjMsIDAsIDAsIDEzMTI5LCAxMzEzMywgMTMxMzYsIDEzMTM5LCAxMzE0MiwgMTMxNDUsIDEzMTQ4LCAKKyAgICAxMzE1MSwgMTMxNTQsIDEzMTU3LCAxMzE2MCwgMTMxNjksIDEzMTc4LCAxMzE4MiwgMTMxODYsIDEzMTkyLCAxMzE5OCwgCisgICAgMTMyMDQsIDEzMjEwLCAxMzIyNCwgMTMyMzEsIDEzMjM0LCAwLCAwLCAwLCAwLCAwLCAxMzIzOCwgMTMyNDQsIDEzMjQ4LCAwLCAKKyAgICAxMzI1MiwgMTMyNTUsIDEzMjU5LCAxMzI2MiwgMTMyNjYsIDEzMjY5LCAwLCAwLCAwLCAwLCAxMzI3MywgMTMyNzcsIDAsIDAsIAorICAgIDEzMjgxLCAxMzI4NSwgMTMyODksIDEzMjkyLCAxMzI5NiwgMTMzMDAsIDEzMzA0LCAxMzMwOCwgMTMzMTIsIDEzMzE2LCAKKyAgICAxMzMyMCwgMTMzMjQsIDEzMzI4LCAxMzMzMiwgMTMzMzYsIDEzMzQwLCAxMzM0NCwgMTMzNDgsIDEzMzUyLCAxMzM1NiwgCisgICAgMTMzNjAsIDEzMzY0LCAwLCAxMzM2NywgMTMzNzAsIDEzMzc0LCAxMzM3OCwgMTMzODIsIDEzMzg1LCAxMzM4OCwgMCwgCisgICAgMTMzOTEsIDEzMzk1LCAwLCAxMzM5OSwgMTM0MDMsIDAsIDEzNDA3LCAxMzQxMCwgMCwgMCwgMTM0MTMsIDAsIDEzNDE3LCAKKyAgICAxMzQyMiwgMTM0MjYsIDEzNDMxLCAxMzQzNSwgMCwgMCwgMCwgMCwgMTM0NDAsIDEzNDQ1LCAwLCAwLCAxMzQ1MCwgMTM0NTUsIAorICAgIDEzNDYwLCAwLCAwLCAwLCAxMzQ2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM0NjgsIDEzNDcyLCAxMzQ3NiwgMTM0ODAsIAorICAgIDAsIDEzNDg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQ4OCwgMTM0OTIsIDEzNDk1LCAxMzQ5OCwgMTM1MDEsIDEzNTA0LCAKKyAgICAxMzUwNywgMTM1MTAsIDEzNTEzLCAxMzUxNiwgMTM1MTksIDEzNTIyLCAxMzUyNSwgMTM1MjgsIDEzNTMxLCAxMzUzNiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1NDAsIDEzNTQ0LCAxMzU0OCwgMCwgMTM1NTIsIDEzNTU1LCAKKyAgICAxMzU1OSwgMTM1NjIsIDEzNTY2LCAxMzU2OSwgMTM1NzMsIDEzNTc3LCAxMzU4MSwgMCwgMTM1ODYsIDEzNTg5LCAxMzU5MywgCisgICAgMCwgMTM1OTgsIDEzNjAxLCAxMzYwNSwgMTM2MDgsIDEzNjEyLCAxMzYxNiwgMTM2MjAsIDEzNjI0LCAxMzYyOCwgMTM2MzIsIAorICAgIDEzNjM2LCAxMzY0MCwgMTM2NDQsIDEzNjQ4LCAxMzY1MiwgMTM2NTYsIDEzNjYwLCAxMzY2NCwgMTM2NjgsIDEzNjcyLCAKKyAgICAxMzY3NiwgMTM2ODAsIDAsIDEzNjgzLCAxMzY4NiwgMTM2OTAsIDEzNjk0LCAxMzY5OCwgMTM3MDEsIDEzNzA0LCAwLCAKKyAgICAxMzcwNywgMTM3MTEsIDAsIDEzNzE1LCAxMzcxOSwgMTM3MjMsIDEzNzI3LCAxMzczMCwgMCwgMCwgMTM3MzMsIDEzNzM3LCAKKyAgICAxMzc0MSwgMTM3NDYsIDEzNzUwLCAxMzc1NSwgMTM3NTksIDEzNzY0LCAxMzc2OSwgMTM3NzUsIDAsIDEzNzgxLCAxMzc4NSwgCisgICAgMTM3OTAsIDAsIDEzNzk2LCAxMzgwMCwgMTM4MDUsIDAsIDAsIDEzODA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMzgxMiwgMTM4MTcsIDEzODIyLCAxMzgyNywgMCwgMCwgMTM4MzMsIDEzODM3LCAxMzg0MCwgCisgICAgMTM4NDMsIDEzODQ2LCAxMzg0OSwgMTM4NTIsIDEzODU1LCAxMzg1OCwgMTM4NjEsIDEzODY0LCAxMzg2OCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM4NzIsIDEzODc2LCAxMzg4MCwgMCwgMTM4ODQsIDEzODg3LCAKKyAgICAxMzg5MSwgMTM4OTQsIDEzODk4LCAxMzkwMSwgMTM5MDUsIDEzOTA5LCAwLCAwLCAxMzkxMywgMTM5MTYsIDAsIDAsIAorICAgIDEzOTIwLCAxMzkyMywgMTM5MjcsIDEzOTMwLCAxMzkzNCwgMTM5MzgsIDEzOTQyLCAxMzk0NiwgMTM5NTAsIDEzOTU0LCAKKyAgICAxMzk1OCwgMTM5NjIsIDEzOTY2LCAxMzk3MCwgMTM5NzQsIDEzOTc4LCAxMzk4MiwgMTM5ODYsIDEzOTkwLCAxMzk5NCwgCisgICAgMTM5OTgsIDE0MDAyLCAwLCAxNDAwNSwgMTQwMDgsIDE0MDEyLCAxNDAxNiwgMTQwMjAsIDE0MDIzLCAxNDAyNiwgMCwgCisgICAgMTQwMjksIDE0MDMzLCAwLCAxNDAzNywgMTQwNDEsIDE0MDQ1LCAxNDA0OSwgMTQwNTIsIDAsIDAsIDE0MDU1LCAxNDA1OSwgCisgICAgMTQwNjMsIDE0MDY4LCAxNDA3MiwgMTQwNzcsIDE0MDgxLCAxNDA4NiwgMTQwOTEsIDAsIDAsIDE0MDk3LCAxNDEwMSwgMCwgCisgICAgMCwgMTQxMDYsIDE0MTEwLCAxNDExNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQxMTksIDE0MTI1LCAwLCAwLCAwLCAwLCAKKyAgICAxNDEzMSwgMTQxMzUsIDAsIDE0MTM5LCAxNDE0MywgMTQxNDgsIDE0MTUzLCAxNDE1OCwgMCwgMCwgMTQxNjQsIDE0MTY4LCAKKyAgICAxNDE3MSwgMTQxNzQsIDE0MTc3LCAxNDE4MCwgMTQxODMsIDE0MTg2LCAxNDE4OSwgMTQxOTIsIDE0MTk1LCAxNDE5OCwgCisgICAgMTQyMDIsIDE0MjA4LCAxNDIxNCwgMTQyMjAsIDE0MjI2LCAxNDIzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQyMzgsIDE0MjQyLCAwLCAxNDI0NiwgMTQyNDksIDE0MjUzLCAxNDI1NiwgMTQyNjAsIDE0MjYzLCAwLCAwLCAwLCAKKyAgICAxNDI2NywgMTQyNzAsIDE0Mjc0LCAwLCAxNDI3OCwgMTQyODEsIDE0Mjg1LCAxNDI4OSwgMCwgMCwgMCwgMTQyOTIsIAorICAgIDE0Mjk2LCAwLCAxNDMwMCwgMCwgMTQzMDQsIDE0MzA4LCAwLCAwLCAwLCAxNDMxMiwgMTQzMTYsIDAsIDAsIDAsIDE0MzIwLCAKKyAgICAxNDMyMywgMTQzMjcsIDAsIDAsIDAsIDE0MzMwLCAxNDMzMywgMTQzMzYsIDE0MzM5LCAxNDM0MywgMTQzNDcsIDE0MzUxLCAKKyAgICAxNDM1NSwgMTQzNTksIDE0MzYzLCAxNDM2NywgMTQzNzAsIDAsIDAsIDAsIDAsIDE0MzczLCAxNDM3OCwgMTQzODIsIAorICAgIDE0Mzg3LCAxNDM5MSwgMCwgMCwgMCwgMTQzOTYsIDE0NDAwLCAxNDQwNSwgMCwgMTQ0MTAsIDE0NDE0LCAxNDQxOSwgCisgICAgMTQ0MjQsIDAsIDAsIDE0NDI4LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTQ0MzcsIDE0NDQxLCAxNDQ0NCwgMTQ0NDcsIDE0NDUwLCAxNDQ1MywgMTQ0NTYsIDE0NDU5LCAKKyAgICAxNDQ2MiwgMTQ0NjUsIDE0NDY4LCAxNDQ3MiwgMTQ0NzcsIDE0NDgyLCAxNDQ4NiwgMTQ0OTAsIDE0NDk0LCAxNDQ5OCwgCisgICAgMTQ1MDIsIDE0NTA3LCAxNDUxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ1MTQsIDE0NTE4LCAxNDUyMiwgMCwgMTQ1MjYsIAorICAgIDE0NTI5LCAxNDUzMywgMTQ1MzYsIDE0NTQwLCAxNDU0MywgMTQ1NDcsIDE0NTUxLCAwLCAxNDU1NSwgMTQ1NTgsIDE0NTYyLCAKKyAgICAwLCAxNDU2NiwgMTQ1NjksIDE0NTczLCAxNDU3NywgMTQ1ODAsIDE0NTg0LCAxNDU4OCwgMTQ1OTIsIDE0NTk2LCAxNDYwMCwgCisgICAgMTQ2MDQsIDE0NjA4LCAxNDYxMiwgMTQ2MTYsIDE0NjIwLCAxNDYyNCwgMTQ2MjgsIDE0NjMyLCAxNDYzNiwgMTQ2NDAsIAorICAgIDE0NjQ0LCAxNDY0OCwgMTQ2NTIsIDAsIDE0NjU1LCAxNDY1OCwgMTQ2NjIsIDE0NjY2LCAxNDY3MCwgMTQ2NzMsIDE0Njc2LCAKKyAgICAxNDY3OSwgMTQ2ODMsIDE0Njg3LCAwLCAxNDY5MSwgMTQ2OTUsIDE0Njk5LCAxNDcwMywgMTQ3MDYsIDAsIDAsIDAsIAorICAgIDE0NzA5LCAxNDcxMywgMTQ3MTgsIDE0NzIyLCAxNDcyNywgMTQ3MzEsIDE0NzM2LCAxNDc0MSwgMCwgMTQ3NDcsIDE0NzUxLCAKKyAgICAxNDc1NiwgMCwgMTQ3NjEsIDE0NzY1LCAxNDc3MCwgMTQ3NzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0Nzc5LCAxNDc4MywgCisgICAgMCwgMTQ3ODksIDE0NzkzLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDc5NywgMTQ4MDIsIDE0ODA3LCAxNDgxMiwgMCwgMCwgCisgICAgMTQ4MTgsIDE0ODIyLCAxNDgyNSwgMTQ4MjgsIDE0ODMxLCAxNDgzNCwgMTQ4MzcsIDE0ODQwLCAxNDg0MywgMTQ4NDYsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0ODQ5LCAxNDg2MiwgMTQ4NzQsIDE0ODg2LCAxNDg5OCwgMTQ5MTAsIDE0OTIyLCAKKyAgICAxNDkzNCwgMCwgMCwgMTQ5MzgsIDE0OTQyLCAwLCAxNDk0NiwgMTQ5NDksIDE0OTUzLCAxNDk1NiwgMTQ5NjAsIDE0OTYzLCAKKyAgICAxNDk2NywgMTQ5NzEsIDAsIDE0OTc1LCAxNDk3OCwgMTQ5ODIsIDAsIDE0OTg2LCAxNDk4OSwgMTQ5OTMsIDE0OTk3LCAKKyAgICAxNTAwMCwgMTUwMDQsIDE1MDA4LCAxNTAxMiwgMTUwMTYsIDE1MDIwLCAxNTAyNCwgMTUwMjgsIDE1MDMyLCAxNTAzNiwgCisgICAgMTUwNDAsIDE1MDQ0LCAxNTA0OCwgMTUwNTIsIDE1MDU2LCAxNTA2MCwgMTUwNjQsIDE1MDY4LCAxNTA3MiwgMCwgMTUwNzUsIAorICAgIDE1MDc4LCAxNTA4MiwgMTUwODYsIDE1MDkwLCAxNTA5MywgMTUwOTYsIDE1MDk5LCAxNTEwMywgMTUxMDcsIDAsIDE1MTExLCAKKyAgICAxNTExNSwgMTUxMTksIDE1MTIzLCAxNTEyNiwgMCwgMCwgMTUxMjksIDE1MTMzLCAxNTEzNywgMTUxNDIsIDE1MTQ2LCAKKyAgICAxNTE1MSwgMTUxNTUsIDE1MTYwLCAxNTE2NSwgMCwgMTUxNzEsIDE1MTc1LCAxNTE4MCwgMCwgMTUxODUsIDE1MTg5LCAKKyAgICAxNTE5NCwgMTUxOTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MjAzLCAxNTIwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTUyMTMsIDAsIDE1MjE3LCAxNTIyMiwgMTUyMjcsIDE1MjMyLCAwLCAwLCAxNTIzOCwgMTUyNDIsIDE1MjQ1LCAxNTI0OCwgCisgICAgMTUyNTEsIDE1MjU0LCAxNTI1NywgMTUyNjAsIDE1MjYzLCAxNTI2NiwgMCwgMTUyNjksIDE1MjczLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTI3NywgMTUyODEsIDAsIDE1Mjg1LCAxNTI4OCwgMTUyOTIsIAorICAgIDE1Mjk1LCAxNTI5OSwgMTUzMDIsIDE1MzA2LCAxNTMxMCwgMCwgMTUzMTQsIDE1MzE3LCAxNTMyMSwgMCwgMTUzMjUsIAorICAgIDE1MzI4LCAxNTMzMiwgMTUzMzYsIDE1MzM5LCAxNTM0MywgMTUzNDcsIDE1MzUxLCAxNTM1NSwgMTUzNTksIDE1MzYzLCAKKyAgICAxNTM2NywgMTUzNzEsIDE1Mzc1LCAxNTM3OSwgMTUzODMsIDE1Mzg3LCAxNTM5MSwgMTUzOTUsIDE1Mzk5LCAxNTQwMywgCisgICAgMTU0MDcsIDE1NDExLCAxNTQxNCwgMTU0MTgsIDE1NDIxLCAxNTQyNSwgMTU0MjksIDE1NDMzLCAxNTQzNiwgMTU0MzksIAorICAgIDE1NDQyLCAxNTQ0NiwgMTU0NTAsIDE1NDU0LCAxNTQ1OCwgMTU0NjIsIDE1NDY2LCAxNTQ3MCwgMTU0NzMsIDE1NDc2LCAwLCAKKyAgICAwLCAxNTQ4MCwgMTU0ODQsIDE1NDg5LCAxNTQ5MywgMTU0OTgsIDE1NTAyLCAxNTUwNywgMTU1MTIsIDAsIDE1NTE4LCAKKyAgICAxNTUyMiwgMTU1MjcsIDAsIDE1NTMyLCAxNTUzNiwgMTU1NDEsIDE1NTQ2LCAxNTU1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTU1NTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NTYxLCAxNTU2NiwgMTU1NzEsIDE1NTc2LCAwLCAwLCAKKyAgICAxNTU4MiwgMTU1ODYsIDE1NTg5LCAxNTU5MiwgMTU1OTUsIDE1NTk4LCAxNTYwMSwgMTU2MDQsIDE1NjA3LCAxNTYxMCwgCisgICAgMTU2MTMsIDE1NjE3LCAxNTYyMiwgMTU2MjcsIDE1NjMzLCAxNTYzOSwgMCwgMCwgMCwgMTU2NDUsIDE1NjQ5LCAxNTY1NSwgCisgICAgMTU2NjEsIDE1NjY3LCAxNTY3MiwgMTU2NzgsIDAsIDAsIDE1Njg0LCAxNTY4OCwgMCwgMTU2OTIsIDE1Njk2LCAxNTcwMCwgCisgICAgMTU3MDQsIDE1NzA4LCAxNTcxMiwgMTU3MTYsIDE1NzIwLCAxNTcyNCwgMTU3MjgsIDE1NzMyLCAxNTczNiwgMTU3NDAsIAorICAgIDE1NzQ0LCAxNTc0OCwgMTU3NTIsIDE1NzU2LCAxNTc2MCwgMCwgMCwgMCwgMTU3NjQsIDE1NzcwLCAxNTc3NiwgMTU3ODIsIAorICAgIDE1Nzg4LCAxNTc5NCwgMTU4MDAsIDE1ODA2LCAxNTgxMiwgMTU4MTgsIDE1ODI0LCAxNTgzMCwgMTU4MzgsIDE1ODQ0LCAKKyAgICAxNTg1MCwgMTU4NTYsIDE1ODYyLCAxNTg2OCwgMTU4NzQsIDE1ODgwLCAxNTg4NiwgMTU4OTIsIDE1ODk4LCAxNTkwNCwgMCwgCisgICAgMTU5MTAsIDE1OTE2LCAxNTkyMiwgMTU5MjgsIDE1OTM0LCAxNTk0MCwgMTU5NDQsIDE1OTUwLCAxNTk1NCwgMCwgMTU5NTgsIAorICAgIDAsIDAsIDE1OTY0LCAxNTk2OCwgMTU5NzQsIDE1OTgwLCAxNTk4NiwgMTU5OTAsIDE1OTk2LCAwLCAwLCAwLCAxNjAwMCwgMCwgCisgICAgMCwgMCwgMCwgMTYwMDQsIDE2MDA5LCAxNjAxNiwgMTYwMjMsIDE2MDMwLCAxNjAzNywgMCwgMTYwNDQsIDAsIDE2MDUxLCAKKyAgICAxNjA1NiwgMTYwNjEsIDE2MDY4LCAxNjA3NSwgMTYwODQsIDE2MDk1LCAxNjEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYxMDksIDE2MTE2LCAxNjEyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTYxMjgsIDE2MTM0LCAxNjE0MCwgMTYxNDYsIDE2MTUyLCAxNjE1OCwgMTYxNjQsIDE2MTcwLCAKKyAgICAxNjE3NiwgMTYxODIsIDE2MTg4LCAxNjE5NCwgMTYyMDAsIDE2MjA2LCAxNjIxMiwgMTYyMTgsIDE2MjI0LCAxNjIzMCwgCisgICAgMTYyMzYsIDE2MjQyLCAxNjI0OCwgMTYyNTQsIDE2MjYwLCAxNjI2NiwgMTYyNzIsIDE2Mjc4LCAxNjI4NCwgMTYyOTAsIAorICAgIDE2Mjk2LCAxNjMwMiwgMTYzMDgsIDE2MzE0LCAxNjMyMCwgMTYzMjUsIDE2MzMxLCAxNjMzNywgMTYzNDEsIDE2MzQ3LCAKKyAgICAxNjM1MSwgMTYzNTcsIDE2MzYzLCAxNjM2OSwgMTYzNzUsIDE2MzgxLCAxNjM4NywgMTYzOTIsIDE2Mzk4LCAxNjQwMiwgCisgICAgMTY0MDcsIDE2NDEzLCAxNjQxOSwgMTY0MjUsIDE2NDMwLCAxNjQzNiwgMTY0NDIsIDE2NDQ4LCAxNjQ1MywgMTY0NTksIDAsIAorICAgIDAsIDAsIDAsIDE2NDYzLCAxNjQ2OSwgMTY0NzQsIDE2NDgwLCAxNjQ4NSwgMTY0OTMsIDE2NTAxLCAxNjUwNSwgMTY1MDksIAorICAgIDE2NTEzLCAxNjUxOSwgMTY1MjUsIDE2NTMxLCAxNjUzNywgMTY1NDEsIDE2NTQ1LCAxNjU0OSwgMTY1NTMsIDE2NTU3LCAKKyAgICAxNjU2MCwgMTY1NjMsIDE2NTY2LCAxNjU2OSwgMTY1NzIsIDE2NTc1LCAxNjU3OCwgMTY1ODEsIDE2NTg0LCAxNjU4OCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY1OTIsIDE2NTk3LCAwLCAxNjYwNCwgMCwgMCwgMTY2MTEsIAorICAgIDE2NjE2LCAwLCAxNjYyMSwgMCwgMCwgMTY2MjgsIDAsIDAsIDAsIDAsIDAsIDAsIDE2NjMzLCAxNjYzOCwgMTY2NDIsIAorICAgIDE2NjQ5LCAwLCAxNjY1NiwgMTY2NjEsIDE2NjY2LCAxNjY3MSwgMTY2NzgsIDE2Njg1LCAxNjY5MiwgMCwgMTY2OTksIAorICAgIDE2NzA0LCAxNjcwOSwgMCwgMTY3MTYsIDAsIDE2NzIzLCAwLCAwLCAxNjcyOCwgMTY3MzUsIDAsIDE2NzQyLCAxNjc0NiwgCisgICAgMTY3NTMsIDE2NzU3LCAxNjc2MiwgMTY3NzAsIDE2Nzc2LCAxNjc4MiwgMTY3ODcsIDE2NzkzLCAxNjc5OSwgMTY4MDUsIAorICAgIDE2ODEwLCAwLCAxNjgxNiwgMTY4MjQsIDE2ODMxLCAwLCAwLCAxNjgzOCwgMTY4NDMsIDE2ODQ5LCAxNjg1NCwgMTY4NjAsIAorICAgIDAsIDE2ODY2LCAwLCAxNjg3MiwgMTY4NzksIDE2ODg2LCAxNjg5MywgMTY5MDAsIDE2OTA1LCAwLCAwLCAxNjkwOSwgCisgICAgMTY5MTQsIDE2OTE4LCAxNjkyMiwgMTY5MjYsIDE2OTMwLCAxNjkzNCwgMTY5MzgsIDE2OTQyLCAxNjk0NiwgMCwgMCwgCisgICAgMTY5NTAsIDE2OTU2LCAxNjk2MiwgMTY5NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2OTc2LCAxNjk4MCwgMTY5OTEsIAorICAgIDE3MDA2LCAxNzAyMSwgMTcwMzEsIDE3MDQyLCAxNzA1NSwgMTcwNjYsIDE3MDcyLCAxNzA4MCwgMTcwOTAsIDE3MDk2LCAKKyAgICAxNzEwNCwgMTcxMDgsIDE3MTE0LCAxNzEyMCwgMTcxMjgsIDE3MTM4LCAxNzE0NiwgMTcxNTksIDE3MTY1LCAxNzE3MywgCisgICAgMTcxODEsIDE3MTkzLCAxNzIwMCwgMTcyMDgsIDE3MjE2LCAxNzIyNCwgMTcyMzIsIDE3MjQwLCAxNzI0OCwgMTcyNTgsIAorICAgIDE3MjYyLCAxNzI2NSwgMTcyNjgsIDE3MjcxLCAxNzI3NCwgMTcyNzcsIDE3MjgwLCAxNzI4MywgMTcyODYsIDE3Mjg5LCAKKyAgICAxNzI5MywgMTcyOTcsIDE3MzAxLCAxNzMwNSwgMTczMDksIDE3MzEzLCAxNzMxNywgMTczMjEsIDE3MzI1LCAxNzMzMCwgCisgICAgMTczMzYsIDE3MzQ2LCAxNzM2MCwgMTczNzAsIDE3Mzc2LCAxNzM4MiwgMTczOTAsIDE3Mzk4LCAxNzQwNiwgMTc0MTQsIAorICAgIDE3NDIwLCAxNzQyNiwgMTc0MjksIDE3NDMzLCAxNzQzNywgMTc0NDEsIDE3NDQ1LCAxNzQ0OSwgMTc0NTMsIDAsIDE3NDU3LCAKKyAgICAxNzQ2MSwgMTc0NjUsIDE3NDY5LCAxNzQ3MywgMTc0NzcsIDE3NDgxLCAxNzQ4NSwgMTc0ODksIDE3NDkzLCAxNzQ5NywgCisgICAgMTc1MDAsIDE3NTAzLCAxNzUwNywgMTc1MTEsIDE3NTE1LCAxNzUxOCwgMTc1MjIsIDE3NTI2LCAxNzUzMCwgMTc1MzQsIAorICAgIDE3NTM4LCAxNzU0MiwgMTc1NDYsIDE3NTUwLCAxNzU1MywgMTc1NTYsIDE3NTYwLCAxNzU2NCwgMTc1NjgsIDE3NTcxLCAKKyAgICAxNzU3NCwgMTc1NzcsIDE3NTgxLCAxNzU4NiwgMTc1OTAsIDAsIDAsIDAsIDAsIDE3NTk0LCAxNzU5OSwgMTc2MDMsIAorICAgIDE3NjA4LCAxNzYxMiwgMTc2MTcsIDE3NjIyLCAxNzYyOCwgMTc2MzMsIDE3NjM5LCAxNzY0MywgMTc2NDgsIDE3NjUyLCAKKyAgICAxNzY1NywgMTc2NjcsIDE3NjczLCAxNzY3OSwgMTc2ODYsIDE3Njk2LCAxNzcwMiwgMTc3MDYsIDE3NzEwLCAxNzcxNiwgCisgICAgMTc3MjIsIDE3NzMwLCAxNzczNiwgMTc3NDQsIDE3NzUyLCAxNzc2MCwgMTc3NzAsIDE3Nzc4LCAxNzc4OCwgMTc3OTMsIAorICAgIDE3Nzk5LCAxNzgwNSwgMTc4MTEsIDE3ODE3LCAxNzgyMywgMTc4MjksIDAsIDE3ODM1LCAxNzg0MSwgMTc4NDcsIDE3ODUzLCAKKyAgICAxNzg1OSwgMTc4NjUsIDE3ODcxLCAxNzg3NywgMTc4ODMsIDE3ODg5LCAxNzg5NSwgMTc5MDAsIDE3OTA1LCAxNzkxMSwgCisgICAgMTc5MTcsIDE3OTIzLCAxNzkyOCwgMTc5MzQsIDE3OTQwLCAxNzk0NiwgMTc5NTIsIDE3OTU4LCAxNzk2NCwgMTc5NzAsIAorICAgIDE3OTc2LCAxNzk4MSwgMTc5ODYsIDE3OTkyLCAxNzk5OCwgMTgwMDQsIDE4MDA5LCAxODAxNCwgMTgwMTksIDE4MDI1LCAKKyAgICAxODAzMywgMTgwNDAsIDAsIDE4MDQ3LCAxODA1NCwgMTgwNjcsIDE4MDc0LCAxODA4MSwgMTgwODksIDE4MDk3LCAxODEwMywgCisgICAgMTgxMDksIDE4MTE1LCAxODEyNSwgMTgxMzAsIDE4MTM2LCAxODE0NiwgMTgxNTYsIDAsIDE4MTY2LCAxODE3NiwgMTgxODQsIAorICAgIDE4MTk2LCAxODIwOCwgMTgyMTQsIDE4MjI4LCAxODI0MywgMTgyNDgsIDE4MjUzLCAxODI2MSwgMTgyNjksIDE4Mjc3LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODI4NSwgMTgyODgsIDE4MjkyLCAxODI5NiwgMTgzMDAsIAorICAgIDE4MzA0LCAxODMwOCwgMTgzMTIsIDE4MzE2LCAxODMyMCwgMTgzMjQsIDE4MzI4LCAxODMzMiwgMTgzMzYsIDE4MzQwLCAKKyAgICAxODM0NCwgMTgzNDgsIDE4MzUyLCAxODM1NiwgMTgzNjAsIDE4MzY0LCAxODM2NywgMTgzNzAsIDE4Mzc0LCAxODM3OCwgCisgICAgMTgzODIsIDE4Mzg1LCAxODM4OCwgMTgzOTEsIDE4Mzk1LCAxODM5OSwgMTg0MDIsIDE4NDA1LCAxODQwOSwgMTg0MTIsIAorICAgIDE4NDE3LCAxODQyMCwgMTg0MjQsIDE4NDI3LCAxODQzMSwgMTg0MzQsIDE4NDM5LCAxODQ0MiwgMTg0NDYsIDE4NDUzLCAKKyAgICAxODQ1OCwgMTg0NjIsIDE4NDY3LCAxODQ3MSwgMTg0NzYsIDE4NDgwLCAxODQ4NSwgMTg0OTIsIDE4NDk4LCAxODUwMywgCisgICAgMTg1MDcsIDE4NTExLCAxODUxNSwgMTg1MTksIDE4NTIzLCAxODUyOCwgMTg1MzMsIDE4NTM5LCAxODU0NCwgMTg1NDksIAorICAgIDE4NTUzLCAxODU1NiwgMTg1NTksIDE4NTYyLCAxODU2NSwgMTg1NjgsIDE4NTcxLCAxODU3NCwgMTg1NzcsIDE4NTgwLCAKKyAgICAxODU4NiwgMTg1OTAsIDE4NTk0LCAxODU5OCwgMTg2MDIsIDE4NjA2LCAxODYxMCwgMTg2MTQsIDE4NjE4LCAxODYyMywgCisgICAgMTg2MjcsIDE4NjMyLCAxODYzNywgMTg2NDMsIDE4NjQ4LCAxODY1NCwgMTg2NjAsIDE4NjY2LCAxODY3MiwgMTg2NzgsIAorICAgIDE4Njg1LCAxODY5MiwgMTg3MDAsIDE4NzA4LCAxODcxNywgMTg3MjYsIDE4NzM3LCAxODc0NywgMTg3NTcsIDE4NzY4LCAKKyAgICAxODc3OSwgMTg3ODksIDE4Nzk5LCAxODgwOSwgMTg4MTksIDE4ODI5LCAxODgzOSwgMTg4NDksIDE4ODU5LCAxODg2NywgCisgICAgMTg4NzQsIDE4ODgwLCAxODg4NywgMTg4OTIsIDE4ODk4LCAxODkwNCwgMTg5MTAsIDE4OTE2LCAxODkyMiwgMTg5MjgsIAorICAgIDE4OTMzLCAxODkzOSwgMTg5NDUsIDE4OTUxLCAxODk1NywgMTg5NjIsIDE4OTcwLCAxODk3NywgMTg5ODMsIDE4OTkwLCAKKyAgICAxODk5OCwgMTkwMDQsIDE5MDEwLCAxOTAxNiwgMTkwMjIsIDE5MDMwLCAxOTAzOCwgMTkwNDgsIDE5MDU2LCAxOTA2NCwgCisgICAgMTkwNzAsIDE5MDc1LCAxOTA4MCwgMTkwODUsIDE5MDkwLCAxOTA5NSwgMTkxMDAsIDE5MTA1LCAxOTExMCwgMTkxMTUsIAorICAgIDE5MTIxLCAxOTEyNywgMTkxMzMsIDE5MTQwLCAxOTE0NSwgMTkxNTEsIDE5MTU2LCAxOTE2MSwgMTkxNjYsIDE5MTcxLCAKKyAgICAxOTE3NiwgMTkxODEsIDE5MTg2LCAxOTE5MSwgMTkxOTYsIDE5MjAxLCAxOTIwNiwgMTkyMTEsIDE5MjE2LCAxOTIyMSwgCisgICAgMTkyMjYsIDE5MjMxLCAxOTIzNiwgMTkyNDEsIDE5MjQ2LCAxOTI1MSwgMTkyNTYsIDE5MjYxLCAxOTI2NiwgMTkyNzEsIAorICAgIDE5Mjc2LCAxOTI4MSwgMTkyODYsIDE5MjkxLCAxOTI5NiwgMTkzMDEsIDE5MzA2LCAxOTMxMSwgMTkzMTYsIDE5MzIxLCAKKyAgICAxOTMyNiwgMTkzMzEsIDE5MzM2LCAwLCAxOTM0MSwgMCwgMCwgMCwgMCwgMCwgMTkzNDYsIDAsIDAsIDE5MzUxLCAxOTM1NSwgCisgICAgMTkzNTksIDE5MzYzLCAxOTM2NywgMTkzNzEsIDE5Mzc1LCAxOTM3OSwgMTkzODMsIDE5Mzg3LCAxOTM5MSwgMTkzOTUsIAorICAgIDE5Mzk5LCAxOTQwMywgMTk0MDcsIDE5NDExLCAxOTQxNSwgMTk0MTksIDE5NDIzLCAxOTQyNywgMTk0MzEsIDE5NDM1LCAKKyAgICAxOTQzOSwgMTk0NDMsIDE5NDQ3LCAxOTQ1MSwgMTk0NTUsIDE5NDU5LCAxOTQ2MywgMTk0NjcsIDE5NDcxLCAxOTQ3NSwgCisgICAgMTk0NzksIDE5NDgzLCAxOTQ4NywgMTk0OTEsIDE5NDk1LCAxOTQ5OSwgMTk1MDMsIDE5NTA3LCAxOTUxMSwgMTk1MTUsIAorICAgIDE5NTIxLCAxOTUyNSwgMTk1MzAsIDE5NTM1LCAxOTUzOSwgMTk1NDQsIDE5NTQ5LCAxOTU1MywgMTk1NTcsIDE5NTYxLCAKKyAgICAxOTU2NSwgMTk1NjksIDE5NTczLCAxOTU3NywgMTk1ODEsIDE5NTg1LCAxOTU4OSwgMTk1OTMsIDE5NTk3LCAxOTYwMSwgCisgICAgMTk2MDUsIDE5NjA5LCAxOTYxMywgMTk2MTcsIDE5NjIxLCAxOTYyNSwgMTk2MjksIDE5NjMzLCAxOTYzNywgMTk2NDEsIAorICAgIDE5NjQ1LCAxOTY0OSwgMTk2NTMsIDE5NjU3LCAxOTY2MSwgMTk2NjUsIDE5NjY5LCAxOTY3MywgMTk2NzcsIDE5NjgxLCAKKyAgICAxOTY4NSwgMTk2ODksIDE5NjkzLCAxOTY5NywgMTk3MDEsIDE5NzA1LCAxOTcwOSwgMTk3MTMsIDE5NzE3LCAxOTcyMSwgCisgICAgMTk3MjUsIDE5NzI5LCAxOTczMywgMTk3MzcsIDE5NzQxLCAxOTc0NSwgMTk3NDksIDE5NzUzLCAxOTc1NywgMTk3NjEsIAorICAgIDE5NzY1LCAxOTc2OSwgMTk3NzMsIDE5Nzc3LCAxOTc4MSwgMTk3ODUsIDE5Nzg5LCAxOTc5MywgMTk3OTcsIDE5ODAxLCAKKyAgICAxOTgwNSwgMTk4MDksIDE5ODEzLCAxOTgxNywgMTk4MjEsIDE5ODI1LCAxOTgyOSwgMTk4MzMsIDE5ODM3LCAxOTg0MSwgCisgICAgMTk4NDUsIDE5ODQ5LCAxOTg1MywgMTk4NTcsIDE5ODYxLCAxOTg2NSwgMTk4NjksIDE5ODczLCAxOTg3NywgMTk4ODEsIAorICAgIDE5ODg1LCAxOTg4OSwgMTk4OTMsIDE5ODk3LCAxOTkwMSwgMTk5MDUsIDE5OTA5LCAxOTkxMywgMTk5MTcsIDE5OTIxLCAKKyAgICAxOTkyNSwgMTk5MjksIDE5OTMzLCAxOTkzNywgMTk5NDAsIDE5OTQ0LCAxOTk0NywgMTk5NTEsIDE5OTU1LCAxOTk1OCwgCisgICAgMTk5NjIsIDE5OTY2LCAxOTk2OSwgMTk5NzMsIDE5OTc3LCAxOTk4MSwgMTk5ODUsIDE5OTg4LCAxOTk5MiwgMTk5OTYsIAorICAgIDIwMDAwLCAyMDAwNCwgMjAwMDgsIDIwMDEyLCAyMDAxNSwgMjAwMTksIDIwMDIzLCAyMDAyNywgMjAwMzEsIDIwMDM1LCAKKyAgICAyMDAzOSwgMjAwNDMsIDIwMDQ3LCAyMDA1MSwgMjAwNTUsIDIwMDU5LCAyMDA2MywgMjAwNjcsIDIwMDcxLCAyMDA3NSwgCisgICAgMjAwNzksIDIwMDgzLCAyMDA4NywgMjAwOTEsIDIwMDk1LCAyMDA5OSwgMjAxMDMsIDIwMTA3LCAyMDExMSwgMjAxMTUsIAorICAgIDIwMTE5LCAyMDEyMywgMjAxMjcsIDIwMTMxLCAyMDEzNSwgMjAxMzksIDIwMTQzLCAyMDE0NywgMjAxNTEsIDIwMTU1LCAKKyAgICAyMDE1OSwgMjAxNjMsIDIwMTY3LCAyMDE3MSwgMjAxNzUsIDIwMTc5LCAyMDE4MywgMjAxODcsIDIwMTkxLCAyMDE5NSwgCisgICAgMjAxOTksIDIwMjAzLCAyMDIwNywgMjAyMTEsIDIwMjE1LCAyMDIxOSwgMjAyMjMsIDIwMjI3LCAyMDIzMSwgMjAyMzUsIAorICAgIDIwMjM5LCAyMDI0MywgMjAyNDcsIDIwMjUxLCAyMDI1NSwgMjAyNTksIDIwMjYzLCAyMDI2NywgMjAyNzEsIDIwMjc1LCAKKyAgICAyMDI3OSwgMjAyODMsIDIwMjg3LCAyMDI5MSwgMjAyOTUsIDIwMjk5LCAyMDMwMywgMjAzMDcsIDIwMzExLCAyMDMxNSwgCisgICAgMjAzMTksIDIwMzIzLCAyMDMyNywgMjAzMzEsIDIwMzM1LCAyMDMzOSwgMjAzNDMsIDIwMzQ3LCAyMDM1MSwgMjAzNTUsIAorICAgIDIwMzU5LCAyMDM2MywgMjAzNjcsIDIwMzcxLCAyMDM3NSwgMjAzNzksIDIwMzgzLCAyMDM4NywgMjAzOTEsIDIwMzk1LCAKKyAgICAyMDM5OSwgMjA0MDMsIDIwNDA3LCAyMDQxMSwgMjA0MTUsIDIwNDE5LCAyMDQyMywgMjA0MjcsIDIwNDMxLCAyMDQzNSwgCisgICAgMjA0MzksIDIwNDQzLCAyMDQ0NywgMjA0NTEsIDIwNDU1LCAyMDQ1OSwgMjA0NjMsIDIwNDY3LCAyMDQ3MSwgMjA0NzUsIAorICAgIDIwNDc5LCAyMDQ4MywgMjA0ODcsIDIwNDkxLCAyMDQ5NSwgMjA0OTksIDIwNTAzLCAyMDUwNywgMjA1MTEsIDIwNTE1LCAKKyAgICAyMDUxOSwgMjA1MjMsIDIwNTI3LCAyMDUzMSwgMjA1MzUsIDIwNTM5LCAyMDU0MywgMjA1NDcsIDIwNTUxLCAyMDU1NSwgCisgICAgMjA1NTksIDIwNTYzLCAyMDU2NywgMjA1NzAsIDIwNTc0LCAyMDU3OCwgMjA1ODIsIDIwNTg2LCAyMDU5MCwgMjA1OTQsIAorICAgIDIwNTk4LCAyMDYwMiwgMjA2MDYsIDIwNjEwLCAyMDYxNCwgMjA2MTgsIDIwNjIyLCAyMDYyNiwgMjA2MzAsIDIwNjM0LCAKKyAgICAyMDYzOCwgMjA2NDIsIDIwNjQ2LCAyMDY1MCwgMjA2NTQsIDIwNjU4LCAyMDY2MiwgMjA2NjUsIDIwNjY5LCAyMDY3MywgCisgICAgMjA2NzcsIDIwNjgxLCAyMDY4NSwgMjA2ODksIDIwNjkzLCAyMDY5NywgMjA3MDEsIDIwNzA1LCAyMDcwOSwgMjA3MTMsIAorICAgIDIwNzE3LCAyMDcyMSwgMjA3MjUsIDIwNzI4LCAyMDczMiwgMjA3MzYsIDIwNzQwLCAyMDc0NCwgMjA3NDgsIDIwNzUyLCAKKyAgICAyMDc1NiwgMjA3NTksIDIwNzYzLCAyMDc2NywgMjA3NzEsIDIwNzc1LCAyMDc3OSwgMjA3ODMsIDIwNzg3LCAyMDc5MSwgCisgICAgMjA3OTUsIDIwNzk5LCAyMDgwMywgMjA4MDcsIDIwODExLCAyMDgxNSwgMjA4MTksIDIwODIzLCAyMDgyNywgMjA4MzEsIAorICAgIDIwODM1LCAyMDgzOSwgMjA4NDMsIDIwODQ3LCAyMDg1MSwgMCwgMjA4NTUsIDIwODU5LCAyMDg2MywgMjA4NjcsIDAsIDAsIAorICAgIDIwODcxLCAyMDg3NSwgMjA4NzksIDIwODgzLCAyMDg4NywgMjA4OTEsIDIwODk1LCAwLCAyMDg5OSwgMCwgMjA5MDMsIAorICAgIDIwOTA3LCAyMDkxMSwgMjA5MTUsIDAsIDAsIDIwOTE5LCAyMDkyMywgMjA5MjcsIDIwOTMxLCAyMDkzNSwgMjA5MzksIAorICAgIDIwOTQzLCAyMDk0NywgMjA5NTEsIDIwOTU1LCAyMDk1OSwgMjA5NjMsIDIwOTY3LCAyMDk3MSwgMjA5NzUsIDIwOTc5LCAKKyAgICAyMDk4MywgMjA5ODcsIDIwOTkxLCAyMDk5NSwgMjA5OTksIDIxMDAzLCAyMTAwNywgMjEwMTAsIDIxMDE0LCAyMTAxOCwgCisgICAgMjEwMjIsIDIxMDI2LCAyMTAzMCwgMjEwMzQsIDIxMDM4LCAyMTA0MiwgMjEwNDYsIDIxMDUwLCAyMTA1NCwgMjEwNTgsIAorICAgIDIxMDYyLCAyMTA2NiwgMjEwNzAsIDIxMDc0LCAyMTA3OCwgMCwgMjEwODIsIDIxMDg2LCAyMTA5MCwgMjEwOTQsIDAsIDAsIAorICAgIDIxMDk4LCAyMTEwMSwgMjExMDUsIDIxMTA5LCAyMTExMywgMjExMTcsIDIxMTIxLCAyMTEyNSwgMjExMjksIDIxMTMzLCAKKyAgICAyMTEzNywgMjExNDEsIDIxMTQ1LCAyMTE0OSwgMjExNTMsIDIxMTU3LCAyMTE2MSwgMjExNjYsIDIxMTcxLCAyMTE3NiwgCisgICAgMjExODIsIDIxMTg4LCAyMTE5MywgMjExOTgsIDIxMjA0LCAyMTIwNywgMjEyMTEsIDIxMjE1LCAyMTIxOSwgMjEyMjMsIAorICAgIDIxMjI3LCAyMTIzMSwgMjEyMzUsIDAsIDIxMjM5LCAyMTI0MywgMjEyNDcsIDIxMjUxLCAwLCAwLCAyMTI1NSwgMjEyNTksIAorICAgIDIxMjYzLCAyMTI2NywgMjEyNzEsIDIxMjc1LCAyMTI3OSwgMCwgMjEyODMsIDAsIDIxMjg3LCAyMTI5MSwgMjEyOTUsIAorICAgIDIxMjk5LCAwLCAwLCAyMTMwMywgMjEzMDcsIDIxMzExLCAyMTMxNSwgMjEzMTksIDIxMzIzLCAyMTMyNywgMjEzMzEsIAorICAgIDIxMzM1LCAyMTM0MCwgMjEzNDUsIDIxMzUwLCAyMTM1NiwgMjEzNjIsIDIxMzY3LCAwLCAyMTM3MiwgMjEzNzYsIDIxMzgwLCAKKyAgICAyMTM4NCwgMjEzODgsIDIxMzkyLCAyMTM5NiwgMjE0MDAsIDIxNDA0LCAyMTQwOCwgMjE0MTIsIDIxNDE2LCAyMTQyMCwgCisgICAgMjE0MjQsIDIxNDI4LCAyMTQzMiwgMjE0MzYsIDIxNDM5LCAyMTQ0MywgMjE0NDcsIDIxNDUxLCAyMTQ1NSwgMjE0NTksIAorICAgIDIxNDYzLCAyMTQ2NywgMjE0NzEsIDIxNDc1LCAyMTQ3OSwgMjE0ODMsIDIxNDg3LCAyMTQ5MSwgMjE0OTUsIDIxNDk5LCAKKyAgICAyMTUwMywgMjE1MDcsIDIxNTExLCAyMTUxNSwgMjE1MTksIDIxNTIzLCAyMTUyNywgMjE1MzEsIDIxNTM1LCAyMTUzOSwgCisgICAgMjE1NDMsIDIxNTQ3LCAyMTU1MSwgMjE1NTUsIDIxNTU5LCAyMTU2MywgMjE1NjcsIDIxNTcxLCAyMTU3NSwgMjE1NzksIAorICAgIDIxNTgzLCAyMTU4NywgMjE1OTEsIDIxNTk1LCAwLCAyMTU5OSwgMjE2MDMsIDIxNjA3LCAyMTYxMSwgMCwgMCwgMjE2MTUsIAorICAgIDIxNjE5LCAyMTYyMywgMjE2MjcsIDIxNjMxLCAyMTYzNSwgMjE2MzksIDIxNjQzLCAyMTY0NywgMjE2NTEsIDIxNjU1LCAKKyAgICAyMTY1OSwgMjE2NjMsIDIxNjY3LCAyMTY3MSwgMjE2NzUsIDIxNjc5LCAyMTY4MywgMjE2ODcsIDIxNjkxLCAyMTY5NSwgCisgICAgMjE2OTksIDIxNzAzLCAyMTcwNywgMjE3MTEsIDIxNzE1LCAyMTcxOSwgMjE3MjMsIDIxNzI3LCAyMTczMSwgMjE3MzUsIAorICAgIDIxNzM5LCAyMTc0MywgMjE3NDcsIDIxNzUxLCAyMTc1NSwgMjE3NTksIDIxNzYzLCAyMTc2NywgMjE3NzEsIDIxNzc1LCAKKyAgICAyMTc3OSwgMjE3ODMsIDIxNzg3LCAyMTc5MSwgMjE3OTUsIDIxNzk5LCAyMTgwMywgMjE4MDcsIDIxODExLCAyMTgxNSwgCisgICAgMjE4MTksIDIxODIzLCAyMTgyNywgMjE4MzEsIDIxODM1LCAyMTgzOSwgMjE4NDIsIDIxODQ2LCAyMTg1MCwgMjE4NTQsIAorICAgIDIxODU4LCAyMTg2MiwgMjE4NjYsIDIxODcwLCAyMTg3NCwgMjE4NzgsIDAsIDAsIDIxODgyLCAyMTg5MSwgMjE4OTcsIAorICAgIDIxOTAyLCAyMTkwNiwgMjE5MDksIDIxOTE0LCAyMTkxNywgMjE5MjAsIDIxOTIzLCAyMTkyOCwgMjE5MzIsIDIxOTM3LCAKKyAgICAyMTk0MCwgMjE5NDMsIDIxOTQ2LCAyMTk0OSwgMjE5NTIsIDIxOTU1LCAyMTk1OCwgMjE5NjEsIDIxOTY0LCAyMTk2OCwgCisgICAgMjE5NzIsIDIxOTc2LCAyMTk4MCwgMjE5ODQsIDIxOTg4LCAyMTk5MiwgMjE5OTYsIDIyMDAwLCAyMjAwNCwgMCwgMCwgMCwgCisgICAgMjIwMTAsIDIyMDE2LCAyMjAyMCwgMjIwMjQsIDIyMDI4LCAyMjAzNCwgMjIwMzgsIDIyMDQyLCAyMjA0NiwgMjIwNTIsIAorICAgIDIyMDU2LCAyMjA2MCwgMjIwNjQsIDIyMDcwLCAyMjA3NCwgMjIwNzgsIDIyMDgyLCAyMjA4OCwgMjIwOTQsIDIyMTAwLCAKKyAgICAyMjEwOCwgMjIxMTQsIDIyMTIwLCAyMjEyNiwgMjIxMzIsIDIyMTM4LCAwLCAwLCAwLCAwLCAwLCAwLCAyMjE0NCwgMjIxNDcsIAorICAgIDIyMTUwLCAyMjE1MywgMjIxNTYsIDIyMTU5LCAyMjE2MywgMjIxNjcsIDIyMTcwLCAyMjE3NCwgMjIxNzgsIDIyMTgyLCAKKyAgICAyMjE4NiwgMjIxOTAsIDIyMTkzLCAyMjE5NywgMjIyMDEsIDIyMjA1LCAyMjIwOSwgMjIyMTMsIDIyMjE3LCAyMjIyMSwgCisgICAgMjIyMjUsIDIyMjI5LCAyMjIzMywgMjIyMzcsIDIyMjQwLCAyMjI0NCwgMjIyNDgsIDIyMjUyLCAyMjI1NiwgMjIyNTksIAorICAgIDIyMjYzLCAyMjI2NywgMjIyNzEsIDIyMjc1LCAyMjI3OSwgMjIyODMsIDIyMjg3LCAyMjI5MSwgMjIyOTUsIDIyMjk5LCAKKyAgICAyMjMwMywgMjIzMDcsIDIyMzExLCAyMjMxNCwgMjIzMTgsIDIyMzIyLCAyMjMyNiwgMjIzMzAsIDIyMzM0LCAyMjMzOCwgCisgICAgMjIzNDIsIDIyMzQ2LCAyMjM1MCwgMjIzNTQsIDIyMzU4LCAyMjM2MiwgMjIzNjYsIDIyMzcwLCAyMjM3NCwgMjIzNzgsIAorICAgIDIyMzgyLCAyMjM4NiwgMjIzOTAsIDIyMzk0LCAyMjM5OCwgMjI0MDIsIDIyNDA2LCAyMjQxMCwgMjI0MTQsIDIyNDE4LCAKKyAgICAyMjQyMiwgMjI0MjYsIDIyNDMwLCAyMjQzNCwgMjI0MzgsIDIyNDQyLCAyMjQ0NiwgMjI0NTAsIDIyNDUzLCAyMjQ1NywgCisgICAgMjI0NjEsIDIyNDY1LCAyMjQ2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjI0NzMsIDIyNDc3LCAKKyAgICAyMjQ4MCwgMjI0ODQsIDIyNDg3LCAyMjQ5MSwgMjI0OTQsIDIyNDk4LCAyMjUwNCwgMjI1MDksIDIyNTEzLCAyMjUxNiwgCisgICAgMjI1MjAsIDIyNTI0LCAyMjUyOSwgMjI1MzMsIDIyNTM4LCAyMjU0MiwgMjI1NDcsIDIyNTUxLCAyMjU1NiwgMjI1NjAsIAorICAgIDIyNTY1LCAyMjU3MSwgMjI1NzUsIDIyNTgwLCAyMjU4NCwgMjI1ODksIDIyNTk1LCAyMjU5OSwgMjI2MDUsIDIyNjExLCAKKyAgICAyMjYxNSwgMjI2MjAsIDIyNjI4LCAyMjYzNiwgMjI2NDMsIDIyNjQ4LCAyMjY1MywgMjI2NjIsIDIyNjY5LCAyMjY3NiwgCisgICAgMjI2ODEsIDIyNjg3LCAyMjY5MSwgMjI2OTUsIDIyNjk5LCAyMjcwMywgMjI3MDcsIDIyNzExLCAyMjcxNSwgMjI3MTksIAorICAgIDIyNzIzLCAyMjcyNywgMjI3MzMsIDIyNzM4LCAyMjc0MywgMjI3NDYsIDIyNzUwLCAyMjc1NCwgMjI3NTksIDIyNzYzLCAKKyAgICAyMjc2OCwgMjI3NzIsIDIyNzc3LCAyMjc4MSwgMjI3ODYsIDIyNzkwLCAyMjc5NSwgMjI3OTksIDIyODA0LCAyMjgwOCwgCisgICAgMjI4MTMsIDIyODE5LCAyMjgyMywgMjI4MjgsIDIyODMzLCAyMjgzNywgMjI4NDEsIDIyODQ1LCAyMjg0OSwgMjI4NTIsIAorICAgIDIyODU2LCAyMjg2MiwgMjI4NjcsIDIyODcyLCAyMjg3NiwgMjI4ODAsIDIyODg0LCAyMjg4OSwgMjI4OTMsIDIyODk4LCAKKyAgICAyMjkwMiwgMjI5MDcsIDIyOTEwLCAyMjkxNCwgMjI5MTgsIDIyOTIzLCAyMjkyNywgMjI5MzIsIDIyOTM2LCAyMjk0MSwgCisgICAgMjI5NDcsIDIyOTUxLCAyMjk1NSwgMjI5NTksIDIyOTYzLCAyMjk2NywgMjI5NzEsIDIyOTc1LCAyMjk3OSwgMjI5ODMsIAorICAgIDIyOTg3LCAyMjk5MSwgMjI5OTcsIDIzMDAwLCAyMzAwNCwgMjMwMDgsIDIzMDEzLCAyMzAxNywgMjMwMjIsIDIzMDI2LCAKKyAgICAyMzAzMSwgMjMwMzUsIDIzMDQwLCAyMzA0NCwgMjMwNDksIDIzMDUzLCAyMzA1OCwgMjMwNjIsIDIzMDY3LCAyMzA3MywgCisgICAgMjMwNzcsIDIzMDgxLCAyMzA4NywgMjMwOTMsIDIzMDk5LCAyMzEwNSwgMjMxMDksIDIzMTEzLCAyMzExNywgMjMxMjEsIAorICAgIDIzMTI1LCAyMzEyOSwgMjMxMzUsIDIzMTM5LCAyMzE0MywgMjMxNDcsIDIzMTUyLCAyMzE1NiwgMjMxNjEsIDIzMTY1LCAKKyAgICAyMzE3MCwgMjMxNzQsIDIzMTc5LCAyMzE4MywgMjMxODgsIDIzMTkyLCAyMzE5NywgMjMyMDEsIDIzMjA2LCAyMzIxMiwgCisgICAgMjMyMTYsIDIzMjIyLCAyMzIyNiwgMjMyMzAsIDIzMjM0LCAyMzIzOCwgMjMyNDIsIDIzMjQ2LCAyMzI1MiwgMjMyNTUsIAorICAgIDIzMjU5LCAyMzI2MywgMjMyNjgsIDIzMjcyLCAyMzI3NywgMjMyODEsIDIzMjg2LCAyMzI5MCwgMjMyOTUsIDIzMjk5LCAKKyAgICAyMzMwNCwgMjMzMDgsIDIzMzEzLCAyMzMxNywgMjMzMjIsIDIzMzI4LCAyMzMzMSwgMjMzMzUsIDIzMzM5LCAyMzM0NCwgCisgICAgMjMzNDksIDIzMzUzLCAyMzM1NywgMjMzNjEsIDIzMzY1LCAyMzM2OSwgMjMzNzMsIDIzMzc5LCAyMzM4MiwgMjMzODYsIAorICAgIDIzMzkwLCAyMzM5NSwgMjMzOTksIDIzNDA0LCAyMzQwOCwgMjM0MTMsIDIzNDE5LCAyMzQyMywgMjM0MjgsIDIzNDMyLCAKKyAgICAyMzQzNiwgMjM0NDAsIDIzNDQ0LCAyMzQ0OCwgMjM0NTIsIDIzNDU2LCAyMzQ2MiwgMjM0NjYsIDIzNDcwLCAyMzQ3NCwgCisgICAgMjM0NzksIDIzNDgzLCAyMzQ4OCwgMjM0OTIsIDIzNDk3LCAyMzUwMSwgMjM1MDYsIDIzNTEwLCAyMzUxNSwgMjM1MTksIAorICAgIDIzNTI0LCAyMzUyOCwgMjM1MzMsIDIzNTM2LCAyMzU0MCwgMjM1NDQsIDIzNTQ4LCAyMzU1MiwgMjM1NTYsIDIzNTYwLCAKKyAgICAyMzU2NCwgMjM1NjgsIDIzNTc0LCAyMzU3NywgMjM1ODEsIDIzNTg1LCAyMzU5MCwgMjM1OTQsIDIzNTk5LCAyMzYwMywgCisgICAgMjM2MDgsIDIzNjEyLCAyMzYxNywgMjM2MjEsIDIzNjI2LCAyMzYzMCwgMjM2MzUsIDIzNjM5LCAyMzY0NCwgMjM2NTAsIAorICAgIDIzNjU0LCAyMzY2MCwgMjM2NjQsIDIzNjcwLCAyMzY3NiwgMjM2ODIsIDIzNjg4LCAyMzY5NCwgMjM3MDAsIDIzNzA2LCAKKyAgICAyMzcxMiwgMjM3MTYsIDIzNzIwLCAyMzcyNCwgMjM3MjgsIDIzNzMyLCAyMzczNiwgMjM3NDAsIDIzNzQ0LCAyMzc0OSwgCisgICAgMjM3NTMsIDIzNzU4LCAyMzc2MiwgMjM3NjcsIDIzNzcxLCAyMzc3NiwgMjM3ODAsIDIzNzg1LCAyMzc4OSwgMjM3OTQsIAorICAgIDIzNzk4LCAyMzgwMywgMjM4MDcsIDIzODExLCAyMzgxNSwgMjM4MTksIDIzODIzLCAyMzgyNywgMjM4MzEsIDIzODM3LCAKKyAgICAyMzg0MCwgMjM4NDQsIDIzODQ4LCAyMzg1MywgMjM4NTcsIDIzODYyLCAyMzg2NiwgMjM4NzEsIDIzODc1LCAyMzg4MCwgCisgICAgMjM4ODQsIDIzODg5LCAyMzg5MywgMjM4OTgsIDIzOTAyLCAyMzkwNywgMjM5MTMsIDIzOTE3LCAyMzkyMywgMjM5MjgsIAorICAgIDIzOTM0LCAyMzkzOCwgMjM5NDQsIDIzOTQ5LCAyMzk1MywgMjM5NTcsIDIzOTYxLCAyMzk2NSwgMjM5NjksIDIzOTc0LCAKKyAgICAyMzk3NywgMjM5ODEsIDIzOTg2LCAyMzk5MCwgMjM5OTUsIDIzOTk4LCAyNDAwMiwgMjQwMDYsIDI0MDEwLCAyNDAxNCwgCisgICAgMjQwMTgsIDI0MDIyLCAyNDAyNiwgMjQwMzAsIDI0MDM0LCAyNDAzOCwgMjQwNDIsIDI0MDQ3LCAyNDA1MSwgMjQwNTUsIAorICAgIDI0MDYxLCAyNDA2NSwgMjQwNzEsIDI0MDc1LCAyNDA4MSwgMjQwODUsIDI0MDg5LCAyNDA5MywgMjQwOTcsIDI0MTAxLCAKKyAgICAyNDEwNiwgMjQxMTAsIDI0MTE0LCAyNDExOCwgMjQxMjIsIDI0MTI2LCAyNDEzMCwgMjQxMzQsIDI0MTM4LCAyNDE0MiwgCisgICAgMjQxNDYsIDI0MTUyLCAyNDE1OCwgMjQxNjQsIDI0MTcwLCAyNDE3NiwgMjQxODEsIDI0MTg3LCAyNDE5MywgMjQxOTksIAorICAgIDI0MjAzLCAyNDIwNywgMjQyMTEsIDI0MjE1LCAyNDIxOSwgMjQyMjMsIDI0MjI3LCAyNDIzMSwgMjQyMzUsIDI0MjM5LCAKKyAgICAyNDI0MywgMjQyNDcsIDI0MjUxLCAyNDI1NiwgMjQyNjEsIDI0MjY2LCAyNDI3MCwgMjQyNzQsIDI0Mjc4LCAyNDI4MiwgCisgICAgMjQyODYsIDI0MjkwLCAyNDI5NCwgMjQyOTgsIDI0MzAyLCAyNDMwNiwgMjQzMTIsIDI0MzE4LCAyNDMyNCwgMjQzMzAsIAorICAgIDI0MzM2LCAyNDM0MiwgMjQzNDgsIDI0MzU0LCAyNDM2MCwgMjQzNjQsIDI0MzY4LCAyNDM3MiwgMjQzNzYsIDI0MzgwLCAKKyAgICAyNDM4NCwgMjQzODgsIDI0Mzk0LCAyNDQwMCwgMjQ0MDYsIDI0NDEyLCAyNDQxOCwgMjQ0MjQsIDI0NDMwLCAyNDQzNiwgCisgICAgMjQ0NDIsIDI0NDQ3LCAyNDQ1MiwgMjQ0NTcsIDI0NDYyLCAyNDQ2OCwgMjQ0NzQsIDI0NDgwLCAyNDQ4NiwgMjQ0OTIsIAorICAgIDI0NDk4LCAyNDUwNCwgMjQ1MDksIDI0NTE1LCAyNDUyMSwgMjQ1MjcsIDI0NTMyLCAyNDUzOCwgMjQ1NDQsIDI0NTUwLCAKKyAgICAyNDU1NSwgMjQ1NjAsIDI0NTY1LCAyNDU3MCwgMjQ1NzUsIDI0NTgwLCAyNDU4NSwgMjQ1OTAsIDI0NTk1LCAyNDYwMCwgCisgICAgMjQ2MDUsIDI0NjEwLCAyNDYxNCwgMjQ2MTksIDI0NjI0LCAyNDYyOSwgMjQ2MzQsIDI0NjM5LCAyNDY0NCwgMjQ2NDksIAorICAgIDI0NjU0LCAyNDY1OSwgMjQ2NjQsIDI0NjY5LCAyNDY3NCwgMjQ2NzksIDI0Njg0LCAyNDY4OSwgMjQ2OTQsIDI0Njk5LCAKKyAgICAyNDcwNCwgMjQ3MDksIDI0NzE0LCAyNDcxOSwgMjQ3MjQsIDI0NzI5LCAyNDczNCwgMjQ3MzksIDI0NzQ0LCAyNDc0OSwgCisgICAgMjQ3NTQsIDI0NzU5LCAyNDc2MywgMjQ3NjgsIDI0NzczLCAyNDc3OCwgMjQ3ODMsIDI0Nzg4LCAyNDc5MywgMjQ3OTgsIAorICAgIDI0ODAzLCAyNDgwOCwgMjQ4MTMsIDI0ODE4LCAyNDgyMywgMjQ4MjgsIDI0ODMzLCAyNDgzOCwgMjQ4NDMsIDI0ODQ4LCAKKyAgICAyNDg1MywgMjQ4NTgsIDI0ODYzLCAyNDg2OCwgMjQ4NzMsIDI0ODc4LCAyNDg4MywgMjQ4ODgsIDI0ODkyLCAyNDg5NywgCisgICAgMjQ5MDIsIDI0OTA3LCAyNDkxMiwgMjQ5MTcsIDI0OTIxLCAyNDkyNiwgMjQ5MzEsIDI0OTM2LCAyNDk0MSwgMjQ5NDYsIAorICAgIDI0OTUwLCAyNDk1NSwgMjQ5NjEsIDI0OTY2LCAyNDk3MSwgMjQ5NzYsIDI0OTgxLCAyNDk4NywgMjQ5OTIsIDI0OTk3LCAKKyAgICAyNTAwMiwgMjUwMDcsIDI1MDEyLCAyNTAxNywgMjUwMjIsIDI1MDI3LCAyNTAzMiwgMjUwMzcsIDI1MDQyLCAyNTA0NywgCisgICAgMjUwNTIsIDI1MDU3LCAyNTA2MiwgMjUwNjcsIDI1MDcyLCAyNTA3NywgMjUwODIsIDI1MDg3LCAyNTA5MiwgMjUwOTcsIAorICAgIDI1MTAyLCAyNTEwNywgMjUxMTIsIDI1MTE3LCAyNTEyMiwgMjUxMjcsIDI1MTMyLCAyNTEzNywgMjUxNDIsIDI1MTQ3LCAKKyAgICAyNTE1MiwgMjUxNTcsIDI1MTYyLCAyNTE2NywgMjUxNzIsIDI1MTc3LCAyNTE4MiwgMjUxODcsIDI1MTkyLCAyNTE5NywgCisgICAgMjUyMDIsIDI1MjA3LCAyNTIxMywgMjUyMTgsIDI1MjIzLCAyNTIyOCwgMjUyMzMsIDI1MjM4LCAyNTI0MywgMjUyNDgsIAorICAgIDI1MjUzLCAyNTI1OCwgMjUyNjMsIDI1MjY4LCAyNTI3MiwgMjUyNzcsIDI1MjgyLCAyNTI4NywgMjUyOTIsIDI1Mjk3LCAKKyAgICAyNTMwMiwgMjUzMDcsIDI1MzEyLCAyNTMxNywgMjUzMjIsIDI1MzI3LCAyNTMzMiwgMjUzMzcsIDI1MzQyLCAyNTM0NywgCisgICAgMjUzNTIsIDI1MzU3LCAyNTM2MiwgMjUzNjcsIDI1MzcyLCAyNTM3NywgMjUzODIsIDI1Mzg3LCAyNTM5MiwgMjUzOTcsIAorICAgIDI1NDAyLCAyNTQwOCwgMjU0MTIsIDI1NDE2LCAyNTQyMCwgMjU0MjQsIDI1NDI4LCAyNTQzMiwgMjU0MzYsIDI1NDQwLCAKKyAgICAyNTQ0NiwgMjU0NTIsIDI1NDU4LCAyNTQ2NCwgMjU0NzAsIDI1NDc2LCAyNTQ4MiwgMjU0ODksIDI1NDk1LCAyNTUwMCwgCisgICAgMjU1MDUsIDI1NTEwLCAyNTUxNSwgMjU1MjAsIDI1NTI1LCAyNTUzMCwgMjU1MzUsIDI1NTQwLCAyNTU0NSwgMjU1NTAsIAorICAgIDI1NTU1LCAyNTU2MCwgMjU1NjUsIDI1NTcwLCAyNTU3NSwgMjU1ODAsIDI1NTg1LCAyNTU5MCwgMjU1OTUsIDI1NjAwLCAKKyAgICAyNTYwNSwgMjU2MTAsIDI1NjE1LCAyNTYyMCwgMjU2MjUsIDI1NjMwLCAyNTYzNSwgMCwgMCwgMCwgMjU2NDIsIDI1NjUyLCAKKyAgICAyNTY1NiwgMjU2NjMsIDI1NjY3LCAyNTY3MSwgMjU2NzUsIDI1NjgzLCAyNTY4NywgMjU2OTIsIDI1Njk3LCAyNTcwMiwgCisgICAgMjU3MDYsIDI1NzExLCAyNTcxNiwgMjU3MTksIDI1NzIzLCAyNTcyNywgMjU3MzYsIDI1NzQwLCAyNTc0NCwgMjU3NTAsIAorICAgIDI1NzU0LCAyNTc1OCwgMjU3NjYsIDI1NzcwLCAyNTc3OCwgMjU3ODQsIDI1NzkwLCAyNTc5NiwgMjU4MDIsIDI1ODEyLCAKKyAgICAyNTgxOCwgMjU4MjIsIDI1ODMxLCAyNTgzNCwgMjU4NDAsIDI1ODQ0LCAyNTg1MCwgMjU4NTUsIDI1ODYxLCAyNTg2OSwgCisgICAgMjU4NzUsIDI1ODgxLCAyNTg4OSwgMjU4OTUsIDI1ODk5LCAyNTkwMywgMjU5MTMsIDI1OTE5LCAyNTkyMywgMjU5MzMsIAorICAgIDI1OTM5LCAyNTk0MywgMjU5NDcsIDI1OTU0LCAyNTk2MSwgMjU5NjYsIDI1OTcxLCAyNTk4MCwgMjU5ODQsIDI1OTg4LCAKKyAgICAyNTk5MiwgMjYwMDAsIDI2MDA3LCAyNjAxMSwgMjYwMTUsIDI2MDE5LCAyNjAyMywgMjYwMjcsIDI2MDMxLCAyNjAzNSwgCisgICAgMjYwMzksIDI2MDQzLCAyNjA0NywgMjYwNTEsIDI2MDU2LCAyNjA2MSwgMjYwNjYsIDI2MDcwLCAyNjA3NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYwNzgsIDI2MDgyLCAyNjA4NiwgMjYwOTAsIDI2MDk0LCAKKyAgICAyNjA5OSwgMjYxMDQsIDI2MTA5LCAyNjExNCwgMjYxMTgsIDI2MTIyLCAyNjEyNywgMjYxMzEsIDAsIDI2MTM1LCAyNjE0MCwgCisgICAgMjYxNDUsIDI2MTQ5LCAyNjE1MywgMjYxNTgsIDI2MTYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNjE2OCwgMjYxNzIsIDI2MTc2LCAyNjE4MCwgMjYxODQsIDI2MTg5LCAyNjE5NCwgMjYxOTksIDI2MjA0LCAyNjIwOCwgCisgICAgMjYyMTIsIDI2MjE3LCAyNjIyMSwgMjYyMjUsIDI2MjI5LCAyNjIzNCwgMjYyMzksIDI2MjQzLCAyNjI0NywgMjYyNTIsIAorICAgIDI2MjU3LCAyNjI2MiwgMjYyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MjczLCAyNjI3NywgMjYyODEsIAorICAgIDI2Mjg1LCAyNjI4OSwgMjYyOTQsIDI2Mjk5LCAyNjMwNCwgMjYzMDksIDI2MzEzLCAyNjMxNywgMjYzMjIsIDI2MzI2LCAKKyAgICAyNjMzMCwgMjYzMzQsIDI2MzM5LCAyNjM0NCwgMjYzNDgsIDI2MzUyLCAyNjM1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjYzNjIsIDI2MzY2LCAyNjM3MCwgMjYzNzQsIDI2Mzc4LCAyNjM4MywgMjYzODgsIDI2MzkzLCAKKyAgICAyNjM5OCwgMjY0MDIsIDI2NDA2LCAyNjQxMSwgMjY0MTUsIDAsIDI2NDE5LCAyNjQyNCwgMjY0MjksIDAsIDI2NDMzLCAKKyAgICAyNjQzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY0NDMsIDI2NDQ2LCAyNjQ1MCwgMjY0NTQsIAorICAgIDI2NDU4LCAyNjQ2MiwgMjY0NjYsIDI2NDcwLCAyNjQ3NCwgMjY0NzgsIDI2NDgyLCAyNjQ4NiwgMjY0OTAsIDI2NDk0LCAKKyAgICAyNjQ5OCwgMjY1MDIsIDI2NTA2LCAyNjUxMCwgMjY1MTMsIDI2NTE3LCAyNjUyMSwgMjY1MjUsIDI2NTI5LCAyNjUzMywgCisgICAgMjY1MzcsIDI2NTQxLCAyNjU0NSwgMjY1NDksIDI2NTUzLCAyNjU1NywgMjY1NjEsIDI2NTY1LCAyNjU2OCwgMjY1NzEsIAorICAgIDI2NTc1LCAyNjU3OSwgMjY1ODUsIDI2NTkxLCAyNjU5NywgMjY2MDMsIDI2NjA5LCAyNjYxNSwgMjY2MjEsIDI2NjI3LCAKKyAgICAyNjYzMywgMjY2MzksIDI2NjQ1LCAyNjY1MSwgMjY2NTcsIDI2NjYzLCAyNjY3MiwgMjY2ODEsIDI2Njg3LCAyNjY5MywgCisgICAgMjY2OTksIDI2NzA0LCAyNjcwOCwgMjY3MTMsIDI2NzE4LCAyNjcyMywgMjY3MjcsIDI2NzMyLCAyNjczNywgMjY3NDIsIAorICAgIDI2NzQ2LCAyNjc1MSwgMjY3NTUsIDI2NzYwLCAyNjc2NSwgMjY3NzAsIDI2Nzc1LCAyNjc3OSwgMjY3ODMsIDI2Nzg3LCAKKyAgICAyNjc5MSwgMjY3OTUsIDI2Nzk5LCAyNjgwMywgMjY4MDcsIDI2ODExLCAyNjgxNSwgMjY4MjEsIDI2ODI1LCAyNjgyOSwgCisgICAgMjY4MzMsIDI2ODM3LCAyNjg0MSwgMjY4NDksIDI2ODU1LCAyNjg1OSwgMjY4NjUsIDI2ODY5LCAyNjg3NSwgMjY4NzksIDAsIAorICAgIDAsIDI2ODgzLCAyNjg4NywgMjY4OTAsIDI2ODkzLCAyNjg5NiwgMjY4OTksIDI2OTAyLCAyNjkwNSwgMjY5MDgsIDI2OTExLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNjkxNCwgMjY5MjIsIDI2OTMwLCAyNjkzOCwgMjY5NDYsIDI2OTU0LCAyNjk2MiwgMjY5NzAsIAorICAgIDI2OTc4LCAyNjk4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMjY5OTQsIDI2OTk3LCAyNzAwMCwgMjcwMDMsIDI3MDA4LCAyNzAxMSwgCisgICAgMjcwMTYsIDI3MDIzLCAyNzAzMSwgMjcwMzYsIDI3MDQzLCAyNzA0NiwgMjcwNTMsIDI3MDYwLCAyNzA2NywgMCwgMjcwNzEsIAorICAgIDI3MDc1LCAyNzA3OCwgMjcwODEsIDI3MDg0LCAyNzA4NywgMjcwOTAsIDI3MDkzLCAyNzA5NiwgMjcwOTksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDI3MTAyLCAyNzEwNSwgMjcxMDgsIDI3MTExLCAyNzExNCwgMjcxMTcsIDI3MTIxLCAyNzEyNSwgMjcxMjksIAorICAgIDI3MTMyLCAyNzEzNiwgMjcxNDAsIDI3MTQzLCAyNzE0NywgMjcxNTEsIDI3MTU0LCAyNzE1OCwgMjcxNjEsIDI3MTY1LCAKKyAgICAyNzE2OSwgMjcxNzMsIDI3MTc3LCAyNzE4MSwgMjcxODQsIDI3MTg3LCAyNzE5MSwgMjcxOTUsIDI3MTk4LCAyNzIwMiwgCisgICAgMjcyMDYsIDI3MjEwLCAyNzIxNCwgMjcyMTgsIDI3MjIyLCAyNzIyNiwgMjcyMzAsIDI3MjM3LCAyNzI0MiwgMjcyNDcsIAorICAgIDI3MjUyLCAyNzI1NywgMjcyNjMsIDI3MjY5LCAyNzI3NSwgMjcyODEsIDI3Mjg2LCAyNzI5MiwgMjcyOTgsIDI3MzAzLCAKKyAgICAyNzMwOSwgMjczMTUsIDI3MzIxLCAyNzMyNywgMjczMzMsIDI3MzM4LCAyNzM0NCwgMjczNDksIDI3MzU1LCAyNzM2MSwgCisgICAgMjczNjcsIDI3MzczLCAyNzM3OSwgMjczODQsIDI3Mzg5LCAyNzM5NSwgMjc0MDEsIDI3NDA2LCAyNzQxMiwgMjc0MTcsIAorICAgIDI3NDIzLCAyNzQyOCwgMjc0MzMsIDI3NDM5LCAyNzQ0NSwgMjc0NTEsIDI3NDU3LCAyNzQ2MywgMjc0NjksIDI3NDc1LCAKKyAgICAyNzQ4MSwgMjc0ODcsIDI3NDkzLCAyNzQ5OSwgMjc1MDUsIDI3NTEwLCAyNzUxNSwgMjc1MjAsIDI3NTI2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyNzUzMiwgMjc1NDEsIDI3NTUwLCAyNzU1OCwgMjc1NjYsIDI3NTc2LCAyNzU4NCwgMjc1OTMsIAorICAgIDI3NjAwLCAyNzYwNywgMjc2MTQsIDI3NjIyLCAyNzYzMCwgMjc2MzgsIDI3NjQ2LCAyNzY1NCwgMjc2NjIsIDI3NjcwLCAKKyAgICAyNzY3OCwgMjc2ODUsIDI3NjkzLCAyNzcwMSwgMjc3MDksIDI3NzE3LCAyNzcyNSwgMjc3MzUsIDI3NzQ1LCAyNzc1NSwgCisgICAgMjc3NjUsIDI3Nzc1LCAyNzc4NSwgMjc3OTUsIDI3ODA1LCAyNzgxNSwgMjc4MjUsIDI3ODM1LCAyNzg0NSwgMjc4NTUsIAorICAgIDI3ODY1LCAyNzg3MywgMjc4ODEsIDI3ODkxLCAyNzg5OSwgMCwgMCwgMCwgMCwgMCwgMjc5MDksIDI3OTEzLCAyNzkxNywgCisgICAgMjc5MjEsIDI3OTI1LCAyNzkyOSwgMjc5MzMsIDI3OTM3LCAyNzk0MSwgMjc5NDUsIDI3OTQ5LCAyNzk1MywgMjc5NTcsIAorICAgIDI3OTYxLCAyNzk2NSwgMjc5NjksIDI3OTczLCAyNzk3NywgMjc5ODEsIDI3OTg1LCAyNzk4OSwgMjc5OTMsIDI3OTk3LCAKKyAgICAyODAwMSwgMjgwMDcsIDI4MDExLCAyODAxNywgMjgwMjEsIDI4MDI3LCAyODAzMSwgMjgwMzcsIDI4MDQxLCAyODA0NSwgCisgICAgMjgwNDksIDI4MDUzLCAyODA1NywgMjgwNjEsIDI4MDY3LCAyODA3MywgMjgwNzksIDI4MDg1LCAyODA5MCwgMjgwOTYsIAorICAgIDI4MTAyLCAyODEwOCwgMjgxMTQsIDI4MTIwLCAyODEyNiwgMjgxMzMsIDI4MTM5LCAyODE0NCwgMjgxNDksIDI4MTUzLCAKKyAgICAyODE1NywgMjgxNjEsIDI4MTY1LCAyODE2OSwgMjgxNzMsIDI4MTc3LCAyODE4MywgMjgxODksIDI4MTk1LCAyODIwMCwgCisgICAgMjgyMDcsIDI4MjEyLCAyODIxNywgMjgyMjMsIDI4MjI4LCAyODIzNSwgMjgyNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI4MjQ5LCAyODI1NSwgMjgyNTksIDI4MjY0LCAyODI2OSwgMjgyNzQsIDI4Mjc5LCAyODI4NCwgMjgyODksIAorICAgIDI4Mjk0LCAyODI5OSwgMjgzMDQsIDI4MzA5LCAyODMxNCwgMjgzMTksIDI4MzI0LCAyODMyOCwgMjgzMzIsIDI4MzM3LCAKKyAgICAyODM0MiwgMjgzNDcsIDI4MzUxLCAyODM1NSwgMjgzNTksIDI4MzY0LCAyODM2OSwgMjgzNzQsIDI4Mzc5LCAyODM4MywgMCwgCisgICAgMCwgMCwgMjgzODcsIDI4MzkyLCAyODM5NywgMjg0MDIsIDI4NDA4LCAyODQxNCwgMjg0MjAsIDI4NDI2LCAyODQzMSwgCisgICAgMjg0MzYsIDI4NDQyLCAyODQ0OCwgMCwgMCwgMCwgMCwgMjg0NTUsIDI4NDYwLCAyODQ2NiwgMjg0NzIsIDI4NDc4LCAKKyAgICAyODQ4MywgMjg0ODgsIDI4NDkzLCAyODQ5OCwgMjg1MDQsIDI4NTA5LCAyODUxNCwgMCwgMCwgMCwgMCwgMjg1MTksIDAsIDAsIAorICAgIDAsIDI4NTI0LCAyODUyOSwgMjg1MzQsIDI4NTM5LCAyODU0MywgMjg1NDcsIDI4NTUxLCAyODU1NSwgMjg1NTksIDI4NTYzLCAKKyAgICAyODU2NywgMjg1NzEsIDI4NTc1LCAyODU4MCwgMjg1ODYsIDI4NTkyLCAyODU5OCwgMjg2MDMsIDI4NjA4LCAyODYxNCwgCisgICAgMjg2MjAsIDI4NjI2LCAyODYzMSwgMjg2MzcsIDI4NjQyLCAyODY0OCwgMjg2NTQsIDI4NjU5LCAyODY2NSwgMjg2NzEsIAorICAgIDI4Njc3LCAyODY4MiwgMjg2ODcsIDI4NjkyLCAyODY5OCwgMjg3MDQsIDI4NzA5LCAyODcxNSwgMjg3MjAsIDI4NzI2LCAKKyAgICAyODczMSwgMjg3MzcsIDAsIDAsIDI4NzQzLCAyODc0OSwgMjg3NTUsIDI4NzYxLCAyODc2NywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjg3NzMsIDI4NzgwLCAyODc4NywgMjg3OTMsIDI4ODAwLCAyODgwNywgMjg4MTMsIDI4ODIwLCAKKyAgICAyODgyNywgMjg4MzQsIDI4ODQwLCAyODg0NiwgMjg4NTMsIDI4ODU5LCAyODg2NSwgMjg4NzIsIDI4ODc5LCAyODg4NSwgCisgICAgMjg4OTIsIDI4ODk5LCAyODkwNSwgMjg5MTEsIDI4OTE4LCAyODkyNCwgMjg5MzAsIDI4OTM3LCAyODk0MywgMjg5NTAsIAorICAgIDI4OTU3LCAyODk2NCwgMjg5NzEsIDI4OTc4LCAyODk4NSwgMjg5OTEsIDI4OTk4LCAyOTAwNSwgMjkwMTEsIDI5MDE4LCAKKyAgICAyOTAyNSwgMjkwMzIsIDI5MDM5LCAyOTA0NiwgMjkwNTMsIDI5MDYwLCAwLCAwLCAwLCAwLCAyOTA2NywgMjkwNzUsIAorICAgIDI5MDgyLCAyOTA4OSwgMjkwOTUsIDI5MTAyLCAyOTEwOCwgMjkxMTUsIDI5MTIxLCAyOTEyOCwgMjkxMzUsIDI5MTQyLCAKKyAgICAyOTE0OSwgMjkxNTYsIDI5MTYzLCAyOTE3MCwgMjkxNzcsIDI5MTg0LCAyOTE5MSwgMjkxOTgsIDI5MjA1LCAyOTIxMSwgCisgICAgMjkyMTgsIDI5MjI1LCAyOTIzMiwgMjkyMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDI5MjQ0LCAyOTI1MCwgMjkyNTUsIDI5MjYwLCAKKyAgICAyOTI2NSwgMjkyNzAsIDI5Mjc1LCAyOTI4MCwgMjkyODUsIDI5MjkwLCAyOTI5NSwgMCwgMCwgMCwgMjkzMDEsIDI5MzA3LCAKKyAgICAyOTMxMywgMjkzMTcsIDI5MzIzLCAyOTMyOSwgMjkzMzUsIDI5MzQxLCAyOTM0NywgMjkzNTMsIDI5MzU5LCAyOTM2NSwgCisgICAgMjkzNzEsIDI5Mzc3LCAyOTM4MywgMjkzODksIDI5Mzk1LCAyOTQwMSwgMjk0MDcsIDI5NDExLCAyOTQxNywgMjk0MjMsIAorICAgIDI5NDI5LCAyOTQzNSwgMjk0NDEsIDI5NDQ3LCAyOTQ1MywgMjk0NTksIDI5NDY1LCAyOTQ3MSwgMjk0NzcsIDI5NDgzLCAKKyAgICAyOTQ4OSwgMjk0OTUsIDI5NTAxLCAyOTUwNSwgMjk1MTAsIDI5NTE1LCAyOTUyMCwgMjk1MjQsIDI5NTI5LCAyOTUzMywgCisgICAgMjk1MzgsIDI5NTQzLCAyOTU0OCwgMjk1NTIsIDI5NTU3LCAyOTU2MiwgMjk1NjcsIDI5NTcyLCAyOTU3NywgMjk1ODEsIAorICAgIDI5NTg1LCAyOTU5MCwgMjk1OTUsIDI5NTk5LCAyOTYwMywgMjk2MDcsIDI5NjEyLCAyOTYxNywgMjk2MjIsIDI5NjI3LCAwLCAKKyAgICAwLCAyOTYzMywgMjk2MzcsIDI5NjQ0LCAyOTY0OSwgMjk2NTUsIDI5NjYxLCAyOTY2NiwgMjk2NzIsIDI5Njc4LCAyOTY4MywgCisgICAgMjk2ODksIDI5Njk1LCAyOTcwMSwgMjk3MDYsIDI5NzEyLCAyOTcxNywgMjk3MjIsIDI5NzI4LCAyOTczMywgMjk3MzksIAorICAgIDI5NzQ0LCAyOTc1MCwgMjk3NTYsIDI5NzYyLCAyOTc2OCwgMjk3NzIsIDI5Nzc3LCAyOTc4MiwgMjk3ODgsIDI5Nzk0LCAKKyAgICAyOTc5OSwgMjk4MDUsIDI5ODExLCAyOTgxNSwgMjk4MjAsIDI5ODI1LCAyOTgyOSwgMjk4MzQsIDI5ODM5LCAyOTg0NCwgCisgICAgMjk4NDksIDI5ODU1LCAyOTg2MSwgMjk4NjYsIDI5ODcxLCAyOTg3NiwgMjk4ODAsIDI5ODg1LCAyOTg4OSwgMjk4OTQsIAorICAgIDI5ODk4LCAyOTkwMywgMjk5MDgsIDI5OTEzLCAyOTkxOCwgMjk5MjQsIDI5OTMwLCAyOTkzNywgMjk5NDcsIDI5OTU2LCAKKyAgICAyOTk2MywgMjk5NjksIDI5OTc5LCAyOTk4NCwgMjk5OTAsIDAsIDI5OTk1LCAzMDAwMCwgMzAwMDUsIDMwMDEzLCAzMDAxOSwgCisgICAgMzAwMjcsIDMwMDMyLCAzMDAzOCwgMzAwNDQsIDMwMDUwLCAzMDA1NSwgMzAwNjEsIDMwMDY2LCAzMDA3MywgMzAwNzksIAorICAgIDMwMDg0LCAzMDA5MCwgMzAwOTYsIDMwMTAyLCAzMDEwOSwgMzAxMTYsIDMwMTIzLCAzMDEyOCwgMzAxMzMsIDMwMTQwLCAKKyAgICAzMDE0NywgMzAxNTQsIDMwMTYxLCAzMDE2OCwgMCwgMCwgMzAxNzUsIDMwMTgyLCAzMDE4OSwgMzAxOTUsIDMwMjAxLCAKKyAgICAzMDIwNywgMzAyMTMsIDMwMjE5LCAzMDIyNSwgMzAyMzEsIDMwMjM3LCAwLCAwLCAwLCAwLCAwLCAwLCAzMDI0MywgMzAyNDksIAorICAgIDMwMjU0LCAzMDI1OSwgMzAyNjQsIDMwMjY5LCAzMDI3NCwgMzAyNzksIDMwMjg0LCAzMDI4OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzAyOTQsIDMwMjk5LCAzMDMwNCwgMzAzMDksIDMwMzE0LCAzMDMxOSwgMzAzMjQsIDMwMzMzLCAzMDM0MCwgMzAzNDUsIAorICAgIDMwMzUwLCAzMDM1NSwgMzAzNjAsIDMwMzY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MTU1OSwgNzE1NjYsIDcxNTc0LCA3MTU4MiwgCi0gICAgNzE1ODksIDcxNTk3LCA3MTYwNCwgNzE2MTAsIDcxNjE2LCA3MTYyMywgNzE2MjksIDcxNjM1LCA3MTY0MSwgNzE2NDgsIAotICAgIDcxNjU1LCA3MTY2MiwgNzE2NjksIDcxNjc2LCA3MTY4MywgNzE2OTAsIDcxNjk3LCA3MTcwNCwgNzE3MTEsIDcxNzE4LCAKLSAgICA3MTcyNSwgNzE3MzIsIDcxNzM5LCA3MTc0NSwgNzE3NTIsIDcxNzU5LCA3MTc2NiwgNzE3NzMsIDcxNzgwLCA3MTc4NywgCi0gICAgNzE3OTQsIDcxODAxLCA3MTgwOCwgNzE4MTUsIDcxODIyLCA3MTgyOSwgNzE4MzYsIDcxODQzLCA3MTg1MCwgNzE4NTcsIAotICAgIDcxODY0LCA3MTg3MSwgNzE4NzksIDcxODg3LCA3MTg5NSwgNzE5MDMsIDAsIDAsIDAsIDAsIDcxOTExLCA3MTkyMCwgCi0gICAgNzE5MjksIDcxOTM4LCA3MTk0NywgNzE5NTYsIDcxOTY1LCA3MTk3MiwgNzE5NzksIDcxOTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3MTk5MywgNzE5OTcsIDcyMDAyLCA3MjAwNywgNzIwMTIsIDcyMDE3LCA3MjAyMiwgNzIwMjcsIDcyMDMyLCA3MjAzNywgCi0gICAgNzIwNDIsIDcyMDQ3LCA3MjA1MSwgNzIwNTUsIDcyMDYwLCA3MjA2NSwgNzIwNjksIDcyMDc0LCA3MjA3OSwgNzIwODQsIAotICAgIDcyMDg5LCA3MjA5NCwgNzIwOTksIDcyMTA0LCA3MjEwOCwgNzIxMTIsIDcyMTE3LCA3MjEyMiwgNzIxMjcsIDcyMTMxLCAKLSAgICA3MjEzNSwgNzIxMzksIDcyMTQzLCA3MjE0NywgNzIxNTEsIDcyMTU2LCA3MjE2MSwgNzIxNjYsIDcyMTcxLCA3MjE3NiwgCi0gICAgNzIxODMsIDcyMTg5LCA3MjE5NCwgNzIxOTksIDcyMjA0LCA3MjIwOSwgNzIyMTUsIDcyMjIyLCA3MjIyOCwgNzIyMzUsIAotICAgIDcyMjQxLCA3MjI0NywgNzIyNTIsIDcyMjU5LCA3MjI2NSwgNzIyNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcyMjc2LCAKLSAgICA3MjI4MCwgNzIyODQsIDcyMjg3LCA3MjI5MSwgNzIyOTQsIDcyMjk4LCA3MjMwMSwgNzIzMDUsIDcyMzA5LCA3MjMxNCwgCi0gICAgNzIzMTgsIDcyMzIzLCA3MjMyNiwgNzIzMzAsIDcyMzM0LCA3MjMzNywgNzIzNDEsIDcyMzQ1LCA3MjM0OCwgNzIzNTIsIAotICAgIDcyMzU2LCA3MjM2MCwgNzIzNjQsIDcyMzY4LCA3MjM3MiwgNzIzNzYsIDcyMzgwLCA3MjM4NCwgNzIzODgsIDcyMzkyLCAKLSAgICA3MjM5NiwgNzI0MDAsIDcyNDA0LCA3MjQwOCwgNzI0MTIsIDcyNDE2LCA3MjQyMCwgNzI0MjMsIDcyNDI2LCA3MjQzMCwgCi0gICAgNzI0MzQsIDcyNDM4LCA3MjQ0MSwgNzI0NDQsIDcyNDQ3LCA3MjQ1MSwgNzI0NTUsIDcyNDU5LCA3MjQ2MywgNzI0NjcsIAotICAgIDcyNDcwLCA3MjQ3NCwgNzI0ODAsIDcyNDg1LCA3MjQ4OSwgNzI0OTQsIDcyNDk4LCA3MjUwMywgNzI1MDgsIDcyNTE0LCAKLSAgICA3MjUxOSwgNzI1MjUsIDcyNTI5LCA3MjUzNCwgNzI1MzksIDcyNTQzLCA3MjU0OCwgNzI1NTMsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcyNTU3LCA3MjU2MCwgNzI1NjQsIDcyNTY4LCA3MjU3MSwgNzI1NzQsIDcyNTc3LCA3MjU4MCwgNzI1ODMsIAotICAgIDcyNTg2LCA3MjU4OSwgNzI1OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDcyNTk1LCA3MjYwMCwgNzI2MDQsIDcyNjA4LCA3MjYxMiwgCi0gICAgNzI2MTYsIDcyNjIwLCA3MjYyNCwgNzI2MjgsIDcyNjMyLCA3MjYzNiwgNzI2NDAsIDcyNjQ0LCA3MjY0OCwgNzI2NTIsIAotICAgIDcyNjU2LCA3MjY2MCwgNzI2NjUsIDcyNjcwLCA3MjY3NiwgNzI2ODIsIDcyNjg5LCA3MjY5NCwgNzI2OTksIDcyNzA1LCAKLSAgICA3MjcwOSwgNzI3MTQsIDcyNzE3LCAwLCAwLCAwLCAwLCA3MjcyMCwgNzI3MjcsIDcyNzMzLCA3MjczOSwgNzI3NDUsIAotICAgIDcyNzUxLCA3Mjc1NywgNzI3NjMsIDcyNzY5LCA3Mjc3NSwgNzI3ODEsIDcyNzg3LCA3Mjc5NCwgNzI4MDEsIDcyODA4LCAKLSAgICA3MjgxNSwgNzI4MjIsIDcyODI5LCA3MjgzNiwgNzI4NDMsIDcyODUwLCA3Mjg1NiwgNzI4NjIsIDcyODY5LCA3Mjg3NSwgCi0gICAgNzI4ODIsIDcyODg5LCA3Mjg5NSwgNzI5MDEsIDcyOTA4LCA3MjkxNSwgNzI5MjIsIDcyOTI4LCA3MjkzNSwgNzI5NDIsIAotICAgIDcyOTQ4LCA3Mjk1NSwgNzI5NjEsIDcyOTY4LCA3Mjk3NSwgNzI5ODEsIDcyOTg3LCA3Mjk5NCwgNzMwMDAsIDczMDA3LCAKLSAgICA3MzAxNCwgNzMwMjMsIDczMDMwLCA3MzAzNywgNzMwNDEsIDczMDQ2LCA3MzA1MSwgNzMwNTYsIDczMDYxLCA3MzA2NSwgCi0gICAgNzMwNjksIDczMDc0LCA3MzA3OCwgNzMwODMsIDczMDg4LCA3MzA5MywgNzMwOTgsIDczMTAyLCA3MzEwNywgNzMxMTEsIAotICAgIDczMTE2LCA3MzEyMCwgNzMxMjUsIDczMTMwLCA3MzEzNSwgNzMxNDAsIDczMTQ0LCA3MzE0OSwgNzMxNTQsIDczMTU5LCAKLSAgICA3MzE2NSwgNzMxNzAsIDczMTc2LCA3MzE4MiwgNzMxODgsIDczMTk1LCA3MzIwMSwgNzMyMDcsIDczMjE0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MzIxOCwgNzMyMjMsIDczMjI3LCA3MzIzMSwgNzMyMzUsIDczMjM5LCA3MzI0MywgCi0gICAgNzMyNDcsIDczMjUxLCA3MzI1NSwgNzMyNTksIDczMjYzLCA3MzI2NywgNzMyNzEsIDczMjc1LCA3MzI3OSwgNzMyODMsIAotICAgIDczMjg3LCA3MzI5MSwgNzMyOTUsIDczMjk5LCA3MzMwMywgNzMzMDcsIDczMzExLCA3MzMxNSwgNzMzMTksIDczMzIzLCAKLSAgICA3MzMyNywgNzMzMzEsIDczMzM1LCAwLCAwLCAwLCA3MzMzOSwgNzMzNDMsIDczMzQ3LCA3MzM1MSwgNzMzNTUsIDczMzU4LCAKLSAgICA3MzM2NCwgNzMzNjcsIDczMzcxLCA3MzM3NCwgNzMzODAsIDczMzg2LCA3MzM5NCwgNzMzOTcsIDczNDAxLCA3MzQwNCwgCi0gICAgNzM0MDcsIDczNDEzLCA3MzQxOSwgNzM0MjMsIDczNDI5LCA3MzQzMywgNzM0MzcsIDczNDQzLCA3MzQ0NywgNzM0NTMsIAotICAgIDczNDU5LCA3MzQ2MywgNzM0NjcsIDczNDczLCA3MzQ3NywgNzM0ODMsIDczNDg5LCA3MzQ5MywgNzM0OTksIDczNTAzLCAKLSAgICA3MzUwOSwgNzM1MTIsIDczNTE1LCA3MzUyMSwgNzM1MjUsIDczNTMxLCA3MzUzNCwgNzM1MzcsIDczNTQwLCA3MzU0NiwgCi0gICAgNzM1NTAsIDczNTU0LCA3MzU2MCwgNzM1NjYsIDczNTcwLCA3MzU3MywgNzM1NzksIDczNTg0LCA3MzU4OSwgNzM1OTQsIAotICAgIDczNjAxLCA3MzYwNiwgNzM2MTMsIDczNjE4LCA3MzYyNSwgNzM2MzAsIDczNjM2LCA3MzY0MiwgNzM2NDgsIDczNjUxLCAKLSAgICA3MzY1NSwgNzM2NTksIDczNjY0LCA3MzY2OSwgNzM2NzQsIDczNjc5LCA3MzY4NCwgNzM2ODksIDczNjk0LCA3MzY5OSwgCi0gICAgNzM3MDYsIDczNzExLCAwLCA3MzcxOCwgNzM3MjEsIDczNzI1LCA3MzcyOCwgNzM3MzEsIDczNzM0LCA3MzczNywgNzM3NDAsIAotICAgIDczNzQzLCA3Mzc0NiwgNzM3NDksIDAsIDAsIDAsIDAsIDczNzUyLCA3Mzc1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAzNzAsIDMwMzc2LCAKKyAgICAzMDM4MiwgMzAzODYsIDMwMzkwLCAzMDM5NCwgMzAzOTgsIDMwNDA0LCAzMDQwOCwgMzA0MTQsIDMwNDE4LCAzMDQyNCwgCisgICAgMzA0MzAsIDMwNDM4LCAzMDQ0NCwgMzA0NTIsIDMwNDU2LCAzMDQ2MCwgMzA0NjQsIDMwNDcwLCAzMDQ3MywgMzA0NzksIAorICAgIDMwNDgzLCAzMDQ4OSwgMzA0OTMsIDMwNDk3LCAzMDUwMywgMzA1MDcsIDMwNTEzLCAzMDUxNywgMzA1MjMsIDMwNTMxLCAKKyAgICAzMDUzOSwgMzA1NDcsIDMwNTUzLCAzMDU1NywgMzA1NjMsIDMwNTY3LCAzMDU3MywgMzA1NzYsIDMwNTc5LCAzMDU4NSwgCisgICAgMzA1ODksIDMwNTk1LCAzMDU5OCwgMzA2MDEsIDMwNjA0LCAzMDYwOCwgMzA2MTIsIDMwNjE4LCAzMDYyNCwgMzA2MjcsIAorICAgIDMwNjMwLCAzMDYzNCwgMzA2MzksIDMwNjQ0LCAzMDY1MSwgMzA2NTYsIDMwNjYzLCAzMDY3MCwgMzA2NzksIDMwNjg2LCAKKyAgICAzMDY5NSwgMzA3MDAsIDMwNzA3LCAzMDcxNCwgMzA3MjMsIDMwNzI4LCAzMDczNSwgMzA3NDAsIDMwNzQ2LCAzMDc1MiwgCisgICAgMzA3NTgsIDMwNzY0LCAzMDc3MCwgMzA3NzYsIDAsIDAsIDAsIDAsIDMwNzgyLCAzMDc4NiwgMzA3ODksIDMwNzkyLCAKKyAgICAzMDc5NSwgMzA3OTgsIDMwODAxLCAzMDgwNCwgMzA4MDcsIDMwODEwLCAzMDgxMywgMzA4MTYsIDMwODE5LCAzMDgyMiwgCisgICAgMzA4MjcsIDMwODMyLCAzMDgzNywgMzA4NDAsIDMwODQ1LCAzMDg1MCwgMzA4NTUsIDMwODYwLCAzMDg2NywgMzA4NzIsIAorICAgIDMwODc3LCAzMDg4MiwgMzA4ODcsIDMwODk0LCAzMDkwMCwgMzA5MDYsIDMwOTEyLCAzMDkxOCwgMzA5MjQsIDMwOTMzLCAKKyAgICAzMDk0MiwgMzA5NDgsIDMwOTU0LCAzMDk2MiwgMzA5NzAsIDMwOTc5LCAzMDk4OCwgMzA5OTYsIDMxMDA0LCAzMTAxMywgCisgICAgMzEwMjIsIDAsIDAsIDAsIDMxMDMwLCAzMTAzNCwgMzEwMzgsIDMxMDQyLCAzMTA0NSwgMzEwNDgsIDMxMDUxLCAzMTA1NSwgCisgICAgMzEwNTgsIDMxMDYxLCAzMTA2NSwgMzEwNjgsIDMxMDcyLCAzMTA3NiwgMzEwODAsIDMxMDg0LCAzMTA4OCwgMzEwOTIsIAorICAgIDMxMDk2LCAzMTEwMCwgMzExMDQsIDMxMTA3LCAzMTExMCwgMzExMTQsIDMxMTE4LCAzMTEyMiwgMzExMjUsIDMxMTI4LCAKKyAgICAzMTEzMSwgMzExMzUsIDMxMTM5LCAzMTE0MiwgMzExNDYsIDMxMTQ5LCAzMTE1NCwgMzExNTksIDMxMTY0LCAzMTE2OSwgCisgICAgMzExNzQsIDMxMTc5LCAzMTE4NCwgMzExODksIDMxMTk0LCAzMTE5OCwgMzEyMDIsIDMxMjA4LCAzMTIxNSwgMzEyMTksIAorICAgIDMxMjIzLCAzMTIyNywgMzEyMzAsIDMxMjMzLCAzMTIzNiwgMzEyMzksIDMxMjQyLCAzMTI0NSwgMzEyNDgsIDMxMjUxLCAKKyAgICAzMTI1NCwgMzEyNTcsIDMxMjYxLCAzMTI2NSwgMzEyNjksIDMxMjc0LCAzMTI3OCwgMzEyODIsIDMxMjg4LCAzMTI5MiwgCisgICAgMzEyOTgsIDMxMzA0LCAzMTMwOSwgMzEzMTYsIDMxMzIwLCAzMTMyNiwgMzEzMzAsIDMxMzM2LCAzMTM0MSwgMzEzNDgsIAorICAgIDMxMzU1LCAzMTM2MCwgMzEzNjcsIDMxMzcyLCAzMTM3NywgMzEzODEsIDMxMzg3LCAzMTM5MSwgMzEzOTcsIDMxNDA0LCAKKyAgICAzMTQxMSwgMzE0MTUsIDMxNDIxLCAzMTQyNywgMzE0MzEsIDMxNDM3LCAzMTQ0MiwgMzE0NDcsIDMxNDU0LCAzMTQ1OSwgCisgICAgMzE0NjQsIDMxNDY5LCAzMTQ3NCwgMzE0NzgsIDMxNDgyLCAzMTQ4NywgMzE0OTIsIDMxNDk5LCAzMTUwNSwgMzE1MTAsIAorICAgIDMxNTE3LCAzMTUyMiwgMzE1MjksIDMxNTM0LCAzMTU0MywgMzE1NDksIDMxNTU1LCAzMTU1OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMzE1NjMsIDMxNTcyLCAzMTU3OSwgMzE1ODYsIDMxNTkzLCAzMTU5NiwgMzE2MDAsIDMxNjA0LCAzMTYwOCwgCisgICAgMzE2MTIsIDMxNjE2LCAzMTYyMCwgMzE2MjQsIDMxNjI4LCAzMTYzMiwgMzE2MzYsIDMxNjQwLCAzMTY0NCwgMzE2NDcsIAorICAgIDMxNjUwLCAzMTY1NCwgMzE2NTgsIDMxNjYyLCAzMTY2NiwgMzE2NzAsIDMxNjc0LCAzMTY3NywgMzE2ODEsIDMxNjg1LCAKKyAgICAzMTY4OSwgMzE2OTMsIDMxNjk2LCAzMTY5OSwgMzE3MDMsIDMxNzA2LCAzMTcxMCwgMzE3MTQsIDMxNzE3LCAzMTcyMSwgCisgICAgMzE3MjUsIDMxNzI4LCAzMTczMywgMzE3MzgsIDMxNzQzLCAzMTc0NywgMzE3NTEsIDMxNzU2LCAzMTc2MCwgMzE3NjUsIAorICAgIDMxNzY5LCAzMTc3NCwgMzE3NzgsIDMxNzgyLCAzMTc4NywgMzE3OTIsIDMxNzk2LCAzMTgwMSwgMzE4MDYsIDMxODExLCAKKyAgICAzMTgxNSwgMCwgMCwgMCwgMzE4MTksIDMxODI0LCAzMTgzMywgMzE4MzgsIDMxODQ1LCAzMTg1MCwgMzE4NTQsIDMxODU3LCAKKyAgICAzMTg2MCwgMzE4NjMsIDMxODY2LCAzMTg2OSwgMzE4NzIsIDMxODc1LCAzMTg3OCwgMCwgMCwgMCwgMzE4ODEsIDMxODg1LCAKKyAgICAzMTg4OSwgMzE4OTMsIDMxOTAwLCAzMTkwNiwgMzE5MTIsIDMxOTE4LCAzMTkyNCwgMzE5MzAsIDMxOTM2LCAzMTk0MiwgCisgICAgMzE5NDgsIDMxOTU0LCAzMTk2MSwgMzE5NjgsIDMxOTc1LCAzMTk4MiwgMzE5ODksIDMxOTk2LCAzMjAwMywgMzIwMTAsIAorICAgIDMyMDE3LCAzMjAyNCwgMzIwMzEsIDMyMDM4LCAzMjA0NSwgMzIwNTIsIDMyMDU5LCAzMjA2NiwgMzIwNzMsIDMyMDgwLCAKKyAgICAzMjA4NywgMzIwOTQsIDMyMTAxLCAzMjEwOCwgMzIxMTUsIDMyMTIyLCAzMjEyOSwgMzIxMzYsIDMyMTQzLCAzMjE1MCwgCisgICAgMzIxNTcsIDMyMTY0LCAzMjE3MiwgMzIxODAsIDMyMTg4LCAzMjE5NCwgMzIyMDAsIDMyMjA2LCAzMjIxNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIyMjMsIDMyMjMwLCAzMjIzNywgMzIyNDQsIDMyMjUxLCAKKyAgICAzMjI2MCwgMzIyNjksIDMyMjc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjI4NywgMzIyOTIsIDMyMjk3LCAzMjMwMiwgCisgICAgMzIzMDcsIDMyMzE2LCAzMjMyNywgMzIzMzYsIDMyMzQ3LCAzMjM1MywgMzIzNjYsIDMyMzcyLCAzMjM3OSwgMzIzODYsIAorICAgIDMyMzkxLCAzMjM5NywgMzI0MDMsIDMyNDE0LCAzMjQyMywgMzI0MzAsIDMyNDM3LCAzMjQ0NiwgMzI0NTMsIDMyNDYyLCAKKyAgICAzMjQ3MiwgMzI0ODIsIDMyNDg5LCAzMjQ5NiwgMzI1MDMsIDMyNTEzLCAzMjUxOCwgMzI1MjYsIDMyNTMyLCAzMjU0MCwgCisgICAgMzI1NDksIDMyNTU0LCAzMjU2MSwgMzI1NjcsIDMyNTcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjU3NywgCisgICAgMzI1ODIsIDMyNTg4LCAzMjU5NSwgMzI2MDMsIDMyNjA5LCAzMjYxNSwgMzI2MjEsIDMyNjI2LCAzMjYzMywgMzI2MzksIAorICAgIDMyNjQ1LCAzMjY1MSwgMzI2NTksIDMyNjY0LCAzMjY3MiwgMzI2NzcsIDMyNjgzLCAzMjY4OSwgMzI2OTYsIDMyNzA0LCAKKyAgICAzMjcxMSwgMzI3MTcsIDMyNzI0LCAzMjczMSwgMzI3MzcsIDMyNzQ0LCAzMjc1MSwgMzI3NTcsIDMyNzYyLCAzMjc2OCwgCisgICAgMzI3NzYsIDMyNzg0LCAzMjc5MCwgMzI3OTYsIDMyODAyLCAzMjgwOCwgMzI4MTYsIDMyODIwLCAzMjgyNiwgMzI4MzIsIAorICAgIDMyODM4LCAzMjg0NCwgMzI4NTAsIDMyODU2LCAzMjg2MCwgMzI4NjUsIDMyODcwLCAzMjg3NywgMzI4ODIsIDMyODg2LCAKKyAgICAzMjg5MiwgMzI4OTcsIDMyOTAyLCAzMjkwNiwgMzI5MTEsIDMyOTE2LCAzMjkyMCwgMzI5MjQsIDMyOTI5LCAzMjkzNiwgCisgICAgMzI5NDAsIDMyOTQ1LCAzMjk1MCwgMzI5NTQsIDMyOTU5LCAzMjk2MywgMzI5NjgsIDMyOTcyLCAzMjk3OCwgMzI5ODMsIAorICAgIDMyOTkwLCAzMjk5NSwgMzMwMDAsIDMzMDA0LCAzMzAwOSwgMzMwMTQsIDMzMDIxLCAzMzAyNiwgMzMwMzIsIDMzMDM3LCAKKyAgICAzMzA0MSwgMzMwNDYsIDMzMDUwLCAzMzA1NSwgMzMwNjIsIDMzMDY5LCAzMzA3NCwgMzMwNzksIDMzMDgzLCAzMzA4OSwgCisgICAgMzMwOTUsIDMzMTAwLCAzMzEwNSwgMzMxMTAsIDMzMTE2LCAzMzEyMSwgMzMxMjcsIDMzMTMyLCAzMzEzOCwgMzMxNDQsIAorICAgIDMzMTUwLCAzMzE1NywgMzMxNjQsIDMzMTcxLCAzMzE3OCwgMzMxODUsIDMzMTkyLCAzMzE5NywgMzMyMDUsIDMzMjE0LCAKKyAgICAzMzIyMywgMzMyMzIsIDMzMjQxLCAzMzI1MCwgMzMyNTksIDMzMjcxLCAzMzI4MCwgMzMyODksIDMzMjk4LCAzMzMwNSwgCisgICAgMzMzMTAsIDMzMzE3LCAzMzMyNSwgMzMzMzMsIDMzMzQwLCAzMzM0NywgMzMzNTQsIDMzMzYxLCAzMzM2OSwgMzMzNzgsIAorICAgIDMzMzg3LCAzMzM5NiwgMzM0MDUsIDMzNDE0LCAzMzQyMywgMzM0MzIsIDMzNDQxLCAzMzQ1MCwgMzM0NTksIDMzNDY4LCAKKyAgICAzMzQ3NywgMzM0ODYsIDMzNDk1LCAzMzUwMywgMzM1MTIsIDMzNTIzLCAzMzUzMSwgMzM1NDAsIDMzNTUxLCAzMzU2MCwgCisgICAgMzM1NjksIDMzNTc4LCAzMzU4NywgMzM1OTUsIDMzNjA0LCAzMzYxMSwgMzM2MTYsIDMzNjI0LCAzMzYyOSwgMzM2MzYsIAorICAgIDMzNjQxLCAzMzY1MCwgMzM2NTYsIDMzNjYzLCAzMzY3MCwgMzM2NzUsIDMzNjgwLCAzMzY4OCwgMzM2OTYsIDMzNzA1LCAKKyAgICAzMzcxNCwgMzM3MTksIDMzNzI2LCAzMzczNywgMzM3NDUsIDMzNzU0LCAzMzc2MCwgMzM3NjYsIDMzNzcxLCAzMzc3OCwgCisgICAgMzM3ODMsIDMzNzkyLCAzMzc5NywgMzM4MDIsIDMzODA3LCAzMzgxNCwgMzM4MjEsIDMzODI2LCAzMzgzNSwgMzM4NDMsIAorICAgIDMzODQ4LCAzMzg1MywgMzM4NjAsIDMzODY3LCAzMzg3MSwgMzM4NzUsIDMzODc4LCAzMzg4MSwgMzM4ODQsIDMzODg3LCAKKyAgICAzMzg5MCwgMzM4OTMsIDMzOTAwLCAzMzkwMywgMzM5MDYsIDMzOTExLCAzMzkxNSwgMzM5MTksIDMzOTIzLCAzMzkyNywgCisgICAgMzM5MzEsIDMzOTQwLCAzMzk0NiwgMzM5NTIsIDMzOTU4LCAzMzk2NiwgMzM5NzQsIDMzOTgwLCAzMzk4NiwgMzM5OTMsIAorICAgIDMzOTk5LCAzNDAwNCwgMzQwMTAsIDM0MDE2LCAzNDAyMiwgMzQwMjksIDM0MDM1LCAzNDA0MywgMzQwNDksIDM0MDU2LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDA2MiwgMzQwNjksIAorICAgIDM0MDc2LCAzNDA4MSwgMzQwOTAsIDM0MDk4LCAzNDEwNiwgMzQxMTMsIDM0MTIwLCAzNDEyNywgMzQxMzQsIDM0MTQyLCAKKyAgICAzNDE1MCwgMzQxNjAsIDM0MTcwLCAzNDE3OCwgMzQxODYsIDM0MTk0LCAzNDIwMiwgMzQyMTEsIDM0MjIwLCAzNDIyOCwgCisgICAgMzQyMzYsIDM0MjQ1LCAzNDI1NCwgMzQyNjQsIDM0Mjc0LCAzNDI4MywgMzQyOTIsIDM0MzAwLCAzNDMwOCwgMzQzMTYsIAorICAgIDM0MzI0LCAzNDMzNCwgMzQzNDQsIDM0MzUyLCAzNDM2MCwgMzQzNjgsIDM0Mzc2LCAzNDM4NCwgMzQzOTIsIDM0NDAwLCAKKyAgICAzNDQwOCwgMzQ0MTYsIDM0NDI0LCAzNDQzMiwgMzQ0NDAsIDM0NDQ5LCAzNDQ1OCwgMzQ0NjcsIDM0NDc2LCAzNDQ4NiwgCisgICAgMzQ0OTYsIDM0NTAzLCAzNDUxMCwgMzQ1MTgsIDM0NTI2LCAzNDUzNSwgMzQ1NDQsIDM0NTUyLCAzNDU2MCwgMzQ1NzIsIAorICAgIDM0NTg0LCAzNDU5MywgMzQ2MDIsIDM0NjExLCAzNDYyMCwgMzQ2MjcsIDM0NjM0LCAzNDY0MiwgMzQ2NTAsIDM0NjU4LCAKKyAgICAzNDY2NiwgMzQ2NzQsIDM0NjgyLCAzNDY5MCwgMzQ2OTgsIDM0NzA3LCAzNDcxNiwgMzQ3MjUsIDM0NzM0LCAzNDc0MywgCisgICAgMzQ3NTIsIDM0NzYyLCAzNDc3MiwgMzQ3ODIsIDM0NzkyLCAzNDgwMSwgMzQ4MTAsIDM0ODE3LCAzNDgyNCwgMzQ4MzIsIAorICAgIDM0ODQwLCAzNDg0OCwgMzQ4NTYsIDM0ODY0LCAzNDg3MiwgMzQ4ODQsIDM0ODk2LCAzNDkwNSwgMzQ5MTQsIDM0OTIyLCAKKyAgICAzNDkzMCwgMzQ5MzgsIDM0OTQ2LCAzNDk1NywgMzQ5NjgsIDM0OTc5LCAzNDk5MCwgMzUwMDIsIDM1MDE0LCAzNTAyMiwgCisgICAgMzUwMzAsIDM1MDM4LCAzNTA0NiwgMzUwNTUsIDM1MDY0LCAzNTA3MywgMzUwODIsIDM1MDkwLCAzNTA5OCwgMzUxMDYsIAorICAgIDM1MTE0LCAzNTEyMiwgMzUxMzAsIDM1MTM5LCAzNTE0OCwgMzUxNTgsIDM1MTY4LCAzNTE3NSwgMzUxODIsIDM1MTkwLCAKKyAgICAzNTE5OCwgMzUyMDYsIDM1MjE0LCAzNTIyMSwgMzUyMjgsIDM1MjM2LCAzNTI0NCwgMzUyNTIsIDM1MjYwLCAzNTI2OCwgCisgICAgMzUyNzYsIDM1Mjg0LCAzNTI5MiwgMzUzMDAsIDM1MzA4LCAzNTMxNiwgMzUzMjQsIDM1MzMyLCAzNTM0MCwgMzUzNDgsIAorICAgIDM1MzU2LCAzNTM2NSwgMzUzNzQsIDM1MzgzLCAzNTM5MSwgMzU0MDAsIDM1NDA5LCAzNTQxOCwgMzU0MjcsIDM1NDM3LCAKKyAgICAzNTQ0NiwgMzU0NTMsIDM1NDU4LCAzNTQ2NSwgMzU0NzIsIDM1NDgwLCAzNTQ4OCwgMzU0OTcsIDM1NTA2LCAzNTUxNiwgCisgICAgMzU1MjYsIDM1NTM3LCAzNTU0OCwgMzU1NTcsIDM1NTY2LCAzNTU3NiwgMzU1ODYsIDM1NTk1LCAzNTYwNCwgMzU2MTQsIAorICAgIDM1NjI0LCAzNTYzNSwgMzU2NDYsIDM1NjU1LCAzNTY2NCwgMzU2NzQsIDM1Njg0LCAzNTY5MSwgMzU2OTgsIDM1NzA2LCAKKyAgICAzNTcxNCwgMzU3MjAsIDM1NzI2LCAzNTczNSwgMzU3NDQsIDM1NzU0LCAzNTc2NCwgMzU3NzUsIDM1Nzg2LCAzNTc5NSwgCisgICAgMzU4MDQsIDM1ODE0LCAzNTgyNCwgMzU4MzMsIDM1ODQyLCAzNTg1MCwgMzU4NTgsIDM1ODY1LCAzNTg3MiwgMzU4ODAsIAorICAgIDM1ODg4LCAzNTg5NywgMzU5MDYsIDM1OTE2LCAzNTkyNiwgMzU5MzcsIDM1OTQ4LCAzNTk1NywgMzU5NjYsIDM1OTc2LCAKKyAgICAzNTk4NiwgMzU5OTUsIDM2MDA0LCAzNjAxNCwgMzYwMjQsIDM2MDM1LCAzNjA0NiwgMzYwNTUsIDM2MDY0LCAzNjA3NCwgCisgICAgMzYwODQsIDM2MDkxLCAzNjA5OCwgMzYxMDYsIDM2MTE0LCAzNjEyMywgMzYxMzIsIDM2MTQyLCAzNjE1MiwgMzYxNjMsIAorICAgIDM2MTc0LCAzNjE4MywgMzYxOTIsIDM2MjAyLCAzNjIxMiwgMzYyMjAsIDM2MjI4LCAzNjIzNiwgMzYyNDQsIDM2MjUzLCAKKyAgICAzNjI2MiwgMzYyNjksIDM2Mjc2LCAzNjI4MywgMzYyOTAsIDM2Mjk3LCAzNjMwNCwgMzYzMTIsIDM2MzIwLCAzNjMyOCwgCisgICAgMzYzMzYsIDM2MzQ3LCAzNjM1OCwgMzYzNjksIDM2MzgwLCAzNjM5MSwgMzY0MDIsIDM2NDEwLCAzNjQxOCwgMzY0MjksIAorICAgIDM2NDQwLCAzNjQ1MSwgMzY0NjIsIDM2NDczLCAzNjQ4NCwgMzY0OTIsIDM2NTAwLCAzNjUxMSwgMzY1MjIsIDM2NTMzLCAwLCAKKyAgICAwLCAzNjU0NCwgMzY1NTIsIDM2NTYwLCAzNjU3MSwgMzY1ODIsIDM2NTkzLCAwLCAwLCAzNjYwNCwgMzY2MTIsIDM2NjIwLCAKKyAgICAzNjYzMSwgMzY2NDIsIDM2NjUzLCAzNjY2NCwgMzY2NzUsIDM2Njg2LCAzNjY5NCwgMzY3MDIsIDM2NzEzLCAzNjcyNCwgCisgICAgMzY3MzUsIDM2NzQ2LCAzNjc1NywgMzY3NjgsIDM2Nzc2LCAzNjc4NCwgMzY3OTUsIDM2ODA2LCAzNjgxNywgMzY4MjgsIAorICAgIDM2ODM5LCAzNjg1MCwgMzY4NTgsIDM2ODY2LCAzNjg3NywgMzY4ODgsIDM2ODk5LCAzNjkxMCwgMzY5MjEsIDM2OTMyLCAKKyAgICAzNjk0MCwgMzY5NDgsIDM2OTU5LCAzNjk3MCwgMzY5ODEsIDAsIDAsIDM2OTkyLCAzNzAwMCwgMzcwMDgsIDM3MDE5LCAKKyAgICAzNzAzMCwgMzcwNDEsIDAsIDAsIDM3MDUyLCAzNzA2MCwgMzcwNjgsIDM3MDc5LCAzNzA5MCwgMzcxMDEsIDM3MTEyLCAKKyAgICAzNzEyMywgMCwgMzcxMzQsIDAsIDM3MTQyLCAwLCAzNzE1MywgMCwgMzcxNjQsIDM3MTc1LCAzNzE4MywgMzcxOTEsIAorICAgIDM3MjAyLCAzNzIxMywgMzcyMjQsIDM3MjM1LCAzNzI0NiwgMzcyNTcsIDM3MjY1LCAzNzI3MywgMzcyODQsIDM3Mjk1LCAKKyAgICAzNzMwNiwgMzczMTcsIDM3MzI4LCAzNzMzOSwgMzczNDcsIDM3MzU1LCAzNzM2MywgMzczNzEsIDM3Mzc5LCAzNzM4NywgCisgICAgMzczOTUsIDM3NDAzLCAzNzQxMSwgMzc0MTksIDM3NDI3LCAzNzQzNSwgMzc0NDMsIDAsIDAsIDM3NDUxLCAzNzQ2MiwgCisgICAgMzc0NzMsIDM3NDg3LCAzNzUwMSwgMzc1MTUsIDM3NTI5LCAzNzU0MywgMzc1NTcsIDM3NTY4LCAzNzU3OSwgMzc1OTMsIAorICAgIDM3NjA3LCAzNzYyMSwgMzc2MzUsIDM3NjQ5LCAzNzY2MywgMzc2NzQsIDM3Njg1LCAzNzY5OSwgMzc3MTMsIDM3NzI3LCAKKyAgICAzNzc0MSwgMzc3NTUsIDM3NzY5LCAzNzc4MCwgMzc3OTEsIDM3ODA1LCAzNzgxOSwgMzc4MzMsIDM3ODQ3LCAzNzg2MSwgCisgICAgMzc4NzUsIDM3ODg2LCAzNzg5NywgMzc5MTEsIDM3OTI1LCAzNzkzOSwgMzc5NTMsIDM3OTY3LCAzNzk4MSwgMzc5OTIsIAorICAgIDM4MDAzLCAzODAxNywgMzgwMzEsIDM4MDQ1LCAzODA1OSwgMzgwNzMsIDM4MDg3LCAzODA5NSwgMzgxMDMsIDM4MTE0LCAKKyAgICAzODEyMiwgMCwgMzgxMzMsIDM4MTQxLCAzODE1MiwgMzgxNjAsIDM4MTY4LCAzODE3NiwgMzgxODQsIDM4MTkyLCAzODE5NSwgCisgICAgMzgxOTgsIDM4MjAxLCAzODIwNCwgMzgyMTAsIDM4MjIxLCAzODIyOSwgMCwgMzgyNDAsIDM4MjQ4LCAzODI1OSwgMzgyNjcsIAorICAgIDM4Mjc1LCAzODI4MywgMzgyOTEsIDM4Mjk5LCAzODMwNSwgMzgzMTEsIDM4MzE3LCAzODMyNSwgMzgzMzMsIDM4MzQ0LCAwLCAKKyAgICAwLCAzODM1NSwgMzgzNjMsIDM4Mzc0LCAzODM4MiwgMzgzOTAsIDM4Mzk4LCAwLCAzODQwNiwgMzg0MTIsIDM4NDE4LCAKKyAgICAzODQyNCwgMzg0MzIsIDM4NDQwLCAzODQ1MSwgMzg0NjIsIDM4NDcwLCAzODQ3OCwgMzg0ODYsIDM4NDk3LCAzODUwNSwgCisgICAgMzg1MTMsIDM4NTIxLCAzODUyOSwgMzg1MzcsIDM4NTQzLCAzODU0OSwgMCwgMCwgMzg1NTIsIDM4NTYzLCAzODU3MSwgMCwgCisgICAgMzg1ODIsIDM4NTkwLCAzODYwMSwgMzg2MDksIDM4NjE3LCAzODYyNSwgMzg2MzMsIDM4NjQxLCAzODY0NCwgMCwgMzg2NDcsIAorICAgIDM4NjUxLCAzODY1NSwgMzg2NTksIDM4NjYzLCAzODY2NywgMzg2NzEsIDM4Njc1LCAzODY3OSwgMzg2ODMsIDM4Njg3LCAKKyAgICAzODY5MSwgMzg2OTcsIDM4NzAzLCAzODcwOSwgMzg3MTIsIDM4NzE1LCAzODcxNywgMzg3MjEsIDM4NzI1LCAzODcyOSwgCisgICAgMzg3MzMsIDM4NzM1LCAzODczOSwgMzg3NDMsIDM4NzQ5LCAzODc1NSwgMzg3NjIsIDM4NzY5LCAzODc3NCwgMzg3NzksIAorICAgIDM4Nzg1LCAzODc5MSwgMzg3OTMsIDM4Nzk2LCAzODc5OCwgMzg4MDIsIDM4ODA2LCAzODgxMCwgMzg4MTMsIDM4ODE3LCAKKyAgICAzODgyMSwgMzg4MjUsIDM4ODI5LCAzODgzMywgMzg4MzksIDM4ODQzLCAzODg0NywgMzg4NTMsIDM4ODU4LCAzODg2NSwgCisgICAgMzg4NjcsIDM4ODcwLCAzODg3NCwgMzg4NzgsIDM4ODgzLCAzODg4OSwgMzg4OTEsIDM4OTAwLCAzODkwOSwgMzg5MTIsIAorICAgIDM4OTE2LCAzODkxOCwgMzg5MjAsIDM4OTIyLCAzODkyNSwgMzg5MzEsIDM4OTMzLCAzODkzNywgMzg5NDEsIDM4OTQ4LCAKKyAgICAzODk1NSwgMzg5NTksIDM4OTY0LCAzODk2OSwgMzg5NzQsIDM4OTc5LCAzODk4MywgMzg5ODcsIDM4OTkwLCAzODk5NCwgCisgICAgMzg5OTgsIDM5MDA1LCAzOTAxMCwgMzkwMTQsIDM5MDE4LCAzOTAyMywgMzkwMjcsIDM5MDMxLCAzOTAzNiwgMzkwNDEsIAorICAgIDM5MDQ1LCAzOTA0OSwgMzkwNTMsIDM5MDU1LCAzOTA2MCwgMzkwNjUsIDM5MDY5LCAzOTA3MywgMzkwNzcsIDM5MDgxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAzOTA4NSwgMzkwOTEsIDM5MDk3LCAzOTEwNCwgMzkxMTEsIDM5MTE2LCAzOTEyMSwgMzkxMjUsIDAsIDAsIAorICAgIDM5MTMxLCAzOTEzNCwgMzkxMzcsIDM5MTQwLCAzOTE0MywgMzkxNDYsIDM5MTQ5LCAzOTE1MywgMzkxNTcsIDM5MTYyLCAKKyAgICAzOTE2NywgMzkxNzIsIDM5MTc5LCAzOTE4MywgMzkxODYsIDM5MTg5LCAzOTE5MiwgMzkxOTUsIDM5MTk4LCAzOTIwMSwgCisgICAgMzkyMDQsIDM5MjA3LCAzOTIxMCwgMzkyMTQsIDM5MjE4LCAzOTIyMywgMzkyMjgsIDAsIDM5MjMzLCAzOTIzOSwgMzkyNDUsIAorICAgIDM5MjUxLCAzOTI1OCwgMzkyNjUsIDM5MjcyLCAzOTI3OSwgMzkyODUsIDM5MjkxLCAzOTI5OCwgMzkzMDUsIDM5MzEyLCAwLCAKKyAgICAwLCAwLCAzOTMxOSwgMzkzMjIsIDM5MzI1LCAzOTMyOCwgMzkzMzMsIDM5MzM2LCAzOTMzOSwgMzkzNDIsIDM5MzQ1LCAKKyAgICAzOTM0OCwgMzkzNTEsIDM5MzU1LCAzOTM1OCwgMzkzNjEsIDM5MzY0LCAzOTM2NywgMzkzNzAsIDM5Mzc1LCAzOTM3OCwgCisgICAgMzkzODEsIDM5Mzg0LCAzOTM4NywgMzkzOTAsIDM5Mzk1LCAzOTM5OCwgMzk0MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NDA2LCAzOTQxMSwgMzk0MTYsIDM5NDIzLCAKKyAgICAzOTQzMSwgMzk0MzYsIDM5NDQxLCAzOTQ0NSwgMzk0NDksIDM5NDU0LCAzOTQ2MSwgMzk0NjgsIDM5NDcyLCAzOTQ3NywgCisgICAgMzk0ODIsIDM5NDg3LCAzOTQ5MiwgMzk0OTksIDM5NTA0LCAzOTUwOSwgMzk1MTQsIDM5NTIzLCAzOTUzMCwgMzk1MzcsIAorICAgIDM5NTQxLCAzOTU0NiwgMzk1NTIsIDM5NTU3LCAzOTU2NCwgMzk1NzMsIDM5NTgyLCAzOTU4NiwgMzk1OTAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NTk0LCAzOTU5OCwgMzk2MDYsIDM5NjEwLCAzOTYxNCwgCisgICAgMzk2MTksIDM5NjIzLCAzOTYyNywgMzk2MzEsIDM5NjMzLCAzOTYzNywgMzk2NDEsIDM5NjQ1LCAzOTY1MCwgMzk2NTQsIAorICAgIDM5NjU4LCAzOTY2NiwgMzk2NjksIDM5NjczLCAzOTY3NiwgMzk2NzksIDM5Njg1LCAzOTY4OSwgMzk2OTIsIDM5Njk4LCAKKyAgICAzOTcwMiwgMzk3MDYsIDM5NzEwLCAzOTcxMywgMzk3MTcsIDM5NzIwLCAzOTcyNCwgMzk3MjYsIDM5NzI5LCAzOTczMiwgCisgICAgMzk3MzYsIDM5NzM4LCAzOTc0MiwgMzk3NDUsIDM5NzQ4LCAzOTc1MywgMzk3NTgsIDM5NzY1LCAzOTc2OCwgMzk3NzEsIAorICAgIDM5Nzc1LCAzOTc4MCwgMzk3ODMsIDM5Nzg2LCAzOTc4OSwgMzk3OTMsIDM5Nzk4LCAzOTgwMSwgMzk4MDQsIDM5ODA2LCAKKyAgICAzOTgwOSwgMzk4MTIsIDM5ODE1LCAzOTgxOSwgMzk4MjQsIDM5ODI3LCAzOTgzMSwgMzk4MzUsIDM5ODM5LCAzOTg0MywgCisgICAgMzk4NDgsIDM5ODU0LCAzOTg1OSwgMzk4NjQsIDM5ODcwLCAzOTg3NSwgMzk4ODAsIDM5ODg0LCAzOTg4OCwgMzk4OTMsIAorICAgIDM5ODk3LCAzOTkwMSwgMzk5MDQsIDM5OTA2LCAzOTkxMSwgMzk5MTcsIDM5OTI0LCAzOTkzMSwgMzk5MzgsIDM5OTQ1LCAKKyAgICAzOTk1MiwgMzk5NTksIDM5OTY2LCAzOTk3MywgMzk5ODEsIDM5OTg4LCAzOTk5NiwgNDAwMDMsIDQwMDEwLCA0MDAxOCwgCisgICAgNDAwMjYsIDQwMDMxLCA0MDAzNiwgNDAwNDEsIDQwMDQ2LCA0MDA1MSwgNDAwNTYsIDQwMDYxLCA0MDA2NiwgNDAwNzEsIAorICAgIDQwMDc2LCA0MDA4MiwgNDAwODgsIDQwMDk0LCA0MDEwMCwgNDAxMDcsIDQwMTE1LCA0MDEyMiwgNDAxMjgsIDQwMTM0LCAKKyAgICA0MDE0MCwgNDAxNDYsIDQwMTUyLCA0MDE1OCwgNDAxNjQsIDQwMTcwLCA0MDE3NiwgNDAxODMsIDQwMTkwLCA0MDE5NywgCisgICAgNDAyMDQsIDQwMjEyLCA0MDIyMSwgNDAyMjksIDQwMjQwLCA0MDI0OCwgNDAyNTYsIDQwMjY1LCA0MDI3MiwgNDAyODEsIAorICAgIDQwMjkwLCA0MDI5OCwgNDAzMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMzE1LCA0MDMxNywgNDAzMjAsIDQwMzIyLCA0MDMyNSwgCisgICAgNDAzMjgsIDQwMzMxLCA0MDMzNiwgNDAzNDEsIDQwMzQ2LCA0MDM1MSwgNDAzNTUsIDQwMzU5LCA0MDM2MywgNDAzNjcsIAorICAgIDQwMzcyLCA0MDM3OCwgNDAzODMsIDQwMzg5LCA0MDM5NCwgNDAzOTksIDQwNDA0LCA0MDQxMCwgNDA0MTUsIDQwNDIxLCAKKyAgICA0MDQyNywgNDA0MzEsIDQwNDM1LCA0MDQ0MCwgNDA0NDUsIDQwNDUwLCA0MDQ1NSwgNDA0NjAsIDQwNDY4LCA0MDQ3NiwgCisgICAgNDA0ODQsIDQwNDkyLCA0MDQ5OSwgNDA1MDcsIDQwNTE0LCA0MDUyMSwgNDA1MzAsIDQwNTQyLCA0MDU0OCwgNDA1NTQsIAorICAgIDQwNTYyLCA0MDU3MCwgNDA1NzksIDQwNTg4LCA0MDU5NiwgNDA2MDQsIDQwNjEzLCA0MDYyMiwgNDA2MjcsIDQwNjM1LCAKKyAgICA0MDY0MCwgNDA2NDUsIDQwNjUxLCA0MDY1NiwgNDA2NjIsIDQwNjY5LCA0MDY3NiwgNDA2ODEsIDQwNjg3LCA0MDY5MiwgCisgICAgNDA2OTUsIDQwNjk5LCA0MDcwMiwgNDA3MDYsIDQwNzEwLCA0MDcxNCwgNDA3MjAsIDQwNzI2LCA0MDczMiwgNDA3MzgsIAorICAgIDQwNzQyLCA0MDc0NiwgNDA3NTAsIDQwNzU0LCA0MDc2MCwgNDA3NjYsIDQwNzcwLCA0MDc3NSwgNDA3NzksIDQwNzg0LCAKKyAgICA0MDc4OSwgNDA3OTQsIDQwNzk3LCA0MDgwMSwgNDA4MDQsIDQwODA4LCA0MDgxNSwgNDA4MjMsIDQwODM0LCA0MDg0NSwgCisgICAgNDA4NTAsIDQwODU5LCA0MDg2NiwgNDA4NzUsIDQwODg0LCA0MDg4OCwgNDA4OTQsIDQwOTAyLCA0MDkwNiwgNDA5MTEsIAorICAgIDQwOTE2LCA0MDkyMiwgNDA5MjgsIDQwOTM0LCA0MDk0MSwgNDA5NDUsIDQwOTQ5LCA0MDk1NCwgNDA5NTcsIDQwOTU5LCAKKyAgICA0MDk2MywgNDA5NjcsIDQwOTc1LCA0MDk3OSwgNDA5ODEsIDQwOTgzLCA0MDk4NywgNDA5OTUsIDQxMDAwLCA0MTAwNiwgCisgICAgNDEwMTYsIDQxMDIzLCA0MTAyOCwgNDEwMzIsIDQxMDM2LCA0MTA0MCwgNDEwNDMsIDQxMDQ2LCA0MTA0OSwgNDEwNTMsIAorICAgIDQxMDU3LCA0MTA2MSwgNDEwNjUsIDQxMDY5LCA0MTA3MiwgNDEwNzYsIDQxMDgwLCA0MTA4MywgNDEwODUsIDQxMDg4LCAKKyAgICA0MTA5MCwgNDEwOTQsIDQxMDk4LCA0MTEwMCwgNDExMDYsIDQxMTA5LCA0MTExNCwgNDExMTgsIDQxMTIyLCA0MTEyNCwgCisgICAgNDExMjYsIDQxMTI4LCA0MTEzMSwgNDExMzUsIDQxMTM5LCA0MTE0MywgNDExNDcsIDQxMTUxLCA0MTE1NywgNDExNjMsIAorICAgIDQxMTY1LCA0MTE2NywgNDExNjksIDQxMTcxLCA0MTE3NCwgNDExNzYsIDQxMTgwLCA0MTE4MiwgNDExODYsIDQxMTg5LCAKKyAgICA0MTE5NSwgNDExOTksIDQxMjAzLCA0MTIwNiwgNDEyMDksIDQxMjEzLCA0MTIxOSwgNDEyMjMsIDQxMjMzLCA0MTI0MywgCisgICAgNDEyNDcsIDQxMjUzLCA0MTI1OSwgNDEyNjIsIDQxMjY2LCA0MTI2OSwgNDEyNzQsIDQxMjc4LCA0MTI4NCwgNDEyODgsIAorICAgIDQxMzAwLCA0MTMwOCwgNDEzMTIsIDQxMzE2LCA0MTMyMiwgNDEzMjYsIDQxMzI5LCA0MTMzMSwgNDEzMzQsIDQxMzM4LCAKKyAgICA0MTM0MiwgNDEzNDksIDQxMzUzLCA0MTM1NywgNDEzNjEsIDQxMzY0LCA0MTM2OSwgNDEzNzQsIDQxMzc5LCA0MTM4NCwgCisgICAgNDEzODksIDQxMzk0LCA0MTQwMiwgNDE0MTAsIDQxNDE0LCA0MTQxOCwgNDE0MjAsIDQxNDI1LCA0MTQyOSwgNDE0MzMsIAorICAgIDQxNDQxLCA0MTQ0OSwgNDE0NTUsIDQxNDYxLCA0MTQ3MCwgNDE0NzksIDQxNDg0LCA0MTQ4OSwgNDE0OTcsIDQxNTA1LCAKKyAgICA0MTUwNywgNDE1MDksIDQxNTE0LCA0MTUxOSwgNDE1MjUsIDQxNTMxLCA0MTUzNywgNDE1NDMsIDQxNTQ3LCA0MTU1MSwgCisgICAgNDE1NTgsIDQxNTY1LCA0MTU3MSwgNDE1NzcsIDQxNTg3LCA0MTU5NywgNDE2MDUsIDQxNjEzLCA0MTYxNSwgNDE2MTksIAorICAgIDQxNjIzLCA0MTYyOCwgNDE2MzMsIDQxNjQwLCA0MTY0NywgNDE2NTAsIDQxNjUzLCA0MTY1NiwgNDE2NTksIDQxNjYyLCAKKyAgICA0MTY2NywgNDE2NzEsIDQxNjc2LCA0MTY4MSwgNDE2ODQsIDQxNjg3LCA0MTY5MCwgNDE2OTMsIDQxNjk2LCA0MTcwMCwgCisgICAgNDE3MDMsIDQxNzA2LCA0MTcwOSwgNDE3MTIsIDQxNzE0LCA0MTcxNiwgNDE3MTgsIDQxNzIwLCA0MTcyOCwgNDE3MzYsIAorICAgIDQxNzQyLCA0MTc0NiwgNDE3NTIsIDQxNzYyLCA0MTc2OCwgNDE3NzQsIDQxNzgwLCA0MTc4OCwgNDE3OTYsIDQxODA3LCAKKyAgICA0MTgxMSwgNDE4MTUsIDQxODE3LCA0MTgyMywgNDE4MjUsIDQxODI3LCA0MTgyOSwgNDE4MzEsIDQxODM3LCA0MTg0MCwgCisgICAgNDE4NDYsIDQxODUyLCA0MTg1NiwgNDE4NjAsIDQxODY0LCA0MTg2NywgNDE4NzEsIDQxODc1LCA0MTg3NywgNDE4ODYsIAorICAgIDQxODk1LCA0MTkwMCwgNDE5MDUsIDQxOTExLCA0MTkxNywgNDE5MjMsIDQxOTI2LCA0MTkyOSwgNDE5MzIsIDQxOTM1LCAKKyAgICA0MTkzNywgNDE5NDIsIDQxOTQ3LCA0MTk1MiwgNDE5NTgsIDQxOTY0LCA0MTk3MiwgNDE5ODAsIDQxOTg2LCA0MTk5MiwgCisgICAgNDE5OTgsIDQyMDA0LCA0MjAxMywgNDIwMjIsIDQyMDMxLCA0MjA0MCwgNDIwNDksIDQyMDU4LCA0MjA2NywgNDIwNzYsIAorICAgIDQyMDg1LCA0MjA5NCwgNDIxMDIsIDQyMTE0LCA0MjEyNCwgNDIxMzksIDQyMTQyLCA0MjE0NywgNDIxNTMsIDQyMTU5LCAKKyAgICA0MjE2NiwgNDIxODAsIDQyMTk1LCA0MjIwMSwgNDIyMDcsIDQyMjE0LCA0MjIyMCwgNDIyMjgsIDQyMjM0LCA0MjI0NywgCisgICAgNDIyNjEsIDQyMjY2LCA0MjI3MiwgNDIyNzksIDQyMjgyLCA0MjI4NSwgNDIyODcsIDQyMjkwLCA0MjI5MywgNDIyOTUsIAorICAgIDQyMjk3LCA0MjMwMSwgNDIzMDQsIDQyMzA3LCA0MjMxMCwgNDIzMTMsIDQyMzE4LCA0MjMyMywgNDIzMjgsIDQyMzMzLCAKKyAgICA0MjMzOCwgNDIzNDEsIDQyMzQzLCA0MjM0NSwgNDIzNDcsIDQyMzUxLCA0MjM1NSwgNDIzNTksIDQyMzY1LCA0MjM3MCwgCisgICAgNDIzNzIsIDQyMzc0LCA0MjM3OSwgNDIzODQsIDQyMzg5LCA0MjM5NCwgNDIzOTksIDQyNDA0LCA0MjQwNiwgNDI0MDgsIAorICAgIDQyNDE3LCA0MjQyMSwgNDI0MjksIDQyNDM4LCA0MjQ0MCwgNDI0NDUsIDQyNDUwLCA0MjQ1OCwgNDI0NjIsIDQyNDY0LCAKKyAgICA0MjQ2OCwgNDI0NzAsIDQyNDc0LCA0MjQ3OCwgNDI0ODIsIDQyNDg0LCA0MjQ4NiwgNDI0ODgsIDQyNDk1LCA0MjUwNCwgCisgICAgNDI1MTMsIDQyNTIyLCA0MjUzMSwgNDI1NDAsIDQyNTQ5LCA0MjU1OCwgNDI1NjcsIDQyNTc1LCA0MjU4MywgNDI1OTIsIAorICAgIDQyNjAxLCA0MjYxMCwgNDI2MTksIDQyNjI3LCA0MjYzNSwgNDI2NDQsIDQyNjUzLCA0MjY2MiwgNDI2NzIsIDQyNjgxLCAKKyAgICA0MjY5MSwgNDI3MDAsIDQyNzEwLCA0MjcxOSwgNDI3MjksIDQyNzM5LCA0Mjc0OCwgNDI3NTgsIDQyNzY3LCA0Mjc3NywgCisgICAgNDI3ODYsIDQyNzk2LCA0MjgwNSwgNDI4MTQsIDQyODIzLCA0MjgzMiwgNDI4NDEsIDQyODUxLCA0Mjg2MCwgNDI4NjksIAorICAgIDQyODc4LCA0Mjg4OCwgNDI4OTcsIDQyOTA2LCA0MjkxNSwgNDI5MjQsIDQyOTM0LCA0Mjk0NCwgNDI5NTMsIDQyOTYyLCAKKyAgICA0Mjk3MCwgNDI5NzgsIDQyOTg1LCA0Mjk5MywgNDMwMDIsIDQzMDEzLCA0MzAyMiwgNDMwMzEsIDQzMDQwLCA0MzA0NywgCisgICAgNDMwNTQsIDQzMDYxLCA0MzA3MCwgNDMwNzksIDQzMDg4LCA0MzA5NywgNDMxMDQsIDQzMTA5LCA0MzExOCwgNDMxMjMsIAorICAgIDQzMTI2LCA0MzEzNCwgNDMxMzcsIDQzMTQyLCA0MzE0NywgNDMxNTAsIDQzMTUzLCA0MzE2MSwgNDMxNjQsIDQzMTY5LCAKKyAgICA0MzE3MiwgNDMxNzksIDQzMTg0LCA0MzE5MiwgNDMxOTUsIDQzMTk4LCA0MzIwMSwgNDMyMDYsIDQzMjExLCA0MzIxNCwgCisgICAgNDMyMTcsIDQzMjI1LCA0MzIyOCwgNDMyMzUsIDQzMjQyLCA0MzI0NiwgNDMyNTAsIDQzMjU1LCA0MzI2MCwgNDMyNjYsIAorICAgIDQzMjcxLCA0MzI3NywgNDMyODMsIDQzMjg4LCA0MzI5NCwgNDMzMDIsIDQzMzA4LCA0MzMxNiwgNDMzMjQsIDQzMzMwLCAKKyAgICA0MzMzOCwgNDMzNDYsIDQzMzU1LCA0MzM2MywgNDMzNjksIDQzMzc3LCA0MzM4NiwgNDMzOTQsIDQzMzk4LCA0MzQwMywgCisgICAgNDM0MTYsIDQzNDI5LCA0MzQzMywgNDM0MzcsIDQzNDQxLCA0MzQ0NSwgNDM0NTUsIDQzNDU5LCA0MzQ2NCwgNDM0NjksIAorICAgIDQzNDc0LCA0MzQ3OSwgNDM0ODQsIDQzNDg5LCA0MzQ5OSwgNDM1MDksIDQzNTE3LCA0MzUyNywgNDM1MzcsIDQzNTQ1LCAKKyAgICA0MzU1NSwgNDM1NjUsIDQzNTczLCA0MzU4MywgNDM1OTMsIDQzNjAxLCA0MzYwOSwgNDM2MTksIDQzNjI5LCA0MzYzMiwgCisgICAgNDM2MzUsIDQzNjM4LCA0MzY0MywgNDM2NDcsIDQzNjUzLCA0MzY2MCwgNDM2NjcsIDQzNjc1LCA0MzY4MiwgNDM2ODYsIAorICAgIDQzNjkwLCA0MzY5NCwgNDM2OTgsIDQzNzAwLCA0MzcwNCwgNDM3MDgsIDQzNzEzLCA0MzcxOCwgNDM3MjUsIDQzNzMyLCAKKyAgICA0MzczNSwgNDM3NDIsIDQzNzQ0LCA0Mzc0NiwgNDM3NTAsIDQzNzU0LCA0Mzc1OSwgNDM3NjUsIDQzNzcxLCA0Mzc3NywgCisgICAgNDM3ODMsIDQzNzkyLCA0MzgwMSwgNDM4MTAsIDQzODE0LCA0MzgxNiwgNDM4MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQzODI3LCA0MzgzMSwgNDM4MzgsIDQzODQ1LCA0Mzg1MiwgNDM4NTksIDQzODYzLCA0Mzg2NywgCisgICAgNDM4NzEsIDQzODc1LCA0Mzg4MCwgNDM4ODYsIDQzODkxLCA0Mzg5NywgNDM5MDMsIDQzOTA5LCA0MzkxNSwgNDM5MjMsIAorICAgIDQzOTMwLCA0MzkzNywgNDM5NDQsIDQzOTUxLCA0Mzk1NiwgNDM5NjIsIDQzOTcxLCA0Mzk3NSwgNDM5ODIsIDQzOTg2LCAKKyAgICA0Mzk5MCwgNDM5OTYsIDQ0MDAyLCA0NDAwOCwgNDQwMTQsIDQ0MDE4LCA0NDAyMiwgNDQwMjUsIDQ0MDI4LCA0NDAzMiwgCisgICAgNDQwMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ0MDQ2LCA0NDA0OSwgNDQwNTMsIDQ0MDU3LCA0NDA2MywgNDQwNjksIDQ0MDc1LCA0NDA4MywgNDQwOTAsIAorICAgIDQ0MDk0LCA0NDEwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDQxMDcsIDQ0MTEwLCA0NDExMywgNDQxMTYsIDQ0MTE5LCA0NDEyMiwgNDQxMjUsIDQ0MTI4LCA0NDEzMSwgNDQxMzQsIAorICAgIDQ0MTM4LCA0NDE0MiwgNDQxNDYsIDQ0MTUwLCA0NDE1NCwgNDQxNTgsIDQ0MTYyLCA0NDE2NiwgNDQxNzAsIDQ0MTc0LCAKKyAgICA0NDE3OCwgNDQxODEsIDQ0MTg0LCA0NDE4NywgNDQxOTAsIDQ0MTkzLCA0NDE5NiwgNDQxOTksIDQ0MjAyLCA0NDIwNSwgCisgICAgNDQyMDksIDQ0MjEzLCA0NDIxNywgNDQyMjEsIDQ0MjI1LCA0NDIyOSwgNDQyMzMsIDQ0MjM3LCA0NDI0MSwgNDQyNDUsIAorICAgIDQ0MjQ5LCA0NDI1NSwgNDQyNjEsIDQ0MjY3LCA0NDI3NCwgNDQyODEsIDQ0Mjg4LCA0NDI5NSwgNDQzMDIsIDQ0MzA5LCAKKyAgICA0NDMxNiwgNDQzMjMsIDQ0MzMwLCA0NDMzNywgNDQzNDQsIDQ0MzUxLCA0NDM1OCwgNDQzNjUsIDQ0MzcyLCA0NDM3OSwgCisgICAgNDQzODYsIDQ0MzkxLCA0NDM5NywgNDQ0MDMsIDQ0NDA5LCA0NDQxNCwgNDQ0MjAsIDQ0NDI2LCA0NDQzMiwgNDQ0MzcsIAorICAgIDQ0NDQzLCA0NDQ0OSwgNDQ0NTQsIDQ0NDU5LCA0NDQ2NSwgNDQ0NzAsIDQ0NDc2LCA0NDQ4MiwgNDQ0ODcsIDQ0NDkzLCAKKyAgICA0NDQ5OSwgNDQ1MDQsIDQ0NTEwLCA0NDUxNiwgNDQ1MjIsIDQ0NTI4LCA0NDUzNCwgNDQ1MzksIDQ0NTQ1LCA0NDU1MSwgCisgICAgNDQ1NTcsIDQ0NTYyLCA0NDU2OCwgNDQ1NzQsIDQ0NTgwLCA0NDU4NSwgNDQ1OTEsIDQ0NTk3LCA0NDYwMiwgNDQ2MDcsIAorICAgIDQ0NjEzLCA0NDYxOCwgNDQ2MjQsIDQ0NjMwLCA0NDYzNSwgNDQ2NDEsIDQ0NjQ3LCA0NDY1MiwgNDQ2NTgsIDQ0NjY0LCAKKyAgICA0NDY3MCwgNDQ2NzYsIDQ0NjgyLCA0NDY4NywgNDQ2OTMsIDQ0Njk5LCA0NDcwNSwgNDQ3MTAsIDQ0NzE2LCA0NDcyMiwgCisgICAgNDQ3MjgsIDQ0NzMzLCA0NDczOSwgNDQ3NDUsIDQ0NzUwLCA0NDc1NSwgNDQ3NjEsIDQ0NzY2LCA0NDc3MiwgNDQ3NzgsIAorICAgIDQ0NzgzLCA0NDc4OSwgNDQ3OTUsIDQ0ODAwLCA0NDgwNiwgNDQ4MTIsIDQ0ODE4LCA0NDgyNCwgNDQ4MzAsIDQ0ODM0LCAKKyAgICA0NDgzOSwgNDQ4NDQsIDQ0ODQ5LCA0NDg1NCwgNDQ4NTksIDQ0ODY0LCA0NDg2OSwgNDQ4NzQsIDQ0ODc5LCA0NDg4NCwgCisgICAgNDQ4ODgsIDQ0ODkyLCA0NDg5NiwgNDQ5MDAsIDQ0OTA0LCA0NDkwOCwgNDQ5MTIsIDQ0OTE2LCA0NDkyMCwgNDQ5MjUsIAorICAgIDQ0OTMwLCA0NDkzNSwgNDQ5NDAsIDQ0OTQ1LCA0NDk1MCwgNDQ5NTksIDQ0OTY4LCA0NDk3NywgNDQ5ODYsIDQ0OTk1LCAKKyAgICA0NTAwNCwgNDUwMTMsIDQ1MDIyLCA0NTAyOSwgNDUwMzcsIDQ1MDQ1LCA0NTA1MiwgNDUwNTksIDQ1MDY3LCA0NTA3NSwgCisgICAgNDUwODIsIDQ1MDg5LCA0NTA5NywgNDUxMDUsIDQ1MTEyLCA0NTExOSwgNDUxMjcsIDQ1MTM1LCA0NTE0MiwgNDUxNDksIAorICAgIDQ1MTU3LCA0NTE2NiwgNDUxNzUsIDQ1MTgzLCA0NTE5MiwgNDUyMDEsIDQ1MjA4LCA0NTIxNSwgNDUyMjMsIDQ1MjMyLCAKKyAgICA0NTI0MSwgNDUyNDksIDQ1MjU4LCA0NTI2NywgNDUyNzQsIDQ1MjgxLCA0NTI5MCwgNDUyOTksIDQ1MzA3LCA0NTMxNSwgCisgICAgNDUzMjQsIDQ1MzMzLCA0NTM0MCwgNDUzNDcsIDQ1MzU2LCA0NTM2NSwgNDUzNzMsIDQ1MzgxLCA0NTM5MCwgNDUzOTksIAorICAgIDQ1NDA2LCA0NTQxMywgNDU0MjIsIDQ1NDMxLCA0NTQzOSwgNDU0NDgsIDQ1NDU3LCA0NTQ2NSwgNDU0NzUsIDQ1NDg1LCAKKyAgICA0NTQ5NSwgNDU1MDUsIDQ1NTE0LCA0NTUyMywgNDU1MzIsIDQ1NTQxLCA0NTU0OCwgNDU1NTYsIDQ1NTY0LCA0NTU3MiwgCisgICAgNDU1ODAsIDQ1NTg1LCA0NTU5MCwgNDU1OTksIDQ1NjA3LCA0NTYxNCwgNDU2MjMsIDQ1NjMxLCA0NTYzOCwgNDU2NDcsIAorICAgIDQ1NjU1LCA0NTY2MiwgNDU2NzEsIDQ1Njc5LCA0NTY4NiwgNDU2OTUsIDQ1NzAzLCA0NTcxMCwgNDU3MTksIDQ1NzI3LCAKKyAgICA0NTczNCwgNDU3NDMsIDQ1NzUxLCA0NTc1OCwgNDU3NjcsIDQ1Nzc1LCA0NTc4MiwgNDU3OTEsIDQ1Nzk5LCA0NTgwNiwgCisgICAgNDU4MTUsIDQ1ODI0LCA0NTgzMywgNDU4NDIsIDQ1ODU2LCA0NTg3MCwgNDU4NzcsIDQ1ODgyLCA0NTg4NywgNDU4OTIsIAorICAgIDQ1ODk3LCA0NTkwMiwgNDU5MDcsIDQ1OTEyLCA0NTkxNywgNDU5MjUsIDQ1OTMzLCA0NTk0MSwgNDU5NDksIDQ1OTU0LCAKKyAgICA0NTk2MSwgNDU5NjgsIDQ1OTc1LCA0NTk4MCwgNDU5ODgsIDQ1OTk1LCA0NjAwMywgNDYwMDcsIDQ2MDE0LCA0NjAyMCwgCisgICAgNDYwMjcsIDQ2MDMxLCA0NjAzNywgNDYwNDMsIDQ2MDQ5LCA0NjA1MywgNDYwNTYsIDQ2MDYwLCA0NjA2NCwgNDYwNzEsIAorICAgIDQ2MDc3LCA0NjA4MywgNDYwODksIDQ2MDk1LCA0NjEwOSwgNDYxMTksIDQ2MTMzLCA0NjE0NywgNDYxNTMsIDQ2MTYzLCAKKyAgICA0NjE3NywgNDYxODAsIDQ2MTgzLCA0NjE5MCwgNDYxOTgsIDQ2MjAzLCA0NjIwOCwgNDYyMTYsIDQ2MjI4LCA0NjI0MCwgCisgICAgNDYyNDgsIDQ2MjUyLCA0NjI1NiwgNDYyNTksIDQ2MjYyLCA0NjI2NiwgNDYyNzAsIDQ2MjczLCA0NjI3NiwgNDYyODEsIAorICAgIDQ2Mjg2LCA0NjI5MiwgNDYyOTgsIDQ2MzAzLCA0NjMwOCwgNDYzMTQsIDQ2MzIwLCA0NjMyNSwgNDYzMzAsIDQ2MzM1LCAKKyAgICA0NjM0MCwgNDYzNDYsIDQ2MzUyLCA0NjM1NywgNDYzNjIsIDQ2MzY4LCA0NjM3NCwgNDYzNzksIDQ2Mzg0LCA0NjM4NywgCisgICAgNDYzOTAsIDQ2Mzk5LCA0NjQwMSwgNDY0MDMsIDQ2NDA2LCA0NjQxMCwgNDY0MTYsIDQ2NDE4LCA0NjQyMSwgNDY0MjgsIAorICAgIDQ2NDM1LCA0NjQ0MywgNDY0NTEsIDQ2NDYxLCA0NjQ3NSwgNDY0ODAsIDQ2NDg1LCA0NjQ4OSwgNDY0OTQsIDQ2NTAyLCAKKyAgICA0NjUxMCwgNDY1MTksIDQ2NTI4LCA0NjUzNywgNDY1NDYsIDQ2NTUxLCA0NjU1NiwgNDY1NjIsIDQ2NTY4LCA0NjU3NCwgCisgICAgNDY1ODAsIDQ2NTgzLCA0NjU4OSwgNDY1OTUsIDQ2NjA1LCA0NjYxNSwgNDY2MjMsIDQ2NjMxLCA0NjY0MCwgNDY2NDksIAorICAgIDQ2NjUzLCA0NjY2MSwgNDY2NjksIDQ2Njc3LCA0NjY4NSwgNDY2OTQsIDQ2NzAzLCA0NjcxMiwgNDY3MjEsIDQ2NzI2LCAKKyAgICA0NjczMSwgNDY3MzYsIDQ2NzQxLCA0Njc0NiwgNDY3NTIsIDQ2NzU4LCA0Njc2MywgNDY3NjksIDQ2NzcxLCA0Njc3MywgCisgICAgNDY3NzUsIDQ2Nzc3LCA0Njc4MCwgNDY3ODMsIDQ2Nzg1LCA0Njc4NywgNDY3ODksIDQ2NzkzLCA0Njc5NywgNDY3OTksIAorICAgIDQ2ODAxLCA0NjgwNCwgNDY4MDcsIDQ2ODExLCA0NjgxNywgNDY4MjMsIDQ2ODI1LCA0NjgzMiwgNDY4MzYsIDQ2ODQxLCAKKyAgICA0Njg0NiwgNDY4NDgsIDQ2ODU4LCA0Njg2NCwgNDY4NzAsIDQ2ODc2LCA0Njg4MiwgNDY4ODgsIDQ2ODk0LCA0Njg5OSwgCisgICAgNDY5MDIsIDQ2OTA1LCA0NjkwOCwgNDY5MTAsIDQ2OTEyLCA0NjkxNiwgNDY5MjAsIDQ2OTI1LCA0NjkzMCwgNDY5MzUsIAorICAgIDQ2OTM4LCA0Njk0MiwgNDY5NDcsIDQ2OTUwLCA0Njk1NCwgNDY5NTksIDQ2OTY0LCA0Njk2OSwgNDY5NzQsIDQ2OTc5LCAKKyAgICA0Njk4NCwgNDY5ODksIDQ2OTk0LCA0Njk5OSwgNDcwMDQsIDQ3MDA5LCA0NzAxNCwgNDcwMjAsIDQ3MDI2LCA0NzAzMiwgCisgICAgNDcwMzQsIDQ3MDM3LCA0NzAzOSwgNDcwNDIsIDQ3MDQ0LCA0NzA0NiwgNDcwNDgsIDQ3MDUwLCA0NzA1MiwgNDcwNTQsIAorICAgIDQ3MDU2LCA0NzA1OCwgNDcwNjAsIDQ3MDYyLCA0NzA2NCwgNDcwNjYsIDQ3MDY4LCA0NzA3MCwgNDcwNzIsIDQ3MDc0LCAKKyAgICA0NzA3NiwgNDcwODEsIDQ3MDg2LCA0NzA5MSwgNDcwOTYsIDQ3MTAxLCA0NzEwNiwgNDcxMTEsIDQ3MTE2LCA0NzEyMSwgCisgICAgNDcxMjYsIDQ3MTMxLCA0NzEzNiwgNDcxNDEsIDQ3MTQ2LCA0NzE1MSwgNDcxNTYsIDQ3MTYxLCA0NzE2NiwgNDcxNzEsIAorICAgIDQ3MTc2LCA0NzE4MCwgNDcxODQsIDQ3MTg4LCA0NzE5NCwgNDcyMDAsIDQ3MjA1LCA0NzIxMCwgNDcyMTUsIDQ3MjIwLCAKKyAgICA0NzIyNSwgNDcyMzAsIDQ3MjM4LCA0NzI0NiwgNDcyNTQsIDQ3MjYyLCA0NzI3MCwgNDcyNzgsIDQ3Mjg2LCA0NzI5NCwgCisgICAgNDczMDAsIDQ3MzA1LCA0NzMxMCwgNDczMTUsIDQ3MzE4LCA0NzMyMiwgNDczMjYsIDQ3MzMwLCA0NzMzNCwgNDczMzgsIAorICAgIDQ3MzQyLCA0NzM0OSwgNDczNTYsIDQ3MzY0LCA0NzM3MiwgNDczNzcsIDQ3MzgyLCA0NzM4OSwgNDczOTYsIDQ3NDAzLCAKKyAgICA0NzQxMCwgNDc0MTMsIDQ3NDE2LCA0NzQyMSwgNDc0MjMsIDQ3NDI3LCA0NzQzMiwgNDc0MzQsIDQ3NDM2LCA0NzQzOCwgCisgICAgNDc0NDAsIDQ3NDQ1LCA0NzQ0OCwgNDc0NTAsIDQ3NDU1LCA0NzQ2MiwgNDc0NjksIDQ3NDcyLCA0NzQ3NiwgNDc0ODEsIAorICAgIDQ3NDg2LCA0NzQ5NCwgNDc1MDAsIDQ3NTA2LCA0NzUxOCwgNDc1MjUsIDQ3NTMyLCA0NzUzNywgNDc1NDIsIDQ3NTQ4LCAKKyAgICA0NzU1MSwgNDc1NTQsIDQ3NTU5LCA0NzU2MSwgNDc1NjUsIDQ3NTY3LCA0NzU2OSwgNDc1NzEsIDQ3NTczLCA0NzU3NSwgCisgICAgNDc1NzcsIDQ3NTgyLCA0NzU4NCwgNDc1ODYsIDQ3NTg4LCA0NzU5MCwgNDc1OTQsIDQ3NTk2LCA0NzU5OSwgNDc2MDQsIAorICAgIDQ3NjA5LCA0NzYxNCwgNDc2MTksIDQ3NjI1LCA0NzYzMSwgNDc2MzMsIDQ3NjM2LCA0NzY0MywgNDc2NTAsIDQ3NjU3LCAKKyAgICA0NzY2NCwgNDc2NjgsIDQ3NjcyLCA0NzY3NCwgNDc2NzYsIDQ3NjgwLCA0NzY4NiwgNDc2OTEsIDQ3NjkzLCA0NzY5NywgCisgICAgNDc3MDYsIDQ3NzE0LCA0NzcyMiwgNDc3MjgsIDQ3NzM0LCA0NzczOSwgNDc3NDUsIDQ3NzUwLCA0Nzc1MywgNDc3NjcsIAorICAgIDQ3NzcwLCA0Nzc3NSwgNDc3ODAsIDQ3Nzg2LCA0Nzc5NiwgNDc3OTgsIDQ3ODA0LCA0NzgxMCwgNDc4MTQsIDQ3ODIxLCAKKyAgICA0NzgyNSwgNDc4MjcsIDQ3ODI5LCA0NzgzMywgNDc4MzksIDQ3ODQ0LCA0Nzg1MCwgNDc4NTIsIDQ3ODU4LCA0Nzg2MCwgCisgICAgNDc4NjYsIDQ3ODY4LCA0Nzg3MCwgNDc4NzUsIDQ3ODc3LCA0Nzg4MSwgNDc4ODYsIDQ3ODg4LCA0Nzg5MywgNDc4OTgsIAorICAgIDQ3OTAyLCA0NzkwOSwgMCwgNDc5MTksIDQ3OTI1LCA0NzkyOCwgNDc5MzQsIDQ3OTM3LCA0Nzk0MiwgNDc5NDcsIDQ3OTUxLCAKKyAgICA0Nzk1MywgNDc5NTUsIDQ3OTU5LCA0Nzk2MywgNDc5NjcsIDQ3OTcxLCA0Nzk3NiwgNDc5NzgsIDQ3OTgzLCA0Nzk4NiwgCisgICAgNDc5ODksIDQ3OTkyLCA0Nzk5NiwgNDgwMDAsIDQ4MDA1LCA0ODAwOSwgNDgwMTQsIDQ4MDE5LCA0ODAyMywgNDgwMjgsIAorICAgIDQ4MDM0LCA0ODAzNywgNDgwNDMsIDQ4MDQ4LCA0ODA1MiwgNDgwNTcsIDQ4MDYzLCA0ODA2OSwgNDgwNzYsIDQ4MDgyLCAKKyAgICA0ODA4OSwgNDgwOTYsIDQ4MDk4LCA0ODEwNSwgNDgxMDksIDQ4MTE1LCA0ODEyMSwgNDgxMjYsIDQ4MTMyLCA0ODEzNiwgCisgICAgNDgxNDEsIDQ4MTQ0LCA0ODE0OSwgNDgxNTUsIDQ4MTYyLCA0ODE3MCwgNDgxNzcsIDQ4MTg2LCA0ODE5NiwgNDgyMDMsIAorICAgIDQ4MjA5LCA0ODIxMywgNDgyMjAsIDQ4MjI1LCA0ODIzNCwgNDgyMzcsIDQ4MjQwLCA0ODI0OSwgNDgyNTksIDQ4MjY2LCAKKyAgICA0ODI2OCwgNDgyNzQsIDQ4Mjc5LCA0ODI4MSwgNDgyODQsIDQ4Mjg4LCA0ODI5NiwgNDgzMDUsIDQ4MzA4LCA0ODMxMywgCisgICAgNDgzMTgsIDQ4MzI2LCA0ODMzNCwgNDgzNDIsIDQ4MzUwLCA0ODM1NiwgNDgzNjIsIDQ4MzY4LCA0ODM3NiwgNDgzODEsIAorICAgIDQ4Mzg0LCA0ODM4OCwgNDgzOTEsIDQ4NDAzLCA0ODQxMywgNDg0MjQsIDQ4NDMzLCA0ODQ0NCwgNDg0NTQsIDQ4NDYzLCAKKyAgICA0ODQ2OSwgNDg0NzcsIDQ4NDgxLCA0ODQ4OSwgNDg0OTMsIDQ4NTAxLCA0ODUwOCwgNDg1MTUsIDQ4NTI0LCA0ODUzMywgCisgICAgNDg1NDMsIDQ4NTUzLCA0ODU2MywgNDg1NzMsIDQ4NTgyLCA0ODU5MSwgNDg2MDEsIDQ4NjExLCA0ODYyMCwgNDg2MjksIAorICAgIDQ4NjM1LCA0ODY0MSwgNDg2NDcsIDQ4NjUzLCA0ODY1OSwgNDg2NjUsIDQ4NjcxLCA0ODY3NywgNDg2ODMsIDQ4NjkwLCAKKyAgICA0ODY5NiwgNDg3MDIsIDQ4NzA4LCA0ODcxNCwgNDg3MjAsIDQ4NzI2LCA0ODczMiwgNDg3MzgsIDQ4NzQ0LCA0ODc1MSwgCisgICAgNDg3NTgsIDQ4NzY1LCA0ODc3MiwgNDg3NzksIDQ4Nzg2LCA0ODc5MywgNDg4MDAsIDQ4ODA3LCA0ODgxNCwgNDg4MjIsIAorICAgIDQ4ODI3LCA0ODgzMCwgNDg4MzQsIDQ4ODM4LCA0ODg0NCwgNDg4NDcsIDQ4ODUzLCA0ODg1OSwgNDg4NjQsIDQ4ODY4LCAKKyAgICA0ODg3MywgNDg4NzksIDQ4ODg2LCA0ODg4OSwgNDg4OTYsIDQ4OTAzLCA0ODkwNywgNDg5MTYsIDQ4OTI1LCA0ODkzMCwgCisgICAgNDg5MzYsIDQ4OTQxLCA0ODk0NiwgNDg5NTMsIDQ4OTYwLCA0ODk2OCwgNDg5NzYsIDQ4OTg1LCA0ODk4OSwgNDg5OTgsIAorICAgIDQ5MDAzLCA0OTAwNywgNDkwMTQsIDQ5MDE4LCA0OTAyNSwgNDkwMzMsIDQ5MDM4LCA0OTA0NiwgNDkwNTAsIDQ5MDU1LCAKKyAgICA0OTA1OSwgNDkwNjQsIDQ5MDY4LCA0OTA3MywgNDkwNzgsIDQ5MDg3LCA0OTA4OSwgNDkwOTIsIDQ5MDk1LCA0OTEwMiwgCisgICAgNDkxMDksIDQ5MTE0LCA0OTEyMiwgNDkxMjgsIDQ5MTM0LCA0OTEzOSwgNDkxNDIsIDQ5MTQ3LCA0OTE1MiwgNDkxNTcsIAorICAgIDQ5MTY1LCA0OTE2OSwgNDkxNzYsIDQ5MTg0LCA0OTE5MiwgNDkxOTcsIDQ5MjAyLCA0OTIwOCwgNDkyMTMsIDQ5MjE4LCAKKyAgICA0OTIyNCwgNDkyMjksIDQ5MjMyLCA0OTIzNiwgNDkyNDAsIDQ5MjQ3LCA0OTI1NiwgNDkyNjEsIDQ5MjcwLCA0OTI3OSwgCisgICAgNDkyODUsIDQ5MjkxLCA0OTI5NiwgNDkzMDEsIDQ5MzA2LCA0OTMxMSwgNDkzMTcsIDQ5MzIzLCA0OTMzMSwgNDkzMzksIAorICAgIDQ5MzQ1LCA0OTM1MSwgNDkzNTYsIDQ5MzYxLCA0OTM2OCwgNDkzNzUsIDQ5MzgxLCA0OTM4NCwgNDkzODcsIDQ5MzkxLCAKKyAgICA0OTM5NSwgNDkzOTksIDQ5NDA0LCA0OTQxMCwgNDk0MTYsIDQ5NDIzLCA0OTQzMCwgNDk0MzUsIDQ5NDM5LCA0OTQ0MywgCisgICAgNDk0NDcsIDQ5NDUxLCA0OTQ1NSwgNDk0NTksIDQ5NDYzLCA0OTQ2NywgNDk0NzEsIDQ5NDc1LCA0OTQ3OSwgNDk0ODMsIAorICAgIDQ5NDg3LCA0OTQ5MSwgNDk0OTUsIDQ5NDk5LCA0OTUwMywgNDk1MDcsIDQ5NTExLCA0OTUxNSwgNDk1MTksIDQ5NTIzLCAKKyAgICA0OTUyNywgNDk1MzEsIDQ5NTM1LCA0OTUzOSwgNDk1NDMsIDQ5NTQ3LCA0OTU1MSwgNDk1NTUsIDQ5NTU5LCA0OTU2MywgCisgICAgNDk1NjcsIDQ5NTcxLCA0OTU3NSwgNDk1NzksIDQ5NTgzLCA0OTU4NywgNDk1OTEsIDQ5NTk1LCA0OTU5OSwgNDk2MDMsIAorICAgIDQ5NjA3LCA0OTYxMSwgNDk2MTUsIDQ5NjE5LCA0OTYyMywgNDk2MjcsIDQ5NjMxLCA0OTYzNSwgNDk2MzksIDQ5NjQzLCAKKyAgICA0OTY0NywgNDk2NTEsIDQ5NjU1LCA0OTY1OSwgNDk2NjMsIDQ5NjY3LCA0OTY3MSwgNDk2NzUsIDQ5Njc5LCA0OTY4MywgCisgICAgNDk2ODcsIDQ5NjkxLCA0OTY5NSwgNDk2OTksIDQ5NzAzLCA0OTcwNywgNDk3MTEsIDQ5NzE1LCA0OTcxOSwgNDk3MjMsIAorICAgIDQ5NzI3LCA0OTczMSwgNDk3MzUsIDQ5NzM5LCA0OTc0MywgNDk3NDcsIDQ5NzUxLCA0OTc1NSwgNDk3NTksIDQ5NzYzLCAKKyAgICA0OTc2NywgNDk3NzEsIDQ5Nzc1LCA0OTc3OSwgNDk3ODMsIDQ5Nzg3LCA0OTc5MSwgNDk3OTUsIDQ5Nzk5LCA0OTgwMywgCisgICAgNDk4MDcsIDQ5ODExLCA0OTgxNSwgNDk4MTksIDQ5ODIzLCA0OTgyNywgNDk4MzEsIDQ5ODM1LCA0OTgzOSwgNDk4NDMsIAorICAgIDQ5ODQ3LCA0OTg1MSwgNDk4NTUsIDQ5ODU5LCA0OTg2MywgNDk4NjcsIDQ5ODcxLCA0OTg3NSwgNDk4NzksIDQ5ODgzLCAKKyAgICA0OTg4NywgNDk4OTEsIDQ5ODk1LCA0OTg5OSwgNDk5MDMsIDQ5OTA3LCA0OTkxMSwgNDk5MTUsIDQ5OTE5LCA0OTkyMywgCisgICAgNDk5MjcsIDQ5OTMxLCA0OTkzNSwgNDk5MzksIDQ5OTQzLCA0OTk0NywgNDk5NTEsIDQ5OTU1LCA0OTk1OSwgNDk5NjMsIAorICAgIDQ5OTY3LCA0OTk3MSwgNDk5NzUsIDQ5OTc5LCA0OTk4MywgNDk5ODcsIDQ5OTkxLCA0OTk5NSwgNDk5OTksIDUwMDAzLCAKKyAgICA1MDAwNywgNTAwMTEsIDUwMDE1LCA1MDAxOSwgNTAwMjMsIDUwMDI3LCA1MDAzMSwgNTAwMzUsIDUwMDM5LCA1MDA0MywgCisgICAgNTAwNDcsIDUwMDUxLCA1MDA1NSwgNTAwNTksIDUwMDYzLCA1MDA2NywgNTAwNzEsIDUwMDc1LCA1MDA3OSwgNTAwODMsIAorICAgIDUwMDg3LCA1MDA5MSwgNTAwOTUsIDUwMDk5LCA1MDEwMywgNTAxMDcsIDUwMTExLCA1MDExNSwgNTAxMTksIDUwMTIzLCAKKyAgICA1MDEyNywgNTAxMzEsIDUwMTM1LCA1MDEzOSwgNTAxNDMsIDUwMTQ3LCA1MDE1MSwgNTAxNTUsIDUwMTU5LCA1MDE2MywgCisgICAgNTAxNjcsIDUwMTcxLCA1MDE3NSwgNTAxNzksIDUwMTgzLCA1MDE4NywgNTAxOTEsIDUwMTk1LCA1MDE5OSwgNTAyMDMsIAorICAgIDUwMjA3LCA1MDIxMSwgNTAyMTUsIDUwMjE5LCA1MDIyMywgNTAyMjcsIDUwMjMxLCA1MDIzNSwgNTAyMzksIDUwMjQzLCAKKyAgICA1MDI0NywgNTAyNTEsIDUwMjU1LCA1MDI1OSwgNTAyNjMsIDUwMjY3LCA1MDI3MSwgNTAyNzUsIDUwMjc5LCA1MDI4MywgCisgICAgNTAyODcsIDUwMjkxLCA1MDI5NSwgNTAyOTksIDUwMzAzLCA1MDMwNywgNTAzMTEsIDUwMzE1LCA1MDMxOSwgNTAzMjMsIAorICAgIDUwMzI3LCA1MDMzMSwgNTAzMzUsIDUwMzM5LCA1MDM0MywgNTAzNDcsIDUwMzUxLCA1MDM1NSwgNTAzNTksIDUwMzYzLCAKKyAgICA1MDM2NywgNTAzNzEsIDUwMzc1LCA1MDM3OSwgNTAzODMsIDUwMzg3LCA1MDM5MSwgNTAzOTUsIDUwMzk5LCA1MDQwMywgCisgICAgNTA0MDcsIDUwNDExLCA1MDQxNSwgNTA0MTksIDUwNDIzLCA1MDQyNywgNTA0MzEsIDUwNDM1LCA1MDQzOSwgNTA0NDMsIAorICAgIDUwNDQ3LCA1MDQ1MSwgNTA0NTUsIDUwNDU5LCA1MDQ2NiwgNTA0NzQsIDUwNDgwLCA1MDQ4NiwgNTA0OTMsIDUwNTAwLCAKKyAgICA1MDUwNiwgNTA1MTIsIDUwNTE4LCA1MDUyNCwgNTA1MjksIDUwNTM0LCA1MDUzOSwgNTA1NDQsIDUwNTUwLCA1MDU1NiwgCisgICAgNTA1NjQsIDUwNTcxLCA1MDU3NywgNTA1ODMsIDUwNTkxLCA1MDYwMCwgNTA2MDcsIDUwNjE3LCA1MDYyOCwgNTA2MzEsIAorICAgIDUwNjM0LCA1MDYzOCwgNTA2NDIsIDUwNjQ5LCA1MDY1NiwgNTA2NjcsIDUwNjc4LCA1MDY4OCwgNTA2OTgsIDUwNzA1LCAKKyAgICA1MDcxMiwgNTA3MTksIDUwNzI2LCA1MDczNywgNTA3NDgsIDUwNzU5LCA1MDc3MCwgNTA3ODAsIDUwNzkwLCA1MDgwMiwgCisgICAgNTA4MTQsIDUwODI1LCA1MDgzNiwgNTA4NDgsIDUwODYwLCA1MDg2OSwgNTA4NzksIDUwODg5LCA1MDkwMCwgNTA5MTEsIAorICAgIDUwOTE4LCA1MDkyNSwgNTA5MzIsIDUwOTM5LCA1MDk0OSwgNTA5NTksIDUwOTY3LCA1MDk3NSwgNTA5ODIsIDUwOTg5LCAKKyAgICA1MDk5NiwgNTEwMDMsIDUxMDEwLCA1MTAxNSwgNTEwMjAsIDUxMDI2LCA1MTAzNCwgNTEwNDQsIDUxMDU0LCA1MTA2NCwgCisgICAgNTEwNzQsIDUxMDg0LCA1MTA5NCwgNTExMDQsIDUxMTE0LCA1MTEyNCwgNTExMzQsIDUxMTQ0LCA1MTE1NSwgNTExNjYsIAorICAgIDUxMTc2LCA1MTE4NiwgNTExOTcsIDUxMjA4LCA1MTIxOCwgNTEyMjgsIDUxMjM5LCA1MTI1MCwgNTEyNjAsIDUxMjcwLCAKKyAgICA1MTI4MSwgNTEyOTIsIDUxMzA4LCA1MTMyNywgNTEzNDMsIDUxMzYyLCA1MTM3OCwgNTEzOTQsIDUxNDEwLCA1MTQyNiwgCisgICAgNTE0MzcsIDUxNDQ5LCA1MTQ2MCwgNTE0NzIsIDUxNDkxLCA1MTUxMCwgNTE1MTgsIDUxNTI0LCA1MTUzMSwgNTE1MzgsIAorICAgIDUxNTQ1LCA1MTU1MiwgNTE1NTcsIDUxNTYzLCA1MTU2OCwgNTE1NzMsIDUxNTc5LCA1MTU4NCwgNTE1ODksIDUxNTk0LCAKKyAgICA1MTU5OSwgNTE2MDQsIDUxNjExLCA1MTYxNiwgNTE2MjMsIDUxNjI4LCA1MTYzMywgNTE2MzcsIDUxNjQxLCA1MTY0OCwgCisgICAgNTE2NTUsIDUxNjYyLCA1MTY2OSwgNTE2NzYsIDUxNjgzLCA1MTY5NiwgNTE3MDksIDUxNzIyLCA1MTczNSwgNTE3NDMsIAorICAgIDUxNzUxLCA1MTc1NywgNTE3NjMsIDUxNzcwLCA1MTc3NywgNTE3ODQsIDUxNzkxLCA1MTc5NSwgNTE4MDAsIDUxODA4LCAKKyAgICA1MTgxNiwgNTE4MjQsIDUxODMxLCA1MTgzNSwgNTE4NDMsIDUxODUxLCA1MTg1NSwgNTE4NTksIDUxODY0LCA1MTg3MSwgCisgICAgNTE4NzksIDUxODg3LCA1MTkwNiwgNTE5MjUsIDUxOTQ0LCA1MTk2MywgNTE5ODIsIDUyMDAxLCA1MjAyMCwgNTIwMzksIAorICAgIDUyMDQ1LCA1MjA1MiwgNTIwNjEsIDUyMDY5LCA1MjA3NywgNTIwODIsIDUyMDg1LCA1MjA4OCwgNTIwOTMsIDUyMDk2LCAKKyAgICA1MjExNSwgNTIxMjIsIDUyMTI4LCA1MjEzNCwgNTIxMzgsIDUyMTQxLCA1MjE0NCwgNTIxNDcsIDUyMTU5LCA1MjE3MiwgCisgICAgNTIxNzksIDUyMTg2LCA1MjE4OSwgNTIxOTMsIDUyMTk2LCA1MjIwMSwgNTIyMDYsIDUyMjExLCA1MjIxNywgNTIyMjYsIAorICAgIDUyMjMzLCA1MjI0MCwgNTIyNDgsIDUyMjU1LCA1MjI2MiwgNTIyNjUsIDUyMjcxLCA1MjI3NywgNTIyODAsIDUyMjgzLCAKKyAgICA1MjI4OCwgNTIyOTMsIDUyMjk5LCA1MjMwNSwgNTIzMDksIDUyMzE0LCA1MjMyMSwgNTIzMjUsIDUyMzMxLCA1MjMzNSwgCisgICAgNTIzMzksIDUyMzQ3LCA1MjM1OSwgNTIzNjgsIDUyMzcyLCA1MjM3NCwgNTIzODMsIDUyMzkyLCA1MjM5OCwgNTI0MDEsIAorICAgIDUyNDA3LCA1MjQxMywgNTI0MTgsIDUyNDIzLCA1MjQyOCwgNTI0MzMsIDUyNDM4LCA1MjQ0MywgNTI0NDUsIDUyNDUxLCAKKyAgICA1MjQ1NiwgNTI0NjMsIDUyNDY3LCA1MjQ3MywgNTI0NzYsIDUyNDgwLCA1MjQ4NywgNTI0OTQsIDUyNDk2LCA1MjQ5OCwgCisgICAgNTI1MDQsIDUyNTEwLCA1MjUxNiwgNTI1MjUsIDUyNTM0LCA1MjU0MSwgNTI1NDgsIDUyNTU0LCA1MjU2MCwgNTI1NjUsIAorICAgIDUyNTcwLCA1MjU3NSwgNTI1ODEsIDUyNTg3LCA1MjU5MiwgNTI1OTksIDUyNjAzLCA1MjYwNywgNTI2MjAsIDUyNjMzLCAKKyAgICA1MjY0NSwgNTI2NTQsIDUyNjYwLCA1MjY2NywgNTI2NzIsIDUyNjc3LCA1MjY4MiwgNTI2ODcsIDUyNjkyLCA1MjY5NCwgCisgICAgNTI3MDEsIDUyNzA4LCA1MjcxNSwgNTI3MjIsIDUyNzI5LCA1MjczNywgNTI3NDMsIDUyNzQ4LCA1Mjc1NCwgNTI3NjAsIAorICAgIDUyNzY2LCA1Mjc3MywgNTI3NzksIDUyNzg3LCA1Mjc5NSwgNTI4MDMsIDUyODExLCA1MjgxOCwgNTI4MjQsIDUyODMwLCAKKyAgICA1MjgzOSwgNTI4NDMsIDUyODUyLCA1Mjg2MSwgNTI4NzAsIDUyODc4LCA1Mjg4MiwgNTI4ODgsIDUyODk1LCA1MjkwMiwgCisgICAgNTI5MDYsIDUyOTEyLCA1MjkxOSwgNTI5MjQsIDUyOTI5LCA1MjkzNSwgNTI5NDAsIDUyOTQ1LCA1Mjk1MiwgNTI5NTksIAorICAgIDUyOTY0LCA1Mjk2OSwgNTI5NzcsIDUyOTg1LCA1Mjk5NSwgNTMwMDUsIDUzMDEyLCA1MzAxOSwgNTMwMjMsIDUzMDI3LCAKKyAgICA1MzAzOSwgNTMwNDUsIDUzMDUxLCA1MzA1NiwgNTMwNjEsIDUzMDY4LCA1MzA3NSwgNTMwODEsIDUzMDg3LCA1MzA5NiwgCisgICAgNTMxMDQsIDUzMTEyLCA1MzExOSwgNTMxMjYsIDUzMTMzLCA1MzEzOSwgNTMxNDYsIDUzMTUyLCA1MzE1OSwgNTMxNjYsIAorICAgIDUzMTczLCA1MzE4MCwgNTMxODYsIDUzMTkxLCA1MzIwMCwgNTMyMTAsIDUzMjE3LCA1MzIyNiwgNTMyMzIsIDUzMjM3LCAKKyAgICA1MzI0MiwgNTMyNTIsIDUzMjU4LCA1MzI2NCwgNTMyNzAsIDUzMjc4LCA1MzI4MywgNTMyOTAsIDUzMjk3LCA1MzMwOCwgCisgICAgNTMzMTUsIDUzMzIyLCA1MzMyOSwgNTMzMzYsIDUzMzQzLCA1MzM1MCwgNTMzNTcsIDUzMzY5LCA1MzM4MSwgNTMzOTIsIAorICAgIDUzNDAzLCA1MzQxNiwgNTM0MjksIDUzNDM0LCA1MzQzOSwgNTM0NDgsIDUzNDU3LCA1MzQ2NCwgNTM0NzEsIDUzNDgwLCAKKyAgICA1MzQ4OSwgNTM0OTcsIDUzNTA1LCA1MzUxMywgNTM1MjEsIDUzNTMxLCA1MzU0MSwgNTM1NTUsIDUzNTY5LCA1MzU3NywgCisgICAgNTM1ODUsIDUzNTk3LCA1MzYwOSwgNTM2MTcsIDUzNjI1LCA1MzYzNSwgNTM2NDUsIDUzNjUwLCA1MzY1NSwgNTM2NjQsIAorICAgIDUzNjczLCA1MzY3OCwgNTM2ODMsIDUzNjkxLCA1MzY5NywgNTM3MDMsIDUzNzExLCA1MzcxOSwgNTM3MzIsIDUzNzQ1LCAKKyAgICA1Mzc0OSwgNTM3NTMsIDUzNzYwLCA1Mzc2NywgNTM3NzQsIDUzNzgyLCA1Mzc5MCwgNTM3OTksIDUzODA4LCA1MzgxNCwgCisgICAgNTM4MjAsIDUzODI3LCA1MzgzNCwgNTM4NDEsIDUzODQ4LCA1Mzg1NywgNTM4NjYsIDUzODY5LCA1Mzg3MiwgNTM4NzcsIAorICAgIDUzODgyLCA1Mzg4OCwgNTM4OTQsIDUzOTAxLCA1MzkwOCwgNTM5MTgsIDUzOTI4LCA1MzkzNSwgNTM5NDIsIDUzOTUwLCAKKyAgICA1Mzk1OCwgNTM5NjYsIDUzOTc0LCA1Mzk4MiwgNTM5OTAsIDUzOTk2LCA1NDAwMiwgNTQwMDYsIDU0MDEwLCA1NDAxNywgCisgICAgNTQwMjQsIDU0MDI5LCA1NDAzNCwgNTQwMzksIDU0MDQ0LCA1NDA1MCwgNTQwNjQsIDU0MDcxLCA1NDA3OCwgNTQwODIsIAorICAgIDU0MDg0LCA1NDA4NiwgNTQwOTEsIDU0MDk2LCA1NDEwMSwgNTQxMDYsIDU0MTE0LCA1NDEyMSwgNTQxMjgsIDU0MTM2LCAKKyAgICA1NDE0OCwgNTQxNTYsIDU0MTY0LCA1NDE3NSwgNTQxNzksIDU0MTgzLCA1NDE4OSwgNTQxOTcsIDU0MjEwLCA1NDIxNywgCisgICAgNTQyMjQsIDU0MjMxLCA1NDIzNiwgNTQyNDMsIDU0MjUyLCA1NDI2MCwgNTQyNjYsIDU0MjcyLCA1NDI3OCwgNTQyODcsIAorICAgIDU0Mjk2LCA1NDMwNCwgNTQzMTMsIDU0MzE4LCA1NDMyMSwgNTQzMjYsIDU0MzMyLCA1NDMzOCwgNTQzNDQsIDU0MzUwLCAKKyAgICA1NDM1NCwgNTQzNTcsIDU0MzYxLCA1NDM2NSwgNTQzNzEsIDU0Mzc3LCA1NDM4MywgNTQzODksIDU0MzkzLCA1NDM5NywgCisgICAgNTQ0MDQsIDU0NDExLCA1NDQxOCwgNTQ0MjUsIDU0NDMyLCA1NDQzOSwgNTQ0NDksIDU0NDU5LCA1NDQ2NiwgNTQ0NzMsIAorICAgIDU0NDgxLCA1NDQ4OSwgNTQ0OTMsIDU0NDk4LCA1NDUwMywgNTQ1MDksIDU0NTE1LCA1NDUxOCwgNTQ1MjEsIDU0NTI0LCAKKyAgICA1NDUyNywgNTQ1MzEsIDU0NTM2LCA1NDU0MSwgNTQ1NDYsIDU0NTUxLCA1NDU1NiwgNTQ1NjAsIDU0NTY0LCA1NDU2OCwgCisgICAgNTQ1NzIsIDU0NTc2LCA1NDU4MCwgNTQ1ODQsIDU0NTkwLCA1NDU5NCwgNTQ2MDAsIDU0NjA1LCA1NDYxMiwgNTQ2MjAsIAorICAgIDU0NjI3LCA1NDYzNSwgNTQ2NDIsIDU0NjUwLCA1NDY1OSwgNTQ2NjYsIDU0Njc2LCA1NDY4NywgNTQ2OTMsIDU0NzAyLCAKKyAgICA1NDcwOCwgNTQ3MTcsIDU0NzI2LCA1NDczMiwgNTQ3MzgsIDU0NzQyLCA1NDc0NiwgNTQ3NTUsIDU0NzY0LCA1NDc3MSwgCisgICAgNTQ3NzgsIDU0Nzg3LCAwLCAwLCAwLCA1NDc5NiwgNTQ4MDEsIDU0ODA1LCA1NDgwOSwgNTQ4MTQsIDU0ODE5LCA1NDgyNCwgCisgICAgNTQ4MzIsIDU0ODQwLCA1NDg0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTQ4NDcsIDU0ODUyLCA1NDg1NywgNTQ4NjIsIDU0ODY3LCA1NDg3MiwgNTQ4NzcsIDU0ODgyLCAKKyAgICA1NDg4NywgNTQ4OTIsIDU0ODk3LCA1NDkwMywgNTQ5MDcsIDU0OTEyLCA1NDkxNywgNTQ5MjIsIDU0OTI3LCA1NDkzMiwgCisgICAgNTQ5MzcsIDU0OTQyLCA1NDk0NywgNTQ5NTIsIDU0OTU3LCA1NDk2MiwgNTQ5NjcsIDU0OTcyLCA1NDk3NywgNTQ5ODIsIAorICAgIDU0OTg3LCA1NDk5MiwgNTQ5OTcsIDU1MDAyLCA1NTAwNywgNTUwMTIsIDU1MDE3LCA1NTAyMywgNTUwMjgsIDU1MDM0LCAKKyAgICA1NTA0MywgNTUwNDgsIDU1MDU2LCA1NTA2MywgNTUwNzIsIDU1MDc3LCA1NTA4MiwgNTUwODcsIDU1MDkzLCAwLCA1NTEwMCwgCisgICAgNTUxMDUsIDU1MTEwLCA1NTExNSwgNTUxMjAsIDU1MTI1LCA1NTEzMCwgNTUxMzUsIDU1MTQwLCA1NTE0NSwgNTUxNTAsIAorICAgIDU1MTU2LCA1NTE2MCwgNTUxNjUsIDU1MTcwLCA1NTE3NSwgNTUxODAsIDU1MTg1LCA1NTE5MCwgNTUxOTUsIDU1MjAwLCAKKyAgICA1NTIwNSwgNTUyMTAsIDU1MjE1LCA1NTIyMCwgNTUyMjUsIDU1MjMwLCA1NTIzNSwgNTUyNDAsIDU1MjQ1LCA1NTI1MCwgCisgICAgNTUyNTUsIDU1MjYwLCA1NTI2NSwgNTUyNzAsIDU1Mjc2LCA1NTI4MSwgNTUyODcsIDU1Mjk2LCA1NTMwMSwgNTUzMDksIAorICAgIDU1MzE2LCA1NTMyNSwgNTUzMzAsIDU1MzM1LCA1NTM0MCwgNTUzNDYsIDAsIDU1MzUzLCA1NTM2MSwgNTUzNjksIDU1Mzc4LCAKKyAgICA1NTM4NSwgNTUzOTMsIDU1Mzk5LCA1NTQwOCwgNTU0MTYsIDU1NDI0LCA1NTQzMiwgNTU0NDAsIDU1NDQ4LCA1NTQ1NiwgCisgICAgNTU0NjEsIDU1NDY4LCA1NTQ3NCwgNTU0ODEsIDU1NDg5LCA1NTQ5NiwgNTU1MDMsIDU1NTExLCA1NTUxNywgNTU1MjMsIAorICAgIDU1NTMwLCA1NTUzNywgNTU1NDcsIDU1NTU3LCA1NTU2NCwgNTU1NzEsIDU1NTc2LCA1NTU4NiwgNTU1OTYsIDU1NjAxLCAKKyAgICA1NTYwNiwgNTU2MTEsIDU1NjE2LCA1NTYyMSwgNTU2MjYsIDU1NjMxLCA1NTYzNiwgNTU2NDEsIDU1NjQ2LCA1NTY1MSwgCisgICAgNTU2NTYsIDU1NjYxLCA1NTY2NiwgNTU2NzEsIDU1Njc2LCA1NTY4MSwgNTU2ODYsIDU1NjkxLCA1NTY5NiwgNTU3MDEsIAorICAgIDU1NzA2LCA1NTcxMSwgNTU3MTYsIDU1NzIxLCA1NTcyNiwgNTU3MzEsIDU1NzM2LCA1NTc0MSwgNTU3NDYsIDU1NzUwLCAKKyAgICA1NTc1NCwgNTU3NTksIDU1NzY0LCA1NTc2OSwgNTU3NzQsIDU1Nzc5LCA1NTc4NCwgNTU3ODksIDU1Nzk0LCA1NTc5OSwgCisgICAgNTU4MDQsIDU1ODA5LCA1NTgxNCwgNTU4MTksIDU1ODI0LCA1NTgyOSwgNTU4MzQsIDU1ODM5LCA1NTg0NCwgNTU4NTEsIAorICAgIDU1ODU4LCA1NTg2NSwgNTU4NzIsIDU1ODc5LCA1NTg4NiwgNTU4OTMsIDU1OTAwLCA1NTkwNywgNTU5MTQsIDU1OTIxLCAKKyAgICA1NTkyOCwgNTU5MzUsIDU1OTQyLCA1NTk0NywgNTU5NTIsIDU1OTU5LCA1NTk2NiwgNTU5NzMsIDU1OTgwLCA1NTk4NywgCisgICAgNTU5OTQsIDU2MDAxLCA1NjAwOCwgNTYwMTUsIDU2MDIyLCA1NjAyOSwgNTYwMzYsIDU2MDQyLCA1NjA0OCwgNTYwNTQsIAorICAgIDU2MDYwLCA1NjA2NywgNTYwNzQsIDU2MDgxLCA1NjA4OCwgNTYwOTUsIDU2MTAyLCA1NjEwOSwgNTYxMTYsIDU2MTIzLCAKKyAgICA1NjEzMCwgNTYxMzgsIDU2MTQ2LCA1NjE1NCwgNTYxNjIsIDU2MTcwLCA1NjE3OCwgNTYxODYsIDU2MTk0LCA1NjE5OCwgCisgICAgNTYyMDQsIDU2MjEwLCA1NjIxNCwgNTYyMjAsIDU2MjI2LCA1NjIzMiwgNTYyMzksIDU2MjQ2LCA1NjI1MywgNTYyNjAsIAorICAgIDU2MjY1LCA1NjI3MSwgNTYyNzcsIDU2Mjg0LCAwLCAwLCAwLCAwLCAwLCA1NjI5MSwgNTYyOTksIDU2MzA4LCA1NjMxNywgCisgICAgNTYzMjUsIDU2MzMxLCA1NjMzNiwgNTYzNDEsIDU2MzQ2LCA1NjM1MSwgNTYzNTYsIDU2MzYxLCA1NjM2NiwgNTYzNzEsIAorICAgIDU2Mzc2LCA1NjM4MSwgNTYzODYsIDU2MzkxLCA1NjM5NiwgNTY0MDEsIDU2NDA2LCA1NjQxMSwgNTY0MTYsIDU2NDIxLCAKKyAgICA1NjQyNiwgNTY0MzEsIDU2NDM2LCA1NjQ0MSwgNTY0NDYsIDU2NDUxLCA1NjQ1NiwgNTY0NjEsIDU2NDY2LCA1NjQ3MSwgCisgICAgNTY0NzYsIDU2NDgxLCA1NjQ4NiwgNTY0OTEsIDU2NDk2LCA1NjUwMSwgNTY1MDYsIDU2NTExLCA1NjUxNiwgNTY1MjEsIAorICAgIDU2NTI2LCAwLCA1NjUzMSwgMCwgMCwgMCwgMCwgMCwgNTY1MzYsIDAsIDAsIDU2NTQxLCA1NjU0NSwgNTY1NTAsIDU2NTU1LCAKKyAgICA1NjU2MCwgNTY1NjUsIDU2NTc0LCA1NjU3OSwgNTY1ODQsIDU2NTg5LCA1NjU5NCwgNTY1OTksIDU2NjA0LCA1NjYwOSwgCisgICAgNTY2MTQsIDU2NjIxLCA1NjYyNiwgNTY2MzEsIDU2NjQwLCA1NjY0NywgNTY2NTIsIDU2NjU3LCA1NjY2MiwgNTY2NjksIAorICAgIDU2Njc0LCA1NjY4MSwgNTY2ODYsIDU2NjkxLCA1NjY5OCwgNTY3MDUsIDU2NzEwLCA1NjcxNSwgNTY3MjAsIDU2NzI3LCAKKyAgICA1NjczNCwgNTY3MzksIDU2NzQ0LCA1Njc0OSwgNTY3NTQsIDU2NzU5LCA1Njc2NiwgNTY3NzMsIDU2Nzc4LCA1Njc4MywgCisgICAgNTY3ODgsIDU2NzkzLCA1Njc5OCwgNTY4MDMsIDU2ODA4LCA1NjgxMywgNTY4MTgsIDU2ODIzLCA1NjgyOCwgNTY4MzUsIAorICAgIDU2ODQwLCA1Njg0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY4NTAsIDU2ODU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1Njg2MiwgNTY4NjcsIDU2ODcxLCA1Njg3NSwgNTY4NzksIDU2ODgzLCA1Njg4NywgNTY4OTEsIAorICAgIDU2ODk1LCA1Njg5OSwgNTY5MDMsIDU2OTA3LCA1NjkxMywgNTY5MTcsIDU2OTIxLCA1NjkyNSwgNTY5MjksIDU2OTMzLCAKKyAgICA1NjkzNywgNTY5NDEsIDU2OTQ1LCA1Njk0OSwgNTY5NTMsIDU2OTU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1Njk2MSwgNTY5NjUsIDU2OTY5LCA1Njk3MywgNTY5NzcsIDU2OTgxLCA1Njk4NSwgMCwgNTY5ODksIDU2OTkzLCA1Njk5NywgCisgICAgNTcwMDEsIDU3MDA1LCA1NzAwOSwgNTcwMTMsIDAsIDU3MDE3LCA1NzAyMSwgNTcwMjUsIDU3MDI5LCA1NzAzMywgNTcwMzcsIAorICAgIDU3MDQxLCAwLCA1NzA0NSwgNTcwNDksIDU3MDUzLCA1NzA1NywgNTcwNjEsIDU3MDY1LCA1NzA2OSwgMCwgNTcwNzMsIAorICAgIDU3MDc3LCA1NzA4MSwgNTcwODUsIDU3MDg5LCA1NzA5MywgNTcwOTcsIDAsIDU3MTAxLCA1NzEwNSwgNTcxMDksIDU3MTEzLCAKKyAgICA1NzExNywgNTcxMjEsIDU3MTI1LCAwLCA1NzEyOSwgNTcxMzMsIDU3MTM3LCA1NzE0MSwgNTcxNDUsIDU3MTQ5LCA1NzE1MywgCisgICAgMCwgNTcxNTcsIDU3MTYxLCA1NzE2NSwgNTcxNjksIDU3MTczLCA1NzE3NywgNTcxODEsIDAsIDU3MTg1LCA1NzE5MCwgCisgICAgNTcxOTUsIDU3MjAwLCA1NzIwNSwgNTcyMTAsIDU3MjE1LCA1NzIxOSwgNTcyMjQsIDU3MjI5LCA1NzIzNCwgNTcyMzgsIAorICAgIDU3MjQzLCA1NzI0OCwgNTcyNTMsIDU3MjU4LCA1NzI2MiwgNTcyNjcsIDU3MjcyLCA1NzI3NywgNTcyODIsIDU3Mjg3LCAKKyAgICA1NzI5MiwgNTcyOTYsIDU3MzAxLCA1NzMwNiwgNTczMTMsIDU3MzE4LCA1NzMyMywgNTczMjksIDU3MzM2LCA1NzM0MywgCisgICAgNTczNTIsIDU3MzU5LCA1NzM2OCwgNTczNzIsIDU3Mzc2LCA1NzM4MiwgNTczODgsIDU3Mzk0LCA1NzQwMiwgNTc0MDgsIAorICAgIDU3NDEyLCA1NzQxNiwgNTc0MjAsIDU3NDI2LCA1NzQzMiwgNTc0MzYsIDU3NDM4LCA1NzQ0MiwgNTc0NDgsIDU3NDUwLCAKKyAgICA1NzQ1NCwgNTc0NTgsIDU3NDYyLCA1NzQ2OCwgNTc0NzMsIDU3NDc3LCA1NzQ4MSwgNTc0ODYsIDU3NDkyLCA1NzQ5NywgCisgICAgNTc1MDIsIDU3NTA3LCA1NzUxMiwgNTc1MTksIDU3NTI2LCA1NzUzMSwgNTc1MzYsIDU3NTQxLCA1NzU0NiwgNTc1NTEsIAorICAgIDU3NTU2LCA1NzU2MCwgNTc1NjQsIDU3NTcxLCA1NzU3OCwgNTc1ODQsIDU3NTg4LCA1NzU5MywgNTc1OTUsIDU3NTk5LCAKKyAgICA1NzYwNywgNTc2MTEsIDU3NjE1LCA1NzYxOSwgNTc2MjMsIDU3NjI5LCA1NzYzNSwgNTc2MzksIDU3NjQ1LCA1NzY0OSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc2NTMsIDU3NjU3LCAKKyAgICA1NzY2MSwgNTc2NjYsIDU3NjcxLCA1NzY3NiwgNTc2ODAsIDU3Njg0LCA1NzY4OCwgNTc2OTMsIDU3Njk4LCA1NzcwMiwgCisgICAgNTc3MDYsIDU3NzEwLCA1NzcxNCwgNTc3MTksIDU3NzI0LCA1NzcyOSwgNTc3MzQsIDU3NzM4LCA1Nzc0MiwgNTc3NDcsIAorICAgIDU3NzUyLCA1Nzc1NywgNTc3NjIsIDU3NzY2LCAwLCA1Nzc3MCwgNTc3NzQsIDU3Nzc4LCA1Nzc4MiwgNTc3ODYsIDU3NzkwLCAKKyAgICA1Nzc5NCwgNTc3OTksIDU3ODA0LCA1NzgwOCwgNTc4MTMsIDU3ODE4LCA1NzgyNywgNTc4MzEsIDU3ODM1LCA1NzgzOSwgCisgICAgNTc4NDYsIDU3ODUwLCA1Nzg1NSwgNTc4NjAsIDU3ODY0LCA1Nzg2OCwgNTc4NzQsIDU3ODc5LCA1Nzg4NCwgNTc4ODksIAorICAgIDU3ODk0LCA1Nzg5OCwgNTc5MDIsIDU3OTA2LCA1NzkxMCwgNTc5MTQsIDU3OTE5LCA1NzkyNCwgNTc5MjgsIDU3OTMyLCAKKyAgICA1NzkzNywgNTc5NDIsIDU3OTQ3LCA1Nzk1MSwgNTc5NTUsIDU3OTYwLCA1Nzk2NSwgNTc5NzEsIDU3OTc3LCA1Nzk4MSwgCisgICAgNTc5ODcsIDU3OTkzLCA1Nzk5NywgNTgwMDMsIDU4MDA5LCA1ODAxNCwgNTgwMTksIDU4MDIzLCA1ODAyOSwgNTgwMzMsIAorICAgIDU4MDM3LCA1ODA0MywgNTgwNDksIDU4MDU0LCA1ODA1OSwgNTgwNjMsIDU4MDY3LCA1ODA3NSwgNTgwODEsIDU4MDg3LCAKKyAgICA1ODA5MywgNTgwOTgsIDU4MTAzLCA1ODEwOCwgNTgxMTQsIDU4MTE4LCA1ODEyNCwgNTgxMjgsIDU4MTMyLCA1ODEzOCwgCisgICAgNTgxNDQsIDU4MTUwLCA1ODE1NiwgNTgxNjIsIDU4MTY4LCA1ODE3NCwgNTgxODAsIDU4MTg2LCA1ODE5MiwgNTgxOTgsIAorICAgIDU4MjA0LCA1ODIwOCwgNTgyMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4MjIwLCA1ODIyMywgCisgICAgNTgyMjcsIDU4MjMxLCA1ODIzNSwgNTgyMzksIDU4MjQyLCA1ODI0NSwgNTgyNDksIDU4MjUzLCA1ODI1NywgNTgyNjEsIAorICAgIDU4MjY0LCA1ODI2OSwgNTgyNzMsIDU4Mjc3LCA1ODI4MSwgNTgyODYsIDU4MjkwLCA1ODI5NCwgNTgyOTgsIDU4MzAyLCAKKyAgICA1ODMwOCwgNTgzMTQsIDU4MzE4LCA1ODMyMiwgNTgzMjYsIDU4MzMwLCA1ODMzNCwgNTgzMzgsIDU4MzQyLCA1ODM0NiwgCisgICAgNTgzNTAsIDU4MzU0LCA1ODM1OCwgNTgzNjQsIDU4MzY4LCA1ODM3MiwgNTgzNzYsIDU4MzgwLCA1ODM4NCwgNTgzODgsIAorICAgIDU4MzkyLCA1ODM5NiwgNTg0MDAsIDU4NDA0LCA1ODQwOCwgNTg0MTIsIDU4NDE2LCA1ODQyMCwgNTg0MjQsIDU4NDI4LCAKKyAgICA1ODQzNCwgNTg0NDAsIDU4NDQ1LCA1ODQ1MCwgNTg0NTQsIDU4NDU4LCA1ODQ2MiwgNTg0NjYsIDU4NDcwLCA1ODQ3NCwgCisgICAgNTg0NzgsIDU4NDgyLCA1ODQ4NiwgNTg0OTAsIDU4NDk0LCA1ODQ5OCwgNTg1MDIsIDU4NTA2LCA1ODUxMCwgNTg1MTQsIAorICAgIDU4NTE4LCA1ODUyMiwgNTg1MjYsIDU4NTMwLCA1ODUzNCwgNTg1MzgsIDU4NTQyLCA1ODU0NiwgNTg1NTIsIDU4NTU2LCAKKyAgICA1ODU2MCwgNTg1NjQsIDU4NTY4LCA1ODU3MiwgNTg1NzYsIDU4NTgwLCA1ODU4NCwgNTg1ODksIDU4NTk2LCA1ODYwMCwgCisgICAgNTg2MDQsIDU4NjA4LCA1ODYxMiwgNTg2MTYsIDU4NjIwLCA1ODYyNCwgNTg2MjgsIDU4NjMyLCA1ODYzNiwgNTg2NDAsIAorICAgIDU4NjQ0LCA1ODY1MSwgNTg2NTUsIDU4NjYxLCA1ODY2NSwgNTg2NjksIDU4NjczLCA1ODY3NywgNTg2ODEsIDU4Njg0LCAKKyAgICA1ODY4OCwgNTg2OTIsIDU4Njk2LCA1ODcwMCwgNTg3MDQsIDU4NzA4LCA1ODcxMiwgNTg3MTYsIDU4NzIwLCA1ODcyNCwgCisgICAgNTg3MjgsIDU4NzMyLCA1ODczNiwgNTg3NDAsIDU4NzQ0LCA1ODc0OCwgNTg3NTIsIDU4NzU2LCA1ODc2MCwgNTg3NjQsIAorICAgIDU4NzY4LCA1ODc3MiwgNTg3NzYsIDU4NzgwLCA1ODc4NCwgNTg3ODgsIDU4NzkyLCA1ODc5NiwgNTg4MDAsIDU4ODA0LCAKKyAgICA1ODgwOCwgNTg4MTIsIDU4ODE4LCA1ODgyMiwgNTg4MjYsIDU4ODMwLCA1ODgzNCwgNTg4MzgsIDU4ODQyLCA1ODg0NiwgCisgICAgNTg4NTAsIDU4ODU0LCA1ODg1OCwgNTg4NjIsIDU4ODY2LCA1ODg3MCwgNTg4NzQsIDU4ODc4LCA1ODg4MiwgNTg4ODYsIAorICAgIDU4ODkwLCA1ODg5NCwgNTg4OTgsIDU4OTAyLCA1ODkwNiwgNTg5MTAsIDU4OTE0LCA1ODkxOCwgNTg5MjIsIDU4OTI2LCAKKyAgICA1ODkzNCwgNTg5MzgsIDU4OTQyLCA1ODk0NiwgNTg5NTAsIDU4OTU0LCA1ODk2MCwgNTg5NjQsIDU4OTY4LCA1ODk3MiwgCisgICAgNTg5NzYsIDU4OTgwLCA1ODk4NCwgNTg5ODgsIDU4OTkyLCA1ODk5NiwgNTkwMDAsIDU5MDA0LCA1OTAwOCwgNTkwMTIsIAorICAgIDU5MDE4LCA1OTAyMiwgNTkwMjYsIDU5MDMwLCA1OTAzNCwgNTkwMzgsIDU5MDQyLCA1OTA0NiwgNTkwNTAsIDU5MDU0LCAKKyAgICA1OTA1OCwgNTkwNjIsIDU5MDY2LCA1OTA3MCwgNTkwNzQsIDU5MDc4LCA1OTA4MiwgNTkwODYsIDU5MDkwLCA1OTA5NCwgCisgICAgNTkwOTgsIDU5MTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1OTEwNiwgNTkxMTUsIDU5MTIzLCA1OTEzNSwgNTkxNDYsIDU5MTU0LCA1OTE2MywgNTkxNzIsIAorICAgIDU5MTgyLCA1OTE5NCwgNTkyMDYsIDU5MjE4LCAwLCAwLCAwLCAwLCA1OTIyNCwgNTkyMjcsIDU5MjMwLCA1OTIzNSwgCisgICAgNTkyMzgsIDU5MjQ1LCA1OTI0OSwgNTkyNTMsIDU5MjU3LCA1OTI2MSwgNTkyNjUsIDU5MjcwLCA1OTI3NSwgNTkyNzksIAorICAgIDU5MjgzLCA1OTI4OCwgNTkyOTMsIDU5Mjk4LCA1OTMwMywgNTkzMDYsIDU5MzA5LCA1OTMxNSwgNTkzMjEsIDU5MzI2LCAKKyAgICA1OTMzMSwgNTkzMzgsIDU5MzQ1LCA1OTM0OSwgNTkzNTMsIDU5MzU3LCA1OTM2NSwgNTkzNzEsIDU5Mzc4LCA1OTM4MywgCisgICAgNTkzODgsIDU5MzkzLCA1OTM5OCwgNTk0MDMsIDU5NDA4LCA1OTQxMywgNTk0MTgsIDU5NDIzLCA1OTQyOCwgNTk0MzMsIAorICAgIDU5NDM4LCA1OTQ0MywgNTk0NDgsIDU5NDU0LCA1OTQ1OSwgNTk0NjMsIDU5NDY5LCA1OTQ4MCwgNTk0OTAsIDU5NTA1LCAKKyAgICA1OTUxNSwgNTk1MTksIDU5NTI5LCA1OTUzNSwgNTk1NDEsIDU5NTQ3LCA1OTU1MiwgNTk1NTUsIDU5NTYwLCA1OTU2NCwgMCwgCisgICAgNTk1NzAsIDU5NTc0LCA1OTU3NywgNTk1ODEsIDU5NTg0LCA1OTU4OCwgNTk1OTEsIDU5NTk1LCA1OTU5OCwgNTk2MDIsIAorICAgIDU5NjA1LCA1OTYwOCwgNTk2MTIsIDU5NjE2LCA1OTYyMCwgNTk2MjQsIDU5NjI4LCA1OTYzMiwgNTk2MzYsIDU5NjQwLCAKKyAgICA1OTY0NCwgNTk2NDcsIDU5NjUxLCA1OTY1NSwgNTk2NTksIDU5NjYzLCA1OTY2NywgNTk2NzEsIDU5Njc1LCA1OTY3OSwgCisgICAgNTk2ODMsIDU5Njg3LCA1OTY5MSwgNTk2OTUsIDU5Njk5LCA1OTcwNCwgNTk3MDgsIDU5NzEyLCA1OTcxNiwgNTk3MjAsIAorICAgIDU5NzIzLCA1OTcyNywgNTk3MzAsIDU5NzM0LCA1OTczOCwgNTk3NDIsIDU5NzQ2LCA1OTc0OSwgNTk3NTMsIDU5NzU2LCAKKyAgICA1OTc2MCwgNTk3NjQsIDU5NzY4LCA1OTc3MiwgNTk3NzYsIDU5NzgwLCA1OTc4NCwgNTk3ODgsIDU5NzkyLCA1OTc5NiwgCisgICAgNTk4MDAsIDU5ODA0LCA1OTgwNywgNTk4MTEsIDU5ODE1LCA1OTgxOSwgNTk4MjMsIDU5ODI3LCA1OTgzMCwgNTk4MzUsIAorICAgIDU5ODM5LCA1OTg0NCwgNTk4NDgsIDU5ODUxLCA1OTg1NSwgNTk4NTksIDU5ODYzLCA1OTg2NywgNTk4NzIsIDU5ODc2LCAKKyAgICA1OTg4MCwgNTk4ODQsIDU5ODg4LCA1OTg5MiwgNTk4OTYsIDU5OTAwLCAwLCAwLCA1OTkwNSwgNTk5MTMsIDU5OTIxLCAKKyAgICA1OTkyOCwgNTk5MzUsIDU5OTM5LCA1OTk0NSwgNTk5NTAsIDU5OTU1LCA1OTk1OSwgNTk5NjIsIDU5OTY2LCA1OTk2OSwgCisgICAgNTk5NzMsIDU5OTc2LCA1OTk4MCwgNTk5ODMsIDU5OTg3LCA1OTk5MCwgNTk5OTMsIDU5OTk3LCA2MDAwMSwgNjAwMDUsIAorICAgIDYwMDA5LCA2MDAxMywgNjAwMTcsIDYwMDIxLCA2MDAyNSwgNjAwMjksIDYwMDMyLCA2MDAzNiwgNjAwNDAsIDYwMDQ0LCAKKyAgICA2MDA0OCwgNjAwNTIsIDYwMDU2LCA2MDA2MCwgNjAwNjQsIDYwMDY4LCA2MDA3MiwgNjAwNzYsIDYwMDgwLCA2MDA4NCwgCisgICAgNjAwODksIDYwMDkzLCA2MDA5NywgNjAxMDEsIDYwMTA1LCA2MDEwOCwgNjAxMTIsIDYwMTE1LCA2MDExOSwgNjAxMjMsIAorICAgIDYwMTI3LCA2MDEzMSwgNjAxMzQsIDYwMTM4LCA2MDE0MSwgNjAxNDUsIDYwMTQ5LCA2MDE1MywgNjAxNTcsIDYwMTYxLCAKKyAgICA2MDE2NSwgNjAxNjksIDYwMTczLCA2MDE3NywgNjAxODEsIDYwMTg1LCA2MDE4OSwgNjAxOTIsIDYwMTk2LCA2MDIwMCwgCisgICAgNjAyMDQsIDYwMjA4LCA2MDIxMiwgNjAyMTUsIDYwMjIwLCA2MDIyNCwgNjAyMjksIDYwMjMzLCA2MDIzNiwgNjAyNDAsIAorICAgIDYwMjQ0LCA2MDI0OCwgNjAyNTIsIDYwMjU3LCA2MDI2MSwgNjAyNjUsIDYwMjY5LCA2MDI3MywgNjAyNzcsIDYwMjgxLCAKKyAgICA2MDI4NSwgNjAyOTAsIDYwMjk0LCA2MDI5OCwgNjAzMDIsIDYwMzA2LCA2MDMxMSwgNjAzMTgsIDYwMzIyLCA2MDMyOCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNjAzMzMsIDYwMzM4LCA2MDM0MywgNjAzNDcsIDYwMzUyLCA2MDM1NywgNjAzNjIsIDYwMzY3LCAKKyAgICA2MDM3MSwgNjAzNzYsIDYwMzgxLCA2MDM4NiwgNjAzOTEsIDYwMzk2LCA2MDQwMSwgNjA0MDYsIDYwNDExLCA2MDQxNiwgCisgICAgNjA0MjAsIDYwNDI1LCA2MDQzMCwgNjA0MzUsIDYwNDM5LCA2MDQ0MywgNjA0NDcsIDYwNDUyLCA2MDQ1NywgNjA0NjIsIAorICAgIDYwNDY3LCA2MDQ3MiwgNjA0NzcsIDYwNDgyLCA2MDQ4NywgNjA0OTIsIDYwNDk3LCA2MDUwMSwgNjA1MDUsIDYwNTEwLCAKKyAgICA2MDUxNSwgNjA1MjAsIDYwNTI1LCAwLCAwLCAwLCA2MDUzMCwgNjA1MzQsIDYwNTM4LCA2MDU0MiwgNjA1NDYsIDYwNTUwLCAKKyAgICA2MDU1NCwgNjA1NTgsIDYwNTYyLCA2MDU2NiwgNjA1NzAsIDYwNTc0LCA2MDU3OCwgNjA1ODIsIDYwNTg2LCA2MDU5MCwgCisgICAgNjA1OTQsIDYwNTk4LCA2MDYwMiwgNjA2MDYsIDYwNjEwLCA2MDYxNCwgNjA2MTgsIDYwNjIyLCA2MDYyNiwgNjA2MzAsIAorICAgIDYwNjM0LCA2MDYzOCwgNjA2NDIsIDYwNjQ2LCA2MDY1MCwgNjA2NTMsIDYwNjU3LCA2MDY2MCwgNjA2NjQsIDYwNjY4LCAKKyAgICA2MDY3MSwgNjA2NzUsIDYwNjc5LCA2MDY4MiwgNjA2ODYsIDYwNjkwLCA2MDY5NCwgNjA2OTgsIDYwNzAxLCA2MDcwNSwgCisgICAgNjA3MDksIDYwNzEzLCA2MDcxNywgNjA3MjEsIDYwNzI1LCA2MDcyOCwgNjA3MzEsIDYwNzM1LCA2MDczOSwgNjA3NDMsIAorICAgIDYwNzQ3LCA2MDc1MSwgNjA3NTUsIDYwNzU5LCA2MDc2MywgNjA3NjcsIDYwNzcxLCA2MDc3NSwgNjA3NzksIDYwNzgzLCAKKyAgICA2MDc4NywgNjA3OTEsIDYwNzk1LCA2MDc5OSwgNjA4MDMsIDYwODA3LCA2MDgxMSwgNjA4MTUsIDYwODE5LCA2MDgyMywgCisgICAgNjA4MjcsIDYwODMxLCA2MDgzNSwgNjA4MzksIDYwODQzLCA2MDg0NywgNjA4NTEsIDYwODU1LCA2MDg1OSwgNjA4NjMsIAorICAgIDYwODY3LCA2MDg3MSwgNjA4NzUsIDYwODc5LCA2MDg4MywgNjA4ODcsIDYwODkxLCA2MDg5NSwgMCwgNjA4OTksIDYwOTA1LCAKKyAgICA2MDkxMSwgNjA5MTYsIDYwOTIxLCA2MDkyNiwgNjA5MzIsIDYwOTM4LCA2MDk0NCwgNjA5NTAsIDYwOTU2LCA2MDk2MiwgCisgICAgNjA5NjgsIDYwOTc0LCA2MDk4MCwgNjA5ODYsIDYwOTkyLCA2MDk5NywgNjEwMDIsIDYxMDA3LCA2MTAxMiwgNjEwMTcsIAorICAgIDYxMDIyLCA2MTAyNywgNjEwMzIsIDYxMDM3LCA2MTA0MiwgNjEwNDcsIDYxMDUyLCA2MTA1NywgNjEwNjIsIDYxMDY3LCAKKyAgICA2MTA3MiwgNjEwNzcsIDYxMDgyLCA2MTA4NywgNjEwOTIsIDYxMDk4LCA2MTEwNCwgNjExMTAsIDYxMTE2LCA2MTEyMSwgCisgICAgNjExMjYsIDAsIDAsIDAsIDAsIDAsIDYxMTMxLCA2MTEzNiwgNjExNDEsIDYxMTQ2LCA2MTE1MSwgNjExNTYsIDYxMTYxLCAKKyAgICA2MTE2NiwgNjExNzEsIDYxMTc2LCA2MTE4MSwgNjExODYsIDYxMTkxLCA2MTE5NiwgNjEyMDEsIDYxMjA2LCA2MTIxMSwgCisgICAgNjEyMTYsIDYxMjIxLCA2MTIyNiwgNjEyMzEsIDYxMjM2LCA2MTI0MSwgNjEyNDYsIDYxMjUxLCA2MTI1NiwgNjEyNjEsIAorICAgIDYxMjY2LCA2MTI3MSwgNjEyNzYsIDYxMjgxLCA2MTI4NiwgNjEyOTEsIDYxMjk2LCA2MTMwMSwgNjEzMDYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxMzExLCA2MTMxNiwgNjEzMjEsIDYxMzI2LCA2MTMzMCwgNjEzMzUsIAorICAgIDYxMzM5LCA2MTM0NCwgNjEzNDksIDYxMzU0LCA2MTM1OSwgNjEzNjQsIDYxMzY4LCA2MTM3MywgNjEzNzgsIDYxMzgzLCAKKyAgICA2MTM4OCwgNjEzOTIsIDYxMzk2LCA2MTQwMCwgNjE0MDQsIDYxNDA4LCA2MTQxMiwgNjE0MTYsIDYxNDIwLCA2MTQyNCwgCisgICAgNjE0MjgsIDYxNDMyLCA2MTQzNiwgNjE0NDAsIDYxNDQ0LCA2MTQ0OSwgNjE0NTQsIDYxNDU5LCA2MTQ2NCwgNjE0NjksIAorICAgIDYxNDc0LCA2MTQ3OSwgNjE0ODQsIDYxNDg5LCA2MTQ5NCwgNjE0OTksIDYxNTA0LCA2MTUwOSwgNjE1MTQsIDYxNTE5LCAKKyAgICA2MTUyNSwgMCwgNjE1MzIsIDYxNTM1LCA2MTUzOCwgNjE1NDEsIDYxNTQ0LCA2MTU0NywgNjE1NTAsIDYxNTUzLCA2MTU1NiwgCisgICAgNjE1NTksIDYxNTYzLCA2MTU2NywgNjE1NzEsIDYxNTc1LCA2MTU3OSwgNjE1ODMsIDYxNTg3LCA2MTU5MSwgNjE1OTUsIAorICAgIDYxNTk5LCA2MTYwMywgNjE2MDcsIDYxNjExLCA2MTYxNSwgNjE2MTksIDYxNjIzLCA2MTYyNywgNjE2MzEsIDYxNjM1LCAKKyAgICA2MTYzOSwgNjE2NDMsIDYxNjQ3LCA2MTY1MSwgNjE2NTUsIDYxNjU5LCA2MTY2MywgNjE2NjcsIDYxNjcxLCA2MTY3NSwgCisgICAgNjE2NzksIDYxNjgzLCA2MTY5MiwgNjE3MDEsIDYxNzEwLCA2MTcxOSwgNjE3MjgsIDYxNzM3LCA2MTc0NiwgNjE3NTUsIAorICAgIDYxNzU4LCA2MTc2MywgNjE3NjgsIDYxNzczLCA2MTc3OCwgNjE3ODMsIDYxNzg4LCA2MTc5MywgNjE3OTgsIDYxODAzLCAKKyAgICA2MTgwNywgNjE4MTIsIDYxODE3LCA2MTgyMiwgNjE4MjcsIDYxODMyLCA2MTgzNiwgNjE4NDAsIDYxODQ0LCA2MTg0OCwgCisgICAgNjE4NTIsIDYxODU2LCA2MTg2MCwgNjE4NjQsIDYxODY4LCA2MTg3MiwgNjE4NzYsIDYxODgwLCA2MTg4NCwgNjE4ODgsIAorICAgIDYxODkzLCA2MTg5OCwgNjE5MDMsIDYxOTA4LCA2MTkxMywgNjE5MTgsIDYxOTIzLCA2MTkyOCwgNjE5MzMsIDYxOTM4LCAKKyAgICA2MTk0MywgNjE5NDgsIDYxOTUzLCA2MTk1OCwgNjE5NjQsIDYxOTcwLCA2MTk3NSwgNjE5ODAsIDYxOTgzLCA2MTk4NiwgCisgICAgNjE5ODksIDYxOTkyLCA2MTk5NSwgNjE5OTgsIDYyMDAxLCA2MjAwNCwgNjIwMDcsIDYyMDExLCA2MjAxNSwgNjIwMTksIAorICAgIDYyMDIzLCA2MjAyNywgNjIwMzEsIDYyMDM1LCA2MjAzOSwgNjIwNDMsIDYyMDQ3LCA2MjA1MSwgNjIwNTUsIDYyMDU5LCAKKyAgICA2MjA2MywgNjIwNjcsIDYyMDcxLCA2MjA3NSwgNjIwNzksIDYyMDgzLCA2MjA4NywgNjIwOTEsIDYyMDk1LCA2MjA5OSwgCisgICAgNjIxMDMsIDYyMTA3LCA2MjExMSwgNjIxMTUsIDYyMTE5LCA2MjEyMywgNjIxMjcsIDYyMTMxLCA2MjEzNSwgNjIxMzksIAorICAgIDYyMTQzLCA2MjE0NywgNjIxNTEsIDYyMTU1LCA2MjE1OSwgNjIxNjMsIDYyMTY3LCA2MjE3MiwgNjIxNzcsIDYyMTgyLCAKKyAgICA2MjE4NywgNjIxOTEsIDYyMTk2LCA2MjIwMSwgNjIyMDYsIDYyMjExLCA2MjIxNiwgNjIyMjEsIDYyMjI2LCA2MjIzMSwgCisgICAgNjIyMzYsIDYyMjQwLCA2MjI0NywgNjIyNTQsIDYyMjYxLCA2MjI2OCwgNjIyNzUsIDYyMjgyLCA2MjI4OSwgNjIyOTYsIAorICAgIDYyMzAzLCA2MjMxMCwgNjIzMTcsIDYyMzI0LCA2MjMyNywgNjIzMzAsIDYyMzMzLCA2MjMzOCwgNjIzNDEsIDYyMzQ0LCAKKyAgICA2MjM0NywgNjIzNTAsIDYyMzUzLCA2MjM1NiwgNjIzNjAsIDYyMzY0LCA2MjM2OCwgNjIzNzIsIDYyMzc1LCA2MjM3OSwgCisgICAgNjIzODMsIDYyMzg3LCA2MjM5MSwgNjIzOTUsIDYyMzk5LCA2MjQwMywgNjI0MDcsIDYyNDEwLCA2MjQxMywgNjI0MTcsIAorICAgIDYyNDIxLCA2MjQyNSwgNjI0MjksIDYyNDMyLCA2MjQzNiwgNjI0NDAsIDYyNDQ0LCA2MjQ0OCwgNjI0NTEsIDYyNDU1LCAKKyAgICA2MjQ1OSwgNjI0NjMsIDYyNDY3LCA2MjQ3MCwgNjI0NzQsIDYyNDc4LCA2MjQ4MSwgNjI0ODUsIDYyNDg5LCA2MjQ5MywgCisgICAgNjI0OTcsIDYyNTAxLCA2MjUwNSwgNjI1MDksIDAsIDYyNTEzLCA2MjUxNiwgNjI1MTksIDYyNTIyLCA2MjUyNSwgNjI1MjgsIAorICAgIDYyNTMxLCA2MjUzNCwgNjI1MzcsIDYyNTQwLCA2MjU0MywgNjI1NDYsIDYyNTQ5LCA2MjU1MiwgNjI1NTUsIDYyNTU4LCAKKyAgICA2MjU2MSwgNjI1NjQsIDYyNTY3LCA2MjU3MCwgNjI1NzMsIDYyNTc2LCA2MjU3OSwgNjI1ODIsIDYyNTg1LCA2MjU4OCwgCisgICAgNjI1OTEsIDYyNTk0LCA2MjU5NywgNjI2MDAsIDYyNjAzLCA2MjYwNiwgNjI2MDksIDYyNjEyLCA2MjYxNSwgNjI2MTgsIAorICAgIDYyNjIxLCA2MjYyNCwgNjI2MjcsIDYyNjMwLCA2MjYzMywgNjI2MzYsIDYyNjM5LCA2MjY0MiwgNjI2NDUsIDYyNjQ4LCAKKyAgICA2MjY1MSwgNjI2NTQsIDYyNjU3LCA2MjY2MCwgNjI2NjMsIDYyNjY2LCA2MjY2OSwgNjI2NzIsIDYyNjc1LCA2MjY3OCwgCisgICAgNjI2ODEsIDYyNjg0LCA2MjY4NywgNjI2OTAsIDYyNjkzLCA2MjY5NiwgNjI2OTksIDYyNzAyLCA2MjcwNSwgNjI3MDgsIAorICAgIDYyNzExLCA2MjcxNCwgNjI3MTcsIDYyNzIwLCA2MjcyMywgNjI3MjYsIDYyNzI5LCA2MjczMiwgNjI3MzUsIDYyNzM4LCAKKyAgICA2Mjc0MSwgNjI3NDQsIDYyNzQ3LCA2Mjc1MCwgNjI3NTMsIDYyNzU2LCA2Mjc1OSwgNjI3NjIsIDYyNzY1LCA2Mjc2OCwgCisgICAgNjI3NzEsIDYyNzc0LCA2Mjc3NywgNjI3ODYsIDYyNzk0LCA2MjgwMiwgNjI4MTAsIDYyODE4LCA2MjgyNiwgNjI4MzQsIAorICAgIDYyODQyLCA2Mjg1MCwgNjI4NTgsIDYyODY3LCA2Mjg3NiwgNjI4ODUsIDYyODk0LCA2MjkwMywgNjI5MTIsIDYyOTIxLCAKKyAgICA2MjkzMCwgNjI5MzksIDYyOTQ4LCA2Mjk1NywgNjI5NjYsIDYyOTc1LCA2Mjk4NCwgNjI5OTMsIDYyOTk2LCA2Mjk5OSwgCisgICAgNjMwMDIsIDYzMDA0LCA2MzAwNywgNjMwMTAsIDYzMDEzLCA2MzAxOCwgNjMwMjMsIDYzMDI2LCA2MzAzMywgNjMwNDAsIAorICAgIDYzMDQ3LCA2MzA1NCwgNjMwNTcsIDYzMDYyLCA2MzA2NCwgNjMwNjgsIDYzMDcwLCA2MzA3MiwgNjMwNzUsIDYzMDc4LCAKKyAgICA2MzA4MSwgNjMwODQsIDYzMDg3LCA2MzA5MCwgNjMwOTMsIDYzMDk4LCA2MzEwMywgNjMxMDYsIDYzMTA5LCA2MzExMiwgCisgICAgNjMxMTUsIDYzMTE4LCA2MzEyMSwgNjMxMjQsIDYzMTI4LCA2MzEzMSwgNjMxMzQsIDYzMTM3LCA2MzE0MCwgNjMxNDMsIAorICAgIDYzMTQ3LCA2MzE1MCwgNjMxNTMsIDYzMTU2LCA2MzE2MSwgNjMxNjYsIDYzMTcxLCA2MzE3NiwgNjMxODEsIDYzMTg2LCAKKyAgICA2MzE5MSwgNjMxOTYsIDYzMjAyLCA2MzIxMCwgNjMyMTIsIDYzMjE1LCA2MzIxOCwgNjMyMjEsIDYzMjI0LCA2MzIzMCwgCisgICAgNjMyMzgsIDYzMjQxLCA2MzI0NCwgNjMyNDksIDYzMjUyLCA2MzI1NSwgNjMyNTgsIDYzMjYzLCA2MzI2NiwgNjMyNjksIAorICAgIDYzMjc0LCA2MzI3NywgNjMyODAsIDYzMjg1LCA2MzI4OCwgNjMyOTEsIDYzMjk2LCA2MzMwMSwgNjMzMDYsIDYzMzA5LCAKKyAgICA2MzMxMiwgNjMzMTUsIDYzMzE4LCA2MzMyNCwgNjMzMjcsIDYzMzMwLCA2MzMzMywgNjMzMzUsIDYzMzM4LCA2MzM0MSwgCisgICAgNjMzNDQsIDYzMzQ5LCA2MzM1MiwgNjMzNTUsIDYzMzU4LCA2MzM2MSwgNjMzNjQsIDYzMzY5LCA2MzM3MiwgNjMzNzUsIAorICAgIDYzMzc4LCA2MzM4MSwgNjMzODQsIDYzMzg3LCA2MzM5MCwgNjMzOTMsIDYzMzk2LCA2MzQwMSwgNjM0MDUsIDYzNDEzLCAKKyAgICA2MzQyMSwgNjM0MjksIDYzNDM3LCA2MzQ0NSwgNjM0NTMsIDYzNDYxLCA2MzQ2OSwgNjM0NzcsIDYzNDg2LCA2MzQ5NSwgCisgICAgNjM1MDQsIDYzNTEzLCA2MzUyMiwgNjM1MzEsIDYzNTQwLCA2MzU0OSwgNjM1NTgsIDYzNTY3LCA2MzU3NiwgNjM1ODUsIAorICAgIDYzNTk0LCA2MzYwMywgNjM2MTIsIDYzNjIxLCA2MzYzMCwgNjM2MzksIDYzNjQ4LCA2MzY1NywgNjM2NjYsIDYzNjc1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzY3OCwgNjM2ODcsIDYzNjk2LCA2MzcwNywgCisgICAgNjM3MTQsIDYzNzE5LCA2MzcyNCwgNjM3MzEsIDYzNzM4LCA2Mzc0NCwgNjM3NDksIDYzNzU0LCA2Mzc1OSwgNjM3NjQsIAorICAgIDYzNzcxLCA2Mzc3NiwgNjM3ODEsIDYzNzg2LCA2Mzc5NywgNjM4MDIsIDYzODA3LCA2MzgxNCwgNjM4MTksIDYzODI2LCAKKyAgICA2MzgzMSwgNjM4MzYsIDYzODQzLCA2Mzg1MCwgNjM4NTcsIDYzODY2LCA2Mzg3NSwgNjM4ODAsIDYzODg1LCA2Mzg5MCwgCisgICAgNjM4OTcsIDYzOTAyLCA2MzkxMiwgNjM5MTksIDYzOTI0LCA2MzkyOSwgNjM5MzQsIDYzOTM5LCA2Mzk0NCwgNjM5NDksIAorICAgIDYzOTU4LCA2Mzk2NSwgNjM5NzIsIDYzOTc3LCA2Mzk4NCwgNjM5ODksIDYzOTk2LCA2NDAwNSwgNjQwMTYsIDY0MDIxLCAKKyAgICA2NDAzMCwgNjQwMzUsIDY0MDQyLCA2NDA1MSwgNjQwNjAsIDY0MDY1LCA2NDA3MCwgNjQwNzcsIDY0MDgzLCA2NDA5MCwgCisgICAgNjQwOTcsIDY0MTAxLCA2NDEwNSwgNjQxMDgsIDY0MTEyLCA2NDExNiwgNjQxMjAsIDY0MTI0LCA2NDEyOCwgNjQxMzIsIAorICAgIDY0MTM2LCA2NDEzOSwgNjQxNDMsIDY0MTQ3LCA2NDE1MSwgNjQxNTUsIDY0MTU5LCA2NDE2MywgNjQxNjYsIDY0MTcwLCAKKyAgICA2NDE3NCwgNjQxNzcsIDY0MTgxLCA2NDE4NSwgNjQxODksIDY0MTkzLCA2NDE5NywgNjQyMDEsIDY0MjA1LCA2NDIwOSwgCisgICAgNjQyMTMsIDY0MjE3LCA2NDIyMSwgNjQyMjUsIDY0MjI5LCA2NDIzMywgNjQyMzcsIDY0MjQxLCA2NDI0NSwgNjQyNDksIAorICAgIDY0MjUzLCA2NDI1NywgNjQyNjEsIDY0MjY1LCA2NDI2OSwgNjQyNzMsIDY0Mjc3LCA2NDI4MSwgNjQyODUsIDY0Mjg5LCAKKyAgICA2NDI5MywgNjQyOTcsIDY0MzAxLCA2NDMwNSwgNjQzMDksIDY0MzEzLCA2NDMxNywgNjQzMjEsIDY0MzI1LCA2NDMyOSwgCisgICAgNjQzMzMsIDY0MzM3LCA2NDM0MSwgNjQzNDUsIDY0MzQ5LCA2NDM1MywgNjQzNTYsIDY0MzYwLCA2NDM2NCwgNjQzNjgsIAorICAgIDY0MzcyLCA2NDM3NiwgNjQzODAsIDY0Mzg0LCA2NDM4OCwgNjQzOTIsIDY0Mzk2LCA2NDQwMCwgNjQ0MDQsIDY0NDA4LCAKKyAgICA2NDQxMiwgNjQ0MTYsIDY0NDIwLCA2NDQyNCwgNjQ0MjgsIDY0NDMyLCA2NDQzNiwgNjQ0NDAsIDY0NDQ0LCA2NDQ0OCwgCisgICAgNjQ0NTIsIDY0NDU2LCA2NDQ2MCwgNjQ0NjQsIDY0NDY4LCA2NDQ3MiwgNjQ0NzYsIDY0NDgwLCA2NDQ4NCwgNjQ0ODgsIAorICAgIDY0NDkyLCA2NDQ5NiwgNjQ1MDAsIDY0NTA0LCA2NDUwOCwgNjQ1MTIsIDY0NTE2LCA2NDUyMCwgNjQ1MjQsIDY0NTI4LCAKKyAgICA2NDUzMiwgNjQ1MzYsIDY0NTQwLCA2NDU0NCwgNjQ1NDgsIDY0NTUyLCA2NDU1NiwgNjQ1NjAsIDY0NTY0LCA2NDU2OCwgCisgICAgNjQ1NzIsIDY0NTc2LCA2NDU4MCwgNjQ1ODQsIDY0NTg4LCA2NDU5MiwgNjQ1OTYsIDY0NjAwLCA2NDYwNCwgNjQ2MDgsIAorICAgIDY0NjEyLCA2NDYxNiwgNjQ2MjAsIDY0NjI0LCA2NDYyOCwgNjQ2MzIsIDY0NjM2LCA2NDY0MCwgNjQ2NDQsIDY0NjQ4LCAKKyAgICA2NDY1MiwgNjQ2NTYsIDY0NjYwLCA2NDY2NCwgNjQ2NjgsIDY0NjcyLCA2NDY3NiwgNjQ2ODAsIDY0Njg0LCA2NDY4OCwgCisgICAgNjQ2OTIsIDY0Njk2LCA2NDcwMCwgNjQ3MDQsIDY0NzA4LCA2NDcxMiwgNjQ3MTYsIDY0NzIwLCA2NDcyNCwgNjQ3MjgsIAorICAgIDY0NzMyLCA2NDczNiwgNjQ3NDAsIDY0NzQ0LCA2NDc0OCwgNjQ3NTIsIDY0NzU2LCA2NDc2MCwgNjQ3NjQsIDY0NzY4LCAKKyAgICA2NDc3MiwgNjQ3NzYsIDY0NzgwLCA2NDc4NCwgNjQ3ODgsIDY0NzkyLCA2NDc5NiwgNjQ4MDAsIDY0ODA0LCA2NDgwOCwgCisgICAgNjQ4MTIsIDY0ODE2LCA2NDgyMCwgNjQ4MjQsIDY0ODI3LCA2NDgzMSwgNjQ4MzUsIDY0ODM5LCA2NDg0MywgNjQ4NDcsIAorICAgIDY0ODUxLCA2NDg1NSwgNjQ4NTksIDY0ODYzLCA2NDg2NywgNjQ4NzEsIDY0ODc1LCA2NDg3OSwgNjQ4ODMsIDY0ODg3LCAKKyAgICA2NDg5MSwgNjQ4OTUsIDY0ODk5LCA2NDkwMywgNjQ5MDcsIDY0OTExLCA2NDkxNSwgNjQ5MTksIDY0OTIzLCA2NDkyNywgCisgICAgNjQ5MzEsIDY0OTM1LCA2NDkzOSwgNjQ5NDMsIDY0OTQ3LCA2NDk1MSwgNjQ5NTUsIDY0OTU5LCA2NDk2MywgNjQ5NjcsIAorICAgIDY0OTcxLCA2NDk3NSwgNjQ5NzksIDY0OTgzLCA2NDk4NywgNjQ5OTEsIDY0OTk1LCA2NDk5OSwgNjUwMDMsIDY1MDA3LCAKKyAgICA2NTAxMSwgNjUwMTUsIDY1MDE5LCA2NTAyMywgNjUwMjcsIDY1MDMxLCA2NTAzNSwgNjUwMzksIDY1MDQzLCA2NTA0NywgCisgICAgNjUwNTEsIDY1MDU1LCA2NTA1OSwgNjUwNjMsIDY1MDY3LCA2NTA3MSwgNjUwNzUsIDY1MDc5LCA2NTA4MywgNjUwODcsIAorICAgIDY1MDkxLCA2NTA5NSwgNjUwOTksIDY1MTAzLCA2NTEwNywgNjUxMTEsIDY1MTE1LCA2NTExOSwgNjUxMjMsIDY1MTI3LCAKKyAgICA2NTEzMSwgNjUxMzUsIDY1MTM5LCA2NTE0MywgNjUxNDcsIDY1MTUxLCA2NTE1NSwgNjUxNTksIDY1MTYzLCA2NTE2NywgCisgICAgNjUxNzEsIDY1MTc1LCA2NTE3OSwgNjUxODMsIDY1MTg3LCA2NTE5MSwgNjUxOTUsIDY1MTk5LCA2NTIwMywgNjUyMDcsIAorICAgIDY1MjExLCA2NTIxNSwgNjUyMTksIDY1MjIzLCA2NTIyNywgNjUyMzEsIDY1MjM1LCA2NTIzOSwgNjUyNDMsIDY1MjQ3LCAKKyAgICA2NTI1MSwgNjUyNTUsIDY1MjU5LCA2NTI2MywgNjUyNjcsIDY1MjcxLCA2NTI3NSwgNjUyNzksIDY1MjgzLCA2NTI4NywgCisgICAgNjUyOTAsIDY1Mjk0LCA2NTI5OCwgNjUzMDIsIDY1MzA2LCA2NTMxMCwgNjUzMTQsIDY1MzE4LCA2NTMyMiwgNjUzMjYsIAorICAgIDY1MzMwLCA2NTMzNCwgNjUzMzgsIDY1MzQyLCA2NTM0NiwgNjUzNTAsIDY1MzU0LCA2NTM1OCwgNjUzNjIsIDY1MzY2LCAKKyAgICA2NTM3MCwgNjUzNzQsIDY1Mzc4LCA2NTM4MiwgNjUzODYsIDY1MzkwLCA2NTM5NCwgNjUzOTgsIDY1NDAyLCA2NTQwNiwgCisgICAgNjU0MTAsIDY1NDE0LCA2NTQxOCwgNjU0MjIsIDY1NDI2LCA2NTQzMCwgNjU0MzQsIDY1NDM4LCA2NTQ0MiwgNjU0NDYsIAorICAgIDY1NDUwLCA2NTQ1NCwgNjU0NTgsIDY1NDYyLCA2NTQ2NiwgNjU0NzAsIDY1NDc0LCA2NTQ3OCwgNjU0ODIsIDY1NDg2LCAKKyAgICA2NTQ5MCwgNjU0OTQsIDY1NDk4LCA2NTUwMiwgNjU1MDYsIDY1NTEwLCA2NTUxNCwgNjU1MTgsIDY1NTIyLCA2NTUyNiwgCisgICAgNjU1MzAsIDY1NTM0LCA2NTUzOCwgNjU1NDIsIDY1NTQ2LCA2NTU1MCwgNjU1NTQsIDY1NTU4LCA2NTU2MiwgNjU1NjYsIAorICAgIDY1NTcwLCA2NTU3NCwgNjU1NzgsIDY1NTgyLCA2NTU4NiwgNjU1OTAsIDY1NTk0LCA2NTU5OCwgNjU2MDIsIDY1NjA2LCAKKyAgICA2NTYxMCwgNjU2MTQsIDY1NjE4LCA2NTYyMiwgNjU2MjYsIDY1NjMwLCA2NTYzNCwgNjU2MzgsIDY1NjQyLCA2NTY0NiwgCisgICAgNjU2NDksIDY1NjUzLCA2NTY1NywgNjU2NjEsIDY1NjY1LCA2NTY2OSwgNjU2NzMsIDY1Njc3LCA2NTY4MSwgNjU2ODUsIAorICAgIDY1Njg5LCA2NTY5MywgNjU2OTcsIDY1NzAxLCA2NTcwNSwgNjU3MDksIDY1NzEzLCA2NTcxNywgNjU3MjEsIDY1NzI1LCAKKyAgICA2NTcyOSwgNjU3MzMsIDY1NzM3LCA2NTc0MSwgNjU3NDUsIDY1NzQ5LCA2NTc1MywgNjU3NTcsIDY1NzYxLCA2NTc2NSwgCisgICAgNjU3NjksIDY1NzczLCA2NTc3NywgNjU3ODEsIDY1Nzg1LCA2NTc4OSwgNjU3OTMsIDY1Nzk3LCA2NTgwMSwgNjU4MDUsIAorICAgIDY1ODA5LCA2NTgxMywgNjU4MTcsIDY1ODIxLCA2NTgyNSwgNjU4MjksIDY1ODMzLCA2NTgzNywgNjU4NDEsIDY1ODQ1LCAKKyAgICA2NTg0OSwgNjU4NTMsIDY1ODU3LCA2NTg2MSwgNjU4NjUsIDY1ODY5LCA2NTg3MywgNjU4NzcsIDY1ODgxLCA2NTg4NSwgCisgICAgNjU4ODksIDY1ODkzLCA2NTg5NywgNjU5MDEsIDY1OTA1LCA2NTkwOSwgNjU5MTMsIDY1OTE3LCA2NTkyMSwgNjU5MjUsIAorICAgIDY1OTI5LCA2NTkzMywgNjU5MzcsIDY1OTQxLCA2NTk0NSwgNjU5NDksIDY1OTUzLCA2NTk1NywgNjU5NjEsIDY1OTY1LCAKKyAgICA2NTk2OSwgNjU5NzMsIDY1OTc3LCA2NTk4MSwgNjU5ODUsIDY1OTg5LCA2NTk5MywgNjU5OTcsIDY2MDAxLCA2NjAwNSwgCisgICAgNjYwMDksIDY2MDEzLCA2NjAxNywgNjYwMjEsIDY2MDI1LCA2NjAyOSwgNjYwMzMsIDY2MDM3LCA2NjA0MSwgNjYwNDUsIAorICAgIDY2MDQ5LCA2NjA1MywgNjYwNTcsIDY2MDYxLCA2NjA2NSwgNjYwNjksIDY2MDczLCA2NjA3NywgNjYwODEsIDY2MDg1LCAKKyAgICA2NjA4OSwgNjYwOTMsIDY2MDk3LCA2NjEwMSwgNjYxMDUsIDY2MTA5LCA2NjExMywgNjYxMTcsIDY2MTIxLCA2NjEyNSwgCisgICAgNjYxMjksIDY2MTMzLCA2NjEzNywgNjYxNDEsIDY2MTQ0LCA2NjE0OCwgNjYxNTIsIDY2MTU2LCA2NjE2MCwgNjYxNjQsIAorICAgIDY2MTY4LCA2NjE3MiwgNjYxNzYsIDY2MTgwLCA2NjE4NCwgNjYxODgsIDY2MTkyLCA2NjE5NiwgNjYyMDAsIDY2MjA0LCAKKyAgICA2NjIwOCwgNjYyMTIsIDY2MjE2LCA2NjIyMCwgNjYyMjQsIDY2MjI4LCA2NjIzMiwgNjYyMzYsIDY2MjQwLCA2NjI0NCwgCisgICAgNjYyNDgsIDY2MjUyLCA2NjI1NiwgNjYyNjAsIDY2MjY0LCA2NjI2OCwgNjYyNzIsIDY2Mjc2LCA2NjI4MCwgNjYyODQsIAorICAgIDY2Mjg4LCA2NjI5MiwgNjYyOTYsIDY2MzAwLCA2NjMwNCwgNjYzMDgsIDY2MzEyLCA2NjMxNiwgNjYzMjAsIDY2MzI0LCAKKyAgICA2NjMyOCwgNjYzMzIsIDY2MzM2LCA2NjM0MCwgNjYzNDQsIDY2MzQ4LCA2NjM1MiwgNjYzNTYsIDY2MzYwLCA2NjM2NCwgCisgICAgNjYzNjgsIDY2MzcyLCA2NjM3NiwgNjYzODAsIDY2Mzg0LCA2NjM4OCwgNjYzOTIsIDY2Mzk2LCA2NjQwMCwgNjY0MDQsIAorICAgIDY2NDA4LCA2NjQxMiwgNjY0MTYsIDY2NDIwLCA2NjQyNCwgNjY0MjgsIDY2NDMyLCA2NjQzNiwgNjY0NDAsIDY2NDQ0LCAKKyAgICA2NjQ0OCwgNjY0NTIsIDY2NDU2LCA2NjQ2MCwgNjY0NjQsIDY2NDY4LCA2NjQ3MiwgNjY0NzYsIDY2NDgwLCA2NjQ4NCwgCisgICAgNjY0ODgsIDY2NDkyLCA2NjQ5NiwgNjY1MDAsIDY2NTA0LCA2NjUwOCwgNjY1MTIsIDY2NTE2LCA2NjUyMCwgNjY1MjQsIAorICAgIDY2NTI4LCA2NjUzMiwgNjY1MzYsIDY2NTQwLCA2NjU0NCwgNjY1NDgsIDY2NTUyLCA2NjU1NiwgNjY1NjAsIDY2NTY0LCAKKyAgICA2NjU2OCwgNjY1NzIsIDY2NTc2LCA2NjU4MCwgNjY1ODQsIDY2NTg4LCA2NjU5MiwgNjY1OTYsIDY2NTk5LCA2NjYwMywgCisgICAgNjY2MDcsIDY2NjExLCA2NjYxNSwgNjY2MTksIDY2NjIzLCA2NjYyNywgNjY2MzEsIDY2NjM1LCA2NjYzOSwgNjY2NDMsIAorICAgIDY2NjQ3LCA2NjY1MSwgNjY2NTUsIDY2NjU5LCA2NjY2MywgNjY2NjcsIDY2NjcxLCA2NjY3NSwgNjY2NzksIDY2NjgzLCAKKyAgICA2NjY4NywgNjY2OTEsIDY2Njk1LCA2NjY5OSwgNjY3MDMsIDY2NzA3LCA2NjcxMSwgNjY3MTUsIDY2NzE5LCA2NjcyMywgCisgICAgNjY3MjcsIDY2NzMxLCA2NjczNSwgNjY3MzksIDY2NzQzLCA2Njc0NywgNjY3NTEsIDY2NzU1LCA2Njc1OSwgNjY3NjMsIAorICAgIDY2NzY3LCA2Njc3MSwgNjY3NzUsIDY2Nzc5LCA2Njc4MywgNjY3ODcsIDY2NzkxLCA2Njc5NSwgNjY3OTksIDY2ODAzLCAKKyAgICA2NjgwNywgNjY4MTEsIDY2ODE1LCA2NjgxOSwgNjY4MjMsIDY2ODI3LCA2NjgzMSwgNjY4MzUsIDY2ODM5LCA2Njg0MywgCisgICAgNjY4NDcsIDY2ODUxLCA2Njg1NSwgNjY4NTksIDY2ODYzLCA2Njg2NywgNjY4NzEsIDY2ODc1LCA2Njg3OSwgNjY4ODMsIAorICAgIDY2ODg3LCA2Njg5MSwgNjY4OTUsIDY2ODk5LCA2NjkwMywgNjY5MDcsIDY2OTExLCA2NjkxNSwgNjY5MTksIDY2OTIzLCAKKyAgICA2NjkyNywgNjY5MzEsIDY2OTM1LCA2NjkzOSwgNjY5NDMsIDY2OTQ3LCA2Njk1MSwgNjY5NTUsIDY2OTU5LCA2Njk2MywgCisgICAgNjY5NjcsIDY2OTcxLCA2Njk3NSwgNjY5NzksIDY2OTgzLCA2Njk4NywgNjY5OTEsIDY2OTk1LCA2Njk5OSwgNjcwMDMsIAorICAgIDY3MDA3LCA2NzAxMSwgNjcwMTUsIDY3MDE5LCA2NzAyMywgNjcwMjcsIDY3MDMxLCA2NzAzNSwgNjcwMzksIDY3MDQzLCAKKyAgICA2NzA0NywgNjcwNTEsIDY3MDU1LCA2NzA1OSwgNjcwNjMsIDY3MDY3LCA2NzA3MSwgNjcwNzUsIDY3MDc5LCA2NzA4MywgCisgICAgNjcwODcsIDY3MDkxLCA2NzA5NSwgNjcwOTksIDY3MTAzLCA2NzEwNywgNjcxMTEsIDY3MTE1LCA2NzExOSwgNjcxMjMsIAorICAgIDY3MTI3LCA2NzEzMSwgNjcxMzUsIDY3MTM5LCA2NzE0MywgNjcxNDcsIDY3MTUxLCA2NzE1NSwgNjcxNTksIDY3MTYzLCAKKyAgICA2NzE2NywgNjcxNzEsIDY3MTc1LCA2NzE3OSwgNjcxODMsIDY3MTg3LCA2NzE5MSwgNjcxOTUsIDY3MTk5LCA2NzIwMiwgCisgICAgNjcyMDYsIDY3MjEwLCA2NzIxNCwgNjcyMTgsIDY3MjIyLCA2NzIyNiwgNjcyMzAsIDY3MjMzLCA2NzIzNywgNjcyNDEsIAorICAgIDY3MjQ1LCA2NzI0OSwgNjcyNTMsIDY3MjU3LCA2NzI2MSwgNjcyNjUsIDY3MjY5LCA2NzI3MywgNjcyNzcsIDY3MjgxLCAKKyAgICA2NzI4NSwgNjcyODksIDY3MjkzLCA2NzI5NywgNjczMDEsIDY3MzA1LCA2NzMwOSwgNjczMTMsIDY3MzE3LCA2NzMyMSwgCisgICAgNjczMjUsIDY3MzI5LCA2NzMzMywgNjczMzcsIDY3MzQxLCA2NzM0NSwgNjczNDksIDY3MzUzLCA2NzM1NywgNjczNjEsIAorICAgIDY3MzY1LCA2NzM2OSwgNjczNzMsIDY3Mzc3LCA2NzM4MSwgNjczODUsIDY3Mzg5LCA2NzM5MywgNjczOTcsIDY3NDAxLCAKKyAgICA2NzQwNSwgNjc0MDksIDY3NDEzLCA2NzQxNywgNjc0MjEsIDY3NDI1LCA2NzQyOSwgNjc0MzMsIDY3NDM3LCA2NzQ0MSwgCisgICAgNjc0NDUsIDY3NDQ5LCA2NzQ1MywgNjc0NTcsIDY3NDYxLCA2NzQ2NSwgNjc0NjksIDY3NDczLCA2NzQ3NywgNjc0ODEsIAorICAgIDY3NDg1LCA2NzQ4OSwgNjc0OTMsIDY3NDk3LCA2NzUwMSwgNjc1MDUsIDY3NTA5LCA2NzUxMywgNjc1MTcsIDY3NTIxLCAKKyAgICA2NzUyNSwgNjc1MjksIDY3NTMzLCA2NzUzNywgNjc1NDEsIDY3NTQ1LCA2NzU0OSwgNjc1NTMsIDY3NTU3LCA2NzU2MSwgCisgICAgNjc1NjUsIDY3NTY5LCA2NzU3MywgNjc1NzcsIDY3NTgxLCA2NzU4NSwgNjc1ODksIDY3NTkzLCA2NzU5NywgNjc2MDEsIAorICAgIDY3NjA1LCA2NzYwOSwgNjc2MTMsIDY3NjE3LCA2NzYyMSwgNjc2MjUsIDY3NjI5LCA2NzYzMywgNjc2MzcsIDY3NjQxLCAKKyAgICA2NzY0NSwgNjc2NDksIDY3NjUzLCA2NzY1NywgNjc2NjEsIDY3NjY1LCA2NzY2OSwgNjc2NzMsIDY3Njc3LCA2NzY4MSwgCisgICAgNjc2ODUsIDY3Njg5LCA2NzY5MywgNjc2OTcsIDY3NzAxLCA2NzcwNSwgNjc3MDksIDY3NzEzLCA2NzcxNywgNjc3MjEsIAorICAgIDY3NzI1LCA2NzcyOSwgNjc3MzMsIDY3NzM3LCA2Nzc0MSwgNjc3NDUsIDY3NzQ5LCA2Nzc1MywgNjc3NTcsIDY3NzYxLCAKKyAgICA2Nzc2NSwgNjc3NjksIDY3NzczLCA2Nzc3NywgNjc3ODEsIDY3Nzg1LCA2Nzc4OSwgNjc3OTMsIDY3Nzk3LCA2NzgwMSwgCisgICAgNjc4MDUsIDY3ODA5LCA2NzgxMywgNjc4MTcsIDY3ODIxLCA2NzgyNSwgNjc4MjksIDY3ODMzLCA2NzgzNywgNjc4NDEsIAorICAgIDY3ODQ1LCA2Nzg0OSwgNjc4NTMsIDY3ODU3LCA2Nzg2MSwgNjc4NjUsIDY3ODY5LCA2Nzg3MywgNjc4NzcsIDY3ODgxLCAKKyAgICA2Nzg4NSwgNjc4ODksIDY3ODkzLCA2Nzg5NywgNjc5MDEsIDY3OTA1LCA2NzkwOSwgNjc5MTMsIDY3OTE3LCA2NzkyMSwgCisgICAgNjc5MjUsIDY3OTI5LCA2NzkzMywgNjc5MzcsIDY3OTQxLCA2Nzk0NSwgNjc5NDksIDY3OTUzLCA2Nzk1NywgNjc5NjAsIAorICAgIDY3OTY0LCA2Nzk2OCwgNjc5NzIsIDY3OTc2LCA2Nzk4MCwgNjc5ODQsIDY3OTg4LCA2Nzk5MiwgNjc5OTYsIDY4MDAwLCAKKyAgICA2ODAwNCwgNjgwMDgsIDY4MDEyLCA2ODAxNiwgNjgwMjAsIDY4MDI0LCA2ODAyOCwgNjgwMzIsIDY4MDM2LCA2ODA0MCwgCisgICAgNjgwNDQsIDY4MDQ4LCA2ODA1MiwgNjgwNTYsIDY4MDYwLCA2ODA2NCwgNjgwNjgsIDY4MDcyLCA2ODA3NiwgNjgwODAsIAorICAgIDY4MDg0LCA2ODA4OCwgNjgwOTIsIDY4MDk2LCA2ODEwMCwgNjgxMDQsIDY4MTA4LCA2ODExMiwgNjgxMTYsIDY4MTIwLCAKKyAgICA2ODEyNCwgNjgxMjgsIDY4MTMyLCA2ODEzNiwgNjgxNDAsIDY4MTQ0LCA2ODE0OCwgNjgxNTIsIDY4MTU2LCA2ODE2MCwgCisgICAgNjgxNjQsIDY4MTY4LCA2ODE3MiwgNjgxNzYsIDY4MTgwLCA2ODE4NCwgNjgxODgsIDY4MTkyLCA2ODE5NiwgNjgyMDAsIAorICAgIDY4MjA0LCA2ODIwOCwgNjgyMTIsIDY4MjE2LCA2ODIyMCwgNjgyMjQsIDY4MjI4LCA2ODIzMiwgNjgyMzYsIDY4MjQwLCAKKyAgICA2ODI0NCwgNjgyNDgsIDY4MjUyLCA2ODI1NiwgNjgyNjAsIDY4MjY0LCA2ODI2OCwgNjgyNzIsIDY4Mjc2LCA2ODI4MCwgCisgICAgNjgyODQsIDY4Mjg4LCA2ODI5MiwgNjgyOTYsIDY4MzAwLCA2ODMwNCwgNjgzMDgsIDY4MzEyLCA2ODMxNiwgNjgzMjAsIAorICAgIDY4MzI0LCA2ODMyOCwgNjgzMzIsIDY4MzM2LCA2ODM0MCwgNjgzNDQsIDY4MzQ4LCA2ODM1MiwgNjgzNTYsIDY4MzYwLCAKKyAgICA2ODM2NCwgNjgzNjgsIDY4MzcyLCA2ODM3NiwgNjgzODAsIDY4Mzg0LCA2ODM4OCwgNjgzOTIsIDY4Mzk2LCA2ODQwMCwgCisgICAgNjg0MDQsIDY4NDA4LCA2ODQxMiwgNjg0MTYsIDY4NDIwLCA2ODQyNCwgNjg0MjgsIDY4NDMyLCA2ODQzNiwgNjg0NDAsIAorICAgIDY4NDQ0LCA2ODQ0OCwgNjg0NTIsIDY4NDU2LCA2ODQ2MCwgNjg0NjQsIDY4NDY4LCA2ODQ3MiwgNjg0NzYsIDY4NDgwLCAKKyAgICA2ODQ4NCwgNjg0ODgsIDY4NDkyLCA2ODQ5NiwgNjg1MDAsIDY4NTA0LCA2ODUwOCwgNjg1MTIsIDY4NTE2LCA2ODUyMCwgCisgICAgNjg1MjQsIDY4NTI4LCA2ODUzMiwgNjg1MzYsIDY4NTQwLCA2ODU0NCwgNjg1NDgsIDY4NTUyLCA2ODU1NiwgNjg1NjAsIAorICAgIDY4NTY0LCA2ODU2OCwgNjg1NzIsIDY4NTc2LCA2ODU4MCwgNjg1ODQsIDY4NTg4LCA2ODU5MiwgNjg1OTYsIDY4NjAwLCAKKyAgICA2ODYwNCwgNjg2MDgsIDY4NjEyLCA2ODYxNiwgNjg2MjAsIDY4NjI0LCA2ODYyOCwgNjg2MzIsIDY4NjM2LCA2ODY0MCwgCisgICAgNjg2NDQsIDY4NjQ4LCA2ODY1MiwgNjg2NTYsIDY4NjYwLCA2ODY2NCwgNjg2NjgsIDY4NjcyLCA2ODY3NiwgNjg2ODAsIAorICAgIDY4Njg0LCA2ODY4OCwgNjg2OTIsIDY4Njk2LCA2ODcwMCwgNjg3MDQsIDY4NzA4LCA2ODcxMiwgNjg3MTYsIDY4NzIwLCAKKyAgICA2ODcyNCwgNjg3MjgsIDY4NzMyLCA2ODczNiwgNjg3NDAsIDAsIDAsIDAsIDY4NzQ0LCA2ODc0OCwgNjg3NTIsIDY4NzU2LCAKKyAgICA2ODc2MCwgNjg3NjQsIDY4NzY4LCA2ODc3MiwgNjg3NzYsIDY4NzgwLCA2ODc4NCwgNjg3ODgsIDY4NzkyLCA2ODc5NiwgCisgICAgNjg4MDAsIDY4ODA0LCA2ODgwOCwgNjg4MTIsIDY4ODE2LCA2ODgyMCwgNjg4MjQsIDY4ODI4LCA2ODgzMiwgNjg4MzYsIAorICAgIDY4ODQwLCA2ODg0NCwgNjg4NDgsIDY4ODUyLCA2ODg1NiwgNjg4NjAsIDY4ODY0LCA2ODg2OCwgNjg4NzIsIDY4ODc2LCAKKyAgICA2ODg4MCwgNjg4ODQsIDY4ODg4LCA2ODg5MiwgNjg4OTYsIDY4OTAwLCA2ODkwNCwgNjg5MDgsIDY4OTEyLCA2ODkxNiwgCisgICAgNjg5MjAsIDY4OTI0LCA2ODkyOCwgNjg5MzIsIDY4OTM2LCA2ODk0MCwgNjg5NDQsIDY4OTQ4LCA2ODk1MiwgNjg5NTYsIAorICAgIDY4OTYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2ODk2NCwgNjg5NjksIDY4OTczLCA2ODk3OCwgNjg5ODMsIAorICAgIDY4OTg4LCA2ODk5MywgNjg5OTgsIDY5MDAyLCA2OTAwNywgNjkwMTIsIDY5MDE3LCA2OTAyMiwgNjkwMjcsIDY5MDMyLCAKKyAgICA2OTAzNywgNjkwNDEsIDY5MDQ1LCA2OTA1MCwgNjkwNTQsIDY5MDU5LCA2OTA2NCwgNjkwNjksIDY5MDczLCA2OTA3OCwgCisgICAgNjkwODMsIDY5MDg4LCA2OTA5MywgNjkwOTgsIDY5MTAyLCA2OTEwNywgNjkxMTEsIDY5MTE2LCA2OTEyMCwgNjkxMjUsIAorICAgIDY5MTI5LCA2OTEzMywgNjkxMzcsIDY5MTQyLCA2OTE0NywgNjkxNTIsIDY5MTYwLCA2OTE2OCwgNjkxNzYsIDY5MTg0LCAKKyAgICA2OTE5MSwgNjkxOTksIDY5MjA1LCA2OTIxMywgNjkyMTcsIDY5MjIxLCA2OTIyNSwgNjkyMjksIDY5MjMzLCA2OTIzNywgCisgICAgNjkyNDEsIDY5MjQ1LCA2OTI0OSwgNjkyNTMsIDY5MjU3LCA2OTI2MSwgNjkyNjUsIDY5MjY5LCA2OTI3MywgNjkyNzcsIAorICAgIDY5MjgxLCA2OTI4NSwgNjkyODksIDY5MjkzLCA2OTI5NywgNjkzMDEsIDY5MzA1LCA2OTMwOSwgNjkzMTMsIDY5MzE3LCAKKyAgICA2OTMyMSwgNjkzMjUsIDY5MzI5LCA2OTMzMywgNjkzMzcsIDY5MzQxLCA2OTM0NSwgNjkzNDksIDY5MzUzLCA2OTM1NywgCisgICAgNjkzNjAsIDY5MzY0LCA2OTM2OCwgNjkzNzIsIDY5Mzc2LCA2OTM4MCwgNjkzODQsIDY5Mzg4LCA2OTM5MiwgNjkzOTYsIAorICAgIDY5NDAwLCA2OTQwNCwgNjk0MDgsIDY5NDEyLCA2OTQxNiwgNjk0MjAsIDY5NDI0LCA2OTQyOCwgNjk0MzIsIDY5NDM2LCAKKyAgICA2OTQ0MCwgNjk0NDQsIDY5NDQ4LCA2OTQ1MiwgNjk0NTYsIDY5NDYwLCA2OTQ2NCwgNjk0NjgsIDY5NDcyLCA2OTQ3NiwgCisgICAgNjk0ODAsIDY5NDg0LCA2OTQ4OCwgNjk0OTIsIDY5NDk2LCA2OTUwMCwgNjk1MDQsIDY5NTA3LCA2OTUxMSwgNjk1MTUsIAorICAgIDY5NTE4LCA2OTUyMiwgNjk1MjYsIDY5NTMwLCA2OTUzMywgNjk1MzcsIDY5NTQxLCA2OTU0NSwgNjk1NDksIDY5NTUzLCAKKyAgICA2OTU1NywgNjk1NjEsIDY5NTY1LCA2OTU2OSwgNjk1NzMsIDY5NTc3LCA2OTU4MSwgNjk1ODUsIDY5NTg5LCA2OTU5MiwgCisgICAgNjk1OTYsIDY5NjAwLCA2OTYwMywgNjk2MDcsIDY5NjExLCA2OTYxNSwgNjk2MTksIDY5NjIzLCA2OTYyNywgNjk2MzAsIAorICAgIDY5NjMzLCA2OTYzNywgNjk2NDEsIDY5NjQ1LCA2OTY0OCwgNjk2NTEsIDY5NjU1LCA2OTY1OSwgNjk2NjMsIDY5NjY3LCAKKyAgICA2OTY3MSwgNjk2NzUsIDY5Njc5LCA2OTY4MywgNjk2ODcsIDY5NjkxLCA2OTY5NSwgNjk2OTksIDY5NzAzLCA2OTcwNywgCisgICAgNjk3MTEsIDY5NzE1LCA2OTcxOSwgNjk3MjMsIDY5NzI3LCA2OTczMSwgNjk3MzUsIDY5NzM5LCA2OTc0MywgNjk3NDcsIAorICAgIDY5NzUxLCA2OTc1NSwgNjk3NTksIDY5NzYzLCA2OTc2NywgNjk3NzEsIDY5Nzc1LCA2OTc3OSwgNjk3ODMsIDY5Nzg3LCAKKyAgICA2OTc5MSwgNjk3OTUsIDY5Nzk5LCA2OTgwMiwgNjk4MDYsIDY5ODEwLCA2OTgxNCwgNjk4MTgsIDY5ODIyLCA2OTgyNiwgCisgICAgNjk4MzAsIDY5ODM0LCA2OTgzOCwgNjk4NDIsIDY5ODQ2LCA2OTg1MCwgNjk4NTQsIDY5ODU4LCA2OTg2MiwgNjk4NjYsIAorICAgIDY5ODcwLCA2OTg3NCwgNjk4NzgsIDY5ODgyLCA2OTg4NiwgNjk4OTAsIDY5ODk0LCA2OTg5OCwgNjk5MDIsIDY5OTA2LCAKKyAgICA2OTkxMCwgNjk5MTQsIDY5OTE4LCA2OTkyMiwgNjk5MjYsIDY5OTMwLCA2OTkzNCwgNjk5MzgsIDY5OTQyLCA2OTk0NiwgCisgICAgNjk5NDksIDY5OTUzLCA2OTk1NywgNjk5NjEsIDY5OTY1LCA2OTk2OSwgNjk5NzMsIDY5OTc3LCA2OTk4MSwgNjk5ODUsIAorICAgIDY5OTg5LCA2OTk5MywgNjk5OTcsIDcwMDAxLCA3MDAwNSwgNzAwMDksIDcwMDEzLCA3MDAxNiwgNzAwMjAsIDcwMDI0LCAKKyAgICA3MDAyOCwgNzAwMzIsIDcwMDM2LCA3MDA0MCwgNzAwNDQsIDcwMDQ4LCA3MDA1MiwgNzAwNTYsIDcwMDYwLCA3MDA2NCwgCisgICAgNzAwNjgsIDcwMDcyLCA3MDA3NiwgNzAwODAsIDcwMDg0LCA3MDA4OCwgNzAwOTIsIDcwMDk2LCA3MDEwMCwgNzAxMDMsIAorICAgIDcwMTA3LCA3MDExMSwgNzAxMTUsIDcwMTE5LCA3MDEyMywgNzAxMjcsIDcwMTMxLCA3MDEzNSwgNzAxMzksIDcwMTQzLCAKKyAgICA3MDE0NywgNzAxNTEsIDcwMTU1LCA3MDE1OSwgNzAxNjMsIDcwMTY3LCA3MDE3MSwgNzAxNzUsIDcwMTc5LCA3MDE4MywgCisgICAgNzAxODcsIDcwMTkxLCA3MDE5NSwgNzAxOTksIDcwMjAzLCA3MDIwNywgNzAyMTEsIDcwMjE1LCA3MDIxOSwgNzAyMjMsIAorICAgIDcwMjI3LCA3MDIzMSwgNzAyMzUsIDcwMjM5LCA3MDI0MywgNzAyNDcsIDcwMjUxLCA3MDI1NSwgNzAyNTksIDcwMjYzLCAKKyAgICA3MDI2NywgNzAyNzEsIDcwMjc1LCA3MDI3OCwgNzAyODMsIDcwMjg3LCA3MDI5MywgNzAyOTgsIDcwMzA0LCA3MDMwOCwgCisgICAgNzAzMTIsIDcwMzE2LCA3MDMyMCwgNzAzMjQsIDcwMzI4LCA3MDMzMiwgNzAzMzYsIDcwMzQwLCA3MDM0NCwgNzAzNDgsIAorICAgIDcwMzUyLCA3MDM1NiwgNzAzNjAsIDcwMzYzLCA3MDM2NiwgNzAzNjksIDcwMzcyLCA3MDM3NSwgNzAzNzgsIDcwMzgxLCAKKyAgICA3MDM4NCwgNzAzODcsIDcwMzkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA3MDM5OCwgNzA0MDMsIDcwNDA4LCA3MDQxMywgNzA0MTgsIDcwNDI1LCA3MDQzMiwgNzA0MzcsIDcwNDQyLCAKKyAgICA3MDQ0NywgNzA0NTIsIDcwNDU5LCA3MDQ2NiwgNzA0NzMsIDcwNDgwLCA3MDQ4NywgNzA0OTQsIDcwNTA0LCA3MDUxNCwgCisgICAgNzA1MjEsIDcwNTI4LCA3MDUzNSwgNzA1NDIsIDcwNTQ4LCA3MDU1NCwgNzA1NjMsIDcwNTcyLCA3MDU3OSwgNzA1ODYsIAorICAgIDcwNTk3LCA3MDYwOCwgNzA2MTMsIDcwNjE4LCA3MDYyNSwgNzA2MzIsIDcwNjM5LCA3MDY0NiwgNzA2NTMsIDcwNjYwLCAKKyAgICA3MDY2NywgNzA2NzQsIDcwNjgwLCA3MDY4NiwgNzA2OTIsIDcwNjk4LCA3MDcwNSwgNzA3MTIsIDcwNzE3LCA3MDcyMSwgCisgICAgNzA3MjgsIDcwNzM1LCA3MDc0MiwgNzA3NDYsIDcwNzUzLCA3MDc1NywgNzA3NjIsIDcwNzY2LCA3MDc3MiwgNzA3NzcsIAorICAgIDcwNzgzLCA3MDc4OCwgNzA3OTIsIDcwNzk2LCA3MDc5OSwgNzA4MDIsIDcwODA3LCA3MDgxMiwgNzA4MTcsIDcwODIyLCAKKyAgICA3MDgyNywgNzA4MzIsIDcwODM3LCA3MDg0MiwgNzA4NDcsIDcwODUyLCA3MDg2MSwgNzA4NzAsIDcwODc1LCA3MDg4MCwgCisgICAgNzA4ODUsIDcwODkwLCA3MDg5NSwgNzA5MDAsIDcwOTA1LCA3MDkxMCwgNzA5MTUsIDcwOTIwLCA3MDkyNSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNzA5MzAsIDcwOTM2LCA3MDkzOSwgNzA5NDIsIDcwOTQ1LCA3MDk0OSwgNzA5NTMsIDcwOTU3LCAKKyAgICA3MDk2MSwgNzA5NjQsIDcwOTY4LCA3MDk3MSwgNzA5NzUsIDcwOTc4LCA3MDk4MiwgNzA5ODYsIDcwOTkwLCA3MDk5NCwgCisgICAgNzA5OTgsIDcxMDAyLCA3MTAwNiwgNzEwMDksIDcxMDEzLCA3MTAxNywgNzEwMjEsIDcxMDI1LCA3MTAyOSwgNzEwMzMsIAorICAgIDcxMDM3LCA3MTA0MSwgNzEwNDUsIDcxMDQ5LCA3MTA1MywgNzEwNTcsIDcxMDYxLCA3MTA2NSwgNzEwNjgsIDcxMDcyLCAKKyAgICA3MTA3NiwgNzEwODAsIDcxMDg0LCA3MTA4OCwgNzEwOTIsIDcxMDk2LCA3MTEwMCwgNzExMDQsIDcxMTA4LCA3MTExMiwgCisgICAgNzExMTYsIDcxMTIwLCA3MTEyNCwgNzExMjgsIDcxMTMyLCA3MTEzNiwgNzExNDAsIDcxMTQ0LCA3MTE0OCwgNzExNTIsIAorICAgIDcxMTU2LCA3MTE2MCwgNzExNjQsIDcxMTY3LCA3MTE3MSwgNzExNzUsIDcxMTc5LCA3MTE4MywgNzExODcsIDcxMTkxLCAKKyAgICA3MTE5NSwgNzExOTgsIDcxMjAyLCA3MTIwNiwgNzEyMTAsIDcxMjE0LCA3MTIxOCwgNzEyMjIsIDcxMjI2LCA3MTIzMCwgCisgICAgNzEyMzQsIDcxMjM4LCA3MTI0MiwgNzEyNDYsIDcxMjUxLCA3MTI1NiwgNzEyNTksIDcxMjY0LCA3MTI2NywgNzEyNzAsIAorICAgIDcxMjczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MTI3NywgNzEyODYsIDcxMjk1LCA3MTMwNCwgNzEzMTMsIDcxMzIyLCAKKyAgICA3MTMzMSwgNzEzNDAsIDcxMzQ5LCA3MTM1NywgNzEzNjQsIDcxMzcyLCA3MTM3OSwgNzEzODcsIDcxMzk3LCA3MTQwNiwgCisgICAgNzE0MTYsIDcxNDI1LCA3MTQzNSwgNzE0NDMsIDcxNDUwLCA3MTQ1OCwgNzE0NjUsIDcxNDczLCA3MTQ3OCwgNzE0ODMsIAorICAgIDcxNDg4LCA3MTQ5NywgNzE1MDMsIDcxNTA5LCA3MTUxNiwgNzE1MjUsIDcxNTMzLCA3MTU0MSwgNzE1NDksIDcxNTU2LCAKKyAgICA3MTU2MywgNzE1NzAsIDcxNTc3LCA3MTU4MiwgNzE1ODcsIDcxNTkyLCA3MTU5NywgNzE2MDIsIDcxNjA3LCA3MTYxMiwgCisgICAgNzE2MTcsIDcxNjI1LCA3MTYzMywgNzE2MzksIDcxNjQ1LCA3MTY1MCwgNzE2NTUsIDcxNjYwLCA3MTY2NSwgNzE2NzAsIAorICAgIDcxNjc1LCA3MTY4MCwgNzE2ODUsIDcxNjkzLCA3MTcwMSwgNzE3MDYsIDcxNzExLCA3MTcyMSwgNzE3MzEsIDcxNzM4LCAKKyAgICA3MTc0NSwgNzE3NTQsIDcxNzYzLCA3MTc3NSwgNzE3ODcsIDcxNzkzLCA3MTc5OSwgNzE4MDcsIDcxODE1LCA3MTgyNSwgCisgICAgNzE4MzUsIDcxODQyLCA3MTg0OSwgNzE4NTQsIDcxODU5LCA3MTg3MSwgNzE4ODMsIDcxODkxLCA3MTg5OSwgNzE5MDksIAorICAgIDcxOTE5LCA3MTkzMSwgNzE5NDMsIDcxOTUyLCA3MTk2MSwgNzE5NjgsIDcxOTc1LCA3MTk4MiwgNzE5ODksIDcxOTk4LCAKKyAgICA3MjAwNywgNzIwMTIsIDcyMDE3LCA3MjAyNCwgNzIwMzEsIDcyMDM4LCA3MjA0NSwgNzIwNTcsIDcyMDY5LCA3MjA3NCwgCisgICAgNzIwNzksIDcyMDg0LCA3MjA4OSwgNzIwOTQsIDcyMDk5LCA3MjEwNCwgNzIxMDksIDcyMTEzLCA3MjExOCwgNzIxMjMsIAorICAgIDcyMTI4LCA3MjEzMywgNzIxMzgsIDcyMTQ0LCA3MjE0OSwgNzIxNTQsIDcyMTYxLCA3MjE2OCwgNzIxNzUsIDcyMTgyLCAKKyAgICA3MjE4OSwgNzIxOTgsIDcyMjA3LCA3MjIxMywgNzIyMTksIDcyMjI1LCA3MjIzMSwgNzIyMzgsIDcyMjQ1LCA3MjI1MiwgCisgICAgNzIyNTksIDcyMjY2LCA3MjI3MCwgNzIyNzcsIDcyMjgyLCA3MjI4NywgNzIyOTQsIDAsIDcyMzA3LCA3MjMxNSwgNzIzMjMsIAorICAgIDcyMzMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MjMzNywgNzIzNDYsIDcyMzU1LCA3MjM2NCwgCisgICAgNzIzNzMsIDcyMzgyLCA3MjM5MSwgNzI0MDAsIDcyNDA5LCA3MjQxOCwgNzI0MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcyNDM0LCAKKyAgICA3MjQ0MSwgNzI0NDcsIDcyNDU0LCA3MjQ2MiwgNzI0NzAsIDcyNDc3LCA3MjQ4NSwgNzI0OTIsIDcyNDk4LCA3MjUwNCwgCisgICAgNzI1MTEsIDcyNTE3LCA3MjUyMywgNzI1MjksIDcyNTM2LCA3MjU0MywgNzI1NTAsIDcyNTU3LCA3MjU2NCwgNzI1NzEsIAorICAgIDcyNTc4LCA3MjU4NSwgNzI1OTIsIDcyNTk5LCA3MjYwNiwgNzI2MTMsIDcyNjIwLCA3MjYyNywgNzI2MzMsIDcyNjQwLCAKKyAgICA3MjY0NywgNzI2NTQsIDcyNjYxLCA3MjY2OCwgNzI2NzUsIDcyNjgyLCA3MjY4OSwgNzI2OTYsIDcyNzAzLCA3MjcxMCwgCisgICAgNzI3MTcsIDcyNzI0LCA3MjczMSwgNzI3MzgsIDcyNzQ1LCA3Mjc1MiwgNzI3NTksIDcyNzY3LCA3Mjc3NSwgNzI3ODMsIAorICAgIDcyNzkxLCAwLCAwLCAwLCAwLCA3Mjc5OSwgNzI4MDgsIDcyODE3LCA3MjgyNiwgNzI4MzUsIDcyODQ0LCA3Mjg1MywgCisgICAgNzI4NjAsIDcyODY3LCA3Mjg3NCwgMCwgMCwgMCwgMCwgMCwgMCwgNzI4ODEsIDcyODg1LCA3Mjg5MCwgNzI4OTUsIDcyOTAwLCAKKyAgICA3MjkwNSwgNzI5MTAsIDcyOTE1LCA3MjkyMCwgNzI5MjUsIDcyOTMwLCA3MjkzNSwgNzI5MzksIDcyOTQzLCA3Mjk0OCwgCisgICAgNzI5NTMsIDcyOTU3LCA3Mjk2MiwgNzI5NjcsIDcyOTcyLCA3Mjk3NywgNzI5ODIsIDcyOTg3LCA3Mjk5MiwgNzI5OTYsIAorICAgIDczMDAwLCA3MzAwNSwgNzMwMTAsIDczMDE0LCA3MzAxOCwgNzMwMjIsIDczMDI2LCA3MzAzMCwgNzMwMzQsIDczMDM4LCAKKyAgICA3MzA0MywgNzMwNDgsIDczMDUzLCA3MzA1OCwgNzMwNjMsIDczMDcwLCA3MzA3NiwgNzMwODEsIDczMDg2LCA3MzA5MSwgCisgICAgNzMwOTYsIDczMTAyLCA3MzEwOSwgNzMxMTUsIDczMTIyLCA3MzEyOCwgNzMxMzQsIDczMTM5LCA3MzE0NiwgNzMxNTIsIAorICAgIDczMTU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MzE2MywgNzMxNjcsIDczMTcxLCA3MzE3NCwgNzMxNzgsIDczMTgxLCAKKyAgICA3MzE4NSwgNzMxODgsIDczMTkyLCA3MzE5NiwgNzMyMDEsIDczMjA1LCA3MzIxMCwgNzMyMTMsIDczMjE3LCA3MzIyMSwgCisgICAgNzMyMjQsIDczMjI4LCA3MzIzMiwgNzMyMzUsIDczMjM5LCA3MzI0MywgNzMyNDcsIDczMjUxLCA3MzI1NSwgNzMyNTksIAorICAgIDczMjYzLCA3MzI2NywgNzMyNzEsIDczMjc1LCA3MzI3OSwgNzMyODMsIDczMjg3LCA3MzI5MSwgNzMyOTUsIDczMjk5LCAKKyAgICA3MzMwMywgNzMzMDcsIDczMzEwLCA3MzMxMywgNzMzMTcsIDczMzIxLCA3MzMyNSwgNzMzMjgsIDczMzMxLCA3MzMzNCwgCisgICAgNzMzMzgsIDczMzQyLCA3MzM0NiwgNzMzNTAsIDczMzUzLCA3MzM1NiwgNzMzNjAsIDczMzY1LCA3MzM3MCwgNzMzNzQsIAorICAgIDczMzc5LCA3MzM4MywgNzMzODgsIDczMzkzLCA3MzM5OSwgNzM0MDQsIDczNDEwLCA3MzQxNCwgNzM0MTksIDczNDI0LCAKKyAgICA3MzQyOCwgNzM0MzMsIDczNDM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MzQ0MiwgNzM0NDUsIDczNDQ5LCAKKyAgICA3MzQ1MywgNzM0NTYsIDczNDU5LCA3MzQ2MiwgNzM0NjUsIDczNDY4LCA3MzQ3MSwgNzM0NzQsIDczNDc3LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA3MzQ4MCwgNzM0ODUsIDczNDg5LCA3MzQ5MywgNzM0OTcsIDczNTAxLCA3MzUwNSwgNzM1MDksIDczNTEzLCAKKyAgICA3MzUxNywgNzM1MjEsIDczNTI1LCA3MzUyOSwgNzM1MzMsIDczNTM3LCA3MzU0MSwgNzM1NDUsIDczNTUwLCA3MzU1NSwgCisgICAgNzM1NjEsIDczNTY3LCA3MzU3NCwgNzM1NzksIDczNTg0LCA3MzU5MCwgNzM1OTQsIDczNTk5LCA3MzYwMiwgMCwgMCwgMCwgCisgICAgMCwgNzM2MDUsIDczNjEyLCA3MzYxOCwgNzM2MjQsIDczNjMwLCA3MzYzNiwgNzM2NDIsIDczNjQ4LCA3MzY1NCwgNzM2NjAsIAorICAgIDczNjY2LCA3MzY3MiwgNzM2NzksIDczNjg2LCA3MzY5MywgNzM2OTksIDczNzA2LCA3MzcxMywgNzM3MjAsIDczNzI3LCAKKyAgICA3MzczNCwgNzM3NDAsIDczNzQ2LCA3Mzc1MywgNzM3NTksIDczNzY2LCA3Mzc3MywgNzM3NzksIDczNzg1LCA3Mzc5MiwgCisgICAgNzM3OTksIDczODA2LCA3MzgxMiwgNzM4MTksIDczODI2LCA3MzgzMiwgNzM4MzksIDczODQ1LCA3Mzg1MiwgNzM4NTksIAorICAgIDczODY1LCA3Mzg3MSwgNzM4NzgsIDczODg0LCA3Mzg5MSwgNzM4OTgsIDczOTA3LCA3MzkxNCwgNzM5MjEsIDczOTI1LCAKKyAgICA3MzkzMCwgNzM5MzUsIDczOTQwLCA3Mzk0NSwgNzM5NDksIDczOTUzLCA3Mzk1OCwgNzM5NjIsIDczOTY3LCA3Mzk3MiwgCisgICAgNzM5NzcsIDczOTgxLCA3Mzk4NSwgNzM5OTAsIDczOTk0LCA3Mzk5OSwgNzQwMDMsIDc0MDA4LCA3NDAxMywgNzQwMTgsIAorICAgIDc0MDIzLCA3NDAyNywgNzQwMzIsIDc0MDM3LCA3NDA0MiwgNzQwNDgsIDc0MDUzLCA3NDA1OSwgNzQwNjUsIDc0MDcxLCAKKyAgICA3NDA3NywgNzQwODMsIDc0MDg4LCA3NDA5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzQwOTgsIAorICAgIDc0MTAzLCA3NDEwNywgNzQxMTEsIDc0MTE1LCA3NDExOSwgNzQxMjMsIDc0MTI3LCA3NDEzMSwgNzQxMzUsIDc0MTM5LCAKKyAgICA3NDE0MywgNzQxNDcsIDc0MTUxLCA3NDE1NSwgNzQxNTksIDc0MTYzLCA3NDE2NywgNzQxNzEsIDc0MTc1LCA3NDE3OSwgCisgICAgNzQxODMsIDc0MTg3LCA3NDE5MSwgNzQxOTUsIDc0MTk5LCA3NDIwMywgNzQyMDcsIDc0MjExLCA3NDIxNSwgMCwgMCwgMCwgCisgICAgNzQyMTksIDc0MjIzLCA3NDIyNywgNzQyMzEsIDc0MjM1LCA3NDIzOCwgNzQyNDQsIDc0MjQ3LCA3NDI1MSwgNzQyNTQsIAorICAgIDc0MjYwLCA3NDI2NiwgNzQyNzQsIDc0Mjc3LCA3NDI4MSwgNzQyODQsIDc0Mjg3LCA3NDI5MywgNzQyOTksIDc0MzAzLCAKKyAgICA3NDMwOSwgNzQzMTMsIDc0MzE3LCA3NDMyMywgNzQzMjcsIDc0MzMzLCA3NDMzOSwgNzQzNDMsIDc0MzQ3LCA3NDM1MywgCisgICAgNzQzNTcsIDc0MzYzLCA3NDM2OSwgNzQzNzMsIDc0Mzc5LCA3NDM4MywgNzQzODksIDc0MzkyLCA3NDM5NSwgNzQ0MDEsIAorICAgIDc0NDA1LCA3NDQxMSwgNzQ0MTQsIDc0NDE3LCA3NDQyMCwgNzQ0MjYsIDc0NDMwLCA3NDQzNCwgNzQ0NDAsIDc0NDQ2LCAKKyAgICA3NDQ0OSwgNzQ0NTIsIDc0NDU4LCA3NDQ2MywgNzQ0NjgsIDc0NDczLCA3NDQ4MCwgNzQ0ODUsIDc0NDkyLCA3NDQ5NywgCisgICAgNzQ1MDQsIDc0NTA5LCA3NDUxNCwgNzQ1MTksIDc0NTI0LCA3NDUyNywgNzQ1MzEsIDc0NTM1LCA3NDU0MCwgNzQ1NDUsIAorICAgIDc0NTUwLCA3NDU1NSwgNzQ1NjAsIDc0NTY1LCA3NDU3MCwgNzQ1NzUsIDc0NTgyLCA3NDU4NywgMCwgNzQ1OTQsIDc0NTk3LCAKKyAgICA3NDYwMSwgNzQ2MDQsIDc0NjA3LCA3NDYxMCwgNzQ2MTMsIDc0NjE2LCA3NDYxOSwgNzQ2MjIsIDc0NjI1LCAwLCAwLCAwLCAKKyAgICAwLCA3NDYyOCwgNzQ2MzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc0NjQwLCA3NDY0MywgNzQ2NDYsIDc0NjQ5LCA3NDY1MiwgCisgICAgNzQ2NTYsIDc0NjU5LCA3NDY2MiwgNzQ2NjYsIDc0NjcwLCA3NDY3NCwgNzQ2NzgsIDc0NjgyLCA3NDY4NiwgNzQ2OTAsIAorICAgIDc0Njk0LCA3NDY5OCwgNzQ3MDIsIDc0NzA2LCA3NDcxMCwgNzQ3MTQsIDc0NzE4LCA3NDcyMiwgNzQ3MjYsIDc0NzMwLCAKKyAgICA3NDczMywgNzQ3MzcsIDc0NzQwLCA3NDc0NCwgNzQ3NDgsIDc0NzUyLCA3NDc1NiwgNzQ3NjAsIDc0NzYzLCA3NDc2NywgCisgICAgNzQ3NzAsIDc0NzczLCA3NDc3NywgNzQ3ODEsIDc0Nzg1LCA3NDc4OCwgNzQ3OTEsIDc0Nzk2LCA3NDgwMCwgNzQ4MDUsIAorICAgIDc0ODEwLCA3NDgxNCwgNzQ4MTksIDc0ODIzLCA3NDgyOCwgNzQ4MzMsIDc0ODM4LCA3NDg0MiwgNzQ4NDYsIDc0ODUxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDg1NiwgNzQ4NjEsIDc0ODY2LCA3NDg3MSwgNzQ4NzcsIDc0ODgyLCA3NDg4NywgCisgICAgNzQ4OTIsIDc0ODk3LCA3NDkwMiwgNzQ5MDYsIDc0OTEwLCA3NDkxNSwgNzQ5MjAsIDAsIDAsIDc0OTI2LCA3NDkzMCwgCisgICAgNzQ5MzMsIDc0OTM2LCA3NDkzOSwgNzQ5NDIsIDc0OTQ1LCA3NDk0OCwgNzQ5NTEsIDc0OTU0LCAwLCAwLCA3NDk1NywgCisgICAgNzQ5NjIsIDc0OTY3LCA3NDk3MywgNzQ5ODAsIDc0OTg2LCA3NDk5MiwgNzQ5OTgsIDc1MDA0LCA3NTAxMCwgNzUwMTYsIAorICAgIDc1MDIyLCA3NTAyOCwgNzUwMzQsIDc1MDQwLCA3NTA0NiwgNzUwNTEsIDc1MDU2LCA3NTA2MSwgNzUwNjcsIDc1MDczLCAKKyAgICA3NTA4MCwgNzUwODYsIDc1MDkyLCA3NTA5NywgNzUxMDQsIDc1MTExLCA3NTExOCwgNzUxMjQsIDc1MTI5LCA3NTEzNCwgCisgICAgNzUxMzksIDAsIDAsIDAsIDAsIDc1MTQ3LCA3NTE1MywgNzUxNTksIDc1MTY1LCA3NTE3MSwgNzUxNzcsIDc1MTgzLCAKKyAgICA3NTE4OSwgNzUxOTUsIDc1MjAxLCA3NTIwNywgNzUyMTMsIDc1MjE5LCA3NTIyNSwgNzUyMzEsIDc1MjM3LCA3NTI0MywgCisgICAgNzUyNDksIDc1MjU1LCA3NTI2MSwgNzUyNjcsIDc1MjcyLCA3NTI3NywgNzUyODMsIDc1Mjg5LCA3NTI5NSwgNzUzMDEsIAorICAgIDc1MzA3LCA3NTMxMywgNzUzMTksIDc1MzI1LCA3NTMzMSwgNzUzMzcsIDc1MzQzLCA3NTM0OSwgNzUzNTUsIDc1MzYxLCAKKyAgICA3NTM2NywgNzUzNzMsIDc1Mzc5LCA3NTM4NSwgNzUzOTEsIDc1Mzk3LCA3NTQwMywgNzU0MDksIDc1NDE1LCA3NTQyMSwgCisgICAgNzU0MjYsIDc1NDMxLCA3NTQzNywgNzU0NDIsIDc1NDQ2LCA3NTQ1MSwgNzU0NTUsIDc1NDU5LCA3NTQ2MywgNzU0NjksIAorICAgIDc1NDc0LCA3NTQ3OSwgNzU0ODQsIDc1NDg5LCA3NTQ5NCwgNzU0OTksIDc1NTA0LCA3NTUxMSwgNzU1MTgsIDc1NTI1LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3Mzc2NCwgNzM3NjcsIDczNzcwLCA3Mzc3MywgNzM3NzYsIDczNzgwLCA3Mzc4MywgNzM3ODYsIDczNzkwLCA3Mzc5NCwgCi0gICAgNzM3OTgsIDczODAyLCA3MzgwNiwgNzM4MTAsIDczODE0LCA3MzgxOCwgNzM4MjIsIDczODI2LCA3MzgzMCwgNzM4MzQsIAotICAgIDczODM4LCA3Mzg0MiwgNzM4NDYsIDczODUwLCA3Mzg1NCwgNzM4NTcsIDczODYxLCA3Mzg2NCwgNzM4NjgsIDczODcyLCAKLSAgICA3Mzg3NiwgNzM4ODAsIDczODg0LCA3Mzg4NywgNzM4OTEsIDczODk0LCA3Mzg5NywgNzM5MDEsIDczOTA1LCA3MzkwOSwgCi0gICAgNzM5MTMsIDczOTE2LCA3MzkyMSwgNzM5MjUsIDczOTMwLCA3MzkzNSwgNzM5MzksIDczOTQ0LCA3Mzk0OCwgNzM5NTMsIAotICAgIDczOTU4LCA3Mzk2MywgNzM5NjgsIDczOTczLCA3Mzk3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzM5ODUsIAotICAgIDczOTkwLCA3Mzk5NSwgNzQwMDAsIDc0MDA3LCA3NDAxMiwgNzQwMTcsIDc0MDIxLCA3NDAyNiwgNzQwMzEsIDc0MDM1LCAKLSAgICA3NDAzOSwgNzQwNDQsIDc0MDUwLCAwLCAwLCA3NDA1NywgNzQwNjEsIDc0MDY0LCA3NDA2NywgNzQwNzAsIDc0MDczLCAKLSAgICA3NDA3NiwgNzQwNzksIDc0MDgyLCA3NDA4NSwgMCwgMCwgNzQwODgsIDc0MDkzLCA3NDA5OCwgNzQxMDQsIDc0MTExLCAKLSAgICA3NDExNywgNzQxMjMsIDc0MTI5LCA3NDEzNSwgNzQxNDEsIDc0MTQ3LCA3NDE1MywgNzQxNTksIDc0MTY1LCA3NDE3MSwgCi0gICAgNzQxNzcsIDc0MTgyLCA3NDE4OCwgNzQxOTMsIDc0MTk5LCA3NDIwNSwgNzQyMTIsIDc0MjE4LCA3NDIyNCwgNzQyMjksIAotICAgIDc0MjM2LCA3NDI0MywgNzQyNTAsIDc0MjU2LCA3NDI2MSwgNzQyNjYsIDc0MjcxLCAwLCAwLCAwLCAwLCA3NDI3OSwgCi0gICAgNzQyODUsIDc0MjkxLCA3NDI5NywgNzQzMDMsIDc0MzA5LCA3NDMxNSwgNzQzMjEsIDc0MzI3LCA3NDMzMywgNzQzMzksIAotICAgIDc0MzQ1LCA3NDM1MSwgNzQzNTcsIDc0MzYzLCA3NDM2OSwgNzQzNzUsIDc0MzgxLCA3NDM4NywgNzQzOTMsIDc0Mzk5LCAKLSAgICA3NDQwNCwgNzQ0MDksIDc0NDE1LCA3NDQyMSwgNzQ0MjcsIDc0NDMzLCA3NDQzOSwgNzQ0NDUsIDc0NDUxLCA3NDQ1NywgCi0gICAgNzQ0NjMsIDc0NDY5LCA3NDQ3NSwgNzQ0ODEsIDc0NDg3LCA3NDQ5MywgNzQ0OTksIDc0NTA1LCA3NDUxMSwgNzQ1MTcsIAotICAgIDc0NTIzLCA3NDUyOSwgNzQ1MzUsIDc0NTQxLCA3NDU0NywgNzQ1NTMsIDc0NTU4LCA3NDU2MywgNzQ1NjksIDc0NTc0LCAKLSAgICA3NDU3OCwgNzQ1ODMsIDc0NTg3LCA3NDU5MSwgNzQ1OTUsIDc0NjAxLCA3NDYwNiwgNzQ2MTEsIDc0NjE2LCA3NDYyMSwgCi0gICAgNzQ2MjYsIDc0NjMxLCA3NDYzNiwgNzQ2NDMsIDc0NjUwLCA3NDY1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzQ2NjQsIDc0NjY5LCA3NDY3NCwgNzQ2NzksIAotICAgIDc0Njg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDY5MywgNzQ2OTcsIDc0NzAxLCA3NDcwNSwgNzQ3MDksIAotICAgIDc0NzEzLCAwLCAwLCA3NDcxNywgNzQ3MjEsIDc0NzI1LCA3NDcyOSwgNzQ3MzMsIDc0NzM3LCAwLCAwLCA3NDc0MSwgCi0gICAgNzQ3NDUsIDc0NzQ5LCA3NDc1MywgNzQ3NTcsIDc0NzYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDc2NSwgCi0gICAgNzQ3NjksIDc0NzczLCA3NDc3NywgNzQ3ODEsIDc0Nzg1LCA3NDc4OSwgMCwgNzQ3OTMsIDc0Nzk3LCA3NDgwMSwgNzQ4MDUsIAotICAgIDc0ODA5LCA3NDgxMywgNzQ4MTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDc1NTMyLCA3NTUzNywgNzU1NDIsIDc1NTQ3LCA3NTU1NCwgNzU1NjEsIDc1NTY1LCA3NTU2OSwgNzU1NzQsIDc1NTc5LCAKKyAgICA3NTU4NCwgNzU1ODksIDc1NTk0LCA3NTU5OSwgNzU2MDQsIDc1NjA5LCA3NTYxNCwgNzU2MjAsIDc1NjI2LCA3NTYzMiwgCisgICAgNzU2MzgsIDc1NjQ0LCA3NTY0OCwgNzU2NTQsIDc1NjU4LCA3NTY2NCwgNzU2NzEsIDc1Njc3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA3NTY4MSwgNzU2ODUsIDc1Njg5LCA3NTY5MywgNzU2OTcsIDc1NzAxLCAwLCAwLCA3NTcwNSwgNzU3MDksIAorICAgIDc1NzEzLCA3NTcxNywgNzU3MjEsIDc1NzI1LCAwLCAwLCA3NTcyOSwgNzU3MzMsIDc1NzM3LCA3NTc0MSwgNzU3NDUsIAorICAgIDc1NzQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NTc1MywgNzU3NTcsIDc1NzYxLCA3NTc2NSwgNzU3NjksIAorICAgIDc1NzczLCA3NTc3NywgMCwgNzU3ODEsIDc1Nzg1LCA3NTc4OSwgNzU3OTMsIDc1Nzk3LCA3NTgwMSwgNzU4MDUsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc0ODIxLCA3NDgyOCwgNzQ4MzUsIDc0ODQyLCA3NDg0OSwgNzQ4NTUsIDc0ODYxLCAKLSAgICA3NDg2OCwgNzQ4NzUsIDc0ODgyLCA3NDg4OSwgNzQ4OTYsIDc0OTAzLCA3NDkxMCwgNzQ5MTcsIDc0OTI0LCA3NDkzMCwgCi0gICAgNzQ5MzcsIDc0OTQ0LCA3NDk1MSwgNzQ5NTgsIDc0OTY1LCA3NDk3MiwgNzQ5NzksIDc0OTg2LCA3NDk5MywgNzUwMDAsIAotICAgIDc1MDA3LCA3NTAxNiwgNzUwMjUsIDc1MDM0LCA3NTA0MywgNzUwNTIsIDc1MDYxLCA3NTA3MCwgNzUwNzksIDc1MDg3LCAKLSAgICA3NTA5NSwgNzUxMDMsIDc1MTExLCA3NTExOSwgNzUxMjcsIDc1MTM1LCA3NTE0MywgNzUxNDksIDc1MTU3LCAwLCAwLCAKLSAgICA3NTE2NSwgNzUxNzIsIDc1MTc4LCA3NTE4NCwgNzUxOTAsIDc1MTk2LCA3NTIwMiwgNzUyMDgsIDc1MjE0LCA3NTIyMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNzU4MDksIDc1ODE0LCA3NTgxOSwgNzU4MjQsIDc1ODI5LCA3NTgzMywgNzU4MzcsIDc1ODQyLCA3NTg0NywgNzU4NTIsIAorICAgIDc1ODU3LCA3NTg2MiwgNzU4NjcsIDc1ODcyLCA3NTg3NywgNzU4ODIsIDc1ODg2LCA3NTg5MSwgNzU4OTYsIDc1OTAxLCAKKyAgICA3NTkwNiwgNzU5MTEsIDc1OTE2LCA3NTkyMSwgNzU5MjYsIDc1OTMxLCA3NTkzNiwgNzU5NDEsIDc1OTQ4LCA3NTk1NSwgCisgICAgNzU5NjIsIDc1OTY5LCA3NTk3NiwgNzU5ODMsIDc1OTkwLCA3NTk5NywgNzYwMDMsIDc2MDA5LCA3NjAxNSwgNzYwMjEsIAorICAgIDc2MDI3LCA3NjAzMywgNzYwMzksIDc2MDQ1LCA3NjA0OSwgNzYwNTUsIDAsIDAsIDc2MDYxLCA3NjA2NiwgNzYwNzAsIAorICAgIDc2MDc0LCA3NjA3OCwgNzYwODIsIDc2MDg2LCA3NjA5MCwgNzYwOTQsIDc2MDk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NjEwMiwgCisgICAgNzYxMDYsIDc2MTEwLCA3NjExNCwgNzYxMTgsIDc2MTIyLCA3NjEyNiwgNzYxMzAsIDc2MTM0LCA3NjEzOCwgNzYxNDIsIAorICAgIDc2MTQ2LCA3NjE1MCwgNzYxNTQsIDc2MTU4LCA3NjE2MiwgNzYxNjYsIDc2MTcwLCA3NjE3NCwgNzYxNzgsIDc2MTgyLCAKKyAgICA3NjE4NiwgNzYxOTAsIDAsIDAsIDAsIDAsIDc2MTk0LCA3NjE5OCwgNzYyMDIsIDc2MjA2LCA3NjIxMCwgNzYyMTQsIAorICAgIDc2MjE4LCA3NjIyMiwgNzYyMjYsIDc2MjMwLCA3NjIzNCwgNzYyMzgsIDc2MjQyLCA3NjI0NiwgNzYyNTAsIDc2MjU0LCAKKyAgICA3NjI1OCwgNzYyNjIsIDc2MjY2LCA3NjI3MCwgNzYyNzQsIDc2Mjc4LCA3NjI4MiwgNzYyODYsIDc2MjkwLCA3NjI5NCwgCisgICAgNzYyOTgsIDc2MzAyLCA3NjMwNiwgNzYzMTAsIDc2MzE0LCA3NjMxOCwgNzYzMjIsIDc2MzI2LCA3NjMzMCwgNzYzMzQsIAorICAgIDc2MzM4LCA3NjM0MiwgNzYzNDYsIDc2MzUwLCA3NjM1NCwgNzYzNTgsIDc2MzYyLCA3NjM2NiwgNzYzNzAsIDc2Mzc0LCAKKyAgICA3NjM3OCwgNzYzODIsIDc2Mzg2LCAwLCAwLCAwLCAwLCA3NjM5MCwgNzYzOTQsIDc2Mzk4LCA3NjQwMiwgNzY0MDYsIAorICAgIDc2NDEwLCA3NjQxNCwgNzY0MTgsIDc2NDIyLCA3NjQyNiwgNzY0MzAsIDc2NDM0LCA3NjQzOCwgNzY0NDIsIDc2NDQ2LCAKKyAgICA3NjQ1MCwgNzY0NTQsIDc2NDU4LCA3NjQ2MiwgNzY0NjYsIDc2NDcwLCA3NjQ3NCwgNzY0NzgsIDc2NDgyLCA3NjQ4NiwgCisgICAgNzY0OTAsIDc2NDk0LCA3NjQ5OCwgNzY1MDIsIDc2NTA2LCA3NjUxMCwgNzY1MTQsIDc2NTE4LCA3NjUyMiwgNzY1MjYsIAorICAgIDc2NTMwLCA3NjUzNCwgNzY1MzgsIDc2NTQyLCA3NjU0NiwgNzY1NTAsIDc2NTU0LCA3NjU1OCwgNzY1NjIsIDc2NTY2LCAKKyAgICA3NjU3MCwgNzY1NzQsIDc2NTc4LCA3NjU4MiwgNzY1ODYsIDc2NTkwLCA3NjU5NCwgNzY1OTgsIDc2NjAyLCA3NjYwNiwgCisgICAgNzY2MTAsIDc2NjE0LCA3NjYxOCwgNzY2MjIsIDc2NjI2LCA3NjYzMCwgNzY2MzQsIDc2NjM4LCA3NjY0MiwgNzY2NDYsIAorICAgIDc2NjUwLCA3NjY1NCwgNzY2NTgsIDc2NjYyLCA3NjY2NiwgNzY2NzAsIDc2Njc0LCA3NjY3OCwgNzY2ODIsIDc2Njg2LCAKKyAgICA3NjY5MCwgNzY2OTQsIDc2Njk4LCA3NjcwMiwgNzY3MDYsIDc2NzEwLCA3NjcxNCwgNzY3MTgsIDc2NzIyLCA3NjcyNiwgCisgICAgNzY3MzAsIDc2NzM0LCA3NjczOCwgNzY3NDIsIDc2NzQ2LCA3Njc1MCwgNzY3NTQsIDc2NzU4LCA3Njc2MiwgNzY3NjYsIAorICAgIDc2NzcwLCA3Njc3NCwgNzY3NzgsIDc2NzgyLCA3Njc4NiwgNzY3OTAsIDc2Nzk0LCA3Njc5OCwgNzY4MDIsIDc2ODA2LCAKKyAgICA3NjgxMCwgNzY4MTQsIDc2ODE4LCA3NjgyMiwgNzY4MjYsIDc2ODMwLCA3NjgzNCwgNzY4MzgsIDc2ODQyLCA3Njg0NiwgCisgICAgNzY4NTAsIDc2ODU0LCA3Njg1OCwgNzY4NjIsIDc2ODY2LCA3Njg3MCwgNzY4NzQsIDc2ODc4LCA3Njg4MiwgNzY4ODYsIAorICAgIDc2ODkwLCA3Njg5NCwgNzY4OTgsIDc2OTAyLCA3NjkwNiwgNzY5MTAsIDc2OTE0LCA3NjkxOCwgNzY5MjIsIDc2OTI2LCAKKyAgICA3NjkzMCwgNzY5MzQsIDc2OTM4LCA3Njk0MiwgNzY5NDYsIDc2OTUwLCA3Njk1NCwgNzY5NTgsIDc2OTYyLCA3Njk2NiwgCisgICAgNzY5NzAsIDc2OTc0LCA3Njk3OCwgNzY5ODIsIDc2OTg2LCA3Njk5MCwgNzY5OTQsIDc2OTk4LCA3NzAwMiwgNzcwMDYsIAorICAgIDc3MDEwLCA3NzAxNCwgNzcwMTgsIDc3MDIyLCA3NzAyNiwgNzcwMzAsIDc3MDM0LCA3NzAzOCwgNzcwNDIsIDc3MDQ2LCAKKyAgICA3NzA1MCwgNzcwNTQsIDc3MDU4LCA3NzA2MiwgNzcwNjYsIDc3MDcwLCA3NzA3NCwgNzcwNzgsIDc3MDgyLCA3NzA4NiwgCisgICAgNzcwOTAsIDc3MDk0LCA3NzA5OCwgNzcxMDIsIDc3MTA2LCA3NzExMCwgNzcxMTQsIDc3MTE4LCA3NzEyMiwgNzcxMjYsIAorICAgIDc3MTMwLCA3NzEzNCwgNzcxMzgsIDc3MTQyLCA3NzE0NiwgNzcxNTAsIDc3MTU0LCA3NzE1OCwgNzcxNjIsIDc3MTY2LCAKKyAgICA3NzE3MCwgNzcxNzQsIDc3MTc4LCA3NzE4MiwgNzcxODYsIDc3MTkwLCA3NzE5NCwgNzcxOTgsIDc3MjAyLCA3NzIwNiwgCisgICAgNzcyMTAsIDc3MjE0LCA3NzIxOCwgNzcyMjIsIDc3MjI2LCA3NzIzMCwgNzcyMzQsIDc3MjM4LCA3NzI0MiwgNzcyNDYsIAorICAgIDc3MjUwLCA3NzI1NCwgNzcyNTgsIDc3MjYyLCA3NzI2NiwgNzcyNzAsIDc3Mjc0LCA3NzI3OCwgNzcyODIsIDc3Mjg2LCAKKyAgICA3NzI5MCwgNzcyOTQsIDc3Mjk4LCA3NzMwMiwgNzczMDYsIDc3MzEwLCA3NzMxNCwgNzczMTgsIDc3MzIyLCA3NzMyNiwgCisgICAgNzczMzAsIDc3MzM0LCA3NzMzOCwgNzczNDIsIDc3MzQ2LCA3NzM1MCwgNzczNTQsIDc3MzU4LCA3NzM2MiwgNzczNjYsIAorICAgIDc3MzcwLCA3NzM3NCwgNzczNzgsIDc3MzgyLCA3NzM4NiwgNzczOTAsIDc3Mzk0LCA3NzM5OCwgNzc0MDIsIDc3NDA2LCAKKyAgICA3NzQxMCwgNzc0MTQsIDc3NDE4LCA3NzQyMiwgNzc0MjYsIDc3NDMwLCA3NzQzNCwgNzc0MzgsIDc3NDQyLCA3NzQ0NiwgCisgICAgNzc0NTAsIDc3NDU0LCA3NzQ1OCwgNzc0NjIsIDc3NDY2LCA3NzQ3MCwgNzc0NzQsIDc3NDc4LCA3NzQ4MiwgNzc0ODYsIAorICAgIDc3NDkwLCA3NzQ5NCwgNzc0OTgsIDc3NTAyLCA3NzUwNiwgNzc1MTAsIDc3NTE0LCA3NzUxOCwgNzc1MjIsIDc3NTI2LCAKKyAgICA3NzUzMCwgNzc1MzQsIDc3NTM4LCA3NzU0MiwgNzc1NDYsIDc3NTUwLCA3NzU1NCwgNzc1NTgsIDc3NTYyLCA3NzU2NiwgCisgICAgNzc1NzAsIDc3NTc0LCA3NzU3OCwgNzc1ODIsIDc3NTg2LCA3NzU5MCwgNzc1OTQsIDc3NTk4LCA3NzYwMiwgNzc2MDYsIAorICAgIDc3NjEwLCA3NzYxNCwgNzc2MTgsIDc3NjIyLCA3NzYyNiwgNzc2MzAsIDc3NjM0LCA3NzYzOCwgNzc2NDIsIDc3NjQ2LCAKKyAgICA3NzY1MCwgNzc2NTQsIDc3NjU4LCA3NzY2MiwgNzc2NjYsIDc3NjcwLCA3NzY3NCwgNzc2NzgsIDc3NjgyLCA3NzY4NiwgCisgICAgNzc2OTAsIDc3Njk0LCA3NzY5OCwgNzc3MDIsIDc3NzA2LCA3NzcxMCwgNzc3MTQsIDc3NzE4LCA3NzcyMiwgNzc3MjYsIAorICAgIDc3NzMwLCA3NzczNCwgNzc3MzgsIDc3NzQyLCA3Nzc0NiwgNzc3NTAsIDc3NzU0LCA3Nzc1OCwgNzc3NjIsIDc3NzY2LCAKKyAgICA3Nzc3MCwgNzc3NzQsIDc3Nzc4LCA3Nzc4MiwgNzc3ODYsIDc3NzkwLCA3Nzc5NCwgNzc3OTgsIDc3ODAyLCA3NzgwNiwgCisgICAgNzc4MTAsIDc3ODE0LCA3NzgxOCwgNzc4MjIsIDc3ODI2LCA3NzgzMCwgNzc4MzQsIDc3ODM4LCA3Nzg0MiwgNzc4NDYsIAorICAgIDc3ODUwLCAwLCAwLCA3Nzg1NCwgNzc4NTgsIDc3ODYyLCA3Nzg2NiwgNzc4NzAsIDc3ODc0LCA3Nzg3OCwgNzc4ODIsIAorICAgIDc3ODg2LCA3Nzg5MCwgNzc4OTQsIDc3ODk4LCA3NzkwMiwgNzc5MDYsIDc3OTEwLCA3NzkxNCwgNzc5MTgsIDc3OTIyLCAKKyAgICA3NzkyNiwgNzc5MzAsIDc3OTM0LCA3NzkzOCwgNzc5NDIsIDc3OTQ2LCA3Nzk1MCwgNzc5NTQsIDc3OTU4LCA3Nzk2MiwgCisgICAgNzc5NjYsIDc3OTcwLCA3Nzk3NCwgNzc5NzgsIDc3OTgyLCA3Nzk4NiwgNzc5OTAsIDc3OTk0LCA3Nzk5OCwgNzgwMDIsIAorICAgIDc4MDA2LCA3ODAxMCwgNzgwMTQsIDc4MDE4LCA3ODAyMiwgNzgwMjYsIDc4MDMwLCA3ODAzNCwgNzgwMzgsIDc4MDQyLCAKKyAgICA3ODA0NiwgNzgwNTAsIDc4MDU0LCA3ODA1OCwgNzgwNjIsIDc4MDY2LCA3ODA3MCwgNzgwNzQsIDc4MDc4LCA3ODA4MiwgCisgICAgNzgwODYsIDc4MDkwLCA3ODA5NCwgNzgwOTgsIDc4MTAyLCA3ODEwNiwgNzgxMTAsIDc4MTE0LCA3ODExOCwgNzgxMjIsIAorICAgIDc4MTI2LCA3ODEzMCwgNzgxMzQsIDc4MTM4LCA3ODE0MiwgNzgxNDYsIDc4MTUwLCA3ODE1NCwgNzgxNTgsIDc4MTYyLCAKKyAgICA3ODE2NiwgNzgxNzAsIDc4MTc0LCA3ODE3OCwgNzgxODIsIDc4MTg2LCA3ODE5MCwgNzgxOTQsIDc4MTk4LCA3ODIwMiwgCisgICAgNzgyMDYsIDc4MjEwLCA3ODIxNCwgNzgyMTgsIDc4MjIyLCA3ODIyNiwgNzgyMzAsIDc4MjM0LCA3ODIzOCwgNzgyNDIsIAorICAgIDc4MjQ2LCA3ODI1MCwgNzgyNTQsIDc4MjU4LCA3ODI2MiwgNzgyNjYsIDc4MjcwLCA3ODI3NCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNzUyMjYsIDc1MjMwLCA3NTIzNCwgNzUyMzgsIDc1MjQyLCA3NTI0NiwgNzUyNTAsIDc1MjU0LCAKLSAgICA3NTI1OCwgNzUyNjIsIDc1MjY2LCA3NTI3MCwgNzUyNzQsIDc1Mjc4LCA3NTI4MiwgNzUyODYsIDc1MjkwLCA3NTI5NCwgCi0gICAgNzUyOTgsIDc1MzAyLCA3NTMwNiwgNzUzMTAsIDc1MzE0LCAwLCAwLCAwLCAwLCA3NTMxOCwgNzUzMjIsIDc1MzI2LCAKLSAgICA3NTMzMCwgNzUzMzQsIDc1MzM4LCA3NTM0MiwgNzUzNDYsIDc1MzUwLCA3NTM1NCwgNzUzNTgsIDc1MzYyLCA3NTM2NiwgCi0gICAgNzUzNzAsIDc1Mzc0LCA3NTM3OCwgNzUzODIsIDc1Mzg2LCA3NTM5MCwgNzUzOTQsIDc1Mzk4LCA3NTQwMiwgNzU0MDYsIAotICAgIDc1NDEwLCA3NTQxNCwgNzU0MTgsIDc1NDIyLCA3NTQyNiwgNzU0MzAsIDc1NDM0LCA3NTQzOCwgNzU0NDIsIDc1NDQ2LCAKLSAgICA3NTQ1MCwgNzU0NTQsIDc1NDU4LCA3NTQ2MiwgNzU0NjYsIDc1NDcwLCA3NTQ3NCwgNzU0NzgsIDc1NDgyLCA3NTQ4NiwgCi0gICAgNzU0OTAsIDc1NDk0LCA3NTQ5OCwgNzU1MDIsIDc1NTA2LCA3NTUxMCwgMCwgMCwgMCwgMCwgNzU1MTQsIDc1NTE4LCAKLSAgICA3NTUyMiwgNzU1MjYsIDc1NTMwLCA3NTUzNCwgNzU1MzgsIDc1NTQyLCA3NTU0NiwgNzU1NTAsIDc1NTU0LCA3NTU1OCwgCi0gICAgNzU1NjIsIDc1NTY2LCA3NTU3MCwgNzU1NzQsIDc1NTc4LCA3NTU4MiwgNzU1ODYsIDc1NTkwLCA3NTU5NCwgNzU1OTgsIAotICAgIDc1NjAyLCA3NTYwNiwgNzU2MTAsIDc1NjE0LCA3NTYxOCwgNzU2MjIsIDc1NjI2LCA3NTYzMCwgNzU2MzQsIDc1NjM4LCAKLSAgICA3NTY0MiwgNzU2NDYsIDc1NjUwLCA3NTY1NCwgNzU2NTgsIDc1NjYyLCA3NTY2NiwgNzU2NzAsIDc1Njc0LCA3NTY3OCwgCi0gICAgNzU2ODIsIDc1Njg2LCA3NTY5MCwgNzU2OTQsIDc1Njk4LCA3NTcwMiwgNzU3MDYsIDc1NzEwLCA3NTcxNCwgNzU3MTgsIAotICAgIDc1NzIyLCA3NTcyNiwgNzU3MzAsIDc1NzM0LCA3NTczOCwgNzU3NDIsIDc1NzQ2LCA3NTc1MCwgNzU3NTQsIDc1NzU4LCAKLSAgICA3NTc2MiwgNzU3NjYsIDc1NzcwLCA3NTc3NCwgNzU3NzgsIDc1NzgyLCA3NTc4NiwgNzU3OTAsIDc1Nzk0LCA3NTc5OCwgCi0gICAgNzU4MDIsIDc1ODA2LCA3NTgxMCwgNzU4MTQsIDc1ODE4LCA3NTgyMiwgNzU4MjYsIDc1ODMwLCA3NTgzNCwgNzU4MzgsIAotICAgIDc1ODQyLCA3NTg0NiwgNzU4NTAsIDc1ODU0LCA3NTg1OCwgNzU4NjIsIDc1ODY2LCA3NTg3MCwgNzU4NzQsIDc1ODc4LCAKLSAgICA3NTg4MiwgNzU4ODYsIDc1ODkwLCA3NTg5NCwgNzU4OTgsIDc1OTAyLCA3NTkwNiwgNzU5MTAsIDc1OTE0LCA3NTkxOCwgCi0gICAgNzU5MjIsIDc1OTI2LCA3NTkzMCwgNzU5MzQsIDc1OTM4LCA3NTk0MiwgNzU5NDYsIDc1OTUwLCA3NTk1NCwgNzU5NTgsIAotICAgIDc1OTYyLCA3NTk2NiwgNzU5NzAsIDc1OTc0LCA3NTk3OCwgNzU5ODIsIDc1OTg2LCA3NTk5MCwgNzU5OTQsIDc1OTk4LCAKLSAgICA3NjAwMiwgNzYwMDYsIDc2MDEwLCA3NjAxNCwgNzYwMTgsIDc2MDIyLCA3NjAyNiwgNzYwMzAsIDc2MDM0LCA3NjAzOCwgCi0gICAgNzYwNDIsIDc2MDQ2LCA3NjA1MCwgNzYwNTQsIDc2MDU4LCA3NjA2MiwgNzYwNjYsIDc2MDcwLCA3NjA3NCwgNzYwNzgsIAotICAgIDc2MDgyLCA3NjA4NiwgNzYwOTAsIDc2MDk0LCA3NjA5OCwgNzYxMDIsIDc2MTA2LCA3NjExMCwgNzYxMTQsIDc2MTE4LCAKLSAgICA3NjEyMiwgNzYxMjYsIDc2MTMwLCA3NjEzNCwgNzYxMzgsIDc2MTQyLCA3NjE0NiwgNzYxNTAsIDc2MTU0LCA3NjE1OCwgCi0gICAgNzYxNjIsIDc2MTY2LCA3NjE3MCwgNzYxNzQsIDc2MTc4LCA3NjE4MiwgNzYxODYsIDc2MTkwLCA3NjE5NCwgNzYxOTgsIAotICAgIDc2MjAyLCA3NjIwNiwgNzYyMTAsIDc2MjE0LCA3NjIxOCwgNzYyMjIsIDc2MjI2LCA3NjIzMCwgNzYyMzQsIDc2MjM4LCAKLSAgICA3NjI0MiwgNzYyNDYsIDc2MjUwLCA3NjI1NCwgNzYyNTgsIDc2MjYyLCA3NjI2NiwgNzYyNzAsIDc2Mjc0LCA3NjI3OCwgCi0gICAgNzYyODIsIDc2Mjg2LCA3NjI5MCwgNzYyOTQsIDc2Mjk4LCA3NjMwMiwgNzYzMDYsIDc2MzEwLCA3NjMxNCwgNzYzMTgsIAotICAgIDc2MzIyLCA3NjMyNiwgNzYzMzAsIDc2MzM0LCA3NjMzOCwgNzYzNDIsIDc2MzQ2LCA3NjM1MCwgNzYzNTQsIDc2MzU4LCAKLSAgICA3NjM2MiwgNzYzNjYsIDc2MzcwLCA3NjM3NCwgNzYzNzgsIDc2MzgyLCA3NjM4NiwgNzYzOTAsIDc2Mzk0LCA3NjM5OCwgCi0gICAgNzY0MDIsIDc2NDA2LCA3NjQxMCwgNzY0MTQsIDc2NDE4LCA3NjQyMiwgNzY0MjYsIDc2NDMwLCA3NjQzNCwgNzY0MzgsIAotICAgIDc2NDQyLCA3NjQ0NiwgNzY0NTAsIDc2NDU0LCA3NjQ1OCwgNzY0NjIsIDc2NDY2LCA3NjQ3MCwgNzY0NzQsIDc2NDc4LCAKLSAgICA3NjQ4MiwgNzY0ODYsIDc2NDkwLCA3NjQ5NCwgNzY0OTgsIDc2NTAyLCA3NjUwNiwgNzY1MTAsIDc2NTE0LCA3NjUxOCwgCi0gICAgNzY1MjIsIDc2NTI2LCA3NjUzMCwgNzY1MzQsIDc2NTM4LCA3NjU0MiwgNzY1NDYsIDc2NTUwLCA3NjU1NCwgNzY1NTgsIAotICAgIDc2NTYyLCA3NjU2NiwgNzY1NzAsIDc2NTc0LCA3NjU3OCwgNzY1ODIsIDc2NTg2LCA3NjU5MCwgNzY1OTQsIDc2NTk4LCAKLSAgICA3NjYwMiwgNzY2MDYsIDc2NjEwLCA3NjYxNCwgNzY2MTgsIDc2NjIyLCA3NjYyNiwgNzY2MzAsIDc2NjM0LCA3NjYzOCwgCi0gICAgNzY2NDIsIDc2NjQ2LCA3NjY1MCwgNzY2NTQsIDc2NjU4LCA3NjY2MiwgNzY2NjYsIDc2NjcwLCA3NjY3NCwgNzY2NzgsIAotICAgIDc2NjgyLCA3NjY4NiwgNzY2OTAsIDc2Njk0LCA3NjY5OCwgNzY3MDIsIDc2NzA2LCA3NjcxMCwgNzY3MTQsIDc2NzE4LCAwLCAKLSAgICAwLCA3NjcyMiwgNzY3MjYsIDc2NzMwLCA3NjczNCwgNzY3MzgsIDc2NzQyLCA3Njc0NiwgNzY3NTAsIDc2NzU0LCA3Njc1OCwgCi0gICAgNzY3NjIsIDc2NzY2LCA3Njc3MCwgNzY3NzQsIDc2Nzc4LCA3Njc4MiwgNzY3ODYsIDc2NzkwLCA3Njc5NCwgNzY3OTgsIAotICAgIDc2ODAyLCA3NjgwNiwgNzY4MTAsIDc2ODE0LCA3NjgxOCwgNzY4MjIsIDc2ODI2LCA3NjgzMCwgNzY4MzQsIDc2ODM4LCAKLSAgICA3Njg0MiwgNzY4NDYsIDc2ODUwLCA3Njg1NCwgNzY4NTgsIDc2ODYyLCA3Njg2NiwgNzY4NzAsIDc2ODc0LCA3Njg3OCwgCi0gICAgNzY4ODIsIDc2ODg2LCA3Njg5MCwgNzY4OTQsIDc2ODk4LCA3NjkwMiwgNzY5MDYsIDc2OTEwLCA3NjkxNCwgNzY5MTgsIAotICAgIDc2OTIyLCA3NjkyNiwgNzY5MzAsIDc2OTM0LCA3NjkzOCwgNzY5NDIsIDc2OTQ2LCA3Njk1MCwgNzY5NTQsIDc2OTU4LCAKLSAgICA3Njk2MiwgNzY5NjYsIDAsIDAsIDc2OTcwLCA3Njk3NCwgNzY5NzgsIDc2OTgyLCA3Njk4NiwgNzY5OTAsIDc2OTk0LCAKLSAgICA3Njk5OCwgNzcwMDIsIDc3MDA2LCA3NzAxMCwgNzcwMTQsIDc3MDE4LCA3NzAyMiwgNzcwMjYsIDc3MDMwLCA3NzAzNCwgCi0gICAgNzcwMzgsIDc3MDQyLCA3NzA0NiwgNzcwNTAsIDc3MDU0LCA3NzA1OCwgNzcwNjIsIDc3MDY2LCA3NzA3MCwgNzcwNzQsIAotICAgIDc3MDc4LCA3NzA4MiwgNzcwODYsIDc3MDkwLCA3NzA5NCwgNzcwOTgsIDc3MTAyLCA3NzEwNiwgNzcxMTAsIDc3MTE0LCAKLSAgICA3NzExOCwgNzcxMjIsIDc3MTI2LCA3NzEzMCwgNzcxMzQsIDc3MTM4LCA3NzE0MiwgNzcxNDYsIDc3MTUwLCA3NzE1NCwgCi0gICAgNzcxNTgsIDc3MTYyLCA3NzE2NiwgNzcxNzAsIDc3MTc0LCA3NzE3OCwgNzcxODIsIDc3MTg2LCA3NzE5MCwgNzcxOTQsIAotICAgIDc3MTk4LCA3NzIwMiwgNzcyMDYsIDc3MjEwLCA3NzIxNCwgNzcyMTgsIDc3MjIyLCA3NzIyNiwgNzcyMzAsIDc3MjM0LCAKLSAgICA3NzIzOCwgNzcyNDIsIDc3MjQ2LCA3NzI1MCwgNzcyNTQsIDc3MjU4LCA3NzI2MiwgNzcyNjYsIDc3MjcwLCA3NzI3NCwgCi0gICAgNzcyNzgsIDc3MjgyLCA3NzI4NiwgNzcyOTAsIDc3Mjk0LCA3NzI5OCwgNzczMDIsIDc3MzA2LCA3NzMxMCwgNzczMTQsIAotICAgIDc3MzE4LCA3NzMyMiwgNzczMjYsIDc3MzMwLCA3NzMzNCwgNzczMzgsIDc3MzQyLCA3NzM0NiwgNzczNTAsIDc3MzU0LCAKLSAgICA3NzM1OCwgNzczNjIsIDc3MzY2LCA3NzM3MCwgNzczNzQsIDc3Mzc4LCA3NzM4MiwgNzczODYsIDc3MzkwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3ODI3OCwgNzgyODMsIDc4Mjg4LCA3ODI5MywgNzgyOTgsIDc4MzAzLCA3ODMxMSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzgzMTYsIDc4MzIzLCA3ODMzMCwgNzgzMzcsIDc4MzQ0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCA3ODM1MSwgNzgzNTgsIDc4MzY1LCA3ODM3NSwgNzgzODEsIDc4Mzg3LCA3ODM5MywgNzgzOTksIAorICAgIDc4NDA1LCA3ODQxMSwgNzg0MTgsIDc4NDI0LCA3ODQzMCwgNzg0MzYsIDc4NDQ1LCA3ODQ1NCwgNzg0NjYsIDc4NDc4LCAKKyAgICA3ODQ4NCwgNzg0OTAsIDc4NDk2LCA3ODUwMywgNzg1MTAsIDc4NTE3LCA3ODUyNCwgNzg1MzEsIDAsIDc4NTM4LCA3ODU0NSwgCisgICAgNzg1NTIsIDc4NTYwLCA3ODU2NywgMCwgNzg1NzQsIDAsIDc4NTgxLCA3ODU4OCwgMCwgNzg1OTUsIDc4NjAzLCAwLCAKKyAgICA3ODYxMCwgNzg2MTcsIDc4NjI0LCA3ODYzMSwgNzg2MzgsIDc4NjQ1LCA3ODY1MiwgNzg2NTksIDc4NjY2LCA3ODY3MywgCisgICAgNzg2NzgsIDc4Njg1LCA3ODY5MiwgNzg2OTgsIDc4NzA0LCA3ODcxMCwgNzg3MTYsIDc4NzIyLCA3ODcyOCwgNzg3MzQsIAorICAgIDc4NzQwLCA3ODc0NiwgNzg3NTIsIDc4NzU4LCA3ODc2NCwgNzg3NzAsIDc4Nzc2LCA3ODc4MiwgNzg3ODgsIDc4Nzk0LCAKKyAgICA3ODgwMCwgNzg4MDYsIDc4ODEyLCA3ODgxOCwgNzg4MjQsIDc4ODMwLCA3ODgzNiwgNzg4NDIsIDc4ODQ4LCA3ODg1NCwgCisgICAgNzg4NjAsIDc4ODY2LCA3ODg3MiwgNzg4NzgsIDc4ODg0LCA3ODg5MCwgNzg4OTYsIDc4OTAyLCA3ODkwOCwgNzg5MTQsIAorICAgIDc4OTIwLCA3ODkyNiwgNzg5MzIsIDc4OTM4LCA3ODk0NCwgNzg5NTAsIDc4OTU2LCA3ODk2MiwgNzg5NjgsIDc4OTc0LCAKKyAgICA3ODk4MCwgNzg5ODYsIDc4OTkyLCA3ODk5OCwgNzkwMDQsIDc5MDEwLCA3OTAxNiwgNzkwMjIsIDc5MDI4LCA3OTAzNCwgCisgICAgNzkwNDAsIDc5MDQ2LCA3OTA1MiwgNzkwNTgsIDc5MDY0LCA3OTA3MCwgNzkwNzYsIDc5MDgyLCA3OTA4OCwgNzkwOTQsIAorICAgIDc5MTAwLCA3OTEwNiwgNzkxMTIsIDc5MTE4LCA3OTEyNCwgNzkxMzAsIDc5MTM2LCA3OTE0MiwgNzkxNDgsIDc5MTU2LCAKKyAgICA3OTE2NCwgNzkxNzAsIDc5MTc2LCA3OTE4MiwgNzkxODgsIDc5MTk3LCA3OTIwNiwgNzkyMTQsIDc5MjIyLCA3OTIzMCwgCisgICAgNzkyMzgsIDc5MjQ2LCA3OTI1NCwgNzkyNjIsIDc5MjcwLCA3OTI3NywgNzkyODQsIDc5Mjk0LCA3OTMwNCwgNzkzMDgsIAorICAgIDc5MzEyLCA3OTMxNywgNzkzMjIsIDc5MzI3LCA3OTMzMiwgNzkzNDEsIDc5MzUwLCA3OTM1NiwgNzkzNjIsIDc5MzY5LCAKKyAgICA3OTM3NiwgNzkzODMsIDc5Mzg3LCA3OTM5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNzkzOTksIDc5NDA1LCA3OTQxMSwgNzk0MTcsIDc5NDIzLCA3OTQyOCwgNzk0MzMsIDc5NDM5LCA3OTQ0NSwgCisgICAgNzk0NTEsIDc5NDU3LCA3OTQ2NSwgNzk0NzEsIDc5NDc3LCA3OTQ4NSwgNzk0OTMsIDc5NTAxLCA3OTUwOSwgNzk1MTQsIAorICAgIDc5NTE5LCA3OTUyNCwgNzk1MjksIDc5NTQyLCA3OTU1NSwgNzk1NjUsIDc5NTc1LCA3OTU4NiwgNzk1OTcsIDc5NjA4LCAKKyAgICA3OTYxOSwgNzk2MjksIDc5NjM5LCA3OTY1MCwgNzk2NjEsIDc5NjcyLCA3OTY4MywgNzk2OTMsIDc5NzAzLCA3OTcxMywgCisgICAgNzk3MjksIDc5NzQ1LCA3OTc2MSwgNzk3NjgsIDc5Nzc1LCA3OTc4MiwgNzk3ODksIDc5Nzk5LCA3OTgwOSwgNzk4MTksIAorICAgIDc5ODMxLCA3OTg0MSwgNzk4NDksIDc5ODU3LCA3OTg2NiwgNzk4NzQsIDc5ODg0LCA3OTg5MiwgNzk5MDAsIDc5OTA4LCAKKyAgICA3OTkxNywgNzk5MjUsIDc5OTM1LCA3OTk0MywgNzk5NTEsIDc5OTU5LCA3OTk2OSwgNzk5NzcsIDc5OTg0LCA3OTk5MSwgCisgICAgNzk5OTgsIDgwMDA1LCA4MDAxMywgODAwMjEsIDgwMDI5LCA4MDAzNywgODAwNDUsIDgwMDU0LCA4MDA2MiwgODAwNzAsIAorICAgIDgwMDc4LCA4MDA4NiwgODAwOTQsIDgwMTAzLCA4MDExMSwgODAxMTksIDgwMTI3LCA4MDEzNSwgODAxNDMsIDgwMTUxLCAKKyAgICA4MDE1OSwgODAxNjcsIDgwMTc1LCA4MDE4MywgODAxOTIsIDgwMjAwLCA4MDIxMCwgODAyMTgsIDgwMjI2LCA4MDIzNCwgCisgICAgODAyNDQsIDgwMjUyLCA4MDI2MCwgODAyNjgsIDgwMjc2LCA4MDI4NSwgODAyOTQsIDgwMzAyLCA4MDMxMiwgODAzMjAsIAorICAgIDgwMzI4LCA4MDMzNiwgODAzNDUsIDgwMzUzLCA4MDM2MywgODAzNzEsIDgwMzc4LCA4MDM4NSwgODAzOTMsIDgwNDAwLCAKKyAgICA4MDQwOSwgODA0MTYsIDgwNDI0LCA4MDQzMiwgODA0NDEsIDgwNDQ5LCA4MDQ1OSwgODA0NjcsIDgwNDc1LCA4MDQ4MywgCisgICAgODA0OTMsIDgwNTAxLCA4MDUwOCwgODA1MTUsIDgwNTIzLCA4MDUzMCwgODA1MzksIDgwNTQ2LCA4MDU1NiwgODA1NjYsIAorICAgIDgwNTc3LCA4MDU4NiwgODA1OTUsIDgwNjA0LCA4MDYxMywgODA2MjIsIDgwNjMyLCA4MDY0MywgODA2NTQsIDgwNjY0LCAKKyAgICA4MDY3NSwgODA2ODcsIDgwNjk3LCA4MDcwNiwgODA3MTUsIDgwNzIzLCA4MDczMiwgODA3NDIsIDgwNzUwLCA4MDc1OSwgCisgICAgODA3NjgsIDgwNzc2LCA4MDc4NSwgODA3OTUsIDgwODAzLCA4MDgxMiwgODA4MjEsIDgwODI5LCA4MDgzOCwgODA4NDgsIAorICAgIDgwODU2LCA4MDg2NiwgODA4NzQsIDgwODg0LCA4MDg5MiwgODA5MDAsIDgwOTA5LCA4MDkxNywgODA5MjcsIDgwOTM1LCAKKyAgICA4MDk0MywgODA5NTMsIDgwOTYxLCA4MDk2OCwgODA5NzUsIDgwOTg0LCA4MDk5MywgODEwMDEsIDgxMDEwLCA4MTAyMCwgCisgICAgODEwMjgsIDgxMDM5LCA4MTA0NywgODEwNTUsIDgxMDYyLCA4MTA3MCwgODEwNzksIDgxMDg2LCA4MTA5NiwgODExMDYsIAorICAgIDgxMTE3LCA4MTEyNywgODExMzgsIDgxMTQ2LCA4MTE1NCwgODExNjMsIDgxMTcxLCA4MTE4MCwgODExODgsIDgxMTk2LCAKKyAgICA4MTIwNSwgODEyMTMsIDgxMjIyLCA4MTIzMCwgODEyMzcsIDgxMjQ0LCA4MTI1MSwgODEyNTgsIDgxMjY2LCA4MTI3NCwgCisgICAgODEyODIsIDgxMjkwLCA4MTI5OSwgODEzMDcsIDgxMzE1LCA4MTMyNCwgODEzMzIsIDgxMzQwLCA4MTM0OCwgODEzNTcsIAorICAgIDgxMzY1LCA4MTM3MywgODEzODEsIDgxMzg5LCA4MTM5NywgODE0MDUsIDgxNDEzLCA4MTQyMSwgODE0MjksIDgxNDM4LCAKKyAgICA4MTQ0NiwgODE0NTQsIDgxNDYyLCA4MTQ3MCwgODE0NzgsIDgxNDg3LCA4MTQ5NiwgODE1MDQsIDgxNTEyLCA4MTUyMCwgCisgICAgODE1MjksIDgxNTM3LCA4MTU0NiwgODE1NTMsIDgxNTYwLCA4MTU2OCwgODE1NzUsIDgxNTgzLCA4MTU5MSwgODE2MDAsIAorICAgIDgxNjA4LCA4MTYxNywgODE2MjUsIDgxNjMzLCA4MTY0MywgODE2NTAsIDgxNjU3LCA4MTY2NSwgODE2NzIsIDgxNjgwLCAKKyAgICA4MTY5MCwgODE3MDEsIDgxNzA5LCA4MTcxOCwgODE3MjYsIDgxNzM1LCA4MTc0MywgODE3NTIsIDgxNzYwLCA4MTc2OSwgCisgICAgODE3NzcsIDgxNzg2LCA4MTc5NSwgODE4MDMsIDgxODExLCA4MTgxOSwgODE4MjgsIDgxODM1LCA4MTg0MywgODE4NTIsIAorICAgIDgxODYxLCA4MTg3MCwgODE4ODAsIDgxODg4LCA4MTg5OCwgODE5MDYsIDgxOTE2LCA4MTkyNCwgODE5MzQsIDgxOTQyLCAKKyAgICA4MTk1MiwgODE5NjAsIDgxOTY5LCA4MTk3NiwgODE5ODUsIDgxOTkyLCA4MjAwMiwgODIwMTAsIDgyMDIwLCA4MjAyOCwgCisgICAgODIwMzgsIDgyMDQ2LCA4MjA1NCwgODIwNjIsIDgyMDcxLCA4MjA3OSwgODIwODgsIDgyMDk3LCA4MjEwNiwgODIxMTUsIAorICAgIDgyMTI1LCA4MjEzMywgODIxNDMsIDgyMTUxLCA4MjE2MSwgODIxNjksIDgyMTc5LCA4MjE4NywgODIxOTcsIDgyMjA1LCAKKyAgICA4MjIxNCwgODIyMjEsIDgyMjMwLCA4MjIzNywgODIyNDcsIDgyMjU1LCA4MjI2NSwgODIyNzMsIDgyMjgzLCA4MjI5MSwgCisgICAgODIyOTksIDgyMzA3LCA4MjMxNiwgODIzMjQsIDgyMzMzLCA4MjM0MiwgODIzNTEsIDgyMzYwLCA4MjM2OCwgODIzNzYsIAorICAgIDgyMzg1LCA4MjM5MywgODI0MDIsIDgyNDExLCA4MjQxOSwgODI0MjcsIDgyNDM1LCA4MjQ0NCwgODI0NTIsIDgyNDYwLCAKKyAgICA4MjQ2OSwgODI0NzcsIDgyNDg1LCA4MjQ5MywgODI1MDEsIDgyNTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA4MjUxMSwgODI1MjEsIDgyNTMxLCA4MjU0MSwgODI1NTEsIDgyNTYyLCA4MjU3MiwgODI1ODIsIAorICAgIDgyNTkzLCA4MjYwMiwgODI2MTEsIDgyNjIwLCA4MjYzMSwgODI2NDEsIDgyNjUxLCA4MjY2MywgODI2NzMsIDgyNjgzLCAKKyAgICA4MjY5MywgODI3MDMsIDgyNzEzLCA4MjcyMywgODI3MzMsIDgyNzQzLCA4Mjc1MywgODI3NjMsIDgyNzczLCA4Mjc4NCwgCisgICAgODI3OTUsIDgyODA1LCA4MjgxNSwgODI4MjcsIDgyODM4LCA4Mjg0OSwgODI4NTksIDgyODY5LCA4Mjg3OSwgODI4ODksIAorICAgIDgyODk5LCA4MjkwOSwgODI5MTksIDgyOTMxLCA4Mjk0MSwgODI5NTEsIDgyOTYzLCA4Mjk3NCwgODI5ODUsIDgyOTk1LCAKKyAgICA4MzAwNSwgODMwMTUsIDgzMDI1LCA4MzAzNywgODMwNDcsIDgzMDU3LCA4MzA2OCwgODMwNzksIDgzMDg5LCA4MzA5OSwgCisgICAgODMxMDgsIDgzMTE3LCA4MzEyNiwgODMxMzUsIDgzMTQ0LCA4MzE1NCwgMCwgMCwgODMxNjQsIDgzMTc0LCA4MzE4NCwgCisgICAgODMxOTQsIDgzMjA0LCA4MzIxNiwgODMyMjYsIDgzMjM2LCA4MzI0OCwgODMyNTgsIDgzMjcwLCA4MzI3OSwgODMyODgsIAorICAgIDgzMjk5LCA4MzMwOSwgODMzMjEsIDgzMzMyLCA4MzM0NSwgODMzNTUsIDgzMzY3LCA4MzM3NiwgODMzODcsIDgzMzk4LCAKKyAgICA4MzQxMSwgODM0MjEsIDgzNDMxLCA4MzQ0MSwgODM0NTEsIDgzNDYxLCA4MzQ3MCwgODM0NzksIDgzNDg4LCA4MzQ5NywgCisgICAgODM1MDcsIDgzNTE3LCA4MzUyNywgODM1MzcsIDgzNTQ3LCA4MzU1NywgODM1NjcsIDgzNTc3LCA4MzU4NywgODM1OTcsIAorICAgIDgzNjA3LCA4MzYxNywgODM2MjYsIDgzNjM1LCA4MzY0NCwgODM2NTQsIDgzNjY0LCA4MzY3NCwgODM2ODQsIDgzNjk0LCAKKyAgICA4MzcwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODM3MTUsIDgzNzMwLCAKKyAgICA4Mzc0NSwgODM3NTEsIDgzNzU3LCA4Mzc2MywgODM3NjksIDgzNzc1LCA4Mzc4MSwgODM3ODcsIDgzNzkzLCA4MzgwMSwgCisgICAgODM4MDUsIDgzODA4LCAwLCAwLCA4MzgxNiwgODM4MTksIDgzODIyLCA4MzgyNSwgODM4MjgsIDgzODMxLCA4MzgzNCwgCisgICAgODM4MzcsIDgzODQwLCA4Mzg0MywgODM4NDYsIDgzODQ5LCA4Mzg1MiwgODM4NTUsIDgzODU4LCA4Mzg2MSwgODM4NjQsIAorICAgIDgzODcyLCA4Mzg4MSwgODM4OTIsIDgzOTAwLCA4MzkwOCwgODM5MTcsIDgzOTI2LCA4MzkzNywgODM5NDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDgzOTU4LCA4Mzk2MywgODM5NjgsIDgzOTc1LCA4Mzk4MiwgODM5ODgsIDgzOTk0LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA4Mzk5OSwgODQwMDksIDg0MDE5LCA4NDAyOSwgODQwMzgsIDg0MDQ5LCA4NDA1OCwgODQwNjcsIAorICAgIDg0MDc3LCA4NDA4NywgODQwOTksIDg0MTExLCA4NDEyMiwgODQxMzMsIDg0MTQ0LCA4NDE1NSwgODQxNjUsIDg0MTc1LCAKKyAgICA4NDE4NSwgODQxOTUsIDg0MjA2LCA4NDIxNywgODQyMjEsIDg0MjI2LCA4NDIzNSwgODQyNDQsIDg0MjQ4LCA4NDI1MiwgCisgICAgODQyNTYsIDg0MjYxLCA4NDI2NiwgODQyNzEsIDg0Mjc2LCA4NDI3OSwgODQyODMsIDAsIDg0Mjg4LCA4NDI5MSwgODQyOTQsIAorICAgIDg0Mjk4LCA4NDMwMiwgODQzMDcsIDg0MzExLCA4NDMxNSwgODQzMjAsIDg0MzI1LCA4NDMzMiwgODQzMzksIDg0MzQyLCAKKyAgICA4NDM0NSwgODQzNDgsIDg0MzUxLCA4NDM1NCwgODQzNTgsIDg0MzYyLCAwLCA4NDM2NiwgODQzNzEsIDg0Mzc1LCA4NDM3OSwgCisgICAgMCwgMCwgMCwgMCwgODQzODQsIDg0Mzg5LCA4NDM5NiwgODQ0MDEsIDg0NDA2LCAwLCA4NDQxMSwgODQ0MTYsIDg0NDIxLCAKKyAgICA4NDQyNiwgODQ0MzEsIDg0NDM2LCA4NDQ0MSwgODQ0NDYsIDg0NDUxLCA4NDQ1NiwgODQ0NjEsIDg0NDY2LCA4NDQ3NSwgCisgICAgODQ0ODQsIDg0NDkyLCA4NDUwMCwgODQ1MDksIDg0NTE4LCA4NDUyNywgODQ1MzYsIDg0NTQ0LCA4NDU1MiwgODQ1NjAsIAorICAgIDg0NTY4LCA4NDU3MywgODQ1NzgsIDg0NTg0LCA4NDU5MCwgODQ1OTYsIDg0NjAyLCA4NDYxMCwgODQ2MTgsIDg0NjI0LCAKKyAgICA4NDYzMCwgODQ2MzYsIDg0NjQyLCA4NDY0OCwgODQ2NTQsIDg0NjYwLCA4NDY2NiwgODQ2NzEsIDg0Njc2LCA4NDY4MSwgCisgICAgODQ2ODYsIDg0NjkxLCA4NDY5NiwgODQ3MDEsIDg0NzA2LCA4NDcxMiwgODQ3MTgsIDg0NzI0LCA4NDczMCwgODQ3MzYsIAorICAgIDg0NzQyLCA4NDc0OCwgODQ3NTQsIDg0NzYwLCA4NDc2NiwgODQ3NzIsIDg0Nzc4LCA4NDc4NCwgODQ3OTAsIDg0Nzk2LCAKKyAgICA4NDgwMiwgODQ4MDgsIDg0ODE0LCA4NDgyMCwgODQ4MjYsIDg0ODMyLCA4NDgzOCwgODQ4NDQsIDg0ODUwLCA4NDg1NiwgCisgICAgODQ4NjIsIDg0ODY4LCA4NDg3NCwgODQ4ODAsIDg0ODg2LCA4NDg5MiwgODQ4OTgsIDg0OTA0LCA4NDkxMCwgODQ5MTYsIAorICAgIDg0OTIyLCA4NDkyOCwgODQ5MzQsIDg0OTQwLCA4NDk0NiwgODQ5NTIsIDg0OTU4LCA4NDk2NCwgODQ5NzAsIDg0OTc2LCAKKyAgICA4NDk4MiwgODQ5ODgsIDg0OTk0LCA4NTAwMCwgODUwMDYsIDg1MDEyLCA4NTAxOCwgODUwMjQsIDg1MDMwLCA4NTAzNiwgCisgICAgODUwNDIsIDg1MDQ4LCA4NTA1NCwgODUwNjAsIDg1MDY2LCA4NTA3MSwgODUwNzYsIDg1MDgxLCA4NTA4NiwgODUwOTIsIAorICAgIDg1MDk4LCA4NTEwNCwgODUxMTAsIDg1MTE2LCA4NTEyMiwgODUxMjgsIDg1MTM0LCA4NTE0MCwgODUxNDYsIDg1MTUzLCAKKyAgICA4NTE2MCwgODUxNjUsIDg1MTcwLCA4NTE3NSwgODUxODAsIDg1MTkyLCA4NTIwNCwgODUyMTUsIDg1MjI2LCA4NTIzOCwgCisgICAgODUyNTAsIDg1MjU4LCAwLCAwLCA4NTI2NiwgMCwgODUyNzQsIDg1Mjc4LCA4NTI4MiwgODUyODUsIDg1Mjg5LCA4NTI5MywgCisgICAgODUyOTYsIDg1Mjk5LCA4NTMwMywgODUzMDcsIDg1MzEwLCA4NTMxMywgODUzMTYsIDg1MzE5LCA4NTMyNCwgODUzMjcsIAorICAgIDg1MzMxLCA4NTMzNCwgODUzMzcsIDg1MzQwLCA4NTM0MywgODUzNDYsIDg1MzQ5LCA4NTM1MiwgODUzNTUsIDg1MzU4LCAKKyAgICA4NTM2MSwgODUzNjQsIDg1MzY4LCA4NTM3MiwgODUzNzYsIDg1MzgwLCA4NTM4NSwgODUzOTAsIDg1Mzk2LCA4NTQwMiwgCisgICAgODU0MDgsIDg1NDEzLCA4NTQxOSwgODU0MjUsIDg1NDMxLCA4NTQzNiwgODU0NDIsIDg1NDQ4LCA4NTQ1MywgODU0NTgsIAorICAgIDg1NDY0LCA4NTQ2OSwgODU0NzUsIDg1NDgxLCA4NTQ4NiwgODU0OTIsIDg1NDk4LCA4NTUwMywgODU1MDksIDg1NTE1LCAKKyAgICA4NTUyMSwgODU1MjcsIDg1NTMzLCA4NTUzNywgODU1NDIsIDg1NTQ2LCA4NTU1MSwgODU1NTUsIDg1NTYwLCA4NTU2NSwgCisgICAgODU1NzEsIDg1NTc3LCA4NTU4MywgODU1ODgsIDg1NTk0LCA4NTYwMCwgODU2MDYsIDg1NjExLCA4NTYxNywgODU2MjMsIAorICAgIDg1NjI4LCA4NTYzMywgODU2MzksIDg1NjQ0LCA4NTY1MCwgODU2NTYsIDg1NjYxLCA4NTY2NywgODU2NzMsIDg1Njc4LCAKKyAgICA4NTY4NCwgODU2OTAsIDg1Njk2LCA4NTcwMiwgODU3MDgsIDg1NzEzLCA4NTcxNywgODU3MjIsIDg1NzI0LCA4NTcyOSwgCisgICAgODU3MzQsIDg1NzQwLCA4NTc0NSwgODU3NTAsIDg1NzU0LCA4NTc2MCwgODU3NjUsIDg1NzcwLCA4NTc3NSwgODU3ODAsIAorICAgIDg1Nzg1LCA4NTc5MCwgODU3OTUsIDg1ODAxLCA4NTgwNywgODU4MTMsIDg1ODIxLCA4NTgyNSwgODU4MjksIDg1ODMzLCAKKyAgICA4NTgzNywgODU4NDEsIDg1ODQ1LCA4NTg1MCwgODU4NTUsIDg1ODYwLCA4NTg2NSwgODU4NjksIDg1ODc0LCA4NTg3OSwgCisgICAgODU4ODQsIDg1ODg5LCA4NTg5NCwgODU4OTksIDg1OTA0LCA4NTkwOSwgODU5MTMsIDg1OTE3LCA4NTkyMiwgODU5MjcsIAorICAgIDg1OTMyLCA4NTkzNywgODU5NDEsIDg1OTQ2LCA4NTk1MSwgODU5NTYsIDg1OTYxLCA4NTk2NSwgODU5NzAsIDg1OTc1LCAKKyAgICA4NTk4MCwgODU5ODUsIDg1OTg5LCA4NTk5NCwgODU5OTksIDg2MDAzLCA4NjAwOCwgODYwMTMsIDg2MDE4LCA4NjAyMywgCisgICAgODYwMjgsIDg2MDMzLCA4NjA0MCwgODYwNDcsIDg2MDUxLCA4NjA1NiwgODYwNjEsIDg2MDY2LCA4NjA3MSwgODYwNzYsIAorICAgIDg2MDgxLCA4NjA4NiwgODYwOTEsIDg2MDk2LCA4NjEwMSwgODYxMDYsIDg2MTExLCA4NjExNiwgODYxMjEsIDg2MTI2LCAKKyAgICA4NjEzMSwgODYxMzYsIDg2MTQxLCA4NjE0NiwgODYxNTEsIDg2MTU2LCA4NjE2MSwgODYxNjYsIDg2MTcxLCA4NjE3NiwgCisgICAgODYxODEsIDg2MTg2LCA4NjE5MSwgODYxOTYsIDAsIDAsIDAsIDg2MjAxLCA4NjIwNSwgODYyMTAsIDg2MjE0LCA4NjIxOSwgCisgICAgODYyMjQsIDAsIDAsIDg2MjI4LCA4NjIzMywgODYyMzgsIDg2MjQyLCA4NjI0NywgODYyNTIsIDAsIDAsIDg2MjU3LCAKKyAgICA4NjI2MiwgODYyNjYsIDg2MjcxLCA4NjI3NiwgODYyODEsIDAsIDAsIDg2Mjg2LCA4NjI5MSwgODYyOTYsIDAsIDAsIDAsIAorICAgIDg2MzAwLCA4NjMwNCwgODYzMDgsIDg2MzEyLCA4NjMxNSwgODYzMTksIDg2MzIzLCAwLCA4NjMyNywgODYzMzMsIDg2MzM2LCAKKyAgICA4NjM0MCwgODYzNDMsIDg2MzQ3LCA4NjM1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODYzNTUsIDg2MzYxLCAKKyAgICA4NjM2NywgODYzNzMsIDg2Mzc5LCAwLCAwLCA4NjM4MywgODYzODksIDg2Mzk1LCA4NjQwMSwgODY0MDcsIDg2NDEzLCAKKyAgICA4NjQyMCwgODY0MjcsIDg2NDM0LCA4NjQ0MSwgODY0NDgsIDg2NDU1LCAwLCA4NjQ2MiwgODY0NjksIDg2NDc2LCA4NjQ4MiwgCisgICAgODY0ODksIDg2NDk2LCA4NjUwMywgODY1MTAsIDg2NTE2LCA4NjUyMywgODY1MzAsIDg2NTM3LCA4NjU0NCwgODY1NTAsIAorICAgIDg2NTU3LCA4NjU2NCwgODY1NzEsIDg2NTc4LCA4NjU4NCwgODY1OTEsIDg2NTk4LCA4NjYwNSwgODY2MTIsIDg2NjE5LCAKKyAgICA4NjYyNiwgODY2MzMsIDAsIDg2NjQwLCA4NjY0NiwgODY2NTMsIDg2NjYwLCA4NjY2NywgODY2NzQsIDg2NjgwLCA4NjY4NywgCisgICAgODY2OTQsIDg2NzAxLCA4NjcwOCwgODY3MTUsIDg2NzIyLCA4NjcyOSwgODY3MzUsIDg2NzQyLCA4Njc0OSwgODY3NTYsIAorICAgIDg2NzYzLCAwLCA4Njc3MCwgODY3NzcsIDAsIDg2Nzg0LCA4Njc5MSwgODY3OTgsIDg2ODA1LCA4NjgxMiwgODY4MTksIAorICAgIDg2ODI2LCA4NjgzMywgODY4NDAsIDg2ODQ3LCA4Njg1NCwgODY4NjEsIDg2ODY4LCA4Njg3NSwgODY4ODIsIDAsIDAsIAorICAgIDg2ODg4LCA4Njg5MywgODY4OTgsIDg2OTAzLCA4NjkwOCwgODY5MTMsIDg2OTE4LCA4NjkyMywgODY5MjgsIDg2OTMzLCAKKyAgICA4NjkzOCwgODY5NDMsIDg2OTQ4LCA4Njk1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODY5NTgsIDg2OTY1LCAKKyAgICA4Njk3MiwgODY5NzksIDg2OTg2LCA4Njk5MywgODcwMDAsIDg3MDA3LCA4NzAxNCwgODcwMjEsIDg3MDI4LCA4NzAzNSwgCisgICAgODcwNDIsIDg3MDQ5LCA4NzA1NiwgODcwNjMsIDg3MDcwLCA4NzA3NywgODcwODQsIDg3MDkxLCA4NzA5OSwgODcxMDcsIAorICAgIDg3MTE0LCA4NzEyMSwgODcxMjYsIDg3MTM0LCA4NzE0MiwgODcxNDksIDg3MTU2LCA4NzE2MSwgODcxNjgsIDg3MTczLCAKKyAgICA4NzE3OCwgODcxODUsIDg3MTkwLCA4NzE5NSwgODcyMDAsIDg3MjA4LCA4NzIxMywgODcyMTgsIDg3MjI1LCA4NzIzMCwgCisgICAgODcyMzUsIDg3MjQyLCA4NzI0OSwgODcyNTQsIDg3MjU5LCA4NzI2NCwgODcyNjksIDg3Mjc0LCA4NzI3OSwgODcyODQsIAorICAgIDg3Mjg5LCA4NzI5NCwgODczMDEsIDg3MzA2LCA4NzMxMywgODczMTgsIDg3MzIzLCA4NzMyOCwgODczMzMsIDg3MzM4LCAKKyAgICA4NzM0MywgODczNDgsIDg3MzUzLCA4NzM1OCwgODczNjMsIDg3MzY4LCA4NzM3NSwgODczODIsIDg3Mzg5LCA4NzM5NiwgCisgICAgODc0MDIsIDg3NDA3LCA4NzQxNCwgODc0MTksIDg3NDI0LCA4NzQzMywgODc0NDAsIDg3NDQ5LCA4NzQ1NiwgODc0NjEsIAorICAgIDg3NDY2LCA4NzQ3NCwgODc0NzksIDg3NDg0LCA4NzQ4OSwgODc0OTQsIDg3NDk5LCA4NzUwNiwgODc1MTEsIDg3NTE2LCAKKyAgICA4NzUyMSwgODc1MjYsIDg3NTMxLCA4NzUzOCwgODc1NDUsIDg3NTUyLCA4NzU1OSwgODc1NjYsIDg3NTczLCA4NzU4MCwgCisgICAgODc1ODcsIDg3NTk0LCA4NzYwMSwgODc2MDgsIDg3NjE1LCA4NzYyMiwgODc2MjksIDg3NjM2LCA4NzY0MywgODc2NTAsIAorICAgIDg3NjU3LCA4NzY2NCwgODc2NzEsIDg3Njc4LCA4NzY4NSwgODc2OTIsIDg3Njk5LCA4NzcwNiwgODc3MTMsIDg3NzIwLCAKKyAgICA4NzcyNywgMCwgMCwgMCwgMCwgMCwgODc3MzQsIDg3NzQyLCA4Nzc1MCwgMCwgMCwgMCwgMCwgODc3NTUsIDg3NzU5LCAKKyAgICA4Nzc2MywgODc3NjcsIDg3NzcxLCA4Nzc3NSwgODc3NzksIDg3NzgzLCA4Nzc4NywgODc3OTEsIDg3Nzk2LCA4NzgwMSwgCisgICAgODc4MDYsIDg3ODExLCA4NzgxNiwgODc4MjEsIDg3ODI2LCA4NzgzMSwgODc4MzYsIDg3ODQyLCA4Nzg0OCwgODc4NTQsIAorICAgIDg3ODYxLCA4Nzg2OCwgODc4NzUsIDg3ODgyLCA4Nzg4OSwgODc4OTYsIDg3OTAyLCA4NzkwOCwgODc5MTQsIDg3OTIxLCAKKyAgICA4NzkyOCwgODc5MzUsIDg3OTQyLCA4Nzk0OSwgODc5NTYsIDg3OTYzLCA4Nzk3MCwgODc5NzcsIDg3OTg0LCA4Nzk5MSwgCisgICAgODc5OTgsIDg4MDA1LCA4ODAxMiwgMCwgMCwgMCwgODgwMTksIDg4MDI3LCA4ODAzNSwgODgwNDMsIDg4MDUxLCA4ODA1OSwgCisgICAgODgwNjksIDg4MDc5LCA4ODA4NywgODgwOTUsIDg4MTAzLCA4ODExMSwgODgxMTksIDg4MTI1LCA4ODEzMiwgODgxNDEsIAorICAgIDg4MTUwLCA4ODE1OSwgODgxNjgsIDg4MTc3LCA4ODE4NiwgODgxOTYsIDg4MjA3LCA4ODIxNywgODgyMjgsIDg4MjM3LCAKKyAgICA4ODI0NiwgODgyNTUsIDg4MjY1LCA4ODI3NiwgODgyODYsIDg4Mjk3LCA4ODMwOCwgODgzMTcsIDg4MzI1LCA4ODMzMSwgCisgICAgODgzMzcsIDg4MzQzLCA4ODM0OSwgODgzNTcsIDg4MzY1LCA4ODM3MSwgODgzNzgsIDg4Mzg4LCA4ODM5NSwgODg0MDIsIAorICAgIDg4NDA5LCA4ODQxNiwgODg0MjMsIDg4NDMzLCA4ODQ0MCwgODg0NDcsIDg4NDU1LCA4ODQ2MywgODg0NzIsIDg4NDgxLCAKKyAgICA4ODQ5MCwgODg0OTksIDg4NTA4LCA4ODUxNiwgODg1MjUsIDg4NTM0LCA4ODU0MywgODg1NDcsIDg4NTU0LCA4ODU1OSwgCisgICAgODg1NjQsIDg4NTY4LCA4ODU3MiwgODg1NzYsIDg4NTgwLCA4ODU4NSwgODg1OTAsIDg4NTk2LCA4ODYwMiwgODg2MDYsIAorICAgIDg4NjEyLCA4ODYxNiwgODg2MjAsIDg4NjI0LCA4ODYyOCwgODg2MzIsIDg4NjM2LCA4ODY0MiwgMCwgMCwgMCwgMCwgMCwgCisgICAgODg2NDYsIDg4NjUxLCA4ODY1NiwgODg2NjEsIDg4NjY2LCA4ODY3MywgODg2NzgsIDg4NjgzLCA4ODY4OCwgODg2OTMsIAorICAgIDg4Njk4LCA4ODcwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzczOTQsIDc3Mzk5LCA3NzQwNCwgNzc0MDksIDc3NDE0LCAKLSAgICA3NzQxOSwgNzc0MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc3NDMyLCA3NzQzOSwgNzc0NDYsIAotICAgIDc3NDUzLCA3NzQ2MCwgMCwgMCwgMCwgMCwgMCwgNzc0NjcsIDc3NDc0LCA3NzQ4MSwgNzc0OTEsIDc3NDk3LCA3NzUwMywgCi0gICAgNzc1MDksIDc3NTE1LCA3NzUyMSwgNzc1MjcsIDc3NTM0LCA3NzU0MCwgNzc1NDYsIDc3NTUyLCA3NzU2MSwgNzc1NzAsIAotICAgIDc3NTgyLCA3NzU5NCwgNzc2MDAsIDc3NjA2LCA3NzYxMiwgNzc2MTksIDc3NjI2LCA3NzYzMywgNzc2NDAsIDc3NjQ3LCAwLCAKLSAgICA3NzY1NCwgNzc2NjEsIDc3NjY4LCA3NzY3NiwgNzc2ODMsIDAsIDc3NjkwLCAwLCA3NzY5NywgNzc3MDQsIDAsIDc3NzExLCAKLSAgICA3NzcxOSwgMCwgNzc3MjYsIDc3NzMzLCA3Nzc0MCwgNzc3NDcsIDc3NzU0LCA3Nzc2MSwgNzc3NjgsIDc3Nzc1LCA3Nzc4MiwgCi0gICAgNzc3ODksIDc3Nzk0LCA3NzgwMSwgNzc4MDgsIDc3ODE0LCA3NzgyMCwgNzc4MjYsIDc3ODMyLCA3NzgzOCwgNzc4NDQsIAotICAgIDc3ODUwLCA3Nzg1NiwgNzc4NjIsIDc3ODY4LCA3Nzg3NCwgNzc4ODAsIDc3ODg2LCA3Nzg5MiwgNzc4OTgsIDc3OTA0LCAKLSAgICA3NzkxMCwgNzc5MTYsIDc3OTIyLCA3NzkyOCwgNzc5MzQsIDc3OTQwLCA3Nzk0NiwgNzc5NTIsIDc3OTU4LCA3Nzk2NCwgCi0gICAgNzc5NzAsIDc3OTc2LCA3Nzk4MiwgNzc5ODgsIDc3OTk0LCA3ODAwMCwgNzgwMDYsIDc4MDEyLCA3ODAxOCwgNzgwMjQsIAotICAgIDc4MDMwLCA3ODAzNiwgNzgwNDIsIDc4MDQ4LCA3ODA1NCwgNzgwNjAsIDc4MDY2LCA3ODA3MiwgNzgwNzgsIDc4MDg0LCAKLSAgICA3ODA5MCwgNzgwOTYsIDc4MTAyLCA3ODEwOCwgNzgxMTQsIDc4MTIwLCA3ODEyNiwgNzgxMzIsIDc4MTM4LCA3ODE0NCwgCi0gICAgNzgxNTAsIDc4MTU2LCA3ODE2MiwgNzgxNjgsIDc4MTc0LCA3ODE4MCwgNzgxODYsIDc4MTkyLCA3ODE5OCwgNzgyMDQsIAotICAgIDc4MjEwLCA3ODIxNiwgNzgyMjIsIDc4MjI4LCA3ODIzNCwgNzgyNDAsIDc4MjQ2LCA3ODI1MiwgNzgyNTgsIDc4MjY0LCAKLSAgICA3ODI3MiwgNzgyODAsIDc4Mjg2LCA3ODI5MiwgNzgyOTgsIDc4MzA0LCA3ODMxMywgNzgzMjIsIDc4MzMwLCA3ODMzOCwgCi0gICAgNzgzNDYsIDc4MzU0LCA3ODM2MiwgNzgzNzAsIDc4Mzc4LCA3ODM4NiwgNzgzOTMsIDc4NDAwLCA3ODQxMCwgNzg0MjAsIAotICAgIDc4NDI0LCA3ODQyOCwgNzg0MzMsIDc4NDM4LCA3ODQ0MywgNzg0NDgsIDc4NDU3LCA3ODQ2NiwgNzg0NzIsIDc4NDc4LCAKLSAgICA3ODQ4NSwgNzg0OTIsIDc4NDk5LCA3ODUwMywgNzg1MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDc4NTE1LCA3ODUyMSwgNzg1MjcsIDc4NTMzLCA3ODUzOSwgNzg1NDQsIDc4NTQ5LCA3ODU1NSwgCi0gICAgNzg1NjEsIDc4NTY3LCA3ODU3MywgNzg1ODEsIDc4NTg3LCA3ODU5MywgNzg2MDEsIDc4NjA5LCA3ODYxNywgNzg2MjUsIAotICAgIDc4NjMwLCA3ODYzNSwgNzg2NDAsIDc4NjQ1LCA3ODY1NywgNzg2NjksIDc4Njc5LCA3ODY4OSwgNzg3MDAsIDc4NzExLCAKLSAgICA3ODcyMiwgNzg3MzMsIDc4NzQzLCA3ODc1MywgNzg3NjQsIDc4Nzc1LCA3ODc4NiwgNzg3OTcsIDc4ODA3LCA3ODgxNywgCi0gICAgNzg4MjcsIDc4ODQyLCA3ODg1NywgNzg4NzIsIDc4ODc5LCA3ODg4NiwgNzg4OTMsIDc4OTAwLCA3ODkxMCwgNzg5MjAsIAotICAgIDc4OTMwLCA3ODk0MSwgNzg5NTEsIDc4OTU5LCA3ODk2NywgNzg5NzYsIDc4OTg0LCA3ODk5MywgNzkwMDEsIDc5MDA5LCAKLSAgICA3OTAxNywgNzkwMjYsIDc5MDM0LCA3OTA0MywgNzkwNTEsIDc5MDU5LCA3OTA2NywgNzkwNzYsIDc5MDg0LCA3OTA5MSwgCi0gICAgNzkwOTgsIDc5MTA1LCA3OTExMiwgNzkxMjAsIDc5MTI4LCA3OTEzNiwgNzkxNDQsIDc5MTUyLCA3OTE2MSwgNzkxNjksIAotICAgIDc5MTc3LCA3OTE4NSwgNzkxOTMsIDc5MjAxLCA3OTIxMCwgNzkyMTgsIDc5MjI2LCA3OTIzNCwgNzkyNDIsIDc5MjUwLCAKLSAgICA3OTI1OCwgNzkyNjYsIDc5Mjc0LCA3OTI4MiwgNzkyOTAsIDc5Mjk5LCA3OTMwNywgNzkzMTYsIDc5MzI0LCA3OTMzMiwgCi0gICAgNzkzNDAsIDc5MzQ5LCA3OTM1NywgNzkzNjUsIDc5MzczLCA3OTM4MSwgNzkzOTAsIDc5Mzk5LCA3OTQwNywgNzk0MTYsIAotICAgIDc5NDI0LCA3OTQzMiwgNzk0NDAsIDc5NDQ5LCA3OTQ1NywgNzk0NjYsIDc5NDc0LCA3OTQ4MSwgNzk0ODgsIDc5NDk2LCAKLSAgICA3OTUwMywgNzk1MTEsIDc5NTE4LCA3OTUyNiwgNzk1MzQsIDc5NTQzLCA3OTU1MSwgNzk1NjAsIDc5NTY4LCA3OTU3NiwgCi0gICAgNzk1ODQsIDc5NTkzLCA3OTYwMSwgNzk2MDgsIDc5NjE1LCA3OTYyMywgNzk2MzAsIDc5NjM4LCA3OTY0NSwgNzk2NTUsIAotICAgIDc5NjY1LCA3OTY3NSwgNzk2ODQsIDc5NjkzLCA3OTcwMiwgNzk3MTEsIDc5NzIwLCA3OTczMCwgNzk3NDEsIDc5NzUyLCAKLSAgICA3OTc2MiwgNzk3NzMsIDc5Nzg0LCA3OTc5NCwgNzk4MDMsIDc5ODEyLCA3OTgyMCwgNzk4MjksIDc5ODM4LCA3OTg0NiwgCi0gICAgNzk4NTUsIDc5ODY0LCA3OTg3MiwgNzk4ODEsIDc5ODkwLCA3OTg5OCwgNzk5MDcsIDc5OTE2LCA3OTkyNCwgNzk5MzMsIAotICAgIDc5OTQyLCA3OTk1MCwgNzk5NTksIDc5OTY3LCA3OTk3NiwgNzk5ODQsIDc5OTkyLCA4MDAwMSwgODAwMDksIDgwMDE4LCAKLSAgICA4MDAyNiwgODAwMzQsIDgwMDQzLCA4MDA1MSwgODAwNTgsIDgwMDY1LCA4MDA3NCwgODAwODMsIDgwMDkxLCA4MDEwMCwgCi0gICAgODAxMDksIDgwMTE3LCA4MDEyNywgODAxMzUsIDgwMTQzLCA4MDE1MCwgODAxNTgsIDgwMTY2LCA4MDE3MywgODAxODMsIAotICAgIDgwMTkzLCA4MDIwNCwgODAyMTQsIDgwMjI1LCA4MDIzMywgODAyNDEsIDgwMjUwLCA4MDI1OCwgODAyNjcsIDgwMjc1LCAKLSAgICA4MDI4MywgODAyOTIsIDgwMzAwLCA4MDMwOSwgODAzMTcsIDgwMzI0LCA4MDMzMSwgODAzMzgsIDgwMzQ1LCA4MDM1MywgCi0gICAgODAzNjEsIDgwMzY5LCA4MDM3NywgODAzODYsIDgwMzk0LCA4MDQwMiwgODA0MTEsIDgwNDE5LCA4MDQyNywgODA0MzUsIAotICAgIDgwNDQ0LCA4MDQ1MiwgODA0NjAsIDgwNDY4LCA4MDQ3NiwgODA0ODQsIDgwNDkyLCA4MDUwMCwgODA1MDgsIDgwNTE2LCAKLSAgICA4MDUyNSwgODA1MzMsIDgwNTQxLCA4MDU0OSwgODA1NTcsIDgwNTY1LCA4MDU3NCwgODA1ODMsIDgwNTkxLCA4MDU5OSwgCi0gICAgODA2MDcsIDgwNjE2LCA4MDYyNCwgODA2MzMsIDgwNjQwLCA4MDY0NywgODA2NTUsIDgwNjYyLCA4MDY3MCwgODA2NzgsIAotICAgIDgwNjg3LCA4MDY5NSwgODA3MDQsIDgwNzEyLCA4MDcyMCwgODA3MzAsIDgwNzM3LCA4MDc0NCwgODA3NTIsIDgwNzU5LCAKLSAgICA4MDc2NywgODA3NzcsIDgwNzg4LCA4MDc5NiwgODA4MDUsIDgwODEzLCA4MDgyMiwgODA4MzAsIDgwODM5LCA4MDg0NywgCi0gICAgODA4NTYsIDgwODY0LCA4MDg3MywgODA4ODIsIDgwODkwLCA4MDg5OCwgODA5MDYsIDgwOTE1LCA4MDkyMiwgODA5MzAsIAotICAgIDgwOTM5LCA4MDk0OCwgODA5NTcsIDgwOTY2LCA4MDk3NCwgODA5ODMsIDgwOTkxLCA4MTAwMCwgODEwMDgsIDgxMDE3LCAKLSAgICA4MTAyNSwgODEwMzQsIDgxMDQyLCA4MTA1MCwgODEwNTcsIDgxMDY1LCA4MTA3MiwgODEwODEsIDgxMDg5LCA4MTA5OCwgCi0gICAgODExMDYsIDgxMTE1LCA4MTEyMywgODExMzEsIDgxMTM5LCA4MTE0OCwgODExNTYsIDgxMTY1LCA4MTE3NCwgODExODMsIAotICAgIDgxMTkyLCA4MTIwMSwgODEyMDksIDgxMjE4LCA4MTIyNiwgODEyMzUsIDgxMjQzLCA4MTI1MiwgODEyNjAsIDgxMjY5LCAKLSAgICA4MTI3NywgODEyODUsIDgxMjkyLCA4MTMwMCwgODEzMDcsIDgxMzE2LCA4MTMyNCwgODEzMzMsIDgxMzQxLCA4MTM1MCwgCi0gICAgODEzNTgsIDgxMzY2LCA4MTM3NCwgODEzODMsIDgxMzkxLCA4MTQwMCwgODE0MDksIDgxNDE4LCA4MTQyNywgODE0MzUsIAotICAgIDgxNDQzLCA4MTQ1MiwgODE0NjAsIDgxNDY5LCA4MTQ3OCwgODE0ODYsIDgxNDk0LCA4MTUwMiwgODE1MTEsIDgxNTE5LCAKLSAgICA4MTUyNywgODE1MzYsIDgxNTQ0LCA4MTU1MiwgODE1NjAsIDgxNTY4LCA4MTU3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODE1NzgsIDgxNTg4LCA4MTU5OCwgODE2MDgsIDgxNjE4LCA4MTYyOSwgODE2MzksIAotICAgIDgxNjQ5LCA4MTY2MCwgODE2NjksIDgxNjc4LCA4MTY4NywgODE2OTcsIDgxNzA3LCA4MTcxNywgODE3MjgsIDgxNzM4LCAKLSAgICA4MTc0OCwgODE3NTgsIDgxNzY4LCA4MTc3OCwgODE3ODgsIDgxNzk4LCA4MTgwOCwgODE4MTgsIDgxODI4LCA4MTgzOCwgCi0gICAgODE4NDksIDgxODYwLCA4MTg3MCwgODE4ODAsIDgxODkxLCA4MTkwMiwgODE5MTMsIDgxOTIzLCA4MTkzMywgODE5NDMsIAotICAgIDgxOTUzLCA4MTk2MywgODE5NzMsIDgxOTgzLCA4MTk5NCwgODIwMDQsIDgyMDE0LCA4MjAyNSwgODIwMzYsIDgyMDQ3LCAKLSAgICA4MjA1NywgODIwNjcsIDgyMDc3LCA4MjA4NywgODIwOTgsIDgyMTA4LCA4MjExOCwgODIxMjksIDgyMTQwLCA4MjE1MCwgCi0gICAgODIxNjAsIDgyMTY5LCA4MjE3OCwgODIxODcsIDgyMTk2LCA4MjIwNSwgODIyMTUsIDAsIDAsIDgyMjI1LCA4MjIzNSwgCi0gICAgODIyNDUsIDgyMjU1LCA4MjI2NSwgODIyNzYsIDgyMjg2LCA4MjI5NiwgODIzMDcsIDgyMzE3LCA4MjMyOCwgODIzMzcsIAotICAgIDgyMzQ2LCA4MjM1NywgODIzNjcsIDgyMzc4LCA4MjM4OSwgODI0MDEsIDgyNDExLCA4MjQyMiwgODI0MzEsIDgyNDQxLCAKLSAgICA4MjQ1MSwgODI0NjMsIDgyNDczLCA4MjQ4MywgODI0OTMsIDgyNTAzLCA4MjUxMywgODI1MjIsIDgyNTMxLCA4MjU0MCwgCi0gICAgODI1NDksIDgyNTU5LCA4MjU2OSwgODI1NzksIDgyNTg5LCA4MjU5OSwgODI2MDksIDgyNjE5LCA4MjYyOSwgODI2MzksIAotICAgIDgyNjQ5LCA4MjY1OSwgODI2NjksIDgyNjc4LCA4MjY4NywgODI2OTYsIDgyNzA2LCA4MjcxNiwgODI3MjYsIDgyNzM2LCAKLSAgICA4Mjc0NiwgODI3NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyNzY3LCA4Mjc4MiwgCi0gICAgODI3OTcsIDgyODAzLCA4MjgwOSwgODI4MTUsIDgyODIxLCA4MjgyNywgODI4MzMsIDgyODM5LCA4Mjg0NSwgODI4NTMsIAotICAgIDgyODU3LCA4Mjg2MCwgMCwgMCwgODI4NjgsIDgyODcxLCA4Mjg3NCwgODI4NzcsIDgyODgwLCA4Mjg4MywgODI4ODYsIAotICAgIDgyODg5LCA4Mjg5MiwgODI4OTUsIDgyODk4LCA4MjkwMSwgODI5MDQsIDgyOTA3LCA4MjkxMCwgODI5MTMsIDgyOTE2LCAKLSAgICA4MjkyNCwgODI5MzMsIDgyOTQ0LCA4Mjk1MiwgODI5NjAsIDgyOTY5LCA4Mjk3OCwgODI5ODksIDgzMDAxLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA4MzAxMCwgODMwMTUsIDgzMDIwLCA4MzAyNywgODMwMzQsIDgzMDQwLCA4MzA0NiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgODMwNTEsIDgzMDYxLCA4MzA3MSwgODMwODEsIDgzMDkwLCA4MzEwMSwgODMxMTAsIDgzMTE5LCAKLSAgICA4MzEyOSwgODMxMzksIDgzMTUxLCA4MzE2MywgODMxNzQsIDgzMTg1LCA4MzE5NiwgODMyMDcsIDgzMjE3LCA4MzIyNywgCi0gICAgODMyMzcsIDgzMjQ3LCA4MzI1OCwgODMyNjksIDgzMjczLCA4MzI3OCwgODMyODcsIDgzMjk2LCA4MzMwMCwgODMzMDQsIAotICAgIDgzMzA4LCA4MzMxMywgODMzMTgsIDgzMzIzLCA4MzMyOCwgODMzMzEsIDgzMzM1LCAwLCA4MzM0MCwgODMzNDMsIDgzMzQ2LCAKLSAgICA4MzM1MCwgODMzNTQsIDgzMzU5LCA4MzM2MywgODMzNjcsIDgzMzcyLCA4MzM3NywgODMzODQsIDgzMzkxLCA4MzM5NCwgCi0gICAgODMzOTcsIDgzNDAwLCA4MzQwMywgODM0MDYsIDgzNDEwLCA4MzQxNCwgMCwgODM0MTgsIDgzNDIzLCA4MzQyNywgODM0MzEsIAotICAgIDAsIDAsIDAsIDAsIDgzNDM2LCA4MzQ0MSwgODM0NDgsIDgzNDUzLCA4MzQ1OCwgMCwgODM0NjMsIDgzNDY4LCA4MzQ3MywgCi0gICAgODM0NzgsIDgzNDgzLCA4MzQ4OCwgODM0OTMsIDgzNDk4LCA4MzUwMywgODM1MDgsIDgzNTEzLCA4MzUxOCwgODM1MjcsIAotICAgIDgzNTM2LCA4MzU0NCwgODM1NTIsIDgzNTYxLCA4MzU3MCwgODM1NzksIDgzNTg4LCA4MzU5NiwgODM2MDQsIDgzNjEyLCAKLSAgICA4MzYyMCwgODM2MjUsIDgzNjMwLCA4MzYzNiwgODM2NDIsIDgzNjQ4LCA4MzY1NCwgODM2NjIsIDgzNjcwLCA4MzY3NiwgCi0gICAgODM2ODIsIDgzNjg4LCA4MzY5NCwgODM3MDAsIDgzNzA2LCA4MzcxMiwgODM3MTgsIDgzNzIzLCA4MzcyOCwgODM3MzMsIAotICAgIDgzNzM4LCA4Mzc0MywgODM3NDgsIDgzNzUzLCA4Mzc1OCwgODM3NjQsIDgzNzcwLCA4Mzc3NiwgODM3ODIsIDgzNzg4LCAKLSAgICA4Mzc5NCwgODM4MDAsIDgzODA2LCA4MzgxMiwgODM4MTgsIDgzODI0LCA4MzgzMCwgODM4MzYsIDgzODQyLCA4Mzg0OCwgCi0gICAgODM4NTQsIDgzODYwLCA4Mzg2NiwgODM4NzIsIDgzODc4LCA4Mzg4NCwgODM4OTAsIDgzODk2LCA4MzkwMiwgODM5MDgsIAotICAgIDgzOTE0LCA4MzkyMCwgODM5MjYsIDgzOTMyLCA4MzkzOCwgODM5NDQsIDgzOTUwLCA4Mzk1NiwgODM5NjIsIDgzOTY4LCAKLSAgICA4Mzk3NCwgODM5ODAsIDgzOTg2LCA4Mzk5MiwgODM5OTgsIDg0MDA0LCA4NDAxMCwgODQwMTYsIDg0MDIyLCA4NDAyOCwgCi0gICAgODQwMzQsIDg0MDQwLCA4NDA0NiwgODQwNTIsIDg0MDU4LCA4NDA2NCwgODQwNzAsIDg0MDc2LCA4NDA4MiwgODQwODgsIAotICAgIDg0MDk0LCA4NDEwMCwgODQxMDYsIDg0MTEyLCA4NDExOCwgODQxMjMsIDg0MTI4LCA4NDEzMywgODQxMzgsIDg0MTQ0LCAKLSAgICA4NDE1MCwgODQxNTYsIDg0MTYyLCA4NDE2OCwgODQxNzQsIDg0MTgwLCA4NDE4NiwgODQxOTIsIDg0MTk4LCA4NDIwNCwgCi0gICAgODQyMTAsIDg0MjE1LCA4NDIyMCwgODQyMjUsIDg0MjMwLCA4NDI0MiwgODQyNTQsIDg0MjY1LCA4NDI3NiwgODQyODgsIAotICAgIDg0MzAwLCA4NDMwOCwgMCwgMCwgODQzMTYsIDAsIDg0MzI0LCA4NDMyOCwgODQzMzIsIDg0MzM1LCA4NDMzOSwgODQzNDMsIAotICAgIDg0MzQ2LCA4NDM0OSwgODQzNTMsIDg0MzU3LCA4NDM2MCwgODQzNjMsIDg0MzY2LCA4NDM2OSwgODQzNzQsIDg0Mzc3LCAKLSAgICA4NDM4MSwgODQzODQsIDg0Mzg3LCA4NDM5MCwgODQzOTMsIDg0Mzk2LCA4NDM5OSwgODQ0MDIsIDg0NDA1LCA4NDQwOCwgCi0gICAgODQ0MTEsIDg0NDE0LCA4NDQxOCwgODQ0MjIsIDg0NDI2LCA4NDQzMCwgODQ0MzUsIDg0NDQwLCA4NDQ0NiwgODQ0NTIsIAotICAgIDg0NDU4LCA4NDQ2MywgODQ0NjksIDg0NDc1LCA4NDQ4MSwgODQ0ODYsIDg0NDkyLCA4NDQ5OCwgODQ1MDMsIDg0NTA4LCAKLSAgICA4NDUxMywgODQ1MTgsIDg0NTI0LCA4NDUzMCwgODQ1MzUsIDg0NTQwLCA4NDU0NiwgODQ1NTEsIDg0NTU3LCA4NDU2MywgCi0gICAgODQ1NjksIDg0NTc1LCA4NDU4MSwgODQ1ODUsIDg0NTkwLCA4NDU5NCwgODQ1OTksIDg0NjAzLCA4NDYwOCwgODQ2MTMsIAotICAgIDg0NjE5LCA4NDYyNSwgODQ2MzEsIDg0NjM2LCA4NDY0MiwgODQ2NDgsIDg0NjU0LCA4NDY1OSwgODQ2NjUsIDg0NjcxLCAKLSAgICA4NDY3NiwgODQ2ODEsIDg0Njg2LCA4NDY5MSwgODQ2OTcsIDg0NzAzLCA4NDcwOCwgODQ3MTMsIDg0NzE5LCA4NDcyNCwgCi0gICAgODQ3MzAsIDg0NzM2LCA4NDc0MiwgODQ3NDgsIDg0NzU0LCA4NDc1OSwgODQ3NjMsIDg0NzY4LCA4NDc3MSwgODQ3NzYsIAotICAgIDg0NzgxLCA4NDc4NywgODQ3OTIsIDg0Nzk3LCA4NDgwMSwgODQ4MDcsIDg0ODEyLCA4NDgxNywgODQ4MjIsIDg0ODI3LCAKLSAgICA4NDgzMiwgODQ4MzcsIDg0ODQyLCA4NDg0OCwgODQ4NTQsIDg0ODYwLCA4NDg2OCwgODQ4NzIsIDg0ODc2LCA4NDg4MCwgCi0gICAgODQ4ODQsIDg0ODg4LCA4NDg5MiwgODQ4OTcsIDg0OTAyLCA4NDkwNywgODQ5MTIsIDg0OTE3LCA4NDkyMiwgODQ5MjcsIAotICAgIDg0OTMyLCA4NDkzNywgODQ5NDIsIDg0OTQ3LCA4NDk1MiwgODQ5NTcsIDg0OTYxLCA4NDk2NSwgODQ5NzAsIDg0OTc1LCAKLSAgICA4NDk4MCwgODQ5ODUsIDg0OTg5LCA4NDk5NCwgODQ5OTksIDg1MDA0LCA4NTAwOSwgODUwMTMsIDg1MDE4LCA4NTAyMywgCi0gICAgODUwMjgsIDg1MDMzLCA4NTAzNywgODUwNDIsIDg1MDQ3LCA4NTA1MSwgODUwNTYsIDg1MDYxLCA4NTA2NiwgODUwNzEsIAotICAgIDg1MDc2LCA4NTA4MCwgODUwODcsIDg1MDk0LCA4NTA5OCwgODUxMDMsIDg1MTA4LCA4NTExMywgODUxMTgsIDg1MTIzLCAKLSAgICA4NTEyOCwgODUxMzMsIDg1MTM4LCA4NTE0MywgODUxNDgsIDg1MTUzLCA4NTE1OCwgODUxNjMsIDg1MTY4LCA4NTE3MywgCi0gICAgODUxNzgsIDg1MTgzLCA4NTE4OCwgODUxOTMsIDg1MTk4LCA4NTIwMywgODUyMDgsIDg1MjEzLCA4NTIxOCwgODUyMjMsIAotICAgIDg1MjI4LCA4NTIzMywgODUyMzgsIDg1MjQzLCAwLCAwLCAwLCA4NTI0OCwgODUyNTIsIDg1MjU3LCA4NTI2MSwgODUyNjYsIAotICAgIDg1MjcxLCAwLCAwLCA4NTI3NSwgODUyODAsIDg1Mjg1LCA4NTI4OSwgODUyOTQsIDg1Mjk5LCAwLCAwLCA4NTMwNCwgCi0gICAgODUzMDksIDg1MzEzLCA4NTMxOCwgODUzMjMsIDg1MzI4LCAwLCAwLCA4NTMzMywgODUzMzgsIDg1MzQzLCAwLCAwLCAwLCAKLSAgICA4NTM0NywgODUzNTEsIDg1MzU1LCA4NTM1OSwgODUzNjIsIDg1MzY2LCA4NTM3MCwgMCwgODUzNzQsIDg1MzgwLCA4NTM4MywgCi0gICAgODUzODcsIDg1MzkwLCA4NTM5NCwgODUzOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg1NDAyLCA4NTQwOCwgCi0gICAgODU0MTQsIDg1NDIwLCA4NTQyNiwgMCwgMCwgODU0MzAsIDg1NDM2LCA4NTQ0MiwgODU0NDgsIDg1NDU0LCA4NTQ2MCwgCi0gICAgODU0NjcsIDg1NDc0LCA4NTQ4MSwgODU0ODgsIDg1NDk1LCA4NTUwMiwgMCwgODU1MDksIDg1NTE2LCA4NTUyMywgODU1MjksIAotICAgIDg1NTM2LCA4NTU0MywgODU1NTAsIDg1NTU3LCA4NTU2MywgODU1NzAsIDg1NTc3LCA4NTU4NCwgODU1OTEsIDg1NTk3LCAKLSAgICA4NTYwNCwgODU2MTEsIDg1NjE4LCA4NTYyNSwgODU2MzEsIDg1NjM4LCA4NTY0NSwgODU2NTIsIDg1NjU5LCA4NTY2NiwgCi0gICAgODU2NzMsIDg1NjgwLCAwLCA4NTY4NywgODU2OTMsIDg1NzAwLCA4NTcwNywgODU3MTQsIDg1NzIxLCA4NTcyOCwgODU3MzUsIAotICAgIDg1NzQyLCA4NTc0OSwgODU3NTYsIDg1NzYzLCA4NTc3MCwgODU3NzcsIDg1NzgzLCA4NTc5MCwgODU3OTcsIDg1ODA0LCAKLSAgICA4NTgxMSwgMCwgODU4MTgsIDg1ODI1LCAwLCA4NTgzMiwgODU4MzksIDg1ODQ2LCA4NTg1MywgODU4NjAsIDg1ODY3LCAKLSAgICA4NTg3NCwgODU4ODEsIDg1ODg4LCA4NTg5NSwgODU5MDIsIDg1OTA5LCA4NTkxNiwgODU5MjMsIDg1OTMwLCAwLCAwLCAKLSAgICA4NTkzNiwgODU5NDEsIDg1OTQ2LCA4NTk1MSwgODU5NTYsIDg1OTYxLCA4NTk2NiwgODU5NzEsIDg1OTc2LCA4NTk4MSwgCi0gICAgODU5ODYsIDg1OTkxLCA4NTk5NiwgODYwMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2MDA2LCA4NjAxMywgCi0gICAgODYwMjAsIDg2MDI3LCA4NjAzNCwgODYwNDEsIDg2MDQ4LCA4NjA1NSwgODYwNjIsIDg2MDY5LCA4NjA3NiwgODYwODMsIAotICAgIDg2MDkwLCA4NjA5NywgODYxMDQsIDg2MTExLCA4NjExOCwgODYxMjUsIDg2MTMyLCA4NjEzOSwgODYxNDcsIDg2MTU1LCAKLSAgICA4NjE2MiwgODYxNjksIDg2MTc0LCA4NjE4MiwgODYxOTAsIDg2MTk3LCA4NjIwNCwgODYyMDksIDg2MjE2LCA4NjIyMSwgCi0gICAgODYyMjYsIDg2MjMzLCA4NjIzOCwgODYyNDMsIDg2MjQ4LCA4NjI1NiwgODYyNjEsIDg2MjY2LCA4NjI3MywgODYyNzgsIAotICAgIDg2MjgzLCA4NjI5MCwgODYyOTcsIDg2MzAyLCA4NjMwNywgODYzMTIsIDg2MzE3LCA4NjMyMiwgODYzMjcsIDg2MzMyLCAKLSAgICA4NjMzNywgODYzNDIsIDg2MzQ5LCA4NjM1NCwgODYzNjEsIDg2MzY2LCA4NjM3MSwgODYzNzYsIDg2MzgxLCA4NjM4NiwgCi0gICAgODYzOTEsIDg2Mzk2LCA4NjQwMSwgODY0MDYsIDg2NDExLCA4NjQxNiwgODY0MjMsIDg2NDMwLCA4NjQzNywgODY0NDQsIAotICAgIDg2NDUwLCA4NjQ1NSwgODY0NjIsIDg2NDY3LCA4NjQ3MiwgODY0ODEsIDg2NDg4LCA4NjQ5NywgODY1MDQsIDg2NTA5LCAKLSAgICA4NjUxNCwgODY1MjIsIDg2NTI3LCA4NjUzMiwgODY1MzcsIDg2NTQyLCA4NjU0NywgODY1NTQsIDg2NTU5LCA4NjU2NCwgCi0gICAgODY1NjksIDg2NTc0LCA4NjU3OSwgODY1ODYsIDg2NTkzLCA4NjYwMCwgODY2MDcsIDg2NjE0LCA4NjYyMSwgODY2MjgsIAotICAgIDg2NjM1LCA4NjY0MiwgODY2NDksIDg2NjU2LCA4NjY2MywgODY2NzAsIDg2Njc3LCA4NjY4NCwgODY2OTEsIDg2Njk4LCAKLSAgICA4NjcwNSwgODY3MTIsIDg2NzE5LCA4NjcyNiwgODY3MzMsIDg2NzQwLCA4Njc0NywgODY3NTQsIDg2NzYxLCA4Njc2OCwgCi0gICAgODY3NzUsIDAsIDAsIDAsIDAsIDAsIDg2NzgyLCA4Njc5MCwgODY3OTgsIDAsIDAsIDAsIDAsIDg2ODAzLCA4NjgwNywgCi0gICAgODY4MTEsIDg2ODE1LCA4NjgxOSwgODY4MjMsIDg2ODI3LCA4NjgzMSwgODY4MzUsIDg2ODM5LCA4Njg0NCwgODY4NDksIAotICAgIDg2ODU0LCA4Njg1OSwgODY4NjQsIDg2ODY5LCA4Njg3NCwgODY4NzksIDg2ODg0LCA4Njg5MCwgODY4OTYsIDg2OTAyLCAKLSAgICA4NjkwOSwgODY5MTYsIDg2OTIzLCA4NjkzMCwgODY5MzcsIDg2OTQ0LCA4Njk1MCwgODY5NTYsIDg2OTYyLCA4Njk2OSwgCi0gICAgODY5NzYsIDg2OTgzLCA4Njk5MCwgODY5OTcsIDg3MDA0LCA4NzAxMSwgODcwMTgsIDg3MDI1LCA4NzAzMiwgODcwMzksIAotICAgIDg3MDQ2LCA4NzA1MywgODcwNjAsIDAsIDAsIDAsIDg3MDY3LCA4NzA3NSwgODcwODMsIDg3MDkxLCA4NzA5OSwgODcxMDcsIAotICAgIDg3MTE3LCA4NzEyNywgODcxMzUsIDg3MTQzLCA4NzE1MSwgODcxNTksIDg3MTY3LCA4NzE3MywgODcxODAsIDg3MTg5LCAKLSAgICA4NzE5OCwgODcyMDcsIDg3MjE2LCA4NzIyNSwgODcyMzQsIDg3MjQ0LCA4NzI1NSwgODcyNjUsIDg3Mjc2LCA4NzI4NSwgCi0gICAgODcyOTQsIDg3MzAzLCA4NzMxMywgODczMjQsIDg3MzM0LCA4NzM0NSwgODczNTYsIDg3MzY1LCA4NzM3MywgODczNzksIAotICAgIDg3Mzg1LCA4NzM5MSwgODczOTcsIDg3NDA1LCA4NzQxMywgODc0MTksIDg3NDI2LCA4NzQzNiwgODc0NDMsIDg3NDUwLCAKLSAgICA4NzQ1NywgODc0NjQsIDg3NDcxLCA4NzQ4MSwgODc0ODgsIDg3NDk1LCA4NzUwMywgODc1MTEsIDg3NTIwLCA4NzUyOSwgCi0gICAgODc1MzgsIDg3NTQ3LCA4NzU1NiwgODc1NjQsIDg3NTczLCA4NzU4MiwgODc1OTEsIDg3NTk1LCA4NzYwMiwgODc2MDcsIAotICAgIDg3NjEyLCA4NzYxNiwgODc2MjAsIDg3NjI0LCA4NzYyOCwgODc2MzMsIDg3NjM4LCA4NzY0NCwgODc2NTAsIDg3NjU0LCAKLSAgICA4NzY2MCwgODc2NjQsIDg3NjY4LCA4NzY3MiwgODc2NzYsIDg3NjgwLCA4NzY4NCwgODc2OTAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDg3Njk0LCA4NzY5OSwgODc3MDQsIDg3NzA5LCA4NzcxNCwgODc3MjEsIDg3NzI2LCA4NzczMSwgODc3MzYsIDg3NzQxLCAKLSAgICA4Nzc0NiwgODc3NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4NzA4LCA4ODcxNSwgODg3MjQsIDg4NzMzLCA4ODc0MCwgODg3NDcsIDg4NzU0LCAKKyAgICA4ODc2MSwgODg3NjgsIDg4Nzc1LCA4ODc4MSwgODg3ODgsIDg4Nzk1LCA4ODgwMiwgODg4MDksIDg4ODE2LCA4ODgyMywgCisgICAgODg4MzAsIDg4ODM3LCA4ODg0NiwgODg4NTMsIDg4ODYwLCA4ODg2NywgODg4NzQsIDg4ODgxLCA4ODg4OCwgODg4OTUsIAorICAgIDg4OTAyLCA4ODkxMSwgODg5MTgsIDg4OTI1LCA4ODkzMiwgODg5MzksIDg4OTQ2LCA4ODk1MywgODg5NjIsIDg4OTY5LCAKKyAgICA4ODk3NiwgODg5ODMsIDg4OTkwLCA4ODk5OSwgODkwMDYsIDg5MDEzLCA4OTAyMCwgODkwMjgsIDg5MDM3LCAwLCAwLCAKKyAgICA4OTA0NiwgODkwNTAsIDg5MDU0LCA4OTA1OSwgODkwNjQsIDg5MDY5LCA4OTA3NCwgODkwNzgsIDg5MDgzLCA4OTA4OCwgCisgICAgODkwOTMsIDg5MDk4LCA4OTEwMywgODkxMDgsIDg5MTEyLCA4OTExNiwgODkxMjEsIDg5MTI2LCA4OTEzMSwgODkxMzUsIAorICAgIDg5MTQwLCA4OTE0NSwgODkxNDksIDg5MTU0LCA4OTE1OSwgODkxNjQsIDg5MTY5LCA4OTE3NCwgODkxNzksIDAsIDAsIDAsIAorICAgIDg5MTg0LCA4OTE4OCwgODkxOTMsIDg5MTk4LCA4OTIwMiwgODkyMDcsIDg5MjExLCA4OTIxNiwgODkyMjEsIDg5MjI2LCAKKyAgICA4OTIzMSwgODkyMzUsIDg5MjM5LCA4OTI0NCwgODkyNDksIDg5MjU0LCA4OTI1OSwgODkyNjQsIDg5MjY5LCA4OTI3MywgCisgICAgODkyNzgsIDg5MjgzLCA4OTI4OCwgODkyOTMsIDg5Mjk4LCA4OTMwMywgODkzMDcsIDg5MzExLCA4OTMxNiwgODkzMjEsIAorICAgIDg5MzI2LCA4OTMzMSwgODkzMzYsIDg5MzQxLCA4OTM0NiwgODkzNTEsIDg5MzU2LCA4OTM2MSwgODkzNjYsIDg5MzcxLCAKKyAgICA4OTM3NiwgODkzODEsIDg5Mzg2LCA4OTM5MSwgODkzOTYsIDg5NDAxLCA4OTQwNiwgODk0MTEsIDg5NDE2LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4Nzc1NiwgODc3NjMsIDg3NzcyLCA4Nzc4MSwgODc3ODgsIDg3Nzk1LCA4NzgwMiwgCi0gICAgODc4MDksIDg3ODE2LCA4NzgyMywgODc4MjksIDg3ODM2LCA4Nzg0MywgODc4NTAsIDg3ODU3LCA4Nzg2NCwgODc4NzEsIAotICAgIDg3ODc4LCA4Nzg4NSwgODc4OTQsIDg3OTAxLCA4NzkwOCwgODc5MTUsIDg3OTIyLCA4NzkyOSwgODc5MzYsIDg3OTQzLCAKLSAgICA4Nzk1MCwgODc5NTksIDg3OTY2LCA4Nzk3MywgODc5ODAsIDg3OTg3LCA4Nzk5NCwgODgwMDEsIDg4MDEwLCA4ODAxNywgCi0gICAgODgwMjQsIDg4MDMxLCA4ODAzOCwgODgwNDcsIDg4MDU0LCA4ODA2MSwgODgwNjgsIDg4MDc2LCA4ODA4NSwgMCwgMCwgCi0gICAgODgwOTQsIDg4MDk4LCA4ODEwMiwgODgxMDcsIDg4MTEyLCA4ODExNywgODgxMjIsIDg4MTI2LCA4ODEzMSwgODgxMzYsIAotICAgIDg4MTQxLCA4ODE0NiwgODgxNTEsIDg4MTU2LCA4ODE2MCwgODgxNjQsIDg4MTY4LCA4ODE3MywgODgxNzgsIDg4MTgyLCAKLSAgICA4ODE4NywgODgxOTIsIDg4MTk2LCA4ODIwMCwgODgyMDUsIDg4MjEwLCA4ODIxNSwgODgyMjAsIDg4MjI1LCAwLCAwLCAwLCAKLSAgICA4ODIzMCwgODgyMzQsIDg4MjM5LCA4ODI0NCwgODgyNDgsIDg4MjUzLCA4ODI1NywgODgyNjIsIDg4MjY3LCA4ODI3MiwgCi0gICAgODgyNzcsIDg4MjgxLCA4ODI4NSwgODgyOTAsIDg4Mjk1LCA4ODMwMCwgODgzMDUsIDg4MzA5LCA4ODMxNCwgODgzMTgsIAotICAgIDg4MzIzLCA4ODMyOCwgODgzMzIsIDg4MzM3LCA4ODM0MiwgODgzNDcsIDg4MzUxLCA4ODM1NSwgODgzNjAsIDg4MzY1LCAKLSAgICA4ODM3MCwgODgzNzUsIDg4MzgwLCA4ODM4NSwgODgzOTAsIDg4Mzk1LCA4ODQwMCwgODg0MDUsIDg4NDEwLCA4ODQxNSwgCi0gICAgODg0MjAsIDg4NDI1LCA4ODQzMCwgODg0MzUsIDg4NDQwLCA4ODQ0NSwgODg0NTAsIDg4NDU1LCA4ODQ2MCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODk0MjEsIDg5NDI1LCAKKyAgICA4OTQzMCwgODk0MzUsIDg5NDQwLCA4OTQ0NCwgODk0NDksIDg5NDU0LCA4OTQ1OSwgODk0NjQsIDg5NDY4LCA4OTQ3MiwgCisgICAgODk0NzcsIDg5NDgyLCA4OTQ4NywgODk0OTIsIDg5NDk2LCA4OTUwMSwgODk1MDYsIDg5NTExLCA4OTUxNiwgODk1MjEsIAorICAgIDg5NTI2LCA4OTUzMCwgODk1MzUsIDg5NTQwLCA4OTU0NSwgODk1NTAsIDg5NTU1LCA4OTU2MCwgODk1NjUsIDAsIDg5NTcwLCAKKyAgICA4OTU3NSwgODk1ODAsIDg5NTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4OTU5MiwgODk1OTcsIAorICAgIDg5NjAyLCA4OTYwNywgODk2MTIsIDg5NjE3LCA4OTYyMiwgODk2MjcsIDg5NjMyLCA4OTYzNywgODk2NDIsIDg5NjQ3LCAKKyAgICA4OTY1MiwgODk2NTcsIDg5NjYyLCA4OTY2NywgODk2NzIsIDg5Njc3LCA4OTY4MiwgODk2ODcsIDg5NjkyLCA4OTY5NywgCisgICAgODk3MDIsIDg5NzA3LCA4OTcxMiwgODk3MTcsIDg5NzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODQ2NSwgODg0NjksIAotICAgIDg4NDc0LCA4ODQ3OSwgODg0ODQsIDg4NDg4LCA4ODQ5MywgODg0OTgsIDg4NTAzLCA4ODUwOCwgODg1MTIsIDg4NTE2LCAKLSAgICA4ODUyMSwgODg1MjYsIDg4NTMxLCA4ODUzNiwgODg1NDAsIDg4NTQ1LCA4ODU1MCwgODg1NTUsIDg4NTYwLCA4ODU2NSwgCi0gICAgODg1NzAsIDg4NTc0LCA4ODU3OSwgODg1ODQsIDg4NTg5LCA4ODU5NCwgODg1OTksIDg4NjA0LCA4ODYwOSwgMCwgODg2MTQsIAotICAgIDg4NjE5LCA4ODYyNCwgODg2MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4NjM2LCA4ODY0MSwgCi0gICAgODg2NDYsIDg4NjUxLCA4ODY1NiwgODg2NjEsIDg4NjY2LCA4ODY3MSwgODg2NzYsIDg4NjgxLCA4ODY4NiwgODg2OTEsIAotICAgIDg4Njk2LCA4ODcwMSwgODg3MDYsIDg4NzExLCA4ODcxNiwgODg3MjEsIDg4NzI2LCA4ODczMSwgODg3MzYsIDg4NzQxLCAKLSAgICA4ODc0NiwgODg3NTEsIDg4NzU2LCA4ODc2MSwgODg3NjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg5NzI5LCA4OTczNCwgODk3MzksIAorICAgIDg5NzQ0LCA4OTc0OSwgODk3NTQsIDg5NzU5LCA4OTc2NCwgODk3NjksIDg5Nzc0LCA4OTc3OSwgODk3ODQsIDg5Nzg5LCAKKyAgICA4OTc5NCwgODk3OTksIDg5ODA0LCA4OTgwOSwgODk4MTQsIDg5ODE5LCA4OTgyNCwgODk4MjksIDg5ODM0LCA4OTgzOSwgCisgICAgODk4NDQsIDg5ODQ5LCA4OTg1NCwgODk4NTksIDg5ODYzLCA4OTg2NywgODk4NzEsIDAsIDg5ODc2LCA4OTg4MiwgODk4ODcsIAorICAgIDg5ODkyLCA4OTg5NywgODk5MDIsIDg5OTA4LCA4OTkxNCwgODk5MjAsIDg5OTI2LCA4OTkzMiwgODk5MzgsIDg5OTQ0LCAKKyAgICA4OTk1MCwgODk5NTYsIDg5OTYyLCA4OTk2OCwgODk5NzQsIDg5OTgwLCA4OTk4NSwgODk5OTEsIDg5OTk3LCA5MDAwMiwgCisgICAgOTAwMDgsIDkwMDEzLCA5MDAxOSwgOTAwMjUsIDkwMDMwLCA5MDAzNiwgOTAwNDIsIDkwMDQ3LCA5MDA1MywgOTAwNTksIAorICAgIDkwMDY0LCA5MDA3MCwgOTAwNzYsIDkwMDgyLCAwLCAwLCAwLCAwLCA5MDA4NywgOTAwOTMsIDkwMDk5LCA5MDEwNSwgCisgICAgOTAxMTEsIDkwMTE3LCA5MDEyMywgOTAxMjksIDkwMTM1LCA5MDE0MiwgOTAxNDcsIDkwMTUyLCA5MDE1OCwgOTAxNjQsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4NzczLCA4ODc3OCwgODg3ODMsIAotICAgIDg4Nzg4LCA4ODc5MywgODg3OTgsIDg4ODAzLCA4ODgwOCwgODg4MTMsIDg4ODE4LCA4ODgyMywgODg4MjgsIDg4ODMzLCAKLSAgICA4ODgzOCwgODg4NDMsIDg4ODQ4LCA4ODg1MywgODg4NTgsIDg4ODYzLCA4ODg2OCwgODg4NzMsIDg4ODc4LCA4ODg4MywgCi0gICAgODg4ODgsIDg4ODkzLCA4ODg5OCwgODg5MDMsIDg4OTA3LCA4ODkxMSwgODg5MTUsIDAsIDg4OTIwLCA4ODkyNiwgODg5MzEsIAotICAgIDg4OTM2LCA4ODk0MSwgODg5NDYsIDg4OTUyLCA4ODk1OCwgODg5NjQsIDg4OTcwLCA4ODk3NiwgODg5ODIsIDg4OTg4LCAKLSAgICA4ODk5NCwgODkwMDAsIDg5MDA2LCA4OTAxMiwgODkwMTgsIDg5MDI0LCA4OTAyOSwgODkwMzUsIDg5MDQxLCA4OTA0NiwgCi0gICAgODkwNTIsIDg5MDU3LCA4OTA2MywgODkwNjksIDg5MDc0LCA4OTA4MCwgODkwODYsIDg5MDkxLCA4OTA5NywgODkxMDMsIAotICAgIDg5MTA5LCA4OTExNSwgODkxMjEsIDg5MTI3LCAwLCAwLCAwLCAwLCA4OTEzMiwgODkxMzgsIDg5MTQ0LCA4OTE1MCwgCi0gICAgODkxNTYsIDg5MTYyLCA4OTE2OCwgODkxNzQsIDg5MTgwLCA4OTE4NywgODkxOTIsIDg5MTk3LCA4OTIwMywgODkyMDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg5MjE1LCA4OTIyMCwgODkyMjUsIAotICAgIDg5MjMwLCA4OTIzNiwgODkyNDEsIDg5MjQ3LCA4OTI1MywgODkyNTksIDg5MjY1LCA4OTI3MiwgODkyNzgsIDg5Mjg1LCAKLSAgICA4OTI5MCwgODkyOTUsIDg5MzAwLCA4OTMwNSwgODkzMTAsIDg5MzE1LCA4OTMyMCwgODkzMjUsIDg5MzMwLCA4OTMzNSwgCi0gICAgODkzNDAsIDg5MzQ1LCA4OTM1MCwgODkzNTUsIDg5MzYwLCA4OTM2NSwgODkzNzAsIDg5Mzc1LCA4OTM4MCwgODkzODUsIAotICAgIDg5MzkwLCA4OTM5NSwgODk0MDAsIDg5NDA1LCA4OTQxMCwgODk0MTUsIDg5NDIwLCA4OTQyNSwgODk0MzAsIDg5NDM1LCAKLSAgICA4OTQ0MCwgODk0NDYsIDg5NDUxLCA4OTQ1NywgODk0NjMsIDg5NDY5LCA4OTQ3NSwgODk0ODIsIDg5NDg4LCA4OTQ5NSwgCi0gICAgODk1MDAsIDg5NTA1LCA4OTUxMCwgODk1MTUsIDg5NTIwLCA4OTUyNSwgODk1MzAsIDg5NTM1LCA4OTU0MCwgODk1NDUsIAotICAgIDg5NTUwLCA4OTU1NSwgODk1NjAsIDg5NTY1LCA4OTU3MCwgODk1NzUsIDg5NTgwLCA4OTU4NSwgODk1OTAsIDg5NTk1LCAKLSAgICA4OTYwMCwgODk2MDUsIDg5NjEwLCA4OTYxNSwgODk2MjAsIDg5NjI1LCA4OTYzMCwgODk2MzUsIDg5NjQwLCA4OTY0NSwgCi0gICAgODk2NTAsIDg5NjU1LCA4OTY2MCwgODk2NjUsIDg5NjcwLCA4OTY3NSwgODk2ODAsIDg5Njg1LCA4OTY5MCwgODk2OTUsIAotICAgIDg5NzAwLCA4OTcwNSwgODk3MTAsIDg5NzE1LCA4OTcyMCwgODk3MjUsIDg5NzMwLCA4OTczNSwgODk3NDAsIDg5NzQ1LCAKLSAgICA4OTc1MCwgODk3NTUsIDg5NzYwLCA4OTc2NSwgODk3NzAsIDg5Nzc1LCA4OTc4MCwgODk3ODUsIDg5NzkwLCA4OTc5NSwgCi0gICAgODk4MDAsIDg5ODA1LCA4OTgxMCwgODk4MTUsIDg5ODIwLCA4OTgyNSwgODk4MzAsIDg5ODM1LCA4OTg0MCwgODk4NDUsIAotICAgIDg5ODUwLCA4OTg1NSwgODk4NjAsIDg5ODY1LCA4OTg3MCwgODk4NzUsIDg5ODgwLCA4OTg4NSwgODk4OTAsIDg5ODk1LCAKLSAgICA4OTkwMCwgODk5MDUsIDg5OTEwLCA4OTkxNCwgODk5MTksIDg5OTI0LCA4OTkyOSwgODk5MzQsIDg5OTM5LCA4OTk0NCwgCi0gICAgODk5NDksIDg5OTU0LCA4OTk1OSwgODk5NjQsIDg5OTY5LCA4OTk3NCwgODk5NzgsIDg5OTgyLCA4OTk4NiwgODk5OTAsIAotICAgIDg5OTk0LCA4OTk5OCwgOTAwMDIsIDkwMDA3LCA5MDAxMiwgMCwgMCwgOTAwMTcsIDkwMDIyLCA5MDAyNiwgOTAwMzAsIAotICAgIDkwMDM0LCA5MDAzOCwgOTAwNDIsIDkwMDQ2LCA5MDA1MCwgOTAwNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkwMTcwLCA5MDE3NSwgOTAxODAsIAorICAgIDkwMTg1LCA5MDE5MSwgOTAxOTYsIDkwMjAyLCA5MDIwOCwgOTAyMTQsIDkwMjIwLCA5MDIyNywgOTAyMzMsIDkwMjQwLCAKKyAgICA5MDI0NSwgOTAyNTAsIDkwMjU1LCA5MDI2MCwgOTAyNjUsIDkwMjcwLCA5MDI3NSwgOTAyODAsIDkwMjg1LCA5MDI5MCwgCisgICAgOTAyOTUsIDkwMzAwLCA5MDMwNSwgOTAzMTAsIDkwMzE1LCA5MDMyMCwgOTAzMjUsIDkwMzMwLCA5MDMzNSwgOTAzNDAsIAorICAgIDkwMzQ1LCA5MDM1MCwgOTAzNTUsIDkwMzYwLCA5MDM2NSwgOTAzNzAsIDkwMzc1LCA5MDM4MCwgOTAzODUsIDkwMzkwLCAKKyAgICA5MDM5NSwgOTA0MDEsIDkwNDA2LCA5MDQxMiwgOTA0MTgsIDkwNDI0LCA5MDQzMCwgOTA0MzcsIDkwNDQzLCA5MDQ1MCwgCisgICAgOTA0NTUsIDkwNDYwLCA5MDQ2NSwgOTA0NzAsIDkwNDc1LCA5MDQ4MCwgOTA0ODUsIDkwNDkwLCA5MDQ5NSwgOTA1MDAsIAorICAgIDkwNTA1LCA5MDUxMCwgOTA1MTUsIDkwNTIwLCA5MDUyNSwgOTA1MzAsIDkwNTM1LCA5MDU0MCwgOTA1NDUsIDkwNTUwLCAKKyAgICA5MDU1NSwgOTA1NjAsIDkwNTY1LCA5MDU3MCwgOTA1NzUsIDkwNTgwLCA5MDU4NSwgOTA1OTAsIDkwNTk1LCA5MDYwMCwgCisgICAgOTA2MDUsIDkwNjEwLCA5MDYxNSwgOTA2MjAsIDkwNjI1LCA5MDYzMCwgOTA2MzUsIDkwNjQwLCA5MDY0NSwgOTA2NTAsIAorICAgIDkwNjU1LCA5MDY2MCwgOTA2NjUsIDkwNjcwLCA5MDY3NSwgOTA2ODAsIDkwNjg1LCA5MDY5MCwgOTA2OTUsIDkwNzAwLCAKKyAgICA5MDcwNSwgOTA3MTAsIDkwNzE1LCA5MDcyMCwgOTA3MjUsIDkwNzMwLCA5MDczNSwgOTA3NDAsIDkwNzQ1LCA5MDc1MCwgCisgICAgOTA3NTUsIDkwNzYwLCA5MDc2NSwgOTA3NzAsIDkwNzc1LCA5MDc4MCwgOTA3ODUsIDkwNzkwLCA5MDc5NSwgOTA4MDAsIAorICAgIDkwODA1LCA5MDgxMCwgOTA4MTUsIDkwODIwLCA5MDgyNSwgOTA4MzAsIDkwODM1LCA5MDg0MCwgOTA4NDUsIDkwODUwLCAKKyAgICA5MDg1NSwgOTA4NjAsIDkwODY1LCA5MDg2OSwgOTA4NzMsIDkwODc4LCA5MDg4MywgOTA4ODgsIDkwODkzLCA5MDg5OCwgCisgICAgOTA5MDMsIDkwOTA4LCA5MDkxMywgOTA5MTgsIDkwOTIzLCA5MDkyOCwgOTA5MzIsIDkwOTM2LCA5MDk0MCwgOTA5NDQsIAorICAgIDkwOTQ4LCA5MDk1MiwgOTA5NTYsIDkwOTYxLCA5MDk2NiwgMCwgMCwgOTA5NzEsIDkwOTc2LCA5MDk4MCwgOTA5ODQsIAorICAgIDkwOTg4LCA5MDk5MiwgOTA5OTYsIDkxMDAwLCA5MTAwNCwgOTEwMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDkwMDU4LCA5MDA2MiwgOTAwNjYsIDkwMDcwLCA5MDA3NCwgOTAwNzgsIDAsIDAsIDkwMDgzLCAwLCAKLSAgICA5MDA4OCwgOTAwOTIsIDkwMDk3LCA5MDEwMiwgOTAxMDcsIDkwMTEyLCA5MDExNywgOTAxMjIsIDkwMTI3LCA5MDEzMiwgCi0gICAgOTAxMzcsIDkwMTQxLCA5MDE0NiwgOTAxNTEsIDkwMTU2LCA5MDE2MSwgOTAxNjUsIDkwMTcwLCA5MDE3NSwgOTAxODAsIAotICAgIDkwMTg1LCA5MDE4OSwgOTAxOTQsIDkwMTk5LCA5MDIwNCwgOTAyMDksIDkwMjEzLCA5MDIxOCwgOTAyMjMsIDkwMjI4LCAKLSAgICA5MDIzMywgOTAyMzgsIDkwMjQzLCA5MDI0OCwgOTAyNTMsIDkwMjU4LCA5MDI2MywgOTAyNjgsIDkwMjczLCA5MDI3NywgCi0gICAgOTAyODIsIDkwMjg3LCA5MDI5MiwgOTAyOTcsIDAsIDkwMzAyLCA5MDMwNywgMCwgMCwgMCwgOTAzMTIsIDAsIDAsIDkwMzE3LCAKLSAgICA5MDMyMiwgOTAzMjksIDkwMzM2LCA5MDM0MywgOTAzNTAsIDkwMzU3LCA5MDM2NCwgOTAzNzEsIDkwMzc4LCA5MDM4NSwgCi0gICAgOTAzOTIsIDkwMzk5LCA5MDQwNiwgOTA0MTMsIDkwNDIwLCA5MDQyNywgOTA0MzQsIDkwNDQxLCA5MDQ0OCwgOTA0NTUsIAotICAgIDkwNDYyLCA5MDQ2OSwgMCwgOTA0NzYsIDkwNDgzLCA5MDQ4OSwgOTA0OTUsIDkwNTAxLCA5MDUwOCwgOTA1MTUsIDkwNTIzLCAKLSAgICA5MDUzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTA1NDAsIDkwNTQ1LCA5MDU1MCwgOTA1NTUsIDkwNTYwLCA5MDU2NSwgCi0gICAgOTA1NzAsIDkwNTc1LCA5MDU4MCwgOTA1ODUsIDkwNTkwLCA5MDU5NSwgOTA2MDAsIDkwNjA1LCA5MDYxMCwgOTA2MTUsIAotICAgIDkwNjIwLCA5MDYyNSwgOTA2MzAsIDkwNjM1LCA5MDY0MCwgOTA2NDUsIDkwNjUwLCA5MDY1NCwgOTA2NTksIDkwNjY0LCAKLSAgICA5MDY3MCwgOTA2NzQsIDAsIDAsIDAsIDkwNjc4LCA5MDY4NCwgOTA2ODgsIDkwNjkzLCA5MDY5OCwgOTA3MDMsIDkwNzA3LCAKLSAgICA5MDcxMiwgOTA3MTYsIDkwNzIxLCA5MDcyNiwgOTA3MzAsIDkwNzM0LCA5MDczOCwgOTA3NDIsIDkwNzQ2LCA5MDc1MSwgCi0gICAgOTA3NTYsIDkwNzYwLCA5MDc2NSwgOTA3NzAsIDkwNzc0LCA5MDc3OSwgOTA3ODQsIDkwNzg5LCA5MDc5NCwgOTA3OTksIDAsIAotICAgIDAsIDAsIDAsIDAsIDkwODA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5MTAxMiwgOTEwMTYsIDkxMDIwLCA5MTAyNCwgOTEwMjgsIDkxMDMyLCAwLCAwLCA5MTAzNywgMCwgCisgICAgOTEwNDIsIDkxMDQ2LCA5MTA1MSwgOTEwNTYsIDkxMDYxLCA5MTA2NiwgOTEwNzEsIDkxMDc2LCA5MTA4MSwgOTEwODYsIAorICAgIDkxMDkxLCA5MTA5NSwgOTExMDAsIDkxMTA1LCA5MTExMCwgOTExMTUsIDkxMTE5LCA5MTEyNCwgOTExMjksIDkxMTM0LCAKKyAgICA5MTEzOSwgOTExNDMsIDkxMTQ4LCA5MTE1MywgOTExNTgsIDkxMTYzLCA5MTE2NywgOTExNzIsIDkxMTc3LCA5MTE4MiwgCisgICAgOTExODcsIDkxMTkxLCA5MTE5NiwgOTEyMDEsIDkxMjA2LCA5MTIxMSwgOTEyMTYsIDkxMjIxLCA5MTIyNiwgOTEyMzAsIAorICAgIDkxMjM1LCA5MTI0MCwgOTEyNDUsIDkxMjUwLCAwLCA5MTI1NSwgOTEyNjAsIDAsIDAsIDAsIDkxMjY1LCAwLCAwLCA5MTI3MCwgCisgICAgOTEyNzUsIDkxMjgyLCA5MTI4OSwgOTEyOTYsIDkxMzAzLCA5MTMxMCwgOTEzMTcsIDkxMzI0LCA5MTMzMSwgOTEzMzgsIAorICAgIDkxMzQ1LCA5MTM1MiwgOTEzNTksIDkxMzY2LCA5MTM3MywgOTEzODAsIDkxMzg3LCA5MTM5NCwgOTE0MDEsIDkxNDA4LCAKKyAgICA5MTQxNSwgOTE0MjIsIDAsIDkxNDI5LCA5MTQzNiwgOTE0NDIsIDkxNDQ4LCA5MTQ1NCwgOTE0NjEsIDkxNDY4LCA5MTQ3NiwgCisgICAgOTE0ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxNDkzLCA5MTQ5OCwgOTE1MDMsIDkxNTA4LCA5MTUxMywgOTE1MTgsIAorICAgIDkxNTIzLCA5MTUyOCwgOTE1MzMsIDkxNTM4LCA5MTU0MywgOTE1NDgsIDkxNTUzLCA5MTU1OCwgOTE1NjMsIDkxNTY4LCAKKyAgICA5MTU3MywgOTE1NzgsIDkxNTgzLCA5MTU4OCwgOTE1OTMsIDkxNTk4LCA5MTYwMywgOTE2MDcsIDkxNjEyLCA5MTYxNywgCisgICAgOTE2MjMsIDkxNjI3LCAwLCAwLCAwLCA5MTYzMSwgOTE2MzcsIDkxNjQxLCA5MTY0NiwgOTE2NTEsIDkxNjU2LCA5MTY2MCwgCisgICAgOTE2NjUsIDkxNjY5LCA5MTY3NCwgOTE2NzksIDkxNjgzLCA5MTY4NywgOTE2OTIsIDkxNjk2LCA5MTcwMCwgOTE3MDUsIAorICAgIDkxNzEwLCA5MTcxNCwgOTE3MTksIDkxNzI0LCA5MTcyOSwgOTE3MzQsIDkxNzM5LCA5MTc0NCwgOTE3NDksIDkxNzU0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5MTc1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTA4MDksIAotICAgIDkwODEzLCA5MDgxOCwgOTA4MjMsIDAsIDkwODI5LCA5MDgzNCwgMCwgMCwgMCwgMCwgMCwgOTA4MzksIDkwODQ1LCA5MDg1MiwgCi0gICAgOTA4NTcsIDkwODYyLCA5MDg2NiwgOTA4NzEsIDkwODc2LCAwLCA5MDg4MSwgOTA4ODYsIDkwODkxLCAwLCA5MDg5NiwgCi0gICAgOTA5MDEsIDkwOTA2LCA5MDkxMSwgOTA5MTYsIDkwOTIxLCA5MDkyNiwgOTA5MzEsIDkwOTM2LCA5MDk0MSwgOTA5NDYsIAotICAgIDkwOTUwLCA5MDk1NCwgOTA5NTksIDkwOTY0LCA5MDk2OSwgOTA5NzMsIDkwOTc3LCA5MDk4MSwgOTA5ODYsIDkwOTkxLCAKLSAgICA5MDk5NiwgOTEwMDEsIDkxMDA2LCA5MTAxMSwgOTEwMTUsIDkxMDIwLCAwLCAwLCAwLCAwLCA5MTAyNSwgOTEwMzEsIAotICAgIDkxMDM2LCAwLCAwLCAwLCAwLCA5MTA0MSwgOTEwNDUsIDkxMDQ5LCA5MTA1MywgOTEwNTcsIDkxMDYxLCA5MTA2NiwgCi0gICAgOTEwNzEsIDkxMDc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTA4MywgOTEwODksIDkxMDk2LCA5MTEwMiwgOTExMDksIAotICAgIDkxMTE1LCA5MTEyMSwgOTExMjcsIDkxMTM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTE0MCwgOTExNDgsIDkxMTU2LCAKLSAgICA5MTE2NCwgOTExNzIsIDkxMTgwLCA5MTE4OCwgOTExOTYsIDkxMjA0LCA5MTIxMiwgOTEyMjAsIDkxMjI4LCA5MTIzNiwgCi0gICAgOTEyNDQsIDkxMjUyLCA5MTI2MCwgOTEyNjgsIDkxMjc2LCA5MTI4NCwgOTEyOTIsIDkxMzAwLCA5MTMwOCwgOTEzMTYsIAotICAgIDkxMzI0LCA5MTMzMiwgOTEzNDAsIDkxMzQ4LCA5MTM1NiwgOTEzNjQsIDkxMzcyLCA5MTM3OSwgOTEzODcsIDkxMzk1LCAKLSAgICA5MTM5OSwgOTE0MDQsIDkxNDA5LCA5MTQxNCwgOTE0MTksIDkxNDI0LCA5MTQyOSwgOTE0MzQsIDkxNDM4LCA5MTQ0MywgCi0gICAgOTE0NDcsIDkxNDUyLCA5MTQ1NiwgOTE0NjEsIDkxNDY1LCA5MTQ3MCwgOTE0NzUsIDkxNDgwLCA5MTQ4NSwgOTE0OTAsIAotICAgIDkxNDk1LCA5MTUwMCwgOTE1MDUsIDkxNTEwLCA5MTUxNSwgOTE1MjAsIDkxNTI1LCA5MTUzMCwgOTE1MzUsIDkxNTQwLCAKLSAgICA5MTU0NSwgOTE1NTAsIDkxNTU1LCA5MTU2MCwgOTE1NjUsIDkxNTcwLCA5MTU3NSwgOTE1ODAsIDkxNTg1LCA5MTU5MCwgCi0gICAgOTE1OTUsIDkxNjAwLCA5MTYwNSwgOTE2MTAsIDkxNjE1LCA5MTYyMCwgOTE2MjUsIDkxNjMwLCA5MTYzNSwgOTE2NDAsIAotICAgIDkxNjQ1LCA5MTY1MCwgOTE2NTUsIDAsIDAsIDAsIDkxNjYwLCA5MTY2NSwgOTE2NzQsIDkxNjgyLCA5MTY5MSwgOTE3MDAsIAotICAgIDkxNzExLCA5MTcyMiwgOTE3MjksIDkxNzM2LCA5MTc0MywgOTE3NTAsIDkxNzU3LCA5MTc2NCwgOTE3NzEsIDkxNzc4LCAKLSAgICA5MTc4NSwgOTE3OTIsIDkxNzk5LCA5MTgwNiwgOTE4MTMsIDkxODIwLCA5MTgyNywgOTE4MzQsIDkxODQxLCA5MTg0OCwgCi0gICAgOTE4NTUsIDkxODYyLCA5MTg2OSwgMCwgMCwgOTE4NzYsIDkxODgyLCA5MTg4OCwgOTE4OTQsIDkxOTAwLCA5MTkwNywgCi0gICAgOTE5MTQsIDkxOTIyLCA5MTkzMCwgOTE5MzcsIDkxOTQ0LCA5MTk1MSwgOTE5NTgsIDkxOTY1LCA5MTk3MiwgOTE5NzksIAotICAgIDkxOTg2LCA5MTk5MywgOTIwMDAsIDkyMDA3LCA5MjAxNCwgOTIwMjEsIDkyMDI4LCA5MjAzNSwgOTIwNDIsIDkyMDQ5LCAKLSAgICA5MjA1NiwgMCwgMCwgMCwgMCwgMCwgOTIwNjMsIDkyMDY5LCA5MjA3NSwgOTIwODEsIDkyMDg3LCA5MjA5NCwgOTIxMDEsIAotICAgIDkyMTA5LCA5MjExNywgOTIxMjMsIDkyMTI5LCA5MjEzNiwgOTIxNDIsIDkyMTQ4LCA5MjE1NCwgOTIxNjAsIDkyMTY3LCAKLSAgICA5MjE3NCwgOTIxODEsIDkyMTg4LCA5MjE5NSwgOTIyMDIsIDkyMjA5LCA5MjIxNiwgOTIyMjMsIDkyMjMwLCA5MjIzNywgCi0gICAgOTIyNDQsIDkyMjUxLCA5MjI1OCwgOTIyNjUsIDkyMjcyLCA5MjI3OSwgOTIyODYsIDkyMjkzLCA5MjMwMCwgOTIzMDcsIAotICAgIDkyMzE0LCA5MjMyMSwgOTIzMjgsIDkyMzM1LCA5MjM0MiwgOTIzNDksIDkyMzU2LCA5MjM2MywgOTIzNzAsIDkyMzc3LCAKLSAgICA5MjM4NCwgOTIzOTEsIDkyMzk4LCA5MjQwNSwgOTI0MTIsIDkyNDE5LCA5MjQyNiwgOTI0MzMsIDkyNDQwLCA5MjQ0NywgCi0gICAgOTI0NTQsIDkyNDYxLCA5MjQ2OCwgOTI0NzUsIDkyNDgyLCA5MjQ4OSwgOTI0OTYsIDkyNTAzLCA5MjUxMCwgOTI1MTcsIAotICAgIDkyNTI0LCA5MjUzMSwgOTI1MzgsIDkyNTQ1LCA5MjU1MiwgOTI1NTksIDkyNTY2LCA5MjU3MywgOTI1ODAsIDkyNTg3LCAKLSAgICA5MjU5NCwgOTI2MDEsIDkyNjA4LCA5MjYxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTE3NjQsIAorICAgIDkxNzcwLCA5MTc3NiwgOTE3ODIsIDkxNzg4LCA5MTc5NCwgOTE4MDEsIDkxODA4LCA5MTgxNSwgOTE4MjEsIDkxODI3LCAKKyAgICA5MTgzMywgOTE4NDAsIDkxODQ3LCA5MTg1NCwgOTE4NjAsIDkxODY3LCA5MTg3NCwgOTE4ODEsIDkxODg4LCA5MTg5NCwgCisgICAgOTE5MDEsIDkxOTA4LCA5MTkxNCwgOTE5MjEsIDkxOTI4LCA5MTkzNSwgOTE5NDIsIDkxOTQ5LCA5MTk1NSwgOTE5NjIsIAorICAgIDkxOTY5LCA5MTk3NiwgOTE5ODIsIDkxOTg4LCA5MTk5NCwgOTIwMDAsIDkyMDA2LCA5MjAxMywgOTIwMjAsIDkyMDI2LCAKKyAgICA5MjAzMiwgOTIwMzgsIDkyMDQ1LCA5MjA1MSwgOTIwNTgsIDkyMDY1LCA5MjA3MiwgOTIwNzgsIDkyMDg2LCA5MjA5MywgCisgICAgOTIwOTksIDkyMTA2LCA5MjExMywgOTIxMjAsIDkyMTI2LCAwLCAwLCAwLCAwLCAwLCAwLCA5MjEzMywgOTIxNDEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkyMTQ5LCA5MjE1MywgOTIxNTgsIDkyMTYzLCAwLCAKKyAgICA5MjE2OSwgOTIxNzQsIDAsIDAsIDAsIDAsIDAsIDkyMTc5LCA5MjE4NSwgOTIxOTIsIDkyMTk3LCA5MjIwMiwgOTIyMDYsIAorICAgIDkyMjExLCA5MjIxNiwgMCwgOTIyMjEsIDkyMjI2LCA5MjIzMSwgMCwgOTIyMzYsIDkyMjQxLCA5MjI0NiwgOTIyNTEsIAorICAgIDkyMjU2LCA5MjI2MSwgOTIyNjYsIDkyMjcxLCA5MjI3NiwgOTIyODEsIDkyMjg2LCA5MjI5MCwgOTIyOTQsIDkyMjk5LCAKKyAgICA5MjMwNCwgOTIzMDksIDkyMzEzLCA5MjMxNywgOTIzMjEsIDkyMzI2LCA5MjMzMSwgOTIzMzYsIDkyMzQxLCA5MjM0NSwgCisgICAgOTIzNTAsIDkyMzU0LCA5MjM1OSwgMCwgMCwgMCwgMCwgOTIzNjQsIDkyMzcwLCA5MjM3NSwgMCwgMCwgMCwgMCwgOTIzODAsIAorICAgIDkyMzg0LCA5MjM4OCwgOTIzOTIsIDkyMzk2LCA5MjQwMCwgOTI0MDUsIDkyNDEwLCA5MjQxNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOTI0MjIsIDkyNDI4LCA5MjQzNSwgOTI0NDEsIDkyNDQ4LCA5MjQ1NCwgOTI0NjAsIDkyNDY2LCA5MjQ3MywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOTI0NzksIDkyNDg3LCA5MjQ5NSwgOTI1MDMsIDkyNTExLCA5MjUxOSwgOTI1MjcsIDkyNTM1LCAKKyAgICA5MjU0MywgOTI1NTEsIDkyNTU5LCA5MjU2NywgOTI1NzUsIDkyNTgzLCA5MjU5MSwgOTI1OTksIDkyNjA3LCA5MjYxNSwgCisgICAgOTI2MjMsIDkyNjMxLCA5MjYzOSwgOTI2NDcsIDkyNjU1LCA5MjY2MywgOTI2NzEsIDkyNjc5LCA5MjY4NywgOTI2OTUsIAorICAgIDkyNzAzLCA5MjcxMSwgOTI3MTgsIDkyNzI2LCA5MjczNCwgOTI3MzgsIDkyNzQzLCA5Mjc0OCwgOTI3NTMsIDkyNzU4LCAKKyAgICA5Mjc2MywgOTI3NjgsIDkyNzczLCA5Mjc3NywgOTI3ODIsIDkyNzg2LCA5Mjc5MSwgOTI3OTUsIDkyODAwLCA5MjgwNCwgCisgICAgOTI4MDksIDkyODE0LCA5MjgxOSwgOTI4MjQsIDkyODI5LCA5MjgzNCwgOTI4MzksIDkyODQ0LCA5Mjg0OSwgOTI4NTQsIAorICAgIDkyODU5LCA5Mjg2NCwgOTI4NjksIDkyODc0LCA5Mjg3OSwgOTI4ODQsIDkyODg5LCA5Mjg5NCwgOTI4OTksIDkyOTA0LCAKKyAgICA5MjkwOSwgOTI5MTQsIDkyOTE5LCA5MjkyNCwgOTI5MjksIDkyOTM0LCA5MjkzOSwgOTI5NDQsIDkyOTQ5LCA5Mjk1NCwgCisgICAgOTI5NTksIDkyOTY0LCA5Mjk2OSwgOTI5NzQsIDkyOTc5LCA5Mjk4NCwgOTI5ODksIDkyOTk0LCAwLCAwLCAwLCA5Mjk5OSwgCisgICAgOTMwMDQsIDkzMDEzLCA5MzAyMSwgOTMwMzAsIDkzMDM5LCA5MzA1MCwgOTMwNjEsIDkzMDY4LCA5MzA3NSwgOTMwODIsIAorICAgIDkzMDg5LCA5MzA5NiwgOTMxMDMsIDkzMTEwLCA5MzExNywgOTMxMjQsIDkzMTMxLCA5MzEzOCwgOTMxNDUsIDkzMTUyLCAKKyAgICA5MzE1OSwgOTMxNjYsIDkzMTczLCA5MzE4MCwgOTMxODcsIDkzMTk0LCA5MzIwMSwgOTMyMDgsIDAsIDAsIDkzMjE1LCAKKyAgICA5MzIyMSwgOTMyMjcsIDkzMjMzLCA5MzIzOSwgOTMyNDYsIDkzMjUzLCA5MzI2MSwgOTMyNjksIDkzMjc2LCA5MzI4MywgCisgICAgOTMyOTAsIDkzMjk3LCA5MzMwNCwgOTMzMTEsIDkzMzE4LCA5MzMyNSwgOTMzMzIsIDkzMzM5LCA5MzM0NiwgOTMzNTMsIAorICAgIDkzMzYwLCA5MzM2NywgOTMzNzQsIDkzMzgxLCA5MzM4OCwgOTMzOTUsIDAsIDAsIDAsIDAsIDAsIDkzNDAyLCA5MzQwOCwgCisgICAgOTM0MTQsIDkzNDIwLCA5MzQyNiwgOTM0MzMsIDkzNDQwLCA5MzQ0OCwgOTM0NTYsIDkzNDYyLCA5MzQ2OCwgOTM0NzUsIAorICAgIDkzNDgxLCA5MzQ4NywgOTM0OTMsIDkzNDk5LCA5MzUwNiwgOTM1MTMsIDkzNTIwLCA5MzUyNywgOTM1MzQsIDkzNTQxLCAKKyAgICA5MzU0OCwgOTM1NTUsIDkzNTYyLCA5MzU2OSwgOTM1NzYsIDkzNTgzLCA5MzU5MCwgOTM1OTcsIDkzNjA0LCA5MzYxMSwgCisgICAgOTM2MTgsIDkzNjI1LCA5MzYzMiwgOTM2MzksIDkzNjQ2LCA5MzY1MywgOTM2NjAsIDkzNjY3LCA5MzY3NCwgOTM2ODEsIAorICAgIDkzNjg4LCA5MzY5NSwgOTM3MDIsIDkzNzA5LCA5MzcxNiwgOTM3MjMsIDkzNzMwLCA5MzczNywgOTM3NDQsIDkzNzUxLCAKKyAgICA5Mzc1OCwgOTM3NjUsIDkzNzcyLCA5Mzc3OSwgOTM3ODYsIDkzNzkzLCA5MzgwMCwgOTM4MDcsIDkzODE0LCA5MzgyMSwgCisgICAgOTM4MjgsIDkzODM1LCA5Mzg0MiwgOTM4NDksIDkzODU2LCA5Mzg2MywgOTM4NzAsIDkzODc3LCA5Mzg4NCwgOTM4OTEsIAorICAgIDkzODk4LCA5MzkwNSwgOTM5MTIsIDkzOTE5LCA5MzkyNiwgOTM5MzMsIDkzOTQwLCA5Mzk0NywgOTM5NTQsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkyNjIyLCA5MjYyNiwgOTI2MzAsIAotICAgIDkyNjM0LCA5MjYzOCwgOTI2NDIsIDkyNjQ2LCA5MjY1MCwgOTI2NTQsIDkyNjU4LCA5MjY2MywgOTI2NjgsIDkyNjczLCAKLSAgICA5MjY3OCwgOTI2ODMsIDkyNjg4LCA5MjY5MywgOTI2OTgsIDkyNzAzLCA5MjcwOSwgOTI3MTUsIDkyNzIxLCA5MjcyOCwgCi0gICAgOTI3MzUsIDkyNzQyLCA5Mjc0OSwgOTI3NTYsIDkyNzYzLCA5Mjc3MCwgOTI3NzcsIDkyNzg0LCAwLCA5Mjc5MSwgOTI3OTUsIAotICAgIDkyNzk5LCA5MjgwMywgOTI4MDcsIDkyODExLCA5MjgxNCwgOTI4MTgsIDkyODIxLCA5MjgyNSwgOTI4MjgsIDkyODMyLCAKLSAgICA5MjgzNiwgOTI4NDEsIDkyODQ1LCA5Mjg1MCwgOTI4NTMsIDkyODU3LCA5Mjg2MCwgOTI4NjQsIDkyODY3LCA5Mjg3MSwgCi0gICAgOTI4NzUsIDkyODc5LCA5Mjg4MywgOTI4ODcsIDkyODkxLCA5Mjg5NSwgOTI4OTksIDkyOTAzLCA5MjkwNywgOTI5MTEsIAotICAgIDkyOTE1LCA5MjkxOSwgOTI5MjMsIDkyOTI3LCA5MjkzMSwgOTI5MzUsIDkyOTM5LCA5Mjk0MiwgOTI5NDUsIDkyOTQ5LCAKLSAgICA5Mjk1MywgOTI5NTcsIDkyOTYwLCA5Mjk2MywgOTI5NjYsIDkyOTcwLCA5Mjk3NCwgOTI5NzgsIDkyOTgyLCA5Mjk4NiwgCi0gICAgOTI5ODksIDkyOTkzLCA5Mjk5OSwgOTMwMDUsIDkzMDExLCA5MzAxNiwgOTMwMjMsIDkzMDI3LCA5MzAzMiwgOTMwMzYsIAotICAgIDkzMDQxLCA5MzA0NiwgOTMwNTIsIDkzMDU3LCA5MzA2MywgOTMwNjcsIDkzMDcyLCA5MzA3NiwgOTMwODEsIDkzMDg0LCAKLSAgICA5MzA4NywgOTMwOTEsIDkzMDk2LCA5MzEwMiwgOTMxMDcsIDkzMTEzLCAwLCAwLCAwLCAwLCA5MzExOCwgOTMxMjEsIAotICAgIDkzMTI0LCA5MzEyNywgOTMxMzAsIDkzMTMzLCA5MzEzNiwgOTMxMzksIDkzMTQyLCA5MzE0NSwgOTMxNDksIDkzMTUzLCAKLSAgICA5MzE1NywgOTMxNjEsIDkzMTY1LCA5MzE2OSwgOTMxNzMsIDkzMTc3LCA5MzE4MSwgOTMxODYsIDkzMTkxLCA5MzE5NSwgCi0gICAgOTMxOTgsIDkzMjAxLCA5MzIwNCwgOTMyMDcsIDkzMjEwLCA5MzIxMywgOTMyMTYsIDkzMjE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MzIyMiwgOTMyMjYsIDkzMjMwLCA5MzIzNCwgOTMyMzcsIDkzMjQxLCAKLSAgICA5MzI0NCwgOTMyNDgsIDkzMjUxLCA5MzI1NSwgOTMyNTgsIDkzMjYyLCA5MzI2NSwgOTMyNjksIDkzMjcyLCA5MzI3NiwgCi0gICAgOTMyODAsIDkzMjg0LCA5MzI4OCwgOTMyOTIsIDkzMjk2LCA5MzMwMCwgOTMzMDQsIDkzMzA4LCA5MzMxMiwgOTMzMTYsIAotICAgIDkzMzIwLCA5MzMyNCwgOTMzMjgsIDkzMzMyLCA5MzMzNiwgOTMzNDAsIDkzMzQ0LCA5MzM0OCwgOTMzNTIsIDkzMzU1LCAKLSAgICA5MzM1OCwgOTMzNjIsIDkzMzY2LCA5MzM3MCwgOTMzNzMsIDkzMzc2LCA5MzM3OSwgOTMzODMsIDkzMzg3LCA5MzM5MSwgCi0gICAgOTMzOTUsIDkzMzk5LCA5MzQwMiwgOTM0MDcsIDkzNDExLCA5MzQxNiwgOTM0MjAsIDkzNDI1LCA5MzQyOSwgOTM0MzQsIAotICAgIDkzNDM4LCA5MzQ0MywgOTM0NDcsIDkzNDUxLCA5MzQ1NSwgOTM0NTksIDkzNDYyLCA5MzQ2NiwgOTM0NzEsIDkzNDc0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5Mzk2MSwgOTM5NjUsIDkzOTY5LCA5Mzk3MywgOTM5NzcsIDkzOTgxLCA5Mzk4NSwgOTM5ODksIAorICAgIDkzOTkzLCA5Mzk5NywgOTQwMDIsIDk0MDA3LCA5NDAxMiwgOTQwMTcsIDk0MDIyLCA5NDAyNywgOTQwMzIsIDk0MDM3LCAKKyAgICA5NDA0MiwgOTQwNDgsIDk0MDU0LCA5NDA2MCwgOTQwNjcsIDk0MDc0LCA5NDA4MSwgOTQwODgsIDk0MDk1LCA5NDEwMiwgCisgICAgOTQxMDksIDk0MTE2LCA5NDEyMywgMCwgOTQxMzAsIDk0MTM0LCA5NDEzOCwgOTQxNDIsIDk0MTQ2LCA5NDE1MCwgOTQxNTMsIAorICAgIDk0MTU3LCA5NDE2MCwgOTQxNjQsIDk0MTY3LCA5NDE3MSwgOTQxNzUsIDk0MTgwLCA5NDE4NCwgOTQxODksIDk0MTkyLCAKKyAgICA5NDE5NiwgOTQxOTksIDk0MjAzLCA5NDIwNiwgOTQyMTAsIDk0MjE0LCA5NDIxOCwgOTQyMjIsIDk0MjI2LCA5NDIzMCwgCisgICAgOTQyMzQsIDk0MjM4LCA5NDI0MiwgOTQyNDYsIDk0MjUwLCA5NDI1NCwgOTQyNTgsIDk0MjYyLCA5NDI2NiwgOTQyNzAsIAorICAgIDk0Mjc0LCA5NDI3OCwgOTQyODEsIDk0Mjg0LCA5NDI4OCwgOTQyOTIsIDk0Mjk2LCA5NDI5OSwgOTQzMDIsIDk0MzA1LCAKKyAgICA5NDMwOSwgOTQzMTMsIDk0MzE3LCA5NDMyMSwgOTQzMjQsIDk0MzI3LCA5NDMzMSwgOTQzMzcsIDk0MzQzLCA5NDM0OSwgCisgICAgOTQzNTQsIDk0MzYxLCA5NDM2NSwgOTQzNzAsIDk0Mzc0LCA5NDM3OSwgOTQzODQsIDk0MzkwLCA5NDM5NSwgOTQ0MDEsIAorICAgIDk0NDA1LCA5NDQxMCwgOTQ0MTQsIDk0NDE5LCA5NDQyMiwgOTQ0MjUsIDk0NDI5LCA5NDQzNCwgOTQ0NDAsIDk0NDQ1LCAKKyAgICA5NDQ1MSwgMCwgMCwgMCwgMCwgOTQ0NTYsIDk0NDU5LCA5NDQ2MiwgOTQ0NjUsIDk0NDY4LCA5NDQ3MSwgOTQ0NzQsIAorICAgIDk0NDc3LCA5NDQ4MCwgOTQ0ODMsIDk0NDg3LCA5NDQ5MSwgOTQ0OTUsIDk0NDk5LCA5NDUwMywgOTQ1MDcsIDk0NTExLCAKKyAgICA5NDUxNSwgOTQ1MTksIDk0NTI0LCA5NDUyOSwgOTQ1MzMsIDk0NTM2LCA5NDUzOSwgOTQ1NDIsIDk0NTQ1LCA5NDU0OCwgCisgICAgOTQ1NTEsIDk0NTU0LCA5NDU1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOTQ1NjAsIDk0NTY1LCA5NDU3MCwgOTQ1NzUsIDk0NTc5LCA5NDU4NCwgOTQ1ODgsIDk0NTkzLCA5NDU5NywgOTQ2MDIsIAorICAgIDk0NjA2LCA5NDYxMSwgOTQ2MTUsIDk0NjIwLCA5NDYyNCwgOTQ2MjksIDk0NjM0LCA5NDYzOSwgOTQ2NDQsIDk0NjQ5LCAKKyAgICA5NDY1NCwgOTQ2NTksIDk0NjY0LCA5NDY2OSwgOTQ2NzQsIDk0Njc5LCA5NDY4NCwgOTQ2ODksIDk0Njk0LCA5NDY5OSwgCisgICAgOTQ3MDQsIDk0NzA5LCA5NDcxNCwgOTQ3MTksIDk0NzI0LCA5NDcyOCwgOTQ3MzIsIDk0NzM3LCA5NDc0MiwgOTQ3NDcsIAorICAgIDk0NzUxLCA5NDc1NSwgOTQ3NTksIDk0NzY0LCA5NDc2OSwgOTQ3NzQsIDk0Nzc5LCA5NDc4MywgOTQ3ODcsIDk0NzkzLCAKKyAgICA5NDc5OCwgOTQ4MDQsIDk0ODA5LCA5NDgxNSwgOTQ4MjAsIDk0ODI2LCA5NDgzMSwgOTQ4MzcsIDk0ODQyLCA5NDg0NywgCisgICAgOTQ4NTIsIDk0ODU3LCA5NDg2MSwgOTQ4NjYsIDk0ODcyLCA5NDg3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOTQ4ODEsIDk0ODg4LCA5NDg5NSwgOTQ5MDIsIDk0OTA5LCA5NDkxNiwgOTQ5MjMsIDk0OTMwLCAKKyAgICA5NDkzNywgOTQ5NDQsIDk0OTUxLCA5NDk1OCwgOTQ5NjUsIDk0OTcyLCA5NDk3OSwgOTQ5ODYsIDk0OTkzLCA5NTAwMCwgCisgICAgOTUwMDcsIDk1MDE0LCA5NTAyMSwgOTUwMjgsIDk1MDM1LCA5NTA0MiwgOTUwNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDk1MDU2LCA5NTA2MywgOTUwNjksIDk1MDc1LCA5NTA4MSwgOTUwODcsIDk1MDkzLCA5NTA5OSwgOTUxMDUsIDk1MTExLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5NTExNywgOTUxMjIsIDk1MTI3LCA5NTEzMiwgOTUxMzcsIDk1MTQxLCA5NTE0NSwgOTUxNDksIAorICAgIDk1MTU0LCA5NTE1OSwgOTUxNjQsIDk1MTY5LCA5NTE3NCwgOTUxNzksIDk1MTg0LCA5NTE4OSwgOTUxOTQsIDk1MTk5LCAKKyAgICA5NTIwNCwgOTUyMDksIDk1MjE0LCA5NTIxOSwgOTUyMjQsIDk1MjI5LCA5NTIzNCwgOTUyMzksIDk1MjQ0LCA5NTI0OSwgCisgICAgOTUyNTQsIDk1MjU5LCA5NTI2NCwgOTUyNjksIDk1Mjc0LCA5NTI3OSwgOTUyODQsIDk1Mjg5LCA5NTI5NCwgOTUyOTksIAorICAgIDk1MzA0LCA5NTMwOSwgOTUzMTQsIDk1MzE5LCA5NTMyNSwgOTUzMzAsIDk1MzM2LCA5NTM0MSwgOTUzNDcsIDk1MzUyLCAKKyAgICA5NTM1OCwgOTUzNjQsIDk1MzY4LCA5NTM3MywgOTUzNzcsIDAsIDk1MzgxLCA5NTM4NiwgOTUzOTAsIDk1Mzk0LCA5NTM5OCwgCisgICAgOTU0MDIsIDk1NDA2LCA5NTQxMCwgOTU0MTQsIDk1NDE4LCA5NTQyMiwgOTU0MjcsIDk1NDMxLCA5NTQzNiwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTM0NzgsIDkzNDgxLCA5MzQ4NiwgOTM0OTIsIDkzNTAwLCAKLSAgICA5MzUwNSwgOTM1MTEsIDkzNTE5LCA5MzUyNSwgOTM1MzEsIDkzNTM1LCA5MzUzOSwgOTM1NDYsIDkzNTU1LCA5MzU2MiwgCi0gICAgOTM1NzEsIDkzNTc3LCA5MzU4NiwgOTM1OTMsIDkzNjAwLCA5MzYwNywgOTM2MTcsIDkzNjIzLCA5MzYyNywgOTM2MzQsIAotICAgIDkzNjQzLCA5MzY1MywgOTM2NjAsIDkzNjY3LCA5MzY3MSwgOTM2NzUsIDkzNjgyLCA5MzY5MiwgOTM2OTYsIDkzNzAzLCAKLSAgICA5MzcxMCwgOTM3MTcsIDkzNzIzLCA5MzczMCwgOTM3MzcsIDkzNzQ0LCA5Mzc1MSwgOTM3NTUsIDkzNzU5LCA5Mzc2MywgCi0gICAgOTM3NzAsIDkzNzc0LCA5Mzc4MSwgOTM3ODgsIDkzODAyLCA5MzgxMSwgOTM4MTUsIDkzODE5LCA5MzgyMywgOTM4MzAsIAotICAgIDkzODM0LCA5MzgzOCwgOTM4NDIsIDkzODUwLCA5Mzg1OCwgOTM4NzcsIDkzODg3LCA5MzkwNywgOTM5MTEsIDkzOTE1LCAKLSAgICA5MzkxOSwgOTM5MjMsIDkzOTI3LCA5MzkzMSwgOTM5MzUsIDkzOTQyLCA5Mzk0NiwgOTM5NDksIDkzOTUzLCA5Mzk1NywgCi0gICAgOTM5NjMsIDkzOTcwLCA5Mzk3OSwgOTM5ODMsIDkzOTkyLCA5NDAwMSwgOTQwMDksIDk0MDEzLCA5NDAyMCwgOTQwMjQsIAotICAgIDk0MDI4LCA5NDAzMiwgOTQwMzYsIDk0MDQ3LCA5NDA1NiwgOTQwNjUsIDk0MDc0LCA5NDA4MywgOTQwOTUsIDk0MTA0LCAKLSAgICA5NDExMywgOTQxMjIsIDk0MTMwLCA5NDEzOSwgOTQxNTEsIDk0MTYwLCA5NDE2OSwgOTQxNzgsIDk0MTkwLCA5NDE5OSwgCi0gICAgOTQyMDgsIDk0MjIwLCA5NDIyOSwgOTQyMzgsIDk0MjUwLCA5NDI1OSwgOTQyNjMsIDk0MjY3LCA5NDI3MSwgOTQyNzUsIAotICAgIDk0Mjc5LCA5NDI4MywgOTQyODcsIDk0Mjk0LCA5NDI5OCwgOTQzMDIsIDk0MzEzLCA5NDMxNywgOTQzMjEsIDk0MzI4LCAKLSAgICA5NDMzNCwgOTQzNDAsIDk0MzQ0LCA5NDM1MSwgOTQzNTUsIDk0MzU5LCA5NDM2MywgOTQzNjcsIDk0MzcxLCA5NDM3NSwgCi0gICAgOTQzODEsIDk0Mzg5LCA5NDM5MywgOTQzOTcsIDk0NDAwLCA5NDQwNiwgOTQ0MTYsIDk0NDIwLCA5NDQzMiwgOTQ0MzksIAotICAgIDk0NDQ2LCA5NDQ1MywgOTQ0NjAsIDk0NDY2LCA5NDQ3MCwgOTQ0NzQsIDk0NDc4LCA5NDQ4MiwgOTQ0ODksIDk0NDk4LCAKLSAgICA5NDUwNSwgOTQ1MTMsIDk0NTIxLCA5NDUyNywgOTQ1MzEsIDk0NTM1LCA5NDUzOSwgOTQ1NDMsIDk0NTQ5LCA5NDU1OCwgCi0gICAgOTQ1NzAsIDk0NTc3LCA5NDU4NCwgOTQ1OTMsIDk0NjA0LCA5NDYxMCwgOTQ2MTksIDk0NjI4LCA5NDYzNSwgOTQ2NDQsIAotICAgIDk0NjUxLCA5NDY1OCwgOTQ2NjgsIDk0Njc1LCA5NDY4MiwgOTQ2ODksIDk0Njk2LCA5NDcwMCwgOTQ3MDYsIDk0NzEwLCAKLSAgICA5NDcyMSwgOTQ3MjksIDk0NzM4LCA5NDc1MCwgOTQ3NTcsIDk0NzY0LCA5NDc3NCwgOTQ3ODEsIDk0NzkwLCA5NDc5NywgCi0gICAgOTQ4MDYsIDk0ODEzLCA5NDgyMCwgOTQ4MzAsIDk0ODM3LCA5NDg0NCwgOTQ4NTQsIDk0ODYxLCA5NDg3MywgOTQ4ODIsIAotICAgIDk0ODg5LCA5NDg5NiwgOTQ5MDMsIDk0OTEyLCA5NDkyMiwgOTQ5MzUsIDk0OTQyLCA5NDk1MiwgOTQ5NjIsIDk0OTY5LCAKLSAgICA5NDk3OCwgOTQ5OTEsIDk0OTk4LCA5NTAwNSwgOTUwMTIsIDk1MDIyLCA5NTAzMiwgOTUwMzksIDk1MDQ5LCA5NTA1NiwgCi0gICAgOTUwNjMsIDk1MDczLCA5NTA3OSwgOTUwODYsIDk1MDkzLCA5NTEwMCwgOTUxMTAsIDk1MTE3LCA5NTEyNCwgOTUxMzEsIAotICAgIDk1MTM3LCA5NTE0NCwgOTUxNTQsIDk1MTYxLCA5NTE2NSwgOTUxNzMsIDk1MTc3LCA5NTE4OSwgOTUxOTMsIDk1MjA3LCAKLSAgICA5NTIxMSwgOTUyMTUsIDk1MjE5LCA5NTIyMywgOTUyMjksIDk1MjM2LCA5NTI0NCwgOTUyNDgsIDk1MjUyLCA5NTI1NiwgCi0gICAgOTUyNjAsIDk1MjY3LCA5NTI3MSwgOTUyNzcsIDk1MjgzLCA5NTI5MSwgOTUyOTUsIDk1MzAyLCA5NTMxMCwgOTUzMTQsIAotICAgIDk1MzE4LCA5NTMyNCwgOTUzMjgsIDk1MzM3LCA5NTM0NiwgOTUzNTMsIDk1MzYzLCA5NTM2OSwgOTUzNzMsIDk1Mzc3LCAKLSAgICA5NTM4NSwgOTUzOTIsIDk1Mzk5LCA5NTQwNSwgOTU0MDksIDk1NDE3LCA5NTQyMSwgOTU0MjgsIDk1NDQwLCA5NTQ0NywgCi0gICAgOTU0NTcsIDk1NDYzLCA5NTQ2NywgOTU0NzYsIDk1NDgzLCA5NTQ5MiwgOTU0OTYsIDk1NTAwLCA5NTUwNywgOTU1MTEsIAotICAgIDk1NTE1LCA5NTUxOSwgOTU1MjMsIDk1NTI2LCA5NTUzMiwgOTU1MzgsIDk1NTQyLCA5NTU0NiwgOTU1NTMsIDk1NTYwLCAKLSAgICA5NTU2NywgOTU1NzQsIDk1NTgxLCA5NTU4OCwgOTU1OTUsIDk1NjAyLCA5NTYwOCwgOTU2MTIsIDk1NjE2LCA5NTYyMywgCi0gICAgOTU2MzAsIDk1NjM3LCA5NTY0NCwgOTU2NTEsIDk1NjU1LCA5NTY1OCwgOTU2NjMsIDk1NjY3LCA5NTY3MSwgOTU2ODAsIAotICAgIDk1Njg5LCA5NTY5MywgOTU2OTcsIDk1NzAzLCA5NTcwOSwgOTU3MjYsIDk1NzMyLCA5NTczNiwgOTU3NDUsIDk1NzQ5LCAKLSAgICA5NTc1MywgOTU3NjAsIDk1NzY4LCA5NTc3NiwgOTU3ODIsIDk1Nzg2LCA5NTc5MCwgOTU3OTQsIDk1Nzk4LCA5NTgwMSwgCi0gICAgOTU4MDcsIDk1ODE0LCA5NTgyNCwgOTU4MzEsIDk1ODM4LCA5NTg0NSwgOTU4NTEsIDk1ODU4LCA5NTg2NSwgOTU4NzIsIAotICAgIDk1ODc5LCA5NTg4NiwgOTU4OTUsIDk1OTAyLCA5NTkxNCwgOTU5MjEsIDk1OTI4LCA5NTkzOCwgOTU5NDksIDk1OTU2LCAKLSAgICA5NTk2MywgOTU5NzAsIDk1OTc3LCA5NTk4NCwgOTU5OTEsIDk1OTk4LCA5NjAwNSwgOTYwMTIsIDk2MDE5LCA5NjAyOSwgCi0gICAgOTYwMzksIDk2MDQ5LCA5NjA1NiwgOTYwNjYsIDk2MDczLCA5NjA4MCwgOTYwODcsIDk2MDk0LCA5NjEwMSwgOTYxMDgsIAotICAgIDk2MTE1LCA5NjEyMiwgOTYxMjksIDk2MTM2LCA5NjE0MywgOTYxNTAsIDk2MTU3LCA5NjE2MywgOTYxNzAsIDk2MTc3LCAKLSAgICA5NjE4NiwgOTYxOTMsIDk2MjAwLCA5NjIwNCwgOTYyMTIsIDk2MjE2LCA5NjIyMCwgOTYyMjQsIDk2MjI4LCA5NjIzMiwgCi0gICAgOTYyMzksIDk2MjQzLCA5NjI1MiwgOTYyNTYsIDk2MjYzLCA5NjI3MSwgOTYyNzUsIDk2Mjc5LCA5NjI4MywgOTYyOTYsIAotICAgIDk2MzEyLCA5NjMxNiwgOTYzMjAsIDk2MzI3LCA5NjMzMywgOTYzNDAsIDk2MzQ0LCA5NjM0OCwgOTYzNTIsIDk2MzU2LCAKLSAgICA5NjM2MCwgOTYzNjcsIDk2MzcxLCA5NjM4OSwgOTYzOTMsIDk2Mzk3LCA5NjQwNCwgOTY0MDgsIDk2NDEyLCA5NjQxOCwgCi0gICAgOTY0MjIsIDk2NDI2LCA5NjQzNCwgOTY0MzgsIDk2NDQyLCA5NjQ0NiwgOTY0NTAsIDk2NDU2LCA5NjQ2NywgOTY0NzYsIAotICAgIDk2NDg1LCA5NjQ5MiwgOTY0OTksIDk2NTEwLCA5NjUxNywgOTY1MjQsIDk2NTMxLCA5NjUzOCwgOTY1NDUsIDk2NTUyLCAKLSAgICA5NjU1OSwgOTY1NjksIDk2NTc1LCA5NjU4MiwgOTY1OTIsIDk2NjAxLCA5NjYwOCwgOTY2MTcsIDk2NjI3LCA5NjYzNCwgCi0gICAgOTY2NDEsIDk2NjQ4LCA5NjY1NSwgOTY2NjcsIDk2Njc0LCA5NjY4MSwgOTY2ODgsIDk2Njk1LCA5NjcwMiwgOTY3MTIsIAotICAgIDk2NzE5LCA5NjcyNiwgOTY3MzYsIDk2NzQ5LCA5Njc2MSwgOTY3NjgsIDk2Nzc4LCA5Njc4NSwgOTY3OTIsIDk2Nzk5LCAKLSAgICA5NjgxMywgOTY4MTksIDk2ODI3LCA5NjgzNywgOTY4NDcsIDk2ODU0LCA5Njg2MSwgOTY4NjcsIDk2ODcxLCA5Njg3OCwgCi0gICAgOTY4ODgsIDk2ODk0LCA5NjkwNywgOTY5MTEsIDk2OTE1LCA5NjkyMiwgOTY5MjYsIDk2OTMzLCA5Njk0MywgOTY5NDcsIAotICAgIDk2OTUxLCA5Njk1NSwgOTY5NTksIDk2OTYzLCA5Njk3MCwgOTY5NzQsIDk2OTgxLCA5Njk4OCwgOTY5OTUsIDk3MDA0LCAKLSAgICA5NzAxMywgOTcwMjMsIDk3MDMwLCA5NzAzNywgOTcwNDQsIDk3MDU0LCA5NzA2MSwgOTcwNzEsIDk3MDc4LCA5NzA4OCwgCi0gICAgOTcwOTUsIDk3MTAyLCA5NzExMiwgOTcxMjIsIDk3MTI5LCA5NzEzNSwgOTcxNDMsIDk3MTUxLCA5NzE1NywgOTcxNjMsIAotICAgIDk3MTY3LCA5NzE3MSwgOTcxNzgsIDk3MTg2LCA5NzE5MiwgOTcxOTYsIDk3MjAwLCA5NzIwNCwgOTcyMTEsIDk3MjIzLCAKLSAgICA5NzIyNiwgOTcyMzMsIDk3MjM5LCA5NzI0MywgOTcyNDcsIDk3MjUxLCA5NzI1NSwgOTcyNTksIDk3MjYzLCA5NzI2NywgCi0gICAgOTcyNzEsIDk3Mjc1LCA5NzI3OSwgOTcyODYsIDk3MjkwLCA5NzI5NiwgOTczMDAsIDk3MzA0LCA5NzMwOCwgOTczMTQsIAotICAgIDk3MzIxLCA5NzMyOCwgOTczMzUsIDk3MzQ2LCA5NzM1NCwgOTczNTgsIDk3MzY0LCA5NzM3MywgOTczODAsIDk3Mzg2LCAKLSAgICA5NzM4OSwgOTczOTMsIDk3Mzk3LCA5NzQwMywgOTc0MTIsIDk3NDIwLCA5NzQyNCwgOTc0MzAsIDk3NDM0LCA5NzQzOCwgCi0gICAgOTc0NDIsIDk3NDQ4LCA5NzQ1NSwgOTc0NjEsIDk3NDY1LCA5NzQ3MSwgOTc0NzUsIDk3NDc5LCA5NzQ4OCwgOTc1MDAsIAotICAgIDk3NTA0LCA5NzUxMSwgOTc1MTgsIDk3NTI4LCA5NzUzNSwgOTc1NDcsIDk3NTU0LCA5NzU2MSwgOTc1NjgsIDk3NTc5LCAKLSAgICA5NzU4OSwgOTc2MDIsIDk3NjEyLCA5NzYxOSwgOTc2MjMsIDk3NjI3LCA5NzYzMSwgOTc2MzUsIDk3NjQ0LCA5NzY1MywgCi0gICAgOTc2NjIsIDk3Njc5LCA5NzY4OCwgOTc2OTQsIDk3NzAxLCA5NzcwOSwgOTc3MjIsIDk3NzI2LCA5NzczNSwgOTc3NDQsIAotICAgIDk3NzUzLCA5Nzc2MiwgOTc3NzMsIDk3NzgyLCA5Nzc5MSwgOTc4MDAsIDk3ODA5LCA5NzgxOCwgOTc4MjcsIDk3ODM3LCAKLSAgICA5Nzg0MCwgOTc4NDQsIDk3ODQ4LCA5Nzg1MiwgOTc4NTYsIDk3ODYwLCA5Nzg2NiwgOTc4NzMsIDk3ODgwLCA5Nzg4NywgCi0gICAgOTc4OTMsIDk3ODk5LCA5NzkwNiwgOTc5MTIsIDk3OTE5LCA5NzkyNywgOTc5MzEsIDk3OTM4LCA5Nzk0NSwgOTc5NTIsIAotICAgIDk3OTYwLCA5Nzk2MywgOTc5NjcsIDk3OTcxLCA5Nzk3NSwgOTc5NzksIDk3OTg1LCA5Nzk4OSwgOTc5OTUsIDk4MDAyLCAKLSAgICA5ODAwOSwgOTgwMTUsIDk4MDIyLCA5ODAyOSwgOTgwMzYsIDk4MDQzLCA5ODA1MCwgOTgwNTcsIDk4MDY0LCA5ODA3MSwgCi0gICAgOTgwNzgsIDk4MDg1LCA5ODA5MiwgOTgwOTksIDk4MTA2LCA5ODExMywgOTgxMTksIDk4MTIzLCA5ODEzMiwgOTgxMzYsIAotICAgIDk4MTQwLCA5ODE0NCwgOTgxNDgsIDk4MTU0LCA5ODE2MSwgOTgxNjgsIDk4MTc1LCA5ODE4MiwgOTgxODksIDk4MTk1LCAKLSAgICA5ODIwMywgOTgyMDcsIDk4MjExLCA5ODIxNSwgOTgyMTksIDk4MjI1LCA5ODI0MiwgOTgyNTksIDk4MjYzLCA5ODI2NywgCi0gICAgOTgyNzEsIDk4Mjc1LCA5ODI3OSwgOTgyODMsIDk4Mjg5LCA5ODI5NiwgOTgzMDAsIDk4MzA2LCA5ODMxMywgOTgzMjAsIAotICAgIDk4MzI3LCA5ODMzNCwgOTgzNDEsIDk4MzUwLCA5ODM1NywgOTgzNjQsIDk4MzcxLCA5ODM3OCwgOTgzODIsIDk4Mzg2LCAKLSAgICA5ODM5MiwgOTg0MDQsIDk4NDA4LCA5ODQxMiwgOTg0MjEsIDk4NDI1LCA5ODQyOSwgOTg0MzMsIDk4NDM5LCA5ODQ0MywgCi0gICAgOTg0NDcsIDk4NDU2LCA5ODQ2MCwgOTg0NjQsIDk4NDY4LCA5ODQ3NSwgOTg0NzksIDk4NDgzLCA5ODQ4NywgOTg0OTEsIAotICAgIDk4NDk1LCA5ODQ5OSwgOTg1MDMsIDk4NTA3LCA5ODUxMywgOTg1MjAsIDk4NTI3LCA5ODUzMywgOTg1MzcsIDk4NTU0LCAKLSAgICA5ODU2MCwgOTg1NjQsIDk4NTcwLCA5ODU3NiwgOTg1ODIsIDk4NTg4LCA5ODU5NCwgOTg2MDAsIDk4NjA0LCA5ODYwOCwgCi0gICAgOTg2MTIsIDk4NjE4LCA5ODYyMiwgOTg2MjgsIDk4NjMyLCA5ODYzNiwgOTg2NDMsIDk4NjUwLCA5ODY2NywgOTg2NzEsIAotICAgIDk4Njc1LCA5ODY3OSwgOTg2ODMsIDk4Njg3LCA5ODY5OSwgOTg3MDIsIDk4NzA3LCA5ODcxMiwgOTg3MjcsIDk4NzM3LCAKLSAgICA5ODc0OSwgOTg3NTMsIDk4NzU3LCA5ODc2MSwgOTg3NjcsIDk4Nzc0LCA5ODc4MSwgOTg3OTEsIDk4ODAzLCA5ODgwOSwgCi0gICAgOTg4MTUsIDk4ODI0LCA5ODgyOCwgOTg4MzIsIDk4ODM5LCA5ODg0OSwgOTg4NTYsIDk4ODYyLCA5ODg2NiwgOTg4NzAsIAotICAgIDk4ODc3LCA5ODg4MywgOTg4ODcsIDk4ODkzLCA5ODg5NywgOTg5MDUsIDk4OTExLCA5ODkxNSwgOTg5MjMsIDk4OTMxLCAKLSAgICA5ODkzOCwgOTg5NDQsIDk4OTUxLCA5ODk1OCwgOTg5NjgsIDk4OTc4LCA5ODk4MiwgOTg5ODYsIDk4OTkwLCA5ODk5NCwgCi0gICAgOTkwMDAsIDk5MDA3LCA5OTAxMywgOTkwMjAsIDk5MDI3LCA5OTAzNCwgOTkwNDMsIDk5MDUwLCA5OTA1NywgOTkwNjMsIAotICAgIDk5MDcwLCA5OTA3NywgOTkwODQsIDk5MDkxLCA5OTA5OCwgOTkxMDUsIDk5MTExLCA5OTExOCwgOTkxMjUsIDk5MTMyLCAKLSAgICA5OTE0MSwgOTkxNDgsIDk5MTU1LCA5OTE1OSwgOTkxNjUsIDk5MTY5LCA5OTE3NSwgOTkxODIsIDk5MTg5LCA5OTE5NiwgCi0gICAgOTkyMDAsIDk5MjA0LCA5OTIwOCwgOTkyMTIsIDk5MjE2LCA5OTIyMywgOTkyMjcsIDk5MjMxLCA5OTIzNywgOTkyNDUsIAotICAgIDk5MjQ5LCA5OTI1MywgOTkyNTcsIDk5MjYxLCA5OTI2OCwgOTkyNzIsIDk5Mjc2LCA5OTI4NCwgOTkyODgsIDk5MjkyLCAKLSAgICA5OTI5NiwgOTkzMDAsIDk5MzA2LCA5OTMxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgOTkzMTQsIDk5MzIwLCA5OTMyNiwgOTkzMzMsIDk5MzQwLCA5OTM0NywgOTkzNTQsIDk5MzYxLCA5OTM2OCwgCi0gICAgOTkzNzQsIDk5MzgxLCA5OTM4OCwgOTkzOTUsIDk5NDAyLCA5OTQwOSwgOTk0MTYsIDk5NDIyLCA5OTQyOCwgOTk0MzQsIAotICAgIDk5NDQwLCA5OTQ0NiwgOTk0NTIsIDk5NDU4LCA5OTQ2NCwgOTk0NzAsIDk5NDc3LCA5OTQ4NCwgOTk0OTEsIDk5NDk4LCAKLSAgICA5OTUwNSwgOTk1MTIsIDk5NTE4LCA5OTUyNCwgOTk1MzAsIDk5NTM3LCA5OTU0NCwgOTk1NTAsIDk5NTU2LCA5OTU2NSwgCi0gICAgOTk1NzIsIDk5NTc5LCA5OTU4NiwgOTk1OTMsIDk5NjAwLCA5OTYwNywgOTk2MTMsIDk5NjE5LCA5OTYyNSwgOTk2MzQsIAotICAgIDk5NjQxLCA5OTY0OCwgOTk2NTksIDk5NjcwLCA5OTY3NiwgOTk2ODIsIDk5Njg4LCA5OTY5NywgOTk3MDQsIDk5NzExLCAKLSAgICA5OTcyMSwgOTk3MzEsIDk5NzQyLCA5OTc1MywgOTk3NjUsIDk5Nzc4LCA5OTc4OSwgOTk4MDAsIDk5ODEyLCA5OTgyNSwgCi0gICAgOTk4MzYsIDk5ODQ3LCA5OTg1OCwgOTk4NjksIDk5ODgwLCA5OTg5MiwgOTk5MDAsIDk5OTA4LCA5OTkxNywgOTk5MjYsIAotICAgIDk5OTM1LCA5OTk0MSwgOTk5NDcsIDk5OTUzLCA5OTk2MCwgOTk5NzAsIDk5OTc3LCA5OTk4NywgOTk5OTIsIDk5OTk3LCAKLSAgICAxMDAwMDMsIDEwMDAwOSwgMTAwMDE3LCAxMDAwMjUsIDEwMDAzNCwgMTAwMDQ1LCAxMDAwNTYsIDEwMDA2NCwgMTAwMDcyLCAKLSAgICAxMDAwODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMDA5MCwgMTAwMTAxLCAxMDAxMDgsIAotICAgIDEwMDExNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAwMTI0LCAxMDAxMjgsIDEwMDEzMiwgCi0gICAgMTAwMTM2LCAxMDAxNDAsIDEwMDE0NCwgMTAwMTQ4LCAxMDAxNTIsIDEwMDE1NiwgMTAwMTYwLCAxMDAxNjQsIDEwMDE2OCwgCi0gICAgMTAwMTcyLCAxMDAxNzYsIDEwMDE4MCwgMTAwMTg0LCAxMDAxODgsIDEwMDE5MiwgMTAwMTk2LCAxMDAyMDAsIDEwMDIwNCwgCi0gICAgMTAwMjA4LCAxMDAyMTIsIDEwMDIxNiwgMTAwMjIwLCAxMDAyMjQsIDEwMDIyOCwgMTAwMjMyLCAxMDAyMzYsIDEwMDI0MCwgCi0gICAgMTAwMjQ0LCAxMDAyNDgsIDEwMDI1MiwgMTAwMjU2LCAxMDAyNjAsIDEwMDI2NCwgMTAwMjY4LCAxMDAyNzIsIDEwMDI3NiwgCi0gICAgMTAwMjgwLCAxMDAyODQsIDEwMDI4OCwgMTAwMjkyLCAxMDAyOTYsIDEwMDMwMCwgMTAwMzA0LCAxMDAzMDgsIDEwMDMxMiwgCi0gICAgMTAwMzE2LCAxMDAzMjAsIDEwMDMyNCwgMTAwMzI4LCAxMDAzMzIsIDEwMDMzNiwgMTAwMzQwLCAxMDAzNDQsIDEwMDM0OCwgCi0gICAgMTAwMzUyLCAxMDAzNTYsIDEwMDM2MCwgMTAwMzY0LCAxMDAzNjgsIDEwMDM3MiwgMTAwMzc2LCAxMDAzODAsIDEwMDM4NCwgCi0gICAgMTAwMzg4LCAxMDAzOTIsIDEwMDM5NiwgMTAwNDAwLCAxMDA0MDQsIDEwMDQwOCwgMTAwNDEyLCAxMDA0MTYsIDEwMDQyMCwgCi0gICAgMTAwNDI0LCAxMDA0MjgsIDEwMDQzMiwgMTAwNDM2LCAxMDA0NDAsIDEwMDQ0NCwgMTAwNDQ4LCAxMDA0NTIsIDEwMDQ1NiwgCi0gICAgMTAwNDYwLCAxMDA0NjQsIDEwMDQ2OCwgMTAwNDcyLCAxMDA0NzYsIDEwMDQ4MCwgMTAwNDg0LCAxMDA0ODgsIDEwMDQ5MiwgCi0gICAgMTAwNDk2LCAxMDA1MDAsIDEwMDUwNCwgMTAwNTA4LCAxMDA1MTIsIDEwMDUxNiwgMTAwNTIwLCAxMDA1MjQsIDEwMDUyOCwgCi0gICAgMTAwNTMyLCAxMDA1MzYsIDEwMDU0MCwgMTAwNTQ0LCAxMDA1NDgsIDEwMDU1MiwgMTAwNTU2LCAxMDA1NjAsIDEwMDU2NCwgCi0gICAgMTAwNTY4LCAxMDA1NzIsIDEwMDU3NiwgMTAwNTgwLCAxMDA1ODQsIDEwMDU4OCwgMTAwNTkyLCAxMDA1OTYsIDEwMDYwMCwgCi0gICAgMTAwNjA0LCAxMDA2MDgsIDEwMDYxMiwgMTAwNjE2LCAxMDA2MjAsIDEwMDYyNCwgMTAwNjI4LCAxMDA2MzIsIDEwMDYzNiwgCi0gICAgMTAwNjQwLCAxMDA2NDQsIDEwMDY0OCwgMTAwNjUyLCAxMDA2NTYsIDEwMDY2MCwgMTAwNjY0LCAxMDA2NjgsIDEwMDY3MiwgCi0gICAgMTAwNjc2LCAxMDA2ODAsIDEwMDY4NCwgMTAwNjg4LCAxMDA2OTIsIDEwMDY5NiwgMTAwNzAwLCAxMDA3MDQsIDEwMDcwOCwgCi0gICAgMTAwNzEyLCAxMDA3MTYsIDEwMDcyMCwgMTAwNzI0LCAxMDA3MjgsIDEwMDczMiwgMTAwNzM2LCAxMDA3NDAsIDEwMDc0NCwgCi0gICAgMTAwNzQ4LCAxMDA3NTIsIDEwMDc1NiwgMTAwNzYwLCAxMDA3NjQsIDEwMDc2OCwgMTAwNzcyLCAxMDA3NzYsIDEwMDc4MCwgCi0gICAgMTAwNzg0LCAxMDA3ODgsIDEwMDc5MiwgMTAwNzk2LCAxMDA4MDAsIDEwMDgwNCwgMTAwODA4LCAxMDA4MTIsIDEwMDgxNiwgCi0gICAgMTAwODIwLCAxMDA4MjQsIDEwMDgyOCwgMTAwODMyLCAxMDA4MzYsIDEwMDg0MCwgMTAwODQ0LCAxMDA4NDgsIDEwMDg1MiwgCi0gICAgMTAwODU2LCAxMDA4NjAsIDEwMDg2NCwgMTAwODY4LCAxMDA4NzIsIDEwMDg3NiwgMTAwODgwLCAxMDA4ODQsIDEwMDg4OCwgCi0gICAgMTAwODkyLCAxMDA4OTYsIDEwMDkwMCwgMTAwOTA0LCAxMDA5MDgsIDEwMDkxMiwgMTAwOTE2LCAxMDA5MjAsIDEwMDkyNCwgCi0gICAgMTAwOTI4LCAxMDA5MzIsIDEwMDkzNiwgMTAwOTQwLCAxMDA5NDQsIDEwMDk0OCwgMTAwOTUyLCAxMDA5NTYsIDEwMDk2MCwgCi0gICAgMTAwOTY0LCAxMDA5NjgsIDEwMDk3MiwgMTAwOTc2LCAxMDA5ODAsIDEwMDk4NCwgMTAwOTg4LCAxMDA5OTIsIDEwMDk5NiwgCi0gICAgMTAxMDAwLCAxMDEwMDQsIDEwMTAwOCwgMTAxMDEyLCAxMDEwMTYsIDEwMTAyMCwgMTAxMDI0LCAxMDEwMjgsIDEwMTAzMiwgCi0gICAgMTAxMDM2LCAxMDEwNDAsIDEwMTA0NCwgMTAxMDQ4LCAxMDEwNTIsIDEwMTA1NiwgMTAxMDYwLCAxMDEwNjQsIDEwMTA2OCwgCi0gICAgMTAxMDcyLCAxMDEwNzYsIDEwMTA4MCwgMTAxMDg0LCAxMDEwODgsIDEwMTA5MiwgMTAxMDk2LCAxMDExMDAsIDEwMTEwNCwgCi0gICAgMTAxMTA4LCAxMDExMTIsIDEwMTExNiwgMTAxMTIwLCAxMDExMjQsIDEwMTEyOCwgMTAxMTMyLCAxMDExMzYsIDEwMTE0MCwgCi0gICAgMTAxMTQ0LCAxMDExNDgsIDEwMTE1MiwgMTAxMTU2LCAxMDExNjAsIDEwMTE2NCwgMTAxMTY4LCAxMDExNzIsIDEwMTE3NiwgCi0gICAgMTAxMTgwLCAxMDExODQsIDEwMTE4OCwgMTAxMTkyLCAxMDExOTYsIDEwMTIwMCwgMTAxMjA0LCAxMDEyMDgsIDEwMTIxMiwgCi0gICAgMTAxMjE2LCAxMDEyMjAsIDEwMTIyNCwgMTAxMjI4LCAxMDEyMzIsIDEwMTIzNiwgMTAxMjQwLCAxMDEyNDQsIDEwMTI0OCwgCi0gICAgMTAxMjUyLCAxMDEyNTYsIDEwMTI2MCwgMTAxMjY0LCAxMDEyNjgsIDEwMTI3MiwgMTAxMjc2LCAxMDEyODAsIDEwMTI4NCwgCi0gICAgMTAxMjg4LCAxMDEyOTIsIDEwMTI5NiwgMTAxMzAwLCAxMDEzMDQsIDEwMTMwOCwgMTAxMzEyLCAxMDEzMTYsIDEwMTMyMCwgCi0gICAgMTAxMzI0LCAxMDEzMjgsIDEwMTMzMiwgMTAxMzM2LCAxMDEzNDAsIDEwMTM0NCwgMTAxMzQ4LCAxMDEzNTIsIDEwMTM1NiwgCi0gICAgMTAxMzYwLCAxMDEzNjQsIDEwMTM2OCwgMTAxMzcyLCAxMDEzNzYsIDEwMTM4MCwgMTAxMzg0LCAxMDEzODgsIDEwMTM5MiwgCi0gICAgMTAxMzk2LCAxMDE0MDAsIDEwMTQwNCwgMTAxNDA4LCAxMDE0MTIsIDEwMTQxNiwgMTAxNDIwLCAxMDE0MjQsIDEwMTQyOCwgCi0gICAgMTAxNDMyLCAxMDE0MzYsIDEwMTQ0MCwgMTAxNDQ0LCAxMDE0NDgsIDEwMTQ1MiwgMTAxNDU2LCAxMDE0NjAsIDEwMTQ2NCwgCi0gICAgMTAxNDY4LCAxMDE0NzIsIDEwMTQ3NiwgMTAxNDgwLCAxMDE0ODQsIDEwMTQ4OCwgMTAxNDkyLCAxMDE0OTYsIDEwMTUwMCwgCi0gICAgMTAxNTA0LCAxMDE1MDgsIDEwMTUxMiwgMTAxNTE2LCAxMDE1MjAsIDEwMTUyNCwgMTAxNTI4LCAxMDE1MzIsIDEwMTUzNiwgCi0gICAgMTAxNTQwLCAxMDE1NDQsIDEwMTU0OCwgMTAxNTUyLCAxMDE1NTYsIDEwMTU2MCwgMTAxNTY0LCAxMDE1NjgsIDEwMTU3MiwgCi0gICAgMTAxNTc2LCAxMDE1ODAsIDEwMTU4NCwgMTAxNTg4LCAxMDE1OTIsIDEwMTU5NiwgMTAxNjAwLCAxMDE2MDQsIDEwMTYwOCwgCi0gICAgMTAxNjEyLCAxMDE2MTYsIDEwMTYyMCwgMTAxNjI0LCAxMDE2MjgsIDEwMTYzMiwgMTAxNjM2LCAxMDE2NDAsIDEwMTY0NCwgCi0gICAgMTAxNjQ4LCAxMDE2NTIsIDEwMTY1NiwgMTAxNjYwLCAxMDE2NjQsIDEwMTY2OCwgMTAxNjcyLCAxMDE2NzYsIDEwMTY4MCwgCi0gICAgMTAxNjg0LCAxMDE2ODgsIDEwMTY5MiwgMTAxNjk2LCAxMDE3MDAsIDEwMTcwNCwgMTAxNzA4LCAxMDE3MTIsIDEwMTcxNiwgCi0gICAgMTAxNzIwLCAxMDE3MjQsIDEwMTcyOCwgMTAxNzMyLCAxMDE3MzYsIDEwMTc0MCwgMTAxNzQ0LCAxMDE3NDgsIDEwMTc1MiwgCi0gICAgMTAxNzU2LCAxMDE3NjAsIDEwMTc2NCwgMTAxNzY4LCAxMDE3NzIsIDEwMTc3NiwgMTAxNzgwLCAxMDE3ODQsIDEwMTc4OCwgCi0gICAgMTAxNzkyLCAxMDE3OTYsIDEwMTgwMCwgMTAxODA0LCAxMDE4MDgsIDEwMTgxMiwgMTAxODE2LCAxMDE4MjAsIDEwMTgyNCwgCi0gICAgMTAxODI4LCAxMDE4MzIsIDEwMTgzNiwgMTAxODQwLCAxMDE4NDQsIDEwMTg0OCwgMTAxODUyLCAxMDE4NTYsIDEwMTg2MCwgCi0gICAgMTAxODY0LCAxMDE4NjgsIDEwMTg3MiwgMTAxODc2LCAxMDE4ODAsIDEwMTg4NCwgMTAxODg4LCAxMDE4OTIsIDEwMTg5NiwgCi0gICAgMTAxOTAwLCAxMDE5MDQsIDEwMTkwOCwgMTAxOTEyLCAxMDE5MTYsIDEwMTkyMCwgMTAxOTI0LCAxMDE5MjgsIDEwMTkzMiwgCi0gICAgMTAxOTM2LCAxMDE5NDAsIDEwMTk0NCwgMTAxOTQ4LCAxMDE5NTIsIDEwMTk1NiwgMTAxOTYwLCAxMDE5NjQsIDEwMTk2OCwgCi0gICAgMTAxOTcyLCAxMDE5NzYsIDEwMTk4MCwgMTAxOTg0LCAxMDE5ODgsIDEwMTk5MiwgMTAxOTk2LCAxMDIwMDAsIDEwMjAwNCwgCi0gICAgMTAyMDA4LCAxMDIwMTIsIDEwMjAxNiwgMTAyMDIwLCAxMDIwMjQsIDEwMjAyOCwgMTAyMDMyLCAxMDIwMzYsIDEwMjA0MCwgCi0gICAgMTAyMDQ0LCAxMDIwNDgsIDEwMjA1MiwgMTAyMDU2LCAxMDIwNjAsIDEwMjA2NCwgMTAyMDY4LCAxMDIwNzIsIDEwMjA3NiwgCi0gICAgMTAyMDgwLCAxMDIwODQsIDEwMjA4OCwgMTAyMDkyLCAxMDIwOTYsIDEwMjEwMCwgMTAyMTA0LCAxMDIxMDgsIDEwMjExMiwgCi0gICAgMTAyMTE2LCAxMDIxMjAsIDEwMjEyNCwgMTAyMTI4LCAxMDIxMzIsIDEwMjEzNiwgMTAyMTQwLCAxMDIxNDQsIDEwMjE0OCwgCi0gICAgMTAyMTUyLCAxMDIxNTYsIDEwMjE2MCwgMTAyMTY0LCAxMDIxNjgsIDEwMjE3MiwgMTAyMTc2LCAxMDIxODAsIDEwMjE4NCwgCi0gICAgMTAyMTg4LCAxMDIxOTIsIDEwMjE5NiwgMTAyMjAwLCAxMDIyMDQsIDEwMjIwOCwgMTAyMjEyLCAxMDIyMTYsIDEwMjIyMCwgCi0gICAgMTAyMjI0LCAxMDIyMjgsIDEwMjIzMiwgMTAyMjM2LCAxMDIyNDAsIDEwMjI0NCwgMTAyMjQ4LCAxMDIyNTIsIDEwMjI1NiwgCi0gICAgMTAyMjYwLCAxMDIyNjQsIDEwMjI2OCwgMTAyMjcyLCAxMDIyNzYsIDEwMjI4MCwgMTAyMjg0LCAxMDIyODgsIDEwMjI5MiwgCi0gICAgMTAyMjk2LCAxMDIzMDAsIDEwMjMwNCwgMTAyMzA4LCAxMDIzMTIsIDEwMjMxNiwgMTAyMzIwLCAxMDIzMjQsIDEwMjMyOCwgCi0gICAgMTAyMzMyLCAxMDIzMzYsIDEwMjM0MCwgMTAyMzQ0LCAxMDIzNDgsIDEwMjM1MiwgMTAyMzU2LCAxMDIzNjAsIDEwMjM2NCwgCi0gICAgMTAyMzY4LCAxMDIzNzIsIDEwMjM3NiwgMTAyMzgwLCAxMDIzODQsIDEwMjM4OCwgMTAyMzkyLCAxMDIzOTYsIDEwMjQwMCwgCi0gICAgMTAyNDA0LCAxMDI0MDgsIDEwMjQxMiwgMTAyNDE2LCAxMDI0MjAsIDEwMjQyNCwgMTAyNDI4LCAxMDI0MzIsIDEwMjQzNiwgCi0gICAgMTAyNDQwLCAxMDI0NDQsIDEwMjQ0OCwgMTAyNDUyLCAxMDI0NTYsIDEwMjQ2MCwgMTAyNDY0LCAxMDI0NjgsIDEwMjQ3MiwgCi0gICAgMTAyNDc2LCAxMDI0ODAsIDEwMjQ4NCwgMTAyNDg4LCAxMDI0OTIsIDEwMjQ5NiwgMTAyNTAwLCAxMDI1MDQsIDEwMjUwOCwgCi0gICAgMTAyNTEyLCAxMDI1MTYsIDEwMjUyMCwgMTAyNTI0LCAxMDI1MjgsIDEwMjUzMiwgMTAyNTM2LCAxMDI1NDAsIDEwMjU0NCwgCi0gICAgMTAyNTQ4LCAxMDI1NTIsIDEwMjU1NiwgMTAyNTYwLCAxMDI1NjQsIDEwMjU2OCwgMTAyNTcyLCAxMDI1NzYsIDEwMjU4MCwgCi0gICAgMTAyNTg0LCAxMDI1ODgsIDEwMjU5MiwgMTAyNTk2LCAxMDI2MDAsIDEwMjYwNCwgMTAyNjA4LCAxMDI2MTIsIDEwMjYxNiwgCi0gICAgMTAyNjIwLCAxMDI2MjQsIDEwMjYyOCwgMTAyNjMyLCAxMDI2MzYsIDEwMjY0MCwgMTAyNjQ0LCAxMDI2NDgsIDEwMjY1MiwgCi0gICAgMTAyNjU2LCAxMDI2NjAsIDEwMjY2NCwgMTAyNjY4LCAxMDI2NzIsIDEwMjY3NiwgMTAyNjgwLCAxMDI2ODQsIDEwMjY4OCwgCi0gICAgMTAyNjkyLCAxMDI2OTYsIDEwMjcwMCwgMTAyNzA0LCAxMDI3MDgsIDEwMjcxMiwgMTAyNzE2LCAxMDI3MjAsIDEwMjcyNCwgCi0gICAgMTAyNzI4LCAxMDI3MzIsIDEwMjczNiwgMTAyNzQwLCAxMDI3NDQsIDEwMjc0OCwgMTAyNzUyLCAxMDI3NTYsIDEwMjc2MCwgCi0gICAgMTAyNzY0LCAxMDI3NjgsIDEwMjc3MiwgMTAyNzc2LCAxMDI3ODAsIDEwMjc4NCwgMTAyNzg4LCAxMDI3OTIsIDEwMjc5NiwgCi0gICAgMTAyODAwLCAxMDI4MDQsIDEwMjgwOCwgMTAyODEyLCAxMDI4MTYsIDEwMjgyMCwgMTAyODI0LCAxMDI4MjgsIDEwMjgzMiwgCi0gICAgMTAyODM2LCAxMDI4NDAsIDEwMjg0NCwgMTAyODQ4LCAxMDI4NTIsIDEwMjg1NiwgMTAyODYwLCAxMDI4NjQsIDEwMjg2OCwgCi0gICAgMTAyODcyLCAxMDI4NzYsIDEwMjg4MCwgMTAyODg0LCAxMDI4ODgsIDEwMjg5MiwgMTAyODk2LCAxMDI5MDAsIDEwMjkwNCwgCi0gICAgMTAyOTA4LCAxMDI5MTIsIDEwMjkxNiwgMTAyOTIwLCAxMDI5MjQsIDEwMjkyOCwgMTAyOTMyLCAxMDI5MzYsIDEwMjk0MCwgCi0gICAgMTAyOTQ0LCAxMDI5NDgsIDEwMjk1MiwgMTAyOTU2LCAxMDI5NjAsIDEwMjk2NCwgMTAyOTY4LCAxMDI5NzIsIDEwMjk3NiwgCi0gICAgMTAyOTgwLCAxMDI5ODQsIDEwMjk4OCwgMTAyOTkyLCAxMDI5OTYsIDEwMzAwMCwgMTAzMDA0LCAxMDMwMDgsIDEwMzAxMiwgCi0gICAgMTAzMDE2LCAxMDMwMjAsIDEwMzAyNCwgMTAzMDI4LCAxMDMwMzIsIDEwMzAzNiwgMTAzMDQwLCAxMDMwNDQsIDEwMzA0OCwgCi0gICAgMTAzMDUyLCAxMDMwNTYsIDEwMzA2MCwgMTAzMDY0LCAxMDMwNjgsIDEwMzA3MiwgMTAzMDc2LCAxMDMwODAsIDEwMzA4NCwgCi0gICAgMTAzMDg4LCAxMDMwOTIsIDEwMzA5NiwgMTAzMTAwLCAxMDMxMDQsIDEwMzEwOCwgMTAzMTEyLCAxMDMxMTYsIDEwMzEyMCwgCi0gICAgMTAzMTI0LCAxMDMxMjgsIDEwMzEzMiwgMTAzMTM2LCAxMDMxNDAsIDEwMzE0NCwgMTAzMTQ4LCAxMDMxNTIsIDEwMzE1NiwgCi0gICAgMTAzMTYwLCAxMDMxNjQsIDEwMzE2OCwgMTAzMTcyLCAxMDMxNzYsIDEwMzE4MCwgMTAzMTg0LCAxMDMxODgsIDEwMzE5MiwgCi0gICAgMTAzMTk2LCAxMDMyMDAsIDEwMzIwNCwgMTAzMjA4LCAxMDMyMTIsIDEwMzIxNiwgMTAzMjIwLCAxMDMyMjQsIDEwMzIyOCwgCi0gICAgMTAzMjMyLCAxMDMyMzYsIDEwMzI0MCwgMTAzMjQ0LCAxMDMyNDgsIDEwMzI1MiwgMTAzMjU2LCAxMDMyNjAsIDEwMzI2NCwgCi0gICAgMTAzMjY4LCAxMDMyNzIsIDEwMzI3NiwgMTAzMjgwLCAxMDMyODQsIDEwMzI4OCwgMTAzMjkyLCAxMDMyOTYsIDEwMzMwMCwgCi0gICAgMTAzMzA0LCAxMDMzMDgsIDEwMzMxMiwgMTAzMzE2LCAxMDMzMjAsIDEwMzMyNCwgMTAzMzI4LCAxMDMzMzIsIDEwMzMzNiwgCi0gICAgMTAzMzQwLCAxMDMzNDQsIDEwMzM0OCwgMTAzMzUyLCAxMDMzNTYsIDEwMzM2MCwgMTAzMzY0LCAxMDMzNjgsIDEwMzM3MiwgCi0gICAgMTAzMzc2LCAxMDMzODAsIDEwMzM4NCwgMTAzMzg4LCAxMDMzOTIsIDEwMzM5NiwgMTAzNDAwLCAxMDM0MDQsIDEwMzQwOCwgCi0gICAgMTAzNDEyLCAxMDM0MTYsIDEwMzQyMCwgMTAzNDI0LCAxMDM0MjgsIDEwMzQzMiwgMTAzNDM2LCAxMDM0NDAsIDEwMzQ0NCwgCi0gICAgMTAzNDQ4LCAxMDM0NTIsIDEwMzQ1NiwgMTAzNDYwLCAxMDM0NjQsIDEwMzQ2OCwgMTAzNDcyLCAxMDM0NzYsIDEwMzQ4MCwgCi0gICAgMTAzNDg0LCAxMDM0ODgsIDEwMzQ5MiwgMTAzNDk2LCAxMDM1MDAsIDEwMzUwNCwgMTAzNTA4LCAxMDM1MTIsIDEwMzUxNiwgCi0gICAgMTAzNTIwLCAxMDM1MjQsIDEwMzUyOCwgMTAzNTMyLCAxMDM1MzYsIDEwMzU0MCwgMTAzNTQ0LCAxMDM1NDgsIDEwMzU1MiwgCi0gICAgMTAzNTU2LCAxMDM1NjAsIDEwMzU2NCwgMTAzNTY4LCAxMDM1NzIsIDEwMzU3NiwgMTAzNTgwLCAxMDM1ODQsIDEwMzU4OCwgCi0gICAgMTAzNTkyLCAxMDM1OTYsIDEwMzYwMCwgMTAzNjA0LCAxMDM2MDgsIDEwMzYxMiwgMTAzNjE2LCAxMDM2MjAsIDEwMzYyNCwgCi0gICAgMTAzNjI4LCAxMDM2MzIsIDEwMzYzNiwgMTAzNjQwLCAxMDM2NDQsIDEwMzY0OCwgMTAzNjUyLCAxMDM2NTYsIDEwMzY2MCwgCi0gICAgMTAzNjY0LCAxMDM2NjgsIDEwMzY3MiwgMTAzNjc2LCAxMDM2ODAsIDEwMzY4NCwgMTAzNjg4LCAxMDM2OTIsIDEwMzY5NiwgCi0gICAgMTAzNzAwLCAxMDM3MDQsIDEwMzcwOCwgMTAzNzEyLCAxMDM3MTYsIDEwMzcyMCwgMTAzNzI0LCAxMDM3MjgsIDEwMzczMiwgCi0gICAgMTAzNzM2LCAxMDM3NDAsIDEwMzc0NCwgMTAzNzQ4LCAxMDM3NTIsIDEwMzc1NiwgMTAzNzYwLCAxMDM3NjQsIDEwMzc2OCwgCi0gICAgMTAzNzcyLCAxMDM3NzYsIDEwMzc4MCwgMTAzNzg0LCAxMDM3ODgsIDEwMzc5MiwgMTAzNzk2LCAxMDM4MDAsIDEwMzgwNCwgCi0gICAgMTAzODA4LCAxMDM4MTIsIDEwMzgxNiwgMTAzODIwLCAxMDM4MjQsIDEwMzgyOCwgMTAzODMyLCAxMDM4MzYsIDEwMzg0MCwgCi0gICAgMTAzODQ0LCAxMDM4NDgsIDEwMzg1MiwgMTAzODU2LCAxMDM4NjAsIDEwMzg2NCwgMTAzODY4LCAxMDM4NzIsIDEwMzg3NiwgCi0gICAgMTAzODgwLCAxMDM4ODQsIDEwMzg4OCwgMTAzODkyLCAxMDM4OTYsIDEwMzkwMCwgMTAzOTA0LCAxMDM5MDgsIDEwMzkxMiwgCi0gICAgMTAzOTE2LCAxMDM5MjAsIDEwMzkyNCwgMTAzOTI4LCAxMDM5MzIsIDEwMzkzNiwgMTAzOTQwLCAxMDM5NDQsIDEwMzk0OCwgCi0gICAgMTAzOTUyLCAxMDM5NTYsIDEwMzk2MCwgMTAzOTY0LCAxMDM5NjgsIDEwMzk3MiwgMTAzOTc2LCAxMDM5ODAsIDEwMzk4NCwgCi0gICAgMTAzOTg4LCAxMDM5OTIsIDEwMzk5NiwgMTA0MDAwLCAxMDQwMDQsIDEwNDAwOCwgMTA0MDEyLCAxMDQwMTYsIDEwNDAyMCwgCi0gICAgMTA0MDI0LCAxMDQwMjgsIDEwNDAzMiwgMTA0MDM2LCAxMDQwNDAsIDEwNDA0NCwgMTA0MDQ4LCAxMDQwNTIsIDEwNDA1NiwgCi0gICAgMTA0MDYwLCAxMDQwNjQsIDEwNDA2OCwgMTA0MDcyLCAxMDQwNzYsIDEwNDA4MCwgMTA0MDg0LCAxMDQwODgsIDEwNDA5MiwgCi0gICAgMTA0MDk2LCAxMDQxMDAsIDEwNDEwNCwgMTA0MTA4LCAxMDQxMTIsIDEwNDExNiwgMTA0MTIwLCAxMDQxMjQsIDEwNDEyOCwgCi0gICAgMTA0MTMyLCAxMDQxMzYsIDEwNDE0MCwgMTA0MTQ0LCAxMDQxNDgsIDEwNDE1MiwgMTA0MTU2LCAxMDQxNjAsIDEwNDE2NCwgCi0gICAgMTA0MTY4LCAxMDQxNzIsIDEwNDE3NiwgMTA0MTgwLCAxMDQxODQsIDEwNDE4OCwgMTA0MTkyLCAxMDQxOTYsIDEwNDIwMCwgCi0gICAgMTA0MjA0LCAxMDQyMDgsIDEwNDIxMiwgMTA0MjE2LCAxMDQyMjAsIDEwNDIyNCwgMTA0MjI4LCAxMDQyMzIsIDEwNDIzNiwgCi0gICAgMTA0MjQwLCAxMDQyNDQsIDEwNDI0OCwgMTA0MjUyLCAxMDQyNTYsIDEwNDI2MCwgMTA0MjY0LCAxMDQyNjgsIDEwNDI3MiwgCi0gICAgMTA0Mjc2LCAxMDQyODAsIDEwNDI4NCwgMTA0Mjg4LCAxMDQyOTIsIDEwNDI5NiwgMTA0MzAwLCAxMDQzMDQsIDEwNDMwOCwgCi0gICAgMTA0MzEyLCAxMDQzMTYsIDEwNDMyMCwgMTA0MzI0LCAxMDQzMjgsIDEwNDMzMiwgMTA0MzM2LCAxMDQzNDAsIDEwNDM0NCwgCi0gICAgMTA0MzQ4LCAxMDQzNTIsIDEwNDM1NiwgMTA0MzYwLCAxMDQzNjQsIDEwNDM2OCwgMTA0MzcyLCAxMDQzNzYsIDEwNDM4MCwgCi0gICAgMTA0Mzg0LCAxMDQzODgsIDEwNDM5MiwgMTA0Mzk2LCAxMDQ0MDAsIDEwNDQwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU0NDEsIDk1NDQ1LCA5NTQ0OSwgOTU0NTMsIDk1NDU2LCA5NTQ2MCwgCisgICAgOTU0NjMsIDk1NDY3LCA5NTQ3MCwgOTU0NzQsIDk1NDc4LCA5NTQ4MywgOTU0ODcsIDk1NDkyLCA5NTQ5NSwgOTU0OTksIAorICAgIDk1NTAyLCA5NTUwNiwgOTU1MDksIDk1NTEzLCA5NTUxNywgOTU1MjEsIDk1NTI1LCA5NTUyOSwgOTU1MzMsIDk1NTM3LCAKKyAgICA5NTU0MSwgOTU1NDUsIDk1NTQ5LCA5NTU1MywgOTU1NTcsIDk1NTYxLCA5NTU2NSwgOTU1NjksIDk1NTczLCA5NTU3NywgCisgICAgOTU1ODEsIDk1NTg0LCA5NTU4NywgOTU1OTEsIDk1NTk1LCA5NTU5OSwgOTU2MDIsIDk1NjA1LCA5NTYwOCwgOTU2MTIsIAorICAgIDk1NjE2LCA5NTYyMCwgOTU2MjQsIDk1NjI4LCA5NTYzMSwgOTU2MzQsIDk1NjM5LCA5NTY0MywgOTU2NDgsIDk1NjUyLCAKKyAgICA5NTY1NywgOTU2NjIsIDk1NjY4LCA5NTY3MywgOTU2NzksIDk1NjgzLCA5NTY4OCwgOTU2OTIsIDk1Njk3LCA5NTcwMSwgCisgICAgOTU3MDUsIDk1NzA5LCA5NTcxMywgOTU3MTYsIDk1NzE5LCA5NTcyMywgOTU3MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDk1NzMwLCA5NTczNCwgOTU3MzcsIDk1NzQwLCA5NTc0MywgOTU3NDYsIDk1NzQ5LCA5NTc1MiwgOTU3NTUsIDk1NzU4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTc2MSwgOTU3NjUsIDk1NzcwLCA5NTc3NCwgOTU3NzksIAorICAgIDk1NzgzLCA5NTc4OCwgOTU3OTIsIDk1Nzk3LCA5NTgwMSwgOTU4MDYsIDk1ODEwLCA5NTgxNSwgOTU4MjAsIDk1ODI1LCAKKyAgICA5NTgzMCwgOTU4MzUsIDk1ODQwLCA5NTg0NSwgOTU4NTAsIDk1ODU1LCA5NTg2MCwgOTU4NjUsIDk1ODcwLCA5NTg3NSwgCisgICAgOTU4ODAsIDk1ODg1LCA5NTg5MCwgOTU4OTUsIDk1OTAwLCA5NTkwNCwgOTU5MDgsIDk1OTEzLCA5NTkxOCwgOTU5MjMsIAorICAgIDk1OTI3LCA5NTkzMSwgOTU5MzUsIDk1OTQwLCA5NTk0NSwgOTU5NTAsIDk1OTU0LCA5NTk1OCwgOTU5NjMsIDk1OTY4LCAKKyAgICA5NTk3MywgOTU5NzksIDk1OTg0LCA5NTk5MCwgOTU5OTUsIDk2MDAxLCA5NjAwNiwgOTYwMTIsIDk2MDE3LCA5NjAyMywgCisgICAgOTYwMjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk2MDMzLCA5NjAzOCwgOTYwNDIsIDk2MDQ2LCA5NjA1MCwgOTYwNTQsIAorICAgIDk2MDU4LCA5NjA2MiwgOTYwNjYsIDk2MDcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NjA3NCwgOTYwNzcsIDk2MDgyLCA5NjA4OCwgCisgICAgOTYwOTYsIDk2MTAxLCA5NjEwNywgOTYxMTUsIDk2MTIxLCA5NjEyNywgOTYxMzEsIDk2MTM1LCA5NjE0MiwgOTYxNTEsIAorICAgIDk2MTU4LCA5NjE2NywgOTYxNzMsIDk2MTgyLCA5NjE4OSwgOTYxOTYsIDk2MjAzLCA5NjIxMywgOTYyMTksIDk2MjIzLCAKKyAgICA5NjIzMCwgOTYyMzksIDk2MjQ5LCA5NjI1NiwgOTYyNjMsIDk2MjY3LCA5NjI3MSwgOTYyNzgsIDk2Mjg4LCA5NjI5MiwgCisgICAgOTYyOTksIDk2MzA2LCA5NjMxMywgOTYzMTksIDk2MzI2LCA5NjMzMywgOTYzNDAsIDk2MzQ3LCA5NjM1MSwgOTYzNTUsIAorICAgIDk2MzU5LCA5NjM2NiwgOTYzNzAsIDk2Mzc3LCA5NjM4NCwgOTYzOTgsIDk2NDA3LCA5NjQxMSwgOTY0MTUsIDk2NDE5LCAKKyAgICA5NjQyNiwgOTY0MzAsIDk2NDM0LCA5NjQzOCwgOTY0NDYsIDk2NDU0LCA5NjQ3MywgOTY0ODMsIDk2NTAzLCA5NjUwNywgCisgICAgOTY1MTEsIDk2NTE1LCA5NjUxOSwgOTY1MjMsIDk2NTI3LCA5NjUzMSwgOTY1MzgsIDk2NTQyLCA5NjU0NSwgOTY1NDksIAorICAgIDk2NTUzLCA5NjU1OSwgOTY1NjYsIDk2NTc1LCA5NjU3OSwgOTY1ODgsIDk2NTk3LCA5NjYwNSwgOTY2MDksIDk2NjE2LCAKKyAgICA5NjYyMCwgOTY2MjQsIDk2NjI4LCA5NjYzMiwgOTY2NDMsIDk2NjUyLCA5NjY2MSwgOTY2NzAsIDk2Njc5LCA5NjY5MSwgCisgICAgOTY3MDAsIDk2NzA5LCA5NjcxOCwgOTY3MjYsIDk2NzM1LCA5Njc0NywgOTY3NTYsIDk2NzY1LCA5Njc3NCwgOTY3ODYsIAorICAgIDk2Nzk1LCA5NjgwNCwgOTY4MTYsIDk2ODI1LCA5NjgzNCwgOTY4NDYsIDk2ODU1LCA5Njg1OSwgOTY4NjMsIDk2ODY3LCAKKyAgICA5Njg3MSwgOTY4NzUsIDk2ODc5LCA5Njg4MywgOTY4OTAsIDk2ODk0LCA5Njg5OCwgOTY5MDksIDk2OTEzLCA5NjkxNywgCisgICAgOTY5MjQsIDk2OTMwLCA5NjkzNiwgOTY5NDAsIDk2OTQ3LCA5Njk1MSwgOTY5NTUsIDk2OTU5LCA5Njk2MywgOTY5NjcsIAorICAgIDk2OTcxLCA5Njk3NywgOTY5ODUsIDk2OTg5LCA5Njk5MywgOTY5OTYsIDk3MDAyLCA5NzAxMiwgOTcwMTYsIDk3MDI4LCAKKyAgICA5NzAzNSwgOTcwNDIsIDk3MDQ5LCA5NzA1NiwgOTcwNjIsIDk3MDY2LCA5NzA3MCwgOTcwNzQsIDk3MDc4LCA5NzA4NSwgCisgICAgOTcwOTQsIDk3MTAxLCA5NzEwOSwgOTcxMTcsIDk3MTIzLCA5NzEyNywgOTcxMzEsIDk3MTM1LCA5NzEzOSwgOTcxNDUsIAorICAgIDk3MTU0LCA5NzE2NiwgOTcxNzMsIDk3MTgwLCA5NzE4OSwgOTcyMDAsIDk3MjA2LCA5NzIxNSwgOTcyMjQsIDk3MjMxLCAKKyAgICA5NzI0MCwgOTcyNDcsIDk3MjU0LCA5NzI2NCwgOTcyNzEsIDk3Mjc4LCA5NzI4NSwgOTcyOTIsIDk3Mjk2LCA5NzMwMiwgCisgICAgOTczMDYsIDk3MzE3LCA5NzMyNSwgOTczMzQsIDk3MzQ2LCA5NzM1MywgOTczNjAsIDk3MzcwLCA5NzM3NywgOTczODYsIAorICAgIDk3MzkzLCA5NzQwMiwgOTc0MDksIDk3NDE2LCA5NzQyNiwgOTc0MzMsIDk3NDQwLCA5NzQ1MCwgOTc0NTcsIDk3NDY5LCAKKyAgICA5NzQ3OCwgOTc0ODUsIDk3NDkyLCA5NzQ5OSwgOTc1MDgsIDk3NTE4LCA5NzUzMSwgOTc1MzgsIDk3NTQ4LCA5NzU1OCwgCisgICAgOTc1NjUsIDk3NTc0LCA5NzU4NywgOTc1OTQsIDk3NjAxLCA5NzYwOCwgOTc2MTgsIDk3NjI4LCA5NzYzNSwgOTc2NDUsIAorICAgIDk3NjUyLCA5NzY1OSwgOTc2NjksIDk3Njc1LCA5NzY4MiwgOTc2ODksIDk3Njk2LCA5NzcwNiwgOTc3MTMsIDk3NzIwLCAKKyAgICA5NzcyNywgOTc3MzMsIDk3NzQwLCA5Nzc1MCwgOTc3NTcsIDk3NzYxLCA5Nzc2OSwgOTc3NzMsIDk3Nzg1LCA5Nzc4OSwgCisgICAgOTc4MDMsIDk3ODA3LCA5NzgxMSwgOTc4MTUsIDk3ODE5LCA5NzgyNSwgOTc4MzIsIDk3ODQwLCA5Nzg0NCwgOTc4NDgsIAorICAgIDk3ODUyLCA5Nzg1NiwgOTc4NjMsIDk3ODY3LCA5Nzg3MywgOTc4NzksIDk3ODg3LCA5Nzg5MSwgOTc4OTgsIDk3OTA2LCAKKyAgICA5NzkxMCwgOTc5MTQsIDk3OTIwLCA5NzkyNCwgOTc5MzMsIDk3OTQyLCA5Nzk0OSwgOTc5NTksIDk3OTY1LCA5Nzk2OSwgCisgICAgOTc5NzMsIDk3OTgxLCA5Nzk4OCwgOTc5OTUsIDk4MDAxLCA5ODAwNSwgOTgwMTMsIDk4MDE3LCA5ODAyNCwgOTgwMzYsIAorICAgIDk4MDQzLCA5ODA1MywgOTgwNTksIDk4MDYzLCA5ODA3MiwgOTgwNzksIDk4MDg4LCA5ODA5MiwgOTgwOTYsIDk4MTAzLCAKKyAgICA5ODEwNywgOTgxMTEsIDk4MTE1LCA5ODExOSwgOTgxMjIsIDk4MTI4LCA5ODEzNCwgOTgxMzgsIDk4MTQyLCA5ODE0OSwgCisgICAgOTgxNTYsIDk4MTYzLCA5ODE3MCwgOTgxNzcsIDk4MTg0LCA5ODE5MSwgOTgxOTgsIDk4MjA0LCA5ODIwOCwgOTgyMTIsIAorICAgIDk4MjE5LCA5ODIyNiwgOTgyMzMsIDk4MjQwLCA5ODI0NywgOTgyNTEsIDk4MjU0LCA5ODI1OSwgOTgyNjMsIDk4MjY3LCAKKyAgICA5ODI3NiwgOTgyODUsIDk4Mjg5LCA5ODI5MywgOTgyOTksIDk4MzA1LCA5ODMyMiwgOTgzMjgsIDk4MzMyLCA5ODM0MSwgCisgICAgOTgzNDUsIDk4MzQ5LCA5ODM1NiwgOTgzNjQsIDk4MzcyLCA5ODM3OCwgOTgzODIsIDk4Mzg2LCA5ODM5MCwgOTgzOTQsIAorICAgIDk4Mzk3LCA5ODQwMywgOTg0MTAsIDk4NDIwLCA5ODQyNywgOTg0MzQsIDk4NDQxLCA5ODQ0NywgOTg0NTQsIDk4NDYxLCAKKyAgICA5ODQ2OCwgOTg0NzUsIDk4NDgyLCA5ODQ5MSwgOTg0OTgsIDk4NTEwLCA5ODUxNywgOTg1MjQsIDk4NTM0LCA5ODU0NSwgCisgICAgOTg1NTIsIDk4NTU5LCA5ODU2NiwgOTg1NzMsIDk4NTgwLCA5ODU4NywgOTg1OTQsIDk4NjAxLCA5ODYwOCwgOTg2MTUsIAorICAgIDk4NjI1LCA5ODYzNSwgOTg2NDUsIDk4NjUyLCA5ODY2MiwgOTg2NjksIDk4Njc2LCA5ODY4MywgOTg2OTAsIDk4Njk2LCAKKyAgICA5ODcwMywgOTg3MTAsIDk4NzE3LCA5ODcyNCwgOTg3MzEsIDk4NzM4LCA5ODc0NSwgOTg3NTIsIDk4NzU4LCA5ODc2NSwgCisgICAgOTg3NzIsIDk4NzgxLCA5ODc4OCwgOTg3OTUsIDk4Nzk5LCA5ODgwNywgOTg4MTEsIDk4ODE1LCA5ODgxOSwgOTg4MjMsIAorICAgIDk4ODI3LCA5ODgzNCwgOTg4MzgsIDk4ODQ3LCA5ODg1MSwgOTg4NTgsIDk4ODY2LCA5ODg3MCwgOTg4NzQsIDk4ODc4LCAKKyAgICA5ODg5MSwgOTg5MDcsIDk4OTExLCA5ODkxNSwgOTg5MjIsIDk4OTI4LCA5ODkzNSwgOTg5MzksIDk4OTQzLCA5ODk0NywgCisgICAgOTg5NTEsIDk4OTU1LCA5ODk2MiwgOTg5NjYsIDk4OTg0LCA5ODk4OCwgOTg5OTIsIDk4OTk5LCA5OTAwMywgOTkwMDcsIAorICAgIDk5MDEzLCA5OTAxNywgOTkwMjEsIDk5MDI5LCA5OTAzMywgOTkwMzcsIDk5MDQxLCA5OTA0NSwgOTkwNTEsIDk5MDYyLCAKKyAgICA5OTA3MSwgOTkwODAsIDk5MDg3LCA5OTA5NCwgOTkxMDUsIDk5MTEyLCA5OTExOSwgOTkxMjYsIDk5MTMzLCA5OTE0MCwgCisgICAgOTkxNDcsIDk5MTU0LCA5OTE2NCwgOTkxNzAsIDk5MTc3LCA5OTE4NywgOTkxOTYsIDk5MjAzLCA5OTIxMiwgOTkyMjIsIAorICAgIDk5MjI5LCA5OTIzNiwgOTkyNDMsIDk5MjUwLCA5OTI2MiwgOTkyNjksIDk5Mjc2LCA5OTI4MywgOTkyOTAsIDk5Mjk3LCAKKyAgICA5OTMwNywgOTkzMTQsIDk5MzIxLCA5OTMzMSwgOTkzNDQsIDk5MzU2LCA5OTM2MywgOTkzNzMsIDk5MzgwLCA5OTM4NywgCisgICAgOTkzOTQsIDk5NDA4LCA5OTQxNCwgOTk0MjIsIDk5NDMyLCA5OTQ0MiwgOTk0NDksIDk5NDU2LCA5OTQ2MiwgOTk0NjYsIAorICAgIDk5NDczLCA5OTQ4MywgOTk0ODksIDk5NTAyLCA5OTUwNiwgOTk1MTAsIDk5NTE3LCA5OTUyMSwgOTk1MjgsIDk5NTM4LCAKKyAgICA5OTU0MiwgOTk1NDYsIDk5NTUwLCA5OTU1NCwgOTk1NTgsIDk5NTY1LCA5OTU2OSwgOTk1NzYsIDk5NTgzLCA5OTU5MCwgCisgICAgOTk1OTksIDk5NjA4LCA5OTYxOCwgOTk2MjUsIDk5NjMyLCA5OTYzOSwgOTk2NDksIDk5NjU2LCA5OTY2NiwgOTk2NzMsIAorICAgIDk5NjgzLCA5OTY5MCwgOTk2OTcsIDk5NzA3LCA5OTcxNywgOTk3MjQsIDk5NzMwLCA5OTczOCwgOTk3NDYsIDk5NzUyLCAKKyAgICA5OTc1OCwgOTk3NjIsIDk5NzY2LCA5OTc3MywgOTk3ODEsIDk5Nzg3LCA5OTc5MSwgOTk3OTUsIDk5Nzk5LCA5OTgwNiwgCisgICAgOTk4MTgsIDk5ODIxLCA5OTgyOCwgOTk4MzQsIDk5ODM4LCA5OTg0MiwgOTk4NDYsIDk5ODUwLCA5OTg1NCwgOTk4NTgsIAorICAgIDk5ODYyLCA5OTg2NiwgOTk4NzAsIDk5ODc0LCA5OTg4MSwgOTk4ODUsIDk5ODkxLCA5OTg5NSwgOTk4OTksIDk5OTAzLCAKKyAgICA5OTkwOSwgOTk5MTYsIDk5OTIzLCA5OTkzMCwgOTk5NDEsIDk5OTQ5LCA5OTk1MywgOTk5NTksIDk5OTY4LCA5OTk3NSwgCisgICAgOTk5ODEsIDk5OTg0LCA5OTk4OCwgOTk5OTIsIDk5OTk4LCAxMDAwMDcsIDEwMDAxNSwgMTAwMDE5LCAxMDAwMjUsIAorICAgIDEwMDAyOSwgMTAwMDMzLCAxMDAwMzcsIDEwMDA0MywgMTAwMDUwLCAxMDAwNTYsIDEwMDA2MCwgMTAwMDY2LCAxMDAwNzAsIAorICAgIDEwMDA3NCwgMTAwMDgzLCAxMDAwOTUsIDEwMDA5OSwgMTAwMTA2LCAxMDAxMTMsIDEwMDEyMywgMTAwMTMwLCAxMDAxNDIsIAorICAgIDEwMDE0OSwgMTAwMTU2LCAxMDAxNjMsIDEwMDE3NCwgMTAwMTg0LCAxMDAxOTcsIDEwMDIwNywgMTAwMjE0LCAxMDAyMTgsIAorICAgIDEwMDIyMiwgMTAwMjI2LCAxMDAyMzAsIDEwMDIzOSwgMTAwMjQ4LCAxMDAyNTcsIDEwMDI3NCwgMTAwMjgzLCAxMDAyODksIAorICAgIDEwMDI5NiwgMTAwMzA0LCAxMDAzMTcsIDEwMDMyMSwgMTAwMzMwLCAxMDAzMzksIDEwMDM0OCwgMTAwMzU3LCAxMDAzNjgsIAorICAgIDEwMDM3NywgMTAwMzg2LCAxMDAzOTUsIDEwMDQwNCwgMTAwNDEzLCAxMDA0MjIsIDEwMDQzMiwgMTAwNDM1LCAxMDA0MzksIAorICAgIDEwMDQ0MywgMTAwNDQ3LCAxMDA0NTEsIDEwMDQ1NSwgMTAwNDYxLCAxMDA0NjgsIDEwMDQ3NSwgMTAwNDgyLCAxMDA0ODgsIAorICAgIDEwMDQ5NCwgMTAwNTAxLCAxMDA1MDcsIDEwMDUxNCwgMTAwNTIyLCAxMDA1MjYsIDEwMDUzMywgMTAwNTQwLCAxMDA1NDcsIAorICAgIDEwMDU1NSwgMTAwNTU4LCAxMDA1NjIsIDEwMDU2NiwgMTAwNTcwLCAxMDA1NzMsIDEwMDU3OSwgMTAwNTgzLCAxMDA1ODksIAorICAgIDEwMDU5NiwgMTAwNjAzLCAxMDA2MDksIDEwMDYxNiwgMTAwNjIzLCAxMDA2MzAsIDEwMDYzNywgMTAwNjQ0LCAxMDA2NTEsIAorICAgIDEwMDY1OCwgMTAwNjY1LCAxMDA2NzIsIDEwMDY3OSwgMTAwNjg2LCAxMDA2OTMsIDEwMDcwMCwgMTAwNzA3LCAxMDA3MTMsIAorICAgIDEwMDcxNywgMTAwNzI2LCAxMDA3MzAsIDEwMDczNCwgMTAwNzM4LCAxMDA3NDIsIDEwMDc0OCwgMTAwNzU1LCAxMDA3NjIsIAorICAgIDEwMDc2OSwgMTAwNzc2LCAxMDA3ODMsIDEwMDc4OSwgMTAwNzk3LCAxMDA4MDEsIDEwMDgwNSwgMTAwODA5LCAxMDA4MTMsIAorICAgIDEwMDgxOSwgMTAwODM2LCAxMDA4NTMsIDEwMDg1NywgMTAwODYxLCAxMDA4NjUsIDEwMDg2OSwgMTAwODczLCAxMDA4NzcsIAorICAgIDEwMDg4MywgMTAwODkwLCAxMDA4OTQsIDEwMDkwMCwgMTAwOTA3LCAxMDA5MTQsIDEwMDkyMSwgMTAwOTI4LCAxMDA5MzUsIAorICAgIDEwMDk0NCwgMTAwOTUxLCAxMDA5NTgsIDEwMDk2NSwgMTAwOTcyLCAxMDA5NzYsIDEwMDk4MCwgMTAwOTg2LCAxMDA5OTgsIAorICAgIDEwMTAwMiwgMTAxMDA2LCAxMDEwMTUsIDEwMTAxOSwgMTAxMDIzLCAxMDEwMjcsIDEwMTAzMywgMTAxMDM3LCAxMDEwNDEsIAorICAgIDEwMTA1MCwgMTAxMDU0LCAxMDEwNTgsIDEwMTA2MiwgMTAxMDY5LCAxMDEwNzMsIDEwMTA3NywgMTAxMDgxLCAxMDEwODUsIAorICAgIDEwMTA4OSwgMTAxMDkzLCAxMDEwOTcsIDEwMTEwMSwgMTAxMTA3LCAxMDExMTQsIDEwMTEyMSwgMTAxMTI3LCAxMDExMzEsIAorICAgIDEwMTE0OCwgMTAxMTU0LCAxMDExNTgsIDEwMTE2NCwgMTAxMTcwLCAxMDExNzYsIDEwMTE4MiwgMTAxMTg4LCAxMDExOTQsIAorICAgIDEwMTE5OCwgMTAxMjAyLCAxMDEyMDYsIDEwMTIxMiwgMTAxMjE2LCAxMDEyMjIsIDEwMTIyNiwgMTAxMjMwLCAxMDEyMzcsIAorICAgIDEwMTI0NCwgMTAxMjYxLCAxMDEyNjUsIDEwMTI2OSwgMTAxMjczLCAxMDEyNzcsIDEwMTI4MSwgMTAxMjkzLCAxMDEyOTYsIAorICAgIDEwMTMwMSwgMTAxMzA2LCAxMDEzMjEsIDEwMTMzMSwgMTAxMzQzLCAxMDEzNDcsIDEwMTM1MSwgMTAxMzU1LCAxMDEzNjEsIAorICAgIDEwMTM2OCwgMTAxMzc1LCAxMDEzODUsIDEwMTM5NywgMTAxNDAzLCAxMDE0MDksIDEwMTQxOCwgMTAxNDIyLCAxMDE0MjYsIAorICAgIDEwMTQzMywgMTAxNDQzLCAxMDE0NTAsIDEwMTQ1NiwgMTAxNDYwLCAxMDE0NjQsIDEwMTQ3MSwgMTAxNDc3LCAxMDE0ODEsIAorICAgIDEwMTQ4NywgMTAxNDkxLCAxMDE0OTksIDEwMTUwNSwgMTAxNTA5LCAxMDE1MTcsIDEwMTUyNSwgMTAxNTMyLCAxMDE1MzgsIAorICAgIDEwMTU0NSwgMTAxNTUyLCAxMDE1NjIsIDEwMTU3MiwgMTAxNTc2LCAxMDE1ODAsIDEwMTU4NCwgMTAxNTg4LCAxMDE1OTQsIAorICAgIDEwMTYwMSwgMTAxNjA3LCAxMDE2MTQsIDEwMTYyMSwgMTAxNjI4LCAxMDE2MzcsIDEwMTY0NCwgMTAxNjUxLCAxMDE2NTcsIAorICAgIDEwMTY2NCwgMTAxNjcxLCAxMDE2NzgsIDEwMTY4NSwgMTAxNjkyLCAxMDE2OTksIDEwMTcwNSwgMTAxNzEyLCAxMDE3MTksIAorICAgIDEwMTcyNiwgMTAxNzM1LCAxMDE3NDIsIDEwMTc0OSwgMTAxNzUzLCAxMDE3NTksIDEwMTc2MywgMTAxNzY5LCAxMDE3NzYsIAorICAgIDEwMTc4MywgMTAxNzkwLCAxMDE3OTQsIDEwMTc5OCwgMTAxODAyLCAxMDE4MDYsIDEwMTgxMCwgMTAxODE3LCAxMDE4MjEsIAorICAgIDEwMTgyNSwgMTAxODMxLCAxMDE4MzksIDEwMTg0MywgMTAxODQ3LCAxMDE4NTEsIDEwMTg1NSwgMTAxODYyLCAxMDE4NjYsIAorICAgIDEwMTg3MCwgMTAxODc4LCAxMDE4ODIsIDEwMTg4NiwgMTAxODkwLCAxMDE4OTQsIDEwMTkwMCwgMTAxOTA0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDE5MDgsIDEwMTkxNCwgMTAxOTIwLCAxMDE5MjcsIAorICAgIDEwMTkzNCwgMTAxOTQxLCAxMDE5NDgsIDEwMTk1NSwgMTAxOTYyLCAxMDE5NjgsIDEwMTk3NSwgMTAxOTgyLCAxMDE5ODksIAorICAgIDEwMTk5NiwgMTAyMDAzLCAxMDIwMTAsIDEwMjAxNiwgMTAyMDIyLCAxMDIwMjgsIDEwMjAzNCwgMTAyMDQwLCAxMDIwNDYsIAorICAgIDEwMjA1MiwgMTAyMDU4LCAxMDIwNjQsIDEwMjA3MSwgMTAyMDc4LCAxMDIwODUsIDEwMjA5MiwgMTAyMDk5LCAxMDIxMDYsIAorICAgIDEwMjExMiwgMTAyMTE4LCAxMDIxMjQsIDEwMjEzMSwgMTAyMTM4LCAxMDIxNDQsIDEwMjE1MCwgMTAyMTU5LCAxMDIxNjYsIAorICAgIDEwMjE3MywgMTAyMTgwLCAxMDIxODcsIDEwMjE5NCwgMTAyMjAxLCAxMDIyMDcsIDEwMjIxMywgMTAyMjE5LCAxMDIyMjgsIAorICAgIDEwMjIzNSwgMTAyMjQyLCAxMDIyNTMsIDEwMjI2NCwgMTAyMjcwLCAxMDIyNzYsIDEwMjI4MiwgMTAyMjkxLCAxMDIyOTgsIAorICAgIDEwMjMwNSwgMTAyMzE1LCAxMDIzMjUsIDEwMjMzNiwgMTAyMzQ3LCAxMDIzNTksIDEwMjM3MiwgMTAyMzgzLCAxMDIzOTQsIAorICAgIDEwMjQwNiwgMTAyNDE5LCAxMDI0MzAsIDEwMjQ0MSwgMTAyNDUyLCAxMDI0NjMsIDEwMjQ3NCwgMTAyNDg2LCAxMDI0OTQsIAorICAgIDEwMjUwMiwgMTAyNTExLCAxMDI1MjAsIDEwMjUyOSwgMTAyNTM1LCAxMDI1NDEsIDEwMjU0NywgMTAyNTU0LCAxMDI1NjQsIAorICAgIDEwMjU3MSwgMTAyNTgxLCAxMDI1ODYsIDEwMjU5MSwgMTAyNTk3LCAxMDI2MDMsIDEwMjYxMSwgMTAyNjE5LCAxMDI2MjgsIAorICAgIDEwMjYzOSwgMTAyNjUwLCAxMDI2NTgsIDEwMjY2NiwgMTAyNjc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMDI2ODQsIDEwMjY5NSwgMTAyNzAyLCAxMDI3MTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwMjcxOCwgMTAyNzIyLCAxMDI3MjYsIDEwMjczMCwgMTAyNzM0LCAxMDI3MzgsIDEwMjc0MiwgMTAyNzQ2LCAxMDI3NTAsIAorICAgIDEwMjc1NCwgMTAyNzU4LCAxMDI3NjIsIDEwMjc2NiwgMTAyNzcwLCAxMDI3NzQsIDEwMjc3OCwgMTAyNzgyLCAxMDI3ODYsIAorICAgIDEwMjc5MCwgMTAyNzk0LCAxMDI3OTgsIDEwMjgwMiwgMTAyODA2LCAxMDI4MTAsIDEwMjgxNCwgMTAyODE4LCAxMDI4MjIsIAorICAgIDEwMjgyNiwgMTAyODMwLCAxMDI4MzQsIDEwMjgzOCwgMTAyODQyLCAxMDI4NDYsIDEwMjg1MCwgMTAyODU0LCAxMDI4NTgsIAorICAgIDEwMjg2MiwgMTAyODY2LCAxMDI4NzAsIDEwMjg3NCwgMTAyODc4LCAxMDI4ODIsIDEwMjg4NiwgMTAyODkwLCAxMDI4OTQsIAorICAgIDEwMjg5OCwgMTAyOTAyLCAxMDI5MDYsIDEwMjkxMCwgMTAyOTE0LCAxMDI5MTgsIDEwMjkyMiwgMTAyOTI2LCAxMDI5MzAsIAorICAgIDEwMjkzNCwgMTAyOTM4LCAxMDI5NDIsIDEwMjk0NiwgMTAyOTUwLCAxMDI5NTQsIDEwMjk1OCwgMTAyOTYyLCAxMDI5NjYsIAorICAgIDEwMjk3MCwgMTAyOTc0LCAxMDI5NzgsIDEwMjk4MiwgMTAyOTg2LCAxMDI5OTAsIDEwMjk5NCwgMTAyOTk4LCAxMDMwMDIsIAorICAgIDEwMzAwNiwgMTAzMDEwLCAxMDMwMTQsIDEwMzAxOCwgMTAzMDIyLCAxMDMwMjYsIDEwMzAzMCwgMTAzMDM0LCAxMDMwMzgsIAorICAgIDEwMzA0MiwgMTAzMDQ2LCAxMDMwNTAsIDEwMzA1NCwgMTAzMDU4LCAxMDMwNjIsIDEwMzA2NiwgMTAzMDcwLCAxMDMwNzQsIAorICAgIDEwMzA3OCwgMTAzMDgyLCAxMDMwODYsIDEwMzA5MCwgMTAzMDk0LCAxMDMwOTgsIDEwMzEwMiwgMTAzMTA2LCAxMDMxMTAsIAorICAgIDEwMzExNCwgMTAzMTE4LCAxMDMxMjIsIDEwMzEyNiwgMTAzMTMwLCAxMDMxMzQsIDEwMzEzOCwgMTAzMTQyLCAxMDMxNDYsIAorICAgIDEwMzE1MCwgMTAzMTU0LCAxMDMxNTgsIDEwMzE2MiwgMTAzMTY2LCAxMDMxNzAsIDEwMzE3NCwgMTAzMTc4LCAxMDMxODIsIAorICAgIDEwMzE4NiwgMTAzMTkwLCAxMDMxOTQsIDEwMzE5OCwgMTAzMjAyLCAxMDMyMDYsIDEwMzIxMCwgMTAzMjE0LCAxMDMyMTgsIAorICAgIDEwMzIyMiwgMTAzMjI2LCAxMDMyMzAsIDEwMzIzNCwgMTAzMjM4LCAxMDMyNDIsIDEwMzI0NiwgMTAzMjUwLCAxMDMyNTQsIAorICAgIDEwMzI1OCwgMTAzMjYyLCAxMDMyNjYsIDEwMzI3MCwgMTAzMjc0LCAxMDMyNzgsIDEwMzI4MiwgMTAzMjg2LCAxMDMyOTAsIAorICAgIDEwMzI5NCwgMTAzMjk4LCAxMDMzMDIsIDEwMzMwNiwgMTAzMzEwLCAxMDMzMTQsIDEwMzMxOCwgMTAzMzIyLCAxMDMzMjYsIAorICAgIDEwMzMzMCwgMTAzMzM0LCAxMDMzMzgsIDEwMzM0MiwgMTAzMzQ2LCAxMDMzNTAsIDEwMzM1NCwgMTAzMzU4LCAxMDMzNjIsIAorICAgIDEwMzM2NiwgMTAzMzcwLCAxMDMzNzQsIDEwMzM3OCwgMTAzMzgyLCAxMDMzODYsIDEwMzM5MCwgMTAzMzk0LCAxMDMzOTgsIAorICAgIDEwMzQwMiwgMTAzNDA2LCAxMDM0MTAsIDEwMzQxNCwgMTAzNDE4LCAxMDM0MjIsIDEwMzQyNiwgMTAzNDMwLCAxMDM0MzQsIAorICAgIDEwMzQzOCwgMTAzNDQyLCAxMDM0NDYsIDEwMzQ1MCwgMTAzNDU0LCAxMDM0NTgsIDEwMzQ2MiwgMTAzNDY2LCAxMDM0NzAsIAorICAgIDEwMzQ3NCwgMTAzNDc4LCAxMDM0ODIsIDEwMzQ4NiwgMTAzNDkwLCAxMDM0OTQsIDEwMzQ5OCwgMTAzNTAyLCAxMDM1MDYsIAorICAgIDEwMzUxMCwgMTAzNTE0LCAxMDM1MTgsIDEwMzUyMiwgMTAzNTI2LCAxMDM1MzAsIDEwMzUzNCwgMTAzNTM4LCAxMDM1NDIsIAorICAgIDEwMzU0NiwgMTAzNTUwLCAxMDM1NTQsIDEwMzU1OCwgMTAzNTYyLCAxMDM1NjYsIDEwMzU3MCwgMTAzNTc0LCAxMDM1NzgsIAorICAgIDEwMzU4MiwgMTAzNTg2LCAxMDM1OTAsIDEwMzU5NCwgMTAzNTk4LCAxMDM2MDIsIDEwMzYwNiwgMTAzNjEwLCAxMDM2MTQsIAorICAgIDEwMzYxOCwgMTAzNjIyLCAxMDM2MjYsIDEwMzYzMCwgMTAzNjM0LCAxMDM2MzgsIDEwMzY0MiwgMTAzNjQ2LCAxMDM2NTAsIAorICAgIDEwMzY1NCwgMTAzNjU4LCAxMDM2NjIsIDEwMzY2NiwgMTAzNjcwLCAxMDM2NzQsIDEwMzY3OCwgMTAzNjgyLCAxMDM2ODYsIAorICAgIDEwMzY5MCwgMTAzNjk0LCAxMDM2OTgsIDEwMzcwMiwgMTAzNzA2LCAxMDM3MTAsIDEwMzcxNCwgMTAzNzE4LCAxMDM3MjIsIAorICAgIDEwMzcyNiwgMTAzNzMwLCAxMDM3MzQsIDEwMzczOCwgMTAzNzQyLCAxMDM3NDYsIDEwMzc1MCwgMTAzNzU0LCAxMDM3NTgsIAorICAgIDEwMzc2MiwgMTAzNzY2LCAxMDM3NzAsIDEwMzc3NCwgMTAzNzc4LCAxMDM3ODIsIDEwMzc4NiwgMTAzNzkwLCAxMDM3OTQsIAorICAgIDEwMzc5OCwgMTAzODAyLCAxMDM4MDYsIDEwMzgxMCwgMTAzODE0LCAxMDM4MTgsIDEwMzgyMiwgMTAzODI2LCAxMDM4MzAsIAorICAgIDEwMzgzNCwgMTAzODM4LCAxMDM4NDIsIDEwMzg0NiwgMTAzODUwLCAxMDM4NTQsIDEwMzg1OCwgMTAzODYyLCAxMDM4NjYsIAorICAgIDEwMzg3MCwgMTAzODc0LCAxMDM4NzgsIDEwMzg4MiwgMTAzODg2LCAxMDM4OTAsIDEwMzg5NCwgMTAzODk4LCAxMDM5MDIsIAorICAgIDEwMzkwNiwgMTAzOTEwLCAxMDM5MTQsIDEwMzkxOCwgMTAzOTIyLCAxMDM5MjYsIDEwMzkzMCwgMTAzOTM0LCAxMDM5MzgsIAorICAgIDEwMzk0MiwgMTAzOTQ2LCAxMDM5NTAsIDEwMzk1NCwgMTAzOTU4LCAxMDM5NjIsIDEwMzk2NiwgMTAzOTcwLCAxMDM5NzQsIAorICAgIDEwMzk3OCwgMTAzOTgyLCAxMDM5ODYsIDEwMzk5MCwgMTAzOTk0LCAxMDM5OTgsIDEwNDAwMiwgMTA0MDA2LCAxMDQwMTAsIAorICAgIDEwNDAxNCwgMTA0MDE4LCAxMDQwMjIsIDEwNDAyNiwgMTA0MDMwLCAxMDQwMzQsIDEwNDAzOCwgMTA0MDQyLCAxMDQwNDYsIAorICAgIDEwNDA1MCwgMTA0MDU0LCAxMDQwNTgsIDEwNDA2MiwgMTA0MDY2LCAxMDQwNzAsIDEwNDA3NCwgMTA0MDc4LCAxMDQwODIsIAorICAgIDEwNDA4NiwgMTA0MDkwLCAxMDQwOTQsIDEwNDA5OCwgMTA0MTAyLCAxMDQxMDYsIDEwNDExMCwgMTA0MTE0LCAxMDQxMTgsIAorICAgIDEwNDEyMiwgMTA0MTI2LCAxMDQxMzAsIDEwNDEzNCwgMTA0MTM4LCAxMDQxNDIsIDEwNDE0NiwgMTA0MTUwLCAxMDQxNTQsIAorICAgIDEwNDE1OCwgMTA0MTYyLCAxMDQxNjYsIDEwNDE3MCwgMTA0MTc0LCAxMDQxNzgsIDEwNDE4MiwgMTA0MTg2LCAxMDQxOTAsIAorICAgIDEwNDE5NCwgMTA0MTk4LCAxMDQyMDIsIDEwNDIwNiwgMTA0MjEwLCAxMDQyMTQsIDEwNDIxOCwgMTA0MjIyLCAxMDQyMjYsIAorICAgIDEwNDIzMCwgMTA0MjM0LCAxMDQyMzgsIDEwNDI0MiwgMTA0MjQ2LCAxMDQyNTAsIDEwNDI1NCwgMTA0MjU4LCAxMDQyNjIsIAorICAgIDEwNDI2NiwgMTA0MjcwLCAxMDQyNzQsIDEwNDI3OCwgMTA0MjgyLCAxMDQyODYsIDEwNDI5MCwgMTA0Mjk0LCAxMDQyOTgsIAorICAgIDEwNDMwMiwgMTA0MzA2LCAxMDQzMTAsIDEwNDMxNCwgMTA0MzE4LCAxMDQzMjIsIDEwNDMyNiwgMTA0MzMwLCAxMDQzMzQsIAorICAgIDEwNDMzOCwgMTA0MzQyLCAxMDQzNDYsIDEwNDM1MCwgMTA0MzU0LCAxMDQzNTgsIDEwNDM2MiwgMTA0MzY2LCAxMDQzNzAsIAorICAgIDEwNDM3NCwgMTA0Mzc4LCAxMDQzODIsIDEwNDM4NiwgMTA0MzkwLCAxMDQzOTQsIDEwNDM5OCwgMTA0NDAyLCAxMDQ0MDYsIAorICAgIDEwNDQxMCwgMTA0NDE0LCAxMDQ0MTgsIDEwNDQyMiwgMTA0NDI2LCAxMDQ0MzAsIDEwNDQzNCwgMTA0NDM4LCAxMDQ0NDIsIAorICAgIDEwNDQ0NiwgMTA0NDUwLCAxMDQ0NTQsIDEwNDQ1OCwgMTA0NDYyLCAxMDQ0NjYsIDEwNDQ3MCwgMTA0NDc0LCAxMDQ0NzgsIAorICAgIDEwNDQ4MiwgMTA0NDg2LCAxMDQ0OTAsIDEwNDQ5NCwgMTA0NDk4LCAxMDQ1MDIsIDEwNDUwNiwgMTA0NTEwLCAxMDQ1MTQsIAorICAgIDEwNDUxOCwgMTA0NTIyLCAxMDQ1MjYsIDEwNDUzMCwgMTA0NTM0LCAxMDQ1MzgsIDEwNDU0MiwgMTA0NTQ2LCAxMDQ1NTAsIAorICAgIDEwNDU1NCwgMTA0NTU4LCAxMDQ1NjIsIDEwNDU2NiwgMTA0NTcwLCAxMDQ1NzQsIDEwNDU3OCwgMTA0NTgyLCAxMDQ1ODYsIAorICAgIDEwNDU5MCwgMTA0NTk0LCAxMDQ1OTgsIDEwNDYwMiwgMTA0NjA2LCAxMDQ2MTAsIDEwNDYxNCwgMTA0NjE4LCAxMDQ2MjIsIAorICAgIDEwNDYyNiwgMTA0NjMwLCAxMDQ2MzQsIDEwNDYzOCwgMTA0NjQyLCAxMDQ2NDYsIDEwNDY1MCwgMTA0NjU0LCAxMDQ2NTgsIAorICAgIDEwNDY2MiwgMTA0NjY2LCAxMDQ2NzAsIDEwNDY3NCwgMTA0Njc4LCAxMDQ2ODIsIDEwNDY4NiwgMTA0NjkwLCAxMDQ2OTQsIAorICAgIDEwNDY5OCwgMTA0NzAyLCAxMDQ3MDYsIDEwNDcxMCwgMTA0NzE0LCAxMDQ3MTgsIDEwNDcyMiwgMTA0NzI2LCAxMDQ3MzAsIAorICAgIDEwNDczNCwgMTA0NzM4LCAxMDQ3NDIsIDEwNDc0NiwgMTA0NzUwLCAxMDQ3NTQsIDEwNDc1OCwgMTA0NzYyLCAxMDQ3NjYsIAorICAgIDEwNDc3MCwgMTA0Nzc0LCAxMDQ3NzgsIDEwNDc4MiwgMTA0Nzg2LCAxMDQ3OTAsIDEwNDc5NCwgMTA0Nzk4LCAxMDQ4MDIsIAorICAgIDEwNDgwNiwgMTA0ODEwLCAxMDQ4MTQsIDEwNDgxOCwgMTA0ODIyLCAxMDQ4MjYsIDEwNDgzMCwgMTA0ODM0LCAxMDQ4MzgsIAorICAgIDEwNDg0MiwgMTA0ODQ2LCAxMDQ4NTAsIDEwNDg1NCwgMTA0ODU4LCAxMDQ4NjIsIDEwNDg2NiwgMTA0ODcwLCAxMDQ4NzQsIAorICAgIDEwNDg3OCwgMTA0ODgyLCAxMDQ4ODYsIDEwNDg5MCwgMTA0ODk0LCAxMDQ4OTgsIDEwNDkwMiwgMTA0OTA2LCAxMDQ5MTAsIAorICAgIDEwNDkxNCwgMTA0OTE4LCAxMDQ5MjIsIDEwNDkyNiwgMTA0OTMwLCAxMDQ5MzQsIDEwNDkzOCwgMTA0OTQyLCAxMDQ5NDYsIAorICAgIDEwNDk1MCwgMTA0OTU0LCAxMDQ5NTgsIDEwNDk2MiwgMTA0OTY2LCAxMDQ5NzAsIDEwNDk3NCwgMTA0OTc4LCAxMDQ5ODIsIAorICAgIDEwNDk4NiwgMTA0OTkwLCAxMDQ5OTQsIDEwNDk5OCwgMTA1MDAyLCAxMDUwMDYsIDEwNTAxMCwgMTA1MDE0LCAxMDUwMTgsIAorICAgIDEwNTAyMiwgMTA1MDI2LCAxMDUwMzAsIDEwNTAzNCwgMTA1MDM4LCAxMDUwNDIsIDEwNTA0NiwgMTA1MDUwLCAxMDUwNTQsIAorICAgIDEwNTA1OCwgMTA1MDYyLCAxMDUwNjYsIDEwNTA3MCwgMTA1MDc0LCAxMDUwNzgsIDEwNTA4MiwgMTA1MDg2LCAxMDUwOTAsIAorICAgIDEwNTA5NCwgMTA1MDk4LCAxMDUxMDIsIDEwNTEwNiwgMTA1MTEwLCAxMDUxMTQsIDEwNTExOCwgMTA1MTIyLCAxMDUxMjYsIAorICAgIDEwNTEzMCwgMTA1MTM0LCAxMDUxMzgsIDEwNTE0MiwgMTA1MTQ2LCAxMDUxNTAsIDEwNTE1NCwgMTA1MTU4LCAxMDUxNjIsIAorICAgIDEwNTE2NiwgMTA1MTcwLCAxMDUxNzQsIDEwNTE3OCwgMTA1MTgyLCAxMDUxODYsIDEwNTE5MCwgMTA1MTk0LCAxMDUxOTgsIAorICAgIDEwNTIwMiwgMTA1MjA2LCAxMDUyMTAsIDEwNTIxNCwgMTA1MjE4LCAxMDUyMjIsIDEwNTIyNiwgMTA1MjMwLCAxMDUyMzQsIAorICAgIDEwNTIzOCwgMTA1MjQyLCAxMDUyNDYsIDEwNTI1MCwgMTA1MjU0LCAxMDUyNTgsIDEwNTI2MiwgMTA1MjY2LCAxMDUyNzAsIAorICAgIDEwNTI3NCwgMTA1Mjc4LCAxMDUyODIsIDEwNTI4NiwgMTA1MjkwLCAxMDUyOTQsIDEwNTI5OCwgMTA1MzAyLCAxMDUzMDYsIAorICAgIDEwNTMxMCwgMTA1MzE0LCAxMDUzMTgsIDEwNTMyMiwgMTA1MzI2LCAxMDUzMzAsIDEwNTMzNCwgMTA1MzM4LCAxMDUzNDIsIAorICAgIDEwNTM0NiwgMTA1MzUwLCAxMDUzNTQsIDEwNTM1OCwgMTA1MzYyLCAxMDUzNjYsIDEwNTM3MCwgMTA1Mzc0LCAxMDUzNzgsIAorICAgIDEwNTM4MiwgMTA1Mzg2LCAxMDUzOTAsIDEwNTM5NCwgMTA1Mzk4LCAxMDU0MDIsIDEwNTQwNiwgMTA1NDEwLCAxMDU0MTQsIAorICAgIDEwNTQxOCwgMTA1NDIyLCAxMDU0MjYsIDEwNTQzMCwgMTA1NDM0LCAxMDU0MzgsIDEwNTQ0MiwgMTA1NDQ2LCAxMDU0NTAsIAorICAgIDEwNTQ1NCwgMTA1NDU4LCAxMDU0NjIsIDEwNTQ2NiwgMTA1NDcwLCAxMDU0NzQsIDEwNTQ3OCwgMTA1NDgyLCAxMDU0ODYsIAorICAgIDEwNTQ5MCwgMTA1NDk0LCAxMDU0OTgsIDEwNTUwMiwgMTA1NTA2LCAxMDU1MTAsIDEwNTUxNCwgMTA1NTE4LCAxMDU1MjIsIAorICAgIDEwNTUyNiwgMTA1NTMwLCAxMDU1MzQsIDEwNTUzOCwgMTA1NTQyLCAxMDU1NDYsIDEwNTU1MCwgMTA1NTU0LCAxMDU1NTgsIAorICAgIDEwNTU2MiwgMTA1NTY2LCAxMDU1NzAsIDEwNTU3NCwgMTA1NTc4LCAxMDU1ODIsIDEwNTU4NiwgMTA1NTkwLCAxMDU1OTQsIAorICAgIDEwNTU5OCwgMTA1NjAyLCAxMDU2MDYsIDEwNTYxMCwgMTA1NjE0LCAxMDU2MTgsIDEwNTYyMiwgMTA1NjI2LCAxMDU2MzAsIAorICAgIDEwNTYzNCwgMTA1NjM4LCAxMDU2NDIsIDEwNTY0NiwgMTA1NjUwLCAxMDU2NTQsIDEwNTY1OCwgMTA1NjYyLCAxMDU2NjYsIAorICAgIDEwNTY3MCwgMTA1Njc0LCAxMDU2NzgsIDEwNTY4MiwgMTA1Njg2LCAxMDU2OTAsIDEwNTY5NCwgMTA1Njk4LCAxMDU3MDIsIAorICAgIDEwNTcwNiwgMTA1NzEwLCAxMDU3MTQsIDEwNTcxOCwgMTA1NzIyLCAxMDU3MjYsIDEwNTczMCwgMTA1NzM0LCAxMDU3MzgsIAorICAgIDEwNTc0MiwgMTA1NzQ2LCAxMDU3NTAsIDEwNTc1NCwgMTA1NzU4LCAxMDU3NjIsIDEwNTc2NiwgMTA1NzcwLCAxMDU3NzQsIAorICAgIDEwNTc3OCwgMTA1NzgyLCAxMDU3ODYsIDEwNTc5MCwgMTA1Nzk0LCAxMDU3OTgsIDEwNTgwMiwgMTA1ODA2LCAxMDU4MTAsIAorICAgIDEwNTgxNCwgMTA1ODE4LCAxMDU4MjIsIDEwNTgyNiwgMTA1ODMwLCAxMDU4MzQsIDEwNTgzOCwgMTA1ODQyLCAxMDU4NDYsIAorICAgIDEwNTg1MCwgMTA1ODU0LCAxMDU4NTgsIDEwNTg2MiwgMTA1ODY2LCAxMDU4NzAsIDEwNTg3NCwgMTA1ODc4LCAxMDU4ODIsIAorICAgIDEwNTg4NiwgMTA1ODkwLCAxMDU4OTQsIDEwNTg5OCwgMTA1OTAyLCAxMDU5MDYsIDEwNTkxMCwgMTA1OTE0LCAxMDU5MTgsIAorICAgIDEwNTkyMiwgMTA1OTI2LCAxMDU5MzAsIDEwNTkzNCwgMTA1OTM4LCAxMDU5NDIsIDEwNTk0NiwgMTA1OTUwLCAxMDU5NTQsIAorICAgIDEwNTk1OCwgMTA1OTYyLCAxMDU5NjYsIDEwNTk3MCwgMTA1OTc0LCAxMDU5NzgsIDEwNTk4MiwgMTA1OTg2LCAxMDU5OTAsIAorICAgIDEwNTk5NCwgMTA1OTk4LCAxMDYwMDIsIDEwNjAwNiwgMTA2MDEwLCAxMDYwMTQsIDEwNjAxOCwgMTA2MDIyLCAxMDYwMjYsIAorICAgIDEwNjAzMCwgMTA2MDM0LCAxMDYwMzgsIDEwNjA0MiwgMTA2MDQ2LCAxMDYwNTAsIDEwNjA1NCwgMTA2MDU4LCAxMDYwNjIsIAorICAgIDEwNjA2NiwgMTA2MDcwLCAxMDYwNzQsIDEwNjA3OCwgMTA2MDgyLCAxMDYwODYsIDEwNjA5MCwgMTA2MDk0LCAxMDYwOTgsIAorICAgIDEwNjEwMiwgMTA2MTA2LCAxMDYxMTAsIDEwNjExNCwgMTA2MTE4LCAxMDYxMjIsIDEwNjEyNiwgMTA2MTMwLCAxMDYxMzQsIAorICAgIDEwNjEzOCwgMTA2MTQyLCAxMDYxNDYsIDEwNjE1MCwgMTA2MTU0LCAxMDYxNTgsIDEwNjE2MiwgMTA2MTY2LCAxMDYxNzAsIAorICAgIDEwNjE3NCwgMTA2MTc4LCAxMDYxODIsIDEwNjE4NiwgMTA2MTkwLCAxMDYxOTQsIDEwNjE5OCwgMTA2MjAyLCAxMDYyMDYsIAorICAgIDEwNjIxMCwgMTA2MjE0LCAxMDYyMTgsIDEwNjIyMiwgMTA2MjI2LCAxMDYyMzAsIDEwNjIzNCwgMTA2MjM4LCAxMDYyNDIsIAorICAgIDEwNjI0NiwgMTA2MjUwLCAxMDYyNTQsIDEwNjI1OCwgMTA2MjYyLCAxMDYyNjYsIDEwNjI3MCwgMTA2Mjc0LCAxMDYyNzgsIAorICAgIDEwNjI4MiwgMTA2Mjg2LCAxMDYyOTAsIDEwNjI5NCwgMTA2Mjk4LCAxMDYzMDIsIDEwNjMwNiwgMTA2MzEwLCAxMDYzMTQsIAorICAgIDEwNjMxOCwgMTA2MzIyLCAxMDYzMjYsIDEwNjMzMCwgMTA2MzM0LCAxMDYzMzgsIDEwNjM0MiwgMTA2MzQ2LCAxMDYzNTAsIAorICAgIDEwNjM1NCwgMTA2MzU4LCAxMDYzNjIsIDEwNjM2NiwgMTA2MzcwLCAxMDYzNzQsIDEwNjM3OCwgMTA2MzgyLCAxMDYzODYsIAorICAgIDEwNjM5MCwgMTA2Mzk0LCAxMDYzOTgsIDEwNjQwMiwgMTA2NDA2LCAxMDY0MTAsIDEwNjQxNCwgMTA2NDE4LCAxMDY0MjIsIAorICAgIDEwNjQyNiwgMTA2NDMwLCAxMDY0MzQsIDEwNjQzOCwgMTA2NDQyLCAxMDY0NDYsIDEwNjQ1MCwgMTA2NDU0LCAxMDY0NTgsIAorICAgIDEwNjQ2MiwgMTA2NDY2LCAxMDY0NzAsIDEwNjQ3NCwgMTA2NDc4LCAxMDY0ODIsIDEwNjQ4NiwgMTA2NDkwLCAxMDY0OTQsIAorICAgIDEwNjQ5OCwgMTA2NTAyLCAxMDY1MDYsIDEwNjUxMCwgMTA2NTE0LCAxMDY1MTgsIDEwNjUyMiwgMTA2NTI2LCAxMDY1MzAsIAorICAgIDEwNjUzNCwgMTA2NTM4LCAxMDY1NDIsIDEwNjU0NiwgMTA2NTUwLCAxMDY1NTQsIDEwNjU1OCwgMTA2NTYyLCAxMDY1NjYsIAorICAgIDEwNjU3MCwgMTA2NTc0LCAxMDY1NzgsIDEwNjU4MiwgMTA2NTg2LCAxMDY1OTAsIDEwNjU5NCwgMTA2NTk4LCAxMDY2MDIsIAorICAgIDEwNjYwNiwgMTA2NjEwLCAxMDY2MTQsIDEwNjYxOCwgMTA2NjIyLCAxMDY2MjYsIDEwNjYzMCwgMTA2NjM0LCAxMDY2MzgsIAorICAgIDEwNjY0MiwgMTA2NjQ2LCAxMDY2NTAsIDEwNjY1NCwgMTA2NjU4LCAxMDY2NjIsIDEwNjY2NiwgMTA2NjcwLCAxMDY2NzQsIAorICAgIDEwNjY3OCwgMTA2NjgyLCAxMDY2ODYsIDEwNjY5MCwgMTA2Njk0LCAxMDY2OTgsIDEwNjcwMiwgMTA2NzA2LCAxMDY3MTAsIAorICAgIDEwNjcxNCwgMTA2NzE4LCAxMDY3MjIsIDEwNjcyNiwgMTA2NzMwLCAxMDY3MzQsIDEwNjczOCwgMTA2NzQyLCAxMDY3NDYsIAorICAgIDEwNjc1MCwgMTA2NzU0LCAxMDY3NTgsIDEwNjc2MiwgMTA2NzY2LCAxMDY3NzAsIDEwNjc3NCwgMTA2Nzc4LCAxMDY3ODIsIAorICAgIDEwNjc4NiwgMTA2NzkwLCAxMDY3OTQsIDEwNjc5OCwgMTA2ODAyLCAxMDY4MDYsIDEwNjgxMCwgMTA2ODE0LCAxMDY4MTgsIAorICAgIDEwNjgyMiwgMTA2ODI2LCAxMDY4MzAsIDEwNjgzNCwgMTA2ODM4LCAxMDY4NDIsIDEwNjg0NiwgMTA2ODUwLCAxMDY4NTQsIAorICAgIDEwNjg1OCwgMTA2ODYyLCAxMDY4NjYsIDEwNjg3MCwgMTA2ODc0LCAxMDY4NzgsIDEwNjg4MiwgMTA2ODg2LCAxMDY4OTAsIAorICAgIDEwNjg5NCwgMTA2ODk4LCAxMDY5MDIsIDEwNjkwNiwgMTA2OTEwLCAxMDY5MTQsIDEwNjkxOCwgMTA2OTIyLCAxMDY5MjYsIAorICAgIDEwNjkzMCwgMTA2OTM0LCAxMDY5MzgsIDEwNjk0MiwgMTA2OTQ2LCAxMDY5NTAsIDEwNjk1NCwgMTA2OTU4LCAxMDY5NjIsIAorICAgIDEwNjk2NiwgMTA2OTcwLCAxMDY5NzQsIDEwNjk3OCwgMTA2OTgyLCAxMDY5ODYsIDEwNjk5MCwgMTA2OTk0LCAxMDY5OTgsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEwNDQwOCwgMTA0NDE1LCAxMDQ0MjIsIDEwNDQzMSwgMTA0NDQwLCAxMDQ0NDcsIDEwNDQ1MiwgMTA0NDU5LCAKLSAgICAxMDQ0NjYsIDEwNDQ3NSwgMTA0NDg2LCAxMDQ0OTcsIDEwNDUwMiwgMTA0NTA5LCAxMDQ1MTQsIDEwNDUxOSwgMTA0NTI0LCAKLSAgICAxMDQ1MjksIDEwNDUzNCwgMTA0NTM5LCAxMDQ1NDQsIDEwNDU0OSwgMTA0NTU0LCAxMDQ1NTksIDEwNDU2NCwgMTA0NTcxLCAKLSAgICAxMDQ1NzgsIDEwNDU4MywgMTA0NTg4LCAxMDQ1OTMsIDEwNDU5OCwgMTA0NjA1LCAxMDQ2MTIsIDEwNDYyMCwgMTA0NjI1LCAKLSAgICAxMDQ2MzIsIDEwNDYzNywgMTA0NjQyLCAxMDQ2NDcsIDEwNDY1MiwgMTA0NjU3LCAxMDQ2NjQsIDEwNDY3MSwgMTA0Njc2LCAKLSAgICAxMDQ2ODEsIDEwNDY4NiwgMTA0NjkxLCAxMDQ2OTYsIDEwNDcwMSwgMTA0NzA2LCAxMDQ3MTEsIDEwNDcxNiwgMTA0NzIxLCAKLSAgICAxMDQ3MjYsIDEwNDczMSwgMTA0NzM2LCAxMDQ3NDEsIDEwNDc0NiwgMTA0NzUxLCAxMDQ3NTYsIDEwNDc2MSwgMTA0NzY2LCAKLSAgICAxMDQ3NzMsIDEwNDc3OCwgMTA0NzgzLCAxMDQ3OTIsIDEwNDc5OSwgMTA0ODA0LCAxMDQ4MDksIDEwNDgxNCwgMTA0ODE5LCAKLSAgICAxMDQ4MjQsIDEwNDgyOSwgMTA0ODM0LCAxMDQ4MzksIDEwNDg0NCwgMTA0ODQ5LCAxMDQ4NTQsIDEwNDg1OSwgMTA0ODY0LCAKLSAgICAxMDQ4NjksIDEwNDg3NCwgMTA0ODc5LCAxMDQ4ODQsIDEwNDg4OSwgMTA0ODk0LCAxMDQ4OTksIDEwNDkwNCwgMTA0OTEwLCAKLSAgICAxMDQ5MTgsIDEwNDkyNCwgMTA0OTMyLCAxMDQ5NDAsIDEwNDk0OCwgMTA0OTU0LCAxMDQ5NjAsIDEwNDk2NiwgMTA0OTcyLCAKLSAgICAxMDQ5NzgsIDEwNDk4NiwgMTA0OTk2LCAxMDUwMDQsIDEwNTAxMiwgMTA1MDE4LCAxMDUwMjQsIDEwNTAzMiwgMTA1MDQwLCAKLSAgICAxMDUwNDYsIDEwNTA1NCwgMTA1MDYyLCAxMDUwNzAsIDEwNTA3NiwgMTA1MDgyLCAxMDUwODgsIDEwNTA5NCwgMTA1MTAwLCAKLSAgICAxMDUxMDYsIDEwNTExNCwgMTA1MTIyLCAxMDUxMjgsIDEwNTEzNCwgMTA1MTQwLCAxMDUxNDYsIDEwNTE1MiwgMTA1MTYwLCAKLSAgICAxMDUxNjYsIDEwNTE3MiwgMTA1MTc4LCAxMDUxODQsIDEwNTE5MCwgMTA1MTk2LCAxMDUyMDQsIDEwNTIxMCwgMTA1MjE2LCAKLSAgICAxMDUyMjIsIDEwNTIyOCwgMTA1MjM2LCAxMDUyNDQsIDEwNTI1MCwgMTA1MjU2LCAxMDUyNjIsIDEwNTI2NywgMTA1MjczLCAKLSAgICAxMDUyNzksIDEwNTI4NiwgMTA1MjkxLCAxMDUyOTYsIDEwNTMwMSwgMTA1MzA2LCAxMDUzMTEsIDEwNTMxNiwgMTA1MzIxLCAKLSAgICAxMDUzMjYsIDEwNTMzMSwgMTA1MzQwLCAxMDUzNDcsIDEwNTM1MiwgMTA1MzU3LCAxMDUzNjIsIDEwNTM2OSwgMTA1Mzc0LCAKLSAgICAxMDUzNzksIDEwNTM4NCwgMTA1MzkxLCAxMDUzOTYsIDEwNTQwMSwgMTA1NDA2LCAxMDU0MTEsIDEwNTQxNiwgMTA1NDIxLCAKLSAgICAxMDU0MjYsIDEwNTQzMSwgMTA1NDM2LCAxMDU0NDEsIDEwNTQ0NiwgMTA1NDUzLCAxMDU0NTgsIDEwNTQ2NSwgMTA1NDcwLCAKLSAgICAxMDU0NzUsIDEwNTQ4MiwgMTA1NDg3LCAxMDU0OTIsIDEwNTQ5NywgMTA1NTAyLCAxMDU1MDcsIDEwNTUxMiwgMTA1NTE3LCAKLSAgICAxMDU1MjIsIDEwNTUyNywgMTA1NTMyLCAxMDU1MzcsIDEwNTU0MiwgMTA1NTQ3LCAxMDU1NTIsIDEwNTU1NywgMTA1NTYyLCAKLSAgICAxMDU1NjcsIDEwNTU3MiwgMTA1NTc3LCAxMDU1ODQsIDEwNTU4OSwgMTA1NTk0LCAxMDU1OTksIDEwNTYwNCwgMTA1NjA5LCAKLSAgICAxMDU2MTQsIDEwNTYxOSwgMTA1NjI0LCAxMDU2MjksIDEwNTYzNCwgMTA1NjM5LCAxMDU2NDQsIDEwNTY0OSwgMTA1NjU2LCAKLSAgICAxMDU2NjEsIDEwNTY2NiwgMTA1NjczLCAxMDU2NzgsIDEwNTY4MywgMTA1Njg4LCAxMDU2OTMsIDEwNTY5OCwgMTA1NzAzLCAKLSAgICAxMDU3MDgsIDEwNTcxMywgMTA1NzE4LCAxMDU3MjMsIDEwNTczMCwgMTA1NzM1LCAxMDU3NDAsIDEwNTc0NSwgMTA1NzUwLCAKLSAgICAxMDU3NTUsIDEwNTc2MiwgMTA1NzY5LCAxMDU3NzQsIDEwNTc3OSwgMTA1Nzg0LCAxMDU3ODksIDEwNTc5NCwgMTA1Nzk5LCAKLSAgICAxMDU4MDQsIDEwNTgwOSwgMTA1ODE0LCAxMDU4MTksIDEwNTgyNCwgMTA1ODI5LCAxMDU4MzQsIDEwNTgzOSwgMTA1ODQ0LCAKLSAgICAxMDU4NDksIDEwNTg1NCwgMTA1ODU5LCAxMDU4NjQsIDEwNTg2OSwgMTA1ODc0LCAxMDU4NzksIDEwNTg4NCwgMTA1ODg5LCAKLSAgICAxMDU4OTQsIDEwNTg5OSwgMTA1OTA0LCAxMDU5MDksIDEwNTkxNCwgMTA1OTE5LCAxMDU5MjQsIDEwNTkyOSwgMTA1OTM0LCAKLSAgICAxMDU5MzksIDEwNTk0NCwgMTA1OTQ5LCAxMDU5NTYsIDEwNTk2MSwgMTA1OTY2LCAxMDU5NzEsIDEwNTk3NiwgMTA1OTgxLCAKLSAgICAxMDU5ODYsIDEwNTk5MSwgMTA1OTk2LCAxMDYwMDEsIDEwNjAwNiwgMTA2MDExLCAxMDYwMTYsIDEwNjAyMSwgMTA2MDI2LCAKLSAgICAxMDYwMzEsIDEwNjAzNiwgMTA2MDQxLCAxMDYwNDYsIDEwNjA1MSwgMTA2MDU2LCAxMDYwNjEsIDEwNjA2NiwgMTA2MDcxLCAKLSAgICAxMDYwNzYsIDEwNjA4MSwgMTA2MDg2LCAxMDYwOTEsIDEwNjA5NiwgMTA2MTAxLCAxMDYxMDYsIDEwNjExMSwgMTA2MTE2LCAKLSAgICAxMDYxMjEsIDEwNjEyNiwgMTA2MTMxLCAxMDYxMzYsIDEwNjE0MSwgMTA2MTQ2LCAxMDYxNTEsIDEwNjE1NiwgMTA2MTYxLCAKLSAgICAxMDYxNjYsIDEwNjE3MSwgMTA2MTc2LCAxMDYxODEsIDEwNjE4NiwgMTA2MTkxLCAxMDYxOTYsIDEwNjIwMSwgMTA2MjA2LCAKLSAgICAxMDYyMTEsIDEwNjIxNiwgMTA2MjIxLCAxMDYyMjYsIDEwNjIzMSwgMTA2MjM2LCAxMDYyNDEsIDEwNjI0NiwgMTA2MjUzLCAKLSAgICAxMDYyNTgsIDEwNjI2MywgMTA2MjY4LCAxMDYyNzMsIDEwNjI3OCwgMTA2MjgzLCAxMDYyODcsIDEwNjI5MiwgMTA2Mjk3LCAKLSAgICAxMDYzMDIsIDEwNjMwNywgMTA2MzEyLCAxMDYzMTcsIDEwNjMyMiwgMTA2MzI3LCAxMDYzMzIsIDEwNjMzNywgMTA2MzQyLCAKLSAgICAxMDYzNDcsIDEwNjM1MiwgMTA2MzU3LCAxMDYzNjQsIDEwNjM2OSwgMTA2Mzc0LCAxMDYzODAsIDEwNjM4NSwgMTA2MzkwLCAKLSAgICAxMDYzOTUsIDEwNjQwMCwgMTA2NDA1LCAxMDY0MTAsIDEwNjQxNSwgMTA2NDIwLCAxMDY0MjUsIDEwNjQzMCwgMTA2NDM1LCAKLSAgICAxMDY0NDAsIDEwNjQ0NSwgMTA2NDUwLCAxMDY0NTUsIDEwNjQ2MCwgMTA2NDY1LCAxMDY0NzAsIDEwNjQ3NSwgMTA2NDgwLCAKLSAgICAxMDY0ODUsIDEwNjQ5MCwgMTA2NDk1LCAxMDY1MDAsIDEwNjUwNSwgMTA2NTEwLCAxMDY1MTUsIDEwNjUyMCwgMTA2NTI1LCAKLSAgICAxMDY1MzAsIDEwNjUzNSwgMTA2NTQwLCAxMDY1NDUsIDEwNjU1MCwgMTA2NTU1LCAxMDY1NjAsIDEwNjU2NSwgMTA2NTcwLCAKLSAgICAxMDY1NzUsIDEwNjU4MCwgMTA2NTg1LCAxMDY1OTAsIDEwNjU5NSwgMTA2NjAyLCAxMDY2MDcsIDEwNjYxMiwgMTA2NjE5LCAKLSAgICAxMDY2MjYsIDEwNjYzMSwgMTA2NjM2LCAxMDY2NDEsIDEwNjY0NiwgMTA2NjUxLCAxMDY2NTYsIDEwNjY2MSwgMTA2NjY2LCAKLSAgICAxMDY2NzEsIDEwNjY3NiwgMTA2NjgxLCAxMDY2ODYsIDEwNjY5MSwgMTA2Njk2LCAxMDY3MDEsIDEwNjcwNiwgMTA2NzExLCAKLSAgICAxMDY3MTYsIDEwNjcyMSwgMTA2NzI2LCAxMDY3MzEsIDEwNjczNiwgMTA2NzQxLCAxMDY3NDYsIDEwNjc1MSwgMTA2NzU4LCAKLSAgICAxMDY3NjMsIDEwNjc2OCwgMTA2NzczLCAxMDY3NzgsIDEwNjc4MywgMTA2Nzg4LCAxMDY3OTMsIDEwNjc5OCwgMTA2ODAzLCAKLSAgICAxMDY4MDgsIDEwNjgxMywgMTA2ODE4LCAxMDY4MjMsIDEwNjgyOCwgMTA2ODMzLCAxMDY4MzgsIDEwNjg0MywgMTA2ODQ4LCAKLSAgICAxMDY4NTUsIDEwNjg2MCwgMTA2ODY1LCAxMDY4NzAsIDEwNjg3NSwgMTA2ODgwLCAxMDY4ODUsIDEwNjg5MCwgMTA2ODk2LCAKLSAgICAxMDY5MDEsIDEwNjkwNiwgMTA2OTExLCAxMDY5MTYsIDEwNjkyMSwgMTA2OTI2LCAxMDY5MzEsIDEwNjkzNiwgMTA2OTQzLCAKLSAgICAxMDY5NTAsIDEwNjk1NSwgMTA2OTYwLCAxMDY5NjQsIDEwNjk2OSwgMTA2OTczLCAxMDY5NzcsIDEwNjk4MiwgMTA2OTg5LCAKLSAgICAxMDY5OTQsIDEwNjk5OSwgMTA3MDA4LCAxMDcwMTMsIDEwNzAxOCwgMTA3MDIzLCAxMDcwMjgsIDEwNzAzNSwgMTA3MDQyLCAKLSAgICAxMDcwNDcsIDEwNzA1MiwgMTA3MDU3LCAxMDcwNjIsIDEwNzA2OSwgMTA3MDc0LCAxMDcwNzksIDEwNzA4NCwgMTA3MDg5LCAKLSAgICAxMDcwOTQsIDEwNzA5OSwgMTA3MTA0LCAxMDcxMDksIDEwNzExNCwgMTA3MTE5LCAxMDcxMjQsIDEwNzEyOSwgMTA3MTM2LCAKLSAgICAxMDcxNDAsIDEwNzE0NSwgMTA3MTUwLCAxMDcxNTUsIDEwNzE2MCwgMTA3MTY0LCAxMDcxNjksIDEwNzE3NCwgMTA3MTc5LCAKLSAgICAxMDcxODQsIDEwNzE4OSwgMTA3MTk0LCAxMDcxOTksIDEwNzIwNCwgMTA3MjA5LCAxMDcyMTUsIDEwNzIyMSwgMTA3MjI3LCAKLSAgICAxMDcyMzMsIDEwNzIzOSwgMTA3MjQ1LCAxMDcyNTEsIDEwNzI1NywgMTA3MjYzLCAxMDcyNjksIDEwNzI3NSwgMTA3MjgxLCAKLSAgICAxMDcyODYsIDEwNzI5MiwgMTA3Mjk4LCAxMDczMDQsIDEwNzMxMCwgMTA3MzE2LCAxMDczMjIsIDEwNzMyOCwgMTA3MzM0LCAKLSAgICAxMDczNDAsIDEwNzM0NiwgMTA3MzUyLCAxMDczNTcsIDEwNzM2MywgMTA3MzY5LCAxMDczNzUsIDEwNzM4MSwgMTA3Mzg3LCAKLSAgICAxMDczOTMsIDEwNzM5OSwgMTA3NDA1LCAxMDc0MTEsIDEwNzQxNywgMTA3NDIzLCAxMDc0MjksIDEwNzQzNSwgMTA3NDQxLCAKLSAgICAxMDc0NDcsIDEwNzQ1MywgMTA3NDU5LCAxMDc0NjUsIDEwNzQ3MSwgMTA3NDc3LCAxMDc0ODIsIDEwNzQ4OCwgMTA3NDk0LCAKLSAgICAxMDc1MDAsIDEwNzUwNiwgMTA3NTEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcwMDIsIDEwNzAwOSwgMTA3MDE2LCAxMDcwMjUsIDEwNzAzNCwgCisgICAgMTA3MDQxLCAxMDcwNDYsIDEwNzA1MywgMTA3MDYwLCAxMDcwNjksIDEwNzA4MCwgMTA3MDkxLCAxMDcwOTYsIDEwNzEwMywgCisgICAgMTA3MTA4LCAxMDcxMTMsIDEwNzExOCwgMTA3MTIzLCAxMDcxMjgsIDEwNzEzMywgMTA3MTM4LCAxMDcxNDMsIDEwNzE0OCwgCisgICAgMTA3MTUzLCAxMDcxNTgsIDEwNzE2NSwgMTA3MTcyLCAxMDcxNzcsIDEwNzE4MiwgMTA3MTg3LCAxMDcxOTIsIDEwNzE5OSwgCisgICAgMTA3MjA2LCAxMDcyMTQsIDEwNzIxOSwgMTA3MjI2LCAxMDcyMzEsIDEwNzIzNiwgMTA3MjQxLCAxMDcyNDYsIDEwNzI1MSwgCisgICAgMTA3MjU4LCAxMDcyNjUsIDEwNzI3MCwgMTA3Mjc1LCAxMDcyODAsIDEwNzI4NSwgMTA3MjkwLCAxMDcyOTUsIDEwNzMwMCwgCisgICAgMTA3MzA1LCAxMDczMTAsIDEwNzMxNSwgMTA3MzIwLCAxMDczMjUsIDEwNzMzMCwgMTA3MzM1LCAxMDczNDAsIDEwNzM0NSwgCisgICAgMTA3MzUwLCAxMDczNTUsIDEwNzM2MCwgMTA3MzY3LCAxMDczNzIsIDEwNzM3NywgMTA3Mzg2LCAxMDczOTMsIDEwNzM5OCwgCisgICAgMTA3NDAzLCAxMDc0MDgsIDEwNzQxMywgMTA3NDE4LCAxMDc0MjMsIDEwNzQyOCwgMTA3NDMzLCAxMDc0MzgsIDEwNzQ0MywgCisgICAgMTA3NDQ4LCAxMDc0NTMsIDEwNzQ1OCwgMTA3NDYzLCAxMDc0NjgsIDEwNzQ3MywgMTA3NDc4LCAxMDc0ODMsIDEwNzQ4OCwgCisgICAgMTA3NDkzLCAxMDc0OTgsIDEwNzUwNCwgMTA3NTEyLCAxMDc1MTgsIDEwNzUyNiwgMTA3NTM0LCAxMDc1NDIsIDEwNzU0OCwgCisgICAgMTA3NTU0LCAxMDc1NjAsIDEwNzU2NiwgMTA3NTcyLCAxMDc1ODAsIDEwNzU5MCwgMTA3NTk4LCAxMDc2MDYsIDEwNzYxMiwgCisgICAgMTA3NjE4LCAxMDc2MjYsIDEwNzYzNCwgMTA3NjQwLCAxMDc2NDgsIDEwNzY1NiwgMTA3NjY0LCAxMDc2NzAsIDEwNzY3NiwgCisgICAgMTA3NjgyLCAxMDc2ODgsIDEwNzY5NCwgMTA3NzAwLCAxMDc3MDgsIDEwNzcxNiwgMTA3NzIyLCAxMDc3MjgsIDEwNzczNCwgCisgICAgMTA3NzQwLCAxMDc3NDYsIDEwNzc1NCwgMTA3NzYwLCAxMDc3NjYsIDEwNzc3MiwgMTA3Nzc4LCAxMDc3ODQsIDEwNzc5MCwgCisgICAgMTA3Nzk4LCAxMDc4MDQsIDEwNzgxMCwgMTA3ODE2LCAxMDc4MjIsIDEwNzgzMCwgMTA3ODM4LCAxMDc4NDQsIDEwNzg1MCwgCisgICAgMTA3ODU2LCAxMDc4NjEsIDEwNzg2NywgMTA3ODczLCAxMDc4ODAsIDEwNzg4NSwgMTA3ODkwLCAxMDc4OTUsIDEwNzkwMCwgCisgICAgMTA3OTA1LCAxMDc5MTAsIDEwNzkxNSwgMTA3OTIwLCAxMDc5MjUsIDEwNzkzNCwgMTA3OTQxLCAxMDc5NDYsIDEwNzk1MSwgCisgICAgMTA3OTU2LCAxMDc5NjMsIDEwNzk2OCwgMTA3OTczLCAxMDc5NzgsIDEwNzk4NSwgMTA3OTkwLCAxMDc5OTUsIDEwODAwMCwgCisgICAgMTA4MDA1LCAxMDgwMTAsIDEwODAxNSwgMTA4MDIwLCAxMDgwMjUsIDEwODAzMCwgMTA4MDM1LCAxMDgwNDAsIDEwODA0NywgCisgICAgMTA4MDUyLCAxMDgwNTksIDEwODA2NCwgMTA4MDY5LCAxMDgwNzYsIDEwODA4MSwgMTA4MDg2LCAxMDgwOTEsIDEwODA5NiwgCisgICAgMTA4MTAxLCAxMDgxMDYsIDEwODExMSwgMTA4MTE2LCAxMDgxMjEsIDEwODEyNiwgMTA4MTMxLCAxMDgxMzYsIDEwODE0MSwgCisgICAgMTA4MTQ2LCAxMDgxNTEsIDEwODE1NiwgMTA4MTYxLCAxMDgxNjYsIDEwODE3MSwgMTA4MTc4LCAxMDgxODMsIDEwODE4OCwgCisgICAgMTA4MTkzLCAxMDgxOTgsIDEwODIwMywgMTA4MjA4LCAxMDgyMTMsIDEwODIxOCwgMTA4MjIzLCAxMDgyMjgsIDEwODIzMywgCisgICAgMTA4MjM4LCAxMDgyNDMsIDEwODI1MCwgMTA4MjU1LCAxMDgyNjAsIDEwODI2NywgMTA4MjcyLCAxMDgyNzcsIDEwODI4MiwgCisgICAgMTA4Mjg3LCAxMDgyOTIsIDEwODI5NywgMTA4MzAyLCAxMDgzMDcsIDEwODMxMiwgMTA4MzE3LCAxMDgzMjQsIDEwODMyOSwgCisgICAgMTA4MzM0LCAxMDgzMzksIDEwODM0NCwgMTA4MzQ5LCAxMDgzNTYsIDEwODM2MywgMTA4MzY4LCAxMDgzNzMsIDEwODM3OCwgCisgICAgMTA4MzgzLCAxMDgzODgsIDEwODM5MywgMTA4Mzk4LCAxMDg0MDMsIDEwODQwOCwgMTA4NDEzLCAxMDg0MTgsIDEwODQyMywgCisgICAgMTA4NDI4LCAxMDg0MzMsIDEwODQzOCwgMTA4NDQzLCAxMDg0NDgsIDEwODQ1MywgMTA4NDU4LCAxMDg0NjMsIDEwODQ2OCwgCisgICAgMTA4NDczLCAxMDg0NzgsIDEwODQ4MywgMTA4NDg4LCAxMDg0OTMsIDEwODQ5OCwgMTA4NTAzLCAxMDg1MDgsIDEwODUxMywgCisgICAgMTA4NTE4LCAxMDg1MjMsIDEwODUyOCwgMTA4NTMzLCAxMDg1MzgsIDEwODU0MywgMTA4NTUwLCAxMDg1NTUsIDEwODU2MCwgCisgICAgMTA4NTY1LCAxMDg1NzAsIDEwODU3NSwgMTA4NTgwLCAxMDg1ODUsIDEwODU5MCwgMTA4NTk1LCAxMDg2MDAsIDEwODYwNSwgCisgICAgMTA4NjEwLCAxMDg2MTUsIDEwODYyMCwgMTA4NjI1LCAxMDg2MzAsIDEwODYzNSwgMTA4NjQwLCAxMDg2NDUsIDEwODY1MCwgCisgICAgMTA4NjU1LCAxMDg2NjAsIDEwODY2NSwgMTA4NjcwLCAxMDg2NzUsIDEwODY4MCwgMTA4Njg1LCAxMDg2OTAsIDEwODY5NSwgCisgICAgMTA4NzAwLCAxMDg3MDUsIDEwODcxMCwgMTA4NzE1LCAxMDg3MjAsIDEwODcyNSwgMTA4NzMwLCAxMDg3MzUsIDEwODc0MCwgCisgICAgMTA4NzQ1LCAxMDg3NTAsIDEwODc1NSwgMTA4NzYwLCAxMDg3NjUsIDEwODc3MCwgMTA4Nzc1LCAxMDg3ODAsIDEwODc4NSwgCisgICAgMTA4NzkwLCAxMDg3OTUsIDEwODgwMCwgMTA4ODA1LCAxMDg4MTAsIDEwODgxNSwgMTA4ODIwLCAxMDg4MjUsIDEwODgzMCwgCisgICAgMTA4ODM1LCAxMDg4NDAsIDEwODg0NywgMTA4ODUyLCAxMDg4NTcsIDEwODg2MiwgMTA4ODY3LCAxMDg4NzIsIDEwODg3NywgCisgICAgMTA4ODgxLCAxMDg4ODYsIDEwODg5MSwgMTA4ODk2LCAxMDg5MDEsIDEwODkwNiwgMTA4OTExLCAxMDg5MTYsIDEwODkyMSwgCisgICAgMTA4OTI2LCAxMDg5MzEsIDEwODkzNiwgMTA4OTQxLCAxMDg5NDYsIDEwODk1MSwgMTA4OTU4LCAxMDg5NjMsIDEwODk2OCwgCisgICAgMTA4OTc0LCAxMDg5NzksIDEwODk4NCwgMTA4OTg5LCAxMDg5OTQsIDEwODk5OSwgMTA5MDA0LCAxMDkwMDksIDEwOTAxNCwgCisgICAgMTA5MDE5LCAxMDkwMjQsIDEwOTAyOSwgMTA5MDM0LCAxMDkwMzksIDEwOTA0NCwgMTA5MDQ5LCAxMDkwNTQsIDEwOTA1OSwgCisgICAgMTA5MDY0LCAxMDkwNjksIDEwOTA3NCwgMTA5MDc5LCAxMDkwODQsIDEwOTA4OSwgMTA5MDk0LCAxMDkwOTksIDEwOTEwNCwgCisgICAgMTA5MTA5LCAxMDkxMTQsIDEwOTExOSwgMTA5MTI0LCAxMDkxMjksIDEwOTEzNCwgMTA5MTM5LCAxMDkxNDQsIDEwOTE0OSwgCisgICAgMTA5MTU0LCAxMDkxNTksIDEwOTE2NCwgMTA5MTY5LCAxMDkxNzQsIDEwOTE3OSwgMTA5MTg0LCAxMDkxODksIDEwOTE5NiwgCisgICAgMTA5MjAxLCAxMDkyMDYsIDEwOTIxMywgMTA5MjIwLCAxMDkyMjUsIDEwOTIzMCwgMTA5MjM1LCAxMDkyNDAsIDEwOTI0NSwgCisgICAgMTA5MjUwLCAxMDkyNTUsIDEwOTI2MCwgMTA5MjY1LCAxMDkyNzAsIDEwOTI3NSwgMTA5MjgwLCAxMDkyODUsIDEwOTI5MCwgCisgICAgMTA5Mjk1LCAxMDkzMDAsIDEwOTMwNSwgMTA5MzEwLCAxMDkzMTUsIDEwOTMyMCwgMTA5MzI1LCAxMDkzMzAsIDEwOTMzNSwgCisgICAgMTA5MzQwLCAxMDkzNDUsIDEwOTM1MiwgMTA5MzU3LCAxMDkzNjIsIDEwOTM2NywgMTA5MzcyLCAxMDkzNzcsIDEwOTM4MiwgCisgICAgMTA5Mzg3LCAxMDkzOTIsIDEwOTM5NywgMTA5NDAyLCAxMDk0MDcsIDEwOTQxMiwgMTA5NDE3LCAxMDk0MjIsIDEwOTQyNywgCisgICAgMTA5NDMyLCAxMDk0MzcsIDEwOTQ0MiwgMTA5NDQ5LCAxMDk0NTQsIDEwOTQ1OSwgMTA5NDY0LCAxMDk0NjksIDEwOTQ3NCwgCisgICAgMTA5NDc5LCAxMDk0ODQsIDEwOTQ5MCwgMTA5NDk1LCAxMDk1MDAsIDEwOTUwNSwgMTA5NTEwLCAxMDk1MTUsIDEwOTUyMCwgCisgICAgMTA5NTI1LCAxMDk1MzAsIDEwOTUzNywgMTA5NTQ0LCAxMDk1NDksIDEwOTU1NCwgMTA5NTU4LCAxMDk1NjMsIDEwOTU2NywgCisgICAgMTA5NTcxLCAxMDk1NzYsIDEwOTU4MywgMTA5NTg4LCAxMDk1OTMsIDEwOTYwMiwgMTA5NjA3LCAxMDk2MTIsIDEwOTYxNywgCisgICAgMTA5NjIyLCAxMDk2MjksIDEwOTYzNiwgMTA5NjQxLCAxMDk2NDYsIDEwOTY1MSwgMTA5NjU2LCAxMDk2NjMsIDEwOTY2OCwgCisgICAgMTA5NjczLCAxMDk2NzgsIDEwOTY4MywgMTA5Njg4LCAxMDk2OTMsIDEwOTY5OCwgMTA5NzAzLCAxMDk3MDgsIDEwOTcxMywgCisgICAgMTA5NzE4LCAxMDk3MjMsIDEwOTczMCwgMTA5NzM0LCAxMDk3MzksIDEwOTc0NCwgMTA5NzQ5LCAxMDk3NTQsIDEwOTc1OCwgCisgICAgMTA5NzYzLCAxMDk3NjgsIDEwOTc3MywgMTA5Nzc4LCAxMDk3ODMsIDEwOTc4OCwgMTA5NzkzLCAxMDk3OTgsIDEwOTgwMywgCisgICAgMTA5ODA5LCAxMDk4MTUsIDEwOTgyMSwgMTA5ODI3LCAxMDk4MzMsIDEwOTgzOSwgMTA5ODQ1LCAxMDk4NTEsIDEwOTg1NywgCisgICAgMTA5ODYzLCAxMDk4NjksIDEwOTg3NSwgMTA5ODgwLCAxMDk4ODYsIDEwOTg5MiwgMTA5ODk4LCAxMDk5MDQsIDEwOTkxMCwgCisgICAgMTA5OTE2LCAxMDk5MjIsIDEwOTkyOCwgMTA5OTM0LCAxMDk5NDAsIDEwOTk0NiwgMTA5OTUxLCAxMDk5NTcsIDEwOTk2MywgCisgICAgMTA5OTY5LCAxMDk5NzUsIDEwOTk4MSwgMTA5OTg3LCAxMDk5OTMsIDEwOTk5OSwgMTEwMDA1LCAxMTAwMTEsIDExMDAxNywgCisgICAgMTEwMDIzLCAxMTAwMjksIDExMDAzNSwgMTEwMDQxLCAxMTAwNDcsIDExMDA1MywgMTEwMDU5LCAxMTAwNjUsIDExMDA3MSwgCisgICAgMTEwMDc2LCAxMTAwODIsIDExMDA4OCwgMTEwMDk0LCAxMTAxMDAsIDExMDEwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3NTE4LCAxMDc1MjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDExMiwgMTEwMTE1LCAxMTAxMTksIAorICAgIDExMDEyMywgMTEwMTI3LCAxMTAxMzAsIDExMDEzNCwgMTEwMTM5LCAxMTAxNDMsIDExMDE0NywgMTEwMTUxLCAxMTAxNTUsIAorICAgIDExMDE1OSwgMTEwMTY0LCAxMTAxNjksIDExMDE3MywgMTEwMTc3LCAxMTAxODAsIDExMDE4NCwgMTEwMTg5LCAxMTAxOTQsIAorICAgIDExMDE5OCwgMTEwMjAyLCAxMTAyMDYsIDExMDIxMCwgMTEwMjE0LCAxMTAyMTgsIDExMDIyMiwgMTEwMjI2LCAxMTAyMzAsIAorICAgIDExMDIzNCwgMTEwMjM3LCAxMTAyNDEsIDExMDI0NSwgMTEwMjQ5LCAxMTAyNTMsIDExMDI1NywgMTEwMjYxLCAxMTAyNjcsIAorICAgIDExMDI3MCwgMTEwMjc0LCAxMTAyNzgsIDExMDI4MiwgMTEwMjg2LCAxMTAyOTAsIDExMDI5NCwgMTEwMjk4LCAxMTAzMDIsIAorICAgIDExMDMwNiwgMTEwMzExLCAxMTAzMTYsIDExMDMyMiwgMTEwMzI2LCAxMTAzMzAsIDExMDMzNCwgMTEwMzM4LCAxMTAzNDIsIAorICAgIDExMDM0NiwgMTEwMzUxLCAxMTAzNTQsIDExMDM1OCwgMTEwMzYyLCAxMTAzNjYsIDExMDM3MCwgMTEwMzc2LCAxMTAzODAsIAorICAgIDExMDM4NCwgMTEwMzg4LCAxMTAzOTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDM5NiwgMTEwNDAwLCAKKyAgICAxMTA0MDQsIDExMDQxMCwgMTEwNDE2LCAxMTA0MjAsIDExMDQyNSwgMTEwNDMwLCAxMTA0MzUsIDExMDQ0MCwgMTEwNDQ0LCAKKyAgICAxMTA0NDksIDExMDQ1NCwgMTEwNDU5LCAxMTA0NjMsIDExMDQ2OCwgMTEwNDczLCAxMTA0NzgsIDExMDQ4MiwgMTEwNDg3LCAKKyAgICAxMTA0OTIsIDExMDQ5NywgMTEwNTAyLCAxMTA1MDcsIDExMDUxMiwgMTEwNTE3LCAxMTA1MjIsIDExMDUyNiwgMTEwNTMxLCAKKyAgICAxMTA1MzYsIDExMDU0MSwgMTEwNTQ2LCAxMTA1NTEsIDExMDU1NiwgMTEwNTYxLCAxMTA1NjYsIDExMDU3MSwgMTEwNTc2LCAKKyAgICAxMTA1ODEsIDExMDU4OCwgMTEwNTkzLCAxMTA2MDAsIDExMDYwNSwgMTEwNjEwLCAxMTA2MTUsIDExMDYyMCwgMTEwNjI1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTA2MzAsIDExMDYzNCwgMTEwNjQwLCAKKyAgICAxMTA2NDMsIDExMDY0NiwgMTEwNjUwLCAxMTA2NTQsIDExMDY1OCwgMTEwNjYyLCAxMTA2NjYsIDExMDY3MCwgMTEwNjc0LCAKKyAgICAxMTA2ODAsIDExMDY4NiwgMTEwNjkyLCAxMTA2OTgsIDExMDcwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3NTI5LCAxMDc1MzQsIAotICAgIDEwNzUzOSwgMTA3NTQ0LCAxMDc1NTEsIDEwNzU1OCwgMTA3NTY1LCAxMDc1NzIsIDEwNzU3NywgMTA3NTgyLCAxMDc1ODcsIAotICAgIDEwNzU5MiwgMTA3NTk5LCAxMDc2MDQsIDEwNzYxMSwgMTA3NjE4LCAxMDc2MjMsIDEwNzYyOCwgMTA3NjMzLCAxMDc2NDAsIAotICAgIDEwNzY0NSwgMTA3NjUwLCAxMDc2NTcsIDEwNzY2NCwgMTA3NjY5LCAxMDc2NzQsIDEwNzY3OSwgMTA3Njg2LCAxMDc2OTMsIAotICAgIDEwNzcwMCwgMTA3NzA1LCAxMDc3MTAsIDEwNzcxNywgMTA3NzI0LCAxMDc3MzEsIDEwNzczOCwgMTA3NzQzLCAxMDc3NDgsIAotICAgIDEwNzc1MywgMTA3NzYwLCAxMDc3NjUsIDEwNzc3MCwgMTA3Nzc1LCAxMDc3ODIsIDEwNzc5MSwgMTA3Nzk4LCAxMDc4MDMsIAotICAgIDEwNzgwOCwgMTA3ODEzLCAxMDc4MTgsIDEwNzgyMywgMTA3ODI4LCAxMDc4MzcsIDEwNzg0NCwgMTA3ODQ5LCAxMDc4NTYsIAotICAgIDEwNzg2MywgMTA3ODY4LCAxMDc4NzMsIDEwNzg3OCwgMTA3ODg1LCAxMDc4OTAsIDEwNzg5NywgMTA3OTA0LCAxMDc5MDksIAotICAgIDEwNzkxNCwgMTA3OTE5LCAxMDc5MjYsIDEwNzkzMywgMTA3OTM4LCAxMDc5NDMsIDEwNzk1MCwgMTA3OTU3LCAxMDc5NjQsIAotICAgIDEwNzk2OSwgMTA3OTc0LCAxMDc5NzksIDEwNzk4NCwgMTA3OTkxLCAxMDgwMDAsIDEwODAwOSwgMTA4MDE0LCAxMDgwMjEsIAotICAgIDEwODAzMCwgMTA4MDM1LCAxMDgwNDAsIDEwODA0NSwgMTA4MDUwLCAxMDgwNTcsIDEwODA2NCwgMTA4MDcxLCAxMDgwNzgsIAotICAgIDEwODA4MywgMTA4MDg4LCAxMDgwOTMsIDEwODEwMCwgMTA4MTA3LCAxMDgxMTQsIDEwODExOSwgMTA4MTI0LCAxMDgxMzEsIAotICAgIDEwODEzNiwgMTA4MTQzLCAxMDgxNDgsIDEwODE1NSwgMTA4MTYwLCAxMDgxNjcsIDEwODE3NCwgMTA4MTc5LCAxMDgxODQsIAotICAgIDEwODE4OSwgMTA4MTk0LCAxMDgxOTksIDEwODIwNCwgMTA4MjA5LCAxMDgyMTQsIDEwODIxOSwgMTA4MjI2LCAxMDgyMzMsIAotICAgIDEwODI0MCwgMTA4MjQ3LCAxMDgyNTQsIDEwODI2MywgMTA4MjY4LCAxMDgyNzMsIDEwODI4MCwgMTA4Mjg3LCAxMDgyOTIsIAotICAgIDEwODI5OSwgMTA4MzA2LCAxMDgzMTMsIDEwODMyMCwgMTA4MzI3LCAxMDgzMzQsIDEwODMzOSwgMTA4MzQ0LCAxMDgzNDksIAotICAgIDEwODM1NCwgMTA4MzU5LCAxMDgzNjgsIDEwODM3NywgMTA4Mzg2LCAxMDgzOTUsIDEwODQwNCwgMTA4NDEzLCAxMDg0MjIsIAotICAgIDEwODQzMSwgMTA4NDM2LCAxMDg0NDcsIDEwODQ1OCwgMTA4NDY3LCAxMDg0NzIsIDEwODQ3NywgMTA4NDgyLCAxMDg0ODcsIAotICAgIDEwODQ5NiwgMTA4NTAzLCAxMDg1MTAsIDEwODUxNywgMTA4NTI0LCAxMDg1MzEsIDEwODUzOCwgMTA4NTQ3LCAxMDg1NTYsIAotICAgIDEwODU2NywgMTA4NTc2LCAxMDg1ODcsIDEwODU5NiwgMTA4NjAzLCAxMDg2MTIsIDEwODYyMywgMTA4NjMyLCAxMDg2NDEsIAotICAgIDEwODY1MCwgMTA4NjU5LCAxMDg2NjYsIDEwODY3MywgMTA4NjgwLCAxMDg2ODksIDEwODY5OCwgMTA4NzA5LCAxMDg3MTgsIAotICAgIDEwODcyNywgMTA4NzM4LCAxMDg3NDMsIDEwODc0OCwgMTA4NzU5LCAxMDg3NjcsIDEwODc3NiwgMTA4Nzg1LCAxMDg3OTQsIAotICAgIDEwODgwNSwgMTA4ODE0LCAxMDg4MjMsIDEwODgzNCwgMTA4ODQ1LCAxMDg4NTYsIDEwODg2NywgMTA4ODc4LCAxMDg4ODksIAotICAgIDEwODg5NiwgMTA4OTAzLCAxMDg5MTAsIDEwODkxNywgMTA4OTI4LCAxMDg5MzcsIDEwODk0NCwgMTA4OTUxLCAxMDg5NTgsIAotICAgIDEwODk2OSwgMTA4OTgwLCAxMDg5OTEsIDEwOTAwMiwgMTA5MDEzLCAxMDkwMjQsIDEwOTAzNSwgMTA5MDQ2LCAxMDkwNTMsIAotICAgIDEwOTA2MCwgMTA5MDY5LCAxMDkwNzgsIDEwOTA4NSwgMTA5MDkyLCAxMDkwOTksIDEwOTEwOCwgMTA5MTE3LCAxMDkxMjYsIAotICAgIDEwOTEzMywgMTA5MTQyLCAxMDkxNTEsIDEwOTE2MCwgMTA5MTY3LCAxMDkxNzQsIDEwOTE3OSwgMTA5MTg1LCAxMDkxOTIsIAotICAgIDEwOTE5OSwgMTA5MjA2LCAxMDkyMTMsIDEwOTIyMCwgMTA5MjI3LCAxMDkyMzYsIDEwOTI0NSwgMTA5MjU0LCAxMDkyNjMsIAotICAgIDEwOTI3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA5Mjc5LCAxMDkyODUsIDEwOTI5MCwgMTA5Mjk1LCAKLSAgICAxMDkzMDIsIDEwOTMwOCwgMTA5MzE0LCAxMDkzMjAsIDEwOTMyNiwgMTA5MzMyLCAxMDkzMzgsIDEwOTM0NCwgMTA5MzQ4LCAKLSAgICAxMDkzNTIsIDEwOTM1OCwgMTA5MzY0LCAxMDkzNzAsIDEwOTM3NCwgMTA5Mzc5LCAxMDkzODQsIDEwOTM4OCwgMTA5MzkyLCAKLSAgICAxMDkzOTUsIDEwOTQwMSwgMTA5NDA3LCAxMDk0MTMsIDEwOTQxOSwgMTA5NDI1LCAxMDk0MzEsIDEwOTQzNywgMTA5NDQzLCAKLSAgICAxMDk0NDksIDEwOTQ1OSwgMTA5NDY5LCAxMDk0NzUsIDEwOTQ4MSwgMTA5NDkxLCAxMDk1MDEsIDEwOTUwNywgMCwgMCwgCi0gICAgMTA5NTEzLCAxMDk1MjEsIDEwOTUyNiwgMTA5NTMxLCAxMDk1MzcsIDEwOTU0MywgMTA5NTQ5LCAxMDk1NTUsIDEwOTU2MSwgCi0gICAgMTA5NTY3LCAxMDk1NzQsIDEwOTU4MSwgMTA5NTg3LCAxMDk1OTMsIDEwOTU5OSwgMTA5NjA1LCAxMDk2MTEsIDEwOTYxNywgCi0gICAgMTA5NjIzLCAxMDk2MjksIDEwOTYzNCwgMTA5NjQwLCAxMDk2NDYsIDEwOTY1MiwgMTA5NjU4LCAxMDk2NjQsIDEwOTY3MywgCi0gICAgMTA5Njc5LCAxMDk2ODQsIDEwOTY5MiwgMTA5Njk5LCAxMDk3MDYsIDEwOTcxNSwgMTA5NzI0LCAxMDk3MzMsIDEwOTc0MiwgCi0gICAgMTA5NzUxLCAxMDk3NjAsIDEwOTc2OSwgMTA5Nzc4LCAxMDk3ODgsIDEwOTc5OCwgMTA5ODA2LCAxMDk4MTQsIDEwOTgyMywgCi0gICAgMTA5ODMyLCAxMDk4MzgsIDEwOTg0NCwgMTA5ODUwLCAxMDk4NTYsIDEwOTg2NCwgMTA5ODcyLCAxMDk4NzYsIDEwOTg4MiwgCi0gICAgMTA5ODg3LCAxMDk4OTMsIDEwOTg5OSwgMTA5OTA1LCAxMDk5MTEsIDEwOTkxNywgMTA5OTI2LCAxMDk5MzEsIDEwOTkzOCwgCi0gICAgMTA5OTQzLCAxMDk5NDgsIDEwOTk1MywgMTA5OTU5LCAxMDk5NjUsIDEwOTk3MSwgMTA5OTc4LCAxMDk5ODMsIDEwOTk4OCwgCi0gICAgMTA5OTkzLCAxMDk5OTgsIDExMDAwMywgMTEwMDA5LCAxMTAwMTUsIDExMDAyMSwgMTEwMDI3LCAxMTAwMzMsIDExMDAzOSwgCi0gICAgMTEwMDQ1LCAxMTAwNTEsIDExMDA1NiwgMTEwMDYxLCAxMTAwNjYsIDExMDA3MSwgMTEwMDc2LCAxMTAwODEsIDExMDA4NiwgCi0gICAgMTEwMDkxLCAxMTAwOTcsIDExMDEwMywgMTEwMTA4LCAxMTAxMTMsIDExMDExOCwgMTEwMTIzLCAxMTAxMjgsIDExMDEzNCwgCi0gICAgMTEwMTQxLCAxMTAxNDUsIDExMDE0OSwgMTEwMTUzLCAxMTAxNTcsIDExMDE2MSwgMTEwMTY1LCAxMTAxNjksIDExMDE3MywgCi0gICAgMTEwMTgxLCAxMTAxOTEsIDExMDE5NSwgMTEwMTk5LCAxMTAyMDUsIDExMDIxMSwgMTEwMjE3LCAxMTAyMjMsIDExMDIyOSwgCi0gICAgMTEwMjM1LCAxMTAyNDEsIDExMDI0NywgMTEwMjUzLCAxMTAyNTksIDExMDI2NSwgMTEwMjcxLCAxMTAyNzcsIDExMDI4MywgCi0gICAgMTEwMjg3LCAxMTAyOTEsIDExMDI5OCwgMTEwMzA0LCAxMTAzMTAsIDExMDMxNiwgMTEwMzIxLCAxMTAzMjgsIDExMDMzMywgCi0gICAgMTEwMzM5LCAxMTAzNDUsIDExMDM1MSwgMTEwMzU3LCAxMTAzNjIsIDExMDM2NiwgMTEwMzcyLCAxMTAzNzYsIDExMDM4MCwgCi0gICAgMTEwMzg0LCAxMTAzOTAsIDExMDM5NiwgMTEwNDAwLCAxMTA0MDYsIDExMDQxMiwgMTEwNDE4LCAxMTA0MjQsIDExMDQzMCwgCi0gICAgMTEwNDM4LCAxMTA0NDYsIDExMDQ1MiwgMTEwNDU4LCAxMTA0NjQsIDExMDQ3MCwgMTEwNDgyLCAxMTA0OTQsIDExMDUwOCwgCi0gICAgMTEwNTIwLCAxMTA1MzIsIDExMDU0NiwgMTEwNTYwLCAxMTA1NzQsIDExMDU3OCwgMTEwNTg2LCAxMTA1OTQsIDExMDU5OSwgCi0gICAgMTEwNjAzLCAxMTA2MDcsIDExMDYxMSwgMTEwNjE1LCAxMTA2MTksIDExMDYyMywgMTEwNjI3LCAxMTA2MzMsIDExMDYzOSwgCi0gICAgMTEwNjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTA2NTEsIDExMDY1NywgMTEwNjYzLCAxMTA2NjksIAotICAgIDExMDY3NSwgMTEwNjgxLCAxMTA2ODcsIDExMDY5MywgMTEwNjk5LCAxMTA3MDUsIDExMDcxMSwgMTEwNzE3LCAxMTA3MjMsIAotICAgIDExMDcyOSwgMTEwNzM1LCAxMTA3NDEsIDExMDc0NywgMTEwNzUzLCAxMTA3NTksIDExMDc2NSwgMTEwNzcxLCAxMTA3NzcsIAotICAgIDExMDc4MywgMTEwNzg5LCAxMTA3OTUsIDExMDgwMSwgMTEwODA3LCAxMTA4MTMsIDExMDgxOSwgMTEwODI1LCAxMTA4MzEsIAotICAgIDExMDgzNywgMTEwODQzLCAxMTA4NDksIDExMDg1NSwgMTEwODYxLCAxMTA4NjcsIDExMDg3MywgMTEwODc5LCAxMTA4ODUsIAotICAgIDExMDg5MSwgMTEwODk3LCAxMTA5MDMsIDExMDkwOSwgMTEwOTE1LCAxMTA5MjEsIDExMDkyNywgMTEwOTMzLCAxMTA5MzksIAotICAgIDExMDk0NSwgMTEwOTUxLCAxMTA5NTcsIDExMDk2MywgMTEwOTY5LCAxMTA5NzUsIDExMDk4MSwgMTEwOTg3LCAxMTA5OTMsIAotICAgIDExMDk5OSwgMTExMDA1LCAxMTEwMTEsIDExMTAxNywgMTExMDIzLCAxMTEwMjksIDExMTAzNSwgMTExMDQxLCAxMTEwNDcsIAotICAgIDExMTA1MiwgMTExMDU3LCAxMTEwNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMTA2NiwgMTExMDcxLCAKLSAgICAxMTEwNzgsIDExMTA4NSwgMTExMDkyLCAxMTEwOTksIDExMTEwNCwgMTExMTA4LCAxMTExMTQsIDExMTExOCwgMTExMTIyLCAKLSAgICAxMTExMjgsIDExMTEzMiwgMTExMTM2LCAxMTExNDAsIDExMTE0NiwgMTExMTUzLCAxMTExNTcsIDExMTE2MSwgMTExMTY1LCAKLSAgICAxMTExNjksIDExMTE3MywgMTExMTc3LCAxMTExODMsIDExMTE4NywgMTExMTkxLCAxMTExOTUsIDExMTE5OSwgMTExMjAzLCAKLSAgICAxMTEyMDcsIDExMTIxMSwgMTExMjE1LCAxMTEyMTksIDExMTIyMywgMTExMjI3LCAxMTEyMzEsIDExMTIzNiwgMTExMjQwLCAKLSAgICAxMTEyNDQsIDExMTI0OCwgMTExMjUyLCAxMTEyNTYsIDExMTI2MCwgMTExMjY0LCAxMTEyNjgsIDExMTI3MiwgMTExMjc5LCAKLSAgICAxMTEyODMsIDExMTI5MSwgMTExMjk1LCAxMTEyOTksIDExMTMwMywgMTExMzA3LCAxMTEzMTEsIDExMTMxNSwgMTExMzE5LCAKLSAgICAxMTEzMjYsIDExMTMzMCwgMTExMzM0LCAxMTEzMzgsIDExMTM0MiwgMTExMzQ2LCAxMTEzNTIsIDExMTM1NiwgMTExMzYyLCAKLSAgICAxMTEzNjYsIDExMTM3MCwgMTExMzc0LCAxMTEzNzgsIDExMTM4MiwgMTExMzg2LCAxMTEzOTAsIDExMTM5NCwgMTExMzk4LCAKLSAgICAxMTE0MDIsIDExMTQwNiwgMTExNDEwLCAxMTE0MTQsIDExMTQxOCwgMTExNDIyLCAxMTE0MjYsIDExMTQzMCwgMTExNDM0LCAKLSAgICAxMTE0MzgsIDExMTQ0NiwgMTExNDUwLCAxMTE0NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMTQ1OCwgCi0gICAgMTExNDY2LCAxMTE0NzQsIDExMTQ4MiwgMTExNDkwLCAxMTE0OTgsIDExMTUwNiwgMTExNTE0LCAxMTE1MjIsIDExMTUzMCwgCi0gICAgMTExNTM4LCAxMTE1NDYsIDExMTU1NCwgMTExNTYyLCAxMTE1NzAsIDExMTU3OCwgMTExNTg2LCAxMTE1OTQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMTYwMiwgMTExNjA2LCAxMTE2MTEsIDExMTYxNiwgMTExNjIxLCAKLSAgICAxMTE2MjUsIDExMTYzMCwgMTExNjM1LCAxMTE2NDAsIDExMTY0NCwgMTExNjQ5LCAxMTE2NTQsIDExMTY1OCwgMTExNjYyLCAKLSAgICAxMTE2NjYsIDExMTY3MCwgMTExNjc1LCAxMTE2ODAsIDExMTY4NCwgMTExNjg4LCAxMTE2OTMsIDExMTY5NywgMTExNzAyLCAKLSAgICAxMTE3MDcsIDExMTcxMiwgMTExNzE3LCAxMTE3MjIsIDExMTcyNiwgMTExNzMxLCAxMTE3MzYsIDExMTc0MSwgMTExNzQ1LCAKLSAgICAxMTE3NTAsIDExMTc1NSwgMTExNzYwLCAxMTE3NjQsIDExMTc2OSwgMTExNzc0LCAxMTE3NzgsIDExMTc4MiwgMTExNzg2LCAKLSAgICAxMTE3OTAsIDExMTc5NSwgMTExODAwLCAxMTE4MDQsIDExMTgwOCwgMTExODEzLCAxMTE4MTcsIDExMTgyMiwgMTExODI3LCAKLSAgICAxMTE4MzIsIDExMTgzNywgMTExODQyLCAxMTE4NDYsIDExMTg1MSwgMTExODU2LCAxMTE4NjEsIDExMTg2NSwgMTExODcwLCAKLSAgICAxMTE4NzUsIDExMTg4MCwgMTExODg0LCAxMTE4ODksIDExMTg5NCwgMTExODk4LCAxMTE5MDIsIDExMTkwNiwgMTExOTEwLCAKLSAgICAxMTE5MTUsIDExMTkyMCwgMTExOTI0LCAxMTE5MjgsIDExMTkzMywgMTExOTM3LCAxMTE5NDIsIDExMTk0NywgMTExOTUyLCAKLSAgICAxMTE5NTcsIDExMTk2MiwgMTExOTY2LCAxMTE5NzEsIDExMTk3NiwgMTExOTgxLCAxMTE5ODUsIDExMTk5MCwgMCwgCi0gICAgMTExOTk1LCAxMTE5OTksIDExMjAwNCwgMTEyMDA5LCAxMTIwMTMsIDExMjAxNywgMTEyMDIxLCAxMTIwMjUsIDExMjAzMCwgCi0gICAgMTEyMDM1LCAxMTIwMzksIDExMjA0MywgMTEyMDQ4LCAxMTIwNTIsIDExMjA1NywgMTEyMDYyLCAxMTIwNjcsIDExMjA3MiwgCi0gICAgMTEyMDc3LCAxMTIwODIsIDExMjA4OCwgMTEyMDk0LCAxMTIxMDAsIDExMjEwNSwgMTEyMTExLCAxMTIxMTcsIDExMjEyMywgCi0gICAgMTEyMTI4LCAxMTIxMzQsIDExMjE0MCwgMTEyMTQ1LCAxMTIxNTAsIDExMjE1NSwgMTEyMTYwLCAxMTIxNjYsIDExMjE3MiwgCi0gICAgMTEyMTc3LCAxMTIxODIsIDExMjE4OCwgMTEyMTkzLCAxMTIxOTksIDExMjIwNSwgMTEyMjExLCAxMTIyMTcsIDExMjIyMywgCi0gICAgMTEyMjI4LCAxMTIyMzQsIDExMjI0MCwgMTEyMjQ2LCAxMTIyNTEsIDExMjI1NywgMTEyMjYzLCAxMTIyNjksIDExMjI3NCwgCi0gICAgMTEyMjgwLCAxMTIyODYsIDExMjI5MSwgMTEyMjk2LCAxMTIzMDEsIDExMjMwNiwgMTEyMzEyLCAxMTIzMTgsIDExMjMyMywgCi0gICAgMTEyMzI4LCAxMTIzMzQsIDExMjMzOSwgMTEyMzQ1LCAxMTIzNTEsIDExMjM1NywgMTEyMzYzLCAxMTIzNjksIDAsIAotICAgIDExMjM3MywgMTEyMzc4LCAwLCAwLCAxMTIzODMsIDAsIDAsIDExMjM4OCwgMTEyMzkzLCAwLCAwLCAxMTIzOTgsIDExMjQwMiwgCi0gICAgMTEyNDA2LCAxMTI0MTEsIDAsIDExMjQxNiwgMTEyNDIwLCAxMTI0MjUsIDExMjQyOSwgMTEyNDM0LCAxMTI0MzksIAotICAgIDExMjQ0NCwgMTEyNDQ5LCAxMTI0NTQsIDExMjQ1OCwgMTEyNDYzLCAxMTI0NjgsIDAsIDExMjQ3MywgMCwgMTEyNDc4LCAKLSAgICAxMTI0ODMsIDExMjQ4NywgMTEyNDkyLCAxMTI0OTcsIDExMjUwMSwgMTEyNTA1LCAwLCAxMTI1MDksIDExMjUxNCwgCi0gICAgMTEyNTE5LCAxMTI1MjMsIDExMjUyNywgMTEyNTMyLCAxMTI1MzYsIDExMjU0MSwgMTEyNTQ2LCAxMTI1NTEsIDExMjU1NiwgCi0gICAgMTEyNTYxLCAxMTI1NjYsIDExMjU3MiwgMTEyNTc4LCAxMTI1ODQsIDExMjU4OSwgMTEyNTk1LCAxMTI2MDEsIDExMjYwNywgCi0gICAgMTEyNjEyLCAxMTI2MTgsIDExMjYyNCwgMTEyNjI5LCAxMTI2MzQsIDExMjYzOSwgMTEyNjQ0LCAxMTI2NTAsIDExMjY1NiwgCi0gICAgMTEyNjYxLCAxMTI2NjYsIDExMjY3MiwgMTEyNjc3LCAxMTI2ODMsIDExMjY4OSwgMTEyNjk1LCAxMTI3MDEsIDExMjcwNywgCi0gICAgMTEyNzEyLCAxMTI3MTgsIDExMjcyNCwgMTEyNzMwLCAxMTI3MzUsIDExMjc0MSwgMTEyNzQ3LCAxMTI3NTMsIDExMjc1OCwgCi0gICAgMTEyNzY0LCAxMTI3NzAsIDExMjc3NSwgMTEyNzgwLCAxMTI3ODUsIDExMjc5MCwgMTEyNzk2LCAxMTI4MDIsIDExMjgwNywgCi0gICAgMTEyODEyLCAxMTI4MTgsIDExMjgyMywgMTEyODI5LCAxMTI4MzUsIDExMjg0MSwgMTEyODQ3LCAxMTI4NTMsIDExMjg1NywgCi0gICAgMCwgMTEyODYyLCAxMTI4NjcsIDExMjg3MSwgMTEyODc2LCAwLCAwLCAxMTI4ODEsIDExMjg4NiwgMTEyODkxLCAxMTI4OTUsIAotICAgIDExMjg5OSwgMTEyOTAzLCAxMTI5MDcsIDExMjkxMiwgMCwgMTEyOTE3LCAxMTI5MjEsIDExMjkyNiwgMTEyOTMwLCAKLSAgICAxMTI5MzUsIDExMjk0MCwgMTEyOTQ1LCAwLCAxMTI5NTAsIDExMjk1NCwgMTEyOTU5LCAxMTI5NjQsIDExMjk2OSwgCi0gICAgMTEyOTczLCAxMTI5NzgsIDExMjk4MywgMTEyOTg4LCAxMTI5OTIsIDExMjk5NywgMTEzMDAyLCAxMTMwMDYsIDExMzAxMCwgCi0gICAgMTEzMDE0LCAxMTMwMTgsIDExMzAyMywgMTEzMDI4LCAxMTMwMzIsIDExMzAzNiwgMTEzMDQxLCAxMTMwNDUsIDExMzA1MCwgCi0gICAgMTEzMDU1LCAxMTMwNjAsIDExMzA2NSwgMTEzMDcwLCAxMTMwNzQsIDAsIDExMzA3OSwgMTEzMDg0LCAxMTMwODgsIAotICAgIDExMzA5MywgMCwgMTEzMDk4LCAxMTMxMDIsIDExMzEwNywgMTEzMTEyLCAxMTMxMTYsIDAsIDExMzEyMCwgMCwgMCwgMCwgCi0gICAgMTEzMTI0LCAxMTMxMjgsIDExMzEzMywgMTEzMTM3LCAxMTMxNDIsIDExMzE0NywgMTEzMTUyLCAwLCAxMTMxNTcsIAotICAgIDExMzE2MSwgMTEzMTY2LCAxMTMxNzEsIDExMzE3NiwgMTEzMTgwLCAxMTMxODUsIDExMzE5MCwgMTEzMTk1LCAxMTMxOTksIAotICAgIDExMzIwNCwgMTEzMjA5LCAxMTMyMTMsIDExMzIxNywgMTEzMjIxLCAxMTMyMjUsIDExMzIzMCwgMTEzMjM1LCAxMTMyMzksIAotICAgIDExMzI0MywgMTEzMjQ4LCAxMTMyNTIsIDExMzI1NywgMTEzMjYyLCAxMTMyNjcsIDExMzI3MiwgMTEzMjc3LCAxMTMyODIsIAotICAgIDExMzI4OCwgMTEzMjk0LCAxMTMzMDAsIDExMzMwNSwgMTEzMzExLCAxMTMzMTcsIDExMzMyMywgMTEzMzI4LCAxMTMzMzQsIAotICAgIDExMzM0MCwgMTEzMzQ1LCAxMTMzNTAsIDExMzM1NSwgMTEzMzYwLCAxMTMzNjYsIDExMzM3MiwgMTEzMzc3LCAxMTMzODIsIAotICAgIDExMzM4OCwgMTEzMzkzLCAxMTMzOTksIDExMzQwNSwgMTEzNDExLCAxMTM0MTcsIDExMzQyMywgMTEzNDI4LCAxMTM0MzQsIAotICAgIDExMzQ0MCwgMTEzNDQ2LCAxMTM0NTEsIDExMzQ1NywgMTEzNDYzLCAxMTM0NjksIDExMzQ3NCwgMTEzNDgwLCAxMTM0ODYsIAotICAgIDExMzQ5MSwgMTEzNDk2LCAxMTM1MDEsIDExMzUwNiwgMTEzNTEyLCAxMTM1MTgsIDExMzUyMywgMTEzNTI4LCAxMTM1MzQsIAotICAgIDExMzUzOSwgMTEzNTQ1LCAxMTM1NTEsIDExMzU1NywgMTEzNTYzLCAxMTM1NjksIDExMzU3MywgMTEzNTc4LCAxMTM1ODMsIAotICAgIDExMzU4OCwgMTEzNTkyLCAxMTM1OTcsIDExMzYwMiwgMTEzNjA3LCAxMTM2MTEsIDExMzYxNiwgMTEzNjIxLCAxMTM2MjUsIAotICAgIDExMzYyOSwgMTEzNjMzLCAxMTM2MzcsIDExMzY0MiwgMTEzNjQ3LCAxMTM2NTEsIDExMzY1NSwgMTEzNjYwLCAxMTM2NjQsIAotICAgIDExMzY2OSwgMTEzNjc0LCAxMTM2NzksIDExMzY4NCwgMTEzNjg5LCAxMTM2OTMsIDExMzY5OCwgMTEzNzAzLCAxMTM3MDgsIAotICAgIDExMzcxMiwgMTEzNzE3LCAxMTM3MjIsIDExMzcyNywgMTEzNzMxLCAxMTM3MzYsIDExMzc0MSwgMTEzNzQ1LCAxMTM3NDksIAotICAgIDExMzc1MywgMTEzNzU3LCAxMTM3NjIsIDExMzc2NywgMTEzNzcxLCAxMTM3NzUsIDExMzc4MCwgMTEzNzg0LCAxMTM3ODksIAotICAgIDExMzc5NCwgMTEzNzk5LCAxMTM4MDQsIDExMzgwOSwgMTEzODE0LCAxMTM4MjAsIDExMzgyNiwgMTEzODMyLCAxMTM4MzcsIAotICAgIDExMzg0MywgMTEzODQ5LCAxMTM4NTUsIDExMzg2MCwgMTEzODY2LCAxMTM4NzIsIDExMzg3NywgMTEzODgyLCAxMTM4ODcsIAotICAgIDExMzg5MiwgMTEzODk4LCAxMTM5MDQsIDExMzkwOSwgMTEzOTE0LCAxMTM5MjAsIDExMzkyNSwgMTEzOTMxLCAxMTM5MzcsIAotICAgIDExMzk0MywgMTEzOTQ5LCAxMTM5NTUsIDExMzk2MCwgMTEzOTY2LCAxMTM5NzIsIDExMzk3OCwgMTEzOTgzLCAxMTM5ODksIAotICAgIDExMzk5NSwgMTE0MDAxLCAxMTQwMDYsIDExNDAxMiwgMTE0MDE4LCAxMTQwMjMsIDExNDAyOCwgMTE0MDMzLCAxMTQwMzgsIAotICAgIDExNDA0NCwgMTE0MDUwLCAxMTQwNTUsIDExNDA2MCwgMTE0MDY2LCAxMTQwNzEsIDExNDA3NywgMTE0MDgzLCAxMTQwODksIAotICAgIDExNDA5NSwgMTE0MTAxLCAxMTQxMDYsIDExNDExMiwgMTE0MTE4LCAxMTQxMjQsIDExNDEyOSwgMTE0MTM1LCAxMTQxNDEsIAotICAgIDExNDE0NywgMTE0MTUyLCAxMTQxNTgsIDExNDE2NCwgMTE0MTY5LCAxMTQxNzQsIDExNDE3OSwgMTE0MTg0LCAxMTQxOTAsIAotICAgIDExNDE5NiwgMTE0MjAxLCAxMTQyMDYsIDExNDIxMiwgMTE0MjE3LCAxMTQyMjMsIDExNDIyOSwgMTE0MjM1LCAxMTQyNDEsIAotICAgIDExNDI0NywgMTE0MjUyLCAxMTQyNTgsIDExNDI2NCwgMTE0MjcwLCAxMTQyNzUsIDExNDI4MSwgMTE0Mjg3LCAxMTQyOTMsIAotICAgIDExNDI5OCwgMTE0MzA0LCAxMTQzMTAsIDExNDMxNSwgMTE0MzIwLCAxMTQzMjUsIDExNDMzMCwgMTE0MzM2LCAxMTQzNDIsIAotICAgIDExNDM0NywgMTE0MzUyLCAxMTQzNTgsIDExNDM2MywgMTE0MzY5LCAxMTQzNzUsIDExNDM4MSwgMTE0Mzg3LCAxMTQzOTMsIAotICAgIDExNDM5OSwgMTE0NDA2LCAxMTQ0MTMsIDExNDQyMCwgMTE0NDI2LCAxMTQ0MzMsIDExNDQ0MCwgMTE0NDQ3LCAxMTQ0NTMsIAotICAgIDExNDQ2MCwgMTE0NDY3LCAxMTQ0NzMsIDExNDQ3OSwgMTE0NDg1LCAxMTQ0OTEsIDExNDQ5OCwgMTE0NTA1LCAxMTQ1MTEsIAotICAgIDExNDUxNywgMTE0NTI0LCAxMTQ1MzAsIDExNDUzNywgMTE0NTQ0LCAxMTQ1NTEsIDExNDU1OCwgMTE0NTY1LCAxMTQ1NzEsIAotICAgIDExNDU3OCwgMTE0NTg1LCAxMTQ1OTIsIDExNDU5OCwgMTE0NjA1LCAxMTQ2MTIsIDExNDYxOSwgMTE0NjI1LCAxMTQ2MzIsIAotICAgIDExNDYzOSwgMTE0NjQ1LCAxMTQ2NTEsIDExNDY1NywgMTE0NjYzLCAxMTQ2NzAsIDExNDY3NywgMTE0NjgzLCAxMTQ2ODksIAotICAgIDExNDY5NiwgMTE0NzAyLCAxMTQ3MDksIDExNDcxNiwgMTE0NzIzLCAxMTQ3MzAsIDExNDczNywgMTE0NzQyLCAxMTQ3NDgsIAotICAgIDExNDc1NCwgMTE0NzYwLCAxMTQ3NjUsIDExNDc3MSwgMTE0Nzc3LCAxMTQ3ODMsIDExNDc4OCwgMTE0Nzk0LCAxMTQ4MDAsIAotICAgIDExNDgwNSwgMTE0ODEwLCAxMTQ4MTUsIDExNDgyMCwgMTE0ODI2LCAxMTQ4MzIsIDExNDgzNywgMTE0ODQyLCAxMTQ4NDgsIAotICAgIDExNDg1MywgMTE0ODU5LCAxMTQ4NjUsIDExNDg3MSwgMTE0ODc3LCAxMTQ4ODMsIDExNDg4OCwgMTE0ODk0LCAxMTQ5MDAsIAotICAgIDExNDkwNiwgMTE0OTExLCAxMTQ5MTcsIDExNDkyMywgMTE0OTI5LCAxMTQ5MzQsIDExNDk0MCwgMTE0OTQ2LCAxMTQ5NTEsIAotICAgIDExNDk1NiwgMTE0OTYxLCAxMTQ5NjYsIDExNDk3MiwgMTE0OTc4LCAxMTQ5ODMsIDExNDk4OCwgMTE0OTk0LCAxMTQ5OTksIAotICAgIDExNTAwNSwgMTE1MDExLCAxMTUwMTcsIDExNTAyMywgMTE1MDI5LCAxMTUwMzUsIDAsIDAsIDExNTA0MiwgMTE1MDQ3LCAKLSAgICAxMTUwNTIsIDExNTA1NywgMTE1MDYyLCAxMTUwNjcsIDExNTA3MiwgMTE1MDc3LCAxMTUwODIsIDExNTA4NywgMTE1MDkyLCAKLSAgICAxMTUwOTcsIDExNTEwMiwgMTE1MTA3LCAxMTUxMTIsIDExNTExNywgMTE1MTIyLCAxMTUxMjcsIDExNTEzMywgMTE1MTM4LCAKLSAgICAxMTUxNDMsIDExNTE0OCwgMTE1MTUzLCAxMTUxNTgsIDExNTE2MywgMTE1MTY4LCAxMTUxNzIsIDExNTE3NywgMTE1MTgyLCAKLSAgICAxMTUxODcsIDExNTE5MiwgMTE1MTk3LCAxMTUyMDIsIDExNTIwNywgMTE1MjEyLCAxMTUyMTcsIDExNTIyMiwgMTE1MjI3LCAKLSAgICAxMTUyMzIsIDExNTIzNywgMTE1MjQyLCAxMTUyNDcsIDExNTI1MiwgMTE1MjU3LCAxMTUyNjMsIDExNTI2OCwgMTE1MjczLCAKLSAgICAxMTUyNzgsIDExNTI4MywgMTE1Mjg4LCAxMTUyOTMsIDExNTI5OCwgMTE1MzA0LCAxMTUzMDksIDExNTMxNCwgMTE1MzE5LCAKLSAgICAxMTUzMjQsIDExNTMyOSwgMTE1MzM0LCAxMTUzMzksIDExNTM0NCwgMTE1MzQ5LCAxMTUzNTQsIDExNTM1OSwgMTE1MzY0LCAKLSAgICAxMTUzNjksIDExNTM3NCwgMTE1Mzc5LCAxMTUzODQsIDExNTM4OSwgMTE1Mzk0LCAxMTUzOTksIDExNTQwNCwgMTE1NDA5LCAKLSAgICAxMTU0MTQsIDExNTQxOSwgMTE1NDI1LCAxMTU0MzAsIDExNTQzNSwgMTE1NDQwLCAxMTU0NDUsIDExNTQ1MCwgMTE1NDU1LCAKLSAgICAxMTU0NjAsIDExNTQ2NCwgMTE1NDY5LCAxMTU0NzQsIDExNTQ3OSwgMTE1NDg0LCAxMTU0ODksIDExNTQ5NCwgMTE1NDk5LCAKLSAgICAxMTU1MDQsIDExNTUwOSwgMTE1NTE0LCAxMTU1MTksIDExNTUyNCwgMTE1NTI5LCAxMTU1MzQsIDExNTUzOSwgMTE1NTQ0LCAKLSAgICAxMTU1NDksIDExNTU1NSwgMTE1NTYwLCAxMTU1NjUsIDExNTU3MCwgMTE1NTc1LCAxMTU1ODAsIDExNTU4NSwgMTE1NTkwLCAKLSAgICAxMTU1OTYsIDExNTYwMSwgMTE1NjA2LCAxMTU2MTEsIDExNTYxNiwgMTE1NjIxLCAxMTU2MjYsIDExNTYzMiwgMTE1NjM4LCAKLSAgICAxMTU2NDQsIDExNTY1MCwgMTE1NjU2LCAxMTU2NjIsIDExNTY2OCwgMTE1Njc0LCAxMTU2ODAsIDExNTY4NiwgMTE1NjkyLCAKLSAgICAxMTU2OTgsIDExNTcwNCwgMTE1NzEwLCAxMTU3MTYsIDExNTcyMiwgMTE1NzI4LCAxMTU3MzUsIDExNTc0MSwgMTE1NzQ3LCAKLSAgICAxMTU3NTMsIDExNTc1OSwgMTE1NzY1LCAxMTU3NzEsIDExNTc3NywgMTE1NzgyLCAxMTU3ODgsIDExNTc5NCwgMTE1ODAwLCAKLSAgICAxMTU4MDYsIDExNTgxMiwgMTE1ODE4LCAxMTU4MjQsIDExNTgzMCwgMTE1ODM2LCAxMTU4NDIsIDExNTg0OCwgMTE1ODU0LCAKLSAgICAxMTU4NjAsIDExNTg2NiwgMTE1ODcyLCAxMTU4NzgsIDExNTg4NCwgMTE1ODkxLCAxMTU4OTcsIDExNTkwMywgMTE1OTA5LCAKLSAgICAxMTU5MTUsIDExNTkyMSwgMTE1OTI3LCAxMTU5MzMsIDExNTk0MCwgMTE1OTQ2LCAxMTU5NTIsIDExNTk1OCwgMTE1OTY0LCAKLSAgICAxMTU5NzAsIDExNTk3NiwgMTE1OTgyLCAxMTU5ODgsIDExNTk5NCwgMTE2MDAwLCAxMTYwMDYsIDExNjAxMiwgMTE2MDE4LCAKLSAgICAxMTYwMjQsIDExNjAzMCwgMTE2MDM2LCAxMTYwNDIsIDExNjA0OCwgMTE2MDU0LCAxMTYwNjAsIDExNjA2NiwgMTE2MDcyLCAKLSAgICAxMTYwNzgsIDExNjA4NSwgMTE2MDkxLCAxMTYwOTcsIDExNjEwMywgMTE2MTA5LCAxMTYxMTUsIDExNjEyMSwgMTE2MTI3LCAKLSAgICAxMTYxMzIsIDExNjEzOCwgMTE2MTQ0LCAxMTYxNTAsIDExNjE1NiwgMTE2MTYyLCAxMTYxNjgsIDExNjE3NCwgMTE2MTgwLCAKLSAgICAxMTYxODYsIDExNjE5MiwgMTE2MTk4LCAxMTYyMDQsIDExNjIxMCwgMTE2MjE2LCAxMTYyMjIsIDExNjIyOCwgMTE2MjM0LCAKLSAgICAxMTYyNDEsIDExNjI0NywgMTE2MjUzLCAxMTYyNTksIDExNjI2NSwgMTE2MjcxLCAxMTYyNzcsIDExNjI4MywgMTE2MjkwLCAKLSAgICAxMTYyOTYsIDExNjMwMiwgMTE2MzA4LCAxMTYzMTQsIDExNjMyMCwgMTE2MzI2LCAxMTYzMzMsIDExNjM0MCwgMTE2MzQ3LCAKLSAgICAxMTYzNTQsIDExNjM2MSwgMTE2MzY4LCAxMTYzNzUsIDExNjM4MiwgMTE2Mzg5LCAxMTYzOTYsIDExNjQwMywgMTE2NDEwLCAKLSAgICAxMTY0MTcsIDExNjQyNCwgMTE2NDMxLCAxMTY0MzgsIDExNjQ0NSwgMTE2NDUzLCAxMTY0NjAsIDExNjQ2NywgMTE2NDc0LCAKLSAgICAxMTY0ODEsIDExNjQ4OCwgMTE2NDk1LCAxMTY1MDIsIDExNjUwOCwgMTE2NTE1LCAxMTY1MjIsIDExNjUyOSwgMTE2NTM2LCAKLSAgICAxMTY1NDMsIDExNjU1MCwgMTE2NTU3LCAxMTY1NjQsIDExNjU3MSwgMTE2NTc4LCAxMTY1ODUsIDExNjU5MiwgMTE2NTk5LCAKLSAgICAxMTY2MDYsIDExNjYxMywgMTE2NjIwLCAxMTY2MjcsIDExNjYzNSwgMTE2NjQyLCAxMTY2NDksIDExNjY1NiwgMTE2NjYzLCAKLSAgICAxMTY2NzAsIDExNjY3NywgMTE2Njg0LCAxMTY2OTIsIDExNjY5OSwgMTE2NzA2LCAxMTY3MTMsIDExNjcyMCwgMTE2NzI3LCAKLSAgICAxMTY3MzQsIDExNjczOSwgMCwgMCwgMTE2NzQ0LCAxMTY3NDksIDExNjc1MywgMTE2NzU3LCAxMTY3NjEsIDExNjc2NSwgCi0gICAgMTE2NzY5LCAxMTY3NzMsIDExNjc3NywgMTE2NzgxLCAxMTY3ODUsIDExNjc5MCwgMTE2Nzk0LCAxMTY3OTgsIDExNjgwMiwgCi0gICAgMTE2ODA2LCAxMTY4MTAsIDExNjgxNCwgMTE2ODE4LCAxMTY4MjIsIDExNjgyNiwgMTE2ODMxLCAxMTY4MzUsIDExNjgzOSwgCi0gICAgMTE2ODQzLCAxMTY4NDcsIDExNjg1MSwgMTE2ODU1LCAxMTY4NTksIDExNjg2MywgMTE2ODY3LCAxMTY4NzMsIDExNjg3OCwgCi0gICAgMTE2ODgzLCAxMTY4ODgsIDExNjg5MywgMTE2ODk4LCAxMTY5MDMsIDExNjkwOCwgMTE2OTEzLCAxMTY5MTgsIDExNjkyNCwgCi0gICAgMTE2OTI5LCAxMTY5MzQsIDExNjkzOSwgMTE2OTQ0LCAxMTY5NDksIDExNjk1NCwgMTE2OTU5LCAxMTY5NjQsIDExNjk2OSwgCi0gICAgMTE2OTc2LCAxMTY5ODMsIDExNjk5MCwgMTE2OTk3LCAxMTcwMDQsIDExNzAxMSwgMTE3MDE3LCAxMTcwMjQsIDExNzAzMSwgCi0gICAgMTE3MDM4LCAxMTcwNDYsIDExNzA1NCwgMTE3MDYyLCAxMTcwNzAsIDExNzA3OCwgMTE3MDg2LCAxMTcwOTMsIDExNzEwMCwgCi0gICAgMTE3MTA3LCAxMTcxMTUsIDExNzEyMywgMTE3MTMxLCAxMTcxMzksIDExNzE0NywgMTE3MTU1LCAxMTcxNjIsIDExNzE2OSwgCi0gICAgMTE3MTc2LCAxMTcxODQsIDExNzE5MiwgMTE3MjAwLCAxMTcyMDgsIDExNzIxNiwgMTE3MjI0LCAxMTcyMjksIDExNzIzNCwgCi0gICAgMTE3MjM5LCAxMTcyNDQsIDExNzI0OSwgMTE3MjU0LCAxMTcyNTksIDExNzI2NCwgMTE3MjY5LCAwLCAwLCAwLCAwLCAKLSAgICAxMTcyNzQsIDExNzI3OSwgMTE3MjgzLCAxMTcyODcsIDExNzI5MSwgMTE3Mjk1LCAxMTcyOTksIDExNzMwMywgMTE3MzA3LCAKLSAgICAxMTczMTEsIDExNzMxNSwgMTE3MzE5LCAxMTczMjMsIDExNzMyNywgMTE3MzMxLCAxMTczMzUsIDExNzMzOSwgMTE3MzQzLCAKLSAgICAxMTczNDcsIDExNzM1MSwgMTE3MzU1LCAxMTczNTksIDExNzM2MywgMTE3MzY3LCAxMTczNzEsIDExNzM3NSwgMTE3Mzc5LCAKLSAgICAxMTczODMsIDExNzM4NywgMTE3MzkxLCAxMTczOTUsIDExNzM5OSwgMTE3NDAzLCAxMTc0MDcsIDExNzQxMSwgMTE3NDE1LCAKLSAgICAxMTc0MTksIDExNzQyMywgMTE3NDI3LCAxMTc0MzEsIDExNzQzNSwgMTE3NDM5LCAxMTc0NDMsIDExNzQ0NywgMTE3NDUxLCAKLSAgICAxMTc0NTUsIDExNzQ1OSwgMTE3NDYzLCAxMTc0NjcsIDExNzQ3MSwgMTE3NDc1LCAxMTc0ODAsIDExNzQ4NCwgMTE3NDg4LCAKLSAgICAxMTc0OTIsIDExNzQ5NiwgMTE3NTAwLCAxMTc1MDQsIDExNzUwOCwgMTE3NTEyLCAxMTc1MTYsIDExNzUyMCwgMTE3NTI0LCAKLSAgICAxMTc1MjgsIDExNzUzMiwgMTE3NTM2LCAxMTc1NDAsIDExNzU0NCwgMTE3NTQ4LCAxMTc1NTIsIDExNzU1NiwgMTE3NTYwLCAKLSAgICAxMTc1NjQsIDExNzU2OCwgMTE3NTcyLCAxMTc1NzYsIDExNzU4MCwgMTE3NTg0LCAxMTc1ODgsIDExNzU5MiwgMTE3NTk2LCAKLSAgICAxMTc2MDAsIDExNzYwNCwgMTE3NjA4LCAxMTc2MTIsIDExNzYxNiwgMTE3NjIwLCAxMTc2MjQsIDExNzYyOCwgMTE3NjMyLCAKLSAgICAxMTc2MzYsIDExNzY0MCwgMTE3NjQ0LCAxMTc2NDgsIDExNzY1MiwgMTE3NjU2LCAxMTc2NjAsIDExNzY2NCwgMTE3NjY4LCAKLSAgICAxMTc2NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNzY3NiwgMTE3NjgyLCAxMTc2OTEsIAotICAgIDExNzY5OSwgMTE3NzA3LCAxMTc3MTYsIDExNzcyNSwgMTE3NzM0LCAxMTc3NDMsIDExNzc1MiwgMTE3NzYxLCAxMTc3NzAsIAotICAgIDExNzc3OSwgMTE3Nzg4LCAxMTc3OTcsIDAsIDAsIDExNzgwNiwgMTE3ODE1LCAxMTc4MjMsIDExNzgzMSwgMTE3ODQwLCAKLSAgICAxMTc4NDksIDExNzg1OCwgMTE3ODY3LCAxMTc4NzYsIDExNzg4NSwgMTE3ODk0LCAxMTc5MDMsIDExNzkxMiwgMTE3OTIxLCAKLSAgICAwLCAwLCAxMTc5MzAsIDExNzkzOSwgMTE3OTQ3LCAxMTc5NTUsIDExNzk2NCwgMTE3OTczLCAxMTc5ODIsIDExNzk5MSwgCi0gICAgMTE4MDAwLCAxMTgwMDksIDExODAxOCwgMTE4MDI3LCAxMTgwMzYsIDExODA0NSwgMTE4MDU0LCAwLCAxMTgwNjEsIAotICAgIDExODA3MCwgMTE4MDc4LCAxMTgwODYsIDExODA5NSwgMTE4MTA0LCAxMTgxMTMsIDExODEyMiwgMTE4MTMxLCAxMTgxNDAsIAotICAgIDExODE0OSwgMTE4MTU4LCAxMTgxNjcsIDExODE3NiwgMTE4MTg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTgxOTIsIAotICAgIDExODE5OSwgMTE4MjA0LCAxMTgyMDgsIDExODIxMiwgMTE4MjE2LCAxMTgyMjEsIDExODIyNiwgMTE4MjMxLCAxMTgyMzYsIAotICAgIDExODI0MSwgMCwgMCwgMCwgMCwgMCwgMTE4MjQ2LCAxMTgyNTEsIDExODI1NywgMTE4MjYzLCAxMTgyNjksIDExODI3NCwgCi0gICAgMTE4MjgwLCAxMTgyODYsIDExODI5MiwgMTE4Mjk3LCAxMTgzMDMsIDExODMwOSwgMTE4MzE0LCAxMTgzMTksIDExODMyNCwgCi0gICAgMTE4MzI5LCAxMTgzMzUsIDExODM0MSwgMTE4MzQ2LCAxMTgzNTEsIDExODM1NywgMTE4MzYyLCAxMTgzNjgsIDExODM3NCwgCi0gICAgMTE4MzgwLCAxMTgzODYsIDExODM5MiwgMTE4NDAyLCAxMTg0MDksIDExODQxNSwgMTE4NDE4LCAwLCAxMTg0MjEsIAotICAgIDExODQyNiwgMTE4NDMyLCAxMTg0MzgsIDExODQ0NCwgMTE4NDQ5LCAxMTg0NTUsIDExODQ2MSwgMTE4NDY3LCAxMTg0NzIsIAotICAgIDExODQ3OCwgMTE4NDg0LCAxMTg0ODksIDExODQ5NCwgMTE4NDk5LCAxMTg1MDQsIDExODUxMCwgMTE4NTE2LCAxMTg1MjEsIAotICAgIDExODUyNiwgMTE4NTMyLCAxMTg1MzcsIDExODU0MywgMTE4NTQ5LCAxMTg1NTUsIDExODU2MSwgMTE4NTY3LCAxMTg1NzAsIAotICAgIDExODU3MywgMTE4NTc2LCAxMTg1NzksIDExODU4MiwgMTE4NTg1LCAxMTg1OTEsIDExODU5OCwgMTE4NjA1LCAxMTg2MTIsIAotICAgIDExODYxOCwgMTE4NjI1LCAxMTg2MzIsIDExODYzOSwgMTE4NjQ1LCAxMTg2NTIsIDExODY1OSwgMTE4NjY1LCAxMTg2NzEsIAotICAgIDExODY3NywgMTE4NjgzLCAxMTg2OTAsIDExODY5NywgMTE4NzAzLCAxMTg3MDksIDExODcxNiwgMTE4NzIyLCAxMTg3MjksIAotICAgIDExODczNiwgMTE4NzQzLCAxMTg3NTAsIDAsIDAsIDAsIDAsIDAsIDAsIDExODc1NywgMTE4NzYzLCAxMTg3NzAsIDExODc3NywgCi0gICAgMTE4Nzg0LCAxMTg3OTAsIDExODc5NywgMTE4ODA0LCAxMTg4MTEsIDExODgxNywgMTE4ODI0LCAxMTg4MzEsIDExODgzNywgCi0gICAgMTE4ODQzLCAxMTg4NDksIDExODg1NSwgMTE4ODYyLCAxMTg4NjksIDExODg3NSwgMTE4ODgxLCAxMTg4ODgsIDExODg5NCwgCi0gICAgMTE4OTAxLCAxMTg5MDgsIDExODkxNSwgMTE4OTIyLCAxMTg5MjksIDExODkzOCwgMTE4OTQyLCAxMTg5NDUsIDExODk0OSwgCi0gICAgMTE4OTUzLCAxMTg5NTcsIDExODk2MCwgMTE4OTYzLCAxMTg5NjYsIDExODk2OSwgMTE4OTcyLCAxMTg5NzUsIDExODk3OCwgCi0gICAgMTE4OTgxLCAxMTg5ODQsIDExODk5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE4OTkzLCAxMTkwMDAsIDExOTAwOCwgMTE5MDE2LCAxMTkwMjQsIAotICAgIDExOTAzMSwgMTE5MDM5LCAxMTkwNDcsIDExOTA1NSwgMTE5MDYyLCAxMTkwNzAsIDExOTA3OCwgMTE5MDg1LCAxMTkwOTIsIAotICAgIDExOTA5OSwgMTE5MTA2LCAxMTkxMTQsIDExOTEyMiwgMTE5MTI5LCAxMTkxMzYsIDExOTE0NCwgMTE5MTUxLCAxMTkxNTksIAotICAgIDExOTE2NywgMTE5MTc1LCAxMTkxODMsIDExOTE5MSwgMTE5MTk1LCAxMTkxOTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDExOTIwMywgMTE5MjA5LCAxMTkyMTUsIDExOTIyMSwgMTE5MjI1LCAxMTkyMzEsIDExOTIzNywgCi0gICAgMTE5MjQzLCAxMTkyNDksIDExOTI1NSwgMTE5MjYxLCAxMTkyNjcsIDExOTI3MywgMTE5Mjc5LCAxMTkyODUsIDExOTI5MSwgCi0gICAgMTE5Mjk3LCAxMTkzMDMsIDExOTMwOSwgMTE5MzE1LCAxMTkzMjEsIDExOTMyNywgMTE5MzMzLCAxMTkzMzksIDExOTM0NSwgCi0gICAgMTE5MzUxLCAxMTkzNTcsIDExOTM2MywgMTE5MzY5LCAxMTkzNzUsIDExOTM4MSwgMTE5Mzg3LCAxMTkzOTMsIDExOTM5OSwgCi0gICAgMTE5NDA1LCAxMTk0MTEsIDExOTQxNywgMTE5NDIzLCAxMTk0MjksIDExOTQzNSwgMTE5NDQxLCAxMTk0NDcsIDExOTQ1MywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTE5NDU5LCAxMTk0NzAsIDExOTQ4MSwgMTE5NDkyLCAxMTk1MDMsIDExOTUxNCwgMTE5NTI1LCAKLSAgICAxMTk1MzYsIDExOTU0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE5NTU4LCAxMTk1NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExOTU2NiwgMTE5NTY4LCAxMTk1NzAsIAotICAgIDExOTU3NCwgMTE5NTc5LCAxMTk1ODQsIDExOTU4NiwgMTE5NTkyLCAxMTk1OTcsIDExOTU5OSwgMTE5NjA1LCAxMTk2MDksIAotICAgIDExOTYxMSwgMTE5NjE1LCAxMTk2MjEsIDExOTYyNywgMTE5NjMzLCAxMTk2MzgsIDExOTY0MiwgMTE5NjQ5LCAxMTk2NTYsIAotICAgIDExOTY2MywgMTE5NjY4LCAxMTk2NzUsIDExOTY4MiwgMTE5Njg5LCAxMTk2OTMsIDExOTY5OSwgMTE5NzA4LCAxMTk3MTcsIAotICAgIDExOTcyNCwgMTE5NzI5LCAxMTk3MzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDExOTczNywgMTE5NzM5LCAxMTk3NDEsIDExOTc0NSwgMTE5NzQ5LCAxMTk3NTMsIDAsIDExOTc1NSwgMTE5NzU3LCAKLSAgICAxMTk3NjEsIDExOTc2MywgMTE5NzY1LCAxMTk3NjcsIDExOTc2OSwgMTE5Nzc0LCAxMTk3NzksIDExOTc4MSwgMTE5Nzg3LCAKLSAgICAxMTk3OTEsIDExOTc5NSwgMTE5ODAzLCAxMTk4MDUsIDExOTgwNywgMTE5ODA5LCAxMTk4MTEsIDExOTgxMywgMTE5ODE1LCAKLSAgICAxMTk4MTcsIDExOTgxOSwgMTE5ODIxLCAxMTk4MjMsIDExOTgyNywgMTE5ODMxLCAxMTk4MzMsIDExOTgzNSwgMTE5ODM3LCAKLSAgICAxMTk4MzksIDExOTg0MSwgMTE5ODQ2LCAxMTk4NTIsIDExOTg1NiwgMTE5ODYwLCAxMTk4NjQsIDExOTg2OCwgMTE5ODczLCAKLSAgICAxMTk4NzcsIDExOTg3OSwgMTE5ODgxLCAxMTk4ODUsIDExOTg5MSwgMTE5ODkzLCAxMTk4OTUsIDExOTg5NywgMTE5OTAxLCAKLSAgICAxMTk5MTAsIDExOTkxNiwgMTE5OTIwLCAxMTk5MjQsIDExOTkyNiwgMTE5OTI4LCAxMTk5MzEsIDExOTkzMywgMTE5OTM1LCAKLSAgICAxMTk5MzcsIDExOTk0MSwgMTE5OTQzLCAxMTk5NDcsIDExOTk1MiwgMTE5OTU0LCAxMTk5NTksIDExOTk2NSwgMTE5OTcyLCAKLSAgICAxMTk5NzYsIDExOTk4MCwgMTE5OTg0LCAxMTk5ODgsIDExOTk5NCwgMCwgMCwgMCwgMTE5OTk4LCAxMjAwMDAsIDEyMDAwNCwgCi0gICAgMTIwMDA4LCAxMjAwMTAsIDEyMDAxNCwgMTIwMDE4LCAxMjAwMjAsIDEyMDAyNCwgMTIwMDI2LCAxMjAwMzAsIDEyMDAzNCwgCi0gICAgMTIwMDM4LCAxMjAwNDIsIDEyMDA0NiwgMTIwMDUwLCAxMjAwNTQsIDEyMDA1OCwgMTIwMDY0LCAxMjAwNjgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMDA3MiwgMTIwMDc2LCAxMjAwODAsIDEyMDA4NCwgMTIwMDkxLCAKLSAgICAxMjAwOTMsIDEyMDA5NywgMTIwMDk5LCAxMjAxMDEsIDEyMDEwNSwgMTIwMTA5LCAxMjAxMTMsIDEyMDExNSwgMTIwMTE5LCAKLSAgICAxMjAxMjMsIDEyMDEyNywgMTIwMTMxLCAxMjAxMzUsIDEyMDEzNywgMTIwMTQxLCAxMjAxNDMsIDEyMDE0OSwgMTIwMTUyLCAKLSAgICAxMjAxNTcsIDEyMDE1OSwgMTIwMTYxLCAxMjAxNjQsIDEyMDE2NiwgMTIwMTY4LCAxMjAxNzEsIDEyMDE3OCwgMTIwMTg1LCAKLSAgICAxMjAxOTIsIDEyMDE5NywgMTIwMjAxLCAxMjAyMDMsIDEyMDIwNSwgMCwgMTIwMjA3LCAxMjAyMDksIDEyMDIxMywgCi0gICAgMTIwMjE3LCAxMjAyMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEyMDIyMywgMTIwMjI3LCAxMjAyMzIsIDEyMDIzNiwgMTIwMjQyLCAxMjAyNDgsIDEyMDI1MCwgMTIwMjUyLCAKLSAgICAxMjAyNTgsIDEyMDI2MCwgMTIwMjY0LCAxMjAyNjgsIDEyMDI3MCwgMTIwMjc0LCAxMjAyNzYsIDEyMDI4MCwgMTIwMjg0LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjAyODgsIDEyMDI5MCwgMTIwMjkyLCAKLSAgICAxMjAyOTQsIDEyMDI5OCwgMTIwMzAwLCAxMjAzMDIsIDEyMDMwNCwgMTIwMzA2LCAxMjAzMDgsIDEyMDMxMCwgMTIwMzEyLCAKLSAgICAxMjAzMTQsIDEyMDMxNiwgMTIwMzE4LCAxMjAzMjAsIDEyMDMyMiwgMTIwMzI0LCAxMjAzMjYsIDEyMDMyOCwgMTIwMzMwLCAKLSAgICAxMjAzMzIsIDEyMDMzNCwgMTIwMzM2LCAxMjAzMzgsIDEyMDM0MCwgMTIwMzQyLCAxMjAzNDYsIDEyMDM0OCwgMTIwMzUwLCAKLSAgICAxMjAzNTIsIDEyMDM1NiwgMTIwMzU4LCAxMjAzNjIsIDEyMDM2NCwgMTIwMzY2LCAxMjAzNzAsIDEyMDM3NCwgMTIwMzgwLCAKLSAgICAxMjAzODIsIDEyMDM4NCwgMTIwMzg2LCAxMjAzODgsIDEyMDM5MiwgMTIwMzk2LCAxMjAzOTgsIDEyMDQwMiwgMTIwNDA2LCAKLSAgICAxMjA0MTAsIDEyMDQxNCwgMTIwNDE4LCAxMjA0MjIsIDEyMDQyNiwgMTIwNDMwLCAxMjA0MzQsIDEyMDQzOCwgMTIwNDQyLCAKLSAgICAxMjA0NDYsIDEyMDQ1MCwgMTIwNDU0LCAxMjA0NTgsIDEyMDQ2MiwgMTIwNDY2LCAwLCAxMjA0NzAsIDAsIDEyMDQ3MiwgCi0gICAgMTIwNDc0LCAxMjA0NzYsIDEyMDQ3OCwgMTIwNDgwLCAxMjA0ODgsIDEyMDQ5NiwgMTIwNTA0LCAxMjA1MTIsIDEyMDUxNywgCi0gICAgMTIwNTIyLCAxMjA1MjcsIDEyMDUzMSwgMTIwNTM1LCAxMjA1NDAsIDEyMDU0NSwgMTIwNTQ3LCAxMjA1NTEsIDEyMDU1MywgCi0gICAgMTIwNTU1LCAxMjA1NTcsIDEyMDU1OSwgMTIwNTYxLCAxMjA1NjMsIDEyMDU2NSwgMTIwNTY5LCAxMjA1NzEsIDEyMDU3MywgCi0gICAgMTIwNTc1LCAxMjA1NzksIDEyMDU4MywgMTIwNTg3LCAxMjA1OTEsIDEyMDU5NSwgMTIwNTk3LCAxMjA2MDMsIDEyMDYwOSwgCi0gICAgMTIwNjExLCAxMjA2MTMsIDEyMDYxNSwgMTIwNjE3LCAxMjA2MTksIDEyMDYyOCwgMTIwNjM1LCAxMjA2NDIsIDEyMDY0NiwgCi0gICAgMTIwNjUzLCAxMjA2NTgsIDEyMDY2NSwgMTIwNjc0LCAxMjA2NzksIDEyMDY4MywgMTIwNjg3LCAxMjA2ODksIDEyMDY5MywgCi0gICAgMTIwNjk1LCAxMjA2OTksIDEyMDcwMywgMTIwNzA1LCAxMjA3MDksIDEyMDcxMywgMTIwNzE3LCAxMjA3MTksIDEyMDcyMSwgCi0gICAgMTIwNzI3LCAxMjA3MjksIDEyMDczMSwgMTIwNzMzLCAxMjA3MzcsIDEyMDc0MSwgMTIwNzQzLCAxMjA3NDcsIDEyMDc0OSwgCi0gICAgMTIwNzUxLCAxMjA3NTQsIDEyMDc1OCwgMTIwNzYwLCAxMjA3NjQsIDEyMDc2NiwgMTIwNzY4LCAxMjA3NzMsIDEyMDc3NSwgCi0gICAgMTIwNzc5LCAxMjA3ODMsIDEyMDc4NiwgMTIwNzkwLCAxMjA3OTQsIDEyMDc5OCwgMTIwODAyLCAxMjA4MDYsIDEyMDgxMCwgCi0gICAgMTIwODE0LCAxMjA4MTksIDEyMDgyMywgMTIwODI3LCAxMjA4MzYsIDEyMDg0MSwgMTIwODQ0LCAxMjA4NDYsIDEyMDg0OSwgCi0gICAgMTIwODUyLCAxMjA4NTcsIDEyMDg1OSwgMTIwODYyLCAxMjA4NjcsIDEyMDg3MSwgMTIwODc0LCAxMjA4NzgsIDEyMDg4MiwgCi0gICAgMTIwODg1LCAxMjA4OTAsIDEyMDg5NCwgMTIwODk4LCAxMjA5MDIsIDEyMDkwNiwgMTIwOTEyLCAxMjA5MTgsIDEyMDkyNCwgCi0gICAgMTIwOTMwLCAxMjA5MzUsIDEyMDk0NiwgMTIwOTQ4LCAxMjA5NTIsIDEyMDk1NCwgMTIwOTU2LCAxMjA5NjAsIDEyMDk2NCwgCi0gICAgMTIwOTY2LCAxMjA5NzAsIDEyMDk3NiwgMTIwOTgxLCAxMjA5ODcsIDEyMDk4OSwgMTIwOTkzLCAxMjA5OTcsIDEyMTAwNCwgCi0gICAgMTIxMDExLCAxMjEwMTUsIDEyMTAxNywgMTIxMDE5LCAxMjEwMjMsIDEyMTAyNSwgMTIxMDI5LCAxMjEwMzMsIDEyMTAzNywgCi0gICAgMTIxMDM5LCAxMjEwNDEsIDEyMTA0OCwgMTIxMDUyLCAxMjEwNTYsIDEyMTA2MCwgMTIxMDY0LCAxMjEwNjgsIDEyMTA3MCwgCi0gICAgMTIxMDc0LCAxMjEwNzYsIDEyMTA3OCwgMTIxMDgyLCAxMjEwODQsIDEyMTA4OCwgMTIxMDkyLCAxMjEwOTgsIDEyMTEwMiwgCi0gICAgMTIxMTA2LCAxMjExMTAsIDEyMTExMiwgMTIxMTE1LCAxMjExMTksIDEyMTEyNiwgMTIxMTM1LCAxMjExNDQsIDEyMTE1MywgCi0gICAgMTIxMTYyLCAxMjExNjQsIDEyMTE2OCwgMTIxMTcwLCAxMjExNzQsIDEyMTE4NSwgMTIxMTg5LCAxMjExOTUsIDEyMTIwMSwgCi0gICAgMTIxMjA2LCAwLCAxMjEyMDgsIDEyMTIxMiwgMTIxMjE0LCAxMjEyMTYsIDAsIDAsIDAsIDEyMTIxOCwgMTIxMjIzLCAKLSAgICAxMjEyMzQsIDEyMTI1MCwgMTIxMjYzLCAxMjEyNzYsIDEyMTI4MCwgMTIxMjg0LCAxMjEyOTAsIDEyMTI5MiwgMTIxMzAwLCAKLSAgICAxMjEzMDgsIDEyMTMxMCwgMTIxMzE0LCAxMjEzMjAsIDEyMTMyNiwgMTIxMzMzLCAxMjEzNDAsIDEyMTM0MiwgMTIxMzQ0LCAKLSAgICAxMjEzNDgsIDEyMTM1MCwgMTIxMzU2LCAxMjEzNTgsIDEyMTM2MSwgMTIxMzY1LCAxMjEzNzEsIDEyMTM3NywgMTIxMzg4LCAKLSAgICAxMjEzOTQsIDEyMTQwMSwgMTIxNDA5LCAxMjE0MTMsIDEyMTQyMSwgMTIxNDI5LCAxMjE0MzUsIDEyMTQ0MSwgMTIxNDQ4LCAKLSAgICAxMjE0NTAsIDEyMTQ1NCwgMTIxNDU2LCAxMjE0NTgsIDEyMTQ2MywgMTIxNDY1LCAxMjE0NjcsIDEyMTQ2OSwgMTIxNDcxLCAKLSAgICAxMjE0NzUsIDEyMTQ4NiwgMTIxNDkyLCAxMjE0OTYsIDEyMTUwMCwgMTIxNTA0LCAxMjE1MTAsIDEyMTUxNiwgMTIxNTIyLCAKLSAgICAxMjE1MjgsIDEyMTUzMywgMTIxNTM4LCAxMjE1NDQsIDEyMTU1MCwgMTIxNTU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjE1NjQsIDEyMTU3MSwgMTIxNTc4LCAxMjE1ODUsIDEyMTU5MywgCi0gICAgMTIxNjAxLCAxMjE2MDksIDEyMTYxNywgMTIxNjI1LCAxMjE2MzMsIDEyMTY0MSwgMTIxNjQ5LCAxMjE2NTcsIDEyMTY2MywgCi0gICAgMTIxNjY5LCAxMjE2NzUsIDEyMTY4MSwgMTIxNjg3LCAxMjE2OTMsIDEyMTY5OSwgMTIxNzA1LCAxMjE3MTEsIDEyMTcxNywgCi0gICAgMTIxNzIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTA3MTAsIDExMDcxNSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTIxNzI5LCAxMjE3MzMsIDEyMTczNywgMTIxNzQyLCAxMjE3NDcsIDAsIDEyMTc0OSwgMTIxNzU4LCAKLSAgICAxMjE3NjYsIDEyMTc3NSwgMTIxNzg5LCAxMjE4MDMsIDEyMTgxNywgMTIxODI0LCAxMjE4MzEsIDEyMTgzNSwgMTIxODQ0LCAKLSAgICAxMjE4NTIsIDEyMTg1NiwgMTIxODY1LCAxMjE4NzIsIDEyMTg3NiwgMCwgMTIxODgwLCAxMjE4ODQsIDEyMTg5MSwgMCwgCi0gICAgMTIxODk1LCAwLCAxMjE4OTksIDAsIDEyMTkwNiwgMCwgMTIxOTE1LCAxMjE5MjcsIDEyMTkzOSwgMCwgMTIxOTQzLCAKLSAgICAxMjE5NDcsIDEyMTk1MSwgMTIxOTU1LCAxMjE5NTksIDEyMTk2NywgMCwgMCwgMTIxOTc1LCAxMjE5NzksIDEyMTk4MywgCi0gICAgMTIxOTg3LCAwLCAxMjE5OTEsIDAsIDAsIDEyMTk5NywgMTIyMDA5LCAxMjIwMTcsIDEyMjAyMSwgMCwgMTIyMDI1LCAKLSAgICAxMjIwMjksIDEyMjAzNSwgMTIyMDQyLCAxMjIwNTMsIDEyMjA2MywgMTIyMDc0LCAxMjIwODUsIDEyMjA5NCwgMTIyMTA1LCAKLSAgICAxMjIxMTEsIDEyMjExNywgMCwgMCwgMCwgMCwgMTIyMTIzLCAxMjIxMzIsIDEyMjEzOSwgMTIyMTQ1LCAxMjIxNDksIAotICAgIDEyMjE1MywgMTIyMTU3LCAxMjIxNjYsIDEyMjE3OCwgMTIyMTgyLCAxMjIxODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDExMDcyMSwgMTEwNzI2LCAxMTA3MzEsIDExMDczNiwgMTEwNzQzLCAxMTA3NTAsIDExMDc1NywgMTEwNzY0LCAxMTA3NjksIAorICAgIDExMDc3NCwgMTEwNzc5LCAxMTA3ODQsIDExMDc5MSwgMTEwNzk2LCAxMTA4MDMsIDExMDgxMCwgMTEwODE1LCAxMTA4MjAsIAorICAgIDExMDgyNSwgMTEwODMyLCAxMTA4MzcsIDExMDg0MiwgMTEwODQ5LCAxMTA4NTYsIDExMDg2MSwgMTEwODY2LCAxMTA4NzEsIAorICAgIDExMDg3OCwgMTEwODg1LCAxMTA4OTIsIDExMDg5NywgMTEwOTAyLCAxMTA5MDksIDExMDkxNiwgMTEwOTIzLCAxMTA5MzAsIAorICAgIDExMDkzNSwgMTEwOTQwLCAxMTA5NDUsIDExMDk1MiwgMTEwOTU3LCAxMTA5NjIsIDExMDk2NywgMTEwOTc0LCAxMTA5ODMsIAorICAgIDExMDk5MCwgMTEwOTk1LCAxMTEwMDAsIDExMTAwNSwgMTExMDEwLCAxMTEwMTUsIDExMTAyMCwgMTExMDI5LCAxMTEwMzYsIAorICAgIDExMTA0MSwgMTExMDQ4LCAxMTEwNTUsIDExMTA2MCwgMTExMDY1LCAxMTEwNzAsIDExMTA3NywgMTExMDgyLCAxMTEwODksIAorICAgIDExMTA5NiwgMTExMTAxLCAxMTExMDYsIDExMTExMSwgMTExMTE4LCAxMTExMjUsIDExMTEzMCwgMTExMTM1LCAxMTExNDIsIAorICAgIDExMTE0OSwgMTExMTU2LCAxMTExNjEsIDExMTE2NiwgMTExMTcxLCAxMTExNzYsIDExMTE4MywgMTExMTkyLCAxMTEyMDEsIAorICAgIDExMTIwNiwgMTExMjEzLCAxMTEyMjIsIDExMTIyNywgMTExMjMyLCAxMTEyMzcsIDExMTI0MiwgMTExMjQ5LCAxMTEyNTYsIAorICAgIDExMTI2MywgMTExMjcwLCAxMTEyNzUsIDExMTI4MCwgMTExMjg1LCAxMTEyOTIsIDExMTI5OSwgMTExMzA2LCAxMTEzMTEsIAorICAgIDExMTMxNiwgMTExMzIzLCAxMTEzMjgsIDExMTMzNSwgMTExMzQwLCAxMTEzNDcsIDExMTM1MiwgMTExMzU5LCAxMTEzNjYsIAorICAgIDExMTM3MSwgMTExMzc2LCAxMTEzODEsIDExMTM4NiwgMTExMzkxLCAxMTEzOTYsIDExMTQwMSwgMTExNDA2LCAxMTE0MTEsIAorICAgIDExMTQxOCwgMTExNDI1LCAxMTE0MzIsIDExMTQzOSwgMTExNDQ2LCAxMTE0NTUsIDExMTQ2MCwgMTExNDY1LCAxMTE0NzIsIAorICAgIDExMTQ3OSwgMTExNDg0LCAxMTE0OTEsIDExMTQ5OCwgMTExNTA1LCAxMTE1MTIsIDExMTUxOSwgMTExNTI2LCAxMTE1MzEsIAorICAgIDExMTUzNiwgMTExNTQxLCAxMTE1NDYsIDExMTU1MSwgMTExNTYwLCAxMTE1NjksIDExMTU3OCwgMTExNTg3LCAxMTE1OTYsIAorICAgIDExMTYwNSwgMTExNjE0LCAxMTE2MjMsIDExMTYyOCwgMTExNjM5LCAxMTE2NTAsIDExMTY1OSwgMTExNjY0LCAxMTE2NjksIAorICAgIDExMTY3NCwgMTExNjc5LCAxMTE2ODgsIDExMTY5NSwgMTExNzAyLCAxMTE3MDksIDExMTcxNiwgMTExNzIzLCAxMTE3MzAsIAorICAgIDExMTczOSwgMTExNzQ4LCAxMTE3NTksIDExMTc2OCwgMTExNzc5LCAxMTE3ODgsIDExMTc5NSwgMTExODA0LCAxMTE4MTUsIAorICAgIDExMTgyNCwgMTExODMzLCAxMTE4NDIsIDExMTg1MSwgMTExODU4LCAxMTE4NjUsIDExMTg3MiwgMTExODgxLCAxMTE4OTAsIAorICAgIDExMTkwMSwgMTExOTEwLCAxMTE5MTksIDExMTkzMCwgMTExOTM1LCAxMTE5NDAsIDExMTk1MSwgMTExOTU5LCAxMTE5NjgsIAorICAgIDExMTk3NywgMTExOTg2LCAxMTE5OTcsIDExMjAwNiwgMTEyMDE1LCAxMTIwMjYsIDExMjAzNywgMTEyMDQ4LCAxMTIwNTksIAorICAgIDExMjA3MCwgMTEyMDgxLCAxMTIwODgsIDExMjA5NSwgMTEyMTAyLCAxMTIxMDksIDExMjEyMCwgMTEyMTI5LCAxMTIxMzYsIAorICAgIDExMjE0MywgMTEyMTUwLCAxMTIxNjEsIDExMjE3MiwgMTEyMTgzLCAxMTIxOTQsIDExMjIwNSwgMTEyMjE2LCAxMTIyMjcsIAorICAgIDExMjIzOCwgMTEyMjQ1LCAxMTIyNTIsIDExMjI2MSwgMTEyMjcwLCAxMTIyNzcsIDExMjI4NCwgMTEyMjkxLCAxMTIzMDAsIAorICAgIDExMjMwOSwgMTEyMzE4LCAxMTIzMjUsIDExMjMzNCwgMTEyMzQzLCAxMTIzNTIsIDExMjM1OSwgMTEyMzY2LCAxMTIzNzEsIAorICAgIDExMjM3NywgMTEyMzg0LCAxMTIzOTEsIDExMjM5OCwgMTEyNDA1LCAxMTI0MTIsIDExMjQxOSwgMTEyNDI4LCAxMTI0MzcsIAorICAgIDExMjQ0NiwgMTEyNDU1LCAxMTI0NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMjQ3MSwgMTEyNDc3LCAKKyAgICAxMTI0ODIsIDExMjQ4NywgMTEyNDk0LCAxMTI1MDAsIDExMjUwNiwgMTEyNTEyLCAxMTI1MTgsIDExMjUyNCwgMTEyNTMwLCAKKyAgICAxMTI1MzYsIDExMjU0MCwgMTEyNTQ0LCAxMTI1NTAsIDExMjU1NiwgMTEyNTYyLCAxMTI1NjYsIDExMjU3MSwgMTEyNTc2LCAKKyAgICAxMTI1ODAsIDExMjU4NCwgMTEyNTg3LCAxMTI1OTMsIDExMjU5OSwgMTEyNjA1LCAxMTI2MTEsIDExMjYxNywgMTEyNjIzLCAKKyAgICAxMTI2MjksIDExMjYzNSwgMTEyNjQxLCAxMTI2NTEsIDExMjY2MSwgMTEyNjY3LCAxMTI2NzMsIDExMjY4MywgMTEyNjkzLCAKKyAgICAxMTI2OTksIDAsIDAsIDExMjcwNSwgMTEyNzEzLCAxMTI3MTgsIDExMjcyMywgMTEyNzI5LCAxMTI3MzUsIDExMjc0MSwgCisgICAgMTEyNzQ3LCAxMTI3NTMsIDExMjc1OSwgMTEyNzY2LCAxMTI3NzMsIDExMjc3OSwgMTEyNzg1LCAxMTI3OTEsIDExMjc5NywgCisgICAgMTEyODAzLCAxMTI4MDksIDExMjgxNSwgMTEyODIxLCAxMTI4MjYsIDExMjgzMiwgMTEyODM4LCAxMTI4NDQsIDExMjg1MCwgCisgICAgMTEyODU2LCAxMTI4NjUsIDExMjg3MSwgMTEyODc2LCAxMTI4ODQsIDExMjg5MSwgMTEyODk4LCAxMTI5MDcsIDExMjkxNiwgCisgICAgMTEyOTI1LCAxMTI5MzQsIDExMjk0MywgMTEyOTUyLCAxMTI5NjEsIDExMjk3MCwgMTEyOTgwLCAxMTI5OTAsIDExMjk5OCwgCisgICAgMTEzMDA2LCAxMTMwMTUsIDExMzAyNCwgMTEzMDMwLCAxMTMwMzYsIDExMzA0MiwgMTEzMDQ4LCAxMTMwNTYsIDExMzA2NCwgCisgICAgMTEzMDY4LCAxMTMwNzQsIDExMzA3OSwgMTEzMDg1LCAxMTMwOTEsIDExMzA5NywgMTEzMTAzLCAxMTMxMDksIDExMzExOCwgCisgICAgMTEzMTIzLCAxMTMxMzAsIDExMzEzNSwgMTEzMTQwLCAxMTMxNDUsIDExMzE1MSwgMTEzMTU3LCAxMTMxNjMsIDExMzE3MCwgCisgICAgMTEzMTc1LCAxMTMxODAsIDExMzE4NSwgMTEzMTkwLCAxMTMxOTUsIDExMzIwMSwgMTEzMjA3LCAxMTMyMTMsIDExMzIxOSwgCisgICAgMTEzMjI1LCAxMTMyMzEsIDExMzIzNywgMTEzMjQzLCAxMTMyNDgsIDExMzI1MywgMTEzMjU4LCAxMTMyNjMsIDExMzI2OCwgCisgICAgMTEzMjczLCAxMTMyNzgsIDExMzI4MywgMTEzMjg5LCAxMTMyOTUsIDExMzMwMCwgMTEzMzA1LCAxMTMzMTAsIDExMzMxNSwgCisgICAgMTEzMzIwLCAxMTMzMjYsIDExMzMzMywgMTEzMzM3LCAxMTMzNDEsIDExMzM0NSwgMTEzMzQ5LCAxMTMzNTMsIDExMzM1NywgCisgICAgMTEzMzYxLCAxMTMzNjUsIDExMzM3MywgMTEzMzgzLCAxMTMzODcsIDExMzM5MSwgMTEzMzk3LCAxMTM0MDMsIDExMzQwOSwgCisgICAgMTEzNDE1LCAxMTM0MjEsIDExMzQyNywgMTEzNDMzLCAxMTM0MzksIDExMzQ0NSwgMTEzNDUxLCAxMTM0NTcsIDExMzQ2MywgCisgICAgMTEzNDY5LCAxMTM0NzUsIDExMzQ3OSwgMTEzNDgzLCAxMTM0OTAsIDExMzQ5NiwgMTEzNTAyLCAxMTM1MDgsIDExMzUxMywgCisgICAgMTEzNTIwLCAxMTM1MjUsIDExMzUzMSwgMTEzNTM3LCAxMTM1NDMsIDExMzU0OSwgMTEzNTU0LCAxMTM1NTgsIDExMzU2NCwgCisgICAgMTEzNTY4LCAxMTM1NzIsIDExMzU3NiwgMTEzNTgyLCAxMTM1ODgsIDExMzU5MiwgMTEzNTk4LCAxMTM2MDQsIDExMzYxMCwgCisgICAgMTEzNjE2LCAxMTM2MjIsIDExMzYzMCwgMTEzNjM4LCAxMTM2NDQsIDExMzY1MCwgMTEzNjU2LCAxMTM2NjIsIDExMzY3NCwgCisgICAgMTEzNjg2LCAxMTM3MDAsIDExMzcxMiwgMTEzNzI0LCAxMTM3MzgsIDExMzc1MiwgMTEzNzY2LCAxMTM3NzAsIDExMzc3OCwgCisgICAgMTEzNzg2LCAxMTM3OTEsIDExMzc5NSwgMTEzNzk5LCAxMTM4MDMsIDExMzgwNywgMTEzODExLCAxMTM4MTUsIDExMzgxOSwgCisgICAgMTEzODI1LCAxMTM4MzEsIDExMzgzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEzODQzLCAxMTM4NDksIAorICAgIDExMzg1NSwgMTEzODYxLCAxMTM4NjcsIDExMzg3MywgMTEzODc5LCAxMTM4ODUsIDExMzg5MSwgMTEzODk3LCAxMTM5MDMsIAorICAgIDExMzkwOSwgMTEzOTE1LCAxMTM5MjEsIDExMzkyNywgMTEzOTMzLCAxMTM5MzksIDExMzk0NSwgMTEzOTUxLCAxMTM5NTcsIAorICAgIDExMzk2MywgMTEzOTY5LCAxMTM5NzUsIDExMzk4MSwgMTEzOTg3LCAxMTM5OTMsIDExMzk5OSwgMTE0MDA1LCAxMTQwMTEsIAorICAgIDExNDAxNywgMTE0MDIzLCAxMTQwMjksIDExNDAzNSwgMTE0MDQxLCAxMTQwNDcsIDExNDA1MywgMTE0MDU5LCAxMTQwNjUsIAorICAgIDExNDA3MSwgMTE0MDc3LCAxMTQwODMsIDExNDA4OSwgMTE0MDk1LCAxMTQxMDEsIDExNDEwNywgMTE0MTEzLCAxMTQxMTksIAorICAgIDExNDEyNSwgMTE0MTMxLCAxMTQxMzcsIDExNDE0MywgMTE0MTQ5LCAxMTQxNTUsIDExNDE2MSwgMTE0MTY3LCAxMTQxNzMsIAorICAgIDExNDE3OSwgMTE0MTg1LCAxMTQxOTEsIDExNDE5NywgMTE0MjAzLCAxMTQyMDksIDExNDIxNSwgMTE0MjIxLCAxMTQyMjcsIAorICAgIDExNDIzMywgMTE0MjM5LCAxMTQyNDQsIDExNDI0OSwgMTE0MjU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjIxOTYsIDEyMjE5OCwgMTIyMjAwLCAKLSAgICAxMjIyMDQsIDEyMjIwOCwgMTIyMjEyLCAxMjIyMjEsIDEyMjIyMywgMTIyMjI1LCAxMjIyMjgsIDEyMjIzMCwgMTIyMjMyLCAKLSAgICAxMjIyMzYsIDEyMjIzOCwgMTIyMjQyLCAxMjIyNDQsIDEyMjI0OCwgMTIyMjUwLCAxMjIyNTIsIDEyMjI1NiwgMTIyMjYwLCAKLSAgICAxMjIyNjYsIDEyMjI2OCwgMTIyMjcyLCAxMjIyNzQsIDEyMjI3OCwgMTIyMjgyLCAxMjIyODYsIDEyMjI5MCwgMTIyMjkyLCAKLSAgICAxMjIyOTQsIDEyMjI5OCwgMTIyMzAyLCAxMjIzMDYsIDEyMjMxMCwgMTIyMzEyLCAxMjIzMTQsIDEyMjMxNiwgMTIyMzIxLCAKLSAgICAxMjIzMjYsIDEyMjMyOSwgMTIyMzM3LCAxMjIzNDUsIDEyMjM0NywgMTIyMzUyLCAxMjIzNTUsIDEyMjM2MCwgMTIyMzcxLCAKLSAgICAxMjIzNzgsIDEyMjM4MywgMTIyMzg4LCAxMjIzOTAsIDEyMjM5NCwgMTIyMzk2LCAxMjI0MDAsIDEyMjQwMiwgMTIyNDA2LCAKLSAgICAxMjI0MTAsIDEyMjQxMywgMTIyNDE2LCAxMjI0MTgsIDEyMjQyMSwgMTIyNDIzLCAxMjI0MjcsIDEyMjQyOSwgMTIyNDMxLCAKLSAgICAxMjI0MzMsIDEyMjQzNywgMTIyNDM5LCAxMjI0NDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDExNDI1OCwgMTE0MjYzLCAxMTQyNzAsIDExNDI3NywgMTE0Mjg0LCAxMTQyOTEsIDExNDI5NiwgMTE0MzAwLCAxMTQzMDYsIAorICAgIDExNDMxMCwgMTE0MzE0LCAxMTQzMjAsIDExNDMyNCwgMTE0MzI4LCAxMTQzMzIsIDExNDMzOCwgMTE0MzQ1LCAxMTQzNDksIAorICAgIDExNDM1MywgMTE0MzU3LCAxMTQzNjEsIDExNDM2NSwgMTE0MzY5LCAxMTQzNzUsIDExNDM3OSwgMTE0MzgzLCAxMTQzODcsIAorICAgIDExNDM5MSwgMTE0Mzk1LCAxMTQzOTksIDExNDQwMywgMTE0NDA3LCAxMTQ0MTEsIDExNDQxNSwgMTE0NDE5LCAxMTQ0MjMsIAorICAgIDExNDQyOCwgMTE0NDMyLCAxMTQ0MzYsIDExNDQ0MCwgMTE0NDQ0LCAxMTQ0NDgsIDExNDQ1MiwgMTE0NDU2LCAxMTQ0NjAsIAorICAgIDExNDQ2NCwgMTE0NDcxLCAxMTQ0NzUsIDExNDQ4MywgMTE0NDg3LCAxMTQ0OTEsIDExNDQ5NSwgMTE0NDk5LCAxMTQ1MDMsIAorICAgIDExNDUwNywgMTE0NTExLCAxMTQ1MTgsIDExNDUyMiwgMTE0NTI2LCAxMTQ1MzAsIDExNDUzNCwgMTE0NTM4LCAxMTQ1NDQsIAorICAgIDExNDU0OCwgMTE0NTU0LCAxMTQ1NTgsIDExNDU2MiwgMTE0NTY2LCAxMTQ1NzAsIDExNDU3NCwgMTE0NTc4LCAxMTQ1ODIsIAorICAgIDExNDU4NiwgMTE0NTkwLCAxMTQ1OTQsIDExNDU5OCwgMTE0NjAyLCAxMTQ2MDYsIDExNDYxMCwgMTE0NjE0LCAxMTQ2MTgsIAorICAgIDExNDYyMiwgMTE0NjI2LCAxMTQ2MzAsIDExNDYzOCwgMTE0NjQyLCAxMTQ2NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDExNDY1MCwgMTE0NjU4LCAxMTQ2NjYsIDExNDY3NCwgMTE0NjgyLCAxMTQ2OTAsIDExNDY5OCwgMTE0NzA2LCAKKyAgICAxMTQ3MTQsIDExNDcyMiwgMTE0NzMwLCAxMTQ3MzgsIDExNDc0NiwgMTE0NzU0LCAxMTQ3NjIsIDExNDc3MCwgMTE0Nzc4LCAKKyAgICAxMTQ3ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNDc5NCwgMTE0Nzk4LCAxMTQ4MDMsIAorICAgIDExNDgwOCwgMTE0ODEzLCAxMTQ4MTcsIDExNDgyMiwgMTE0ODI3LCAxMTQ4MzIsIDExNDgzNiwgMTE0ODQxLCAxMTQ4NDYsIAorICAgIDExNDg1MCwgMTE0ODU0LCAxMTQ4NTksIDExNDg2MywgMTE0ODY4LCAxMTQ4NzMsIDExNDg3NywgMTE0ODgyLCAxMTQ4ODcsIAorICAgIDExNDg5MSwgMTE0ODk2LCAxMTQ5MDEsIDExNDkwNiwgMTE0OTExLCAxMTQ5MTYsIDExNDkyMCwgMTE0OTI1LCAxMTQ5MzAsIAorICAgIDExNDkzNSwgMTE0OTM5LCAxMTQ5NDQsIDExNDk0OSwgMTE0OTU0LCAxMTQ5NTgsIDExNDk2MywgMTE0OTY4LCAxMTQ5NzIsIAorICAgIDExNDk3NiwgMTE0OTgxLCAxMTQ5ODUsIDExNDk5MCwgMTE0OTk1LCAxMTQ5OTksIDExNTAwNCwgMTE1MDA5LCAxMTUwMTMsIAorICAgIDExNTAxOCwgMTE1MDIzLCAxMTUwMjgsIDExNTAzMywgMTE1MDM4LCAxMTUwNDIsIDExNTA0NywgMTE1MDUyLCAxMTUwNTcsIAorICAgIDExNTA2MSwgMTE1MDY2LCAxMTUwNzEsIDExNTA3NiwgMTE1MDgwLCAxMTUwODUsIDExNTA5MCwgMTE1MDk0LCAxMTUwOTgsIAorICAgIDExNTEwMywgMTE1MTA3LCAxMTUxMTIsIDExNTExNywgMTE1MTIxLCAxMTUxMjYsIDExNTEzMSwgMTE1MTM1LCAxMTUxNDAsIAorICAgIDExNTE0NSwgMTE1MTUwLCAxMTUxNTUsIDExNTE2MCwgMTE1MTY0LCAxMTUxNjksIDExNTE3NCwgMTE1MTc5LCAxMTUxODMsIAorICAgIDExNTE4OCwgMCwgMTE1MTkzLCAxMTUxOTcsIDExNTIwMiwgMTE1MjA3LCAxMTUyMTEsIDExNTIxNSwgMTE1MjIwLCAKKyAgICAxMTUyMjQsIDExNTIyOSwgMTE1MjM0LCAxMTUyMzgsIDExNTI0MywgMTE1MjQ4LCAxMTUyNTIsIDExNTI1NywgMTE1MjYyLCAKKyAgICAxMTUyNjcsIDExNTI3MiwgMTE1Mjc3LCAxMTUyODIsIDExNTI4OCwgMTE1Mjk0LCAxMTUzMDAsIDExNTMwNSwgMTE1MzExLCAKKyAgICAxMTUzMTcsIDExNTMyMywgMTE1MzI4LCAxMTUzMzQsIDExNTM0MCwgMTE1MzQ1LCAxMTUzNTAsIDExNTM1NiwgMTE1MzYxLCAKKyAgICAxMTUzNjcsIDExNTM3MywgMTE1Mzc4LCAxMTUzODQsIDExNTM5MCwgMTE1Mzk1LCAxMTU0MDEsIDExNTQwNywgMTE1NDEzLCAKKyAgICAxMTU0MTksIDExNTQyNSwgMTE1NDMwLCAxMTU0MzYsIDExNTQ0MiwgMTE1NDQ4LCAxMTU0NTMsIDExNTQ1OSwgMTE1NDY1LCAKKyAgICAxMTU0NzEsIDExNTQ3NiwgMTE1NDgyLCAxMTU0ODgsIDExNTQ5MywgMTE1NDk4LCAxMTU1MDQsIDExNTUwOSwgMTE1NTE1LCAKKyAgICAxMTU1MjEsIDExNTUyNiwgMTE1NTMyLCAxMTU1MzgsIDExNTU0MywgMTE1NTQ5LCAxMTU1NTUsIDExNTU2MSwgMTE1NTY3LCAKKyAgICAxMTU1NzMsIDAsIDExNTU3NywgMTE1NTgyLCAwLCAwLCAxMTU1ODcsIDAsIDAsIDExNTU5MiwgMTE1NTk3LCAwLCAwLCAKKyAgICAxMTU2MDIsIDExNTYwNywgMTE1NjExLCAxMTU2MTYsIDAsIDExNTYyMSwgMTE1NjI2LCAxMTU2MzEsIDExNTYzNSwgCisgICAgMTE1NjQwLCAxMTU2NDUsIDExNTY1MCwgMTE1NjU1LCAxMTU2NjAsIDExNTY2NCwgMTE1NjY5LCAxMTU2NzQsIDAsIAorICAgIDExNTY3OSwgMCwgMTE1Njg0LCAxMTU2ODksIDExNTY5MywgMTE1Njk4LCAxMTU3MDMsIDExNTcwNywgMTE1NzExLCAwLCAKKyAgICAxMTU3MTYsIDExNTcyMSwgMTE1NzI2LCAxMTU3MzAsIDExNTczNSwgMTE1NzQwLCAxMTU3NDQsIDExNTc0OSwgMTE1NzU0LCAKKyAgICAxMTU3NTksIDExNTc2NCwgMTE1NzY5LCAxMTU3NzQsIDExNTc4MCwgMTE1Nzg2LCAxMTU3OTIsIDExNTc5NywgMTE1ODAzLCAKKyAgICAxMTU4MDksIDExNTgxNSwgMTE1ODIwLCAxMTU4MjYsIDExNTgzMiwgMTE1ODM3LCAxMTU4NDIsIDExNTg0OCwgMTE1ODUzLCAKKyAgICAxMTU4NTksIDExNTg2NSwgMTE1ODcwLCAxMTU4NzYsIDExNTg4MiwgMTE1ODg3LCAxMTU4OTMsIDExNTg5OSwgMTE1OTA1LCAKKyAgICAxMTU5MTEsIDExNTkxNywgMTE1OTIyLCAxMTU5MjgsIDExNTkzNCwgMTE1OTQwLCAxMTU5NDUsIDExNTk1MSwgMTE1OTU3LCAKKyAgICAxMTU5NjMsIDExNTk2OCwgMTE1OTc0LCAxMTU5ODAsIDExNTk4NSwgMTE1OTkwLCAxMTU5OTYsIDExNjAwMSwgMTE2MDA3LCAKKyAgICAxMTYwMTMsIDExNjAxOCwgMTE2MDI0LCAxMTYwMzAsIDExNjAzNSwgMTE2MDQxLCAxMTYwNDcsIDExNjA1MywgMTE2MDU5LCAKKyAgICAxMTYwNjUsIDExNjA2OSwgMCwgMTE2MDc0LCAxMTYwNzksIDExNjA4MywgMTE2MDg4LCAwLCAwLCAxMTYwOTMsIDExNjA5OCwgCisgICAgMTE2MTAzLCAxMTYxMDcsIDExNjExMSwgMTE2MTE2LCAxMTYxMjAsIDExNjEyNSwgMCwgMTE2MTMwLCAxMTYxMzUsIAorICAgIDExNjE0MCwgMTE2MTQ0LCAxMTYxNDksIDExNjE1NCwgMTE2MTU5LCAwLCAxMTYxNjQsIDExNjE2OCwgMTE2MTczLCAKKyAgICAxMTYxNzgsIDExNjE4MywgMTE2MTg3LCAxMTYxOTIsIDExNjE5NywgMTE2MjAyLCAxMTYyMDYsIDExNjIxMSwgMTE2MjE2LCAKKyAgICAxMTYyMjAsIDExNjIyNCwgMTE2MjI5LCAxMTYyMzMsIDExNjIzOCwgMTE2MjQzLCAxMTYyNDcsIDExNjI1MiwgMTE2MjU3LCAKKyAgICAxMTYyNjEsIDExNjI2NiwgMTE2MjcxLCAxMTYyNzYsIDExNjI4MSwgMTE2Mjg2LCAxMTYyOTAsIDAsIDExNjI5NSwgCisgICAgMTE2MzAwLCAxMTYzMDQsIDExNjMwOSwgMCwgMTE2MzE0LCAxMTYzMTgsIDExNjMyMywgMTE2MzI4LCAxMTYzMzIsIDAsIAorICAgIDExNjMzNiwgMCwgMCwgMCwgMTE2MzQwLCAxMTYzNDUsIDExNjM1MCwgMTE2MzU0LCAxMTYzNTksIDExNjM2NCwgMTE2MzY5LCAKKyAgICAwLCAxMTYzNzQsIDExNjM3OCwgMTE2MzgzLCAxMTYzODgsIDExNjM5MywgMTE2Mzk3LCAxMTY0MDIsIDExNjQwNywgCisgICAgMTE2NDEyLCAxMTY0MTYsIDExNjQyMSwgMTE2NDI2LCAxMTY0MzAsIDExNjQzNCwgMTE2NDM5LCAxMTY0NDMsIDExNjQ0OCwgCisgICAgMTE2NDUzLCAxMTY0NTcsIDExNjQ2MiwgMTE2NDY3LCAxMTY0NzEsIDExNjQ3NiwgMTE2NDgxLCAxMTY0ODYsIDExNjQ5MSwgCisgICAgMTE2NDk2LCAxMTY1MDEsIDExNjUwNywgMTE2NTEzLCAxMTY1MTksIDExNjUyNCwgMTE2NTMwLCAxMTY1MzYsIDExNjU0MiwgCisgICAgMTE2NTQ3LCAxMTY1NTMsIDExNjU1OSwgMTE2NTY0LCAxMTY1NjksIDExNjU3NSwgMTE2NTgwLCAxMTY1ODYsIDExNjU5MiwgCisgICAgMTE2NTk3LCAxMTY2MDMsIDExNjYwOSwgMTE2NjE0LCAxMTY2MjAsIDExNjYyNiwgMTE2NjMyLCAxMTY2MzgsIDExNjY0NCwgCisgICAgMTE2NjQ5LCAxMTY2NTUsIDExNjY2MSwgMTE2NjY3LCAxMTY2NzIsIDExNjY3OCwgMTE2Njg0LCAxMTY2OTAsIDExNjY5NSwgCisgICAgMTE2NzAxLCAxMTY3MDcsIDExNjcxMiwgMTE2NzE3LCAxMTY3MjMsIDExNjcyOCwgMTE2NzM0LCAxMTY3NDAsIDExNjc0NSwgCisgICAgMTE2NzUxLCAxMTY3NTcsIDExNjc2MiwgMTE2NzY4LCAxMTY3NzQsIDExNjc4MCwgMTE2Nzg2LCAxMTY3OTIsIDExNjc5NiwgCisgICAgMTE2ODAxLCAxMTY4MDYsIDExNjgxMSwgMTE2ODE1LCAxMTY4MjAsIDExNjgyNSwgMTE2ODMwLCAxMTY4MzQsIDExNjgzOSwgCisgICAgMTE2ODQ0LCAxMTY4NDgsIDExNjg1MiwgMTE2ODU3LCAxMTY4NjEsIDExNjg2NiwgMTE2ODcxLCAxMTY4NzUsIDExNjg4MCwgCisgICAgMTE2ODg1LCAxMTY4ODksIDExNjg5NCwgMTE2ODk5LCAxMTY5MDQsIDExNjkwOSwgMTE2OTE0LCAxMTY5MTgsIDExNjkyMywgCisgICAgMTE2OTI4LCAxMTY5MzMsIDExNjkzNywgMTE2OTQyLCAxMTY5NDcsIDExNjk1MiwgMTE2OTU2LCAxMTY5NjEsIDExNjk2NiwgCisgICAgMTE2OTcwLCAxMTY5NzQsIDExNjk3OSwgMTE2OTgzLCAxMTY5ODgsIDExNjk5MywgMTE2OTk3LCAxMTcwMDIsIDExNzAwNywgCisgICAgMTE3MDExLCAxMTcwMTYsIDExNzAyMSwgMTE3MDI2LCAxMTcwMzEsIDExNzAzNiwgMTE3MDQxLCAxMTcwNDcsIDExNzA1MywgCisgICAgMTE3MDU5LCAxMTcwNjQsIDExNzA3MCwgMTE3MDc2LCAxMTcwODIsIDExNzA4NywgMTE3MDkzLCAxMTcwOTksIDExNzEwNCwgCisgICAgMTE3MTA5LCAxMTcxMTUsIDExNzEyMCwgMTE3MTI2LCAxMTcxMzIsIDExNzEzNywgMTE3MTQzLCAxMTcxNDksIDExNzE1NCwgCisgICAgMTE3MTYwLCAxMTcxNjYsIDExNzE3MiwgMTE3MTc4LCAxMTcxODQsIDExNzE4OSwgMTE3MTk1LCAxMTcyMDEsIDExNzIwNywgCisgICAgMTE3MjEyLCAxMTcyMTgsIDExNzIyNCwgMTE3MjMwLCAxMTcyMzUsIDExNzI0MSwgMTE3MjQ3LCAxMTcyNTIsIDExNzI1NywgCisgICAgMTE3MjYzLCAxMTcyNjgsIDExNzI3NCwgMTE3MjgwLCAxMTcyODUsIDExNzI5MSwgMTE3Mjk3LCAxMTczMDIsIDExNzMwOCwgCisgICAgMTE3MzE0LCAxMTczMjAsIDExNzMyNiwgMTE3MzMyLCAxMTczMzcsIDExNzM0MywgMTE3MzQ5LCAxMTczNTUsIDExNzM2MCwgCisgICAgMTE3MzY2LCAxMTczNzIsIDExNzM3OCwgMTE3MzgzLCAxMTczODksIDExNzM5NSwgMTE3NDAwLCAxMTc0MDUsIDExNzQxMSwgCisgICAgMTE3NDE2LCAxMTc0MjIsIDExNzQyOCwgMTE3NDMzLCAxMTc0MzksIDExNzQ0NSwgMTE3NDUwLCAxMTc0NTYsIDExNzQ2MiwgCisgICAgMTE3NDY4LCAxMTc0NzQsIDExNzQ4MCwgMTE3NDg1LCAxMTc0OTEsIDExNzQ5NywgMTE3NTAzLCAxMTc1MDgsIDExNzUxNCwgCisgICAgMTE3NTIwLCAxMTc1MjYsIDExNzUzMSwgMTE3NTM3LCAxMTc1NDMsIDExNzU0OCwgMTE3NTUzLCAxMTc1NTksIDExNzU2NCwgCisgICAgMTE3NTcwLCAxMTc1NzYsIDExNzU4MSwgMTE3NTg3LCAxMTc1OTMsIDExNzU5OCwgMTE3NjA0LCAxMTc2MTAsIDExNzYxNiwgCisgICAgMTE3NjIyLCAxMTc2MjgsIDExNzYzNCwgMTE3NjQxLCAxMTc2NDgsIDExNzY1NSwgMTE3NjYxLCAxMTc2NjgsIDExNzY3NSwgCisgICAgMTE3NjgyLCAxMTc2ODgsIDExNzY5NSwgMTE3NzAyLCAxMTc3MDgsIDExNzcxNCwgMTE3NzIxLCAxMTc3MjcsIDExNzczNCwgCisgICAgMTE3NzQxLCAxMTc3NDcsIDExNzc1NCwgMTE3NzYxLCAxMTc3NjcsIDExNzc3NCwgMTE3NzgxLCAxMTc3ODgsIDExNzc5NSwgCisgICAgMTE3ODAyLCAxMTc4MDgsIDExNzgxNSwgMTE3ODIyLCAxMTc4MjksIDExNzgzNSwgMTE3ODQyLCAxMTc4NDksIDExNzg1NiwgCisgICAgMTE3ODYyLCAxMTc4NjksIDExNzg3NiwgMTE3ODgyLCAxMTc4ODgsIDExNzg5NSwgMTE3OTAxLCAxMTc5MDgsIDExNzkxNSwgCisgICAgMTE3OTIxLCAxMTc5MjgsIDExNzkzNSwgMTE3OTQxLCAxMTc5NDgsIDExNzk1NSwgMTE3OTYyLCAxMTc5NjksIDExNzk3NiwgCisgICAgMTE3OTgxLCAxMTc5ODcsIDExNzk5MywgMTE3OTk5LCAxMTgwMDQsIDExODAxMCwgMTE4MDE2LCAxMTgwMjIsIDExODAyNywgCisgICAgMTE4MDMzLCAxMTgwMzksIDExODA0NCwgMTE4MDQ5LCAxMTgwNTUsIDExODA2MCwgMTE4MDY2LCAxMTgwNzIsIDExODA3NywgCisgICAgMTE4MDgzLCAxMTgwODksIDExODA5NCwgMTE4MTAwLCAxMTgxMDYsIDExODExMiwgMTE4MTE4LCAxMTgxMjQsIDExODEyOSwgCisgICAgMTE4MTM1LCAxMTgxNDEsIDExODE0NywgMTE4MTUyLCAxMTgxNTgsIDExODE2NCwgMTE4MTcwLCAxMTgxNzUsIDExODE4MSwgCisgICAgMTE4MTg3LCAxMTgxOTIsIDExODE5NywgMTE4MjAzLCAxMTgyMDgsIDExODIxNCwgMTE4MjIwLCAxMTgyMjUsIDExODIzMSwgCisgICAgMTE4MjM3LCAxMTgyNDIsIDExODI0OCwgMTE4MjU0LCAxMTgyNjAsIDExODI2NiwgMTE4MjcyLCAxMTgyNzgsIDAsIDAsIAorICAgIDExODI4NSwgMTE4MjkwLCAxMTgyOTUsIDExODMwMCwgMTE4MzA1LCAxMTgzMTAsIDExODMxNSwgMTE4MzIwLCAxMTgzMjUsIAorICAgIDExODMzMCwgMTE4MzM1LCAxMTgzNDAsIDExODM0NSwgMTE4MzUwLCAxMTgzNTUsIDExODM2MCwgMTE4MzY1LCAxMTgzNzAsIAorICAgIDExODM3NiwgMTE4MzgxLCAxMTgzODYsIDExODM5MSwgMTE4Mzk2LCAxMTg0MDEsIDExODQwNiwgMTE4NDExLCAxMTg0MTUsIAorICAgIDExODQyMCwgMTE4NDI1LCAxMTg0MzAsIDExODQzNSwgMTE4NDQwLCAxMTg0NDUsIDExODQ1MCwgMTE4NDU1LCAxMTg0NjAsIAorICAgIDExODQ2NSwgMTE4NDcwLCAxMTg0NzUsIDExODQ4MCwgMTE4NDg1LCAxMTg0OTAsIDExODQ5NSwgMTE4NTAwLCAxMTg1MDYsIAorICAgIDExODUxMSwgMTE4NTE2LCAxMTg1MjEsIDExODUyNiwgMTE4NTMxLCAxMTg1MzYsIDExODU0MSwgMTE4NTQ3LCAxMTg1NTIsIAorICAgIDExODU1NywgMTE4NTYyLCAxMTg1NjcsIDExODU3MiwgMTE4NTc3LCAxMTg1ODIsIDExODU4NywgMTE4NTkyLCAxMTg1OTcsIAorICAgIDExODYwMiwgMTE4NjA3LCAxMTg2MTIsIDExODYxNywgMTE4NjIyLCAxMTg2MjcsIDExODYzMiwgMTE4NjM3LCAxMTg2NDIsIAorICAgIDExODY0NywgMTE4NjUyLCAxMTg2NTcsIDExODY2MiwgMTE4NjY4LCAxMTg2NzMsIDExODY3OCwgMTE4NjgzLCAxMTg2ODgsIAorICAgIDExODY5MywgMTE4Njk4LCAxMTg3MDMsIDExODcwNywgMTE4NzEyLCAxMTg3MTcsIDExODcyMiwgMTE4NzI3LCAxMTg3MzIsIAorICAgIDExODczNywgMTE4NzQyLCAxMTg3NDcsIDExODc1MiwgMTE4NzU3LCAxMTg3NjIsIDExODc2NywgMTE4NzcyLCAxMTg3NzcsIAorICAgIDExODc4MiwgMTE4Nzg3LCAxMTg3OTIsIDExODc5OCwgMTE4ODAzLCAxMTg4MDgsIDExODgxMywgMTE4ODE4LCAxMTg4MjMsIAorICAgIDExODgyOCwgMTE4ODMzLCAxMTg4MzksIDExODg0NCwgMTE4ODQ5LCAxMTg4NTQsIDExODg1OSwgMTE4ODY0LCAxMTg4NjksIAorICAgIDExODg3NSwgMTE4ODgxLCAxMTg4ODcsIDExODg5MywgMTE4ODk5LCAxMTg5MDUsIDExODkxMSwgMTE4OTE3LCAxMTg5MjMsIAorICAgIDExODkyOSwgMTE4OTM1LCAxMTg5NDEsIDExODk0NywgMTE4OTUzLCAxMTg5NTksIDExODk2NSwgMTE4OTcxLCAxMTg5NzgsIAorICAgIDExODk4NCwgMTE4OTkwLCAxMTg5OTYsIDExOTAwMiwgMTE5MDA4LCAxMTkwMTQsIDExOTAyMCwgMTE5MDI1LCAxMTkwMzEsIAorICAgIDExOTAzNywgMTE5MDQzLCAxMTkwNDksIDExOTA1NSwgMTE5MDYxLCAxMTkwNjcsIDExOTA3MywgMTE5MDc5LCAxMTkwODUsIAorICAgIDExOTA5MSwgMTE5MDk3LCAxMTkxMDMsIDExOTEwOSwgMTE5MTE1LCAxMTkxMjEsIDExOTEyNywgMTE5MTM0LCAxMTkxNDAsIAorICAgIDExOTE0NiwgMTE5MTUyLCAxMTkxNTgsIDExOTE2NCwgMTE5MTcwLCAxMTkxNzYsIDExOTE4MywgMTE5MTg5LCAxMTkxOTUsIAorICAgIDExOTIwMSwgMTE5MjA3LCAxMTkyMTMsIDExOTIxOSwgMTE5MjI1LCAxMTkyMzEsIDExOTIzNywgMTE5MjQzLCAxMTkyNDksIAorICAgIDExOTI1NSwgMTE5MjYxLCAxMTkyNjcsIDExOTI3MywgMTE5Mjc5LCAxMTkyODUsIDExOTI5MSwgMTE5Mjk3LCAxMTkzMDMsIAorICAgIDExOTMwOSwgMTE5MzE1LCAxMTkzMjEsIDExOTMyOCwgMTE5MzM0LCAxMTkzNDAsIDExOTM0NiwgMTE5MzUyLCAxMTkzNTgsIAorICAgIDExOTM2NCwgMTE5MzcwLCAxMTkzNzUsIDExOTM4MSwgMTE5Mzg3LCAxMTkzOTMsIDExOTM5OSwgMTE5NDA1LCAxMTk0MTEsIAorICAgIDExOTQxNywgMTE5NDIzLCAxMTk0MjksIDExOTQzNSwgMTE5NDQxLCAxMTk0NDcsIDExOTQ1MywgMTE5NDU5LCAxMTk0NjUsIAorICAgIDExOTQ3MSwgMTE5NDc3LCAxMTk0ODQsIDExOTQ5MCwgMTE5NDk2LCAxMTk1MDIsIDExOTUwOCwgMTE5NTE0LCAxMTk1MjAsIAorICAgIDExOTUyNiwgMTE5NTMzLCAxMTk1MzksIDExOTU0NSwgMTE5NTUxLCAxMTk1NTcsIDExOTU2MywgMTE5NTY5LCAxMTk1NzYsIAorICAgIDExOTU4MywgMTE5NTkwLCAxMTk1OTcsIDExOTYwNCwgMTE5NjExLCAxMTk2MTgsIDExOTYyNSwgMTE5NjMyLCAxMTk2MzksIAorICAgIDExOTY0NiwgMTE5NjUzLCAxMTk2NjAsIDExOTY2NywgMTE5Njc0LCAxMTk2ODEsIDExOTY4OCwgMTE5Njk2LCAxMTk3MDMsIAorICAgIDExOTcxMCwgMTE5NzE3LCAxMTk3MjQsIDExOTczMSwgMTE5NzM4LCAxMTk3NDUsIDExOTc1MSwgMTE5NzU4LCAxMTk3NjUsIAorICAgIDExOTc3MiwgMTE5Nzc5LCAxMTk3ODYsIDExOTc5MywgMTE5ODAwLCAxMTk4MDcsIDExOTgxNCwgMTE5ODIxLCAxMTk4MjgsIAorICAgIDExOTgzNSwgMTE5ODQyLCAxMTk4NDksIDExOTg1NiwgMTE5ODYzLCAxMTk4NzAsIDExOTg3OCwgMTE5ODg1LCAxMTk4OTIsIAorICAgIDExOTg5OSwgMTE5OTA2LCAxMTk5MTMsIDExOTkyMCwgMTE5OTI3LCAxMTk5MzUsIDExOTk0MiwgMTE5OTQ5LCAxMTk5NTYsIAorICAgIDExOTk2MywgMTE5OTcwLCAxMTk5NzcsIDExOTk4MiwgMCwgMCwgMTE5OTg3LCAxMTk5OTIsIDExOTk5NiwgMTIwMDAwLCAKKyAgICAxMjAwMDQsIDEyMDAwOCwgMTIwMDEyLCAxMjAwMTYsIDEyMDAyMCwgMTIwMDI0LCAxMjAwMjgsIDEyMDAzMywgMTIwMDM3LCAKKyAgICAxMjAwNDEsIDEyMDA0NSwgMTIwMDQ5LCAxMjAwNTMsIDEyMDA1NywgMTIwMDYxLCAxMjAwNjUsIDEyMDA2OSwgMTIwMDc0LCAKKyAgICAxMjAwNzgsIDEyMDA4MiwgMTIwMDg2LCAxMjAwOTAsIDEyMDA5NCwgMTIwMDk4LCAxMjAxMDIsIDEyMDEwNiwgMTIwMTEwLCAKKyAgICAxMjAxMTYsIDEyMDEyMSwgMTIwMTI2LCAxMjAxMzEsIDEyMDEzNiwgMTIwMTQxLCAxMjAxNDYsIDEyMDE1MSwgMTIwMTU2LCAKKyAgICAxMjAxNjEsIDEyMDE2NywgMTIwMTcyLCAxMjAxNzcsIDEyMDE4MiwgMTIwMTg3LCAxMjAxOTIsIDEyMDE5NywgMTIwMjAyLCAKKyAgICAxMjAyMDcsIDEyMDIxMiwgMTIwMjE2LCAxMjAyMjAsIDEyMDIyNCwgMCwgMTIwMjI4LCAxMjAyMzIsIDEyMDIzNiwgCisgICAgMTIwMjQwLCAxMjAyNDQsIDEyMDI0OCwgMTIwMjUyLCAxMjAyNTYsIDEyMDI2MCwgMTIwMjY0LCAxMjAyNjgsIDEyMDI3MiwgCisgICAgMTIwMjc2LCAxMjAyODAsIDEyMDI4NCwgMTIwMjg4LCAxMjAyOTIsIDEyMDI5NiwgMTIwMzAwLCAxMjAzMDQsIDEyMDMwOCwgCisgICAgMTIwMzEyLCAxMjAzMTYsIDEyMDMyMCwgMTIwMzI2LCAxMjAzMzIsIDEyMDMzOCwgMCwgMTIwMzQ0LCAxMjAzNDksIDAsIAorICAgIDEyMDM1NCwgMCwgMCwgMTIwMzU5LCAwLCAxMjAzNjQsIDEyMDM2OSwgMTIwMzc0LCAxMjAzNzksIDEyMDM4NCwgMTIwMzg5LCAKKyAgICAxMjAzOTQsIDEyMDM5OSwgMTIwNDA0LCAxMjA0MDksIDAsIDEyMDQxNCwgMTIwNDE5LCAxMjA0MjQsIDEyMDQyOSwgMCwgCisgICAgMTIwNDM0LCAwLCAxMjA0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDEyMDQ0NCwgMCwgMCwgMCwgMCwgMTIwNDUwLCAwLCAKKyAgICAxMjA0NTYsIDAsIDEyMDQ2MiwgMCwgMTIwNDY4LCAxMjA0NzQsIDEyMDQ4MCwgMCwgMTIwNDg2LCAxMjA0OTIsIDAsIAorICAgIDEyMDQ5OCwgMCwgMCwgMTIwNTA0LCAwLCAxMjA1MTAsIDAsIDEyMDUxNiwgMCwgMTIwNTIyLCAwLCAxMjA1MzAsIDAsIAorICAgIDEyMDUzOCwgMTIwNTQ0LCAwLCAxMjA1NTAsIDAsIDAsIDEyMDU1NiwgMTIwNTYyLCAxMjA1NjgsIDEyMDU3NCwgMCwgCisgICAgMTIwNTgwLCAxMjA1ODYsIDEyMDU5MiwgMTIwNTk4LCAxMjA2MDQsIDEyMDYxMCwgMTIwNjE2LCAwLCAxMjA2MjIsIAorICAgIDEyMDYyOCwgMTIwNjM0LCAxMjA2NDAsIDAsIDEyMDY0NiwgMTIwNjUyLCAxMjA2NTgsIDEyMDY2NCwgMCwgMTIwNjcyLCAwLCAKKyAgICAxMjA2ODAsIDEyMDY4NiwgMTIwNjkyLCAxMjA2OTgsIDEyMDcwNCwgMTIwNzEwLCAxMjA3MTYsIDEyMDcyMiwgMTIwNzI4LCAKKyAgICAxMjA3MzQsIDAsIDEyMDc0MCwgMTIwNzQ2LCAxMjA3NTIsIDEyMDc1OCwgMTIwNzY0LCAxMjA3NzAsIDEyMDc3NiwgCisgICAgMTIwNzgyLCAxMjA3ODgsIDEyMDc5NCwgMTIwODAwLCAxMjA4MDYsIDEyMDgxMiwgMTIwODE4LCAxMjA4MjQsIDEyMDgzMCwgCisgICAgMTIwODM2LCAwLCAwLCAwLCAwLCAwLCAxMjA4NDIsIDEyMDg0NywgMTIwODUyLCAwLCAxMjA4NTcsIDEyMDg2MiwgMTIwODY3LCAKKyAgICAxMjA4NzIsIDEyMDg3NywgMCwgMTIwODgyLCAxMjA4ODcsIDEyMDg5MiwgMTIwODk3LCAxMjA5MDIsIDEyMDkwNywgCisgICAgMTIwOTEyLCAxMjA5MTcsIDEyMDkyMiwgMTIwOTI3LCAxMjA5MzIsIDEyMDkzNywgMTIwOTQyLCAxMjA5NDcsIDEyMDk1MiwgCisgICAgMTIwOTU3LCAxMjA5NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMjQ0NiwgCi0gICAgMTIyNDUxLCAxMjI0NTYsIDEyMjQ2MSwgMTIyNDY2LCAxMjI0NzEsIDEyMjQ3NiwgMTIyNDgzLCAxMjI0OTAsIDEyMjQ5NywgCi0gICAgMTIyNTA0LCAxMjI1MDksIDEyMjUxNCwgMTIyNTE5LCAxMjI1MjQsIDEyMjUzMSwgMTIyNTM3LCAxMjI1NDQsIDEyMjU1MSwgCi0gICAgMTIyNTU4LCAxMjI1NjMsIDEyMjU2OCwgMTIyNTczLCAxMjI1NzgsIDEyMjU4MywgMTIyNTkwLCAxMjI1OTcsIDEyMjYwMiwgCi0gICAgMTIyNjA3LCAxMjI2MTQsIDEyMjYyMSwgMTIyNjI5LCAxMjI2MzcsIDEyMjY0NCwgMTIyNjUxLCAxMjI2NTksIDEyMjY2NywgCi0gICAgMTIyNjc1LCAxMjI2ODIsIDEyMjY5MiwgMTIyNzAzLCAxMjI3MDgsIDEyMjcxNSwgMTIyNzIyLCAxMjI3MjksIDEyMjczNywgCi0gICAgMTIyNzQ1LCAxMjI3NTYsIDEyMjc2NCwgMTIyNzcyLCAxMjI3ODAsIDEyMjc4NSwgMTIyNzkwLCAxMjI3OTUsIDEyMjgwMCwgCi0gICAgMTIyODA1LCAxMjI4MTAsIDEyMjgxNSwgMTIyODIwLCAxMjI4MjUsIDEyMjgzMCwgMTIyODM1LCAxMjI4NDAsIDEyMjg0NywgCi0gICAgMTIyODUyLCAxMjI4NTcsIDEyMjg2NCwgMTIyODY5LCAxMjI4NzQsIDEyMjg3OSwgMTIyODg0LCAxMjI4ODksIDEyMjg5NCwgCi0gICAgMTIyODk5LCAxMjI5MDQsIDEyMjkwOSwgMTIyOTE0LCAxMjI5MTksIDEyMjkyNCwgMTIyOTMxLCAxMjI5MzksIDEyMjk0NCwgCi0gICAgMTIyOTQ5LCAxMjI5NTYsIDEyMjk2MSwgMTIyOTY2LCAxMjI5NzEsIDEyMjk3OCwgMTIyOTgzLCAxMjI5OTAsIDEyMjk5NSwgCi0gICAgMTIzMDAyLCAxMjMwMDcsIDEyMzAxNiwgMTIzMDI1LCAxMjMwMzAsIDEyMzAzNSwgMTIzMDQwLCAxMjMwNDUsIDEyMzA1MCwgCi0gICAgMTIzMDU1LCAxMjMwNjAsIDEyMzA2NSwgMTIzMDcwLCAxMjMwNzUsIDEyMzA4MCwgMTIzMDg1LCAxMjMwOTAsIDEyMzA5OCwgCi0gICAgMTIzMTA2LCAxMjMxMTEsIDEyMzExNiwgMTIzMTIxLCAxMjMxMjYsIDEyMzEzMSwgMTIzMTM3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMjMxNDMsIDEyMzE0NywgMTIzMTUxLCAxMjMxNTUsIDEyMzE1OSwgMTIzMTYzLCAxMjMxNjcsIAotICAgIDEyMzE3MSwgMTIzMTc1LCAxMjMxNzksIDEyMzE4MywgMTIzMTg3LCAxMjMxOTEsIDEyMzE5NSwgMTIzMTk5LCAxMjMyMDMsIAotICAgIDEyMzIwNywgMTIzMjExLCAxMjMyMTUsIDEyMzIxOSwgMTIzMjIzLCAxMjMyMjcsIDEyMzIzMSwgMTIzMjM1LCAxMjMyMzksIAotICAgIDEyMzI0MywgMTIzMjQ3LCAxMjMyNTEsIDEyMzI1NSwgMTIzMjU5LCAxMjMyNjMsIDEyMzI2NywgMTIzMjcxLCAxMjMyNzUsIAotICAgIDEyMzI3OSwgMTIzMjgzLCAxMjMyODcsIDEyMzI5MSwgMTIzMjk1LCAxMjMyOTksIDEyMzMwMywgMTIzMzA3LCAxMjMzMTEsIAotICAgIDEyMzMxNSwgMTIzMzE5LCAxMjMzMjMsIDEyMzMyNywgMTIzMzMxLCAxMjMzMzUsIDEyMzMzOSwgMTIzMzQzLCAxMjMzNDcsIAotICAgIDEyMzM1MSwgMTIzMzU1LCAxMjMzNTksIDEyMzM2MywgMTIzMzY3LCAxMjMzNzEsIDEyMzM3NSwgMTIzMzc5LCAxMjMzODMsIAotICAgIDEyMzM4NywgMTIzMzkxLCAxMjMzOTUsIDEyMzM5OSwgMTIzNDAzLCAxMjM0MDcsIDEyMzQxMSwgMTIzNDE1LCAxMjM0MTksIAotICAgIDEyMzQyMywgMTIzNDI3LCAxMjM0MzEsIDEyMzQzNSwgMTIzNDM5LCAxMjM0NDMsIDEyMzQ0NywgMTIzNDUxLCAxMjM0NTUsIAotICAgIDEyMzQ1OSwgMTIzNDYzLCAxMjM0NjcsIDEyMzQ3MSwgMTIzNDc1LCAxMjM0NzksIDEyMzQ4MywgMTIzNDg3LCAxMjM0OTEsIAotICAgIDEyMzQ5NSwgMTIzNDk5LCAxMjM1MDMsIDEyMzUwNywgMTIzNTExLCAxMjM1MTUsIDEyMzUxOSwgMTIzNTIzLCAxMjM1MjcsIAotICAgIDEyMzUzMSwgMTIzNTM1LCAxMjM1MzksIDEyMzU0MywgMTIzNTQ3LCAxMjM1NTEsIDEyMzU1NSwgMTIzNTU5LCAxMjM1NjMsIAotICAgIDEyMzU2NywgMTIzNTcxLCAxMjM1NzUsIDEyMzU3OSwgMTIzNTgzLCAxMjM1ODcsIDEyMzU5MSwgMTIzNTk1LCAxMjM1OTksIAotICAgIDEyMzYwMywgMTIzNjA3LCAxMjM2MTEsIDEyMzYxNSwgMTIzNjE5LCAxMjM2MjMsIDEyMzYyNywgMTIzNjMxLCAxMjM2MzUsIAotICAgIDEyMzYzOSwgMTIzNjQzLCAxMjM2NDcsIDEyMzY1MSwgMTIzNjU1LCAxMjM2NTksIDEyMzY2MywgMTIzNjY3LCAxMjM2NzEsIAotICAgIDEyMzY3NSwgMTIzNjc5LCAxMjM2ODMsIDEyMzY4NywgMTIzNjkxLCAxMjM2OTUsIDEyMzY5OSwgMTIzNzAzLCAxMjM3MDcsIAotICAgIDEyMzcxMSwgMTIzNzE1LCAxMjM3MTksIDEyMzcyMywgMTIzNzI3LCAxMjM3MzEsIDEyMzczNSwgMTIzNzM5LCAxMjM3NDMsIAotICAgIDEyMzc0NywgMTIzNzUxLCAxMjM3NTUsIDEyMzc1OSwgMTIzNzYzLCAxMjM3NjcsIDEyMzc3MSwgMTIzNzc1LCAxMjM3NzksIAotICAgIDEyMzc4MywgMTIzNzg3LCAxMjM3OTEsIDEyMzc5NSwgMTIzNzk5LCAxMjM4MDMsIDEyMzgwNywgMTIzODExLCAxMjM4MTUsIAotICAgIDEyMzgxOSwgMTIzODIzLCAxMjM4MjcsIDEyMzgzMSwgMTIzODM1LCAxMjM4MzksIDEyMzg0MywgMTIzODQ3LCAxMjM4NTEsIAotICAgIDEyMzg1NSwgMTIzODU5LCAxMjM4NjMsIDEyMzg2NywgMTIzODcxLCAxMjM4NzUsIDEyMzg3OSwgMTIzODgzLCAxMjM4ODcsIAotICAgIDEyMzg5MSwgMTIzODk1LCAxMjM4OTksIDEyMzkwMywgMTIzOTA3LCAxMjM5MTEsIDEyMzkxNSwgMTIzOTE5LCAxMjM5MjMsIAotICAgIDEyMzkyNywgMTIzOTMxLCAxMjM5MzUsIDEyMzkzOSwgMTIzOTQzLCAxMjM5NDcsIDEyMzk1MSwgMTIzOTU1LCAxMjM5NTksIAotICAgIDEyMzk2MywgMTIzOTY3LCAxMjM5NzEsIDEyMzk3NSwgMTIzOTc5LCAxMjM5ODMsIDEyMzk4NywgMTIzOTkxLCAxMjM5OTUsIAotICAgIDEyMzk5OSwgMTI0MDAzLCAxMjQwMDcsIDEyNDAxMSwgMTI0MDE1LCAxMjQwMTksIDEyNDAyMywgMTI0MDI3LCAxMjQwMzEsIAotICAgIDEyNDAzNSwgMTI0MDM5LCAxMjQwNDMsIDEyNDA0NywgMTI0MDUxLCAxMjQwNTUsIDEyNDA1OSwgMTI0MDYzLCAxMjQwNjcsIAotICAgIDEyNDA3MSwgMTI0MDc1LCAxMjQwNzksIDEyNDA4MywgMTI0MDg3LCAxMjQwOTEsIDEyNDA5NSwgMTI0MDk5LCAxMjQxMDMsIAotICAgIDEyNDEwNywgMTI0MTExLCAxMjQxMTUsIDEyNDExOSwgMTI0MTIzLCAxMjQxMjcsIDEyNDEzMSwgMTI0MTM1LCAxMjQxMzksIAotICAgIDEyNDE0MywgMTI0MTQ3LCAxMjQxNTEsIDEyNDE1NSwgMTI0MTU5LCAxMjQxNjMsIDEyNDE2NywgMTI0MTcxLCAxMjQxNzUsIAotICAgIDEyNDE3OSwgMTI0MTgzLCAxMjQxODcsIDEyNDE5MSwgMTI0MTk1LCAxMjQxOTksIDEyNDIwMywgMTI0MjA3LCAxMjQyMTEsIAotICAgIDEyNDIxNSwgMTI0MjE5LCAxMjQyMjMsIDEyNDIyNywgMTI0MjMxLCAxMjQyMzUsIDEyNDIzOSwgMTI0MjQzLCAxMjQyNDcsIAotICAgIDEyNDI1MSwgMTI0MjU1LCAxMjQyNTksIDEyNDI2MywgMTI0MjY3LCAxMjQyNzEsIDEyNDI3NSwgMTI0Mjc5LCAxMjQyODMsIAotICAgIDEyNDI4NywgMTI0MjkxLCAxMjQyOTUsIDEyNDI5OSwgMTI0MzAzLCAxMjQzMDcsIDEyNDMxMSwgMTI0MzE1LCAxMjQzMTksIAotICAgIDEyNDMyMywgMTI0MzI3LCAxMjQzMzEsIDEyNDMzNSwgMTI0MzM5LCAxMjQzNDMsIDEyNDM0NywgMTI0MzUxLCAxMjQzNTUsIAotICAgIDEyNDM1OSwgMTI0MzYzLCAxMjQzNjcsIDEyNDM3MSwgMTI0Mzc1LCAxMjQzNzksIDEyNDM4MywgMTI0Mzg3LCAxMjQzOTEsIAotICAgIDEyNDM5NSwgMTI0Mzk5LCAxMjQ0MDMsIDEyNDQwNywgMTI0NDExLCAxMjQ0MTUsIDEyNDQxOSwgMTI0NDIzLCAxMjQ0MjcsIAotICAgIDEyNDQzMSwgMTI0NDM1LCAxMjQ0MzksIDEyNDQ0MywgMTI0NDQ3LCAxMjQ0NTEsIDEyNDQ1NSwgMTI0NDU5LCAxMjQ0NjMsIAotICAgIDEyNDQ2NywgMTI0NDcxLCAxMjQ0NzUsIDEyNDQ3OSwgMTI0NDgzLCAxMjQ0ODcsIDEyNDQ5MSwgMTI0NDk1LCAxMjQ0OTksIAotICAgIDEyNDUwMywgMTI0NTA3LCAxMjQ1MTEsIDEyNDUxNSwgMTI0NTE5LCAxMjQ1MjMsIDEyNDUyNywgMTI0NTMxLCAxMjQ1MzUsIAotICAgIDEyNDUzOSwgMTI0NTQzLCAxMjQ1NDcsIDEyNDU1MSwgMTI0NTU1LCAxMjQ1NTksIDEyNDU2MywgMTI0NTY3LCAxMjQ1NzEsIAotICAgIDEyNDU3NSwgMTI0NTc5LCAxMjQ1ODMsIDEyNDU4NywgMTI0NTkxLCAxMjQ1OTUsIDEyNDU5OSwgMTI0NjAzLCAxMjQ2MDcsIAotICAgIDEyNDYxMSwgMTI0NjE1LCAxMjQ2MTksIDEyNDYyMywgMTI0NjI3LCAxMjQ2MzEsIDEyNDYzNSwgMTI0NjM5LCAxMjQ2NDMsIAotICAgIDEyNDY0NywgMTI0NjUxLCAxMjQ2NTUsIDEyNDY1OSwgMTI0NjYzLCAxMjQ2NjcsIDEyNDY3MSwgMTI0Njc1LCAxMjQ2NzksIAotICAgIDEyNDY4MywgMTI0Njg3LCAxMjQ2OTEsIDEyNDY5NSwgMTI0Njk5LCAxMjQ3MDMsIDEyNDcwNywgMTI0NzExLCAxMjQ3MTUsIAotICAgIDEyNDcxOSwgMTI0NzIzLCAxMjQ3MjcsIDEyNDczMSwgMTI0NzM1LCAxMjQ3MzksIDEyNDc0MywgMTI0NzQ3LCAxMjQ3NTEsIAotICAgIDEyNDc1NSwgMTI0NzU5LCAxMjQ3NjMsIDEyNDc2NywgMTI0NzcxLCAxMjQ3NzUsIDEyNDc3OSwgMTI0NzgzLCAxMjQ3ODcsIAotICAgIDEyNDc5MSwgMTI0Nzk1LCAxMjQ3OTksIDEyNDgwMywgMTI0ODA3LCAxMjQ4MTEsIDEyNDgxNSwgMTI0ODE5LCAxMjQ4MjMsIAotICAgIDEyNDgyNywgMTI0ODMxLCAxMjQ4MzUsIDEyNDgzOSwgMTI0ODQzLCAxMjQ4NDcsIDEyNDg1MSwgMTI0ODU1LCAxMjQ4NTksIAotICAgIDEyNDg2MywgMTI0ODY3LCAxMjQ4NzEsIDEyNDg3NSwgMTI0ODc5LCAxMjQ4ODMsIDEyNDg4NywgMTI0ODkxLCAxMjQ4OTUsIAotICAgIDEyNDg5OSwgMTI0OTAzLCAxMjQ5MDcsIDEyNDkxMSwgMTI0OTE1LCAxMjQ5MTksIDEyNDkyMywgMTI0OTI3LCAxMjQ5MzEsIAotICAgIDEyNDkzNSwgMTI0OTM5LCAxMjQ5NDMsIDEyNDk0NywgMTI0OTUxLCAxMjQ5NTUsIDEyNDk1OSwgMTI0OTYzLCAxMjQ5NjcsIAotICAgIDEyNDk3MSwgMTI0OTc1LCAxMjQ5NzksIDEyNDk4MywgMTI0OTg3LCAxMjQ5OTEsIDEyNDk5NSwgMTI0OTk5LCAxMjUwMDMsIAotICAgIDEyNTAwNywgMTI1MDExLCAxMjUwMTUsIDEyNTAxOSwgMTI1MDIzLCAxMjUwMjcsIDEyNTAzMSwgMTI1MDM1LCAxMjUwMzksIAotICAgIDEyNTA0MywgMTI1MDQ3LCAxMjUwNTEsIDEyNTA1NSwgMTI1MDU5LCAxMjUwNjMsIDEyNTA2NywgMTI1MDcxLCAxMjUwNzUsIAotICAgIDEyNTA3OSwgMTI1MDgzLCAxMjUwODcsIDEyNTA5MSwgMTI1MDk1LCAxMjUwOTksIDEyNTEwMywgMTI1MTA3LCAxMjUxMTEsIAotICAgIDEyNTExNSwgMTI1MTE5LCAxMjUxMjMsIDEyNTEyNywgMTI1MTMxLCAxMjUxMzUsIDEyNTEzOSwgMTI1MTQzLCAxMjUxNDcsIAotICAgIDEyNTE1MSwgMTI1MTU1LCAxMjUxNTksIDEyNTE2MywgMTI1MTY3LCAxMjUxNzEsIDEyNTE3NSwgMTI1MTc5LCAxMjUxODMsIAotICAgIDEyNTE4NywgMTI1MTkxLCAxMjUxOTUsIDEyNTE5OSwgMTI1MjAzLCAxMjUyMDcsIDEyNTIxMSwgMTI1MjE1LCAxMjUyMTksIAotICAgIDEyNTIyMywgMTI1MjI3LCAxMjUyMzEsIDEyNTIzNSwgMTI1MjM5LCAxMjUyNDMsIDEyNTI0NywgMTI1MjUxLCAxMjUyNTUsIAotICAgIDEyNTI1OSwgMTI1MjYzLCAxMjUyNjcsIDEyNTI3MSwgMTI1Mjc1LCAxMjUyNzksIDEyNTI4MywgMTI1Mjg3LCAxMjUyOTEsIAotICAgIDEyNTI5NSwgMTI1Mjk5LCAxMjUzMDMsIDEyNTMwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIwOTY3LCAxMjA5NzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEyMDk4NSwgMTIwOTkyLCAxMjA5OTksIDEyMTAwNiwgMTIxMDEzLCAxMjEwMjAsIDEyMTAyNywgCisgICAgMTIxMDMzLCAxMjEwNDAsIDEyMTA0NywgMTIxMDU0LCAxMjEwNjIsIDEyMTA3MCwgMTIxMDc4LCAxMjEwODYsIDEyMTA5NCwgCisgICAgMTIxMTAyLCAxMjExMDksIDEyMTExNiwgMTIxMTIzLCAxMjExMzEsIDEyMTEzOSwgMTIxMTQ3LCAxMjExNTUsIDEyMTE2MywgCisgICAgMTIxMTcxLCAxMjExNzgsIDEyMTE4NSwgMTIxMTkyLCAxMjEyMDAsIDEyMTIwOCwgMTIxMjE2LCAxMjEyMjQsIDEyMTIzMiwgCisgICAgMTIxMjQwLCAxMjEyNDUsIDEyMTI1MCwgMTIxMjU1LCAxMjEyNjAsIDEyMTI2NSwgMTIxMjcwLCAxMjEyNzUsIDEyMTI4MCwgCisgICAgMTIxMjg1LCAwLCAwLCAwLCAwLCAxMjEyOTAsIDEyMTI5NSwgMTIxMjk5LCAxMjEzMDMsIDEyMTMwNywgMTIxMzExLCAKKyAgICAxMjEzMTUsIDEyMTMxOSwgMTIxMzIzLCAxMjEzMjcsIDEyMTMzMSwgMTIxMzM1LCAxMjEzMzksIDEyMTM0MywgMTIxMzQ3LCAKKyAgICAxMjEzNTEsIDEyMTM1NSwgMTIxMzU5LCAxMjEzNjMsIDEyMTM2NywgMTIxMzcxLCAxMjEzNzUsIDEyMTM3OSwgMTIxMzgzLCAKKyAgICAxMjEzODcsIDEyMTM5MSwgMTIxMzk1LCAxMjEzOTksIDEyMTQwMywgMTIxNDA3LCAxMjE0MTEsIDEyMTQxNSwgMTIxNDE5LCAKKyAgICAxMjE0MjMsIDEyMTQyNywgMTIxNDMxLCAxMjE0MzUsIDEyMTQzOSwgMTIxNDQzLCAxMjE0NDcsIDEyMTQ1MSwgMTIxNDU1LCAKKyAgICAxMjE0NTksIDEyMTQ2MywgMTIxNDY3LCAxMjE0NzEsIDEyMTQ3NSwgMTIxNDc5LCAxMjE0ODMsIDEyMTQ4NywgMTIxNDkxLCAKKyAgICAxMjE0OTYsIDEyMTUwMCwgMTIxNTA0LCAxMjE1MDgsIDEyMTUxMiwgMTIxNTE2LCAxMjE1MjAsIDEyMTUyNCwgMTIxNTI4LCAKKyAgICAxMjE1MzIsIDEyMTUzNiwgMTIxNTQwLCAxMjE1NDQsIDEyMTU0OCwgMTIxNTUyLCAxMjE1NTYsIDEyMTU2MCwgMTIxNTY0LCAKKyAgICAxMjE1NjgsIDEyMTU3MiwgMTIxNTc2LCAxMjE1ODAsIDEyMTU4NCwgMTIxNTg4LCAxMjE1OTIsIDEyMTU5NiwgMTIxNjAwLCAKKyAgICAxMjE2MDQsIDEyMTYwOCwgMTIxNjEyLCAxMjE2MTYsIDEyMTYyMCwgMTIxNjI0LCAxMjE2MjgsIDEyMTYzMiwgMTIxNjM2LCAKKyAgICAxMjE2NDAsIDEyMTY0NCwgMTIxNjQ4LCAxMjE2NTIsIDEyMTY1NiwgMTIxNjYwLCAxMjE2NjQsIDEyMTY2OCwgMTIxNjcyLCAKKyAgICAxMjE2NzYsIDEyMTY4MCwgMTIxNjg0LCAxMjE2ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyMTY5MiwgMTIxNjk4LCAxMjE3MDcsIDEyMTcxNSwgMTIxNzIzLCAxMjE3MzIsIDEyMTc0MSwgMTIxNzUwLCAxMjE3NTksIAorICAgIDEyMTc2OCwgMTIxNzc3LCAxMjE3ODYsIDEyMTc5NSwgMTIxODA0LCAxMjE4MTMsIDAsIDAsIDEyMTgyMiwgMTIxODMxLCAKKyAgICAxMjE4MzksIDEyMTg0NywgMTIxODU2LCAxMjE4NjUsIDEyMTg3NCwgMTIxODgzLCAxMjE4OTIsIDEyMTkwMSwgMTIxOTEwLCAKKyAgICAxMjE5MTksIDEyMTkyOCwgMTIxOTM3LCAwLCAwLCAxMjE5NDYsIDEyMTk1NSwgMTIxOTYzLCAxMjE5NzEsIDEyMTk4MCwgCisgICAgMTIxOTg5LCAxMjE5OTgsIDEyMjAwNywgMTIyMDE2LCAxMjIwMjUsIDEyMjAzNCwgMTIyMDQzLCAxMjIwNTIsIDEyMjA2MSwgCisgICAgMTIyMDcwLCAwLCAxMjIwNzcsIDEyMjA4NiwgMTIyMDk0LCAxMjIxMDIsIDEyMjExMSwgMTIyMTIwLCAxMjIxMjksIAorICAgIDEyMjEzOCwgMTIyMTQ3LCAxMjIxNTYsIDEyMjE2NSwgMTIyMTc0LCAxMjIxODMsIDEyMjE5MiwgMTIyMjAxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMjIyMDgsIDEyMjIxNSwgMTIyMjIwLCAxMjIyMjQsIDEyMjIyOCwgMTIyMjMyLCAxMjIyMzcsIAorICAgIDEyMjI0MiwgMTIyMjQ3LCAxMjIyNTIsIDEyMjI1NywgMCwgMCwgMCwgMCwgMCwgMTIyMjYyLCAxMjIyNjcsIDEyMjI3MywgCisgICAgMTIyMjc5LCAxMjIyODUsIDEyMjI5MCwgMTIyMjk2LCAxMjIzMDIsIDEyMjMwOCwgMTIyMzEzLCAxMjIzMTksIDEyMjMyNSwgCisgICAgMTIyMzMwLCAxMjIzMzUsIDEyMjM0MSwgMTIyMzQ2LCAxMjIzNTIsIDEyMjM1OCwgMTIyMzYzLCAxMjIzNjksIDEyMjM3NSwgCisgICAgMTIyMzgwLCAxMjIzODYsIDEyMjM5MiwgMTIyMzk4LCAxMjI0MDQsIDEyMjQxMCwgMTIyNDIxLCAxMjI0MjgsIDEyMjQzNCwgCisgICAgMTIyNDM3LCAwLCAxMjI0NDAsIDEyMjQ0NSwgMTIyNDUxLCAxMjI0NTcsIDEyMjQ2MywgMTIyNDY4LCAxMjI0NzQsIAorICAgIDEyMjQ4MCwgMTIyNDg2LCAxMjI0OTEsIDEyMjQ5NywgMTIyNTAzLCAxMjI1MDgsIDEyMjUxMywgMTIyNTE5LCAxMjI1MjQsIAorICAgIDEyMjUzMCwgMTIyNTM2LCAxMjI1NDEsIDEyMjU0NywgMTIyNTUzLCAxMjI1NTgsIDEyMjU2NCwgMTIyNTcwLCAxMjI1NzYsIAorICAgIDEyMjU4MiwgMTIyNTg4LCAxMjI1OTEsIDEyMjU5NCwgMTIyNTk3LCAxMjI2MDAsIDEyMjYwMywgMTIyNjA2LCAxMjI2MTIsIAorICAgIDEyMjYxOSwgMTIyNjI2LCAxMjI2MzMsIDEyMjYzOSwgMTIyNjQ2LCAxMjI2NTMsIDEyMjY2MCwgMTIyNjY2LCAxMjI2NzMsIAorICAgIDEyMjY4MCwgMTIyNjg2LCAxMjI2OTIsIDEyMjY5OSwgMTIyNzA1LCAxMjI3MTIsIDEyMjcxOSwgMTIyNzI1LCAxMjI3MzIsIAorICAgIDEyMjczOSwgMTIyNzQ1LCAxMjI3NTIsIDEyMjc1OSwgMTIyNzY2LCAxMjI3NzMsIDEyMjc4MCwgMTIyNzg1LCAwLCAwLCAwLCAKKyAgICAwLCAxMjI3OTAsIDEyMjc5NiwgMTIyODAzLCAxMjI4MTAsIDEyMjgxNywgMTIyODIzLCAxMjI4MzAsIDEyMjgzNywgCisgICAgMTIyODQ0LCAxMjI4NTAsIDEyMjg1NywgMTIyODY0LCAxMjI4NzAsIDEyMjg3NiwgMTIyODgzLCAxMjI4ODksIDEyMjg5NiwgCisgICAgMTIyOTAzLCAxMjI5MDksIDEyMjkxNiwgMTIyOTIzLCAxMjI5MjksIDEyMjkzNiwgMTIyOTQzLCAxMjI5NTAsIDEyMjk1NywgCisgICAgMTIyOTY0LCAxMjI5NzMsIDEyMjk3NywgMTIyOTgwLCAxMjI5ODMsIDEyMjk4NywgMTIyOTkxLCAxMjI5OTQsIDEyMjk5NywgCisgICAgMTIzMDAwLCAxMjMwMDMsIDEyMzAwNiwgMTIzMDA5LCAxMjMwMTIsIDEyMzAxNSwgMTIzMDE4LCAxMjMwMjQsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNTMxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI1MzE1LCAKLSAgICAxMjUzMTgsIDEyNTMyMiwgMTI1MzI2LCAxMjUzMjksIDEyNTMzMywgMTI1MzM3LCAxMjUzNDAsIDEyNTM0MywgMTI1MzQ3LCAKLSAgICAxMjUzNTEsIDEyNTM1NCwgMTI1MzU3LCAxMjUzNjAsIDEyNTM2MywgMTI1MzY4LCAxMjUzNzEsIDEyNTM3NSwgMTI1Mzc4LCAKLSAgICAxMjUzODEsIDEyNTM4NCwgMTI1Mzg3LCAxMjUzOTAsIDEyNTM5MywgMTI1Mzk2LCAxMjUzOTksIDEyNTQwMiwgMTI1NDA1LCAKLSAgICAxMjU0MDgsIDEyNTQxMiwgMTI1NDE2LCAxMjU0MjAsIDEyNTQyNCwgMTI1NDI5LCAxMjU0MzQsIDEyNTQ0MCwgMTI1NDQ2LCAKLSAgICAxMjU0NTIsIDEyNTQ1NywgMTI1NDYzLCAxMjU0NjksIDEyNTQ3NSwgMTI1NDgwLCAxMjU0ODYsIDEyNTQ5MiwgMTI1NDk3LCAKLSAgICAxMjU1MDIsIDEyNTUwNywgMTI1NTEyLCAxMjU1MTgsIDEyNTUyNCwgMTI1NTI5LCAxMjU1MzQsIDEyNTU0MCwgMTI1NTQ1LCAKLSAgICAxMjU1NTEsIDEyNTU1NywgMTI1NTYzLCAxMjU1NjksIDEyNTU3NSwgMTI1NTc5LCAxMjU1ODQsIDEyNTU4OCwgMTI1NTkzLCAKLSAgICAxMjU1OTcsIDEyNTYwMiwgMTI1NjA3LCAxMjU2MTMsIDEyNTYxOSwgMTI1NjI1LCAxMjU2MzAsIDEyNTYzNiwgMTI1NjQyLCAKLSAgICAxMjU2NDgsIDEyNTY1MywgMTI1NjU5LCAxMjU2NjUsIDEyNTY3MCwgMTI1Njc1LCAxMjU2ODAsIDEyNTY4NSwgMTI1NjkxLCAKLSAgICAxMjU2OTcsIDEyNTcwMiwgMTI1NzA3LCAxMjU3MTMsIDEyNTcxOCwgMTI1NzI0LCAxMjU3MzAsIDEyNTczNiwgMTI1NzQyLCAKLSAgICAxMjU3NDgsIDEyNTc1MywgMTI1NzU3LCAxMjU3NjIsIDEyNTc2NSwgMTI1NzY5LCAxMjU3NzIsIDEyNTc3NSwgMTI1Nzc4LCAKLSAgICAxMjU3ODEsIDEyNTc4NCwgMTI1Nzg3LCAxMjU3OTAsIDEyNTc5MywgMTI1Nzk2LCAxMjU3OTksIDEyNTgwMiwgMTI1ODA1LCAKLSAgICAxMjU4MDgsIDEyNTgxMSwgMTI1ODE0LCAxMjU4MTcsIDEyNTgyMCwgMTI1ODIzLCAxMjU4MjYsIDEyNTgyOSwgMTI1ODMyLCAKLSAgICAxMjU4MzUsIDEyNTgzOCwgMTI1ODQxLCAxMjU4NDQsIDEyNTg0NywgMTI1ODUwLCAxMjU4NTMsIDEyNTg1NiwgMTI1ODU5LCAKLSAgICAxMjU4NjIsIDEyNTg2NSwgMTI1ODY4LCAxMjU4NzEsIDEyNTg3NCwgMTI1ODc3LCAxMjU4ODAsIDEyNTg4MywgMTI1ODg2LCAKLSAgICAxMjU4ODksIDEyNTg5MiwgMTI1ODk1LCAxMjU4OTgsIDEyNTkwMSwgMTI1OTA0LCAxMjU5MDcsIDEyNTkxMCwgMTI1OTEzLCAKLSAgICAxMjU5MTYsIDEyNTkxOSwgMTI1OTIyLCAxMjU5MjUsIDEyNTkyOCwgMTI1OTMxLCAxMjU5MzQsIDEyNTkzNywgMTI1OTQwLCAKLSAgICAxMjU5NDMsIDEyNTk0NiwgMTI1OTQ5LCAxMjU5NTIsIDEyNTk1NSwgMTI1OTU4LCAxMjU5NjEsIDEyNTk2NCwgMTI1OTY3LCAKLSAgICAxMjU5NzAsIDEyNTk3MywgMTI1OTc2LCAxMjU5NzksIDEyNTk4MiwgMTI1OTg1LCAxMjU5ODgsIDEyNTk5MSwgMTI1OTk0LCAKLSAgICAxMjU5OTcsIDEyNjAwMCwgMTI2MDAzLCAxMjYwMDYsIDEyNjAwOSwgMTI2MDEyLCAxMjYwMTUsIDEyNjAxOCwgMTI2MDIxLCAKLSAgICAxMjYwMjQsIDEyNjAyNywgMTI2MDMwLCAxMjYwMzMsIDEyNjAzNiwgMTI2MDM5LCAxMjYwNDIsIDEyNjA0NSwgMTI2MDQ4LCAKLSAgICAxMjYwNTEsIDEyNjA1NCwgMTI2MDU3LCAxMjYwNjAsIDEyNjA2MywgMTI2MDY2LCAxMjYwNjksIDEyNjA3MiwgMTI2MDc1LCAKLSAgICAxMjYwNzgsIDEyNjA4MSwgMTI2MDg0LCAxMjYwODcsIDEyNjA5MCwgMTI2MDkzLCAxMjYwOTYsIDEyNjA5OSwgMTI2MTAyLCAKLSAgICAxMjYxMDUsIDEyNjEwOCwgMTI2MTExLCAxMjYxMTQsIDEyNjExNywgMTI2MTIwLCAxMjYxMjMsIDEyNjEyNiwgMTI2MTI5LCAKLSAgICAxMjYxMzIsIDEyNjEzNSwgMTI2MTM4LCAxMjYxNDEsIDEyNjE0NCwgMTI2MTQ3LCAxMjYxNTAsIDEyNjE1MywgMTI2MTU2LCAKLSAgICAxMjYxNTksIDEyNjE2MiwgMTI2MTY1LCAxMjYxNjgsIDEyNjE3MSwgMTI2MTc0LCAxMjYxNzcsIDEyNjE4MCwgMTI2MTgzLCAKLSAgICAxMjYxODYsIDEyNjE4OSwgMTI2MTkyLCAxMjYxOTUsIDEyNjE5OCwgMTI2MjAxLCAxMjYyMDQsIDEyNjIwNywgMTI2MjEwLCAKLSAgICAxMjYyMTMsIDEyNjIxNiwgMTI2MjE5LCAxMjYyMjIsIDEyNjIyNSwgMTI2MjI4LCAxMjYyMzEsIDEyNjIzNCwgMTI2MjM3LCAKLSAgICAxMjYyNDAsIDEyNjI0MywgMTI2MjQ2LCAxMjYyNDksIDEyNjI1MiwgMTI2MjU1LCAxMjYyNTgsIDEyNjI2MSwgMTI2MjY0LCAKLSAgICAxMjYyNjcsIDEyNjI3MCwgMTI2MjczLCAxMjYyNzYsIDEyNjI3OSwgMTI2MjgyLCAxMjYyODUsIDEyNjI4OCwgMTI2MjkxLCAKLSAgICAxMjYyOTQsIDEyNjI5NywgMTI2MzAwLCAxMjYzMDMsIDEyNjMwNiwgMTI2MzA5LCAxMjYzMTIsIDEyNjMxNSwgMTI2MzE4LCAKLSAgICAxMjYzMjEsIDEyNjMyNCwgMTI2MzI3LCAxMjYzMzAsIDEyNjMzMywgMTI2MzM2LCAxMjYzMzksIDEyNjM0MiwgMTI2MzQ1LCAKLSAgICAxMjYzNDgsIDEyNjM1MSwgMTI2MzU0LCAxMjYzNTcsIDEyNjM2MCwgMTI2MzYzLCAxMjYzNjYsIDEyNjM2OSwgMTI2MzcyLCAKLSAgICAxMjYzNzUsIDEyNjM3OCwgMTI2MzgxLCAxMjYzODQsIDEyNjM4NywgMTI2MzkwLCAxMjYzOTMsIDEyNjM5NiwgMTI2Mzk5LCAKLSAgICAxMjY0MDIsIDEyNjQwNSwgMTI2NDA4LCAxMjY0MTEsIDEyNjQxNCwgMTI2NDE3LCAxMjY0MjAsIDEyNjQyMywgMTI2NDI2LCAKLSAgICAxMjY0MjksIDEyNjQzMiwgMTI2NDM1LCAxMjY0MzgsIDEyNjQ0MSwgMTI2NDQ0LCAxMjY0NDcsIDEyNjQ1MCwgMTI2NDUzLCAKLSAgICAxMjY0NTYsIDEyNjQ1OSwgMTI2NDYyLCAxMjY0NjUsIDEyNjQ2OCwgMTI2NDcxLCAxMjY0NzQsIDEyNjQ3NywgMTI2NDgwLCAKLSAgICAxMjY0ODMsIDEyNjQ4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTIzMDI3LCAxMjMwMzQsIDEyMzA0MiwgMTIzMDUwLCAxMjMwNTgsIDEyMzA2NSwgMTIzMDczLCAxMjMwODEsIDEyMzA4OSwgCisgICAgMTIzMDk2LCAxMjMxMDQsIDEyMzExMiwgMTIzMTE5LCAxMjMxMjYsIDEyMzEzNCwgMTIzMTQxLCAxMjMxNDksIDEyMzE1NywgCisgICAgMTIzMTY0LCAxMjMxNzIsIDEyMzE4MCwgMTIzMTg3LCAxMjMxOTUsIDEyMzIwMywgMTIzMjExLCAxMjMyMTksIDEyMzIyNywgCisgICAgMTIzMjMxLCAxMjMyMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMzIzOCwgMTIzMjQ0LCAKKyAgICAxMjMyNTAsIDEyMzI1NiwgMTIzMjYwLCAxMjMyNjYsIDEyMzI3MiwgMTIzMjc4LCAxMjMyODQsIDEyMzI5MCwgMTIzMjk2LCAKKyAgICAxMjMzMDIsIDEyMzMwOCwgMTIzMzE0LCAxMjMzMjAsIDEyMzMyNiwgMTIzMzMyLCAxMjMzMzgsIDEyMzM0NCwgMTIzMzUwLCAKKyAgICAxMjMzNTYsIDEyMzM2MiwgMTIzMzY4LCAxMjMzNzQsIDEyMzM4MCwgMTIzMzg2LCAxMjMzOTIsIDEyMzM5OCwgMTIzNDA0LCAKKyAgICAxMjM0MTAsIDEyMzQxNiwgMTIzNDIyLCAxMjM0MjgsIDEyMzQzNCwgMTIzNDQwLCAxMjM0NDYsIDEyMzQ1MiwgMTIzNDU4LCAKKyAgICAxMjM0NjQsIDEyMzQ3MCwgMTIzNDc2LCAxMjM0ODIsIDEyMzQ4OCwgMCwgMCwgMCwgMCwgMCwgMTIzNDk0LCAxMjM1MDUsIAorICAgIDEyMzUxNiwgMTIzNTI3LCAxMjM1MzgsIDEyMzU0OSwgMTIzNTYwLCAxMjM1NzEsIDEyMzU4MiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTIzNTkzLCAxMjM1OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEyMzYwMSwgMTIzNjAzLCAxMjM2MDUsIDEyMzYwOSwgMTIzNjE0LCAxMjM2MTksIDEyMzYyMSwgCisgICAgMTIzNjI3LCAxMjM2MzIsIDEyMzYzNCwgMTIzNjQwLCAxMjM2NDQsIDEyMzY0NiwgMTIzNjUwLCAxMjM2NTYsIDEyMzY2MiwgCisgICAgMTIzNjY4LCAxMjM2NzMsIDEyMzY3NywgMTIzNjg0LCAxMjM2OTEsIDEyMzY5OCwgMTIzNzAzLCAxMjM3MTAsIDEyMzcxNywgCisgICAgMTIzNzI0LCAxMjM3MjgsIDEyMzczNCwgMTIzNzQzLCAxMjM3NTIsIDEyMzc1OSwgMTIzNzY0LCAxMjM3NjgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMzc3MiwgMTIzNzc0LCAxMjM3NzYsIDEyMzc4MCwgCisgICAgMTIzNzg0LCAxMjM3ODgsIDAsIDEyMzc5MCwgMTIzNzkyLCAxMjM3OTYsIDEyMzc5OCwgMTIzODAwLCAxMjM4MDIsIAorICAgIDEyMzgwNCwgMTIzODA5LCAxMjM4MTQsIDEyMzgxNiwgMTIzODIyLCAxMjM4MjYsIDEyMzgzMCwgMTIzODM4LCAxMjM4NDAsIAorICAgIDEyMzg0MiwgMTIzODQ0LCAxMjM4NDYsIDEyMzg0OCwgMTIzODUwLCAxMjM4NTIsIDEyMzg1NCwgMTIzODU2LCAxMjM4NTgsIAorICAgIDEyMzg2MiwgMTIzODY2LCAxMjM4NjgsIDEyMzg3MCwgMTIzODcyLCAxMjM4NzQsIDEyMzg3NiwgMTIzODgxLCAxMjM4ODcsIAorICAgIDEyMzg5MSwgMTIzODk1LCAxMjM4OTksIDEyMzkwMywgMTIzOTA4LCAxMjM5MTIsIDEyMzkxNCwgMTIzOTE2LCAxMjM5MjAsIAorICAgIDEyMzkyNiwgMTIzOTI4LCAxMjM5MzAsIDEyMzkzMiwgMTIzOTM2LCAxMjM5NDUsIDEyMzk1MSwgMTIzOTU1LCAxMjM5NTksIAorICAgIDEyMzk2MSwgMTIzOTYzLCAxMjM5NjYsIDEyMzk2OCwgMTIzOTcwLCAxMjM5NzIsIDEyMzk3NiwgMTIzOTc4LCAxMjM5ODIsIAorICAgIDEyMzk4NywgMTIzOTg5LCAxMjM5OTQsIDEyNDAwMCwgMTI0MDA3LCAxMjQwMTEsIDEyNDAxNSwgMTI0MDE5LCAxMjQwMjMsIAorICAgIDEyNDAyOSwgMCwgMCwgMCwgMTI0MDMzLCAxMjQwMzUsIDEyNDAzOSwgMTI0MDQzLCAxMjQwNDUsIDEyNDA0OSwgMTI0MDUzLCAKKyAgICAxMjQwNTUsIDEyNDA1OSwgMTI0MDYxLCAxMjQwNjUsIDEyNDA2OSwgMTI0MDczLCAxMjQwNzcsIDEyNDA4MSwgMTI0MDg1LCAKKyAgICAxMjQwODksIDEyNDA5MywgMTI0MDk5LCAxMjQxMDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyNDEwNywgMTI0MTExLCAxMjQxMTUsIDEyNDExOSwgMTI0MTI2LCAxMjQxMjgsIDEyNDEzMiwgMTI0MTM0LCAxMjQxMzYsIAorICAgIDEyNDE0MCwgMTI0MTQ0LCAxMjQxNDgsIDEyNDE1MCwgMTI0MTU0LCAxMjQxNTgsIDEyNDE2MiwgMTI0MTY2LCAxMjQxNzAsIAorICAgIDEyNDE3MiwgMTI0MTc2LCAxMjQxNzgsIDEyNDE4NCwgMTI0MTg3LCAxMjQxOTIsIDEyNDE5NCwgMTI0MTk2LCAxMjQxOTksIAorICAgIDEyNDIwMSwgMTI0MjAzLCAxMjQyMDYsIDEyNDIxMywgMTI0MjIwLCAxMjQyMjcsIDEyNDIzMiwgMTI0MjM2LCAxMjQyMzgsIAorICAgIDEyNDI0MCwgMCwgMTI0MjQyLCAxMjQyNDQsIDEyNDI0OCwgMTI0MjUyLCAxMjQyNTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDI1OCwgMTI0MjYyLCAxMjQyNjcsIDEyNDI3MSwgCisgICAgMTI0Mjc3LCAxMjQyODMsIDEyNDI4NSwgMTI0Mjg3LCAxMjQyOTMsIDEyNDI5NSwgMTI0Mjk5LCAxMjQzMDMsIDEyNDMwNSwgCisgICAgMTI0MzA5LCAxMjQzMTEsIDEyNDMxNSwgMTI0MzE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMjQzMjMsIDEyNDMyNSwgMTI0MzI3LCAxMjQzMjksIDEyNDMzMywgMTI0MzM1LCAxMjQzMzcsIDEyNDMzOSwgCisgICAgMTI0MzQxLCAxMjQzNDMsIDEyNDM0NSwgMTI0MzQ3LCAxMjQzNDksIDEyNDM1MSwgMTI0MzUzLCAxMjQzNTUsIDEyNDM1NywgCisgICAgMTI0MzU5LCAxMjQzNjEsIDEyNDM2MywgMTI0MzY1LCAxMjQzNjcsIDEyNDM2OSwgMTI0MzcxLCAxMjQzNzMsIDEyNDM3NSwgCisgICAgMTI0Mzc3LCAxMjQzODEsIDEyNDM4MywgMTI0Mzg1LCAxMjQzODcsIDEyNDM5MSwgMTI0MzkzLCAxMjQzOTcsIDEyNDM5OSwgCisgICAgMTI0NDAxLCAxMjQ0MDUsIDEyNDQwOSwgMTI0NDE1LCAxMjQ0MTcsIDEyNDQxOSwgMTI0NDIxLCAxMjQ0MjMsIDEyNDQyNywgCisgICAgMTI0NDMxLCAxMjQ0MzMsIDEyNDQzNywgMTI0NDQxLCAxMjQ0NDUsIDEyNDQ0OSwgMTI0NDUzLCAxMjQ0NTcsIDEyNDQ2MSwgCisgICAgMTI0NDY1LCAxMjQ0NjksIDEyNDQ3MywgMTI0NDc3LCAxMjQ0ODEsIDEyNDQ4NSwgMTI0NDg5LCAxMjQ0OTMsIDEyNDQ5NywgCisgICAgMTI0NTAxLCAwLCAxMjQ1MDUsIDAsIDEyNDUwNywgMTI0NTA5LCAxMjQ1MTEsIDEyNDUxMywgMTI0NTE1LCAxMjQ1MjMsIAorICAgIDEyNDUzMSwgMTI0NTM5LCAxMjQ1NDcsIDEyNDU1MiwgMTI0NTU3LCAxMjQ1NjIsIDEyNDU2NiwgMTI0NTcwLCAxMjQ1NzUsIAorICAgIDEyNDU3OSwgMTI0NTgxLCAxMjQ1ODUsIDEyNDU4NywgMTI0NTg5LCAxMjQ1OTEsIDEyNDU5MywgMTI0NTk1LCAxMjQ1OTcsIAorICAgIDEyNDU5OSwgMTI0NjAzLCAxMjQ2MDUsIDEyNDYwNywgMTI0NjA5LCAxMjQ2MTMsIDEyNDYxNywgMTI0NjIxLCAxMjQ2MjUsIAorICAgIDEyNDYyOSwgMTI0NjMxLCAxMjQ2MzcsIDEyNDY0MywgMTI0NjQ1LCAxMjQ2NDcsIDEyNDY0OSwgMTI0NjUxLCAxMjQ2NTMsIAorICAgIDEyNDY2MiwgMTI0NjY5LCAxMjQ2NzYsIDEyNDY4MCwgMTI0Njg3LCAxMjQ2OTIsIDEyNDY5OSwgMTI0NzA4LCAxMjQ3MTMsIAorICAgIDEyNDcxNywgMTI0NzIxLCAxMjQ3MjMsIDEyNDcyNywgMTI0NzI5LCAxMjQ3MzMsIDEyNDczNywgMTI0NzM5LCAxMjQ3NDMsIAorICAgIDEyNDc0NywgMTI0NzUxLCAxMjQ3NTMsIDEyNDc1NSwgMTI0NzYxLCAxMjQ3NjMsIDEyNDc2NSwgMTI0NzY3LCAxMjQ3NzEsIAorICAgIDEyNDc3NSwgMTI0Nzc3LCAxMjQ3ODEsIDEyNDc4MywgMTI0Nzg1LCAxMjQ3ODgsIDEyNDc5MiwgMTI0Nzk0LCAxMjQ3OTgsIAorICAgIDEyNDgwMCwgMTI0ODAyLCAxMjQ4MDcsIDEyNDgwOSwgMTI0ODEzLCAxMjQ4MTcsIDEyNDgyMCwgMTI0ODI0LCAxMjQ4MjgsIAorICAgIDEyNDgzMiwgMTI0ODM2LCAxMjQ4NDAsIDEyNDg0NCwgMTI0ODQ4LCAxMjQ4NTMsIDEyNDg1NywgMTI0ODYxLCAxMjQ4NzAsIAorICAgIDEyNDg3NSwgMTI0ODc4LCAxMjQ4ODAsIDEyNDg4MywgMTI0ODg2LCAxMjQ4OTEsIDEyNDg5MywgMTI0ODk2LCAxMjQ5MDEsIAorICAgIDEyNDkwNSwgMTI0OTA4LCAxMjQ5MTIsIDEyNDkxNiwgMTI0OTE5LCAxMjQ5MjQsIDEyNDkyOCwgMTI0OTMyLCAxMjQ5MzYsIAorICAgIDEyNDk0MCwgMTI0OTQ2LCAxMjQ5NTIsIDEyNDk1OCwgMTI0OTY0LCAxMjQ5NjksIDEyNDk4MCwgMTI0OTgyLCAxMjQ5ODYsIAorICAgIDEyNDk4OCwgMTI0OTkwLCAxMjQ5OTQsIDEyNDk5OCwgMTI1MDAwLCAxMjUwMDQsIDEyNTAwOSwgMTI1MDE0LCAxMjUwMjAsIAorICAgIDEyNTAyMiwgMTI1MDI2LCAxMjUwMzAsIDEyNTAzNywgMTI1MDQ0LCAxMjUwNDgsIDEyNTA1MCwgMTI1MDUyLCAxMjUwNTYsIAorICAgIDEyNTA1OCwgMTI1MDYyLCAxMjUwNjYsIDEyNTA3MCwgMTI1MDcyLCAxMjUwNzQsIDEyNTA4MSwgMTI1MDg1LCAxMjUwODgsIAorICAgIDEyNTA5MiwgMTI1MDk2LCAxMjUxMDAsIDEyNTEwMiwgMTI1MTA2LCAxMjUxMDgsIDEyNTExMCwgMTI1MTE0LCAxMjUxMTYsIAorICAgIDEyNTEyMCwgMTI1MTI0LCAxMjUxMzAsIDEyNTEzNCwgMTI1MTM4LCAxMjUxNDIsIDEyNTE0NCwgMTI1MTQ3LCAxMjUxNTEsIAorICAgIDEyNTE1OCwgMTI1MTY3LCAxMjUxNzYsIDEyNTE4NCwgMTI1MTkyLCAxMjUxOTQsIDEyNTE5OCwgMTI1MjAwLCAxMjUyMDQsIAorICAgIDEyNTIxNSwgMTI1MjE5LCAxMjUyMjUsIDEyNTIzMSwgMTI1MjM2LCAwLCAxMjUyMzgsIDEyNTI0MiwgMTI1MjQ0LCAKKyAgICAxMjUyNDYsIDAsIDAsIDAsIDEyNTI0OCwgMTI1MjUzLCAxMjUyNjMsIDEyNTI3OCwgMTI1MjkwLCAxMjUzMDIsIDEyNTMwNiwgCisgICAgMTI1MzEwLCAxMjUzMTYsIDEyNTMxOCwgMTI1MzI2LCAxMjUzMzQsIDEyNTMzNiwgMTI1MzQwLCAxMjUzNDYsIDEyNTM1MiwgCisgICAgMTI1MzU5LCAxMjUzNjYsIDEyNTM2OCwgMTI1MzcwLCAxMjUzNzMsIDEyNTM3NSwgMTI1MzgxLCAxMjUzODMsIDEyNTM4NiwgCisgICAgMTI1MzkwLCAxMjUzOTYsIDEyNTQwMiwgMTI1NDEzLCAxMjU0MTksIDEyNTQyNiwgMTI1NDM0LCAxMjU0MzgsIDEyNTQ0NiwgCisgICAgMTI1NDU0LCAxMjU0NjAsIDEyNTQ2NiwgMTI1NDczLCAxMjU0NzUsIDEyNTQ3OSwgMTI1NDgxLCAxMjU0ODMsIDEyNTQ4OCwgCisgICAgMTI1NDkwLCAxMjU0OTIsIDEyNTQ5NCwgMTI1NDk2LCAxMjU1MDAsIDEyNTUxMSwgMTI1NTE3LCAxMjU1MjEsIDEyNTUyNSwgCisgICAgMTI1NTI5LCAxMjU1MzUsIDEyNTU0MSwgMTI1NTQ3LCAxMjU1NTMsIDEyNTU1OCwgMTI1NTYzLCAxMjU1NjksIDEyNTU3NSwgCisgICAgMTI1NTgyLCAwLCAwLCAxMjU1ODksIDEyNTU5NCwgMTI1NjAyLCAxMjU2MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEyNTYxNSwgMTI1NjIyLCAxMjU2MjksIDEyNTYzNiwgMTI1NjQ0LCAxMjU2NTIsIDEyNTY2MCwgMTI1NjY4LCAKKyAgICAxMjU2NzYsIDEyNTY4NCwgMTI1NjkyLCAxMjU3MDAsIDEyNTcwOCwgMTI1NzE0LCAxMjU3MjAsIDEyNTcyNiwgMTI1NzMyLCAKKyAgICAxMjU3MzgsIDEyNTc0NCwgMTI1NzUwLCAxMjU3NTYsIDEyNTc2MiwgMTI1NzY4LCAxMjU3NzQsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNTc4MCwgCisgICAgMTI1Nzg0LCAxMjU3ODgsIDEyNTc5MywgMTI1Nzk4LCAxMjU4MDAsIDEyNTgwNCwgMTI1ODEzLCAxMjU4MjEsIDEyNTgyOSwgCisgICAgMTI1ODQyLCAxMjU4NTUsIDEyNTg2OCwgMTI1ODc1LCAxMjU4ODIsIDEyNTg4NiwgMTI1ODk1LCAxMjU5MDMsIDEyNTkwNywgCisgICAgMTI1OTE2LCAxMjU5MjMsIDEyNTkyNywgMTI1OTMxLCAxMjU5MzUsIDEyNTkzOSwgMTI1OTQ2LCAxMjU5NTAsIDEyNTk1NCwgCisgICAgMTI1OTU4LCAxMjU5NjIsIDEyNTk2OSwgMTI1OTc4LCAxMjU5ODcsIDEyNTk5NCwgMTI2MDA2LCAxMjYwMTgsIDEyNjAyMiwgCisgICAgMTI2MDI2LCAxMjYwMzAsIDEyNjAzNCwgMTI2MDM4LCAxMjYwNDIsIDEyNjA1MCwgMTI2MDU4LCAxMjYwNjYsIDEyNjA3MCwgCisgICAgMTI2MDc0LCAxMjYwNzgsIDEyNjA4MiwgMTI2MDg2LCAxMjYwOTAsIDEyNjA5NiwgMTI2MTAyLCAxMjYxMDYsIDEyNjExNywgCisgICAgMTI2MTI1LCAxMjYxMjksIDEyNjEzMywgMTI2MTM3LCAxMjYxNDEsIDEyNjE0NywgMTI2MTU0LCAxMjYxNjUsIDEyNjE3NSwgCisgICAgMTI2MTg1LCAxMjYxOTYsIDEyNjIwNSwgMTI2MjE2LCAxMjYyMjIsIDEyNjIyOCwgMCwgMCwgMCwgMCwgMTI2MjM0LCAKKyAgICAxMjYyNDMsIDEyNjI1MCwgMTI2MjU2LCAxMjYyNjAsIDEyNjI2NCwgMTI2MjY4LCAxMjYyNzcsIDEyNjI4OSwgMTI2MjkzLCAKKyAgICAxMjYzMDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEyNjMwNywgMTI2MzA5LCAxMjYzMTEsIDEyNjMxNSwgMTI2MzE5LCAxMjYzMjMsIDEyNjMzMiwgMTI2MzM0LCAKKyAgICAxMjYzMzYsIDEyNjMzOSwgMTI2MzQxLCAxMjYzNDMsIDEyNjM0NywgMTI2MzQ5LCAxMjYzNTMsIDEyNjM1NSwgMTI2MzU5LCAKKyAgICAxMjYzNjEsIDEyNjM2MywgMTI2MzY3LCAxMjYzNzEsIDEyNjM3NywgMTI2Mzc5LCAxMjYzODMsIDEyNjM4NSwgMTI2Mzg5LCAKKyAgICAxMjYzOTMsIDEyNjM5NywgMTI2NDAxLCAxMjY0MDMsIDEyNjQwNSwgMTI2NDA5LCAxMjY0MTMsIDEyNjQxNywgMTI2NDIxLCAKKyAgICAxMjY0MjMsIDEyNjQyNSwgMTI2NDI3LCAxMjY0MzIsIDEyNjQzNywgMTI2NDQwLCAxMjY0NDgsIDEyNjQ1NiwgMTI2NDU4LCAKKyAgICAxMjY0NjMsIDEyNjQ2NiwgMTI2NDcxLCAxMjY0ODIsIDEyNjQ4OSwgMTI2NDk0LCAxMjY0OTksIDEyNjUwMSwgMTI2NTA1LCAKKyAgICAxMjY1MDcsIDEyNjUxMSwgMTI2NTEzLCAxMjY1MTcsIDEyNjUyMSwgMTI2NTI0LCAxMjY1MjcsIDEyNjUyOSwgMTI2NTMyLCAKKyAgICAxMjY1MzQsIDEyNjUzOCwgMTI2NTQwLCAxMjY1NDIsIDEyNjU0NCwgMTI2NTQ4LCAxMjY1NTAsIDEyNjU1NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI2NTU3LCAxMjY1NjIsIDEyNjU2NywgMTI2NTcyLCAxMjY1NzcsIDEyNjU4MiwgCisgICAgMTI2NTg3LCAxMjY1OTQsIDEyNjYwMSwgMTI2NjA4LCAxMjY2MTUsIDEyNjYyMCwgMTI2NjI1LCAxMjY2MzAsIDEyNjYzNSwgCisgICAgMTI2NjQyLCAxMjY2NDgsIDEyNjY1NSwgMTI2NjYyLCAxMjY2NjksIDEyNjY3NCwgMTI2Njc5LCAxMjY2ODQsIDEyNjY4OSwgCisgICAgMTI2Njk0LCAxMjY3MDEsIDEyNjcwOCwgMTI2NzEzLCAxMjY3MTgsIDEyNjcyNSwgMTI2NzMyLCAxMjY3NDAsIDEyNjc0OCwgCisgICAgMTI2NzU1LCAxMjY3NjIsIDEyNjc3MCwgMTI2Nzc4LCAxMjY3ODYsIDEyNjc5MywgMTI2ODAzLCAxMjY4MTQsIDEyNjgxOSwgCisgICAgMTI2ODI2LCAxMjY4MzMsIDEyNjg0MCwgMTI2ODQ4LCAxMjY4NTYsIDEyNjg2NywgMTI2ODc1LCAxMjY4ODMsIDEyNjg5MSwgCisgICAgMTI2ODk2LCAxMjY5MDEsIDEyNjkwNiwgMTI2OTExLCAxMjY5MTYsIDEyNjkyMSwgMTI2OTI2LCAxMjY5MzEsIDEyNjkzNiwgCisgICAgMTI2OTQxLCAxMjY5NDYsIDEyNjk1MSwgMTI2OTU4LCAxMjY5NjMsIDEyNjk2OCwgMTI2OTc1LCAxMjY5ODAsIDEyNjk4NSwgCisgICAgMTI2OTkwLCAxMjY5OTUsIDEyNzAwMCwgMTI3MDA1LCAxMjcwMTAsIDEyNzAxNSwgMTI3MDIwLCAxMjcwMjUsIDEyNzAzMCwgCisgICAgMTI3MDM1LCAxMjcwNDIsIDEyNzA1MCwgMTI3MDU1LCAxMjcwNjAsIDEyNzA2NywgMTI3MDcyLCAxMjcwNzcsIDEyNzA4MiwgCisgICAgMTI3MDg5LCAxMjcwOTQsIDEyNzEwMSwgMTI3MTA2LCAxMjcxMTMsIDEyNzExOCwgMTI3MTI3LCAxMjcxMzYsIDEyNzE0MSwgCisgICAgMTI3MTQ2LCAxMjcxNTEsIDEyNzE1NiwgMTI3MTYxLCAxMjcxNjYsIDEyNzE3MSwgMTI3MTc2LCAxMjcxODEsIDEyNzE4NiwgCisgICAgMTI3MTkxLCAxMjcxOTYsIDEyNzIwMSwgMTI3MjA5LCAxMjcyMTcsIDEyNzIyMiwgMTI3MjI3LCAxMjcyMzIsIDEyNzIzNywgCisgICAgMTI3MjQyLCAxMjcyNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzI1NCwgMTI3MjU4LCAKKyAgICAxMjcyNjIsIDEyNzI2NiwgMTI3MjcwLCAxMjcyNzQsIDEyNzI3OCwgMTI3MjgyLCAxMjcyODYsIDEyNzI5MCwgMTI3Mjk0LCAKKyAgICAxMjcyOTgsIDEyNzMwMiwgMTI3MzA2LCAxMjczMTAsIDEyNzMxNCwgMTI3MzE4LCAxMjczMjIsIDEyNzMyNiwgMTI3MzMwLCAKKyAgICAxMjczMzQsIDEyNzMzOCwgMTI3MzQyLCAxMjczNDYsIDEyNzM1MCwgMTI3MzU0LCAxMjczNTgsIDEyNzM2MiwgMTI3MzY2LCAKKyAgICAxMjczNzAsIDEyNzM3NCwgMTI3Mzc4LCAxMjczODIsIDEyNzM4NiwgMTI3MzkwLCAxMjczOTQsIDEyNzM5OCwgMTI3NDAyLCAKKyAgICAxMjc0MDYsIDEyNzQxMCwgMTI3NDE0LCAxMjc0MTgsIDEyNzQyMiwgMTI3NDI2LCAxMjc0MzAsIDEyNzQzNCwgMTI3NDM4LCAKKyAgICAxMjc0NDIsIDEyNzQ0NiwgMTI3NDUwLCAxMjc0NTQsIDEyNzQ1OCwgMTI3NDYyLCAxMjc0NjYsIDEyNzQ3MCwgMTI3NDc0LCAKKyAgICAxMjc0NzgsIDEyNzQ4MiwgMTI3NDg2LCAxMjc0OTAsIDEyNzQ5NCwgMTI3NDk4LCAxMjc1MDIsIDEyNzUwNiwgMTI3NTEwLCAKKyAgICAxMjc1MTQsIDEyNzUxOCwgMTI3NTIyLCAxMjc1MjYsIDEyNzUzMCwgMTI3NTM0LCAxMjc1MzgsIDEyNzU0MiwgMTI3NTQ2LCAKKyAgICAxMjc1NTAsIDEyNzU1NCwgMTI3NTU4LCAxMjc1NjIsIDEyNzU2NiwgMTI3NTcwLCAxMjc1NzQsIDEyNzU3OCwgMTI3NTgyLCAKKyAgICAxMjc1ODYsIDEyNzU5MCwgMTI3NTk0LCAxMjc1OTgsIDEyNzYwMiwgMTI3NjA2LCAxMjc2MTAsIDEyNzYxNCwgMTI3NjE4LCAKKyAgICAxMjc2MjIsIDEyNzYyNiwgMTI3NjMwLCAxMjc2MzQsIDEyNzYzOCwgMTI3NjQyLCAxMjc2NDYsIDEyNzY1MCwgMTI3NjU0LCAKKyAgICAxMjc2NTgsIDEyNzY2MiwgMTI3NjY2LCAxMjc2NzAsIDEyNzY3NCwgMTI3Njc4LCAxMjc2ODIsIDEyNzY4NiwgMTI3NjkwLCAKKyAgICAxMjc2OTQsIDEyNzY5OCwgMTI3NzAyLCAxMjc3MDYsIDEyNzcxMCwgMTI3NzE0LCAxMjc3MTgsIDEyNzcyMiwgMTI3NzI2LCAKKyAgICAxMjc3MzAsIDEyNzczNCwgMTI3NzM4LCAxMjc3NDIsIDEyNzc0NiwgMTI3NzUwLCAxMjc3NTQsIDEyNzc1OCwgMTI3NzYyLCAKKyAgICAxMjc3NjYsIDEyNzc3MCwgMTI3Nzc0LCAxMjc3NzgsIDEyNzc4MiwgMTI3Nzg2LCAxMjc3OTAsIDEyNzc5NCwgMTI3Nzk4LCAKKyAgICAxMjc4MDIsIDEyNzgwNiwgMTI3ODEwLCAxMjc4MTQsIDEyNzgxOCwgMTI3ODIyLCAxMjc4MjYsIDEyNzgzMCwgMTI3ODM0LCAKKyAgICAxMjc4MzgsIDEyNzg0MiwgMTI3ODQ2LCAxMjc4NTAsIDEyNzg1NCwgMTI3ODU4LCAxMjc4NjIsIDEyNzg2NiwgMTI3ODcwLCAKKyAgICAxMjc4NzQsIDEyNzg3OCwgMTI3ODgyLCAxMjc4ODYsIDEyNzg5MCwgMTI3ODk0LCAxMjc4OTgsIDEyNzkwMiwgMTI3OTA2LCAKKyAgICAxMjc5MTAsIDEyNzkxNCwgMTI3OTE4LCAxMjc5MjIsIDEyNzkyNiwgMTI3OTMwLCAxMjc5MzQsIDEyNzkzOCwgMTI3OTQyLCAKKyAgICAxMjc5NDYsIDEyNzk1MCwgMTI3OTU0LCAxMjc5NTgsIDEyNzk2MiwgMTI3OTY2LCAxMjc5NzAsIDEyNzk3NCwgMTI3OTc4LCAKKyAgICAxMjc5ODIsIDEyNzk4NiwgMTI3OTkwLCAxMjc5OTQsIDEyNzk5OCwgMTI4MDAyLCAxMjgwMDYsIDEyODAxMCwgMTI4MDE0LCAKKyAgICAxMjgwMTgsIDEyODAyMiwgMTI4MDI2LCAxMjgwMzAsIDEyODAzNCwgMTI4MDM4LCAxMjgwNDIsIDEyODA0NiwgMTI4MDUwLCAKKyAgICAxMjgwNTQsIDEyODA1OCwgMTI4MDYyLCAxMjgwNjYsIDEyODA3MCwgMTI4MDc0LCAxMjgwNzgsIDEyODA4MiwgMTI4MDg2LCAKKyAgICAxMjgwOTAsIDEyODA5NCwgMTI4MDk4LCAxMjgxMDIsIDEyODEwNiwgMTI4MTEwLCAxMjgxMTQsIDEyODExOCwgMTI4MTIyLCAKKyAgICAxMjgxMjYsIDEyODEzMCwgMTI4MTM0LCAxMjgxMzgsIDEyODE0MiwgMTI4MTQ2LCAxMjgxNTAsIDEyODE1NCwgMTI4MTU4LCAKKyAgICAxMjgxNjIsIDEyODE2NiwgMTI4MTcwLCAxMjgxNzQsIDEyODE3OCwgMTI4MTgyLCAxMjgxODYsIDEyODE5MCwgMTI4MTk0LCAKKyAgICAxMjgxOTgsIDEyODIwMiwgMTI4MjA2LCAxMjgyMTAsIDEyODIxNCwgMTI4MjE4LCAxMjgyMjIsIDEyODIyNiwgMTI4MjMwLCAKKyAgICAxMjgyMzQsIDEyODIzOCwgMTI4MjQyLCAxMjgyNDYsIDEyODI1MCwgMTI4MjU0LCAxMjgyNTgsIDEyODI2MiwgMTI4MjY2LCAKKyAgICAxMjgyNzAsIDEyODI3NCwgMTI4Mjc4LCAxMjgyODIsIDEyODI4NiwgMTI4MjkwLCAxMjgyOTQsIDEyODI5OCwgMTI4MzAyLCAKKyAgICAxMjgzMDYsIDEyODMxMCwgMTI4MzE0LCAxMjgzMTgsIDEyODMyMiwgMTI4MzI2LCAxMjgzMzAsIDEyODMzNCwgMTI4MzM4LCAKKyAgICAxMjgzNDIsIDEyODM0NiwgMTI4MzUwLCAxMjgzNTQsIDEyODM1OCwgMTI4MzYyLCAxMjgzNjYsIDEyODM3MCwgMTI4Mzc0LCAKKyAgICAxMjgzNzgsIDEyODM4MiwgMTI4Mzg2LCAxMjgzOTAsIDEyODM5NCwgMTI4Mzk4LCAxMjg0MDIsIDEyODQwNiwgMTI4NDEwLCAKKyAgICAxMjg0MTQsIDEyODQxOCwgMTI4NDIyLCAxMjg0MjYsIDEyODQzMCwgMTI4NDM0LCAxMjg0MzgsIDEyODQ0MiwgMTI4NDQ2LCAKKyAgICAxMjg0NTAsIDEyODQ1NCwgMTI4NDU4LCAxMjg0NjIsIDEyODQ2NiwgMTI4NDcwLCAxMjg0NzQsIDEyODQ3OCwgMTI4NDgyLCAKKyAgICAxMjg0ODYsIDEyODQ5MCwgMTI4NDk0LCAxMjg0OTgsIDEyODUwMiwgMTI4NTA2LCAxMjg1MTAsIDEyODUxNCwgMTI4NTE4LCAKKyAgICAxMjg1MjIsIDEyODUyNiwgMTI4NTMwLCAxMjg1MzQsIDEyODUzOCwgMTI4NTQyLCAxMjg1NDYsIDEyODU1MCwgMTI4NTU0LCAKKyAgICAxMjg1NTgsIDEyODU2MiwgMTI4NTY2LCAxMjg1NzAsIDEyODU3NCwgMTI4NTc4LCAxMjg1ODIsIDEyODU4NiwgMTI4NTkwLCAKKyAgICAxMjg1OTQsIDEyODU5OCwgMTI4NjAyLCAxMjg2MDYsIDEyODYxMCwgMTI4NjE0LCAxMjg2MTgsIDEyODYyMiwgMTI4NjI2LCAKKyAgICAxMjg2MzAsIDEyODYzNCwgMTI4NjM4LCAxMjg2NDIsIDEyODY0NiwgMTI4NjUwLCAxMjg2NTQsIDEyODY1OCwgMTI4NjYyLCAKKyAgICAxMjg2NjYsIDEyODY3MCwgMTI4Njc0LCAxMjg2NzgsIDEyODY4MiwgMTI4Njg2LCAxMjg2OTAsIDEyODY5NCwgMTI4Njk4LCAKKyAgICAxMjg3MDIsIDEyODcwNiwgMTI4NzEwLCAxMjg3MTQsIDEyODcxOCwgMTI4NzIyLCAxMjg3MjYsIDEyODczMCwgMTI4NzM0LCAKKyAgICAxMjg3MzgsIDEyODc0MiwgMTI4NzQ2LCAxMjg3NTAsIDEyODc1NCwgMTI4NzU4LCAxMjg3NjIsIDEyODc2NiwgMTI4NzcwLCAKKyAgICAxMjg3NzQsIDEyODc3OCwgMTI4NzgyLCAxMjg3ODYsIDEyODc5MCwgMTI4Nzk0LCAxMjg3OTgsIDEyODgwMiwgMTI4ODA2LCAKKyAgICAxMjg4MTAsIDEyODgxNCwgMTI4ODE4LCAxMjg4MjIsIDEyODgyNiwgMTI4ODMwLCAxMjg4MzQsIDEyODgzOCwgMTI4ODQyLCAKKyAgICAxMjg4NDYsIDEyODg1MCwgMTI4ODU0LCAxMjg4NTgsIDEyODg2MiwgMTI4ODY2LCAxMjg4NzAsIDEyODg3NCwgMTI4ODc4LCAKKyAgICAxMjg4ODIsIDEyODg4NiwgMTI4ODkwLCAxMjg4OTQsIDEyODg5OCwgMTI4OTAyLCAxMjg5MDYsIDEyODkxMCwgMTI4OTE0LCAKKyAgICAxMjg5MTgsIDEyODkyMiwgMTI4OTI2LCAxMjg5MzAsIDEyODkzNCwgMTI4OTM4LCAxMjg5NDIsIDEyODk0NiwgMTI4OTUwLCAKKyAgICAxMjg5NTQsIDEyODk1OCwgMTI4OTYyLCAxMjg5NjYsIDEyODk3MCwgMTI4OTc0LCAxMjg5NzgsIDEyODk4MiwgMTI4OTg2LCAKKyAgICAxMjg5OTAsIDEyODk5NCwgMTI4OTk4LCAxMjkwMDIsIDEyOTAwNiwgMTI5MDEwLCAxMjkwMTQsIDEyOTAxOCwgMTI5MDIyLCAKKyAgICAxMjkwMjYsIDEyOTAzMCwgMTI5MDM0LCAxMjkwMzgsIDEyOTA0MiwgMTI5MDQ2LCAxMjkwNTAsIDEyOTA1NCwgMTI5MDU4LCAKKyAgICAxMjkwNjIsIDEyOTA2NiwgMTI5MDcwLCAxMjkwNzQsIDEyOTA3OCwgMTI5MDgyLCAxMjkwODYsIDEyOTA5MCwgMTI5MDk0LCAKKyAgICAxMjkwOTgsIDEyOTEwMiwgMTI5MTA2LCAxMjkxMTAsIDEyOTExNCwgMTI5MTE4LCAxMjkxMjIsIDEyOTEyNiwgMTI5MTMwLCAKKyAgICAxMjkxMzQsIDEyOTEzOCwgMTI5MTQyLCAxMjkxNDYsIDEyOTE1MCwgMTI5MTU0LCAxMjkxNTgsIDEyOTE2MiwgMTI5MTY2LCAKKyAgICAxMjkxNzAsIDEyOTE3NCwgMTI5MTc4LCAxMjkxODIsIDEyOTE4NiwgMTI5MTkwLCAxMjkxOTQsIDEyOTE5OCwgMTI5MjAyLCAKKyAgICAxMjkyMDYsIDEyOTIxMCwgMTI5MjE0LCAxMjkyMTgsIDEyOTIyMiwgMTI5MjI2LCAxMjkyMzAsIDEyOTIzNCwgMTI5MjM4LCAKKyAgICAxMjkyNDIsIDEyOTI0NiwgMTI5MjUwLCAxMjkyNTQsIDEyOTI1OCwgMTI5MjYyLCAxMjkyNjYsIDEyOTI3MCwgMTI5Mjc0LCAKKyAgICAxMjkyNzgsIDEyOTI4MiwgMTI5Mjg2LCAxMjkyOTAsIDEyOTI5NCwgMTI5Mjk4LCAxMjkzMDIsIDEyOTMwNiwgMTI5MzEwLCAKKyAgICAxMjkzMTQsIDEyOTMxOCwgMTI5MzIyLCAxMjkzMjYsIDEyOTMzMCwgMTI5MzM0LCAxMjkzMzgsIDEyOTM0MiwgMTI5MzQ2LCAKKyAgICAxMjkzNTAsIDEyOTM1NCwgMTI5MzU4LCAxMjkzNjIsIDEyOTM2NiwgMTI5MzcwLCAxMjkzNzQsIDEyOTM3OCwgMTI5MzgyLCAKKyAgICAxMjkzODYsIDEyOTM5MCwgMTI5Mzk0LCAxMjkzOTgsIDEyOTQwMiwgMTI5NDA2LCAxMjk0MTAsIDEyOTQxNCwgMTI5NDE4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMjk0MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTQyNiwgMTI5NDI5LCAxMjk0MzMsIDEyOTQzNywgMTI5NDQwLCAKKyAgICAxMjk0NDQsIDEyOTQ0OCwgMTI5NDUxLCAxMjk0NTQsIDEyOTQ1OCwgMTI5NDYyLCAxMjk0NjUsIDEyOTQ2OCwgMTI5NDcxLCAKKyAgICAxMjk0NzQsIDEyOTQ3OSwgMTI5NDgyLCAxMjk0ODYsIDEyOTQ4OSwgMTI5NDkyLCAxMjk0OTUsIDEyOTQ5OCwgMTI5NTAxLCAKKyAgICAxMjk1MDQsIDEyOTUwNywgMTI5NTEwLCAxMjk1MTMsIDEyOTUxNiwgMTI5NTE5LCAxMjk1MjMsIDEyOTUyNywgMTI5NTMxLCAKKyAgICAxMjk1MzUsIDEyOTU0MCwgMTI5NTQ1LCAxMjk1NTEsIDEyOTU1NywgMTI5NTYzLCAxMjk1NjgsIDEyOTU3NCwgMTI5NTgwLCAKKyAgICAxMjk1ODYsIDEyOTU5MSwgMTI5NTk3LCAxMjk2MDMsIDEyOTYwOCwgMTI5NjEzLCAxMjk2MTksIDEyOTYyNCwgMTI5NjMwLCAKKyAgICAxMjk2MzYsIDEyOTY0MSwgMTI5NjQ3LCAxMjk2NTMsIDEyOTY1OCwgMTI5NjY0LCAxMjk2NzAsIDEyOTY3NiwgMTI5NjgyLCAKKyAgICAxMjk2ODgsIDEyOTY5MiwgMTI5Njk3LCAxMjk3MDEsIDEyOTcwNiwgMTI5NzEwLCAxMjk3MTUsIDEyOTcyMCwgMTI5NzI2LCAKKyAgICAxMjk3MzIsIDEyOTczOCwgMTI5NzQzLCAxMjk3NDksIDEyOTc1NSwgMTI5NzYxLCAxMjk3NjYsIDEyOTc3MiwgMTI5Nzc4LCAKKyAgICAxMjk3ODMsIDEyOTc4OCwgMTI5Nzk0LCAxMjk3OTksIDEyOTgwNSwgMTI5ODExLCAxMjk4MTYsIDEyOTgyMiwgMTI5ODI4LCAKKyAgICAxMjk4MzMsIDEyOTgzOSwgMTI5ODQ1LCAxMjk4NTEsIDEyOTg1NywgMTI5ODYzLCAxMjk4NjgsIDEyOTg3MiwgMTI5ODc3LCAKKyAgICAxMjk4NzksIDEyOTg4MywgMTI5ODg2LCAxMjk4ODksIDEyOTg5MiwgMTI5ODk1LCAxMjk4OTgsIDEyOTkwMSwgMTI5OTA0LCAKKyAgICAxMjk5MDcsIDEyOTkxMCwgMTI5OTEzLCAxMjk5MTYsIDEyOTkxOSwgMTI5OTIyLCAxMjk5MjUsIDEyOTkyOCwgMTI5OTMxLCAKKyAgICAxMjk5MzQsIDEyOTkzNywgMTI5OTQwLCAxMjk5NDMsIDEyOTk0NiwgMTI5OTQ5LCAxMjk5NTIsIDEyOTk1NSwgMTI5OTU4LCAKKyAgICAxMjk5NjEsIDEyOTk2NCwgMTI5OTY3LCAxMjk5NzAsIDEyOTk3MywgMTI5OTc2LCAxMjk5NzksIDEyOTk4MiwgMTI5OTg1LCAKKyAgICAxMjk5ODgsIDEyOTk5MSwgMTI5OTk0LCAxMjk5OTcsIDEzMDAwMCwgMTMwMDAzLCAxMzAwMDYsIDEzMDAwOSwgMTMwMDEyLCAKKyAgICAxMzAwMTUsIDEzMDAxOCwgMTMwMDIxLCAxMzAwMjQsIDEzMDAyNywgMTMwMDMwLCAxMzAwMzMsIDEzMDAzNiwgMTMwMDM5LCAKKyAgICAxMzAwNDIsIDEzMDA0NSwgMTMwMDQ4LCAxMzAwNTEsIDEzMDA1NCwgMTMwMDU3LCAxMzAwNjAsIDEzMDA2MywgMTMwMDY2LCAKKyAgICAxMzAwNjksIDEzMDA3MiwgMTMwMDc1LCAxMzAwNzgsIDEzMDA4MSwgMTMwMDg0LCAxMzAwODcsIDEzMDA5MCwgMTMwMDkzLCAKKyAgICAxMzAwOTYsIDEzMDA5OSwgMTMwMTAyLCAxMzAxMDUsIDEzMDEwOCwgMTMwMTExLCAxMzAxMTQsIDEzMDExNywgMTMwMTIwLCAKKyAgICAxMzAxMjMsIDEzMDEyNiwgMTMwMTI5LCAxMzAxMzIsIDEzMDEzNSwgMTMwMTM4LCAxMzAxNDEsIDEzMDE0NCwgMTMwMTQ3LCAKKyAgICAxMzAxNTAsIDEzMDE1MywgMTMwMTU2LCAxMzAxNTksIDEzMDE2MiwgMTMwMTY1LCAxMzAxNjgsIDEzMDE3MSwgMTMwMTc0LCAKKyAgICAxMzAxNzcsIDEzMDE4MCwgMTMwMTgzLCAxMzAxODYsIDEzMDE4OSwgMTMwMTkyLCAxMzAxOTUsIDEzMDE5OCwgMTMwMjAxLCAKKyAgICAxMzAyMDQsIDEzMDIwNywgMTMwMjEwLCAxMzAyMTMsIDEzMDIxNiwgMTMwMjE5LCAxMzAyMjIsIDEzMDIyNSwgMTMwMjI4LCAKKyAgICAxMzAyMzEsIDEzMDIzNCwgMTMwMjM3LCAxMzAyNDAsIDEzMDI0MywgMTMwMjQ2LCAxMzAyNDksIDEzMDI1MiwgMTMwMjU1LCAKKyAgICAxMzAyNTgsIDEzMDI2MSwgMTMwMjY0LCAxMzAyNjcsIDEzMDI3MCwgMTMwMjczLCAxMzAyNzYsIDEzMDI3OSwgMTMwMjgyLCAKKyAgICAxMzAyODUsIDEzMDI4OCwgMTMwMjkxLCAxMzAyOTQsIDEzMDI5NywgMTMwMzAwLCAxMzAzMDMsIDEzMDMwNiwgMTMwMzA5LCAKKyAgICAxMzAzMTIsIDEzMDMxNSwgMTMwMzE4LCAxMzAzMjEsIDEzMDMyNCwgMTMwMzI3LCAxMzAzMzAsIDEzMDMzMywgMTMwMzM2LCAKKyAgICAxMzAzMzksIDEzMDM0MiwgMTMwMzQ1LCAxMzAzNDgsIDEzMDM1MSwgMTMwMzU0LCAxMzAzNTcsIDEzMDM2MCwgMTMwMzYzLCAKKyAgICAxMzAzNjYsIDEzMDM2OSwgMTMwMzcyLCAxMzAzNzUsIDEzMDM3OCwgMTMwMzgxLCAxMzAzODQsIDEzMDM4NywgMTMwMzkwLCAKKyAgICAxMzAzOTMsIDEzMDM5NiwgMTMwMzk5LCAxMzA0MDIsIDEzMDQwNSwgMTMwNDA4LCAxMzA0MTEsIDEzMDQxNCwgMTMwNDE3LCAKKyAgICAxMzA0MjAsIDEzMDQyMywgMTMwNDI2LCAxMzA0MjksIDEzMDQzMiwgMTMwNDM1LCAxMzA0MzgsIDEzMDQ0MSwgMTMwNDQ0LCAKKyAgICAxMzA0NDcsIDEzMDQ1MCwgMTMwNDUzLCAxMzA0NTYsIDEzMDQ1OSwgMTMwNDYyLCAxMzA0NjUsIDEzMDQ2OCwgMTMwNDcxLCAKKyAgICAxMzA0NzQsIDEzMDQ3NywgMTMwNDgwLCAxMzA0ODMsIDEzMDQ4NiwgMTMwNDg5LCAxMzA0OTIsIDEzMDQ5NSwgMTMwNDk4LCAKKyAgICAxMzA1MDEsIDEzMDUwNCwgMTMwNTA3LCAxMzA1MTAsIDEzMDUxMywgMTMwNTE2LCAxMzA1MTksIDEzMDUyMiwgMTMwNTI1LCAKKyAgICAxMzA1MjgsIDEzMDUzMSwgMTMwNTM0LCAxMzA1MzcsIDEzMDU0MCwgMTMwNTQzLCAxMzA1NDYsIDEzMDU0OSwgMTMwNTUyLCAKKyAgICAxMzA1NTUsIDEzMDU1OCwgMTMwNTYxLCAxMzA1NjQsIDEzMDU2NywgMTMwNTcwLCAxMzA1NzMsIDEzMDU3NiwgMTMwNTc5LCAKKyAgICAxMzA1ODIsIDEzMDU4NSwgMTMwNTg4LCAxMzA1OTEsIDEzMDU5NCwgMTMwNTk3LCAxMzA2MDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDYwMywgMTMwNjA1LCAxMzA2MDcsIDEzMDYxMiwgMTMwNjE0LCAKKyAgICAxMzA2MTksIDEzMDYyMSwgMTMwNjI2LCAxMzA2MjgsIDEzMDYzMywgMTMwNjM1LCAxMzA2MzcsIDEzMDYzOSwgMTMwNjQxLCAKKyAgICAxMzA2NDMsIDEzMDY0NSwgMTMwNjQ3LCAxMzA2NDksIDEzMDY1MSwgMTMwNjU0LCAxMzA2NTcsIDEzMDY1OSwgMTMwNjYxLCAKKyAgICAxMzA2NjUsIDEzMDY2OCwgMTMwNjczLCAxMzA2NzUsIDEzMDY3NywgMTMwNjc5LCAxMzA2ODMsIDEzMDY4NiwgMTMwNjg4LCAKKyAgICAxMzA2OTIsIDEzMDY5NCwgMTMwNjk4LCAxMzA3MDAsIDEzMDcwNCwgMTMwNzA3LCAxMzA3MDksIDEzMDcxMywgMTMwNzE3LCAKKyAgICAxMzA3MTksIDEzMDcyNSwgMTMwNzI3LCAxMzA3MzIsIDEzMDczNCwgMTMwNzM5LCAxMzA3NDEsIDEzMDc0NiwgMTMwNzQ4LCAKKyAgICAxMzA3NTMsIDEzMDc1NSwgMTMwNzU4LCAxMzA3NjAsIDEzMDc2NCwgMTMwNzY2LCAxMzA3NzMsIDEzMDc3NSwgMTMwNzc3LCAKKyAgICAxMzA3NzksIDEzMDc4NCwgMTMwNzg2LCAxMzA3ODgsIDEzMDc5MCwgMTMwNzkyLCAxMzA3OTQsIDEzMDc5OSwgMTMwODAzLCAKKyAgICAxMzA4MDUsIDEzMDgxMCwgMTMwODE0LCAxMzA4MTYsIDEzMDgyMSwgMTMwODI1LCAxMzA4MjcsIDEzMDgzMiwgMTMwODM2LCAKKyAgICAxMzA4MzgsIDEzMDg0MCwgMTMwODQyLCAxMzA4NDQsIDEzMDg0OCwgMTMwODUwLCAxMzA4NTUsIDEzMDg1NywgMTMwODYzLCAKKyAgICAxMzA4NjUsIDEzMDg3MSwgMTMwODczLCAxMzA4NzUsIDEzMDg3NywgMTMwODgxLCAxMzA4ODMsIDEzMDg5MCwgMTMwODkyLCAKKyAgICAxMzA4OTksIDEzMDkwMSwgMTMwOTA2LCAxMzA5MTEsIDEzMDkxMywgMTMwOTE5LCAxMzA5MjUsIDEzMDkyNywgMTMwOTMzLCAKKyAgICAxMzA5MzgsIDEzMDk0MCwgMTMwOTQ2LCAxMzA5NTIsIDEzMDk1NCwgMTMwOTYwLCAxMzA5NjYsIDEzMDk2OCwgMTMwOTc0LCAKKyAgICAxMzA5NzgsIDEzMDk4MCwgMTMwOTg1LCAxMzA5ODcsIDEzMDk4OSwgMTMwOTk0LCAxMzA5OTYsIDEzMDk5OCwgMTMxMDA0LCAKKyAgICAxMzEwMDYsIDEzMTAxMSwgMTMxMDE1LCAxMzEwMTcsIDEzMTAyMiwgMTMxMDI2LCAxMzEwMjgsIDEzMTAzNCwgMTMxMDM2LCAKKyAgICAxMzEwNDAsIDEzMTA0MiwgMTMxMDQ2LCAxMzEwNDgsIDEzMTA1NSwgMTMxMDYyLCAxMzEwNjQsIDEzMTA3MSwgMTMxMDc4LCAKKyAgICAxMzEwODAsIDEzMTA4NSwgMTMxMDg3LCAxMzEwOTQsIDEzMTA5NiwgMTMxMTAxLCAxMzExMDMsIDEzMTEwOSwgMTMxMTExLCAKKyAgICAxMzExMTUsIDEzMTExNywgMTMxMTIzLCAxMzExMjUsIDEzMTEyOSwgMTMxMTMxLCAxMzExMzcsIDEzMTEzOSwgMTMxMTQxLCAKKyAgICAxMzExNDMsIDEzMTE0OCwgMTMxMTUzLCAxMzExNTUsIDEzMTE1OSwgMTMxMTY2LCAxMzExNzMsIDEzMTE3OCwgMTMxMTgzLCAKKyAgICAxMzExOTUsIDEzMTE5NywgMTMxMTk5LCAxMzEyMDEsIDEzMTIwMywgMTMxMjA1LCAxMzEyMDcsIDEzMTIwOSwgMTMxMjExLCAKKyAgICAxMzEyMTMsIDEzMTIxNSwgMTMxMjE3LCAxMzEyMTksIDEzMTIyMSwgMTMxMjIzLCAxMzEyMjUsIDEzMTIyNywgMTMxMjI5LCAKKyAgICAxMzEyMzUsIDEzMTI0MiwgMTMxMjQ3LCAxMzEyNTIsIDEzMTI2MywgMTMxMjY1LCAxMzEyNjcsIDEzMTI2OSwgMTMxMjcxLCAKKyAgICAxMzEyNzMsIDEzMTI3NSwgMTMxMjc3LCAxMzEyNzksIDEzMTI4MSwgMTMxMjgzLCAxMzEyODUsIDEzMTI4NywgMTMxMjg5LCAKKyAgICAxMzEyOTEsIDEzMTI5MywgMTMxMjk1LCAxMzEzMDAsIDEzMTMwMiwgMTMxMzA0LCAxMzEzMTUsIDEzMTMxNywgMTMxMzE5LCAKKyAgICAxMzEzMjEsIDEzMTMyMywgMTMxMzI1LCAxMzEzMjcsIDEzMTMyOSwgMTMxMzMxLCAxMzEzMzMsIDEzMTMzNSwgMTMxMzM3LCAKKyAgICAxMzEzMzksIDEzMTM0MSwgMTMxMzQzLCAxMzEzNDUsIDEzMTM0NywgMTMxMzQ5LCAxMzEzNTEsIDEzMTM1MywgMTMxMzU1LCAKKyAgICAxMzEzNTcsIDEzMTM1OSwgMTMxMzYxLCAxMzEzNjMsIDEzMTM2NSwgMTMxMzY3LCAxMzEzNjksIDEzMTM3MSwgMTMxMzczLCAKKyAgICAxMzEzNzUsIDEzMTM3NywgMTMxMzc5LCAxMzEzODEsIDEzMTM4MywgMTMxMzg1LCAxMzEzODcsIDEzMTM4OSwgMTMxMzkxLCAKKyAgICAxMzEzOTMsIDEzMTM5NSwgMTMxMzk3LCAxMzEzOTksIDEzMTQwMSwgMTMxNDAzLCAxMzE0MDUsIDEzMTQwNywgMTMxNDA5LCAKKyAgICAxMzE0MTEsIDEzMTQxMywgMTMxNDE1LCAxMzE0MTcsIDEzMTQxOSwgMTMxNDIxLCAxMzE0MjMsIDEzMTQyNSwgMTMxNDI3LCAKKyAgICAxMzE0MjksIDEzMTQzMSwgMTMxNDMzLCAxMzE0MzUsIDEzMTQzNywgMTMxNDM5LCAxMzE0NDEsIDEzMTQ0MywgMTMxNDQ1LCAKKyAgICAxMzE0NDcsIDEzMTQ0OSwgMTMxNDUxLCAxMzE0NTMsIDEzMTQ1NSwgMTMxNDU3LCAxMzE0NTksIDEzMTQ2MSwgMTMxNDYzLCAKKyAgICAxMzE0NjUsIDEzMTQ2NywgMTMxNDY5LCAxMzE0NzEsIDEzMTQ3MywgMTMxNDc1LCAxMzE0NzcsIDEzMTQ3OSwgMTMxNDgxLCAKKyAgICAxMzE0ODMsIDEzMTQ4NSwgMTMxNDg3LCAxMzE0ODksIDEzMTQ5MSwgMTMxNDkzLCAxMzE0OTUsIDEzMTQ5NywgMTMxNDk5LCAKKyAgICAxMzE1MDEsIDEzMTUwMywgMTMxNTA1LCAxMzE1MDcsIDEzMTUwOSwgMTMxNTExLCAxMzE1MTMsIDEzMTUxNSwgMTMxNTE3LCAKKyAgICAxMzE1MTksIDEzMTUyMSwgMTMxNTIzLCAxMzE1MjUsIDEzMTUyNywgMTMxNTI5LCAxMzE1MzEsIDEzMTUzMywgMTMxNTM1LCAKKyAgICAxMzE1MzcsIDEzMTUzOSwgMTMxNTQxLCAxMzE1NDMsIDEzMTU0NSwgMTMxNTQ3LCAxMzE1NDksIDEzMTU1MSwgMTMxNTUzLCAKKyAgICAxMzE1NTUsIDEzMTU1NywgMTMxNTU5LCAxMzE1NjEsIDEzMTU2MywgMTMxNTY1LCAxMzE1NjcsIDEzMTU2OSwgMTMxNTcxLCAKKyAgICAxMzE1NzMsIDEzMTU3NSwgMTMxNTc3LCAxMzE1NzksIDEzMTU4MSwgMTMxNTgzLCAxMzE1ODUsIDEzMTU4NywgMTMxNTg5LCAKKyAgICAxMzE1OTEsIDEzMTU5MywgMTMxNTk1LCAxMzE1OTcsIDEzMTU5OSwgMTMxNjAxLCAxMzE2MDMsIDEzMTYwNSwgMTMxNjA3LCAKKyAgICAxMzE2MDksIDEzMTYxMSwgMTMxNjEzLCAxMzE2MTUsIDEzMTYxNywgMTMxNjE5LCAxMzE2MjEsIDEzMTYyMywgMTMxNjI1LCAKKyAgICAxMzE2MjcsIDEzMTYyOSwgMTMxNjMxLCAxMzE2MzMsIDEzMTYzNSwgMTMxNjM3LCAxMzE2MzksIDEzMTY0MSwgMTMxNjQzLCAKKyAgICAxMzE2NDUsIDEzMTY0NywgMTMxNjQ5LCAxMzE2NTEsIDEzMTY1MywgMTMxNjU1LCAxMzE2NTcsIDEzMTY1OSwgMTMxNjYxLCAKKyAgICAxMzE2NjMsIDEzMTY2NSwgMTMxNjY3LCAxMzE2NjksIDEzMTY3MSwgMTMxNjczLCAxMzE2NzUsIDEzMTY3NywgMTMxNjc5LCAKKyAgICAxMzE2ODEsIDEzMTY4MywgMTMxNjg1LCAxMzE2ODcsIDEzMTY4OSwgMTMxNjkxLCAxMzE2OTMsIDEzMTY5NSwgMTMxNjk3LCAKKyAgICAxMzE2OTksIDEzMTcwMSwgMTMxNzAzLCAxMzE3MDUsIDEzMTcwNywgMTMxNzA5LCAxMzE3MTEsIDEzMTcxMywgMTMxNzE1LCAKKyAgICAxMzE3MTcsIDEzMTcxOSwgMTMxNzIxLCAxMzE3MjMsIDEzMTcyNSwgMTMxNzI3LCAxMzE3MjksIDEzMTczMSwgMTMxNzMzLCAKKyAgICAxMzE3MzUsIDEzMTczNywgMTMxNzM5LCAxMzE3NDEsIDEzMTc0MywgMTMxNzQ1LCAxMzE3NDcsIDEzMTc0OSwgMTMxNzUxLCAKKyAgICAxMzE3NTMsIDEzMTc1NSwgMTMxNzU3LCAxMzE3NTksIDEzMTc2MSwgMTMxNzYzLCAxMzE3NjUsIDEzMTc2NywgMTMxNzY5LCAKKyAgICAxMzE3NzEsIDEzMTc3MywgMTMxNzc1LCAxMzE3NzcsIDEzMTc3OSwgMTMxNzgxLCAxMzE3ODMsIDEzMTc4NSwgMTMxNzg3LCAKKyAgICAxMzE3ODksIDEzMTc5MSwgMTMxNzkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzE3OTUsIDEzMTgwNSwgMTMxODE1LCAxMzE4MjQsIDEzMTgzMywgMTMxODQ2LCAxMzE4NTksIDEzMTg3MSwgMTMxODgzLCAKKyAgICAxMzE4OTMsIDEzMTkwMywgMTMxOTEzLCAxMzE5MjMsIDEzMTkzNCwgMTMxOTQ1LCAxMzE5NTUsIDEzMTk2NCwgMTMxOTczLCAKKyAgICAxMzE5ODIsIDEzMTk5NSwgMTMyMDA4LCAxMzIwMjAsIDEzMjAzMiwgMTMyMDQyLCAxMzIwNTIsIDEzMjA2MiwgMTMyMDcyLCAKKyAgICAxMzIwODEsIDEzMjA5MCwgMTMyMDk5LCAxMzIxMDgsIDEzMjExNywgMTMyMTI2LCAxMzIxMzUsIDEzMjE0NCwgMTMyMTUzLCAKKyAgICAxMzIxNjIsIDEzMjE3MSwgMTMyMTgwLCAxMzIxOTEsIDEzMjIwMSwgMTMyMjExLCAxMzIyMjQsIDEzMjIzNCwgMTMyMjQ3LCAKKyAgICAxMzIyNTQsIDEzMjI2NCwgMTMyMjcxLCAxMzIyNzgsIDEzMjI4NSwgMTMyMjkyLCAxMzIyOTksIDEzMjMwNiwgMTMyMzE1LCAKKyAgICAxMzIzMjQsIDEzMjMzMywgMTMyMzQyLCAxMzIzNTEsIDEzMjM2MCwgMTMyMzY5LCAxMzIzNzgsIDEzMjM4NiwgMTMyMzk0LCAKKyAgICAxMzI0MDEsIDEzMjQxMSwgMTMyNDIwLCAxMzI0MjgsIDEzMjQzNSwgMTMyNDQ1LCAxMzI0NTQsIDEzMjQ1OCwgMTMyNDYyLCAKKyAgICAxMzI0NjYsIDEzMjQ3MCwgMTMyNDc0LCAxMzI0NzgsIDEzMjQ4MiwgMTMyNDg2LCAxMzI0OTAsIDEzMjQ5NCwgMTMyNDk3LCAKKyAgICAxMzI1MDEsIDEzMjUwNCwgMTMyNTA3LCAxMzI1MTEsIDEzMjUxNSwgMTMyNTE5LCAxMzI1MjMsIDEzMjUyNywgMTMyNTMxLCAKKyAgICAxMzI1MzUsIDEzMjUzOSwgMTMyNTQzLCAxMzI1NDcsIDEzMjU1MSwgMTMyNTU1LCAxMzI1NTksIDEzMjU2MywgMTMyNTY3LCAKKyAgICAxMzI1NzEsIDEzMjU3NSwgMTMyNTc5LCAxMzI1ODMsIDEzMjU4NywgMTMyNTkxLCAxMzI1OTUsIDEzMjU5OSwgMTMyNjAzLCAKKyAgICAxMzI2MDcsIDEzMjYxMSwgMTMyNjE1LCAxMzI2MTksIDEzMjYyMywgMTMyNjI3LCAxMzI2MzEsIDEzMjYzNSwgMTMyNjM5LCAKKyAgICAxMzI2NDMsIDEzMjY0NywgMTMyNjUxLCAxMzI2NTUsIDEzMjY1OSwgMTMyNjYzLCAxMzI2NjcsIDEzMjY3MSwgMTMyNjc1LCAKKyAgICAxMzI2NzksIDEzMjY4MywgMTMyNjg3LCAxMzI2OTEsIDEzMjY5NSwgMTMyNjk5LCAxMzI3MDMsIDEzMjcwNywgMTMyNzExLCAKKyAgICAxMzI3MTUsIDEzMjcxOSwgMTMyNzIzLCAxMzI3MjcsIDEzMjczMSwgMTMyNzM1LCAxMzI3MzksIDEzMjc0MywgMTMyNzQ3LCAKKyAgICAxMzI3NTEsIDEzMjc1NSwgMTMyNzU5LCAxMzI3NjMsIDEzMjc2NywgMTMyNzcxLCAxMzI3NzUsIDEzMjc3OSwgMTMyNzgzLCAKKyAgICAxMzI3ODcsIDEzMjc5MSwgMTMyNzk1LCAxMzI3OTksIDEzMjgwMywgMTMyODA3LCAxMzI4MTEsIDEzMjgxNSwgMTMyODE5LCAKKyAgICAxMzI4MjMsIDEzMjgyNywgMTMyODMxLCAxMzI4MzUsIDEzMjgzOSwgMTMyODQzLCAxMzI4NDcsIDEzMjg1MCwgMTMyODU0LCAKKyAgICAxMzI4NTgsIDEzMjg2MiwgMTMyODY2LCAxMzI4NzAsIDEzMjg3NCwgMTMyODc4LCAxMzI4ODIsIDEzMjg4NiwgMTMyODkwLCAKKyAgICAxMzI4OTQsIDEzMjg5OCwgMTMyOTAyLCAxMzI5MDYsIDEzMjkxMCwgMTMyOTE0LCAxMzI5MTgsIDEzMjkyMiwgMTMyOTI2LCAKKyAgICAxMzI5MzAsIDEzMjkzNCwgMTMyOTM4LCAxMzI5NDIsIDEzMjk0NiwgMTMyOTUwLCAxMzI5NTQsIDEzMjk1OCwgMTMyOTYyLCAKKyAgICAxMzI5NjYsIDEzMjk3MCwgMTMyOTc0LCAxMzI5NzgsIDEzMjk4MiwgMTMyOTg2LCAxMzI5OTAsIDEzMjk5NCwgMTMyOTk4LCAKKyAgICAxMzMwMDIsIDEzMzAwNiwgMTMzMDEwLCAxMzMwMTQsIDEzMzAxOCwgMTMzMDIyLCAxMzMwMjYsIDEzMzAzMCwgMTMzMDM0LCAKKyAgICAxMzMwMzgsIDEzMzA0MiwgMTMzMDQ2LCAxMzMwNTAsIDEzMzA1NCwgMTMzMDU4LCAxMzMwNjIsIDEzMzA2NiwgMTMzMDcwLCAKKyAgICAxMzMwNzQsIDEzMzA3OCwgMTMzMDgyLCAxMzMwODYsIDEzMzA5MCwgMTMzMDk0LCAxMzMwOTgsIDEzMzEwMiwgMTMzMTA2LCAKKyAgICAxMzMxMTAsIDEzMzExNCwgMTMzMTE4LCAxMzMxMjIsIDEzMzEyNiwgMTMzMTMwLCAxMzMxMzQsIDEzMzEzOCwgMTMzMTQyLCAKKyAgICAxMzMxNDYsIDEzMzE1MCwgMTMzMTU0LCAxMzMxNTgsIDEzMzE2MiwgMTMzMTY2LCAxMzMxNzAsIDEzMzE3NCwgMTMzMTc4LCAKKyAgICAxMzMxODIsIDEzMzE4NiwgMTMzMTkwLCAxMzMxOTQsIDEzMzE5OCwgMTMzMjAyLCAxMzMyMDYsIDEzMzIxMCwgMTMzMjE0LCAKKyAgICAxMzMyMTgsIDEzMzIyMiwgMTMzMjI2LCAxMzMyMzAsIDEzMzIzNCwgMTMzMjM4LCAxMzMyNDIsIDEzMzI0NiwgMTMzMjUwLCAKKyAgICAxMzMyNTQsIDEzMzI1OCwgMTMzMjYyLCAxMzMyNjYsIDEzMzI3MCwgMTMzMjc0LCAxMzMyNzgsIDEzMzI4MiwgMTMzMjg2LCAKKyAgICAxMzMyOTAsIDEzMzI5NCwgMTMzMjk4LCAxMzMzMDIsIDEzMzMwNiwgMTMzMzEwLCAxMzMzMTQsIDEzMzMxOCwgMTMzMzIyLCAKKyAgICAxMzMzMjYsIDEzMzMzMCwgMTMzMzM0LCAxMzMzMzgsIDEzMzM0MiwgMTMzMzQ2LCAxMzMzNTAsIDEzMzM1NCwgMTMzMzU4LCAKKyAgICAxMzMzNjIsIDEzMzM2NiwgMTMzMzcwLCAxMzMzNzQsIDEzMzM3OCwgMTMzMzgyLCAxMzMzODYsIDEzMzM5MCwgMTMzMzk0LCAKKyAgICAxMzMzOTgsIDEzMzQwMiwgMTMzNDA2LCAxMzM0MTAsIDEzMzQxNCwgMTMzNDE4LCAxMzM0MjIsIDEzMzQyNiwgMTMzNDMwLCAKKyAgICAxMzM0MzQsIDEzMzQzOCwgMTMzNDQyLCAxMzM0NDYsIDEzMzQ1MCwgMTMzNDU0LCAxMzM0NTgsIDEzMzQ2MiwgMTMzNDY2LCAKKyAgICAxMzM0NzAsIDEzMzQ3NCwgMTMzNDc4LCAxMzM0ODIsIDEzMzQ4NiwgMTMzNDkwLCAxMzM0OTQsIDEzMzQ5OCwgMTMzNTAyLCAKKyAgICAxMzM1MDYsIDEzMzUxMCwgMTMzNTE0LCAxMzM1MTgsIDEzMzUyMiwgMTMzNTI2LCAxMzM1MzAsIDEzMzUzNCwgMTMzNTM4LCAKKyAgICAxMzM1NDIsIDEzMzU0NiwgMTMzNTUwLCAxMzM1NTQsIDEzMzU1OCwgMTMzNTYyLCAxMzM1NjYsIDEzMzU3MCwgMTMzNTc0LCAKKyAgICAxMzM1NzgsIDEzMzU4MiwgMTMzNTg2LCAxMzM1OTAsIDEzMzU5NCwgMTMzNTk4LCAxMzM2MDIsIDEzMzYwNiwgMTMzNjEwLCAKKyAgICAxMzM2MTQsIDEzMzYxOSwgMTMzNjI0LCAxMzM2MjksIDEzMzYzMywgMTMzNjM5LCAxMzM2NDYsIDEzMzY1MywgMTMzNjYwLCAKKyAgICAxMzM2NjcsIDEzMzY3NCwgMTMzNjgxLCAxMzM2ODgsIDEzMzY5NSwgMTMzNzAyLCAxMzM3MDksIDEzMzcxNiwgMTMzNzIzLCAKKyAgICAxMzM3MzAsIDEzMzczNiwgMTMzNzQzLCAxMzM3NTAsIDEzMzc1NiwgMTMzNzYzLCAxMzM3NzAsIDEzMzc3NywgMTMzNzg0LCAKKyAgICAxMzM3OTEsIDEzMzc5OCwgMTMzODA1LCAxMzM4MTIsIDEzMzgxOSwgMTMzODI2LCAxMzM4MzMsIDEzMzg0MCwgMTMzODQ3LCAKKyAgICAxMzM4NTMsIDEzMzg1OSwgMTMzODY2LCAxMzM4NzMsIDEzMzg4MiwgMTMzODkxLCAxMzM5MDAsIDEzMzkwOSwgMTMzOTE0LCAKKyAgICAxMzM5MTksIDEzMzkyNSwgMTMzOTMxLCAxMzM5MzcsIDEzMzk0MywgMTMzOTQ5LCAxMzM5NTUsIDEzMzk2MSwgMTMzOTY3LCAKKyAgICAxMzM5NzMsIDEzMzk3OSwgMTMzOTg1LCAxMzM5OTEsIDEzMzk5NiwgMTM0MDAyLCAxMzQwMTIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogfTsKIAogLyogbmFtZS0+Y29kZSBkaWN0aW9uYXJ5ICovCiBzdGF0aWMgdW5zaWduZWQgaW50IGNvZGVfaGFzaFtdID0gewogICAgIDc0MjI0LCA0ODUxLCAwLCA3ODE1NiwgNzg0OTksIDEyODY4NSwgNzkyOSwgMCwgMTk0NjgyLCAxMjc3NjYsIDc4NTAwLCAKLSAgICA2NjQ4MCwgMCwgNDI4MzMsIDc0NTI5LCAxMjA2NCwgMCwgNTk2LCAwLCAxMjgxMDMsIDEzMTkyLCA4NjUxLCAwLCAwLCAKKyAgICA2NjQ4MCwgMCwgNDI4MzMsIDc0NTI5LCAxMjA2NCwgMCwgNTk2LCA5ODM4MTIsIDY5ODUwLCAxMzE5MiwgODY1MSwgMCwgMCwgCiAgICAgMTIwMjE4LCAxMjk5NSwgNjQ4NjUsIDEzNzMsIDAsIDAsIDU4MTYsIDExOTA2NywgNjQ4MTAsIDQyMzEsIDY4MjUsIDQyODk3LCAKICAgICA0MjMzLCA0MjM0LCA0MjMyLCA5MTc4MzYsIDc0NDE1LCAxMjAyMTAsIDYzODQsIDkxNzg0MCwgNzgxMDgsIDg4NTEsIDAsIAotICAgIDEyODU1MywgMCwgNDE2MDEsIDg4NzQsIDAsIDc3NDgsIDAsIDAsIDAsIDEyNzkzOSwgNDE2MDMsIDk3ODQsIDAsIDkxODgsIAotICAgIDQxNjAwLCAwLCAxMjA2MTgsIDEyODM0MywgMTQ1NywgMzUzNSwgMCwgMCwgMCwgMCwgNjUyNDAsIDExOTUxLCAwLCAzNDA0LCAKLSAgICAwLCAwLCAwLCAxNzU5LCAwLCA0MTA3NiwgNjgzODMsIDEyMDU3MiwgMTE5MjA1LCA2NjU3NywgMCwgMTI3NzY0LCA2NTg1OSwgCi0gICAgMCwgNzQwNCwgMCwgMCwgMCwgMCwgNjU5MDgsIDk4MzQsIDMwNTUsIDk4NTIsIDAsIDY1Mjg4LCAwLCAxMTM5OCwgMCwgCi0gICAgOTI0MTcsIDExOTI1NSwgMCwgMCwgNjAzLCA3NDM5OCwgNDM1NDgsIDAsIDAsIDkxNzgyNCwgMzM1MCwgMTIwODE3LCAKLSAgICA2NDMxOCwgOTE3ODI4LCAxMjcwODksIDMzOTAsIDc0NDgzLCA0MzI2NSwgMTIwNTk5LCA5MTc4MzAsIDc4NTczLCAwLCAKLSAgICAxOTE5LCAzNDAwLCAxMjA2NTEsIDEyNzk0NCwgMTE2NDcsIDkxNzU0MCwgNjY0NDYsIDY0MTQxLCA4NTYyLCAyMTIxLCAKLSAgICA2NDEzOCwgNDA0MywgODcxMiwgNjQxMzQsIDY0MTMzLCAxMTI5NywgMCwgMCwgMTE5NjYsIDY0MTI4LCAxMjg1ODcsIDAsIDAsIAotICAgIDY0MTMyLCAxMDg2NywgNjQxMzAsIDY0MTI5LCAwLCA0MzM3NCwgOTc3OSwgMjc2NCwgNjYwMDIsIDEwMTY3LCA5NDcxLCAwLCAKLSAgICA2NjAyMSwgMCwgMCwgNTQ1NywgNTQ0MCwgODg1NywgMTI4NzcxLCA2NTI4MiwgMjg0MywgNTM1NSwgMTI3OTI4LCAwLCAwLCAKLSAgICA1MTk0LCAxMTY1NywgNDM5ODQsIDEyODI5MiwgMCwgMCwgMCwgMCwgMTI3MDI3LCAxMDcxNywgNjQ1NzAsIDU2MzAsIAotICAgIDc0MzUwLCA2NDE0MywgMTA2ODIsIDAsIDEwNjAyLCA4MDAsIDQyNDk5LCA2NjE4NiwgMCwgMCwgNjQ5MzAsIDExNjMxLCAKLSAgICA2NDE0NiwgNjQxNDUsIDY0MTQ0LCA3NjIsIDEzMTcyLCAxMTg4NTksIDE5NDY2MSwgNjQ0NjgsIDEwOTA2LCAxMzUzLCAKLSAgICA2OTYwLCAwLCAwLCA1ODI4LCA4NzI0LCA5MTc4MDYsIDg5MzMsIDE2MDEsIDQyMjQ0LCA4NTgsIDcwODAsIDY0MTA5LCAKLSAgICA2NDEwOCwgODA5MCwgMCwgNzQ0MDEsIDkxNzgxMSwgNTg3LCAwLCAxMjgxMzEsIDAsIDAsIDAsIDc4MjE0LCAyNzUwLCAKLSAgICA3NDIxOCwgNTU2LCA2NDE1OCwgNjQxNTcsIDAsIDEyMjEzLCAxOTQ2NzgsIDI3NjAsIDAsIDAsIDAsIDE5NDc5NCwgNjQxNTYsIAotICAgIDY0MTU1LCA0MjQ5NiwgMCwgNjQxNTEsIDY0MTUwLCAxMjY3OSwgMTAwNTMsIDEwNDIxLCAxMTA5MywgNjQxNTMsIDY0MTUyLCAKLSAgICAwLCAwLCA0ODM5LCAwLCAwLCAxODc0LCAxMTkwMTYsIDAsIDY1NzcsIDY0MTI1LCA2NDEyNCwgNjQxMjMsIDAsIDEyNzUzMSwgCi0gICAgOTI1MzQsIDcwMDcsIDc1OTAsIDY1NDQzLCA5MDM2LCA5MjU1MCwgNjQxMjIsIDc0NDIyLCA2NjYwOSwgMCwgNjQxMTcsIAotICAgIDY0MTE2LCA2Mjg3LCA2NDExNCwgMjcyNSwgNjQxMjAsIDY0MTE5LCA0Mzk4MSwgNDIxMjgsIDEyNzg0MiwgMTE3NywgCi0gICAgNjU2MDEsIDEyMzIyLCA2NDEwNiwgNjk2NDAsIDEyNzMwNiwgNjQxMDIsIDc4NTksIDE5NDUsIDY0MDk5LCAwLCAxMDQ1MywgCi0gICAgNjQxMDQsIDcxODgsIDc5OTcsIDAsIDczODksIDAsIDg3MDUsIDY0MDk3LCA2NDA5NiwgOTU3MSwgNTI4LCAxMjg2NzEsIAotICAgIDQ0MDE3LCAxMTQyOSwgMCwgMCwgMCwgOTE3OTkwLCA3Mzg0MSwgMCwgMCwgOTA1NiwgNjQzMTMsIDYxODgsIDEyMDAxOSwgCi0gICAgNjE1NSwgNjQwNjgsIDE4MjMsIDY0MDY2LCA2NDA2NSwgNjQwNzIsIDY0MDcxLCA2MywgNzIzMywgOTIyMTIsIDAsIDQxOTA0LCAKLSAgICA2NjM5LCA2NDA2NCwgMCwgMTI4MzQ0LCAwLCAxMTc2LCAxMTg5NTksIDEyNzkzMCwgODE2MiwgMTI4NjY3LCAwLCAwLCAKLSAgICAxMjA1MTksIDY2Mzc2LCA2NjI0MiwgMTE0MTUsIDQzMzMsIDk4NTUsIDY0MTEyLCA2NDY0MiwgMCwgNTM4OCwgMCwgMCwgMCwgCi0gICAgNzcxNCwgNjYyMjIsIDAsIDc3NjgsIDAsIDQxOTksIDY0NzA4LCAwLCAwLCAwLCA4NzA4LCA5NTYwLCA2NDA3NywgNjQwNzYsIAotICAgIDg5OTYsIDQ5OTIsIDQ0NzEsIDQyNjIyLCA2NDA3OSwgNjQwNzgsIDkyMTc5LCAwLCAwLCAwLCA2NDYxNSwgNDE5MTUsIDAsIAotICAgIDEyMDc1LCA5MjIxMSwgMCwgNTE3NCwgMCwgMCwgMTI3NTU3LCAzMTIzLCAwLCAxMjY4NSwgMTI3OTA0LCA4NDA4LCA2NDcwNCwgCi0gICAgMCwgMCwgOTIyMywgMCwgNDE2MTYsIDAsIDczNzk3LCAwLCAxMTE2LCAxMjgyMDQsIDQzMDQ5LCA3MTM2LCA0MzA1MCwgCi0gICAgODU0OCwgMTIwNDg1LCAwLCAxMTkwNjEsIDkxNzk5OSwgMCwgMTMxMTUsIDQzNjc1LCA2NDA5MSwgOTMyMiwgMCwgMTIwNTk1LCAKLSAgICA2NDA5NSwgNjQwOTQsIDgxMTEsIDY2MjQ3LCA0MjMzMiwgNjQwODksIDY0MDg4LCA2MTk5LCAwLCAwLCAxMTQzNCwgNjQwODMsIAotICAgIDY0MDgyLCAxMTMyOSwgNzczNywgNjQwODcsIDY0MDg2LCA2NDA4NSwgNjQwODQsIDE5NDgxNywgOTkyNywgNDEzMzUsIAotICAgIDQxMTgsIDE3OTcsIDAsIDQxMzM0LCAwLCA0NiwgNDM0NDgsIDEyNzg4MSwgMjk4LCAwLCAxMjgxMTQsIDAsIDQyNjI3LCAwLCAKLSAgICAzMiwgNjE4NywgMTE5MDUyLCAxMTQ5NSwgMTE0NTksIDM2NjUsIDAsIDQyODcxLCAwLCAxOTkyMywgNzQzMzUsIDAsIAotICAgIDEyNzE5MiwgNjYyMzksIDQyMjY0LCA2NDQwMywgNDQxMiwgNzI0MCwgOTI0OTUsIDAsIDAsIDY1NzU4LCAxMjc1MCwgNDE4MSwgCi0gICAgODU0NCwgMCwgMTIwMTk5LCA5MTc4OTcsIDEyMDE5OCwgNjk4MDksIDYxODEsIDY1MDE0LCAwLCAwLCAwLCAzNjM5LCAKLSAgICAxMTk1ODgsIDAsIDAsIDExODkwNCwgMTAwNzMsIDEyMDIwNiwgMTI4ODYyLCAxMjcxODYsIDY4NDA5LCA0Mjg0NCwgNzQ5OCwgCi0gICAgMTA5OCwgOTI1NjUsIDEyMDIwNSwgMCwgMCwgMTAyMDcsIDg3ODksIDAsIDAsIDAsIDAsIDkyMzQsIDAsIDYxODIsIDAsIAotICAgIDY1MDU4LCAwLCAwLCAwLCAwLCA1NDcxLCA5NDYxLCA1NTczLCAxMTg5MzYsIDU0NzMsIDQ0LCAwLCA2NjI0NCwgMTE4OTA3LCAKLSAgICAwLCA2NjIzOCwgMTI4NDQsIDAsIDE2MjIsIDc3NjcsIDE5MDAsIDQxMzM5LCAxMTQ1OCwgMCwgMCwgNjU4MSwgNTU3NiwgMCwgCi0gICAgNjQ0MDUsIDQxMzM3LCAwLCA0MTYzMSwgODk0NywgNjgzOTAsIDEyNzg0NCwgNDE2OTQsIDAsIDAsIDc5MDgsIDAsIDEwNDA4LCAKLSAgICA2NTc5LCAwLCA2NDYxOCwgMCwgMTIwMTQ3LCAyMTM4LCA2NTgzLCA3NzYxLCAxMjcwMTAsIDEyMDUwNCwgMTk0ODI4LCAwLCAKLSAgICA1MDU4LCA0MTAxMCwgOTk5MiwgMTI4Mjk5LCA1MDU3LCAwLCAwLCA3NDUzOCwgNTA1NCwgMTE4OTUxLCAxOTQ5NzEsIAotICAgIDc4NjA2LCAwLCAxNDM3LCA0MTYxNywgNjU4LCAzNDk3LCAxMjg1MDksIDc0ODYsIDUwNjEsIDUwNjAsIDQyMzUsIDAsIDAsIAotICAgIDAsIDEyMTEzLCA0MjM2LCA0NzI3LCAwLCAwLCA3NjkzLCAxMDc0OSwgMCwgNzQ4OCwgNTc3MywgOTc4LCAxMjgxMzQsIDAsIAotICAgIDQxNjE5LCAxMDIzOSwgNjg2MTEsIDAsIDY2MjA5LCAwLCAxMjg3MDAsIDk3NDgsIDAsIDEyNzUyNCwgMCwgMCwgMCwgMCwgCi0gICAgMTk1MDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MzQxLCAxMTk1OTYsIDIzNzksIDExMzI1LCAwLCA2NDY2OCwgNjc4NTQsIAotICAgIDgxMjUsIDEyMDU0NSwgNjc0MywgMTE5MTc1LCA5MTc5NDAsIDIzNjksIDAsIDAsIDAsIDExOTIzNSwgNzQwOTIsIDczOTM2LCAKLSAgICA3MDA4LCA0MzY2MCwgMCwgMCwgMCwgMjM2NywgMTI3ODI3LCAwLCAyNjQsIDIzNzUsIDgwNjAsIDYxOTQsIDExOTg1OCwgCi0gICAgMTg0NCwgMTE5MDg0LCAwLCA2MDE5LCAwLCAwLCA2OTYxLCAwLCAxMTg4MzksIDAsIDg4MDAsIDAsIDQyODYyLCA0NDYzLCAKLSAgICA2NTU4MSwgNjE5MiwgMTk0Njc2LCA0Mjc3MSwgMCwgOTIzMzMsIDcyNSwgNjUwNDIsIDExODc5NywgMTIwODAwLCAwLCAKLSAgICAxMjg5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3MjYxLCAxMjA3MDcsIDAsIDAsIDUwNzQsIDUwNzMsIDEyODc5MCwgODk4MywgCi0gICAgMTE4OTgxLCA3NDQ5MywgMCwgNTA3MiwgMTI4MDcxLCA2MTk4LCAxMTYxNCwgMCwgMTk2LCAwLCAwLCAwLCA0OTI5LCAKLSAgICAxMjAzNDIsIDAsIDAsIDAsIDAsIDQyODQ3LCAwLCAwLCAwLCA0OTM0LCAwLCA0MTMyMywgOTc1OCwgMCwgOTIyODksIAotICAgIDEyNzkxNywgNDI1ODQsIDAsIDQzMjksIDQxMzIxLCA0OTc5LCAzMDQ4LCA3NzUyLCA0MTMyMCwgMCwgNzQ0MTgsIDEyODE5LCAKLSAgICAwLCA1MDcxLCAwLCAzNjQyLCAwLCA1MDcwLCAxMDA0MiwgMTE4ODM1LCAzOTg3LCA1MDY4LCAwLCA4OTA5LCA3ODY1MCwgCi0gICAgNzg2NDksIDAsIDEwNjM2LCA3Mzk4MSwgMTE4MDYsIDQzMTY3LCA0NTMxLCAxMjQ1LCA5MTA1LCA2NjQ2MywgNDkyMSwgCi0gICAgMTIwMjE5LCA0OTI2LCA2NTU0NCwgNzM4ODQsIDE5NDYxOSwgMCwgMCwgNjQ3MDksIDAsIDE5NDYyMCwgNzg4ODAsIDQ5MjIsIAotICAgIDMyNSwgOTkyLCAxMTk1NjgsIDQ5MjUsIDAsIDAsIDk1MjYsIDQ5MjAsIDAsIDk0OCwgMCwgMTIwMjA4LCA0OTMwLCAwLCAKLSAgICA5MjE3NSwgMTIwMjc1LCA0OTMzLCAwLCAwLCAxMTg5ODUsIDQ5MjgsIDAsIDAsIDc0NzcwLCAxMjAxOTQsIDAsIDcyMiwgCi0gICAgMTk0OTM0LCAxOTkwOCwgMTI2MzcsIDEyNzQ4NSwgMTE5ODU1LCA4NzUzLCAxNTA5LCAwLCA1NDY4LCA5NTExLCAxMjc0NzQsIAotICAgIDEyNzQ3NywgMTY3MiwgNjIwNSwgMTA4NjQsIDc0NTg2LCAxMjc0ODAsIDkyMzEwLCAxMjc0NjYsIDc4NTU1LCAxMjc0NjgsIAotICAgIDczODYzLCAxMjc0NzAsIDEyNzQ3MywgNDE2MDcsIDEyMDExNSwgMTY3OSwgMTIwMTE2LCAxMjAxODAsIDEyMDExMywgCi0gICAgMTI3NDYyLCA3MDA1LCA0MTYwOSwgOTU4MCwgMCwgNDAxLCAwLCA0Mzc3OSwgNjk2OCwgNTc2MSwgMzQyLCA4NTUzLCAwLCAKLSAgICA4MTQzLCAxMjcxMTUsIDExOTgzLCA5MjI0OSwgNjI0LCA3NDUwOCwgNDA1NywgNDM3ODgsIDUwNzgsIDc0MjU4LCAxMjQ3OCwgCi0gICAgMCwgNTA3NiwgMCwgMTk0NjA5LCAwLCAxMjAwOTcsIDY4NSwgOTAyNSwgMTUyNCwgMTI2MTgsIDAsIDU1MzksIDAsIDkyNTIzLCAKLSAgICAxMjAxMDIsIDcxMzgsIDEyMDU1MiwgMCwgMTk0NjExLCA3ODc1MiwgMCwgMTI1MjAsIDgwNTgsIDk3MzIsIDAsIDUwODAsIAotICAgIDY0Nzc1LCA1MDM2LCA1MDM1LCAxMjA1OTAsIDQyNjA0LCAwLCAwLCA4MDc0LCAyNzUsIDEzMjkxLCAxOTA3LCA3ODgzOCwgCisgICAgMTI4NTUzLCAwLCA0MTYwMSwgODg3NCwgOTgzNzc0LCA3NzQ4LCAwLCAwLCAwLCAxMjc5MzksIDQxNjAzLCA5Nzg0LCAwLCAKKyAgICA5MTg4LCA0MTYwMCwgMCwgMTIwNjE4LCAxMjgzNDMsIDE0NTcsIDM1MzUsIDAsIDAsIDAsIDAsIDY1MjQwLCAxMTk1MSwgMCwgCisgICAgMzQwNCwgMCwgMCwgMCwgMTc1OSwgMCwgNDEwNzYsIDY4MzgzLCAxMjA1NzIsIDExOTIwNSwgNjY1NzcsIDk0MDE0LCAKKyAgICAxMjc3NjQsIDY1ODU5LCAwLCA3NDA0LCAwLCAwLCAwLCAwLCA2NTkwOCwgOTgzNCwgMzA1NSwgOTg1MiwgOTgzODUxLCAKKyAgICA2NTI4OCwgMCwgMTEzOTgsIDAsIDkyNDE3LCAxMTkyNTUsIDAsIDAsIDYwMywgNzQzOTgsIDQzNTQ4LCAwLCAwLCA5MTc4MjQsIAorICAgIDMzNTAsIDEyMDgxNywgNjQzMTgsIDkxNzgyOCwgMTI3MDg5LCAzMzkwLCA3NDQ4MywgNDMyNjUsIDEyMDU5OSwgOTE3ODMwLCAKKyAgICA3ODU3MywgMCwgMTkxOSwgMzQwMCwgMTIwNjUxLCAxMjc5NDQsIDExNjQ3LCA5MTc1NDAsIDY2NDQ2LCA2NDE0MSwgODU2MiwgCisgICAgMjEyMSwgNjQxMzgsIDQwNDMsIDg3MTIsIDY0MTM0LCA2NDEzMywgMTEyOTcsIDk4MzY3OSwgOTgzMTUyLCAxMTk2NiwgCisgICAgNjQxMjgsIDEyODU4NywgMCwgMCwgNjQxMzIsIDEwODY3LCA2NDEzMCwgNjQxMjksIDk4MzgzNSwgNDMzNzQsIDk3NzksIAorICAgIDI3NjQsIDY2MDAyLCAxMDE2NywgOTQ3MSwgMCwgNjYwMjEsIDAsIDAsIDU0NTcsIDU0NDAsIDg4NTcsIDkzOTgxLCA2NTI4MiwgCisgICAgMjg0MywgNTM1NSwgMTI3OTI4LCA5ODM5NTYsIDAsIDUxOTQsIDExNjU3LCA0Mzk4NCwgMTI4MjkyLCAwLCA5ODM2MjAsIDAsIAorICAgIDAsIDEyNzAyNywgMTA3MTcsIDY0NTcwLCA1NjMwLCA1Mzk2LCA2NDE0MywgMTA2ODIsIDAsIDEwNjAyLCA4MDAsIDQyNDk5LCAKKyAgICA2NjE4NiwgMCwgMCwgNjQ5MzAsIDExNjMxLCA2NDE0NiwgNjQxNDUsIDY0MTQ0LCA3NjIsIDEzMTcyLCAxMTg4NTksIAorICAgIDE5NDY2MSwgNjQ0NjgsIDEwOTA2LCAxMzUzLCA2OTYwLCAwLCAwLCA1ODI4LCA4NzI0LCA5MTc4MDYsIDg5MzMsIDE2MDEsIAorICAgIDQyMjQ0LCA4NTgsIDcwODAsIDY0MTA5LCA2NDEwOCwgODA5MCwgMCwgNzQ0MDEsIDkxNzgxMSwgNTg3LCAwLCAxMjgxMzEsIAorICAgIDAsIDAsIDAsIDc4MjE0LCAyNzUwLCA3NDIxOCwgNTU2LCA2NDE1OCwgNjQxNTcsIDk4Mzk0MCwgMTIyMTMsIDE5NDY3OCwgCisgICAgMjc2MCwgMCwgMCwgMCwgMTk0Nzk0LCA2NDE1NiwgNjQxNTUsIDQyNDk2LCAwLCA2NDE1MSwgNjQxNTAsIDEyNjc5LCAKKyAgICAxMDA1MywgMTA0MjEsIDExMDkzLCA2NDE1MywgNjQxNTIsIDAsIDAsIDQ4MzksIDAsIDAsIDE4NzQsIDExOTAxNiwgMCwgCisgICAgNjU3NywgNjQxMjUsIDY0MTI0LCA2NDEyMywgMCwgMTI3NTMxLCA5MjUzNCwgNzAwNywgNzU5MCwgNjU0NDMsIDkwMzYsIAorICAgIDkyNTUwLCA2NDEyMiwgNzQ0MjIsIDY2NjA5LCAwLCA2NDExNywgNjQxMTYsIDYyODcsIDY0MTE0LCAyNzI1LCA2NDEyMCwgCisgICAgNjQxMTksIDQzOTgxLCA0MjEyOCwgMTI3ODQyLCAxMTc3LCA2NTYwMSwgMTIzMjIsIDY0MTA2LCA2OTY0MCwgMTI3MzA2LCAKKyAgICA2NDEwMiwgNzg1OSwgMTk0NSwgNjQwOTksIDAsIDEwNDUzLCA2NDEwNCwgNzE4OCwgNzk5NywgMCwgNzM4OSwgOTgzMTYxLCAKKyAgICA4NzA1LCA2NDA5NywgNjQwOTYsIDk1NzEsIDUyOCwgMTI4NjcxLCA0NDAxNywgMTE0MjksIDcxMzQ3LCAwLCA5ODMwNzcsIAorICAgIDkxNzk5MCwgNzM4NDEsIDAsIDAsIDkwNTYsIDY0MzEzLCA2MTg4LCAxMjAwMTksIDYxNTUsIDY0MDY4LCAxODIzLCA2NDA2NiwgCisgICAgNjQwNjUsIDY0MDcyLCA2NDA3MSwgNjMsIDcyMzMsIDkyMjEyLCAwLCA0MTkwNCwgNjYzOSwgNjQwNjQsIDk4Mzc2NiwgCisgICAgMTI4MzQ0LCAwLCAxMTc2LCAxMTg5NTksIDEyNzkzMCwgODE2MiwgMTI4NjY3LCA5ODM4MjIsIDAsIDEyMDUxOSwgNjYzNzYsIAorICAgIDY2MjQyLCAxMTQxNSwgNDMzMywgOTg1NSwgNjQxMTIsIDY0NjQyLCAwLCA1Mzg4LCAwLCAwLCAwLCA3NzE0LCA2NjIyMiwgCisgICAgNjk5MDIsIDc3NjgsIDAsIDQxOTksIDY0NzA4LCA5ODM0MTMsIDAsIDAsIDg3MDgsIDk1NjAsIDY0MDc3LCA2NDA3NiwgCisgICAgODk5NiwgNDk5MiwgNDQ3MSwgNDI2MjIsIDY0MDc5LCA2NDA3OCwgOTIxNzksIDAsIDEyNjU3MCwgMCwgNjQ2MTUsIDQxOTE1LCAKKyAgICAwLCAxMjA3NSwgNzAwNjIsIDAsIDUxNzQsIDk4MzIxNSwgMCwgMTI3NTU3LCAzMTIzLCAwLCAxMjY4NSwgMTI3OTA0LCAKKyAgICA4NDA4LCA2NDcwNCwgMCwgMCwgOTIyMywgMCwgNDE2MTYsIDY3OTk5LCA3Mzc5NywgMCwgMTExNiwgMTI4MjA0LCA0MzA0OSwgCisgICAgNzEzNiwgNDMwNTAsIDg1NDgsIDEyMDQ4NSwgMCwgMTE5MDYxLCA5MTc5OTksIDAsIDEzMTE1LCA0MzY3NSwgNjQwOTEsIAorICAgIDkzMjIsIDAsIDEyMDU5NSwgNjQwOTUsIDY0MDk0LCA4MTExLCA2NjI0NywgNDIzMzIsIDY0MDg5LCA2NDA4OCwgNjE5OSwgMCwgCisgICAgMCwgMTE0MzQsIDY0MDgzLCA2NDA4MiwgMTEzMjksIDc3MzcsIDY0MDg3LCA2NDA4NiwgNjQwODUsIDY0MDg0LCAxOTQ4MTcsIAorICAgIDk5MjcsIDQxMzM1LCA0MTE4LCAxNzk3LCAwLCA0MTMzNCwgMCwgNDYsIDQzNDQ4LCAxMjc4ODEsIDI5OCwgMCwgMTI4MTE0LCAKKyAgICAwLCA0MjYyNywgMCwgMzIsIDYxODcsIDExOTA1MiwgMTE0OTUsIDExNDU5LCAzNjY1LCA5ODM2MDAsIDQyODcxLCAwLCAKKyAgICAxOTkyMywgNzQzMzUsIDAsIDEyNzE5MiwgNjYyMzksIDQyMjY0LCA2NDQwMywgNDQxMiwgNzI0MCwgOTI0OTUsIDAsIAorICAgIDk4MzQ1OCwgNjU3NTgsIDEyNzUwLCA0MTgxLCA4NTQ0LCAwLCAxMjAxOTksIDkxNzg5NywgMTIwMTk4LCA2OTgwOSwgNjE4MSwgCisgICAgNjUwMTQsIDAsIDAsIDk4MzE5NiwgMzYzOSwgMTE5NTg4LCAwLCAwLCAxMTg5MDQsIDEwMDczLCAxMjAyMDYsIDEyODg2MiwgCisgICAgMTI3MTg2LCA2ODQwOSwgNDI4NDQsIDc0OTgsIDEwOTgsIDkyNTY1LCAxMjAyMDUsIDAsIDk4MzExOCwgMTAyMDcsIDg3ODksIAorICAgIDk4MzIyMywgMCwgMCwgOTgzNDY0LCA5MjM0LCAwLCA2MTgyLCA5ODM0NjYsIDY1MDU4LCAwLCA5ODM0NzAsIDk4MzQ2NywgMCwgCisgICAgNTQ3MSwgOTQ2MSwgNTU3MywgMTE4OTM2LCA1NDczLCA0NCwgMCwgNjYyNDQsIDk0MDcyLCAwLCA2NjIzOCwgMTI4NDQsIDAsIAorICAgIDE2MjIsIDc3NjcsIDE5MDAsIDQxMzM5LCAxMTQ1OCwgMCwgMCwgNjU4MSwgNTU3NiwgMCwgNjQ0MDUsIDQxMzM3LCAwLCAKKyAgICA0MTYzMSwgODk0NywgNjgzOTAsIDEyNzg0NCwgNDE2OTQsIDAsIDAsIDc5MDgsIDAsIDEwNDA4LCA2NTc5LCAwLCA2NDYxOCwgCisgICAgMCwgMTIwMTQ3LCAyMTM4LCA2NTgzLCA3NzYxLCAxMjcwMTAsIDEyMDUwNCwgMTk0ODI4LCAwLCA1MDU4LCA0MTAxMCwgCisgICAgOTk5MiwgMTI4Mjk5LCA1MDU3LCAwLCAwLCA3NDUzOCwgNTA1NCwgMTE4OTUxLCAxOTQ5NzEsIDc4NjA2LCAwLCAxNDM3LCAKKyAgICA0MTYxNywgNjU4LCAzNDk3LCAxMjg1MDksIDc0ODYsIDUwNjEsIDUwNjAsIDQyMzUsIDEyNzg3OCwgMCwgMTI4NTI5LCAKKyAgICAxMjExMywgNDIzNiwgNDcyNywgMCwgMCwgNzY5MywgMTA3NDksIDAsIDc0ODgsIDU3NzMsIDk3OCwgMTI4MTM0LCAwLCAKKyAgICA0MTYxOSwgMTAyMzksIDY4NjExLCAwLCA2NjIwOSwgMCwgMTI4NzAwLCA5NzQ4LCA5ODM5NDcsIDEyNzUyNCwgMCwgMCwgMCwgCisgICAgMCwgMTk1MDgzLCAwLCA5ODM4MzQsIDAsIDAsIDAsIDAsIDAsIDkzNDEsIDExOTU5NiwgMjM3OSwgMTEzMjUsIDAsIDY0NjY4LCAKKyAgICA2Nzg1NCwgODEyNSwgMTIwNTQ1LCA2NzQzLCAxMTkxNzUsIDkxNzk0MCwgMjM2OSwgMCwgOTgzOTYzLCA5ODM5NjQsIAorICAgIDExOTIzNSwgNzQwOTIsIDczOTM2LCA3MDA4LCA0MzY2MCwgMCwgMCwgMCwgMjM2NywgMTI3ODI3LCA5ODM4NDgsIDI2NCwgCisgICAgMjM3NSwgODA2MCwgNjE5NCwgMTE5ODU4LCAxODQ0LCAxMTkwODQsIDAsIDYwMTksIDAsIDAsIDY5NjEsIDAsIDExODgzOSwgCisgICAgMCwgODgwMCwgMCwgNDI4NjIsIDQ0NjMsIDY1NTgxLCA2MTkyLCAxOTQ2NzYsIDQyNzcxLCAwLCA5MjMzMywgNzI1LCAKKyAgICA2NTA0MiwgMTE4Nzk3LCAxMjA4MDAsIDk4MzA0MCwgMTI4OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzI2MSwgMTIwNzA3LCAKKyAgICA5ODMxMjgsIDAsIDUwNzQsIDUwNzMsIDEyODc5MCwgODk4MywgMTE4OTgxLCA3NDQ5MywgOTgzNTYxLCA1MDcyLCA5Mzk3NywgCisgICAgNjE5OCwgMTE2MTQsIDAsIDE5NiwgMCwgMCwgMCwgNDkyOSwgMTIwMzQyLCAwLCAwLCAwLCAwLCA0Mjg0NywgMCwgMCwgMCwgCisgICAgNDkzNCwgMCwgNDEzMjMsIDk3NTgsIDAsIDkyMjg5LCAxMjc5MTcsIDQyNTg0LCAwLCA0MzI5LCA0MTMyMSwgNDk3OSwgCisgICAgMzA0OCwgNzc1MiwgNDEzMjAsIDk4MzA0MiwgNzQ0MTgsIDEyODE5LCAwLCA1MDcxLCAwLCAzNjQyLCAwLCA1MDcwLCAKKyAgICAxMDA0MiwgMTE4ODM1LCAzOTg3LCA1MDY4LCAwLCA4OTA5LCA3ODY1MCwgNzg2NDksIDY5OTE3LCAxMDYzNiwgNzM5ODEsIAorICAgIDExODA2LCA0MzE2NywgNDUzMSwgMTI0NSwgOTEwNSwgNjY0NjMsIDQ5MjEsIDEyMDIxOSwgNDkyNiwgNjU1NDQsIDczODg0LCAKKyAgICAxOTQ2MTksIDAsIDAsIDY0NzA5LCAwLCAxOTQ2MjAsIDc4ODgwLCA0OTIyLCAzMjUsIDk5MiwgMTE5NTY4LCA0OTI1LCAwLCAKKyAgICAwLCA5NTI2LCA0OTIwLCAwLCA5NDgsIDAsIDEyMDIwOCwgNDkzMCwgMCwgOTIxNzUsIDEyMDI3NSwgNDkzMywgMTIwMjExLCAKKyAgICAwLCAxMTg5ODUsIDQ5MjgsIDAsIDAsIDc0NzcwLCAxMjAxOTQsIDEyNjU0OCwgNzIyLCAxOTQ5MzQsIDE5OTA4LCAxMjYzNywgCisgICAgMTI3NDg1LCAxMTk4NTUsIDg3NTMsIDE1MDksIDAsIDU0NjgsIDk1MTEsIDEyNzQ3NCwgMTI3NDc3LCAxNjcyLCA2MjA1LCAKKyAgICAxMDg2NCwgNzQ1ODYsIDEyNzQ4MCwgNzAxMDMsIDEyNzQ2NiwgNzg1NTUsIDEyNzQ2OCwgNzM4NjMsIDEyNjU3NywgCisgICAgMTI2NTAzLCA0MTYwNywgMTIwMTE1LCAxNjc5LCAxMjAxMTYsIDEyMDE4MCwgMTIwMTEzLCAxMjc0NjIsIDcwMDUsIDQxNjA5LCAKKyAgICA5NTgwLCAwLCA0MDEsIDY5OTQ5LCA0Mzc3OSwgNjk2OCwgNTc2MSwgMzQyLCA4NTUzLCAwLCA4MTQzLCAxMjcxMTUsIAorICAgIDExOTgzLCA5MjI0OSwgNjI0LCA3NDUwOCwgNDA1NywgNDM3ODgsIDUwNzgsIDc0MjU4LCAxMjQ3OCwgMCwgNTA3NiwgMCwgCisgICAgMTk0NjA5LCAwLCAxMjAwOTcsIDY4NSwgOTAyNSwgMTUyNCwgMTI2MTgsIDAsIDU1MzksIDAsIDkyNTIzLCAxMjAxMDIsIAorICAgIDcxMzgsIDEyMDU1MiwgMCwgMTk0NjExLCA3ODc1MiwgMCwgMTI1MjAsIDgwNTgsIDk3MzIsIDAsIDUwODAsIDY0Nzc1LCAKKyAgICA1MDM2LCA1MDM1LCAxMjA1OTAsIDQyNjA0LCA5ODM2NDcsIDAsIDgwNzQsIDI3NSwgMTMyOTEsIDE5MDcsIDc4ODM4LCAKICAgICA0NDMyLCAxMjcyNzEsIDUwMzMsIDEyNzI3MywgMTI3MjcyLCA0ODM2LCAzODg4LCA3Mzc5MiwgMTA3MjksIDY0NTQ2LCAKICAgICAxMjcyNjIsIDQzNzA0LCAxMjcyNjQsIDEyNzI1MSwgNjc1ODgsIDExOTAwMCwgMTI3MjUyLCAxMjcyNTUsIDg4NTgsIDY0MDksIAogICAgIDEyNzI1NiwgMTIwMjUyLCAxMjgxMDAsIDAsIDAsIDY2MzIxLCAwLCAxMjgxNCwgMTI3MjQ4LCAzNDMyLCAxMDIxOCwgMCwgCi0gICAgNjA5NCwgNzY0MSwgNDI0NDUsIDAsIDkyNDg3LCA0MjQwNiwgMTY3NiwgNzQzMjAsIDE5NDYwNywgMCwgNTAzMCwgMCwgMCwgCi0gICAgMCwgNzM4NjksIDk2MjIsIDAsIDAsIDY3ODcsIDAsIDAsIDAsIDAsIDEwNTQ0LCAxMjkxOSwgMCwgOTIyMTgsIDAsIDAsIDAsIAotICAgIDEyMDc4OSwgMCwgOTQ3LCAxMTk4MzUsIDE5NDU4NiwgMTk0NTg1LCAxMDk2OSwgMTE5OTM1LCA3NjEzLCA5MjU2MiwgCi0gICAgMTE5OTM2LCA0Nzk1LCAxMTk5MzAsIDcwMTgsIDczNzYsIDEyMDE4MSwgMTIwMTkyLCAxMjAyNjgsIDAsIDQzNTY3LCAKLSAgICA3NDA1NiwgOTE3OTEwLCAxMTg5NjMsIDExOTkxOSwgNzIxNiwgNjUyMzIsIDcyMTcsIDI1MSwgNzIxOCwgNzg5NSwgNDM5NSwgCi0gICAgNDM1MzgsIDExOTkyNiwgMTE5OTI5LCAxMTk5MjgsIDcyMTMsIDExOTkyMiwgNzIxNCwgNzIxNSwgMCwgNzQxNDEsIDg4ODAsIAotICAgIDc2ODUsIDY2NDU5LCAxMjAxNzMsIDY1NTQwLCAxMTk2MTgsIDYyNSwgODE4NywgNDI4NjEsIDExMTMsIDcyMzYsIDc5MTUsIAotICAgIDM2MzAsIDEyMDE3NiwgODE3OSwgNzQyNjQsIDY3ODg2LCA5MzE2LCAxMDk4MCwgMjQ4OSwgNjU2MjQsIDgxNTAsIDEzNTksIAotICAgIDY3NjUyLCAxMjczMjksIDEyNzMzMCwgNzM3NTYsIDUwNDIsIDUwNDEsIDQyNzY5LCAxMjA4NCwgMTI3MzI0LCAxMjczMjEsIAotICAgIDkyMjc5LCAxMjczMTksIDEyNzMyMCwgMTI3MzE3LCAxMjczMTgsIDEyNzMxNSwgMTIyODMsIDE2MTYsIDM3OTUsIDAsIAotICAgIDg3OTUsIDY2MjQ1LCAwLCAwLCAwLCAxMTM4LCA3MzkwNSwgMTI2NzcsIDAsIDAsIDMyMzksIDEyNzMxMSwgMCwgMCwgODQzMSwgCi0gICAgMCwgNDIxNjQsIDAsIDExNzc4LCAxMjYyMCwgNjgyNiwgNzM3NzMsIDExOTA3MywgNTA0MCwgMCwgMCwgMCwgNzg0MjAsIDAsIAotICAgIDUwMzksIDAsIDc4NDE4LCAwLCA1MDM4LCAwLCAwLCAxMzE4NCwgNzQyOTMsIDAsIDY0NjQ4LCAwLCA5MzU5LCA3ODQxNiwgMCwgCi0gICAgMTI4NzcwLCA2NTE1NywgNjY2MiwgMCwgMCwgMzg2MywgNzM5MDksIDQ4MzUsIDU1MjY2LCA0MzQzMiwgMTI3ODIyLCA0MzA5LCAKLSAgICA3MTI3LCAxOTQ1NjksIDAsIDE5NDU2OCwgMTMwMSwgMCwgNDI1ODksIDU2OSwgMCwgNzM4MTMsIDcxMSwgNDM4OSwgNzEzMywgCi0gICAgMCwgNzM4ODAsIDExNjEwLCAxMTM2OCwgMCwgMTk0NTcwLCA0MTMzMSwgMTAwNiwgNzQyNDAsIDAsIDE1NTAsIDgyMDEsIAotICAgIDczNzM3LCA3NjI3LCA1NDk5LCA1MDMxLCA3NzkwOCwgNDI3MzgsIDY1Nzg0LCA3NzkwNywgNjUyNjcsIDM3NTgsIDAsIAotICAgIDY1NzgxLCA2NDczNCwgMCwgMjQ0MCwgNjU3ODAsIDc3OTEzLCA4NDQ5LCAwLCA1MDA4LCAwLCAyMTE4LCAwLCAxMjEyMSwgCi0gICAgODI1NSwgNTUxMiwgNzM4NzUsIDIxMjgsIDIxMzAsIDIxMzEsIDIxMjYsIDIxMzMsIDExMTksIDEyNzA2OCwgMjExNCwgCi0gICAgMjExNiwgMjQ1NSwgMCwgMjEyMiwgMjEyMywgMjEyNCwgMjEyNSwgMCwgODcxNCwgMCwgMjExMywgMCwgMjExNSwgMTI4MTc3LCAKLSAgICAxMjc5MDcsIDQzNzEzLCA1MDUyLCA2NjIyMCwgNTgyMSwgNjE4NiwgNjU3NzgsIDY1Nzc1LCA1MDUxLCA2NTc3MywgMTQyOSwgCi0gICAgNDI2NDcsIDUwNTAsIDMwMiwgMzg4LCA0MTExNSwgNzM1LCA2NjM3LCA1OTA3LCA2NTA4OCwgMCwgMTI3MjYsIDc0NTk0LCAKLSAgICA5MTE3LCAwLCAxMjAwMywgNTUxMywgNjY2NiwgNTA1MywgNzQyMzAsIDU1MTAsIDc4NDUxLCAwLCA3ODQ0NywgMjQ3MCwgCisgICAgNjA5NCwgNzY0MSwgNDI0NDUsIDAsIDkyNDg3LCA0MjQwNiwgMTY3NiwgNzQzMjAsIDE5NDYwNywgOTgzMTc3LCA1MDMwLCAwLCAKKyAgICAwLCAwLCA3Mzg2OSwgOTYyMiwgMCwgNjk5NDQsIDY3ODcsIDAsIDAsIDAsIDk4MzU4MywgMTA1NDQsIDEyOTE5LCAwLCAKKyAgICA5MjIxOCwgMCwgMCwgNjk5MDYsIDEyMDc4OSwgMCwgOTQ3LCAxMTk4MzUsIDE5NDU4NiwgMTk0NTg1LCAxMDk2OSwgCisgICAgMTE5OTM1LCA3NjEzLCA5MjU2MiwgMTE5OTM2LCA0Nzk1LCAxMTk5MzAsIDcwMTgsIDczNzYsIDEyMDE4MSwgMTIwMTkyLCAKKyAgICAxMjAyNjgsIDAsIDQzNTY3LCA3NDA1NiwgOTE3OTEwLCAxMTgzMywgMTE5OTE5LCA3MjE2LCA2NTIzMiwgNzIxNywgMjUxLCAKKyAgICA3MjE4LCA3ODk1LCA0Mzk1LCA0MzUzOCwgMTE5OTI2LCAxMTk5MjksIDExOTkyOCwgNzIxMywgMTE5OTIyLCA3MjE0LCAKKyAgICA3MjE1LCA5ODM4MjcsIDc0MTQxLCA4ODgwLCA3Njg1LCA2NjQ1OSwgMTIwMTczLCA2NTU0MCwgMTE5NjE4LCA2MjUsIDgxODcsIAorICAgIDQyODYxLCAxMTEzLCA3MjM2LCA3OTE1LCAzNjMwLCAxMjAxNzYsIDgxNzksIDc0MjY0LCA2Nzg4NiwgOTMxNiwgMTA5ODAsIAorICAgIDI0ODksIDY1NjI0LCA4MTUwLCAxMzU5LCA2NzY1MiwgMTI3MzI5LCAxMjczMzAsIDczNzU2LCA1MDQyLCA1MDQxLCA0Mjc2OSwgCisgICAgMTIwODQsIDEyNzMyNCwgMTI3MzIxLCA5MjI3OSwgMTI3MzE5LCAxMjczMjAsIDEyNzMxNywgMTI3MzE4LCAxMjczMTUsIAorICAgIDEyMjgzLCAxNjE2LCAzNzk1LCAwLCA4Nzk1LCA2NjI0NSwgMCwgMCwgMCwgMTEzOCwgNzM5MDUsIDEyNjc3LCAwLCAwLCAKKyAgICAzMjM5LCAxMjczMTEsIDAsIDAsIDg0MzEsIDAsIDQyMTY0LCAwLCAxMTc3OCwgMTI2MjAsIDY4MjYsIDczNzczLCAxMTkwNzMsIAorICAgIDUwNDAsIDAsIDAsIDk4MzQzNSwgNzg0MjAsIDAsIDUwMzksIDAsIDc4NDE4LCAwLCA1MDM4LCAwLCAwLCAxMzE4NCwgCisgICAgNzQyOTMsIDAsIDY0NjQ4LCAwLCA5MzU5LCA3ODQxNiwgMCwgMTI4NzcwLCA2NTE1NywgNjY2MiwgMCwgMCwgMzg2MywgCisgICAgNzM5MDksIDQ4MzUsIDU1MjY2LCA0MzQzMiwgMTI3ODIyLCA0MzA5LCA3MTI3LCAxOTQ1NjksIDAsIDE5NDU2OCwgMTMwMSwgCisgICAgMCwgNDI1ODksIDU2OSwgMCwgNzM4MTMsIDcxMSwgNDM4OSwgNzEzMywgMCwgNzM4ODAsIDExNjEwLCAxMTM2OCwgMCwgCisgICAgMTk0NTcwLCA0MTMzMSwgMTAwNiwgNzQyNDAsIDAsIDE1NTAsIDgyMDEsIDczNzM3LCA3NjI3LCA1NDk5LCA1MDMxLCAKKyAgICA3NzkwOCwgNDI3MzgsIDY1Nzg0LCA3NzkwNywgNjUyNjcsIDM3NTgsIDAsIDY1NzgxLCA2NDczNCwgNzAwNzMsIDI0NDAsIAorICAgIDY1NzgwLCA3NzkxMywgODQ0OSwgMCwgNTAwOCwgOTgzNTcyLCAyMTE4LCAwLCAxMjEyMSwgODI1NSwgNTUxMiwgNzM4NzUsIAorICAgIDIxMjgsIDIxMzAsIDIxMzEsIDIxMjYsIDIxMzMsIDExMTksIDEyNzA2OCwgMjExNCwgMjExNiwgMjQ1NSwgMCwgMjEyMiwgCisgICAgMjEyMywgMjEyNCwgMjEyNSwgMTI3NDg2LCA4NzE0LCA5ODM4MTEsIDIxMTMsIDAsIDIxMTUsIDEyODE3NywgMTI3OTA3LCAKKyAgICA0MzcxMywgNTA1MiwgNjYyMjAsIDU4MjEsIDYxODYsIDY1Nzc4LCA2NTc3NSwgNTA1MSwgNjU3NzMsIDE0MjksIDQyNjQ3LCAKKyAgICA1MDUwLCAzMDIsIDM4OCwgNDExMTUsIDczNSwgNjYzNywgNTkwNywgNjUwODgsIDAsIDEyNzI2LCA3NDU5NCwgOTExNywgCisgICAgOTgzMTgxLCAxMjAwMywgNTUxMywgNjY2NiwgNTA1MywgNzQyMzAsIDU1MTAsIDc4NDUxLCAwLCA3ODQ0NywgMjQ3MCwgCiAgICAgNzg0MzcsIDAsIDE5MjUsIDAsIDkyMjM3LCA3NDgwNywgMCwgNTA0OCwgNTA0NywgMCwgMCwgMCwgOTIzMTMsIDAsIDc0NDk3LCAKLSAgICA5MjM5NSwgODA4OSwgNjkyOSwgNjM5LCAwLCA2ODE3OSwgNjQ0NDIsIDAsIDkyMzQ4LCA0NTk5LCA0MTQwMiwgNjY3NCwgCi0gICAgNDMzOTcsIDQzMjk0LCAxNDc2LCA2NDgsIDAsIDY1ODE5LCAzMjMzLCAwLCA0MTc4MiwgNjk1MSwgMCwgMCwgMzUzMCwgCi0gICAgOTc1MCwgMTI4MzE3LCAwLCA2NjU2LCA5MjM2NywgMCwgNTA0NiwgODUxMiwgNjU4NTYsIDc0MjYxLCA4OTY3LCAwLCA1MDQ1LCAKLSAgICAwLCAxOTE2LCA3OTg2LCA1MDQ0LCAxMjA1NTYsIDkwMDYsIDEzMTI4LCA1MDQzLCAwLCA3ODUzLCA3NDA2OCwgNzQwMDQsIAotICAgIDk2NjksIDEyMzQxLCAxMjcwMywgODQwMiwgMCwgMTE5MDcwLCA5MTc2MDAsIDQxNzUwLCAzNTg2LCA2NDUwOCwgNDMxNDgsIAotICAgIDAsIDAsIDExOTYwNiwgMCwgMTMyOTYsIDUxNywgMCwgMTI4NTM0LCAxOTQ5NDYsIDQxNTI4LCAxMjMsIDY1NDU0LCAwLCAwLCAKLSAgICA3NDQ3OCwgMTA1MzEsIDc3ODQsIDQxNTI2LCAxMDgyOSwgNzM5OTEsIDgwNTcsIDExMjYsIDczODk1LCAwLCAxOTQ1OTEsIDAsIAotICAgIDM5MjUsIDQyNTEsIDgwNjksIDEwNTE3LCAxMjA0MzksIDQ4OSwgMCwgNDI1MCwgMTIwNDQxLCAxMjA0NTIsIDQzMTUxLCAwLCAKLSAgICAxOTQ4NTEsIDY2MjAwLCAwLCAwLCAwLCA3ODQyMywgMCwgMCwgODcxMSwgNjE4MywgMCwgMCwgMCwgMTIwNDQ4LCA3NjIzLCAKLSAgICAxMTg5MjUsIDE5NDg1MywgOTIzNSwgMTI3NjAsIDc0MTc2LCA2OTY2MiwgNjY0NDUsIDQzNTQwLCAxMDA2MiwgMzc0MywgCi0gICAgMTE1MTQsIDExMDc4LCAwLCAxMjEzNiwgMCwgMCwgMTIwNDM1LCAwLCA3NzI2LCAwLCAxOTkyMiwgMjY3LCAzMzkzLCAKLSAgICA0MjE5OCwgMTM3MSwgMTk0ODQ5LCA2OTIzMywgMjQ1OCwgMCwgNjIwMSwgMCwgNDEwNzQsIDQyNjYsIDEwNjUyLCA0MTYxMiwgCi0gICAgNDEwNzcsIDM0MDIsIDkwNTAsIDMzOTgsIDAsIDAsIDAsIDMzOTEsIDQxMDc1LCAyNDc2LCAwLCAxMjgwMTcsIDAsIDEwNjI1LCAKLSAgICAwLCAxMjc2NywgMTMwMTcsIDc4NzQzLCA2NDI2MSwgNjQ5MzQsIDEyNzUzNywgMTMwMTQsIDEzMDEzLCAwLCA2NjczLCAwLCAKLSAgICAwLCAwLCAxMjQzOCwgMCwgMCwgMCwgMCwgMCwgOTA1MywgMTMwMTUsIDc0NTIzLCAwLCA3MDQsIDY2MjE1LCA2MTk1LCAwLCAKLSAgICA2NjYwLCA3ODc1OCwgOTE3NzYwLCA5MTc3OTMsIDQyMjEyLCAxMjYyOSwgMTE0MzUsIDAsIDU1MjU2LCA2NTUzOCwgMCwgCi0gICAgMTI3OTQwLCAwLCA3NDU0NywgMCwgNjU0NDgsIDc4MTAwLCAxMjk0OCwgMTE5MDAxLCAxOTUwMDIsIDExOTIzOCwgMTk1MDA0LCAKLSAgICA3ODA5OSwgMTI3MDg1LCAwLCAwLCA0Mjg3LCA4Mjc2LCA0OTAyLCAxMTMxLCAwLCA3ODQ1OCwgNjY3MjgsIDE4MTYsIDAsIAotICAgIDQyNTMzLCAxNjgsIDQyODQ1LCA0ODk4LCA2NDI5OCwgMCwgMCwgNDkwMSwgMTgyMSwgMCwgNTc4LCAzNjUzLCAwLCA3OTEsIAotICAgIDkxNjIsIDY5NzcsIDAsIDExOTI5OCwgNzQ1NjEsIDAsIDczNzMxLCA4MzU0LCA0MzU5MCwgMTE5MzAzLCAwLCA3NTU3LCAKLSAgICAxMTkzMzksIDExOTMwMSwgODIzNCwgNzI0MSwgMCwgMTk0OTk0LCAxMTkxNjcsIDE5NDk5NiwgMTI4MTEsIDY1OTI1LCAKLSAgICAzOTQ2LCA3ODA3OCwgMTA5OTgsIDc4MDgwLCA2NzMsIDE5NDg2NywgNjQzOTcsIDEyODI3NiwgNzQ1OTksIDc4NDQ5LCAKLSAgICA4ODkwLCAxOTQ5NzcsIDE5NDk3NiwgMjQ0OCwgNzgwODUsIDEwMjY3LCA4NDI0LCAyNDUyLCA3ODA4MywgMTk0ODY0LCAKLSAgICA4NzI5LCA3ODQ1NiwgMCwgNzg0NSwgOTE3OTE3LCA3ODY5MiwgNDQwOCwgNDEyMiwgNjc3MiwgMTEwMzksIDg3MjMsIAotICAgIDE5NDk5MCwgMTI3ODMzLCAxMTkzMDIsIDczMSwgMTE5MzA0LCA5MjI4NiwgMjQzOCwgNjQ4NTUsIDExOTMwMCwgMTE5Mjk5LCAKLSAgICAxMTc1LCAwLCA0MjEzNSwgMzczLCAxMTkxNzIsIDIxMTksIDExNDU3LCAxMTUyMSwgNzcyMywgMCwgMCwgMCwgNDE5NTIsIDAsIAotICAgIDUyNzMsIDIxMjcsIDUyNjksIDYzMzcsIDUyMDIsIDI0MDQsIDUyNjcsIDQyODIzLCAxMTI5MSwgMTk5MTUsIDUyNzcsIAotICAgIDEyOTYzLCAxMjc4NjQsIDYxODksIDQxMjUsIDEzMTQsIDEyMTMzLCAwLCAxMTg4NzMsIDEyNzEsIDAsIDAsIDY2MDI0LCAKLSAgICA0MTQ4MiwgMzg2NCwgNzQ1MzksIDAsIDM4NzksIDAsIDEyOTc4LCA0MTY2LCA0NTc0LCAwLCA3NTY3LCA3NDU5LCAwLCAKLSAgICA0MTM5MCwgNTM4NCwgNDE4ODIsIDY3NjQ3LCA5MjU0OCwgNTc1OSwgMCwgMCwgNDEzODgsIDkyMzYyLCA0MTM5MiwgNjQyODgsIAotICAgIDQxMzg3LCAwLCA4NzA2LCA1NTUyLCAwLCA3MDAsIDAsIDU1NTMsIDAsIDcwODgsIDUzNTYsIDc0OTksIDc4MTEwLCA2NjU5NiwgCi0gICAgMCwgMCwgMTAyNjMsIDU1NTQsIDAsIDEyMzQ0LCAxMDMxMSwgNzgxMTMsIDY2NjUsIDAsIDAsIDc2MTgsIDg1MTcsIDExNDU1LCAKLSAgICA3ODQ0MCwgNjQ2MzIsIDY0NDQ3LCA1NTU1LCA3ODA4OCwgNzgwOTMsIDc4MDkxLCAwLCA0MjgwMywgNjUwMzMsIDkxNDMsIAotICAgIDY2NjgsIDE5NTA2NywgMTk1MDY2LCAxOTUwNjksIDY1NiwgMTk1MDcxLCA2NTAzNywgNDU3NywgNjQ2MjQsIDAsIDAsIDAsIAotICAgIDAsIDQyNjksIDczODg1LCA5MTc3NzUsIDQyODQ2LCA2OTY0NCwgOTUwLCAwLCA5MjI3MywgNjY1ODAsIDExODg5NSwgCi0gICAgNjY2ODMsIDEwNTU0LCA5MTc3NzgsIDExOTEyMSwgMCwgNTA5OCwgOTE3NzcwLCAwLCAxMTkwOTksIDUwOTcsIDQ5MzUsIAotICAgIDk4NDgsIDEwMzgxLCAwLCAxMjg4NzAsIDAsIDM2NTEsIDAsIDE5NDYxMCwgMTI3NTU2LCA1MTAyLCA1MTAxLCAxMDI2OSwgCi0gICAgMTI5ODMsIDgxMzgsIDQ1MTcsIDE5MzIsIDUxMDAsIDE0MzksIDEyMDkzLCAxMjQ3LCAxMDAzNCwgMTk1MDY0LCA1MDk5LCAKLSAgICA3ODM3MywgMTQ0MSwgNDIwODcsIDMwNjMsIDY1MCwgMCwgNzgzOCwgMCwgMTk1MDQxLCAxOTUwNDAsIDExOTE0MiwgOTAzMSwgCi0gICAgMTIwNzkwLCAxMjg1ODIsIDkwNzgsIDg1NDUsIDY2MzU2LCAxMjg3OTksIDAsIDkxNTQsIDkxMTgsIDAsIDAsIDI2NzYsIAotICAgIDc3NTAsIDAsIDczODEyLCA2MTkwLCA4NTk5LCAxOTUwNTMsIDAsIDEwNzk1LCA5ODU3LCA3MDE0LCA5ODU2LCAxOTUwMzMsIAorICAgIDkyMzk1LCA4MDg5LCA2OTI5LCA2MzksIDk4MzU2MywgNjgxNzksIDY0NDQyLCAwLCA5MjM0OCwgNDU5OSwgNDE0MDIsIAorICAgIDY2NzQsIDQzMzk3LCA0MzI5NCwgMTQ3NiwgNjQ4LCAwLCA2NTgxOSwgMzIzMywgMCwgNDE3ODIsIDY5NTEsIDk0MDE3LCAKKyAgICA5ODM5NjcsIDM1MzAsIDk3NTAsIDEyODMxNywgMCwgNjY1NiwgNDI2MTgsIDAsIDUwNDYsIDg1MTIsIDY1ODU2LCA3NDI2MSwgCisgICAgODk2NywgMCwgNTA0NSwgNDIwMjYsIDE5MTYsIDc5ODYsIDUwNDQsIDEyMDU1NiwgOTAwNiwgMTMxMjgsIDUwNDMsIDAsIAorICAgIDc4NTMsIDc0MDY4LCA3NDAwNCwgOTY2OSwgMTIzNDEsIDEyNzAzLCA4NDAyLCAwLCAxMTkwNzAsIDkxNzYwMCwgNDE3NTAsIAorICAgIDM1ODYsIDY0NTA4LCA0MzE0OCwgMCwgMCwgMTE5NjA2LCA2Nzk4MywgMTMyOTYsIDUxNywgMCwgMTI4NTM0LCAxOTQ5NDYsIAorICAgIDQxNTI4LCAxMjMsIDY1NDU0LCAwLCAwLCA3NDQ3OCwgMTA1MzEsIDc3ODQsIDQxNTI2LCAxMDgyOSwgNzM5OTEsIDgwNTcsIAorICAgIDExMjYsIDczODk1LCAwLCAxOTQ1OTEsIDAsIDM5MjUsIDQyNTEsIDgwNjksIDEwNTE3LCAxMjA0MzksIDQ4OSwgMCwgNDI1MCwgCisgICAgMTIwNDQxLCAxMjA0NTIsIDQzMTUxLCA5ODMxNzgsIDE5NDg1MSwgNjYyMDAsIDAsIDAsIDAsIDc4NDIzLCAwLCAwLCA4NzExLCAKKyAgICA2MTgzLCAwLCAwLCAwLCAxMjA0NDgsIDc2MjMsIDExODkyNSwgMTE4ODg5LCA5MjM1LCAxMjc2MCwgNzQxNzYsIDY5NjYyLCAKKyAgICA2NjQ0NSwgNDM1NDAsIDEwMDYyLCAzNzQzLCAxMTUxNCwgMTEwNzgsIDAsIDEyMTM2LCAwLCAxMjY1OTcsIDEyMDQzNSwgMCwgCisgICAgNzcyNiwgMCwgMTk5MjIsIDI2NywgMzM5MywgNDIxOTgsIDEzNzEsIDE5NDg0OSwgNjkyMzMsIDI0NTgsIDAsIDYyMDEsIDAsIAorICAgIDQxMDc0LCA0MjY2LCAxMDY1MiwgNDE2MTIsIDQxMDc3LCAzNDAyLCA5MDUwLCAzMzk4LCAwLCA5ODMzNDAsIDAsIDMzOTEsIAorICAgIDQxMDc1LCAyNDc2LCAwLCAxMjgwMTcsIDAsIDEwNjI1LCAwLCAxMjc2NywgMTMwMTcsIDc4NzQzLCA2NDI2MSwgNjQ5MzQsIAorICAgIDEyNzUzNywgMTMwMTQsIDEzMDEzLCAwLCA2NjczLCAwLCAwLCAwLCAxMjQzOCwgMCwgOTgzMzM0LCAwLCA5ODM4NzEsIAorICAgIDEyNjYzOCwgOTA1MywgMTMwMTUsIDc0NTIzLCAwLCA3MDQsIDY2MjE1LCA2MTk1LCA5ODM4MTksIDY2NjAsIDc4NzU4LCAKKyAgICA5MTc3NjAsIDkxNzc5MywgNDIyMTIsIDEyNjI5LCAxMTQzNSwgMCwgNTUyNTYsIDY1NTM4LCAwLCAxMjc5NDAsIDk4MzMzMywgCisgICAgNzQ1NDcsIDEyNjU4NSwgNjU0NDgsIDc4MTAwLCAxMjk0OCwgMTE5MDAxLCAxOTUwMDIsIDExOTIzOCwgMTk1MDA0LCAKKyAgICA3ODA5OSwgMTI3MDg1LCAwLCAxMjgzMjAsIDQyODcsIDgyNzYsIDQ5MDIsIDExMzEsIDAsIDc4NDU4LCA2NjcyOCwgMTgxNiwgCisgICAgMCwgNDI1MzMsIDE2OCwgNDI4NDUsIDQ4OTgsIDY0Mjk4LCA5ODMxNDEsIDAsIDQ5MDEsIDE4MjEsIDAsIDU3OCwgMzY1MywgCisgICAgMCwgNzkxLCA5MTYyLCA2OTc3LCAwLCA3ODg4OSwgNzQ1NjEsIDAsIDczNzMxLCA4MzU0LCA0MzU5MCwgMTE5MzAzLCAKKyAgICA5ODM0NDEsIDc1NTcsIDExOTMzOSwgMTE5MzAxLCA4MjM0LCA3MjQxLCAwLCAxMjA2NzEsIDExOTE2NywgMTk0OTk2LCAKKyAgICAxMjgxMSwgNjU5MjUsIDM5NDYsIDc4MDc4LCAxMDk5OCwgNzgwODAsIDY3MywgMTk0ODY3LCA2NDM5NywgMTI4Mjc2LCAKKyAgICA3NDU5OSwgNzg0NDksIDg4OTAsIDE5NDk3NywgMTk0OTc2LCAyNDQ4LCA3ODA4NSwgMTAyNjcsIDg0MjQsIDI0NTIsIAorICAgIDc4MDgzLCAxMjg4MjQsIDg3MjksIDc4NDU2LCAwLCA3ODQ1LCA5MTc5MTcsIDcxMzAyLCA0NDA4LCA0MTIyLCA2NzcyLCAKKyAgICAxMTAzOSwgODcyMywgMTk0OTkwLCA3MTMxMCwgMTE5MzAyLCA3MzEsIDExOTMwNCwgOTIyODYsIDI0MzgsIDY0ODU1LCAKKyAgICAxMTkzMDAsIDExOTI5OSwgMTE3NSwgMCwgNDIxMzUsIDM3MywgMTE5MTcyLCAyMTE5LCAxMTQ1NywgMTE1MjEsIDc3MjMsIDAsIAorICAgIDAsIDAsIDQxOTUyLCAwLCA1MjczLCAyMTI3LCA1MjY5LCA2MzM3LCA1MjAyLCAyNDA0LCA1MjY3LCA0MjgyMywgMTEyOTEsIAorICAgIDE5OTE1LCA1Mjc3LCAxMjk2MywgMTI3ODY0LCA2MTg5LCA0MTI1LCAxMzE0LCAxMjEzMywgMTIwMzQwLCAxMTg4NzMsIAorICAgIDEyNzEsIDk4MzYzMSwgMCwgNjYwMjQsIDQxNDgyLCAzODY0LCA3NDUzOSwgMCwgMzg3OSwgMCwgMTI5NzgsIDQxNjYsIAorICAgIDQ1NzQsIDAsIDc1NjcsIDc0NTksIDk4MzE2MCwgNDEzOTAsIDUzODQsIDQxODgyLCA2NzY0NywgOTI1NDgsIDU3NTksIAorICAgIDk4MzkwMywgMCwgNDEzODgsIDY0NDQ2LCA0MTM5MiwgNjQyODgsIDQxMzg3LCAwLCA4NzA2LCA1NTUyLCA5ODMxODcsIDcwMCwgCisgICAgMCwgNTU1MywgMCwgNzA4OCwgNTM1NiwgNzQ5OSwgNjgwMDcsIDY2NTk2LCA3NDA2NiwgMCwgMTAyNjMsIDU1NTQsIDAsIAorICAgIDEyMzQ0LCAxMDMxMSwgNzgxMTMsIDY2NjUsIDkyNjI2LCAwLCA3NjE4LCA4NTE3LCAxMTQ1NSwgNzg0NDAsIDY0NjMyLCAKKyAgICA2NDQ0NywgNTU1NSwgNzgwODgsIDc4MDkzLCA3ODA5MSwgMCwgNDI4MDMsIDY1MDMzLCA5MTQzLCA2NjY4LCAxOTUwNjcsIAorICAgIDY3OTk1LCAxOTUwNjksIDY1NiwgMTk1MDcxLCA2NTAzNywgNDU3NywgNjQ2MjQsIDAsIDAsIDAsIDk4MzY0MCwgNDI2OSwgCisgICAgNzM4ODUsIDkxNzc3NSwgNDI4NDYsIDY5NjQ0LCA5NTAsIDAsIDkyMjczLCA2NjU4MCwgMTE4ODk1LCA2NjY4MywgMTA1NTQsIAorICAgIDkxNzc3OCwgMTE5MTIxLCAwLCA1MDk4LCA5MTc3NzAsIDAsIDExOTA5OSwgNTA5NywgNDkzNSwgOTg0OCwgMTAzODEsIDAsIAorICAgIDEyODg3MCwgOTgzNjkyLCAzNjUxLCAwLCAxMjA3MzAsIDEyNzU1NiwgNTEwMiwgNTEwMSwgMTAyNjksIDEyOTgzLCA4MTM4LCAKKyAgICA0NTE3LCAxOTMyLCA1MTAwLCAxNDM5LCAxMjA5MywgMTI0NywgMTAwMzQsIDE5NTA2NCwgNTA5OSwgNzgzNzMsIDE0NDEsIAorICAgIDQyMDg3LCAzMDYzLCA2NTAsIDAsIDc4MzgsIDAsIDE5NTA0MSwgMTk1MDQwLCAxMTkxNDIsIDkwMzEsIDEyMDc5MCwgCisgICAgMTI4NTgyLCA5MDc4LCA4NTQ1LCA2NjM1NiwgMTI4Nzk5LCAwLCA5MTU0LCA5MTE4LCAxMjY1NDMsIDAsIDI2NzYsIDIyNzcsIAorICAgIDAsIDczODEyLCA2MTkwLCA4NTk5LCAxOTUwNTMsIDY5OTE4LCAxMDc5NSwgOTg1NywgNzAxNCwgOTg1NiwgMTk1MDMzLCAKICAgICA5MjYyMCwgMTIxMjksIDAsIDg0ODEsIDAsIDYyMDIsIDE5NTAzNSwgMTA5MjAsIDEyODIzNywgNTIwMywgMTk1MDM5LCAKICAgICAxOTUwMzgsIDUxMDgsIDUxMDcsIDY1ODE4LCA2NjAxOSwgOTc2MiwgMCwgNTU0MSwgNzQ3NzIsIDAsIDEyNjEzLCA1Mjg0LCAKLSAgICA2NjU3LCAyMDcsIDEyODgwNiwgNDI3NSwgNzQ4MTksIDg1NCwgNjgxNDcsIDc0MzgxLCAwLCAwLCA1MTAzLCAxMjc4NjEsIAotICAgIDY0MzQ4LCA0MTM2OCwgNDM5NzQsIDQ4OCwgNjk4MTEsIDAsIDAsIDEwMTU3LCAwLCA0MzAzNCwgMTE0MzgsIDAsIDAsIAotICAgIDkyNjk0LCA2ODQzMSwgNDE3NzEsIDUxMDYsIDY2NjksIDg1MDQsIDY1MTU0LCA2OTgxMywgNDEzNjcsIDUxMDUsIDE5NTAzMCwgCi0gICAgNjk3MjAsIDY0NzYsIDUxMDQsIDAsIDMwNCwgMzE3NiwgMCwgMCwgOTMyLCAxMjg2NjMsIDY1NjcsIDIzOCwgNjk2NTYsIAotICAgIDE5NTAxMSwgMTk0NTk1LCAxOTkwNSwgMTIwNTc3LCAxOTUwMTUsIDc4ODcwLCA0MTA0NCwgNjc2NDAsIDE5NDkwMiwgCi0gICAgNDIwNTUsIDk5MTIsIDY1OTM5LCAxMDY3MCwgNzQwOTMsIDEzMjczLCAwLCAxMjU1MiwgMTk1MDE5LCA4ODAzLCAzMDksIAotICAgIDY2MjIsIDgxNTEsIDEwODU4LCAxOTQ1OTYsIDY3NjM2LCAwLCAxMjU2OCwgMCwgMTI1NTMsIDEwODE0LCA0MzI3NSwgNjk1MCwgCi0gICAgOTcxMiwgNjg2ODAsIDQzOTcwLCAwLCA2NTE2NSwgOTI3MjUsIDAsIDY2NDY2LCAwLCAwLCAwLCA2NjcyNSwgNjE5MSwgCi0gICAgMTEzNTEsIDEwNDM3LCAxMTMxNiwgNjc2MzQsIDAsIDAsIDQxNzU0LCA2NzYzNSwgOTM3MCwgMjcyMCwgMTk0OTc1LCAKLSAgICA2ODQ2MiwgODIzMiwgMTE4ODE3LCAwLCAzMjIyLCAwLCAwLCAwLCA2NjY2MywgMCwgMCwgMTA4MzQsIDAsIDAsIDY1NzMyLCAKLSAgICAwLCA5MTc1NDcsIDkyNjgyLCA2NzY3OSwgMTk1MDIwLCAwLCA3NzgxLCA0MTM4MywgNjQ1NjgsIDAsIDEyMDczOCwgMTIwNzcsIAotICAgIDAsIDY0NTg2LCA5MTc2MjAsIDQyMzk2LCA1NTI1NSwgMzQ3NSwgMTI4MDM1LCAyNDc5LCAwLCAzNjMyLCAxMjA3MjgsIAotICAgIDEwNjk4LCA4Mzc2LCAzNjQ4LCAxOTQ5NjAsIDc0ODQ0LCA2NzYzOSwgMzYzNiwgNjc4OTQsIDM2NTAsIDg4MzcsIDY1MjI5LCAKLSAgICAxODQzLCA0MjI4MywgNDMyNTAsIDQxNTYyLCA5MTAwLCA3NDU0OCwgOTE3NjMwLCAzNjQwLCAxMjcxOTAsIDQyMzIxLCAKLSAgICA3Mjg0LCAxOTQ5NzQsIDE5NDk3MywgMTk0OTUwLCAxOTQ5NDksIDE5NDk1MiwgMTk0OTUxLCAwLCAxOTQ5NTMsIDQyMDgwLCAKLSAgICAyNTI5LCAwLCAwLCAwLCA0MjA4MywgMTIwNjc4LCA2ODM5OCwgMTk0OTU3LCA2NzYxOSwgNjYzNjcsIDE5NDk1OCwgOTYzNCwgCi0gICAgOTIzODAsIDk5ODgsIDAsIDQxMDY4LCAwLCAwLCA2NTI2NCwgMCwgMCwgOTI1NDUsIDAsIDc4NSwgODIzNiwgMTI4NjQ3LCAKLSAgICA5MDI3LCA2ODE2MCwgNjc2MjMsIDY0MzgzLCAxMjg4MjEsIDkyNSwgMTI3MTU2LCAwLCA0MTk4NSwgNDEwNzEsIDk1ODYsIDAsIAotICAgIDQxOTg0LCA5MjE3LCAwLCAwLCAwLCA5MTg2LCAyMDY3LCA0MDE2LCAwLCAwLCAzODEsIDAsIDAsIDQyMDc3LCAwLCAKLSAgICAxMjc0ODMsIDUxODQsIDQyMDc4LCAxOTQ5NDcsIDEwODEwLCAxMjg1MzEsIDQ1ODUsIDE5OTQzLCA1ODYwLCA2NzYzMywgMCwgCi0gICAgMCwgODEyLCAzNjE1LCAwLCA1MTc4LCA0NDAwMCwgMTIwNTQ4LCA3ODgwNywgNTE4OCwgNzQyODcsIDY3NjI5LCAzNjA1LCAKLSAgICAxMDY5MiwgMTE2NiwgNjQ0MjksIDQyNjM5LCA5MjQsIDAsIDY3NjMxLCAwLCAxMjA2NzAsIDI0NDIsIDEwNzAzLCA3ODc4OSwgCi0gICAgNjc2MzIsIDkxNzkyNCwgMTI3NzEsIDEyNzM2LCAxMjc1MywgMCwgNzM5MzMsIDY3NjI2LCA0MjQwMSwgMCwgMCwgMTI3MzczLCAKLSAgICA0MjI4OCwgMTI3NTEsIDAsIDg1NDIsIDEzMTQ1LCAxOTQ5NjMsIDI0NjgsIDY2NzA2LCA0MTI5NCwgMzYyNiwgMzg4MywgCi0gICAgNjQzODgsIDQyNDc5LCAwLCA0MTExNywgMCwgOTI1ODAsIDAsIDAsIDY3NjI0LCAwLCAxMjkwLCAwLCA2NTU4NSwgMjcxNSwgCi0gICAgODA2LCA2NTIwOCwgNDE4ODQsIDkxNzg4MywgMTMxOCwgNjQ3MzEsIDAsIDAsIDAsIDY2MzI1LCAzNDY1LCAyNDA1LCA5MjQwLCAKLSAgICAwLCAxMjc1NiwgNjUyNTksIDAsIDAsIDEyNzUyLCA1ODMzLCAxNDMyLCAwLCA0MTg4MywgNzM5MTIsIDk3OTksIDAsIAotICAgIDQxODg2LCAyNDgwLCAwLCAyMDYyLCAxMjcyOTMsIDY0OTQsIDU1MzcsIDc4NjU2LCAwLCAxOTQ1ODcsIDAsIDEyMTEsIDAsIAotICAgIDAsIDAsIDExODgzMiwgMTIzMTgsIDAsIDAsIDAsIDEwNjIyLCAwLCAwLCA3ODY1NCwgNjU2NiwgNzg2NTksIDAsIDczNzgwLCAKLSAgICAwLCA2NDg2NCwgMCwgNzg2NjAsIDAsIDgyODQsIDEzMDgxLCAwLCAzNTg5LCA0MjA1MSwgNDAzNSwgNjQ5MiwgOTIyMzYsIAotICAgIDQyNjUsIDY2NDIsIDM5NzcsIDc0MTg2LCA0MTc3OCwgODM2LCAxMTkyMTYsIDI0ODgsIDAsIDQ1ODIsIDAsIDAsIDQxNzc3LCAKLSAgICAxMjkyNiwgMCwgNzUyOCwgMTA1NTAsIDAsIDkyNzA2LCAwLCAxMTQzOSwgMCwgMTM3NCwgNjQ4NzgsIDExOTAxNCwgMCwgCi0gICAgNDIzODksIDQxMzc0LCAwLCAwLCA3ODQ5MiwgNDEzNzcsIDEyNzkwOSwgMCwgNDAwLCAxMjU5NywgMTIwNTg2LCAwLCAwLCAKLSAgICA2NjYxLCAwLCA2NDgyNywgMCwgNzM4MTcsIDM5MCwgMCwgNzQ3NTUsIDAsIDM0NzMsIDc3MTgsIDAsIDAsIDAsIDU1Mjg1LCAKLSAgICAwLCAwLCAwLCAxMTk2OSwgMCwgMTI3ODQxLCA2MzY1LCAxODg3LCA2NzYzLCAwLCA4MDgwLCA3MDA2LCAwLCAwLCA2NzU3LCAKLSAgICA2NDM1MSwgMTU0NCwgMCwgNjc2NiwgNjQ2NzcsIDEyMDcxNiwgMCwgNjE0NiwgMCwgNzcxLCAwLCAwLCAxMjgxMiwgMTMxNjgsIAotICAgIDQyMjcyLCAxMjIwMCwgOTE3OTI3LCA3OTA0LCAwLCA5NTMsIDEyOTE3LCAxMTk1NjAsIDEyMzAwLCAwLCAxMTQ5MSwgOTcyNCwgCi0gICAgMTAzNDEsIDAsIDk1MjQsIDc0OTAsIDExMzg5LCA3NDg5LCAzMzc5LCAwLCA3NDg3LCAwLCA0NzEsIDc0ODQsIDc0ODIsIAotICAgIDY3NTMsIDc0ODAsIDc0NzksIDc0NzgsIDc0NzcsIDY1MDEsIDc0NzUsIDY5MTgsIDc0NzMsIDc0NzIsIDI0NzQsIDc0NzAsIAotICAgIDc0NjgsIDEwMjMyLCAxMDYxNSwgMTAyMTMsIDEyNzI4OCwgOTIzNTcsIDEwMDQ5LCA3ODg4NCwgMzU0NCwgMCwgNjAxNywgCi0gICAgNjUzMTEsIDEyNzQ4MSwgMTIwMjE2LCAxMzMwNiwgMTA1MzMsIDc4NzAsIDczOTQ5LCA3NjI1LCAwLCAxMjA1NDQsIDAsIDAsIAotICAgIDkyNjYwLCAwLCAwLCAwLCAxOTk2MSwgMjQ3MiwgNDI2NjUsIDkyMzQxLCAwLCAyMTM5LCA0MjU2LCAxMjA3NzYsIDc0MzgwLCAKLSAgICAwLCA0MjY3NSwgNDI2NTgsIDEyODQ1LCAwLCAwLCA2NTEzOCwgMTE5MzU1LCA2Nzg2MiwgMCwgNjU2NzEsIDEyMDAwMCwgCi0gICAgMTIwMDA4LCA4MDY2LCA3Njc4LCA3NDg2NSwgMCwgMCwgMCwgMCwgNzE4NiwgMCwgMTIwNTU1LCAwLCA0NDUsIDEyMDU2NiwgCi0gICAgMTI4MzA4LCAwLCAwLCA4MzMwLCAwLCAwLCA0Mjc5NywgMCwgMTIwMjE1LCAwLCAzOTAyLCAwLCAxNzcwLCAwLCAxMjg4NjYsIAotICAgIDE1NjAsIDEyMDIwOSwgMTk0OTcyLCA0NTg0LCA3Mzg0MywgMCwgMTE3MTIsIDEwODY2LCAxMTg5MjgsIDExMTgsIDkyMjA5LCAKLSAgICAwLCAwLCAxMDgxLCA3NDM2LCA2ODQyMCwgNzI1MiwgMCwgNTk5NiwgMCwgNDkwMywgMCwgNDEzODYsIDUxNjIsIDExOTE4OSwgCi0gICAgMTMzMCwgMCwgNzEzOSwgMCwgMTIwNDcsIDQxMzg0LCAwLCAwLCAxODQ4LCA0MzM0LCA2MzI0LCA0MTk3NSwgNjQ3NzcsIAotICAgIDEwNjc0LCAxMjMwOCwgMTIxODYsIDAsIDAsIDAsIDEyNzE1LCAxMjgzNDksIDAsIDAsIDIwMTgsIDY2NjcyLCA0MTk3OSwgCi0gICAgNjY2ODUsIDExOTE1NywgMCwgOTI0NjQsIDAsIDEyNjk4NCwgMCwgOTMzNCwgOTI3MDUsIDkyMzE1LCAwLCA3OTc1LCAwLCAKLSAgICA3Nzk1NywgMCwgNjY2MjEsIDQ4ODQsIDY2NTk3LCA2OTczMiwgMCwgMCwgNjMxMywgNjU1MTMsIDAsIDAsIDAsIDAsIDIzNDUsIAotICAgIDQzNjk3LCA0NjMsIDAsIDAsIDExOTYwNywgMzExNywgNTQ2MCwgMCwgMCwgMCwgMCwgNDIyNzksIDE5NDU3NywgMCwgCi0gICAgNzg0MTUsIDAsIDE5NTAwOCwgMCwgMTMyNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NjMsIDAsIDAsIDAsIDAsIDI0ODIsIAotICAgIDE0NzEsIDAsIDAsIDQyMjQ3LCAxMjM3OCwgNzM5MjUsIDY5NjY0LCAwLCAxMjM3NCwgMCwgMCwgMCwgMCwgMjQ2MCwgMCwgCi0gICAgMTE5NDQsIDEyMzc2LCAxMjc4NjgsIDY0Njc5LCAwLCAxMjM4MCwgMTA1NTcsIDY0NDczLCA1ODcwLCAwLCAyMDI0LCAKLSAgICAxMjcxODAsIDAsIDAsIDUzOSwgMCwgMTI3NzY1LCAwLCAzODUzLCA2NTE4MCwgMTI3OTIzLCAxMjA3OTYsIDEyMDI0NSwgCi0gICAgOTIzMjQsIDAsIDg2NTksIDAsIDEyNDc0LCA5MjU3OSwgOTUwMywgMTk0OTY5LCAyNDc4LCAwLCA0MTYyLCAwLCA0MjYwLCAKLSAgICAxMjk1MywgNjk2MzMsIDEyMDA4OSwgMTI0NzAsIDAsIDc0MTg5LCAyNzQyLCAxMjQ3NiwgMTE3OTgsIDEwOTQ2LCAxMjczMTAsIAotICAgIDUwMDAsIDAsIDAsIDAsIDY5NjcyLCA4MjEzLCA3NDAxNywgNzc3MSwgNjE2MSwgMCwgNjcwOSwgMCwgNzg4ODUsIDAsIAotICAgIDEyNzk3MSwgMTIwNTgyLCA3ODU0NywgMCwgMTAzMDEsIDEwMzMzLCAxMDM5NywgMCwgMCwgNzM3OTEsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQwMTQsIDEyODQyLCA3Mzk1MiwgMTIwMTUsIDEyNzI5MCwgODI3NSwgMzg5MywgMCwgMCwgMTIyMTAsIDcyMjEsIAotICAgIDQyMTQ3LCAwLCA3NDU1MCwgNzQ0NjUsIDY0NzQ3LCAxMTg4NDEsIDAsIDEyNTE2LCA0NDQ0LCAwLCA5MjI3MSwgNzQ1MzcsIAotICAgIDEwODkyLCA4MjMxLCAwLCA2NDczLCA0MTk2OCwgNzgzODgsIDQxOTczLCAzNTkxLCA0MTk2OSwgMCwgMjQ1MywgMTI4NTQ5LCAKLSAgICA5MjY2NiwgNjQ3MDUsIDAsIDAsIDEwMzQ5LCAxMDQxMywgNDM1OTEsIDQxOTYyLCAzMjAyLCA3NDM1MywgMCwgODMxNiwgMCwgCi0gICAgMCwgMCwgNjg3LCAwLCAwLCAwLCAxODQwLCAwLCA2ODY3MSwgMTE5ODA5LCA0ODgzLCAyODUsIDQ3MjMsIDc3OTI3LCAKLSAgICA5MjY5MiwgNDQ1OSwgNzQ1NzcsIDQyOTIxLCA0MTcyMCwgMTEwODksIDI0MCwgMTk5MDYsIDAsIDQyMzIzLCAwLCA5NzQzLCAKLSAgICAxMjAyMzIsIDEzMTM0LCAwLCAwLCAwLCAwLCAwLCA0MjYzNCwgMCwgNDM0MzcsIDMwODEsIDExNDYzLCAxMjAxNTQsIDAsIDAsIAotICAgIDEwNDQ1LCAwLCAwLCA2NjcxNywgMjYxNCwgOTEyNSwgMTE5MDIzLCAxNzI5LCAwLCAxMjAyMzYsIDY1MjIxLCA2Mzg4MywgCi0gICAgNDMzMzQsIDY0ODUyLCAwLCAxMjAyMzUsIDY2MjAxLCAwLCA2NjU3OCwgNTAwMSwgNDE4NzksIDc0NDI3LCA0MTIxLCA1MDAzLCAKLSAgICA4ODQsIDY2NzAwLCA2Mzg3OSwgNDk0MywgNTE1MCwgNzM4ODksIDc0MTgyLCAxMjc5MTUsIDY0MywgMzA4NiwgMCwgNDI0NDgsIAotICAgIDQyMjk5LCA1OCwgMCwgOTE3OTUyLCAxMjAwODMsIDYzODczLCA4NDkxLCAwLCAwLCAwLCA0NTMwLCA0MjQwOSwgNzEyNiwgCi0gICAgMTk0NTc1LCAyNzIxLCAxMjAwNzQsIDExOTA5NiwgMTk5MjksIDAsIDE5NDU3NCwgMCwgNDI0MiwgNDI2NCwgMTIwMDc3LCAKLSAgICAxMjgxMzIsIDY2MTc5LCA0MjQxMiwgNjU5NDEsIDEzMTE0LCA2NDUyMiwgMTA3NDAsIDMwOTQsIDAsIDk3NTQsIDExOTEwMiwgCi0gICAgNDQzNywgNzM5NDgsIDEyODY5MiwgMCwgNTUyODAsIDQyMTc0LCAxOTQ5MjUsIDQyNDMwLCAwLCAwLCA0MjM1NSwgNjYwMjYsIAotICAgIDQzMDYsIDQxMzgwLCA2ODQzMiwgOTI1ODYsIDAsIDY2NjY3LCAxMjczMDksIDAsIDAsIDQyMjAwLCA0MjU2NiwgMCwgMCwgCi0gICAgNTA4OCwgNjk0OCwgMCwgODUyNCwgMCwgMCwgMTIzODUsIDAsIDAsIDY5NjQ2LCAxMzg2LCA2NDU4MCwgMTE0ODAsIDYxMTYsIAotICAgIDY1MDM5LCA2NTAzOCwgMTIzOTIsIDY1MDM2LCA4MDY0LCAwLCAxMjEwMSwgNTgyMiwgMTE5MDA0LCAyMDgwLCA3MTAsIAotICAgIDc3OTk5LCAxMTY2MywgMTY2NiwgNDIwOTEsIDExOTY1NywgMTIzODMsIDQzNjcxLCA0MjA5MiwgNjg0MTgsIDQyODksIDAsIAotICAgIDYzODk2LCAxMjA2MSwgNDIwOTYsIDQzNjIxLCAzMzYyLCAxMjM3NywgMCwgMCwgNjg0NDksIDc0NjEsIDczOTAxLCAxMjQ0LCAKLSAgICAzMzEsIDczNzg2LCAxMjY4MywgMTA2NjIsIDAsIDgxMTIsIDAsIDY1ODUyLCAwLCAxMjM3OSwgMTk0ODc3LCAxMjA4MTgsIAotICAgIDQxOTY0LCA0MjIwOCwgNjM4NDMsIDIwODQsIDQxOTY1LCAwLCA2NTg2NiwgNDMyNywgMCwgNjM4NDAsIDc4NTQ5LCA0MTIyMCwgCi0gICAgMTMwMzIsIDAsIDU4NCwgMTI5MzMsIDQzMTc3LCAxMjM3MywgMCwgMTMwMDAsIDEzNTEsIDI5MzUsIDg2OTgsIDEyNjY1LCAwLCAKLSAgICAxOTMwLCAwLCA3ODIyOSwgMTI0MjcsIDY2NTE0LCAwLCAxMzAzMSwgMCwgNjM5MDEsIDAsIDM2NTcsIDEyODU3MiwgNjUyMDIsIAorICAgIDY2NTcsIDIwNywgMTI4ODA2LCA0Mjc1LCA3NDgxOSwgODU0LCA2ODE0NywgNzQzODEsIDAsIDc4Nzg2LCA1MTAzLCAKKyAgICAxMjc4NjEsIDY0MzQ4LCA0MTM2OCwgNDM5NzQsIDQ4OCwgNjk4MTEsIDAsIDcxMzM5LCAxMDE1NywgMCwgNDMwMzQsIAorICAgIDExNDM4LCA2NDY3NCwgMCwgOTI2OTQsIDY4NDMxLCA0MTc3MSwgNTEwNiwgNjY2OSwgODUwNCwgNjUxNTQsIDY5ODEzLCAKKyAgICA0MTM2NywgNTEwNSwgMTI3NTA5LCA2OTcyMCwgNjQ3NiwgNTEwNCwgOTgzNzQwLCAzMDQsIDMxNzYsIDExOTAxMCwgMCwgCisgICAgOTMyLCAxMjA2MzMsIDY1NjcsIDIzOCwgNjk2NTYsIDE5NTAxMSwgMTk0NTk1LCAxOTkwNSwgMTIwNTc3LCAxOTUwMTUsIAorICAgIDc4ODcwLCA0MTA0NCwgNjc2NDAsIDE5NDkwMiwgNDIwNTUsIDk5MTIsIDY1OTM5LCAxMDY3MCwgNzQwOTMsIDEzMjczLCAwLCAKKyAgICAxMjU1MiwgMTk1MDE5LCA4ODAzLCAzMDksIDY2MjIsIDgxNTEsIDEwODU4LCA3ODcwNiwgNjc2MzYsIDAsIDEyNTY4LCAwLCAKKyAgICAxMjU1MywgMTA4MTQsIDQzMjc1LCA2OTUwLCA5NzEyLCA2ODY4MCwgNDM5NzAsIDk4MzE5OCwgNjUxNjUsIDkyNzI1LCAwLCAKKyAgICA2NjQ2NiwgMCwgMCwgMCwgNjY3MjUsIDYxOTEsIDExMzUxLCAxMDQzNywgMTEzMTYsIDY3NjM0LCA0Mzc2MywgMCwgNDE3NTQsIAorICAgIDY3NjM1LCA5MzcwLCAyNzIwLCAxOTQ5NzUsIDY4NDYyLCA4MjMyLCAxMTg4MTcsIDAsIDMyMjIsIDAsIDAsIDAsIDY2NjYzLCAKKyAgICAwLCAwLCAxMDgzNCwgMCwgMCwgNjU3MzIsIDk0MDk1LCA5MTc1NDcsIDkyNjgyLCA2NzY3OSwgMTk1MDIwLCAwLCA3NzgxLCAKKyAgICA0MTM4MywgNjQ1NjgsIDAsIDEyMDczOCwgMTIwNzcsIDAsIDY0NTg2LCA5MTc2MjAsIDQyMzk2LCA1NTI1NSwgMzQ3NSwgCisgICAgMTI4MDM1LCAyNDc5LCAwLCAzNjMyLCAxMjA3MjgsIDEwNjk4LCA4Mzc2LCAzNjQ4LCAxOTQ5NjAsIDc0ODQ0LCA2NzYzOSwgCisgICAgMzYzNiwgNjc4OTQsIDM2NTAsIDg4MzcsIDY1MjI5LCAxODQzLCA0MjI4MywgNDMyNTAsIDQxNTYyLCA5MTAwLCA3NDU0OCwgCisgICAgOTE3NjMwLCAzNjQwLCAxMjcxOTAsIDQyMzIxLCA3Mjg0LCAxOTQ5NzQsIDE5NDk3MywgMTk0OTUwLCAxOTQ5NDksIAorICAgIDE5NDk1MiwgMTk0OTUxLCAxMjY2NDksIDE5NDk1MywgNDIwODAsIDI1MjksIDAsIDAsIDAsIDQyMDgzLCAxMjA2NzgsIAorICAgIDY4Mzk4LCAxOTQ5NTcsIDY3NjE5LCA2NjM2NywgMTk0OTU4LCA5NjM0LCA5MjM4MCwgOTk4OCwgMCwgNDEwNjgsIDAsIAorICAgIDQyOTUsIDY1MjY0LCA2ODAwNiwgMCwgOTI1NDUsIDAsIDc4NSwgODIzNiwgMTI4NjQ3LCA5MDI3LCA2ODE2MCwgNjc2MjMsIAorICAgIDY0MzgzLCAxMjAyNjUsIDkyNSwgMTI3MTU2LCAwLCA0MTk4NSwgNDEwNzEsIDk1ODYsIDAsIDQxOTg0LCA5MjE3LCAwLCAwLCAKKyAgICAwLCA5MTg2LCAyMDY3LCA0MDE2LCA5ODM3OTQsIDAsIDM4MSwgMTI5MzYsIDAsIDQyMDc3LCAwLCA2OTg4MCwgNTE4NCwgCisgICAgNDIwNzgsIDE5NDk0NywgMTA4MTAsIDEyODUzMSwgNDU4NSwgMTk5NDMsIDU4NjAsIDY3NjMzLCAwLCAwLCA4MTIsIDM2MTUsIAorICAgIDAsIDUxNzgsIDQ0MDAwLCAxMjA1NDgsIDc4ODA3LCA1MTg4LCA3NDI4NywgNjc2MjksIDM2MDUsIDEwNjkyLCAxMTY2LCAKKyAgICA2NDQyOSwgNDI2MzksIDkyNCwgMCwgNjc2MzEsIDQyNjE2LCAxMjA2NzAsIDI0NDIsIDEwNzAzLCA3ODc4OSwgNjc2MzIsIAorICAgIDkxNzkyNCwgMTI3NzEsIDEyNzM2LCAxMjc1MywgNjY3MDgsIDczOTMzLCA2NzYyNiwgNDI0MDEsIDAsIDY5ODcyLCAKKyAgICAxMjczNzMsIDQyMjg4LCAxMjc1MSwgMCwgODU0MiwgMTMxNDUsIDE5NDk2MywgMjQ2OCwgNjY3MDYsIDQxMjk0LCAzNjI2LCAKKyAgICAzODgzLCA2NDM4OCwgNDI0NzksIDAsIDQxMTE3LCAwLCA5MjU4MCwgMCwgMCwgNjc2MjQsIDAsIDEyOTAsIDAsIDY1NTg1LCAKKyAgICAyNzE1LCA4MDYsIDY1MjA4LCA0MTg4NCwgOTE3ODgzLCAxMzE4LCA2NDczMSwgMTI2NTc4LCAwLCAwLCA2NjMyNSwgMzQ2NSwgCisgICAgMjQwNSwgOTI0MCwgMCwgMTI3NTYsIDY1MjU5LCAwLCA5ODM3NzIsIDEyNzUyLCA1ODMzLCAxNDMyLCAwLCA0MTg4MywgCisgICAgNzM5MTIsIDk3OTksIDAsIDQxODg2LCAyNDgwLCAwLCAyMDYyLCAxMjcyOTMsIDY0OTQsIDU1MzcsIDc4NjU2LCAwLCAKKyAgICAxOTQ1ODcsIDAsIDEyMTEsIDAsIDAsIDAsIDExODgzMiwgMTIzMTgsIDAsIDAsIDY4MDA1LCAxMDYyMiwgOTgzNzcwLCAwLCAKKyAgICA3ODY1NCwgNjU2NiwgNzg2NTksIDAsIDczNzgwLCAxMTkxOTYsIDY0ODY0LCAwLCA3ODY2MCwgMCwgODI4NCwgMTMwODEsIDAsIAorICAgIDM1ODksIDQyMDUxLCA0MDM1LCA2NDkyLCA5MjIzNiwgNDI2NSwgNjY0MiwgMzk3NywgNzQxODYsIDQxNzc4LCA4MzYsIAorICAgIDExOTIxNiwgMjQ4OCwgMCwgNDU4MiwgMCwgMCwgNDE3NzcsIDEyOTI2LCA5ODMzNjksIDc1MjgsIDEwNTUwLCAwLCA5MjcwNiwgCisgICAgMCwgMTA5NjEsIDAsIDEzNzQsIDY0ODc4LCAxMTkwMTQsIDAsIDQyMzg5LCA0MTM3NCwgMjI4NiwgMCwgNzg0OTIsIDQxMzc3LCAKKyAgICAxMjc5MDksIDAsIDQwMCwgMTI1OTcsIDEyMDU4NiwgMCwgMCwgNjY2MSwgOTgzMTQ1LCA2NDgyNywgMCwgNzM4MTcsIDM5MCwgCisgICAgMCwgNzEzMDEsIDk4Mzg1MywgMzQ3MywgNzcxOCwgMCwgMCwgMCwgNTUyODUsIDAsIDAsIDAsIDExOTY5LCA5ODMzODIsIAorICAgIDEyNzg0MSwgNjM2NSwgMTg4NywgNjc2MywgOTgzMzYyLCA4MDgwLCA3MDA2LCAwLCA5ODMzNjMsIDY3NTcsIDY0MzUxLCAKKyAgICAxNTQ0LCAwLCA2NzY2LCA2NDY3NywgMTIwNzE2LCA5ODMzNjQsIDYxNDYsIDAsIDc3MSwgOTgzMzY1LCAwLCAxMjgxMiwgCisgICAgMTMxNjgsIDQyMjcyLCAxMjIwMCwgOTE3OTI3LCA3OTA0LCAwLCA5NTMsIDEyOTE3LCAxMTk1NjAsIDEyMzAwLCAwLCAKKyAgICAxMTQ5MSwgOTcyNCwgMTAzNDEsIDk4Mzc2NCwgOTUyNCwgNzQ5MCwgMTEzODksIDc0ODksIDMzNzksIDAsIDc0ODcsIDAsIAorICAgIDQ3MSwgNzQ4NCwgNzQ4MiwgNjc1MywgNzQ4MCwgNTc2NCwgNzQ3OCwgNzQ3NywgNjUwMSwgNzQ3NSwgNjkxOCwgNzQ3MywgCisgICAgNzQ3MiwgMjQ3NCwgNzQ3MCwgNzQ2OCwgMTAyMzIsIDEwNjE1LCAxMDIxMywgMTI3Mjg4LCA5MjM1NywgMTAwNDksIDExODM0LCAKKyAgICAzNTQ0LCAwLCA2MDE3LCA2NTMxMSwgMTI3NDgxLCAxMjAyMTYsIDEzMzA2LCAxMDUzMywgNzg3MCwgNzM5NDksIDc2MjUsIDAsIAorICAgIDEyMDU0NCwgMCwgMCwgOTI2NjAsIDAsIDAsIDAsIDE5OTYxLCAyNDcyLCA0MjY2NSwgOTIzNDEsIDAsIDIxMzksIDQyNTYsIAorICAgIDEyMDc3NiwgNzQzODAsIDAsIDQyNjc1LCA0MjY1OCwgMTI4NDUsIDAsIDAsIDY1MTM4LCAxMTkzNTUsIDY3ODYyLCAwLCAKKyAgICA2NTY3MSwgNzA4MywgMTIwMDA4LCA4MDY2LCA3Njc4LCA3NDg2NSwgMCwgMCwgMCwgMCwgNzE4NiwgMCwgMTIwNTU1LCAwLCAKKyAgICA0NDUsIDEyMDU2NiwgMTI4MzA4LCAwLCAwLCA4MzMwLCAwLCAwLCA0Mjc5NywgOTgzMTUwLCAxMjAyMTUsIDAsIDM5MDIsIDAsIAorICAgIDE3NzAsIDAsIDEyODg2NiwgMTU2MCwgMTIwMjA5LCAxOTQ5NzIsIDQ1ODQsIDczODQzLCAwLCAxMTcxMiwgMTA4NjYsIAorICAgIDExODkyOCwgMTExOCwgNzEzMzQsIDAsIDAsIDEwODEsIDc0MzYsIDY4NDIwLCA3MjUyLCAwLCA1OTk2LCA2OTkyMSwgNDkwMywgCisgICAgMCwgNDEzODYsIDUxNjIsIDExOTE4OSwgMTMzMCwgMCwgNzEzOSwgMCwgMTIwNDcsIDQxMzg0LCAwLCAwLCAxODQ4LCA0MzM0LCAKKyAgICA2MzI0LCA0MTk3NSwgNjQ3NzcsIDEwNjc0LCAxMjMwOCwgMTIxODYsIDAsIDAsIDk4MzczMiwgMTI3MTUsIDY4MDAyLCAKKyAgICA5ODM0NzEsIDEyNjYzMCwgMjAxOCwgNjY2NzIsIDQxOTc5LCA2NjY4NSwgMTE5MTU3LCA2ODAwMCwgOTI0NjQsIDAsIAorICAgIDEyNjk4NCwgNjgwMDEsIDkzMzQsIDkyNzA1LCA5MjMxNSwgNzAxMDEsIDc5NzUsIDAsIDc3OTU3LCAwLCA2NjYyMSwgNDg4NCwgCisgICAgNjY1OTcsIDY5NzMyLCAwLCAwLCA2MzEzLCA2NTUxMywgNjk4NTcsIDAsIDAsIDAsIDIzNDUsIDQzNjk3LCA0NjMsIDAsIDAsIAorICAgIDExOTYwNywgMzExNywgNTQ2MCwgMCwgMCwgOTgzMzc5LCAwLCA0MjI3OSwgMTk0NTc3LCAwLCA3ODQxNSwgMCwgMTk1MDA4LCAKKyAgICA5ODMzNzYsIDEzMjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCA1NjYzLCAwLCAwLCAwLCAwLCAyNDgyLCAxNDcxLCAwLCAwLCAKKyAgICA0MjI0NywgMTIzNzgsIDczOTI1LCA2OTY2NCwgMCwgMTIzNzQsIDAsIDAsIDAsIDk4MzY4NSwgMjQ2MCwgMCwgMTE5NDQsIAorICAgIDEyMzc2LCAxMjc4NjgsIDY0Njc5LCAwLCAxMjM4MCwgMTA1NTcsIDY0NDczLCA1ODcwLCAwLCAyMDI0LCAxMjcxODAsIDAsIAorICAgIDAsIDUzOSwgMCwgMTI3NzY1LCA5NDA1MiwgMzg1MywgNjUxODAsIDEyNzkyMywgMTIwNzk2LCAxMjAyNDUsIDkyMzI0LCAwLCAKKyAgICA4NjU5LCAwLCAxMjQ3NCwgOTI1NzksIDk1MDMsIDE5NDk2OSwgMjQ3OCwgMCwgNDE2MiwgMCwgNDI2MCwgMTI5NTMsIAorICAgIDY5NjMzLCAxMjAwODksIDEyNDcwLCAwLCA3NDE4OSwgMjc0MiwgMTI0NzYsIDExNzk4LCAxMDk0NiwgMTI3MzEwLCA1MDAwLCAKKyAgICAwLCA5ODM1NzksIDAsIDY5NjcyLCA4MjEzLCA3NDAxNywgNzc3MSwgNjE2MSwgNjgwMTgsIDY3MDksIDAsIDc4ODg1LCAKKyAgICA5ODM2OTksIDEyNzk3MSwgMTIwNTgyLCA3ODU0NywgMCwgMTAzMDEsIDEwMzMzLCAxMDM5NywgMCwgMCwgNzM3OTEsIDAsIDAsIAorICAgIDAsIDAsIDExOTEyMywgNDAxNCwgMTI4NDIsIDczOTUyLCAxMjAxNSwgMTI3MjkwLCA4Mjc1LCAzODkzLCA5ODMyNTYsIDAsIAorICAgIDEyMjEwLCA3MjIxLCA0MjE0NywgMCwgNzQ1NTAsIDc0NDY1LCA2NDc0NywgMTE4ODQxLCAwLCAxMjUxNiwgNDQ0NCwgMCwgCisgICAgOTIyNzEsIDc0NTM3LCAxMDg5MiwgODIzMSwgMCwgNjQ3MywgNDE5NjgsIDc4Mzg4LCA0MTk3MywgMzU5MSwgNDE5NjksIDAsIAorICAgIDI0NTMsIDEyODU0OSwgOTI2NjYsIDY0NzA1LCAwLCAwLCAxMDM0OSwgMTA0MTMsIDQzNTkxLCA0MTk2MiwgMzIwMiwgCisgICAgNzQzNTMsIDAsIDgzMTYsIDAsIDAsIDk0MDYwLCA2ODcsIDAsIDAsIDAsIDE4NDAsIDAsIDY4NjcxLCAxMTk4MDksIDQ4ODMsIAorICAgIDI4NSwgNDcyMywgNzAwOTksIDkyNjkyLCA0NDU5LCA3NDU3NywgNDI5MjEsIDQxNzIwLCAxMTA4OSwgMjQwLCAxOTkwNiwgMCwgCisgICAgNDIzMjMsIDAsIDk3NDMsIDEyMDIzMiwgMTMxMzQsIDEyNjUzNSwgMCwgMCwgMCwgMCwgNDI2MzQsIDk4MzMzNSwgNDM0MzcsIAorICAgIDMwODEsIDExNDYzLCAxMjAxNTQsIDAsIDAsIDEwNDQ1LCAwLCAwLCA2NjcxNywgMjYxNCwgOTEyNSwgMTE5MDIzLCAxNzI5LCAKKyAgICAwLCAxMjAyMzYsIDY1MjIxLCA2Mzg4MywgNDMzMzQsIDY0ODUyLCAwLCA2NTE5NCwgNjYyMDEsIDAsIDY2NTc4LCA1MDAxLCAKKyAgICA0MTg3OSwgNzQ0MjcsIDQxMjEsIDUwMDMsIDg4NCwgNjY3MDAsIDYzODc5LCA0OTQzLCA1MTUwLCA3Mzg4OSwgNzQxODIsIAorICAgIDEyNzkxNSwgNjQzLCAzMDg2LCAwLCA0MjQ0OCwgNDIyOTksIDU4LCAwLCA5MTc5NTIsIDEyMDA4MywgNjM4NzMsIDg0OTEsIAorICAgIDAsIDAsIDAsIDQ1MzAsIDQyNDA5LCA3MTI2LCAxOTQ1NzUsIDI3MjEsIDEyMDA3NCwgMTE5MDk2LCAxOTkyOSwgMCwgCisgICAgMTk0NTc0LCAwLCA0MjQyLCA0MjY0LCAxMjAwNzcsIDEyMDUzMCwgNjYxNzksIDQyNDEyLCA2NTk0MSwgMTMxMTQsIDY0NTIyLCAKKyAgICAxMDc0MCwgMzA5NCwgMCwgOTc1NCwgMTE5MTAyLCA0NDM3LCA3Mzk0OCwgMTI3MDc0LCA5ODMyMzIsIDU1MjgwLCA0MjE3NCwgCisgICAgMTk0OTI1LCA0MjQzMCwgMCwgMCwgNDIzNTUsIDY2MDI2LCA0MzA2LCA0MTM4MCwgNjg0MzIsIDkyNTg2LCAwLCA2NjY2NywgCisgICAgMTI3MzA5LCAwLCAxMjY1MjEsIDQyMjAwLCA0MjU2NiwgMCwgMCwgNTA4OCwgNjk0OCwgMCwgODUyNCwgMCwgMCwgMTIzODUsIAorICAgIDAsIDAsIDY5NjQ2LCAxMzg2LCA2NDU4MCwgMTE0ODAsIDYxMTYsIDY1MDM5LCA2NTAzOCwgMTIzOTIsIDY1MDM2LCA4MDY0LCAKKyAgICAwLCAxMjEwMSwgNTgyMiwgMTE5MDA0LCAyMDgwLCA3MTAsIDc3OTk5LCAxMTY2MywgMTY2NiwgNDIwOTEsIDExOTY1NywgCisgICAgMTIzODMsIDQzNjcxLCA0MjA5MiwgNjg0MTgsIDQyODksIDAsIDYzODk2LCAxMjA2MSwgNDIwOTYsIDQzNjIxLCAzMzYyLCAKKyAgICAxMjM3NywgOTgzODIzLCA5ODM4MjUsIDY4NDQ5LCA3NDYxLCA3MzkwMSwgMTI0NCwgMzMxLCA3Mzc4NiwgMTI2ODMsIAorICAgIDEwNjYyLCAwLCA4MTEyLCAwLCA2NTg1MiwgMCwgMTIzNzksIDE5NDg3NywgMTIwODE4LCA0MTk2NCwgNDIyMDgsIDYzODQzLCAKKyAgICAyMDg0LCA0MTk2NSwgMCwgNjU4NjYsIDQzMjcsIDAsIDYzODQwLCA3ODU0OSwgNDEyMjAsIDEzMDMyLCAwLCA1ODQsIAorICAgIDEyOTMzLCA0MzE3NywgMTIzNzMsIDY5ODU1LCAxMzAwMCwgMTM1MSwgMjkzNSwgODY5OCwgMTI2NjUsIDAsIDE5MzAsIDAsIAorICAgIDc4MjI5LCAxMjQyNywgNjY1MTQsIDY5ODU5LCAxMzAzMSwgMCwgNjM5MDEsIDAsIDM2NTcsIDEyODU3MiwgNjUyMDIsIAogICAgIDYwMDAsIDExOTIwNiwgMTI0MjYsIDEyNzE4MSwgMCwgNDE3NDAsIDEyNDI4LCA0MTI4MywgNDE5MTYsIDExOTIxMCwgMCwgMCwgCiAgICAgMTI0MjksIDY3MjcsIDAsIDc1NjIsIDAsIDUxNzAsIDAsIDQxNzU1LCA2NzYsIDAsIDY2NzA0LCA2NjY2NCwgOTk3OCwgCiAgICAgNjY0OTEsIDM1MzYsIDAsIDk3NTIsIDkyMzk3LCA2MTYyLCAwLCA2OTIyOCwgMTAxMTMsIDQxODI5LCA2NTg4NiwgNTE1OSwgCkBAIC0xNjQyMSw3MDYgKzE3MzMxLDczMSBAQAogICAgIDAsIDYzODY3LCA0MTMzLCAxMTM3MSwgMjEwLCA0NjAwLCAwLCA3NDU2MCwgNDEzNywgODA4MiwgNzg1MDYsIDExOTA2MiwgCiAgICAgNzg1MDQsIDY3MDQsIDQ1OTEsIDEyODAyOSwgMCwgMCwgOTY4MCwgMCwgMTIwNjIzLCA1NjEsIDEyMTU5LCAxOTUsIDc4NTA4LCAKICAgICA0MTUwMSwgMCwgNDIwMzEsIDU3MTksIDcxNzIsIDQyNjg3LCA4MzY4LCAwLCA0MTQ5OSwgMCwgMCwgNDIyNDIsIDQxNDk4LCAKLSAgICA5MTc3OTQsIDQyMDI1LCA3ODU2NywgNjU4MDUsIDQyNDYzLCAwLCAyOTI0LCAwLCAxMjA1MTAsIDAsIDAsIDExOTIxMywgCisgICAgOTE3Nzk0LCA0MjAyNSwgNzg1NjUsIDY1ODA1LCA0MjQ2MywgMCwgMjkyNCwgMCwgMTIwNTEwLCAwLCAwLCAxMTkyMTMsIAogICAgIDczOTQxLCAwLCA0MjMzMCwgOTE3Nzg0LCAzOTY5LCAwLCAwLCA3MTY5LCAxOTkyLCA5NjUyLCA3Mzk3NywgNzI0NiwgCi0gICAgNDIwODYsIDkxNzc5MCwgOTE3Nzg5LCAwLCAwLCAxMjg4MDEsIDAsIDAsIDMyNywgMCwgOTA0MiwgOTE3Nzc3LCA5MTc3NzYsIAotICAgIDY1MTQ4LCAxMjQzMywgOTE3NzgxLCAxMjcyNzYsIDkxNzc3OSwgMTI0MzEsIDg2NjgsIDEyNDM0LCAwLCA5MTc3ODIsIAotICAgIDU5OTksIDAsIDc3MTIsIDEyNDMyLCAxMjgyNDMsIDQzNjUzLCAxNzI2LCAxMDE1LCAwLCA4MjEyLCAwLCAxMjgwMTQsIAotICAgIDQyNDIzLCAxMTkwNjYsIDAsIDEyODEwOCwgNjY3MDksIDAsIDg4MTEsIDkyNywgMCwgMCwgMTI0MzYsIDAsIDQyMDIxLCAwLCAKLSAgICAwLCAxMjk5LCAxMjI0MCwgNDIzNTAsIDY1MTQzLCAwLCAxOTUwMTYsIDAsIDc4MTk3LCAxMTM0OCwgMCwgNzgwMzcsIDkxOTQsIAotICAgIDAsIDAsIDE5OTE0LCAxMjE3OSwgMCwgOTY0OCwgMTk0OTIzLCA2MzgzNiwgNjM4MzIsIDkxNzc3MywgMTA5NjcsIDYzODE2LCAKLSAgICAyNTk0LCAzNDQ0LCA2MzgxNywgNjQ2NTEsIDAsIDQxNTAzLCAxMjc0NzgsIDExMjY1LCAwLCAxMjA3NTYsIDE5NDkyMiwgMCwgCi0gICAgNTY2NCwgMzk3MiwgMCwgMCwgMCwgMTI4NTA4LCAxMjQxNiwgOTE3NzY0LCAxMTk2MDgsIDEwODE2LCA5MTc3NjksIAotICAgIDkxNzc2OCwgMTI0MTgsIDc0MTExLCAzODgyLCA4NTMyLCA5MTc3NzEsIDE1NzMsIDEyODY0OCwgMTE5ODQ3LCA0NTk2LCAKLSAgICA2NjMzOSwgMTI0MTcsIDY2MDAxLCA2NTM0MywgMTk0NzgyLCAxMjQxNCwgODI4NywgNjgyMTksIDE5NTAxNywgNjgxMDgsIAotICAgIDExNDMsIDExOTE2OSwgMTE5ODQ2LCAxMjQxNSwgNjYyNiwgNDI3NjMsIDAsIDExODg4NCwgOTAyMSwgMTIwNzgzLCAwLCAKLSAgICAxMTcyNCwgMCwgMCwgMTI3MTA0LCAxMjg1MjYsIDAsIDAsIDgwMjcsIDEwOTk3LCA5MTcxLCAxMjc0MSwgMTE0MDAsIAotICAgIDc0MTk3LCAxOTQ3OTksIDAsIDEyODIzOSwgMCwgMTI4ODgxLCAxMTk2MDQsIDEyNzUyMywgMTIwMTkwLCAxOTQ3NzMsIAotICAgIDY3NjA4LCAxMjgyMTQsIDQyMzY4LCAwLCA3NzE1LCAzODgxLCA0MTQ4NywgMTIxMTgsIDQyNTE0LCA2ODY1MSwgMCwgMCwgCi0gICAgMzAwOSwgNDE0NzYsIDQxNDg5LCA2OTgyNSwgMzAwNywgMTQ0OCwgMzAxOCwgMTk0ODA5LCAzODg5LCA4NTIxLCA1MDgzLCAKLSAgICA1MDgyLCAxMTk4NTksIDEyMDE4NCwgODUxOSwgMCwgMzAxNCwgNTA4MSwgNjU4NTMsIDEyMDcxNSwgMCwgMTIwMTgzLCAKLSAgICA3ODIxOSwgNTA3OSwgNjQ4MDIsIDQyMjEwLCA0NTk3LCA2NTUzMiwgNzg0NDQsIDEyMDE4NSwgMTIzNzEsIDAsIDg0MDcsIDAsIAotICAgIDEwODA1LCA4NTE4LCAxMDc3OSwgMTIwMTg4LCAwLCAwLCAxMjM2NywgNDIxNzAsIDAsIDkyNTU3LCA2MjksIDE5MjQsIDAsIAotICAgIDEyMDM3LCA3NDM2NiwgNTk4NywgODQ2MiwgODAwNSwgMTIzNjUsIDYzOTMzLCA2OTczNSwgMTIwODE1LCAxMjM2OSwgCi0gICAgMTA2NDksIDAsIDUwNzcsIDEyNzEwOCwgMTA4ODAsIDYzOTI3LCA1MDc1LCA5MTc4ODEsIDAsIDY1MDc1LCAwLCAxMTAwNywgCi0gICAgMCwgNjY2NTksIDkyNjA3LCAwLCA2NjY4NCwgMCwgMzQzNCwgNDk1NCwgMTkwNCwgMCwgNTI2NiwgMTI2OTgwLCA1MjcyLCAKLSAgICAxMDQ5OSwgNDUwNywgOTU3OCwgNjM5MjMsIDEyMDE3NywgNzk3OSwgMCwgOTgzMSwgMCwgMTk0OTI2LCA0NjEsIDk4MDMsIDAsIAotICAgIDQ1MDQsIDE1MDUsIDAsIDYzMjUsIDUyNzYsIDQzMDIxLCAxMjA0ODgsIDAsIDU1MjM2LCAwLCA2NjQ2MSwgNTE3NywgCi0gICAgNDEzMjQsIDEyMDU1LCA4NzIyLCAwLCA0MTMyNywgMCwgNjY2OTUsIDQxMTQsIDQwOSwgNDM4MywgODkwMCwgODk0OCwgCi0gICAgNDEzMjUsIDAsIDcyMSwgMTAxODIsIDkxMDgsIDAsIDAsIDExOTE4NSwgNDIyMjksIDE5NDkxMiwgMCwgNTk5OCwgMCwgCi0gICAgNDIzNTMsIDc0ODI1LCAwLCAxMjU4NywgMCwgNzg1NzEsIDAsIDAsIDE5NDU2MiwgNDE1NzYsIDQyMjE1LCA3ODU3MCwgCi0gICAgMTE5MjA3LCAwLCA4NTc4LCA1OTk1LCA3NTczLCA0MTU3NSwgNzQ3ODksIDc0NzUyLCA2Mzk0NCwgNjM5NDksIDY0NzY3LCAKLSAgICAyNjcwLCA0MTY3LCAwLCAxMTcyMywgMCwgNzQxMjAsIDAsIDY1MDc2LCA5MzgsIDQzNDE0LCA3Mzg1NCwgMTE3MzcsIDk3MjEsIAotICAgIDAsIDAsIDAsIDExNzQyLCAyNDE5LCAwLCAxMTQ5MywgMTIzMzQsIDE5NDkxMywgNDE1MywgMTIzMDIsIDEwNzkzLCA1MjUwLCAKLSAgICAxMjQwNywgMTE5NzgsIDQ0MDQsIDkxODksIDEyNDAxLCA0MjAwNywgNTc3NSwgNjc1OSwgNjU4MDYsIDQzOTk3LCAwLCAKLSAgICA0MjAwMiwgMTI0MDQsIDAsIDAsIDQ5NDAsIDEyNDEwLCA3NjgzLCAxMTY3LCA3MzcyOSwgNDk4MywgMCwgODYxLCAwLCAwLCAKLSAgICAwLCAwLCA2NTU3NywgNDMzNzAsIDAsIDAsIDExOTU2LCAwLCAwLCAwLCA5NjE2LCA2NjMxLCAwLCAxMjgxNiwgNzQ1ODMsIAorICAgIDQyMDg2LCAxMjY2MTUsIDIyMTksIDAsIDAsIDEyODgwMSwgMTk0ODM3LCAwLCAzMjcsIDAsIDkwNDIsIDkxNzc3NywgCisgICAgOTE3Nzc2LCA2NTE0OCwgMTI0MzMsIDkxNzc4MSwgMTI3Mjc2LCA5MTc3NzksIDEyNDMxLCA4NjY4LCAxMjQzNCwgOTgzODI2LCAKKyAgICA5MTc3ODIsIDU5OTksIDAsIDc3MTIsIDEyNDMyLCAxMjgyNDMsIDQzNjUzLCAxNzI2LCAxMDE1LCAwLCA4MjEyLCAwLCAKKyAgICAxMjgwMTQsIDQyNDIzLCAxMTkwNjYsIDAsIDEyODEwOCwgNjY3MDksIDAsIDg4MTEsIDkyNywgMCwgMCwgMTI0MzYsIAorICAgIDk4MzIzOSwgNDIwMjEsIDAsIDAsIDEyOTksIDEyMjQwLCA0MjM1MCwgNjUxNDMsIDAsIDE5NTAxNiwgMCwgNzgxOTcsIAorICAgIDExMzQ4LCAwLCA3ODAzNywgOTE5NCwgOTgzMTg0LCAwLCAxOTkxNCwgMTIxNzksIDk4MzgwMywgMjI5NiwgMTk0OTIzLCAKKyAgICA2MzgzNiwgNjM4MzIsIDkxNzc3MywgMTA5NjcsIDYzODE2LCAyNTk0LCAzNDQ0LCA2MzgxNywgNjQ2NTEsIDAsIDQxNTAzLCAKKyAgICAxMjc0NzgsIDExMjY1LCAwLCAxMjA3NTYsIDE5NDkyMiwgMCwgNTY2NCwgMzk3MiwgMCwgMCwgMCwgMTI4NTA4LCAxMjQxNiwgCisgICAgOTE3NzY0LCAxMTk2MDgsIDEwODE2LCA5MTc3NjksIDkxNzc2OCwgMTI0MTgsIDc0MTExLCAzODgyLCA4NTMyLCA5MTc3NzEsIAorICAgIDE1NzMsIDEyODY0OCwgMTE5ODQ3LCA0NTk2LCA2NjMzOSwgMTI0MTcsIDY2MDAxLCA2NTM0MywgMTI2NDkxLCAxMjQxNCwgCisgICAgODI4NywgNjgyMTksIDE5NTAxNywgNjgxMDgsIDExNDMsIDExOTE2OSwgMTE5ODQ2LCAxMjQxNSwgNjYyNiwgNDI3NjMsIDAsIAorICAgIDExODg4NCwgOTAyMSwgMTIwNzgzLCAwLCAxMTcyNCwgMCwgMCwgMTI3MTA0LCAxMjY2MTksIDAsIDAsIDgwMjcsIDEwOTk3LCAKKyAgICA5MTcxLCAxMjc0MSwgMTE0MDAsIDcxMzA1LCAxOTQ3OTksIDAsIDEyODIzOSwgMCwgMTI4ODgxLCAxMTk2MDQsIDEyNzUyMywgCisgICAgMTIwMTkwLCAxOTQ3NzMsIDY3NjA4LCAxMjgyMTQsIDQyMzY4LCAwLCA3NzE1LCAzODgxLCA0MTQ4NywgMTIxMTgsIDQyNTE0LCAKKyAgICA2ODY1MSwgMCwgOTgzODg2LCAzMDA5LCA0MTQ3NiwgNDE0ODksIDY5ODI1LCAzMDA3LCAxNDQ4LCAzMDE4LCAxOTQ4MDksIAorICAgIDM4ODksIDg1MjEsIDUwODMsIDUwODIsIDExOTg1OSwgMTIwMTg0LCA4NTE5LCA5ODMyMzUsIDMwMTQsIDUwODEsIDY1ODUzLCAKKyAgICAxMjA3MTUsIDAsIDY4MDE0LCA2OTk1MSwgNTA3OSwgNjQ4MDIsIDQyMjEwLCA0NTk3LCA2NTUzMiwgMTE4MjgsIDEyMDE4NSwgCisgICAgMTIzNzEsIDAsIDg0MDcsIDAsIDEwODA1LCA4NTE4LCAxMDc3OSwgMTIwMTg4LCA3MTMwMywgOTgzOTI0LCAxMjM2NywgCisgICAgNDIxNzAsIDAsIDkyNTU3LCA2MjksIDE5MjQsIDAsIDEyMDM3LCA3NDM2NiwgNTk4NywgODQ2MiwgODAwNSwgMTIzNjUsIAorICAgIDYzOTMzLCA2OTczNSwgMTIwODE1LCAxMjM2OSwgMTA2NDksIDY3OTgxLCA1MDc3LCAxMjAxNzQsIDEwODgwLCA2MzkyNywgCisgICAgNTA3NSwgOTE3ODgxLCAwLCA2NTA3NSwgMCwgMTEwMDcsIDk4MzY5NiwgNjY2NTksIDkyNjA3LCAwLCA2NjY4NCwgMCwgCisgICAgMzQzNCwgNDk1NCwgMTkwNCwgMCwgNTI2NiwgMTI2OTgwLCA1MjcyLCAxMDQ5OSwgNDUwNywgOTU3OCwgNjM5MjMsIAorICAgIDEyMDE3NywgNzk3OSwgMCwgOTgzMSwgMCwgMTk0OTI2LCA0NjEsIDk4MDMsIDAsIDQ1MDQsIDE1MDUsIDAsIDYzMjUsIAorICAgIDUyNzYsIDQzMDIxLCAxMjA0ODgsIDAsIDU1MjM2LCAwLCA2NjQ2MSwgNTE3NywgNDEzMjQsIDEyMDU1LCA4NzIyLCAwLCAKKyAgICA0MTMyNywgMCwgNjY2OTUsIDQxMTQsIDQwOSwgNDM4MywgODkwMCwgODk0OCwgNDEzMjUsIDAsIDcyMSwgMTAxODIsIDkxMDgsIAorICAgIDcxMzExLCAwLCAxMTkxODUsIDQyMjI5LCAxOTQ5MTIsIDAsIDU5OTgsIDAsIDQyMzUzLCA3NDgyNSwgMCwgMTI1ODcsIAorICAgIDk0MTA0LCA3ODU3MSwgMCwgNzEzMjgsIDE5NDU2MiwgNDE1NzYsIDQyMjE1LCA3ODU3MCwgMTE5MjA3LCAwLCA4NTc4LCAKKyAgICA1OTk1LCA3NTczLCA0MTU3NSwgNzQ3ODksIDc0NzUyLCA2Mzk0NCwgNjM5NDksIDY0NzY3LCAyNjcwLCA0MTY3LCAxOTQ3OTYsIAorICAgIDExNzIzLCAwLCA3NDEyMCwgMCwgNjUwNzYsIDkzOCwgNDM0MTQsIDczODU0LCAxMTczNywgOTcyMSwgMCwgMCwgMCwgCisgICAgMTE3NDIsIDI0MTksIDAsIDExNDkzLCAxMjMzNCwgMTk0OTEzLCA0MTUzLCAxMjMwMiwgMTA3OTMsIDUyNTAsIDEyNDA3LCAKKyAgICAxMTk3OCwgNDQwNCwgOTE4OSwgMTI0MDEsIDQyMDA3LCA1Nzc1LCA2NzU5LCA2NTgwNiwgNDM5OTcsIDAsIDQyMDAyLCAKKyAgICAxMjQwNCwgOTgzNTUzLCAwLCA0OTQwLCAxMjQxMCwgNzY4MywgMTE2NywgNzM3MjksIDQ5ODMsIDEyMDUwNywgODYxLCAwLCAKKyAgICAwLCAwLCAwLCA0Mzc1NywgNDMzNzAsIDAsIDAsIDExOTU2LCAwLCAwLCAwLCA5NjE2LCA2NjMxLCAwLCAxMjgxNiwgNDM3NTksIAogICAgIDQyMjE4LCAxMjcxMCwgNjg2NzQsIDEyNzIxLCA0MTAxLCA2NjE4NSwgMCwgNTk5MiwgNzYxNiwgMTk1MDQ0LCAwLCAxMjU3NywgCi0gICAgMCwgMCwgODUzLCA0MjY5MywgMTk1MDE0LCAwLCAwLCA1MDE2LCA0MzUzNSwgNjM4OTMsIDQyODM1LCA5NDkxLCA5MTc5MTMsIAotICAgIDAsIDkxNzkxNCwgMCwgMTI3MTIsIDcxMDUsIDEyNzgwNywgNjUwNjAsIDEyMDc5NywgOTkwMCwgMCwgMCwgMTk0OTE5LCAwLCAKLSAgICAxMjc4MzAsIDAsIDY0Nzc4LCAxMjU4NSwgMTA1NjUsIDEyODE1MSwgMTIxNzcsIDAsIDAsIDAsIDc3ODI0LCAwLCA0OTAwLCAKLSAgICAxMjc4NzQsIDEyODc4LCA5MjYzMCwgODk4NCwgNDExOSwgNzQ3NjgsIDg5NzEsIDc4NTkzLCA0MzExMywgOTcwMiwgNzg1OTQsIAotICAgIDExMDI1LCA5MjQ1LCAxMzA0OCwgNDkyNywgNDEzOCwgNzQxODUsIDkyNDgxLCA5MjcxMCwgMTIzOTcsIDc3ODI3LCAwLCAKLSAgICAxMzA1NCwgMTIzOTQsIDAsIDAsIDAsIDEzMDUzLCAwLCAzOTQ4LCAxMDc4MSwgMTU0NiwgMCwgNTAxMCwgMTY4MCwgMTA1MDcsIAotICAgIDc4NTkwLCA3ODU4MywgMCwgMCwgMCwgMTk0OTE1LCA3MjY3LCAwLCA3NDgzMywgMTI4MTgxLCA1OTkzLCAyODE5LCAwLCAKLSAgICAxMjcwNiwgNzc4NDAsIDE4OTMsIDcyNjYsIDYzOTE1LCA3MjY0LCA3MjY1LCAwLCAxMzYzLCAwLCA2Mzk5NywgNjM5MTAsIAotICAgIDYzOTk2LCAzMDc3LCAwLCAwLCAxNTEyLCAwLCAxMjU4OSwgNDE0NzksIDEyODMxMywgMCwgNDMzMzksIDAsIDk4MzYsIAotICAgIDEyMDcyNywgMCwgNDE0ODEsIDQzMzM1LCA3ODMyLCA0MjM0MywgMzA5MCwgNDMzMzcsIDgxNywgMTY2NCwgMTg1MCwgCi0gICAgMTI4ODQxLCAzMDc5LCAxMTM0MCwgNDI0MDgsIDQyNDQ3LCAxMjcxNDAsIDEyMDAyMCwgNDIzMDcsIDEyMzg2LCA0MjMwNCwgCi0gICAgOTE3NTU1LCAwLCAxMjM4OSwgMCwgOTIzNjYsIDQxOTk2LCAxMTUyNiwgNjM5ODUsIDU4NjQsIDExNDcsIDYzOTkyLCAKLSAgICA0Mjg4NywgMTk4NywgOTI3MTgsIDU0ODAsIDc4NTgsIDExNjUzLCA0MTE2LCAxMjM5MSwgNjYxOTMsIDAsIDQ5MzksIAotICAgIDEyMzg0LCAwLCAwLCA0MTY4NiwgNjM5MDUsIDExOTYwMSwgMTk0Njg4LCAwLCAwLCAxMjY0OSwgMCwgMCwgODI0NywgNTA3LCAKLSAgICA5MSwgMjA0MiwgMTIwNzc1LCA0MzY0MywgMTk0Njg5LCA2NjAyOCwgMTAwMzYsIDQxODQ0LCAxMTk4MTMsIDc3NCwgCi0gICAgMTE5ODMxLCAwLCAxMTk4MTUsIDU5OTQsIDEyNTM5LCAwLCA3ODM3NSwgMTIwNTk3LCAxMTk4MzMsIDAsIDExOTYwMCwgMCwgCi0gICAgMCwgNzcxOSwgNjAyNiwgMjQ4NiwgMTI4MzEyLCAxMTk4MDgsIDE2MiwgMCwgNjUyMTksIDQxMDczLCA5Njg3LCA0MTY4MSwgCi0gICAgNjMwNCwgMTE5ODEyLCA2NjE5NiwgMTk0ODgxLCA1MjYyLCAwLCA1NTIzMywgMTI2ODEsIDQyMzc5LCAwLCA3NTM0LCAKLSAgICAxMjIxOSwgMCwgMTI3NTI4LCA0MjgxMCwgMTA0OTIsIDAsIDAsIDAsIDQzMTE5LCAwLCAxMjA3NTMsIDEyNDAzLCAyNTAwLCAKLSAgICAxOTUwMTMsIDAsIDQ4OTksIDEyNzI5LCAwLCAwLCA3NDExMywgMjM0MywgNDEwMywgMTk5NDYsIDc0MTEyLCA3Nzg1MSwgCi0gICAgMTMxMTIsIDAsIDE5NTAxMiwgMTI4NTksIDAsIDEyMDE0OCwgNjYzNjksIDU4NjEsIDEyNzc1OCwgMTE5OTksIDEyNDAwLCAwLCAKLSAgICAwLCAxMjY0NSwgNTE0NiwgMTEzMjAsIDY4NDEwLCA2NzQ4LCA2NTA0MCwgMCwgNjQxODQsIDEyOTc0LCA2NDE4MywgNjc2MTMsIAotICAgIDEyMDY0NSwgNTE0NywgMCwgMCwgNzQ1MjQsIDAsIDE5MjgsIDAsIDY3NjQ5LCA1OTkxLCAzNDQ1LCA2NzYwOSwgNDk3NiwgCi0gICAgNjQxNzYsIDAsIDY3NjEwLCA4MjQxLCAwLCA3Nzg2OCwgNDIwNiwgMCwgMCwgMCwgMTI4Mjk4LCAwLCAxMDEzOCwgMCwgMCwgCi0gICAgODg5NywgMCwgMCwgODM1NywgNDEyNCwgNzc4NjIsIDY1ODM2LCAxMjA2NDEsIDEyNzkyNiwgNzc4NTksIDAsIDAsIDExMjMsIAotICAgIDk2MywgNDE1NTMsIDEwMTIwLCAxMjQwNSwgMTIwMTUwLCA5MjY2NCwgMzk4LCAxMzI3OCwgOTcyMywgNjM2NiwgMTIwMzExLCAKLSAgICA3OTQ1LCAwLCA0NDAyLCA5OTcwLCAxMjQwMiwgMCwgNDIzOTIsIDEzMDUsIDEyNDA4LCAwLCA0NDAwNywgMCwgMCwgNDE0NjQsIAotICAgIDEyNDExLCAxMjk2OSwgMTIwODI0LCA0MTQ2NSwgMCwgODUyOCwgMTU3NSwgMCwgNjM5NTUsIDE2NSwgMzAyNCwgNDE0NjcsIAotICAgIDExOTE2MywgMCwgOTA5MywgMCwgOTE0NywgMCwgNjM5NTgsIDAsIDkxNDgsIDk2OTIsIDQwOTYsIDUzLCA3Mzc3NiwgNjc1MCwgCi0gICAgMTk1MDE4LCAwLCA5NTk0LCAwLCAwLCA0MzUyNywgMCwgNzI3LCAxOTQ3MDMsIDAsIDU4MDUsIDAsIDY3MjYsIDAsIDQyMTc2LCAKLSAgICAxMjM3MCwgMTE2NTUsIDExOTA5NSwgMTA1OTEsIDEyMzY0LCAwLCAxMjM3MiwgMTIwNjQyLCAxMjAzMDcsIDAsIDkyMzQzLCAKLSAgICAwLCAxMjM2NiwgMTA5NjMsIDYwNjYsIDEzMjksIDAsIDMwNTIsIDkyMjAsIDAsIDY0NDc4LCAxOTQ3MDEsIDEwODAzLCAKLSAgICA0MTMyLCAxMjAzMDYsIDY4NDc0LCA5MjQ3MywgMCwgMCwgNzQ4MzcsIDEyMDE1NSwgMTQ5OSwgMCwgODA1NSwgNDI3NDAsIAorICAgIDAsIDk4Mzg3NSwgODUzLCA0MjY5MywgMTk1MDE0LCAwLCA5ODM2MzgsIDUwMTYsIDQzNTM1LCA2Mzg5MywgNDI4MzUsIAorICAgIDk0OTEsIDkxNzkxMywgMCwgOTE3OTE0LCAwLCAxMjcxMiwgNzEwNSwgMTI3ODA3LCA2NTA2MCwgMTIwNzk3LCA5OTAwLCAKKyAgICA3NzUwLCAwLCAxOTQ5MTksIDAsIDEyNzgzMCwgMCwgNjQ3NzgsIDEyNTg1LCAxMDU2NSwgMTI4MTUxLCAxMjE3NywgMCwgMCwgCisgICAgMCwgNzc4MjQsIDAsIDQ5MDAsIDEyNzg3NCwgMTI4NzgsIDkyNjMwLCA4OTg0LCA0MTE5LCA3NDc2OCwgODk3MSwgNzg1OTMsIAorICAgIDQzMTEzLCA5NzAyLCA3ODU5NCwgMTEwMjUsIDkyNDUsIDEzMDQ4LCA0OTI3LCA0MTM4LCA3NDE4NSwgOTI0ODEsIDkyNzEwLCAKKyAgICAxMjM5NywgNzc4MjcsIDAsIDEzMDU0LCAxMjM5NCwgMCwgMCwgMCwgMTMwNTMsIDAsIDM5NDgsIDEwNzgxLCAxNTQ2LCAwLCAKKyAgICA1MDEwLCAxNjgwLCAxMDUwNywgNzg1OTAsIDc4NTgzLCAwLCAwLCAwLCAxOTQ5MTUsIDcyNjcsIDAsIDc0ODMzLCAxMjgxODEsIAorICAgIDU5OTMsIDI4MTksIDAsIDEyNzA2LCA3Nzg0MCwgMTg5MywgNzI2NiwgNjM5MTUsIDcyNjQsIDcyNjUsIDAsIDEzNjMsIDAsIAorICAgIDYzOTk3LCA2MzkxMCwgNjM5OTYsIDMwNzcsIDAsIDAsIDE1MTIsIDY5OTI5LCAxMjU4OSwgNDE0NzksIDEyODMxMywgMCwgCisgICAgNDMzMzksIDAsIDk4MzYsIDEyMDcyNywgMCwgNDE0ODEsIDQzMzM1LCA3ODMyLCA0MjM0MywgMzA5MCwgNDMzMzcsIDgxNywgCisgICAgMTY2NCwgMTg1MCwgMTI4ODQxLCAzMDc5LCAxMTM0MCwgNDI0MDgsIDQyNDQ3LCAxMjcxNDAsIDEyMDAyMCwgNDIzMDcsIAorICAgIDEyMzg2LCA0MjMwNCwgOTE3NTU1LCAwLCAxMjM4OSwgMCwgOTIzNjYsIDQxOTk2LCAxMTUyNiwgNjM5ODUsIDU4NjQsIAorICAgIDExNDcsIDYzOTkyLCA0Mjg4NywgMTk4NywgOTI3MTgsIDU0ODAsIDc4NTgsIDExNjUzLCA0MTE2LCAxMjM5MSwgNjYxOTMsIAorICAgIDAsIDQ5MzksIDEyMzg0LCAwLCAwLCA0MTY4NiwgNjM5MDUsIDExOTYwMSwgMTk0Njg4LCA5ODMxOTAsIDAsIDEyNjQ5LCAwLCAKKyAgICAwLCA4MjQ3LCA1MDcsIDkxLCAyMDQyLCAxMjA3NzUsIDQzNjQzLCAxOTQ2ODksIDY2MDI4LCAxMDAzNiwgNDE4NDQsIAorICAgIDExOTgxMywgNzc0LCAxMTk4MjksIDAsIDExOTgxNSwgNTk5NCwgMTI1MzksIDAsIDc4Mzc1LCAxMjA1OTcsIDExOTgzMywgCisgICAgOTgzMTA1LCAxMTk2MDAsIDAsIDAsIDc3MTksIDYwMjYsIDI0ODYsIDEyODMxMiwgMTE5ODA4LCAxNjIsIDAsIDY1MjE5LCAKKyAgICA0MTA3MywgOTY4NywgNDE2ODEsIDYzMDQsIDExOTgxMiwgNjYxOTYsIDE5NDg4MSwgNTI2MiwgMCwgNTUyMzMsIDEyNjgxLCAKKyAgICA0MjM3OSwgMCwgNzUzNCwgMTIyMTksIDAsIDEyNzUyOCwgNDI4MTAsIDEwNDkyLCAwLCA5ODM2NTIsIDAsIDQzMTE5LCAwLCAKKyAgICAxMjA3NTMsIDEyNDAzLCAyNTAwLCAxOTUwMTMsIDAsIDQ4OTksIDEyNzI5LCAwLCAwLCA3NDExMywgMjM0MywgNDEwMywgCisgICAgMTk5NDYsIDc0MTEyLCA3Nzg1MSwgMTMxMTIsIDAsIDE5NTAxMiwgMTI4NTksIDcwMDg3LCAxMjAxNDgsIDY2MzY5LCA1ODYxLCAKKyAgICAxMjc3NTgsIDExOTk5LCAxMjQwMCwgMCwgOTgzODMwLCAxMjY0NSwgNTE0NiwgMTEzMjAsIDY4NDEwLCA2NzQ4LCA2NTA0MCwgCisgICAgMCwgNjQxODQsIDEyOTc0LCA2NDE4MywgNjc2MTMsIDEyMDY0NSwgNTE0NywgMCwgMCwgNzQ1MjQsIDAsIDE5MjgsIDAsIAorICAgIDY3NjQ5LCA1OTkxLCAzNDQ1LCA2NzYwOSwgNDk3NiwgNjQxNzYsIDAsIDY3NjEwLCA4MjQxLCAwLCA3Nzg2OCwgNDIwNiwgMCwgCisgICAgMCwgMCwgMTI4Mjk4LCAwLCAxMDEzOCwgMCwgMCwgODg5NywgMTIwMjM0LCAwLCA4MzU3LCA0MTI0LCA3Nzg2MiwgNjU4MzYsIAorICAgIDEyMDY0MSwgMTI3OTI2LCA3Nzg1OSwgMCwgMCwgMTEyMywgOTYzLCA0MTU1MywgMTAxMjAsIDEyNDA1LCAxMjAxNTAsIAorICAgIDkyNjY0LCAzOTgsIDEzMjc4LCA5NzIzLCA2MzY2LCAxMjAzMTEsIDc5NDUsIDAsIDQ0MDIsIDk5NzAsIDEyNDAyLCAKKyAgICA5ODMxMzYsIDQyMzkyLCAxMzA1LCAxMjQwOCwgMCwgNDQwMDcsIDAsIDAsIDQxNDY0LCAxMjQxMSwgMTI5NjksIDEyMDgyNCwgCisgICAgNDE0NjUsIDk4MzU2NSwgODUyOCwgMTU3NSwgMCwgNjM5NTUsIDE2NSwgMzAyNCwgNDE0NjcsIDExOTE2MywgMCwgOTA5MywgCisgICAgMCwgOTE0NywgMTI4Nzg3LCA2Mzk1OCwgMCwgOTE0OCwgOTY5MiwgNDA5NiwgNTMsIDczNzc2LCA2NzUwLCAxOTUwMTgsIDAsIAorICAgIDk1OTQsIDAsIDAsIDQzNTI3LCAwLCA3MjcsIDE5NDcwMywgMTk1MDIzLCA1ODA1LCAwLCA2NzI2LCAwLCA0MjE3NiwgCisgICAgMTIzNzAsIDExNjU1LCAxMTkwOTUsIDEwNTkxLCAyMjgwLCAwLCAxMjM3MiwgMTIwNjQyLCAxMjAzMDcsIDAsIDkyMzQzLCAwLCAKKyAgICAxMjM2NiwgMTA5NjMsIDYwNjYsIDEzMjksIDAsIDMwNTIsIDkyMjAsIDAsIDY0NDc4LCAxOTQ3MDEsIDEwODAzLCA0MTMyLCAKKyAgICAxMjAzMDYsIDY4NDc0LCA5MjQ3MywgMCwgOTgzMzA1LCA3NDgzNywgMTIwMTU1LCAxNDk5LCAwLCA4MDU1LCA0Mjc0MCwgCiAgICAgNjM5NjUsIDAsIDYzOTYyLCA3NDA0MiwgODkyNCwgNDMxMjMsIDU5ODgsIDM2NjAsIDYzOTY5LCAxMTc4MSwgNDI3MTgsIAogICAgIDg3ODgsIDEzNTcsIDY0ODUxLCA2NTc0MywgMCwgODc3NCwgMCwgMTI3MDg2LCA5OTQxLCAxMjAxNzIsIDAsIDE5MzMsIAogICAgIDY5NjU1LCA5NTY0LCAwLCA5MjQzNSwgNzM4NjYsIDAsIDAsIDI0ODcsIDY3NjE0LCAzMTIxLCAxODA0LCAzMzExLCA2NzYxNSwgCi0gICAgMCwgNzgzMDIsIDEyMjIwLCA2NzYxNiwgMTIwNTk4LCAxMjc0NzUsIDAsIDY4MjAwLCA2Njc1LCAxMjgxNDQsIDAsIDY3NTkyLCAKLSAgICAxMjA2ODUsIDAsIDY0NzcxLCAxMTk4LCA5MTMyLCAwLCA2NDYxOSwgNTEwLCA2NDY2MywgMCwgMCwgNDU2MSwgMjEwMSwgCi0gICAgMTM5OCwgMCwgOTI1NTQsIDc0MDM0LCA0MTU2OSwgOTI2ODQsIDExNDA2LCA4MTY3LCAxMjEyNywgMCwgODQwLCAwLCAwLCAwLCAKLSAgICA2OTY3LCAwLCAwLCA5Nzk2LCAwLCAzMzMsIDAsIDAsIDgxNDQsIDIxMTcsIDAsIDAsIDEyNDA2LCAwLCAxOTkzMSwgCi0gICAgMTE5MDg5LCA2Njc4LCA3NzY5LCAwLCAxMjYyMSwgMCwgMTI3MzY2LCAxMDIyNywgNDc2NCwgNDMxMDEsIDk5ODEsIDAsIAotICAgIDQwOTg2LCA0MTI3LCA2NjQ4NywgMCwgNDIyMDIsIDEyNzU0LCAxOTUwMjIsIDAsIDAsIDAsIDY3NTk0LCAyMDQ4LCAxMjk0NCwgCi0gICAgNDA1MCwgNjc1OTUsIDkxNzk2NywgNDMxMDIsIDEwNTgxLCAxMjk4NSwgNDUzMywgMTk1MDIxLCA3NDAwMywgNjQ5MCwgMCwgCi0gICAgMTIwMzgsIDAsIDAsIDEyMDcwNCwgNjU0NjEsIDk3OTgsIDY5NzA0LCAwLCAxOTQ4LCAxMTkwMDcsIDAsIDk1MiwgMTI4MjM1LCAKLSAgICAwLCAwLCAxMjA4MDIsIDY0NDksIDk0OTQsIDEyMDMxMywgMCwgNDMwOTgsIDQ4NDMsIDgxNDIsIDY0MTYwLCA0MDk4LCAKLSAgICA2NDE3MCwgMCwgMCwgMzQzNiwgMTE5OTczLCAwLCAxMjgxNywgNjc1OTcsIDY2NzYsIDM5MzAsIDY2NzA4LCAwLCAwLCAKLSAgICA2NzU5OCwgMCwgMCwgMCwgNjU1OTEsIDQxNTgxLCA2NTkxNiwgMTQ1MywgMCwgMCwgMCwgODUwMCwgNDIyMjIsIDEyMDE0MiwgCi0gICAgNzM3NDMsIDEyMDQwMCwgNDMxNywgMTE1NDMsIDY3Njc2LCA2NDY3NiwgMCwgMCwgNjc2MDYsIDExOTA4MywgMCwgNDIyMTcsIAotICAgIDEzMTAyLCAwLCA2NjAwMywgNjY3MiwgMCwgMCwgMCwgMCwgNjM4NDEsIDk2MTMsIDkwMDEsIDQ1MjYsIDExMjc0LCA2NzYwMSwgCi0gICAgNjQ1MjAsIDY0MjEwLCA2NjY0LCA3ODcwNCwgNDIwNTYsIDEwMjI4LCA2NDk1NywgMTEyODEsIDAsIDY0MjEzLCAxNDY5LCAKLSAgICA2NjY0MCwgNjUzODEsIDQyMTk3LCA0OTg4LCA0MjM3MiwgMCwgOTU5OCwgOTA0LCAzNTIsIDQyMjI1LCAxNDUxLCA4MDYxLCAKLSAgICA4NDUzLCA0MTM0LCAwLCA3NDg0NywgNjY1NzYsIDEyNzkxNiwgMCwgMTA1MjAsIDg1NzUsIDk5NjAsIDEyMDEsIDEyNzI4OSwgCi0gICAgMTI4NDYsIDEyNzI5MSwgMTI3MjkyLCAxMTkxOSwgNjQ5NjIsIDEyNzI4NywgNDM3MzksIDEyNzI4MSwgODUxMSwgOTQ2MCwgCi0gICAgODIzLCAxMTU4NywgMTIzMDUsIDAsIDY0Njk1LCAxMjczMDUsIDEyMzg3LCAxMjUzLCAxMzE4MywgNjU3NjYsIDUwMCwgCi0gICAgNDI3ODMsIDY1NzY1LCA2NDIwOCwgNjQzNjksIDY1NzYwLCA2NTc2MSwgMTE5NTg1LCAxMTYwNiwgNjQ3ODQsIDExNzAyLCAKLSAgICA2NjQ5OCwgOTgyMSwgNjQzMDQsIDAsIDUxNTIsIDExMDQ4LCA3NTMzLCA2ODM2NiwgNjQ0MTAsIDkyMzA1LCAwLCA0MzIzLCAKLSAgICAxMjAwNjIsIDkyNjY5LCAwLCAxMjcwNTIsIDQyNTg3LCA0MjIxNCwgNDEzOTQsIDAsIDQ3NjMsIDQxMTIsIDExODkzNSwgMCwgCi0gICAgNTI2MCwgNDMxNDMsIDAsIDMyNiwgMTIwMTMxLCA2ODQyMywgMCwgMTA3NzEsIDI4NzYsIDc0MDc0LCA5MjUzMCwgMTk0OTI0LCAKLSAgICA0MTM5OCwgNzM4MiwgOTgwMiwgMTI3MDc3LCAxMjcwNzYsIDQ1MywgNDEzOTYsIDEyMDUyNCwgNDI3MjAsIDEyMTQwLCAKLSAgICA5NTcyLCAwLCA3MDAzLCAxOTQ4ODMsIDQyMzM0LCA3NzA0LCAwLCAxOTQ4ODUsIDQzMTQ0LCA0MTIzLCA4NDk0LCA0MzE0NiwgCi0gICAgOTk3NywgMCwgMCwgNjU3NTksIDEwNzY1LCA2NDA2MSwgNDQ2NSwgOTgwOCwgNjQwNTYsIDY1NTgyLCA0MTI2LCAwLCA5NTIxLCAKLSAgICA5NTg5LCA2NDc1NSwgMCwgNjQwMjAsIDAsIDEwNDY0LCAwLCAwLCAxOTQ4NjksIDY0NTE0LCAxMTUyOCwgNjQwMjQsIAotICAgIDEyODA3MiwgNjc5LCA2NDAxMywgMCwgNTg1MCwgNzU4LCA3NTM2LCAwLCA5MjIzNCwgNDE0NDEsIDEwNjkzLCA2NDAwNiwgMCwgCi0gICAgNjQwMDUsIDQwNTgsIDExOTAxOSwgMCwgNjQ2NjAsIDAsIDExOTA1MCwgMCwgMCwgMTEzOSwgNDMyOTgsIDY0MDI3LCAKLSAgICA2NDAyOSwgODk3MCwgMCwgOTkzNCwgMCwgMTA3NzQsIDEyODAyMCwgNDIyMDEsIDEyNDIxLCAxMjgyMTYsIDAsIDE4NTIsIAotICAgIDMwNTcsIDEyODExMywgNzM3NDQsIDY0MDM0LCA2NDAzOSwgMCwgMCwgMCwgMCwgOTIzMjIsIDc2NDUsIDEyODU0LCA3NDMzOCwgCi0gICAgMzQ5NiwgMCwgMCwgMCwgOTEwMiwgNjI3LCAxMjc3OTUsIDYxNTgsIDgzMjcsIDc0NTUzLCA2NjYzMiwgMTI0MTksIDEzMzA5LCAKLSAgICAxMTU3MCwgMTI3ODExLCAxOTk2MCwgMTE2OTYsIDAsIDEwMTgsIDExODk3MCwgMTk0OTA5LCAxOTQ4OTcsIDE2ODIsIAotICAgIDE5NDg5NiwgMTk0OTExLCA0Mjc1NiwgNjc2NSwgMTk0OTA2LCAwLCAwLCA3MzgxNCwgMTE0MTIsIDY3NjgsIDEwNzI4LCAKLSAgICAxOTQ4MzAsIDExOTAxMCwgMTE4ODYzLCA0MzMxMSwgNjQ5NjYsIDExNTc3LCAwLCA0MzA0MCwgMTgzMywgMTE1NzYsIDAsIAotICAgIDc0Nzc5LCAwLCAxODUsIDY1MDg1LCA3NDUzMywgNjQ3NTQsIDE5NDg0OCwgNzUzNSwgODA4NSwgNDI1MjUsIDEyMDM4NywgCisgICAgNzAwODEsIDc4MzAyLCAxMjIyMCwgNjc2MTYsIDEyMDU5OCwgMTI3NDc1LCAwLCA2ODIwMCwgNjY3NSwgMTI4MTQ0LCAwLCAKKyAgICA2NzU5MiwgMTIwNjg1LCAwLCA2NDc3MSwgMTE5OCwgOTEzMiwgMCwgNjQ2MTksIDUxMCwgNjQ2NjMsIDAsIDAsIDQ1NjEsIAorICAgIDIxMDEsIDEzOTgsIDAsIDkyNTU0LCA3NDAzNCwgNDE1NjksIDkyNjg0LCAxMTQwNiwgODE2NywgMTIxMjcsIDAsIDg0MCwgMCwgCisgICAgMTI2NTE4LCA3MTAxLCA2OTY3LCAwLCAxOTQ4OTgsIDk3OTYsIDAsIDMzMywgNjk4OTEsIDAsIDgxNDQsIDIxMTcsIDAsIAorICAgIDk4MzU5NSwgMTI0MDYsIDAsIDE5OTMxLCAxMTkwODksIDY2NzgsIDc3NjksIDAsIDEyNjIxLCAwLCAxMjczNjYsIDEwMjI3LCAKKyAgICA0NzY0LCA0MzEwMSwgOTk4MSwgMCwgNDA5ODYsIDQxMjcsIDY2NDg3LCAwLCA0MjIwMiwgMTI3NTQsIDE5NTAyMiwgMCwgMCwgCisgICAgOTQwOTcsIDY3NTk0LCAyMDQ4LCAxMjk0NCwgNDA1MCwgNjc1OTUsIDkxNzk2NywgNDMxMDIsIDEwNTgxLCAxMjk4NSwgCisgICAgNDUzMywgMTk1MDIxLCA3NDAwMywgNjQ5MCwgMCwgMTIwMzgsIDAsIDAsIDEyMDcwNCwgNjU0NjEsIDk3OTgsIDY5NzA0LCAwLCAKKyAgICAxOTQ4LCA2OTg0MSwgMCwgOTUyLCAxMjgyMzUsIDAsIDAsIDEyMDgwMiwgNjQ0OSwgOTQ5NCwgMTIwMzEzLCAwLCA0MzA5OCwgCisgICAgNDg0MywgODE0MiwgNjQxNjAsIDQwOTgsIDY0MTcwLCAwLCAwLCAzNDM2LCAxMTk5NzMsIDAsIDEyODE3LCA2NzU5NywgCisgICAgNjY3NiwgMzkzMCwgNDI2MTUsIDAsIDAsIDY3NTk4LCAwLCAwLCAwLCA2NTU5MSwgNDE1ODEsIDY1OTE2LCAxNDUzLCAwLCAwLCAKKyAgICAwLCA4NTAwLCA0MjIyMiwgMTIwMTQyLCA3Mzc0MywgMTIwNDAwLCA0MzE3LCAxMTU0MywgNjc2NzYsIDY0Njc2LCAwLCAwLCAKKyAgICA2NzYwNiwgMTE5MDgzLCAwLCA0MjIxNywgMTMxMDIsIDAsIDY2MDAzLCA2NjcyLCAwLCAwLCAwLCA5ODM3MzgsIDYzODQxLCAKKyAgICA5NjEzLCA5MDAxLCA0NTI2LCAxMTI3NCwgNjc2MDEsIDY0NTIwLCA2NDIxMCwgNjY2NCwgNzg3MDQsIDQyMDU2LCAxMDIyOCwgCisgICAgNjQ5NTcsIDExMjgxLCAwLCAzODA3LCAxNDY5LCA2NjY0MCwgNjUzODEsIDQyMTk3LCA0OTg4LCA0MjM3MiwgMCwgOTU5OCwgCisgICAgOTA0LCAzNTIsIDQyMjI1LCAxNDUxLCA4MDYxLCA4NDUzLCA0MTM0LCAwLCA3NDg0NywgNjY1NzYsIDEyNzkxNiwgMCwgCisgICAgMTA1MjAsIDg1NzUsIDk5NjAsIDEyMDEsIDEyNzI4OSwgMTI4NDYsIDEyNzI5MSwgMTI3MjkyLCAxMTkxOSwgNjQ5NjIsIAorICAgIDEyNzI4NywgNDM3MzksIDEyNzI4MSwgODUxMSwgOTQ2MCwgODIzLCAxMTU4NywgMTIzMDUsIDAsIDY0Njk1LCAxMjczMDUsIAorICAgIDEyMzg3LCAxMjUzLCAxMzE4MywgNjU3NjYsIDUwMCwgNDI3ODMsIDY1NzY1LCA2NDIwOCwgNjQzNjksIDY1NzYwLCA2NTc2MSwgCisgICAgMTE5NTg1LCAxMTYwNiwgNjQ3ODQsIDExNzAyLCA2NjQ5OCwgOTgyMSwgNjQzMDQsIDAsIDUxNTIsIDExMDQ4LCA3NTMzLCAKKyAgICA2ODM2NiwgNjQ0MTAsIDkyMzA1LCAwLCA0MzIzLCAxMjAwNjIsIDkyNjY5LCA3MTMzMiwgMTI3MDUyLCA0MjU4NywgNDIyMTQsIAorICAgIDQxMzk0LCAwLCA0NzYzLCA0MTEyLCAxMTg5MzUsIDAsIDUyNjAsIDQzMTQzLCA5NDAzOCwgMzI2LCAxMjAxMzEsIDY4NDIzLCAKKyAgICAwLCAxMDc3MSwgMjg3NiwgNzQwNzQsIDkyNTMwLCAxOTQ5MjQsIDQxMzk4LCA3MzgyLCA5ODAyLCAxMjcwNzcsIDEyNzA3NiwgCisgICAgNDUzLCA0MTM5NiwgMTIwNTI0LCA0MjcyMCwgMTIxNDAsIDk1NzIsIDAsIDcwMDMsIDE5NDg4MywgNDIzMzQsIDc3MDQsIAorICAgIDEyNjQ5MCwgMTk0ODg1LCA0MzE0NCwgNDEyMywgODQ5NCwgNDMxNDYsIDk5NzcsIDAsIDAsIDY1NzU5LCAxMDc2NSwgCisgICAgNjQwNjEsIDQ0NjUsIDk4MDgsIDY0MDU2LCA2NTU4MiwgNDEyNiwgMCwgOTUyMSwgOTU4OSwgNjQ3NTUsIDAsIDY0MDIwLCAKKyAgICAxMjY2MDQsIDEwNDY0LCAwLCAwLCAxOTQ4NjksIDY0NTE0LCAxMTUyOCwgNjQwMjQsIDEyODA3MiwgNjc5LCA2NDAxMywgMCwgCisgICAgNTg1MCwgNzU4LCA3NTM2LCAwLCA5MjIzNCwgNDE0NDEsIDEwNjkzLCA2NDAwNiwgOTgzNTY3LCA2NDAwNSwgNDA1OCwgCisgICAgMTE5MDE5LCAxMjY0ODcsIDY0NjYwLCAwLCAxMTkwNTAsIDAsIDk4MzA2OSwgMTEzOSwgNDMyOTgsIDY0MDI3LCA2NDAyOSwgCisgICAgODk3MCwgMCwgOTkzNCwgOTgzMDk0LCAxMDc3NCwgMTI4MDIwLCA0MjIwMSwgMTI0MjEsIDEyODIxNiwgMCwgMTg1MiwgCisgICAgMzA1NywgNjQwNDYsIDczNzQ0LCA2NDAzNCwgNjQwMzksIDAsIDAsIDAsIDE5NDg5OSwgOTIzMjIsIDc2NDUsIDEyODU0LCAKKyAgICA3NDMzOCwgMzQ5NiwgMCwgMCwgMCwgOTEwMiwgNjI3LCAxMjc3OTUsIDYxNTgsIDgzMjcsIDc0NTUzLCA2NjYzMiwgMTI0MTksIAorICAgIDEzMzA5LCAxMTU3MCwgMTI3ODExLCAxOTk2MCwgMTE2OTYsIDAsIDEwMTgsIDExODk3MCwgMTk0OTA5LCAxOTQ4OTcsIAorICAgIDE2ODIsIDE5NDg5NiwgMTk0OTExLCA0Mjc1NiwgNjc2NSwgMTk0OTA2LCAwLCAwLCA3MzgxNCwgMTE0MTIsIDY3NjgsIAorICAgIDEwNzI4LCAxOTQ4MzAsIDcxMzE2LCAxMTg4NjMsIDQzMzExLCA2NDk2NiwgMTE1NzcsIDAsIDQzMDQwLCAxODMzLCAxMTU3NiwgCisgICAgMCwgNzQ3NzksIDAsIDE4NSwgNjUwODUsIDc0NTMzLCA2NDc1NCwgMTk0ODQ4LCA3NTM1LCA4MDg1LCA0MjUyNSwgMTIwMzg3LCAKICAgICA5NzQ5LCA0MTcwMSwgNjEzMSwgMTk0OSwgNDExNywgNzg0NywgMTIwNDg5LCAxOTQ3MTEsIDY0NDgzLCA2NTY5MywgMCwgMCwgCi0gICAgMCwgNjk2OTUsIDQyMjQwLCAwLCAwLCA0Mjg2NCwgMCwgNjQ2NjcsIDQxODY4LCAxMTg0LCAwLCA4MTUsIDExNDg0LCAKLSAgICAxMjc1MzUsIDY3ODQwLCAwLCAwLCAxMjg3OTMsIDAsIDEwOTg2LCA2NDY4MywgMCwgMCwgMTk0NzA5LCAwLCAwLCA5ODc5LCAKLSAgICAwLCAwLCA0MTU4LCAxMjgwNTAsIDY4MTY2LCAwLCAwLCAwLCAwLCA2OTY0NSwgMzMyLCAxMTg4MDgsIDAsIDUxNDIsIDI0MDcsIAotICAgIDY5NjQzLCA0MjE5OSwgMCwgOTI0MDQsIDc0MzczLCAwLCA1NTIxNywgMCwgNjM4NzAsIDQzMTYzLCAwLCAwLCA5MjM5MCwgCi0gICAgNDI4NjcsIDE4MzQsIDAsIDkyNDYxLCA2OTgxNywgMTA5NDAsIDY1MjQ5LCAxMTkwNDAsIDg2NjIsIDAsIDAsIDI2NTIsIAotICAgIDEyMDUyNywgNzE2NCwgMTA3ODQsIDE5NTA5MywgNjc2NzQsIDAsIDkyMjMzLCA5MjQ4MiwgMTk0NzQ5LCA3NDU2MiwgCisgICAgMCwgNjk2OTUsIDQyMjQwLCAwLCAxMjY2NTEsIDQyODY0LCAxMjY0OTgsIDY0NjY3LCA0MTg2OCwgMTE4NCwgMCwgODE1LCAKKyAgICAxMTQ4NCwgMTI3NTM1LCA2Nzg0MCwgOTgzNjQyLCAwLCA2NjE5NywgMCwgMTA5ODYsIDY0NjgzLCA5ODM3NzYsIDAsIDM0NTUsIAorICAgIDAsIDAsIDk4NzksIDAsIDAsIDQxNTgsIDEyODA1MCwgNjgxNjYsIDAsIDAsIDAsIDAsIDY5NjQ1LCAzMzIsIDExODgwOCwgMCwgCisgICAgNTE0MiwgMjQwNywgNjk2NDMsIDQyMTk5LCAwLCA5MjQwNCwgNzQzNzMsIDAsIDU1MjE3LCAwLCA2Mzg3MCwgNDMxNjMsIDAsIAorICAgIDAsIDkyMzkwLCA0Mjg2NywgMTgzNCwgMCwgOTI0NjEsIDY5ODE3LCAxMDk0MCwgNjUyNDksIDExOTA0MCwgODY2MiwgMCwgMCwgCisgICAgMjY1MiwgMTIwNTI3LCA3MTY0LCAxMDc4NCwgMTk1MDkzLCA2NzY3NCwgMCwgOTIyMzMsIDkyNDgyLCAxOTQ3NDksIDc0NTYyLCAKICAgICA5MTc1MDUsIDE4MjgsIDc0NDc0LCAxMjAzMjcsIDc4NjIwLCA4NTMxLCAxMjQ5OSwgNjI4MCwgMTIzMjQsIDExODg1NCwgCiAgICAgNjUyMzgsIDY4Mzc0LCA0ODMyLCA2NTU3MywgMCwgNjI3OSwgMTI1MDgsIDEyOTA0LCAxMjUwMiwgOTE2MSwgMCwgMTYyMCwgCi0gICAgNjQ0MzYsIDM2MDEsIDE5NTA5NCwgMTI4MDczLCAwLCA2MDksIDExNTU1LCAwLCAxMjQ5NiwgMTI3ODM5LCA3NDE4MSwgCi0gICAgNDM0MywgMTI1MDUsIDAsIDEyNzg2MywgMCwgMTEzNzcsIDIzOSwgMCwgNjM3LCAwLCAwLCA0MjY3MSwgMCwgMCwgMCwgCi0gICAgNDM1NjUsIDEyNzA4MiwgMCwgMTI2OTYsIDEyODI1NiwgMCwgMTk0Nzk2LCAxMjkyOSwgMCwgNzEyLCAwLCA0MTk3LCAwLCAKLSAgICA0MjgxOCwgMTI4Njg4LCAwLCAxMjA0OTAsIDAsIDExOTEzNywgMTUwNiwgNDM1NjIsIDAsIDAsIDAsIDEyNjUxLCAwLCAKLSAgICA2NDYyOCwgNzQ1MTcsIDEyMDU4LCA3NDA4NCwgOTE3ODM4LCA3NDk0LCAwLCA0OTI0LCA2NTU5MiwgMTE4ODQ0LCAwLCAKLSAgICAxMjcwODgsIDM1NSwgOTcxOSwgMTI3MDg3LCAxMzA2NiwgNjQ3OTYsIDAsIDAsIDEyMDMzLCA0MjE3OCwgMCwgNjk3NjAsIAotICAgIDQyNTcxLCA5MjYzNSwgMCwgMCwgMCwgMCwgMCwgMTI3MTc2LCAzMTc4LCAwLCAwLCA5MjcwNCwgMCwgOTA4MCwgMTI3MDAwLCAKLSAgICAxMjAzNTIsIDAsIDY4MjA5LCAwLCAxMTA4MiwgMCwgNTY5OSwgMTk1MTAwLCA2NjAwMCwgOTQ4OCwgNjUxNjYsIDExOTExMiwgCi0gICAgMCwgMCwgMCwgMCwgMTI4MjA4LCAwLCA1MjY1LCA2OTIzNSwgMCwgMTE0ODcsIDY3ODU4LCAxMjQ2NCwgMCwgNDMwNDUsIDAsIAotICAgIDAsIDQzMzQ1LCAwLCAxMDc3MCwgMTE4OTk0LCA2ODA3LCA0NjUsIDk4MjksIDAsIDc0MzQ4LCAwLCA0MzM0NiwgODExNiwgCi0gICAgNzk1LCAwLCAwLCAxMjQ2MiwgMTA5MzAsIDEwODMxLCAwLCAxMTg5NTIsIDY0MzYyLCA3NDMzNCwgMCwgMTIwODExLCAwLCAKLSAgICAxMjQ2OCwgODYwNywgMTAwOCwgMCwgMTAwOTIsIDE5NTA3OCwgOTE3ODQyLCA2Nzg1NSwgNTUyNTcsIDczNzcxLCAxNzY2LCAKLSAgICAxMTI4MiwgMTE5OTYsIDE4MjAsIDQ1NDcsIDAsIDAsIDAsIDAsIDEzMjIzLCAxMjg2NjUsIDY0NTk1LCAxMjcyOTQsIDAsIAotICAgIDkyMzExLCA0MzQ1LCAxMjYxNiwgMCwgMCwgMCwgNzQ0NjcsIDAsIDAsIDAsIDUzODIsIDAsIDAsIDAsIDExOTA2MCwgCi0gICAgNjQ5NTMsIDU0MDYsIDE5OTIwLCA5MjIxNiwgNjY1MTAsIDM1OTAsIDAsIDExMzAsIDAsIDAsIDQyMDE2LCAxMTgyMywgCi0gICAgNDMwMjMsIDAsIDExODg5NiwgNzc0MiwgMCwgMTMyODAsIDAsIDkzMjYsIDczODI2LCA1MzEwLCA3NDgxMiwgNzg1ODQsIAotICAgIDkyMjI5LCA4OTU5LCA0MzU4OSwgNjc0NywgNjY3MjMsIDAsIDg1NjgsIDAsIDEyMDQ5NiwgNzM4MTYsIDEyMDgwMywgMCwgCi0gICAgNDI2NzAsIDAsIDExNjIxLCAxMjQ2MCwgMCwgMTIwNjMxLCAwLCA0MzA2MywgNzQ1MTksIDEyNzE4MiwgMCwgMCwgMCwgCi0gICAgNjk3ODMsIDExNjg5LCA1NDEwLCA1NzgzLCAxMDQ2OCwgODQwMywgNTQwMCwgMTE1OTQsIDEyODI0NywgMCwgMTE4OTkwLCAKLSAgICAxMDQ5MSwgMCwgNjQ0MTIsIDAsIDAsIDU1ODcsIDQyODY1LCA2NDQwNCwgODI2OCwgNDkyMywgNjUwODYsIDg5ODEsIAotICAgIDEyMzgyLCA0MjEzMywgMTIwNzU1LCA5NzA2LCA2OTczOCwgMCwgNjY2MTAsIDEwNDYxLCAxMjEwMywgMCwgODY0MiwgMCwgCi0gICAgNDI3NjYsIDAsIDY2NTY2LCA5OTgzLCAwLCAxMTkxMDUsIDAsIDAsIDAsIDczOTgsIDQxNTE1LCAwLCAxMTgwMiwgODA0MSwgCi0gICAgMTQ2MSwgOTEwLCAxMTkxMzMsIDAsIDY3NDksIDM2NTgsIDAsIDEyMDUyNSwgMCwgNzYxNywgMTk0ODQxLCAxMjg4OCwgMCwgCi0gICAgNjc2NjgsIDEzMTQzLCAwLCA5MTkzLCAxMTA5NywgNTcwMywgMCwgNDE1MTcsIDQxNTA0LCA0MTUxOSwgMTAwMTYsIDY0MzA1LCAKLSAgICAwLCA2NTg2NCwgNjIzLCA3ODEsIDY3MCwgMTA2NjAsIDU3NjksIDYxMywgNzU0MywgMTIwMjc5LCA0NzcsIDQxMDgzLCAKLSAgICA5MjUyMSwgMCwgNTkyLCAxNTc4LCAxMjQ1OSwgNDM0NDksIDAsIDAsIDgyMjUsIDAsIDY1NCwgMTEzNDUsIDY1MywgNjUyLCAKLSAgICAwLCA2NDcsIDAsIDYzMywgMTIwNzQ0LCAwLCAwLCAxMjQ4MCwgNDMyNDMsIDAsIDM5LCAxMjQ4NywgMCwgMTIwNTI5LCAKLSAgICA3NDE5OSwgMTI0ODIsIDAsIDEyNDg5LCAwLCAzMTk1LCA1NTUwLCAwLCA3ODk3LCAwLCAxMjAzLCA3NDM5NiwgMTgxMywgCi0gICAgNjQ1NDQsIDQxMzExLCAxMjA5MCwgMCwgMjg3NywgMCwgMCwgMTY3NSwgMCwgMCwgMCwgMCwgMTAwNzAsIDEwNTk1LCAwLCAKLSAgICAxMTkwNzcsIDAsIDAsIDAsIDAsIDAsIDQzMjQ0LCAwLCAwLCAwLCAxMTk1NjEsIDAsIDAsIDE5NDkyMSwgMTI4MTYwLCAKLSAgICA5OTM5LCAwLCAwLCA3Nzg2MCwgMCwgMCwgMjcwLCAwLCAxMDcxNCwgMCwgMCwgMCwgMCwgMCwgNjUzNzIsIDAsIDc0MDM4LCAKLSAgICAxMTk1NTgsIDYyNzMsIDY2Njc5LCAzNjQsIDk1OTUsIDE5NDkwOCwgMCwgMCwgNzA3LCAwLCAwLCA5MjgyLCA2NjQ4OSwgCi0gICAgMjI0LCAwLCA2ODY3MCwgOTMzMiwgNDk2NiwgNjg2NzcsIDAsIDY4NjQ0LCAwLCAzODQxLCA2ODYzNCwgMCwgMTA3MzIsIAotICAgIDY4NjQwLCA4NTAsIDQ5NzIsIDAsIDY0Njk5LCAyOTA5LCA2ODYxOSwgNDQwMDgsIDY4NjI3LCAwLCAxMTU0NCwgMTAyMDMsIAotICAgIDk2MDgsIDAsIDAsIDExOTYyLCAxOTQ2OTQsIDEyNTA3LCAxMTk2LCAxMjg2ODcsIDEyODMxMSwgNzc3LCAxMjAxODcsIAotICAgIDQzNzUsIDY1MjcxLCA2NzY3OCwgMCwgMTIxOTgsIDAsIDY0ODI0LCAxMTkzNDMsIDAsIDk0NTQsIDYzNzc4LCA4NjU4LCAKLSAgICA0MjUyOCwgNzgwMDAsIDI3MDUsIDkxNzk3NSwgNDE1MjAsIDAsIDAsIDExOTg2LCA3NzY1LCA0MjUwMiwgODI4MCwgMCwgCi0gICAgMjcwMSwgMCwgMCwgNTc2NywgMCwgMCwgOTgwOSwgODM1MywgNjM3NDcsIDY2NzAxLCA2Mzc3MiwgMCwgNjM3NDUsIDE3NDgsIAotICAgIDYzNzcwLCAwLCAwLCAwLCA2NTU0MiwgNjM3NjYsIDU1MjQ0LCAzMDYxLCAwLCA2Mzc2NCwgNjM3ODcsIDkwNjcsIDYwOTYsIAotICAgIDAsIDc2OTQsIDAsIDcyNTcsIDYzNzY4LCAzNDg1LCAxMjk4NywgMCwgMTI3NTIyLCAxMjA2MjgsIDYzODA3LCAxNTkxLCAwLCAKLSAgICA2Mzg2LCA2Mzc4MywgMCwgMCwgMTI3MTczLCAwLCAwLCAwLCA3NDU3NSwgMCwgNjU3MTksIDEzMDgzLCA2NDU3NCwgNjUwMTIsIAotICAgIDAsIDE2NDAsIDEyNDk1LCA2NjY5MSwgNzYyNCwgMzEzOCwgMTA5OTYsIDkyMjQ3LCAxOTIyLCAwLCAxMjQ5OCwgMTA5ODcsIAotICAgIDAsIDAsIDM4OTQsIDY1NTQzLCAwLCAxOTQ4NDIsIDAsIDQ5MywgMCwgNDMxOTcsIDE3MTcsIDQyMjgsIDQ3OSwgMTAzMDMsIAotICAgIDc0MDIwLCAwLCA5MTc5MzUsIDEwMzM1LCAzNTIwLCA5MTc5MzIsIDEyNDkwLCA2NDMxNSwgMCwgMTI3MDM5LCAxMjQ5MywgCi0gICAgNjIzMywgNDI2ODEsIDEwMDIsIDEyNDkxLCAwLCA2NDkxMSwgOTI2MTUsIDIwOTYsIDY1MTIwLCAwLCAwLCAwLCAxMTYxMSwgCi0gICAgMTE2MzIsIDEyNzA0MSwgNjYyMTMsIDYzODY0LCA2NjIyMSwgNjYyMjYsIDY2MjI5LCAxMzIxOCwgNjYyMzEsIDY2MjE2LCAKLSAgICA4NTA3LCA2NjIzNiwgNjYyMTEsIDY2MjE4LCA5MjY3MiwgNjYyNDAsIDc4MDQxLCA2NjIzMywgODkyOCwgMCwgNzkwOSwgCi0gICAgNjYyMzQsIDExNjA1LCA2Mzc1OSwgMCwgNjYyMDgsIDczOTk5LCA2Mzc5OSwgNjM4MDMsIDI0NCwgMTE1NDIsIDEyODk4LCAKLSAgICAxMjQ5NCwgNzM3NjEsIDEyNDkyLCAxMjY2OSwgMCwgMCwgNzQxNTMsIDAsIDEyODI3OCwgMTIwNjgwLCA0ODgyLCAxMzA0MCwgCi0gICAgMCwgODYxMiwgNDg4NSwgNzQwNTMsIDAsIDEzMDQyLCA0ODgwLCA2NDY2MiwgMjQyOSwgMTM2MCwgMjQ4LCAwLCA2Mzc5NywgCi0gICAgOTIzOTQsIDQyMzU4LCAwLCA3MjkyLCAwLCA2Mzc1NiwgNDI3ODYsIDY2NjkzLCAwLCAxODcwLCA3ODA0MCwgNDcwLCAKLSAgICA3ODAzOCwgNzgwMzUsIDc4MDM2LCAwLCA3ODAzNCwgNDU3OSwgMTI4MDkwLCAwLCAxMjUxMSwgNzQ0NTMsIDEyNTE0LCAwLCAKLSAgICA3NDU3OSwgNzIzOSwgNzAwMSwgODYyMywgMCwgMTI4MDUyLCAxMjgwNDgsIDczNzgsIDEyNTEyLCAxMTYxNSwgNjEwNCwgMCwgCi0gICAgMCwgNjU5LCA2MDk4LCAwLCAxMjIzNCwgMTI3MzA3LCAxMjcwNjcsIDgzMTEsIDEyNTEwLCA0MTgwMywgMTMwMzksIAotICAgIDEyNzA3MiwgMTI1MTMsIDEwMjAyLCAxMjQ3MSwgMCwgODc0NywgMCwgMCwgMCwgMjMyMywgMCwgMjMxOSwgNzc5MTcsIAotICAgIDEyNDc3LCA3NzkxNiwgMjMxMSwgMCwgNDQxNSwgMjM3LCA2MjgxLCAxMjcyODAsIDAsIDAsIDIzMDksIDEzMTIsIDgxNzMsIAotICAgIDEyODg3MSwgMTI0NjksIDAsIDc4NTA1LCA2NDMzNSwgMTA2MDksIDAsIDEyODExMSwgOTM5NywgMTE1MjQsIDkzOTUsIAotICAgIDkzOTYsIDkzOTMsIDkzOTQsIDkzOTEsIDkzOTIsIDkzODksIDYyMDksIDkzODcsIDkzODgsIDQ5MzIsIDkzODYsIDkzODMsIAotICAgIDkzODQsIDY3NDAsIDAsIDY1NDUxLCA4MTg1LCAwLCA5MTc4MzIsIDQzMDI0LCA0MzMzNiwgNjc2NTksIDIzMTMsIDEyODE2NywgCi0gICAgNzk0OCwgOTIzNiwgMCwgMCwgMCwgMTA1NzAsIDQzNDczLCA2Mjg5LCAxMDQ4NCwgMCwgMCwgMTE5OTgsIDEyMDgyLCAKLSAgICAxMDkyNCwgMzE0NywgMCwgMTIwNjg0LCAxMjUyNCwgMTE5MDgxLCAyMzEwLCAxMTgxOCwgOTM4MSwgOTM4MiwgOTM3OSwgCi0gICAgOTM4MCwgOTM3NywgOTM3OCwgOTM3NSwgOTM3NiwgMTY4MywgOTM3NCwgMCwgOTM3MiwgMTI0NDQsIDAsIDAsIDEzMDE2LCAKLSAgICA4MjEwLCAwLCA0MjAyOSwgMTEwNzksIDEyMzMxLCA0MzQ1MSwgNDIwMzIsIDg3NDQsIDcyNiwgMCwgMCwgNDE1NSwgMCwgMCwgCi0gICAgNDIwMzAsIDUwMDcsIDEyNTIyLCA0MzA4OCwgMCwgNDk1MSwgMTI3ODA1LCAxMjcyNDAsIDAsIDk5MjIsIDQzMzA5LCAwLCAKLSAgICAxMjUyNSwgMCwgMTIwMTYsIDY1NzcwLCA5NTQ4LCA2NzY2NSwgNDAzLCA3ODIzMCwgMTI1MDMsIDAsIDAsIDExMDMwLCAwLCAKLSAgICA5MjU2NywgNjU2OTEsIDYzOTk4LCAxODE5LCAxMDQ5NiwgMCwgMCwgMTE5OTIwLCAwLCAxOTQ2NjgsIDAsIDEyNTA2LCAwLCAKLSAgICAxMjIzMSwgMCwgMTI1MDAsIDQ0MDIzLCAxMjUwOSwgNjQzOTMsIDc4ODMwLCAzMzg5LCAxMDU4OSwgNjYwOCwgNDEwNDcsIAotICAgIDEyMDMyMSwgNzgzOTUsIDc4Mzk0LCA3NDA2OSwgNzc5OTUsIDc4MzkxLCAzNjA4LCA4MjgxLCAxMjAzMjAsIDExMDcsIDAsIAotICAgIDkwNzYsIDg4NjIsIDY5NzQzLCA0MTA1MiwgMTMwODQsIDY0NzY2LCA0MzIxNywgNzgwMywgMTMyMjIsIDc0MTY1LCA3NDc4MiwgCi0gICAgMTI4ODE3LCA4NTQ2LCAxMTU1MywgNjM5OTUsIDEzMTc3LCA5MDQzLCA2MzAzLCAwLCA0OTgsIDY0NDcxLCAxMjAzMjQsIAorICAgIDY0NDM2LCAzNjAxLCAxOTUwOTQsIDEyODA3MywgOTgzNTYyLCA2MDksIDExNTU1LCA5ODMwOTksIDEyNDk2LCAxMjc4MzksIAorICAgIDc0MTgxLCA0MzQzLCAxMjUwNSwgMCwgMTI3ODYzLCAwLCAxMTM3NywgMjM5LCAwLCA2MzcsIDAsIDAsIDQyNjcxLCAwLCAwLCAKKyAgICAwLCA0MzU2NSwgNzEzMDYsIDEyNjQ5MywgMTI2OTYsIDEyODI1NiwgMCwgOTQwNjIsIDEyOTI5LCAwLCA3MTIsIDAsIDQxOTcsIAorICAgIDk4MzIwNCwgNDI4MTgsIDEyNjYzMiwgMCwgMTIwNDkwLCAwLCAxMTkxMzcsIDE1MDYsIDQzNTYyLCAwLCA5MjQ5MSwgMCwgCisgICAgMTI2NTEsIDAsIDY0NjI4LCA3NDUxNywgMTIwNTgsIDc0MDg0LCA5MTc4MzgsIDc0OTQsIDAsIDQ5MjQsIDY1NTkyLCAKKyAgICAxMTg4NDQsIDAsIDEyNzA4OCwgMzU1LCA5NzE5LCAxMjcwODcsIDEzMDY2LCA2NDc5NiwgMCwgMCwgMTIwMzMsIDQyMTc4LCAKKyAgICAwLCA2OTc2MCwgNDI1NzEsIDkyNjM1LCAwLCAwLCAwLCAwLCAwLCAxMjcxNzYsIDMxNzgsIDAsIDAsIDkyNzA0LCAwLCAKKyAgICA5MDgwLCAxMjcwMDAsIDEyMDM1MiwgMCwgNjgyMDksIDAsIDExMDgyLCAwLCA1Njk5LCAxOTUxMDAsIDY2MDAwLCA5NDg4LCAKKyAgICA2NTE2NiwgMTE5MTEyLCAwLCAwLCAwLCAwLCA3MTMxMywgMCwgNTI2NSwgNjkyMzUsIDAsIDExNDg3LCA2Nzg1OCwgMTI0NjQsIAorICAgIDAsIDQzMDQ1LCAwLCAwLCA0MzM0NSwgMCwgMTA3NzAsIDExODk5NCwgNjgwNywgNDY1LCA5ODI5LCAwLCA3NDM0OCwgMCwgCisgICAgNDMzNDYsIDgxMTYsIDc5NSwgMCwgMCwgMTI0NjIsIDEwOTMwLCAxMDgzMSwgMCwgMTE4OTUyLCA2NDM2MiwgNzQzMzQsIAorICAgIDk4MzYwMiwgMTIwODExLCAwLCAxMjQ2OCwgODYwNywgMTAwOCwgMCwgMTAwOTIsIDE5NTA3OCwgOTE3ODQyLCA2Nzg1NSwgCisgICAgNTUyNTcsIDczNzcxLCAxNzY2LCAxMTI4MiwgMTE5OTYsIDE4MjAsIDQ1NDcsIDAsIDAsIDAsIDAsIDEzMjIzLCAxMjg2NjUsIAorICAgIDY0NTk1LCAxMjcyOTQsIDAsIDkyMzExLCA0MzQ1LCAxMjYxNiwgMCwgMCwgMCwgNzQ0NjcsIDAsIDAsIDAsIDUzODIsIDAsIAorICAgIDAsIDAsIDExOTA2MCwgNjQ5NTMsIDU0MDYsIDE5OTIwLCA2OTg5NywgNjY1MTAsIDM1OTAsIDE5NDg2NCwgMTEzMCwgMCwgMCwgCisgICAgNDIwMTYsIDExODIzLCA0MzAyMywgMCwgMTE4ODk2LCA3NzQyLCAwLCAxMzI4MCwgNzEzMjMsIDkzMjYsIDczODI2LCA1MzEwLCAKKyAgICA3NDgxMiwgNzg1ODQsIDkyMjI5LCA4OTU5LCA0MzU4OSwgNjc0NywgNjY3MjMsIDAsIDg1NjgsIDAsIDEyMDQ5NiwgNzM4MTYsIAorICAgIDEyMDgwMywgOTgzODM5LCA0MjY3MCwgMCwgMTE2MjEsIDEyNDYwLCAwLCAxMjA2MzEsIDAsIDQzMDYzLCA3NDUxOSwgCisgICAgMTI3MTgyLCAwLCA3MzkxNywgNzg0MywgNjk3ODMsIDExNjg5LCA1NDEwLCA1NzgzLCAxMDQ2OCwgODQwMywgNTQwMCwgCisgICAgMTE1OTQsIDEyODI0NywgMCwgMTE4OTkwLCAxMDQ5MSwgNjk4NDIsIDY0NDEyLCAwLCAwLCA1NTg3LCA0Mjg2NSwgNjQ0MDQsIAorICAgIDgyNjgsIDQ5MjMsIDY1MDg2LCA4OTgxLCAxMjM4MiwgNDIxMzMsIDEyMDc1NSwgOTcwNiwgNjk3MzgsIDAsIDY2NjEwLCAKKyAgICAxMDQ2MSwgMTIxMDMsIDAsIDg2NDIsIDAsIDQyNzY2LCA5ODM4NTcsIDIyMTAsIDk5ODMsIDAsIDk0MDA5LCAwLCAwLCAwLCAKKyAgICA3Mzk4LCA0MTUxNSwgMCwgMTE4MDIsIDgwNDEsIDE0NjEsIDkxMCwgMTE5MTMzLCAwLCA2NzQ5LCAzNjU4LCA5Mzk2NCwgCisgICAgMTIwNTI1LCAwLCA3NjE3LCAxOTQ4NDEsIDEyODg4LCAxMjc5ODMsIDY3NjY4LCAxMzE0MywgMCwgOTE5MywgMTEwOTcsIAorICAgIDU3MDMsIDAsIDQxNTE3LCA0MTUwNCwgNDE1MTksIDEwMDE2LCA2NDMwNSwgMCwgNjU4NjQsIDYyMywgNzgxLCA2NzAsIAorICAgIDEwNjYwLCA1NzY5LCA2MTMsIDc1NDMsIDEyMDI3OSwgNDc3LCA0MTA4MywgOTI1MjEsIDAsIDU5MiwgMTU3OCwgMTI0NTksIAorICAgIDQzNDQ5LCAwLCAwLCA4MjI1LCAwLCA2NTQsIDExMzQ1LCA2NTMsIDY1MiwgMCwgNjQ3LCAwLCA2MzMsIDEyMDc0NCwgMCwgCisgICAgMTI2NDcyLCAxMjQ4MCwgNDMyNDMsIDAsIDM5LCAxMjQ4NywgMCwgMTIwNTI5LCA3NDE5OSwgMTI0ODIsIDAsIDEyNDg5LCAwLCAKKyAgICAzMTk1LCA1NTUwLCA5ODM1NTQsIDc4OTcsIDAsIDEyMDMsIDc0Mzk2LCAxODEzLCA2NDU0NCwgNDEzMTEsIDEyMDkwLCAwLCAKKyAgICAyODc3LCAwLCAwLCAxNjc1LCA2OTg0MCwgMCwgMCwgMCwgMTAwNzAsIDEwNTk1LCAwLCAxMTkwNzcsIDE5NDc3NywgCisgICAgOTgzNjExLCAwLCAwLCAwLCA0MzI0NCwgMCwgMCwgOTgzOTA3LCAxMTk1NjEsIDk4MzA3OCwgMCwgMTk0OTIxLCAxMjgxNjAsIAorICAgIDk5MzksIDAsIDk4MzE1MSwgNzc4NjAsIDAsIDAsIDI3MCwgMCwgMTA3MTQsIDAsIDAsIDAsIDAsIDAsIDY1MzcyLCAwLCAKKyAgICA3NDAzOCwgMTE5NTU4LCA2MjczLCA2NjY3OSwgMzY0LCA5NTk1LCAxOTQ5MDgsIDAsIDAsIDcwNywgMCwgMCwgOTI4MiwgCisgICAgNjY0ODksIDIyNCwgMCwgNjg2NzAsIDkzMzIsIDQ5NjYsIDY4Njc3LCAwLCA2ODY0NCwgMCwgMzg0MSwgNjg2MzQsIDAsIAorICAgIDEwNzMyLCA2ODY0MCwgODUwLCA0OTcyLCAwLCAxMjg5MCwgMjkwOSwgNjg2MTksIDQ0MDA4LCA2ODYyNywgOTgzNzA5LCAKKyAgICAxMTU0NCwgMTAyMDMsIDk2MDgsIDAsIDAsIDExOTYyLCAxOTQ2OTQsIDEyNTA3LCAxMTk2LCAxMjg2ODcsIDEyODMxMSwgCisgICAgNzc3LCAxMjAxODcsIDQzNzUsIDY1MjcxLCA2NzY3OCwgMCwgMTIxOTgsIDAsIDY0ODI0LCAxMTkzNDMsIDk4MzIzMCwgCisgICAgOTQ1NCwgNjM3NzgsIDg2NTgsIDQyNTI4LCA3ODAwMCwgMjcwNSwgOTE3OTc1LCA0MTUyMCwgMCwgMCwgMTE5ODYsIDc3NjUsIAorICAgIDQyNTAyLCA4MjgwLCA3NDUyMCwgMjcwMSwgMCwgMTI3MDAyLCA1NzY3LCAwLCAwLCA5ODA5LCA4MzUzLCA2Mzc0NywgCisgICAgNjY3MDEsIDYzNzcyLCA5ODM4MDUsIDYzNzQ1LCAxNzQ4LCA2Mzc3MCwgMCwgMCwgMCwgNjU1NDIsIDYzNzY2LCA1NTI0NCwgCisgICAgMzA2MSwgMCwgNjM3NjQsIDYzNzg3LCA5MDY3LCA2MDk2LCAwLCA3Njk0LCAwLCA3MjU3LCA2Mzc2OCwgMzQ4NSwgMTI5ODcsIAorICAgIDAsIDEyNzUyMiwgMTIwNjI4LCA2MzgwNywgMTU5MSwgMCwgNjM4NiwgNjM3ODMsIDAsIDAsIDkyNTM1LCAwLCAwLCAwLCAKKyAgICA3NDU3NSwgMCwgNjU3MTksIDEzMDgzLCA2NDU3NCwgNjUwMTIsIDAsIDE2NDAsIDEyNDk1LCA2NjY5MSwgNzYyNCwgMzEzOCwgCisgICAgMTA5OTYsIDkyMjQ3LCAxOTIyLCAwLCAxMjQ5OCwgMTA5ODcsIDY5OTM2LCA2OTkzOSwgMzg5NCwgNjU1NDMsIDAsIAorICAgIDE5NDg0MiwgOTgzNTg4LCA0OTMsIDAsIDQzMTk3LCAxNzE3LCA0MjI4LCA0NzksIDEwMzAzLCA3NDAyMCwgMCwgOTE3OTM1LCAKKyAgICAxMDMzNSwgMzUyMCwgOTE3OTMyLCAxMjQ5MCwgNjQzMTUsIDAsIDEyNzAzOSwgMTI0OTMsIDYyMzMsIDQyNjgxLCAxMDAyLCAKKyAgICAxMjQ5MSwgMCwgNjQ5MTEsIDkyNjE1LCAyMDk2LCA2NTEyMCwgMCwgNzgyMTksIDk4MzA4MSwgMTE2MTEsIDExNjMyLCAKKyAgICAxMjcwNDEsIDY2MjEzLCA2Mzg2NCwgNjYyMjEsIDY2MjI2LCA2NjIyOSwgMTMyMTgsIDY2MjMxLCA2NjIxNiwgODUwNywgCisgICAgNjYyMzYsIDY2MjExLCA2NjIxOCwgOTI2NzIsIDY2MjQwLCA3ODA0MSwgNjYyMzMsIDg5MjgsIDk4MzU1MiwgNzkwOSwgCisgICAgNjYyMzQsIDExNjA1LCA2Mzc1OSwgOTgzNjQ1LCA2NjIwOCwgNzM5OTksIDYzNzk5LCA2MzgwMywgMjQ0LCAxMTU0MiwgCisgICAgMTI4OTgsIDEyNDk0LCA3Mzc2MSwgMTI0OTIsIDEyNjY5LCAwLCAwLCA3NDE1MywgMCwgMTI4Mjc4LCAxMjA2ODAsIDQ4ODIsIAorICAgIDEzMDQwLCAwLCA4NjEyLCA0ODg1LCA3NDA1MywgMCwgMTMwNDIsIDQ4ODAsIDY0NjYyLCAyNDI5LCAxMzYwLCAyNDgsIDAsIAorICAgIDYzNzk3LCA5MjM5NCwgNDIzNTgsIDAsIDcyOTIsIDAsIDYzNzU2LCA0Mjc4NiwgNjY2OTMsIDAsIDE4NzAsIDc4MDQwLCAKKyAgICA0NzAsIDc4MDM4LCA3ODAzNSwgNzgwMzYsIDcwMDI4LCA3ODAzNCwgNDU3OSwgMTI4MDkwLCAwLCAxMjUxMSwgNzQ0NTMsIAorICAgIDEyNTE0LCAwLCA3NDU3OSwgNzIzOSwgNzAwMSwgODYyMywgOTQwMTEsIDEyODA1MiwgMTI4MDQ4LCA3Mzc4LCAxMjUxMiwgCisgICAgMTE2MTUsIDYxMDQsIDAsIDAsIDY1OSwgNjA5OCwgMCwgMTIyMzQsIDEyNzMwNywgMTI3MDY3LCA4MzExLCAxMjUxMCwgCisgICAgNDE4MDMsIDEzMDM5LCAxMjcwNzIsIDEyNTEzLCAxMDIwMiwgMTI0NzEsIDAsIDg3NDcsIDk4MzkxMSwgMCwgMCwgMjMyMywgCisgICAgMCwgMjMxOSwgNzc5MTcsIDEyNDc3LCA3NzkxNiwgMjMxMSwgMCwgNDQxNSwgMjM3LCA2MjgxLCAxMjcyODAsIDAsIDAsIAorICAgIDIzMDksIDEzMTIsIDgxNzMsIDEyODg3MSwgMTI0NjksIDAsIDc4NTA1LCA2NDMzNSwgMTA2MDksIDAsIDEyODExMSwgOTM5NywgCisgICAgMTE1MjQsIDkzOTUsIDkzOTYsIDkzOTMsIDkzOTQsIDkzOTEsIDkzOTIsIDkzODksIDYyMDksIDkzODcsIDkzODgsIDQ5MzIsIAorICAgIDkzODYsIDkzODMsIDkzODQsIDY3NDAsIDAsIDY1NDUxLCA4MTg1LCAwLCA5MTc4MzIsIDQzMDI0LCA0MzMzNiwgNjc2NTksIAorICAgIDIzMTMsIDEyODE2NywgNzk0OCwgOTIzNiwgOTI1NzEsIDAsIDAsIDEwNTcwLCA0MzQ3MywgNjI4OSwgMTA0ODQsIDAsIDAsIAorICAgIDExOTk4LCAxMjA4MiwgMTA5MjQsIDMxNDcsIDAsIDEyMDY4NCwgMTI1MjQsIDExOTA4MSwgMjMxMCwgMTE4MTgsIDkzODEsIAorICAgIDkzODIsIDkzNzksIDkzODAsIDkzNzcsIDkzNzgsIDkzNzUsIDkzNzYsIDE2ODMsIDkzNzQsIDk4Mzc2OSwgOTM3MiwgCisgICAgMTI0NDQsIDAsIDAsIDEzMDE2LCA4MjEwLCA5ODM5NDksIDQyMDI5LCAxMTA3OSwgMTIzMzEsIDQzNDUxLCA0MjAzMiwgCisgICAgODc0NCwgNzI2LCAwLCA5ODM4MjgsIDQxNTUsIDAsIDAsIDQyMDMwLCA1MDA3LCAxMjUyMiwgNDMwODgsIDAsIDQ5NTEsIAorICAgIDEyNzgwNSwgMTI3MjQwLCAwLCA5OTIyLCA0MzMwOSwgOTgzODMyLCAxMjUyNSwgOTgzNDYzLCAxMjAxNiwgNjU3NzAsIAorICAgIDk1NDgsIDY3NjY1LCA0MDMsIDc4MjMwLCAxMjUwMywgMCwgMCwgMTEwMzAsIDAsIDkyNTY3LCA2NTY5MSwgNjM5OTgsIAorICAgIDE4MTksIDEwNDk2LCAwLCAwLCAxMTk5MjAsIDAsIDE5NDY2OCwgMCwgMTI1MDYsIDAsIDEyMjMxLCAwLCAxMjUwMCwgCisgICAgNDQwMjMsIDEyNTA5LCA2NDM5MywgNzg4MzAsIDMzODksIDEwNTg5LCA2NjA4LCA0MTA0NywgMTIwMzIxLCA3ODM5NSwgCisgICAgNzgzOTQsIDc0MDY5LCA3Nzk5NSwgNzgzOTEsIDM2MDgsIDgyODEsIDEyMDMyMCwgMTEwNywgMCwgOTA3NiwgODg2MiwgCisgICAgNjk3NDMsIDQxMDUyLCAxMzA4NCwgNjQ3NjYsIDQzMjE3LCA3ODAzLCAxMzIyMiwgNzQxNjUsIDc0NzgyLCAxMjY1MTQsIAorICAgIDg1NDYsIDExNTUzLCA2Mzk5NSwgMTMxNzcsIDkwNDMsIDYzMDMsIDk4MzkzOCwgNDk4LCA2NDQ3MSwgMTIwMzI0LCAKICAgICAxMjg1NjcsIDEyNTI5LCA4MDQyLCAwLCAyMzQ0LCAxMjUyOCwgODAzMSwgMjQxNCwgMCwgNjk3MTksIDMyMzEsIDAsIDY0MjIsIAogICAgIDY2NTEyLCA2OTY1MywgMTI1MzAsIDI1MzcsIDc4NDA1LCA0MTQyOSwgMTI2NTgsIDEzMDM2LCA2NTc3MiwgMCwgNzg3MzgsIAogICAgIDQxNDMzLCA0NzE5LCA0NjksIDAsIDQzNjMsIDMzMTMsIDQxNDI4LCA3ODQwNywgMjAyMywgMTc3MiwgNzgyMjQsIDc4MjI1LCAKICAgICA2NTcwNiwgMTAwNTEsIDY0ODEyLCA3ODIyMCwgMCwgOTkyMCwgMTIyMTUsIDAsIDQ5MzEsIDE5NTEsIDEyNDk3LCAxMTkzNjMsIAogICAgIDk2MDcsIDAsIDk2NjMsIDAsIDExOTYzNCwgNjUwMywgNDExMTAsIDAsIDE0OTEsIDAsIDAsIDEyNzMwNCwgNDEwNjEsIDAsIAotICAgIDAsIDEyNzE4NywgNjUwMjYsIDQxOTkzLCA0MTUwOSwgMTEwNDUsIDY1MDI4LCA3ODYwMiwgNjY0NzYsIDQxMTA4LCA5NzM4LCAKLSAgICA0MTk5NSwgMTA3NSwgMTk1OCwgMTI1MzUsIDQxOTkyLCA0MTUwNiwgMCwgNDE2ODcsIDAsIDEyMDcxNywgMTI3Nzc2LCAKLSAgICA5OTQwLCAxMjcyOTksIDc2OTIsIDAsIDgwMDgsIDQxMTMxLCAzMzAsIDg1NjYsIDY1MDgzLCA0MTEzMywgOTgxNiwgCi0gICAgMTI4MDc0LCAxMjUzMiwgNzg1NTAsIDc4NTQ2LCAzNTA4LCAxMjcwNTgsIDQzMjM1LCAwLCAxMjcyOTgsIDY0MTM5LCAKKyAgICAxOTQ4MzgsIDEyNzE4NywgNjUwMjYsIDQxOTkzLCA0MTUwOSwgMTEwNDUsIDY1MDI4LCA3ODYwMiwgNjY0NzYsIDQxMTA4LCAKKyAgICA5NzM4LCA0MTk5NSwgMTA3NSwgMTk1OCwgMTI1MzUsIDQxOTkyLCA0MTUwNiwgMCwgNDE2ODcsIDAsIDEyMDcxNywgCisgICAgMTI3Nzc2LCA5OTQwLCAxMjcyOTksIDc2OTIsIDk4MzgyNCwgODAwOCwgNDExMzEsIDMzMCwgODU2NiwgNjUwODMsIDQxMTMzLCAKKyAgICA5ODE2LCAxMjY1MTcsIDEyNTMyLCA3ODU1MCwgNzg1NDYsIDM1MDgsIDEyNzA1OCwgNDMyMzUsIDAsIDEyNzI5OCwgNjQxMzksIAogICAgIDc4MjMxLCA2NDExLCAxMjkxMCwgNzg1NTQsIDY2NjQ0LCAxMzAyOCwgNjczNywgMTI1MzcsIDAsIDAsIDY0MTM2LCAxMjUzNiwgCi0gICAgMjM1MCwgMTMwMjksIDc4MjMzLCAwLCAwLCAxMzAzMCwgNjcwMiwgNDUyNywgMCwgMTI1MzgsIDEyODgxMCwgMCwgNjU1OTksIAotICAgIDY1NzE3LCA5OTY2LCAwLCA0OTQ4LCAxMjQ4NCwgNDAzMiwgMTI4MTQ5LCAxMjYyMywgMCwgNjIwNywgMCwgNjExNywgCi0gICAgNjU5MzAsIDg0MTIsIDAsIDc0MzgsIDEyOTYsIDIzMjUsIDQxNTExLCAwLCAxMDE0OSwgNzQxMTgsIDAsIDEyNzI4NiwgCi0gICAgMTI0ODEsIDAsIDEyNDg4LCAwLCAwLCA0MTU1NiwgNjQ0MTQsIDExODgwMiwgMjM1NCwgMTI4NTcxLCA3Mzc2NiwgMCwgCi0gICAgNjI5NSwgOTAxLCA0MTUxMCwgNzk1MywgMCwgNjUwMzIsIDQxNTEzLCAwLCAxMTkyNywgNjY1ODQsIDc4NTU5LCA3ODU2MCwgCi0gICAgNzg1NTcsIDc4NTU4LCAwLCA3ODU1NiwgODQ4LCA5ODY4LCAwLCA2NDI0LCA3ODU2OCwgMTE5MzM4LCA3ODU2NSwgNzQwMzEsIAotICAgIDc4NTYzLCA3ODU2NCwgMjM1MiwgNzg1NzIsIDg5MywgNjQ1NzYsIDExMjg5LCAxNDA3LCAwLCAwLCAxMzAyNiwgNjc2MiwgCi0gICAgNzg1NzksIDc4NTgwLCAxMzAyMywgODkwMywgOTc3NywgNjY3MTUsIDE4NzEsIDgwOTksIDAsIDAsIDEzNDMsIDAsIDAsIAotICAgIDkzMjUsIDY4MTgsIDYyODMsIDExNzM4LCAwLCAwLCAwLCAxMTc0MSwgMCwgMCwgOTIxNiwgODI2MywgMTEyNzksIDE5NDc1MiwgCi0gICAgMCwgMTk0NzU0LCAxMzAyMSwgNjQ0OTQsIDMxMzYsIDE5NDc1OCwgMTk0NzU3LCAxOTQ3NjAsIDEzMDIyLCA0MjczNywgCi0gICAgOTk1NiwgMCwgMCwgNzQ1NTIsIDEwMDE0LCAwLCA0MTI2MCwgMTE5MzQwLCAxMzAyMCwgMTAwMjQsIDE5NDc2NCwgMTk0NzY3LCAKLSAgICA3NDM0MCwgNjk2ODEsIDAsIDY0OTQ1LCA4MDI5LCAwLCAwLCAwLCAzMzM1LCAwLCAwLCA5Nzc2LCAxMjA1MjYsIDE5NDc0OCwgCi0gICAgNTIxNSwgNDI2NDQsIDMzMzMsIDE2MzIsIDE5NDc1MSwgNjQ4NDksIDMzNDIsIDc4NTgyLCA1MzYzLCAxMjk1NywgNzg1ODEsIAotICAgIDQxNTYsIDAsIDAsIDY0MjEsIDc4NTkxLCAxNjExLCA3ODU4OSwgMTMwMTgsIDc0MjU3LCA3ODU4OCwgNzQ1NDIsIDMzMzcsIAotICAgIDQ1MzcsIDY3ODk1LCAxMTczNiwgMCwgNjg2MDgsIDY0ODIsIDQyMTQsIDczNzkwLCAxMTk0NSwgMCwgMTMwNDYsIDg4MzgsIAotICAgIDQyNSwgNDAyNSwgMTA3MDksIDc4NTk1LCAyMTA4LCAyMzkyLCAxMzA0NywgMCwgMCwgNjgxOSwgMTMwNDksIDY0OTksIAotICAgIDkyMjQzLCAxMjQyNCwgNjg2MTQsIDczOTQ0LCAxMzA1MCwgOTkyNCwgMTk0NzQ1LCA2NTA3LCAxMjc5MTksIDAsIDEyODA2OSwgCi0gICAgMzI3NywgODkyOSwgNDk0NywgNDEwNTUsIDAsIDE5NDcyMiwgMTk0NzIxLCAxOTQ3MjQsIDEzMDQ1LCA2NDYyNiwgNjYwMzQsIAotICAgIDc3NTEsIDE5NDcyNywgODM3MSwgMTk0NzI5LCAzOTk3LCAxMjgwNiwgODc2OCwgMTMwNDQsIDAsIDEyNDIwLCA0MDI0LCAKLSAgICAxOTQ3MzAsIDQxMDU0LCAxMDc4LCA5NzU3LCA2OTczNiwgNDEwNTcsIDAsIDAsIDAsIDAsIDAsIDkyMjEwLCA5MjQxMSwgMCwgCi0gICAgNDE0OTYsIDAsIDkxNjUsIDE1NzIsIDExOTExLCAwLCAxMTg4NDIsIDIzNDYsIDEzMjcwLCA4OTU4LCAwLCA5NjQ2LCAzNzczLCAKLSAgICA0MzE4MywgNjQwMSwgNTgzMSwgMCwgMCwgMTMwNDMsIDgwNTYsIDkyNDk0LCA2NTY4MSwgMjA4LCAxMjczODIsIDQxNTE0LCAKLSAgICAwLCAwLCAwLCAxMDY5OSwgNjQwOCwgOTIyMjcsIDc4MjUsIDU2NjEsIDAsIDEyMDYzMCwgMzYwMywgNDExMDksIDIzOTgsIAotICAgIDM1NDgsIDAsIDAsIDExOTkzMywgMCwgMzExNSwgOTkxOCwgMCwgMTEzMjEsIDQyOTEyLCAwLCAwLCAxOTQ3MjYsIDQ4NzYsIAotICAgIDY1ODA0LCAwLCAwLCA0MzQ2OCwgMCwgNDE1NTgsIDQxNDcxLCA3Mzk1MCwgODE1OCwgOTk0NCwgNDE0NzIsIDEyMDI5OCwgCi0gICAgMTMwNTEsIDc4Njg5LCAzMTQzLCAxOTQ2NzQsIDY3MDEsIDQxNTU5LCAxODk2LCA2NjI1NiwgMTMwNTIsIDE5NDY4MCwgCi0gICAgNTY2NSwgMCwgMTE5MDcxLCA3MDI1LCA2Mzk3NCwgMCwgNzQzNTIsIDc0MTYxLCA0MTU0LCA5ODYzLCA0MzU1MCwgMTIzMTAsIAotICAgIDU2NjIsIDQyMzgyLCAxOTQ2ODYsIDczOTI0LCAxMTIxLCAxOTQ2NjUsIDYzOTU5LCAwLCA5OTQyLCAxMzIzMSwgMCwgCi0gICAgNjQ3NTIsIDQ3MzIsIDE5NDY2NiwgMTE1OTYsIDExOTkzMSwgNjUxODcsIDE2MjYsIDYzOTgzLCAxMDExMCwgNjQ3NzIsIAotICAgIDQyMDI0LCA2NDIwLCA0MjAyOCwgMCwgMTA1MDksIDI3OTUsIDQ5MTAsIDE5NDcyOCwgNjkyMzEsIDY0NzUzLCA2Mjc1LCAKLSAgICA5MTc4MDgsIDExODgzMCwgNjM5NzgsIDExMDQ0LCAzMjI5LCA2NDIzLCA0Mjc3NCwgMCwgMCwgMCwgMTI4MjMsIDIzMzEsIAotICAgIDkxNzgxMCwgNDIwMjYsIDYxMzcsIDAsIDc1MjQsIDAsIDkxNzgwOSwgODM0NiwgMCwgODMzOCwgMTI4MzE1LCA2NTA0MywgMCwgCi0gICAgODIyLCAxMjc5ODQsIDk5MDMsIDY0NzIxLCA0MjcyMiwgMTk0NjU2LCAxOTQ2NTksIDc4NjU1LCA3ODY2MSwgMTk0NjYwLCAKLSAgICA3ODY2MiwgNDEyNjUsIDUzMTEsIDE3OTUsIDk2NSwgMTE4NzkxLCAxMDU4NywgNzgwNTUsIDExMjc4LCA3ODYzMiwgCi0gICAgMTk0NjQwLCAwLCAxMjk0NiwgMTk0NjQxLCAxMTkzNDEsIDEyMDM0OSwgNjI5NCwgMzE0NCwgMTk0NjQ4LCAxOTQ2NDcsIAotICAgIDY1MDE5LCAxOTQ2NDksIDczOTkwLCAwLCAwLCA3NDgsIDQxMDY3LCAyMzMwLCA1MzUsIDMxNDgsIDEyMzc1LCAxOTQ2NTIsIAotICAgIDE5NDYyOSwgMTA1NTYsIDI0NzUsIDEyMzg4LCA0ODg5LCA4OTY4LCA2Nzg2MywgMzU5MywgMCwgMCwgMjM0MiwgMCwgCi0gICAgMTk0NjM0LCA2NTIwNiwgNDg5NCwgMTk0NjM1LCA0ODkwLCAxOTQ2MzcsIDkxNzgwNCwgNTgxLCA0ODkzLCAwLCA2NTcxLCAKLSAgICA2NTU0NSwgNDg4OCwgNDE1NywgNzgwNDgsIDc4MDQ5LCA3ODA0NiwgNzgwNDcsIDAsIDEwMTE5LCA2NDE1LCA0Mjg5MywgMCwgCi0gICAgNjk3MDIsIDAsIDAsIDExMzc1LCA2NDc0NiwgMjMzMiwgNzgwNjMsIDQxMiwgNzgwNjEsIDY0OTMyLCA0Mjg4MCwgNDM1ODcsIAotICAgIDAsIDAsIDAsIDAsIDY1MTk3LCA3ODA2NiwgMTIyMDMsIDc4MDY0LCA3ODA2NSwgODkxMywgNjU4NTQsIDQ4NzUsIDY1ODExLCAKLSAgICAxMjAzODEsIDEyMDM4OSwgMTE4ODg4LCA5MzQ0LCA4ODI2LCAxMjAzODYsIDEyMDM5NSwgMTMxMDQsIDc0NzgxLCAxMTk5NywgCi0gICAgMTIwMzkzLCA3ODA3NSwgMCwgMzEzNCwgMCwgNjU2OTYsIDkyMzMxLCAwLCA2NjIxNywgMCwgODMzNCwgMTE5MzQ0LCAwLCAKLSAgICAzNDQ5LCAwLCAwLCA3ODQxNCwgNzg0MTMsIDExODk1MCwgNzQwMTEsIDAsIDAsIDAsIDAsIDE5MDgsIDEyMDE2NywgNDMyOCwgCi0gICAgMTA3MzQsIDEyNzAxNCwgMCwgMTI3OTE0LCA3ODA0LCA3ODI3MiwgMTA4MTEsIDYyNTAsIDExMzM5LCA0OTE0LCAxMTM2NywgCi0gICAgMCwgNzgwNTQsIDQ5MTcsIDc0NTE2LCA3NDIwOCwgNjQyODUsIDQ5MTIsIDU0NjQsIDEyNzgzNiwgMTE4ODkzLCAyMzYxLCAKLSAgICA3OTcxLCA3ODA3MiwgNzgwNzMsIDU1MjQzLCA3ODA3MSwgMCwgODA4NiwgNzQzMTcsIDY3MDcsIDgzMTksIDIzMTIsIAotICAgIDQwOTc3LCAxMDk2MCwgNDA5NjIsIDgzMDUsIDEyNTczLCAwLCA0MDk4MCwgMCwgMTMyMDIsIDAsIDEyNTgyLCA3ODI4MiwgMCwgCi0gICAgMCwgNDI0MzgsIDU1MjIxLCA2Mjg4LCA3ODI4MCwgMTI3OTQ2LCA1NjUzLCA0MjQwMCwgMTA4OTEsIDc2OTgsIDU2NTgsIAotICAgIDc0MDQ1LCAxMjAxNjUsIDAsIDAsIDQ5MTMsIDAsIDAsIDAsIDQyMzI2LCAxMjgxOTQsIDEyNzI4LCA5MjY4NSwgNDI0NzgsIAotICAgIDIzMjcsIDAsIDEyNTYzLCA0MjI4NywgMTI3MDUsIDAsIDAsIDEyNTg4LCA4ODIxLCA2MTUzLCAyODY3LCAxOTQ3MDgsIAotICAgIDY2MzEyLCA2OTgsIDEyODAwNywgMTk0NjA2LCAxMDM1NiwgNzQwNzUsIDE5NDcxMywgNjUxLCAxMjY0MSwgMCwgMCwgMCwgMCwgCi0gICAgNDE1NTIsIDY1MTE1LCA3ODQ2NSwgNzg0NjcsIDc4NDYzLCA3ODQ2NCwgMTI4ODUxLCA3ODQ2MSwgMTk0Njk3LCA3NDM1NiwgCi0gICAgOTI2MjYsIDQ3MTYsIDQzMjc3LCAwLCA3ODQ3NCwgMTIzNDAsIDEyMDU2OCwgMCwgMTk0NzAwLCA1NTI2NCwgNDEyMTEsIAotICAgIDEyMDY3NiwgODcwMywgNTQ2MiwgOTE3NjI5LCAwLCAxMDEwMSwgMCwgMCwgODQ3OSwgNDE1MSwgNDE5MzMsIDAsIDAsIAotICAgIDY2MjU0LCAxMjA4MjEsIDAsIDAsIDEyODY1NCwgMCwgMTE5MTk0LCA3NDA1MCwgOTI3MDEsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyMjc4LCAwLCAwLCAwLCAyNzAwLCAxMjU3NiwgNzg0MiwgMTI4OTksIDAsIDAsIDI2OTksIDAsIDczODQ1LCAyOTg1LCAKLSAgICA5MjU2OCwgMCwgOTE3ODQ1LCAxMjE5MiwgMTE5MzE0LCAwLCAxMTkzMTIsIDk4MjcsIDExOTMxMCwgMTE5MzExLCAxMTkzMDgsIAotICAgIDExOTMwOSwgMTE5MzA2LCAxMTQ4MSwgNDEyMTAsIDExOTMwNSwgMCwgMzUsIDc4NDgxLCA3ODQ4MiwgNjY2OTQsIDY4NDc5LCAKLSAgICA3ODQ3NywgNzg0NzgsIDQzNTk2LCA2MDkwLCA2NDI1NywgNzgxMiwgMTA1MzQsIDAsIDc4NDg1LCA3Mzg0OCwgNzg0ODMsIAotICAgIDQyNzIsIDAsIDQwOTY3LCA0MDk2NCwgOTE3ODI1LCAxMjcwNCwgNzg0ODcsIDQzMzA2LCAwLCA2NDQ5NywgMTIxMzgsIAotICAgIDc5MzAsIDAsIDQzMzAzLCA2ODIxNiwgMCwgOTE3ODI2LCA1MjQ0LCA0MTg5LCAxMjcwOTgsIDY3NTk2LCAxMjc1MDQsIAotICAgIDQxODgsIDE4NzksIDAsIDk2OCwgMCwgNDM3NDMsIDAsIDg4NzMsIDAsIDAsIDkxNzgyNywgNjU1NTUsIDEyNTc0LCAwLCAwLCAKLSAgICAwLCA3NDQ5MCwgMTI3MDk5LCA0MzY1NywgMCwgMCwgMCwgNDI2ODIsIDEyNTc4LCAxMjcyMCwgMCwgNDEyMjcsIDAsIAotICAgIDEyMzQ2LCAxMjcxMDEsIDY0ODQ4LCAwLCAwLCA3MjUxLCAwLCAwLCAxMTg4NTAsIDExOTE0MSwgMTI4NTQ2LCA2NjAxNSwgMCwgCi0gICAgOTU5LCA4ODg1LCAxMjU2NCwgNjY0NTcsIDc4ODA4LCA5NDY5LCA5NjMyLCA5MjMyMywgNzQ3NjEsIDY0MzIzLCAwLCAwLCAwLCAKLSAgICAwLCAzMTAsIDAsIDQxMjgxLCAxMDk3NiwgMCwgOTIxOTAsIDAsIDc0MjY2LCAxMDA1NCwgNjQ5NywgODU3NCwgMCwgOTAxMiwgCi0gICAgMTk5NTgsIDc0NDIwLCA2NTA4OSwgMTMyMTUsIDEyNzMwLCA2NTE2MywgNzQwNDQsIDM3NCwgNDMxOTUsIDgxNiwgMCwgMCwgCi0gICAgMCwgNDE5MzQsIDc0NjUsIDAsIDEyODE2OCwgMCwgNDcxNSwgNjEwMSwgMCwgNDE5MzYsIDAsIDQ4NzksIDAsIDY1NDQ2LCAwLCAKLSAgICAzMDcsIDEyNzE0NywgOTU4NSwgNTM3NCwgMCwgMTI4MDU5LCAwLCAwLCAwLCAwLCAwLCA2NTU2NywgMTIwNjE0LCAxOTI5LCAKLSAgICAwLCAxMjE0MiwgMCwgMTIyMzYsIDQxNDE5LCAxOTQ2MTgsIDEyMDYxMCwgMTI5ODIsIDE5NDYyMywgNTM3OCwgNzg3OTEsIAotICAgIDEyODY3OSwgNDE0MjEsIDAsIDQ0NjIsIDAsIDAsIDEyODA5MiwgODIxLCAwLCAyNDk4LCA1ODAwLCAxMjAxNTcsIDAsIAotICAgIDE3NjAsIDI0MjEsIDQ0NjksIDIzMjQsIDgyOCwgMzYxMSwgNzg0MDAsIDc1NywgMTE4NSwgMCwgNzg3NzAsIDQzNTk3LCAKLSAgICAxMDYyOCwgNzQ4MDgsIDE5NDU3MiwgNzk5OSwgNDM5NzEsIDAsIDAsIDEwNjM0LCAxMDk0MiwgNzcxMywgMjM0OCwgMCwgCi0gICAgNjQzNzQsIDQzODAsIDE5NDYwOCwgMTE5MDQ0LCA5OTgyLCA2NDMyNCwgNDEyNDAsIDg2MiwgNjU2MjYsIDc4NDYyLCAxODEwLCAKLSAgICAzNjczLCA1MTM3LCAxOTQ2MTcsIDAsIDcyNzcsIDY1NjIyLCAwLCA3NTY2LCA2NDY4OCwgMTk0NTkzLCAxOTQ1OTIsIAotICAgIDc4MDkyLCA3NDM1NywgMTk0NTk3LCA0NzQ4LCA5MjIyOCwgMTk0NTk4LCAxOTQ2MDEsIDQyMjYwLCA1ODcxLCAxMTkwNzUsIAotICAgIDAsIDc0NTc2LCA0NDAxOSwgMCwgMTI4MTg5LCAzOTY3LCAxOTQ2MDQsIDEzMTM3LCA4Nzc1LCAxMjc5NDUsIDAsIDI5NjMsIAotICAgIDAsIDg0MTAsIDQ0NTQsIDcyMywgMTI3ODgyLCA5NjYsIDQ0NDksIDkyMzMwLCA5MjIzOCwgMCwgNzgxOSwgMjMyMCwgCi0gICAgMTk0NTg5LCAzMzksIDQ5NjgsIDE5NDU5MCwgMTIwMzk5LCA4MDc1LCA1NTI3NiwgMCwgODA0NywgMCwgNzg4MjcsIDEyNjM0LCAKLSAgICA0MTU0MiwgNzg3ODAsIDc0NjYsIDY3MDUsIDEyMTc0LCA0MjYxMCwgMCwgNzQ0NTIsIDAsIDE1ODQsIDY2NjQ1LCA2MDQ1LCAKLSAgICA2NzI5LCAxMjA2NDAsIDY1MjE4LCA3ODc3NywgMCwgNzgwNjIsIDc1MzcsIDAsIDExMzcwLCAwLCAxMDMzMCwgMCwgMTAzOTQsIAotICAgIDAsIDc0MTk0LCAwLCAxMjc5MjksIDk3ODAsIDAsIDEzMDkyLCAxOTQ1NzYsIDExOTYwNSwgMTk0NTc4LCA3MDc0LCA5MjY0OCwgCi0gICAgMTk0NTc5LCAxOTQ1ODIsIDExNDE0LCAxMjg4NjgsIDI1MzEsIDEzMDM0LCAwLCAwLCA0MjExLCAxMjU5LCA3NTE3LCAwLCAwLCAKLSAgICAxOTQ1NjEsIDQwOTk2LCAxMzAzNywgNzA5MiwgNjQxLCA1MjE5LCAxOTQ1NjcsIDE5NDU2NiwgMTEwNjQsIDQxMTI5LCAwLCAKLSAgICA0Mjg1MCwgMTMwMzUsIDkwNzUsIDkyMzg3LCA1NDY2LCAxMjgxNTMsIDAsIDY0MDk4LCA2NTc5MywgNDUzNSwgMTk0NTczLCAKLSAgICA0MjcxLCA3ODQxNywgMTI4MzU3LCA2NzY5LCA0MTQxMCwgMCwgNjQyNjIsIDY3NjcsIDQxNDA3LCAwLCAwLCA2NzU1LCAKLSAgICAxMTg4NjQsIDkwNDYsIDEyNzkzNCwgMCwgMCwgMCwgMCwgMCwgNjc2NzUsIDAsIDAsIDAsIDY0MzM4LCAyNTYzLCAxMzAzMywgCi0gICAgMjQ3LCAxMTg5MTUsIDAsIDEyMzM4LCA0NjUxLCAwLCAxMTI3MCwgMCwgMCwgMTE5MzMsIDAsIDAsIDQxOTAzLCA0MzQ0NywgCi0gICAgMTEwMDEsIDAsIDQyMjU1LCAwLCA5MjY2MSwgNjk4MjEsIDQxOTA1LCAwLCAwLCAxMDc3NSwgOTc5MywgNTAwOSwgMCwgCi0gICAgNDIyNjksIDY0NTg3LCAwLCA0MjUzNSwgNjk4MTIsIDY0NTI5LCA0MTQwOCwgNDI4NTMsIDM4NzcsIDEyMDc5NSwgNDI2NzQsIAotICAgIDgxNDcsIDQzNTY2LCAxMTkwMjEsIDAsIDEwMjM2LCA2NTkxOCwgNDM3ODIsIDAsIDAsIDY0NTA2LCA2OTY1MiwgMTE4OTIxLCAKLSAgICA0NzQ3LCAxMjgwNTgsIDAsIDQzMjAwLCA1ODMyLCAwLCAwLCA1MTQxLCA0MjYwMCwgMCwgNDMyMDMsIDAsIDAsIDQzMjg2LCAKLSAgICAwLCAxMjgyMTEsIDQzNzc4LCAwLCA0MTMwNSwgNzg3NzYsIDQzNzgxLCAxMTMwMywgNjU1NDcsIDAsIDcwMzEsIDg1OSwgMCwgCi0gICAgMCwgMCwgNjA1OSwgMTI2OTg1LCA1NTIzNSwgMCwgODUzNSwgMCwgNjUxOTYsIDE5NDc4NywgNjYwMzIsIDExNDg4LCAwLCAKLSAgICAxMjA3ODYsIDQyMjMzLCA2NDE0MCwgOTk0NiwgNjM4ODUsIDAsIDExODIyLCAwLCA0MzE4OSwgMCwgMCwgMTc4OCwgMTU3OSwgCi0gICAgMTIwNDgyLCA5MTc4MTcsIDAsIDAsIDAsIDkwMjgsIDExOTU3MSwgNjkyMzQsIDAsIDAsIDEyODUsIDY0ODgyLCA0MTI0MiwgCi0gICAgMCwgMCwgMTI2NDAsIDAsIDc0MDEsIDAsIDEyNjI1LCA2ODE5OCwgMCwgOTIyNTQsIDM5NDAsIDQxNTk3LCA1NTI2MCwgCi0gICAgMzM5NiwgMTI2NDIsIDg2NjUsIDAsIDAsIDEyNjMwLCAxNjUzLCA5MTc4MTUsIDEwMTUzLCAwLCA2MTY2LCAxMjA1MTYsIAotICAgIDEyMDUyMywgMCwgODgxNSwgNjY2NzMsIDY1MDQ2LCA5Mjg1LCA5MTMsIDQyMjU5LCAxMTkzMTcsIDExOTMxOCwgMjE0MiwgCi0gICAgNjg0NTQsIDQyNDg1LCAxMTg4MzcsIDc4NzgsIDgyMTEsIDQyMjkzLCA2NDM3NywgMCwgOTI2NDMsIDAsIDE5NDY3MywgCisgICAgMjM1MCwgMTMwMjksIDc4MjMzLCAwLCA5ODMxMDMsIDEzMDMwLCA2NzAyLCA0NTI3LCAwLCAxMjUzOCwgMTI4ODEwLCAKKyAgICA5ODM2MzYsIDY1NTk5LCA2NTcxNywgOTk2NiwgMCwgNDk0OCwgMTI0ODQsIDQwMzIsIDEyODE0OSwgMTI2MjMsIDAsIDYyMDcsIAorICAgIDAsIDYxMTcsIDY1OTMwLCA4NDEyLCAwLCA3NDM4LCAxMjk2LCAyMzI1LCA0MTUxMSwgMTI2NjI1LCAxMDE0OSwgNzQxMTgsIAorICAgIDAsIDEyNzI4NiwgMTI0ODEsIDAsIDEyNDg4LCA2NjcxMywgMCwgNDE1NTYsIDY0NDE0LCAxMTg4MDIsIDIzNTQsIDQyNjE5LCAKKyAgICA3Mzc2NiwgMCwgNjI5NSwgOTAxLCA0MTUxMCwgNzk1MywgMCwgNjUwMzIsIDQxNTEzLCA5ODMxNjYsIDExOTI3LCA2NjU4NCwgCisgICAgNzg1NTksIDc4NTYwLCA3ODU1NywgNzg1NTgsIDAsIDc4NTU2LCA4NDgsIDk4NjgsIDAsIDY0MjQsIDc4NTY4LCAxMTkzMzgsIAorICAgIDY5OTIyLCA3NDAzMSwgNzg1NjMsIDc4NTY0LCAyMzUyLCA3ODU3MiwgODkzLCA2NDU3NiwgMTEyODksIDE0MDcsIDY3OTczLCAKKyAgICAwLCAxMzAyNiwgNjc2MiwgNzg1NzksIDc4NTgwLCAxMzAyMywgODkwMywgOTc3NywgNjY3MTUsIDE4NzEsIDgwOTksIDAsIDAsIAorICAgIDEzNDMsIDk4MzgxNCwgMCwgOTMyNSwgNjgxOCwgNjI4MywgMTE3MzgsIDAsIDk4MzkyNSwgMCwgMTE3NDEsIDAsIDAsIAorICAgIDkyMTYsIDgyNjMsIDExMjc5LCAxOTQ3NTIsIDk4MzgxNiwgMTk0NzU0LCAxMzAyMSwgNjQ0OTQsIDMxMzYsIDE5NDc1OCwgCisgICAgMTk0NzU3LCAxOTQ3NjAsIDEzMDIyLCA0MjczNywgOTk1NiwgMCwgMCwgNzQ1NTIsIDEwMDE0LCAwLCA0MTI2MCwgMTE5MzQwLCAKKyAgICAxMzAyMCwgMTAwMjQsIDE5NDc2NCwgNzQ1ODMsIDc0MzQwLCA2OTY4MSwgMCwgNDMwMDEsIDgwMjksIDAsIDAsIDk4Mzc3MSwgCisgICAgMzMzNSwgMCwgMCwgOTc3NiwgMTIwNTI2LCAxOTQ3NDgsIDUyMTUsIDQyNjQ0LCAzMzMzLCAxNjMyLCAxOTQ3NTEsIDY0ODQ5LCAKKyAgICAzMzQyLCA3ODU4MiwgNTM2MywgMTI5NTcsIDc4NTgxLCA0MTU2LCAwLCAwLCA2NDIxLCA3ODU5MSwgMTYxMSwgNzg1ODksIAorICAgIDEzMDE4LCA3NDI1NywgNzg1ODgsIDc0NTQyLCAzMzM3LCA0NTM3LCA2Nzg5NSwgMTE3MzYsIDAsIDY4NjA4LCA2NDgyLCAKKyAgICA0MjE0LCA3Mzc5MCwgMTE5NDUsIDAsIDEzMDQ2LCA4ODM4LCA0MjUsIDQwMjUsIDEwNzA5LCA3ODU5NSwgMjEwOCwgMjM5MiwgCisgICAgMTMwNDcsIDAsIDAsIDY4MTksIDEzMDQ5LCA2NDk5LCA5MjI0MywgMTI0MjQsIDY4NjE0LCA3Mzk0NCwgMTMwNTAsIDk5MjQsIAorICAgIDE5NDc0NSwgNjUwNywgMTI3OTE5LCA5NDA3MywgMTI4MDY5LCAzMjc3LCA4OTI5LCA0OTQ3LCA0MTA1NSwgMCwgMTk0NzIyLCAKKyAgICAxOTQ3MjEsIDE5NDcyNCwgMTMwNDUsIDY0NjI2LCA2NjAzNCwgNzc1MSwgMTk0NzI3LCA4MzcxLCAxOTQ3MjksIDM5OTcsIAorICAgIDEyODA2LCA4NzY4LCAxMzA0NCwgMCwgMTI0MjAsIDQwMjQsIDE5NDczMCwgNDEwNTQsIDEwNzgsIDk3NTcsIDY5NzM2LCAKKyAgICA0MTA1NywgMCwgMCwgMCwgMCwgOTgzNzgyLCA5MjIxMCwgOTI0MTEsIDAsIDQxNDk2LCAwLCA5MTY1LCAxNTcyLCAxMTkxMSwgCisgICAgMCwgMTE4ODQyLCAyMzQ2LCAxMzI3MCwgODk1OCwgMCwgOTY0NiwgMzc3MywgNDMxODMsIDY0MDEsIDU4MzEsIDAsIDAsIAorICAgIDEzMDQzLCA4MDU2LCA5MjQ5NCwgNjU2ODEsIDIwOCwgMTI3MzgyLCA0MTUxNCwgMCwgMCwgMCwgMTA2OTksIDY0MDgsIAorICAgIDkyMjI3LCA3ODI1LCA1NjYxLCAwLCAxMjA2MzAsIDM2MDMsIDQxMTA5LCAyMzk4LCAzNTQ4LCAxMjY1OTYsIDAsIDExOTkzMywgCisgICAgMCwgMzExNSwgOTkxOCwgMCwgMTEzMjEsIDQyOTEyLCAwLCAwLCAxOTQ3MjYsIDQ4NzYsIDY1ODA0LCAwLCAwLCA0MzQ2OCwgCisgICAgOTgzMjY2LCA0MTU1OCwgNDE0NzEsIDczOTUwLCA4MTU4LCA5OTQ0LCA0MTQ3MiwgMTIwMjk4LCAxMzA1MSwgNzg2ODksIAorICAgIDMxNDMsIDE5NDY3NCwgNjcwMSwgNDE1NTksIDE4OTYsIDY2MjU2LCAxMzA1MiwgMTk0NjgwLCA1NjY1LCAwLCAxMTkwNzEsIAorICAgIDcwMjUsIDYzOTc0LCAwLCA3NDM1MiwgNzQxNjEsIDQxNTQsIDk4NjMsIDQzNTUwLCAxMjMxMCwgNTY2MiwgNDIzODIsIAorICAgIDE5NDY4NiwgNzM5MjQsIDExMjEsIDc4MzE5LCA2Mzk1OSwgMCwgOTk0MiwgMTMyMzEsIDAsIDY0NzUyLCA0NzMyLCAKKyAgICAxOTQ2NjYsIDExNTk2LCAxMTk5MzEsIDY1MTg3LCAxNjI2LCA2Mzk4MywgMTAxMTAsIDY0NzcyLCA0MjAyNCwgNjQyMCwgCisgICAgNDIwMjgsIDAsIDEwNTA5LCAyNzk1LCA0OTEwLCAxOTQ3MjgsIDY5MjMxLCA2NDc1MywgNjI3NSwgOTM5NTcsIDExODgzMCwgCisgICAgNjM5NzgsIDExMDQ0LCAzMjI5LCA2NDIzLCA0Mjc3NCwgMCwgMCwgMCwgMTI4MjMsIDIzMzEsIDkxNzgxMCwgNzA4NSwgCisgICAgNjEzNywgMCwgNzUyNCwgMCwgOTE3ODA5LCA4MzQ2LCAwLCA4MzM4LCAxMjgzMTUsIDY1MDQzLCAwLCA4MjIsIDEyNzk4NCwgCisgICAgOTkwMywgNjQ3MjEsIDQyNzIyLCA2OTg3NywgMTk0NjU5LCA3ODY1NSwgNzg2NjEsIDE5NDY2MCwgNzg2NjIsIDQxMjY1LCAKKyAgICA1MzExLCAxNzk1LCA5NjUsIDExODc5MSwgMTA1ODcsIDc4MDU1LCAxMTI3OCwgNzg2MzIsIDE5NDY0MCwgMCwgMTI5NDYsIAorICAgIDE5NDY0MSwgMTE5MzQxLCAxMjAzNDksIDYyOTQsIDMxNDQsIDE5NDY0OCwgMTk0NjQ3LCA2NTAxOSwgMTk0NjQ5LCA3Mzk5MCwgCisgICAgMCwgOTgzOTUxLCA3NDgsIDQxMDY3LCAyMzMwLCA1MzUsIDMxNDgsIDEyMzc1LCA3ODc5OSwgMTk0NjI5LCAxMDU1NiwgCisgICAgMjQ3NSwgMTIzODgsIDQ4ODksIDg5NjgsIDY3ODYzLCAzNTkzLCAwLCAwLCAyMzQyLCAwLCAxOTQ2MzQsIDY1MjA2LCA0ODk0LCAKKyAgICAxOTQ2MzUsIDQ4OTAsIDE5NDYzNywgOTE3ODA0LCA1ODEsIDQ4OTMsIDk4MzYxNiwgNjU3MSwgNjU1NDUsIDQ4ODgsIDQxNTcsIAorICAgIDc4MDQ4LCA3ODA0OSwgNzgwNDYsIDc4MDQ3LCAwLCAxMDExOSwgNjQxNSwgNDI4OTMsIDAsIDY5NzAyLCAwLCAwLCAxMTM3NSwgCisgICAgNjQ3NDYsIDIzMzIsIDc4MDYzLCA0MTIsIDc4MDYxLCA2NDkzMiwgNDI4ODAsIDQzNTg3LCAwLCAwLCAwLCAwLCA2NTE5NywgCisgICAgNzgwNjYsIDEyMjAzLCA3ODA2NCwgNzgwNjUsIDg5MTMsIDY1ODU0LCA0ODc1LCA2NTgxMSwgMTIwMzgxLCAxMjAzODksIAorICAgIDExODg4OCwgOTM0NCwgODgyNiwgMTIwMzg2LCAxMjAzOTUsIDEzMTA0LCA3NDc4MSwgMTE5OTcsIDEyMDM5MywgNzgwNzUsIAorICAgIDAsIDMxMzQsIDAsIDY1Njk2LCA5MjMzMSwgMCwgNjYyMTcsIDAsIDgzMzQsIDExOTM0NCwgMCwgMzQ0OSwgMCwgMCwgCisgICAgNzg0MTQsIDc4NDEzLCAxMTg5NTAsIDc0MDExLCAwLCAwLCAwLCAwLCAxOTA4LCAxMjAxNjcsIDQzMjgsIDEwNzM0LCAKKyAgICAxMjcwMTQsIDAsIDEyNzkxNCwgNzgwNCwgNzgyNzIsIDEwODExLCA2MjUwLCAxMTMzOSwgNDkxNCwgMTEzNjcsIDAsIAorICAgIDc4MDU0LCA0OTE3LCA3NDUxNiwgNzQyMDgsIDY0Mjg1LCA0OTEyLCA1NDY0LCAxMjc4MzYsIDExODg5MywgMjM2MSwgNzk3MSwgCisgICAgNzgwNzIsIDc4MDczLCA1NTI0MywgNzgwNzEsIDAsIDgwODYsIDc0MzE3LCA2NzA3LCA4MzE5LCAyMzEyLCA0MDk3NywgCisgICAgMTA5NjAsIDQwOTYyLCA4MzA1LCAxMjU3MywgOTgzNjA4LCA0MDk4MCwgOTgzOTU1LCAxMzIwMiwgMCwgMTI1ODIsIDc4MjgyLCAKKyAgICA5ODMwNDgsIDY5ODU2LCA0MjQzOCwgNTUyMjEsIDYyODgsIDc4MjgwLCAxMjc5NDYsIDU2NTMsIDQyNDAwLCAxMDg5MSwgCisgICAgNzY5OCwgNTY1OCwgNzQwNDUsIDcwMDM5LCAwLCAwLCA0OTEzLCAwLCA5ODM5NTAsIDcxMzMzLCA0MjMyNiwgMTI4MTk0LCAKKyAgICAxMjcyOCwgOTI2ODUsIDQyNDc4LCAyMzI3LCAwLCAxMjU2MywgNDIyODcsIDEyNzA1LCAwLCAwLCAxMjU4OCwgODgyMSwgCisgICAgNjE1MywgMjg2NywgMTk0NzA4LCA2NjMxMiwgNjk4LCAxMjgwMDcsIDE5NDYwNiwgMTAzNTYsIDcwMDE3LCAxOTQ3MTMsIAorICAgIDY1MSwgMTI2NDEsIDAsIDAsIDAsIDAsIDQxNTUyLCA2NTExNSwgNzg0NjUsIDc4NDY3LCA3ODQ2MywgNzg0NjQsIDEyODg1MSwgCisgICAgNzg0NjEsIDE5NDY5NywgNzQzNTYsIDY0OTQ1LCA0NzE2LCA0MzI3NywgMCwgNzg0NzQsIDEyMzQwLCAxMjA1NjgsIDAsIAorICAgIDE5NDcwMCwgNTUyNjQsIDQxMjExLCAxMjA2NzYsIDg3MDMsIDU0NjIsIDkxNzYyOSwgOTgzNDg3LCAxMDEwMSwgMCwgCisgICAgNzAwNDksIDg0NzksIDQxNTEsIDQxOTMzLCAwLCAwLCA2NjI1NCwgMTIwODIxLCAwLCAwLCAxMjg2NTQsIDAsIDExOTE5NCwgCisgICAgNzQwNTAsIDkyNzAxLCAwLCAwLCAwLCAwLCAwLCAxMjI3OCwgMCwgMCwgMCwgMjcwMCwgMTI1NzYsIDc4NDIsIDEyODk5LCAwLCAKKyAgICAwLCAyNjk5LCAwLCA3Mzg0NSwgMjk4NSwgOTI1NjgsIDEyNjQ3NSwgOTE3ODQ1LCAxMjE5MiwgMTE5MzE0LCAwLCAxMTkzMTIsIAorICAgIDk4MjcsIDExOTMxMCwgMTE5MzExLCAxMTkzMDgsIDExOTMwOSwgMTE5MzA2LCAxMTQ4MSwgNDEyMTAsIDExOTMwNSwgMCwgCisgICAgMzUsIDc4NDgxLCA3ODQ4MiwgNjY2OTQsIDY4NDc5LCA3ODQ3NywgNzg0NzgsIDQzNTk2LCA2MDkwLCA2NDI1NywgNzgxMiwgCisgICAgMTA1MzQsIDAsIDc4NDg1LCA3Mzg0OCwgNjc5NzUsIDQyNzIsIDAsIDQwOTY3LCA0MDk2NCwgOTE3ODI1LCAxMjcwNCwgCisgICAgNzg0ODcsIDQzMzA2LCAwLCA2NDQ5NywgMTIxMzgsIDc5MzAsIDAsIDIyOTIsIDY4MjE2LCAwLCA5MTc4MjYsIDUyNDQsIAorICAgIDQxODksIDk0MTA4LCA2NzU5NiwgMTI3NTA0LCA0MTg4LCAxODc5LCAwLCA5NjgsIDAsIDQzNzQzLCAwLCA4ODczLCAyMjc5LCAKKyAgICAwLCA5MTc4MjcsIDY1NTU1LCAxMjU3NCwgMCwgMCwgMCwgNzQ0OTAsIDEyNzA5OSwgNDM2NTcsIDAsIDAsIDAsIDQyNjgyLCAKKyAgICAxMjU3OCwgMTI3MjAsIDAsIDQxMjI3LCAwLCAxMjM0NiwgMTI3MTAxLCA2NDg0OCwgMCwgMCwgNzI1MSwgMCwgMCwgCisgICAgMTE4ODUwLCAxMTkxNDEsIDEyODU0NiwgNjYwMTUsIDAsIDk1OSwgODg4NSwgMTI1NjQsIDY2NDU3LCA3ODgwOCwgOTQ2OSwgCisgICAgOTYzMiwgOTIzMjMsIDc0NzYxLCA2NDMyMywgMTI3MzM1LCAwLCAwLCAwLCAzMTAsIDAsIDQxMjgxLCAxMDk3NiwgMCwgCisgICAgNzEzMjUsIDAsIDc0MjY2LCAxMDA1NCwgNjQ5NywgODU3NCwgMCwgOTAxMiwgMTk5NTgsIDc0NDIwLCA2NTA4OSwgMTMyMTUsIAorICAgIDEyNzMwLCA2NTE2MywgNzQwNDQsIDM3NCwgNDMxOTUsIDgxNiwgMTIwMTYxLCAwLCAwLCA0MTkzNCwgNzQ2NSwgMCwgCisgICAgMTI4MTY4LCA5ODMyNjAsIDQ3MTUsIDYxMDEsIDk0MTA2LCA0MTkzNiwgMCwgNDg3OSwgMCwgNjU0NDYsIDAsIDMwNywgCisgICAgMTI3MTQ3LCA5NTg1LCA1Mzc0LCA5ODMyNTksIDEyODA1OSwgMCwgMCwgMTI2NjE4LCAxMjAzOTAsIDAsIDY1NTY3LCAKKyAgICAxMjA2MTQsIDE5MjksIDAsIDEyMTQyLCAwLCAxMjIzNiwgNDE0MTksIDE5NDYxOCwgMTIwNjEwLCAxMjk4MiwgMTk0NjIzLCAKKyAgICA1Mzc4LCA3ODc5MSwgMTI4Njc5LCA0MTQyMSwgMCwgNDQ2MiwgMCwgMTI2NTk5LCAxMjgwOTIsIDgyMSwgMCwgMjQ5OCwgCisgICAgNTgwMCwgMTIwMTU3LCA5ODMxMTUsIDE3NjAsIDI0MjEsIDQ0NjksIDIzMjQsIDgyOCwgMzYxMSwgNzg0MDAsIDc1NywgCisgICAgMTE4NSwgMCwgNzg3NzAsIDQzNTk3LCAxMDYyOCwgNzQ4MDgsIDE5NDU3MiwgNzk5OSwgNDM5NzEsIDAsIDAsIDEwNjM0LCAKKyAgICAxMDk0MiwgNzcxMywgMjM0OCwgMCwgNjQzNzQsIDQzODAsIDE5NDYwOCwgMTE5MDQ0LCA5OTgyLCA2NDMyNCwgNDEyNDAsIAorICAgIDg2MiwgNjU2MjYsIDc4NDYyLCAxODEwLCAzNjczLCA1MTM3LCAxOTQ2MTcsIDAsIDcyNzcsIDY1NjIyLCAwLCA3NTY2LCAKKyAgICA2NDY4OCwgMTk0NTkzLCAxOTQ1OTIsIDc4MDkyLCA3NDM1NywgMTk0NTk3LCA0NzQ4LCA5MjIyOCwgMTk0NTk4LCAxOTQ2MDEsIAorICAgIDQyMjYwLCA1ODcxLCAxMTkwNzUsIDAsIDc0NTc2LCA0NDAxOSwgMCwgMTI4MTg5LCAzOTY3LCAxOTQ2MDQsIDEzMTM3LCAKKyAgICA4Nzc1LCAxMjc5NDUsIDAsIDI5NjMsIDAsIDg0MTAsIDQ0NTQsIDcyMywgMTI3ODgyLCA5NjYsIDQ0NDksIDkyMzMwLCAKKyAgICA5MjIzOCwgMCwgNzgxOSwgMjMyMCwgMTk0NTg5LCAzMzksIDQ5NjgsIDE5NDU5MCwgMTIwMzk5LCA4MDc1LCA1NTI3NiwgMCwgCisgICAgODA0NywgMCwgNzg4MjcsIDEyNjM0LCA0MTU0MiwgNzg3ODAsIDc0NjYsIDY3MDUsIDEyMTc0LCA0MjYxMCwgMCwgNzQ0NTIsIAorICAgIDk4Mzc1NCwgMTU4NCwgNjY2NDUsIDYwNDUsIDY3MjksIDEyMDY0MCwgNjUyMTgsIDExNTU5LCAwLCA3ODA2MiwgNzUzNywgMCwgCisgICAgMTEzNzAsIDAsIDEwMzMwLCAwLCAxMDM5NCwgMCwgNzQxOTQsIDAsIDEyNzkyOSwgOTc4MCwgMCwgMTMwOTIsIDE5NDU3NiwgCisgICAgNzc5NTAsIDE5NDU3OCwgNzA3NCwgOTI2NDgsIDE5NDU3OSwgMTk0NTgyLCAxMTQxNCwgMTI4ODY4LCAyNTMxLCAxMzAzNCwgCisgICAgMCwgMCwgNDIxMSwgMTI1OSwgNzUxNywgMCwgMCwgMTk0NTYxLCA0MDk5NiwgMTMwMzcsIDcwOTIsIDY0MSwgNTIxOSwgCisgICAgOTQwMzQsIDE5NDU2NiwgMTEwNjQsIDQxMTI5LCAwLCA0Mjg1MCwgMTMwMzUsIDkwNzUsIDkyMzg3LCA1NDY2LCAxMjgxNTMsIAorICAgIDAsIDY0MDk4LCA2NTc5MywgNDUzNSwgMTk0NTczLCA0MjcxLCA3ODQxNywgMTI4MzU3LCA2NzY5LCA0MTQxMCwgOTgzNDQ0LCAKKyAgICA2NDI2MiwgNjc2NywgNDE0MDcsIDAsIDAsIDY3NTUsIDExODg2NCwgOTA0NiwgMTI3OTM0LCAxMjY2MDgsIDAsIDAsIDAsIDAsIAorICAgIDY3Njc1LCAwLCAwLCAwLCA2NDMzOCwgMjU2MywgMTMwMzMsIDI0NywgMTE4OTE1LCAwLCAxMjMzOCwgNDY1MSwgNjk4OTUsIAorICAgIDExMjcwLCAwLCAwLCAxMTkzMywgMCwgMCwgNDE5MDMsIDQzNDQ3LCAxMTAwMSwgMCwgNDIyNTUsIDAsIDkyNjYxLCA2OTgyMSwgCisgICAgNDE5MDUsIDAsIDAsIDEwNzc1LCA5NzkzLCA1MDA5LCAwLCA0MjI2OSwgNjQ1ODcsIDk4MzA2MywgNDI1MzUsIDY5ODEyLCAKKyAgICA2NDUyOSwgNDE0MDgsIDQyODUzLCAzODc3LCAxMjA3OTUsIDQyNjc0LCA4MTQ3LCA0MzU2NiwgMTE5MDIxLCA5ODM3NjcsIAorICAgIDEwMjM2LCA2NTkxOCwgNDM3ODIsIDAsIDAsIDY0NTA2LCA2OTY1MiwgMTE4OTIxLCA0NzQ3LCAxMjgwNTgsIDY5ODQ0LCAKKyAgICA0MzIwMCwgNTgzMiwgMCwgMCwgNTE0MSwgNDI2MDAsIDAsIDQzMjAzLCAwLCA5ODM3OTAsIDQzMjg2LCAwLCAxMjgyMTEsIAorICAgIDQzNzc4LCAwLCA0MTMwNSwgNzg3NzYsIDQzNzgxLCAxMTMwMywgNjU1NDcsIDAsIDcwMzEsIDg1OSwgMCwgMCwgMCwgNjA1OSwgCisgICAgMTI2OTg1LCA1NTIzNSwgMCwgODUzNSwgMCwgNjUxOTYsIDE5NDc4NywgNjYwMzIsIDExNDg4LCAxMjA0ODEsIDEyMDc4NiwgCisgICAgNDIyMzMsIDY0MTQwLCA5OTQ2LCA2Mzg4NSwgMTk0NzkyLCAxMTgyMiwgMCwgNDMxODksIDk4Mzg4OSwgMCwgMTc4OCwgCisgICAgMTU3OSwgMTIwNDgyLCA3MTI5OCwgMCwgMCwgMCwgOTAyOCwgMTE5NTcxLCA2OTIzNCwgOTQwNTUsIDAsIDEyODUsIDY0ODgyLCAKKyAgICA0MTI0MiwgNzAwODYsIDAsIDEyNjQwLCAwLCA3NDAxLCAwLCAxMjYyNSwgNjgxOTgsIDAsIDcwMDgyLCAzOTQwLCA0MTU5NywgCisgICAgNDM3NTQsIDMzOTYsIDEyNjQyLCA4NjY1LCAwLCAwLCAxMjYzMCwgMTY1MywgOTE3ODE1LCAxMDE1MywgMCwgNjE2NiwgCisgICAgMTIwNTE2LCAxMTg5ODksIDAsIDg4MTUsIDY2NjczLCA2NTA0NiwgOTI4NSwgOTEzLCA0MjI1OSwgMTE5MzE3LCAxMTkzMTgsIAorICAgIDIxNDIsIDY4NDU0LCA0MjQ4NSwgOTQwMTIsIDc4NzgsIDgyMTEsIDQyMjkzLCA2NDM3NywgMCwgOTI2NDMsIDAsIDE5NDY3MywgCiAgICAgMTIwMzIsIDAsIDk3MjUsIDAsIDc4NDMxLCA1MjYzLCAxMjgxOCwgNzg0MzAsIDQxOTM5LCAxMDAyMiwgNjUzODcsIDc4NDE5LCAKLSAgICA0Mjc3NywgMTAxMzksIDk4MCwgNDM2OTgsIDY1Mzg2LCAwLCAwLCA0MzcwMSwgNDMxOTgsIDcxODQsIDEyMDY3MywgCisgICAgNDI3NzcsIDEwMTM5LCA5ODAsIDQzNjk4LCA2NTM4NiwgMjIwOCwgMCwgNDM3MDEsIDQzMTk4LCA3MTg0LCAxMjA2NzMsIAogICAgIDE5NDc5NywgOTE3ODE5LCAxMDA4NSwgMTE5OTkyLCAwLCAxMTk5OTMsIDY2MzQsIDkyMzczLCAwLCAxMTkzMjMsIDgwNzIsIAogICAgIDExOTMyMSwgNDM3MDAsIDAsIDg4NzIsIDc3ODMsIDkxNzk5MiwgMTIzOTgsIDgyMzcsIDAsIDAsIDEyMzk1LCAwLCAKLSAgICAxMjY5NzcsIDEyMDU2NSwgOTkxNCwgMTI3MDExLCA5MTc4NTQsIDczOTc1LCA2MzY3LCA2MzUxLCA2NjY4OCwgMCwgNzgxMDcsIAorICAgIDEyNjk3NywgMTIwNTY1LCA5OTE0LCAyMjE3LCA5MTc4NTQsIDczOTc1LCA2MzY3LCA2MzUxLCA2NjY4OCwgMCwgNzgxMDcsIAogICAgIDAsIDY0NzM1LCA0MTI0MywgOTIxOTksIDc4MDgsIDE4MjksIDAsIDQxOTM3LCA0MzU4LCA0MzI3MiwgNjM1MywgMCwgMCwgCiAgICAgMTIwNDIyLCAwLCAxNzEwLCAwLCAwLCA2NTYwNywgMCwgNDksIDY2MjcsIDAsIDYyNTgsIDEwNjgzLCA3ODY3MiwgOTc0MSwgCiAgICAgNzgzMjksIDU2NDksIDc4NDQxLCA0MzQ0MywgNjQ0MTgsIDE2NDMsIDY1MjEzLCA4NDA1LCAzNDcwLCAxMjgyMjUsIDEzMjEzLCAKLSAgICA0MjQ1MiwgNzgzMzEsIDAsIDc4NDQ1LCAwLCAxMDcyLCA3ODQ1NywgNzg0NTIsIDc4NDU0LCA2NTc2LCA0MTk4OCwgNDExMzIsIAotICAgIDY1Njc1LCAxMDgwLCAxMjAwMDIsIDk4ODYsIDU1MjI1LCAxMTAxLCA2ODQwNCwgMTIzMDksIDU1MjI3LCAwLCAxMjYzMiwgCi0gICAgMTA4NiwgMTg2OSwgNzg2ODUsIDc2ODAsIDAsIDY1NDU4LCAxMjA3MTQsIDEyNjM5LCAzMzgwLCA4MTIzLCAxMDkxLCAKLSAgICAxMjYzOCwgNzk3NywgNDUwMSwgNDEwOTksIDAsIDY2MzA5LCAwLCAwLCAxNDk0LCAwLCAwLCAwLCAxMTY5MywgMCwgMTA0OTQsIAotICAgIDkyNjU1LCA2NTg3MiwgMTIzNjMsIDExMzg2LCAwLCAwLCAwLCAwLCA2NDU4MiwgMCwgNzM3OTQsIDAsIDgwMjIsIDAsIAotICAgIDEyMDQ2MiwgNzQxMDYsIDEyNDEzLCAxOTQ4MjksIDkxNzk5NCwgMCwgOTE3OTk1LCA1NTcwLCAxODgxLCA3MjEwLCAwLCAKLSAgICAxMDEyLCA2NjYzMCwgMCwgMTIwNzA5LCA3MjA4LCA2NjQ0MiwgNTU2OSwgMCwgNDIzMzksIDAsIDYwNjMsIDAsIDAsIAotICAgIDExOTU5NCwgNjA1MywgNjU2MDIsIDAsIDkyMjAxLCA2NDcyNywgOTE2MCwgMTk0ODI3LCAwLCAwLCA5MjE4MCwgMTA1MDMsIAotICAgIDExODgxMCwgNjA1NSwgMzg3MCwgNDI3OSwgODQ5MCwgMTIwMTE0LCA0MzE5LCA2NDc4NiwgODYwMiwgMTIwMTEwLCAxMTMyNiwgCi0gICAgOTIyMDQsIDAsIDAsIDEyMDExOSwgNzgzMzMsIDEyMDExNywgMTIwMTE4LCAxMjAwOTksIDEyMDEwMCwgNjUwODcsIDU1NzEsIAotICAgIDM2NzQsIDk3NDAsIDkxMjEsIDU1NjgsIDEyMDEwNywgMTIwMTA4LCA0MjA4NSwgMTAxMDcsIDQyMTU5LCA0Mjg3MCwgCi0gICAgMTIwMTAxLCA1ODksIDcwNTAsIDAsIDQzMjgxLCAxMDIzMywgNDEyNjMsIDY2MjUxLCA2NTcyOSwgNjYyNTMsIDAsIDc0MDk5LCAKLSAgICA0MjY0NSwgMCwgMTk0ODE1LCA4NTgzLCAwLCA1ODQ3LCA2OTI4LCAwLCAwLCAwLCAwLCAwLCA2NjU5MiwgMTIyMDQsIAotICAgIDkxNzk2MiwgMTk5NjYsIDc3ODU2LCA0MjU2MSwgMTIwNjI2LCAwLCAwLCA4MTIwLCAxMjA3MDEsIDAsIDAsIDEyODAxMiwgCi0gICAgNDEwNjMsIDAsIDEwNjY0LCAwLCA4MzY5LCAwLCA0NTUxLCAxOTQ5NjQsIDMzNjksIDAsIDAsIDk2NzMsIDY2MzM0LCAKLSAgICA2NTU4MCwgMTA0NzgsIDExODk2MCwgMTI1MTcsIDU1NywgOTQ1NywgMTIwMzQsIDAsIDYzNTUsIDEyNTE5LCA0MTAwNCwgMCwgCi0gICAgMTk1MDI1LCA3NDA5NCwgMCwgMCwgNzc5NzAsIDAsIDAsIDEyODE3NSwgMTIxMTEsIDM5MjcsIDAsIDEyNTE1LCAxNDc0LCAKLSAgICA2Nzg5MywgNTQ5MiwgNjkyMywgMTI4MDk5LCAxMDQ0MSwgNzM4MzYsIDAsIDQzOTkwLCA1NDkzLCAwLCA3NDMxOSwgMCwgCi0gICAgNjY2MzUsIDEyMDE5LCAwLCAxNjE4LCAwLCAxMjA0NzQsIDk2NDUsIDEwNDMwLCA5MTc5NTksIDU4NTMsIDEzMDYzLCAKLSAgICAxMDM2MywgMCwgMTI5NTYsIDEyODE2OSwgMTIwNzI5LCAxMTMxNCwgOTE3NTgyLCAxMjA2MCwgMCwgNzgzOTIsIDEyODI2LCAKLSAgICA2MzI5LCAwLCAxMDUxNCwgNjU1MTcsIDc0Mzk1LCAyNzA3LCA4MzA5LCAwLCAxMjcwNTQsIDc4Mzk4LCA0MzU3MCwgMjY5NywgCi0gICAgNDM0MjAsIDc4Mzk2LCAxMjcwNTcsIDI2OTUsIDQyMTcxLCAwLCAwLCAwLCA2NzYxNywgMTE4OTcxLCAwLCAyNjkzLCAKLSAgICAxMjEyNSwgMTI3NjYsIDAsIDExNjQsIDAsIDAsIDQxOTE4LCAwLCAxMjc1NDIsIDg2ODcsIDY2MDA5LCAxMjE3OCwgNzA1MywgCi0gICAgMTI4MDAxLCA3NDY5LCAwLCA1MjQ4LCAxMjIxOCwgMTIwNTM4LCA2NDI3LCA0Mjg4NCwgNDExMjMsIDAsIDAsIDQyODczLCAKLSAgICA0MTEyNiwgOTk5MSwgNDExMjgsIDc0MzcxLCAxMjcwMzEsIDAsIDk4NzMsIDAsIDQyODc3LCA3OTk0LCA2NDc2MiwgMjA1MywgCi0gICAgNDI4NDMsIDY1OTEsIDkzNDAsIDAsIDE1ODksIDAsIDI5NiwgNzQ0MzgsIDc4ODUyLCAwLCA2Nzg0MSwgNzQzNzAsIDAsIAotICAgIDg5MjIsIDEyODA2OCwgNzQ2MDAsIDEyNzAwLCA3NDgzNiwgMCwgMTI1NzksIDAsIDEyNTc1LCA2NDE2LCA1NjU2LCAyODkxLCAKLSAgICAxMzI2MiwgNjU1OTAsIDUyOTksIDAsIDExNDczLCA1NDQ5LCAxMjUyLCAwLCA3ODQwNCwgNDE0MzEsIDc0MzY5LCA2NTM3MywgCi0gICAgNTI5NSwgOTE3NTY5LCA3NDExNCwgMTIyMywgMTY0MiwgMTc0LCA3ODM5OSwgODgzLCA0MTYxLCAxMjY5MSwgNDI2MDMsIAotICAgIDQxNDEzLCAzMjEyLCA0MTQ1OSwgMzIxMSwgNzQ4MTAsIDQxNDI1LCAxMjcwMjksIDc4NDEyLCA3NDQ1MCwgOTcyOCwgMzg0NiwgCi0gICAgODA3MCwgNjE1MCwgNjYzNiwgNDM3MCwgMCwgMCwgNzQxNzgsIDc0NTg3LCA3NDExNywgMCwgMCwgMCwgNDk4NiwgMTIxODksIAotICAgIDAsIDY3NjQ4LCAxMjA0OTksIDkxNzU1MywgNDI1NywgMTIxMDQsIDc3OTQyLCA2MjIwLCA5MDA0LCA2NTU2MSwgMCwgCi0gICAgNzc5NDksIDAsIDY4MTM1LCA5MTc1NzYsIDc3OTQ2LCAwLCA2OTY3OSwgNjk2ODQsIDk4OTAsIDc4NTYxLCAxMjk3MSwgCi0gICAgNzg0NTMsIDkyNTU2LCA3Mzg5OCwgMTE5NzksIDAsIDExODkwMCwgOTE3ODk0LCAwLCA5NjM1LCAxMjYwMCwgODg3MSwgMCwgCi0gICAgMCwgMCwgNjQ2OSwgNzQyMjcsIDAsIDY1MzA0LCA0Njc5LCAxMDIzMCwgNjQzMDAsIDY0ODY3LCAzNDI3LCA0MjQwLCAwLCAwLCAKLSAgICAwLCAwLCA0MjkxNiwgMCwgMCwgMCwgNzI4MiwgNzg3MjgsIDY1NzMzLCA0NDQ1LCAxMjcxMzgsIDEyODA4MiwgMzQ5NCwgCi0gICAgNzQ2MDYsIDY1NTUsIDAsIDc3OTc2LCAwLCAwLCA3ODU2NiwgMCwgMCwgNjU4OTgsIDAsIDY1MzEyLCA1NDQ3LCAwLCAKKyAgICA0MjQ1MiwgNzgzMzEsIDEyMDY2NCwgNzg0NDUsIDAsIDEwNzIsIDc4NDU3LCA3ODQ1MiwgNzg0NTQsIDY1NzYsIDQxOTg4LCAKKyAgICA0MTEzMiwgNjU2NzUsIDEwODAsIDEyMDAwMiwgOTg4NiwgNTUyMjUsIDExMDEsIDY4NDA0LCAxMjMwOSwgNTUyMjcsIDAsIAorICAgIDEyNjMyLCAxMDg2LCAxODY5LCA3ODY4NSwgNzY4MCwgMCwgNjU0NTgsIDEyMDcxNCwgMTI2MzksIDMzODAsIDgxMjMsIAorICAgIDEwOTEsIDEyNjM4LCA3OTc3LCA0NTAxLCA0MTA5OSwgMCwgNjYzMDksIDAsIDAsIDE0OTQsIDk4MzE0NiwgMTI2NjEzLCAwLCAKKyAgICAxMTY5MywgMTI2NTEzLCAxMDQ5NCwgOTI2NTUsIDY1ODcyLCAxMjM2MywgMTEzODYsIDAsIDAsIDAsIDAsIDY0NTgyLCAwLCAKKyAgICA3Mzc5NCwgMCwgODAyMiwgMCwgMTIwNDYyLCA3NDEwNiwgMTI0MTMsIDk0MDY5LCA5MTc5OTQsIDkxNzk5MywgOTE3OTk1LCAKKyAgICA1NTcwLCAxODgxLCA3MjEwLCAwLCAxMDEyLCA0Mzc1MiwgMCwgMTIwNzA5LCA3MjA4LCA2NjQ0MiwgNTU2OSwgOTgzMjM2LCAKKyAgICA0MjMzOSwgMCwgNjA2MywgMCwgNzgzODMsIDExOTU5NCwgNjA1MywgNjU2MDIsIDAsIDkyMjAxLCA2NDcyNywgOTE2MCwgCisgICAgMTk0ODI3LCAwLCAwLCA5MjE4MCwgMTA1MDMsIDExODgxMCwgNjA1NSwgMzg3MCwgNDI3OSwgODQ5MCwgMTIwMTE0LCA0MzE5LCAKKyAgICA2NDc4NiwgODYwMiwgMTIwMTEwLCAxMTMyNiwgOTIyMDQsIDk4MzExNiwgMCwgMTIwMTE5LCA3ODMzMywgMTIwMTE3LCAKKyAgICAxMjAxMTgsIDEyMDA5OSwgMTIwMTAwLCA2NTA4NywgNTU3MSwgMzY3NCwgOTc0MCwgOTEyMSwgNTU2OCwgMTIwMTA3LCAKKyAgICAxMjAxMDgsIDQyMDg1LCAxMDEwNywgNDIxNTksIDQyODcwLCAxMjAxMDEsIDU4OSwgNzA1MCwgOTgzNzkxLCA0MzI4MSwgCisgICAgMTAyMzMsIDQxMjYzLCA2NjI1MSwgNjU3MjksIDY2MjUzLCAxMjY0OTcsIDc0MDk5LCA0MjY0NSwgMCwgMTk0ODE1LCA4NTgzLCAKKyAgICAwLCA1ODQ3LCA2OTI4LCAxMjgwNzQsIDAsIDAsIDAsIDAsIDY2NTkyLCAxMjIwNCwgOTE3OTYyLCAxOTk2NiwgNzc4NTYsIAorICAgIDQyNTYxLCAxMjA2MjYsIDk4MzI0NSwgMCwgODEyMCwgMTIwNzAxLCAwLCAwLCAxMjgwMTIsIDQxMDYzLCAwLCAxMDY2NCwgMCwgCisgICAgODM2OSwgMCwgNDU1MSwgMTk0OTY0LCAzMzY5LCAwLCAwLCA5NjczLCA2NjMzNCwgNjU1ODAsIDEwNDc4LCAxMTg5NjAsIAorICAgIDEyNTE3LCA1NTcsIDk0NTcsIDEyMDM0LCA5ODM2NjIsIDYzNTUsIDEyNTE5LCA0MTAwNCwgMCwgMTk1MDI1LCA3NDA5NCwgMCwgCisgICAgMCwgNzc5NzAsIDk4MzU2MCwgMCwgMTI4MTc1LCAxMjExMSwgMzkyNywgMCwgMTI1MTUsIDE0NzQsIDY3ODkzLCA1NDkyLCAKKyAgICA2OTIzLCA5MjI4MSwgMTA0NDEsIDczODM2LCAwLCA0Mzk5MCwgNTQ5MywgMCwgNzQzMTksIDAsIDY2NjM1LCAxMjAxOSwgMCwgCisgICAgMTYxOCwgMCwgMTIwNDc0LCA5NjQ1LCAxMDQzMCwgOTE3OTU5LCA1ODUzLCAxMzA2MywgMTAzNjMsIDAsIDEyOTU2LCAKKyAgICAxMjgxNjksIDEyMDcyOSwgMTEzMTQsIDkxNzU4MiwgMTIwNjAsIDAsIDc4MzkyLCAxMjgyNiwgNjMyOSwgMCwgMTA1MTQsIAorICAgIDY1NTE3LCA3NDM5NSwgMjcwNywgODMwOSwgMCwgMTI3MDU0LCA3ODM5OCwgNDM1NzAsIDI2OTcsIDQzNDIwLCA3ODM5NiwgCisgICAgMTI3MDU3LCAyNjk1LCA0MjE3MSwgMCwgMCwgMCwgNjc2MTcsIDExODk3MSwgMCwgMjY5MywgMTIxMjUsIDEyNzY2LCAwLCAKKyAgICAxMTY0LCAxMjg4MTcsIDAsIDQxOTE4LCA5ODMxNjgsIDEyNzU0MiwgODY4NywgNjYwMDksIDEyMTc4LCA3MDUzLCAxMjgwMDEsIAorICAgIDc0NjksIDAsIDUyNDgsIDEyMjE4LCAxMjA1MzgsIDY0MjcsIDQyODg0LCA0MTEyMywgMCwgMCwgNDI4NzMsIDQxMTI2LCAKKyAgICA5OTkxLCA0MTEyOCwgNzQzNzEsIDEyNzAzMSwgMCwgOTg3MywgMCwgNDI4NzcsIDc5OTQsIDY0NzYyLCAyMDUzLCA0Mjg0MywgCisgICAgNjU5MSwgOTM0MCwgMCwgMTU4OSwgMCwgMjk2LCA3NDQzOCwgNzg4NTIsIDAsIDY3ODQxLCA3NDM3MCwgMCwgODkyMiwgCisgICAgMTI4MDY4LCA3NDYwMCwgMTI3MDAsIDc0ODM2LCAwLCAxMjU3OSwgMCwgMTI1NzUsIDY0MTYsIDU2NTYsIDI4OTEsIDEzMjYyLCAKKyAgICA2NTU5MCwgNTI5OSwgMCwgMTE0NzMsIDU0NDksIDEyNTIsIDAsIDc4NDA0LCA0MTQzMSwgNzQzNjksIDY1MzczLCA1Mjk1LCAKKyAgICA5MTc1NjksIDc0MTE0LCAxMjIzLCAxNjQyLCAxNzQsIDc4Mzk5LCA4ODMsIDQxNjEsIDEyNjkxLCA0MjYwMywgNDE0MTMsIAorICAgIDMyMTIsIDQxNDU5LCAzMjExLCA3NDgxMCwgNDE0MjUsIDEyNzAyOSwgNzg0MTIsIDc0NDUwLCA5NzI4LCAzODQ2LCA4MDcwLCAKKyAgICA2MTUwLCA2NjM2LCA0MzcwLCAwLCAwLCA3NDE3OCwgNzQ1ODcsIDc0MTE3LCAwLCAwLCAwLCA0OTg2LCAxMjE4OSwgMCwgCisgICAgNjc2NDgsIDEyMDQ5OSwgOTQwMDEsIDQyNTcsIDEyMTA0LCA3Nzk0MiwgNjIyMCwgOTAwNCwgNjU1NjEsIDAsIDc3OTQ5LCAwLCAKKyAgICA2ODEzNSwgOTE3NTc2LCA3Nzk0NiwgMCwgNjk2NzksIDY5Njg0LCA5ODkwLCA3ODU2MSwgMTI5NzEsIDc4NDUzLCA5MjU1NiwgCisgICAgNzM4OTgsIDExOTc5LCA3MDA1MSwgMTE4OTAwLCA5MTc4OTQsIDAsIDk2MzUsIDEyNjAwLCA4ODcxLCAwLCAwLCAwLCA2NDY5LCAKKyAgICA3NDIyNywgMCwgNjUzMDQsIDQ2NzksIDEwMjMwLCA2NDMwMCwgNjQ4NjcsIDM0MjcsIDQyNDAsIDAsIDAsIDAsIDAsIAorICAgIDQyOTE2LCAwLCAwLCAwLCA3MjgyLCA3ODcyOCwgNjU3MzMsIDQ0NDUsIDEyNzEzOCwgMTI4MDgyLCAzNDk0LCA3NDYwNiwgCisgICAgNjU1NSwgMCwgNzc5NzYsIDAsIDAsIDc4NTY2LCAwLCA5ODMxODksIDY1ODk4LCA5ODMyMzgsIDY1MzEyLCA1NDQ3LCAwLCAKICAgICAxMjg5NSwgNjU1OTMsIDQwMTAsIDAsIDQxMTA2LCAwLCA2NDQ0OCwgMCwgNDExMDUsIDAsIDY1ODIwLCA2MjMyLCAwLCAKICAgICAxMjgyODAsIDAsIDQzNjA4LCAxMTkwOTEsIDAsIDY1MzgsIDQzMzUsIDc4MzY0LCAzOTQxLCA0MTEyMiwgMTEwNjEsIAotICAgIDc4MzYzLCA2NDg5MiwgOTExMywgMTk1NCwgMTIxNTUsIDAsIDQyODc4LCAxMTUwMCwgMCwgMCwgNzQ1NzgsIDAsIDY1ODMyLCAKLSAgICAwLCAwLCAwLCA3Nzk3NSwgMTE5MjMwLCA0NTg2LCAwLCAzNTAsIDEwOTUxLCAwLCA1MDksIDAsIDAsIDkyMzA3LCAwLCAwLCAKLSAgICA1MTMzLCAwLCAwLCA5NTAwLCAwLCA0OTU3LCA2NDc0MSwgMjQyMiwgOTM1NCwgMCwgMCwgMCwgMjQ5NiwgMTE1MTYsIDk0NCwgCi0gICAgMTE4ODUxLCAzODkwLCAxMjE2OCwgMTQzOCwgMCwgMCwgMCwgNDE5NDcsIDEyMjAsIDEyMDgyOCwgMTI4NTU1LCAwLCAwLCAKLSAgICAxNTcxLCA0MjYzMCwgNDE5NDksIDQyODA1LCA4MjcwLCA5NDMsIDU2NCwgMCwgMzEyLCA0MTk4MCwgMCwgMCwgNzgxMjAsIAotICAgIDg4NzcsIDI2OSwgNDQyOSwgNjI3MiwgOTYxNywgMTQ2MCwgNjk1NCwgNzg2NTcsIDQxMTIwLCA2NTEyMSwgMTA4NjIsIAotICAgIDYwNjAsIDQxMTE5LCA0MTQxNiwgNzQzNTUsIDQxNzMsIDAsIDAsIDAsIDE5MDYsIDkxNzk4NiwgMTE1MzIsIDc0MDczLCAwLCAKLSAgICAwLCAxOTg1LCA2Mjk2LCA5NTgyLCA5MTc4OTUsIDY0Mjg3LCAwLCA3ODExNSwgMTE0MjgsIDE3MzAsIDI0NTcsIDAsIAotICAgIDE5OTE4LCAxMDQ2OSwgMCwgMCwgNzcwMywgODg0MCwgODAzNSwgMCwgMCwgOTI0OTEsIDAsIDYxMjksIDAsIDAsIDEyODI2OCwgCi0gICAgMCwgNzg3NCwgODY4MSwgMTE5MDkyLCAwLCAxMzEzNiwgMCwgMCwgNzQyNzgsIDYzODg2LCAxMTg4ODEsIDk2MDUsIDczODkyLCAKLSAgICAxMzIyMCwgMTI4Nzc2LCAxMjAyNzQsIDU1MTQsIDAsIDkyMjgsIDAsIDAsIDAsIDUyNDAsIDk4MTEsIDEwMDEyLCAzMDk2LCAKLSAgICAwLCAwLCAwLCA2NjY3NiwgNjU4NzMsIDAsIDAsIDAsIDk1MDEsIDAsIDEyNzIsIDY0NTM2LCA2NTQ2NSwgNjQ2NTQsIDc0NjcsIAotICAgIDAsIDE0NjcsIDEwMTU4LCAxMDA0MCwgMCwgOTUxOSwgMCwgOTE3ODEyLCAwLCAxMTg4OTksIDEyMTkzLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxOTkzNSwgMCwgOTIxNjIsIDY5Njc2LCAwLCAwLCAwLCA1Mjc1LCAwLCAwLCA4NjM3LCAwLCAwLCAzNzg5LCA2Mzg4MCwgCi0gICAgMTE0NzEsIDQzNTU0LCA2NTg2MiwgMTE0NzQsIDY2MzMyLCA2NjYwMywgMTI4MTM4LCAyNDI2LCAxMjA0MiwgOTIxOTQsIDAsIAotICAgIDk1MzcsIDM5NjEsIDEyMTE1LCA3Nzk1MywgMjYwNSwgNDUwMCwgNjQ1NjEsIDU1MjI0LCA0OTgxLCAwLCAwLCA2Mzg3NiwgCi0gICAgMTE2NjcsIDQyNjg2LCA3Nzk3MywgNDIzNjIsIDY0Njg2LCA0NDk5LCA0MTY0OSwgNzU4OSwgMCwgMCwgMzIzNywgMCwgCi0gICAgNjgyMTUsIDAsIDg1NDEsIDc4Mjk4LCAwLCA0MTg2NiwgMCwgMCwgMCwgMCwgMCwgNDM1NTUsIDI4MjMsIDk1NTksIDEwMDYwLCAKLSAgICA0MTk0MCwgODI5OSwgNDE5NDUsIDcxMzIsIDQxOTQxLCAzMzA4LCA3MTkwLCA2NDg4MCwgODYxNCwgNjUyMjAsIDQxNDkzLCAKLSAgICAwLCA0MTY5OSwgMTA3NjIsIDQzNzgwLCAxMjk5OSwgMCwgMCwgODEwNiwgNDEyOCwgMCwgMCwgNDQ5NCwgMCwgNDAxMiwgCi0gICAgMTAzOTUsIDAsIDQzNjMzLCA2NTQ0NywgMCwgMCwgMTEwMDQsIDY5NSwgNzM5LCA2OTYsIDc2MTEsIDAsIDQyNzU1LCAKLSAgICA3NDgwMiwgOTIyNywgNzUwNiwgNzUxMCwgOTIyODEsIDY5MSwgNzM4LCA3NTExLCA3NTEyLCA3NTE1LCAzODY4LCA2ODgsIAotICAgIDQxODQ3LCA2OTAsIDI1NDgsIDczNywgOTc0LCA4MDAzLCA3NDA2LCA5MTc5MTEsIDAsIDAsIDM5ODUsIDkxNzkxMiwgCi0gICAgNjU4NjAsIDYzOTIxLCA3MDUxLCA2OTc3NywgNDY4MiwgOTE3ODA1LCAxMjgwOSwgNjQwNiwgNDY4NSwgOTI1MDUsIDEwODc5LCAKLSAgICAxMDM0NywgNDY4MCwgNjM0MSwgMCwgMzg1MSwgODEzMiwgNzQzMjUsIDAsIDkxNzkwNywgMCwgNDE5NTgsIDExOTE3NiwgCi0gICAgOTE3OTA4LCAwLCAwLCA0MjY1NywgOTI0NjgsIDc2NDMsIDQyMzczLCAxMTcxNCwgNjc1ODcsIDQzNTY4LCAwLCAxMTcxNywgCi0gICAgNzY1MCwgMTA1OTQsIDY0OTUxLCA3NjQ3LCA3NjQ5LCAxMjgxNTUsIDc2NDYsIDAsIDc4MDgyLCA5NjUxLCAwLCAzODkxLCAwLCAKLSAgICAwLCAyMzM3LCAxNzM1LCA3NDMyNCwgNjc4NjAsIDIzNjMsIDAsIDAsIDQzNTYxLCAwLCAwLCA3NDE0NiwgMTg2MCwgNzQ5NSwgCi0gICAgNzU4MCwgNTgxMiwgNzQ5NywgNzU4NCwgMTE5MTQwLCAxMjc4NTMsIDAsIDEyMDM0NywgNzcyNywgMCwgODQ5OCwgNjk4MTgsIAotICAgIDg5NDksIDMwNjUsIDQyNzE5LCA3MTM1LCAxNTY5LCA5MjM3NSwgMTI1MzQsIDEyMTI0LCA3NjkwLCAwLCAxMjUzMywgMCwgCi0gICAgNjQxOCwgNDU0MywgNzgwODYsIDY5NjksIDAsIDc0ODAwLCAwLCAwLCAxMTk4MCwgMTI4NjUwLCAwLCA2Mzg5NCwgMTIwNzYwLCAKLSAgICAxMjI4MiwgNjYxOTIsIDAsIDc0NTkyLCA4ODUwLCA3NDI3NSwgOTIzOCwgMTA2MTcsIDkxNzU0NSwgMCwgOTI2MjUsIDAsIAotICAgIDEyNzkxLCAwLCAwLCAwLCA0NDQ3LCA3MzczMiwgMTI3OTMsIDEyOTAwLCA5MjM3NywgMTA5NTAsIDAsIDc4MDg3LCAxMjc5MCwgCi0gICAgNDE0MDAsIDExOTEyOCwgNjY2MDcsIDEyNzkyLCA0MjIzMiwgMTk0OTM4LCAxNzQ0LCAxMjc4OSwgMTAzNjYsIDEyMzE3LCAKLSAgICA0MTMxMCwgMCwgNDEzOTksIDAsIDAsIDU1MjU4LCAwLCAxMjY5MCwgMCwgMCwgNDM2NzIsIDEyNzg0MCwgNDE2NTIsIDI5NzQsIAotICAgIDkwMTAsIDExMzE1LCAwLCAyNzgsIDAsIDQxNDA1LCAxMTkyNTQsIDAsIDEwMDc3LCA2Mzg1MywgNzQ1NTcsIDQyNTg2LCAwLCAKLSAgICAwLCA2MDAyLCAwLCA0MzU1MywgMCwgNjc5MDMsIDAsIDEyNzg3LCA0MTMwOCwgNzkzNCwgNjUzMDYsIDAsIDAsIDAsIDg2NDYsIAotICAgIDAsIDc3ODI5LCAwLCAwLCA2NDEzLCA2NTUwLCAwLCAxOTQwLCAwLCA0MzYzNywgMjIwLCA2NTE5MywgNDM1NTEsIDEwNjc4LCAKLSAgICAxMDA0NCwgMCwgMCwgMCwgNjg2NTksIDY0MDMsIDU3MDcsIDEwMzkzLCAxMjc1MzIsIDAsIDY2NjE0LCAwLCAwLCAwLCAKKyAgICA3ODM2MywgNjQ4OTIsIDkxMTMsIDE5NTQsIDEyMTU1LCA5ODM2NjUsIDQyODc4LCAxMTUwMCwgMCwgMCwgNzQ1NzgsIDAsIAorICAgIDY1ODMyLCAwLCAwLCAwLCA3Nzk3NSwgMTE5MjMwLCA0NTg2LCAwLCAzNTAsIDEwOTUxLCAwLCA1MDksIDAsIDAsIDkyMzA3LCAKKyAgICAwLCAwLCA1MTMzLCAwLCAwLCA5NTAwLCAwLCA0OTU3LCA2NDc0MSwgMjQyMiwgMjIxMiwgOTgzMDgwLCAwLCAwLCAyNDk2LCAKKyAgICAxMTUxNiwgOTQ0LCAxMTg4NTEsIDM4OTAsIDEyMTY4LCAxNDM4LCAwLCA5ODMxMTcsIDAsIDQxOTQ3LCAxMjIwLCAxMjA4MjgsIAorICAgIDEyODU1NSwgMCwgMCwgMTU3MSwgNDI2MzAsIDQxOTQ5LCA0MjgwNSwgODI3MCwgOTQzLCA1NjQsIDAsIDMxMiwgNDE5ODAsIAorICAgIDk4MzkzNSwgMCwgNzgxMjAsIDg4NzcsIDI2OSwgNDQyOSwgNjI3MiwgOTYxNywgMTQ2MCwgNjk1NCwgNzg2NTcsIDQxMTIwLCAKKyAgICA2NTEyMSwgMTA4NjIsIDYwNjAsIDQxMTE5LCA0MTQxNiwgNzQzNTUsIDQxNzMsIDAsIDAsIDAsIDE5MDYsIDkxNzk4NiwgCisgICAgMTE1MzIsIDc0MDczLCAxMjczMzgsIDAsIDE5ODUsIDYyOTYsIDk1ODIsIDkxNzg5NSwgNjQyODcsIDAsIDc4MTE1LCAKKyAgICAxMTQyOCwgMTczMCwgMjQ1NywgOTE3ODA4LCAxOTkxOCwgMTA0NjksIDAsIDAsIDc3MDMsIDg4NDAsIDgwMzUsIDAsIDAsIAorICAgIDkyMjMwLCAwLCA2MTI5LCAwLCAxMjg1MjgsIDEyODI2OCwgMCwgNzg3NCwgODY4MSwgMTE5MDkyLCAwLCAxMzEzNiwgMCwgMCwgCisgICAgNzAxMDIsIDYzODg2LCAxMTg4ODEsIDk2MDUsIDcxMzA4LCAxMzIyMCwgMTI4Nzc2LCAxMjAyNzQsIDU1MTQsIDAsIDkyMjgsIAorICAgIDAsIDAsIDAsIDUyNDAsIDk4MTEsIDEwMDEyLCAzMDk2LCAwLCAwLCA5ODMzNDMsIDY2Njc2LCA2NTg3MywgMCwgMCwgMCwgCisgICAgOTUwMSwgMCwgMTI3MiwgNjQ1MzYsIDY1NDY1LCA2NDY1NCwgNzQ2NywgMCwgMTQ2NywgMTAxNTgsIDEwMDQwLCAwLCA5NTE5LCAKKyAgICAwLCA5MTc4MTIsIDAsIDExODg5OSwgMTIxOTMsIDAsIDAsIDAsIDAsIDk4MzM0NSwgMTk5MzUsIDAsIDkyMTYyLCA2OTY3NiwgCisgICAgMCwgMCwgMCwgNTI3NSwgMCwgMCwgODYzNywgMCwgMCwgMzc4OSwgNjM4ODAsIDExNDcxLCA0MzU1NCwgNjU4NjIsIDExNDc0LCAKKyAgICA2NjMzMiwgNjY2MDMsIDEyODEzOCwgMjQyNiwgMTIwNDIsIDkyMTk0LCA5ODM5MDIsIDk1MzcsIDM5NjEsIDEyMTE1LCAKKyAgICA3Nzk1MywgMjYwNSwgNDUwMCwgNjQ1NjEsIDU1MjI0LCA0OTgxLCAwLCAwLCA2Mzg3NiwgMTE2NjcsIDQyNjg2LCA3Nzk3MywgCisgICAgNDIzNjIsIDY0Njg2LCA0NDk5LCA0MTY0OSwgNzU4OSwgMCwgMCwgMzIzNywgMCwgNjgyMTUsIDkxNzkwNCwgODU0MSwgCisgICAgNzgyOTgsIDcwMDM0LCA0MTg2NiwgMCwgMCwgMCwgMCwgNjk5MjQsIDQzNTU1LCAyODIzLCA5NTU5LCAxMDA2MCwgNDE5NDAsIAorICAgIDgyOTksIDQxOTQ1LCA3MTMyLCA0MTk0MSwgMzMwOCwgNzE5MCwgNjQ4ODAsIDg2MTQsIDY1MjIwLCA0MTQ5MywgMCwgCisgICAgNDE2OTksIDEwNzYyLCA0Mzc4MCwgMTI5OTksIDAsIDAsIDgxMDYsIDQxMjgsIDAsIDYyNzQsIDQ0OTQsIDAsIDQwMTIsIAorICAgIDEwMzk1LCA5ODM1OTEsIDQzNjMzLCA2NTQ0NywgMTI2NTExLCAwLCAxMTAwNCwgNjk1LCA3MzksIDY5NiwgNzYxMSwgMCwgCisgICAgNDI3NTUsIDc0ODAyLCA5MjI3LCA3NTA2LCA3NTEwLCA2OTkzNywgNjkxLCA3MzgsIDc1MTEsIDc1MTIsIDc1MTUsIDM4NjgsIAorICAgIDY4OCwgNDE4NDcsIDY5MCwgMjU0OCwgNzM3LCA5NzQsIDgwMDMsIDc0MDYsIDkxNzkxMSwgMCwgMTI4Njg4LCAzOTg1LCAKKyAgICA5MTc5MTIsIDY1ODYwLCA2MzkyMSwgNzA1MSwgNjk3NzcsIDQ2ODIsIDkxNzgwNSwgMTI4MDksIDY0MDYsIDQ2ODUsIAorICAgIDkyNTA1LCAxMDg3OSwgMTAzNDcsIDQ2ODAsIDYzNDEsIDAsIDM4NTEsIDgxMzIsIDc0MzI1LCAwLCA5MTc5MDcsIDAsIAorICAgIDQxOTU4LCAxMTkxNzYsIDkxNzkwOCwgMCwgMCwgNDI2NTcsIDkyNDY4LCA3NjQzLCA0MjM3MywgMTE3MTQsIDY3NTg3LCAKKyAgICA0MzU2OCwgOTgzMTc1LCAxMTcxNywgNzY1MCwgMTA1OTQsIDY0OTUxLCA3NjQ3LCA3NjQ5LCAxMjgxNTUsIDc2NDYsIDAsIAorICAgIDc4MDgyLCA5NjUxLCAwLCAzODkxLCAwLCAwLCAyMzM3LCAxNzM1LCA3NDMyNCwgNjc4NjAsIDIzNjMsIDk4MzEzNSwgMCwgCisgICAgNDM1NjEsIDAsIDAsIDc0MTQ2LCAxODYwLCA3NDk1LCA3NTgwLCA1ODEyLCA3NDk3LCA3NTg0LCAxMTkxNDAsIDEyNzg1MywgCisgICAgMCwgMTIwMzQ3LCA3NzI3LCAwLCA4NDk4LCA2OTgxOCwgODk0OSwgMzA2NSwgNDI3MTksIDcxMzUsIDE1NjksIDkyMzc1LCAKKyAgICAxMjUzNCwgMTIxMjQsIDc2OTAsIDAsIDEyNTMzLCA5ODM4NzAsIDY0MTgsIDQ1NDMsIDc4MDg2LCA2OTY5LCAwLCA3NDgwMCwgCisgICAgMCwgNjc5NzQsIDExOTgwLCAxMjg2NTAsIDk4Mzc5MiwgNjM4OTQsIDEyMDc2MCwgMTIyODIsIDY2MTkyLCAwLCA3NDU5MiwgCisgICAgODg1MCwgNzQyNzUsIDkyMzgsIDEwNjE3LCA5MTc1NDUsIDAsIDkyNjI1LCAwLCAxMjc5MSwgMCwgMCwgMTI3ODQzLCA0NDQ3LCAKKyAgICA3MzczMiwgMTI3OTMsIDEyOTAwLCA5MjM3NywgMTA5NTAsIDAsIDc4MDg3LCAxMjc5MCwgNDE0MDAsIDExOTEyOCwgNjY2MDcsIAorICAgIDEyNzkyLCA0MjIzMiwgMTk0OTM4LCAxNzQ0LCAxMjc4OSwgMTAzNjYsIDEyMzE3LCA0MTMxMCwgOTgzODYwLCA0MTM5OSwgMCwgCisgICAgMCwgNTUyNTgsIDAsIDEyNjkwLCAwLCAwLCA0MzY3MiwgMTI3ODQwLCA0MTY1MiwgMjk3NCwgOTAxMCwgMTEzMTUsIDAsIAorICAgIDI3OCwgMCwgNDE0MDUsIDExOTI1NCwgMCwgMTAwNzcsIDYzODUzLCA3NDU1NywgNDI1ODYsIDAsIDAsIDYwMDIsIDAsIAorICAgIDQzNTUzLCAwLCA2NzkwMywgMCwgMTI3ODcsIDQxMzA4LCA3OTM0LCA2NTMwNiwgMCwgMCwgMCwgODY0NiwgOTgzMTg2LCAKKyAgICA3NzgyOSwgNzEzNjAsIDAsIDY0MTMsIDY1NTAsIDAsIDE5NDAsIDAsIDQzNjM3LCAyMjAsIDY1MTkzLCA0MzU1MSwgMTA2NzgsIAorICAgIDEwMDQ0LCAxMjgzMjIsIDAsIDAsIDY4NjU5LCA2NDAzLCA1NzA3LCAxMDM5MywgMTI3NTMyLCAwLCA2NjYxNCwgMCwgMCwgMCwgCiAgICAgMTAyOTcsIDAsIDM3NDIsIDAsIDM5NTksIDAsIDAsIDAsIDI0NjcsIDAsIDYwMDMsIDYzODQ0LCA2NjYzLCA4MDQwLCAwLCAKLSAgICA2Mzg0NSwgNDE4MiwgNzgxNzEsIDQ2NzYsIDEyMDUwMSwgMCwgMCwgMjUxMCwgMCwgMTAyMDgsIDc4MTY4LCA5MjM2MSwgCi0gICAgMTE1NDAsIDQzNTQ2LCA2NjkyLCAwLCA0MTA2MCwgMCwgMCwgOTA4MywgMCwgMCwgNzgxNDQsIDE1NTksIDYzODMxLCA5Njc3LCAKLSAgICAxMjAyNjAsIDAsIDY1MjU2LCAwLCA3NDA3MCwgMCwgMCwgMzY1LCAxMjA1NiwgNDMwMjcsIDEyMDQyMywgNDE3MTYsIAorICAgIDQzNzU4LCA0MTgyLCA3ODE3MSwgNDY3NiwgMTIwNTAxLCAwLCAwLCAyNTEwLCAwLCAxMDIwOCwgNzgxNjgsIDkyMzYxLCAKKyAgICAxMTU0MCwgNDM1NDYsIDY2OTIsIDAsIDQxMDYwLCAwLCA0NjY4LCA5MDgzLCAwLCAwLCA3ODE0NCwgMTU1OSwgNjM4MzEsIAorICAgIDk2NzcsIDEyMDI2MCwgMCwgNjUyNTYsIDAsIDc0MDcwLCAwLCAwLCAzNjUsIDEyMDU2LCA0MzAyNywgMTIwNDIzLCA0MTcxNiwgCiAgICAgMTI4MjM2LCAwLCAxMjA0NzIsIDU1MTYsIDI4NDUsIDc3MTcsIDgwMzYsIDQxNzE3LCA3MzgyNywgNTQ0LCAxMjA0NSwgCi0gICAgNjI3OCwgMCwgNTUxNSwgMCwgMCwgMCwgNjUzMzksIDQzMjIxLCA2NTE5NCwgMCwgNTUxNywgMCwgMCwgNzQ4NDEsIDY3ODg0LCAKLSAgICAwLCA2Nzg5MCwgNjc4ODUsIDY3ODgwLCA2Nzg4MSwgNjc4ODIsIDY3ODgzLCAwLCAwLCA2Nzg3OSwgMTI3MTg4LCAxOTAyLCAKLSAgICA2Nzg4NywgOTYzOCwgMTI5NzYsIDAsIDEyNDgzLCAxMjM2OCwgNDE3NjksIDQyNzI2LCA0MTc2NSwgMTI4ODE5LCA2NjY3LCAKLSAgICA2Nzg3NCwgNzU1NiwgNjc4NzgsIDc0MzUxLCAxMTI2NCwgOTg5LCA0MjY3NywgNjc4ODksIDAsIDEzMTEsIDkxNzk2NiwgCi0gICAgNDMyNiwgMTEwMDAsIDYzODI0LCAxMzA2OCwgMTA5MzIsIDEyODg4MCwgNjkxNywgNzgxNTUsIDAsIDk0OSwgNzgxNjIsIDAsIAotICAgIDYxNDgsIDg2MDUsIDQyMjUzLCA3ODE3NywgMCwgMCwgNDI3MTUsIDAsIDAsIDAsIDYzODcxLCAwLCA0MTc5NiwgMTI2OSwgCi0gICAgNjUzMCwgMCwgNjUwNTcsIDAsIDUxNDQsIDEyMjIxLCA0MjcxNiwgMCwgNDQzMSwgNDMzMSwgMCwgMTI4Njc1LCA0MTgzNCwgCi0gICAgNTI3OSwgMCwgMTAzMzYsIDgzMTIsIDAsIDQyNzAxLCAxMjg4MjUsIDAsIDc4MTY1LCA2NjAzNiwgMCwgMCwgNjQyOCwgCi0gICAgNDIyNzAsIDAsIDAsIDQzMDU5LCA0MjY2NiwgNTI1NiwgMTA2NywgMjU1LCAxMjEzMSwgMCwgOTQ5MywgMCwgNDEwMTQsIAotICAgIDExNzkzLCAwLCAwLCA3NDM5NCwgNDM0NjAsIDEwNjUzLCA0MjcyMywgMCwgMTE5NjMyLCAwLCA2NTYwLCA3MDE2LCA3NDI3NCwgCi0gICAgMCwgNDM1NTYsIDM5MjksIDczOTAwLCA2NjE0LCAyNzY4LCA5MjUwNCwgOTc0NiwgNTEzNSwgMTE4MTEsIDEyNzk2LCAKLSAgICAxMTk1MywgMCwgNjk3NjEsIDUxMzksIDM0NiwgNzQzMDMsIDYzMDUsIDEyNzk1LCA0Njc1LCA1MTY4LCA3ODU1MiwgCi0gICAgMTI3NzUzLCA3NDMxNSwgNzQzNjEsIDgyNTMsIDg4MTcsIDExMzYsIDAsIDQzNTYzLCA5MjIzMiwgMCwgMTk0NzUwLCA3MzkyLCAKLSAgICA4MjMwLCA5MzY1LCAwLCAwLCAwLCAwLCAwLCA0MDQxLCAwLCAyMzU3LCA0MzI0MCwgMTI3ODYsIDIyOSwgMTE5ODg1LCAKLSAgICAxMTk4ODQsIDQ0MDA0LCA3MTQyLCAxMTk4ODEsIDEyMzUwLCA2NTU1NCwgMTE5ODgyLCAxMTk4NzcsIDExOTg3NiwgMTI3ODUsIAotICAgIDYzODYzLCA0Mzc5NSwgNzc3MCwgMTA3MTIsIDY0ODUzLCAxMjY4NiwgMTE4OTE2LCA0MjM3NSwgMCwgMTI3MjM4LCA2NjM1MiwgCi0gICAgMTA0NzAsIDAsIDExMDU5LCAxMDc5MSwgOTE3OTQ0LCA0NTAsIDAsIDAsIDEwNDMyLCAxMjA5NywgNTQ1MCwgNjQ2OTEsIAotICAgIDEyMzMsIDAsIDQ0MDA5LCA3ODI4NCwgNjYzMzgsIDAsIDAsIDE4MzksIDExODc5OSwgMCwgMTA5MjcsIDE3MDEsIDAsIAorICAgIDYyNzgsIDAsIDU1MTUsIDAsIDAsIDk4MzA1MSwgNjUzMzksIDQzMjIxLCAyMjExLCAwLCA1NTE3LCAwLCAwLCA3NDg0MSwgCisgICAgNjc4ODQsIDAsIDY3ODkwLCA2Nzg4NSwgNjc4ODAsIDY3ODgxLCA2Nzg4MiwgNjc4ODMsIDAsIDAsIDY3ODc5LCAxMjcxODgsIAorICAgIDE5MDIsIDY3ODg3LCA5NjM4LCAxMjk3NiwgMTI2NTQ2LCAxMjQ4MywgMTIzNjgsIDQxNzY5LCA0MjcyNiwgNDE3NjUsIAorICAgIDczNjEsIDY2NjcsIDY3ODc0LCA3NTU2LCA2Nzg3OCwgNzQzNTEsIDExMjY0LCA5ODksIDQyNjc3LCA2Nzg4OSwgMCwgMTMxMSwgCisgICAgOTE3OTY2LCA0MzI2LCAxMTAwMCwgNjM4MjQsIDEzMDY4LCAxMDkzMiwgMTI4ODgwLCA2OTE3LCA3ODE1NSwgMCwgOTQ5LCAKKyAgICA3ODE2MiwgMCwgNjE0OCwgODYwNSwgNDIyNTMsIDc4MTc3LCAwLCAwLCA0MjcxNSwgMCwgMCwgMCwgNjM4NzEsIDAsIAorICAgIDQxNzk2LCAxMjY5LCA2NTMwLCAwLCA2NTA1NywgMCwgNTE0NCwgMTIyMjEsIDQyNzE2LCAwLCA0NDMxLCA0MzMxLCAKKyAgICA5ODM3MjAsIDEyODY3NSwgNDE4MzQsIDUyNzksIDAsIDEwMzM2LCA4MzEyLCAwLCA0MjcwMSwgMTI4ODI1LCAwLCA3ODE2NSwgCisgICAgNjYwMzYsIDAsIDAsIDY0MjgsIDQyMjcwLCAwLCA5ODM1OTYsIDQzMDU5LCA0MjY2NiwgNTI1NiwgMTA2NywgMjU1LCAKKyAgICAxMjEzMSwgOTgzNzEzLCA5NDkzLCA5ODM5NTksIDQxMDE0LCAxMTc5MywgMTk0OTIwLCAwLCA3NDM5NCwgNDM0NjAsIAorICAgIDEwNjUzLCA0MjcyMywgOTgzODQ1LCAxMTk2MzIsIDAsIDY1NjAsIDcwMTYsIDc0Mjc0LCA5ODM2MTUsIDQzNTU2LCAzOTI5LCAKKyAgICA2Nzk3NywgNjYxNCwgMjc2OCwgOTI1MDQsIDk3NDYsIDUxMzUsIDExODExLCAxMjc5NiwgMTE5NTMsIDAsIDY5NzYxLCAKKyAgICA1MTM5LCAzNDYsIDc0MzAzLCA2MzA1LCAxMjc5NSwgNDY3NSwgNTE2OCwgNzg1NTIsIDEyNzc1MywgNzQzMTUsIDc0MzYxLCAKKyAgICA4MjUzLCA4ODE3LCAxMTM2LCAwLCA0MzU2MywgOTIyMzIsIDAsIDE5NDc1MCwgNzM5MiwgODIzMCwgOTM2NSwgMCwgMCwgCisgICAgOTgzNjA3LCAwLCAwLCA0MDQxLCAwLCAyMzU3LCA0MzI0MCwgMTI3ODYsIDIyOSwgMTE5ODg1LCAxMTk4ODQsIDQ0MDA0LCAKKyAgICA3MTQyLCAxMTk4ODEsIDEyMzUwLCA2NTU1NCwgMTE5ODgyLCAxMTk4NzcsIDExOTg3NiwgMTI3ODUsIDYzODYzLCA0Mzc5NSwgCisgICAgNzc3MCwgMTA3MTIsIDY0ODUzLCAxMjY4NiwgMTE4OTE2LCA0MjM3NSwgMCwgMTI3MjM4LCA2NjM1MiwgMTA0NzAsIDAsIAorICAgIDExMDU5LCAxMDc5MSwgOTE3OTQ0LCA0NTAsIDExOTMyOCwgMCwgMTA0MzIsIDEyMDk3LCA1NDUwLCA2NDY5MSwgMTIzMywgMCwgCisgICAgNDQwMDksIDc4Mjg0LCA2NjMzOCwgMCwgMCwgMTgzOSwgMTE4Nzk5LCA5ODMyMTcsIDEwOTI3LCAxNzAxLCA5ODM2NTUsIAogICAgIDIzODgsIDQxNzQ5LCA0MTc2MSwgNTQ1MywgODM2MSwgMTE5ODY1LCA0MTc1OCwgNTQ0NCwgNDE3NjMsIDY0ODg5LCA3MTQzLCAKLSAgICA5MjQ5MywgNzg2NzcsIDAsIDkyNDI5LCA3ODE3NCwgNjY0MzIsIDg4MDEsIDMwNTMsIDQzNDAsIDAsIDAsIDY1ODEyLCAKLSAgICA5MTc4MzEsIDAsIDQxODI0LCAwLCAxMjAyMDMsIDE5NDgwMCwgMTk0ODAzLCA0MjcwMCwgMTk0ODA1LCAxMjc5ODAsIAorICAgIDkyNDkzLCA3ODY3NywgMCwgOTI0MjksIDc4MTc0LCA2NjQzMiwgODgwMSwgMzA1MywgNDM0MCwgOTgzMDQ0LCAwLCA2NTgxMiwgCisgICAgOTE3ODMxLCAwLCA0MTgyNCwgNjc5ODUsIDEyMDIwMywgMTk0ODAwLCAxOTQ4MDMsIDQyNzAwLCAxOTQ4MDUsIDEyNzk4MCwgCiAgICAgMTk0ODA3LCA3ODY3NiwgOTIzNTYsIDE5NDgwOCwgMCwgMCwgNDQ5MywgNDMzNiwgMCwgMjMxNCwgNDM2MDIsIDc4ODI2LCAKLSAgICAxMTkzMjUsIDE5NDgxMSwgNDI0MzksIDY0NjM4LCA0MjMyNywgNDM1MjgsIDQ0ODksIDE5NDc5MSwgMCwgMTk0NzkzLCAKLSAgICAxOTEyLCA0MjM4NSwgMTAzMDYsIDEwMzcwLCAwLCAwLCA4ODY3LCAxMDI1MCwgMTAyNTgsIDI3MTIsIDE2MzUsIDc4ODIxLCAKLSAgICAxNDEwLCA5MjY3MSwgMCwgMTE4ODc4LCAwLCAwLCA5OTE5LCAwLCA1NTksIDEyODE1NywgNDE4MjUsIDEyNzk3NSwgNzgxODgsIAotICAgIDQ4OTIsIDc0MDE2LCAxOTQ3ODEsIDY1NDIsIDQxOTU3LCAxMjg4NjUsIDU3NzcsIDAsIDc1OSwgNjU3NDksIDIwNzksIAotICAgIDY1MjQ4LCAxMjc4OCwgNjQ0ODcsIDY0NTUyLCAwLCAxMDIyMywgNDIwNjIsIDAsIDAsIDAsIDM2NjgsIDY1NzU0LCA0MzU2MCwgCi0gICAgMTIyMjYsIDAsIDY1MTQ5LCAyMzQwLCA0MTk1OSwgMTk0Nzg2LCAxOTQ3ODUsIDE5NDc4OCwgNDM2MTgsIDY1NzQ3LCAKLSAgICAxMDkzNywgMjk2MiwgMCwgMjMyMSwgMzU4NywgNjU3NDUsIDkyNDM2LCA4OTIxLCA5OTUyLCAwLCAwLCA0MjcxNCwgOTk1MSwgCi0gICAgNDM0MDksIDE5NDc3MCwgMjk0OSwgNjYwMTIsIDE5NDc3NSwgMTk0Nzc0LCAyOTU4LCA2ODM1OSwgNDE4MjAsIDQzMDM4LCAKLSAgICAyMzk1LCAwLCA5OTc2LCAxMjAwNDMsIDEyMDA1MCwgMTIwMDU4LCA2ODIyMCwgMTI4MTQzLCA0MjgwOSwgNDI4MDcsIDAsIAotICAgIDEyMDA0NiwgMTAxOTgsIDQxNTAsIDY0MzcxLCA4MzE4LCA0MTc5MCwgMCwgNDE4OTgsIDIzNjAsIDQxNzk0LCA5MTc5NDIsIAotICAgIDAsIDEyNzgxOCwgMCwgMCwgMjQxOCwgMCwgMjQxMSwgMTEzMzYsIDc5OSwgNjM4MjMsIDEwMjc2LCAxMDMwOCwgMTAzNzIsIAotICAgIDkxNzU0MSwgNDE3NzIsIDQyODEzLCAyMzE3LCAxMDI2MCwgMTE4OTgwLCA1NTI4NCwgOTIyMDMsIDAsIDEwMzg0LCAwLCAwLCAKLSAgICAwLCA3NzUzLCAyMzUxLCA2NjU1LCA2NDQ4OSwgMCwgMCwgNzc4NzIsIDQ0NDMsIDQyNzc5LCAyMzAsIDAsIDAsIDQzNTQ5LCAKLSAgICA0ODU1LCA0MjE1MCwgNjU3MzksIDU0NDEsIDQxODk2LCAxMDI4OCwgMTAzMjAsIDAsIDg1NSwgNzA0NiwgNjEwOSwgNjUwNDUsIAotICAgIDYzODM5LCA3ODE5OCwgMjA0OSwgMTAwOTgsIDAsIDc0MTQ1LCAxMjc5NDMsIDEwMjY0LCAxMDI4MCwgOTE4NCwgMTAzNzYsIAotICAgIDcwMTMsIDQ0NjcsIDAsIDAsIDAsIDQxODg3LCAwLCA0ODYyLCA5NzM1LCA2NTM3LCAxMjA1OTEsIDc0Mjg2LCAzOTE0LCAKLSAgICA5MjE3OCwgMCwgOTA2NSwgMTI5NjEsIDAsIDAsIDkyMjUzLCAwLCAyODksIDAsIDQ2OTQsIDExNDIwLCA0NjkwLCAwLCAKLSAgICAxMjA1MTQsIDkxNzk3OCwgNDY5MywgMCwgNDI3MjQsIDAsIDQ2ODgsIDEyMDQ1NCwgMCwgMCwgMTE5NjI5LCA4MjM4LCAKLSAgICAzMTEwLCAxMjAxNjIsIDAsIDEyMDE2MywgNjUyOCwgMTI3NTUzLCA0MzAzNSwgMTIwMTYxLCAyMTgsIDAsIDE1MjAsIDAsIAotICAgIDQ3ODYsIDAsIDQzMjI1LCA0NjAyLCAwLCA3ODE2NywgMTAwODgsIDY1NDgsIDAsIDEyMDE1NiwgNDM5NzgsIDg5ODgsIAotICAgIDg4ODgsIDAsIDAsIDAsIDAsIDEwNjY2LCAwLCA3MzkwMiwgNjk3NDAsIDAsIDAsIDk5NzUsIDAsIDExOTkwMiwgNDY4OSwgCi0gICAgODkzMiwgMCwgNjU1NjAsIDExOTIwOSwgNzQ0NDEsIDc4ODEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDA2NSwgCi0gICAgODIwNywgMCwgOTI2MTMsIDEyODAxMSwgMCwgNjYyLCAwLCA5MjQ0LCAxOTQ4NjMsIDAsIDExOTI2MSwgMCwgMCwgMCwgMCwgCi0gICAgNDE5MjksIDAsIDAsIDY2Njc0LCA0MTkyNiwgMTIwNDA4LCAxMjA0NDMsIDEwNTEzLCA2NDYzNywgMTk0ODYyLCAwLCA1MiwgCi0gICAgMTMxMTgsIDY0NzUsIDAsIDEyMDM0MSwgMTIwOTUsIDEwMjI1LCA0ODEyLCA5MjU3OCwgMCwgMCwgNzQwODUsIDAsIDM5NzgsIAotICAgIDAsIDkxNzk0NSwgMTI3ODIzLCAxMTU4MiwgMTIwNzYxLCAxMjI4MSwgMCwgNjU0NCwgMTMyNDEsIDAsIDY5NzgyLCAKKyAgICAxMTkzMjUsIDE5NDgxMSwgNDI0MzksIDY0NjM4LCA0MjMyNywgNDM1MjgsIDQ0ODksIDcxMzMxLCAwLCAxOTQ3OTMsIDE5MTIsIAorICAgIDQyMzg1LCAxMDMwNiwgMTAzNzAsIDAsIDAsIDg4NjcsIDEwMjUwLCAxMDI1OCwgMjcxMiwgMTYzNSwgNzg4MjEsIDE0MTAsIAorICAgIDkyNjcxLCA5ODMyNDQsIDExODg3OCwgMCwgMCwgOTkxOSwgMTIwNTI4LCA1NTksIDEyODE1NywgNDE4MjUsIDEyNzk3NSwgCisgICAgNzgxODgsIDQ4OTIsIDc0MDE2LCAxOTQ3ODEsIDY1NDIsIDQxOTU3LCAxMjg4NjUsIDU3NzcsIDAsIDc1OSwgNjU3NDksIAorICAgIDIwNzksIDY1MjQ4LCAxMjc4OCwgNjQ0ODcsIDY0NTUyLCAwLCAxMDIyMywgNDIwNjIsIDAsIDAsIDEyNjU3MywgMzY2OCwgCisgICAgNjU3NTQsIDQzNTYwLCAxMjIyNiwgNjc5OTEsIDY1MTQ5LCAyMzQwLCA0MTk1OSwgMTk0Nzg2LCAxOTQ3ODUsIDE5NDc4OCwgCisgICAgNDM2MTgsIDY1NzQ3LCAxMDkzNywgMjk2MiwgMCwgMjMyMSwgMzU4NywgNjU3NDUsIDkyNDM2LCA4OTIxLCA5OTUyLCAwLCAwLCAKKyAgICA0MjcxNCwgOTk1MSwgNDM0MDksIDE5NDc3MCwgMjk0OSwgNjYwMTIsIDE5NDc3NSwgMTk0Nzc0LCAyOTU4LCA2ODM1OSwgCisgICAgNDE4MjAsIDIzMDAsIDIzOTUsIDEyODU2MywgOTk3NiwgMTIwMDQzLCAxMjAwNTAsIDEyMDA1OCwgNjgyMjAsIDEyODE0MywgCisgICAgNDI4MDksIDQyODA3LCAwLCAxMjAwNDYsIDEwMTk4LCA0MTUwLCA2NDM3MSwgODMxOCwgNDE3OTAsIDY3OTc2LCA0MTg5OCwgCisgICAgMjM2MCwgNDE3OTQsIDkxNzk0MiwgNzEzMTQsIDEyNzgxOCwgMCwgMCwgMjQxOCwgOTgzMDk4LCAyNDExLCAxMTMzNiwgNzk5LCAKKyAgICA2MzgyMywgMTAyNzYsIDEwMzA4LCAxMDM3MiwgOTE3NTQxLCA0MTc3MiwgNDI4MTMsIDIzMTcsIDEwMjYwLCAxMTg5ODAsIAorICAgIDU1Mjg0LCA5MjIwMywgMCwgMTAzODQsIDk4MzIxOCwgMCwgMCwgNzc1MywgMjM1MSwgNjY1NSwgNjQ0ODksIDY5OTMxLCAwLCAKKyAgICA3Nzg3MiwgNDQ0MywgNDI3NzksIDIzMCwgMCwgMCwgNDM1NDksIDQ4NTUsIDQyMTUwLCA2NTczOSwgNTQ0MSwgNDE4OTYsIAorICAgIDEwMjg4LCAxMDMyMCwgMCwgODU1LCA3MDQ2LCA2MTA5LCA2NTA0NSwgNjM4MzksIDc4MTk4LCAyMDQ5LCAxMDA5OCwgMCwgCisgICAgNzQxNDUsIDEyNzk0MywgMTAyNjQsIDEwMjgwLCA5MTg0LCAxMDM3NiwgNzAxMywgNDQ2NywgMCwgMCwgMCwgNDE4ODcsIDAsIAorICAgIDQ4NjIsIDk3MzUsIDY1MzcsIDEyMDU5MSwgNzQyODYsIDM5MTQsIDkyMTc4LCA5Mzk3NiwgOTA2NSwgMTI5NjEsIDAsIDAsIAorICAgIDkyMjUzLCAwLCAyODksIDAsIDQ2OTQsIDExNDIwLCA0NjkwLCAwLCAxMjA1MTQsIDkxNzk3OCwgNDY5MywgNzM4OTMsIAorICAgIDQyNzI0LCAwLCA0Njg4LCAxMjA0NTQsIDAsIDAsIDY3OTk0LCA4MjM4LCAzMTEwLCAxMjAxNjIsIDk4Mzg5OSwgMTIwMTYzLCAKKyAgICA2NTI4LCAxMjc1NTMsIDQzMDM1LCA2OTg5OCwgMjE4LCAwLCAxNTIwLCAwLCA0Nzg2LCAwLCA0MzIyNSwgNDYwMiwgMCwgCisgICAgNzgxNjcsIDEwMDg4LCA2NTQ4LCAwLCAxMjAxNTYsIDQzOTc4LCA4OTg4LCA4ODg4LCAwLCAwLCAwLCAwLCAxMDY2NiwgMCwgCisgICAgNzM5MDIsIDY5NzQwLCAwLCAwLCA5OTc1LCAxMjgwMzksIDExOTkwMiwgNDY4OSwgODkzMiwgMCwgNjU1NjAsIDExOTIwOSwgCisgICAgNzQ0NDEsIDc4ODEwLCAwLCAwLCA2Nzk4NywgMCwgMCwgMCwgNjc5ODksIDAsIDEwMDY1LCA4MjA3LCAwLCA5MjYxMywgCisgICAgMTI4MDExLCAwLCA2NjIsIDAsIDkyNDQsIDE5NDg2MywgMCwgMTE5MjYxLCA5ODM0MjAsIDAsIDAsIDAsIDQxOTI5LCAwLCAwLCAKKyAgICA2NjY3NCwgNDE5MjYsIDEyMDQwOCwgMTIwNDQzLCAxMDUxMywgNjQ2MzcsIDE5NDg2MiwgNjgwMTMsIDUyLCAxMzExOCwgCisgICAgNjQ3NSwgMCwgMTIwMzQxLCAxMjA5NSwgMTAyMjUsIDQ4MTIsIDkyNTc4LCAwLCA2Nzk5MiwgNzQwODUsIDAsIDM5NzgsIDAsIAorICAgIDkxNzk0NSwgMTI3ODIzLCAxMTU4MiwgMTIwNzYxLCAxMjI4MSwgMCwgNjU0NCwgMTMyNDEsIDkzOTYxLCA2OTc4MiwgCiAgICAgMTI4NTU3LCAxOTQ4NjAsIDExNzY1LCA2NTI1OCwgMTAzNjksIDAsIDE1ODUsIDcxOTIsIDEwMjQ5LCA0MjIsIDE1MDAsIAogICAgIDIwMzYsIDk4NiwgMTk0ODU5LCA2NDM5NCwgNTc4MSwgNTU5OSwgNjQyOTQsIDI0OTQsIDEyMDQ1MCwgNDg2MSwgNzQwMjEsIAotICAgIDY0MzM0LCA3ODIwMywgMTI3ODA4LCAwLCA5MjI2NiwgNjUxMDIsIDg5NjEsIDY1ODQyLCAxMDI0MywgMTAyNDUsIDkxNzkzMywgCisgICAgNjQzMzQsIDc4MjAzLCAxMjc4MDgsIDAsIDkyMjY2LCA2NTEwMiwgODk2MSwgNjU4NDIsIDEwMjQzLCAxMDI0NSwgNzQxOTEsIAogICAgIDEyMDQxMCwgMCwgMTIwNDUzLCA2NDgyMSwgOTQ3OCwgMjUwOCwgOTI2ODMsIDAsIDIwMiwgMTI4MjQ2LCA3NDEzMSwgMTI0MiwgCiAgICAgNjU1MTQsIDAsIDYzOTQwLCAxMjg3MDYsIDY0NTMzLCAxMjAxMjksIDAsIDY3ODQyLCAxMTk5MCwgOTI0MzAsIDYzOTM5LCAKLSAgICA0MzM3NSwgNjU0NDAsIDI1MDQsIDAsIDc4NjcxLCA2NDgyOSwgMCwgNjk0MywgOTE3OTM0LCA1ODU5LCAwLCAyODU4LCAwLCAKLSAgICA3NDI5NCwgMCwgNjkyMzksIDAsIDExOTAyNywgMTI5OTIsIDI3NTMsIDE5MzYsIDc0NDkxLCA5MjU3NCwgMjc1MSwgMTI2NjIsIAotICAgIDI3NjMsIDg5NTMsIDY0NzAxLCAxMDczMSwgMTI5MjIsIDcwNTIsIDkxNzgzOSwgMCwgMCwgMCwgNjM5MjAsIDc0MTI4LCAKLSAgICAyODU2LCAxMTk5MTAsIDQ3LCAxMTk5MTEsIDEyNjk4NiwgNjU4NTgsIDAsIDAsIDAsIDc4OTksIDAsIDg0MTcsIDQzNzk4LCAKLSAgICA3MDcyLCAwLCAwLCA0MDMzLCAxMjgxNjQsIDQzOTkyLCAwLCAwLCAyMTIsIDY0NjAwLCAxOTAzLCAxMjMyMCwgMCwgMCwgMCwgCi0gICAgMCwgODkxNSwgMjc1OSwgOTQ1LCA2Njg5LCAwLCAwLCAwLCAwLCAxMjkxLCA3NDgyOCwgMCwgMCwgOTUzMSwgMTMxNTUsIAotICAgIDg1MDUsIDY4Mzc5LCAxMjA2MiwgMCwgMCwgNjU0ODcsIDkyMTg5LCA0MTgzNywgMTIwNjExLCAxMjA0MzIsIDAsIDAsIDAsIAotICAgIDEyMDQzMywgMCwgNjM5MzUsIDczOTYyLCAxMjA4MDYsIDY0Nzg3LCA0MzUyNCwgMCwgNjQ0MjYsIDAsIDE5NDk0OCwgMCwgMCwgCi0gICAgNjU2NjQsIDY2OTMsIDk4NDMsIDAsIDg2NzQsIDExOTg4NywgMTI4ODEyLCA5MjcxNSwgMCwgMTI2MjQsIDAsIDE2NzMsIAotICAgIDQ4MTEsIDkyMzgzLCA1OTg2LCA5MzM4LCAzMDQ2LCA3NDQ4MCwgNTk4NSwgOTE3OTI4LCAxMTk1OTgsIDk4MjAsIDAsIAotICAgIDEyMTg3LCAwLCAwLCA1OTg0LCAwLCA0MzMwOCwgNDM5MywgMCwgMCwgMCwgMCwgMCwgNzQ4MjYsIDY0NzMzLCAwLCAwLCAKLSAgICAzNDkxLCAwLCAwLCAxMjgyMTksIDM1MTQsIDY1NDg1LCAwLCA3NDkyLCAwLCA3NDYwNSwgOTI0ODMsIDc1MTQsIDAsIDAsIAotICAgIDE5NDczMSwgNzUwMiwgNzU4NywgNjgzNTMsIDAsIDAsIDYzOTI1LCAwLCA3NjEwLCAyMTksIDAsIDAsIDY5MiwgNDM1ODgsIAotICAgIDc0NDMzLCA0MTYzNSwgNDMyNDEsIDk2ODgsIDcxNDcsIDk1MzUsIDAsIDAsIDAsIDY0NTMwLCAwLCA2NDYxMCwgMTE4MDQsIAotICAgIDAsIDcxNDksIDc0NTMsIDAsIDgwMTMsIDAsIDkyMzAxLCAwLCA4ODk1LCA1MjUzLCAwLCA1NDU4LCAwLCAyODY2LCAwLCAKLSAgICAxMjc4NjAsIDY1MTExLCA2ODQzMywgNjcwMCwgMTIwNDg0LCAwLCAwLCAwLCA4OTYyLCA3Nzk2MCwgOTY0MSwgNDM2OTQsIAotICAgIDcwNTksIDAsIDAsIDk2MDQsIDc4NzAwLCA3NDQxLCA2MzgyNiwgNzg3MDYsIDExODk0MSwgNjQzOTIsIDE5NDczNSwgMCwgCi0gICAgMjg0NCwgMCwgNDE5NzQsIDAsIDEyMTM5LCAwLCAwLCAwLCAzMzU4LCA2NTI5NSwgMCwgMzEwNCwgMTk0NzM0LCAwLCAKLSAgICAxOTQ3NjUsIDAsIDUzMDgsIDAsIDI5MCwgMCwgMCwgMjg2MiwgMjc5MiwgMTk1MDg4LCAwLCAwLCAzMjY4LCA2NjU5MSwgMCwgCi0gICAgNjU1MiwgNDIzNjcsIDcwMzUsIDEyMDU1OCwgMCwgMCwgMTgxNCwgMCwgMTAyNDAsIDkyMzM4LCA3NDMwNSwgMCwgNzQ1MjgsIAotICAgIDY1OTAzLCAwLCA0MjY0NiwgNzYwNiwgMjU5MSwgMjgzNywgNDM0MSwgNzc5NTYsIDY0NDgyLCAxMjczMzcsIDgxNjMsIAotICAgIDY1MjcwLCAwLCAwLCAwLCA5MTEyLCA3NDQzMSwgODYzLCA5NDkwLCAxMTk4OTgsIDkxNzgzNywgNDMzMjMsIDEyMDUxMywgCi0gICAgMTE5ODk3LCA5MDcxLCAxMjczMzMsIDAsIDM2NTQsIDc3ODksIDk2MzcsIDAsIDI1MzUsIDY1NTA0LCA3NjUzLCA0MDk5MywgCi0gICAgMTE5ODk5LCA2NjU4NywgMTk1MDk4LCAwLCA5MjQwMSwgMCwgMTEwMDYsIDEyOTI3LCA3ODA3LCA4MDczLCAwLCAxMDYyOSwgCi0gICAgMCwgNzQwODgsIDMwNTYsIDEwODIzLCAxMjg3OTcsIDEyNzMyNywgODc2MiwgMTA1MDgsIDY5Njg5LCA3Mzc3MCwgNDM5NjksIAotICAgIDQzMTkzLCAxMDczNywgMzQ2MywgMCwgMCwgNjY2MzMsIDg2OTUsIDQ4MTUsIDExMzIyLCA1ODExLCAxMjM0NSwgNzA0OSwgMCwgCi0gICAgNTE5NSwgMTk1MDgxLCAwLCA2NjYzOSwgMCwgMCwgMCwgMTI4MDQxLCAwLCA5MjM4NSwgMTI2MiwgMCwgNjU2MSwgMTk5MzksIAotICAgIDAsIDAsIDAsIDExOTkwNiwgMCwgMCwgMCwgMCwgMCwgMTE5OTA3LCA2NDYxMiwgMTE5OTEsIDAsIDAsIDAsIDE1MDIsIDAsIAotICAgIDAsIDkxMDcsIDEyNzMxNiwgNTcwMiwgMzY1NSwgNjc2NjEsIDg0MzAsIDAsIDc0MTMyLCAxMjA3NTgsIDAsIDc0MDU3LCAKLSAgICA5NjAzLCAwLCA1MjU0LCAxMjA3NDIsIDc3MjQsIDc0Mzg4LCA2ODM3NSwgMTA3OTYsIDUxMjksIDAsIDAsIDU5MCwgNzU3OSwgCi0gICAgNTYxNCwgNTg5MywgOTIyODAsIDExNzIwLCA5MjQ5NiwgMTE3MjEsIDAsIDQ3OTgsIDAsIDExOTMxNiwgNjYwMzgsIDQ3OTMsIAotICAgIDY3ODUxLCAxMTcyNiwgMTI3NTQxLCA3NDIwNCwgNjg2MTAsIDAsIDY4NjI2LCA4OTQsIDMwMCwgOTE3ODEzLCAxMjMwNiwgCi0gICAgNjYyMzUsIDgwMDQsIDAsIDAsIDI1NjIsIDAsIDAsIDQyNTAzLCAwLCAxMTY1MiwgMCwgMCwgMTE5MjQxLCA5MjY0OSwgMCwgCi0gICAgNTA5NiwgNTA5NSwgMjg2MywgMzQyNCwgOTIyNDQsIDEwNDU0LCA0MjUzMCwgNTA5NCwgMTE5NjM4LCAwLCAxMzE1NiwgMCwgCi0gICAgMTA4MzIsIDUwOTMsIDAsIDAsIDAsIDUwOTIsIDEwNzA4LCAxMTMyNywgMCwgNTA5MSwgMTc2LCAwLCA5MTUzLCA0MTA0LCAKLSAgICA3ODU5OSwgNzg2MDEsIDEyMTUsIDQyNzEyLCA1NzQ0LCAxMjI3MiwgOTgzMiwgMTE3NzcsIDAsIDEyNzM3MSwgNDI4ODEsIDAsIAorICAgIDQzMzc1LCA2NTQ0MCwgMjUwNCwgMCwgNzg2NzEsIDY0ODI5LCA5ODM5MDEsIDY5NDMsIDkxNzkzNCwgNTg1OSwgMCwgMjg1OCwgCisgICAgOTgzMzUzLCA3NDI5NCwgOTgzOTA1LCA2OTIzOSwgMCwgMTE5MDI3LCAxMjk5MiwgMjc1MywgMTkzNiwgNzAwNzgsIDkyNTc0LCAKKyAgICAyNzUxLCAxMjY2MiwgMjc2MywgODk1MywgNjQ3MDEsIDEwNzMxLCAxMjkyMiwgNzA1MiwgOTE3ODM5LCAwLCAwLCAwLCAKKyAgICA2MzkyMCwgNzQxMjgsIDI4NTYsIDExOTkxMCwgNDcsIDY5OTA4LCAxMjY5ODYsIDY1ODU4LCAwLCAwLCAwLCA3ODk5LCAwLCAKKyAgICA4NDE3LCA0Mzc5OCwgNzA3MiwgMCwgMCwgNDAzMywgMTI4MTY0LCA0Mzk5MiwgMCwgMCwgMjEyLCA2NDYwMCwgMTkwMywgCisgICAgMTIzMjAsIDAsIDAsIDE5NDU2MywgMCwgODkxNSwgMjc1OSwgOTQ1LCA2Njg5LCAwLCAwLCAwLCAwLCAxMjkxLCA3NDgyOCwgCisgICAgMCwgMCwgOTUzMSwgMTMxNTUsIDg1MDUsIDY4Mzc5LCAxMjA2MiwgMCwgMCwgNjU0ODcsIDkyMTg5LCA0MTgzNywgMTIwNjExLCAKKyAgICAxMjA0MzIsIDAsIDAsIDAsIDEyMDQzMywgMCwgNjM5MzUsIDczOTYyLCAxMjA4MDYsIDY0Nzg3LCA0MzUyNCwgMCwgNjQ0MjYsIAorICAgIDAsIDE5NDk0OCwgMCwgMCwgNjU2NjQsIDY2OTMsIDk4NDMsIDAsIDg2NzQsIDExOTg4NywgMTI4ODEyLCA5MjcxNSwgMCwgCisgICAgMTI2MjQsIDAsIDE2NzMsIDQ4MTEsIDkyMzgzLCA1OTg2LCA5MzM4LCAzMDQ2LCA3NDQ4MCwgNTk4NSwgOTE3OTI4LCAKKyAgICAxMTk1OTgsIDk4MjAsIDAsIDEyMTg3LCAwLCAwLCA1OTg0LCAwLCA0MzMwOCwgNDM5MywgNjc2NTAsIDAsIDAsIDAsIDAsIAorICAgIDc0ODI2LCA2NDczMywgMCwgMCwgMzQ5MSwgMCwgMCwgMTI4MjE5LCAzNTE0LCA2NTQ4NSwgMCwgNzQ5MiwgMCwgNzQ2MDUsIAorICAgIDkyNDgzLCA3NTE0LCA5ODMzNTksIDAsIDE5NDczMSwgNzUwMiwgNzU4NywgNjgzNTMsIDAsIDAsIDYzOTI1LCAwLCA3NjEwLCAKKyAgICAyMTksIDAsIDAsIDY5MiwgNDM1ODgsIDc0NDMzLCA0MTYzNSwgNDMyNDEsIDk2ODgsIDcxNDcsIDk1MzUsIDAsIDkzOTkxLCAKKyAgICAwLCA2NDUzMCwgMCwgNjQ2MTAsIDExODA0LCAwLCA3MTQ5LCA3NDUzLCAwLCA4MDEzLCAwLCA5MjMwMSwgMCwgODg5NSwgCisgICAgNTI1MywgNzAwMjUsIDU0NTgsIDAsIDI4NjYsIDAsIDEyNzg2MCwgNjUxMTEsIDY4NDMzLCA2NzAwLCAxMjA0ODQsIDAsIAorICAgIDEyMDU4MywgMCwgODk2MiwgNzc5NjAsIDk2NDEsIDQzNjk0LCA3MDU5LCA5ODM2NjgsIDAsIDk2MDQsIDc4NzAwLCA3NDQxLCAKKyAgICA2MzgyNiwgNjc5NzAsIDExODk0MSwgNjQzOTIsIDE5NDczNSwgOTgzNjc4LCAyODQ0LCA5ODM5MzIsIDQxOTc0LCAwLCAKKyAgICAxMjEzOSwgNjc5NzEsIDAsIDAsIDMzNTgsIDY1Mjk1LCAwLCAzMTA0LCAxOTQ3MzQsIDAsIDE5NDc2NSwgOTgzMjI3LCAKKyAgICA1MzA4LCAwLCAyOTAsIDAsIDAsIDI4NjIsIDI3OTIsIDE5NTA4OCwgOTgzMDcwLCAwLCAzMjY4LCA2NjU5MSwgMCwgNjU1MiwgCisgICAgNDIzNjcsIDcwMzUsIDEyMDU1OCwgMCwgMCwgMTgxNCwgMCwgMTAyNDAsIDkyMzM4LCA3NDMwNSwgMCwgNzQ1MjgsIDY1OTAzLCAKKyAgICAwLCA0MjY0NiwgNzYwNiwgMjU5MSwgMjgzNywgNDM0MSwgNzc5NTYsIDY0NDgyLCAxMjczMzcsIDgxNjMsIDY1MjcwLCAwLCAKKyAgICA3NzkzMiwgMCwgOTExMiwgNzQ0MzEsIDg2MywgOTQ5MCwgMTE5ODk4LCAxMjgzNDksIDQzMzIzLCAxMjA1MTMsIDExOTg5NywgCisgICAgOTA3MSwgMTI3MzMzLCAwLCAzNjU0LCA3Nzg5LCA5NjM3LCAwLCAyNTM1LCA2NTUwNCwgNzY1MywgNDA5OTMsIDExOTg5OSwgCisgICAgNjY1ODcsIDE5NTA5OCwgMCwgOTI0MDEsIDk4Mzg4NSwgMTEwMDYsIDEyOTI3LCA3ODA3LCA4MDczLCAwLCAxMDYyOSwgMCwgCisgICAgNzQwODgsIDMwNTYsIDEwODIzLCAxMjg3OTcsIDEyNzMyNywgODc2MiwgMTA1MDgsIDY5Njg5LCA3Mzc3MCwgNDM5NjksIAorICAgIDQzMTkzLCAxMDczNywgMzQ2MywgOTgzMDY1LCAwLCA2NjYzMywgODY5NSwgNDgxNSwgMTEzMjIsIDU4MTEsIDEyMzQ1LCAKKyAgICA3MDQ5LCAxMTk5MTEsIDUxOTUsIDE5NTA4MSwgMCwgNjY2MzksIDAsIDAsIDAsIDEyODA0MSwgMCwgOTIzODUsIDEyNjIsIDAsIAorICAgIDY1NjEsIDE5OTM5LCAwLCAwLCAxMjg1MzUsIDExOTkwNiwgMCwgMCwgOTgzMDk3LCAwLCA5ODM2NTgsIDExOTkwNywgCisgICAgNjQ2MTIsIDExOTkxLCAwLCAwLCAwLCAxNTAyLCA5MTc1NjgsIDAsIDkxMDcsIDEyNzMxNiwgNTcwMiwgMzY1NSwgNjc2NjEsIAorICAgIDg0MzAsIDAsIDc0MTMyLCAxMjA3NTgsIDAsIDc0MDU3LCA5NjAzLCAwLCA1MjU0LCAxMjA3NDIsIDc3MjQsIDc0Mzg4LCAKKyAgICA2ODM3NSwgMTA3OTYsIDUxMjksIDAsIDAsIDU5MCwgNzU3OSwgNTYxNCwgNTg5MywgOTIyODAsIDExNzIwLCA5MjQ5NiwgCisgICAgMTE3MjEsIDAsIDQ3OTgsIDAsIDExOTMxNiwgNjYwMzgsIDQ3OTMsIDY3ODUxLCAxMTcyNiwgMTI3NTQxLCA3NDIwNCwgCisgICAgNjg2MTAsIDAsIDY4NjI2LCA4OTQsIDMwMCwgOTE3ODEzLCAxMjMwNiwgNjYyMzUsIDgwMDQsIDAsIDAsIDI1NjIsIAorICAgIDEyNjU1NSwgMCwgNDI1MDMsIDAsIDExNjUyLCAwLCAwLCAxMTkyNDEsIDY0Njk5LCAxMjY1NjksIDUwOTYsIDUwOTUsIAorICAgIDI4NjMsIDM0MjQsIDkyMjQ0LCAxMDQ1NCwgNDI1MzAsIDUwOTQsIDExOTYzOCwgMCwgMTMxNTYsIDAsIDEwODMyLCA1MDkzLCAKKyAgICAwLCA2OTg1MiwgMCwgNTA5MiwgMTA3MDgsIDExMzI3LCAwLCA1MDkxLCAxNzYsIDAsIDkxNTMsIDQxMDQsIDc4NTk5LCAKKyAgICA3ODYwMSwgMTIxNSwgNDI3MTIsIDU3NDQsIDEyMjcyLCA5ODMyLCAxMTc3NywgNzEyOTksIDEyNzM3MSwgNDI4ODEsIDAsIAogICAgIDg5ODAsIDExODk4OCwgNjc4NjEsIDg4NDQsIDcyMDksIDAsIDAsIDQyNzgsIDAsIDAsIDE5NDc4OSwgMCwgOTA3NCwgNDM0OCwgCi0gICAgMCwgNjU1NTgsIDY1OTQ2LCA4MTEzLCA3MDg3LCA1MjU1LCAxNzg2LCA2NjEsIDAsIDAsIDAsIDc0NDIzLCAwLCA1ODYsIAotICAgIDc0NDE0LCA2NDM1OSwgMTI2NywgMCwgNjU0NjgsIDAsIDY1NzMxLCAwLCAxMjcxNzksIDM2MjEsIDEyMDQ3MywgNjY2NjYsIAotICAgIDY0MjExLCAwLCA2NTYyLCAxMjkyOCwgMCwgMTIyOCwgNjU0OTAsIDExMzgzLCAwLCAwLCAwLCAxNzE0LCA3NDQwNiwgCi0gICAgMTI3ODMxLCAwLCAwLCAwLCA2NjIyNSwgMCwgMCwgNDI2NjAsIDExNDM2LCAyMDcwLCA2NCwgMTIwNjk0LCAwLCAxMDI5MSwgCi0gICAgMTAzMjMsIDI4MjYsIDAsIDAsIDAsIDQyMDA4LCA5NzA4LCA0MjcxMCwgMCwgNDIwMTEsIDQxOTk5LCA5MjE2NCwgMTIyMDYsIAotICAgIDU4MzksIDE3MDIsIDEyNDAsIDc0MDY1LCA2Mjg2LCAwLCAwLCA2NTgzMywgNzc4NDgsIDAsIDE3NjUsIDAsIDAsIDY1NTg4LCAKLSAgICAwLCAwLCAwLCA4NDAxLCAwLCA0MjAxNCwgMCwgNzAzMCwgMTk0NzA0LCAxMDQ3OSwgNjQ5NTksIDI4NTIsIDAsIDAsIDAsIDAsIAotICAgIDEyODU4NiwgOTE3OTUxLCA2OTYzLCAwLCAxMjY2NywgNjQ1NDAsIDc0Nzg2LCAxMDE0NywgMTI5MzUsIDEyNzU2OCwgMCwgMCwgCi0gICAgMCwgMCwgNzg3NTcsIDAsIDAsIDAsIDAsIDk5OTQsIDEyNDY3LCAyODY0LCA2NDcxOSwgMTE0OCwgMTA0MzUsIDExNDYyLCAKLSAgICA0MTY3NSwgMCwgMjc2NSwgMCwgMCwgMCwgMTIwNzE5LCAxMjgxODgsIDkyNTE2LCA2NjY2MiwgMCwgNzgxMzMsIDkzNjQsIAotICAgIDE5NDY4NSwgNzQ0MTYsIDAsIDAsIDc3OTg4LCAyNjMsIDEwNDQ5LCA0MTI4OCwgMCwgNDE4MzksIDc4Mzg3LCAwLCA3Nzk4NiwgCi0gICAgMCwgNjkzMSwgNjk3MjIsIDY0MzU1LCA3MTc3LCAxMjA1MzAsIDAsIDAsIDAsIDQyNjIsIDEwMjg1LCAxMDcyMiwgNDIwMjAsIAotICAgIDAsIDY4MDYsIDY5OTIsIDQyMDE5LCAwLCA0MTI5MCwgMCwgNzUwLCAwLCAwLCAxMDE2MywgNjM5MTMsIDc0MDY2LCA3MDMyLCAKLSAgICA1OTU0LCA2NDkzMSwgNDMxNCwgMCwgMTk4LCA2ODQ1MywgNzMwLCAxMjAwOTQsIDYzOTA3LCA3Nzk5MywgNzg4OTEsIAotICAgIDEzMTY1LCA3MTA3LCA3NDE3MSwgNDI4MDQsIDY3OCwgODI0MCwgNzgwMTUsIDEyODc4NCwgNDEzNzgsIDExMDA4LCA2OTM4LCAKLSAgICA5MjIyMiwgOTI2MzcsIDIwOTcsIDY2MjQ2LCAxMjA1NjAsIDAsIDAsIDAsIDM4OTIsIDY4NjMyLCA2OTY0MiwgNjcxMiwgCi0gICAgNjYwNDUsIDQxNDcwLCA2NDgwNSwgMCwgMCwgMCwgNjQ4MDEsIDAsIDQ5NywgMTIxMDAsIDU5NTMsIDkyNjY3LCA3Nzk2LCAKLSAgICA2OTY2OSwgNDMyNTQsIDczODMxLCAwLCAxMDI5MywgNTk1MiwgMTI4MSwgMCwgMCwgMCwgMTA2NzcsIDYwNCwgNDEwOTcsIAotICAgIDkxODIsIDE4NTksIDAsIDkyNjAzLCAzNDI1LCAxMjc0ODgsIDAsIDI4MzYsIDAsIDAsIDk3MDcsIDAsIDQzMjAyLCAwLCAwLCAKLSAgICA2NTE5OSwgMTczOCwgOTE3ODE4LCAxMjgxNTgsIDI4MzIsIDkyNzAyLCA5NjcwLCAxMjkzNywgMCwgNjYzNzQsIDkxNzk1NiwgCi0gICAgMCwgMjgyMiwgNjgxMjIsIDQ0MzYsIDkyNTE5LCAwLCA3Mzc1MiwgMCwgNjQ4NzIsIDkyMzQwLCAxMzMxLCAwLCAwLCAwLCAKLSAgICAxMjcwOCwgMCwgNTA5MCwgNTA4OSwgMCwgMCwgMTE5MTA5LCAwLCAxMjg2ODEsIDMxOSwgMTE4ODQ3LCA0MzQ3OSwgOTQ3NywgCi0gICAgMCwgMCwgNTA4NywgOTIzMjUsIDc2NDAsIDk2LCA1MDg2LCAwLCA5MjM3OSwgMCwgNTA4NSwgNjQyODYsIDkyNjY1LCAwLCAKLSAgICA0MTQyMiwgMCwgMTE5OTAxLCA0MjM1NiwgMzc3MiwgMCwgMCwgNTAxMSwgMCwgMCwgMCwgMCwgMTI3MTY1LCAxMjcyNDEsIAotICAgIDY2NzcsIDc2MDEsIDAsIDU5MSwgNjQ0MTksIDExODk1MywgOTIyNjIsIDAsIDExODkyMywgNzM3MzQsIDAsIDEwOTM5LCAKLSAgICA2MTA2LCA2OTMzLCA0MTI3MSwgNjc2MCwgMTE5OTAzLCA0NTM0LCA0MTI3MCwgMTI4ODc2LCAwLCA2NTU3NCwgMCwgOTIyNCwgCi0gICAgMCwgMzY3MSwgODk3NiwgMCwgMCwgNDEyNzUsIDYzNzIsIDEyODA4NCwgNTUyNjEsIDc5NjMsIDYzNzEsIDAsIDU2OCwgMCwgCi0gICAgNDEyNzMsIDAsIDAsIDY3MjgsIDAsIDk3MTUsIDAsIDgyNTgsIDExNzUzLCA3NDgyMCwgMCwgOTYwMiwgMTE4OTE5LCA0MiwgCi0gICAgMCwgNDM2ODgsIDAsIDAsIDc0NTgsIDAsIDAsIDY1Mzg1LCAxMTk5MDAsIDAsIDExOTU4LCAwLCA5MTc4MjIsIDAsIDYyNTQsIAotICAgIDQyNzIxLCA2NjMzNiwgODA0NSwgMTE1NTAsIDAsIDAsIDAsIDQyODU4LCAxMTc4OSwgNjU4NjgsIDU1NTcsIDEwMTMzLCAKLSAgICA5NzM3LCAxMzEwOSwgMCwgOTQ2NywgNTU1OCwgODg3OCwgMTI4MTM2LCAxOTUwMzYsIDc0NTEsIDY3MDYsIDEwMTQ2LCAwLCAKLSAgICA5MDg2LCA2NDU2NiwgMCwgNjQ1ODQsIDc0MzcsIDc0NTQsIDEyNTk0LCAxMjg2OTAsIDY4MzYyLCA0NTQ2LCA3NzMxLCAwLCAKLSAgICAxMTk5MDksIDc0MjQzLCAwLCAzODA1LCAwLCAxOTQ1NjUsIDQ0MDAxLCA0MTAwOCwgMCwgNjMwNywgMTk5NDksIDAsIDc1NDQsIAotICAgIDAsIDQzNDY5LCAwLCAwLCAxMDE1MiwgNjQ0MjIsIDY1MDkxLCAxMTkxMTMsIDc2MDIsIDY0NzI5LCAwLCA0MzUyMSwgMCwgCi0gICAgNDIzMDIsIDQzNzExLCA0MzUyMywgNDE0NDcsIDU1NTksIDAsIDg3MDQsIDIzOTcsIDU1NTYsIDAsIDAsIDAsIDkwMTEsIAotICAgIDk2MzAsIDkyNjMzLCAwLCAwLCA1NTA2LCAwLCAxOTExLCA2NjY1MiwgMCwgOTk2MSwgODg0NSwgNjY2OTgsIDAsIDEwNzkyLCAKLSAgICA4ODg5LCAwLCAyMDk4LCAwLCA2NDc1MSwgMCwgNjY2MjIsIDAsIDAsIDc0MzY0LCAwLCAwLCAwLCA3NDM2NSwgNzU1MiwgMCwgCi0gICAgMCwgNjUzODQsIDcyMjMsIDQ1NTksIDAsIDE5NTYsIDQzMTM4LCA3MDI0LCA2NTcyOCwgNjQ1MDEsIDEyMTAsIDE5NTA3NywgCi0gICAgNjUxNzUsIDEwMTg0LCA0MzE0MCwgNDM2NTQsIDAsIDAsIDAsIDM4LCA4NTMzLCA2NjY2OSwgMTE5MTI0LCAwLCAwLCAwLCAKLSAgICA0MzU3LCAwLCAxMTk4MzcsIDAsIDc0MjMzLCA5OTY3LCAxMTk4NTIsIDQyODYwLCAxMTk4MzgsIDEwOTQxLCA2NTcyMSwgCi0gICAgNjk2MiwgMCwgMCwgMTE5MzI0LCAwLCAxMTAxNCwgMTI3OTcyLCA4OTQyLCAxMjAwMCwgNjkyMjQsIDkyMjY3LCAxMjg1MzYsIAotICAgIDExOTc0LCA5MjIxMywgNDI3NzIsIDEyNzUxOCwgMTE2NTAsIDUwMTMsIDkyNjYzLCAxMjg2NzcsIDY2MjEwLCAxMTg5MTQsIAotICAgIDY2MTMsIDkyNDc2LCAwLCA0MzgxOSwgMCwgMCwgNjQ3MTQsIDAsIDAsIDEyMTYyLCAxMjEyMCwgNDM0NzYsIDAsIDExMDI0LCAKLSAgICA3NDgxMSwgNjYyMjgsIDEwNTYzLCAwLCAxMjcxOTYsIDQzNTIyLCAyNDYyLCAwLCAxODM3LCAwLCA2Mzk3MiwgNjk1NywgMCwgCi0gICAgMTIwNTU5LCA0OTUyLCA2NTcxOCwgNjU4MjcsIDU1MDQsIDY1NzIwLCA2NTcxNCwgNjU3MTUsIDY1NzE2LCAwLCAxMjcwMDUsIAotICAgIDEyNzExOSwgMzEwOSwgNjM5NzUsIDc0MDI4LCAwLCA4MTA3LCAxMTkyMzQsIDExMjcsIDQ1NSwgMCwgNjM5NjgsIDEyNzkyNCwgCi0gICAgMzQ4MywgMTE5NTkzLCAxOTg5LCAwLCA2OTY3OCwgOTEwNCwgMzUwMywgNjUzNzUsIDkyNTA5LCA2Njk0LCA0MjYzMywgCi0gICAgMTg2NCwgMCwgNzQzMDYsIDQxNDQ2LCAyNTQwLCA3NzM2LCAwLCA3NDA2NCwgMCwgMTA1MjEsIDAsIDQyMTczLCA5NzA1LCAKLSAgICA3NDEyNCwgODYwNCwgNjk1NSwgMTA5MTYsIDQzNjg0LCA2MTQ5LCAzODg3LCAxOTk1NiwgMTQxMSwgMjgyNCwgMCwgMTAxMDYsIAotICAgIDEyNzg2MiwgMTQwMywgMTI4ODM5LCAxMzQ3LCA5NjMxLCA3NDQ0NCwgMCwgMCwgMCwgMCwgODY0MCwgMCwgMjU4LCAxNjU0LCAKLSAgICAwLCAwLCAwLCA0MzMxNCwgMCwgMCwgNDA0MiwgMTE0NzgsIDI4NzMsIDYzOTc3LCAxMTUyMiwgNDE2NjgsIDg1NDksIAotICAgIDEwODYxLCAwLCA2Mzk3NiwgMCwgNjg2MjMsIDAsIDc0NTg1LCA0MTM5MSwgMCwgOTE3OTAzLCAzNzYsIDY5ODcsIDkyMjEsIAotICAgIDAsIDAsIDg4MjMsIDEyODY5NywgMTI5NDMsIDY1MTg1LCA0MTg2OSwgMTI2MTksIDAsIDEwMTU0LCAwLCA3NDQzOSwgMjAzOSwgCi0gICAgMCwgNzQ0NiwgMTY4NCwgNjM5NzksIDEwOTc0LCA0NTgsIDEyMDYyMCwgMCwgNjk3OTEsIDEyNzE2MSwgMTE5MTYsIDY1MDE2LCAKLSAgICAwLCA2OTY3MSwgNDIxMTUsIDAsIDEyMjg4LCA3ODA1NywgMCwgMTQ5MywgNDIxMTEsIDc1NTMsIDQwOTcsIDEyODE5OSwgCi0gICAgMTMwODAsIDAsIDY1ODA4LCA2NjEwLCA2MDMwLCA4MDU5LCA3NTA4LCAxMzEzMSwgMCwgMCwgMCwgODc5NCwgNDEyNzgsIAotICAgIDQxNjI5LCAxMjE1NCwgMTI4MTkyLCA0MTI3NywgNjQ2NTgsIDAsIDY0MzgwLCA2NjI1LCA3NDM1NCwgMTk5MDQsIDAsIDAsIAotICAgIDAsIDY1MzcxLCA3MDc4LCAwLCA4MzMsIDAsIDYzNjksIDAsIDEwOTc5LCA0MTk1MywgMCwgNDE0MzQsIDYwNjIsIDAsIDAsIAotICAgIDE5OTE2LCA2OTEzLCA5MzMsIDEzNDEsIDk4NDIsIDY3MjAsIDY1NzQ0LCAwLCAwLCAxMjgyOTUsIDAsIDc0MDUsIDEwMTA1LCAKLSAgICA2NTgxMCwgMCwgNDE2MzIsIDc0OTMsIDU1MjkwLCAwLCA0MTYyMiwgMCwgMCwgMTE5NTU2LCA3NDU4NCwgNzYzMiwgOTcxNiwgCi0gICAgMTk5NTQsIDk4MDUsIDU5OTAsIDkwMCwgMCwgNjM5NTcsIDAsIDAsIDM2MTIsIDAsIDY0Mzc2LCAwLCA1Mzg5LCA5MjU5NywgCi0gICAgMCwgNjU5MzgsIDI4MzksIDk2MjEsIDU4MiwgMCwgNzQzNjgsIDM3NDksIDY5NDksIDc1NjksIDc0MDYxLCAwLCAwLCA2OTU2LCAKLSAgICA0NDAzLCAxOTk2MiwgNjU1NTksIDMyOTksIDAsIDkxNzU2NiwgMTE5MTI3LCA5MDAyLCAwLCA3NDM3MiwgNzQyMzYsIDg0NzgsIAotICAgIDc1OTgsIDU0NiwgNDI0NjksIDY1NTY5LCAxOTE4LCA5NTQyLCA0NzIsIDc3MTYsIDEwMzE5LCAxMDM4MywgNjk5NiwgMCwgCi0gICAgNjM5NTIsIDg0MjUsIDM2MDIsIDgzMjgsIDExNzY0LCAxMTg4OTQsIDAsIDY5Nzk2LCA0MTE4MywgMTI5MDcsIDEwMjcxLCAKLSAgICAxMDI4NywgNjg0LCA0MzUyNSwgMCwgMjg1NCwgMTE5NTg2LCA0NTkyLCA2NTc1NSwgMCwgOTIyNTYsIDExOTYzLCA0MzYyMCwgCi0gICAgMCwgNzg4ODksIDAsIDAsIDEyODgwOSwgOTg4MSwgNDMxMTUsIDY1NzU3LCAzNDE1LCAwLCAwLCA4NjQ4LCAwLCA2NzQxLCAKLSAgICA0MzA0NywgMCwgMTMxODAsIDEyODUxNywgNDE4LCA5MTc5NzIsIDY0NDk1LCAxMDI5NSwgMTAzMjcsIDEwMzkxLCA0MTc1MiwgCi0gICAgNzQzMzksIDg2NDEsIDQxNDQ5LCAwLCA3NDEwMCwgMCwgMTA5MTEsIDY5NDIsIDAsIDEwMjQsIDQyODQ5LCA0MTc1MSwgCi0gICAgNjk3NzYsIDg5NDEsIDAsIDQ1NTQsIDAsIDkwMjMsIDExNjg1LCAwLCA5OTI4LCA3ODYxNywgMCwgMTE0MzcsIDQzNzQxLCAKLSAgICA5MjE2MywgMTIwNzAwLCA2Mzk2NywgMCwgNDEyMDYsIDEyMDcyNCwgOTA0OSwgNDExODUsIDQzMTY2LCAwLCAxMTY4MCwgCi0gICAgOTI2MTksIDExNjg2LCA3ODU0NCwgNjUyMjQsIDQ1NjUsIDQ2NTUsIDExOTU1MywgMCwgOTIxODMsIDY0NTIzLCAxMDM0MywgCi0gICAgMTA0MDcsIDAsIDY2NjcxLCAxMTQ2NiwgMCwgMTI4MDAzLCA0Mjg5MCwgMCwgMTIwNTAsIDY4MjAxLCAyODYwLCAwLCAwLCAwLCAKLSAgICA0Mjc5MiwgNTc0MywgMTA0MjQsIDEyMDY1LCA0Mjg3MiwgMCwgOTIzNDIsIDAsIDg4NzUsIDAsIDAsIDkxNzk5MSwgNzUzMSwgCi0gICAgMTI4NDcsIDI0MTMsIDAsIDc4NjM1LCA5NjIsIDAsIDEyODU1LCA0MTE5NiwgNDI1NjQsIDAsIDE1ODIsIDAsIDU1MDgsIDAsIAotICAgIDAsIDAsIDEwODAxLCAwLCA5MjM1NCwgMCwgNzE3MywgNDk2LCAxMDQzOSwgNDMxMywgNjQ2MDcsIDY5NjM4LCA3ODYwLCAwLCAKLSAgICA5MDYsIDQyNzkzLCAyODQyLCA2NDA1LCA2NDcyMiwgMTMxMzIsIDc5OCwgNjQ2OTQsIDEyODAxLCA4NDA2LCAxMTUzLCAKLSAgICA5MjE3MywgNjQ3ODgsIDAsIDgwNTQsIDkxNzQsIDEyODY1MiwgOTE3OTc2LCA5OTY0LCAwLCA0MTYxMSwgNDY0MiwgNjY1NzQsIAotICAgIDExNTU2LCA5MTc5ODIsIDAsIDc4ODU3LCA0MjA4OSwgNzg4NTUsIDkwMDgsIDAsIDAsIDE5NTA5NiwgNDIwNzksIDkxNzk4MSwgCi0gICAgNzc5MjQsIDQyNTEzLCAwLCA0Mjg0MiwgNzM5ODUsIDY1Mjg1LCAxMTg5NzQsIDEyNzAwMywgMCwgMCwgMCwgMCwgMTEzMzUsIAotICAgIDY0MDY5LCA0MjA5MywgMzkyMCwgMCwgMCwgMCwgMCwgNDU4MCwgNDE5NjcsIDAsIDY0Mzg0LCA5MjE2NywgMTE5MTU4LCAKLSAgICAzMDIxLCA0MjAwNCwgMCwgMCwgNDIzMTcsIDQxOTk4LCAwLCA2OTQ2LCAwLCAwLCAwLCAxMjgxOTMsIDY1MjA0LCAwLCAKLSAgICA2ODExMywgNDI2OTAsIDk4ODAsIDQyMDEwLCA3NDgyNCwgNjQ1ODksIDEwMTExLCA2NDg3NSwgMTI3ODgwLCA2ODM5OSwgCi0gICAgNDM5OTgsIDExMzYwLCAwLCAwLCAwLCAxMTg4MjYsIDQyMTQ5LCAwLCAwLCAwLCA2NDk0MSwgNzc5MTksIDEyMDQyMSwgCi0gICAgMTI4MDc3LCAwLCA1NTI0NywgNDExMCwgNjYwMDUsIDY5NTksIDEwOTI5LCAxMTkxMTAsIDAsIDY2NzAzLCA3NzkyMSwgCi0gICAgODYxNywgNDE5ODIsIDYwMjUsIDY5MjQyLCAwLCAwLCAwLCAwLCA5NTk3LCA0MjA5OSwgNDMxNzIsIDAsIDEwMTE3LCAwLCAKKyAgICAwLCA2NTU1OCwgNjU5NDYsIDgxMTMsIDcwODcsIDUyNTUsIDE3ODYsIDY2MSwgMCwgMCwgMCwgNzQ0MjMsIDcxMzQ1LCA1ODYsIAorICAgIDc0NDE0LCA2NDM1OSwgMTI2NywgMTI4MjY5LCA2NTQ2OCwgMCwgNjU3MzEsIDAsIDEyNzE3OSwgMzYyMSwgMTIwNDczLCAKKyAgICA2NjY2NiwgNjQyMTEsIDAsIDY1NjIsIDEyOTI4LCAwLCAxMjI4LCA2NTQ5MCwgMTEzODMsIDAsIDAsIDAsIDE3MTQsIAorICAgIDc0NDA2LCAxMjc4MzEsIDAsIDk4MzkxMiwgMCwgNjYyMjUsIDAsIDAsIDQyNjYwLCAxMTQzNiwgMjA3MCwgNjQsIDEyMDY5NCwgCisgICAgMCwgMTAyOTEsIDEwMzIzLCAyODI2LCAwLCAwLCAwLCA0MjAwOCwgOTcwOCwgNDI3MTAsIDAsIDQyMDExLCA0MTk5OSwgCisgICAgOTIxNjQsIDEyMjA2LCA1ODM5LCAxNzAyLCAxMjQwLCA3NDA2NSwgNjI4NiwgMCwgOTgzOTYwLCA2NTgzMywgNzc4NDgsIDAsIAorICAgIDE3NjUsIDAsIDAsIDY1NTg4LCAwLCAwLCAwLCA4NDAxLCAwLCA0MjAxNCwgMCwgNzAzMCwgMTk0NzA0LCAxMDQ3OSwgCisgICAgNjQ5NTksIDI4NTIsIDAsIDAsIDAsIDAsIDEyODU4NiwgOTE3OTUxLCA2OTYzLCAwLCAxMjY2NywgNjQ1NDAsIDc0Nzg2LCAKKyAgICAxMDE0NywgMTI5MzUsIDEyNzU2OCwgMTI2NDgzLCAwLCAwLCAwLCA3ODc1NywgMCwgMCwgMCwgMCwgOTk5NCwgMTI0NjcsIAorICAgIDI4NjQsIDY0NzE5LCAxMTQ4LCAxMDQzNSwgMTE0NjIsIDQxNjc1LCA3MDg0LCAyNzY1LCAwLCA0MzM4MiwgMCwgMTIwNzE5LCAKKyAgICAxMjgxODgsIDkyNTE2LCA2NjY2MiwgMCwgNzgxMzMsIDkzNjQsIDE5NDY4NSwgNzQ0MTYsIDAsIDAsIDc3OTg4LCAyNjMsIAorICAgIDEwNDQ5LCA0MTI4OCwgMCwgNDE4MzksIDc4Mzg3LCA5ODM3MzMsIDc3OTg2LCAwLCA2OTMxLCA2OTcyMiwgNjQzNTUsIAorICAgIDcxNzcsIDcwMTA1LCAwLCAwLCAwLCA0MjYyLCAxMDI4NSwgMTA3MjIsIDQyMDIwLCAxMjY1NzUsIDY4MDYsIDY5OTIsIAorICAgIDQyMDE5LCAwLCA0MTI5MCwgOTgzNzA3LCA3NTAsIDAsIDcxMzA0LCAxMDE2MywgNjM5MTMsIDcxMzAwLCA3MDMyLCA1OTU0LCAKKyAgICA2NDkzMSwgNDMxNCwgMCwgMTk4LCA2ODQ1MywgNzMwLCAxMjAwOTQsIDYzOTA3LCA3Nzk5MywgNzg4OTEsIDEzMTY1LCAKKyAgICA3MTA3LCA3NDE3MSwgNDI4MDQsIDY3OCwgODI0MCwgNzgwMTUsIDEyODc4NCwgNDEzNzgsIDExMDA4LCA2OTM4LCA3MDAyNiwgCisgICAgOTI2MzcsIDIwOTcsIDY2MjQ2LCAxMjA1NjAsIDAsIDAsIDAsIDM4OTIsIDY4NjMyLCA2OTY0MiwgNjcxMiwgNjYwNDUsIAorICAgIDQxNDcwLCA2NDgwNSwgMCwgMCwgMTI4MjE1LCA2NDgwMSwgMCwgNDk3LCAxMjEwMCwgNTk1MywgOTI2NjcsIDc3OTYsIAorICAgIDY5NjY5LCA0MzI1NCwgNzM4MzEsIDAsIDEwMjkzLCA1OTUyLCAxMjgxLCA0Mzc0NywgMCwgMCwgMTA2NzcsIDYwNCwgCisgICAgNDEwOTcsIDkxODIsIDE4NTksIDAsIDkyNjAzLCAzNDI1LCAxMjc0ODgsIDAsIDI4MzYsIDAsIDAsIDk3MDcsIDAsIDQzMjAyLCAKKyAgICAwLCAwLCA2NTE5OSwgMTczOCwgOTE3ODE4LCAxMjgxNTgsIDI4MzIsIDkyNzAyLCA5NjcwLCAxMjkzNywgMCwgNjYzNzQsIAorICAgIDkxNzk1NiwgMCwgMjgyMiwgNjgxMjIsIDQ0MzYsIDkyNTE5LCA5ODM3MTQsIDczNzUyLCAwLCA2NDg3MiwgOTIzNDAsIAorICAgIDEzMzEsIDAsIDAsIDAsIDEyNzA4LCAwLCA1MDkwLCA1MDg5LCAxMjc5NzcsIDAsIDExOTEwOSwgMCwgMTI4NjgxLCAzMTksIAorICAgIDExODg0NywgNDM0NzksIDk0NzcsIDAsIDAsIDUwODcsIDkyMzI1LCA3NjQwLCA5NiwgNTA4NiwgMCwgOTIzNzksIDAsIAorICAgIDUwODUsIDY0Mjg2LCA5MjY2NSwgMCwgNDE0MjIsIDAsIDExOTkwMSwgNDIzNTYsIDM3NzIsIDAsIDAsIDUwMTEsIDAsIDAsIAorICAgIDEyNjU4NywgMCwgMTI3MTY1LCAxMjcyNDEsIDY2NzcsIDc2MDEsIDAsIDU5MSwgNjQ0MTksIDExODk1MywgOTIyNjIsIDAsIAorICAgIDExODkyMywgNzAwODQsIDAsIDEwOTM5LCA2MTA2LCA2OTMzLCA0MTI3MSwgNjc2MCwgNzEzNDMsIDQ1MzQsIDQxMjcwLCAKKyAgICAxMjg4NzYsIDAsIDY1NTc0LCAwLCA5MjI0LCA2OTg1MywgMzY3MSwgODk3NiwgMTI2NDc0LCAwLCA0MTI3NSwgNjM3MiwgCisgICAgMTI4MDg0LCA1NTI2MSwgNzk2MywgNjM3MSwgMCwgNTY4LCAwLCA0MTI3MywgOTgzNzIxLCAwLCA2NzI4LCAwLCA5NzE1LCAwLCAKKyAgICA4MjU4LCAxMTc1MywgNzQ4MjAsIDAsIDk2MDIsIDExODkxOSwgNDIsIDAsIDQzNjg4LCAwLCAwLCA3NDU4LCAwLCAwLCAKKyAgICA2NTM4NSwgMTE5OTAwLCAwLCAxMTk1OCwgMCwgOTE3ODIyLCAwLCA2MjU0LCA0MjcyMSwgNjYzMzYsIDgwNDUsIDExNTUwLCAKKyAgICAwLCAwLCA5ODM1OTcsIDQyODU4LCAxMTc4OSwgNjU4NjgsIDU1NTcsIDEwMTMzLCA5NzM3LCAxMzEwOSwgMCwgOTQ2NywgCisgICAgNTU1OCwgODg3OCwgMTI4MTM2LCAxOTUwMzYsIDc0NTEsIDY3MDYsIDEwMTQ2LCAwLCA5MDg2LCA2NDU2NiwgMCwgNjQ1ODQsIAorICAgIDc0MzcsIDc0NTQsIDEyNTk0LCAxMjg2OTAsIDY4MzYyLCA0NTQ2LCA3NzMxLCAwLCA3MDA0OCwgNzQyNDMsIDAsIDM4MDUsIAorICAgIDAsIDE5NDU2NSwgNDQwMDEsIDQxMDA4LCAwLCA2MzA3LCAxOTk0OSwgOTgzNzgxLCA3NTQ0LCA5ODMwNDUsIDQzNDY5LCAwLCAKKyAgICAwLCAxMDE1MiwgNjQ0MjIsIDY1MDkxLCAxMTkxMTMsIDc2MDIsIDY0NzI5LCAwLCA0MzUyMSwgMCwgNDIzMDIsIDQzNzExLCAKKyAgICA0MzUyMywgNDE0NDcsIDU1NTksIDAsIDg3MDQsIDIzOTcsIDU1NTYsIDAsIDAsIDAsIDkwMTEsIDk2MzAsIDkyNjMzLCAwLCAKKyAgICA5Mzk5OCwgNTUwNiwgMCwgMTkxMSwgNjY2NTIsIDAsIDk5NjEsIDg4NDUsIDY2Njk4LCAwLCAxMDc5MiwgODg4OSwgMCwgCisgICAgMjA5OCwgMCwgNjQ3NTEsIDAsIDY2NjIyLCAwLCAwLCA3NDM2NCwgMCwgMCwgOTgzNzk2LCA3NDM2NSwgNzU1MiwgMCwgMCwgCisgICAgNjUzODQsIDcyMjMsIDQ1NTksIDAsIDE5NTYsIDQzMTM4LCA3MDI0LCA2NTcyOCwgNjQ1MDEsIDEyMTAsIDE5NTA3NywgCisgICAgNjUxNzUsIDEwMTg0LCA0MzE0MCwgNDM2NTQsIDAsIDAsIDAsIDM4LCA4NTMzLCA2NjY2OSwgMTE5MTI0LCA5ODMyODUsIAorICAgIDk4Mzc4MywgMCwgNDM1NywgMCwgMTE5ODM3LCA5MTc4NjMsIDc0MjMzLCA5OTY3LCA3ODg4NCwgNDI4NjAsIDExOTgzOCwgCisgICAgMTA5NDEsIDY1NzIxLCA2OTYyLCAwLCAwLCAxMTkzMjQsIDAsIDExMDE0LCAxMjc5NzIsIDg5NDIsIDEyMDAwLCA2OTIyNCwgCisgICAgOTIyNjcsIDEyODUzNiwgMTE5NzQsIDkyMjEzLCA0Mjc3MiwgMTI3NTE4LCAxMTY1MCwgNTAxMywgOTI2NjMsIDEyNjU4MywgCisgICAgNjYyMTAsIDExODkxNCwgNjYxMywgOTI0NzYsIDAsIDQzODE5LCA5ODM3NjEsIDAsIDY0NzE0LCAwLCAwLCAxMjE2MiwgCisgICAgMTIxMjAsIDQzNDc2LCA5ODM3NTcsIDExMDI0LCA3NDgxMSwgNjYyMjgsIDEwNTYzLCAwLCAxMjcxOTYsIDQzNTIyLCAyNDYyLCAKKyAgICAwLCAxODM3LCAwLCA2Mzk3MiwgNjk1NywgMCwgMTIwNTU5LCA0OTUyLCA2NTcxOCwgNjU4MjcsIDU1MDQsIDY1NzIwLCAKKyAgICA2NTcxNCwgNjU3MTUsIDY1NzE2LCAwLCAxMjcwMDUsIDEyNzExOSwgMzEwOSwgNjM5NzUsIDc0MDI4LCAwLCA4MTA3LCAKKyAgICAxMTkyMzQsIDExMjcsIDQ1NSwgMCwgNjM5NjgsIDEyNzkyNCwgMzQ4MywgMTE5NTkzLCAxOTg5LCAwLCA2OTY3OCwgOTEwNCwgCisgICAgMzUwMywgNjUzNzUsIDkyNTA5LCA2Njk0LCA0MjYzMywgMTg2NCwgMCwgNzQzMDYsIDQxNDQ2LCAyNTQwLCA3NzM2LCAwLCAKKyAgICA3NDA2NCwgMCwgMTA1MjEsIDAsIDQyMTczLCA5NzA1LCA3NDEyNCwgODYwNCwgNjk1NSwgMTA5MTYsIDQzNjg0LCA2MTQ5LCAKKyAgICAzODg3LCAxOTk1NiwgMTQxMSwgMjgyNCwgMCwgMTAxMDYsIDEyNzg2MiwgMTQwMywgMTI4ODM5LCAxMzQ3LCA5NjMxLCAKKyAgICA3NDQ0NCwgMCwgMCwgMCwgMCwgODY0MCwgMCwgMjU4LCAxNjU0LCAwLCAwLCAwLCA0MzMxNCwgMCwgMCwgNDA0MiwgMTE0NzgsIAorICAgIDI4NzMsIDYzOTc3LCAxMTUyMiwgNDE2NjgsIDg1NDksIDEwODYxLCAwLCA2Mzk3NiwgMCwgNjg2MjMsIDAsIDc0NTg1LCAKKyAgICA0MTM5MSwgMCwgOTE3OTAzLCAzNzYsIDY5ODcsIDkyMjEsIDAsIDAsIDg4MjMsIDEyODY5NywgMTI5NDMsIDY1MTg1LCAKKyAgICA0MTg2OSwgMTI2MTksIDAsIDEwMTU0LCA5ODMwNDMsIDc0NDM5LCAyMDM5LCAwLCA3NDQ2LCAxNjg0LCA2Mzk3OSwgMTA5NzQsIAorICAgIDQ1OCwgMTIwNjIwLCAwLCA2OTc5MSwgMTI3MTYxLCAxMTkxNiwgNjUwMTYsIDAsIDY5NjcxLCA0MjExNSwgOTgzMTMzLCAKKyAgICAxMjI4OCwgNzgwNTcsIDAsIDE0OTMsIDQyMTExLCA3NTUzLCA0MDk3LCAxMjgxOTksIDEzMDgwLCAwLCA2NTgwOCwgNjYxMCwgCisgICAgNjAzMCwgODA1OSwgNzUwOCwgMTMxMzEsIDAsIDk4MzQyMywgMCwgODc5NCwgNDEyNzgsIDQxNjI5LCAxMjE1NCwgMTI4MTkyLCAKKyAgICA0MTI3NywgNjQ2NTgsIDAsIDY0MzgwLCA2NjI1LCA3NDM1NCwgMTk5MDQsIDAsIDAsIDAsIDY1MzcxLCA3MDc4LCAwLCA4MzMsIAorICAgIDAsIDYzNjksIDAsIDEwOTc5LCA0MTk1MywgMCwgNDE0MzQsIDYwNjIsIDAsIDAsIDE5OTE2LCA2OTEzLCA5MzMsIDEzNDEsIAorICAgIDk4NDIsIDY3MjAsIDY1NzQ0LCAwLCA5ODM1OTIsIDEyODI5NSwgMCwgNzQwNSwgMTAxMDUsIDY1ODEwLCAwLCA0MTYzMiwgCisgICAgNzQ5MywgNTUyOTAsIDAsIDQxNjIyLCAwLCAwLCAxMTk1NTYsIDc0NTg0LCA3NjMyLCA5NzE2LCAxOTk1NCwgOTgwNSwgCisgICAgNTk5MCwgOTAwLCAwLCA2Mzk1NywgMCwgMCwgMzYxMiwgMCwgNjQzNzYsIDkzOTg3LCA1Mzg5LCA5MjU5NywgMCwgNjU5MzgsIAorICAgIDI4MzksIDk2MjEsIDU4MiwgMCwgNzQzNjgsIDM3NDksIDY5NDksIDc1NjksIDc0MDYxLCAwLCAwLCA2OTU2LCA0NDAzLCAKKyAgICAxOTk2MiwgNjU1NTksIDMyOTksIDAsIDkxNzU2NiwgMTE5MTI3LCA5MDAyLCAwLCA3NDM3MiwgNzQyMzYsIDg0NzgsIDc1OTgsIAorICAgIDU0NiwgNDI0NjksIDY1NTY5LCAxOTE4LCA5NTQyLCA0NzIsIDc3MTYsIDEwMzE5LCAxMDM4MywgNjk5NiwgMCwgNjM5NTIsIAorICAgIDg0MjUsIDM2MDIsIDgzMjgsIDExNzY0LCAxMTg4OTQsIDAsIDY5Nzk2LCA0MTE4MywgMTI5MDcsIDEwMjcxLCAxMDI4NywgCisgICAgNjg0LCA0MzUyNSwgMCwgMjg1NCwgMTE5NTg2LCA0NTkyLCA2NTc1NSwgMCwgOTIyNTYsIDExOTYzLCA0MzYyMCwgMCwgCisgICAgNzgyNDksIDAsIDEyODU1MSwgMTI4ODA5LCA5ODgxLCA0MzExNSwgNjU3NTcsIDM0MTUsIDExOTEzMSwgMCwgODY0OCwgMCwgCisgICAgNjc0MSwgNDMwNDcsIDAsIDEzMTgwLCAxMjg1MTcsIDQxOCwgOTE3OTcyLCA2NDQ5NSwgMTAyOTUsIDEwMzI3LCAxMDM5MSwgCisgICAgNDE3NTIsIDc0MzM5LCA4NjQxLCA0MTQ0OSwgMCwgNzQxMDAsIDAsIDEwOTExLCA2OTQyLCAwLCAxMDI0LCA0Mjg0OSwgCisgICAgNDE3NTEsIDY5Nzc2LCA4OTQxLCA5ODM1NTYsIDQ1NTQsIDAsIDkwMjMsIDExNjg1LCAwLCA5OTI4LCA3ODYxNywgMCwgCisgICAgMTE0MzcsIDQzNzQxLCA5MjE2MywgMTIwNzAwLCA2Mzk2NywgOTgzNDc1LCA0MTIwNiwgMTIwNzI0LCA5MDQ5LCA0MTE4NSwgCisgICAgNDMxNjYsIDAsIDExNjgwLCA5MjYxOSwgMTE2ODYsIDc4NTQ0LCA2NTIyNCwgNDU2NSwgNDY1NSwgMTE5NTUzLCAwLCAKKyAgICA5MjE4MywgNjQ1MjMsIDEwMzQzLCAxMDQwNywgMCwgNjY2NzEsIDExNDY2LCAwLCAxMjgwMDMsIDQyODkwLCA3NDAxMywgCisgICAgMTIwNTAsIDY4MjAxLCAyODYwLCAwLCAwLCAwLCA0Mjc5MiwgNTc0MywgMTA0MjQsIDEyMDY1LCA0Mjg3MiwgMCwgOTIzNDIsIAorICAgIDAsIDg4NzUsIDAsIDAsIDkxNzk5MSwgNzUzMSwgMTI4NDcsIDI0MTMsIDAsIDc4NjM1LCA5NjIsIDAsIDEyODU1LCA0MTE5NiwgCisgICAgNDI1NjQsIDAsIDE1ODIsIDk4MzcwNiwgNTUwOCwgMCwgMCwgMCwgMTA4MDEsIDY5ODc2LCA5MjM1NCwgMCwgNzE3MywgNDk2LCAKKyAgICAxMDQzOSwgNDMxMywgNjQ2MDcsIDY5NjM4LCA3ODYwLCAwLCA5MDYsIDQyNzkzLCAyODQyLCA2NDA1LCA2NDcyMiwgMTMxMzIsIAorICAgIDc5OCwgNjQ2OTQsIDEyODAxLCA4NDA2LCAxMTUzLCA5MjE3MywgNjQ3ODgsIDAsIDgwNTQsIDkxNzQsIDEyODY1MiwgCisgICAgOTE3OTc2LCA5OTY0LCA3NDQwOSwgNDE2MTEsIDQ2NDIsIDY2NTc0LCAxMTU1NiwgOTE3OTgyLCAwLCA3ODg1NywgNDIwODksIAorICAgIDc4ODU1LCA5MDA4LCAwLCAxMjY1OTIsIDE5NTA5NiwgNDIwNzksIDkxNzk4MSwgNzc5MjQsIDQyNTEzLCA3NzkyNywgCisgICAgNDI4NDIsIDczOTg1LCA2NTI4NSwgMTE4OTc0LCAxMjcwMDMsIDk4MzY5MywgMCwgMCwgMCwgMTEzMzUsIDY0MDY5LCAKKyAgICA0MjA5MywgMzkyMCwgMCwgMCwgMCwgMCwgNDU4MCwgNDE5NjcsIDk4MzcyMywgNjQzODQsIDkyMTY3LCA5Mzk4NCwgMzAyMSwgCisgICAgNDIwMDQsIDAsIDAsIDQyMzE3LCA0MTk5OCwgMCwgNjk0NiwgMCwgMCwgMCwgMTI4MTkzLCA2NTIwNCwgMCwgNjgxMTMsIAorICAgIDQyNjkwLCA5ODgwLCA0MjAxMCwgNzQ4MjQsIDY0NTg5LCAxMDExMSwgNjQ4NzUsIDEyNzg4MCwgNjgzOTksIDQzOTk4LCAKKyAgICAxMTM2MCwgMCwgMCwgMCwgMTE4ODI2LCA0MjE0OSwgMCwgMCwgMCwgNjQ5NDEsIDc3OTE5LCAxMjA0MjEsIDEyODA3NywgMCwgCisgICAgNTUyNDcsIDQxMTAsIDY2MDA1LCA2OTU5LCAxMDkyOSwgMTE5MTEwLCAwLCA2NjcwMywgNzc5MjEsIDg2MTcsIDQxOTgyLCAKKyAgICA2MDI1LCA2OTI0MiwgOTgzMTc2LCAwLCAwLCAwLCA5NTk3LCA0MjA5OSwgNDMxNzIsIDk4MzM2OCwgMTAxMTcsIDk4MzE2OSwgCiAgICAgOTIyOTcsIDQxNjM2LCAwLCAwLCAxMjA2ODEsIDgzMDEsIDAsIDAsIDE4NywgMCwgNjU2NjksIDEyODMzOSwgNDk2MywgMCwgCi0gICAgMTI3NTE3LCAwLCA4OTY0LCA2NTY3NiwgNjU3ODUsIDAsIDQxOTQ4LCAwLCAwLCAwLCA0MTk0MiwgNjU0NDksIDMxNjAsIAotICAgIDEwMDgxLCAxMzIyNiwgNDIxMjEsIDQyNDc1LCA0MjY2MywgMTI4MjEwLCA0MTc2NiwgMCwgNjU4ODIsIDc4ODQ5LCA0MTc2MCwgCi0gICAgMTE4OSwgOTA1LCA0ODAsIDEwOTg1LCA0MTczMywgNjc4NTksIDk2MjksIDY3NDIsIDE3NDUsIDQzNjI1LCA3MzgzNSwgCi0gICAgNzg4OCwgMCwgMzk4MCwgMCwgNDI2NTYsIDQxNTA3LCA4ODA2LCA3MDIzLCAwLCA3NDI3OSwgOTQ0NywgNzg2NTEsIDc4NjcsIAotICAgIDY5MjE4LCA2MjM2LCAwLCAwLCAxMDUwNSwgMCwgMTI4NTEsIDExODk0OCwgMzQ4LCA1NDc0LCAxMjg4NDMsIDMxMDMsIDAsIAotICAgIDQxNzUzLCAxMjg1NDAsIDAsIDAsIDc4ODQ0LCA3ODg0NSwgNDE3MzksIDc4ODQzLCA0MjUxNSwgMTA5MzEsIDQxNzU2LCAKLSAgICA0MzM0NywgNDI1NjAsIDUzOTEsIDQxNzQ2LCAxMTkxNDcsIDkyNTkxLCA0MTI1OSwgNTU2MSwgNzQzNjAsIDI2OTEsIDAsIAotICAgIDY1NTUzLCA3OTMzLCA1NTYyLCA2OTgwMCwgMTI4MjY1LCA0MTI2MiwgMTI4MTQ2LCA2NDQyMSwgNzQ4NDYsIDQxMjUxLCAwLCAKLSAgICAwLCAzOTc5LCAwLCAwLCA3NDgxMywgMCwgMCwgMCwgMCwgOTI1MjQsIDQxMjY2LCAwLCAwLCAxMjg4MzYsIDEwNTg1LCAKLSAgICA2NTc0MSwgNDE3MzcsIDk1NzQsIDI2NjYsIDAsIDQxNzM4LCA4MzEsIDQxOSwgMTMxMjYsIDEwNzE2LCAwLCA0MjgyMiwgMCwgCi0gICAgNjQzNCwgMCwgNjkzOSwgNzc2NiwgNjQzMiwgMTI4MTA2LCAwLCA5MTYsIDc2OSwgNDE3NDIsIDExOTY4LCA3NDgwNSwgCi0gICAgNjQzMywgNTU2MywgNTQ3LCAxOTQzLCA2NDM5LCA1NTYwLCA0OTk0LCA0ODcsIDAsIDQ0OTcsIDM3NTQsIDEyNzA1NiwgCi0gICAgMTIwNDI0LCA5MDM5LCAwLCA0MTc3NiwgMCwgODcxNiwgMTU5NSwgNDE2MTUsIDAsIDAsIDc0MjYwLCAwLCA0Mjg1NCwgCi0gICAgNDMyMTksIDEyODcwOSwgMCwgMTIxODUsIDEyODg3OSwgMCwgNjgzNTUsIDY4MzU3LCAwLCA0Mjg1NiwgODYzNCwgMCwgMCwgCi0gICAgNDIwOSwgMTIwNzAyLCAwLCA2NTg3OSwgNDE1MzgsIDY1NjEyLCAxMjc1NDMsIDY2OSwgNTY3OSwgMCwgNjk3ODYsIDkyNTQwLCAKLSAgICAwLCAwLCA1Njc4LCAxMTgyMSwgMCwgNjcxMSwgNDYwLCAwLCAwLCAwLCAwLCAxMjA3NDcsIDAsIDAsIDc4MDUwLCAxMTkwMjIsIAotICAgIDAsIDAsIDAsIDc3ODIsIDkwNDQsIDQ5NzQsIDExNzYwLCA3ODQ5NCwgNzU3NywgNjU3MTEsIDQxOTEyLCAxMjE2LCAwLCAKLSAgICAxMjgwNzksIDU3OTIsIDAsIDAsIDc4NTAxLCAwLCAyOTMzLCAxMjI0NCwgMCwgNTY4MywgMCwgMCwgNzgxMTksIDE1NDksIDAsIAotICAgIDAsIDEyMDM5OCwgNTY4MiwgNjIwNiwgODY3MCwgMTAyNTYsIDU2ODAsIDkxNzU2OCwgMTAwMDEsIDAsIDY5NzY4LCAxNDQ5LCAKLSAgICAxMDI0MSwgNzgyOTAsIDEyODIyOCwgMCwgMTA1NTIsIDY0MzQyLCA0MTkyMiwgMTI4NTQ4LCA4NTg0LCAwLCA1NTY3LCAKLSAgICAyNzE3LCAwLCAwLCA1NTY0LCA0Mjg4NiwgNDE5MDgsIDQyODgyLCA1NTY1LCAwLCAxMjgwMjYsIDAsIDY1NzA4LCA2NTcwOSwgCi0gICAgNTU2NiwgNjk4MDMsIDY1NzA0LCA2NTcwNSwgMTE5MDQsIDQyODc1LCA0MzM3MywgNDI1MzksIDU5NDIsIDg0NjgsIAorICAgIDEyNzUxNywgMCwgODk2NCwgNjU2NzYsIDc3NzUsIDAsIDQxOTQ4LCAwLCAwLCAwLCA0MTk0MiwgNjU0NDksIDMxNjAsIAorICAgIDEwMDgxLCAxMzIyNiwgNDIxMjEsIDQyNDc1LCA0MjY2MywgMTI4MjEwLCA0MTc2NiwgMTE5MTE0LCA2NTg4MiwgNzg4NDksIAorICAgIDQxNzYwLCAxMTg5LCA5MDUsIDQ4MCwgMTA5ODUsIDQxNzMzLCA2Nzg1OSwgOTYyOSwgNjc0MiwgMTc0NSwgNDM2MjUsIAorICAgIDczODM1LCA3ODg4LCAwLCAzOTgwLCAwLCA0MjY1NiwgNDE1MDcsIDg4MDYsIDcwMjMsIDAsIDc0Mjc5LCA5NDQ3LCA3ODY1MSwgCisgICAgNzg2NywgNjkyMTgsIDYyMzYsIDk4MzEzNCwgMCwgMTA1MDUsIDAsIDEyODUxLCAxMTg5NDgsIDM0OCwgNTQ3NCwgMTI4ODQzLCAKKyAgICAzMTAzLCAwLCA0MTc1MywgMTI4NTQwLCAwLCAwLCA3ODg0NCwgNzg4NDUsIDQxNzM5LCA3ODg0MywgNDI1MTUsIDEwOTMxLCAKKyAgICA0MTc1NiwgNDMzNDcsIDQyNTYwLCA1MzkxLCA0MTc0NiwgMTE5MTQ3LCA5MjU5MSwgNDEyNTksIDU1NjEsIDY5OTMwLCAKKyAgICAyNjkxLCAwLCA2NTU1MywgNzkzMywgNTU2MiwgNjk4MDAsIDEyODI2NSwgNDEyNjIsIDEyODE0NiwgNjQ0MjEsIDc0ODQ2LCAKKyAgICA0MTI1MSwgMCwgMCwgMzk3OSwgMCwgMCwgNzQ4MTMsIDk4MzczMCwgMCwgMCwgMCwgOTI1MjQsIDQxMjY2LCAwLCA2NjU2NiwgCisgICAgMTI4ODM2LCAxMDU4NSwgNjU3NDEsIDQxNzM3LCA5NTc0LCAyNjY2LCAwLCA0MTczOCwgODMxLCA0MTksIDEzMTI2LCAKKyAgICAxMDcxNiwgMCwgNDI4MjIsIDAsIDY0MzQsIDAsIDY5MzksIDc3NjYsIDY0MzIsIDEyODEwNiwgNjk5MzIsIDkxNiwgNzY5LCAKKyAgICA0MTc0MiwgMTE5NjgsIDc0ODA1LCA2NDMzLCA1NTYzLCA1NDcsIDE5NDMsIDY0MzksIDU1NjAsIDQ5OTQsIDQ4NywgCisgICAgMTI2NTM3LCA0NDk3LCAzNzU0LCAxMjcwNTYsIDEyMDQyNCwgOTAzOSwgMCwgNDE3NzYsIDAsIDg3MTYsIDE1OTUsIDQxNjE1LCAKKyAgICAwLCAwLCA3NDI2MCwgMCwgNDI4NTQsIDQzMjE5LCAxMjg3MDksIDk4MzQ1MiwgMTIxODUsIDEyODg3OSwgNzAwNzIsIAorICAgIDY4MzU1LCA2ODM1NywgMCwgNDI4NTYsIDg2MzQsIDAsIDk4MzM4OSwgNDIwOSwgMTIwNzAyLCAwLCA2NTg3OSwgNDE1MzgsIAorICAgIDY1NjEyLCAxMjc1NDMsIDY2OSwgNTY3OSwgMCwgNjk3ODYsIDkyNTQwLCAwLCA5ODM0NTYsIDU2NzgsIDExODIxLCAwLCAKKyAgICA2NzExLCA0NjAsIDAsIDAsIDk4MzQ1MywgMCwgMTIwNzQ3LCAwLCAwLCA3ODA1MCwgMTE5MDIyLCAwLCA5ODM0NTQsIDAsIAorICAgIDc3ODIsIDkwNDQsIDQ5NzQsIDExNzYwLCA3ODQ5NCwgNzU3NywgNjU3MTEsIDQxOTEyLCAxMjE2LCAwLCAxMjgwNzksIAorICAgIDU3OTIsIDAsIDAsIDc4NTAxLCAwLCAyOTMzLCAxMjI0NCwgMCwgNTY4MywgOTgzMzg0LCAwLCA3ODExOSwgMTU0OSwgMCwgMCwgCisgICAgMTIwMzk4LCA1NjgyLCA2MjA2LCA4NjcwLCAxMDI1NiwgNTY4MCwgNjk5MzUsIDEwMDAxLCAxMjg1MTIsIDY5NzY4LCAxNDQ5LCAKKyAgICAxMDI0MSwgNzgyOTAsIDEyODIyOCwgMCwgMTA1NTIsIDY0MzQyLCA0MTkyMiwgMTI4NTQ4LCA4NTg0LCA2ODAzMCwgNTU2NywgCisgICAgMjcxNywgMCwgMCwgNTU2NCwgNDI4ODYsIDQxOTA4LCA0Mjg4MiwgNTU2NSwgOTgzMjQ4LCAxMjgwMjYsIDAsIDY1NzA4LCAKKyAgICA2NTcwOSwgNTU2NiwgNjk4MDMsIDY1NzA0LCA2NTcwNSwgMTE5MDQsIDQyODc1LCA0MzM3MywgNDI1MzksIDU5NDIsIDg0NjgsIAogICAgIDEyMDU2MSwgMTAzNjEsIDEwNDI1LCA2NTY5NywgNjU2OTgsIDY1Njk5LCAwLCA2NjU5OCwgMCwgNjQ2NjQsIDEwNjQ3LCAKLSAgICA3ODcwMiwgNzg3MDMsIDc4NjkwLCA0NTcsIDc4NTAyLCA2NTcwMSwgMTkzNCwgNDMwMDYsIDAsIDg4MDIsIDc4NzEwLCAKKyAgICA3ODcwMiwgNzg3MDMsIDc4NjkwLCA0NTcsIDc4NTAyLCA2NTcwMSwgMTkzNCwgNDMwMDYsIDExOTkwMywgODgwMiwgNzg3MTAsIAogICAgIDY1MTMwLCAxMTc0NywgNzg3MDksIDYwODcsIDc4NzA1LCA3ODcxNiwgNDE3NTcsIDc4NzExLCA4MDQzLCA4OTUwLCA2NTY5NCwgCiAgICAgNjQ0ODUsIDQzNTM0LCAxMDQ1NywgMCwgMTE5NjEsIDc4NzI1LCA3ODcyMiwgNzg3MjMsIDc4NzIwLCA3ODcyMSwgMCwgCi0gICAgNjU1MTUsIDk0OTksIDEwMDM1LCAxMzA2OSwgMCwgMCwgOTg4OSwgNjgxODQsIDQyODA2LCAwLCA3MjU2LCAwLCAwLCAxNjY3LCAKLSAgICA0MjE2MSwgMCwgNDI0MjgsIDAsIDY5MzQsIDAsIDEwODAyLCA2NDg2MSwgNjU1NiwgNzgzOTAsIDAsIDgxMDEsIDM2MTAsIDAsIAotICAgIDQxNzQ4LCA0OTk1LCA5NTUsIDY1OTA3LCAxMTkyMDgsIDUzNTAsIDY0MzM5LCA3ODMwNiwgNjQ1NDksIDEwODc1LCAKLSAgICAxMjg2NjIsIDU0NzcsIDY1NjkyLCAwLCAxMjg1MzIsIDEyMDM5NywgMTI4OTYsIDEwNDU2LCA5MTc5NTQsIDAsIDM4NzQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDY1NjAzLCAwLCA2NTY4NywgMCwgNDEwMzgsIDc0MDA5LCAxMTk1NzAsIDQyMjM5LCA4NTM2LCAKLSAgICA3ODc0MCwgMCwgNzg3MjYsIDc0NDMyLCA3MjQsIDAsIDE0NTUsIDc4NzQ5LCA3MTgzLCA2NDU4MywgNzg3NDcsIDY4NDQzLCAKLSAgICA0MTc1LCA3ODc0MSwgNDM2MTQsIDY5ODAxLCA5MzksIDAsIDQzNTIwLCA2ODYxMywgNzQ1NjksIDkxNzk1OCwgMCwgNzg3NjMsIAotICAgIDc4NzY0LCA3ODc2MCwgMTA3ODgsIDYwODgsIDc4NzU5LCA3ODc1NSwgMTkwLCAwLCAxMjU5MywgMCwgODE4OCwgNjQ0MDgsIAotICAgIDAsIDQ0MTcsIDAsIDkyMjYxLCA2MzcwLCAwLCA3ODI3LCA2ODQ0MSwgNjk2NSwgMCwgMCwgMTMyMDEsIDEyODIwNSwgMCwgMCwgCi0gICAgNzQzODIsIDczNzgxLCA3OTE4LCA3Mzk4OCwgMCwgMCwgOTE3ODg0LCAxNzI4LCAwLCAxMjA3MTAsIDE3OCwgMTI5NzIsIAotICAgIDkyNjc5LCAwLCA5MTc4ODcsIDkyNTYzLCAwLCAwLCA3ODMyNywgMTIwNDA1LCA2NTY5MCwgMCwgMCwgMTE5MDU0LCAwLCAKLSAgICA5MjUyLCA5MTc4ODksIDQ2NTIsIDY4MzcxLCAwLCAwLCAwLCAxMzA2NSwgOTkyMywgMTA4MDYsIDAsIDExNzYzLCAwLCAKLSAgICAxMjA2ODgsIDY3MjMsIDc4MTg3LCAwLCA2OTkzLCAwLCAwLCA4MzMzLCAwLCAwLCAxMTM5MCwgMCwgNzQ0NjQsIDAsIAotICAgIDkyMzIwLCA3NDA4MCwgMCwgMCwgMTE5MTAsIDkyNTU5LCA4Mjc4LCA4OTYzLCA0MDM0LCAxMjg1NjAsIDAsIDY1MzQ0LCAKLSAgICAxMjA1MTcsIDQxNzQ3LCAwLCAwLCA4Njc3LCAwLCAxMjcwNywgOTM1MCwgNjYwMzcsIDEyODE4MCwgODgzNiwgMTIzMTUsIAotICAgIDEyNzQ3LCA4MzAwLCAwLCAwLCA3NDkxLCA4ODU2LCAxMjgwNjQsIDAsIDQzMTUwLCAxMjc3NjgsIDEyMDQwNCwgNjUzODksIAotICAgIDEyMDQwMiwgMTIwNDAzLCAxMDgxMywgMjU5MiwgMTI4NTMsIDQzMjY5LCA3MjYzLCAxMjAyNDQsIDY1MzYsIDEyMDIzOCwgCi0gICAgMTIwMjM5LCA2NTUxNiwgMTIzMjEsIDEyMDM5MSwgMTIwMzg4LCA1NTI4NywgMTAwMDcsIDEyMDI0NiwgOTU4OCwgMTIwMjQ4LCAKLSAgICAxNTk2LCAxMjAzODMsIDQxOTk0LCA2NTgwMSwgMTI4ODA4LCAwLCA2NjU3MiwgMCwgMCwgMTA2MTMsIDY2OTcsIDEyODA1LCAKLSAgICA0MTkyOCwgNDA5ODEsIDc4NDAzLCA3ODQwOSwgNTAwNiwgNjQzMjgsIDAsIDk5MzEsIDAsIDg4MjUsIDc0NTU1LCA2NTk0MCwgCi0gICAgNDMyNTksIDAsIDYxMDcsIDAsIDExOTE3NywgMCwgNzg0MDEsIDEyODY0MSwgMTE3ODMsIDMzNSwgMTIwMjI3LCA2NDY4OSwgCi0gICAgNDM4LCA0NTEwLCA1NzY1LCA4NzIxLCAxMjAyMzMsIDExOTIyNywgNjA5MiwgMTI4NDAsIDQzMTEyLCA4ODc2LCAxMjAyMzEsIAotICAgIDgwOTYsIDEwMjg0LCAxMjg1MTUsIDAsIDAsIDEwMzgwLCA4NzMzLCAwLCAxMjgyNDAsIDQxNjAyLCAwLCA5MjMwOCwgCi0gICAgNzQ4MzEsIDkxNzkwMSwgMCwgNzM3NDcsIDY1Mzk5LCAwLCA2NDU5MSwgNDI0MDUsIDAsIDEyMDgyMCwgODQzLCAxMTU0MSwgCi0gICAgMCwgOTE3ODk4LCAyMDY1LCA0MTkzNSwgNzQ0OTYsIDQxOTAyLCAwLCAwLCAyMTUsIDQxMjU4LCA3Nzg3NSwgNDMxNTksIAotICAgIDE5NTMsIDk1NzksIDQxOTM4LCAxMjU2LCAzOTEwLCA5NDA3LCA2MjQyLCAwLCAwLCA0MTI1NywgNDE5MDAsIDg2NzUsIAotICAgIDEwNzAwLCA4ODA1LCAxNzQyLCAwLCA5MzMzLCA4MjAyLCAxMjc3NTAsIDAsIDAsIDAsIDAsIDczODgyLCA0OTksIDAsIAotICAgIDQzNDY3LCAwLCA0MzgxOCwgMCwgMTcxMiwgNTkzMiwgNzc4NDUsIDQxNzYyLCAwLCAwLCAxMTk2NywgMTc3NSwgMCwgMCwgMCwgCi0gICAgMCwgMTI4MDA5LCA5NDU4LCAwLCA2NDcwLCA5MTgwLCAxMjAzODAsIDQzMTc2LCAwLCAwLCA0Mjc4MiwgMCwgMCwgMCwgCi0gICAgMTI4MzA5LCA3NDc3NywgMTIwNjY5LCA5NDE0LCAxMjAzODIsIDczNzgyLCA3Mzk2OSwgNTY1LCA0MjQ4NCwgNTc5NCwgMjAxLCAKLSAgICAyNjYyLCA0MjI5MiwgMCwgODI1NCwgMCwgMTA5NzUsIDAsIDEyMDYyNSwgNzQ3NjMsIDEwMjIsIDQxMDgsIDM4ODAsIAotICAgIDc0MjQ3LCAwLCAwLCA5MjI2MywgOTE3OTgwLCA3NTA3LCAwLCA0MzE0OSwgMCwgNjUwMzEsIDc5NjEsIDE2MzYsIDAsIAotICAgIDY1MDI5LCA2NTAyNCwgMCwgMTI0NzMsIDY1MzQsIDAsIDk5LCA5OCwgOTcsIDEyMDU3MSwgNjc1ODQsIDQwNDksIDc0MTYzLCAKLSAgICAxMjcwNjUsIDcwOTAsIDAsIDc4OTIsIDkxNzk2OSwgMTA3NzcsIDkxNzgwMywgNjUzMTAsIDY1NTYyLCA2NjU5OSwgNjY3MjIsIAotICAgIDAsIDgwMzksIDMzNjMsIDY2NTk0LCA0MzQzNCwgMCwgMCwgMTI1OTYsIDY2NTk1LCA0MjI1OCwgNDI1NzAsIDU1OTMsIAotICAgIDExOTE0OCwgMTIwNzExLCA5MjQyNSwgMTAxMDAsIDYwNjEsIDY0ODU0LCAxMTksIDExOCwgMTE3LCAxMTYsIDEyOTk4LCAKLSAgICAxMjIsIDEyMSwgMTIwLCAxMTEsIDExMCwgMTA5LCAxMDgsIDExNSwgMTE0LCAxMTMsIDExMiwgMTAzLCAxMDIsIDEwMSwgCi0gICAgMTAwLCAxMDcsIDEwNiwgMTA1LCAxMDQsIDY0MzYsIDczOTc0LCA1MzQsIDQxMjEyLCA3NzkzMSwgMTUzNiwgNjQwOTMsIAotICAgIDczOTcwLCA3NzkzMCwgMTI3MTU3LCAwLCA2MDIwLCAxMjcxNiwgMTI3MTEyLCAxMjc0NCwgNDc1LCAxMjAzOTQsIDEzMjY2LCAKLSAgICAxMjc4MTMsIDEyNzExMSwgMCwgNzM5MjYsIDAsIDEwNjQ1LCAxMjEyLCA2NTQzLCAwLCA4MTM0LCAxMjgwMjgsIDI5MTMsIAotICAgIDczODcwLCAxMjcxMTMsIDE4NjYsIDAsIDE5NTA5NSwgMCwgODkyMywgMTY0NSwgMTIwNTksIDY2NTg1LCA3ODc4NiwgMzE5NiwgCi0gICAgMCwgMCwgNTkzNSwgMTI1MCwgMTI3MDY2LCA4MTc0LCA5Nzg3LCA2NzMzLCA5ODU5LCA3OTE2LCA5ODYxLCA5ODYwLCA1MjU4LCAKLSAgICAxODgyLCAxODkyLCA2NzMxLCAxMDg4MiwgNDA1LCAxMTQ1NCwgNzM5MTEsIDAsIDEyODc4MSwgNDExNjksIDg5MzksIAotICAgIDQxMjQ1LCAwLCA0MTE3MCwgMTQ1NCwgMTEzNjksIDY0NzcsIDEyMTU3LCAwLCAwLCAwLCA0MTE3MiwgNzg1NSwgMCwgMCwgCi0gICAgMTA0ODAsIDAsIDAsIDc3OTM2LCA4MjY0LCAxMjYxMCwgMCwgNjQ1LCAwLCA3NjA5LCA0MDk3MywgMCwgNzM4MzMsIDc4MjQ5LCAKLSAgICA1ODI0LCA5ODQsIDc3OTE4LCAxMDY4OCwgNTg1MSwgMCwgNzcyOSwgNzM5ODIsIDEyMDUxOCwgMCwgMTk1MDg2LCA0MzM2OSwgCi0gICAgMCwgMTI4MTQwLCA2ODQxNSwgMCwgNDUzOCwgMTIwNDA2LCA0MzE0MSwgMCwgMCwgNzQyMTQsIDczODg2LCAwLCAwLCAKLSAgICAxMTg5MDIsIDQzMDA1LCA3ODQ0OCwgOTU1MiwgMCwgMCwgMCwgMTI5OTcsIDAsIDAsIDAsIDAsIDIzODEsIDEyODgzLCAKLSAgICAxMDk5NCwgMTA1MjksIDQxOTA2LCAwLCAwLCAwLCAxMjQyNSwgMTA2NjEsIDEwODU2LCA5NjE0LCAyNDI4LCA0MTQ3OCwgCi0gICAgODU4MiwgMTAwNjQsIDczOTMwLCAwLCAwLCAwLCA2NDg5NiwgMTE5MTYyLCAxOTUyLCA5MjE4MSwgODQ1NSwgMTAwODIsIAotICAgIDExNTc1LCAwLCAxMTk1NjYsIDAsIDEyODA4LCAxMjE4MywgNjE0NSwgMTE4OTU1LCA2NDkyOSwgOTI0MzMsIDAsIDAsIAotICAgIDQzMTg2LCA0MjUwOSwgMCwgMzkyMiwgOTE4NywgMCwgMCwgMTAxOTEsIDExOTA1NywgMTE3NTIsIDMzNTMsIDkzNTgsIDAsIAotICAgIDkxNzk1NywgNjY2ODAsIDEyMDA5MCwgODI0OCwgNzkzMSwgODU1OCwgOTc5NSwgNjgzODAsIDAsIDAsIDEyMDA4MiwgCi0gICAgMTIwMDgxLCAxMjAwODQsIDQxMDI3LCAxMjAwODYsIDAsIDEyMDA4OCwgMTIwMDg3LCA3MDE5LCAxMjAwNzMsIDAsIDExNzUxLCAKLSAgICAxMjAwNzgsIDc4Mjk0LCA2NDY1NywgODY1NywgMTIwMDQ4LCA4NTk0LCAxMjAwNjgsIDAsIDAsIDEyMDA2OSwgMTIwMDcyLCAKLSAgICAxMjAwNzEsIDAsIDAsIDQzMTU0LCA0MTAyOSwgMCwgMTEzMzIsIDY1MzgwLCA3NzI4LCAwLCAxMTI5NCwgMCwgNjY2NjUsIAotICAgIDc4NTEsIDAsIDgzNzUsIDg2OTksIDAsIDQyNTI0LCAwLCA5MDg1LCAwLCA3NTA0LCA5MzI3LCA2MTYwLCAxMjgwOTUsIDAsIAotICAgIDAsIDgwODgsIDAsIDc0MDEyLCA5MjUwMCwgMCwgNDQzOSwgNjkyNiwgMCwgMTI5MjQsIDEyODIyNywgNDIzNjksIDAsIAotICAgIDY1NDkxLCA2NTE0NSwgOTA0MSwgNDM1NTksIDY0NTc3LCAxMDgyNiwgMCwgMTEyOTYsIDAsIDAsIDAsIDY1ODI1LCA5NTc3LCAKLSAgICA2ODE5OSwgMCwgNjQ2NzAsIDAsIDc4MDU2LCA2NzkzLCAxMTI5NSwgMCwgNzgwNTMsIDczODcyLCAwLCAwLCAxMDkwMiwgMCwgCi0gICAgMCwgNzgwNzAsIDc4MDY4LCAxMDQ3MiwgMjk5NSwgMCwgMCwgNjQ2ODIsIDIzNzEsIDc4MDY5LCAxMjA4MDgsIDI1OSwgCi0gICAgMTAwOSwgOTIxNzEsIDI0MDIsIDIzMzMsIDY0NDAsIDAsIDAsIDY1MTI1LCA0MTI0NCwgMCwgMTMyNzEsIDkxMDMsIDQxMTgwLCAKLSAgICAwLCAwLCAwLCAwLCAxMDIxOSwgMCwgMCwgMCwgMCwgNDMxNzgsIDEyNzA3MCwgNDEyNjEsIDExOTM2MiwgNDM2NDAsIDg2MTMsIAotICAgIDAsIDExODk4OSwgNjczNiwgMTk1MDkyLCA0MTQ5MiwgMTIwMDUsIDEyNzg4OSwgMCwgMTg5MCwgMTIwMDU2LCAwLCAwLCAwLCAKLSAgICA3MjkzLCA3OTkxLCAwLCAxMDU3OCwgMCwgNzgwNzYsIDE5NDczOCwgNzgwNzcsIDAsIDAsIDc4ODAwLCA5MjY1MywgNjQ0NDUsIAotICAgIDQyNjY4LCA2NjM1LCAwLCA2MTY0LCA2NTE3MCwgMCwgMCwgNzY3NiwgMTE2NjQsIDAsIDAsIDY5NzA3LCAwLCAxMTg4MTIsIAotICAgIDAsIDAsIDEyODA0NSwgOTE3NSwgMTE5MjUsIDc4MDQ1LCA5MDg4LCAwLCA2NDU0NSwgMTM5NiwgMCwgNzU0NiwgMzg0NywgMCwgCi0gICAgMTI3ODM1LCA0OTg1LCAxMzI4OCwgNjcyLCA4MDk4LCA0MzE5NiwgMTk0NzQ2LCAwLCAxMjgxMjYsIDAsIDc0MDQzLCAKLSAgICA2NTA3MiwgMTU3NywgMTE3NzIsIDEzMDQxLCA1OTI4LCA0NTI1LCAxMDY1OCwgNjU5MTEsIDEyNjYsIDEwMTgwLCAwLCAKLSAgICAxMjg1ODQsIDEyNjIyLCAwLCAwLCAwLCAxOTQ3MTQsIDEyNzEzOSwgMTMzMTAsIDc3MywgMTk5MzMsIDE1MzksIDAsIAotICAgIDEyNjk4MywgNDI3MzEsIDkyMjA1LCAwLCAwLCAwLCAzMDUxLCA1ODYyLCA3ODIzLCA5MjQ3OCwgMCwgMTIwNDExLCAzMjUwLCAKLSAgICA0Mzk5MSwgNjk2ODcsIDY2NjQ5LCA5NTEwLCA2NjIzNywgMCwgMCwgNDEwNjYsIDY0NjczLCA5MTc5NjMsIDkxNzk2NCwgMCwgCi0gICAgMzUwNSwgODcwNywgOTE3OTY4LCA2NzI1LCAxMjgwMTMsIDkxNzk3MSwgOTIzMTQsIDM0NzEsIDkxNzk3MCwgNTQ3OSwgODgyLCAKLSAgICA2Njg2LCAxMTk1ODQsIDExNjEzLCAxMjA3NzIsIDQyNzU0LCAwLCAwLCA5MjY5NiwgMCwgMCwgMCwgMTI4NTIzLCAzMjI1LCAKKyAgICA2NTUxNSwgOTQ5OSwgMTAwMzUsIDEzMDY5LCA3MTMwOSwgMCwgOTg4OSwgNjgxODQsIDQyODA2LCAwLCA3MjU2LCAwLCAwLCAKKyAgICAxNjY3LCA0MjE2MSwgMCwgNDI0MjgsIDAsIDY5MzQsIDAsIDEwODAyLCA2NDg2MSwgNjU1NiwgNzgzOTAsIDAsIDgxMDEsIAorICAgIDM2MTAsIDk4MzE5OSwgNDE3NDgsIDQ5OTUsIDk1NSwgNjU5MDcsIDExOTIwOCwgNTM1MCwgNjQzMzksIDc4MzA2LCA2NDU0OSwgCisgICAgMTA4NzUsIDEyODY2MiwgNTQ3NywgNjU2OTIsIDAsIDEyODUzMiwgMTIwMzk3LCAxMjg5NiwgMTA0NTYsIDkxNzk1NCwgMCwgCisgICAgMzg3NCwgMCwgMCwgOTgzNjE5LCAxMjAzMzEsIDAsIDAsIDY1NjAzLCAwLCA2NTY4NywgMCwgNDEwMzgsIDc0MDA5LCAKKyAgICAxMTk1NzAsIDQyMjM5LCA4NTM2LCA3ODc0MCwgNzgzMjQsIDc4NzI2LCA3NDQzMiwgNzI0LCAwLCAxNDU1LCA3ODc0OSwgCisgICAgNzE4MywgNjQ1ODMsIDc4NzQ3LCA2ODQ0MywgNDE3NSwgNzg3NDEsIDQzNjE0LCA2OTgwMSwgOTM5LCAwLCA0MzUyMCwgCisgICAgNjg2MTMsIDc0NTY5LCA5MTc5NTgsIDAsIDc4NzYzLCA3ODc2NCwgNzg3NjAsIDEwNzg4LCA2MDg4LCA3ODc1OSwgNzg3NTUsIAorICAgIDE5MCwgMCwgMTI1OTMsIDAsIDgxODgsIDY0NDA4LCAwLCA0NDE3LCA5ODMyMTEsIDkyMjYxLCA2MzcwLCAwLCA3ODI3LCAKKyAgICA2ODQ0MSwgNjk2NSwgMCwgMCwgMTMyMDEsIDEyODIwNSwgNjk4OTYsIDAsIDc0MzgyLCA3Mzc4MSwgNzkxOCwgNzM5ODgsIDAsIAorICAgIDAsIDkxNzg4NCwgMTcyOCwgMCwgNDM3NjQsIDE3OCwgMTI5NzIsIDkyNjc5LCAwLCA5MTc4ODcsIDkyNTYzLCA5ODMzNzMsIAorICAgIDAsIDc4MzI3LCAxMjA0MDUsIDY1NjkwLCAwLCAwLCAxMTkwNTQsIDAsIDkyNTIsIDkxNzg4OSwgNDY1MiwgNjgzNzEsIDAsIAorICAgIDAsIDAsIDEzMDY1LCA5OTIzLCAxMDgwNiwgMCwgMTE3NjMsIDcwMDE2LCAxMjA2ODgsIDY3MjMsIDc4MTg3LCAwLCA2OTkzLCAKKyAgICAwLCAwLCA4MzMzLCAwLCAwLCAxMTM5MCwgMCwgNzQ0NjQsIDAsIDkyMzIwLCA3NDA4MCwgOTgzMzA3LCA2OTkxMSwgMTE5MTAsIAorICAgIDkyNTU5LCA4Mjc4LCA4OTYzLCA0MDM0LCAxMjg1NjAsIDAsIDY1MzQ0LCAxMjA1MTcsIDQxNzQ3LCAwLCAwLCA4Njc3LCAwLCAKKyAgICAxMjcwNywgOTM1MCwgNjYwMzcsIDEyODE4MCwgODgzNiwgMTIzMTUsIDEyNzQ3LCA4MzAwLCA5ODM3NDEsIDAsIDc0OTEsIAorICAgIDg4NTYsIDcxMzYxLCAwLCA0MzE1MCwgMTI3NzY4LCAxMjA0MDQsIDY1Mzg5LCAxMjA0MDIsIDEyMDQwMywgMTA4MTMsIAorICAgIDI1OTIsIDEyODUzLCA0MzI2OSwgNzI2MywgMTIwMjQ0LCA2NTM2LCAxMjAyMzgsIDEyMDIzOSwgNjU1MTYsIDEyMzIxLCAKKyAgICAxMjAzOTEsIDEyMDM4OCwgNTUyODcsIDEwMDA3LCAxMjAyNDYsIDk1ODgsIDEyMDI0OCwgMTU5NiwgMTIwMzgzLCA0MTk5NCwgCisgICAgNjU4MDEsIDEyODgwOCwgMCwgNjY1NzIsIDAsIDAsIDEwNjEzLCA2Njk3LCAxMjgwNSwgNDE5MjgsIDQwOTgxLCA3ODQwMywgCisgICAgNzg0MDksIDUwMDYsIDY0MzI4LCAwLCA5OTMxLCAwLCA4ODI1LCA3NDU1NSwgNjU5NDAsIDQzMjU5LCAwLCA2MTA3LCAwLCAKKyAgICAxMTkxNzcsIDAsIDc4NDAxLCAxMjg2NDEsIDExNzgzLCAzMzUsIDEyMDIyNywgNjQ2ODksIDQzOCwgNDUxMCwgNTc2NSwgCisgICAgODcyMSwgMTIwMjMzLCAxMTkyMjcsIDYwOTIsIDEyODQwLCA0MzExMiwgODg3NiwgMTIwMjMxLCA4MDk2LCAxMDI4NCwgCisgICAgMTI4NTE1LCAwLCAwLCAxMDM4MCwgODczMywgOTgzMDcyLCAxMjgyNDAsIDQxNjAyLCAwLCA5MjMwOCwgNzQ4MzEsIAorICAgIDkxNzkwMSwgMCwgNzM3NDcsIDY1Mzk5LCAwLCA2NDU5MSwgNDI0MDUsIDAsIDEyMDgyMCwgODQzLCAxMTU0MSwgMCwgCisgICAgOTE3ODk4LCAyMDY1LCA0MTkzNSwgNzQ0OTYsIDQxOTAyLCAwLCAwLCAyMTUsIDQxMjU4LCA3Nzg3NSwgNDMxNTksIDE5NTMsIAorICAgIDk1NzksIDQxOTM4LCAxMjU2LCAzOTEwLCA5NDA3LCA2MjQyLCAwLCA5ODMxMDAsIDQxMjU3LCA0MTkwMCwgODY3NSwgCisgICAgMTA3MDAsIDg4MDUsIDE3NDIsIDAsIDkzMzMsIDgyMDIsIDEyNzc1MCwgMCwgOTgzMTk3LCAwLCAwLCA3Mzg4MiwgNDk5LCAKKyAgICA5ODMwNDksIDQzNDY3LCAwLCA0MzgxOCwgMCwgMTcxMiwgNTkzMiwgNzc4NDUsIDQxNzYyLCA5ODMxMDQsIDAsIDExOTY3LCAKKyAgICAxNzc1LCAwLCAwLCAwLCAwLCAxMjgwMDksIDk0NTgsIDAsIDY0NzAsIDkxODAsIDEyMDM4MCwgNDMxNzYsIDAsIDAsIAorICAgIDQyNzgyLCAwLCAwLCAwLCAxMjgzMDksIDc0Nzc3LCAxMjA2NjksIDk0MTQsIDEyMDM4MiwgNzM3ODIsIDczOTY5LCA1NjUsIAorICAgIDQyNDg0LCA1Nzk0LCAyMDEsIDI2NjIsIDQyMjkyLCAwLCA4MjU0LCAwLCAxMDk3NSwgMCwgMTIwNjI1LCA3NDc2MywgMTAyMiwgCisgICAgNDEwOCwgMzg4MCwgNzQyNDcsIDAsIDAsIDkyMjYzLCA5MTc5ODAsIDc1MDcsIDAsIDQzMTQ5LCAwLCA2NTAzMSwgNzk2MSwgCisgICAgMTYzNiwgMCwgNjUwMjksIDY1MDI0LCAwLCAxMjQ3MywgNjUzNCwgMCwgOTksIDk4LCA5NywgMTIwNTcxLCA2NzU4NCwgCisgICAgNDA0OSwgNzQxNjMsIDEyNzA2NSwgNzA5MCwgMCwgNzg5MiwgOTE3OTY5LCAxMDc3NywgOTE3ODAzLCA2NTMxMCwgNjU1NjIsIAorICAgIDY2NTk5LCA2NjcyMiwgMCwgODAzOSwgMzM2MywgNjY1OTQsIDQzNDM0LCAwLCAwLCAxMjU5NiwgNjY1OTUsIDQyMjU4LCAKKyAgICA0MjU3MCwgNTU5MywgMTE5MTQ4LCAxMjA3MTEsIDkyNDI1LCAxMDEwMCwgNjA2MSwgNjQ4NTQsIDExOSwgMTE4LCAxMTcsIAorICAgIDExNiwgMTI5OTgsIDEyMiwgMTIxLCAxMjAsIDExMSwgMTEwLCAxMDksIDEwOCwgMTE1LCAxMTQsIDExMywgMTEyLCAxMDMsIAorICAgIDEwMiwgMTAxLCAxMDAsIDEwNywgMTA2LCAxMDUsIDEwNCwgNjQzNiwgNzM5NzQsIDUzNCwgNDEyMTIsIDc3OTMxLCAxNTM2LCAKKyAgICA2NDA5MywgNzM5NzAsIDc3OTMwLCAxMjcxNTcsIDAsIDYwMjAsIDEyNzE2LCAxMjcxMTIsIDEyNzQ0LCA0NzUsIDEyMDM5NCwgCisgICAgMTMyNjYsIDEyNzgxMywgMTI3MTExLCAwLCA3MzkyNiwgMCwgMTA2NDUsIDEyMTIsIDY1NDMsIDk4MzI5OSwgODEzNCwgCisgICAgMTI4MDI4LCAyOTEzLCA3Mzg3MCwgMTI3MTEzLCAxODY2LCAwLCAxOTUwOTUsIDAsIDg5MjMsIDE2NDUsIDEyMDU5LCAKKyAgICA2NjU4NSwgNzEyOTcsIDMxOTYsIDAsIDAsIDU5MzUsIDEyNTAsIDEyNzA2NiwgODE3NCwgOTc4NywgNjczMywgOTg1OSwgCisgICAgNzkxNiwgOTg2MSwgOTg2MCwgNTI1OCwgMTg4MiwgMTg5MiwgNjczMSwgMTA4ODIsIDQwNSwgMTE0NTQsIDczOTExLCAwLCAKKyAgICAxMjg3ODEsIDQxMTY5LCA4OTM5LCA0MTI0NSwgMCwgNDExNzAsIDE0NTQsIDExMzY5LCA2NDc3LCAxMjE1NywgMCwgMCwgMCwgCisgICAgNDExNzIsIDc4NTUsIDAsIDAsIDEwNDgwLCAwLCAwLCA3NzkzNiwgODI2NCwgMTI2MTAsIDk4MzMwMCwgNjQ1LCAxMjY2MTYsIAorICAgIDc2MDksIDQwOTczLCA2OTk0MywgNzM4MzMsIDY5OTQ4LCA1ODI0LCA5ODQsIDc3OTE4LCAxMDY4OCwgNTg1MSwgMCwgNzcyOSwgCisgICAgNzM5ODIsIDEyMDUxOCwgMCwgMTk1MDg2LCA0MzM2OSwgMCwgMTI4MTQwLCA2ODQxNSwgOTgzMDkzLCA0NTM4LCAxMjA0MDYsIAorICAgIDQzMTQxLCAwLCA5ODMyMDgsIDc0MjE0LCA3Mzg4NiwgMCwgMCwgMTE4OTAyLCA0MzAwNSwgNzg0NDgsIDk1NTIsIDAsIDAsIAorICAgIDk4MzE1OSwgMTI5OTcsIDAsIDAsIDAsIDAsIDIzODEsIDEyODgzLCAxMDk5NCwgMTA1MjksIDQxOTA2LCAwLCAwLCAwLCAKKyAgICAxMjQyNSwgMTA2NjEsIDEwODU2LCA5NjE0LCAyNDI4LCA0MTQ3OCwgODU4MiwgMTAwNjQsIDczOTMwLCAwLCAwLCAwLCAKKyAgICA2NDg5NiwgMTE5MTYyLCAxOTUyLCA5MjE4MSwgODQ1NSwgMTAwODIsIDExNTc1LCA5ODM0ODIsIDExOTU2NiwgMCwgMTI4MDgsIAorICAgIDEyMTgzLCA2MTQ1LCAxMTg5NTUsIDY0OTI5LCA5MjQzMywgMCwgOTgzMTkzLCA0MzE4NiwgNDI1MDksIDAsIDM5MjIsIAorICAgIDkxODcsIDk4MzYxNCwgMCwgMTAxOTEsIDExOTA1NywgMTE3NTIsIDMzNTMsIDkzNTgsIDAsIDcxMzY2LCA2NjY4MCwgCisgICAgMTIwMDkwLCA4MjQ4LCA3OTMxLCA4NTU4LCA5Nzk1LCA2ODM4MCwgOTgzMjg5LCAwLCAxMjAwODIsIDEyMDA4MSwgMTIwMDg0LCAKKyAgICA0MTAyNywgMTIwMDg2LCAwLCAxMjAwODgsIDczNjYsIDcwMTksIDEyMDA3MywgMCwgMTE3NTEsIDEyMDA3OCwgNzgyOTQsIAorICAgIDY0NjU3LCA4NjU3LCAxMjAwNDgsIDg1OTQsIDEyMDA2OCwgMCwgMCwgMTIwMDY5LCAxMjAwNzIsIDEyMDA3MSwgMCwgMCwgCisgICAgNDMxNTQsIDQxMDI5LCAwLCAxMTMzMiwgNjUzODAsIDc3MjgsIDk0MDc3LCAxMTI5NCwgMCwgNjY2NjUsIDc4NTEsIDAsIAorICAgIDgzNzUsIDg2OTksIDAsIDQyNTI0LCAwLCA5MDg1LCA5NDA0MSwgNzUwNCwgOTMyNywgNjE2MCwgMTI4MDk1LCA5ODM4NTUsIAorICAgIDAsIDgwODgsIDAsIDc0MDEyLCA5MjUwMCwgMCwgNDQzOSwgNjkyNiwgOTgzMDQ3LCAxMjkyNCwgMTI4MjI3LCA0MjM2OSwgCisgICAgNDM1MCwgNjU0OTEsIDY1MTQ1LCA5MDQxLCA0MzU1OSwgNjQ1NzcsIDEwODI2LCAwLCAxMTI5NiwgOTgzMjc1LCAwLCAwLCAKKyAgICA2NTgyNSwgOTU3NywgNjgxOTksIDAsIDY0NjcwLCA5ODMxMjEsIDc4MDU2LCA2NzkzLCAxMTI5NSwgMCwgNzgwNTMsIAorICAgIDczODcyLCAwLCAwLCAxMDkwMiwgMCwgMCwgNzgwNzAsIDc4MDY4LCAxMDQ3MiwgMjk5NSwgMCwgMCwgNjQ2ODIsIDIzNzEsIAorICAgIDc4MDY5LCAxMjA4MDgsIDI1OSwgMTAwOSwgOTIxNzEsIDI0MDIsIDIzMzMsIDY0NDAsIDE5NDc0MSwgMCwgNjUxMjUsIAorICAgIDQxMjQ0LCAwLCAxMzI3MSwgOTEwMywgMjI3OCwgMCwgMCwgMCwgMCwgMTAyMTksIDAsIDAsIDAsIDAsIDQzMTc4LCAKKyAgICAxMjcwNzAsIDQxMjYxLCAxMTkzNjIsIDQzNjQwLCA4NjEzLCAwLCA5NDA0OSwgNjczNiwgMTk1MDkyLCA0MTQ5MiwgMTIwMDUsIAorICAgIDY5OTI3LCAwLCAxODkwLCAxMjAwNTYsIDAsIDAsIDAsIDcyOTMsIDc5OTEsIDAsIDEwNTc4LCAwLCA3ODA3NiwgMTk0NzM4LCAKKyAgICA3ODA3NywgNjk5MjgsIDAsIDc4ODAwLCA5MjY1MywgNjQ0NDUsIDQyNjY4LCA2NjM1LCAwLCA2MTY0LCA2NTE3MCwgMCwgMCwgCisgICAgNzY3NiwgMTE2NjQsIDAsIDk4MzY0OSwgNjk3MDcsIDAsIDExODgxMiwgMCwgMCwgMTI4MDQ1LCA5MTc1LCAxMTkyNSwgCisgICAgNzgwNDUsIDkwODgsIDAsIDY0NTQ1LCAxMzk2LCAwLCA3NTQ2LCAzODQ3LCAxMjcxNzcsIDEyNzgzNSwgNDk4NSwgMTMyODgsIAorICAgIDY3MiwgODA5OCwgNDMxOTYsIDE5NDc0NiwgOTgzMDk2LCAxMjgxMjYsIDQyNjU1LCA3NDA0MywgNjUwNzIsIDE1NzcsIAorICAgIDExNzcyLCAxMzA0MSwgNTkyOCwgNDUyNSwgMTA2NTgsIDY1OTExLCAxMjY2LCAxMDE4MCwgMCwgMTI4NTg0LCAxMjYyMiwgMCwgCisgICAgMCwgMCwgMTk0NzE0LCAxMjcxMzksIDEzMzEwLCA3NzMsIDE5OTMzLCAxNTM5LCAwLCAxMjY5ODMsIDQyNzMxLCA2Nzk3MiwgCisgICAgMCwgMCwgMCwgMzA1MSwgNTg2MiwgNzgyMywgOTI0NzgsIDAsIDEyMDQxMSwgMzI1MCwgNDM5OTEsIDY5Njg3LCA2NjY0OSwgCisgICAgOTUxMCwgNjYyMzcsIDk4MzI5NCwgMCwgNDEwNjYsIDY0NjczLCA5MTc5NjMsIDkxNzk2NCwgMCwgMzUwNSwgODcwNywgCisgICAgOTE3OTY4LCA2NzI1LCAxMjgwMTMsIDkxNzk3MSwgOTIzMTQsIDM0NzEsIDkxNzk3MCwgNTQ3OSwgODgyLCA2Njg2LCAKKyAgICAxMTk1ODQsIDExNjEzLCAxMjA3NzIsIDQyNzU0LCAwLCA5ODMyOTgsIDkyNjk2LCAwLCAwLCAwLCAxMjg1MjMsIDMyMjUsIAogICAgIDkxNzk5NiwgNDQzMywgNDExNTYsIDQzOTczLCA0MzE3MywgMTQ0MywgNDM4MSwgMCwgMCwgMTA5MjYsIDExNzU2LCAxMTc1NywgCiAgICAgNjQ4NzksIDkxNzk0OSwgOTE3OTUwLCAxMjc4NDgsIDEzMjI3LCAwLCAxMDAyMSwgNTE2MCwgMTM4NywgMCwgOTE3OTUzLCAKICAgICA0MTQxOCwgMCwgNjU5MTQsIDY3MjEsIDIxNywgOTE3OTU1LCA5MTc5NjAsIDkxNzk2MSwgMTA0NDMsIDEwNzg5LCA0MTE1OCwgCi0gICAgMTE5MjU3LCA0Mjc0LCAwLCA0MTQ4MywgMCwgNDEyNTAsIDAsIDQyMTc5LCAwLCA1OTMxLCAxMTc0NCwgNjkyMzIsIDAsIAotICAgIDQxMjUyLCA2NjY4MiwgMCwgMTE5NjM3LCA0MTI0OSwgMTM2NiwgNjQ2MzUsIDY1MDQ3LCAxMjQ2NiwgMCwgMCwgNDM5NywgCisgICAgMTE5MjU3LCA0Mjc0LCA5ODMyOTIsIDQxNDgzLCAwLCA0MTI1MCwgMCwgNDIxNzksIDAsIDU5MzEsIDExNzQ0LCA2OTIzMiwgCisgICAgMCwgNDEyNTIsIDY2NjgyLCAwLCAxMTk2MzcsIDQxMjQ5LCAxMzY2LCA2NDYzNSwgNjUwNDcsIDEyNDY2LCAwLCAwLCA0Mzk3LCAKICAgICAxMjgwMzcsIDEyODMzNiwgNDEyOTYsIDk1NDUsIDQxMjkxLCAxMjgwNDksIDAsIDQxNDg1LCAzNTExLCA0MTI4MiwgNTkyMywgCiAgICAgMTA0MDAsIDAsIDEyODgxOCwgNzYwLCAwLCAxMjA4OCwgNTc4NiwgMCwgNDIyNTYsIDExOTg2OSwgMTE5ODYwLCA0MTcsIAotICAgIDQxNDc0LCAxMTk1NjIsIDQxNTY1LCAwLCA1OTM0LCAxMTk4NjcsIDY2NTgzLCAxMTkyMzEsIDY0ODc3LCAwLCA2NDQ4MSwgCisgICAgNDE0NzQsIDExOTU2MiwgNDE1NjUsIDAsIDU5MzQsIDExOTg2NywgNjY1ODMsIDExOTIzMSwgNjQ4NzcsIDIyODQsIDY0NDgxLCAKICAgICA3ODYxNCwgNjYwMTMsIDQxOTU2LCA0MzQ1NSwgMTI2OTk1LCAwLCAwLCAwLCA0MjI3MywgNTgxOSwgMCwgOTE3NTU2LCAwLCAKLSAgICAwLCAwLCA2NTkxMCwgMTI3NzQ3LCAxMDI0NiwgMTIwODE2LCAwLCAxMjM3LCAxMDI3NCwgNDU1MiwgMTE5NTc2LCAwLCAwLCAKLSAgICAxMzc1LCA2NjcwNSwgNDM1NzMsIDY1MjYwLCA0MjA2MywgMCwgNDI4MTEsIDEwMzEyLCA3NDE5MiwgMTIwNzk0LCA3ODQwLCAKLSAgICAwLCA0MzYzMCwgMTAyNTIsIDAsIDEyODEwNCwgNDMxODUsIDAsIDQzOTYsIDAsIDExOTg4MCwgMTA3NjksIDk2NzYsIAotICAgIDExOTA0MSwgMCwgOTc1MywgMCwgODk0NCwgMCwgMCwgMTA0NzMsIDAsIDAsIDYwNzIsIDQzMDI1LCAxMDI5OSwgMCwgMCwgCi0gICAgMTIwNjA4LCA2NjMyNiwgMCwgMCwgMCwgNDM4MTEsIDkzMzAsIDAsIDcyMjIsIDEwMjgzLCAxMDMxNSwgMTAzNzksIDQ5OTYsIAotICAgIDAsIDEzMjgxLCA2NjUxNywgNzg2NSwgMTAwODcsIDc4MzQzLCAwLCA3ODM0NywgMCwgMCwgNzU2NSwgNjYzNjMsIDEyOTUyLCAKLSAgICA2NDgwNiwgNDMxODAsIDc3OTI4LCA2ODA5NiwgNzc5MjksIDQzOTgyLCA3NDI4OCwgNjIyLCA3NDAyMywgODg1LCA0MzQwNSwgCi0gICAgMTYwMiwgMCwgMCwgODUyLCAwLCAxMjE2MCwgMCwgMTAyMTIsIDY1NDM1LCAwLCAxMjA3MSwgOTYwOSwgMTIxNTYsIAotICAgIDkxNzk4MywgOTE3OTg0LCA0MzU4NiwgMTEwMzUsIDEwNDExLCA5MTc5ODgsIDEwMjU1LCA2NzEwLCAxMDI3OSwgNDE5NCwgCi0gICAgMTAzNzUsIDkxNzk5MywgMCwgNDMxNSwgMTI2NDQsIDEyNzUxNiwgNzc5MzcsIDQzNjM5LCA0MzM0MywgMCwgOTE3OTk4LCAKLSAgICAxMTUwMSwgNDExNzcsIDEyODY4OSwgMCwgOTE3NzkyLCAwLCA5MjQxMywgODcxNSwgMCwgNDExNzksIDAsIDQzMzEzLCAwLCAKLSAgICA0MTE3NiwgMCwgOTk0LCAwLCA4NDUyLCAxMjcxMDMsIDczOTY2LCAwLCAwLCA1OTIxLCAwLCAyNTk3LCAwLCA1OTIyLCAKLSAgICAxMTg5MDMsIDc3OTQzLCA0MTg2LCA5MjUzMSwgMTI3MTA2LCAxMjcxMDUsIDY3MTgsIDAsIDQ0MDYsIDc0NjAxLCA4NDgwLCAKLSAgICA5MTkyLCA5NzQ3LCAxMjg2OTksIDQ0MTMsIDkyMTk2LCA0MjI2OCwgMzE5OCwgNTkyNCwgNTkyMCwgOTI0NjksIDY5MjEsIAotICAgIDc4MDgxLCA3NDAwNywgNDI4NjksIDg0MTgsIDExNjgxLCA0MzE2OSwgMTAxNzYsIDAsIDc0MiwgMCwgMjg5MywgMTA3NzIsIAotICAgIDY1Mjc2LCA1OTM3LCAxOTE0LCAyNTUzLCAxMTY4MiwgNjc1NiwgMTI4NTkwLCAxMjg2NDYsIDgzNjMsIDAsIDI5OTMsIAotICAgIDc3NzIsIDM5MTYsIDAsIDEyMDQ5NCwgMTE0MSwgNDI0MDcsIDgxNTksIDcxOCwgNzU3MiwgOTczLCAwLCAxMjA3MTgsIAotICAgIDMyMzUsIDI0MTUsIDQzMTY0LCAwLCA4MDE4LCA0MjMzMywgNzQ3NTYsIDEwNjc1LCA2OTM3LCA0MjQ4NiwgNDMzODEsIAotICAgIDY1MzkwLCAxMDA2NywgMCwgMTIwMiwgMCwgMCwgNjU4NjMsIDAsIDAsIDAsIDc4MTgyLCA2NDU0MiwgMzI2MCwgNzM4MjksIAotICAgIDY1Mzg4LCA5OTQ1LCA4NDE5LCA3ODA0MiwgNjczOCwgMCwgNDM2ODEsIDY5NzI4LCAyMDU5LCAwLCAwLCA1NTIzNywgMTQzMSwgCi0gICAgMCwgNjY1NjUsIDEwODIxLCAwLCAxMjgwNCwgMTI4MDc2LCA4MjI5LCAxMjM1LCAzMzA3LCAxMTQ3MiwgNzgwODksIDc4MTg0LCAKLSAgICA0NTQ0LCAwLCAwLCAwLCAxNzQwLCA3ODA5NywgODc1OCwgOTg1LCAxMjg3MiwgNjQ1MTEsIDc4MDk0LCAxMjA2OCwgNzgxMDIsIAotICAgIDAsIDEwMTQxLCAwLCA2Mzc2MSwgODc4NSwgNDQ3NiwgNzgxMDksIDYzNzYzLCAxMjY1NSwgODkwNywgNzgxMDUsIDc4MTA2LCAKLSAgICA3ODEwMywgNzgxMDQsIDAsIDExOTU3MiwgMTA2NjUsIDY0NjE2LCA0MTU3MiwgMCwgMTI3MTYwLCAwLCA0MTU3MywgMCwgCi0gICAgMzkzMSwgMTIwMjk1LCA3NDE0MywgMCwgMCwgMCwgMCwgMTE5ODIsIDAsIDAsIDAsIDEyODAxNiwgNjQ0ODQsIDAsIDQxMTY3LCAKLSAgICAwLCA0MTczNSwgMCwgNzE3LCAxMDc1NCwgMCwgMCwgMTI3OTc5LCAwLCA2Mzc2NywgMCwgMTc4MCwgNjkzNiwgMCwgMCwgCi0gICAgODE5LCAxMDYxMSwgOTY5NCwgMTI2OTc4LCAwLCAwLCAwLCAwLCA4MzQzLCA4MzQyLCA4MzQ1LCA4MzQ0LCA2NTc4LCA3MDA5LCAKKyAgICAxMjY2NDMsIDAsIDY1OTEwLCAxMjc3NDcsIDEwMjQ2LCAxMjA4MTYsIDY1Nzg1LCAxMjM3LCAxMDI3NCwgNDU1MiwgCisgICAgMTE5NTc2LCAwLCAwLCAxMzc1LCA2NjcwNSwgNDM1NzMsIDY1MjYwLCA0MjA2MywgMCwgNDI4MTEsIDEwMzEyLCA2OTg0NSwgCisgICAgMTIwNzk0LCA3ODQwLCAwLCA0MzYzMCwgMTAyNTIsIDAsIDEyODEwNCwgNDMxODUsIDAsIDQzOTYsIDAsIDExOTg4MCwgCisgICAgMTA3NjksIDk2NzYsIDExOTA0MSwgMCwgOTc1MywgMCwgODk0NCwgMCwgMCwgMTA0NzMsIDAsIDAsIDYwNzIsIDQzMDI1LCAKKyAgICAxMDI5OSwgMCwgMCwgMTIwNjA4LCA2NjMyNiwgOTgzNDM5LCAxMjc3OTQsIDAsIDQzODExLCA5MzMwLCAxMjA1OTYsIDcyMjIsIAorICAgIDEwMjgzLCAxMDMxNSwgMTAzNzksIDQ5OTYsIDk4Mzc3MywgMTMyODEsIDY2NTE3LCA3ODY1LCAxMDA4NywgNzgzNDMsIDAsIAorICAgIDc4MzQ3LCAwLCAwLCA3NTY1LCA2NjM2MywgMTI5NTIsIDY0ODA2LCA0MzE4MCwgNzc5MjgsIDc0MTQsIDc3OTI5LCA0Mzk4MiwgCisgICAgNzQyODgsIDYyMiwgNzQwMjMsIDg4NSwgNDM0MDUsIDE2MDIsIDAsIDAsIDg1MiwgMCwgMTIxNjAsIDAsIDEwMjEyLCAKKyAgICA2NTQzNSwgMCwgMTIwNzEsIDk2MDksIDEyMTU2LCA5MTc5ODMsIDkxNzk4NCwgNDM1ODYsIDExMDM1LCAxMDQxMSwgCisgICAgOTE3OTg4LCAxMDI1NSwgNjcxMCwgMTAyNzksIDQxOTQsIDEwMzc1LCA3MzkwMCwgMCwgNDMxNSwgMTI2NDQsIDEyNzUxNiwgCisgICAgNzc5MzcsIDQzNjM5LCA0MzM0MywgNzg3NzcsIDkxNzk5OCwgMTE1MDEsIDQxMTc3LCAxMjg2ODksIDAsIDkxNzc5MiwgMCwgCisgICAgOTI0MTMsIDg3MTUsIDAsIDQxMTc5LCAwLCA0MzMxMywgMCwgNDExNzYsIDAsIDk5NCwgMCwgODQ1MiwgMTI3MTAzLCAKKyAgICA3Mzk2NiwgMCwgMCwgNTkyMSwgMCwgMjU5NywgMCwgNTkyMiwgMTE4OTAzLCA3Nzk0MywgNDE4NiwgOTI1MzEsIDEyNzEwNiwgCisgICAgMTI3MTA1LCA2NzE4LCAwLCA0NDA2LCA3NDYwMSwgODQ4MCwgOTE5MiwgOTc0NywgMTI2NTMwLCA0NDEzLCA5MjE5NiwgCisgICAgNDIyNjgsIDMxOTgsIDU5MjQsIDU5MjAsIDkyNDY5LCA2OTIxLCA3ODA4MSwgNzQwMDcsIDQyODY5LCA4NDE4LCAxMTY4MSwgCisgICAgNDMxNjksIDEwMTc2LCAwLCA3NDIsIDAsIDI4OTMsIDEwNzcyLCA2NTI3NiwgNTkzNywgMTkxNCwgMjU1MywgMTE2ODIsIAorICAgIDY3NTYsIDEyODU5MCwgMTI4NjQ2LCA4MzYzLCAwLCAyOTkzLCA3NzcyLCAzOTE2LCA0MzAxLCAxMjA0OTQsIDExNDEsIAorICAgIDQyNDA3LCA4MTU5LCA3MTgsIDc1NzIsIDk3MywgMCwgMTIwNzE4LCAzMjM1LCAyNDE1LCA0MzE2NCwgMCwgODAxOCwgCisgICAgNDIzMzMsIDc0NzU2LCAxMDY3NSwgNjkzNywgNDI0ODYsIDQzMzgxLCA2NTM5MCwgMTAwNjcsIDAsIDEyMDIsIDAsIDAsIAorICAgIDY1ODYzLCAwLCAwLCA5NDAxMywgNzgxODIsIDY0NTQyLCAzMjYwLCA3MzgyOSwgNjUzODgsIDk5NDUsIDg0MTksIDc4MDQyLCAKKyAgICA2NzM4LCAwLCA0MzY4MSwgNjk3MjgsIDIwNTksIDAsIDAsIDU1MjM3LCAxNDMxLCAwLCA2NjU2NSwgMTA4MjEsIDAsIAorICAgIDEyODA0LCAxMjgwNzYsIDgyMjksIDEyMzUsIDMzMDcsIDExNDcyLCA3ODA4OSwgNzgxODQsIDQ1NDQsIDAsIDAsIDAsIAorICAgIDE3NDAsIDc4MDk3LCA4NzU4LCA5ODUsIDEyODcyLCA2NDUxMSwgNzgwOTQsIDEyMDY4LCA3ODEwMiwgMCwgMTAxNDEsIDAsIAorICAgIDYzNzYxLCA4Nzg1LCA0NDc2LCA3ODEwOSwgNjM3NjMsIDEyNjU1LCA4OTA3LCA3ODEwNSwgNzgxMDYsIDc4MTAzLCA3ODEwNCwgCisgICAgMCwgMTE5NTcyLCAxMDY2NSwgNjQ2MTYsIDQxNTcyLCAwLCAxMjcxNjAsIDAsIDQxNTczLCAwLCAzOTMxLCAxMjAyOTUsIAorICAgIDc0MTQzLCAwLCAwLCAwLCA3ODQ2MCwgMTE5ODIsIDAsIDAsIDAsIDEyODAxNiwgNjQ0ODQsIDAsIDQxMTY3LCAwLCA0MTczNSwgCisgICAgOTQwMTksIDcxNywgMTA3NTQsIDAsIDAsIDEyNzk3OSwgMCwgNjM3NjcsIDAsIDE3ODAsIDY5MzYsIDAsIDkyMjU0LCA4MTksIAorICAgIDEwNjExLCA5Njk0LCAxMjY5NzgsIDAsIDAsIDAsIDAsIDgzNDMsIDgzNDIsIDgzNDUsIDgzNDQsIDY1NzgsIDcwMDksIAogICAgIDc1MjMsIDY5MjIsIDgzNDgsIDgzNDcsIDc1MjUsIDMzNDYsIDgzMzksIDEyODE2NSwgMTI4MzM4LCA1NzUsIDI2OCwgCiAgICAgNzgxMTEsIDg1NjMsIDU3NTQsIDEyMDM0MywgNDE1NDEsIDY1NTY1LCA4MzM2LCA1OTM2LCA3MjkwLCA3ODExNywgODMzNywgCiAgICAgODM0MSwgMzA4LCAxMTM4OCwgNzUyMiwgMTIwNzIxLCA3ODEyMywgNjU0NjYsIDExMDkwLCA2OTUzLCAwLCAxMjAzNDYsIDAsIApAQCAtMTcxMjgsMTY4NiArMTgwNjMsMjY0MiBAQAogICAgIDc4MzAsIDExNjUxLCAxMzA5MywgNjQwMDIsIDAsIDY1NzQyLCAxMjg3NCwgMTE5NTk3LCAxMTU5MCwgMCwgNzQwNDgsIAogICAgIDEyODM1MCwgODU5NSwgMCwgOTE3OTQ3LCA0MzcwMywgMTMwOTcsIDAsIDY0NjQzLCAxMzI4MywgMTI2OTcsIDAsIDEyMzgxLCAKICAgICAzNDg4LCA1OTMzLCAxMDAzMywgNzM3MzgsIDY2MjQxLCA2NTU3MCwgMCwgMTIyOTcsIDExOTE1MywgMTk1NSwgMCwgNTM0OSwgCi0gICAgNDI1MzgsIDAsIDAsIDY1MzA4LCA5NDYyLCA5MTc1NTQsIDAsIDAsIDAsIDQyNzM2LCAwLCA1NzU2LCAwLCA3NjM4LCAKLSAgICA0MTY0MiwgNDI3NjQsIDAsIDQzMTA5LCA3NjM3LCA1NzUyLCAxMjA2MDAsIDAsIDczODMyLCAxMjg4MjcsIDEyMDYzNSwgCi0gICAgMTI4MjMxLCA3ODMzNCwgMCwgNzYzNiwgNjUxNzEsIDkxMjQsIDAsIDc4ODkyLCAwLCAyOTEsIDAsIDAsIDIwMjcsIDY2MjMwLCAKLSAgICAxMDA4MCwgNzgxMzYsIDEwNDAzLCAwLCA0NjQwLCA2NDcxMywgMTAyMjQsIDEyMDQyOSwgNDI1MTIsIDEyMDQzMSwgCisgICAgNDI1MzgsIDAsIDAsIDc0MTEsIDk0NjIsIDkxNzU1NCwgMCwgMCwgMCwgNDI3MzYsIDAsIDU3NTYsIDk4MzIxOSwgNzYzOCwgCisgICAgNDE2NDIsIDQyNzY0LCAwLCA0MzEwOSwgNzYzNywgNTc1MiwgNzQwMzcsIDAsIDczODMyLCAxMjg4MjcsIDEyMDYzNSwgCisgICAgMTI4MjMxLCA3ODMzNCwgMCwgNzYzNiwgNjUxNzEsIDkxMjQsIDAsIDc4ODkyLCAxMjA3OTgsIDI5MSwgMCwgMCwgMjAyNywgCisgICAgNjYyMzAsIDEwMDgwLCA3ODEzNiwgMTA0MDMsIDAsIDQ2NDAsIDY0NzEzLCAxMDIyNCwgMTIwNDI5LCA0MjUxMiwgMTIwNDMxLCAKICAgICAxMjA0MzAsIDAsIDEyODM1MSwgMTI3NDg5LCAxMjcxNDgsIDAsIDkyNDk5LCAwLCAxMTkwOTQsIDc0MjEzLCA3ODI0LCAwLCAKICAgICAwLCA0MTI3NCwgNTc3OCwgNjMwMiwgMCwgMCwgMTI2ODAsIDExOTEzMCwgMTQxNywgNzc4ODksIDE5NDkxNCwgOTQ1MiwgMCwgCi0gICAgNzQzOTMsIDExNTUyLCAwLCAxMjc4NTUsIDAsIDY1MzkxLCAwLCAxMDE3MiwgNjU0NTMsIDYzNzg5LCA0MTI2NCwgNzg2NTgsIAotICAgIDY0MjYsIDQ2NDEsIDkxNzksIDY0ODE5LCA1NTI3OCwgNDEyNTUsIDQyMDM2LCA0MTQ2OSwgNDEyNjksIDEyMDQxMiwgCi0gICAgNDEyNjcsIDQ2NDYsIDEyMDQyNSwgODY1LCA0MjAzNCwgNzgyNzQsIDc4MjczLCA0NjQ1LCA0MjAzMywgNzgyNzAsIAotICAgIDEyNzk4MiwgMCwgNjQ3MjgsIDAsIDc4NjczLCA3ODY3NCwgMTY1OSwgOTE5LCA0Mjc4NCwgMTY3MSwgMTk1MDg5LCA2MDY5LCAKLSAgICA5MjE5LCAxOTUwOTAsIDE2NjEsIDEzMTIwLCA2Mzc4NCwgNjk4MTksIDEwMTQwLCA5NzEzLCAxMTkxNDMsIDAsIDAsIDAsIAotICAgIDIzMDYsIDEwNDg1LCAxMTg5NDMsIDYwNjgsIDEwNjEyLCAxOTUwOTksIDExOTU2NywgMTk1MTAxLCA5MjU2MSwgNDE0NjIsIAotICAgIDEyMDQ3MCwgMTk1MDc5LCA1NDIyLCAxMjgyMzQsIDAsIDAsIDAsIDEwMjI5LCAxMDYzNSwgODI2LCAxMjgwODEsIDE5NTA4MiwgCi0gICAgMTk1MDg1LCAxOTUwODQsIDE5NTA4NywgNjQ4MywgMCwgMTgwOCwgNzg0OCwgMCwgODEwMCwgNzgyMjcsIDc4NjY5LCAKLSAgICA3ODY3MCwgMTMzMDEsIDc4NjY3LCA5NjY3LCA3ODY2NSwgNzg4NzIsIDAsIDExMDAzLCA5OTA0LCAwLCAwLCAxMjA2OTAsIAotICAgIDkxNDQsIDEwOTIxLCAwLCA3ODY4MCwgOTg0MCwgNjUxMzEsIDc4Njc4LCA3Nzg0MSwgMTAzMTMsIDAsIDAsIDY0MzIwLCAKLSAgICAxMDI2NSwgNzg2ODYsIDEwOTYyLCA3ODY4NCwgNDMwMDgsIDg5NDUsIDc4NjgzLCAwLCA0MSwgMTk1MDcyLCAxNzkyLCAKLSAgICAxMjA1MTUsIDE5NTA3MywgODY1NSwgMTk1MDc1LCA5MjU0NCwgNzc5NTEsIDEyMDY2LCAwLCAzODUsIDQxNTIsIDI1ODUsIAotICAgIDEyNzgwNCwgMTE5MDY4LCAzMTI2LCAwLCA3NDEzNiwgMTA5NTcsIDAsIDQzMjU4LCAwLCAxMjc4NzMsIDEzMTU3LCAwLCAwLCAKLSAgICAzNTcwLCAwLCA3NDQzLCAwLCA0NDAwNiwgNjk5NywgMCwgMCwgNzg3OSwgODczOSwgMTEwNzUsIDAsIDY1MjE2LCAwLCAKLSAgICA2OTc5NSwgMjU5MywgODQ2MywgNzgxMCwgOTE3ODYyLCA3ODM5LCAxMTk5MTMsIDc4ODA2LCAxMTk5MTIsIDk2OTEsIDQ0MTEsIAotICAgIDc4ODAyLCAwLCAwLCA0MzQ0MiwgNzg3OTksIDY1MjU0LCAxMDA2NiwgMCwgMCwgMCwgMCwgMTMwNjEsIDgwMTYsIDc4Njg3LCAKLSAgICAxOTkzMiwgNjQ4MzEsIDAsIDExOTkyMywgMTIzOTAsIDExOTE3MSwgMTYzNCwgNjgxMTUsIDAsIDExMDU2LCAwLCAxMTk5MjUsIAotICAgIDAsIDQxMTY1LCAxMTMyOCwgMTI0NTAsIDAsIDQxMTY2LCAwLCAxMjQ1NiwgMTE5OTE0LCAxNzEsIDU5NDEsIDEyNDUyLCAKLSAgICA5MTc1NDQsIDEyNDU4LCAxMjUzMSwgNzg3NzksIDQzMDEzLCA2MzgwMCwgNzQxNjIsIDEyNzU2OSwgMTIwNDgzLCA5OTY5LCAKLSAgICAwLCAxMjQ1NCwgNjM4MDYsIDQyMTMyLCAxMjA2MywgNzg0MjUsIDc4NDI0LCAzMjMwLCAwLCAwLCAwLCA1MjA5LCAyOTcsIAotICAgIDU4MTAsIDg1MjIsIDg0MTUsIDExOTkzNywgNzg0MjksIDc4NDI4LCA3MDc3LCAyNDk3LCAxMjg2NTEsIDk2MCwgNzQxNTYsIAotICAgIDY5ODEsIDkyMzc0LCAxMjkzOCwgNDI5MiwgMCwgNzQ4MTUsIDEwNTEyLCAwLCA3NDgxNCwgNzg4NzUsIDEyNzUwNSwgCi0gICAgNzg4NzYsIDI1MDMsIDczNzc4LCAxNzYyLCA2OTc5NCwgMjQ5NSwgNzg4NzMsIDU4NDQsIDc4ODc0LCAxMTg4MzgsIDAsIAotICAgIDEyNjU0LCA0NjYzLCAxODk5LCA3ODg3NywgMjUwNywgNjQxMjEsIDg3MjYsIDY1NTk0LCAwLCAwLCAwLCA4ODkyLCAwLCAKLSAgICA5MjMzOSwgMCwgMCwgNTc4MiwgNDIwLCAwLCAwLCA0Mzc5NiwgMTA3OTcsIDYzNzk0LCAwLCAwLCA2NDgxNCwgNjM3OTYsIAotICAgIDc3OTY1LCAwLCA2NjU4MSwgMTE5MjA0LCA0MTYwOCwgMCwgMCwgNjM3OTIsIDQ2NTksIDEyMDc4OCwgMCwgNDM2NzYsIDAsIAotICAgIDY5NjczLCAwLCAwLCAwLCAzMjksIDc3OTY4LCA5MjcwNywgOTE3NTQ4LCA3Mzk5LCAwLCA0MTE4OCwgMTMyNDQsIDEyMDQ2NiwgCi0gICAgNDIxNjcsIDc0MzUsIDc4MTkzLCA1MzgwLCAxMTkwODYsIDY5MjI1LCAxMTU1LCAxMTM2NSwgNDMxMjYsIDc3OTcyLCAwLCAKLSAgICA2NTY4NCwgMCwgNTYwMSwgNjUxOTIsIDQyNzY1LCA2Mzc1MiwgMCwgNzk4NywgMCwgMTE3MiwgNjk3OTksIDY3ODYsIAotICAgIDQzNjAxLCAxMjA0NzYsIDc0MTI2LCA1NjAzLCAwLCA0NDczLCAwLCAxOTQ4MjMsIDAsIDY1MzQ3LCA2NTM0NiwgNjUzNDUsIAotICAgIDAsIDEyNzM4NCwgNTM0NywgNjk4MDIsIDAsIDczODY4LCAxMTg5NDQsIDEwNTg4LCAwLCAwLCA2Mzc1NSwgMCwgNTM0MywgCi0gICAgNzg0MjIsIDAsIDQ1NTUsIDUzNDEsIDAsIDAsIDEyODY3MCwgNTM1MSwgMCwgNDMxMDQsIDY1MjQ0LCA5MTc4OTIsIDY0NTQxLCAKLSAgICA0MjUxOSwgNzQ0NzIsIDAsIDAsIDc0NzY1LCA5MTc4ODgsIDE5NDg5MiwgNjYzOCwgMCwgNjUxMTMsIDI3MSwgNzQxODAsIAotICAgIDY1MzcwLCA4ODM1LCA2NTM2OCwgMTI2NTMsIDY1MzY2LCA0MjE3MiwgNDEwODYsIDY1MzYzLCA2NTM2MiwgNjUzNjEsIAotICAgIDExOTEyLCA0MzQxMCwgMTEzMjMsIDY1MzU3LCAxMTgwMCwgNjUzNTUsIDUzNDUsIDY1MzUzLCA2NTM1MiwgNjUzNTEsIDc2MSwgCi0gICAgNjUzNDksIDE5OTU5LCA2OTcxOCwgNjM4NTYsIDAsIDI0MjMsIDc3OTU4LCA2NDY0NywgNzc5NTksIDExOTU3LCA0Njk5LCAwLCAKLSAgICAwLCAwLCAwLCA2NDYwNSwgMCwgMCwgMCwgNDkxNiwgMCwgMzgwLCAxMDk1OCwgNjY1NjMsIDc3OTU1LCA2OTc3MywgOTc3MywgCi0gICAgMTMxNjcsIDEyOTE4LCA0MTA5NiwgNzM5ODAsIDY5MjQ1LCA3ODI1NCwgOTE3ODkzLCAxMDY4NCwgMCwgOTE3ODk2LCAwLCAKLSAgICA3OTQ2LCAxMjU0MSwgODE4MiwgNjc1ODYsIDY5NzgwLCAwLCAwLCAwLCAwLCA5MDA1LCAxMjI1LCA2NjMwLCAwLCAwLCAwLCAKLSAgICAwLCA4ODQ3LCAwLCA2NTg3NiwgNTUzNSwgODMyOSwgNzQ1OTAsIDAsIDkyNjA5LCAwLCAwLCAzMTI3LCAyNTk1LCA2NTcxMywgCi0gICAgNDIwMTMsIDAsIDU2MDcsIDQxMDg5LCAwLCAwLCA3NDI1NiwgMjY2NSwgMTEzMDQsIDAsIDc0MjAwLCA0OTcwLCA4NzY0LCAKKyAgICA3NDM5MywgMTE1NTIsIDAsIDEyNzg1NSwgMTI4MjE3LCA2NTM5MSwgMCwgMTAxNzIsIDY1NDUzLCA2Mzc4OSwgNDEyNjQsIAorICAgIDc4NjU4LCA2NDI2LCA0NjQxLCA5MTc5LCA2NDgxOSwgNTUyNzgsIDQxMjU1LCA0MjAzNiwgNDE0NjksIDQxMjY5LCAKKyAgICAxMjA0MTIsIDQxMjY3LCA0NjQ2LCAxMjA0MjUsIDg2NSwgNDIwMzQsIDc4Mjc0LCA3ODI3MywgNDY0NSwgNDIwMzMsIAorICAgIDc4MjcwLCAxMjc5ODIsIDk4MzE3MiwgNjQ3MjgsIDAsIDc4NjczLCA3ODY3NCwgMTY1OSwgOTE5LCA0Mjc4NCwgMTY3MSwgCisgICAgMTk1MDg5LCA2MDY5LCA5MjE5LCAxMjg1NTgsIDE2NjEsIDEzMTIwLCA2Mzc4NCwgNjk4MTksIDEwMTQwLCA5NzEzLCAKKyAgICAxMTkxNDMsIDAsIDAsIDk0MDUwLCAyMzA2LCAxMDQ4NSwgMTE4OTQzLCA2MDY4LCAxMDYxMiwgMTk1MDk5LCAxMTk1NjcsIAorICAgIDE5NTEwMSwgOTI1NjEsIDQxNDYyLCAxMjA0NzAsIDE5NTA3OSwgNTQyMiwgMTI4MjM0LCAwLCAwLCAwLCAxMDIyOSwgCisgICAgMTA2MzUsIDgyNiwgMTI4MDgxLCAxOTUwODIsIDE5NTA4NSwgMTk1MDg0LCAxOTUwODcsIDY0ODMsIDkyMjExLCAxODA4LCAKKyAgICA3ODQ4LCAwLCA4MTAwLCA3ODIyNywgNzg2NjksIDc4NjcwLCAxMzMwMSwgNzg2NjcsIDk2NjcsIDc4NjY1LCA3ODg3MiwgMCwgCisgICAgMTEwMDMsIDk5MDQsIDAsIDAsIDEyMDY5MCwgOTE0NCwgMTA5MjEsIDAsIDc4NjgwLCA5ODQwLCA2NTEzMSwgNzg2NzgsIAorICAgIDc3ODQxLCAxMDMxMywgMCwgMCwgNjQzMjAsIDEwMjY1LCA3ODY4NiwgMTA5NjIsIDc4Njg0LCA0MzAwOCwgODk0NSwgCisgICAgNzg2ODMsIDAsIDQxLCAxOTUwNzIsIDE3OTIsIDEyMDUxNSwgMTk1MDczLCA4NjU1LCAxOTUwNzUsIDkyNTQ0LCA3Nzk1MSwgCisgICAgMTIwNjYsIDAsIDM4NSwgNDE1MiwgMjU4NSwgMTI3ODA0LCAxMTkwNjgsIDMxMjYsIDAsIDc0MTM2LCAxMDk1NywgOTgzNjk0LCAKKyAgICA0MzI1OCwgMTE5MTE2LCAxMjc4NzMsIDEzMTU3LCAwLCA5MTc1NDQsIDM1NzAsIDAsIDc0NDMsIDAsIDQ0MDA2LCA2OTk3LCAKKyAgICA2ODAwNCwgMTI2NjMxLCA3ODc5LCA4NzM5LCAxMTA3NSwgMCwgNjUyMTYsIDAsIDY5Nzk1LCAyNTkzLCA4NDYzLCA3ODEwLCAKKyAgICA5MTc4NjIsIDc4MzksIDExOTkxMywgNzg4MDYsIDExOTkxMiwgOTY5MSwgNDQxMSwgNzg4MDIsIDAsIDAsIDQzNDQyLCAKKyAgICA2OTg1MSwgNjUyNTQsIDEwMDY2LCA5ODM4ODAsIDAsIDAsIDAsIDEzMDYxLCA4MDE2LCA3ODY4NywgMTk5MzIsIDY0ODMxLCAKKyAgICAwLCAxMTk5MjMsIDEyMzkwLCAxMTkxNzEsIDE2MzQsIDY4MTE1LCAwLCAxMTA1NiwgOTgzNTc0LCAxMTk5MjUsIDAsIAorICAgIDQxMTY1LCAxMTMyOCwgMTI0NTAsIDAsIDQxMTY2LCAwLCAxMjQ1NiwgMTE5OTE0LCAxNzEsIDU5NDEsIDEyNDUyLCAKKyAgICAxOTQ3MDksIDEyNDU4LCAxMjUzMSwgNzg3NzksIDQzMDEzLCA2MzgwMCwgNzQxNjIsIDEyNzU2OSwgMTIwNDgzLCA5OTY5LCAKKyAgICAxMjA3NjcsIDEyNDU0LCA2MzgwNiwgNDIxMzIsIDEyMDYzLCA3ODQyNSwgNzg0MjQsIDMyMzAsIDAsIDAsIDAsIDUyMDksIAorICAgIDI5NywgNTgxMCwgODUyMiwgODQxNSwgMTE5OTM3LCA3ODQyOSwgNzg0MjgsIDcwNzcsIDI0OTcsIDEyODY1MSwgOTYwLCAKKyAgICA3NDE1NiwgNjk4MSwgOTIzNzQsIDEyOTM4LCA0MjkyLCAwLCA3NDgxNSwgMTA1MTIsIDAsIDc0ODE0LCA3ODg3NSwgCisgICAgMTI3NTA1LCA3ODg3NiwgMjUwMywgNzM3NzgsIDE3NjIsIDY5Nzk0LCAyNDk1LCA3ODg3MywgNTg0NCwgNjgwMzEsIAorICAgIDExODgzOCwgMCwgMTI2NTQsIDQ2NjMsIDE4OTksIDc4ODc3LCAyNTA3LCA2NDEyMSwgODcyNiwgNjU1OTQsIDAsIDAsIDAsIAorICAgIDg4OTIsIDAsIDkyMzM5LCAwLCA5ODMwNzMsIDU3ODIsIDQyMCwgMCwgMCwgNDM3OTYsIDEwNzk3LCA2Mzc5NCwgMCwgMCwgCisgICAgNjQ4MTQsIDYzNzk2LCA3Nzk2NSwgMCwgNjY1ODEsIDExOTIwNCwgNDE2MDgsIDAsIDAsIDYzNzkyLCA0NjU5LCAxMjA3ODgsIAorICAgIDAsIDQzNjc2LCAwLCA2OTY3MywgMCwgMCwgMCwgMzI5LCA3Nzk2OCwgOTI3MDcsIDkxNzU0OCwgNzM5OSwgMCwgNDExODgsIAorICAgIDEzMjQ0LCAxMjA0NjYsIDQyMTY3LCA3NDM1LCA3ODE5MywgNTM4MCwgMTE5MDg2LCA2OTIyNSwgMTE1NSwgMTEzNjUsIAorICAgIDQzMTI2LCA3Nzk3MiwgMCwgNjU2ODQsIDAsIDU2MDEsIDY1MTkyLCA0Mjc2NSwgNjM3NTIsIDAsIDc5ODcsIDEyODU0MywgCisgICAgMTE3MiwgNjk3OTksIDY3ODYsIDQzNjAxLCAxMjA0NzYsIDc0MTI2LCA1NjAzLCAwLCA0NDczLCAwLCAxOTQ4MjMsIDAsIAorICAgIDY1MzQ3LCA2NTM0NiwgNjUzNDUsIDAsIDEyNzM4NCwgNTM0NywgNjk4MDIsIDk4MzYyMywgNzM4NjgsIDExODk0NCwgCisgICAgMTA1ODgsIDAsIDAsIDYzNzU1LCAwLCA1MzQzLCA3ODQyMiwgMTIwNjYxLCA0NTU1LCA1MzQxLCAwLCA3MDA3MSwgMTI4NjcwLCAKKyAgICA1MzUxLCA3ODY3NSwgNDMxMDQsIDY1MjQ0LCA5MTc4OTIsIDY0NTQxLCA0MjUxOSwgNzQ0NzIsIDAsIDAsIDc0NzY1LCAKKyAgICA5MTc4ODgsIDEyNzUxMCwgNjYzOCwgMCwgNjUxMTMsIDI3MSwgNzQxODAsIDY1MzcwLCA4ODM1LCA2NTM2OCwgMTI2NTMsIAorICAgIDY1MzY2LCA0MjE3MiwgNDEwODYsIDY1MzYzLCA2NTM2MiwgNjUzNjEsIDExOTEyLCA0MzQxMCwgMTEzMjMsIDY1MzU3LCAKKyAgICAxMTgwMCwgNjUzNTUsIDUzNDUsIDY1MzUzLCA2NTM1MiwgNjUzNTEsIDc2MSwgNjUzNDksIDE5OTU5LCA2OTcxOCwgNjM4NTYsIAorICAgIDEyNjYzNSwgMjQyMywgNzc5NTgsIDY0NjQ3LCA3Nzk1OSwgMTE5NTcsIDQ2OTksIDAsIDAsIDAsIDAsIDY0NjA1LCAwLCAwLCAKKyAgICAwLCA0OTE2LCAwLCAzODAsIDEwOTU4LCA2NjU2MywgNzc5NTUsIDY5NzczLCA5NzczLCAxMzE2NywgMTI5MTgsIDQxMDk2LCAKKyAgICA3Mzk4MCwgNjkyNDUsIDc4MjU0LCA5MTc4OTMsIDEwNjg0LCAwLCA5MTc4OTYsIDAsIDc5NDYsIDEyNTQxLCA4MTgyLCAKKyAgICA2NzU4NiwgNjk3ODAsIDAsIDAsIDAsIDAsIDkwMDUsIDEyMjUsIDY2MzAsIDAsIDAsIDAsIDY4MDExLCA4ODQ3LCAwLCAKKyAgICA2NTg3NiwgNTUzNSwgODMyOSwgNzQ1OTAsIDk4MzIwNiwgOTI2MDksIDAsIDAsIDMxMjcsIDI1OTUsIDY1NzEzLCA0MjAxMywgCisgICAgOTgzODQ5LCA1NjA3LCA0MTA4OSwgMCwgMCwgNzQyNTYsIDI2NjUsIDExMzA0LCA0Mzc1MSwgNzQyMDAsIDQ5NzAsIDg3NjQsIAogICAgIDEyMDQ1OSwgODkzNCwgOTI3MjYsIDQxNTY2LCA0NDkyLCAwLCA2NTAxMSwgNDEwOTAsIDAsIDAsIDExODgsIDcyNTQsIAotICAgIDExMDAsIDAsIDEyODMwMSwgNDEwODEsIDI5MTIsIDExNzQ5LCA2OTc5MiwgMCwgMCwgMzU3MiwgMTAwMjMsIDQ5NTksIAotICAgIDEzMDc5LCAwLCAwLCA5NzI5LCAwLCAwLCAwLCA0MzM2MSwgMCwgMCwgMTE4MDMsIDc5OTYsIDk5MDcsIDQxNDUwLCAxMzMwNCwgCi0gICAgMTI4MjkwLCAxMjcyNjAsIDQxNDUxLCAwLCAxMTA5NSwgODI3MywgMTI3NTMzLCAzNDUxLCAwLCA5NzIsIDQxNDUzLCAwLCAwLCAKLSAgICA3Mzg4MywgOTI0MDgsIDczOTQ1LCAwLCAzNDU1LCAxOTk1NSwgOTUzOCwgMCwgNjk4MDcsIDAsIDAsIDAsIDAsIDExMzk2LCAKLSAgICAwLCAxMTAxOSwgMCwgMCwgMCwgMTIwNTA3LCA0MTA3OCwgMCwgMjYxLCA1OTI3LCA3NzkxLCAwLCA2NDQ0NiwgMCwgMTA2OTYsIAotICAgIDAsIDYwNzMsIDk4MzgsIDExODkyMCwgMCwgNjA3NSwgMTI4NTYzLCAyODIsIDAsIDY0MzcsIDc0MDc4LCAxMjgwMDAsIAotICAgIDk4MDEsIDAsIDAsIDAsIDAsIDM0NzQsIDExODc4NywgMCwgMTIwNjU1LCA2MDgxLCAwLCAxMjc4NDMsIDc0MDc2LCA3ODg3OSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgODc1MSwgMTE0OTksIDEyMDI3MywgNzgxNiwgMTI2MzYsIDQ2NjUsIDEyNjI4LCA0NjcwLCAKLSAgICA5MjYwOCwgMTIwMjcyLCAwLCA5NjQyLCAxMDkxMiwgOTU4LCAwLCAxMTM4NywgNzg4NzgsIDQ2NjYsIDAsIDQ5MTUsIDAsIAotICAgIDQ2NjksIDAsIDY4MDk5LCAxMzI4NywgNDY2NCwgMTA4MzYsIDEyMDU1MCwgMCwgNjk3NzUsIDAsIDQzNTk1LCA3NDUwLCAwLCAKLSAgICA5MTc4NzUsIDg2NjQsIDk2OTcsIDM2MDYsIDkxNzg3MywgMCwgMCwgNjQ4MTUsIDEwNjMsIDEyMDI1MCwgMTIwMjUxLCAKLSAgICA5NzcyLCA3MjU1LCA4ODg2LCAxMzg5LCAxMjc5MzIsIDEyMDI1NywgMTIwMjU4LCAxMjAyNTksIDEyOTQxLCA0MjY2MSwgCi0gICAgOTIzODEsIDEyMDI1NSwgMTIwMjU2LCAxMjMwMSwgMTIwMjY2LCA2OTgyMCwgNDExMDIsIDY2NjA0LCAxMjAyNjIsIAotICAgIDEyMDI2MywgMTIwMjY0LCAxMDE3LCA2NjYwMCwgNTIzLCA1MDUsIDE0NDcsIDc0NDM2LCAwLCAwLCAwLCA4NjA4LCA0Mjc4OSwgCi0gICAgMTIwNjEzLCAxMjg3MDQsIDAsIDExOTE5NiwgMTEzMDcsIDY2NzA3LCA5MTc4NzEsIDEyNzc1MSwgMTE3NDUsIDc5MTksIDAsIAotICAgIDE2NDEsIDAsIDAsIDg5NjYsIDAsIDAsIDU5MDgsIDAsIDAsIDY3NDQsIDEyODM1NSwgMTY5OSwgNzQxOTEsIDc0ODQzLCAwLCAKLSAgICAwLCA2MzA2LCAxMDE2OSwgMCwgMTE5MjUxLCAxMDA2OCwgMzc2NiwgMjM4OSwgMTIwNDU2LCAxMjA0NTUsIDY2MTEsIDI1NywgCi0gICAgNDMxNzAsIDEzMTUzLCAwLCA0MjM4NiwgMCwgOTQzNiwgMjU5OSwgMCwgNjQ5NiwgOTQ0OSwgNTkzMCwgMTE0NzYsIDExMDMzLCAKLSAgICAxMTQ0NywgMTA1NDEsIDU2MjIsIDEyMDQzNiwgODQ3NywgMzc2MCwgMTcxOCwgOTQ0MiwgNjY0MzMsIDM3NzYsIDAsIAotICAgIDQxNDM1LCA0MzUyLCAwLCAyNDM1LCAxMjA4MDksIDU2MjEsIDEyMDM4NSwgNDIwMSwgMzc3OCwgNDIwMywgNDIwMiwgNDIwNSwgCi0gICAgNDIwNCwgMTIwNDQ3LCAzNzY4LCA2ODE0MiwgNzY1LCA0MTQ0MCwgMzc2NCwgODQ3MywgNjM3MywgODQ2OSwgMTIwNDM4LCAKLSAgICAxMjk0NywgNDU2NCwgMCwgMCwgNzQyNzEsIDczNzUzLCA4Mzc0LCAwLCAwLCA2ODI5LCA1MjI1LCAxMjg4MDcsIDEyNzM4NSwgCi0gICAgMCwgMCwgMTE5NjE1LCAwLCA3NDc5MywgNTYyNiwgNzM4MDcsIDExNzcxLCAwLCAxMjcyMzYsIDEyODAxOSwgMCwgNTM1MywgCi0gICAgNTYyNSwgNzQxNzksIDAsIDAsIDEwMTAsIDY0NTcyLCA0MTc4MCwgNDI2MjMsIDY0Mjc3LCAwLCA2OTUyLCAwLCAxMjA3NTIsIAotICAgIDc4NzYyLCAyNTkwLCA1NjI5LCA2NTU1MiwgNzU1MSwgMTAzMjUsIDU2MzIsIDEwNDcxLCAxMjAwMzgsIDEyMDAyNywgCi0gICAgMTIwMDI4LCAxMjAwMjUsIDU2MjgsIDEyMDAzMSwgOTcwLCAxMjAwMjksIDQ3NzIsIDI0MDAsIDU2MjcsIDEyMDAxNywgCi0gICAgMTIwMDE4LCAxMjAwMjMsIDY0Mjc1LCAxMjAwMjEsIDEwOTYxLCAwLCAyMDMsIDAsIDAsIDAsIDAsIDc4MzUwLCAwLCAKLSAgICA2NDM3OCwgNDIwNTQsIDAsIDAsIDU1NCwgMTE5NjQ5LCAxMTM1OCwgMCwgMTIxODIsIDQyMDQ4LCAxMTA2NSwgMTI3ODc4LCAKLSAgICA3Mzg5MSwgMCwgMCwgNTY5NCwgNzY4OSwgNjk3OTgsIDkzMjMsIDQzMjUsIDMwNDcsIDEwMzE3LCAxNzUsIDAsIDAsIAotICAgIDY5NzY0LCAwLCAwLCAxMjQzLCA0MjE1NCwgNTQzMSwgNjY1MiwgMCwgNjk3NzAsIDQzNjUxLCAwLCA2ODExOCwgMTI4MDI0LCAKLSAgICAxMTI5LCAwLCAwLCA2NTkwMCwgMTk4NiwgNzg0NiwgNzg4MDQsIDg2NjEsIDkxNzc3MiwgNjUyNTUsIDAsIDM4NDUsIDQ0OTAsIAotICAgIDExODk2OSwgNjY0OSwgNzQ0MDAsIDE0NTYsIDc1MzAsIDExOTc3LCA3MjQ5LCA4MzY2LCAwLCA3NzU2LCAxMjM0MiwgCi0gICAgMTI4NTY4LCA1MSwgNDE1MTYsIDAsIDg1NzAsIDk1NjgsIDkxNzg2MywgNDU2LCA3MDI2LCA4MTQ1LCAxMTY4LCA5MjUxLCAKLSAgICA5MDgyLCAxMTk5NjQsIDY0MDU1LCA0Mjc4MSwgMzg2NiwgMTIzMjMsIDQxNTEyLCA3MzgwNSwgNjgxMjEsIDAsIDQxNDk0LCAKLSAgICA5MjMxNiwgNDY2MCwgMCwgMTA0MDUsIDAsIDc4ODAzLCAwLCAwLCA0MjA0MCwgNzM5MTgsIDExOTYyNywgNzk0NCwgNDE0NTQsIAotICAgIDEyNjA1LCAwLCA0MjIwNSwgNDE0NTUsIDIzNiwgNjQwNTEsIDc4ODY3LCA4MjE0LCAwLCAwLCAwLCA0MTQ1NywgMCwgCi0gICAgMTE5NTg5LCAxOTY5LCAyMzg0LCA4MDk3LCA5MTc4NjQsIDAsIDEyNzM4MCwgNzgwMjksIDg3NjYsIDAsIDc4MDc5LCA1ODU0LCAKLSAgICAxMjc5NzQsIDEwNTgzLCAwLCAxMTk5ODksIDAsIDEwNDE2LCA5MTc4NjksIDM4NzIsIDkxNzg2OCwgMCwgODQyOSwgMCwgCi0gICAgMTE4ODA2LCAyODM4LCAxMjg4MDIsIDAsIDkxNzg2NiwgMCwgMCwgMCwgMCwgMCwgMTEwOTYsIDEyMDgxMywgMTA1NTMsIAotICAgIDE2NjIsIDg0ODMsIDEyMDM5NiwgNDM2MDUsIDU4OTIsIDQzNDE4LCAwLCA3Mzc0MiwgNjYsIDY1LCA2OCwgNjcsIDcwLCA2OSwgCi0gICAgNzIsIDcxLCA3NCwgNzMsIDc2LCA3NSwgNzgsIDc3LCA4MCwgNzksIDgyLCA4MSwgODQsIDgzLCA4NiwgODUsIDg4LCA4NywgCi0gICAgOTAsIDg5LCAxMTk4NjIsIDEwMzU3LCA3Mzg1LCA4MTcwLCAxNzA0LCA4NTU2LCAwLCA5NjU5LCAwLCAwLCAwLCA5NTU2LCAwLCAKLSAgICA0NTAzLCAxMTM1MywgOTY0NywgMCwgNzgxODUsIDAsIDAsIDkyNzEzLCA3ODg4NiwgMCwgMCwgNzQyMjksIDY2NTkzLCAKLSAgICA2NDM4LCA5MTc5NzksIDkxMDksIDc4ODgyLCAxMjg5LCA2NDU5OSwgMCwgMCwgMCwgNjU1MDcsIDI0NDcsIDAsIDAsIAotICAgIDEyODA0MiwgMCwgMCwgMCwgNjMzNCwgMCwgMCwgMTk5MzcsIDAsIDkyMzY4LCAwLCA1Njc1LCAyNTQsIDAsIDAsIDY5Njg2LCAKLSAgICA0MjQyNSwgODkxOCwgNjQwMDMsIDU3MTYsIDQyMzEyLCAwLCAwLCA2OTcyLCA0MjgyNiwgMCwgNDI0NjQsIDEyMDU2NywgMCwgCi0gICAgOTI2NDUsIDc0Nzk2LCA2NDQwMCwgNjQ2OTMsIDAsIDc3ODYxLCA2NTQyOSwgOTUxNSwgNDQzNSwgMCwgNDI1MjIsIDAsIDAsIAotICAgIDExNzg1LCAwLCA2NDY3MSwgNDE5NzgsIDE0MTIsIDQ1OTQsIDEzOTEsIDEwNTM2LCA4MDY3LCA5OTAxLCA3Nzc1LCAKLSAgICAxMjgyOTMsIDAsIDc0NTg4LCAxMjA3NDgsIDMxNDAsIDEyODg1NCwgNzk2MCwgNDMyNzEsIDAsIDEyNTE4LCAxMDkwOSwgCi0gICAgMTI3NTA4LCAxNDI4LCAxMjQ3MiwgMCwgMTI4Nzg3LCA3Njk5LCAxMjM5MywgMCwgMCwgMCwgNzQ1MTgsIDgyMjMsIDAsIAotICAgIDQyNjEsIDAsIDAsIDAsIDAsIDAsIDEyODMwMiwgMCwgMTI4MDQ2LCA0MzQxOSwgMCwgNjQ1NTQsIDEwNTc0LCAzODc4LCAwLCAKLSAgICA0MjM1MiwgMTc1MiwgNzM3ODUsIDAsIDQyNTA2LCAxMjg1NDEsIDEwMTk5LCAwLCAwLCAwLCA2NTkxOSwgMCwgNjY5NSwgCi0gICAgNzIwLCAzMjQsIDAsIDAsIDQzNDA2LCAwLCAxNDY0LCA0MDk4NSwgMCwgNzk3NCwgMCwgNDM0NzQsIDAsIDY0NDg4LCAwLCAwLCAKLSAgICA2NDA0MSwgNzQ3ODcsIDAsIDc4ODY1LCA5MjI1OCwgNjU1OTcsIDAsIDc4ODYzLCAwLCAxMzAyLCAwLCA3ODg2MSwgMCwgMCwgCi0gICAgMCwgNTIwNCwgNzQ3NzQsIDQzNDA0LCA0MzM5NiwgMCwgMzk5NSwgNjgzNjAsIDY1NjA4LCAzNzE0LCAwLCAwLCAwLCAKKyAgICAxMTAwLCAwLCAxMjgzMDEsIDQxMDgxLCAyOTEyLCAxMTc0OSwgNjk3OTIsIDAsIDY4MDE5LCAzNTcyLCAxMDAyMywgNDk1OSwgCisgICAgMTMwNzksIDAsIDk4MzI2OCwgOTcyOSwgMCwgMCwgMCwgNDMzNjEsIDAsIDAsIDExODAzLCA3OTk2LCA5OTA3LCA0MTQ1MCwgCisgICAgMTMzMDQsIDEyODI5MCwgMTI3MjYwLCA0MTQ1MSwgMCwgMTEwOTUsIDgyNzMsIDEyNzUzMywgMzQ1MSwgOTgzMzAxLCA5NzIsIAorICAgIDQxNDUzLCA5ODM0MzQsIDAsIDczODgzLCA2ODAyMiwgNzM5NDUsIDk4MzcyNiwgMjI4OCwgMTk5NTUsIDk1MzgsIDAsIAorICAgIDY5ODA3LCAwLCAwLCAwLCAwLCAxMTM5NiwgOTgzNDMyLCAxMTAxOSwgMCwgMCwgMCwgNjgwMjAsIDQxMDc4LCA3MTM2NSwgCisgICAgMjYxLCA1OTI3LCA3NzkxLCAwLCA3MzYyLCAwLCAxMDY5NiwgMCwgNjA3MywgOTgzOCwgMTE4OTIwLCAwLCA2MDc1LCAKKyAgICA5Mzk5NSwgMjgyLCAxMjY1MTAsIDY0MzcsIDc0MDc4LCAxMjgwMDAsIDk4MDEsIDAsIDc0MTc3LCAwLCAwLCAzNDc0LCAKKyAgICAxMTg3ODcsIDAsIDEyMDY1NSwgNjA4MSwgMCwgNzg4NzQsIDc0MDc2LCA3ODg3OSwgMCwgMCwgMCwgMCwgMCwgODc1MSwgCisgICAgMTE0OTksIDEyMDI3MywgNzgxNiwgMTI2MzYsIDQ2NjUsIDEyNjI4LCA0NjcwLCA5MjYwOCwgMTIwMjcyLCA2ODAxNywgCisgICAgOTY0MiwgMTA5MTIsIDk1OCwgMCwgMTEzODcsIDc4ODc4LCA0NjY2LCAwLCA0OTE1LCAwLCA0NjY5LCAwLCA2ODA5OSwgCisgICAgMTMyODcsIDQ2NjQsIDEwODM2LCAxMjA1NTAsIDAsIDY5Nzc1LCAwLCA0MzU5NSwgNzQ1MCwgMCwgOTE3ODc1LCA4NjY0LCAKKyAgICA5Njk3LCAzNjA2LCA5MTc4NzMsIDAsIDAsIDY0ODE1LCAxMDYzLCAxMjAyNTAsIDEyMDI1MSwgOTc3MiwgNzI1NSwgODg4NiwgCisgICAgMTM4OSwgMTI3OTMyLCAxMjAyNTcsIDEyMDI1OCwgMTIwMjU5LCAxMjk0MSwgNDI2NjEsIDkyMzgxLCAxMjAyNTUsIAorICAgIDEyMDI1NiwgMTIzMDEsIDEyMDI2NiwgNjk4MjAsIDQxMTAyLCA2NDQyOCwgMTIwMjYyLCAxMjAyNjMsIDEyMDI2NCwgMTAxNywgCisgICAgNjY2MDAsIDUyMywgNTA1LCAxNDQ3LCA3NDQzNiwgMCwgMCwgMCwgODYwOCwgNDI3ODksIDEyMDYxMywgMTI4NzA0LCAwLCAKKyAgICA3Mzg1NSwgMTEzMDcsIDY2NzA3LCA5MTc4NzEsIDEyNzc1MSwgMTE3NDUsIDc5MTksIDAsIDE2NDEsIDAsIDAsIDg5NjYsIDAsIAorICAgIDAsIDU5MDgsIDAsIDAsIDY3NDQsIDEyODM1NSwgMTY5OSwgNjk4NjEsIDc0ODQzLCA5MTc5MzMsIDAsIDYzMDYsIDEwMTY5LCAKKyAgICA3MTMyNCwgMTE5MjUxLCAxMDA2OCwgMzc2NiwgMjM4OSwgMTIwNDU2LCAxMjA0NTUsIDY2MTEsIDI1NywgNDMxNzAsIAorICAgIDEzMTUzLCAwLCA0MjM4NiwgMCwgOTQzNiwgMjU5OSwgMCwgNjQ5NiwgOTQ0OSwgNTkzMCwgMTE0NzYsIDExMDMzLCAxMTQ0NywgCisgICAgMTA1NDEsIDU2MjIsIDEyMDQzNiwgODQ3NywgMzc2MCwgMTcxOCwgOTQ0MiwgNjY0MzMsIDM3NzYsIDAsIDQxNDM1LCA0MzUyLCAKKyAgICA5ODM2MTAsIDI0MzUsIDEyMDgwOSwgNTYyMSwgMTIwMzg1LCA0MjAxLCAzNzc4LCA0MjAzLCA0MjAyLCA0MjA1LCA0MjA0LCAKKyAgICAxMjA0NDcsIDM3NjgsIDY4MTQyLCA3NjUsIDQxNDQwLCAzNzY0LCA4NDczLCA2MzczLCA4NDY5LCAxMjA0MzgsIDEyOTQ3LCAKKyAgICA0NTY0LCAwLCAwLCA3NDI3MSwgNzM3NTMsIDgzNzQsIDk4MzE1NiwgMCwgNjgyOSwgNTIyNSwgMTI4ODA3LCAxMjczODUsIDAsIAorICAgIDAsIDExOTYxNSwgMCwgNzQ3OTMsIDU2MjYsIDczODA3LCAxMTc3MSwgNzQwNzUsIDEyNzIzNiwgMTI4MDE5LCA0MjYxNCwgCisgICAgNTM1MywgNTYyNSwgNzQxNzksIDAsIDAsIDEwMTAsIDY0NTcyLCA0MTc4MCwgNDI2MjMsIDY0Mjc3LCA2OTk0MiwgNjk1MiwgCisgICAgOTgzMjY0LCAxMjA3NTIsIDc4NzYyLCAyNTkwLCA1NjI5LCA2NTU1MiwgNzU1MSwgMTAzMjUsIDU2MzIsIDEwNDcxLCAKKyAgICAxMjAwMzgsIDEyMDAyNywgMTIwMDI4LCAxMjAwMjUsIDU2MjgsIDEyMDAzMSwgOTcwLCAxMjAwMjksIDQ3NzIsIDI0MDAsIAorICAgIDU2MjcsIDEyMDAxNywgMTIwMDE4LCAxMjAwMjMsIDY0Mjc1LCAxMjAwMjEsIDg3ODYsIDAsIDIwMywgMCwgMCwgMCwgMCwgCisgICAgNzgzNTAsIDAsIDY0Mzc4LCA0MjA1NCwgMCwgMCwgNTU0LCAxMTk2NDksIDExMzU4LCAwLCAxMjE4MiwgNDIwNDgsIDExMDY1LCAKKyAgICAxMjY0NjQsIDczODkxLCAwLCAwLCA1Njk0LCA3Njg5LCA2OTc5OCwgOTMyMywgNDMyNSwgMzA0NywgMTAzMTcsIDE3NSwgMCwgCisgICAgMCwgNjk3NjQsIDAsIDAsIDEyNDMsIDQyMTU0LCA1NDMxLCA2NjUyLCAwLCA2OTc3MCwgNDM2NTEsIDAsIDY4MTE4LCAKKyAgICAxMjgwMjQsIDExMjksIDEyNjU3NCwgMCwgNjU5MDAsIDE5ODYsIDc4NDYsIDc4ODA0LCA4NjYxLCA5MTc3NzIsIDY1MjU1LCAKKyAgICAwLCAzODQ1LCA0NDkwLCAxMTg5NjksIDY2NDksIDc0NDAwLCAxNDU2LCA3NTMwLCAxMTk3NywgNzI0OSwgODM2NiwgMCwgCisgICAgNzc1NiwgMTIzNDIsIDEyODU2OCwgNTEsIDQxNTE2LCAwLCA4NTcwLCA5NTY4LCA3MTMxOCwgNDU2LCA3MDI2LCA4MTQ1LCAKKyAgICAxMTY4LCA5MjUxLCA5MDgyLCAxMTk5NjQsIDY0MDU1LCA0Mjc4MSwgMzg2NiwgMTIzMjMsIDQxNTEyLCA3MzgwNSwgNjgxMjEsIAorICAgIDAsIDQxNDk0LCA5MjMxNiwgNDY2MCwgMCwgMTA0MDUsIDAsIDc4ODAzLCAwLCAwLCA0MjA0MCwgNzM5MTgsIDExOTYyNywgCisgICAgNzk0NCwgNDE0NTQsIDEyNjA1LCAwLCA0MjIwNSwgNDE0NTUsIDIzNiwgNjQwNTEsIDc4ODY3LCA4MjE0LCAwLCAwLCAwLCAKKyAgICA0MTQ1NywgOTgzOTYxLCAxMTk1ODksIDE5NjksIDIzODQsIDgwOTcsIDkxNzg2NCwgNzQxMywgNjgwMTIsIDc4MDI5LCAKKyAgICA4NzY2LCAwLCA3ODA3OSwgNTg1NCwgMTI3OTc0LCAxMDU4MywgMCwgMTE5OTg5LCAwLCAxMDQxNiwgOTE3ODY5LCAzODcyLCAKKyAgICA5MTc4NjgsIDAsIDg0MjksIDAsIDExODgwNiwgMjgzOCwgMTI4ODAyLCAwLCA5MTc4NjYsIDAsIDAsIDAsIDk4Mzk1OCwgCisgICAgOTQwMDUsIDExMDk2LCAxMjA4MTMsIDEwNTUzLCAxNjYyLCA4NDgzLCAxMjAzOTYsIDQzNjA1LCA1ODkyLCA0MzQxOCwgMCwgCisgICAgNzM3NDIsIDY2LCA2NSwgNjgsIDY3LCA3MCwgNjksIDcyLCA3MSwgNzQsIDczLCA3NiwgNzUsIDc4LCA3NywgODAsIDc5LCAKKyAgICA4MiwgODEsIDg0LCA4MywgODYsIDg1LCA4OCwgODcsIDkwLCA4OSwgMTE5ODYyLCAxMDM1NywgNzM4NSwgODE3MCwgMTcwNCwgCisgICAgODU1NiwgMCwgOTY1OSwgMCwgMCwgMCwgOTU1NiwgMCwgNDUwMywgMTEzNTMsIDk2NDcsIDAsIDc4MTg1LCAwLCAwLCAKKyAgICA5MjcxMywgNzg4ODYsIDAsIDAsIDc0MjI5LCA2NjU5MywgNjQzOCwgOTE3OTc5LCA5MTA5LCA3ODg4MiwgMTI4OSwgNjQ1OTksIAorICAgIDAsIDY4MDA5LCAwLCA2NTUwNywgMjQ0NywgMCwgMCwgMTI4MDQyLCAxMjY1NDUsIDk4MzEzNywgMCwgNjMzNCwgMCwgMCwgCisgICAgMTk5MzcsIDAsIDkyMzY4LCAwLCA1Njc1LCAyNTQsIDAsIDAsIDY5Njg2LCA0MjQyNSwgODkxOCwgNjQwMDMsIDU3MTYsIAorICAgIDQyMzEyLCAwLCAwLCA2OTcyLCA0MjgyNiwgMCwgNDI0NjQsIDEyMDU2NywgMCwgOTI2NDUsIDc0Nzk2LCA2NDQwMCwgCisgICAgNjQ2OTMsIDAsIDc3ODYxLCA2NTQyOSwgOTUxNSwgNDQzNSwgMCwgNDI1MjIsIDAsIDY4MDA4LCAxMTc4NSwgNzQxMiwgCisgICAgNjQ2NzEsIDQxOTc4LCAxNDEyLCA0NTk0LCAxMzkxLCAxMDUzNiwgODA2NywgOTkwMSwgNzEwMywgMTI4MjkzLCA3MTAyLCAKKyAgICA3NDU4OCwgMTIwNzQ4LCAzMTQwLCAxMjg4NTQsIDc5NjAsIDQzMjcxLCAwLCAxMjUxOCwgMTA5MDksIDEyNzUwOCwgMTQyOCwgCisgICAgMTI0NzIsIDAsIDY5ODY0LCA3Njk5LCAxMjM5MywgMCwgMCwgMCwgNzQ1MTgsIDgyMjMsIDAsIDQyNjEsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEyODMwMiwgMCwgMTI4MDQ2LCA0MzQxOSwgMCwgNjQ1NTQsIDEwNTc0LCAzODc4LCAwLCA0MjM1MiwgMTc1MiwgCisgICAgNzM3ODUsIDAsIDQyNTA2LCAxMjg1NDEsIDEwMTk5LCAwLCAwLCA2ODAyMSwgNjU5MTksIDAsIDY2OTUsIDcyMCwgMzI0LCAwLCAKKyAgICAwLCA0MzQwNiwgOTgzNzI3LCAxNDY0LCA0MDk4NSwgMCwgNzk3NCwgMCwgNDM0NzQsIDAsIDY0NDg4LCAwLCAwLCA2NDA0MSwgCisgICAgNzQ3ODcsIDAsIDc4ODY1LCA5MjI1OCwgNjU1OTcsIDAsIDc4ODYzLCAwLCAxMzAyLCAwLCA3ODg2MSwgMTE5MTM0LCAwLCAwLCAKKyAgICA1MjA0LCA3NDc3NCwgNDM0MDQsIDExODM1LCAwLCAzOTk1LCA2ODM2MCwgNjU2MDgsIDM3MTQsIDkyMTkwLCAwLCAwLCAKICAgICAxMDk5OSwgMTE3NTAsIDAsIDQzMjUxLCA2ODY2MCwgNDMzMDEsIDAsIDEyMDU1NywgODEzMCwgODY3MiwgMTA4NDUsIAotICAgIDExOTY0LCAwLCAwLCAwLCAwLCA2ODQ1NSwgNDI4NjMsIDczODM5LCAwLCAwLCAwLCAwLCAwLCAwLCA0NjgsIDYxMiwgMCwgCi0gICAgNjQ0MDEsIDY2NDQ4LCA2ODM3NiwgMCwgMTY3NCwgMCwgNTgyMywgMCwgMTIyODAsIDAsIDU0MCwgNzQ1NjQsIDExOTAxNywgCi0gICAgMCwgODQzMiwgMCwgMTEwNzMsIDAsIDY0MzE2LCAwLCAwLCA4MjAsIDQxNzQxLCAwLCAxMjA2NjcsIDAsIDY0Njg0LCAKLSAgICAxMjY5OTIsIDMzNTksIDc4MDAsIDEyODY0NCwgNjUxNzcsIDYyMjYsIDM1MywgMTIzOTYsIDAsIDExOTYxMiwgNjQ3NDIsIAotICAgIDEyODY4MiwgMTIwMjgyLCAwLCAwLCAxMjQxMiwgMTk5NDEsIDAsIDEyMDI3NywgNzg4NDcsIDE4ODQsIDk0ODEsIDQyNDE4LCAKLSAgICAwLCA0MTE1NywgMCwgMTE5NSwgNjQ4OTgsIDc5MjQsIDAsIDQxMTUxLCAyMDEwLCAwLCA0MTMyOCwgNDIzNDQsIDAsIAotICAgIDEyNDA5LCAwLCA0MzYwLCAxMjcwMDksIDk3MzksIDAsIDc0MzkyLCA3MzkyMSwgMCwgNDI1MjEsIDg1MzksIDAsIDAsIAotICAgIDExODk4NiwgMCwgNDc4OCwgMCwgMCwgNjU3MzQsIDAsIDQzNzkwLCAwLCAxMzA3NSwgNzQ0MjksIDAsIDY0NTY5LCA0MzUzMiwgCi0gICAgMTA4MzcsIDI0OTIsIDEyNzE5NywgMTE4OTAxLCA2ODYzNywgNDExMzYsIDQzNzg1LCAxMTgxMywgOTY0OSwgNDExNTQsIAotICAgIDExOTYxNywgNTEyOCwgNDAzOCwgNDExNDMsIDY1NjA0LCA2NDg1OSwgNDE1OTIsIDY3NzEsIDE2NDgsIDU0MzUsIDAsIAotICAgIDY3MzQsIDQxMzQzLCAxMTk4NDgsIDY1NDM5LCAxMjcwOSwgNjk4NiwgOTIzNjQsIDAsIDAsIDQxMzQ5LCAxMTkxMjMsIAotICAgIDEyNTgxLCAxMDM3NCwgNTE3NSwgMCwgNzM4MDYsIDEwMjU0LCAwLCAxMDI3OCwgMTAyNjIsIDc3OTUwLCA0MTM0NiwgMCwgCi0gICAgNjA3LCAwLCAxMTk4NTMsIDEyODg0NiwgMTI5MjMsIDEwMzE0LCAxMDI4MiwgNjU0NzcsIDEwMzc4LCAxMjAyOTcsIDQwOTc2LCAKLSAgICA4MjY1LCAwLCAxMTk4MzQsIDQwOTc1LCA1ODQwLCA0MjgzOCwgMCwgNDA5NzgsIDAsIDExOTg0MCwgMCwgMCwgMCwgNjY0NDQsIAotICAgIDEwNTM4LCAwLCAyNTUwLCAxMTk4MzYsIDY3NzksIDAsIDAsIDM1MjUsIDY4MjQsIDExODg4NiwgMCwgMCwgNTYxOSwgCi0gICAgNjU4MjIsIDAsIDE5NDg4MiwgNzQ1NSwgMCwgNTYxNiwgMTE0ODYsIDk2NTYsIDAsIDAsIDEwNzI3LCA1NjE1LCAwLCAKLSAgICAxMjA1NTEsIDQyMzgwLCA2NDg5NSwgNDM2OTMsIDY2NDUxLCA4MDgsIDU0NTUsIDExMzQ3LCAwLCAxMDI2LCA1NjIwLCAKLSAgICAxOTQ4ODcsIDAsIDExMzUwLCA1NjE3LCAwLCA5MjI1LCA2NDYzOSwgMTI3MDczLCA5MTQ1LCAxMjgwNjAsIDEzMzgsIAotICAgIDEyMDU4MSwgMCwgMTI3MzksIDQ2MDMsIDMwODQsIDAsIDkyNDg0LCA5ODU4LCA2MDM3LCAwLCAzOTc0LCA3ODIxMywgCi0gICAgMTAyOTAsIDAsIDMwODMsIDEwMzIyLCAwLCAwLCAwLCA0MTAzNiwgMCwgMCwgNDMzMjEsIDY1NjA2LCAwLCA0MTAzMiwgCi0gICAgNDIzODgsIDAsIDY0NzAwLCAxMDAxMSwgMTQ0NSwgNDA5NjEsIDAsIDE5NDg5MywgMCwgNDA5NjAsIDAsIDE5NDg5MSwgMCwgCi0gICAgNDA5NjMsIDY0OTUyLCAxMDQwMiwgMCwgMCwgOTIzMDQsIDEwNjAzLCAwLCAwLCAwLCAwLCA2NzE0LCAxMDA4MywgMTI3MDY5LCAKLSAgICAxOTQ4OTUsIDc4MzY3LCAxMjczNzcsIDAsIDAsIDkwNzMsIDQyNTg1LCA2NDMwMiwgMTA3MDQsIDY1MDMwLCA0Nzg3LCAwLCAKLSAgICA3NDgyOSwgMCwgNjU0MjMsIDAsIDEyODExOCwgOTU3MCwgMCwgOTUyNSwgMjY4OSwgOTE3NjI2LCA2NTQyNiwgMCwgCi0gICAgOTE3NjI0LCA0Mzc0MCwgMCwgNDA5NjYsIDkxNzYyMywgMTMyODYsIDM5OTgsIDQyNTk4LCA0MjU5NiwgNTAzLCA3NDIzNywgCisgICAgMTE5NjQsIDAsIDk4MzE4NSwgMCwgMCwgNjg0NTUsIDQyODYzLCA3MzgzOSwgMCwgMCwgMCwgMCwgMTI2NjI5LCAwLCA0NjgsIAorICAgIDYxMiwgMCwgNjQ0MDEsIDY2NDQ4LCA2ODM3NiwgMCwgMTY3NCwgMCwgNTgyMywgOTgzMTYzLCAxMjI4MCwgMCwgNTQwLCAKKyAgICA3NDU2NCwgMTE5MDE3LCAwLCA4NDMyLCAwLCAxMTA3MywgMCwgNjQzMTYsIDAsIDAsIDgyMCwgNDE3NDEsIDAsIDEyMDY2NywgCisgICAgMCwgNjQ2ODQsIDEyNjk5MiwgMzM1OSwgNzgwMCwgNjk5MzQsIDY1MTc3LCA2MjI2LCAzNTMsIDEyMzk2LCAwLCAxMTk2MTIsIAorICAgIDY0NzQyLCAxMjg2ODIsIDEyMDI4MiwgMCwgOTgzNDQyLCAxMjQxMiwgMTk5NDEsIDAsIDEyMDI3NywgNzg4NDcsIDE4ODQsIAorICAgIDk0ODEsIDQyNDE4LCA3MDA1OSwgNDExNTcsIDAsIDExOTUsIDY0ODk4LCA3OTI0LCAwLCA0MTE1MSwgMjAxMCwgMCwgCisgICAgNDEzMjgsIDQyMzQ0LCAwLCAxMjQwOSwgMCwgNDM2MCwgMTI3MDA5LCA5NzM5LCAxMjg1NTAsIDY5OTMzLCA3MzkyMSwgMCwgCisgICAgNDI1MjEsIDg1MzksIDk4MzcxNiwgMCwgMTE4OTg2LCAwLCA0Nzg4LCAwLCA2ODAyMywgNjU3MzQsIDk4MzQ0NywgNDM3OTAsIAorICAgIDAsIDEzMDc1LCA3NDQyOSwgOTQwNjMsIDY0NTY5LCA0MzUzMiwgMTA4MzcsIDI0OTIsIDEyNzE5NywgMTE4OTAxLCA2ODYzNywgCisgICAgNDExMzYsIDQzNzg1LCAxMTgxMywgOTY0OSwgNDExNTQsIDExOTYxNywgNTEyOCwgNDAzOCwgNDExNDMsIDY1NjA0LCAKKyAgICA2NDg1OSwgNDE1OTIsIDY3NzEsIDE2NDgsIDU0MzUsIDkxNzgzNywgNjczNCwgNDEzNDMsIDExOTg0OCwgNjU0MzksIAorICAgIDEyNzA5LCA2OTg2LCA5MjM2NCwgNjgwMTUsIDAsIDQxMzQ5LCA3MDAyMSwgMTI1ODEsIDEwMzc0LCA1MTc1LCAwLCA3MzgwNiwgCisgICAgMTAyNTQsIDAsIDEwMjc4LCAxMDI2MiwgNjk4NTgsIDQxMzQ2LCAwLCA2MDcsIDAsIDExOTg1MiwgMTI4ODQ2LCAxMjkyMywgCisgICAgMTAzMTQsIDEwMjgyLCA2NTQ3NywgMTAzNzgsIDEyMDI5NywgNDA5NzYsIDgyNjUsIDAsIDExOTgzNCwgNDA5NzUsIDU4NDAsIAorICAgIDQyODM4LCAwLCA0MDk3OCwgOTgzODg4LCAxMTk4NDAsIDAsIDk4MzA3MSwgMCwgNjY0NDQsIDEwNTM4LCAwLCAyNTUwLCAKKyAgICAxMTk4MzYsIDY3NzksIDAsIDAsIDM1MjUsIDY4MjQsIDExODg4NiwgMCwgMCwgNTYxOSwgNjU4MjIsIDEyNjU2NywgCisgICAgMTk0ODgyLCA3NDU1LCAwLCA1NjE2LCAxMTQ4NiwgOTY1NiwgMCwgMCwgMTA3MjcsIDU2MTUsIDAsIDEyMDU1MSwgNDIzODAsIAorICAgIDY0ODk1LCA0MzY5MywgNjY0NTEsIDgwOCwgNTQ1NSwgMTEzNDcsIDAsIDEwMjYsIDU2MjAsIDE5NDg4NywgMCwgMTEzNTAsIAorICAgIDU2MTcsIDAsIDkyMjUsIDY0NjM5LCAxMjcwNzMsIDkxNDUsIDEyODA2MCwgMTMzOCwgMTIwNTgxLCA5ODMxNTgsIDEyNzM5LCAKKyAgICA0NjAzLCAzMDg0LCA5ODMxNTUsIDkyNDg0LCA5ODU4LCA2MDM3LCAwLCAzOTc0LCA3ODIxMywgMTAyOTAsIDk4MzY5NSwgCisgICAgMzA4MywgMTAzMjIsIDAsIDAsIDAsIDQxMDM2LCAwLCAwLCA0MzMyMSwgNjU2MDYsIDAsIDQxMDMyLCA0MjM4OCwgMCwgCisgICAgNjQ3MDAsIDEwMDExLCAxNDQ1LCA0MDk2MSwgMCwgMTE5MTA1LCAwLCA0MDk2MCwgMCwgMTk0ODkxLCAwLCA0MDk2MywgCisgICAgNjQ5NTIsIDEwNDAyLCAwLCAwLCA5MjMwNCwgMTA2MDMsIDAsIDAsIDk4MzExMywgMCwgNjcxNCwgMTAwODMsIDEyNzA2OSwgCisgICAgMTk0ODk1LCA3ODM2NywgMTI3Mzc3LCAwLCA5Mzk2MywgOTA3MywgNDI1ODUsIDY0MzAyLCAxMDcwNCwgNjUwMzAsIDQ3ODcsIAorICAgIDAsIDc0ODI5LCAwLCA2NTQyMywgMCwgMTI4MTE4LCA5NTcwLCA1NTI2MCwgOTUyNSwgMjY4OSwgOTE3NjI2LCA2NTQyNiwgMCwgCisgICAgOTE3NjI0LCA0Mzc0MCwgMCwgNDA5NjYsIDkxNzYyMiwgMTMyODYsIDM5OTgsIDQyNTk4LCA0MjU5NiwgNTAzLCA3NDIzNywgCiAgICAgODczNSwgMjY5MCwgNjY0ODgsIDQyODM2LCAxMjcxNTAsIDQxOTU0LCA5MTc2MTcsIDE2NTIsIDc3MiwgNjY4OCwgODMxMCwgCiAgICAgNjU0MjgsIDM0ODcsIDQzNDE2LCAzNTg1LCAxMDE5NCwgNDMzMjAsIDExOTE1OSwgMTI4MTgzLCAxOTQ4NzQsIDY0NjgsIAotICAgIDQxOTc2LCA5NzIwLCA5MTc2MDYsIDExNzY3LCA0MTk3MCwgMCwgNTgzNiwgMTIzNTgsIDAsIDQzNTUsIDkwNDgsIDEyMTgwLCAKLSAgICA2NTAyNywgNjQ2ODAsIDEzMDM4LCA0MzY5OSwgMCwgNDE0ODgsIDEyODA4NywgODUyNywgMTk0OTE3LCAxMjM2MiwgMTI0MzUsIAotICAgIDEyMzYwLCA0MTA1MywgMzI2NiwgMCwgMTIzNTYsIDg2MTYsIDQxNDY2LCAwLCA5MjU4OCwgMTE0NTAsIDAsIDM2MzgsIAotICAgIDEyMzU0LCAwLCAzMjE2LCAwLCAyMzU4LCA5MjYwNiwgODYzMywgMCwgMCwgMTE5MTgyLCA2OTI0NCwgMCwgMCwgMTE3NTksIAotICAgIDE5NDkwMywgNjM2OCwgNzQ4MjMsIDAsIDQxNDIzLCA4MDc4LCAxMDUwNCwgMCwgNDE2OTgsIDQyMjM3LCAwLCA3MDAyLCAwLCAKLSAgICA0MTQzMCwgNDIyNjcsIDQxMDUxLCA0MTQ4NCwgMCwgMCwgNDEwNTAsIDQxNDczLCAxMDQ2NiwgMTMwOTksIDAsIDAsIDAsIAotICAgIDY0MzUsIDAsIDExMzYyLCAwLCAwLCA2NTM4MiwgMCwgNDE0MjAsIDAsIDM2MjUsIDc4MTU3LCA0MTQwOSwgMCwgNjk2MzksIAotICAgIDIwNDEsIDkxNzgsIDk2NzIsIDQxNDI3LCA0MzU0MSwgNDMzMTcsIDAsIDAsIDAsIDQxNDI0LCA5MTc1OTgsIDEyMDU0NiwgMCwgCi0gICAgMTI4MjEyLCAwLCA0MTQxNywgMTI2MSwgMCwgMCwgMTIxMDIsIDExOTY2MiwgNDE0MDEsIDAsIDEyNzUzOCwgMCwgNzgyNTEsIAotICAgIDAsIDQyMjkwLCAzMjc1LCA5MjQ3MiwgNDIzMjksIDc0NzU5LCAwLCAwLCAwLCA5MjM4OCwgNjk2NDksIDEwOTg5LCA3NDIzNCwgCi0gICAgMCwgMTA1OTgsIDc0MTAsIDI2NjksIDkwMywgMCwgMjkyMCwgMCwgMTI3MjMyLCA3NDYwMywgNjQ1MDQsIDE5OTI4LCAwLCAwLCAKLSAgICAzOTE3LCAwLCAxMTczMiwgMCwgMCwgNDE0NDgsIDQxNDYxLCAxMjg4MjMsIDAsIDEyNzkxMiwgMCwgODgxOSwgMTI2NjMsIDAsIAotICAgIDQxMTg0LCA3NDAxNCwgMjMyLCA3NDgzNSwgMTIwNjQ2LCA5MTY4LCA2NTc4NiwgMCwgMCwgMCwgOTA5NCwgMCwgMTE3NTgsIAotICAgIDY4NDI1LCAwLCAxMDY0LCA0MjQ2NywgMTI4MDQ0LCAxMDExNSwgMTk5MjQsIDkyNzExLCAwLCA3ODYyLCA2NDU1MSwgCi0gICAgMTMyMjQsIDg1MTYsIDQxODYyLCA2NjY1MCwgNzU2MSwgNzg2MTgsIDY5NzkzLCAxODc4LCAwLCAwLCAyOTExLCAwLCAKLSAgICA0MTE3OCwgNTQyNywgNjQ4MjMsIDAsIDAsIDM3ODcsIDQxMTc0LCAwLCA0MTQ1OCwgMCwgNDE0NjMsIDQyNDEzLCAxMTI5MiwgCi0gICAgMjQwNiwgNzc1LCAwLCA2NTU4NCwgMCwgNjA3NCwgOTYxOCwgMTI4NjY4LCAwLCA0MzQ0MCwgMCwgMTk0OTAxLCA0MTQzNiwgCi0gICAgMzY1NiwgMCwgMTk0ODk5LCA0MTQ1NiwgMCwgMTU5OSwgMTEzMzMsIDAsIDY3MDMsIDg1MTMsIDAsIDE2MTMsIDAsIDY4NDU2LCAKLSAgICAxMjU5OCwgMCwgMTIwNzM0LCA3ODc0NSwgNzQ1MDAsIDQxNDYwLCAxMDE0NSwgMTA1NDIsIDk5MzcsIDc4NzQ2LCAwLCAKKyAgICA0MTk3NiwgOTcyMCwgOTE3NjA2LCAxMTc2NywgNDE5NzAsIDE5NDU5NiwgNTgzNiwgMTIzNTgsIDAsIDQzNTUsIDkwNDgsIAorICAgIDEyMTgwLCA2NTAyNywgNjQ2ODAsIDEzMDM4LCA0MzY5OSwgMCwgNDE0ODgsIDEyODA4NywgODUyNywgMTk0OTE3LCAxMjM2MiwgCisgICAgMTI0MzUsIDEyMzYwLCA0MTA1MywgMzI2NiwgMCwgMTIzNTYsIDg2MTYsIDQxNDY2LCAwLCA5MjU4OCwgMTE0NTAsIDAsIAorICAgIDM2MzgsIDEyMzU0LCAwLCAzMjE2LCAwLCAyMzU4LCA5MjYwNiwgODYzMywgMCwgOTgzNzM2LCAxMTkxODIsIDY5MjQ0LCAwLCAKKyAgICAwLCAxMTc1OSwgMTk0OTAzLCA2MzY4LCA3NDgyMywgMCwgNDE0MjMsIDgwNzgsIDEwNTA0LCAxMjc1NTgsIDQxNjk4LCAKKyAgICA0MjIzNywgMCwgNzAwMiwgOTgzNjY5LCA0MTQzMCwgNDIyNjcsIDQxMDUxLCA0MTQ4NCwgMCwgMCwgNDEwNTAsIDQxNDczLCAKKyAgICAxMDQ2NiwgMTMwOTksIDAsIDAsIDAsIDY0MzUsIDAsIDExMzYyLCAwLCAwLCA2NTM4MiwgMCwgNDE0MjAsIDAsIDM2MjUsIAorICAgIDc4MTU3LCA0MTQwOSwgMCwgNjk2MzksIDIwNDEsIDkxNzgsIDk2NzIsIDQxNDI3LCA0MzU0MSwgNDMzMTcsIDAsIDAsIDAsIAorICAgIDQxNDI0LCA5MTc1OTgsIDEyMDU0NiwgMCwgMTI4MjEyLCAwLCA0MTQxNywgMTI2MSwgMCwgMCwgMTIxMDIsIDExOTY2MiwgCisgICAgNDE0MDEsIDAsIDEyNzUzOCwgMCwgNzgyNTEsIDAsIDQyMjkwLCAzMjc1LCA5MjQ3MiwgNDIzMjksIDc0NzU5LCAwLCAwLCAwLCAKKyAgICA5MjM4OCwgNjk2NDksIDEwOTg5LCA3NDIzNCwgOTgzMTQwLCAxMDU5OCwgNzQxMCwgMjY2OSwgOTAzLCAwLCAyOTIwLCAwLCAKKyAgICAxMjcyMzIsIDc0NjAzLCA2NDUwNCwgMTk5MjgsIDAsIDAsIDM5MTcsIDAsIDExNzMyLCAwLCA5ODMxODAsIDQxNDQ4LCAKKyAgICA0MTQ2MSwgMTI4ODIzLCAwLCAxMjc5MTIsIDAsIDg4MTksIDEyNjYzLCAwLCA0MTE4NCwgNzQwMTQsIDIzMiwgNzQ4MzUsIAorICAgIDEyMDY0NiwgOTE2OCwgNjU3ODYsIDAsIDAsIDAsIDkwOTQsIDAsIDExNzU4LCA2ODQyNSwgMCwgMTA2NCwgNDI0NjcsIAorICAgIDEyODA0NCwgMTAxMTUsIDE5OTI0LCA5MjcxMSwgMCwgNzg2MiwgNjQ1NTEsIDEzMjI0LCA4NTE2LCA0MTg2MiwgNjY2NTAsIAorICAgIDc1NjEsIDc4NjE4LCA2OTc5MywgMTg3OCwgMCwgOTgzMjYxLCAyOTExLCAwLCA0MTE3OCwgNTQyNywgNjQ4MjMsIDAsIDAsIAorICAgIDM3ODcsIDQxMTc0LCAwLCA0MTQ1OCwgMCwgNDE0NjMsIDQyNDEzLCAxMTI5MiwgMjQwNiwgNzc1LCAwLCA2NTU4NCwgCisgICAgNjk5MjMsIDYwNzQsIDk2MTgsIDEyODY2OCwgOTgzOTQzLCA0MzQ0MCwgMCwgMTk0OTAxLCA0MTQzNiwgMzY1NiwgMCwgCisgICAgMTIwNjAwLCA0MTQ1NiwgMCwgMTU5OSwgMTEzMzMsIDAsIDY3MDMsIDg1MTMsIDAsIDE2MTMsIDAsIDY4NDU2LCAxMjU5OCwgCisgICAgOTgzMTkxLCAxMjA3MzQsIDc4NzQ1LCA3NDUwMCwgNDE0NjAsIDEwMTQ1LCAxMDU0MiwgOTkzNywgNzg3NDYsIDcwMDI5LCAKICAgICA5OTA1LCAwLCA2NTczMCwgMCwgMTIwMzc0LCA4NDI3LCAxMjAzNzUsIDU1MjQ2LCAxMjAzNzYsIDAsIDExNDk3LCA2NDY4NywgCiAgICAgNzQwMDgsIDQyNTkyLCAzODcxLCAwLCAxMjgzMDUsIDkxMTEsIDU3NDEsIDAsIDE5NDg0NiwgMTIwMzY2LCAxMTkxMTEsIAogICAgIDEyMDc0NSwgMCwgMTIwMzY4LCAwLCAxMTY0OCwgMCwgMTk0ODczLCAxMjAzNjQsIDQxNTg3LCAxMjAzNjUsIDAsIDc0MzIyLCAKICAgICA0MjExMywgMCwgMTI3MTU1LCAxMjE3MiwgMCwgNzQ1MzAsIDY1Mjk4LCA2NTcyMywgMTk0ODQwLCA3Mzg3MSwgNjU3MjQsIAotICAgIDc5MjgsIDEyMDM1NCwgMCwgNDE1OTUsIDczNzMwLCAwLCA0MjExOCwgNzM4MzAsIDY2MDQyLCAxMDM1NSwgMCwgNzg3NSwgMCwgCi0gICAgNDE1OTgsIDM5OTMsIDAsIDE1NDUsIDQwOTcxLCA1MzYsIDEyODUyMSwgNDMwMjksIDAsIDAsIDY1MTczLCA2NTI4NiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNDEzNzUsIDU0MDIsIDAsIDAsIDE2ODcsIDEyMDUwMywgMCwgMCwgNzgxOTQsIDY0MzI2LCAKLSAgICA0MDk2OSwgMTA1MjYsIDc4NzUzLCA4MzIzLCA0MDk2OCwgMTMzOSwgMTE3MzEsIDc4NzU2LCAwLCA2NTQ2MCwgMTIyNDIsIAotICAgIDEyODUxMywgODAyMCwgMTA4NDMsIDExNTU0LCAwLCAwLCA4MjY2LCA0MTAwNiwgNjU3MjIsIDAsIDEwNzEwLCAwLCAKLSAgICAxMTg5NDIsIDY3NjY3LCA2NDU2NywgMTE5MTU1LCAxOTUwOTEsIDAsIDExOTYzNiwgNjc4NTcsIDEyMDY4NywgMCwgMCwgCi0gICAgMTE3NTUsIDY2MzA1LCAwLCAwLCAxMDkxNywgMTIwNzY3LCAwLCAxMTI3MiwgMjA0MCwgNDEyNDcsIDQxMzI2LCAxOTUwNjAsIAotICAgIDE3NDEsIDQyMzcwLCAxMjI3LCAwLCAwLCAxMTQxMywgMCwgMCwgNTI4MywgMTU4NiwgNDk3OCwgMCwgMTk4NCwgMTk0NjIxLCAKLSAgICAwLCA5MjI5MywgNDA5ODQsIDEyODMwNiwgOTM3MywgMCwgMTI5MTYsIDYyODQsIDAsIDQxNjYzLCAwLCAwLCAwLCA5MjM3LCAKLSAgICA5Mzg1LCA0MTY0OCwgMCwgMCwgMCwgNDE2NjYsIDE4MzAsIDczNzgzLCAyMDU2LCA0MTI4NywgOTI2MTAsIDAsIDAsIAotICAgIDQyMjE5LCAxMjgyNTcsIDAsIDQxOTg3LCA0MTY3NiwgMCwgMTIwODIzLCAwLCA0MTY3MCwgMCwgOTI1OTAsIDI3OTYsIAotICAgIDU1MjkxLCAxMTY4MywgOTkwMiwgNzQ1MjEsIDAsIDExNDUxLCAwLCAxMjg4MjIsIDQyNjMxLCAyMzU5LCAwLCA2Nzg0NCwgCi0gICAgNzQxNjQsIDQxMjM4LCA1NDgsIDExNDA1LCAxMzEzMywgNjQzNjgsIDAsIDEyODc5NSwgMCwgMzk3LCA0MzYyMiwgNDIxMzksIAotICAgIDk1NDcsIDk1OTAsIDEyODIzOCwgMTYxNCwgNDM2NjEsIDY0MzU2LCA2NjMwNywgNjY1MSwgMTM1OCwgMCwgNDI4LCA5NjIwLCAKLSAgICAxNDY2LCA3ODExMiwgMTA5ODIsIDExODgzMSwgMTMzMywgNzEwNCwgNDA3LCA2NDI1LCAxMjg4MzQsIDc0MjUzLCAwLCAwLCAKLSAgICAwLCA1ODA0LCAxMTk3NiwgODU1NCwgOTI3MjEsIDAsIDAsIDkwNTcsIDQyMjk0LCA0MTIxOCwgMCwgMCwgNzgxMzcsIDE4ODMsIAotICAgIDEwOTUyLCA4MDQ4LCA3ODE0MiwgNDEyMjUsIDkyNjIxLCA0MjkxNSwgMCwgMTI4Njg0LCAwLCA0NDA3LCAwLCA2NTgwOSwgCi0gICAgMTE5MDc0LCAxOTQ4MjEsIDg0NDgsIDcxNDEsIDc0MTgzLCAwLCAxMjY3NSwgMTI2NTksIDAsIDQyMzYzLCAxMjA2MjQsIAotICAgIDE5NDgyNCwgNTUyNzMsIDEwNzY2LCAxMjAxMiwgMjM4NiwgNjQ3MzIsIDkxNzAsIDkxNzgyMSwgOTEyMywgNjQ1ODUsIAotICAgIDEyMDUwMCwgMCwgNzE0MCwgMTA5NzcsIDEyNzM3OCwgNDE2NCwgOTA4MSwgMCwgMTIwNTY5LCA0MjA0OSwgNDIwNDIsIAotICAgIDg3MDksIDEyODI4MywgMCwgMTIwNjM3LCA0MjQxOSwgNjQ3OTksIDQyMDQ3LCAwLCAwLCA4NDcwLCAxMTgwNywgNjU4OTcsIAotICAgIDU3NywgMCwgMCwgNzQzMDAsIDAsIDEyNzMwOCwgNzQ4NDAsIDAsIDAsIDEyODc5MSwgOTIyMjQsIDg3MzYsIDE0MTQsIAotICAgIDQyNjQzLCA5NjgzLCA0MzQ4NiwgNzQzNDQsIDAsIDI1MzYsIDAsIDY2MzMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjMxNywgCi0gICAgOTE3NjEyLCA2NjMxNSwgMjEwNiwgMTIwMjIyLCAxMTI3MywgMCwgNDMwMDQsIDc1NDEsIDAsIDAsIDk2MSwgNjQzMDcsIAotICAgIDY2MzI0LCA2NDkwNiwgMTI4NTkxLCAzMTA2LCA2NTkxNywgNDEyODQsIDE2OTYsIDAsIDg5MSwgMTIxMDUsIDAsIDQyNjI0LCAKLSAgICAxMjgwMiwgMzI2NCwgODgyNCwgMTMyNjgsIDQzMDAzLCAxMDkzNiwgMCwgMCwgMCwgMTk0ODI2LCA5MjY4OCwgMCwgMjMyMiwgCi0gICAgMTIwMzcxLCAwLCAxMTQ0OSwgMTI4MTg3LCA0Mjg2OCwgNDEyODUsIDM1NDcsIDAsIDAsIDAsIDAsIDQzMjE2LCA2MDg5LCAKLSAgICA3ODY4MiwgMCwgMTIwNTc4LCA0MTcwLCAxMDI5LCAxMjc3NjEsIDEyNzAzNiwgMTE5MjI0LCA0MjM3NCwgMCwgNzQ0LCAwLCAKLSAgICAwLCAwLCA2NTgyMywgMTI3ODI2LCAwLCAzNTUxLCAwLCAwLCA0NjIzLCA1NTI2OCwgMCwgNDU5OCwgMCwgNjUxMzYsIAotICAgIDEyNzEzNiwgMCwgMCwgMTA4NTEsIDAsIDYxNzksIDkyNjAyLCA2MTgwLCAwLCAxMTk1MiwgMTIwNzc4LCA3ODY0OCwgCi0gICAgMTE5NzIsIDc4NjQ2LCA3ODY0NywgNzg2NDQsIDc4NjQ1LCAxNzcsIDc4NjQzLCA2MTc2LCAxMjA1ODAsIDAsIDAsIDYxNzcsIAotICAgIDkwMjAsIDc4NjUyLCA3ODY1MywgNjE3OCwgMTIwMjQ5LCAxMjAyNDIsIDEyODAyNywgNjc2NzMsIDc1MTgsIDg3NTQsIDAsIAotICAgIDEyMDIzNywgMjEzNywgNDMwODEsIDAsIDAsIDkxMzYsIDEyMDI0MCwgNDQwMSwgNDEyODAsIDAsIDg5NzQsIDIzMDgsIDAsIAotICAgIDc0MTQ5LCAwLCAyMzE4LCAwLCA2NjM2MSwgODE5OCwgMCwgNjQzNjAsIDEyNjAxLCA0MjUzNiwgNjUyNjYsIDEyMDgyNywgCi0gICAgNzQzMDcsIDAsIDY5NzAsIDU0MDQsIDQzMzMyLCAzNjY3LCA3OTM2LCAxMjkyNSwgMTI2OTg5LCA2Mzg1LCAwLCAwLCAKLSAgICAxMTg5NDksIDEwODc0LCA2NTUwNSwgMTI4MDgzLCAwLCA0MjA1MywgMjA3NSwgNDIwNTcsIDExMDgzLCA0MjA1MiwgMCwgMCwgCi0gICAgNjc2NTEsIDAsIDk2NjUsIDkyMzAwLCAwLCAxMzE4MSwgMCwgMCwgMCwgMCwgNzQxNDgsIDAsIDAsIDEyMDIyNSwgMTIwMjI5LCAKLSAgICAxMjAyMjQsIDc0MTcyLCA0MTE0NSwgMCwgMCwgMCwgNDExNDgsIDg2ODMsIDc1OTQsIDEyNzUxOSwgMCwgMTE5MDkwLCAKLSAgICAxMDg2OSwgNDM0NTgsIDQxMTQ2LCA5MjQwNywgMTE0NDEsIDAsIDM1MTIsIDExOTYzMywgMCwgODEwMywgMCwgMCwgNjUxODQsIAotICAgIDExNzgwLCA0MTU2MywgNDI3OTYsIDAsIDY5NzQyLCA0MTU0NCwgNjUxNDYsIDAsIDAsIDAsIDAsIDE5OTQyLCAwLCAKLSAgICAxMTg5MDgsIDc5ODgsIDEwNDM2LCA3NDI3MywgMzI3MSwgNzM4MDQsIDY0NzExLCAwLCAwLCAwLCAwLCAzODA0LCAxMzA3MCwgCi0gICAgMTE1NTcsIDQyMDQ0LCAwLCAxMDk1LCAwLCAzNTk5LCAxMjc3NzQsIDAsIDEyODg2MSwgODUxNCwgMCwgMCwgMCwgNzQzNDYsIAotICAgIDY2Njk3LCAwLCAxMTY4NCwgMCwgOTI0ODYsIDAsIDAsIDQyMDQzLCA0MzIzMiwgNjY2NzcsIDAsIDQyMDQ2LCA3ODI0MSwgCi0gICAgNDAzNiwgMCwgMCwgMTI4MjEzLCAxOTQ4NjEsIDAsIDExOTU0LCAwLCAxNDUwLCAxMjk4NiwgMTM0MCwgMCwgNjU0NDEsIAotICAgIDkyNzIyLCAwLCAwLCAxMjc3NzIsIDAsIDkxNzU0MiwgMCwgMCwgNjUzOSwgMCwgMCwgMCwgMTk0ODU2LCAwLCAxMjA0OTIsIAotICAgIDQxMTkwLCAzOTczLCAxMTkzNjUsIDQ1NzUsIDQxMTkzLCA3OTgyLCA0MjksIDAsIDEyNzE5NCwgMCwgMTk0ODU0LCA2NTc5MiwgCi0gICAgMCwgMTE4OTY4LCA2NDE3LCAxMTg5MTgsIDc4MTc4LCAwLCAxOTQ4NTAsIDAsIDAsIDQ5MTksIDEwNTkwLCAwLCA3NzU1LCAwLCAKLSAgICAwLCA2NDU0OCwgMTIwNTA2LCAxNjIxLCAxMDIxNCwgNjUxMjYsIDAsIDEyNzAwNCwgMCwgMTIxODgsIDAsIDE2MTcsIDgwNTAsIAotICAgIDAsIDUwMTUsIDAsIDExOTE3NCwgNDI1OTAsIDE5NDg3MSwgMTc1NiwgNzgxODEsIDAsIDY1NzY4LCA2MzUyLCA0MTg5MiwgMCwgCi0gICAgNzU1NSwgMTMxMDMsIDU0MDgsIDI4MTcsIDEyMTQsIDAsIDkyMzM1LCAwLCAwLCAwLCAwLCAxMjcxOTUsIDc5NTcsIDg2ODksIAotICAgIDY0NzIzLCAxMDU2LCA0Mjg5NiwgNzQxNDcsIDE5NDgxMywgMCwgNTUyODYsIDcwNzMsIDY1ODUwLCAxMjMyNywgMCwgCi0gICAgMTE5MDI4LCAwLCAwLCAwLCAyMzQxLCA4NDUwLCA4NDg0LCA4NDc0LCAwLCAwLCAwLCA4NDYxLCAxMjgxMDIsIDEyMTUzLCAKLSAgICAxMjc5OSwgMCwgNDM3MDksIDQzNzA4LCA5NDUxLCA3NTcxLCAxMzA3MywgMCwgMCwgNjgxLCAwLCA3MDMsIDAsIDMyNzIsIAotICAgIDg3ODEsIDEyODk0LCAwLCAxMTcwOSwgOTIyODgsIDc0NDQ2LCAwLCA5MjUzMiwgMCwgMTEzMzgsIDEyMDc2OCwgMzI3NiwgMCwgCi0gICAgMCwgNjU5MjgsIDAsIDAsIDY1MDIxLCA2NDc5NSwgNzQ1NzQsIDAsIDEwMDQ3LCA3ODgxNCwgMzI2MiwgNzg4MTEsIDQyNzExLCAKLSAgICAwLCAwLCA2ODQ3OCwgMTYzLCA1NzYsIDk4OTUsIDE2NTUsIDc4ODE3LCA3NDU5MSwgNzg4MTUsIDc4ODE2LCAwLCAwLCAwLCAKLSAgICAwLCAxMDAzOSwgMCwgMCwgNTYyMywgNTcxNywgNTc3NiwgMCwgMCwgMCwgNDE1OTEsIDExMDM2LCA2NTI1MiwgOTIzODIsIDAsIAotICAgIDAsIDAsIDY3ODQ4LCAwLCAwLCAwLCA4ODg3LCAwLCA3Mjk1LCAxMTAzMSwgMCwgNDMxNTcsIDAsIDg5NDYsIDEwMzQ4LCAKLSAgICAxMDQxMiwgODc1NSwgMCwgMCwgNTcxOCwgMTMyMjEsIDAsIDAsIDc4MTM1LCAwLCAwLCA4ODEwLCA3NDQ5OSwgNjg2LCAwLCAKLSAgICAwLCA0NjE5LCAxMTg5NTQsIDY2NTQsIDczNzY5LCA3NDQyNiwgMCwgMTIwNDAsIDY1Njg5LCAxMDEyOCwgNjUxMTgsIDAsIAotICAgIDExOTE1MSwgNzQyMDUsIDkyNjUxLCAwLCAyNDAxLCA2ODE0NCwgODc5MiwgMCwgMCwgNjU0NTUsIDAsIDkyMjQ2LCAwLCAKLSAgICAxMTkxMjksIDAsIDEyODg2LCAxMjc5MjAsIDY2NjI0LCAwLCA0MzU1NywgMTAzMDAsIDEwMTYxLCAxMDM5NiwgNzQxMzUsIDAsIAotICAgIDExODk0NSwgNzgxMTgsIDczODUxLCAzMDEwLCA2NDQxLCA3ODEyMiwgMTQ1OCwgNDE0NzUsIDEyODY3MiwgMCwgMCwgCi0gICAgMTE0NzksIDAsIDAsIDYzNTAsIDEyODY0LCA2OTY3NCwgNzgxMTQsIDEwNjEsIDY0NzgwLCAyMDAxLCA0MzExMSwgNTUyMzAsIAotICAgIDEyODY4NiwgNDA1MiwgMCwgNzYyNiwgMCwgMCwgMTA0NSwgMCwgNTYzMSwgNDExMTMsIDAsIDAsIDQzNzA3LCA3NDEyNywgMCwgCi0gICAgMCwgODQ4NiwgMCwgNzM3NTgsIDIzMzUsIDQzNjIsIDAsIDAsIDY5MjIxLCAxMDI1LCAwLCA0MjYyNSwgOTE3NjI3LCAKLSAgICA3ODA4NCwgNDE0NDMsIDAsIDEyODIwNiwgMCwgMTc3NCwgMTUyMywgMCwgMCwgNDE0NDUsIDc4MjM2LCAwLCA4NTY3LCAKLSAgICA0MTQ0MiwgMzk4OCwgMCwgNzgyMzcsIDExODkxMCwgMCwgNjUyNzQsIDg1NjQsIDc4MTk5LCA3ODIzOCwgMTI3NTE1LCAwLCAKLSAgICAwLCA0MzQ0NiwgMCwgNjY1MTMsIDYyNTYsIDAsIDU3OSwgNTUyMTgsIDEwMjA2LCAwLCA2Mzc1LCAyNjczLCAwLCAxMTgxNCwgCi0gICAgMCwgNDQ4OCwgMCwgMTI3MzM2LCA2ODQ1MSwgMTA0NDQsIDExODg0NiwgMTI3MzM0LCAxMTc5OSwgNzQ0MDcsIDY4NDY2LCAKLSAgICA0NDg3LCAxMjc4NDksIDQyODMyLCAxMDMyLCAxMjAyNjcsIDQzNDUwLCA3ODI1NywgNzIwMywgMCwgNjE0LCA3ODE5MSwgCi0gICAgMTI3MzI1LCAxMjA2MTUsIDAsIDc4MjYyLCAxMjg2NjksIDEyNzMyMywgMCwgNDMxMjEsIDAsIDAsIDkyNTEzLCAxMDUwLCAKLSAgICA3NTQ5LCAwLCAwLCA5MzE0LCAwLCAwLCAxMjA2MTYsIDAsIDEwMDU3LCAwLCAxMjczMTMsIDAsIDY2NTA0LCAwLCAwLCAKLSAgICAyMzA3LCAwLCA2NDMzMywgMTI3MzEyLCAxMjg1NDcsIDczODczLCAwLCAwLCAwLCAxMjc5NzMsIDEyODcwOCwgMCwgMTAzNjAsIAotICAgIDY3NDYsIDAsIDkyMjQ1LCA0NDAsIDAsIDEzMDg1LCA5MjMzLCA3NDIxNiwgMCwgMCwgOTk1NywgMCwgNjY0NDcsIDgwNDYsIAotICAgIDY0OTYzLCA2NTc3NywgMTAxMjUsIDc0MjEyLCA0MjgxOSwgMTA5MTAsIDAsIDE1MjEsIDk4OTYsIDAsIDEwNDg3LCAwLCAKLSAgICAxMjUyNywgMCwgNzk3MCwgMCwgMTI4NjYwLCAwLCA2NTc2OSwgNTI0MywgOTg0OSwgNTIzOSwgNjU3NzEsIDAsIDAsIDUyMzcsIAotICAgIDY5NzE0LCAwLCAxMDEwMywgNTI0NywgNDc2OSwgMCwgMTE4OTc3LCAxMjg3MywgNTc2NCwgMCwgMCwgMzAwOCwgNDg5NiwgMCwgCi0gICAgMTIwODcsIDAsIDU1MjMxLCA0MTEwMywgMCwgNjQ1NjUsIDQ3NzMsIDAsIDkyNzE3LCAwLCA0NzcwLCAwLCA5MTc1NjcsIAotICAgIDg3MzEsIDY1Mzc4LCAxMjczNjIsIDEyMDYxOSwgOTEyMiwgMTI4MDMzLCAwLCA0Nzc0LCAzMDE5LCA5OTk3LCAxMjgzNCwgMCwgCi0gICAgOTQ1NiwgMTAyMTUsIDEyMDU0NywgMCwgMCwgMCwgMCwgNzQ3NzYsIDQyODEsIDQ3NjgsIDAsIDQxNTM1LCA0MDk5LCA5MDE3LCAKLSAgICAwLCAwLCA3ODA5NSwgMCwgNzgwOTYsIDAsIDAsIDAsIDc4MDk4LCAwLCA0MjgxNCwgODgwLCAwLCAwLCAxMjgwMjEsIDIxMzQsIAotICAgIDAsIDEwMTE2LCA5ODc3LCA5MjMyOSwgMCwgMCwgNzA5NSwgMCwgNzQxMTYsIDY3NzgsIDAsIDc4MDkwLCA4MjQzLCAyNDI3LCAKLSAgICAxMjgxNDEsIDcwOTMsIDAsIDExNTg1LCAxOTUwMDMsIDk5NjIsIDAsIDEyMjIzLCAwLCAwLCAxNDM0LCAxMjAyNTQsIDU2MzcsIAotICAgIDExNTczLCAwLCAwLCAwLCAxOTk1MSwgMCwgNzgxMjEsIDAsIDAsIDU1MjgzLCAwLCAwLCA3NDQzNywgMTE1NiwgODc0MCwgCi0gICAgOTI0MTUsIDM3ODIsIDY0MzMxLCAwLCA0MTM3MCwgMTAxNCwgODI2MSwgMCwgMCwgMTA4MzUsIDAsIDY1NTM2LCAwLCAKLSAgICAxMjA0NjMsIDAsIDc3MDIsIDExODgyNCwgMCwgNDMwMTAsIDY1Nzc5LCA2NTc4MywgMTE1MCwgMTA1NDcsIDU3MDAsIDAsIAotICAgIDEyMDYwMywgNjUzODMsIDIzMzksIDQyNTk0LCA1Njk3LCAxMTg3ODgsIDAsIDEyODU3NiwgMCwgNDIyNTcsIDU2OTYsIAotICAgIDkyNjc3LCAxMjA0NjUsIDM4NjIsIDk2NDMsIDAsIDAsIDc2MzQsIDY1MTY3LCA5ODQ1LCAwLCAwLCA1NzAxLCA5NzIyLCAKLSAgICA0MTQ5MCwgMCwgMTQyNiwgNjgyMTcsIDAsIDY4NDQ3LCA0MjIwNCwgNTUyNzAsIDg1NzEsIDE5NDk5MSwgNzgwNjcsIDAsIAotICAgIDc4ODE4LCA5MjcxOSwgNDMxODIsIDEyMTg0LCAwLCA0MjAyMiwgMCwgMTAyODEsIDAsIDU2NTAsIDQzMTk0LCA2NDcxMiwgCi0gICAgMTA3NDQsIDAsIDk5MCwgNTY0NywgMCwgNzM4NywgNzg3MzQsIDQxMTE0LCAxMTQ3NywgNTY0NiwgMTI4NzksIDExMDE4LCAwLCAKLSAgICAzOTQ1LCA5MjU4OSwgMCwgMCwgMCwgMCwgNzgyMTIsIDEyNzc0NiwgMTAyMCwgNzM3NjMsIDAsIDc4NzMxLCA1NjQ4LCAKLSAgICA2NDc0OCwgMTk0OTEwLCAwLCAxMDIwNSwgMzU0NSwgMCwgNjk4NCwgMCwgNzQwNTEsIDAsIDQzMjQyLCAxMjA0NTgsIDI2NjcsIAotICAgIDAsIDAsIDAsIDk5MTEsIDAsIDY1MDIwLCAxMDA5NywgMTE5MTY2LCAxMjcxNDUsIDAsIDExODgzNiwgMCwgNzg0MjcsIAotICAgIDExNDAsIDc4NDI2LCAwLCAxMDE1OSwgMCwgMCwgODEyOCwgMCwgMCwgOTE3OTY1LCAxODE1LCAxOTkxMCwgODkwLCAwLCAKLSAgICAzMjY3LCA5MjI5MSwgMCwgMTAxMjMsIDAsIDQ0MTAsIDEwNDEsIDEwNTc2LCA2MzU0LCA5MjU4MSwgNTgwLCA3NDIzMiwgMCwgCisgICAgNzkyOCwgMTIwMzU0LCA5ODMwOTUsIDQxNTk1LCA3MzczMCwgMCwgNDIxMTgsIDczODMwLCA2NjA0MiwgMTAzNTUsIAorICAgIDk4MzExMCwgNzg3NSwgMCwgNDE1OTgsIDM5OTMsIDAsIDE1NDUsIDQwOTcxLCA1MzYsIDEyODUyMSwgNDMwMjksIDAsIDAsIAorICAgIDY1MTczLCA2NTI4NiwgMCwgMCwgMCwgMCwgMCwgMCwgNDEzNzUsIDU0MDIsIDAsIDAsIDE2ODcsIDEyMDUwMywgOTE3ODE3LCAKKyAgICAwLCA3ODE5NCwgNjQzMjYsIDQwOTY5LCAxMDUyNiwgNzg3NTMsIDgzMjMsIDQwOTY4LCAxMzM5LCAxMTczMSwgNzg3NTYsIDAsIAorICAgIDY1NDYwLCAxMjI0MiwgMTI4NTEzLCA4MDIwLCAxMDg0MywgMTE1NTQsIDAsIDAsIDgyNjYsIDQxMDA2LCA2NTcyMiwgMCwgCisgICAgMTA3MTAsIDAsIDExODk0MiwgNjc2NjcsIDY0NTY3LCAxMTkxNTUsIDE5NTA5MSwgMCwgMTE5NjM2LCA2Nzg1NywgMTIwNjg3LCAKKyAgICAwLCA5ODMwNjYsIDExNzU1LCA2NjMwNSwgMCwgMCwgMTA5MTcsIDkzOTc5LCAwLCAxMTI3MiwgMjA0MCwgNDEyNDcsIAorICAgIDQxMzI2LCAxOTUwNjAsIDE3NDEsIDQyMzcwLCAxMjI3LCAwLCAwLCAxMTQxMywgMCwgMCwgNTI4MywgMTU4NiwgNDk3OCwgMCwgCisgICAgMTk4NCwgMTE4MzAsIDAsIDkyMjkzLCA0MDk4NCwgMTI4MzA2LCA5MzczLCAwLCAxMjkxNiwgNjI4NCwgMCwgNDE2NjMsIDAsIAorICAgIDAsIDAsIDkyMzcsIDkzODUsIDQxNjQ4LCAwLCAxOTQ1ODAsIDIyOTksIDQxNjY2LCAxODMwLCA3Mzc4MywgMjA1NiwgCisgICAgNDEyODcsIDkyNjEwLCAwLCAwLCA0MjIxOSwgMTI4MjU3LCAwLCA0MTk4NywgNDE2NzYsIDk4MzA1OSwgMTIwODIzLCAKKyAgICA5ODMxNDQsIDQxNjcwLCAwLCA5MjU5MCwgMjc5NiwgNTUyOTEsIDExNjgzLCA5OTAyLCA3NDUyMSwgNjc5ODgsIDExNDUxLCAKKyAgICA5ODMxMTEsIDEyODgyMiwgNDI2MzEsIDIzNTksIDAsIDY3ODQ0LCA3NDE2NCwgNDEyMzgsIDU0OCwgMTE0MDUsIDEzMTMzLCAKKyAgICA2NDM2OCwgOTgzMjMzLCAxMjg3OTUsIDAsIDM5NywgNDM2MjIsIDQyMTM5LCA5NTQ3LCA5NTkwLCAxMjgyMzgsIDE2MTQsIAorICAgIDQzNjYxLCA2NDM1NiwgNjYzMDcsIDY2NTEsIDEzNTgsIDAsIDQyOCwgOTYyMCwgMTQ2NiwgNzgxMTIsIDEwOTgyLCAKKyAgICAxMTg4MzEsIDEzMzMsIDcxMDQsIDQwNywgNjQyNSwgMTI4ODM0LCA3NDI1MywgMCwgMCwgMCwgNTgwNCwgMTE5NzYsIDg1NTQsIAorICAgIDkyNzIxLCAwLCAwLCA5MDU3LCA0MjI5NCwgNDEyMTgsIDAsIDAsIDc4MTM3LCAxODgzLCAxMDk1MiwgODA0OCwgNzgxNDIsIAorICAgIDQxMjI1LCA5MjYyMSwgNDI5MTUsIDk4MzY2NywgMTI4Njg0LCAwLCA0NDA3LCAwLCA2NTgwOSwgMTE5MDc0LCAxOTQ4MjEsIAorICAgIDg0NDgsIDcxNDEsIDc0MTgzLCAwLCAxMjY3NSwgMTI2NTksIDAsIDQyMzYzLCAxMjA2MjQsIDE5NDgyNCwgNTUyNzMsIAorICAgIDEwNzY2LCAxMjAxMiwgMjM4NiwgNjQ3MzIsIDkxNzAsIDkxNzgyMSwgOTEyMywgNjQ1ODUsIDEyMDUwMCwgMTE5MTU4LCAKKyAgICA3MTQwLCAxMDk3NywgMTI3Mzc4LCA0MTY0LCA5MDgxLCAwLCAxMjA1NjksIDQyMDQ5LCA0MjA0MiwgODcwOSwgMTI4MjgzLCAKKyAgICAxMjY0NzcsIDEyMDYzNywgNDI0MTksIDY0Nzk5LCA0MjA0NywgMCwgMCwgODQ3MCwgMTE4MDcsIDY1ODk3LCA1NzcsIDAsIAorICAgIDk4Mzc1MSwgNzQzMDAsIDAsIDEyNzMwOCwgNzQ4NDAsIDAsIDAsIDEyODc5MSwgOTIyMjQsIDg3MzYsIDE0MTQsIDQyNjQzLCAKKyAgICA5NjgzLCA0MzQ4NiwgNzQzNDQsIDAsIDI1MzYsIDAsIDY2MzMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjMxNywgNjk5NDUsIAorICAgIDY2MzE1LCAyMTA2LCAxMjAyMjIsIDExMjczLCAwLCA0MzAwNCwgNzU0MSwgMCwgMCwgOTYxLCA2NDMwNywgNjYzMjQsIAorICAgIDY0OTA2LCAxMjg1OTEsIDMxMDYsIDY1OTE3LCA0MTI4NCwgMTY5NiwgMCwgODkxLCAxMjEwNSwgMCwgNDI2MjQsIDEyODAyLCAKKyAgICAzMjY0LCA4ODI0LCAxMzI2OCwgNDMwMDMsIDEwOTM2LCAwLCAwLCAwLCAxOTQ4MjYsIDkyNjg4LCAwLCAyMzIyLCAxMjAzNzEsIAorICAgIDk4MzU4NCwgMTE0NDksIDEyODE4NywgNDI4NjgsIDQxMjg1LCAzNTQ3LCAwLCAwLCAxMjg3OTMsIDk4MzM5MCwgNDMyMTYsIAorICAgIDYwODksIDc4NjgyLCAwLCAxMjA1NzgsIDQxNzAsIDEwMjksIDEyNzc2MSwgMTI3MDM2LCAxMTkyMjQsIDQyMzc0LCAwLCAKKyAgICA3NDQsIDAsIDAsIDAsIDY1ODIzLCAxMjc4MjYsIDAsIDM1NTEsIDAsIDAsIDQ2MjMsIDU1MjY4LCAwLCA0NTk4LCA5ODMxNjIsIAorICAgIDY1MTM2LCAxMjcxMzYsIDAsIDAsIDEwODUxLCAwLCA2MTc5LCA5MjYwMiwgNjE4MCwgMCwgMTE5NTIsIDEyMDc3OCwgCisgICAgNzg2NDgsIDExOTcyLCA3ODY0NiwgNzg2NDcsIDc4NjQ0LCA3ODY0NSwgMTc3LCA3ODY0MywgNjE3NiwgMTIwNTgwLCAwLCAwLCAKKyAgICA2MTc3LCA5MDIwLCA3ODY1MiwgNzg2NTMsIDYxNzgsIDEyMDI0OSwgMTIwMjQyLCAxMjgwMjcsIDY3NjczLCAyMjE0LCAKKyAgICA4NzU0LCAwLCAxMjAyMzcsIDIxMzcsIDQzMDgxLCAwLCAwLCA5MTM2LCAxMjAyNDAsIDQ0MDEsIDQxMjgwLCAwLCA4OTc0LCAKKyAgICAyMzA4LCAwLCA3NDE0OSwgMCwgMjMxOCwgOTgzMTgzLCA2NjM2MSwgODE5OCwgMCwgNjQzNjAsIDEyNjAxLCA0MjUzNiwgCisgICAgNjUyNjYsIDEyMDgyNywgNzQzMDcsIDkyNDYyLCA2OTcwLCA1NDA0LCA0MzMzMiwgMzY2NywgNzkzNiwgMTI5MjUsIAorICAgIDEyNjk4OSwgNjM4NSwgMCwgMCwgMTE4OTQ5LCAxMDg3NCwgNjU1MDUsIDEyODA4MywgMCwgNDIwNTMsIDIwNzUsIDQyMDU3LCAKKyAgICAxMTA4MywgNDIwNTIsIDAsIDAsIDY3NjUxLCAwLCA5NjY1LCA5MjMwMCwgOTgzNjU3LCAxMzE4MSwgMCwgMCwgMCwgNzAwODgsIAorICAgIDc0MTQ4LCAwLCAwLCAxMjAyMjUsIDEyMDIyOSwgMTIwMjI0LCA3NDE3MiwgNDExNDUsIDAsIDk0MDk2LCA5ODM5MzcsIAorICAgIDQxMTQ4LCA4NjgzLCA3NTk0LCAxMjc1MTksIDAsIDExOTA5MCwgMTA4NjksIDQzNDU4LCA0MTE0NiwgOTI0MDcsIDExNDQxLCAKKyAgICAwLCAzNTEyLCAxMTk2MzMsIDk4MzcwMCwgODEwMywgMCwgMCwgNjUxODQsIDExNzgwLCA0MTU2MywgNDI3OTYsIDAsIAorICAgIDY5NzQyLCA0MTU0NCwgNjUxNDYsIDAsIDAsIDAsIDAsIDE5OTQyLCAwLCAxMTg5MDgsIDc5ODgsIDEwNDM2LCA3NDI3MywgCisgICAgMzI3MSwgNzM4MDQsIDY0NzExLCAwLCA5NDA2NCwgMCwgMCwgMzgwNCwgMTMwNzAsIDExNTU3LCA0MjA0NCwgMCwgMTA5NSwgCisgICAgMCwgMzU5OSwgMTI3Nzc0LCAwLCAxMjg4NjEsIDg1MTQsIDAsIDAsIDAsIDc0MzQ2LCA2NjY5NywgMCwgMTE2ODQsIDAsIAorICAgIDkyNDg2LCA5MTc2MDMsIDAsIDQyMDQzLCA0MzIzMiwgNjY2NzcsIDAsIDQyMDQ2LCA3ODI0MSwgNDAzNiwgMTI2NDgxLCAwLCAKKyAgICAxMjgyMTMsIDE5NDg2MSwgMCwgMTE5NTQsIDkzOTc4LCAxNDUwLCAxMjk4NiwgMTM0MCwgMCwgNjU0NDEsIDkyNzIyLCAwLCAKKyAgICAwLCAxMjc3NzIsIDAsIDkxNzU0MiwgMCwgMCwgNjUzOSwgMCwgMCwgMCwgMTk0ODU2LCAwLCAxMjA0OTIsIDQxMTkwLCAKKyAgICAzOTczLCAxMTkzNjUsIDQ1NzUsIDQxMTkzLCA3OTgyLCA0MjksIDAsIDEyNzE5NCwgMCwgMTk0ODU0LCA2NTc5MiwgMCwgCisgICAgMTE4OTY4LCA2NDE3LCAxMTg5MTgsIDc4MTc4LCAwLCAxOTQ4NTAsIDAsIDAsIDQ5MTksIDEwNTkwLCAxMjg1NTYsIDc3NTUsIAorICAgIDAsIDAsIDY0NTQ4LCAxMjA1MDYsIDE2MjEsIDEwMjE0LCA2NTEyNiwgMCwgMTI3MDA0LCAwLCAxMjE4OCwgOTgzNjU5LCAKKyAgICAxNjE3LCA4MDUwLCAwLCA1MDE1LCAwLCAxMTkxNzQsIDQyNTkwLCAxOTQ4NzEsIDE3NTYsIDc4MTgxLCAwLCA2NTc2OCwgCisgICAgNjM1MiwgNDE4OTIsIDAsIDc1NTUsIDEzMTAzLCA1NDA4LCAyODE3LCAxMjE0LCA2OTkxOSwgOTIzMzUsIDk4MzEyNSwgMCwgCisgICAgMCwgMCwgMTI3MTk1LCA3OTU3LCA4Njg5LCA2NDcyMywgMTA1NiwgNDI4OTYsIDc0MTQ3LCAxOTQ4MTMsIDAsIDU1Mjg2LCAKKyAgICA3MDczLCA2NTg1MCwgMTIzMjcsIDk4MzkzOSwgMTE5MDI4LCAwLCAwLCAwLCAyMzQxLCA4NDUwLCA4NDg0LCA4NDc0LCAKKyAgICA5ODMyNTIsIDAsIDcwMDc5LCA4NDYxLCAxMjgxMDIsIDEyMTUzLCAxMjc5OSwgMCwgNDM3MDksIDQzNzA4LCA5NDUxLCAKKyAgICA3NTcxLCAxMzA3MywgMCwgMCwgNjgxLCA5ODMyNDYsIDcwMywgMCwgMzI3MiwgODc4MSwgMTI4OTQsIDcwMDc3LCAxMTcwOSwgCisgICAgOTIyODgsIDc0NDQ2LCAwLCA5MjUzMiwgMCwgMTEzMzgsIDEyMDc2OCwgMzI3NiwgMCwgMCwgNjU5MjgsIDAsIDAsIDY1MDIxLCAKKyAgICA2NDc5NSwgNzQ1NzQsIDAsIDEwMDQ3LCA3ODgxNCwgMzI2MiwgNzg4MTEsIDQyNzExLCAwLCAwLCA2ODQ3OCwgMTYzLCA1NzYsIAorICAgIDk4OTUsIDE2NTUsIDc4ODE3LCA3NDU5MSwgNzg4MTUsIDc4ODE2LCA5ODMxMjIsIDAsIDAsIDAsIDEwMDM5LCAwLCAKKyAgICA5ODM5MzYsIDU2MjMsIDU3MTcsIDU3NzYsIDAsIDAsIDAsIDQxNTkxLCAxMTAzNiwgNjUyNTIsIDkyMzgyLCAwLCAwLCAwLCAKKyAgICA2Nzg0OCwgMCwgMCwgMCwgODg4NywgMTI3NTIxLCA3Mjk1LCAxMTAzMSwgMCwgNDMxNTcsIDAsIDg5NDYsIDEwMzQ4LCAKKyAgICAxMDQxMiwgODc1NSwgMCwgMCwgNTcxOCwgMTMyMjEsIDAsIDAsIDc4MTM1LCAwLCA5ODM3MDIsIDg4MTAsIDc0NDk5LCA2ODYsIAorICAgIDAsIDcxMzYyLCA0NjE5LCAxMTg5NTQsIDY2NTQsIDczNzY5LCA3NDQyNiwgMCwgMTIwNDAsIDY1Njg5LCAxMDEyOCwgCisgICAgNjUxMTgsIDAsIDExOTE1MSwgNzQyMDUsIDkyNjUxLCAwLCAyNDAxLCA2ODE0NCwgODc5MiwgOTgzNjM5LCAwLCA2NTQ1NSwgCisgICAgMCwgOTIyNDYsIDAsIDExOTEyOSwgMCwgMTI4ODYsIDEyNzkyMCwgNjY2MjQsIDAsIDQzNTU3LCAxMDMwMCwgMTAxNjEsIAorICAgIDEwMzk2LCA3NDEzNSwgOTgzNDQ1LCAxMTg5NDUsIDc4MTE4LCA3Mzg1MSwgMzAxMCwgNjQ0MSwgNzgxMjIsIDE0NTgsIAorICAgIDQxNDc1LCAxMjg2NzIsIDkzOTc1LCAwLCAxMTQ3OSwgMCwgMTIwMzU2LCA2MzUwLCAxMjg2NCwgNjk2NzQsIDc4MTE0LCAKKyAgICAxMDYxLCA2NDc4MCwgMjAwMSwgNDMxMTEsIDU1MjMwLCAxMjg2ODYsIDQwNTIsIDAsIDc2MjYsIDAsIDAsIDEwNDUsIDAsIAorICAgIDU2MzEsIDQxMTEzLCAwLCAwLCA0MzcwNywgNzQxMjcsIDAsIDAsIDg0ODYsIDAsIDczNzU4LCAyMzM1LCA0MzYyLCAKKyAgICA5ODMxOTUsIDEyNjU2MSwgNjkyMjEsIDEwMjUsIDAsIDQyNjI1LCA5MTc2MjcsIDc4MDg0LCA0MTQ0MywgMCwgMTI4MjA2LCAKKyAgICAwLCAxNzc0LCAxNTIzLCAwLCAwLCA0MTQ0NSwgNzgyMzYsIDAsIDg1NjcsIDQxNDQyLCAzOTg4LCAwLCA3ODIzNywgCisgICAgMTE4OTEwLCAwLCA2NTI3NCwgODU2NCwgNzgxOTksIDc4MjM4LCAxMjc1MTUsIDAsIDAsIDQzNDQ2LCAwLCA2NjUxMywgCisgICAgNjI1NiwgMCwgNTc5LCA1NTIxOCwgMTAyMDYsIDk4MzA3NSwgNjM3NSwgMjY3MywgMCwgMTE4MTQsIDAsIDQ0ODgsIDAsIAorICAgIDEyNzMzNiwgNjg0NTEsIDEwNDQ0LCAxMTg4NDYsIDEyNzMzNCwgMTE3OTksIDc0NDA3LCA2ODQ2NiwgNDQ4NywgMTI3ODQ5LCAKKyAgICA0MjgzMiwgMTAzMiwgMTIwMjY3LCA0MzQ1MCwgNzgyNTcsIDcyMDMsIDAsIDYxNCwgNzgxOTEsIDEyNzMyNSwgMTIwNjE1LCAKKyAgICAwLCA3ODI2MiwgMTI4NjY5LCAxMjczMjMsIDAsIDQzMTIxLCAwLCAwLCA5MjUxMywgMTA1MCwgNzU0OSwgMCwgMCwgOTMxNCwgCisgICAgMCwgMCwgMTIwNjE2LCAwLCAxMDA1NywgMCwgMTI3MzEzLCAwLCA2NjUwNCwgOTgzMTcxLCAwLCAyMzA3LCAwLCA2NDMzMywgCisgICAgMTI3MzEyLCAxMjg1NDcsIDczODczLCAwLCA5NDAzNSwgMCwgMTI3OTczLCAxMjg3MDgsIDAsIDEwMzYwLCA2NzQ2LCAwLCAKKyAgICA5MjI0NSwgNDQwLCAwLCAxMzA4NSwgOTIzMywgNzQyMTYsIDAsIDAsIDk5NTcsIDEyODI4NSwgNjY0NDcsIDgwNDYsIAorICAgIDY0OTYzLCA2NTc3NywgMTAxMjUsIDc0MjEyLCA0MjgxOSwgMTA5MTAsIDAsIDE1MjEsIDk4OTYsIDkzOTY1LCAxMDQ4NywgCisgICAgNjk4NzgsIDEyNTI3LCAwLCA3OTcwLCAwLCAxMjg2NjAsIDAsIDY1NzY5LCA1MjQzLCA5ODQ5LCA1MjM5LCA2NTc3MSwgCisgICAgOTgzMjI5LCAwLCA1MjM3LCA2OTcxNCwgMCwgMTAxMDMsIDUyNDcsIDQ3NjksIDAsIDExODk3NywgMTI4NzMsIDIyODMsIAorICAgIDk4MzIzMSwgMCwgMzAwOCwgNDg5NiwgMCwgMTIwODcsIDAsIDU1MjMxLCA0MTEwMywgMCwgNjQ1NjUsIDQ3NzMsIDAsIAorICAgIDkyNzE3LCA3MDA3NCwgNDc3MCwgMCwgOTE3NTY3LCA4NzMxLCA2NTM3OCwgMTI3MzYyLCAxMjA2MTksIDkxMjIsIDEyODAzMywgCisgICAgMTI2NjAwLCA0Nzc0LCAzMDE5LCA5OTk3LCAxMjgzNCwgMCwgOTQ1NiwgMTAyMTUsIDEyMDU0NywgMCwgMCwgMCwgMCwgCisgICAgNzQ3NzYsIDQyODEsIDQ3NjgsIDAsIDQxNTM1LCA0MDk5LCA5MDE3LCAwLCAwLCA3ODA5NSwgMCwgNzgwOTYsIDAsIDAsIDAsIAorICAgIDc4MDk4LCAwLCA0MjgxNCwgODgwLCAwLCAwLCAxMjgwMjEsIDIxMzQsIDAsIDEwMTE2LCA5ODc3LCA5MjMyOSwgMCwgMCwgCisgICAgNzA5NSwgMCwgNzQxMTYsIDY3NzgsIDAsIDc4MDkwLCA4MjQzLCAyNDI3LCAxMjgxNDEsIDcwOTMsIDAsIDExNTg1LCAKKyAgICAxOTUwMDMsIDk5NjIsIDAsIDEyMjIzLCAwLCAwLCAxNDM0LCAxMjAyNTQsIDU2MzcsIDExNTczLCAwLCAwLCAwLCAxOTk1MSwgCisgICAgMCwgNzgxMjEsIDAsIDAsIDU1MjgzLCAwLCAwLCA3NDQzNywgMTE1NiwgODc0MCwgOTI0MTUsIDM3ODIsIDY0MzMxLCAwLCAKKyAgICA0MTM3MCwgMTAxNCwgODI2MSwgMCwgMCwgMTA4MzUsIDAsIDY1NTM2LCAwLCAxMjA0NjMsIDAsIDc3MDIsIDExODgyNCwgMCwgCisgICAgNDMwMTAsIDY1Nzc5LCA2NTc4MywgMTE1MCwgMTA1NDcsIDU3MDAsIDAsIDEyMDYwMywgNjUzODMsIDIzMzksIDQyNTk0LCAKKyAgICA1Njk3LCAxMTg3ODgsIDAsIDEyODU3NiwgMCwgNDIyNTcsIDU2OTYsIDkyNjc3LCAxMjA0NjUsIDM4NjIsIDk2NDMsIDAsIDAsIAorICAgIDc2MzQsIDY1MTY3LCA5ODQ1LCAwLCAwLCA1NzAxLCA5NzIyLCA0MTQ5MCwgOTgzMTUzLCAxNDI2LCA2ODIxNywgMCwgCisgICAgNjg0NDcsIDQyMjA0LCA1NTI3MCwgODU3MSwgMTk0OTkxLCA3ODA2NywgMCwgNzg4MTgsIDkyNzE5LCA0MzE4MiwgMTIxODQsIAorICAgIDAsIDQyMDIyLCAwLCAxMDI4MSwgMCwgNTY1MCwgNDMxOTQsIDY0NzEyLCAxMDc0NCwgMCwgOTkwLCA1NjQ3LCAwLCA3Mzg3LCAKKyAgICA3ODczNCwgNDExMTQsIDExNDc3LCA1NjQ2LCAxMjg3OSwgMTEwMTgsIDk4MzkyMSwgMzk0NSwgOTI1ODksIDAsIDAsIDAsIDAsIAorICAgIDc4MjEyLCAxMjc3NDYsIDEwMjAsIDczNzYzLCAwLCA3ODczMSwgNTY0OCwgNjQ3NDgsIDE5NDkxMCwgNzg3MzMsIDEwMjA1LCAKKyAgICAzNTQ1LCA5ODM1ODUsIDY5ODQsIDAsIDc0MDUxLCA5ODM2NDYsIDQzMjQyLCAxMjA0NTgsIDI2NjcsIDAsIDAsIDAsIDk5MTEsIAorICAgIDAsIDY1MDIwLCAxMDA5NywgMTE5MTY2LCAxMjcxNDUsIDk4MzY1MywgMTE4ODM2LCA5ODM3MzksIDc4NDI3LCAxMTQwLCAKKyAgICA3ODQyNiwgMCwgMTAxNTksIDAsIDAsIDgxMjgsIDAsIDAsIDkxNzk2NSwgMTgxNSwgMTk5MTAsIDg5MCwgMCwgMzI2NywgCisgICAgOTIyOTEsIDAsIDEwMTIzLCAwLCA0NDEwLCAxMDQxLCAxMDU3NiwgNjM1NCwgOTI1ODEsIDU4MCwgNzQyMzIsIDAsIAogICAgIDEyODM0NywgMCwgMCwgMCwgMTk5MzgsIDY1OTA2LCAxMjc4MTksIDAsIDAsIDMyOTgsIDUzNzUsIDEwMTQyLCAwLCA4MjE1LCAKLSAgICAwLCA2MTM0LCA0MTI0NiwgNjQ0MDIsIDAsIDEyODIxNSwgMCwgMCwgMCwgNDEzODIsIDAsIDEyODY1MywgNTE3MywgNjUzNDgsIAorICAgIDAsIDYxMzQsIDQxMjQ2LCA2NDQwMiwgMCwgNjk4OTksIDAsIDAsIDAsIDQxMzgyLCAwLCAxMjg2NTMsIDUxNzMsIDY1MzQ4LCAKICAgICA1MjcsIDAsIDAsIDkyNjEyLCAxMjgyNTAsIDc4Nzk3LCAxMTkxNSwgMCwgMCwgMTAwNzIsIDAsIDQyNjk1LCAyMzI5LCAKLSAgICA0MjI1MCwgMCwgMTI4ODY0LCA2OTY2NywgMTIyNDUsIDE1NjgsIDAsIDAsIDAsIDEyODEyMCwgMCwgNzQzMjgsIDkyNzA4LCAKLSAgICA3NDc2OSwgMCwgMTE5MDg3LCA5MDY5LCA2MTQ0LCAwLCAwLCA3MzgyMiwgMCwgMTI4MDEwLCA2NDkxNywgNDE1MjEsIAotICAgIDExODkzNCwgNDk0LCAxMzI1MCwgMCwgNjUwOTgsIDYzNjQsIDk1NiwgMCwgMTI4MzAsIDEwNDYyLCA3Mzc0MCwgMCwgMCwgMCwgCi0gICAgMCwgNjY0NDksIDEzMjYzLCA3NDI4MSwgNjkyMTcsIDEzMTcxLCAxMjc3OTYsIDAsIDAsIDkyMjk0LCAwLCAxMDQ0LCAKLSAgICA0MTI3NiwgMCwgMCwgMCwgNDIwNjgsIDExNzk1LCAwLCAwLCAwLCAwLCA0MjQ1MCwgMzkwNywgMCwgNjQ1MjYsIDkxNzg0NywgCi0gICAgNjgxOTcsIDEyMjk1LCAwLCAxMTQ3NSwgMCwgMzAyMCwgMTE1MzcsIDAsIDY2NDQxLCAwLCAwLCAwLCAwLCAxMDU3LCA1NjYsIAotICAgIDQyNjk2LCAwLCAzMDE2LCA0MjI3NCwgNDM0NjQsIDY2NDkwLCAxMjkyMSwgNjY1NzEsIDc4NDcyLCA5MjUxMCwgMzAwNiwgCi0gICAgNDYyMCwgMTI3MjM3LCAwLCAwLCAwLCA2NDY1OSwgMCwgMTI3NzQ5LCA1NTI1MywgNjM1NywgNjM2MiwgODYyNiwgMCwgMCwgCi0gICAgOTA5MCwgNjUzNzcsIDQxNTk2LCAwLCA0MjkyMCwgMTY5OCwgMCwgNjQ0NzcsIDAsIDQzODEzLCAxMDUzLCAwLCA3ODI2OSwgCi0gICAgMCwgMCwgMTA1MiwgMTA1MSwgNDU5LCAxMDYwLCA3NDM0OSwgNjY0NzksIDAsIDAsIDAsIDAsIDQyNDkwLCA2ODksIDY1MDgsIAotICAgIDQxNjMsIDQyMjk4LCA4NjM5LCA2NjY0MSwgNDI0NiwgMCwgMCwgMTIxMzAsIDAsIDQyMzM3LCA2NDU5NiwgNjQzNzUsIAotICAgIDY2NDgxLCAxMjc4NTAsIDAsIDAsIDYzNTksIDAsIDQzNDcxLCAwLCAwLCAwLCAxMjcyNzQsIDAsIDYzNTgsIDYzNjEsIAotICAgIDE5MjYsIDYzNTYsIDkyNjI3LCA3ODk4LCA4MTEwLCAxMDkzNSwgMCwgMTAwNjksIDU4MzAsIDAsIDQzNjg1LCAwLCAwLCAwLCAKLSAgICAwLCA4NjkzLCA3ODYxMSwgMTE5NTY1LCAwLCAxMjA0MTMsIDAsIDEyNzI1NywgNjU4OTQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDExOTE4NywgMjEzNSwgNzg4NjgsIDAsIDAsIDc4ODY5LCA0MjMxMywgNTU3OSwgOTI0MTIsIDAsIDAsIDAsIDAsIDU1NzgsIAotICAgIDQxNzc0LCAxMjgxMTUsIDQyMDIzLCA2MjM0LCA1NjY5LCA5MjI3NSwgMCwgMCwgMCwgMTI3NTA2LCA2ODIwMiwgNTU4MywgMCwgCi0gICAgMCwgNDI0MjYsIDU1ODAsIDQyMjc2LCAyOTIzLCA4OTIsIDU1ODIsIDQyNDY1LCA0MTMzMCwgMTk0OTg3LCA1Nzk1LCAKLSAgICA2NTUxMiwgMTE5MDA2LCA2NTcwMiwgMCwgMTIwODAxLCA2NTI1MSwgMCwgNjU3MTAsIDAsIDAsIDY3NjcyLCAwLCA1MzcwLCAKLSAgICAwLCAyOTMxLCAxNjM4LCAxMDk2NiwgMTAxODgsIDY1ODc4LCAxMTg4NDgsIDAsIDY5Njk0LCAwLCAxMjg4MzAsIDgxNzIsIAotICAgIDQyMDE3LCAwLCAxMDg0NCwgMCwgMTI4MTk1LCA5MjQyNCwgNjM3NCwgMCwgMCwgMjg2LCA3ODAyMywgMTA2MiwgMCwgCi0gICAgMTE5OTk5LCAwLCA3Mzk1LCAwLCAxMDcwLCA2NDkwMCwgNzE1MywgNjA5NSwgNDE4NjUsIDAsIDMwMTUsIDEyODAyMywgCi0gICAgOTE3NzYzLCA1MjExLCAwLCA2NDAwLCAwLCAxOTQ5ODMsIDAsIDgxODksIDExMjc2LCAwLCAwLCAzNzIsIDEyODgyOSwgMCwgCi0gICAgMTE4ODc0LCA0MjEwMiwgNDE1ODUsIDEyODIwMiwgMCwgNDIxMDEsIDI3NiwgNzg0MDIsIDAsIDMzLCA3NDIyNiwgMTI3MzAzLCAKLSAgICA5MDA3LCAxMTg3OTYsIDQxNTg4LCA2NjAzMywgNDI3LCAxMDc2MywgMTE4ODE5LCAwLCAxMjc4ODQsIDAsIDEwMzEsIDYyNTcsIAotICAgIDAsIDQyMTA0LCAwLCAwLCAyMzI4LCA5MjQwOSwgMTA3MSwgMCwgMCwgNzQ4NDgsIDAsIDAsIDAsIDEwNDcsIDAsIDAsIAotICAgIDY0NzkwLCAwLCA2OTcyMywgMTA2NTEsIDAsIDAsIDAsIDAsIDkyMjA2LCAxMTkxODEsIDU3MTEsIDQxNjMzLCAxMjA5OCwgCi0gICAgNjU1NzEsIDkxNjYsIDAsIDU3MTAsIDAsIDY3OTAsIDY1MTY4LCAxMzIxNiwgMCwgNjk3MTYsIDY5NzI2LCAwLCA2NDYxMSwgCi0gICAgNDE2MjMsIDE5NTAwMSwgNTcxNSwgNjk2NTQsIDAsIDAsIDU3MTIsIDI3NjEsIDQxNjIwLCA2ODEyNCwgMzA3NCwgNTcyMiwgCi0gICAgMCwgODY0MywgNzM3NjgsIDAsIDExODkwNiwgMjc1NywgMTEwNjcsIDk3MTgsIDc0NDk4LCA4OTEwLCAxMDY4OSwgNjQ3OSwgCi0gICAgMCwgMCwgMCwgNzg2MDcsIDkxOTYsIDY5NjcwLCAwLCAwLCAwLCAwLCAxMTg5MTEsIDAsIDAsIDAsIDAsIDAsIDEyMDAxMCwgCi0gICAgMCwgODcwMSwgNjgxMzAsIDExOTYxNiwgMTIwNTIyLCAwLCA0MjQ3NywgMCwgMTIxMjMsIDQ0OTUsIDQzNTY5LCAwLCAwLCAwLCAKLSAgICA2NDk0NiwgMTA5OTIsIDAsIDEyMDAwOSwgMCwgMCwgOTMxOCwgMTIwNjYxLCAxMzI0OSwgNjU2NzksIDczODA4LCAwLCAKLSAgICA2NTQ1NywgNDIyNDksIDc2MzksIDQzOTk1LCA2Nzg0NSwgNDI2NDEsIDU0NTQsIDAsIDAsIDE5NDk5NywgMTIwMDA1LCAwLCAKLSAgICAwLCA1MDg0LCAwLCAwLCAxMTg4NjEsIDAsIDczMywgOTE3ODc2LCA3ODAxNCwgNzg0MzYsIDc4NDM1LCA0MTY3NywgMCwgCi0gICAgOTIxOCwgMTczMSwgMCwgMCwgMCwgMTk1MDEwLCAwLCAwLCAwLCAxMjAwMDEsIDEyNzAxOCwgOTI0OTIsIDUxNTUsIDAsIAotICAgIDUzNTgsIDAsIDAsIDkxNzc2NywgNjQ0MjQsIDAsIDM4NDAsIDY0MzE0LCA0MTQzMiwgMCwgMCwgNjg0MzAsIDExOTExNiwgCi0gICAgNDMyNTMsIDY1OTQzLCAwLCAzMzcxLCAxMDk4OCwgMCwgODc3MSwgMTQ3OSwgMCwgMCwgMTEwOSwgMTE1ODAsIDAsIDY0NjAxLCAKLSAgICAxMjIwNSwgMCwgMCwgNjQ1MDcsIDg4NjgsIDM5OSwgMCwgNzQ4NDIsIDAsIDAsIDEyMTQ5LCAxMzA4OCwgNTUxLCAwLCAKLSAgICAxMDE1NiwgMTIxMTksIDkyNTcyLCAwLCAyNTQ0LCA2NTA3NCwgMTE5MjExLCAwLCAwLCA3ODAxMSwgMzUxLCAxMTkxNDksIDAsIAotICAgIDAsIDU1MjI5LCAwLCA3NDI2OCwgMCwgMCwgMCwgNDIzNzcsIDAsIDAsIDAsIDAsIDAsIDkwMTMsIDQwNTQsIDAsIDAsIDAsIAotICAgIDAsIDczOTYwLCA1NTg1LCA2NTg4MSwgMjU0OSwgNzQ0NjksIDAsIDAsIDU1ODQsIDgzNTgsIDAsIDc0NDExLCA5MjIxOSwgCi0gICAgMTA5MTksIDAsIDc5ODAsIDAsIDAsIDAsIDQxODAwLCA1NTg5LCAwLCAyNjY0LCA0MTYxMywgNTU4NiwgMTE4ODkwLCAwLCAKLSAgICAxMTM1NiwgMCwgMCwgNDM0NTIsIDc4NjA5LCAwLCA0MjU3MywgNjc4NTYsIDAsIDc4MTI5LCAwLCAwLCA5MjUzNSwgODEzNSwgCi0gICAgNjQ1MCwgMTAwNTUsIDc3OTk2LCAwLCAwLCAwLCA1NjU3LCAwLCA5NjI2LCAwLCA3Nzk5NCwgMTAxNzksIDU2NTQsIDEyOTM5LCAKLSAgICA5MjU3MywgMTIwNzk5LCAwLCAwLCA1NjUyLCAxMDk0NSwgMCwgNjY0ODYsIDAsIDM2NjEsIDc4NjMsIDAsIDAsIDAsIAotICAgIDc0NTA5LCAwLCA1NjU5LCAwLCAxMjc1MTAsIDY2NzI5LCA1NjU1LCAwLCA0MjE2OCwgMCwgMTA1NSwgOTE3NjI4LCAKLSAgICAxMjc3OTIsIDY2MzEwLCA3NDAzMCwgMCwgMTIxNDYsIDczOTU1LCA3Mzk1NiwgMTE2MTgsIDAsIDEyNjk5MCwgMCwgMTAyNzIsIAotICAgIDEwMzA0LCAxMDM2OCwgNDI1MTgsIDU5NCwgMTAyNDQsIDEwMjQ4LCA3NDA3LCAwLCA2NDg3MCwgMCwgMzQ2NywgMCwgMCwgCi0gICAgMzMzMSwgOTQ2LCAxMDIzMSwgMTQ5NSwgODEzMSwgNzQzMzAsIDAsIDk1NjIsIDY5MjIyLCA2NTkyNywgMCwgMCwgNjk2OTYsIAotICAgIDY5NzY5LCA2NDY1NiwgMCwgMCwgMTk0ODM3LCAwLCA1NjY2LCA2NTIyNywgNTMxOCwgNjM5OTQsIDAsIDkwOTEsIDEwNzk4LCAKLSAgICAwLCAxMjgxNjYsIDEwMTg2LCAwLCA3NzMyLCAwLCA2NDU1NiwgMCwgMCwgNTY2OCwgNzQ0NDUsIDAsIDAsIDU2NzAsIDAsIAotICAgIDEyNzI5NywgMTE4MjAsIDI5OTIsIDc4MjYsIDU2NjcsIDE5OTUyLCAxMjA4MDcsIDAsIDEyNzQ5LCA3NDU1MSwgMCwgMCwgCi0gICAgNjY0OTYsIDQzNjEsIDExOTI2MCwgMTMwNiwgOTI4NiwgMTQ5NywgMCwgMCwgMCwgMCwgMzU3MSwgMTMyNDcsIDAsIDc5NzMsIAotICAgIDY2MzUzLCA2ODQzNSwgNzgyNzgsIDY3ODk2LCA0MzE5MiwgMCwgNzgyNjUsIDU1MywgMTIwNjUzLCAwLCAxMjg1NTQsIAotICAgIDU4MjksIDAsIDQ1ODcsIDc4Mjg1LCA2NTkxMiwgMCwgMTI3NDYsIDAsIDAsIDExOTkyNCwgNTYzMywgMTE5OTI3LCAwLCAwLCAKLSAgICAwLCA2NDkwNSwgMCwgOTUxMiwgMTIwNjcxLCAxMjc0MiwgNjQ0MywgMCwgMCwgOTEzNSwgMCwgNDE1NjQsIDAsIDU1MjE5LCAKLSAgICAxMjg4MzIsIDAsIDAsIDEyMTQ4LCAwLCA3ODI5NywgMCwgNjQyNTYsIDAsIDExNjY5LCAwLCA1NjM0LCA0NTI0LCAwLCAKLSAgICAxMjcyNzAsIDAsIDExODg4MCwgMjQyNSwgNjUxODIsIDEyODc2OSwgNDM2MzYsIDUyMjEsIDc4NDEwLCAzMjgsIDAsIDAsIAotICAgIDY5ODE1LCA1NjM2LCAwLCA1MzI5LCAwLCA1NjM4LCAxMTk5MTgsIDc5NDAsIDY0OTM4LCA0MzIyMywgMCwgNTYzNSwgMzM3MywgCi0gICAgMjk4NiwgNzgyOTIsIDc0MjIzLCAzNDM3LCA3ODI5MSwgNjIwMywgNDI0NywgMCwgMTE5MjAsIDgyNzQsIDAsIDAsIDE2NTcsIAotICAgIDQxNTYxLCA3ODI5OSwgNzgyOTUsIDU2MzksIDI5NTQsIDU2NjAsIDU2NDAsIDc4MzAzLCAwLCA3ODMwMCwgNDIyMjcsIDAsIAotICAgIDAsIDQxNjM3LCA2Nzg3MiwgMCwgNzgzMTAsIDQxNjI1LCA0MzM2MiwgNzgzMDksIDEyMDcxMywgMTE3MDUsIDU2NDIsIDAsIAotICAgIDU0ODYsIDAsIDQzNTYsIDExNzEwLCAwLCAxMjA1MSwgMCwgMCwgNTY0MSwgODI1OSwgMCwgMTA1OCwgMCwgNjc2MzAsIDAsIAotICAgIDAsIDExNDQsIDc4NzUwLCAwLCA0MjIyOCwgMCwgNzM4OTAsIDExODk3MiwgMCwgNjUzMjIsIDAsIDU2NDUsIDY0OTY0LCAKLSAgICA4NjUyLCAyNTQ3LCA2NjQ4NCwgNDM2MzQsIDAsIDU2MDgsIDY1ODkwLCA0MzgwOCwgMCwgNjc2MjEsIDExOTkzNCwgOTAwMCwgCi0gICAgMCwgMCwgOTI2NzMsIDE4NjUsIDAsIDU2MTMsIDc0MjY3LCAwLCAwLCA1NjEwLCAwLCAwLCA2NTgyNiwgMjA2OSwgMCwgCi0gICAgMTA3ODcsIDQzOTk5LCAyOTk3LCAwLCA1NjA5LCA3ODMxNiwgNjUzMTksIDc4MzEzLCAxMjMxNiwgNjUzNzYsIDI0MTIsIDAsIAotICAgIDgxODYsIDk4MDcsIDc0MjY5LCAwLCAxMzEzMCwgNjU4NzQsIDAsIDU4MDcsIDAsIDEwMDMwLCA1MzA2LCAxMjkzNiwgMCwgMCwgCi0gICAgMTE3MDQsIDAsIDkyNTgzLCAxMDIxMSwgMCwgMCwgMCwgMCwgMTE3MDYsIDk3MTAsIDAsIDAsIDAsIDQxMywgNjU2MjMsIAotICAgIDcxMTgsIDAsIDkxMzMsIDc0MjYyLCAwLCAxMDQyLCAwLCA2NDc3OSwgMTIxNzEsIDExOTI0MCwgNjE4NSwgNjQ3NzYsIAotICAgIDQ5ODQsIDAsIDcwOCwgMTEzOTEsIDAsIDEyMjQxLCA5MjcyMCwgMCwgMTMwOCwgMCwgMjUzNCwgODEwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxOTE3LCAzMDAwLCAwLCAwLCAxMjA3MzksIDIzNjQsIDkyNDQzLCA3NDQ3MCwgNjY2MTgsIDY1NjgwLCAwLCAxMDAyNywgCi0gICAgMCwgMTI4MTU0LCAxMjMzNywgMTIwNzIyLCAxMjczNjgsIDAsIDI5ODAsIDc1NSwgNjk3NzQsIDkzMSwgMTMxMjQsIDY4MTgyLCAKLSAgICA2MzYzLCAyNzQ4LCAwLCAwLCA2NTA0MSwgMCwgNDQwMTEsIDg3MzAsIDAsIDEyNzg1NCwgNzgzMTIsIDcyNzQsIDExOTI1MCwgCi0gICAgMCwgNzI3NSwgNzgzMDQsIDkzNSwgMCwgNjU4NDAsIDM3NywgNDIzMjUsIDExNjQ5LCAxMjczNjMsIDY1MjUzLCA2NDMwMSwgCi0gICAgMTI4ODM1LCA3ODMwOCwgNDIzNDEsIDY1Mjg0LCAyNDE3LCAwLCAxMjg4NCwgMTk5MTIsIDc5MDcsIDEwNzY4LCAwLCAKLSAgICAxOTQ5OTgsIDAsIDEwNjczLCAxMTkyMTcsIDcyNDgsIDAsIDEyODM0NiwgMTc4MSwgNTQ5NiwgMzYyNywgNjIsIDE2NDksIDAsIAotICAgIDk2NCwgMCwgMTI3ODc2LCA3ODIyNiwgMTI4Nzc1LCAxMjc1MTIsIDAsIDAsIDAsIDAsIDQzNjg5LCAxMjc5MTEsIDEzMTQyLCAKLSAgICA3ODgxMiwgNDI0MTUsIDY2NTc1LCA0NTQyLCA3NDAzNywgNDM1NDcsIDAsIDAsIDc2NzcsIDI5OTEsIDQ5NDYsIDQyNDU0LCAKLSAgICAwLCA3OTQ5LCAwLCAwLCAxMTM0MSwgNDI0OTQsIDMwNzMsIDY1NjI1LCA5NzE0LCAxMTY5MiwgNDY1NywgMCwgOTI3MjQsIAotICAgIDY0NzgsIDk4OTgsIDQzNjczLCA2NTIzNywgNjI0MSwgNzEwNiwgNDg3NywgMCwgNjIzOCwgMCwgMTA1NDgsIDEyNzA0OSwgCi0gICAgNDQwOSwgMCwgMCwgNjQ3OTgsIDAsIDUzNDYsIDAsIDEyMDUyOCwgNjIzNywgNDg3NCwgMCwgOTE3NiwgMCwgMCwgNjUyMzEsIAorICAgIDQyMjUwLCAwLCAxMjg4NjQsIDY5NjY3LCAxMjI0NSwgMTU2OCwgOTQwMzMsIDAsIDAsIDEyODEyMCwgMCwgNzQzMjgsIAorICAgIDkyNzA4LCA3NDc2OSwgMCwgMTE5MDg3LCA5MDY5LCA2MTQ0LCAwLCAwLCA3MzgyMiwgMCwgMTI4MDEwLCA2NDkxNywgCisgICAgNDE1MjEsIDExODkzNCwgNDk0LCAxMzI1MCwgMCwgNjUwOTgsIDYzNjQsIDk1NiwgMCwgMTI4MzAsIDEwNDYyLCA3Mzc0MCwgCisgICAgNzM3MzQsIDAsIDAsIDAsIDY2NDQ5LCAxMzI2MywgNzQyODEsIDY5MjE3LCAxMzE3MSwgMTI3Nzk2LCAwLCAwLCA5MjI5NCwgCisgICAgMCwgMTA0NCwgNDEyNzYsIDAsIDAsIDAsIDQyMDY4LCAxMTc5NSwgMCwgMCwgMCwgMCwgNDI0NTAsIDM5MDcsIDAsIDY0NTI2LCAKKyAgICAxMTgyOSwgNjgxOTcsIDEyMjk1LCAwLCAxMTQ3NSwgMCwgMzAyMCwgMTE1MzcsIDAsIDY2NDQxLCA5ODM0NDYsIDcwOTgsIDAsIAorICAgIDAsIDEwNTcsIDU2NiwgNDI2OTYsIDAsIDMwMTYsIDQyMjc0LCA0MzQ2NCwgNjY0OTAsIDEyOTIxLCA2NjU3MSwgNzg0NzIsIAorICAgIDkyNTEwLCAzMDA2LCA0NjIwLCAxMjcyMzcsIDk4MzU3OCwgMCwgMCwgNjQ2NTksIDAsIDEyNzc0OSwgNTUyNTMsIDYzNTcsIAorICAgIDYzNjIsIDg2MjYsIDcxMzM3LCAyMjE2LCA5MDkwLCA2NTM3NywgNDE1OTYsIDAsIDQyOTIwLCAxNjk4LCAwLCA2NDQ3NywgMCwgCisgICAgNDM4MTMsIDEwNTMsIDAsIDc4MjY5LCAwLCAxMjY1ODYsIDEwNTIsIDEwNTEsIDQ1OSwgMTA2MCwgNzQzNDksIDY2NDc5LCAwLCAKKyAgICAwLCAwLCAwLCA0MjQ5MCwgNjg5LCA2NTA4LCA0MTYzLCA0MjI5OCwgODYzOSwgNjY2NDEsIDQyNDYsIDAsIDAsIDEyMTMwLCAKKyAgICAwLCA0MjMzNywgNjQ1OTYsIDY0Mzc1LCA2NjQ4MSwgMTI3ODUwLCAwLCAwLCA2MzU5LCAwLCA0MzQ3MSwgOTgzNzU5LCAwLCAKKyAgICAwLCAxMjcyNzQsIDAsIDYzNTgsIDYzNjEsIDE5MjYsIDYzNTYsIDkyNjI3LCA3ODk4LCA4MTEwLCAxMDkzNSwgMCwgMTAwNjksIAorICAgIDU4MzAsIDAsIDQzNjg1LCAwLCAwLCAwLCAwLCA4NjkzLCA3ODYxMSwgMTE5NTY1LCA5ODM3OTksIDEyMDQxMywgMCwgCisgICAgMTI3MjU3LCA2NTg5NCwgMCwgMCwgMCwgOTgzOTE0LCAwLCAwLCAxMTkxODcsIDIxMzUsIDc4ODY4LCAwLCAwLCA3ODg2OSwgCisgICAgNDIzMTMsIDU1NzksIDkyNDEyLCAwLCA5ODMwODIsIDk0MDAyLCAwLCA1NTc4LCA0MTc3NCwgMTI4MTE1LCA0MjAyMywgCisgICAgNjIzNCwgNTY2OSwgOTIyNzUsIDAsIDAsIDAsIDEyNzUwNiwgNjgyMDIsIDU1ODMsIDAsIDAsIDQyNDI2LCA1NTgwLCAKKyAgICA0MjI3NiwgMjkyMywgODkyLCAyMjIwLCA0MjQ2NSwgNDEzMzAsIDE5NDk4NywgNTc5NSwgNjU1MTIsIDExOTAwNiwgNjU3MDIsIAorICAgIDAsIDEyMDgwMSwgNjUyNTEsIDAsIDY1NzEwLCAwLCAwLCA2NzY3MiwgMCwgNTM3MCwgMCwgMjkzMSwgMTYzOCwgMTA5NjYsIAorICAgIDEwMTg4LCA2NTg3OCwgMTE4ODQ4LCAwLCA2OTY5NCwgNjk4NzksIDEyODgzMCwgODE3MiwgNDIwMTcsIDAsIDEwODQ0LCAwLCAKKyAgICAxMjgxOTUsIDkyNDI0LCA2Mzc0LCAwLCAwLCAyODYsIDc4MDIzLCAxMDYyLCAwLCAxMTk5OTksIDAsIDczOTUsIDAsIDEwNzAsIAorICAgIDY0OTAwLCA3MTUzLCA2MDk1LCA0MTg2NSwgMCwgMzAxNSwgMTI4MDIzLCAxMjY0NjUsIDUyMTEsIDk4MzA4MywgNjQwMCwgMCwgCisgICAgMTk0OTgzLCA3MDA1NCwgODE4OSwgMTEyNzYsIDAsIDAsIDM3MiwgMTI4ODI5LCAwLCAxMTg4NzQsIDQyMTAyLCA0MTU4NSwgCisgICAgMTI4MjAyLCAwLCA0MjEwMSwgMjc2LCA3ODQwMiwgMCwgMzMsIDc0MjI2LCAxMjczMDMsIDkwMDcsIDExODc5NiwgNDE1ODgsIAorICAgIDY2MDMzLCA0MjcsIDEwNzYzLCAxMTg4MTksIDAsIDEyNzg4NCwgMCwgMTAzMSwgNjI1NywgMCwgNDIxMDQsIDAsIDk4Mzk3MSwgCisgICAgMjMyOCwgOTI0MDksIDEwNzEsIDQyODk5LCAwLCA3NDg0OCwgMCwgOTgzNTgwLCAwLCAxMDQ3LCAwLCAwLCA2NDc5MCwgMCwgCisgICAgNjk3MjMsIDEwNjUxLCAwLCAwLCAwLCAwLCA5MjIwNiwgMTE5MTgxLCA1NzExLCA0MTYzMywgMTIwOTgsIDY1NTcxLCA5MTY2LCAKKyAgICAwLCA1NzEwLCAwLCA2NzkwLCA2NTE2OCwgMTMyMTYsIDAsIDY5NzE2LCA2OTcyNiwgMCwgNjQ2MTEsIDQxNjIzLCAxOTUwMDEsIAorICAgIDU3MTUsIDY5NjU0LCAwLCAwLCA1NzEyLCAyNzYxLCA0MTYyMCwgNjgxMjQsIDMwNzQsIDU3MjIsIDAsIDg2NDMsIDczNzY4LCAKKyAgICAwLCAxMTg5MDYsIDI3NTcsIDExMDY3LCA5NzE4LCA3NDQ5OCwgODkxMCwgMTA2ODksIDY0NzksIDAsIDAsIDAsIDc4NjA3LCAKKyAgICA5MTk2LCA2OTY3MCwgMCwgMCwgMCwgMCwgMTE4OTExLCAwLCAwLCAwLCAwLCAwLCAxMjAwMTAsIDAsIDg3MDEsIDY4MTMwLCAKKyAgICAxMTk2MTYsIDEyMDUyMiwgMCwgNDI0NzcsIDE5NDk5NCwgMTIxMjMsIDQ0OTUsIDQzNTY5LCAwLCAwLCAwLCA2NDk0NiwgCisgICAgMTA5OTIsIDAsIDEyMDAwOSwgMCwgMCwgOTMxOCwgOTM5ODYsIDEzMjQ5LCA2NTY3OSwgNzM4MDgsIDAsIDY1NDU3LCAKKyAgICA0MjI0OSwgNzYzOSwgNDM5OTUsIDY3ODQ1LCA0MjY0MSwgNTQ1NCwgMCwgMCwgMTk0OTk3LCAxMjAwMDUsIDAsIDk4Mzk1NywgCisgICAgNTA4NCwgMCwgMCwgMTE4ODYxLCAwLCA3MzMsIDkxNzg3NiwgNzgwMTQsIDc4NDM2LCA3ODQzNSwgNDE2NzcsIDAsIDkyMTgsIAorICAgIDE3MzEsIDAsIDk4MzczNywgMCwgNjc5OTAsIDAsIDAsIDAsIDEyMDAwMSwgMTI3MDE4LCA5MjQ5MiwgNTE1NSwgMTIwMDAwLCAKKyAgICA1MzU4LCA5ODM3MzUsIDAsIDkxNzc2NywgNjQ0MjQsIDk4MzIyNSwgMzg0MCwgNjQzMTQsIDQxNDMyLCAwLCA3ODMxNSwgCisgICAgNjg0MzAsIDY3OTgwLCA0MzI1MywgNjU5NDMsIDAsIDMzNzEsIDEwOTg4LCAwLCA4NzcxLCAxNDc5LCAwLCAwLCAxMTA5LCAKKyAgICAxMTU4MCwgMCwgNjQ2MDEsIDEyMjA1LCAwLCAwLCA2NDUwNywgODg2OCwgMzk5LCA2Nzk3OCwgNzQ4NDIsIDk4MzI3NiwgCisgICAgOTgzNzEyLCAxMjE0OSwgMTMwODgsIDU1MSwgMCwgMTAxNTYsIDEyMTE5LCA5MjU3MiwgMCwgMjU0NCwgNjUwNzQsIAorICAgIDExOTIxMSwgMCwgMCwgNzgwMTEsIDM1MSwgMTE5MTQ5LCAwLCAwLCA1NTIyOSwgMCwgNzQyNjgsIDAsIDAsIDAsIDQyMzc3LCAKKyAgICAwLCAwLCAwLCA5ODM5MTUsIDAsIDkwMTMsIDQwNTQsIDAsIDk4MzU3MCwgMCwgMCwgNzM5NjAsIDU1ODUsIDY1ODgxLCAKKyAgICAyNTQ5LCA3NDQ2OSwgMCwgMCwgNTU4NCwgODM1OCwgMCwgNjQyMTUsIDkyMjE5LCAxMDkxOSwgMCwgNzk4MCwgMTI2NjAxLCAKKyAgICA5ODM3NzUsIDIyMTgsIDQxODAwLCA1NTg5LCAwLCAyNjY0LCA0MTYxMywgNTU4NiwgMTE4ODkwLCAwLCAxMTM1NiwgMCwgMCwgCisgICAgNDM0NTIsIDc4NjA5LCAwLCA0MjU3MywgNjc4NTYsIDAsIDc4MTI5LCAwLCAwLCA3NDM5MiwgODEzNSwgNjQ1MCwgMTAwNTUsIAorICAgIDc3OTk2LCAwLCAwLCAxMTkyMjUsIDU2NTcsIDAsIDk2MjYsIDAsIDc3OTk0LCAxMDE3OSwgNTY1NCwgMTI5MzksIDkyNTczLCAKKyAgICAxMjA3OTksIDAsIDAsIDU2NTIsIDEwOTQ1LCAwLCA2NjQ4NiwgMCwgMzY2MSwgNzg2MywgMCwgMCwgMCwgNzQ1MDksIAorICAgIDk4Mzg0MywgNTY1OSwgMCwgNzg2OTIsIDY2NzI5LCA1NjU1LCAwLCA0MjE2OCwgMCwgMTA1NSwgOTE3NjI4LCAxMjc3OTIsIAorICAgIDY2MzEwLCA3NDAzMCwgMCwgMTIxNDYsIDczOTU1LCA3Mzk1NiwgMTE2MTgsIDAsIDEyNjk5MCwgMCwgMTAyNzIsIDEwMzA0LCAKKyAgICAxMDM2OCwgNDI1MTgsIDU5NCwgMTAyNDQsIDEwMjQ4LCA3NDA3LCA5ODM4NzgsIDY0ODcwLCAwLCAzNDY3LCA5ODM4ODIsIDAsIAorICAgIDMzMzEsIDk0NiwgMTAyMzEsIDE0OTUsIDgxMzEsIDc0MzMwLCAwLCA5NTYyLCA2OTIyMiwgNjU5MjcsIDAsIDcwMDM2LCAKKyAgICA2OTY5NiwgNjk3NjksIDY0NjU2LCA5ODM3MTcsIDAsIDk0MDIwLCA3MDA1NiwgNTY2NiwgNjUyMjcsIDUzMTgsIDYzOTk0LCAKKyAgICAwLCA5MDkxLCAxMDc5OCwgMCwgMTI4MTY2LCAxMDE4NiwgMCwgNzczMiwgOTgzNzE1LCA2NDU1NiwgMCwgMCwgNTY2OCwgCisgICAgNzQ0NDUsIDAsIDEyODY2MywgNTY3MCwgMTI2NjEwLCAxMjcyOTcsIDExODIwLCAyOTkyLCA3ODI2LCA1NjY3LCAxOTk1MiwgCisgICAgMTIwODA3LCAwLCAxMjc0OSwgNzQ1NTEsIDAsIDAsIDY2NDk2LCA0MzYxLCAxMTkyNjAsIDEzMDYsIDkyODYsIDE0OTcsIAorICAgIDEyODI4NiwgOTQwMDQsIDAsIDAsIDM1NzEsIDEzMjQ3LCAwLCA3OTczLCA2NjM1MywgNjg0MzUsIDc4Mjc4LCA2Nzg5NiwgCisgICAgNDMxOTIsIDAsIDc4MjY1LCA1NTMsIDEyMDY1MywgMCwgMTI4NTU0LCA1ODI5LCAwLCA0NTg3LCA3ODI4NSwgNjU5MTIsIDAsIAorICAgIDEyNzQ2LCAwLCAwLCAxMTk5MjQsIDU2MzMsIDExOTkyNywgOTQxMDEsIDk0MTAyLCA5NDA5OSwgNjQ5MDUsIDk0MTA1LCAKKyAgICA5NTEyLCA5NDEwMywgMTI3NDIsIDY0NDMsIDk4Mzc5NywgMCwgOTEzNSwgMCwgNDE1NjQsIDAsIDU1MjE5LCAxMjg4MzIsIAorICAgIDk4Mzg0MiwgMCwgMTIxNDgsIDAsIDc4Mjk3LCAwLCA2NDI1NiwgMCwgMTE2NjksIDAsIDU2MzQsIDQ1MjQsIDAsIDEyNzI3MCwgCisgICAgMCwgMTE4ODgwLCAyNDI1LCA2NTE4MiwgMTI4NzY5LCA0MzYzNiwgNTIyMSwgNzg0MTAsIDMyOCwgMCwgOTgzODAwLCAKKyAgICA2OTgxNSwgNTYzNiwgMCwgNTMyOSwgMCwgNTYzOCwgMTE5OTE4LCA3OTQwLCA2NDkzOCwgNDMyMjMsIDQzNzYwLCA1NjM1LCAKKyAgICAzMzczLCAyOTg2LCA3ODI5MiwgNzQyMjMsIDM0MzcsIDc4MjkxLCA2MjAzLCA0MjQ3LCAwLCAxMTkyMCwgODI3NCwgMCwgMCwgCisgICAgMTY1NywgNDE1NjEsIDc4Mjk5LCA3ODI5NSwgNTYzOSwgMjk1NCwgNTY2MCwgNTY0MCwgNzgzMDMsIDk4MzY3NiwgNzgzMDAsIAorICAgIDQyMjI3LCAwLCAwLCA0MTYzNywgNjc4NzIsIDAsIDc4MzEwLCA0MTYyNSwgNDMzNjIsIDc4MzA5LCAxMjA3MTMsIDExNzA1LCAKKyAgICA1NjQyLCAwLCA1NDg2LCAwLCA0MzU2LCAxMTcxMCwgMCwgMTIwNTEsIDY5OTM4LCAwLCA1NjQxLCA4MjU5LCAwLCAxMDU4LCAKKyAgICAwLCA2NzYzMCwgMCwgMCwgMTE0NCwgNzg3NTAsIDAsIDQyMjI4LCAwLCA3Mzg5MCwgMTE4OTcyLCAwLCAyODAwLCAwLCAKKyAgICA1NjQ1LCA2NDk2NCwgODY1MiwgMjU0NywgNjY0ODQsIDQzNjM0LCAwLCA1NjA4LCA2NTg5MCwgNDM4MDgsIDAsIDY3NjIxLCAKKyAgICAxMTk5MzQsIDkwMDAsIDAsIDAsIDkyNjczLCAxODY1LCAwLCA1NjEzLCA2OTk1MCwgMCwgMCwgNTYxMCwgMCwgMCwgNjU4MjYsIAorICAgIDIwNjksIDAsIDEwNzg3LCA0Mzk5OSwgMjk5NywgMCwgNTYwOSwgNzgzMTYsIDY1MzE5LCA3ODMxMywgMTIzMTYsIDY1Mzc2LCAKKyAgICAyNDEyLCAwLCA4MTg2LCA5ODA3LCA3NDI2OSwgOTI1NDcsIDEzMTMwLCA2NTg3NCwgMCwgNTgwNywgMCwgMTAwMzAsIDUzMDYsIAorICAgIDEyMzY0LCAxMjgwNjQsIDAsIDExNzA0LCAwLCA5MjU4MywgMTAyMTEsIDAsIDAsIDAsIDAsIDExNzA2LCA5NzEwLCAwLCAwLCAKKyAgICAwLCA0MTMsIDY1NjIzLCA3MTE4LCAwLCA5MTMzLCA3NDI2MiwgMCwgMTA0MiwgMCwgNjQ3NzksIDEyMTcxLCAxMTkyNDAsIAorICAgIDYxODUsIDY0Nzc2LCA0OTg0LCAwLCA3MDgsIDExMzkxLCAwLCAxMjI0MSwgOTI3MjAsIDk4Mzg5MCwgMTMwOCwgMCwgMjUzNCwgCisgICAgODEwLCAwLCAwLCAwLCAwLCAwLCAxOTE3LCAzMDAwLCAwLCAwLCAxMjA3MzksIDIzNjQsIDkyNDQzLCA3NDQ3MCwgNjY2MTgsIAorICAgIDY1NjgwLCAxMjA3NzksIDEwMDI3LCAwLCAxMjgxNTQsIDEyMzM3LCAxMjA3MjIsIDEyNzM2OCwgOTgzMTY3LCAyOTgwLCAKKyAgICA3NTUsIDY5Nzc0LCA5MzEsIDEzMTI0LCA2ODE4MiwgNjM2MywgMjc0OCwgMCwgMCwgNjUwNDEsIDkyMjc2LCA0NDAxMSwgCisgICAgODczMCwgOTgzMDY3LCAxMjc4NTQsIDc4MzEyLCA3Mjc0LCAxMTkyNTAsIDAsIDcyNzUsIDc4MzA0LCA5MzUsIDAsIDY1ODQwLCAKKyAgICAzNzcsIDQyMzI1LCAxMTY0OSwgMTI3MzYzLCA2NTI1MywgNjQzMDEsIDEyODgzNSwgNzgzMDgsIDQyMzQxLCA2NTI4NCwgCisgICAgMjQxNywgMCwgMTI4ODQsIDE5OTEyLCA3OTA3LCAxMDc2OCwgMCwgMTk0OTk4LCAwLCAxMDY3MywgMTE5MjE3LCA3MjQ4LCAwLCAKKyAgICAxMjgzNDYsIDE3ODEsIDU0OTYsIDM2MjcsIDYyLCAxNjQ5LCAwLCA5NjQsIDAsIDEyNzg3NiwgNzgyMjYsIDEyODc3NSwgCisgICAgMTI3NTEyLCAwLCAwLCAwLCAwLCA0MzY4OSwgMTI3OTExLCAxMzE0MiwgNzg4MTIsIDQyNDE1LCA2NjU3NSwgNDU0MiwgCisgICAgNjk5MDksIDQzNTQ3LCAwLCAwLCA3Njc3LCAyOTkxLCA0OTQ2LCA0MjQ1NCwgMTE1NjUsIDc5NDksIDAsIDk4MzkwOSwgCisgICAgMTEzNDEsIDQyNDk0LCAzMDczLCA2NTYyNSwgOTcxNCwgMTE2OTIsIDQ2NTcsIDAsIDkyNzI0LCA2NDc4LCA5ODk4LCAKKyAgICA0MzY3MywgNjUyMzcsIDYyNDEsIDcxMDYsIDQ4NzcsIDk4Mzc4NiwgNjIzOCwgMCwgMTA1NDgsIDEyNzA0OSwgNDQwOSwgMCwgCisgICAgMCwgNjQ3OTgsIDAsIDUzNDYsIDAsIDk0MDQ3LCA2MjM3LCA0ODc0LCAwLCA5MTc2LCAwLCAxMjY1NTMsIDY1MjMxLCAKICAgICA2NTg4NCwgMTI2NzgsIDc4NzQ4LCAxMTg5MTIsIDExMzc4LCA0NDAxOCwgNDI3ODUsIDI0MDgsIDMyNTEsIDAsIDAsIDU2ODUsIAogICAgIDAsIDI0NjEsIDExMDUyLCA3MDkxLCA1MzQyLCA4MzE3LCAwLCA2ODE2MywgNTM0MCwgMCwgMTI3ODIwLCA0MzYzNSwgCi0gICAgNzM5MjgsIDEyNzUyOSwgMCwgMCwgMCwgMTI4NTEwLCA2NTQ4MiwgMCwgOTE0MiwgMCwgMCwgMCwgMTA5MzgsIDAsIAorICAgIDczOTI4LCAxMjc1MjksIDAsIDAsIDAsIDEyODUxMCwgNjU0ODIsIDAsIDkxNDIsIDAsIDEyNjQ3MCwgMCwgMTA5MzgsIDAsIAogICAgIDExODc5MCwgMTE4MiwgMjU0MiwgNDgyNiwgMCwgMCwgMTI4MTc2LCA1MjksIDg1ODAsIDAsIDAsIDEwNTg2LCAxMDc5MCwgCi0gICAgMTA4MzksIDY2MDIzLCA0MTU5MywgNDEyMDcsIDAsIDAsIDQxNTk0LCAyMjUsIDQyODI4LCAwLCAwLCAwLCAxMTM3NiwgCisgICAgMTA4MzksIDY2MDIzLCA0MTU5MywgNDEyMDcsIDAsIDAsIDQxNTk0LCAyMjUsIDQyODI4LCAwLCAwLCA5ODM5MjksIDExMzc2LCAKICAgICA3NDM3OSwgMTA3MjEsIDY3NjY0LCAzNDM4LCA0MjA5NywgMTI3MjY3LCAxMTA4NCwgMzE5NCwgNDE4NzAsIDI2NiwgNzgzMDUsIAotICAgIDAsIDQxODczLCAxMjA1NzUsIDExMzI0LCAxMjA1MzEsIDAsIDg0MjAsIDY0OTE4LCAxMjg4NDQsIDQxODcxLCA0MTMzOCwgCi0gICAgMzczNCwgNzczNCwgNDM2ODMsIDg3NTAsIDY2NjA1LCA2NjAxMSwgMCwgNDA5NjUsIDEyNzkzNywgMCwgNTE2MSwgMTA1NzIsIAotICAgIDAsIDAsIDAsIDY0MzQ5LCA3Mjg3LCA0MjE2MiwgMTI3NTUyLCAwLCAwLCAxMTk0OCwgNjkyMjAsIDEyMzU5LCA0MzQyOSwgCi0gICAgNDEzNjksIDE2OTcsIDEyMTkxLCAwLCA2ODYzMywgNzI4NiwgMCwgNjg2MzUsIDEwMDMxLCAwLCA5ODcwLCA2ODY0NSwgCi0gICAgODYyMCwgNjU4MjQsIDAsIDExOTM4LCAwLCA3Mjg1LCAwLCAxMTk1NzcsIDQyNjc4LCAwLCA0MzY3NywgNDE1ODMsIDAsIAotICAgIDY1Nzk5LCA5MjYyMywgMCwgMCwgMCwgNzgxNjksIDY2MTk5LCAwLCAzNjA5LCA2ODYyNCwgMCwgODMyLCAxMjA2OTMsIAotICAgIDEyMDc3MCwgNzg0NzMsIDY2MDA3LCA3ODQ3MSwgNjU3MDMsIDAsIDAsIDQyNzMyLCA1MTgwLCA5MjY5OSwgNDEzOTUsIAotICAgIDQxNTMwLCAxMTY5MSwgNjQ3NzMsIDkyMjE0LCA3NDAwMiwgMCwgMCwgMTI4NjQ1LCA2MzQ4LCAyNDMsIDEzMjAwLCAwLCAKLSAgICA2MDI0LCA5MjMwOSwgOTk3OSwgMTAwMzcsIDQxNTI5LCAxMDY0OCwgODUzOCwgNDM2ODcsIDAsIDAsIDQyODUsIDY2MTk1LCAKLSAgICAwLCA0MjMwLCAwLCAxMzMwNywgNDMyNTYsIDkyMzUzLCA3NTYzLCA0MjM3NiwgMCwgNjg0NDIsIDEyMDUxMiwgMCwgMCwgCi0gICAgMjE0LCAwLCAwLCA3ODQ2NiwgNjU4OTMsIDEyMjA4LCA5OTczLCAwLCA2NjMxMSwgNjU1ODksIDEyODI3NywgMjYwMywgMCwgCi0gICAgMCwgMCwgMCwgMCwgNjAyMiwgMCwgMjg4NCwgMCwgMTE2MjAsIDAsIDQzLCAwLCA2NjQ1MywgMTAxNiwgNDExMDcsIDAsIAotICAgIDQxMTIxLCAzODg1LCA5MiwgNjU0NTYsIDY0NjA4LCAwLCA3NDgwMSwgMCwgMjA3NCwgMCwgNzgyODMsIDAsIDEyNDUzLCAKLSAgICAxMjgxMjgsIDAsIDc0MjQxLCAwLCA2NzkxLCAxMjQ1NywgNzgyNjgsIDAsIDAsIDAsIDc4Mjc5LCAwLCAwLCA5MjM1OCwgCi0gICAgNjY2MzcsIDc5OTUsIDg3NTksIDQzNDIxLCA3ODI3NywgMTI0NDksIDEyODU1MiwgMCwgMCwgODc1MiwgMzE5NywgNDcyMCwgCi0gICAgMTAxNjUsIDAsIDExOTI0OSwgMCwgMTE1OTUsIDY0ODkzLCAwLCA0MzQzNSwgMCwgMCwgNDk5MywgMCwgNjE2OCwgMTA5MzQsIAotICAgIDE5NDYsIDc0MSwgMCwgNTQ5NCwgNDYzOSwgMCwgMTk5MCwgNjY1ODksIDQ0OTgsIDc4NjY0LCAxMTkxODMsIDAsIDAsIAotICAgIDY5NzM0LCAyOTYwLCA3Mzc3OSwgMCwgODk2OSwgMTI4MTE3LCA0MzQyNCwgMTI3MDU5LCAwLCAyOTUwLCAxMTk1NzksIAotICAgIDYyMTAsIDY1NzUzLCAzNzAsIDAsIDAsIDAsIDQ5NTMsIDAsIDAsIDAsIDAsIDY5MjMwLCAwLCAwLCA2NTY4OCwgMCwgNTA2MywgCi0gICAgMzUxNywgMjk2NCwgNDM2NjMsIDkxNzc2MiwgNjM0NCwgNzQ3OTEsIDEwNTY2LCAxMDE0NCwgNjYzMzMsIDgyNTIsIDcyOSwgCi0gICAgNjYwMTYsIDc4MjUzLCAwLCAwLCA2NDkyMywgMTI4MDQwLCA0MzY2OSwgOTAzMiwgNzgyNjMsIDc4MjY0LCAwLCA0MTIxNSwgCi0gICAgMCwgNjU4ODMsIDAsIDkxNzc3NCwgMTIwNjAyLCAzNzYxLCAwLCAwLCAwLCAwLCAxMjkxMiwgMTE5MDEyLCAzODUwLCAKLSAgICAxMjgxOTEsIDAsIDAsIDAsIDAsIDkwOCwgMCwgODYxMSwgMCwgMCwgMTI3NTU1LCA0MzY5MSwgNDExOTcsIDAsIDg5NzgsIAotICAgIDEyMDU0MCwgMTE5MTM1LCA0MTU4NiwgMTA1MjcsIDAsIDkxNzg0OCwgMzg0OCwgNzg3MzksIDE5NDkzNywgMTI3NTM2LCAKLSAgICA2NTI0MSwgNTMzNiwgMCwgMTI4Nzg2LCA2NjMsIDAsIDEwNzgwLCAwLCAwLCA3ODc2NywgMCwgMTI3MTYzLCA2ODE5MywgCi0gICAgMzQ3LCAwLCAwLCA3ODc3NSwgNjQ2NzUsIDQxNTgyLCA3ODc3NCwgNzg3NDQsIDY1NTc5LCAxMjk4MCwgNzg3NjksIDEyMTQzLCAKKyAgICAxMjAxODMsIDQxODczLCAxMjA1NzUsIDExMzI0LCAxMjA1MzEsIDAsIDg0MjAsIDY0OTE4LCAxMjg4NDQsIDQxODcxLCAKKyAgICA0MTMzOCwgMzczNCwgNzczNCwgNDM2ODMsIDg3NTAsIDY2NjA1LCA2NjAxMSwgOTI1MTQsIDQwOTY1LCAxMjc5MzcsIDAsIAorICAgIDUxNjEsIDEwNTcyLCAwLCAwLCAwLCA2NDM0OSwgNzI4NywgNDIxNjIsIDEyNzU1MiwgMCwgMTI2NjA1LCAxMTk0OCwgCisgICAgNjkyMjAsIDEyMzU5LCA0MzQyOSwgNDEzNjksIDE2OTcsIDEyMTkxLCAwLCA2ODYzMywgNzI4NiwgMCwgNjg2MzUsIDEwMDMxLCAKKyAgICAwLCA5ODcwLCA2ODY0NSwgODYyMCwgNjU4MjQsIDAsIDExOTM4LCAwLCA3Mjg1LCAwLCAxMTk1NzcsIDQyNjc4LCAwLCAKKyAgICA0MzY3NywgNDE1ODMsIDAsIDY1Nzk5LCA5MjYyMywgMCwgMCwgOTgzOTI3LCA3ODE2OSwgNjYxOTksIDAsIDM2MDksIAorICAgIDY4NjI0LCAwLCA4MzIsIDEyMDY5MywgMTIwNzcwLCA3ODQ3MywgNjYwMDcsIDc4NDcxLCA2NTcwMywgMCwgMCwgNDI3MzIsIAorICAgIDUxODAsIDkyNjk5LCA0MTM5NSwgNDE1MzAsIDExNjkxLCA2NDc3MywgOTIyMTQsIDc0MDAyLCAwLCAwLCAxMjg2NDUsIAorICAgIDYzNDgsIDI0MywgMTMyMDAsIDk4MzgwNCwgNjAyNCwgOTIzMDksIDk5NzksIDEwMDM3LCA0MTUyOSwgMTA2NDgsIDg1MzgsIAorICAgIDQzNjg3LCAwLCAwLCA0Mjg1LCA2NjE5NSwgMCwgNDIzMCwgMCwgNzM2NywgNDMyNTYsIDkyMzUzLCA3NTYzLCA0MjM3NiwgMCwgCisgICAgNjg0NDIsIDEyMDUxMiwgMCwgMCwgMjE0LCAwLCAwLCA3ODQ2NiwgNjU4OTMsIDEyMjA4LCA5OTczLCAwLCA2NjMxMSwgCisgICAgNjU1ODksIDEyODI3NywgMjYwMywgMCwgMCwgMCwgNzAwNDcsIDAsIDYwMjIsIDAsIDI4ODQsIDAsIDExNjIwLCAwLCA0MywgCisgICAgMCwgNjY0NTMsIDEwMTYsIDQxMTA3LCAwLCA0MTEyMSwgMzg4NSwgOTIsIDY1NDU2LCA2NDYwOCwgMCwgNzQ4MDEsIDAsIAorICAgIDIwNzQsIDAsIDc4MjgzLCAwLCAxMjQ1MywgMTI4MTI4LCA5ODM4MTcsIDc0MjQxLCAxMjY1NjgsIDY3OTEsIDEyNDU3LCAKKyAgICA3ODI2OCwgMCwgMCwgMCwgNzgyNzksIDAsIDAsIDkyMzU4LCA2NjYzNywgNzk5NSwgODc1OSwgNDM0MjEsIDc4Mjc3LCAKKyAgICAxMjQ0OSwgMTI4NTUyLCAwLCAwLCA4NzUyLCAzMTk3LCA0NzIwLCAxMDE2NSwgMCwgMTE5MjQ5LCAwLCAxMTU5NSwgNjQ4OTMsIAorICAgIDAsIDQzNDM1LCAwLCAwLCA0OTkzLCAwLCA2MTY4LCAxMDkzNCwgMTk0NiwgNzQxLCAwLCA1NDk0LCA0NjM5LCA5ODMxNDcsIAorICAgIDE5OTAsIDY2NTg5LCA0NDk4LCA3ODY2NCwgMTE5MTgzLCAwLCAwLCA2OTczNCwgMjk2MCwgNzM3NzksIDAsIDg5NjksIAorICAgIDEyODExNywgNDM0MjQsIDEyNzA1OSwgMCwgMjk1MCwgMTE5NTc5LCA2MjEwLCA2NTc1MywgMzcwLCAwLCAwLCAwLCA0OTUzLCAKKyAgICA5ODM2NzMsIDAsIDAsIDAsIDY5MjMwLCAwLCAwLCA2NTY4OCwgOTgzMjQwLCA1MDYzLCAzNTE3LCAyOTY0LCA0MzY2MywgCisgICAgOTE3NzYyLCA2MzQ0LCA3NDc5MSwgMTA1NjYsIDEwMTQ0LCA2NjMzMywgODI1MiwgNzI5LCA2NjAxNiwgNzgyNTMsIDAsIAorICAgIDcxMzE3LCA2NDkyMywgMTI4MDQwLCA0MzY2OSwgOTAzMiwgNzgyNjMsIDc4MjY0LCAwLCA0MTIxNSwgMCwgNjU4ODMsIDAsIAorICAgIDkxNzc3NCwgMTIwNjAyLCAzNzYxLCAwLCAwLCA3MDA2OCwgMCwgMTI5MTIsIDExOTAxMiwgMzg1MCwgMTI4MTkxLCAwLCAwLCAKKyAgICAwLCAwLCA5MDgsIDAsIDg2MTEsIDAsIDAsIDEyNzU1NSwgNDM2OTEsIDQxMTk3LCAwLCA4OTc4LCAxMjA1NDAsIDExOTEzNSwgCisgICAgNDE1ODYsIDEwNTI3LCAwLCA5MTc4NDgsIDM4NDgsIDc4NzM5LCAxOTQ5MzcsIDEyNzUzNiwgNjUyNDEsIDUzMzYsIAorICAgIDk4MzI1MSwgMTI4Nzg2LCA2NjMsIDAsIDEwNzgwLCAwLCAwLCA3ODc2NywgOTgzMjQ5LCAxMjcxNjMsIDY4MTkzLCAzNDcsIAorICAgIDAsIDAsIDc4Nzc1LCA2NDY3NSwgNDE1ODIsIDc4Nzc0LCA3ODc0NCwgNjU1NzksIDEyOTgwLCA3ODc2OSwgMTIxNDMsIAogICAgIDY5NjU3LCA3ODUxMiwgMCwgNDM0NDEsIDQxODA0LCA3ODUyMywgMCwgNzg1MjUsIDAsIDEyODg1OSwgNDE1ODQsIDEwNjgxLCAKLSAgICAwLCAwLCA3MzkzOCwgMCwgMTI4MDIyLCA0ODAwLCA2NjY2MSwgMCwgNjYzMDYsIDY0NzE1LCA3ODUzNCwgOTUxOCwgNjYwOSwgCi0gICAgMTA0MzQsIDAsIDExMzE5LCAxMDk3LCAwLCA5MTc4NTAsIDQxNzMwLCAwLCAwLCA3Mzg0NywgNzg3NjEsIDY1MTcyLCAKLSAgICA0MTcyOCwgNDE3MjEsIDAsIDAsIDAsIDQxMjAzLCAwLCAxMzExMCwgNDE3MjYsIDAsIDAsIDEwMDAsIDY5NjUxLCAwLCAKLSAgICA0MTE0MCwgMTIwOSwgNzM5NzgsIDAsIDczNzUwLCAxMDczLCA2MzIxLCA3Nzg3OCwgNDExMzgsIDAsIDY4MjEzLCAwLCAKLSAgICAxMjE2NywgMTExNSwgNDE2MDUsIDk3OTQsIDEyNzA2MiwgNjc2NzEsIDU1MjQ4LCAxMjIzNywgNzg3ODcsIDY2MzE0LCAKLSAgICA2NTg3LCA5MjkwLCA3ODc4MiwgNzg3ODMsIDkyMzEsIDc4NzgxLCAyOTU5LCA3OTI2LCAwLCAwLCAwLCA2NDM5OCwgMCwgCi0gICAgMTE5OTcwLCAxMjMxMSwgMCwgNzg3OTYsIDc4Nzk4LCA3ODc5NCwgNzg3OTUsIDY4NDM0LCA3ODc5MywgNjY2NzAsIDAsIDAsIAotICAgIDEyMjkwLCAxMjAxNjksIDAsIDExOTg3MywgNDIxNDIsIDk5NjgsIDgyMDUsIDAsIDUxMzEsIDAsIDk2MjcsIDc4NTM2LCAKLSAgICA3ODU0MiwgNzg1MzUsIDAsIDE5NDQsIDEyNDgsIDEwMTQ4LCAxMjc3NTUsIDExOTk5MCwgMTE5OTkxLCAxMjcwMSwgNzgzNzYsIAotICAgIDExMzA4LCAxMTk5OTUsIDAsIDExOTk5NywgMTE5OTk4LCA2NTMwNSwgNjUxMDAsIDQwMzEsIDQyNzk0LCAxMjAwMDMsIAotICAgIDcwNzUsIDgxNTQsIDExOTk4NSwgMTIwMDA3LCA0MTgxNywgNzM5MzQsIDQyMjc1LCAxMjAwMTEsIDEyMDAxMiwgNzg1MjYsIAotICAgIDEyMDAxNCwgMTIwMDE1LCA2MDQxLCAwLCA0MTg5OSwgMCwgODAwMiwgMCwgNDM2NCwgMCwgMCwgNjQzMzIsIDAsIDc4MTMsIAotICAgIDkwNjQsIDExOTk4NiwgMTAxMjQsIDc1MjYsIDg2MDEsIDcyODEsIDc4NDU1LCA3Mjc5LCAxMjA0MSwgMTQxOCwgMTA4ODUsIAotICAgIDEyNjczLCAwLCAwLCA5NjYwLCAwLCAxMzAxMiwgNDU3MSwgMCwgMCwgMCwgMTIwNzgsIDI5NzAsIDAsIDEwOTMzLCAwLCAKLSAgICA3Nzg3MCwgMCwgMCwgMCwgNDE1OTksIDAsIDEyODgzMSwgMCwgMTI5NTAsIDkyMTYwLCAzNDg2LCAwLCA3ODMxMSwgNDIzOSwgCi0gICAgMCwgMTI3Nzk5LCA2NjUxMSwgMCwgMjYzNywgNjQ2MjksIDg0NjAsIDEyNzA1MywgODQ3NiwgMCwgMCwgMCwgMCwgNjU2NzMsIAotICAgIDEwMTksIDc4NDk1LCA0MTQ4LCAwLCAxMjI4OSwgMCwgNDMxNiwgMCwgMTMxMTksIDAsIDU0MTIsIDY2MjQzLCA5OTM1LCAwLCAKLSAgICA3Mzg2NCwgMCwgNDE3MzQsIDgyMDYsIDc0MDgxLCA5MTYzLCAzMjg2LCA5MDcyLCA1ODY3LCAxMzMwMiwgNzYyMiwgNzEyMCwgCi0gICAgNDE3MzYsIDkyNTQ2LCA0MTczMSwgMCwgNzQwMCwgNTQxNiwgNjg2NjMsIDExODkyNCwgMTA4MTcsIDAsIDQxNTM5LCAKLSAgICAxMjcyODQsIDAsIDczOTYzLCA0MTg1NSwgNDE4NjcsIDY1NTY0LCAxMTI3NywgNjU4OTIsIDExNTM2LCAxMDYyMCwgOTIyNzIsIAotICAgIDcxMTUsIDY2MDMwLCA3MzkzMiwgNTQ5OCwgNzM5NDIsIDQxNTM2LCAwLCA2ODIwNCwgOTI1ODcsIDM0NTksIDg5OTcsIDAsIAotICAgIDAsIDAsIDAsIDkyNTEyLCAwLCA2NjM3NywgNjk3ODEsIDAsIDAsIDc4NTExLCAzMTYxLCAyOTUsIDEyMDIwNywgMCwgCi0gICAgOTIyMjMsIDEyNzg1NiwgNzg3NDIsIDkwMTYsIDQzNDU0LCA2MzkwMywgNjM5MDIsIDQzNjQxLCAwLCAzOTcxLCAwLCAKLSAgICA3Mzk3MiwgMjk1MiwgNzg3NjUsIDExMDM4LCAxMDkwMSwgNjM5MDAsIDYzODk5LCA2Mzg5OCwgMCwgNjY3LCAxMjMzMiwgCi0gICAgNjM4ODcsIDYwODYsIDQxNzIyLCAwLCA1MTcyLCAwLCAwLCA0MTU5LCAwLCAwLCA5ODE1LCA2Mzg4NCwgMTk5MzQsIDYzODgyLCAKLSAgICA0MTE5OCwgODU1NSwgNjM4NzgsIDYzODc3LCA0MjQ2MCwgNjA1MCwgNDI3MDgsIDYzODgxLCA2Mzg3MiwgMCwgNDI0MjEsIDAsIAotICAgIDQxNzIzLCA2Mzg3NSwgNjM4NzQsIDExNDYwLCA3NDMyLCAxOTEzLCA0MTkxMywgNjM4NTIsIDAsIDAsIDQyMzQ4LCAwLCAKKyAgICAwLCA5ODM2ODYsIDczOTM4LCAwLCAxMjgwMjIsIDQ4MDAsIDY2NjYxLCAwLCA2NjMwNiwgNjQ3MTUsIDc4NTM0LCA5NTE4LCAKKyAgICA2NjA5LCAxMDQzNCwgMCwgMTEzMTksIDEwOTcsIDAsIDkxNzg1MCwgNDE3MzAsIDk4MzIxMiwgMCwgNzM4NDcsIDc4NzYxLCAKKyAgICA2NTE3MiwgNDE3MjgsIDQxNzIxLCAwLCAwLCAwLCA0MTIwMywgOTE3NjEyLCAxMzExMCwgNDE3MjYsIDk4Mzg0NiwgMCwgCisgICAgMTAwMCwgNjk2NTEsIDAsIDQxMTQwLCAxMjA5LCA3Mzk3OCwgMCwgNzM3NTAsIDEwNzMsIDYzMjEsIDc3ODc4LCA0MTEzOCwgCisgICAgMCwgNjgyMTMsIDAsIDEyMTY3LCAxMTE1LCA0MTYwNSwgOTc5NCwgMTI3MDYyLCA2NzY3MSwgNTUyNDgsIDEyMjM3LCAKKyAgICA3ODc4NywgNjYzMTQsIDY1ODcsIDkyOTAsIDc4NzgyLCA3ODc4MywgOTIzMSwgNzg3ODEsIDI5NTksIDc5MjYsIDAsIDAsIDAsIAorICAgIDY0Mzk4LCAwLCAxMTk5NzAsIDEyMzExLCA5ODM3MTgsIDc4Nzk2LCA3ODc5OCwgNzg3OTQsIDc4Nzk1LCA2ODQzNCwgCisgICAgNzg3OTMsIDY2NjcwLCAwLCAwLCAxMjI5MCwgMTIwMTY5LCAwLCAxMTk4NzMsIDQyMTQyLCA5OTY4LCA4MjA1LCAwLCA1MTMxLCAKKyAgICAwLCA5NjI3LCA3ODUzNiwgNzg1NDIsIDc4NTM1LCA5ODMyMTAsIDE5NDQsIDEyNDgsIDEwMTQ4LCAxMjc3NTUsIDExOTk5MCwgCisgICAgMTE5OTkxLCAxMjcwMSwgNzgzNzYsIDExMzA4LCAxMTk5OTUsIDAsIDExOTk5NywgMTE5OTk4LCA2NTMwNSwgNjUxMDAsIAorICAgIDQwMzEsIDQyNzk0LCAxMjAwMDMsIDcwNzUsIDgxNTQsIDExOTk4NSwgMTIwMDA3LCA0MTgxNywgNzM5MzQsIDQyMjc1LCAKKyAgICAxMjAwMTEsIDEyMDAxMiwgNzg1MjYsIDEyMDAxNCwgMTIwMDE1LCA2MDQxLCAwLCA0MTg5OSwgMCwgODAwMiwgMCwgNDM2NCwgCisgICAgMCwgMCwgNjQzMzIsIDAsIDc4MTMsIDkwNjQsIDExOTk4NiwgMTAxMjQsIDc1MjYsIDg2MDEsIDcyODEsIDc4NDU1LCA3Mjc5LCAKKyAgICAxMjA0MSwgMTQxOCwgMTA4ODUsIDEyNjczLCAwLCAwLCA5NjYwLCA5ODMyNzIsIDEzMDEyLCA0NTcxLCAwLCAwLCAxMjAxNjQsIAorICAgIDEyMDc4LCAyOTcwLCAwLCAxMDkzMywgMCwgNzc4NzAsIDAsIDEyNzAxNSwgMCwgNDE1OTksIDAsIDEyODgzMSwgMCwgCisgICAgMTI5NTAsIDkyMTYwLCAzNDg2LCAwLCA3ODMxMSwgNDIzOSwgMCwgMTI3Nzk5LCA2NjUxMSwgMCwgMjYzNywgNjQ2MjksIAorICAgIDg0NjAsIDEyNzA1MywgODQ3NiwgOTgzOTY2LCAwLCAwLCAwLCA2NTY3MywgMTAxOSwgNzg0OTUsIDQxNDgsIDAsIDEyMjg5LCAKKyAgICAwLCA0MzE2LCAwLCAxMzExOSwgODQ4OCwgNTQxMiwgNjYyNDMsIDk5MzUsIDAsIDczODY0LCA5ODMyMDEsIDQxNzM0LCAKKyAgICA4MjA2LCA3NDA4MSwgOTE2MywgMzI4NiwgOTA3MiwgNTg2NywgMTMzMDIsIDc2MjIsIDcxMjAsIDQxNzM2LCA5MjU0NiwgCisgICAgNDE3MzEsIDAsIDc0MDAsIDU0MTYsIDY4NjYzLCAxMTg5MjQsIDEwODE3LCAwLCA0MTUzOSwgMTI3Mjg0LCAwLCA3Mzk2MywgCisgICAgNDE4NTUsIDQxODY3LCA2NTU2NCwgMTEyNzcsIDY1ODkyLCAxMTUzNiwgMTA2MjAsIDkyMjcyLCA3MTE1LCA2NjAzMCwgCisgICAgNzM5MzIsIDU0OTgsIDczOTQyLCA0MTUzNiwgMCwgNjgyMDQsIDkyNTg3LCAzNDU5LCA4OTk3LCAwLCAwLCAwLCAwLCAKKyAgICA5MjUxMiwgMCwgNjYzNzcsIDY5NzgxLCAwLCA5ODM2OTAsIDc4NTExLCAzMTYxLCAyOTUsIDEyMDIwNywgMCwgOTIyMjMsIAorICAgIDEyNzg1NiwgNzg3NDIsIDkwMTYsIDQzNDU0LCA2MzkwMywgNjM5MDIsIDQzNjQxLCAwLCAzOTcxLCAwLCA3MDA2MywgMjk1MiwgCisgICAgNzg3NjUsIDExMDM4LCAxMDkwMSwgNjM5MDAsIDYzODk5LCA2Mzg5OCwgOTQwNDMsIDY2NywgMTIzMzIsIDYzODg3LCA2MDg2LCAKKyAgICA0MTcyMiwgMCwgNTE3MiwgMCwgMCwgNDE1OSwgMCwgMCwgOTgxNSwgNjM4ODQsIDE5OTM0LCA2Mzg4MiwgNDExOTgsIDg1NTUsIAorICAgIDYzODc4LCA2Mzg3NywgNDI0NjAsIDYwNTAsIDQyNzA4LCA2Mzg4MSwgNjM4NzIsIDAsIDQyNDIxLCAwLCA0MTcyMywgCisgICAgNjM4NzUsIDYzODc0LCAxMTQ2MCwgNzQzMiwgMTkxMywgNDE5MTMsIDYzODUyLCAxMjY2MzYsIDAsIDQyMzQ4LCA3Mzg5MiwgCiAgICAgNjc1MiwgNDQ2LCA0MTkxMSwgMTI3OTA2LCA2Mzg1MSwgNjM4NTAsIDQxOTEwLCAwLCA2Mzg0NiwgMjk3MiwgMTI5MzIsIAogICAgIDcyNjIsIDAsIDYzODQ5LCA2Mzg0OCwgNjM4NDcsIDEyODA3MCwgNjU3MCwgODMwMiwgNzI1OSwgNjM4NDIsIDQxNzgsIAogICAgIDEwNzQ2LCA3MjUwLCAxMzIxNCwgMTAwNDEsIDgxMDUsIDYzODkyLCAwLCAxMTg5ODMsIDExMDUsIDQxODAsIDAsIDEyMDk0LCAKICAgICA5NDk3LCAwLCA2Mzg5MSwgNjM4OTAsIDYzODg5LCA2Mzg4OCwgNTUzOCwgOTk4NywgMCwgMTE4OTMyLCAxNjc4LCAxMzI3NCwgCiAgICAgNTUyLCAxMjA2NTQsIDQ0MDEwLCAxMDc4NSwgMCwgMTE5MTcwLCA0NTU3LCA3NDQ1OSwgOTE1OSwgMTAxNzEsIDEzMTI1LCAKICAgICA2Mzg2MCwgNTU0MCwgNjM4NTgsIDYzODY1LCAyODEsIDEzMjQyLCA2Mzg2MiwgNzQxNTQsIDAsIDU1MzYsIDY1NTY4LCAKLSAgICA2Mzg1NywgMTM4OCwgNzQxNjksIDAsIDEwNzcsIDAsIDY1MDk5LCAxMTUzMSwgNTgzNCwgMCwgMCwgMCwgMCwgNDI3NzMsIDAsIAotICAgIDAsIDAsIDExOTIyMCwgMCwgMzY2MywgMCwgMTExMiwgMTE5MTIyLCA4Njg2LCAwLCA1MzM0LCA2NTA4MSwgNDMyNDksIAotICAgIDc0Nzc4LCAxMjc5NjgsIDExMDc3LCAwLCA2NTA5LCAwLCA1MzI3LCAwLCAxOTkwNywgNjM4NjksIDM0NzgsIDc1ODMsIAotICAgIDc2NzksIDI5MDMsIDAsIDMwMDEsIDExNTgsIDg3NDUsIDAsIDczNzQ4LCA2Mzg2NiwgMCwgMTkxNSwgNDg0NiwgMCwgCi0gICAgNjYzNzEsIDExODk4NCwgNDIxMDUsIDI5OTAsIDEyMDEyOCwgODA1LCA2OTIzOCwgNjQ0MzgsIDEyMDcwLCA4NzYwLCAxMTE3LCAKLSAgICAxMTg5ODcsIDEyMjEyLCAxMjAxMjMsIDY1MTc0LCA0MjM1NywgNjM4MzUsIDYzODM0LCAwLCA3ODI0MCwgMTIyMjUsIAotICAgIDYzODM4LCA2MzgzNywgMCwgMCwgNjM4MzMsIDYwNDIsIDY2MzYwLCA4MDgzLCAwLCAwLCA2MzgyMSwgNjM4MjAsIDYzODE5LCAKLSAgICA2MzgxOCwgMCwgNTIyNywgOTA0NywgNjM4MjIsIDEyNzE2MiwgNjA5MSwgMCwgMTA2OTEsIDU2MCwgNTY0MywgODIyNiwgCi0gICAgMTE5NTc4LCA2MzgxMiwgNjM4MTEsIDYzODEwLCA2MzgwOSwgNTU0MiwgNjM4MTUsIDYzODE0LCA2MzgxMywgNjA0NywgCi0gICAgMTU5NywgMTIwMTQzLCA3ODAsIDIwNiwgNzc5MjUsIDQ5MzYsIDY1MTQ3LCA4MTY4LCA2MzkzMCwgMjA3NiwgMTA5MywgCi0gICAgOTg4MiwgNjM5MzQsIDIwODIsIDYzOTMyLCAxMjgxNTAsIDYzOTI5LCAzNTQ2LCAxNjA1LCA3NzkzNCwgOTgwNiwgNDM0NzIsIAotICAgIDc3OTMzLCA4NDAwLCAxMTM0MywgMjA4NiwgMCwgNjM5MjYsIDI5ODQsIDU5NjgsIDkyODcsIDAsIDQ2MTgsIDQyMjA5LCAKLSAgICA0MzQzMSwgMTMxNjksIDUyOTAsIDIwODksIDE2OTUsIDEwNzQzLCAxMDg4LCA2MzgyNSwgNzI2OCwgMTA4NCwgMTA4NSwgCi0gICAgNjM4MjksIDEwODMsIDEwMTMxLCA3MjgzLCAwLCA2Mzk3MCwgMTI4MzU4LCAxMDkyLCA0NzU0LCA3MjczLCA1MjUyLCAKLSAgICA0NDAxNiwgNDM2MjcsIDEyNzkyMSwgMCwgNzQwOCwgMTE4MDksIDAsIDAsIDAsIDI5NjUsIDcyNTgsIDg4MDgsIDAsIDEwODksIAotICAgIDQxODcsIDYzOTM3LCA0MjExOSwgNDIxMjAsIDAsIDk0MCwgNTc4NywgMTAwOTksIDYzOTM4LCAwLCA3NDQ5NCwgMTI0NjMsIAotICAgIDI5OTQsIDAsIDExODgyNywgMCwgOTY2NCwgNzc5MzksIDc3OTQwLCA2Nzg5MiwgNzc5MzgsIDc0MzQzLCAwLCAwLCA2NjAsIAotICAgIDEwMTI3LCA2NjYsIDkwMjIsIDU1MzIsIDQzNjY3LCA1NTMzLCA3Nzk0MSwgNzg1MDcsIDYxMTgsIDIyMiwgOTc5LCAzODg0LCAKLSAgICAwLCA3NDE1MSwgOTI2NTIsIDY1MDIsIDAsIDEyNzExOCwgMTI4Njk1LCA2Mzk1MSwgMTI0NjUsIDAsIDAsIDEyODc4MiwgCi0gICAgNjM5NDYsIDE3MDcsIDYzOTI0LCAxMjQ2MSwgNjM5NTAsIDYzODk3LCA2Mzk0OCwgNjM5NDcsIDYzOTQ1LCA2MDM4LCAKLSAgICA2Mzk0MywgNjM5NDIsIDY0Njg1LCA2Mzg5NSwgNjU4MzgsIDAsIDc3NzYsIDAsIDAsIDEyNzc3MywgMTIwNDQ0LCA2OTczMCwgCi0gICAgODAxLCA0MzE2NSwgMTY5MCwgNjM5MTksIDYzOTE4LCA2MzkxNywgMTMyNzcsIDQzNjU5LCAxMjk1MSwgMTIwNjM4LCA5OTA2LCAKLSAgICAyMDU0LCAyMzM0LCA3ODUxNSwgNjM5MTYsIDU0ODMsIDYzOTE0LCA2OTczNywgNjM5MTEsIDU0ODQsIDYzOTA5LCA2MzkwOCwgCi0gICAgMjUzOSwgMCwgNDM5ODAsIDU0ODUsIDAsIDQyNjk3LCA5MDYxLCA1NTM0LCAxMDY3MiwgNDUwMiwgMCwgMjUzLCAwLCAKLSAgICA2ODIwOCwgMCwgOTIwMywgNzQyMzEsIDAsIDExNTMwLCA5MjU0MiwgNjg2NjgsIDAsIDEyODgxNiwgMCwgMTA0NzQsIAotICAgIDQzNDI2LCAxMzI1NywgNDIzNTQsIDAsIDAsIDAsIDE5NTA2NSwgMCwgODQxMywgMCwgMCwgNTY5MywgNzI3MiwgMCwgCi0gICAgMTMyMDksIDY0NDcwLCA2NTgzMSwgNzg0NjAsIDE5NTA2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4MTMzLCAxMjc3NjcsIAotICAgIDY2NjA4LCAzMTExLCA0MTg2MywgODgwNCwgNDI5MTMsIDkyMTg3LCA3MjcwLCAwLCA2NjYwNiwgNjYyOCwgMTA3NiwgNzQzMywgCi0gICAgMTQzNiwgNzM4NDQsIDU1MjI2LCAxMjgzNTMsIDYzOTgyLCA3MzkzLCAxMjgwNywgNDM0MTMsIDYzOTA2LCAxNTk4LCAKLSAgICA2MzkwNCwgMCwgMCwgNDE3MjksIDQ0MjMsIDEzMDcsIDAsIDEwNTE1LCA0MTU4OSwgMTI4Njk4LCAwLCA2MjE4LCAwLCAKLSAgICAxNDMwLCAwLCAwLCAxMjA2MDYsIDc4NzU0LCA1NDEzLCA3NjE5LCAzMjU1LCAzNDkzLCA3NDAzMiwgMTE1NDksIDEwNzM1LCAKLSAgICA0MTc0MywgNzM5MzcsIDY4MDEsIDAsIDQ1MTgsIDEwOTkwLCA2NTA3MywgNTE2NywgNDQ4MSwgMzc3MSwgMCwgMjcxMCwgMCwgCi0gICAgNjkyNDMsIDQxNzI0LCAwLCA0MzA3MywgNDE2OTAsIDEyNDc5LCAwLCAwLCAwLCAwLCAxMTk2NTksIDE2MjgsIDEyNzE0OSwgCi0gICAgMCwgMCwgNjUyNjIsIDYzMzMsIDEwNzgzLCA0MjMxNSwgMCwgNjM4NTUsIDEyMDY4MywgMCwgMCwgNTMzOSwgNzQzMjMsIDAsIAotICAgIDEzMDA0LCAwLCA0NDU3LCAwLCAwLCAwLCAwLCA1Njg0LCA4Njc4LCAxMDkxNCwgMCwgNTY4OSwgNjU4MDcsIDAsIDY4NDY0LCAKLSAgICAxMjYzMywgMTI4NzAsIDY5NzA1LCA2NTE4MywgNTY4OCwgMTE5MjYsIDYwMzMsIDYzMTAsIDU2ODYsIDAsIDc0MjUxLCAwLCAKLSAgICAxMjA2NDcsIDAsIDUwLCAxMDU1OCwgOTg3MSwgMCwgNDM2NTUsIDAsIDAsIDAsIDY2NDY4LCAwLCAxMzI1OSwgNDQ0OCwgMCwgCi0gICAgMCwgMCwgMCwgNjc4NTMsIDAsIDEwNjQwLCAxMTUzOSwgMTE1MSwgMCwgOTE3NjA3LCAxMjc1NDQsIDEyNzA3OSwgMTk1MDUwLCAKLSAgICAxMjc4NTIsIDAsIDAsIDAsIDEyNTAxLCA2NDYwNCwgMCwgMTE1MjcsIDExODg3MCwgODgxMiwgMCwgMTE1MzgsIDg2NzMsIAotICAgIDEyNjUwLCAxMTAyMCwgMCwgNjY0NjcsIDIxMDUsIDgwODcsIDc4MTYzLCA2OTYzMiwgOTg5NCwgMCwgMCwgMCwgNDYzNiwgCi0gICAgNTUyNjIsIDc4NTEzLCA0NTE1LCAyMzgyLCAwLCAxMjcwNTUsIDAsIDEyMDQ5NSwgMCwgMTI4Mjg0LCAxMjI3NywgMTk0NjI3LCAKLSAgICAxMTk5NSwgOTI1NTMsIDAsIDEyMTU4LCAwLCA4NzQxLCAxMDE5NywgMCwgOTI0MjYsIDAsIDY1MzEsIDAsIDEyNzg0NiwgCi0gICAgNDczLCA0MzQxNSwgMCwgMCwgMTg3MywgMTA4NywgMCwgMCwgMCwgNzg1MjcsIDY2NDM5LCA0MzIxOCwgMCwgMTk0NzE2LCAKLSAgICA3MjM3LCAxMjUwNCwgNzQyODIsIDAsIDAsIDAsIDk0ODksIDAsIDAsIDQzODQsIDc0MjIwLCAxOTUwNTUsIDIwNTgsIAotICAgIDEyODg2MywgMTMyOTUsIDQzMTkxLCAxMjgwMzAsIDAsIDExNTQsIDM4NTcsIDEyMDUsIDAsIDAsIDEzMTAwLCAxMjk1OCwgCi0gICAgMTIwNzA2LCA3NDE2OCwgMCwgMCwgNDQyMSwgMTA1OTIsIDAsIDQ5NSwgMCwgNDE3MTIsIDc5ODMsIDAsIDEyMDc3OSwgMCwgCi0gICAgNjM0NywgMCwgNzY1NCwgNDE3MTAsIDQxOTYsIDAsIDQzNywgNDE3MDksIDczNzcyLCAwLCAwLCA5NDY1LCAxMzI5MCwgCi0gICAgMTE5MTgwLCA0OTk3LCA2NDMwNiwgMCwgMCwgNDk5OSwgMTk0NjQyLCAwLCAwLCA0NzExLCAxMjA3NjksIDAsIDI3MzksIDAsIAotICAgIDgwNDQsIDc0ODM0LCAxOTQ2NDMsIDQxNzg5LCAxMjgxNDIsIDEwODA5LCAwLCAwLCAwLCAxNzc5LCA2NjAwLCA2NjAxLCAKLSAgICA0MTU0MywgNTMyNSwgNjQyLCA2NDE4NywgMTMwNTgsIDEyMDQ0OSwgMTI4NzUsIDAsIDkyMTg2LCAxMzIyOSwgMCwgMTA1NzUsIAotICAgIDQzMzk5LCAwLCAwLCA0MTc5MSwgMTEwNCwgMCwgMCwgMTA2NTUsIDAsIDAsIDAsIDAsIDEwODIsIDE5NTA0OSwgODQyOCwgCi0gICAgNjU2OSwgMCwgMCwgMCwgMCwgNjc4MywgMCwgMTI5OTMsIDgwNDksIDQxNTQ4LCA0NDAyMSwgNjQ1OCwgMCwgMTI4ODgyLCAKLSAgICA0NzYxLCA2MzgyOCwgNDc2NiwgNjQ2MjMsIDEyNzMsIDQzNDA3LCAwLCAxMTg4NzYsIDE5NTA0NSwgNjkxMiwgMTMxMywgCi0gICAgNjMyMiwgMTA0ODMsIDAsIDQxNTQ1LCAwLCA5MjQ0OSwgMCwgMCwgMCwgMCwgNzg2MjQsIDM0ODQsIDc0MzM3LCAwLCAwLCAKLSAgICA4NTAzLCA1MTIyLCA0MTUyNywgMCwgNjYzMjAsIDAsIDAsIDAsIDAsIDQxNTM3LCA2OTY4MywgODMwMywgODI4MiwgMTE4MTcsIAotICAgIDczODU3LCAxMDAwMywgNzM4NTksIDY1OTA0LCAxOTQ2NjMsIDE2ODYsIDAsIDc4NDA2LCAxMTQ2NywgMzY2NCwgNjU5MjEsIAotICAgIDY0Mjk5LCAxOTQ2NjQsIDAsIDAsIDQzMjQsIDEyNiwgNDIyNDYsIDExOTE1MiwgMCwgNzQzNzgsIDY1OTI2LCA3NzQ0LCAKLSAgICAxOTQ2MzYsIDc0Mjc3LCA3NDMwMiwgNzgwNTIsIDQzODE3LCA2OTY2LCA0MzgyMiwgODEzNiwgMCwgNjU2MDAsIDE2MzMsIDAsIAotICAgIDAsIDQ3NjIsIDExMDMsIDAsIDAsIDQ3NjUsIDAsIDEzMDc4LCAwLCA0NzYwLCA2MzgyNywgMjA1MCwgMTA4NzEsIDQzMTk5LCAKLSAgICAxMTAyLCAwLCA0MjIzNiwgMTI4ODY3LCAxOTQ2NjcsIDExNTQ2LCA3NDc5NCwgMzM3LCAwLCA0MjU5MSwgODYyNywgMTIyNzksIAotICAgIDExMTEsIDAsIDkyMTYxLCA0NzA3LCA2ODIwNiwgMTAxNDMsIDc4ODMsIDEyNzA4MSwgNzg4MCwgNDUyMiwgODY0NSwgNTcwNCwgCi0gICAgMTMwMTAsIDAsIDgzMDQsIDkxNzU2MSwgMCwgMTE5NTc1LCAwLCAwLCA2NjY1NCwgMCwgOTI2NzYsIDAsIDEzMDA4LCAwLCAKLSAgICA0Mzg1LCAwLCAxMzAxMSwgMCwgOTI1NjksIDExOTE2MSwgMTMwMDksIDE2MCwgMjY3NywgMCwgMCwgNDE3OTMsIDY1NzYzLCAKLSAgICA3NDIyMSwgMTIwMTQxLCA0MTc5MiwgNDI3NzAsIDAsIDY1NzYyLCAxMTg4MjksIDQzODIxLCA1NzA5LCAwLCAxMjcxNzcsIAotICAgIDQzODE2LCAwLCAwLCAxMDc5LCAzODY3LCA1NzA4LCAwLCAwLCA0Mzc5NywgNTcwNiwgNjQ3NjgsIDU3MDUsIDg3OTEsIAotICAgIDQwMDUsIDAsIDEwMjM3LCAxMDk5MSwgMCwgNDM0NTksIDkxNzMsIDkxNzU4MSwgOTE3NTgwLCAxMzE3MCwgMTI1NDAsIAotICAgIDkxNzU3NywgNDI2MDUsIDEyMDc2NSwgOTE3NTcwLCA2ODY0NywgOTE3NTcyLCAxMDA1OCwgMCwgNzQ4NjcsIDE5NDY1NCwgCi0gICAgMTI3MDc4LCAzMzM5LCAxMTQ0OCwgMTEwNiwgOTE3NTkxLCA5MTc1OTAsIDkxNzU5MywgMzM0MCwgOTE3NTg3LCA5MTc1ODYsIAotICAgIDkxNzU4OSwgOTE3NTg4LCAxMjA1NDEsIDEwNjA1LCAxMzA5LCA2Mzk2NiwgMTIwNzQzLCAxNzU0LCA5MjIyNiwgMTMyNDYsIAotICAgIDg2NCwgMCwgMTE4OTI2LCA4OTcyLCAwLCA3ODQ5LCAxMjAwOTIsIDkyNTMzLCAxMzI0MCwgMTk1MDY4LCA1MTkyLCA0MzM4LCAKLSAgICAwLCAxMDk0OCwgOTE3NjAxLCAxMzE5OSwgOTI1NzUsIDEyMzYsIDEzMjA4LCAxMzI2MSwgMTMxODksIDEzMTg4LCAxMjAxNjQsIAotICAgIDAsIDc0NDAsIDAsIDEyMDE1MywgOTU1MywgMTU5MCwgNjM3NzcsIDYzNzc2LCAxMzE3OCwgNjM3ODIsIDYzNzgxLCA2Mzc4MCwgCi0gICAgNjM3NzksIDE1ODMsIDAsIDEzMjYwLCA0NTUwLCAwLCA2NDIwNSwgMCwgMCwgNDE1MjIsIDAsIDkyMTY4LCAwLCA5MTc4NTgsIAotICAgIDExMzU0LCAwLCAwLCA0Mjc5NSwgMCwgMTE5MTk1LCAxMTM5NCwgMTk0NjQ2LCAxMzIzNiwgMTMyNzIsIDEzMTk0LCAxMzM0LCAKLSAgICAwLCA0NDc5LCAxMTc4LCA2NTU4NiwgMTIwNjYzLCA2NjY4MSwgMTE5MTkzLCA0NjAxLCAwLCAwLCAwLCAwLCAwLCAxOTQ2NTgsIAotICAgIDAsIDY4MDksIDYzNzg2LCA2MDMxLCAwLCA2Mzc5MSwgNjM3OTAsIDExNDUsIDYzNzg4LCA3OTEwLCA2Mzc4NSwgNDMxNTMsIAotICAgIDc1NCwgMTAxOTIsIDEzMTA1LCA4MTgzLCAxMjA3NDEsIDIwMzcsIDAsIDAsIDEwNzQ3LCAxMjUsIDAsIDY0ODkwLCAwLCAwLCAKLSAgICAwLCA0MTcxOSwgNjM3NTgsIDM1MjMsIDEwNzQsIDEzMjU4LCA5NTM2LCA3NDA3NywgMCwgNDQyNywgNzQyNDIsIDYzNzU3LCAKLSAgICA0MzE0NSwgMTIyMTcsIDYzNzU0LCA0MTUzMiwgMTM0OSwgNjM3NTAsIDYzNzQ5LCAwLCAwLCAwLCA2Mzc1MywgNjM4MDIsIAotICAgIDQxMDg0LCAxMjA2MjIsIDY4MTMzLCA0MTkzMCwgNjM4MDUsIDYzODA0LCA0MzYzMiwgNjM4MDEsIDQxMDgyLCA4MTQwLCAKLSAgICA2Mzc5OCwgNjI2MCwgMCwgMCwgMTE5MjI1LCA2Mzc5MywgMTE5ODgsIDM4OTgsIDEyODI0MSwgMTAyMDEsIDEyMjM4LCAKLSAgICA2Mzc5NSwgNDIxOTQsIDEwMzY3LCAxMjUyMSwgMTA0MzEsIDQyMTE0LCA0MTkzMiwgMTA2OCwgMCwgMTI1MjMsIDEyOTQ1LCAKLSAgICAwLCA0MjIwMywgNzk1MCwgMTA4MDQsIDYzNzcxLCA0Mjc4NywgNDM4NiwgMTIyMjQsIDY5NzMsIDI3OTMsIDEyNDc1LCAwLCAKLSAgICAwLCA2Mzc2OSwgOTUzMCwgMCwgMTIyMzIsIDEzMTM1LCA4NTk2LCA1NjgxLCA2Mzc2MiwgNDU5NSwgNjM3NjAsIDc5MiwgMCwgCi0gICAgNjQ4MDMsIDAsIDg3NDIsIDAsIDExMDUzLCAxMjg3OTYsIDYzNzQ0LCAxMjgxMDcsIDAsIDc1ODgsIDYzNzQ4LCAxNjkzLCAKLSAgICA2Mzc0NiwgNDMyMDQsIDUwNTUsIDY4NDI2LCA5MTc4NTMsIDEwOTAsIDEyMDY3OSwgMTI4MzU2LCAxMTY2NSwgNzQxMzMsIAotICAgIDQ1NTgsIDY1Njg1LCA5NTIzLCAwLCAwLCA3ODY4MSwgMTE1MTMsIDAsIDYxNTcsIDYzNzc1LCA2Mzc3NCwgNjM3NzMsIAotICAgIDEzMTkxLCAxMjE3MCwgMzUwMCwgMzEzOSwgMCwgMzE3MCwgMTI0ODUsIDAsIDEwODcyLCA3ODI3MSwgMTMwMDYsIDY0NDMzLCAKLSAgICAwLCAwLCA5NDEsIDAsIDAsIDAsIDY1NTQxLCAxMTA2MywgMCwgODIyOCwgMCwgNDIwNjUsIDAsIDAsIDAsIDAsIDkyNDU1LCAKLSAgICA3Mzg2LCAwLCA2NDQ0NCwgMCwgMTE5ODYzLCA0MzYwMywgMCwgNjUzOTcsIDI4OCwgMCwgMCwgMCwgMTAwMjUsIDkxNzkxNiwgCi0gICAgMjkxOCwgMCwgNjUzMDAsIDExOTg3MSwgOTg4MywgNjQ3MjYsIDI3OTAsIDY1Mzk1LCAzNzkzLCAwLCAxMjc4MjksIDY1MzkzLCAKLSAgICAwLCA3NDEzOCwgMCwgMCwgMCwgNzQxMzksIDkyNzEyLCA2NTM5NCwgMTE1NDgsIDUyNzAsIDAsIDY1Mzk2LCAwLCA2NTgxMywgCi0gICAgMTMyNTYsIDEyODIsIDEyMDc3MSwgMCwgMCwgMTA4ODgsIDAsIDY1MjQyLCAwLCAzMzMwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3NDI1OSwgMzMwNCwgNDI3NTMsIDAsIDAsIDAsIDE2MjcsIDAsIDAsIDAsIDUzNzEsIDEzMTE2LCAwLCAxODI2LCAxMTg3OTQsIAotICAgIDAsIDQzMDk0LCAwLCA0MzY1MCwgMCwgMCwgOTAzNSwgMCwgMCwgMTI4MDA1LCAwLCA5MjIwNywgNjgxMjUsIDAsIDE2NCwgMCwgCi0gICAgMCwgMCwgNjk1OCwgMCwgNDMxMTYsIDAsIDAsIDEzMjQ1LCAwLCAwLCAxMjczNzYsIDAsIDczODkzLCAxMjc3NTYsIDEyNjY2LCAKLSAgICAxMzE3NSwgMTMyMDcsIDEyMDQxNCwgNjYwMTQsIDEyMDQyOCwgNzQ0NywgNTkyOSwgMCwgNjU1MDksIDAsIDc0NDksIAotICAgIDExMzA2LCAwLCA3MzkyMCwgMzE4MCwgMCwgNjM4MDgsIDkwNTQsIDk3MSwgMTMwNjIsIDAsIDAsIDY1MTk1LCAxMDE2NCwgCi0gICAgOTIyNTIsIDc0NDI4LCAwLCA3ODE0NiwgOTI2MTEsIDAsIDAsIDAsIDEwMDQ1LCAxMjg4MiwgMTMyNzUsIDEyODE2MSwgCi0gICAgMTEwNTcsIDAsIDEzMjc2LCAwLCA0MTUyNSwgNzgxNTAsIDcyNzEsIDExNDQ0LCAwLCAwLCAwLCAxMjIyOSwgNDE1MjMsIDAsIAotICAgIDQzNDExLCA3Mzc1MSwgMCwgNjQ4MTMsIDAsIDAsIDEwNDc2LCAzODU4LCAwLCAzOTMyLCA2NDk1OCwgMCwgMCwgNzM5ODksIAotICAgIDY4MTkyLCAwLCAwLCAzNjksIDAsIDQxNzg0LCAwLCA2NDE2MywgMCwgMCwgMCwgNjU0NzQsIDQ3OTYsIDEyMjkyLCAwLCAKLSAgICA2NTQ3OSwgMCwgNDE3ODEsIDEwNDg2LCA0MTQ4MCwgNDMwMDIsIDk4OTksIDAsIDAsIDQwNCwgMTI4MjEsIDM3NDEsIDAsIAotICAgIDU3ODgsIDgwOTIsIDY4MjEyLCA0MTIyMiwgMTgzMSwgNjYwMjAsIDM5ODIsIDAsIDQzODgsIDAsIDc0NiwgMTIwNzg0LCAwLCAKLSAgICAwLCAxMjAxOCwgNjUyOTQsIDAsIDAsIDAsIDAsIDQ0MjIsIDQ3MDgsIDM3OTksIDc0MjkyLCAxMTkzNTcsIDAsIDc0NDMwLCAKLSAgICAwLCAxMTcwMCwgNDM3NCwgMCwgMTI4MTc5LCAxMzY0LCAwLCA4MDM4LCAwLCA5MTc1OTcsIDEyODY4LCA2OTgxNCwgMCwgCi0gICAgNjczNSwgNzM5NzksIDEzMTc0LCA3Mzk2OCwgMTMyMjUsIDAsIDY5ODA4LCA2NTgzNSwgMCwgMjM2NSwgNzg0MSwgMCwgCi0gICAgNDI4NTUsIDExODg1NiwgNDI4NjYsIDAsIDAsIDAsIDY2NDM4LCA0MTc4NSwgMTI2MTcsIDY0MTcyLCAxMzE3MywgNDM3MiwgCi0gICAgMTE5MzU0LCAwLCAwLCAwLCAwLCA5MjQwMiwgMTI4MDYyLCAxMjk2NSwgMzg0LCA2NDUxMiwgMTA0MDQsIDEwMzQwLCAKLSAgICAxMTkzNTIsIDE1NTYsIDUyNzQsIDEzMjEwLCAxMjAxMjUsIDEwMDE3LCA5NzMzLCA0MTc4NywgMCwgMTI2OTk0LCA0MTM3MywgCi0gICAgNzgwMzksIDEyMzAzLCAwLCAxMzIzMiwgMTMyMzMsIDM0OSwgNDg2MywgNDEzNzEsIDExNjU2LCAwLCAxMjA3MDMsIAotICAgIDExOTg4MywgMTI4NjEsIDQzOTgsIDg1NDMsIDY1NjE4LCAxMjgwMTgsIDEwOTYsIDAsIDAsIDQyNjg4LCAxMjQ0MSwgCi0gICAgMTIzNTUsIDExOTM0OCwgMTE5MzQ3LCA0MzE4LCAxMDQ1MiwgMCwgODAzMiwgMTMyNDMsIDEzMjM3LCAxMjcxOSwgMCwgCi0gICAgMTE5MTAxLCAwLCA2NDg4NCwgMTE5ODcyLCAxMTkzNDUsIDg1OTcsIDAsIDAsIDk4NjQsIDAsIDEyMDc4NSwgMTE5ODc0LCAwLCAKLSAgICAxMzE5NSwgNDE0NTIsIDY0OTYxLCA3NzIyLCAwLCAxMDQ1OSwgMTE5ODc4LCAwLCAxMTk4NzksIDY2NTkwLCAxMjgxMjMsIAotICAgIDQxNTMzLCA2NjMzNywgMCwgOTIxODQsIDAsIDQ5NjUsIDQzNDQ1LCA5MTc1MzYsIDczODQ5LCAwLCA0MzYzOCwgNzg1MzcsIAotICAgIDEyODI4NywgNjI2MSwgMTE5MzQyLCA0MzE0NywgNjY1NzAsIDE5NTcsIDEwNDIwLCA5ODIsIDI3NTYsIDEzMjkyLCAxMzIwNiwgCi0gICAgMTI4ODI4LCAwLCAyOTI1LCA3MzgwOSwgMTMwNTYsIDEyNzU1OSwgMTMyMTIsIDQzMjM4LCAwLCAxMzE5MCwgMTMxODcsIAotICAgIDkyNTQxLCAxMzE5OCwgMTE4NzkzLCAwLCA1MjQyLCAxMTkxNzksIDY0NDc2LCAxNjk0LCA4MjE2LCAwLCA2NzcwLCA0MzMzMSwgCi0gICAgMCwgNjU2MjAsIDAsIDQzNTQ0LCAwLCAwLCA0MTQ0NCwgNjU2MjEsIDEyMDMyNSwgOTE5NywgNTI0NiwgMTE5MTA2LCAKLSAgICAxMzE4NSwgOTcwOSwgMTIwMzIzLCAxMjAzMjIsIDEyMzE0LCA2NTYxNiwgNTIzOCwgMTE5MzMzLCAwLCAxMTkzMzcsIDUyMzYsIAotICAgIDQwOTc5LCAwLCA3NDIwMSwgODI4NiwgMCwgMzkzNiwgMTE5MzMxLCAxMTY5OSwgNDEzNDcsIDEyNzI0OSwgMTMyMzUsIAotICAgIDg4NDIsIDQxMjQ4LCAwLCA0Mzc5LCAxMzIzOSwgMTI2OTIsIDc5NjksIDEyNzI2NiwgNzIxOSwgMTI3MjUwLCAwLCAKLSAgICAxMjA1MDksIDAsIDY2MjI0LCA3MzQsIDI5NzksIDEyMDMwMywgNjU2MTksIDk4NzIsIDk1NywgNjQ5MjEsIDE4NDYsIAotICAgIDY2NjMxLCA0MTQ3NywgMTE5MjU2LCAxMjAzMTAsIDc0NTExLCA0MTc3MCwgMTY3MCwgNjQ0MiwgMTIwMzE3LCA0MjQ0NiwgCi0gICAgNTM3OSwgMTIwMzE4LCA0MTE2MywgNzQ4MzIsIDEyMDMxNSwgMTIwMzE0LCAxMjgwMjUsIDAsIDQyODQxLCAxMzI2NywgMCwgCi0gICAgMCwgNDE3NzUsIDAsIDcxMzAsIDQxNzczLCAwLCAxMDY2MywgMCwgMCwgMCwgNjE1MSwgMTIxMTAsIDQyNjczLCA2NTU3MiwgCi0gICAgNjUyOTMsIDY1MjUwLCAxMzI2NSwgMTMyNjQsIDY0NTE4LCAwLCA2MTAwLCAwLCA5MjY0NywgNTgwOCwgNjU5MjIsIDAsIAotICAgIDEyOTY3LCA2NjA0MSwgNTYxMiwgNDU4MywgMCwgMCwgNjgwOTcsIDY0NTc1LCAxMjg1MjQsIDExOTY1LCAwLCA2ODM1OCwgMCwgCi0gICAgNjk3ODksIDAsIDkyMjYwLCA2ODEwMiwgOTY5OCwgNzgxNCwgNzQ0NzYsIDExOTY1MSwgMTI4NTE0LCAwLCA0MTkyMSwgCi0gICAgMTE4ODU4LCA5NzU2LCA2OTg1LCAxMTkyNTgsIDc4NDkwLCA3NDIxOSwgMCwgMCwgMTE4OTk3LCA4MDEyLCA1Njc0LCAKLSAgICAxMjM1MywgMCwgMTIzNjEsIDU2NzcsIDU1ODgsIDAsIDQxOTI1LCAxMjgxMjQsIDQxOTIwLCA1NjczLCAxMjA1MzQsIDU2NzYsIAotICAgIDQxOTIzLCAxMjY5NCwgMTE4OTc4LCA1NjcyLCAxMjk0LCAwLCA3ODA1OSwgMCwgNDI1MTEsIDE3MjcsIDEyMDcyNSwgCi0gICAgNDI0MzYsIDAsIDAsIDAsIDc0MjIyLCA4NzE4LCAzNTUwLCA3MzYsIDEwMjY4LCA0NTA1LCAxMDMxNiwgNzQwOTAsIDU4MjYsIAotICAgIDU1MjMyLCA1ODEzLCAwLCAxMjA3MTIsIDU4NDEsIDU4MzcsIDU1MjM0LCAwLCAzMTA1LCAxMjgyOSwgNTgzOCwgNTc5NiwgMCwgCi0gICAgMTE5NTkyLCA1NzkzLCAwLCA1ODY2LCA1Nzk3LCA0MTAxMSwgNTg2NSwgMTIwMDkxLCA3OTU2LCA1OTgsIDAsIDY0NjQ5LCAKLSAgICA1ODA2LCA0MjM5OCwgMCwgOTAzNywgNTY3MSwgMTIwMDQxLCAwLCAwLCAwLCAxMjg4NTUsIDAsIDg0NywgMTI4MjQyLCAKLSAgICA5NTI5LCAwLCA2NjY1NywgNjk4MCwgMCwgMTIwMDM1LCA3ODQ4NCwgMCwgMCwgMTIwMDMzLCA3ODQ4NiwgMCwgMCwgCi0gICAgMTIwMDM5LCA0MjY4MywgMCwgMCwgNzExNCwgMCwgMCwgNDMxOTAsIDY1NDYzLCAxNTU0LCAwLCA0MjYxMSwgNDI1NjMsIDAsIAotICAgIDU2NTEsIDI5MjksIDY3OTIsIDQzMjAxLCAwLCAxOTk2MywgNTY5OCwgMCwgMCwgMCwgMCwgNTY0NCwgMTAyOTIsIDY1NTQ2LCAKLSAgICA2OTcyNywgNjgxNDEsIDgzNzIsIDAsIDY1MTE2LCAwLCAxMjAwMjIsIDEwMTc1LCAxMDM4OCwgNDI3OTksIDAsIDQxMDEzLCAKLSAgICAxMDU2OCwgMCwgMCwgMjg2OSwgMCwgNDEwMTUsIDE5NDY5MiwgMjc4NSwgNDM2NiwgMCwgMTA5NTQsIDQxODAyLCAwLCAKKyAgICA2Mzg1NywgMTM4OCwgNzQxNjksIDAsIDEwNzcsIDk4MzU3NywgNjUwOTksIDExNTMxLCA1ODM0LCAwLCAwLCAwLCAwLCAKKyAgICA0Mjc3MywgMCwgMCwgMCwgMTE5MjIwLCAwLCAzNjYzLCAwLCAxMTEyLCAxMTkxMjIsIDg2ODYsIDAsIDUzMzQsIDY1MDgxLCAKKyAgICA0MzI0OSwgNzQ3NzgsIDEyNzk2OCwgMTEwNzcsIDAsIDY1MDksIDAsIDUzMjcsIDAsIDE5OTA3LCA2Mzg2OSwgMzQ3OCwgCisgICAgNzU4MywgNzY3OSwgMjkwMywgMCwgMzAwMSwgMTE1OCwgODc0NSwgNDM3NDYsIDczNzQ4LCA2Mzg2NiwgNzg2MjYsIDE5MTUsIAorICAgIDQ4NDYsIDAsIDY2MzcxLCAxMTg5ODQsIDQyMTA1LCAyOTkwLCAxMjAxMjgsIDgwNSwgNjkyMzgsIDY0NDM4LCAxMjA3MCwgCisgICAgODc2MCwgMTExNywgMTE4OTg3LCAxMjIxMiwgMTIwMTIzLCA2NTE3NCwgNDIzNTcsIDYzODM1LCA2MzgzNCwgMCwgNzgyNDAsIAorICAgIDEyMjI1LCA2MzgzOCwgNjM4MzcsIDk4Mzg0NCwgOTgzNzk1LCA2MzgzMywgNjA0MiwgNjYzNjAsIDgwODMsIDAsIDAsIAorICAgIDYzODIxLCA2MzgyMCwgNjM4MTksIDYzODE4LCA5ODM4OTUsIDUyMjcsIDkwNDcsIDYzODIyLCAxMjcxNjIsIDYwOTEsIDAsIAorICAgIDEwNjkxLCA1NjAsIDU2NDMsIDgyMjYsIDExOTU3OCwgNjM4MTIsIDYzODExLCA2MzgxMCwgNjM4MDksIDIyODksIDYzODE1LCAKKyAgICA2MzgxNCwgNjM4MTMsIDYwNDcsIDE1OTcsIDEyMDE0MywgNzgwLCAyMDYsIDc3OTI1LCA0OTM2LCA2NTE0NywgODE2OCwgCisgICAgNjM5MzAsIDIwNzYsIDEwOTMsIDk4ODIsIDYzOTM0LCAyMDgyLCA2MzkzMiwgMTI4MTUwLCA2MzkyOSwgMzU0NiwgMTYwNSwgCisgICAgNzc5MzQsIDk4MDYsIDQzNDcyLCA3NzkzMywgODQwMCwgMTEzNDMsIDIwODYsIDAsIDYzOTI2LCAyOTg0LCA1OTY4LCA5Mjg3LCAKKyAgICAwLCA0NjE4LCA0MjIwOSwgNDM0MzEsIDEzMTY5LCA1MjkwLCAyMDg5LCAxNjk1LCAxMDc0MywgMTA4OCwgNjM4MjUsIDcyNjgsIAorICAgIDEwODQsIDEwODUsIDYzODI5LCAxMDgzLCAxMDEzMSwgNzI4MywgMCwgNjM5NzAsIDEyODM1OCwgMTA5MiwgNDc1NCwgNzI3MywgCisgICAgNTI1MiwgNDQwMTYsIDQzNjI3LCAxMjc5MjEsIDAsIDc0MDgsIDExODA5LCA5MTc2MTgsIDAsIDAsIDI5NjUsIDcyNTgsIAorICAgIDg4MDgsIDAsIDEwODksIDQxODcsIDYzOTM3LCA0MjExOSwgNDIxMjAsIDAsIDk0MCwgNTc4NywgMTAwOTksIDYzOTM4LCAwLCAKKyAgICA3NDQ5NCwgMTI0NjMsIDI5OTQsIDAsIDExODgyNywgMCwgOTY2NCwgNzc5MzksIDc3OTQwLCA2Nzg5MiwgNzc5MzgsIAorICAgIDc0MzQzLCAwLCAwLCA2NjAsIDEwMTI3LCA2NjYsIDkwMjIsIDU1MzIsIDQzNjY3LCA1NTMzLCA3Nzk0MSwgNzg1MDcsIAorICAgIDYxMTgsIDIyMiwgOTc5LCAzODg0LCAwLCA3NDE1MSwgOTI2NTIsIDY1MDIsIDAsIDEyNzExOCwgMTI4Njk1LCA2Mzk1MSwgCisgICAgMTI0NjUsIDAsIDAsIDEyODc4MiwgNjM5NDYsIDE3MDcsIDYzOTI0LCAxMjQ2MSwgNjM5NTAsIDYzODk3LCA2Mzk0OCwgCisgICAgNjM5NDcsIDYzOTQ1LCA2MDM4LCA2Mzk0MywgNjM5NDIsIDY0Njg1LCA2Mzg5NSwgNjU4MzgsIDIyNzYsIDc3NzYsIDk0MDc2LCAKKyAgICAwLCAxMjc3NzMsIDEyMDQ0NCwgNjk3MzAsIDgwMSwgNDMxNjUsIDE2OTAsIDYzOTE5LCA2MzkxOCwgNjM5MTcsIDEzMjc3LCAKKyAgICA0MzY1OSwgMTI5NTEsIDEyMDYzOCwgOTkwNiwgMjA1NCwgMjMzNCwgNzg1MTUsIDYzOTE2LCA1NDgzLCA2MzkxNCwgNjk3MzcsIAorICAgIDYzOTExLCA1NDg0LCA2MzkwOSwgNjM5MDgsIDI1MzksIDAsIDQzOTgwLCA1NDg1LCAwLCA0MjY5NywgOTA2MSwgNTUzNCwgCisgICAgMTA2NzIsIDQ1MDIsIDAsIDI1MywgMCwgNjgyMDgsIDAsIDkyMDMsIDc0MjMxLCAwLCAxMTUzMCwgOTI1NDIsIDY4NjY4LCAwLCAKKyAgICAxMTg5MDcsIDAsIDEwNDc0LCA0MzQyNiwgMTMyNTcsIDQyMzU0LCAxMjgwOTksIDk4MzY4OSwgNzAwNDQsIDE5NTA2NSwgMCwgCisgICAgODQxMywgOTgzODA3LCAwLCA1NjkzLCA3MjcyLCAwLCAxMzIwOSwgNjQ0NzAsIDY1ODMxLCA3NDM1MCwgMTk1MDYzLCAwLCAwLCAKKyAgICAwLCAxMjY2MzksIDAsIDAsIDk0MDc4LCAxMjgxMzMsIDEyNzc2NywgNjY2MDgsIDMxMTEsIDQxODYzLCA4ODA0LCA0MjkxMywgCisgICAgOTIxODcsIDcyNzAsIDAsIDY2NjA2LCA2NjI4LCAxMDc2LCA3NDMzLCAxNDM2LCA3Mzg0NCwgNTUyMjYsIDEyODM1MywgCisgICAgNjM5ODIsIDczOTMsIDEyODA3LCA0MzQxMywgNjM5MDYsIDE1OTgsIDYzOTA0LCAwLCAwLCA0MTcyOSwgNDQyMywgMTMwNywgCisgICAgMCwgMTA1MTUsIDQxNTg5LCAxMjg2OTgsIDAsIDYyMTgsIDAsIDE0MzAsIDAsIDAsIDEyMDYwNiwgNzg3NTQsIDU0MTMsIAorICAgIDc2MTksIDMyNTUsIDM0OTMsIDc0MDMyLCAxMTU0OSwgMTA3MzUsIDQxNzQzLCA3MzkzNywgNjgwMSwgOTgzNjI0LCA0NTE4LCAKKyAgICAxMDk5MCwgNjUwNzMsIDUxNjcsIDQ0ODEsIDM3NzEsIDEyMDE1OCwgMjcxMCwgMCwgNjkyNDMsIDQxNzI0LCAwLCA0MzA3MywgCisgICAgNDE2OTAsIDEyNDc5LCA5ODM2MjYsIDAsIDAsIDk4MzgwOSwgNzAwNDYsIDE2MjgsIDEyNzE0OSwgOTgzNDc5LCA5ODM3MjIsIAorICAgIDY1MjYyLCA2MzMzLCAxMDc4MywgNDIzMTUsIDAsIDYzODU1LCA5NDA1NiwgMCwgMCwgNTMzOSwgNzQzMjMsIDAsIDEzMDA0LCAKKyAgICAwLCA0NDU3LCAwLCAwLCAwLCAwLCA1Njg0LCA4Njc4LCAxMDkxNCwgMCwgNTY4OSwgNjU4MDcsIDAsIDY4NDY0LCAxMjYzMywgCisgICAgMTI4NzAsIDY5NzA1LCA2NTE4MywgNTY4OCwgMTE5MjYsIDYwMzMsIDYzMTAsIDU2ODYsIDAsIDc0MjUxLCAwLCAxMjA2NDcsIAorICAgIDAsIDUwLCAxMDU1OCwgOTg3MSwgNDI2MTIsIDQzNjU1LCAwLCAwLCAwLCA2NjQ2OCwgMCwgMTMyNTksIDQ0NDgsIDAsIAorICAgIDk4MzgzNiwgMCwgNzAwNDMsIDY3ODUzLCAwLCAxMDY0MCwgMTE1MzksIDExNTEsIDAsIDkxNzYwNywgMTI3NTQ0LCAKKyAgICAxMjcwNzksIDE5NTA1MCwgMTI3ODUyLCAwLCAwLCAwLCAxMjUwMSwgNjQ2MDQsIDAsIDExNTI3LCAxMTg4NzAsIDg4MTIsIDAsIAorICAgIDExNTM4LCA4NjczLCAxMjY1MCwgMTEwMjAsIDAsIDY2NDY3LCAyMTA1LCA4MDg3LCA3ODE2MywgNjk2MzIsIDk4OTQsIDAsIAorICAgIDAsIDAsIDQ2MzYsIDU1MjYyLCA3ODUxMywgNDUxNSwgMjM4MiwgMCwgMTI3MDU1LCAwLCAxMjA0OTUsIDAsIDEyODI4NCwgCisgICAgMTIyNzcsIDE5NDYyNywgMTE5OTUsIDkyNTUzLCAwLCAxMjE1OCwgMCwgODc0MSwgMTAxOTcsIDAsIDkyNDI2LCAwLCA2NTMxLCAKKyAgICAwLCAxMjc4NDYsIDQ3MywgNDM0MTUsIDAsIDk4MzY0MSwgMTg3MywgMTA4NywgMCwgMCwgMCwgNzg1MjcsIDY2NDM5LCAKKyAgICA0MzIxOCwgOTgzMTIzLCAxOTQ3MTYsIDcyMzcsIDEyNTA0LCA3NDI4MiwgMCwgOTgzNTcxLCAwLCA5NDg5LCAwLCAwLCAKKyAgICA0Mzg0LCA3NDIyMCwgNjM4NDUsIDIwNTgsIDEyODg2MywgMTMyOTUsIDQzMTkxLCAxMjgwMzAsIDAsIDExNTQsIDM4NTcsIAorICAgIDEyMDUsIDAsIDAsIDEzMTAwLCAxMjk1OCwgMTIwNzA2LCA3NDE2OCwgMCwgMCwgNDQyMSwgMTA1OTIsIDAsIDQ5NSwgCisgICAgMTE5MDA3LCA0MTcxMiwgNzk4MywgMCwgOTM5OTcsIDAsIDYzNDcsIDEyMDE2NSwgNzY1NCwgNDE3MTAsIDQxOTYsIDAsIAorICAgIDQzNywgNDE3MDksIDczNzcyLCAwLCAwLCA5NDY1LCAxMzI5MCwgMTE5MTgwLCA0OTk3LCA2NDMwNiwgMCwgMCwgNDk5OSwgCisgICAgMTk0NjQyLCAwLCAxMjY1ODIsIDQ3MTEsIDEyMDc2OSwgMCwgMjczOSwgMCwgODA0NCwgNzQ4MzQsIDE5NDY0MywgNDE3ODksIAorICAgIDEyODE0MiwgMTA4MDksIDAsIDAsIDAsIDE3NzksIDY2MDAsIDY2MDEsIDQxNTQzLCA1MzI1LCA2NDIsIDY0MTg3LCAxMzA1OCwgCisgICAgMTIwNDQ5LCAxMjg3NSwgMCwgOTIxODYsIDEzMjI5LCAwLCAxMDU3NSwgNDMzOTksIDAsIDAsIDQxNzkxLCAxMTA0LCAwLCAwLCAKKyAgICAxMDY1NSwgMCwgMCwgMCwgMCwgMTA4MiwgMTk1MDQ5LCA4NDI4LCA2NTY5LCAwLCAwLCAwLCA2OTg0OSwgNjc4MywgMCwgCisgICAgMTI5OTMsIDgwNDksIDQxNTQ4LCA0NDAyMSwgNjQ1OCwgOTgzNzk4LCAxMjg4ODIsIDQ3NjEsIDYzODI4LCA0NzY2LCAKKyAgICA2NDYyMywgMTI3MywgNDM0MDcsIDAsIDExODg3NiwgMTk1MDQ1LCA2OTEyLCAxMzEzLCA2MzIyLCAxMDQ4MywgOTgzNjAzLCAKKyAgICA0MTU0NSwgMCwgOTI0NDksIDAsIDAsIDAsIDAsIDc4NjI0LCAzNDg0LCA3NDMzNywgMCwgMCwgODUwMywgNTEyMiwgNDE1MjcsIAorICAgIDAsIDY2MzIwLCA5ODM4MDIsIDAsIDAsIDAsIDQxNTM3LCA2OTY4MywgODMwMywgODI4MiwgMTE4MTcsIDczODU3LCAxMDAwMywgCisgICAgNzM4NTksIDY1OTA0LCA3MzYzLCAxNjg2LCAwLCA3ODQwNiwgMTE0NjcsIDM2NjQsIDY1OTIxLCA2NDI5OSwgMTk0NjY0LCAwLCAKKyAgICAwLCA0MzI0LCAxMjYsIDQyMjQ2LCAxMTkxNTIsIDAsIDc0Mzc4LCA2NTkyNiwgNzc0NCwgMTk0NjM2LCA3NDI3NywgNzQzMDIsIAorICAgIDc4MDUyLCA0MzgxNywgNjk2NiwgNDM4MjIsIDgxMzYsIDAsIDY1NjAwLCAxNjMzLCAwLCAwLCA0NzYyLCAxMTAzLCAwLCAwLCAKKyAgICA0NzY1LCA5ODM0ODQsIDEzMDc4LCAwLCA0NzYwLCA2MzgyNywgMjA1MCwgMTA4NzEsIDQzMTk5LCAxMTAyLCAwLCA0MjIzNiwgCisgICAgMTI4ODY3LCAxOTQ2NjcsIDExNTQ2LCA3NDc5NCwgMzM3LCAwLCA0MjU5MSwgODYyNywgMTIyNzksIDExMTEsIDAsIDkyMTYxLCAKKyAgICA0NzA3LCA2ODIwNiwgMTAxNDMsIDc4ODMsIDEyNzA4MSwgNzg4MCwgNDUyMiwgODY0NSwgNTcwNCwgMTMwMTAsIDAsIDgzMDQsIAorICAgIDkxNzU2MSwgMCwgMTE5NTc1LCAyMjkzLCAwLCA2NjY1NCwgMCwgOTI2NzYsIDAsIDEzMDA4LCAwLCA0Mzg1LCAwLCAxMzAxMSwgCisgICAgMCwgOTI1NjksIDExOTE2MSwgMTMwMDksIDE2MCwgMjY3NywgMCwgMCwgNDE3OTMsIDY1NzYzLCA3NDIyMSwgMTIwMTQxLCAKKyAgICA0MTc5MiwgNDI3NzAsIDk0MDU0LCA2NTc2MiwgMTE4ODI5LCA0MzgyMSwgNTcwOSwgMCwgOTQwNTMsIDQzODE2LCAwLCAwLCAKKyAgICAxMDc5LCAzODY3LCA1NzA4LCAwLCAwLCA0Mzc5NywgNTcwNiwgNjQ3NjgsIDU3MDUsIDg3OTEsIDQwMDUsIDAsIDEwMjM3LCAKKyAgICAxMDk5MSwgMTI4ODE2LCA0MzQ1OSwgOTE3MywgOTE3NTgxLCA5MTc1ODAsIDEzMTcwLCAxMjU0MCwgOTE3NTc3LCA0MjYwNSwgCisgICAgMTIwNzY1LCAxMjY2MTcsIDY4NjQ3LCA5MTc1NzIsIDEwMDU4LCAwLCA3NDg2NywgMTk0NjU0LCAxMjcwNzgsIDMzMzksIAorICAgIDExNDQ4LCAxMTA2LCA5MTc1OTEsIDkxNzU5MCwgOTE3NTkzLCAzMzQwLCA5MTc1ODcsIDkxNzU4NiwgOTE3NTg5LCAKKyAgICA5MTc1ODgsIDEyMDU0MSwgMTA2MDUsIDEzMDksIDYzOTY2LCAxMjA3NDMsIDE3NTQsIDkyMjI2LCAxMzI0NiwgODY0LCAwLCAKKyAgICAxMTg5MjYsIDg5NzIsIDAsIDc4NDksIDEyMDA5MiwgOTI1MzMsIDEzMjQwLCAxOTUwNjgsIDUxOTIsIDQzMzgsIDY3OTgyLCAKKyAgICAxMDk0OCwgOTE3NjAxLCAxMzE5OSwgOTI1NzUsIDEyMzYsIDEzMjA4LCAxMzI2MSwgMTMxODksIDEzMTg4LCA5Mzk5MywgMCwgCisgICAgNzQ0MCwgMCwgMTIwMTUzLCA5NTUzLCAxNTkwLCA2Mzc3NywgNjM3NzYsIDEzMTc4LCA2Mzc4MiwgNjM3ODEsIDYzNzgwLCAKKyAgICA2Mzc3OSwgMTU4MywgMCwgMTMyNjAsIDQ1NTAsIDAsIDY0MjA1LCAwLCAwLCA0MTUyMiwgOTgzOTA2LCA5MjE2OCwgCisgICAgOTgzNzYzLCA5MTc4NTgsIDExMzU0LCA5NDA3MSwgMCwgNDI3OTUsIDAsIDExOTE5NSwgMTEzOTQsIDE5NDY0NiwgMTMyMzYsIAorICAgIDEzMjcyLCAxMzE5NCwgMTMzNCwgNjk5MjYsIDQ0NzksIDExNzgsIDY1NTg2LCAxMjA2NjMsIDY2NjgxLCAxMTkxOTMsIAorICAgIDQ2MDEsIDAsIDAsIDk4Mzc1NiwgMCwgMCwgMTk0NjU4LCAwLCA2ODA5LCA2Mzc4NiwgNjAzMSwgMCwgNjM3OTEsIDYzNzkwLCAKKyAgICAxMTQ1LCA2Mzc4OCwgNzkxMCwgNjM3ODUsIDQzMTUzLCA3NTQsIDEwMTkyLCAxMzEwNSwgODE4MywgMTIwNzQxLCAyMDM3LCAKKyAgICAwLCAwLCAxMDc0NywgMTI1LCAwLCA2NDg5MCwgMCwgOTgzMTMxLCAwLCA0MTcxOSwgNjM3NTgsIDM1MjMsIDEwNzQsIAorICAgIDEzMjU4LCA5NTM2LCA3NDA3NywgMCwgNDQyNywgNzQyNDIsIDYzNzU3LCA0MzE0NSwgMTIyMTcsIDYzNzU0LCA0MTUzMiwgCisgICAgMTM0OSwgNjM3NTAsIDYzNzQ5LCAwLCAwLCAwLCA2Mzc1MywgNjM4MDIsIDQxMDg0LCAxMjA2MjIsIDY4MTMzLCA0MTkzMCwgCisgICAgNjM4MDUsIDYzODA0LCA0MzYzMiwgNjM4MDEsIDQxMDgyLCA4MTQwLCA2Mzc5OCwgNjI2MCwgMCwgMCwgOTQwNzQsIDYzNzkzLCAKKyAgICAxMTk4OCwgMzg5OCwgMTI4MjQxLCAxMDIwMSwgMTIyMzgsIDYzNzk1LCA0MjE5NCwgMTAzNjcsIDEyNTIxLCAxMDQzMSwgCisgICAgNDIxMTQsIDQxOTMyLCAxMDY4LCAwLCAxMjUyMywgMTI5NDUsIDk4MzMyMSwgNDIyMDMsIDc5NTAsIDEwODA0LCA2Mzc3MSwgCisgICAgNDI3ODcsIDQzODYsIDEyMjI0LCA2OTczLCAyNzkzLCAxMjQ3NSwgMCwgMCwgNjM3NjksIDk1MzAsIDk4MzExOSwgMTIyMzIsIAorICAgIDEzMTM1LCA4NTk2LCA1NjgxLCA2Mzc2MiwgNDU5NSwgNjM3NjAsIDc5MiwgMCwgNjQ4MDMsIDAsIDg3NDIsIDAsIDExMDUzLCAKKyAgICAxMjg3OTYsIDYzNzQ0LCAxMjgxMDcsIDAsIDc1ODgsIDYzNzQ4LCAxNjkzLCA2Mzc0NiwgNDMyMDQsIDUwNTUsIDY4NDI2LCAKKyAgICA5MTc4NTMsIDEwOTAsIDEyMDY3OSwgMTI4MzU2LCAxMTY2NSwgNzQxMzMsIDQ1NTgsIDY1Njg1LCA5NTIzLCAwLCAwLCAKKyAgICA3ODY4MSwgMTE1MTMsIDAsIDYxNTcsIDYzNzc1LCA2Mzc3NCwgNjM3NzMsIDEzMTkxLCAxMjE3MCwgMzUwMCwgMzEzOSwgMCwgCisgICAgMzE3MCwgMTI0ODUsIDAsIDEwODcyLCA3ODI3MSwgMTMwMDYsIDY0NDMzLCAwLCAwLCA5NDEsIDAsIDAsIDAsIDY1NTQxLCAKKyAgICAxMTA2MywgMCwgODIyOCwgMCwgNDIwNjUsIDAsIDAsIDk0MDM5LCAwLCA5MjQ1NSwgNzM4NiwgMCwgNjQ0NDQsIDAsIAorICAgIDExOTg2MywgNDM2MDMsIDk0MDc1LCA2NTM5NywgMjg4LCAwLCAwLCAwLCAxMDAyNSwgNjk5MTUsIDI5MTgsIDAsIDY1MzAwLCAKKyAgICAxMTk4NzEsIDk4ODMsIDY0NzI2LCAyNzkwLCA2NTM5NSwgMzc5MywgMCwgMTI3ODI5LCA2NTM5MywgMCwgNzQxMzgsIDAsIDAsIAorICAgIDAsIDc0MTM5LCA5MjcxMiwgNjUzOTQsIDExNTQ4LCA1MjcwLCAwLCA2NTM5NiwgMCwgNjU4MTMsIDEzMjU2LCAxMjgyLCAKKyAgICAxMjA3NzEsIDAsIDAsIDEwODg4LCA5ODM2MDQsIDY1MjQyLCAwLCAzMzMwLCAwLCAwLCA5ODM5NjUsIDAsIDAsIDc0MjU5LCAKKyAgICAzMzA0LCA0Mjc1MywgMCwgMCwgMCwgMTYyNywgMCwgMCwgMCwgNTM3MSwgMTMxMTYsIDAsIDE4MjYsIDExODc5NCwgMCwgCisgICAgNDMwOTQsIDcwMDIzLCA0MzY1MCwgOTQwMzcsIDAsIDkwMzUsIDAsIDAsIDEyODAwNSwgMCwgOTIyMDcsIDY4MTI1LCAwLCAKKyAgICAxNjQsIDAsIDk0MDY3LCA5NDAwMCwgNjk1OCwgMCwgNDMxMTYsIDAsIDcwMDE5LCAxMzI0NSwgMCwgMCwgMTI3Mzc2LCAwLCAKKyAgICA3MDAzMSwgMTI3NzU2LCAxMjY2NiwgMTMxNzUsIDEzMjA3LCAxMjA0MTQsIDY2MDE0LCAxMjA0MjgsIDc0NDcsIDU5MjksIDAsIAorICAgIDY1NTA5LCAwLCA3NDQ5LCAxMTMwNiwgMCwgNzM5MjAsIDMxODAsIDAsIDYzODA4LCA5MDU0LCA5NzEsIDEzMDYyLCAwLCAwLCAKKyAgICA2NTE5NSwgMTAxNjQsIDkyMjUyLCA3NDQyOCwgMCwgNzgxNDYsIDkyNjExLCAwLCAwLCAwLCAxMDA0NSwgMTI4ODIsIAorICAgIDEzMjc1LCAxMjgxNjEsIDExMDU3LCAwLCAxMzI3NiwgMCwgNDE1MjUsIDc4MTUwLCA3MjcxLCAxMTQ0NCwgMCwgMCwgMCwgCisgICAgMTIyMjksIDQxNTIzLCAwLCA0MzQxMSwgNzM3NTEsIDAsIDY0ODEzLCAwLCAwLCAxMDQ3NiwgMzg1OCwgMCwgMzkzMiwgCisgICAgNjQ5NTgsIDAsIDAsIDczOTg5LCA2ODE5MiwgMCwgNjk4NDcsIDM2OSwgMCwgNDE3ODQsIDAsIDY0MTYzLCAwLCAwLCAwLCAKKyAgICA2NTQ3NCwgNDc5NiwgMTIyOTIsIDEyNjU5NSwgNjU0NzksIDAsIDQxNzgxLCAxMDQ4NiwgNDE0ODAsIDQzMDAyLCA5ODk5LCAKKyAgICAwLCAwLCA0MDQsIDEyODIxLCAzNzQxLCAwLCA1Nzg4LCA4MDkyLCA2ODIxMiwgNDEyMjIsIDE4MzEsIDY2MDIwLCAzOTgyLCAKKyAgICAwLCA0Mzg4LCAwLCA3NDYsIDEyMDc4NCwgMCwgMCwgMTIwMTgsIDY1Mjk0LCAwLCAwLCAwLCAwLCA0NDIyLCA0NzA4LCAKKyAgICAzNzk5LCA3NDI5MiwgMTE5MzU3LCAwLCA3NDQzMCwgMCwgMTE3MDAsIDQzNzQsIDAsIDEyODE3OSwgMTM2NCwgMCwgODAzOCwgCisgICAgMCwgOTE3NTk3LCAxMjg2OCwgNjk4MTQsIDAsIDY3MzUsIDczOTc5LCAxMzE3NCwgNzM5NjgsIDEzMjI1LCAwLCA2OTgwOCwgCisgICAgNjU4MzUsIDAsIDIzNjUsIDc4NDEsIDAsIDQyODU1LCAxMTg4NTYsIDQyODY2LCAwLCAwLCAwLCA2NjQzOCwgNDE3ODUsIAorICAgIDEyNjE3LCA2NDE3MiwgMTMxNzMsIDQzNzIsIDExOTM1NCwgMCwgOTgzNTY4LCAwLCAwLCA5MjQwMiwgMTI4MDYyLCAxMjk2NSwgCisgICAgMzg0LCA2NDUxMiwgMTA0MDQsIDEwMzQwLCAxMTkzNTIsIDE1NTYsIDUyNzQsIDEzMjEwLCAxMjAxMjUsIDEwMDE3LCA5NzMzLCAKKyAgICA0MTc4NywgOTgzMjM3LCAxMjY5OTQsIDQxMzczLCA3ODAzOSwgMTIzMDMsIDAsIDEzMjMyLCAxMzIzMywgMzQ5LCA0ODYzLCAKKyAgICA0MTM3MSwgMTE2NTYsIDAsIDEyMDcwMywgMTE5ODgzLCAxMjg2MSwgNDM5OCwgODU0MywgNjU2MTgsIDEyODAxOCwgMTA5NiwgCisgICAgMCwgMCwgNDI2ODgsIDEyNDQxLCAxMjM1NSwgMTE5MzQ4LCAxMTkzNDcsIDQzMTgsIDEwNDUyLCAwLCA4MDMyLCAxMzI0MywgCisgICAgMTMyMzcsIDEyNzE5LCAxMjY2NDYsIDExOTEwMSwgMCwgNjQ4ODQsIDExOTg3MiwgMTE5MzQ1LCA4NTk3LCAwLCAwLCA5ODY0LCAKKyAgICAwLCAxMjA3ODUsIDExOTg3NCwgOTQxMDcsIDEzMTk1LCA0MTQ1MiwgNjQ5NjEsIDc3MjIsIDAsIDEwNDU5LCAxMTk4NzgsIDAsIAorICAgIDExOTg3OSwgNjY1OTAsIDEyODEyMywgNDE1MzMsIDY2MzM3LCAwLCA5MjE4NCwgMCwgNDk2NSwgNDM0NDUsIDkxNzUzNiwgCisgICAgNzM4NDksIDAsIDQzNjM4LCA3ODUzNywgMTI4Mjg3LCA2MjYxLCAxMTkzNDIsIDQzMTQ3LCA2NjU3MCwgMTk1NywgMTA0MjAsIAorICAgIDk4MiwgMjc1NiwgMTMyOTIsIDEzMjA2LCAxMjg4MjgsIDAsIDI5MjUsIDczODA5LCAxMzA1NiwgMTI3NTU5LCAxMzIxMiwgCisgICAgNDMyMzgsIDAsIDEzMTkwLCAxMzE4NywgOTI1NDEsIDEzMTk4LCAxMTg3OTMsIDAsIDUyNDIsIDExOTE3OSwgNjQ0NzYsIAorICAgIDE2OTQsIDgyMTYsIDcxMzY5LCA2NzcwLCA0MzMzMSwgMCwgNjU2MjAsIDk4MzcxOSwgNDM1NDQsIDEyNjQ2NiwgMCwgCisgICAgNDE0NDQsIDY1NjIxLCA2OTk1NSwgOTE5NywgNTI0NiwgMTE5MTA2LCAxMzE4NSwgOTcwOSwgMTIwMzIzLCAxMjAzMjIsIAorICAgIDEyMzE0LCA2NTYxNiwgNTIzOCwgMTE5MzMzLCAwLCAxMTkzMzcsIDUyMzYsIDQwOTc5LCAwLCA3NDIwMSwgODI4NiwgCisgICAgMTI4NTM3LCAzOTM2LCAxMTkzMzEsIDExNjk5LCA0MTM0NywgMTI3MjQ5LCAxMzIzNSwgODg0MiwgNDEyNDgsIDAsIDQzNzksIAorICAgIDEzMjM5LCAxMjY5MiwgNzk2OSwgMTI3MjY2LCA3MjE5LCAxMjcyNTAsIDEyODI1MSwgMTIwNTA5LCAwLCA2NjIyNCwgNzM0LCAKKyAgICAyOTc5LCAxMjAzMDMsIDY1NjE5LCA5ODcyLCA5NTcsIDY0OTIxLCAxODQ2LCA2NjYzMSwgNDE0NzcsIDExOTI1NiwgCisgICAgMTIwMzEwLCA3NDUxMSwgNDE3NzAsIDE2NzAsIDY0NDIsIDEyMDMxNywgNDI0NDYsIDUzNzksIDEyMDMxOCwgNDExNjMsIAorICAgIDc0ODMyLCAxMjAzMTUsIDEyMDMxNCwgMTE1MDYsIDAsIDQyODQxLCAxMzI2NywgMCwgMCwgNDE3NzUsIDAsIDcxMzAsIAorICAgIDQxNzczLCAwLCAxMDY2MywgMCwgMCwgMCwgNjE1MSwgMTIxMTAsIDQyNjczLCA2NTU3MiwgNjUyOTMsIDY1MjUwLCAxMzI2NSwgCisgICAgMTMyNjQsIDY0NTE4LCAwLCA2MTAwLCAwLCA5MjY0NywgNTgwOCwgNjU5MjIsIDAsIDEyOTY3LCA2NjA0MSwgNTYxMiwgCisgICAgNDU4MywgMCwgMCwgNjgwOTcsIDY0NTc1LCAxMjY2MzcsIDExOTY1LCAwLCA2ODM1OCwgMCwgNjk3ODksIDAsIDkyMjYwLCAKKyAgICA2ODEwMiwgOTY5OCwgNzgxNCwgNzQ0NzYsIDExOTY1MSwgMTI4NTE0LCAwLCA0MTkyMSwgMTE4ODU4LCA5NzU2LCA2OTg1LCAKKyAgICAxMTkyNTgsIDc4NDkwLCA3NDIxOSwgMCwgMCwgMTE4OTk3LCA4MDEyLCA1Njc0LCAxMjM1MywgMCwgMTIzNjEsIDU2NzcsIAorICAgIDU1ODgsIDAsIDQxOTI1LCAxMjgxMjQsIDQxOTIwLCA1NjczLCAxMjA1MzQsIDU2NzYsIDQxOTIzLCAxMjY5NCwgMTE4OTc4LCAKKyAgICA1NjcyLCAxMjk0LCAwLCA3ODA1OSwgMCwgNDI1MTEsIDE3MjcsIDEyMDcyNSwgNDI0MzYsIDAsIDAsIDAsIDc0MjIyLCAKKyAgICA4NzE4LCAzNTUwLCA3MzYsIDEwMjY4LCA0NTA1LCAxMDMxNiwgNzQwOTAsIDU4MjYsIDU1MjMyLCA1ODEzLCAwLCAxMjA3MTIsIAorICAgIDU4NDEsIDU4MzcsIDU1MjM0LCAwLCAzMTA1LCAxMjgyOSwgNTgzOCwgNTc5NiwgMCwgMTE5NTkyLCA1NzkzLCAwLCA1ODY2LCAKKyAgICA1Nzk3LCA0MTAxMSwgNTg2NSwgMTIwMDkxLCA3OTU2LCA1OTgsIDAsIDY0NjQ5LCA1ODA2LCA0MjM5OCwgMCwgOTAzNywgCisgICAgNTY3MSwgMTIwMDQxLCAwLCAwLCAwLCAxMjg4NTUsIDAsIDg0NywgMTI4MjQyLCA5NTI5LCAwLCA2NjY1NywgNjk4MCwgCisgICAgNzg0ODMsIDEyMDAzNSwgNzg0ODQsIDk4MzQ4MywgMCwgMTIwMDMzLCA3ODQ4NiwgMCwgMCwgMTIwMDM5LCA0MjY4MywgMCwgCisgICAgOTgzMDU1LCA3MTE0LCAwLCAwLCA0MzE5MCwgNjU0NjMsIDE1NTQsIDAsIDQyNjExLCA0MjU2MywgMCwgNTY1MSwgMjkyOSwgCisgICAgNjc5MiwgNDMyMDEsIDAsIDE5OTYzLCA1Njk4LCAwLCAwLCAwLCAwLCA1NjQ0LCAxMDI5MiwgNjU1NDYsIDY5NzI3LCAKKyAgICA2ODE0MSwgODM3MiwgMCwgNjUxMTYsIDAsIDEyMDAyMiwgMTAxNzUsIDEwMzg4LCA0Mjc5OSwgOTQxMDAsIDQxMDEzLCAKKyAgICAxMDU2OCwgMCwgOTgzNjE4LCAyODY5LCAwLCA0MTAxNSwgMTk0NjkyLCAyNzg1LCA0MzY2LCAwLCAxMDk1NCwgNDE4MDIsIDAsIAogICAgIDQyNjA4LCA3ODQ2OSwgOTg4NCwgNDc1OSwgMCwgMCwgMTAyNjYsIDQxMzU5LCAxMTcwLCA0MzM2NSwgNjk4MTAsIDczOTA4LCAKICAgICAxNjA5LCA5MDIsIDAsIDYzOTM2LCAxMjg4NzUsIDExNjYxLCA4MTIyLCA1ODE4LCAwLCAwLCAzODYxLCA5NTQwLCAxMTAyOCwgCi0gICAgMjU1NCwgNTE1OCwgNTcxNCwgMTI3MDE1LCAwLCAwLCA4MDcsIDQzMDc5LCAwLCA3ODQ3NSwgOTc2LCA1NTExLCA2NDU1MywgCi0gICAgMCwgNDIxNTUsIDAsIDQxMzU2LCA3NDExMCwgMTE4ODAxLCAwLCAwLCA4Njc2LCAwLCAwLCAxMTA2NiwgNDUxLCA2Mzk0MSwgCi0gICAgNTc5OCwgOTM0OSwgNDIwMTgsIDEyNzg1OCwgMCwgMCwgNDM2MDksIDU5MDYsIDEyMDU1MywgMTQ0MCwgMCwgMTI4ODUzLCAKLSAgICAxMjAwMTYsIDc0MjgzLCAxMTAwNSwgMCwgNjY2NTYsIDY2MDQ0LCAwLCAxOTQ2OTgsIDAsIDAsIDQzMzkzLCAxMDA5NCwgMCwgCi0gICAgMTE1MjksIDEwODU3LCAxMjA2NDMsIDY2NDM2LCA2NTQ2LCA5MywgODEwMiwgMCwgNjg0MDUsIDAsIDAsIDgxNzEsIDAsIAotICAgIDExOTA5NywgMTI3MDY0LCA5MTc1NDMsIDM4MywgNzE1NCwgNDE2NTYsIDkyNjM0LCAwLCAwLCA1MTg3LCAwLCAxMjcyNzcsIAotICAgIDExMjg2LCA2ODYyMCwgNjQyMTcsIDAsIDUyMzIsIDAsIDQxMDA5LCAwLCA0MTAwNSwgMCwgMCwgMCwgODI5MiwgMTk1MDc0LCAKLSAgICA0OTgwLCA4ODYwLCA3Mzk0NywgMTAwMjgsIDY1MjkxLCA3MDc2LCAxMzE4MiwgMTk0NzA1LCAwLCAwLCAxMDYzMSwgNjYwMzEsIAotICAgIDc5NzIsIDAsIDc4Nzg1LCAwLCA3OTAwLCAwLCAxMTMwOSwgNzgzMTksIDQxOTgsIDQyNzI1LCAwLCA2NzY1NiwgOTk5NSwgMCwgCi0gICAgOTI1NTIsIDAsIDEyOTMxLCAwLCA0MjY4NCwgNzQyODUsIDIwODgsIDAsIDY0MzY2LCA2NTE1NiwgODgxNCwgNDIyMzgsIAotICAgIDc0NzcxLCAwLCAwLCAxMjgzNiwgMCwgMCwgNzQzNDIsIDg1OTMsIDAsIDAsIDY4NDQ1LCAxMzI1NSwgMCwgMCwgNzQ2NCwgMCwgCi0gICAgNjU4NjUsIDAsIDE5NDY1MCwgMTI3MTQ0LCAwLCA5MzQyLCAxMjA0NjQsIDAsIDY0NTE2LCAwLCA3ODc5MiwgMTAxMjksIAotICAgIDQxMDA3LCA3NDM3NSwgMCwgNDA5OTUsIDEyMjA5LCA0MTAxMiwgMTE5MTM2LCAwLCAwLCA2OTcyNCwgNDA5OTIsIDkyMjY0LCAKLSAgICAxMjcxNTMsIDY4NjUzLCA0MzU1OCwgNTUyMiwgMCwgNjEsIDAsIDc0MTA1LCAzNjMzLCAwLCA2NTE2MiwgNDEyMzQsIAotICAgIDEyMDg5LCA3ODI4MSwgOTc3MSwgMCwgMTMyNTEsIDEyODcwMSwgMCwgNjI2MiwgMjc4NCwgNDI3NDMsIDAsIDgxMjYsIAotICAgIDY2NDgzLCAwLCAwLCA0NDEsIDQyNjIxLCAwLCAwLCA0MTAwMiwgNDA5OTksIDExOTYyMywgNDMyNjYsIDcxMDgsIDE5NDc3OSwgCi0gICAgMTA4OTAsIDc0NDgxLCA2NTgzNCwgODMyNCwgMTE5MTAzLCA2NDQxNywgNzQ4MTcsIDEyNzQ2NSwgNjQ3MzcsIDAsIDAsIAotICAgIDg5MzAsIDY2Njc4LCA3NDI0OSwgMTE5MywgMTAwNTYsIDE4MDAsIDEzMjUzLCAxMzI1MiwgNzgyOSwgMCwgMCwgNzc0MywgMCwgCi0gICAgMCwgNzc5MDQsIDkyNjQwLCA3NzkwNSwgOTAzNCwgNjAzOSwgMCwgMTAwNzUsIDAsIDQxMDE4LCA2NTY4MywgMTAzMzgsIAotICAgIDY2NDY5LCAwLCAwLCAwLCA0MjgxNSwgMCwgNDE5NjYsIDAsIDAsIDAsIDExNzkyLCA0MzA2NCwgNDEwMjUsIDkxMSwgNzUzOSwgCi0gICAgMCwgMCwgMTIwMzM5LCA2NTE1OSwgNjQzOTAsIDAsIDAsIDU1MjAsIDExNjYyLCAwLCA2NTMzMCwgNDI4MTIsIDAsIDAsIAotICAgIDEyMzI2LCAwLCAwLCA0MjgwOCwgMTI4MzM3LCA5MzQ4LCA2NDkwMSwgMCwgMCwgMCwgMCwgMCwgMCwgOTE3NTg0LCA0MzcwMiwgCi0gICAgMCwgNTg1NywgNjUzNDIsIDkyNzI3LCAxMTkxMjAsIDEyMDA3OSwgODY0NCwgMCwgMCwgMCwgNzQyOTYsIDQxOTA5LCAwLCAKLSAgICAxMjAzMzIsIDI3OTEsIDY5NjYzLCAxODkxLCA2OTgyNCwgMCwgNDE5MDcsIDY2NjQ3LCAxMTg5MzksIDg3NjEsIDEyOTQyLCAKLSAgICA1NzQ4LCAwLCAxMDc3MywgMCwgMCwgODc5NiwgNzgxNDksIDY0MTIsIDIwNjEsIDg1MjAsIDEzMTQ2LCAxMjcxODUsIAotICAgIDYzOTMxLCAwLCA2NTkwMiwgMjg4MiwgMCwgMCwgMTI4NDMsIDQ1MjAsIDEyMDM0NSwgOTI0NTksIDAsIDAsIDAsIDczODYwLCAKLSAgICAwLCAwLCA2NDM0NSwgMCwgOTIwMSwgMTI4MzE0LCAxOTQ5NDAsIDAsIDAsIDQzNjc5LCA5MTc1ODUsIDY1MTE3LCA5MjI3MCwgCi0gICAgMCwgMTA0MjcsIDAsIDM4NDQsIDEyMDY3NSwgOTc1NSwgMTExMCwgNjYxMiwgMTIyMjIsIDAsIDEyODc4OSwgMCwgMCwgNzgzLCAKLSAgICAxOTQ5MzUsIDAsIDAsIDAsIDE5NDcyMCwgNjUwNTYsIDM2MjAsIDAsIDY4Mzc4LCA0NTU2LCAwLCAwLCAxOTQ5MzMsIAotICAgIDc0MjUwLCAwLCA2NzY1NywgMTA1MTAsIDQzODIsIDY2NDgyLCAwLCAwLCAxMjc1MjcsIDkxNzcsIDg5MDIsIDAsIDk4MzksIAotICAgIDAsIDEyODkxLCAwLCAwLCA2Mzk5OSwgMjAxNiwgNDE5MTcsIDk3ODgsIDYzOTI4LCAwLCAxODYyLCA2NTgwMCwgOTE1NSwgCi0gICAgNjY2MjMsIDk3ODYsIDY1MDgyLCA0MTkxOSwgODU3OSwgNDE5MTQsIDc5ODEsIDAsIDY2MDE3LCA0NTA4LCA2NDg4MywgCi0gICAgOTI0NTYsIDkyNTIyLCAxMjc4MTQsIDAsIDY0NTkyLCA3NDI3NiwgMTIwMDgwLCA2Nzg0LCA3ODc4OCwgNjgxODEsIDAsIDAsIAotICAgIDAsIDEyNzUzNCwgMTIxNDcsIDkwMjQsIDY2Mzc4LCA2NjQ3MiwgMCwgNjQyODksIDY1Mjg5LCA3ODE1MSwgNjY2NTgsIAotICAgIDE5NDkyOSwgNjQ1MDksIDc4MTUyLCAwLCAwLCAxMTA1MSwgMCwgMCwgMTEzNTUsIDY1ODg1LCAwLCAxMjgzMTAsIDQxMjE0LCAKLSAgICAwLCAxMjI5OSwgMCwgNzUwMCwgNDUwNiwgNzc3MywgMCwgMCwgOTk2MywgNjg2NDksIDAsIDQwNDAsIDEyMDU3MCwgNjE2NywgCi0gICAgMCwgNjM5MjIsIDY1OTQsIDAsIDAsIDAsIDM2MjQsIDQzMDM2LCAwLCA2Mzg3LCA2Mzk5MCwgMTk5NDcsIDYzOTg4LCAKLSAgICA0MTk1NSwgMCwgNjM5OTMsIDEwNDQwLCA5NjExLCAwLCA2ODAzLCAwLCA3NzM4LCA2Mzk4NiwgMTE0NDYsIDYzOTg0LCAKLSAgICA5MjY0MSwgMzQzNSwgNzgxNjQsIDQzODE0LCA0MzgxMCwgNzAyOSwgNjQyNTgsIDQxMjkyLCAxMTg4OTgsIDEyNzQ4LCAKLSAgICA0Mjc0MiwgOTUxNywgMTE1MTgsIDAsIDc4NzkwLCAwLCAxOTQ3NzcsIDYzOTU2LCA0MjQ1OCwgNjM5NTQsIDYzOTUzLCAKLSAgICA2Mzk2MCwgOTU5MSwgNDUxNiwgMTAyMTcsIDY4MzcwLCAxMTQ2OSwgNjk2OTcsIDQyMzA2LCAyNzIzLCAxMTg5NDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDExMzk3LCAyODgwLCAwLCAwLCAyODcyLCAwLCAwLCAzNDk4LCA0Mzc4LCA5MTc1MzksIDQyNzAsIDAsIAotICAgIDY1NTUxLCA2ODIwNSwgNjYzMywgNDMzODcsIDAsIDUyMzAsIDAsIDAsIDAsIDAsIDAsIDgxNjEsIDM5MywgMTIwMTMsIDAsIAotICAgIDAsIDAsIDQxNSwgNjM5NjQsIDYzOTYzLCA0MjM0NSwgMCwgNTE4MywgMTg3NywgNDI0OTgsIDAsIDI5MjcsIDAsIDYzOTYxLCAKLSAgICA0NDcyLCAwLCAwLCA3ODE1OSwgNjk2OTksIDkxNzkzNiwgNDIzNDAsIDQ3NTYsIDEyODA3OCwgNzA4MSwgMTA3MzAsIDc2OTEsIAotICAgIDEwMzMxLCA2MzgzMCwgMTE5NjI1LCAxOTQ5NDUsIDQyMTAzLCA4NjI4LCA5ODEzLCAwLCA0MjQ1MywgMTYwNCwgOTU2NSwgCi0gICAgMTA1MzksIDY5NzAxLCA2NTc2NCwgNDE0MTUsIDY1NzY3LCAwLCA4NDU3LCA0MjMwMSwgMTEzNzIsIDY0ODczLCAxMTk5MiwgCi0gICAgMCwgMCwgNjM5ODAsIDExODAxLCAzNjIyLCAwLCA2NDMzNiwgMTIwMTcsIDEwNDYzLCA2Mzk4MSwgNDk2NywgNjQxODksIAotICAgIDE5NjYsIDQzNjI4LCAwLCAwLCAwLCAwLCA2Mzk3MSwgNDM0NywgNDQxNiwgNDIwOTgsIDExMDA5LCAxMDY5NCwgNjM5NzMsIAotICAgIDQwMiwgMCwgMTMxNDcsIDAsIDQyMTAwLCA2NDY0NiwgMTMyMjgsIDAsIDQxODc1LCAzNTE1LCA3NDI1MiwgMTE4MDUsIDAsIAotICAgIDExMzAyLCA2MjU5LCA0MzM5NSwgMCwgMCwgMTk0NjcwLCAwLCA5MjM1MSwgMCwgNzQ0MjUsIDExMjk5LCAxNTYxLCAwLCAKLSAgICA5MjM1OSwgNjQ5NDIsIDAsIDE5NDczMywgMCwgMTk0NzMyLCAwLCA3NDMwMSwgMCwgMTEyODAsIDAsIDY5Nzg0LCA3NDA2MCwgCi0gICAgMCwgMCwgMTE5NjY0LCA1MTQ1LCAxMjQ4NiwgNjUwMTgsIDY2NTE2LCA1NDA5LCAxMjczNzksIDE5NDY2OSwgNzQwMiwgCi0gICAgNTM5OSwgOTY4NSwgNzQwODksIDc5NTIsIDU0MDEsIDAsIDY2NjE2LCA2ODQyMSwgMCwgMCwgNTQwNSwgMTI3ODc1LCAKLSAgICA2NDg2NiwgMCwgMTE5NTgzLCAxMjgzNDUsIDc4Nzg0LCA3NDI0OCwgMTEzMzAsIDE5NDcyMywgNjQ2OTAsIDMyNTQsIDAsIDAsIAotICAgIDAsIDQyMzkwLCA0MzY3OCwgMTk0NzI1LCAwLCA2NTA3NywgMCwgNjM4OCwgMzM1NSwgOTUwOCwgOTg2NywgNTcyMywgCi0gICAgMTE1MjAsIDU2MTEsIDAsIDMzNzcsIDAsIDAsIDAsIDAsIDc4MjI4LCAwLCAwLCA0MjY5MSwgOTE3ODg2LCAxMjcxOTgsIAotICAgIDc0NzY3LCAwLCAxMjcwNzUsIDEzNzksIDI0NiwgMCwgMCwgMzc4OCwgMCwgMTEwNDEsIDkyNTQ5LCA2NjMwNCwgMCwgMCwgCi0gICAgODkxNywgNDI0MDMsIDMwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMTA2NTYsIDAsIDY1MjE0LCAxMTkyNDIsIDQyNTY3LCAKLSAgICA5MjIxNywgMTMxNjMsIDAsIDEyMDgzMSwgNzQ1OTcsIDMxODIsIDAsIDAsIDAsIDY1MDM0LCA2NTg4OSwgNDIxNjksIDQ3NTUsIAotICAgIDc0MjQ0LCAwLCAxMTQ0MywgMCwgNjYzMTksIDc0NTk4LCA2MDgsIDYwMCwgMCwgMTIxOSwgMzkzNCwgNjQyMDYsIDExNDgzLCAKLSAgICA3NDUxMCwgMCwgNzQ0ODUsIDQyNDQyLCA2NTQ3MCwgMCwgNjQyMDIsIDEzMTYwLCA3NzU5LCA0MjQ4MiwgNDg1LCAxMjgwMDYsIAotICAgIDAsIDk4MjgsIDAsIDAsIDQyMjgwLCAwLCA5MzUxLCA3Nzc4LCA2NDM3OSwgNzQ5NiwgNDI0MzEsIDY5MTYsIDEyMDgsIDAsIAotICAgIDExOTYzMSwgMTEwMDIsIDQyNDcwLCAwLCAxMTg5NDYsIDAsIDAsIDc0MDQxLCAwLCAxMjA2MzMsIDQzNTM5LCA1NDExLCAKLSAgICA0MjE5NiwgMCwgMCwgMCwgOTE1MCwgMCwgNDIzOTMsIDEzMDg2LCAxMzEwLCAxOTQ2ODcsIDkzMzcsIDEyMDUyLCAxMDY0MywgCi0gICAgNTUyNzEsIDAsIDEyMTY2LCAyNTQ2LCAxOTQ2ODMsIDIxMywgMTE4ODUyLCA2NTYxMSwgMCwgMCwgMTk0NzU2LCA3NDMxMCwgCisgICAgMjU1NCwgNTE1OCwgNTcxNCwgMjIxMywgMCwgMCwgODA3LCA0MzA3OSwgMCwgNzg0NzUsIDk3NiwgNTUxMSwgNjQ1NTMsIDAsIAorICAgIDQyMTU1LCAwLCA0MTM1NiwgNzQxMTAsIDExODgwMSwgMTI2NjE0LCAwLCA4Njc2LCA5ODMyODMsIDAsIDU1ODIsIDQ1MSwgCisgICAgNjM5NDEsIDU3OTgsIDkzNDksIDQyMDE4LCAxMjc4NTgsIDAsIDAsIDQzNjA5LCA1OTA2LCAxMjA1NTMsIDE0NDAsIDAsIAorICAgIDEyODg1MywgMTIwMDE2LCA3NDI4MywgMTEwMDUsIDAsIDY2NjU2LCA2NjA0NCwgMCwgMTk0Njk4LCAwLCAwLCA0MzM5MywgCisgICAgMTAwOTQsIDAsIDExNTI5LCAxMDg1NywgMTIwNjQzLCA2NjQzNiwgNjU0NiwgOTMsIDgxMDIsIDAsIDY4NDA1LCAwLCAwLCAKKyAgICA4MTcxLCAwLCAxMTkwOTcsIDEyNzA2NCwgOTE3NTQzLCAzODMsIDcxNTQsIDQxNjU2LCA5MjYzNCwgOTQwNDAsIDAsIDUxODcsIAorICAgIDcxMjk2LCAxMjcyNzcsIDExMjg2LCA2ODYyMCwgNjQyMTcsIDAsIDUyMzIsIDAsIDQxMDA5LCAwLCA0MTAwNSwgMCwgMCwgCisgICAgOTgzODE4LCA4MjkyLCAxOTUwNzQsIDQ5ODAsIDg4NjAsIDczOTQ3LCAxMDAyOCwgNjUyOTEsIDcwNzYsIDEzMTgyLCAKKyAgICAxOTQ3MDUsIDAsIDAsIDEwNjMxLCA2NjAzMSwgNzk3MiwgMCwgNzg3ODUsIDAsIDc5MDAsIDAsIDExMzA5LCAzODA2LCAKKyAgICA0MTk4LCA0MjcyNSwgMCwgNjc2NTYsIDk5OTUsIDAsIDkyNTUyLCAwLCAxMjkzMSwgMCwgNDI2ODQsIDc0Mjg1LCAyMDg4LCAKKyAgICA2NDIxMywgNjQzNjYsIDY1MTU2LCA4ODE0LCA0MjIzOCwgNzQ3NzEsIDAsIDAsIDEyODM2LCAwLCAwLCA3NDM0MiwgODU5MywgCisgICAgMCwgMCwgNjg0NDUsIDEzMjU1LCAwLCAwLCA3NDY0LCAwLCA2NTg2NSwgMCwgMTk0NjUwLCAxMjcxNDQsIDAsIDkzNDIsIAorICAgIDEyMDQ2NCwgMCwgNjQ1MTYsIDAsIDc4NzkyLCAxMDEyOSwgNDEwMDcsIDc0Mzc1LCAwLCA0MDk5NSwgMTIyMDksIDQxMDEyLCAKKyAgICAxMTkxMzYsIDAsIDAsIDY5NzI0LCA0MDk5MiwgOTIyNjQsIDEyNzE1MywgNjg2NTMsIDQzNTU4LCA1NTIyLCAwLCA2MSwgMCwgCisgICAgNzQxMDUsIDM2MzMsIDk4Mzg5MSwgNjUxNjIsIDQxMjM0LCAxMjA4OSwgNzgyODEsIDk3NzEsIDk4Mzg5NiwgMTMyNTEsIAorICAgIDEyODcwMSwgMCwgNjI2MiwgMjc4NCwgNDI3NDMsIDAsIDgxMjYsIDY2NDgzLCAwLCAwLCA0NDEsIDQyNjIxLCAwLCAwLCAKKyAgICA0MTAwMiwgNDA5OTksIDExOTYyMywgNDMyNjYsIDcxMDgsIDE5NDc3OSwgMTA4OTAsIDc0NDgxLCA2NTgzNCwgODMyNCwgCisgICAgMTE5MTAzLCA2NDQxNywgNzQ4MTcsIDEyNzQ2NSwgNjQ3MzcsIDAsIDk4MzY1MCwgODkzMCwgNjY2NzgsIDc0MjQ5LCAxMTkzLCAKKyAgICAxMDA1NiwgMTgwMCwgMTMyNTMsIDEzMjUyLCA3ODI5LCAwLCAwLCA3NzQzLCAwLCAwLCA3NzkwNCwgOTI2NDAsIDc3OTA1LCAKKyAgICA5MDM0LCA2MDM5LCAwLCAxMDA3NSwgMCwgNDEwMTgsIDY1NjgzLCAxMDMzOCwgNjY0NjksIDAsIDAsIDAsIDQyODE1LCAwLCAKKyAgICA0MTk2NiwgMCwgMTI3NDcxLCAwLCAxMTc5MiwgNDMwNjQsIDQxMDI1LCA5MTEsIDc1MzksIDAsIDAsIDEyMDMzOSwgNjUxNTksIAorICAgIDY0MzkwLCAwLCAwLCA1NTIwLCAxMTY2MiwgMCwgNjUzMzAsIDQyODEyLCAwLCAwLCAxMjMyNiwgOTgzODQ3LCAwLCA0MjgwOCwgCisgICAgMTI4MzM3LCA5MzQ4LCA2NDkwMSwgOTgzODUyLCAwLCAwLCAwLCAwLCAwLCA5MTc1ODQsIDQzNzAyLCA5ODM1NzYsIDU4NTcsIAorICAgIDY1MzQyLCA5MjcyNywgMTE5MTIwLCAxMjAwNzksIDg2NDQsIDAsIDAsIDAsIDc0Mjk2LCA0MTkwOSwgMCwgMTIwMzMyLCAKKyAgICAyNzkxLCA2OTY2MywgMTg5MSwgNjk4MjQsIDAsIDQxOTA3LCA2NjY0NywgMTE4OTM5LCA4NzYxLCAxMjk0MiwgNTc0OCwgMCwgCisgICAgMTA3NzMsIDAsIDAsIDg3OTYsIDc4MTQ5LCA2NDEyLCAyMDYxLCA4NTIwLCAxMzE0NiwgMTI3MTg1LCA2MzkzMSwgMCwgCisgICAgNjU5MDIsIDI4ODIsIDAsIDAsIDEyODQzLCA0NTIwLCAxMjAzNDUsIDkyNDU5LCAwLCA5ODM2NTEsIDAsIDczODYwLCAwLCAwLCAKKyAgICA2NDM0NSwgMCwgOTIwMSwgMTI4MzE0LCAxOTQ5NDAsIDAsIDAsIDQzNjc5LCA5MTc1ODUsIDY1MTE3LCA5MjI3MCwgMCwgCisgICAgMTA0MjcsIDAsIDM4NDQsIDEyMDY3NSwgOTc1NSwgMTExMCwgNjYxMiwgMTIyMjIsIDAsIDEyODc4OSwgMCwgMCwgNzgzLCAKKyAgICAxOTQ5MzUsIDAsIDAsIDk4MzA2NCwgMTk0NzIwLCA2NTA1NiwgMzYyMCwgNDExODAsIDY4Mzc4LCA0NTU2LCAwLCAwLCAKKyAgICAxOTQ5MzMsIDc0MjUwLCAwLCA2NzY1NywgMTA1MTAsIDQzODIsIDY2NDgyLCAwLCAwLCAxMjc1MjcsIDkxNzcsIDg5MDIsIAorICAgIDkzOTU4LCA5ODM5LCAwLCAxMjg5MSwgOTgzNzQ2LCA5ODM2MjcsIDYzOTk5LCAyMDE2LCA0MTkxNywgOTc4OCwgNjM5MjgsIAorICAgIDAsIDE4NjIsIDY1ODAwLCA5MTU1LCA2NjYyMywgOTc4NiwgNjUwODIsIDQxOTE5LCA4NTc5LCA0MTkxNCwgNzk4MSwgMCwgCisgICAgNjYwMTcsIDQ1MDgsIDY0ODgzLCA5MjQ1NiwgOTI1MjIsIDEyNzgxNCwgMCwgNjQ1OTIsIDc0Mjc2LCAxMjAwODAsIDY3ODQsIAorICAgIDc4Nzg4LCA2ODE4MSwgMCwgMCwgMCwgMTI3NTM0LCAxMjE0NywgOTAyNCwgNjYzNzgsIDY2NDcyLCA5ODM5MjAsIDY0Mjg5LCAKKyAgICA2NTI4OSwgNzgxNTEsIDY2NjU4LCAxOTQ5MjksIDY0NTA5LCA3ODE1MiwgMCwgMTI2NTA1LCAxMTA1MSwgOTgzMjg4LCAwLCAKKyAgICAxMTM1NSwgNjU4ODUsIDAsIDEyODMxMCwgNDEyMTQsIDAsIDEyMjk5LCAwLCA3NTAwLCA0NTA2LCA3NzczLCAwLCAwLCAKKyAgICA5OTYzLCA2ODY0OSwgMTI2NjA5LCA0MDQwLCAxMjA1NzAsIDYxNjcsIDAsIDYzOTIyLCA2NTk0LCA5ODM3MzEsIDAsIDAsIAorICAgIDM2MjQsIDQzMDM2LCAwLCA2Mzg3LCA2Mzk5MCwgMTk5NDcsIDYzOTg4LCA0MTk1NSwgMCwgNjM5OTMsIDEwNDQwLCA5NjExLCAKKyAgICA2NTYwNSwgNjgwMywgMCwgNzczOCwgNjM5ODYsIDExNDQ2LCA2Mzk4NCwgOTI2NDEsIDM0MzUsIDc4MTY0LCA0MzgxNCwgCisgICAgNDM4MTAsIDcwMjksIDY0MjU4LCA0MTI5MiwgMTE4ODk4LCAxMjc0OCwgNDI3NDIsIDk1MTcsIDExNTE4LCAwLCA3ODc5MCwgCisgICAgMCwgNjc5OTMsIDYzOTU2LCA0MjQ1OCwgNjM5NTQsIDYzOTUzLCA2Mzk2MCwgOTU5MSwgNDUxNiwgMTAyMTcsIDY4MzcwLCAKKyAgICAxMTQ2OSwgNjk2OTcsIDQyMzA2LCAyNzIzLCAxMTg5NDcsIDAsIDAsIDAsIDAsIDAsIDExMzk3LCAyODgwLCAwLCAwLCAKKyAgICAyODcyLCAwLCAwLCAzNDk4LCA0Mzc4LCA5MTc1MzksIDQyNzAsIDAsIDY1NTUxLCA2ODIwNSwgNjYzMywgNDMzODcsIDAsIAorICAgIDUyMzAsIDAsIDAsIDAsIDAsIDAsIDgxNjEsIDM5MywgMTIwMTMsIDAsIDAsIDEyNjQ3OSwgNDE1LCA2Mzk2NCwgNjM5NjMsIAorICAgIDQyMzQ1LCA5MjMxMCwgNTE4MywgMTg3NywgNDI0OTgsIDAsIDI5MjcsIDAsIDYzOTYxLCA0NDcyLCAwLCAwLCA3ODE1OSwgCisgICAgNjk2OTksIDkxNzkzNiwgNDIzNDAsIDQ3NTYsIDEyODA3OCwgNzA4MSwgMTA3MzAsIDc2OTEsIDEwMzMxLCA2MzgzMCwgCisgICAgMTE5NjI1LCA0MjkyMiwgNDIxMDMsIDg2MjgsIDk4MTMsIDAsIDQyNDUzLCAxNjA0LCA5NTY1LCAxMDUzOSwgNjk3MDEsIAorICAgIDY1NzY0LCA0MTQxNSwgNjU3NjcsIDAsIDg0NTcsIDQyMzAxLCAxMTM3MiwgNjQ4NzMsIDExOTkyLCAwLCAwLCA2Mzk4MCwgCisgICAgMTE4MDEsIDM2MjIsIDk4MzEyNCwgNjQzMzYsIDEyMDE3LCAxMDQ2MywgNjM5ODEsIDQ5NjcsIDY0MTg5LCAxOTY2LCAKKyAgICA0MzYyOCwgMCwgOTgzMjg0LCAwLCAwLCA2Mzk3MSwgNDM0NywgNDQxNiwgNDIwOTgsIDExMDA5LCAxMDY5NCwgNjM5NzMsIAorICAgIDQwMiwgMCwgMTMxNDcsIDEyODY5MiwgNDIxMDAsIDY0NjQ2LCAxMzIyOCwgMCwgNDE4NzUsIDM1MTUsIDc0MjUyLCAxMTgwNSwgCisgICAgMCwgMTEzMDIsIDYyNTksIDQzMzk1LCAwLCAwLCAxOTQ2NzAsIDAsIDkyMzUxLCAwLCA3NDQyNSwgMTEyOTksIDE1NjEsIDAsIAorICAgIDkyMzU5LCA2NDk0MiwgOTgzNTU5LCAxOTQ3MzMsIDk4MzY3NywgMTk0NzMyLCAwLCA3NDMwMSwgMCwgMTEyODAsIDAsIAorICAgIDY5Nzg0LCA3NDA2MCwgMCwgMCwgMTE5NjY0LCA1MTQ1LCAxMjQ4NiwgNjUwMTgsIDY2NTE2LCA1NDA5LCAxMjczNzksIAorICAgIDE5NDY2OSwgNzQwMiwgNTM5OSwgOTY4NSwgNzQwODksIDc5NTIsIDU0MDEsIDAsIDY2NjE2LCA2ODQyMSwgOTgzOTEwLCAwLCAKKyAgICA1NDA1LCAxMjc4NzUsIDY0ODY2LCAwLCAxMTk1ODMsIDEyODM0NSwgNzg3ODQsIDc0MjQ4LCAxMTMzMCwgMTk0NzIzLCAKKyAgICA2NDY5MCwgMzI1NCwgMCwgMCwgMTI4MjA3LCA0MjM5MCwgNDM2NzgsIDE5NDcyNSwgOTgzOTAwLCA2NTA3NywgMCwgNjM4OCwgCisgICAgMzM1NSwgOTUwOCwgOTg2NywgNTcyMywgMTE1MjAsIDU2MTEsIDAsIDMzNzcsIDAsIDAsIDAsIDAsIDc4MjI4LCAwLCAKKyAgICA5ODM3NTMsIDQyNjkxLCA5MTc4ODYsIDEyNzE5OCwgNzQ3NjcsIDAsIDEyNzA3NSwgMTM3OSwgMjQ2LCAwLCA5ODM3NTIsIAorICAgIDM3ODgsIDk4MzEwNiwgMTEwNDEsIDkyNTQ5LCA2NjMwNCwgMCwgMCwgODkxNywgNDI0MDMsIDMwMSwgMCwgMCwgMCwgMCwgMCwgCisgICAgOTgzNjg4LCAxMDY1NiwgMCwgNjUyMTQsIDExOTI0MiwgNDI1NjcsIDkyMjE3LCAxMzE2MywgOTgzMjAyLCAxMjA4MzEsIAorICAgIDc0NTk3LCAzMTgyLCAwLCAwLCAwLCA2NTAzNCwgNjU4ODksIDQyMTY5LCA0NzU1LCA3NDI0NCwgMTk0NjIxLCAxMTQ0MywgMCwgCisgICAgNjYzMTksIDc0NTk4LCA2MDgsIDYwMCwgMCwgMTIxOSwgMzkzNCwgNjQyMDYsIDExNDgzLCA3NDUxMCwgMCwgNzQ0ODUsIAorICAgIDQyNDQyLCA2NTQ3MCwgOTgzODk4LCA2NDIwMiwgMTMxNjAsIDc3NTksIDQyNDgyLCA0ODUsIDEyODAwNiwgMCwgOTgyOCwgMCwgCisgICAgMCwgNDIyODAsIDAsIDkzNTEsIDc3NzgsIDY0Mzc5LCA3NDk2LCA0MjQzMSwgNjkxNiwgMTIwOCwgMCwgMTE5NjMxLCAKKyAgICAxMTAwMiwgNDI0NzAsIDAsIDExODk0NiwgMCwgMCwgNzQwNDEsIDAsIDcwMDQ1LCA0MzUzOSwgNTQxMSwgNDIxOTYsIDAsIDAsIAorICAgIDAsIDkxNTAsIDAsIDQyMzkzLCAxMzA4NiwgMTMxMCwgMTk0Njg3LCA5MzM3LCAxMjA1MiwgMTA2NDMsIDU1MjcxLCAKKyAgICA5ODMxNzksIDEyMTY2LCAyNTQ2LCAxOTQ2ODMsIDIxMywgMTE4ODUyLCA2NTYxMSwgMCwgMCwgMTk0NzU2LCA3NDMxMCwgCiAgICAgNjU1NCwgMCwgMTE5MTQsIDU0NTIsIDAsIDAsIDAsIDAsIDAsIDE5NDY4MSwgOTI1NjAsIDI3MTMsIDAsIDk2NTAsIDQzMzMwLCAKICAgICAwLCAxOTQ2NzUsIDE0MDYsIDAsIDAsIDkyNjU5LCAwLCA2ODIyMywgNDE0MywgMTk0Njc3LCAwLCA2NTc0OCwgNDE0MSwgCiAgICAgOTY4MiwgNjUyODcsIDE1MDgsIDEyNzAxMywgODc3OSwgMTA1NjksIDg3MjUsIDEzMjk5LCA2NjYzOCwgNjU3NTAsIDQyMjYzLCAKICAgICA0MTQ1LCA2MzgwLCA2NTc1MSwgNjY2MTMsIDQzOTk0LCA2NTczOCwgNTUyNTAsIDkxODUsIDk1NTAsIDAsIDQzNDAzLCAwLCAKLSAgICAwLCAwLCA2NTczNiwgNDE5NTEsIDY0ODE2LCA2NTc1NiwgMCwgMTI5NTUsIDEwNTk2LCAyODg4LCAwLCAwLCAwLCA5NjU3LCAKLSAgICA5MDE5LCAxOTQ3NjYsIDAsIDI4NzgsIDUzOTAsIDAsIDE5NDk2MSwgMCwgNjg2NzksIDQzNTUyLCA3NTAxLCA2MzI4LCAwLCAKLSAgICAxMDQyOSwgMTAzNjUsIDAsIDAsIDQxOTQ2LCA3NTAzLCA1MjM1LCA4MDMsIDY4MzgxLCAwLCAwLCA4OTg2LCAwLCAxMDYzMiwgCi0gICAgMTE5MzQsIDExNDUyLCAxMzMyLCAwLCAwLCAwLCAwLCAxMTg4ODcsIDE3OTEsIDUxOTEsIDkyODgsIDY0ODIyLCAyODkyLCAwLCAKLSAgICA0MzM5NCwgNTU1LCAwLCAwLCA2NjY0NiwgMCwgMTE5MDAyLCAxMzE1MSwgNzQ1MTIsIDcyODksIDc0MDU1LCAwLCA4ODU0LCAKLSAgICA2NDE2MiwgNTg1OCwgNDE5MjcsIDEwNTgyLCAwLCAxNzg0LCAxMzYxLCAxOTUwNDcsIDAsIDc5MDUsIDAsIDY0ODY4LCAKLSAgICAxMjg4MTMsIDEzMTU4LCA5MjE2NiwgNzIxMSwgMCwgOTM3MSwgNzM5NzMsIDAsIDY4MjgsIDE2MjUsIDkyMzAyLCAwLCAKLSAgICAxMzQyLCA2ODQ0MCwgNjQxNzEsIDAsIDEwOTAzLCAwLCAwLCAwLCAwLCAwLCA0NDgyLCA0MTYwNiwgMCwgMTI4NTY5LCAwLCAKLSAgICAwLCA2NDM4MSwgMCwgMCwgMCwgNDIyNDUsIDAsIDQxOTcyLCAwLCA0NDQsIDAsIDkxMjcsIDY2Njg3LCA2NjYxOSwgMCwgCi0gICAgNzgwMjUsIDAsIDExMzQ5LCA0MDk5MSwgMCwgMCwgMTE5NTk5LCAxMjA4MzAsIDAsIDExOTcsIDEyODI4MiwgMTE0OSwgCi0gICAgMTk0OTcwLCAwLCAwLCA0MDk5MCwgMCwgMCwgMzQ5MiwgMCwgMTI3OTQyLCAwLCAwLCAwLCAxMjgzOCwgMCwgMTk5NDgsIDAsIAotICAgIDMwOTksIDAsIDAsIDQxMDg3LCAwLCAwLCAwLCAxMTkwNTksIDEyMDM2LCA0MTMwOSwgMCwgMCwgODE1MiwgMCwgNjQ0MjgsIAotICAgIDEyMjI3LCAwLCAwLCAxMjgyOCwgMTI3NTExLCAwLCAwLCAxMjA3MDgsIDAsIDAsIDEwMzg2LCAxMTk1NzQsIDAsIDAsIAotICAgIDkyNjgwLCAwLCA2ODE1NCwgMCwgMTc0MywgMCwgMCwgOTIyMzksIDY1MTg2LCAwLCAwLCA5NjA2LCAwLCAwLCA2NDQzOSwgMCwgCi0gICAgMCwgOTI2ODYsIDAsIDAsIDE5NDk2NywgMCwgMCwgMzM5NSwgOTM2MiwgMTA4NzgsIDAsIDAsIDc4MzYyLCA2NDgzMCwgMCwgCi0gICAgMCwgNDEwOTEsIDM0MjYsIDEzNDQsIDg4NzAsIDAsIDAsIDQ3MzUsIDEyNzAxNywgNjExOSwgMTI4MjIsIDQyNjk5LCAwLCAwLCAKLSAgICA3NDgxOCwgNTM5NiwgMCwgNDI2MzcsIDQxMDgwLCAwLCAxMjAzOSwgMTA1NTksIDAsIDExODg5MiwgMCwgOTQ3MiwgMCwgCi0gICAgMTE5MjksIDAsIDcxNzAsIDk1OTYsIDYxMzAsIDEyODgyNiwgNDM2MjksIDExNTc5LCAxOTQ3NDEsIDAsIDE5NDc0MCwgCi0gICAgMTI4NjkxLCA5MjE4NSwgNjY2OTksIDY0NDQwLCAxMDA0LCA5MjU4NCwgMTk0NzM3LCA0MzIzNCwgNjYwMDgsIDEyNjI3LCAwLCAKLSAgICA2ODQxNCwgMCwgNDM2MTksIDQzMzgyLCAxMTMwMCwgNDMzMDQsIDk2ODYsIDU4OTAsIDExNzc2LCA3NTU4LCAxMjcxNTgsIAotICAgIDY1NjI3LCAwLCAxMDcxOCwgMTMxNTQsIDM0NjEsIDkxMzksIDAsIDAsIDAsIDAsIDY1MzY1LCA3Mzg3NywgNjU2MjgsIAotICAgIDc4MDE5LCAwLCAwLCA0MTcwOCwgMTI4NjAsIDI2NDEsIDEyMDY5LCAxMDgzOCwgNTQwMywgMTAzNTIsIDczOTE3LCAxMDA2MSwgCi0gICAgNDMyMzcsIDAsIDUxNDAsIDIwOSwgMTI4ODQ3LCA0MTcwNCwgNDEwNTYsIDQzMDc4LCAxMjgxMjUsIDExODgwOSwgMCwgCi0gICAgMTA4OTksIDY1NDY5LCAwLCAwLCAwLCAyNDEwLCA5OTMsIDAsIDEyMDU4OSwgMTIwNjg5LCA3ODY5MywgMCwgMCwgNzIzMiwgCi0gICAgMCwgMTE5MjUzLCAwLCA3MTEwLCA3NDQ2MiwgMjA2NiwgMTA0ODksIDQyMTY2LCA0MzQ2MywgMTA2NTksIDM2MDAsIDAsIAotICAgIDQyMjQsIDEzMzYsIDQxNTE4LCAwLCAwLCAwLCAwLCA0MTEzOSwgNjQ4MjAsIDkyNTM4LCAxMjk2NiwgNDExMzQsIDAsIDAsIAotICAgIDAsIDAsIDI3MiwgNDI2MywgODc5MywgMCwgMCwgNDE1MDIsIDAsIDk4MywgMTI1NDksIDAsIDAsIDExOTAsIDQxMDksIAotICAgIDEzMzUsIDg0MSwgNTg4OCwgNDEzNTgsIDY0ODYzLCA5NTQ0LCA0MzQ4MSwgMCwgMCwgMCwgMjA5OSwgNTEyMCwgMjQwOSwgCi0gICAgNzc5OSwgMCwgNzQ0MjQsIDAsIDAsIDQ3MzEsIDAsIDY2NjI5LCAwLCAwLCAxMjU1LCA0MTQ5LCA5MjQ3LCAwLCA5OTEzLCAwLCAKLSAgICAwLCA2NDkxNCwgOTE3Nzg3LCA2NTEwMSwgMCwgMTE2OTQsIDkyNDc1LCAxMTY5MCwgNTgzNSwgMTI3MTY0LCA2NjYyNSwgCi0gICAgMTA4NDIsIDQxMzU0LCA0MjEyMywgNDMwOTcsIDExNjg4LCA2NjYzNCwgMTA5NCwgMTk0LCA2NDY5MiwgMCwgODE4MCwgMCwgCi0gICAgMCwgOTk3MiwgNzM4NjUsIDQ1MTksIDYxMTQsIDEwODk4LCA0MzA3MiwgMCwgMCwgMTI4ODU4LCAwLCAwLCAxMDY5NSwgMCwgCi0gICAgNzU0MCwgMCwgODgxLCA3ODU3LCA2MDY3LCA2NTE2NCwgMCwgMCwgMCwgMTMzMTEsIDY4NDAzLCA0MTg1NywgNjQzMjEsIAotICAgIDgzNTksIDAsIDEyNjg5LCAwLCAxOTQ1OTQsIDAsIDAsIDAsIDY4MTgzLCAwLCAwLCAxMjg3LCA1NDM2LCAwLCAwLCA3NDE0MiwgCi0gICAgOTIzMjgsIDc0MTUyLCAxMTkwNzgsIDYwNTEsIDEwNDk3LCA2OTY2OCwgODk4NSwgMTIxMDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDM2NTIsIDEwNTM3LCAwLCAxMjc2LCAxMjA0NDAsIDY1NDksIDI3OSwgNzM3NDUsIDAsIDAsIDAsIDE0ODksIDAsIDAsIDAsIAotICAgIDM4OTksIDEwMDcsIDQyMTI0LCAwLCA0MjEyMiwgOTIzMzcsIDAsIDAsIDExOTg1LCAxMzQ1LCA3ODYwMCwgMCwgMCwgODk1NiwgCi0gICAgNDMwODMsIDExOTgzMCwgNDIxMzgsIDc4NjEwLCAwLCAxMjE1MSwgNzg2MDgsIDc4NjA0LCA3ODYwNSwgNjI4NSwgNzg2MDMsIAotICAgIDc4NjEyLCA3ODYxMywgNjU5NDIsIDQ5MiwgODY4NSwgMCwgMCwgMCwgNzg2MjIsIDQzNzEyLCAyNTgyLCAxMTQ3MCwgCi0gICAgNjQ1MzgsIDc0NDQsIDc4NjE1LCA3ODYxNiwgNDE1NTAsIDAsIDczODM3LCAxMTk4MjMsIDI1MjcsIDExOTgyNCwgMTk3LCAKLSAgICAyNzk5LCA5MjU5NCwgNDE5NDQsIDEyMDI3NiwgOTkzMywgMCwgNjY1MTUsIDc2NywgNTUyNCwgNzAyOCwgMCwgMCwgCi0gICAgMTE5ODI3LCAxMTk4MTcsIDExOTgyOCwgNzg2MzMsIDEwODk2LCAwLCAxNzk5LCAxMjA0OTcsIDY5NzEsIDc0MzM2LCAKLSAgICAxMjgzNDIsIDAsIDY1MzQwLCAxMTg5NzksIDQxNTUxLCAyNDM0LCAwLCAwLCAxMjA1NzksIDAsIDQ2MzEsIDAsIDAsIDY0MDcsIAotICAgIDAsIDYzMzgsIDQzMjE0LCAwLCA3NTcwLCAwLCAzMTkyLCAwLCA4NDE0LCAwLCAwLCAwLCAwLCAwLCA5MTY0LCA2NjYxMiwgMCwgCi0gICAgMzE3MSwgNjYyMywgNDk2MSwgNjgzOTYsIDg4NiwgNTUyMTYsIDg2NTQsIDc4ODMyLCA5OTkzLCA3NDM5MCwgNjQ2MDMsIDAsIAotICAgIDY5MjQxLCA5NTk5LCA3ODYyOSwgNDMwODQsIDc4NjI3LCA3ODYyOCwgNzg2MjUsIDIzOTksIDY5NjkzLCA4OTk0LCAxMDk0NCwgCi0gICAgNDEyMDgsIDAsIDQxMTY4LCA4MTc4LCAwLCAzMzY3LCA5MjMzNCwgNDI1MTAsIDc4NjQxLCA3ODYzNiwgNjgwNCwgNzg2MzQsIAotICAgIDE5NDcsIDAsIDAsIDkyNjgxLCA0Mjc1OSwgMTEwNjgsIDE3MDUsIDkzMzEsIDAsIDc0Nzk4LCA5MTgxLCA2NTM1OSwgMCwgCi0gICAgODAxNywgMCwgNjUwOTYsIDY2NzIwLCAwLCA0MzQ3NSwgMCwgNDkwOSwgMTIxMjYsIDEyODY3MywgMTIwNjk2LCA0OTA0LCAwLCAKKyAgICAwLCAwLCA2NTczNiwgNDE5NTEsIDY0ODE2LCA2NTc1NiwgOTgzMjAzLCAxMjk1NSwgMTA1OTYsIDI4ODgsIDE5NDY0NSwgMCwgCisgICAgMCwgOTY1NywgOTAxOSwgMTk0NzY2LCAwLCAyODc4LCA1MzkwLCAwLCAxOTQ5NjEsIDAsIDY4Njc5LCA0MzU1MiwgNzUwMSwgCisgICAgNjMyOCwgMCwgMTA0MjksIDEwMzY1LCAwLCAwLCA0MTk0NiwgNzUwMywgNTIzNSwgODAzLCA2ODM4MSwgMCwgMCwgODk4NiwgCisgICAgMTI2NTQyLCAxMDYzMiwgMTE5MzQsIDExNDUyLCAxMzMyLCAwLCAwLCAxMjY2NDcsIDAsIDExODg4NywgMTc5MSwgNTE5MSwgCisgICAgOTI4OCwgNjQ4MjIsIDI4OTIsIDAsIDQzMzk0LCA1NTUsIDAsIDAsIDY2NjQ2LCAwLCAxMTkwMDIsIDEzMTUxLCA3NDUxMiwgCisgICAgNzI4OSwgNzQwNTUsIDY0MTYxLCA4ODU0LCA2NDE2MiwgNTg1OCwgNDE5MjcsIDEwNTgyLCAwLCAxNzg0LCAxMzYxLCAKKyAgICAxOTUwNDcsIDAsIDc5MDUsIDAsIDY0ODY4LCAxMjg4MTMsIDEzMTU4LCA5MjE2NiwgNzIxMSwgMCwgOTM3MSwgNzM5NzMsIAorICAgIDkxNzU1MywgNjgyOCwgMTYyNSwgOTIzMDIsIDAsIDEzNDIsIDY4NDQwLCA2NDE3MSwgMTI2NzA0LCAxMDkwMywgOTgzNDg2LCAKKyAgICAwLCAwLCAwLCAwLCA0NDgyLCA0MTYwNiwgMCwgMTI4NTY5LCA5ODMxMTIsIDAsIDY0MzgxLCAwLCAwLCAxOTUwOTAsIAorICAgIDQyMjQ1LCAxMjY0NjcsIDQxOTcyLCAwLCA0NDQsIDAsIDkxMjcsIDY2Njg3LCA2NjYxOSwgMTI2NDg5LCA3ODAyNSwgMCwgCisgICAgMTEzNDksIDQwOTkxLCA5MTc1NzAsIDAsIDExOTU5OSwgMTIwODMwLCAwLCAxMTk3LCAxMjgyODIsIDExNDksIDE5NDk3MCwgCisgICAgMCwgMCwgNDA5OTAsIDQzNzY1LCAwLCAzNDkyLCAwLCAxMjc5NDIsIDAsIDAsIDAsIDEyODM4LCA5ODM5NjksIDE5OTQ4LCAwLCAKKyAgICAzMDk5LCAwLCAwLCA0MTA4NywgMCwgMCwgMCwgMTE5MDU5LCAxMjAzNiwgNDEzMDksIDAsIDAsIDgxNTIsIDAsIDQxNTUwLCAKKyAgICAxMjIyNywgOTgzNjEzLCAwLCAxMjgyOCwgMTI3NTExLCAwLCAwLCAxMjA3MDgsIDAsIDAsIDEwMzg2LCAxMTk1NzQsIDAsIDAsIAorICAgIDkyNjgwLCA5ODM3ODAsIDY4MTU0LCAwLCAxNzQzLCAwLCAwLCA5MjIzOSwgNjUxODYsIDkxNzU3MSwgMCwgOTYwNiwgMCwgMCwgCisgICAgNjQ0MzksIDAsIDAsIDkyNjg2LCAwLCAwLCAxOTQ5NjcsIDAsIDAsIDMzOTUsIDkzNjIsIDEwODc4LCAwLCAwLCA3ODM2MiwgCisgICAgNjQ4MzAsIDAsIDEyNjU1NywgNDEwOTEsIDM0MjYsIDEzNDQsIDg4NzAsIDAsIDAsIDQ3MzUsIDEyNzAxNywgNjExOSwgCisgICAgMTI4MjIsIDQyNjk5LCAwLCA5ODM4MTUsIDc0ODE4LCAxNDIzLCAwLCA0MjYzNywgNDEwODAsIDAsIDEyMDM5LCAxMDU1OSwgCisgICAgMCwgMTE4ODkyLCAwLCA5NDcyLCAwLCAxMTkyOSwgMCwgNzE3MCwgOTU5NiwgNjEzMCwgMTI4ODI2LCA0MzYyOSwgMTE1NzksIAorICAgIDc4NzEzLCAwLCAxOTQ3NDAsIDEyODY5MSwgOTIxODUsIDY2Njk5LCA2NDQ0MCwgMTAwNCwgOTI1ODQsIDE5NDczNywgCisgICAgNDMyMzQsIDY2MDA4LCAxMjYyNywgMCwgNjg0MTQsIDAsIDQzNjE5LCA0MzMwMywgMTEzMDAsIDQzMzA0LCA5Njg2LCA1ODkwLCAKKyAgICAxMTc3NiwgNzU1OCwgMTI3MTU4LCA2NTYyNywgMCwgMTA3MTgsIDEzMTU0LCAzNDYxLCA5MTM5LCAwLCAwLCAwLCAwLCAKKyAgICA2NTM2NSwgNzM4NzcsIDY1NjI4LCA3ODAxOSwgMTIwMzE5LCAwLCA0MTcwOCwgMTI4NjAsIDI2NDEsIDEyMDY5LCAxMDgzOCwgCisgICAgNTQwMywgMTAzNTIsIDcwMDg1LCAxMDA2MSwgNDMyMzcsIDAsIDUxNDAsIDIwOSwgMTI4ODQ3LCA0MTcwNCwgNDEwNTYsIAorICAgIDQzMDc4LCAxMjgxMjUsIDExODgwOSwgMCwgMTA4OTksIDY1NDY5LCA5MjM2MiwgMCwgMCwgMjQxMCwgOTkzLCAwLCAKKyAgICAxMjA1ODksIDEyMDY4OSwgNzg2OTMsIDAsIDAsIDcyMzIsIDAsIDExOTI1MywgMCwgNzExMCwgNzQ0NjIsIDIwNjYsIAorICAgIDEwNDg5LCA0MjE2NiwgNDM0NjMsIDEwNjU5LCAzNjAwLCAwLCA0MjI0LCAxMzM2LCA0MTUxOCwgMCwgMCwgMCwgMCwgCisgICAgNDExMzksIDY0ODIwLCA5MjUzOCwgMTI5NjYsIDQxMTM0LCAwLCAwLCAwLCAwLCAyNzIsIDQyNjMsIDg3OTMsIDAsIDAsIAorICAgIDQxNTAyLCAwLCA5ODMsIDEyNTQ5LCAwLCAwLCAxMTkwLCA0MTA5LCAxMzM1LCA4NDEsIDU4ODgsIDQxMzU4LCA2NDg2MywgCisgICAgOTU0NCwgNDM0ODEsIDAsIDE5NDgwNiwgNzAwMjcsIDIwOTksIDUxMjAsIDI0MDksIDc3OTksIDAsIDc0NDI0LCAwLCAwLCAKKyAgICA0NzMxLCAwLCA2NjYyOSwgMCwgMCwgMTI1NSwgNDE0OSwgOTI0NywgMCwgOTkxMywgMCwgMCwgNjQ5MTQsIDkxNzc4NywgCisgICAgNjUxMDEsIDAsIDExNjk0LCA5MjQ3NSwgMTE2OTAsIDU4MzUsIDEyNzE2NCwgNjY2MjUsIDEwODQyLCA0MTM1NCwgNDIxMjMsIAorICAgIDQzMDk3LCAxMTY4OCwgNjY2MzQsIDEwOTQsIDE5NCwgNjQ2OTIsIDAsIDgxODAsIDAsIDAsIDk5NzIsIDczODY1LCA0NTE5LCAKKyAgICA2MTE0LCAxMDg5OCwgNDMwNzIsIDAsIDAsIDkzOTYwLCA5ODMzMTQsIDEyNjU4MSwgMTA2OTUsIDAsIDc1NDAsIDAsIDg4MSwgCisgICAgNzg1NywgNjA2NywgNjUxNjQsIDAsIDAsIDAsIDEzMzExLCA2ODQwMywgNDE4NTcsIDY0MzIxLCA4MzU5LCAwLCAxMjY4OSwgCisgICAgMCwgMTk0NTk0LCAwLCA5ODMzMDQsIDk4Mzg3MiwgNjgxODMsIDAsIDk4MzMwNiwgMTI4NywgNTQzNiwgMCwgOTgzMzA5LCAKKyAgICA3NDE0MiwgOTIzMjgsIDc0MTUyLCAxMTkwNzgsIDYwNTEsIDEwNDk3LCA2OTY2OCwgODk4NSwgMTIxMDksIDk4MzMxNSwgMCwgCisgICAgMTI3MjQyLCAwLCAwLCAzNjUyLCAxMDUzNywgMCwgMTI3NiwgMTIwNDQwLCA2NTQ5LCAyNzksIDczNzQ1LCAwLCAwLCAwLCAKKyAgICAxNDg5LCAwLCAwLCAwLCAzODk5LCAxMDA3LCA0MjEyNCwgOTgzNTU3LCA0MjEyMiwgOTIzMzcsIDkyMzY3LCAwLCAxMTk4NSwgCisgICAgMTM0NSwgNzg2MDAsIDAsIDAsIDg5NTYsIDQzMDgzLCA5NDA1NywgNDIxMzgsIDc4NjEwLCAwLCAxMjE1MSwgNzg2MDgsIAorICAgIDc4NjA0LCA3ODYwNSwgNjI4NSwgNzg2MDMsIDc4NjEyLCA3ODYxMywgNjU5NDIsIDQ5MiwgODY4NSwgMCwgOTgzNzUwLCAwLCAKKyAgICA3ODYyMiwgNDM3MTIsIDI1ODIsIDExNDcwLCA2NDUzOCwgNzQ0NCwgNzg2MTUsIDc4NjE2LCAyMjk3LCAwLCA3MzgzNywgCisgICAgMTE5ODIzLCAyNTI3LCAxMTk4MjQsIDE5NywgMjc5OSwgOTI1OTQsIDQxOTQ0LCAxMjAyNzYsIDk5MzMsIDAsIDY2NTE1LCAKKyAgICA3NjcsIDU1MjQsIDcwMjgsIDAsIDAsIDExOTgyNywgMTE5ODE3LCAxMTk4MjgsIDc4NjMzLCAxMDg5NiwgMCwgMTc5OSwgCisgICAgMTIwNDk3LCA2OTcxLCA3NDMzNiwgMTI4MzQyLCAwLCA2NTM0MCwgMTE4OTc5LCA0MTU1MSwgMjQzNCwgOTQwMTgsIDAsIAorICAgIDEyMDU3OSwgMCwgNDYzMSwgMCwgMCwgNjQwNywgMCwgNjMzOCwgNDMyMTQsIDAsIDc1NzAsIDAsIDMxOTIsIDAsIDg0MTQsIAorICAgIDAsIDkzOTgzLCAwLCAwLCAwLCA5MTY0LCA2NjYxMiwgOTM5NTksIDMxNzEsIDY2MjMsIDQ5NjEsIDY4Mzk2LCA4ODYsIAorICAgIDU1MjE2LCA4NjU0LCA3ODgzMiwgOTk5MywgNzQzOTAsIDY0NjAzLCA3MDA2NiwgNjkyNDEsIDk1OTksIDc4NjI5LCA0MzA4NCwgCisgICAgNzg2MjcsIDc4NjI4LCA3ODYyNSwgMjM5OSwgNjk2OTMsIDg5OTQsIDEwOTQ0LCA0MTIwOCwgOTgzNzA0LCA0MTE2OCwgCisgICAgODE3OCwgMCwgMzM2NywgOTIzMzQsIDQyNTEwLCA3ODY0MSwgNzg2MzYsIDY4MDQsIDc4NjM0LCAxOTQ3LCAwLCAwLCAKKyAgICA5MjY4MSwgNDI3NTksIDExMDY4LCAxNzA1LCA5MzMxLCAwLCA3NDc5OCwgOTE4MSwgNjUzNTksIDAsIDgwMTcsIDExOTgzMSwgCisgICAgNjUwOTYsIDY2NzIwLCAwLCA0MzQ3NSwgMCwgNDkwOSwgMTIxMjYsIDEyODY3MywgMTIwNjk2LCA0OTA0LCA5ODMzMjUsIAogICAgIDY5NjUwLCAxMzY1LCA5MjUzLCA0Mjc1NywgNDM0MzYsIDc0NjIsIDAsIDAsIDAsIDAsIDExOTU4NywgNjQ0MTUsIDAsIDAsIAotICAgIDUzOTgsIDAsIDEyNzM4NiwgMCwgMCwgMCwgMTE5MDE1LCAwLCAwLCA5NDc2LCAwLCAwLCAxMjc2MywgMCwgMzYyOSwgMCwgCi0gICAgMTMwMDUsIDAsIDM2MjgsIDAsIDAsIDkyNTAyLCAzNDY5LCA0MjEwNywgNDIxMTYsIDkxNzU3OCwgNjQ4MDksIDI5MjgsIAotICAgIDQ5MDUsIDk4NTMsIDg1MSwgOTA0MCwgMCwgNjQ2NjUsIDQzMDg2LCA5MTE0LCAwLCA0MjU4MywgOTMxNSwgNDgyMiwgNDkwNiwgCi0gICAgMzg1MiwgMjg0NywgMTE5ODIxLCAzMjM2LCAxMTMxNywgMTI1MSwgNzc3NywgNDE4NTIsIDExNDEwLCAxMDk2NCwgMCwgCi0gICAgNDMyMjIsIDEyNjQ2LCAxMjAyNjksIDEwMjU5LCA5ODY1LCA2NTgyMSwgMCwgNjAxOCwgOTIyOTAsIDAsIDEyMjc2LCAwLCAKLSAgICA2ODM3MiwgMCwgOTIyNTksIDExOTI0NCwgMCwgMCwgMTA0NjcsIDAsIDI0NDMsIDEwOTE4LCA3ODIxNywgMTE5ODI1LCAKLSAgICAxMDAxLCA5MjQxLCAxOTI3LCAwLCAwLCA3Mzk4NywgMTI3ODg1LCAwLCAwLCAxMTg4MjgsIDEyMDI3MSwgNjU2NzgsIAotICAgIDEyODY3LCAwLCA4MjYwLCA3Nzk0NSwgNzUxOSwgMTE1MDUsIDEyMjc0LCA4OTA0LCA1MTgsIDY1ODU3LCAwLCAxMjg2NzQsIAotICAgIDEzMjA0LCA0Mzg3LCA4NTcsIDAsIDY1MzY5LCAwLCA5MjMzNiwgNDMxMjUsIDEyMDU5MiwgMCwgMCwgMCwgMCwgNTEzNiwgCi0gICAgMTk2OCwgMCwgMTk1MDIzLCAxMzM3LCA2NDk2NywgMTYyOSwgMCwgNzk2LCA2NjUwNiwgMCwgNzQxMjMsIDEyODc3LCAwLCAKLSAgICA0MjMxNCwgNDMzODgsIDAsIDc0NDAzLCA2MTIwLCA0NzgsIDY1MTUxLCA2ODEyOCwgMTI4MTQ3LCA0MzA4MiwgNjAxNiwgMCwgCi0gICAgNDIyODQsIDEyODUwNywgNDI3NiwgMTIwNiwgMzYxOSwgNDE2MzgsIDY5NjkxLCAzODQzLCAxMjAxMSwgODg1MywgMzM2MSwgCi0gICAgMCwgNDkwLCAxMDcxNSwgNzU3OCwgNjgzODQsIDAsIDY1MzUwLCAxMDUzMCwgMTIzNDgsIDg2NTMsIDc0MzE0LCA0MjQzNSwgCi0gICAgNjE1NCwgOTU1MSwgNjUzNTQsIDc4NTIyLCA3ODQsIDQyMzk3LCAzMzQsIDAsIDQyNDE2LCA2NTM1NiwgNjUyNzMsIDc3OTg3LCAKLSAgICA2OTY2NiwgNDQ0MiwgMTAzNjQsIDAsIDc3OCwgNDE2MjYsIDQyNDU1LCA3OTg5LCA3NDA2MywgMzIyNywgMCwgMTI3Mjc1LCAKLSAgICA3Mzk4MywgMjkxNSwgMTE1MDIsIDQxMDIyLCA0MTcwMiwgMTAzMDksIDEyNzAzNSwgNzgzMjAsIDAsIDY5NzUsIDAsIDU0MTUsIAotICAgIDEyMTc2LCAwLCA3NDE5MywgMzQ2MiwgNjUyMTUsIDQyNjI5LCA3ODY5MSwgNzM3ODQsIDAsIDAsIDk3NTksIDAsIDc4MzI0LCAKLSAgICAxMjcyNTQsIDgxMTQsIDc4Njk4LCA3ODY5NywgNzg2OTYsIDc4Njk1LCA4NzEwLCA0MjQ5NSwgMTE4OTU2LCAwLCA0MDUxLCAKLSAgICAxMDQ2MCwgNDMzNjQsIDExODkxNywgMTM1NiwgMTIxNjEsIDQyNzEzLCAxMjg4NTcsIDEyNzI2OCwgMTYxOSwgOTcwMywgCi0gICAgNDMxNTIsIDQyNDg5LCA0MjExMiwgMCwgMTg3NSwgMTA4MDgsIDQyMTA5LCAxMjAyODQsIDQxODYwLCA2NDg2MiwgMTMzMDUsIAotICAgIDY0OTA3LCA1Mjg5LCAxMzE0NCwgMTI4NjU4LCAwLCA1NTc1LCA5Njc1LCAwLCA1OTQwLCAyMjYsIDI2NDksIDYzMzYsIDAsIAotICAgIDAsIDQzMjM2LCAzMzgyLCA0MjQ0OSwgNjQ5OCwgMTY1OCwgMTE5MzYsIDc4MjMyLCAwLCAxMTI2OSwgMTAxNTEsIDczNzU5LCAKLSAgICA0MzEwMCwgNzQ0NDksIDY1NTA4LCAwLCAwLCAwLCA4OTM1LCA5MTc5ODUsIDAsIDAsIDAsIDYxNiwgNzQ3NTMsIDY1MTc4LCAKLSAgICA0Njg0LCA3ODcwMSwgMTE5NjUzLCAwLCAwLCAwLCA2MDQ4LCA3NDQ2MCwgNDIxMTAsIDczOTY1LCAxMDg3MCwgODU1NywgCi0gICAgMTEwNTQsIDY4NjY0LCAxMTkwNDksIDk2ODEsIDQ0NzUsIDAsIDQxMTQyLCAyMTAwLCAwLCAxMjA3MzEsIDYwMzUsIDAsIAotICAgIDc2NTEsIDEwMjk2LCA2NDQ0MywgMCwgMCwgOTE3OTg3LCAwLCAxMTg5NjYsIDc0MTQ0LCA0MDk5NywgMCwgMTAzOTIsIAotICAgIDEwMzI4LCA0MDk5OCwgNDM0NjIsIDc0NDg4LCAwLCA5ODAwLCA4OTc5LCAwLCAxMTkxMzEsIDQxMDAwLCAwLCAxMTkyMzksIAotICAgIDY0ODcsIDMzODYsIDAsIDEwMzQ0LCAwLCA2NTI5OSwgNTM5NCwgNDMyNDYsIDc4MjQzLCAxMDIyMCwgNjY1MDUsIDQxMjAwLCAKLSAgICAxMjg1ODMsIDQ0MjUsIDAsIDAsIDAsIDQzMDc0LCA3Mzc5OSwgMCwgNzgxNDcsIDAsIDEyMTczLCA3ODU0NSwgMCwgMCwgCi0gICAgNjUzMzgsIDAsIDAsIDExOTU4MiwgNDQ3NCwgMCwgNDMwOTMsIDAsIDE1ODcsIDAsIDEyNzM3MiwgNjQ0NzUsIDEyODA5OCwgCi0gICAgMTM2OSwgMCwgOTk1OSwgNzkyNywgMCwgNDU2MCwgMCwgMCwgOTIyNzcsIDAsIDY0OTQ4LCA0NDMwLCA3NDM0NywgNDI2MDEsIAotICAgIDQ1MTQsIDY2NDM0LCAwLCA4MTk0LCA2NTQ2MiwgMTA2MjYsIDEwOTY1LCAwLCA4ODkzLCAwLCAxMjU0MiwgMCwgNjUzNDEsIAotICAgIDAsIDY1ODI5LCA3OTI1LCAxMTk4MjIsIDEwNDc1LCAwLCAwLCAxMzUyLCAxMTA2OSwgNzcwNywgMTI3NTYwLCAwLCA2NTI3OSwgCi0gICAgMTI3MTAyLCA2ODIwNywgMTI3MTAwLCA2NTYwNSwgNjA0MCwgMTI3MDk3LCAxMDA3MSwgMCwgOTMzNiwgMTI4ODI0LCAwLCAKLSAgICA4ODk5LCA3Nzk4LCA2NDQ3NCwgNjQyNTksIDAsIDY1MTg4LCA3ODIwLCA0MzAxOCwgMCwgMCwgNzc0NiwgMTQ5MiwgNzg1NTEsIAotICAgIDEwODg0LCA3Nzk4MiwgMCwgNTEyNywgMTEyODUsIDQyNTAxLCA1NDk1LCA0MjczLCA0MzA5NSwgNDE0MjYsIDEwODQ5LCAKLSAgICA1NzMwLCAyOTk5LCA2MzQyLCA2ODYzNiwgNzQzMDQsIDM3MSwgNjQzNzMsIDYwMjMsIDE2OSwgNTQ5NywgMTE3MDgsIDAsIDAsIAotICAgIDYzMjMsIDE5NDY4NCwgODIyNCwgMCwgODkzOCwgNjA0MywgMTI3MzgsIDAsIDAsIDUzMjEsIDAsIDE5NDc5OCwgMCwgMjU4OSwgCi0gICAgNzQzMzIsIDE2ODksIDc4MDIsIDQ2ODMsIDc0MzE4LCA0MjcwNCwgMTIwMjk2LCAxMTkwNSwgMCwgMCwgMTI4NTE2LCAKLSAgICAxMjgxNjMsIDc0NTEzLCA2MDQ5LCAwLCA0MDI3LCA4MzQsIDExODk2MiwgMTgwMywgMCwgMTUwMywgMCwgMCwgMCwgNTczMSwgCi0gICAgMTM4MSwgMjM4NywgMCwgMCwgODI4OSwgNjQ1MjUsIDY1ODE3LCAyODgxLCA0MzE0MiwgMCwgOTYwMSwgMjg3OSwgOTY2OCwgCi0gICAgOTc2NiwgMCwgNTcyOSwgOTE3ODMzLCA3NDQxMCwgNjAzNiwgNjQ4ODEsIDQwMjYsIDkzNjEsIDEyNzA5MSwgMjg4NywgMCwgCi0gICAgMzUyNiwgNjI5OCwgMCwgNzc4OTcsIDEyMDA5NSwgNzg1MTksIDAsIDg1NzIsIDYwMjEsIDc3ODk2LCAxMjgyODgsIDc3ODk1LCAKKyAgICA1Mzk4LCAwLCAxMjczODYsIDkzOTUzLCAwLCAwLCAxMTkwMTUsIDAsIDAsIDk0NzYsIDAsIDk4Mzc2OCwgMTI3NjMsIAorICAgIDEyNjYwMywgMzYyOSwgMCwgMTMwMDUsIDAsIDM2MjgsIDAsIDAsIDkyNTAyLCAzNDY5LCA0MjEwNywgNDIxMTYsIDkxNzU3OCwgCisgICAgNjQ4MDksIDI5MjgsIDQ5MDUsIDk4NTMsIDg1MSwgOTA0MCwgMCwgNjQ2NjUsIDQzMDg2LCA5MTE0LCAwLCA0MjU4MywgCisgICAgOTMxNSwgNDgyMiwgNDkwNiwgMzg1MiwgMjg0NywgMTE5ODIxLCAzMjM2LCAxMTMxNywgMTI1MSwgNzc3NywgNDE4NTIsIAorICAgIDExNDEwLCAxMDk2NCwgMCwgNDMyMjIsIDEyNjQ2LCAxMjAyNjksIDEwMjU5LCA5ODY1LCA2NTgyMSwgMCwgNjAxOCwgCisgICAgOTIyOTAsIDAsIDEyMjc2LCAwLCA2ODM3MiwgMCwgOTIyNTksIDExOTI0NCwgMCwgOTgzMjI0LCAxMDQ2NywgMCwgMjQ0MywgCisgICAgMTA5MTgsIDc4MjE3LCAxMTk4MjUsIDEwMDEsIDkyNDEsIDE5MjcsIDAsIDAsIDczOTg3LCAxMjc4ODUsIDAsIDAsIAorICAgIDExODgyOCwgMTIwMjcxLCA2NTY3OCwgMTI4NjcsIDAsIDgyNjAsIDc3OTQ1LCA3NTE5LCAxMTUwNSwgMTIyNzQsIDg5MDQsIAorICAgIDUxOCwgNjU4NTcsIDAsIDEyODY3NCwgMTMyMDQsIDQzODcsIDg1NywgMCwgNjUzNjksIDAsIDkyMzM2LCA0MzEyNSwgCisgICAgMTIwNTkyLCAwLCAwLCAwLCAwLCA1MTM2LCAxOTY4LCA5ODMwNDEsIDEyNjYyNywgMTMzNywgNjQ5NjcsIDE2MjksIDAsIAorICAgIDc5NiwgNjY1MDYsIDAsIDc0MTIzLCAxMjg3NywgMTIwNjQ5LCA0MjMxNCwgNDMzODgsIDAsIDc0NDAzLCA2MTIwLCA0NzgsIAorICAgIDY1MTUxLCA2ODEyOCwgMTI4MTQ3LCA0MzA4MiwgNjAxNiwgMCwgNDIyODQsIDEyODUwNywgNDI3NiwgMTIwNiwgMzYxOSwgCisgICAgNDE2MzgsIDY5NjkxLCAzODQzLCAxMjAxMSwgODg1MywgMzM2MSwgMCwgNDkwLCAxMDcxNSwgNzU3OCwgNjgzODQsIDAsIAorICAgIDY1MzUwLCAxMDUzMCwgMTIzNDgsIDg2NTMsIDc0MzE0LCA0MjQzNSwgNjE1NCwgOTU1MSwgNjUzNTQsIDc4NTIyLCA3ODQsIAorICAgIDQyMzk3LCAzMzQsIDAsIDQyNDE2LCA2NTM1NiwgNjUyNzMsIDc3OTg3LCA2OTY2NiwgNDQ0MiwgMTAzNjQsIDAsIDc3OCwgCisgICAgNDE2MjYsIDQyNDU1LCA3OTg5LCA3NDA2MywgMzIyNywgNjk5MDcsIDEyNzI3NSwgNzM5ODMsIDI5MTUsIDExNTAyLCAKKyAgICA0MTAyMiwgNDE3MDIsIDEwMzA5LCAxMjcwMzUsIDc4MzIwLCAwLCA2OTc1LCAwLCA1NDE1LCAxMjE3NiwgMCwgNzQxOTMsIAorICAgIDM0NjIsIDY1MjE1LCA0MjYyOSwgNzg2OTEsIDczNzg0LCAwLCAwLCA5NzU5LCAwLCA3MDA1NywgMTI3MjU0LCA4MTE0LCAKKyAgICA3ODY5OCwgNzg2OTcsIDc4Njk2LCA3ODY5NSwgODcxMCwgNDI0OTUsIDExODk1NiwgMCwgNDA1MSwgMTA0NjAsIDQzMzY0LCAKKyAgICAxMTg5MTcsIDEzNTYsIDEyMTYxLCA0MjcxMywgMTI4ODU3LCAxMjcyNjgsIDE2MTksIDk3MDMsIDQzMTUyLCA0MjQ4OSwgCisgICAgNDIxMTIsIDEyNzk3OCwgMTg3NSwgMTA4MDgsIDQyMTA5LCAxMjAyODQsIDQxODYwLCA2NDg2MiwgMTMzMDUsIDY0OTA3LCAKKyAgICA1Mjg5LCAxMzE0NCwgMTI4NjU4LCAwLCA1NTc1LCA5Njc1LCAwLCA1OTQwLCAyMjYsIDI2NDksIDYzMzYsIDk4MzI2OSwgCisgICAgMTE5ODMwLCA0MzIzNiwgMzM4MiwgNDI0NDksIDY0OTgsIDE2NTgsIDExOTM2LCA3ODIzMiwgMCwgMTEyNjksIDEwMTUxLCAKKyAgICA3Mzc1OSwgNDMxMDAsIDY5ODg4LCA2NTUwOCwgMCwgMCwgMCwgODkzNSwgOTE3OTg1LCAwLCAwLCAwLCA2MTYsIDc0NzUzLCAKKyAgICA2NTE3OCwgNDY4NCwgNzg3MDEsIDExOTY1MywgMCwgMTI2NTUxLCAwLCA2MDQ4LCA3NDQ2MCwgNDIxMTAsIDczOTY1LCAKKyAgICAxMDg3MCwgODU1NywgMTEwNTQsIDY4NjY0LCAxMTkwNDksIDk2ODEsIDQ0NzUsIDAsIDQxMTQyLCAyMTAwLCAwLCAxMjA3MzEsIAorICAgIDYwMzUsIDAsIDc2NTEsIDEwMjk2LCA2NDQ0MywgMCwgOTgzMjg3LCA5MTc5ODcsIDAsIDExODk2NiwgNzQxNDQsIDQwOTk3LCAKKyAgICAwLCAxMDM5MiwgMTAzMjgsIDQwOTk4LCA0MzQ2MiwgNzQ0ODgsIDAsIDk4MDAsIDg5NzksIDAsIDEzMzA3LCA0MTAwMCwgMCwgCisgICAgMTE5MjM5LCA2NDg3LCAzMzg2LCAwLCAxMDM0NCwgMCwgNjUyOTksIDUzOTQsIDQzMjQ2LCA3ODI0MywgMTAyMjAsIDY2NTA1LCAKKyAgICA0MTIwMCwgMTI4NTgzLCA0NDI1LCAwLCAwLCAwLCA0MzA3NCwgNzM3OTksIDk4MzIwMCwgNzgxNDcsIDAsIDEyMTczLCAKKyAgICA3ODU0NSwgMCwgMTI3MDExLCA2NTMzOCwgMCwgMCwgMTE5NTgyLCA0NDc0LCAwLCA0MzA5MywgMTI4NjQ0LCAxNTg3LCAwLCAKKyAgICAxMjczNzIsIDY0NDc1LCAxMjgwOTgsIDEzNjksIDk4MzY2MywgOTk1OSwgNzkyNywgMCwgNDU2MCwgMCwgMCwgOTIyNzcsIDAsIAorICAgIDY0OTQ4LCA0NDMwLCA3NDM0NywgNDI2MDEsIDQ1MTQsIDY2NDM0LCA5Mzk1NSwgODE5NCwgNjU0NjIsIDEwNjI2LCAxMDk2NSwgCisgICAgMCwgODg5MywgOTgzMjkzLCAxMjU0MiwgMCwgNjUzNDEsIDAsIDY1ODI5LCA3OTI1LCAxMTk4MjIsIDEwNDc1LCAwLCAwLCAKKyAgICAxMzUyLCAxMTA2OSwgNzcwNywgMTI3NTYwLCAxMjY0ODYsIDY1Mjc5LCAxMjcxMDIsIDY4MjA3LCAxMjcxMDAsIDcwOTksIAorICAgIDYwNDAsIDEyNzA5NywgMTAwNzEsIDAsIDkzMzYsIDQzNzUwLCAwLCA4ODk5LCA3Nzk4LCA2NDQ3NCwgNjQyNTksIDY5ODczLCAKKyAgICA2NTE4OCwgNzgyMCwgNDMwMTgsIDEyNzA4MiwgMCwgNzc0NiwgMTQ5MiwgNzg1NTEsIDEwODg0LCA3Nzk4MiwgMCwgNTEyNywgCisgICAgMTEyODUsIDQyNTAxLCA1NDk1LCA0MjczLCA0MzA5NSwgNDE0MjYsIDEwODQ5LCA1NzMwLCAyOTk5LCA2MzQyLCA2ODYzNiwgCisgICAgNzQzMDQsIDM3MSwgNjQzNzMsIDYwMjMsIDE2OSwgNTQ5NywgMTE3MDgsIDAsIDAsIDYzMjMsIDE5NDY4NCwgODIyNCwgMCwgCisgICAgODkzOCwgNjA0MywgMTI3MzgsIDAsIDk4MzA3NiwgNTMyMSwgMCwgMTk0Nzk4LCAwLCAyNTg5LCA3NDMzMiwgMTY4OSwgCisgICAgNzgwMiwgNDY4MywgNzQzMTgsIDQyNzA0LCAxMjAyOTYsIDExOTA1LCAwLCAwLCAxMjg1MTYsIDEyODE2MywgNzQ1MTMsIAorICAgIDYwNDksIDAsIDQwMjcsIDgzNCwgMTE4OTYyLCAxODAzLCAwLCAxNTAzLCAwLCAwLCA3MTMxMiwgNTczMSwgMTM4MSwgMjM4NywgCisgICAgMCwgMCwgODI4OSwgNjQ1MjUsIDY1ODE3LCAyODgxLCA0MzE0MiwgMCwgOTYwMSwgMjg3OSwgOTY2OCwgOTc2NiwgMCwgCisgICAgNTcyOSwgOTE3ODMzLCA3NDQxMCwgNjAzNiwgNjQ4ODEsIDQwMjYsIDkzNjEsIDEyNzA5MSwgMjg4NywgMCwgMzUyNiwgCisgICAgNjI5OCwgMCwgNzc4OTcsIDEyMDA5NSwgNzg1MTksIDAsIDg1NzIsIDYwMjEsIDc3ODk2LCAxMjgyODgsIDc3ODk1LCAKICAgICA0MzE1NSwgMCwgMTE5ODQ5LCAzMTQ2LCAxMDk1OSwgOTQ4MywgMCwgNzc4OTMsIDEwOTgxLCAxNjYsIDkxNzg0MSwgODYzNSwgCi0gICAgMCwgMTA2MjMsIDQwOCwgMTE5MDU4LCAxMjc1MDcsIDEzMjk4LCAwLCA3NDI2LCA0MTY0MSwgMTI3MTcsIDAsIDc2MDcsIAotICAgIDEwNjM5LCA2NjcxMywgMCwgMCwgNDE2NDMsIDc0MTM0LCAwLCA4NzEzLCA0MTY0MCwgMTAyMjEsIDQxNjQ1LCA2NjcxMiwgCi0gICAgNjY0NSwgNjQ2LCA2NjcyNiwgNjY3MTEsIDQyMTI5LCAwLCA3NzkwMSwgMzQ3MiwgODY5NywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTgwOSwgMTk1MCwgMTE5MzU2LCA5MjQzMiwgNzQ1NzIsIDAsIDQyMTM2LCAwLCAwLCAwLCAwLCAzMjQ3LCAxMTk4NTQsIAotICAgIDY1MDE3LCAwLCA2ODQyOCwgNjY2NjgsIDAsIDAsIDEwOTgzLCAwLCAwLCAwLCA0MTU2NywgMCwgMCwgMCwgMTk0NjI0LCAwLCAKLSAgICAwLCAwLCA4Mjg1LCAwLCA0NTA5LCAwLCA2NjQ3MSwgMTIyMTYsIDAsIDQwOTg4LCA5MjU5MiwgMCwgNDE3MjcsIDAsIAotICAgIDQyODQ4LCAyMzk2LCA5MTc3NjYsIDAsIDc0MDE4LCA5MTc1MzgsIDY0OTQwLCA3MDI3LCAzODg2LCAwLCA0MjQ1NywgCi0gICAgMTE5MDA4LCAwLCA5OTYsIDY4MTIzLCA5MTc1NzEsIDQyNDksIDAsIDkxNzU5NCwgMTE3MDcsIDgyMjIsIDAsIDc5MzksIAotICAgIDkyNDU0LCA5MjQ2MCwgMTI3ODAxLCA5MTc1OTIsIDEyODM1OSwgODUzNCwgMTI3MTU0LCA0MDk4MywgMCwgMCwgMCwgNzIwMSwgCi0gICAgMTI1NjEsIDAsIDQyMzcxLCAxMjU1OCwgMCwgOTE3NTQ5LCAxMDA1MiwgNDA5ODIsIDAsIDAsIDE0ODgsIDAsIDAsIDAsIAotICAgIDkxNzU1OSwgMCwgMCwgMTU2MywgMTI4MDM0LCA5NjE5LCAwLCAwLCAwLCAxMjc4NzIsIDAsIDU4MDMsIDc3OTcsIDYwNzAsIAotICAgIDEwMDA2LCAwLCAyOTIyLCA2MDgyLCAwLCA2NTAwOSwgMCwgMTI1NjcsIDEyODcwMywgMCwgNDE0MTIsIDAsIDAsIDM2MDcsIAotICAgIDkyMDAsIDEwMDQ2LCA5NjEyLCA0MjE1MywgODIxOCwgOTQ4NSwgMCwgMjAzMiwgNzgzNTQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQzMDg1LCA2MDU3LCA1MDgsIDEyODU4NSwgMTI4MDE1LCAxMjAyNjUsIDAsIDkyNDA1LCAwLCAwLCA2MzgsIDYwODMsIAotICAgIDExOTA3MiwgMCwgMCwgMjMwNSwgNzgzNDgsIDAsIDAsIDYwNTYsIDY2NTksIDAsIDAsIDYwODUsIDAsIDAsIDM5MTUsIAotICAgIDQxNjM0LCAwLCA0MTYzOSwgNjM5MTIsIDExOTQxLCAwLCA0MDI4LCAxNzg3LCA0MjE4MCwgNDMwOTYsIDkyNjkwLCAzMjQ5LCAKLSAgICAxNzY4LCAwLCAxMjMyOCwgNTAxLCAxMjcwNzQsIDEwNjAxLCAwLCA1ODMsIDAsIDQxOTc3LCAwLCA2NjAwNCwgMTE5MzUwLCAKLSAgICA2NTA1LCA3NDAxMCwgMCwgMTMwNjQsIDU1MjY3LCAxMjA4MTAsIDY1MDAsIDU1MjYsIDY1MDQ5LCAwLCA3Mzc2NCwgMCwgCi0gICAgOTIzNzYsIDEyNzQ1LCA5Njc4LCAwLCAxMjA1ODcsIDk4NjksIDEyODgxNSwgMTc3MSwgMCwgODkzNiwgMCwgMCwgNDIwOCwgCi0gICAgNzgzNDEsIDExOTExNSwgNzgzNDIsIDAsIDAsIDc0MTAxLCAwLCAxMTc2MiwgMCwgOTI0MjIsIDc3OTk3LCAxMjg3ODgsIAotICAgIDY2NDc1LCAwLCA1MDI3LCA3ODE3MiwgMTI4ODc4LCAwLCA1MDY5LCA3Mzg2MiwgNTAyOCwgOTg5NywgMCwgNzM3MzksIAotICAgIDUwMjYsIDAsIDY4NjM5LCA2MzMxLCAxMDA3OSwgODkzMSwgMCwgMTQxNSwgODg2NiwgNDE5MDEsIDc0NzkwLCA3ODEzOCwgCi0gICAgMTE5MzYxLCAwLCA0MzEwNiwgNTAyOSwgNjUzMDksIDE1ODAsIDM1OTgsIDY4NDI0LCA0MTA3MCwgNzc5MDMsIDAsIDM0NDAsIAotICAgIDc4MjE1LCAxNTYyLCAxMjg2NTYsIDEyNzE3NSwgMTE5MzU4LCAxNzE2LCAwLCAxMDYwMCwgOTE3ODY3LCA2MjAsIDQxMDAxLCAKLSAgICA2MDI4LCAwLCA0Mjg5MiwgMCwgNzQ4MjIsIDUwMjQsIDEyMDgyOSwgNDEwMDMsIDAsIDUwMjUsIDEyODI2OSwgMCwgMCwgCi0gICAgMTE5MzI4LCAwLCA2NTU1NywgMCwgNzQ1NDEsIDAsIDExNTk5LCAxMjgyMDksIDExNjAyLCA2MjQzLCAxMTU3NCwgMTE1ODEsIAotICAgIDExNTk3LCAxMTU5OCwgNjI1MywgNjEwNSwgMTE1ODQsIDc0MTk1LCAxMTU2OSwgNjUyNzUsIDg5MDYsIDEyNzA5NiwgNTc1NSwgCi0gICAgMjYzNiwgMCwgMTA4MTUsIDExNjE5LCA3ODcxNywgNDE1NDAsIDc4MTUsIDExNjE2LCA2OTc5LCAxMjA4MCwgNzcyMSwgCi0gICAgMTE2MDQsIDc4NjksIDE1OTIsIDAsIDQyMTUyLCA3ODQ5OCwgNDEwNDgsIDAsIDgyOSwgMCwgOTI0MDYsIDE5OTUwLCAwLCAKLSAgICAxMjgyMTcsIDY2MTYsIDAsIDExODg3NSwgMTA5NTMsIDM5MSwgMCwgNjk3ODUsIDQ4MiwgNDIyOTYsIDExNTg4LCAwLCAKLSAgICA0MzYwNiwgMCwgNjgzOTcsIDY2MzcwLCA3NDUwNiwgNDIzMzUsIDAsIDAsIDAsIDc1MzgsIDUzMTUsIDEyMDY0NCwgNDI0OTEsIAotICAgIDAsIDQyMDYxLCAxMjgwODgsIDQ1NzYsIDAsIDY4NDE3LCA0MzgwOSwgNDI3NywgMCwgNDAzOSwgNjQ0NzIsIDQyMzM4LCAKLSAgICAzNjgsIDQyMDU4LCAzOTYwLCAxMTA0MywgMTEzMzcsIDc4MjA5LCA5MTc4MjAsIDYzOTg5LCAzOTU4LCAxMjEzMiwgMTg0OSwgCi0gICAgMCwgOTkyMSwgNDI0NTEsIDQyNTMsIDQxMTQ3LCA0MjA2NCwgMTE5NTksIDQyNDA0LCA0MTE2MCwgMCwgMzYxOCwgNzgzMzgsIAotICAgIDAsIDQzMzAwLCA1MTU2LCA5MjYyOSwgMCwgOTI5LCA2ODI3LCA0MjAzNSwgNDI0MzcsIDE1NTUsIDAsIDg2OTEsIDY2NDM1LCAKLSAgICAwLCA0MTY2MiwgMCwgMCwgMCwgMCwgMCwgNDU3OCwgNjQ1MTMsIDQxNjY0LCAwLCA0MjU3OCwgMTI4Nzk0LCA0MTY2MSwgCi0gICAgNzg3MTUsIDQzMjY3LCA5MzU2LCAwLCAwLCAwLCAxMjg2LCAxMDE2NiwgMCwgMCwgNjQ3MDcsIDAsIDQyNDc2LCA3NzMwLCAwLCAKLSAgICAxMjg1MjIsIDQyNDgzLCAwLCAwLCA0MjMyNCwgNDIyOTEsIDEwMDIwLCA0MzM1OSwgMCwgNjY0MSwgNTI1LCA0MTYyNywgCi0gICAgOTE3OTIzLCA4NzYzLCAxMjgzMDQsIDQxNjI4LCA1MzMsIDExOTMxLCA2NTIyNSwgODMyMSwgNDI1MDQsIDQyNTgxLCAwLCAKLSAgICA2OTE1LCA0MjMxMCwgNDM3NywgODU1OSwgMCwgMTIwMjM0LCAwLCAxMzE5MywgNjQzNTAsIDExNjY2LCA4Njc5LCA0MTkyNCwgCi0gICAgMTU3NiwgNzczNSwgOTIzOTgsIDAsIDczODQwLCAwLCAxMTM3NCwgNzgwNDMsIDEwODg5LCA0MzQ2MSwgNzc1NywgNDI0NjIsIAotICAgIDEyMDIyNiwgMTAwMjksIDY2NDkzLCAyNzE4LCA0MTY4LCA3Mzg0MiwgMTMzMDgsIDEyMDExMiwgMCwgMTE3OSwgNDQ0MCwgMCwgCi0gICAgNzc5NDgsIDM2MywgMTEwMTUsIDc3OTQ3LCA3Nzk0NCwgNjQyOTYsIDEyNzA5MCwgNjY2OTIsIDEyMDgyNiwgMCwgNjY0OTIsIAotICAgIDY1OTMsIDY0NjI1LCA0MTk2MywgOTIxNzcsIDExOTMyOSwgMCwgMTAwMTMsIDY0NDM0LCA5MjUyMCwgMTI3MDk1LCA5NDkyLCAKLSAgICAxMTc4MiwgNjQzODIsIDEyODMzLCA3NzgzMCwgMCwgMTI5NywgNDE2MzAsIDYzMCwgMTI3MDk0LCAwLCAxMjA3NzQsIAotICAgIDkyNDY1LCAxMDQzLCA0MzY1MiwgNjYyMjMsIDEwMDkwLCAwLCAxMjg2NjQsIDMxMywgOTE3NTYzLCA0MTg4MSwgMCwgCi0gICAgNDIzMTEsIDc0NDUsIDAsIDU3NTAsIDEwNzU5LCA5NDE5LCA1NTIyMiwgOTQwNSwgMTEyNjgsIDQyOTE5LCA5Mzk4LCA4NTI2LCAKLSAgICA5Mzk5LCA5NDIyLCAwLCA2NjQ5NSwgMCwgMCwgMTI3MjM5LCA0MTcxOCwgMTA3MDcsIDE2MDMsIDAsIDExOTAwMywgMCwgCi0gICAgNjMxLCA3Nzk1MiwgNjk3MDMsIDEzMTYxLCA2NTI3MiwgMCwgMTA1NDYsIDc0MjEwLCA3ODEwMSwgMTE2MDAsIDc3OTYxLCAKLSAgICAyNzk3LCA3MzgyMSwgNDI0MjcsIDMwNiwgNzE0LCAzMDU4LCA0MjM4MSwgNzc5NjIsIDEyNzA4MCwgMTIzNTEsIDQyMzk1LCAKLSAgICAwLCAxMTYwNywgMCwgNDIyODIsIDc3OTcxLCA3Nzk2NywgOTE1NywgNzM3NjUsIDY2MzY0LCA0MjQzMywgNzc5NjQsIDc2MDMsIAotICAgIDEyODAzLCAxODAsIDQyMTQxLCAwLCAxMjA2MTIsIDY2NDk0LCAxMjY3NCwgODI0NCwgMzYyLCA5MjQzOSwgMCwgODAzNywgCi0gICAgNDM3NzcsIDExNTM1LCAwLCA3NDg0NSwgNTE4NSwgNzE2NSwgNTUyMSwgMTAzMzQsIDIwOTMsIDc3OTgzLCAxMDMwMiwgCi0gICAgMTI4MTEyLCAxMDEwNCwgMTAyNywgNTE4MSwgMCwgMCwgMTA1MjMsIDE0NDYsIDQyMzIwLCA0MTY0NiwgOTkxLCA1MTg5LCAKLSAgICA0MjQ3MiwgNDE2NDcsIDEyMDEwNSwgMTcyMiwgNTU4MSwgNzc5NzksIDM0MDUsIDAsIDE5NDY0NCwgNTUyMywgMCwgNDI2MjAsIAotICAgIDkyNDQ3LCAwLCA5NTQ5LCAwLCAxMDU0OSwgNTUyODIsIDk2NjEsIDQzNjgyLCAwLCA3NzkxMCwgMTIwMDI2LCA3ODcwOCwgMCwgCi0gICAgNzc5MTEsIDAsIDQxOTkxLCAwLCAwLCA3NjMwLCA5ODQ2LCA3Njg0LCAxMDM1MCwgMCwgMTE3NCwgNzc5ODEsIDQyNzMzLCAKLSAgICA3Nzk3OCwgNzc5ODAsIDY2NDg1LCA3Nzk3NywgNDIyNzcsIDc3OTc0LCA0MjQ1NiwgNjU2NjcsIDEyNzAzNywgMTIzMzAsIAotICAgIDEyODI3MiwgMCwgNDI0MTcsIDQyMzgzLCAwLCA0MTM0NCwgNjI5MywgMCwgNjYyNTIsIDc3OTg0LCA3NDQ0MywgMCwgCi0gICAgMTAyMDksIDgzMTMsIDQxOTUsIDc0NDM1LCAxMzE2LCA2NjY5MCwgMTIwMDMyLCA2MzMyLCA2NDg5NCwgMCwgNjU4NzEsIAotICAgIDc4MDYwLCAxNzM2LCAwLCAzOTAxLCAxMjIyOCwgMTIwMTUxLCA2NTIwMCwgMzM4MywgMTA0NDYsIDc4ODQxLCA2OTMsIAotICAgIDkxMzAsIDMxNCwgNjQxNDksIDQyNDIwLCAxMTk0OSwgMCwgMTIwMTUyLCAxMTAyNiwgMCwgNTMzMiwgNjk0MCwgNjQxNTQsIAotICAgIDEyNjM1LCAxMjcwMDcsIDQyNzA2LCAxNzUxLCAyNzMsIDgxNjUsIDEzMTY2LCAxMjA3NjMsIDc4ODQwLCAwLCAxMjgyNCwgMCwgCi0gICAgNDUyOCwgNTMyMCwgNjMwMSwgNDM2NjIsIDYxMzMsIDkzMzksIDk0NjMsIDQyMzQ2LCAxMDkyMiwgNjQ1NjAsIDM3NTcsIDAsIAotICAgIDAsIDAsIDY1ODY5LCA3Mzc2MCwgMjU2OSwgMCwgMjMyNiwgNjU3NDAsIDI1NjUsIDQyNDU5LCA3NTk2LCA3OTIxLCAwLCAKLSAgICA3NDA5NSwgMTI3OTgxLCA0MTg0OCwgMjU2NywgNjYwMDYsIDAsIDQwNDQsIDkyNjQ2LCAwLCAxMjIzMywgMCwgMTAyMywgCi0gICAgNDc0LCAwLCAxMTk4MTgsIDAsIDAsIDQyNDg3LCA2NTU1NiwgMCwgMCwgNDIyOTUsIDAsIDAsIDAsIDkyNTE4LCA5ODM1LCAKLSAgICA2NjQ5OSwgMCwgNTQxNywgMTIyNzUsIDEwODk1LCAwLCAyNzQsIDAsIDE4NTgsIDAsIDAsIDU1MjUxLCAxMDExOCwgMzEzMywgCi0gICAgMTI4MDA4LCA3Mzc5NSwgMCwgOTYxMCwgODA2OCwgODE5NywgMCwgNjk5LCAwLCA0MTY2NSwgNTg2OCwgMCwgOTI2OTUsIAotICAgIDQyMTgyLCA3NTgxLCAxOTk0MCwgNDM2NjgsIDQxNjY3LCAxMjgwNTcsIDAsIDE5MjMsIDY1NTgzLCA2NTgwMiwgMCwgCi0gICAgNjQ1OTcsIDQzNDQ0LCAxMTkxODQsIDkyMTk3LCAwLCA2NDY0LCA3MDM2LCAyOTk2LCAxOTM3LCAwLCAwLCA0MTgzNSwgCi0gICAgNDA0NywgNDE4NDIsIDAsIDY0MTA3LCAwLCAwLCAxMTAxNywgMCwgMCwgMjkzLCA3Nzk2NiwgOTIxNjksIDY0NzkxLCAKLSAgICA0MTgyNywgNDI0NjYsIDQzNDIyLCAxMDU3OSwgODU2MCwgMCwgNjU0MTMsIDc3OTYzLCA0ODAzLCAxMjk2NCwgMTczOSwgCi0gICAgMTk0MSwgMzkwMCwgMCwgMTcxMywgNzc5NjksIDAsIDczOTU3LCAxMTQwNywgNDI0NDEsIDQxOTcxLCA2Mjk3LCAxMjAwOTgsIAotICAgIDY0MTA1LCAxMjgwODAsIDQyNDgxLCAxMTcxNiwgNjY0NzMsIDcxNzksIDQyMjg5LCAwLCA2NDEwMywgOTY5LCAwLCA5MzUyLCAKLSAgICAwLCA2MTY1LCA2NDEwMCwgMCwgNjYzMiwgNzM4NjEsIDQyNDAyLCA3NDMyNywgNzgwNiwgMCwgODkxNCwgMCwgMCwgMzE4MywgCi0gICAgMTQzNSwgNjQ4NzYsIDI5NjksIDYwNDYsIDY0NDQxLCA2MjA4LCA2Nzg0OSwgNTc0NiwgNzM3NDksIDAsIDY0NDE2LCAKLSAgICA0MjQyMiwgMCwgMCwgNzA4MiwgNzM3NzUsIDMzOCwgNTA1OSwgMTk0NzE5LCAwLCA0MjMyOCwgMTA3NjcsIDAsIDgxMTUsIDAsIAotICAgIDc0NzU4LCAwLCA4MjI3LCAyMDczLCAxMjE4LCAwLCAwLCA2NTg0OCwgMCwgMCwgMCwgMCwgMTI2OTg3LCA0NDg2LCAwLCAwLCAKLSAgICAwLCAxMDkyNSwgMCwgMCwgMCwgMCwgNDIzMDksIDEwMjU3LCA2NTE5MSwgMTAyNzMsIDAsIDEwMzA1LCA0MjQ2MSwgMCwgCi0gICAgNDIzNDksIDg4MzIsIDc4MDUxLCA2NDEyNywgMTA2NDQsIDQyNjYyLCA3ODgyOCwgNDIyNzgsIDc0NDUxLCAxMjY5ODgsIAotICAgIDkxNzg1NywgNzc5NCwgMCwgNDI0MjksIDYzNzcsIDQyMzE2LCAxMTkwMjYsIDM2NjksIDM5NjgsIDQyNDY4LCAwLCA2OTY1OCwgCi0gICAgMCwgNjU0MDIsIDExOTU4MSwgMCwgMCwgNjQ5MzMsIDAsIDQxOTYwLCA2Njk5LCAwLCAwLCAxMjgzNTQsIDY4MjMsIDQyMzkxLCAKLSAgICAxNTg4LCA2NTQwMCwgODQwOSwgNzgyMjMsIDE5OTY3LCA2NTM5OCwgNzg3LCAwLCA5MTc5MzksIDEyNzc0NCwgNjExNSwgCi0gICAgMjA3OCwgNDE2NTQsIDQyNDgwLCAwLCA5MjY1MCwgNDE2NTUsIDY1NDAxLCA0Mzk3NSwgMCwgMCwgMCwgNjQ0LCA2NTUwMCwgCi0gICAgNDE2NTcsIDEwNzc4LCAzNjU5LCA5NTMzLCAxODQsIDE1NTMsIDEzMTA3LCA2NTQ4NCwgNjk2NDgsIDEwNTAyLCA3NDQ1NywgCi0gICAgMCwgMCwgNDE1NTQsIDAsIDgyMjAsIDkxNzk0MywgNDE1NTcsIDAsIDAsIDExMDcwLCAxMTkyMjEsIDUxNTcsIDQwMjAsIAotICAgIDczODU4LCA0MTU1NSwgOTUxNCwgNjQ4MTgsIDY1MTAzLCA2NDY0MSwgNjQzMDMsIDc4MTMxLCA3NTIwLCAwLCA3NDM3NywgCi0gICAgMTEwMjksIDY2NjUxLCAwLCAwLCAxMTg5MzAsIDY0NTI3LCAwLCA3ODc3LCA3MzgwMywgMCwgMTI3MzQ4LCAxMjAwOTYsIAotICAgIDc0NjAyLCA5OTU1LCAxMTk1NTcsIDQwNTUsIDQyODE3LCAwLCA2NTIxMiwgMTE3MTUsIDEyMTkwLCAxMjMxOSwgNzg2MzAsIAotICAgIDAsIDc4NjMxLCA5NTAyLCA2NTQyNywgMCwgNjU0MjQsIDEyNjA3LCAwLCA5NzM0LCA2NTQyNSwgMCwgMCwgMTI3MzU3LCAKLSAgICA3ODgzNSwgOTI0MTAsIDEwMTEyLCAxMDgyNywgMCwgOTg2NiwgNzQ1MjcsIDY2Njc1LCAwLCA4NjI1LCA2NDM0NiwgMTEyOTAsIAotICAgIDEwNDc3LCAwLCA4NjM2LCAwLCA4MzE1LCA2NTQ0NCwgMCwgMCwgNzQ1OTUsIDYxNTIsIDAsIDAsIDY2MjksIDEyODI1MSwgCisgICAgOTgzNjA2LCAxMDYyMywgNDA4LCAxMTkwNTgsIDEyNzUwNywgMTMyOTgsIDAsIDc0MjYsIDQxNjQxLCAxMjcxNywgMCwgCisgICAgNzYwNywgMTA2MzksIDQzMzk2LCAwLCAwLCA0MTY0MywgNzQxMzQsIDk4MzA1NCwgODcxMywgNDE2NDAsIDEwMjIxLCAKKyAgICA0MTY0NSwgNjY3MTIsIDY2NDUsIDY0NiwgNjY3MjYsIDY2NzExLCA0MjEyOSwgOTM5OTQsIDc3OTAxLCAzNDcyLCA4Njk3LCAKKyAgICAwLCAwLCA5ODM4MDYsIDAsIDAsIDAsIDU4MDksIDE5NTAsIDExOTM1NiwgOTI0MzIsIDc0NTcyLCAwLCA0MjEzNiwgMCwgMCwgCisgICAgMCwgMCwgMzI0NywgMTE5ODU0LCA2NTAxNywgOTgzOTQ0LCA2ODQyOCwgNjY2NjgsIDAsIDAsIDEwOTgzLCAwLCAwLCAwLCAKKyAgICA0MTU2NywgMCwgMCwgMCwgMTk0NjI0LCAxMTk4NTMsIDAsIDAsIDgyODUsIDAsIDQ1MDksIDAsIDY2NDcxLCAxMjIxNiwgMCwgCisgICAgNDA5ODgsIDkyNTkyLCA3NDgwOSwgNDE3MjcsIDAsIDQyODQ4LCAyMzk2LCA5MTc3NjYsIDAsIDc0MDE4LCA5MTc1MzgsIAorICAgIDY0OTQwLCA3MDI3LCAzODg2LCAwLCA0MjQ1NywgMTE5MDA4LCAwLCA5OTYsIDY4MTIzLCA5NDA1OCwgNDI0OSwgMCwgCisgICAgOTE3NTk0LCAxMTcwNywgODIyMiwgMCwgNzkzOSwgOTI0NTQsIDkyNDYwLCAxMjc4MDEsIDkxNzU5MiwgMTI4MzU5LCA4NTM0LCAKKyAgICAxMjcxNTQsIDQwOTgzLCAwLCA5ODMyMzQsIDAsIDcyMDEsIDEyNTYxLCAwLCA0MjM3MSwgMTI1NTgsIDE1NDAsIDkxNzU0OSwgCisgICAgMTAwNTIsIDQwOTgyLCAwLCAwLCAxNDg4LCAwLCAwLCAwLCA5MTc1NTksIDAsIDAsIDE1NjMsIDEyODAzNCwgOTYxOSwgCisgICAgOTgzOTMxLCAwLCAwLCAxMjc4NzIsIDcxMzYzLCA1ODAzLCA3Nzk3LCA2MDcwLCAxMDAwNiwgMCwgMjkyMiwgNjA4MiwgMCwgCisgICAgNjUwMDksIDk4MzkzMywgMTI1NjcsIDEyODcwMywgMCwgNDE0MTIsIDAsIDAsIDM2MDcsIDkyMDAsIDEwMDQ2LCA5NjEyLCAKKyAgICA0MjE1MywgODIxOCwgOTQ4NSwgMCwgMjAzMiwgNzgzNTQsIDAsIDAsIDAsIDAsIDAsIDQzMDg1LCA2MDU3LCA1MDgsIAorICAgIDkzOTY4LCAxMjgwMTUsIDY3OTY4LCAwLCA5MjQwNSwgMCwgMCwgNjM4LCA2MDgzLCAxMTkwNzIsIDAsIDAsIDIzMDUsIAorICAgIDc4MzQ4LCA2ODA5NiwgMCwgNjA1NiwgNjY1OSwgNjc5NjksIDAsIDYwODUsIDAsIDAsIDM5MTUsIDQxNjM0LCAwLCA0MTYzOSwgCisgICAgNjM5MTIsIDExOTQxLCAwLCA0MDI4LCAxNzg3LCA0MjE4MCwgNDMwOTYsIDQzNzUzLCAzMjQ5LCAxNzY4LCA5Mzk4MiwgCisgICAgMTIzMjgsIDUwMSwgOTM5ODUsIDEwNjAxLCAwLCA1ODMsIDAsIDQxOTc3LCAwLCA2NjAwNCwgMTE5MzUwLCA2NTA1LCAKKyAgICA3NDAxMCwgMCwgMTMwNjQsIDU1MjY3LCAxMjA4MTAsIDY1MDAsIDU1MjYsIDY1MDQ5LCAwLCA3Mzc2NCwgMCwgOTIzNzYsIAorICAgIDEyNzQ1LCA5Njc4LCAwLCAxMjA1ODcsIDk4NjksIDEyODgxNSwgMTc3MSwgMCwgODkzNiwgMCwgMCwgNDIwOCwgNzgzNDEsIAorICAgIDc4NTY3LCA3ODM0MiwgMCwgOTgzNDQ4LCA3NDEwMSwgMCwgMTE3NjIsIDAsIDkyNDIyLCA3Nzk5NywgNjgwMTAsIDY2NDc1LCAKKyAgICAwLCA1MDI3LCA3ODE3MiwgMTI4ODc4LCAwLCA1MDY5LCA3Mzg2MiwgNTAyOCwgOTg5NywgMCwgNzM3MzksIDUwMjYsIAorICAgIDk4MzI0NywgNjg2MzksIDYzMzEsIDEwMDc5LCA4OTMxLCAwLCAxNDE1LCA4ODY2LCA0MTkwMSwgNzQ3OTAsIDc4MTM4LCAKKyAgICAxMTkzNjEsIDk4MzU2NCwgNDMxMDYsIDUwMjksIDY1MzA5LCAxNTgwLCAzNTk4LCA2ODQyNCwgNDEwNzAsIDc3OTAzLCAwLCAKKyAgICAzNDQwLCA3ODIxNSwgMTU2MiwgMTI4NjU2LCAxMjcxNzUsIDExOTM1OCwgMTcxNiwgOTgzNjcwLCAxMDYwMCwgOTE3ODY3LCAKKyAgICA2MjAsIDQxMDAxLCA2MDI4LCAwLCA0Mjg5MiwgMCwgNzQ4MjIsIDUwMjQsIDEyMDgyOSwgNDEwMDMsIDAsIDUwMjUsIAorICAgIDY5ODkyLCA5ODMyMDcsIDAsIDExODg4NSwgMCwgNjU1NTcsIDAsIDc0NTQxLCA5ODM1ODcsIDExNTk5LCAxMjgyMDksIAorICAgIDExNjAyLCA2MjQzLCAxMTU3NCwgMTE1ODEsIDExNTk3LCAxMTU5OCwgNjI1MywgNjEwNSwgMTE1ODQsIDc0MTk1LCAxMTU2OSwgCisgICAgNjUyNzUsIDg5MDYsIDEyNzA5NiwgNTc1NSwgMjYzNiwgMCwgMTA4MTUsIDExNjE5LCAyMzAxLCA0MTU0MCwgNzgxNSwgCisgICAgMTE2MTYsIDY5NzksIDEyMDgwLCA3NzIxLCAxMTYwNCwgNzg2OSwgMTU5MiwgMCwgNDIxNTIsIDc4NDk4LCA0MTA0OCwgCisgICAgOTE3NzYzLCA4MjksIDAsIDkyNDA2LCAxOTk1MCwgMCwgMTI2NDgyLCA2NjE2LCAwLCAxMTg4NzUsIDEwOTUzLCAzOTEsIDAsIAorICAgIDY5Nzg1LCA0ODIsIDQyMjk2LCAxMTU4OCwgMCwgNDM2MDYsIDAsIDY4Mzk3LCA2NjM3MCwgNzQ1MDYsIDQyMzM1LCAKKyAgICA5ODMxODgsIDAsIDAsIDc1MzgsIDUzMTUsIDEyMDY0NCwgNDI0OTEsIDAsIDQyMDYxLCAxMjgwODgsIDQ1NzYsIDAsIAorICAgIDY4NDE3LCA0MzgwOSwgNDI3NywgMCwgNDAzOSwgNjQ0NzIsIDQyMzM4LCAzNjgsIDQyMDU4LCAzOTYwLCAxMTA0MywgCisgICAgMTEzMzcsIDc4MjA5LCA5MTc4MjAsIDYzOTg5LCAzOTU4LCAxMjEzMiwgMTg0OSwgMCwgOTkyMSwgNDI0NTEsIDQyNTMsIAorICAgIDQxMTQ3LCA0MjA2NCwgMTE5NTksIDQyNDA0LCA0MTE2MCwgMCwgMzYxOCwgNzgzMzgsIDAsIDQzMzAwLCA1MTU2LCA5MjYyOSwgCisgICAgMCwgOTI5LCA2ODI3LCA0MjAzNSwgNDI0MzcsIDE1NTUsIDAsIDg2OTEsIDY2NDM1LCAyMjE1LCA0MTY2MiwgOTQwMTAsIDAsIAorICAgIDAsIDAsIDkzOTUyLCA0NTc4LCA2NDUxMywgNDE2NjQsIDk4MzcyNSwgNDI1NzgsIDEyODc5NCwgNDE2NjEsIDc4NzE1LCAKKyAgICA0MzI2NywgOTM1NiwgMCwgMCwgMCwgMTI4NiwgMTAxNjYsIDAsIDAsIDY0NzA3LCA5ODMxMjcsIDQyNDc2LCA3NzMwLCAKKyAgICA5ODM4NTAsIDEyODUyMiwgNDI0ODMsIDAsIDAsIDQyMzI0LCA0MjI5MSwgMTAwMjAsIDQzMzU5LCAwLCA2NjQxLCA1MjUsIAorICAgIDQxNjI3LCA5MTc5MjMsIDg3NjMsIDEyODMwNCwgNDE2MjgsIDUzMywgMTE5MzEsIDY1MjI1LCA4MzIxLCA0MjUwNCwgCisgICAgNDI1ODEsIDAsIDY5MTUsIDQyMzEwLCA0Mzc3LCA4NTU5LCAwLCA3NDM2MCwgMCwgMTMxOTMsIDY0MzUwLCAxMTY2NiwgCisgICAgODY3OSwgNDE5MjQsIDE1NzYsIDc3MzUsIDkyMzk4LCAwLCA3Mzg0MCwgOTgzMDkyLCAxMTM3NCwgNzgwNDMsIDEwODg5LCAKKyAgICA0MzQ2MSwgNzc1NywgNDI0NjIsIDEyMDIyNiwgMTAwMjksIDY2NDkzLCAyNzE4LCA0MTY4LCA3Mzg0MiwgMTMzMDgsIAorICAgIDEyMDExMiwgMCwgMTE3OSwgNDQ0MCwgMCwgNzc5NDgsIDM2MywgMTEwMTUsIDc3OTQ3LCA3Nzk0NCwgNjQyOTYsIDEyNzA5MCwgCisgICAgNjY2OTIsIDEyMDgyNiwgMCwgNjY0OTIsIDY1OTMsIDY0NjI1LCA0MTk2MywgOTIxNzcsIDExOTMyOSwgMCwgMTAwMTMsIAorICAgIDY0NDM0LCA5MjUyMCwgMTI3MDk1LCA5NDkyLCAxMTc4MiwgNjQzODIsIDEyODMzLCA3NzgzMCwgMCwgMTI5NywgNDE2MzAsIAorICAgIDYzMCwgMTI3MDk0LCAwLCAxMjA3NzQsIDkyNDY1LCAxMDQzLCA0MzY1MiwgNjYyMjMsIDEwMDkwLCAwLCAxMjg2NjQsIDMxMywgCisgICAgOTE3NTYzLCA0MTg4MSwgMCwgNDIzMTEsIDc0NDUsIDAsIDU3NTAsIDEwNzU5LCA5NDE5LCA1NTIyMiwgOTQwNSwgMTEyNjgsIAorICAgIDQyOTE5LCA5Mzk4LCA4NTI2LCA5Mzk5LCA5NDIyLCAwLCA2NjQ5NSwgMCwgMCwgMTI3MjM5LCA0MTcxOCwgMTA3MDcsIAorICAgIDE2MDMsIDAsIDExOTAwMywgMCwgNjMxLCA3Nzk1MiwgNjk3MDMsIDEzMTYxLCA2NTI3MiwgMCwgMTA1NDYsIDc0MjEwLCAKKyAgICA3ODEwMSwgMTE2MDAsIDc3OTYxLCAyNzk3LCA3MzgyMSwgNDI0MjcsIDMwNiwgNzE0LCAzMDU4LCA0MjM4MSwgNzc5NjIsIAorICAgIDEyNzA4MCwgMTIzNTEsIDQyMzk1LCAwLCAxMTYwNywgMCwgNDIyODIsIDc3OTcxLCA3Nzk2NywgOTE1NywgNzM3NjUsIAorICAgIDY2MzY0LCA0MjQzMywgNzc5NjQsIDc2MDMsIDEyODAzLCAxODAsIDQyMTQxLCAwLCAxMjA2MTIsIDY2NDk0LCAxMjY3NCwgCisgICAgODI0NCwgMzYyLCA5MjQzOSwgMCwgODAzNywgNDM3NzcsIDExNTM1LCAwLCA3NDg0NSwgNTE4NSwgNzE2NSwgNTUyMSwgCisgICAgMTAzMzQsIDIwOTMsIDcxMzI5LCAxMDMwMiwgMTI4MTEyLCAxMDEwNCwgMTAyNywgNTE4MSwgMCwgMCwgMTA1MjMsIDE0NDYsIAorICAgIDQyMzIwLCA0MTY0NiwgOTkxLCA1MTg5LCA0MjQ3MiwgNDE2NDcsIDEyMDEwNSwgMTcyMiwgNTU4MSwgNDI4OTgsIDM0MDUsIAorICAgIDAsIDE5NDY0NCwgNTUyMywgMCwgNDI2MjAsIDkyNDQ3LCA5ODM4MTAsIDk1NDksIDAsIDEwNTQ5LCA1NTI4MiwgOTY2MSwgCisgICAgNDM2ODIsIDAsIDc3OTEwLCAxMjAwMjYsIDc4NzA4LCAwLCA3NzkxMSwgMCwgNDE5OTEsIDk4Mzg4NCwgMCwgNzYzMCwgCisgICAgOTg0NiwgNzY4NCwgMTAzNTAsIDAsIDExNzQsIDc3OTgxLCA0MjczMywgNzc5NzgsIDc3OTgwLCA2NjQ4NSwgNzc5NzcsIAorICAgIDQyMjc3LCA3Nzk3NCwgNDI0NTYsIDY1NjY3LCAxMjcwMzcsIDEyMzMwLCAxMjgyNzIsIDAsIDQyNDE3LCA0MjM4MywgCisgICAgNjY2MzAsIDQxMzQ0LCA2MjkzLCAwLCA2NjI1MiwgNzc5ODQsIDc0NDQzLCAwLCAxMDIwOSwgODMxMywgNDE5NSwgNzQ0MzUsIAorICAgIDEzMTYsIDY2NjkwLCAxMjAwMzIsIDYzMzIsIDY0ODk0LCAwLCA2NTg3MSwgNzgwNjAsIDE3MzYsIDk4MzY3NSwgMzkwMSwgCisgICAgMTIyMjgsIDEyMDE1MSwgNjUyMDAsIDMzODMsIDEwNDQ2LCA3ODg0MSwgNjkzLCA5MTMwLCAzMTQsIDY0MTQ5LCA0MjQyMCwgCisgICAgMTE5NDksIDk4MzY2MCwgMTIwMTUyLCAxMTAyNiwgMTI4Nzg4LCA1MzMyLCA2OTQwLCA2NDE1NCwgMTI2MzUsIDEyNzAwNywgCisgICAgNDI3MDYsIDE3NTEsIDI3MywgODE2NSwgMTMxNjYsIDEyMDc2MywgNzg4NDAsIDcxMzY4LCAxMjgyNCwgMCwgNDUyOCwgCisgICAgNTMyMCwgNjMwMSwgNDM2NjIsIDYxMzMsIDkzMzksIDk0NjMsIDQyMzQ2LCAxMDkyMiwgNjQ1NjAsIDM3NTcsIDAsIDAsIDAsIAorICAgIDY1ODY5LCA3Mzc2MCwgMjU2OSwgMCwgMjMyNiwgNjU3NDAsIDI1NjUsIDQyNDU5LCA3NTk2LCA3OTIxLCA5ODM4NTksIAorICAgIDc0MDk1LCAxMjc5ODEsIDQxODQ4LCAyNTY3LCA2NjAwNiwgMCwgNDA0NCwgOTI2NDYsIDAsIDEyMjMzLCA5ODM4NjIsIAorICAgIDEwMjMsIDQ3NCwgMCwgMTE5ODE4LCAwLCAwLCA0MjQ4NywgNjU1NTYsIDAsIDEyNzg2NiwgNDIyOTUsIDAsIDAsIDcxMzIyLCAKKyAgICA5MjUxOCwgOTgzNSwgNjY0OTksIDAsIDU0MTcsIDEyMjc1LCAxMDg5NSwgMCwgMjc0LCAwLCAxODU4LCAwLCAwLCA1NTI1MSwgCisgICAgMTAxMTgsIDMxMzMsIDEyODAwOCwgNzM3OTUsIDAsIDk2MTAsIDgwNjgsIDgxOTcsIDAsIDY5OSwgMCwgNDE2NjUsIDU4NjgsIAorICAgIDAsIDkyNjk1LCA0MjE4MiwgNzU4MSwgMTk5NDAsIDQzNjY4LCA0MTY2NywgMTI4MDU3LCAwLCAxOTIzLCA2NTU4MywgCisgICAgNjU4MDIsIDkzOTcwLCA2NDU5NywgNDM0NDQsIDExOTE4NCwgOTIxOTcsIDAsIDY0NjQsIDcwMzYsIDI5OTYsIDE5MzcsIAorICAgIDk4Mzc0MiwgMCwgNDE4MzUsIDQwNDcsIDQxODQyLCAwLCA2NDEwNywgMCwgMCwgMTEwMTcsIDEyMDYwMSwgMCwgMjkzLCAKKyAgICA3Nzk2NiwgOTIxNjksIDY0NzkxLCA0MTgyNywgNDI0NjYsIDQzNDIyLCAxMDU3OSwgODU2MCwgNzEzNTAsIDY1NDEzLCAKKyAgICA3Nzk2MywgNDgwMywgMTI5NjQsIDE3MzksIDE5NDEsIDM5MDAsIDAsIDE3MTMsIDc3OTY5LCAwLCA3Mzk1NywgMTE0MDcsIAorICAgIDQyNDQxLCA0MTk3MSwgNjI5NywgMTIwMDk4LCA2NDEwNSwgMTI4MDgwLCA0MjQ4MSwgMTE3MTYsIDY2NDczLCA3MTc5LCAKKyAgICA0MjI4OSwgMCwgNjQxMDMsIDk2OSwgMCwgOTM1MiwgMCwgNjE2NSwgNjQxMDAsIDAsIDY2MzIsIDczODYxLCA0MjQwMiwgCisgICAgNzQzMjcsIDc4MDYsIDAsIDg5MTQsIDAsIDAsIDMxODMsIDE0MzUsIDY0ODc2LCAyOTY5LCA2MDQ2LCA2NDQ0MSwgNjIwOCwgCisgICAgNjc4NDksIDU3NDYsIDczNzQ5LCAwLCA2NDQxNiwgNDI0MjIsIDAsIDk4MzA0NiwgNzA4MiwgNzM3NzUsIDMzOCwgNTA1OSwgCisgICAgMTk0NzE5LCAwLCA0MjMyOCwgMTA3NjcsIDAsIDgxMTUsIDAsIDc0NzU4LCAwLCA4MjI3LCAyMDczLCAxMjE4LCA5MTc3OTAsIAorICAgIDAsIDY1ODQ4LCAwLCAwLCA2OTg2MywgMCwgMTI2OTg3LCA0NDg2LCAwLCAwLCAwLCAxMDkyNSwgMCwgMCwgMCwgOTgzNTg2LCAKKyAgICA0MjMwOSwgMTAyNTcsIDY1MTkxLCAxMDI3MywgMCwgMTAzMDUsIDQyNDYxLCAwLCA0MjM0OSwgODgzMiwgNzgwNTEsIAorICAgIDY0MTI3LCAxMDY0NCwgNDI2NjIsIDc4ODI4LCA0MjI3OCwgNzQ0NTEsIDEyNjk4OCwgNjk4NzQsIDc3OTQsIDAsIDQyNDI5LCAKKyAgICA2Mzc3LCA0MjMxNiwgMTE5MDI2LCAzNjY5LCAzOTY4LCA0MjQ2OCwgNzEzMTksIDY5NjU4LCAwLCA2NTQwMiwgMTE5NTgxLCAKKyAgICAwLCAwLCA2NDkzMywgMCwgNDE5NjAsIDY2OTksIDAsIDAsIDEyODM1NCwgNjgyMywgNDIzOTEsIDE1ODgsIDY1NDAwLCAKKyAgICA4NDA5LCA3ODIyMywgMTk5NjcsIDY1Mzk4LCA3ODcsIDcxMzE1LCA5MTc5MzksIDEyNzc0NCwgNjExNSwgMjA3OCwgNDE2NTQsIAorICAgIDQyNDgwLCAwLCA5MjY1MCwgNDE2NTUsIDY1NDAxLCA0Mzk3NSwgMCwgMCwgMCwgNjQ0LCA2NTUwMCwgNDE2NTcsIDEwNzc4LCAKKyAgICAzNjU5LCA5NTMzLCAxODQsIDE1NTMsIDEzMTA3LCA2NTQ4NCwgNjk2NDgsIDEwNTAyLCA3NDQ1NywgMCwgMCwgNDE1NTQsIDAsIAorICAgIDgyMjAsIDkxNzk0MywgNDE1NTcsIDAsIDAsIDExMDcwLCAxMTkyMjEsIDUxNTcsIDQwMjAsIDczODU4LCA0MTU1NSwgOTUxNCwgCisgICAgNjQ4MTgsIDY1MTAzLCA2NDY0MSwgNjQzMDMsIDc4MTMxLCA3NTIwLCAwLCA3NDM3NywgMTEwMjksIDY2NjUxLCA5ODMwNjgsIAorICAgIDAsIDExODkzMCwgNjQ1MjcsIDAsIDc4NzcsIDczODAzLCA5ODM3ODksIDEyNzM0OCwgMTIwMDk2LCA3NDYwMiwgOTk1NSwgCisgICAgMTE5NTU3LCA0MDU1LCA0MjgxNywgMCwgNjUyMTIsIDExNzE1LCAxMjE5MCwgMTIzMTksIDc4NjMwLCAwLCA3ODYzMSwgCisgICAgOTUwMiwgNjU0MjcsIDAsIDY1NDI0LCAxMjYwNywgMCwgOTczNCwgNjU0MjUsIDAsIDAsIDEyNzM1NywgNzg4MzUsIDkyNDEwLCAKKyAgICAxMDExMiwgMTA4MjcsIDAsIDk4NjYsIDc0NTI3LCA2NjY3NSwgMCwgODYyNSwgNjQzNDYsIDExMjkwLCAxMDQ3NywgMCwgCisgICAgODYzNiwgOTgzOTE4LCA4MzE1LCA2NTQ0NCwgOTgzNzg0LCAwLCA3NDU5NSwgNjE1MiwgMCwgMCwgNjYyOSwgMTI3MTA4LCAKICAgICAxMjAxNzEsIDAsIDc0NTg5LCA0Mzk5MywgMCwgNjk3OTAsIDY0NDM1LCAwLCA0MzY5MCwgMTEwNDYsIDExNDkwLCA0MjczMCwgCiAgICAgNDQ4NSwgMTI3MTA3LCAwLCA2NDkyNiwgMCwgMCwgMCwgNTg2OSwgMTI0MzcsIDQyNzI4LCAwLCA3MDQwLCAzNTg4LCAwLCAKICAgICAxMjgyNSwgMCwgMCwgMTI3MjUsIDAsIDAsIDc4NjQyLCAyMjMsIDAsIDY5Njc1LCAxMjAxNjYsIDQyNDQ0LCAwLCA2NDQ5OSwgCiAgICAgNjUyNDUsIDAsIDExNzEsIDAsIDY5NzE3LCAwLCAxODA1LCA4NzcyLCA0MzgyMCwgMCwgOTkzMCwgNjUyNDcsIDc4NjE5LCAKICAgICAxMjAxMTEsIDIzMzgsIDAsIDExODg1MywgMCwgNDI2NzYsIDAsIDY0ODAwLCA2NTIzNiwgNjc2NDQsIDY4MTI2LCAxMjEzLCAKLSAgICAwLCA2NDA3NSwgNzk3LCA2NDA3NCwgODczNCwgNDIxMiwgMCwgNjQzODcsIDQxMTUsIDAsIDUwMDUsIDY0MDcwLCA2NDA3MywgCi0gICAgMTA2NzksIDAsIDc3OTU0LCA5NDAyLCA2NDI3NiwgNDI2LCAwLCAwLCA4MjUxLCAxMDEzNiwgNjU0MzYsIDAsIDIxMjAsIAotICAgIDQzMzAyLCAxMjI0LCAwLCA2NTU3NiwgMTIwMTU4LCAxMDcwMSwgMTc2NCwgMzEwMSwgMTI3ODE1LCAxMjg1OCwgMTIwMTU5LCAKLSAgICAwLCAxMTM3MywgNjM3OCwgMTI3ODU5LCAxMjAxMDMsIDg2NjMsIDkzMTIsIDQxNjQ0LCA0NTM5LCAyMTI5LCAwLCA5MjIyLCAKLSAgICAwLCAwLCA0MjU5LCA5MDkyLCA3NDU2NywgNDE5NjEsIDAsIDEyNzI0LCA2NjM1NywgNDIzMzEsIDY0OTM1LCAwLCAwLCAKLSAgICAxMjkzLCA3OTQ3LCAyMTMyLCAwLCA3NDU5MywgMTIwMzA4LCAyNDU0LCA0MjcxNywgMzYxMywgMTI4ODM3LCAwLCAwLCAKLSAgICA2NTg4OCwgODgxNiwgMTA5NzgsIDEwODQwLCAwLCAxMDY2OCwgMCwgNDMwODcsIDEyNTk1LCAxMjAzMDQsIDAsIDg4MjIsIDAsIAotICAgIDExNTcsIDY0OTAzLCA4NjM4LCAwLCAwLCAwLCAwLCAxMjAzMTksIDgyMzUsIDEyMDMxNiwgNDQwNSwgMTAwODYsIDEyMDI0NywgCi0gICAgMCwgNjkyMTYsIDAsIDY1NDMwLCA3NDAxMywgNjA3OSwgNjgxNywgMTA3NjQsIDEyNzkxMCwgNjQyOTEsIDEyODA1MSwgOTk4LCAKLSAgICAxMjAzMTIsIDExMDYyLCAxMzE3LCA2NDMyNywgMTU1OCwgMCwgMTk5MSwgNzg4MiwgNDIyNTQsIDAsIDQxNzAwLCA1MzAsIDAsIAotICAgIDEwNDI4LCAxMTkzMzUsIDEyMDAyLCAxMTkzMzYsIDU3NDIsIDQzMDc2LCA0NjkyLCA2NDYzMCwgNDE4MjMsIDQwMDcsIAotICAgIDUwMDQsIDExOTMzNCwgNzg5NiwgNzUxLCA2NTk1LCA2NTk2LCAwLCA2NjM3MywgMCwgMCwgNjQ5MDgsIDkyNjkxLCA2MzExLCAKLSAgICAwLCAxMjAwNCwgMTE5MTkyLCAxMjA0OSwgNDMxMDgsIDEyMDMyNiwgMCwgNDE3MDUsIDkyMTg4LCA2NTk4LCAwLCA2NTk5LCAKLSAgICAxMjAzMzQsIDAsIDQyMTQ4LCAxMTg4MjUsIDY2MDI3LCAwLCA2NTk3LCA5NDEyLCA4MzQwLCAxMTgyNCwgNjQ3NDUsIDAsIDAsIAotICAgIDAsIDE5ODgsIDU0MDcsIDY3ODY1LCAyNDMwLCA0MTY3OCwgMCwgMTIwMjQzLCAyMzM2LCAwLCAwLCA3ODg3MSwgMTIwNDQyLCAKLSAgICAwLCAxOTIxLCAxMDk0NywgMTk5MjcsIDAsIDY1NDA2LCAwLCAxOTkxMywgNDI4NCwgMTMyMTcsIDAsIDQzNzg5LCAxMjg0MSwgCi0gICAgOTIyOSwgMTA5NTYsIDQyMjg1LCA0MTY3NCwgMTk5NjQsIDQxNjc5LCA2NTA4NCwgMzUyMSwgMCwgNTc3NCwgODMyNSwgMCwgCi0gICAgNjU0MDMsIDAsIDE4NTQsIDEwNzk0LCAwLCA2NzY2MCwgMCwgMCwgNzgzNTksIDUyODAsIDAsIDQzNDQsIDEyOTA1LCAKLSAgICA2NTQzMywgNjA3NiwgNjQ3OTMsIDQxNjEwLCA3NjgsIDEyMDc0LCA0NDIsIDAsIDY4MTYyLCA2NDA4MSwgMTI5MzQsIAotICAgIDQxNjgyLCA2NTQzMiwgNDE2OTMsIDAsIDYwNzEsIDY1NDM0LCAxMjc0NjcsIDQ4MDQsIDQwNTMsIDAsIDEyNzQ2OSwgCi0gICAgMTk0NjUzLCA0MTY5NiwgNDY3LCA2OTgyMywgMTI3NDYzLCA2OTc5NywgMCwgMCwgODQyMSwgMTI3NDcyLCA2OTY4MiwgCi0gICAgNDM3MDUsIDUwMiwgMCwgNjU0MzEsIDExOTA1NiwgMCwgMTIwNDMsIDEzMDMsIDMxNiwgOTI0NjIsIDIwMjksIDIxMzYsIAotICAgIDExOTI0NiwgMTE1MzMsIDY0MzY1LCA0MzQ4MCwgOTI2MzksIDQ4NjAsIDE5NDY0NSwgMTI3ODc3LCA0MjQ4OCwgMCwgOTU4MywgCi0gICAgMTI4ODQ5LCA1NTQ2LCA4MDE5LCA3Mzg1NiwgMCwgMCwgMCwgNTU0NCwgMjM1NSwgMTIxNTAsIDY1NzI1LCA1NTQzLCAKLSAgICA3Nzk4OSwgNjM3NTEsIDEyMTM3LCA1NTQ4LCA3Nzk4NSwgMCwgNjU3MjcsIDY4Mzg4LCA2NTcyNiwgNjA3NywgMTI4MzUyLCAKLSAgICA2NTQ1MiwgMCwgMTEzMDEsIDc4MDEzLCA3ODAwOCwgNzgwMTAsIDk4NzQsIDc4MDA3LCAwLCAxMzE5LCAzMDUwLCA2NTQxMCwgCi0gICAgMCwgMCwgNzgwMTYsIDc4MDE3LCA0MjgzMCwgNDM5OTYsIDY2NzE2LCAxMjgxMzcsIDQ2OTEsIDkyMjQyLCA5MzQ1LCA2MjEsIAotICAgIDkyNzA5LCAxMjgyMjIsIDAsIDY1NDExLCAwLCA0MTE4MiwgNzM4ODEsIDY1NDA4LCA3Mzg5OSwgNzgwMjQsIDk0NzQsIAotICAgIDEwNTQ1LCAxMTkxMTgsIDEwODg3LCAzNzg2LCA2NTQwOSwgODg5NCwgNDMxNzksIDExOTYxMSwgNzkyMywgMzcxNiwgCi0gICAgOTIzNjMsIDk5OTYsIDg1MDgsIDAsIDcwMTIsIDgxOTUsIDEyNzgzNCwgOTU2NiwgMCwgMzcyMiwgMCwgNDE3MDcsIDg0OTMsIAotICAgIDU0NSwgOTU3NSwgNDEzNzksIDEwMDUwLCAxMjcxOCwgMCwgODg1OSwgNjgyMCwgNzQzNDUsIDY1MTEwLCAxMjA3NDAsIDAsIAotICAgIDAsIDkxMTksIDI3ODcsIDc5MjAsIDExODgyMywgNDAyMSwgMjAxMiwgNzk4NSwgMCwgMTE5NjYzLCAwLCAwLCA3ODAyMSwgCi0gICAgNzgwMjIsIDQxMCwgNzgwMjAsIDE4MDIsIDc4MDE4LCA3NDEwNywgMCwgNDE2NTksIDQxNjcxLCAxODI3LCAwLCA2NDM5NiwgCi0gICAgMTAxMjYsIDEyMTE2LCA0MTY3MywgMTIwMzcwLCAxMTQyMiwgNzgxNDEsIDEyMDM3MywgMzg2MCwgMTIwMzY3LCA2ODQxMiwgCi0gICAgNDEzNDUsIDEyMDM2MiwgMTIwMzYzLCAxMTc0OCwgNDIxNTgsIDc5NDEsIDExMDc2LCA4NzQ5LCAxMjAzNjEsIDIxMDQsIAotICAgIDY0ODU4LCAzNjEsIDEyMDM1NywgODQ1LCAwLCA0MTU2MCwgMTE5NzAsIDQ1NjIsIDkxNzkyMCwgMjkyNiwgOTE3OTE5LCAKLSAgICA0NTY5LCA3NDEzMCwgMCwgNDM0ODcsIDE5NDYzMCwgNjExLCA3NDEyOSwgNjQ4NzEsIDExODg5MSwgNjU2MjksIDAsIAotICAgIDE5NDg1OCwgMCwgMCwgMTI3NTQ1LCAxMjA1NDMsIDAsIDAsIDYyOTEsIDAsIDc4NjM5LCA0MTY2OSwgNzA5NCwgOTE3OTIxLCAKLSAgICAwLCAwLCA3NDA1NCwgMTI3NzU0LCAxOTUwMjksIDAsIDgzOSwgMCwgNzY5NSwgODc2OSwgNjUyNDYsIDQ4MjksIDAsIDQ4NTksIAotICAgIDY0NDY3LCAwLCAwLCAxMTg5OTgsIDcyMDYsIDAsIDY2NDcsIDQzOTg2LCAwLCA2OTc2NiwgMCwgNjQ3NjQsIDQyMTAsIDAsIAotICAgIDEyNzkzNiwgODA0LCAwLCAwLCAxMjI5OCwgMCwgNjY2NTMsIDAsIDY0OTI0LCAxMDA5MSwgNzM5MzEsIDk0NjgsIDc0MjQ1LCAKLSAgICAwLCAwLCA3NDI0NiwgOTI1MDMsIDEyODM5LCA2NDY2OSwgOTIyMDIsIDAsIDEyNzksIDE0MjUsIDYyMjQsIDExOTIyOSwgCi0gICAgMTEwNDksIDAsIDkyNjk3LCA0MzIzOSwgODQ4MiwgOTI0NDAsIDAsIDUwMzIsIDY5Njc3LCAxMTk0MCwgNjc4ODgsIDY2NCwgCi0gICAgMTIwNDM3LCA1MDM0LCAwLCAwLCAxMjc1MjUsIDQyNzAyLCA3Mzg4OCwgMCwgMTMyOTQsIDY3ODczLCA2NDg2OSwgNjAzMiwgCi0gICAgMCwgOTExNSwgNzQzMCwgMTIwMzc3LCAwLCAxMjA4MTksIDY4Mzg3LCAxMjAxNjgsIDczOTEzLCAxMjAxNzAsIDQxMTYxLCAKLSAgICA1NTE4LCA0MTc0LCAxMDk5MywgNDExNjIsIDEyMDE2MCwgNjQ1MjgsIDExNjksIDQzNCwgNDE0MzcsIDE5MDUsIDYwMzQsIAotICAgIDQxMTY0LCA2NDc0NCwgOTUyOCwgMTE4ODY3LCAxMjg4MDAsIDUyNCwgMCwgNzQwMjksIDc4OCwgNzQwMjcsIDAsIDE5NDYzOCwgCi0gICAgMCwgMTY2MywgMTA0MTksIDc0MDI1LCA0MjYzNiwgMCwgNjk3MjUsIDAsIDEyMDY1NiwgMCwgNjc4NzYsIDAsIDAsIDAsIAotICAgIDY3ODk3LCA3NDAzOSwgMCwgMCwgMTEzOTUsIDAsIDExOTEwNywgNDM2MTIsIDY0MzQ0LCAwLCAwLCAxMDg1NSwgNTQ0NSwgCi0gICAgOTM1NSwgMCwgNjUxOTgsIDczOTEsIDg5ODksIDIyMSwgNjU2ODYsIDAsIDAsIDgwMTAsIDcxOTEsIDQ5NjIsIDY5NzcyLCAKLSAgICA4ODU1LCAwLCAwLCA2NDQ2OSwgMTIwNDI2LCAxMDU1NSwgMCwgNDMzMzMsIDkyMjk5LCAwLCAxMjA0MjcsIDEwNDUxLCAwLCAKLSAgICA2NzY1MywgNzI0NSwgMTI0NDMsIDc0NDA1LCA5OTQ3LCAxMjAxNDksIDc4MzE3LCAzODczLCA4MzY3LCAwLCAxMjAxNDYsIAotICAgIDQzNDMzLCA0MzY0OSwgMTE5ODcsIDAsIDAsIDExMDEwLCAxMjcyMywgNzQwNTksIDc0MDYyLCA2MjE3LCA1ODk2LCAwLCAKLSAgICA3NjgyLCA3NDA0OSwgMTQ2MiwgMTAyMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDQyNTk1LCAwLCA3NDQwMiwgMTE4ODYwLCAwLCAKLSAgICAxMjA0MTksIDkyNDk3LCA3NDA1MiwgMCwgMCwgMTIwNTQ5LCAxMTkwODIsIDY0Mjk1LCAxMjA0MTgsIDAsIDY0NzY1LCAKLSAgICA3MzkyMywgMTIwNDE3LCAxMjA2NjIsIDEyMDczMCwgMTk0NzAyLCA2MjE2LCAwLCAxMDc1NSwgOTQ1NSwgMCwgODEyNCwgCi0gICAgMTI3MDQyLCA5NDcwLCA2OTQ0LCAxMjc1NDAsIDAsIDY5NjgwLCAyODI4LCAwLCA1MzEsIDQyNjM4LCAwLCAwLCAwLCAKLSAgICA0MzQyOCwgODIwNCwgMzYxNCwgMjgyNywgOTY5NiwgMCwgMCwgODcyOCwgNDM1NCwgMTA5MDQsIDc4NTYyLCAxOTkzNiwgCi0gICAgNzgzMywgMTIwNjkxLCAwLCA0MjU5OSwgNDI1OTcsIDQyNzA5LCAxMjA0MDksIDEyNzA0NCwgMCwgODUzNywgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDExOTksIDEwMTIxLCAyMDI4LCAwLCAwLCA2OTcxNSwgMCwgMzA2MiwgMCwgNzQ0NDcsIDEyNjA4LCAwLCAKLSAgICA2NjQ0MCwgNzU0NSwgOTcwMCwgMTI1ODAsIDAsIDEyMDc3NywgMTIwNTAyLCA0MTE1NSwgMCwgNzQwNzEsIDAsIDAsIAotICAgIDEyNzEzLCAwLCAwLCAwLCA3ODc3MiwgMCwgMTczNCwgMCwgMCwgMTI3MDQwLCA2NDU5NCwgMjQ1NiwgMjMxLCAwLCA3NDE2NywgCi0gICAgNTQyLCAwLCAxMTg3ODYsIDAsIDAsIDEyMzAsIDAsIDAsIDM1OTcsIDQ0NDYsIDEwNTg0LCA3NDIzNSwgOTIyMTUsIDQwMzcsIAotICAgIDEyNzkzOCwgODM1MiwgMCwgNTY4NywgMCwgNjQ1MTUsIDAsIDE5NDgwMSwgNTUyNjUsIDY3ODQ2LCA3ODQzNCwgOTcwNCwgMCwgCi0gICAgMCwgNzQyODQsIDEyODI4NSwgMCwgODY2MCwgMCwgMCwgMCwgNzg3NzMsIDc0NDgyLCA0NDgzLCAxNzA5LCA2OTcyMSwgCi0gICAgOTkwOSwgNjA4MCwgMCwgMTIwMzU4LCAxNzQ2LCAxMzE1LCA4NjY3LCAwLCAwLCAxMzE0MCwgNjU4OTksIDEwNjA0LCAwLCAKLSAgICA0NDgwLCAxMTI2NiwgMTI4MTUyLCAxMjI2LCA2OTMwLCAwLCAwLCA2MzYwLCAxMDg5NywgNDEyMzAsIDYwNSwgMCwgNzQ3ODUsIAotICAgIDEyMDM1NiwgMCwgMCwgNDE1MDAsIDAsIDMxMSwgMTE0NTMsIDYyMjEsIDEwNjA4LCA2NDk0MywgNzQyODAsIDEwODc3LCAKLSAgICAxMTg4NjgsIDY0ODg1LCA3NDI3MiwgMCwgMCwgMCwgMTIwNzM2LCA3NDMxMiwgMzQ1LCAwLCA3NDQ1NiwgNjQ2MDYsIDk5MTcsIAotICAgIDAsIDkyMjMxLCA1MDM3LCAwLCAxNzc2LCA4NDIyLCAwLCAxMTg4MTQsIDQxNTA4LCA0MTIwMSwgMzIzLCA0MzMyOCwgMCwgCi0gICAgNDI2OTgsIDEyOTUsIDAsIDQ2MjUsIDAsIDQ2MzAsIDEzMTE3LCAwLCAxMjg3NzIsIDY1MTIzLCAxMTI5MywgMjY2OCwgCi0gICAgMTEyODgsIDAsIDQyNjQwLCA2NTY2NiwgMjUxOSwgOTIzNjksIDY1NDIwLCA5MjQ3OSwgMCwgNDI1MiwgNTA0OSwgNDI2NTksIAotICAgIDExOTAxMSwgNzA2LCA3NzU0LCAxMDg1NCwgODczOCwgMCwgNjU0MTksIDAsIDAsIDY0OSwgNjU0MjEsIDAsIDY2NzAyLCAwLCAKLSAgICAxMjY3MCwgMTAxMywgMCwgNjQ5MTksIDcwNSwgMCwgNjU0MjIsIDEyNzgwMywgMTE4MywgMCwgNzAxNywgNDI4NTIsIDAsIAotICAgIDgxNTcsIDk3MzYsIDY0NTAzLCA2NTQxOCwgMCwgMCwgNzQwMzUsIDAsIDExOTEzLCA3Mzg3NCwgNjY5NiwgMCwgODkyMCwgMCwgCi0gICAgMCwgNzk2MiwgMTIyMTEsIDk4MzcsIDIwNTEsIDY2MjI3LCAwLCA0MTg0LCAwLCAwLCAxMDE3NywgNzM3NzcsIDE4NTcsIDAsIAotICAgIDQ2MjYsIDg0NjQsIDg0NzIsIDAsIDQ2MjksIDg0OTksIDc4MzIxLCA3ODMyMiwgNDYyNCwgNzgxOCwgMTE5MTczLCAwLCAwLCAKLSAgICA3ODA1LCAwLCAwLCA2OTM1LCA5MjI5MiwgNzgzMjUsIDc4MzI2LCA3ODMyMywgNDMzMjcsIDQzOTg5LCAxMTkwNDYsIDg0OTIsIAotICAgIDgyNTAsIDg0NTksIDAsIDg0OTcsIDg0OTYsIDAsIDAsIDc4MzM2LCA3ODMzOSwgOTU0MywgNzgzMzUsIDc4MzMyLCA3NzgzMiwgCi0gICAgNjU4NDksIDc3ODMxLCAwLCAwLCAxMjQ1MSwgMCwgODY4NCwgMCwgNjEwMiwgMCwgNTI5OCwgMCwgNTI5NCwgMCwgMCwgMCwgCi0gICAgMTk1MDYyLCA5OTQ5LCAxMTk4MjYsIDQzNjE3LCAxMTkyMTUsIDAsIDEyMDczLCAwLCAwLCA3Nzg2MywgMTMxMDgsIAotICAgIDEyMDYxNywgNzQzOTcsIDQxNDY4LCAwLCAwLCA1MjkyLCA1NTI3MiwgMCwgMTkzOSwgNTMwMiwgMzk3MCwgOTE3ODc5LCAKLSAgICAxMjQ1NSwgMTc5MywgMCwgMCwgMCwgNjY0MywgOTI0NzcsIDY1MjYzLCAwLCA3ODMzMCwgNDEyOTMsIDc4MzI4LCA2NTkyMywgCi0gICAgMCwgMTMyMTksIDk1NjksIDAsIDc0MzgzLCAwLCAwLCAwLCA1NTAwLCA4ODEzLCAwLCAwLCA3NDU2NiwgNTMyMiwgMCwgCi0gICAgNzgzNDAsIDQzNjMxLCA1MzI0LCA2NjQ0MywgMzc4NCwgNDE2MTQsIDY1MjY5LCA2MjMwLCA3ODM0OSwgNzgzNDUsIDQzMzI0LCAKLSAgICAzMzYwLCA3ODM0NCwgMTE1MjMsIDAsIDkyNDg4LCA5OTI2LCA3MTk3LCAwLCA2ODQyOSwgNDI4OTQsIDQxODIxLCAxMjQ5LCAKLSAgICA3ODM2MCwgNzgzNjEsIDc4MzU2LCA3ODM1OCwgNzgzNTMsIDY0ODk5LCA2NDc2MywgNDExNDksIDQxODA3LCA0MzE2MiwgCi0gICAgNDE4MTUsIDQxMTUwLCAwLCAxMDU3MSwgMTAwOTYsIDAsIDAsIDc4MDc0LCA2OTQ3LCA0MTE1MiwgODg3LCA5MjQ5LCA2NTY1LCAKLSAgICA3ODUxMCwgNDE5OTAsIDc4NTA5LCA0MTgxMSwgNzQ0NjYsIDAsIDY2NzAsIDc3ODgyLCAwLCAwLCA0MzA5MiwgNDMzMjUsIDAsIAotICAgIDEwMTY4LCAwLCA5NzgxLCAxMjg2NTUsIDkxOTAsIDAsIDk2NjYsIDgyNjksIDY1OTQ0LCA3NDAwNSwgMTMwMTksIDExNjcwLCAKLSAgICAxMjczODMsIDMxNSwgMTI4MTMsIDAsIDc4NDMyLCA3ODI1NiwgNzgzNTEsIDc4MzUyLCAwLCAwLCAwLCAwLCAxMzc4LCAKLSAgICA5NTA5LCAwLCAwLCA3NDQ3NSwgMzA2NiwgOTIyMjAsIDY3ODQ3LCAwLCA5MjM1NSwgMCwgNzgzNjUsIDg3ODcsIDEyMDM3OSwgCi0gICAgMTk0NjE2LCA0MTYxOCwgMTk0NjE1LCA3ODI2MSwgMTk0NjE0LCAwLCA2NDY1MiwgMCwgMTk0NjEyLCAwLCA3ODM2NiwgCi0gICAgNDIwODgsIDAsIDE5NTA2MSwgNzE3NiwgMTI4ODMzLCAxMDEzNywgNjEyMSwgMTA5OTUsIDc4MjU5LCA3NDUzNCwgODExOSwgCi0gICAgNjQ4NzQsIDkxNzgxNiwgMTI3MTk5LCAxOTQ5MzksIDAsIDc0NTI1LCAwLCAwLCAxMjkzMCwgMTM5NCwgNzQ1MTQsIDAsIAotICAgIDc0NTE1LCAwLCAxMTg4MDQsIDI5OTgsIDk1MjcsIDEyMDY1OSwgNjUxOTAsIDEyOTc3LCA0MjA5MCwgMTE5MTY1LCAwLCAKLSAgICAxMTkxMDAsIDQxMjM2LCA5MjIzNSwgNDIwMDUsIDQyMDAzLCA0MTIzNywgNTg0OCwgMCwgMCwgMzY3MCwgMTI4NjU3LCAKLSAgICAxOTQ2MDAsIDAsIDAsIDc4OTAsIDAsIDExMjk4LCA0MzMxNSwgMCwgNjIyOSwgMTU5MywgMCwgMCwgNjE5LCA0NjM1LCAKLSAgICA2NTA4MCwgMCwgMTI4MDAyLCA0MTIwLCA2NTMzNywgNjUzMzYsIDAsIDExODA4LCAxMTkyMTQsIDc0MTE1LCA5MzY2LCAKLSAgICA0Mjc5MCwgNDIwMDYsIDAsIDY1MzI3LCA2NTMyNiwgNjUzMjUsIDEwNzU3LCAxNTA3LCA0MjIxNiwgNjUzMjEsIDY1MzIwLCAKLSAgICA2NTMzNSwgNjUzMzQsIDY1MzMzLCA2NTMzMiwgNjUzMzEsIDQyMDU5LCA2NTMyOSwgNDI2ODksIDkyNDI3LCA5MTI4LCAKLSAgICAxMTg4ODUsIDQyMDczLCA2Nzg1LCA2NDU5MCwgMCwgNDM3MSwgNzE5NiwgNjUzMTgsIDIwMzUsIDY1MzE2LCA0MTA2LCAKLSAgICA2NTMxNCwgNjUzMTMsIDQyMDc0LCAxMjc4NDcsIDQxMjI4LCAwLCA2NTYwOSwgNDEyNDEsIDc5MDMsIDQxMjM5LCA0MzUzMywgCi0gICAgNzg0NTksIDcxODksIDAsIDAsIDAsIDEyMzU3LCA0MjgwMiwgNzg0NTAsIDg0ODcsIDkxMzEsIDAsIDQ2MTUsIDEyNjk1LCAKLSAgICAxMjc3NTIsIDAsIDEyMTc1LCAwLCA2NDUzNSwgMCwgNzgwOSwgMCwgMCwgNTYyLCAxMjE2OSwgNjU5MCwgNjk3NjIsIAotICAgIDY2NDU1LCA2NDczOCwgMzIxOSwgNjg2NTQsIDAsIDAsIDEwMzcsIDAsIDIwMjUsIDEyODI2MywgMTMwOTgsIDc4NDQyLCAKLSAgICAxMDYzNywgNDU2OCwgNTQ5LCAxNTcwLCAwLCAyODM1LCAwLCAxMDYyNCwgNDM2MjMsIDExMDcyLCAxMjcxOTEsIDAsIDAsIAotICAgIDEyNjA2LCA3ODQzMywgMjgyNSwgMCwgMTA4MjUsIDgwNzksIDI4MjEsIDQxMDQ2LCA5MjMyNywgMCwgMCwgMTIwNTkzLCAKLSAgICAxMzA3MSwgMCwgNDUyLCA0MTA0OSwgNDI4NDAsIDYzNDYsIDI4MzEsIDU0NjEsIDc0NTk2LCAxMTQ2NSwgNTIxMiwgMCwgCi0gICAgNjQ3MDMsIDExOTE5MSwgNDIzMDgsIDcxODEsIDAsIDQxMzMyLCAwLCAxMjMzMywgMCwgMTY2OCwgMCwgMCwgMCwgMTE4NywgCi0gICAgMCwgNDI2MjgsIDc4NTc1LCAwLCAxMjg3NzcsIDAsIDMyNDAsIDEyODUxOCwgMTIxOTQsIDAsIDExNTkxLCA0MTA2NSwgCi0gICAgNTMyMywgODE2NiwgMCwgMCwgMCwgNzQ1MzUsIDE2MjMsIDY1Mjk3LCAxMjg4NTYsIDU3MSwgMCwgNDkxOCwgMCwgNTI4OCwgCi0gICAgMTI3Mjk1LCA4OTE2LCA2NTA0OCwgMTkwOSwgODg2NCwgMCwgMCwgMTA3MzYsIDkyNTA4LCAxMTU3MSwgNzYxNSwgMTI3MzAwLCAKLSAgICA5MjI5NiwgNDIzNywgOTI1NzYsIDEwMzUsIDY1ODE1LCAwLCA3ODgxLCA3MDEsIDY1OTM2LCAzNDg5LCAwLCAwLCAxMjA3NTEsIAotICAgIDExNDAzLCAwLCAwLCAxMjcxNDYsIDM3OTYsIDY4MDAsIDAsIDM5OTQsIDExNDIxLCAwLCAxOTUwNzYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDY0MDc1LCA3OTcsIDY0MDc0LCA4NzM0LCA0MjEyLCAxMjczNjksIDY0Mzg3LCA0MTE1LCAwLCA1MDA1LCA2NDA3MCwgCisgICAgNjQwNzMsIDEwNjc5LCAwLCA3Nzk1NCwgOTQwMiwgNjQyNzYsIDQyNiwgMCwgMCwgODI1MSwgMTAxMzYsIDY1NDM2LCAwLCAKKyAgICAyMTIwLCA0MzMwMiwgMTIyNCwgMCwgNjU1NzYsIDc0MTkyLCAxMDcwMSwgMTc2NCwgMzEwMSwgMTI3ODE1LCAxMjg1OCwgCisgICAgMTIwMTU5LCAwLCAxMTM3MywgNjM3OCwgMTI3ODU5LCAxMjAxMDMsIDg2NjMsIDkzMTIsIDQxNjQ0LCA0NTM5LCAyMTI5LCAwLCAKKyAgICA5MjIyLCA5ODM3MjksIDAsIDQyNTksIDkwOTIsIDc0NTY3LCA0MTk2MSwgMCwgMTI3MjQsIDY2MzU3LCA0MjMzMSwgNjQ5MzUsIAorICAgIDAsIDAsIDEyOTMsIDc5NDcsIDIxMzIsIDk4Mzc1OCwgNzQ1OTMsIDEyMDMwOCwgMjQ1NCwgNDI3MTcsIDM2MTMsIDEyODgzNywgCisgICAgMCwgMCwgNjU4ODgsIDg4MTYsIDEwOTc4LCAxMDg0MCwgMCwgMTA2NjgsIDAsIDQzMDg3LCAxMjU5NSwgMTIwMzA0LCAKKyAgICA5ODMxMTQsIDg4MjIsIDAsIDExNTcsIDY0OTAzLCA4NjM4LCAwLCAwLCAwLCAwLCA2OTg0OCwgODIzNSwgMTIwMzE2LCAKKyAgICA0NDA1LCAxMDA4NiwgMTIwMjQ3LCAwLCA2OTIxNiwgMCwgNjU0MzAsIDcxMzIxLCA2MDc5LCA2ODE3LCAxMDc2NCwgCisgICAgMTI3OTEwLCA2NDI5MSwgMTI4MDUxLCA5OTgsIDEyMDMxMiwgMTEwNjIsIDEzMTcsIDY0MzI3LCAxNTU4LCAwLCAxOTkxLCAKKyAgICA3ODgyLCA0MjI1NCwgMCwgNDE3MDAsIDUzMCwgMCwgMTA0MjgsIDExOTMzNSwgMTIwMDIsIDExOTMzNiwgNTc0MiwgNDMwNzYsIAorICAgIDQ2OTIsIDY0NjMwLCA0MTgyMywgNDAwNywgNTAwNCwgMTE5MzM0LCA3ODk2LCA3NTEsIDY1OTUsIDY1OTYsIDEyMDMyNSwgCisgICAgNjYzNzMsIDAsIDAsIDY0OTA4LCA5MjY5MSwgNjMxMSwgMCwgMTIwMDQsIDExOTE5MiwgMTIwNDksIDQzMTA4LCAxMjAzMjYsIAorICAgIDAsIDQxNzA1LCA5MjE4OCwgNjU5OCwgMCwgNjU5OSwgMTIwMzM0LCAwLCA0MjE0OCwgMTE4ODI1LCA2NjAyNywgMCwgNjU5NywgCisgICAgOTQxMiwgODM0MCwgMTE4MjQsIDY0NzQ1LCAyMjgxLCA2OTkwNCwgMCwgMTk4OCwgNTQwNywgNjc4NjUsIDI0MzAsIDQxNjc4LCAKKyAgICAwLCAxMjAyNDMsIDIzMzYsIDk4Mzg5NCwgMCwgNzg4NzEsIDEyMDQ0MiwgOTgzNzYwLCAxOTIxLCAxMDk0NywgMTk5MjcsIDAsIAorICAgIDY1NDA2LCAwLCAxOTkxMywgNDI4NCwgMTMyMTcsIDAsIDQzNzg5LCAxMjg0MSwgOTIyOSwgMTA5NTYsIDQyMjg1LCA0MTY3NCwgCisgICAgMTk5NjQsIDQxNjc5LCA2NTA4NCwgMzUyMSwgMCwgNTc3NCwgODMyNSwgMCwgNjU0MDMsIDk4MzA4OSwgMTg1NCwgMTA3OTQsIAorICAgIDAsIDY3NjYwLCA2OTg0NiwgMCwgNzgzNTksIDUyODAsIDAsIDQzNDQsIDEyOTA1LCA2NTQzMywgNjA3NiwgNjQ3OTMsIAorICAgIDQxNjEwLCA3NjgsIDEyMDc0LCA0NDIsIDAsIDY4MTYyLCA2NDA4MSwgMTI5MzQsIDQxNjgyLCA2NTQzMiwgNDE2OTMsIDAsIAorICAgIDYwNzEsIDY1NDM0LCAxMjc0NjcsIDQ4MDQsIDQwNTMsIDAsIDEyNzQ2OSwgMTk0NjUzLCA0MTY5NiwgNDY3LCA2OTgyMywgCisgICAgMTI3NDYzLCA2OTc5NywgMTk0NjUyLCAxMjc0NzMsIDg0MjEsIDEyNzQ3MiwgNjk2ODIsIDQzNzA1LCA1MDIsIDAsIDY1NDMxLCAKKyAgICAxMTkwNTYsIDY5OTU0LCAxMjA0MywgMTMwMywgMzE2LCA3MzY0LCAyMDI5LCAyMTM2LCAxMTkyNDYsIDExNTMzLCA2NDM2NSwgCisgICAgNDM0ODAsIDkyNjM5LCA0ODYwLCAxMjY2NDgsIDEyNzg3NywgNDI0ODgsIDAsIDk1ODMsIDEyODg0OSwgNTU0NiwgODAxOSwgCisgICAgNzM4NTYsIDAsIDAsIDAsIDU1NDQsIDIzNTUsIDEyMTUwLCA2NTcyNSwgNTU0MywgNzc5ODksIDYzNzUxLCAxMjEzNywgCisgICAgNTU0OCwgNzc5ODUsIDAsIDY1NzI3LCA2ODM4OCwgNjU3MjYsIDYwNzcsIDEyODM1MiwgNjU0NTIsIDAsIDExMzAxLCAKKyAgICA3ODAxMywgNzgwMDgsIDc4MDEwLCA5ODc0LCA3ODAwNywgMCwgMTMxOSwgMzA1MCwgNjU0MTAsIDAsIDAsIDc4MDE2LCAKKyAgICA3ODAxNywgNDI4MzAsIDQzOTk2LCA2NjcxNiwgMTI4MTM3LCA0NjkxLCA5MjI0MiwgOTM0NSwgNjIxLCA5MjcwOSwgCisgICAgMTI4MjIyLCAwLCA2NTQxMSwgMCwgNDExODIsIDczODgxLCA2NTQwOCwgNzM4OTksIDc4MDI0LCA5NDc0LCAxMDU0NSwgCisgICAgMTE5MTE4LCAxMDg4NywgMzc4NiwgNjU0MDksIDg4OTQsIDQzMTc5LCAxMTk2MTEsIDc5MjMsIDM3MTYsIDkyMzYzLCA5OTk2LCAKKyAgICA4NTA4LCAwLCA3MDEyLCA4MTk1LCAxMjc4MzQsIDk1NjYsIDAsIDM3MjIsIDAsIDQxNzA3LCA4NDkzLCA1NDUsIDk1NzUsIAorICAgIDQxMzc5LCAxMDA1MCwgMTI3MTgsIDY5ODU0LCA4ODU5LCA2ODIwLCA3NDM0NSwgNjUxMTAsIDEyMDc0MCwgMCwgMCwgOTExOSwgCisgICAgMjc4NywgNzkyMCwgMTE4ODIzLCA0MDIxLCAyMDEyLCA3OTg1LCAwLCAxMTk2NjMsIDAsIDAsIDc4MDIxLCA3ODAyMiwgNDEwLCAKKyAgICA3ODAyMCwgMTgwMiwgNzgwMTgsIDc0MTA3LCAwLCA0MTY1OSwgNDE2NzEsIDE4MjcsIDAsIDY0Mzk2LCAxMDEyNiwgMTIxMTYsIAorICAgIDQxNjczLCAxMjAzNzAsIDExNDIyLCA3ODE0MSwgMTIwMzczLCAzODYwLCAxMjAzNjcsIDY4NDEyLCA0MTM0NSwgMTIwMzYyLCAKKyAgICAxMjAzNjMsIDExNzQ4LCA0MjE1OCwgNzk0MSwgMTEwNzYsIDg3NDksIDEyMDM2MSwgMjEwNCwgNjQ4NTgsIDM2MSwgCisgICAgMTIwMzU3LCA4NDUsIDAsIDQxNTYwLCAxMTk3MCwgNDU2MiwgOTE3OTIwLCAyOTI2LCA5MTc5MTksIDQ1NjksIDc0MTMwLCAwLCAKKyAgICA0MzQ4NywgMTk0NjMwLCA2MTEsIDc0MTI5LCA2NDg3MSwgMTE4ODkxLCA2NTYyOSwgMCwgMTk0ODU4LCAwLCAwLCAxMjc1NDUsIAorICAgIDEyMDU0MywgMCwgMCwgNjI5MSwgMCwgNzg2MzksIDQxNjY5LCA3MDk0LCA5MTc5MjEsIDAsIDk4MzU4MSwgNzQwNTQsIAorICAgIDEyNzc1NCwgMTk1MDI5LCAwLCA4MzksIDk4MzMxMSwgNzY5NSwgODc2OSwgNjUyNDYsIDQ4MjksIDE5NDY2MywgNDg1OSwgCisgICAgNjQ0NjcsIDAsIDk4Mzk1NCwgMTE4OTk4LCA3MjA2LCAwLCA2NjQ3LCA0Mzk4NiwgMCwgNjk3NjYsIDAsIDY0NzY0LCA0MjEwLCAKKyAgICA5ODM4NTQsIDEyNzkzNiwgODA0LCAwLCAwLCAxMjI5OCwgMCwgNjY2NTMsIDAsIDY0OTI0LCAxMDA5MSwgNzM5MzEsIDk0NjgsIAorICAgIDc0MjQ1LCAwLCAwLCA3NDI0NiwgOTI1MDMsIDEyODM5LCA2NDY2OSwgOTIyMDIsIDAsIDEyNzksIDE0MjUsIDYyMjQsIAorICAgIDExOTIyOSwgMTEwNDksIDAsIDkyNjk3LCA0MzIzOSwgODQ4MiwgOTI0NDAsIDAsIDUwMzIsIDY5Njc3LCAxMTk0MCwgCisgICAgNjc4ODgsIDY2NCwgMTIwNDM3LCA1MDM0LCAwLCAwLCAxMjc1MjUsIDQyNzAyLCA3Mzg4OCwgOTgzMTQ5LCAxMzI5NCwgCisgICAgNjc4NzMsIDY0ODY5LCA2MDMyLCAwLCA5MTE1LCA3NDMwLCAxMjAzNzcsIDAsIDEyMDgxOSwgNjgzODcsIDEyMDE2OCwgCisgICAgNzM5MTMsIDEyMDE3MCwgNDExNjEsIDU1MTgsIDQxNzQsIDEwOTkzLCA0MTE2MiwgMTIwMTYwLCA2NDUyOCwgMTE2OSwgNDM0LCAKKyAgICA0MTQzNywgMTkwNSwgNjAzNCwgNDExNjQsIDY0NzQ0LCA5NTI4LCAxMTg4NjcsIDEyODgwMCwgNTI0LCAwLCA3NDAyOSwgCisgICAgNzg4LCA3NDAyNywgMCwgMTk0NjM4LCAwLCAxNjYzLCAxMDQxOSwgNzQwMjUsIDQyNjM2LCAwLCA2OTcyNSwgMCwgMTIwNjU2LCAKKyAgICAwLCA2Nzg3NiwgMCwgMCwgMCwgNjc4OTcsIDc0MDM5LCAwLCAwLCAxMTM5NSwgMCwgMTE5MTA3LCA0MzYxMiwgNjQzNDQsIDAsIAorICAgIDAsIDEwODU1LCA1NDQ1LCA5MzU1LCAwLCA2NTE5OCwgNzM5MSwgODk4OSwgMjIxLCA2NTY4NiwgMCwgMCwgODAxMCwgNzE5MSwgCisgICAgNDk2MiwgNjk3NzIsIDg4NTUsIDAsIDAsIDY0NDY5LCAxMjA0MjYsIDEwNTU1LCAwLCA0MzMzMywgOTIyOTksIDAsIAorICAgIDEyMDQyNywgMTA0NTEsIDAsIDY3NjUzLCA3MjQ1LCAxMjQ0MywgNzQ0MDUsIDk5NDcsIDEyMDE0OSwgNzgzMTcsIDM4NzMsIAorICAgIDgzNjcsIDAsIDEyMDE0NiwgNDM0MzMsIDQzNjQ5LCAxMTk4NywgMCwgMCwgMTEwMTAsIDEyNzIzLCA3NDA1OSwgNzQwNjIsIAorICAgIDYyMTcsIDU4OTYsIDAsIDc2ODIsIDc0MDQ5LCAxNDYyLCAxMDIzNSwgMCwgMCwgMCwgMCwgMCwgMCwgNDI1OTUsIDAsIAorICAgIDc0NDAyLCAxMTg4NjAsIDAsIDEyMDQxOSwgOTI0OTcsIDc0MDUyLCAwLCA5MjM3OCwgMTIwNTQ5LCAxMTkwODIsIDY0Mjk1LCAKKyAgICAxMjA0MTgsIDAsIDY0NzY1LCA3MzkyMywgMTIwNDE3LCAxMjA2NjIsIDY5OTIwLCAxOTQ3MDIsIDYyMTYsIDAsIDEwNzU1LCAKKyAgICA5NDU1LCAwLCA4MTI0LCAxMjcwNDIsIDk0NzAsIDY5NDQsIDEyNzU0MCwgMCwgNjk2ODAsIDI4MjgsIDAsIDUzMSwgNDI2MzgsIAorICAgIDAsIDAsIDAsIDQzNDI4LCA4MjA0LCAzNjE0LCAyODI3LCA5Njk2LCAwLCAwLCA4NzI4LCA0MzU0LCAxMDkwNCwgNzg1NjIsIAorICAgIDE5OTM2LCA3ODMzLCAxMjA2OTEsIDAsIDQyNTk5LCA0MjU5NywgNDI3MDksIDEyMDQwOSwgMTI3MDQ0LCAwLCA4NTM3LCAwLCAKKyAgICAwLCA5MzU0LCA5ODMxNjQsIDEyODgzMywgNDExOTksIDEwMTIxLCAyMDI4LCAwLCA5ODMxOTQsIDY5NzE1LCAwLCAzMDYyLCAKKyAgICAwLCA3NDQ0NywgMTI2MDgsIDAsIDY2NDQwLCA3NTQ1LCA5NzAwLCAxMjU4MCwgOTIyMDUsIDEyMDc3NywgMTIwNTAyLCAKKyAgICA0MTE1NSwgMCwgNzQwNzEsIDAsIDk4MzQ0OSwgMTI3MTMsIDAsIDAsIDAsIDc4NzcyLCAwLCAxNzM0LCAwLCAwLCAxMjcwNDAsIAorICAgIDY0NTk0LCAyNDU2LCAyMzEsIDAsIDc0MTY3LCA1NDIsIDAsIDExODc4NiwgMCwgOTgzOTcwLCAxMjMwLCAwLCAwLCAzNTk3LCAKKyAgICA0NDQ2LCAxMDU4NCwgNzQyMzUsIDkyMjE1LCA0MDM3LCAxMjc5MzgsIDgzNTIsIDAsIDU2ODcsIDAsIDY0NTE1LCAwLCAKKyAgICAxOTQ4MDEsIDU1MjY1LCA2Nzg0NiwgNzg0MzQsIDk3MDQsIDAsIDAsIDcwMDgwLCA3MTMzOCwgMCwgODY2MCwgMTI2NDk1LCAKKyAgICAwLCAwLCA3ODc3MywgNzQ0ODIsIDQ0ODMsIDE3MDksIDY5NzIxLCA5OTA5LCA2MDgwLCAwLCAxMjAzNTgsIDE3NDYsIDEzMTUsIAorICAgIDg2NjcsIDAsIDAsIDEzMTQwLCA2NTg5OSwgMTA2MDQsIDAsIDQ0ODAsIDExMjY2LCAxMjgxNTIsIDEyMjYsIDY5MzAsIAorICAgIDY3OTc5LCA5ODM2ODEsIDYzNjAsIDEwODk3LCA0MTIzMCwgNjA1LCAwLCA3NDc4NSwgNjk4NzUsIDAsIDAsIDQxNTAwLCAwLCAKKyAgICAzMTEsIDExNDUzLCA2MjIxLCAxMDYwOCwgNjQ5NDMsIDc0MjgwLCAxMDg3NywgMTE4ODY4LCA2NDg4NSwgNzQyNzIsIDAsIDAsIAorICAgIDEyODU1OSwgMTIwNzM2LCA3NDMxMiwgMzQ1LCAwLCA3NDQ1NiwgNjQ2MDYsIDk5MTcsIDAsIDkyMjMxLCA1MDM3LCAwLCAKKyAgICAxNzc2LCA4NDIyLCAwLCAxMTg4MTQsIDQxNTA4LCA0MTIwMSwgMzIzLCA0MzMyOCwgMCwgNDI2OTgsIDEyOTUsIDE5NDg1MywgCisgICAgNDYyNSwgMCwgNDYzMCwgMTMxMTcsIDAsIDEyODc3MiwgNjUxMjMsIDExMjkzLCAyNjY4LCAxMTI4OCwgMCwgNDI2NDAsIAorICAgIDY1NjY2LCAyNTE5LCA5MjM2OSwgNjU0MjAsIDkyNDc5LCAwLCA0MjUyLCA1MDQ5LCA0MjY1OSwgMTE5MDExLCA3MDYsIAorICAgIDc3NTQsIDEwODU0LCA4NzM4LCAwLCA2NTQxOSwgMCwgMCwgNjQ5LCA2NTQyMSwgMCwgNjY3MDIsIDAsIDEyNjcwLCAxMDEzLCAKKyAgICAwLCA2NDkxOSwgNzA1LCAwLCA2NTQyMiwgMTI3ODAzLCAxMTgzLCAxMjY1MTksIDcwMTcsIDQyODUyLCAwLCA4MTU3LCAKKyAgICA5NzM2LCA2NDUwMywgNjU0MTgsIDAsIDk4Mzg2OSwgNzQwMzUsIDAsIDExOTEzLCA3Mzg3NCwgNjY5NiwgMCwgODkyMCwgCisgICAgMTE5Mjk4LCAwLCA3OTYyLCAxMjIxMSwgOTgzNywgMjA1MSwgNjYyMjcsIDAsIDQxODQsIDAsIDAsIDEwMTc3LCA3Mzc3NywgCisgICAgMTg1NywgMTk0NjU3LCA0NjI2LCA4NDY0LCA4NDcyLCAwLCA0NjI5LCA4NDk5LCA3ODMyMSwgNzgzMjIsIDQ2MjQsIDc4MTgsIAorICAgIDExOTE3MywgMCwgMCwgNzgwNSwgMCwgOTQwMDcsIDY5MzUsIDkyMjkyLCA3ODMyNSwgNzgzMjYsIDc4MzIzLCA0MzMyNywgCisgICAgNDM5ODksIDExOTA0NiwgODQ5MiwgODI1MCwgODQ1OSwgMCwgODQ5NywgODQ5NiwgMCwgMCwgNzgzMzYsIDc4MzM5LCA5NTQzLCAKKyAgICA3ODMzNSwgNzgzMzIsIDc3ODMyLCA2NTg0OSwgNzc4MzEsIDk4Mzk1MiwgMCwgMTI0NTEsIDAsIDg2ODQsIDAsIDYxMDIsIDAsIAorICAgIDUyOTgsIDAsIDUyOTQsIDAsIDAsIDk4MzQ1MSwgMTk1MDYyLCA5OTQ5LCAxMTk4MjYsIDQzNjE3LCAxMTkyMTUsIDAsIAorICAgIDEyMDczLCAwLCAwLCA3Nzg2MywgMTMxMDgsIDEyMDYxNywgMTE0MzksIDQxNDY4LCA5ODM3NDgsIDAsIDUyOTIsIDU1MjcyLCAKKyAgICA5ODM4NzQsIDE5MzksIDUzMDIsIDM5NzAsIDkxNzg3OSwgMTI0NTUsIDE3OTMsIDAsIDAsIDAsIDY2NDMsIDkyNDc3LCAKKyAgICA2NTI2MywgMCwgNzgzMzAsIDQxMjkzLCA3ODMyOCwgNjU5MjMsIDAsIDEzMjE5LCA5NTY5LCAwLCA3NDM4MywgMCwgNzQxOTcsIAorICAgIDAsIDU1MDAsIDg4MTMsIDAsIDAsIDc0NTY2LCA1MzIyLCAwLCA3ODM0MCwgNDM2MzEsIDUzMjQsIDY2NDQzLCAzNzg0LCAKKyAgICA0MTYxNCwgNjUyNjksIDYyMzAsIDc4MzQ5LCA3ODM0NSwgNDMzMjQsIDMzNjAsIDc4MzQ0LCAxMTUyMywgMCwgOTI0ODgsIAorICAgIDk5MjYsIDcxOTcsIDAsIDY4NDI5LCA0Mjg5NCwgNDE4MjEsIDEyNDksIDc4MzYwLCA3ODM2MSwgNzgzNTYsIDc4MzU4LCAKKyAgICA3ODM1MywgNjQ4OTksIDY0NzYzLCA0MTE0OSwgNDE4MDcsIDQzMTYyLCA0MTgxNSwgNDExNTAsIDAsIDEwNTcxLCAxMDA5NiwgCisgICAgMCwgMCwgNzgwNzQsIDY5NDcsIDQxMTUyLCA4ODcsIDkyNDksIDY1NjUsIDc4NTEwLCA0MTk5MCwgNzg1MDksIDQxODExLCAKKyAgICA3NDQ2NiwgOTM5NjYsIDY2NzAsIDc3ODgyLCAwLCAwLCA0MzA5MiwgNDMzMjUsIDAsIDEwMTY4LCAwLCA5NzgxLCAxMjg2NTUsIAorICAgIDkxOTAsIDAsIDk2NjYsIDgyNjksIDY1OTQ0LCA3NDAwNSwgMTMwMTksIDExNjcwLCA2OTg2MCwgMzE1LCAxMjgxMywgCisgICAgOTgzNDUwLCA3ODQzMiwgNzgyNTYsIDc4MzUxLCA3ODM1MiwgMCwgOTgzNjQ4LCAwLCAwLCAxMzc4LCA5NTA5LCAwLCAwLCAKKyAgICA3NDQ3NSwgMzA2NiwgOTIyMjAsIDY3ODQ3LCAwLCA5MjM1NSwgMCwgNzgzNjUsIDg3ODcsIDEyMDM3OSwgMTk0NjE2LCAKKyAgICA0MTYxOCwgMTk0NjE1LCA3ODI2MSwgMTk0NjE0LCAwLCA2NDY1MiwgMCwgMTk0NjEyLCAwLCA3ODM2NiwgNDIwODgsIDAsIAorICAgIDE5NTA2MSwgNzE3NiwgNDM3NTYsIDEwMTM3LCA2MTIxLCAxMDk5NSwgNzgyNTksIDc0NTM0LCA4MTE5LCA2NDg3NCwgCisgICAgOTE3ODE2LCAxMjcxOTksIDE5NDkzOSwgMCwgNzQ1MjUsIDAsIDAsIDEyOTMwLCAxMzk0LCA3NDUxNCwgMCwgNzQ1MTUsIDAsIAorICAgIDExODgwNCwgMjk5OCwgOTUyNywgMTIwNjU5LCA2NTE5MCwgMTI5NzcsIDQyMDkwLCAxMTkxNjUsIDAsIDExOTEwMCwgCisgICAgNDEyMzYsIDkyMjM1LCA0MjAwNSwgNDIwMDMsIDQxMjM3LCA1ODQ4LCAwLCAwLCAzNjcwLCAxMjg2NTcsIDE5NDYwMCwgMCwgCisgICAgMCwgNzg5MCwgMCwgMTEyOTgsIDQzMzE1LCAwLCA2MjI5LCAxNTkzLCAwLCAwLCA2MTksIDQ2MzUsIDY1MDgwLCAwLCAKKyAgICAxMjgwMDIsIDQxMjAsIDY1MzM3LCA2NTMzNiwgMCwgMTE4MDgsIDExOTIxNCwgNzQxMTUsIDkzNjYsIDQyNzkwLCA0MjAwNiwgCisgICAgMTE5MTE1LCA2NTMyNywgNjUzMjYsIDY1MzI1LCAxMDc1NywgMTUwNywgNDIyMTYsIDY1MzIxLCA2NTMyMCwgNjUzMzUsIAorICAgIDY1MzM0LCA2NTMzMywgNjUzMzIsIDY1MzMxLCA0MjA1OSwgNjUzMjksIDQyNjg5LCA5MjQyNywgOTEyOCwgOTQwNDUsIAorICAgIDQyMDczLCA2Nzg1LCA2NDU5MCwgOTgzODIxLCA0MzcxLCA3MTk2LCA2NTMxOCwgMjAzNSwgNjUzMTYsIDQxMDYsIDY1MzE0LCAKKyAgICA2NTMxMywgNDIwNzQsIDEyNzg0NywgNDEyMjgsIDAsIDY1NjA5LCA0MTI0MSwgNzkwMywgNDEyMzksIDQzNTMzLCA3ODQ1OSwgCisgICAgNzE4OSwgMCwgMCwgMCwgMTIzNTcsIDQyODAyLCA3ODQ1MCwgODQ4NywgOTEzMSwgMCwgNDYxNSwgMTI2OTUsIDEyNzc1MiwgCisgICAgMCwgMTIxNzUsIDAsIDY0NTM1LCAwLCA3ODA5LCAwLCAwLCA1NjIsIDEyMTY5LCA2NTkwLCA2OTc2MiwgNjY0NTUsIDY0NzM4LCAKKyAgICAzMjE5LCA2ODY1NCwgOTgzNzc4LCAwLCAxMDM3LCAwLCAyMDI1LCAxMjgyNjMsIDEzMDk4LCA3ODQ0MiwgMTA2MzcsIDQ1NjgsIAorICAgIDU0OSwgMTU3MCwgMCwgMjgzNSwgMCwgMTA2MjQsIDQzNjIzLCAxMTA3MiwgMTI3MTkxLCAwLCAwLCAxMjYwNiwgNzg0MzMsIAorICAgIDI4MjUsIDAsIDEwODI1LCA4MDc5LCAyODIxLCA0MTA0NiwgOTIzMjcsIDczNjUsIDk4Mzc0NCwgMTIwNTkzLCAxMzA3MSwgMCwgCisgICAgNDUyLCA0MTA0OSwgNDI4NDAsIDYzNDYsIDI4MzEsIDU0NjEsIDc0NTk2LCAxMTQ2NSwgNTIxMiwgMCwgNjQ3MDMsIAorICAgIDExOTE5MSwgNDIzMDgsIDcxODEsIDAsIDQxMzMyLCAwLCAxMjMzMywgMCwgMTY2OCwgMCwgMCwgMCwgMTE4NywgOTgzMzc3LCAKKyAgICA0MjYyOCwgNzg1NzUsIDAsIDEyODc3NywgMCwgMzI0MCwgMTI4NTE4LCAxMjE5NCwgMCwgMTE1OTEsIDQxMDY1LCA1MzIzLCAKKyAgICA4MTY2LCAwLCAwLCAwLCA3NDUzNSwgMTYyMywgNjUyOTcsIDEyODg1NiwgNTcxLCAwLCA0OTE4LCAwLCA1Mjg4LCAxMjcyOTUsIAorICAgIDg5MTYsIDY1MDQ4LCAxOTA5LCA4ODY0LCAwLCAwLCAxMDczNiwgOTI1MDgsIDExNTcxLCA3NjE1LCAxMjczMDAsIDkyMjk2LCAKKyAgICA0MjM3LCA5MjU3NiwgMTAzNSwgNjU4MTUsIDAsIDc4ODEsIDcwMSwgNjU5MzYsIDM0ODksIDAsIDAsIDEyMDc1MSwgMTE0MDMsIAorICAgIDAsIDAsIDEyNzE0NiwgMzc5NiwgNjgwMCwgMCwgMzk5NCwgMTE0MjEsIDAsIDE5NTA3NiwgMCwgOTgzOTEzLCAwLCAwLCAKICAgICA2NDg1NywgMTI4MTA1LCAyODU1LCAxMjc4MjgsIDY2MzA4LCA0MTYyMSwgNjgyMTQsIDEyNzI4MywgMTI3ODE3LCAxMDY1NCwgCiAgICAgMCwgMTE5MjI2LCAxMjE2NCwgMzI0NiwgNzkwNiwgNDM5NzIsIDY1ODQ3LCA3MTgyLCAwLCAxMzAyNCwgMTk0ODIyLCAKLSAgICA3NDI3MCwgMTI4Mjg5LCAwLCAwLCAwLCAxNDk2LCA3NDcsIDAsIDk0MiwgMjM3OCwgNDMxMzYsIDEyNzkwNSwgODQ2NiwgMCwgCi0gICAgOTMyMCwgODAwMSwgMTIzMiwgODEzOSwgMTE2MTcsIDAsIDAsIDExNDA5LCA2ODM3MywgNjM4MiwgMCwgNjQ2MzQsIAotICAgIDEyODI3OSwgMCwgMTE2MTIsIDAsIDY3NjAwLCAyMzc0LCAwLCA4NDc1LCAxMTYwOSwgNjYzMTMsIDAsIDAsIDUyODYsIAotICAgIDExOTI5NywgMCwgMCwgNjQ5MjUsIDEyMDI4MywgMTk0NTg0LCAxMTg5ODIsIDE5NDU4MywgNzcwNSwgMTE5NDIsIDExMzA1LCAKLSAgICAxOTQ1ODEsIDMzMDksIDAsIDAsIDAsIDAsIDY4MDIsIDAsIDQxNjUzLCAxMjgwLCAxMjQxLCA3MTY4LCAxMjA5NiwgMCwgCi0gICAgNjY2MTUsIDQyNTY1LCA0MTY1MSwgMCwgMCwgMCwgNDE2NTAsIDY2NTA3LCA2NjQ3MCwgMCwgMTI5MTQsIDQxNDkxLCAKLSAgICA2NjAxMCwgMTE5NTUyLCA2MDc4LCA5OTU0LCAwLCAxNDc1LCAwLCA5OTM4LCA2MDg0LCA5MTc1NDYsIDQxMDY0LCA0MTA2MiwgCi0gICAgMCwgMCwgMzI1NiwgMTI4NjQwLCA0MjA3NiwgNDMyNTIsIDc4ODIzLCA5MTc5MDYsIDg3MjcsIDAsIDY1ODc1LCAwLCAwLCAKLSAgICAxMjc3NjIsIDEwNTYyLCA3NDIxNSwgNDMwNjUsIDAsIDAsIDMyNDgsIDc0Mjk3LCAzMjYxLCA5MDE1LCAwLCAwLCAzNjM1LCAKLSAgICA2NDMzNywgMCwgMCwgMCwgNzE5NSwgMCwgMjAwNywgNjQ0MzEsIDAsIDAsIDAsIDAsIDYzNSwgMCwgMCwgNjU2MTMsIAotICAgIDc3OTA5LCA5MjQyMCwgNzM5OTcsIDAsIDAsIDExOTIxOCwgNzk4NCwgODYwMCwgNzQ0MzQsIDEyNzc3MCwgNDE3NiwgMCwgCi0gICAgMjAzNCwgOTI1NTEsIDEyMDgwNSwgNjU4OTEsIDEyNzAzOCwgMCwgMzE4LCAyMDM4LCAxMjg4NjAsIDc4NTk2LCAwLCAzNjQ5LCAKLSAgICAxMzE0OSwgNDIxNDUsIDQyNzk4LCAzNjM0LCAxMjAyOTEsIDExODkyNywgNjc2NzcsIDEyMDEyNCwgNzg2NiwgMCwgMTE0MDIsIAotICAgIDQyMTQ2LCAxMjAxMzQsIDc0MjM4LCA0MjY2NCwgMjg0OSwgMTI3MDM0LCAwLCA3OTM4LCAxMjk2MCwgMTc2MSwgMTE4MTIsIAotICAgIDY1Mzc5LCA2ODM4NiwgMTI4MTg1LCAxMTU5LCAwLCA2OTcyOSwgMCwgMCwgNzE3OCwgMTk0NjMyLCAwLCA0MTY4MCwgMCwgCi0gICAgMTI4MjAzLCAxMTUzNCwgMTUxNCwgMTE2NjgsIDY3ODkxLCA5MzEzLCA3MDE1LCAwLCA2Nzg3NywgMCwgMTI5ODksIDY2NDc0LCAKLSAgICA5MzY4LCAxMjg0OCwgMTYyNCwgNDMyNzAsIDAsIDE5NDU2MywgMTA4MTgsIDEyODIwNywgOTk1MywgMCwgNzg0MjEsIDExOTQsIAotICAgIDMyNDIsIDk3NjEsIDk1NTUsIDg1OTgsIDEyMDI5OSwgNjE2OSwgMTI4NzEsIDE1NTEsIDI3OTgsIDY1MTc2LCA0OTU4LCAKLSAgICA0Mjc1MiwgMTE5MDI1LCAwLCA2Nzg3NSwgMTIwMzAxLCAzNDk1LCA2NjY0OCwgMTk0NzY4LCAwLCA2ODM2NCwgMCwgNDg5MSwgCi0gICAgMCwgMTA2NDEsIDAsIDczNzQ2LCAwLCA2ODM1MiwgMCwgNzM3ODcsIDAsIDE5NDYzMywgNzE5OSwgNjQ5NTUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQyNjg1LCA0MjY3OSwgMTkzLCAwLCAwLCAwLCA0MjY2NywgMCwgNTI3MSwgOTIzMTgsIDkyNTE3LCAxMTg4ODIsIAotICAgIDEzNjIsIDEzMjk3LCAwLCAxMjgwOTQsIDAsIDAsIDczNzg5LCAwLCA2NjU4LCA0NDI2LCAwLCA5MjYyOCwgMCwgOTIzMTksIAotICAgIDcyNzYsIDQyMTYzLCA1MjIwLCAwLCAwLCAwLCAyNDE2LCAzMzEwLCA0MjcwMywgMCwgMzc5LCAwLCAxMjc5NzcsIDAsIDAsIAotICAgIDMyMjMsIDY1NDkyLCAxMjg0LCAxOTQ3NzEsIDQ1NDksIDAsIDAsIDAsIDEyNzc2MywgMTA4MDcsIDk1NTgsIDE5NDYxMywgMCwgCi0gICAgODUxNSwgODY4OCwgMTI4NjYsIDAsIDMyOTQsIDAsIDg1MjksIDEyODEwMSwgNDMzODUsIDc1NjQsIDAsIDQzMzI5LCAwLCAKLSAgICA5MjQ1OCwgNzM3NTcsIDY2NDU2LCA0MjM1OSwgMCwgMjAzMSwgMCwgNzIwMiwgMCwgMTI2NzYsIDQyNzI5LCA5MjE5OCwgCi0gICAgMzIxNSwgMCwgNzcxMCwgMTYxMCwgNzM4MDEsIDAsIDAsIDY1NjgyLCAwLCAxMjA1MzcsIDY1OTI0LCA5OTc0LCAyMjgsIAotICAgIDY2MzU0LCAxNTAxLCAwLCA2NDM5NSwgNTE3OSwgNzIwMCwgNjIyNSwgMCwgNjU3OTQsIDE3MjUsIDY1NTMzLCA4MTk2LCAKLSAgICA3NDc2LCA3NDM5OSwgMCwgMCwgNzE1MiwgODUwMiwgNTc2MiwgMTk2NywgNzQ4MywgMCwgMCwgODEwNCwgMCwgNzQ3NCwgCi0gICAgOTI1NzEsIDAsIDAsIDEwNDE0LCAxMzAwMSwgODE0MSwgMCwgNDI1MzcsIDE1NTcsIDQzNTk0LCAxMjg2NDIsIDYzMzAsIAotICAgIDY4MDUsIDg2MzEsIDI1NDUsIDEyMDY3MiwgMTI3MTY2LCAwLCA3NDE5MCwgMCwgMCwgMCwgNDI3NjIsIDAsIDQyOTE0LCAKLSAgICAxNjUwLCAyNjIsIDE2MzcsIDAsIDc5MDEsIDMyMzgsIDEyODE3MywgNDE4NjEsIDAsIDAsIDY1MTU4LCAxMDg2MCwgMCwgCi0gICAgNDM2NTgsIDc1MjcsIDAsIDQzMzE5LCA2NDE5LCAwLCA0NSwgMCwgNjQ1ODgsIDAsIDAsIDExOTgxMCwgNzE5NCwgNTI5MSwgCi0gICAgMCwgNDM2NjYsIDEzMTI5LCAwLCA5MDg0LCAwLCA4NzM3LCAwLCAxMjg4MSwgMCwgMTI5MDYsIDk2MzksIDc5MTIsIDI2MjAsIAotICAgIDAsIDAsIDAsIDAsIDE3OSwgNjU4OTYsIDAsIDY0NzU2LCAyODUzLCA3ODQ0MywgMTE4ODEzLCAwLCAxMTg5OTYsIDExOTAwOSwgCi0gICAgMjg1MCwgODA4NCwgMCwgNzM4NTAsIDI4MDEsIDkyMjg0LCA0MjA2OSwgMTE5ODM5LCA3NDc1NCwgMTE5ODQxLCA0MjA3MiwgCi0gICAgMTE5ODQzLCAxMTk4NDIsIDEwMzk4LCAwLCAwLCA4Mzc3LCAxMjcxMTYsIDgyNDUsIDY4NDAxLCAzMTU4LCA5MjM5NiwgCi0gICAgMzk4MywgNDM2NTYsIDkyMywgMTE5ODU3LCAxMTk4NTYsIDI5MiwgMTMwMDIsIDExOTg0NSwgMTE5ODQ0LCAzMjIxLCAxNzYzLCAKLSAgICA5MjQ2MywgNDYxMiwgMTE5ODUxLCAxMTk4NTAsIDcyNTMsIDEyNzExMCwgNjgzOTEsIDAsIDEwNzgyLCAzNjM3LCAxMjk5NiwgCi0gICAgNDM1NDIsIDAsIDY0NTc4LCAwLCAzMjI4LCA2OTYzNiwgODc4MywgMCwgMTE5NjE0LCAyNzMxLCAwLCAwLCA3ODU4NSwgCi0gICAgNDEwMiwgNzY5NiwgNzM4NzgsIDAsIDAsIDc4NTg2LCA0MzMxNiwgNDE3NywgMTEyODMsIDkwODksIDAsIDczOTk2LCAwLCAKLSAgICA2NDUwMCwgNDM2NzQsIDAsIDY0OTQ3LCAxODU2LCAwLCAwLCA2Mzc5LCAwLCAwLCAwLCAzMjA4LCAxMjk3NSwgNzQ3NzUsIDAsIAotICAgIDAsIDkyMzg5LCA3NDA3MiwgNTUyNjksIDAsIDAsIDAsIDIwMzMsIDc4NTc3LCA3ODU3NiwgMTk1MDI2LCA1NTI1NCwgNzc0MCwgCi0gICAgMCwgMCwgMCwgNzM5NjQsIDAsIDAsIDY3NjEyLCA2NTY3NCwgMCwgMCwgNDE2ODksIDAsIDc0MDA2LCA2NDkwOSwgNjY0NiwgCi0gICAgMTE3OTAsIDc0MDE5LCAwLCAxMjgwNjYsIDEyODAzMSwgODU2MSwgNDU3MywgMCwgNTMyNiwgMCwgMTIwNjA1LCA3MjMwLCAKLSAgICA4MjU3LCAwLCA4Nzc4LCA0MTY4OCwgMCwgNjU3NzYsIDIwNzEsIDgzMTQsIDY0NTksIDAsIDc2MjgsIDY1MDkyLCA3MzkwMywgCi0gICAgNjY3MjEsIDExMzQyLCAxMjg1NjEsIDAsIDAsIDEyODIyNiwgMTI3MDAxLCAwLCAxMTgxMCwgMTMxNjQsIDEwNzIzLCA5NjcsIAotICAgIDAsIDAsIDExOTQ2LCAwLCAzMjU3LCAwLCAxMjMwNywgMTg0NSwgMCwgNDM1MjYsIDAsIDAsIDE4ODYsIDQyMzQyLCAxMDA4OSwgCi0gICAgODcwLCA3NjQ4LCAzNDk5LCA4NjA5LCA3NjUyLCA4NzYsIDg3MSwgODc3LCAwLCA4NzgsIDQyMDE1LCA4NzksIDQzNjkyLCAKLSAgICA0NTYzLCAwLCAwLCA3NTkxLCA2NTg4NywgODY3LCA5NTIwLCA4NzIsIDAsIDg2OCwgODczLCA3NjQyLCAwLCA4NjksIDg3NCwgCi0gICAgNzY0NCwgMCwgODc1LCA3OTAsIDEyODMwMywgMCwgMCwgMCwgNjYxODIsIDAsIDU0MjksIDAsIDY2MTgwLCAwLCA2NjE4MSwgCi0gICAgNjg0NTIsIDAsIDAsIDQyMDY3LCAwLCA1NDMzLCAxMDY1NywgNzkxMSwgMTk0NjIyLCAxNTQ3LCA2NjE3NiwgNDIwMTIsIAotICAgIDEyMDU3NiwgNTQyNSwgNDk3NywgOTk5OSwgNTMxNywgNTQyMywgNDYxMSwgMCwgNjc2MzcsIDAsIDk2NzksIDc0MTIyLCAwLCAKLSAgICAwLCAwLCA2NjE5NCwgNDQxOCwgNjYxODQsIDQ2MjgsIDQyNDUsIDExOTY0OCwgMCwgMCwgMTg1MSwgMCwgMTI3MTg5LCAKLSAgICAxMTkwOCwgMCwgOTM2MCwgMTE4ODk3LCAwLCA0Mjc3NiwgNjYxODcsIDEyODM3LCA4ODI5LCA3NzExLCA5MjcxNCwgMCwgCi0gICAgOTIzMjEsIDQzMzE4LCAwLCA4ODA5LCAxMTk5NzQsIDAsIDAsIDEyMDYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgNzQyNywgCi0gICAgOTk1OCwgNDU4OCwgNDM2ODAsIDAsIDc0NDg0LCAwLCAyNDMzLCAwLCAxMTk2MjIsIDMzNTIsIDc0MzYzLCAwLCAwLCA3OTMsIAotICAgIDc0NDA0LCAwLCAzMDUsIDU2NywgNjc2NjIsIDg0MiwgMTI4NTE5LCA4MjA4LCAwLCA0MTY5NSwgMTY0NywgMTE4ODc3LCAwLCAKLSAgICA3ODM3LCA5MTc2MjUsIDgxOCwgNTMzNywgOTE3NjIyLCA5MTc2MjEsIDQxMzc2LCAxMTk5NzgsIDkxNzYxOCwgMTIwNTk0LCAKLSAgICA3NDA4NiwgOTE3NjE1LCA5MTc2MTQsIDkxNzYxMywgMTA5NzMsIDY2MzU5LCAxMzcyLCAxMjcxNzIsIDkxNzYwOCwgNDk2OSwgCi0gICAgMTI1NCwgOTE3NjA1LCA5MTc2MDQsIDkxNzYwMywgOTE3NjAyLCA2NTIyOCwgNzgyMjEsIDAsIDAsIDI4NDAsIDAsIAotICAgIDExOTk4MiwgMCwgMCwgMzI0NSwgOTA2OCwgNjgxOTQsIDY0NzI1LCAwLCAwLCAxMjk5MSwgMCwgMjY1MSwgMTI4NTI4LCAwLCAKLSAgICA5MTc2MTEsIDEyNzAyNiwgMTI4ODgzLCAwLCAwLCA0MzY0OCwgMTIwODEyLCAwLCA0MzMyMiwgOTI2NjIsIDAsIDAsIAotICAgIDY0MzcyLCA5MjY5OCwgMzIyNiwgNjU1LCA3NTIsIDc0NTcsIDc0NTYsIDc0NTIsIDMyODUsIDEyODc3OSwgMTI3ODIxLCAKLSAgICAxMTk5ODgsIDY1NjEwLCAyMzkxLCAwLCA5MjI0OCwgNjcxLCAyNTAsIDc0MzQsIDYxOCwgNjY4LCA2MTAsIDQyODAwLCAKLSAgICA3NDMxLCAxMTUyLCA0MjgwMSwgNjQwLCAxMjA2NjYsIDc0NDgsIDc0MzksIDYyOCwgMzkwNSwgNzM4MTAsIDAsIDEyODI2NiwgCi0gICAgNjQ3NDksIDY3ODUwLCAyMTA3LCAwLCAwLCA0NjA1LCAxMjgxNzQsIDAsIDQzMzcyLCA2NTk0NSwgMTI4ODM4LCAwLCAKLSAgICAxMTk1OTAsIDAsIDAsIDAsIDk4NywgNjkyNywgMTE1NzIsIDQyMjYxLCAxMTQ2NCwgMzM2NSwgOTk3MSwgMCwgMCwgCi0gICAgMTI4Mjk3LCAwLCAwLCAwLCAwLCAxMTMzNCwgNDMzMjYsIDEyNjA5LCAxMTUxOSwgMTE1MDMsIDU1MzAsIDUyMTAsIDAsIAotICAgIDQ2MjcsIDAsIDUyMDgsIDAsIDEyODg0MiwgMTAzMzIsIDUyMTgsIDc5NzYsIDkxNTYsIDAsIDMyNDQsIDU1MjksIDY5NjQ3LCAKLSAgICA3Mzg5NCwgMTI4ODUyLCA1NDMyLCA2NDk2NSwgNTUyNywgNzQwMzMsIDEwNTE2LCA3NzkwLCA1NTI4LCAwLCA0MjE0MCwgCi0gICAgMTIwMjgxLCAwLCAwLCA0MzU0NSwgOTg4NywgMCwgNDAwMCwgNzQyOSwgNzQyOCwgNjY1LCA3NDI0LCAzMjA2LCAxMjAyNzgsIAotICAgIDc4ODQsIDAsIDEyODU2NiwgOTE3OTg5LCAxMjg2NjYsIDIxMSwgMjUwOSwgMCwgMTIwNTczLCA2ODY3MiwgMzIyMCwgCi0gICAgNDIyMzUsIDAsIDEwNjkwLCA4OTUxLCA1MjE0LCA0MjQ3NCwgODExOCwgMCwgNzA0OCwgNDU5MCwgMTI3MjU4LCA1ODUyLCAwLCAKLSAgICAwLCAxMjcyNTksIDE3MDgsIDAsIDAsIDI2MjMsIDExOTQzLCAwLCA2OTIyNiwgMCwgNDY5OCwgNjY1MDksIDEwNjYsIAotICAgIDExOTkyMSwgNDcwMSwgMCwgMTIwMjg1LCA3NDIyNSwgMTE5MTE0LCA4MjY3LCAwLCAxMjcyNjUsIDAsIDc1MTYsIDAsIAotICAgIDI2MjUsIDAsIDgwMzQsIDc0MzA5LCAwLCAzNjMxLCAxMDk1NSwgNzg1MCwgMTIwMjkzLCA4NDE2LCAwLCAwLCAwLCA0MzM4NCwgCi0gICAgMTI2NjAsIDAsIDAsIDAsIDc0ODUwLCA0MTA2OSwgMCwgMTI4MTU2LCAxMjA5OSwgNDMxMCwgMTAwMzIsIDYyNTIsIDcxMywgCi0gICAgNzk5MCwgMCwgMzk5MCwgMCwgMCwgNjYzNjgsIDUwMTcsIDY0OTU2LCA3MDcxLCAwLCAxMTkxNDQsIDEwMzAsIDExODgwMCwgCi0gICAgMCwgOTUxMywgNDEwNTksIDkzNTcsIDAsIDE3NzMsIDAsIDEyMDM1MCwgMCwgNjMzOSwgNzc0NSwgOTg0NCwgMCwgNjQ2NTAsIAotICAgIDk0LCAxODgwLCA3NDc2NiwgMCwgODkwOCwgMCwgMTI4NzA3LCA2NTkxMywgNzg0NzAsIDEwNzUyLCAxMzAwMywgMCwgMCwgCi0gICAgNDEzMDcsIDg3MzIsIDEyMDMzOCwgMCwgMTc1NywgNjk2NCwgNDY5NiwgMCwgMCwgNjQ3ODUsIDczOTQsIDM2NDEsIDU0MTksIAotICAgIDEyODA1NSwgMCwgMTI3ODgzLCAwLCAxMjAzNDQsIDQzOTg4LCAwLCA4NjEwLCA0MzA2MiwgNzU5MiwgODU2LCA3NDI5OSwgCi0gICAgOTM2LCAxMzI4OSwgMTI3NTIxLCA0MzE3MSwgMTQ1OSwgMCwgNjUyNDMsIDc4NjM4LCAxOTk1MywgMCwgMTUwNCwgMTE5MTA4LCAKLSAgICAwLCAxMjkxMywgNzQyMDYsIDc1MjksIDAsIDAsIDAsIDEyMDc4MiwgNDExMywgMCwgMjM3MiwgMzM2LCAwLCA3NTA5LCAKLSAgICAxMjE1MiwgMCwgNjgyLCA2NjQ1OCwgNDE1MDUsIDAsIDY0NzQzLCAxMDU5MywgMTcwMywgMCwgMCwgODAzMywgMCwgMCwgCi0gICAgOTgxMCwgMTI3MjY5LCAwLCAxMjk3MCwgMCwgNDIzNTEsIDEwMTA5LCAwLCAwLCAxOTQ2OTMsIDAsIDExOTI0NywgMCwgMCwgCi0gICAgNzQyOTEsIDE5NjUsIDcwNjksIDQzMzEyLCAwLCA3Mzg4NywgMCwgMjA4NywgNjQzNzAsIDYzMTQsIDQxNzE0LCA4NTAxLCAwLCAKLSAgICAwLCA3NDIzOSwgNDEzMTcsIDkyNjE0LCAyMDkxLCA3NDU0NSwgMjA5MCwgMCwgOTM1MywgNzExNywgMjA3NywgNzc4ODYsIDAsIAotICAgIDEwNDk4LCAyMDgzLCA3Nzg4OCwgMCwgMCwgMTE5MjM2LCA2MzQsIDAsIDAsIDAsIDY5Nzc5LCA0MTY1LCA4NzQ2LCAwLCAKLSAgICA5NjU0LCAxMjg1NiwgNjkyNCwgMCwgNzA2NiwgMCwgMCwgMTI4MTM1LCA0MTAzNywgNDI2OTIsIDc3ODYsIDEyOTU5LCAKLSAgICA0MTAzOSwgMCwgMCwgNjgwLCA2Mjc0LCAxMjgyMDAsIDExODEsIDcwNTYsIDMxNzQsIDAsIDAsIDkyNjY4LCA2NTY2NSwgCi0gICAgMTI3Mzc1LCAwLCA2OTIwLCAwLCA5MjI5NSwgMCwgMTE4OTY1LCAwLCA2NDY0NCwgMTI2OTgxLCAwLCAwLCA0MTAyOCwgMCwgCi0gICAgNjIzMSwgMjYxMywgNjUzMDIsIDQwOTg5LCAwLCAxOTQ2OTYsIDAsIDQyNzYwLCAwLCAwLCAwLCA0MDk4NywgNDY2NywgMCwgCi0gICAgMCwgODgyOCwgMCwgMCwgMTI0NiwgNDc0NiwgMCwgMCwgMTEwMjEsIDQ3NDksIDkyNjc1LCAwLCA5MjEsIDQ3NDQsIDAsIAotICAgIDEyNzAyLCAyNDIsIDAsIDE1NjYsIDgyMTcsIDAsIDY0NjUzLCA3ODM4NiwgMTI4MTIxLCA3NDAzNiwgNzQ1MDUsIDQzMjc0LCAKLSAgICA1MzEzLCA5NTEsIDAsIDAsIDAsIDc2MDQsIDAsIDQwMDksIDEyNzgxNiwgMCwgMTIwNTYyLCAwLCAwLCA2NDg2MCwgCi0gICAgMTE5MTM4LCAxMTkwNjksIDAsIDEyNzM3MCwgNDA0OCwgMCwgMCwgMTIwNTk2LCAxNjQ2LCA3Nzg5MCwgNjQ1MzQsIDczOTk1LCAKLSAgICAxMjA3MDUsIDAsIDExOTg5MCwgMjU3OSwgMTE5OTA1LCAzMTc3LCAxMTM1NywgOTA5OSwgNDEwNywgMzQ0MSwgMTE5ODk0LCAKLSAgICAyOTc1LCA3NDQ0MiwgOTgyMiwgMCwgNTUyMjAsIDEwMDg0LCA3Mzk0MywgMTE4ODQwLCAwLCA5MTc1NjIsIDAsIDMzOTksIAotICAgIDk4NTEsIDAsIDExOTA5LCA5MDU5LCAwLCA3Njg3LCAwLCA2Nzg5LCAwLCAwLCAwLCAwLCAwLCAwLCAxNzc3LCA5MTUxLCAKLSAgICAxMTM3LCA2OTc2NywgNzQ5LCA0MjM2NiwgMCwgNTM4NSwgMTI4NTc0LCAxMjgyMTgsIDAsIDAsIDU5ODksIDAsIDAsIAotICAgIDEyODA5MSwgMCwgNDE2ODUsIDY5MjIzLCAwLCA5NzY5LCA0MTY4NCwgMCwgNTE5LCAwLCAxMTc0MCwgNTc2NiwgMCwgMCwgCi0gICAgMjYwMCwgODg0OCwgMTIwMTM4LCA0MTI5NywgMCwgMzY2NiwgNzQ0NzMsIDQxMzAwLCA3NDQ2OCwgNjUxNjAsIDAsIDY5Njg4LCAKLSAgICA2OTc3MSwgNzQ0NzksIDAsIDY1NTgsIDAsIDAsIDY5NzY1LCAxMjA3NTAsIDI1MiwgMCwgNDEzMDIsIDAsIDAsIDAsIAotICAgIDY5NzYzLCAwLCAxMTcyOSwgODcxOSwgOTA2MCwgMCwgMTIwMTM5LCAxMDc2MSwgMCwgMCwgMCwgMTE4NzkyLCAxMTczNCwgMCwgCi0gICAgMTE3MzAsIDAsIDk1OTMsIDU3NTcsIDI0MDMsIDY0ODA4LCA1NTI3NSwgMCwgMTE3MjgsIDQzNTcyLCAwLCAwLCA3NzY0LCAwLCAKLSAgICAxMTA5NCwgMTIwODI1LCAwLCAwLCA0MjgyLCA4Mjk4LCAwLCAwLCAwLCAwLCAwLCA2NDQ0OSwgMCwgMTI3NTA5LCA2Mzg1NCwgCi0gICAgODQ1NiwgMCwgNzQ3ODMsIDY1NjcwLCAwLCA3ODI1MCwgMCwgNzc3NCwgMTA2MDcsIDk3OTIsIDAsIDAsIDAsIDAsIAotICAgIDEyMDc2NCwgMCwgMTAwMTksIDc0NzYyLCAwLCAzNDU4LCA0MzY1LCAwLCAwLCAzNjQ3LCAwLCAyNjAyLCAxMjgzNDEsIDAsIAotICAgIDE5NDcwNywgNDExMzUsIDAsIDAsIDAsIDY0NjMxLCAxNzIsIDQ5NzEsIDQxMjE5LCA0MTEzNywgMTg4OSwgNzIzOCwgNjU0NSwgCi0gICAgMCwgOTIxOTMsIDc1OTcsIDEwNTI4LCAwLCAwLCAzNzMyLCA3MzkxMCwgMTk0NTg4LCA1MzQ0LCAwLCA0MzM2NiwgNDMzNjMsIAotICAgIDkwNjIsIDExOTI1MiwgMCwgMCwgMCwgNjQ0NzksIDkyMzIsIDkyNTk2LCAwLCAwLCAxOTQ3MTIsIDEwOTAwLCA0MTUzMSwgCi0gICAgMTI2MywgMzcyMCwgMTIwNDgsIDAsIDY0MjkyLCA0MTUyNCwgNzIyNywgMTE5NjM1LCA2MDk5LCA0MTUzNCwgMCwgMTI3MzU0LCAKLSAgICAxMjczNDUsIDI5OSwgMCwgODUyNSwgMTI3MzQ3LCAzNTI0LCA5MTc1NjUsIDg4MzEsIDEyNzM0OSwgOTI1NjQsIDMwNzUsIAotICAgIDY3ODY3LCAxMjczNTIsIDAsIDY2MzYyLCAwLCA2NDM1MywgMCwgMCwgNTg0NSwgMCwgMCwgMCwgMjU4MSwgODIwMCwgCi0gICAgNjUxMTQsIDY4NDYwLCAwLCA0MzI4MywgNTU1MSwgMCwgMTIwNzM1LCAwLCA2MzQwLCAxMTg4NTUsIDAsIDc4MTM0LCA4NjgwLCAKLSAgICA3MjA0LCAwLCAyNTg4LCAyOTE0LCA3MDExLCA1NTI4MSwgMCwgMjQ3MSwgMTk0NjMxLCAyODgzLCAyNzQ5LCAxMTk1NjMsIAorICAgIDc0MjcwLCAxMjgyODksIDAsIDAsIDAsIDE0OTYsIDc0NywgMCwgOTQyLCAyMzc4LCA0MzEzNiwgMTI3OTA1LCA4NDY2LCAKKyAgICA5ODM1NzUsIDkzMjAsIDgwMDEsIDEyMzIsIDgxMzksIDExNjE3LCAwLCAwLCAxMTQwOSwgNjgzNzMsIDYzODIsIDAsIAorICAgIDY0NjM0LCAxMjgyNzksIDAsIDExNjEyLCAwLCA2NzYwMCwgMjM3NCwgOTQwNjYsIDg0NzUsIDExNjA5LCA2NjMxMywgMCwgMCwgCisgICAgNTI4NiwgMTE5Mjk3LCAwLCAwLCA2NDkyNSwgMTIwMjgzLCAxOTQ1ODQsIDExODk4MiwgMTk0NTgzLCA3NzA1LCAxMTk0MiwgCisgICAgMTEzMDUsIDE5NDU4MSwgMzMwOSwgMCwgMCwgMCwgMCwgNjgwMiwgMCwgNDE2NTMsIDEyODAsIDEyNDEsIDcxNjgsIDEyMDk2LCAKKyAgICAwLCA2NjYxNSwgNDI1NjUsIDQxNjUxLCAwLCAwLCAwLCA0MTY1MCwgNjY1MDcsIDY2NDcwLCAwLCAxMjkxNCwgNDE0OTEsIAorICAgIDY2MDEwLCAxMTk1NTIsIDYwNzgsIDk5NTQsIDAsIDE0NzUsIDExOTI0NywgOTkzOCwgNjA4NCwgOTE3NTQ2LCA0MTA2NCwgCisgICAgNDEwNjIsIDAsIDAsIDMyNTYsIDEwMTg5LCA0MjA3NiwgNDMyNTIsIDc4ODIzLCA5MTc5MDYsIDg3MjcsIDAsIDY1ODc1LCAwLCAKKyAgICAwLCAxMjc3NjIsIDEwNTYyLCA3NDIxNSwgNDMwNjUsIDAsIDAsIDMyNDgsIDc0Mjk3LCAzMjYxLCA5MDE1LCA3MTM1MSwgMCwgCisgICAgMzYzNSwgNjQzMzcsIDk4MzI3MywgMCwgMCwgNzE5NSwgMCwgMjAwNywgNjQ0MzEsIDAsIDAsIDAsIDAsIDYzNSwgMCwgMCwgCisgICAgNjU2MTMsIDc3OTA5LCA5MjQyMCwgNzM5OTcsIDAsIDAsIDExOTIxOCwgNzk4NCwgODYwMCwgNzQ0MzQsIDEyNzc3MCwgCisgICAgNDE3NiwgNzAwNTAsIDIwMzQsIDkyNTUxLCAxMjA4MDUsIDY1ODkxLCAxMjcwMzgsIDAsIDMxOCwgMjAzOCwgMTI4ODYwLCAKKyAgICA3ODU5NiwgMCwgMzY0OSwgMTMxNDksIDQyMTQ1LCA0Mjc5OCwgMzYzNCwgMTIwMjkxLCAxMTg5MjcsIDY3Njc3LCAxMjAxMjQsIAorICAgIDc4NjYsIDAsIDExNDAyLCA0MjE0NiwgOTQwMzIsIDc0MjM4LCA0MjY2NCwgMjg0OSwgMTI3MDM0LCAwLCA3OTM4LCAxMjk2MCwgCisgICAgMTc2MSwgMTE4MTIsIDY1Mzc5LCA2ODM4NiwgMTI4MTg1LCAxMTU5LCAwLCA2OTcyOSwgMCwgMCwgNzE3OCwgMTk0NjMyLCAwLCAKKyAgICA0MTY4MCwgMCwgMTI4MjAzLCAxMTUzNCwgMTUxNCwgMTE2NjgsIDY3ODkxLCA5MzEzLCA3MDE1LCAwLCA2Nzg3NywgCisgICAgMTk0NTY3LCAxMjk4OSwgNjY0NzQsIDkzNjgsIDEyODQ4LCAxNjI0LCA0MzI3MCwgMCwgNzQyNzgsIDEwODE4LCAxMjY2NDQsIAorICAgIDk5NTMsIDAsIDc4NDIxLCAxMTk0LCAzMjQyLCA5NzYxLCA5NTU1LCA4NTk4LCAxMjAyOTksIDYxNjksIDEyODcxLCAxNTUxLCAKKyAgICAyNzk4LCA2NTE3NiwgNDk1OCwgNDI3NTIsIDExOTAyNSwgMCwgNjc4NzUsIDEyMDMwMSwgMzQ5NSwgNjY2NDgsIDE5NDc2OCwgCisgICAgMCwgNjgzNjQsIDk4MzIyMiwgNDg5MSwgMCwgMTA2NDEsIDAsIDczNzQ2LCAwLCA2ODM1MiwgMCwgNzM3ODcsIDE5NDgyOSwgCisgICAgMTk0NjMzLCA3MTk5LCA2NDk1NSwgMCwgMCwgMCwgMCwgMCwgNDI2ODUsIDQyNjc5LCAxOTMsIDAsIDAsIDAsIDQyNjY3LCAwLCAKKyAgICA1MjcxLCA5MjMxOCwgOTI1MTcsIDExODg4MiwgMTM2MiwgMTMyOTcsIDAsIDEyODA5NCwgMCwgOTgzMzIzLCA3Mzc4OSwgMCwgCisgICAgNjY1OCwgNDQyNiwgMCwgOTI2MjgsIDk4MzgzMywgOTIzMTksIDcyNzYsIDQyMTYzLCA1MjIwLCAwLCAwLCA5ODMzMjIsIAorICAgIDI0MTYsIDMzMTAsIDQyNzAzLCAwLCAzNzksIDAsIDQzNzU1LCAwLCAwLCAzMjIzLCA2NTQ5MiwgMTI4NCwgMTk0NzcxLCAKKyAgICA0NTQ5LCAwLCAwLCA5ODMxNTQsIDEyNzc2MywgMTA4MDcsIDk1NTgsIDE5NDYxMywgMCwgODUxNSwgODY4OCwgMTI4NjYsIAorICAgIDY1MzA4LCAzMjk0LCA5ODMzMjQsIDg1MjksIDEyODEwMSwgNDMzODUsIDc1NjQsIDAsIDQzMzI5LCAwLCA5MjQ1OCwgCisgICAgNzM3NTcsIDY2NDU2LCA0MjM1OSwgMCwgMjAzMSwgMCwgNzIwMiwgMCwgMTI2NzYsIDQyNzI5LCA5MjE5OCwgMzIxNSwgMCwgCisgICAgNzcxMCwgMTYxMCwgNzM4MDEsIDAsIDAsIDY1NjgyLCAwLCAxMjA1MzcsIDY1OTI0LCA5OTc0LCAyMjgsIDY2MzU0LCAxNTAxLCAKKyAgICAwLCA2NDM5NSwgNTE3OSwgNzIwMCwgNjIyNSwgMCwgNjU3OTQsIDE3MjUsIDY1NTMzLCA4MTk2LCA3NDc2LCA3NDM5OSwgMCwgCisgICAgMCwgNzE1MiwgODUwMiwgNTc2MiwgMTk2NywgNzQ4MywgMCwgMCwgODEwNCwgMCwgNzQ3NCwgNzc5NzksIDAsIDEyNjUwNywgCisgICAgMTA0MTQsIDEzMDAxLCA4MTQxLCAwLCA0MjUzNywgMTU1NywgNDM1OTQsIDEyODY0MiwgNjMzMCwgNjgwNSwgODYzMSwgCisgICAgMjU0NSwgNzAwNTIsIDEyNzE2NiwgMCwgNzQxOTAsIDAsIDAsIDk4Mzc3NywgNDI3NjIsIDAsIDQyOTE0LCAxNjUwLCAyNjIsIAorICAgIDE2MzcsIDAsIDc5MDEsIDMyMzgsIDEyODE3MywgNDE4NjEsIDAsIDEyODU4NSwgNjUxNTgsIDEwODYwLCA5NDA1OSwgCisgICAgNDM2NTgsIDc1MjcsIDAsIDQzMzE5LCA2NDE5LCAwLCA0NSwgMCwgNjQ1ODgsIDkzOTg5LCAwLCAxMTk4MTAsIDcxOTQsIAorICAgIDUyOTEsIDAsIDQzNjY2LCAxMzEyOSwgMCwgOTA4NCwgMCwgODczNywgMCwgMTI4ODEsIDAsIDEyOTA2LCA5NjM5LCA3OTEyLCAKKyAgICAyNjIwLCAwLCAwLCAwLCA5ODM4NjYsIDE3OSwgNjU4OTYsIDAsIDY0NzU2LCAyODUzLCA3ODQ0MywgMTE4ODEzLCA5ODM4ODEsIAorICAgIDExODk5NiwgMTE5MDA5LCAyODUwLCA4MDg0LCA5ODMwODUsIDczODUwLCAyODAxLCA5MjI4NCwgNDIwNjksIDExOTgzOSwgCisgICAgNzQ3NTQsIDExOTg0MSwgNDIwNzIsIDExOTg0MywgMTE5ODQyLCAxMDM5OCwgOTgzMDU2LCAwLCA4Mzc3LCAxMjcxMTYsIAorICAgIDgyNDUsIDY4NDAxLCAzMTU4LCA5MjM5NiwgMzk4MywgNDM2NTYsIDkyMywgMTE5ODU3LCAxMTk4NTYsIDI5MiwgMTMwMDIsIAorICAgIDExOTg0NSwgMTE5ODQ0LCAzMjIxLCAxNzYzLCA5MjQ2MywgNDYxMiwgMTE5ODUxLCAxMTk4NTAsIDcyNTMsIDEyNzExMCwgCisgICAgNjgzOTEsIDAsIDEwNzgyLCAzNjM3LCAxMjk5NiwgNDM1NDIsIDAsIDY0NTc4LCA5ODM2NjYsIDMyMjgsIDY5NjM2LCA4NzgzLCAKKyAgICAwLCAxMTk2MTQsIDI3MzEsIDAsIDAsIDc4NTg1LCA0MTAyLCA3Njk2LCA3Mzg3OCwgMCwgMCwgNzg1ODYsIDQzMzE2LCAKKyAgICA0MTc3LCAxMTI4MywgOTA4OSwgMCwgNzM5OTYsIDk4MzE3MywgNjQ1MDAsIDQzNjc0LCAwLCA2NDk0NywgMTg1NiwgMCwgMCwgCisgICAgNjM3OSwgMCwgMCwgMCwgMzIwOCwgMTI5NzUsIDc0Nzc1LCAxMjczODAsIDk4MzkyMiwgOTIzODksIDc0MDcyLCA1NTI2OSwgCisgICAgMCwgMCwgOTgzNjc0LCAyMDMzLCA3ODU3NywgNzg1NzYsIDE5NTAyNiwgNTUyNTQsIDc3NDAsIDAsIDAsIDAsIDczOTY0LCAwLCAKKyAgICA5Mzk4OCwgNjc2MTIsIDY1Njc0LCAxMjgyNDQsIDk0MTEwLCA0MTY4OSwgMCwgNzQwMDYsIDY0OTA5LCA2NjQ2LCAxMTc5MCwgCisgICAgNzQwMTksIDAsIDEyODA2NiwgMTI4MDMxLCA4NTYxLCA0NTczLCAwLCA1MzI2LCAwLCAxMjA2MDUsIDcyMzAsIDgyNTcsIDAsIAorICAgIDg3NzgsIDQxNjg4LCAwLCA2NTc3NiwgMjA3MSwgODMxNCwgNjQ1OSwgMCwgNzYyOCwgNjUwOTIsIDczOTAzLCA2NjcyMSwgCisgICAgMTEzNDIsIDEyODU2MSwgMCwgMCwgMTI4MjI2LCAxMjcwMDEsIDAsIDExODEwLCAxMzE2NCwgMTA3MjMsIDk2NywgOTgzOTQyLCAKKyAgICAxMjY0NjksIDExOTQ2LCAwLCAzMjU3LCAwLCAxMjMwNywgMTg0NSwgOTgzMTU3LCA0MzUyNiwgMCwgMCwgMTg4NiwgNDIzNDIsIAorICAgIDEwMDg5LCA4NzAsIDc2NDgsIDM0OTksIDg2MDksIDc2NTIsIDg3NiwgODcxLCA4NzcsIDAsIDg3OCwgNDIwMTUsIDg3OSwgCisgICAgNDM2OTIsIDQ1NjMsIDAsIDAsIDc1OTEsIDY1ODg3LCA4NjcsIDk1MjAsIDg3MiwgMTI2NjA3LCA4NjgsIDg3MywgNzY0MiwgCisgICAgMCwgODY5LCA4NzQsIDc2NDQsIDEyMDY3NCwgODc1LCA3OTAsIDEyODMwMywgMCwgMCwgMCwgNjYxODIsIDk4MzI1MCwgCisgICAgNTQyOSwgMTk1MDU1LCA2NjE4MCwgMTI2NDgwLCA2NjE4MSwgNjg0NTIsIDk4MzI4MSwgOTgzMjQyLCA0MjA2NywgMCwgCisgICAgNTQzMywgMTA2NTcsIDc5MTEsIDE5NDYyMiwgMTU0NywgNjYxNzYsIDQyMDEyLCAxMjA1NzYsIDU0MjUsIDQ5NzcsIDk5OTksIAorICAgIDUzMTcsIDU0MjMsIDQ2MTEsIDAsIDY3NjM3LCAwLCA5Njc5LCA3NDEyMiwgMCwgMCwgMCwgNjYxOTQsIDQ0MTgsIDY2MTg0LCAKKyAgICA0NjI4LCA0MjQ1LCAxMTk2NDgsIDAsIDAsIDE4NTEsIDAsIDEyNzE4OSwgMTE5MDgsIDAsIDkzNjAsIDExODg5NywgCisgICAgOTgzMjcwLCA0Mjc3NiwgNjYxODcsIDEyODM3LCA4ODI5LCA3NzExLCA5MjcxNCwgMCwgOTIzMjEsIDQzMzE4LCAwLCA4ODA5LCAKKyAgICA2OTg4MSwgMCwgOTgzMTQyLCAxMjA2MDQsIDk4MzA1MiwgOTgzODczLCAwLCA5ODMyNjIsIDAsIDAsIDc0MjcsIDk5NTgsIAorICAgIDQ1ODgsIDQzNjgwLCAwLCA3NDQ4NCwgMTk0OTY4LCAyNDMzLCAwLCAxMTk2MjIsIDMzNTIsIDc0MzYzLCA5ODM4NzYsIDAsIAorICAgIDc5MywgNzQ0MDQsIDAsIDMwNSwgNTY3LCA2NzY2MiwgODQyLCAxMjg1MTksIDgyMDgsIDAsIDQxNjk1LCAxNjQ3LCAKKyAgICAxMTg4NzcsIDAsIDc4MzcsIDkxNzYyNSwgODE4LCA1MzM3LCAxOTQ2MjgsIDkxNzYyMSwgNDEzNzYsIDExOTk3OCwgCisgICAgMTI2NTc2LCAxMjA1OTQsIDc0MDg2LCA5MTc2MTUsIDkxNzYxNCwgOTE3NjEzLCAxMDk3MywgNjYzNTksIDEzNzIsIAorICAgIDEyNzE3MiwgOTE3NjA4LCA0OTY5LCAxMjU0LCA5MTc2MDUsIDkxNzYwNCwgOTM5NjcsIDkxNzYwMiwgNjUyMjgsIDc4MjIxLCAKKyAgICAxMjY2MTIsIDAsIDI4NDAsIDAsIDExOTk4MiwgOTgzOTMwLCAwLCAzMjQ1LCA5MDY4LCA2ODE5NCwgNjQ3MjUsIDAsIDAsIAorICAgIDEyOTkxLCAwLCAyNjUxLCA2ODAxNiwgOTgzMjU3LCA5MTc2MTEsIDEyNzAyNiwgMTI4ODgzLCAwLCAwLCA0MzY0OCwgCisgICAgMTIwODEyLCAwLCA0MzMyMiwgOTI2NjIsIDAsIDAsIDY0MzcyLCA5MjY5OCwgMzIyNiwgNjU1LCA3NTIsIDc0NTcsIDc0NTYsIAorICAgIDc0NTIsIDMyODUsIDEyODc3OSwgMTI3ODIxLCAxMTk5ODgsIDY1NjEwLCAyMzkxLCAwLCA5MjI0OCwgNjcxLCAyNTAsIAorICAgIDc0MzQsIDYxOCwgNjY4LCA2MTAsIDQyODAwLCA3NDMxLCAxMTUyLCA0MjgwMSwgNjQwLCAxMjA2NjYsIDc0NDgsIDc0MzksIAorICAgIDYyOCwgMzkwNSwgNzM4MTAsIDAsIDEyODI2NiwgNjQ3NDksIDY3ODUwLCAyMTA3LCAwLCAwLCA0NjA1LCAxMjgxNzQsIAorICAgIDk4MzE5MiwgNDMzNzIsIDY1OTQ1LCAxMjg4MzgsIDAsIDExOTU5MCwgMCwgMCwgMCwgOTg3LCA2OTI3LCAxMTU3MiwgCisgICAgNDIyNjEsIDExNDY0LCAzMzY1LCA5OTcxLCAwLCAwLCAxMjgyOTcsIDAsIDAsIDAsIDAsIDExMzM0LCA0MzMyNiwgMTI2MDksIAorICAgIDExNTE5LCAxMTUwMywgNTUzMCwgNTIxMCwgMCwgNDYyNywgOTgzODgzLCA1MjA4LCAwLCAxMjg4NDIsIDEwMzMyLCA1MjE4LCAKKyAgICA3OTc2LCA5MTU2LCAwLCAzMjQ0LCA1NTI5LCA2OTY0NywgNzM4OTQsIDEyODg1MiwgNTQzMiwgNjQ5NjUsIDU1MjcsIAorICAgIDc0MDMzLCAxMDUxNiwgNzc5MCwgNTUyOCwgMCwgNDIxNDAsIDEyMDI4MSwgMCwgMCwgNDM1NDUsIDk4ODcsIDAsIDQwMDAsIAorICAgIDc0MjksIDc0MjgsIDY2NSwgNzQyNCwgMzIwNiwgMTIwMjc4LCA3ODg0LCAwLCAxMjg1NjYsIDkxNzk4OSwgMTI4NjY2LCAKKyAgICAyMTEsIDI1MDksIDEyODg1OCwgMTIwNTczLCA2ODY3MiwgMzIyMCwgNDIyMzUsIDAsIDEwNjkwLCA4OTUxLCA1MjE0LCAKKyAgICA0MjQ3NCwgODExOCwgMCwgNzA0OCwgNDU5MCwgMTI3MjU4LCA1ODUyLCAwLCAwLCAxMjcyNTksIDE3MDgsIDAsIDk4MzE2NSwgCisgICAgMjYyMywgMTE5NDMsIDAsIDY5MjI2LCAwLCA0Njk4LCA2NjUwOSwgMTA2NiwgMTE5OTIxLCA0NzAxLCA5ODM4NjcsIAorICAgIDEyMDI4NSwgNzQyMjUsIDk0MTExLCA4MjY3LCAwLCAxMjcyNjUsIDAsIDc1MTYsIDAsIDI2MjUsIDk4Mzk2OCwgODAzNCwgCisgICAgNzQzMDksIDAsIDM2MzEsIDEwOTU1LCA3ODUwLCAxMjAyOTMsIDg0MTYsIDAsIDAsIDAsIDQzMzg0LCAxMjY2MCwgMCwgMCwgCisgICAgMCwgNzQ4NTAsIDQxMDY5LCAwLCAxMjgxNTYsIDEyMDk5LCA0MzEwLCAxMDAzMiwgNjI1MiwgNzEzLCA3OTkwLCAwLCAzOTkwLCAKKyAgICAwLCA5ODMyNTQsIDY2MzY4LCA1MDE3LCA2NDk1NiwgNzA3MSwgMCwgMTE5MTQ0LCAxMDMwLCAxMTg4MDAsIDk4MzEyMCwgCisgICAgOTUxMywgNDEwNTksIDkzNTcsIDAsIDE3NzMsIDAsIDEyMDM1MCwgMCwgNjMzOSwgNzc0NSwgOTg0NCwgMCwgNjQ2NTAsIDk0LCAKKyAgICAxODgwLCA3NDc2NiwgOTgzODI5LCA4OTA4LCAwLCAxMjg3MDcsIDY1OTEzLCA3ODQ3MCwgMTA3NTIsIDEzMDAzLCAwLCAKKyAgICAxMjY1NzIsIDQxMzA3LCA4NzMyLCAxMjAzMzgsIDAsIDE3NTcsIDY5NjQsIDQ2OTYsIDAsIDEyMDMzNSwgNjQ3ODUsIDczOTQsIAorICAgIDM2NDEsIDU0MTksIDEyODA1NSwgMCwgMTI3ODgzLCAwLCAxMjAzNDQsIDQzOTg4LCAwLCA4NjEwLCA0MzA2MiwgNzU5MiwgCisgICAgODU2LCA3NDI5OSwgOTM2LCAxMzI4OSwgNjk4OTQsIDQzMTcxLCAxNDU5LCAwLCA2NTI0MywgNzg2MzgsIDE5OTUzLCAwLCAKKyAgICAxNTA0LCA3MDA2NCwgMCwgMTI5MTMsIDc0MjA2LCA3NTI5LCAwLCAxMjg2OTksIDk4Mzk0OCwgMTIwNzgyLCA0MTEzLCAwLCAKKyAgICAyMzcyLCAzMzYsIDAsIDc1MDksIDEyMTUyLCAwLCA2ODIsIDY2NDU4LCA0MTUwNSwgMCwgNjQ3NDMsIDEwNTkzLCAxNzAzLCAKKyAgICAwLCA5ODM5NDYsIDgwMzMsIDY5OTUzLCAwLCA5ODEwLCAxMjcyNjksIDAsIDEyOTcwLCAwLCA0MjM1MSwgMTAxMDksIAorICAgIDkxNzYyMywgMCwgMTk0NjkzLCAwLCA5MjY5MCwgMCwgMCwgNzQyOTEsIDE5NjUsIDcwNjksIDQzMzEyLCAwLCA3Mzg4NywgMCwgCisgICAgMjA4NywgNjQzNzAsIDYzMTQsIDQxNzE0LCA4NTAxLCAwLCAwLCA3NDIzOSwgNDEzMTcsIDkyNjE0LCAyMDkxLCA3NDU0NSwgCisgICAgMjA5MCwgMCwgOTM1MywgNzExNywgMjA3NywgNzc4ODYsIDAsIDEwNDk4LCAyMDgzLCA3Nzg4OCwgMCwgMCwgMTE5MjM2LCAKKyAgICA2MzQsIDAsIDAsIDAsIDY5Nzc5LCA0MTY1LCA4NzQ2LCAwLCA5NjU0LCAxMjg1NiwgNjkyNCwgMCwgNzA2NiwgOTgzNzEwLCAKKyAgICAwLCAxMjgxMzUsIDQxMDM3LCA0MjY5MiwgNzc4NiwgMTI5NTksIDQxMDM5LCAxMjc0ODMsIDAsIDY4MCwgMjMwMiwgCisgICAgMTI4MjAwLCAxMTgxLCA3MDU2LCAzMTc0LCAxMjY1MTYsIDAsIDkyNjY4LCA2NTY2NSwgMTI3Mzc1LCAxMjY1MDYsIDY5MjAsIAorICAgIDAsIDkyMjk1LCAwLCAxMTg5NjUsIDAsIDY0NjQ0LCAxMjY5ODEsIDc0MTE5LCAwLCA0MTAyOCwgMCwgNjIzMSwgMjYxMywgCisgICAgNjUzMDIsIDQwOTg5LCAwLCAxOTQ2OTYsIDAsIDQyNzYwLCAwLCA5ODM1NjYsIDAsIDQwOTg3LCA0NjY3LCAwLCA5ODM5MjMsIAorICAgIDg4MjgsIDAsIDAsIDEyNDYsIDQ3NDYsIDAsIDAsIDExMDIxLCA0NzQ5LCA5MjY3NSwgMCwgOTIxLCA0NzQ0LCAwLCAxMjcwMiwgCisgICAgMjQyLCAwLCAxNTY2LCA4MjE3LCAwLCA2NDY1MywgNzgzODYsIDEyODEyMSwgNzQwMzYsIDc0NTA1LCA0MzI3NCwgNTMxMywgCisgICAgOTUxLCAwLCAwLCA5ODM4NTgsIDc2MDQsIDk4MzI4MiwgNDAwOSwgMTI3ODE2LCA5ODM3MDEsIDEyMDU2MiwgMCwgOTgzNzExLCAKKyAgICA2NDg2MCwgMTE5MTM4LCAxMTkwNjksIDAsIDEyNzM3MCwgNDA0OCwgOTgzNTk4LCAwLCA3MDAyNCwgMTY0NiwgNzc4OTAsIAorICAgIDY0NTM0LCA3Mzk5NSwgMTIwNzA1LCAwLCAxMTk4OTAsIDI1NzksIDExOTkwNSwgMzE3NywgMTEzNTcsIDkwOTksIDQxMDcsIAorICAgIDM0NDEsIDExOTg5NCwgMjk3NSwgNzQ0NDIsIDk4MjIsIDk4MzkyNiwgNTUyMjAsIDEwMDg0LCA3Mzk0MywgMTE4ODQwLCAwLCAKKyAgICA5MTc1NjIsIDE5NDYxMCwgMzM5OSwgOTg1MSwgOTgzNzA4LCAxMTkwOSwgOTA1OSwgMCwgNzY4NywgMCwgNjc4OSwgMCwgMCwgCisgICAgMCwgNzEzNjcsIDAsIDAsIDE3NzcsIDkxNTEsIDExMzcsIDY5NzY3LCA3NDksIDQyMzY2LCAwLCA1Mzg1LCAxMjg1NzQsIAorICAgIDEyODIxOCwgMCwgMCwgNTk4OSwgMCwgMCwgMTI4MDkxLCAwLCA0MTY4NSwgNjkyMjMsIDAsIDk3NjksIDQxNjg0LCAKKyAgICA5ODMyMTQsIDUxOSwgMCwgMTE3NDAsIDU3NjYsIDAsIDAsIDI2MDAsIDg4NDgsIDEyMDEzOCwgNDEyOTcsIDAsIDM2NjYsIAorICAgIDc0NDczLCA0MTMwMCwgNzQ0NjgsIDY1MTYwLCAwLCA2OTY4OCwgNjk3NzEsIDc0NDc5LCAwLCA2NTU4LCAwLCAwLCA2OTc2NSwgCisgICAgMTIwNzUwLCAyNTIsIDAsIDQxMzAyLCAwLCAwLCAwLCA2OTc2MywgMCwgMTE3MjksIDg3MTksIDkwNjAsIDAsIDEyMDEzOSwgCisgICAgMTA3NjEsIDAsIDAsIDAsIDExODc5MiwgMTE3MzQsIDk4MzIyMSwgMTE3MzAsIDAsIDk1OTMsIDU3NTcsIDI0MDMsIDY0ODA4LCAKKyAgICA1NTI3NSwgMCwgMTE3MjgsIDQzNTcyLCAwLCAwLCA3NzY0LCA5ODM3MDUsIDExMDk0LCAxMjA4MjUsIDAsIDAsIDQyODIsIAorICAgIDgyOTgsIDAsIDAsIDAsIDAsIDAsIDY0NDQ5LCAwLCAxMjY2NTAsIDYzODU0LCA4NDU2LCAwLCA3NDc4MywgNjU2NzAsIDAsIAorICAgIDc4MjUwLCAwLCA3Nzc0LCAxMDYwNywgOTc5MiwgMCwgMCwgMCwgMCwgMTIwNzY0LCAwLCAxMDAxOSwgNzQ3NjIsIDAsIAorICAgIDM0NTgsIDQzNjUsIDcwMDUzLCA5ODM3MDMsIDM2NDcsIDAsIDI2MDIsIDEyODM0MSwgMCwgMTk0NzA3LCA0MTEzNSwgMCwgMCwgCisgICAgMCwgNjQ2MzEsIDE3MiwgNDk3MSwgNDEyMTksIDQxMTM3LCAxODg5LCA3MjM4LCA2NTQ1LCAxMjY0NzYsIDkyMTkzLCA3NTk3LCAKKyAgICAxMDUyOCwgMCwgMCwgMzczMiwgNzM5MTAsIDE5NDU4OCwgNTM0NCwgMCwgNDMzNjYsIDQzMzYzLCA5MDYyLCAxMTkyNTIsIDAsIAorICAgIDAsIDAsIDY0NDc5LCA5MjMyLCA5MjU5NiwgMCwgMCwgMTk0NzEyLCAxMDkwMCwgNDE1MzEsIDEyNjMsIDM3MjAsIDEyMDQ4LCAKKyAgICAwLCA2NDI5MiwgNDE1MjQsIDcyMjcsIDExOTYzNSwgNjA5OSwgNDE1MzQsIDAsIDEyNzM1NCwgMTI3MzQ1LCAyOTksIAorICAgIDkxNzk1NywgODUyNSwgMTI3MzQ3LCAzNTI0LCA5MTc1NjUsIDg4MzEsIDEyNzM0OSwgOTI1NjQsIDMwNzUsIDY3ODY3LCAKKyAgICAxMjczNTIsIDAsIDY2MzYyLCAwLCA2NDM1MywgMCwgMCwgNTg0NSwgMCwgMCwgMCwgMjU4MSwgODIwMCwgNjUxMTQsIAorICAgIDY4NDYwLCAwLCA0MzI4MywgNTU1MSwgMCwgMTIwNzM1LCAwLCA2MzQwLCAxMTg4NTUsIDAsIDc4MTM0LCA4NjgwLCA3MjA0LCAKKyAgICA3MDA2NSwgMjU4OCwgMjkxNCwgNzAxMSwgNTUyODEsIDAsIDI0NzEsIDE5NDYzMSwgMjg4MywgMjc0OSwgMTE5NTYzLCAKICAgICA3Mzc3NCwgMTA5MTMsIDAsIDAsIDg2NjYsIDY3NSwgNDI0OTMsIDAsIDQzNTcxLCAwLCA2MjE5LCAwLCA5OTgwLCA0MTIzMiwgCi0gICAgMTA5MjgsIDAsIDQxMTUzLCA0MTIyOSwgMTE4OTY3LCAwLCAzNzM4LCAxMjczNjksIDAsIDEyNzExLCAzMTgxLCA2NjIxMiwgCi0gICAgNzQyODksIDY4NDcyLCA0Mjg1NywgODI2MiwgMCwgMCwgMCwgMCwgNDIzNDcsIDEyMDkyLCA5NjE1LCA3MjM0LCA3NDA0NywgCi0gICAgMCwgMCwgNjQ2NzQsIDAsIDAsIDczODQ2LCAyOTM0LCAxMjcyMiwgMTIwNzYyLCA5MjIsIDQzOTgzLCA3NDUwNywgMCwgCi0gICAgNzQ0NjEsIDMyMTgsIDEyMDQ3MSwgNzQyOTAsIDEyMDQ2OSwgNjQ1NjIsIDEyMDQ3NSwgODU2OSwgMTE0MDQsIDExOTMyLCAKLSAgICA3MzcyOCwgMzIxNCwgMTIwNDYxLCAxMjA0NjgsIDEyMTI4LCAzMjA3LCA2NTQ4NiwgNzg3MjksIDE5MDEsIDc4NzI3LCAKLSAgICAxMjczMjYsIDEyMDQ2MCwgNzQyNSwgMzIwNSwgMCwgNzg3MzcsIDc4NzM2LCA3ODczNSwgNDMzODMsIDc4NzMzLCA2NTQ1OSwgCi0gICAgMjYwNiwgNzg3MzAsIDczODk3LCAwLCAxMTQ5NiwgMTE3MywgMCwgNDEyNzIsIDExOTY2MSwgMCwgMCwgMCwgMTIwNzM3LCAwLCAKLSAgICAwLCAwLCAzNzgsIDI2MTAsIDAsIDY1MDc5LCAwLCA2NTY5NSwgMCwgMzcsIDcwNjgsIDAsIDEyMDQ4MCwgMTIwNDc5LCAKLSAgICAzMjA5LCAxMjA0NzcsIDAsIDEwNjM4LCA5NzY4LCAxMjA0ODEsIDAsIDAsIDAsIDAsIDAsIDAsIDY1NTEwLCAwLCAwLCAKLSAgICA1MjMzLCAwLCA2NDc5MiwgMCwgMCwgMCwgMCwgNzA2MCwgOTg0NywgMTIwMTQ0LCAxNjg1LCA1OTUsIDAsIDczOTcxLCAKLSAgICAxMjkyLCA4OTQwLCA3MzgwLCAxMTA4OCwgMCwgMTAwMDQsIDEyNjk5NywgMCwgNjU0MSwgMCwgMCwgMCwgMzI0MywgOTAxNCwgCi0gICAgNTYwNiwgMCwgNTM4LCA2NDYyMCwgNTYwMiwgODQ2NywgNzQzOTEsIDY1NDcsIDAsIDgyMDMsIDc4NDg4LCAwLCA4NDU4LCAKLSAgICA2NTIxMSwgODQ5NSwgMTE5OTA0LCAwLCA5MTc1NTIsIDc3OSwgNzgzMTQsIDY0MzY3LCAyNDY1LCAwLCA4MTkzLCA1NTI3OSwgCi0gICAgOTczMCwgOTI4MCwgMCwgNzA2NSwgNzQxNTUsIDQzNDYsIDAsIDczNzk4LCA1MDQsIDAsIDkyNDE0LCA4OTgyLCAwLCAwLCAwLCAKLSAgICA3ODIsIDAsIDEwODgzLCAwLCAxOTQ4NTIsIDczMiwgMzczNywgMTI3MjUzLCAxNTQ4LCA2ODY1MCwgMCwgMTgzMiwgNTYwNCwgCi0gICAgNTczNSwgNDExNDEsIDExOTAyMCwgNDM3NiwgMCwgMTE3ODcsIDM3NDUsIDAsIDAsIDQyODg4LCA2NTcxMiwgMCwgMzg2OSwgCi0gICAgMTE5MzcsIDU3MjUsIDEyNzUzOSwgMTc4MywgNjg2NDgsIDU3MjgsIDAsIDAsIDAsIDExOTE4LCA2NjU2NywgNTcyNCwgMCwgCi0gICAgNTcyNywgNzg1MjEsIDAsIDAsIDc2NCwgMCwgMTI4MTE2LCA0MzUzMSwgMCwgOTAzMywgMCwgNDI1MzIsIDYyMjMsIDExMDQyLCAKLSAgICAxMjA3NDksIDExNDIzLCAwLCAxMTk4NjEsIDAsIDQzNDY1LCAwLCAxMjgyNjcsIDY1NTksIDY0NTU3LCAwLCAwLCAxMjA2NDgsIAotICAgIDQzMDE5LCA0MzQ3NywgMTAyMzgsIDAsIDAsIDQzMzc3LCA5MjI4MiwgMCwgMTQ3OCwgOTc4MywgMTE4MjUsIDI2MDcsIAotICAgIDY0NzQwLCAwLCA3NzM5LCA3NDU0MywgMCwgMCwgMCwgNjEzMiwgMCwgNjM3NjUsIDAsIDAsIDQxMTQ0LCAwLCA5MjQzOCwgCi0gICAgNDM1MzcsIDY3NjEsIDEwMDkzLCA0MzY5LCA5MTc3OTEsIDAsIDAsIDg4MjAsIDM5NDcsIDAsIDAsIDExNTE1LCA1MjYsIDAsIAotICAgIDQxMjk1LCAxOTQ2MDMsIDkxNzc4NSwgMTk0OTMyLCAwLCA3Njg4LCA5MTc3ODYsIDc2ODYsIDgyODgsIDExODE1LCAwLCAwLCAKLSAgICAwLCAxNTQzLCAzNzEzLCA0MTIyMSwgMTI0MjMsIDQyMjgxLCA5MTc3ODgsIDc0MDI0LCAxMjI5MywgMCwgNjQzNTcsIAotICAgIDExNzk0LCA0MjA4MiwgMCwgMTczNywgODk4NywgNDIwODEsIDAsIDcyMDUsIDAsIDkzMzUsIDEyODUwLCAxMTk4NzAsIAotICAgIDY1NTMsIDcwNTUsIDAsIDgyNzcsIDAsIDAsIDU0NzUsIDc0Nzk1LCA2NzgwLCAwLCAwLCAxMjk5MCwgMTE2MCwgNDIwODQsIAotICAgIDExOTY1MCwgNDEyMTcsIDExOTY2MCwgMTAwMTgsIDM2MCwgMCwgMCwgNjgxNzYsIDU4NjMsIDMxMzcsIDAsIDQxNDcsIDAsIAotICAgIDQxMjE2LCA3ODQ0LCAyNjE2LCAxMTkxOTAsIDY4NDYxLCA2NTIzNCwgMCwgMTMwNzYsIDMxMzUsIDAsIDc4MTQzLCAKLSAgICAxMTkxMzksIDMxNDIsIDkyNDUxLCAwLCAxMDgxOSwgMTE5NTgwLCAxMDE4MywgMCwgMjYwOCwgMTQ3MCwgNzM5NjcsIDAsIAotICAgIDYyMjcsIDAsIDAsIDY5NzQxLCAwLCA2MTYzLCAwLCAwLCAxMjczMTQsIDAsIDAsIDg2MDMsIDAsIDExOTg2NiwgMzMwNiwgCi0gICAgMTA4NzYsIDQzMzkyLCAxMTk1NzMsIDEyNzkzMSwgNTc1MSwgMCwgNjIyMiwgMCwgMCwgMTIwODYsIDc0MDMsIDE2MDAsIAotICAgIDY0MzA5LCA2NDkzOSwgMCwgNjQ3ODMsIDkyNjU4LCAxMTMxMCwgMCwgODg4MiwgMCwgMCwgMjU3MCwgNzAyMSwgMCwgMCwgCi0gICAgNDMxMTAsIDAsIDEyMzQsIDY1NDAsIDY5NzQsIDAsIDAsIDAsIDUwMDIsIDAsIDQxMjg2LCAwLCAxMjcwMTksIDAsIDQzNTg1LCAKLSAgICAwLCA2NTUxLCAwLCAxMjgyMjksIDAsIDQxMjg5LCAwLCAxOTQ2MDIsIDAsIDg5NzcsIDYwMiwgMTIwODE0LCAwLCAxMjg3NzgsIAotICAgIDEyODY2MSwgMCwgMCwgNDEyNzksIDAsIDAsIDAsIDExMDgxLCA0MzYxNSwgMCwgMCwgMCwgMCwgMTI3MjcsIDAsIDAsIAotICAgIDc4Mzk3LCA5NDc1LCA3MTEyLCA2NTEwNSwgMCwgOTYzMywgMTA4ODYsIDQzNTkyLCA3ODMxLCAwLCAxOTQ1NzEsIDAsIAotICAgIDczOTE1LCA4MDc2LCA0MzA0OCwgODI5MCwgODI5MSwgNDMwNTEsIDkyNTcwLCAwLCAyNTk2LCA0MzU4NCwgMCwgMTMxMTMsIAotICAgIDAsIDEyNzc1NywgMjM5MywgNzA1OCwgOTA4NywgNzQwNjcsIDY4NjczLCA0MTU3NCwgNzgzMzcsIDAsIDc0MDU4LCA2Mzc2LCAKLSAgICAwLCAwLCAwLCAwLCA5ODU0LCAxMjc3NDgsIDY0Njk2LCAwLCAxMjgyMjAsIDAsIDY5OTQsIDAsIDE3MjAsIDAsIDAsIDAsIAotICAgIDY1MjksIDcwNjMsIDAsIDM3NTEsIDkxMjAsIDAsIDAsIDE3OTgsIDcwOSwgMCwgMTM1NCwgMTg3NiwgMTMxNTIsIDY1NTcsIAotICAgIDEyNDMwLCA4MTM3LCAwLCA5MjY0MiwgMCwgMCwgMjQ1LCAxMjgwOTcsIDExNDU2LCA0MTIzMywgNzA3MCwgMCwgMCwgNjEzNiwgCi0gICAgOTE3NjA5LCA2NTY3NywgODY4MiwgNDEyMzUsIDkyNTk1LCA0MjA0NSwgOTgwNCwgMCwgNDMyLCAzNTk1LCAwLCA2NTQzNywgCi0gICAgMCwgNzQ0NTUsIDQyMzk5LCAwLCAwLCAxMjgyNzQsIDAsIDExOTY1OCwgMCwgMCwgMCwgNzc4OTQsIDg3OTcsIDAsIDkwNTIsIAotICAgIDY0ODg4LCA3MTY3LCAyMzU2LCA5NSwgNzQ3ODQsIDEwNTgwLCAwLCA0MjI4NiwgMCwgNjQ2NDAsIDAsIDExOTEwNCwgMCwgCi0gICAgNzQxMzcsIDAsIDEwMDYzLCAxMjY1MiwgMTIxOTksIDkyNDgwLCAwLCAyNTY2LCAxMTk3MSwgMCwgMCwgMTA2NSwgMCwgMCwgCi0gICAgNDM0MDAsIDI1NzYsIDY2Njk2LCAwLCAwLCA0MzYwNCwgMCwgMCwgNzQwODIsIDUxNCwgNzQ1MDIsIDAsIDI5MjEsIDQzMjE1LCAKLSAgICA2NDQ5MywgNTc3MiwgMTI5NjgsIDAsIDE5NDk0NCwgNzQ1ODAsIDQzMzk4LCAyNTgwLCAwLCA0MTM0MSwgNDEyMjMsIDY1NjQsIAotICAgIDE0NjMsIDQxMzQyLCAwLCA1MjkzLCAwLCAwLCAzNzMzLCAxMTM0NiwgMCwgMTIwNTQsIDAsIDc0MDk4LCA0MjgyNywgMCwgCi0gICAgMTMwOTEsIDAsIDAsIDAsIDkxNzkxNSwgMCwgMTI3MDI1LCAwLCA3NDgyMSwgMCwgMCwgMTE5MDQyLCAwLCAxMjc4NjUsIAotICAgIDEzMDkwLCA2NjY0MywgMCwgMTI3MCwgMTEzMiwgNDIzNjAsIDAsIDc0MDk2LCA2NjY1NSwgNDI1NjksIDEyNzgyNCwgMCwgCi0gICAgNjQ3NjEsIDAsIDQxMDIxLCA4NTEwLCA0MjQzMiwgMCwgMCwgMCwgMCwgNjQ0OTYsIDc0MTA5LCAwLCA5OTE1LCAwLCAwLCAKLSAgICA3MDYxLCA0MTMzNiwgMzg1NCwgNjk3MDAsIDEzMTQxLCA2ODQxMywgNDM0MDEsIDQyMzE5LCAxMzA4MiwgMCwgNzA2NywgCi0gICAgNjgyMjEsIDAsIDAsIDEyNzE3MSwgMCwgMCwgMTI3Nzk3LCA5MDI5LCA0MzU0MywgMTE5MzE1LCAyMzUzLCA2MzA4LCAwLCAKLSAgICA3NDc5MiwgMjYxMSwgMTE5MTg2LCAwLCAwLCAwLCA0MzY2NCwgOTIzOTksIDY2NjI3LCAwLCA0NDg0LCA4NTA5LCAxMTg5NzYsIAotICAgIDc4MTE2LCA2NTIzMywgMCwgNDEyMjQsIDQxMDE3LCAwLCAzNzQ3LCAxMDUyMiwgMCwgMCwgMTY5MSwgNDEyMjYsIDAsIAotICAgIDEyMTA3LCA0NDAwMiwgMTA5MDUsIDY1MDEwLCAxOTQ5ODYsIDY5NywgNjYwMTgsIDkyODQsIDQyNDQsIDAsIDAsIDkyNjQ0LCAKLSAgICAxMzEyMSwgMTIwMDM2LCAwLCAxMjAxMCwgMTI4NTczLCAxMjgyMjEsIDAsIDAsIDAsIDEyNzE5MywgNjU4MTYsIDY4MTExLCAKLSAgICAwLCAxMjc5MzMsIDY1NjY4LCA5MjI1NywgNjYxOCwgMTE4Nzg0LCA2NjM2NSwgMCwgNDIyMzQsIDEyNjQ4LCAxMjgwMzksIAotICAgIDcxMjMsIDAsIDU3ODUsIDkxOTgsIDk3NjQsIDQxMzE2LCA2NTg3NywgNzM4MywgMTMyMzAsIDQxMjk5LCAwLCAwLCA2ODM2NSwgCi0gICAgMTI4MjU4LCAwLCAwLCAwLCAxMzEyMiwgMCwgMTkxLCA3NDExOSwgODU4NSwgODAwMCwgNjQ0MTEsIDEyMDY1MiwgNDI4ODksIAorICAgIDEwOTI4LCAwLCA0MTE1MywgNDEyMjksIDExODk2NywgMCwgMzczOCwgOTQwMTYsIDAsIDEyNzExLCAzMTgxLCA2NjIxMiwgCisgICAgNzQyODksIDY4NDcyLCA0Mjg1NywgODI2MiwgOTgzMzcxLCAwLCA5ODMyMjAsIDAsIDQyMzQ3LCAxMjA5MiwgOTYxNSwgCisgICAgNzIzNCwgNzQwNDcsIDk4MzA4OCwgMCwgNDM3NDQsIDAsIDAsIDczODQ2LCAyOTM0LCAxMjcyMiwgMTIwNzYyLCA5MjIsIAorICAgIDQzOTgzLCA3NDUwNywgOTgzMTI2LCA3NDQ2MSwgMzIxOCwgMTIwNDcxLCA3NDI5MCwgMTIwNDY5LCA2NDU2MiwgMTIwNDc1LCAKKyAgICA4NTY5LCAxMTQwNCwgMTE5MzIsIDczNzI4LCAzMjE0LCAxMjA0NjEsIDEyMDQ2OCwgMTIxMjgsIDMyMDcsIDY1NDg2LCAKKyAgICA3ODcyOSwgMTkwMSwgNzg3MjcsIDEyNzMyNiwgMTIwNDYwLCA3NDI1LCAzMjA1LCA2ODAwMywgNzg3MzcsIDc4NzM2LCAKKyAgICA3ODczNSwgNDMzODMsIDY5OTQwLCA2NTQ1OSwgMjYwNiwgNzg3MzAsIDczODk3LCAwLCAxMTQ5NiwgMTE3MywgMCwgNDEyNzIsIAorICAgIDExOTY2MSwgMCwgMCwgOTgzMzEzLCAxMjA3MzcsIDAsIDk4Mzk2MiwgOTgzMzEyLCAzNzgsIDI2MTAsIDAsIDY1MDc5LCAKKyAgICA5ODMzMTcsIDY1Njk1LCAxMjY1NTksIDM3LCA3MDY4LCAwLCAxMjA0ODAsIDEyMDQ3OSwgMzIwOSwgMTIwNDc3LCAwLCAKKyAgICAxMDYzOCwgOTc2OCwgNjk5NTIsIDExOTkwOSwgOTgzMzkxLCAwLCAwLCAwLCAwLCA2NTUxMCwgMCwgMCwgNTIzMywgCisgICAgOTgzMzI3LCA2NDc5MiwgOTgzMzI2LCAwLCAxMjY2MzMsIDAsIDcwNjAsIDk4NDcsIDEyMDE0NCwgMTY4NSwgNTk1LCAwLCAKKyAgICA3Mzk3MSwgMTI5MiwgODk0MCwgNzM4MCwgMTEwODgsIDAsIDEwMDA0LCAxMjY5OTcsIDAsIDY1NDEsIDAsIDAsIDAsIDMyNDMsIAorICAgIDkwMTQsIDU2MDYsIDAsIDUzOCwgNjQ2MjAsIDU2MDIsIDg0NjcsIDc0MzkxLCA2NTQ3LCAxMjgxMzIsIDgyMDMsIDc4NDg4LCAKKyAgICA5ODMwOTAsIDg0NTgsIDY1MjExLCA4NDk1LCAxMTk5MDQsIDAsIDkxNzU1MiwgNzc5LCA3ODMxNCwgNjQzNjcsIDI0NjUsIAorICAgIDY5OTAxLCA4MTkzLCA1NTI3OSwgOTczMCwgOTI4MCwgMCwgNzA2NSwgNzQxNTUsIDQzNDYsIDAsIDczNzk4LCA1MDQsIDAsIAorICAgIDkyNDE0LCA4OTgyLCAwLCAwLCAwLCA3ODIsIDAsIDEwODgzLCAwLCAxOTQ4NTIsIDczMiwgMzczNywgMTI3MjUzLCAxNTQ4LCAKKyAgICA2ODY1MCwgOTI1MDcsIDE4MzIsIDU2MDQsIDU3MzUsIDQxMTQxLCAxMTkwMjAsIDQzNzYsIDAsIDExNzg3LCAzNzQ1LCAwLCAKKyAgICAwLCA0Mjg4OCwgNjU3MTIsIDk4MzI5NiwgMzg2OSwgMTE5MzcsIDU3MjUsIDEyNzUzOSwgMTc4MywgNjg2NDgsIDU3MjgsIDAsIAorICAgIDAsIDAsIDExOTE4LCA2NjU2NywgNTcyNCwgMCwgNTcyNywgNzg1MjEsIDAsIDAsIDc2NCwgMCwgMTI4MTE2LCA0MzUzMSwgMCwgCisgICAgOTAzMywgMCwgNDI1MzIsIDYyMjMsIDExMDQyLCAxMjA3NDksIDExNDIzLCAwLCAxMTk4NjEsIDcxMzQ0LCA0MzQ2NSwgMCwgCisgICAgMTI4MjY3LCA2NTU5LCA2NDU1NywgNzEzNDgsIDkyNjQ5LCAxMjA2NDgsIDQzMDE5LCA0MzQ3NywgMTAyMzgsIDc0NDkxLCAwLCAKKyAgICA0MzM3NywgOTIyODIsIDcxMzQ2LCAxNDc4LCA5NzgzLCAxMTgyNSwgMjYwNywgNjQ3NDAsIDAsIDc3MzksIDc0NTQzLCAwLCAKKyAgICAwLCAwLCA2MTMyLCAwLCA2Mzc2NSwgMCwgNzAwNTgsIDQxMTQ0LCAwLCA5MjQzOCwgNDM1MzcsIDY3NjEsIDEwMDkzLCAKKyAgICA0MzY5LCA5MTc3OTEsIDAsIDk4MzE0OCwgODgyMCwgMzk0NywgMCwgMCwgMTE1MTUsIDUyNiwgMTI4MTAzLCA0MTI5NSwgCisgICAgMTk0NjAzLCA5MTc3ODUsIDE5NDkzMiwgMCwgNzY4OCwgOTE3Nzg2LCA3Njg2LCA4Mjg4LCAxMTgxNSwgMCwgMCwgOTgzMzc0LCAKKyAgICAxNTQzLCAzNzEzLCA0MTIyMSwgMTI0MjMsIDQyMjgxLCA5MTc3ODgsIDc0MDI0LCAxMjI5MywgMCwgNjQzNTcsIDExNzk0LCAKKyAgICA0MjA4MiwgMCwgMTczNywgODk4NywgNDIwODEsIDAsIDcyMDUsIDAsIDkzMzUsIDEyODUwLCAxMTk4NzAsIDY1NTMsIDcwNTUsIAorICAgIDAsIDgyNzcsIDAsIDAsIDU0NzUsIDc0Nzk1LCA2NzgwLCAwLCAwLCAxMjk5MCwgMTE2MCwgNDIwODQsIDExOTY1MCwgCisgICAgNDEyMTcsIDExOTY2MCwgMTAwMTgsIDM2MCwgMCwgMCwgNjgxNzYsIDU4NjMsIDMxMzcsIDAsIDQxNDcsIDk4MzE3MCwgCisgICAgNDEyMTYsIDc4NDQsIDI2MTYsIDExOTE5MCwgNjg0NjEsIDY1MjM0LCA5ODMyODYsIDEzMDc2LCAzMTM1LCA5ODMyNzksIAorICAgIDc4MTQzLCAxMTkxMzksIDMxNDIsIDkyNDUxLCA5NDA2OCwgMTA4MTksIDExOTU4MCwgMTAxODMsIDAsIDI2MDgsIDE0NzAsIAorICAgIDczOTY3LCA5NDAwOCwgNjIyNywgMCwgMTI3MTczLCA2OTc0MSwgOTgzNTgyLCA2MTYzLCA5ODM1NTgsIDAsIDEyNzMxNCwgMCwgCisgICAgMCwgODYwMywgMCwgMTE5ODY2LCAzMzA2LCAxMDg3NiwgNDMzOTIsIDExOTU3MywgMTI3OTMxLCA1NzUxLCAwLCA2MjIyLCAwLCAKKyAgICAwLCAxMjA4NiwgNzQwMywgMTYwMCwgNjQzMDksIDY0OTM5LCAwLCA2NDc4MywgOTI2NTgsIDExMzEwLCAwLCA4ODgyLCAwLCAKKyAgICAwLCAyNTcwLCA3MDIxLCAwLCAwLCA0MzExMCwgMCwgMTIzNCwgNjU0MCwgNjk3NCwgMCwgMCwgOTgzMjA5LCA1MDAyLCAwLCAKKyAgICA0MTI4NiwgNjk5NDYsIDEyNzAxOSwgMCwgNDM1ODUsIDAsIDY1NTEsIDk4Mzk1MywgMTI4MjI5LCAwLCA0MTI4OSwgMCwgCisgICAgMTk0NjAyLCAwLCA4OTc3LCA2MDIsIDEyMDgxNCwgMCwgMTI4Nzc4LCAxMjg2NjEsIDAsIDk4MzM2NywgNDEyNzksIDAsIDAsIAorICAgIDAsIDExMDgxLCA0MzYxNSwgMCwgMCwgMCwgOTgzNjEyLCAxMjcyNywgMCwgMCwgNzgzOTcsIDk0NzUsIDcxMTIsIDY1MTA1LCAKKyAgICAwLCA5NjMzLCAxMDg4NiwgNDM1OTIsIDc4MzEsIDk4MzgyMCwgMTk0NTcxLCAwLCA3MzkxNSwgODA3NiwgNDMwNDgsIDgyOTAsIAorICAgIDgyOTEsIDQzMDUxLCA5MjU3MCwgMCwgMjU5NiwgNDM1ODQsIDAsIDEzMTEzLCAwLCAxMjc3NTcsIDIzOTMsIDcwNTgsIAorICAgIDkwODcsIDc0MDY3LCA2ODY3MywgNDE1NzQsIDc4MzM3LCAwLCA3NDA1OCwgNjM3NiwgMCwgMCwgMCwgMCwgOTg1NCwgCisgICAgMTI3NzQ4LCA2NDY5NiwgMCwgMTI4MjIwLCAwLCA2OTk0LCAwLCAxNzIwLCAwLCAwLCAwLCA2NTI5LCA3MDYzLCA5ODMxODIsIAorICAgIDM3NTEsIDkxMjAsIDk4MzQ3NywgMCwgMTc5OCwgNzA5LCAwLCAxMzU0LCAxODc2LCAxMzE1MiwgNjU1NywgMTI0MzAsIAorICAgIDgxMzcsIDk0MDk4LCA5MjY0MiwgMCwgMCwgMjQ1LCAxMjgwOTcsIDExNDU2LCA0MTIzMywgNzA3MCwgMCwgOTQwNDYsIAorICAgIDYxMzYsIDkxNzYwOSwgNjU2NzcsIDg2ODIsIDQxMjM1LCA5MjU5NSwgNDIwNDUsIDk4MDQsIDExODk2MywgNDMyLCAzNTk1LCAKKyAgICAxOTQ5NDUsIDY1NDM3LCAwLCA3NDQ1NSwgNDIzOTksIDAsIDAsIDEyODI3NCwgMCwgMTE5NjU4LCAwLCAwLCAwLCA3Nzg5NCwgCisgICAgODc5NywgMCwgOTA1MiwgNjQ4ODgsIDcxNjcsIDIzNTYsIDk1LCA3NDc4NCwgMTA1ODAsIDAsIDQyMjg2LCAwLCA2NDY0MCwgCisgICAgMCwgOTQxMDksIDAsIDc0MTM3LCA3MDAzNSwgMTAwNjMsIDEyNjUyLCAxMjE5OSwgOTI0ODAsIDAsIDI1NjYsIDExOTcxLCAKKyAgICA5ODM3MjgsIDAsIDEwNjUsIDAsIDAsIDQzNDAwLCAyNTc2LCA2NjY5NiwgOTM5OTksIDAsIDQzNjA0LCAwLCAwLCA3NDA4MiwgCisgICAgNTE0LCA3NDUwMiwgNzAwMzIsIDI5MjEsIDQzMjE1LCA2NDQ5MywgNTc3MiwgMTI5NjgsIDcwMDU1LCAxOTQ5NDQsIDc0NTgwLCAKKyAgICA0MzM5OCwgMjU4MCwgOTgzODAxLCA0MTM0MSwgNDEyMjMsIDY1NjQsIDE0NjMsIDQxMzQyLCAwLCA1MjkzLCA3MDAyMCwgMCwgCisgICAgMzczMywgMTEzNDYsIDAsIDEyMDU0LCAwLCA3NDA5OCwgNDI4MjcsIDAsIDEzMDkxLCAwLCAwLCAwLCA5MTc5MTUsIDAsIAorICAgIDEyNzAyNSwgMCwgNzQ4MjEsIDAsIDk4MzcyNCwgMTE5MDQyLCAwLCAxMjc4NjUsIDEzMDkwLCA2NjY0MywgMCwgMTI3MCwgCisgICAgMTEzMiwgNDIzNjAsIDAsIDc0MDk2LCA2NjY1NSwgNDI1NjksIDEyNzgyNCwgMCwgNjQ3NjEsIDAsIDQxMDIxLCA4NTEwLCAKKyAgICA0MjQzMiwgMCwgMCwgMTk0NzgyLCAwLCA2NDQ5NiwgNzQxMDksIDcwMDMwLCA5OTE1LCAwLCA5ODMyMTYsIDcwNjEsIAorICAgIDQxMzM2LCAzODU0LCA2OTcwMCwgMTMxNDEsIDY4NDEzLCA0MzQwMSwgNDIzMTksIDEzMDgyLCAwLCA3MDY3LCA2ODIyMSwgMCwgCisgICAgMTI3MzgzLCAxMjcxNzEsIDAsIDAsIDEyNzc5NywgOTAyOSwgNDM1NDMsIDExOTMxNSwgMjM1MywgNjMwOCwgMCwgNzQ3OTIsIAorICAgIDI2MTEsIDExOTE4NiwgMCwgMCwgMCwgNDM2NjQsIDkyMzk5LCA2NjYyNywgMCwgNDQ4NCwgODUwOSwgMTE4OTc2LCAxMTA2NiwgCisgICAgNjUyMzMsIDAsIDQxMjI0LCA0MTAxNywgMCwgMzc0NywgMTA1MjIsIDAsIDAsIDE2OTEsIDQxMjI2LCAwLCAxMjEwNywgCisgICAgNzEwMCwgMTA5MDUsIDY1MDEwLCAxOTQ5ODYsIDY5NywgNjYwMTgsIDkyODQsIDQyNDQsIDAsIDAsIDkyNjQ0LCAxMzEyMSwgCisgICAgMTIwMDM2LCAwLCAxMjAxMCwgMTI4NTczLCAxMjgyMjEsIDAsIDAsIDAsIDEyNzE5MywgNjU4MTYsIDY4MTExLCAwLCAKKyAgICAxMjc5MzMsIDY1NjY4LCA5MjI1NywgNjYxOCwgMTE4Nzg0LCA2NjM2NSwgMCwgNDIyMzQsIDEyNjQ4LCA3ODExMCwgNzEyMywgCisgICAgNzAwMzgsIDU3ODUsIDkxOTgsIDk3NjQsIDQxMzE2LCA2NTg3NywgNzM4MywgMTMyMzAsIDQxMjk5LCAwLCAwLCA2ODM2NSwgCisgICAgMTI4MjU4LCAwLCAwLCAwLCAxMzEyMiwgMCwgMTkxLCA3MDA2MCwgODU4NSwgODAwMCwgNjQ0MTEsIDEyMDY1MiwgNDI4ODksIAogICAgIDY0ODUwLCA0MTA3MiwgNDE1NzgsIDAsIDQxNTc3LCAwLCAxMDAwMiwgMCwgNjUzMywgNzM4MDIsIDQxNTcwLCAwLCA2ODMsIAogICAgIDM5NiwgNDE1ODAsIDY4MTQ2LCAwLCAxMjkwMSwgNDMwNTgsIDAsIDM0MywgNzEyOSwgNDI2ODAsIDQxMzYwLCA3ODE1NCwgMCwgCi0gICAgNDc0MywgMCwgMCwgNzQwNDAsIDc0MTA4LCA4NzQzLCAxNzI0LCAxNDMzLCAxMTkzMjIsIDAsIDM3MzksIDYyNjMsIDkyNTE0LCAKLSAgICAwLCAzOTY0LCA2NTkyLCAwLCAxMjg2OTMsIDY2MDQwLCAwLCA0MjU2OCwgNjk4MDYsIDAsIDE3NzgsIDM5NTYsIDAsIAotICAgIDQyMDcwLCA2NTYzLCA0MzA3NSwgOTAxOCwgMCwgMCwgMTIwNjcsIDQxMzEyLCAwLCA1NTQ3LCA3NDUzMSwgMTI3OTY5LCAwLCAKLSAgICA4MTc1LCAwLCAyODQsIDgxMDgsIDkzNCwgMCwgNzQwMDEsIDE3MywgNjY0NjAsIDcxNzQsIDkyNzAzLCAxMTg4MjIsIDE3NTAsIAotICAgIDAsIDQzOTQsIDY4MzY4LCAxODA3LCAwLCA5MjI5OCwgMCwgNTg4OSwgMCwgNzE4MCwgMCwgMTE5MTQ1LCAwLCA5MTc1NTgsIAotICAgIDQyNDcxLCA2OTgyLCAxNzIxLCA0NDAyMiwgNzg5MSwgNDIyNDMsIDQyMTYwLCAyNTgzLCA0NTEyLCAxMTkzNjAsIDY1MjMwLCAKLSAgICAxMjgxMDksIDAsIDAsIDM4NTUsIDAsIDAsIDAsIDAsIDc0Mjk1LCAwLCAwLCA5MjQxNiwgMzk3NSwgMCwgNzQwODcsIDAsIAotICAgIDEyNjcyLCAzNzk4LCAyNzAzLCAwLCAwLCAyMTA5LCA5Nzc0LCAxMjc1LCAwLCAwLCA0MTA5NSwgMzk2MiwgMCwgMjkzMiwgCi0gICAgNDExMDEsIDM5NTQsIDY0NTcsIDQ1MTMsIDAsIDAsIDczOTk0LCA3Mzk5MiwgMTQ2OCwgMCwgMCwgNDE4NTEsIDEyODIzMCwgCi0gICAgNDE4NDYsIDAsIDU1MjM4LCA3NjMzLCA0MTg0OSwgNjgzODUsIDQzMjAsIDMyMjQsIDAsIDEyODAzMiwgMCwgNDI1MzEsIDAsIAotICAgIDE1MTAsIDAsIDgyNTYsIDAsIDExMzkzLCAwLCA4ODc5LCAxMjgwNzUsIDkyNDc0LCA4NzcwLCAwLCAwLCA3ODM3NywgMTkxMCwgCi0gICAgODY3MSwgNzgzNzQsIDQyODMsIDAsIDEyNzExNywgNjgzNjEsIDc4MzE4LCAyNjU0LCA3ODkzLCAxOTUwMDcsIDAsIDAsIDAsIAotICAgIDY1MTA2LCA0Mjc2MSwgMTI4NTcsIDQ1ODEsIDg0MTEsIDc4MzcyLCA3ODM3MSwgNzgzNzAsIDc4MzY5LCA3ODM2OCwgMCwgMCwgCi0gICAgMCwgMTczMywgNDM5MiwgMjU2OCwgMTA3ODYsIDY5NjYxLCAwLCA4MTg0LCA0MTQ4NiwgMCwgNzM5NiwgNzExNiwgMCwgCi0gICAgNjk3ODgsIDAsIDcxODUsIDc5NjUsIDAsIDAsIDkyMzQ3LCAwLCA0MTM1MCwgOTEyOSwgMCwgMCwgMCwgMCwgOTI0ODksIDAsIAotICAgIDEwNDgxLCAwLCAxMjc0ODYsIDcxNzEsIDAsIDM0MCwgOTI0OTgsIDAsIDAsIDAsIDkyMjAwLCAwLCAwLCA2NzY0LCAKLSAgICAxMjc0ODcsIDAsIDAsIDAsIDAsIDY1MjAzLCAxMTM5MiwgMTE5MDk4LCAxMTkzNTksIDAsIDMyMTAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyNzk3MCwgOTE3NjE5LCAwLCAwLCAxMDA0MywgMCwgMTE4NiwgNDE1NzEsIDY5OTksIDYxNywgOTQ2NCwgMTI4MjQ0LCAKLSAgICAzNjc1LCA1MjA3LCA2NTA2MiwgNTIxMywgMTk0NzY5LCAyNjE3LCA0MTM0OCwgNDE1NjgsIDEyODgwMywgMzI1MywgCi0gICAgMTIwNTM1LCAwLCA4NjMwLCAxMjg1NDQsIDAsIDU1OTYsIDU1NDUsIDcyODgsIDI1ODYsIDY0ODg3LCAwLCA1MjE3LCAwLCAwLCAKLSAgICAwLCAwLCA2NDI5MywgNjgwOTgsIDI2MzUsIDAsIDAsIDAsIDAsIDAsIDc4MzUsIDAsIDAsIDE5NDk4OCwgOTIyODUsIAotICAgIDY0NTU4LCAxMjcxMjIsIDAsIDEyNzEyMSwgMCwgMTI3OTEzLCAwLCA1Nzg0LCAwLCAwLCAwLCAwLCA0MDExLCA5MTc2MTYsIAotICAgIDY4MTAxLCAwLCA3ODY0LCA0MjU0LCA2NTA5NSwgMCwgNTYwMCwgMzkwMywgMTI3MDgzLCAxMDQ0NywgNTU5OCwgMTIwNywgCi0gICAgMTIwNTIxLCA2NjY4OSwgMzUwMSwgNDI1ODIsIDQzNjAwLCAxOTQ3ODAsIDAsIDExMjQsIDU1OTcsIDE5NDc3OCwgMTk0NzcyLCAKLSAgICA5MzIxLCAwLCAwLCAwLCAwLCAxNzE5LCA2ODM1NiwgNjgzNTQsIDk2NzEsIDExMjUsIDQzOTksIDEyNzQ3OSwgOTE3NjEwLCAKLSAgICAwLCA3NjMxLCA1NDg4LCA3MTI4LCAxMjA1MzIsIDAsIDU0OTEsIDAsIDg5MzcsIDQzMDQ0LCAyNjA0LCA3NDE4NywgNTQ5MCwgCi0gICAgNDMwNDYsIDU0ODksIDcyMTIsIDExNzY4LCA0MzA0MywgNjMwMCwgMCwgNzEyMiwgMCwgNDM5MCwgNDU0LCA0MTM5NywgMCwgCi0gICAgOTg3NSwgNzU5MywgMTk0NzkyLCA5MjI3NCwgMTE4OTEzLCA3MjA3LCAwLCA2NTkwMSwgMjM5NCwgMjU3NSwgMCwgMzc0NiwgCi0gICAgMTEwMTYsIDY1NzUyLCAxMjAwMzcsIDAsIDQzNDIzLCAxMjg2ODMsIDExOTg5LCAwLCAwLCAwLCAwLCAwLCA4MjQ5LCAKLSAgICAxMjgxNzIsIDAsIDc4NTMxLCA2NjQwLCA3NDgwNiwgMjU5OCwgNTEzLCAwLCA2NTg2LCA4NjU2LCAwLCAxMjcwMDIsIAotICAgIDY1MDA4LCAwLCAxOTQ3ODQsIDE5NDk4OSwgMTk0Nzk1LCAwLCA5MjUxNSwgNjg0NzUsIDAsIDAsIDAsIDc4NjM3LCAxMjY0NywgCi0gICAgMCwgMTI4MDQzLCAwLCAxMDM2LCAwLCA5MjQxOSwgMTcyMywgMTI4MDU2LCAwLCAwLCA0MTU3OSwgMjQ0NCwgMCwgMTA3MDUsIAotICAgIDczODc2LCAwLCA3NDQ4NiwgMCwgNzQwLCAxMTkyMjIsIDE5NDk3OCwgMTk0OTg0LCAwLCA0MjM4LCAxMTA3MSwgOTQ1OSwgCi0gICAgNjg0MzcsIDc4MTQwLCA3ODEzOSwgMTk0OTg1LCA4MTIxLCAxMDQzOCwgNzQ0ODcsIDQyNTc0LCAxMzI4NSwgNTUyNjMsIAotICAgIDExOTA3LCAxOTUwMDAsIDU2OTAsIDkyMjU1LCAwLCAwLCA0MzE4MSwgMTMwOTUsIDAsIDEyNzg1NywgNjQ0OTgsIDAsIAotICAgIDk1MDYsIDY5NzgsIDE5NDk5MywgNzc5OTIsIDAsIDAsIDE5NDk5MiwgMCwgMTI3ODQ1LCAxMTIyLCAzMTcsIDAsIDAsIDAsIAotICAgIDAsIDE5MjAsIDAsIDEwMTczLCA4MjcsIDAsIDAsIDc4Mzc4LCAxMjAxMjYsIDUyMjMsIDEzMDQsIDAsIDExOTU2NCwgNTIyNiwgCi0gICAgMTI2MDIsIDAsIDAsIDkzMjksIDc3NTgsIDkyMzksIDQxMTczLCA1MjI0LCA1NDg3LCAxMjIyLCA1NjkyLCA0MTcyNSwgCisgICAgNDc0MywgMCwgMCwgNzQwNDAsIDc0MTA4LCA4NzQzLCAxNzI0LCAxNDMzLCAxMTkzMjIsIDAsIDM3MzksIDYyNjMsIDcxMzQ5LCAKKyAgICAwLCAzOTY0LCA2NTkyLCAwLCAxMjg2OTMsIDY2MDQwLCAwLCA0MjU2OCwgNjk4MDYsIDEyODExMywgMTc3OCwgMzk1NiwgMCwgCisgICAgNDIwNzAsIDY1NjMsIDQzMDc1LCA5MDE4LCA5NDAwNiwgOTgzMzg4LCAxMjA2NywgNDEzMTIsIDAsIDU1NDcsIDc0NTMxLCAKKyAgICAxMjc5NjksIDAsIDgxNzUsIDAsIDI4NCwgODEwOCwgOTM0LCAwLCA3NDAwMSwgMTczLCA2NjQ2MCwgNzE3NCwgOTI3MDMsIAorICAgIDExODgyMiwgMTc1MCwgMCwgNDM5NCwgNjgzNjgsIDE4MDcsIDk4Mzg3OSwgOTIyOTgsIDAsIDU4ODksIDAsIDcxODAsIDAsIAorICAgIDExOTE0NSwgMCwgOTE3NTU4LCA0MjQ3MSwgNjk4MiwgMTcyMSwgNDQwMjIsIDc4OTEsIDQyMjQzLCA0MjE2MCwgMjU4MywgCisgICAgNDUxMiwgMTE5MzYwLCA2NTIzMCwgMTI4MTA5LCAwLCAwLCAzODU1LCAwLCAwLCAwLCAwLCA3NDI5NSwgMCwgMCwgOTI0MTYsIAorICAgIDM5NzUsIDAsIDc0MDg3LCAwLCAxMjY3MiwgMzc5OCwgMjcwMywgOTgzNTk5LCAwLCAyMTA5LCA5Nzc0LCAxMjc1LCAwLCAwLCAKKyAgICA0MTA5NSwgMzk2MiwgMCwgMjkzMiwgNDExMDEsIDM5NTQsIDY0NTcsIDQ1MTMsIDAsIDAsIDczOTk0LCA3Mzk5MiwgMTQ2OCwgCisgICAgMCwgMCwgNDE4NTEsIDEyODIzMCwgNDE4NDYsIDAsIDU1MjM4LCA3NjMzLCA0MTg0OSwgNjgzODUsIDQzMjAsIDMyMjQsIDAsIAorICAgIDEyODAzMiwgMCwgNDI1MzEsIDExOTEwOCwgMTUxMCwgMCwgODI1NiwgMCwgMTEzOTMsIDAsIDg4NzksIDEyODA3NSwgCisgICAgOTI0NzQsIDg3NzAsIDAsIDAsIDc4Mzc3LCAxOTEwLCA4NjcxLCA3ODM3NCwgNDI4MywgMCwgMTI3MTE3LCA2ODM2MSwgCisgICAgNzgzMTgsIDI2NTQsIDc4OTMsIDE5NTAwNywgMCwgMCwgMCwgNjUxMDYsIDQyNzYxLCAxMjg1NywgNDU4MSwgODQxMSwgCisgICAgNzgzNzIsIDc4MzcxLCA3ODM3MCwgNzgzNjksIDc4MzY4LCAwLCAwLCAwLCAxNzMzLCA0MzkyLCAyNTY4LCAxMDc4NiwgCisgICAgNjk2NjEsIDAsIDgxODQsIDQxNDg2LCAwLCA3Mzk2LCA3MTE2LCAwLCA2OTc4OCwgMCwgNzE4NSwgNzk2NSwgMCwgMCwgCisgICAgOTIzNDcsIDk4MzA4NywgNDEzNTAsIDkxMjksIDAsIDAsIDIyOTQsIDAsIDkyNDg5LCAwLCAxMDQ4MSwgMCwgNzAwMjIsIAorICAgIDcxNzEsIDAsIDM0MCwgOTI0OTgsIDkzOTcyLCAwLCAwLCA5MjIwMCwgMCwgMCwgNjc2NCwgMTI3NDg3LCAwLCAwLCAwLCAwLCAKKyAgICA2NTIwMywgMTEzOTIsIDExOTA5OCwgMTE5MzU5LCAwLCAzMjEwLCAwLCAwLCAxMTg3OTUsIDAsIDAsIDEyNzk3MCwgCisgICAgOTE3NjE5LCAwLCAwLCAxMDA0MywgMCwgMTE4NiwgNDE1NzEsIDY5OTksIDYxNywgOTQ2NCwgMTI2NjQyLCAzNjc1LCA1MjA3LCAKKyAgICA2NTA2MiwgNTIxMywgMTk0NzY5LCAyNjE3LCA0MTM0OCwgNDE1NjgsIDEyODgwMywgMzI1MywgMTIwNTM1LCAwLCA4NjMwLCAKKyAgICAxMjg1NDQsIDAsIDU1OTYsIDU1NDUsIDcyODgsIDI1ODYsIDY0ODg3LCAwLCA1MjE3LCA3MTMzNiwgMCwgMCwgMCwgNjQyOTMsIAorICAgIDY4MDk4LCAyNjM1LCAwLCAwLCA5ODM4MzcsIDAsIDk4MzYzMiwgNzgzNSwgNzAwNDAsIDAsIDE5NDk4OCwgOTIyODUsIAorICAgIDY0NTU4LCAxMjcxMjIsIDAsIDEyNzEyMSwgMCwgMTI3OTEzLCAwLCA1Nzg0LCA5ODMxMDIsIDAsIDAsIDcwMDMzLCA0MDExLCAKKyAgICA5MTc2MTYsIDY4MTAxLCAwLCA3ODY0LCA0MjU0LCA2NTA5NSwgOTgzNDg4LCA1NjAwLCAzOTAzLCAxMjcwODMsIDEwNDQ3LCAKKyAgICA1NTk4LCAxMjA3LCAxMjA1MjEsIDY2Njg5LCAzNTAxLCA0MjU4MiwgNDM2MDAsIDE5NDc4MCwgMCwgMTEyNCwgNTU5NywgCisgICAgMTk0Nzc4LCAxOTQ3NzIsIDkzMjEsIDk4MzQ3NiwgOTgzNDczLCA5ODM0NzQsIDAsIDE3MTksIDY4MzU2LCA2ODM1NCwgCisgICAgOTY3MSwgMTEyNSwgNDM5OSwgMTI3NDc5LCA5MTc2MTAsIDk4MzQ4MCwgNzYzMSwgNTQ4OCwgNzEyOCwgMTIwNTMyLCAwLCAKKyAgICA1NDkxLCAwLCA4OTM3LCA0MzA0NCwgMjYwNCwgNzQxODcsIDU0OTAsIDQzMDQ2LCA1NDg5LCA3MjEyLCAxMTc2OCwgNDMwNDMsIAorICAgIDYzMDAsIDAsIDcxMjIsIDAsIDQzOTAsIDQ1NCwgNDEzOTcsIDAsIDk4NzUsIDc1OTMsIDE5NDc5MSwgOTIyNzQsIDExODkxMywgCisgICAgNzIwNywgMCwgNjU5MDEsIDIzOTQsIDI1NzUsIDAsIDM3NDYsIDExMDE2LCA2NTc1MiwgMTIwMDM3LCAwLCA0MzQyMywgCisgICAgMTI4NjgzLCAxMTk4OSwgMCwgMCwgMCwgMCwgMCwgODI0OSwgMTI4MTcyLCAwLCA3ODUzMSwgNjY0MCwgNzQ4MDYsIDI1OTgsIAorICAgIDUxMywgMCwgNjU4NiwgODY1NiwgMCwgMTIwNzEwLCA2NTAwOCwgMCwgMTk0Nzg0LCAxOTQ5ODksIDE5NDc5NSwgOTgzNDY1LCAKKyAgICA5MjUxNSwgNjg0NzUsIDkzOTczLCAwLCAwLCA3ODYzNywgMTI2NDcsIDAsIDEyODA0MywgNjk4OTMsIDEwMzYsIDk4MzQ2OSwgCisgICAgOTI0MTksIDE3MjMsIDEyODA1NiwgNzQyMTcsIDAsIDQxNTc5LCAyNDQ0LCAwLCAxMDcwNSwgNzM4NzYsIDk4MzQ2MSwgCisgICAgNzQ0ODYsIDk4MzQ1OSwgNzQwLCAxMTkyMjIsIDE5NDk3OCwgMTk0OTg0LCAwLCA0MjM4LCAxMTA3MSwgOTQ1OSwgNjg0MzcsIAorICAgIDc4MTQwLCA3ODEzOSwgMTk0OTg1LCA4MTIxLCAxMDQzOCwgNzQ0ODcsIDQyNTc0LCAxMzI4NSwgNTUyNjMsIDExOTA3LCAKKyAgICAxOTUwMDAsIDU2OTAsIDkyMjU1LCA5Mzk5MiwgMCwgNDMxODEsIDEzMDk1LCAwLCAxMjc4NTcsIDY0NDk4LCAwLCA5NTA2LCAKKyAgICA2OTc4LCAxOTQ5OTMsIDc3OTkyLCAwLCAwLCAxOTQ5OTIsIDAsIDEyNzg0NSwgMTEyMiwgMzE3LCAwLCAwLCAwLCAwLCAKKyAgICAxOTIwLCAwLCAxMDE3MywgODI3LCAwLCAwLCA3ODM3OCwgMTIwMTI2LCA1MjIzLCAxMzA0LCAwLCAxMTk1NjQsIDUyMjYsIAorICAgIDEyNjAyLCA5NDA0NCwgMCwgOTMyOSwgNzc1OCwgOTIzOSwgNDExNzMsIDUyMjQsIDU0ODcsIDEyMjIsIDU2OTIsIDQxNzI1LCAKICAgICA2OTIyOSwgOTY3NCwgNTY5NSwgNDE3MTEsIDY0NjI3LCAxOTkwOSwgMCwgNzQ2MDQsIDU2OTEsIDI4NywgODY2LCAyMzMsIAotICAgIDEyNzQ5MCwgMCwgNDI4MTYsIDAsIDY1MTQwLCA3NDc5NywgMCwgODgzMCwgNjU2OCwgNDIzMDAsIDEwNTI0LCA0MTE3NSwgMCwgCi0gICAgMCwgMCwgNTI5NiwgMCwgNDI0OTIsIDQzNDAyLCA5MjQ2NiwgMzMwMiwgMCwgMCwgNjUxNiwgNjUxNSwgNjUxNCwgNjUxMywgCi0gICAgNjUxMiwgMCwgNzg1NiwgODY5MCwgMCwgMCwgMTIxMjIsIDExOTYwMiwgNDM5NzYsIDAsIDE3ODUsIDkyNTA3LCA2ODYyMiwgCi0gICAgNjUxNTMsIDE5NDgxMCwgNTEzOCwgMCwgMCwgMCwgMCwgNDU0MCwgNDExODEsIDAsIDYyMDAsIDAsIDUxMzQsIDAsIDMyMiwgCi0gICAgNDY0MywgNTEzMiwgMCwgNjM4OSwgMCwgNTE0MywgMCwgODc5MCwgMTI4Njk0LCAwLCAxOTQ4MDIsIDAsIDg4NjksIAotICAgIDEyMDYwMSwgMCwgNDIwNjAsIDAsIDAsIDE5NDgwNCwgMTI3MDEyLCAxMDI3MCwgMTAyODYsIDEwMzE4LCAxMDM4MiwgCi0gICAgNDM1MjksIDY2NDc3LCAwLCAwLCA3NDE3MCwgMCwgMzIzNCwgMCwgMCwgNzQzNzYsIDQzMTM5LCAxMTg4MTUsIDEyNzA4NCwgCi0gICAgMTIwNjI3LCA4NzY3LCAwLCA3NDQ4OSwgOTY5NSwgMTIwNzQ2LCA1MjAxLCAwLCA2MjE1LCAxMjcxNCwgNjIxNCwgMTMxMDEsIAotICAgIDAsIDE5NDk5OSwgNjUyNjgsIDAsIDAsIDAsIDExMDI3LCAwLCAxMDA1OSwgMTA1MTEsIDQyMDc1LCA5NzY3LCA3ODksIAotICAgIDE3NDksIDc4ODkwLCAxMjcwNzEsIDAsIDMyMCwgMCwgODY0NywgMCwgMzA0OSwgMCwgNjQ3MSwgNDIwNzEsIDQzMTU2LCAKLSAgICA5OTI1LCAxMjczNTYsIDEyNzM1NSwgNjY0NzgsIDQ5NjAsIDU1NDksIDEyNzM1OSwgMTI3MzQ2LCA4NDg1LCA0NjcxLCAKLSAgICA1NDE4LCAxMjczNTAsIDMzNTEsIDEyNzAwNiwgMTI3MzUxLCAxMDYxMCwgNTQxNCwgMzA2NCwgNjIxMiwgNDI4NiwgNTQyMSwgCi0gICAgMTI3MzQ0LCA5NTU0LCAwLCAxMjc3OTQsIDEyNzEwOSwgNjY1MywgMTI4ODExLCAwLCA2NDUxMCwgNjIxMywgMTI4ODUsIDAsIAotICAgIDExOTA0NSwgNjQ3MjAsIDAsIDEyMDc1OSwgNzM3NDEsIDEyNjAzLCA3MTMxLCAxMTQzMCwgNDU2NiwgNzg0MywgOTMxNywgCi0gICAgMzgwMSwgMTAzNDIsIDEwNDA2LCAwLCAxMTkyNTksIDQyNTc2LCAwLCA1MjAwLCAwLCA5MTc5NDgsIDAsIDkxODMsIAotICAgIDEyNzM2MSwgNzQ0NTgsIDczODI1LCAzOTUsIDU0ODIsIDUxOTgsIDg3ODYsIDEwMzkwLCA3NDIwMiwgNTE5NiwgNDMyMjQsIAotICAgIDYxMTMsIDQyMDA5LCA1MjA1LCAwLCA0MzMwNywgMCwgMTE4OTczLCAwLCAxMjEzNCwgMCwgMCwgMTE4ODQzLCA5MTI2LCAKLSAgICA0MzUsIDAsIDEyMDE0LCAxMDM3NywgODA5MywgOTA3OSwgMzIwMywgMTkyLCA2NTEwOSwgMzM4NSwgMCwgNjQ0MzAsIDUzODMsIAotICAgIDEwMjk0LCAxMDMyNiwgMTI4MTc4LCA1NzM4LCAwLCAzMzM2LCA3ODM1NSwgNTM2MSwgMzYyMywgNDExNTksIDAsIDY4MTEyLCAKLSAgICA3ODcyLCA4NTgxLCAwLCAxMjYwLCAzMTQ5LCA1MzU5LCAwLCAwLCA3OTE0LCA1MzU3LCA5MjE3MCwgMTI4NjU5LCAyNjI0LCAKLSAgICA1MzY0LCAwLCAxMTQzMSwgMTIwMDMwLCA5MTAxLCAxMTA1OCwgNzgyODgsIDAsIDc4MjkzLCA0MjI3MSwgNzgyODksIAotICAgIDQyOTE3LCAxMjA3OTMsIDAsIDY1NTY2LCA2NzE3LCAxMDYxOSwgNDMzNjAsIDc4Mzg1LCA3ODM4NCwgNzgzODMsIDc4MzgyLCAKLSAgICA3ODM4MSwgNzgzODAsIDc4Mzc5LCA5MzE5LCA3MDk3LCAxMTkwNTUsIDc3OTA2LCAzMjMyLCA3MzgyNCwgNzQ1ODEsIAotICAgIDEyMDYzMiwgMCwgMCwgNDE4ODksIDkyNDUzLCAwLCAxMTYxLCA0MTg5NSwgNzQxMDMsIDk3MDEsIDg2MjIsIDAsIDAsIAotICAgIDczODE5LCAxMjA1ODgsIDUwMTIsIDc3OTEyLCA0MTM2MiwgMCwgNzgyOTYsIDExOTIxLCAwLCAxMTc2OSwgMCwgNjg2MDksIAotICAgIDQxMzY0LCAwLCA3NDIyOCwgNDEzNTIsIDQxMzYxLCAwLCA0MTM2NiwgMCwgMzM1NiwgMCwgOTE3LCA2ODQyMiwgMTE5OTE1LCAKLSAgICA3MTM0LCA4MTk5LCA3ODM4OSwgMTE5OTE3LCA2NzcsIDExOTkxNiwgMCwgMTE5OTMyLCAxMjcxNjksIDAsIDAsIDAsIDMzNDksIAotICAgIDc0MTI1LCA3MDIyLCA4OTI3LCA0NzM5LCAwLCA1ODAyLCAwLCA4NjE1LCAwLCAwLCA0OTEsIDAsIDEwMTkwLCAxMjA2OTgsIAotICAgIDY1ODM3LCAxMjg4MjAsIDg0MjYsIDExMDkyLCA5ODkxLCAwLCA0MjQ5NywgNzExMywgNzU4NiwgNDIzMDUsIDEwODUyLCAwLCAKLSAgICAwLCA0NjA2LCA2ODQ0OCwgOTA5NSwgNzc0MSwgMTI2ODQsIDQxODg1LCAxMDQ2LCA3MTI0LCAwLCAwLCA1ODE1LCA1MTcxLCAKLSAgICA2NTUzOSwgNjg2MTIsIDY5MzIsIDc4MzE1LCA0MjM5NCwgNDE4NzgsIDc0ODQ5LCAxMjA2MjEsIDAsIDUxNjksIDExOTM1LCAKLSAgICAwLCAwLCAzMTc1LCAxMjA4MjIsIDE1MzcsIDEyMDgwNCwgNTE3NiwgODkwNSwgNDEzNiwgNDg3MSwgNzgyODcsIDAsIDk4MzMsIAotICAgIDAsIDAsIDExMjgsIDY1OTIwLCAwLCA5NzExLCA3MDU3LCA5NDA4LCA5NDA5LCA5NDEwLCA5NDExLCAzNjYyLCA5NDEzLCAKLSAgICAzMzc4LCA5NDE1LCA5NDE2LCA5NDE3LCA5NDE4LCA2MzIwLCA5NDIwLCA5NDIxLCA1ODk3LCA5NDIzLCA1MTY1LCA1MTI2LCAKLSAgICA0MTM4NSwgMCwgNDEzODksIDkxNzkzOCwgODk1NSwgMzM3NCwgOTQwMCwgOTQwMSwgNzExOSwgOTQwMywgOTQwNCwgMzUwNywgCi0gICAgOTQwNiwgNzYyOSwgMCwgMTk5MjUsIDQyNjY5LCA2ODQ2MywgMTgzLCA0Mzk4NSwgMjYzMSwgMCwgMTA2MjcsIDQxMTMwLCAKLSAgICA3ODI2MCwgMzk5NiwgMCwgNzg3NzEsIDAsIDExOTMxMywgMTE5MzA3LCA3ODc2OCwgNjU4MCwgNDMzMiwgNjQ4MjUsIAotICAgIDY2MzI5LCAxMDcyNiwgNjY2ODYsIDQxMTI1LCA1ODk5LCA0MTM2NSwgOTE3OTE4LCAxMjA4NSwgMCwgNTc0LCA5MTc5MjIsIAotICAgIDc3ODI1LCA3MzgyOCwgNTQ0OCwgNDEwNTgsIDU0NDYsIDY5NzA5LCA0MTMyMiwgNDIyMTEsIDU0NDIsIDQxOTAsIDc3ODM0LCAKLSAgICA3NzgzNSwgNTQ1MSwgNzc4MzMsIDM2MTYsIDc3ODI4LCA3NzgzNywgNzc4MzgsIDc3MDgsIDc3ODM2LCAxMDg1OSwgNjU4NjcsIAotICAgIDEwMzQ1LCAxMDQwOSwgNDE5MSwgMCwgNzc4NDQsIDczODAwLCA0MjE4MSwgNzc4NDMsIDc3ODM5LCAyMDYwLCAwLCA3MTExLCAKLSAgICAxMTc4OCwgNjU1ODcsIDY4MTI5LCAxMDQxNSwgNzQxMDIsIDAsIDIwNSwgMCwgMTAzNTEsIDExOTA3NiwgMCwgOTg2MiwgCi0gICAgNjU4OCwgNDMyNTcsIDY0Njk3LCA3Mzk5OCwgNDEzNTUsIDU1MDUsIDExOTE1NCwgNTUwMywgODAyMSwgMCwgNzEyNSwgCi0gICAgOTgxOSwgNDEzNTcsIDgwMTEsIDQyODg1LCA1NTA3LCAxMjA0NCwgOTI2MzYsIDAsIDEwMDI2LCA1NDcyLCA3MTA5LCAxMTkxLCAKLSAgICAxMzEwNiwgNTQ3MCwgMTAzMjksIDU0NzYsIDg5OTEsIDY2MzIyLCA2OTc3OCwgNzgyNjcsIDQyODc0LCA4NTUwLCA0Mjg3NiwgCi0gICAgNTU5MiwgMjkxOSwgMCwgMjY3NSwgNTU5NSwgNzg0MTEsIDAsIDQzNjcsIDAsIDAsIDU0NzgsIDU5MDQsIDU1OTQsIDAsIAotICAgIDc0MTUwLCA3MjkxLCA1NTkwLCA3Nzg0OSwgMTMwNjcsIDExODkwOSwgMTIwMzcyLCAwLCA5NzMxLCA2OTczMSwgNjQ2MzMsIAotICAgIDc3ODU3LCA3Nzg1NCwgNzc4NTUsIDc3ODUyLCA3Nzg1MywgNzc4NTAsIDEwNzUwLCA0MzcxNCwgNzc4NTgsIDcxMzcsIDAsIAotICAgIDEyODI5NiwgMTI4ODcsIDEwNTUxLCAxOTQ1NjQsIDc3ODY2LCA3Nzg2NywgNzc4NjQsIDc3ODY1LCA5OTI5LCA1MTk5LCAKLSAgICA5OTM2LCAxMTIwLCA0MjM4NywgMCwgMTQ0NCwgOTQ4NiwgNzU1NCwgNjU4MzksIDU1MjUyLCAwLCAxNDQyLCAwLCA1ODk0LCAKLSAgICAwLCAwLCA0MTE3MSwgOTI1MTEsIDc0MzEzLCAwLCAxMzE2MiwgMCwgMzMzNCwgMCwgMTE4ODAzLCA3Nzg4MSwgNjYwMjIsIDAsIAotICAgIDAsIDE2NTEsIDAsIDg4NjEsIDAsIDAsIDExNDIsIDAsIDgyNzEsIDAsIDAsIDAsIDEyOTAzLCAwLCA0MDAyLCA0MzYyNiwgCi0gICAgMTA0NDIsIDEwNjc2LCAzMzQ0LCAwLCAwLCAxMjkyMCwgMTk0NTYwLCAwLCAwLCA2NjY0MiwgMTI3NywgMCwgNzg3MSwgMCwgCi0gICAgMCwgNzg4NTMsIDAsIDc4ODU0LCAxMjAzNjAsIDAsIDExNzg0LCAwLCA3ODAxMiwgNDcwMCwgNjYzNjYsIDc4ODU4LCAKLSAgICAxMjAzNTksIDExMDEyLCAwLCA3ODg1NiwgOTI0MDAsIDc3ODc5LCA0OTczLCA4Nzg0LCA3Nzg3NywgNzQ4MDQsIDc3ODc0LCAKLSAgICA3Nzg2OSwgNzc4NzEsIDQyNDQwLCAwLCA0MzExOCwgMCwgNDIzNjQsIDY3NzQsIDY3NzMsIDkxNzU2MCwgMTIwMzY5LCAKLSAgICAxMDM0NiwgMTA0MTAsIDc4ODU5LCA5MjQzLCAyNDY0LCA3NDI2MywgNjEwOCwgMzM3MiwgMCwgNjI0NywgNDMxMTcsIAotICAgIDc0NTI2LCA3MTIxLCA3NDE2NiwgMCwgMTIwMzU1LCA5MjUzNywgMCwgMCwgMTk1MDM0LCAwLCAwLCAwLCA3NDIxNywgMzM1NCwgCi0gICAgMTk1MDM3LCA0MTkyLCA5Mjg5LCAxMTg5OTksIDQxMTkxLCAzODc2LCAwLCAxMjc5ODMsIDEyMDY2MCwgNDM2OTYsIDQzMzgwLCAKLSAgICAwLCAwLCAwLCAwLCAxMTYwMywgMCwgMCwgNjU4OSwgMTI4NTg4LCAxOTQ2NzksIDAsIDAsIDAsIDAsIDAsIDQyNTcyLCAKLSAgICAxMjgyNjQsIDEwNjMwLCA3NDgyNywgMTk2MywgMTE4ODg5LCAxMjc5NzgsIDExNjU0LCAwLCA3NTUwLCAxMDY4NiwgNTkwMywgCi0gICAgMCwgNzgwMDksIDQxMzI5LCA5NjYyLCA5MTc5MzcsIDY0Njk4LCAzMzY2LCAxMDM5OSwgMCwgMCwgMTEwMTMsIDEyNzkyNywgCi0gICAgMTI4MzAwLCAwLCA3ODYyMSwgMTk0NjcyLCA2OTI1LCAwLCAwLCA5MTc5MjksIDAsIDExNTY4LCAwLCA0MzM2NywgNjQ1NzksIAorICAgIDEyNzQ5MCwgOTgzNDMzLCA0MjgxNiwgOTQwMzYsIDY1MTQwLCA3NDc5NywgMCwgODgzMCwgNjU2OCwgNDIzMDAsIDEwNTI0LCAKKyAgICA0MTE3NSwgOTgzNDQwLCA5ODM0MzcsIDk4MzQzOCwgNTI5NiwgOTgzNDM2LCA0MjQ5MiwgNDM0MDIsIDkyNDY2LCAzMzAyLCAKKyAgICAwLCAwLCA2NTE2LCA2NTE1LCA2NTE0LCA2NTEzLCA2NTEyLCAwLCA3ODU2LCA4NjkwLCAwLCAwLCAxMjEyMiwgMTE5NjAyLCAKKyAgICA0Mzk3NiwgMCwgMTc4NSwgNjk5MjUsIDY4NjIyLCA2NTE1MywgMTk0ODEwLCA1MTM4LCAwLCAwLCAxMTg4NjksIDAsIDQ1NDAsIAorICAgIDQxMTgxLCAwLCA2MjAwLCAwLCA1MTM0LCAwLCAzMjIsIDQ2NDMsIDUxMzIsIDAsIDYzODksIDEyODUzMywgNTE0MywgMCwgCisgICAgODc5MCwgMTI4Njk0LCAwLCAxOTQ4MDIsIDAsIDg4NjksIDY5OTE2LCAwLCA0MjA2MCwgNzEzMjYsIDk2NDgsIDE5NDgwNCwgCisgICAgMTI3MDEyLCAxMDI3MCwgMTAyODYsIDEwMzE4LCAxMDM4MiwgNDM1MjksIDY2NDc3LCAwLCAwLCA3NDE3MCwgMCwgMzIzNCwgCisgICAgMCwgMCwgNzQzNzYsIDQzMTM5LCAxMTg4MTUsIDEyNzA4NCwgMTIwNjI3LCA4NzY3LCAwLCA3NDQ4OSwgOTY5NSwgMTIwNzQ2LCAKKyAgICA1MjAxLCAwLCA2MjE1LCAxMjcxNCwgNjIxNCwgMTMxMDEsIDAsIDE5NDk5OSwgNjUyNjgsIDAsIDAsIDAsIDExMDI3LCAwLCAKKyAgICAxMDA1OSwgMTA1MTEsIDQyMDc1LCA5NzY3LCA3ODksIDE3NDksIDc4ODkwLCAxMjcwNzEsIDk4MzY2MSwgMzIwLCAwLCAKKyAgICA4NjQ3LCAwLCAzMDQ5LCAwLCA2NDcxLCA0MjA3MSwgNDMxNTYsIDk5MjUsIDEyNzM1NiwgMTI3MzU1LCA2NjQ3OCwgNDk2MCwgCisgICAgNTU0OSwgMTI3MzU5LCAxMjczNDYsIDg0ODUsIDQ2NzEsIDU0MTgsIDEyNzM1MCwgMzM1MSwgMTI3MDA2LCAxMjczNTEsIAorICAgIDEwNjEwLCA1NDE0LCAzMDY0LCA2MjEyLCA0Mjg2LCA1NDIxLCAxMjczNDQsIDk1NTQsIDAsIDk0MDQ4LCAxMjcxMDksIAorICAgIDY2NTMsIDEyODgxMSwgMCwgNjQ1MTAsIDYyMTMsIDEyODg1LCAwLCAxMTkwNDUsIDY0NzIwLCAwLCAxMjA3NTksIDczNzQxLCAKKyAgICAxMjYwMywgNzEzMSwgMTE0MzAsIDQ1NjYsIDc1MTgsIDkzMTcsIDM4MDEsIDEwMzQyLCAxMDQwNiwgMCwgMTE5MjU5LCAKKyAgICA0MjU3NiwgMCwgNTIwMCwgMTI2NjExLCA5MTc5NDgsIDAsIDkxODMsIDEyNzM2MSwgNzQ0NTgsIDczODI1LCAzOTUsIDU0ODIsIAorICAgIDUxOTgsIDQzNDksIDEwMzkwLCA3NDIwMiwgNTE5NiwgNDMyMjQsIDYxMTMsIDQyMDA5LCA1MjA1LCAwLCA0MzMwNywgMCwgCisgICAgMTE4OTczLCAwLCAxMjEzNCwgMCwgMCwgMTE4ODQzLCA5MTI2LCA0MzUsIDAsIDEyMDE0LCAxMDM3NywgODA5MywgOTA3OSwgCisgICAgMzIwMywgMTkyLCA2NTEwOSwgMzM4NSwgMCwgNjQ0MzAsIDUzODMsIDEwMjk0LCAxMDMyNiwgMTI4MTc4LCA1NzM4LCAKKyAgICA5ODMyMTMsIDMzMzYsIDc4MzU1LCA1MzYxLCAzNjIzLCA0MTE1OSwgMCwgNjgxMTIsIDc4NzIsIDg1ODEsIDAsIDEyNjAsIAorICAgIDMxNDksIDUzNTksIDEyMDEzNCwgMCwgNzkxNCwgNTM1NywgOTIxNzAsIDEyODY1OSwgMjYyNCwgNTM2NCwgMCwgMTE0MzEsIAorICAgIDEyMDAzMCwgOTEwMSwgMTEwNTgsIDc4Mjg4LCAwLCA3ODI5MywgNDIyNzEsIDc4Mjg5LCA0MjkxNywgMTIwNzkzLCAwLCAKKyAgICA2NTU2NiwgNjcxNywgMTA2MTksIDQzMzYwLCA3ODM4NSwgNzgzODQsIDExODMyLCA3ODM4MiwgNzgzODEsIDc4MzgwLCAKKyAgICA3ODM3OSwgOTMxOSwgNzA5NywgMTE5MDU1LCA3NzkwNiwgMzIzMiwgNzM4MjQsIDc0NTgxLCAxMjA2MzIsIDAsIDAsIAorICAgIDQxODg5LCA5MjQ1MywgMCwgMTE2MSwgNDE4OTUsIDc0MTAzLCA5NzAxLCA4NjIyLCAwLCAwLCA3MzgxOSwgMTIwNTg4LCAKKyAgICA1MDEyLCA3NzkxMiwgNDEzNjIsIDY5ODYyLCA3ODI5NiwgMTE5MjEsIDAsIDExNzY5LCAwLCA2ODYwOSwgNDEzNjQsIDAsIAorICAgIDc0MjI4LCA0MTM1MiwgNDEzNjEsIDAsIDQxMzY2LCAwLCAzMzU2LCAwLCA5MTcsIDY4NDIyLCAxMTk5MTUsIDcxMzQsIAorICAgIDgxOTksIDc4Mzg5LCAxMTk5MTcsIDY3NywgMTE5OTE2LCAwLCAxMTk5MzIsIDEyNzE2OSwgMCwgMCwgMCwgMzM0OSwgCisgICAgNzQxMjUsIDcwMjIsIDg5MjcsIDQ3MzksIDAsIDU4MDIsIDAsIDg2MTUsIDAsIDAsIDQ5MSwgMTI4ODE5LCAxMDE5MCwgCisgICAgMTIwNjk4LCA2NTgzNywgMTI4ODIwLCA4NDI2LCAxMTA5MiwgOTg5MSwgMCwgNDI0OTcsIDcxMTMsIDc1ODYsIDQyMzA1LCAKKyAgICAxMDg1MiwgMCwgMCwgNDYwNiwgNjg0NDgsIDkwOTUsIDc3NDEsIDEyNjg0LCA0MTg4NSwgMTA0NiwgNzEyNCwgMCwgMCwgCisgICAgNTgxNSwgNTE3MSwgNjU1MzksIDY4NjEyLCA2OTMyLCA3NDI2NywgNDIzOTQsIDQxODc4LCA3NDg0OSwgMTIwNjIxLCAwLCAKKyAgICA1MTY5LCAxMTkzNSwgMCwgMCwgMzE3NSwgMTIwODIyLCAxNTM3LCAxMjA4MDQsIDUxNzYsIDg5MDUsIDQxMzYsIDQ4NzEsIAorICAgIDc4Mjg3LCAwLCA5ODMzLCAwLCAwLCAxMTI4LCA2NTkyMCwgMCwgOTcxMSwgNzA1NywgOTQwOCwgOTQwOSwgOTQxMCwgOTQxMSwgCisgICAgMzY2MiwgOTQxMywgMzM3OCwgOTQxNSwgOTQxNiwgOTQxNywgOTQxOCwgNjMyMCwgOTQyMCwgOTQyMSwgNTg5NywgOTQyMywgCisgICAgNTE2NSwgNTEyNiwgNDEzODUsIDAsIDQxMzg5LCA5MTc5MzgsIDg5NTUsIDMzNzQsIDk0MDAsIDk0MDEsIDcxMTksIDk0MDMsIAorICAgIDk0MDQsIDM1MDcsIDk0MDYsIDc2MjksIDk4MzYxNywgMTk5MjUsIDQyNjY5LCA2ODQ2MywgMTgzLCA0Mzk4NSwgMjYzMSwgMCwgCisgICAgMTA2MjcsIDQxMTMwLCA3ODI2MCwgMzk5NiwgMCwgNzg3NzEsIDAsIDExOTMxMywgMTE5MzA3LCA3ODc2OCwgNjU4MCwgCisgICAgNDMzMiwgNjQ4MjUsIDY2MzI5LCAxMDcyNiwgNjY2ODYsIDQxMTI1LCA1ODk5LCA0MTM2NSwgOTE3OTE4LCAxMjA4NSwgMCwgCisgICAgNTc0LCA5MTc5MjIsIDc3ODI1LCA3MzgyOCwgNTQ0OCwgNDEwNTgsIDU0NDYsIDY5NzA5LCA0MTMyMiwgNDIyMTEsIDU0NDIsIAorICAgIDQxOTAsIDc3ODM0LCA3NzgzNSwgNTQ1MSwgNzc4MzMsIDM2MTYsIDc3ODI4LCA3NzgzNywgNzc4MzgsIDc3MDgsIDc3ODM2LCAKKyAgICAxMDg1OSwgNjU4NjcsIDEwMzQ1LCAxMDQwOSwgNDE5MSwgMCwgNzc4NDQsIDczODAwLCA0MjE4MSwgNzc4NDMsIDc3ODM5LCAKKyAgICAyMDYwLCAwLCA3MTExLCAxMTc4OCwgNjU1ODcsIDY4MTI5LCAxMDQxNSwgNzQxMDIsIDAsIDIwNSwgMCwgMTAzNTEsIAorICAgIDExOTA3NiwgMCwgOTg2MiwgNjU4OCwgNDMyNTcsIDY0Njk3LCA3Mzk5OCwgNDEzNTUsIDU1MDUsIDExOTE1NCwgNTUwMywgCisgICAgODAyMSwgMCwgNzEyNSwgOTgxOSwgNDEzNTcsIDgwMTEsIDQyODg1LCA1NTA3LCAxMjA0NCwgOTI2MzYsIDAsIDEwMDI2LCAKKyAgICA1NDcyLCA3MTA5LCAxMTkxLCAxMzEwNiwgNTQ3MCwgMTAzMjksIDU0NzYsIDg5OTEsIDY2MzIyLCA2OTc3OCwgNzgyNjcsIAorICAgIDQyODc0LCA4NTUwLCA0Mjg3NiwgNTU5MiwgMjkxOSwgMCwgMjY3NSwgNTU5NSwgNzg0MTEsIDQzNzYyLCA0MzY3LCAwLCAwLCAKKyAgICA1NDc4LCA1OTA0LCA1NTk0LCAwLCA3NDE1MCwgNzI5MSwgNTU5MCwgNDM3NjEsIDEzMDY3LCAxMTg5MDksIDEyMDM3MiwgCisgICAgOTgzMTA4LCA5NzMxLCA2OTczMSwgNjQ2MzMsIDc3ODU3LCA3Nzg1NCwgNzc4NTUsIDc3ODUyLCA3Nzg1MywgNzc4NTAsIAorICAgIDEwNzUwLCA0MzcxNCwgNzc4NTgsIDcxMzcsIDAsIDEyODI5NiwgMTI4ODcsIDEwNTUxLCAxOTQ1NjQsIDc3ODY2LCA3Nzg2NywgCisgICAgNzc4NjQsIDc3ODY1LCA5OTI5LCA1MTk5LCA5OTM2LCAxMTIwLCA0MjM4NywgMCwgMTQ0NCwgOTQ4NiwgNzU1NCwgNjU4MzksIAorICAgIDU1MjUyLCA3Mzk3MiwgMTQ0MiwgMCwgNTg5NCwgNzAwNjksIDAsIDQxMTcxLCA5MjUxMSwgNzQzMTMsIDAsIDEzMTYyLCAwLCAKKyAgICAzMzM0LCAxOTUwMTAsIDExODgwMywgNzc4ODEsIDY2MDIyLCAwLCAwLCAxNjUxLCAxMjg3NzEsIDg4NjEsIDAsIDAsIDExNDIsIAorICAgIDAsIDgyNzEsIDAsIDk4MzA1OCwgMTI2NjQ1LCAxMjkwMywgMCwgNDAwMiwgNDM2MjYsIDEwNDQyLCAxMDY3NiwgMzM0NCwgMCwgCisgICAgMCwgMTI5MjAsIDE5NDU2MCwgMCwgMCwgNjY2NDIsIDEyNzcsIDAsIDc4NzEsIDAsIDAsIDc4ODUzLCAwLCA3ODg1NCwgCisgICAgMTIwMzYwLCAwLCAxMTc4NCwgMCwgNzgwMTIsIDQ3MDAsIDY2MzY2LCA3ODg1OCwgMTIwMzU5LCAxMTAxMiwgMCwgNzg4NTYsIAorICAgIDkyNDAwLCA3Nzg3OSwgNDk3MywgODc4NCwgNzc4NzcsIDc0ODA0LCA3Nzg3NCwgNzc4NjksIDc3ODcxLCA0MjQ0MCwgMCwgCisgICAgNDMxMTgsIDAsIDQyMzY0LCA2Nzc0LCA2NzczLCA5MTc1NjAsIDEyMDM2OSwgMTAzNDYsIDEwNDEwLCA3ODg1OSwgOTI0MywgCisgICAgMjQ2NCwgNzQyNjMsIDYxMDgsIDMzNzIsIDAsIDYyNDcsIDQzMTE3LCA3NDUyNiwgNzEyMSwgNzQxNjYsIDAsIDEyMDM1NSwgCisgICAgOTI1MzcsIDAsIDAsIDE5NTAzNCwgMCwgMCwgMCwgNzAwODMsIDMzNTQsIDE5NTAzNywgNDE5MiwgOTI4OSwgMTE4OTk5LCAKKyAgICA0MTE5MSwgMzg3NiwgMCwgNzAwNjcsIDEyMDY2MCwgNDM2OTYsIDQzMzgwLCAwLCA5ODMwOTEsIDAsIDAsIDExNjAzLCAKKyAgICA5ODM5NDUsIDAsIDY1ODksIDEyODU4OCwgMTk0Njc5LCAwLCAwLCA5ODM2OTEsIDAsIDAsIDQyNTcyLCAxMjgyNjQsIAorICAgIDEwNjMwLCA3NDgyNywgMTk2MywgMTE2MjIsIDEyNzA5OCwgMTE2NTQsIDAsIDc1NTAsIDEwNjg2LCA1OTAzLCAwLCA3ODAwOSwgCisgICAgNDEzMjksIDk2NjIsIDkxNzkzNywgNjQ2OTgsIDMzNjYsIDEwMzk5LCAwLCA1NTQyLCAxMTAxMywgMTI3OTI3LCAxMjgzMDAsIAorICAgIDAsIDc4NjIxLCAxOTQ2NzIsIDY5MjUsIDAsIDAsIDkxNzkyOSwgMCwgMTE1NjgsIDk4MzY2NCwgNDMzNjcsIDY0NTc5LCAKICAgICA5MTc5MzAsIDc4NTIsIDAsIDAsIDY3NTQsIDYzMTIsIDAsIDY0NjcyLCA2NTI5NiwgMCwgMTE4OTU3LCAwLCA0MTYsIAotICAgIDEyMjk2LCA2ODQ1NywgNzM4MzQsIDY4MTc3LCAxMTA1MCwgMTA5ODQsIDkyMjA4LCAwLCAwLCA5MjE4MiwgMCwgMCwgOTUzMiwgCi0gICAgNjYzNTUsIDAsIDAsIDkxNzkyNSwgNjQzNDMsIDE5NTAzMiwgMTI4MjgxLCAxOTUwMzEsIDAsIDAsIDE5NTA1NywgMTE0NDUsIAotICAgIDAsIDIxMTIsIDE5NTA1NiwgMTI4ODE0LCAxMDE4NSwgMTAyMSwgMTI4MTMwLCA5NTA3LCAxMDIxMCwgNzQ1NDQsIDgwMjMsIAotICAgIDEyMDAsIDEyMjQzLCA3ODAwMSwgNTI4MiwgNzgwMDMsIDk2MjQsIDExNTQ1LCAwLCAxMjA0OTMsIDMzNDMsIDQ0MjQsIAotICAgIDExMDQ3LCAxODg1LCA0MzI2OCwgMzg5NiwgNzg2MjYsIDY2NDk3LCAyOTQ3LCAzOTIsIDc4OTQsIDQzOTEsIDY4MTM5LCAwLCAKLSAgICAxMzA1OSwgNzQ4MTYsIDc3OTk4LCAzMzgxLCA3OTQyLCAwLCA2OTIxOSwgMCwgNjQ3NTcsIDAsIDM5MTMsIDAsIDAsIAotICAgIDc4MjM1LCA3MDQ0LCAxMjY1LCAwLCA2MzA5LCA3MDQ1LCA3MTc1LCA3MDQ3LCA3ODIzOSwgMTE3OTEsIDAsIDAsIDgyMjEsIAotICAgIDc4MzA3LCA0MTg2NCwgMCwgMCwgMCwgMCwgMTY3LCAwLCA3ODMwMSwgMCwgNzQyMTEsIDQxODk3LCA2ODQ3NywgMCwgCi0gICAgOTE3NTgzLCAwLCAwLCAyNDkzLCAwLCAxMTg4MTEsIDAsIDAsIDY0MzU0LCAwLCA4Nzc3LCAwLCA0MDYsIDg4ODQsIDIzODUsIAotICAgIDAsIDkyNDUwLCAwLCA5MTc1NzMsIDQzMDMwLCA0MjAyNywgMTIxMTQsIDAsIDkxNzU3OSwgNjQ5MzYsIDE5NDY5NSwgMCwgCi0gICAgMTIwNjI5LCAxMDU2MSwgMCwgODM2NSwgMTIwNTM5LCAwLCA2NTg0MSwgMTIwNzg3LCAxMTYwMSwgMCwgNzQxMjEsIDAsIAotICAgIDkxNzU3NSwgNzgzNCwgNzQxNTksIDAsIDkxNzU3NCwgMTAyOTgsIDY2MjQsIDQ5MDgsIDkxNzU5NiwgMTYzOSwgMCwgMCwgCi0gICAgNzQxNTcsIDYzMjcsIDY3MjQsIDAsIDEyODA4NiwgOTI1NjYsIDAsIDQ4MTcsIDc4NDQ2LCAxOTQ3NTksIDkyNTM2LCA3MDQzLCAKLSAgICA5NjAwLCAxMTAyMiwgMCwgMCwgMCwgMCwgMCwgMCwgNzU0OCwgNjQ3OTQsIDQyMDUwLCAxMjI5MSwgNTUyODksIDE5NDc2MSwgCi0gICAgMTIzNDMsIDY1NywgMTk1MDU0LCA0MjcwNSwgNDQ2MSwgMTEzNCwgMTgzOCwgNzg0MzgsIDIwNTcsIDAsIDQ0NjgsIDAsIDAsIAotICAgIDAsIDQ0NTYsIDUyMDYsIDEwNzIwLCAwLCA0MjUyMywgMTI3NTIwLCAwLCAwLCA5MTc1OTUsIDY1NTUwLCAyNjAsIDQ4MTYsIAotICAgIDY3NjU4LCAxMDY4NywgMCwgNDgyMSwgNDQ2NiwgMCwgMTk1MDQzLCA0ODE4LCAxOTUwNDgsIDQxNDAzLCAxMTk5NzcsIDAsIAotICAgIDAsIDQxNDA2LCA0MzI3MywgNzQxNjAsIDExOTk4MywgNzM5MzksIDkyNjM4LCAxMTk5ODQsIDExOTk3OSwgNDE0MDQsIAotICAgIDExNjUsIDExOTk4MCwgNDQ1MSwgMTMwODcsIDAsIDExMjg0LCAxMTk5ODcsIDczODU1LCA2NTE1NSwgNDMwMTQsIDU0MzksIAotICAgIDkzNjMsIDEyNzU1OCwgMzM3NSwgMTI4ODY5LCA1OTAwLCAwLCA3ODg5LCAyNzIyLCA0MjI2MiwgMCwgMCwgMTI4Nzc0LCAwLCAKLSAgICAwLCAwLCAxMjc4MTAsIDExNDAxLCAwLCAwLCA2ODQ1OSwgMCwgMCwgMCwgMCwgNjU0MzgsIDAsIDcyODAsIDEyNzg4NywgMCwgCi0gICAgMTI3MzgxLCA0ODY4LCAxMTk5NjcsIDExOTk2NiwgMTE4Nzk4LCAwLCAwLCA0MzE2MSwgMCwgOTIzNjAsIDAsIDUxODIsIDAsIAotICAgIDEyMDU0MiwgMCwgMCwgNDIyNiwgMTIwNzk4LCAxMjEzNSwgNTczMiwgNDQ2NCwgMCwgMCwgOTc3LCA0NDU4LCAwLCAwLCAKLSAgICA2NDc3MCwgNzQ4MzgsIDAsIDM0NCwgMCwgMTk0NzkwLCAxMzk1LCA2NDI3OSwgMCwgOTIyNDAsIDAsIDc4NiwgMCwgNDMxNzQsIAotICAgIDY0MzQwLCAwLCAwLCAxMjA3MjMsIDQzMDI2LCA3NjEyLCAxMDEzMiwgNjQ0MTMsIDY1MDI1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2ODQ0NCwgMCwgOTI0MzcsIDAsIDExOTE2MCwgMTAyMDQsIDkyNjU2LCAwLCAxMjc4MDksIDAsIDEzOTksIDAsIDY1MjE3LCAKLSAgICAwLCA4ODUyLCAwLCAyNDEsIDEyODc4MCwgNDkwNywgMCwgMCwgNzkzMiwgOTcyNywgMTI4ODczLCA3NDI1NSwgODc0OCwgMCwgCi0gICAgMCwgMCwgMCwgNDI3ODAsIDAsIDAsIDAsIDQyMTcsIDAsIDg2NTAsIDAsIDAsIDAsIDAsIDExODg3MiwgNDMwOTksIDM5NjUsIAotICAgIDExOTExOSwgNjcxOSwgMCwgMTMzMDAsIDc4NDM5LCAxMjgyNjEsIDQzMDU3LCA2NjU4OCwgMTE4OTkxLCAwLCAwLCA3MzgxNSwgCi0gICAgNDQyMCwgMCwgNjQxMCwgNzc2MCwgMCwgMCwgMCwgMCwgMCwgNzI5NCwgMCwgMCwgMCwgOTA2NiwgMCwgMTE5OTMsIDQzMTg4LCAKLSAgICAyNjI2LCA3NzYyLCAwLCAwLCAwLCA5MjYwMSwgNDI4MjUsIDQxODU0LCA1MzA0LCAwLCA3ODUxNiwgNjkxOSwgODYxOSwgCi0gICAgMTE5NjU1LCAxMDAzOCwgNjY0NTQsIDk1OTIsIDQyODUxLCAxMjY5OTMsIDE1NDIsIDkyMzAzLCAwLCAwLCAwLCAwLCAKLSAgICA3NDMxMSwgNzg0OTcsIDAsIDEwMTgxLCAwLCA0MzYyNCwgMCwgNzc3OSwgMCwgMTAxOTUsIDk0NzksIDYwMjksIDAsIAotICAgIDkyMjY4LCA5Njg5LCAwLCAwLCA4OTkzLCA2NjM1OCwgMCwgNDIzNzgsIDMzNjgsIDYwNiwgMTI3MDMwLCA3Njk3LCA2OTIzNywgCi0gICAgNjk3ODcsIDIwMzAsIDAsIDYwMjcsIDgzNzAsIDQzMjIsIDAsIDY1MjA3LCAwLCAwLCAwLCAwLCAwLCAyNzM1LCA0MjgzMSwgCi0gICAgNzc5MzUsIDEyNzEyMCwgNzQ4NjYsIDg4ODEsIDExOTA0NywgMCwgMCwgNzM5NDYsIDAsIDAsIDAsIDY4MTQwLCAwLCA5NTc2LCAKLSAgICAxMjg4NzIsIDMzNDcsIDQxNjAsIDUxNTQsIDU1Mjg4LCAzNzk0LCA2NjU2NCwgODUzMCwgMTI3MDYzLCA3NzA5LCA0MTExMiwgCi0gICAgMCwgNjY1NjAsIDQyMDQxLCA0NTcyLCAxMjg3NiwgNjY1NjEsIDAsIDY3NTgsIDAsIDE2MTUsIDU4NTUsIDgwOSwgMCwgCi0gICAgOTIyODMsIDEyODMxNiwgMTI4MDA0LCA1Nzk5LCAwLCAwLCAwLCA3MjYwLCAwLCA0MzAzMSwgNjQ0MjUsIDY1MTI4LCAKLSAgICA3ODgxOSwgNjQzODYsIDY1MjU3LCAwLCA2ODYxNiwgMTIwNjA3LCA5MzQ3LCAxMjgwNjcsIDY1MzIsIDAsIDAsIDAsIAotICAgIDEyNzA2MCwgNjU4MjgsIDAsIDI4MywgNjg2NjUsIDc4ODEzLCA1MzIsIDc4NjYzLCAwLCAwLCAxMjA2MDksIDAsIDMzNzAsIAotICAgIDAsIDExMzYxLCA1NDQzLCA3ODc3OCwgODE1MywgNzM3NjcsIDAsIDEwNzQxLCAwLCAwLCAwLCAwLCA2NTQ5NSwgNjQ3MDYsIAotICAgIDAsIDQzMzQ0LCAwLCA3MTQ0LCA5NDY2LCA3ODg2NiwgOTgyNCwgMCwgMCwgMCwgMCwgOTE1LCA0MzQyNSwgMCwgMCwgMCwgMCwgCi0gICAgMTI3MTc4LCA0MzI2NCwgMCwgMCwgMCwgMCwgNzg4NjQsIDY3MzAsIDc4ODYyLCA2ODE2MSwgNjQ1NTAsIDUxODYsIDEyODkwLCAKLSAgICAxMjc4MzcsIDAsIDEyMTA4LCAwLCA2NTEyNCwgNDMxMjcsIDY2MDQzLCAwLCA2MzI2LCA0MzEwNywgNzc4MjYsIDAsIAotICAgIDQyNTYyLCAwLCAwLCAwLCAxMjg1MjAsIDExNDg1LCA2MTAzLCAxMjcxMjMsIDAsIDExNzE4LCAwLCAxMjg4OSwgOTI2NTcsIAotICAgIDEyNzEzNywgMCwgMCwgMCwgNTUyNDUsIDAsIDE2MzAsIDEyODIzMiwgNjU0ODMsIDAsIDEyNTY1LCAwLCA2NTQ3NiwgCi0gICAgMTIwMDEzLCAwLCAxMTk1NTQsIDkyODMsIDc3MDAsIDkxNzUzNywgOTY5MCwgNjU0OTksIDAsIDY0NTkzLCA1MTIsIDMzNzYsIAotICAgIDY4MjEwLCAwLCAwLCA3Nzg5MiwgNjMyLCAxMjk0MCwgNzc4OTEsIDQyNTI5LCA3ODU4NywgMCwgNTk1NywgMTEwNTkzLCAKLSAgICA4OTI2LCAwLCAwLCAxMjgyNzMsIDEwNzQ1LCAxMDE3NCwgNzM3OSwgNjQ1ODEsIDUzODYsIDEyMDY4NiwgMTE3MTMsIAotICAgIDEwNjMzLCA2OTcwOCwgNTA1NiwgMCwgMCwgMCwgMTIwNzczLCAwLCA5ODEyLCAwLCA0NDYwLCAwLCAwLCAwLCAxMjgwMzgsIAotICAgIDAsIDAsIDEyNzE3NCwgNjQyNzgsIDkyMzcwLCA0MzQ2NiwgMCwgMCwgNjQzODksIDI5NTMsIDczODc5LCAxODAxLCAxMjgzNSwgCi0gICAgMTE5MDI5LCAwLCA3MzgyMywgMCwgNjYzNzUsIDIwODUsIDcwMiwgNDI1NzksIDc3ODg0LCA3Nzg4NSwgMTMwNzQsIDc3ODgzLCAKLSAgICAwLCAwLCAxMjg1NzAsIDEyMTA2LCAwLCA3NDIwNywgMTc1NSwgMTA0ODIsIDEyODYzLCA3Nzg5OCwgMTE2MywgMjk1MSwgCi0gICAgOTUyMiwgNzQwNzksIDc4MjY2LCAxMjA2NzQsIDAsIDMzODQsIDY5MjI3LCAxMDcwMiwgODMwLCA3NzkwMiwgNzc4OTksIAorICAgIDEyMjk2LCA2ODQ1NywgNzM4MzQsIDY4MTc3LCAxMTA1MCwgMTA5ODQsIDkyMjA4LCAwLCAwLCA5MjE4MiwgMCwgOTgzNjA1LCAKKyAgICA5NTMyLCA2NjM1NSwgMCwgOTgzMjI4LCA5MTc5MjUsIDY0MzQzLCAxOTUwMzIsIDEyODI4MSwgMTk1MDMxLCAwLCAxOTUwMzAsIAorICAgIDE5NTA1NywgMTE0NDUsIDAsIDIxMTIsIDE5NTA1NiwgMTI4ODE0LCAxMDE4NSwgMTAyMSwgMTI4MTMwLCA5NTA3LCAxMDIxMCwgCisgICAgNzQ1NDQsIDgwMjMsIDEyMDAsIDEyMjQzLCA3ODAwMSwgNTI4MiwgNzgwMDMsIDk2MjQsIDExNTQ1LCAwLCAxMjA0OTMsIAorICAgIDMzNDMsIDQ0MjQsIDExMDQ3LCAxODg1LCA0MzI2OCwgMzg5NiwgNzg0NDQsIDY2NDk3LCAyOTQ3LCAzOTIsIDc4OTQsIAorICAgIDQzOTEsIDY4MTM5LCA5ODMwNjIsIDEzMDU5LCA3NDgxNiwgNzc5OTgsIDMzODEsIDc5NDIsIDAsIDY5MjE5LCAwLCA2NDc1NywgCisgICAgMCwgMzkxMywgMCwgMCwgNzgyMzUsIDcwNDQsIDEyNjUsIDAsIDYzMDksIDcwNDUsIDcxNzUsIDcwNDcsIDc4MjM5LCAKKyAgICAxMTc5MSwgMCwgMCwgODIyMSwgNzgzMDcsIDQxODY0LCAwLCAwLCAwLCAwLCAxNjcsIDk4Mzg5NywgNzgzMDEsIDk4MzY0NCwgCisgICAgNzQyMTEsIDQxODk3LCA2ODQ3NywgMCwgOTE3NTgzLCA5ODM2MjUsIDk0MDY1LCAyNDkzLCAwLCAxMTg4MTEsIDAsIDAsIAorICAgIDY0MzU0LCAwLCA4Nzc3LCAwLCA0MDYsIDg4ODQsIDIzODUsIDAsIDkyNDUwLCAwLCA5MTc1NzMsIDQzMDMwLCA0MjAyNywgCisgICAgMTIxMTQsIDAsIDkxNzU3OSwgNjQ5MzYsIDE5NDY5NSwgMCwgMTIwNjI5LCAxMDU2MSwgMCwgODM2NSwgMTIwNTM5LCAKKyAgICA5ODM3NjUsIDY1ODQxLCAxMjA3ODcsIDExNjAxLCAwLCA3NDEyMSwgMCwgOTE3NTc1LCA3ODM0LCA3NDE1OSwgMCwgCisgICAgOTE3NTc0LCAxMDI5OCwgNjYyNCwgNDkwOCwgOTE3NTk2LCAxNjM5LCAwLCAwLCA3NDE1NywgNjMyNywgNjcyNCwgMCwgCisgICAgMTI4MDg2LCA5MjU2NiwgNjk5MTAsIDQ4MTcsIDc4NDQ2LCAxOTQ3NTksIDkyNTM2LCA3MDQzLCA5NjAwLCAxMTAyMiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNzU0OCwgNjQ3OTQsIDQyMDUwLCAxMjI5MSwgNTUyODksIDE5NDc2MSwgMTIzNDMsIDY1NywgCisgICAgMTk1MDU0LCA0MjcwNSwgNDQ2MSwgMTEzNCwgMTgzOCwgNzg0MzgsIDIwNTcsIDAsIDQ0NjgsIDAsIDAsIDAsIDQ0NTYsIAorICAgIDUyMDYsIDEwNzIwLCAwLCA0MjUyMywgMTI3NTIwLCAwLCAwLCA5MTc1OTUsIDY1NTUwLCAyNjAsIDQ4MTYsIDY3NjU4LCAKKyAgICAxMDY4NywgMCwgNDgyMSwgNDQ2NiwgMCwgMTk1MDQzLCA0ODE4LCAxOTUwNDgsIDQxNDAzLCAxMTk5NzcsIDAsIDAsIAorICAgIDQxNDA2LCA0MzI3MywgNzQxNjAsIDExOTk4MywgNzM5MzksIDkyNjM4LCAxMTk5ODQsIDExOTk3OSwgNDE0MDQsIDExNjUsIAorICAgIDExOTk4MCwgNDQ1MSwgMTMwODcsIDAsIDExMjg0LCAxMTk5ODcsIDcwMDk3LCA2NTE1NSwgNDMwMTQsIDU0MzksIDkzNjMsIAorICAgIDcwMDcwLCAzMzc1LCAxMjg4NjksIDU5MDAsIDkzOTkwLCA3ODg5LCAyNzIyLCA0MjI2MiwgMCwgMCwgMTI4Nzc0LCAwLCAKKyAgICAyMjgyLCAwLCAxMjc4MTAsIDExNDAxLCA5ODM4MTMsIDAsIDY4NDU5LCAwLCAwLCAwLCAwLCA2NTQzOCwgMCwgNzI4MCwgCisgICAgMTI3ODg3LCAwLCAxMjczODEsIDQ4NjgsIDExOTk2NywgMTE5OTY2LCAxMTg3OTgsIDAsIDAsIDQzMTYxLCAwLCA5MjM2MCwgCisgICAgMCwgNTE4MiwgMCwgMTIwNTQyLCAwLCAwLCA0MjI2LCAxMTkyNDMsIDEyMTM1LCA1NzMyLCA0NDY0LCAwLCA3MTMzMCwgOTc3LCAKKyAgICA0NDU4LCAwLCAwLCA2NDc3MCwgNzQ4MzgsIDAsIDM0NCwgMCwgMTk0NzkwLCAxMzk1LCA2NDI3OSwgMCwgOTIyNDAsIDAsIAorICAgIDc4NiwgMCwgNDMxNzQsIDY0MzQwLCAwLCAxOTQ3NjcsIDEyMDcyMywgNDMwMjYsIDc2MTIsIDEwMTMyLCA2NDQxMywgCisgICAgNjUwMjUsIDAsIDAsIDAsIDkzOTU2LCAwLCA2ODQ0NCwgMCwgOTI0MzcsIDAsIDExOTE2MCwgMTAyMDQsIDkyNjU2LCAwLCAKKyAgICAxMjc4MDksIDk4MzYzNSwgMTM5OSwgOTgzNjQzLCA2NTIxNywgMCwgODg1MiwgMTI4NTcxLCAyNDEsIDEyODc4MCwgNDkwNywgCisgICAgMCwgOTgzNjMwLCA3OTMyLCA5NzI3LCAxMjg4NzMsIDc0MjU1LCA4NzQ4LCAwLCAwLCA5ODM2MzQsIDAsIDQyNzgwLCAwLCAwLCAKKyAgICAwLCA0MjE3LCAwLCA4NjUwLCAwLCAwLCAwLCA2OTkwMCwgMTE4ODcyLCA0MzA5OSwgMzk2NSwgMTE5MTE5LCA2NzE5LCAwLCAKKyAgICAxMzMwMCwgNzg0MzksIDkzOTcxLCA0MzA1NywgNjY1ODgsIDExODk5MSwgMCwgMCwgNzM4MTUsIDQ0MjAsIDAsIDY0MTAsIAorICAgIDc3NjAsIDAsIDAsIDAsIDAsIDAsIDcyOTQsIDAsIDAsIDAsIDkwNjYsIDAsIDExOTkzLCA0MzE4OCwgMjYyNiwgNzc2MiwgMCwgCisgICAgMCwgMCwgOTI2MDEsIDQyODI1LCA0MTg1NCwgNTMwNCwgMCwgNzg1MTYsIDY5MTksIDg2MTksIDExOTY1NSwgMTAwMzgsIAorICAgIDY2NDU0LCA5NTkyLCA0Mjg1MSwgMTI2OTkzLCAxNTQyLCA5MjMwMywgMCwgMCwgMCwgMCwgNzQzMTEsIDc4NDk3LCAwLCAKKyAgICAxMDE4MSwgMCwgNDM2MjQsIDAsIDc3NzksIDAsIDEwMTk1LCA5NDc5LCA2MDI5LCAwLCA5MjI2OCwgOTY4OSwgMCwgNjU1NzcsIAorICAgIDg5OTMsIDY2MzU4LCAwLCA0MjM3OCwgMzM2OCwgNjA2LCAxMjcwMzAsIDc2OTcsIDY5MjM3LCA2OTc4NywgMjAzMCwgMCwgCisgICAgNjAyNywgODM3MCwgNDMyMiwgMCwgNjUyMDcsIDAsIDk4MzMzMSwgOTgzMzMwLCA5ODMzMjksIDk4MzMyOCwgMjczNSwgCisgICAgNDI4MzEsIDc3OTM1LCAxMjcxMjAsIDc0ODY2LCA4ODgxLCAxMTkwNDcsIDAsIDAsIDczOTQ2LCAwLCAwLCAwLCA2ODE0MCwgCisgICAgOTgzOTE5LCA5NTc2LCAxMjg4NzIsIDMzNDcsIDQxNjAsIDUxNTQsIDU1Mjg4LCAzNzk0LCA2NjU2NCwgODUzMCwgMTI3MDYzLCAKKyAgICA3NzA5LCA0MTExMiwgOTgzMTMyLCA2NjU2MCwgNDIwNDEsIDQ1NzIsIDEyODc2LCA2NjU2MSwgOTgzNzQ5LCA2NzU4LCAKKyAgICA5ODM5MTcsIDE2MTUsIDU4NTUsIDgwOSwgMCwgOTIyODMsIDEyODMxNiwgMTI4MDA0LCA1Nzk5LCA5ODMzMjAsIDcwMTAwLCAKKyAgICA5ODMzMTgsIDcyNjAsIDk4MzMxNiwgNDMwMzEsIDY0NDI1LCA2NTEyOCwgNzg4MTksIDY0Mzg2LCA2NTI1NywgMCwgNjg2MTYsIAorICAgIDEyMDYwNywgOTM0NywgMTI4MDY3LCA2NTMyLCAwLCAwLCAwLCAxMjcwNjAsIDY1ODI4LCAwLCAyODMsIDY4NjY1LCA3ODgxMywgCisgICAgNTMyLCA3ODY2MywgMCwgOTgzNzg3LCAxMjA2MDksIDAsIDMzNzAsIDAsIDExMzYxLCA1NDQzLCA3ODc3OCwgODE1MywgCisgICAgNzM3NjcsIDAsIDEwNzQxLCAwLCAyMjk4LCAwLCA5ODM5MDgsIDY1NDk1LCA2NDcwNiwgOTgzMzEwLCA0MzM0NCwgOTgzMzA4LCAKKyAgICA3MTQ0LCA5NDY2LCA3ODg2NiwgOTgyNCwgOTgzMzAzLCA5ODMzMDIsIDAsIDAsIDkxNSwgNDM0MjUsIDAsIDAsIDAsIDAsIAorICAgIDEyNzE3OCwgNDMyNjQsIDcwMDk2LCAwLCAwLCA0MzAzOCwgNzg4NjQsIDY3MzAsIDc4ODYyLCA2ODE2MSwgNjQ1NTAsIAorICAgIDUxODYsIDczNjAsIDEyNzgzNywgMCwgMTIxMDgsIDAsIDY1MTI0LCA0MzEyNywgNjYwNDMsIDAsIDYzMjYsIDQzMTA3LCAKKyAgICA3NzgyNiwgMCwgNDI1NjIsIDAsIDEyODgyMSwgMCwgMTI4NTIwLCAxMTQ4NSwgNjEwMywgMTI3MTIzLCA5ODMyOTcsIAorICAgIDExNzE4LCA5ODMyOTUsIDEyODg5LCA5MjY1NywgMTI3MTM3LCAwLCAwLCAwLCA1NTI0NSwgMCwgMTYzMCwgMTI4MjMyLCAKKyAgICA2NTQ4MywgMCwgMTI1NjUsIDAsIDY1NDc2LCAxMjAwMTMsIDAsIDExOTU1NCwgOTI4MywgNzcwMCwgOTE3NTM3LCA5NjkwLCAKKyAgICA2NTQ5OSwgMCwgNjQ1OTMsIDUxMiwgMzM3NiwgNjgyMTAsIDAsIDEyODY3NywgNzc4OTIsIDYzMiwgMTI5NDAsIDc3ODkxLCAKKyAgICA0MjUyOSwgNzg1ODcsIDAsIDU5NTcsIDExMDU5MywgODkyNiwgOTgzMjkxLCA5ODMyOTAsIDEyODI3MywgMTA3NDUsIAorICAgIDEwMTc0LCA3Mzc5LCA2NDU4MSwgNTM4NiwgMTIwNjg2LCAxMTcxMywgMTA2MzMsIDY5NzA4LCA1MDU2LCAwLCAwLCAwLCAKKyAgICAxMjA3NzMsIDAsIDk4MTIsIDAsIDQ0NjAsIDAsIDAsIDcxMzA3LCAxMjgwMzgsIDAsIDAsIDEyNzE3NCwgNjQyNzgsIAorICAgIDkyMzcwLCA0MzQ2NiwgMCwgMCwgNjQzODksIDI5NTMsIDczODc5LCAxODAxLCAxMjgzNSwgMTE5MDI5LCAwLCA3MzgyMywgMCwgCisgICAgNjYzNzUsIDIwODUsIDcwMiwgNDI1NzksIDc3ODg0LCA3Nzg4NSwgMTMwNzQsIDc3ODgzLCA5ODMyNzgsIDk4MzI3NywgCisgICAgMTI4NTcwLCAxMjEwNiwgOTgzMjc0LCA3NDIwNywgMTc1NSwgMTA0ODIsIDEyODYzLCA3Nzg5OCwgMTE2MywgMjk1MSwgCisgICAgOTUyMiwgNzQwNzksIDc4MjY2LCA2NjYwNCwgMCwgMzM4NCwgNjkyMjcsIDEwNzAyLCA4MzAsIDc3OTAyLCA3Nzg5OSwgCiAgICAgNzc5MDAsIDg0NTEsIDAsIDAsIDAsIDY5NzM5LCAwLCAwLCAwLCAwLCAyOTA4LCAwLCA0MzM4NiwgNjQ5MDIsIDQyNDMsIDAsIAotICAgIDEyMjM5LCAwLCAwLCA0NDQxLCAwLCAwLCA3Mzk0MCwgNjQzNTIsIDEyNzUxMywgMCwgNDExLCAwLCA5MTk5LCAwLCA0MDU2LCAKLSAgICAxMTg5OTIsIDQxODkwLCAwLCAyNzMwLCA0MTYwNCwgMCwgNTQyOCwgMTk0NzQzLCAzMzY0LCA0MjI2NSwgNjQ0MzcsIAotICAgIDEyNzkzNSwgMTE4ODE2LCAxOTQ3NDIsIDk2ODQsIDIxNiwgMCwgMTQwMSwgMTI4MDUzLCA0NDAxMiwgMCwgMCwgOTI1ODUsIAotICAgIDkxNTgsIDc3ODQyLCAxMjA2NjQsIDU3NjgsIDAsIDAsIDAsIDQ4NCwgMTk0NzM5LCAwLCAwLCA2NTg5NSwgMCwgMCwgMzMzOCwgCi0gICAgNzM5MzUsIDU3MiwgNzA0MSwgMjczNiwgNjc2MDUsIDAsIDEyODY4MCwgMjc5NCwgODgwNywgNjQ0OTEsIDc3ODQ3LCA1NDM4LCAKLSAgICA1MjIyLCA1MzgxLCA0MzExNCwgMCwgNTE5MywgNTEyNSwgNTQ1NiwgNTUwOSwgNzc4NDYsIDE5NDc0NywgOTUzNCwgMCwgMCwgCi0gICAgMCwgMzQzMCwgMCwgMCwgMCwgMCwgOTgxLCAwLCA0MzMwLCA3MzkyOSwgMTIwNTM2LCAxODI0LCAxMDkwOCwgMCwgNzAzNCwgCi0gICAgNDE2ODMsIDY0NjE3LCAwLCA3Mzc1NCwgMzk1NywgNjQzNTgsIDY0NTQ3LCAxMjgyNTksIDY3NCwgNjM5OTEsIDAsIDI5NDYsIAotICAgIDUzNTQsIDUyNTEsIDUzMjgsIDUzMDcsIDM3NTksIDExNDExLCA4MzY0LCA1MTIzLCAxMTk2MjgsIDUyODEsIDU0NjksIAotICAgIDUxMjEsIDExOTI0NSwgMTE4OTkzLCAwLCA1MTMwLCAwLCAwLCA3Nzk5MCwgMCwgMTIwNzI2LCAxMjIxLCAyNzMzLCAxMTc0NiwgCi0gICAgNzc5OTEsIDUyMTYsIDAsIDAsIDAsIDAsIDM0NjgsIDcwMzMsIDkyMzAsIDU5MzksIDE5NTA1MiwgMCwgMCwgMTIwNjc3LCAKLSAgICA2ODQwMCwgNzI3OCwgMTAzMjEsIDEwMjg5LCA2NDYxMywgMTAzODUsIDQxNzA2LCAwLCAwLCAwLCAwLCAxMTczOSwgMCwgCi0gICAgNDE5ODEsIDAsIDU5MzgsIDAsIDAsIDEyNDQ4LCA3NTc2LCAxMDQwMSwgMTAzMzcsIDczODUyLCAwLCAxMzA1NywgMCwgCi0gICAgMTI2OTc2LCAwLCAxMDAwOSwgMCwgNDE3MDMsIDAsIDEyMTY1LCAwLCAwLCA5ODg1LCAwLCA4MDc3LCAwLCAxMjc5MDgsIDAsIAotICAgIDAsIDAsIDkyNDU3LCAwLCA0MjIwLCAxMDcyNSwgMTA0MzMsIDAsIDY4Mzk1LCA0OTg3LCA2NDUxOSwgMCwgMTI4MzQwLCAwLCAKLSAgICAwLCAwLCAxMDk3MCwgMTE3MzMsIDAsIDEyMDc5MiwgMCwgMTk5NDQsIDAsIDkwMDksIDg1NTEsIDkyMzQ1LCAxMTQ2OCwgCi0gICAgNjQ2MzYsIDc1NzUsIDAsIDI3MjQsIDAsIDAsIDEyMzEzLCAxMTA1OTIsIDUxNSwgMTE5OTQ3LCA0Mjc5MSwgNjM5ODcsIAotICAgIDc4Mjg2LCAxMTk5NDMsIDExOTk0MCwgMTE5OTQxLCAxMTk5MzgsIDk3NzUsIDQwNDYsIDQ1ODksIDQ1MjEsIDY4NjI5LCAKLSAgICA5MTQxLCAwLCA3ODg1MCwgMjc0MSwgNjQzOTksIDYxOTcsIDEzNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxODQsIDg2MDYsIAotICAgIDMzMDMsIDQxMzcyLCAxMTc4NiwgOTQ3MywgNjYyMDMsIDY2MTc3LCA5MjQ0NiwgMTE1OTMsIDQzMDA3LCA0NDc4LCA2NjE3OCwgCi0gICAgMCwgMCwgMjc0NCwgMCwgNDQ3NywgMTE4OTY0LCA4MTQsIDQyMDY2LCA2NjE4MywgNjYyMDQsIDQzNzg2LCAxMTk5NjEsIAotICAgIDY2MTk4LCA0MTg4MCwgNjYxODgsIDY2MTk3LCA3ODE0OCwgMTE5NTUsIDY2MTkwLCA2NjE5MSwgNDExMTEsIDY2MTg5LCAKLSAgICA3Mzc4OCwgNzc4OCwgNDg0NywgMCwgMTI3NzU5LCAwLCAwLCAwLCAxNTgxLCA2NTM1LCA3ODE2MSwgMTI5NTQsIDQzMCwgCi0gICAgNzgxNjAsIDU1MjU5LCA3ODE1OCwgMTI4MDM2LCA1Mjc4LCA0OTQ1LCA0Mjg4MywgNDk1MCwgMCwgNjg2MjUsIDAsIDcyNjksIAotICAgIDAsIDU5NjQsIDEyOTA4LCAwLCAwLCA3NDc2NCwgNzQ0NzcsIDExOTE0NiwgMTk0OTM2LCA0OTQ5LCAwLCA0NDMsIDAsIAotICAgIDQ5NDQsIDU0NjcsIDExOTYwMywgMCwgNjUxMzcsIDYwNDQsIDY1MzkyLCAwLCA0MjEzLCAwLCA0MTMwMywgMCwgMTk0OTMxLCAKLSAgICAxMTk5NjIsIDQxMzA2LCA3Mzk4NCwgMjY5OCwgMTI3MTU5LCAwLCAxMjA3MiwgMzE5MywgMCwgNDEzMDQsIDgyNCwgCi0gICAgMTI4Njc2LCAxMjA5MSwgNzg4OTMsIDc4ODk0LCAxMTk4MTYsIDQ2NzMsIDY0ODA0LCA0Njc4LCAxMTk4MjAsIDExOTgxOSwgCi0gICAgNjUwNTksIDAsIDY3MzksIDAsIDU0ODEsIDM0OTAsIDExOTksIDExOTgxMSwgODM1NiwgMTE5ODI5LCAxMTk4MzIsIDQ2NzcsIAotICAgIDEyNjg4LCAzMTAyLCAwLCA0NjcyLCA3ODE3MywgNzgxNzUsIDU1MzEsIDY4MzY3LCA0MjU3NSwgNzgxNzAsIDc4MTY2LCAKLSAgICA0Njc0LCA0NTQ4LCA0NDAwNSwgMTE5OTQ5LCA2ODY1OCwgMTE5OTQ2LCA4MDI1LCA2ODYzMCwgMTI3MDI0LCAxODU1LCAwLCAKLSAgICA2ODY2OSwgMCwgOTI0NDUsIDEyNzU1NCwgMCwgMCwgMTE5NjUyLCAyNzQ1LCAxMTc5NywgMCwgMTI4MTU5LCA5MjAyLCAKLSAgICA0NjU0LCAwLCAwLCA2ODYzOCwgNzM5OTMsIDEwNTI1LCA0NjQ5LCA2NTIwOSwgMCwgMCwgNDY0OCwgNDMwODAsIDAsIDAsIDAsIAotICAgIDYyNDYsIDY0OTUwLCA3ODI4LCA0NjUwLCA2Nzc3LCA2Nzc2LCA2Nzc1LCA0NjUzLCA3ODIyLCA3ODAwNSwgOTIzODQsIAotICAgIDQzMTg3LCA4NjY5LCAwLCA2ODIxLCA2NTA5MywgMCwgNzg4ODEsIDI3MTYsIDAsIDAsIDAsIDAsIDY4MzY5LCAxMjAwNTQsIAorICAgIDEyMjM5LCAwLCAwLCA0NDQxLCAwLCA5ODMyNzEsIDczOTQwLCA2NDM1MiwgMTI3NTEzLCA5ODMyNjcsIDQxMSwgOTgzMjY1LCAKKyAgICA5MTk5LCA5ODMyNjMsIDQwNTYsIDExODk5MiwgNDE4OTAsIDAsIDI3MzAsIDQxNjA0LCA5ODM5MjgsIDU0MjgsIDE5NDc0MywgCisgICAgMzM2NCwgNDIyNjUsIDY0NDM3LCAxMjc5MzUsIDExODgxNiwgMTk0NzQyLCA5Njg0LCAyMTYsIDAsIDE0MDEsIDEyODA1MywgCisgICAgNDQwMTIsIDAsIDAsIDkyNTg1LCA5MTU4LCA3Nzg0MiwgNjk5MDUsIDU3NjgsIDAsIDAsIDAsIDQ4NCwgMTk0NzM5LCAwLCAwLCAKKyAgICA2NTg5NSwgMCwgMCwgMzMzOCwgNzM5MzUsIDU3MiwgNzA0MSwgMjczNiwgNjc2MDUsIDk4MzI1NSwgOTM5NjIsIDI3OTQsIAorICAgIDg4MDcsIDY0NDkxLCA3Nzg0NywgNTQzOCwgNTIyMiwgNTM4MSwgNDMxMTQsIDAsIDUxOTMsIDUxMjUsIDU0NTYsIDU1MDksIAorICAgIDc3ODQ2LCAxOTQ3NDcsIDk1MzQsIDAsIDAsIDAsIDM0MzAsIDAsIDAsIDc4NzE3LCAwLCA5ODEsIDAsIDQzMzAsIDczOTI5LCAKKyAgICAxMjA1MzYsIDE4MjQsIDEwOTA4LCAwLCA3MDM0LCA0MTY4MywgNjQ2MTcsIDAsIDczNzU0LCAzOTU3LCA2NDM1OCwgNjQ1NDcsIAorICAgIDEyODI1OSwgNjc0LCA2Mzk5MSwgOTgzMjQzLCAyOTQ2LCA1MzU0LCA1MjUxLCA1MzI4LCA1MzA3LCAzNzU5LCAxMTQxMSwgCisgICAgODM2NCwgNTEyMywgMTE5NjI4LCA1MjgxLCA1NDY5LCA1MTIxLCAxMTkyNDUsIDExODk5MywgMCwgNTEzMCwgMCwgMCwgCisgICAgNzc5OTAsIDAsIDEyMDcyNiwgMTIyMSwgMjczMywgMTE3NDYsIDc3OTkxLCA1MjE2LCAwLCAwLCAwLCAwLCAzNDY4LCA3MDMzLCAKKyAgICA5MjMwLCA1OTM5LCAxOTUwNTIsIDAsIDAsIDEyMDY3NywgNjg0MDAsIDcyNzgsIDEwMzIxLCAxMDI4OSwgNjQ2MTMsIAorICAgIDEwMzg1LCA0MTcwNiwgMCwgMCwgOTgzNDA1LCAwLCAxMTczOSwgOTgzNDE4LCA0MTk4MSwgMCwgNTkzOCwgMCwgNDM3NjYsIAorICAgIDEyNDQ4LCA3NTc2LCAxMDQwMSwgMTAzMzcsIDczODUyLCAwLCAxMzA1NywgMCwgMTI2OTc2LCAwLCAxMDAwOSwgMCwgCisgICAgNDE3MDMsIDk4MzYyOSwgMTIxNjUsIDAsIDAsIDk4ODUsIDAsIDgwNzcsIDAsIDEyNzkwOCwgMCwgMCwgMCwgOTI0NTcsIDAsIAorICAgIDQyMjAsIDEwNzI1LCAxMDQzMywgMCwgNjgzOTUsIDQ5ODcsIDY0NTE5LCAwLCAxMjgzNDAsIDAsIDAsIDAsIDEwOTcwLCAKKyAgICAxMTczMywgMCwgMTIwNzkyLCAwLCAxOTk0NCwgMCwgOTAwOSwgODU1MSwgOTIzNDUsIDExNDY4LCA2NDYzNiwgNzU3NSwgMCwgCisgICAgMjcyNCwgMCwgMCwgMTIzMTMsIDExMDU5MiwgNTE1LCAxMTk5NDcsIDQyNzkxLCA2Mzk4NywgNzgyODYsIDExOTk0MywgCisgICAgMTE5OTQwLCAxMTk5NDEsIDExOTkzOCwgOTc3NSwgNDA0NiwgNDU4OSwgNDUyMSwgNjg2MjksIDkxNDEsIDAsIDc4ODUwLCAKKyAgICAyNzQxLCA2NDM5OSwgNjE5NywgMTM3MCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE4NCwgODYwNiwgMzMwMywgNDEzNzIsIAorICAgIDExNzg2LCA5NDczLCA2NjIwMywgNjYxNzcsIDkyNDQ2LCAxMTU5MywgNDMwMDcsIDQ0NzgsIDY2MTc4LCAwLCAwLCAyNzQ0LCAKKyAgICAwLCA0NDc3LCAxMTg5NjQsIDgxNCwgNDIwNjYsIDY2MTgzLCA2NjIwNCwgNDM3ODYsIDExOTk2MSwgNjYxOTgsIDQxODgwLCAKKyAgICA2NjE4OCwgMTE2MjMsIDc4MTQ4LCAxMTk1NSwgNjYxOTAsIDY2MTkxLCA0MTExMSwgNjYxODksIDczNzg4LCA3Nzg4LCAKKyAgICA0ODQ3LCAwLCAxMjc3NTksIDAsIDAsIDAsIDE1ODEsIDY1MzUsIDc4MTYxLCAxMjk1NCwgNDMwLCA3ODE2MCwgNTUyNTksIAorICAgIDc4MTU4LCAxMjgwMzYsIDUyNzgsIDQ5NDUsIDQyODgzLCA0OTUwLCA5ODM0MzAsIDY4NjI1LCA5ODM0MjgsIDcyNjksIDAsIAorICAgIDU5NjQsIDEyOTA4LCA5ODM1NTUsIDAsIDc0NzY0LCA3NDQ3NywgMTE5MTQ2LCAxOTQ5MzYsIDQ5NDksIDk4MzQyMSwgNDQzLCAKKyAgICA5ODM0MTksIDQ5NDQsIDU0NjcsIDExOTYwMywgMCwgNjUxMzcsIDYwNDQsIDY1MzkyLCAwLCA0MjEzLCAwLCA0MTMwMywgMCwgCisgICAgMTk0OTMxLCAxMTk5NjIsIDQxMzA2LCA3Mzk4NCwgMjY5OCwgMTI3MTU5LCAwLCAxMjA3MiwgMzE5MywgMCwgNDEzMDQsIAorICAgIDgyNCwgMTI4Njc2LCAxMjA5MSwgNzg4OTMsIDc4ODk0LCAxMTk4MTYsIDQ2NzMsIDY0ODA0LCA0Njc4LCAxMTk4MjAsIAorICAgIDExOTgxOSwgNjUwNTksIDAsIDY3MzksIDAsIDU0ODEsIDM0OTAsIDExOTksIDExOTgxMSwgODM1NiwgNjk5NDcsIDExOTgzMiwgCisgICAgNDY3NywgMTI2ODgsIDMxMDIsIDAsIDQ2NzIsIDc4MTczLCA3ODE3NSwgNTUzMSwgNjgzNjcsIDQyNTc1LCA3ODE3MCwgCisgICAgNzgxNjYsIDQ2NzQsIDQ1NDgsIDQ0MDA1LCAxMTk5NDksIDY4NjU4LCAxMTk5NDYsIDgwMjUsIDY4NjMwLCAxMjcwMjQsIAorICAgIDE4NTUsIDk4MzQwNCwgNjg2NjksIDk4MzQwMiwgOTI0NDUsIDEyNzU1NCwgMCwgMTI3MzM5LCAxMTk2NTIsIDI3NDUsIAorICAgIDExNzk3LCA5ODM0MTAsIDEyODE1OSwgOTIwMiwgNDY1NCwgOTgzNDA2LCA5ODM0MDgsIDY4NjM4LCA3Mzk5MywgMTA1MjUsIAorICAgIDQ2NDksIDY1MjA5LCA5ODM0MDksIDAsIDQ2NDgsIDQzMDgwLCA5ODMzOTgsIDk4MzM5OSwgOTgzMzk2LCA2MjQ2LCA2NDk1MCwgCisgICAgNzgyOCwgNDY1MCwgNjc3NywgNjc3NiwgNjc3NSwgNDY1MywgNzgyMiwgNzgwMDUsIDkyMzg0LCA0MzE4NywgODY2OSwgCisgICAgOTgzNDA3LCA2ODIxLCA2NTA5MywgMCwgNzg4ODEsIDI3MTYsIDAsIDk4MzA2MCwgOTgzNDExLCAwLCA2ODM2OSwgMTIwMDU0LCAKICAgICAxMTA2MCwgODU0NywgMjcxMSwgNDIxNjUsIDc4MDI3LCA3ODAyNiwgNzk5MiwgMCwgMCwgNDY2MiwgNzgwMzMsIDc4MDMyLCAKICAgICA5MTQ5LCA5MTQ2LCA1OTksIDIwODEsIDc4MDMxLCA3ODAzMCwgMTk0OTYyLCA0NjU2LCAxMDEzMCwgNjg0NTAsIDc4MTEsIAotICAgIDQwOTk0LCAxOTQ5NjUsIDY0MTQsIDU5NjcsIDQ2NTgsIDM3MjUsIDU3MTMsIDU4MTQsIDQ2NjEsIDQyNDM0LCAwLCAwLCAwLCAKLSAgICA2NDkwNCwgOTAyNiwgMTA4MzMsIDc0ODY0LCA3NTQ3LCA0ODY3LCAwLCAxMDAwOCwgMTAyMjIsIDMwNTQsIDE5NDk1NiwgCi0gICAgOTc0NCwgNzg4NjAsIDc2MDUsIDQ2MjIsIDExOTY1NiwgMCwgMCwgMCwgMCwgMCwgOTA0NSwgNzg4ODgsIDQyMjUsIDE5OTI2LCAKLSAgICA3ODg4NywgMTI4ODAsIDY1MzA3LCA0NjE3LCA3ODg4MywgMCwgNDE3MzIsIDQ2MTYsIDEwNTE4LCAxMDQyMywgMTAzNTksIDAsIAotICAgIDU5NTgsIDAsIDAsIDQyMTUsIDk3ODksIDkxNzk0MSwgNDMyMSwgNDYyMSwgMCwgNDEzMTMsIDUyMiwgNTM2OCwgMCwgCi0gICAgNjU4MDMsIDAsIDUzNjYsIDEyMjAxLCA1MzcyLCAwLCAwLCAwLCA3NzIwLCA3MzkwLCAyNjk2LCAwLCAwLCA0NjM4LCAwLCAKLSAgICAxNzkwLCA3ODI0MiwgNTk2NSwgNjQzNjMsIDY2NTY5LCA2ODY0NiwgMTk0OTY4LCA1Mzc2LCAxODM1LCA1MzM1LCAxOTQ5NjYsIAorICAgIDQwOTk0LCAxOTQ5NjUsIDY0MTQsIDU5NjcsIDQ2NTgsIDM3MjUsIDU3MTMsIDU4MTQsIDQ2NjEsIDQyNDM0LCA5ODM0MDMsIAorICAgIDAsIDAsIDY0OTA0LCA5MDI2LCAxMDgzMywgNzQ4NjQsIDc1NDcsIDQ4NjcsIDAsIDEwMDA4LCAxMDIyMiwgMzA1NCwgCisgICAgMTk0OTU2LCA5NzQ0LCA3ODg2MCwgNzYwNSwgNDYyMiwgMTE5NjU2LCA5ODMzODcsIDk0MDcwLCA5ODMzODUsIDk4MzM4NiwgCisgICAgOTgzMzgzLCA5MDQ1LCA3ODg4OCwgNDIyNSwgMTk5MjYsIDc4ODg3LCAxMjg4MCwgNjUzMDcsIDQ2MTcsIDc4ODgzLCAKKyAgICA5ODMzNzgsIDQxNzMyLCA0NjE2LCAxMDUxOCwgMTA0MjMsIDEwMzU5LCA5ODMzNzIsIDU5NTgsIDAsIDk4MzQyNSwgNDIxNSwgCisgICAgOTc4OSwgOTE3OTQxLCA0MzIxLCA0NjIxLCA5ODMzODEsIDQxMzEzLCA1MjIsIDUzNjgsIDAsIDY1ODAzLCAwLCA1MzY2LCAKKyAgICAxMjIwMSwgNTM3MiwgMCwgOTgzNDAxLCAwLCA3NzIwLCA3MzkwLCAyNjk2LCA5ODMzOTIsIDAsIDQ2MzgsIDk4MzM5NywgCisgICAgMTc5MCwgNzgyNDIsIDU5NjUsIDY0MzYzLCA2NjU2OSwgNjg2NDYsIDEyNzgzMywgNTM3NiwgMTgzNSwgNTMzNSwgMTk0OTY2LCAKICAgICAxMjgwODksIDQ2MzMsIDAsIDY4MTE5LCAxMTgwLCA0NjMyLCAxMjgwOTMsIDUzODcsIDUzMzMsIDAsIDAsIDQyMDk0LCAKLSAgICA1MzMxLCA0NjM0LCAxMTkyOCwgMCwgNTMzOCwgNDYzNywgMTI4MTcwLCA1OTcxLCA0MjQxNCwgMCwgMTI2OCwgNjUwOTcsIAotICAgIDQyMzYxLCAwLCAwLCA3Mzg1MywgMTQyNywgMCwgMCwgNTk3MCwgMzQzMSwgMCwgMTAzNTgsIDEwNDIyLCA0NzU4LCAwLCAKLSAgICAxNjA4LCAyNzM4LCAwLCAxMDQ1NSwgNDc1MywgNzQwMjYsIDExMzQ0LCA0MjIyLCA2MjQwLCA1MjMxLCA3NDM4NCwgMCwgCi0gICAgNjgzNzcsIDYyNDgsIDAsIDAsIDAsIDQyMzE4LCA5MjU4MiwgNTIyOSwgNDc1NywgMCwgMCwgMjcyOCwgNDc1MiwgNjQ1NjMsIAotICAgIDY1MjM1LCA1MjM0LCAwLCAxMjgxNDUsIDAsIDEwNzEzLCA3MTY2LCAwLCAyNjIyLCA3NDYwLCAxMjczMDIsIDAsIDAsIAotICAgIDg5NTQsIDc0NzYwLCA2NTE4OSwgMjYzMiwgOTIyMzAsIDEwMTA4LCAxMDExLCA1NTc0LCAxODUzLCAyNzA5LCA2NTEzOSwgCi0gICAgNTU3NywgMCwgMCwgMTE4ODcxLCA2ODY0MSwgODk2NSwgNzYzNSwgNDIxNzcsIDUzMTYsIDAsIDUzMTQsIDY0NTEsIDU1NzIsIAotICAgIDAsIDUzMTIsIDAsIDU1MjUsIDUzMzAsIDUzMTksIDAsIDAsIDE5NDkwNywgNDQwMDMsIDAsIDAsIDAsIDEyMDQ5OCwgCi0gICAgMTI3ODUxLCAxOTUwMDksIDAsIDc0MDIyLCAwLCA2NDYwOSwgNjg2NDMsIDEyMDYzNCwgMCwgNTcyMSwgMCwgNTUxOSwgCi0gICAgODYzMiwgNjY0NjUsIDExMjY3LCA3Mzk2MSwgOTIyNzgsIDU3MjAsIDAsIDE2OTIsIDQyMTksIDQ2MTAsIDg2OTYsIDQzMDUsIAotICAgIDAsIDQ2MDksIDQzNDc4LCA0NjE0LCA1NDEsIDAsIDUyODcsIDUzMDksIDUyODUsIDY4Mzg5LCA1OTYxLCA0NjQ3LCA1NiwgCi0gICAgNDIxNiwgMTA1NzcsIDQxMzgxLCA2MDEsIDQ2MTMsIDAsIDAsIDkyMjc2LCA0NjA4LCA2NDI2MCwgNDExMjQsIDUxOTAsIAotICAgIDY3NjI4LCAwLCA2ODE0NSwgNzA4NiwgMCwgMTE5MjQzLCA2NzYyMCwgMCwgMjczNCwgMTEwNzQsIDAsIDY3NjI3LCA0MzU5MywgCi0gICAgMCwgNjc2MjUsIDU5NjAsIDAsIDg5OTIsIDQyNTkzLCAxMjgyNjAsIDE3ODIsIDY3NjIyLCA2ODExNCwgMTE5OTM5LCAwLCAKLSAgICA2ODE4MCwgNTUwMSwgMTE5OTUyLCA0MjUwOCwgNzQ0MiwgNDM2NjUsIDM1OSwgNDEyNTMsIDY4MzkyLCA2MjM5LCAxMTk5NTYsIAotICAgIDQxMjU2LCAwLCA2ODEzNCwgMCwgNzQyMDksIDkxNzU1MCwgOTM0NiwgNjk2NjAsIDQxMjU0LCAxMjgwNDcsIDQzMjkxLCAKLSAgICAzNzY3LCA1NzM3LCAwLCA0ODY1LCAwLCA1NzQwLCA5MTc5OTcsIDU3MzYsIDQzNjgsIDY0NzI0LCA3MTkzLCA2ODEzNywgMCwgCi0gICAgNTczOSwgNDEwMjQsIDQ4NjYsIDAsIDczOTA0LCAwLCA0ODY5LCAxMjA1NjMsIDAsIDQyMjMsIDEyODIwMSwgNjY1MCwgMCwgCi0gICAgMCwgMCwgMTI3ODkwLCA0ODcwLCAxMjA0NDUsIDY4NjYxLCA2NzE2LCA3ODE3NiwgNjg2NjcsIDY4MzgyLCA2ODY3NiwgCi0gICAgMTI3OTI1LCAxMDEyMiwgNDg2NCwgNjY1NjgsIDQxNDQsIDc5MzcsIDAsIDYyNDUsIDY4NjUyLCAyNzMyLCA0MjczNCwgNzQ1LCAKLSAgICAwLCAxOTUwOTcsIDkyMTk1LCA0Nzc3LCA3ODIxLCAwLCA2ODYzMSwgNDI3NzUsIDAsIDE5NDk1NCwgMCwgMzA5NywgMCwgCi0gICAgNTk2NiwgMCwgNDc3OCwgMCwgMTA4NjMsIDAsIDQ3ODEsIDAsIDY0NDA3LCAwLCAwLCA4NTc3LCAxMjg1NjIsIDY4MTk2LCAKLSAgICA0MzI4NSwgMTAyMTYsIDQ3ODIsIDAsIDAsIDEyMDc1NywgNjg2MTgsIDEyMzI1LCA0MzA1NiwgODcxNywgMCwgMCwgNDc3NiwgCi0gICAgNzM4MTgsIDExNDkyLCA4NzAwLCAwLCAxMzE3NiwgNjgzNjMsIDEwNDI2LCAwLCA5MTc1OTksIDEwMzYyLCAxOTQ3MDYsIAotICAgIDE3MTUsIDQ4NDksIDgyNDIsIDk1NjEsIDczOTIyLCA0MzI3OCwgNDI2MzUsIDAsIDAsIDU5NjMsIDkxNzkyNiwgMCwgMCwgCi0gICAgNDg1MCwgMCwgMTYwNywgNDY2LCA0ODUzLCAxMTg5OTUsIDQ4NTQsIDEyNzkxOCwgNTE2NCwgMCwgMTM1MCwgNTEyNCwgCi0gICAgNjQ0MjAsIDE5OTMsIDUzNjIsIDg0NzEsIDI3MDgsIDkyNDcxLCAxMjQ0NSwgMzc4NSwgMjM0LCAzMTk5LCAwLCA0MTI2OCwgCi0gICAgNDg0OCwgMjUzMCwgOTE3OTA5LCAyMDY4LCAxOTY0LCAwLCA3Mzc2MiwgMTA0NTgsIDAsIDg1NzYsIDc4NTQzLCAwLCAyNzA0LCAKLSAgICA0Nzk0LCAwLCA2ODIxMSwgODMyMiwgNDc5NywgNTc1MywgMCwgMjY5NCwgNDc5MiwgMCwgMjQzOSwgNjUxMDQsIDY5ODA0LCAKLSAgICAwLCAzMDMsIDAsIDkyNjIyLCAwLCAyNDM3LCAwLCA0MjIxLCA0ODQ0LCAxMTg4NjksIDAsIDAsIDAsIDAsIDAsIDQzMjkyLCAKLSAgICAwLCAyNDQxLCAxMDczOSwgNjUwOTAsIDAsIDExOTMyNywgMCwgMjQ1MSwgMjcxNCwgMTE5MzI2LCAwLCA0MzM3OSwgNDkzNywgCisgICAgNTMzMSwgNDYzNCwgMTE5MjgsIDk4MzU5NCwgNTMzOCwgNDYzNywgMTI4MTcwLCA1OTcxLCA0MjQxNCwgMCwgMTI2OCwgCisgICAgNjUwOTcsIDQyMzYxLCAwLCAwLCA3Mzg1MywgMTQyNywgMCwgMCwgNTk3MCwgMzQzMSwgMCwgMTAzNTgsIDEwNDIyLCA0NzU4LCAKKyAgICA5ODMzNjYsIDE2MDgsIDI3MzgsIDAsIDEwNDU1LCA0NzUzLCA3NDAyNiwgMTEzNDQsIDQyMjIsIDYyNDAsIDUyMzEsIAorICAgIDc0Mzg0LCA5ODMzNzAsIDY4Mzc3LCA2MjQ4LCA5ODMzNTQsIDk4MzM1NSwgOTgzMzUyLCA0MjMxOCwgOTI1ODIsIDUyMjksIAorICAgIDQ3NTcsIDAsIDAsIDI3MjgsIDQ3NTIsIDY0NTYzLCA2NTIzNSwgNTIzNCwgMCwgMTI4MTQ1LCAwLCAxMDcxMywgNzE2NiwgMCwgCisgICAgMjYyMiwgNzQ2MCwgMTI3MzAyLCAwLCAwLCA4OTU0LCA3NDc2MCwgNjUxODksIDI2MzIsIDQyNjE3LCAxMDEwOCwgMTAxMSwgCisgICAgNTU3NCwgMTg1MywgMjcwOSwgNjUxMzksIDU1NzcsIDAsIDAsIDExODg3MSwgNjg2NDEsIDg5NjUsIDc2MzUsIDQyMTc3LCAKKyAgICA1MzE2LCAwLCA1MzE0LCA2NDUxLCA1NTcyLCA2NjQ2NCwgNTMxMiwgMCwgNTUyNSwgNTMzMCwgNTMxOSwgOTgzNDEyLCAKKyAgICA5ODM4NjMsIDE5NDkwNywgNDQwMDMsIDAsIDk4MzQ3MiwgOTgzNDE1LCAxMjA0OTgsIDEyNzg1MSwgMTk1MDA5LCA5ODM4NTYsIAorICAgIDc0MDIyLCA5ODM0MTQsIDY0NjA5LCA2ODY0MywgMTIwNjM0LCA5ODM0ODEsIDU3MjEsIDk4MzM5MywgNTUxOSwgODYzMiwgCisgICAgNjY0NjUsIDExMjY3LCA3Mzk2MSwgOTIyNzgsIDU3MjAsIDk4MzM0NCwgMTY5MiwgNDIxOSwgNDYxMCwgODY5NiwgNDMwNSwgCisgICAgMCwgNDYwOSwgNDM0NzgsIDQ2MTQsIDU0MSwgOTgzMzQ3LCA1Mjg3LCA1MzA5LCA1Mjg1LCA2ODM4OSwgNTk2MSwgNDY0NywgCisgICAgNTYsIDQyMTYsIDEwNTc3LCA0MTM4MSwgNjAxLCA0NjEzLCA5ODMzNDEsIDk4MzMzOCwgNzc4NDksIDQ2MDgsIDY0MjYwLCAKKyAgICA0MTEyNCwgNTE5MCwgNjc2MjgsIDAsIDY4MTQ1LCA3MDg2LCAwLCA2Nzk5OCwgNjc2MjAsIDAsIDI3MzQsIDExMDc0LCAwLCAKKyAgICA2NzYyNywgNDM1OTMsIDAsIDY3NjI1LCA1OTYwLCAwLCA4OTkyLCA0MjU5MywgMTI4MjYwLCAxNzgyLCA2NzYyMiwgNjgxMTQsIAorICAgIDExOTkzOSwgMCwgNjgxODAsIDU1MDEsIDExOTk1MiwgNDI1MDgsIDc0NDIsIDQzNjY1LCAzNTksIDQxMjUzLCA2ODM5MiwgCisgICAgNjIzOSwgMTE5OTU2LCA0MTI1NiwgMCwgNjgxMzQsIDAsIDc0MjA5LCA5MTc1NTAsIDkzNDYsIDY5NjYwLCA0MTI1NCwgCisgICAgMTI4MDQ3LCA0MzI5MSwgMzc2NywgNTczNywgMCwgNDg2NSwgMCwgNTc0MCwgOTE3OTk3LCA1NzM2LCA0MzY4LCA2NDcyNCwgCisgICAgNzE5MywgNjgxMzcsIDAsIDU3MzksIDQxMDI0LCA0ODY2LCAwLCA3MzkwNCwgOTgzODMxLCA0ODY5LCAxMjA1NjMsIDAsIAorICAgIDQyMjMsIDEyODIwMSwgNjY1MCwgMTI2NTA5LCAwLCA5ODM0NTUsIDEyNzg5MCwgNDg3MCwgMTIwNDQ1LCA2ODY2MSwgNjcxNiwgCisgICAgNzgxNzYsIDY4NjY3LCA2ODM4MiwgNjg2NzYsIDEyNzkyNSwgMTAxMjIsIDQ4NjQsIDY2NTY4LCA0MTQ0LCA3OTM3LCAwLCAKKyAgICA2MjQ1LCA2ODY1MiwgMjczMiwgNDI3MzQsIDc0NSwgMCwgMTk1MDk3LCA5MjE5NSwgNDc3NywgNzgyMSwgMCwgNjg2MzEsIAorICAgIDQyNzc1LCAwLCAxOTQ5NTQsIDAsIDMwOTcsIDAsIDU5NjYsIDk4MzQ3OCwgNDc3OCwgMCwgMTA4NjMsIDAsIDQ3ODEsIDAsIAorICAgIDY0NDA3LCAwLCAxMjgzMjMsIDg1NzcsIDEyODU2MiwgNjgxOTYsIDQzMjg1LCAxMDIxNiwgNDc4MiwgMCwgMCwgMTIwNzU3LCAKKyAgICA2ODYxOCwgMTIzMjUsIDQzMDU2LCA4NzE3LCAwLCAwLCA0Nzc2LCA3MzgxOCwgMTE0OTIsIDg3MDAsIDAsIDEzMTc2LCAKKyAgICA2ODM2MywgMTA0MjYsIDAsIDkxNzU5OSwgMTAzNjIsIDE5NDcwNiwgMTcxNSwgNDg0OSwgODI0MiwgOTU2MSwgNzM5MjIsIAorICAgIDQzMjc4LCA0MjYzNSwgMCwgMCwgNTk2MywgOTE3OTI2LCAwLCAwLCA0ODUwLCAwLCAxNjA3LCA0NjYsIDQ4NTMsIDExODk5NSwgCisgICAgNDg1NCwgMTI3OTE4LCA1MTY0LCA5ODM4NjEsIDEzNTAsIDUxMjQsIDY0NDIwLCAxOTkzLCA1MzYyLCA4NDcxLCAyNzA4LCAKKyAgICA5MjQ3MSwgMTI0NDUsIDM3ODUsIDIzNCwgMzE5OSwgMCwgNDEyNjgsIDQ4NDgsIDI1MzAsIDkxNzkwOSwgMjA2OCwgMTk2NCwgCisgICAgMCwgNzM3NjIsIDEwNDU4LCAwLCA4NTc2LCA3ODU0MywgMCwgMjcwNCwgNDc5NCwgMCwgNjgyMTEsIDgzMjIsIDQ3OTcsIAorICAgIDU3NTMsIDAsIDI2OTQsIDQ3OTIsIDAsIDI0MzksIDY1MTA0LCA2OTgwNCwgOTgzNDE2LCAzMDMsIDk4MzEwMSwgOTI2MjIsIAorICAgIDk4MzQxNywgMjQzNywgMCwgNDIyMSwgNDg0NCwgOTIyMTYsIDAsIDAsIDAsIDcwMDQyLCAwLCA0MzI5MiwgMCwgMjQ0MSwgCisgICAgMTA3MzksIDY1MDkwLCAwLCAxMTkzMjcsIDEyNjU0MSwgMjQ1MSwgMjcxNCwgMTE5MzI2LCAwLCA0MzM3OSwgNDkzNywgCiAgICAgNDMzNzYsIDc1MywgNTg0OSwgMTA1OTcsIDQzMDg5LCAxMTcyMiwgOTI0OCwgOTI1NTUsIDQyODc5LCAxMTcyNSwgMCwgMCwgCiAgICAgMjcyNiwgMzEwNywgNzM5NTgsIDQ5NDEsIDY0OTM3LCAxMTkyMzMsIDkxNDAsIDE0MDgsIDUyNjEsIDQ2MDcsIDAsIDE4MSwgCi0gICAgMCwgNDk0MiwgOTUzOSwgNDkzOCwgMCwgNjUyMDEsIDUyNTksIDkzNjksIDY0MTg1LCA0MTQyLCA1MjU3LCAwLCAwLCA0OTY0LCAKLSAgICA1MjY0LCA2NDE3OCwgNjQxNzcsIDEyOTc5LCA0MTQxMSwgNjQxODIsIDY0MTgxLCA2NDE4MCwgNjQxNzksIDk0ODIsIDQ4NzMsIAotICAgIDQxMjMxLCAxODIyLCA0MjUyNiwgMTI4NTgxLCAxMjc1OCwgMzg2NSwgMCwgMCwgMTA1MDAsIDAsIDAsIDc4MDI4LCAwLCAKLSAgICA5ODMwLCA0MzY0MiwgMzg5LCAxMDg5MywgNzUyMSwgMTI3ODc5LCA0ODcyLCA1NDYzLCAwLCAzMTI1LCA5NTY3LCAwLCAKLSAgICA0ODc4LCA1NDU5LCA0NjA0LCA5MTc5MzEsIDk1NTcsIDU0NjUsIDY4NjE3LCAwLCAxMTQ5NCwgMCwgOTU2MywgMTA4NjUsIAotICAgIDc0NTcwLCA0MzI3OSwgNjQxODYsIDAsIDc4NzE0LCA2NDE5MSwgNjQxOTAsIDg4OTgsIDY0MTg4LCAwLCA0MTAzMCwgCi0gICAgNzg4MzYsIDAsIDkxNzgzNSwgNzg4MjAsIDkxNzgzNCwgMCwgNzg4MDUsIDQxMDMxLCA3ODgwMSwgMTE5NjAsIDY3NDUsIAotICAgIDMwODIsIDAsIDc4NTM5LCA3MzkxOSwgMTA1NzMsIDQxNzQ0LCA3MDc5LCA1ODU2LCAxMjcwNDMsIDUxNjMsIDc4ODA5LCAKLSAgICAxMjgxNjIsIDE4MTcsIDY2NzI0LCA3ODUzOCwgMCwgMTA1NjQsIDc3NjMsIDEzMDc3LCA0MTgxMywgNDQwMCwgNDE3NDUsIAotICAgIDY0MjA3LCAxMDI3NSwgODkyNSwgMTAzNzEsIDEwMzA3LCA0MTgxNCwgNDI0OCwgMCwgMCwgNDU0MSwgNjI5OSwgNjQyMDQsIAotICAgIDY0MjAzLCA2NDIwMSwgNjQyMDAsIDY0MTk5LCA2NDE5OCwgMCwgNDIxNTYsIDc4Njg4LCAwLCA2NDE5MywgNjQxOTIsIAotICAgIDY1MjIzLCA5OTQzLCA2NDE5NywgNjQxOTYsIDY0MTk1LCA2NDE5NCwgMTMyODIsIDY0MTc1LCA2NDE3NCwgNjQxNzMsIAotICAgIDc4MTg5LCA4NDYsIDc4MTg2LCA5OTY1LCAwLCAwLCAwLCAwLCAyNTQzLCAxMjE2MywgMzEwOCwgOTc0NSwgNjQxNjcsIAotICAgIDY0MTY2LCA2NDE2NSwgNjQxNjQsIDIxMTAsIDkyMTc2LCA2NDE2OSwgNjQxNjgsIDY0OTQ5LCAxMDk3MiwgMTAyNTEsIAotICAgIDEwMjQ3LCA0Mjc2OCwgNzE1LCA2NDE2MSwgNDMyOTksIDk0NTMsIDUzNDgsIDEwOTQzLCAxMjAzNzgsIDAsIDExMzUyLCAKLSAgICA1NTAsIDk5MTAsIDAsIDAsIDY2NTc5LCAxMTU1MSwgMCwgMTk1MDgwLCA5NTA0LCA3MTg3LCAwLCAxMDM3MywgMCwgCi0gICAgMTIwNzkxLCAxMDI2MSwgMTAyNTMsIDY0MDQsIDEwMjc3LCA3ODE4MywgMTE5ODQsIDE1NTIsIDY1MjIyLCA2OTk4LCAKLSAgICA3ODE4MCwgMCwgMzEyOCwgNDc4OSwgNTA2NywgNTA2NiwgMTE4ODQ5LCA0Nzg0LCAwLCA4ODI3LCAxMTQ2LCA1MDY1LCAKLSAgICA3ODE5NiwgNzgxOTIsIDY4MTM2LCA3ODE5MCwgNDM0MTIsIDUwNjQsIDI0MzEsIDAsIDk0NTAsIDE4MDksIDAsIDc4MjAwLCAKLSAgICA3ODIwMSwgNTA2MiwgMTI2NCwgNjQ4MTcsIDEzMjU0LCAxMTY5NywgMCwgOTc4NSwgNjQ3MTYsIDAsIDM5MzMsIDc0NTU5LCAKLSAgICA0NzQwLCA3OTU0LCAwLCAwLCA0MjYwOSwgMCwgNzQxNzUsIDAsIDEyNzAxNiwgMCwgMCwgNDIxMzAsIDAsIDUxNTEsIAotICAgIDkxNzgyOSwgOTE3ODIzLCAwLCAwLCAwLCA3NjIwLCAzODAwLCA2NTEyMiwgMCwgMCwgODM1NSwgNzg1NCwgMCwgOTU0LCAKLSAgICA2NDkyNywgNDE4NSwgNDEwNDUsIDEyNzE0MSwgNDE0MzgsIDQxNDM5LCA2ODY2NiwgMTA3MTEsIDQ1OTMsIDEyNzc0NSwgCi0gICAgMTIwNTg0LCAwLCA2NDc3NCwgODA1MywgMTA1MzIsIDY2NzI3LCAwLCAwLCAwLCA2NDc1OSwgNjM4MSwgNTE2NiwgOTg4OCwgCi0gICAgMTI3ODAwLCA1MTQ4LCA0MjgzNCwgMCwgNzgyMDUsIDc4MjA2LCA0Mzc4NywgNzgyMDQsIDY0MTMxLCAzMTE5LCA5MTc4MTQsIAotICAgIDAsIDMwNjAsIDY0MTM1LCA5OTg2LCAwLCA3Nzg3NiwgNjM2LCAxMTY5OCwgMCwgMCwgOTkxNiwgMTE3MDEsIDc4MzYsIAotICAgIDQyNzQxLCA2NDEzNywgODMyMCwgNzg2NDAsIDg4NjMsIDkyNDMxLCAxMTk5NjAsIDE0NzcsIDQzMjg5LCAwLCA3NDM1OCwgCi0gICAgODYxOCwgMCwgOTkwOCwgMCwgMCwgMCwgMzkzNywgMTIzMTIsIDAsIDAsIDAsIDY0NzgxLCA5MTIsIDYzNDksIDQ1MzYsIAotICAgIDExOTk2MywgNzQ1MzIsIDAsIDYyNDQsIDAsIDE5NDU4MCwgMzkzNSwgMTIwNjY1LCAwLCAwLCAxMTk1MCwgNTM5MiwgCi0gICAgNDIyNDgsIDY1MTI5LCA2ODY1NiwgNTM5NywgMCwgMTIwNDYsIDEyNTk5LCAwLCAwLCA1Mzk1LCAwLCA1MzkzLCAzNTQsIAotICAgIDY4NjE1LCAxMTk5NDgsIDc4NTAzLCAwLCAwLCA0MjAzOSwgMCwgMCwgNjQxNDIsIDYyNiwgMCwgNTg5NSwgMCwgMCwgNTc4MCwgCi0gICAgMCwgMCwgMTI4ODc0LCAwLCAwLCA0MzI5NywgMCwgNDMxMSwgNDY0NCwgODgxOCwgMCwgMTI4MTg2LCAwLCA3MTQ1LCAzOTE4LCAKLSAgICA2NjQ1MiwgMzc5NywgMTY0NCwgOTIzNDYsIDk2NTgsIDQxNDAsIDExMzg1LCA2NTk0NywgNjQ1NSwgOTAzMCwgODEzLCAKLSAgICAxMTk5NDUsIDY4MTMxLCA0MTQ2LCAxMTk5NTcsIDUzNjAsIDI0NjYsIDAsIDY3NjY5LCAxMTk5NDIsIDYyNDksIDQyMTE3LCAKLSAgICA5MjI4NywgMTI4MjI0LCAwLCAwLCA3NDA0NiwgMTIwNTgzLCA0OTExLCA5ODgsIDkxNzgwNywgMCwgMCwgNDMwNjEsIDcwNTQsIAorICAgIDk4MzQyMiwgNDk0MiwgOTUzOSwgNDkzOCwgMCwgNjUyMDEsIDUyNTksIDkzNjksIDY0MTg1LCA0MTQyLCA1MjU3LCAKKyAgICA5ODM2MDEsIDAsIDQ5NjQsIDUyNjQsIDY0MTc4LCA2NDE3NywgMTI5NzksIDQxNDExLCA2NDE4MiwgNjQxODEsIDY0MTgwLCAKKyAgICA2NDE3OSwgOTQ4MiwgNDg3MywgNDEyMzEsIDE4MjIsIDQyNTI2LCAxMjg1ODEsIDEyNzU4LCAzODY1LCAwLCAwLCAxMDUwMCwgCisgICAgMCwgMTE5MDI0LCA3ODAyOCwgOTI0MDgsIDk4MzAsIDQzNjQyLCAzODksIDEwODkzLCA3NTIxLCAxMjc4NzksIDQ4NzIsIAorICAgIDU0NjMsIDAsIDMxMjUsIDk1NjcsIDAsIDQ4NzgsIDU0NTksIDQ2MDQsIDkxNzkzMSwgOTU1NywgNTQ2NSwgNjg2MTcsIDAsIAorICAgIDExNDk0LCAxMjY0OTIsIDk1NjMsIDEwODY1LCA3NDU3MCwgNDMyNzksIDY0MTg2LCA5ODM0MzEsIDc4NzE0LCA2NDE5MSwgCisgICAgNjQxOTAsIDg4OTgsIDY0MTg4LCAwLCA0MTAzMCwgNzg4MzYsIDAsIDkxNzgzNSwgNzg4MjAsIDkxNzgzNCwgMCwgNzg4MDUsIAorICAgIDQxMDMxLCA3ODgwMSwgMTE5NjAsIDY3NDUsIDMwODIsIDk4MzQyOSwgNzg1MzksIDczOTE5LCAxMDU3MywgNDE3NDQsIAorICAgIDcwNzksIDU4NTYsIDEyNzA0MywgNTE2MywgNzg4MDksIDEyODE2MiwgMTgxNywgNjY3MjQsIDc4NTM4LCAwLCAxMDU2NCwgCisgICAgNzc2MywgMTMwNzcsIDQxODEzLCA0NDAwLCA0MTc0NSwgNjQyMDcsIDEwMjc1LCA4OTI1LCAxMDM3MSwgMTAzMDcsIDQxODE0LCAKKyAgICA0MjQ4LCAwLCAwLCA0NTQxLCA2Mjk5LCA2NDIwNCwgNjQyMDMsIDY0MjAxLCA2NDIwMCwgNjQxOTksIDY0MTk4LCAxMjY0NzEsIAorICAgIDQyMTU2LCA3ODY4OCwgMCwgNjQxOTMsIDY0MTkyLCA2NTIyMywgOTk0MywgNjQxOTcsIDY0MTk2LCA2NDE5NSwgNjQxOTQsIAorICAgIDEzMjgyLCA2NDE3NSwgNjQxNzQsIDY0MTczLCA3ODE4OSwgODQ2LCA3ODE4NiwgOTk2NSwgMCwgMCwgMCwgMCwgMjU0MywgCisgICAgMTIxNjMsIDMxMDgsIDk3NDUsIDY0MTY3LCA2NDE2NiwgNjQxNjUsIDY0MTY0LCAyMTEwLCA5MjE3NiwgNjQxNjksIDY0MTY4LCAKKyAgICA2NDk0OSwgMTA5NzIsIDEwMjUxLCAxMDI0NywgNDI3NjgsIDcxNSwgMjI5NSwgNDMyOTksIDk0NTMsIDUzNDgsIDEwOTQzLCAKKyAgICAxMjAzNzgsIDAsIDExMzUyLCA1NTAsIDk5MTAsIDEyNjcwNSwgMCwgNjY1NzksIDExNTUxLCAwLCAxOTUwODAsIDk1MDQsIAorICAgIDcxODcsIDAsIDEwMzczLCAwLCAxMjA3OTEsIDEwMjYxLCAxMDI1MywgNjQwNCwgMTAyNzcsIDc4MTgzLCAxMTk4NCwgMTU1MiwgCisgICAgNjUyMjIsIDY5OTgsIDc4MTgwLCAwLCAzMTI4LCA0Nzg5LCA1MDY3LCA1MDY2LCAxMTg4NDksIDQ3ODQsIDAsIDg4MjcsIAorICAgIDExNDYsIDUwNjUsIDY5ODkwLCA3ODE5MiwgNjgxMzYsIDc4MTkwLCA0MzQxMiwgNTA2NCwgMjQzMSwgMCwgOTQ1MCwgMTgwOSwgCisgICAgMCwgNzgyMDAsIDc4MjAxLCA1MDYyLCAxMjY0LCA2NDgxNywgMTMyNTQsIDExNjk3LCAxMjY1OTgsIDk3ODUsIDY0NzE2LCAwLCAKKyAgICAzOTMzLCA3NDU1OSwgNDc0MCwgNzk1NCwgMCwgMCwgNDI2MDksIDAsIDc0MTc1LCAwLCAxMjcwMTYsIDAsIDk4Mzg2NCwgCisgICAgNDIxMzAsIDAsIDUxNTEsIDkxNzgyOSwgOTE3ODIzLCAwLCA5Mzk4MCwgMCwgNzYyMCwgMzgwMCwgNjUxMjIsIDAsIDAsIAorICAgIDgzNTUsIDc4NTQsIDAsIDk1NCwgNjQ5MjcsIDQxODUsIDQxMDQ1LCAxMjcxNDEsIDQxNDM4LCA0MTQzOSwgNjg2NjYsIAorICAgIDEwNzExLCA0NTkzLCAxMjc3NDUsIDEyMDU4NCwgOTgzNDAwLCA2NDc3NCwgODA1MywgMTA1MzIsIDY2NzI3LCAwLCAwLCAwLCAKKyAgICA2NDc1OSwgNjM4MSwgNTE2NiwgOTg4OCwgMTI3ODAwLCA1MTQ4LCA0MjgzNCwgMCwgNzgyMDUsIDc4MjA2LCA0Mzc4NywgCisgICAgNzgyMDQsIDY0MTMxLCAzMTE5LCA5MTc4MTQsIDAsIDMwNjAsIDY0MTM1LCA5OTg2LCAwLCA3Nzg3NiwgNjM2LCAxMTY5OCwgCisgICAgMCwgOTgzNDQzLCA5OTE2LCAxMTcwMSwgNzgzNiwgNDI3NDEsIDY0MTM3LCA4MzIwLCA3ODY0MCwgODg2MywgOTI0MzEsIAorICAgIDExOTk2MCwgMTQ3NywgNDMyODksIDAsIDc0MzU4LCA4NjE4LCA5ODMzOTQsIDk5MDgsIDk4Mzk3MiwgMCwgMCwgMzkzNywgCisgICAgMTIzMTIsIDAsIDk4MzM5NSwgMCwgNjQ3ODEsIDkxMiwgNjM0OSwgNDUzNiwgOTM5NTQsIDc0NTMyLCAxMjY1OTQsIDYyNDQsIAorICAgIDkyMjA5LCA3MTM0MSwgMzkzNSwgMTIwNjY1LCA5ODM0NjgsIDAsIDExOTUwLCA1MzkyLCA0MjI0OCwgNjUxMjksIDY4NjU2LCAKKyAgICA1Mzk3LCAwLCAxMjA0NiwgMTI1OTksIDAsIDEyODI2MSwgNTM5NSwgMCwgNTM5MywgMzU0LCA2ODYxNSwgMTE5OTQ4LCAKKyAgICA3ODUwMywgMCwgMCwgNDIwMzksIDAsIDAsIDY0MTQyLCA2MjYsIDAsIDU4OTUsIDAsIDAsIDU3ODAsIDAsIDAsIDEyODg3NCwgCisgICAgMCwgMCwgNDMyOTcsIDk4MzA3OSwgNDMxMSwgNDY0NCwgODgxOCwgMCwgMTI4MTg2LCAwLCA3MTQ1LCAzOTE4LCA2NjQ1MiwgCisgICAgMzc5NywgMTY0NCwgOTIzNDYsIDk2NTgsIDQxNDAsIDExMzg1LCA2NTk0NywgNjQ1NSwgOTAzMCwgODEzLCAxMTk5NDUsIAorICAgIDY4MTMxLCA0MTQ2LCAxMTk5NTcsIDUzNjAsIDI0NjYsIDAsIDY3NjY5LCAxMTk5NDIsIDYyNDksIDQyMTE3LCA5MjI4NywgCisgICAgMTI4MjI0LCAwLCAwLCA3NDA0NiwgNDM3NDUsIDQ5MTEsIDk4OCwgOTE3ODA3LCAwLCA5ODM0NjAsIDQzMDYxLCA3MDU0LCAKICAgICA2NDE0NywgMCwgNjQ5MjAsIDY4MTk1LCA2Njk4LCAxMTg5MzMsIDkyNTA2LCAwLCAxMjAwMDYsIDExOTgxLCAxMjIwMiwgMCwgCiAgICAgMTEwMzIsIDY3NjU0LCA2MDkzLCAxMTYwOCwgOTc1LCA2ODY2MiwgNjU4NDMsIDE3MCwgMCwgMCwgNDE2OSwgMCwgNDE4NTksIAogICAgIDYwNTgsIDEyMDQwMSwgMTMyMDMsIDEyMDY1NywgMCwgMCwgNjg2NTcsIDk4MTgsIDEwMTc4LCAxMDMyNCwgNDIxMDYsIAogICAgIDU4OTgsIDc0NTQwLCA0NzM4LCA0MTg1NiwgNzA2MiwgOTE3ODY1LCA0NzM3LCAxMTc3OSwgNDc0MiwgMTIwNTY0LCA5MjM5MSwgCi0gICAgNzM3MzYsIDAsIDk4MjUsIDY0NDgsIDY3MTUsIDEyNzAwOCwgNDgzMSwgMCwgOTI1MjUsIDAsIDUzMDAsIDQ3NDEsIDQyMTA4LCAKLSAgICAwLCA2NDE1OSwgNDczNiwgNjQxNDgsIDAsIDg0OSwgOTIxOTEsIDc4NDkxLCA0MzI4OCwgMCwgNjY2MjAsIDAsIDEyNzMzMSwgCi0gICAgNjU1NDksIDk0OTYsIDY0NTk4LCAxMTg4NjYsIDAsIDc4NzYsIDY4MTMyLCA5MTc4NzIsIDM5MjgsIDkxNzg3MCwgNDMzNzgsIAotICAgIDEwNzA2LCA3MTk4LCAwLCA0ODQyLCAxMjA1MywgMTI4MTI5LCAwLCA0ODQxLCAwLCA0MTcxLCAxMjAwOCwgNjI1MSwgMzkyMywgCi0gICAgMTQ5MCwgMCwgMTE5NTkxLCAwLCA0MDk3MiwgNTI0NSwgMCwgMTAxMTQsIDQyMDAxLCA0MTg4OCwgNDg0NSwgODMzMiwgCi0gICAgNDA5NzQsIDY0MzQ3LCA0ODQwLCA5MDc3LCA3ODM0NiwgMTc0NywgOTE3ODQ5LCA0ODI1LCA2OTI0MCwgOTE3ODUyLCAKLSAgICA2ODY1NSwgMCwgMCwgMCwgMCwgNjg2MjgsIDAsIDk4NTAsIDExODkzNywgMzY3LCAxNDcyLCA5MTc4NTksIDY2ODcsIDEyNzQsIAotICAgIDAsIDU5MDUsIDEyMzM5LCA4OTE5LCA3Mzk1MywgMTA5MDcsIDY1MjYxLCAxMTAyMywgMTE5NTU5LCA0ODMwLCA5MTM0LCAKLSAgICA3ODY2NiwgNjQxMjYsIDQzMDExLCAwLCAwLCA2NDEwMSwgMCwgMCwgNDgyNCwgMTA2MTQsIDEyMDM5MCwgMCwgMTg4OCwgCi0gICAgMTk2MCwgNzg2MSwgOTE3ODU2LCA3ODUyNCwgNDE4MzYsIDQzMDEyLCA2MDUyLCA2MDY0LCA1NCwgNDMwMDksIDEyMjE0LCAwLCAKLSAgICA2MjExLCAwLCAzNTgsIDQxOTk3LCA0MTgzMywgMTE0NDIsIDEwNzU4LCA2NTc3NCwgMCwgMTIwMzg0LCA2NDExNSwgOTIyMjEsIAotICAgIDAsIDAsIDAsIDExOTA1MywgMCwgMTI3NjUsIDY0MTE4LCAxMjY5OTgsIDEyOTYyLCAwLCAwLCA0MDE3LCAxMjgyNywgNTI0MSwgCi0gICAgMTIwMzkyLCAwLCA0MTExOCwgMzkyNCwgMCwgMTEzNjYsIDkxNzg0MywgMCwgMCwgOTE3ODQ2LCA0MTExNiwgOTE3ODQ0LCAKLSAgICA5MTc1NjQsIDAsIDExMzYzLCAxMjA1NywgMTE5MTcsIDE1NjcsIDc0MDAwLCA0NzIxLCAwLCA2NjIwMiwgODk1NywgNDEzOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTI3NDAsIDEyODcwMiwgNDcyMiwgNjgxNiwgMTI3NzkzLCAxMjc1OSwgNDcyNSwgMCwgNDcyNiwgCi0gICAgMCwgMCwgMCwgOTE3OTA0LCA5MTc5MDUsIDAsIDEyNzU1LCAxMjc2MiwgNDAxNSwgMCwgODA1MiwgNDc2LCAwLCAwLCAKLSAgICAxMjgyOTQsIDY0MjEyLCA0MTAyMCwgMTM4MiwgNjQyMDksIDY0MjE2LCA2NDIxNSwgNjQyMTQsIDE2NTYsIDQxODMxLCAwLCAKKyAgICA3MzczNiwgOTgzMzU2LCA5ODI1LCA2NDQ4LCA2NzE1LCAxMjcwMDgsIDQ4MzEsIDAsIDkyNTI1LCAwLCA1MzAwLCA0NzQxLCAKKyAgICA0MjEwOCwgOTgzMzQ2LCA2NDE1OSwgNDczNiwgNjQxNDgsIDAsIDg0OSwgOTIxOTEsIDc4NDkxLCA0MzI4OCwgMCwgNjY2MjAsIAorICAgIDkxNzkxNiwgMTI3MzMxLCA2NTU0OSwgOTQ5NiwgNjQ1OTgsIDExODg2NiwgOTgzMzU4LCA3ODc2LCA2ODEzMiwgOTE3ODcyLCAKKyAgICAzOTI4LCA5MTc4NzAsIDQzMzc4LCAxMDcwNiwgNzE5OCwgMCwgNDg0MiwgMTIwNTMsIDEyODEyOSwgMCwgNDg0MSwgMCwgCisgICAgNDE3MSwgMTIwMDgsIDYyNTEsIDM5MjMsIDE0OTAsIDAsIDExOTU5MSwgMTI2NTEyLCA0MDk3MiwgNTI0NSwgMCwgMTAxMTQsIAorICAgIDQyMDAxLCA0MTg4OCwgNDg0NSwgODMzMiwgNDA5NzQsIDY0MzQ3LCA0ODQwLCA5MDc3LCA3ODM0NiwgMTc0NywgOTE3ODQ5LCAKKyAgICA0ODI1LCA2OTI0MCwgOTE3ODUyLCA2ODY1NSwgMCwgOTgzMzgwLCAwLCAwLCA2ODYyOCwgOTgzMzM5LCA5ODUwLCAxMTg5MzcsIAorICAgIDM2NywgMTQ3MiwgOTE3ODU5LCA2Njg3LCAxMjc0LCAwLCA1OTA1LCAxMjMzOSwgODkxOSwgNzM5NTMsIDEwOTA3LCA2NTI2MSwgCisgICAgMTEwMjMsIDExOTU1OSwgNDgzMCwgOTEzNCwgNzg2NjYsIDY0MTI2LCA0MzAxMSwgMCwgMTI2NjI2LCA2NDEwMSwgMCwgMCwgCisgICAgNDgyNCwgMTA2MTQsIDExOTY1OSwgMCwgMTg4OCwgMTk2MCwgNzg2MSwgOTE3ODU2LCA3ODUyNCwgNDE4MzYsIDQzMDEyLCAKKyAgICA2MDUyLCA2MDY0LCA1NCwgNDMwMDksIDEyMjE0LCAwLCA2MjExLCAwLCAzNTgsIDQxOTk3LCA0MTgzMywgMTE0NDIsIAorICAgIDEwNzU4LCA2NTc3NCwgMCwgMTIwMzg0LCA2NDExNSwgOTIyMjEsIDcwMDE4LCAwLCAwLCAxMTkwNTMsIDAsIDEyNzY1LCAKKyAgICA2NDExOCwgMTI2OTk4LCAxMjk2MiwgMCwgMTI2NTgwLCA0MDE3LCAxMjgyNywgNTI0MSwgMTIwMzkyLCAwLCA0MTExOCwgCisgICAgMzkyNCwgMCwgMTEzNjYsIDkxNzg0MywgMCwgMCwgOTE3ODQ2LCA0MTExNiwgOTE3ODQ0LCA5MTc1NjQsIDAsIDExMzYzLCAKKyAgICAxMjA1NywgMTE5MTcsIDE1NjcsIDc0MDAwLCA0NzIxLCAxMjY2NDEsIDY2MjAyLCA4OTU3LCA0MTM5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMjc0MCwgMTI4NzAyLCA0NzIyLCA2ODE2LCAxMjc3OTMsIDEyNzU5LCA0NzI1LCA5ODMzNzUsIDQ3MjYsIDAsIAorICAgIDE5NDg5MiwgMCwgMTI4MzIxLCA5MTc5MDUsIDAsIDEyNzU1LCAxMjc2MiwgNDAxNSwgMCwgODA1MiwgNDc2LCAwLCAwLCAKKyAgICAxMjgyOTQsIDY0MjEyLCA0MTAyMCwgMTM4MiwgNjQyMDksIDY0MjE2LCA0NDAwMiwgNjQyMTQsIDE2NTYsIDQxODMxLCAwLCAKICAgICAwLCA0MTg0MywgODcyMCwgMzkwOCwgMTQ1MiwgMTMxMTEsIDAsIDY0MDY3LCAxMjczMjgsIDg1NTIsIDY0MTEzLCA0MTg0NSwgCiAgICAgMzg0OSwgNzg3MzIsIDY2MjMyLCA5Nzc4LCAxMjAwNjYsIDU4OTEsIDcwNjQsIDU1LCA5OTQ4LCAxMTkwODUsIDAsIDAsIAotICAgIDc5MzUsIDI0MjAsIDAsIDExMTQsIDkyNTk5LCA2NzU4NSwgNzg2NzUsIDEyMDA1MywgOTIzNTAsIDEyMDA1MSwgMzkzOCwgCisgICAgNzkzNSwgMjQyMCwgMCwgMTExNCwgOTI1OTksIDY3NTg1LCA3MDEwNCwgMTIwMDUzLCA5MjM1MCwgMTIwMDUxLCAzOTM4LCAKICAgICAxMjAwNTcsIDY1NDE3LCA2NDcxNywgMTIwMDYwLCAxMjAwNjEsIDY1NDE1LCAxMjAwNTksIDYyOTIsIDY1MzAzLCA3OTU1LCAKICAgICA2NDUyLCA0NzEzLCAxMjgxOTYsIDY2MjQ5LCA5MTc4ODUsIDkxNzg5MCwgOTE3ODkxLCA2NTE1MiwgNzE5LCAxMjAwNDQsIAogICAgIDc4NjIzLCAxMjAwNDIsIDY3MTMsIDQ1MzIsIDY1NDEyLCA2OTgyMiwgMTA4NjgsIDQ3MTcsIDIzNDksIDU5MDIsIDY2NDUwLCAKICAgICA0NzEyLCA5MTc5MDIsIDkxNzg5OSwgOTE3OTAwLCA2NTQxNiwgODE1NSwgNDcxOCwgMzk0MiwgNDcxNCwgOTYyNSwgMCwgCi0gICAgNjM4MywgMTk0NzQ0LCAxMjAwNiwgMTI4NTY1LCAwLCAwLCAwLCAwLCA2NTQxNCwgNjQ1NCwgMTIyOSwgMCwgNjY0MzcsIAotICAgIDY2MDI1LCA3ODY5OSwgMCwgNDI1MDAsIDEyMDUwOCwgNDgwOSwgOTYyMywgOTE3ODc0LCA3ODY5NCwgOTE3ODgwLCAKKyAgICA2MzgzLCAxOTQ3NDQsIDEyMDA2LCAxMjg1NjUsIDAsIDAsIDAsIDAsIDY1NDE0LCA2NDU0LCAxMjI5LCAxMjY2MDYsIAorICAgIDY2NDM3LCA2NjAyNSwgNzg2OTksIDAsIDQyNTAwLCAxMjA1MDgsIDQ4MDksIDk2MjMsIDkxNzg3NCwgNzg2OTQsIDkxNzg4MCwgCiAgICAgOTE3ODc3LCA5MTc4NzgsIDY1NDA1LCA2ODE1OSwgMTI4OTMsIDkxNzg4MiwgNTM2NSwgNDU0NSwgODkwMSwgOTI0MjEsIAogICAgIDExOTU1NSwgNDgxMywgMTI4MjYyLCAwLCA1OTI1LCA0ODA4LCA2NDMzMCwgMCwgNjU0NzUsIDExODk0MCwgMTk1MDI4LCAKLSAgICA0ODE0LCAwLCA0ODEwLCAwLCAwLCA2NDkyOCwgMTA1NDMsIDAsIDM1MjIsIDAsIDQxNCwgNjU0MDQsIDAsIDE5NTAyNywgCisgICAgNDgxNCwgMCwgNDgxMCwgMCwgMCwgNjQ5MjgsIDEwNTQzLCAwLCAzNTIyLCA3MTMzNSwgNDE0LCA2NTQwNCwgMCwgMTk1MDI3LCAKICAgICA2NDU2LCA3MzgyMCwgMCwgNjY5MSwgNDIxOTMsIDkyMjI1LCAxMjgxNzEsIDAsIDc0NDk1LCAwLCAwLCAwLCAxMTg4MjAsIAogICAgIDk3NTEsIDY1NDA3LCAxMjgwODUsIDExNzcwLCAzOTE5LCAwLCAwLCA2NTA2MSwgMCwgMCwgMCwgMTIyMzUsIDAsIDAsIAotICAgIDEyNzIzMywgNjQwOTIsIDAsIDY0MDgwLCAwLCA2NDA5MCwgMCwgMCwgMTAxNjIsIDEwMzEwLCAwLCA4NDU0LCAxMjc4ODgsIAotICAgIDQyMDM4LCAzODcsIDQxMzYzLCAxMjczNywgMCwgNDc4MCwgNDMzNjgsIDAsIDY0MzEwLCA2NDYyMSwgNjczMiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgODg5NiwgMCwgMzc1LCA2OTc2LCA2NjU4MiwgMTE5MDA1LCAwLCAwLCAwLCAxMTkyMDIsIDExOTIwMywgMTI1MjYsIAotICAgIDQzMTIwLCAyMzE1LCAwLCAxOTM4LCAxMTkxOTcsIDAsIDQ1MjksIDExOTIwMCwgMTE5MjAxLCAxMTkxOTgsIDExOTE5OSwgCi0gICAgNjk2OTIsIDAsIDY5Njk4LCAxMzE1MCwgNjQ0OTIsIDAsIDAsIDAsIDEyOTAyLCAwLCA0Mjg5MSwgNjYzMjcsIDc0Mjk4LCAwLCAKLSAgICAxMDc5OSwgNjk2OTAsIDI1ODcsIDY2MzcyLCAwLCA0MTkzLCA5MjI1MCwgNDI0MSwgMCwgNzk5OCwgMCwgMCwgMCwgMCwgCi0gICAgMjMxNiwgMTE4ODIxLCAwLCAwLCAwLCA2NDI5NywgNzQ3OTksIDkyNDQyLCA3NDE0MCwgMCwgNTM3MywgMCwgMCwgMzc2MiwgCi0gICAgMTAwMTUsIDEyNzMzNSwgMTE5MjMyLCAwLCA0MTU5MCwgMCwgOTIzNzgsIDM3ODAsIDc0ODUsIDU3NzksIDAsIDQyMDM3LCAwLCAKLSAgICAzOTA2LCAxMjM0OSwgMCwgODMyNiwgMCwgNjU0OTgsIDM3NjMsIDY5ODMsIDU2MTgsIDAsIDM3NzksIDAsIDQzNjEzLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyODAsIDc0NTU4LCAxMjczMzIsIDY4MTM4LCAxMzA3MiwgMTg5NCwgMCwgMCwgNjU0NzgsIAotICAgIDQzMzEwLCA3MjMxLCAwLCAxMTc3MywgMCwgMCwgMCwgMCwgMjU1MSwgMCwgNjQ1MywgMTAyMDAsIDYyMzUsIDAsIDExOTIzNywgCi0gICAgMCwgMTI4ODA1LCA0NDcwLCAxMTk2MTMsIDkxNzU1NywgNzc4MCwgNTM2OSwgMTE4OTU4LCA1MjQ5LCAwLCA1MzY3LCA4NzU2LCAKLSAgICAxMjcxNDMsIDAsIDUzNzcsIDEyMDU4NSwgNjgxNDMsIDE2ODgsIDc4MjQ1LCAwLCA2OTY4NSwgMCwgMCwgMCwgNDQwMjAsIAotICAgIDY4MDgsIDQxMzE5LCAxMzAwLCAxMDY1MCwgNDE2OTIsIDY0NTA1LCA0NjY4LCAwLCAxMTk2MjQsIDE0NjUsIDEwODUwLCAKKyAgICAxMjcyMzMsIDY0MDkyLCA5ODM0NjIsIDY0MDgwLCAwLCA2NDA5MCwgMCwgNjk5MTMsIDEwMTYyLCAxMDMxMCwgMCwgODQ1NCwgCisgICAgMTI3ODg4LCA0MjAzOCwgMzg3LCA0MTM2MywgMTI3MzcsIDAsIDQ3ODAsIDQzMzY4LCAwLCA2NDMxMCwgNjQ2MjEsIDY3MzIsIAorICAgIDc4MTE2LCAwLCA5ODMxMzksIDAsIDk4MzA3NCwgODg5NiwgMCwgMzc1LCA2OTc2LCA2NjU4MiwgMTE5MDA1LCA5ODM4NjUsIAorICAgIDAsIDk4MzQyNiwgMTE5MjAyLCAxMTkyMDMsIDEyNTI2LCA0MzEyMCwgMjMxNSwgMCwgMTkzOCwgMTE5MTk3LCAwLCA0NTI5LCAKKyAgICAxMTkyMDAsIDExOTIwMSwgMTE5MTk4LCAxMTkxOTksIDY5NjkyLCA5ODM0MjQsIDY5Njk4LCAxMzE1MCwgNjQ0OTIsIDAsIDAsIAorICAgIDIyOTEsIDEyOTAyLCAwLCA0Mjg5MSwgNjYzMjcsIDc0Mjk4LCA5MTc4NTcsIDEwNzk5LCA2OTY5MCwgMjU4NywgNjYzNzIsIAorICAgIDAsIDQxOTMsIDkyMjUwLCA0MjQxLCA5ODMwNTcsIDc5OTgsIDAsIDAsIDAsIDEyNjY0MCwgMjMxNiwgMTE4ODIxLCAwLCAwLCAKKyAgICAwLCA2NDI5NywgNzQ3OTksIDkyNDQyLCA3NDE0MCwgMCwgNTM3MywgMCwgOTgzODc3LCAzNzYyLCAxMDAxNSwgMTIwNjcyLCAKKyAgICAxMTkyMzIsIDAsIDQxNTkwLCAwLCA3MDA5OCwgMzc4MCwgNzQ4NSwgNTc3OSwgMCwgNDIwMzcsIDAsIDM5MDYsIDEyMzQ5LCAKKyAgICAwLCA4MzI2LCAwLCA2NTQ5OCwgMzc2MywgNjk4MywgNTYxOCwgMCwgMzc3OSwgMCwgNDM2MTMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI4MCwgNzQ1NTgsIDEyNzMzMiwgNjgxMzgsIDEzMDcyLCAxODk0LCAwLCAwLCA2NTQ3OCwgNDMzMTAsIDcyMzEsIDAsIAorICAgIDExNzczLCAwLCAwLCAwLCAwLCAyNTUxLCAwLCA2NDUzLCAxMDIwMCwgNjIzNSwgOTgzNzQzLCAxMTkyMzcsIDAsIDEyODgwNSwgCisgICAgNDQ3MCwgMTE4MjYsIDkxNzU1NywgNzc4MCwgNTM2OSwgMTE4OTU4LCA1MjQ5LCAwLCA1MzY3LCA4NzU2LCAxMjcxNDMsIDAsIAorICAgIDUzNzcsIDEyMDU4NSwgNjgxNDMsIDE2ODgsIDc4MjQ1LCA5ODMzNDgsIDY5Njg1LCA5ODM3NDcsIDAsIDAsIDQ0MDIwLCAKKyAgICA2ODA4LCA0MTMxOSwgMTMwMCwgMTA2NTAsIDQxNjkyLCA2NDUwNSwgMjI5MCwgMCwgMTE5NjI0LCAxNDY1LCAxMDg1MCwgCiAgICAgMzk0MywgMCwgNDEyMDUsIDQxMzE1LCAxMTg5NjEsIDAsIDAsIDUzNTIsIDAsIDAsIDg4MzksIDQxMzE0LCA3Mzg0LCA3Nzg1LCAKICAgICA0MTIwNCwgMTI3MzIyLCA0MTIwOSwgNjk2MzcsIDkyMjQxLCA0MzYwNywgMCwgMCwgNTQyMCwgMzg5NywgMTAxMzQsIDAsIAogICAgIDc0NDE3LCA0MDE4LCA3MTUwLCA2ODEyNywgMCwgMCwgMCwgMCwgMTI3NTI2LCAyNTYxLCA2ODYyMSwgMzU0MiwgNzE0OCwgCiAgICAgMTIwNzYsIDc5NTEsIDY4MTUyLCAxMTg4NTcsIDUzMDMsIDYyNzYsIDE3MDYsIDAsIDc4NzUxLCA3MTQ2LCAwLCA2NTE1MCwgCi0gICAgNDE4MTksIDAsIDczOTUxLCAxMDg0NywgNDE4MjIsIDk5ODUsIDg2MCwgMCwgMTA1MDYsIDAsIDY5NjQxLCAxMDc1MywgCisgICAgNDE4MTksIDAsIDczOTUxLCAxMDg0NywgNDE4MjIsIDk5ODUsIDg2MCwgMCwgMTA1MDYsIDk4MzQyNywgNjk2NDEsIDEwNzUzLCAKICAgICAxMDgzMCwgMCwgNjE1LCA2NDQ5MCwgNzU3NCwgOTI2MTcsIDc3OTIyLCAwLCAxMjkwOSwgNDMwMTYsIDY0NTU5LCAxMjcwMjgsIAotICAgIDAsIDAsIDAsIDIwMjAsIDAsIDQwMjIsIDEyODc4MywgMCwgNzc5MjMsIDAsIDQxNjkxLCAwLCAwLCA3NDMyOSwgMCwgCi0gICAgNjQ2MjIsIDkwNzAsIDAsIDY4NDExLCAzOTExLCA0MjgyOSwgNDMxMjIsIDEwMzMsIDc0NDQwLCAwLCA3MDAwLCAzOTA0LCAwLCAKLSAgICAxMjgxOTgsIDAsIDExODkzMSwgMTE5NjMwLCAxMzEyMywgMTA4NDYsIDM0NTAsIDEyNzM2MCwgNzM5NywgMTE4ODA3LCAwLCAKLSAgICA0Mjc3OCwgMTAwMDAsIDQxMDg4LCA0NDksIDAsIDM3NzcsIDY4NDU4LCAwLCA5NjM2LCAwLCAxMDczOCwgNjk2MzQsIDkzNjcsIAotICAgIDU5MywgNDEwODUsIDM5OTksIDY1MjI2LCA0MTcxMywgMTI3NjQsIDAsIDY0NDA5LCAzNTk2LCAwLCAwLCA5NzYzLCAKKyAgICAwLCAwLCA2Nzk5NiwgMjAyMCwgMCwgNDAyMiwgMTI4NzgzLCAwLCA3NzkyMywgMTI2NTkzLCA0MTY5MSwgMCwgMCwgNzQzMjksIAorICAgIDAsIDY0NjIyLCA5MDcwLCAwLCA2ODQxMSwgMzkxMSwgNDI4MjksIDQzMTIyLCAxMDMzLCA3NDQ0MCwgMCwgNzAwMCwgMzkwNCwgCisgICAgMCwgMTI4MTk4LCAwLCAxMTg5MzEsIDExOTYzMCwgMTMxMjMsIDEwODQ2LCAzNDUwLCAxMjczNjAsIDczOTcsIDExODgwNywgCisgICAgMCwgNDI3NzgsIDEwMDAwLCA0MTA4OCwgNDQ5LCAwLCAzNzc3LCA2ODQ1OCwgMCwgOTYzNiwgMCwgMTA3MzgsIDY5NjM0LCAKKyAgICA5MzY3LCA1OTMsIDQxMDg1LCAzOTk5LCA2NTIyNiwgNDE3MTMsIDEyNzY0LCAwLCA2NDQwOSwgMzU5NiwgMCwgMCwgOTc2MywgCiAgICAgMTIwMjgwLCA5MjE5MiwgMTIzNDcsIDEyNCwgMTI5ODEsIDQxMTI3LCAyMDkyLCA5MjY4NywgMCwgMCwgMCwgMTA4MjAsIAotICAgIDQzOTg3LCAwLCAwLCAxNzY5LCA0MTcxNSwgMjQ2MywgNzg0ODksIDAsIDEyNzcwLCAwLCAxNTM4LCAwLCA0MzEyNCwgMCwgCi0gICAgMTk1MDU4LCA3Nzk1LCAxMjAzMDAsIDAsIDQ4MjgsIDEyNTgsIDEyNzgwMiwgMjAwNiwgMCwgMCwgOTQ5OCwgMTI3MDMyLCAKKyAgICA0Mzk4NywgMCwgMCwgMTc2OSwgNDE3MTUsIDI0NjMsIDc4NDg5LCAwLCAxMjc3MCwgMTI2NTAwLCAxNTM4LCAwLCA0MzEyNCwgCisgICAgMCwgMTk1MDU4LCA3Nzk1LCAxMjAzMDAsIDAsIDQ4MjgsIDEyNTgsIDEyNzgwMiwgMjAwNiwgMCwgMCwgOTQ5OCwgMTI3MDMyLCAKICAgICAxMjcwMzMsIDEyMDI4OSwgMTIwMjg4LCAzOTM5LCAxMjAyOTAsIDg4NDYsIDg5NDMsIDEyMDI4NywgMTIwMjg2LCAyNjUwLCAKICAgICA0NDkxLCAxOTYxLCA0MjYwMiwgMTE1MjUsIDEyMDI5MiwgMTk1OSwgMTIwMjk0LCA1NTIyOCwgMTE3NzQsIDQxMDE2LCAwLCAKICAgICA2ODY3NSwgMTI4MDU0LCAxNTExLCA5MzI0LCA3ODIxMSwgMTA1MTksIDY2MzMxLCAzNDU0LCAxOTkzMCwgMCwgNDEwMTksIDAsIAogICAgIDAsIDY1MjkyLCA2ODIyLCAxMjg2MiwgMCwgMCwgNDIxNDMsIDQxODI4LCA3ODIwNywgNjU1MzEsIDc4MjA4LCAxMTg4NzksIAotICAgIDU1MjIzLCAwLCAwLCA0MTgyNiwgODg2NSwgNjQwMiwgMCwgMTMyNzksIDc5MTcsIDEyMDM0MCwgMCwgNzczMywgMCwgNDk5OCwgCi0gICAgMCwgOTIzMzIsIDQxOTUwLCAwLCA0MjY4LCAwLCAwLCAwLCA0MDEzLCAwLCAxMDg4MSwgMCwgMCwgMCwgNzQ3ODgsIDIwMTQsIAotICAgIDAsIDAsIDk3NjUsIDAsIDAsIDAsIDE5NTA1OSwgNzgzNTcsIDY1MjgxLCAxMjc4MjUsIDEwOTQ5LCAwLCAwLCAwLCAyMDE1LCAKLSAgICAwLCAwLCAwLCA2NjMxOCwgNDMyMzMsIDAsIDQyNTE3LCAwLCAwLCAwLCAxMjY5OCwgODA5NCwgMTAxMzUsIDY1OTA5LCAKLSAgICA2NDc0LCA3OTQsIDAsIDEyNjU2LCAxMjgxMjIsIDExOTM1MywgMTI4MjcwLCAxNjY1LCAwLCA0ODMzLCAwLCAxMTkzNTEsIAotICAgIDEyNzM2NywgMCwgMTg5LCAxMjYxMSwgMCwgMCwgMjg1OSwgNDgzOCwgMCwgNDgzNCwgNjUwNzgsIDAsIDAsIDQ4MzcsIAotICAgIDEyNzA2MSwgNzcwLCAwLCA4MTEsIDAsIDQxMDQyLCA5MTc1NTEsIDQxMzE4LCA2NDQyNywgMCwgMCwgNzg4NDgsIDM4OTUsIAotICAgIDAsIDc0MzQxLCAzOTc2LCAwLCA0Mjg1OSwgMTAxOTMsIDMxMTYsIDc3NDcsIDAsIDAsIDAsIDAsIDAsIDQzNjg2LCA3ODg0NiwgCi0gICAgNDE4NzcsIDAsIDI4NzEsIDY0NjE0LCAxMjg3ODUsIDk5OSwgMCwgNjM0NSwgNDE4NzYsIDI2NjMsIDIwMTcsIDAsIDAsIAotICAgIDExMDQwLCAxMDE1MCwgMCwgNjQzMDgsIDE1MjIsIDU5NywgNDc3NSwgMTI1NTUsIDEyNTcxLCAxMjU1MCwgMTI1ODMsIAotICAgIDEyNTYwLCAyMDE5LCAxMjU1NiwgMTI1ODQsIDMwOTIsIDAsIDEyNTYyLCA0NzgzLCAxMjU2NiwgMTI1NjksIDEyNTU0LCAwLCAKLSAgICAxMDgxMiwgNzg4NTEsIDAsIDAsIDMwNzgsIDE0MDIsIDAsIDEyODI3NSwgMCwgMCwgMTE5MjQ4LCAzOTQsIDMwODgsIDAsIAotICAgIDkyMTcyLCAwLCAzOTkxLCA2NDM5MSwgMCwgMCwgNDI0LCA2NjMyOCwgMTk5OSwgNjk2NTksIDczOTE0LCAwLCAwLCAwLCAwLCAKLSAgICA0MjIzMSwgODI0NiwgMCwgMCwgMCwgNDE4NDAsIDAsIDIzNzcsIDEyOTgsIDY0MDExLCAxMjU3MiwgMTEzMTgsIDEyNTU3LCAKLSAgICAxMjU1OSwgMTI1NzAsIDg0ODgsIDEwMDMsIDIzNzMsIDk0NDYsIDc0ODEsIDk0NDgsIDQ4LCAwLCA5NDgwLCA0ODEsIDAsIAotICAgIDk0MzgsIDk0MzksIDk0NDAsIDk0NDEsIDg0NjUsIDk0NDMsIDk0NDQsIDk0NDUsIDk0MzAsIDk0MzEsIDk0MzIsIDk0MzMsIAotICAgIDk0MzQsIDk0MzUsIDM5ODQsIDk0MzcsIDAsIDAsIDk0MjQsIDk0MjUsIDk0MjYsIDk0MjcsIDk0MjgsIDk0MjksIDY0NzU4LCAKLSAgICAyMzYyLCA5NjU1LCAwLCAyMDA0LCA5MDk2LCA5NzgyLCAxMjg4NDgsIDkxNzIsIDEyODU0NSwgMTk5NjUsIDAsIDU5NTUsIAotICAgIDY3NjY2LCAxMTA4LCAwLCA3NDc3MywgMCwgMCwgNjQ3ODIsIDM5MjYsIDkyNDQ4LCA2NTIxMCwgODc5OCwgMCwgOTIxNjUsIAotICAgIDEzOTIsIDAsIDAsIDEyNzM2NCwgMTA2MDYsIDgwNjUsIDExODgwNSwgMTAzNTMsIDEwNDE3LCAwLCAwLCA2NDUyNCwgCi0gICAgOTI0MTgsIDQwMTksIDAsIDAsIDQzMjgwLCA4MjE5LCA2ODQwMiwgMTgxMiwgMCwgMCwgMCwgMCwgNDI0MTAsIDc0NDQ4LCAKLSAgICAxMTkxMzIsIDYwNTQsIDEwNjk3LCAzMTY5LCA0MjI5NywgNDIzMjIsIDEwNjQyLCAzOTA5LCA5OTUwLCAwLCAxMjgxMzksIDAsIAotICAgIDY4Njc4LCAwLCAwLCAxMDQ5LCAwLCA2NTcwNywgMjMwNCwgNDE4MDYsIDkyMzI2LCA0MjMzNiwgMzkyMSwgMCwgMTE3NzUsIAotICAgIDY0NzYwLCAxMTc2NiwgMTAzOCwgNDIzMDMsIDk4MjMsIDEyNzI3OCwgNjkyMzYsIDQwMDgsIDY0MDA0LCA4NzczLCAxMDczMywgCi0gICAgMzYsIDAsIDUxNTMsIDQxODA1LCAwLCA3MzczNSwgNzYzLCA0MTgwOCwgNjQ5MTAsIDAsIDIwMDksIDAsIDAsIDEyNzE0MiwgCi0gICAgOTY0MCwgMTE5OTUxLCAwLCAxMjA2OTUsIDg2MjEsIDAsIDEyODUyLCAzMDMxLCAwLCA2NDM2MSwgMCwgMTgyLCAxOTQ3MTgsIAotICAgIDkyNzE2LCA5MjU5OCwgMTE5OTUwLCAwLCA5MDU4LCAzNjYsIDAsIDk4OTIsIDU5NjksIDExNzU0LCAxMDg0OCwgNDU3MCwgCi0gICAgNjUzMDEsIDQ0MDEzLCA0MjU1LCAwLCAxMDEwMiwgNDExODksIDQwMDMsIDQxMDI2LCA2ODEwOSwgMTMyOTMsIDQxMTkyLCAKLSAgICA2OTYzNSwgMCwgNDIyNTEsIDAsIDQyNTM0LCA2NTE3OSwgMTEyODcsIDYxMjgsIDAsIDExMDM0LCAxMDkyMywgNjQ0MjMsIDAsIAotICAgIDY1NTA2LCAwLCA2NTg2MSwgNzQwODMsIDkyNjAwLCA5OTMyLCAwLCA5MjQyMywgMTE5OTU1LCAwLCA5ODE3LCAwLCAKLSAgICAxMjAxNDAsIDAsIDEyMTE3LCA2NjU4NiwgNDE4MywgMTA1NDAsIDY2MjUwLCA5MDYzLCAxMjcwNDUsIDAsIDExOTk1NCwgMCwgCi0gICAgMTI4OTcsIDM3OTIsIDIwMTEsIDAsIDYwNjUsIDQzMTYwLCAwLCAxOTQ3MTUsIDg2OTIsIDQxMTg2LCA0MTgxNiwgNDEwMjMsIAotICAgIDQxODE4LCA0MTE4NywgMTE2NTksIDc5MjIsIDEyNjE0LCAyMDA1LCA4NTIzLCA3ODAwMiwgMCwgNzUxMywgMTg2MywgNDcxMCwgCi0gICAgMCwgNTk1NiwgNzYyMSwgNzgwMDYsIDkyNjI0LCA0NzA1LCA3MTYsIDc4MDA0LCAwLCA0NzA0LCAxMjAwNDAsIDEyMDI3MCwgCi0gICAgNDIyNDEsIDE2MSwgNDM5NzcsIDc0NTQ2LCA2NjIxNCwgNDcwNiwgMCwgMCwgNDI2NzIsIDQ3MDksIDEwNjgwLCAwLCAKLSAgICA0MzI5MywgMTE5OTQ0LCAwLCAxMTkxNjQsIDEyMDMyOCwgOTI0NjcsIDAsIDE3MDAsIDExOTIyMywgMCwgMCwgMTI4MTE5LCAKLSAgICA0MDA0LCAwLCAxMDk2OCwgNDMyOTYsIDAsIDg1MDYsIDAsIDAsIDEyNjk5NiwgMTAwNSwgOTM3LCA3ODIxNiwgNDczNCwgCi0gICAgMjg3MCwgMCwgNzgyMTgsIDAsIDc0NjMsIDQ3MjksIDAsIDIzNSwgMTM4NCwgNDcyOCwgMCwgMTIwNDIwLCA5MjQ5MCwgCi0gICAgMTIwMzMxLCA4MTA5LCA0MzEwNSwgMCwgNDczMCwgNDQ3LCAxMzE4NiwgMTUxMywgNDczMywgMTIwNDE1LCAwLCAwLCAKLSAgICA0MjUyNywgMTI5MTEsIDQzNDI3LCAxMzgzLCA4NTY1LCAyNDY5LCAxMjAwMjQsIDY2OTAsIDYxNTYsIDY4MTE3LCA0MzQzOSwgCi0gICAgNzk5MywgNDI4OCwgMTIwNDE2LCAyNjc0LCAxMzIzOCwgMTE5MjIsIDAsIDEyMDMzMCwgMzUxMCwgMTMyMzQsIDAsIAotICAgIDEyMDQwNywgNTYwNSwgNDIwOTUsIDExMzY0LCAwLCAxMzgwLCA2NTYxNywgMTIwMjUzLCAxMjAyNjEsIDEzMTk2LCAxMzE5NywgCi0gICAgMTIwMzA5LCAxMjA2ODIsIDk0OTUsIDExOTM0NiwgMCwgNTk1OSwgMCwgNzM5NzYsIDEyMDMwNSwgNDMzNzEsIDY5NDEsIAotICAgIDExOTM0OSwgMTMyMDUsIDEzMjExLCA1ODAxLCAxMjc2OSwgNjU5MDUsIDQxNjk3LCAxMjgzLCAxMjAzMDIsIDQ3NzksIDAsIAotICAgIDM3MTksIDQwMDYsIDAsIDE5OTU3LCAxMjg3NzMsIDIwMjEsIDExOTMzMiwgMTIwNjk5LCAxMTkxNTAsIDQzMDI4LCA2NTQ5MywgCi0gICAgNDE4MzgsIDM4NzUsIDU5NjIsIDY0MzQxLCA5MjYxNiwgOTgxNCwgNDM0NTcsIDU4MjcsIDMzMTQsIDc3ODcsIDc4MjM0LCAKLSAgICA2NTQ5NCwgNjgxNTMsIDAsIDAsIDEyMDYzNiwgNjQ1MzEsIDEyMDY5MiwgMTk0NjI2LCAwLCAwLCA2NjMxNiwgNjU0NjcsIAotICAgIDU3NzEsIDQxMjk4LCAwLCA5NzQyLCA1MjEsIDAsIDEwODAwLCAwLCA4NDA0LCAxOTQ2MjUsIDQ4MywgNzA5NiwgNzA4OSwgCi0gICAgNjYzMjMsIDkyOCwgMCwgMCwgMTE5MDE4LCAxMDU5OSwgMTE1ODYsIDM5ODksIDEwOTcxLCAwLCA2NTc4MiwgOTg0MSwgCi0gICAgODg0MywgMTIxNDUsIDkyNDcwLCAxMDA3NCwgNzg1NDgsIDAsIDM3NjksIDAsIDAsIDAsIDAsIDk1NzMsIDAsIDY1MjkwLCAKLSAgICA4ODQ5LCAwLCA2NTg1NSwgNjUxMTIsIDE3OTYsIDEyMDUwNSwgMCwgNjk2NjUsIDgxNjQsIDQxMzAxLCAzNTAyLCAwLCAKLSAgICA3Mzg4LCAxMDYyMSwgNzM4MzgsIDc4NTUzLCA1ODI1LCAxMzAwNywgNjgxNjUsIDAsIDEyMDQ1NywgMTI2NjEsIDc2MDgsIAotICAgIDEwMzU0LCAxMDQxOCwgNDI0MTEsIDIwMjIsIDAsIDE0MDksIDEyMTk1LCA0MDAxLCAzMTEyLCAxMDgyNCwgMTIwNjM5LCAKLSAgICAxMzkwLCAwLCAwLCA0MjEsIDQzNTM2LCA1ODQ2LCAxMjAxMjAsIDQxMzAsIDEyNzc3NSwgNzU5NSwgNDI1ODgsIDc2MDAsIAotICAgIDEyMDEyMSwgNjYwMzUsIDAsIDAsIDY1ODUxLCA0MjYwNywgMTI4MTkwLCA5MjQwMywgMzE2OCwgMCwgNDIxMzQsIDAsIAotICAgIDIzNzAsIDI4NDYsIDkyNjA1LCAwLCAwLCAxMjAxMzIsIDAsIDE4MzYsIDAsIDAsIDkyNTU4LCAzNzQwLCA5MjU0NywgNjI5MCwgCisgICAgNTUyMjMsIDAsIDEyODA3MSwgNDE4MjYsIDg4NjUsIDY0MDIsIDAsIDEzMjc5LCA3OTE3LCA3NDc1NSwgMCwgNzczMywgMCwgCisgICAgNDk5OCwgOTgzODg3LCA5MjMzMiwgNDE5NTAsIDAsIDQyNjgsIDAsIDAsIDcwMDYxLCA0MDEzLCAwLCAxMDg4MSwgMCwgMCwgCisgICAgMCwgNzQ3ODgsIDIwMTQsIDAsIDAsIDk3NjUsIDAsIDAsIDAsIDE5NTA1OSwgNzgzNTcsIDY1MjgxLCAxMjc4MjUsIDEwOTQ5LCAKKyAgICAwLCAwLCAwLCAyMDE1LCAwLCAwLCAwLCA2NjMxOCwgNDMyMzMsIDAsIDQyNTE3LCAwLCAwLCAwLCAxMjY5OCwgODA5NCwgCisgICAgMTAxMzUsIDY1OTA5LCA2NDc0LCA3OTQsIDAsIDEyNjU2LCAxMjgxMjIsIDExOTM1MywgMTI4MjcwLCAxNjY1LCAwLCA0ODMzLCAKKyAgICA5ODMwNTMsIDExOTM1MSwgMTI3MzY3LCAwLCAxODksIDEyNjExLCAwLCAwLCAyODU5LCA0ODM4LCAwLCA0ODM0LCA2NTA3OCwgCisgICAgMCwgMCwgNDgzNywgMTI3MDYxLCA3NzAsIDAsIDgxMSwgMCwgNDEwNDIsIDkxNzU1MSwgNDEzMTgsIDY0NDI3LCAwLCAKKyAgICAxMjgyMDgsIDc4ODQ4LCAzODk1LCAwLCA3NDM0MSwgMzk3NiwgMCwgNDI4NTksIDEwMTkzLCAzMTE2LCA3NzQ3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0MzY4NiwgNzg4NDYsIDQxODc3LCAwLCAyODcxLCA2NDYxNCwgMTI4Nzg1LCA5OTksIDAsIDYzNDUsIAorICAgIDQxODc2LCAyNjYzLCAyMDE3LCAwLCAwLCAxMTA0MCwgMTAxNTAsIDAsIDY0MzA4LCAxNTIyLCA1OTcsIDQ3NzUsIDEyNTU1LCAKKyAgICAxMjU3MSwgMTI1NTAsIDEyNTgzLCAxMjU2MCwgMjAxOSwgMTI1NTYsIDEyNTg0LCAzMDkyLCAwLCAxMjU2MiwgNDc4MywgCisgICAgMTI1NjYsIDEyNTY5LCAxMjU1NCwgMCwgMTA4MTIsIDc4ODUxLCAwLCAwLCAzMDc4LCAxNDAyLCAwLCAxMjgyNzUsIDAsIDAsIAorICAgIDExOTI0OCwgMzk0LCAzMDg4LCAwLCA5MjE3MiwgMCwgMzk5MSwgNjQzOTEsIDAsIDEyODUyNCwgNDI0LCA2NjMyOCwgMTk5OSwgCisgICAgNjk2NTksIDczOTE0LCAwLCAwLCAwLCAwLCA0MjIzMSwgODI0NiwgMCwgMCwgMCwgNDE4NDAsIDk4MzYwOSwgMjM3NywgCisgICAgMTI5OCwgNjQwMTEsIDEyNTcyLCAxMTMxOCwgMTI1NTcsIDEyNTU5LCAxMjU3MCwgNzQ3OSwgMTAwMywgMjM3MywgOTQ0NiwgCisgICAgNzQ4MSwgOTQ0OCwgNDgsIDAsIDk0ODAsIDQ4MSwgMCwgOTQzOCwgOTQzOSwgOTQ0MCwgOTQ0MSwgODQ2NSwgOTQ0MywgCisgICAgOTQ0NCwgOTQ0NSwgOTQzMCwgOTQzMSwgOTQzMiwgOTQzMywgOTQzNCwgOTQzNSwgMzk4NCwgOTQzNywgMCwgMCwgOTQyNCwgCisgICAgOTQyNSwgOTQyNiwgOTQyNywgOTQyOCwgOTQyOSwgNjQ3NTgsIDIzNjIsIDk2NTUsIDAsIDIwMDQsIDkwOTYsIDk3ODIsIAorICAgIDEyODg0OCwgOTE3MiwgMTI4NTQ1LCAxOTk2NSwgMCwgNTk1NSwgNjc2NjYsIDExMDgsIDAsIDc0NzczLCAwLCAwLCA2NDc4MiwgCisgICAgMzkyNiwgOTI0NDgsIDY1MjEwLCA4Nzk4LCAwLCA5MjE2NSwgMTM5MiwgMCwgMCwgMTI3MzY0LCAxMDYwNiwgODA2NSwgCisgICAgMTE4ODA1LCAxMDM1MywgMTA0MTcsIDAsIDAsIDY0NTI0LCA5MjQxOCwgNDAxOSwgMCwgOTgzMjgwLCA0MzI4MCwgODIxOSwgCisgICAgNjg0MDIsIDE4MTIsIDExOTk2MywgOTgzNjgzLCAwLCAxMjY0ODgsIDQyNDEwLCA3NDQ0OCwgMTE5MTMyLCA2MDU0LCAKKyAgICAxMDY5NywgMzE2OSwgNDIyOTcsIDQyMzIyLCAxMDY0MiwgMzkwOSwgOTk1MCwgMCwgMTI4MTM5LCA5ODMyNTMsIDY4Njc4LCAKKyAgICAwLCAwLCAxMDQ5LCAwLCA2NTcwNywgMjMwNCwgNDE4MDYsIDkyMzI2LCA0MjMzNiwgMzkyMSwgMCwgMTE3NzUsIDY0NzYwLCAKKyAgICAxMTc2NiwgMTAzOCwgNDIzMDMsIDk4MjMsIDEyNzI3OCwgNjkyMzYsIDQwMDgsIDY0MDA0LCA4NzczLCAxMDczMywgMzYsIDAsIAorICAgIDUxNTMsIDQxODA1LCAwLCA3MzczNSwgNzYzLCA0MTgwOCwgNjQ5MTAsIDk4MzEzMCwgMjAwOSwgMCwgMCwgMTI3MTQyLCAKKyAgICA5NjQwLCAxMTk5NTEsIDAsIDEyMDY5NSwgODYyMSwgMTIwNTIzLCAxMjg1MiwgMzAzMSwgOTgzMDUwLCA2NDM2MSwgMCwgCisgICAgMTgyLCAxOTQ3MTgsIDkyNzE2LCA5MjU5OCwgMTE5OTUwLCA0MjYxMywgOTA1OCwgMzY2LCAwLCA5ODkyLCA1OTY5LCAKKyAgICAxMTc1NCwgMTA4NDgsIDQ1NzAsIDY1MzAxLCA0NDAxMywgNDI1NSwgMTI3ODg5LCAxMDEwMiwgNDExODksIDQwMDMsIAorICAgIDQxMDI2LCA2ODEwOSwgMTMyOTMsIDQxMTkyLCA2OTYzNSwgMCwgNDIyNTEsIDAsIDQyNTM0LCA2NTE3OSwgMTEyODcsIAorICAgIDYxMjgsIDAsIDExMDM0LCAxMDkyMywgNjQ0MjMsIDAsIDY1NTA2LCAwLCA2NTg2MSwgNzQwODMsIDkyNjAwLCA5OTMyLCAwLCAKKyAgICA5MjQyMywgMTE5OTU1LCAwLCA5ODE3LCAwLCAxMjAxNDAsIDAsIDEyMTE3LCA2NjU4NiwgNDE4MywgMTA1NDAsIDY2MjUwLCAKKyAgICA5MDYzLCAxMjcwNDUsIDAsIDExOTk1NCwgMCwgMTI4OTcsIDM3OTIsIDIwMTEsIDAsIDYwNjUsIDQzMTYwLCAwLCAxOTQ3MTUsIAorICAgIDg2OTIsIDQxMTg2LCA0MTgxNiwgNDEwMjMsIDQxODE4LCA0MTE4NywgMTE2NTksIDc5MjIsIDEyNjE0LCAyMDA1LCA4NTIzLCAKKyAgICA3ODAwMiwgMCwgNzUxMywgMTg2MywgNDcxMCwgMCwgNTk1NiwgNzYyMSwgNzgwMDYsIDkyNjI0LCA0NzA1LCA3MTYsIAorICAgIDc4MDA0LCAwLCA0NzA0LCAxMjAwNDAsIDEyMDI3MCwgNDIyNDEsIDE2MSwgNDM5NzcsIDc0NTQ2LCA2NjIxNCwgNDcwNiwgMCwgCisgICAgNjk5MTQsIDQyNjcyLCA0NzA5LCAxMDY4MCwgMTE5MDY1LCA0MzI5MywgMTE5OTQ0LCAwLCAxMTkxNjQsIDEyMDMyOCwgCisgICAgOTI0NjcsIDEwMTg3LCAxNzAwLCAxMTkyMjMsIDAsIDAsIDEyODExOSwgNDAwNCwgMCwgMTA5NjgsIDQzMjk2LCA5ODM2MzMsIAorICAgIDg1MDYsIDAsIDAsIDEyNjk5NiwgMTAwNSwgOTM3LCA3ODIxNiwgNDczNCwgMjg3MCwgMCwgNzgyMTgsIDk4MzEwOSwgNzQ2MywgCisgICAgNDcyOSwgMCwgMjM1LCAxMzg0LCA0NzI4LCAwLCAxMjA0MjAsIDkyNDkwLCA3NDQ0OSwgODEwOSwgNDMxMDUsIDk4MzE3NCwgCisgICAgNDczMCwgNDQ3LCAxMzE4NiwgMTUxMywgNDczMywgMTIwNDE1LCAwLCAwLCA0MjUyNywgMTI5MTEsIDQzNDI3LCAxMzgzLCAKKyAgICA4NTY1LCAyNDY5LCAxMjAwMjQsIDY2OTAsIDYxNTYsIDY4MTE3LCA0MzQzOSwgNzk5MywgNDI4OCwgMTIwNDE2LCAyNjc0LCAKKyAgICAxMzIzOCwgMTE5MjIsIDAsIDEyMDMzMCwgMzUxMCwgMTMyMzQsIDAsIDEyMDQwNywgNTYwNSwgNDIwOTUsIDExMzY0LCAwLCAKKyAgICAxMzgwLCA2NTYxNywgMTIwMjUzLCAxMjAyNjEsIDEzMTk2LCAxMzE5NywgMTIwMzA5LCAxMjA2ODIsIDk0OTUsIDExOTM0NiwgCisgICAgMCwgNTk1OSwgNjc5ODQsIDczOTc2LCAxMjAzMDUsIDQzMzcxLCA2OTQxLCAxMTkzNDksIDEzMjA1LCAxMzIxMSwgNTgwMSwgCisgICAgMTI3NjksIDY1OTA1LCA0MTY5NywgMTI4MywgMTIwMzAyLCA0Nzc5LCAwLCAzNzE5LCA0MDA2LCA5ODM1NjksIDE5OTU3LCAKKyAgICAxMjg3NzMsIDIwMjEsIDExOTMzMiwgMTIwNjk5LCAxMTkxNTAsIDQzMDI4LCA2NTQ5MywgNDE4MzgsIDM4NzUsIDU5NjIsIAorICAgIDY0MzQxLCA5MjYxNiwgOTgxNCwgNDM0NTcsIDU4MjcsIDMzMTQsIDc3ODcsIDc4MjM0LCA2NTQ5NCwgNjgxNTMsIDAsIDAsIAorICAgIDEyMDYzNiwgNjQ1MzEsIDEyMDY5MiwgMTk0NjI2LCAwLCAwLCA2NjMxNiwgNjU0NjcsIDU3NzEsIDQxMjk4LCA5ODM3ODUsIAorICAgIDk3NDIsIDUyMSwgMCwgMTA4MDAsIDkyMjIyLCA4NDA0LCAxOTQ2MjUsIDQ4MywgNzA5NiwgNzA4OSwgNjYzMjMsIDkyOCwgMCwgCisgICAgMCwgMTE5MDE4LCAxMDU5OSwgMTE1ODYsIDM5ODksIDEwOTcxLCA0Mzc0OCwgNjU3ODIsIDk4NDEsIDg4NDMsIDEyMTQ1LCAKKyAgICA5MjQ3MCwgMTAwNzQsIDc4NTQ4LCAwLCAzNzY5LCAwLCAwLCAwLCA5ODMxMDcsIDk1NzMsIDAsIDY1MjkwLCA4ODQ5LCAwLCAKKyAgICA2NTg1NSwgNjUxMTIsIDE3OTYsIDEyMDUwNSwgMCwgNjk2NjUsIDgxNjQsIDQxMzAxLCAzNTAyLCAwLCA3Mzg4LCAxMDYyMSwgCisgICAgNzM4MzgsIDc4NTUzLCA1ODI1LCAxMzAwNywgNjgxNjUsIDAsIDEyMDQ1NywgMTI2NjEsIDc2MDgsIDEwMzU0LCAxMDQxOCwgCisgICAgNDI0MTEsIDIwMjIsIDAsIDE0MDksIDEyMTk1LCA0MDAxLCAzMTEyLCAxMDgyNCwgMTIwNjM5LCAxMzkwLCAwLCAwLCA0MjEsIAorICAgIDQzNTM2LCA1ODQ2LCAxMjAxMjAsIDQxMzAsIDEyNzc3NSwgNzU5NSwgNDI1ODgsIDc2MDAsIDEyMDEyMSwgNjYwMzUsIAorICAgIDk4MzkwNCwgMCwgNjU4NTEsIDQyNjA3LCAxMjgxOTAsIDkyNDAzLCAzMTY4LCAwLCA0MjEzNCwgMTE4MzEsIDIzNzAsIAorICAgIDI4NDYsIDkyNjA1LCAwLCAwLCAxMjAxMzIsIDAsIDE4MzYsIDAsIDAsIDkyNTU4LCAzNzQwLCA2OTg0MywgNjI5MCwgCiAgICAgNjUzNzQsIDEyMDQ1MSwgMjM5MCwgMzk0NCwgNjY2MjgsIDEyMDQzNCwgMCwgNjEzNSwgMzExOCwgNzQyNjUsIDExOTA5MywgCi0gICAgMTIwNDQ2LCAwLCAwLCA4MTI3LCA4OTc1LCA2NDczOSwgNzk0MywgMCwgMCwgMTA2MTgsIDI1ODQsIDAsIDAsIDAsIDk5OTgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDYyMDQsIDAsIDAsIDgyNzksIDg3NzYsIDY0OTU0LCA0OTc1LCA3NDgwOSwgMTIwMTMwLCA0MjY3LCAKLSAgICAxNjMxLCA0MjIwNiwgMTI3ODY2LCAwLCAxOTUwNDYsIDY1NzAwLCA2NjU2MiwgMCwgNjQ2NDUsIDAsIDAsIDAsIDEyNTg2LCAKLSAgICAwLCA5MjQyLCAxMjc5MjIsIDAsIDQ1MjMsIDU4NDIsIDEwNDk1LCAzMTIyLCAwLCA3NzkzLCA3ODI3NSwgOTMyOCwgMCwgCi0gICAgNzgzOTMsIDEyNjA0LCAwLCA2NjE1LCA2NzY1MCwgOTIzNDQsIDM5ODYsIDQ0MDI1LCAwLCA4OTEyLCA2NDU1NSwgNzQwOSwgCi0gICAgMCwgMCwgOTU0MSwgNzgyNzYsIDAsIDExMjc1LCA4NTQwLCAxMTQ5OCwgMCwgMCwgNDEwNDAsIDI0NTksIDAsIDEzMDYwLCAKLSAgICA0MTA0MSwgNzQ0MTMsIDAsIDAsIDAsIDY4NDI3LCAxMDQ1MCwgMTI1NTEsIDQxMDQzLCA3MDIwLCAxMjAzNTMsIDM3NjUsIDAsIAotICAgIDAsIDE2MDYsIDEyMDM0OCwgMTIwMzUxLCAzMDkzLCA2ODQzNiwgMCwgMCwgMTIwNjQ5LCAwLCAwLCA0MzEyLCA3NDA5MSwgCi0gICAgMTIwMzM3LCAxMjAzMzYsIDExOTIzLCA0MDIzLCAxMjAzMzMsIDU3NjMsIDEyMDMzNSwgNDgyNywgMTA4OTQsIDEyODEwLCAKLSAgICA2NDQwNiwgMTE4Nzg1LCA0NDU1LCA3NDMyMSwgNDMzLCAxMTk2MjAsIDY2NjYwLCAyNDk5LCAwLCAwLCAwLCAxMTk3MywgCisgICAgMTIwNDQ2LCAwLCAwLCA4MTI3LCA4OTc1LCA2NDczOSwgNzk0MywgOTgzNzM0LCAwLCAxMDYxOCwgMjU4NCwgMCwgMCwgMCwgCisgICAgOTk5OCwgMTI4NTY0LCAwLCAwLCAwLCAwLCA2MjA0LCAwLCAwLCA4Mjc5LCA4Nzc2LCA2NDk1NCwgNDk3NSwgNzAwNzUsIAorICAgIDEyMDEzMCwgNDI2NywgMTYzMSwgNDIyMDYsIDc3OTgzLCAwLCAxOTUwNDYsIDY1NzAwLCA2NjU2MiwgMCwgNjQ2NDUsIDAsIAorICAgIDAsIDEyNjU4OCwgMTI1ODYsIDAsIDkyNDIsIDEyNzkyMiwgMCwgNDUyMywgNTg0MiwgMTA0OTUsIDMxMjIsIDk4Mzc4OCwgCisgICAgNzc5MywgNzgyNzUsIDkzMjgsIDExOTEwNCwgNzgzOTMsIDEyNjA0LCAwLCA2NjE1LCAyMjg1LCA5MjM0NCwgMzk4NiwgCisgICAgNDQwMjUsIDAsIDg5MTIsIDY0NTU1LCA3NDA5LCAwLCA5ODMzNTAsIDk1NDEsIDc4Mjc2LCAwLCAxMTI3NSwgODU0MCwgCisgICAgMTE0OTgsIDAsIDk4MzM0OSwgNDEwNDAsIDI0NTksIDAsIDEzMDYwLCA0MTA0MSwgNzQ0MTMsIDk4MzEzOCwgMCwgMCwgCisgICAgNjg0MjcsIDEwNDUwLCAxMjU1MSwgNDEwNDMsIDcwMjAsIDEyMDM1MywgMzc2NSwgOTgzMzQyLCAwLCAxNjA2LCAxMjAzNDgsIAorICAgIDEyMDM1MSwgMzA5MywgNjg0MzYsIDAsIDk4MzA2MSwgMTE5NjEzLCAwLCAwLCA0MzEyLCA3NDA5MSwgMTIwMzM3LCAKKyAgICAxMjAzMzYsIDExOTIzLCA0MDIzLCAxMjAzMzMsIDU3NjMsIDk0MDE1LCA0ODI3LCAxMDg5NCwgMTI4MTAsIDY0NDA2LCAKKyAgICAxMTg3ODUsIDQ0NTUsIDc0MzIxLCA0MzMsIDExOTYyMCwgNjY2NjAsIDI0OTksIDAsIDAsIDExODgzNywgMTE5NzMsIAogICAgIDEzMDg5LCA0MjkzLCAxMjAzMjksIDQyMjI0LCA0Mjc1OCwgMTIxOTYsIDQyODM3LCA0MjIyNiwgMTE5MzE5LCAwLCAKLSAgICAxMTkxMjYsIDU4MTcsIDEyNzgwNiwgNTUyNzcsIDMxMjAsIDk3OTcsIDAsIDAsIDAsIDEwMzg5LCAwLCAwLCA0ODk1LCAKLSAgICA2NTM1OCwgMCwgNDM1OSwgNTg1LCAyMzgzLCAzNTA5LCAxOTQ5MjAsIDQ4NiwgNDI5MCwgNTc1OCwgMTI3NTQ2LCAwLCAwLCAKLSAgICA3MDA0LCAwLCA2NTg4MCwgMTI3ODg2LCAxMTkwNDgsIDIzODAsIDExMzgwLCAwLCAwLCAyMzc2LCAwLCAxMTkzMjAsIDAsIAotICAgIDUxOTcsIDEyNzA0NiwgMTI3MDQ3LCAxMjcwNDgsIDIzNjYsIDEyNzA1MCwgMTI3MDUxLCAxMjA1NTQsIDEyMDA0NSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNzQxODgsIDEyMDI0MSwgMCwgMCwgMTIwMDQ3LCAxMjg1NzUsIDAsIDAsIDEyMDA0OSwgMCwgCi0gICAgMTg0NywgMCwgMTAzMzksIDAsIDQyMzg0LCAwLCA0MjI3LCA3NDE1OCwgMCwgOTI1MDEsIDQzMDMyLCAwLCA0MjM2NSwgMCwgCi0gICAgMTI2NzEsIDExMzg0LCAwLCAwLCAwLCA2NDc5NywgMCwgNTgyMCwgMCwgMTIwMDUyLCAxMjAwNjUsIDAsIDEyMDA2NCwgCi0gICAgMTIwNjUwLCA0MjEzNywgOTg5MywgMjc1NCwgMTI2NjQsIDEyMDA2MywgMCwgNzM3NywgMTI3ODY3LCA0MTc5OSwgNjU1MzAsIAotICAgIDE3MTEsIDEyOTg0LCA0MzAzOSwgMzExNCwgNjI1NSwgMCwgMTE4OTM4LCAwLCAxMDg1MywgOTI2LCAwLCA3NDE4NCwgMCwgCi0gICAgMTIwMDU1LCAwLCA0MzE3NSwgMCwgNDMwMzcsIDQxNzk4LCA0MTAzNSwgMTE1ODMsIDEyNzc2OSwgNDE4MDEsIDExOTA4OCwgCi0gICAgMCwgNTIwLCA0MjAwLCAxMjY5OSwgODMzMSwgMCwgMzA5MSwgNDEwMzQsIDEyNzM1MywgMCwgODM2MCwgMCwgNzgwNDQsIAotICAgIDMyMSwgNDIyOSwgNjQ1NDMsIDkxNzk0NiwgNjU1NjMsIDAsIDkxNzk3NCwgMjg2MSwgNDM3OTMsIDEwMDk1LCAwLCA5MTk1LCAKLSAgICA5MjM4NiwgMTg2MSwgMCwgNzM3MzMsIDAsIDAsIDQzMDQxLCAwLCA0Mzc5NCwgMTI4NTMwLCAzODU5LCAxMjE4MSwgNDE2NjAsIAotICAgIDgyMDksIDAsIDczODY3LCAxMjk3MywgMCwgNzQ3NTcsIDEyNzUxNCwgNDE2NTgsIDAsIDAsIDU3NjAsIDAsIDc0MywgNDQxNCwgCisgICAgMTE5MTI2LCA1ODE3LCAxMjc4MDYsIDU1Mjc3LCAzMTIwLCA5Nzk3LCAwLCAwLCAwLCAxMDM4OSwgMTI2NDg1LCAwLCA0ODk1LCAKKyAgICA2NTM1OCwgMCwgNDM1OSwgNTg1LCAyMzgzLCAzNTA5LCA3MDAzNywgNDg2LCA0MjkwLCA1NzU4LCAxMjc1NDYsIDAsIDAsIAorICAgIDcwMDQsIDAsIDY1ODgwLCAxMjc4ODYsIDExOTA0OCwgMjM4MCwgMTEzODAsIDAsIDkzOTk2LCAyMzc2LCAwLCAxMTkzMjAsIAorICAgIDAsIDUxOTcsIDEyNzA0NiwgMTI3MDQ3LCAxMjcwNDgsIDIzNjYsIDEyNzA1MCwgMTI3MDUxLCAxMjA1NTQsIDEyMDA0NSwgMCwgCisgICAgMCwgMCwgOTgzMDg0LCAwLCAwLCAwLCA3NDE4OCwgNzEzNDIsIDk4MzA4NiwgOTgzNTczLCAxMjAwNDcsIDEyODU3NSwgMCwgCisgICAgMCwgMTIwMDQ5LCAwLCAxODQ3LCAwLCAxMDMzOSwgOTgzMzU3LCA0MjM4NCwgMCwgNDIyNywgNzQxNTgsIDAsIDkyNTAxLCAKKyAgICA0MzAzMiwgMCwgNDIzNjUsIDAsIDEyNjcxLCAxMTM4NCwgMCwgOTgzNDU3LCAwLCA2NDc5NywgOTgzMzM3LCA1ODIwLCAKKyAgICA5ODMzMzYsIDEyMDA1MiwgMTIwMDY1LCAwLCAxMjAwNjQsIDEyMDY1MCwgNDIxMzcsIDk4OTMsIDI3NTQsIDEyNjY0LCAKKyAgICAxMjAwNjMsIDAsIDczNzcsIDEyNzg2NywgNDE3OTksIDY1NTMwLCAxNzExLCAxMjk4NCwgNDMwMzksIDMxMTQsIDYyNTUsIAorICAgIDk4MzMzMiwgMTE4OTM4LCAwLCAxMDg1MywgOTI2LCA5ODMzNjEsIDc0MTg0LCA5ODMzNjAsIDEyMDA1NSwgMCwgNDMxNzUsIAorICAgIDAsIDQzMDM3LCA0MTc5OCwgNDEwMzUsIDExNTgzLCAxMjc3NjksIDQxODAxLCAxMTkwODgsIDExOTYwNSwgNTIwLCA0MjAwLCAKKyAgICAxMjY5OSwgODMzMSwgMCwgMzA5MSwgNDEwMzQsIDEyNzM1MywgOTgzNjcyLCA4MzYwLCAwLCA3ODA0NCwgMzIxLCA0MjI5LCAKKyAgICA2NDU0MywgOTE3OTQ2LCA2NTU2MywgMCwgOTE3OTc0LCAyODYxLCA0Mzc5MywgMTAwOTUsIDAsIDkxOTUsIDkyMzg2LCAKKyAgICAxODYxLCAwLCA3MzczMywgMCwgMCwgNDMwNDEsIDAsIDQzNzk0LCAxMjg1MzAsIDM4NTksIDEyMTgxLCA0MTY2MCwgODIwOSwgCisgICAgMCwgNzM4NjcsIDEyOTczLCAwLCA3NDc1NywgMTI3NTE0LCA0MTY1OCwgMCwgMCwgNTc2MCwgMCwgNzQzLCA0NDE0LCAKICAgICAxMjA3NjYsIDAsIDQyNjMyLCA5MTc5NzMsIDY1MTYxLCA3Mzg5NiwgMTI4NTg5LCAwLCAxNDA1LCAxMTkwNjMsIDQzMjIwLCAKICAgICA0MzM0MSwgMCwgMTk5MTksIDAsIDY0NTMyLCA2NTM2NywgNDM3MTAsIDAsIDAsIDM1MTMsIDAsIDExODg4MywgNDMzNDIsIAogICAgIDExOTA2NCwgNjU1MjksIDY1MzY0LCAxMjgxOTcsIDAsIDY0ODUsIDEzOTcsIDAsIDQxOTg2LCA5MjY3OCwgMCwgMCwgCi0gICAgNzQwOTcsIDAsIDc0NzEsIDEyMDc5LCAwLCAxMjY4MiwgNDMyODcsIDkyMzE3LCAwLCAwLCAwLCAwLCAwLCAxMDk5LCAKLSAgICAxMDQ5MCwgMCwgMTA1MDEsIDY1MTgxLCA3NDQ2MywgMCwgNDY0LCA0MTYyNCwgNjUyODMsIDY3NjYzLCA3ODIyMiwgMTM0NiwgCi0gICAgMCwgOTE3NjMxLCA2NDU3MywgNjQ4OTcsIDQyMywgMTgxOCwgNjUxNDQsIDAsIDgyNzIsIDEyNzgxMiwgMTk5MTEsIDQyMTgsIAotICAgIDMwODcsIDY0OTYwLCAxMjcyMzQsIDQzNTY0LCAwLCAwLCA5NTg0LCAxMDQ2NSwgMCwgNzQzNTksIDEyNjI2LCA5MTA2LCAwLCAKLSAgICA0MjY0MiwgMTIwMjMwLCA2NDc1MCwgOTM5MCwgMCwgNDE3OTcsIDAsIDAsIDI2NSwgNDE3OTUsIDY0NjY2LCAwLCA0MzUzMCwgCi0gICAgMjc1MiwgMCwgMCwgMCwgNTksIDAsIDAsIDAsIDkyMzcxLCA3Nzg3MywgNDE4MTAsIDAsIDcwMTAsIDAsIDQxODA5LCAKLSAgICA0MTQ5NSwgMTE5MzY0LCAwLCA0MjI1MiwgNDIyMTMsIDgwMDksIDMzMDUsIDQzMDMzLCA1MTEsIDkyNzAwLCA2NjI1NSwgCi0gICAgMTMxMjcsIDEyMDA2NywgMCwgMCwgMCwgOTE3OTc3LCA2NTkxNSwgMTQwMCwgNDE4MTIsIDEwNjg1LCAxOTQ4NzAsIDIxMDMsIAotICAgIDEwMzg3LCA0NDUzLCA0MzI3NiwgOTE3NzgzLCAxMzE1OSwgMCwgNjQ4MSwgNDEyMTMsIDAsIDAsIDAsIDAsIDQxOTgzLCAKLSAgICA3NDE5OCwgNjYxNywgOTExNiwgMTE5NjU0LCAwLCA0NjIsIDY4MTEwLCAxMDQ5MywgMCwgODEyOSwgMCwgMCwgNzQ0NzEsIAotICAgIDY2NDQsIDExNjU4LCAwLCAxMjgyNDUsIDM0NTIsIDExOTA2LCA5NTgxLCAxMzg1LCAzMDk4LCAwLCAxMTkwMTMsIDQzMzQwLCAKLSAgICAwLCA0MTAzMywgNjQ5MywgNDI2MjYsIDAsIDAsIDExNDI2LCA3Nzg4NywgMTY4MSwgMTE4Nzg5LCAxMjA0LCAzNzU1LCAKLSAgICA2NDY2MSwgNzIzNSwgMTAxNzAsIDM5NjYsIDg5MTEsIDAsIDQxODQxLCA0MzMzOCwgMCwgMCwgNTcyNiwgNjQ5MTUsIAotICAgIDQyMTc1LCAwLCAwLCA0MTQ5NywgNjUwNDQsIDEyMDEwOSwgMjg1MSwgNDMwMTcsIDAsIDAsIDQzNzMsIDc4MDU4LCAwLCAKLSAgICA5NTg3LCAxNzg5LCA2NjcxLCAxMjg4NDAsIDMxMDAsIDAsIDY1MzYwLCAwLCA5MjM2NSwgMCwgNjQ5MjIsIDAsIDgxOTAsIAotICAgIDEyMDgzLCAwLCAwLCA2NTA2LCA2NDMxMiwgNzQzNzQsIDIzNjgsIDAsIDQ0MTksIDAsIDExOTEyNSwgMzQzOSwgMTgyNSwgCi0gICAgMTE5MiwgMTIwMTA2LCA4ODkxLCAzMDgwLCAxMjAyMjgsIDIzNDcsIDU0MzAsIDAsIDg5OTAsIDI4NDgsIDAsIDEyODIyMywgCi0gICAgOTI1MjgsIDI0OSwgMCwgMCwgMCwgMTIwNjU4LCAwLCAwLCA4ODgzLCA5MTc4MDIsIDcyOCwgNjgxNzgsIDk5NSwgMCwgMCwgCi0gICAgNjQ4MjYsIDAsIDkxNzc5OCwgMTI4MzQ4LCAwLCAxOTk0NSwgODA5MSwgNTU4LCAwLCAxMjI3MywgMTk0ODE0LCAwLCAKLSAgICAxMjExMiwgMCwgMCwgMCwgNzQ0MTksIDEyMzM1LCAxMjAxMDQsIDkxNzc5NSwgMzQ0MywgMzEyOSwgMCwgMjEwMiwgNjU0NDUsIAotICAgIDc4MjU4LCA2NDg5MSwgMCwgNzcyNSwgNjUxMDgsIDc4MjU1LCAwLCA4NjI0LCA2OTI0NiwgMTI0NDYsIDQzMjk1LCAwLCAKLSAgICA0MTg5NCwgMCwgNjI3NywgNDE2NzIsIDQxODkzLCAxMDAxMCwgMTI4Njc4LCAzNTQwLCAxMjg2NDksIDgzNSwgMCwgNjk4MTYsIAorICAgIDc0MDk3LCAwLCA3NDcxLCAxMjA3OSwgNjc5OTcsIDEyNjgyLCA0MzI4NywgOTIzMTcsIDAsIDk4MzE0MywgOTgzNjk4LCAwLCAKKyAgICAwLCAxMDk5LCAxMDQ5MCwgMCwgMTA1MDEsIDY1MTgxLCA3NDQ2MywgMCwgNDY0LCA0MTYyNCwgNjUyODMsIDY3NjYzLCAKKyAgICA3ODIyMiwgMTM0NiwgMCwgOTE3NjMxLCA2NDU3MywgNjQ4OTcsIDQyMywgMTgxOCwgNjUxNDQsIDAsIDgyNzIsIDEyNzgxMiwgCisgICAgMTk5MTEsIDQyMTgsIDMwODcsIDY0OTYwLCAxMjcyMzQsIDQzNTY0LCAwLCAwLCA5NTg0LCAxMDQ2NSwgOTgzODkzLCAKKyAgICA3NDM1OSwgMTI2MjYsIDkxMDYsIDAsIDQyNjQyLCAxMjAyMzAsIDY0NzUwLCA5MzkwLCAwLCA0MTc5NywgMCwgMCwgMjY1LCAKKyAgICA0MTc5NSwgNjQ2NjYsIDEyNjUwOCwgNDM1MzAsIDI3NTIsIDAsIDAsIDk4MzQ4NSwgNTksIDAsIDk4MzU5MywgMCwgOTIzNzEsIAorICAgIDc3ODczLCA0MTgxMCwgMCwgNzAxMCwgMCwgNDE4MDksIDQxNDk1LCAxMTkzNjQsIDAsIDQyMjUyLCA0MjIxMywgODAwOSwgCisgICAgMzMwNSwgNDMwMzMsIDUxMSwgOTI3MDAsIDY2MjU1LCAxMzEyNywgMTIwMDY3LCAwLCA3NDM5NywgMTIwMjM1LCA5MTc5NzcsIAorICAgIDY1OTE1LCAxNDAwLCA0MTgxMiwgMTA2ODUsIDE5NDg3MCwgMjEwMywgMTAzODcsIDQ0NTMsIDQzMjc2LCA5MTc3ODMsIAorICAgIDEzMTU5LCAwLCA2NDgxLCA0MTIxMywgMCwgMCwgMCwgMCwgNDE5ODMsIDc0MTk4LCA2NjE3LCA5MTE2LCAxMTk2NTQsIDAsIAorICAgIDQ2MiwgNjgxMTAsIDEwNDkzLCAwLCA4MTI5LCAwLCAwLCA3NDQ3MSwgNjY0NCwgMTE2NTgsIDAsIDEyODI0NSwgMzQ1MiwgCisgICAgMTE5MDYsIDk1ODEsIDEzODUsIDMwOTgsIDAsIDExOTAxMywgNDMzNDAsIDAsIDQxMDMzLCA2NDkzLCA0MjYyNiwgMCwgMCwgCisgICAgMTE0MjYsIDc3ODg3LCAxNjgxLCAxMTg3ODksIDEyMDQsIDM3NTUsIDY0NjYxLCA3MjM1LCAxMDE3MCwgMzk2NiwgODkxMSwgCisgICAgMCwgNDE4NDEsIDQzMzM4LCAwLCAwLCA1NzI2LCA2NDkxNSwgNDIxNzUsIDAsIDAsIDQxNDk3LCA2NTA0NCwgMTIwMTA5LCAKKyAgICAyODUxLCA0MzAxNywgOTgzNTg5LCAwLCA0MzczLCA3ODA1OCwgMCwgOTU4NywgMTc4OSwgNjY3MSwgMTI4ODQwLCAzMTAwLCAKKyAgICAwLCA2NTM2MCwgMCwgOTIzNjUsIDkxNzc4OSwgNjQ5MjIsIDAsIDgxOTAsIDEyMDgzLCAwLCAwLCA2NTA2LCA2NDMxMiwgCisgICAgNzQzNzQsIDIzNjgsIDAsIDQ0MTksIDk4MzgzOCwgMTE5MTI1LCAzNDM5LCAxODI1LCAxMTkyLCAxMjAxMDYsIDg4OTEsIAorICAgIDMwODAsIDEyMDIyOCwgMjM0NywgNTQzMCwgMCwgODk5MCwgMjg0OCwgMCwgMTI4MjIzLCA5MjUyOCwgMjQ5LCAwLCAwLCAwLCAKKyAgICAxMjA2NTgsIDAsIDAsIDg4ODMsIDkxNzgwMiwgNzI4LCA2ODE3OCwgOTk1LCAwLCAwLCA2NDgyNiwgMCwgOTE3Nzk4LCAKKyAgICAxMjgzNDgsIDAsIDE5OTQ1LCA4MDkxLCA1NTgsIDAsIDEyMjczLCAxOTQ4MTQsIDk4Mzg0MSwgMTIxMTIsIDY5OTEyLCAwLCAKKyAgICAwLCA3NDQxOSwgMTIzMzUsIDEyMDEwNCwgOTE3Nzk1LCAzNDQzLCAzMTI5LCAwLCAyMTAyLCA2NTQ0NSwgNzgyNTgsIAorICAgIDY0ODkxLCAwLCA3NzI1LCA2NTEwOCwgNzgyNTUsIDAsIDg2MjQsIDY5MjQ2LCAxMjQ0NiwgNDMyOTUsIDAsIDQxODk0LCAwLCAKKyAgICA2Mjc3LCA0MTY3MiwgNDE4OTMsIDEwMDEwLCAxMjg2NzgsIDM1NDAsIDEyODY0OSwgODM1LCA3MTM0MCwgNjk4MTYsIAogICAgIDExOTg2OCwgNzQ0MDgsIDAsIDczOTU5LCA1NDI2LCA0MjU4LCAwLCAwLCA1NDI0LCAxMjgxMjcsIDgyODMsIDAsIDU0MzQsIAotICAgIDAsIDAsIDE5OTE3LCAxMTQwOCwgMCwgMTE5NDcsIDAsIDE0MDQsIDMwOTUsIDExNDMyLCAxMjgzMDcsIDM0NjQsIDY0ODYsIAotICAgIDQ4MTksIDEyODIzMywgMCwgNTcwLCA4MDk1LCAzNjcyLCAxMTk4NjQsIDE0OTgsIDY3ODY2LCAwLCAwLCA0MzEsIDAsIDAsIAotICAgIDEyODE4MiwgMTI4MDk2LCA2ODE2NywgMCwgMTMwOTYsIDEyODY0MywgMCwgNDM0MDgsIDk1MTYsIDEyODUzOCwgNTI2OCwgCi0gICAgNDIyMzAsIDQyMjIwLCAwLCA0NDUwLCAxMjA1MTEsIDExNTQ3LCA0MzQxNywgMTI4NTQyLCAzNTYsIDM0NzcsIDIyNywgCi0gICAgMTA0ODgsIDY4MjAzLCAzODIsIDExNDE4LCAwLCAwLCAwLCAwLCAwLCAwLCA2NDg0LCAyNTQxLCA2NjAzOSwgMCwgNzg3MTgsIAotICAgIDkyNzIzLCAzNTQ5LCAwLCA5MTEwLCAxMTk2NjUsIDI3NDMsIDAsIDQzMjkwLCAxOTQ4MTIsIDkwOTcsIDAsIDQzMDE1LCAKLSAgICA4NzgyLCAwLCA3NzYsIDI1MjQsIDQyNzA3LCA4NTczLCAwLCAwLCAwLCAwLCA0MjY5NCwgNjQ5NDQsIDg5NTIsIDM4NTYsIAotICAgIDExODgxOCwgMCwgNTg3MiwgNjQ5NSwgMCwgMCwgMCwgOTI1NDMsIDAsIDEyMDczMywgMTI4NDksIDM5NTMsIDE4OTcsIDAsIAotICAgIDY1MDk0LCAxMTk5NCwgNDMzOSwgNzQ1NTYsIDkyNjU0LCA2Nzg0MywgMCwgMCwgMCwgNjg0NzMsIDc0MTA0LCA1MjI4LCAKLSAgICAxMjg4MDQsIDc4NjgsIDQzMTg0LCAwLCAwLCA3Mzk4NiwgNDM0MzgsIDAsIDQzMDIyLCAwLCAxMTYyLCAwLCAyNjcxLCAwLCAKLSAgICAwLCA5MjYzMiwgOTI2MzEsIDExODg2NSwgNDU1MywgNzM4MTEsIDAsIDE5NTAwNSwgMCwgMCwgMTk5MjEsIDc0MzMxLCAKLSAgICAxMTQyNCwgMTk1MDA2LCA0NTY3LCA0MTg5MSwgMCwgMCwgNTUyNDksIDQ4MjAsIDY1MjM5LCAxOTQ2NjIsIDAsIDAsIAotICAgIDQzMDQyLCAxMTkyMTIsIDEzNzcsIDEyODY5LCA0ODk3LCA0MjgyMSwgOTI1MCwgMCwgNDQzOCwgNjQzODUsIDAsIDE3NTMsIAotICAgIDExMzMxLCA2MTQ3LCAxOTQ5NDEsIDQzMjgyLCA4ODMzLCAwLCAwLCA2NTA0LCA3ODQwOCwgMTI2OTc5LCAxMDcxOSwgMCwgCi0gICAgMTg5OCwgMTQxMywgNDI0NDMsIDAsIDgwMiwgMTIxNDEsIDAsIDE5NDY3MSwgNjY0OCwgMTA2NzEsIDI1MjgsIDAsIDY0Nzg5LCAKLSAgICA5MTY5LCA4MzgsIDEyNzA5MiwgMTIwNjk3LCA4NDQsIDUwMTQsIDAsIDI1NiwgMCwgOTk5MCwgMCwgNDI3MzksIDkxNzg1MSwgCi0gICAgNzU0MiwgNjU0NjQsIDk3MjYsIDAsIDY0ODksIDEwMDQ4LCA3NDMyNiwgNzg3MTksIDY2NTczLCAwLCA3ODcyNCwgNzg3MTIsIAotICAgIDExNzYxLCAxOTQ2NTUsIDAsIDQxMDk0LCAwLCAwLCAwLCAwLCA5MjY4OSwgNjE5NiwgNjk0NSwgMTk0NjI4LCAxOTQ4OTAsIAotICAgIDEyODE4NCwgMTIwNDkxLCAxMTgxNiwgMTk0OTQzLCA1NzMzLCAyOTMwLCAwLCAwLCA0MTA5OCwgMCwgNDEwOTMsIDAsIAotICAgIDY2NjI2LCA1ODgsIDk3NjAsIDAsIDE5NDcxNywgMTIzOCwgMjAwLCAwLCAxNjYwLCA3MzkxNiwgMCwgMTE4OTA1LCA3NDM2MiwgCi0gICAgMCwgOTI0ODUsIDE5NDY1MSwgMCwgMCwgMzM5NCwgMTk0ODk0LCAxMjA2NjgsIDAsIDAsIDEyNzM1OCwgNjYyMTksIAotICAgIDEyNzE4MywgNDMyODQsIDE5NDY1NywgNzgxNywgMTg0MSwgMTEwNTUsIDEyMDUzMywgMTk0OTc5LCAxOTQ5ODIsIDE2NjksIAotICAgIDEwNzc2LCAxOTQ5ODEsIDc3MDEsIDE5NDk4MCwgMCwgMTk0OTk1LCAxNzMyLCA0MDMwLCAwLCAzOTYzLCA2NjYxMSwgCi0gICAgMTI3NTMwLCA0MTc2OCwgNjQ5MSwgMCwgNjUzMjQsIDkxNCwgNjUzMjMsIDgwNzEsIDM1MzgsIDAsIDc4NzEzLCA2NTMyOCwgCi0gICAgOTI0NDEsIDc0MzY3LCA3NjE0LCAwLCAxMTgxOSwgMCwgMTIwMDksIDEyMzk5LCAwLCA2Nzg1MiwgNjU1MzcsIDAsIDEwODQxLCAKLSAgICA0MzQzMCwgNTMwMSwgMCwgOTI2MTgsIDU3MzQsIDg5NjAsIDAsIDkyNTI3LCA2NTMxNywgNzc4ODAsIDAsIDAsIDAsIAotICAgIDEyMzA0LCAwLCAwLCA2NTMxNSwgOTI2NzAsIDEyODUxMSwgMCwgMCwgMCwgMTE5NjIxLCA5MjUyOSwgNzQ1MzYsIDEyNDQ3LCAKLSAgICA2NDQ4NiwgMTI3Mzc0LCAwLCAwLCAwLCAwLCAwLCA0Mjc2NywgMTA5MTUsIDAsIDEyMDA3LCA0MzY5NSwgMTIwNTIwLCAKLSAgICAxMTk3NSwgMTk0ODc4LCAwLCA5MjYwNCwgMjU1NSwgODYyOSwgMCwgNDMxNjgsIDQxODcyLCA0MzcwNiwgNDQ5NiwgCi0gICAgMTk0ODc5LCAxMjgxNDgsIDAsIDAsIDAsIDAsIDAsIDY0NzMwLCAwLCA2NjcxNCwgNjgyMjIsIDAsIDAsIDY1NTk2LCAKLSAgICA5MjMwNiwgMTE0MTYsIDQyODAsIDY3NjU1LCA4NzY1LCAxMjc4NCwgNzc5MiwgMTM5MywgMTI3MjQyLCA2Nzg3MSwgNzQzODYsIAotICAgIDAsIDgyMzMsIDEyODIwLCAwLCA2NjgzLCAxOTQ4NzYsIDM0NDIsIDEyMTQ0LCAyODQxLCAxMjU0MywgMCwgMTQ3MywgCi0gICAgNDI4MjAsIDY0MzI5LCAxMjc4MzIsIDAsIDY4NjQyLCA2NDg4LCAzNTcsIDEwNDgsIDQxMTAwLCAwLCA0MTEwNCwgMCwgCi0gICAgMzQwNiwgMTA1NCwgMTE5MDY1LCAxMDQwLCA2NTQ1MCwgMCwgNDQzNCwgMTA2OSwgMCwgMTE4ODYyLCA2NTczNywgOTE3NzY1LCAKLSAgICAxMjg3MDUsIDAsIDAsIDk2OTMsIDQxOTQzLCAwLCA0MTkzMSwgNDE3NTksIDEyNzU3LCA0MzUzLCAwLCAxMDU5LCA5NzkwLCAKLSAgICA4OTk1LCAxMjgyODYsIDAsIDY1OTM3LCAwLCA0MTc2NCwgMTA2NDYsIDAsIDExODgzMywgOTIzNzIsIDAsIDc0ODMwLCAKLSAgICA3ODU2OSwgMTI3NDMsIDAsIDY0ODAsIDkxNzc2MSwgNDE3NzksIDQyNTgwLCA2NjYwMSwgMTIyMDcsIDExOTYxOSwgNjMzNSwgCi0gICAgNjY2MDIsIDExMzEyLCA2NDgwNywgMCwgMCwgNDE3NjcsIDAsIDAsIDQzMDIwLCAxMjgyNzEsIDM5NTUsIDc0MjU0LCAwLCAwLCAKLSAgICA5MTc4NjEsIDAsIDc3OTI2LCA5NzcwLCA5MjQ2LCAxMjIzMCwgMCwgMCwgMCwgMTA0NDgsIDQxNzgzLCA0MTc4NiwgCi0gICAgMTI3MDkzLCAxMjc5NywgMjc1NSwgNjQ1NzEsIDc4NTc4LCAxOTQ5MjcsIDQ4NTcsIDAsIDQ0MjgsIDEyNzk0LCA3Mzc1NSwgCi0gICAgMTI4MDYxLCA3ODU3NCwgMCwgMCwgMCwgNTc0NywgNzg4MjUsIDAsIDc5NzgsIDQxMDkyLCA3NDU3MSwgMCwgMTE5MjQsIAotICAgIDQzODEyLCA0MjE0NCwgNjUwMTUsIDAsIDU2MywgMCwgMCwgMTI3OTgsIDExMjcxLCA1NywgMCwgMCwgOTE3ODYwLCAKLSAgICAxMTkwNDMsIDAsIDExOTEzNCwgNDMxMzcsIDY5NCwgMCwgOTg3NiwgMCwgMTE5MTY4LCAwLCA3ODgyMiwgNjQ1MzcsIDAsIAotICAgIDI3NywgNzQzODUsIDcyMjksIDEyNzYxLCAwLCAwLCAxMzAyNSwgNjQ4MTEsIDg3NTcsIDc4ODI0LCAwLCAxNTc0LCA3MzgxLCAKLSAgICAwLCAyNTI1LCA0ODUyLCA1NzQ5LCA2ODQ2NSwgMTMwMjcsIDQyODI0LCAxMjA1NzQsIDEwMzksIDcxNTEsIDEwMTU1LCAKLSAgICA1NzQ1LCAxODgsIDQxODU4LCAxMTU5MiwgMCwgNzQwMTUsIDkwNTUsIDQxODUzLCA0ODU4LCA5MTc3ODAsIDAsIDQzNiwgCi0gICAgNDc3MSwgMCwgMjc4NiwgMCwgNDg1NiwgODA1MSwgMCwgMTE5NjA5LCAwLCA5NjQ0LCAwLCAwLCAwLCAxOTQ5MTYsIAotICAgIDEyMDczMiwgNjY3MTAsIDExODgzNCwgMCwgNzM5MDYsIDAsIDEyNzExNCwgMCwgMTAyMzQsIDU4NDMsIDExOTM5LCAwLCAKLSAgICA0MjE1NywgMCwgMzE1NywgMTk0OTE4LCA2ODM5MywgMCwgMzUwNCwgMTE5MTc4LCAwLCAxMDgyMiwgNTE0OSwgNjYwMjksIAotICAgIDEwMjI2LCA2NTE0MiwgMCwgMzU5NCwgNDI0MjQsIDE5NDk1OSwgNDAsIDEyNjU3LCAwLCAwLCAzODYsIDAsIDg4MzQsIDAsIAotICAgIDEyODE1LCA0MzU3NCwgMCwgNzM5MDcsIDAsIDc0MTk2LCA3MjIwLCA3NDUwNCwgMCwgNzQzMTYsIDAsIDc3OTMyLCA0MzA0LCAKLSAgICA3NDUwMywgODE2MCwgNzg3MDcsIDE5NDc1MywgMCwgMCwgMCwgMTM0OCwgOTIzNDksIDc4NTk3LCAwLCAxMzMwMywgMCwgCi0gICAgOTIzOTIsIDE5NDc1NSwgNzU5OSwgMTI3OCwgNDM2MTYsIDEzMjY5LCAwLCAwLCA3NDM4NywgNzgxNzksIDc4NTk4LCAKLSAgICA3NDQ5MiwgNjA5NywgNzU2OCwgODc4MCwgNDk4MiwgMTI3NDY0LCA3NDUwMSwgMTk0NzYzLCA3ODU5MiwgMTk0NzYyLCAKLSAgICAyNjcyLCAzNzM1LCAxMjc0NzEsIDEzMTM4LCA0MjI2NiwgOTQ4NCwgMTA3MjQsIDQxMjAyLCAxMTkwMjQsIDAsIDQzNzQyLCAKLSAgICAwLCA5NDg3LCAxMTk5NTksIDExOTExNywgMzg0MiwgMTI4NzY4LCA3ODY2OCwgMTI0NDIsIDYxOTMsIDk3OTEsIDEyNzk3NiwgCi0gICAgMCwgNDI1MTYsIDcyMjgsIDc1NTksIDc0ODAzLCA3ODQ2OCwgNzg3MywgMTEzOTksIDExOTIxOSwgMTk0NjkxLCAxOTQ4NTUsIAotICAgIDE5NDY5MCwgMTk0ODU3LCAzNjA0LCAwLCAxMTkxODgsIDEyODg3NywgNzg1NDAsIDc4NTQxLCA0MjUwNywgMTk2MiwgCi0gICAgNDMzMDUsIDc4NDc2LCA0MjUwNSwgMTE2NjAsIDAsIDIwNzIsIDkyMzEyLCA2OTk1LCA3NDE3MywgNTQzNywgNzQxNzQsIAotICAgIDEwNjY5LCA4NzAyLCA3OTY0LCA5MjM1MiwgMCwgMTk5LCAxOTQ4NDMsIDQxMDUsIDE5NDg0NSwgMTk0Njk5LCAxOTQ4NDcsIAotICAgIDE5NDcxMCwgMTE5ODc1LCAxMzE0OCwgNzU2MCwgNzg0NzksIDkyMjYsIDc4NDgwLCAxOTUwNzAsIDY0NzIsIDY1ODE0LCAKLSAgICA3Mzk1NCwgMCwgNDcyNCwgMCwgMCwgOTE5MSwgMCwgNjQ0MzIsIDAsIDAsIDE5NTAyNCwgMTAxOTYsIDc4ODYsIDAsIDY1ODUsIAotICAgIDAsIDY2ODAsIDE5NTA0MiwgMCwgMTk1MDUxLCA2Njc5LCA3NDQxMiwgOTIyNTEsIDE5NDg2NiwgNzQ0MjEsIDExMzgyLCAwLCAKLSAgICAwLCAxMjc4OTEsIDEyNzQ4NCwgMTk0ODMzLCAxOTQ4MzIsIDY2ODEsIDEyNzQ4MiwgMTI2OTMsIDE5NDgzNiwgNDI3MjcsIAotICAgIDE5NDgzOCwgMTI4MjUyLCA3ODE5NSwgNjU0NDIsIDExOTYxMCwgNjk3MzMsIDk5ODksIDQzMjQ4LCA2NjI0OCwgMTk0ODE2LCAKLSAgICAwLCAxOTQ4MTgsIDEyODg0NSwgMTk0ODIwLCAxOTQ4MTksIDUyOTcsIDcwNDIsIDEzMjg0LCA2MTEyLCA3OTY4LCAxOTQ4MjUsIAotICAgIDczOTI3LCA5MjQ0NCwgMTk0NzM2LCA2NTc0NiwgMTI3NDc2LCA3NDQwOSwgNzQzODksIDEyODY5NiwgNDM0MiwgNDI4MzksIAotICAgIDE5NDgzMSwgMTY3NywgMCwgMCwgMTk0ODA2LCA5MTc4NTUsIDExMDkxLCAxMTAxMSwgMjcxOSwgMCwgMCwgMTE5NTk1LCAKLSAgICAxMDE2MCwgMCwgMCwgNzU4NSwgNjUxNjksIDIwNTIsIDQzMDgsIDkyMTc0LCA3NDE3NywgNzUwNSwgNTQzLCA2NDkxNiwgCi0gICAgNjQ3MzYsIDAsIDAsIDY0NjU1LCAwLCAxMTg5MjIsIDIwNjQsIDAsIDQzMTU4LCA3OTAyLCAwLCA2NTI2NSwgMTk0NjM5LCAwLCAKLSAgICAxMjcxNzAsIDAsIDAsIDAsIDAsIDEyOTk0LCA5MjcyOCwgMTA4MjgsIDAsIDYyMjgsIDQzMDcsIDM0ODIsIDEyODUyNywgMCwgCi0gICAgMCwgMCwgNTA2LCA3NDU3MywgNDExOTQsIDY1NzM1LCAyMDU1LCA0MzI1NSwgNDExOTUsIDAsIDgxNjksIDAsIDg4NDEsIDAsIAotICAgIDUxNiwgMCwgMjA2MywgMTE5MDUxLCAzNCwgMTI4ODUwLCAxMjAxODYsIDExNTA0LCAxNjEyLCA3NDMzMywgMTIwMTgyLCAKLSAgICA3NDUyMCwgNzQzMDgsIDEyMDAxLCAxMjAxNzgsIDEwMjQyLCA2NDU2NCwgMTIwMTc5LCAxMjAxNzQsIDY1ODQsIDc3NDksIAotICAgIDExMDM3LCAwLCAxNzU4LCAwLCAxMDY2NywgMTA1NjAsIDEyMDE5NywgOTI1OTMsIDE5MzUsIDExNTE3LCAxMjAxOTMsIAorICAgIDk4MzU5MCwgMCwgMTk5MTcsIDExNDA4LCAwLCAxMTk0NywgMCwgMTQwNCwgMzA5NSwgMTE0MzIsIDEyODMwNywgMzQ2NCwgCisgICAgNjQ4NiwgNDgxOSwgMTI4MjMzLCAwLCA1NzAsIDgwOTUsIDM2NzIsIDExOTg2NCwgMTQ5OCwgNjc4NjYsIDAsIDEyODUzOSwgCisgICAgNDMxLCAwLCAwLCAxMjgxODIsIDEyODA5NiwgNjgxNjcsIDk4MzY1NCwgMTMwOTYsIDEyODY0MywgMCwgNDM0MDgsIDk1MTYsIAorICAgIDEyODUzOCwgNTI2OCwgNDIyMzAsIDQyMjIwLCAwLCA0NDUwLCAxMjA1MTEsIDExNTQ3LCA0MzQxNywgMTI4NTQyLCAzNTYsIAorICAgIDM0NzcsIDIyNywgMTA0ODgsIDY4MjAzLCAzODIsIDExNDE4LCAwLCAxOTUwNjYsIDAsIDAsIDAsIDAsIDY0ODQsIDI1NDEsIAorICAgIDY2MDM5LCAwLCA3ODcxOCwgOTI3MjMsIDM1NDksIDAsIDkxMTAsIDExOTY2NSwgMjc0MywgMCwgNDMyOTAsIDE5NDgxMiwgCisgICAgOTA5NywgMCwgNDMwMTUsIDg3ODIsIDAsIDc3NiwgMjUyNCwgNDI3MDcsIDg1NzMsIDAsIDEyNjQ5NCwgMCwgMCwgNDI2OTQsIAorICAgIDY0OTQ0LCA4OTUyLCAzODU2LCAxMTg4MTgsIDAsIDU4NzIsIDY0OTUsIDAsIDAsIDAsIDkyNTQzLCAwLCAxMjA3MzMsIAorICAgIDEyODQ5LCAzOTUzLCAxODk3LCAwLCA2NTA5NCwgMTE5OTQsIDQzMzksIDc0NTU2LCA5MjY1NCwgNjc4NDMsIDAsIDAsIDAsIAorICAgIDY4NDczLCA3NDEwNCwgNTIyOCwgMTI4ODA0LCA3ODY4LCA0MzE4NCwgMCwgMCwgNzM5ODYsIDQzNDM4LCAwLCA0MzAyMiwgMCwgCisgICAgMTE2MiwgOTE3ODQ3LCAyNjcxLCAwLCAwLCA5MjYzMiwgOTI2MzEsIDExODg2NSwgNDU1MywgNzM4MTEsIDAsIDE5NTAwNSwgCisgICAgMCwgMCwgMTk5MjEsIDc0MzMxLCAxMTQyNCwgMTk1MDA2LCA0NTY3LCA0MTg5MSwgMCwgOTgzNzc5LCA1NTI0OSwgNDgyMCwgCisgICAgNjUyMzksIDE5NDY2MiwgMCwgMTk0NjY1LCA0MzA0MiwgMTE5MjEyLCAxMzc3LCAxMjg2OSwgNDg5NywgNDI4MjEsIDkyNTAsIAorICAgIDAsIDQ0MzgsIDY0Mzg1LCAwLCAxNzUzLCAxMTMzMSwgNjE0NywgMTk0OTQxLCA0MzI4MiwgODgzMywgMCwgMCwgNjUwNCwgCisgICAgNzg0MDgsIDEyNjk3OSwgMTA3MTksIDAsIDE4OTgsIDE0MTMsIDQyNDQzLCAwLCA4MDIsIDEyMTQxLCAwLCAxOTQ2NzEsIAorICAgIDY2NDgsIDEwNjcxLCAyNTI4LCAwLCA2NDc4OSwgOTE2OSwgODM4LCAxMjAwODcsIDEyMDY5NywgODQ0LCA1MDE0LCAwLCAKKyAgICAyNTYsIDAsIDk5OTAsIDAsIDQyNzM5LCA5MTc4NTEsIDc1NDIsIDY1NDY0LCA5NzI2LCAwLCA2NDg5LCAxMDA0OCwgNzQzMjYsIAorICAgIDc4NzE5LCA2NjU3MywgMCwgNzg3MjQsIDc4NzEyLCAxMTc2MSwgMTk0NjU1LCAwLCA0MTA5NCwgMCwgMCwgMTk0ODkzLCAwLCAKKyAgICA5MjY4OSwgNjE5NiwgNjk0NSwgOTM5NjksIDE5NDg5MCwgMTI4MTg0LCAxMjA0OTEsIDExODE2LCAxOTQ5NDMsIDU3MzMsIAorICAgIDI5MzAsIDAsIDAsIDQxMDk4LCAwLCA0MTA5MywgMCwgNjY2MjYsIDU4OCwgOTc2MCwgMCwgMTk0NzE3LCAxMjM4LCAyMDAsIAorICAgIDk4MzIwNSwgMTY2MCwgNzM5MTYsIDAsIDExODkwNSwgNzQzNjIsIDAsIDkyNDg1LCAxOTQ2NTEsIDAsIDk4MzY5NywgMzM5NCwgCisgICAgMTk0ODk0LCAxMjA2NjgsIDAsIDAsIDEyNzM1OCwgNjYyMTksIDEyNzE4MywgNDMyODQsIDE5NDY1NiwgNzgxNywgMTg0MSwgCisgICAgMTEwNTUsIDEyMDUzMywgMTk0OTc5LCAxOTQ5ODIsIDE2NjksIDEwNzc2LCAxOTQ5ODEsIDc3MDEsIDE5NDk4MCwgMCwgCisgICAgMTk0OTk1LCAxNzMyLCA0MDMwLCAwLCAzOTYzLCA2NjYxMSwgMTI3NTMwLCA0MTc2OCwgNjQ5MSwgMCwgNjUzMjQsIDkxNCwgCisgICAgNjUzMjMsIDgwNzEsIDM1MzgsIDAsIDIyODcsIDY1MzI4LCA5MjQ0MSwgNzQzNjcsIDc2MTQsIDAsIDExODE5LCAwLCAKKyAgICAxMjAwOSwgMTIzOTksIDAsIDY3ODUyLCA2NTUzNywgMCwgMTA4NDEsIDQzNDMwLCA1MzAxLCAwLCA5MjYxOCwgNTczNCwgCisgICAgODk2MCwgMCwgOTI1MjcsIDY1MzE3LCA3Nzg4MCwgMCwgMCwgMCwgMTIzMDQsIDAsIDAsIDY1MzE1LCA5MjY3MCwgMTI4NTExLCAKKyAgICAwLCAwLCAwLCAxMTk2MjEsIDkyNTI5LCA3NDUzNiwgMTI0NDcsIDY0NDg2LCAxMjczNzQsIDEyNjU2MiwgOTgzMTI5LCAwLCAKKyAgICAwLCA5ODM3OTMsIDQyNzY3LCAxMDkxNSwgMCwgMTIwMDcsIDQzNjk1LCAxMjA1MjAsIDExOTc1LCAxOTQ4NzgsIDAsIAorICAgIDkyNjA0LCAyNTU1LCA4NjI5LCAxMjg2NDAsIDQzMTY4LCA0MTg3MiwgNDM3MDYsIDQ0OTYsIDE5NDg3OSwgMTI4MTQ4LCAKKyAgICAxMjAyNDEsIDAsIDAsIDAsIDAsIDY0NzMwLCA3MDA0MSwgNjY3MTQsIDY4MjIyLCAwLCA3MDA3NiwgNjU1OTYsIDkyMzA2LCAKKyAgICAxMTQxNiwgNDI4MCwgNjc2NTUsIDg3NjUsIDEyNzg0LCA3NzkyLCAxMzkzLCAxMjY0NzMsIDY3ODcxLCA3NDM4NiwgMCwgCisgICAgODIzMywgMTI4MjAsIDAsIDY2ODMsIDE5NDg3NiwgMzQ0MiwgMTIxNDQsIDI4NDEsIDEyNTQzLCAwLCAxNDczLCA0MjgyMCwgCisgICAgNjQzMjksIDEyNzgzMiwgMCwgNjg2NDIsIDY0ODgsIDM1NywgMTA0OCwgNDExMDAsIDAsIDQxMTA0LCA5NDAwMywgMzQwNiwgCisgICAgMTA1NCwgNzEzMjAsIDEwNDAsIDY1NDUwLCAwLCA0NDM0LCAxMDY5LCAwLCAxMTg4NjIsIDY1NzM3LCA5MTc3NjUsIAorICAgIDEyODcwNSwgMCwgOTgzNjg0LCA5NjkzLCA0MTk0MywgMTI2NTY0LCA0MTkzMSwgNDE3NTksIDEyNzU3LCA0MzUzLCAwLCAKKyAgICAxMDU5LCA5NzkwLCA4OTk1LCAxMTk5NzQsIDk4MzY4NywgNjU5MzcsIDAsIDQxNzY0LCAxMDY0NiwgMCwgMTE4ODMzLCAKKyAgICA5MjM3MiwgMCwgNzQ4MzAsIDc4NTY5LCAxMjc0MywgOTgzNjgwLCA2NDgwLCA5MTc3NjEsIDQxNzc5LCA0MjU4MCwgNjY2MDEsIAorICAgIDEyMjA3LCAxMTk2MTksIDYzMzUsIDY2NjAyLCAxMTMxMiwgNjQ4MDcsIDAsIDAsIDQxNzY3LCAxMTk2MjksIDk4Mzc1NSwgCisgICAgNDMwMjAsIDEyODI3MSwgMzk1NSwgNzQyNTQsIDAsIDk4Mzc0NSwgOTE3ODYxLCAwLCA3NzkyNiwgOTc3MCwgOTI0NiwgCisgICAgMTIyMzAsIDAsIDAsIDAsIDEwNDQ4LCA0MTc4MywgNDE3ODYsIDEyNzA5MywgMTI3OTcsIDI3NTUsIDY0NTcxLCA3ODU3OCwgCisgICAgMTk0OTI3LCA0ODU3LCAwLCA0NDI4LCAxMjc5NCwgNzM3NTUsIDEyODA2MSwgNzg1NzQsIDAsIDc0Mjg0LCAwLCA1NzQ3LCAKKyAgICA3ODgyNSwgMCwgNzk3OCwgNDEwOTIsIDc0NTcxLCAwLCAxMTkyNCwgNDM4MTIsIDQyMTQ0LCA2NTAxNSwgMCwgNTYzLCAwLCAKKyAgICA5ODM2ODIsIDEyNzk4LCAxMTI3MSwgNTcsIDAsIDAsIDkxNzg2MCwgMTE5MDQzLCAwLCA5NDA1MSwgNDMxMzcsIDY5NCwgMCwgCisgICAgOTg3NiwgMCwgMTE5MTY4LCAwLCA3ODgyMiwgNjQ1MzcsIDAsIDI3NywgNzQzODUsIDcyMjksIDEyNzYxLCAwLCAwLCAKKyAgICAxMzAyNSwgNjQ4MTEsIDg3NTcsIDc4ODI0LCAxMjY0NzgsIDE1NzQsIDczODEsIDAsIDI1MjUsIDQ4NTIsIDU3NDksIAorICAgIDY4NDY1LCAxMzAyNywgNDI4MjQsIDEyMDU3NCwgMTAzOSwgNzE1MSwgMTAxNTUsIDU3NDUsIDE4OCwgNDE4NTgsIDExNTkyLCAKKyAgICAwLCA3NDAxNSwgOTA1NSwgNDE4NTMsIDQ4NTgsIDkxNzc4MCwgMCwgNDM2LCA0NzcxLCAwLCAyNzg2LCAwLCA0ODU2LCAKKyAgICA4MDUxLCAwLCAxMTk2MDksIDcxMzI3LCA5NjQ0LCAwLCAwLCAwLCAxOTQ5MTYsIDEyMDczMiwgNjY3MTAsIDExODgzNCwgCisgICAgOTgzMzUxLCA3MzkwNiwgMTI4NjgwLCAxMjcxMTQsIDAsIDEwMjM0LCA1ODQzLCAxMTkzOSwgMCwgNDIxNTcsIDAsIDMxNTcsIAorICAgIDE5NDkxOCwgNjgzOTMsIDAsIDM1MDQsIDExOTE3OCwgMCwgMTA4MjIsIDUxNDksIDY2MDI5LCAxMDIyNiwgNjUxNDIsIAorICAgIDEyODAyNSwgMzU5NCwgNDI0MjQsIDE5NDk1OSwgNDAsIDEyNjU3LCA5ODM2NTYsIDAsIDM4NiwgMCwgODgzNCwgMCwgCisgICAgMTI4MTUsIDQzNTc0LCAwLCA3MzkwNywgMCwgNzQxOTYsIDcyMjAsIDc0NTA0LCAwLCA3NDMxNiwgMCwgNjUzMjIsIDQzMDQsIAorICAgIDc0NTAzLCA4MTYwLCA3ODcwNywgMTk0NzUzLCAwLCAwLCAxMjg1MjYsIDEzNDgsIDkyMzQ5LCA3ODU5NywgMTI2NTM5LCAKKyAgICAxMzMwMywgMCwgOTIzOTIsIDE5NDc1NSwgNzU5OSwgMTI3OCwgNDM2MTYsIDEzMjY5LCAwLCAwLCA3NDM4NywgNzgxNzksIAorICAgIDc4NTk4LCA3NDQ5MiwgNjA5NywgNzU2OCwgODc4MCwgNDk4MiwgMTI3NDY0LCA3NDUwMSwgMTk0NzYzLCA3ODU5MiwgCisgICAgMTk0NzYyLCAyNjcyLCAzNzM1LCAxMjc0NzAsIDEzMTM4LCA0MjI2NiwgOTQ4NCwgMTA3MjQsIDQxMjAyLCA3MTM2NCwgMCwgCisgICAgNDM3NDIsIDAsIDk0ODcsIDExOTk1OSwgMTE5MTE3LCAzODQyLCAxMjg3NjgsIDc4NjY4LCAxMjQ0MiwgNjE5MywgOTc5MSwgCisgICAgMTI3OTc2LCAwLCA0MjUxNiwgNzIyOCwgNzU1OSwgNzQ4MDMsIDc4NDY4LCA3ODczLCAxMTM5OSwgMTE5MjE5LCAxOTQ2OTEsIAorICAgIDE5NDg1NSwgMTk0NjkwLCAxOTQ4NTcsIDM2MDQsIDEyMDY4MywgMTE5MTg4LCAxMjg4NzcsIDc4NTQwLCA3ODU0MSwgCisgICAgNDI1MDcsIDE5NjIsIDQzMzA1LCA3ODQ3NiwgNDI1MDUsIDExNjYwLCAwLCAyMDcyLCA5MjMxMiwgNjk5NSwgNzQxNzMsIAorICAgIDU0MzcsIDc0MTc0LCAxMDY2OSwgODcwMiwgNzk2NCwgOTIzNTIsIDAsIDE5OSwgMTk0ODQzLCA0MTA1LCAxOTQ4NDUsIAorICAgIDE5NDY5OSwgMTk0ODQ3LCAxOTQ3MTAsIDExOTg3NSwgMTMxNDgsIDc1NjAsIDc4NDc5LCA5MjI2LCA3ODQ4MCwgMTk1MDcwLCAKKyAgICA2NDcyLCA2NTgxNCwgNzM5NTQsIDAsIDQ3MjQsIDAsIDAsIDkxOTEsIDAsIDY0NDMyLCA5ODM4MDgsIDk4MzI0MSwgCisgICAgMTk1MDI0LCAxMDE5NiwgNzg4NiwgMCwgNjU4NSwgMCwgNjY4MCwgMTk1MDQyLCAwLCAxOTUwNTEsIDY2NzksIDc0NDEyLCAKKyAgICA5MjI1MSwgMTk0ODY2LCA3NDQyMSwgMTEzODIsIDk4MzYyMiwgOTgzNjI4LCAxMjc4OTEsIDEyNzQ4NCwgMTk0ODMzLCAKKyAgICAxOTQ4MzIsIDY2ODEsIDEyNzQ4MiwgMTI2OTMsIDE5NDgzNiwgNDI3MjcsIDc4MTk2LCAxMjgyNTIsIDc4MTk1LCA2NTQ0MiwgCisgICAgMTE5NjEwLCA2OTczMywgOTk4OSwgNDMyNDgsIDY2MjQ4LCAxOTQ4MTYsIDAsIDE5NDgxOCwgMTI4ODQ1LCAxOTQ4MjAsIAorICAgIDE5NDgxOSwgNTI5NywgNzA0MiwgMTMyODQsIDYxMTIsIDc5NjgsIDE5NDgyNSwgNzM5MjcsIDkyNDQ0LCAxOTQ3MzYsIAorICAgIDY1NzQ2LCAxMjc0NzYsIDY5ODg5LCA3NDM4OSwgMTI4Njk2LCA0MzQyLCA0MjgzOSwgMTk0ODMxLCAxNjc3LCAwLCAwLCAKKyAgICAxMjY1OTAsIDkxNzg1NSwgMTEwOTEsIDExMDExLCAyNzE5LCAwLCAwLCAxMTk1OTUsIDEwMTYwLCAwLCAwLCA3NTg1LCAKKyAgICA2NTE2OSwgMjA1MiwgNDMwOCwgOTIxNzQsIDQzMDAwLCA3NTA1LCA1NDMsIDY0OTE2LCA2NDczNiwgMCwgMCwgNjQ2NTUsIDAsIAorICAgIDExODkyMiwgMjA2NCwgMCwgNDMxNTgsIDc5MDIsIDAsIDY1MjY1LCAxOTQ2MzksIDAsIDEyNzE3MCwgMCwgMCwgMCwgMCwgCisgICAgMTI5OTQsIDkyNzI4LCAxMDgyOCwgOTgzOTM0LCA2MjI4LCA0MzA3LCAzNDgyLCAxMjg1MjcsIDAsIDAsIDAsIDUwNiwgCisgICAgNzQ1NzMsIDQxMTk0LCA2NTczNSwgMjA1NSwgNDMyNTUsIDQxMTk1LCAwLCA4MTY5LCA5ODM2NzEsIDg4NDEsIDAsIDUxNiwgCisgICAgOTM5NzQsIDIwNjMsIDExOTA1MSwgMzQsIDEyODg1MCwgMTIwMTg2LCAxMTUwNCwgMTYxMiwgNzQzMzMsIDEyMDE4MiwgCisgICAgMTE4MjcsIDc0MzA4LCAxMjAwMSwgMTIwMTc4LCAxMDI0MiwgNjQ1NjQsIDEyMDE3OSwgNjc5ODYsIDY1ODQsIDc3NDksIAorICAgIDExMDM3LCAwLCAxNzU4LCAxMjcwOTIsIDEwNjY3LCAxMDU2MCwgMTIwMTk3LCA5MjU5MywgMTkzNSwgMTE1MTcsIDEyMDE5MywgCiAgICAgMTIwMTk2LCAxMjAxOTUsIDE5MzEsIDEyMDE4OSwgNzQ4MzksIDEyMDE5MSwgMTIxNywgNjQ3MDIsIDEyNjQzLCA4MjUsIAogICAgIDEyNzgzOCwgMTk0OTA1LCAxMjI5NCwgOTI0MjgsIDc4ODM0LCA5MTM4LCA3ODgzMSwgNzg4MzMsIDEyNjMxLCA3ODgyOSwgCiAgICAgMTEwODAsIDc0NTU0LCA2NDAwMCwgNTU5MSwgMTIzOSwgMCwgMTEzMTMsIDAsIDM0MDMsIDAsIDAsIDY0MzY0LCA5MjI2OSwgCi0gICAgMCwgNzQ1ODIsIDg5OTgsIDEyOTg4LCAwLCA5MTUyLCAwLCAwLCAxOTQ4OTgsIDY3NTg5LCA0MTg1MCwgNjQyOTAsIDM0MzMsIAotICAgIDkyMzkzLCAxMjYxNSwgMTU5NCwgNDIxOTIsIDY5MTQsIDY3NjAzLCAwLCAxMTk1NjksIDc0NTY1LCA0MTM1MywgNjc2MDIsIAotICAgIDY3NjExLCA0MzM3LCAwLCAxMjcyOTYsIDkxOCwgNjUwMzUsIDQxMzUxLCA3NjgxLCAxOTQ5MDAsIDQyNTc3LCA0MTM5MywgCi0gICAgMTI2NjgsIDE5NDkwNCwgMjQ3NywgMTI3Mjg1LCAwLCAxMjczMDEsIDAsIDY3NjA0LCAxOTQ4ODAsIDEyNzIzNSwgNTczLCAKLSAgICAxMjcyODIsIDE5NDg4NCwgMTE0MTcsIDE5NDg4NiwgMTE5ODE0LCAxOTQ4ODgsIDY3NTk5LCAwLCAxOTQ4ODksIDY3NjA3LCAKLSAgICAxMTQ4MiwgMCwgMzk4MSwgMzM1NywgMCwgNDIyMjMsIDQyMDcsIDEyODgsIDc4ODQyLCA3ODgzOSwgNjg0MTksIDc4ODM3LCAKLSAgICAxMTU4OSwgNDIxOTUsIDE5NDg3MiwgMTk0NTk5LCAxMjcyNjMsIDY0NjAyLCA2NzYxOCwgOTI1MzksIDAsIDQyNzg4LCAKLSAgICA2ODQxNiwgNjQ0ODAsIDE5NDg3NSwgODQyMywgMzM0OCwgNDQ4LCA2ODQ3NiwgOTcxNywgMCwgMCwgOTk3LCAwLCAwLCAKLSAgICA5MjU3NywgMCwgMTE0NDAsIDExMzc5LCA0MjAwMCwgMTMxMzksIDQyMjIxLCA2NTAxMywgMTI2OTk5LCAxMjc3NjAsIAotICAgIDczNzk2LCAwLCAxMTkyMjgsIDEyMDM1LCAwLCAyODE4LCAwLCAwLCA3Mzc5MywgMCwgNDE3MiwgMCwgMCwgODM3MywgCisgICAgMCwgNzQ1ODIsIDg5OTgsIDEyOTg4LCAwLCA5MTUyLCA5ODM4NDAsIDAsIDEyNjQ4NCwgNjc1ODksIDQxODUwLCA2NDI5MCwgCisgICAgMzQzMywgOTIzOTMsIDEyNjE1LCAxNTk0LCA0MjE5MiwgNjkxNCwgNjc2MDMsIDAsIDExOTU2OSwgNzQ1NjUsIDQxMzUzLCAKKyAgICA2NzYwMiwgNjc2MTEsIDQzMzcsIDAsIDEyNzI5NiwgOTE4LCA2NTAzNSwgNDEzNTEsIDc2ODEsIDE5NDkwMCwgNDI1NzcsIAorICAgIDQxMzkzLCAxMjY2OCwgMTk0OTA0LCAyNDc3LCAxMjcyODUsIDAsIDEyNzMwMSwgMCwgNjc2MDQsIDE5NDg4MCwgMTI3MjM1LCAKKyAgICA1NzMsIDEyNzI4MiwgMTk0ODg0LCAxMTQxNywgMTk0ODg2LCAxMTk4MTQsIDE5NDg4OCwgNjc1OTksIDAsIDE5NDg4OSwgCisgICAgNjc2MDcsIDExNDgyLCAwLCAzOTgxLCAzMzU3LCAwLCA0MjIyMywgNDIwNywgMTI4OCwgNzg4NDIsIDc4ODM5LCA2ODQxOSwgCisgICAgNzg4MzcsIDExNTg5LCA0MjE5NSwgMTk0ODcyLCAxOTQ1OTksIDEyNzI2MywgNjQ2MDIsIDY3NjE4LCA5MjUzOSwgMCwgCisgICAgNDI3ODgsIDY4NDE2LCA2NDQ4MCwgMTk0ODc1LCA4NDIzLCAzMzQ4LCA0NDgsIDY4NDc2LCA5NzE3LCAwLCAwLCA5OTcsIDAsIAorICAgIDAsIDkyNTc3LCAwLCAxMTQ0MCwgMTEzNzksIDQyMDAwLCAxMzEzOSwgNDIyMjEsIDY1MDEzLCAxMjY5OTksIDEyNzc2MCwgCisgICAgNzM3OTYsIDAsIDExOTIyOCwgMTIwMzUsIDAsIDI4MTgsIDAsIDc0NDExLCA3Mzc5MywgMCwgNDE3MiwgMCwgMCwgODM3MywgCiAgICAgMTA4NzMsIDEyMTk3LCAwLCAwLCA5MjI2NSwgNjk3MDYsIDAsIDc4MjEwLCAwLCAxMjgxMTAsIDE5NDg2NSwgMTI2OTgyLCAKICAgICA3NDU2MywgNjQ4MjgsIDExNDE5LCAxOTQ4NjgsIDc2NiwgMTI1NywgMCwgMTE4ODQ1LCAxMTM4MSwgMzI2NSwgNjY2MTcsIAotICAgIDMyNzQsIDEyNzM2NSwgMCwgMCwgMCwgNzQ1MjIsIDQxOTg5LCAwLCAwLCAxMjg3OTgsIDMyNjMsIDAsIDY1NjcyLCAwLCAKLSAgICAzMjcwLCA2NDUzOSwgMTE0ODksIDAsIDAsIDAsIDAsIDk1MDUsIDY1NTE4LCAxOTQ3NzYsIDc1NiwgMTk0NjA1LCAwLCAwLCAKLSAgICAwLCA3MjYxLCAwLCAxODYsIDAsIDExOTE1NiwgNTc3MCwgMTMxNzksIDY1ODMwLCAxMjYxMiwgMTI5NDksIDY0ODU2LCAKLSAgICAxMjgwMCwgMCwgNzQyMDMsIDY0NzE4LCAwLCAwLCA5MjQzNCwgMTE4OTI5LCAwLCAxMTU3OCwgMCwgMTE5Mjk2LCAwLCAwLCAKLSAgICAwLCAwLCA3NDU2OCwgOTI1NCwgMCwgMTc5NCwgMTIwMjE3LCA2NDUyMSwgNTYyNCwgMTIwMjIwLCAxMjAyMjEsIDExOTk1OCwgCi0gICAgMTIwMjIzLCAzNjE3LCA2NjYzNiwgNjQ4ODYsIDEyMDIxMSwgMTIwMjEyLCAxMjAyMTMsIDEyMDIxNCwgMTg3MiwgNjY1MDgsIAotICAgIDEyMDQ2NywgNDEwNzksIDEwNzQ4LCA1NTAyLCAxMTkzMzAsIDQ0NTIsIDAsIDAsIDkyNTI2LCA0NTExLCAwLCAwLCA2NDY3OCwgCi0gICAgMTE0MjUsIDAsIDQzMjQ1LCAxMjMxLCAxOTQ3ODMsIDAsIDAsIDkwMDMsIDgxOTIsIDAsIDUzMDUsIDk2NTMsIDEwNjE2LCAKLSAgICA4Njk0LCA5NTQ2LCAwLCAwLCAxMjA0NzgsIDEyMDIwMCwgNjUyMDUsIDEyMDIwMiwgNjQwNjMsIDk4NzgsIDc0NzgwLCAKLSAgICAxMTk2MjYsIDc4MjAyLCA2NDA1OCwgODc5OSwgNDIxMzEsIDAsIDY0MDYyLCAxMDI4LCA2NDA2MCwgNjQwNTksIDgzNywgCi0gICAgMTA1NjcsIDAsIDQzMTAzLCAwLCAxMjA3NTQsIDExNDI3LCAyOTAyLCA2NDA0MywgNjQwNDIsIDY2NDY0LCAxMDc1NiwgMCwgCi0gICAgNDI2MDYsIDY0MDQ1LCA2NDA0NCwgNDM5NzksIDEwMDc2LCA2NDA0MCwgNDMwNjAsIDE5NDk0MiwgMTAzNCwgMzM5MiwgCi0gICAgMTI3NzcxLCA0MzA5MSwgNjQwMzMsIDY0MDMyLCA0MjczNSwgNjQwMzgsIDY0MDM3LCA2NDAzNiwgNjQwMzUsIDQyOTEsIAotICAgIDE5NDkyOCwgNjQwMTUsIDY0MDE0LCA2NDY4MSwgMTk0OTMwLCAwLCA3ODE0NSwgMCwgNDMwOTAsIDAsIDM0NzYsIDg5NzMsIAotICAgIDY0MDEyLCA0MjQ3MywgNjQwMTAsIDY0MDA4LCA2NDAwNywgMjAwMywgNzcwNiwgNjQ1MTcsIDc4MTUzLCAyNTM4LCA2NDAwOSwgCi0gICAgMjA0LCAwLCA0ODAyLCA0MTExLCA4MjM5LCA5MDk4LCA0ODA1LCA2NDAwMSwgNjQwNTcsIDc4ODUsIDcyNDcsIDY0MDU0LCAwLCAKLSAgICAwLCA0NzY3LCA5MzQzLCA2NDA0OSwgNjQwNDgsIDEyMDAzNCwgMTEzMywgNjQwNTMsIDY0MDUyLCA0MzQ1MywgNjQwNTAsIAotICAgIDQxMzQwLCAxMTg5NzUsIDE5NDgzNSwgMTAwMDUsIDEyMzI5LCA0MTMzMywgMCwgODQ4OSwgMTk0MiwgMCwgMTk0ODM0LCAKLSAgICA0MjUyMCwgMTI4MjQ5LCAwLCAwLCAxMDc2MCwgNjQwMjMsIDY0MDIyLCA2NDAyMSwgNjU4MiwgNDM2NzAsIDAsIDY0MDI1LCAKLSAgICA5MTY3LCA0MjE1MSwgNzgyNDQsIDAsIDIwMjYsIDY0MDE5LCA2NDAxOCwgNjQwMTcsIDY0MDE2LCAxMjc2OCwgMCwgNzU4MiwgCi0gICAgNzgyNTIsIDc4MjQ4LCA3NzkxNCwgNzgyNDYsIDc4MjQ3LCAwLCA3NzkxNSwgNzg3NjYsIDY3ODgsIDEzMDk0LCA3NzkyMCwgCi0gICAgNzUzMiwgNDE0MTQsIDc4NTIwLCAzMTc5LCA3ODUxOCwgNjQ3NjksIDc4NTE0LCA3ODUxNywgMTE0NjEsIDc0NDU0LCAKLSAgICAxMDc1MSwgOTA1MSwgMTIwNzIwLCA2NzA4LCAxMDUzNSwgMCwgNjgyMTgsIDU1Mjc0LCAyMDA4LCA2NDAzMSwgNjQwMzAsIAotICAgIDI5NCwgNDE4NzQsIDAsIDEyNjk5MSwgNjU5MjksIDAsIDAsIDAsIDAsIDY0MDI4LCA4MTQ2LCA2NDAyNiwgNDE3ODgsIAotICAgIDE5NDg0NCwgMCwgMTE4Nzk1LCA2MzQzLCA0MzI0NywgMTE5ODg4LCAwLCAxMTk4ODYsIDExOTg5MSwgMTE5ODkyLCAKLSAgICAxMTk4ODksIDExNDMzLCAxMTk4OTUsIDExOTg5NiwgMCwgNzgwMSwgNjU1NzgsIDE5NDgzOSwgMTI5MTUsIDQzOTY4LCAKLSAgICAzMjk3LCA5Njk5LCAxOTQ5NTUsIDExMzUsIDAsIDAsIDEyODUyNSwgMTk5NSwgNjcyMiwgMCwgMCwgMjU1MiwgNDE1NDYsIAotICAgIDYwLCA2ODM5NCwgODY0OSwgNDE1NDksIDc4NDk2LCAwLCAwLCA2NjgyLCAwLCA3ODY3OSwgNjQ3MTAsIDQxNTQ3LCAwLCAKLSAgICAyMDEzLCAxMjgyOTEsIDc4NTMwLCA3ODUzMiwgNzg1MjgsIDc4NTI5LCAxMjgzMiwgNzg0OTMsIDgwODEsIDgzNjIsIDM1MzcsIAotICAgIDExOTkwOCwgOTEzNywgNzE1NSwgODk5OSwgMCwgNzg1MzMsIDM0NjYsIDAsIDAsIDE5OTYsIDAsIDM0NTMsIDYyODIsIDAsIAotICAgIDIwMDIsIDIwMDAsIDEyMDE3NSwgNTM3LCAwLCA0MTc5LCA2NTExOSwgMTk5OCwgMCwgMTg0MiwgMCwgOTI2NzQsIDk2MjgsIAotICAgIDY4NDQ2LCAxMjA4MSwgOTgyNiwgNjQ1MDIsIDE3NjcsIDAsIDAsIDAsIDEyMDIwMSwgMCwgMCwgMCwgMzA1OSwgNDQwMjQsIAotICAgIDEyMDIwNCwgMTE5OTUzLCA5MjY5MywgMCwgMCwgOTI0NTIsIDQxMDAsIDkyMCwgMTgxMSwgMTM1NSwgMCwgMCwgMzU5MiwgCi0gICAgMTAwNzgsIDAsIDAsIDAsIDg1OTIsIDY1ODcwLCA2ODE2NCwgMTI4NzkyLCAxMDc0MiwgMCwgNDI5MTgsIDE5OTQsIDkyODEsIAotICAgIDMyOTYsIDEyODY1LCAxOTk3LCAxODk1LCAKKyAgICAzMjc0LCAxMjczNjUsIDEyNjUyMywgOTQwNDIsIDk4Mzk0MSwgNzQ1MjIsIDQxOTg5LCAwLCAwLCAxMjg3OTgsIDMyNjMsIDAsIAorICAgIDY1NjcyLCAwLCAzMjcwLCA2NDUzOSwgMTE0ODksIDAsIDAsIDAsIDAsIDk1MDUsIDY1NTE4LCAxOTQ3NzYsIDc1NiwgCisgICAgMTk0NjA1LCAwLCAwLCAwLCA3MjYxLCAwLCAxODYsIDAsIDExOTE1NiwgNTc3MCwgMTMxNzksIDY1ODMwLCAxMjYxMiwgCisgICAgMTI5NDksIDY0ODU2LCAxMjgwMCwgOTgzODkyLCA3NDIwMywgNjQ3MTgsIDExNTA3LCAwLCA5MjQzNCwgMTE4OTI5LCAwLCAKKyAgICAxMTU3OCwgMCwgMTE5Mjk2LCAwLCAwLCAwLCAwLCA3NDU2OCwgOTI1NCwgMCwgMTc5NCwgMTIwMjE3LCA2NDUyMSwgNTYyNCwgCisgICAgMTIwMjIwLCAxMjAyMjEsIDExOTk1OCwgMTIwMjIzLCAzNjE3LCA2NjYzNiwgNjQ4ODYsIDk0MDYxLCAxMjAyMTIsIAorICAgIDEyMDIxMywgMTIwMjE0LCAxODcyLCA2NjUwOCwgMTIwNDY3LCA0MTA3OSwgMTA3NDgsIDU1MDIsIDExOTMzMCwgNDQ1MiwgMCwgCisgICAgOTgzNzYyLCA5MjUyNiwgNDUxMSwgMCwgOTgzODY4LCA2NDY3OCwgMTE0MjUsIDAsIDQzMjQ1LCAxMjMxLCAxOTQ3ODMsIAorICAgIDY5OTAzLCAwLCA5MDAzLCA4MTkyLCAwLCA1MzA1LCA5NjUzLCAxMDYxNiwgODY5NCwgOTU0NiwgMCwgMCwgMTIwNDc4LCAKKyAgICAxMjAyMDAsIDY1MjA1LCAxMjAyMDIsIDY0MDYzLCA5ODc4LCA3NDc4MCwgMTE5NjI2LCA3ODIwMiwgNjQwNTgsIDg3OTksIAorICAgIDQyMTMxLCAwLCA2NDA2MiwgMTAyOCwgNjQwNjAsIDY0MDU5LCA4MzcsIDEwNTY3LCAwLCA0MzEwMywgMCwgMTIwNzU0LCAKKyAgICAxMTQyNywgMjkwMiwgNjQwNDMsIDY0MDQyLCA0Mzc0OSwgMTA3NTYsIDY0MDQ3LCA0MjYwNiwgNjQwNDUsIDY0MDQ0LCAKKyAgICA0Mzk3OSwgMTAwNzYsIDY0MDQwLCA0MzA2MCwgMTk0OTQyLCAxMDM0LCAzMzkyLCAxMjc3NzEsIDQzMDkxLCA2NDAzMywgCisgICAgNjQwMzIsIDQyNzM1LCA2NDAzOCwgNjQwMzcsIDY0MDM2LCA2NDAzNSwgNDI5MSwgMTk0OTI4LCA2NDAxNSwgNjQwMTQsIAorICAgIDY0NjgxLCAxOTQ5MzAsIDAsIDc4MTQ1LCAwLCA0MzA5MCwgMCwgMzQ3NiwgODk3MywgNjQwMTIsIDQyNDczLCA2NDAxMCwgCisgICAgNjQwMDgsIDY0MDA3LCAyMDAzLCA3NzA2LCA2NDUxNywgNzgxNTMsIDI1MzgsIDY0MDA5LCAyMDQsIDAsIDQ4MDIsIDQxMTEsIAorICAgIDgyMzksIDkwOTgsIDQ4MDUsIDY0MDAxLCA2NDA1NywgNzg4NSwgNzI0NywgNjQwNTQsIDk4MzI1OCwgMCwgNDc2NywgOTM0MywgCisgICAgNjQwNDksIDY0MDQ4LCAxMjAwMzQsIDExMzMsIDY0MDUzLCA2NDA1MiwgNDM0NTMsIDY0MDUwLCA0MTM0MCwgMTE4OTc1LCAKKyAgICAxOTQ4MzUsIDEwMDA1LCAxMjMyOSwgNDEzMzMsIDAsIDg0ODksIDE5NDIsIDAsIDE5NDgzNCwgNDI1MjAsIDEyODI0OSwgMCwgCisgICAgMCwgMTA3NjAsIDY0MDIzLCA2NDAyMiwgNjQwMjEsIDY1ODIsIDQzNjcwLCAwLCA2NDAyNSwgOTE2NywgNDIxNTEsIDc4MjQ0LCAKKyAgICA5ODMyMjYsIDIwMjYsIDY0MDE5LCA2NDAxOCwgNjQwMTcsIDY0MDE2LCAxMjc2OCwgMCwgNzU4MiwgNzgyNTIsIDc4MjQ4LCAKKyAgICA3NzkxNCwgNzgyNDYsIDc4MjQ3LCAwLCA3NzkxNSwgNzg3NjYsIDY3ODgsIDEzMDk0LCA3NzkyMCwgNzUzMiwgNDE0MTQsIAorICAgIDc4NTIwLCAzMTc5LCA3ODUxOCwgNjQ3NjksIDc4NTE0LCA3ODUxNywgMTE0NjEsIDc0NDU0LCAxMDc1MSwgOTA1MSwgCisgICAgMTIwNzIwLCA2NzA4LCAxMDUzNSwgMCwgNjgyMTgsIDU1Mjc0LCAyMDA4LCA2NDAzMSwgNjQwMzAsIDI5NCwgNDE4NzQsIDAsIAorICAgIDEyNjk5MSwgNjU5MjksIDAsIDAsIDAsIDAsIDY0MDI4LCA4MTQ2LCA2NDAyNiwgNDE3ODgsIDE5NDg0NCwgMCwgNDM1MSwgCisgICAgNjM0MywgNDMyNDcsIDExOTg4OCwgMCwgMTE5ODg2LCAxMTk4OTEsIDExOTg5MiwgMTE5ODg5LCAxMTQzMywgMTE5ODk1LCAKKyAgICAxMTk4OTYsIDAsIDc4MDEsIDY1NTc4LCAxOTQ4MzksIDEyOTE1LCA0Mzk2OCwgMzI5NywgOTY5OSwgMTk0OTU1LCAxMTM1LCAKKyAgICAwLCAwLCAxMjg1MjUsIDE5OTUsIDY3MjIsIDk4MzkxNiwgMCwgMjU1MiwgNDE1NDYsIDYwLCA2ODM5NCwgODY0OSwgNDE1NDksIAorICAgIDc4NDk2LCA5ODMzMTksIDAsIDY2ODIsIDAsIDc4Njc5LCA2NDcxMCwgNDE1NDcsIDk4MzYyMSwgMjAxMywgMTI4MjkxLCAKKyAgICA3ODUzMCwgNzg1MzIsIDc4NTI4LCA3ODUyOSwgMTI4MzIsIDc4NDkzLCA4MDgxLCA4MzYyLCAzNTM3LCAxMTk5MDgsIDkxMzcsIAorICAgIDcxNTUsIDg5OTksIDAsIDc4NTMzLCAzNDY2LCAwLCAwLCAxOTk2LCAwLCAzNDUzLCA2MjgyLCAwLCAyMDAyLCAyMDAwLCAKKyAgICAxMjAxNzUsIDUzNywgMCwgNDE3OSwgNjUxMTksIDE5OTgsIDAsIDE4NDIsIDAsIDkyNjc0LCA5NjI4LCA2ODQ0NiwgMTIwODEsIAorICAgIDk4MjYsIDY0NTAyLCAxNzY3LCAwLCAwLCAwLCAxMjAyMDEsIDk4MzYzNywgMCwgMCwgMzA1OSwgNDQwMjQsIDEyMDIwNCwgCisgICAgMTE5OTUzLCA5MjY5MywgMCwgMCwgOTI0NTIsIDQxMDAsIDkyMCwgMTgxMSwgMTM1NSwgMCwgMCwgMzU5MiwgMTAwNzgsIDAsIAorICAgIDAsIDAsIDg1OTIsIDY1ODcwLCA2ODE2NCwgMTI4NzkyLCAxMDc0MiwgMCwgNDI5MTgsIDE5OTQsIDkyODEsIDMyOTYsIAorICAgIDEyODY1LCAxOTk3LCAxODk1LCAKIH07CiAKICNkZWZpbmUgY29kZV9tYWdpYyA0NwogI2RlZmluZSBjb2RlX3NpemUgMzI3NjgKICNkZWZpbmUgY29kZV9wb2x5IDMyNzcxCisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgYWxpYXNlc19zdGFydCA9IDB4ZjAwMDA7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGFsaWFzZXNfZW5kID0gMHhmMDFjMTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbmFtZV9hbGlhc2VzW10gPSB7CisgICAgMHgwMDAwLAorICAgIDB4MDAwMCwKKyAgICAweDAwMDEsCisgICAgMHgwMDAxLAorICAgIDB4MDAwMiwKKyAgICAweDAwMDIsCisgICAgMHgwMDAzLAorICAgIDB4MDAwMywKKyAgICAweDAwMDQsCisgICAgMHgwMDA0LAorICAgIDB4MDAwNSwKKyAgICAweDAwMDUsCisgICAgMHgwMDA2LAorICAgIDB4MDAwNiwKKyAgICAweDAwMDcsCisgICAgMHgwMDA3LAorICAgIDB4MDAwOCwKKyAgICAweDAwMDgsCisgICAgMHgwMDA5LAorICAgIDB4MDAwOSwKKyAgICAweDAwMDksCisgICAgMHgwMDA5LAorICAgIDB4MDAwQSwKKyAgICAweDAwMEEsCisgICAgMHgwMDBBLAorICAgIDB4MDAwQSwKKyAgICAweDAwMEEsCisgICAgMHgwMDBBLAorICAgIDB4MDAwQiwKKyAgICAweDAwMEIsCisgICAgMHgwMDBCLAorICAgIDB4MDAwQywKKyAgICAweDAwMEMsCisgICAgMHgwMDBELAorICAgIDB4MDAwRCwKKyAgICAweDAwMEUsCisgICAgMHgwMDBFLAorICAgIDB4MDAwRSwKKyAgICAweDAwMEYsCisgICAgMHgwMDBGLAorICAgIDB4MDAwRiwKKyAgICAweDAwMTAsCisgICAgMHgwMDEwLAorICAgIDB4MDAxMSwKKyAgICAweDAwMTEsCisgICAgMHgwMDEyLAorICAgIDB4MDAxMiwKKyAgICAweDAwMTMsCisgICAgMHgwMDEzLAorICAgIDB4MDAxNCwKKyAgICAweDAwMTQsCisgICAgMHgwMDE1LAorICAgIDB4MDAxNSwKKyAgICAweDAwMTYsCisgICAgMHgwMDE2LAorICAgIDB4MDAxNywKKyAgICAweDAwMTcsCisgICAgMHgwMDE4LAorICAgIDB4MDAxOCwKKyAgICAweDAwMTksCisgICAgMHgwMDE5LAorICAgIDB4MDAxQSwKKyAgICAweDAwMUEsCisgICAgMHgwMDFCLAorICAgIDB4MDAxQiwKKyAgICAweDAwMUMsCisgICAgMHgwMDFDLAorICAgIDB4MDAxQywKKyAgICAweDAwMUQsCisgICAgMHgwMDFELAorICAgIDB4MDAxRCwKKyAgICAweDAwMUUsCisgICAgMHgwMDFFLAorICAgIDB4MDAxRSwKKyAgICAweDAwMUYsCisgICAgMHgwMDFGLAorICAgIDB4MDAxRiwKKyAgICAweDAwMjAsCisgICAgMHgwMDdGLAorICAgIDB4MDA3RiwKKyAgICAweDAwODAsCisgICAgMHgwMDgwLAorICAgIDB4MDA4MSwKKyAgICAweDAwODEsCisgICAgMHgwMDgyLAorICAgIDB4MDA4MiwKKyAgICAweDAwODMsCisgICAgMHgwMDgzLAorICAgIDB4MDA4NCwKKyAgICAweDAwODQsCisgICAgMHgwMDg1LAorICAgIDB4MDA4NSwKKyAgICAweDAwODYsCisgICAgMHgwMDg2LAorICAgIDB4MDA4NywKKyAgICAweDAwODcsCisgICAgMHgwMDg4LAorICAgIDB4MDA4OCwKKyAgICAweDAwODgsCisgICAgMHgwMDg5LAorICAgIDB4MDA4OSwKKyAgICAweDAwODksCisgICAgMHgwMDhBLAorICAgIDB4MDA4QSwKKyAgICAweDAwOEEsCisgICAgMHgwMDhCLAorICAgIDB4MDA4QiwKKyAgICAweDAwOEIsCisgICAgMHgwMDhDLAorICAgIDB4MDA4QywKKyAgICAweDAwOEMsCisgICAgMHgwMDhELAorICAgIDB4MDA4RCwKKyAgICAweDAwOEQsCisgICAgMHgwMDhFLAorICAgIDB4MDA4RSwKKyAgICAweDAwOEUsCisgICAgMHgwMDhGLAorICAgIDB4MDA4RiwKKyAgICAweDAwOEYsCisgICAgMHgwMDkwLAorICAgIDB4MDA5MCwKKyAgICAweDAwOTEsCisgICAgMHgwMDkxLAorICAgIDB4MDA5MSwKKyAgICAweDAwOTIsCisgICAgMHgwMDkyLAorICAgIDB4MDA5MiwKKyAgICAweDAwOTMsCisgICAgMHgwMDkzLAorICAgIDB4MDA5NCwKKyAgICAweDAwOTQsCisgICAgMHgwMDk1LAorICAgIDB4MDA5NSwKKyAgICAweDAwOTYsCisgICAgMHgwMDk2LAorICAgIDB4MDA5NiwKKyAgICAweDAwOTcsCisgICAgMHgwMDk3LAorICAgIDB4MDA5NywKKyAgICAweDAwOTgsCisgICAgMHgwMDk4LAorICAgIDB4MDA5OSwKKyAgICAweDAwOTksCisgICAgMHgwMDlBLAorICAgIDB4MDA5QSwKKyAgICAweDAwOUIsCisgICAgMHgwMDlCLAorICAgIDB4MDA5QywKKyAgICAweDAwOUMsCisgICAgMHgwMDlELAorICAgIDB4MDA5RCwKKyAgICAweDAwOUUsCisgICAgMHgwMDlFLAorICAgIDB4MDA5RiwKKyAgICAweDAwOUYsCisgICAgMHgwMEEwLAorICAgIDB4MDBBRCwKKyAgICAweDAxQTIsCisgICAgMHgwMUEzLAorICAgIDB4MDM0RiwKKyAgICAweDBDREUsCisgICAgMHgwRTlELAorICAgIDB4MEU5RiwKKyAgICAweDBFQTMsCisgICAgMHgwRUE1LAorICAgIDB4MEZEMCwKKyAgICAweDE4MEIsCisgICAgMHgxODBDLAorICAgIDB4MTgwRCwKKyAgICAweDE4MEUsCisgICAgMHgyMDBCLAorICAgIDB4MjAwQywKKyAgICAweDIwMEQsCisgICAgMHgyMDBFLAorICAgIDB4MjAwRiwKKyAgICAweDIwMkEsCisgICAgMHgyMDJCLAorICAgIDB4MjAyQywKKyAgICAweDIwMkQsCisgICAgMHgyMDJFLAorICAgIDB4MjAyRiwKKyAgICAweDIwNUYsCisgICAgMHgyMDYwLAorICAgIDB4MjExOCwKKyAgICAweDI0NDgsCisgICAgMHgyNDQ5LAorICAgIDB4QTAxNSwKKyAgICAweEZFMTgsCisgICAgMHhGRTAwLAorICAgIDB4RkUwMSwKKyAgICAweEZFMDIsCisgICAgMHhGRTAzLAorICAgIDB4RkUwNCwKKyAgICAweEZFMDUsCisgICAgMHhGRTA2LAorICAgIDB4RkUwNywKKyAgICAweEZFMDgsCisgICAgMHhGRTA5LAorICAgIDB4RkUwQSwKKyAgICAweEZFMEIsCisgICAgMHhGRTBDLAorICAgIDB4RkUwRCwKKyAgICAweEZFMEUsCisgICAgMHhGRTBGLAorICAgIDB4RkVGRiwKKyAgICAweEZFRkYsCisgICAgMHhGRUZGLAorICAgIDB4MUQwQzUsCisgICAgMHhFMDEwMCwKKyAgICAweEUwMTAxLAorICAgIDB4RTAxMDIsCisgICAgMHhFMDEwMywKKyAgICAweEUwMTA0LAorICAgIDB4RTAxMDUsCisgICAgMHhFMDEwNiwKKyAgICAweEUwMTA3LAorICAgIDB4RTAxMDgsCisgICAgMHhFMDEwOSwKKyAgICAweEUwMTBBLAorICAgIDB4RTAxMEIsCisgICAgMHhFMDEwQywKKyAgICAweEUwMTBELAorICAgIDB4RTAxMEUsCisgICAgMHhFMDEwRiwKKyAgICAweEUwMTEwLAorICAgIDB4RTAxMTEsCisgICAgMHhFMDExMiwKKyAgICAweEUwMTEzLAorICAgIDB4RTAxMTQsCisgICAgMHhFMDExNSwKKyAgICAweEUwMTE2LAorICAgIDB4RTAxMTcsCisgICAgMHhFMDExOCwKKyAgICAweEUwMTE5LAorICAgIDB4RTAxMUEsCisgICAgMHhFMDExQiwKKyAgICAweEUwMTFDLAorICAgIDB4RTAxMUQsCisgICAgMHhFMDExRSwKKyAgICAweEUwMTFGLAorICAgIDB4RTAxMjAsCisgICAgMHhFMDEyMSwKKyAgICAweEUwMTIyLAorICAgIDB4RTAxMjMsCisgICAgMHhFMDEyNCwKKyAgICAweEUwMTI1LAorICAgIDB4RTAxMjYsCisgICAgMHhFMDEyNywKKyAgICAweEUwMTI4LAorICAgIDB4RTAxMjksCisgICAgMHhFMDEyQSwKKyAgICAweEUwMTJCLAorICAgIDB4RTAxMkMsCisgICAgMHhFMDEyRCwKKyAgICAweEUwMTJFLAorICAgIDB4RTAxMkYsCisgICAgMHhFMDEzMCwKKyAgICAweEUwMTMxLAorICAgIDB4RTAxMzIsCisgICAgMHhFMDEzMywKKyAgICAweEUwMTM0LAorICAgIDB4RTAxMzUsCisgICAgMHhFMDEzNiwKKyAgICAweEUwMTM3LAorICAgIDB4RTAxMzgsCisgICAgMHhFMDEzOSwKKyAgICAweEUwMTNBLAorICAgIDB4RTAxM0IsCisgICAgMHhFMDEzQywKKyAgICAweEUwMTNELAorICAgIDB4RTAxM0UsCisgICAgMHhFMDEzRiwKKyAgICAweEUwMTQwLAorICAgIDB4RTAxNDEsCisgICAgMHhFMDE0MiwKKyAgICAweEUwMTQzLAorICAgIDB4RTAxNDQsCisgICAgMHhFMDE0NSwKKyAgICAweEUwMTQ2LAorICAgIDB4RTAxNDcsCisgICAgMHhFMDE0OCwKKyAgICAweEUwMTQ5LAorICAgIDB4RTAxNEEsCisgICAgMHhFMDE0QiwKKyAgICAweEUwMTRDLAorICAgIDB4RTAxNEQsCisgICAgMHhFMDE0RSwKKyAgICAweEUwMTRGLAorICAgIDB4RTAxNTAsCisgICAgMHhFMDE1MSwKKyAgICAweEUwMTUyLAorICAgIDB4RTAxNTMsCisgICAgMHhFMDE1NCwKKyAgICAweEUwMTU1LAorICAgIDB4RTAxNTYsCisgICAgMHhFMDE1NywKKyAgICAweEUwMTU4LAorICAgIDB4RTAxNTksCisgICAgMHhFMDE1QSwKKyAgICAweEUwMTVCLAorICAgIDB4RTAxNUMsCisgICAgMHhFMDE1RCwKKyAgICAweEUwMTVFLAorICAgIDB4RTAxNUYsCisgICAgMHhFMDE2MCwKKyAgICAweEUwMTYxLAorICAgIDB4RTAxNjIsCisgICAgMHhFMDE2MywKKyAgICAweEUwMTY0LAorICAgIDB4RTAxNjUsCisgICAgMHhFMDE2NiwKKyAgICAweEUwMTY3LAorICAgIDB4RTAxNjgsCisgICAgMHhFMDE2OSwKKyAgICAweEUwMTZBLAorICAgIDB4RTAxNkIsCisgICAgMHhFMDE2QywKKyAgICAweEUwMTZELAorICAgIDB4RTAxNkUsCisgICAgMHhFMDE2RiwKKyAgICAweEUwMTcwLAorICAgIDB4RTAxNzEsCisgICAgMHhFMDE3MiwKKyAgICAweEUwMTczLAorICAgIDB4RTAxNzQsCisgICAgMHhFMDE3NSwKKyAgICAweEUwMTc2LAorICAgIDB4RTAxNzcsCisgICAgMHhFMDE3OCwKKyAgICAweEUwMTc5LAorICAgIDB4RTAxN0EsCisgICAgMHhFMDE3QiwKKyAgICAweEUwMTdDLAorICAgIDB4RTAxN0QsCisgICAgMHhFMDE3RSwKKyAgICAweEUwMTdGLAorICAgIDB4RTAxODAsCisgICAgMHhFMDE4MSwKKyAgICAweEUwMTgyLAorICAgIDB4RTAxODMsCisgICAgMHhFMDE4NCwKKyAgICAweEUwMTg1LAorICAgIDB4RTAxODYsCisgICAgMHhFMDE4NywKKyAgICAweEUwMTg4LAorICAgIDB4RTAxODksCisgICAgMHhFMDE4QSwKKyAgICAweEUwMThCLAorICAgIDB4RTAxOEMsCisgICAgMHhFMDE4RCwKKyAgICAweEUwMThFLAorICAgIDB4RTAxOEYsCisgICAgMHhFMDE5MCwKKyAgICAweEUwMTkxLAorICAgIDB4RTAxOTIsCisgICAgMHhFMDE5MywKKyAgICAweEUwMTk0LAorICAgIDB4RTAxOTUsCisgICAgMHhFMDE5NiwKKyAgICAweEUwMTk3LAorICAgIDB4RTAxOTgsCisgICAgMHhFMDE5OSwKKyAgICAweEUwMTlBLAorICAgIDB4RTAxOUIsCisgICAgMHhFMDE5QywKKyAgICAweEUwMTlELAorICAgIDB4RTAxOUUsCisgICAgMHhFMDE5RiwKKyAgICAweEUwMUEwLAorICAgIDB4RTAxQTEsCisgICAgMHhFMDFBMiwKKyAgICAweEUwMUEzLAorICAgIDB4RTAxQTQsCisgICAgMHhFMDFBNSwKKyAgICAweEUwMUE2LAorICAgIDB4RTAxQTcsCisgICAgMHhFMDFBOCwKKyAgICAweEUwMUE5LAorICAgIDB4RTAxQUEsCisgICAgMHhFMDFBQiwKKyAgICAweEUwMUFDLAorICAgIDB4RTAxQUQsCisgICAgMHhFMDFBRSwKKyAgICAweEUwMUFGLAorICAgIDB4RTAxQjAsCisgICAgMHhFMDFCMSwKKyAgICAweEUwMUIyLAorICAgIDB4RTAxQjMsCisgICAgMHhFMDFCNCwKKyAgICAweEUwMUI1LAorICAgIDB4RTAxQjYsCisgICAgMHhFMDFCNywKKyAgICAweEUwMUI4LAorICAgIDB4RTAxQjksCisgICAgMHhFMDFCQSwKKyAgICAweEUwMUJCLAorICAgIDB4RTAxQkMsCisgICAgMHhFMDFCRCwKKyAgICAweEUwMUJFLAorICAgIDB4RTAxQkYsCisgICAgMHhFMDFDMCwKKyAgICAweEUwMUMxLAorICAgIDB4RTAxQzIsCisgICAgMHhFMDFDMywKKyAgICAweEUwMUM0LAorICAgIDB4RTAxQzUsCisgICAgMHhFMDFDNiwKKyAgICAweEUwMUM3LAorICAgIDB4RTAxQzgsCisgICAgMHhFMDFDOSwKKyAgICAweEUwMUNBLAorICAgIDB4RTAxQ0IsCisgICAgMHhFMDFDQywKKyAgICAweEUwMUNELAorICAgIDB4RTAxQ0UsCisgICAgMHhFMDFDRiwKKyAgICAweEUwMUQwLAorICAgIDB4RTAxRDEsCisgICAgMHhFMDFEMiwKKyAgICAweEUwMUQzLAorICAgIDB4RTAxRDQsCisgICAgMHhFMDFENSwKKyAgICAweEUwMUQ2LAorICAgIDB4RTAxRDcsCisgICAgMHhFMDFEOCwKKyAgICAweEUwMUQ5LAorICAgIDB4RTAxREEsCisgICAgMHhFMDFEQiwKKyAgICAweEUwMURDLAorICAgIDB4RTAxREQsCisgICAgMHhFMDFERSwKKyAgICAweEUwMURGLAorICAgIDB4RTAxRTAsCisgICAgMHhFMDFFMSwKKyAgICAweEUwMUUyLAorICAgIDB4RTAxRTMsCisgICAgMHhFMDFFNCwKKyAgICAweEUwMUU1LAorICAgIDB4RTAxRTYsCisgICAgMHhFMDFFNywKKyAgICAweEUwMUU4LAorICAgIDB4RTAxRTksCisgICAgMHhFMDFFQSwKKyAgICAweEUwMUVCLAorICAgIDB4RTAxRUMsCisgICAgMHhFMDFFRCwKKyAgICAweEUwMUVFLAorICAgIDB4RTAxRUYsCit9OworCit0eXBlZGVmIHN0cnVjdCBOYW1lZFNlcXVlbmNlIHsKKyAgICBpbnQgc2VxbGVuOworICAgIFB5X1VDUzIgc2VxWzRdOworfSBuYW1lZF9zZXF1ZW5jZTsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBuYW1lZF9zZXF1ZW5jZXNfc3RhcnQgPSAweGYwMjAwOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBuYW1lZF9zZXF1ZW5jZXNfZW5kID0gMHhmMDNhNTsKK3N0YXRpYyBjb25zdCBuYW1lZF9zZXF1ZW5jZSBuYW1lZF9zZXF1ZW5jZXNbXSA9IHsKKyAgICB7MiwgezB4MDEwMCwgMHgwMzAwfX0sCisgICAgezIsIHsweDAxMDEsIDB4MDMwMH19LAorICAgIHsyLCB7MHgwMDQ1LCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDA2NSwgMHgwMzI5fX0sCisgICAgezIsIHsweDAwQzgsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMEU4LCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDBDOSwgMHgwMzI5fX0sCisgICAgezIsIHsweDAwRTksIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMENBLCAweDAzMDR9fSwKKyAgICB7MiwgezB4MDBFQSwgMHgwMzA0fX0sCisgICAgezIsIHsweDAwQ0EsIDB4MDMwQ319LAorICAgIHsyLCB7MHgwMEVBLCAweDAzMEN9fSwKKyAgICB7MiwgezB4MDEyQSwgMHgwMzAwfX0sCisgICAgezIsIHsweDAxMkIsIDB4MDMwMH19LAorICAgIHszLCB7MHgwMDY5LCAweDAzMDcsIDB4MDMwMX19LAorICAgIHszLCB7MHgwMDZFLCAweDAzNjAsIDB4MDA2N319LAorICAgIHsyLCB7MHgwMDRGLCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDA2RiwgMHgwMzI5fX0sCisgICAgezIsIHsweDAwRDIsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMEYyLCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDBEMywgMHgwMzI5fX0sCisgICAgezIsIHsweDAwRjMsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMDUzLCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDA3MywgMHgwMzI5fX0sCisgICAgezIsIHsweDAxNkEsIDB4MDMwMH19LAorICAgIHsyLCB7MHgwMTZCLCAweDAzMDB9fSwKKyAgICB7MiwgezB4MDEwNCwgMHgwMzAxfX0sCisgICAgezIsIHsweDAxMDUsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTA0LCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDEwNSwgMHgwMzAzfX0sCisgICAgezIsIHsweDAxMTgsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTE5LCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDExOCwgMHgwMzAzfX0sCisgICAgezIsIHsweDAxMTksIDB4MDMwM319LAorICAgIHsyLCB7MHgwMTE2LCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDExNywgMHgwMzAxfX0sCisgICAgezIsIHsweDAxMTYsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMTE3LCAweDAzMDN9fSwKKyAgICB7MywgezB4MDA2OSwgMHgwMzA3LCAweDAzMDB9fSwKKyAgICB7MywgezB4MDA2OSwgMHgwMzA3LCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDEyRSwgMHgwMzAxfX0sCisgICAgezMsIHsweDAxMkYsIDB4MDMwNywgMHgwMzAxfX0sCisgICAgezIsIHsweDAxMkUsIDB4MDMwM319LAorICAgIHszLCB7MHgwMTJGLCAweDAzMDcsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMDRBLCAweDAzMDN9fSwKKyAgICB7MywgezB4MDA2QSwgMHgwMzA3LCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDA0QywgMHgwMzAzfX0sCisgICAgezIsIHsweDAwNkMsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMDRELCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDA2RCwgMHgwMzAzfX0sCisgICAgezIsIHsweDAwNTIsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMDcyLCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDE3MiwgMHgwMzAxfX0sCisgICAgezIsIHsweDAxNzMsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTcyLCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDE3MywgMHgwMzAzfX0sCisgICAgezIsIHsweDAxNkEsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTZCLCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDE2QSwgMHgwMzAzfX0sCisgICAgezIsIHsweDAxNkIsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMEU2LCAweDAzMDB9fSwKKyAgICB7MiwgezB4MDI1NCwgMHgwMzAwfX0sCisgICAgezIsIHsweDAyNTQsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMjhDLCAweDAzMDB9fSwKKyAgICB7MiwgezB4MDI4QywgMHgwMzAxfX0sCisgICAgezIsIHsweDAyNTksIDB4MDMwMH19LAorICAgIHsyLCB7MHgwMjU5LCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDI1QSwgMHgwMzAwfX0sCisgICAgezIsIHsweDAyNUEsIDB4MDMwMX19LAorICAgIHszLCB7MHgwOTk1LCAweDA5Q0QsIDB4MDlCN319LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkNEfX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCOTksIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCOTksIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCOTksIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQTksIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkJFfX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkMxfX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkM3fX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkNCfX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjksIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjksIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjksIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkNDfX0sCisgICAgezMsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3fX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQkV9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJCRn19LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkMwfX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQzF9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJDMn19LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkM2fX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQzd9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJDOH19LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkNBfX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQ0J9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJDQ319LAorICAgIHs0LCB7MHgwQkI2LCAweDBCQ0QsIDB4MEJCMCwgMHgwQkMwfX0sCisgICAgezMsIHsweDBEQ0EsIDB4MjAwRCwgMHgwREJBfX0sCisgICAgezMsIHsweDBEQ0EsIDB4MjAwRCwgMHgwREJCfX0sCisgICAgezMsIHsweDBEQkIsIDB4MERDQSwgMHgyMDBEfX0sCisgICAgezIsIHsweDEwRTMsIDB4MDMwMn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODB9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzgxfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4Mn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODN9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzg0fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4NX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODZ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzg3fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4OH19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODl9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzhBfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4Qn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OEN9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzhEfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4RX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OEZ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzkwfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5MX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OTJ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzkzfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5NH19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OTV9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzk2fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5N319LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OTh9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzk5fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5QX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OUJ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzlDfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5RH19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OUV9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzlGfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTdBMH19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3QTF9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxN0EyfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTdBN319LAorICAgIHsyLCB7MHgxN0QyLCAweDE3QUJ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxN0FDfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTdBRn19LAorICAgIHsyLCB7MHgxN0JCLCAweDE3QzZ9fSwKKyAgICB7MiwgezB4MTdCNiwgMHgxN0M2fX0sCisgICAgezIsIHsweDMwNEIsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMDRELCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzA0RiwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwNTEsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMDUzLCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzBBQiwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwQUQsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMEFGLCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzBCMSwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwQjMsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMEJCLCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzBDNCwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwQzgsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMUY3LCAweDMwOUF9fSwKKyAgICB7MiwgezB4MDJFNSwgMHgwMkU5fX0sCisgICAgezIsIHsweDAyRTksIDB4MDJFNX19LAorfTsKZGlmZiAtLWdpdCBhL01vZHVsZXMveHhsaW1pdGVkLmMgYi9Nb2R1bGVzL3h4bGltaXRlZC5jCmluZGV4IGVjOTI0ZjIuLjY2MWI2ZTIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMveHhsaW1pdGVkLmMKKysrIGIvTW9kdWxlcy94eGxpbWl0ZWQuYwpAQCAtMTg3LDggKzE4Nyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbnVsbF9yaWNoY29tcGFyZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm90aGVyLCBpbnQgb3ApCiB7Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiBzdGF0aWMgUHlUeXBlX1Nsb3QgTnVsbF9UeXBlX3Nsb3RzW10gPSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3h4bW9kdWxlLmMgYi9Nb2R1bGVzL3h4bW9kdWxlLmMKaW5kZXggYThhOTM2MC4uMGZlZmY2NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy94eG1vZHVsZS5jCisrKyBiL01vZHVsZXMveHhtb2R1bGUuYwpAQCAtMTAyLDQyICsxMDIsNDIgQEAKICAgICBzaXplb2YoWHhvT2JqZWN0KSwgICAgICAgICAgLyp0cF9iYXNpY3NpemUqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KICAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpWHhvX2RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCisgICAgKGRlc3RydWN0b3IpWHhvX2RlYWxsb2MsICAgIC8qdHBfZGVhbGxvYyovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIChnZXRhdHRyZnVuYykwLCAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgKHNldGF0dHJmdW5jKVh4b19zZXRhdHRyLCAvKnRwX3NldGF0dHIqLworICAgIChnZXRhdHRyZnVuYykwLCAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLworICAgIChzZXRhdHRyZnVuYylYeG9fc2V0YXR0ciwgICAvKnRwX3NldGF0dHIqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwogICAgIChnZXRhdHRyb2Z1bmMpWHhvX2dldGF0dHJvLCAvKnRwX2dldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgLyp0cF9mbGFncyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCovCi0gICAgWHhvX21ldGhvZHMsICAgICAgICAgICAgLyp0cF9tZXRob2RzKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX21lbWJlcnMqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0c2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9nZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3Jfc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaW5pdCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uZXcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZnJlZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pc19nYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgIC8qdHBfZmxhZ3MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RvYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0Ki8KKyAgICBYeG9fbWV0aG9kcywgICAgICAgICAgICAgICAgLyp0cF9tZXRob2RzKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9tZW1iZXJzKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRzZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2UqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3QqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX2dldCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3Jfc2V0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0b2Zmc2V0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pbml0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hbGxvYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbmV3Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9mcmVlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pc19nYyovCiB9OwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvemlwaW1wb3J0LmMgYi9Nb2R1bGVzL3ppcGltcG9ydC5jCmluZGV4IDdhZTRmMGEuLjJmZWIyYTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvemlwaW1wb3J0LmMKKysrIGIvTW9kdWxlcy96aXBpbXBvcnQuYwpAQCAtNDksNyArNDksNyBAQAogLyogZm9yd2FyZCBkZWNscyAqLwogc3RhdGljIFB5T2JqZWN0ICpyZWFkX2RpcmVjdG9yeShQeU9iamVjdCAqYXJjaGl2ZSk7CiBzdGF0aWMgUHlPYmplY3QgKmdldF9kYXRhKFB5T2JqZWN0ICphcmNoaXZlLCBQeU9iamVjdCAqdG9jX2VudHJ5KTsKLXN0YXRpYyBQeU9iamVjdCAqZ2V0X21vZHVsZV9jb2RlKFppcEltcG9ydGVyICpzZWxmLCBjaGFyICpmdWxsbmFtZSwKK3N0YXRpYyBQeU9iamVjdCAqZ2V0X21vZHVsZV9jb2RlKFppcEltcG9ydGVyICpzZWxmLCBQeU9iamVjdCAqZnVsbG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnBfaXNwYWNrYWdlLCBQeU9iamVjdCAqKnBfbW9kcGF0aCk7CiAKIApAQCAtNjMsMTA5ICs2MywxMDkgQEAKIHN0YXRpYyBpbnQKIHppcGltcG9ydGVyX2luaXQoWmlwSW1wb3J0ZXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU9iamVjdCAqcGF0aG9iaiwgKmZpbGVzOwotICAgIFB5X1VOSUNPREUgKnBhdGgsICpwLCAqcHJlZml4LCBidWZbTUFYUEFUSExFTisyXTsKLSAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBQeU9iamVjdCAqcGF0aCwgKmZpbGVzLCAqdG1wOworICAgIFB5T2JqZWN0ICpmaWxlbmFtZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBsZW4sIGZsZW47CisjaWZkZWYgQUxUU0VQCisgICAgX1B5X0lERU5USUZJRVIocmVwbGFjZSk7CisjZW5kaWYKIAogICAgIGlmICghX1B5QXJnX05vS2V5d29yZHMoInppcGltcG9ydGVyKCkiLCBrd2RzKSkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjp6aXBpbXBvcnRlciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0RlY29kZXIsICZwYXRob2JqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTRGVjb2RlciwgJnBhdGgpKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICAvKiBjb3B5IHBhdGggdG8gYnVmICovCi0gICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHBhdGhvYmopOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocGF0aCkgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHBhdGgpOwogICAgIGlmIChsZW4gPT0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoWmlwSW1wb3J0RXJyb3IsICJhcmNoaXZlIHBhdGggaXMgZW1wdHkiKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgaWYgKGxlbiA+PSBNQVhQQVRITEVOKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhaaXBJbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcmNoaXZlIHBhdGggdG9vIGxvbmciKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAgUHlfVU5JQ09ERV9zdHJjcHkoYnVmLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShwYXRob2JqKSk7CiAKICNpZmRlZiBBTFRTRVAKLSAgICBmb3IgKHAgPSBidWY7ICpwOyBwKyspIHsKLSAgICAgICAgaWYgKCpwID09IEFMVFNFUCkKLSAgICAgICAgICAgICpwID0gU0VQOwotICAgIH0KKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHBhdGgsICZQeUlkX3JlcGxhY2UsICJDQyIsIEFMVFNFUCwgU0VQKTsKKyAgICBpZiAoIXRtcCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9ERUNSRUYocGF0aCk7CisgICAgcGF0aCA9IHRtcDsKICNlbmRpZgogCi0gICAgcGF0aCA9IE5VTEw7Ci0gICAgcHJlZml4ID0gTlVMTDsKKyAgICBmaWxlbmFtZSA9IHBhdGg7CisgICAgUHlfSU5DUkVGKGZpbGVuYW1lKTsKKyAgICBmbGVuID0gbGVuOwogICAgIGZvciAoOzspIHsKICAgICAgICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKICAgICAgICAgaW50IHJ2OwogCi0gICAgICAgIGlmIChwYXRob2JqID09IE5VTEwpIHsKLSAgICAgICAgICAgIHBhdGhvYmogPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoYnVmLCBsZW4pOwotICAgICAgICAgICAgaWYgKHBhdGhvYmogPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIHJ2ID0gX1B5X3N0YXQocGF0aG9iaiwgJnN0YXRidWYpOworICAgICAgICBydiA9IF9QeV9zdGF0KGZpbGVuYW1lLCAmc3RhdGJ1Zik7CisgICAgICAgIGlmIChydiA9PSAtMikKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIGlmIChydiA9PSAwKSB7CiAgICAgICAgICAgICAvKiBpdCBleGlzdHMgKi8KLSAgICAgICAgICAgIGlmIChTX0lTUkVHKHN0YXRidWYuc3RfbW9kZSkpCi0gICAgICAgICAgICAgICAgLyogaXQncyBhIGZpbGUgKi8KLSAgICAgICAgICAgICAgICBwYXRoID0gYnVmOworICAgICAgICAgICAgaWYgKCFTX0lTUkVHKHN0YXRidWYuc3RfbW9kZSkpCisgICAgICAgICAgICAgICAgLyogaXQncyBhIG5vdCBmaWxlICovCisgICAgICAgICAgICAgICAgUHlfQ0xFQVIoZmlsZW5hbWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIFB5X0NMRUFSKGZpbGVuYW1lKTsKICAgICAgICAgLyogYmFjayB1cCBvbmUgcGF0aCBlbGVtZW50ICovCi0gICAgICAgIHAgPSBQeV9VTklDT0RFX3N0cnJjaHIoYnVmLCBTRVApOwotICAgICAgICBpZiAocHJlZml4ICE9IE5VTEwpCi0gICAgICAgICAgICAqcHJlZml4ID0gU0VQOwotICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICBmbGVuID0gUHlVbmljb2RlX0ZpbmRDaGFyKHBhdGgsIFNFUCwgMCwgZmxlbiwgLTEpOworICAgICAgICBpZiAoZmxlbiA9PSAtMSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAqcCA9ICdcMCc7Ci0gICAgICAgIGxlbiA9IHAgLSBidWY7Ci0gICAgICAgIHByZWZpeCA9IHA7Ci0gICAgICAgIFB5X0NMRUFSKHBhdGhvYmopOworICAgICAgICBmaWxlbmFtZSA9IFB5VW5pY29kZV9TdWJzdHJpbmcocGF0aCwgMCwgZmxlbik7CiAgICAgfQotICAgIGlmIChwYXRoID09IE5VTEwpIHsKKyAgICBpZiAoZmlsZW5hbWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoWmlwSW1wb3J0RXJyb3IsICJub3QgYSBaaXAgZmlsZSIpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAotICAgIGZpbGVzID0gUHlEaWN0X0dldEl0ZW0oemlwX2RpcmVjdG9yeV9jYWNoZSwgcGF0aG9iaik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShmaWxlbmFtZSkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgZmlsZXMgPSBQeURpY3RfR2V0SXRlbSh6aXBfZGlyZWN0b3J5X2NhY2hlLCBmaWxlbmFtZSk7CiAgICAgaWYgKGZpbGVzID09IE5VTEwpIHsKLSAgICAgICAgZmlsZXMgPSByZWFkX2RpcmVjdG9yeShwYXRob2JqKTsKKyAgICAgICAgZmlsZXMgPSByZWFkX2RpcmVjdG9yeShmaWxlbmFtZSk7CiAgICAgICAgIGlmIChmaWxlcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKHppcF9kaXJlY3RvcnlfY2FjaGUsIHBhdGhvYmosIGZpbGVzKSAhPSAwKQorICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oemlwX2RpcmVjdG9yeV9jYWNoZSwgZmlsZW5hbWUsIGZpbGVzKSAhPSAwKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgZWxzZQogICAgICAgICBQeV9JTkNSRUYoZmlsZXMpOwogICAgIHNlbGYtPmZpbGVzID0gZmlsZXM7CiAKLSAgICBzZWxmLT5hcmNoaXZlID0gcGF0aG9iajsKLSAgICBwYXRob2JqID0gTlVMTDsKKyAgICAvKiBUcmFuc2ZlciByZWZlcmVuY2UgKi8KKyAgICBzZWxmLT5hcmNoaXZlID0gZmlsZW5hbWU7CisgICAgZmlsZW5hbWUgPSBOVUxMOwogCi0gICAgaWYgKHByZWZpeCAhPSBOVUxMKSB7Ci0gICAgICAgIHByZWZpeCsrOwotICAgICAgICBsZW4gPSBQeV9VTklDT0RFX3N0cmxlbihwcmVmaXgpOwotICAgICAgICBpZiAocHJlZml4W2xlbi0xXSAhPSBTRVApIHsKKyAgICAvKiBDaGVjayBpZiB0aGVyZSBpcyBhIHByZWZpeCBkaXJlY3RvcnkgZm9sbG93aW5nIHRoZSBmaWxlbmFtZS4gKi8KKyAgICBpZiAoZmxlbiAhPSBsZW4pIHsKKyAgICAgICAgdG1wID0gUHlVbmljb2RlX1N1YnN0cmluZyhwYXRoLCBmbGVuKzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgocGF0aCkpOworICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBzZWxmLT5wcmVmaXggPSB0bXA7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRF9DSEFSKHBhdGgsIGxlbi0xKSAhPSBTRVApIHsKICAgICAgICAgICAgIC8qIGFkZCB0cmFpbGluZyBTRVAgKi8KLSAgICAgICAgICAgIHByZWZpeFtsZW5dID0gU0VQOwotICAgICAgICAgICAgcHJlZml4W2xlbiArIDFdID0gJ1wwJzsKLSAgICAgICAgICAgIGxlbisrOworICAgICAgICAgICAgdG1wID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVJWMiLCBzZWxmLT5wcmVmaXgsIFNFUCk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmLT5wcmVmaXgpOworICAgICAgICAgICAgc2VsZi0+cHJlZml4ID0gdG1wOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgbGVuID0gMDsKLSAgICBzZWxmLT5wcmVmaXggPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocHJlZml4LCBsZW4pOwotICAgIGlmIChzZWxmLT5wcmVmaXggPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLQorICAgICAgICBzZWxmLT5wcmVmaXggPSBQeVVuaWNvZGVfTmV3KDAsIDApOworICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICByZXR1cm4gMDsKIAogZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihwYXRob2JqKTsKKyAgICBQeV9ERUNSRUYocGF0aCk7CisgICAgUHlfWERFQ1JFRihmaWxlbmFtZSk7CiAgICAgcmV0dXJuIC0xOwogfQogCkBAIC0xOTMsNyArMTkzLDcgQEAKIHsKICAgICBpZiAoc2VsZi0+YXJjaGl2ZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjx6aXBpbXBvcnRlciBvYmplY3QgXCI/Pz9cIj4iKTsKLSAgICBlbHNlIGlmIChzZWxmLT5wcmVmaXggIT0gTlVMTCAmJiBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZi0+cHJlZml4KSAhPSAwKQorICAgIGVsc2UgaWYgKHNlbGYtPnByZWZpeCAhPSBOVUxMICYmIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYtPnByZWZpeCkgIT0gMCkKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8emlwaW1wb3J0ZXIgb2JqZWN0IFwiJVUlYyVVXCI+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFyY2hpdmUsIFNFUCwgc2VsZi0+cHJlZml4KTsKICAgICBlbHNlCkBAIC0yMDIsNDkgKzIwMiw1OCBAQAogfQogCiAvKiByZXR1cm4gZnVsbG5hbWUuc3BsaXQoIi4iKVstMV0gKi8KLXN0YXRpYyBjaGFyICoKLWdldF9zdWJuYW1lKGNoYXIgKmZ1bGxuYW1lKQorc3RhdGljIFB5T2JqZWN0ICoKK2dldF9zdWJuYW1lKFB5T2JqZWN0ICpmdWxsbmFtZSkKIHsKLSAgICBjaGFyICpzdWJuYW1lID0gc3RycmNocihmdWxsbmFtZSwgJy4nKTsKLSAgICBpZiAoc3VibmFtZSA9PSBOVUxMKQotICAgICAgICBzdWJuYW1lID0gZnVsbG5hbWU7Ci0gICAgZWxzZQotICAgICAgICBzdWJuYW1lKys7Ci0gICAgcmV0dXJuIHN1Ym5hbWU7CisgICAgUHlfc3NpemVfdCBsZW4sIGRvdDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGZ1bGxuYW1lKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGZ1bGxuYW1lKTsKKyAgICBkb3QgPSBQeVVuaWNvZGVfRmluZENoYXIoZnVsbG5hbWUsICcuJywgMCwgbGVuLCAtMSk7CisgICAgaWYgKGRvdCA9PSAtMSkgeworICAgICAgICBQeV9JTkNSRUYoZnVsbG5hbWUpOworICAgICAgICByZXR1cm4gZnVsbG5hbWU7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfU3Vic3RyaW5nKGZ1bGxuYW1lLCBkb3QrMSwgbGVuKTsKIH0KIAogLyogR2l2ZW4gYSAoc3ViKW1vZHVsZW5hbWUsIHdyaXRlIHRoZSBwb3RlbnRpYWwgZmlsZSBwYXRoIGluIHRoZQogICAgYXJjaGl2ZSAod2l0aG91dCBleHRlbnNpb24pIHRvIHRoZSBwYXRoIGJ1ZmZlci4gUmV0dXJuIHRoZQotICAgbGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgc3RyaW5nLiAqLwotc3RhdGljIGludAotbWFrZV9maWxlbmFtZShQeU9iamVjdCAqcHJlZml4X29iaiwgY2hhciAqbmFtZSwgY2hhciAqcGF0aCwgc2l6ZV90IHBhdGhzaXplKQorICAgbGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgc3RyaW5nLgorCisgICByZXR1cm4gc2VsZi5wcmVmaXggKyBuYW1lLnJlcGxhY2UoJy4nLCBvcy5zZXApICovCitzdGF0aWMgUHlPYmplY3QqCittYWtlX2ZpbGVuYW1lKFB5T2JqZWN0ICpwcmVmaXgsIFB5T2JqZWN0ICpuYW1lKQogewotICAgIHNpemVfdCBsZW47Ci0gICAgY2hhciAqcDsKLSAgICBQeU9iamVjdCAqcHJlZml4OworICAgIFB5T2JqZWN0ICpwYXRob2JqOworICAgIFB5X1VDUzQgKnAsICpidWY7CisgICAgUHlfc3NpemVfdCBsZW47CiAKLSAgICBwcmVmaXggPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHByZWZpeF9vYmopOwotICAgIGlmIChwcmVmaXggPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUocHJlZml4KTsKLQotICAgIC8qIHNlbGYucHJlZml4ICsgbmFtZSBbKyBTRVAgKyAiX19pbml0X18iXSArICIucHlbY29dIiAqLwotICAgIGlmIChsZW4gKyBzdHJsZW4obmFtZSkgKyAxMyA+PSBwYXRoc2l6ZSAtIDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFppcEltcG9ydEVycm9yLCAicGF0aCB0b28gbG9uZyIpOwotICAgICAgICBQeV9ERUNSRUYocHJlZml4KTsKLSAgICAgICAgcmV0dXJuIC0xOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHByZWZpeCkgKyBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSArIDE7CisgICAgcCA9IGJ1ZiA9IFB5TWVtX01hbGxvYyhzaXplb2YoUHlfVUNTNCkgKiBsZW4pOworICAgIGlmIChidWYgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBzdHJjcHkocGF0aCwgUHlCeXRlc19BU19TVFJJTkcocHJlZml4KSk7Ci0gICAgUHlfREVDUkVGKHByZWZpeCk7Ci0gICAgc3RyY3B5KHBhdGggKyBsZW4sIG5hbWUpOwotICAgIGZvciAocCA9IHBhdGggKyBsZW47ICpwOyBwKyspIHsKKyAgICBpZiAoIVB5VW5pY29kZV9Bc1VDUzQocHJlZml4LCBwLCBsZW4sIDApKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHAgKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHJlZml4KTsKKyAgICBsZW4gLT0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHJlZml4KTsKKyAgICBpZiAoIVB5VW5pY29kZV9Bc1VDUzQobmFtZSwgcCwgbGVuLCAxKSkgeworICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBmb3IgKDsgKnA7IHArKykgewogICAgICAgICBpZiAoKnAgPT0gJy4nKQogICAgICAgICAgICAgKnAgPSBTRVA7CiAgICAgfQotICAgIGxlbiArPSBzdHJsZW4obmFtZSk7Ci0gICAgYXNzZXJ0KGxlbiA8IElOVF9NQVgpOwotICAgIHJldHVybiAoaW50KWxlbjsKKyAgICBwYXRob2JqID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIHAtYnVmKTsKKyAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgcmV0dXJuIHBhdGhvYmo7CiB9CiAKIGVudW0gemlfbW9kdWxlX2luZm8gewpAQCAtMjU0LDMyICsyNjMsMTEzIEBACiAgICAgTUlfUEFDS0FHRQogfTsKIAorLyogRG9lcyB0aGlzIHBhdGggcmVwcmVzZW50IGEgZGlyZWN0b3J5PworICAgb24gZXJyb3IsIHJldHVybiA8IDAKKyAgIGlmIG5vdCBhIGRpciwgcmV0dXJuIDAKKyAgIGlmIGEgZGlyLCByZXR1cm4gMQorKi8KK3N0YXRpYyBpbnQKK2NoZWNrX2lzX2RpcmVjdG9yeShaaXBJbXBvcnRlciAqc2VsZiwgUHlPYmplY3QqIHByZWZpeCwgUHlPYmplY3QgKnBhdGgpCit7CisgICAgUHlPYmplY3QgKmRpcnBhdGg7CisgICAgaW50IHJlczsKKworICAgIC8qIFNlZSBpZiB0aGlzIGlzIGEgImRpcmVjdG9yeSIuIElmIHNvLCBpdCdzIGVsaWdpYmxlIHRvIGJlIHBhcnQKKyAgICAgICBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLiBXZSB0ZXN0IGJ5IHNlZWluZyBpZiB0aGUgbmFtZSwgd2l0aCBhbgorICAgICAgIGFwcGVuZGVkIHBhdGggc2VwYXJhdG9yLCBleGlzdHMuICovCisgICAgZGlycGF0aCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVSVVJWMiLCBwcmVmaXgsIHBhdGgsIFNFUCk7CisgICAgaWYgKGRpcnBhdGggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIC8qIElmIGRpcnBhdGggaXMgcHJlc2VudCBpbiBzZWxmLT5maWxlcywgd2UgaGF2ZSBhIGRpcmVjdG9yeS4gKi8KKyAgICByZXMgPSBQeURpY3RfQ29udGFpbnMoc2VsZi0+ZmlsZXMsIGRpcnBhdGgpOworICAgIFB5X0RFQ1JFRihkaXJwYXRoKTsKKyAgICByZXR1cm4gcmVzOworfQorCiAvKiBSZXR1cm4gc29tZSBpbmZvcm1hdGlvbiBhYm91dCBhIG1vZHVsZS4gKi8KIHN0YXRpYyBlbnVtIHppX21vZHVsZV9pbmZvCi1nZXRfbW9kdWxlX2luZm8oWmlwSW1wb3J0ZXIgKnNlbGYsIGNoYXIgKmZ1bGxuYW1lKQorZ2V0X21vZHVsZV9pbmZvKFppcEltcG9ydGVyICpzZWxmLCBQeU9iamVjdCAqZnVsbG5hbWUpCiB7Ci0gICAgY2hhciAqc3VibmFtZSwgcGF0aFtNQVhQQVRITEVOICsgMV07Ci0gICAgaW50IGxlbjsKKyAgICBQeU9iamVjdCAqc3VibmFtZTsKKyAgICBQeU9iamVjdCAqcGF0aCwgKmZ1bGxwYXRoLCAqaXRlbTsKICAgICBzdHJ1Y3Qgc3RfemlwX3NlYXJjaG9yZGVyICp6c287CiAKICAgICBzdWJuYW1lID0gZ2V0X3N1Ym5hbWUoZnVsbG5hbWUpOworICAgIGlmIChzdWJuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBNSV9FUlJPUjsKIAotICAgIGxlbiA9IG1ha2VfZmlsZW5hbWUoc2VsZi0+cHJlZml4LCBzdWJuYW1lLCBwYXRoLCBzaXplb2YocGF0aCkpOwotICAgIGlmIChsZW4gPCAwKQorICAgIHBhdGggPSBtYWtlX2ZpbGVuYW1lKHNlbGYtPnByZWZpeCwgc3VibmFtZSk7CisgICAgUHlfREVDUkVGKHN1Ym5hbWUpOworICAgIGlmIChwYXRoID09IE5VTEwpCiAgICAgICAgIHJldHVybiBNSV9FUlJPUjsKIAogICAgIGZvciAoenNvID0gemlwX3NlYXJjaG9yZGVyOyAqenNvLT5zdWZmaXg7IHpzbysrKSB7Ci0gICAgICAgIHN0cmNweShwYXRoICsgbGVuLCB6c28tPnN1ZmZpeCk7Ci0gICAgICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyhzZWxmLT5maWxlcywgcGF0aCkgIT0gTlVMTCkgeworICAgICAgICBmdWxscGF0aCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVSVzIiwgcGF0aCwgenNvLT5zdWZmaXgpOworICAgICAgICBpZiAoZnVsbHBhdGggPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHBhdGgpOworICAgICAgICAgICAgcmV0dXJuIE1JX0VSUk9SOworICAgICAgICB9CisgICAgICAgIGl0ZW0gPSBQeURpY3RfR2V0SXRlbShzZWxmLT5maWxlcywgZnVsbHBhdGgpOworICAgICAgICBQeV9ERUNSRUYoZnVsbHBhdGgpOworICAgICAgICBpZiAoaXRlbSAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocGF0aCk7CiAgICAgICAgICAgICBpZiAoenNvLT50eXBlICYgSVNfUEFDS0FHRSkKICAgICAgICAgICAgICAgICByZXR1cm4gTUlfUEFDS0FHRTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm4gTUlfTU9EVUxFOwogICAgICAgICB9CiAgICAgfQorICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICByZXR1cm4gTUlfTk9UX0ZPVU5EOwogfQogCit0eXBlZGVmIGVudW0geworICAgIEZMX0VSUk9SLAorICAgIEZMX05PVF9GT1VORCwKKyAgICBGTF9NT0RVTEVfRk9VTkQsCisgICAgRkxfTlNfRk9VTkQKK30gZmluZF9sb2FkZXJfcmVzdWx0OworCisvKiBUaGUgZ3V0cyBvZiAiZmluZF9sb2FkZXIiIGFuZCAiZmluZF9tb2R1bGUiLiBSZXR1cm4gdmFsdWVzOgorICAgLTE6IGVycm9yCisgICAgMDogbm8gbG9hZGVyIG9yIG5hbWVzcGFjZSBwb3J0aW9ucyBmb3VuZAorICAgIDE6IG1vZHVsZS9wYWNrYWdlIGZvdW5kCisgICAgMjogbmFtZXNwYWNlIHBvcnRpb24gZm91bmQ6ICpuYW1lc3BhY2VfcG9ydGlvbiB3aWxsIHBvaW50IHRvIHRoZSBuYW1lCisqLworc3RhdGljIGZpbmRfbG9hZGVyX3Jlc3VsdAorZmluZF9sb2FkZXIoWmlwSW1wb3J0ZXIgKnNlbGYsIFB5T2JqZWN0ICpmdWxsbmFtZSwgUHlPYmplY3QgKipuYW1lc3BhY2VfcG9ydGlvbikKK3sKKyAgICBlbnVtIHppX21vZHVsZV9pbmZvIG1pOworCisgICAgKm5hbWVzcGFjZV9wb3J0aW9uID0gTlVMTDsKKworICAgIG1pID0gZ2V0X21vZHVsZV9pbmZvKHNlbGYsIGZ1bGxuYW1lKTsKKyAgICBpZiAobWkgPT0gTUlfRVJST1IpCisgICAgICAgIHJldHVybiBGTF9FUlJPUjsKKyAgICBpZiAobWkgPT0gTUlfTk9UX0ZPVU5EKSB7CisgICAgICAgIC8qIE5vdCBhIG1vZHVsZSBvciByZWd1bGFyIHBhY2thZ2UuIFNlZSBpZiB0aGlzIGlzIGEgZGlyZWN0b3J5LCBhbmQKKyAgICAgICAgICAgdGhlcmVmb3JlIHBvc3NpYmx5IGEgcG9ydGlvbiBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLiAqLworICAgICAgICBpbnQgaXNfZGlyID0gY2hlY2tfaXNfZGlyZWN0b3J5KHNlbGYsIHNlbGYtPnByZWZpeCwgZnVsbG5hbWUpOworICAgICAgICBpZiAoaXNfZGlyIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKGlzX2RpcikgeworICAgICAgICAgICAgLyogVGhpcyBpcyBwb3NzaWJseSBhIHBvcnRpb24gb2YgYSBuYW1lc3BhY2UKKyAgICAgICAgICAgICAgIHBhY2thZ2UuIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGluZyBpdHMgcGF0aCwKKyAgICAgICAgICAgICAgIHdpdGhvdXQgYSB0cmFpbGluZyBzZXBhcmF0b3IuICovCisgICAgICAgICAgICAqbmFtZXNwYWNlX3BvcnRpb24gPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlYyVVJVUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+YXJjaGl2ZSwgU0VQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+cHJlZml4LCBmdWxsbmFtZSk7CisgICAgICAgICAgICBpZiAoKm5hbWVzcGFjZV9wb3J0aW9uID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZMX0VSUk9SOworICAgICAgICAgICAgcmV0dXJuIEZMX05TX0ZPVU5EOworICAgICAgICB9CisgICAgICAgIHJldHVybiBGTF9OT1RfRk9VTkQ7CisgICAgfQorICAgIC8qIFRoaXMgaXMgYSBtb2R1bGUgb3IgcGFja2FnZS4gKi8KKyAgICByZXR1cm4gRkxfTU9EVUxFX0ZPVU5EOworfQorCisKIC8qIENoZWNrIHdoZXRoZXIgd2UgY2FuIHNhdGlzZnkgdGhlIGltcG9ydCBvZiB0aGUgbW9kdWxlIG5hbWVkIGJ5CiAgICAnZnVsbG5hbWUnLiBSZXR1cm4gc2VsZiBpZiB3ZSBjYW4sIE5vbmUgaWYgd2UgY2FuJ3QuICovCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjg3LDIyICszNzcsNjQgQEAKIHsKICAgICBaaXBJbXBvcnRlciAqc2VsZiA9IChaaXBJbXBvcnRlciAqKW9iajsKICAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7Ci0gICAgY2hhciAqZnVsbG5hbWU7Ci0gICAgZW51bSB6aV9tb2R1bGVfaW5mbyBtaTsKKyAgICBQeU9iamVjdCAqZnVsbG5hbWU7CisgICAgUHlPYmplY3QgKm5hbWVzcGFjZV9wb3J0aW9uID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3xPOnppcGltcG9ydGVyLmZpbmRfbW9kdWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bGxuYW1lLCAmcGF0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfE86emlwaW1wb3J0ZXIuZmluZF9tb2R1bGUiLCAmZnVsbG5hbWUsICZwYXRoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBtaSA9IGdldF9tb2R1bGVfaW5mbyhzZWxmLCBmdWxsbmFtZSk7Ci0gICAgaWYgKG1pID09IE1JX0VSUk9SKQorICAgIHN3aXRjaCAoZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUsICZuYW1lc3BhY2VfcG9ydGlvbikpIHsKKyAgICBjYXNlIEZMX0VSUk9SOgogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAobWkgPT0gTUlfTk9UX0ZPVU5EKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgY2FzZSBGTF9OU19GT1VORDoKKyAgICAgICAgLyogQSBuYW1lc3BhY2UgcG9ydGlvbiBpcyBub3QgYWxsb3dlZCB2aWEgZmluZF9tb2R1bGUsIHNvIHJldHVybiBOb25lLiAqLworICAgICAgICBQeV9ERUNSRUYobmFtZXNwYWNlX3BvcnRpb24pOworICAgICAgICAvKiBGQUxMIFRIUk9VR0ggKi8KKyAgICBjYXNlIEZMX05PVF9GT1VORDoKKyAgICAgICAgcmVzdWx0ID0gUHlfTm9uZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGTF9NT0RVTEVfRk9VTkQ6CisgICAgICAgIHJlc3VsdCA9IChQeU9iamVjdCAqKXNlbGY7CisgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CisgICAgUHlfSU5DUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKiBDaGVjayB3aGV0aGVyIHdlIGNhbiBzYXRpc2Z5IHRoZSBpbXBvcnQgb2YgdGhlIG1vZHVsZSBuYW1lZCBieQorICAgJ2Z1bGxuYW1lJywgb3Igd2hldGhlciBpdCBjb3VsZCBiZSBhIHBvcnRpb24gb2YgYSBuYW1lc3BhY2UKKyAgIHBhY2thZ2UuIFJldHVybiBzZWxmIGlmIHdlIGNhbiBsb2FkIGl0LCBhIHN0cmluZyBjb250YWluaW5nIHRoZQorICAgZnVsbCBwYXRoIGlmIGl0J3MgYSBwb3NzaWJsZSBuYW1lc3BhY2UgcG9ydGlvbiwgTm9uZSBpZiB3ZQorICAgY2FuJ3QgbG9hZCBpdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCit6aXBpbXBvcnRlcl9maW5kX2xvYWRlcihQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBaaXBJbXBvcnRlciAqc2VsZiA9IChaaXBJbXBvcnRlciAqKW9iajsKKyAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZ1bGxuYW1lOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VfcG9ydGlvbiA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Tzp6aXBpbXBvcnRlci5maW5kX21vZHVsZSIsICZmdWxsbmFtZSwgJnBhdGgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN3aXRjaCAoZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUsICZuYW1lc3BhY2VfcG9ydGlvbikpIHsKKyAgICBjYXNlIEZMX0VSUk9SOgorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBjYXNlIEZMX05PVF9GT1VORDogICAgICAgIC8qIE5vdCBmb3VuZCwgcmV0dXJuIChOb25lLCBbXSkgKi8KKyAgICAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiT1tdIiwgUHlfTm9uZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRkxfTU9EVUxFX0ZPVU5EOiAgICAgLyogUmV0dXJuIChzZWxmLCBbXSkgKi8KKyAgICAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiT1tdIiwgc2VsZik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRkxfTlNfRk9VTkQ6ICAgICAgICAgLyogUmV0dXJuIChOb25lLCBbbmFtZXNwYWNlX3BvcnRpb25dKSAqLworICAgICAgICByZXN1bHQgPSBQeV9CdWlsZFZhbHVlKCJPW09dIiwgUHlfTm9uZSwgbmFtZXNwYWNlX3BvcnRpb24pOworICAgICAgICBQeV9ERUNSRUYobmFtZXNwYWNlX3BvcnRpb24pOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvKiBMb2FkIGFuZCByZXR1cm4gdGhlIG1vZHVsZSBuYW1lZCBieSAnZnVsbG5hbWUnLiAqLwpAQCAtMzExLDE5ICs0NDMsMjEgQEAKIHsKICAgICBaaXBJbXBvcnRlciAqc2VsZiA9IChaaXBJbXBvcnRlciAqKW9iajsKICAgICBQeU9iamVjdCAqY29kZSA9IE5VTEwsICptb2QsICpkaWN0OwotICAgIGNoYXIgKmZ1bGxuYW1lOwotICAgIFB5T2JqZWN0ICptb2RwYXRoID0gTlVMTCwgKm1vZHBhdGhfYnl0ZXM7CisgICAgUHlPYmplY3QgKmZ1bGxuYW1lOworICAgIFB5T2JqZWN0ICptb2RwYXRoID0gTlVMTDsKICAgICBpbnQgaXNwYWNrYWdlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnppcGltcG9ydGVyLmxvYWRfbW9kdWxlIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6emlwaW1wb3J0ZXIubG9hZF9tb2R1bGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmZnVsbG5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGZ1bGxuYW1lKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBjb2RlID0gZ2V0X21vZHVsZV9jb2RlKHNlbGYsIGZ1bGxuYW1lLCAmaXNwYWNrYWdlLCAmbW9kcGF0aCk7CiAgICAgaWYgKGNvZGUgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAotICAgIG1vZCA9IFB5SW1wb3J0X0FkZE1vZHVsZShmdWxsbmFtZSk7CisgICAgbW9kID0gUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KGZ1bGxuYW1lKTsKICAgICBpZiAobW9kID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgZGljdCA9IFB5TW9kdWxlX0dldERpY3QobW9kKTsKQEAgLTMzNiwxNyArNDcwLDE3IEBACiAgICAgICAgIC8qIGFkZCBfX3BhdGhfXyB0byB0aGUgbW9kdWxlICpiZWZvcmUqIHRoZSBjb2RlIGdldHMKICAgICAgICAgICAgZXhlY3V0ZWQgKi8KICAgICAgICAgUHlPYmplY3QgKnBrZ3BhdGgsICpmdWxscGF0aDsKLSAgICAgICAgY2hhciAqc3VibmFtZSA9IGdldF9zdWJuYW1lKGZ1bGxuYW1lKTsKKyAgICAgICAgUHlPYmplY3QgKnN1Ym5hbWUgPSBnZXRfc3VibmFtZShmdWxsbmFtZSk7CiAgICAgICAgIGludCBlcnI7CiAKLSAgICAgICAgZnVsbHBhdGggPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlYyVVJXMiLAorICAgICAgICBmdWxscGF0aCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVSVjJVUlVSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFyY2hpdmUsIFNFUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+cHJlZml4LCBzdWJuYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHN1Ym5hbWUpOwogICAgICAgICBpZiAoZnVsbHBhdGggPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICAgICAgcGtncGF0aCA9IFB5X0J1aWxkVmFsdWUoIltPXSIsIGZ1bGxwYXRoKTsKLSAgICAgICAgUHlfREVDUkVGKGZ1bGxwYXRoKTsKKyAgICAgICAgcGtncGF0aCA9IFB5X0J1aWxkVmFsdWUoIltOXSIsIGZ1bGxwYXRoKTsKICAgICAgICAgaWYgKHBrZ3BhdGggPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIGVyciA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJfX3BhdGhfXyIsIHBrZ3BhdGgpOwpAQCAtMzU0LDE4ICs0ODgsMTMgQEAKICAgICAgICAgaWYgKGVyciAhPSAwKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgbW9kcGF0aF9ieXRlcyA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQobW9kcGF0aCk7Ci0gICAgaWYgKG1vZHBhdGhfYnl0ZXMgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBtb2QgPSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4KGZ1bGxuYW1lLCBjb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcobW9kcGF0aF9ieXRlcykpOwotICAgIFB5X0RFQ1JFRihtb2RwYXRoX2J5dGVzKTsKKyAgICBtb2QgPSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdChmdWxsbmFtZSwgY29kZSwgbW9kcGF0aCwgTlVMTCk7CiAgICAgUHlfQ0xFQVIoY29kZSk7CiAgICAgaWYgKG1vZCA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCAlcyAjIGxvYWRlZCBmcm9tIFppcCAlVVxuIiwKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgJVUgIyBsb2FkZWQgZnJvbSBaaXAgJVVcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsbmFtZSwgbW9kcGF0aCk7CiAgICAgUHlfREVDUkVGKG1vZHBhdGgpOwogICAgIHJldHVybiBtb2Q7CkBAIC0zODAsMTIgKzUwOSwxMCBAQAogemlwaW1wb3J0ZXJfZ2V0X2ZpbGVuYW1lKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphcmdzKQogewogICAgIFppcEltcG9ydGVyICpzZWxmID0gKFppcEltcG9ydGVyICopb2JqOwotICAgIFB5T2JqZWN0ICpjb2RlOwotICAgIGNoYXIgKmZ1bGxuYW1lOwotICAgIFB5T2JqZWN0ICptb2RwYXRoOworICAgIFB5T2JqZWN0ICpmdWxsbmFtZSwgKmNvZGUsICptb2RwYXRoOwogICAgIGludCBpc3BhY2thZ2U7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6emlwaW1wb3J0ZXIuZ2V0X2ZpbGVuYW1lIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6emlwaW1wb3J0ZXIuZ2V0X2ZpbGVuYW1lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bGxuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTQwNCwxMCArNTMxLDEwIEBACiB6aXBpbXBvcnRlcl9pc19wYWNrYWdlKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphcmdzKQogewogICAgIFppcEltcG9ydGVyICpzZWxmID0gKFppcEltcG9ydGVyICopb2JqOwotICAgIGNoYXIgKmZ1bGxuYW1lOworICAgIFB5T2JqZWN0ICpmdWxsbmFtZTsKICAgICBlbnVtIHppX21vZHVsZV9pbmZvIG1pOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnppcGltcG9ydGVyLmlzX3BhY2thZ2UiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTp6aXBpbXBvcnRlci5pc19wYWNrYWdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bGxuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTQxNSw3MSArNTQyLDcwIEBACiAgICAgaWYgKG1pID09IE1JX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWkgPT0gTUlfTk9UX0ZPVU5EKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IGZpbmQgbW9kdWxlICclcyciLCBmdWxsbmFtZSk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IGZpbmQgbW9kdWxlICVSIiwgZnVsbG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhtaSA9PSBNSV9QQUNLQUdFKTsKIH0KIAorCiBzdGF0aWMgUHlPYmplY3QgKgogemlwaW1wb3J0ZXJfZ2V0X2RhdGEoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgWmlwSW1wb3J0ZXIgKnNlbGYgPSAoWmlwSW1wb3J0ZXIgKilvYmo7Ci0gICAgUHlPYmplY3QgKnBhdGhvYmosICprZXk7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAqcGF0aDsKKyAgICBQeU9iamVjdCAqcGF0aCwgKmtleTsKICNpZmRlZiBBTFRTRVAKLSAgICBQeV9VTklDT0RFICpwLCBidWZbTUFYUEFUSExFTiArIDFdOworICAgIF9QeV9JREVOVElGSUVSKHJlcGxhY2UpOwogI2VuZGlmCi0gICAgUHlfVU5JQ09ERSAqYXJjaGl2ZTsKICAgICBQeU9iamVjdCAqdG9jX2VudHJ5OwotICAgIFB5X3NzaXplX3QgcGF0aF9sZW4sIGxlbjsKKyAgICBQeV9zc2l6ZV90IHBhdGhfc3RhcnQsIHBhdGhfbGVuLCBsZW47CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6emlwaW1wb3J0ZXIuZ2V0X2RhdGEiLCAmcGF0aG9iaikpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOnppcGltcG9ydGVyLmdldF9kYXRhIiwgJnBhdGgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHBhdGhfbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHBhdGhvYmopOwotICAgIHBhdGggPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShwYXRob2JqKTsKICNpZmRlZiBBTFRTRVAKLSAgICBpZiAocGF0aF9sZW4gPj0gTUFYUEFUSExFTikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoWmlwSW1wb3J0RXJyb3IsICJwYXRoIHRvbyBsb25nIik7CisgICAgcGF0aCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocGF0aCwgJlB5SWRfcmVwbGFjZSwgIkNDIiwgQUxUU0VQLCBTRVApOworICAgIGlmICghcGF0aCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X1VOSUNPREVfc3RyY3B5KGJ1ZiwgcGF0aCk7Ci0gICAgZm9yIChwID0gYnVmOyAqcDsgcCsrKSB7Ci0gICAgICAgIGlmICgqcCA9PSBBTFRTRVApCi0gICAgICAgICAgICAqcCA9IFNFUDsKLSAgICB9Ci0gICAgcGF0aCA9IGJ1ZjsKKyNlbHNlCisgICAgUHlfSU5DUkVGKHBhdGgpOwogI2VuZGlmCi0gICAgYXJjaGl2ZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYtPmFyY2hpdmUpOwotICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShzZWxmLT5hcmNoaXZlKTsKLSAgICBpZiAoKHNpemVfdClsZW4gPCBQeV9VTklDT0RFX3N0cmxlbihwYXRoKSAmJgotICAgICAgICBQeV9VTklDT0RFX3N0cm5jbXAocGF0aCwgYXJjaGl2ZSwgbGVuKSA9PSAwICYmCi0gICAgICAgIHBhdGhbbGVuXSA9PSBTRVApIHsKLSAgICAgICAgcGF0aCArPSBsZW4gKyAxOwotICAgICAgICBwYXRoX2xlbiAtPSBsZW4gKyAxOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocGF0aCkgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBwYXRoX2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHBhdGgpOworCisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZi0+YXJjaGl2ZSk7CisgICAgcGF0aF9zdGFydCA9IDA7CisgICAgaWYgKFB5VW5pY29kZV9UYWlsbWF0Y2gocGF0aCwgc2VsZi0+YXJjaGl2ZSwgMCwgbGVuLCAtMSkKKyAgICAgICAgJiYgUHlVbmljb2RlX1JFQURfQ0hBUihwYXRoLCBsZW4pID09IFNFUCkgeworICAgICAgICBwYXRoX3N0YXJ0ID0gbGVuICsgMTsKICAgICB9CiAKLSAgICBrZXkgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocGF0aCwgcGF0aF9sZW4pOworICAgIGtleSA9IFB5VW5pY29kZV9TdWJzdHJpbmcocGF0aCwgcGF0aF9zdGFydCwgcGF0aF9sZW4pOwogICAgIGlmIChrZXkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgdG9jX2VudHJ5ID0gUHlEaWN0X0dldEl0ZW0oc2VsZi0+ZmlsZXMsIGtleSk7CiAgICAgaWYgKHRvY19lbnRyeSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19JT0Vycm9yLCBrZXkpOwogICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIFB5X0RFQ1JFRihrZXkpOworICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICByZXR1cm4gZ2V0X2RhdGEoc2VsZi0+YXJjaGl2ZSwgdG9jX2VudHJ5KTsKKyAgZXJyb3I6CisgICAgUHlfREVDUkVGKHBhdGgpOworICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogemlwaW1wb3J0ZXJfZ2V0X2NvZGUoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgWmlwSW1wb3J0ZXIgKnNlbGYgPSAoWmlwSW1wb3J0ZXIgKilvYmo7Ci0gICAgY2hhciAqZnVsbG5hbWU7CisgICAgUHlPYmplY3QgKmZ1bGxuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnppcGltcG9ydGVyLmdldF9jb2RlIiwgJmZ1bGxuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6emlwaW1wb3J0ZXIuZ2V0X2NvZGUiLCAmZnVsbG5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJldHVybiBnZXRfbW9kdWxlX2NvZGUoc2VsZiwgZnVsbG5hbWUsIE5VTEwsIE5VTEwpOwpAQCAtNDkwLDM0ICs2MTYsMzkgQEAKIHsKICAgICBaaXBJbXBvcnRlciAqc2VsZiA9IChaaXBJbXBvcnRlciAqKW9iajsKICAgICBQeU9iamVjdCAqdG9jX2VudHJ5OwotICAgIGNoYXIgKmZ1bGxuYW1lLCAqc3VibmFtZSwgcGF0aFtNQVhQQVRITEVOKzFdOwotICAgIGludCBsZW47CisgICAgUHlPYmplY3QgKmZ1bGxuYW1lLCAqc3VibmFtZSwgKnBhdGgsICpmdWxscGF0aDsKICAgICBlbnVtIHppX21vZHVsZV9pbmZvIG1pOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnppcGltcG9ydGVyLmdldF9zb3VyY2UiLCAmZnVsbG5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTp6aXBpbXBvcnRlci5nZXRfc291cmNlIiwgJmZ1bGxuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBtaSA9IGdldF9tb2R1bGVfaW5mbyhzZWxmLCBmdWxsbmFtZSk7CiAgICAgaWYgKG1pID09IE1JX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWkgPT0gTUlfTk9UX0ZPVU5EKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IGZpbmQgbW9kdWxlICclcyciLCBmdWxsbmFtZSk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IGZpbmQgbW9kdWxlICVSIiwgZnVsbG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKICAgICBzdWJuYW1lID0gZ2V0X3N1Ym5hbWUoZnVsbG5hbWUpOwotCi0gICAgbGVuID0gbWFrZV9maWxlbmFtZShzZWxmLT5wcmVmaXgsIHN1Ym5hbWUsIHBhdGgsIHNpemVvZihwYXRoKSk7Ci0gICAgaWYgKGxlbiA8IDApCisgICAgaWYgKHN1Ym5hbWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAobWkgPT0gTUlfUEFDS0FHRSkgewotICAgICAgICBwYXRoW2xlbl0gPSBTRVA7Ci0gICAgICAgIHN0cmNweShwYXRoICsgbGVuICsgMSwgIl9faW5pdF9fLnB5Iik7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgc3RyY3B5KHBhdGggKyBsZW4sICIucHkiKTsKKyAgICBwYXRoID0gbWFrZV9maWxlbmFtZShzZWxmLT5wcmVmaXgsIHN1Ym5hbWUpOworICAgIFB5X0RFQ1JFRihzdWJuYW1lKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHRvY19lbnRyeSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKHNlbGYtPmZpbGVzLCBwYXRoKTsKKyAgICBpZiAobWkgPT0gTUlfUEFDS0FHRSkKKyAgICAgICAgZnVsbHBhdGggPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlY19faW5pdF9fLnB5IiwgcGF0aCwgU0VQKTsKKyAgICBlbHNlCisgICAgICAgIGZ1bGxwYXRoID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVLnB5IiwgcGF0aCk7CisgICAgUHlfREVDUkVGKHBhdGgpOworICAgIGlmIChmdWxscGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHRvY19lbnRyeSA9IFB5RGljdF9HZXRJdGVtKHNlbGYtPmZpbGVzLCBmdWxscGF0aCk7CisgICAgUHlfREVDUkVGKGZ1bGxwYXRoKTsKICAgICBpZiAodG9jX2VudHJ5ICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKnJlcywgKmJ5dGVzOwogICAgICAgICBieXRlcyA9IGdldF9kYXRhKHNlbGYtPmFyY2hpdmUsIHRvY19lbnRyeSk7CkBAIC01NDMsNiArNjc0LDE2IEBACiBUaGUgb3B0aW9uYWwgJ3BhdGgnIGFyZ3VtZW50IGlzIGlnbm9yZWQgLS0gaXQncyB0aGVyZSBmb3IgY29tcGF0aWJpbGl0eVxuXAogd2l0aCB0aGUgaW1wb3J0ZXIgcHJvdG9jb2wuIik7CiAKK1B5RG9jX1NUUlZBUihkb2NfZmluZF9sb2FkZXIsCisiZmluZF9sb2FkZXIoZnVsbG5hbWUsIHBhdGg9Tm9uZSkgLT4gc2VsZiwgc3RyIG9yIE5vbmUuXG5cCitcblwKK1NlYXJjaCBmb3IgYSBtb2R1bGUgc3BlY2lmaWVkIGJ5ICdmdWxsbmFtZScuICdmdWxsbmFtZScgbXVzdCBiZSB0aGVcblwKK2Z1bGx5IHF1YWxpZmllZCAoZG90dGVkKSBtb2R1bGUgbmFtZS4gSXQgcmV0dXJucyB0aGUgemlwaW1wb3J0ZXJcblwKK2luc3RhbmNlIGl0c2VsZiBpZiB0aGUgbW9kdWxlIHdhcyBmb3VuZCwgYSBzdHJpbmcgY29udGFpbmluZyB0aGVcblwKK2Z1bGwgcGF0aCBuYW1lIGlmIGl0J3MgcG9zc2libHkgYSBwb3J0aW9uIG9mIGEgbmFtZXNwYWNlIHBhY2thZ2UsXG5cCitvciBOb25lIG90aGVyd2lzZS4gVGhlIG9wdGlvbmFsICdwYXRoJyBhcmd1bWVudCBpcyBpZ25vcmVkIC0tIGl0J3NcblwKKyB0aGVyZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBpbXBvcnRlciBwcm90b2NvbC4iKTsKKwogUHlEb2NfU1RSVkFSKGRvY19sb2FkX21vZHVsZSwKICJsb2FkX21vZHVsZShmdWxsbmFtZSkgLT4gbW9kdWxlLlxuXAogXG5cCkBAIC01ODQsNiArNzI1LDggQEAKIHN0YXRpYyBQeU1ldGhvZERlZiB6aXBpbXBvcnRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJmaW5kX21vZHVsZSIsIHppcGltcG9ydGVyX2ZpbmRfbW9kdWxlLCBNRVRIX1ZBUkFSR1MsCiAgICAgIGRvY19maW5kX21vZHVsZX0sCisgICAgeyJmaW5kX2xvYWRlciIsIHppcGltcG9ydGVyX2ZpbmRfbG9hZGVyLCBNRVRIX1ZBUkFSR1MsCisgICAgIGRvY19maW5kX2xvYWRlcn0sCiAgICAgeyJsb2FkX21vZHVsZSIsIHppcGltcG9ydGVyX2xvYWRfbW9kdWxlLCBNRVRIX1ZBUkFSR1MsCiAgICAgIGRvY19sb2FkX21vZHVsZX0sCiAgICAgeyJnZXRfZGF0YSIsIHppcGltcG9ydGVyX2dldF9kYXRhLCBNRVRIX1ZBUkFSR1MsCkBAIC03MDgsNTUgKzg1MSw0NiBAQAogICAgZGF0YV9zaXplIGFuZCBmaWxlX29mZnNldCBhcmUgMC4KICovCiBzdGF0aWMgUHlPYmplY3QgKgotcmVhZF9kaXJlY3RvcnkoUHlPYmplY3QgKmFyY2hpdmVfb2JqKQorcmVhZF9kaXJlY3RvcnkoUHlPYmplY3QgKmFyY2hpdmUpCiB7Ci0gICAgLyogRklYTUU6IHdvcmsgb24gUHlfVU5JQ09ERSogaW5zdGVhZCBvZiBjaGFyKiAqLwogICAgIFB5T2JqZWN0ICpmaWxlcyA9IE5VTEw7CiAgICAgRklMRSAqZnA7CiAgICAgdW5zaWduZWQgc2hvcnQgZmxhZ3M7CiAgICAgc2hvcnQgY29tcHJlc3MsIHRpbWUsIGRhdGUsIG5hbWVfc2l6ZTsKICAgICBsb25nIGNyYywgZGF0YV9zaXplLCBmaWxlX3NpemUsIGhlYWRlcl9zaXplOwogICAgIFB5X3NzaXplX3QgZmlsZV9vZmZzZXQsIGhlYWRlcl9wb3NpdGlvbiwgaGVhZGVyX29mZnNldDsKLSAgICBsb25nIGksIGwsIGNvdW50OwotICAgIHNpemVfdCBsZW5ndGg7Ci0gICAgUHlfVU5JQ09ERSBwYXRoW01BWFBBVEhMRU4gKyA1XTsKKyAgICBsb25nIGwsIGNvdW50OworICAgIFB5X3NzaXplX3QgaTsKICAgICBjaGFyIG5hbWVbTUFYUEFUSExFTiArIDVdOwogICAgIFB5T2JqZWN0ICpuYW1lb2JqID0gTlVMTDsKICAgICBjaGFyICpwLCBlbmRvZl9jZW50cmFsX2RpclsyMl07CiAgICAgUHlfc3NpemVfdCBhcmNfb2Zmc2V0OyAgLyogQWJzb2x1dGUgb2Zmc2V0IHRvIHN0YXJ0IG9mIHRoZSB6aXAtYXJjaGl2ZS4gKi8KLSAgICBQeU9iamVjdCAqcGF0aG9iajsKKyAgICBQeU9iamVjdCAqcGF0aDsKICAgICBjb25zdCBjaGFyICpjaGFyc2V0OwogICAgIGludCBib290c3RyYXA7CiAKLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKGFyY2hpdmVfb2JqKSA+IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiWmlwIHBhdGggbmFtZSBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfVU5JQ09ERV9zdHJjcHkocGF0aCwgUHlVbmljb2RlX0FTX1VOSUNPREUoYXJjaGl2ZV9vYmopKTsKLQotICAgIGZwID0gX1B5X2ZvcGVuKGFyY2hpdmVfb2JqLCAicmIiKTsKKyAgICBmcCA9IF9QeV9mb3BlbihhcmNoaXZlLCAicmIiKTsKICAgICBpZiAoZnAgPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCBvcGVuIFppcCBmaWxlOiAnJVUnIiwgYXJjaGl2ZV9vYmopOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3Qgb3BlbiBaaXAgZmlsZTogJVIiLCBhcmNoaXZlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgaWYgKGZzZWVrKGZwLCAtMjIsIFNFRUtfRU5EKSA9PSAtMSkgewogICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCByZWFkIFppcCBmaWxlOiAlVSIsIGFyY2hpdmVfb2JqKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgcmVhZCBaaXAgZmlsZTogJVIiLCBhcmNoaXZlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGhlYWRlcl9wb3NpdGlvbiA9IGZ0ZWxsKGZwKTsKICAgICBpZiAoZnJlYWQoZW5kb2ZfY2VudHJhbF9kaXIsIDEsIDIyLCBmcCkgIT0gMjIpIHsKICAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgcmVhZCBaaXAgZmlsZTogJyVVJyIsIGFyY2hpdmVfb2JqKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgcmVhZCBaaXAgZmlsZTogJVIiLCBhcmNoaXZlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChnZXRfbG9uZygodW5zaWduZWQgY2hhciAqKWVuZG9mX2NlbnRyYWxfZGlyKSAhPSAweDA2MDU0QjUwKSB7CiAgICAgICAgIC8qIEJhZDogRW5kIG9mIENlbnRyYWwgRGlyIHNpZ25hdHVyZSAqLwogICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJub3QgYSBaaXAgZmlsZTogJyVVJyIsIGFyY2hpdmVfb2JqKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAibm90IGEgWmlwIGZpbGU6ICVSIiwgYXJjaGl2ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNzY5LDkgKzkwMyw2IEBACiAgICAgaWYgKGZpbGVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICBsZW5ndGggPSBQeV9VTklDT0RFX3N0cmxlbihwYXRoKTsKLSAgICBwYXRoW2xlbmd0aF0gPSBTRVA7Ci0KICAgICAvKiBTdGFydCBvZiBDZW50cmFsIERpcmVjdG9yeSAqLwogICAgIGNvdW50ID0gMDsKICAgICBmb3IgKDs7KSB7CkBAIC04MDMsNyArOTM0LDcgQEAKICAgICAgICAgICAgIG5hbWVfc2l6ZSA9IE1BWFBBVEhMRU47CiAKICAgICAgICAgcCA9IG5hbWU7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuYW1lX3NpemU7IGkrKykgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKFB5X3NzaXplX3QpbmFtZV9zaXplOyBpKyspIHsKICAgICAgICAgICAgICpwID0gKGNoYXIpZ2V0YyhmcCk7CiAgICAgICAgICAgICBpZiAoKnAgPT0gJy8nKQogICAgICAgICAgICAgICAgICpwID0gU0VQOwpAQCAtODM2LDEyICs5NjcsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgUFlfTUFKT1JfVkVSU0lPTiwgUFlfTUlOT1JfVkVSU0lPTik7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9Ci0gICAgICAgIFB5X1VOSUNPREVfc3RybmNweShwYXRoICsgbGVuZ3RoICsgMSwgUHlVbmljb2RlX0FTX1VOSUNPREUobmFtZW9iaiksIE1BWFBBVEhMRU4gLSBsZW5ndGggLSAxKTsKLQotICAgICAgICBwYXRob2JqID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHBhdGgsIFB5X1VOSUNPREVfc3RybGVuKHBhdGgpKTsKLSAgICAgICAgaWYgKHBhdGhvYmogPT0gTlVMTCkKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShuYW1lb2JqKSA9PSAtMSkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIHQgPSBQeV9CdWlsZFZhbHVlKCJOaGxsbmhobCIsIHBhdGhvYmosIGNvbXByZXNzLCBkYXRhX3NpemUsCisgICAgICAgIHBhdGggPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlYyVVIiwgYXJjaGl2ZSwgU0VQLCBuYW1lb2JqKTsKKyAgICAgICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHQgPSBQeV9CdWlsZFZhbHVlKCJOaGxsbmhobCIsIHBhdGgsIGNvbXByZXNzLCBkYXRhX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSwgZmlsZV9vZmZzZXQsIHRpbWUsIGRhdGUsIGNyYyk7CiAgICAgICAgIGlmICh0ID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtODU0LDE0ICs5ODUsMTQgQEAKICAgICB9CiAgICAgZmNsb3NlKGZwKTsKICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiIyB6aXBpbXBvcnQ6IGZvdW5kICVsZCBuYW1lcyBpbiAlVVxuIiwKLSAgICAgICAgICAgIGNvdW50LCBhcmNoaXZlX29iaik7CisgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiIyB6aXBpbXBvcnQ6IGZvdW5kICVsZCBuYW1lcyBpbiAlUlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCBhcmNoaXZlKTsKICAgICByZXR1cm4gZmlsZXM7CiBmc2Vla19lcnJvcjoKICAgICBmY2xvc2UoZnApOwogICAgIFB5X1hERUNSRUYoZmlsZXMpOwogICAgIFB5X1hERUNSRUYobmFtZW9iaik7Ci0gICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgcmVhZCBaaXAgZmlsZTogJVUiLCBhcmNoaXZlX29iaik7CisgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgcmVhZCBaaXAgZmlsZTogJVIiLCBhcmNoaXZlKTsKICAgICByZXR1cm4gTlVMTDsKIGVycm9yOgogICAgIGZjbG9zZShmcCk7CkBAIC04NzksNiArMTAxMCw3IEBACiAgICAgc3RhdGljIGludCBpbXBvcnRpbmdfemxpYiA9IDA7CiAgICAgUHlPYmplY3QgKnpsaWI7CiAgICAgUHlPYmplY3QgKmRlY29tcHJlc3M7CisgICAgX1B5X0lERU5USUZJRVIoZGVjb21wcmVzcyk7CiAKICAgICBpZiAoaW1wb3J0aW5nX3psaWIgIT0gMCkKICAgICAgICAgLyogU29tZW9uZSBoYXMgYSB6bGliLnB5W2NvXSBpbiB0aGVpciBaaXAgZmlsZTsKQEAgLTg4OCw4ICsxMDIwLDggQEAKICAgICB6bGliID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygiemxpYiIpOwogICAgIGltcG9ydGluZ196bGliID0gMDsKICAgICBpZiAoemxpYiAhPSBOVUxMKSB7Ci0gICAgICAgIGRlY29tcHJlc3MgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHpsaWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNvbXByZXNzIik7CisgICAgICAgIGRlY29tcHJlc3MgPSBfUHlPYmplY3RfR2V0QXR0cklkKHpsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX2RlY29tcHJlc3MpOwogICAgICAgICBQeV9ERUNSRUYoemxpYik7CiAgICAgfQogICAgIGVsc2UgewpAQCAtOTM0LDcgKzEwNjYsNyBAQAogICAgIC8qIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgbG9jYWwgZmlsZSBoZWFkZXIgaXMgY29ycmVjdCAqLwogICAgIGlmIChmc2VlayhmcCwgZmlsZV9vZmZzZXQsIDApID09IC0xKSB7CiAgICAgICAgIGZjbG9zZShmcCk7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IHJlYWQgWmlwIGZpbGU6ICVVIiwgYXJjaGl2ZSk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IHJlYWQgWmlwIGZpbGU6ICVSIiwgYXJjaGl2ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtOTQ5LDcgKzEwODEsNyBAQAogICAgIH0KICAgICBpZiAoZnNlZWsoZnAsIGZpbGVfb2Zmc2V0ICsgMjYsIDApID09IC0xKSB7CiAgICAgICAgIGZjbG9zZShmcCk7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IHJlYWQgWmlwIGZpbGU6ICVVIiwgYXJjaGl2ZSk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IHJlYWQgWmlwIGZpbGU6ICVSIiwgYXJjaGl2ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtOTczLDcgKzExMDUsNyBAQAogICAgICAgICBieXRlc19yZWFkID0gZnJlYWQoYnVmLCAxLCBkYXRhX3NpemUsIGZwKTsKICAgICB9IGVsc2UgewogICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCByZWFkIFppcCBmaWxlOiAlVSIsIGFyY2hpdmUpOworICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCByZWFkIFppcCBmaWxlOiAlUiIsIGFyY2hpdmUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZmNsb3NlKGZwKTsKQEAgLTEwMzAsNyArMTE2Miw3IEBACiAgICB0byAucHkgaWYgYXZhaWxhYmxlIGFuZCB3ZSBkb24ndCB3YW50IHRvIG1hc2sgb3RoZXIgZXJyb3JzKS4KICAgIFJldHVybnMgYSBuZXcgcmVmZXJlbmNlLiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLXVubWFyc2hhbF9jb2RlKGNoYXIgKnBhdGhuYW1lLCBQeU9iamVjdCAqZGF0YSwgdGltZV90IG10aW1lKQordW5tYXJzaGFsX2NvZGUoUHlPYmplY3QgKnBhdGhuYW1lLCBQeU9iamVjdCAqZGF0YSwgdGltZV90IG10aW1lKQogewogICAgIFB5T2JqZWN0ICpjb2RlOwogICAgIGNoYXIgKmJ1ZiA9IFB5Qnl0ZXNfQXNTdHJpbmcoZGF0YSk7CkBAIC0xMDQ0LDggKzExNzYsOCBAQAogCiAgICAgaWYgKGdldF9sb25nKCh1bnNpZ25lZCBjaGFyICopYnVmKSAhPSBQeUltcG9ydF9HZXRNYWdpY051bWJlcigpKSB7CiAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjICVzIGhhcyBiYWQgbWFnaWNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSk7CisgICAgICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoIiMgJVIgaGFzIGJhZCBtYWdpY1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSk7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7ICAvKiBzaWduYWwgY2FsbGVyIHRvIHRyeSBhbHRlcm5hdGl2ZSAqLwogICAgIH0KQEAgLTEwNTMsMTkgKzExODUsMjEgQEAKICAgICBpZiAobXRpbWUgIT0gMCAmJiAhZXFfbXRpbWUoZ2V0X2xvbmcoKHVuc2lnbmVkIGNoYXIgKilidWYgKyA0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRpbWUpKSB7CiAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjICVzIGhhcyBiYWQgbXRpbWVcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSk7CisgICAgICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoIiMgJVIgaGFzIGJhZCBtdGltZVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSk7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7ICAvKiBzaWduYWwgY2FsbGVyIHRvIHRyeSBhbHRlcm5hdGl2ZSAqLwogICAgIH0KIAotICAgIGNvZGUgPSBQeU1hcnNoYWxfUmVhZE9iamVjdEZyb21TdHJpbmcoYnVmICsgOCwgc2l6ZSAtIDgpOworICAgIC8qIFhYWCB0aGUgcHljJ3Mgc2l6ZSBmaWVsZCBpcyBpZ25vcmVkOyB0aW1lc3RhbXAgY29sbGlzaW9ucyBhcmUgcHJvYmFibHkKKyAgICAgICB1bmltcG9ydGFudCB3aXRoIHppcCBmaWxlcy4gKi8KKyAgICBjb2RlID0gUHlNYXJzaGFsX1JlYWRPYmplY3RGcm9tU3RyaW5nKGJ1ZiArIDEyLCBzaXplIC0gMTIpOwogICAgIGlmIChjb2RlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghUHlDb2RlX0NoZWNrKGNvZGUpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihjb2RlKTsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAiY29tcGlsZWQgbW9kdWxlICVzIGlzIG5vdCBhIGNvZGUgb2JqZWN0IiwKKyAgICAgICAgICAgICAiY29tcGlsZWQgbW9kdWxlICVSIGlzIG5vdCBhIGNvZGUgb2JqZWN0IiwKICAgICAgICAgICAgICBwYXRobmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEwNzksMTEgKzEyMTMsMTIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBub3JtYWxpemVfbGluZV9lbmRpbmdzKFB5T2JqZWN0ICpzb3VyY2UpCiB7Ci0gICAgY2hhciAqYnVmLCAqcSwgKnAgPSBQeUJ5dGVzX0FzU3RyaW5nKHNvdXJjZSk7CisgICAgY2hhciAqYnVmLCAqcSwgKnA7CiAgICAgUHlPYmplY3QgKmZpeGVkX3NvdXJjZTsKICAgICBpbnQgbGVuID0gMDsKIAotICAgIGlmICghcCkgeworICAgIHAgPSBQeUJ5dGVzX0FzU3RyaW5nKHNvdXJjZSk7CisgICAgaWYgKHAgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiXG5cMCIsIDIpOwogICAgIH0KIApAQCAtMTExNiwxNiArMTI1MSwyNCBAQAogLyogR2l2ZW4gYSBzdHJpbmcgYnVmZmVyIGNvbnRhaW5pbmcgUHl0aG9uIHNvdXJjZSBjb2RlLCBjb21waWxlIGl0CiAgICByZXR1cm4gYW5kIHJldHVybiBhIGNvZGUgb2JqZWN0IGFzIGEgbmV3IHJlZmVyZW5jZS4gKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1jb21waWxlX3NvdXJjZShjaGFyICpwYXRobmFtZSwgUHlPYmplY3QgKnNvdXJjZSkKK2NvbXBpbGVfc291cmNlKFB5T2JqZWN0ICpwYXRobmFtZSwgUHlPYmplY3QgKnNvdXJjZSkKIHsKLSAgICBQeU9iamVjdCAqY29kZSwgKmZpeGVkX3NvdXJjZTsKKyAgICBQeU9iamVjdCAqY29kZSwgKmZpeGVkX3NvdXJjZSwgKnBhdGhieXRlczsKIAotICAgIGZpeGVkX3NvdXJjZSA9IG5vcm1hbGl6ZV9saW5lX2VuZGluZ3Moc291cmNlKTsKLSAgICBpZiAoZml4ZWRfc291cmNlID09IE5VTEwpCisgICAgcGF0aGJ5dGVzID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChwYXRobmFtZSk7CisgICAgaWYgKHBhdGhieXRlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGNvZGUgPSBQeV9Db21waWxlU3RyaW5nKFB5Qnl0ZXNfQXNTdHJpbmcoZml4ZWRfc291cmNlKSwgcGF0aG5hbWUsCisgICAgZml4ZWRfc291cmNlID0gbm9ybWFsaXplX2xpbmVfZW5kaW5ncyhzb3VyY2UpOworICAgIGlmIChmaXhlZF9zb3VyY2UgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYocGF0aGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgY29kZSA9IFB5X0NvbXBpbGVTdHJpbmcoUHlCeXRlc19Bc1N0cmluZyhmaXhlZF9zb3VyY2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQXNTdHJpbmcocGF0aGJ5dGVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9maWxlX2lucHV0KTsKKyAgICBQeV9ERUNSRUYocGF0aGJ5dGVzKTsKICAgICBQeV9ERUNSRUYoZml4ZWRfc291cmNlKTsKICAgICByZXR1cm4gY29kZTsKIH0KQEAgLTExNTQsMTQgKzEyOTcsMjIgQEAKICAgIG1vZGlmaWNhdGlvbiB0aW1lIG9mIHRoZSBtYXRjaGluZyAucHkgZmlsZSwgb3IgMCBpZiBubyBzb3VyY2UKICAgIGlzIGF2YWlsYWJsZS4gKi8KIHN0YXRpYyB0aW1lX3QKLWdldF9tdGltZV9vZl9zb3VyY2UoWmlwSW1wb3J0ZXIgKnNlbGYsIGNoYXIgKnBhdGgpCitnZXRfbXRpbWVfb2Zfc291cmNlKFppcEltcG9ydGVyICpzZWxmLCBQeU9iamVjdCAqcGF0aCkKIHsKLSAgICBQeU9iamVjdCAqdG9jX2VudHJ5OwotICAgIHRpbWVfdCBtdGltZSA9IDA7Ci0gICAgUHlfc3NpemVfdCBsYXN0Y2hhciA9IHN0cmxlbihwYXRoKSAtIDE7Ci0gICAgY2hhciBzYXZlY2hhciA9IHBhdGhbbGFzdGNoYXJdOwotICAgIHBhdGhbbGFzdGNoYXJdID0gJ1wwJzsgIC8qIHN0cmlwICdjJyBvciAnbycgZnJvbSAqLnB5W2NvXSAqLwotICAgIHRvY19lbnRyeSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKHNlbGYtPmZpbGVzLCBwYXRoKTsKKyAgICBQeU9iamVjdCAqdG9jX2VudHJ5LCAqc3RyaXBwZWQ7CisgICAgdGltZV90IG10aW1lOworCisgICAgLyogc3RyaXAgJ2MnIG9yICdvJyBmcm9tICoucHlbY29dICovCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShwYXRoKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuICh0aW1lX3QpLTE7CisgICAgc3RyaXBwZWQgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV9LSU5EKHBhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfREFUQShwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgocGF0aCkgLSAxKTsKKyAgICBpZiAoc3RyaXBwZWQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuICh0aW1lX3QpLTE7CisKKyAgICB0b2NfZW50cnkgPSBQeURpY3RfR2V0SXRlbShzZWxmLT5maWxlcywgc3RyaXBwZWQpOworICAgIFB5X0RFQ1JFRihzdHJpcHBlZCk7CiAgICAgaWYgKHRvY19lbnRyeSAhPSBOVUxMICYmIFB5VHVwbGVfQ2hlY2sodG9jX2VudHJ5KSAmJgogICAgICAgICBQeVR1cGxlX1NpemUodG9jX2VudHJ5KSA9PSA4KSB7CiAgICAgICAgIC8qIGZldGNoIHRoZSB0aW1lIHN0YW1wIG9mIHRoZSAucHkgZmlsZSBmb3IgY29tcGFyaXNvbgpAQCAtMTE3MCw4ICsxMzIxLDggQEAKICAgICAgICAgdGltZSA9IFB5TG9uZ19Bc0xvbmcoUHlUdXBsZV9HZXRJdGVtKHRvY19lbnRyeSwgNSkpOwogICAgICAgICBkYXRlID0gUHlMb25nX0FzTG9uZyhQeVR1cGxlX0dldEl0ZW0odG9jX2VudHJ5LCA2KSk7CiAgICAgICAgIG10aW1lID0gcGFyc2VfZG9zdGltZSh0aW1lLCBkYXRlKTsKLSAgICB9Ci0gICAgcGF0aFtsYXN0Y2hhcl0gPSBzYXZlY2hhcjsKKyAgICB9IGVsc2UKKyAgICAgICAgbXRpbWUgPSAwOwogICAgIHJldHVybiBtdGltZTsKIH0KIApAQCAtMTE4MSwyNCArMTMzMiwxNyBAQAogZ2V0X2NvZGVfZnJvbV9kYXRhKFppcEltcG9ydGVyICpzZWxmLCBpbnQgaXNwYWNrYWdlLCBpbnQgaXNieXRlY29kZSwKICAgICAgICAgICAgICAgICAgICB0aW1lX3QgbXRpbWUsIFB5T2JqZWN0ICp0b2NfZW50cnkpCiB7Ci0gICAgUHlPYmplY3QgKmRhdGEsICpjb2RlOwotICAgIFB5T2JqZWN0ICptb2RwYXRoOworICAgIFB5T2JqZWN0ICpkYXRhLCAqbW9kcGF0aCwgKmNvZGU7CiAKICAgICBkYXRhID0gZ2V0X2RhdGEoc2VsZi0+YXJjaGl2ZSwgdG9jX2VudHJ5KTsKICAgICBpZiAoZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIG1vZHBhdGggPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KFB5VHVwbGVfR2V0SXRlbSh0b2NfZW50cnksIDApKTsKLSAgICBpZiAobW9kcGF0aCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihkYXRhKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCisgICAgbW9kcGF0aCA9IFB5VHVwbGVfR2V0SXRlbSh0b2NfZW50cnksIDApOwogICAgIGlmIChpc2J5dGVjb2RlKQotICAgICAgICBjb2RlID0gdW5tYXJzaGFsX2NvZGUoUHlCeXRlc19BU19TVFJJTkcobW9kcGF0aCksIGRhdGEsIG10aW1lKTsKKyAgICAgICAgY29kZSA9IHVubWFyc2hhbF9jb2RlKG1vZHBhdGgsIGRhdGEsIG10aW1lKTsKICAgICBlbHNlCi0gICAgICAgIGNvZGUgPSBjb21waWxlX3NvdXJjZShQeUJ5dGVzX0FTX1NUUklORyhtb2RwYXRoKSwgZGF0YSk7Ci0gICAgUHlfREVDUkVGKG1vZHBhdGgpOworICAgICAgICBjb2RlID0gY29tcGlsZV9zb3VyY2UobW9kcGF0aCwgZGF0YSk7CiAgICAgUHlfREVDUkVGKGRhdGEpOwogICAgIHJldHVybiBjb2RlOwogfQpAQCAtMTIwNiwzNSArMTM1MCw0NSBAQAogLyogR2V0IHRoZSBjb2RlIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIG1vZHVsZSBzcGVjaWZpZWQgYnkKICAgICdmdWxsbmFtZScuICovCiBzdGF0aWMgUHlPYmplY3QgKgotZ2V0X21vZHVsZV9jb2RlKFppcEltcG9ydGVyICpzZWxmLCBjaGFyICpmdWxsbmFtZSwKK2dldF9tb2R1bGVfY29kZShaaXBJbXBvcnRlciAqc2VsZiwgUHlPYmplY3QgKmZ1bGxuYW1lLAogICAgICAgICAgICAgICAgIGludCAqcF9pc3BhY2thZ2UsIFB5T2JqZWN0ICoqcF9tb2RwYXRoKQogewotICAgIFB5T2JqZWN0ICp0b2NfZW50cnk7Ci0gICAgY2hhciAqc3VibmFtZSwgcGF0aFtNQVhQQVRITEVOICsgMV07Ci0gICAgaW50IGxlbjsKKyAgICBQeU9iamVjdCAqY29kZSA9IE5VTEwsICp0b2NfZW50cnksICpzdWJuYW1lOworICAgIFB5T2JqZWN0ICpwYXRoLCAqZnVsbHBhdGggPSBOVUxMOwogICAgIHN0cnVjdCBzdF96aXBfc2VhcmNob3JkZXIgKnpzbzsKIAogICAgIHN1Ym5hbWUgPSBnZXRfc3VibmFtZShmdWxsbmFtZSk7CisgICAgaWYgKHN1Ym5hbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBsZW4gPSBtYWtlX2ZpbGVuYW1lKHNlbGYtPnByZWZpeCwgc3VibmFtZSwgcGF0aCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBpZiAobGVuIDwgMCkKKyAgICBwYXRoID0gbWFrZV9maWxlbmFtZShzZWxmLT5wcmVmaXgsIHN1Ym5hbWUpOworICAgIFB5X0RFQ1JFRihzdWJuYW1lKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGZvciAoenNvID0gemlwX3NlYXJjaG9yZGVyOyAqenNvLT5zdWZmaXg7IHpzbysrKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpjb2RlID0gTlVMTDsKKyAgICAgICAgY29kZSA9IE5VTEw7CiAKLSAgICAgICAgc3RyY3B5KHBhdGggKyBsZW4sIHpzby0+c3VmZml4KTsKKyAgICAgICAgZnVsbHBhdGggPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlcyIsIHBhdGgsIHpzby0+c3VmZml4KTsKKyAgICAgICAgaWYgKGZ1bGxwYXRoID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGV4aXQ7CisKICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnID4gMSkKLSAgICAgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiIyB0cnlpbmcgJVUlYyVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFyY2hpdmUsIChpbnQpU0VQLCBwYXRoKTsKLSAgICAgICAgdG9jX2VudHJ5ID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoc2VsZi0+ZmlsZXMsIHBhdGgpOworICAgICAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCIjIHRyeWluZyAlVSVjJVVcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+YXJjaGl2ZSwgKGludClTRVAsIGZ1bGxwYXRoKTsKKyAgICAgICAgdG9jX2VudHJ5ID0gUHlEaWN0X0dldEl0ZW0oc2VsZi0+ZmlsZXMsIGZ1bGxwYXRoKTsKICAgICAgICAgaWYgKHRvY19lbnRyeSAhPSBOVUxMKSB7CiAgICAgICAgICAgICB0aW1lX3QgbXRpbWUgPSAwOwogICAgICAgICAgICAgaW50IGlzcGFja2FnZSA9IHpzby0+dHlwZSAmIElTX1BBQ0tBR0U7CiAgICAgICAgICAgICBpbnQgaXNieXRlY29kZSA9IHpzby0+dHlwZSAmIElTX0JZVEVDT0RFOwogCi0gICAgICAgICAgICBpZiAoaXNieXRlY29kZSkKLSAgICAgICAgICAgICAgICBtdGltZSA9IGdldF9tdGltZV9vZl9zb3VyY2Uoc2VsZiwgcGF0aCk7CisgICAgICAgICAgICBpZiAoaXNieXRlY29kZSkgeworICAgICAgICAgICAgICAgIG10aW1lID0gZ2V0X210aW1lX29mX3NvdXJjZShzZWxmLCBmdWxscGF0aCk7CisgICAgICAgICAgICAgICAgaWYgKG10aW1lID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfQ0xFQVIoZnVsbHBhdGgpOwogICAgICAgICAgICAgaWYgKHBfaXNwYWNrYWdlICE9IE5VTEwpCiAgICAgICAgICAgICAgICAgKnBfaXNwYWNrYWdlID0gaXNwYWNrYWdlOwogICAgICAgICAgICAgY29kZSA9IGdldF9jb2RlX2Zyb21fZGF0YShzZWxmLCBpc3BhY2thZ2UsCkBAIC0xMjUwLDExICsxNDA0LDE2IEBACiAgICAgICAgICAgICAgICAgKnBfbW9kcGF0aCA9IFB5VHVwbGVfR2V0SXRlbSh0b2NfZW50cnksIDApOwogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRigqcF9tb2RwYXRoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBjb2RlOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5X0NMRUFSKGZ1bGxwYXRoKTsKICAgICB9Ci0gICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgZmluZCBtb2R1bGUgJyVzJyIsIGZ1bGxuYW1lKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCBmaW5kIG1vZHVsZSAlUiIsIGZ1bGxuYW1lKTsKK2V4aXQ6CisgICAgUHlfREVDUkVGKHBhdGgpOworICAgIFB5X1hERUNSRUYoZnVsbHBhdGgpOworICAgIHJldHVybiBjb2RlOwogfQogCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvemxpYm1vZHVsZS5jIGIvTW9kdWxlcy96bGlibW9kdWxlLmMKaW5kZXggYmI0NTNhZS4uZTcxODc5NSAxMDA2NDQKLS0tIGEvTW9kdWxlcy96bGlibW9kdWxlLmMKKysrIGIvTW9kdWxlcy96bGlibW9kdWxlLmMKQEAgLTQzLDcgKzQzLDkgQEAKICAgICB6X3N0cmVhbSB6c3Q7CiAgICAgUHlPYmplY3QgKnVudXNlZF9kYXRhOwogICAgIFB5T2JqZWN0ICp1bmNvbnN1bWVkX3RhaWw7CisgICAgY2hhciBlb2Y7CiAgICAgaW50IGlzX2luaXRpYWxpc2VkOworICAgIFB5T2JqZWN0ICp6ZGljdDsKICAgICAjaWZkZWYgV0lUSF9USFJFQUQKICAgICAgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CiAgICAgI2VuZGlmCkBAIC03OSwxNCArODEsMzQgQEAKIH0KIAogUHlEb2NfU1RSVkFSKGNvbXByZXNzb2JqX19kb2NfXywKLSJjb21wcmVzc29iaihbbGV2ZWxdKSAtLSBSZXR1cm4gYSBjb21wcmVzc29yIG9iamVjdC5cbiIKKyJjb21wcmVzc29iaihsZXZlbD0tMSwgbWV0aG9kPURFRkxBVEVELCB3Yml0cz0xNSwgbWVtbGV2ZWw9OCxcbiIKKyIgICAgICAgICAgICBzdHJhdGVneT1aX0RFRkFVTFRfU1RSQVRFR1lbLCB6ZGljdF0pXG4iCisiIC0tIFJldHVybiBhIGNvbXByZXNzb3Igb2JqZWN0LlxuIgogIlxuIgotIk9wdGlvbmFsIGFyZyBsZXZlbCBpcyB0aGUgY29tcHJlc3Npb24gbGV2ZWwsIGluIDAtOS4iKTsKKyJsZXZlbCBpcyB0aGUgY29tcHJlc3Npb24gbGV2ZWwgKGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIDAtOTsgZGVmYXVsdCBpcyA2KS5cbiIKKyJIaWdoZXIgY29tcHJlc3Npb24gbGV2ZWxzIGFyZSBzbG93ZXIsIGJ1dCBwcm9kdWNlIHNtYWxsZXIgcmVzdWx0cy5cbiIKKyJcbiIKKyJtZXRob2QgaXMgdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobS4gSWYgZ2l2ZW4sIHRoaXMgbXVzdCBiZSBERUZMQVRFRC5cbiIKKyJcbiIKKyJ3Yml0cyBpcyB0aGUgYmFzZSB0d28gbG9nYXJpdGhtIG9mIHRoZSB3aW5kb3cgc2l6ZSAocmFuZ2U6IDguLjE1KS5cbiIKKyJcbiIKKyJtZW1sZXZlbCBjb250cm9scyB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2VkIGZvciBpbnRlcm5hbCBjb21wcmVzc2lvbiBzdGF0ZS5cbiIKKyJWYWxpZCB2YWx1ZXMgcmFuZ2UgZnJvbSAxIHRvIDkuIEhpZ2hlciB2YWx1ZXMgcmVzdWx0IGluIGhpZ2hlciBtZW1vcnkgdXNhZ2UsXG4iCisiZmFzdGVyIGNvbXByZXNzaW9uLCBhbmQgc21hbGxlciBvdXRwdXQuXG4iCisiXG4iCisic3RyYXRlZ3kgaXMgdXNlZCB0byB0dW5lIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0uIFBvc3NpYmxlIHZhbHVlcyBhcmVcbiIKKyJaX0RFRkFVTFRfU1RSQVRFR1ksIFpfRklMVEVSRUQsIGFuZCBaX0hVRkZNQU5fT05MWS5cbiIKKyJcbiIKKyJ6ZGljdCBpcyB0aGUgcHJlZGVmaW5lZCBjb21wcmVzc2lvbiBkaWN0aW9uYXJ5IC0gYSBzZXF1ZW5jZSBvZiBieXRlc1xuIgorImNvbnRhaW5pbmcgc3Vic2VxdWVuY2VzIHRoYXQgYXJlIGxpa2VseSB0byBvY2N1ciBpbiB0aGUgaW5wdXQgZGF0YS4iKTsKIAogUHlEb2NfU1RSVkFSKGRlY29tcHJlc3NvYmpfX2RvY19fLAotImRlY29tcHJlc3NvYmooW3diaXRzXSkgLS0gUmV0dXJuIGEgZGVjb21wcmVzc29yIG9iamVjdC5cbiIKKyJkZWNvbXByZXNzb2JqKFt3Yml0c1ssIHpkaWN0XV0pIC0tIFJldHVybiBhIGRlY29tcHJlc3NvciBvYmplY3QuXG4iCiAiXG4iCi0iT3B0aW9uYWwgYXJnIHdiaXRzIGlzIHRoZSB3aW5kb3cgYnVmZmVyIHNpemUuIik7CisiT3B0aW9uYWwgYXJnIHdiaXRzIGlzIHRoZSB3aW5kb3cgYnVmZmVyIHNpemUuXG4iCisiXG4iCisiT3B0aW9uYWwgYXJnIHpkaWN0IGlzIHRoZSBwcmVkZWZpbmVkIGNvbXByZXNzaW9uIGRpY3Rpb25hcnkuIFRoaXMgbXVzdCBiZVxuIgorInRoZSBzYW1lIGRpY3Rpb25hcnkgYXMgdXNlZCBieSB0aGUgY29tcHJlc3NvciB0aGF0IHByb2R1Y2VkIHRoZSBpbnB1dCBkYXRhLiIpOwogCiBzdGF0aWMgY29tcG9iamVjdCAqCiBuZXdjb21wb2JqZWN0KFB5VHlwZU9iamVjdCAqdHlwZSkKQEAgLTk1LDcgKzExNyw5IEBACiAgICAgc2VsZiA9IFB5T2JqZWN0X05ldyhjb21wb2JqZWN0LCB0eXBlKTsKICAgICBpZiAoc2VsZiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBzZWxmLT5lb2YgPSAwOwogICAgIHNlbGYtPmlzX2luaXRpYWxpc2VkID0gMDsKKyAgICBzZWxmLT56ZGljdCA9IE5VTEw7CiAgICAgc2VsZi0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKICAgICBpZiAoc2VsZi0+dW51c2VkX2RhdGEgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoc2VsZik7CkBAIC0yOTcsNyArMzIxLDcgQEAKIAogICAgIGVyciA9IGluZmxhdGVFbmQoJnpzdCk7CiAgICAgaWYgKGVyciAhPSBaX09LKSB7Ci0gICAgICAgIHpsaWJfZXJyb3IoenN0LCBlcnIsICJ3aGlsZSBmaW5pc2hpbmcgZGF0YSBkZWNvbXByZXNzaW9uIik7CisgICAgICAgIHpsaWJfZXJyb3IoenN0LCBlcnIsICJ3aGlsZSBmaW5pc2hpbmcgZGVjb21wcmVzc2lvbiIpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIApAQCAtMzE0LDE5ICszMzgsMjQgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLVB5WmxpYl9jb21wcmVzc29iaihQeU9iamVjdCAqc2VsZnB0ciwgUHlPYmplY3QgKmFyZ3MpCitQeVpsaWJfY29tcHJlc3NvYmooUHlPYmplY3QgKnNlbGZwdHIsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGNvbXBvYmplY3QgKnNlbGY7CiAgICAgaW50IGxldmVsPVpfREVGQVVMVF9DT01QUkVTU0lPTiwgbWV0aG9kPURFRkxBVEVEOwogICAgIGludCB3Yml0cz1NQVhfV0JJVFMsIG1lbUxldmVsPURFRl9NRU1fTEVWRUwsIHN0cmF0ZWd5PTAsIGVycjsKKyAgICBQeV9idWZmZXIgemRpY3Q7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJsZXZlbCIsICJtZXRob2QiLCAid2JpdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtTGV2ZWwiLCAic3RyYXRlZ3kiLCAiemRpY3QiLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGlpaWlpOmNvbXByZXNzb2JqIiwgJmxldmVsLCAmbWV0aG9kLCAmd2JpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZtZW1MZXZlbCwgJnN0cmF0ZWd5KSkKKyAgICB6ZGljdC5idWYgPSBOVUxMOyAvKiBTZW50aW5lbCwgc28gd2UgY2FuIHRlbGwgd2hldGhlciB6ZGljdCB3YXMgc3VwcGxpZWQuICovCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGlpaWlpeSo6Y29tcHJlc3NvYmoiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmxldmVsLCAmbWV0aG9kLCAmd2JpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1lbUxldmVsLCAmc3RyYXRlZ3ksICZ6ZGljdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc2VsZiA9IG5ld2NvbXBvYmplY3QoJkNvbXB0eXBlKTsKICAgICBpZiAoc2VsZj09TlVMTCkKLSAgICAgICAgcmV0dXJuKE5VTEwpOworICAgICAgICBnb3RvIGVycm9yOwogICAgIHNlbGYtPnpzdC56YWxsb2MgPSAoYWxsb2NfZnVuYylOVUxMOwogICAgIHNlbGYtPnpzdC56ZnJlZSA9IChmcmVlX2Z1bmMpWl9OVUxMOwogICAgIHNlbGYtPnpzdC5uZXh0X2luID0gTlVMTDsKQEAgLTMzNSwzMCArMzY0LDU4IEBACiAgICAgc3dpdGNoKGVycikgewogICAgIGNhc2UgKFpfT0spOgogICAgICAgICBzZWxmLT5pc19pbml0aWFsaXNlZCA9IDE7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKXNlbGY7CisgICAgICAgIGlmICh6ZGljdC5idWYgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBzdWNjZXNzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJyID0gZGVmbGF0ZVNldERpY3Rpb25hcnkoJnNlbGYtPnpzdCwgemRpY3QuYnVmLCB6ZGljdC5sZW4pOworICAgICAgICAgICAgc3dpdGNoIChlcnIpIHsKKyAgICAgICAgICAgIGNhc2UgKFpfT0spOgorICAgICAgICAgICAgICAgIGdvdG8gc3VjY2VzczsKKyAgICAgICAgICAgIGNhc2UgKFpfU1RSRUFNX0VSUk9SKToKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkludmFsaWQgZGljdGlvbmFyeSIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZGVmbGF0ZVNldERpY3Rpb25hcnkoKSIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgfQogICAgIGNhc2UgKFpfTUVNX0VSUk9SKToKLSAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBjb21wcmVzc2lvbiBvYmplY3QiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgY2FzZShaX1NUUkVBTV9FUlJPUik6Ci0gICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbnZhbGlkIGluaXRpYWxpemF0aW9uIG9wdGlvbiIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICBkZWZhdWx0OgogICAgICAgICB6bGliX2Vycm9yKHNlbGYtPnpzdCwgZXJyLCAid2hpbGUgY3JlYXRpbmcgY29tcHJlc3Npb24gb2JqZWN0Iik7Ci0gICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQorCisgZXJyb3I6CisgICAgUHlfWERFQ1JFRihzZWxmKTsKKyAgICBzZWxmID0gTlVMTDsKKyBzdWNjZXNzOgorICAgIGlmICh6ZGljdC5idWYgIT0gTlVMTCkKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmemRpY3QpOworICAgIHJldHVybiAoUHlPYmplY3QqKXNlbGY7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVpsaWJfZGVjb21wcmVzc29iaihQeU9iamVjdCAqc2VsZnB0ciwgUHlPYmplY3QgKmFyZ3MpCitQeVpsaWJfZGVjb21wcmVzc29iaihQeU9iamVjdCAqc2VsZnB0ciwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJ3Yml0cyIsICJ6ZGljdCIsIE5VTEx9OwogICAgIGludCB3Yml0cz1ERUZfV0JJVFMsIGVycjsKICAgICBjb21wb2JqZWN0ICpzZWxmOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6ZGVjb21wcmVzc29iaiIsICZ3Yml0cykpCisgICAgUHlPYmplY3QgKnpkaWN0PU5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aU86ZGVjb21wcmVzc29iaiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmd2JpdHMsICZ6ZGljdCkpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICh6ZGljdCAhPSBOVUxMICYmICFQeU9iamVjdF9DaGVja0J1ZmZlcih6ZGljdCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ6ZGljdCBhcmd1bWVudCBtdXN0IHN1cHBvcnQgdGhlIGJ1ZmZlciBwcm90b2NvbCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICBzZWxmID0gbmV3Y29tcG9iamVjdCgmRGVjb21wdHlwZSk7CiAgICAgaWYgKHNlbGYgPT0gTlVMTCkKQEAgLTM2Nyw2ICs0MjQsMTAgQEAKICAgICBzZWxmLT56c3QuemZyZWUgPSAoZnJlZV9mdW5jKVpfTlVMTDsKICAgICBzZWxmLT56c3QubmV4dF9pbiA9IE5VTEw7CiAgICAgc2VsZi0+enN0LmF2YWlsX2luID0gMDsKKyAgICBpZiAoemRpY3QgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoemRpY3QpOworICAgICAgICBzZWxmLT56ZGljdCA9IHpkaWN0OworICAgIH0KICAgICBlcnIgPSBpbmZsYXRlSW5pdDIoJnNlbGYtPnpzdCwgd2JpdHMpOwogICAgIHN3aXRjaChlcnIpIHsKICAgICBjYXNlIChaX09LKToKQEAgLTM5Niw2ICs0NTcsNyBAQAogI2VuZGlmCiAgICAgUHlfWERFQ1JFRihzZWxmLT51bnVzZWRfZGF0YSk7CiAgICAgUHlfWERFQ1JFRihzZWxmLT51bmNvbnN1bWVkX3RhaWwpOworICAgIFB5X1hERUNSRUYoc2VsZi0+emRpY3QpOwogICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKIH0KIApAQCAtNDgyLDcgKzU0NCw3IEBACiAgICAgKi8KIAogICAgIGlmIChlcnIgIT0gWl9PSyAmJiBlcnIgIT0gWl9CVUZfRVJST1IpIHsKLSAgICAgICAgemxpYl9lcnJvcihzZWxmLT56c3QsIGVyciwgIndoaWxlIGNvbXByZXNzaW5nIik7CisgICAgICAgIHpsaWJfZXJyb3Ioc2VsZi0+enN0LCBlcnIsICJ3aGlsZSBjb21wcmVzc2luZyBkYXRhIik7CiAgICAgICAgIFB5X0RFQ1JFRihSZXRWYWwpOwogICAgICAgICBSZXRWYWwgPSBOVUxMOwogICAgICAgICBnb3RvIGVycm9yOwpAQCAtNTk4LDYgKzY2MCwyNyBAQAogICAgIGVyciA9IGluZmxhdGUoJihzZWxmLT56c3QpLCBaX1NZTkNfRkxVU0gpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKKyAgICBpZiAoZXJyID09IFpfTkVFRF9ESUNUICYmIHNlbGYtPnpkaWN0ICE9IE5VTEwpIHsKKyAgICAgICAgUHlfYnVmZmVyIHpkaWN0X2J1ZjsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzZWxmLT56ZGljdCwgJnpkaWN0X2J1ZiwgUHlCVUZfU0lNUExFKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKFJldFZhbCk7CisgICAgICAgICAgICBSZXRWYWwgPSBOVUxMOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBlcnIgPSBpbmZsYXRlU2V0RGljdGlvbmFyeSgmKHNlbGYtPnpzdCksIHpkaWN0X2J1Zi5idWYsIHpkaWN0X2J1Zi5sZW4pOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ6ZGljdF9idWYpOworICAgICAgICBpZiAoZXJyICE9IFpfT0spIHsKKyAgICAgICAgICAgIHpsaWJfZXJyb3Ioc2VsZi0+enN0LCBlcnIsICJ3aGlsZSBkZWNvbXByZXNzaW5nIGRhdGEiKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihSZXRWYWwpOworICAgICAgICAgICAgUmV0VmFsID0gTlVMTDsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgLyogUmVwZWF0IHRoZSBjYWxsIHRvIGluZmxhdGUuICovCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZXJyID0gaW5mbGF0ZSgmKHNlbGYtPnpzdCksIFpfU1lOQ19GTFVTSCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfQorCiAgICAgLyogV2hpbGUgWl9PSyBhbmQgdGhlIG91dHB1dCBidWZmZXIgaXMgZnVsbCwgdGhlcmUgbWlnaHQgYmUgbW9yZSBvdXRwdXQuCiAgICAgICAgU28gZXh0ZW5kIHRoZSBvdXRwdXQgYnVmZmVyIGFuZCB0cnkgYWdhaW4uCiAgICAgKi8KQEAgLTYzNCwxNSArNzE3LDE2IEBACiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCi0gICAgLyogVGhpcyBpcyB0aGUgbG9naWNhbCBwbGFjZSB0byBjYWxsIGluZmxhdGVFbmQsIGJ1dCB0aGUgb2xkIGJlaGF2aW91ciBvZgotICAgICAgIG9ubHkgY2FsbGluZyBpdCBvbiBmbHVzaCgpIGlzIHByZXNlcnZlZC4gKi8KLQotICAgIGlmIChlcnIgIT0gWl9TVFJFQU1fRU5EICYmIGVyciAhPSBaX09LICYmIGVyciAhPSBaX0JVRl9FUlJPUikgeworICAgIGlmIChlcnIgPT0gWl9TVFJFQU1fRU5EKSB7CisgICAgICAgIC8qIFRoaXMgaXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gY2FsbCBpbmZsYXRlRW5kLCBidXQgdGhlIG9sZCBiZWhhdmlvdXIKKyAgICAgICAgICAgb2Ygb25seSBjYWxsaW5nIGl0IG9uIGZsdXNoKCkgaXMgcHJlc2VydmVkLiAqLworICAgICAgICBzZWxmLT5lb2YgPSAxOworICAgIH0gZWxzZSBpZiAoZXJyICE9IFpfT0sgJiYgZXJyICE9IFpfQlVGX0VSUk9SKSB7CiAgICAgICAgIC8qIFdlIHdpbGwgb25seSBnZXQgWl9CVUZfRVJST1IgaWYgdGhlIG91dHB1dCBidWZmZXIgd2FzIGZ1bGwKICAgICAgICAgICAgYnV0IHRoZXJlIHdhc24ndCBtb3JlIG91dHB1dCB3aGVuIHdlIHRyaWVkIGFnYWluLCBzbyBpdCBpcwogICAgICAgICAgICBub3QgYW4gZXJyb3IgY29uZGl0aW9uLgogICAgICAgICAqLwotICAgICAgICB6bGliX2Vycm9yKHNlbGYtPnpzdCwgZXJyLCAid2hpbGUgZGVjb21wcmVzc2luZyIpOworICAgICAgICB6bGliX2Vycm9yKHNlbGYtPnpzdCwgZXJyLCAid2hpbGUgZGVjb21wcmVzc2luZyBkYXRhIik7CiAgICAgICAgIFB5X0RFQ1JFRihSZXRWYWwpOwogICAgICAgICBSZXRWYWwgPSBOVUxMOwogICAgICAgICBnb3RvIGVycm9yOwpAQCAtNzIzLDcgKzgwNyw3IEBACiAgICAgaWYgKGVyciA9PSBaX1NUUkVBTV9FTkQgJiYgZmx1c2htb2RlID09IFpfRklOSVNIKSB7CiAgICAgICAgIGVyciA9IGRlZmxhdGVFbmQoJihzZWxmLT56c3QpKTsKICAgICAgICAgaWYgKGVyciAhPSBaX09LKSB7Ci0gICAgICAgICAgICB6bGliX2Vycm9yKHNlbGYtPnpzdCwgZXJyLCAiZnJvbSBkZWZsYXRlRW5kKCkiKTsKKyAgICAgICAgICAgIHpsaWJfZXJyb3Ioc2VsZi0+enN0LCBlcnIsICJ3aGlsZSBmaW5pc2hpbmcgY29tcHJlc3Npb24iKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihSZXRWYWwpOwogICAgICAgICAgICAgUmV0VmFsID0gTlVMTDsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC03ODcsMTAgKzg3MSwxNCBAQAogICAgIH0KICAgICBQeV9JTkNSRUYoc2VsZi0+dW51c2VkX2RhdGEpOwogICAgIFB5X0lOQ1JFRihzZWxmLT51bmNvbnN1bWVkX3RhaWwpOworICAgIFB5X1hJTkNSRUYoc2VsZi0+emRpY3QpOwogICAgIFB5X1hERUNSRUYocmV0dmFsLT51bnVzZWRfZGF0YSk7CiAgICAgUHlfWERFQ1JFRihyZXR2YWwtPnVuY29uc3VtZWRfdGFpbCk7CisgICAgUHlfWERFQ1JFRihyZXR2YWwtPnpkaWN0KTsKICAgICByZXR2YWwtPnVudXNlZF9kYXRhID0gc2VsZi0+dW51c2VkX2RhdGE7CiAgICAgcmV0dmFsLT51bmNvbnN1bWVkX3RhaWwgPSBzZWxmLT51bmNvbnN1bWVkX3RhaWw7CisgICAgcmV0dmFsLT56ZGljdCA9IHNlbGYtPnpkaWN0OworICAgIHJldHZhbC0+ZW9mID0gc2VsZi0+ZW9mOwogCiAgICAgLyogTWFyayBpdCBhcyBiZWluZyBpbml0aWFsaXplZCAqLwogICAgIHJldHZhbC0+aXNfaW5pdGlhbGlzZWQgPSAxOwpAQCAtODM4LDEwICs5MjYsMTQgQEAKIAogICAgIFB5X0lOQ1JFRihzZWxmLT51bnVzZWRfZGF0YSk7CiAgICAgUHlfSU5DUkVGKHNlbGYtPnVuY29uc3VtZWRfdGFpbCk7CisgICAgUHlfWElOQ1JFRihzZWxmLT56ZGljdCk7CiAgICAgUHlfWERFQ1JFRihyZXR2YWwtPnVudXNlZF9kYXRhKTsKICAgICBQeV9YREVDUkVGKHJldHZhbC0+dW5jb25zdW1lZF90YWlsKTsKKyAgICBQeV9YREVDUkVGKHJldHZhbC0+emRpY3QpOwogICAgIHJldHZhbC0+dW51c2VkX2RhdGEgPSBzZWxmLT51bnVzZWRfZGF0YTsKICAgICByZXR2YWwtPnVuY29uc3VtZWRfdGFpbCA9IHNlbGYtPnVuY29uc3VtZWRfdGFpbDsKKyAgICByZXR2YWwtPnpkaWN0ID0gc2VsZi0+emRpY3Q7CisgICAgcmV0dmFsLT5lb2YgPSBzZWxmLT5lb2Y7CiAKICAgICAvKiBNYXJrIGl0IGFzIGJlaW5nIGluaXRpYWxpemVkICovCiAgICAgcmV0dmFsLT5pc19pbml0aWFsaXNlZCA9IDE7CkBAIC05MTUsMTQgKzEwMDcsMTMgQEAKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICAvKiBJZiBmbHVzaG1vZGUgaXMgWl9GSU5JU0gsIHdlIGFsc28gaGF2ZSB0byBjYWxsIGRlZmxhdGVFbmQoKSB0byBmcmVlCi0gICAgICAgdmFyaW91cyBkYXRhIHN0cnVjdHVyZXMuIE5vdGUgd2Ugc2hvdWxkIG9ubHkgZ2V0IFpfU1RSRUFNX0VORCB3aGVuCi0gICAgICAgZmx1c2htb2RlIGlzIFpfRklOSVNIICovCisgICAgLyogSWYgYXQgZW5kIG9mIHN0cmVhbSwgY2xlYW4gdXAgYW55IG1lbW9yeSBhbGxvY2F0ZWQgYnkgemxpYi4gKi8KICAgICBpZiAoZXJyID09IFpfU1RSRUFNX0VORCkgewotICAgICAgICBlcnIgPSBpbmZsYXRlRW5kKCYoc2VsZi0+enN0KSk7CisgICAgICAgIHNlbGYtPmVvZiA9IDE7CiAgICAgICAgIHNlbGYtPmlzX2luaXRpYWxpc2VkID0gMDsKKyAgICAgICAgZXJyID0gaW5mbGF0ZUVuZCgmKHNlbGYtPnpzdCkpOwogICAgICAgICBpZiAoZXJyICE9IFpfT0spIHsKLSAgICAgICAgICAgIHpsaWJfZXJyb3Ioc2VsZi0+enN0LCBlcnIsICJmcm9tIGluZmxhdGVFbmQoKSIpOworICAgICAgICAgICAgemxpYl9lcnJvcihzZWxmLT56c3QsIGVyciwgIndoaWxlIGZpbmlzaGluZyBkZWNvbXByZXNzaW9uIik7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKICAgICAgICAgICAgIHJldHZhbCA9IE5VTEw7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtOTcxLDYgKzEwNjIsNyBAQAogc3RhdGljIFB5TWVtYmVyRGVmIERlY29tcF9tZW1iZXJzW10gPSB7CiAgICAgeyJ1bnVzZWRfZGF0YSIsICAgICBUX09CSkVDVCwgQ09NUF9PRkYodW51c2VkX2RhdGEpLCBSRUFET05MWX0sCiAgICAgeyJ1bmNvbnN1bWVkX3RhaWwiLCBUX09CSkVDVCwgQ09NUF9PRkYodW5jb25zdW1lZF90YWlsKSwgUkVBRE9OTFl9LAorICAgIHsiZW9mIiwgICAgICAgICAgICAgVF9CT09MLCAgIENPTVBfT0ZGKGVvZiksIFJFQURPTkxZfSwKICAgICB7TlVMTH0sCiB9OwogCkBAIC0xMDU2LDEzICsxMTQ4LDEzIEBACiAgICAgICAgICAgICAgICAgYWRsZXIzMl9fZG9jX199LAogICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pUHlabGliX2NvbXByZXNzLCAgTUVUSF9WQVJBUkdTLAogICAgICAgICAgICAgICAgICBjb21wcmVzc19fZG9jX199LAotICAgIHsiY29tcHJlc3NvYmoiLCAoUHlDRnVuY3Rpb24pUHlabGliX2NvbXByZXNzb2JqLCBNRVRIX1ZBUkFSR1MsCisgICAgeyJjb21wcmVzc29iaiIsIChQeUNGdW5jdGlvbilQeVpsaWJfY29tcHJlc3NvYmosIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAogICAgICAgICAgICAgICAgICAgICBjb21wcmVzc29ial9fZG9jX199LAogICAgIHsiY3JjMzIiLCAoUHlDRnVuY3Rpb24pUHlabGliX2NyYzMyLCBNRVRIX1ZBUkFSR1MsCiAgICAgICAgICAgICAgIGNyYzMyX19kb2NfX30sCiAgICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKVB5WmxpYl9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1MsCiAgICAgICAgICAgICAgICAgICAgZGVjb21wcmVzc19fZG9jX199LAotICAgIHsiZGVjb21wcmVzc29iaiIsIChQeUNGdW5jdGlvbilQeVpsaWJfZGVjb21wcmVzc29iaiwgTUVUSF9WQVJBUkdTLAorICAgIHsiZGVjb21wcmVzc29iaiIsIChQeUNGdW5jdGlvbilQeVpsaWJfZGVjb21wcmVzc29iaiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCiAgICAgICAgICAgICAgICAgICAgZGVjb21wcmVzc29ial9fZG9jX199LAogICAgIHtOVUxMLCBOVUxMfQogfTsKQEAgLTExMzYsMTAgKzEyMjgsMTAgQEAKICJcbiIKICJhZGxlcjMyKHN0cmluZ1ssIHN0YXJ0XSkgLS0gQ29tcHV0ZSBhbiBBZGxlci0zMiBjaGVja3N1bS5cbiIKICJjb21wcmVzcyhzdHJpbmdbLCBsZXZlbF0pIC0tIENvbXByZXNzIHN0cmluZywgd2l0aCBjb21wcmVzc2lvbiBsZXZlbCBpbiAwLTkuXG4iCi0iY29tcHJlc3NvYmooW2xldmVsXSkgLS0gUmV0dXJuIGEgY29tcHJlc3NvciBvYmplY3QuXG4iCisiY29tcHJlc3NvYmooW2xldmVsWywgLi4uXV0pIC0tIFJldHVybiBhIGNvbXByZXNzb3Igb2JqZWN0LlxuIgogImNyYzMyKHN0cmluZ1ssIHN0YXJ0XSkgLS0gQ29tcHV0ZSBhIENSQy0zMiBjaGVja3N1bS5cbiIKICJkZWNvbXByZXNzKHN0cmluZyxbd2JpdHNdLFtidWZzaXplXSkgLS0gRGVjb21wcmVzc2VzIGEgY29tcHJlc3NlZCBzdHJpbmcuXG4iCi0iZGVjb21wcmVzc29iaihbd2JpdHNdKSAtLSBSZXR1cm4gYSBkZWNvbXByZXNzb3Igb2JqZWN0LlxuIgorImRlY29tcHJlc3NvYmooW3diaXRzWywgemRpY3RdXV0pIC0tIFJldHVybiBhIGRlY29tcHJlc3NvciBvYmplY3QuXG4iCiAiXG4iCiAiJ3diaXRzJyBpcyB3aW5kb3cgYnVmZmVyIHNpemUuXG4iCiAiQ29tcHJlc3NvciBvYmplY3RzIHN1cHBvcnQgY29tcHJlc3MoKSBhbmQgZmx1c2goKSBtZXRob2RzOyBkZWNvbXByZXNzb3JcbiIKQEAgLTExOTMsNiArMTI4NSwxMCBAQAogICAgIGlmICh2ZXIgIT0gTlVMTCkKICAgICAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJaTElCX1ZFUlNJT04iLCB2ZXIpOwogCisgICAgdmVyID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoemxpYlZlcnNpb24oKSk7CisgICAgaWYgKHZlciAhPSBOVUxMKQorICAgICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlpMSUJfUlVOVElNRV9WRVJTSU9OIiwgdmVyKTsKKwogICAgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJfX3ZlcnNpb25fXyIsICIxLjAiKTsKIAogICAgIHJldHVybiBtOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9hYnN0cmFjdC5jIGIvT2JqZWN0cy9hYnN0cmFjdC5jCmluZGV4IDc3MDVkMDUuLmEyNzM3ZGQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYWJzdHJhY3QuYworKysgYi9PYmplY3RzL2Fic3RyYWN0LmMKQEAgLTc0LDcgKzc0LDcgQEAKIFB5X3NzaXplX3QKIF9QeU9iamVjdF9MZW5ndGhIaW50KFB5T2JqZWN0ICpvLCBQeV9zc2l6ZV90IGRlZmF1bHR2YWx1ZSkKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmhpbnRzdHJvYmogPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fbGVuZ3RoX2hpbnRfXyk7CiAgICAgUHlPYmplY3QgKnJvLCAqaGludG1ldGg7CiAgICAgUHlfc3NpemVfdCBydjsKIApAQCAtODksNyArODksNyBAQAogICAgIH0KIAogICAgIC8qIHRyeSBvLl9fbGVuZ3RoX2hpbnRfXygpICovCi0gICAgaGludG1ldGggPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvLCAiX19sZW5ndGhfaGludF9fIiwgJmhpbnRzdHJvYmopOworICAgIGhpbnRtZXRoID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobywgJlB5SWRfX19sZW5ndGhfaGludF9fKTsKICAgICBpZiAoaGludG1ldGggPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTIzNyw3ICsyMzcsOCBAQAogICAgIHBiID0gb2JqLT5vYl90eXBlLT50cF9hc19idWZmZXI7CiAgICAgaWYgKHBiID09IE5VTEwgfHwgcGItPmJmX2dldGJ1ZmZlciA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYW4gb2JqZWN0IHdpdGggdGhlIGJ1ZmZlciBpbnRlcmZhY2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBieXRlcywgYnl0ZWFycmF5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJvciBidWZmZXIgY29tcGF0aWJsZSBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAoKCpwYi0+YmZfZ2V0YnVmZmVyKShvYmosICZ2aWV3LCBQeUJVRl9TSU1QTEUpKSByZXR1cm4gLTE7CkBAIC0zMzEsNyArMzMyLDcgQEAKIHsKICAgICBpZiAoIVB5T2JqZWN0X0NoZWNrQnVmZmVyKG9iaikpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICInJTEwMHMnIGRvZXMgbm90IHN1cHBvcnQgdGhlIGJ1ZmZlciBpbnRlcmZhY2UiLAorICAgICAgICAgICAgICAgICAgICAgIiclLjEwMHMnIGRvZXMgbm90IHN1cHBvcnQgdGhlIGJ1ZmZlciBpbnRlcmZhY2UiLAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTMzOSw3ICszNDAsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1fSXNGb3J0cmFuQ29udGlndW91cyhQeV9idWZmZXIgKnZpZXcpCitfSXNGb3J0cmFuQ29udGlndW91cyhjb25zdCBQeV9idWZmZXIgKnZpZXcpCiB7CiAgICAgUHlfc3NpemVfdCBzZCwgZGltOwogICAgIGludCBpOwpAQCAtMzYwLDcgKzM2MSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLV9Jc0NDb250aWd1b3VzKFB5X2J1ZmZlciAqdmlldykKK19Jc0NDb250aWd1b3VzKGNvbnN0IFB5X2J1ZmZlciAqdmlldykKIHsKICAgICBQeV9zc2l6ZV90IHNkLCBkaW07CiAgICAgaW50IGk7CkBAIC0zODEsMTYgKzM4MiwxNiBAQAogfQogCiBpbnQKLVB5QnVmZmVyX0lzQ29udGlndW91cyhQeV9idWZmZXIgKnZpZXcsIGNoYXIgZm9ydCkKK1B5QnVmZmVyX0lzQ29udGlndW91cyhjb25zdCBQeV9idWZmZXIgKnZpZXcsIGNoYXIgb3JkZXIpCiB7CiAKICAgICBpZiAodmlldy0+c3Vib2Zmc2V0cyAhPSBOVUxMKSByZXR1cm4gMDsKIAotICAgIGlmIChmb3J0ID09ICdDJykKKyAgICBpZiAob3JkZXIgPT0gJ0MnKQogICAgICAgICByZXR1cm4gX0lzQ0NvbnRpZ3VvdXModmlldyk7Ci0gICAgZWxzZSBpZiAoZm9ydCA9PSAnRicpCisgICAgZWxzZSBpZiAob3JkZXIgPT0gJ0YnKQogICAgICAgICByZXR1cm4gX0lzRm9ydHJhbkNvbnRpZ3VvdXModmlldyk7Ci0gICAgZWxzZSBpZiAoZm9ydCA9PSAnQScpCisgICAgZWxzZSBpZiAob3JkZXIgPT0gJ0EnKQogICAgICAgICByZXR1cm4gKF9Jc0NDb250aWd1b3VzKHZpZXcpIHx8IF9Jc0ZvcnRyYW5Db250aWd1b3VzKHZpZXcpKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTQ0NCw2MiArNDQ1LDYgQEAKICAgICB9CiB9CiAKLSAgLyogdmlldyBpcyBub3QgY2hlY2tlZCBmb3IgY29uc2lzdGVuY3kgaW4gZWl0aGVyIG9mIHRoZXNlLiAgSXQgaXMKLSAgICAgYXNzdW1lZCB0aGF0IHRoZSBzaXplIG9mIHRoZSBidWZmZXIgaXMgdmlldy0+bGVuIGluCi0gICAgIHZpZXctPmxlbiAvIHZpZXctPml0ZW1zaXplIGVsZW1lbnRzLgotICAqLwotCi1pbnQKLVB5QnVmZmVyX1RvQ29udGlndW91cyh2b2lkICpidWYsIFB5X2J1ZmZlciAqdmlldywgUHlfc3NpemVfdCBsZW4sIGNoYXIgZm9ydCkKLXsKLSAgICBpbnQgazsKLSAgICB2b2lkICgqYWRkb25lKShpbnQsIFB5X3NzaXplX3QgKiwgY29uc3QgUHlfc3NpemVfdCAqKTsKLSAgICBQeV9zc2l6ZV90ICppbmRpY2VzLCBlbGVtZW50czsKLSAgICBjaGFyICpkZXN0LCAqcHRyOwotCi0gICAgaWYgKGxlbiA+IHZpZXctPmxlbikgewotICAgICAgICBsZW4gPSB2aWV3LT5sZW47Ci0gICAgfQotCi0gICAgaWYgKFB5QnVmZmVyX0lzQ29udGlndW91cyh2aWV3LCBmb3J0KSkgewotICAgICAgICAvKiBzaW1wbGVzdCBjb3B5IGlzIGFsbCB0aGF0IGlzIG5lZWRlZCAqLwotICAgICAgICBtZW1jcHkoYnVmLCB2aWV3LT5idWYsIGxlbik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8qIE90aGVyd2lzZSBhIG1vcmUgZWxhYm9yYXRlIHNjaGVtZSBpcyBuZWVkZWQgKi8KLQotICAgIC8qIFhYWChubm9yd2l0eik6IG5lZWQgdG8gY2hlY2sgZm9yIG92ZXJmbG93ISAqLwotICAgIGluZGljZXMgPSAoUHlfc3NpemVfdCAqKVB5TWVtX01hbGxvYyhzaXplb2YoUHlfc3NpemVfdCkqKHZpZXctPm5kaW0pKTsKLSAgICBpZiAoaW5kaWNlcyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgZm9yIChrPTA7IGs8dmlldy0+bmRpbTtrKyspIHsKLSAgICAgICAgaW5kaWNlc1trXSA9IDA7Ci0gICAgfQotCi0gICAgaWYgKGZvcnQgPT0gJ0YnKSB7Ci0gICAgICAgIGFkZG9uZSA9IF9QeV9hZGRfb25lX3RvX2luZGV4X0Y7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBhZGRvbmUgPSBfUHlfYWRkX29uZV90b19pbmRleF9DOwotICAgIH0KLSAgICBkZXN0ID0gYnVmOwotICAgIC8qIFhYWCA6IFRoaXMgaXMgbm90IGdvaW5nIHRvIGJlIHRoZSBmYXN0ZXN0IGNvZGUgaW4gdGhlIHdvcmxkCi0gICAgICAgICAgICAgc2V2ZXJhbCBvcHRpbWl6YXRpb25zIGFyZSBwb3NzaWJsZS4KLSAgICAgKi8KLSAgICBlbGVtZW50cyA9IGxlbiAvIHZpZXctPml0ZW1zaXplOwotICAgIHdoaWxlIChlbGVtZW50cy0tKSB7Ci0gICAgICAgIGFkZG9uZSh2aWV3LT5uZGltLCBpbmRpY2VzLCB2aWV3LT5zaGFwZSk7Ci0gICAgICAgIHB0ciA9IFB5QnVmZmVyX0dldFBvaW50ZXIodmlldywgaW5kaWNlcyk7Ci0gICAgICAgIG1lbWNweShkZXN0LCBwdHIsIHZpZXctPml0ZW1zaXplKTsKLSAgICAgICAgZGVzdCArPSB2aWV3LT5pdGVtc2l6ZTsKLSAgICB9Ci0gICAgUHlNZW1fRnJlZShpbmRpY2VzKTsKLSAgICByZXR1cm4gMDsKLX0KLQogaW50CiBQeUJ1ZmZlcl9Gcm9tQ29udGlndW91cyhQeV9idWZmZXIgKnZpZXcsIHZvaWQgKmJ1ZiwgUHlfc3NpemVfdCBsZW4sIGNoYXIgZm9ydCkKIHsKQEAgLTY0OCw5ICs1OTMsOSBAQAogCiBpbnQKIFB5QnVmZmVyX0ZpbGxJbmZvKFB5X2J1ZmZlciAqdmlldywgUHlPYmplY3QgKm9iaiwgdm9pZCAqYnVmLCBQeV9zc2l6ZV90IGxlbiwKLSAgICAgICAgICAgICAgaW50IHJlYWRvbmx5LCBpbnQgZmxhZ3MpCisgICAgICAgICAgICAgICAgICBpbnQgcmVhZG9ubHksIGludCBmbGFncykKIHsKLSAgICBpZiAodmlldyA9PSBOVUxMKSByZXR1cm4gMDsKKyAgICBpZiAodmlldyA9PSBOVUxMKSByZXR1cm4gMDsgLyogWFhYIHdoeSBub3QgLTE/ICovCiAgICAgaWYgKCgoZmxhZ3MgJiBQeUJVRl9XUklUQUJMRSkgPT0gUHlCVUZfV1JJVEFCTEUpICYmCiAgICAgICAgIChyZWFkb25seSA9PSAxKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCkBAIC02OTYsMTYgKzY0MSwxNiBAQAogICAgIFB5T2JqZWN0ICptZXRoOwogICAgIFB5T2JqZWN0ICplbXB0eSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpmb3JtYXRfY2FjaGUgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fZm9ybWF0X18pOwogCiAgICAgLyogSWYgbm8gZm9ybWF0X3NwZWMgaXMgcHJvdmlkZWQsIHVzZSBhbiBlbXB0eSBzdHJpbmcgKi8KICAgICBpZiAoZm9ybWF0X3NwZWMgPT0gTlVMTCkgewotICAgICAgICBlbXB0eSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKTsKKyAgICAgICAgZW1wdHkgPSBQeVVuaWNvZGVfTmV3KDAsIDApOwogICAgICAgICBmb3JtYXRfc3BlYyA9IGVtcHR5OwogICAgIH0KIAogICAgIC8qIEZpbmQgdGhlICh1bmJvdW5kISkgX19mb3JtYXRfXyBtZXRob2QgKGEgYm9ycm93ZWQgcmVmZXJlbmNlKSAqLwotICAgIG1ldGggPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvYmosICJfX2Zvcm1hdF9fIiwgJmZvcm1hdF9jYWNoZSk7CisgICAgbWV0aCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG9iaiwgJlB5SWRfX19mb3JtYXRfXyk7CiAgICAgaWYgKG1ldGggPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLApAQCAtNzkyLDggKzczNyw3IEBACiAgICAgICAgICAgICByZXR1cm4geDsKICAgICAgICAgUHlfREVDUkVGKHgpOyAvKiBjYW4ndCBkbyBpdCAqLwogICAgIH0KLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMjY4LDM3ICsxMjEyLDMxIEBACiB9CiAKIAotUHlPYmplY3QgKgotX1B5TnVtYmVyX0NvbnZlcnRJbnRlZ3JhbFRvSW50KFB5T2JqZWN0ICppbnRlZ3JhbCwgY29uc3QgY2hhciogZXJyb3JfZm9ybWF0KQorLyoKKyAgUmV0dXJucyB0aGUgSW50ZWdyYWwgaW5zdGFuY2UgY29udmVydGVkIHRvIGFuIGludC4gVGhlIGluc3RhbmNlIGlzIGV4cGVjdGVkCisgIHRvIGJlIGFuIGludCBvciBoYXZlIGFuIF9faW50X18gbWV0aG9kLiBTdGVhbHMgaW50ZWdyYWwncworICByZWZlcmVuY2UuIGVycm9yX2Zvcm1hdCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBUeXBlRXJyb3IgaWYgaW50ZWdyYWwKKyAgaXNuJ3QgYWN0dWFsbHkgYW4gSW50ZWdyYWwgaW5zdGFuY2UuIGVycm9yX2Zvcm1hdCBzaG91bGQgYmUgYSBmb3JtYXQgc3RyaW5nCisgIHRoYXQgY2FuIGFjY2VwdCBhIGNoYXIqIG5hbWluZyBpbnRlZ3JhbCdzIHR5cGUuIAorKi8KK3N0YXRpYyBQeU9iamVjdCAqCitjb252ZXJ0X2ludGVncmFsX3RvX2ludChQeU9iamVjdCAqaW50ZWdyYWwsIGNvbnN0IGNoYXIgKmVycm9yX2Zvcm1hdCkKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmludF9uYW1lID0gTlVMTDsKLSAgICBpZiAoaW50X25hbWUgPT0gTlVMTCkgewotICAgICAgICBpbnRfbmFtZSA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2ludF9fIik7Ci0gICAgICAgIGlmIChpbnRfbmFtZSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKGludGVncmFsICYmICFQeUxvbmdfQ2hlY2soaW50ZWdyYWwpKSB7Ci0gICAgICAgIC8qIERvbid0IGdvIHRocm91Z2ggdHBfYXNfbnVtYmVyLT5uYl9pbnQgdG8gYXZvaWQKLSAgICAgICAgICAgaGl0dGluZyB0aGUgY2xhc3NpYyBjbGFzcyBmYWxsYmFjayB0byBfX3RydW5jX18uICovCi0gICAgICAgIFB5T2JqZWN0ICppbnRfZnVuYyA9IFB5T2JqZWN0X0dldEF0dHIoaW50ZWdyYWwsIGludF9uYW1lKTsKLSAgICAgICAgaWYgKGludF9mdW5jID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7IC8qIFJhaXNlIGEgZGlmZmVyZW50IGVycm9yLiAqLwotICAgICAgICAgICAgZ290byBub25faW50ZWdyYWxfZXJyb3I7CisgICAgUHlOdW1iZXJNZXRob2RzICpuYjsKKyAgICBpZiAoUHlMb25nX0NoZWNrKGludGVncmFsKSkKKyAgICAgICAgcmV0dXJuIGludGVncmFsOworICAgIG5iID0gUHlfVFlQRShpbnRlZ3JhbCktPnRwX2FzX251bWJlcjsKKyAgICBpZiAobmItPm5iX2ludCkgeworICAgICAgICBQeU9iamVjdCAqYXNfaW50ID0gbmItPm5iX2ludChpbnRlZ3JhbCk7CisgICAgICAgIGlmICghYXNfaW50IHx8IFB5TG9uZ19DaGVjayhhc19pbnQpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaW50ZWdyYWwpOworICAgICAgICAgICAgcmV0dXJuIGFzX2ludDsKICAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoaW50ZWdyYWwpOwotICAgICAgICBpbnRlZ3JhbCA9IFB5RXZhbF9DYWxsT2JqZWN0KGludF9mdW5jLCBOVUxMKTsKLSAgICAgICAgUHlfREVDUkVGKGludF9mdW5jKTsKLSAgICAgICAgaWYgKGludGVncmFsICYmICFQeUxvbmdfQ2hlY2soaW50ZWdyYWwpKSB7Ci0gICAgICAgICAgICBnb3RvIG5vbl9pbnRlZ3JhbF9lcnJvcjsKLSAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYoYXNfaW50KTsKICAgICB9Ci0gICAgcmV0dXJuIGludGVncmFsOwotCi1ub25faW50ZWdyYWxfZXJyb3I6CiAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgZXJyb3JfZm9ybWF0LCBQeV9UWVBFKGludGVncmFsKS0+dHBfbmFtZSk7CiAgICAgUHlfREVDUkVGKGludGVncmFsKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gTlVMTDsgICAgCiB9CiAKIApAQCAtMTMyNSwxNiArMTI2MywxMCBAQAogUHlOdW1iZXJfTG9uZyhQeU9iamVjdCAqbykKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm07Ci0gICAgc3RhdGljIFB5T2JqZWN0ICp0cnVuY19uYW1lID0gTlVMTDsKICAgICBQeU9iamVjdCAqdHJ1bmNfZnVuYzsKICAgICBjb25zdCBjaGFyICpidWZmZXI7CiAgICAgUHlfc3NpemVfdCBidWZmZXJfbGVuOwotCi0gICAgaWYgKHRydW5jX25hbWUgPT0gTlVMTCkgewotICAgICAgICB0cnVuY19uYW1lID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fdHJ1bmNfXyIpOwotICAgICAgICBpZiAodHJ1bmNfbmFtZSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIF9QeV9JREVOVElGSUVSKF9fdHJ1bmNfXyk7CiAKICAgICBpZiAobyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOwpAQCAtMTM1NiwzMiArMTI4OCwzMCBAQAogICAgIH0KICAgICBpZiAoUHlMb25nX0NoZWNrKG8pKSAvKiBBbiBpbnQgc3ViY2xhc3Mgd2l0aG91dCBuYl9pbnQgKi8KICAgICAgICAgcmV0dXJuIF9QeUxvbmdfQ29weSgoUHlMb25nT2JqZWN0ICopbyk7Ci0gICAgdHJ1bmNfZnVuYyA9IFB5T2JqZWN0X0dldEF0dHIobywgdHJ1bmNfbmFtZSk7CisgICAgdHJ1bmNfZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG8sICZQeUlkX19fdHJ1bmNfXyk7CiAgICAgaWYgKHRydW5jX2Z1bmMpIHsKICAgICAgICAgUHlPYmplY3QgKnRydW5jYXRlZCA9IFB5RXZhbF9DYWxsT2JqZWN0KHRydW5jX2Z1bmMsIE5VTEwpOwogICAgICAgICBQeU9iamVjdCAqaW50X2luc3RhbmNlOwogICAgICAgICBQeV9ERUNSRUYodHJ1bmNfZnVuYyk7CiAgICAgICAgIC8qIF9fdHJ1bmNfXyBpcyBzcGVjaWZpZWQgdG8gcmV0dXJuIGFuIEludGVncmFsIHR5cGUsCi0gICAgICAgICAgIGJ1dCBsb25nKCkgbmVlZHMgdG8gcmV0dXJuIGEgbG9uZy4gKi8KLSAgICAgICAgaW50X2luc3RhbmNlID0gX1B5TnVtYmVyX0NvbnZlcnRJbnRlZ3JhbFRvSW50KAotICAgICAgICAgICAgdHJ1bmNhdGVkLAorICAgICAgICAgICBidXQgaW50KCkgbmVlZHMgdG8gcmV0dXJuIGEgaW50LiAqLworICAgICAgICBpbnRfaW5zdGFuY2UgPSBjb252ZXJ0X2ludGVncmFsX3RvX2ludCh0cnVuY2F0ZWQsCiAgICAgICAgICAgICAiX190cnVuY19fIHJldHVybmVkIG5vbi1JbnRlZ3JhbCAodHlwZSAlLjIwMHMpIik7CiAgICAgICAgIHJldHVybiBpbnRfaW5zdGFuY2U7CiAgICAgfQotICAgIFB5RXJyX0NsZWFyKCk7ICAvKiBJdCdzIG5vdCBhbiBlcnJvciBpZiAgby5fX3RydW5jX18gZG9lc24ndCBleGlzdC4gKi8KKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoUHlCeXRlc19DaGVjayhvKSkKICAgICAgICAgLyogbmVlZCB0byBkbyBleHRyYSBlcnJvciBjaGVja2luZyB0aGF0IFB5TG9uZ19Gcm9tU3RyaW5nKCkKLSAgICAgICAgICogZG9lc24ndCBkby4gIEluIHBhcnRpY3VsYXIgbG9uZygnOS41JykgbXVzdCByYWlzZSBhbgorICAgICAgICAgKiBkb2Vzbid0IGRvLiAgSW4gcGFydGljdWxhciBpbnQoJzkuNScpIG11c3QgcmFpc2UgYW4KICAgICAgICAgICogZXhjZXB0aW9uLCBub3QgdHJ1bmNhdGUgdGhlIGZsb2F0LgogICAgICAgICAgKi8KICAgICAgICAgcmV0dXJuIGxvbmdfZnJvbV9zdHJpbmcoUHlCeXRlc19BU19TVFJJTkcobyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUobykpOwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobykpCiAgICAgICAgIC8qIFRoZSBhYm92ZSBjaGVjayBpcyBkb25lIGluIFB5TG9uZ19Gcm9tVW5pY29kZSgpLiAqLwotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Vbmljb2RlKFB5VW5pY29kZV9BU19VTklDT0RFKG8pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShvKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMCk7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuaWNvZGVPYmplY3QobywgMTApOwogICAgIGlmICghUHlPYmplY3RfQXNDaGFyQnVmZmVyKG8sICZidWZmZXIsICZidWZmZXJfbGVuKSkKICAgICAgICAgcmV0dXJuIGxvbmdfZnJvbV9zdHJpbmcoYnVmZmVyLCBidWZmZXJfbGVuKTsKIApAQCAtMTk4Niw3ICsxOTE2LDcgQEAKIGludAogUHlNYXBwaW5nX0NoZWNrKFB5T2JqZWN0ICpvKQogewotICAgIHJldHVybiAgICAgIG8gJiYgby0+b2JfdHlwZS0+dHBfYXNfbWFwcGluZyAmJgorICAgIHJldHVybiBvICYmIG8tPm9iX3R5cGUtPnRwX2FzX21hcHBpbmcgJiYKICAgICAgICAgby0+b2JfdHlwZS0+dHBfYXNfbWFwcGluZy0+bXBfc3Vic2NyaXB0OwogfQogCkBAIC0yMDg0LDEwICsyMDE0LDExIEBACiB7CiAgICAgUHlPYmplY3QgKmtleXM7CiAgICAgUHlPYmplY3QgKmZhc3Q7CisgICAgX1B5X0lERU5USUZJRVIoa2V5cyk7CiAKICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QobykpCiAgICAgICAgIHJldHVybiBQeURpY3RfS2V5cyhvKTsKLSAgICBrZXlzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvLCAia2V5cyIsIE5VTEwpOworICAgIGtleXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG8sICZQeUlkX2tleXMsIE5VTEwpOwogICAgIGlmIChrZXlzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGZhc3QgPSBQeVNlcXVlbmNlX0Zhc3Qoa2V5cywgIm8ua2V5cygpIGFyZSBub3QgaXRlcmFibGUiKTsKQEAgLTIxMDAsMTAgKzIwMzEsMTEgQEAKIHsKICAgICBQeU9iamVjdCAqaXRlbXM7CiAgICAgUHlPYmplY3QgKmZhc3Q7CisgICAgX1B5X0lERU5USUZJRVIoaXRlbXMpOwogCiAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG8pKQogICAgICAgICByZXR1cm4gUHlEaWN0X0l0ZW1zKG8pOwotICAgIGl0ZW1zID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvLCAiaXRlbXMiLCBOVUxMKTsKKyAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQobywgJlB5SWRfaXRlbXMsIE5VTEwpOwogICAgIGlmIChpdGVtcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBmYXN0ID0gUHlTZXF1ZW5jZV9GYXN0KGl0ZW1zLCAiby5pdGVtcygpIGFyZSBub3QgaXRlcmFibGUiKTsKQEAgLTIxMTYsMTAgKzIwNDgsMTEgQEAKIHsKICAgICBQeU9iamVjdCAqdmFsdWVzOwogICAgIFB5T2JqZWN0ICpmYXN0OworICAgIF9QeV9JREVOVElGSUVSKHZhbHVlcyk7CiAKICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QobykpCiAgICAgICAgIHJldHVybiBQeURpY3RfVmFsdWVzKG8pOwotICAgIHZhbHVlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QobywgInZhbHVlcyIsIE5VTEwpOworICAgIHZhbHVlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQobywgJlB5SWRfdmFsdWVzLCBOVUxMKTsKICAgICBpZiAodmFsdWVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGZhc3QgPSBQeVNlcXVlbmNlX0Zhc3QodmFsdWVzLCAiby52YWx1ZXMoKSBhcmUgbm90IGl0ZXJhYmxlIik7CkBAIC0yMjI1LDIyICsyMTU4LDExIEBACiAgICAgcmV0dXJuIGNhbGxfZnVuY3Rpb25fdGFpbChjYWxsYWJsZSwgYXJncyk7CiB9CiAKLVB5T2JqZWN0ICoKLVB5T2JqZWN0X0NhbGxNZXRob2QoUHlPYmplY3QgKm8sIGNoYXIgKm5hbWUsIGNoYXIgKmZvcm1hdCwgLi4uKQorc3RhdGljIFB5T2JqZWN0KgorY2FsbG1ldGhvZChQeU9iamVjdCogZnVuYywgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhLCBpbnQgaXNfc2l6ZV90KQogewotICAgIHZhX2xpc3QgdmE7Ci0gICAgUHlPYmplY3QgKmFyZ3M7Ci0gICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwotCi0gICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCi0gICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7Ci0KLSAgICBmdW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvLCBuYW1lKTsKLSAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBQeU9iamVjdCAqYXJnczsKIAogICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhmdW5jKSkgewogICAgICAgICB0eXBlX2Vycm9yKCJhdHRyaWJ1dGUgb2YgdHlwZSAnJS4yMDBzJyBpcyBub3QgY2FsbGFibGUiLCBmdW5jKTsKQEAgLTIyNDgsOSArMjE3MCwxMCBAQAogICAgIH0KIAogICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkgewotICAgICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKLSAgICAgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKLSAgICAgICAgdmFfZW5kKHZhKTsKKyAgICAgICAgaWYgKGlzX3NpemVfdCkKKyAgICAgICAgICAgIGFyZ3MgPSBfUHlfVmFCdWlsZFZhbHVlX1NpemVUKGZvcm1hdCwgdmEpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcmdzID0gUHlfVmFCdWlsZFZhbHVlKGZvcm1hdCwgdmEpOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKQEAgLTIyNjUsNDQgKzIxODgsODYgQEAKIH0KIAogUHlPYmplY3QgKgorUHlPYmplY3RfQ2FsbE1ldGhvZChQeU9iamVjdCAqbywgY2hhciAqbmFtZSwgY2hhciAqZm9ybWF0LCAuLi4pCit7CisgICAgdmFfbGlzdCB2YTsKKyAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CisKKyAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKworICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG8sIG5hbWUpOworICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAwKTsKKyAgICB2YV9lbmQodmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5T2JqZWN0ICoKK19QeU9iamVjdF9DYWxsTWV0aG9kSWQoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICpuYW1lLCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKyAgICB2YV9saXN0IHZhOworICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKKworICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworCisgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQobywgbmFtZSk7CisgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICByZXR2YWwgPSBjYWxsbWV0aG9kKGZ1bmMsIGZvcm1hdCwgdmEsIDApOworICAgIHZhX2VuZCh2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworUHlPYmplY3QgKgogX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQoUHlPYmplY3QgKm8sIGNoYXIgKm5hbWUsIGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmE7Ci0gICAgUHlPYmplY3QgKmFyZ3M7CiAgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXR2YWw7CiAKICAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKIAogICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG8sIG5hbWUpOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1lKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotCi0gICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGZ1bmMpKSB7Ci0gICAgICAgIHR5cGVfZXJyb3IoImF0dHJpYnV0ZSBvZiB0eXBlICclLjIwMHMnIGlzIG5vdCBjYWxsYWJsZSIsIGZ1bmMpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQotCi0gICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KSB7Ci0gICAgICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwotICAgICAgICBhcmdzID0gX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChmb3JtYXQsIHZhKTsKLSAgICAgICAgdmFfZW5kKHZhKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7Ci0KLSAgICByZXR2YWwgPSBjYWxsX2Z1bmN0aW9uX3RhaWwoZnVuYywgYXJncyk7Ci0KLSAgZXhpdDoKLSAgICAvKiBhcmdzIGdldHMgY29uc3VtZWQgaW4gY2FsbF9mdW5jdGlvbl90YWlsICovCi0gICAgUHlfWERFQ1JFRihmdW5jKTsKLQorICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOworICAgIHJldHZhbCA9IGNhbGxtZXRob2QoZnVuYywgZm9ybWF0LCB2YSwgMSk7CisgICAgdmFfZW5kKHZhKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCitQeU9iamVjdCAqCitfUHlPYmplY3RfQ2FsbE1ldGhvZElkX1NpemVUKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZSwgY2hhciAqZm9ybWF0LCAuLi4pCit7CisgICAgdmFfbGlzdCB2YTsKKyAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJldHZhbDsKKworICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworCisgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQobywgbmFtZSk7CisgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAxKTsKKyAgICB2YV9lbmQodmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvYmphcmdzX21rdHVwbGUodmFfbGlzdCB2YSkKQEAgLTIzNTUsNiArMjMyMCwzNSBAQAogfQogCiBQeU9iamVjdCAqCitfUHlPYmplY3RfQ2FsbE1ldGhvZE9iaklkQXJncyhQeU9iamVjdCAqY2FsbGFibGUsCisgICAgICAgIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqbmFtZSwgLi4uKQoreworICAgIFB5T2JqZWN0ICphcmdzLCAqdG1wOworICAgIHZhX2xpc3QgdmFyZ3M7CisKKyAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisKKyAgICBjYWxsYWJsZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoY2FsbGFibGUsIG5hbWUpOworICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIGNvdW50IHRoZSBhcmdzICovCisgICAgdmFfc3RhcnQodmFyZ3MsIG5hbWUpOworICAgIGFyZ3MgPSBvYmphcmdzX21rdHVwbGUodmFyZ3MpOworICAgIHZhX2VuZCh2YXJncyk7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdG1wID0gUHlPYmplY3RfQ2FsbChjYWxsYWJsZSwgYXJncywgTlVMTCk7CisgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CisKKyAgICByZXR1cm4gdG1wOworfQorCitQeU9iamVjdCAqCiBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwgLi4uKQogewogICAgIFB5T2JqZWN0ICphcmdzLCAqdG1wOwpAQCAtMjM3OCwxMCArMjM3Miw4IEBACiAKIC8qIGlzaW5zdGFuY2UoKSwgaXNzdWJjbGFzcygpICovCiAKLS8qIGFic3RyYWN0X2dldF9iYXNlcygpIGhhcyBsb2dpY2FsbHkgNCByZXR1cm4gc3RhdGVzLCB3aXRoIGEgc29ydCBvZiAwdGgKLSAqIHN0YXRlIHRoYXQgd2lsbCBhbG1vc3QgbmV2ZXIgaGFwcGVuLgorLyogYWJzdHJhY3RfZ2V0X2Jhc2VzKCkgaGFzIGxvZ2ljYWxseSA0IHJldHVybiBzdGF0ZXM6CiAgKgotICogMC4gY3JlYXRpbmcgdGhlIF9fYmFzZXNfXyBzdGF0aWMgc3RyaW5nIGNvdWxkIGdldCBhIE1lbW9yeUVycm9yCiAgKiAxLiBnZXRhdHRyKGNscywgJ19fYmFzZXNfXycpIGNvdWxkIHJhaXNlIGFuIEF0dHJpYnV0ZUVycm9yCiAgKiAyLiBnZXRhdHRyKGNscywgJ19fYmFzZXNfXycpIGNvdWxkIHJhaXNlIHNvbWUgb3RoZXIgZXhjZXB0aW9uCiAgKiAzLiBnZXRhdHRyKGNscywgJ19fYmFzZXNfXycpIGNvdWxkIHJldHVybiBhIHR1cGxlCkBAIC0yNDA3LDE2ICsyMzk5LDExIEBACiBzdGF0aWMgUHlPYmplY3QgKgogYWJzdHJhY3RfZ2V0X2Jhc2VzKFB5T2JqZWN0ICpjbHMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpfX2Jhc2VzX18gPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fYmFzZXNfXyk7CiAgICAgUHlPYmplY3QgKmJhc2VzOwogCi0gICAgaWYgKF9fYmFzZXNfXyA9PSBOVUxMKSB7Ci0gICAgICAgIF9fYmFzZXNfXyA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2Jhc2VzX18iKTsKLSAgICAgICAgaWYgKF9fYmFzZXNfXyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIFB5X0FMTE9XX1JFQ1VSU0lPTgotICAgIGJhc2VzID0gUHlPYmplY3RfR2V0QXR0cihjbHMsIF9fYmFzZXNfXyk7CisgICAgYmFzZXMgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNscywgJlB5SWRfX19iYXNlc19fKTsKICAgICBQeV9FTkRfQUxMT1dfUkVDVVJTSU9OCiAgICAgaWYgKGJhc2VzID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQpAQCAtMjQ4NiwxOSArMjQ3MywxMyBAQAogcmVjdXJzaXZlX2lzaW5zdGFuY2UoUHlPYmplY3QgKmluc3QsIFB5T2JqZWN0ICpjbHMpCiB7CiAgICAgUHlPYmplY3QgKmljbHM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpfX2NsYXNzX18gPSBOVUxMOwogICAgIGludCByZXR2YWwgPSAwOwotCi0gICAgaWYgKF9fY2xhc3NfXyA9PSBOVUxMKSB7Ci0gICAgICAgIF9fY2xhc3NfXyA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2NsYXNzX18iKTsKLSAgICAgICAgaWYgKF9fY2xhc3NfXyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKyAgICBfUHlfSURFTlRJRklFUihfX2NsYXNzX18pOwogCiAgICAgaWYgKFB5VHlwZV9DaGVjayhjbHMpKSB7CiAgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X1R5cGVDaGVjayhpbnN0LCAoUHlUeXBlT2JqZWN0ICopY2xzKTsKICAgICAgICAgaWYgKHJldHZhbCA9PSAwKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqYyA9IFB5T2JqZWN0X0dldEF0dHIoaW5zdCwgX19jbGFzc19fKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpjID0gX1B5T2JqZWN0X0dldEF0dHJJZChpbnN0LCAmUHlJZF9fX2NsYXNzX18pOwogICAgICAgICAgICAgaWYgKGMgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTI1MTksNyArMjUwMCw3IEBACiAgICAgICAgIGlmICghY2hlY2tfY2xhc3MoY2xzLAogICAgICAgICAgICAgImlzaW5zdGFuY2UoKSBhcmcgMiBtdXN0IGJlIGEgdHlwZSBvciB0dXBsZSBvZiB0eXBlcyIpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpY2xzID0gUHlPYmplY3RfR2V0QXR0cihpbnN0LCBfX2NsYXNzX18pOworICAgICAgICBpY2xzID0gX1B5T2JqZWN0X0dldEF0dHJJZChpbnN0LCAmUHlJZF9fX2NsYXNzX18pOwogICAgICAgICBpZiAoaWNscyA9PSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTI1MzgsNyArMjUxOSw3IEBACiBpbnQKIFB5T2JqZWN0X0lzSW5zdGFuY2UoUHlPYmplY3QgKmluc3QsIFB5T2JqZWN0ICpjbHMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpuYW1lID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2luc3RhbmNlY2hlY2tfXyk7CiAgICAgUHlPYmplY3QgKmNoZWNrZXI7CiAKICAgICAvKiBRdWljayB0ZXN0IGZvciBhbiBleGFjdCBtYXRjaCAqLwpAQCAtMjU2NCw3ICsyNTQ1LDcgQEAKICAgICAgICAgcmV0dXJuIHI7CiAgICAgfQogCi0gICAgY2hlY2tlciA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKGNscywgIl9faW5zdGFuY2VjaGVja19fIiwgJm5hbWUpOworICAgIGNoZWNrZXIgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChjbHMsICZQeUlkX19faW5zdGFuY2VjaGVja19fKTsKICAgICBpZiAoY2hlY2tlciAhPSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgICAgIGludCBvayA9IC0xOwpAQCAtMjYwNyw3ICsyNTg4LDcgQEAKIGludAogUHlPYmplY3RfSXNTdWJjbGFzcyhQeU9iamVjdCAqZGVyaXZlZCwgUHlPYmplY3QgKmNscykKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKm5hbWUgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fc3ViY2xhc3NjaGVja19fKTsKICAgICBQeU9iamVjdCAqY2hlY2tlcjsKIAogICAgIGlmIChQeVR1cGxlX0NoZWNrKGNscykpIHsKQEAgLTI2MjksNyArMjYxMCw3IEBACiAgICAgICAgIHJldHVybiByOwogICAgIH0KIAotICAgIGNoZWNrZXIgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChjbHMsICJfX3N1YmNsYXNzY2hlY2tfXyIsICZuYW1lKTsKKyAgICBjaGVja2VyID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoY2xzLCAmUHlJZF9fX3N1YmNsYXNzY2hlY2tfXyk7CiAgICAgaWYgKGNoZWNrZXIgIT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqcmVzOwogICAgICAgICBpbnQgb2sgPSAtMTsKZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMgYi9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jCmluZGV4IDdkNWRiZDAuLjlmMWNmMGEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYwpAQCAtMTM5LDcgKzEzOSw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBhbGxvYyA9IHNpemUgKyAxOwotICAgICAgICBuZXctPm9iX2J5dGVzID0gUHlNZW1fTWFsbG9jKGFsbG9jKTsKKyAgICAgICAgbmV3LT5vYl9ieXRlcyA9IFB5T2JqZWN0X01hbGxvYyhhbGxvYyk7CiAgICAgICAgIGlmIChuZXctPm9iX2J5dGVzID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwogICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CkBAIC0yMDksNyArMjA5LDcgQEAKICAgICAgICAgYWxsb2MgPSBzaXplICsgMTsKICAgICB9CiAKLSAgICBzdmFsID0gUHlNZW1fUmVhbGxvYygoKFB5Qnl0ZUFycmF5T2JqZWN0ICopc2VsZiktPm9iX2J5dGVzLCBhbGxvYyk7CisgICAgc3ZhbCA9IFB5T2JqZWN0X1JlYWxsb2MoKChQeUJ5dGVBcnJheU9iamVjdCAqKXNlbGYpLT5vYl9ieXRlcywgYWxsb2MpOwogICAgIGlmIChzdmFsID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNzk1LDcgKzc5NSw3IEBACiAgICAgICAgIHNpemUgPSB2aWV3LmxlbjsKICAgICAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSgoUHlPYmplY3QgKilzZWxmLCBzaXplKSA8IDApIGdvdG8gZmFpbDsKICAgICAgICAgaWYgKFB5QnVmZmVyX1RvQ29udGlndW91cyhzZWxmLT5vYl9ieXRlcywgJnZpZXcsIHNpemUsICdDJykgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIGZhaWw6CkBAIC04NTYsODcgKzg1Niw4MiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yZXByKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQogewotICAgIHN0YXRpYyBjb25zdCBjaGFyICpoZXhkaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CiAgICAgY29uc3QgY2hhciAqcXVvdGVfcHJlZml4ID0gImJ5dGVhcnJheShiIjsKICAgICBjb25zdCBjaGFyICpxdW90ZV9wb3N0Zml4ID0gIikiOwogICAgIFB5X3NzaXplX3QgbGVuZ3RoID0gUHlfU0laRShzZWxmKTsKLSAgICAvKiAxNCA9PSBzdHJsZW4ocXVvdGVfcHJlZml4KSArIDIgKyBzdHJsZW4ocXVvdGVfcG9zdGZpeCkgKi8KKyAgICAvKiAxNSA9PSBzdHJsZW4ocXVvdGVfcHJlZml4KSArIDIgKyBzdHJsZW4ocXVvdGVfcG9zdGZpeCkgKyAxICovCiAgICAgc2l6ZV90IG5ld3NpemU7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgaWYgKGxlbmd0aCA+IChQWV9TU0laRV9UX01BWCAtIDE0KSAvIDQpIHsKKyAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7CisgICAgcmVnaXN0ZXIgY2hhciBjOworICAgIHJlZ2lzdGVyIGNoYXIgKnA7CisgICAgaW50IHF1b3RlOworICAgIGNoYXIgKnRlc3QsICpzdGFydDsKKyAgICBjaGFyICpidWZmZXI7CisKKyAgICBpZiAobGVuZ3RoID4gKFBZX1NTSVpFX1RfTUFYIC0gMTUpIC8gNCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICJieXRlYXJyYXkgb2JqZWN0IGlzIHRvbyBsYXJnZSB0byBtYWtlIHJlcHIiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG5ld3NpemUgPSAxNCArIDQgKiBsZW5ndGg7Ci0gICAgdiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBuZXdzaXplKTsKLSAgICBpZiAodiA9PSBOVUxMKSB7CisKKyAgICBuZXdzaXplID0gMTUgKyBsZW5ndGggKiA0OworICAgIGJ1ZmZlciA9IFB5T2JqZWN0X01hbGxvYyhuZXdzaXplKTsKKyAgICBpZiAoYnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgYzsKLSAgICAgICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqcDsKLSAgICAgICAgaW50IHF1b3RlOwogCi0gICAgICAgIC8qIEZpZ3VyZSBvdXQgd2hpY2ggcXVvdGUgdG8gdXNlOyBzaW5nbGUgaXMgcHJlZmVycmVkICovCi0gICAgICAgIHF1b3RlID0gJ1wnJzsKLSAgICAgICAgewotICAgICAgICAgICAgY2hhciAqdGVzdCwgKnN0YXJ0OwotICAgICAgICAgICAgc3RhcnQgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgICAgICAgICBmb3IgKHRlc3QgPSBzdGFydDsgdGVzdCA8IHN0YXJ0K2xlbmd0aDsgKyt0ZXN0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCp0ZXN0ID09ICciJykgewotICAgICAgICAgICAgICAgICAgICBxdW90ZSA9ICdcJyc7IC8qIGJhY2sgdG8gc2luZ2xlICovCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZGVjaWRlZDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoKnRlc3QgPT0gJ1wnJykKLSAgICAgICAgICAgICAgICAgICAgcXVvdGUgPSAnIic7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgZGVjaWRlZDoKLSAgICAgICAgICAgIDsKKyAgICAvKiBGaWd1cmUgb3V0IHdoaWNoIHF1b3RlIHRvIHVzZTsgc2luZ2xlIGlzIHByZWZlcnJlZCAqLworICAgIHF1b3RlID0gJ1wnJzsKKyAgICBzdGFydCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKKyAgICBmb3IgKHRlc3QgPSBzdGFydDsgdGVzdCA8IHN0YXJ0K2xlbmd0aDsgKyt0ZXN0KSB7CisgICAgICAgIGlmICgqdGVzdCA9PSAnIicpIHsKKyAgICAgICAgICAgIHF1b3RlID0gJ1wnJzsgLyogYmFjayB0byBzaW5nbGUgKi8KKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0KLSAgICAgICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpOwotICAgICAgICB3aGlsZSAoKnF1b3RlX3ByZWZpeCkKLSAgICAgICAgICAgICpwKysgPSAqcXVvdGVfcHJlZml4Kys7Ci0gICAgICAgICpwKysgPSBxdW90ZTsKLQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIC8qIFRoZXJlJ3MgYXQgbGVhc3QgZW5vdWdoIHJvb20gZm9yIGEgaGV4IGVzY2FwZQotICAgICAgICAgICAgICAgYW5kIGEgY2xvc2luZyBxdW90ZS4gKi8KLSAgICAgICAgICAgIGFzc2VydChuZXdzaXplIC0gKHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkgPj0gNSk7Ci0gICAgICAgICAgICBjID0gc2VsZi0+b2JfYnl0ZXNbaV07Ci0gICAgICAgICAgICBpZiAoYyA9PSAnXCcnIHx8IGMgPT0gJ1xcJykKLSAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9IGM7Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09ICdcdCcpCi0gICAgICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAndCc7Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09ICdcbicpCi0gICAgICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAnbic7Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09ICdccicpCi0gICAgICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAncic7Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09IDApCi0gICAgICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAneCcsICpwKysgPSAnMCcsICpwKysgPSAnMCc7Ci0gICAgICAgICAgICBlbHNlIGlmIChjIDwgJyAnIHx8IGMgPj0gMHg3ZikgewotICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgICAgICpwKysgPSAneCc7Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soYyAmIDB4ZjApID4+IDRdOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbYyAmIDB4Zl07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgKnArKyA9IGM7Ci0gICAgICAgIH0KLSAgICAgICAgYXNzZXJ0KG5ld3NpemUgLSAocCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpKSA+PSAxKTsKLSAgICAgICAgKnArKyA9IHF1b3RlOwotICAgICAgICB3aGlsZSAoKnF1b3RlX3Bvc3RmaXgpIHsKLSAgICAgICAgICAgKnArKyA9ICpxdW90ZV9wb3N0Zml4Kys7Ci0gICAgICAgIH0KLSAgICAgICAgKnAgPSAnXDAnOwotICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmdiwgKHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkpKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdjsKKyAgICAgICAgZWxzZSBpZiAoKnRlc3QgPT0gJ1wnJykKKyAgICAgICAgICAgIHF1b3RlID0gJyInOwogICAgIH0KKworICAgIHAgPSBidWZmZXI7CisgICAgd2hpbGUgKCpxdW90ZV9wcmVmaXgpCisgICAgICAgICpwKysgPSAqcXVvdGVfcHJlZml4Kys7CisgICAgKnArKyA9IHF1b3RlOworCisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIC8qIFRoZXJlJ3MgYXQgbGVhc3QgZW5vdWdoIHJvb20gZm9yIGEgaGV4IGVzY2FwZQorICAgICAgICAgICBhbmQgYSBjbG9zaW5nIHF1b3RlLiAqLworICAgICAgICBhc3NlcnQobmV3c2l6ZSAtIChwIC0gYnVmZmVyKSA+PSA1KTsKKyAgICAgICAgYyA9IHNlbGYtPm9iX2J5dGVzW2ldOworICAgICAgICBpZiAoYyA9PSAnXCcnIHx8IGMgPT0gJ1xcJykKKyAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gYzsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAnXHQnKQorICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAndCc7CisgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1xuJykKKyAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gJ24nOworICAgICAgICBlbHNlIGlmIChjID09ICdccicpCisgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9ICdyJzsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAwKQorICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAneCcsICpwKysgPSAnMCcsICpwKysgPSAnMCc7CisgICAgICAgIGVsc2UgaWYgKGMgPCAnICcgfHwgYyA+PSAweDdmKSB7CisgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICpwKysgPSAneCc7CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjICYgMHhmMCkgPj4gNF07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2MgJiAweGZdOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpwKysgPSBjOworICAgIH0KKyAgICBhc3NlcnQobmV3c2l6ZSAtIChwIC0gYnVmZmVyKSA+PSAxKTsKKyAgICAqcCsrID0gcXVvdGU7CisgICAgd2hpbGUgKCpxdW90ZV9wb3N0Zml4KSB7CisgICAgICAgKnArKyA9ICpxdW90ZV9wb3N0Zml4Kys7CisgICAgfQorCisgICAgdiA9IFB5VW5pY29kZV9EZWNvZGVBU0NJSShidWZmZXIsIHAgLSBidWZmZXIsIE5VTEwpOworICAgIFB5T2JqZWN0X0ZyZWUoYnVmZmVyKTsKKyAgICByZXR1cm4gdjsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTk3MCwyMyArOTY1LDIwIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIAotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAKICAgICBzZWxmX3NpemUgPSBfZ2V0YnVmZmVyKHNlbGYsICZzZWxmX2J5dGVzKTsKICAgICBpZiAoc2VsZl9zaXplIDwgMCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAKICAgICBvdGhlcl9zaXplID0gX2dldGJ1ZmZlcihvdGhlciwgJm90aGVyX2J5dGVzKTsKICAgICBpZiAob3RoZXJfc2l6ZSA8IDApIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2VsZl9ieXRlcyk7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KIAogICAgIGlmIChzZWxmX3NpemUgIT0gb3RoZXJfc2l6ZSAmJiAob3AgPT0gUHlfRVEgfHwgb3AgPT0gUHlfTkUpKSB7CkBAIC0xMDM0LDcgKzEwMjYsNyBAQAogICAgICAgICBQeUVycl9QcmludCgpOwogICAgIH0KICAgICBpZiAoc2VsZi0+b2JfYnl0ZXMgIT0gMCkgewotICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPm9iX2J5dGVzKTsKKyAgICAgICAgUHlPYmplY3RfRnJlZShzZWxmLT5vYl9ieXRlcyk7CiAgICAgfQogICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7CiB9CkBAIC0xMDQzLDYgKzEwMzUsOCBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qIE1ldGhvZHMgKi8KIAorI2RlZmluZSBGQVNUU0VBUkNIIGZhc3RzZWFyY2gKKyNkZWZpbmUgU1RSSU5HTElCKEYpIHN0cmluZ2xpYl8jI0YKICNkZWZpbmUgU1RSSU5HTElCX0NIQVIgY2hhcgogI2RlZmluZSBTVFJJTkdMSUJfTEVOIFB5Qnl0ZUFycmF5X0dFVF9TSVpFCiAjZGVmaW5lIFNUUklOR0xJQl9TVFIgUHlCeXRlQXJyYXlfQVNfU1RSSU5HCkBAIC0xMDgzLDI0ICsxMDc3LDQxIEBACiBieXRlYXJyYXlfZmluZF9pbnRlcm5hbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIGludCBkaXIpCiB7CiAgICAgUHlPYmplY3QgKnN1Ym9iajsKKyAgICBjaGFyIGJ5dGU7CiAgICAgUHlfYnVmZmVyIHN1YmJ1ZjsKKyAgICBjb25zdCBjaGFyICpzdWI7CisgICAgUHlfc3NpemVfdCBzdWJfbGVuOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ9MCwgZW5kPVBZX1NTSVpFX1RfTUFYOwogICAgIFB5X3NzaXplX3QgcmVzOwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygiZmluZC9yZmluZC9pbmRleC9yaW5kZXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKKyAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX2J5dGUoImZpbmQvcmZpbmQvaW5kZXgvcmluZGV4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgJnN1Ym9iaiwgJmJ5dGUsICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiAtMjsKLSAgICBpZiAoX2dldGJ1ZmZlcihzdWJvYmosICZzdWJidWYpIDwgMCkKLSAgICAgICAgcmV0dXJuIC0yOworCisgICAgaWYgKHN1Ym9iaikgeworICAgICAgICBpZiAoX2dldGJ1ZmZlcihzdWJvYmosICZzdWJidWYpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMjsKKworICAgICAgICBzdWIgPSBzdWJidWYuYnVmOworICAgICAgICBzdWJfbGVuID0gc3ViYnVmLmxlbjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN1YiA9ICZieXRlOworICAgICAgICBzdWJfbGVuID0gMTsKKyAgICB9CisKICAgICBpZiAoZGlyID4gMCkKICAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCiAgICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLAotICAgICAgICAgICAgc3ViYnVmLmJ1Ziwgc3ViYnVmLmxlbiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOwogICAgIGVsc2UKICAgICAgICAgcmVzID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAogICAgICAgICAgICAgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwKLSAgICAgICAgICAgIHN1YmJ1Zi5idWYsIHN1YmJ1Zi5sZW4sIHN0YXJ0LCBlbmQpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1YmJ1Zik7CisgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOworCisgICAgaWYgKHN1Ym9iaikKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViYnVmKTsKKwogICAgIHJldHVybiByZXM7CiB9CiAKQEAgLTExMzMsMjYgKzExNDQsNjYgQEAKIGJ5dGVhcnJheV9jb3VudChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnN1Yl9vYmo7Ci0gICAgY29uc3QgY2hhciAqc3RyID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOworICAgIGNvbnN0IGNoYXIgKnN0ciA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgKnN1YjsKKyAgICBQeV9zc2l6ZV90IHN1Yl9sZW47CisgICAgY2hhciBieXRlOwogICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwLCBlbmQgPSBQWV9TU0laRV9UX01BWDsKKwogICAgIFB5X2J1ZmZlciB2c3ViOwogICAgIFB5T2JqZWN0ICpjb3VudF9vYmo7CiAKLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCJjb3VudCIsIGFyZ3MsICZzdWJfb2JqLCAmc3RhcnQsICZlbmQpKQorICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiY291bnQiLCBhcmdzLCAmc3ViX29iaiwgJmJ5dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKF9nZXRidWZmZXIoc3ViX29iaiwgJnZzdWIpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHN1Yl9vYmopIHsKKyAgICAgICAgaWYgKF9nZXRidWZmZXIoc3ViX29iaiwgJnZzdWIpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIHN1YiA9IHZzdWIuYnVmOworICAgICAgICBzdWJfbGVuID0gdnN1Yi5sZW47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdWIgPSAmYnl0ZTsKKyAgICAgICAgc3ViX2xlbiA9IDE7CisgICAgfQogCiAgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZikpOwogCiAgICAgY291bnRfb2JqID0gUHlMb25nX0Zyb21Tc2l6ZV90KAotICAgICAgICBzdHJpbmdsaWJfY291bnQoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCB2c3ViLmJ1ZiwgdnN1Yi5sZW4sIFBZX1NTSVpFX1RfTUFYKQorICAgICAgICBzdHJpbmdsaWJfY291bnQoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCBzdWIsIHN1Yl9sZW4sIFBZX1NTSVpFX1RfTUFYKQogICAgICAgICApOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZzdWIpOworCisgICAgaWYgKHN1Yl9vYmopCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZzdWIpOworCiAgICAgcmV0dXJuIGNvdW50X29iajsKIH0KIAorUHlEb2NfU1RSVkFSKGNsZWFyX19kb2NfXywKKyJCLmNsZWFyKCkgLT4gTm9uZVxuXAorXG5cCitSZW1vdmUgYWxsIGl0ZW1zIGZyb20gQi4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9jbGVhcihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKK3sKKyAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKChQeU9iamVjdCAqKXNlbGYsIDApIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihjb3B5X19kb2NfXywKKyJCLmNvcHkoKSAtPiBieXRlYXJyYXlcblwKK1xuXAorUmV0dXJuIGEgY29weSBvZiBCLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2NvcHkoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCit7CisgICAgcmV0dXJuIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKFB5Qnl0ZUFycmF5X0FTX1NUUklORygoUHlPYmplY3QgKilzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZikpOworfQogCiBQeURvY19TVFJWQVIoaW5kZXhfX2RvY19fLAogIkIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCkBAIC0xOTk0LDcgKzIwNDUsNyBAQAogfQogCiBQeURvY19TVFJWQVIoc3BsaXRfX2RvY19fLAotIkIuc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pIC0+IGxpc3Qgb2YgYnl0ZWFycmF5c1xuXAorIkIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKSAtPiBsaXN0IG9mIGJ5dGVhcnJheXNcblwKIFxuXAogUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gQiwgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIuXG5cCiBJZiBzZXAgaXMgbm90IGdpdmVuLCBCIGlzIHNwbGl0IG9uIEFTQ0lJIHdoaXRlc3BhY2UgY2hhcmFjdGVyc1xuXApAQCAtMjAwMiwxNSArMjA1MywxNyBAQAogSWYgbWF4c3BsaXQgaXMgZ2l2ZW4sIGF0IG1vc3QgbWF4c3BsaXQgc3BsaXRzIGFyZSBkb25lLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3NwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVhcnJheV9zcGxpdChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogeworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgMH07CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgbjsKICAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAgICAgY29uc3QgY2hhciAqcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgKnN1YjsKICAgICBQeU9iamVjdCAqbGlzdCwgKnN1Ym9iaiA9IFB5X05vbmU7CiAgICAgUHlfYnVmZmVyIHZzdWI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPbjpzcGxpdCIsICZzdWJvYmosICZtYXhzcGxpdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPbjpzcGxpdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3Vib2JqLCAmbWF4c3BsaXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWF4c3BsaXQgPCAwKQogICAgICAgICBtYXhzcGxpdCA9IFBZX1NTSVpFX1RfTUFYOwpAQCAtMjA4Niw3ICsyMTM5LDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKHJzcGxpdF9fZG9jX18sCi0iQi5yc3BsaXQoc2VwWywgbWF4c3BsaXRdKSAtPiBsaXN0IG9mIGJ5dGVhcnJheXNcblwKKyJCLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpIC0+IGxpc3Qgb2YgYnl0ZWFycmF5c1xuXAogXG5cCiBSZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiBCLCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlcixcblwKIHN0YXJ0aW5nIGF0IHRoZSBlbmQgb2YgQiBhbmQgd29ya2luZyB0byB0aGUgZnJvbnQuXG5cCkBAIC0yMDk1LDE1ICsyMTQ4LDE3IEBACiBJZiBtYXhzcGxpdCBpcyBnaXZlbiwgYXQgbW9zdCBtYXhzcGxpdCBzcGxpdHMgYXJlIGRvbmUuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcnNwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVhcnJheV9yc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNlcCIsICJtYXhzcGxpdCIsIDB9OwogICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIG47CiAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogICAgIGNvbnN0IGNoYXIgKnMgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksICpzdWI7CiAgICAgUHlPYmplY3QgKmxpc3QsICpzdWJvYmogPSBQeV9Ob25lOwogICAgIFB5X2J1ZmZlciB2c3ViOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8T246cnNwbGl0IiwgJnN1Ym9iaiwgJm1heHNwbGl0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9uOnJzcGxpdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3Vib2JqLCAmbWF4c3BsaXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWF4c3BsaXQgPCAwKQogICAgICAgICBtYXhzcGxpdCA9IFBZX1NTSVpFX1RfTUFYOwpAQCAtMjQ1NCw3ICsyNTA5LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcnN0cmlwKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IGxlZnQsIHJpZ2h0LCBteXNpemUsIGFyZ3NpemU7CisgICAgUHlfc3NpemVfdCByaWdodCwgbXlzaXplLCBhcmdzaXplOwogICAgIHZvaWQgKm15cHRyLCAqYXJncHRyOwogICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwogICAgIFB5X2J1ZmZlciB2YXJnOwpAQCAtMjQ3MiwxMSArMjUyNywxMCBAQAogICAgIH0KICAgICBteXB0ciA9IHNlbGYtPm9iX2J5dGVzOwogICAgIG15c2l6ZSA9IFB5X1NJWkUoc2VsZik7Ci0gICAgbGVmdCA9IDA7CiAgICAgcmlnaHQgPSByc3RyaXBfaGVscGVyKG15cHRyLCBteXNpemUsIGFyZ3B0ciwgYXJnc2l6ZSk7CiAgICAgaWYgKGFyZyAhPSBQeV9Ob25lKQogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2YXJnKTsKLSAgICByZXR1cm4gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoc2VsZi0+b2JfYnl0ZXMgKyBsZWZ0LCByaWdodCAtIGxlZnQpOworICAgIHJldHVybiBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShzZWxmLT5vYl9ieXRlcywgcmlnaHQpOwogfQogCiBQeURvY19TVFJWQVIoZGVjb2RlX2RvYywKQEAgLTI1OTgsMTEgKzI2NTIsMTMgQEAKIGlzIGdpdmVuIGFuZCB0cnVlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi1ieXRlYXJyYXlfc3BsaXRsaW5lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfc3BsaXRsaW5lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogeworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsia2VlcGVuZHMiLCAwfTsKICAgICBpbnQga2VlcGVuZHMgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpzcGxpdGxpbmVzIiwgJmtlZXBlbmRzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGk6c3BsaXRsaW5lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAma2VlcGVuZHMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRsaW5lcygKQEAgLTI2MTksNyArMjY3NSw3IEBACiBFeGFtcGxlOiBieXRlYXJyYXkuZnJvbWhleCgnQjkgMDFFRicpIC0+IGJ5dGVhcnJheShiJ1xceGI5XFx4MDFcXHhlZicpLiIpOwogCiBzdGF0aWMgaW50Ci1oZXhfZGlnaXRfdG9faW50KFB5X1VOSUNPREUgYykKK2hleF9kaWdpdF90b19pbnQoUHlfVUNTNCBjKQogewogICAgIGlmIChjID49IDEyOCkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMjYzOSwxNSArMjY5NSwyMCBAQAogewogICAgIFB5T2JqZWN0ICpuZXdieXRlcywgKmhleG9iajsKICAgICBjaGFyICpidWY7Ci0gICAgUHlfVU5JQ09ERSAqaGV4OwogICAgIFB5X3NzaXplX3QgaGV4bGVuLCBieXRlc2xlbiwgaSwgajsKICAgICBpbnQgdG9wLCBib3Q7CisgICAgdm9pZCAqZGF0YTsKKyAgICB1bnNpZ25lZCBpbnQga2luZDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpmcm9taGV4IiwgJmhleG9iaikpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soaGV4b2JqKSk7Ci0gICAgaGV4bGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKGhleG9iaik7Ci0gICAgaGV4ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoaGV4b2JqKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGhleG9iaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChoZXhvYmopOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShoZXhvYmopOworICAgIGhleGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGhleG9iaik7CisKICAgICBieXRlc2xlbiA9IGhleGxlbi8yOyAvKiBUaGlzIG92ZXJlc3RpbWF0ZXMgaWYgdGhlcmUgYXJlIHNwYWNlcyAqLwogICAgIG5ld2J5dGVzID0gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnl0ZXNsZW4pOwogICAgIGlmICghbmV3Ynl0ZXMpCkBAIC0yNjU1LDEyICsyNzE2LDEyIEBACiAgICAgYnVmID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKG5ld2J5dGVzKTsKICAgICBmb3IgKGkgPSBqID0gMDsgaSA8IGhleGxlbjsgaSArPSAyKSB7CiAgICAgICAgIC8qIHNraXAgb3ZlciBzcGFjZXMgaW4gdGhlIGlucHV0ICovCi0gICAgICAgIHdoaWxlIChoZXhbaV0gPT0gJyAnKQorICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgPT0gJyAnKQogICAgICAgICAgICAgaSsrOwogICAgICAgICBpZiAoaSA+PSBoZXhsZW4pCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgdG9wID0gaGV4X2RpZ2l0X3RvX2ludChoZXhbaV0pOwotICAgICAgICBib3QgPSBoZXhfZGlnaXRfdG9faW50KGhleFtpKzFdKTsKKyAgICAgICAgdG9wID0gaGV4X2RpZ2l0X3RvX2ludChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7CisgICAgICAgIGJvdCA9IGhleF9kaWdpdF90b19pbnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSsxKSk7CiAgICAgICAgIGlmICh0b3AgPT0gLTEgfHwgYm90ID09IC0xKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLWhleGFkZWNpbWFsIG51bWJlciBmb3VuZCBpbiAiCkBAIC0yNjc4LDI2ICsyNzM5LDU5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9yZWR1Y2UoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCitfY29tbW9uX3JlZHVjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IHByb3RvKQogewotICAgIFB5T2JqZWN0ICpsYXRpbjEsICpkaWN0OwotICAgIGlmIChzZWxmLT5vYl9ieXRlcykKLSAgICAgICAgbGF0aW4xID0gUHlVbmljb2RlX0RlY29kZUxhdGluMShzZWxmLT5vYl9ieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9TSVpFKHNlbGYpLCBOVUxMKTsKLSAgICBlbHNlCi0gICAgICAgIGxhdGluMSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKKyAgICBQeU9iamVjdCAqZGljdDsKKyAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CiAKLSAgICBkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QgKilzZWxmLCAiX19kaWN0X18iKTsKKyAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBkaWN0ID0gUHlfTm9uZTsKICAgICAgICAgUHlfSU5DUkVGKGRpY3QpOwogICAgIH0KIAotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTyhOcylOKSIsIFB5X1RZUEUoc2VsZiksIGxhdGluMSwgImxhdGluLTEiLCBkaWN0KTsKKyAgICBpZiAocHJvdG8gPCAzKSB7CisgICAgICAgIC8qIHVzZSBzdHIgYmFzZWQgcmVkdWN0aW9uIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAyLnggKi8KKyAgICAgICAgUHlPYmplY3QgKmxhdGluMTsKKyAgICAgICAgaWYgKHNlbGYtPm9iX2J5dGVzKQorICAgICAgICAgICAgbGF0aW4xID0gUHlVbmljb2RlX0RlY29kZUxhdGluMShzZWxmLT5vYl9ieXRlcywgUHlfU0laRShzZWxmKSwgTlVMTCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxhdGluMSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihPKE5zKU4pIiwgUHlfVFlQRShzZWxmKSwgbGF0aW4xLCAibGF0aW4tMSIsIGRpY3QpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogdXNlIG1vcmUgZWZmaWNpZW50IGJ5dGUgYmFzZWQgcmVkdWN0aW9uICovCisgICAgICAgIGlmIChzZWxmLT5vYl9ieXRlcykgeworICAgICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihPKHkjKU4pIiwgUHlfVFlQRShzZWxmKSwgc2VsZi0+b2JfYnl0ZXMsIFB5X1NJWkUoc2VsZiksIGRpY3QpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihPKClOKSIsIFB5X1RZUEUoc2VsZiksIGRpY3QpOworICAgICAgICB9CisgICAgfQorfQorCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcmVkdWNlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQoreworICAgIHJldHVybiBfY29tbW9uX3JlZHVjZShzZWxmLCAyKTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9leF9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JlZHVjZV9leChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHByb3RvID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6X19yZWR1Y2VfZXhfXyIsICZwcm90bykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIF9jb21tb25fcmVkdWNlKHNlbGYsIHByb3RvKTsKIH0KIAogUHlEb2NfU1RSVkFSKHNpemVvZl9kb2MsCkBAIC0yNzQxLDExICsyODM1LDE0IEBACiBieXRlYXJyYXlfbWV0aG9kc1tdID0gewogICAgIHsiX19hbGxvY19fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9hbGxvYywgTUVUSF9OT0FSR1MsIGFsbG9jX2RvY30sCiAgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZWR1Y2UsIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7Il9fcmVkdWNlX2V4X18iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JlZHVjZV9leCwgTUVUSF9WQVJBUkdTLCByZWR1Y2VfZXhfZG9jfSwKICAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NpemVvZiwgTUVUSF9OT0FSR1MsIHNpemVvZl9kb2N9LAogICAgIHsiYXBwZW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9hcHBlbmQsIE1FVEhfTywgYXBwZW5kX19kb2NfX30sCiAgICAgeyJjYXBpdGFsaXplIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jYXBpdGFsaXplLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2NhcGl0YWxpemVfX2RvY19ffSwKICAgICB7ImNlbnRlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2VudGVyLCBNRVRIX1ZBUkFSR1MsIGNlbnRlcl9fZG9jX199LAorICAgIHsiY2xlYXIiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2NsZWFyLCBNRVRIX05PQVJHUywgY2xlYXJfX2RvY19ffSwKKyAgICB7ImNvcHkiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2NvcHksIE1FVEhfTk9BUkdTLCBjb3B5X19kb2NfX30sCiAgICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfY291bnQsIE1FVEhfVkFSQVJHUywgY291bnRfX2RvY19ffSwKICAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZGVjb2RlLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBkZWNvZGVfZG9jfSwKICAgICB7ImVuZHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9lbmRzd2l0aCwgTUVUSF9WQVJBUkdTLCBlbmRzd2l0aF9fZG9jX199LApAQCAtMjc4NiwxMSArMjg4MywxMSBAQAogICAgIHsicmluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yaW5kZXgsIE1FVEhfVkFSQVJHUywgcmluZGV4X19kb2NfX30sCiAgICAgeyJyanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfcmp1c3QsIE1FVEhfVkFSQVJHUywgcmp1c3RfX2RvY19ffSwKICAgICB7InJwYXJ0aXRpb24iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JwYXJ0aXRpb24sIE1FVEhfTywgcnBhcnRpdGlvbl9fZG9jX199LAotICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yc3BsaXQsIE1FVEhfVkFSQVJHUywgcnNwbGl0X19kb2NfX30sCisgICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JzcGxpdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcnNwbGl0X19kb2NfX30sCiAgICAgeyJyc3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JzdHJpcCwgTUVUSF9WQVJBUkdTLCByc3RyaXBfX2RvY19ffSwKLSAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdCwgTUVUSF9WQVJBUkdTLCBzcGxpdF9fZG9jX199LAotICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3BsaXRsaW5lcywgTUVUSF9WQVJBUkdTLAotICAgICBzcGxpdGxpbmVzX19kb2NfX30sCisgICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3BsaXQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHNwbGl0X19kb2NfX30sCisgICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdGxpbmVzLAorICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBzcGxpdGxpbmVzX19kb2NfX30sCiAgICAgeyJzdGFydHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zdGFydHN3aXRoLCBNRVRIX1ZBUkFSR1MgLAogICAgICBzdGFydHN3aXRoX19kb2NfX30sCiAgICAgeyJzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3RyaXAsIE1FVEhfVkFSQVJHUywgc3RyaXBfX2RvY19ffSwKQEAgLTI5MTIsNyArMzAwOSw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2FycmF5aXRlcl9sZW5ndGhfaGludChieXRlc2l0ZXJvYmplY3QgKml0KQorYnl0ZWFycmF5aXRlcl9sZW5ndGhfaGludChieXRlc2l0ZXJvYmplY3QgKml0KQogewogICAgIFB5X3NzaXplX3QgbGVuID0gMDsKICAgICBpZiAoaXQtPml0X3NlcSkKQEAgLTI5MjMsOSArMzAyMCw0MSBAQAogUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywKICAgICAiUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlpdGVyX3JlZHVjZShieXRlc2l0ZXJvYmplY3QgKml0KQoreworICAgIGlmIChpdC0+aXRfc2VxICE9IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTyluIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPml0X3NlcSwgaXQtPml0X2luZGV4KTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdCAqdSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKTsKKyAgICAgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIHUpOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheWl0ZXJfc2V0c3RhdGUoYnl0ZXNpdGVyb2JqZWN0ICppdCwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKKyAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgaW5kZXggPSAwOworICAgIGl0LT5pdF9pbmRleCA9IGluZGV4OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0c3RhdGVfZG9jLCAiU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLiIpOworCiBzdGF0aWMgUHlNZXRob2REZWYgYnl0ZWFycmF5aXRlcl9tZXRob2RzW10gPSB7Ci0gICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pYnl0ZXNhcnJheWl0ZXJfbGVuZ3RoX2hpbnQsIE1FVEhfTk9BUkdTLAorICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheWl0ZXJfbGVuZ3RoX2hpbnQsIE1FVEhfTk9BUkdTLAogICAgICBsZW5ndGhfaGludF9kb2N9LAorICAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilieXRlYXJyYXlpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheWl0ZXJfc2V0c3RhdGUsIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgTlVMTH0gLyogc2VudGluZWwgKi8KIH07CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jIGIvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKaW5kZXggNzIzM2NlYS4uZWYzYzJmNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKKysrIGIvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKQEAgLTI0OCwxMiArMjQ4LDggQEAKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAKLSAgICBQeV9NRU1DUFkocmVzdWx0LCBjcHRyLCBsZW4pOwotCiAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgIGludCBjID0gUHlfQ0hBUk1BU0socmVzdWx0W2ldKTsKLSAgICAgICAgaWYgKFB5X0lTVVBQRVIoYykpCi0gICAgICAgICAgICByZXN1bHRbaV0gPSBQeV9UT0xPV0VSKGMpOworICAgICAgICByZXN1bHRbaV0gPSBQeV9UT0xPV0VSKCh1bnNpZ25lZCBjaGFyKSBjcHRyW2ldKTsKICAgICB9CiB9CiAKQEAgLTI2OCwxMiArMjY0LDggQEAKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAKLSAgICBQeV9NRU1DUFkocmVzdWx0LCBjcHRyLCBsZW4pOwotCiAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgIGludCBjID0gUHlfQ0hBUk1BU0socmVzdWx0W2ldKTsKLSAgICAgICAgaWYgKFB5X0lTTE9XRVIoYykpCi0gICAgICAgICAgICByZXN1bHRbaV0gPSBQeV9UT1VQUEVSKGMpOworICAgICAgICByZXN1bHRbaV0gPSBQeV9UT1VQUEVSKCh1bnNpZ25lZCBjaGFyKSBjcHRyW2ldKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZXNvYmplY3QuYyBiL09iamVjdHMvYnl0ZXNvYmplY3QuYwppbmRleCBjYjU2NzliLi40Nzg5OGZlIDEwMDY0NAotLS0gYS9PYmplY3RzL2J5dGVzb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9ieXRlc29iamVjdC5jCkBAIC00MSwxMCArNDEsNiBAQAogI2RlZmluZSBQeUJ5dGVzT2JqZWN0X1NJWkUgKG9mZnNldG9mKFB5Qnl0ZXNPYmplY3QsIG9iX3N2YWwpICsgMSkKIAogLyoKLSAgIEZvciBib3RoIFB5Qnl0ZXNfRnJvbVN0cmluZygpIGFuZCBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCksIHRoZQotICAgcGFyYW1ldGVyIGBzaXplJyBkZW5vdGVzIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGFsbG9jYXRlLCBub3QgY291bnRpbmcgYW55Ci0gICBudWxsIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KLQogICAgRm9yIFB5Qnl0ZXNfRnJvbVN0cmluZygpLCB0aGUgcGFyYW1ldGVyIGBzdHInIHBvaW50cyB0byBhIG51bGwtdGVybWluYXRlZAogICAgc3RyaW5nIGNvbnRhaW5pbmcgZXhhY3RseSBgc2l6ZScgYnl0ZXMuCiAKQEAgLTYxLDggKzU3LDggQEAKIAogICAgVGhlIFB5T2JqZWN0IG1lbWJlciBgb3AtPm9iX3NpemUnLCB3aGljaCBkZW5vdGVzIHRoZSBudW1iZXIgb2YgImV4dHJhCiAgICBpdGVtcyIgaW4gYSB2YXJpYWJsZS1zaXplIG9iamVjdCwgd2lsbCBjb250YWluIHRoZSBudW1iZXIgb2YgYnl0ZXMKLSAgIGFsbG9jYXRlZCBmb3Igc3RyaW5nIGRhdGEsIG5vdCBjb3VudGluZyB0aGUgbnVsbCB0ZXJtaW5hdGluZyBjaGFyYWN0ZXIuICBJdAotICAgaXMgdGhlcmVmb3JlIGVxdWFsIHRvIHRoZSBlcXVhbCB0byB0aGUgYHNpemUnIHBhcmFtZXRlciAoZm9yCisgICBhbGxvY2F0ZWQgZm9yIHN0cmluZyBkYXRhLCBub3QgY291bnRpbmcgdGhlIG51bGwgdGVybWluYXRpbmcgY2hhcmFjdGVyLgorICAgSXQgaXMgdGhlcmVmb3JlIGVxdWFsIHRvIHRoZSBgc2l6ZScgcGFyYW1ldGVyIChmb3IKICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKSkgb3IgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIHRoZSBgc3RyJwogICAgcGFyYW1ldGVyIChmb3IgUHlCeXRlc19Gcm9tU3RyaW5nKCkpLgogKi8KQEAgLTQ3MSw3ICs0NjcsNyBAQAogICAgICAgICAgICAgaWYgKCFlcnJvcnMgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApIHsKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgXFx4IGVzY2FwZSBhdCBwb3NpdGlvbiAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzIC0gMiAtIChlbmQgLSBsZW4pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyAtIDIgLSAoZW5kIC0gbGVuKSk7CiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoc3RyY21wKGVycm9ycywgInJlcGxhY2UiKSA9PSAwKSB7CkBAIC01NzMsNzYgKzU2OSw3MCBAQAogUHlPYmplY3QgKgogUHlCeXRlc19SZXByKFB5T2JqZWN0ICpvYmosIGludCBzbWFydHF1b3RlcykKIHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciAqaGV4ZGlnaXRzID0gIjAxMjM0NTY3ODlhYmNkZWYiOwogICAgIHJlZ2lzdGVyIFB5Qnl0ZXNPYmplY3QqIG9wID0gKFB5Qnl0ZXNPYmplY3QqKSBvYmo7Ci0gICAgUHlfc3NpemVfdCBsZW5ndGggPSBQeV9TSVpFKG9wKTsKLSAgICBzaXplX3QgbmV3c2l6ZTsKKyAgICBQeV9zc2l6ZV90IGksIGxlbmd0aCA9IFB5X1NJWkUob3ApOworICAgIHNpemVfdCBuZXdzaXplLCBzcXVvdGVzLCBkcXVvdGVzOwogICAgIFB5T2JqZWN0ICp2OwotICAgIGlmIChsZW5ndGggPiAoUFlfU1NJWkVfVF9NQVggLSAzKSAvIDQpIHsKKyAgICB1bnNpZ25lZCBjaGFyIHF1b3RlLCAqcywgKnA7CisKKyAgICAvKiBDb21wdXRlIHNpemUgb2Ygb3V0cHV0IHN0cmluZyAqLworICAgIHNxdW90ZXMgPSBkcXVvdGVzID0gMDsKKyAgICBuZXdzaXplID0gMzsgLyogYicnICovCisgICAgcyA9ICh1bnNpZ25lZCBjaGFyKilvcC0+b2Jfc3ZhbDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgc3dpdGNoKHNbaV0pIHsKKyAgICAgICAgY2FzZSAnXCcnOiBzcXVvdGVzKys7IG5ld3NpemUrKzsgYnJlYWs7CisgICAgICAgIGNhc2UgJyInOiAgZHF1b3RlcysrOyBuZXdzaXplKys7IGJyZWFrOworICAgICAgICBjYXNlICdcXCc6IGNhc2UgJ1x0JzogY2FzZSAnXG4nOiBjYXNlICdccic6CisgICAgICAgICAgICBuZXdzaXplICs9IDI7IGJyZWFrOyAvKiBcQyAqLworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKHNbaV0gPCAnICcgfHwgc1tpXSA+PSAweDdmKQorICAgICAgICAgICAgICAgIG5ld3NpemUgKz0gNDsgLyogXHhISCAqLworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5ld3NpemUrKzsKKyAgICAgICAgfQorICAgIH0KKyAgICBxdW90ZSA9ICdcJyc7CisgICAgaWYgKHNtYXJ0cXVvdGVzICYmIHNxdW90ZXMgJiYgIWRxdW90ZXMpCisgICAgICAgIHF1b3RlID0gJyInOworICAgIGlmIChzcXVvdGVzICYmIHF1b3RlID09ICdcJycpCisgICAgICAgIG5ld3NpemUgKz0gc3F1b3RlczsKKworICAgIGlmIChuZXdzaXplID4gKFBZX1NTSVpFX1RfTUFYIC0gc2l6ZW9mKFB5VW5pY29kZU9iamVjdCkgLSAxKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICJieXRlcyBvYmplY3QgaXMgdG9vIGxhcmdlIHRvIG1ha2UgcmVwciIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbmV3c2l6ZSA9IDMgKyA0ICogbGVuZ3RoOwotICAgIHYgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgbmV3c2l6ZSk7CisKKyAgICB2ID0gUHlVbmljb2RlX05ldyhuZXdzaXplLCAxMjcpOwogICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgYzsKLSAgICAgICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpOwotICAgICAgICBpbnQgcXVvdGU7CisgICAgcCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHYpOwogCi0gICAgICAgIC8qIEZpZ3VyZSBvdXQgd2hpY2ggcXVvdGUgdG8gdXNlOyBzaW5nbGUgaXMgcHJlZmVycmVkICovCi0gICAgICAgIHF1b3RlID0gJ1wnJzsKLSAgICAgICAgaWYgKHNtYXJ0cXVvdGVzKSB7Ci0gICAgICAgICAgICBjaGFyICp0ZXN0LCAqc3RhcnQ7Ci0gICAgICAgICAgICBzdGFydCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG9wKTsKLSAgICAgICAgICAgIGZvciAodGVzdCA9IHN0YXJ0OyB0ZXN0IDwgc3RhcnQrbGVuZ3RoOyArK3Rlc3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoKnRlc3QgPT0gJyInKSB7Ci0gICAgICAgICAgICAgICAgICAgIHF1b3RlID0gJ1wnJzsgLyogYmFjayB0byBzaW5nbGUgKi8KLSAgICAgICAgICAgICAgICAgICAgZ290byBkZWNpZGVkOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmICgqdGVzdCA9PSAnXCcnKQotICAgICAgICAgICAgICAgICAgICBxdW90ZSA9ICciJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRlY2lkZWQ6Ci0gICAgICAgICAgICA7CisgICAgKnArKyA9ICdiJywgKnArKyA9IHF1b3RlOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBvcC0+b2Jfc3ZhbFtpXTsKKyAgICAgICAgaWYgKGMgPT0gcXVvdGUgfHwgYyA9PSAnXFwnKQorICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSBjOworICAgICAgICBlbHNlIGlmIChjID09ICdcdCcpCisgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9ICd0JzsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAnXG4nKQorICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAnbic7CisgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1xyJykKKyAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gJ3InOworICAgICAgICBlbHNlIGlmIChjIDwgJyAnIHx8IGMgPj0gMHg3ZikgeworICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAqcCsrID0gJ3gnOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soYyAmIDB4ZjApID4+IDRdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjICYgMHhmXTsKICAgICAgICAgfQotCi0gICAgICAgICpwKysgPSAnYicsICpwKysgPSBxdW90ZTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAvKiBUaGVyZSdzIGF0IGxlYXN0IGVub3VnaCByb29tIGZvciBhIGhleCBlc2NhcGUKLSAgICAgICAgICAgICAgIGFuZCBhIGNsb3NpbmcgcXVvdGUuICovCi0gICAgICAgICAgICBhc3NlcnQobmV3c2l6ZSAtIChwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpID49IDUpOwotICAgICAgICAgICAgYyA9IG9wLT5vYl9zdmFsW2ldOwotICAgICAgICAgICAgaWYgKGMgPT0gcXVvdGUgfHwgYyA9PSAnXFwnKQotICAgICAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gYzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1x0JykKLSAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9ICd0JzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1xuJykKLSAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9ICduJzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1xyJykKLSAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9ICdyJzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGMgPCAnICcgfHwgYyA+PSAweDdmKSB7Ci0gICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAgICAgKnArKyA9ICd4JzsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjICYgMHhmMCkgPj4gNF07Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjICYgMHhmXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAqcCsrID0gYzsKLSAgICAgICAgfQotICAgICAgICBhc3NlcnQobmV3c2l6ZSAtIChwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpID49IDEpOwotICAgICAgICAqcCsrID0gcXVvdGU7Ci0gICAgICAgICpwID0gJ1wwJzsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9SZXNpemUoJnYsIChwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpKSkgewotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHY7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpwKysgPSBjOwogICAgIH0KKyAgICAqcCsrID0gcXVvdGU7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh2LCAxKSk7CisgICAgcmV0dXJuIHY7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC04NzYsMzUgKzg2NiwxMSBAQAogc3RhdGljIFB5X2hhc2hfdAogYnl0ZXNfaGFzaChQeUJ5dGVzT2JqZWN0ICphKQogewotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgbGVuOwotICAgIHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgKnA7Ci0gICAgcmVnaXN0ZXIgUHlfdWhhc2hfdCB4OyAgLyogVW5zaWduZWQgZm9yIGRlZmluZWQgb3ZlcmZsb3cgYmVoYXZpb3IuICovCi0KLSNpZmRlZiBQeV9ERUJVRwotICAgIGFzc2VydChfUHlfSGFzaFNlY3JldF9Jbml0aWFsaXplZCk7Ci0jZW5kaWYKLSAgICBpZiAoYS0+b2Jfc2hhc2ggIT0gLTEpCi0gICAgICAgIHJldHVybiBhLT5vYl9zaGFzaDsKLSAgICBsZW4gPSBQeV9TSVpFKGEpOwotICAgIC8qCi0gICAgICBXZSBtYWtlIHRoZSBoYXNoIG9mIHRoZSBlbXB0eSBzdHJpbmcgYmUgMCwgcmF0aGVyIHRoYW4gdXNpbmcKLSAgICAgIChwcmVmaXggXiBzdWZmaXgpLCBzaW5jZSB0aGlzIHNsaWdodGx5IG9iZnVzY2F0ZXMgdGhlIGhhc2ggc2VjcmV0Ci0gICAgKi8KLSAgICBpZiAobGVuID09IDApIHsKLSAgICAgICAgYS0+b2Jfc2hhc2ggPSAwOwotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoYS0+b2Jfc2hhc2ggPT0gLTEpIHsKKyAgICAgICAgLyogQ2FuJ3QgZmFpbCAqLworICAgICAgICBhLT5vYl9zaGFzaCA9IF9QeV9IYXNoQnl0ZXMoKHVuc2lnbmVkIGNoYXIgKikgYS0+b2Jfc3ZhbCwgUHlfU0laRShhKSk7CiAgICAgfQotICAgIHAgPSAodW5zaWduZWQgY2hhciAqKSBhLT5vYl9zdmFsOwotICAgIHggPSBfUHlfSGFzaFNlY3JldC5wcmVmaXg7Ci0gICAgeCBePSAqcCA8PCA3OwotICAgIHdoaWxlICgtLWxlbiA+PSAwKQotICAgICAgICB4ID0gKF9QeUhBU0hfTVVMVElQTElFUip4KSBeICpwKys7Ci0gICAgeCBePSBQeV9TSVpFKGEpOwotICAgIHggXj0gX1B5X0hhc2hTZWNyZXQuc3VmZml4OwotICAgIGlmICh4ID09IC0xKQotICAgICAgICB4ID0gLTI7Ci0gICAgYS0+b2Jfc2hhc2ggPSB4OwotICAgIHJldHVybiB4OworICAgIHJldHVybiBhLT5vYl9zaGFzaDsKIH0KIAogc3RhdGljIFB5T2JqZWN0KgpAQCAtMTAxMiw3ICs5NzgsNyBAQAogI2RlZmluZSBTVFJJUE5BTUUoaSkgKHN0cmlwZm9ybWF0W2ldKzMpCiAKIFB5RG9jX1NUUlZBUihzcGxpdF9fZG9jX18sCi0iQi5zcGxpdChbc2VwWywgbWF4c3BsaXRdXSkgLT4gbGlzdCBvZiBieXRlc1xuXAorIkIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKSAtPiBsaXN0IG9mIGJ5dGVzXG5cCiBcblwKIFJldHVybiBhIGxpc3Qgb2YgdGhlIHNlY3Rpb25zIGluIEIsIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLlxuXAogSWYgc2VwIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgTm9uZSwgQiBpcyBzcGxpdCBvbiBBU0NJSSB3aGl0ZXNwYWNlXG5cCkBAIC0xMDIwLDE1ICs5ODYsMTcgQEAKIElmIG1heHNwbGl0IGlzIGdpdmVuLCBhdCBtb3N0IG1heHNwbGl0IHNwbGl0cyBhcmUgZG9uZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3NwbGl0KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfc3BsaXQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogeworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgMH07CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBuOwogICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKICAgICBjb25zdCBjaGFyICpzID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZiksICpzdWI7CiAgICAgUHlfYnVmZmVyIHZzdWI7CiAgICAgUHlPYmplY3QgKmxpc3QsICpzdWJvYmogPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8T246c3BsaXQiLCAmc3Vib2JqLCAmbWF4c3BsaXQpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T246c3BsaXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnN1Ym9iaiwgJm1heHNwbGl0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKG1heHNwbGl0IDwgMCkKICAgICAgICAgbWF4c3BsaXQgPSBQWV9TU0laRV9UX01BWDsKQEAgLTExMDAsNyArMTA2OCw3IEBACiB9CiAKIFB5RG9jX1NUUlZBUihyc3BsaXRfX2RvY19fLAotIkIucnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKSAtPiBsaXN0IG9mIGJ5dGVzXG5cCisiQi5yc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKSAtPiBsaXN0IG9mIGJ5dGVzXG5cCiBcblwKIFJldHVybiBhIGxpc3Qgb2YgdGhlIHNlY3Rpb25zIGluIEIsIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLFxuXAogc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiBCIGFuZCB3b3JraW5nIHRvIHRoZSBmcm9udC5cblwKQEAgLTExMTAsMTUgKzEwNzgsMTcgQEAKIAogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcnNwbGl0KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfcnNwbGl0KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNlcCIsICJtYXhzcGxpdCIsIDB9OwogICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKSwgbjsKICAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAgICAgY29uc3QgY2hhciAqcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwogICAgIFB5X2J1ZmZlciB2c3ViOwogICAgIFB5T2JqZWN0ICpsaXN0LCAqc3Vib2JqID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE9uOnJzcGxpdCIsICZzdWJvYmosICZtYXhzcGxpdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPbjpyc3BsaXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnN1Ym9iaiwgJm1heHNwbGl0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKG1heHNwbGl0IDwgMCkKICAgICAgICAgbWF4c3BsaXQgPSBQWV9TU0laRV9UX01BWDsKQEAgLTEyNTksMzEgKzEyMjksNDIgQEAKIGJ5dGVzX2ZpbmRfaW50ZXJuYWwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIGludCBkaXIpCiB7CiAgICAgUHlPYmplY3QgKnN1Ym9iajsKKyAgICBjaGFyIGJ5dGU7CisgICAgUHlfYnVmZmVyIHN1YmJ1ZjsKICAgICBjb25zdCBjaGFyICpzdWI7CiAgICAgUHlfc3NpemVfdCBzdWJfbGVuOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ9MCwgZW5kPVBZX1NTSVpFX1RfTUFYOworICAgIFB5X3NzaXplX3QgcmVzOwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygiZmluZC9yZmluZC9pbmRleC9yaW5kZXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKKyAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX2J5dGUoImZpbmQvcmZpbmQvaW5kZXgvcmluZGV4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgJnN1Ym9iaiwgJmJ5dGUsICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiAtMjsKIAotICAgIGlmIChQeUJ5dGVzX0NoZWNrKHN1Ym9iaikpIHsKLSAgICAgICAgc3ViID0gUHlCeXRlc19BU19TVFJJTkcoc3Vib2JqKTsKLSAgICAgICAgc3ViX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc3Vib2JqKTsKKyAgICBpZiAoc3Vib2JqKSB7CisgICAgICAgIGlmIChfZ2V0YnVmZmVyKHN1Ym9iaiwgJnN1YmJ1ZikgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0yOworCisgICAgICAgIHN1YiA9IHN1YmJ1Zi5idWY7CisgICAgICAgIHN1Yl9sZW4gPSBzdWJidWYubGVuOwogICAgIH0KLSAgICBlbHNlIGlmIChQeU9iamVjdF9Bc0NoYXJCdWZmZXIoc3Vib2JqLCAmc3ViLCAmc3ViX2xlbikpCi0gICAgICAgIC8qIFhYWCAtIHRoZSAiZXhwZWN0ZWQgYSBjaGFyYWN0ZXIgYnVmZmVyIG9iamVjdCIgaXMgcHJldHR5Ci0gICAgICAgICAgIGNvbmZ1c2luZyBmb3IgYSBub24tZXhwZXJ0LiAgcmVtYXAgdG8gc29tZXRoaW5nIGVsc2UgPyAqLwotICAgICAgICByZXR1cm4gLTI7CisgICAgZWxzZSB7CisgICAgICAgIHN1YiA9ICZieXRlOworICAgICAgICBzdWJfbGVuID0gMTsKKyAgICB9CiAKICAgICBpZiAoZGlyID4gMCkKLSAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9maW5kX3NsaWNlKAorICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLAogICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBzdHJpbmdsaWJfcmZpbmRfc2xpY2UoCisgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLAogICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKKworICAgIGlmIChzdWJvYmopCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1YmJ1Zik7CisKKyAgICByZXR1cm4gcmVzOwogfQogCiAKQEAgLTE1MDksMjMgKzE0OTAsMzggQEAKICAgICBQeU9iamVjdCAqc3ViX29iajsKICAgICBjb25zdCBjaGFyICpzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgKnN1YjsKICAgICBQeV9zc2l6ZV90IHN1Yl9sZW47CisgICAgY2hhciBieXRlOwogICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwLCBlbmQgPSBQWV9TU0laRV9UX01BWDsKIAotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoImNvdW50IiwgYXJncywgJnN1Yl9vYmosICZzdGFydCwgJmVuZCkpCisgICAgUHlfYnVmZmVyIHZzdWI7CisgICAgUHlPYmplY3QgKmNvdW50X29iajsKKworICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiY291bnQiLCBhcmdzLCAmc3ViX29iaiwgJmJ5dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5Qnl0ZXNfQ2hlY2soc3ViX29iaikpIHsKLSAgICAgICAgc3ViID0gUHlCeXRlc19BU19TVFJJTkcoc3ViX29iaik7Ci0gICAgICAgIHN1Yl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHN1Yl9vYmopOworICAgIGlmIChzdWJfb2JqKSB7CisgICAgICAgIGlmIChfZ2V0YnVmZmVyKHN1Yl9vYmosICZ2c3ViKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBzdWIgPSB2c3ViLmJ1ZjsKKyAgICAgICAgc3ViX2xlbiA9IHZzdWIubGVuOwogICAgIH0KLSAgICBlbHNlIGlmIChQeU9iamVjdF9Bc0NoYXJCdWZmZXIoc3ViX29iaiwgJnN1YiwgJnN1Yl9sZW4pKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBlbHNlIHsKKyAgICAgICAgc3ViID0gJmJ5dGU7CisgICAgICAgIHN1Yl9sZW4gPSAxOworICAgIH0KIAogICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZikpOwogCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdCgKKyAgICBjb3VudF9vYmogPSBQeUxvbmdfRnJvbVNzaXplX3QoCiAgICAgICAgIHN0cmluZ2xpYl9jb3VudChzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yiwgc3ViX2xlbiwgUFlfU1NJWkVfVF9NQVgpCiAgICAgICAgICk7CisKKyAgICBpZiAoc3ViX29iaikKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdnN1Yik7CisKKyAgICByZXR1cm4gY291bnRfb2JqOwogfQogCiAKQEAgLTIzMzQsMTEgKzIzMzAsMTMgQEAKIGlzIGdpdmVuIGFuZCB0cnVlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi1ieXRlc19zcGxpdGxpbmVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVzX3NwbGl0bGluZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImtlZXBlbmRzIiwgMH07CiAgICAgaW50IGtlZXBlbmRzID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6c3BsaXRsaW5lcyIsICZrZWVwZW5kcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxpOnNwbGl0bGluZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmtlZXBlbmRzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICByZXR1cm4gc3RyaW5nbGliX3NwbGl0bGluZXMoCkBAIC0yMzU2LDcgKzIzNTQsNyBAQAogRXhhbXBsZTogYnl0ZXMuZnJvbWhleCgnQjkgMDFFRicpIC0+IGInXFx4YjlcXHgwMVxceGVmJy4iKTsKIAogc3RhdGljIGludAotaGV4X2RpZ2l0X3RvX2ludChQeV9VTklDT0RFIGMpCitoZXhfZGlnaXRfdG9faW50KFB5X1VDUzQgYykKIHsKICAgICBpZiAoYyA+PSAxMjgpCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTIzNzYsMTUgKzIzNzQsMjAgQEAKIHsKICAgICBQeU9iamVjdCAqbmV3c3RyaW5nLCAqaGV4b2JqOwogICAgIGNoYXIgKmJ1ZjsKLSAgICBQeV9VTklDT0RFICpoZXg7CiAgICAgUHlfc3NpemVfdCBoZXhsZW4sIGJ5dGVzbGVuLCBpLCBqOwogICAgIGludCB0b3AsIGJvdDsKKyAgICB2b2lkICpkYXRhOworICAgIHVuc2lnbmVkIGludCBraW5kOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmZyb21oZXgiLCAmaGV4b2JqKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhoZXhvYmopKTsKLSAgICBoZXhsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoaGV4b2JqKTsKLSAgICBoZXggPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShoZXhvYmopOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoaGV4b2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGhleG9iaik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKGhleG9iaik7CisgICAgaGV4bGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaGV4b2JqKTsKKwogICAgIGJ5dGVzbGVuID0gaGV4bGVuLzI7IC8qIFRoaXMgb3ZlcmVzdGltYXRlcyBpZiB0aGVyZSBhcmUgc3BhY2VzICovCiAgICAgbmV3c3RyaW5nID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBieXRlc2xlbik7CiAgICAgaWYgKCFuZXdzdHJpbmcpCkBAIC0yMzkyLDEyICsyMzk1LDEyIEBACiAgICAgYnVmID0gUHlCeXRlc19BU19TVFJJTkcobmV3c3RyaW5nKTsKICAgICBmb3IgKGkgPSBqID0gMDsgaSA8IGhleGxlbjsgaSArPSAyKSB7CiAgICAgICAgIC8qIHNraXAgb3ZlciBzcGFjZXMgaW4gdGhlIGlucHV0ICovCi0gICAgICAgIHdoaWxlIChoZXhbaV0gPT0gJyAnKQorICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgPT0gJyAnKQogICAgICAgICAgICAgaSsrOwogICAgICAgICBpZiAoaSA+PSBoZXhsZW4pCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgdG9wID0gaGV4X2RpZ2l0X3RvX2ludChoZXhbaV0pOwotICAgICAgICBib3QgPSBoZXhfZGlnaXRfdG9faW50KGhleFtpKzFdKTsKKyAgICAgICAgdG9wID0gaGV4X2RpZ2l0X3RvX2ludChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7CisgICAgICAgIGJvdCA9IGhleF9kaWdpdF90b19pbnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSsxKSk7CiAgICAgICAgIGlmICh0b3AgPT0gLTEgfHwgYm90ID09IC0xKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLWhleGFkZWNpbWFsIG51bWJlciBmb3VuZCBpbiAiCkBAIC0yNDc3LDEwICsyNDgwLDEwIEBACiAgICAgeyJyanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfcmp1c3QsIE1FVEhfVkFSQVJHUywgcmp1c3RfX2RvY19ffSwKICAgICB7InJwYXJ0aXRpb24iLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcnBhcnRpdGlvbiwgTUVUSF9PLAogICAgICBycGFydGl0aW9uX19kb2NfX30sCi0gICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcnNwbGl0LCBNRVRIX1ZBUkFSR1MsIHJzcGxpdF9fZG9jX199LAorICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JzcGxpdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcnNwbGl0X19kb2NfX30sCiAgICAgeyJyc3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcnN0cmlwLCBNRVRIX1ZBUkFSR1MsIHJzdHJpcF9fZG9jX199LAotICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXQsIE1FVEhfVkFSQVJHUywgc3BsaXRfX2RvY19ffSwKLSAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXRsaW5lcywgTUVUSF9WQVJBUkdTLAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHNwbGl0X19kb2NfX30sCisgICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3NwbGl0bGluZXMsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgIHNwbGl0bGluZXNfX2RvY19ffSwKICAgICB7InN0YXJ0c3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3RhcnRzd2l0aCwgTUVUSF9WQVJBUkdTLAogICAgICBzdGFydHN3aXRoX19kb2NfX30sCkBAIC0yNTA3LDggKzI1MTAsMTAgQEAKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmV3ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZnVuYzsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzb3VyY2UiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgMH07CisgICAgX1B5X0lERU5USUZJRVIoX19ieXRlc19fKTsKIAogICAgIGlmICh0eXBlICE9ICZQeUJ5dGVzX1R5cGUpCiAgICAgICAgIHJldHVybiBzdHJfc3VidHlwZV9uZXcodHlwZSwgYXJncywga3dkcyk7CkBAIC0yNTM4LDYgKzI1NDMsMjggQEAKICAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sobmV3KSk7CiAgICAgICAgIHJldHVybiBuZXc7CiAgICAgfQorCisgICAgLyogV2UnZCBsaWtlIHRvIGNhbGwgUHlPYmplY3RfQnl0ZXMgaGVyZSwgYnV0IHdlIG5lZWQgdG8gY2hlY2sgZm9yIGFuCisgICAgICAgaW50ZWdlciBhcmd1bWVudCBiZWZvcmUgZGVmZXJyaW5nIHRvIFB5Qnl0ZXNfRnJvbU9iamVjdCwgc29tZXRoaW5nCisgICAgICAgUHlPYmplY3RfQnl0ZXMgZG9lc24ndCBkby4gKi8KKyAgICBmdW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoeCwgJlB5SWRfX19ieXRlc19fKTsKKyAgICBpZiAoZnVuYyAhPSBOVUxMKSB7CisgICAgICAgIG5ldyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZnVuYywgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgaWYgKG5ldyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhuZXcpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJfX2J5dGVzX18gcmV0dXJuZWQgbm9uLWJ5dGVzICh0eXBlICUuMjAwcykiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUobmV3KS0+dHBfbmFtZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYobmV3KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJldHVybiBuZXc7CisgICAgfQorICAgIGVsc2UgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgLyogSXMgaXQgYW4gaW50ZWdlcj8gKi8KICAgICBzaXplID0gUHlOdW1iZXJfQXNTc2l6ZV90KHgsIFB5RXhjX092ZXJmbG93RXJyb3IpOwogICAgIGlmIChzaXplID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKQEAgLTI1NTEsMTIgKzI1NzgsMTAgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIG5ldyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7Ci0gICAgICAgIGlmIChuZXcgPT0gTlVMTCkgeworICAgICAgICBpZiAobmV3ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoc2l6ZSA+IDApIHsKKyAgICAgICAgaWYgKHNpemUgPiAwKQogICAgICAgICAgICAgbWVtc2V0KCgoUHlCeXRlc09iamVjdCopbmV3KS0+b2Jfc3ZhbCwgMCwgc2l6ZSk7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuIG5ldzsKICAgICB9CiAKQEAgLTI1NjYsNyArMjU5MSw4IEBACiAgICAgICAgICAgICAiZW5jb2Rpbmcgb3IgZXJyb3JzIHdpdGhvdXQgYSBzdHJpbmcgYXJndW1lbnQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeU9iamVjdF9CeXRlcyh4KTsKKworICAgIHJldHVybiBQeUJ5dGVzX0Zyb21PYmplY3QoeCk7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTI1NzksNiArMjYwNSwxMiBAQAogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2tFeGFjdCh4KSkgeworICAgICAgICBQeV9JTkNSRUYoeCk7CisgICAgICAgIHJldHVybiB4OworICAgIH0KKwogICAgIC8qIFVzZSB0aGUgbW9kZXJuIGJ1ZmZlciBpbnRlcmZhY2UgKi8KICAgICBpZiAoUHlPYmplY3RfQ2hlY2tCdWZmZXIoeCkpIHsKICAgICAgICAgUHlfYnVmZmVyIHZpZXc7CkBAIC0yNTg3LDcgKzI2MTksNiBAQAogICAgICAgICBuZXcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHZpZXcubGVuKTsKICAgICAgICAgaWYgKCFuZXcpCiAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIC8qIFhYWChicmV0dC5jYW5ub24pOiBCZXR0ZXIgd2F5IHRvIGdldCB0byBpbnRlcm5hbCBidWZmZXI/ICovCiAgICAgICAgIGlmIChQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoKChQeUJ5dGVzT2JqZWN0ICopbmV3KS0+b2Jfc3ZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmlldywgdmlldy5sZW4sICdDJykgPCAwKQogICAgICAgICAgICAgZ290byBmYWlsOwpAQCAtMjg2MSwxNDkgKzI4OTIsNiBAQAogICAgIHJldHVybiAwOwogfQogCi0vKiBfUHlCeXRlc19Gb3JtYXRMb25nIGVtdWxhdGVzIHRoZSBmb3JtYXQgY29kZXMgZCwgdSwgbywgeCBhbmQgWCwgYW5kCi0gKiB0aGUgRl9BTFQgZmxhZywgZm9yIFB5dGhvbidzIGxvbmcgKHVuYm91bmRlZCkgaW50cy4gIEl0J3Mgbm90IHVzZWQgZm9yCi0gKiBQeXRob24ncyByZWd1bGFyIGludHMuCi0gKiBSZXR1cm4gdmFsdWU6ICBhIG5ldyBQeUJ5dGVzKiwgb3IgTlVMTCBpZiBlcnJvci4KLSAqICAuICAqcGJ1ZiBpcyBzZXQgdG8gcG9pbnQgaW50byBpdCwKLSAqICAgICAqcGxlbiBzZXQgdG8gdGhlICMgb2YgY2hhcnMgZm9sbG93aW5nIHRoYXQuCi0gKiAgICAgQ2FsbGVyIG11c3QgZGVjcmVmIGl0IHdoZW4gZG9uZSB1c2luZyBwYnVmLgotICogICAgIFRoZSBzdHJpbmcgc3RhcnRpbmcgYXQgKnBidWYgaXMgb2YgdGhlIGZvcm0KLSAqICAgICAgICAgIi0iPyAoIjB4IiB8ICIwWCIpPyBkaWdpdCsKLSAqICAgICAiMHgiLyIwWCIgYXJlIHByZXNlbnQgb25seSBmb3IgeCBhbmQgWCBjb252ZXJzaW9ucywgd2l0aCBGX0FMVAotICogICAgICAgICBzZXQgaW4gZmxhZ3MuICBUaGUgY2FzZSBvZiBoZXggZGlnaXRzIHdpbGwgYmUgY29ycmVjdCwKLSAqICAgICBUaGVyZSB3aWxsIGJlIGF0IGxlYXN0IHByZWMgZGlnaXRzLCB6ZXJvLWZpbGxlZCBvbiB0aGUgbGVmdCBpZgotICogICAgICAgICBuZWNlc3NhcnkgdG8gZ2V0IHRoYXQgbWFueS4KLSAqIHZhbCAgICAgICAgICBvYmplY3QgdG8gYmUgY29udmVydGVkCi0gKiBmbGFncyAgICAgICAgYml0bWFzayBvZiBmb3JtYXQgZmxhZ3M7IG9ubHkgRl9BTFQgaXMgbG9va2VkIGF0Ci0gKiBwcmVjICAgICAgICAgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzOyAwLWZpbGwgb24gbGVmdCBpZiBuZWVkZWQKLSAqIHR5cGUgICAgICAgICBhIGNoYXJhY3RlciBpbiBbZHVveFhdOyB1IGFjdHMgdGhlIHNhbWUgYXMgZAotICoKLSAqIENBVVRJT046ICBvLCB4IGFuZCBYIGNvbnZlcnNpb25zIG9uIHJlZ3VsYXIgaW50cyBjYW4gbmV2ZXIKLSAqIHByb2R1Y2UgYSAnLScgc2lnbiwgYnV0IGNhbiBmb3IgUHl0aG9uJ3MgdW5ib3VuZGVkIGludHMuCi0gKi8KLVB5T2JqZWN0KgotX1B5Qnl0ZXNfRm9ybWF0TG9uZyhQeU9iamVjdCAqdmFsLCBpbnQgZmxhZ3MsIGludCBwcmVjLCBpbnQgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipwYnVmLCBpbnQgKnBsZW4pCi17Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgY2hhciAqYnVmOwotICAgIFB5X3NzaXplX3QgaTsKLSAgICBpbnQgc2lnbjsgICAgICAgICAgIC8qIDEgaWYgJy0nLCBlbHNlIDAgKi8KLSAgICBpbnQgbGVuOyAgICAgICAgICAgIC8qIG51bWJlciBvZiBjaGFyYWN0ZXJzICovCi0gICAgUHlfc3NpemVfdCBsbGVuOwotICAgIGludCBudW1kaWdpdHM7ICAgICAgLyogbGVuID09IG51bW5vbmRpZ2l0cyArIG51bWRpZ2l0cyAqLwotICAgIGludCBudW1ub25kaWdpdHMgPSAwOwotCi0gICAgLyogQXZvaWQgZXhjZWVkaW5nIFNTSVpFX1RfTUFYICovCi0gICAgaWYgKHByZWMgPiBJTlRfTUFYLTMpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicHJlY2lzaW9uIHRvbyBsYXJnZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlICdkJzoKLSAgICBjYXNlICd1JzoKLSAgICAgICAgLyogU3BlY2lhbC1jYXNlIGJvb2xlYW46IHdlIHdhbnQgMC8xICovCi0gICAgICAgIGlmIChQeUJvb2xfQ2hlY2sodmFsKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5TnVtYmVyX1RvQmFzZSh2YWwsIDEwKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gUHlfVFlQRSh2YWwpLT50cF9zdHIodmFsKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnbyc6Ci0gICAgICAgIG51bW5vbmRpZ2l0cyA9IDI7Ci0gICAgICAgIHJlc3VsdCA9IFB5TnVtYmVyX1RvQmFzZSh2YWwsIDgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlICd4JzoKLSAgICBjYXNlICdYJzoKLSAgICAgICAgbnVtbm9uZGlnaXRzID0gMjsKLSAgICAgICAgcmVzdWx0ID0gUHlOdW1iZXJfVG9CYXNlKHZhbCwgMTYpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBhc3NlcnQoISIndHlwZScgbm90IGluIFtkdW94WF0iKTsKLSAgICB9Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgYnVmID0gX1B5VW5pY29kZV9Bc1N0cmluZyhyZXN1bHQpOwotICAgIGlmICghYnVmKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICAvKiBUbyBtb2RpZnkgdGhlIHN0cmluZyBpbi1wbGFjZSwgdGhlcmUgY2FuIG9ubHkgYmUgb25lIHJlZmVyZW5jZS4gKi8KLSAgICBpZiAoUHlfUkVGQ05UKHJlc3VsdCkgIT0gMSkgewotICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGxsZW4gPSBQeVVuaWNvZGVfR2V0U2l6ZShyZXN1bHQpOwotICAgIGlmIChsbGVuID4gSU5UX01BWCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgdG9vIGxhcmdlIGluIF9QeUJ5dGVzX0Zvcm1hdExvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGxlbiA9IChpbnQpbGxlbjsKLSAgICBpZiAoYnVmW2xlbi0xXSA9PSAnTCcpIHsKLSAgICAgICAgLS1sZW47Ci0gICAgICAgIGJ1ZltsZW5dID0gJ1wwJzsKLSAgICB9Ci0gICAgc2lnbiA9IGJ1ZlswXSA9PSAnLSc7Ci0gICAgbnVtbm9uZGlnaXRzICs9IHNpZ247Ci0gICAgbnVtZGlnaXRzID0gbGVuIC0gbnVtbm9uZGlnaXRzOwotICAgIGFzc2VydChudW1kaWdpdHMgPiAwKTsKLQotICAgIC8qIEdldCByaWQgb2YgYmFzZSBtYXJrZXIgdW5sZXNzIEZfQUxUICovCi0gICAgaWYgKCgoZmxhZ3MgJiBGX0FMVCkgPT0gMCAmJgotICAgICAgICAodHlwZSA9PSAnbycgfHwgdHlwZSA9PSAneCcgfHwgdHlwZSA9PSAnWCcpKSkgewotICAgICAgICBhc3NlcnQoYnVmW3NpZ25dID09ICcwJyk7Ci0gICAgICAgIGFzc2VydChidWZbc2lnbisxXSA9PSAneCcgfHwgYnVmW3NpZ24rMV0gPT0gJ1gnIHx8Ci0gICAgICAgICAgICAgICBidWZbc2lnbisxXSA9PSAnbycpOwotICAgICAgICBudW1ub25kaWdpdHMgLT0gMjsKLSAgICAgICAgYnVmICs9IDI7Ci0gICAgICAgIGxlbiAtPSAyOwotICAgICAgICBpZiAoc2lnbikKLSAgICAgICAgICAgIGJ1ZlswXSA9ICctJzsKLSAgICAgICAgYXNzZXJ0KGxlbiA9PSBudW1ub25kaWdpdHMgKyBudW1kaWdpdHMpOwotICAgICAgICBhc3NlcnQobnVtZGlnaXRzID4gMCk7Ci0gICAgfQotCi0gICAgLyogRmlsbCB3aXRoIGxlYWRpbmcgemVyb2VzIHRvIG1lZXQgbWluaW11bSB3aWR0aC4gKi8KLSAgICBpZiAocHJlYyA+IG51bWRpZ2l0cykgewotICAgICAgICBQeU9iamVjdCAqcjEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bW5vbmRpZ2l0cyArIHByZWMpOwotICAgICAgICBjaGFyICpiMTsKLSAgICAgICAgaWYgKCFyMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBiMSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHIxKTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bW5vbmRpZ2l0czsgKytpKQotICAgICAgICAgICAgKmIxKysgPSAqYnVmKys7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBwcmVjIC0gbnVtZGlnaXRzOyBpKyspCi0gICAgICAgICAgICAqYjErKyA9ICcwJzsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bWRpZ2l0czsgaSsrKQotICAgICAgICAgICAgKmIxKysgPSAqYnVmKys7Ci0gICAgICAgICpiMSA9ICdcMCc7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICByZXN1bHQgPSByMTsKLSAgICAgICAgYnVmID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICAgICAgbGVuID0gbnVtbm9uZGlnaXRzICsgcHJlYzsKLSAgICB9Ci0KLSAgICAvKiBGaXggdXAgY2FzZSBmb3IgaGV4IGNvbnZlcnNpb25zLiAqLwotICAgIGlmICh0eXBlID09ICdYJykgewotICAgICAgICAvKiBOZWVkIHRvIGNvbnZlcnQgYWxsIGxvd2VyIGNhc2UgbGV0dGVycyB0byB1cHBlciBjYXNlLgotICAgICAgICAgICBhbmQgbmVlZCB0byBjb252ZXJ0IDB4IHRvIDBYIChhbmQgLTB4IHRvIC0wWCkuICovCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLSAgICAgICAgICAgIGlmIChidWZbaV0gPj0gJ2EnICYmIGJ1ZltpXSA8PSAneCcpCi0gICAgICAgICAgICAgICAgYnVmW2ldIC09ICdhJy0nQSc7Ci0gICAgfQotICAgICpwYnVmID0gYnVmOwotICAgICpwbGVuID0gbGVuOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIHZvaWQKIFB5Qnl0ZXNfRmluaSh2b2lkKQogewpAQCAtMzA3Myw5ICsyOTYxLDQzIEBACiBQeURvY19TVFJWQVIobGVuZ3RoX2hpbnRfZG9jLAogICAgICAgICAgICAgICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK3N0cml0ZXJfcmVkdWNlKHN0cml0ZXJvYmplY3QgKml0KQoreworICAgIGlmIChpdC0+aXRfc2VxICE9IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTyluIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPml0X3NlcSwgaXQtPml0X2luZGV4KTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdCAqdSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKTsKKyAgICAgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIHUpOworICAgIH0KK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaXRlcl9zZXRzdGF0ZShzdHJpdGVyb2JqZWN0ICppdCwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKKyAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgaW5kZXggPSAwOworICAgIGl0LT5pdF9pbmRleCA9IGluZGV4OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0c3RhdGVfZG9jLCAiU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLiIpOworCiBzdGF0aWMgUHlNZXRob2REZWYgc3RyaXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pc3RyaXRlcl9sZW4sIE1FVEhfTk9BUkdTLAogICAgICBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXN0cml0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pc3RyaXRlcl9zZXRzdGF0ZSwgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9PYmplY3RzL2NsYXNzb2JqZWN0LmMgYi9PYmplY3RzL2NsYXNzb2JqZWN0LmMKaW5kZXggZjk1Njg1Mi4uY2RjOWIxYyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jbGFzc29iamVjdC5jCisrKyBiL09iamVjdHMvY2xhc3NvYmplY3QuYwpAQCAtMTQsNiArMTQsOCBAQAogI2RlZmluZSBQeU1ldGhvZF9NQVhGUkVFTElTVCAyNTYKICNlbmRpZgogCitfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CisKIFB5T2JqZWN0ICoKIFB5TWV0aG9kX0Z1bmN0aW9uKFB5T2JqZWN0ICppbSkKIHsKQEAgLTE5MCw4ICsxOTIsNyBAQAogICAgICAgICAhUHlNZXRob2RfQ2hlY2soc2VsZikgfHwKICAgICAgICAgIVB5TWV0aG9kX0NoZWNrKG90aGVyKSkKICAgICB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KICAgICBhID0gKFB5TWV0aG9kT2JqZWN0ICopc2VsZjsKICAgICBiID0gKFB5TWV0aG9kT2JqZWN0ICopb3RoZXI7CkBAIC0yMjgsNyArMjI5LDcgQEAKICAgICB9CiAgICAga2xhc3MgPSAoUHlPYmplY3QqKVB5X1RZUEUoc2VsZik7CiAKLSAgICBmdW5jbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZnVuYywgIl9fbmFtZV9fIik7CisgICAgZnVuY25hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZ1bmMsICZQeUlkX19fbmFtZV9fKTsKICAgICBpZiAoZnVuY25hbWUgPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNDIsNyArMjQzLDcgQEAKICAgICBpZiAoa2xhc3MgPT0gTlVMTCkKICAgICAgICAga2xhc3NuYW1lID0gTlVMTDsKICAgICBlbHNlIHsKLSAgICAgICAga2xhc3NuYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhrbGFzcywgIl9fbmFtZV9fIik7CisgICAgICAgIGtsYXNzbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoa2xhc3MsICZQeUlkX19fbmFtZV9fKTsKICAgICAgICAgaWYgKGtsYXNzbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CiAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihmdW5jbmFtZSk7CkBAIC00MDIsNiArNDAzLDE1IEBACiAgICAgKHZvaWQpUHlNZXRob2RfQ2xlYXJGcmVlTGlzdCgpOwogfQogCisvKiBQcmludCBzdW1tYXJ5IGluZm8gYWJvdXQgdGhlIHN0YXRlIG9mIHRoZSBvcHRpbWl6ZWQgYWxsb2NhdG9yICovCit2b2lkCitfUHlNZXRob2RfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpCit7CisgICAgX1B5RGVidWdBbGxvY2F0b3JTdGF0cyhvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJlZSBQeU1ldGhvZE9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1mcmVlLCBzaXplb2YoUHlNZXRob2RPYmplY3QpKTsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBpbnN0YW5jZSBtZXRob2QKICAqLwpAQCAtNTE5LDggKzUyOSw3IEBACiAgICAgICAgICFQeUluc3RhbmNlTWV0aG9kX0NoZWNrKHNlbGYpIHx8CiAgICAgICAgICFQeUluc3RhbmNlTWV0aG9kX0NoZWNrKG90aGVyKSkKICAgICB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KICAgICBhID0gKFB5SW5zdGFuY2VNZXRob2RPYmplY3QgKilzZWxmOwogICAgIGIgPSAoUHlJbnN0YW5jZU1ldGhvZE9iamVjdCAqKW90aGVyOwpAQCAtNTQ3LDcgKzU1Niw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGZ1bmNuYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmdW5jLCAiX19uYW1lX18iKTsKKyAgICBmdW5jbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoZnVuYywgJlB5SWRfX19uYW1lX18pOwogICAgIGlmIChmdW5jbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL09iamVjdHMvY29kZW9iamVjdC5jIGIvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKaW5kZXggYmI5MzhlYS4uOTcxM2Y2MSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKQEAgLTgsMTkgKzgsMjQgQEAKIC8qIGFsbF9uYW1lX2NoYXJzKHMpOiB0cnVlIGlmZiBhbGwgY2hhcnMgaW4gcyBhcmUgdmFsaWQgTkFNRV9DSEFSUyAqLwogCiBzdGF0aWMgaW50Ci1hbGxfbmFtZV9jaGFycyhQeV9VTklDT0RFICpzKQorYWxsX25hbWVfY2hhcnMoUHlPYmplY3QgKm8pCiB7CiAgICAgc3RhdGljIGNoYXIgb2tfbmFtZV9jaGFyWzI1Nl07CiAgICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgKm5hbWVfY2hhcnMgPSAodW5zaWduZWQgY2hhciAqKU5BTUVfQ0hBUlM7CisgICAgUHlVbmljb2RlT2JqZWN0ICp1ID0gKFB5VW5pY29kZU9iamVjdCAqKW87CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqczsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKG8pIHx8IFB5VW5pY29kZV9SRUFEWSh1KSA9PSAtMSB8fAorICAgICAgICBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodSkgPj0gMTI4KQorICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChva19uYW1lX2NoYXJbKm5hbWVfY2hhcnNdID09IDApIHsKICAgICAgICAgdW5zaWduZWQgY2hhciAqcDsKICAgICAgICAgZm9yIChwID0gbmFtZV9jaGFyczsgKnA7IHArKykKICAgICAgICAgICAgIG9rX25hbWVfY2hhclsqcF0gPSAxOwogICAgIH0KKyAgICBzID0gUHlVbmljb2RlXzFCWVRFX0RBVEEodSk7CiAgICAgd2hpbGUgKCpzKSB7Ci0gICAgICAgIGlmICgqcyA+PSAxMjgpCi0gICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgaWYgKG9rX25hbWVfY2hhclsqcysrXSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNTEsNyArNTYsOCBAQAogICAgICAgICAgICBQeU9iamVjdCAqbG5vdGFiKQogewogICAgIFB5Q29kZU9iamVjdCAqY287Ci0gICAgUHlfc3NpemVfdCBpOworICAgIHVuc2lnbmVkIGNoYXIgKmNlbGwyYXJnID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGksIG5fY2VsbHZhcnM7CiAKICAgICAvKiBDaGVjayBhcmd1bWVudCB0eXBlcyAqLwogICAgIGlmIChhcmdjb3VudCA8IDAgfHwga3dvbmx5YXJnY291bnQgPCAwIHx8IG5sb2NhbHMgPCAwIHx8CkBAIC02OCw0OCArNzQsNzkgQEAKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBuX2NlbGx2YXJzID0gUHlUdXBsZV9HRVRfU0laRShjZWxsdmFycyk7CiAgICAgaW50ZXJuX3N0cmluZ3MobmFtZXMpOwogICAgIGludGVybl9zdHJpbmdzKHZhcm5hbWVzKTsKICAgICBpbnRlcm5fc3RyaW5ncyhmcmVldmFycyk7CiAgICAgaW50ZXJuX3N0cmluZ3MoY2VsbHZhcnMpOwogICAgIC8qIEludGVybiBzZWxlY3RlZCBzdHJpbmcgY29uc3RhbnRzICovCi0gICAgZm9yIChpID0gUHlUdXBsZV9TaXplKGNvbnN0cyk7IC0taSA+PSAwOyApIHsKKyAgICBmb3IgKGkgPSBQeVR1cGxlX0dFVF9TSVpFKGNvbnN0cyk7IC0taSA+PSAwOyApIHsKICAgICAgICAgUHlPYmplY3QgKnYgPSBQeVR1cGxlX0dldEl0ZW0oY29uc3RzLCBpKTsKLSAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodikpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFhbGxfbmFtZV9jaGFycyhQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkpCisgICAgICAgIGlmICghYWxsX25hbWVfY2hhcnModikpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgUHlVbmljb2RlX0ludGVybkluUGxhY2UoJlB5VHVwbGVfR0VUX0lURU0oY29uc3RzLCBpKSk7CiAgICAgfQotICAgIGNvID0gUHlPYmplY3RfTkVXKFB5Q29kZU9iamVjdCwgJlB5Q29kZV9UeXBlKTsKLSAgICBpZiAoY28gIT0gTlVMTCkgewotICAgICAgICBjby0+Y29fYXJnY291bnQgPSBhcmdjb3VudDsKLSAgICAgICAgY28tPmNvX2t3b25seWFyZ2NvdW50ID0ga3dvbmx5YXJnY291bnQ7Ci0gICAgICAgIGNvLT5jb19ubG9jYWxzID0gbmxvY2FsczsKLSAgICAgICAgY28tPmNvX3N0YWNrc2l6ZSA9IHN0YWNrc2l6ZTsKLSAgICAgICAgY28tPmNvX2ZsYWdzID0gZmxhZ3M7Ci0gICAgICAgIFB5X0lOQ1JFRihjb2RlKTsKLSAgICAgICAgY28tPmNvX2NvZGUgPSBjb2RlOwotICAgICAgICBQeV9JTkNSRUYoY29uc3RzKTsKLSAgICAgICAgY28tPmNvX2NvbnN0cyA9IGNvbnN0czsKLSAgICAgICAgUHlfSU5DUkVGKG5hbWVzKTsKLSAgICAgICAgY28tPmNvX25hbWVzID0gbmFtZXM7Ci0gICAgICAgIFB5X0lOQ1JFRih2YXJuYW1lcyk7Ci0gICAgICAgIGNvLT5jb192YXJuYW1lcyA9IHZhcm5hbWVzOwotICAgICAgICBQeV9JTkNSRUYoZnJlZXZhcnMpOwotICAgICAgICBjby0+Y29fZnJlZXZhcnMgPSBmcmVldmFyczsKLSAgICAgICAgUHlfSU5DUkVGKGNlbGx2YXJzKTsKLSAgICAgICAgY28tPmNvX2NlbGx2YXJzID0gY2VsbHZhcnM7Ci0gICAgICAgIFB5X0lOQ1JFRihmaWxlbmFtZSk7Ci0gICAgICAgIGNvLT5jb19maWxlbmFtZSA9IGZpbGVuYW1lOwotICAgICAgICBQeV9JTkNSRUYobmFtZSk7Ci0gICAgICAgIGNvLT5jb19uYW1lID0gbmFtZTsKLSAgICAgICAgY28tPmNvX2ZpcnN0bGluZW5vID0gZmlyc3RsaW5lbm87Ci0gICAgICAgIFB5X0lOQ1JFRihsbm90YWIpOwotICAgICAgICBjby0+Y29fbG5vdGFiID0gbG5vdGFiOwotICAgICAgICBjby0+Y29fem9tYmllZnJhbWUgPSBOVUxMOwotICAgICAgICBjby0+Y29fd2Vha3JlZmxpc3QgPSBOVUxMOworICAgIC8qIENyZWF0ZSBtYXBwaW5nIGJldHdlZW4gY2VsbHMgYW5kIGFyZ3VtZW50cyBpZiBuZWVkZWQuICovCisgICAgaWYgKG5fY2VsbHZhcnMpIHsKKyAgICAgICAgUHlfc3NpemVfdCB0b3RhbF9hcmdzID0gYXJnY291bnQgKyBrd29ubHlhcmdjb3VudCArCisgICAgICAgICAgICAoKGZsYWdzICYgQ09fVkFSQVJHUykgIT0gMCkgKyAoKGZsYWdzICYgQ09fVkFSS0VZV09SRFMpICE9IDApOworICAgICAgICBQeV9zc2l6ZV90IGFsbG9jX3NpemUgPSBzaXplb2YodW5zaWduZWQgY2hhcikgKiBuX2NlbGx2YXJzOworICAgICAgICBpbnQgdXNlZF9jZWxsMmFyZyA9IDA7CisgICAgICAgIGNlbGwyYXJnID0gUHlNZW1fTUFMTE9DKGFsbG9jX3NpemUpOworICAgICAgICBpZiAoY2VsbDJhcmcgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBtZW1zZXQoY2VsbDJhcmcsIENPX0NFTExfTk9UX0FOX0FSRywgYWxsb2Nfc2l6ZSk7CisgICAgICAgIC8qIEZpbmQgY2VsbHMgd2hpY2ggYXJlIGFsc28gYXJndW1lbnRzLiAqLworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbl9jZWxsdmFyczsgaSsrKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGo7CisgICAgICAgICAgICBQeU9iamVjdCAqY2VsbCA9IFB5VHVwbGVfR0VUX0lURU0oY2VsbHZhcnMsIGkpOworICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IHRvdGFsX2FyZ3M7IGorKykgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBQeVR1cGxlX0dFVF9JVEVNKHZhcm5hbWVzLCBqKTsKKyAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9Db21wYXJlKGNlbGwsIGFyZykpIHsKKyAgICAgICAgICAgICAgICAgICAgY2VsbDJhcmdbaV0gPSBqOworICAgICAgICAgICAgICAgICAgICB1c2VkX2NlbGwyYXJnID0gMTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghdXNlZF9jZWxsMmFyZykgeworICAgICAgICAgICAgUHlNZW1fRlJFRShjZWxsMmFyZyk7CisgICAgICAgICAgICBjZWxsMmFyZyA9IE5VTEw7CisgICAgICAgIH0KICAgICB9CisgICAgY28gPSBQeU9iamVjdF9ORVcoUHlDb2RlT2JqZWN0LCAmUHlDb2RlX1R5cGUpOworICAgIGlmIChjbyA9PSBOVUxMKSB7CisgICAgICAgIGlmIChjZWxsMmFyZykKKyAgICAgICAgICAgIFB5TWVtX0ZSRUUoY2VsbDJhcmcpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgY28tPmNvX2FyZ2NvdW50ID0gYXJnY291bnQ7CisgICAgY28tPmNvX2t3b25seWFyZ2NvdW50ID0ga3dvbmx5YXJnY291bnQ7CisgICAgY28tPmNvX25sb2NhbHMgPSBubG9jYWxzOworICAgIGNvLT5jb19zdGFja3NpemUgPSBzdGFja3NpemU7CisgICAgY28tPmNvX2ZsYWdzID0gZmxhZ3M7CisgICAgUHlfSU5DUkVGKGNvZGUpOworICAgIGNvLT5jb19jb2RlID0gY29kZTsKKyAgICBQeV9JTkNSRUYoY29uc3RzKTsKKyAgICBjby0+Y29fY29uc3RzID0gY29uc3RzOworICAgIFB5X0lOQ1JFRihuYW1lcyk7CisgICAgY28tPmNvX25hbWVzID0gbmFtZXM7CisgICAgUHlfSU5DUkVGKHZhcm5hbWVzKTsKKyAgICBjby0+Y29fdmFybmFtZXMgPSB2YXJuYW1lczsKKyAgICBQeV9JTkNSRUYoZnJlZXZhcnMpOworICAgIGNvLT5jb19mcmVldmFycyA9IGZyZWV2YXJzOworICAgIFB5X0lOQ1JFRihjZWxsdmFycyk7CisgICAgY28tPmNvX2NlbGx2YXJzID0gY2VsbHZhcnM7CisgICAgY28tPmNvX2NlbGwyYXJnID0gY2VsbDJhcmc7CisgICAgUHlfSU5DUkVGKGZpbGVuYW1lKTsKKyAgICBjby0+Y29fZmlsZW5hbWUgPSBmaWxlbmFtZTsKKyAgICBQeV9JTkNSRUYobmFtZSk7CisgICAgY28tPmNvX25hbWUgPSBuYW1lOworICAgIGNvLT5jb19maXJzdGxpbmVubyA9IGZpcnN0bGluZW5vOworICAgIFB5X0lOQ1JFRihsbm90YWIpOworICAgIGNvLT5jb19sbm90YWIgPSBsbm90YWI7CisgICAgY28tPmNvX3pvbWJpZWZyYW1lID0gTlVMTDsKKyAgICBjby0+Y29fd2Vha3JlZmxpc3QgPSBOVUxMOwogICAgIHJldHVybiBjbzsKIH0KIApAQCAtMjEyLDkgKzI0OSw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGl0ZW0gPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoaXRlbSksCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKGl0ZW0pKTsKKyAgICAgICAgICAgIGl0ZW0gPSBfUHlVbmljb2RlX0NvcHkoaXRlbSk7CiAgICAgICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ld3R1cGxlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMzMCw2ICszNjUsOCBAQAogICAgIFB5X1hERUNSRUYoY28tPmNvX2ZpbGVuYW1lKTsKICAgICBQeV9YREVDUkVGKGNvLT5jb19uYW1lKTsKICAgICBQeV9YREVDUkVGKGNvLT5jb19sbm90YWIpOworICAgIGlmIChjby0+Y29fY2VsbDJhcmcgIT0gTlVMTCkKKyAgICAgICAgUHlNZW1fRlJFRShjby0+Y29fY2VsbDJhcmcpOwogICAgIGlmIChjby0+Y29fem9tYmllZnJhbWUgIT0gTlVMTCkKICAgICAgICAgUHlPYmplY3RfR0NfRGVsKGNvLT5jb196b21iaWVmcmFtZSk7CiAgICAgaWYgKGNvLT5jb193ZWFrcmVmbGlzdCAhPSBOVUxMKQpAQCAtMzM4LDYgKzM3NSwxNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgorY29kZV9zaXplb2YoUHlDb2RlT2JqZWN0ICpjbywgdm9pZCAqdW51c2VkKQoreworICAgIFB5X3NzaXplX3QgcmVzOworCisgICAgcmVzID0gc2l6ZW9mKFB5Q29kZU9iamVjdCk7CisgICAgaWYgKGNvLT5jb19jZWxsMmFyZyAhPSBOVUxMICYmIGNvLT5jb19jZWxsdmFycyAhPSBOVUxMKQorICAgICAgICByZXMgKz0gUHlUdXBsZV9HRVRfU0laRShjby0+Y29fY2VsbHZhcnMpICogc2l6ZW9mKHVuc2lnbmVkIGNoYXIpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGNvZGVfcmVwcihQeUNvZGVPYmplY3QgKmNvKQogewogICAgIGludCBsaW5lbm87CkBAIC0zNjYsOCArNDE0LDcgQEAKICAgICBpZiAoKG9wICE9IFB5X0VRICYmIG9wICE9IFB5X05FKSB8fAogICAgICAgICAhUHlDb2RlX0NoZWNrKHNlbGYpIHx8CiAgICAgICAgICFQeUNvZGVfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KIAogICAgIGNvID0gKFB5Q29kZU9iamVjdCAqKXNlbGY7CkBAIC00NDQsNiArNDkxLDExIEBACiAKIC8qIFhYWCBjb2RlIG9iamVjdHMgbmVlZCB0byBwYXJ0aWNpcGF0ZSBpbiBHQz8gKi8KIAorc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBjb2RlX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pY29kZV9zaXplb2YsIE1FVEhfTk9BUkdTfSwKKyAgICB7TlVMTCwgTlVMTH0gICAgICAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKIFB5VHlwZU9iamVjdCBQeUNvZGVfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJjb2RlIiwKQEAgLTQ3Miw3ICs1MjQsNyBAQAogICAgIG9mZnNldG9mKFB5Q29kZU9iamVjdCwgY29fd2Vha3JlZmxpc3QpLCAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgY29kZV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIGNvZGVfbWVtYmVybGlzdCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCmRpZmYgLS1naXQgYS9PYmplY3RzL2NvbXBsZXhvYmplY3QuYyBiL09iamVjdHMvY29tcGxleG9iamVjdC5jCmluZGV4IGUyNDdiYTkuLjQwM2M2MGMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY29tcGxleG9iamVjdC5jCisrKyBiL09iamVjdHMvY29tcGxleG9iamVjdC5jCkBAIC0yNjUsOSArMjY1LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0cnlfY29tcGxleF9zcGVjaWFsX21ldGhvZChQeU9iamVjdCAqb3ApIHsKICAgICBQeU9iamVjdCAqZjsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmNvbXBsZXhzdHI7CisgICAgX1B5X0lERU5USUZJRVIoX19jb21wbGV4X18pOwogCi0gICAgZiA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG9wLCAiX19jb21wbGV4X18iLCAmY29tcGxleHN0cik7CisgICAgZiA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG9wLCAmUHlJZF9fX2NvbXBsZXhfXyk7CiAgICAgaWYgKGYpIHsKICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZiwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihmKTsKQEAgLTMzMCwxMiArMzMwLDEwIEBACiAgICAgaW50IHByZWNpc2lvbiA9IDA7CiAgICAgY2hhciBmb3JtYXRfY29kZSA9ICdyJzsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGxlbjsKIAogICAgIC8qIElmIHRoZXNlIGFyZSBub24tTlVMTCwgdGhleSdsbCBuZWVkIHRvIGJlIGZyZWVkLiAqLwogICAgIGNoYXIgKnByZSA9IE5VTEw7CiAgICAgY2hhciAqaW0gPSBOVUxMOwotICAgIGNoYXIgKmJ1ZiA9IE5VTEw7CiAKICAgICAvKiBUaGVzZSBkbyBub3QgbmVlZCB0byBiZSBmcmVlZC4gcmUgaXMgZWl0aGVyIGFuIGFsaWFzCiAgICAgICAgZm9yIHByZSBvciBhIHBvaW50ZXIgdG8gYSBjb25zdGFudC4gIGxlYWQgYW5kIHRhaWwKQEAgLTM3NCwyMCArMzcyLDEwIEBACiAgICAgICAgIGxlYWQgPSAiKCI7CiAgICAgICAgIHRhaWwgPSAiKSI7CiAgICAgfQotICAgIC8qIEFsbG9jIHRoZSBmaW5hbCBidWZmZXIuIEFkZCBvbmUgZm9yIHRoZSAiaiIgaW4gdGhlIGZvcm1hdCBzdHJpbmcsCi0gICAgICAgYW5kIG9uZSBmb3IgdGhlIHRyYWlsaW5nIHplcm8gYnl0ZS4gKi8KLSAgICBsZW4gPSBzdHJsZW4obGVhZCkgKyBzdHJsZW4ocmUpICsgc3RybGVuKGltKSArIHN0cmxlbih0YWlsKSArIDI7Ci0gICAgYnVmID0gUHlNZW1fTWFsbG9jKGxlbik7Ci0gICAgaWYgKCFidWYpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLSAgICBQeU9TX3NucHJpbnRmKGJ1ZiwgbGVuLCAiJXMlcyVzaiVzIiwgbGVhZCwgcmUsIGltLCB0YWlsKTsKLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhidWYpOworICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyVzJXNqJXMiLCBsZWFkLCByZSwgaW0sIHRhaWwpOwogICBkb25lOgogICAgIFB5TWVtX0ZyZWUoaW0pOwogICAgIFB5TWVtX0ZyZWUocHJlKTsKLSAgICBQeU1lbV9GcmVlKGJ1Zik7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNjYyLDggKzY1MCw3IEBACiAgICAgcmV0dXJuIHJlczsKIAogVW5pbXBsZW1lbnRlZDoKLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC03MTIsMTIgKzY5OSwyMiBAQAogY29tcGxleF9fZm9ybWF0X18oUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewogICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYzsKKyAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKKyAgICBpbnQgcmV0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOl9fZm9ybWF0X18iLCAmZm9ybWF0X3NwZWMpKQotICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBfUHlDb21wbGV4X0Zvcm1hdEFkdmFuY2VkKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoZm9ybWF0X3NwZWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShmb3JtYXRfc3BlYykpOworICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyLCAwKTsKKyAgICByZXQgPSBfUHlDb21wbGV4X0Zvcm1hdEFkdmFuY2VkV3JpdGVyKAorICAgICAgICAmd3JpdGVyLAorICAgICAgICBzZWxmLAorICAgICAgICBmb3JtYXRfc3BlYywgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoZm9ybWF0X3NwZWMpKTsKKyAgICBpZiAocmV0ID09IC0xKSB7CisgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIH0KIAogI2lmIDAKQEAgLTc2OCwyMCArNzY1LDEwIEBACiAgICAgUHlfc3NpemVfdCBsZW47CiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaSwgYnVmbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHYpOwotICAgICAgICBQeV9VTklDT0RFICpidWZwdHI7Ci0gICAgICAgIHNfYnVmZmVyID0gUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKAotICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodiksIGJ1Zmxlbik7CisgICAgICAgIHNfYnVmZmVyID0gX1B5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsQW5kU3BhY2VUb0FTQ0lJKHYpOwogICAgICAgICBpZiAoc19idWZmZXIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAvKiBSZXBsYWNlIG5vbi1BU0NJSSB3aGl0ZXNwYWNlIHdpdGggJyAnICovCi0gICAgICAgIGJ1ZnB0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNfYnVmZmVyKTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGJ1ZmxlbjsgaSsrKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGNoID0gYnVmcHRyW2ldOwotICAgICAgICAgICAgaWYgKGNoID4gMTI3ICYmIFB5X1VOSUNPREVfSVNTUEFDRShjaCkpCi0gICAgICAgICAgICAgICAgYnVmcHRyW2ldID0gJyAnOwotICAgICAgICB9Ci0gICAgICAgIHMgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShzX2J1ZmZlciwgJmxlbik7CisgICAgICAgIHMgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShzX2J1ZmZlciwgJmxlbik7CiAgICAgICAgIGlmIChzID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvZGVzY3JvYmplY3QuYyBiL09iamVjdHMvZGVzY3JvYmplY3QuYwppbmRleCA5OTM0ZjIzLi5hYmNjMDAyIDEwMDY0NAotLS0gYS9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9kZXNjcm9iamVjdC5jCkBAIC05LDYgKzksNyBAQAogICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKGRlc2NyKTsKICAgICBQeV9YREVDUkVGKGRlc2NyLT5kX3R5cGUpOwogICAgIFB5X1hERUNSRUYoZGVzY3ItPmRfbmFtZSk7CisgICAgUHlfWERFQ1JFRihkZXNjci0+ZF9xdWFsbmFtZSk7CiAgICAgUHlPYmplY3RfR0NfRGVsKGRlc2NyKTsKIH0KIApAQCAtMzU5LDYgKzM2MCw0NCBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhkZXNjci0+ZF9tZXRob2QtPm1sX2RvYyk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitjYWxjdWxhdGVfcXVhbG5hbWUoUHlEZXNjck9iamVjdCAqZGVzY3IpCit7CisgICAgUHlPYmplY3QgKnR5cGVfcXVhbG5hbWUsICpyZXM7CisgICAgX1B5X0lERU5USUZJRVIoX19xdWFsbmFtZV9fKTsKKworICAgIGlmIChkZXNjci0+ZF9uYW1lID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhkZXNjci0+ZF9uYW1lKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIjxkZXNjcmlwdG9yPi5fX25hbWVfXyBpcyBub3QgYSB1bmljb2RlIG9iamVjdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICB0eXBlX3F1YWxuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilkZXNjci0+ZF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19fcXVhbG5hbWVfXyk7CisgICAgaWYgKHR5cGVfcXVhbG5hbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh0eXBlX3F1YWxuYW1lKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiPGRlc2NyaXB0b3I+Ll9fb2JqY2xhc3NfXy4iCisgICAgICAgICAgICAgICAgICAgICAgICAiX19xdWFsbmFtZV9fIGlzIG5vdCBhIHVuaWNvZGUgb2JqZWN0Iik7CisgICAgICAgIFB5X1hERUNSRUYodHlwZV9xdWFsbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlUy4lUyIsIHR5cGVfcXVhbG5hbWUsIGRlc2NyLT5kX25hbWUpOworICAgIFB5X0RFQ1JFRih0eXBlX3F1YWxuYW1lKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZGVzY3JfZ2V0X3F1YWxuYW1lKFB5RGVzY3JPYmplY3QgKmRlc2NyKQoreworICAgIGlmIChkZXNjci0+ZF9xdWFsbmFtZSA9PSBOVUxMKQorICAgICAgICBkZXNjci0+ZF9xdWFsbmFtZSA9IGNhbGN1bGF0ZV9xdWFsbmFtZShkZXNjcik7CisgICAgUHlfWElOQ1JFRihkZXNjci0+ZF9xdWFsbmFtZSk7CisgICAgcmV0dXJuIGRlc2NyLT5kX3F1YWxuYW1lOworfQorCiBzdGF0aWMgUHlNZW1iZXJEZWYgZGVzY3JfbWVtYmVyc1tdID0gewogICAgIHsiX19vYmpjbGFzc19fIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5RGVzY3JPYmplY3QsIGRfdHlwZSksIFJFQURPTkxZfSwKICAgICB7Il9fbmFtZV9fIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5RGVzY3JPYmplY3QsIGRfbmFtZSksIFJFQURPTkxZfSwKQEAgLTM2Nyw2ICs0MDYsNyBAQAogCiBzdGF0aWMgUHlHZXRTZXREZWYgbWV0aG9kX2dldHNldFtdID0gewogICAgIHsiX19kb2NfXyIsIChnZXR0ZXIpbWV0aG9kX2dldF9kb2N9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlcilkZXNjcl9nZXRfcXVhbG5hbWV9LAogICAgIHswfQogfTsKIApAQCAtMzgyLDYgKzQyMiw3IEBACiAKIHN0YXRpYyBQeUdldFNldERlZiBtZW1iZXJfZ2V0c2V0W10gPSB7CiAgICAgeyJfX2RvY19fIiwgKGdldHRlciltZW1iZXJfZ2V0X2RvY30sCisgICAgeyJfX3F1YWxuYW1lX18iLCAoZ2V0dGVyKWRlc2NyX2dldF9xdWFsbmFtZX0sCiAgICAgezB9CiB9OwogCkBAIC0zOTcsNiArNDM4LDcgQEAKIAogc3RhdGljIFB5R2V0U2V0RGVmIGdldHNldF9nZXRzZXRbXSA9IHsKICAgICB7Il9fZG9jX18iLCAoZ2V0dGVyKWdldHNldF9nZXRfZG9jfSwKKyAgICB7Il9fcXVhbG5hbWVfXyIsIChnZXR0ZXIpZGVzY3JfZ2V0X3F1YWxuYW1lfSwKICAgICB7MH0KIH07CiAKQEAgLTQxMiw2ICs0NTQsNyBAQAogCiBzdGF0aWMgUHlHZXRTZXREZWYgd3JhcHBlcmRlc2NyX2dldHNldFtdID0gewogICAgIHsiX19kb2NfXyIsIChnZXR0ZXIpd3JhcHBlcmRlc2NyX2dldF9kb2N9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlcilkZXNjcl9nZXRfcXVhbG5hbWV9LAogICAgIHswfQogfTsKIApAQCAtNjIzLDYgKzY2Niw5IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoZGVzY3IpOwogICAgICAgICAgICAgZGVzY3IgPSBOVUxMOwogICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZGVzY3ItPmRfcXVhbG5hbWUgPSBOVUxMOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBkZXNjcjsKIH0KQEAgLTY5MCw0MSArNzM2LDQ0IEBACiB9CiAKIAotLyogLS0tIFJlYWRvbmx5IHByb3h5IGZvciBkaWN0aW9uYXJpZXMgKGFjdHVhbGx5IGFueSBtYXBwaW5nKSAtLS0gKi8KKy8qIC0tLSBtYXBwaW5ncHJveHk6IHJlYWQtb25seSBwcm94eSBmb3IgbWFwcGluZ3MgLS0tICovCiAKIC8qIFRoaXMgaGFzIG5vIHJlYXNvbiB0byBiZSBpbiB0aGlzIGZpbGUgZXhjZXB0IHRoYXQgYWRkaW5nIG5ldyBmaWxlcyBpcyBhCiAgICBiaXQgb2YgYSBwYWluICovCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlPYmplY3QgKmRpY3Q7Ci19IHByb3h5b2JqZWN0OworICAgIFB5T2JqZWN0ICptYXBwaW5nOworfSBtYXBwaW5ncHJveHlvYmplY3Q7CiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci1wcm94eV9sZW4ocHJveHlvYmplY3QgKnBwKQorbWFwcGluZ3Byb3h5X2xlbihtYXBwaW5ncHJveHlvYmplY3QgKnBwKQogewotICAgIHJldHVybiBQeU9iamVjdF9TaXplKHBwLT5kaWN0KTsKKyAgICByZXR1cm4gUHlPYmplY3RfU2l6ZShwcC0+bWFwcGluZyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wcm94eV9nZXRpdGVtKHByb3h5b2JqZWN0ICpwcCwgUHlPYmplY3QgKmtleSkKK21hcHBpbmdwcm94eV9nZXRpdGVtKG1hcHBpbmdwcm94eW9iamVjdCAqcHAsIFB5T2JqZWN0ICprZXkpCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0dldEl0ZW0ocHAtPmRpY3QsIGtleSk7CisgICAgcmV0dXJuIFB5T2JqZWN0X0dldEl0ZW0ocHAtPm1hcHBpbmcsIGtleSk7CiB9CiAKLXN0YXRpYyBQeU1hcHBpbmdNZXRob2RzIHByb3h5X2FzX21hcHBpbmcgPSB7Ci0gICAgKGxlbmZ1bmMpcHJveHlfbGVuLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtcF9sZW5ndGggKi8KLSAgICAoYmluYXJ5ZnVuYylwcm94eV9nZXRpdGVtLCAgICAgICAgICAgICAgICAgIC8qIG1wX3N1YnNjcmlwdCAqLworc3RhdGljIFB5TWFwcGluZ01ldGhvZHMgbWFwcGluZ3Byb3h5X2FzX21hcHBpbmcgPSB7CisgICAgKGxlbmZ1bmMpbWFwcGluZ3Byb3h5X2xlbiwgICAgICAgICAgICAgICAgICAvKiBtcF9sZW5ndGggKi8KKyAgICAoYmluYXJ5ZnVuYyltYXBwaW5ncHJveHlfZ2V0aXRlbSwgICAgICAgICAgIC8qIG1wX3N1YnNjcmlwdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbXBfYXNzX3N1YnNjcmlwdCAqLwogfTsKIAogc3RhdGljIGludAotcHJveHlfY29udGFpbnMocHJveHlvYmplY3QgKnBwLCBQeU9iamVjdCAqa2V5KQorbWFwcGluZ3Byb3h5X2NvbnRhaW5zKG1hcHBpbmdwcm94eW9iamVjdCAqcHAsIFB5T2JqZWN0ICprZXkpCiB7Ci0gICAgcmV0dXJuIFB5RGljdF9Db250YWlucyhwcC0+ZGljdCwga2V5KTsKKyAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QocHAtPm1hcHBpbmcpKQorICAgICAgICByZXR1cm4gUHlEaWN0X0NvbnRhaW5zKHBwLT5tYXBwaW5nLCBrZXkpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5U2VxdWVuY2VfQ29udGFpbnMocHAtPm1hcHBpbmcsIGtleSk7CiB9CiAKLXN0YXRpYyBQeVNlcXVlbmNlTWV0aG9kcyBwcm94eV9hc19zZXF1ZW5jZSA9IHsKK3N0YXRpYyBQeVNlcXVlbmNlTWV0aG9kcyBtYXBwaW5ncHJveHlfYXNfc2VxdWVuY2UgPSB7CiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9sZW5ndGggKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2NvbmNhdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfcmVwZWF0ICovCkBAIC03MzIsMTQ3ICs3ODEsMTk5IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9zbGljZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfYXNzX2l0ZW0gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2Fzc19zbGljZSAqLwotICAgIChvYmpvYmpwcm9jKXByb3h5X2NvbnRhaW5zLCAgICAgICAgICAgICAgICAgLyogc3FfY29udGFpbnMgKi8KKyAgICAob2Jqb2JqcHJvYyltYXBwaW5ncHJveHlfY29udGFpbnMsICAgICAgICAgICAgICAgICAvKiBzcV9jb250YWlucyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfaW5wbGFjZV9jb25jYXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2lucGxhY2VfcmVwZWF0ICovCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgotcHJveHlfZ2V0KHByb3h5b2JqZWN0ICpwcCwgUHlPYmplY3QgKmFyZ3MpCittYXBwaW5ncHJveHlfZ2V0KG1hcHBpbmdwcm94eW9iamVjdCAqcHAsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICprZXksICpkZWYgPSBQeV9Ob25lOworICAgIF9QeV9JREVOVElGSUVSKGdldCk7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJnZXQiLCAxLCAyLCAma2V5LCAmZGVmKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QocHAtPmRpY3QsICJnZXQiLCAiKE9PKSIsIGtleSwgZGVmKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwcC0+bWFwcGluZywgJlB5SWRfZ2V0LCAiKE9PKSIsIGtleSwgZGVmKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXByb3h5X2tleXMocHJveHlvYmplY3QgKnBwKQorbWFwcGluZ3Byb3h5X2tleXMobWFwcGluZ3Byb3h5b2JqZWN0ICpwcCkKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChwcC0+ZGljdCwgImtleXMiLCBOVUxMKTsKKyAgICBfUHlfSURFTlRJRklFUihrZXlzKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwcC0+bWFwcGluZywgJlB5SWRfa2V5cywgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wcm94eV92YWx1ZXMocHJveHlvYmplY3QgKnBwKQorbWFwcGluZ3Byb3h5X3ZhbHVlcyhtYXBwaW5ncHJveHlvYmplY3QgKnBwKQogewotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHBwLT5kaWN0LCAidmFsdWVzIiwgTlVMTCk7CisgICAgX1B5X0lERU5USUZJRVIodmFsdWVzKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwcC0+bWFwcGluZywgJlB5SWRfdmFsdWVzLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXByb3h5X2l0ZW1zKHByb3h5b2JqZWN0ICpwcCkKK21hcHBpbmdwcm94eV9pdGVtcyhtYXBwaW5ncHJveHlvYmplY3QgKnBwKQogewotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHBwLT5kaWN0LCAiaXRlbXMiLCBOVUxMKTsKKyAgICBfUHlfSURFTlRJRklFUihpdGVtcyk7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHAtPm1hcHBpbmcsICZQeUlkX2l0ZW1zLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXByb3h5X2NvcHkocHJveHlvYmplY3QgKnBwKQorbWFwcGluZ3Byb3h5X2NvcHkobWFwcGluZ3Byb3h5b2JqZWN0ICpwcCkKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChwcC0+ZGljdCwgImNvcHkiLCBOVUxMKTsKKyAgICBfUHlfSURFTlRJRklFUihjb3B5KTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwcC0+bWFwcGluZywgJlB5SWRfY29weSwgTlVMTCk7CiB9CiAKLXN0YXRpYyBQeU1ldGhvZERlZiBwcm94eV9tZXRob2RzW10gPSB7Ci0gICAgeyJnZXQiLCAgICAgICAoUHlDRnVuY3Rpb24pcHJveHlfZ2V0LCAgICAgICAgTUVUSF9WQVJBUkdTLAorLyogV0FSTklORzogbWFwcGluZ3Byb3h5IG1ldGhvZHMgbXVzdCBub3QgZ2l2ZSBhY2Nlc3MKKyAgICAgICAgICAgIHRvIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcgKi8KKworc3RhdGljIFB5TWV0aG9kRGVmIG1hcHBpbmdwcm94eV9tZXRob2RzW10gPSB7CisgICAgeyJnZXQiLCAgICAgICAoUHlDRnVuY3Rpb24pbWFwcGluZ3Byb3h5X2dldCwgICAgICAgIE1FVEhfVkFSQVJHUywKICAgICAgUHlEb2NfU1RSKCJELmdldChrWyxkXSkgLT4gRFtrXSBpZiBrIGluIEQsIGVsc2UgZC4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICBkIGRlZmF1bHRzIHRvIE5vbmUuIil9LAotICAgIHsia2V5cyIsICAgICAgKFB5Q0Z1bmN0aW9uKXByb3h5X2tleXMsICAgICAgIE1FVEhfTk9BUkdTLAorICAgICAgICAgICAgICAgIiAgZCBkZWZhdWx0cyB0byBOb25lLiIpfSwKKyAgICB7ImtleXMiLCAgICAgIChQeUNGdW5jdGlvbiltYXBwaW5ncHJveHlfa2V5cywgICAgICAgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiRC5rZXlzKCkgLT4gbGlzdCBvZiBEJ3Mga2V5cyIpfSwKLSAgICB7InZhbHVlcyIsICAgIChQeUNGdW5jdGlvbilwcm94eV92YWx1ZXMsICAgICBNRVRIX05PQVJHUywKKyAgICB7InZhbHVlcyIsICAgIChQeUNGdW5jdGlvbiltYXBwaW5ncHJveHlfdmFsdWVzLCAgICAgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiRC52YWx1ZXMoKSAtPiBsaXN0IG9mIEQncyB2YWx1ZXMiKX0sCi0gICAgeyJpdGVtcyIsICAgICAoUHlDRnVuY3Rpb24pcHJveHlfaXRlbXMsICAgICAgTUVUSF9OT0FSR1MsCisgICAgeyJpdGVtcyIsICAgICAoUHlDRnVuY3Rpb24pbWFwcGluZ3Byb3h5X2l0ZW1zLCAgICAgIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIkQuaXRlbXMoKSAtPiBsaXN0IG9mIEQncyAoa2V5LCB2YWx1ZSkgcGFpcnMsIGFzIDItdHVwbGVzIil9LAotICAgIHsiY29weSIsICAgICAgKFB5Q0Z1bmN0aW9uKXByb3h5X2NvcHksICAgICAgIE1FVEhfTk9BUkdTLAorICAgIHsiY29weSIsICAgICAgKFB5Q0Z1bmN0aW9uKW1hcHBpbmdwcm94eV9jb3B5LCAgICAgICBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJELmNvcHkoKSAtPiBhIHNoYWxsb3cgY29weSBvZiBEIil9LAogICAgIHswfQogfTsKIAogc3RhdGljIHZvaWQKLXByb3h5X2RlYWxsb2MocHJveHlvYmplY3QgKnBwKQorbWFwcGluZ3Byb3h5X2RlYWxsb2MobWFwcGluZ3Byb3h5b2JqZWN0ICpwcCkKIHsKICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhwcCk7Ci0gICAgUHlfREVDUkVGKHBwLT5kaWN0KTsKKyAgICBQeV9ERUNSRUYocHAtPm1hcHBpbmcpOwogICAgIFB5T2JqZWN0X0dDX0RlbChwcCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wcm94eV9nZXRpdGVyKHByb3h5b2JqZWN0ICpwcCkKK21hcHBpbmdwcm94eV9nZXRpdGVyKG1hcHBpbmdwcm94eW9iamVjdCAqcHApCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0dldEl0ZXIocHAtPmRpY3QpOworICAgIHJldHVybiBQeU9iamVjdF9HZXRJdGVyKHBwLT5tYXBwaW5nKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXByb3h5X3N0cihwcm94eW9iamVjdCAqcHApCittYXBwaW5ncHJveHlfc3RyKG1hcHBpbmdwcm94eW9iamVjdCAqcHApCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X1N0cihwcC0+ZGljdCk7CisgICAgcmV0dXJuIFB5T2JqZWN0X1N0cihwcC0+bWFwcGluZyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wcm94eV9yZXByKHByb3h5b2JqZWN0ICpwcCkKK21hcHBpbmdwcm94eV9yZXByKG1hcHBpbmdwcm94eW9iamVjdCAqcHApCiB7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJkaWN0X3Byb3h5KCVSKSIsIHBwLT5kaWN0KTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIm1hcHBpbmdwcm94eSglUikiLCBwcC0+bWFwcGluZyk7CiB9CiAKIHN0YXRpYyBpbnQKLXByb3h5X3RyYXZlcnNlKFB5T2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK21hcHBpbmdwcm94eV90cmF2ZXJzZShQeU9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7Ci0gICAgcHJveHlvYmplY3QgKnBwID0gKHByb3h5b2JqZWN0ICopc2VsZjsKLSAgICBQeV9WSVNJVChwcC0+ZGljdCk7CisgICAgbWFwcGluZ3Byb3h5b2JqZWN0ICpwcCA9IChtYXBwaW5ncHJveHlvYmplY3QgKilzZWxmOworICAgIFB5X1ZJU0lUKHBwLT5tYXBwaW5nKTsKICAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXByb3h5X3JpY2hjb21wYXJlKHByb3h5b2JqZWN0ICp2LCBQeU9iamVjdCAqdywgaW50IG9wKQorbWFwcGluZ3Byb3h5X3JpY2hjb21wYXJlKG1hcHBpbmdwcm94eW9iamVjdCAqdiwgUHlPYmplY3QgKncsIGludCBvcCkKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfUmljaENvbXBhcmUodi0+ZGljdCwgdywgb3ApOworICAgIHJldHVybiBQeU9iamVjdF9SaWNoQ29tcGFyZSh2LT5tYXBwaW5nLCB3LCBvcCk7Cit9CisKK3N0YXRpYyBpbnQKK21hcHBpbmdwcm94eV9jaGVja19tYXBwaW5nKFB5T2JqZWN0ICptYXBwaW5nKQoreworICAgIGlmICghUHlNYXBwaW5nX0NoZWNrKG1hcHBpbmcpCisgICAgICAgIHx8IFB5TGlzdF9DaGVjayhtYXBwaW5nKQorICAgICAgICB8fCBQeVR1cGxlX0NoZWNrKG1hcHBpbmcpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJtYXBwaW5ncHJveHkoKSBhcmd1bWVudCBtdXN0IGJlIGEgbWFwcGluZywgbm90ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShtYXBwaW5nKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK21hcHBpbmdwcm94eV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJtYXBwaW5nIiwgTlVMTH07CisgICAgUHlPYmplY3QgKm1hcHBpbmc7CisgICAgbWFwcGluZ3Byb3h5b2JqZWN0ICptYXBwaW5ncHJveHk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiTzptYXBwaW5ncHJveHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJm1hcHBpbmcpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChtYXBwaW5ncHJveHlfY2hlY2tfbWFwcGluZyhtYXBwaW5nKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBtYXBwaW5ncHJveHkgPSBQeU9iamVjdF9HQ19OZXcobWFwcGluZ3Byb3h5b2JqZWN0LCAmUHlEaWN0UHJveHlfVHlwZSk7CisgICAgaWYgKG1hcHBpbmdwcm94eSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYobWFwcGluZyk7CisgICAgbWFwcGluZ3Byb3h5LT5tYXBwaW5nID0gbWFwcGluZzsKKyAgICBfUHlPYmplY3RfR0NfVFJBQ0sobWFwcGluZ3Byb3h5KTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopbWFwcGluZ3Byb3h5OwogfQogCiBQeVR5cGVPYmplY3QgUHlEaWN0UHJveHlfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQotICAgICJkaWN0X3Byb3h5IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwotICAgIHNpemVvZihwcm94eW9iamVjdCksICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgIm1hcHBpbmdwcm94eSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKG1hcHBpbmdwcm94eW9iamVjdCksICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwotICAgIChkZXN0cnVjdG9yKXByb3h5X2RlYWxsb2MsICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIChkZXN0cnVjdG9yKW1hcHBpbmdwcm94eV9kZWFsbG9jLCAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCi0gICAgKHJlcHJmdW5jKXByb3h5X3JlcHIsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgKHJlcHJmdW5jKW1hcHBpbmdwcm94eV9yZXByLCAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KLSAgICAmcHJveHlfYXNfc2VxdWVuY2UsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgJnByb3h5X2FzX21hcHBpbmcsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgJm1hcHBpbmdwcm94eV9hc19zZXF1ZW5jZSwgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgICZtYXBwaW5ncHJveHlfYXNfbWFwcGluZywgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwotICAgIChyZXByZnVuYylwcm94eV9zdHIsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgKHJlcHJmdW5jKW1hcHBpbmdwcm94eV9zdHIsICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAvKiB0cF9mbGFncyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgcHJveHlfdHJhdmVyc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIG1hcHBpbmdwcm94eV90cmF2ZXJzZSwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgKHJpY2hjbXBmdW5jKXByb3h5X3JpY2hjb21wYXJlLCAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIChyaWNoY21wZnVuYyltYXBwaW5ncHJveHlfcmljaGNvbXBhcmUsICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgKGdldGl0ZXJmdW5jKXByb3h5X2dldGl0ZXIsICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgKGdldGl0ZXJmdW5jKW1hcHBpbmdwcm94eV9nZXRpdGVyLCAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIHByb3h5X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIG1hcHBpbmdwcm94eV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBtYXBwaW5ncHJveHlfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogfTsKIAogUHlPYmplY3QgKgotUHlEaWN0UHJveHlfTmV3KFB5T2JqZWN0ICpkaWN0KQorUHlEaWN0UHJveHlfTmV3KFB5T2JqZWN0ICptYXBwaW5nKQogewotICAgIHByb3h5b2JqZWN0ICpwcDsKKyAgICBtYXBwaW5ncHJveHlvYmplY3QgKnBwOwogCi0gICAgcHAgPSBQeU9iamVjdF9HQ19OZXcocHJveHlvYmplY3QsICZQeURpY3RQcm94eV9UeXBlKTsKKyAgICBpZiAobWFwcGluZ3Byb3h5X2NoZWNrX21hcHBpbmcobWFwcGluZykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcHAgPSBQeU9iamVjdF9HQ19OZXcobWFwcGluZ3Byb3h5b2JqZWN0LCAmUHlEaWN0UHJveHlfVHlwZSk7CiAgICAgaWYgKHBwICE9IE5VTEwpIHsKLSAgICAgICAgUHlfSU5DUkVGKGRpY3QpOwotICAgICAgICBwcC0+ZGljdCA9IGRpY3Q7CisgICAgICAgIFB5X0lOQ1JFRihtYXBwaW5nKTsKKyAgICAgICAgcHAtPm1hcHBpbmcgPSBtYXBwaW5nOwogICAgICAgICBfUHlPYmplY3RfR0NfVFJBQ0socHApOwogICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopcHA7CkBAIC0xMDIwLDkgKzExMjEsMTYgQEAKICAgICB9CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCit3cmFwcGVyX3F1YWxuYW1lKHdyYXBwZXJvYmplY3QgKndwKQoreworICAgIHJldHVybiBkZXNjcl9nZXRfcXVhbG5hbWUoKFB5RGVzY3JPYmplY3QgKil3cC0+ZGVzY3IpOworfQorCiBzdGF0aWMgUHlHZXRTZXREZWYgd3JhcHBlcl9nZXRzZXRzW10gPSB7CiAgICAgeyJfX29iamNsYXNzX18iLCAoZ2V0dGVyKXdyYXBwZXJfb2JqY2xhc3N9LAogICAgIHsiX19uYW1lX18iLCAoZ2V0dGVyKXdyYXBwZXJfbmFtZX0sCisgICAgeyJfX3F1YWxuYW1lX18iLCAoZ2V0dGVyKXdyYXBwZXJfcXVhbG5hbWV9LAogICAgIHsiX19kb2NfXyIsIChnZXR0ZXIpd3JhcHBlcl9kb2N9LAogICAgIHswfQogfTsKQEAgLTEzMzIsNyArMTQ0MCw4IEBACiAKICAgICAvKiBpZiBubyBkb2NzdHJpbmcgZ2l2ZW4gYW5kIHRoZSBnZXR0ZXIgaGFzIG9uZSwgdXNlIHRoYXQgb25lICovCiAgICAgaWYgKChkb2MgPT0gTlVMTCB8fCBkb2MgPT0gUHlfTm9uZSkgJiYgZ2V0ICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKmdldF9kb2MgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGdldCwgIl9fZG9jX18iKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX19kb2NfXyk7CisgICAgICAgIFB5T2JqZWN0ICpnZXRfZG9jID0gX1B5T2JqZWN0X0dldEF0dHJJZChnZXQsICZQeUlkX19fZG9jX18pOwogICAgICAgICBpZiAoZ2V0X2RvYykgewogICAgICAgICAgICAgaWYgKFB5X1RZUEUoc2VsZikgPT0gJlB5UHJvcGVydHlfVHlwZSkgewogICAgICAgICAgICAgICAgIFB5X1hERUNSRUYocHJvcC0+cHJvcF9kb2MpOwpAQCAtMTM0Myw3ICsxNDUyLDcgQEAKICAgICAgICAgICAgICAgICBpbiBkaWN0IG9mIHRoZSBzdWJjbGFzcyBpbnN0YW5jZSBpbnN0ZWFkLAogICAgICAgICAgICAgICAgIG90aGVyd2lzZSBpdCBnZXRzIHNoYWRvd2VkIGJ5IF9fZG9jX18gaW4gdGhlCiAgICAgICAgICAgICAgICAgY2xhc3MncyBkaWN0LiAqLwotICAgICAgICAgICAgICAgIGludCBlcnIgPSBQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHNlbGYsICJfX2RvY19fIiwgZ2V0X2RvYyk7CisgICAgICAgICAgICAgICAgaW50IGVyciA9IF9QeU9iamVjdF9TZXRBdHRySWQoc2VsZiwgJlB5SWRfX19kb2NfXywgZ2V0X2RvYyk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGdldF9kb2MpOwogICAgICAgICAgICAgICAgIGlmIChlcnIgPCAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0xMzYxLDYgKzE0NzAsNDMgQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3Byb3BlcnR5X2dldF9fX2lzYWJzdHJhY3RtZXRob2RfXyhwcm9wZXJ0eW9iamVjdCAqcHJvcCwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBpbnQgcmVzID0gX1B5T2JqZWN0X0lzQWJzdHJhY3QocHJvcC0+cHJvcF9nZXQpOworICAgIGlmIChyZXMgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKHJlcykgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9CisKKyAgICByZXMgPSBfUHlPYmplY3RfSXNBYnN0cmFjdChwcm9wLT5wcm9wX3NldCk7CisgICAgaWYgKHJlcyA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAocmVzKSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0KKworICAgIHJlcyA9IF9QeU9iamVjdF9Jc0Fic3RyYWN0KHByb3AtPnByb3BfZGVsKTsKKyAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChyZXMpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorICAgIFB5X1JFVFVSTl9GQUxTRTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIHByb3BlcnR5X2dldHNldGxpc3RbXSA9IHsKKyAgICB7Il9faXNhYnN0cmFjdG1ldGhvZF9fIiwKKyAgICAgKGdldHRlcilwcm9wZXJ0eV9nZXRfX19pc2Fic3RyYWN0bWV0aG9kX18sIE5VTEwsCisgICAgIE5VTEwsCisgICAgIE5VTEx9LAorICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKHByb3BlcnR5X2RvYywKICJwcm9wZXJ0eShmZ2V0PU5vbmUsIGZzZXQ9Tm9uZSwgZmRlbD1Ob25lLCBkb2M9Tm9uZSkgLT4gcHJvcGVydHkgYXR0cmlidXRlXG4iCiAiXG4iCkBAIC0xNDI2LDcgKzE1NzIsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBwcm9wZXJ0eV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICBwcm9wZXJ0eV9tZW1iZXJzLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIHByb3BlcnR5X2dldHNldGxpc3QsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgcHJvcGVydHlfZGVzY3JfZ2V0LCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvZGljdG5vdGVzLnR4dCBiL09iamVjdHMvZGljdG5vdGVzLnR4dAppbmRleCBkM2FhNzc0Li5mODk3MjBjIDEwMDY0NAotLS0gYS9PYmplY3RzL2RpY3Rub3Rlcy50eHQKKysrIGIvT2JqZWN0cy9kaWN0bm90ZXMudHh0CkBAIC0xLDcgKzEsNiBAQAotTk9URVMgT04gT1BUSU1JWklORyBESUNUSU9OQVJJRVMKK05PVEVTIE9OIERJQ1RJT05BUklFUwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotCiBQcmluY2lwYWwgVXNlIENhc2VzIGZvciBEaWN0aW9uYXJpZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0yMSw3ICsyMCw3IEBACiAKIEJ1aWx0aW5zCiAgICAgRnJlcXVlbnQgcmVhZHMuICBBbG1vc3QgbmV2ZXIgd3JpdHRlbi4KLSAgICBTaXplIDEyNiBpbnRlcm5lZCBzdHJpbmdzIChhcyBvZiBQeTIuM2IxKS4KKyAgICBBYm91dCAxNTAgaW50ZXJuZWQgc3RyaW5ncyAoYXMgb2YgUHkzLjMpLgogICAgIEEgZmV3IGtleXMgYXJlIGFjY2Vzc2VkIG11Y2ggbW9yZSBmcmVxdWVudGx5IHRoYW4gb3RoZXJzLgogCiBVbmlxdWlmaWNhdGlvbgpAQCAtNTksNTUgKzU4LDIwIEBACiAgICAgQ2hhcmFjdGVyaXplZCBieSBkZWxldGlvbnMgaW50ZXJzcGVyc2VkIHdpdGggYWRkcyBhbmQgcmVwbGFjZW1lbnRzLgogICAgIFBlcmZvcm1hbmNlIGJlbmVmaXRzIGdyZWF0bHkgZnJvbSB0aGUgcmUtdXNlIG9mIGR1bW15IGVudHJpZXMuCiAKK0RhdGEgTGF5b3V0CistLS0tLS0tLS0tLQogCi1EYXRhIExheW91dCAoYXNzdW1pbmcgYSAzMi1iaXQgYm94IHdpdGggNjQgYnl0ZXMgcGVyIGNhY2hlIGxpbmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVNtYWxsZGljdHMgKDggZW50cmllcykgYXJlIGF0dGFjaGVkIHRvIHRoZSBkaWN0b2JqZWN0IHN0cnVjdHVyZQotYW5kIHRoZSB3aG9sZSBncm91cCBuZWFybHkgZmlsbHMgdHdvIGNvbnNlY3V0aXZlIGNhY2hlIGxpbmVzLgotCi1MYXJnZXIgZGljdHMgdXNlIHRoZSBmaXJzdCBoYWxmIG9mIHRoZSBkaWN0b2JqZWN0IHN0cnVjdHVyZSAob25lIGNhY2hlCi1saW5lKSBhbmQgYSBzZXBhcmF0ZSwgY29udGludW91cyBibG9jayBvZiBlbnRyaWVzIChhdCAxMiBieXRlcyBlYWNoCi1mb3IgYSB0b3RhbCBvZiA1LjMzMyBlbnRyaWVzIHBlciBjYWNoZSBsaW5lKS4KK0RpY3Rpb25hcmllcyBhcmUgY29tcG9zZWQgb2YgMyBjb21wb25lbnRzOgorVGhlIGRpY3RvYmplY3Qgc3RydWN0IGl0c2VsZgorQSBkaWN0LWtleXMgb2JqZWN0IChrZXlzICYgaGFzaGVzKQorQSB2YWx1ZXMgYXJyYXkKIAogCiBUdW5hYmxlIERpY3Rpb25hcnkgUGFyYW1ldGVycwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotKiBQeURpY3RfTUlOU0laRS4gIEN1cnJlbnRseSBzZXQgdG8gOC4KLSAgICBNdXN0IGJlIGEgcG93ZXIgb2YgdHdvLiAgTmV3IGRpY3RzIGhhdmUgdG8gemVyby1vdXQgZXZlcnkgY2VsbC4KLSAgICBFYWNoIGFkZGl0aW9uYWwgOCBjb25zdW1lcyAxLjUgY2FjaGUgbGluZXMuICBJbmNyZWFzaW5nIGltcHJvdmVzCi0gICAgdGhlIHNwYXJzZW5lc3Mgb2Ygc21hbGwgZGljdGlvbmFyaWVzIGJ1dCBjb3N0cyB0aW1lIHRvIHJlYWQgaW4KLSAgICB0aGUgYWRkaXRpb25hbCBjYWNoZSBsaW5lcyBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeSBpbiBjYWNoZS4KLSAgICBUaGF0IGNhc2UgaXMgY29tbW9uIHdoZW4ga2V5d29yZCBhcmd1bWVudHMgYXJlIHBhc3NlZC4KLQotKiBNYXhpbXVtIGRpY3Rpb25hcnkgbG9hZCBpbiBQeURpY3RfU2V0SXRlbS4gIEN1cnJlbnRseSBzZXQgdG8gMi8zLgotICAgIEluY3JlYXNpbmcgdGhpcyByYXRpbyBtYWtlcyBkaWN0aW9uYXJpZXMgbW9yZSBkZW5zZSByZXN1bHRpbmcKLSAgICBpbiBtb3JlIGNvbGxpc2lvbnMuICBEZWNyZWFzaW5nIGl0IGltcHJvdmVzIHNwYXJzZW5lc3MgYXQgdGhlCi0gICAgZXhwZW5zZSBvZiBzcHJlYWRpbmcgZW50cmllcyBvdmVyIG1vcmUgY2FjaGUgbGluZXMgYW5kIGF0IHRoZQotICAgIGNvc3Qgb2YgdG90YWwgbWVtb3J5IGNvbnN1bWVkLgotCi0gICAgVGhlIGxvYWQgdGVzdCBvY2N1cnMgaW4gaGlnaGx5IHRpbWUgc2Vuc2l0aXZlIGNvZGUuICBFZmZvcnRzCi0gICAgdG8gbWFrZSB0aGUgdGVzdCBtb3JlIGNvbXBsZXggKGZvciBleGFtcGxlLCB2YXJ5aW5nIHRoZSBsb2FkCi0gICAgZm9yIGRpZmZlcmVudCBzaXplcykgaGF2ZSBkZWdyYWRlZCBwZXJmb3JtYW5jZS4KLQotKiBHcm93dGggcmF0ZSB1cG9uIGhpdHRpbmcgbWF4aW11bSBsb2FkLiAgQ3VycmVudGx5IHNldCB0byAqMi4KLSAgICBSYWlzaW5nIHRoaXMgdG8gKjQgcmVzdWx0cyBpbiBoYWxmIHRoZSBudW1iZXIgb2YgcmVzaXplcywKLSAgICBsZXNzIGVmZm9ydCB0byByZXNpemUsIGJldHRlciBzcGFyc2VuZXNzIGZvciBzb21lIChidXQgbm90Ci0gICAgYWxsIGRpY3Qgc2l6ZXMpLCBhbmQgcG90ZW50aWFsbHkgZG91YmxlcyBtZW1vcnkgY29uc3VtcHRpb24KLSAgICBkZXBlbmRpbmcgb24gdGhlIHNpemUgb2YgdGhlIGRpY3Rpb25hcnkuICBTZXR0aW5nIHRvICo0Ci0gICAgZWxpbWluYXRlcyBldmVyeSBvdGhlciByZXNpemUgc3RlcC4KLQotKiBNYXhpbXVtIHNwYXJzZW5lc3MgKG1pbmltdW0gZGljdGlvbmFyeSBsb2FkKS4gIFdoYXQgcGVyY2VudGFnZQotICAgIG9mIGVudHJpZXMgY2FuIGJlIHVudXNlZCBiZWZvcmUgdGhlIGRpY3Rpb25hcnkgc2hyaW5rcyB0bwotICAgIGZyZWUgdXAgbWVtb3J5IGFuZCBzcGVlZCB1cCBpdGVyYXRpb24/ICAoVGhlIGN1cnJlbnQgQ1B5dGhvbgotICAgIGNvZGUgZG9lcyBub3QgcmVwcmVzZW50IHRoaXMgcGFyYW1ldGVyIGRpcmVjdGx5LikKLQotKiBTaHJpbmthZ2UgcmF0ZSB1cG9uIGV4Y2VlZGluZyBtYXhpbXVtIHNwYXJzZW5lc3MuICBUaGUgY3VycmVudAotICAgIENQeXRob24gY29kZSBuZXZlciBldmVuIGNoZWNrcyBzcGFyc2VuZXNzIHdoZW4gZGVsZXRpbmcgYQotICAgIGtleS4gIFdoZW4gYSBuZXcga2V5IGlzIGFkZGVkLCBpdCByZXNpemVzIGJhc2VkIG9uIHRoZSBudW1iZXIKLSAgICBvZiBhY3RpdmUga2V5cywgc28gdGhhdCB0aGUgYWRkaXRpb24gbWF5IHRyaWdnZXIgc2hyaW5rYWdlCi0gICAgcmF0aGVyIHRoYW4gZ3Jvd3RoLgorU2VlIGNvbW1lbnRzIGZvciBQeURpY3RfTUlOU0laRV9TUExJVCwgUHlEaWN0X01JTlNJWkVfQ09NQklORUQsCitVU0FCTEVfRlJBQ1RJT04gYW5kIEdST1dUSF9SQVRFIGluIGRpY3RvYmplY3QuYwogCiBUdW5lLXVwcyBzaG91bGQgYmUgbWVhc3VyZWQgYWNyb3NzIGEgYnJvYWQgcmFuZ2Ugb2YgYXBwbGljYXRpb25zIGFuZAogdXNlIGNhc2VzLiAgQSBjaGFuZ2UgdG8gYW55IHBhcmFtZXRlciB3aWxsIGhlbHAgaW4gc29tZSBzaXR1YXRpb25zIGFuZApAQCAtMTI2LDggKzkwLDggQEAKIEFsc28sIGV2ZXJ5IGRpY3Rpb25hcnkgaXRlcmF0ZXMgYXQgbGVhc3QgdHdpY2UsIG9uY2UgZm9yIHRoZSBtZW1zZXQoKQogd2hlbiBpdCBpcyBjcmVhdGVkIGFuZCBvbmNlIGJ5IGRlYWxsb2MoKS4KIAotRGljdGlvbmFyeSBvcGVyYXRpb25zIGludm9sdmluZyBvbmx5IGEgc2luZ2xlIGtleSBjYW4gYmUgTygxKSB1bmxlc3MgCi1yZXNpemluZyBpcyBwb3NzaWJsZS4gIEJ5IGNoZWNraW5nIGZvciBhIHJlc2l6ZSBvbmx5IHdoZW4gdGhlIAorRGljdGlvbmFyeSBvcGVyYXRpb25zIGludm9sdmluZyBvbmx5IGEgc2luZ2xlIGtleSBjYW4gYmUgTygxKSB1bmxlc3MKK3Jlc2l6aW5nIGlzIHBvc3NpYmxlLiAgQnkgY2hlY2tpbmcgZm9yIGEgcmVzaXplIG9ubHkgd2hlbiB0aGUKIGRpY3Rpb25hcnkgY2FuIGdyb3cgKGFuZCBtYXkgKnJlcXVpcmUqIHJlc2l6aW5nKSwgb3RoZXIgb3BlcmF0aW9ucwogcmVtYWluIE8oMSksIGFuZCB0aGUgb2RkcyBvZiByZXNpemUgdGhyYXNoaW5nIG9yIG1lbW9yeSBmcmFnbWVudGF0aW9uCiBhcmUgcmVkdWNlZC4gSW4gcGFydGljdWxhciwgYW4gYWxnb3JpdGhtIHRoYXQgZW1wdGllcyBhIGRpY3Rpb25hcnkKQEAgLTEzNSwxMzYgKzk5LDUxIEBACiBub3QgYmUgbmVjZXNzYXJ5IGF0IGFsbCBiZWNhdXNlIHRoZSBkaWN0aW9uYXJ5IGlzIGV2ZW50dWFsbHkKIGRpc2NhcmRlZCBlbnRpcmVseS4KIAorVGhlIGtleSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoaXMgaW1wbGVtZW50YXRpb24gYW5kIGVhcmxpZXIgdmVyc2lvbnMgYXJlOgorICAgIDEuIFRoZSB0YWJsZSBjYW4gYmUgc3BsaXQgaW50byB0d28gcGFydHMsIHRoZSBrZXlzIGFuZCB0aGUgdmFsdWVzLgorCisgICAgMi4gVGhlcmUgaXMgYW4gYWRkaXRpb25hbCBrZXktdmFsdWUgY29tYmluYXRpb246IChrZXksIE5VTEwpLgorICAgICAgIFVubGlrZSAoPGR1bW15PiwgTlVMTCkgd2hpY2ggcmVwcmVzZW50cyBhIGRlbGV0ZWQgdmFsdWUsIChrZXksIE5VTEwpCisgICAgICAgcmVwcmVzZW50ZWQgYSB5ZXQgdG8gYmUgaW5zZXJ0ZWQgdmFsdWUuIFRoaXMgY29tYmluYXRpb24gY2FuIG9ubHkgb2NjdXIKKyAgICAgICB3aGVuIHRoZSB0YWJsZSBpcyBzcGxpdC4KKworICAgIDMuIE5vIHNtYWxsIHRhYmxlIGVtYmVkZGVkIGluIHRoZSBkaWN0LAorICAgICAgIGFzIHRoaXMgd291bGQgbWFrZSBzaGFyaW5nIG9mIGtleS10YWJsZXMgaW1wb3NzaWJsZS4KKworCitUaGVzZSBjaGFuZ2VzIGhhdmUgdGhlIGZvbGxvd2luZyBjb25zZXF1ZW5jZXMuCisgICAxLiBHZW5lcmFsIGRpY3Rpb25hcmllcyBhcmUgc2xpZ2h0bHkgbGFyZ2VyLgorCisgICAyLiBBbGwgb2JqZWN0IGRpY3Rpb25hcmllcyBvZiBhIHNpbmdsZSBjbGFzcyBjYW4gc2hhcmUgYSBzaW5nbGUga2V5LXRhYmxlLAorICAgICAgc2F2aW5nIGFib3V0IDYwJSBtZW1vcnkgZm9yIHN1Y2ggY2FzZXMuCiAKIFJlc3VsdHMgb2YgQ2FjaGUgTG9jYWxpdHkgRXhwZXJpbWVudHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdoZW4gYW4gZW50cnkgaXMgcmV0cmlldmVkIGZyb20gbWVtb3J5LCA0LjMzMyBhZGphY2VudCBlbnRyaWVzIGFyZSBhbHNvCi1yZXRyaWV2ZWQgaW50byBhIGNhY2hlIGxpbmUuICBTaW5jZSBhY2Nlc3NpbmcgaXRlbXMgaW4gY2FjaGUgaXMgKm11Y2gqCi1jaGVhcGVyIHRoYW4gYSBjYWNoZSBtaXNzLCBhbiBlbnRpY2luZyBpZGVhIGlzIHRvIHByb2JlIHRoZSBhZGphY2VudAotZW50cmllcyBhcyBhIGZpcnN0IHN0ZXAgaW4gY29sbGlzaW9uIHJlc29sdXRpb24uICBVbmZvcnR1bmF0ZWx5LCB0aGUKLWludHJvZHVjdGlvbiBvZiBhbnkgcmVndWxhcml0eSBpbnRvIGNvbGxpc2lvbiBzZWFyY2hlcyByZXN1bHRzIGluIG1vcmUKLWNvbGxpc2lvbnMgdGhhbiB0aGUgY3VycmVudCByYW5kb20gY2hhaW5pbmcgYXBwcm9hY2guCitFeHBlcmltZW50cyBvbiBhbiBlYXJsaWVyIGRlc2lnbiBvZiBkaWN0aW9uYXJ5LCBpbiB3aGljaCBhbGwgdGFibGVzIHdlcmUKK2NvbWJpbmVkLCBzaG93ZWQgdGhlIGZvbGxvd2luZzoKIAotRXhwbG9pdGluZyBjYWNoZSBsb2NhbGl0eSBhdCB0aGUgZXhwZW5zZSBvZiBhZGRpdGlvbmFsIGNvbGxpc2lvbnMgZmFpbHMKLXRvIHBheW9mZiB3aGVuIHRoZSBlbnRyaWVzIGFyZSBhbHJlYWR5IGxvYWRlZCBpbiBjYWNoZSAodGhlIGV4cGVuc2UKLWlzIHBhaWQgd2l0aCBubyBjb21wZW5zYXRpbmcgYmVuZWZpdCkuICBUaGlzIG9jY3VycyBpbiBzbWFsbCBkaWN0aW9uYXJpZXMKLXdoZXJlIHRoZSB3aG9sZSBkaWN0aW9uYXJ5IGZpdHMgaW50byBhIHBhaXIgb2YgY2FjaGUgbGluZXMuICBJdCBhbHNvCi1vY2N1cnMgZnJlcXVlbnRseSBpbiBsYXJnZSBkaWN0aW9uYXJpZXMgd2hpY2ggaGF2ZSBhIGNvbW1vbiBhY2Nlc3MgcGF0dGVybgotd2hlcmUgc29tZSBrZXlzIGFyZSBhY2Nlc3NlZCBtdWNoIG1vcmUgZnJlcXVlbnRseSB0aGFuIG90aGVycy4gIFRoZQotbW9yZSBwb3B1bGFyIGVudHJpZXMgKmFuZCogdGhlaXIgY29sbGlzaW9uIGNoYWlucyB0ZW5kIHRvIHJlbWFpbiBpbiBjYWNoZS4KKyAgV2hlbiBhbiBlbnRyeSBpcyByZXRyaWV2ZWQgZnJvbSBtZW1vcnksIHNldmVyYWwgYWRqYWNlbnQgZW50cmllcyBhcmUgYWxzbworICByZXRyaWV2ZWQgaW50byBhIGNhY2hlIGxpbmUuICBTaW5jZSBhY2Nlc3NpbmcgaXRlbXMgaW4gY2FjaGUgaXMgKm11Y2gqCisgIGNoZWFwZXIgdGhhbiBhIGNhY2hlIG1pc3MsIGFuIGVudGljaW5nIGlkZWEgaXMgdG8gcHJvYmUgdGhlIGFkamFjZW50CisgIGVudHJpZXMgYXMgYSBmaXJzdCBzdGVwIGluIGNvbGxpc2lvbiByZXNvbHV0aW9uLiAgVW5mb3J0dW5hdGVseSwgdGhlCisgIGludHJvZHVjdGlvbiBvZiBhbnkgcmVndWxhcml0eSBpbnRvIGNvbGxpc2lvbiBzZWFyY2hlcyByZXN1bHRzIGluIG1vcmUKKyAgY29sbGlzaW9ucyB0aGFuIHRoZSBjdXJyZW50IHJhbmRvbSBjaGFpbmluZyBhcHByb2FjaC4KIAotVG8gZXhwbG9pdCBjYWNoZSBsb2NhbGl0eSwgY2hhbmdlIHRoZSBjb2xsaXNpb24gcmVzb2x1dGlvbiBzZWN0aW9uCi1pbiBsb29rZGljdCgpIGFuZCBsb29rZGljdF9zdHJpbmcoKS4gIFNldCBpXj0xIGF0IHRoZSB0b3Agb2YgdGhlCi1sb29wIGFuZCBtb3ZlIHRoZSAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxIHRvIGFuIHVucm9sbGVkCi12ZXJzaW9uIG9mIHRoZSBsb29wLgorICBFeHBsb2l0aW5nIGNhY2hlIGxvY2FsaXR5IGF0IHRoZSBleHBlbnNlIG9mIGFkZGl0aW9uYWwgY29sbGlzaW9ucyBmYWlscworICB0byBwYXlvZmYgd2hlbiB0aGUgZW50cmllcyBhcmUgYWxyZWFkeSBsb2FkZWQgaW4gY2FjaGUgKHRoZSBleHBlbnNlCisgIGlzIHBhaWQgd2l0aCBubyBjb21wZW5zYXRpbmcgYmVuZWZpdCkuICBUaGlzIG9jY3VycyBpbiBzbWFsbCBkaWN0aW9uYXJpZXMKKyAgd2hlcmUgdGhlIHdob2xlIGRpY3Rpb25hcnkgZml0cyBpbnRvIGEgcGFpciBvZiBjYWNoZSBsaW5lcy4gIEl0IGFsc28KKyAgb2NjdXJzIGZyZXF1ZW50bHkgaW4gbGFyZ2UgZGljdGlvbmFyaWVzIHdoaWNoIGhhdmUgYSBjb21tb24gYWNjZXNzIHBhdHRlcm4KKyAgd2hlcmUgc29tZSBrZXlzIGFyZSBhY2Nlc3NlZCBtdWNoIG1vcmUgZnJlcXVlbnRseSB0aGFuIG90aGVycy4gIFRoZQorICBtb3JlIHBvcHVsYXIgZW50cmllcyAqYW5kKiB0aGVpciBjb2xsaXNpb24gY2hhaW5zIHRlbmQgdG8gcmVtYWluIGluIGNhY2hlLgogCi1UaGlzIG9wdGltaXphdGlvbiBzdHJhdGVneSBjYW4gYmUgbGV2ZXJhZ2VkIGluIHNldmVyYWwgd2F5czoKKyAgVG8gZXhwbG9pdCBjYWNoZSBsb2NhbGl0eSwgY2hhbmdlIHRoZSBjb2xsaXNpb24gcmVzb2x1dGlvbiBzZWN0aW9uCisgIGluIGxvb2tkaWN0KCkgYW5kIGxvb2tkaWN0X3N0cmluZygpLiAgU2V0IGlePTEgYXQgdGhlIHRvcCBvZiB0aGUKKyAgbG9vcCBhbmQgbW92ZSB0aGUgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMSB0byBhbiB1bnJvbGxlZAorICB2ZXJzaW9uIG9mIHRoZSBsb29wLgogCi0qIElmIHRoZSBkaWN0aW9uYXJ5IGlzIGtlcHQgc3BhcnNlICh0aHJvdWdoIHRoZSB0dW5hYmxlIHBhcmFtZXRlcnMpLAotdGhlbiB0aGUgb2NjdXJyZW5jZSBvZiBhZGRpdGlvbmFsIGNvbGxpc2lvbnMgaXMgbGVzc2VuZWQuCi0KLSogSWYgbG9va2RpY3QoKSBhbmQgbG9va2RpY3Rfc3RyaW5nKCkgYXJlIHNwZWNpYWxpemVkIGZvciBzbWFsbCBkaWN0cwotYW5kIGZvciBsYXJnZWRpY3RzLCB0aGVuIHRoZSB2ZXJzaW9ucyBmb3IgbGFyZ2VfZGljdHMgY2FuIGJlIGdpdmVuCi1hbiBhbHRlcm5hdGUgc2VhcmNoIHN0cmF0ZWd5IHdpdGhvdXQgaW5jcmVhc2luZyBjb2xsaXNpb25zIGluIHNtYWxsIGRpY3RzCi13aGljaCBhbHJlYWR5IGhhdmUgdGhlIG1heGltdW0gYmVuZWZpdCBvZiBjYWNoZSBsb2NhbGl0eS4KLQotKiBJZiB0aGUgdXNlIGNhc2UgZm9yIGEgZGljdGlvbmFyeSBpcyBrbm93biB0byBoYXZlIGEgcmFuZG9tIGtleQotYWNjZXNzIHBhdHRlcm4gKGFzIG9wcG9zZWQgdG8gYSBtb3JlIGNvbW1vbiBwYXR0ZXJuIHdpdGggYSBaaXBmJ3MgbGF3Ci1kaXN0cmlidXRpb24pLCB0aGVuIHRoZXJlIHdpbGwgYmUgbW9yZSBiZW5lZml0IGZvciBsYXJnZSBkaWN0aW9uYXJpZXMKLWJlY2F1c2UgYW55IGdpdmVuIGtleSBpcyBubyBtb3JlIGxpa2VseSB0aGFuIGFub3RoZXIgdG8gYWxyZWFkeSBiZQotaW4gY2FjaGUuCi0KLSogSW4gdXNlIGNhc2VzIHdpdGggcGFpcmVkIGFjY2Vzc2VzIHRvIHRoZSBzYW1lIGtleSwgdGhlIHNlY29uZCBhY2Nlc3MKLWlzIGFsd2F5cyBpbiBjYWNoZSBhbmQgZ2V0cyBubyBiZW5lZml0IGZyb20gZWZmb3J0cyB0byBmdXJ0aGVyIGltcHJvdmUKLWNhY2hlIGxvY2FsaXR5LgotCi1PcHRpbWl6aW5nIHRoZSBTZWFyY2ggb2YgU21hbGwgRGljdGlvbmFyaWVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUlmIGxvb2tkaWN0KCkgYW5kIGxvb2tkaWN0X3N0cmluZygpIGFyZSBzcGVjaWFsaXplZCBmb3Igc21hbGxlciBkaWN0aW9uYXJpZXMsCi10aGVuIGEgY3VzdG9tIHNlYXJjaCBhcHByb2FjaCBjYW4gYmUgaW1wbGVtZW50ZWQgdGhhdCBleHBsb2l0cyB0aGUgc21hbGwKLXNlYXJjaCBzcGFjZSBhbmQgY2FjaGUgbG9jYWxpdHkuCi0KLSogVGhlIHNpbXBsZXN0IGV4YW1wbGUgaXMgYSBsaW5lYXIgc2VhcmNoIG9mIGNvbnRpZ3VvdXMgZW50cmllcy4gIFRoaXMgaXMKLSAgc2ltcGxlIHRvIGltcGxlbWVudCwgZ3VhcmFudGVlZCB0byB0ZXJtaW5hdGUgcmFwaWRseSwgbmV2ZXIgc2VhcmNoZXMKLSAgdGhlIHNhbWUgZW50cnkgdHdpY2UsIGFuZCBwcmVjbHVkZXMgdGhlIG5lZWQgdG8gY2hlY2sgZm9yIGR1bW15IGVudHJpZXMuCi0KLSogQSBtb3JlIGFkdmFuY2VkIGV4YW1wbGUgaXMgYSBzZWxmLW9yZ2FuaXppbmcgc2VhcmNoIHNvIHRoYXQgdGhlIG1vc3QKLSAgZnJlcXVlbnRseSBhY2Nlc3NlZCBlbnRyaWVzIGdldCBwcm9iZWQgZmlyc3QuICBUaGUgb3JnYW5pemF0aW9uCi0gIGFkYXB0cyBpZiB0aGUgYWNjZXNzIHBhdHRlcm4gY2hhbmdlcyBvdmVyIHRpbWUuICBUcmVhcHMgYXJlIGlkZWFsbHkKLSAgc3VpdGVkIGZvciBzZWxmLW9yZ2FuaXphdGlvbiB3aXRoIHRoZSBtb3N0IGNvbW1vbiBlbnRyaWVzIGF0IHRoZQotICB0b3Agb2YgdGhlIGhlYXAgYW5kIGEgcmFwaWQgYmluYXJ5IHNlYXJjaCBwYXR0ZXJuLiAgTW9zdCBwcm9iZXMgYW5kCi0gIHJlc3VsdHMgYXJlIGFsbCBsb2NhdGVkIGF0IHRoZSB0b3Agb2YgdGhlIHRyZWUgYWxsb3dpbmcgdGhlbSBhbGwgdG8KLSAgYmUgbG9jYXRlZCBpbiBvbmUgb3IgdHdvIGNhY2hlIGxpbmVzLgotCi0qIEFsc28sIHNtYWxsIGRpY3Rpb25hcmllcyBtYXkgYmUgbWFkZSBtb3JlIGRlbnNlLCBwZXJoYXBzIGZpbGxpbmcgYWxsCi0gIGVpZ2h0IGNlbGxzIHRvIHRha2UgdGhlIG1heGltdW0gYWR2YW50YWdlIG9mIHR3byBjYWNoZSBsaW5lcy4KK0ZvciBzcGxpdCB0YWJsZXMsIHRoZSBhYm92ZSB3aWxsIGFwcGx5IHRvIHRoZSBrZXlzLCBidXQgdGhlIHZhbHVlIHdpbGwKK2Fsd2F5cyBiZSBpbiBhIGRpZmZlcmVudCBjYWNoZSBsaW5lIGZyb20gdGhlIGtleS4KIAogCi1TdHJhdGVneSBQYXR0ZXJuCi0tLS0tLS0tLS0tLS0tLS0tCi0KLUNvbnNpZGVyIGFsbG93aW5nIHRoZSB1c2VyIHRvIHNldCB0aGUgdHVuYWJsZSBwYXJhbWV0ZXJzIG9yIHRvIHNlbGVjdCBhCi1wYXJ0aWN1bGFyIHNlYXJjaCBtZXRob2QuICBTaW5jZSBzb21lIGRpY3Rpb25hcnkgdXNlIGNhc2VzIGhhdmUga25vd24KLXNpemVzIGFuZCBhY2Nlc3MgcGF0dGVybnMsIHRoZSB1c2VyIG1heSBiZSBhYmxlIHRvIHByb3ZpZGUgdXNlZnVsIGhpbnRzLgotCi0xKSBGb3IgZXhhbXBsZSwgaWYgbWVtYmVyc2hpcCB0ZXN0aW5nIG9yIGxvb2t1cHMgZG9taW5hdGUgcnVudGltZSBhbmQgbWVtb3J5Ci0gICBpcyBub3QgYXQgYSBwcmVtaXVtLCB0aGUgdXNlciBtYXkgYmVuZWZpdCBmcm9tIHNldHRpbmcgdGhlIG1heGltdW0gbG9hZAotICAgcmF0aW8gYXQgNSUgb3IgMTAlIGluc3RlYWQgb2YgdGhlIHVzdWFsIDY2LjclLiAgVGhpcyB3aWxsIHNoYXJwbHkKLSAgIGN1cnRhaWwgdGhlIG51bWJlciBvZiBjb2xsaXNpb25zIGJ1dCB3aWxsIGluY3JlYXNlIGl0ZXJhdGlvbiB0aW1lLgotICAgVGhlIGJ1aWx0aW4gbmFtZXNwYWNlIGlzIGEgcHJpbWUgZXhhbXBsZSBvZiBhIGRpY3Rpb25hcnkgdGhhdCBjYW4KLSAgIGJlbmVmaXQgZnJvbSBiZWluZyBoaWdobHkgc3BhcnNlLgotCi0yKSBEaWN0aW9uYXJ5IGNyZWF0aW9uIHRpbWUgY2FuIGJlIHNob3J0ZW5lZCBpbiBjYXNlcyB3aGVyZSB0aGUgdWx0aW1hdGUKLSAgIHNpemUgb2YgdGhlIGRpY3Rpb25hcnkgaXMga25vd24gaW4gYWR2YW5jZS4gIFRoZSBkaWN0aW9uYXJ5IGNhbiBiZQotICAgcHJlLXNpemVkIHNvIHRoYXQgbm8gcmVzaXplIG9wZXJhdGlvbnMgYXJlIHJlcXVpcmVkIGR1cmluZyBjcmVhdGlvbi4KLSAgIE5vdCBvbmx5IGRvZXMgdGhpcyBzYXZlIHJlc2l6ZXMsIGJ1dCB0aGUga2V5IGluc2VydGlvbiB3aWxsIGdvCi0gICBtb3JlIHF1aWNrbHkgYmVjYXVzZSB0aGUgZmlyc3QgaGFsZiBvZiB0aGUga2V5cyB3aWxsIGJlIGluc2VydGVkIGludG8KLSAgIGEgbW9yZSBzcGFyc2UgZW52aXJvbm1lbnQgdGhhbiBiZWZvcmUuICBUaGUgcHJlY29uZGl0aW9ucyBmb3IgdGhpcwotICAgc3RyYXRlZ3kgYXJpc2Ugd2hlbmV2ZXIgYSBkaWN0aW9uYXJ5IGlzIGNyZWF0ZWQgZnJvbSBhIGtleSBvciBpdGVtCi0gICBzZXF1ZW5jZSBhbmQgdGhlIG51bWJlciBvZiAqdW5pcXVlKiBrZXlzIGlzIGtub3duLgotCi0zKSBJZiB0aGUga2V5IHNwYWNlIGlzIGxhcmdlIGFuZCB0aGUgYWNjZXNzIHBhdHRlcm4gaXMga25vd24gdG8gYmUgcmFuZG9tLAotICAgdGhlbiBzZWFyY2ggc3RyYXRlZ2llcyBleHBsb2l0aW5nIGNhY2hlIGxvY2FsaXR5IGNhbiBiZSBmcnVpdGZ1bC4KLSAgIFRoZSBwcmVjb25kaXRpb25zIGZvciB0aGlzIHN0cmF0ZWd5IGFyaXNlIGluIHNpbXVsYXRpb25zIGFuZAotICAgbnVtZXJpY2FsIGFuYWx5c2lzLgotCi00KSBJZiB0aGUga2V5cyBhcmUgZml4ZWQgYW5kIHRoZSBhY2Nlc3MgcGF0dGVybiBzdHJvbmdseSBmYXZvcnMgc29tZSBvZgotICAgdGhlIGtleXMsIHRoZW4gdGhlIGVudHJpZXMgY2FuIGJlIHN0b3JlZCBjb250aWd1b3VzbHkgYW5kIGFjY2Vzc2VkCi0gICB3aXRoIGEgbGluZWFyIHNlYXJjaCBvciB0cmVhcC4gIFRoaXMgZXhwbG9pdHMga25vd2xlZGdlIG9mIHRoZSBkYXRhLAotICAgY2FjaGUgbG9jYWxpdHksIGFuZCBhIHNpbXBsaWZpZWQgc2VhcmNoIHJvdXRpbmUuICBJdCBhbHNvIGVsaW1pbmF0ZXMKLSAgIHRoZSBuZWVkIHRvIHRlc3QgZm9yIGR1bW15IGVudHJpZXMgb24gZWFjaCBwcm9iZS4gIFRoZSBwcmVjb25kaXRpb25zCi0gICBmb3IgdGhpcyBzdHJhdGVneSBhcmlzZSBpbiBzeW1ib2wgdGFibGVzIGFuZCBpbiB0aGUgYnVpbHRpbiBkaWN0aW9uYXJ5LgotCi0KLVJlYWRvbmx5IERpY3Rpb25hcmllcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Tb21lIGRpY3Rpb25hcnkgdXNlIGNhc2VzIHBhc3MgdGhyb3VnaCBhIGJ1aWxkIHN0YWdlIGFuZCB0aGVuIG1vdmUgdG8gYQotbW9yZSBoZWF2aWx5IGV4ZXJjaXNlZCBsb29rdXAgc3RhZ2Ugd2l0aCBubyBmdXJ0aGVyIGNoYW5nZXMgdG8gdGhlCi1kaWN0aW9uYXJ5LgotCi1BbiBpZGVhIHRoYXQgZW1lcmdlZCBvbiBweXRob24tZGV2IGlzIHRvIGJlIGFibGUgdG8gY29udmVydCBhIGRpY3Rpb25hcnkKLXRvIGEgcmVhZC1vbmx5IHN0YXRlLiAgVGhpcyBjYW4gaGVscCBwcmV2ZW50IHByb2dyYW1taW5nIGVycm9ycyBhbmQgYWxzbwotcHJvdmlkZSBrbm93bGVkZ2UgdGhhdCBjYW4gYmUgZXhwbG9pdGVkIGZvciBsb29rdXAgb3B0aW1pemF0aW9uLgotCi1UaGUgZGljdGlvbmFyeSBjYW4gYmUgaW1tZWRpYXRlbHkgcmVidWlsdCAoZWxpbWluYXRpbmcgZHVtbXkgZW50cmllcyksCi1yZXNpemVkICh0byBhbiBhcHByb3ByaWF0ZSBsZXZlbCBvZiBzcGFyc2VuZXNzKSwgYW5kIHRoZSBrZXlzIGNhbiBiZQotam9zdGxlZCAodG8gbWluaW1pemUgY29sbGlzaW9ucykuICBUaGUgbG9va2RpY3QoKSByb3V0aW5lIGNhbiB0aGVuCi1lbGltaW5hdGUgdGhlIHRlc3QgZm9yIGR1bW15IGVudHJpZXMgKHNhdmluZyBhYm91dCAxLzQgb2YgdGhlIHRpbWUKLXNwZW50IGluIHRoZSBjb2xsaXNpb24gcmVzb2x1dGlvbiBsb29wKS4KLQotQW4gYWRkaXRpb25hbCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgbGlua3MgaW50byB0aGUgZW1wdHkgc3BhY2VzCi1zbyB0aGF0IGRpY3Rpb25hcnkgaXRlcmF0aW9uIGNhbiBwcm9jZWVkIGluIGxlbihkKSBzdGVwcyBpbnN0ZWFkIG9mCi0obXAtPm1hc2sgKyAxKSBzdGVwcy4gIEFsdGVybmF0aXZlbHksIGEgc2VwYXJhdGUgdHVwbGUgb2Yga2V5cyBjYW4gYmUKLWtlcHQganVzdCBmb3IgaXRlcmF0aW9uLgotCi0KLUNhY2hpbmcgTG9va3VwcwotLS0tLS0tLS0tLS0tLS0tCi1UaGUgaWRlYSBpcyB0byBleHBsb2l0IGtleSBhY2Nlc3MgcGF0dGVybnMgYnkgYW50aWNpcGF0aW5nIGZ1dHVyZSBsb29rdXBzCi1iYXNlZCBvbiBwcmV2aW91cyBsb29rdXBzLgotCi1UaGUgc2ltcGxlc3QgaW5jYXJuYXRpb24gaXMgdG8gc2F2ZSB0aGUgbW9zdCByZWNlbnRseSBhY2Nlc3NlZCBlbnRyeS4KLVRoaXMgZ2l2ZXMgb3B0aW1hbCBwZXJmb3JtYW5jZSBmb3IgdXNlIGNhc2VzIHdoZXJlIGV2ZXJ5IGdldCBpcyBmb2xsb3dlZAotYnkgYSBzZXQgb3IgZGVsIHRvIHRoZSBzYW1lIGtleS4KZGlmZiAtLWdpdCBhL09iamVjdHMvZGljdG9iamVjdC5jIGIvT2JqZWN0cy9kaWN0b2JqZWN0LmMKaW5kZXggYzEwYmZjYy4uOGMwOWU0NiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9kaWN0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9kaWN0b2JqZWN0LmMKQEAgLTcsOSArNyw5MyBAQAogICAgdHVuaW5nIGRpY3Rpb25hcmllcywgYW5kIHNldmVyYWwgaWRlYXMgZm9yIHBvc3NpYmxlIG9wdGltaXphdGlvbnMuCiAqLwogCisKKy8qCitUaGVyZSBhcmUgZm91ciBraW5kcyBvZiBzbG90cyBpbiB0aGUgdGFibGU6CisKKzEuIFVudXNlZC4gIG1lX2tleSA9PSBtZV92YWx1ZSA9PSBOVUxMCisgICBEb2VzIG5vdCBob2xkIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpciBub3cgYW5kIG5ldmVyIGRpZC4gIFVudXNlZCBjYW4KKyAgIHRyYW5zaXRpb24gdG8gQWN0aXZlIHVwb24ga2V5IGluc2VydGlvbi4gIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSBpbiB3aGljaAorICAgbWVfa2V5IGlzIE5VTEwsIGFuZCBpcyBlYWNoIHNsb3QncyBpbml0aWFsIHN0YXRlLgorCisyLiBBY3RpdmUuICBtZV9rZXkgIT0gTlVMTCBhbmQgbWVfa2V5ICE9IGR1bW15IGFuZCBtZV92YWx1ZSAhPSBOVUxMCisgICBIb2xkcyBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIuICBBY3RpdmUgY2FuIHRyYW5zaXRpb24gdG8gRHVtbXkgb3IKKyAgIFBlbmRpbmcgdXBvbiBrZXkgZGVsZXRpb24gKGZvciBjb21iaW5lZCBhbmQgc3BsaXQgdGFibGVzIHJlc3BlY3RpdmVseSkuCisgICBUaGlzIGlzIHRoZSBvbmx5IGNhc2UgaW4gd2hpY2ggbWVfdmFsdWUgIT0gTlVMTC4KKworMy4gRHVtbXkuICBtZV9rZXkgPT0gZHVtbXkgYW5kIG1lX3ZhbHVlID09IE5VTEwKKyAgIFByZXZpb3VzbHkgaGVsZCBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIsIGJ1dCB0aGF0IHdhcyBkZWxldGVkIGFuZCBhbgorICAgYWN0aXZlIHBhaXIgaGFzIG5vdCB5ZXQgb3ZlcndyaXR0ZW4gdGhlIHNsb3QuICBEdW1teSBjYW4gdHJhbnNpdGlvbiB0bworICAgQWN0aXZlIHVwb24ga2V5IGluc2VydGlvbi4gIER1bW15IHNsb3RzIGNhbm5vdCBiZSBtYWRlIFVudXNlZCBhZ2FpbgorICAgKGNhbm5vdCBoYXZlIG1lX2tleSBzZXQgdG8gTlVMTCksIGVsc2UgdGhlIHByb2JlIHNlcXVlbmNlIGluIGNhc2Ugb2YKKyAgIGNvbGxpc2lvbiB3b3VsZCBoYXZlIG5vIHdheSB0byBrbm93IHRoZXkgd2VyZSBvbmNlIGFjdGl2ZS4KKworNC4gUGVuZGluZy4gTm90IHlldCBpbnNlcnRlZCBvciBkZWxldGVkIGZyb20gYSBzcGxpdC10YWJsZS4KKyAgIGtleSAhPSBOVUxMLCBrZXkgIT0gZHVtbXkgYW5kIHZhbHVlID09IE5VTEwKKworVGhlIERpY3RPYmplY3QgY2FuIGJlIGluIG9uZSBvZiB0d28gZm9ybXMuCitFaXRoZXI6CisgIEEgY29tYmluZWQgdGFibGU6CisgICAgbWFfdmFsdWVzID09IE5VTEwsIGRrX3JlZmNudCA9PSAxLgorICAgIFZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBtZV92YWx1ZSBmaWVsZCBvZiB0aGUgUHlEaWN0S2V5c09iamVjdC4KKyAgICBTbG90IGtpbmQgNCBpcyBub3QgYWxsb3dlZCBpLmUuCisgICAgICAgIGtleSAhPSBOVUxMLCBrZXkgIT0gZHVtbXkgYW5kIHZhbHVlID09IE5VTEwgaXMgaWxsZWdhbC4KK09yOgorICBBIHNwbGl0IHRhYmxlOgorICAgIG1hX3ZhbHVlcyAhPSBOVUxMLCBka19yZWZjbnQgPj0gMQorICAgIFZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBtYV92YWx1ZXMgYXJyYXkuCisgICAgT25seSBzdHJpbmcgKHVuaWNvZGUpIGtleXMgYXJlIGFsbG93ZWQsIG5vIDxkdW1teT4ga2V5cyBhcmUgcHJlc2VudC4KKworTm90ZTogLnBvcGl0ZW0oKSBhYnVzZXMgdGhlIG1lX2hhc2ggZmllbGQgb2YgYW4gVW51c2VkIG9yIER1bW15IHNsb3QgdG8KK2hvbGQgYSBzZWFyY2ggZmluZ2VyLiAgVGhlIG1lX2hhc2ggZmllbGQgb2YgVW51c2VkIG9yIER1bW15IHNsb3RzIGhhcyBubworbWVhbmluZyBvdGhlcndpc2UuIEFzIGEgY29uc2VxdWVuY2Ugb2YgdGhpcyBwb3BpdGVtIGFsd2F5cyBjb252ZXJ0cyB0aGUgZGljdAordG8gdGhlIGNvbWJpbmVkLXRhYmxlIGZvcm0uCisqLworCisvKiBQeURpY3RfTUlOU0laRV9TUExJVCBpcyB0aGUgbWluaW11bSBzaXplIG9mIGEgc3BsaXQgZGljdGlvbmFyeS4KKyAqIEl0IG11c3QgYmUgYSBwb3dlciBvZiAyLCBhbmQgYXQgbGVhc3QgNC4KKyAqIFJlc2l6aW5nIG9mIHNwbGl0IGRpY3Rpb25hcmllcyBpcyB2ZXJ5IHJhcmUsIHNvIHRoZSBzYXZpbmcgbWVtb3J5IGlzIG1vcmUKKyAqIGltcG9ydGFudCB0aGFuIHRoZSBjb3N0IG9mIHJlc2l6aW5nLgorICovCisjZGVmaW5lIFB5RGljdF9NSU5TSVpFX1NQTElUIDQKKworLyogUHlEaWN0X01JTlNJWkVfQ09NQklORUQgaXMgdGhlIHN0YXJ0aW5nIHNpemUgZm9yIGFueSBuZXcsIG5vbi1zcGxpdCBkaWN0LgorICogOCBhbGxvd3MgZGljdHMgd2l0aCBubyBtb3JlIHRoYW4gNSBhY3RpdmUgZW50cmllczsgZXhwZXJpbWVudHMgc3VnZ2VzdGVkCisgKiB0aGlzIHN1ZmZpY2VzIGZvciB0aGUgbWFqb3JpdHkgb2YgZGljdHMgKGNvbnNpc3RpbmcgbW9zdGx5IG9mIHVzdWFsbHktc21hbGwKKyAqIGRpY3RzIGNyZWF0ZWQgdG8gcGFzcyBrZXl3b3JkIGFyZ3VtZW50cykuCisgKiBNYWtpbmcgdGhpcyA4LCByYXRoZXIgdGhhbiA0IHJlZHVjZXMgdGhlIG51bWJlciBvZiByZXNpemVzIGZvciBtb3N0CisgKiBkaWN0aW9uYXJpZXMsIHdpdGhvdXQgYW55IHNpZ25pZmljYW50IGV4dHJhIG1lbW9yeSB1c2UuCisgKi8KKyNkZWZpbmUgUHlEaWN0X01JTlNJWkVfQ09NQklORUQgOAorCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RyaW5nbGliL2VxLmgiCiAKK3R5cGVkZWYgc3RydWN0IHsKKyAgICAvKiBDYWNoZWQgaGFzaCBjb2RlIG9mIG1lX2tleS4gKi8KKyAgICBQeV9oYXNoX3QgbWVfaGFzaDsKKyAgICBQeU9iamVjdCAqbWVfa2V5OworICAgIFB5T2JqZWN0ICptZV92YWx1ZTsgLyogVGhpcyBmaWVsZCBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIGNvbWJpbmVkIHRhYmxlcyAqLworfSBQeURpY3RLZXlFbnRyeTsKKwordHlwZWRlZiBQeURpY3RLZXlFbnRyeSAqKCpkaWN0X2xvb2t1cF9mdW5jKQorKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKKworc3RydWN0IF9kaWN0a2V5c29iamVjdCB7CisgICAgUHlfc3NpemVfdCBka19yZWZjbnQ7CisgICAgUHlfc3NpemVfdCBka19zaXplOworICAgIGRpY3RfbG9va3VwX2Z1bmMgZGtfbG9va3VwOworICAgIFB5X3NzaXplX3QgZGtfdXNhYmxlOworICAgIFB5RGljdEtleUVudHJ5IGRrX2VudHJpZXNbMV07Cit9OworCisKKy8qCitUbyBlbnN1cmUgdGhlIGxvb2t1cCBhbGdvcml0aG0gdGVybWluYXRlcywgdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgVW51c2VkCitzbG90IChOVUxMIGtleSkgaW4gdGhlIHRhYmxlLgorVG8gYXZvaWQgc2xvd2luZyBkb3duIGxvb2t1cHMgb24gYSBuZWFyLWZ1bGwgdGFibGUsIHdlIHJlc2l6ZSB0aGUgdGFibGUgd2hlbgoraXQncyBVU0FCTEVfRlJBQ1RJT04gKGN1cnJlbnRseSB0d28tdGhpcmRzKSBmdWxsLgorKi8KIAogLyogU2V0IGEga2V5IGVycm9yIHdpdGggdGhlIHNwZWNpZmllZCBhcmd1bWVudCwgd3JhcHBpbmcgaXQgaW4gYQogICogdHVwbGUgYXV0b21hdGljYWxseSBzbyB0aGF0IHR1cGxlIGtleXMgYXJlIG5vdCB1bnBhY2tlZCBhcyB0aGUKQEAgLTI1LDEwICsxMDksNiBAQAogICAgIFB5X0RFQ1JFRih0dXApOwogfQogCi0vKiBEZWZpbmUgdGhpcyBvdXQgaWYgeW91IGRvbid0IHdhbnQgY29udmVyc2lvbiBzdGF0aXN0aWNzIG9uIGV4aXQuICovCi0jdW5kZWYgU0hPV19DT05WRVJTSU9OX0NPVU5UUwotCi0vKiBTZWUgbGFyZ2UgY29tbWVudCBibG9jayBiZWxvdy4gIFRoaXMgbXVzdCBiZSA+PSAxLiAqLwogI2RlZmluZSBQRVJUVVJCX1NISUZUIDUKIAogLyoKQEAgLTEyNiw4ICsyMDYsMTMgQEAKIAogKi8KIAotLyogT2JqZWN0IHVzZWQgYXMgZHVtbXkga2V5IHRvIGZpbGwgZGVsZXRlZCBlbnRyaWVzICovCi1zdGF0aWMgUHlPYmplY3QgKmR1bW15ID0gTlVMTDsgLyogSW5pdGlhbGl6ZWQgYnkgZmlyc3QgY2FsbCB0byBuZXdQeURpY3RPYmplY3QoKSAqLworLyogT2JqZWN0IHVzZWQgYXMgZHVtbXkga2V5IHRvIGZpbGwgZGVsZXRlZCBlbnRyaWVzCisgKiBUaGlzIGNvdWxkIGJlIGFueSB1bmlxdWUgb2JqZWN0LAorICogdXNlIGEgY3VzdG9tIHR5cGUgaW4gb3JkZXIgdG8gbWluaW1pc2UgY291cGxpbmcuCisqLworc3RhdGljIFB5T2JqZWN0IF9kdW1teV9zdHJ1Y3Q7CisKKyNkZWZpbmUgZHVtbXkgKCZfZHVtbXlfc3RydWN0KQogCiAjaWZkZWYgUHlfUkVGX0RFQlVHCiBQeU9iamVjdCAqCkBAIC0xMzgsNzcgKzIyMywxNyBAQAogI2VuZGlmCiAKIC8qIGZvcndhcmQgZGVjbGFyYXRpb25zICovCi1zdGF0aWMgUHlEaWN0RW50cnkgKgotbG9va2RpY3RfdW5pY29kZShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCk7CitzdGF0aWMgUHlEaWN0S2V5RW50cnkgKmxvb2tkaWN0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKK3N0YXRpYyBQeURpY3RLZXlFbnRyeSAqbG9va2RpY3RfdW5pY29kZShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKK3N0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitsb29rZGljdF91bmljb2RlX25vZHVtbXkoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7CitzdGF0aWMgUHlEaWN0S2V5RW50cnkgKmxvb2tkaWN0X3NwbGl0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKIAotI2lmZGVmIFNIT1dfQ09OVkVSU0lPTl9DT1VOVFMKLXN0YXRpYyBsb25nIGNyZWF0ZWQgPSAwTDsKLXN0YXRpYyBsb25nIGNvbnZlcnRlZCA9IDBMOwotCi1zdGF0aWMgdm9pZAotc2hvd19jb3VudHModm9pZCkKLXsKLSAgICBmcHJpbnRmKHN0ZGVyciwgImNyZWF0ZWQgJWxkIHN0cmluZyBkaWN0c1xuIiwgY3JlYXRlZCk7Ci0gICAgZnByaW50ZihzdGRlcnIsICJjb252ZXJ0ZWQgJWxkIHRvIG5vcm1hbCBkaWN0c1xuIiwgY29udmVydGVkKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiUuMmYlJSBjb252ZXJzaW9uIHJhdGVcbiIsICgxMDAuMCpjb252ZXJ0ZWQpL2NyZWF0ZWQpOwotfQotI2VuZGlmCi0KLS8qIERlYnVnIHN0YXRpc3RpYyB0byBjb21wYXJlIGFsbG9jYXRpb25zIHdpdGggcmV1c2UgdGhyb3VnaCB0aGUgZnJlZSBsaXN0ICovCi0jdW5kZWYgU0hPV19BTExPQ19DT1VOVAotI2lmZGVmIFNIT1dfQUxMT0NfQ09VTlQKLXN0YXRpYyBzaXplX3QgY291bnRfYWxsb2MgPSAwOwotc3RhdGljIHNpemVfdCBjb3VudF9yZXVzZSA9IDA7Ci0KLXN0YXRpYyB2b2lkCi1zaG93X2FsbG9jKHZvaWQpCi17Ci0gICAgZnByaW50ZihzdGRlcnIsICJEaWN0IGFsbG9jYXRpb25zOiAlIiBQWV9GT1JNQVRfU0laRV9UICJkXG4iLAotICAgICAgICBjb3VudF9hbGxvYyk7Ci0gICAgZnByaW50ZihzdGRlcnIsICJEaWN0IHJldXNlIHRocm91Z2ggZnJlZWxpc3Q6ICUiIFBZX0ZPUk1BVF9TSVpFX1QKLSAgICAgICAgImRcbiIsIGNvdW50X3JldXNlKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiUuMmYlJSByZXVzZSByYXRlXG5cbiIsCi0gICAgICAgICgxMDAuMCpjb3VudF9yZXVzZS8oY291bnRfYWxsb2MrY291bnRfcmV1c2UpKSk7Ci19Ci0jZW5kaWYKLQotLyogRGVidWcgc3RhdGlzdGljIHRvIGNvdW50IEdDIHRyYWNraW5nIG9mIGRpY3RzICovCi0jaWZkZWYgU0hPV19UUkFDS19DT1VOVAotc3RhdGljIFB5X3NzaXplX3QgY291bnRfdW50cmFja2VkID0gMDsKLXN0YXRpYyBQeV9zc2l6ZV90IGNvdW50X3RyYWNrZWQgPSAwOwotCi1zdGF0aWMgdm9pZAotc2hvd190cmFjayh2b2lkKQotewotICAgIGZwcmludGYoc3RkZXJyLCAiRGljdHMgY3JlYXRlZDogJSIgUFlfRk9STUFUX1NJWkVfVCAiZFxuIiwKLSAgICAgICAgY291bnRfdHJhY2tlZCArIGNvdW50X3VudHJhY2tlZCk7Ci0gICAgZnByaW50ZihzdGRlcnIsICJEaWN0cyB0cmFja2VkIGJ5IHRoZSBHQzogJSIgUFlfRk9STUFUX1NJWkVfVAotICAgICAgICAiZFxuIiwgY291bnRfdHJhY2tlZCk7Ci0gICAgZnByaW50ZihzdGRlcnIsICIlLjJmJSUgZGljdCB0cmFja2luZyByYXRlXG5cbiIsCi0gICAgICAgICgxMDAuMCpjb3VudF90cmFja2VkLyhjb3VudF91bnRyYWNrZWQrY291bnRfdHJhY2tlZCkpKTsKLX0KLSNlbmRpZgotCi0KLS8qIEluaXRpYWxpemF0aW9uIG1hY3Jvcy4KLSAgIFRoZXJlIGFyZSB0d28gd2F5cyB0byBjcmVhdGUgYSBkaWN0OiAgUHlEaWN0X05ldygpIGlzIHRoZSBtYWluIEMgQVBJCi0gICBmdW5jdGlvbiwgYW5kIHRoZSB0cF9uZXcgc2xvdCBtYXBzIHRvIGRpY3RfbmV3KCkuICBJbiB0aGUgbGF0dGVyIGNhc2Ugd2UKLSAgIGNhbiBzYXZlIGEgbGl0dGxlIHRpbWUgb3ZlciB3aGF0IFB5RGljdF9OZXcgZG9lcyBiZWNhdXNlIGl0J3MgZ3VhcmFudGVlZAotICAgdGhhdCB0aGUgUHlEaWN0T2JqZWN0IHN0cnVjdCBpcyBhbHJlYWR5IHplcm9lZCBvdXQuCi0gICBFdmVyeW9uZSBleGNlcHQgZGljdF9uZXcoKSBzaG91bGQgdXNlIEVNUFRZX1RPX01JTlNJWkUgKHVubGVzcyB0aGV5IGhhdmUKLSAgIGFuIGV4Y2VsbGVudCByZWFzb24gbm90IHRvKS4KLSovCi0KLSNkZWZpbmUgSU5JVF9OT05aRVJPX0RJQ1RfU0xPVFMobXApIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAobXApLT5tYV90YWJsZSA9IChtcCktPm1hX3NtYWxsdGFibGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAobXApLT5tYV9tYXNrID0gUHlEaWN0X01JTlNJWkUgLSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlKDApCi0KLSNkZWZpbmUgRU1QVFlfVE9fTUlOU0laRShtcCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBtZW1zZXQoKG1wKS0+bWFfc21hbGx0YWJsZSwgMCwgc2l6ZW9mKChtcCktPm1hX3NtYWxsdGFibGUpKTsgICAgICAgIFwKLSAgICAobXApLT5tYV91c2VkID0gKG1wKS0+bWFfZmlsbCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBJTklUX05PTlpFUk9fRElDVF9TTE9UUyhtcCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlKDApCitzdGF0aWMgaW50IGRpY3RyZXNpemUoUHlEaWN0T2JqZWN0ICptcCwgUHlfc3NpemVfdCBtaW51c2VkKTsKIAogLyogRGljdGlvbmFyeSByZXVzZSBzY2hlbWUgdG8gc2F2ZSBjYWxscyB0byBtYWxsb2MsIGZyZWUsIGFuZCBtZW1zZXQgKi8KICNpZm5kZWYgUHlEaWN0X01BWEZSRUVMSVNUCkBAIC0yMTcsNzMgKzI0MiwxOTQgQEAKIHN0YXRpYyBQeURpY3RPYmplY3QgKmZyZWVfbGlzdFtQeURpY3RfTUFYRlJFRUxJU1RdOwogc3RhdGljIGludCBudW1mcmVlID0gMDsKIAotdm9pZAotUHlEaWN0X0Zpbmkodm9pZCkKK2ludAorUHlEaWN0X0NsZWFyRnJlZUxpc3Qodm9pZCkKIHsKICAgICBQeURpY3RPYmplY3QgKm9wOwotCisgICAgaW50IHJldCA9IG51bWZyZWU7CiAgICAgd2hpbGUgKG51bWZyZWUpIHsKICAgICAgICAgb3AgPSBmcmVlX2xpc3RbLS1udW1mcmVlXTsKICAgICAgICAgYXNzZXJ0KFB5RGljdF9DaGVja0V4YWN0KG9wKSk7CiAgICAgICAgIFB5T2JqZWN0X0dDX0RlbChvcCk7CiAgICAgfQorICAgIHJldHVybiByZXQ7CiB9CiAKLVB5T2JqZWN0ICoKLVB5RGljdF9OZXcodm9pZCkKKy8qIFByaW50IHN1bW1hcnkgaW5mbyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIG9wdGltaXplZCBhbGxvY2F0b3IgKi8KK3ZvaWQKK19QeURpY3RfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpCiB7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcDsKLSAgICBpZiAoZHVtbXkgPT0gTlVMTCkgeyAvKiBBdXRvLWluaXRpYWxpemUgZHVtbXkgKi8KLSAgICAgICAgZHVtbXkgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiPGR1bW15IGtleT4iKTsKLSAgICAgICAgaWYgKGR1bW15ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSNpZmRlZiBTSE9XX0NPTlZFUlNJT05fQ09VTlRTCi0gICAgICAgIFB5X0F0RXhpdChzaG93X2NvdW50cyk7Ci0jZW5kaWYKLSNpZmRlZiBTSE9XX0FMTE9DX0NPVU5UCi0gICAgICAgIFB5X0F0RXhpdChzaG93X2FsbG9jKTsKLSNlbmRpZgotI2lmZGVmIFNIT1dfVFJBQ0tfQ09VTlQKLSAgICAgICAgUHlfQXRFeGl0KHNob3dfdHJhY2spOwotI2VuZGlmCisgICAgX1B5RGVidWdBbGxvY2F0b3JTdGF0cyhvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJlZSBQeURpY3RPYmplY3QiLCBudW1mcmVlLCBzaXplb2YoUHlEaWN0T2JqZWN0KSk7Cit9CisKKwordm9pZAorUHlEaWN0X0Zpbmkodm9pZCkKK3sKKyAgICBQeURpY3RfQ2xlYXJGcmVlTGlzdCgpOworfQorCisjZGVmaW5lIERLX0RFQlVHX0lOQ1JFRiBfUHlfSU5DX1JFRlRPVEFMIF9QeV9SRUZfREVCVUdfQ09NTUEKKyNkZWZpbmUgREtfREVCVUdfREVDUkVGIF9QeV9ERUNfUkVGVE9UQUwgX1B5X1JFRl9ERUJVR19DT01NQQorCisjZGVmaW5lIERLX0lOQ1JFRihkaykgKERLX0RFQlVHX0lOQ1JFRiArKyhkayktPmRrX3JlZmNudCkKKyNkZWZpbmUgREtfREVDUkVGKGRrKSBpZiAoREtfREVCVUdfREVDUkVGICgtLShkayktPmRrX3JlZmNudCkgPT0gMCkgZnJlZV9rZXlzX29iamVjdChkaykKKyNkZWZpbmUgREtfU0laRShkaykgKChkayktPmRrX3NpemUpCisjZGVmaW5lIERLX01BU0soZGspICgoKGRrKS0+ZGtfc2l6ZSktMSkKKyNkZWZpbmUgSVNfUE9XRVJfT0ZfMih4KSAoKCh4KSAmICh4LTEpKSA9PSAwKQorCisvKiBVU0FCTEVfRlJBQ1RJT04gaXMgdGhlIG1heGltdW0gZGljdGlvbmFyeSBsb2FkLgorICogQ3VycmVudGx5IHNldCB0byAoMm4rMSkvMy4gSW5jcmVhc2luZyB0aGlzIHJhdGlvIG1ha2VzIGRpY3Rpb25hcmllcyBtb3JlCisgKiBkZW5zZSByZXN1bHRpbmcgaW4gbW9yZSBjb2xsaXNpb25zLiAgRGVjcmVhc2luZyBpdCBpbXByb3ZlcyBzcGFyc2VuZXNzCisgKiBhdCB0aGUgZXhwZW5zZSBvZiBzcHJlYWRpbmcgZW50cmllcyBvdmVyIG1vcmUgY2FjaGUgbGluZXMgYW5kIGF0IHRoZQorICogY29zdCBvZiB0b3RhbCBtZW1vcnkgY29uc3VtZWQuCisgKgorICogVVNBQkxFX0ZSQUNUSU9OIG11c3Qgb2JleSB0aGUgZm9sbG93aW5nOgorICogICAgICgwIDwgVVNBQkxFX0ZSQUNUSU9OKG4pIDwgbikgZm9yIGFsbCBuID49IDIKKyAqCisgKiBVU0FCTEVfRlJBQ1RJT04gc2hvdWxkIGJlIHZlcnkgcXVpY2sgdG8gY2FsY3VsYXRlLgorICogRnJhY3Rpb25zIGFyb3VuZCA1LzggdG8gMi8zIHNlZW0gdG8gd29yayB3ZWxsIGluIHByYWN0aWNlLgorICovCisKKy8qIFVzZSAoMm4rMSkvMyByYXRoZXIgdGhhbiAybiszIGJlY2F1c2U6IGl0IG1ha2VzIG5vIGRpZmZlcmVuY2UgZm9yCisgKiBjb21iaW5lZCB0YWJsZXMgKHRoZSB0d28gZnJhY3Rpb25zIHJvdW5kIHRvIHRoZSBzYW1lIG51bWJlciBuIDwgKSwKKyAqIGJ1dCAyKjQvMyBpcyAyIHdoZXJlYXMgKDIqNCsxKS8zIGlzIDMgd2hpY2ggcG90ZW50aWFsbHkgc2F2ZXMgcXVpdGUKKyAqIGEgbG90IG9mIHNwYWNlIGZvciBzbWFsbCwgc3BsaXQgdGFibGVzICovCisjZGVmaW5lIFVTQUJMRV9GUkFDVElPTihuKSAoKCgobikgPDwgMSkrMSkvMykKKworLyogQWx0ZXJuYXRpdmUgZnJhY3Rpb24gdGhhdCBpcyBvdGhlcndpc2UgY2xvc2UgZW5vdWdoIHRvICgybisxKS8zIHRvIG1ha2UKKyAqIGxpdHRsZSBkaWZmZXJlbmNlLiA4ICogMi8zID09IDggKiA1LzggPT0gNS4gMTYgKiAyLzMgPT0gMTYgKiA1LzggPT0gMTAuCisgKiAzMiAqIDIvMyA9IDIxLCAzMiAqIDUvOCA9IDIwLgorICogSXRzIGFkdmFudGFnZSBpcyB0aGF0IGl0IGlzIGZhc3RlciB0byBjb21wdXRlIG9uIG1hY2hpbmVzIHdpdGggc2xvdyBkaXZpc2lvbi4KKyAqICNkZWZpbmUgVVNBQkxFX0ZSQUNUSU9OKG4pICgoKG4pID4+IDEpICsgKChuKSA+PiAyKSAtICgobikgPj4gMykpCisqLworCisvKiBHUk9XVEhfUkFURS4gR3Jvd3RoIHJhdGUgdXBvbiBoaXR0aW5nIG1heGltdW0gbG9hZC4gIEN1cnJlbnRseSBzZXQgdG8gKjIuCisgKiBSYWlzaW5nIHRoaXMgdG8gKjQgZG91YmxlcyBtZW1vcnkgY29uc3VtcHRpb24gZGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mCisgKiB0aGUgZGljdGlvbmFyeSwgYnV0IHJlc3VsdHMgaW4gaGFsZiB0aGUgbnVtYmVyIG9mIHJlc2l6ZXMsIGxlc3MgZWZmb3J0IHRvCisgKiByZXNpemUgYW5kIGJldHRlciBzcGFyc2VuZXNzIGZvciBzb21lIChidXQgbm90IGFsbCBkaWN0IHNpemVzKS4KKyAqIFNldHRpbmcgdG8gKjQgZWxpbWluYXRlcyBldmVyeSBvdGhlciByZXNpemUgc3RlcC4KKyAqIEdST1dUSF9SQVRFIHdhcyBzZXQgdG8gKjQgdXAgdG8gdmVyc2lvbiAzLjIuCisgKi8KKyNkZWZpbmUgR1JPV1RIX1JBVEUoeCkgKCh4KSAqIDIpCisKKyNkZWZpbmUgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMoZCkgXAorICAgIGlmICgoZCktPm1hX2tleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdF91bmljb2RlX25vZHVtbXkpIHsgXAorICAgICAgICAoZCktPm1hX2tleXMtPmRrX2xvb2t1cCA9IGxvb2tkaWN0X3VuaWNvZGU7IFwKICAgICB9CisKKy8qIFRoaXMgaW1tdXRhYmxlLCBlbXB0eSBQeURpY3RLZXlzT2JqZWN0IGlzIHVzZWQgZm9yIFB5RGljdF9DbGVhcigpCisgKiAod2hpY2ggY2Fubm90IGZhaWwgYW5kIHRodXMgY2FuIGRvIG5vIGFsbG9jYXRpb24pLgorICovCitzdGF0aWMgUHlEaWN0S2V5c09iamVjdCBlbXB0eV9rZXlzX3N0cnVjdCA9IHsKKyAgICAgICAgMiwgLyogZGtfcmVmY250IDEgZm9yIHRoaXMgc3RydWN0LCAxIGZvciBkdW1teV9zdHJ1Y3QgKi8KKyAgICAgICAgMSwgLyogZGtfc2l6ZSAqLworICAgICAgICBsb29rZGljdF9zcGxpdCwgLyogZGtfbG9va3VwICovCisgICAgICAgIDAsIC8qIGRrX3VzYWJsZSAoaW1tdXRhYmxlKSAqLworICAgICAgICB7CisgICAgICAgICAgICB7IDAsIDAsIDAgfSAvKiBka19lbnRyaWVzIChlbXB0eSkgKi8KKyAgICAgICAgfQorfTsKKworc3RhdGljIFB5T2JqZWN0ICplbXB0eV92YWx1ZXNbMV0gPSB7IE5VTEwgfTsKKworI2RlZmluZSBQeV9FTVBUWV9LRVlTICZlbXB0eV9rZXlzX3N0cnVjdAorCitzdGF0aWMgUHlEaWN0S2V5c09iamVjdCAqbmV3X2tleXNfb2JqZWN0KFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBQeURpY3RLZXlzT2JqZWN0ICpkazsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMDsKKworICAgIGFzc2VydChzaXplID49IFB5RGljdF9NSU5TSVpFX1NQTElUKTsKKyAgICBhc3NlcnQoSVNfUE9XRVJfT0ZfMihzaXplKSk7CisgICAgZGsgPSBQeU1lbV9NQUxMT0Moc2l6ZW9mKFB5RGljdEtleXNPYmplY3QpICsKKyAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlEaWN0S2V5RW50cnkpICogKHNpemUtMSkpOworICAgIGlmIChkayA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBES19ERUJVR19JTkNSRUYgZGstPmRrX3JlZmNudCA9IDE7CisgICAgZGstPmRrX3NpemUgPSBzaXplOworICAgIGRrLT5ka191c2FibGUgPSBVU0FCTEVfRlJBQ1RJT04oc2l6ZSk7CisgICAgZXAwID0gJmRrLT5ka19lbnRyaWVzWzBdOworICAgIC8qIEhhc2ggdmFsdWUgb2Ygc2xvdCAwIGlzIHVzZWQgYnkgcG9waXRlbSwgc28gaXQgbXVzdCBiZSBpbml0aWFsaXplZCAqLworICAgIGVwMC0+bWVfaGFzaCA9IDA7CisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBlcDBbaV0ubWVfa2V5ID0gTlVMTDsKKyAgICAgICAgZXAwW2ldLm1lX3ZhbHVlID0gTlVMTDsKKyAgICB9CisgICAgZGstPmRrX2xvb2t1cCA9IGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teTsKKyAgICByZXR1cm4gZGs7Cit9CisKK3N0YXRpYyB2b2lkCitmcmVlX2tleXNfb2JqZWN0KFB5RGljdEtleXNPYmplY3QgKmtleXMpCit7CisgICAgUHlEaWN0S2V5RW50cnkgKmVudHJpZXMgPSAma2V5cy0+ZGtfZW50cmllc1swXTsKKyAgICBQeV9zc2l6ZV90IGksIG47CisgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUoa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgUHlfWERFQ1JFRihlbnRyaWVzW2ldLm1lX2tleSk7CisgICAgICAgIFB5X1hERUNSRUYoZW50cmllc1tpXS5tZV92YWx1ZSk7CisgICAgfQorICAgIFB5TWVtX0ZSRUUoa2V5cyk7Cit9CisKKyNkZWZpbmUgbmV3X3ZhbHVlcyhzaXplKSBQeU1lbV9ORVcoUHlPYmplY3QgKiwgc2l6ZSkKKworI2RlZmluZSBmcmVlX3ZhbHVlcyh2YWx1ZXMpIFB5TWVtX0ZSRUUodmFsdWVzKQorCisvKiBDb25zdW1lcyBhIHJlZmVyZW5jZSB0byB0aGUga2V5cyBvYmplY3QgKi8KK3N0YXRpYyBQeU9iamVjdCAqCituZXdfZGljdChQeURpY3RLZXlzT2JqZWN0ICprZXlzLCBQeU9iamVjdCAqKnZhbHVlcykKK3sKKyAgICBQeURpY3RPYmplY3QgKm1wOwogICAgIGlmIChudW1mcmVlKSB7CiAgICAgICAgIG1wID0gZnJlZV9saXN0Wy0tbnVtZnJlZV07CiAgICAgICAgIGFzc2VydCAobXAgIT0gTlVMTCk7CiAgICAgICAgIGFzc2VydCAoUHlfVFlQRShtcCkgPT0gJlB5RGljdF9UeXBlKTsKICAgICAgICAgX1B5X05ld1JlZmVyZW5jZSgoUHlPYmplY3QgKiltcCk7Ci0gICAgICAgIGlmIChtcC0+bWFfZmlsbCkgewotICAgICAgICAgICAgRU1QVFlfVE9fTUlOU0laRShtcCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBBdCBsZWFzdCBzZXQgbWFfdGFibGUgYW5kIG1hX21hc2s7IHRoZXNlIGFyZSB3cm9uZwotICAgICAgICAgICAgICAgaWYgYW4gZW1wdHkgYnV0IHByZXNpemVkIGRpY3QgaXMgYWRkZWQgdG8gZnJlZWxpc3QgKi8KLSAgICAgICAgICAgIElOSVRfTk9OWkVST19ESUNUX1NMT1RTKG1wKTsKLSAgICAgICAgfQotICAgICAgICBhc3NlcnQgKG1wLT5tYV91c2VkID09IDApOwotICAgICAgICBhc3NlcnQgKG1wLT5tYV90YWJsZSA9PSBtcC0+bWFfc21hbGx0YWJsZSk7Ci0gICAgICAgIGFzc2VydCAobXAtPm1hX21hc2sgPT0gUHlEaWN0X01JTlNJWkUgLSAxKTsKLSNpZmRlZiBTSE9XX0FMTE9DX0NPVU5UCi0gICAgICAgIGNvdW50X3JldXNlKys7Ci0jZW5kaWYKLSAgICB9IGVsc2UgewotICAgICAgICBtcCA9IFB5T2JqZWN0X0dDX05ldyhQeURpY3RPYmplY3QsICZQeURpY3RfVHlwZSk7Ci0gICAgICAgIGlmIChtcCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIEVNUFRZX1RPX01JTlNJWkUobXApOwotI2lmZGVmIFNIT1dfQUxMT0NfQ09VTlQKLSAgICAgICAgY291bnRfYWxsb2MrKzsKLSNlbmRpZgogICAgIH0KLSAgICBtcC0+bWFfbG9va3VwID0gbG9va2RpY3RfdW5pY29kZTsKLSNpZmRlZiBTSE9XX1RSQUNLX0NPVU5UCi0gICAgY291bnRfdW50cmFja2VkKys7Ci0jZW5kaWYKLSNpZmRlZiBTSE9XX0NPTlZFUlNJT05fQ09VTlRTCi0gICAgKytjcmVhdGVkOwotI2VuZGlmCisgICAgZWxzZSB7CisgICAgICAgIG1wID0gUHlPYmplY3RfR0NfTmV3KFB5RGljdE9iamVjdCwgJlB5RGljdF9UeXBlKTsKKyAgICAgICAgaWYgKG1wID09IE5VTEwpIHsKKyAgICAgICAgICAgIERLX0RFQ1JFRihrZXlzKTsKKyAgICAgICAgICAgIGZyZWVfdmFsdWVzKHZhbHVlcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBtcC0+bWFfa2V5cyA9IGtleXM7CisgICAgbXAtPm1hX3ZhbHVlcyA9IHZhbHVlczsKKyAgICBtcC0+bWFfdXNlZCA9IDA7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW1wOwogfQogCisvKiBDb25zdW1lcyBhIHJlZmVyZW5jZSB0byB0aGUga2V5cyBvYmplY3QgKi8KK3N0YXRpYyBQeU9iamVjdCAqCituZXdfZGljdF93aXRoX3NoYXJlZF9rZXlzKFB5RGljdEtleXNPYmplY3QgKmtleXMpCit7CisgICAgUHlPYmplY3QgKip2YWx1ZXM7CisgICAgUHlfc3NpemVfdCBpLCBzaXplOworCisgICAgc2l6ZSA9IERLX1NJWkUoa2V5cyk7CisgICAgdmFsdWVzID0gbmV3X3ZhbHVlcyhzaXplKTsKKyAgICBpZiAodmFsdWVzID09IE5VTEwpIHsKKyAgICAgICAgREtfREVDUkVGKGtleXMpOworICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICB2YWx1ZXNbaV0gPSBOVUxMOworICAgIH0KKyAgICByZXR1cm4gbmV3X2RpY3Qoa2V5cywgdmFsdWVzKTsKK30KKworUHlPYmplY3QgKgorUHlEaWN0X05ldyh2b2lkKQoreworICAgIHJldHVybiBuZXdfZGljdChuZXdfa2V5c19vYmplY3QoUHlEaWN0X01JTlNJWkVfQ09NQklORUQpLCBOVUxMKTsKK30KKwogLyoKIFRoZSBiYXNpYyBsb29rdXAgZnVuY3Rpb24gdXNlZCBieSBhbGwgb3BlcmF0aW9ucy4KIFRoaXMgaXMgYmFzZWQgb24gQWxnb3JpdGhtIEQgZnJvbSBLbnV0aCBWb2wuIDMsIFNlYy4gNi40LgpAQCAtMzAyLDI5ICs0NDgsMzUgQEAKIGxvb2tkaWN0KCkgaXMgZ2VuZXJhbC1wdXJwb3NlLCBhbmQgbWF5IHJldHVybiBOVUxMIGlmIChhbmQgb25seSBpZikgYQogY29tcGFyaXNvbiByYWlzZXMgYW4gZXhjZXB0aW9uICh0aGlzIHdhcyBuZXcgaW4gUHl0aG9uIDIuNSkuCiBsb29rZGljdF91bmljb2RlKCkgYmVsb3cgaXMgc3BlY2lhbGl6ZWQgdG8gc3RyaW5nIGtleXMsIGNvbXBhcmlzb24gb2Ygd2hpY2ggY2FuCi1uZXZlciByYWlzZSBhbiBleGNlcHRpb247IHRoYXQgZnVuY3Rpb24gY2FuIG5ldmVyIHJldHVybiBOVUxMLiAgRm9yIGJvdGgsIHdoZW4KLXRoZSBrZXkgaXNuJ3QgZm91bmQgYSBQeURpY3RFbnRyeSogaXMgcmV0dXJuZWQgZm9yIHdoaWNoIHRoZSBtZV92YWx1ZSBmaWVsZCBpcwotTlVMTDsgdGhpcyBpcyB0aGUgc2xvdCBpbiB0aGUgZGljdCBhdCB3aGljaCB0aGUga2V5IHdvdWxkIGhhdmUgYmVlbiBmb3VuZCwgYW5kCi10aGUgY2FsbGVyIGNhbiAoaWYgaXQgd2lzaGVzKSBhZGQgdGhlIDxrZXksIHZhbHVlPiBwYWlyIHRvIHRoZSByZXR1cm5lZAotUHlEaWN0RW50cnkqLgorbmV2ZXIgcmFpc2UgYW4gZXhjZXB0aW9uOyB0aGF0IGZ1bmN0aW9uIGNhbiBuZXZlciByZXR1cm4gTlVMTC4KK2xvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSBpcyBmdXJ0aGVyIHNwZWNpYWxpemVkIGZvciBzdHJpbmcga2V5cyB0aGF0IGNhbm5vdCBiZQordGhlIDxkdW1teT4gdmFsdWUuCitGb3IgYm90aCwgd2hlbiB0aGUga2V5IGlzbid0IGZvdW5kIGEgUHlEaWN0RW50cnkqIGlzIHJldHVybmVkCit3aGVyZSB0aGUga2V5IHdvdWxkIGhhdmUgYmVlbiBmb3VuZCwgKnZhbHVlX2FkZHIgcG9pbnRzIHRvIHRoZSBtYXRjaGluZyB2YWx1ZQorc2xvdC4KICovCi1zdGF0aWMgUHlEaWN0RW50cnkgKgotbG9va2RpY3QoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgcmVnaXN0ZXIgUHlfaGFzaF90IGhhc2gpCitzdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorbG9va2RpY3QoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQogewogICAgIHJlZ2lzdGVyIHNpemVfdCBpOwogICAgIHJlZ2lzdGVyIHNpemVfdCBwZXJ0dXJiOwotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICpmcmVlc2xvdDsKLSAgICByZWdpc3RlciBzaXplX3QgbWFzayA9IChzaXplX3QpbXAtPm1hX21hc2s7Ci0gICAgUHlEaWN0RW50cnkgKmVwMCA9IG1wLT5tYV90YWJsZTsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZXA7CisgICAgcmVnaXN0ZXIgUHlEaWN0S2V5RW50cnkgKmZyZWVzbG90OworICAgIHJlZ2lzdGVyIHNpemVfdCBtYXNrOworICAgIFB5RGljdEtleUVudHJ5ICplcDA7CisgICAgcmVnaXN0ZXIgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIHJlZ2lzdGVyIGludCBjbXA7CiAgICAgUHlPYmplY3QgKnN0YXJ0a2V5OwogCit0b3A6CisgICAgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOworICAgIGVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKICAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKICAgICBlcCA9ICZlcDBbaV07Ci0gICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSkKKyAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5KSB7CisgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKICAgICAgICAgcmV0dXJuIGVwOwotCisgICAgfQogICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15KQogICAgICAgICBmcmVlc2xvdCA9IGVwOwogICAgIGVsc2UgewpAQCAtMzM1LDE3ICs0ODcsMTUgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydGtleSk7CiAgICAgICAgICAgICBpZiAoY21wIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGlmIChlcDAgPT0gbXAtPm1hX3RhYmxlICYmIGVwLT5tZV9rZXkgPT0gc3RhcnRrZXkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgIGlmIChlcDAgPT0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXMgJiYgZXAtPm1lX2tleSA9PSBzdGFydGtleSkgeworICAgICAgICAgICAgICAgIGlmIChjbXAgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIC8qIFRoZSBjb21wYXJlIGRpZCBtYWpvciBuYXN0eSBzdHVmZiB0byB0aGUKLSAgICAgICAgICAgICAgICAgKiBkaWN0OiAgc3RhcnQgb3Zlci4KLSAgICAgICAgICAgICAgICAgKiBYWFggQSBjbGV2ZXIgYWR2ZXJzYXJ5IGNvdWxkIHByZXZlbnQgdGhpcwotICAgICAgICAgICAgICAgICAqIFhYWCBmcm9tIHRlcm1pbmF0aW5nLgotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIHJldHVybiBsb29rZGljdChtcCwga2V5LCBoYXNoKTsKKyAgICAgICAgICAgICAgICAvKiBUaGUgZGljdCB3YXMgbXV0YXRlZCwgcmVzdGFydCAqLworICAgICAgICAgICAgICAgIGdvdG8gdG9wOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGZyZWVzbG90ID0gTlVMTDsKQEAgLTM1NiwyOCArNTA2LDM3IEBACiAgICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7CiAgICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKICAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKLSAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBmcmVlc2xvdCA9PSBOVUxMID8gZXAgOiBmcmVlc2xvdDsKLSAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0ga2V5KQorICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoZnJlZXNsb3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmZyZWVzbG90LT5tZV92YWx1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnJlZXNsb3Q7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0ga2V5KSB7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CiAgICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgIH0KICAgICAgICAgaWYgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgZXAtPm1lX2tleSAhPSBkdW1teSkgewogICAgICAgICAgICAgc3RhcnRrZXkgPSBlcC0+bWVfa2V5OwogICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKICAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzdGFydGtleSwga2V5LCBQeV9FUSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOwotICAgICAgICAgICAgaWYgKGNtcCA8IDApCisgICAgICAgICAgICBpZiAoY21wIDwgMCkgeworICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGlmIChlcDAgPT0gbXAtPm1hX3RhYmxlICYmIGVwLT5tZV9rZXkgPT0gc3RhcnRrZXkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlcDAgPT0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXMgJiYgZXAtPm1lX2tleSA9PSBzdGFydGtleSkgeworICAgICAgICAgICAgICAgIGlmIChjbXAgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIC8qIFRoZSBjb21wYXJlIGRpZCBtYWpvciBuYXN0eSBzdHVmZiB0byB0aGUKLSAgICAgICAgICAgICAgICAgKiBkaWN0OiAgc3RhcnQgb3Zlci4KLSAgICAgICAgICAgICAgICAgKiBYWFggQSBjbGV2ZXIgYWR2ZXJzYXJ5IGNvdWxkIHByZXZlbnQgdGhpcwotICAgICAgICAgICAgICAgICAqIFhYWCBmcm9tIHRlcm1pbmF0aW5nLgotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIHJldHVybiBsb29rZGljdChtcCwga2V5LCBoYXNoKTsKKyAgICAgICAgICAgICAgICAvKiBUaGUgZGljdCB3YXMgbXV0YXRlZCwgcmVzdGFydCAqLworICAgICAgICAgICAgICAgIGdvdG8gdG9wOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGVwLT5tZV9rZXkgPT0gZHVtbXkgJiYgZnJlZXNsb3QgPT0gTlVMTCkKQEAgLTM4Nyw0NiArNTQ2LDM5IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qCi0gKiBIYWNrZWQgdXAgdmVyc2lvbiBvZiBsb29rZGljdCB3aGljaCBjYW4gYXNzdW1lIGtleXMgYXJlIGFsd2F5cwotICogdW5pY29kZXM7IHRoaXMgYXNzdW1wdGlvbiBhbGxvd3MgdGVzdGluZyBmb3IgZXJyb3JzIGR1cmluZwotICogUHlPYmplY3RfUmljaENvbXBhcmVCb29sKCkgdG8gYmUgZHJvcHBlZDsgdW5pY29kZS11bmljb2RlCi0gKiBjb21wYXJpc29ucyBuZXZlciByYWlzZSBleGNlcHRpb25zLiAgVGhpcyBhbHNvIG1lYW5zIHdlIGRvbid0IG5lZWQKLSAqIHRvIGdvIHRocm91Z2ggUHlPYmplY3RfUmljaENvbXBhcmVCb29sKCk7IHdlIGNhbiBhbHdheXMgdXNlCi0gKiB1bmljb2RlX2VxKCkgZGlyZWN0bHkuCi0gKgotICogVGhpcyBpcyB2YWx1YWJsZSBiZWNhdXNlIGRpY3RzIHdpdGggb25seSB1bmljb2RlIGtleXMgYXJlIHZlcnkgY29tbW9uLgotICovCi1zdGF0aWMgUHlEaWN0RW50cnkgKgotbG9va2RpY3RfdW5pY29kZShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCByZWdpc3RlciBQeV9oYXNoX3QgaGFzaCkKKy8qIFNwZWNpYWxpemVkIHZlcnNpb24gZm9yIHN0cmluZy1vbmx5IGtleXMgKi8KK3N0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitsb29rZGljdF91bmljb2RlKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQogewogICAgIHJlZ2lzdGVyIHNpemVfdCBpOwogICAgIHJlZ2lzdGVyIHNpemVfdCBwZXJ0dXJiOwotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICpmcmVlc2xvdDsKLSAgICByZWdpc3RlciBzaXplX3QgbWFzayA9IChzaXplX3QpbXAtPm1hX21hc2s7Ci0gICAgUHlEaWN0RW50cnkgKmVwMCA9IG1wLT5tYV90YWJsZTsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZXA7CisgICAgcmVnaXN0ZXIgUHlEaWN0S2V5RW50cnkgKmZyZWVzbG90OworICAgIHJlZ2lzdGVyIHNpemVfdCBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKKyAgICByZWdpc3RlciBQeURpY3RLZXlFbnRyeSAqZXA7CiAKICAgICAvKiBNYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgdG8gaGFuZGxlIG5vbi11bmljb2RlIGtleXMsCiAgICAgICAgaW5jbHVkaW5nIHN1YmNsYXNzZXMgb2Ygc3RyOyBlLmcuLCBvbmUgcmVhc29uIHRvIHN1YmNsYXNzCiAgICAgICAgdW5pY29kZXMgaXMgdG8gb3ZlcnJpZGUgX19lcV9fLCBhbmQgZm9yIHNwZWVkIHdlIGRvbid0IGNhdGVyIHRvCiAgICAgICAgdGhhdCBoZXJlLiAqLwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgewotI2lmZGVmIFNIT1dfQ09OVkVSU0lPTl9DT1VOVFMKLSAgICAgICAgKytjb252ZXJ0ZWQ7Ci0jZW5kaWYKLSAgICAgICAgbXAtPm1hX2xvb2t1cCA9IGxvb2tkaWN0OwotICAgICAgICByZXR1cm4gbG9va2RpY3QobXAsIGtleSwgaGFzaCk7CisgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKKyAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIpOwogICAgIH0KLSAgICBpID0gaGFzaCAmIG1hc2s7CisgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CiAgICAgZXAgPSAmZXAwW2ldOwotICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkpCisgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSkgeworICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CiAgICAgICAgIHJldHVybiBlcDsKKyAgICB9CiAgICAgaWYgKGVwLT5tZV9rZXkgPT0gZHVtbXkpCiAgICAgICAgIGZyZWVzbG90ID0gZXA7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkKKyAgICAgICAgaWYgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSB7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CiAgICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgIH0KICAgICAgICAgZnJlZXNsb3QgPSBOVUxMOwogICAgIH0KIApAQCAtNDM1LDEzICs1ODcsMjIgQEAKICAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyA7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKICAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwogICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOwotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIGZyZWVzbG90ID09IE5VTEwgPyBlcCA6IGZyZWVzbG90OworICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoZnJlZXNsb3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmZyZWVzbG90LT5tZV92YWx1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnJlZXNsb3Q7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0ga2V5CiAgICAgICAgICAgICB8fCAoZXAtPm1lX2hhc2ggPT0gaGFzaAogICAgICAgICAgICAgJiYgZXAtPm1lX2tleSAhPSBkdW1teQotICAgICAgICAgICAgJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkKKyAgICAgICAgICAgICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKICAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgfQogICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBkdW1teSAmJiBmcmVlc2xvdCA9PSBOVUxMKQogICAgICAgICAgICAgZnJlZXNsb3QgPSBlcDsKICAgICB9CkBAIC00NDksNiArNjEwLDkyIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKy8qIEZhc3RlciB2ZXJzaW9uIG9mIGxvb2tkaWN0X3VuaWNvZGUgd2hlbiBpdCBpcyBrbm93biB0aGF0IG5vIDxkdW1teT4ga2V5cworICogd2lsbCBiZSBwcmVzZW50LiAqLworc3RhdGljIFB5RGljdEtleUVudHJ5ICoKK2xvb2tkaWN0X3VuaWNvZGVfbm9kdW1teShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQoreworICAgIHJlZ2lzdGVyIHNpemVfdCBpOworICAgIHJlZ2lzdGVyIHNpemVfdCBwZXJ0dXJiOworICAgIHJlZ2lzdGVyIHNpemVfdCBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKKyAgICByZWdpc3RlciBQeURpY3RLZXlFbnRyeSAqZXA7CisKKyAgICAvKiBNYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgdG8gaGFuZGxlIG5vbi11bmljb2RlIGtleXMsCisgICAgICAgaW5jbHVkaW5nIHN1YmNsYXNzZXMgb2Ygc3RyOyBlLmcuLCBvbmUgcmVhc29uIHRvIHN1YmNsYXNzCisgICAgICAgdW5pY29kZXMgaXMgdG8gb3ZlcnJpZGUgX19lcV9fLCBhbmQgZm9yIHNwZWVkIHdlIGRvbid0IGNhdGVyIHRvCisgICAgICAgdGhhdCBoZXJlLiAqLworICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgeworICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Q7CisgICAgICAgIHJldHVybiBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyKTsKKyAgICB9CisgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CisgICAgZXAgPSAmZXAwW2ldOworICAgIGFzc2VydChlcC0+bWVfa2V5ID09IE5VTEwgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOworICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkgfHwKKyAgICAgICAgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CisgICAgICAgIHJldHVybiBlcDsKKyAgICB9CisgICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7CisgICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKKyAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKKyAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkgfHwKKyAgICAgICAgICAgIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIFZlcnNpb24gb2YgbG9va2RpY3QgZm9yIHNwbGl0IHRhYmxlcy4KKyAqIEFsbCBzcGxpdCB0YWJsZXMgYW5kIG9ubHkgc3BsaXQgdGFibGVzIHVzZSB0aGlzIGxvb2t1cCBmdW5jdGlvbi4KKyAqIFNwbGl0IHRhYmxlcyBvbmx5IGNvbnRhaW4gdW5pY29kZSBrZXlzIGFuZCBubyBkdW1teSBrZXlzLAorICogc28gYWxnb3JpdGhtIGlzIHRoZSBzYW1lIGFzIGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teS4KKyAqLworc3RhdGljIFB5RGljdEtleUVudHJ5ICoKK2xvb2tkaWN0X3NwbGl0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKK3sKKyAgICByZWdpc3RlciBzaXplX3QgaTsKKyAgICByZWdpc3RlciBzaXplX3QgcGVydHVyYjsKKyAgICByZWdpc3RlciBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOworICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CisgICAgcmVnaXN0ZXIgUHlEaWN0S2V5RW50cnkgKmVwOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7CisgICAgICAgIGVwID0gbG9va2RpY3QobXAsIGtleSwgaGFzaCwgdmFsdWVfYWRkcik7CisgICAgICAgIC8qIGxvb2tkaWN0IGV4cGVjdHMgYSBjb21iaW5lZC10YWJsZSwgc28gZml4IHZhbHVlX2FkZHIgKi8KKyAgICAgICAgaSA9IGVwIC0gZXAwOworICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2ldOworICAgICAgICByZXR1cm4gZXA7CisgICAgfQorICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOworICAgIGVwID0gJmVwMFtpXTsKKyAgICBhc3NlcnQoZXAtPm1lX2tleSA9PSBOVUxMIHx8IFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKKyAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5IHx8CisgICAgICAgIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSAmbXAtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgcmV0dXJuIGVwOworICAgIH0KKyAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyA7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKKyAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOworICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOworICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSA9PSBOVUxMIHx8IFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKKyAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSB8fAorICAgICAgICAgICAgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmbXAtPm1hX3ZhbHVlc1tpICYgbWFza107CisgICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KDApOyAgICAgICAgICAvKiBOT1QgUkVBQ0hFRCAqLworICAgIHJldHVybiAwOworfQorCiBpbnQKIF9QeURpY3RfSGFzT25seVN0cmluZ0tleXMoUHlPYmplY3QgKmRpY3QpCiB7CkBAIC00NTYsNyArNzAzLDcgQEAKICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWU7CiAgICAgYXNzZXJ0KFB5RGljdF9DaGVjayhkaWN0KSk7CiAgICAgLyogU2hvcnRjdXQgKi8KLSAgICBpZiAoKChQeURpY3RPYmplY3QgKilkaWN0KS0+bWFfbG9va3VwID09IGxvb2tkaWN0X3VuaWNvZGUpCisgICAgaWYgKCgoUHlEaWN0T2JqZWN0ICopZGljdCktPm1hX2tleXMtPmRrX2xvb2t1cCAhPSBsb29rZGljdCkKICAgICAgICAgcmV0dXJuIDE7CiAgICAgd2hpbGUgKFB5RGljdF9OZXh0KGRpY3QsICZwb3MsICZrZXksICZ2YWx1ZSkpCiAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGtleSkpCkBAIC00NjQsMjMgKzcxMSwxMiBAQAogICAgIHJldHVybiAxOwogfQogCi0jaWZkZWYgU0hPV19UUkFDS19DT1VOVAotI2RlZmluZSBJTkNSRUFTRV9UUkFDS19DT1VOVCBcCi0gICAgKGNvdW50X3RyYWNrZWQrKywgY291bnRfdW50cmFja2VkLS0pOwotI2RlZmluZSBERUNSRUFTRV9UUkFDS19DT1VOVCBcCi0gICAgKGNvdW50X3RyYWNrZWQtLSwgY291bnRfdW50cmFja2VkKyspOwotI2Vsc2UKLSNkZWZpbmUgSU5DUkVBU0VfVFJBQ0tfQ09VTlQKLSNkZWZpbmUgREVDUkVBU0VfVFJBQ0tfQ09VTlQKLSNlbmRpZgotCiAjZGVmaW5lIE1BSU5UQUlOX1RSQUNLSU5HKG1wLCBrZXksIHZhbHVlKSBcCiAgICAgZG8geyBcCiAgICAgICAgIGlmICghX1B5T2JqZWN0X0dDX0lTX1RSQUNLRUQobXApKSB7IFwKICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQoa2V5KSB8fCBcCiAgICAgICAgICAgICAgICAgX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKHZhbHVlKSkgeyBcCiAgICAgICAgICAgICAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKG1wKTsgXAotICAgICAgICAgICAgICAgIElOQ1JFQVNFX1RSQUNLX0NPVU5UIFwKICAgICAgICAgICAgIH0gXAogICAgICAgICB9IFwKICAgICB9IHdoaWxlKDApCkBAIC00OTAsNzggKzcyNiwxMzYgQEAKIHsKICAgICBQeURpY3RPYmplY3QgKm1wOwogICAgIFB5T2JqZWN0ICp2YWx1ZTsKLSAgICBQeV9zc2l6ZV90IG1hc2ssIGk7Ci0gICAgUHlEaWN0RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKIAogICAgIGlmICghUHlEaWN0X0NoZWNrRXhhY3Qob3ApIHx8ICFfUHlPYmplY3RfR0NfSVNfVFJBQ0tFRChvcCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1wID0gKFB5RGljdE9iamVjdCAqKSBvcDsKLSAgICBlcCA9IG1wLT5tYV90YWJsZTsKLSAgICBtYXNrID0gbXAtPm1hX21hc2s7Ci0gICAgZm9yIChpID0gMDsgaSA8PSBtYXNrOyBpKyspIHsKLSAgICAgICAgaWYgKCh2YWx1ZSA9IGVwW2ldLm1lX3ZhbHVlKSA9PSBOVUxMKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQodmFsdWUpIHx8Ci0gICAgICAgICAgICBfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQoZXBbaV0ubWVfa2V5KSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgaWYgKCh2YWx1ZSA9IG1wLT5tYV92YWx1ZXNbaV0pID09IE5VTEwpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKHZhbHVlKSkgeworICAgICAgICAgICAgICAgIGFzc2VydCghX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKAorICAgICAgICAgICAgICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV9rZXkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9Ci0gICAgREVDUkVBU0VfVFJBQ0tfQ09VTlQKKyAgICBlbHNlIHsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgaWYgKCh2YWx1ZSA9IGVwMFtpXS5tZV92YWx1ZSkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQodmFsdWUpIHx8CisgICAgICAgICAgICAgICAgX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKGVwMFtpXS5tZV9rZXkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhvcCk7CiB9CiAKLS8qCi1JbnRlcm5hbCByb3V0aW5lIHRvIGluc2VydCBhIG5ldyBpdGVtIGludG8gdGhlIHRhYmxlIHdoZW4geW91IGhhdmUgZW50cnkgb2JqZWN0LgotVXNlZCBieSBpbnNlcnRkaWN0LgotKi8KLXN0YXRpYyBpbnQKLWluc2VydGRpY3RfYnlfZW50cnkocmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsCi0gICAgICAgICAgICAgICAgICAgIFB5RGljdEVudHJ5ICplcCwgUHlPYmplY3QgKnZhbHVlKQorLyogSW50ZXJuYWwgZnVuY3Rpb24gdG8gZmluZCBzbG90IGZvciBhbiBpdGVtIGZyb20gaXRzIGhhc2gKKyAqIHdoZW4gaXQgaXMga25vd24gdGhhdCB0aGUga2V5IGlzIG5vdCBwcmVzZW50IGluIHRoZSBkaWN0LgorICovCitzdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorZmluZF9lbXB0eV9zbG90KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLAorICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCiB7Ci0gICAgUHlPYmplY3QgKm9sZF92YWx1ZTsKKyAgICBzaXplX3QgaTsKKyAgICBzaXplX3QgcGVydHVyYjsKKyAgICBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOworICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOwogCi0gICAgTUFJTlRBSU5fVFJBQ0tJTkcobXAsIGtleSwgdmFsdWUpOwotICAgIGlmIChlcC0+bWVfdmFsdWUgIT0gTlVMTCkgewotICAgICAgICBvbGRfdmFsdWUgPSBlcC0+bWVfdmFsdWU7Ci0gICAgICAgIGVwLT5tZV92YWx1ZSA9IHZhbHVlOwotICAgICAgICBQeV9ERUNSRUYob2xkX3ZhbHVlKTsgLyogd2hpY2ggKipDQU4qKiByZS1lbnRlciAqLwotICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICBhc3NlcnQoa2V5ICE9IE5VTEwpOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkKKyAgICAgICAgbXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9IGxvb2tkaWN0OworICAgIGkgPSBoYXNoICYgbWFzazsKKyAgICBlcCA9ICZlcDBbaV07CisgICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgZXAtPm1lX2tleSAhPSBOVUxMOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7CisgICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKKyAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwpCi0gICAgICAgICAgICBtcC0+bWFfZmlsbCsrOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ID09IGR1bW15KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihkdW1teSk7Ci0gICAgICAgIH0KLSAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKLSAgICAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOwotICAgICAgICBlcC0+bWVfdmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgbXAtPm1hX3VzZWQrKzsKLSAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgYXNzZXJ0KGVwLT5tZV92YWx1ZSA9PSBOVUxMKTsKKyAgICBpZiAobXAtPm1hX3ZhbHVlcykKKyAgICAgICAgKnZhbHVlX2FkZHIgPSAmbXAtPm1hX3ZhbHVlc1tpICYgbWFza107CisgICAgZWxzZQorICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CisgICAgcmV0dXJuIGVwOwogfQogCitzdGF0aWMgaW50CitpbnNlcnRpb25fcmVzaXplKFB5RGljdE9iamVjdCAqbXApCit7CisgICAgcmV0dXJuIGRpY3RyZXNpemUobXAsIEdST1dUSF9SQVRFKG1wLT5tYV91c2VkKSk7Cit9CiAKIC8qCiBJbnRlcm5hbCByb3V0aW5lIHRvIGluc2VydCBhIG5ldyBpdGVtIGludG8gdGhlIHRhYmxlLgogVXNlZCBib3RoIGJ5IHRoZSBpbnRlcm5hbCByZXNpemUgcm91dGluZSBhbmQgYnkgdGhlIHB1YmxpYyBpbnNlcnQgcm91dGluZS4KLUVhdHMgYSByZWZlcmVuY2UgdG8ga2V5IGFuZCBvbmUgdG8gdmFsdWUuCiBSZXR1cm5zIC0xIGlmIGFuIGVycm9yIG9jY3VycmVkLCBvciAwIG9uIHN1Y2Nlc3MuCiAqLwogc3RhdGljIGludAotaW5zZXJ0ZGljdChyZWdpc3RlciBQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKnZhbHVlKQoraW5zZXJ0ZGljdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqb2xkX3ZhbHVlOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgYXNzZXJ0KGtleSAhPSBkdW1teSk7CiAKLSAgICBhc3NlcnQobXAtPm1hX2xvb2t1cCAhPSBOVUxMKTsKLSAgICBlcCA9IG1wLT5tYV9sb29rdXAobXAsIGtleSwgaGFzaCk7CisgICAgaWYgKG1wLT5tYV92YWx1ZXMgIT0gTlVMTCAmJiAhUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgeworICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGVwID0gbXAtPm1hX2tleXMtPmRrX2xvb2t1cChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CiAgICAgaWYgKGVwID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgcmV0dXJuIGluc2VydGRpY3RfYnlfZW50cnkobXAsIGtleSwgaGFzaCwgZXAsIHZhbHVlKTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIE1BSU5UQUlOX1RSQUNLSU5HKG1wLCBrZXksIHZhbHVlKTsKKyAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKKyAgICBpZiAob2xkX3ZhbHVlICE9IE5VTEwpIHsKKyAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCAmJiBlcC0+bWVfa2V5ICE9IGR1bW15KTsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSB2YWx1ZTsKKyAgICAgICAgUHlfREVDUkVGKG9sZF92YWx1ZSk7IC8qIHdoaWNoICoqQ0FOKiogcmUtZW50ZXIgKi8KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOworICAgICAgICAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka191c2FibGUgPD0gMCkgeworICAgICAgICAgICAgICAgIC8qIE5lZWQgdG8gcmVzaXplLiAqLworICAgICAgICAgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXAgPSBmaW5kX2VtcHR5X3Nsb3QobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbXAtPm1hX2tleXMtPmRrX3VzYWJsZS0tOworICAgICAgICAgICAgYXNzZXJ0KG1wLT5tYV9rZXlzLT5ka191c2FibGUgPj0gMCk7CisgICAgICAgICAgICBlcC0+bWVfa2V5ID0ga2V5OworICAgICAgICAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gZHVtbXkpIHsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgICAgICAgICBlcC0+bWVfa2V5ID0ga2V5OworICAgICAgICAgICAgICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZHVtbXkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbXAtPm1hX3VzZWQrKzsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSB2YWx1ZTsKKyAgICB9CisgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCAmJiBlcC0+bWVfa2V5ICE9IGR1bW15KTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fCBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0KTsKKyAgICByZXR1cm4gMDsKIH0KIAogLyoKQEAgLTU3MSwxOCArODY1LDI1IEBACiB1c2luZyBpbnNlcnRkaWN0KCkgaW4gZGljdHJlc2l6ZSgpIGlzIGRhbmdlcm91cyAoU0YgYnVnICMxNDU2MjA5KS4KIE5vdGUgdGhhdCBubyByZWZjb3VudHMgYXJlIGNoYW5nZWQgYnkgdGhpcyByb3V0aW5lOyBpZiBuZWVkZWQsIHRoZSBjYWxsZXIKIGlzIHJlc3BvbnNpYmxlIGZvciBpbmNyZWYnaW5nIGBrZXlgIGFuZCBgdmFsdWVgLgorTmVpdGhlciBtcC0+bWFfdXNlZCBub3Igay0+ZGtfdXNhYmxlIGFyZSBtb2RpZmllZCBieSB0aGlzIHJvdXRpbmU7IHRoZSBjYWxsZXIKK211c3Qgc2V0IHRoZW0gY29ycmVjdGx5CiAqLwogc3RhdGljIHZvaWQKLWluc2VydGRpY3RfY2xlYW4ocmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsCitpbnNlcnRkaWN0X2NsZWFuKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLAogICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgcmVnaXN0ZXIgc2l6ZV90IGk7Ci0gICAgcmVnaXN0ZXIgc2l6ZV90IHBlcnR1cmI7Ci0gICAgcmVnaXN0ZXIgc2l6ZV90IG1hc2sgPSAoc2l6ZV90KW1wLT5tYV9tYXNrOwotICAgIFB5RGljdEVudHJ5ICplcDAgPSBtcC0+bWFfdGFibGU7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOworICAgIHNpemVfdCBpOworICAgIHNpemVfdCBwZXJ0dXJiOworICAgIFB5RGljdEtleXNPYmplY3QgKmsgPSBtcC0+bWFfa2V5czsKKyAgICBzaXplX3QgbWFzayA9IChzaXplX3QpREtfU0laRShrKS0xOworICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmay0+ZGtfZW50cmllc1swXTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAKLSAgICBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCB2YWx1ZSk7CisgICAgYXNzZXJ0KGstPmRrX2xvb2t1cCAhPSBOVUxMKTsKKyAgICBhc3NlcnQodmFsdWUgIT0gTlVMTCk7CisgICAgYXNzZXJ0KGtleSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoa2V5ICE9IGR1bW15KTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fCBrLT5ka19sb29rdXAgPT0gbG9va2RpY3QpOwogICAgIGkgPSBoYXNoICYgbWFzazsKICAgICBlcCA9ICZlcDBbaV07CiAgICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgZXAtPm1lX2tleSAhPSBOVUxMOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7CkBAIC01OTAsMzEgKzg5MSwzMSBAQAogICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOwogICAgIH0KICAgICBhc3NlcnQoZXAtPm1lX3ZhbHVlID09IE5VTEwpOwotICAgIG1wLT5tYV9maWxsKys7CiAgICAgZXAtPm1lX2tleSA9IGtleTsKICAgICBlcC0+bWVfaGFzaCA9IGhhc2g7CiAgICAgZXAtPm1lX3ZhbHVlID0gdmFsdWU7Ci0gICAgbXAtPm1hX3VzZWQrKzsKIH0KIAogLyoKIFJlc3RydWN0dXJlIHRoZSB0YWJsZSBieSBhbGxvY2F0aW5nIGEgbmV3IHRhYmxlIGFuZCByZWluc2VydGluZyBhbGwKIGl0ZW1zIGFnYWluLiAgV2hlbiBlbnRyaWVzIGhhdmUgYmVlbiBkZWxldGVkLCB0aGUgbmV3IHRhYmxlIG1heQogYWN0dWFsbHkgYmUgc21hbGxlciB0aGFuIHRoZSBvbGQgb25lLgorSWYgYSB0YWJsZSBpcyBzcGxpdCAoaXRzIGtleXMgYW5kIGhhc2hlcyBhcmUgc2hhcmVkLCBpdHMgdmFsdWVzIGFyZSBub3QpLAordGhlbiB0aGUgdmFsdWVzIGFyZSB0ZW1wb3JhcmlseSBjb3BpZWQgaW50byB0aGUgdGFibGUsIGl0IGlzIHJlc2l6ZWQgYXMKK2EgY29tYmluZWQgdGFibGUsIHRoZW4gdGhlIG1lX3ZhbHVlIHNsb3RzIGluIHRoZSBvbGQgdGFibGUgYXJlIE5VTExlZCBvdXQuCitBZnRlciByZXNpemluZyBhIHRhYmxlIGlzIGFsd2F5cyBjb21iaW5lZCwKK2J1dCBjYW4gYmUgcmVzcGxpdCBieSBtYWtlX2tleXNfc2hhcmVkKCkuCiAqLwogc3RhdGljIGludAogZGljdHJlc2l6ZShQeURpY3RPYmplY3QgKm1wLCBQeV9zc2l6ZV90IG1pbnVzZWQpCiB7CiAgICAgUHlfc3NpemVfdCBuZXdzaXplOwotICAgIFB5RGljdEVudHJ5ICpvbGR0YWJsZSwgKm5ld3RhYmxlLCAqZXA7Ci0gICAgUHlfc3NpemVfdCBpOwotICAgIGludCBpc19vbGR0YWJsZV9tYWxsb2NlZDsKLSAgICBQeURpY3RFbnRyeSBzbWFsbF9jb3B5W1B5RGljdF9NSU5TSVpFXTsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICpvbGRrZXlzOworICAgIFB5T2JqZWN0ICoqb2xkdmFsdWVzOworICAgIFB5X3NzaXplX3QgaSwgb2xkc2l6ZTsKIAotICAgIGFzc2VydChtaW51c2VkID49IDApOwotCi0gICAgLyogRmluZCB0aGUgc21hbGxlc3QgdGFibGUgc2l6ZSA+IG1pbnVzZWQuICovCi0gICAgZm9yIChuZXdzaXplID0gUHlEaWN0X01JTlNJWkU7CisvKiBGaW5kIHRoZSBzbWFsbGVzdCB0YWJsZSBzaXplID4gbWludXNlZC4gKi8KKyAgICBmb3IgKG5ld3NpemUgPSBQeURpY3RfTUlOU0laRV9DT01CSU5FRDsKICAgICAgICAgIG5ld3NpemUgPD0gbWludXNlZCAmJiBuZXdzaXplID4gMDsKICAgICAgICAgIG5ld3NpemUgPDw9IDEpCiAgICAgICAgIDsKQEAgLTYyMiw4MyArOTIzLDEyNSBAQAogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotCi0gICAgLyogR2V0IHNwYWNlIGZvciBhIG5ldyB0YWJsZS4gKi8KLSAgICBvbGR0YWJsZSA9IG1wLT5tYV90YWJsZTsKLSAgICBhc3NlcnQob2xkdGFibGUgIT0gTlVMTCk7Ci0gICAgaXNfb2xkdGFibGVfbWFsbG9jZWQgPSBvbGR0YWJsZSAhPSBtcC0+bWFfc21hbGx0YWJsZTsKLQotICAgIGlmIChuZXdzaXplID09IFB5RGljdF9NSU5TSVpFKSB7Ci0gICAgICAgIC8qIEEgbGFyZ2UgdGFibGUgaXMgc2hyaW5raW5nLCBvciB3ZSBjYW4ndCBnZXQgYW55IHNtYWxsZXIuICovCi0gICAgICAgIG5ld3RhYmxlID0gbXAtPm1hX3NtYWxsdGFibGU7Ci0gICAgICAgIGlmIChuZXd0YWJsZSA9PSBvbGR0YWJsZSkgewotICAgICAgICAgICAgaWYgKG1wLT5tYV9maWxsID09IG1wLT5tYV91c2VkKSB7Ci0gICAgICAgICAgICAgICAgLyogTm8gZHVtbWllcywgc28gbm8gcG9pbnQgZG9pbmcgYW55dGhpbmcuICovCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgb2xka2V5cyA9IG1wLT5tYV9rZXlzOworICAgIG9sZHZhbHVlcyA9IG1wLT5tYV92YWx1ZXM7CisgICAgLyogQWxsb2NhdGUgYSBuZXcgdGFibGUuICovCisgICAgbXAtPm1hX2tleXMgPSBuZXdfa2V5c19vYmplY3QobmV3c2l6ZSk7CisgICAgaWYgKG1wLT5tYV9rZXlzID09IE5VTEwpIHsKKyAgICAgICAgbXAtPm1hX2tleXMgPSBvbGRrZXlzOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChvbGRrZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpCisgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKKyAgICBvbGRzaXplID0gREtfU0laRShvbGRrZXlzKTsKKyAgICBtcC0+bWFfdmFsdWVzID0gTlVMTDsKKyAgICAvKiBJZiBlbXB0eSB0aGVuIG5vdGhpbmcgdG8gY29weSBzbyBqdXN0IHJldHVybiAqLworICAgIGlmIChvbGRzaXplID09IDEpIHsKKyAgICAgICAgYXNzZXJ0KG9sZGtleXMgPT0gUHlfRU1QVFlfS0VZUyk7CisgICAgICAgIERLX0RFQ1JFRihvbGRrZXlzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIC8qIE1haW4gbG9vcCBiZWxvdyBhc3N1bWVzIHdlIGNhbiB0cmFuc2ZlciByZWZjb3VudCB0byBuZXcga2V5cworICAgICAqIGFuZCB0aGF0IHZhbHVlIGlzIHN0b3JlZCBpbiBtZV92YWx1ZS4KKyAgICAgKiBJbmNyZW1lbnQgcmVmLWNvdW50cyBhbmQgY29weSB2YWx1ZXMgaGVyZSB0byBjb21wZW5zYXRlCisgICAgICogVGhpcyAocmVzaXppbmcgYSBzcGxpdCB0YWJsZSkgc2hvdWxkIGJlIHJlbGF0aXZlbHkgcmFyZSAqLworICAgIGlmIChvbGR2YWx1ZXMgIT0gTlVMTCkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2xkc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBpZiAob2xkdmFsdWVzW2ldICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYob2xka2V5cy0+ZGtfZW50cmllc1tpXS5tZV9rZXkpOworICAgICAgICAgICAgICAgIG9sZGtleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWUgPSBvbGR2YWx1ZXNbaV07CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBXZSdyZSBub3QgZ29pbmcgdG8gcmVzaXplIGl0LCBidXQgcmVidWlsZCB0aGUKLSAgICAgICAgICAgICAgIHRhYmxlIGFueXdheSB0byBwdXJnZSBvbGQgZHVtbXkgZW50cmllcy4KLSAgICAgICAgICAgICAgIFN1YnRsZTogIFRoaXMgaXMgKm5lY2Vzc2FyeSogaWYgZmlsbD09c2l6ZSwKLSAgICAgICAgICAgICAgIGFzIGxvb2tkaWN0IG5lZWRzIGF0IGxlYXN0IG9uZSB2aXJnaW4gc2xvdCB0bwotICAgICAgICAgICAgICAgdGVybWluYXRlIGZhaWxpbmcgc2VhcmNoZXMuICBJZiBmaWxsIDwgc2l6ZSwgaXQncwotICAgICAgICAgICAgICAgbWVyZWx5IGRlc2lyYWJsZSwgYXMgZHVtbWllcyBzbG93IHNlYXJjaGVzLiAqLwotICAgICAgICAgICAgYXNzZXJ0KG1wLT5tYV9maWxsID4gbXAtPm1hX3VzZWQpOwotICAgICAgICAgICAgbWVtY3B5KHNtYWxsX2NvcHksIG9sZHRhYmxlLCBzaXplb2Yoc21hbGxfY29weSkpOwotICAgICAgICAgICAgb2xkdGFibGUgPSBzbWFsbF9jb3B5OwogICAgICAgICB9CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBuZXd0YWJsZSA9IFB5TWVtX05FVyhQeURpY3RFbnRyeSwgbmV3c2l6ZSk7Ci0gICAgICAgIGlmIChuZXd0YWJsZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyogTWFrZSB0aGUgZGljdCBlbXB0eSwgdXNpbmcgdGhlIG5ldyB0YWJsZS4gKi8KLSAgICBhc3NlcnQobmV3dGFibGUgIT0gb2xkdGFibGUpOwotICAgIG1wLT5tYV90YWJsZSA9IG5ld3RhYmxlOwotICAgIG1wLT5tYV9tYXNrID0gbmV3c2l6ZSAtIDE7Ci0gICAgbWVtc2V0KG5ld3RhYmxlLCAwLCBzaXplb2YoUHlEaWN0RW50cnkpICogbmV3c2l6ZSk7Ci0gICAgbXAtPm1hX3VzZWQgPSAwOwotICAgIGkgPSBtcC0+bWFfZmlsbDsKLSAgICBtcC0+bWFfZmlsbCA9IDA7Ci0KLSAgICAvKiBDb3B5IHRoZSBkYXRhIG92ZXI7IHRoaXMgaXMgcmVmY291bnQtbmV1dHJhbCBmb3IgYWN0aXZlIGVudHJpZXM7Ci0gICAgICAgZHVtbXkgZW50cmllcyBhcmVuJ3QgY29waWVkIG92ZXIsIG9mIGNvdXJzZSAqLwotICAgIGZvciAoZXAgPSBvbGR0YWJsZTsgaSA+IDA7IGVwKyspIHsKLSAgICAgICAgaWYgKGVwLT5tZV92YWx1ZSAhPSBOVUxMKSB7ICAgICAgICAgICAgIC8qIGFjdGl2ZSBlbnRyeSAqLwotICAgICAgICAgICAgLS1pOworICAgIC8qIE1haW4gbG9vcCAqLworICAgIGZvciAoaSA9IDA7IGkgPCBvbGRzaXplOyBpKyspIHsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwID0gJm9sZGtleXMtPmRrX2VudHJpZXNbaV07CisgICAgICAgIGlmIChlcC0+bWVfdmFsdWUgIT0gTlVMTCkgeworICAgICAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gZHVtbXkpOwogICAgICAgICAgICAgaW5zZXJ0ZGljdF9jbGVhbihtcCwgZXAtPm1lX2tleSwgZXAtPm1lX2hhc2gsIGVwLT5tZV92YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZXAtPm1lX2tleSAhPSBOVUxMKSB7ICAgICAgICAgIC8qIGR1bW15IGVudHJ5ICovCi0gICAgICAgICAgICAtLWk7Ci0gICAgICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSA9PSBkdW1teSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZXAtPm1lX2tleSk7Ci0gICAgICAgIH0KLSAgICAgICAgLyogZWxzZSBrZXkgPT0gdmFsdWUgPT0gTlVMTDogIG5vdGhpbmcgdG8gZG8gKi8KICAgICB9Ci0KLSAgICBpZiAoaXNfb2xkdGFibGVfbWFsbG9jZWQpCi0gICAgICAgIFB5TWVtX0RFTChvbGR0YWJsZSk7CisgICAgbXAtPm1hX2tleXMtPmRrX3VzYWJsZSAtPSBtcC0+bWFfdXNlZDsKKyAgICBpZiAob2xkdmFsdWVzICE9IE5VTEwpIHsKKyAgICAgICAgLyogTlVMTCBvdXQgbWVfdmFsdWUgc2xvdCBpbiBvbGRrZXlzLCBpbiBjYXNlIGl0IHdhcyBzaGFyZWQgKi8KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG9sZHNpemU7IGkrKykKKyAgICAgICAgICAgIG9sZGtleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWUgPSBOVUxMOworICAgICAgICBhc3NlcnQob2xkdmFsdWVzICE9IGVtcHR5X3ZhbHVlcyk7CisgICAgICAgIGZyZWVfdmFsdWVzKG9sZHZhbHVlcyk7CisgICAgICAgIERLX0RFQ1JFRihvbGRrZXlzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydChvbGRrZXlzLT5ka19sb29rdXAgIT0gbG9va2RpY3Rfc3BsaXQpOworICAgICAgICBpZiAob2xka2V5cy0+ZGtfbG9va3VwICE9IGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSkgeworICAgICAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZvbGRrZXlzLT5ka19lbnRyaWVzWzBdOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG9sZHNpemU7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChlcDBbaV0ubWVfa2V5ID09IGR1bW15KQorICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZHVtbXkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGFzc2VydChvbGRrZXlzLT5ka19yZWZjbnQgPT0gMSk7CisgICAgICAgIERLX0RFQlVHX0RFQ1JFRiBQeU1lbV9GUkVFKG9sZGtleXMpOworICAgIH0KICAgICByZXR1cm4gMDsKIH0KIAotLyogQ3JlYXRlIGEgbmV3IGRpY3Rpb25hcnkgcHJlLXNpemVkIHRvIGhvbGQgYW4gZXN0aW1hdGVkIG51bWJlciBvZiBlbGVtZW50cy4KLSAgIFVuZGVyZXN0aW1hdGVzIGFyZSBva2F5IGJlY2F1c2UgdGhlIGRpY3Rpb25hcnkgd2lsbCByZXNpemUgYXMgbmVjZXNzYXJ5LgotICAgT3ZlcmVzdGltYXRlcyBqdXN0IG1lYW4gdGhlIGRpY3Rpb25hcnkgd2lsbCBiZSBtb3JlIHNwYXJzZSB0aGFuIHVzdWFsLgotKi8KKy8qIFJldHVybnMgTlVMTCBpZiB1bmFibGUgdG8gc3BsaXQgdGFibGUuCisgKiBBIE5VTEwgcmV0dXJuIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGluZGljYXRlIGFuIGVycm9yICovCitzdGF0aWMgUHlEaWN0S2V5c09iamVjdCAqCittYWtlX2tleXNfc2hhcmVkKFB5T2JqZWN0ICpvcCkKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7CisKKyAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KG9wKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7CisgICAgICAgIFB5RGljdEtleUVudHJ5ICplcDA7CisgICAgICAgIFB5T2JqZWN0ICoqdmFsdWVzOworICAgICAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX3JlZmNudCA9PSAxKTsKKyAgICAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3RfdW5pY29kZSkgeworICAgICAgICAgICAgLyogUmVtb3ZlIGR1bW15IGtleXMgKi8KKyAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBES19TSVpFKG1wLT5tYV9rZXlzKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3RfdW5pY29kZV9ub2R1bW15KTsKKyAgICAgICAgLyogQ29weSB2YWx1ZXMgaW50byBhIG5ldyBhcnJheSAqLworICAgICAgICBlcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CisgICAgICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICAgICAgdmFsdWVzID0gbmV3X3ZhbHVlcyhzaXplKTsKKyAgICAgICAgaWYgKHZhbHVlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsCisgICAgICAgICAgICAgICAgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGFsbG9jYXRlIG5ldyB2YWx1ZXMgYXJyYXkiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIHZhbHVlc1tpXSA9IGVwMFtpXS5tZV92YWx1ZTsKKyAgICAgICAgICAgIGVwMFtpXS5tZV92YWx1ZSA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9IGxvb2tkaWN0X3NwbGl0OworICAgICAgICBtcC0+bWFfdmFsdWVzID0gdmFsdWVzOworICAgIH0KKyAgICBES19JTkNSRUYobXAtPm1hX2tleXMpOworICAgIHJldHVybiBtcC0+bWFfa2V5czsKK30KIAogUHlPYmplY3QgKgogX1B5RGljdF9OZXdQcmVzaXplZChQeV9zc2l6ZV90IG1pbnVzZWQpCiB7Ci0gICAgUHlPYmplY3QgKm9wID0gUHlEaWN0X05ldygpOwotCi0gICAgaWYgKG1pbnVzZWQ+NSAmJiBvcCAhPSBOVUxMICYmIGRpY3RyZXNpemUoKFB5RGljdE9iamVjdCAqKW9wLCBtaW51c2VkKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYob3ApOworICAgIFB5X3NzaXplX3QgbmV3c2l6ZTsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICpuZXdfa2V5czsKKyAgICBmb3IgKG5ld3NpemUgPSBQeURpY3RfTUlOU0laRV9DT01CSU5FRDsKKyAgICAgICAgIG5ld3NpemUgPD0gbWludXNlZCAmJiBuZXdzaXplID4gMDsKKyAgICAgICAgIG5ld3NpemUgPDw9IDEpCisgICAgICAgIDsKKyAgICBuZXdfa2V5cyA9IG5ld19rZXlzX29iamVjdChuZXdzaXplKTsKKyAgICBpZiAobmV3X2tleXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBvcDsKKyAgICByZXR1cm4gbmV3X2RpY3QobmV3X2tleXMsIE5VTEwpOwogfQogCiAvKiBOb3RlIHRoYXQsIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIFB5RGljdF9HZXRJdGVtKCkgc3VwcHJlc3NlcyBhbGwgZXJyb3JzCkBAIC03MTYsMTIgKzEwNTksMTQgQEAKIHsKICAgICBQeV9oYXNoX3QgaGFzaDsKICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIFB5RGljdEVudHJ5ICplcDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKKwogICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpCisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKQogICAgIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpIHsKQEAgLTc0MSwyMCArMTA4NiwyMCBAQAogICAgICAgICAvKiBwcmVzZXJ2ZSB0aGUgZXhpc3RpbmcgZXhjZXB0aW9uICovCiAgICAgICAgIFB5T2JqZWN0ICplcnJfdHlwZSwgKmVycl92YWx1ZSwgKmVycl90YjsKICAgICAgICAgUHlFcnJfRmV0Y2goJmVycl90eXBlLCAmZXJyX3ZhbHVlLCAmZXJyX3RiKTsKLSAgICAgICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7CisgICAgICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKICAgICAgICAgLyogaWdub3JlIGVycm9ycyAqLwogICAgICAgICBQeUVycl9SZXN0b3JlKGVycl90eXBlLCBlcnJfdmFsdWUsIGVycl90Yik7CiAgICAgICAgIGlmIChlcCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBlcCA9IChtcC0+bWFfbG9va3VwKShtcCwga2V5LCBoYXNoKTsKKyAgICAgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwogICAgICAgICBpZiAoZXAgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBlcC0+bWVfdmFsdWU7CisgICAgcmV0dXJuICp2YWx1ZV9hZGRyOwogfQogCiAvKiBWYXJpYW50IG9mIFB5RGljdF9HZXRJdGVtKCkgdGhhdCBkb2Vzbid0IHN1cHByZXNzIGV4Y2VwdGlvbnMuCkBAIC03NjYsMTQgKzExMTEsMTUgQEAKIHsKICAgICBQeV9oYXNoX3QgaGFzaDsKICAgICBQeURpY3RPYmplY3QqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0RW50cnkgKmVwOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpCiAgICAgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkgewpAQCAtNzgxLDQ5ICsxMTI3LDU1IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBlcCA9IChtcC0+bWFfbG9va3VwKShtcCwga2V5LCBoYXNoKTsKKyAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CiAgICAgaWYgKGVwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBlcC0+bWVfdmFsdWU7CisgICAgcmV0dXJuICp2YWx1ZV9hZGRyOwogfQogCi1zdGF0aWMgaW50Ci1kaWN0X3NldF9pdGVtX2J5X2hhc2hfb3JfZW50cnkocmVnaXN0ZXIgUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeURpY3RFbnRyeSAqZXAsIFB5T2JqZWN0ICp2YWx1ZSkKK1B5T2JqZWN0ICoKK19QeURpY3RfR2V0SXRlbUlkV2l0aEVycm9yKFB5T2JqZWN0ICpkcCwgc3RydWN0IF9QeV9JZGVudGlmaWVyICprZXkpCiB7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcDsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IG5fdXNlZDsKKyAgICBQeU9iamVjdCAqa3Y7CisgICAga3YgPSBfUHlVbmljb2RlX0Zyb21JZChrZXkpOyAvKiBib3Jyb3dlZCAqLworICAgIGlmIChrdiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoZHAsIGt2KTsKK30KIAotICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIGFzc2VydChtcC0+bWFfZmlsbCA8PSBtcC0+bWFfbWFzayk7ICAvKiBhdCBsZWFzdCBvbmUgZW1wdHkgc2xvdCAqLwotICAgIG5fdXNlZCA9IG1wLT5tYV91c2VkOwotICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgaWYgKGVwID09IE5VTEwpIHsKLSAgICAgICAgaWYgKGluc2VydGRpY3QobXAsIGtleSwgaGFzaCwgdmFsdWUpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gLTE7CisvKiBGYXN0IHZlcnNpb24gb2YgZ2xvYmFsIHZhbHVlIGxvb2t1cC4KKyAqIExvb2t1cCBpbiBnbG9iYWxzLCB0aGVuIGJ1aWx0aW5zLgorICovCitQeU9iamVjdCAqCitfUHlEaWN0X0xvYWRHbG9iYWwoUHlEaWN0T2JqZWN0ICpnbG9iYWxzLCBQeURpY3RPYmplY3QgKmJ1aWx0aW5zLCBQeU9iamVjdCAqa2V5KQoreworICAgIFB5T2JqZWN0ICp4OworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7CisgICAgICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKKyAgICAgICAgUHlfaGFzaF90IGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKilrZXkpLT5oYXNoOworICAgICAgICBpZiAoaGFzaCAhPSAtMSkgeworICAgICAgICAgICAgUHlEaWN0S2V5RW50cnkgKmU7CisgICAgICAgICAgICBlID0gZ2xvYmFscy0+bWFfa2V5cy0+ZGtfbG9va3VwKGdsb2JhbHMsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgICAgICAgICAgaWYgKGUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgeCA9ICp2YWx1ZV9hZGRyOworICAgICAgICAgICAgaWYgKHggIT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgICAgIGUgPSBidWlsdGlucy0+bWFfa2V5cy0+ZGtfbG9va3VwKGJ1aWx0aW5zLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKyAgICAgICAgICAgIGlmIChlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHggPSAqdmFsdWVfYWRkcjsKKyAgICAgICAgICAgIHJldHVybiB4OworICAgICAgICB9CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoaW5zZXJ0ZGljdF9ieV9lbnRyeShtcCwga2V5LCBoYXNoLCBlcCwgdmFsdWUpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIC8qIElmIHdlIGFkZGVkIGEga2V5LCB3ZSBjYW4gc2FmZWx5IHJlc2l6ZS4gIE90aGVyd2lzZSBqdXN0IHJldHVybiEKLSAgICAgKiBJZiBmaWxsID49IDIvMyBzaXplLCBhZGp1c3Qgc2l6ZS4gIE5vcm1hbGx5LCB0aGlzIGRvdWJsZXMgb3IKLSAgICAgKiBxdWFkdXBsZXMgdGhlIHNpemUsIGJ1dCBpdCdzIGFsc28gcG9zc2libGUgZm9yIHRoZSBkaWN0IHRvIHNocmluawotICAgICAqIChpZiBtYV9maWxsIGlzIG11Y2ggbGFyZ2VyIHRoYW4gbWFfdXNlZCwgbWVhbmluZyBhIGxvdCBvZiBkaWN0Ci0gICAgICoga2V5cyBoYXZlIGJlZW4gKiBkZWxldGVkKS4KLSAgICAgKgotICAgICAqIFF1YWRydXBsaW5nIHRoZSBzaXplIGltcHJvdmVzIGF2ZXJhZ2UgZGljdGlvbmFyeSBzcGFyc2VuZXNzCi0gICAgICogKHJlZHVjaW5nIGNvbGxpc2lvbnMpIGF0IHRoZSBjb3N0IG9mIHNvbWUgbWVtb3J5IGFuZCBpdGVyYXRpb24KLSAgICAgKiBzcGVlZCAod2hpY2ggbG9vcHMgb3ZlciBldmVyeSBwb3NzaWJsZSBlbnRyeSkuICBJdCBhbHNvIGhhbHZlcwotICAgICAqIHRoZSBudW1iZXIgb2YgZXhwZW5zaXZlIHJlc2l6ZSBvcGVyYXRpb25zIGluIGEgZ3Jvd2luZyBkaWN0aW9uYXJ5LgotICAgICAqCi0gICAgICogVmVyeSBsYXJnZSBkaWN0aW9uYXJpZXMgKG92ZXIgNTBLIGl0ZW1zKSB1c2UgZG91YmxpbmcgaW5zdGVhZC4KLSAgICAgKiBUaGlzIG1heSBoZWxwIGFwcGxpY2F0aW9ucyB3aXRoIHNldmVyZSBtZW1vcnkgY29uc3RyYWludHMuCi0gICAgICovCi0gICAgaWYgKCEobXAtPm1hX3VzZWQgPiBuX3VzZWQgJiYgbXAtPm1hX2ZpbGwqMyA+PSAobXAtPm1hX21hc2srMSkqMikpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBkaWN0cmVzaXplKG1wLCAobXAtPm1hX3VzZWQgPiA1MDAwMCA/IDIgOiA0KSAqIG1wLT5tYV91c2VkKTsKKyAgICB4ID0gUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoKFB5T2JqZWN0ICopZ2xvYmFscywga2V5KTsKKyAgICBpZiAoeCAhPSBOVUxMKQorICAgICAgICByZXR1cm4geDsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKChQeU9iamVjdCAqKWJ1aWx0aW5zLCBrZXkpOwogfQogCiAvKiBDQVVUSU9OOiBQeURpY3RfU2V0SXRlbSgpIG11c3QgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgcmVzaXplIHRoZQpAQCAtODMzLDM2ICsxMTg1LDM3IEBACiAgKiByZW1vdmUgdGhlbS4KICAqLwogaW50Ci1QeURpY3RfU2V0SXRlbShyZWdpc3RlciBQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSkKK1B5RGljdF9TZXRJdGVtKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIHJlZ2lzdGVyIFB5X2hhc2hfdCBoYXNoOwotCisgICAgUHlEaWN0T2JqZWN0ICptcDsKKyAgICBQeV9oYXNoX3QgaGFzaDsKICAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgYXNzZXJ0KGtleSk7CiAgICAgYXNzZXJ0KHZhbHVlKTsKLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgewotICAgICAgICBoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaDsKLSAgICAgICAgaWYgKGhhc2ggPT0gLTEpCi0gICAgICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwotICAgIH0KLSAgICBlbHNlIHsKKyAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpCisgICAgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgcmV0dXJuIGRpY3Rfc2V0X2l0ZW1fYnlfaGFzaF9vcl9lbnRyeShvcCwga2V5LCBoYXNoLCBOVUxMLCB2YWx1ZSk7CisKKyAgICAvKiBpbnNlcnRkaWN0KCkgaGFuZGxlcyBhbnkgcmVzaXppbmcgdGhhdCBtaWdodCBiZSBuZWNlc3NhcnkgKi8KKyAgICByZXR1cm4gaW5zZXJ0ZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZSk7CiB9CiAKIGludAogUHlEaWN0X0RlbEl0ZW0oUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5KQogewotICAgIHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXA7Ci0gICAgcmVnaXN0ZXIgUHlfaGFzaF90IGhhc2g7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOwotICAgIFB5T2JqZWN0ICpvbGRfdmFsdWUsICpvbGRfa2V5OworICAgIFB5RGljdE9iamVjdCAqbXA7CisgICAgUHlfaGFzaF90IGhhc2g7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5T2JqZWN0ICpvbGRfa2V5LCAqb2xkX3ZhbHVlOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKQEAgLTg3MCwyNyArMTIyMywzMCBAQAogICAgIH0KICAgICBhc3NlcnQoa2V5KTsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7CisgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwogICAgIGlmIChlcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKGVwLT5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgaWYgKCp2YWx1ZV9hZGRyID09IE5VTEwpIHsKICAgICAgICAgc2V0X2tleV9lcnJvcihrZXkpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OwotICAgIFB5X0lOQ1JFRihkdW1teSk7Ci0gICAgZXAtPm1lX2tleSA9IGR1bW15OwotICAgIG9sZF92YWx1ZSA9IGVwLT5tZV92YWx1ZTsKLSAgICBlcC0+bWVfdmFsdWUgPSBOVUxMOworICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOworICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKICAgICBtcC0+bWFfdXNlZC0tOworICAgIGlmICghX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgeworICAgICAgICBFTlNVUkVfQUxMT1dTX0RFTEVUSU9OUyhtcCk7CisgICAgICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OworICAgICAgICBQeV9JTkNSRUYoZHVtbXkpOworICAgICAgICBlcC0+bWVfa2V5ID0gZHVtbXk7CisgICAgICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKKyAgICB9CiAgICAgUHlfREVDUkVGKG9sZF92YWx1ZSk7Ci0gICAgUHlfREVDUkVGKG9sZF9rZXkpOwogICAgIHJldHVybiAwOwogfQogCkBAIC04OTgsNjkgKzEyNTQsNzAgQEAKIFB5RGljdF9DbGVhcihQeU9iamVjdCAqb3ApCiB7CiAgICAgUHlEaWN0T2JqZWN0ICptcDsKLSAgICBQeURpY3RFbnRyeSAqZXAsICp0YWJsZTsKLSAgICBpbnQgdGFibGVfaXNfbWFsbG9jZWQ7Ci0gICAgUHlfc3NpemVfdCBmaWxsOwotICAgIFB5RGljdEVudHJ5IHNtYWxsX2NvcHlbUHlEaWN0X01JTlNJWkVdOwotI2lmZGVmIFB5X0RFQlVHCisgICAgUHlEaWN0S2V5c09iamVjdCAqb2xka2V5czsKKyAgICBQeU9iamVjdCAqKm9sZHZhbHVlczsKICAgICBQeV9zc2l6ZV90IGksIG47Ci0jZW5kaWYKIAogICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkKICAgICAgICAgcmV0dXJuOworICAgIG1wID0gKChQeURpY3RPYmplY3QgKilvcCk7CisgICAgb2xka2V5cyA9IG1wLT5tYV9rZXlzOworICAgIG9sZHZhbHVlcyA9IG1wLT5tYV92YWx1ZXM7CisgICAgaWYgKG9sZHZhbHVlcyA9PSBlbXB0eV92YWx1ZXMpCisgICAgICAgIHJldHVybjsKKyAgICAvKiBFbXB0eSB0aGUgZGljdC4uLiAqLworICAgIERLX0lOQ1JFRihQeV9FTVBUWV9LRVlTKTsKKyAgICBtcC0+bWFfa2V5cyA9IFB5X0VNUFRZX0tFWVM7CisgICAgbXAtPm1hX3ZhbHVlcyA9IGVtcHR5X3ZhbHVlczsKKyAgICBtcC0+bWFfdXNlZCA9IDA7CisgICAgLyogLi4udGhlbiBjbGVhciB0aGUga2V5cyBhbmQgdmFsdWVzICovCisgICAgaWYgKG9sZHZhbHVlcyAhPSBOVUxMKSB7CisgICAgICAgIG4gPSBES19TSVpFKG9sZGtleXMpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQorICAgICAgICAgICAgUHlfQ0xFQVIob2xkdmFsdWVzW2ldKTsKKyAgICAgICAgZnJlZV92YWx1ZXMob2xkdmFsdWVzKTsKKyAgICAgICAgREtfREVDUkVGKG9sZGtleXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICBhc3NlcnQob2xka2V5cy0+ZGtfcmVmY250ID09IDEpOworICAgICAgIERLX0RFQ1JFRihvbGRrZXlzKTsKKyAgICB9Cit9CisKKy8qIFJldHVybnMgLTEgaWYgbm8gbW9yZSBpdGVtcyAob3Igb3AgaXMgbm90IGEgZGljdCksCisgKiBpbmRleCBvZiBpdGVtIG90aGVyd2lzZS4gU3RvcmVzIHZhbHVlIGluIHB2YWx1ZQorICovCitQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKK2RpY3RfbmV4dChQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgaSwgUHlPYmplY3QgKipwdmFsdWUpCit7CisgICAgUHlfc3NpemVfdCBtYXNrLCBvZmZzZXQ7CisgICAgUHlEaWN0T2JqZWN0ICptcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKKworCisgICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKQorICAgICAgICByZXR1cm4gLTE7CiAgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0jaWZkZWYgUHlfREVCVUcKLSAgICBuID0gbXAtPm1hX21hc2sgKyAxOwotICAgIGkgPSAwOwotI2VuZGlmCi0KLSAgICB0YWJsZSA9IG1wLT5tYV90YWJsZTsKLSAgICBhc3NlcnQodGFibGUgIT0gTlVMTCk7Ci0gICAgdGFibGVfaXNfbWFsbG9jZWQgPSB0YWJsZSAhPSBtcC0+bWFfc21hbGx0YWJsZTsKLQotICAgIC8qIFRoaXMgaXMgZGVsaWNhdGUuICBEdXJpbmcgdGhlIHByb2Nlc3Mgb2YgY2xlYXJpbmcgdGhlIGRpY3QsCi0gICAgICogZGVjcmVmcyBjYW4gY2F1c2UgdGhlIGRpY3QgdG8gbXV0YXRlLiAgVG8gYXZvaWQgZmF0YWwgY29uZnVzaW9uCi0gICAgICogKHZvaWNlIG9mIGV4cGVyaWVuY2UpLCB3ZSBoYXZlIHRvIG1ha2UgdGhlIGRpY3QgZW1wdHkgYmVmb3JlCi0gICAgICogY2xlYXJpbmcgdGhlIHNsb3RzLCBhbmQgbmV2ZXIgcmVmZXIgdG8gYW55dGhpbmcgdmlhIG1wLT54eHggd2hpbGUKLSAgICAgKiBjbGVhcmluZy4KLSAgICAgKi8KLSAgICBmaWxsID0gbXAtPm1hX2ZpbGw7Ci0gICAgaWYgKHRhYmxlX2lzX21hbGxvY2VkKQotICAgICAgICBFTVBUWV9UT19NSU5TSVpFKG1wKTsKLQotICAgIGVsc2UgaWYgKGZpbGwgPiAwKSB7Ci0gICAgICAgIC8qIEl0J3MgYSBzbWFsbCB0YWJsZSB3aXRoIHNvbWV0aGluZyB0aGF0IG5lZWRzIHRvIGJlIGNsZWFyZWQuCi0gICAgICAgICAqIEFmcmFpZCB0aGUgb25seSBzYWZlIHdheSBpcyB0byBjb3B5IHRoZSBkaWN0IGVudHJpZXMgaW50bwotICAgICAgICAgKiBhbm90aGVyIHNtYWxsIHRhYmxlIGZpcnN0LgotICAgICAgICAgKi8KLSAgICAgICAgbWVtY3B5KHNtYWxsX2NvcHksIHRhYmxlLCBzaXplb2Yoc21hbGxfY29weSkpOwotICAgICAgICB0YWJsZSA9IHNtYWxsX2NvcHk7Ci0gICAgICAgIEVNUFRZX1RPX01JTlNJWkUobXApOworICAgIGlmIChpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CisgICAgICAgIHZhbHVlX3B0ciA9ICZtcC0+bWFfdmFsdWVzW2ldOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CiAgICAgfQotICAgIC8qIGVsc2UgaXQncyBhIHNtYWxsIHRhYmxlIHRoYXQncyBhbHJlYWR5IGVtcHR5ICovCi0KLSAgICAvKiBOb3cgd2UgY2FuIGZpbmFsbHkgY2xlYXIgdGhpbmdzLiAgSWYgQyBoYWQgcmVmY291bnRzLCB3ZSBjb3VsZAotICAgICAqIGFzc2VydCB0aGF0IHRoZSByZWZjb3VudCBvbiB0YWJsZSBpcyAxIG5vdywgaS5lLiB0aGF0IHRoaXMgZnVuY3Rpb24KLSAgICAgKiBoYXMgdW5pcXVlIGFjY2VzcyB0byBpdCwgc28gZGVjcmVmIHNpZGUtZWZmZWN0cyBjYW4ndCBhbHRlciBpdC4KLSAgICAgKi8KLSAgICBmb3IgKGVwID0gdGFibGU7IGZpbGwgPiAwOyArK2VwKSB7Ci0jaWZkZWYgUHlfREVCVUcKLSAgICAgICAgYXNzZXJ0KGkgPCBuKTsKLSAgICAgICAgKytpOwotI2VuZGlmCi0gICAgICAgIGlmIChlcC0+bWVfa2V5KSB7Ci0gICAgICAgICAgICAtLWZpbGw7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZXAtPm1lX2tleSk7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKGVwLT5tZV92YWx1ZSk7Ci0gICAgICAgIH0KLSNpZmRlZiBQeV9ERUJVRwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhc3NlcnQoZXAtPm1lX3ZhbHVlID09IE5VTEwpOwotI2VuZGlmCisgICAgZWxzZSB7CisgICAgICAgIHZhbHVlX3B0ciA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZTsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKICAgICB9Ci0KLSAgICBpZiAodGFibGVfaXNfbWFsbG9jZWQpCi0gICAgICAgIFB5TWVtX0RFTCh0YWJsZSk7CisgICAgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOworICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CisgICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7CisgICAgICAgIGkrKzsKKyAgICB9CisgICAgaWYgKGkgPiBtYXNrKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHB2YWx1ZSkKKyAgICAgICAgKnB2YWx1ZSA9ICp2YWx1ZV9wdHI7CisgICAgcmV0dXJuIGk7CiB9CiAKIC8qCkBAIC05ODEsNzUgKzEzMzgsNTkgQEAKIGludAogUHlEaWN0X05leHQoUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90ICpwcG9zLCBQeU9iamVjdCAqKnBrZXksIFB5T2JqZWN0ICoqcHZhbHVlKQogewotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaTsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IG1hc2s7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOwotCi0gICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpID0gKnBwb3M7CisgICAgUHlEaWN0T2JqZWN0ICptcDsKKyAgICBQeV9zc2l6ZV90IGkgPSBkaWN0X25leHQob3AsICpwcG9zLCBwdmFsdWUpOwogICAgIGlmIChpIDwgMCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgZXAgPSAoKFB5RGljdE9iamVjdCAqKW9wKS0+bWFfdGFibGU7Ci0gICAgbWFzayA9ICgoUHlEaWN0T2JqZWN0ICopb3ApLT5tYV9tYXNrOwotICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgZXBbaV0ubWVfdmFsdWUgPT0gTlVMTCkKLSAgICAgICAgaSsrOworICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwogICAgICpwcG9zID0gaSsxOwotICAgIGlmIChpID4gbWFzaykKLSAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKHBrZXkpCi0gICAgICAgICpwa2V5ID0gZXBbaV0ubWVfa2V5OwotICAgIGlmIChwdmFsdWUpCi0gICAgICAgICpwdmFsdWUgPSBlcFtpXS5tZV92YWx1ZTsKKyAgICAgICAgKnBrZXkgPSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV9rZXk7CiAgICAgcmV0dXJuIDE7CiB9CiAKLS8qIEludGVybmFsIHZlcnNpb24gb2YgUHlEaWN0X05leHQgdGhhdCByZXR1cm5zIGEgaGFzaCB2YWx1ZSBpbiBhZGRpdGlvbiB0byB0aGUga2V5IGFuZCB2YWx1ZS4qLworLyogSW50ZXJuYWwgdmVyc2lvbiBvZiBQeURpY3RfTmV4dCB0aGF0IHJldHVybnMgYSBoYXNoIHZhbHVlIGluIGFkZGl0aW9uCisgKiB0byB0aGUga2V5IGFuZCB2YWx1ZS4KKyAqLwogaW50Ci1fUHlEaWN0X05leHQoUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90ICpwcG9zLCBQeU9iamVjdCAqKnBrZXksIFB5T2JqZWN0ICoqcHZhbHVlLCBQeV9oYXNoX3QgKnBoYXNoKQorX1B5RGljdF9OZXh0KFB5T2JqZWN0ICpvcCwgUHlfc3NpemVfdCAqcHBvcywgUHlPYmplY3QgKipwa2V5LAorICAgICAgICAgICAgIFB5T2JqZWN0ICoqcHZhbHVlLCBQeV9oYXNoX3QgKnBoYXNoKQogewotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaTsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IG1hc2s7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOwotCi0gICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpID0gKnBwb3M7CisgICAgUHlEaWN0T2JqZWN0ICptcDsKKyAgICBQeV9zc2l6ZV90IGkgPSBkaWN0X25leHQob3AsICpwcG9zLCBwdmFsdWUpOwogICAgIGlmIChpIDwgMCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgZXAgPSAoKFB5RGljdE9iamVjdCAqKW9wKS0+bWFfdGFibGU7Ci0gICAgbWFzayA9ICgoUHlEaWN0T2JqZWN0ICopb3ApLT5tYV9tYXNrOwotICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgZXBbaV0ubWVfdmFsdWUgPT0gTlVMTCkKLSAgICAgICAgaSsrOworICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwogICAgICpwcG9zID0gaSsxOwotICAgIGlmIChpID4gbWFzaykKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgKnBoYXNoID0gZXBbaV0ubWVfaGFzaDsKKyAgICAqcGhhc2ggPSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV9oYXNoOwogICAgIGlmIChwa2V5KQotICAgICAgICAqcGtleSA9IGVwW2ldLm1lX2tleTsKLSAgICBpZiAocHZhbHVlKQotICAgICAgICAqcHZhbHVlID0gZXBbaV0ubWVfdmFsdWU7CisgICAgICAgICpwa2V5ID0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5OwogICAgIHJldHVybiAxOwogfQogCiAvKiBNZXRob2RzICovCiAKIHN0YXRpYyB2b2lkCi1kaWN0X2RlYWxsb2MocmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcCkKK2RpY3RfZGVhbGxvYyhQeURpY3RPYmplY3QgKm1wKQogewotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICplcDsKLSAgICBQeV9zc2l6ZV90IGZpbGwgPSBtcC0+bWFfZmlsbDsKKyAgICBQeU9iamVjdCAqKnZhbHVlcyA9IG1wLT5tYV92YWx1ZXM7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG1wLT5tYV9rZXlzOworICAgIFB5X3NzaXplX3QgaSwgbjsKICAgICBQeU9iamVjdF9HQ19VblRyYWNrKG1wKTsKICAgICBQeV9UUkFTSENBTl9TQUZFX0JFR0lOKG1wKQotICAgIGZvciAoZXAgPSBtcC0+bWFfdGFibGU7IGZpbGwgPiAwOyBlcCsrKSB7Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5KSB7Ci0gICAgICAgICAgICAtLWZpbGw7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZXAtPm1lX2tleSk7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKGVwLT5tZV92YWx1ZSk7CisgICAgaWYgKHZhbHVlcyAhPSBOVUxMKSB7CisgICAgICAgIGlmICh2YWx1ZXMgIT0gZW1wdHlfdmFsdWVzKSB7CisgICAgICAgICAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShtcC0+bWFfa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHZhbHVlc1tpXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmcmVlX3ZhbHVlcyh2YWx1ZXMpOwogICAgICAgICB9CisgICAgICAgIERLX0RFQ1JFRihrZXlzKTsKICAgICB9Ci0gICAgaWYgKG1wLT5tYV90YWJsZSAhPSBtcC0+bWFfc21hbGx0YWJsZSkKLSAgICAgICAgUHlNZW1fREVMKG1wLT5tYV90YWJsZSk7CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydChrZXlzLT5ka19yZWZjbnQgPT0gMSk7CisgICAgICAgIERLX0RFQ1JFRihrZXlzKTsKKyAgICB9CiAgICAgaWYgKG51bWZyZWUgPCBQeURpY3RfTUFYRlJFRUxJU1QgJiYgUHlfVFlQRShtcCkgPT0gJlB5RGljdF9UeXBlKQogICAgICAgICBmcmVlX2xpc3RbbnVtZnJlZSsrXSA9IG1wOwogICAgIGVsc2UKQEAgLTEwNTcsNiArMTM5OCw3IEBACiAgICAgUHlfVFJBU0hDQU5fU0FGRV9FTkQobXApCiB9CiAKKwogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3RfcmVwcihQeURpY3RPYmplY3QgKm1wKQogewpAQCAtMTA4OCwxMSArMTQzMCwxMyBAQAogICAgIGkgPSAwOwogICAgIHdoaWxlIChQeURpY3RfTmV4dCgoUHlPYmplY3QgKiltcCwgJmksICZrZXksICZ2YWx1ZSkpIHsKICAgICAgICAgaW50IHN0YXR1czsKLSAgICAgICAgLyogUHJldmVudCByZXByIGZyb20gZGVsZXRpbmcgdmFsdWUgZHVyaW5nIGtleSBmb3JtYXQuICovCisgICAgICAgIC8qIFByZXZlbnQgcmVwciBmcm9tIGRlbGV0aW5nIGtleSBvciB2YWx1ZSBkdXJpbmcga2V5IGZvcm1hdC4gKi8KKyAgICAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CiAgICAgICAgIHMgPSBQeU9iamVjdF9SZXByKGtleSk7CiAgICAgICAgIFB5VW5pY29kZV9BcHBlbmQoJnMsIGNvbG9uKTsKICAgICAgICAgUHlVbmljb2RlX0FwcGVuZEFuZERlbCgmcywgUHlPYmplY3RfUmVwcih2YWx1ZSkpOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgaWYgKHMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gRG9uZTsKQEAgLTExNDcsMjYgKzE0OTEsMjUgQEAKIHsKICAgICBQeU9iamVjdCAqdjsKICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeURpY3RFbnRyeSAqZXA7Ci0gICAgYXNzZXJ0KG1wLT5tYV90YWJsZSAhPSBOVUxMKTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOworCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7CisgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwogICAgIGlmIChlcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gZXAtPm1lX3ZhbHVlOworICAgIHYgPSAqdmFsdWVfYWRkcjsKICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlEaWN0X0NoZWNrRXhhY3QobXApKSB7CiAgICAgICAgICAgICAvKiBMb29rIHVwIF9fbWlzc2luZ19fIG1ldGhvZCBpZiB3ZSdyZSBhIHN1YmNsYXNzLiAqLwogICAgICAgICAgICAgUHlPYmplY3QgKm1pc3NpbmcsICpyZXM7Ci0gICAgICAgICAgICBzdGF0aWMgUHlPYmplY3QgKm1pc3Npbmdfc3RyID0gTlVMTDsKLSAgICAgICAgICAgIG1pc3NpbmcgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbCgoUHlPYmplY3QgKiltcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19taXNzaW5nX18iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtaXNzaW5nX3N0cik7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX21pc3NpbmdfXyk7CisgICAgICAgICAgICBtaXNzaW5nID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoKFB5T2JqZWN0ICopbXAsICZQeUlkX19fbWlzc2luZ19fKTsKICAgICAgICAgICAgIGlmIChtaXNzaW5nICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKG1pc3NpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXksIE5VTEwpOwpAQCAtMTIwNCw4ICsxNTQ3LDkgQEAKIHsKICAgICByZWdpc3RlciBQeU9iamVjdCAqdjsKICAgICByZWdpc3RlciBQeV9zc2l6ZV90IGksIGo7Ci0gICAgUHlEaWN0RW50cnkgKmVwOwotICAgIFB5X3NzaXplX3QgbWFzaywgbjsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBzaXplLCBuLCBvZmZzZXQ7CisgICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKICAgYWdhaW46CiAgICAgbiA9IG1wLT5tYV91c2VkOwpAQCAtMTIxOSwxNSArMTU2MywyNCBAQAogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIGdvdG8gYWdhaW47CiAgICAgfQotICAgIGVwID0gbXAtPm1hX3RhYmxlOwotICAgIG1hc2sgPSBtcC0+bWFfbWFzazsKLSAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8PSBtYXNrOyBpKyspIHsKLSAgICAgICAgaWYgKGVwW2ldLm1lX3ZhbHVlICE9IE5VTEwpIHsKKyAgICBlcCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKKyAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKKyAgICAgICAgdmFsdWVfcHRyID0gbXAtPm1hX3ZhbHVlczsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJmVwWzBdLm1lX3ZhbHVlOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOworICAgIH0KKyAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBpZiAoKnZhbHVlX3B0ciAhPSBOVUxMKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gZXBbaV0ubWVfa2V5OwogICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgICAgICAgICBQeUxpc3RfU0VUX0lURU0odiwgaiwga2V5KTsKICAgICAgICAgICAgIGorKzsKICAgICAgICAgfQorICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOwogICAgIH0KICAgICBhc3NlcnQoaiA9PSBuKTsKICAgICByZXR1cm4gdjsKQEAgLTEyMzgsOCArMTU5MSw4IEBACiB7CiAgICAgcmVnaXN0ZXIgUHlPYmplY3QgKnY7CiAgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpLCBqOwotICAgIFB5RGljdEVudHJ5ICplcDsKLSAgICBQeV9zc2l6ZV90IG1hc2ssIG47CisgICAgUHlfc3NpemVfdCBzaXplLCBuLCBvZmZzZXQ7CisgICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKICAgYWdhaW46CiAgICAgbiA9IG1wLT5tYV91c2VkOwpAQCAtMTI1MywxMSArMTYwNiwxOSBAQAogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIGdvdG8gYWdhaW47CiAgICAgfQotICAgIGVwID0gbXAtPm1hX3RhYmxlOwotICAgIG1hc2sgPSBtcC0+bWFfbWFzazsKLSAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8PSBtYXNrOyBpKyspIHsKLSAgICAgICAgaWYgKGVwW2ldLm1lX3ZhbHVlICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IGVwW2ldLm1lX3ZhbHVlOworICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICBpZiAobXAtPm1hX3ZhbHVlcykgeworICAgICAgICB2YWx1ZV9wdHIgPSBtcC0+bWFfdmFsdWVzOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB2YWx1ZV9wdHIgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF0ubWVfdmFsdWU7CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgfQorICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9ICp2YWx1ZV9wdHI7CisgICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7CisgICAgICAgIGlmICh2YWx1ZSAhPSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgICAgICAgICAgUHlMaXN0X1NFVF9JVEVNKHYsIGosIHZhbHVlKTsKICAgICAgICAgICAgIGorKzsKQEAgLTEyNzIsOSArMTYzMywxMCBAQAogewogICAgIHJlZ2lzdGVyIFB5T2JqZWN0ICp2OwogICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaSwgaiwgbjsKLSAgICBQeV9zc2l6ZV90IG1hc2s7Ci0gICAgUHlPYmplY3QgKml0ZW0sICprZXksICp2YWx1ZTsKLSAgICBQeURpY3RFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBzaXplLCBvZmZzZXQ7CisgICAgUHlPYmplY3QgKml0ZW0sICprZXk7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCiAgICAgLyogUHJlYWxsb2NhdGUgdGhlIGxpc3Qgb2YgdHVwbGVzLCB0byBhdm9pZCBhbGxvY2F0aW9ucyBkdXJpbmcKICAgICAgKiB0aGUgbG9vcCBvdmVyIHRoZSBpdGVtcywgd2hpY2ggY291bGQgdHJpZ2dlciBHQywgd2hpY2gKQEAgLTEzMDEsMTAgKzE2NjMsMjAgQEAKICAgICAgICAgZ290byBhZ2FpbjsKICAgICB9CiAgICAgLyogTm90aGluZyB3ZSBkbyBiZWxvdyBtYWtlcyBhbnkgZnVuY3Rpb24gY2FsbHMuICovCi0gICAgZXAgPSBtcC0+bWFfdGFibGU7Ci0gICAgbWFzayA9IG1wLT5tYV9tYXNrOwotICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDw9IG1hc2s7IGkrKykgewotICAgICAgICBpZiAoKHZhbHVlPWVwW2ldLm1lX3ZhbHVlKSAhPSBOVUxMKSB7CisgICAgZXAgPSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllczsKKyAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKKyAgICAgICAgdmFsdWVfcHRyID0gbXAtPm1hX3ZhbHVlczsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJmVwWzBdLm1lX3ZhbHVlOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOworICAgIH0KKyAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSAqdmFsdWVfcHRyOworICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOworICAgICAgICBpZiAodmFsdWUgIT0gTlVMTCkgewogICAgICAgICAgICAga2V5ID0gZXBbaV0ubWVfa2V5OwogICAgICAgICAgICAgaXRlbSA9IFB5TGlzdF9HRVRfSVRFTSh2LCBqKTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwpAQCAtMTM0OSw4ICsxNzIxLDYgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgd2hpbGUgKF9QeURpY3RfTmV4dChzZXEsICZwb3MsICZrZXksICZvbGR2YWx1ZSwgJmhhc2gpKSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0ZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzNzAsOCArMTc0MCw2IEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHdoaWxlIChfUHlTZXRfTmV4dEVudHJ5KHNlcSwgJnBvcywgJmtleSwgJmhhc2gpKSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0ZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE0MjQsNyArMTc5Miw4IEBACiAgICAgICAgIHJlc3VsdCA9IC0xOwogCiAgICAgZWxzZSBpZiAoYXJnICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcoYXJnLCAia2V5cyIpKQorICAgICAgICBfUHlfSURFTlRJRklFUihrZXlzKTsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQoYXJnLCAmUHlJZF9rZXlzKSkKICAgICAgICAgICAgIHJlc3VsdCA9IFB5RGljdF9NZXJnZShzZWxmLCBhcmcsIDEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXN1bHQgPSBQeURpY3RfTWVyZ2VGcm9tU2VxMihzZWxmLCBhcmcsIDEpOwpAQCAtMTUzNiw4ICsxOTA1LDggQEAKIFB5RGljdF9NZXJnZShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIsIGludCBvdmVycmlkZSkKIHsKICAgICByZWdpc3RlciBQeURpY3RPYmplY3QgKm1wLCAqb3RoZXI7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpOwotICAgIFB5RGljdEVudHJ5ICplbnRyeTsKKyAgICByZWdpc3RlciBQeV9zc2l6ZV90IGksIG47CisgICAgUHlEaWN0S2V5RW50cnkgKmVudHJ5OwogCiAgICAgLyogV2UgYWNjZXB0IGZvciB0aGUgYXJndW1lbnQgZWl0aGVyIGEgY29uY3JldGUgZGljdGlvbmFyeSBvYmplY3QsCiAgICAgICogb3IgYW4gYWJzdHJhY3QgIm1hcHBpbmciIG9iamVjdC4gIEZvciB0aGUgZm9ybWVyLCB3ZSBjYW4gZG8KQEAgLTE1NjQsMjAgKzE5MzMsMjMgQEAKICAgICAgICAgICogaW5jcmVtZW50YWxseSByZXNpemluZyBhcyB3ZSBpbnNlcnQgbmV3IGl0ZW1zLiAgRXhwZWN0CiAgICAgICAgICAqIHRoYXQgdGhlcmUgd2lsbCBiZSBubyAob3IgZmV3KSBvdmVybGFwcGluZyBrZXlzLgogICAgICAgICAgKi8KLSAgICAgICAgaWYgKChtcC0+bWFfZmlsbCArIG90aGVyLT5tYV91c2VkKSozID49IChtcC0+bWFfbWFzaysxKSoyKSB7Ci0gICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCAobXAtPm1hX3VzZWQgKyBvdGhlci0+bWFfdXNlZCkqMikgIT0gMCkKKyAgICAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka191c2FibGUgKiAzIDwgb3RoZXItPm1hX3VzZWQgKiAyKQorICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIChtcC0+bWFfdXNlZCArIG90aGVyLT5tYV91c2VkKSoyKSAhPSAwKQogICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPD0gb3RoZXItPm1hX21hc2s7IGkrKykgewotICAgICAgICAgICAgZW50cnkgPSAmb3RoZXItPm1hX3RhYmxlW2ldOwotICAgICAgICAgICAgaWYgKGVudHJ5LT5tZV92YWx1ZSAhPSBOVUxMICYmCisgICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG90aGVyLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlOworICAgICAgICAgICAgZW50cnkgPSAmb3RoZXItPm1hX2tleXMtPmRrX2VudHJpZXNbaV07CisgICAgICAgICAgICBpZiAob3RoZXItPm1hX3ZhbHVlcykKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG90aGVyLT5tYV92YWx1ZXNbaV07CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdmFsdWUgPSBlbnRyeS0+bWVfdmFsdWU7CisKKyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBOVUxMICYmCiAgICAgICAgICAgICAgICAgKG92ZXJyaWRlIHx8CiAgICAgICAgICAgICAgICAgIFB5RGljdF9HZXRJdGVtKGEsIGVudHJ5LT5tZV9rZXkpID09IE5VTEwpKSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKGVudHJ5LT5tZV9rZXkpOwotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihlbnRyeS0+bWVfdmFsdWUpOwogICAgICAgICAgICAgICAgIGlmIChpbnNlcnRkaWN0KG1wLCBlbnRyeS0+bWVfa2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5tZV9oYXNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5tZV92YWx1ZSkgIT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSkgIT0gMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNjM5LDExICsyMDExLDM3IEBACiBQeURpY3RfQ29weShQeU9iamVjdCAqbykKIHsKICAgICBQeU9iamVjdCAqY29weTsKKyAgICBQeURpY3RPYmplY3QgKm1wOworICAgIFB5X3NzaXplX3QgaSwgbjsKIAogICAgIGlmIChvID09IE5VTEwgfHwgIVB5RGljdF9DaGVjayhvKSkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW87CisgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKKyAgICAgICAgUHlEaWN0T2JqZWN0ICpzcGxpdF9jb3B5OworICAgICAgICBQeU9iamVjdCAqKm5ld3ZhbHVlcyA9IG5ld192YWx1ZXMoREtfU0laRShtcC0+bWFfa2V5cykpOworICAgICAgICBpZiAobmV3dmFsdWVzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgc3BsaXRfY29weSA9IFB5T2JqZWN0X0dDX05ldyhQeURpY3RPYmplY3QsICZQeURpY3RfVHlwZSk7CisgICAgICAgIGlmIChzcGxpdF9jb3B5ID09IE5VTEwpIHsKKyAgICAgICAgICAgIGZyZWVfdmFsdWVzKG5ld3ZhbHVlcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzcGxpdF9jb3B5LT5tYV92YWx1ZXMgPSBuZXd2YWx1ZXM7CisgICAgICAgIHNwbGl0X2NvcHktPm1hX2tleXMgPSBtcC0+bWFfa2V5czsKKyAgICAgICAgc3BsaXRfY29weS0+bWFfdXNlZCA9IG1wLT5tYV91c2VkOworICAgICAgICBES19JTkNSRUYobXAtPm1hX2tleXMpOworICAgICAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShtcC0+bWFfa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IG1wLT5tYV92YWx1ZXNbaV07CisgICAgICAgICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKKyAgICAgICAgICAgIHNwbGl0X2NvcHktPm1hX3ZhbHVlc1tpXSA9IHZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlPYmplY3RfR0NfSVNfVFJBQ0tFRChtcCkpCisgICAgICAgICAgICBfUHlPYmplY3RfR0NfVFJBQ0soc3BsaXRfY29weSk7CisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilzcGxpdF9jb3B5OworICAgIH0KICAgICBjb3B5ID0gUHlEaWN0X05ldygpOwogICAgIGlmIChjb3B5ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTcwNSwxNCArMjEwMywxOCBAQAogICAgIGlmIChhLT5tYV91c2VkICE9IGItPm1hX3VzZWQpCiAgICAgICAgIC8qIGNhbid0IGJlIGVxdWFsIGlmICMgb2YgZW50cmllcyBkaWZmZXIgKi8KICAgICAgICAgcmV0dXJuIDA7Ci0KICAgICAvKiBTYW1lICMgb2YgZW50cmllcyAtLSBjaGVjayBhbGwgb2YgJ2VtLiAgRXhpdCBlYXJseSBvbiBhbnkgZGlmZi4gKi8KLSAgICBmb3IgKGkgPSAwOyBpIDw9IGEtPm1hX21hc2s7IGkrKykgewotICAgICAgICBQeU9iamVjdCAqYXZhbCA9IGEtPm1hX3RhYmxlW2ldLm1lX3ZhbHVlOworICAgIGZvciAoaSA9IDA7IGkgPCBES19TSVpFKGEtPm1hX2tleXMpOyBpKyspIHsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwID0gJmEtPm1hX2tleXMtPmRrX2VudHJpZXNbaV07CisgICAgICAgIFB5T2JqZWN0ICphdmFsOworICAgICAgICBpZiAoYS0+bWFfdmFsdWVzKQorICAgICAgICAgICAgYXZhbCA9IGEtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXZhbCA9IGVwLT5tZV92YWx1ZTsKICAgICAgICAgaWYgKGF2YWwgIT0gTlVMTCkgewogICAgICAgICAgICAgaW50IGNtcDsKICAgICAgICAgICAgIFB5T2JqZWN0ICpidmFsOwotICAgICAgICAgICAgUHlPYmplY3QgKmtleSA9IGEtPm1hX3RhYmxlW2ldLm1lX2tleTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBlcC0+bWVfa2V5OwogICAgICAgICAgICAgLyogdGVtcG9yYXJpbHkgYnVtcCBhdmFsJ3MgcmVmY291bnQgdG8gZW5zdXJlIGl0IHN0YXlzCiAgICAgICAgICAgICAgICBhbGl2ZSB1bnRpbCB3ZSdyZSBkb25lIHdpdGggaXQgKi8KICAgICAgICAgICAgIFB5X0lOQ1JFRihhdmFsKTsKQEAgLTE3MzMsNyArMjEzNSw3IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIDE7Ci0gfQorfQogCiBzdGF0aWMgUHlPYmplY3QgKgogZGljdF9yaWNoY29tcGFyZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncsIGludCBvcCkKQEAgLTE3NTQsMjQgKzIxNTYsMjUgQEAKICAgICAgICAgcmVzID0gUHlfTm90SW1wbGVtZW50ZWQ7CiAgICAgUHlfSU5DUkVGKHJlcyk7CiAgICAgcmV0dXJuIHJlczsKLSB9Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X2NvbnRhaW5zKHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXkpCiB7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlEaWN0RW50cnkgKmVwOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfbG9va3VwKShtcCwga2V5LCBoYXNoKTsKKyAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CiAgICAgaWYgKGVwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoZXAtPm1lX3ZhbHVlICE9IE5VTEwpOworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKnZhbHVlX2FkZHIgIT0gTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xNzgxLDI4ICsyMTg0LDI4IEBACiAgICAgUHlPYmplY3QgKmZhaWxvYmogPSBQeV9Ob25lOwogICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEVudHJ5ICplcDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZ2V0IiwgMSwgMiwgJmtleSwgJmZhaWxvYmopKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9sb29rdXApKG1wLCBrZXksIGhhc2gpOworICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKICAgICBpZiAoZXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdmFsID0gZXAtPm1lX3ZhbHVlOworICAgIHZhbCA9ICp2YWx1ZV9hZGRyOwogICAgIGlmICh2YWwgPT0gTlVMTCkKICAgICAgICAgdmFsID0gZmFpbG9iajsKICAgICBQeV9JTkNSRUYodmFsKTsKICAgICByZXR1cm4gdmFsOwogfQogCi0KIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X3NldGRlZmF1bHQocmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0xODEwLDI3ICsyMjEzLDQwIEBACiAgICAgUHlPYmplY3QgKmZhaWxvYmogPSBQeV9Ob25lOwogICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEVudHJ5ICplcDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic2V0ZGVmYXVsdCIsIDEsIDIsICZrZXksICZmYWlsb2JqKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfbG9va3VwKShtcCwga2V5LCBoYXNoKTsKKyAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CiAgICAgaWYgKGVwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHZhbCA9IGVwLT5tZV92YWx1ZTsKKyAgICB2YWwgPSAqdmFsdWVfYWRkcjsKICAgICBpZiAodmFsID09IE5VTEwpIHsKLSAgICAgICAgaWYgKGRpY3Rfc2V0X2l0ZW1fYnlfaGFzaF9vcl9lbnRyeSgoUHlPYmplY3QqKW1wLCBrZXksIGhhc2gsIGVwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxvYmopID09IDApCi0gICAgICAgICAgICB2YWwgPSBmYWlsb2JqOworICAgICAgICBpZiAobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA8PSAwKSB7CisgICAgICAgICAgICAvKiBOZWVkIHRvIHJlc2l6ZS4gKi8KKyAgICAgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBlcCA9IGZpbmRfZW1wdHlfc2xvdChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisgICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKGZhaWxvYmopOworICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgTUFJTlRBSU5fVFJBQ0tJTkcobXAsIGtleSwgZmFpbG9iaik7CisgICAgICAgIGVwLT5tZV9rZXkgPSBrZXk7CisgICAgICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSBmYWlsb2JqOworICAgICAgICB2YWwgPSBmYWlsb2JqOworICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlLS07CisgICAgICAgIG1wLT5tYV91c2VkKys7CiAgICAgfQotICAgIFB5X1hJTkNSRUYodmFsKTsKKyAgICBQeV9JTkNSRUYodmFsKTsKICAgICByZXR1cm4gdmFsOwogfQogCkBAIC0xODQ2LDkgKzIyNjIsMTAgQEAKIGRpY3RfcG9wKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEVudHJ5ICplcDsKICAgICBQeU9iamVjdCAqb2xkX3ZhbHVlLCAqb2xkX2tleTsKICAgICBQeU9iamVjdCAqa2V5LCAqZGVmbHQgPSBOVUxMOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZighUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInBvcCIsIDEsIDIsICZrZXksICZkZWZsdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTg2MSwxNSArMjI3OCwxNiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7CisgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwogICAgIGlmIChlcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoZXAtPm1lX3ZhbHVlID09IE5VTEwpIHsKKyAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKKyAgICBpZiAob2xkX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgaWYgKGRlZmx0KSB7CiAgICAgICAgICAgICBQeV9JTkNSRUYoZGVmbHQpOwogICAgICAgICAgICAgcmV0dXJuIGRlZmx0OwpAQCAtMTg3NywxMyArMjI5NSwxNSBAQAogICAgICAgICBzZXRfa2V5X2Vycm9yKGtleSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKLSAgICBQeV9JTkNSRUYoZHVtbXkpOwotICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKLSAgICBvbGRfdmFsdWUgPSBlcC0+bWVfdmFsdWU7Ci0gICAgZXAtPm1lX3ZhbHVlID0gTlVMTDsKKyAgICAqdmFsdWVfYWRkciA9IE5VTEw7CiAgICAgbXAtPm1hX3VzZWQtLTsKLSAgICBQeV9ERUNSRUYob2xkX2tleSk7CisgICAgaWYgKCFfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7CisgICAgICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKKyAgICAgICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7CisgICAgICAgIFB5X0lOQ1JFRihkdW1teSk7CisgICAgICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKKyAgICAgICAgUHlfREVDUkVGKG9sZF9rZXkpOworICAgIH0KICAgICByZXR1cm4gb2xkX3ZhbHVlOwogfQogCkBAIC0xODkxLDkgKzIzMTEsMTAgQEAKIGRpY3RfcG9waXRlbShQeURpY3RPYmplY3QgKm1wKQogewogICAgIFB5X2hhc2hfdCBpID0gMDsKLSAgICBQeURpY3RFbnRyeSAqZXA7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICpyZXM7CiAKKwogICAgIC8qIEFsbG9jYXRlIHRoZSByZXN1bHQgdHVwbGUgYmVmb3JlIGNoZWNraW5nIHRoZSBzaXplLiAgQmVsaWV2ZSBpdAogICAgICAqIG9yIG5vdCwgdGhpcyBhbGxvY2F0aW9uIGNvdWxkIHRyaWdnZXIgYSBnYXJiYWdlIGNvbGxlY3Rpb24gd2hpY2gKICAgICAgKiBjb3VsZCBlbXB0eSB0aGUgZGljdCwgc28gaWYgd2UgY2hlY2tlZCB0aGUgc2l6ZSBmaXJzdCBhbmQgdGhhdApAQCAtMTkxMiwyNSArMjMzMywzNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgInBvcGl0ZW0oKTogZGljdGlvbmFyeSBpcyBlbXB0eSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgLyogQ29udmVydCBzcGxpdCB0YWJsZSB0byBjb21iaW5lZCB0YWJsZSAqLworICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0X3NwbGl0KSB7CisgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBES19TSVpFKG1wLT5tYV9rZXlzKSkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOwogICAgIC8qIFNldCBlcCB0byAidGhlIGZpcnN0IiBkaWN0IGVudHJ5IHdpdGggYSB2YWx1ZS4gIFdlIGFidXNlIHRoZSBoYXNoCiAgICAgICogZmllbGQgb2Ygc2xvdCAwIHRvIGhvbGQgYSBzZWFyY2ggZmluZ2VyOgogICAgICAqIElmIHNsb3QgMCBoYXMgYSB2YWx1ZSwgdXNlIHNsb3QgMC4KICAgICAgKiBFbHNlIHNsb3QgMCBpcyBiZWluZyB1c2VkIHRvIGhvbGQgYSBzZWFyY2ggZmluZ2VyLAogICAgICAqIGFuZCB3ZSB1c2UgaXRzIGhhc2ggdmFsdWUgYXMgdGhlIGZpcnN0IGluZGV4IHRvIGxvb2suCiAgICAgICovCi0gICAgZXAgPSAmbXAtPm1hX3RhYmxlWzBdOworICAgIGVwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOwogICAgIGlmIChlcC0+bWVfdmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeV9zc2l6ZV90IG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKICAgICAgICAgaSA9IGVwLT5tZV9oYXNoOwogICAgICAgICAvKiBUaGUgaGFzaCBmaWVsZCBtYXkgYmUgYSByZWFsIGhhc2ggdmFsdWUsIG9yIGl0IG1heSBiZSBhCiAgICAgICAgICAqIGxlZ2l0IHNlYXJjaCBmaW5nZXIsIG9yIGl0IG1heSBiZSBhIG9uY2UtbGVnaXQgc2VhcmNoCiAgICAgICAgICAqIGZpbmdlciB0aGF0J3Mgb3V0IG9mIGJvdW5kcyBub3cgYmVjYXVzZSBpdCB3cmFwcGVkIGFyb3VuZAogICAgICAgICAgKiBvciB0aGUgdGFibGUgc2hydW5rIC0tIHNpbXBseSBtYWtlIHN1cmUgaXQncyBpbiBib3VuZHMgbm93LgogICAgICAgICAgKi8KLSAgICAgICAgaWYgKGkgPiBtcC0+bWFfbWFzayB8fCBpIDwgMSkKKyAgICAgICAgaWYgKGkgPiBtYXNrIHx8IGkgPCAxKQogICAgICAgICAgICAgaSA9IDE7ICAgICAgICAgICAgICAvKiBza2lwIHNsb3QgMCAqLwotICAgICAgICB3aGlsZSAoKGVwID0gJm1wLT5tYV90YWJsZVtpXSktPm1lX3ZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgd2hpbGUgKChlcCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXSktPm1lX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgIGlmIChpID4gbXAtPm1hX21hc2spCisgICAgICAgICAgICBpZiAoaSA+IG1hc2spCiAgICAgICAgICAgICAgICAgaSA9IDE7CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTQwLDIxICsyMzcwLDM0IEBACiAgICAgZXAtPm1lX2tleSA9IGR1bW15OwogICAgIGVwLT5tZV92YWx1ZSA9IE5VTEw7CiAgICAgbXAtPm1hX3VzZWQtLTsKLSAgICBhc3NlcnQobXAtPm1hX3RhYmxlWzBdLm1lX3ZhbHVlID09IE5VTEwpOwotICAgIG1wLT5tYV90YWJsZVswXS5tZV9oYXNoID0gaSArIDE7ICAvKiBuZXh0IHBsYWNlIHRvIHN0YXJ0ICovCisgICAgYXNzZXJ0KG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdLm1lX3ZhbHVlID09IE5VTEwpOworICAgIG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdLm1lX2hhc2ggPSBpICsgMTsgIC8qIG5leHQgcGxhY2UgdG8gc3RhcnQgKi8KICAgICByZXR1cm4gcmVzOwogfQogCiBzdGF0aWMgaW50CiBkaWN0X3RyYXZlcnNlKFB5T2JqZWN0ICpvcCwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7Ci0gICAgUHlfc3NpemVfdCBpID0gMDsKLSAgICBQeU9iamVjdCAqcGs7Ci0gICAgUHlPYmplY3QgKnB2OwotCi0gICAgd2hpbGUgKFB5RGljdF9OZXh0KG9wLCAmaSwgJnBrLCAmcHYpKSB7Ci0gICAgICAgIFB5X1ZJU0lUKHBrKTsKLSAgICAgICAgUHlfVklTSVQocHYpOworICAgIFB5X3NzaXplX3QgaSwgbjsKKyAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKW9wOworICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0KSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSsrKSB7CisgICAgICAgICAgICBpZiAobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWUgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X1ZJU0lUKG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBQeV9WSVNJVChtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV9rZXkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG1wLT5tYV92YWx1ZXMgIT0gTlVMTCkgeworICAgICAgICAgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUobXAtPm1hX2tleXMpOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgUHlfVklTSVQobXAtPm1hX3ZhbHVlc1tpXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShtcC0+bWFfa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBQeV9WSVNJVChtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0xOTcxLDE0ICsyNDE0LDI1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGljdF9zaXplb2YoUHlEaWN0T2JqZWN0ICptcCkKIHsKLSAgICBQeV9zc2l6ZV90IHJlczsKKyAgICBQeV9zc2l6ZV90IHNpemUsIHJlczsKIAorICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKICAgICByZXMgPSBzaXplb2YoUHlEaWN0T2JqZWN0KTsKLSAgICBpZiAobXAtPm1hX3RhYmxlICE9IG1wLT5tYV9zbWFsbHRhYmxlKQotICAgICAgICByZXMgPSByZXMgKyAobXAtPm1hX21hc2sgKyAxKSAqIHNpemVvZihQeURpY3RFbnRyeSk7CisgICAgaWYgKG1wLT5tYV92YWx1ZXMpCisgICAgICAgIHJlcyArPSBzaXplICogc2l6ZW9mKFB5T2JqZWN0Kik7CisgICAgLyogSWYgdGhlIGRpY3Rpb25hcnkgaXMgc3BsaXQsIHRoZSBrZXlzIHBvcnRpb24gaXMgYWNjb3VudGVkLWZvcgorICAgICAgIGluIHRoZSB0eXBlIG9iamVjdC4gKi8KKyAgICBpZiAobXAtPm1hX2tleXMtPmRrX3JlZmNudCA9PSAxKQorICAgICAgICByZXMgKz0gc2l6ZW9mKFB5RGljdEtleXNPYmplY3QpICsgKHNpemUtMSkgKiBzaXplb2YoUHlEaWN0S2V5RW50cnkpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzKTsKIH0KIAorUHlfc3NpemVfdAorX1B5RGljdF9LZXlzU2l6ZShQeURpY3RLZXlzT2JqZWN0ICprZXlzKQoreworICAgIHJldHVybiBzaXplb2YoUHlEaWN0S2V5c09iamVjdCkgKyAoREtfU0laRShrZXlzKS0xKSAqIHNpemVvZihQeURpY3RLZXlFbnRyeSk7Cit9CisKIFB5RG9jX1NUUlZBUihjb250YWluc19fZG9jX18sCiAiRC5fX2NvbnRhaW5zX18oaykgLT4gVHJ1ZSBpZiBEIGhhcyBhIGtleSBrLCBlbHNlIEZhbHNlIik7CiAKQEAgLTIwNjcsMTYgKzI1MjEsMTcgQEAKIHsKICAgICBQeV9oYXNoX3QgaGFzaDsKICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIFB5RGljdEVudHJ5ICplcDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9sb29rdXApKG1wLCBrZXksIGhhc2gpOwotICAgIHJldHVybiBlcCA9PSBOVUxMID8gLTEgOiAoZXAtPm1lX3ZhbHVlICE9IE5VTEwpOworICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKyAgICByZXR1cm4gKGVwID09IE5VTEwpID8gLTEgOiAoKnZhbHVlX2FkZHIgIT0gTlVMTCk7CiB9CiAKIC8qIEludGVybmFsIHZlcnNpb24gb2YgUHlEaWN0X0NvbnRhaW5zIHVzZWQgd2hlbiB0aGUgaGFzaCB2YWx1ZSBpcyBhbHJlYWR5IGtub3duICovCkBAIC0yMDg0LDEwICsyNTM5LDExIEBACiBfUHlEaWN0X0NvbnRhaW5zKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCiB7CiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBQeURpY3RFbnRyeSAqZXA7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAotICAgIGVwID0gKG1wLT5tYV9sb29rdXApKG1wLCBrZXksIGhhc2gpOwotICAgIHJldHVybiBlcCA9PSBOVUxMID8gLTEgOiAoZXAtPm1lX3ZhbHVlICE9IE5VTEwpOworICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKyAgICByZXR1cm4gKGVwID09IE5VTEwpID8gLTEgOiAoKnZhbHVlX2FkZHIgIT0gTlVMTCk7CiB9CiAKIC8qIEhhY2sgdG8gaW1wbGVtZW50ICJrZXkgaW4gZGljdCIgKi8KQEAgLTIxMTMsMjIgKzI1NjksMTcgQEAKICAgICBzZWxmID0gdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CiAgICAgaWYgKHNlbGYgIT0gTlVMTCkgewogICAgICAgICBQeURpY3RPYmplY3QgKmQgPSAoUHlEaWN0T2JqZWN0ICopc2VsZjsKLSAgICAgICAgLyogSXQncyBndWFyYW50ZWVkIHRoYXQgdHAtPmFsbG9jIHplcm9lZCBvdXQgdGhlIHN0cnVjdC4gKi8KLSAgICAgICAgYXNzZXJ0KGQtPm1hX3RhYmxlID09IE5VTEwgJiYgZC0+bWFfZmlsbCA9PSAwICYmIGQtPm1hX3VzZWQgPT0gMCk7Ci0gICAgICAgIElOSVRfTk9OWkVST19ESUNUX1NMT1RTKGQpOwotICAgICAgICBkLT5tYV9sb29rdXAgPSBsb29rZGljdF91bmljb2RlOworICAgICAgICBkLT5tYV9rZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEKTsKKyAgICAgICAgLyogWFhYIC0gU2hvdWxkIHdlIHJhaXNlIGEgbm8tbWVtb3J5IGVycm9yPyAqLworICAgICAgICBpZiAoZC0+bWFfa2V5cyA9PSBOVUxMKSB7CisgICAgICAgICAgICBES19JTkNSRUYoUHlfRU1QVFlfS0VZUyk7CisgICAgICAgICAgICBkLT5tYV9rZXlzID0gUHlfRU1QVFlfS0VZUzsKKyAgICAgICAgICAgIGQtPm1hX3ZhbHVlcyA9IGVtcHR5X3ZhbHVlczsKKyAgICAgICAgfQorICAgICAgICBkLT5tYV91c2VkID0gMDsKICAgICAgICAgLyogVGhlIG9iamVjdCBoYXMgYmVlbiBpbXBsaWNpdGx5IHRyYWNrZWQgYnkgdHBfYWxsb2MgKi8KICAgICAgICAgaWYgKHR5cGUgPT0gJlB5RGljdF9UeXBlKQogICAgICAgICAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soZCk7Ci0jaWZkZWYgU0hPV19DT05WRVJTSU9OX0NPVU5UUwotICAgICAgICArK2NyZWF0ZWQ7Ci0jZW5kaWYKLSNpZmRlZiBTSE9XX1RSQUNLX0NPVU5UCi0gICAgICAgIGlmIChfUHlPYmplY3RfR0NfSVNfVFJBQ0tFRChkKSkKLSAgICAgICAgICAgIGNvdW50X3RyYWNrZWQrKzsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY291bnRfdW50cmFja2VkKys7Ci0jZW5kaWYKICAgICB9CiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0yMTk5LDYgKzI2NTAsMTYgQEAKICAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKK1B5T2JqZWN0ICoKK19QeURpY3RfR2V0SXRlbUlkKFB5T2JqZWN0ICpkcCwgc3RydWN0IF9QeV9JZGVudGlmaWVyICprZXkpCit7CisgICAgUHlPYmplY3QgKmt2OworICAgIGt2ID0gX1B5VW5pY29kZV9Gcm9tSWQoa2V5KTsgLyogYm9ycm93ZWQgKi8KKyAgICBpZiAoa3YgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5RGljdF9HZXRJdGVtKGRwLCBrdik7Cit9CisKIC8qIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGRpY3Rpb25hcnkgaW50ZXJmYWNlICovCiAKIFB5T2JqZWN0ICoKQEAgLTIyMTQsNiArMjY3NSwxNiBAQAogfQogCiBpbnQKK19QeURpY3RfU2V0SXRlbUlkKFB5T2JqZWN0ICp2LCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSwgUHlPYmplY3QgKml0ZW0pCit7CisgICAgUHlPYmplY3QgKmt2OworICAgIGt2ID0gX1B5VW5pY29kZV9Gcm9tSWQoa2V5KTsgLyogYm9ycm93ZWQgKi8KKyAgICBpZiAoa3YgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiBQeURpY3RfU2V0SXRlbSh2LCBrdiwgaXRlbSk7Cit9CisKK2ludAogUHlEaWN0X1NldEl0ZW1TdHJpbmcoUHlPYmplY3QgKnYsIGNvbnN0IGNoYXIgKmtleSwgUHlPYmplY3QgKml0ZW0pCiB7CiAgICAgUHlPYmplY3QgKmt2OwpAQCAtMjMwNCwxOCArMjc3NSwyNiBAQAogUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywKICAgICAgICAgICAgICAiUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCitkaWN0aXRlcl9yZWR1Y2UoZGljdGl0ZXJvYmplY3QgKmRpKTsKKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCiBzdGF0aWMgUHlNZXRob2REZWYgZGljdGl0ZXJfbWV0aG9kc1tdID0gewogICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKWRpY3RpdGVyX2xlbiwgTUVUSF9OT0FSR1MsCiAgICAgIGxlbmd0aF9oaW50X2RvY30sCisgICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilkaWN0aXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAogc3RhdGljIFB5T2JqZWN0ICpkaWN0aXRlcl9pdGVybmV4dGtleShkaWN0aXRlcm9iamVjdCAqZGkpCiB7CiAgICAgUHlPYmplY3QgKmtleTsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IGksIG1hc2s7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOworICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaSwgbWFzaywgb2Zmc2V0OworICAgIHJlZ2lzdGVyIFB5RGljdEtleXNPYmplY3QgKms7CiAgICAgUHlEaWN0T2JqZWN0ICpkID0gZGktPmRpX2RpY3Q7CisgICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKICAgICBpZiAoZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIzMzEsMTUgKzI4MTAsMjUgQEAKICAgICBpID0gZGktPmRpX3BvczsKICAgICBpZiAoaSA8IDApCiAgICAgICAgIGdvdG8gZmFpbDsKLSAgICBlcCA9IGQtPm1hX3RhYmxlOwotICAgIG1hc2sgPSBkLT5tYV9tYXNrOwotICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgZXBbaV0ubWVfdmFsdWUgPT0gTlVMTCkKKyAgICBrID0gZC0+bWFfa2V5czsKKyAgICBpZiAoZC0+bWFfdmFsdWVzKSB7CisgICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHZhbHVlX3B0ciA9ICZrLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOworICAgIH0KKyAgICBtYXNrID0gREtfU0laRShrKS0xOworICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CisgICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7CiAgICAgICAgIGkrKzsKKyAgICB9CiAgICAgZGktPmRpX3BvcyA9IGkrMTsKICAgICBpZiAoaSA+IG1hc2spCiAgICAgICAgIGdvdG8gZmFpbDsKICAgICBkaS0+bGVuLS07Ci0gICAga2V5ID0gZXBbaV0ubWVfa2V5OworICAgIGtleSA9IGstPmRrX2VudHJpZXNbaV0ubWVfa2V5OwogICAgIFB5X0lOQ1JFRihrZXkpOwogICAgIHJldHVybiBrZXk7CiAKQEAgLTIzODUsOSArMjg3NCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKmRpY3RpdGVyX2l0ZXJuZXh0dmFsdWUoZGljdGl0ZXJvYmplY3QgKmRpKQogewogICAgIFB5T2JqZWN0ICp2YWx1ZTsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IGksIG1hc2s7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOworICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaSwgbWFzaywgb2Zmc2V0OwogICAgIFB5RGljdE9iamVjdCAqZCA9IGRpLT5kaV9kaWN0OworICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCiAgICAgaWYgKGQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNDAxLDE3ICsyODkwLDI2IEBACiAgICAgfQogCiAgICAgaSA9IGRpLT5kaV9wb3M7Ci0gICAgbWFzayA9IGQtPm1hX21hc2s7CisgICAgbWFzayA9IERLX1NJWkUoZC0+bWFfa2V5cyktMTsKICAgICBpZiAoaSA8IDAgfHwgaSA+IG1hc2spCiAgICAgICAgIGdvdG8gZmFpbDsKLSAgICBlcCA9IGQtPm1hX3RhYmxlOwotICAgIHdoaWxlICgodmFsdWU9ZXBbaV0ubWVfdmFsdWUpID09IE5VTEwpIHsKKyAgICBpZiAoZC0+bWFfdmFsdWVzKSB7CisgICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOworICAgIH0KKyAgICB3aGlsZSAoaSA8PSBtYXNrICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgeworICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOwogICAgICAgICBpKys7CiAgICAgICAgIGlmIChpID4gbWFzaykKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAgICAgZGktPmRpX3BvcyA9IGkrMTsKICAgICBkaS0+bGVuLS07CisgICAgdmFsdWUgPSAqdmFsdWVfcHRyOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7CiAgICAgcmV0dXJuIHZhbHVlOwogCkBAIC0yNDU3LDkgKzI5NTUsOSBAQAogc3RhdGljIFB5T2JqZWN0ICpkaWN0aXRlcl9pdGVybmV4dGl0ZW0oZGljdGl0ZXJvYmplY3QgKmRpKQogewogICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZSwgKnJlc3VsdCA9IGRpLT5kaV9yZXN1bHQ7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpLCBtYXNrOwotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICplcDsKKyAgICByZWdpc3RlciBQeV9zc2l6ZV90IGksIG1hc2ssIG9mZnNldDsKICAgICBQeURpY3RPYmplY3QgKmQgPSBkaS0+ZGlfZGljdDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKIAogICAgIGlmIChkID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjQ3NSwxMCArMjk3MywxOSBAQAogICAgIGkgPSBkaS0+ZGlfcG9zOwogICAgIGlmIChpIDwgMCkKICAgICAgICAgZ290byBmYWlsOwotICAgIGVwID0gZC0+bWFfdGFibGU7Ci0gICAgbWFzayA9IGQtPm1hX21hc2s7Ci0gICAgd2hpbGUgKGkgPD0gbWFzayAmJiBlcFtpXS5tZV92YWx1ZSA9PSBOVUxMKQorICAgIG1hc2sgPSBES19TSVpFKGQtPm1hX2tleXMpLTE7CisgICAgaWYgKGQtPm1hX3ZhbHVlcykgeworICAgICAgICB2YWx1ZV9wdHIgPSAmZC0+bWFfdmFsdWVzW2ldOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB2YWx1ZV9wdHIgPSAmZC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZTsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKKyAgICB9CisgICAgd2hpbGUgKGkgPD0gbWFzayAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKKyAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKICAgICAgICAgaSsrOworICAgIH0KICAgICBkaS0+ZGlfcG9zID0gaSsxOwogICAgIGlmIChpID4gbWFzaykKICAgICAgICAgZ290byBmYWlsOwpAQCAtMjQ5Myw4ICszMDAwLDggQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBkaS0+bGVuLS07Ci0gICAga2V5ID0gZXBbaV0ubWVfa2V5OwotICAgIHZhbHVlID0gZXBbaV0ubWVfdmFsdWU7CisgICAga2V5ID0gZC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV9rZXk7CisgICAgdmFsdWUgPSAqdmFsdWVfcHRyOwogICAgIFB5X0lOQ1JFRihrZXkpOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7CiAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIDAsIGtleSk7CkBAIC0yNTQxLDYgKzMwNDgsNTIgQEAKIH07CiAKIAorc3RhdGljIFB5T2JqZWN0ICoKK2RpY3RpdGVyX3JlZHVjZShkaWN0aXRlcm9iamVjdCAqZGkpCit7CisgICAgUHlPYmplY3QgKmxpc3Q7CisgICAgZGljdGl0ZXJvYmplY3QgdG1wOworCisgICAgbGlzdCA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKCFsaXN0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIGNvcHkgdGhlIGl0ZXJ0b3Igc3RhdGUgKi8KKyAgICB0bXAgPSAqZGk7CisgICAgUHlfWElOQ1JFRih0bXAuZGlfZGljdCk7CisKKyAgICAvKiBpdGVyYXRlIHRoZSB0ZW1wb3JhcnkgaW50byBhIGxpc3QgKi8KKyAgICBmb3IoOzspIHsKKyAgICAgICAgUHlPYmplY3QgKmVsZW1lbnQgPSAwOworICAgICAgICBpZiAoUHlfVFlQRShkaSkgPT0gJlB5RGljdEl0ZXJJdGVtX1R5cGUpCisgICAgICAgICAgICBlbGVtZW50ID0gZGljdGl0ZXJfaXRlcm5leHRpdGVtKCZ0bXApOworICAgICAgICBlbHNlIGlmIChQeV9UWVBFKGRpKSA9PSAmUHlEaWN0SXRlcktleV9UeXBlKQorICAgICAgICAgICAgZWxlbWVudCA9IGRpY3RpdGVyX2l0ZXJuZXh0a2V5KCZ0bXApOworICAgICAgICBlbHNlIGlmIChQeV9UWVBFKGRpKSA9PSAmUHlEaWN0SXRlclZhbHVlX1R5cGUpCisgICAgICAgICAgICBlbGVtZW50ID0gZGljdGl0ZXJfaXRlcm5leHR2YWx1ZSgmdG1wKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KDApOworICAgICAgICBpZiAoZWxlbWVudCkgeworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbWVudCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wLmRpX2RpY3QpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKGVsZW1lbnQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBQeV9YREVDUkVGKHRtcC5kaV9kaWN0KTsKKyAgICAvKiBjaGVjayBmb3IgZXJyb3IgKi8KKyAgICBpZiAodG1wLmRpX2RpY3QgIT0gTlVMTCkgeworICAgICAgICAvKiB3ZSBoYXZlIGFuIGVycm9yICovCisgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE4pIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwgbGlzdCk7Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qIFZpZXcgb2JqZWN0cyBmb3Iga2V5cygpLCBpdGVtcygpLCB2YWx1ZXMoKS4gKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTI2NDUsMTAgKzMxOTgsOCBAQAogICAgIGFzc2VydChQeURpY3RWaWV3U2V0X0NoZWNrKHNlbGYpKTsKICAgICBhc3NlcnQob3RoZXIgIT0gTlVMTCk7CiAKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSAmJiAhUHlEaWN0Vmlld1NldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSAmJiAhUHlEaWN0Vmlld1NldF9DaGVjayhvdGhlcikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAogICAgIGxlbl9zZWxmID0gUHlPYmplY3RfU2l6ZShzZWxmKTsKICAgICBpZiAobGVuX3NlbGYgPCAwKQpAQCAtMjc0NiwxMCArMzI5NywxMiBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeVNldF9OZXcoc2VsZik7CiAgICAgUHlPYmplY3QgKnRtcDsKKyAgICBfUHlfSURFTlRJRklFUihkaWZmZXJlbmNlX3VwZGF0ZSk7CisKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChyZXN1bHQsICJkaWZmZXJlbmNlX3VwZGF0ZSIsICJPIiwgb3RoZXIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmVzdWx0LCAmUHlJZF9kaWZmZXJlbmNlX3VwZGF0ZSwgIk8iLCBvdGhlcik7CiAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI3NjQsMTAgKzMzMTcsMTIgQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlTZXRfTmV3KHNlbGYpOwogICAgIFB5T2JqZWN0ICp0bXA7CisgICAgX1B5X0lERU5USUZJRVIoaW50ZXJzZWN0aW9uX3VwZGF0ZSk7CisKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChyZXN1bHQsICJpbnRlcnNlY3Rpb25fdXBkYXRlIiwgIk8iLCBvdGhlcik7CisgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyZXN1bHQsICZQeUlkX2ludGVyc2VjdGlvbl91cGRhdGUsICJPIiwgb3RoZXIpOwogICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNzgyLDEwICszMzM3LDEyIEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5U2V0X05ldyhzZWxmKTsKICAgICBQeU9iamVjdCAqdG1wOworICAgIF9QeV9JREVOVElGSUVSKHVwZGF0ZSk7CisKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChyZXN1bHQsICJ1cGRhdGUiLCAiTyIsIG90aGVyKTsKKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJlc3VsdCwgJlB5SWRfdXBkYXRlLCAiTyIsIG90aGVyKTsKICAgICBpZiAodG1wID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjgwMCwxMCArMzM1NywxMiBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeVNldF9OZXcoc2VsZik7CiAgICAgUHlPYmplY3QgKnRtcDsKKyAgICBfUHlfSURFTlRJRklFUihzeW1tZXRyaWNfZGlmZmVyZW5jZV91cGRhdGUpOworCiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QocmVzdWx0LCAic3ltbWV0cmljX2RpZmZlcmVuY2VfdXBkYXRlIiwgIk8iLAorICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmVzdWx0LCAmUHlJZF9zeW1tZXRyaWNfZGlmZmVyZW5jZV91cGRhdGUsICJPIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyKTsKICAgICBpZiAodG1wID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CkBAIC0zMDgyLDMgKzM2NDEsMTUxIEBACiB7CiAgICAgcmV0dXJuIGRpY3R2aWV3X25ldyhkaWN0LCAmUHlEaWN0VmFsdWVzX1R5cGUpOwogfQorCisvKiBSZXR1cm5zIE5VTEwgaWYgY2Fubm90IGFsbG9jYXRlIGEgbmV3IFB5RGljdEtleXNPYmplY3QsCisgICBidXQgZG9lcyBub3Qgc2V0IGFuIGVycm9yICovCitQeURpY3RLZXlzT2JqZWN0ICoKK19QeURpY3RfTmV3S2V5c0ZvckNsYXNzKHZvaWQpCit7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRV9TUExJVCk7CisgICAgaWYgKGtleXMgPT0gTlVMTCkKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICBlbHNlCisgICAgICAgIGtleXMtPmRrX2xvb2t1cCA9IGxvb2tkaWN0X3NwbGl0OworICAgIHJldHVybiBrZXlzOworfQorCisjZGVmaW5lIENBQ0hFRF9LRVlTKHRwKSAoKChQeUhlYXBUeXBlT2JqZWN0Kil0cCktPmh0X2NhY2hlZF9rZXlzKQorCitQeU9iamVjdCAqCitQeU9iamVjdF9HZW5lcmljR2V0RGljdChQeU9iamVjdCAqb2JqLCB2b2lkICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkaWN0LCAqKmRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihvYmopOworICAgIGlmIChkaWN0cHRyID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgb2JqZWN0IGhhcyBubyBfX2RpY3RfXyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZGljdCA9ICpkaWN0cHRyOworICAgIGlmIChkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlUeXBlT2JqZWN0ICp0cCA9IFB5X1RZUEUob2JqKTsKKyAgICAgICAgaWYgKCh0cC0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSAmJiBDQUNIRURfS0VZUyh0cCkpIHsKKyAgICAgICAgICAgIERLX0lOQ1JFRihDQUNIRURfS0VZUyh0cCkpOworICAgICAgICAgICAgKmRpY3RwdHIgPSBkaWN0ID0gbmV3X2RpY3Rfd2l0aF9zaGFyZWRfa2V5cyhDQUNIRURfS0VZUyh0cCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgKmRpY3RwdHIgPSBkaWN0ID0gUHlEaWN0X05ldygpOworICAgICAgICB9CisgICAgfQorICAgIFB5X1hJTkNSRUYoZGljdCk7CisgICAgcmV0dXJuIGRpY3Q7Cit9CisKK2ludAorX1B5T2JqZWN0RGljdF9TZXRJdGVtKFB5VHlwZU9iamVjdCAqdHAsIFB5T2JqZWN0ICoqZGljdHB0ciwKKyAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBQeU9iamVjdCAqZGljdDsKKyAgICBpbnQgcmVzOworICAgIFB5RGljdEtleXNPYmplY3QgKmNhY2hlZDsKKworICAgIGFzc2VydChkaWN0cHRyICE9IE5VTEwpOworICAgIGlmICgodHAtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkgJiYgKGNhY2hlZCA9IENBQ0hFRF9LRVlTKHRwKSkpIHsKKyAgICAgICAgYXNzZXJ0KGRpY3RwdHIgIT0gTlVMTCk7CisgICAgICAgIGRpY3QgPSAqZGljdHB0cjsKKyAgICAgICAgaWYgKGRpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgREtfSU5DUkVGKGNhY2hlZCk7CisgICAgICAgICAgICBkaWN0ID0gbmV3X2RpY3Rfd2l0aF9zaGFyZWRfa2V5cyhjYWNoZWQpOworICAgICAgICAgICAgaWYgKGRpY3QgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAqZGljdHB0ciA9IGRpY3Q7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJlcyA9IFB5RGljdF9EZWxJdGVtKGRpY3QsIGtleSk7CisgICAgICAgICAgICBpZiAoY2FjaGVkICE9ICgoUHlEaWN0T2JqZWN0ICopZGljdCktPm1hX2tleXMpIHsKKyAgICAgICAgICAgICAgICBDQUNIRURfS0VZUyh0cCkgPSBOVUxMOworICAgICAgICAgICAgICAgIERLX0RFQ1JFRihjYWNoZWQpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzID0gUHlEaWN0X1NldEl0ZW0oZGljdCwga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAoY2FjaGVkICE9ICgoUHlEaWN0T2JqZWN0ICopZGljdCktPm1hX2tleXMpIHsKKyAgICAgICAgICAgICAgICAvKiBFaXRoZXIgdXBkYXRlIHRwLT5odF9jYWNoZWRfa2V5cyBvciBkZWxldGUgaXQgKi8KKyAgICAgICAgICAgICAgICBpZiAoY2FjaGVkLT5ka19yZWZjbnQgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICBDQUNIRURfS0VZUyh0cCkgPSBtYWtlX2tleXNfc2hhcmVkKGRpY3QpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIENBQ0hFRF9LRVlTKHRwKSA9IE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIERLX0RFQ1JFRihjYWNoZWQpOworICAgICAgICAgICAgICAgIGlmIChDQUNIRURfS0VZUyh0cCkgPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBkaWN0ID0gKmRpY3RwdHI7CisgICAgICAgIGlmIChkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgICAgICAgICBpZiAoZGljdCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICpkaWN0cHRyID0gZGljdDsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICAgICAgcmVzID0gUHlEaWN0X0RlbEl0ZW0oZGljdCwga2V5KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtKGRpY3QsIGtleSwgdmFsdWUpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXM7Cit9CisKK3ZvaWQKK19QeURpY3RLZXlzX0RlY1JlZihQeURpY3RLZXlzT2JqZWN0ICprZXlzKQoreworICAgIERLX0RFQ1JFRihrZXlzKTsKK30KKworCisvKiBBUkdTVVNFRCAqLworc3RhdGljIFB5T2JqZWN0ICoKK2R1bW15X3JlcHIoUHlPYmplY3QgKm9wKQoreworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygiPGR1bW15IGtleT4iKTsKK30KKworLyogQVJHVVNFRCAqLworc3RhdGljIHZvaWQKK2R1bW15X2RlYWxsb2MoUHlPYmplY3QqIGlnbm9yZSkKK3sKKyAgICAvKiBUaGlzIHNob3VsZCBuZXZlciBnZXQgY2FsbGVkLCBidXQgd2UgYWxzbyBkb24ndCB3YW50IHRvIFNFR1YgaWYKKyAgICAgKiB3ZSBhY2NpZGVudGFsbHkgZGVjcmVmIGR1bW15LWtleSBvdXQgb2YgZXhpc3RlbmNlLgorICAgICAqLworICAgIFB5X0ZhdGFsRXJyb3IoImRlYWxsb2NhdGluZyA8ZHVtbXkga2V5PiIpOworfQorCitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGljdER1bW15X1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAiPGR1bW15IGtleT4gdHlwZSIsCisgICAgMCwKKyAgICAwLAorICAgIGR1bW15X2RlYWxsb2MsICAgICAgLyp0cF9kZWFsbG9jKi8gLypuZXZlciBjYWxsZWQqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLworICAgIGR1bW15X3JlcHIsICAgICAgICAgLyp0cF9yZXByKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsIC8qdHBfZmxhZ3MgKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCBfZHVtbXlfc3RydWN0ID0geworICBfUHlPYmplY3RfRVhUUkFfSU5JVAorICAyLCAmUHlEaWN0RHVtbXlfVHlwZQorfTsKKwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9lbnVtb2JqZWN0LmMgYi9PYmplY3RzL2VudW1vYmplY3QuYwppbmRleCAwMGEzMzQ2Li5jNDU4Y2ZlIDEwMDY0NAotLS0gYS9PYmplY3RzL2VudW1vYmplY3QuYworKysgYi9PYmplY3RzL2VudW1vYmplY3QuYwpAQCAtMTU4LDYgKzE1OCwyMiBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitlbnVtX3JlZHVjZShlbnVtb2JqZWN0ICplbikKK3sKKyAgICBpZiAoZW4tPmVuX2xvbmdpbmRleCAhPSBOVUxMKQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGVuKSwgZW4tPmVuX3NpdCwgZW4tPmVuX2xvbmdpbmRleCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPbikiLCBQeV9UWVBFKGVuKSwgZW4tPmVuX3NpdCwgZW4tPmVuX2luZGV4KTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlNZXRob2REZWYgZW51bV9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWVudW1fcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihlbnVtX2RvYywKICJlbnVtZXJhdGUoaXRlcmFibGVbLCBzdGFydF0pIC0+IGl0ZXJhdG9yIGZvciBpbmRleCwgdmFsdWUgb2YgaXRlcmFibGVcbiIKICJcbiIKQEAgLTE5Nyw3ICsyMTMsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyllbnVtX25leHQsICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGVudW1fbWV0aG9kcywgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0yMjQsOCArMjQwLDggQEAKIHsKICAgICBQeV9zc2l6ZV90IG47CiAgICAgUHlPYmplY3QgKnNlcSwgKnJldmVyc2VkX21ldGg7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpyZXZlcnNlZF9jYWNoZSA9IE5VTEw7CiAgICAgcmV2ZXJzZWRvYmplY3QgKnJvOworICAgIF9QeV9JREVOVElGSUVSKF9fcmV2ZXJzZWRfXyk7CiAKICAgICBpZiAodHlwZSA9PSAmUHlSZXZlcnNlZF9UeXBlICYmICFfUHlBcmdfTm9LZXl3b3JkcygicmV2ZXJzZWQoKSIsIGt3ZHMpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIzMyw3ICsyNDksNyBAQAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJldmVyc2VkIiwgMSwgMSwgJnNlcSkgKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldmVyc2VkX21ldGggPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChzZXEsICJfX3JldmVyc2VkX18iLCAmcmV2ZXJzZWRfY2FjaGUpOworICAgIHJldmVyc2VkX21ldGggPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChzZXEsICZQeUlkX19fcmV2ZXJzZWRfXyk7CiAgICAgaWYgKHJldmVyc2VkX21ldGggIT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhyZXZlcnNlZF9tZXRoLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKHJldmVyc2VkX21ldGgpOwpAQCAtMzE5LDggKzMzNSw0MCBAQAogCiBQeURvY19TVFJWQVIobGVuZ3RoX2hpbnRfZG9jLCAiUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCityZXZlcnNlZF9yZWR1Y2UocmV2ZXJzZWRvYmplY3QgKnJvKQoreworICAgIGlmIChyby0+c2VxKQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPKW4iLCBQeV9UWVBFKHJvKSwgcm8tPnNlcSwgcm8tPmluZGV4KTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKCgpKSIsIFB5X1RZUEUocm8pKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3JldmVyc2VkX3NldHN0YXRlKHJldmVyc2Vkb2JqZWN0ICpybywgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKKyAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHJvLT5zZXEgIT0gMCkgeworICAgICAgICBQeV9zc2l6ZV90IG4gPSBQeVNlcXVlbmNlX1NpemUocm8tPnNlcSk7CisgICAgICAgIGlmIChuIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoaW5kZXggPCAtMSkKKyAgICAgICAgICAgIGluZGV4ID0gLTE7CisgICAgICAgIGVsc2UgaWYgKGluZGV4ID4gbi0xKQorICAgICAgICAgICAgaW5kZXggPSBuLTE7CisgICAgICAgIHJvLT5pbmRleCA9IGluZGV4OworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHNldHN0YXRlX2RvYywgIlNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4iKTsKKwogc3RhdGljIFB5TWV0aG9kRGVmIHJldmVyc2VkaXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pcmV2ZXJzZWRfbGVuLCBNRVRIX05PQVJHUywgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pcmV2ZXJzZWRfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pcmV2ZXJzZWRfc2V0c3RhdGUsIE1FVEhfTywgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9leGNlcHRpb25zLmMgYi9PYmplY3RzL2V4Y2VwdGlvbnMuYwppbmRleCBhNGU5MGZjLi42YjA0NzAwIDEwMDY0NAotLS0gYS9PYmplY3RzL2V4Y2VwdGlvbnMuYworKysgYi9PYmplY3RzL2V4Y2VwdGlvbnMuYwpAQCAtMTAsNiArMTAsMjAgQEAKICNpbmNsdWRlICJvc2RlZnMuaCIKIAogCisvKiBDb21wYXRpYmlsaXR5IGFsaWFzZXMgKi8KK1B5T2JqZWN0ICpQeUV4Y19FbnZpcm9ubWVudEVycm9yID0gTlVMTDsKK1B5T2JqZWN0ICpQeUV4Y19JT0Vycm9yID0gTlVMTDsKKyNpZmRlZiBNU19XSU5ET1dTCitQeU9iamVjdCAqUHlFeGNfV2luZG93c0Vycm9yID0gTlVMTDsKKyNlbmRpZgorI2lmZGVmIF9fVk1TCitQeU9iamVjdCAqUHlFeGNfVk1TRXJyb3IgPSBOVUxMOworI2VuZGlmCisKKy8qIFRoZSBkaWN0IG1hcCBmcm9tIGVycm5vIGNvZGVzIHRvIE9TRXJyb3Igc3ViY2xhc3NlcyAqLworc3RhdGljIFB5T2JqZWN0ICplcnJub21hcCA9IE5VTEw7CisKKwogLyogTk9URTogSWYgdGhlIGV4Y2VwdGlvbiBjbGFzcyBoaWVyYXJjaHkgY2hhbmdlcywgZG9uJ3QgZm9yZ2V0IHRvIHVwZGF0ZQogICogTGliL3Rlc3QvZXhjZXB0aW9uX2hpZXJhcmNoeS50eHQKICAqLwpAQCAtMjgsNiArNDIsNyBAQAogICAgIC8qIHRoZSBkaWN0IGlzIGNyZWF0ZWQgb24gdGhlIGZseSBpbiBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciAqLwogICAgIHNlbGYtPmRpY3QgPSBOVUxMOwogICAgIHNlbGYtPnRyYWNlYmFjayA9IHNlbGYtPmNhdXNlID0gc2VsZi0+Y29udGV4dCA9IE5VTEw7CisgICAgc2VsZi0+c3VwcHJlc3NfY29udGV4dCA9IDA7CiAKICAgICBpZiAoYXJncykgewogICAgICAgICBzZWxmLT5hcmdzID0gYXJnczsKQEAgLTE3MiwzNiArMTg3LDYgQEAKICAgIHtOVUxMLCBOVUxMLCAwLCBOVUxMfSwKIH07CiAKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJhc2VFeGNlcHRpb25fZ2V0X2RpY3QoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICpzZWxmKQotewotICAgIGlmIChzZWxmLT5kaWN0ID09IE5VTEwpIHsKLSAgICAgICAgc2VsZi0+ZGljdCA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgaWYgKCFzZWxmLT5kaWN0KQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0lOQ1JFRihzZWxmLT5kaWN0KTsKLSAgICByZXR1cm4gc2VsZi0+ZGljdDsKLX0KLQotc3RhdGljIGludAotQmFzZUV4Y2VwdGlvbl9zZXRfZGljdChQeUJhc2VFeGNlcHRpb25PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWwpCi17Ci0gICAgaWYgKHZhbCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJfX2RpY3RfXyBtYXkgbm90IGJlIGRlbGV0ZWQiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoIVB5RGljdF9DaGVjayh2YWwpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJfX2RpY3RfXyBtdXN0IGJlIGEgZGljdGlvbmFyeSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIFB5X0NMRUFSKHNlbGYtPmRpY3QpOwotICAgIFB5X0lOQ1JFRih2YWwpOwotICAgIHNlbGYtPmRpY3QgPSB2YWw7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBCYXNlRXhjZXB0aW9uX2dldF9hcmdzKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqc2VsZikKIHsKQEAgLTMxNSw3ICszMDAsNyBAQAogCiAKIHN0YXRpYyBQeUdldFNldERlZiBCYXNlRXhjZXB0aW9uX2dldHNldFtdID0gewotICAgIHsiX19kaWN0X18iLCAoZ2V0dGVyKUJhc2VFeGNlcHRpb25fZ2V0X2RpY3QsIChzZXR0ZXIpQmFzZUV4Y2VwdGlvbl9zZXRfZGljdH0sCisgICAgeyJfX2RpY3RfXyIsIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0LCBQeU9iamVjdF9HZW5lcmljU2V0RGljdH0sCiAgICAgeyJhcmdzIiwgKGdldHRlcilCYXNlRXhjZXB0aW9uX2dldF9hcmdzLCAoc2V0dGVyKUJhc2VFeGNlcHRpb25fc2V0X2FyZ3N9LAogICAgIHsiX190cmFjZWJhY2tfXyIsIChnZXR0ZXIpQmFzZUV4Y2VwdGlvbl9nZXRfdGIsIChzZXR0ZXIpQmFzZUV4Y2VwdGlvbl9zZXRfdGJ9LAogICAgIHsiX19jb250ZXh0X18iLCAoZ2V0dGVyKUJhc2VFeGNlcHRpb25fZ2V0X2NvbnRleHQsCkBAIC0zNTEsNiArMzM2LDcgQEAKIFB5RXhjZXB0aW9uX1NldENhdXNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqY2F1c2UpIHsKICAgICBQeU9iamVjdCAqb2xkX2NhdXNlID0gKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+Y2F1c2U7CiAgICAgKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+Y2F1c2UgPSBjYXVzZTsKKyAgICAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5zdXBwcmVzc19jb250ZXh0ID0gMTsKICAgICBQeV9YREVDUkVGKG9sZF9jYXVzZSk7CiB9CiAKQEAgLTM3MCw2ICszNTYsMTMgQEAKIH0KIAogCitzdGF0aWMgc3RydWN0IFB5TWVtYmVyRGVmIEJhc2VFeGNlcHRpb25fbWVtYmVyc1tdID0geworICAgIHsiX19zdXBwcmVzc19jb250ZXh0X18iLCBUX0JPT0wsCisgICAgIG9mZnNldG9mKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCwgc3VwcHJlc3NfY29udGV4dCl9LAorICAgIHtOVUxMfQorfTsKKworCiBzdGF0aWMgUHlUeXBlT2JqZWN0IF9QeUV4Y19CYXNlRXhjZXB0aW9uID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgICJCYXNlRXhjZXB0aW9uIiwgLyp0cF9uYW1lKi8KQEAgLTQwMCw3ICszOTMsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgQmFzZUV4Y2VwdGlvbl9tZXRob2RzLCAgICAgIC8qIHRwX21ldGhvZHMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIEJhc2VFeGNlcHRpb25fbWVtYmVycywgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgQmFzZUV4Y2VwdGlvbl9nZXRzZXQsICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KQEAgLTQ0NSwxMSArNDM4LDEzIEBACiAgICAgUHlEb2NfU1RSKEVYQ0RPQyksICh0cmF2ZXJzZXByb2MpRVhDU1RPUkUgIyMgX3RyYXZlcnNlLCBcCiAgICAgKGlucXVpcnkpRVhDU1RPUkUgIyMgX2NsZWFyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAmXyAjIyBFWENCQVNFLCBcCiAgICAgMCwgMCwgMCwgb2Zmc2V0b2YoUHkgIyMgRVhDU1RPUkUgIyMgT2JqZWN0LCBkaWN0KSwgXAotICAgIChpbml0cHJvYylFWENTVE9SRSAjIyBfaW5pdCwgMCwgQmFzZUV4Y2VwdGlvbl9uZXcsXAorICAgIChpbml0cHJvYylFWENTVE9SRSAjIyBfaW5pdCwgMCwgMCwgXAogfTsgXAogUHlPYmplY3QgKlB5RXhjXyAjIyBFWENOQU1FID0gKFB5T2JqZWN0ICopJl9QeUV4Y18gIyMgRVhDTkFNRQogCi0jZGVmaW5lIENvbXBsZXhFeHRlbmRzRXhjZXB0aW9uKEVYQ0JBU0UsIEVYQ05BTUUsIEVYQ1NUT1JFLCBFWENERUFMTE9DLCBFWENNRVRIT0RTLCBFWENNRU1CRVJTLCBFWENTVFIsIEVYQ0RPQykgXAorI2RlZmluZSBDb21wbGV4RXh0ZW5kc0V4Y2VwdGlvbihFWENCQVNFLCBFWENOQU1FLCBFWENTVE9SRSwgRVhDTkVXLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYQ01FVEhPRFMsIEVYQ01FTUJFUlMsIEVYQ0dFVFNFVCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENTVFIsIEVYQ0RPQykgXAogc3RhdGljIFB5VHlwZU9iamVjdCBfUHlFeGNfICMjIEVYQ05BTUUgPSB7IFwKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkgXAogICAgICMgRVhDTkFNRSwgXApAQCAtNDU5LDkgKzQ1NCw5IEBACiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8IFB5X1RQRkxBR1NfSEFWRV9HQywgXAogICAgIFB5RG9jX1NUUihFWENET0MpLCAodHJhdmVyc2Vwcm9jKUVYQ1NUT1JFICMjIF90cmF2ZXJzZSwgXAogICAgIChpbnF1aXJ5KUVYQ1NUT1JFICMjIF9jbGVhciwgMCwgMCwgMCwgMCwgRVhDTUVUSE9EUywgXAotICAgIEVYQ01FTUJFUlMsIDAsICZfICMjIEVYQ0JBU0UsIFwKKyAgICBFWENNRU1CRVJTLCBFWENHRVRTRVQsICZfICMjIEVYQ0JBU0UsIFwKICAgICAwLCAwLCAwLCBvZmZzZXRvZihQeSAjIyBFWENTVE9SRSAjIyBPYmplY3QsIGRpY3QpLCBcCi0gICAgKGluaXRwcm9jKUVYQ1NUT1JFICMjIF9pbml0LCAwLCBCYXNlRXhjZXB0aW9uX25ldyxcCisgICAgKGluaXRwcm9jKUVYQ1NUT1JFICMjIF9pbml0LCAwLCBFWENORVcsXAogfTsgXAogUHlPYmplY3QgKlB5RXhjXyAjIyBFWENOQU1FID0gKFB5T2JqZWN0ICopJl9QeUV4Y18gIyMgRVhDTkFNRQogCkBAIC00ODMsOCArNDc4LDY0IEBACiAvKgogICogICAgU3RvcEl0ZXJhdGlvbiBleHRlbmRzIEV4Y2VwdGlvbgogICovCi1TaW1wbGVFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0V4Y2VwdGlvbiwgU3RvcEl0ZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIlNpZ25hbCB0aGUgZW5kIGZyb20gaXRlcmF0b3IuX19uZXh0X18oKS4iKTsKKworc3RhdGljIFB5TWVtYmVyRGVmIFN0b3BJdGVyYXRpb25fbWVtYmVyc1tdID0geworICAgIHsidmFsdWUiLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlTdG9wSXRlcmF0aW9uT2JqZWN0LCB2YWx1ZSksIDAsCisgICAgICAgIFB5RG9jX1NUUigiZ2VuZXJhdG9yIHJldHVybiB2YWx1ZSIpfSwKKyAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCit9OworCitzdGF0aWMgaW50CitTdG9wSXRlcmF0aW9uX2luaXQoUHlTdG9wSXRlcmF0aW9uT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlfc3NpemVfdCBzaXplID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKKyAgICBQeU9iamVjdCAqdmFsdWU7CisKKyAgICBpZiAoQmFzZUV4Y2VwdGlvbl9pbml0KChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmLCBhcmdzLCBrd2RzKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIFB5X0NMRUFSKHNlbGYtPnZhbHVlKTsKKyAgICBpZiAoc2l6ZSA+IDApCisgICAgICAgIHZhbHVlID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKKyAgICBlbHNlCisgICAgICAgIHZhbHVlID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIHNlbGYtPnZhbHVlID0gdmFsdWU7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK1N0b3BJdGVyYXRpb25fY2xlYXIoUHlTdG9wSXRlcmF0aW9uT2JqZWN0ICpzZWxmKQoreworICAgIFB5X0NMRUFSKHNlbGYtPnZhbHVlKTsKKyAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl9jbGVhcigoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZik7Cit9CisKK3N0YXRpYyB2b2lkCitTdG9wSXRlcmF0aW9uX2RlYWxsb2MoUHlTdG9wSXRlcmF0aW9uT2JqZWN0ICpzZWxmKQoreworICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHNlbGYpOworICAgIFN0b3BJdGVyYXRpb25fY2xlYXIoc2VsZik7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKK30KKworc3RhdGljIGludAorU3RvcEl0ZXJhdGlvbl90cmF2ZXJzZShQeVN0b3BJdGVyYXRpb25PYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKHNlbGYtPnZhbHVlKTsKKyAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl90cmF2ZXJzZSgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiwgdmlzaXQsIGFyZyk7Cit9CisKK0NvbXBsZXhFeHRlbmRzRXhjZXB0aW9uKAorICAgIFB5RXhjX0V4Y2VwdGlvbiwgICAgICAgLyogYmFzZSAqLworICAgIFN0b3BJdGVyYXRpb24sICAgICAgICAgLyogbmFtZSAqLworICAgIFN0b3BJdGVyYXRpb24sICAgICAgICAgLyogcHJlZml4IGZvciAqX2luaXQsIGV0YyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgLyogbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAvKiBtZXRob2RzICovCisgICAgU3RvcEl0ZXJhdGlvbl9tZW1iZXJzLCAvKiBtZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAvKiBnZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgIC8qIHN0ciAqLworICAgICJTaWduYWwgdGhlIGVuZCBmcm9tIGl0ZXJhdG9yLl9fbmV4dF9fKCkuIgorKTsKIAogCiAvKgpAQCAtNTExLDcgKzU2Miw3IEBACiAgICAgUHlfQ0xFQVIoc2VsZi0+Y29kZSk7CiAgICAgaWYgKHNpemUgPT0gMSkKICAgICAgICAgc2VsZi0+Y29kZSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCk7Ci0gICAgZWxzZSBpZiAoc2l6ZSA+IDEpCisgICAgZWxzZSAvKiBzaXplID4gMSAqLwogICAgICAgICBzZWxmLT5jb2RlID0gYXJnczsKICAgICBQeV9JTkNSRUYoc2VsZi0+Y29kZSk7CiAgICAgcmV0dXJuIDA7CkBAIC01NDYsNyArNTk3LDcgQEAKIH07CiAKIENvbXBsZXhFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0Jhc2VFeGNlcHRpb24sIFN5c3RlbUV4aXQsIFN5c3RlbUV4aXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW1FeGl0X2RlYWxsb2MsIDAsIFN5c3RlbUV4aXRfbWVtYmVycywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIFN5c3RlbUV4aXRfbWVtYmVycywgMCwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICJSZXF1ZXN0IHRvIGV4aXQgZnJvbSB0aGUgaW50ZXJwcmV0ZXIuIik7CiAKIC8qCkBAIC01NTksMTI5ICs2MTAsNDQxIEBACiAvKgogICogICAgSW1wb3J0RXJyb3IgZXh0ZW5kcyBFeGNlcHRpb24KICAqLwotU2ltcGxlRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19FeGNlcHRpb24sIEltcG9ydEVycm9yLAotICAgICAgICAgICJJbXBvcnQgY2FuJ3QgZmluZCBtb2R1bGUsIG9yIGNhbid0IGZpbmQgbmFtZSBpbiBtb2R1bGUuIik7CiAKK3N0YXRpYyBpbnQKK0ltcG9ydEVycm9yX2luaXQoUHlJbXBvcnRFcnJvck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICptc2cgPSBOVUxMOworICAgIFB5T2JqZWN0ICpuYW1lID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CisKKy8qIE1hY3JvIHJlcGxhY2VtZW50IGRvZXNuJ3QgYWxsb3cgIyMgdG8gc3RhcnQgdGhlIGZpcnN0IGxpbmUgb2YgYSBtYWNybywKKyAgIHNvIHdlIG1vdmUgdGhlIGFzc2lnbm1lbnQgYW5kIE5VTEwgY2hlY2sgaW50byB0aGUgaWYtc3RhdGVtZW50LiAqLworI2RlZmluZSBHRVRfS1dEKGt3ZCkgeyBcCisgICAga3dkID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoa3dkcywgI2t3ZCk7IFwKKyAgICBpZiAoa3dkKSB7IFwKKyAgICAgICAgUHlfQ0xFQVIoc2VsZi0+a3dkKTsgXAorICAgICAgICBzZWxmLT5rd2QgPSBrd2Q7ICAgXAorICAgICAgICBQeV9JTkNSRUYoc2VsZi0+a3dkKTtcCisgICAgICAgIGlmIChQeURpY3RfRGVsSXRlbVN0cmluZyhrd2RzLCAja3dkKSkgXAorICAgICAgICAgICAgcmV0dXJuIC0xOyBcCisgICAgfSBcCisgICAgfQorCisgICAgaWYgKGt3ZHMpIHsKKyAgICAgICAgR0VUX0tXRChuYW1lKTsKKyAgICAgICAgR0VUX0tXRChwYXRoKTsKKyAgICB9CisKKyAgICBpZiAoQmFzZUV4Y2VwdGlvbl9pbml0KChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmLCBhcmdzLCBrd2RzKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpICE9IDEpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgIkltcG9ydEVycm9yIiwgMSwgMSwgJm1zZykpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIFB5X0NMRUFSKHNlbGYtPm1zZyk7ICAgICAgICAgIC8qIHJlcGxhY2luZyAqLworICAgIHNlbGYtPm1zZyA9IG1zZzsKKyAgICBQeV9JTkNSRUYoc2VsZi0+bXNnKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitJbXBvcnRFcnJvcl9jbGVhcihQeUltcG9ydEVycm9yT2JqZWN0ICpzZWxmKQoreworICAgIFB5X0NMRUFSKHNlbGYtPm1zZyk7CisgICAgUHlfQ0xFQVIoc2VsZi0+bmFtZSk7CisgICAgUHlfQ0xFQVIoc2VsZi0+cGF0aCk7CisgICAgcmV0dXJuIEJhc2VFeGNlcHRpb25fY2xlYXIoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpOworfQorCitzdGF0aWMgdm9pZAorSW1wb3J0RXJyb3JfZGVhbGxvYyhQeUltcG9ydEVycm9yT2JqZWN0ICpzZWxmKQoreworICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHNlbGYpOworICAgIEltcG9ydEVycm9yX2NsZWFyKHNlbGYpOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Cit9CisKK3N0YXRpYyBpbnQKK0ltcG9ydEVycm9yX3RyYXZlcnNlKFB5SW1wb3J0RXJyb3JPYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKHNlbGYtPm1zZyk7CisgICAgUHlfVklTSVQoc2VsZi0+bmFtZSk7CisgICAgUHlfVklTSVQoc2VsZi0+cGF0aCk7CisgICAgcmV0dXJuIEJhc2VFeGNlcHRpb25fdHJhdmVyc2UoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYsIHZpc2l0LCBhcmcpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorSW1wb3J0RXJyb3Jfc3RyKFB5SW1wb3J0RXJyb3JPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKHNlbGYtPm1zZyAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmLT5tc2cpKSB7CisgICAgICAgIFB5X0lOQ1JFRihzZWxmLT5tc2cpOworICAgICAgICByZXR1cm4gc2VsZi0+bXNnOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIEJhc2VFeGNlcHRpb25fc3RyKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKTsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU1lbWJlckRlZiBJbXBvcnRFcnJvcl9tZW1iZXJzW10gPSB7CisgICAgeyJtc2ciLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlJbXBvcnRFcnJvck9iamVjdCwgbXNnKSwgMCwKKyAgICAgICAgUHlEb2NfU1RSKCJleGNlcHRpb24gbWVzc2FnZSIpfSwKKyAgICB7Im5hbWUiLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlJbXBvcnRFcnJvck9iamVjdCwgbmFtZSksIDAsCisgICAgICAgIFB5RG9jX1NUUigibW9kdWxlIG5hbWUiKX0sCisgICAgeyJwYXRoIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5SW1wb3J0RXJyb3JPYmplY3QsIHBhdGgpLCAwLAorICAgICAgICBQeURvY19TVFIoIm1vZHVsZSBwYXRoIil9LAorICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQeU1ldGhvZERlZiBJbXBvcnRFcnJvcl9tZXRob2RzW10gPSB7CisgICAge05VTEx9Cit9OworCitDb21wbGV4RXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19FeGNlcHRpb24sIEltcG9ydEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgSW1wb3J0RXJyb3IsIDAgLyogbmV3ICovLAorICAgICAgICAgICAgICAgICAgICAgICAgSW1wb3J0RXJyb3JfbWV0aG9kcywgSW1wb3J0RXJyb3JfbWVtYmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgIDAgLyogZ2V0c2V0ICovLCBJbXBvcnRFcnJvcl9zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAiSW1wb3J0IGNhbid0IGZpbmQgbW9kdWxlLCBvciBjYW4ndCBmaW5kIG5hbWUgaW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgIm1vZHVsZS4iKTsKIAogLyoKLSAqICAgIEVudmlyb25tZW50RXJyb3IgZXh0ZW5kcyBFeGNlcHRpb24KKyAqICAgIE9TRXJyb3IgZXh0ZW5kcyBFeGNlcHRpb24KICAqLwogCisjaWZkZWYgTVNfV0lORE9XUworI2luY2x1ZGUgImVycm1hcC5oIgorI2VuZGlmCisKIC8qIFdoZXJlIGEgZnVuY3Rpb24gaGFzIGEgc2luZ2xlIGZpbGVuYW1lLCBzdWNoIGFzIG9wZW4oKSBvciBzb21lCiAgKiBvZiB0aGUgb3MgbW9kdWxlIGZ1bmN0aW9ucywgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lKCkgaXMKICAqIGNhbGxlZCwgZ2l2aW5nIGEgdGhpcmQgYXJndW1lbnQgd2hpY2ggaXMgdGhlIGZpbGVuYW1lLiAgQnV0LCBzbwogICogdGhhdCBvbGQgY29kZSB1c2luZyBpbi1wbGFjZSB1bnBhY2tpbmcgZG9lc24ndCBicmVhaywgZS5nLjoKICAqCi0gKiBleGNlcHQgSU9FcnJvciwgKGVycm5vLCBzdHJlcnJvcik6CisgKiBleGNlcHQgT1NFcnJvciwgKGVycm5vLCBzdHJlcnJvcik6CiAgKgogICogd2UgaGFjayBhcmdzIHNvIHRoYXQgaXQgb25seSBjb250YWlucyB0d28gaXRlbXMuICBUaGlzIGFsc28KICAqIG1lYW5zIHdlIG5lZWQgb3VyIG93biBfX3N0cl9fKCkgd2hpY2ggcHJpbnRzIG91dCB0aGUgZmlsZW5hbWUKICAqIHdoZW4gaXQgd2FzIHN1cHBsaWVkLgogICovCisKKy8qIFRoaXMgZnVuY3Rpb24gZG9lc24ndCBjbGVhbnVwIG9uIGVycm9yLCB0aGUgY2FsbGVyIHNob3VsZCAqLwogc3RhdGljIGludAotRW52aXJvbm1lbnRFcnJvcl9pbml0KFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsCi0gICAgUHlPYmplY3QgKmt3ZHMpCitvc2Vycm9yX3BhcnNlX2FyZ3MoUHlPYmplY3QgKipwX2FyZ3MsCisgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipteWVycm5vLCBQeU9iamVjdCAqKnN0cmVycm9yLAorICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqZmlsZW5hbWUKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICAgICAgICAgLCBQeU9iamVjdCAqKndpbmVycm9yCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICkKIHsKLSAgICBQeU9iamVjdCAqbXllcnJubyA9IE5VTEwsICpzdHJlcnJvciA9IE5VTEwsICpmaWxlbmFtZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnN1YnNsaWNlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IG5hcmdzOworICAgIFB5T2JqZWN0ICphcmdzID0gKnBfYXJnczsKIAotICAgIGlmIChCYXNlRXhjZXB0aW9uX2luaXQoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYsIGFyZ3MsIGt3ZHMpID09IC0xKQotICAgICAgICByZXR1cm4gLTE7CisgICAgbmFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOwogCi0gICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPD0gMSB8fCBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID4gMykgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJFbnZpcm9ubWVudEVycm9yIiwgMiwgMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZteWVycm5vLCAmc3RyZXJyb3IsICZmaWxlbmFtZSkpIHsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBQeV9DTEVBUihzZWxmLT5teWVycm5vKTsgICAgICAgLyogcmVwbGFjaW5nICovCi0gICAgc2VsZi0+bXllcnJubyA9IG15ZXJybm87Ci0gICAgUHlfSU5DUkVGKHNlbGYtPm15ZXJybm8pOwotCi0gICAgUHlfQ0xFQVIoc2VsZi0+c3RyZXJyb3IpOyAgICAgIC8qIHJlcGxhY2luZyAqLwotICAgIHNlbGYtPnN0cmVycm9yID0gc3RyZXJyb3I7Ci0gICAgUHlfSU5DUkVGKHNlbGYtPnN0cmVycm9yKTsKLQotICAgIC8qIHNlbGYtPmZpbGVuYW1lIHdpbGwgcmVtYWluIFB5X05vbmUgb3RoZXJ3aXNlICovCi0gICAgaWYgKGZpbGVuYW1lICE9IE5VTEwpIHsKLSAgICAgICAgUHlfQ0xFQVIoc2VsZi0+ZmlsZW5hbWUpOyAgICAgIC8qIHJlcGxhY2luZyAqLwotICAgICAgICBzZWxmLT5maWxlbmFtZSA9IGZpbGVuYW1lOwotICAgICAgICBQeV9JTkNSRUYoc2VsZi0+ZmlsZW5hbWUpOwotCi0gICAgICAgIHN1YnNsaWNlID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAwLCAyKTsKLSAgICAgICAgaWYgKCFzdWJzbGljZSkKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKG5hcmdzID49IDIgJiYgbmFyZ3MgPD0gNCkgeworICAgICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJPU0Vycm9yIiwgMiwgNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteWVycm5vLCBzdHJlcnJvciwgZmlsZW5hbWUsIHdpbmVycm9yKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKCp3aW5lcnJvciAmJiBQeUxvbmdfQ2hlY2soKndpbmVycm9yKSkgeworICAgICAgICAgICAgbG9uZyBlcnJjb2RlLCB3aW5lcnJjb2RlOworICAgICAgICAgICAgUHlPYmplY3QgKm5ld2FyZ3M7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CiAKLSAgICAgICAgUHlfREVDUkVGKHNlbGYtPmFyZ3MpOyAgLyogcmVwbGFjaW5nIGFyZ3MgKi8KLSAgICAgICAgc2VsZi0+YXJncyA9IHN1YnNsaWNlOworICAgICAgICAgICAgd2luZXJyY29kZSA9IFB5TG9uZ19Bc0xvbmcoKndpbmVycm9yKTsKKyAgICAgICAgICAgIGlmICh3aW5lcnJjb2RlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgLyogU2V0IGVycm5vIHRvIHRoZSBjb3JyZXNwb25kaW5nIFBPU0lYIGVycm5vIChvdmVycmlkaW5nCisgICAgICAgICAgICAgICBmaXJzdCBhcmd1bWVudCkuICBXaW5kb3dzIFNvY2tldCBlcnJvciBjb2RlcyAoPj0gMTAwMDApCisgICAgICAgICAgICAgICBoYXZlIHRoZSBzYW1lIHZhbHVlIGFzIHRoZWlyIFBPU0lYIGNvdW50ZXJwYXJ0cy4KKyAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAod2luZXJyY29kZSA8IDEwMDAwKQorICAgICAgICAgICAgICAgIGVycmNvZGUgPSB3aW5lcnJvcl90b19lcnJubyh3aW5lcnJjb2RlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlcnJjb2RlID0gd2luZXJyY29kZTsKKyAgICAgICAgICAgICpteWVycm5vID0gUHlMb25nX0Zyb21Mb25nKGVycmNvZGUpOworICAgICAgICAgICAgaWYgKCEqbXllcnJubykKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBuZXdhcmdzID0gUHlUdXBsZV9OZXcobmFyZ3MpOworICAgICAgICAgICAgaWYgKCFuZXdhcmdzKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgMCwgKm15ZXJybm8pOworICAgICAgICAgICAgZm9yIChpID0gMTsgaSA8IG5hcmdzOyBpKyspIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYodmFsKTsKKyAgICAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIGksIHZhbCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgICAgICBhcmdzID0gKnBfYXJncyA9IG5ld2FyZ3M7CisgICAgICAgIH0KICAgICB9CisjZWxzZQorICAgIGlmIChuYXJncyA+PSAyICYmIG5hcmdzIDw9IDMpIHsKKyAgICAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiT1NFcnJvciIsIDIsIDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXllcnJubywgc3RyZXJyb3IsIGZpbGVuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjZW5kaWYKKwogICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgaW50Ci1FbnZpcm9ubWVudEVycm9yX2NsZWFyKFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCAqc2VsZikKK29zZXJyb3JfaW5pdChQeU9TRXJyb3JPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqcF9hcmdzLAorICAgICAgICAgICAgIFB5T2JqZWN0ICpteWVycm5vLCBQeU9iamVjdCAqc3RyZXJyb3IsCisgICAgICAgICAgICAgUHlPYmplY3QgKmZpbGVuYW1lCisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgICwgUHlPYmplY3QgKndpbmVycm9yCisjZW5kaWYKKyAgICAgICAgICAgICApCit7CisgICAgUHlPYmplY3QgKmFyZ3MgPSAqcF9hcmdzOworICAgIFB5X3NzaXplX3QgbmFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworCisgICAgLyogc2VsZi0+ZmlsZW5hbWUgd2lsbCByZW1haW4gUHlfTm9uZSBvdGhlcndpc2UgKi8KKyAgICBpZiAoZmlsZW5hbWUgJiYgZmlsZW5hbWUgIT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoUHlfVFlQRShzZWxmKSA9PSAoUHlUeXBlT2JqZWN0ICopIFB5RXhjX0Jsb2NraW5nSU9FcnJvciAmJgorICAgICAgICAgICAgUHlOdW1iZXJfQ2hlY2soZmlsZW5hbWUpKSB7CisgICAgICAgICAgICAvKiBCbG9ja2luZ0lPRXJyb3IncyAzcmQgYXJndW1lbnQgY2FuIGJlIHRoZSBudW1iZXIgb2YKKyAgICAgICAgICAgICAqIGNoYXJhY3RlcnMgd3JpdHRlbi4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgc2VsZi0+d3JpdHRlbiA9IFB5TnVtYmVyX0FzU3NpemVfdChmaWxlbmFtZSwgUHlFeGNfVmFsdWVFcnJvcik7CisgICAgICAgICAgICBpZiAoc2VsZi0+d3JpdHRlbiA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihmaWxlbmFtZSk7CisgICAgICAgICAgICBzZWxmLT5maWxlbmFtZSA9IGZpbGVuYW1lOworCisgICAgICAgICAgICBpZiAobmFyZ3MgPj0gMiAmJiBuYXJncyA8PSAzKSB7CisgICAgICAgICAgICAgICAgLyogZmlsZW5hbWUgaXMgcmVtb3ZlZCBmcm9tIHRoZSBhcmdzIHR1cGxlIChmb3IgY29tcGF0aWJpbGl0eQorICAgICAgICAgICAgICAgICAgIHB1cnBvc2VzLCBzZWUgdGVzdF9leGNlcHRpb25zLnB5KSAqLworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJzbGljZSA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMCwgMik7CisgICAgICAgICAgICAgICAgaWYgKCFzdWJzbGljZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOyAgLyogcmVwbGFjaW5nIGFyZ3MgKi8KKyAgICAgICAgICAgICAgICAqcF9hcmdzID0gYXJncyA9IHN1YnNsaWNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIFB5X1hJTkNSRUYobXllcnJubyk7CisgICAgc2VsZi0+bXllcnJubyA9IG15ZXJybm87CisKKyAgICBQeV9YSU5DUkVGKHN0cmVycm9yKTsKKyAgICBzZWxmLT5zdHJlcnJvciA9IHN0cmVycm9yOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5X1hJTkNSRUYod2luZXJyb3IpOworICAgIHNlbGYtPndpbmVycm9yID0gd2luZXJyb3I7CisjZW5kaWYKKworICAgIC8qIFN0ZWFscyB0aGUgcmVmZXJlbmNlIHRvIGFyZ3MgKi8KKyAgICBQeV9DTEVBUihzZWxmLT5hcmdzKTsKKyAgICBzZWxmLT5hcmdzID0gYXJnczsKKyAgICBhcmdzID0gTlVMTDsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorT1NFcnJvcl9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpOworc3RhdGljIGludAorT1NFcnJvcl9pbml0KFB5T1NFcnJvck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKTsKKworc3RhdGljIGludAorb3NlcnJvcl91c2VfaW5pdChQeVR5cGVPYmplY3QgKnR5cGUpCit7CisgICAgLyogV2hlbiBfX2luaXRfXyBpcyBkZWZpbmVkIGluIGEgT1NFcnJvciBzdWJjbGFzcywgd2Ugd2FudCBhbnkKKyAgICAgICBleHRyYW5lb3VzIGFyZ3VtZW50IHRvIF9fbmV3X18gdG8gYmUgaWdub3JlZC4gIFRoZSBvbmx5IHJlYXNvbmFibGUKKyAgICAgICBzb2x1dGlvbiwgZ2l2ZW4gX19uZXdfXyB0YWtlcyBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHMsCisgICAgICAgaXMgdG8gZGVmZXIgYXJnIHBhcnNpbmcgYW5kIGluaXRpYWxpemF0aW9uIHRvIF9faW5pdF9fLgorCisgICAgICAgQnV0IHdoZW4gX19uZXdfXyBpcyBvdmVycmlkZW4gYXMgd2VsbCwgaXQgc2hvdWxkIGNhbGwgb3VyIF9fbmV3X18KKyAgICAgICB3aXRoIHRoZSByaWdodCBhcmd1bWVudHMuCisKKyAgICAgICAoc2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMjU1NSNtc2cxNDg4MjkgKQorICAgICovCisgICAgaWYgKHR5cGUtPnRwX2luaXQgIT0gKGluaXRwcm9jKSBPU0Vycm9yX2luaXQgJiYKKyAgICAgICAgdHlwZS0+dHBfbmV3ID09IChuZXdmdW5jKSBPU0Vycm9yX25ldykgeworICAgICAgICBhc3NlcnQoKFB5T2JqZWN0ICopIHR5cGUgIT0gUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK09TRXJyb3JfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T1NFcnJvck9iamVjdCAqc2VsZiA9IE5VTEw7CisgICAgUHlPYmplY3QgKm15ZXJybm8gPSBOVUxMLCAqc3RyZXJyb3IgPSBOVUxMLCAqZmlsZW5hbWUgPSBOVUxMOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBQeU9iamVjdCAqd2luZXJyb3IgPSBOVUxMOworI2VuZGlmCisKKyAgICBpZiAoIW9zZXJyb3JfdXNlX2luaXQodHlwZSkpIHsKKyAgICAgICAgaWYgKCFfUHlBcmdfTm9LZXl3b3Jkcyh0eXBlLT50cF9uYW1lLCBrd2RzKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIFB5X0lOQ1JFRihhcmdzKTsKKyAgICAgICAgaWYgKG9zZXJyb3JfcGFyc2VfYXJncygmYXJncywgJm15ZXJybm8sICZzdHJlcnJvciwgJmZpbGVuYW1lCisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJndpbmVycm9yCisjZW5kaWYKKyAgICAgICAgICAgICkpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGlmIChteWVycm5vICYmIFB5TG9uZ19DaGVjayhteWVycm5vKSAmJgorICAgICAgICAgICAgZXJybm9tYXAgJiYgKFB5T2JqZWN0ICopIHR5cGUgPT0gUHlFeGNfT1NFcnJvcikgeworICAgICAgICAgICAgUHlPYmplY3QgKm5ld3R5cGU7CisgICAgICAgICAgICBuZXd0eXBlID0gUHlEaWN0X0dldEl0ZW0oZXJybm9tYXAsIG15ZXJybm8pOworICAgICAgICAgICAgaWYgKG5ld3R5cGUpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlUeXBlX0NoZWNrKG5ld3R5cGUpKTsKKyAgICAgICAgICAgICAgICB0eXBlID0gKFB5VHlwZU9iamVjdCAqKSBuZXd0eXBlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgc2VsZiA9IChQeU9TRXJyb3JPYmplY3QgKikgdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKCFzZWxmKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgc2VsZi0+ZGljdCA9IE5VTEw7CisgICAgc2VsZi0+dHJhY2ViYWNrID0gc2VsZi0+Y2F1c2UgPSBzZWxmLT5jb250ZXh0ID0gTlVMTDsKKyAgICBzZWxmLT53cml0dGVuID0gLTE7CisKKyAgICBpZiAoIW9zZXJyb3JfdXNlX2luaXQodHlwZSkpIHsKKyAgICAgICAgaWYgKG9zZXJyb3JfaW5pdChzZWxmLCAmYXJncywgbXllcnJubywgc3RyZXJyb3IsIGZpbGVuYW1lCisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgICAgICAgICAgICAgICwgd2luZXJyb3IKKyNlbmRpZgorICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzZWxmLT5hcmdzID0gUHlUdXBsZV9OZXcoMCk7CisgICAgICAgIGlmIChzZWxmLT5hcmdzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIHJldHVybiAoUHlPYmplY3QgKikgc2VsZjsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihhcmdzKTsKKyAgICBQeV9YREVDUkVGKHNlbGYpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW50CitPU0Vycm9yX2luaXQoUHlPU0Vycm9yT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKm15ZXJybm8gPSBOVUxMLCAqc3RyZXJyb3IgPSBOVUxMLCAqZmlsZW5hbWUgPSBOVUxMOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBQeU9iamVjdCAqd2luZXJyb3IgPSBOVUxMOworI2VuZGlmCisKKyAgICBpZiAoIW9zZXJyb3JfdXNlX2luaXQoUHlfVFlQRShzZWxmKSkpCisgICAgICAgIC8qIEV2ZXJ5dGhpbmcgYWxyZWFkeSBkb25lIGluIE9TRXJyb3JfbmV3ICovCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFfUHlBcmdfTm9LZXl3b3JkcyhQeV9UWVBFKHNlbGYpLT50cF9uYW1lLCBrd2RzKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgUHlfSU5DUkVGKGFyZ3MpOworICAgIGlmIChvc2Vycm9yX3BhcnNlX2FyZ3MoJmFyZ3MsICZteWVycm5vLCAmc3RyZXJyb3IsICZmaWxlbmFtZQorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJndpbmVycm9yCisjZW5kaWYKKyAgICAgICAgKSkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGlmIChvc2Vycm9yX2luaXQoc2VsZiwgJmFyZ3MsIG15ZXJybm8sIHN0cmVycm9yLCBmaWxlbmFtZQorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgICAgICAgICAgICAgICwgd2luZXJyb3IKKyNlbmRpZgorICAgICAgICApKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgcmV0dXJuIDA7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoYXJncyk7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgaW50CitPU0Vycm9yX2NsZWFyKFB5T1NFcnJvck9iamVjdCAqc2VsZikKIHsKICAgICBQeV9DTEVBUihzZWxmLT5teWVycm5vKTsKICAgICBQeV9DTEVBUihzZWxmLT5zdHJlcnJvcik7CiAgICAgUHlfQ0xFQVIoc2VsZi0+ZmlsZW5hbWUpOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBQeV9DTEVBUihzZWxmLT53aW5lcnJvcik7CisjZW5kaWYKICAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl9jbGVhcigoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZik7CiB9CiAKIHN0YXRpYyB2b2lkCi1FbnZpcm9ubWVudEVycm9yX2RlYWxsb2MoUHlFbnZpcm9ubWVudEVycm9yT2JqZWN0ICpzZWxmKQorT1NFcnJvcl9kZWFsbG9jKFB5T1NFcnJvck9iamVjdCAqc2VsZikKIHsKICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhzZWxmKTsKLSAgICBFbnZpcm9ubWVudEVycm9yX2NsZWFyKHNlbGYpOworICAgIE9TRXJyb3JfY2xlYXIoc2VsZik7CiAgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKIH0KIAogc3RhdGljIGludAotRW52aXJvbm1lbnRFcnJvcl90cmF2ZXJzZShQeUVudmlyb25tZW50RXJyb3JPYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwKK09TRXJyb3JfdHJhdmVyc2UoUHlPU0Vycm9yT2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsCiAgICAgICAgIHZvaWQgKmFyZykKIHsKICAgICBQeV9WSVNJVChzZWxmLT5teWVycm5vKTsKICAgICBQeV9WSVNJVChzZWxmLT5zdHJlcnJvcik7CiAgICAgUHlfVklTSVQoc2VsZi0+ZmlsZW5hbWUpOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBQeV9WSVNJVChzZWxmLT53aW5lcnJvcik7CisjZW5kaWYKICAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl90cmF2ZXJzZSgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiwgdmlzaXQsIGFyZyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1FbnZpcm9ubWVudEVycm9yX3N0cihQeUVudmlyb25tZW50RXJyb3JPYmplY3QgKnNlbGYpCitPU0Vycm9yX3N0cihQeU9TRXJyb3JPYmplY3QgKnNlbGYpCiB7CisjaWZkZWYgTVNfV0lORE9XUworICAgIC8qIElmIGF2YWlsYWJsZSwgd2luZXJyb3IgaGFzIHRoZSBwcmlvcml0eSBvdmVyIG15ZXJybm8gKi8KKyAgICBpZiAoc2VsZi0+d2luZXJyb3IgJiYgc2VsZi0+ZmlsZW5hbWUpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiW1dpbkVycm9yICVTXSAlUzogJVIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+d2luZXJyb3IgPyBzZWxmLT53aW5lcnJvcjogUHlfTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0cmVycm9yID8gc2VsZi0+c3RyZXJyb3I6IFB5X05vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5maWxlbmFtZSk7CisgICAgaWYgKHNlbGYtPndpbmVycm9yICYmIHNlbGYtPnN0cmVycm9yKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIltXaW5FcnJvciAlU10gJVMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+d2luZXJyb3IgPyBzZWxmLT53aW5lcnJvcjogUHlfTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0cmVycm9yID8gc2VsZi0+c3RyZXJyb3I6IFB5X05vbmUpOworI2VuZGlmCiAgICAgaWYgKHNlbGYtPmZpbGVuYW1lKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIltFcnJubyAlU10gJVM6ICVSIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPm15ZXJybm8gPyBzZWxmLT5teWVycm5vOiBQeV9Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyZXJyb3IgPyBzZWxmLT5zdHJlcnJvcjogUHlfTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmZpbGVuYW1lKTsKLSAgICBlbHNlIGlmIChzZWxmLT5teWVycm5vICYmIHNlbGYtPnN0cmVycm9yKQorICAgIGlmIChzZWxmLT5teWVycm5vICYmIHNlbGYtPnN0cmVycm9yKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIltFcnJubyAlU10gJVMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+bXllcnJubyA/IHNlbGYtPm15ZXJybm86IFB5X05vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5zdHJlcnJvciA/IHNlbGYtPnN0cmVycm9yOiBQeV9Ob25lKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX3N0cigoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZik7CisgICAgcmV0dXJuIEJhc2VFeGNlcHRpb25fc3RyKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKTsKIH0KIAotc3RhdGljIFB5TWVtYmVyRGVmIEVudmlyb25tZW50RXJyb3JfbWVtYmVyc1tdID0gewotICAgIHsiZXJybm8iLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlFbnZpcm9ubWVudEVycm9yT2JqZWN0LCBteWVycm5vKSwgMCwKLSAgICAgICAgUHlEb2NfU1RSKCJleGNlcHRpb24gZXJybm8iKX0sCi0gICAgeyJzdHJlcnJvciIsIFRfT0JKRUNULCBvZmZzZXRvZihQeUVudmlyb25tZW50RXJyb3JPYmplY3QsIHN0cmVycm9yKSwgMCwKLSAgICAgICAgUHlEb2NfU1RSKCJleGNlcHRpb24gc3RyZXJyb3IiKX0sCi0gICAgeyJmaWxlbmFtZSIsIFRfT0JKRUNULCBvZmZzZXRvZihQeUVudmlyb25tZW50RXJyb3JPYmplY3QsIGZpbGVuYW1lKSwgMCwKLSAgICAgICAgUHlEb2NfU1RSKCJleGNlcHRpb24gZmlsZW5hbWUiKX0sCi0gICAge05VTEx9ICAvKiBTZW50aW5lbCAqLwotfTsKLQotCiBzdGF0aWMgUHlPYmplY3QgKgotRW52aXJvbm1lbnRFcnJvcl9yZWR1Y2UoUHlFbnZpcm9ubWVudEVycm9yT2JqZWN0ICpzZWxmKQorT1NFcnJvcl9yZWR1Y2UoUHlPU0Vycm9yT2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICphcmdzID0gc2VsZi0+YXJnczsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTCwgKnRtcDsKIAogICAgIC8qIHNlbGYtPmFyZ3MgaXMgb25seSB0aGUgZmlyc3QgdHdvIHJlYWwgYXJndW1lbnRzIGlmIHRoZXJlIHdhcyBhCi0gICAgICogZmlsZSBuYW1lIGdpdmVuIHRvIEVudmlyb25tZW50RXJyb3IuICovCisgICAgICogZmlsZSBuYW1lIGdpdmVuIHRvIE9TRXJyb3IuICovCiAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMiAmJiBzZWxmLT5maWxlbmFtZSkgewogICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMyk7CiAgICAgICAgIGlmICghYXJncykKQEAgLTcwOCwxNDQgKzEwNzEsOTMgQEAKICAgICByZXR1cm4gcmVzOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorT1NFcnJvcl93cml0dGVuX2dldChQeU9TRXJyb3JPYmplY3QgKnNlbGYsIHZvaWQgKmNvbnRleHQpCit7CisgICAgaWYgKHNlbGYtPndyaXR0ZW4gPT0gLTEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLCAiY2hhcmFjdGVyc193cml0dGVuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPndyaXR0ZW4pOworfQogCi1zdGF0aWMgUHlNZXRob2REZWYgRW52aXJvbm1lbnRFcnJvcl9tZXRob2RzW10gPSB7Ci0gICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKUVudmlyb25tZW50RXJyb3JfcmVkdWNlLCBNRVRIX05PQVJHU30sCitzdGF0aWMgaW50CitPU0Vycm9yX3dyaXR0ZW5fc2V0KFB5T1NFcnJvck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZywgdm9pZCAqY29udGV4dCkKK3sKKyAgICBQeV9zc2l6ZV90IG47CisgICAgbiA9IFB5TnVtYmVyX0FzU3NpemVfdChhcmcsIFB5RXhjX1ZhbHVlRXJyb3IpOworICAgIGlmIChuID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBzZWxmLT53cml0dGVuID0gbjsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5TWVtYmVyRGVmIE9TRXJyb3JfbWVtYmVyc1tdID0geworICAgIHsiZXJybm8iLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlPU0Vycm9yT2JqZWN0LCBteWVycm5vKSwgMCwKKyAgICAgICAgUHlEb2NfU1RSKCJQT1NJWCBleGNlcHRpb24gY29kZSIpfSwKKyAgICB7InN0cmVycm9yIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5T1NFcnJvck9iamVjdCwgc3RyZXJyb3IpLCAwLAorICAgICAgICBQeURvY19TVFIoImV4Y2VwdGlvbiBzdHJlcnJvciIpfSwKKyAgICB7ImZpbGVuYW1lIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5T1NFcnJvck9iamVjdCwgZmlsZW5hbWUpLCAwLAorICAgICAgICBQeURvY19TVFIoImV4Y2VwdGlvbiBmaWxlbmFtZSIpfSwKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgeyJ3aW5lcnJvciIsIFRfT0JKRUNULCBvZmZzZXRvZihQeU9TRXJyb3JPYmplY3QsIHdpbmVycm9yKSwgMCwKKyAgICAgICAgUHlEb2NfU1RSKCJXaW4zMiBleGNlcHRpb24gY29kZSIpfSwKKyNlbmRpZgorICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQeU1ldGhvZERlZiBPU0Vycm9yX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pT1NFcnJvcl9yZWR1Y2UsIE1FVEhfTk9BUkdTfSwKICAgICB7TlVMTH0KIH07CiAKLUNvbXBsZXhFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0V4Y2VwdGlvbiwgRW52aXJvbm1lbnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgIEVudmlyb25tZW50RXJyb3IsIEVudmlyb25tZW50RXJyb3JfZGVhbGxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgIEVudmlyb25tZW50RXJyb3JfbWV0aG9kcywgRW52aXJvbm1lbnRFcnJvcl9tZW1iZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgRW52aXJvbm1lbnRFcnJvcl9zdHIsCitzdGF0aWMgUHlHZXRTZXREZWYgT1NFcnJvcl9nZXRzZXRbXSA9IHsKKyAgICB7ImNoYXJhY3RlcnNfd3JpdHRlbiIsIChnZXR0ZXIpIE9TRXJyb3Jfd3JpdHRlbl9nZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0dGVyKSBPU0Vycm9yX3dyaXR0ZW5fc2V0LCBOVUxMfSwKKyAgICB7TlVMTH0KK307CisKKworQ29tcGxleEV4dGVuZHNFeGNlcHRpb24oUHlFeGNfRXhjZXB0aW9uLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgT1NFcnJvciwgT1NFcnJvcl9uZXcsCisgICAgICAgICAgICAgICAgICAgICAgICBPU0Vycm9yX21ldGhvZHMsIE9TRXJyb3JfbWVtYmVycywgT1NFcnJvcl9nZXRzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICBPU0Vycm9yX3N0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICJCYXNlIGNsYXNzIGZvciBJL08gcmVsYXRlZCBlcnJvcnMuIik7CiAKIAogLyoKLSAqICAgIElPRXJyb3IgZXh0ZW5kcyBFbnZpcm9ubWVudEVycm9yCisgKiAgICBWYXJpb3VzIE9TRXJyb3Igc3ViY2xhc3NlcwogICovCi1NaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfRW52aXJvbm1lbnRFcnJvciwgSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICBFbnZpcm9ubWVudEVycm9yLCAiSS9PIG9wZXJhdGlvbiBmYWlsZWQuIik7Ci0KLQotLyoKLSAqICAgIE9TRXJyb3IgZXh0ZW5kcyBFbnZpcm9ubWVudEVycm9yCi0gKi8KLU1pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19FbnZpcm9ubWVudEVycm9yLCBPU0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIEVudmlyb25tZW50RXJyb3IsICJPUyBzeXN0ZW0gY2FsbCBmYWlsZWQuIik7Ci0KLQotLyoKLSAqICAgIFdpbmRvd3NFcnJvciBleHRlbmRzIE9TRXJyb3IKLSAqLwotI2lmZGVmIE1TX1dJTkRPV1MKLSNpbmNsdWRlICJlcnJtYXAuaCIKLQotc3RhdGljIGludAotV2luZG93c0Vycm9yX2NsZWFyKFB5V2luZG93c0Vycm9yT2JqZWN0ICpzZWxmKQotewotICAgIFB5X0NMRUFSKHNlbGYtPm15ZXJybm8pOwotICAgIFB5X0NMRUFSKHNlbGYtPnN0cmVycm9yKTsKLSAgICBQeV9DTEVBUihzZWxmLT5maWxlbmFtZSk7Ci0gICAgUHlfQ0xFQVIoc2VsZi0+d2luZXJyb3IpOwotICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX2NsZWFyKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKTsKLX0KLQotc3RhdGljIHZvaWQKLVdpbmRvd3NFcnJvcl9kZWFsbG9jKFB5V2luZG93c0Vycm9yT2JqZWN0ICpzZWxmKQotewotICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHNlbGYpOwotICAgIFdpbmRvd3NFcnJvcl9jbGVhcihzZWxmKTsKLSAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOwotfQotCi1zdGF0aWMgaW50Ci1XaW5kb3dzRXJyb3JfdHJhdmVyc2UoUHlXaW5kb3dzRXJyb3JPYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQotewotICAgIFB5X1ZJU0lUKHNlbGYtPm15ZXJybm8pOwotICAgIFB5X1ZJU0lUKHNlbGYtPnN0cmVycm9yKTsKLSAgICBQeV9WSVNJVChzZWxmLT5maWxlbmFtZSk7Ci0gICAgUHlfVklTSVQoc2VsZi0+d2luZXJyb3IpOwotICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX3RyYXZlcnNlKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmLCB2aXNpdCwgYXJnKTsKLX0KLQotc3RhdGljIGludAotV2luZG93c0Vycm9yX2luaXQoUHlXaW5kb3dzRXJyb3JPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLXsKLSAgICBQeU9iamVjdCAqb19lcnJjb2RlID0gTlVMTDsKLSAgICBsb25nIGVycmNvZGU7Ci0gICAgbG9uZyBwb3NpeF9lcnJubzsKLQotICAgIGlmIChFbnZpcm9ubWVudEVycm9yX2luaXQoKFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCAqKXNlbGYsIGFyZ3MsIGt3ZHMpCi0gICAgICAgICAgICA9PSAtMSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaWYgKHNlbGYtPm15ZXJybm8gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvKiBTZXQgZXJybm8gdG8gdGhlIFBPU0lYIGVycm5vLCBhbmQgd2luZXJyb3IgdG8gdGhlIFdpbjMyCi0gICAgICAgZXJyb3IgY29kZS4gKi8KLSAgICBlcnJjb2RlID0gUHlMb25nX0FzTG9uZyhzZWxmLT5teWVycm5vKTsKLSAgICBpZiAoZXJyY29kZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgcG9zaXhfZXJybm8gPSB3aW5lcnJvcl90b19lcnJubyhlcnJjb2RlKTsKLQotICAgIFB5X0NMRUFSKHNlbGYtPndpbmVycm9yKTsKLSAgICBzZWxmLT53aW5lcnJvciA9IHNlbGYtPm15ZXJybm87Ci0KLSAgICBvX2VycmNvZGUgPSBQeUxvbmdfRnJvbUxvbmcocG9zaXhfZXJybm8pOwotICAgIGlmICghb19lcnJjb2RlKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBzZWxmLT5teWVycm5vID0gb19lcnJjb2RlOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLQotc3RhdGljIFB5T2JqZWN0ICoKLVdpbmRvd3NFcnJvcl9zdHIoUHlXaW5kb3dzRXJyb3JPYmplY3QgKnNlbGYpCi17Ci0gICAgaWYgKHNlbGYtPmZpbGVuYW1lKQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIltFcnJvciAlU10gJVM6ICVSIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPndpbmVycm9yID8gc2VsZi0+d2luZXJyb3I6IFB5X05vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5zdHJlcnJvciA/IHNlbGYtPnN0cmVycm9yOiBQeV9Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZmlsZW5hbWUpOwotICAgIGVsc2UgaWYgKHNlbGYtPndpbmVycm9yICYmIHNlbGYtPnN0cmVycm9yKQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIltFcnJvciAlU10gJVMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+d2luZXJyb3IgPyBzZWxmLT53aW5lcnJvcjogUHlfTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0cmVycm9yID8gc2VsZi0+c3RyZXJyb3I6IFB5X05vbmUpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIEVudmlyb25tZW50RXJyb3Jfc3RyKChQeUVudmlyb25tZW50RXJyb3JPYmplY3QgKilzZWxmKTsKLX0KLQotc3RhdGljIFB5TWVtYmVyRGVmIFdpbmRvd3NFcnJvcl9tZW1iZXJzW10gPSB7Ci0gICAgeyJlcnJubyIsIFRfT0JKRUNULCBvZmZzZXRvZihQeVdpbmRvd3NFcnJvck9iamVjdCwgbXllcnJubyksIDAsCi0gICAgICAgIFB5RG9jX1NUUigiUE9TSVggZXhjZXB0aW9uIGNvZGUiKX0sCi0gICAgeyJzdHJlcnJvciIsIFRfT0JKRUNULCBvZmZzZXRvZihQeVdpbmRvd3NFcnJvck9iamVjdCwgc3RyZXJyb3IpLCAwLAotICAgICAgICBQeURvY19TVFIoImV4Y2VwdGlvbiBzdHJlcnJvciIpfSwKLSAgICB7ImZpbGVuYW1lIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5V2luZG93c0Vycm9yT2JqZWN0LCBmaWxlbmFtZSksIDAsCi0gICAgICAgIFB5RG9jX1NUUigiZXhjZXB0aW9uIGZpbGVuYW1lIil9LAotICAgIHsid2luZXJyb3IiLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlXaW5kb3dzRXJyb3JPYmplY3QsIHdpbmVycm9yKSwgMCwKLSAgICAgICAgUHlEb2NfU1RSKCJXaW4zMiBleGNlcHRpb24gY29kZSIpfSwKLSAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCi19OwotCi1Db21wbGV4RXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19PU0Vycm9yLCBXaW5kb3dzRXJyb3IsIFdpbmRvd3NFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvd3NFcnJvcl9kZWFsbG9jLCAwLCBXaW5kb3dzRXJyb3JfbWVtYmVycywKLSAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvd3NFcnJvcl9zdHIsICJNUy1XaW5kb3dzIE9TIHN5c3RlbSBjYWxsIGZhaWxlZC4iKTsKLQotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KLQotCi0vKgotICogICAgVk1TRXJyb3IgZXh0ZW5kcyBPU0Vycm9yIChJIHRoaW5rKQotICovCi0jaWZkZWYgX19WTVMKLU1pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19PU0Vycm9yLCBWTVNFcnJvciwgRW52aXJvbm1lbnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiT3BlblZNUyBPUyBzeXN0ZW0gY2FsbCBmYWlsZWQuIik7Ci0jZW5kaWYKLQorTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIEJsb2NraW5nSU9FcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiSS9PIG9wZXJhdGlvbiB3b3VsZCBibG9jay4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19PU0Vycm9yLCBDb25uZWN0aW9uRXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3Rpb24gZXJyb3IuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfT1NFcnJvciwgQ2hpbGRQcm9jZXNzRXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkNoaWxkIHByb2Nlc3MgZXJyb3IuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfQ29ubmVjdGlvbkVycm9yLCBCcm9rZW5QaXBlRXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkJyb2tlbiBwaXBlLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0Nvbm5lY3Rpb25FcnJvciwgQ29ubmVjdGlvbkFib3J0ZWRFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGlvbiBhYm9ydGVkLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0Nvbm5lY3Rpb25FcnJvciwgQ29ubmVjdGlvblJlZnVzZWRFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGlvbiByZWZ1c2VkLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0Nvbm5lY3Rpb25FcnJvciwgQ29ubmVjdGlvblJlc2V0RXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3Rpb24gcmVzZXQuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfT1NFcnJvciwgRmlsZUV4aXN0c0Vycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJGaWxlIGFscmVhZHkgZXhpc3RzLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIEZpbGVOb3RGb3VuZEVycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJGaWxlIG5vdCBmb3VuZC4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19PU0Vycm9yLCBJc0FEaXJlY3RvcnlFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiT3BlcmF0aW9uIGRvZXNuJ3Qgd29yayBvbiBkaXJlY3Rvcmllcy4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19PU0Vycm9yLCBOb3RBRGlyZWN0b3J5RXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIk9wZXJhdGlvbiBvbmx5IHdvcmtzIG9uIGRpcmVjdG9yaWVzLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIEludGVycnVwdGVkRXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkludGVycnVwdGVkIGJ5IHNpZ25hbC4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19PU0Vycm9yLCBQZXJtaXNzaW9uRXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIk5vdCBlbm91Z2ggcGVybWlzc2lvbnMuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfT1NFcnJvciwgUHJvY2Vzc0xvb2t1cEVycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJQcm9jZXNzIG5vdCBmb3VuZC4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19PU0Vycm9yLCBUaW1lb3V0RXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIlRpbWVvdXQgZXhwaXJlZC4iKTsKIAogLyoKICAqICAgIEVPRkVycm9yIGV4dGVuZHMgRXhjZXB0aW9uCkBAIC05NzYsMjEgKzEyODgsMjMgQEAKIHN0YXRpYyBQeU9iamVjdCoKIG15X2Jhc2VuYW1lKFB5T2JqZWN0ICpuYW1lKQogewotICAgIFB5X1VOSUNPREUgKnVuaWNvZGU7CiAgICAgUHlfc3NpemVfdCBpLCBzaXplLCBvZmZzZXQ7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKIAotICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShuYW1lKTsKLSAgICBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKG5hbWUpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobmFtZSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChuYW1lKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEobmFtZSk7CisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpOwogICAgIG9mZnNldCA9IDA7CiAgICAgZm9yKGk9MDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICBpZiAodW5pY29kZVtpXSA9PSBTRVApCisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSA9PSBTRVApCiAgICAgICAgICAgICBvZmZzZXQgPSBpICsgMTsKICAgICB9Ci0gICAgaWYgKG9mZnNldCAhPSAwKSB7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoCi0gICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShuYW1lKSArIG9mZnNldCwKLSAgICAgICAgICAgIHNpemUgLSBvZmZzZXQpOwotICAgIH0gZWxzZSB7CisgICAgaWYgKG9mZnNldCAhPSAwKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX1N1YnN0cmluZyhuYW1lLCBvZmZzZXQsIHNpemUpOworICAgIGVsc2UgewogICAgICAgICBQeV9JTkNSRUYobmFtZSk7CiAgICAgICAgIHJldHVybiBuYW1lOwogICAgIH0KQEAgLTEwNTgsNyArMTM3Miw3IEBACiB9OwogCiBDb21wbGV4RXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19FeGNlcHRpb24sIFN5bnRheEVycm9yLCBTeW50YXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgIFN5bnRheEVycm9yX2RlYWxsb2MsIDAsIFN5bnRheEVycm9yX21lbWJlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCBTeW50YXhFcnJvcl9tZW1iZXJzLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgU3ludGF4RXJyb3Jfc3RyLCAiSW52YWxpZCBzeW50YXguIik7CiAKIApAQCAtMTExMiw3ICsxNDI2LDcgQEAKIH0KIAogQ29tcGxleEV4dGVuZHNFeGNlcHRpb24oUHlFeGNfTG9va3VwRXJyb3IsIEtleUVycm9yLCBCYXNlRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgS2V5RXJyb3Jfc3RyLCAiTWFwcGluZyBrZXkgbm90IGZvdW5kLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgS2V5RXJyb3Jfc3RyLCAiTWFwcGluZyBrZXkgbm90IGZvdW5kLiIpOwogCiAKIC8qCkBAIC0xMjExLDcgKzE1MjUsNyBAQAogICAgIGlmICghb2JqKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgKnN0YXJ0ID0gKChQeVVuaWNvZGVFcnJvck9iamVjdCAqKWV4YyktPnN0YXJ0OwotICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKTsKKyAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKICAgICBpZiAoKnN0YXJ0PDApCiAgICAgICAgICpzdGFydCA9IDA7IC8qWFhYIGNoZWNrIGZvciB2YWx1ZXMgPDAqLwogICAgIGlmICgqc3RhcnQ+PXNpemUpCkBAIC0xMjc5LDcgKzE1OTMsNyBAQAogICAgIGlmICghb2JqKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgKmVuZCA9ICgoUHlVbmljb2RlRXJyb3JPYmplY3QgKilleGMpLT5lbmQ7Ci0gICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShvYmopOworICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOwogICAgIGlmICgqZW5kPDEpCiAgICAgICAgICplbmQgPSAxOwogICAgIGlmICgqZW5kPnNpemUpCkBAIC0xNDUxLDYgKzE3NjUsMTEgQEAKICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShlcnItPm9iamVjdCkgPCAtMSkgeworICAgICAgICBlcnItPmVuY29kaW5nID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKwogICAgIFB5X0lOQ1JFRihlcnItPmVuY29kaW5nKTsKICAgICBQeV9JTkNSRUYoZXJyLT5vYmplY3QpOwogICAgIFB5X0lOQ1JFRihlcnItPnJlYXNvbik7CkBAIC0xNDc1LDggKzE3OTQsOCBAQAogICAgIGlmIChlbmNvZGluZ19zdHIgPT0gTlVMTCkKICAgICAgICAgZ290byBkb25lOwogCi0gICAgaWYgKHVzZWxmLT5zdGFydCA8IFB5VW5pY29kZV9HRVRfU0laRSh1c2VsZi0+b2JqZWN0KSAmJiB1c2VsZi0+ZW5kID09IHVzZWxmLT5zdGFydCsxKSB7Ci0gICAgICAgIGludCBiYWRjaGFyID0gKGludClQeVVuaWNvZGVfQVNfVU5JQ09ERSh1c2VsZi0+b2JqZWN0KVt1c2VsZi0+c3RhcnRdOworICAgIGlmICh1c2VsZi0+c3RhcnQgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1c2VsZi0+b2JqZWN0KSAmJiB1c2VsZi0+ZW5kID09IHVzZWxmLT5zdGFydCsxKSB7CisgICAgICAgIFB5X1VDUzQgYmFkY2hhciA9IFB5VW5pY29kZV9SZWFkQ2hhcih1c2VsZi0+b2JqZWN0LCB1c2VsZi0+c3RhcnQpOwogICAgICAgICBjb25zdCBjaGFyICpmbXQ7CiAgICAgICAgIGlmIChiYWRjaGFyIDw9IDB4ZmYpCiAgICAgICAgICAgICBmbXQgPSAiJyVVJyBjb2RlYyBjYW4ndCBlbmNvZGUgY2hhcmFjdGVyICdcXHglMDJ4JyBpbiBwb3NpdGlvbiAlemQ6ICVVIjsKQEAgLTE0ODcsNyArMTgwNiw3IEBACiAgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KAogICAgICAgICAgICAgZm10LAogICAgICAgICAgICAgZW5jb2Rpbmdfc3RyLAotICAgICAgICAgICAgYmFkY2hhciwKKyAgICAgICAgICAgIChpbnQpYmFkY2hhciwKICAgICAgICAgICAgIHVzZWxmLT5zdGFydCwKICAgICAgICAgICAgIHJlYXNvbl9zdHIpOwogICAgIH0KQEAgLTE2ODQsOCArMjAwMyw4IEBACiAgICAgaWYgKHJlYXNvbl9zdHIgPT0gTlVMTCkKICAgICAgICAgZ290byBkb25lOwogCi0gICAgaWYgKHVzZWxmLT5zdGFydCA8IFB5VW5pY29kZV9HRVRfU0laRSh1c2VsZi0+b2JqZWN0KSAmJiB1c2VsZi0+ZW5kID09IHVzZWxmLT5zdGFydCsxKSB7Ci0gICAgICAgIGludCBiYWRjaGFyID0gKGludClQeVVuaWNvZGVfQVNfVU5JQ09ERSh1c2VsZi0+b2JqZWN0KVt1c2VsZi0+c3RhcnRdOworICAgIGlmICh1c2VsZi0+c3RhcnQgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1c2VsZi0+b2JqZWN0KSAmJiB1c2VsZi0+ZW5kID09IHVzZWxmLT5zdGFydCsxKSB7CisgICAgICAgIFB5X1VDUzQgYmFkY2hhciA9IFB5VW5pY29kZV9SZWFkQ2hhcih1c2VsZi0+b2JqZWN0LCB1c2VsZi0+c3RhcnQpOwogICAgICAgICBjb25zdCBjaGFyICpmbXQ7CiAgICAgICAgIGlmIChiYWRjaGFyIDw9IDB4ZmYpCiAgICAgICAgICAgICBmbXQgPSAiY2FuJ3QgdHJhbnNsYXRlIGNoYXJhY3RlciAnXFx4JTAyeCcgaW4gcG9zaXRpb24gJXpkOiAlVSI7CkBAIC0xNjk1LDcgKzIwMTQsNyBAQAogICAgICAgICAgICAgZm10ID0gImNhbid0IHRyYW5zbGF0ZSBjaGFyYWN0ZXIgJ1xcVSUwOHgnIGluIHBvc2l0aW9uICV6ZDogJVUiOwogICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKICAgICAgICAgICAgIGZtdCwKLSAgICAgICAgICAgIGJhZGNoYXIsCisgICAgICAgICAgICAoaW50KWJhZGNoYXIsCiAgICAgICAgICAgICB1c2VsZi0+c3RhcnQsCiAgICAgICAgICAgICByZWFzb25fc3RyCiAgICAgICAgICk7CkBAIC0xNzI2LDYgKzIwNDUsNyBAQAogfTsKIFB5T2JqZWN0ICpQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3IgPSAoUHlPYmplY3QgKikmX1B5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvcjsKIAorLyogRGVwcmVjYXRlZC4gKi8KIFB5T2JqZWN0ICoKIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0NyZWF0ZSgKICAgICBjb25zdCBQeV9VTklDT0RFICpvYmplY3QsIFB5X3NzaXplX3QgbGVuZ3RoLApAQCAtMTczNSw2ICsyMDU1LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QsIGxlbmd0aCwgc3RhcnQsIGVuZCwgcmVhc29uKTsKIH0KIAorUHlPYmplY3QgKgorX1B5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0NyZWF0ZSgKKyAgICBQeU9iamVjdCAqb2JqZWN0LAorICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kLCBjb25zdCBjaGFyICpyZWFzb24pCit7CisgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3IsICJPbnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0LCBzdGFydCwgZW5kLCByZWFzb24pOworfQogCiAvKgogICogICAgQXNzZXJ0aW9uRXJyb3IgZXh0ZW5kcyBFeGNlcHRpb24KQEAgLTE5ODQsMTEgKzIzMTIsODAgQEAKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoYmRpY3QsICMgVFlQRSwgUHlFeGNfICMjIFRZUEUpKSBcCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIk1vZHVsZSBkaWN0aW9uYXJ5IGluc2VydGlvbiBwcm9ibGVtLiIpOwogCisjZGVmaW5lIElOSVRfQUxJQVMoTkFNRSwgVFlQRSkgUHlfSU5DUkVGKFB5RXhjXyAjIyBUWVBFKTsgXAorICAgIFB5X1hERUNSRUYoUHlFeGNfICMjIE5BTUUpOyBcCisgICAgUHlFeGNfICMjIE5BTUUgPSBQeUV4Y18gIyMgVFlQRTsgXAorICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhiZGljdCwgIyBOQU1FLCBQeUV4Y18gIyMgTkFNRSkpIFwKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiTW9kdWxlIGRpY3Rpb25hcnkgaW5zZXJ0aW9uIHByb2JsZW0uIik7CisKKyNkZWZpbmUgQUREX0VSUk5PKFRZUEUsIENPREUpIHsgXAorICAgIFB5T2JqZWN0ICpfY29kZSA9IFB5TG9uZ19Gcm9tTG9uZyhDT0RFKTsgXAorICAgIGFzc2VydChfUHlPYmplY3RfUmVhbElzU3ViY2xhc3MoUHlFeGNfICMjIFRZUEUsIFB5RXhjX09TRXJyb3IpKTsgXAorICAgIGlmICghX2NvZGUgfHwgUHlEaWN0X1NldEl0ZW0oZXJybm9tYXAsIF9jb2RlLCBQeUV4Y18gIyMgVFlQRSkpIFwKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiZXJybWFwIGluc2VydGlvbiBwcm9ibGVtLiIpOyBcCisgICAgUHlfREVDUkVGKF9jb2RlKTsgXAorICAgIH0KKworI2lmZGVmIE1TX1dJTkRPV1MKKyNpbmNsdWRlIDxXaW5zb2NrMi5oPgorLyogVGhlIGZvbGxvd2luZyBjb25zdGFudHMgd2VyZSBhZGRlZCB0byBlcnJuby5oIGluIFZTMjAxMCBidXQgaGF2ZQorICAgcHJlZmVycmVkIFdTQSBlcXVpdmFsZW50cy4gKi8KKyN1bmRlZiBFQUREUklOVVNFCisjdW5kZWYgRUFERFJOT1RBVkFJTAorI3VuZGVmIEVBRk5PU1VQUE9SVAorI3VuZGVmIEVBTFJFQURZCisjdW5kZWYgRUNPTk5BQk9SVEVECisjdW5kZWYgRUNPTk5SRUZVU0VECisjdW5kZWYgRUNPTk5SRVNFVAorI3VuZGVmIEVERVNUQUREUlJFUQorI3VuZGVmIEVIT1NUVU5SRUFDSAorI3VuZGVmIEVJTlBST0dSRVNTCisjdW5kZWYgRUlTQ09OTgorI3VuZGVmIEVMT09QCisjdW5kZWYgRU1TR1NJWkUKKyN1bmRlZiBFTkVURE9XTgorI3VuZGVmIEVORVRSRVNFVAorI3VuZGVmIEVORVRVTlJFQUNICisjdW5kZWYgRU5PQlVGUworI3VuZGVmIEVOT1BST1RPT1BUCisjdW5kZWYgRU5PVENPTk4KKyN1bmRlZiBFTk9UU09DSworI3VuZGVmIEVPUE5PVFNVUFAKKyN1bmRlZiBFUFJPVE9OT1NVUFBPUlQKKyN1bmRlZiBFUFJPVE9UWVBFCisjdW5kZWYgRVRJTUVET1VUCisjdW5kZWYgRVdPVUxEQkxPQ0sKKworI2lmIGRlZmluZWQoV1NBRUFMUkVBRFkpICYmICFkZWZpbmVkKEVBTFJFQURZKQorI2RlZmluZSBFQUxSRUFEWSBXU0FFQUxSRUFEWQorI2VuZGlmCisjaWYgZGVmaW5lZChXU0FFQ09OTkFCT1JURUQpICYmICFkZWZpbmVkKEVDT05OQUJPUlRFRCkKKyNkZWZpbmUgRUNPTk5BQk9SVEVEIFdTQUVDT05OQUJPUlRFRAorI2VuZGlmCisjaWYgZGVmaW5lZChXU0FFQ09OTlJFRlVTRUQpICYmICFkZWZpbmVkKEVDT05OUkVGVVNFRCkKKyNkZWZpbmUgRUNPTk5SRUZVU0VEIFdTQUVDT05OUkVGVVNFRAorI2VuZGlmCisjaWYgZGVmaW5lZChXU0FFQ09OTlJFU0VUKSAmJiAhZGVmaW5lZChFQ09OTlJFU0VUKQorI2RlZmluZSBFQ09OTlJFU0VUIFdTQUVDT05OUkVTRVQKKyNlbmRpZgorI2lmIGRlZmluZWQoV1NBRUlOUFJPR1JFU1MpICYmICFkZWZpbmVkKEVJTlBST0dSRVNTKQorI2RlZmluZSBFSU5QUk9HUkVTUyBXU0FFSU5QUk9HUkVTUworI2VuZGlmCisjaWYgZGVmaW5lZChXU0FFU0hVVERPV04pICYmICFkZWZpbmVkKEVTSFVURE9XTikKKyNkZWZpbmUgRVNIVVRET1dOIFdTQUVTSFVURE9XTgorI2VuZGlmCisjaWYgZGVmaW5lZChXU0FFVElNRURPVVQpICYmICFkZWZpbmVkKEVUSU1FRE9VVCkKKyNkZWZpbmUgRVRJTUVET1VUIFdTQUVUSU1FRE9VVAorI2VuZGlmCisjaWYgZGVmaW5lZChXU0FFV09VTERCTE9DSykgJiYgIWRlZmluZWQoRVdPVUxEQkxPQ0spCisjZGVmaW5lIEVXT1VMREJMT0NLIFdTQUVXT1VMREJMT0NLCisjZW5kaWYKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIHZvaWQKLV9QeUV4Y19Jbml0KHZvaWQpCitfUHlFeGNfSW5pdChQeU9iamVjdCAqYmx0aW5tb2QpCiB7Ci0gICAgUHlPYmplY3QgKmJsdGlubW9kLCAqYmRpY3Q7CisgICAgUHlPYmplY3QgKmJkaWN0OwogCiAgICAgUFJFX0lOSVQoQmFzZUV4Y2VwdGlvbikKICAgICBQUkVfSU5JVChFeGNlcHRpb24pCkBAIC0xOTk4LDE1ICsyMzk1LDcgQEAKICAgICBQUkVfSU5JVChTeXN0ZW1FeGl0KQogICAgIFBSRV9JTklUKEtleWJvYXJkSW50ZXJydXB0KQogICAgIFBSRV9JTklUKEltcG9ydEVycm9yKQotICAgIFBSRV9JTklUKEVudmlyb25tZW50RXJyb3IpCi0gICAgUFJFX0lOSVQoSU9FcnJvcikKICAgICBQUkVfSU5JVChPU0Vycm9yKQotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBQUkVfSU5JVChXaW5kb3dzRXJyb3IpCi0jZW5kaWYKLSNpZmRlZiBfX1ZNUwotICAgIFBSRV9JTklUKFZNU0Vycm9yKQotI2VuZGlmCiAgICAgUFJFX0lOSVQoRU9GRXJyb3IpCiAgICAgUFJFX0lOSVQoUnVudGltZUVycm9yKQogICAgIFBSRV9JTklUKE5vdEltcGxlbWVudGVkRXJyb3IpCkBAIC0yMDQ2LDkgKzI0MzUsMjQgQEAKICAgICBQUkVfSU5JVChCeXRlc1dhcm5pbmcpCiAgICAgUFJFX0lOSVQoUmVzb3VyY2VXYXJuaW5nKQogCi0gICAgYmx0aW5tb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImJ1aWx0aW5zIik7Ci0gICAgaWYgKGJsdGlubW9kID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoImV4Y2VwdGlvbnMgYm9vdHN0cmFwcGluZyBlcnJvci4iKTsKKyAgICAvKiBPU0Vycm9yIHN1YmNsYXNzZXMgKi8KKyAgICBQUkVfSU5JVChDb25uZWN0aW9uRXJyb3IpOworCisgICAgUFJFX0lOSVQoQmxvY2tpbmdJT0Vycm9yKTsKKyAgICBQUkVfSU5JVChCcm9rZW5QaXBlRXJyb3IpOworICAgIFBSRV9JTklUKENoaWxkUHJvY2Vzc0Vycm9yKTsKKyAgICBQUkVfSU5JVChDb25uZWN0aW9uQWJvcnRlZEVycm9yKTsKKyAgICBQUkVfSU5JVChDb25uZWN0aW9uUmVmdXNlZEVycm9yKTsKKyAgICBQUkVfSU5JVChDb25uZWN0aW9uUmVzZXRFcnJvcik7CisgICAgUFJFX0lOSVQoRmlsZUV4aXN0c0Vycm9yKTsKKyAgICBQUkVfSU5JVChGaWxlTm90Rm91bmRFcnJvcik7CisgICAgUFJFX0lOSVQoSXNBRGlyZWN0b3J5RXJyb3IpOworICAgIFBSRV9JTklUKE5vdEFEaXJlY3RvcnlFcnJvcik7CisgICAgUFJFX0lOSVQoSW50ZXJydXB0ZWRFcnJvcik7CisgICAgUFJFX0lOSVQoUGVybWlzc2lvbkVycm9yKTsKKyAgICBQUkVfSU5JVChQcm9jZXNzTG9va3VwRXJyb3IpOworICAgIFBSRV9JTklUKFRpbWVvdXRFcnJvcik7CisKICAgICBiZGljdCA9IFB5TW9kdWxlX0dldERpY3QoYmx0aW5tb2QpOwogICAgIGlmIChiZGljdCA9PSBOVUxMKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJleGNlcHRpb25zIGJvb3RzdHJhcHBpbmcgZXJyb3IuIik7CkBAIC0yMDYxLDE0ICsyNDY1LDE0IEBACiAgICAgUE9TVF9JTklUKFN5c3RlbUV4aXQpCiAgICAgUE9TVF9JTklUKEtleWJvYXJkSW50ZXJydXB0KQogICAgIFBPU1RfSU5JVChJbXBvcnRFcnJvcikKLSAgICBQT1NUX0lOSVQoRW52aXJvbm1lbnRFcnJvcikKLSAgICBQT1NUX0lOSVQoSU9FcnJvcikKICAgICBQT1NUX0lOSVQoT1NFcnJvcikKKyAgICBJTklUX0FMSUFTKEVudmlyb25tZW50RXJyb3IsIE9TRXJyb3IpCisgICAgSU5JVF9BTElBUyhJT0Vycm9yLCBPU0Vycm9yKQogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBQT1NUX0lOSVQoV2luZG93c0Vycm9yKQorICAgIElOSVRfQUxJQVMoV2luZG93c0Vycm9yLCBPU0Vycm9yKQogI2VuZGlmCiAjaWZkZWYgX19WTVMKLSAgICBQT1NUX0lOSVQoVk1TRXJyb3IpCisgICAgSU5JVF9BTElBUyhWTVNFcnJvciwgT1NFcnJvcikKICNlbmRpZgogICAgIFBPU1RfSU5JVChFT0ZFcnJvcikKICAgICBQT1NUX0lOSVQoUnVudGltZUVycm9yKQpAQCAtMjEwOSw2ICsyNTEzLDQ5IEBACiAgICAgUE9TVF9JTklUKEJ5dGVzV2FybmluZykKICAgICBQT1NUX0lOSVQoUmVzb3VyY2VXYXJuaW5nKQogCisgICAgaWYgKCFlcnJub21hcCkgeworICAgICAgICBlcnJub21hcCA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgaWYgKCFlcnJub21hcCkKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbm5vdCBhbGxvY2F0ZSBtYXAgZnJvbSBlcnJub3MgdG8gT1NFcnJvciBzdWJjbGFzc2VzIik7CisgICAgfQorCisgICAgLyogT1NFcnJvciBzdWJjbGFzc2VzICovCisgICAgUE9TVF9JTklUKENvbm5lY3Rpb25FcnJvcik7CisKKyAgICBQT1NUX0lOSVQoQmxvY2tpbmdJT0Vycm9yKTsKKyAgICBBRERfRVJSTk8oQmxvY2tpbmdJT0Vycm9yLCBFQUdBSU4pOworICAgIEFERF9FUlJOTyhCbG9ja2luZ0lPRXJyb3IsIEVBTFJFQURZKTsKKyAgICBBRERfRVJSTk8oQmxvY2tpbmdJT0Vycm9yLCBFSU5QUk9HUkVTUyk7CisgICAgQUREX0VSUk5PKEJsb2NraW5nSU9FcnJvciwgRVdPVUxEQkxPQ0spOworICAgIFBPU1RfSU5JVChCcm9rZW5QaXBlRXJyb3IpOworICAgIEFERF9FUlJOTyhCcm9rZW5QaXBlRXJyb3IsIEVQSVBFKTsKKyAgICBBRERfRVJSTk8oQnJva2VuUGlwZUVycm9yLCBFU0hVVERPV04pOworICAgIFBPU1RfSU5JVChDaGlsZFByb2Nlc3NFcnJvcik7CisgICAgQUREX0VSUk5PKENoaWxkUHJvY2Vzc0Vycm9yLCBFQ0hJTEQpOworICAgIFBPU1RfSU5JVChDb25uZWN0aW9uQWJvcnRlZEVycm9yKTsKKyAgICBBRERfRVJSTk8oQ29ubmVjdGlvbkFib3J0ZWRFcnJvciwgRUNPTk5BQk9SVEVEKTsKKyAgICBQT1NUX0lOSVQoQ29ubmVjdGlvblJlZnVzZWRFcnJvcik7CisgICAgQUREX0VSUk5PKENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IsIEVDT05OUkVGVVNFRCk7CisgICAgUE9TVF9JTklUKENvbm5lY3Rpb25SZXNldEVycm9yKTsKKyAgICBBRERfRVJSTk8oQ29ubmVjdGlvblJlc2V0RXJyb3IsIEVDT05OUkVTRVQpOworICAgIFBPU1RfSU5JVChGaWxlRXhpc3RzRXJyb3IpOworICAgIEFERF9FUlJOTyhGaWxlRXhpc3RzRXJyb3IsIEVFWElTVCk7CisgICAgUE9TVF9JTklUKEZpbGVOb3RGb3VuZEVycm9yKTsKKyAgICBBRERfRVJSTk8oRmlsZU5vdEZvdW5kRXJyb3IsIEVOT0VOVCk7CisgICAgUE9TVF9JTklUKElzQURpcmVjdG9yeUVycm9yKTsKKyAgICBBRERfRVJSTk8oSXNBRGlyZWN0b3J5RXJyb3IsIEVJU0RJUik7CisgICAgUE9TVF9JTklUKE5vdEFEaXJlY3RvcnlFcnJvcik7CisgICAgQUREX0VSUk5PKE5vdEFEaXJlY3RvcnlFcnJvciwgRU5PVERJUik7CisgICAgUE9TVF9JTklUKEludGVycnVwdGVkRXJyb3IpOworICAgIEFERF9FUlJOTyhJbnRlcnJ1cHRlZEVycm9yLCBFSU5UUik7CisgICAgUE9TVF9JTklUKFBlcm1pc3Npb25FcnJvcik7CisgICAgQUREX0VSUk5PKFBlcm1pc3Npb25FcnJvciwgRUFDQ0VTKTsKKyAgICBBRERfRVJSTk8oUGVybWlzc2lvbkVycm9yLCBFUEVSTSk7CisgICAgUE9TVF9JTklUKFByb2Nlc3NMb29rdXBFcnJvcik7CisgICAgQUREX0VSUk5PKFByb2Nlc3NMb29rdXBFcnJvciwgRVNSQ0gpOworICAgIFBPU1RfSU5JVChUaW1lb3V0RXJyb3IpOworICAgIEFERF9FUlJOTyhUaW1lb3V0RXJyb3IsIEVUSU1FRE9VVCk7CisKICAgICBwcmVhbGxvY2F0ZV9tZW1lcnJvcnMoKTsKIAogICAgIGlmICghUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0KSB7CkBAIC0yMTM1LDcgKzI1ODIsNiBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3NfdHVwbGUpOwogICAgICAgICB9CiAgICAgfQotICAgIFB5X0RFQ1JFRihibHRpbm1vZCk7CiB9CiAKIHZvaWQKQEAgLTIxNDMsNCArMjU4OSw1IEBACiB7CiAgICAgUHlfQ0xFQVIoUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0KTsKICAgICBmcmVlX3ByZWFsbG9jYXRlZF9tZW1lcnJvcnMoKTsKKyAgICBQeV9DTEVBUihlcnJub21hcCk7CiB9CmRpZmYgLS1naXQgYS9PYmplY3RzL2ZpbGVvYmplY3QuYyBiL09iamVjdHMvZmlsZW9iamVjdC5jCmluZGV4IDUwMDg4M2UuLjNhMzEzMTQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZmlsZW9iamVjdC5jCisrKyBiL09iamVjdHMvZmlsZW9iamVjdC5jCkBAIC0zMCwxMSArMzAsMTIgQEAKICAgICAgICAgICAgICAgY2hhciAqZXJyb3JzLCBjaGFyICpuZXdsaW5lLCBpbnQgY2xvc2VmZCkKIHsKICAgICBQeU9iamVjdCAqaW8sICpzdHJlYW07CisgICAgX1B5X0lERU5USUZJRVIob3Blbik7CiAKICAgICBpbyA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiaW8iKTsKICAgICBpZiAoaW8gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc3RyZWFtID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbywgIm9wZW4iLCAiaXNpc3NzaSIsIGZkLCBtb2RlLAorICAgIHN0cmVhbSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX29wZW4sICJpc2lzc3NpIiwgZmQsIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJpbmcsIGVuY29kaW5nLCBlcnJvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lLCBjbG9zZWZkKTsKICAgICBQeV9ERUNSRUYoaW8pOwpAQCAtNTgsOCArNTksOSBAQAogICAgIHsKICAgICAgICAgUHlPYmplY3QgKnJlYWRlcjsKICAgICAgICAgUHlPYmplY3QgKmFyZ3M7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHJlYWRsaW5lKTsKIAotICAgICAgICByZWFkZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGYsICJyZWFkbGluZSIpOworICAgICAgICByZWFkZXIgPSBfUHlPYmplY3RfR2V0QXR0cklkKGYsICZQeUlkX3JlYWRsaW5lKTsKICAgICAgICAgaWYgKHJlYWRlciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChuIDw9IDApCkBAIC0xMDMsMjMgKzEwNSwxOCBAQAogICAgICAgICB9CiAgICAgfQogICAgIGlmIChuIDwgMCAmJiByZXN1bHQgIT0gTlVMTCAmJiBQeVVuaWNvZGVfQ2hlY2socmVzdWx0KSkgewotICAgICAgICBQeV9VTklDT0RFICpzID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KTsKLSAgICAgICAgUHlfc3NpemVfdCBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVzdWx0KTsKKyAgICAgICAgUHlfc3NpemVfdCBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXN1bHQpOwogICAgICAgICBpZiAobGVuID09IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgcmVzdWx0ID0gTlVMTDsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19FT0ZFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRU9GIHdoZW4gcmVhZGluZyBhIGxpbmUiKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChzW2xlbi0xXSA9PSAnXG4nKSB7Ci0gICAgICAgICAgICBpZiAocmVzdWx0LT5vYl9yZWZjbnQgPT0gMSkKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUmVzaXplKCZyZXN1bHQsIGxlbi0xKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2OwotICAgICAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocywgbGVuLTEpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHY7Ci0gICAgICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9SRUFEX0NIQVIocmVzdWx0LCBsZW4tMSkgPT0gJ1xuJykgeworICAgICAgICAgICAgUHlPYmplY3QgKnY7CisgICAgICAgICAgICB2ID0gUHlVbmljb2RlX1N1YnN0cmluZyhyZXN1bHQsIDAsIGxlbi0xKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0ID0gdjsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTMxLDExICsxMjgsMTMgQEAKIFB5RmlsZV9Xcml0ZU9iamVjdChQeU9iamVjdCAqdiwgUHlPYmplY3QgKmYsIGludCBmbGFncykKIHsKICAgICBQeU9iamVjdCAqd3JpdGVyLCAqdmFsdWUsICphcmdzLCAqcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKKwogICAgIGlmIChmID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIndyaXRlb2JqZWN0IHdpdGggTlVMTCBmaWxlIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgd3JpdGVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmLCAid3JpdGUiKTsKKyAgICB3cml0ZXIgPSBfUHlPYmplY3RfR2V0QXR0cklkKGYsICZQeUlkX3dyaXRlKTsKICAgICBpZiAod3JpdGVyID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoZmxhZ3MgJiBQeV9QUklOVF9SQVcpIHsKQEAgLTE5OCwxMSArMTk3LDEyIEBACiB7CiAgICAgaW50IGZkOwogICAgIFB5T2JqZWN0ICptZXRoOworICAgIF9QeV9JREVOVElGSUVSKGZpbGVubyk7CiAKICAgICBpZiAoUHlMb25nX0NoZWNrKG8pKSB7CiAgICAgICAgIGZkID0gX1B5TG9uZ19Bc0ludChvKTsKICAgICB9Ci0gICAgZWxzZSBpZiAoKG1ldGggPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG8sICJmaWxlbm8iKSkgIT0gTlVMTCkKKyAgICBlbHNlIGlmICgobWV0aCA9IF9QeU9iamVjdF9HZXRBdHRySWQobywgJlB5SWRfZmlsZW5vKSkgIT0gTlVMTCkKICAgICB7CiAgICAgICAgIFB5T2JqZWN0ICpmbm8gPSBQeUV2YWxfQ2FsbE9iamVjdChtZXRoLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKG1ldGgpOwpAQCAtMjk3LDggKzI5Nyw4IEBACiAgICAgICAgICpwKysgPSBjOwogICAgICAgICBpZiAoYyA9PSAnXG4nKSBicmVhazsKICAgICB9Ci0gICAgaWYgKCBjID09IEVPRiAmJiBza2lwbmV4dGxmICkKLSAgICAgICAgbmV3bGluZXR5cGVzIHw9IE5FV0xJTkVfQ1I7CisgICAgLyogaWYgKCBjID09IEVPRiAmJiBza2lwbmV4dGxmICkKKyAgICAgICAgbmV3bGluZXR5cGVzIHw9IE5FV0xJTkVfQ1I7ICovCiAgICAgRlVOTE9DS0ZJTEUoc3RyZWFtKTsKICAgICAqcCA9ICdcMCc7CiAgICAgaWYgKCBza2lwbmV4dGxmICkgewpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9mbG9hdG9iamVjdC5jIGIvT2JqZWN0cy9mbG9hdG9iamVjdC5jCmluZGV4IGUxNDZhNGYuLmI1NzFjYTggMTAwNjQ0Ci0tLSBhL09iamVjdHMvZmxvYXRvYmplY3QuYworKysgYi9PYmplY3RzL2Zsb2F0b2JqZWN0LmMKQEAgLTE1LDU5ICsxNSwxNyBAQAogI2RlZmluZSBNSU4oeCwgeSkgKCh4KSA8ICh5KSA/ICh4KSA6ICh5KSkKIAogCi0jaWZkZWYgX09TRl9TT1VSQ0UKLS8qIE9TRjEgNS4xIGRvZXNuJ3QgbWFrZSB0aGlzIGF2YWlsYWJsZSB3aXRoIFhPUEVOX1NPVVJDRV9FWFRFTkRFRCBkZWZpbmVkICovCi1leHRlcm4gaW50IGZpbml0ZShkb3VibGUpOwotI2VuZGlmCi0KIC8qIFNwZWNpYWwgZnJlZSBsaXN0Ci0KLSAgIFNpbmNlIHNvbWUgUHl0aG9uIHByb2dyYW1zIGNhbiBzcGVuZCBtdWNoIG9mIHRoZWlyIHRpbWUgYWxsb2NhdGluZwotICAgYW5kIGRlYWxsb2NhdGluZyBmbG9hdHMsIHRoZXNlIG9wZXJhdGlvbnMgc2hvdWxkIGJlIHZlcnkgZmFzdC4KLSAgIFRoZXJlZm9yZSB3ZSB1c2UgYSBkZWRpY2F0ZWQgYWxsb2NhdGlvbiBzY2hlbWUgd2l0aCBhIG11Y2ggbG93ZXIKLSAgIG92ZXJoZWFkIChpbiBzcGFjZSBhbmQgdGltZSkgdGhhbiBzdHJhaWdodCBtYWxsb2MoKTogYSBzaW1wbGUKLSAgIGRlZGljYXRlZCBmcmVlIGxpc3QsIGZpbGxlZCB3aGVuIG5lY2Vzc2FyeSB3aXRoIG1lbW9yeSBmcm9tIG1hbGxvYygpLgotCi0gICBibG9ja19saXN0IGlzIGEgc2luZ2x5LWxpbmtlZCBsaXN0IG9mIGFsbCBQeUZsb2F0QmxvY2tzIGV2ZXIgYWxsb2NhdGVkLAotICAgbGlua2VkIHZpYSB0aGVpciBuZXh0IG1lbWJlcnMuICBQeUZsb2F0QmxvY2tzIGFyZSBuZXZlciByZXR1cm5lZCB0byB0aGUKLSAgIHN5c3RlbSBiZWZvcmUgc2h1dGRvd24gKFB5RmxvYXRfRmluaSkuCi0KICAgIGZyZWVfbGlzdCBpcyBhIHNpbmdseS1saW5rZWQgbGlzdCBvZiBhdmFpbGFibGUgUHlGbG9hdE9iamVjdHMsIGxpbmtlZAogICAgdmlhIGFidXNlIG9mIHRoZWlyIG9iX3R5cGUgbWVtYmVycy4KICovCiAKLSNkZWZpbmUgQkxPQ0tfU0laRSAgICAgIDEwMDAgICAgLyogMUsgbGVzcyB0eXBpY2FsIG1hbGxvYyBvdmVyaGVhZCAqLwotI2RlZmluZSBCSEVBRF9TSVpFICAgICAgOCAgICAgICAvKiBFbm91Z2ggZm9yIGEgNjQtYml0IHBvaW50ZXIgKi8KLSNkZWZpbmUgTl9GTE9BVE9CSkVDVFMgICgoQkxPQ0tfU0laRSAtIEJIRUFEX1NJWkUpIC8gc2l6ZW9mKFB5RmxvYXRPYmplY3QpKQotCi1zdHJ1Y3QgX2Zsb2F0YmxvY2sgewotICAgIHN0cnVjdCBfZmxvYXRibG9jayAqbmV4dDsKLSAgICBQeUZsb2F0T2JqZWN0IG9iamVjdHNbTl9GTE9BVE9CSkVDVFNdOwotfTsKLQotdHlwZWRlZiBzdHJ1Y3QgX2Zsb2F0YmxvY2sgUHlGbG9hdEJsb2NrOwotCi1zdGF0aWMgUHlGbG9hdEJsb2NrICpibG9ja19saXN0ID0gTlVMTDsKKyNpZm5kZWYgUHlGbG9hdF9NQVhGUkVFTElTVAorI2RlZmluZSBQeUZsb2F0X01BWEZSRUVMSVNUICAgIDEwMAorI2VuZGlmCitzdGF0aWMgaW50IG51bWZyZWUgPSAwOwogc3RhdGljIFB5RmxvYXRPYmplY3QgKmZyZWVfbGlzdCA9IE5VTEw7CiAKLXN0YXRpYyBQeUZsb2F0T2JqZWN0ICoKLWZpbGxfZnJlZV9saXN0KHZvaWQpCi17Ci0gICAgUHlGbG9hdE9iamVjdCAqcCwgKnE7Ci0gICAgLyogWFhYIEZsb2F0IGJsb2NrcyBlc2NhcGUgdGhlIG9iamVjdCBoZWFwLiBVc2UgUHlPYmplY3RfTUFMTE9DID8/PyAqLwotICAgIHAgPSAoUHlGbG9hdE9iamVjdCAqKSBQeU1lbV9NQUxMT0Moc2l6ZW9mKFB5RmxvYXRCbG9jaykpOwotICAgIGlmIChwID09IE5VTEwpCi0gICAgICAgIHJldHVybiAoUHlGbG9hdE9iamVjdCAqKSBQeUVycl9Ob01lbW9yeSgpOwotICAgICgoUHlGbG9hdEJsb2NrICopcCktPm5leHQgPSBibG9ja19saXN0OwotICAgIGJsb2NrX2xpc3QgPSAoUHlGbG9hdEJsb2NrICopcDsKLSAgICBwID0gJigoUHlGbG9hdEJsb2NrICopcCktPm9iamVjdHNbMF07Ci0gICAgcSA9IHAgKyBOX0ZMT0FUT0JKRUNUUzsKLSAgICB3aGlsZSAoLS1xID4gcCkKLSAgICAgICAgUHlfVFlQRShxKSA9IChzdHJ1Y3QgX3R5cGVvYmplY3QgKikocS0xKTsKLSAgICBQeV9UWVBFKHEpID0gTlVMTDsKLSAgICByZXR1cm4gcCArIE5fRkxPQVRPQkpFQ1RTIC0gMTsKLX0KLQogZG91YmxlCiBQeUZsb2F0X0dldE1heCh2b2lkKQogewpAQCAtMTU2LDE0ICsxMTQsMTYgQEAKIFB5T2JqZWN0ICoKIFB5RmxvYXRfRnJvbURvdWJsZShkb3VibGUgZnZhbCkKIHsKLSAgICByZWdpc3RlciBQeUZsb2F0T2JqZWN0ICpvcDsKLSAgICBpZiAoZnJlZV9saXN0ID09IE5VTEwpIHsKLSAgICAgICAgaWYgKChmcmVlX2xpc3QgPSBmaWxsX2ZyZWVfbGlzdCgpKSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVnaXN0ZXIgUHlGbG9hdE9iamVjdCAqb3AgPSBmcmVlX2xpc3Q7CisgICAgaWYgKG9wICE9IE5VTEwpIHsKKyAgICAgICAgZnJlZV9saXN0ID0gKFB5RmxvYXRPYmplY3QgKikgUHlfVFlQRShvcCk7CisgICAgICAgIG51bWZyZWUtLTsKKyAgICB9IGVsc2UgeworICAgICAgICBvcCA9IChQeUZsb2F0T2JqZWN0KikgUHlPYmplY3RfTUFMTE9DKHNpemVvZihQeUZsb2F0T2JqZWN0KSk7CisgICAgICAgIGlmICghb3ApCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICB9CiAgICAgLyogSW5saW5lIFB5T2JqZWN0X05ldyAqLwotICAgIG9wID0gZnJlZV9saXN0OwotICAgIGZyZWVfbGlzdCA9IChQeUZsb2F0T2JqZWN0ICopUHlfVFlQRShvcCk7CiAgICAgUHlPYmplY3RfSU5JVChvcCwgJlB5RmxvYXRfVHlwZSk7CiAgICAgb3AtPm9iX2Z2YWwgPSBmdmFsOwogICAgIHJldHVybiAoUHlPYmplY3QgKikgb3A7CkBAIC0xNzksMjUgKzEzOSwxNCBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh2KSkgewotICAgICAgICBQeV9zc2l6ZV90IGksIGJ1ZmxlbiA9IFB5VW5pY29kZV9HRVRfU0laRSh2KTsKLSAgICAgICAgUHlfVU5JQ09ERSAqYnVmcHRyOwotICAgICAgICBzX2J1ZmZlciA9IFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsVG9BU0NJSSgKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHYpLCBidWZsZW4pOworICAgICAgICBzX2J1ZmZlciA9IF9QeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbEFuZFNwYWNlVG9BU0NJSSh2KTsKICAgICAgICAgaWYgKHNfYnVmZmVyID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgLyogUmVwbGFjZSBub24tQVNDSUkgd2hpdGVzcGFjZSB3aXRoICcgJyAqLwotICAgICAgICBidWZwdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzX2J1ZmZlcik7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBidWZsZW47IGkrKykgewotICAgICAgICAgICAgUHlfVU5JQ09ERSBjaCA9IGJ1ZnB0cltpXTsKLSAgICAgICAgICAgIGlmIChjaCA+IDEyNyAmJiBQeV9VTklDT0RFX0lTU1BBQ0UoY2gpKQotICAgICAgICAgICAgICAgIGJ1ZnB0cltpXSA9ICcgJzsKLSAgICAgICAgfQotICAgICAgICBzID0gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUoc19idWZmZXIsICZsZW4pOworICAgICAgICBzID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoc19idWZmZXIsICZsZW4pOwogICAgICAgICBpZiAocyA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc19idWZmZXIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgbGFzdCA9IHMgKyBsZW47CiAgICAgfQogICAgIGVsc2UgaWYgKFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcih2LCAmcywgJmxlbikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKQEAgLTIzMyw2ICsxODIsMTEgQEAKIGZsb2F0X2RlYWxsb2MoUHlGbG9hdE9iamVjdCAqb3ApCiB7CiAgICAgaWYgKFB5RmxvYXRfQ2hlY2tFeGFjdChvcCkpIHsKKyAgICAgICAgaWYgKG51bWZyZWUgPj0gUHlGbG9hdF9NQVhGUkVFTElTVCkgIHsKKyAgICAgICAgICAgIFB5T2JqZWN0X0ZSRUUob3ApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG51bWZyZWUrKzsKICAgICAgICAgUHlfVFlQRShvcCkgPSAoc3RydWN0IF90eXBlb2JqZWN0ICopZnJlZV9saXN0OwogICAgICAgICBmcmVlX2xpc3QgPSBvcDsKICAgICB9CkBAIC0zMTMsMTMgKzI2NywxNSBAQAogZmxvYXRfcmVwcihQeUZsb2F0T2JqZWN0ICp2KQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgY2hhciAqYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKFB5RmxvYXRfQVNfRE9VQkxFKHYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncicsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RUU0ZfQUREX0RPVF8wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICBjaGFyICpidWY7CisKKyAgICBidWYgPSBQeU9TX2RvdWJsZV90b19zdHJpbmcoUHlGbG9hdF9BU19ET1VCTEUodiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyJywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfRFRTRl9BRERfRE9UXzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgIGlmICghYnVmKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhidWYpOworICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfRnJvbUFTQ0lJKGJ1Ziwgc3RybGVuKGJ1ZikpOwogICAgIFB5TWVtX0ZyZWUoYnVmKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMzMzLDcgKzI4OSw3IEBACiAgKiBtYXkgbG9zZSBpbmZvIGZyb20gZnJhY3Rpb25hbCBiaXRzLiAgQ29udmVydGluZyB0aGUgaW50ZWdlciB0byBhIGRvdWJsZQogICogYWxzbyBoYXMgdHdvIGZhaWx1cmUgbW9kZXM6ICAoMSkgYSBsb25nIGludCBtYXkgdHJpZ2dlciBvdmVyZmxvdyAodG9vCiAgKiBsYXJnZSB0byBmaXQgaW4gdGhlIGR5bmFtaWMgcmFuZ2Ugb2YgYSBDIGRvdWJsZSk7ICgyKSBldmVuIGEgQyBsb25nIG1heSBoYXZlCi0gKiBtb3JlIGJpdHMgdGhhbiBmaXQgaW4gYSBDIGRvdWJsZSAoZS5nLiwgb24gYSBhIDY0LWJpdCBib3ggbG9uZyBtYXkgaGF2ZQorICogbW9yZSBiaXRzIHRoYW4gZml0IGluIGEgQyBkb3VibGUgKGUuZy4sIG9uIGEgNjQtYml0IGJveCBsb25nIG1heSBoYXZlCiAgKiA2MyBiaXRzIG9mIHByZWNpc2lvbiwgYnV0IGEgQyBkb3VibGUgcHJvYmFibHkgaGFzIG9ubHkgNTMpLCBhbmQgdGhlbgogICogd2UgY2FuIGZhbHNlbHkgY2xhaW0gZXF1YWxpdHkgd2hlbiBsb3ctb3JkZXIgaW50ZWdlciBiaXRzIGFyZSBsb3N0IGJ5CiAgKiBjb2VyY2lvbiB0byBkb3VibGUuICBTbyB0aGlzIHBhcnQgaXMgcGFpbmZ1bCB0b28uCkBAIC01MjMsOCArNDc5LDcgQEAKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHIpOwogCiAgVW5pbXBsZW1lbnRlZDoKLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeV9oYXNoX3QKQEAgLTEwODAsNyArMTAzNSw3IEBACiBjaGFyX2Zyb21faGV4KGludCB4KQogewogICAgIGFzc2VydCgwIDw9IHggJiYgeCA8IDE2KTsKLSAgICByZXR1cm4gIjAxMjM0NTY3ODlhYmNkZWYiW3hdOworICAgIHJldHVybiBQeV9oZXhkaWdpdHNbeF07CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTE3NTAsMTIgKzE3MDUsMjIgQEAKIGZsb2F0X19mb3JtYXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjOworICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOworICAgIGludCByZXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6X19mb3JtYXRfXyIsICZmb3JtYXRfc3BlYykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBfUHlGbG9hdF9Gb3JtYXRBZHZhbmNlZChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShmb3JtYXRfc3BlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShmb3JtYXRfc3BlYykpOworCisgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZ3cml0ZXIsIDApOworICAgIHJldCA9IF9QeUZsb2F0X0Zvcm1hdEFkdmFuY2VkV3JpdGVyKAorICAgICAgICAmd3JpdGVyLAorICAgICAgICBzZWxmLAorICAgICAgICBmb3JtYXRfc3BlYywgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoZm9ybWF0X3NwZWMpKTsKKyAgICBpZiAocmV0ID09IC0xKSB7CisgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIH0KIAogUHlEb2NfU1RSVkFSKGZsb2F0X19mb3JtYXRfX2RvYywKQEAgLTE5NTAsOTggKzE5MTUsMzQgQEAKIGludAogUHlGbG9hdF9DbGVhckZyZWVMaXN0KHZvaWQpCiB7Ci0gICAgUHlGbG9hdE9iamVjdCAqcDsKLSAgICBQeUZsb2F0QmxvY2sgKmxpc3QsICpuZXh0OwotICAgIGludCBpOwotICAgIGludCB1OyAgICAgICAgICAgICAgICAgICAgICAvKiByZW1haW5pbmcgdW5mcmVlZCBmbG9hdHMgcGVyIGJsb2NrICovCi0gICAgaW50IGZyZWVsaXN0X3NpemUgPSAwOwotCi0gICAgbGlzdCA9IGJsb2NrX2xpc3Q7Ci0gICAgYmxvY2tfbGlzdCA9IE5VTEw7Ci0gICAgZnJlZV9saXN0ID0gTlVMTDsKLSAgICB3aGlsZSAobGlzdCAhPSBOVUxMKSB7Ci0gICAgICAgIHUgPSAwOwotICAgICAgICBmb3IgKGkgPSAwLCBwID0gJmxpc3QtPm9iamVjdHNbMF07Ci0gICAgICAgICAgICAgaSA8IE5fRkxPQVRPQkpFQ1RTOwotICAgICAgICAgICAgIGkrKywgcCsrKSB7Ci0gICAgICAgICAgICBpZiAoUHlGbG9hdF9DaGVja0V4YWN0KHApICYmIFB5X1JFRkNOVChwKSAhPSAwKQotICAgICAgICAgICAgICAgIHUrKzsKLSAgICAgICAgfQotICAgICAgICBuZXh0ID0gbGlzdC0+bmV4dDsKLSAgICAgICAgaWYgKHUpIHsKLSAgICAgICAgICAgIGxpc3QtPm5leHQgPSBibG9ja19saXN0OwotICAgICAgICAgICAgYmxvY2tfbGlzdCA9IGxpc3Q7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwLCBwID0gJmxpc3QtPm9iamVjdHNbMF07Ci0gICAgICAgICAgICAgICAgIGkgPCBOX0ZMT0FUT0JKRUNUUzsKLSAgICAgICAgICAgICAgICAgaSsrLCBwKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoIVB5RmxvYXRfQ2hlY2tFeGFjdChwKSB8fAotICAgICAgICAgICAgICAgICAgICBQeV9SRUZDTlQocCkgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHApID0gKHN0cnVjdCBfdHlwZW9iamVjdCAqKQotICAgICAgICAgICAgICAgICAgICAgICAgZnJlZV9saXN0OwotICAgICAgICAgICAgICAgICAgICBmcmVlX2xpc3QgPSBwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5TWVtX0ZSRUUobGlzdCk7Ci0gICAgICAgIH0KLSAgICAgICAgZnJlZWxpc3Rfc2l6ZSArPSB1OwotICAgICAgICBsaXN0ID0gbmV4dDsKKyAgICBQeUZsb2F0T2JqZWN0ICpmID0gZnJlZV9saXN0LCAqbmV4dDsKKyAgICBpbnQgaSA9IG51bWZyZWU7CisgICAgd2hpbGUgKGYpIHsKKyAgICAgICAgbmV4dCA9IChQeUZsb2F0T2JqZWN0KikgUHlfVFlQRShmKTsKKyAgICAgICAgUHlPYmplY3RfRlJFRShmKTsKKyAgICAgICAgZiA9IG5leHQ7CiAgICAgfQotICAgIHJldHVybiBmcmVlbGlzdF9zaXplOworICAgIGZyZWVfbGlzdCA9IE5VTEw7CisgICAgbnVtZnJlZSA9IDA7CisgICAgcmV0dXJuIGk7CiB9CiAKIHZvaWQKIFB5RmxvYXRfRmluaSh2b2lkKQogewotICAgIFB5RmxvYXRPYmplY3QgKnA7Ci0gICAgUHlGbG9hdEJsb2NrICpsaXN0OwotICAgIGludCBpOwotICAgIGludCB1OyAgICAgICAgICAgICAgICAgICAgICAvKiB0b3RhbCB1bmZyZWVkIGZsb2F0cyBwZXIgYmxvY2sgKi8KLQotICAgIHUgPSBQeUZsb2F0X0NsZWFyRnJlZUxpc3QoKTsKLQotICAgIGlmICghUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIHJldHVybjsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiMgY2xlYW51cCBmbG9hdHMiKTsKLSAgICBpZiAoIXUpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJcbiIpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAgICAiOiAlZCB1bmZyZWVkIGZsb2F0JXNcbiIsCi0gICAgICAgICAgICB1LCB1ID09IDEgPyAiIiA6ICJzIik7Ci0gICAgfQotICAgIGlmIChQeV9WZXJib3NlRmxhZyA+IDEpIHsKLSAgICAgICAgbGlzdCA9IGJsb2NrX2xpc3Q7Ci0gICAgICAgIHdoaWxlIChsaXN0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDAsIHAgPSAmbGlzdC0+b2JqZWN0c1swXTsKLSAgICAgICAgICAgICAgICAgaSA8IE5fRkxPQVRPQkpFQ1RTOwotICAgICAgICAgICAgICAgICBpKyssIHArKykgewotICAgICAgICAgICAgICAgIGlmIChQeUZsb2F0X0NoZWNrRXhhY3QocCkgJiYKLSAgICAgICAgICAgICAgICAgICAgUHlfUkVGQ05UKHApICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKAotICAgICAgICAgICAgICAgICAgICAgICAgUHlGbG9hdF9BU19ET1VCTEUocCksICdyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIE5VTEwpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYnVmKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiBYWFgodHdvdXRlcnMpIGNhc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmNvdW50IHRvIGxvbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudGlsICV6ZCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgICAgICAiIyAgIDxmbG9hdCBhdCAlcCwgcmVmY250PSVsZCwgdmFsPSVzPlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAsIChsb25nKVB5X1JFRkNOVChwKSwgYnVmKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgbGlzdCA9IGxpc3QtPm5leHQ7Ci0gICAgICAgIH0KLSAgICB9CisgICAgKHZvaWQpUHlGbG9hdF9DbGVhckZyZWVMaXN0KCk7CiB9CiAKKy8qIFByaW50IHN1bW1hcnkgaW5mbyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIG9wdGltaXplZCBhbGxvY2F0b3IgKi8KK3ZvaWQKK19QeUZsb2F0X0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KQoreworICAgIF9QeURlYnVnQWxsb2NhdG9yU3RhdHMob3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWUgUHlGbG9hdE9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1mcmVlLCBzaXplb2YoUHlGbG9hdE9iamVjdCkpOworfQorCisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogX1B5RmxvYXRfe1BhY2ssVW5wYWNrfXs0LDh9LiAgU2VlIGZsb2F0b2JqZWN0LmguCiAgKi8KQEAgLTIyNTEsNyArMjE1Miw3IEBACiAKICAgICAgICAgLyogRWlnaHRoIGJ5dGUgKi8KICAgICAgICAgKnAgPSBmbG8gJiAweEZGOwotICAgICAgICBwICs9IGluY3I7CisgICAgICAgIC8qIHAgKz0gaW5jcjsgKi8KIAogICAgICAgICAvKiBEb25lICovCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9mcmFtZW9iamVjdC5jIGIvT2JqZWN0cy9mcmFtZW9iamVjdC5jCmluZGV4IGFkY2U0MmIuLjgwOGU1OTUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZnJhbWVvYmplY3QuYworKysgYi9PYmplY3RzL2ZyYW1lb2JqZWN0LmMKQEAgLTE1LDExICsxNSwxMSBAQAogI2RlZmluZSBPRkYoeCkgb2Zmc2V0b2YoUHlGcmFtZU9iamVjdCwgeCkKIAogc3RhdGljIFB5TWVtYmVyRGVmIGZyYW1lX21lbWJlcmxpc3RbXSA9IHsKLSAgICB7ImZfYmFjayIsICAgICAgICAgIFRfT0JKRUNULCAgICAgICBPRkYoZl9iYWNrKSwgICAgUkVBRE9OTFl9LAotICAgIHsiZl9jb2RlIiwgICAgICAgICAgVF9PQkpFQ1QsICAgICAgIE9GRihmX2NvZGUpLCAgICBSRUFET05MWX0sCi0gICAgeyJmX2J1aWx0aW5zIiwgICAgICBUX09CSkVDVCwgICAgICAgT0ZGKGZfYnVpbHRpbnMpLFJFQURPTkxZfSwKLSAgICB7ImZfZ2xvYmFscyIsICAgICAgIFRfT0JKRUNULCAgICAgICBPRkYoZl9nbG9iYWxzKSwgUkVBRE9OTFl9LAotICAgIHsiZl9sYXN0aSIsICAgICAgICAgVF9JTlQsICAgICAgICAgIE9GRihmX2xhc3RpKSwgICBSRUFET05MWX0sCisgICAgeyJmX2JhY2siLCAgICAgICAgICBUX09CSkVDVCwgICAgICAgT0ZGKGZfYmFjayksICAgICAgUkVBRE9OTFl9LAorICAgIHsiZl9jb2RlIiwgICAgICAgICAgVF9PQkpFQ1QsICAgICAgIE9GRihmX2NvZGUpLCAgICAgIFJFQURPTkxZfSwKKyAgICB7ImZfYnVpbHRpbnMiLCAgICAgIFRfT0JKRUNULCAgICAgICBPRkYoZl9idWlsdGlucyksICBSRUFET05MWX0sCisgICAgeyJmX2dsb2JhbHMiLCAgICAgICBUX09CSkVDVCwgICAgICAgT0ZGKGZfZ2xvYmFscyksICAgUkVBRE9OTFl9LAorICAgIHsiZl9sYXN0aSIsICAgICAgICAgVF9JTlQsICAgICAgICAgIE9GRihmX2xhc3RpKSwgICAgIFJFQURPTkxZfSwKICAgICB7TlVMTH0gICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApAQCAtNjE0LDEwICs2MTQsOCBAQAogICAgICAgICBpZiAoYnVpbHRpbnMpIHsKICAgICAgICAgICAgIGlmIChQeU1vZHVsZV9DaGVjayhidWlsdGlucykpIHsKICAgICAgICAgICAgICAgICBidWlsdGlucyA9IFB5TW9kdWxlX0dldERpY3QoYnVpbHRpbnMpOwotICAgICAgICAgICAgICAgIGFzc2VydCghYnVpbHRpbnMgfHwgUHlEaWN0X0NoZWNrKGJ1aWx0aW5zKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGJ1aWx0aW5zICE9IE5VTEwpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoIVB5RGljdF9DaGVjayhidWlsdGlucykpCi0gICAgICAgICAgICAgICAgYnVpbHRpbnMgPSBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmIChidWlsdGlucyA9PSBOVUxMKSB7CiAgICAgICAgICAgICAvKiBObyBidWlsdGlucyEgICAgICAgICAgICAgIE1ha2UgdXAgYSBtaW5pbWFsIG9uZQpAQCAtNjM2LDcgKzYzNCw3IEBACiAgICAgICAgIC8qIElmIHdlIHNoYXJlIHRoZSBnbG9iYWxzLCB3ZSBzaGFyZSB0aGUgYnVpbHRpbnMuCiAgICAgICAgICAgIFNhdmUgYSBsb29rdXAgYW5kIGEgY2FsbC4gKi8KICAgICAgICAgYnVpbHRpbnMgPSBiYWNrLT5mX2J1aWx0aW5zOwotICAgICAgICBhc3NlcnQoYnVpbHRpbnMgIT0gTlVMTCAmJiBQeURpY3RfQ2hlY2soYnVpbHRpbnMpKTsKKyAgICAgICAgYXNzZXJ0KGJ1aWx0aW5zICE9IE5VTEwpOwogICAgICAgICBQeV9JTkNSRUYoYnVpbHRpbnMpOwogICAgIH0KICAgICBpZiAoY29kZS0+Y29fem9tYmllZnJhbWUgIT0gTlVMTCkgewpAQCAtNjY1LDExICs2NjMsMTMgQEAKICAgICAgICAgICAgIGYgPSBmcmVlX2xpc3Q7CiAgICAgICAgICAgICBmcmVlX2xpc3QgPSBmcmVlX2xpc3QtPmZfYmFjazsKICAgICAgICAgICAgIGlmIChQeV9TSVpFKGYpIDwgZXh0cmFzKSB7Ci0gICAgICAgICAgICAgICAgZiA9IFB5T2JqZWN0X0dDX1Jlc2l6ZShQeUZyYW1lT2JqZWN0LCBmLCBleHRyYXMpOwotICAgICAgICAgICAgICAgIGlmIChmID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICpuZXdfZiA9IFB5T2JqZWN0X0dDX1Jlc2l6ZShQeUZyYW1lT2JqZWN0LCBmLCBleHRyYXMpOworICAgICAgICAgICAgICAgIGlmIChuZXdfZiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0X0dDX0RlbChmKTsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGJ1aWx0aW5zKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGYgPSBuZXdfZjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIF9QeV9OZXdSZWZlcmVuY2UoKFB5T2JqZWN0ICopZik7CiAgICAgICAgIH0KQEAgLTk1NSwzICs5NTUsMTMgQEAKICAgICBQeV9YREVDUkVGKGJ1aWx0aW5fb2JqZWN0KTsKICAgICBidWlsdGluX29iamVjdCA9IE5VTEw7CiB9CisKKy8qIFByaW50IHN1bW1hcnkgaW5mbyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIG9wdGltaXplZCBhbGxvY2F0b3IgKi8KK3ZvaWQKK19QeUZyYW1lX0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KQoreworICAgIF9QeURlYnVnQWxsb2NhdG9yU3RhdHMob3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWUgUHlGcmFtZU9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1mcmVlLCBzaXplb2YoUHlGcmFtZU9iamVjdCkpOworfQorCmRpZmYgLS1naXQgYS9PYmplY3RzL2Z1bmNvYmplY3QuYyBiL09iamVjdHMvZnVuY29iamVjdC5jCmluZGV4IDIyOTJhOWUuLjQ5NDE1YjkgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZnVuY29iamVjdC5jCisrKyBiL09iamVjdHMvZnVuY29iamVjdC5jCkBAIC02LDcgKzYsNyBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogCiBQeU9iamVjdCAqCi1QeUZ1bmN0aW9uX05ldyhQeU9iamVjdCAqY29kZSwgUHlPYmplY3QgKmdsb2JhbHMpCitQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZShQeU9iamVjdCAqY29kZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpxdWFsbmFtZSkKIHsKICAgICBQeUZ1bmN0aW9uT2JqZWN0ICpvcCA9IFB5T2JqZWN0X0dDX05ldyhQeUZ1bmN0aW9uT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUZ1bmN0aW9uX1R5cGUpOwpAQCAtNTQsNiArNTQsMTEgQEAKICAgICAgICAgICAgIFB5X0lOQ1JFRihtb2R1bGUpOwogICAgICAgICAgICAgb3AtPmZ1bmNfbW9kdWxlID0gbW9kdWxlOwogICAgICAgICB9CisgICAgICAgIGlmIChxdWFsbmFtZSkKKyAgICAgICAgICAgIG9wLT5mdW5jX3F1YWxuYW1lID0gcXVhbG5hbWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG9wLT5mdW5jX3F1YWxuYW1lID0gb3AtPmZ1bmNfbmFtZTsKKyAgICAgICAgUHlfSU5DUkVGKG9wLT5mdW5jX3F1YWxuYW1lKTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTYyLDYgKzY3LDEyIEBACiB9CiAKIFB5T2JqZWN0ICoKK1B5RnVuY3Rpb25fTmV3KFB5T2JqZWN0ICpjb2RlLCBQeU9iamVjdCAqZ2xvYmFscykKK3sKKyAgICByZXR1cm4gUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWUoY29kZSwgZ2xvYmFscywgTlVMTCk7Cit9CisKK1B5T2JqZWN0ICoKIFB5RnVuY3Rpb25fR2V0Q29kZShQeU9iamVjdCAqb3ApCiB7CiAgICAgaWYgKCFQeUZ1bmN0aW9uX0NoZWNrKG9wKSkgewpAQCAtMjM0LDQyICsyNDUsNiBAQAogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWZ1bmNfZ2V0X2RpY3QoUHlGdW5jdGlvbk9iamVjdCAqb3ApCi17Ci0gICAgaWYgKG9wLT5mdW5jX2RpY3QgPT0gTlVMTCkgewotICAgICAgICBvcC0+ZnVuY19kaWN0ID0gUHlEaWN0X05ldygpOwotICAgICAgICBpZiAob3AtPmZ1bmNfZGljdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0lOQ1JFRihvcC0+ZnVuY19kaWN0KTsKLSAgICByZXR1cm4gb3AtPmZ1bmNfZGljdDsKLX0KLQotc3RhdGljIGludAotZnVuY19zZXRfZGljdChQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQotewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KLSAgICAvKiBJdCBpcyBpbGxlZ2FsIHRvIGRlbCBmLmZ1bmNfZGljdCAqLwotICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24ncyBkaWN0aW9uYXJ5IG1heSBub3QgYmUgZGVsZXRlZCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIC8qIENhbiBvbmx5IHNldCBmdW5jX2RpY3QgdG8gYSBkaWN0aW9uYXJ5ICovCi0gICAgaWYgKCFQeURpY3RfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic2V0dGluZyBmdW5jdGlvbidzIGRpY3Rpb25hcnkgdG8gYSBub24tZGljdCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX2RpY3Q7Ci0gICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+ZnVuY19kaWN0ID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRih0bXApOwotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgogZnVuY19nZXRfY29kZShQeUZ1bmN0aW9uT2JqZWN0ICpvcCkKIHsKICAgICBQeV9JTkNSRUYob3AtPmZ1bmNfY29kZSk7CkBAIC0zMzQsNiArMzA5LDMyIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitmdW5jX2dldF9xdWFsbmFtZShQeUZ1bmN0aW9uT2JqZWN0ICpvcCkKK3sKKyAgICBQeV9JTkNSRUYob3AtPmZ1bmNfcXVhbG5hbWUpOworICAgIHJldHVybiBvcC0+ZnVuY19xdWFsbmFtZTsKK30KKworc3RhdGljIGludAorZnVuY19zZXRfcXVhbG5hbWUoUHlGdW5jdGlvbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBQeU9iamVjdCAqdG1wOworCisgICAgLyogTm90IGxlZ2FsIHRvIGRlbCBmLl9fcXVhbG5hbWVfXyBvciB0byBzZXQgaXQgdG8gYW55dGhpbmcKKyAgICAgKiBvdGhlciB0aGFuIGEgc3RyaW5nIG9iamVjdC4gKi8KKyAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIl9fcXVhbG5hbWVfXyBtdXN0IGJlIHNldCB0byBhIHN0cmluZyBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICB0bXAgPSBvcC0+ZnVuY19xdWFsbmFtZTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIG9wLT5mdW5jX3F1YWxuYW1lID0gdmFsdWU7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBmdW5jX2dldF9kZWZhdWx0cyhQeUZ1bmN0aW9uT2JqZWN0ICpvcCkKIHsKICAgICBpZiAob3AtPmZ1bmNfZGVmYXVsdHMgPT0gTlVMTCkgewpAQCAtNDM5LDggKzQ0MCw5IEBACiAgICAgIChzZXR0ZXIpZnVuY19zZXRfa3dkZWZhdWx0c30sCiAgICAgeyJfX2Fubm90YXRpb25zX18iLCAoZ2V0dGVyKWZ1bmNfZ2V0X2Fubm90YXRpb25zLAogICAgICAoc2V0dGVyKWZ1bmNfc2V0X2Fubm90YXRpb25zfSwKLSAgICB7Il9fZGljdF9fIiwgKGdldHRlcilmdW5jX2dldF9kaWN0LCAoc2V0dGVyKWZ1bmNfc2V0X2RpY3R9LAorICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3R9LAogICAgIHsiX19uYW1lX18iLCAoZ2V0dGVyKWZ1bmNfZ2V0X25hbWUsIChzZXR0ZXIpZnVuY19zZXRfbmFtZX0sCisgICAgeyJfX3F1YWxuYW1lX18iLCAoZ2V0dGVyKWZ1bmNfZ2V0X3F1YWxuYW1lLCAoc2V0dGVyKWZ1bmNfc2V0X3F1YWxuYW1lfSwKICAgICB7TlVMTH0gLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTU2MSw2ICs1NjMsNyBAQAogICAgIFB5X1hERUNSRUYob3AtPmZ1bmNfZGljdCk7CiAgICAgUHlfWERFQ1JFRihvcC0+ZnVuY19jbG9zdXJlKTsKICAgICBQeV9YREVDUkVGKG9wLT5mdW5jX2Fubm90YXRpb25zKTsKKyAgICBQeV9YREVDUkVGKG9wLT5mdW5jX3F1YWxuYW1lKTsKICAgICBQeU9iamVjdF9HQ19EZWwob3ApOwogfQogCkBAIC01NjgsNyArNTcxLDcgQEAKIGZ1bmNfcmVwcihQeUZ1bmN0aW9uT2JqZWN0ICpvcCkKIHsKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxmdW5jdGlvbiAlVSBhdCAlcD4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLT5mdW5jX25hbWUsIG9wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC0+ZnVuY19xdWFsbmFtZSwgb3ApOwogfQogCiBzdGF0aWMgaW50CkBAIC01ODQsNiArNTg3LDcgQEAKICAgICBQeV9WSVNJVChmLT5mdW5jX2RpY3QpOwogICAgIFB5X1ZJU0lUKGYtPmZ1bmNfY2xvc3VyZSk7CiAgICAgUHlfVklTSVQoZi0+ZnVuY19hbm5vdGF0aW9ucyk7CisgICAgUHlfVklTSVQoZi0+ZnVuY19xdWFsbmFtZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTY2Nyw4ICs2NzEsOCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIGZ1bmN0aW9uX2NhbGwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwotICAgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLC8qIHRwX2ZsYWdzICovCiAgICAgZnVuY19kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KQEAgLTcxNCw2ICs3MTgsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeU9iamVjdCAqY21fY2FsbGFibGU7CisgICAgUHlPYmplY3QgKmNtX2RpY3Q7CiB9IGNsYXNzbWV0aG9kOwogCiBzdGF0aWMgdm9pZApAQCAtNzIxLDYgKzcyNiw3IEBACiB7CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soKFB5T2JqZWN0ICopY20pOwogICAgIFB5X1hERUNSRUYoY20tPmNtX2NhbGxhYmxlKTsKKyAgICBQeV9YREVDUkVGKGNtLT5jbV9kaWN0KTsKICAgICBQeV9UWVBFKGNtKS0+dHBfZnJlZSgoUHlPYmplY3QgKiljbSk7CiB9CiAKQEAgLTcyOCw2ICs3MzQsNyBAQAogY21fdHJhdmVyc2UoY2xhc3NtZXRob2QgKmNtLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKICAgICBQeV9WSVNJVChjbS0+Y21fY2FsbGFibGUpOworICAgIFB5X1ZJU0lUKGNtLT5jbV9kaWN0KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNzM1LDYgKzc0Miw3IEBACiBjbV9jbGVhcihjbGFzc21ldGhvZCAqY20pCiB7CiAgICAgUHlfQ0xFQVIoY20tPmNtX2NhbGxhYmxlKTsKKyAgICBQeV9DTEVBUihjbS0+Y21fZGljdCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTc3NCw2ICs3ODIsMjggQEAKICAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCiB9OwogCitzdGF0aWMgUHlPYmplY3QgKgorY21fZ2V0X19faXNhYnN0cmFjdG1ldGhvZF9fKGNsYXNzbWV0aG9kICpjbSwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBpbnQgcmVzID0gX1B5T2JqZWN0X0lzQWJzdHJhY3QoY20tPmNtX2NhbGxhYmxlKTsKKyAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChyZXMpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorICAgIFB5X1JFVFVSTl9GQUxTRTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIGNtX2dldHNldGxpc3RbXSA9IHsKKyAgICB7Il9faXNhYnN0cmFjdG1ldGhvZF9fIiwKKyAgICAgKGdldHRlciljbV9nZXRfX19pc2Fic3RyYWN0bWV0aG9kX18sIE5VTEwsCisgICAgIE5VTEwsCisgICAgIE5VTEx9LAorICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3QsIE5VTEwsIE5VTEx9LAorICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGNsYXNzbWV0aG9kX2RvYywKICJjbGFzc21ldGhvZChmdW5jdGlvbikgLT4gbWV0aG9kXG5cCiBcblwKQEAgLTgxMiw3ICs4NDIsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLApAQCAtODI1LDEyICs4NTUsMTIgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgY21fbWVtYmVybGlzdCwgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIGNtX2dldHNldGxpc3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgY21fZGVzY3JfZ2V0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIG9mZnNldG9mKGNsYXNzbWV0aG9kLCBjbV9kaWN0KSwgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwogICAgIGNtX2luaXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwogICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwpAQCAtODY5LDYgKzg5OSw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5T2JqZWN0ICpzbV9jYWxsYWJsZTsKKyAgICBQeU9iamVjdCAqc21fZGljdDsKIH0gc3RhdGljbWV0aG9kOwogCiBzdGF0aWMgdm9pZApAQCAtODc2LDYgKzkwNyw3IEBACiB7CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soKFB5T2JqZWN0ICopc20pOwogICAgIFB5X1hERUNSRUYoc20tPnNtX2NhbGxhYmxlKTsKKyAgICBQeV9YREVDUkVGKHNtLT5zbV9kaWN0KTsKICAgICBQeV9UWVBFKHNtKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzbSk7CiB9CiAKQEAgLTg4Myw2ICs5MTUsNyBAQAogc21fdHJhdmVyc2Uoc3RhdGljbWV0aG9kICpzbSwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7CiAgICAgUHlfVklTSVQoc20tPnNtX2NhbGxhYmxlKTsKKyAgICBQeV9WSVNJVChzbS0+c21fZGljdCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTg5MCw2ICs5MjMsNyBAQAogc21fY2xlYXIoc3RhdGljbWV0aG9kICpzbSkKIHsKICAgICBQeV9DTEVBUihzbS0+c21fY2FsbGFibGUpOworICAgIFB5X0NMRUFSKHNtLT5zbV9kaWN0KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtOTI3LDYgKzk2MSwyOCBAQAogICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KIH07CiAKK3N0YXRpYyBQeU9iamVjdCAqCitzbV9nZXRfX19pc2Fic3RyYWN0bWV0aG9kX18oc3RhdGljbWV0aG9kICpzbSwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBpbnQgcmVzID0gX1B5T2JqZWN0X0lzQWJzdHJhY3Qoc20tPnNtX2NhbGxhYmxlKTsKKyAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChyZXMpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorICAgIFB5X1JFVFVSTl9GQUxTRTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIHNtX2dldHNldGxpc3RbXSA9IHsKKyAgICB7Il9faXNhYnN0cmFjdG1ldGhvZF9fIiwKKyAgICAgKGdldHRlcilzbV9nZXRfX19pc2Fic3RyYWN0bWV0aG9kX18sIE5VTEwsCisgICAgIE5VTEwsCisgICAgIE5VTEx9LAorICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3QsIE5VTEwsIE5VTEx9LAorICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKHN0YXRpY21ldGhvZF9kb2MsCiAic3RhdGljbWV0aG9kKGZ1bmN0aW9uKSAtPiBtZXRob2RcblwKIFxuXApAQCAtOTYyLDcgKzEwMTgsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLApAQCAtOTc1LDEyICsxMDMxLDEyIEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIHNtX21lbWJlcmxpc3QsICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICBzbV9nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwogICAgIHNtX2Rlc2NyX2dldCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICBvZmZzZXRvZihzdGF0aWNtZXRob2QsIHNtX2RpY3QpLCAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICBzbV9pbml0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCiAgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvZ2Vub2JqZWN0LmMgYi9PYmplY3RzL2dlbm9iamVjdC5jCmluZGV4IDZlMjVmMTMuLjU5N2FlZDMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZ2Vub2JqZWN0LmMKKysrIGIvT2JqZWN0cy9nZW5vYmplY3QuYwpAQCAtNSw2ICs1LDggQEAKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJvcGNvZGUuaCIKIAorc3RhdGljIFB5T2JqZWN0ICpnZW5fY2xvc2UoUHlHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKmFyZ3MpOworCiBzdGF0aWMgaW50CiBnZW5fdHJhdmVyc2UoUHlHZW5PYmplY3QgKmdlbiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7CkBAIC01MSw3ICs1Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiZ2VuZXJhdG9yIGFscmVhZHkgZXhlY3V0aW5nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZj09TlVMTCB8fCBmLT5mX3N0YWNrdG9wID09IE5VTEwpIHsKKyAgICBpZiAoZiA9PSBOVUxMIHx8IGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkgewogICAgICAgICAvKiBPbmx5IHNldCBleGNlcHRpb24gaWYgY2FsbGVkIGZyb20gc2VuZCgpICovCiAgICAgICAgIGlmIChhcmcgJiYgIWV4YykKICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CkBAIC05MCwxMiArOTIsMTkgQEAKIAogICAgIC8qIElmIHRoZSBnZW5lcmF0b3IganVzdCByZXR1cm5lZCAoYXMgb3Bwb3NlZCB0byB5aWVsZGluZyksIHNpZ25hbAogICAgICAqIHRoYXQgdGhlIGdlbmVyYXRvciBpcyBleGhhdXN0ZWQuICovCi0gICAgaWYgKHJlc3VsdCA9PSBQeV9Ob25lICYmIGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsKLSAgICAgICAgLyogU2V0IGV4Y2VwdGlvbiBpZiBub3QgY2FsbGVkIGJ5IGdlbl9pdGVybmV4dCgpICovCi0gICAgICAgIGlmIChhcmcpCisgICAgaWYgKHJlc3VsdCAmJiBmLT5mX3N0YWNrdG9wID09IE5VTEwpIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICAvKiBEZWxheSBleGNlcHRpb24gaW5zdGFudGlhdGlvbiBpZiB3ZSBjYW4gKi8KICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfU3RvcEl0ZXJhdGlvbiwgcmVzdWx0LCBOVUxMKTsKKyAgICAgICAgICAgIGlmIChlICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfU3RvcEl0ZXJhdGlvbiwgZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFB5X0NMRUFSKHJlc3VsdCk7CiAgICAgfQogCiAgICAgaWYgKCFyZXN1bHQgfHwgZi0+Zl9zdGFja3RvcCA9PSBOVUxMKSB7CkBAIC0xMTEsOCArMTIwLDggQEAKICAgICAgICAgUHlfWERFQ1JFRih0KTsKICAgICAgICAgUHlfWERFQ1JFRih2KTsKICAgICAgICAgUHlfWERFQ1JFRih0Yik7Ci0gICAgICAgIFB5X0RFQ1JFRihmKTsKICAgICAgICAgZ2VuLT5naV9mcmFtZSA9IE5VTEw7CisgICAgICAgIFB5X0RFQ1JFRihmKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTIyLDggKzEzMSw4IEBACiAic2VuZChhcmcpIC0+IHNlbmQgJ2FyZycgaW50byBnZW5lcmF0b3IsXG5cCiByZXR1cm4gbmV4dCB5aWVsZGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BJdGVyYXRpb24uIik7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1nZW5fc2VuZChQeUdlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqYXJnKQorUHlPYmplY3QgKgorX1B5R2VuX1NlbmQoUHlHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKmFyZykKIHsKICAgICByZXR1cm4gZ2VuX3NlbmRfZXgoZ2VuLCBhcmcsIDApOwogfQpAQCAtMTMxLDExICsxNDAsNzIgQEAKIFB5RG9jX1NUUlZBUihjbG9zZV9kb2MsCiAiY2xvc2UoKSAtPiByYWlzZSBHZW5lcmF0b3JFeGl0IGluc2lkZSBnZW5lcmF0b3IuIik7CiAKKy8qCisgKiAgIFRoaXMgaGVscGVyIGZ1bmN0aW9uIGlzIHVzZWQgYnkgZ2VuX2Nsb3NlIGFuZCBnZW5fdGhyb3cgdG8KKyAqICAgY2xvc2UgYSBzdWJpdGVyYXRvciBiZWluZyBkZWxlZ2F0ZWQgdG8gYnkgeWllbGQtZnJvbS4KKyAqLworCitzdGF0aWMgaW50CitnZW5fY2xvc2VfaXRlcihQeU9iamVjdCAqeWYpCit7CisgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoY2xvc2UpOworCisgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QoeWYpKSB7CisgICAgICAgIHJldHZhbCA9IGdlbl9jbG9zZSgoUHlHZW5PYmplY3QgKil5ZiwgTlVMTCk7CisgICAgICAgIGlmIChyZXR2YWwgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdCAqbWV0aCA9IF9QeU9iamVjdF9HZXRBdHRySWQoeWYsICZQeUlkX2Nsb3NlKTsKKyAgICAgICAgaWYgKG1ldGggPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKKyAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoeWYpOworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihtZXRoLCAiIik7CisgICAgICAgICAgICBQeV9ERUNSRUYobWV0aCk7CisgICAgICAgICAgICBpZiAocmV0dmFsID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIFB5X1hERUNSRUYocmV0dmFsKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2dlbl95ZihQeUdlbk9iamVjdCAqZ2VuKQoreworICAgIFB5T2JqZWN0ICp5ZiA9IE5VTEw7CisgICAgUHlGcmFtZU9iamVjdCAqZiA9IGdlbi0+Z2lfZnJhbWU7CisKKyAgICBpZiAoZikgeworICAgICAgICBQeU9iamVjdCAqYnl0ZWNvZGUgPSBmLT5mX2NvZGUtPmNvX2NvZGU7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgKmNvZGUgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVjb2RlKTsKKworICAgICAgICBpZiAoY29kZVtmLT5mX2xhc3RpICsgMV0gIT0gWUlFTERfRlJPTSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB5ZiA9IGYtPmZfc3RhY2t0b3BbLTFdOworICAgICAgICBQeV9JTkNSRUYoeWYpOworICAgIH0KKworICAgIHJldHVybiB5ZjsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIGdlbl9jbG9zZShQeUdlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dmFsOwotICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfR2VuZXJhdG9yRXhpdCk7CisgICAgUHlPYmplY3QgKnlmID0gZ2VuX3lmKGdlbik7CisgICAgaW50IGVyciA9IDA7CisKKyAgICBpZiAoeWYpIHsKKyAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKKyAgICAgICAgZXJyID0gZ2VuX2Nsb3NlX2l0ZXIoeWYpOworICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAwOworICAgICAgICBQeV9ERUNSRUYoeWYpOworICAgIH0KKyAgICBpZiAoZXJyID09IDApCisgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfR2VuZXJhdG9yRXhpdCk7CiAgICAgcmV0dmFsID0gZ2VuX3NlbmRfZXgoZ2VuLCBQeV9Ob25lLCAxKTsKICAgICBpZiAocmV0dmFsKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOwpAQCAtMTQ0LDggKzIxNCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKQotICAgICAgICB8fCBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0dlbmVyYXRvckV4aXQpKQotICAgIHsKKyAgICAgICAgfHwgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19HZW5lcmF0b3JFeGl0KSkgewogICAgICAgICBQeUVycl9DbGVhcigpOyAgICAgICAgICAvKiBpZ25vcmUgdGhlc2UgZXJyb3JzICovCiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CkBAIC0xOTYsNyArMjY1LDcgQEAKICAgICAgICAgX1B5X05ld1JlZmVyZW5jZShzZWxmKTsKICAgICAgICAgc2VsZi0+b2JfcmVmY250ID0gcmVmY250OwogICAgIH0KLSAgICBhc3NlcnQoUHlUeXBlX0lTX0dDKHNlbGYtPm9iX3R5cGUpICYmCisgICAgYXNzZXJ0KFB5VHlwZV9JU19HQyhQeV9UWVBFKHNlbGYpKSAmJgogICAgICAgICAgICBfUHlfQVNfR0Moc2VsZiktPmdjLmdjX3JlZnMgIT0gX1B5R0NfUkVGU19VTlRSQUNLRUQpOwogCiAgICAgLyogSWYgUHlfUkVGX0RFQlVHLCBfUHlfTmV3UmVmZXJlbmNlIGJ1bXBlZCBfUHlfUmVmVG90YWwsIHNvCkBAIC0yMDksOCArMjc4LDggQEAKICAgICAgKiB1bmRvbmUuCiAgICAgICovCiAjaWZkZWYgQ09VTlRfQUxMT0NTCi0gICAgLS1zZWxmLT5vYl90eXBlLT50cF9mcmVlczsKLSAgICAtLXNlbGYtPm9iX3R5cGUtPnRwX2FsbG9jczsKKyAgICAtLShQeV9UWVBFKHNlbGYpLT50cF9mcmVlcyk7CisgICAgLS0oUHlfVFlQRShzZWxmKS0+dHBfYWxsb2NzKTsKICNlbmRpZgogfQogCkBAIC0yMjYsMTAgKzI5NSw2NCBAQAogICAgIFB5T2JqZWN0ICp0eXA7CiAgICAgUHlPYmplY3QgKnRiID0gTlVMTDsKICAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKKyAgICBQeU9iamVjdCAqeWYgPSBnZW5feWYoZ2VuKTsKKyAgICBfUHlfSURFTlRJRklFUih0aHJvdyk7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0aHJvdyIsIDEsIDMsICZ0eXAsICZ2YWwsICZ0YikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgaWYgKHlmKSB7CisgICAgICAgIFB5T2JqZWN0ICpyZXQ7CisgICAgICAgIGludCBlcnI7CisgICAgICAgIGlmIChQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXModHlwLCBQeUV4Y19HZW5lcmF0b3JFeGl0KSkgeworICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKKyAgICAgICAgICAgIGVyciA9IGdlbl9jbG9zZV9pdGVyKHlmKTsKKyAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDA7CisgICAgICAgICAgICBQeV9ERUNSRUYoeWYpOworICAgICAgICAgICAgaWYgKGVyciA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIGdlbl9zZW5kX2V4KGdlbiwgUHlfTm9uZSwgMSk7CisgICAgICAgICAgICBnb3RvIHRocm93X2hlcmU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QoeWYpKSB7CisgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAxOworICAgICAgICAgICAgcmV0ID0gZ2VuX3Rocm93KChQeUdlbk9iamVjdCAqKXlmLCBhcmdzKTsKKyAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbWV0aCA9IF9QeU9iamVjdF9HZXRBdHRySWQoeWYsICZQeUlkX3Rocm93KTsKKyAgICAgICAgICAgIGlmIChtZXRoID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih5Zik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih5Zik7CisgICAgICAgICAgICAgICAgZ290byB0aHJvd19oZXJlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKKyAgICAgICAgICAgIHJldCA9IFB5T2JqZWN0X0NhbGxPYmplY3QobWV0aCwgYXJncyk7CisgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAwOworICAgICAgICAgICAgUHlfREVDUkVGKG1ldGgpOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRih5Zik7CisgICAgICAgIGlmICghcmV0KSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsOworICAgICAgICAgICAgLyogUG9wIHN1Yml0ZXJhdG9yIGZyb20gc3RhY2sgKi8KKyAgICAgICAgICAgIHJldCA9ICooLS1nZW4tPmdpX2ZyYW1lLT5mX3N0YWNrdG9wKTsKKyAgICAgICAgICAgIGFzc2VydChyZXQgPT0geWYpOworICAgICAgICAgICAgUHlfREVDUkVGKHJldCk7CisgICAgICAgICAgICAvKiBUZXJtaW5hdGlvbiByZXBldGl0aW9uIG9mIFlJRUxEX0ZST00gKi8KKyAgICAgICAgICAgIGdlbi0+Z2lfZnJhbWUtPmZfbGFzdGkrKzsKKyAgICAgICAgICAgIGlmIChfUHlHZW5fRmV0Y2hTdG9wSXRlcmF0aW9uVmFsdWUoJnZhbCkgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldCA9IGdlbl9zZW5kX2V4KGdlbiwgdmFsLCAwKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0ID0gZ2VuX3NlbmRfZXgoZ2VuLCBQeV9Ob25lLCAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKwordGhyb3dfaGVyZToKICAgICAvKiBGaXJzdCwgY2hlY2sgdGhlIHRyYWNlYmFjayBhcmd1bWVudCwgcmVwbGFjaW5nIE5vbmUgd2l0aAogICAgICAgIE5VTEwuICovCiAgICAgaWYgKHRiID09IFB5X05vbmUpIHsKQEAgLTI3Miw3ICszOTUsNyBAQAogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbnMgbXVzdCBiZSBjbGFzc2VzIG9yIGluc3RhbmNlcyAiCiAgICAgICAgICAgICAgICAgICAgICAiZGVyaXZpbmcgZnJvbSBCYXNlRXhjZXB0aW9uLCBub3QgJXMiLAotICAgICAgICAgICAgICAgICAgICAgdHlwLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUodHlwKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICBnb3RvIGZhaWxlZF90aHJvdzsKICAgICB9CiAKQEAgLTI5MSw5ICs0MTQsNDYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBnZW5faXRlcm5leHQoUHlHZW5PYmplY3QgKmdlbikKIHsKLSAgICByZXR1cm4gZ2VuX3NlbmRfZXgoZ2VuLCBOVUxMLCAwKTsKKyAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmV0OworICAgIHJldCA9IGdlbl9zZW5kX2V4KGdlbiwgdmFsLCAwKTsKKyAgICBQeV9YREVDUkVGKHZhbCk7CisgICAgcmV0dXJuIHJldDsKIH0KIAorLyoKKyAqICAgSWYgU3RvcEl0ZXJhdGlvbiBleGNlcHRpb24gaXMgc2V0LCBmZXRjaGVzIGl0cyAndmFsdWUnCisgKiAgIGF0dHJpYnV0ZSBpZiBhbnksIG90aGVyd2lzZSBzZXRzIHB2YWx1ZSB0byBOb25lLgorICoKKyAqICAgUmV0dXJucyAwIGlmIG5vIGV4Y2VwdGlvbiBvciBTdG9wSXRlcmF0aW9uIGlzIHNldC4KKyAqICAgSWYgYW55IG90aGVyIGV4Y2VwdGlvbiBpcyBzZXQsIHJldHVybnMgLTEgYW5kIGxlYXZlcworICogICBwdmFsdWUgdW5jaGFuZ2VkLgorICovCisKK2ludAorX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKFB5T2JqZWN0ICoqcHZhbHVlKSB7CisgICAgUHlPYmplY3QgKmV0LCAqZXYsICp0YjsKKyAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOworCisgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikpIHsKKyAgICAgICAgUHlFcnJfRmV0Y2goJmV0LCAmZXYsICZ0Yik7CisgICAgICAgIFB5X1hERUNSRUYoZXQpOworICAgICAgICBQeV9YREVDUkVGKHRiKTsKKyAgICAgICAgaWYgKGV2KSB7CisgICAgICAgICAgICB2YWx1ZSA9ICgoUHlTdG9wSXRlcmF0aW9uT2JqZWN0ICopZXYpLT52YWx1ZTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZXYpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgdmFsdWUgPSBQeV9Ob25lOworICAgICAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIH0KKyAgICAqcHZhbHVlID0gdmFsdWU7CisgICAgcmV0dXJuIDA7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBnZW5fcmVwcihQeUdlbk9iamVjdCAqZ2VuKQpAQCAtMzI0LDEzICs0ODQsMTMgQEAKIAogc3RhdGljIFB5TWVtYmVyRGVmIGdlbl9tZW1iZXJsaXN0W10gPSB7CiAgICAgeyJnaV9mcmFtZSIsICAgICAgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX2ZyYW1lKSwgICAgICBSRUFET05MWX0sCi0gICAgeyJnaV9ydW5uaW5nIiwgICAgICBUX0lOVCwgICAgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX3J1bm5pbmcpLCAgICBSRUFET05MWX0sCisgICAgeyJnaV9ydW5uaW5nIiwgICAgICBUX0JPT0wsICAgIG9mZnNldG9mKFB5R2VuT2JqZWN0LCBnaV9ydW5uaW5nKSwgICAgUkVBRE9OTFl9LAogICAgIHsiZ2lfY29kZSIsICAgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX2NvZGUpLCAgUkVBRE9OTFl9LAogICAgIHtOVUxMfSAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCiBzdGF0aWMgUHlNZXRob2REZWYgZ2VuX21ldGhvZHNbXSA9IHsKLSAgICB7InNlbmQiLChQeUNGdW5jdGlvbilnZW5fc2VuZCwgTUVUSF9PLCBzZW5kX2RvY30sCisgICAgeyJzZW5kIiwoUHlDRnVuY3Rpb24pX1B5R2VuX1NlbmQsIE1FVEhfTywgc2VuZF9kb2N9LAogICAgIHsidGhyb3ciLChQeUNGdW5jdGlvbilnZW5fdGhyb3csIE1FVEhfVkFSQVJHUywgdGhyb3dfZG9jfSwKICAgICB7ImNsb3NlIiwoUHlDRnVuY3Rpb24pZ2VuX2Nsb3NlLCBNRVRIX05PQVJHUywgY2xvc2VfZG9jfSwKICAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIFNlbnRpbmVsICovCkBAIC00MTAsMTUgKzU3MCwxMyBAQAogICAgIGludCBpOwogICAgIFB5RnJhbWVPYmplY3QgKmYgPSBnZW4tPmdpX2ZyYW1lOwogCi0gICAgaWYgKGYgPT0gTlVMTCB8fCBmLT5mX3N0YWNrdG9wID09IE5VTEwgfHwgZi0+Zl9pYmxvY2sgPD0gMCkKKyAgICBpZiAoZiA9PSBOVUxMIHx8IGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7IC8qIG5vIGZyYW1lIG9yIGVtcHR5IGJsb2Nrc3RhY2sgPT0gbm8gZmluYWxpemF0aW9uICovCiAKICAgICAvKiBBbnkgYmxvY2sgdHlwZSBiZXNpZGVzIGEgbG9vcCByZXF1aXJlcyBjbGVhbnVwLiAqLwotICAgIGkgPSBmLT5mX2libG9jazsKLSAgICB3aGlsZSAoLS1pID49IDApIHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgZi0+Zl9pYmxvY2s7IGkrKykKICAgICAgICAgaWYgKGYtPmZfYmxvY2tzdGFja1tpXS5iX3R5cGUgIT0gU0VUVVBfTE9PUCkKICAgICAgICAgICAgIHJldHVybiAxOwotICAgIH0KIAogICAgIC8qIE5vIGJsb2NrcyBleGNlcHQgbG9vcHMsIGl0J3Mgc2FmZSB0byBza2lwIGZpbmFsaXphdGlvbi4gKi8KICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL09iamVjdHMvaXRlcm9iamVjdC5jIGIvT2JqZWN0cy9pdGVyb2JqZWN0LmMKaW5kZXggOTFhOTNmNS4uM2NmYmVhZiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9pdGVyb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9pdGVyb2JqZWN0LmMKQEAgLTg4LDggKzg4LDM4IEBACiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK2l0ZXJfcmVkdWNlKHNlcWl0ZXJvYmplY3QgKml0KQoreworICAgIGlmIChpdC0+aXRfc2VxICE9IE5VTEwpCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbiIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5pdF9zZXEsIGl0LT5pdF9pbmRleCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTigoKSkiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpKTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgoraXRlcl9zZXRzdGF0ZShzZXFpdGVyb2JqZWN0ICppdCwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKKyAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGl0LT5pdF9zZXEgIT0gTlVMTCkgeworICAgICAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICBpdC0+aXRfaW5kZXggPSBpbmRleDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihzZXRzdGF0ZV9kb2MsICJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CisKIHN0YXRpYyBQeU1ldGhvZERlZiBzZXFpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilpdGVyX2xlbiwgTUVUSF9OT0FSR1MsIGxlbmd0aF9oaW50X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24paXRlcl9zZXRzdGF0ZSwgTUVUSF9PLCBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xOTUsNiArMjI1LDIxIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitjYWxsaXRlcl9yZWR1Y2UoY2FsbGl0ZXJvYmplY3QgKml0KQoreworICAgIGlmIChpdC0+aXRfY2FsbGFibGUgIT0gTlVMTCAmJiBpdC0+aXRfc2VudGluZWwgIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oT08pIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPml0X2NhbGxhYmxlLCBpdC0+aXRfc2VudGluZWwpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oKCkpIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSk7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBjYWxsaXRlcl9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWNhbGxpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeVR5cGVPYmplY3QgUHlDYWxsSXRlcl9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCiAgICAgImNhbGxhYmxlX2l0ZXJhdG9yIiwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCkBAIC0yMjQsNyArMjY5LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyljYWxsaXRlcl9pdGVybmV4dCwgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGNhbGxpdGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogfTsKIAogCmRpZmYgLS1naXQgYS9PYmplY3RzL2xpc3RvYmplY3QuYyBiL09iamVjdHMvbGlzdG9iamVjdC5jCmluZGV4IGI5ZWYwZDAuLjZlMGQwOTQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbGlzdG9iamVjdC5jCisrKyBiL09iamVjdHMvbGlzdG9iamVjdC5jCkBAIC05OCwxNiArOTgsMzIgQEAKIHN0YXRpYyBQeUxpc3RPYmplY3QgKmZyZWVfbGlzdFtQeUxpc3RfTUFYRlJFRUxJU1RdOwogc3RhdGljIGludCBudW1mcmVlID0gMDsKIAotdm9pZAotUHlMaXN0X0Zpbmkodm9pZCkKK2ludAorUHlMaXN0X0NsZWFyRnJlZUxpc3Qodm9pZCkKIHsKICAgICBQeUxpc3RPYmplY3QgKm9wOwotCisgICAgaW50IHJldCA9IG51bWZyZWU7CiAgICAgd2hpbGUgKG51bWZyZWUpIHsKICAgICAgICAgb3AgPSBmcmVlX2xpc3RbLS1udW1mcmVlXTsKICAgICAgICAgYXNzZXJ0KFB5TGlzdF9DaGVja0V4YWN0KG9wKSk7CiAgICAgICAgIFB5T2JqZWN0X0dDX0RlbChvcCk7CiAgICAgfQorICAgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQKK1B5TGlzdF9GaW5pKHZvaWQpCit7CisgICAgUHlMaXN0X0NsZWFyRnJlZUxpc3QoKTsKK30KKworLyogUHJpbnQgc3VtbWFyeSBpbmZvIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW1pemVkIGFsbG9jYXRvciAqLwordm9pZAorX1B5TGlzdF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCkKK3sKKyAgICBfUHlEZWJ1Z0FsbG9jYXRvclN0YXRzKG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmVlIFB5TGlzdE9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1mcmVlLCBzaXplb2YoUHlMaXN0T2JqZWN0KSk7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTczNyw2ICs3NTMsMTkgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2xpc3RjbGVhcihQeUxpc3RPYmplY3QgKnNlbGYpCit7CisgICAgbGlzdF9jbGVhcihzZWxmKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2xpc3Rjb3B5KFB5TGlzdE9iamVjdCAqc2VsZikKK3sKKyAgICByZXR1cm4gbGlzdF9zbGljZShzZWxmLCAwLCBQeV9TSVpFKHNlbGYpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGxpc3RhcHBlbmQoUHlMaXN0T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKIHsKICAgICBpZiAoYXBwMShzZWxmLCB2KSA9PSAwKQpAQCAtMjEwOSw4ICsyMTM4LDcgQEAKIGxpc3RpbmRleChQeUxpc3RPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X3NzaXplX3QgaSwgc3RhcnQ9MCwgc3RvcD1QeV9TSVpFKHNlbGYpOwotICAgIFB5T2JqZWN0ICp2LCAqZm9ybWF0X3R1cGxlLCAqZXJyX3N0cmluZzsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmVycl9mb3JtYXQgPSBOVUxMOworICAgIFB5T2JqZWN0ICp2OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE8mTyY6aW5kZXgiLCAmdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5RXZhbF9TbGljZUluZGV4LCAmc3RhcnQsCkBAIC0yMTMzLDIwICsyMTYxLDcgQEAKICAgICAgICAgZWxzZSBpZiAoY21wIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZXJyX2Zvcm1hdCA9PSBOVUxMKSB7Ci0gICAgICAgIGVycl9mb3JtYXQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiJXIgaXMgbm90IGluIGxpc3QiKTsKLSAgICAgICAgaWYgKGVycl9mb3JtYXQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBmb3JtYXRfdHVwbGUgPSBQeVR1cGxlX1BhY2soMSwgdik7Ci0gICAgaWYgKGZvcm1hdF90dXBsZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBlcnJfc3RyaW5nID0gUHlVbmljb2RlX0Zvcm1hdChlcnJfZm9ybWF0LCBmb3JtYXRfdHVwbGUpOwotICAgIFB5X0RFQ1JFRihmb3JtYXRfdHVwbGUpOwotICAgIGlmIChlcnJfc3RyaW5nID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19WYWx1ZUVycm9yLCBlcnJfc3RyaW5nKTsKLSAgICBQeV9ERUNSRUYoZXJyX3N0cmluZyk7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICIlUiBpcyBub3QgaW4gbGlzdCIsIHYpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0yMjAyLDEwICsyMjE3LDggQEAKICAgICBQeUxpc3RPYmplY3QgKnZsLCAqd2w7CiAgICAgUHlfc3NpemVfdCBpOwogCi0gICAgaWYgKCFQeUxpc3RfQ2hlY2sodikgfHwgIVB5TGlzdF9DaGVjayh3KSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlMaXN0X0NoZWNrKHYpIHx8ICFQeUxpc3RfQ2hlY2sodykpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAogICAgIHZsID0gKFB5TGlzdE9iamVjdCAqKXY7CiAgICAgd2wgPSAoUHlMaXN0T2JqZWN0ICopdzsKQEAgLTIzMTQsMTcgKzIzMjcsMjEgQEAKICJMLl9fcmV2ZXJzZWRfXygpIC0tIHJldHVybiBhIHJldmVyc2UgaXRlcmF0b3Igb3ZlciB0aGUgbGlzdCIpOwogUHlEb2NfU1RSVkFSKHNpemVvZl9kb2MsCiAiTC5fX3NpemVvZl9fKCkgLS0gc2l6ZSBvZiBMIGluIG1lbW9yeSwgaW4gYnl0ZXMiKTsKK1B5RG9jX1NUUlZBUihjbGVhcl9kb2MsCisiTC5jbGVhcigpIC0+IE5vbmUgLS0gcmVtb3ZlIGFsbCBpdGVtcyBmcm9tIEwiKTsKK1B5RG9jX1NUUlZBUihjb3B5X2RvYywKKyJMLmNvcHkoKSAtPiBsaXN0IC0tIGEgc2hhbGxvdyBjb3B5IG9mIEwiKTsKIFB5RG9jX1NUUlZBUihhcHBlbmRfZG9jLAotIkwuYXBwZW5kKG9iamVjdCkgLS0gYXBwZW5kIG9iamVjdCB0byBlbmQiKTsKKyJMLmFwcGVuZChvYmplY3QpIC0+IE5vbmUgLS0gYXBwZW5kIG9iamVjdCB0byBlbmQiKTsKIFB5RG9jX1NUUlZBUihleHRlbmRfZG9jLAotIkwuZXh0ZW5kKGl0ZXJhYmxlKSAtLSBleHRlbmQgbGlzdCBieSBhcHBlbmRpbmcgZWxlbWVudHMgZnJvbSB0aGUgaXRlcmFibGUiKTsKKyJMLmV4dGVuZChpdGVyYWJsZSkgLT4gTm9uZSAtLSBleHRlbmQgbGlzdCBieSBhcHBlbmRpbmcgZWxlbWVudHMgZnJvbSB0aGUgaXRlcmFibGUiKTsKIFB5RG9jX1NUUlZBUihpbnNlcnRfZG9jLAogIkwuaW5zZXJ0KGluZGV4LCBvYmplY3QpIC0tIGluc2VydCBvYmplY3QgYmVmb3JlIGluZGV4Iik7CiBQeURvY19TVFJWQVIocG9wX2RvYywKICJMLnBvcChbaW5kZXhdKSAtPiBpdGVtIC0tIHJlbW92ZSBhbmQgcmV0dXJuIGl0ZW0gYXQgaW5kZXggKGRlZmF1bHQgbGFzdCkuXG4iCiAiUmFpc2VzIEluZGV4RXJyb3IgaWYgbGlzdCBpcyBlbXB0eSBvciBpbmRleCBpcyBvdXQgb2YgcmFuZ2UuIik7CiBQeURvY19TVFJWQVIocmVtb3ZlX2RvYywKLSJMLnJlbW92ZSh2YWx1ZSkgLS0gcmVtb3ZlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdmFsdWUuXG4iCisiTC5yZW1vdmUodmFsdWUpIC0+IE5vbmUgLS0gcmVtb3ZlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdmFsdWUuXG4iCiAiUmFpc2VzIFZhbHVlRXJyb3IgaWYgdGhlIHZhbHVlIGlzIG5vdCBwcmVzZW50LiIpOwogUHlEb2NfU1RSVkFSKGluZGV4X2RvYywKICJMLmluZGV4KHZhbHVlLCBbc3RhcnQsIFtzdG9wXV0pIC0+IGludGVnZXIgLS0gcmV0dXJuIGZpcnN0IGluZGV4IG9mIHZhbHVlLlxuIgpAQCAtMjMzNCw3ICsyMzUxLDcgQEAKIFB5RG9jX1NUUlZBUihyZXZlcnNlX2RvYywKICJMLnJldmVyc2UoKSAtLSByZXZlcnNlICpJTiBQTEFDRSoiKTsKIFB5RG9jX1NUUlZBUihzb3J0X2RvYywKLSJMLnNvcnQoa2V5PU5vbmUsIHJldmVyc2U9RmFsc2UpIC0tIHN0YWJsZSBzb3J0ICpJTiBQTEFDRSoiKTsKKyJMLnNvcnQoa2V5PU5vbmUsIHJldmVyc2U9RmFsc2UpIC0+IE5vbmUgLS0gc3RhYmxlIHNvcnQgKklOIFBMQUNFKiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKmxpc3Rfc3Vic2NyaXB0KFB5TGlzdE9iamVjdCosIFB5T2JqZWN0Kik7CiAKQEAgLTIzNDIsOSArMjM1OSwxMSBAQAogICAgIHsiX19nZXRpdGVtX18iLCAoUHlDRnVuY3Rpb24pbGlzdF9zdWJzY3JpcHQsIE1FVEhfT3xNRVRIX0NPRVhJU1QsIGdldGl0ZW1fZG9jfSwKICAgICB7Il9fcmV2ZXJzZWRfXyIsKFB5Q0Z1bmN0aW9uKWxpc3RfcmV2ZXJzZWQsIE1FVEhfTk9BUkdTLCByZXZlcnNlZF9kb2N9LAogICAgIHsiX19zaXplb2ZfXyIsICAoUHlDRnVuY3Rpb24pbGlzdF9zaXplb2YsIE1FVEhfTk9BUkdTLCBzaXplb2ZfZG9jfSwKKyAgICB7ImNsZWFyIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilsaXN0Y2xlYXIsICAgTUVUSF9OT0FSR1MsIGNsZWFyX2RvY30sCisgICAgeyJjb3B5IiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pbGlzdGNvcHksICAgTUVUSF9OT0FSR1MsIGNvcHlfZG9jfSwKICAgICB7ImFwcGVuZCIsICAgICAgICAgIChQeUNGdW5jdGlvbilsaXN0YXBwZW5kLCAgTUVUSF9PLCBhcHBlbmRfZG9jfSwKICAgICB7Imluc2VydCIsICAgICAgICAgIChQeUNGdW5jdGlvbilsaXN0aW5zZXJ0LCAgTUVUSF9WQVJBUkdTLCBpbnNlcnRfZG9jfSwKLSAgICB7ImV4dGVuZCIsICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3RleHRlbmQsICBNRVRIX08sIGV4dGVuZF9kb2N9LAorICAgIHsiZXh0ZW5kIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3RleHRlbmQsICBNRVRIX08sIGV4dGVuZF9kb2N9LAogICAgIHsicG9wIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3Rwb3AsICAgICBNRVRIX1ZBUkFSR1MsIHBvcF9kb2N9LAogICAgIHsicmVtb3ZlIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3RyZW1vdmUsICBNRVRIX08sIHJlbW92ZV9kb2N9LAogICAgIHsiaW5kZXgiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3RpbmRleCwgICBNRVRIX1ZBUkFSR1MsIGluZGV4X2RvY30sCkBAIC0yNDA3LDcgKzI0MjYsNyBAQAogICAgICAgICAgICAgc3JjID0gc2VsZi0+b2JfaXRlbTsKICAgICAgICAgICAgIGRlc3QgPSAoKFB5TGlzdE9iamVjdCAqKXJlc3VsdCktPm9iX2l0ZW07CiAgICAgICAgICAgICBmb3IgKGN1ciA9IHN0YXJ0LCBpID0gMDsgaSA8IHNsaWNlbGVuZ3RoOwotICAgICAgICAgICAgICAgICBjdXIgKz0gc3RlcCwgaSsrKSB7CisgICAgICAgICAgICAgICAgIGN1ciArPSAoc2l6ZV90KXN0ZXAsIGkrKykgewogICAgICAgICAgICAgICAgIGl0ID0gc3JjW2N1cl07CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGl0KTsKICAgICAgICAgICAgICAgICBkZXN0W2ldID0gaXQ7CkBAIC0yNDk4LDcgKzI1MTcsNyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLT5vYl9pdGVtICsgY3VyICsgMSwKICAgICAgICAgICAgICAgICAgICAgbGltICogc2l6ZW9mKFB5T2JqZWN0ICopKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGN1ciA9IHN0YXJ0ICsgc2xpY2VsZW5ndGgqc3RlcDsKKyAgICAgICAgICAgIGN1ciA9IHN0YXJ0ICsgKHNpemVfdClzbGljZWxlbmd0aCAqIHN0ZXA7CiAgICAgICAgICAgICBpZiAoY3VyIDwgKHNpemVfdClQeV9TSVpFKHNlbGYpKSB7CiAgICAgICAgICAgICAgICAgbWVtbW92ZShzZWxmLT5vYl9pdGVtICsgY3VyIC0gc2xpY2VsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYtPm9iX2l0ZW0gKyBjdXIsCkBAIC0yNTYyLDcgKzI1ODEsNyBAQAogICAgICAgICAgICAgc2VsZml0ZW1zID0gc2VsZi0+b2JfaXRlbTsKICAgICAgICAgICAgIHNlcWl0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0lURU1TKHNlcSk7CiAgICAgICAgICAgICBmb3IgKGN1ciA9IHN0YXJ0LCBpID0gMDsgaSA8IHNsaWNlbGVuZ3RoOwotICAgICAgICAgICAgICAgICBjdXIgKz0gc3RlcCwgaSsrKSB7CisgICAgICAgICAgICAgICAgIGN1ciArPSAoc2l6ZV90KXN0ZXAsIGkrKykgewogICAgICAgICAgICAgICAgIGdhcmJhZ2VbaV0gPSBzZWxmaXRlbXNbY3VyXTsKICAgICAgICAgICAgICAgICBpbnMgPSBzZXFpdGVtc1tpXTsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoaW5zKTsKQEAgLTI2NTAsMTEgKzI2NjksMTggQEAKIHN0YXRpYyBpbnQgbGlzdGl0ZXJfdHJhdmVyc2UobGlzdGl0ZXJvYmplY3QgKiwgdmlzaXRwcm9jLCB2b2lkICopOwogc3RhdGljIFB5T2JqZWN0ICpsaXN0aXRlcl9uZXh0KGxpc3RpdGVyb2JqZWN0ICopOwogc3RhdGljIFB5T2JqZWN0ICpsaXN0aXRlcl9sZW4obGlzdGl0ZXJvYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKmxpc3RpdGVyX3JlZHVjZV9nZW5lcmFsKHZvaWQgKl9pdCwgaW50IGZvcndhcmQpOworc3RhdGljIFB5T2JqZWN0ICpsaXN0aXRlcl9yZWR1Y2UobGlzdGl0ZXJvYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKmxpc3RpdGVyX3NldHN0YXRlKGxpc3RpdGVyb2JqZWN0ICosIFB5T2JqZWN0ICpzdGF0ZSk7CiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKK1B5RG9jX1NUUlZBUihzZXRzdGF0ZV9kb2MsICJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBsaXN0aXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pbGlzdGl0ZXJfbGVuLCBNRVRIX05PQVJHUywgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pbGlzdGl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pbGlzdGl0ZXJfc2V0c3RhdGUsIE1FVEhfTywgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMjc2MSw2ICsyNzg3LDI3IEBACiAgICAgfQogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7CiB9CisKK3N0YXRpYyBQeU9iamVjdCAqCitsaXN0aXRlcl9yZWR1Y2UobGlzdGl0ZXJvYmplY3QgKml0KQoreworICAgIHJldHVybiBsaXN0aXRlcl9yZWR1Y2VfZ2VuZXJhbChpdCwgMSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitsaXN0aXRlcl9zZXRzdGF0ZShsaXN0aXRlcm9iamVjdCAqaXQsIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBsb25nIGluZGV4ID0gUHlMb25nX0FzTG9uZyhzdGF0ZSk7CisgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpdC0+aXRfc2VxICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgaXQtPml0X2luZGV4ID0gaW5kZXg7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCiAvKioqKioqKioqKioqKioqKioqKioqKiogTGlzdCBSZXZlcnNlIEl0ZXJhdG9yICoqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC0yNzc0LDkgKzI4MjEsMTMgQEAKIHN0YXRpYyBpbnQgbGlzdHJldml0ZXJfdHJhdmVyc2UobGlzdHJldml0ZXJvYmplY3QgKiwgdmlzaXRwcm9jLCB2b2lkICopOwogc3RhdGljIFB5T2JqZWN0ICpsaXN0cmV2aXRlcl9uZXh0KGxpc3RyZXZpdGVyb2JqZWN0ICopOwogc3RhdGljIFB5T2JqZWN0ICpsaXN0cmV2aXRlcl9sZW4obGlzdHJldml0ZXJvYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKmxpc3RyZXZpdGVyX3JlZHVjZShsaXN0cmV2aXRlcm9iamVjdCAqKTsKK3N0YXRpYyBQeU9iamVjdCAqbGlzdHJldml0ZXJfc2V0c3RhdGUobGlzdHJldml0ZXJvYmplY3QgKiwgUHlPYmplY3QgKik7CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBsaXN0cmV2aXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pbGlzdHJldml0ZXJfbGVuLCBNRVRIX05PQVJHUywgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pbGlzdHJldml0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pbGlzdHJldml0ZXJfc2V0c3RhdGUsIE1FVEhfTywgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMjg3MywzICsyOTI0LDUxIEBACiAgICAgICAgIGxlbiA9IDA7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChsZW4pOwogfQorCitzdGF0aWMgUHlPYmplY3QgKgorbGlzdHJldml0ZXJfcmVkdWNlKGxpc3RyZXZpdGVyb2JqZWN0ICppdCkKK3sKKyAgICByZXR1cm4gbGlzdGl0ZXJfcmVkdWNlX2dlbmVyYWwoaXQsIDApOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbGlzdHJldml0ZXJfc2V0c3RhdGUobGlzdHJldml0ZXJvYmplY3QgKml0LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3Qoc3RhdGUpOworICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaXQtPml0X3NlcSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChpbmRleCA8IC0xKQorICAgICAgICAgICAgaW5kZXggPSAtMTsKKyAgICAgICAgZWxzZSBpZiAoaW5kZXggPiBQeUxpc3RfR0VUX1NJWkUoaXQtPml0X3NlcSkgLSAxKQorICAgICAgICAgICAgaW5kZXggPSBQeUxpc3RfR0VUX1NJWkUoaXQtPml0X3NlcSkgLSAxOworICAgICAgICBpdC0+aXRfaW5kZXggPSBpbmRleDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKy8qIGNvbW1vbiBwaWNrbGluZyBzdXBwb3J0ICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitsaXN0aXRlcl9yZWR1Y2VfZ2VuZXJhbCh2b2lkICpfaXQsIGludCBmb3J3YXJkKQoreworICAgIFB5T2JqZWN0ICpsaXN0OworCisgICAgLyogdGhlIG9iamVjdHMgYXJlIG5vdCB0aGUgc2FtZSwgaW5kZXggaXMgb2YgZGlmZmVyZW50IHR5cGVzISAqLworICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAgIGxpc3RpdGVyb2JqZWN0ICppdCA9IChsaXN0aXRlcm9iamVjdCAqKV9pdDsKKyAgICAgICAgaWYgKGl0LT5pdF9zZXEpCisgICAgICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKWwiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPml0X3NlcSwgaXQtPml0X2luZGV4KTsKKyAgICB9IGVsc2UgeworICAgICAgICBsaXN0cmV2aXRlcm9iamVjdCAqaXQgPSAobGlzdHJldml0ZXJvYmplY3QgKilfaXQ7CisgICAgICAgIGlmIChpdC0+aXRfc2VxKQorICAgICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTyluIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oInJldmVyc2VkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+aXRfc2VxLCBpdC0+aXRfaW5kZXgpOworICAgIH0KKyAgICAvKiBlbXB0eSBpdGVyYXRvciwgY3JlYXRlIGFuIGVtcHR5IGxpc3QgKi8KKyAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAobGlzdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIGxpc3QpOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9sb25nb2JqZWN0LmMgYi9PYmplY3RzL2xvbmdvYmplY3QuYwppbmRleCBlMmE0ZWY5Li5kNGRjNDVhIDEwMDY0NAotLS0gYS9PYmplY3RzL2xvbmdvYmplY3QuYworKysgYi9PYmplY3RzL2xvbmdvYmplY3QuYwpAQCAtMzIwLDggKzMyMCwxNSBAQAogI2RlZmluZSBQWV9BQlNfTE9OR19NSU4gICAgICAgICAoMC0odW5zaWduZWQgbG9uZylMT05HX01JTikKICNkZWZpbmUgUFlfQUJTX1NTSVpFX1RfTUlOICAgICAgKDAtKHNpemVfdClQWV9TU0laRV9UX01JTikKIAotLyogR2V0IGEgQyBsb25nIGludCBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0LgotICAgUmV0dXJucyAtMSBhbmQgc2V0cyBhbiBlcnJvciBjb25kaXRpb24gaWYgb3ZlcmZsb3cgb2NjdXJzLiAqLworLyogR2V0IGEgQyBsb25nIGludCBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0IG9yIGFueSBvYmplY3QgdGhhdCBoYXMgYW4gX19pbnRfXworICAgbWV0aG9kLgorCisgICBPbiBvdmVyZmxvdywgcmV0dXJuIC0xIGFuZCBzZXQgKm92ZXJmbG93IHRvIDEgb3IgLTEgZGVwZW5kaW5nIG9uIHRoZSBzaWduIG9mCisgICB0aGUgcmVzdWx0LiAgT3RoZXJ3aXNlICpvdmVyZmxvdyBpcyAwLgorCisgICBGb3Igb3RoZXIgZXJyb3JzIChlLmcuLCBUeXBlRXJyb3IpLCByZXR1cm4gLTEgYW5kIHNldCBhbiBlcnJvciBjb25kaXRpb24uCisgICBJbiB0aGlzIGNhc2UgKm92ZXJmbG93IHdpbGwgYmUgMC4KKyovCiAKIGxvbmcKIFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhQeU9iamVjdCAqdnYsIGludCAqb3ZlcmZsb3cpCkBAIC00MTAsNiArNDE3LDkgQEAKICAgICByZXR1cm4gcmVzOwogfQogCisvKiBHZXQgYSBDIGxvbmcgaW50IGZyb20gYSBsb25nIGludCBvYmplY3Qgb3IgYW55IG9iamVjdCB0aGF0IGhhcyBhbiBfX2ludF9fCisgICBtZXRob2QuICBSZXR1cm4gLTEgYW5kIHNldCBhbiBlcnJvciBpZiBvdmVyZmxvdyBvY2N1cnMuICovCisKIGxvbmcKIFB5TG9uZ19Bc0xvbmcoUHlPYmplY3QgKm9iaikKIHsKQEAgLTY3NiwxMCArNjg2LDkgQEAKICAgICBhc3NlcnQobmRpZ2l0cyA9PSAwIHx8IHYtPm9iX2RpZ2l0W25kaWdpdHMgLSAxXSAhPSAwKTsKICAgICBpZiAobmRpZ2l0cyA+IDApIHsKICAgICAgICAgZGlnaXQgbXNkID0gdi0+b2JfZGlnaXRbbmRpZ2l0cyAtIDFdOwotCi0gICAgICAgIHJlc3VsdCA9IChuZGlnaXRzIC0gMSkgKiBQeUxvbmdfU0hJRlQ7Ci0gICAgICAgIGlmIChyZXN1bHQgLyBQeUxvbmdfU0hJRlQgIT0gKHNpemVfdCkobmRpZ2l0cyAtIDEpKQorICAgICAgICBpZiAoKHNpemVfdCkobmRpZ2l0cyAtIDEpID4gUFlfU0laRV9NQVggLyAoc2l6ZV90KVB5TG9uZ19TSElGVCkKICAgICAgICAgICAgIGdvdG8gT3ZlcmZsb3c7CisgICAgICAgIHJlc3VsdCA9IChzaXplX3QpKG5kaWdpdHMgLSAxKSAqIChzaXplX3QpUHlMb25nX1NISUZUOwogICAgICAgICBkbyB7CiAgICAgICAgICAgICArK3Jlc3VsdDsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gMCkKQEAgLTkzOSw3ICs5NDgsNyBAQAogCiB9CiAKLS8qIENyZWF0ZSBhIG5ldyBsb25nIChvciBpbnQpIG9iamVjdCBmcm9tIGEgQyBwb2ludGVyICovCisvKiBDcmVhdGUgYSBuZXcgbG9uZyBpbnQgb2JqZWN0IGZyb20gYSBDIHBvaW50ZXIgKi8KIAogUHlPYmplY3QgKgogUHlMb25nX0Zyb21Wb2lkUHRyKHZvaWQgKnApCkBAIC05NjUsMTUgKzk3NCwxMSBAQAogCiB9CiAKLS8qIEdldCBhIEMgcG9pbnRlciBmcm9tIGEgbG9uZyBvYmplY3QgKG9yIGFuIGludCBvYmplY3QgaW4gc29tZSBjYXNlcykgKi8KKy8qIEdldCBhIEMgcG9pbnRlciBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0LiAqLwogCiB2b2lkICoKIFB5TG9uZ19Bc1ZvaWRQdHIoUHlPYmplY3QgKnZ2KQogewotICAgIC8qIFRoaXMgZnVuY3Rpb24gd2lsbCBhbGxvdyBpbnQgb3IgbG9uZyBvYmplY3RzLiBJZiB2diBpcyBuZWl0aGVyLAotICAgICAgIHRoZW4gdGhlIFB5TG9uZ19Bc0xvbmcqKCkgZnVuY3Rpb25zIHdpbGwgcmFpc2UgdGhlIGV4Y2VwdGlvbjoKLSAgICAgICBQeUV4Y19TeXN0ZW1FcnJvciwgImJhZCBhcmd1bWVudCB0byBpbnRlcm5hbCBmdW5jdGlvbiIKLSAgICAqLwogI2lmIFNJWkVPRl9WT0lEX1AgPD0gU0laRU9GX0xPTkcKICAgICBsb25nIHg7CiAKQEAgLTExNTQsOCArMTE1OSw4IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CiB9CiAKLS8qIEdldCBhIEMgUFlfTE9OR19MT05HIGludCBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0LgotICAgUmV0dXJuIC0xIGFuZCBzZXQgYW4gZXJyb3IgaWYgb3ZlcmZsb3cgb2NjdXJzLiAqLworLyogR2V0IGEgQyBsb25nIGxvbmcgaW50IGZyb20gYSBsb25nIGludCBvYmplY3Qgb3IgYW55IG9iamVjdCB0aGF0IGhhcyBhbgorICAgX19pbnRfXyBtZXRob2QuICBSZXR1cm4gLTEgYW5kIHNldCBhbiBlcnJvciBpZiBvdmVyZmxvdyBvY2N1cnMuICovCiAKIFBZX0xPTkdfTE9ORwogUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKnZ2KQpAQCAtMTIxNywxMCArMTIyMiwxNCBAQAogICAgIGludCBvbmUgPSAxOwogICAgIGludCByZXM7CiAKLSAgICBpZiAodnYgPT0gTlVMTCB8fCAhUHlMb25nX0NoZWNrKHZ2KSkgeworICAgIGlmICh2diA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMTsKICAgICB9CisgICAgaWYgKCFQeUxvbmdfQ2hlY2sodnYpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIik7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xOworICAgIH0KIAogICAgIHYgPSAoUHlMb25nT2JqZWN0Kil2djsKICAgICBzd2l0Y2goUHlfU0laRSh2KSkgewpAQCAtMTMwNywxMiArMTMxNiwxNCBAQAogfQogI3VuZGVmIElTX0xJVFRMRV9FTkRJQU4KIAotLyogR2V0IGEgQyBsb25nIGxvbmcgaW50IGZyb20gYSBQeXRob24gbG9uZyBvciBQeXRob24gaW50IG9iamVjdC4KLSAgIE9uIG92ZXJmbG93LCByZXR1cm5zIC0xIGFuZCBzZXRzICpvdmVyZmxvdyB0byAxIG9yIC0xIGRlcGVuZGluZwotICAgb24gdGhlIHNpZ24gb2YgdGhlIHJlc3VsdC4gIE90aGVyd2lzZSAqb3ZlcmZsb3cgaXMgMC4KKy8qIEdldCBhIEMgbG9uZyBsb25nIGludCBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0IG9yIGFueSBvYmplY3QgdGhhdCBoYXMgYW4KKyAgIF9faW50X18gbWV0aG9kLgogCi0gICBGb3Igb3RoZXIgZXJyb3JzIChlLmcuLCB0eXBlIGVycm9yKSwgcmV0dXJucyAtMSBhbmQgc2V0cyBhbiBlcnJvcgotICAgY29uZGl0aW9uLgorICAgT24gb3ZlcmZsb3csIHJldHVybiAtMSBhbmQgc2V0ICpvdmVyZmxvdyB0byAxIG9yIC0xIGRlcGVuZGluZyBvbiB0aGUgc2lnbiBvZgorICAgdGhlIHJlc3VsdC4gIE90aGVyd2lzZSAqb3ZlcmZsb3cgaXMgMC4KKworICAgRm9yIG90aGVyIGVycm9ycyAoZS5nLiwgVHlwZUVycm9yKSwgcmV0dXJuIC0xIGFuZCBzZXQgYW4gZXJyb3IgY29uZGl0aW9uLgorICAgSW4gdGhpcyBjYXNlICpvdmVyZmxvdyB3aWxsIGJlIDAuCiAqLwogCiBQWV9MT05HX0xPTkcKQEAgLTE0MDYsMTAgKzE0MTcsOCBAQAogCiAjZGVmaW5lIENIRUNLX0JJTk9QKHYsdykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh2KSB8fCAhUHlMb25nX0NoZWNrKHcpKSB7ICAgICBcCi0gICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOyAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICghUHlMb25nX0NoZWNrKHYpIHx8ICFQeUxvbmdfQ2hlY2sodykpICAgICAgIFwKKyAgICAgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUoMCkKIAogLyogYml0c19pbl9kaWdpdChkKSByZXR1cm5zIHRoZSB1bmlxdWUgaW50ZWdlciBrIHN1Y2ggdGhhdCAyKiooay0xKSA8PSBkIDwKQEAgLTE1NjYsMjAgKzE1NzUsMjIgQEAKICAgIHN0cmluZy4gIChSZXR1cm4gdmFsdWUgaXMgbm9uLXNoYXJlZCBzbyB0aGF0IGNhbGxlcnMgY2FuIG1vZGlmeSB0aGUKICAgIHJldHVybmVkIHZhbHVlIGlmIG5lY2Vzc2FyeS4pICovCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1sb25nX3RvX2RlY2ltYWxfc3RyaW5nKFB5T2JqZWN0ICphYSkKK3N0YXRpYyBpbnQKK2xvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwoUHlPYmplY3QgKmFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnBfb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCiB7CiAgICAgUHlMb25nT2JqZWN0ICpzY3JhdGNoLCAqYTsKICAgICBQeU9iamVjdCAqc3RyOwogICAgIFB5X3NzaXplX3Qgc2l6ZSwgc3RybGVuLCBzaXplX2EsIGksIGo7CiAgICAgZGlnaXQgKnBvdXQsICpwaW4sIHJlbSwgdGVucG93OwotICAgIFB5X1VOSUNPREUgKnA7CiAgICAgaW50IG5lZ2F0aXZlOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKIAogICAgIGEgPSAoUHlMb25nT2JqZWN0ICopYWE7CiAgICAgaWYgKGEgPT0gTlVMTCB8fCAhUHlMb25nX0NoZWNrKGEpKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBzaXplX2EgPSBBQlMoUHlfU0laRShhKSk7CiAgICAgbmVnYXRpdmUgPSBQeV9TSVpFKGEpIDwgMDsKQEAgLTE1OTYsMTMgKzE2MDcsMTMgQEAKICAgICBpZiAoc2l6ZV9hID4gUFlfU1NJWkVfVF9NQVggLyBQeUxvbmdfU0hJRlQpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAibG9uZyBpcyB0b28gbGFyZ2UgdG8gZm9ybWF0Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIC8qIHRoZSBleHByZXNzaW9uIHNpemVfYSAqIFB5TG9uZ19TSElGVCBpcyBub3cgc2FmZSBmcm9tIG92ZXJmbG93ICovCiAgICAgc2l6ZSA9IDEgKyBzaXplX2EgKiBQeUxvbmdfU0hJRlQgLyAoMyAqIF9QeUxvbmdfREVDSU1BTF9TSElGVCk7CiAgICAgc2NyYXRjaCA9IF9QeUxvbmdfTmV3KHNpemUpOwogICAgIGlmIChzY3JhdGNoID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAKICAgICAvKiBjb252ZXJ0IGFycmF5IG9mIGJhc2UgX1B5TG9uZ19CQVNFIGRpZ2l0cyBpbiBwaW4gdG8gYW4gYXJyYXkgb2YKICAgICAgICBiYXNlIF9QeUxvbmdfREVDSU1BTF9CQVNFIGRpZ2l0cyBpbiBwb3V0LCBmb2xsb3dpbmcgS251dGggKFRBT0NQLApAQCAtMTYyNSw3ICsxNjM2LDcgQEAKICAgICAgICAgLyogY2hlY2sgZm9yIGtleWJvYXJkIGludGVycnVwdCAqLwogICAgICAgICBTSUdDSEVDSyh7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHNjcmF0Y2gpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0pOwogICAgIH0KICAgICAvKiBwb3V0IHNob3VsZCBoYXZlIGF0IGxlYXN0IG9uZSBkaWdpdCwgc28gdGhhdCB0aGUgY2FzZSB3aGVuIGEgPSAwCkBAIC0xNjQxLDY0ICsxNjUyLDExOCBAQAogICAgICAgICB0ZW5wb3cgKj0gMTA7CiAgICAgICAgIHN0cmxlbisrOwogICAgIH0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgc3RybGVuKTsKLSAgICBpZiAoc3RyID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHNjcmF0Y2gpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAod3JpdGVyKSB7CisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzdHJsZW4sICc5JykgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzY3JhdGNoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBraW5kID0gd3JpdGVyLT5raW5kOworICAgICAgICBzdHIgPSBOVUxMOwogICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RyID0gUHlVbmljb2RlX05ldyhzdHJsZW4sICc5Jyk7CisgICAgICAgIGlmIChzdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNjcmF0Y2gpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIH0KKworI2RlZmluZSBXUklURV9ESUdJVFMoVFlQRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICh3cml0ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcyArIHN0cmxlbjsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEoc3RyKSArIHN0cmxlbjsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAqcCA9ICdcMCc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgLyogcG91dFswXSB0aHJvdWdoIHBvdXRbc2l6ZS0yXSBjb250cmlidXRlIGV4YWN0bHkgICAgICAgICAgICBcCisgICAgICAgICAgIF9QeUxvbmdfREVDSU1BTF9TSElGVCBkaWdpdHMgZWFjaCAqLyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBmb3IgKGk9MDsgaSA8IHNpemUgLSAxOyBpKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJlbSA9IHBvdXRbaV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgX1B5TG9uZ19ERUNJTUFMX1NISUZUOyBqKyspIHsgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICotLXAgPSAnMCcgKyByZW0gJSAxMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICByZW0gLz0gMTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgLyogcG91dFtzaXplLTFdOiBhbHdheXMgcHJvZHVjZSBhdCBsZWFzdCBvbmUgZGVjaW1hbCBkaWdpdCAqLyBcCisgICAgICAgIHJlbSA9IHBvdXRbaV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICotLXAgPSAnMCcgKyByZW0gJSAxMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZW0gLz0gMTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IHdoaWxlIChyZW0gIT0gMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIC8qIGFuZCBzaWduICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAobmVnYXRpdmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICotLXAgPSAnLSc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAvKiBjaGVjayB3ZSd2ZSBjb3VudGVkIGNvcnJlY3RseSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBhc3NlcnQocCA9PSAoKFRZUEUqKVB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKSArIHdyaXRlci0+cG9zKSk7IFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBhc3NlcnQocCA9PSAoVFlQRSopUHlVbmljb2RlX0RBVEEoc3RyKSk7ICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCiAKICAgICAvKiBmaWxsIHRoZSBzdHJpbmcgcmlnaHQtdG8tbGVmdCAqLwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpICsgc3RybGVuOwotICAgICpwID0gJ1wwJzsKLSAgICAvKiBwb3V0WzBdIHRocm91Z2ggcG91dFtzaXplLTJdIGNvbnRyaWJ1dGUgZXhhY3RseQotICAgICAgIF9QeUxvbmdfREVDSU1BTF9TSElGVCBkaWdpdHMgZWFjaCAqLwotICAgIGZvciAoaT0wOyBpIDwgc2l6ZSAtIDE7IGkrKykgewotICAgICAgICByZW0gPSBwb3V0W2ldOwotICAgICAgICBmb3IgKGogPSAwOyBqIDwgX1B5TG9uZ19ERUNJTUFMX1NISUZUOyBqKyspIHsKLSAgICAgICAgICAgICotLXAgPSAnMCcgKyByZW0gJSAxMDsKLSAgICAgICAgICAgIHJlbSAvPSAxMDsKLSAgICAgICAgfQorICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgIFB5X1VDUzEgKnA7CisgICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1MxKTsKICAgICB9Ci0gICAgLyogcG91dFtzaXplLTFdOiBhbHdheXMgcHJvZHVjZSBhdCBsZWFzdCBvbmUgZGVjaW1hbCBkaWdpdCAqLwotICAgIHJlbSA9IHBvdXRbaV07Ci0gICAgZG8gewotICAgICAgICAqLS1wID0gJzAnICsgcmVtICUgMTA7Ci0gICAgICAgIHJlbSAvPSAxMDsKLSAgICB9IHdoaWxlIChyZW0gIT0gMCk7CisgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICBQeV9VQ1MyICpwOworICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTMik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9VQ1M0ICpwOworICAgICAgICBhc3NlcnQgKGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTNCk7CisgICAgfQorI3VuZGVmIFdSSVRFX0RJR0lUUwogCi0gICAgLyogYW5kIHNpZ24gKi8KLSAgICBpZiAobmVnYXRpdmUpCi0gICAgICAgICotLXAgPSAnLSc7Ci0KLSAgICAvKiBjaGVjayB3ZSd2ZSBjb3VudGVkIGNvcnJlY3RseSAqLwotICAgIGFzc2VydChwID09IFB5VW5pY29kZV9BU19VTklDT0RFKHN0cikpOwogICAgIFB5X0RFQ1JFRihzY3JhdGNoKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopc3RyOworICAgIGlmICh3cml0ZXIpIHsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3RybGVuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShzdHIsIDEpKTsKKyAgICAgICAgKnBfb3V0cHV0ID0gKFB5T2JqZWN0ICopc3RyOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2xvbmdfdG9fZGVjaW1hbF9zdHJpbmcoUHlPYmplY3QgKmFhKQoreworICAgIFB5T2JqZWN0ICp2OworICAgIGlmIChsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKGFhLCAmdiwgTlVMTCkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiB2OwogfQogCiAvKiBDb252ZXJ0IGEgbG9uZyBpbnQgb2JqZWN0IHRvIGEgc3RyaW5nLCB1c2luZyBhIGdpdmVuIGNvbnZlcnNpb24gYmFzZSwKLSAgIHdoaWNoIHNob3VsZCBiZSBvbmUgb2YgMiwgOCwgMTAgb3IgMTYuICBSZXR1cm4gYSBzdHJpbmcgb2JqZWN0LgotICAgSWYgYmFzZSBpcyAyLCA4IG9yIDE2LCBhZGQgdGhlIHByb3BlciBwcmVmaXggJzBiJywgJzBvJyBvciAnMHgnLiAqLworICAgd2hpY2ggc2hvdWxkIGJlIG9uZSBvZiAyLCA4IG9yIDE2LiAgUmV0dXJuIGEgc3RyaW5nIG9iamVjdC4KKyAgIElmIGJhc2UgaXMgMiwgOCBvciAxNiwgYWRkIHRoZSBwcm9wZXIgcHJlZml4ICcwYicsICcwbycgb3IgJzB4JworICAgaWYgYWx0ZXJuYXRlIGlzIG5vbnplcm8uICovCiAKLVB5T2JqZWN0ICoKLV9QeUxvbmdfRm9ybWF0KFB5T2JqZWN0ICphYSwgaW50IGJhc2UpCitzdGF0aWMgaW50Citsb25nX2Zvcm1hdF9iaW5hcnkoUHlPYmplY3QgKmFhLCBpbnQgYmFzZSwgaW50IGFsdGVybmF0ZSwKKyAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnBfb3V0cHV0LCBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCiB7CiAgICAgcmVnaXN0ZXIgUHlMb25nT2JqZWN0ICphID0gKFB5TG9uZ09iamVjdCAqKWFhOwotICAgIFB5T2JqZWN0ICpzdHI7Ci0gICAgUHlfc3NpemVfdCBpLCBzejsKKyAgICBQeU9iamVjdCAqdjsKKyAgICBQeV9zc2l6ZV90IHN6OwogICAgIFB5X3NzaXplX3Qgc2l6ZV9hOwotICAgIFB5X1VOSUNPREUgKnAsIHNpZ24gPSAnXDAnOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICBpbnQgbmVnYXRpdmU7CiAgICAgaW50IGJpdHM7CiAKLSAgICBhc3NlcnQoYmFzZSA9PSAyIHx8IGJhc2UgPT0gOCB8fCBiYXNlID09IDEwIHx8IGJhc2UgPT0gMTYpOwotICAgIGlmIChiYXNlID09IDEwKQotICAgICAgICByZXR1cm4gbG9uZ190b19kZWNpbWFsX3N0cmluZygoUHlPYmplY3QgKilhKTsKLQorICAgIGFzc2VydChiYXNlID09IDIgfHwgYmFzZSA9PSA4IHx8IGJhc2UgPT0gMTYpOwogICAgIGlmIChhID09IE5VTEwgfHwgIVB5TG9uZ19DaGVjayhhKSkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgc2l6ZV9hID0gQUJTKFB5X1NJWkUoYSkpOworICAgIG5lZ2F0aXZlID0gUHlfU0laRShhKSA8IDA7CiAKICAgICAvKiBDb21wdXRlIGEgcm91Z2ggdXBwZXIgYm91bmQgZm9yIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyAqLwogICAgIHN3aXRjaCAoYmFzZSkgewpAQCAtMTcxNSw3MCArMTc4MCwxMzcgQEAKICAgICAgICAgYXNzZXJ0KDApOyAvKiBzaG91bGRuJ3QgZXZlciBnZXQgaGVyZSAqLwogICAgICAgICBiaXRzID0gMDsgLyogdG8gc2lsZW5jZSBnY2Mgd2FybmluZyAqLwogICAgIH0KLSAgICAvKiBjb21wdXRlIGxlbmd0aCBvZiBvdXRwdXQgc3RyaW5nOiBhbGxvdyAyIGNoYXJhY3RlcnMgZm9yIHByZWZpeCBhbmQKLSAgICAgICAxIGZvciBwb3NzaWJsZSAnLScgc2lnbi4gKi8KLSAgICBpZiAoc2l6ZV9hID4gKFBZX1NTSVpFX1RfTUFYIC0gMykgLyBQeUxvbmdfU0hJRlQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiaW50IGlzIHRvbyBsYXJnZSB0byBmb3JtYXQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIC8qIG5vdyBzaXplX2EgKiBQeUxvbmdfU0hJRlQgKyAzIDw9IFBZX1NTSVpFX1RfTUFYLCBzbyB0aGUgUkhTIGJlbG93Ci0gICAgICAgaXMgc2FmZSBmcm9tIG92ZXJmbG93ICovCi0gICAgc3ogPSAzICsgKHNpemVfYSAqIFB5TG9uZ19TSElGVCArIChiaXRzIC0gMSkpIC8gYml0czsKLSAgICBhc3NlcnQoc3ogPj0gMCk7Ci0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHN6KTsKLSAgICBpZiAoc3RyID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpICsgc3o7Ci0gICAgKnAgPSAnXDAnOwotICAgIGlmIChQeV9TSVpFKGEpIDwgMCkKLSAgICAgICAgc2lnbiA9ICctJzsKIAotICAgIGlmIChQeV9TSVpFKGEpID09IDApIHsKLSAgICAgICAgKi0tcCA9ICcwJzsKKyAgICAvKiBDb21wdXRlIGV4YWN0IGxlbmd0aCAnc3onIG9mIG91dHB1dCBzdHJpbmcuICovCisgICAgaWYgKHNpemVfYSA9PSAwKSB7CisgICAgICAgIHN6ID0gMTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIC8qIEpSSDogc3BlY2lhbCBjYXNlIGZvciBwb3dlci1vZi0yIGJhc2VzICovCi0gICAgICAgIHR3b2RpZ2l0cyBhY2N1bSA9IDA7Ci0gICAgICAgIGludCBhY2N1bWJpdHMgPSAwOyAgICAgICAgICAgICAgLyogIyBvZiBiaXRzIGluIGFjY3VtICovCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplX2E7ICsraSkgewotICAgICAgICAgICAgYWNjdW0gfD0gKHR3b2RpZ2l0cylhLT5vYl9kaWdpdFtpXSA8PCBhY2N1bWJpdHM7Ci0gICAgICAgICAgICBhY2N1bWJpdHMgKz0gUHlMb25nX1NISUZUOwotICAgICAgICAgICAgYXNzZXJ0KGFjY3VtYml0cyA+PSBiaXRzKTsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGNkaWdpdDsKLSAgICAgICAgICAgICAgICBjZGlnaXQgPSAoUHlfVU5JQ09ERSkoYWNjdW0gJiAoYmFzZSAtIDEpKTsKLSAgICAgICAgICAgICAgICBjZGlnaXQgKz0gKGNkaWdpdCA8IDEwKSA/ICcwJyA6ICdhJy0xMDsKLSAgICAgICAgICAgICAgICBhc3NlcnQocCA+IFB5VW5pY29kZV9BU19VTklDT0RFKHN0cikpOwotICAgICAgICAgICAgICAgICotLXAgPSBjZGlnaXQ7Ci0gICAgICAgICAgICAgICAgYWNjdW1iaXRzIC09IGJpdHM7Ci0gICAgICAgICAgICAgICAgYWNjdW0gPj49IGJpdHM7Ci0gICAgICAgICAgICB9IHdoaWxlIChpIDwgc2l6ZV9hLTEgPyBhY2N1bWJpdHMgPj0gYml0cyA6IGFjY3VtID4gMCk7CisgICAgICAgIFB5X3NzaXplX3Qgc2l6ZV9hX2luX2JpdHM7CisgICAgICAgIC8qIEVuc3VyZSBvdmVyZmxvdyBkb2Vzbid0IG9jY3VyIGR1cmluZyBjb21wdXRhdGlvbiBvZiBzei4gKi8KKyAgICAgICAgaWYgKHNpemVfYSA+IChQWV9TU0laRV9UX01BWCAtIDMpIC8gUHlMb25nX1NISUZUKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50IGlzIHRvbyBsYXJnZSB0byBmb3JtYXQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQorICAgICAgICBzaXplX2FfaW5fYml0cyA9IChzaXplX2EgLSAxKSAqIFB5TG9uZ19TSElGVCArCisgICAgICAgICAgICAgICAgICAgICAgICAgYml0c19pbl9kaWdpdChhLT5vYl9kaWdpdFtzaXplX2EgLSAxXSk7CisgICAgICAgIC8qIEFsbG93IDEgY2hhcmFjdGVyIGZvciBhICctJyBzaWduLiAqLworICAgICAgICBzeiA9IG5lZ2F0aXZlICsgKHNpemVfYV9pbl9iaXRzICsgKGJpdHMgLSAxKSkgLyBiaXRzOworICAgIH0KKyAgICBpZiAoYWx0ZXJuYXRlKSB7CisgICAgICAgIC8qIDIgY2hhcmFjdGVycyBmb3IgcHJlZml4ICAqLworICAgICAgICBzeiArPSAyOwogICAgIH0KIAotICAgIGlmIChiYXNlID09IDE2KQotICAgICAgICAqLS1wID0gJ3gnOwotICAgIGVsc2UgaWYgKGJhc2UgPT0gOCkKLSAgICAgICAgKi0tcCA9ICdvJzsKLSAgICBlbHNlIC8qIChiYXNlID09IDIpICovCi0gICAgICAgICotLXAgPSAnYic7Ci0gICAgKi0tcCA9ICcwJzsKLSAgICBpZiAoc2lnbikKLSAgICAgICAgKi0tcCA9IHNpZ247Ci0gICAgaWYgKHAgIT0gUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSkgewotICAgICAgICBQeV9VTklDT0RFICpxID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKTsKLSAgICAgICAgYXNzZXJ0KHAgPiBxKTsKLSAgICAgICAgZG8gewotICAgICAgICB9IHdoaWxlICgoKnErKyA9ICpwKyspICE9ICdcMCcpOwotICAgICAgICBxLS07Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZzdHIsKFB5X3NzaXplX3QpIChxIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpKSkpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KKyAgICBpZiAod3JpdGVyKSB7CisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzeiwgJ3gnKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAga2luZCA9IHdyaXRlci0+a2luZDsKKyAgICAgICAgdiA9IE5VTEw7CiAgICAgfQotICAgIHJldHVybiAoUHlPYmplY3QgKilzdHI7CisgICAgZWxzZSB7CisgICAgICAgIHYgPSBQeVVuaWNvZGVfTmV3KHN6LCAneCcpOworICAgICAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodik7CisgICAgfQorCisjZGVmaW5lIFdSSVRFX0RJR0lUUyhUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICh3cml0ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKSArIHdyaXRlci0+cG9zICsgc3o7IFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEodikgKyBzejsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHNpemVfYSA9PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICotLXAgPSAnMCc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIC8qIEpSSDogc3BlY2lhbCBjYXNlIGZvciBwb3dlci1vZi0yIGJhc2VzICovICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHR3b2RpZ2l0cyBhY2N1bSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGludCBhY2N1bWJpdHMgPSAwOyAgIC8qICMgb2YgYml0cyBpbiBhY2N1bSAqLyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplX2E7ICsraSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBhY2N1bSB8PSAodHdvZGlnaXRzKWEtPm9iX2RpZ2l0W2ldIDw8IGFjY3VtYml0czsgICAgICAgIFwKKyAgICAgICAgICAgICAgICBhY2N1bWJpdHMgKz0gUHlMb25nX1NISUZUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBhc3NlcnQoYWNjdW1iaXRzID49IGJpdHMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgY2hhciBjZGlnaXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgY2RpZ2l0ID0gKGNoYXIpKGFjY3VtICYgKGJhc2UgLSAxKSk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgY2RpZ2l0ICs9IChjZGlnaXQgPCAxMCkgPyAnMCcgOiAnYSctMTA7ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgKi0tcCA9IGNkaWdpdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgYWNjdW1iaXRzIC09IGJpdHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgYWNjdW0gPj49IGJpdHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChpIDwgc2l6ZV9hLTEgPyBhY2N1bWJpdHMgPj0gYml0cyA6IGFjY3VtID4gMCk7IFwKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKGFsdGVybmF0ZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGlmIChiYXNlID09IDE2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAqLS1wID0gJ3gnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGVsc2UgaWYgKGJhc2UgPT0gOCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAqLS1wID0gJ28nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGVsc2UgLyogKGJhc2UgPT0gMikgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAqLS1wID0gJ2InOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICotLXAgPSAnMCc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKG5lZ2F0aXZlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICotLXAgPSAnLSc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGFzc2VydChwID09ICgoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MpKTsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYXNzZXJ0KHAgPT0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHYpKTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICBQeV9VQ1MxICpwOworICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTMSk7CisgICAgfQorICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgUHlfVUNTMiAqcDsKKyAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfVUNTNCAqcDsKKyAgICAgICAgYXNzZXJ0IChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzQpOworICAgIH0KKyN1bmRlZiBXUklURV9ESUdJVFMKKworICAgIGlmICh3cml0ZXIpIHsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3o7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHYsIDEpKTsKKyAgICAgICAgKnBfb3V0cHV0ID0gdjsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK1B5T2JqZWN0ICoKK19QeUxvbmdfRm9ybWF0KFB5T2JqZWN0ICpvYmosIGludCBiYXNlKQoreworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgaW50IGVycjsKKyAgICBpZiAoYmFzZSA9PSAxMCkKKyAgICAgICAgZXJyID0gbG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChvYmosICZzdHIsIE5VTEwpOworICAgIGVsc2UKKyAgICAgICAgZXJyID0gbG9uZ19mb3JtYXRfYmluYXJ5KG9iaiwgYmFzZSwgMSwgJnN0ciwgTlVMTCk7CisgICAgaWYgKGVyciA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHN0cjsKK30KKworaW50CitfUHlMb25nX0Zvcm1hdFdyaXRlcihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2UsIGludCBhbHRlcm5hdGUpCit7CisgICAgaWYgKGJhc2UgPT0gMTApCisgICAgICAgIHJldHVybiBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKG9iaiwgTlVMTCwgd3JpdGVyKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBsb25nX2Zvcm1hdF9iaW5hcnkob2JqLCBiYXNlLCBhbHRlcm5hdGUsIE5VTEwsIHdyaXRlcik7CiB9CiAKIC8qIFRhYmxlIG9mIGRpZ2l0IHZhbHVlcyBmb3IgOC1iaXQgc3RyaW5nIC0+IGludGVnZXIgY29udmVyc2lvbi4KQEAgLTIxNTYsMjMgKzIyODgsMjYgQEAKIFB5T2JqZWN0ICoKIFB5TG9uZ19Gcm9tVW5pY29kZShQeV9VTklDT0RFICp1LCBQeV9zc2l6ZV90IGxlbmd0aCwgaW50IGJhc2UpCiB7CisgICAgUHlPYmplY3QgKnYsICp1bmljb2RlID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHUsIGxlbmd0aCk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdiA9IFB5TG9uZ19Gcm9tVW5pY29kZU9iamVjdCh1bmljb2RlLCBiYXNlKTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHY7Cit9CisKK1B5T2JqZWN0ICoKK1B5TG9uZ19Gcm9tVW5pY29kZU9iamVjdChQeU9iamVjdCAqdSwgaW50IGJhc2UpCit7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqYXNjaWlkaWc7CiAgICAgY2hhciAqYnVmZmVyLCAqZW5kOwotICAgIFB5X3NzaXplX3QgaSwgYnVmbGVuOwotICAgIFB5X1VOSUNPREUgKnB0cjsKKyAgICBQeV9zc2l6ZV90IGJ1ZmxlbjsKIAotICAgIGFzY2lpZGlnID0gUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKHUsIGxlbmd0aCk7CisgICAgYXNjaWlkaWcgPSBfUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxBbmRTcGFjZVRvQVNDSUkodSk7CiAgICAgaWYgKGFzY2lpZGlnID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIC8qIFJlcGxhY2Ugbm9uLUFTQ0lJIHdoaXRlc3BhY2Ugd2l0aCAnICcgKi8KLSAgICBwdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShhc2NpaWRpZyk7Ci0gICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSBwdHJbaV07Ci0gICAgICAgIGlmIChjaCA+IDEyNyAmJiBQeV9VTklDT0RFX0lTU1BBQ0UoY2gpKQotICAgICAgICAgICAgcHRyW2ldID0gJyAnOwotICAgIH0KLSAgICBidWZmZXIgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShhc2NpaWRpZywgJmJ1Zmxlbik7CisgICAgYnVmZmVyID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoYXNjaWlkaWcsICZidWZsZW4pOwogICAgIGlmIChidWZmZXIgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoYXNjaWlkaWcpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI0NjksOCArMjYwNCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICB9Ci0gICAgYXNzZXJ0KDEgPD0geF9zaXplICYmCi0gICAgICAgICAgIHhfc2l6ZSA8PSAoUHlfc3NpemVfdCkoc2l6ZW9mKHhfZGlnaXRzKS9zaXplb2YoZGlnaXQpKSk7CisgICAgYXNzZXJ0KDEgPD0geF9zaXplICYmIHhfc2l6ZSA8PSAoUHlfc3NpemVfdClQeV9BUlJBWV9MRU5HVEgoeF9kaWdpdHMpKTsKIAogICAgIC8qIFJvdW5kLCBhbmQgY29udmVydCB0byBkb3VibGUuICovCiAgICAgeF9kaWdpdHNbMF0gKz0gaGFsZl9ldmVuX2NvcnJlY3Rpb25beF9kaWdpdHNbMF0gJiA3XTsKQEAgLTI1MDcsMTAgKzI2NDEsMTQgQEAKICAgICBQeV9zc2l6ZV90IGV4cG9uZW50OwogICAgIGRvdWJsZSB4OwogCi0gICAgaWYgKHYgPT0gTlVMTCB8fCAhUHlMb25nX0NoZWNrKHYpKSB7CisgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIC0xLjA7CiAgICAgfQorICAgIGlmICghUHlMb25nX0NoZWNrKHYpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIik7CisgICAgICAgIHJldHVybiAtMS4wOworICAgIH0KICAgICB4ID0gX1B5TG9uZ19GcmV4cCgoUHlMb25nT2JqZWN0ICopdiwgJmV4cG9uZW50KTsKICAgICBpZiAoKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB8fCBleHBvbmVudCA+IERCTF9NQVhfRVhQKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLApAQCAtMzYzNSw4ICszNzczLDcgQEAKICAgICBlbHNlIHsKICAgICAgICAgUHlfREVDUkVGKGEpOwogICAgICAgICBQeV9ERUNSRUYoYik7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KIAogICAgIGlmIChQeV9TSVpFKGIpIDwgMCkgeyAgLyogaWYgZXhwb25lbnQgaXMgbmVnYXRpdmUgKi8KQEAgLTQxNjksOSArNDMwNiw3IEBACiAgICAgfQogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh4KSkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5pY29kZShQeVVuaWNvZGVfQVNfVU5JQ09ERSh4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoeCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCliYXNlKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5pY29kZU9iamVjdCh4LCAoaW50KWJhc2UpOwogICAgIGVsc2UgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKHgpIHx8IFB5Qnl0ZXNfQ2hlY2soeCkpIHsKICAgICAgICAgLyogU2luY2UgUHlMb25nX0Zyb21TdHJpbmcgZG9lc24ndCBoYXZlIGEgbGVuZ3RoIHBhcmFtZXRlciwKICAgICAgICAgICogY2hlY2sgaGVyZSBmb3IgcG9zc2libGUgTlVMcyBpbiB0aGUgc3RyaW5nLiAqLwpAQCAtNDI1MCwxMiArNDM4NSwyMiBAQAogbG9uZ19fZm9ybWF0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYzsKKyAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKKyAgICBpbnQgcmV0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOl9fZm9ybWF0X18iLCAmZm9ybWF0X3NwZWMpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gX1B5TG9uZ19Gb3JtYXRBZHZhbmNlZChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKGZvcm1hdF9zcGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoZm9ybWF0X3NwZWMpKTsKKworICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyLCAwKTsKKyAgICByZXQgPSBfUHlMb25nX0Zvcm1hdEFkdmFuY2VkV3JpdGVyKAorICAgICAgICAmd3JpdGVyLAorICAgICAgICBzZWxmLAorICAgICAgICBmb3JtYXRfc3BlYywgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoZm9ybWF0X3NwZWMpKTsKKyAgICBpZiAocmV0ID09IC0xKSB7CisgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIH0KIAogLyogUmV0dXJuIGEgcGFpciAocSwgcikgc3VjaCB0aGF0IGEgPSBiICogcSArIHIsIGFuZApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tZW1vcnlvYmplY3QuYyBiL09iamVjdHMvbWVtb3J5b2JqZWN0LmMKaW5kZXggNDAzYWE2OC4uYWJkMDY5YiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tZW1vcnlvYmplY3QuYworKysgYi9PYmplY3RzL21lbW9yeW9iamVjdC5jCkBAIC0xLDEyNiArMSw5NTUgQEAKLQogLyogTWVtb3J5dmlldyBvYmplY3QgaW1wbGVtZW50YXRpb24gKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgPHN0ZGRlZi5oPgogCi0jZGVmaW5lIElTX1JFTEVBU0VEKG1lbW9iaikgXAotICAgICgoKFB5TWVtb3J5Vmlld09iamVjdCAqKSBtZW1vYmopLT52aWV3LmJ1ZiA9PSBOVUxMKQogCi0jZGVmaW5lIENIRUNLX1JFTEVBU0VEKG1lbW9iaikgXAotICAgIGlmIChJU19SRUxFQVNFRChtZW1vYmopKSB7IFwKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYXRpb24gZm9yYmlkZGVuIG9uIHJlbGVhc2VkIG1lbW9yeXZpZXcgb2JqZWN0Iik7IFwKLSAgICAgICAgcmV0dXJuIE5VTEw7IFwKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICBNYW5hZ2VkQnVmZmVyIE9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAgIE1hbmFnZWRCdWZmZXIgT2JqZWN0OgorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBvYmplY3QgaXMgdG8gZmFjaWxpdGF0ZSB0aGUgaGFuZGxpbmcgb2YgY2hhaW5lZAorICAgICBtZW1vcnl2aWV3cyB0aGF0IGhhdmUgdGhlIHNhbWUgdW5kZXJseWluZyBleHBvcnRpbmcgb2JqZWN0LiBQRVAtMzExOAorICAgICBhbGxvd3MgdGhlIHVuZGVybHlpbmcgb2JqZWN0IHRvIGNoYW5nZSB3aGlsZSBhIHZpZXcgaXMgZXhwb3J0ZWQuIFRoaXMKKyAgICAgY291bGQgbGVhZCB0byB1bmV4cGVjdGVkIHJlc3VsdHMgd2hlbiBjb25zdHJ1Y3RpbmcgYSBuZXcgbWVtb3J5dmlldworICAgICBmcm9tIGFuIGV4aXN0aW5nIG1lbW9yeXZpZXcuCisKKyAgICAgUmF0aGVyIHRoYW4gcmVwZWF0ZWRseSByZWRpcmVjdGluZyBidWZmZXIgcmVxdWVzdHMgdG8gdGhlIG9yaWdpbmFsIGJhc2UKKyAgICAgb2JqZWN0LCBhbGwgY2hhaW5lZCBtZW1vcnl2aWV3cyB1c2UgYSBzaW5nbGUgYnVmZmVyIHNuYXBzaG90LiBUaGlzCisgICAgIHNuYXBzaG90IGlzIGdlbmVyYXRlZCBieSB0aGUgY29uc3RydWN0b3IgX1B5TWFuYWdlZEJ1ZmZlcl9Gcm9tT2JqZWN0KCkuCisKKyAgIE93bmVyc2hpcCBydWxlczoKKyAgIC0tLS0tLS0tLS0tLS0tLS0KKworICAgICBUaGUgbWFzdGVyIGJ1ZmZlciBpbnNpZGUgYSBtYW5hZ2VkIGJ1ZmZlciBpcyBmaWxsZWQgaW4gYnkgdGhlIG9yaWdpbmFsCisgICAgIGJhc2Ugb2JqZWN0LiBzaGFwZSwgc3RyaWRlcywgc3Vib2Zmc2V0cyBhbmQgZm9ybWF0IGFyZSByZWFkLW9ubHkgZm9yCisgICAgIGFsbCBjb25zdW1lcnMuCisKKyAgICAgQSBtZW1vcnl2aWV3J3MgYnVmZmVyIGlzIGEgcHJpdmF0ZSBjb3B5IG9mIHRoZSBleHBvcnRlcidzIGJ1ZmZlci4gc2hhcGUsCisgICAgIHN0cmlkZXMgYW5kIHN1Ym9mZnNldHMgYmVsb25nIHRvIHRoZSBtZW1vcnl2aWV3IGFuZCBhcmUgdGh1cyB3cml0YWJsZS4KKworICAgICBJZiBhIG1lbW9yeXZpZXcgaXRzZWxmIGV4cG9ydHMgc2V2ZXJhbCBidWZmZXJzIHZpYSBtZW1vcnlfZ2V0YnVmKCksIGFsbAorICAgICBidWZmZXIgY29waWVzIHNoYXJlIHNoYXBlLCBzdHJpZGVzIGFuZCBzdWJvZmZzZXRzLiBJbiB0aGlzIGNhc2UsIHRoZQorICAgICBhcnJheXMgYXJlIE5PVCB3cml0YWJsZS4KKworICAgUmVmZXJlbmNlIGNvdW50IGFzc3VtcHRpb25zOgorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgIFRoZSAnb2JqJyBtZW1iZXIgb2YgYSBQeV9idWZmZXIgbXVzdCBlaXRoZXIgYmUgTlVMTCBvciByZWZlciB0byB0aGUKKyAgICAgZXhwb3J0aW5nIGJhc2Ugb2JqZWN0LiBJbiB0aGUgUHl0aG9uIGNvZGViYXNlLCBhbGwgZ2V0YnVmZmVycHJvY3MKKyAgICAgcmV0dXJuIGEgbmV3IHJlZmVyZW5jZSB0byB2aWV3Lm9iaiAoZXhhbXBsZTogYnl0ZXNfYnVmZmVyX2dldGJ1ZmZlcigpKS4KKworICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCkgZGVjcmVtZW50cyB2aWV3Lm9iaiAoaWYgbm9uLU5VTEwpLCBzbyB0aGUKKyAgICAgcmVsZWFzZWJ1ZmZlcnByb2NzIG11c3QgTk9UIGRlY3JlbWVudCB2aWV3Lm9iai4KKyovCisKKworI2RlZmluZSBYU1RSSU5HSVpFKHYpICN2CisjZGVmaW5lIFNUUklOR0laRSh2KSBYU1RSSU5HSVpFKHYpCisKKyNkZWZpbmUgQ0hFQ0tfTUJVRl9SRUxFQVNFRChtYnVmKSBcCisgICAgaWYgKCgoX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqKW1idWYpLT5mbGFncyZfUHlfTUFOQUdFRF9CVUZGRVJfUkVMRUFTRUQpIHsgXAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICJvcGVyYXRpb24gZm9yYmlkZGVuIG9uIHJlbGVhc2VkIG1lbW9yeXZpZXcgb2JqZWN0Iik7ICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KIAotI2RlZmluZSBDSEVDS19SRUxFQVNFRF9JTlQobWVtb2JqKSBcCi0gICAgaWYgKElTX1JFTEVBU0VEKG1lbW9iaikpIHsgXAotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgXAotICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiBmb3JiaWRkZW4gb24gcmVsZWFzZWQgbWVtb3J5dmlldyBvYmplY3QiKTsgXAotICAgICAgICByZXR1cm4gLTE7IFwKLSAgICB9CiAKLXN0YXRpYyBQeV9zc2l6ZV90Ci1nZXRfc2hhcGUwKFB5X2J1ZmZlciAqYnVmKQorUHlfTE9DQUxfSU5MSU5FKF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKikKK21idWZfYWxsb2Modm9pZCkKIHsKLSAgICBpZiAoYnVmLT5zaGFwZSAhPSBOVUxMKQotICAgICAgICByZXR1cm4gYnVmLT5zaGFwZVswXTsKLSAgICBpZiAoYnVmLT5uZGltID09IDApCi0gICAgICAgIHJldHVybiAxOwotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICJleHBvcnRlZCBidWZmZXIgZG9lcyBub3QgaGF2ZSBhbnkgc2hhcGUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCAiCi0gICAgICAgICJ0byBpdCIpOwotICAgIHJldHVybiAtMTsKKyAgICBfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICptYnVmOworCisgICAgbWJ1ZiA9IChfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICopCisgICAgICAgIFB5T2JqZWN0X0dDX05ldyhfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0LCAmX1B5TWFuYWdlZEJ1ZmZlcl9UeXBlKTsKKyAgICBpZiAobWJ1ZiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtYnVmLT5mbGFncyA9IDA7CisgICAgbWJ1Zi0+ZXhwb3J0cyA9IDA7CisgICAgbWJ1Zi0+bWFzdGVyLm9iaiA9IE5VTEw7CisgICAgX1B5T2JqZWN0X0dDX1RSQUNLKG1idWYpOworCisgICAgcmV0dXJuIG1idWY7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitfUHlNYW5hZ2VkQnVmZmVyX0Zyb21PYmplY3QoUHlPYmplY3QgKmJhc2UpCit7CisgICAgX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqbWJ1ZjsKKworICAgIG1idWYgPSBtYnVmX2FsbG9jKCk7CisgICAgaWYgKG1idWYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGJhc2UsICZtYnVmLT5tYXN0ZXIsIFB5QlVGX0ZVTExfUk8pIDwgMCkgeworICAgICAgICBtYnVmLT5tYXN0ZXIub2JqID0gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKG1idWYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopbWJ1ZjsKIH0KIAogc3RhdGljIHZvaWQKLWR1cF9idWZmZXIoUHlfYnVmZmVyICpkZXN0LCBQeV9idWZmZXIgKnNyYykKK21idWZfcmVsZWFzZShfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICpzZWxmKQogewotICAgICpkZXN0ID0gKnNyYzsKLSAgICBpZiAoc3JjLT5uZGltID09IDEgJiYgc3JjLT5zaGFwZSAhPSBOVUxMKSB7Ci0gICAgICAgIGRlc3QtPnNoYXBlID0gJihkZXN0LT5zbWFsbHRhYmxlWzBdKTsKLSAgICAgICAgZGVzdC0+c2hhcGVbMF0gPSBnZXRfc2hhcGUwKHNyYyk7Ci0gICAgfQotICAgIGlmIChzcmMtPm5kaW0gPT0gMSAmJiBzcmMtPnN0cmlkZXMgIT0gTlVMTCkgewotICAgICAgICBkZXN0LT5zdHJpZGVzID0gJihkZXN0LT5zbWFsbHRhYmxlWzFdKTsKLSAgICAgICAgZGVzdC0+c3RyaWRlc1swXSA9IHNyYy0+c3RyaWRlc1swXTsKLSAgICB9CisgICAgaWYgKHNlbGYtPmZsYWdzJl9QeV9NQU5BR0VEX0JVRkZFUl9SRUxFQVNFRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLyogTk9URTogYXQgdGhpcyBwb2ludCBzZWxmLT5leHBvcnRzIGNhbiBzdGlsbCBiZSA+IDAgaWYgdGhpcyBmdW5jdGlvbgorICAgICAgIGlzIGNhbGxlZCBmcm9tIG1idWZfY2xlYXIoKSB0byBicmVhayB1cCBhIHJlZmVyZW5jZSBjeWNsZS4gKi8KKyAgICBzZWxmLT5mbGFncyB8PSBfUHlfTUFOQUdFRF9CVUZGRVJfUkVMRUFTRUQ7CisKKyAgICAvKiBQeUJ1ZmZlcl9SZWxlYXNlKCkgZGVjcmVtZW50cyBtYXN0ZXItPm9iaiBhbmQgc2V0cyBpdCB0byBOVUxMLiAqLworICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHNlbGYpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNlbGYtPm1hc3Rlcik7Cit9CisKK3N0YXRpYyB2b2lkCittYnVmX2RlYWxsb2MoX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqc2VsZikKK3sKKyAgICBhc3NlcnQoc2VsZi0+ZXhwb3J0cyA9PSAwKTsKKyAgICBtYnVmX3JlbGVhc2Uoc2VsZik7CisgICAgaWYgKHNlbGYtPmZsYWdzJl9QeV9NQU5BR0VEX0JVRkZFUl9GUkVFX0ZPUk1BVCkKKyAgICAgICAgUHlNZW1fRnJlZShzZWxmLT5tYXN0ZXIuZm9ybWF0KTsKKyAgICBQeU9iamVjdF9HQ19EZWwoc2VsZik7CiB9CiAKIHN0YXRpYyBpbnQKLW1lbW9yeV9nZXRidWYoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncykKK21idWZfdHJhdmVyc2UoX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7Ci0gICAgaW50IHJlcyA9IDA7Ci0gICAgQ0hFQ0tfUkVMRUFTRURfSU5UKHNlbGYpOwotICAgIGlmIChzZWxmLT52aWV3Lm9iaiAhPSBOVUxMKQotICAgICAgICByZXMgPSBQeU9iamVjdF9HZXRCdWZmZXIoc2VsZi0+dmlldy5vYmosIHZpZXcsIGZsYWdzKTsKLSAgICBpZiAodmlldykKLSAgICAgICAgZHVwX2J1ZmZlcih2aWV3LCAmc2VsZi0+dmlldyk7Ci0gICAgcmV0dXJuIHJlczsKKyAgICBQeV9WSVNJVChzZWxmLT5tYXN0ZXIub2JqKTsKKyAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQKLW1lbW9yeV9yZWxlYXNlYnVmKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICp2aWV3KQorc3RhdGljIGludAorbWJ1Zl9jbGVhcihfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICpzZWxmKQogewotICAgIFB5QnVmZmVyX1JlbGVhc2Uodmlldyk7CisgICAgYXNzZXJ0KHNlbGYtPmV4cG9ydHMgPj0gMCk7CisgICAgbWJ1Zl9yZWxlYXNlKHNlbGYpOworICAgIHJldHVybiAwOwogfQogCitQeVR5cGVPYmplY3QgX1B5TWFuYWdlZEJ1ZmZlcl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgIm1hbmFnZWRidWZmZXIiLAorICAgIHNpemVvZihfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0KSwKKyAgICAwLAorICAgIChkZXN0cnVjdG9yKW1idWZfZGVhbGxvYywgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyltYnVmX3RyYXZlcnNlLCAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KW1idWZfY2xlYXIgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KK307CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5VmlldyBPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBJbiB0aGUgcHJvY2VzcyBvZiBicmVha2luZyByZWZlcmVuY2UgY3ljbGVzIG1idWZfcmVsZWFzZSgpIGNhbiBiZQorICAgY2FsbGVkIGJlZm9yZSBtZW1vcnlfcmVsZWFzZSgpLiAqLworI2RlZmluZSBCQVNFX0lOQUNDRVNTSUJMRShtdikgXAorICAgICgoKFB5TWVtb3J5Vmlld09iamVjdCAqKW12KS0+ZmxhZ3MmX1B5X01FTU9SWVZJRVdfUkVMRUFTRUQgfHwgXAorICAgICAoKFB5TWVtb3J5Vmlld09iamVjdCAqKW12KS0+bWJ1Zi0+ZmxhZ3MmX1B5X01BTkFHRURfQlVGRkVSX1JFTEVBU0VEKQorCisjZGVmaW5lIENIRUNLX1JFTEVBU0VEKG12KSBcCisgICAgaWYgKEJBU0VfSU5BQ0NFU1NJQkxFKG12KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAib3BlcmF0aW9uIGZvcmJpZGRlbiBvbiByZWxlYXNlZCBtZW1vcnl2aWV3IG9iamVjdCIpOyBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIENIRUNLX1JFTEVBU0VEX0lOVChtdikgXAorICAgIGlmIChCQVNFX0lOQUNDRVNTSUJMRShtdikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgIm9wZXJhdGlvbiBmb3JiaWRkZW4gb24gcmVsZWFzZWQgbWVtb3J5dmlldyBvYmplY3QiKTsgXAorICAgICAgICByZXR1cm4gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworI2RlZmluZSBDSEVDS19MSVNUX09SX1RVUExFKHYpIFwKKyAgICBpZiAoIVB5TGlzdF9DaGVjayh2KSAmJiAhUHlUdXBsZV9DaGVjayh2KSkgeyBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICAgICAgICAgXAorICAgICAgICAgICAgI3YgIiBtdXN0IGJlIGEgbGlzdCBvciBhIHR1cGxlIik7ICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIFZJRVdfQUREUihtdikgKCYoKFB5TWVtb3J5Vmlld09iamVjdCAqKW12KS0+dmlldykKKworLyogQ2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiBzdWJvZmZzZXRzIGluIHRoZSBmaXJzdCBkaW1lbnNpb24uICovCisjZGVmaW5lIEhBVkVfUFRSKHN1Ym9mZnNldHMpIChzdWJvZmZzZXRzICYmIHN1Ym9mZnNldHNbMF0gPj0gMCkKKy8qIEFkanVzdCBwdHIgaWYgc3Vib2Zmc2V0cyBhcmUgcHJlc2VudC4gKi8KKyNkZWZpbmUgQURKVVNUX1BUUihwdHIsIHN1Ym9mZnNldHMpIFwKKyAgICAoSEFWRV9QVFIoc3Vib2Zmc2V0cykgPyAqKChjaGFyKiopcHRyKSArIHN1Ym9mZnNldHNbMF0gOiBwdHIpCisKKy8qIE1lbW9yeXZpZXcgYnVmZmVyIHByb3BlcnRpZXMgKi8KKyNkZWZpbmUgTVZfQ19DT05USUdVT1VTKGZsYWdzKSAoZmxhZ3MmKF9QeV9NRU1PUllWSUVXX1NDQUxBUnxfUHlfTUVNT1JZVklFV19DKSkKKyNkZWZpbmUgTVZfRl9DT05USUdVT1VTKGZsYWdzKSBcCisgICAgKGZsYWdzJihfUHlfTUVNT1JZVklFV19TQ0FMQVJ8X1B5X01FTU9SWVZJRVdfRk9SVFJBTikpCisjZGVmaW5lIE1WX0FOWV9DT05USUdVT1VTKGZsYWdzKSBcCisgICAgKGZsYWdzJihfUHlfTUVNT1JZVklFV19TQ0FMQVJ8X1B5X01FTU9SWVZJRVdfQ3xfUHlfTUVNT1JZVklFV19GT1JUUkFOKSkKKworLyogRmFzdCBjb250aWd1aXR5IHRlc3QuIENhbGxlciBtdXN0IGVuc3VyZSBzdWJvZmZzZXRzPT1OVUxMIGFuZCBuZGltPT0xLiAqLworI2RlZmluZSBNVl9DT05USUdVT1VTX05ESU0xKHZpZXcpIFwKKyAgICAoKHZpZXcpLT5zaGFwZVswXSA9PSAxIHx8ICh2aWV3KS0+c3RyaWRlc1swXSA9PSAodmlldyktPml0ZW1zaXplKQorCisvKiBnZXRidWZmZXIoKSByZXF1ZXN0cyAqLworI2RlZmluZSBSRVFfSU5ESVJFQ1QoZmxhZ3MpICgoZmxhZ3MmUHlCVUZfSU5ESVJFQ1QpID09IFB5QlVGX0lORElSRUNUKQorI2RlZmluZSBSRVFfQ19DT05USUdVT1VTKGZsYWdzKSAoKGZsYWdzJlB5QlVGX0NfQ09OVElHVU9VUykgPT0gUHlCVUZfQ19DT05USUdVT1VTKQorI2RlZmluZSBSRVFfRl9DT05USUdVT1VTKGZsYWdzKSAoKGZsYWdzJlB5QlVGX0ZfQ09OVElHVU9VUykgPT0gUHlCVUZfRl9DT05USUdVT1VTKQorI2RlZmluZSBSRVFfQU5ZX0NPTlRJR1VPVVMoZmxhZ3MpICgoZmxhZ3MmUHlCVUZfQU5ZX0NPTlRJR1VPVVMpID09IFB5QlVGX0FOWV9DT05USUdVT1VTKQorI2RlZmluZSBSRVFfU1RSSURFUyhmbGFncykgKChmbGFncyZQeUJVRl9TVFJJREVTKSA9PSBQeUJVRl9TVFJJREVTKQorI2RlZmluZSBSRVFfU0hBUEUoZmxhZ3MpICgoZmxhZ3MmUHlCVUZfTkQpID09IFB5QlVGX05EKQorI2RlZmluZSBSRVFfV1JJVEFCTEUoZmxhZ3MpIChmbGFncyZQeUJVRl9XUklUQUJMRSkKKyNkZWZpbmUgUkVRX0ZPUk1BVChmbGFncykgKGZsYWdzJlB5QlVGX0ZPUk1BVCkKKworCiBQeURvY19TVFJWQVIobWVtb3J5X2RvYywKICJtZW1vcnl2aWV3KG9iamVjdClcblwKIFxuXAogQ3JlYXRlIGEgbmV3IG1lbW9yeXZpZXcgb2JqZWN0IHdoaWNoIHJlZmVyZW5jZXMgdGhlIGdpdmVuIG9iamVjdC4iKTsKIAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgQ29weSBtZW1vcnl2aWV3IGJ1ZmZlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFRoZSBmdW5jdGlvbnMgaW4gdGhpcyBzZWN0aW9uIHRha2UgYSBzb3VyY2UgYW5kIGEgZGVzdGluYXRpb24gYnVmZmVyCisgICB3aXRoIHRoZSBzYW1lIGxvZ2ljYWwgc3RydWN0dXJlOiBmb3JtYXQsIGl0ZW1zaXplLCBuZGltIGFuZCBzaGFwZQorICAgYXJlIGlkZW50aWNhbCwgd2l0aCBuZGltID4gMC4KKworICAgTk9URTogQWxsIGJ1ZmZlcnMgYXJlIGFzc3VtZWQgdG8gaGF2ZSBQeUJVRl9GVUxMIGluZm9ybWF0aW9uLCB3aGljaAorICAgaXMgdGhlIGNhc2UgZm9yIG1lbW9yeXZpZXdzISAqLworCisKKy8qIEFzc3VtcHRpb25zOiBuZGltID49IDEuIFRoZSBtYWNybyB0ZXN0cyBmb3IgYSBjb3JuZXIgY2FzZSB0aGF0IHNob3VsZAorICAgcGVyaGFwcyBiZSBleHBsaWNpdGx5IGZvcmJpZGRlbiBpbiB0aGUgUEVQLiAqLworI2RlZmluZSBIQVZFX1NVQk9GRlNFVFNfSU5fTEFTVF9ESU0odmlldykgXAorICAgICh2aWV3LT5zdWJvZmZzZXRzICYmIHZpZXctPnN1Ym9mZnNldHNbZGVzdC0+bmRpbS0xXSA+PSAwKQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorbGFzdF9kaW1faXNfY29udGlndW91cyhjb25zdCBQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQoreworICAgIGFzc2VydChkZXN0LT5uZGltID4gMCAmJiBzcmMtPm5kaW0gPiAwKTsKKyAgICByZXR1cm4gKCFIQVZFX1NVQk9GRlNFVFNfSU5fTEFTVF9ESU0oZGVzdCkgJiYKKyAgICAgICAgICAgICFIQVZFX1NVQk9GRlNFVFNfSU5fTEFTVF9ESU0oc3JjKSAmJgorICAgICAgICAgICAgZGVzdC0+c3RyaWRlc1tkZXN0LT5uZGltLTFdID09IGRlc3QtPml0ZW1zaXplICYmCisgICAgICAgICAgICBzcmMtPnN0cmlkZXNbc3JjLT5uZGltLTFdID09IHNyYy0+aXRlbXNpemUpOworfQorCisvKiBUaGlzIGlzIG5vdCBhIGdlbmVyYWwgZnVuY3Rpb24gZm9yIGRldGVybWluaW5nIGZvcm1hdCBlcXVpdmFsZW5jZS4KKyAgIEl0IGlzIHVzZWQgaW4gY29weV9zaW5nbGUoKSBhbmQgY29weV9idWZmZXIoKSB0byB3ZWVkIG91dCBub24tbWF0Y2hpbmcKKyAgIGZvcm1hdHMuIFNraXBwaW5nIHRoZSAnQCcgY2hhcmFjdGVyIGlzIHNwZWNpZmljYWxseSB1c2VkIGluIHNsaWNlCisgICBhc3NpZ25tZW50cywgd2hlcmUgdGhlIGx2YWx1ZSBpcyBhbHJlYWR5IGtub3duIHRvIGhhdmUgYSBzaW5nbGUgY2hhcmFjdGVyCisgICBmb3JtYXQuIFRoaXMgaXMgYSBwZXJmb3JtYW5jZSBoYWNrIHRoYXQgY291bGQgYmUgcmV3cml0dGVuIChpZiBwcm9wZXJseQorICAgYmVuY2htYXJrZWQpLiAqLworUHlfTE9DQUxfSU5MSU5FKGludCkKK2VxdWl2X2Zvcm1hdChjb25zdCBQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQoreworICAgIGNvbnN0IGNoYXIgKmRmbXQsICpzZm10OworCisgICAgYXNzZXJ0KGRlc3QtPmZvcm1hdCAmJiBzcmMtPmZvcm1hdCk7CisgICAgZGZtdCA9IGRlc3QtPmZvcm1hdFswXSA9PSAnQCcgPyBkZXN0LT5mb3JtYXQrMSA6IGRlc3QtPmZvcm1hdDsKKyAgICBzZm10ID0gc3JjLT5mb3JtYXRbMF0gPT0gJ0AnID8gc3JjLT5mb3JtYXQrMSA6IHNyYy0+Zm9ybWF0OworCisgICAgaWYgKHN0cmNtcChkZm10LCBzZm10KSAhPSAwIHx8CisgICAgICAgIGRlc3QtPml0ZW1zaXplICE9IHNyYy0+aXRlbXNpemUpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKy8qIFR3byBzaGFwZXMgYXJlIGVxdWl2YWxlbnQgaWYgdGhleSBhcmUgZWl0aGVyIGVxdWFsIG9yIGlkZW50aWNhbCB1cAorICAgdG8gYSB6ZXJvIGVsZW1lbnQgYXQgdGhlIHNhbWUgcG9zaXRpb24uIEZvciBleGFtcGxlLCBpbiBOdW1QeSBhcnJheXMKKyAgIHRoZSBzaGFwZXMgWzEsIDAsIDVdIGFuZCBbMSwgMCwgN10gYXJlIGVxdWl2YWxlbnQuICovCitQeV9MT0NBTF9JTkxJTkUoaW50KQorZXF1aXZfc2hhcGUoY29uc3QgUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKK3sKKyAgICBpbnQgaTsKKworICAgIGlmIChkZXN0LT5uZGltICE9IHNyYy0+bmRpbSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgZGVzdC0+bmRpbTsgaSsrKSB7CisgICAgICAgIGlmIChkZXN0LT5zaGFwZVtpXSAhPSBzcmMtPnNoYXBlW2ldKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChkZXN0LT5zaGFwZVtpXSA9PSAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKy8qIENoZWNrIHRoYXQgdGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIHRoZSBkZXN0aW5hdGlvbiBhbmQgc291cmNlIGJ1ZmZlcnMKKyAgIGlzIGlkZW50aWNhbC4gKi8KK3N0YXRpYyBpbnQKK2VxdWl2X3N0cnVjdHVyZShjb25zdCBQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQoreworICAgIGlmICghZXF1aXZfZm9ybWF0KGRlc3QsIHNyYykgfHwKKyAgICAgICAgIWVxdWl2X3NoYXBlKGRlc3QsIHNyYykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldyBhc3NpZ25tZW50OiBsdmFsdWUgYW5kIHJ2YWx1ZSBoYXZlIGRpZmZlcmVudCAiCisgICAgICAgICAgICAic3RydWN0dXJlcyIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworLyogQmFzZSBjYXNlIGZvciByZWN1cnNpdmUgbXVsdGktZGltZW5zaW9uYWwgY29weWluZy4gQ29udGlndW91cyBhcnJheXMgYXJlCisgICBjb3BpZWQgd2l0aCB2ZXJ5IGxpdHRsZSBvdmVyaGVhZC4gQXNzdW1wdGlvbnM6IG5kaW0gPT0gMSwgbWVtID09IE5VTEwgb3IKKyAgIHNpemVvZihtZW0pID09IHNoYXBlWzBdICogaXRlbXNpemUuICovCitzdGF0aWMgdm9pZAorY29weV9iYXNlKGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlLCBQeV9zc2l6ZV90IGl0ZW1zaXplLAorICAgICAgICAgIGNoYXIgKmRwdHIsIGNvbnN0IFB5X3NzaXplX3QgKmRzdHJpZGVzLCBjb25zdCBQeV9zc2l6ZV90ICpkc3Vib2Zmc2V0cywKKyAgICAgICAgICBjaGFyICpzcHRyLCBjb25zdCBQeV9zc2l6ZV90ICpzc3RyaWRlcywgY29uc3QgUHlfc3NpemVfdCAqc3N1Ym9mZnNldHMsCisgICAgICAgICAgY2hhciAqbWVtKQoreworICAgIGlmIChtZW0gPT0gTlVMTCkgeyAvKiBjb250aWd1b3VzICovCisgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSA9IHNoYXBlWzBdICogaXRlbXNpemU7CisgICAgICAgIGlmIChkcHRyICsgc2l6ZSA8IHNwdHIgfHwgc3B0ciArIHNpemUgPCBkcHRyKQorICAgICAgICAgICAgbWVtY3B5KGRwdHIsIHNwdHIsIHNpemUpOyAvKiBubyBvdmVybGFwcGluZyAqLworICAgICAgICBlbHNlCisgICAgICAgICAgICBtZW1tb3ZlKGRwdHIsIHNwdHIsIHNpemUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgY2hhciAqcDsKKyAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICBmb3IgKGk9MCwgcD1tZW07IGkgPCBzaGFwZVswXTsgcCs9aXRlbXNpemUsIHNwdHIrPXNzdHJpZGVzWzBdLCBpKyspIHsKKyAgICAgICAgICAgIGNoYXIgKnhzcHRyID0gQURKVVNUX1BUUihzcHRyLCBzc3Vib2Zmc2V0cyk7CisgICAgICAgICAgICBtZW1jcHkocCwgeHNwdHIsIGl0ZW1zaXplKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGk9MCwgcD1tZW07IGkgPCBzaGFwZVswXTsgcCs9aXRlbXNpemUsIGRwdHIrPWRzdHJpZGVzWzBdLCBpKyspIHsKKyAgICAgICAgICAgIGNoYXIgKnhkcHRyID0gQURKVVNUX1BUUihkcHRyLCBkc3Vib2Zmc2V0cyk7CisgICAgICAgICAgICBtZW1jcHkoeGRwdHIsIHAsIGl0ZW1zaXplKTsKKyAgICAgICAgfQorICAgIH0KKworfQorCisvKiBSZWN1cnNpdmVseSBjb3B5IGEgc291cmNlIGJ1ZmZlciB0byBhIGRlc3RpbmF0aW9uIGJ1ZmZlci4gVGhlIHR3byBidWZmZXJzCisgICBoYXZlIHRoZSBzYW1lIG5kaW0sIHNoYXBlIGFuZCBpdGVtc2l6ZS4gKi8KK3N0YXRpYyB2b2lkCitjb3B5X3JlYyhjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSwgUHlfc3NpemVfdCBuZGltLCBQeV9zc2l6ZV90IGl0ZW1zaXplLAorICAgICAgICAgY2hhciAqZHB0ciwgY29uc3QgUHlfc3NpemVfdCAqZHN0cmlkZXMsIGNvbnN0IFB5X3NzaXplX3QgKmRzdWJvZmZzZXRzLAorICAgICAgICAgY2hhciAqc3B0ciwgY29uc3QgUHlfc3NpemVfdCAqc3N0cmlkZXMsIGNvbnN0IFB5X3NzaXplX3QgKnNzdWJvZmZzZXRzLAorICAgICAgICAgY2hhciAqbWVtKQoreworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGFzc2VydChuZGltID49IDEpOworCisgICAgaWYgKG5kaW0gPT0gMSkgeworICAgICAgICBjb3B5X2Jhc2Uoc2hhcGUsIGl0ZW1zaXplLAorICAgICAgICAgICAgICAgICAgZHB0ciwgZHN0cmlkZXMsIGRzdWJvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgc3B0ciwgc3N0cmlkZXMsIHNzdWJvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgbWVtKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBzaGFwZVswXTsgZHB0cis9ZHN0cmlkZXNbMF0sIHNwdHIrPXNzdHJpZGVzWzBdLCBpKyspIHsKKyAgICAgICAgY2hhciAqeGRwdHIgPSBBREpVU1RfUFRSKGRwdHIsIGRzdWJvZmZzZXRzKTsKKyAgICAgICAgY2hhciAqeHNwdHIgPSBBREpVU1RfUFRSKHNwdHIsIHNzdWJvZmZzZXRzKTsKKworICAgICAgICBjb3B5X3JlYyhzaGFwZSsxLCBuZGltLTEsIGl0ZW1zaXplLAorICAgICAgICAgICAgICAgICB4ZHB0ciwgZHN0cmlkZXMrMSwgZHN1Ym9mZnNldHMgPyBkc3Vib2Zmc2V0cysxIDogTlVMTCwKKyAgICAgICAgICAgICAgICAgeHNwdHIsIHNzdHJpZGVzKzEsIHNzdWJvZmZzZXRzID8gc3N1Ym9mZnNldHMrMSA6IE5VTEwsCisgICAgICAgICAgICAgICAgIG1lbSk7CisgICAgfQorfQorCisvKiBGYXN0ZXIgY29weWluZyBvZiBvbmUtZGltZW5zaW9uYWwgYXJyYXlzLiAqLworc3RhdGljIGludAorY29weV9zaW5nbGUoUHlfYnVmZmVyICpkZXN0LCBQeV9idWZmZXIgKnNyYykKK3sKKyAgICBjaGFyICptZW0gPSBOVUxMOworCisgICAgYXNzZXJ0KGRlc3QtPm5kaW0gPT0gMSk7CisKKyAgICBpZiAoIWVxdWl2X3N0cnVjdHVyZShkZXN0LCBzcmMpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoIWxhc3RfZGltX2lzX2NvbnRpZ3VvdXMoZGVzdCwgc3JjKSkgeworICAgICAgICBtZW0gPSBQeU1lbV9NYWxsb2MoZGVzdC0+c2hhcGVbMF0gKiBkZXN0LT5pdGVtc2l6ZSk7CisgICAgICAgIGlmIChtZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvcHlfYmFzZShkZXN0LT5zaGFwZSwgZGVzdC0+aXRlbXNpemUsCisgICAgICAgICAgICAgIGRlc3QtPmJ1ZiwgZGVzdC0+c3RyaWRlcywgZGVzdC0+c3Vib2Zmc2V0cywKKyAgICAgICAgICAgICAgc3JjLT5idWYsIHNyYy0+c3RyaWRlcywgc3JjLT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgICBtZW0pOworCisgICAgaWYgKG1lbSkKKyAgICAgICAgUHlNZW1fRnJlZShtZW0pOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIFJlY3Vyc2l2ZWx5IGNvcHkgc3JjIHRvIGRlc3QuIEJvdGggYnVmZmVycyBtdXN0IGhhdmUgdGhlIHNhbWUgYmFzaWMKKyAgIHN0cnVjdHVyZS4gQ29weWluZyBpcyBhdG9taWMsIHRoZSBmdW5jdGlvbiBuZXZlciBmYWlscyB3aXRoIGEgcGFydGlhbAorICAgY29weS4gKi8KK3N0YXRpYyBpbnQKK2NvcHlfYnVmZmVyKFB5X2J1ZmZlciAqZGVzdCwgUHlfYnVmZmVyICpzcmMpCit7CisgICAgY2hhciAqbWVtID0gTlVMTDsKKworICAgIGFzc2VydChkZXN0LT5uZGltID4gMCk7CisKKyAgICBpZiAoIWVxdWl2X3N0cnVjdHVyZShkZXN0LCBzcmMpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoIWxhc3RfZGltX2lzX2NvbnRpZ3VvdXMoZGVzdCwgc3JjKSkgeworICAgICAgICBtZW0gPSBQeU1lbV9NYWxsb2MoZGVzdC0+c2hhcGVbZGVzdC0+bmRpbS0xXSAqIGRlc3QtPml0ZW1zaXplKTsKKyAgICAgICAgaWYgKG1lbSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorCisgICAgY29weV9yZWMoZGVzdC0+c2hhcGUsIGRlc3QtPm5kaW0sIGRlc3QtPml0ZW1zaXplLAorICAgICAgICAgICAgIGRlc3QtPmJ1ZiwgZGVzdC0+c3RyaWRlcywgZGVzdC0+c3Vib2Zmc2V0cywKKyAgICAgICAgICAgICBzcmMtPmJ1Ziwgc3JjLT5zdHJpZGVzLCBzcmMtPnN1Ym9mZnNldHMsCisgICAgICAgICAgICAgbWVtKTsKKworICAgIGlmIChtZW0pCisgICAgICAgIFB5TWVtX0ZyZWUobWVtKTsKKworICAgIHJldHVybiAwOworfQorCisvKiBJbml0aWFsaXplIHN0cmlkZXMgZm9yIGEgQy1jb250aWd1b3VzIGFycmF5LiAqLworUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitpbml0X3N0cmlkZXNfZnJvbV9zaGFwZShQeV9idWZmZXIgKnZpZXcpCit7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgYXNzZXJ0KHZpZXctPm5kaW0gPiAwKTsKKworICAgIHZpZXctPnN0cmlkZXNbdmlldy0+bmRpbS0xXSA9IHZpZXctPml0ZW1zaXplOworICAgIGZvciAoaSA9IHZpZXctPm5kaW0tMjsgaSA+PSAwOyBpLS0pCisgICAgICAgIHZpZXctPnN0cmlkZXNbaV0gPSB2aWV3LT5zdHJpZGVzW2krMV0gKiB2aWV3LT5zaGFwZVtpKzFdOworfQorCisvKiBJbml0aWFsaXplIHN0cmlkZXMgZm9yIGEgRm9ydHJhbi1jb250aWd1b3VzIGFycmF5LiAqLworUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitpbml0X2ZvcnRyYW5fc3RyaWRlc19mcm9tX3NoYXBlKFB5X2J1ZmZlciAqdmlldykKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBhc3NlcnQodmlldy0+bmRpbSA+IDApOworCisgICAgdmlldy0+c3RyaWRlc1swXSA9IHZpZXctPml0ZW1zaXplOworICAgIGZvciAoaSA9IDE7IGkgPCB2aWV3LT5uZGltOyBpKyspCisgICAgICAgIHZpZXctPnN0cmlkZXNbaV0gPSB2aWV3LT5zdHJpZGVzW2ktMV0gKiB2aWV3LT5zaGFwZVtpLTFdOworfQorCisvKiBDb3B5IHNyYyB0byBhIGNvbnRpZ3VvdXMgcmVwcmVzZW50YXRpb24uIG9yZGVyIGlzIG9uZSBvZiAnQycsICdGJyAoRm9ydHJhbikKKyAgIG9yICdBJyAoQW55KS4gQXNzdW1wdGlvbnM6IHNyYyBoYXMgUHlCVUZfRlVMTCBpbmZvcm1hdGlvbiwgc3JjLT5uZGltID49IDEsCisgICBsZW4obWVtKSA9PSBzcmMtPmxlbi4gKi8KK3N0YXRpYyBpbnQKK2J1ZmZlcl90b19jb250aWd1b3VzKGNoYXIgKm1lbSwgUHlfYnVmZmVyICpzcmMsIGNoYXIgb3JkZXIpCit7CisgICAgUHlfYnVmZmVyIGRlc3Q7CisgICAgUHlfc3NpemVfdCAqc3RyaWRlczsKKyAgICBpbnQgcmV0OworCisgICAgYXNzZXJ0KHNyYy0+bmRpbSA+PSAxKTsKKyAgICBhc3NlcnQoc3JjLT5zaGFwZSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoc3JjLT5zdHJpZGVzICE9IE5VTEwpOworCisgICAgc3RyaWRlcyA9IFB5TWVtX01hbGxvYyhzcmMtPm5kaW0gKiAoc2l6ZW9mICpzcmMtPnN0cmlkZXMpKTsKKyAgICBpZiAoc3RyaWRlcyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBpbml0aWFsaXplIGRlc3QgKi8KKyAgICBkZXN0ID0gKnNyYzsKKyAgICBkZXN0LmJ1ZiA9IG1lbTsKKyAgICAvKiBzaGFwZSBpcyBjb25zdGFudCBhbmQgc2hhcmVkOiB0aGUgbG9naWNhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUKKyAgICAgICBhcnJheSBpcyB1bmFsdGVyZWQuICovCisKKyAgICAvKiBUaGUgcGh5c2ljYWwgcmVwcmVzZW50YXRpb24gZGV0ZXJtaW5lZCBieSBzdHJpZGVzIChhbmQgcG9zc2libHkKKyAgICAgICBzdWJvZmZzZXRzKSBtYXkgY2hhbmdlLiAqLworICAgIGRlc3Quc3RyaWRlcyA9IHN0cmlkZXM7CisgICAgaWYgKG9yZGVyID09ICdDJyB8fCBvcmRlciA9PSAnQScpIHsKKyAgICAgICAgaW5pdF9zdHJpZGVzX2Zyb21fc2hhcGUoJmRlc3QpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaW5pdF9mb3J0cmFuX3N0cmlkZXNfZnJvbV9zaGFwZSgmZGVzdCk7CisgICAgfQorCisgICAgZGVzdC5zdWJvZmZzZXRzID0gTlVMTDsKKworICAgIHJldCA9IGNvcHlfYnVmZmVyKCZkZXN0LCBzcmMpOworCisgICAgUHlNZW1fRnJlZShzdHJpZGVzKTsKKyAgICByZXR1cm4gcmV0OworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RydWN0b3JzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogSW5pdGlhbGl6ZSB2YWx1ZXMgdGhhdCBhcmUgc2hhcmVkIHdpdGggdGhlIG1hbmFnZWQgYnVmZmVyLiAqLworUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitpbml0X3NoYXJlZF92YWx1ZXMoUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKK3sKKyAgICBkZXN0LT5vYmogPSBzcmMtPm9iajsKKyAgICBkZXN0LT5idWYgPSBzcmMtPmJ1ZjsKKyAgICBkZXN0LT5sZW4gPSBzcmMtPmxlbjsKKyAgICBkZXN0LT5pdGVtc2l6ZSA9IHNyYy0+aXRlbXNpemU7CisgICAgZGVzdC0+cmVhZG9ubHkgPSBzcmMtPnJlYWRvbmx5OworICAgIGRlc3QtPmZvcm1hdCA9IHNyYy0+Zm9ybWF0ID8gc3JjLT5mb3JtYXQgOiAiQiI7CisgICAgZGVzdC0+aW50ZXJuYWwgPSBzcmMtPmludGVybmFsOworfQorCisvKiBDb3B5IHNoYXBlIGFuZCBzdHJpZGVzLiBSZWNvbnN0cnVjdCBtaXNzaW5nIHZhbHVlcy4gKi8KK3N0YXRpYyB2b2lkCitpbml0X3NoYXBlX3N0cmlkZXMoUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBpZiAoc3JjLT5uZGltID09IDApIHsKKyAgICAgICAgZGVzdC0+c2hhcGUgPSBOVUxMOworICAgICAgICBkZXN0LT5zdHJpZGVzID0gTlVMTDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoc3JjLT5uZGltID09IDEpIHsKKyAgICAgICAgZGVzdC0+c2hhcGVbMF0gPSBzcmMtPnNoYXBlID8gc3JjLT5zaGFwZVswXSA6IHNyYy0+bGVuIC8gc3JjLT5pdGVtc2l6ZTsKKyAgICAgICAgZGVzdC0+c3RyaWRlc1swXSA9IHNyYy0+c3RyaWRlcyA/IHNyYy0+c3RyaWRlc1swXSA6IHNyYy0+aXRlbXNpemU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgc3JjLT5uZGltOyBpKyspCisgICAgICAgIGRlc3QtPnNoYXBlW2ldID0gc3JjLT5zaGFwZVtpXTsKKyAgICBpZiAoc3JjLT5zdHJpZGVzKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzcmMtPm5kaW07IGkrKykKKyAgICAgICAgICAgIGRlc3QtPnN0cmlkZXNbaV0gPSBzcmMtPnN0cmlkZXNbaV07CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpbml0X3N0cmlkZXNfZnJvbV9zaGFwZShkZXN0KTsKKyAgICB9Cit9CisKK1B5X0xPQ0FMX0lOTElORSh2b2lkKQoraW5pdF9zdWJvZmZzZXRzKFB5X2J1ZmZlciAqZGVzdCwgY29uc3QgUHlfYnVmZmVyICpzcmMpCit7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgaWYgKHNyYy0+c3Vib2Zmc2V0cyA9PSBOVUxMKSB7CisgICAgICAgIGRlc3QtPnN1Ym9mZnNldHMgPSBOVUxMOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBzcmMtPm5kaW07IGkrKykKKyAgICAgICAgZGVzdC0+c3Vib2Zmc2V0c1tpXSA9IHNyYy0+c3Vib2Zmc2V0c1tpXTsKK30KKworLyogbGVuID0gcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSAqLworUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitpbml0X2xlbihQeV9idWZmZXIgKnZpZXcpCit7CisgICAgUHlfc3NpemVfdCBpLCBsZW47CisKKyAgICBsZW4gPSAxOworICAgIGZvciAoaSA9IDA7IGkgPCB2aWV3LT5uZGltOyBpKyspCisgICAgICAgIGxlbiAqPSB2aWV3LT5zaGFwZVtpXTsKKyAgICBsZW4gKj0gdmlldy0+aXRlbXNpemU7CisKKyAgICB2aWV3LT5sZW4gPSBsZW47Cit9CisKKy8qIEluaXRpYWxpemUgbWVtb3J5dmlldyBidWZmZXIgcHJvcGVydGllcy4gKi8KK3N0YXRpYyB2b2lkCitpbml0X2ZsYWdzKFB5TWVtb3J5Vmlld09iamVjdCAqbXYpCit7CisgICAgY29uc3QgUHlfYnVmZmVyICp2aWV3ID0gJm12LT52aWV3OworICAgIGludCBmbGFncyA9IDA7CisKKyAgICBzd2l0Y2ggKHZpZXctPm5kaW0pIHsKKyAgICBjYXNlIDA6CisgICAgICAgIGZsYWdzIHw9IChfUHlfTUVNT1JZVklFV19TQ0FMQVJ8X1B5X01FTU9SWVZJRVdfQ3wKKyAgICAgICAgICAgICAgICAgIF9QeV9NRU1PUllWSUVXX0ZPUlRSQU4pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE6CisgICAgICAgIGlmIChNVl9DT05USUdVT1VTX05ESU0xKHZpZXcpKQorICAgICAgICAgICAgZmxhZ3MgfD0gKF9QeV9NRU1PUllWSUVXX0N8X1B5X01FTU9SWVZJRVdfRk9SVFJBTik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXModmlldywgJ0MnKSkKKyAgICAgICAgICAgIGZsYWdzIHw9IF9QeV9NRU1PUllWSUVXX0M7CisgICAgICAgIGlmIChQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXModmlldywgJ0YnKSkKKyAgICAgICAgICAgIGZsYWdzIHw9IF9QeV9NRU1PUllWSUVXX0ZPUlRSQU47CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICh2aWV3LT5zdWJvZmZzZXRzKSB7CisgICAgICAgIGZsYWdzIHw9IF9QeV9NRU1PUllWSUVXX1BJTDsKKyAgICAgICAgZmxhZ3MgJj0gfihfUHlfTUVNT1JZVklFV19DfF9QeV9NRU1PUllWSUVXX0ZPUlRSQU4pOworICAgIH0KKworICAgIG12LT5mbGFncyA9IGZsYWdzOworfQorCisvKiBBbGxvY2F0ZSBhIG5ldyBtZW1vcnl2aWV3IGFuZCBwZXJmb3JtIGJhc2ljIGluaXRpYWxpemF0aW9uLiBOZXcgbWVtb3J5dmlld3MKKyAgIGFyZSBleGNsdXNpdmVseSBjcmVhdGVkIHRocm91Z2ggdGhlIG1idWZfYWRkIGZ1bmN0aW9ucy4gKi8KK1B5X0xPQ0FMX0lOTElORShQeU1lbW9yeVZpZXdPYmplY3QgKikKK21lbW9yeV9hbGxvYyhpbnQgbmRpbSkKK3sKKyAgICBQeU1lbW9yeVZpZXdPYmplY3QgKm12OworCisgICAgbXYgPSAoUHlNZW1vcnlWaWV3T2JqZWN0ICopCisgICAgICAgIFB5T2JqZWN0X0dDX05ld1ZhcihQeU1lbW9yeVZpZXdPYmplY3QsICZQeU1lbW9yeVZpZXdfVHlwZSwgMypuZGltKTsKKyAgICBpZiAobXYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBtdi0+bWJ1ZiA9IE5VTEw7CisgICAgbXYtPmhhc2ggPSAtMTsKKyAgICBtdi0+ZmxhZ3MgPSAwOworICAgIG12LT5leHBvcnRzID0gMDsKKyAgICBtdi0+dmlldy5uZGltID0gbmRpbTsKKyAgICBtdi0+dmlldy5zaGFwZSA9IG12LT5vYl9hcnJheTsKKyAgICBtdi0+dmlldy5zdHJpZGVzID0gbXYtPm9iX2FycmF5ICsgbmRpbTsKKyAgICBtdi0+dmlldy5zdWJvZmZzZXRzID0gbXYtPm9iX2FycmF5ICsgMiAqIG5kaW07CisgICAgbXYtPndlYWtyZWZsaXN0ID0gTlVMTDsKKworICAgIF9QeU9iamVjdF9HQ19UUkFDSyhtdik7CisgICAgcmV0dXJuIG12OworfQorCisvKgorICAgUmV0dXJuIGEgbmV3IG1lbW9yeXZpZXcgdGhhdCBpcyByZWdpc3RlcmVkIHdpdGggbWJ1Zi4gSWYgc3JjIGlzIE5VTEwsCisgICB1c2UgbWJ1Zi0+bWFzdGVyIGFzIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlci4gT3RoZXJ3aXNlLCB1c2Ugc3JjLgorCisgICBUaGUgbmV3IG1lbW9yeXZpZXcgaGFzIGZ1bGwgYnVmZmVyIGluZm9ybWF0aW9uOiBzaGFwZSBhbmQgc3RyaWRlcworICAgYXJlIGFsd2F5cyBwcmVzZW50LCBzdWJvZmZzZXRzIGFzIG5lZWRlZC4gQXJyYXlzIGFyZSBjb3BpZWQgdG8KKyAgIHRoZSBtZW1vcnl2aWV3J3Mgb2JfYXJyYXkgZmllbGQuCisgKi8KK3N0YXRpYyBQeU9iamVjdCAqCittYnVmX2FkZF92aWV3KF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKm1idWYsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQoreworICAgIFB5TWVtb3J5Vmlld09iamVjdCAqbXY7CisgICAgUHlfYnVmZmVyICpkZXN0OworCisgICAgaWYgKHNyYyA9PSBOVUxMKQorICAgICAgICBzcmMgPSAmbWJ1Zi0+bWFzdGVyOworCisgICAgaWYgKHNyYy0+bmRpbSA+IFB5QlVGX01BWF9ORElNKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXc6IG51bWJlciBvZiBkaW1lbnNpb25zIG11c3Qgbm90IGV4Y2VlZCAiCisgICAgICAgICAgICBTVFJJTkdJWkUoUHlCVUZfTUFYX05ESU0pKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXYgPSBtZW1vcnlfYWxsb2Moc3JjLT5uZGltKTsKKyAgICBpZiAobXYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBkZXN0ID0gJm12LT52aWV3OworICAgIGluaXRfc2hhcmVkX3ZhbHVlcyhkZXN0LCBzcmMpOworICAgIGluaXRfc2hhcGVfc3RyaWRlcyhkZXN0LCBzcmMpOworICAgIGluaXRfc3Vib2Zmc2V0cyhkZXN0LCBzcmMpOworICAgIGluaXRfZmxhZ3MobXYpOworCisgICAgbXYtPm1idWYgPSBtYnVmOworICAgIFB5X0lOQ1JFRihtYnVmKTsKKyAgICBtYnVmLT5leHBvcnRzKys7CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopbXY7Cit9CisKKy8qIFJlZ2lzdGVyIGFuIGluY29tcGxldGUgdmlldzogc2hhcGUsIHN0cmlkZXMsIHN1Ym9mZnNldHMgYW5kIGZsYWdzIHN0aWxsCisgICBuZWVkIHRvIGJlIGluaXRpYWxpemVkLiBVc2UgJ25kaW0nIGluc3RlYWQgb2Ygc3JjLT5uZGltIHRvIGRldGVybWluZSB0aGUKKyAgIHNpemUgb2YgdGhlIG1lbW9yeXZpZXcncyBvYl9hcnJheS4KKworICAgQXNzdW1wdGlvbjogbmRpbSA8PSBQeUJVRl9NQVhfTkRJTS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCittYnVmX2FkZF9pbmNvbXBsZXRlX3ZpZXcoX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqbWJ1ZiwgY29uc3QgUHlfYnVmZmVyICpzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5kaW0pCit7CisgICAgUHlNZW1vcnlWaWV3T2JqZWN0ICptdjsKKyAgICBQeV9idWZmZXIgKmRlc3Q7CisKKyAgICBpZiAoc3JjID09IE5VTEwpCisgICAgICAgIHNyYyA9ICZtYnVmLT5tYXN0ZXI7CisKKyAgICBhc3NlcnQobmRpbSA8PSBQeUJVRl9NQVhfTkRJTSk7CisKKyAgICBtdiA9IG1lbW9yeV9hbGxvYyhuZGltKTsKKyAgICBpZiAobXYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBkZXN0ID0gJm12LT52aWV3OworICAgIGluaXRfc2hhcmVkX3ZhbHVlcyhkZXN0LCBzcmMpOworCisgICAgbXYtPm1idWYgPSBtYnVmOworICAgIFB5X0lOQ1JFRihtYnVmKTsKKyAgICBtYnVmLT5leHBvcnRzKys7CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopbXY7Cit9CisKKy8qIEV4cG9zZSBhIHJhdyBtZW1vcnkgYXJlYSBhcyBhIHZpZXcgb2YgY29udGlndW91cyBieXRlcy4gZmxhZ3MgY2FuIGJlCisgICBQeUJVRl9SRUFEIG9yIFB5QlVGX1dSSVRFLiB2aWV3LT5mb3JtYXQgaXMgc2V0IHRvICJCIiAodW5zaWduZWQgYnl0ZXMpLgorICAgVGhlIG1lbW9yeXZpZXcgaGFzIGNvbXBsZXRlIGJ1ZmZlciBpbmZvcm1hdGlvbi4gKi8KK1B5T2JqZWN0ICoKK1B5TWVtb3J5Vmlld19Gcm9tTWVtb3J5KGNoYXIgKm1lbSwgUHlfc3NpemVfdCBzaXplLCBpbnQgZmxhZ3MpCit7CisgICAgX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqbWJ1ZjsKKyAgICBQeU9iamVjdCAqbXY7CisgICAgaW50IHJlYWRvbmx5OworCisgICAgYXNzZXJ0KG1lbSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoZmxhZ3MgPT0gUHlCVUZfUkVBRCB8fCBmbGFncyA9PSBQeUJVRl9XUklURSk7CisKKyAgICBtYnVmID0gbWJ1Zl9hbGxvYygpOworICAgIGlmIChtYnVmID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVhZG9ubHkgPSAoZmxhZ3MgPT0gUHlCVUZfV1JJVEUpID8gMCA6IDE7CisgICAgKHZvaWQpUHlCdWZmZXJfRmlsbEluZm8oJm1idWYtPm1hc3RlciwgTlVMTCwgbWVtLCBzaXplLCByZWFkb25seSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJVRl9GVUxMX1JPKTsKKworICAgIG12ID0gbWJ1Zl9hZGRfdmlldyhtYnVmLCBOVUxMKTsKKyAgICBQeV9ERUNSRUYobWJ1Zik7CisKKyAgICByZXR1cm4gbXY7Cit9CisKKy8qIENyZWF0ZSBhIG1lbW9yeXZpZXcgZnJvbSBhIGdpdmVuIFB5X2J1ZmZlci4gRm9yIHNpbXBsZSBieXRlIHZpZXdzLAorICAgUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnkoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgorICAgVGhpcyBmdW5jdGlvbiBpcyB0aGUgb25seSBlbnRyeSBwb2ludCB0aGF0IGNhbiBjcmVhdGUgYSBtYXN0ZXIgYnVmZmVyCisgICB3aXRob3V0IGZ1bGwgaW5mb3JtYXRpb24uIEJlY2F1c2Ugb2YgdGhpcyBmYWN0IGluaXRfc2hhcGVfc3RyaWRlcygpCisgICBtdXN0IGJlIGFibGUgdG8gcmVjb25zdHJ1Y3QgbWlzc2luZyB2YWx1ZXMuICAqLwogUHlPYmplY3QgKgogUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoUHlfYnVmZmVyICppbmZvKQogewotICAgIFB5TWVtb3J5Vmlld09iamVjdCAqbXZpZXc7CisgICAgX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqbWJ1ZjsKKyAgICBQeU9iamVjdCAqbXY7CiAKICAgICBpZiAoaW5mby0+YnVmID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAiY2Fubm90IG1ha2UgbWVtb3J5IHZpZXcgZnJvbSBhIGJ1ZmZlciB3aXRoIGEgTlVMTCBkYXRhIHBvaW50ZXIiKTsKKyAgICAgICAgICAgICJQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcigpOiBpbmZvLT5idWYgbXVzdCBub3QgYmUgTlVMTCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbXZpZXcgPSAoUHlNZW1vcnlWaWV3T2JqZWN0ICopCi0gICAgICAgIFB5T2JqZWN0X0dDX05ldyhQeU1lbW9yeVZpZXdPYmplY3QsICZQeU1lbW9yeVZpZXdfVHlwZSk7Ci0gICAgaWYgKG12aWV3ID09IE5VTEwpCisKKyAgICBtYnVmID0gbWJ1Zl9hbGxvYygpOworICAgIGlmIChtYnVmID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGR1cF9idWZmZXIoJm12aWV3LT52aWV3LCBpbmZvKTsKLSAgICAvKiBOT1RFOiBtdmlldy0+dmlldy5vYmogc2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIGluY3JlZidlZCBhcwotICAgICAgIHBhcnQgb2YgUHlCdWZmZXJfRmlsbEluZm8oKS4gKi8KLSAgICBfUHlPYmplY3RfR0NfVFJBQ0sobXZpZXcpOwotICAgIHJldHVybiAoUHlPYmplY3QgKiltdmlldzsKKworICAgIC8qIGluZm8tPm9iaiBpcyBlaXRoZXIgTlVMTCBvciBhIGJvcnJvd2VkIHJlZmVyZW5jZS4gVGhpcyByZWZlcmVuY2UKKyAgICAgICBzaG91bGQgbm90IGJlIGRlY3JlbWVudGVkIGluIFB5QnVmZmVyX1JlbGVhc2UoKS4gKi8KKyAgICBtYnVmLT5tYXN0ZXIgPSAqaW5mbzsKKyAgICBtYnVmLT5tYXN0ZXIub2JqID0gTlVMTDsKKworICAgIG12ID0gbWJ1Zl9hZGRfdmlldyhtYnVmLCBOVUxMKTsKKyAgICBQeV9ERUNSRUYobWJ1Zik7CisKKyAgICByZXR1cm4gbXY7CiB9CiAKKy8qIENyZWF0ZSBhIG1lbW9yeXZpZXcgZnJvbSBhbiBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHRoZSBidWZmZXIgcHJvdG9jb2wuCisgICBJZiB0aGUgb2JqZWN0IGlzIGEgbWVtb3J5dmlldywgdGhlIG5ldyBtZW1vcnl2aWV3IG11c3QgYmUgcmVnaXN0ZXJlZAorICAgd2l0aCB0aGUgc2FtZSBtYW5hZ2VkIGJ1ZmZlci4gT3RoZXJ3aXNlLCBhIG5ldyBtYW5hZ2VkIGJ1ZmZlciBpcyBjcmVhdGVkLiAqLwogUHlPYmplY3QgKgotUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QoUHlPYmplY3QgKmJhc2UpCitQeU1lbW9yeVZpZXdfRnJvbU9iamVjdChQeU9iamVjdCAqdikKIHsKLSAgICBQeU1lbW9yeVZpZXdPYmplY3QgKm12aWV3OwotICAgIFB5X2J1ZmZlciB2aWV3OworICAgIF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKm1idWY7CiAKLSAgICBpZiAoIVB5T2JqZWN0X0NoZWNrQnVmZmVyKGJhc2UpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiY2Fubm90IG1ha2UgbWVtb3J5IHZpZXcgYmVjYXVzZSBvYmplY3QgZG9lcyAiCi0gICAgICAgICAgICAibm90IGhhdmUgdGhlIGJ1ZmZlciBpbnRlcmZhY2UiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TWVtb3J5Vmlld19DaGVjayh2KSkgeworICAgICAgICBQeU1lbW9yeVZpZXdPYmplY3QgKm12ID0gKFB5TWVtb3J5Vmlld09iamVjdCAqKXY7CisgICAgICAgIENIRUNLX1JFTEVBU0VEKG12KTsKKyAgICAgICAgcmV0dXJuIG1idWZfYWRkX3ZpZXcobXYtPm1idWYsICZtdi0+dmlldyk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5T2JqZWN0X0NoZWNrQnVmZmVyKHYpKSB7CisgICAgICAgIFB5T2JqZWN0ICpyZXQ7CisgICAgICAgIG1idWYgPSAoX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqKV9QeU1hbmFnZWRCdWZmZXJfRnJvbU9iamVjdCh2KTsKKyAgICAgICAgaWYgKG1idWYgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXQgPSBtYnVmX2FkZF92aWV3KG1idWYsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYobWJ1Zik7CisgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQogCi0gICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihiYXNlLCAmdmlldywgUHlCVUZfRlVMTF9STykgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIG12aWV3ID0gKFB5TWVtb3J5Vmlld09iamVjdCAqKVB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyKCZ2aWV3KTsKLSAgICBpZiAobXZpZXcgPT0gTlVMTCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcmV0dXJuIChQeU9iamVjdCAqKW12aWV3OworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICJtZW1vcnl2aWV3OiAlLjIwMHMgb2JqZWN0IGRvZXMgbm90IGhhdmUgdGhlIGJ1ZmZlciBpbnRlcmZhY2UiLAorICAgICAgICBQeV9UWVBFKHYpLT50cF9uYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAorLyogQ29weSB0aGUgZm9ybWF0IHN0cmluZyBmcm9tIGEgYmFzZSBvYmplY3QgdGhhdCBtaWdodCB2YW5pc2guICovCitzdGF0aWMgaW50CittYnVmX2NvcHlfZm9ybWF0KF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKm1idWYsIGNvbnN0IGNoYXIgKmZtdCkKK3sKKyAgICBpZiAoZm10ICE9IE5VTEwpIHsKKyAgICAgICAgY2hhciAqY3AgPSBQeU1lbV9NYWxsb2Moc3RybGVuKGZtdCkrMSk7CisgICAgICAgIGlmIChjcCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIG1idWYtPm1hc3Rlci5mb3JtYXQgPSBzdHJjcHkoY3AsIGZtdCk7CisgICAgICAgIG1idWYtPmZsYWdzIHw9IF9QeV9NQU5BR0VEX0JVRkZFUl9GUkVFX0ZPUk1BVDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAgIFJldHVybiBhIG1lbW9yeXZpZXcgdGhhdCBpcyBiYXNlZCBvbiBhIGNvbnRpZ3VvdXMgY29weSBvZiBzcmMuCisgICBBc3N1bXB0aW9uczogc3JjIGhhcyBQeUJVRl9GVUxMX1JPIGluZm9ybWF0aW9uLCBzcmMtPm5kaW0gPiAwLgorCisgICBPd25lcnNoaXAgcnVsZXM6CisgICAgIDEpIEFzIHVzdWFsLCB0aGUgcmV0dXJuZWQgbWVtb3J5dmlldyBoYXMgYSBwcml2YXRlIGNvcHkKKyAgICAgICAgb2Ygc3JjLT5zaGFwZSwgc3JjLT5zdHJpZGVzIGFuZCBzcmMtPnN1Ym9mZnNldHMuCisgICAgIDIpIHNyYy0+Zm9ybWF0IGlzIGNvcGllZCB0byB0aGUgbWFzdGVyIGJ1ZmZlciBhbmQgcmVsZWFzZWQKKyAgICAgICAgaW4gbWJ1Zl9kZWFsbG9jKCkuIFRoZSByZWxlYXNlYnVmZmVycHJvYyBvZiB0aGUgYnl0ZXMKKyAgICAgICAgb2JqZWN0IGlzIE5VTEwsIHNvIGl0IGRvZXMgbm90IG1hdHRlciB0aGF0IG1idWZfcmVsZWFzZSgpCisgICAgICAgIHBhc3NlcyB0aGUgYWx0ZXJlZCBmb3JtYXQgcG9pbnRlciB0byBQeUJ1ZmZlcl9SZWxlYXNlKCkuCisqLworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9mcm9tX2NvbnRpZ3VvdXNfY29weShQeV9idWZmZXIgKnNyYywgY2hhciBvcmRlcikKK3sKKyAgICBfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICptYnVmOworICAgIFB5TWVtb3J5Vmlld09iamVjdCAqbXY7CisgICAgUHlPYmplY3QgKmJ5dGVzOworICAgIFB5X2J1ZmZlciAqZGVzdDsKKyAgICBpbnQgaTsKKworICAgIGFzc2VydChzcmMtPm5kaW0gPiAwKTsKKyAgICBhc3NlcnQoc3JjLT5zaGFwZSAhPSBOVUxMKTsKKworICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzcmMtPmxlbik7CisgICAgaWYgKGJ5dGVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbWJ1ZiA9IChfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICopX1B5TWFuYWdlZEJ1ZmZlcl9Gcm9tT2JqZWN0KGJ5dGVzKTsKKyAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgIGlmIChtYnVmID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKG1idWZfY29weV9mb3JtYXQobWJ1Ziwgc3JjLT5mb3JtYXQpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYobWJ1Zik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG12ID0gKFB5TWVtb3J5Vmlld09iamVjdCAqKW1idWZfYWRkX2luY29tcGxldGVfdmlldyhtYnVmLCBOVUxMLCBzcmMtPm5kaW0pOworICAgIFB5X0RFQ1JFRihtYnVmKTsKKyAgICBpZiAobXYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBkZXN0ID0gJm12LT52aWV3OworCisgICAgLyogc2hhcmVkIHZhbHVlcyBhcmUgaW5pdGlhbGl6ZWQgY29ycmVjdGx5IGV4Y2VwdCBmb3IgaXRlbXNpemUgKi8KKyAgICBkZXN0LT5pdGVtc2l6ZSA9IHNyYy0+aXRlbXNpemU7CisKKyAgICAvKiBzaGFwZSBhbmQgc3RyaWRlcyAqLworICAgIGZvciAoaSA9IDA7IGkgPCBzcmMtPm5kaW07IGkrKykgeworICAgICAgICBkZXN0LT5zaGFwZVtpXSA9IHNyYy0+c2hhcGVbaV07CisgICAgfQorICAgIGlmIChvcmRlciA9PSAnQycgfHwgb3JkZXIgPT0gJ0EnKSB7CisgICAgICAgIGluaXRfc3RyaWRlc19mcm9tX3NoYXBlKGRlc3QpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaW5pdF9mb3J0cmFuX3N0cmlkZXNfZnJvbV9zaGFwZShkZXN0KTsKKyAgICB9CisgICAgLyogc3Vib2Zmc2V0cyAqLworICAgIGRlc3QtPnN1Ym9mZnNldHMgPSBOVUxMOworCisgICAgLyogZmxhZ3MgKi8KKyAgICBpbml0X2ZsYWdzKG12KTsKKworICAgIGlmIChjb3B5X2J1ZmZlcihkZXN0LCBzcmMpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYobXYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopbXY7Cit9CisKKy8qCisgICBSZXR1cm4gYSBuZXcgbWVtb3J5dmlldyBvYmplY3QgYmFzZWQgb24gYSBjb250aWd1b3VzIGV4cG9ydGVyIHdpdGgKKyAgIGJ1ZmZlcnR5cGU9e1B5QlVGX1JFQUQsIFB5QlVGX1dSSVRFfSBhbmQgb3JkZXI9eydDJywgJ0Ynb3J0cmFuLCBvciAnQSdueX0uCisgICBUaGUgbG9naWNhbCBzdHJ1Y3R1cmUgb2YgdGhlIGlucHV0IGFuZCBvdXRwdXQgYnVmZmVycyBpcyB0aGUgc2FtZQorICAgKGkuZS4gdG9saXN0KGlucHV0KSA9PSB0b2xpc3Qob3V0cHV0KSksIGJ1dCB0aGUgcGh5c2ljYWwgbGF5b3V0IGluCisgICBtZW1vcnkgY2FuIGJlIGV4cGxpY2l0bHkgY2hvc2VuLgorIAorICAgQXMgdXN1YWwsIGlmIGJ1ZmZlcnR5cGU9UHlCVUZfV1JJVEUsIHRoZSBleHBvcnRlcidzIGJ1ZmZlciBtdXN0IGJlIHdyaXRhYmxlLAorICAgb3RoZXJ3aXNlIGl0IG1heSBiZSB3cml0YWJsZSBvciByZWFkLW9ubHkuCisKKyAgIElmIHRoZSBleHBvcnRlciBpcyBhbHJlYWR5IGNvbnRpZ3VvdXMgd2l0aCB0aGUgZGVzaXJlZCB0YXJnZXQgb3JkZXIsCisgICB0aGUgbWVtb3J5dmlldyB3aWxsIGJlIGRpcmVjdGx5IGJhc2VkIG9uIHRoZSBleHBvcnRlci4KKworICAgT3RoZXJ3aXNlLCBpZiB0aGUgYnVmZmVydHlwZSBpcyBQeUJVRl9SRUFELCB0aGUgbWVtb3J5dmlldyB3aWxsIGJlCisgICBiYXNlZCBvbiBhIG5ldyBieXRlcyBvYmplY3QuIElmIG9yZGVyPXsnQycsICdBJ255fSwgdXNlICdDJyBvcmRlciwKKyAgICdGJ29ydHJhbiBvcmRlciBvdGhlcndpc2UuCisqLworUHlPYmplY3QgKgorUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMoUHlPYmplY3QgKm9iaiwgaW50IGJ1ZmZlcnR5cGUsIGNoYXIgb3JkZXIpCit7CisgICAgUHlNZW1vcnlWaWV3T2JqZWN0ICptdjsKKyAgICBQeU9iamVjdCAqcmV0OworICAgIFB5X2J1ZmZlciAqdmlldzsKKworICAgIGFzc2VydChidWZmZXJ0eXBlID09IFB5QlVGX1JFQUQgfHwgYnVmZmVydHlwZSA9PSBQeUJVRl9XUklURSk7CisgICAgYXNzZXJ0KG9yZGVyID09ICdDJyB8fCBvcmRlciA9PSAnRicgfHwgb3JkZXIgPT0gJ0EnKTsKKworICAgIG12ID0gKFB5TWVtb3J5Vmlld09iamVjdCAqKVB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0KG9iaik7CisgICAgaWYgKG12ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgdmlldyA9ICZtdi0+dmlldzsKKyAgICBpZiAoYnVmZmVydHlwZSA9PSBQeUJVRl9XUklURSAmJiB2aWV3LT5yZWFkb25seSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAidW5kZXJseWluZyBidWZmZXIgaXMgbm90IHdyaXRhYmxlIik7CisgICAgICAgIFB5X0RFQ1JFRihtdik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXModmlldywgb3JkZXIpKQorICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopbXY7CisKKyAgICBpZiAoYnVmZmVydHlwZSA9PSBQeUJVRl9XUklURSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAid3JpdGFibGUgY29udGlndW91cyBidWZmZXIgcmVxdWVzdGVkICIKKyAgICAgICAgICAgICJmb3IgYSBub24tY29udGlndW91cyBvYmplY3QuIik7CisgICAgICAgIFB5X0RFQ1JFRihtdik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldCA9IG1lbW9yeV9mcm9tX2NvbnRpZ3VvdXNfY29weSh2aWV3LCBvcmRlcik7CisgICAgUHlfREVDUkVGKG12KTsKKyAgICByZXR1cm4gcmV0OworfQorCisKIHN0YXRpYyBQeU9iamVjdCAqCiBtZW1vcnlfbmV3KFB5VHlwZU9iamVjdCAqc3VidHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5T2JqZWN0ICpvYmo7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJvYmplY3QiLCAwfTsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im9iamVjdCIsIE5VTEx9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk86bWVtb3J5dmlldyIsIGt3bGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2JqKSkgewpAQCAtMTMxLDIwMyArOTYwLDE4NDYgQEAKIH0KIAogCi1zdGF0aWMgdm9pZAotX3N0cmlkZWRfY29weV9uZChjaGFyICpkZXN0LCBjaGFyICpzcmMsIGludCBuZCwgUHlfc3NpemVfdCAqc2hhcGUsCi0gICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnN0cmlkZXMsIFB5X3NzaXplX3QgaXRlbXNpemUsIGNoYXIgZm9ydCkKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgUHJldmlvdXNseSBpbiBhYnN0cmFjdC5jICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5X2J1ZmZlciB2aWV3OworICAgIFB5X3NzaXplX3QgYXJyYXlbMV07Cit9IFB5X2J1ZmZlcl9mdWxsOworCitpbnQKK1B5QnVmZmVyX1RvQ29udGlndW91cyh2b2lkICpidWYsIFB5X2J1ZmZlciAqc3JjLCBQeV9zc2l6ZV90IGxlbiwgY2hhciBvcmRlcikKIHsKLSAgICBpbnQgazsKLSAgICBQeV9zc2l6ZV90IG91dHN0cmlkZTsKKyAgICBQeV9idWZmZXJfZnVsbCAqZmIgPSBOVUxMOworICAgIGludCByZXQ7CiAKLSAgICBpZiAobmQ9PTApIHsKLSAgICAgICAgbWVtY3B5KGRlc3QsIHNyYywgaXRlbXNpemUpOwotICAgIH0KLSAgICBlbHNlIGlmIChuZCA9PSAxKSB7Ci0gICAgICAgIGZvciAoayA9IDA7IGs8c2hhcGVbMF07IGsrKykgewotICAgICAgICAgICAgbWVtY3B5KGRlc3QsIHNyYywgaXRlbXNpemUpOwotICAgICAgICAgICAgZGVzdCArPSBpdGVtc2l6ZTsKLSAgICAgICAgICAgIHNyYyArPSBzdHJpZGVzWzBdOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoZm9ydCA9PSAnRicpIHsKLSAgICAgICAgICAgIC8qIENvcHkgZmlyc3QgZGltZW5zaW9uIGZpcnN0LAotICAgICAgICAgICAgICAgc2Vjb25kIGRpbWVuc2lvbiBzZWNvbmQsIGV0Yy4uLgotICAgICAgICAgICAgICAgU2V0IHVwIHRoZSByZWN1cnNpdmUgbG9vcCBiYWNrd2FyZHMgc28gdGhhdCBmaW5hbAotICAgICAgICAgICAgICAgZGltZW5zaW9uIGlzIGFjdHVhbGx5IGNvcGllZCBsYXN0LgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIG91dHN0cmlkZSA9IGl0ZW1zaXplOwotICAgICAgICAgICAgZm9yIChrPTE7IGs8bmQtMTtrKyspIHsKLSAgICAgICAgICAgICAgICBvdXRzdHJpZGUgKj0gc2hhcGVba107Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKGs9MDsgazxzaGFwZVtuZC0xXTsgaysrKSB7Ci0gICAgICAgICAgICAgICAgX3N0cmlkZWRfY29weV9uZChkZXN0LCBzcmMsIG5kLTEsIHNoYXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlcywgaXRlbXNpemUsIGZvcnQpOwotICAgICAgICAgICAgICAgIGRlc3QgKz0gb3V0c3RyaWRlOwotICAgICAgICAgICAgICAgIHNyYyArPSBzdHJpZGVzW25kLTFdOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgYXNzZXJ0KG9yZGVyID09ICdDJyB8fCBvcmRlciA9PSAnRicgfHwgb3JkZXIgPT0gJ0EnKTsKIAotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8qIENvcHkgbGFzdCBkaW1lbnNpb24gZmlyc3QsCi0gICAgICAgICAgICAgICBzZWNvbmQtdG8tbGFzdCBkaW1lbnNpb24gc2Vjb25kLCBldGMuCi0gICAgICAgICAgICAgICBTZXQgdXAgdGhlIHJlY3Vyc2lvbiBzbyB0aGF0IHRoZQotICAgICAgICAgICAgICAgZmlyc3QgZGltZW5zaW9uIGlzIGNvcGllZCBsYXN0Ci0gICAgICAgICAgICAqLwotICAgICAgICAgICAgb3V0c3RyaWRlID0gaXRlbXNpemU7Ci0gICAgICAgICAgICBmb3IgKGs9MTsgayA8IG5kOyBrKyspIHsKLSAgICAgICAgICAgICAgICBvdXRzdHJpZGUgKj0gc2hhcGVba107Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKGs9MDsgazxzaGFwZVswXTsgaysrKSB7Ci0gICAgICAgICAgICAgICAgX3N0cmlkZWRfY29weV9uZChkZXN0LCBzcmMsIG5kLTEsIHNoYXBlKzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGVzKzEsIGl0ZW1zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ydCk7Ci0gICAgICAgICAgICAgICAgZGVzdCArPSBvdXRzdHJpZGU7Ci0gICAgICAgICAgICAgICAgc3JjICs9IHN0cmlkZXNbMF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICBpZiAobGVuICE9IHNyYy0+bGVuKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgIlB5QnVmZmVyX1RvQ29udGlndW91czogbGVuICE9IHZpZXctPmxlbiIpOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHJldHVybjsKKworICAgIGlmIChQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoc3JjLCBvcmRlcikpIHsKKyAgICAgICAgbWVtY3B5KChjaGFyICopYnVmLCBzcmMtPmJ1ZiwgbGVuKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogYnVmZmVyX3RvX2NvbnRpZ3VvdXMoKSBhc3N1bWVzIFB5QlVGX0ZVTEwgKi8KKyAgICBmYiA9IFB5TWVtX01hbGxvYyhzaXplb2YgKmZiICsgMyAqIHNyYy0+bmRpbSAqIChzaXplb2YgKmZiLT5hcnJheSkpOworICAgIGlmIChmYiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZmItPnZpZXcubmRpbSA9IHNyYy0+bmRpbTsKKyAgICBmYi0+dmlldy5zaGFwZSA9IGZiLT5hcnJheTsKKyAgICBmYi0+dmlldy5zdHJpZGVzID0gZmItPmFycmF5ICsgc3JjLT5uZGltOworICAgIGZiLT52aWV3LnN1Ym9mZnNldHMgPSBmYi0+YXJyYXkgKyAyICogc3JjLT5uZGltOworCisgICAgaW5pdF9zaGFyZWRfdmFsdWVzKCZmYi0+dmlldywgc3JjKTsKKyAgICBpbml0X3NoYXBlX3N0cmlkZXMoJmZiLT52aWV3LCBzcmMpOworICAgIGluaXRfc3Vib2Zmc2V0cygmZmItPnZpZXcsIHNyYyk7CisKKyAgICBzcmMgPSAmZmItPnZpZXc7CisKKyAgICByZXQgPSBidWZmZXJfdG9fY29udGlndW91cyhidWYsIHNyYywgb3JkZXIpOworICAgIFB5TWVtX0ZyZWUoZmIpOworICAgIHJldHVybiByZXQ7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2UvR0MgbWFuYWdlbWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBJbmZvcm0gdGhlIG1hbmFnZWQgYnVmZmVyIHRoYXQgdGhpcyBwYXJ0aWN1bGFyIG1lbW9yeXZpZXcgd2lsbCBub3QgYWNjZXNzCisgICB0aGUgdW5kZXJseWluZyBidWZmZXIgYWdhaW4uIElmIG5vIG90aGVyIG1lbW9yeXZpZXdzIGFyZSByZWdpc3RlcmVkIHdpdGgKKyAgIHRoZSBtYW5hZ2VkIGJ1ZmZlciwgdGhlIHVuZGVybHlpbmcgYnVmZmVyIGlzIHJlbGVhc2VkIGluc3RhbnRseSBhbmQKKyAgIG1hcmtlZCBhcyBpbmFjY2Vzc2libGUgZm9yIGJvdGggdGhlIG1lbW9yeXZpZXcgYW5kIHRoZSBtYW5hZ2VkIGJ1ZmZlci4KKworICAgVGhpcyBmdW5jdGlvbiBmYWlscyBpZiB0aGUgbWVtb3J5dmlldyBpdHNlbGYgaGFzIGV4cG9ydGVkIGJ1ZmZlcnMuICovCitzdGF0aWMgaW50CitfbWVtb3J5X3JlbGVhc2UoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmKQoreworICAgIGlmIChzZWxmLT5mbGFncyAmIF9QeV9NRU1PUllWSUVXX1JFTEVBU0VEKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChzZWxmLT5leHBvcnRzID09IDApIHsKKyAgICAgICAgc2VsZi0+ZmxhZ3MgfD0gX1B5X01FTU9SWVZJRVdfUkVMRUFTRUQ7CisgICAgICAgIGFzc2VydChzZWxmLT5tYnVmLT5leHBvcnRzID4gMCk7CisgICAgICAgIGlmICgtLXNlbGYtPm1idWYtPmV4cG9ydHMgPT0gMCkKKyAgICAgICAgICAgIG1idWZfcmVsZWFzZShzZWxmLT5tYnVmKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChzZWxmLT5leHBvcnRzID4gMCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldyBoYXMgJXpkIGV4cG9ydGVkIGJ1ZmZlciVzIiwgc2VsZi0+ZXhwb3J0cywKKyAgICAgICAgICAgIHNlbGYtPmV4cG9ydHM9PTEgPyAiIiA6ICJzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBQeV9GYXRhbEVycm9yKCJfbWVtb3J5X3JlbGVhc2UoKTogbmVnYXRpdmUgZXhwb3J0IGNvdW50Iik7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X3JlbGVhc2UoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQoreworICAgIGlmIChfbWVtb3J5X3JlbGVhc2Uoc2VsZikgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIHZvaWQKK21lbW9yeV9kZWFsbG9jKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKK3sKKyAgICBhc3NlcnQoc2VsZi0+ZXhwb3J0cyA9PSAwKTsKKyAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhzZWxmKTsKKyAgICAodm9pZClfbWVtb3J5X3JlbGVhc2Uoc2VsZik7CisgICAgUHlfQ0xFQVIoc2VsZi0+bWJ1Zik7CisgICAgaWYgKHNlbGYtPndlYWtyZWZsaXN0ICE9IE5VTEwpCisgICAgICAgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnMoKFB5T2JqZWN0ICopIHNlbGYpOworICAgIFB5T2JqZWN0X0dDX0RlbChzZWxmKTsKIH0KIAogc3RhdGljIGludAotX2luZGlyZWN0X2NvcHlfbmQoY2hhciAqZGVzdCwgUHlfYnVmZmVyICp2aWV3LCBjaGFyIGZvcnQpCittZW1vcnlfdHJhdmVyc2UoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBQeV9zc2l6ZV90ICppbmRpY2VzOwotICAgIGludCBrOwotICAgIFB5X3NzaXplX3QgZWxlbWVudHM7Ci0gICAgY2hhciAqcHRyOwotICAgIHZvaWQgKCpmdW5jKShpbnQsIFB5X3NzaXplX3QgKiwgY29uc3QgUHlfc3NpemVfdCAqKTsKKyAgICBQeV9WSVNJVChzZWxmLT5tYnVmKTsKKyAgICByZXR1cm4gMDsKK30KIAotICAgIGlmICh2aWV3LT5uZGltID4gUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoUHlfc3NpemVfdCkpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIC0xOworc3RhdGljIGludAorbWVtb3J5X2NsZWFyKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKK3sKKyAgICAodm9pZClfbWVtb3J5X3JlbGVhc2Uoc2VsZik7CisgICAgUHlfQ0xFQVIoc2VsZi0+bWJ1Zik7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfZW50ZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOworICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9leGl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gbWVtb3J5X3JlbGVhc2UoKFB5TWVtb3J5Vmlld09iamVjdCAqKXNlbGYsIE5VTEwpOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgQ2FzdGluZyBmb3JtYXQgYW5kIHNoYXBlICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSBJU19CWVRFX0ZPUk1BVChmKSAoZiA9PSAnYicgfHwgZiA9PSAnQicgfHwgZiA9PSAnYycpCisKK1B5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQorZ2V0X25hdGl2ZV9mbXRjaGFyKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqZm10KQoreworICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOworCisgICAgaWYgKGZtdFswXSA9PSAnQCcpIGZtdCsrOworCisgICAgc3dpdGNoIChmbXRbMF0pIHsKKyAgICBjYXNlICdjJzogY2FzZSAnYic6IGNhc2UgJ0InOiBzaXplID0gc2l6ZW9mKGNoYXIpOyBicmVhazsKKyAgICBjYXNlICdoJzogY2FzZSAnSCc6IHNpemUgPSBzaXplb2Yoc2hvcnQpOyBicmVhazsKKyAgICBjYXNlICdpJzogY2FzZSAnSSc6IHNpemUgPSBzaXplb2YoaW50KTsgYnJlYWs7CisgICAgY2FzZSAnbCc6IGNhc2UgJ0wnOiBzaXplID0gc2l6ZW9mKGxvbmcpOyBicmVhazsKKyAgICAjaWZkZWYgSEFWRV9MT05HX0xPTkcKKyAgICBjYXNlICdxJzogY2FzZSAnUSc6IHNpemUgPSBzaXplb2YoUFlfTE9OR19MT05HKTsgYnJlYWs7CisgICAgI2VuZGlmCisgICAgY2FzZSAnbic6IGNhc2UgJ04nOiBzaXplID0gc2l6ZW9mKFB5X3NzaXplX3QpOyBicmVhazsKKyAgICBjYXNlICdmJzogc2l6ZSA9IHNpemVvZihmbG9hdCk7IGJyZWFrOworICAgIGNhc2UgJ2QnOiBzaXplID0gc2l6ZW9mKGRvdWJsZSk7IGJyZWFrOworICAgICNpZmRlZiBIQVZFX0M5OV9CT09MCisgICAgY2FzZSAnPyc6IHNpemUgPSBzaXplb2YoX0Jvb2wpOyBicmVhazsKKyAgICAjZWxzZQorICAgIGNhc2UgJz8nOiBzaXplID0gc2l6ZW9mKGNoYXIpOyBicmVhazsKKyAgICAjZW5kaWYKKyAgICBjYXNlICdQJzogc2l6ZSA9IHNpemVvZih2b2lkICopOyBicmVhazsKICAgICB9CiAKLSAgICBpbmRpY2VzID0gKFB5X3NzaXplX3QgKilQeU1lbV9NYWxsb2Moc2l6ZW9mKFB5X3NzaXplX3QpKnZpZXctPm5kaW0pOwotICAgIGlmIChpbmRpY2VzID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBmb3IgKGs9MDsgazx2aWV3LT5uZGltO2srKykgewotICAgICAgICBpbmRpY2VzW2tdID0gMDsKKyAgICBpZiAoc2l6ZSA+IDAgJiYgZm10WzFdID09ICdcMCcpIHsKKyAgICAgICAgKnJlc3VsdCA9IGZtdFswXTsKKyAgICAgICAgcmV0dXJuIHNpemU7CiAgICAgfQogCi0gICAgZWxlbWVudHMgPSAxOwotICAgIGZvciAoaz0wOyBrPHZpZXctPm5kaW07IGsrKykgewotICAgICAgICBlbGVtZW50cyAqPSB2aWV3LT5zaGFwZVtrXTsKKyAgICByZXR1cm4gLTE7Cit9CisKKy8qIENhc3QgYSBtZW1vcnl2aWV3J3MgZGF0YSB0eXBlIHRvICdmb3JtYXQnLiBUaGUgaW5wdXQgYXJyYXkgbXVzdCBiZQorICAgQy1jb250aWd1b3VzLiBBdCBsZWFzdCBvbmUgb2YgaW5wdXQtZm9ybWF0LCBvdXRwdXQtZm9ybWF0IG11c3QgaGF2ZQorICAgYnl0ZSBzaXplLiBUaGUgb3V0cHV0IGFycmF5IGlzIDEtRCwgd2l0aCB0aGUgc2FtZSBieXRlIGxlbmd0aCBhcyB0aGUKKyAgIGlucHV0IGFycmF5LiBUaHVzLCB2aWV3LT5sZW4gbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZSBuZXcgaXRlbXNpemUuICovCitzdGF0aWMgaW50CitjYXN0X3RvXzFEKFB5TWVtb3J5Vmlld09iamVjdCAqbXYsIFB5T2JqZWN0ICpmb3JtYXQpCit7CisgICAgUHlfYnVmZmVyICp2aWV3ID0gJm12LT52aWV3OworICAgIFB5T2JqZWN0ICphc2NpaWZtdDsKKyAgICBjaGFyIHNyY2NoYXIsIGRlc3RjaGFyOworICAgIFB5X3NzaXplX3QgaXRlbXNpemU7CisgICAgaW50IHJldCA9IC0xOworCisgICAgYXNzZXJ0KHZpZXctPm5kaW0gPj0gMSk7CisgICAgYXNzZXJ0KFB5X1NJWkUobXYpID09IDMqdmlldy0+bmRpbSk7CisgICAgYXNzZXJ0KHZpZXctPnNoYXBlID09IG12LT5vYl9hcnJheSk7CisgICAgYXNzZXJ0KHZpZXctPnN0cmlkZXMgPT0gbXYtPm9iX2FycmF5ICsgdmlldy0+bmRpbSk7CisgICAgYXNzZXJ0KHZpZXctPnN1Ym9mZnNldHMgPT0gbXYtPm9iX2FycmF5ICsgMip2aWV3LT5uZGltKTsKKworICAgIGlmIChnZXRfbmF0aXZlX2ZtdGNoYXIoJnNyY2NoYXIsIHZpZXctPmZvcm1hdCkgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXc6IHNvdXJjZSBmb3JtYXQgbXVzdCBiZSBhIG5hdGl2ZSBzaW5nbGUgY2hhcmFjdGVyICIKKyAgICAgICAgICAgICJmb3JtYXQgcHJlZml4ZWQgd2l0aCBhbiBvcHRpb25hbCAnQCciKTsKKyAgICAgICAgcmV0dXJuIHJldDsKICAgICB9Ci0gICAgaWYgKGZvcnQgPT0gJ0YnKSB7Ci0gICAgICAgIGZ1bmMgPSBfUHlfYWRkX29uZV90b19pbmRleF9GOworCisgICAgYXNjaWlmbXQgPSBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhmb3JtYXQpOworICAgIGlmIChhc2NpaWZtdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgaXRlbXNpemUgPSBnZXRfbmF0aXZlX2ZtdGNoYXIoJmRlc3RjaGFyLCBQeUJ5dGVzX0FTX1NUUklORyhhc2NpaWZtdCkpOworICAgIGlmIChpdGVtc2l6ZSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldzogZGVzdGluYXRpb24gZm9ybWF0IG11c3QgYmUgYSBuYXRpdmUgc2luZ2xlICIKKyAgICAgICAgICAgICJjaGFyYWN0ZXIgZm9ybWF0IHByZWZpeGVkIHdpdGggYW4gb3B0aW9uYWwgJ0AnIik7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGlmICghSVNfQllURV9GT1JNQVQoc3JjY2hhcikgJiYgIUlTX0JZVEVfRk9STUFUKGRlc3RjaGFyKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXc6IGNhbm5vdCBjYXN0IGJldHdlZW4gdHdvIG5vbi1ieXRlIGZvcm1hdHMiKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorICAgIGlmICh2aWV3LT5sZW4gJSBpdGVtc2l6ZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXc6IGxlbmd0aCBpcyBub3QgYSBtdWx0aXBsZSBvZiBpdGVtc2l6ZSIpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBzdHJuY3B5KG12LT5mb3JtYXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKGFzY2lpZm10KSwKKyAgICAgICAgICAgIF9QeV9NRU1PUllWSUVXX01BWF9GT1JNQVQpOworICAgIG12LT5mb3JtYXRbX1B5X01FTU9SWVZJRVdfTUFYX0ZPUk1BVC0xXSA9ICdcMCc7CisgICAgdmlldy0+Zm9ybWF0ID0gbXYtPmZvcm1hdDsKKyAgICB2aWV3LT5pdGVtc2l6ZSA9IGl0ZW1zaXplOworCisgICAgdmlldy0+bmRpbSA9IDE7CisgICAgdmlldy0+c2hhcGVbMF0gPSB2aWV3LT5sZW4gLyB2aWV3LT5pdGVtc2l6ZTsKKyAgICB2aWV3LT5zdHJpZGVzWzBdID0gdmlldy0+aXRlbXNpemU7CisgICAgdmlldy0+c3Vib2Zmc2V0cyA9IE5VTEw7CisKKyAgICBpbml0X2ZsYWdzKG12KTsKKyAKKyAgICByZXQgPSAwOworCitvdXQ6CisgICAgUHlfREVDUkVGKGFzY2lpZm10KTsKKyAgICByZXR1cm4gcmV0OworfQorCisvKiBUaGUgbWVtb3J5dmlldyBtdXN0IGhhdmUgc3BhY2UgZm9yIDMqbGVuKHNlcSkgZWxlbWVudHMuICovCitzdGF0aWMgUHlfc3NpemVfdAorY29weV9zaGFwZShQeV9zc2l6ZV90ICpzaGFwZSwgY29uc3QgUHlPYmplY3QgKnNlcSwgUHlfc3NpemVfdCBuZGltLAorICAgICAgICAgICBQeV9zc2l6ZV90IGl0ZW1zaXplKQoreworICAgIFB5X3NzaXplX3QgeCwgaTsKKyAgICBQeV9zc2l6ZV90IGxlbiA9IGl0ZW1zaXplOworCisgICAgZm9yIChpID0gMDsgaSA8IG5kaW07IGkrKykgeworICAgICAgICBQeU9iamVjdCAqdG1wID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKHNlcSwgaSk7CisgICAgICAgIGlmICghUHlMb25nX0NoZWNrKHRtcCkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1lbW9yeXZpZXcuY2FzdCgpOiBlbGVtZW50cyBvZiBzaGFwZSBtdXN0IGJlIGludGVnZXJzIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodG1wKTsKKyAgICAgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGlmICh4IDw9IDApIHsKKyAgICAgICAgICAgIC8qIEluIGdlbmVyYWwgZWxlbWVudHMgb2Ygc2hhcGUgbWF5IGJlIDAsIGJ1dCBub3QgZm9yIGNhc3RpbmcuICovCisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibWVtb3J5dmlldy5jYXN0KCk6IGVsZW1lbnRzIG9mIHNoYXBlIG11c3QgYmUgaW50ZWdlcnMgPiAwIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHggPiBQWV9TU0laRV9UX01BWCAvIGxlbikgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1lbW9yeXZpZXcuY2FzdCgpOiBwcm9kdWN0KHNoYXBlKSA+IFNTSVpFX01BWCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGxlbiAqPSB4OworICAgICAgICBzaGFwZVtpXSA9IHg7CisgICAgfQorCisgICAgcmV0dXJuIGxlbjsKK30KKworLyogQ2FzdCBhIDEtRCBhcnJheSB0byBhIG5ldyBzaGFwZS4gVGhlIHJlc3VsdCBhcnJheSB3aWxsIGJlIEMtY29udGlndW91cy4KKyAgIElmIHRoZSByZXN1bHQgYXJyYXkgZG9lcyBub3QgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIGJ5dGUgbGVuZ3RoIGFzIHRoZQorICAgaW5wdXQgYXJyYXksIHJhaXNlIFZhbHVlRXJyb3IuICovCitzdGF0aWMgaW50CitjYXN0X3RvX05EKFB5TWVtb3J5Vmlld09iamVjdCAqbXYsIGNvbnN0IFB5T2JqZWN0ICpzaGFwZSwgaW50IG5kaW0pCit7CisgICAgUHlfYnVmZmVyICp2aWV3ID0gJm12LT52aWV3OworICAgIFB5X3NzaXplX3QgbGVuOworCisgICAgYXNzZXJ0KHZpZXctPm5kaW0gPT0gMSk7IC8qIG5kaW0gZnJvbSBjYXN0X3RvXzFEKCkgKi8KKyAgICBhc3NlcnQoUHlfU0laRShtdikgPT0gMyoobmRpbT09MD8xOm5kaW0pKTsgLyogbmRpbSBvZiByZXN1bHQgYXJyYXkgKi8KKyAgICBhc3NlcnQodmlldy0+c2hhcGUgPT0gbXYtPm9iX2FycmF5KTsKKyAgICBhc3NlcnQodmlldy0+c3RyaWRlcyA9PSBtdi0+b2JfYXJyYXkgKyAobmRpbT09MD8xOm5kaW0pKTsKKyAgICBhc3NlcnQodmlldy0+c3Vib2Zmc2V0cyA9PSBOVUxMKTsKKworICAgIHZpZXctPm5kaW0gPSBuZGltOworICAgIGlmICh2aWV3LT5uZGltID09IDApIHsKKyAgICAgICAgdmlldy0+c2hhcGUgPSBOVUxMOworICAgICAgICB2aWV3LT5zdHJpZGVzID0gTlVMTDsKKyAgICAgICAgbGVuID0gdmlldy0+aXRlbXNpemU7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBmdW5jID0gX1B5X2FkZF9vbmVfdG9faW5kZXhfQzsKLSAgICB9Ci0gICAgd2hpbGUgKGVsZW1lbnRzLS0pIHsKLSAgICAgICAgZnVuYyh2aWV3LT5uZGltLCBpbmRpY2VzLCB2aWV3LT5zaGFwZSk7Ci0gICAgICAgIHB0ciA9IFB5QnVmZmVyX0dldFBvaW50ZXIodmlldywgaW5kaWNlcyk7Ci0gICAgICAgIG1lbWNweShkZXN0LCBwdHIsIHZpZXctPml0ZW1zaXplKTsKLSAgICAgICAgZGVzdCArPSB2aWV3LT5pdGVtc2l6ZTsKKyAgICAgICAgbGVuID0gY29weV9zaGFwZSh2aWV3LT5zaGFwZSwgc2hhcGUsIG5kaW0sIHZpZXctPml0ZW1zaXplKTsKKyAgICAgICAgaWYgKGxlbiA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGluaXRfc3RyaWRlc19mcm9tX3NoYXBlKHZpZXcpOwogICAgIH0KIAotICAgIFB5TWVtX0ZyZWUoaW5kaWNlcyk7CisgICAgaWYgKHZpZXctPmxlbiAhPSBsZW4pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplICE9IGJ1ZmZlciBzaXplIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpbml0X2ZsYWdzKG12KTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit6ZXJvX2luX3NoYXBlKFB5TWVtb3J5Vmlld09iamVjdCAqbXYpCit7CisgICAgUHlfYnVmZmVyICp2aWV3ID0gJm12LT52aWV3OworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGZvciAoaSA9IDA7IGkgPCB2aWV3LT5uZGltOyBpKyspCisgICAgICAgIGlmICh2aWV3LT5zaGFwZVtpXSA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIDE7CisKICAgICByZXR1cm4gMDsKIH0KIAogLyoKLSAgIEdldCBhIHRoZSBkYXRhIGZyb20gYW4gb2JqZWN0IGFzIGEgY29udGlndW91cyBjaHVuayBvZiBtZW1vcnkgKGluCi0gICBlaXRoZXIgJ0MnIG9yICdGJ29ydHJhbiBvcmRlcikgZXZlbiBpZiBpdCBtZWFucyBjb3B5aW5nIGl0IGludG8gYQotICAgc2VwYXJhdGUgbWVtb3J5IGFyZWEuCisgICBDYXN0IGEgY29weSBvZiAnc2VsZicgdG8gYSBkaWZmZXJlbnQgdmlldy4gVGhlIGlucHV0IHZpZXcgbXVzdAorICAgYmUgQy1jb250aWd1b3VzLiBUaGUgZnVuY3Rpb24gYWx3YXlzIGNhc3RzIHRoZSBpbnB1dCB2aWV3IHRvIGEKKyAgIDEtRCBvdXRwdXQgYWNjb3JkaW5nIHRvICdmb3JtYXQnLiBBdCBsZWFzdCBvbmUgb2YgaW5wdXQtZm9ybWF0LAorICAgb3V0cHV0LWZvcm1hdCBtdXN0IGhhdmUgYnl0ZSBzaXplLgogCi0gICBSZXR1cm5zIGEgbmV3IHJlZmVyZW5jZSB0byBhIE1lbW9yeSB2aWV3IG9iamVjdC4gIElmIG5vIGNvcHkgaXMgbmVlZGVkLAotICAgdGhlIG1lbW9yeSB2aWV3IG9iamVjdCBwb2ludHMgdG8gdGhlIG9yaWdpbmFsIG1lbW9yeSBhbmQgaG9sZHMgYQotICAgbG9jayBvbiB0aGUgb3JpZ2luYWwuICBJZiBhIGNvcHkgaXMgbmVlZGVkLCB0aGVuIHRoZSBtZW1vcnkgdmlldyBvYmplY3QKLSAgIHBvaW50cyB0byBhIGJyYW5kLW5ldyBCeXRlcyBvYmplY3QgKGFuZCBob2xkcyBhIG1lbW9yeSBsb2NrIG9uIGl0KS4KKyAgIElmICdzaGFwZScgaXMgZ2l2ZW4sIHRoZSAxLUQgdmlldyBmcm9tIHRoZSBwcmV2aW91cyBzdGVwIHdpbGwKKyAgIGJlIGNhc3QgdG8gYSBDLWNvbnRpZ3VvdXMgdmlldyB3aXRoIG5ldyBzaGFwZSBhbmQgc3RyaWRlcy4KIAotICAgYnVmZmVydHlwZQotCi0gICBQeUJVRl9SRUFEICBidWZmZXIgb25seSBuZWVkcyB0byBiZSByZWFkLW9ubHkKLSAgIFB5QlVGX1dSSVRFIGJ1ZmZlciBuZWVkcyB0byBiZSB3cml0YWJsZSAoZ2l2ZSBlcnJvciBpZiBub3QgY29udGlndW91cykKLSAgIFB5QlVGX1NIQURPVyBidWZmZXIgbmVlZHMgdG8gYmUgd3JpdGFibGUgc28gc2hhZG93IGl0IHdpdGgKLSAgICAgICAgICAgICAgICBhIGNvbnRpZ3VvdXMgYnVmZmVyIGlmIGl0IGlzIG5vdC4gVGhlIHZpZXcgd2lsbCBwb2ludCB0bwotICAgICAgICAgICAgICAgIHRoZSBzaGFkb3cgYnVmZmVyIHdoaWNoIGNhbiBiZSB3cml0dGVuIHRvIGFuZCB0aGVuCi0gICAgICAgICAgICAgICAgd2lsbCBiZSBjb3BpZWQgYmFjayBpbnRvIHRoZSBvdGhlciBidWZmZXIgd2hlbiB0aGUgbWVtb3J5Ci0gICAgICAgICAgICAgICAgdmlldyBpcyBkZS1hbGxvY2F0ZWQuICBXaGlsZSB0aGUgc2hhZG93IGJ1ZmZlciBpcwotICAgICAgICAgICAgICAgIGJlaW5nIHVzZWQsIGl0IHdpbGwgaGF2ZSBhbiBleGNsdXNpdmUgd3JpdGUgbG9jayBvbgotICAgICAgICAgICAgICAgIHRoZSBvcmlnaW5hbCBidWZmZXIuCi0gKi8KLQotUHlPYmplY3QgKgotUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMoUHlPYmplY3QgKm9iaiwgaW50IGJ1ZmZlcnR5cGUsIGNoYXIgZm9ydCkKKyAgIEFsbCBjYXN0cyBtdXN0IHJlc3VsdCBpbiB2aWV3cyB0aGF0IHdpbGwgaGF2ZSB0aGUgZXhhY3QgYnl0ZQorICAgc2l6ZSBvZiB0aGUgb3JpZ2luYWwgaW5wdXQuIE90aGVyd2lzZSwgYW4gZXJyb3IgaXMgcmFpc2VkLgorKi8KK3N0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfY2FzdChQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU1lbW9yeVZpZXdPYmplY3QgKm1lbTsKLSAgICBQeU9iamVjdCAqYnl0ZXM7Ci0gICAgUHlfYnVmZmVyICp2aWV3OwotICAgIGludCBmbGFnczsKLSAgICBjaGFyICpkZXN0OworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZm9ybWF0IiwgInNoYXBlIiwgTlVMTH07CisgICAgUHlNZW1vcnlWaWV3T2JqZWN0ICptdiA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNoYXBlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZm9ybWF0OworICAgIFB5X3NzaXplX3QgbmRpbSA9IDE7CiAKLSAgICBpZiAoIVB5T2JqZWN0X0NoZWNrQnVmZmVyKG9iaikpIHsKKyAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE8iLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCwgJnNoYXBlKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soZm9ybWF0KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBidWZmZXIgaW50ZXJmYWNlIik7CisgICAgICAgICAgICAibWVtb3J5dmlldzogZm9ybWF0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmciKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCi0gICAgbWVtID0gUHlPYmplY3RfR0NfTmV3KFB5TWVtb3J5Vmlld09iamVjdCwgJlB5TWVtb3J5Vmlld19UeXBlKTsKLSAgICBpZiAobWVtID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgdmlldyA9ICZtZW0tPnZpZXc7Ci0gICAgZmxhZ3MgPSBQeUJVRl9GVUxMX1JPOwotICAgIHN3aXRjaChidWZmZXJ0eXBlKSB7Ci0gICAgY2FzZSBQeUJVRl9XUklURToKLSAgICAgICAgZmxhZ3MgPSBQeUJVRl9GVUxMOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKG9iaiwgdmlldywgZmxhZ3MpICE9IDApIHsKLSAgICAgICAgUHlfREVDUkVGKG1lbSk7CisgICAgaWYgKCFNVl9DX0NPTlRJR1VPVVMoc2VsZi0+ZmxhZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldzogY2FzdHMgYXJlIHJlc3RyaWN0ZWQgdG8gQy1jb250aWd1b3VzIHZpZXdzIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIGlmIChQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXModmlldywgZm9ydCkpIHsKLSAgICAgICAgLyogbm8gY29weSBuZWVkZWQgKi8KLSAgICAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKG1lbSk7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKiltZW07Ci0gICAgfQotICAgIC8qIG90aGVyd2lzZSBhIGNvcHkgaXMgbmVlZGVkICovCi0gICAgaWYgKGJ1ZmZlcnR5cGUgPT0gUHlCVUZfV1JJVEUpIHsKLSAgICAgICAgUHlfREVDUkVGKG1lbSk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ3cml0YWJsZSBjb250aWd1b3VzIGJ1ZmZlciByZXF1ZXN0ZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgImZvciBhIG5vbi1jb250aWd1b3Vzb2JqZWN0LiIpOworICAgIGlmICh6ZXJvX2luX3NoYXBlKHNlbGYpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldzogY2Fubm90IGNhc3QgdmlldyB3aXRoIHplcm9zIGluIHNoYXBlIG9yIHN0cmlkZXMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCB2aWV3LT5sZW4pOwotICAgIGlmIChieXRlcyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihtZW0pOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZGVzdCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKTsKLSAgICAvKiBkaWZmZXJlbnQgY29weWluZyBzdHJhdGVneSBkZXBlbmRpbmcgb24gd2hldGhlcgotICAgICAgIG9yIG5vdCBhbnkgcG9pbnRlciBkZS1yZWZlcmVuY2luZyBpcyBuZWVkZWQKLSAgICAqLwotICAgIC8qIHN0cmlkZWQgb3IgaW4tZGlyZWN0IGNvcHkgKi8KLSAgICBpZiAodmlldy0+c3Vib2Zmc2V0cz09TlVMTCkgewotICAgICAgICBfc3RyaWRlZF9jb3B5X25kKGRlc3QsIHZpZXctPmJ1Ziwgdmlldy0+bmRpbSwgdmlldy0+c2hhcGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdmlldy0+c3RyaWRlcywgdmlldy0+aXRlbXNpemUsIGZvcnQpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKF9pbmRpcmVjdF9jb3B5X25kKGRlc3QsIHZpZXcsIGZvcnQpIDwgMCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihtZW0pOworICAgIGlmIChzaGFwZSkgeworICAgICAgICBDSEVDS19MSVNUX09SX1RVUExFKHNoYXBlKQorICAgICAgICBuZGltID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHNoYXBlKTsKKyAgICAgICAgaWYgKG5kaW0gPiBQeUJVRl9NQVhfTkRJTSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1lbW9yeXZpZXc6IG51bWJlciBvZiBkaW1lbnNpb25zIG11c3Qgbm90IGV4Y2VlZCAiCisgICAgICAgICAgICAgICAgU1RSSU5HSVpFKFB5QlVGX01BWF9ORElNKSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKHZpZXcpOyAgLyogWFhYID8gKi8KKyAgICAgICAgaWYgKHNlbGYtPnZpZXcubmRpbSAhPSAxICYmIG5kaW0gIT0gMSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAibWVtb3J5dmlldzogY2FzdCBtdXN0IGJlIDFEIC0+IE5EIG9yIE5EIC0+IDFEIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgIH0KLSAgICBfUHlPYmplY3RfR0NfVFJBQ0sobWVtKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopbWVtOworCisgICAgbXYgPSAoUHlNZW1vcnlWaWV3T2JqZWN0ICopCisgICAgICAgIG1idWZfYWRkX2luY29tcGxldGVfdmlldyhzZWxmLT5tYnVmLCAmc2VsZi0+dmlldywgbmRpbT09MCA/IDEgOiAoaW50KW5kaW0pOworICAgIGlmIChtdiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChjYXN0X3RvXzFEKG12LCBmb3JtYXQpIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoc2hhcGUgJiYgY2FzdF90b19ORChtdiwgc2hhcGUsIChpbnQpbmRpbSkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgcmV0dXJuIChQeU9iamVjdCAqKW12OworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYobXYpOworICAgIHJldHVybiBOVUxMOwogfQogCiAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGludAorbWVtb3J5X2dldGJ1ZihQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT52aWV3OworICAgIGludCBiYXNlZmxhZ3MgPSBzZWxmLT5mbGFnczsKKworICAgIENIRUNLX1JFTEVBU0VEX0lOVChzZWxmKTsKKworICAgIC8qIHN0YXJ0IHdpdGggY29tcGxldGUgaW5mb3JtYXRpb24gKi8KKyAgICAqdmlldyA9ICpiYXNlOworICAgIHZpZXctPm9iaiA9IE5VTEw7CisKKyAgICBpZiAoUkVRX1dSSVRBQkxFKGZsYWdzKSAmJiBiYXNlLT5yZWFkb25seSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldzogdW5kZXJseWluZyBidWZmZXIgaXMgbm90IHdyaXRhYmxlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKCFSRVFfRk9STUFUKGZsYWdzKSkgeworICAgICAgICAvKiBOVUxMIGluZGljYXRlcyB0aGF0IHRoZSBidWZmZXIncyBkYXRhIHR5cGUgaGFzIGJlZW4gY2FzdCB0byAnQicuCisgICAgICAgICAgIHZpZXctPml0ZW1zaXplIGlzIHRoZSBfcHJldmlvdXNfIGl0ZW1zaXplLiBJZiBzaGFwZSBpcyBwcmVzZW50LAorICAgICAgICAgICB0aGUgZXF1YWxpdHkgcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSA9IGxlbiBzdGlsbCBob2xkcyBhdCB0aGlzCisgICAgICAgICAgIHBvaW50LiBUaGUgZXF1YWxpdHkgY2FsY3NpemUoZm9ybWF0KSA9IGl0ZW1zaXplIGRvZXMgX25vdF8gaG9sZAorICAgICAgICAgICBmcm9tIGhlcmUgb24hICovCisgICAgICAgIHZpZXctPmZvcm1hdCA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKFJFUV9DX0NPTlRJR1VPVVMoZmxhZ3MpICYmICFNVl9DX0NPTlRJR1VPVVMoYmFzZWZsYWdzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldzogdW5kZXJseWluZyBidWZmZXIgaXMgbm90IEMtY29udGlndW91cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChSRVFfRl9DT05USUdVT1VTKGZsYWdzKSAmJiAhTVZfRl9DT05USUdVT1VTKGJhc2VmbGFncykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXc6IHVuZGVybHlpbmcgYnVmZmVyIGlzIG5vdCBGb3J0cmFuIGNvbnRpZ3VvdXMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoUkVRX0FOWV9DT05USUdVT1VTKGZsYWdzKSAmJiAhTVZfQU5ZX0NPTlRJR1VPVVMoYmFzZWZsYWdzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldzogdW5kZXJseWluZyBidWZmZXIgaXMgbm90IGNvbnRpZ3VvdXMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoIVJFUV9JTkRJUkVDVChmbGFncykgJiYgKGJhc2VmbGFncyAmIF9QeV9NRU1PUllWSUVXX1BJTCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXc6IHVuZGVybHlpbmcgYnVmZmVyIHJlcXVpcmVzIHN1Ym9mZnNldHMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoIVJFUV9TVFJJREVTKGZsYWdzKSkgeworICAgICAgICBpZiAoIU1WX0NfQ09OVElHVU9VUyhiYXNlZmxhZ3MpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAgICAgIm1lbW9yeXZpZXc6IHVuZGVybHlpbmcgYnVmZmVyIGlzIG5vdCBDLWNvbnRpZ3VvdXMiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICB2aWV3LT5zdHJpZGVzID0gTlVMTDsKKyAgICB9CisgICAgaWYgKCFSRVFfU0hBUEUoZmxhZ3MpKSB7CisgICAgICAgIC8qIFB5QlVGX1NJTVBMRSBvciBQeUJVRl9XUklUQUJMRTogYXQgdGhpcyBwb2ludCBidWYgaXMgQy1jb250aWd1b3VzLAorICAgICAgICAgICBzbyBiYXNlLT5idWYgPSBuZGJ1Zi0+ZGF0YS4gKi8KKyAgICAgICAgaWYgKHZpZXctPmZvcm1hdCAhPSBOVUxMKSB7CisgICAgICAgICAgICAvKiBQeUJVRl9TSU1QTEV8UHlCVUZfRk9STUFUIGFuZCBQeUJVRl9XUklUQUJMRXxQeUJVRl9GT1JNQVQgZG8KKyAgICAgICAgICAgICAgIG5vdCBtYWtlIHNlbnNlLiAqLworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgICAgICJtZW1vcnl2aWV3OiBjYW5ub3QgY2FzdCB0byB1bnNpZ25lZCBieXRlcyBpZiB0aGUgZm9ybWF0IGZsYWcgIgorICAgICAgICAgICAgICAgICJpcyBwcmVzZW50Iik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgLyogcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSA9IGxlbiBhbmQgY2FsY3NpemUoZm9ybWF0KSA9IGl0ZW1zaXplCisgICAgICAgICAgIGRvIF9ub3RfIGhvbGQgZnJvbSBoZXJlIG9uISAqLworICAgICAgICB2aWV3LT5uZGltID0gMTsKKyAgICAgICAgdmlldy0+c2hhcGUgPSBOVUxMOworICAgIH0KKworCisgICAgdmlldy0+b2JqID0gKFB5T2JqZWN0ICopc2VsZjsKKyAgICBQeV9JTkNSRUYodmlldy0+b2JqKTsKKyAgICBzZWxmLT5leHBvcnRzKys7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK21lbW9yeV9yZWxlYXNlYnVmKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICp2aWV3KQoreworICAgIHNlbGYtPmV4cG9ydHMtLTsKKyAgICByZXR1cm47CisgICAgLyogUHlCdWZmZXJfUmVsZWFzZSgpIGRlY3JlbWVudHMgdmlldy0+b2JqIGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJucy4gKi8KK30KKworLyogQnVmZmVyIG1ldGhvZHMgKi8KK3N0YXRpYyBQeUJ1ZmZlclByb2NzIG1lbW9yeV9hc19idWZmZXIgPSB7CisgICAgKGdldGJ1ZmZlcnByb2MpbWVtb3J5X2dldGJ1ZiwgICAgICAgICAvKiBiZl9nZXRidWZmZXIgKi8KKyAgICAocmVsZWFzZWJ1ZmZlcnByb2MpbWVtb3J5X3JlbGVhc2VidWYsIC8qIGJmX3JlbGVhc2VidWZmZXIgKi8KK307CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgT3B0aW1pemVkIHBhY2svdW5wYWNrIGZvciBhbGwgbmF0aXZlIGZvcm1hdCBzcGVjaWZpZXJzICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICBGaXggZXhjZXB0aW9uczoKKyAgICAgMSkgSW5jbHVkZSBmb3JtYXQgc3RyaW5nIGluIHRoZSBlcnJvciBtZXNzYWdlLgorICAgICAyKSBPdmVyZmxvd0Vycm9yIC0+IFZhbHVlRXJyb3IuCisgICAgIDMpIFRoZSBlcnJvciBtZXNzYWdlIGZyb20gUHlOdW1iZXJfSW5kZXgoKSBpcyBub3QgaWRlYWwuCisqLworc3RhdGljIGludAordHlwZV9lcnJvcl9pbnQoY29uc3QgY2hhciAqZm10KQoreworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICJtZW1vcnl2aWV3OiBpbnZhbGlkIHR5cGUgZm9yIGZvcm1hdCAnJXMnIiwgZm10KTsKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBpbnQKK3ZhbHVlX2Vycm9yX2ludChjb25zdCBjaGFyICpmbXQpCit7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICJtZW1vcnl2aWV3OiBpbnZhbGlkIHZhbHVlIGZvciBmb3JtYXQgJyVzJyIsIGZtdCk7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgaW50CitmaXhfZXJyb3JfaW50KGNvbnN0IGNoYXIgKmZtdCkKK3sKKyAgICBhc3NlcnQoUHlFcnJfT2NjdXJyZWQoKSk7CisgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICByZXR1cm4gdHlwZV9lcnJvcl9pbnQoZm10KTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSB8fAorICAgICAgICAgICAgIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVmFsdWVFcnJvcikpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlX2Vycm9yX2ludChmbXQpOworICAgIH0KKworICAgIHJldHVybiAtMTsKK30KKworLyogQWNjZXB0IGludGVnZXIgb2JqZWN0cyBvciBvYmplY3RzIHdpdGggYW4gX19pbmRleF9fKCkgbWV0aG9kLiAqLworc3RhdGljIGxvbmcKK3B5bG9uZ19hc19sZChQeU9iamVjdCAqaXRlbSkKK3sKKyAgICBQeU9iamVjdCAqdG1wOworICAgIGxvbmcgbGQ7CisKKyAgICB0bXAgPSBQeU51bWJlcl9JbmRleChpdGVtKTsKKyAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGxkID0gUHlMb25nX0FzTG9uZyh0bXApOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiBsZDsKK30KKworc3RhdGljIHVuc2lnbmVkIGxvbmcKK3B5bG9uZ19hc19sdShQeU9iamVjdCAqaXRlbSkKK3sKKyAgICBQeU9iamVjdCAqdG1wOworICAgIHVuc2lnbmVkIGxvbmcgbHU7CisKKyAgICB0bXAgPSBQeU51bWJlcl9JbmRleChpdGVtKTsKKyAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZyktMTsKKworICAgIGx1ID0gUHlMb25nX0FzVW5zaWduZWRMb25nKHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIGx1OworfQorCisjaWZkZWYgSEFWRV9MT05HX0xPTkcKK3N0YXRpYyBQWV9MT05HX0xPTkcKK3B5bG9uZ19hc19sbGQoUHlPYmplY3QgKml0ZW0pCit7CisgICAgUHlPYmplY3QgKnRtcDsKKyAgICBQWV9MT05HX0xPTkcgbGxkOworCisgICAgdG1wID0gUHlOdW1iZXJfSW5kZXgoaXRlbSk7CisgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBsbGQgPSBQeUxvbmdfQXNMb25nTG9uZyh0bXApOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiBsbGQ7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBQWV9MT05HX0xPTkcKK3B5bG9uZ19hc19sbHUoUHlPYmplY3QgKml0ZW0pCit7CisgICAgUHlPYmplY3QgKnRtcDsKKyAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgbGx1OworCisgICAgdG1wID0gUHlOdW1iZXJfSW5kZXgoaXRlbSk7CisgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMTsKKworICAgIGxsdSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodG1wKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4gbGx1OworfQorI2VuZGlmCisKK3N0YXRpYyBQeV9zc2l6ZV90CitweWxvbmdfYXNfemQoUHlPYmplY3QgKml0ZW0pCit7CisgICAgUHlPYmplY3QgKnRtcDsKKyAgICBQeV9zc2l6ZV90IHpkOworCisgICAgdG1wID0gUHlOdW1iZXJfSW5kZXgoaXRlbSk7CisgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICB6ZCA9IFB5TG9uZ19Bc1NzaXplX3QodG1wKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4gemQ7Cit9CisKK3N0YXRpYyBzaXplX3QKK3B5bG9uZ19hc196dShQeU9iamVjdCAqaXRlbSkKK3sKKyAgICBQeU9iamVjdCAqdG1wOworICAgIHNpemVfdCB6dTsKKworICAgIHRtcCA9IFB5TnVtYmVyX0luZGV4KGl0ZW0pOworICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIChzaXplX3QpLTE7CisKKyAgICB6dSA9IFB5TG9uZ19Bc1NpemVfdCh0bXApOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiB6dTsKK30KKworLyogVGltaW5ncyB3aXRoIHRoZSBuZGFycmF5IGZyb20gX3Rlc3RidWZmZXIuYyBpbmRpY2F0ZSB0aGF0IHVzaW5nIHRoZQorICAgc3RydWN0IG1vZHVsZSBpcyBhcm91bmQgMTV4IHNsb3dlciB0aGFuIHRoZSB0d28gZnVuY3Rpb25zIGJlbG93LiAqLworCisjZGVmaW5lIFVOUEFDS19TSU5HTEUoZGVzdCwgcHRyLCB0eXBlKSBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0eXBlIHg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbWVtY3B5KChjaGFyICopJngsIHB0ciwgc2l6ZW9mIHgpOyBcCisgICAgICAgIGRlc3QgPSB4OyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKy8qIFVucGFjayBhIHNpbmdsZSBpdGVtLiAnZm10JyBjYW4gYmUgYW55IG5hdGl2ZSBmb3JtYXQgY2hhcmFjdGVyIGluIHN0cnVjdAorICAgbW9kdWxlIHN5bnRheC4gVGhpcyBmdW5jdGlvbiBpcyB2ZXJ5IHNlbnNpdGl2ZSB0byBzbWFsbCBjaGFuZ2VzLiBXaXRoIHRoaXMKKyAgIGxheW91dCBnY2MgYXV0b21hdGljYWxseSBnZW5lcmF0ZXMgYSBmYXN0IGp1bXAgdGFibGUuICovCitQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKK3VucGFja19zaW5nbGUoY29uc3QgY2hhciAqcHRyLCBjb25zdCBjaGFyICpmbXQpCit7CisgICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGxsdTsKKyAgICB1bnNpZ25lZCBsb25nIGx1OworICAgIHNpemVfdCB6dTsKKyAgICBQWV9MT05HX0xPTkcgbGxkOworICAgIGxvbmcgbGQ7CisgICAgUHlfc3NpemVfdCB6ZDsKKyAgICBkb3VibGUgZDsKKyAgICB1bnNpZ25lZCBjaGFyIHVjOworICAgIHZvaWQgKnA7CisKKyAgICBzd2l0Y2ggKGZtdFswXSkgeworCisgICAgLyogc2lnbmVkIGludGVnZXJzIGFuZCBmYXN0IHBhdGggZm9yICdCJyAqLworICAgIGNhc2UgJ0InOiB1YyA9ICooKHVuc2lnbmVkIGNoYXIgKilwdHIpOyBnb3RvIGNvbnZlcnRfdWM7CisgICAgY2FzZSAnYic6IGxkID0gICAqKChzaWduZWQgY2hhciAqKXB0cik7IGdvdG8gY29udmVydF9sZDsKKyAgICBjYXNlICdoJzogVU5QQUNLX1NJTkdMRShsZCwgcHRyLCBzaG9ydCk7IGdvdG8gY29udmVydF9sZDsKKyAgICBjYXNlICdpJzogVU5QQUNLX1NJTkdMRShsZCwgcHRyLCBpbnQpOyBnb3RvIGNvbnZlcnRfbGQ7CisgICAgY2FzZSAnbCc6IFVOUEFDS19TSU5HTEUobGQsIHB0ciwgbG9uZyk7IGdvdG8gY29udmVydF9sZDsKKworICAgIC8qIGJvb2xlYW4gKi8KKyAgICAjaWZkZWYgSEFWRV9DOTlfQk9PTAorICAgIGNhc2UgJz8nOiBVTlBBQ0tfU0lOR0xFKGxkLCBwdHIsIF9Cb29sKTsgZ290byBjb252ZXJ0X2Jvb2w7CisgICAgI2Vsc2UKKyAgICBjYXNlICc/JzogVU5QQUNLX1NJTkdMRShsZCwgcHRyLCBjaGFyKTsgZ290byBjb252ZXJ0X2Jvb2w7CisgICAgI2VuZGlmCisKKyAgICAvKiB1bnNpZ25lZCBpbnRlZ2VycyAqLworICAgIGNhc2UgJ0gnOiBVTlBBQ0tfU0lOR0xFKGx1LCBwdHIsIHVuc2lnbmVkIHNob3J0KTsgZ290byBjb252ZXJ0X2x1OworICAgIGNhc2UgJ0knOiBVTlBBQ0tfU0lOR0xFKGx1LCBwdHIsIHVuc2lnbmVkIGludCk7IGdvdG8gY29udmVydF9sdTsKKyAgICBjYXNlICdMJzogVU5QQUNLX1NJTkdMRShsdSwgcHRyLCB1bnNpZ25lZCBsb25nKTsgZ290byBjb252ZXJ0X2x1OworCisgICAgLyogbmF0aXZlIDY0LWJpdCAqLworICAgICNpZmRlZiBIQVZFX0xPTkdfTE9ORworICAgIGNhc2UgJ3EnOiBVTlBBQ0tfU0lOR0xFKGxsZCwgcHRyLCBQWV9MT05HX0xPTkcpOyBnb3RvIGNvbnZlcnRfbGxkOworICAgIGNhc2UgJ1EnOiBVTlBBQ0tfU0lOR0xFKGxsdSwgcHRyLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpOyBnb3RvIGNvbnZlcnRfbGx1OworICAgICNlbmRpZgorCisgICAgLyogc3NpemVfdCBhbmQgc2l6ZV90ICovCisgICAgY2FzZSAnbic6IFVOUEFDS19TSU5HTEUoemQsIHB0ciwgUHlfc3NpemVfdCk7IGdvdG8gY29udmVydF96ZDsKKyAgICBjYXNlICdOJzogVU5QQUNLX1NJTkdMRSh6dSwgcHRyLCBzaXplX3QpOyBnb3RvIGNvbnZlcnRfenU7CisKKyAgICAvKiBmbG9hdHMgKi8KKyAgICBjYXNlICdmJzogVU5QQUNLX1NJTkdMRShkLCBwdHIsIGZsb2F0KTsgZ290byBjb252ZXJ0X2RvdWJsZTsKKyAgICBjYXNlICdkJzogVU5QQUNLX1NJTkdMRShkLCBwdHIsIGRvdWJsZSk7IGdvdG8gY29udmVydF9kb3VibGU7CisKKyAgICAvKiBieXRlcyBvYmplY3QgKi8KKyAgICBjYXNlICdjJzogZ290byBjb252ZXJ0X2J5dGVzOworCisgICAgLyogcG9pbnRlciAqLworICAgIGNhc2UgJ1AnOiBVTlBBQ0tfU0lOR0xFKHAsIHB0ciwgdm9pZCAqKTsgZ290byBjb252ZXJ0X3BvaW50ZXI7CisKKyAgICAvKiBkZWZhdWx0ICovCisgICAgZGVmYXVsdDogZ290byBlcnJfZm9ybWF0OworICAgIH0KKworY29udmVydF91YzoKKyAgICAvKiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygpIGlzIHNsb3dlciAqLworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcodWMpOworY29udmVydF9sZDoKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGxkKTsKK2NvbnZlcnRfbHU6CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKGx1KTsKK2NvbnZlcnRfbGxkOgorICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKGxsZCk7Citjb252ZXJ0X2xsdToKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKGxsdSk7Citjb252ZXJ0X3pkOgorICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoemQpOworY29udmVydF96dToKKyAgICByZXR1cm4gUHlMb25nX0Zyb21TaXplX3QoenUpOworY29udmVydF9kb3VibGU6CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShkKTsKK2NvbnZlcnRfYm9vbDoKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKGxkKTsKK2NvbnZlcnRfYnl0ZXM6CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocHRyLCAxKTsKK2NvbnZlcnRfcG9pbnRlcjoKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Wb2lkUHRyKHApOworZXJyX2Zvcm1hdDoKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgIm1lbW9yeXZpZXc6IGZvcm1hdCAlcyBub3Qgc3VwcG9ydGVkIiwgZm10KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworI2RlZmluZSBQQUNLX1NJTkdMRShwdHIsIHNyYywgdHlwZSkgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0eXBlIHg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB4ID0gKHR5cGUpc3JjOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtZW1jcHkocHRyLCAoY2hhciAqKSZ4LCBzaXplb2YgeCk7ICAgXAorICAgIH0gd2hpbGUgKDApCisKKy8qIFBhY2sgYSBzaW5nbGUgaXRlbS4gJ2ZtdCcgY2FuIGJlIGFueSBuYXRpdmUgZm9ybWF0IGNoYXJhY3RlciBpbgorICAgc3RydWN0IG1vZHVsZSBzeW50YXguICovCitzdGF0aWMgaW50CitwYWNrX3NpbmdsZShjaGFyICpwdHIsIFB5T2JqZWN0ICppdGVtLCBjb25zdCBjaGFyICpmbXQpCit7CisgICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGxsdTsKKyAgICB1bnNpZ25lZCBsb25nIGx1OworICAgIHNpemVfdCB6dTsKKyAgICBQWV9MT05HX0xPTkcgbGxkOworICAgIGxvbmcgbGQ7CisgICAgUHlfc3NpemVfdCB6ZDsKKyAgICBkb3VibGUgZDsKKyAgICB2b2lkICpwOworCisgICAgc3dpdGNoIChmbXRbMF0pIHsKKyAgICAvKiBzaWduZWQgaW50ZWdlcnMgKi8KKyAgICBjYXNlICdiJzogY2FzZSAnaCc6IGNhc2UgJ2knOiBjYXNlICdsJzoKKyAgICAgICAgbGQgPSBweWxvbmdfYXNfbGQoaXRlbSk7CisgICAgICAgIGlmIChsZCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7CisgICAgICAgIHN3aXRjaCAoZm10WzBdKSB7CisgICAgICAgIGNhc2UgJ2InOgorICAgICAgICAgICAgaWYgKGxkIDwgU0NIQVJfTUlOIHx8IGxkID4gU0NIQVJfTUFYKSBnb3RvIGVycl9yYW5nZTsKKyAgICAgICAgICAgICooKHNpZ25lZCBjaGFyICopcHRyKSA9IChzaWduZWQgY2hhcilsZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJ2gnOgorICAgICAgICAgICAgaWYgKGxkIDwgU0hSVF9NSU4gfHwgbGQgPiBTSFJUX01BWCkgZ290byBlcnJfcmFuZ2U7CisgICAgICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxkLCBzaG9ydCk7IGJyZWFrOworICAgICAgICBjYXNlICdpJzoKKyAgICAgICAgICAgIGlmIChsZCA8IElOVF9NSU4gfHwgbGQgPiBJTlRfTUFYKSBnb3RvIGVycl9yYW5nZTsKKyAgICAgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGQsIGludCk7IGJyZWFrOworICAgICAgICBkZWZhdWx0OiAvKiAnbCcgKi8KKyAgICAgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGQsIGxvbmcpOyBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIC8qIHVuc2lnbmVkIGludGVnZXJzICovCisgICAgY2FzZSAnQic6IGNhc2UgJ0gnOiBjYXNlICdJJzogY2FzZSAnTCc6CisgICAgICAgIGx1ID0gcHlsb25nX2FzX2x1KGl0ZW0pOworICAgICAgICBpZiAobHUgPT0gKHVuc2lnbmVkIGxvbmcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyX29jY3VycmVkOworICAgICAgICBzd2l0Y2ggKGZtdFswXSkgeworICAgICAgICBjYXNlICdCJzoKKyAgICAgICAgICAgIGlmIChsdSA+IFVDSEFSX01BWCkgZ290byBlcnJfcmFuZ2U7CisgICAgICAgICAgICAqKCh1bnNpZ25lZCBjaGFyICopcHRyKSA9ICh1bnNpZ25lZCBjaGFyKWx1OyBicmVhazsKKyAgICAgICAgY2FzZSAnSCc6CisgICAgICAgICAgICBpZiAobHUgPiBVU0hSVF9NQVgpIGdvdG8gZXJyX3JhbmdlOworICAgICAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsdSwgdW5zaWduZWQgc2hvcnQpOyBicmVhazsKKyAgICAgICAgY2FzZSAnSSc6CisgICAgICAgICAgICBpZiAobHUgPiBVSU5UX01BWCkgZ290byBlcnJfcmFuZ2U7CisgICAgICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGx1LCB1bnNpZ25lZCBpbnQpOyBicmVhazsKKyAgICAgICAgZGVmYXVsdDogLyogJ0wnICovCisgICAgICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGx1LCB1bnNpZ25lZCBsb25nKTsgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAvKiBuYXRpdmUgNjQtYml0ICovCisgICAgI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgY2FzZSAncSc6CisgICAgICAgIGxsZCA9IHB5bG9uZ19hc19sbGQoaXRlbSk7CisgICAgICAgIGlmIChsbGQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyX29jY3VycmVkOworICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxsZCwgUFlfTE9OR19MT05HKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnUSc6CisgICAgICAgIGxsdSA9IHB5bG9uZ19hc19sbHUoaXRlbSk7CisgICAgICAgIGlmIChsbHUgPT0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7CisgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGx1LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpOworICAgICAgICBicmVhazsKKyAgICAjZW5kaWYKKworICAgIC8qIHNzaXplX3QgYW5kIHNpemVfdCAqLworICAgIGNhc2UgJ24nOgorICAgICAgICB6ZCA9IHB5bG9uZ19hc196ZChpdGVtKTsKKyAgICAgICAgaWYgKHpkID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycl9vY2N1cnJlZDsKKyAgICAgICAgUEFDS19TSU5HTEUocHRyLCB6ZCwgUHlfc3NpemVfdCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ04nOgorICAgICAgICB6dSA9IHB5bG9uZ19hc196dShpdGVtKTsKKyAgICAgICAgaWYgKHp1ID09IChzaXplX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyX29jY3VycmVkOworICAgICAgICBQQUNLX1NJTkdMRShwdHIsIHp1LCBzaXplX3QpOworICAgICAgICBicmVhazsKKworICAgIC8qIGZsb2F0cyAqLworICAgIGNhc2UgJ2YnOiBjYXNlICdkJzoKKyAgICAgICAgZCA9IFB5RmxvYXRfQXNEb3VibGUoaXRlbSk7CisgICAgICAgIGlmIChkID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyX29jY3VycmVkOworICAgICAgICBpZiAoZm10WzBdID09ICdmJykgeworICAgICAgICAgICAgUEFDS19TSU5HTEUocHRyLCBkLCBmbG9hdCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGQsIGRvdWJsZSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAvKiBib29sICovCisgICAgY2FzZSAnPyc6CisgICAgICAgIGxkID0gUHlPYmplY3RfSXNUcnVlKGl0ZW0pOworICAgICAgICBpZiAobGQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOyAvKiBwcmVzZXJ2ZSBvcmlnaW5hbCBlcnJvciAqLworICAgICNpZmRlZiBIQVZFX0M5OV9CT09MCisgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGQsIF9Cb29sKTsKKyAgICAjZWxzZQorICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxkLCBjaGFyKTsKKyAgICAjZW5kaWYKKyAgICAgICAgIGJyZWFrOworCisgICAgLyogYnl0ZXMgb2JqZWN0ICovCisgICAgY2FzZSAnYyc6CisgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhpdGVtKSkKKyAgICAgICAgICAgIHJldHVybiB0eXBlX2Vycm9yX2ludChmbXQpOworICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRShpdGVtKSAhPSAxKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlX2Vycm9yX2ludChmbXQpOworICAgICAgICAqcHRyID0gUHlCeXRlc19BU19TVFJJTkcoaXRlbSlbMF07CisgICAgICAgIGJyZWFrOworCisgICAgLyogcG9pbnRlciAqLworICAgIGNhc2UgJ1AnOgorICAgICAgICBwID0gUHlMb25nX0FzVm9pZFB0cihpdGVtKTsKKyAgICAgICAgaWYgKHAgPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7CisgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgcCwgdm9pZCAqKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAvKiBkZWZhdWx0ICovCisgICAgZGVmYXVsdDogZ290byBlcnJfZm9ybWF0OworICAgIH0KKworICAgIHJldHVybiAwOworCitlcnJfb2NjdXJyZWQ6CisgICAgcmV0dXJuIGZpeF9lcnJvcl9pbnQoZm10KTsKK2Vycl9yYW5nZToKKyAgICByZXR1cm4gdmFsdWVfZXJyb3JfaW50KGZtdCk7CitlcnJfZm9ybWF0OgorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAibWVtb3J5dmlldzogZm9ybWF0ICVzIG5vdCBzdXBwb3J0ZWQiLCBmbXQpOworICAgIHJldHVybiAtMTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2sgdXNpbmcgdGhlIHN0cnVjdCBtb2R1bGUgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIEZvciByZWFzb25hYmxlIHBlcmZvcm1hbmNlIGl0IGlzIG5lY2Vzc2FyeSB0byBjYWNoZSBhbGwgb2JqZWN0cyByZXF1aXJlZAorICAgZm9yIHVucGFja2luZy4gQW4gdW5wYWNrZXIgY2FuIGhhbmRsZSB0aGUgZm9ybWF0IHBhc3NlZCB0byB1bnBhY2tfZnJvbSgpLgorICAgSW52YXJpYW50OiBBbGwgcG9pbnRlciBmaWVsZHMgb2YgdGhlIHN0cnVjdCBzaG91bGQgZWl0aGVyIGJlIE5VTEwgb3IgdmFsaWQKKyAgIHBvaW50ZXJzLiAqLworc3RydWN0IHVucGFja2VyIHsKKyAgICBQeU9iamVjdCAqdW5wYWNrX2Zyb207IC8qIFN0cnVjdC51bnBhY2tfZnJvbShmb3JtYXQpICovCisgICAgUHlPYmplY3QgKm12aWV3OyAgICAgICAvKiBjYWNoZWQgbWVtb3J5dmlldyAqLworICAgIGNoYXIgKml0ZW07ICAgICAgICAgICAgLyogYnVmZmVyIGZvciBtdmlldyAqLworICAgIFB5X3NzaXplX3QgaXRlbXNpemU7ICAgLyogbGVuKGl0ZW0pICovCit9OworCitzdGF0aWMgc3RydWN0IHVucGFja2VyICoKK3VucGFja2VyX25ldyh2b2lkKQoreworICAgIHN0cnVjdCB1bnBhY2tlciAqeCA9IFB5TWVtX01hbGxvYyhzaXplb2YgKngpOworCisgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICB4LT51bnBhY2tfZnJvbSA9IE5VTEw7CisgICAgeC0+bXZpZXcgPSBOVUxMOworICAgIHgtPml0ZW0gPSBOVUxMOworICAgIHgtPml0ZW1zaXplID0gMDsKKworICAgIHJldHVybiB4OworfQorCitzdGF0aWMgdm9pZAordW5wYWNrZXJfZnJlZShzdHJ1Y3QgdW5wYWNrZXIgKngpCit7CisgICAgaWYgKHgpIHsKKyAgICAgICAgUHlfWERFQ1JFRih4LT51bnBhY2tfZnJvbSk7CisgICAgICAgIFB5X1hERUNSRUYoeC0+bXZpZXcpOworICAgICAgICBQeU1lbV9GcmVlKHgtPml0ZW0pOworICAgICAgICBQeU1lbV9GcmVlKHgpOworICAgIH0KK30KKworLyogUmV0dXJuIGEgbmV3IHVucGFja2VyIGZvciB0aGUgZ2l2ZW4gZm9ybWF0LiAqLworc3RhdGljIHN0cnVjdCB1bnBhY2tlciAqCitzdHJ1Y3RfZ2V0X3VucGFja2VyKGNvbnN0IGNoYXIgKmZtdCwgUHlfc3NpemVfdCBpdGVtc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqc3RydWN0bW9kdWxlOyAgICAgLyogWFhYIGNhY2hlIHRoZXNlIHR3byAqLworICAgIFB5T2JqZWN0ICpTdHJ1Y3QgPSBOVUxMOyAgICAvKiBYWFggaW4gZ2xvYmFscz8gICAgICovCisgICAgUHlPYmplY3QgKnN0cnVjdG9iaiA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZvcm1hdCA9IE5VTEw7CisgICAgc3RydWN0IHVucGFja2VyICp4ID0gTlVMTDsKKworICAgIHN0cnVjdG1vZHVsZSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgic3RydWN0Iik7CisgICAgaWYgKHN0cnVjdG1vZHVsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFN0cnVjdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RydWN0bW9kdWxlLCAiU3RydWN0Iik7CisgICAgUHlfREVDUkVGKHN0cnVjdG1vZHVsZSk7CisgICAgaWYgKFN0cnVjdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHggPSB1bnBhY2tlcl9uZXcoKTsKKyAgICBpZiAoeCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgZm9ybWF0ID0gUHlCeXRlc19Gcm9tU3RyaW5nKGZtdCk7CisgICAgaWYgKGZvcm1hdCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgc3RydWN0b2JqID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhTdHJ1Y3QsIGZvcm1hdCwgTlVMTCk7CisgICAgaWYgKHN0cnVjdG9iaiA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgeC0+dW5wYWNrX2Zyb20gPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHN0cnVjdG9iaiwgInVucGFja19mcm9tIik7CisgICAgaWYgKHgtPnVucGFja19mcm9tID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICB4LT5pdGVtID0gUHlNZW1fTWFsbG9jKGl0ZW1zaXplKTsKKyAgICBpZiAoeC0+aXRlbSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHgtPml0ZW1zaXplID0gaXRlbXNpemU7CisKKyAgICB4LT5tdmlldyA9IFB5TWVtb3J5Vmlld19Gcm9tTWVtb3J5KHgtPml0ZW0sIGl0ZW1zaXplLCBQeUJVRl9XUklURSk7CisgICAgaWYgKHgtPm12aWV3ID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKworb3V0OgorICAgIFB5X1hERUNSRUYoU3RydWN0KTsKKyAgICBQeV9YREVDUkVGKGZvcm1hdCk7CisgICAgUHlfWERFQ1JFRihzdHJ1Y3RvYmopOworICAgIHJldHVybiB4OworCitlcnJvcjoKKyAgICB1bnBhY2tlcl9mcmVlKHgpOworICAgIHggPSBOVUxMOworICAgIGdvdG8gb3V0OworfQorCisvKiB1bnBhY2sgYSBzaW5nbGUgaXRlbSAqLworc3RhdGljIFB5T2JqZWN0ICoKK3N0cnVjdF91bnBhY2tfc2luZ2xlKGNvbnN0IGNoYXIgKnB0ciwgc3RydWN0IHVucGFja2VyICp4KQoreworICAgIFB5T2JqZWN0ICp2OworCisgICAgbWVtY3B5KHgtPml0ZW0sIHB0ciwgeC0+aXRlbXNpemUpOworICAgIHYgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHgtPnVucGFja19mcm9tLCB4LT5tdmlldywgTlVMTCk7CisgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlUdXBsZV9HRVRfU0laRSh2KSA9PSAxKSB7CisgICAgICAgIFB5T2JqZWN0ICp0bXAgPSBQeVR1cGxlX0dFVF9JVEVNKHYsIDApOworICAgICAgICBQeV9JTkNSRUYodG1wKTsKKyAgICAgICAgUHlfREVDUkVGKHYpOworICAgICAgICByZXR1cm4gdG1wOworICAgIH0KKworICAgIHJldHVybiB2OworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXByZXNlbnRhdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogYWxsb3cgZXhwbGljaXQgZm9ybSBvZiBuYXRpdmUgZm9ybWF0ICovCitQeV9MT0NBTF9JTkxJTkUoY29uc3QgY2hhciAqKQorYWRqdXN0X2ZtdChjb25zdCBQeV9idWZmZXIgKnZpZXcpCit7CisgICAgY29uc3QgY2hhciAqZm10OworCisgICAgZm10ID0gKHZpZXctPmZvcm1hdFswXSA9PSAnQCcpID8gdmlldy0+Zm9ybWF0KzEgOiB2aWV3LT5mb3JtYXQ7CisgICAgaWYgKGZtdFswXSAmJiBmbXRbMV0gPT0gJ1wwJykKKyAgICAgICAgcmV0dXJuIGZtdDsKKworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAibWVtb3J5dmlldzogdW5zdXBwb3J0ZWQgZm9ybWF0ICVzIiwgdmlldy0+Zm9ybWF0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyogQmFzZSBjYXNlIGZvciBtdWx0aS1kaW1lbnNpb25hbCB1bnBhY2tpbmcuIEFzc3VtcHRpb246IG5kaW0gPT0gMS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCit0b2xpc3RfYmFzZShjb25zdCBjaGFyICpwdHIsIGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlLAorICAgICAgICAgICAgY29uc3QgUHlfc3NpemVfdCAqc3RyaWRlcywgY29uc3QgUHlfc3NpemVfdCAqc3Vib2Zmc2V0cywKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZtdCkKK3sKKyAgICBQeU9iamVjdCAqbHN0LCAqaXRlbTsKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBsc3QgPSBQeUxpc3RfTmV3KHNoYXBlWzBdKTsKKyAgICBpZiAobHN0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZm9yIChpID0gMDsgaSA8IHNoYXBlWzBdOyBwdHIrPXN0cmlkZXNbMF0sIGkrKykgeworICAgICAgICBjb25zdCBjaGFyICp4cHRyID0gQURKVVNUX1BUUihwdHIsIHN1Ym9mZnNldHMpOworICAgICAgICBpdGVtID0gdW5wYWNrX3NpbmdsZSh4cHRyLCBmbXQpOworICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobHN0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5TGlzdF9TRVRfSVRFTShsc3QsIGksIGl0ZW0pOworICAgIH0KKworICAgIHJldHVybiBsc3Q7Cit9CisKKy8qIFVucGFjayBhIG11bHRpLWRpbWVuc2lvbmFsIGFycmF5IGludG8gYSBuZXN0ZWQgbGlzdC4KKyAgIEFzc3VtcHRpb246IG5kaW0gPj0gMS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCit0b2xpc3RfcmVjKGNvbnN0IGNoYXIgKnB0ciwgUHlfc3NpemVfdCBuZGltLCBjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSwKKyAgICAgICAgICAgY29uc3QgUHlfc3NpemVfdCAqc3RyaWRlcywgY29uc3QgUHlfc3NpemVfdCAqc3Vib2Zmc2V0cywKKyAgICAgICAgICAgY29uc3QgY2hhciAqZm10KQoreworICAgIFB5T2JqZWN0ICpsc3QsICppdGVtOworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGFzc2VydChuZGltID49IDEpOworICAgIGFzc2VydChzaGFwZSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoc3RyaWRlcyAhPSBOVUxMKTsKKworICAgIGlmIChuZGltID09IDEpCisgICAgICAgIHJldHVybiB0b2xpc3RfYmFzZShwdHIsIHNoYXBlLCBzdHJpZGVzLCBzdWJvZmZzZXRzLCBmbXQpOworCisgICAgbHN0ID0gUHlMaXN0X05ldyhzaGFwZVswXSk7CisgICAgaWYgKGxzdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBzaGFwZVswXTsgcHRyKz1zdHJpZGVzWzBdLCBpKyspIHsKKyAgICAgICAgY29uc3QgY2hhciAqeHB0ciA9IEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzKTsKKyAgICAgICAgaXRlbSA9IHRvbGlzdF9yZWMoeHB0ciwgbmRpbS0xLCBzaGFwZSsxLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGVzKzEsIHN1Ym9mZnNldHMgPyBzdWJvZmZzZXRzKzEgOiBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQpOworICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobHN0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5TGlzdF9TRVRfSVRFTShsc3QsIGksIGl0ZW0pOworICAgIH0KKworICAgIHJldHVybiBsc3Q7Cit9CisKKy8qIFJldHVybiBhIGxpc3QgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lbW9yeXZpZXcuIEN1cnJlbnRseSBvbmx5IGJ1ZmZlcnMKKyAgIHdpdGggbmF0aXZlIGZvcm1hdCBzdHJpbmdzIGFyZSBzdXBwb3J0ZWQuICovCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X3RvbGlzdChQeU1lbW9yeVZpZXdPYmplY3QgKm12LCBQeU9iamVjdCAqbm9hcmdzKQoreworICAgIGNvbnN0IFB5X2J1ZmZlciAqdmlldyA9ICYobXYtPnZpZXcpOworICAgIGNvbnN0IGNoYXIgKmZtdDsKKworICAgIENIRUNLX1JFTEVBU0VEKG12KTsKKworICAgIGZtdCA9IGFkanVzdF9mbXQodmlldyk7CisgICAgaWYgKGZtdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAodmlldy0+bmRpbSA9PSAwKSB7CisgICAgICAgIHJldHVybiB1bnBhY2tfc2luZ2xlKHZpZXctPmJ1ZiwgZm10KTsKKyAgICB9CisgICAgZWxzZSBpZiAodmlldy0+bmRpbSA9PSAxKSB7CisgICAgICAgIHJldHVybiB0b2xpc3RfYmFzZSh2aWV3LT5idWYsIHZpZXctPnNoYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldy0+c3RyaWRlcywgdmlldy0+c3Vib2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gdG9saXN0X3JlYyh2aWV3LT5idWYsIHZpZXctPm5kaW0sIHZpZXctPnNoYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3LT5zdHJpZGVzLCB2aWV3LT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQpOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV90b2J5dGVzKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIFB5X2J1ZmZlciAqc3JjID0gVklFV19BRERSKHNlbGYpOworICAgIFB5T2JqZWN0ICpieXRlcyA9IE5VTEw7CisKKyAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKKworICAgIGlmIChNVl9DX0NPTlRJR1VPVVMoc2VsZi0+ZmxhZ3MpKSB7CisgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHNyYy0+YnVmLCBzcmMtPmxlbik7CisgICAgfQorCisgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNyYy0+bGVuKTsKKyAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoYnVmZmVyX3RvX2NvbnRpZ3VvdXMoUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCBzcmMsICdDJykgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBieXRlczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9yZXByKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKK3sKKyAgICBpZiAoc2VsZi0+ZmxhZ3MgJiBfUHlfTUVNT1JZVklFV19SRUxFQVNFRCkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8cmVsZWFzZWQgbWVtb3J5IGF0ICVwPiIsIHNlbGYpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8bWVtb3J5IGF0ICVwPiIsIHNlbGYpOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleGluZyBhbmQgc2xpY2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogR2V0IHRoZSBwb2ludGVyIHRvIHRoZSBpdGVtIGF0IGluZGV4LiAqLworc3RhdGljIGNoYXIgKgorcHRyX2Zyb21faW5kZXgoUHlfYnVmZmVyICp2aWV3LCBQeV9zc2l6ZV90IGluZGV4KQoreworICAgIGNoYXIgKnB0cjsKKyAgICBQeV9zc2l6ZV90IG5pdGVtczsgLyogaXRlbXMgaW4gdGhlIGZpcnN0IGRpbWVuc2lvbiAqLworCisgICAgYXNzZXJ0KHZpZXctPnNoYXBlKTsKKyAgICBhc3NlcnQodmlldy0+c3RyaWRlcyk7CisKKyAgICBuaXRlbXMgPSB2aWV3LT5zaGFwZVswXTsKKyAgICBpZiAoaW5kZXggPCAwKSB7CisgICAgICAgIGluZGV4ICs9IG5pdGVtczsKKyAgICB9CisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBuaXRlbXMpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJpbmRleCBvdXQgb2YgYm91bmRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHB0ciA9IChjaGFyICopdmlldy0+YnVmOworICAgIHB0ciArPSB2aWV3LT5zdHJpZGVzWzBdICogaW5kZXg7CisKKyAgICBwdHIgPSBBREpVU1RfUFRSKHB0ciwgdmlldy0+c3Vib2Zmc2V0cyk7CisKKyAgICByZXR1cm4gcHRyOworfQorCisvKiBSZXR1cm4gdGhlIGl0ZW0gYXQgaW5kZXguIEluIGEgb25lLWRpbWVuc2lvbmFsIHZpZXcsIHRoaXMgaXMgYW4gb2JqZWN0CisgICB3aXRoIHRoZSB0eXBlIHNwZWNpZmllZCBieSB2aWV3LT5mb3JtYXQuIE90aGVyd2lzZSwgdGhlIGl0ZW0gaXMgYSBzdWItdmlldy4KKyAgIFRoZSBmdW5jdGlvbiBpcyB1c2VkIGluIG1lbW9yeV9zdWJzY3JpcHQoKSBhbmQgbWVtb3J5X2FzX3NlcXVlbmNlLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9pdGVtKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCkKK3sKKyAgICBQeV9idWZmZXIgKnZpZXcgPSAmKHNlbGYtPnZpZXcpOworICAgIGNvbnN0IGNoYXIgKmZtdDsKKworICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOworCisgICAgZm10ID0gYWRqdXN0X2ZtdCh2aWV3KTsKKyAgICBpZiAoZm10ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHZpZXctPm5kaW0gPT0gMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiaW52YWxpZCBpbmRleGluZyBvZiAwLWRpbSBtZW1vcnkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICh2aWV3LT5uZGltID09IDEpIHsKKyAgICAgICAgY2hhciAqcHRyID0gcHRyX2Zyb21faW5kZXgodmlldywgaW5kZXgpOworICAgICAgICBpZiAocHRyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIHVucGFja19zaW5nbGUocHRyLCBmbXQpOworICAgIH0KKworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAibXVsdGktZGltZW5zaW9uYWwgc3ViLXZpZXdzIGFyZSBub3QgaW1wbGVtZW50ZWQiKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK2luaXRfc2xpY2UoUHlfYnVmZmVyICpiYXNlLCBQeU9iamVjdCAqa2V5LCBpbnQgZGltKQoreworICAgIFB5X3NzaXplX3Qgc3RhcnQsIHN0b3AsIHN0ZXAsIHNsaWNlbGVuZ3RoOworCisgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KGtleSwgYmFzZS0+c2hhcGVbZGltXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmc3RvcCwgJnN0ZXAsICZzbGljZWxlbmd0aCkgPCAwKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKworICAgIGlmIChiYXNlLT5zdWJvZmZzZXRzID09IE5VTEwgfHwgZGltID09IDApIHsKKyAgICBhZGp1c3RfYnVmOgorICAgICAgICBiYXNlLT5idWYgPSAoY2hhciAqKWJhc2UtPmJ1ZiArIGJhc2UtPnN0cmlkZXNbZGltXSAqIHN0YXJ0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfc3NpemVfdCBuID0gZGltLTE7CisgICAgICAgIHdoaWxlIChuID49IDAgJiYgYmFzZS0+c3Vib2Zmc2V0c1tuXSA8IDApCisgICAgICAgICAgICBuLS07CisgICAgICAgIGlmIChuIDwgMCkKKyAgICAgICAgICAgIGdvdG8gYWRqdXN0X2J1ZjsgLyogYWxsIHN1Ym9mZnNldHMgYXJlIG5lZ2F0aXZlICovCisgICAgICAgIGJhc2UtPnN1Ym9mZnNldHNbbl0gPSBiYXNlLT5zdWJvZmZzZXRzW25dICsgYmFzZS0+c3RyaWRlc1tkaW1dICogc3RhcnQ7CisgICAgfQorICAgIGJhc2UtPnNoYXBlW2RpbV0gPSBzbGljZWxlbmd0aDsKKyAgICBiYXNlLT5zdHJpZGVzW2RpbV0gPSBiYXNlLT5zdHJpZGVzW2RpbV0gKiBzdGVwOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2lzX211bHRpc2xpY2UoUHlPYmplY3QgKmtleSkKK3sKKyAgICBQeV9zc2l6ZV90IHNpemUsIGk7CisKKyAgICBpZiAoIVB5VHVwbGVfQ2hlY2soa2V5KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgc2l6ZSA9IFB5VHVwbGVfR0VUX1NJWkUoa2V5KTsKKyAgICBpZiAoc2l6ZSA9PSAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnggPSBQeVR1cGxlX0dFVF9JVEVNKGtleSwgaSk7CisgICAgICAgIGlmICghUHlTbGljZV9DaGVjayh4KSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworLyogbXZbb2JqXSByZXR1cm5zIGFuIG9iamVjdCBob2xkaW5nIHRoZSBkYXRhIGZvciBvbmUgZWxlbWVudCBpZiBvYmoKKyAgIGZ1bGx5IGluZGV4ZXMgdGhlIG1lbW9yeXZpZXcgb3IgYW5vdGhlciBtZW1vcnl2aWV3IG9iamVjdCBpZiBpdAorICAgZG9lcyBub3QuCisKKyAgIDAtZCBtZW1vcnl2aWV3IG9iamVjdHMgY2FuIGJlIHJlZmVyZW5jZWQgdXNpbmcgbXZbLi4uXSBvciBtdlsoKV0KKyAgIGJ1dCBub3Qgd2l0aCBhbnl0aGluZyBlbHNlLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9zdWJzY3JpcHQoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5KQoreworICAgIFB5X2J1ZmZlciAqdmlldzsKKyAgICB2aWV3ID0gJihzZWxmLT52aWV3KTsKKyAgICAKKyAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKKworICAgIGlmICh2aWV3LT5uZGltID09IDApIHsKKyAgICAgICAgaWYgKFB5VHVwbGVfQ2hlY2soa2V5KSAmJiBQeVR1cGxlX0dFVF9TSVpFKGtleSkgPT0gMCkgeworICAgICAgICAgICAgY29uc3QgY2hhciAqZm10ID0gYWRqdXN0X2ZtdCh2aWV3KTsKKyAgICAgICAgICAgIGlmIChmbXQgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiB1bnBhY2tfc2luZ2xlKHZpZXctPmJ1ZiwgZm10KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChrZXkgPT0gUHlfRWxsaXBzaXMpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBpbmRleGluZyBvZiAwLWRpbSBtZW1vcnkiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKFB5SW5kZXhfQ2hlY2soa2V5KSkgeworICAgICAgICBQeV9zc2l6ZV90IGluZGV4OworICAgICAgICBpbmRleCA9IFB5TnVtYmVyX0FzU3NpemVfdChrZXksIFB5RXhjX0luZGV4RXJyb3IpOworICAgICAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gbWVtb3J5X2l0ZW0oc2VsZiwgaW5kZXgpOworICAgIH0KKyAgICBlbHNlIGlmIChQeVNsaWNlX0NoZWNrKGtleSkpIHsKKyAgICAgICAgUHlNZW1vcnlWaWV3T2JqZWN0ICpzbGljZWQ7CisKKyAgICAgICAgc2xpY2VkID0gKFB5TWVtb3J5Vmlld09iamVjdCAqKW1idWZfYWRkX3ZpZXcoc2VsZi0+bWJ1Ziwgdmlldyk7CisgICAgICAgIGlmIChzbGljZWQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGlmIChpbml0X3NsaWNlKCZzbGljZWQtPnZpZXcsIGtleSwgMCkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2xpY2VkKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGluaXRfbGVuKCZzbGljZWQtPnZpZXcpOworICAgICAgICBpbml0X2ZsYWdzKHNsaWNlZCk7CisKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNsaWNlZDsKKyAgICB9CisgICAgZWxzZSBpZiAoaXNfbXVsdGlzbGljZShrZXkpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgIm11bHRpLWRpbWVuc2lvbmFsIHNsaWNpbmcgaXMgbm90IGltcGxlbWVudGVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJtZW1vcnl2aWV3OiBpbnZhbGlkIHNsaWNlIGtleSIpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW50CittZW1vcnlfYXNzX3N1YihQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBQeV9idWZmZXIgKnZpZXcgPSAmKHNlbGYtPnZpZXcpOworICAgIFB5X2J1ZmZlciBzcmM7CisgICAgY29uc3QgY2hhciAqZm10OworICAgIGNoYXIgKnB0cjsKKworICAgIENIRUNLX1JFTEVBU0VEX0lOVChzZWxmKTsKKworICAgIGZtdCA9IGFkanVzdF9mbXQodmlldyk7CisgICAgaWYgKGZtdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAodmlldy0+cmVhZG9ubHkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImNhbm5vdCBtb2RpZnkgcmVhZC1vbmx5IG1lbW9yeSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJjYW5ub3QgZGVsZXRlIG1lbW9yeSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICh2aWV3LT5uZGltID09IDApIHsKKyAgICAgICAgaWYgKGtleSA9PSBQeV9FbGxpcHNpcyB8fAorICAgICAgICAgICAgKFB5VHVwbGVfQ2hlY2soa2V5KSAmJiBQeVR1cGxlX0dFVF9TSVpFKGtleSk9PTApKSB7CisgICAgICAgICAgICBwdHIgPSAoY2hhciAqKXZpZXctPmJ1ZjsKKyAgICAgICAgICAgIHJldHVybiBwYWNrX3NpbmdsZShwdHIsIHZhbHVlLCBmbXQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBpbmRleGluZyBvZiAwLWRpbSBtZW1vcnkiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAodmlldy0+bmRpbSAhPSAxKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXcgYXNzaWdubWVudHMgYXJlIGN1cnJlbnRseSByZXN0cmljdGVkIHRvIG5kaW0gPSAxIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoUHlJbmRleF9DaGVjayhrZXkpKSB7CisgICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeU51bWJlcl9Bc1NzaXplX3Qoa2V5LCBQeUV4Y19JbmRleEVycm9yKTsKKyAgICAgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHB0ciA9IHB0cl9mcm9tX2luZGV4KHZpZXcsIGluZGV4KTsKKyAgICAgICAgaWYgKHB0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gcGFja19zaW5nbGUocHRyLCB2YWx1ZSwgZm10KTsKKyAgICB9CisgICAgLyogb25lLWRpbWVuc2lvbmFsOiBmYXN0IHBhdGggKi8KKyAgICBpZiAoUHlTbGljZV9DaGVjayhrZXkpICYmIHZpZXctPm5kaW0gPT0gMSkgeworICAgICAgICBQeV9idWZmZXIgZGVzdDsgLyogc2xpY2VkIHZpZXcgKi8KKyAgICAgICAgUHlfc3NpemVfdCBhcnJheXNbM107CisgICAgICAgIGludCByZXQgPSAtMTsKKworICAgICAgICAvKiBydmFsdWUgbXVzdCBiZSBhbiBleHBvcnRlciAqLworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHZhbHVlLCAmc3JjLCBQeUJVRl9GVUxMX1JPKSA8IDApCisgICAgICAgICAgICByZXR1cm4gcmV0OworCisgICAgICAgIGRlc3QgPSAqdmlldzsKKyAgICAgICAgZGVzdC5zaGFwZSA9ICZhcnJheXNbMF07IGRlc3Quc2hhcGVbMF0gPSB2aWV3LT5zaGFwZVswXTsKKyAgICAgICAgZGVzdC5zdHJpZGVzID0gJmFycmF5c1sxXTsgZGVzdC5zdHJpZGVzWzBdID0gdmlldy0+c3RyaWRlc1swXTsKKyAgICAgICAgaWYgKHZpZXctPnN1Ym9mZnNldHMpIHsKKyAgICAgICAgICAgIGRlc3Quc3Vib2Zmc2V0cyA9ICZhcnJheXNbMl07IGRlc3Quc3Vib2Zmc2V0c1swXSA9IHZpZXctPnN1Ym9mZnNldHNbMF07CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW5pdF9zbGljZSgmZGVzdCwga2V5LCAwKSA8IDApCisgICAgICAgICAgICBnb3RvIGVuZF9ibG9jazsKKyAgICAgICAgZGVzdC5sZW4gPSBkZXN0LnNoYXBlWzBdICogZGVzdC5pdGVtc2l6ZTsKKworICAgICAgICByZXQgPSBjb3B5X3NpbmdsZSgmZGVzdCwgJnNyYyk7CisKKyAgICBlbmRfYmxvY2s6CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNyYyk7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorICAgIGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soa2V5KSB8fCBpc19tdWx0aXNsaWNlKGtleSkpIHsKKyAgICAgICAgLyogQ2FsbCBtZW1vcnlfc3Vic2NyaXB0KCkgdG8gcHJvZHVjZSBhIHNsaWNlZCBsdmFsdWUsIHRoZW4gY29weQorICAgICAgICAgICBydmFsdWUgaW50byBsdmFsdWUuIFRoaXMgaXMgYWxyZWFkeSBpbXBsZW1lbnRlZCBpbiBfdGVzdGJ1ZmZlci5jLiAqLworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3IHNsaWNlIGFzc2lnbm1lbnRzIGFyZSBjdXJyZW50bHkgcmVzdHJpY3RlZCAiCisgICAgICAgICAgICAidG8gbmRpbSA9IDEiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJtZW1vcnl2aWV3OiBpbnZhbGlkIHNsaWNlIGtleSIpOworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIFB5X3NzaXplX3QKK21lbW9yeV9sZW5ndGgoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmKQoreworICAgIENIRUNLX1JFTEVBU0VEX0lOVChzZWxmKTsKKyAgICByZXR1cm4gc2VsZi0+dmlldy5uZGltID09IDAgPyAxIDogc2VsZi0+dmlldy5zaGFwZVswXTsKK30KKworLyogQXMgbWFwcGluZyAqLworc3RhdGljIFB5TWFwcGluZ01ldGhvZHMgbWVtb3J5X2FzX21hcHBpbmcgPSB7CisgICAgKGxlbmZ1bmMpbWVtb3J5X2xlbmd0aCwgICAgICAgICAgICAgICAvKiBtcF9sZW5ndGggKi8KKyAgICAoYmluYXJ5ZnVuYyltZW1vcnlfc3Vic2NyaXB0LCAgICAgICAgIC8qIG1wX3N1YnNjcmlwdCAqLworICAgIChvYmpvYmphcmdwcm9jKW1lbW9yeV9hc3Nfc3ViLCAgICAgICAgLyogbXBfYXNzX3N1YnNjcmlwdCAqLworfTsKKworLyogQXMgc2VxdWVuY2UgKi8KK3N0YXRpYyBQeVNlcXVlbmNlTWV0aG9kcyBtZW1vcnlfYXNfc2VxdWVuY2UgPSB7CisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9sZW5ndGggKi8KKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2NvbmNhdCAqLworICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfcmVwZWF0ICovCisgICAgICAgIChzc2l6ZWFyZ2Z1bmMpbWVtb3J5X2l0ZW0sICAgICAgICAvKiBzcV9pdGVtICovCit9OworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wYXJpc29ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSBNVl9DT01QQVJFX0VYIC0xICAgICAgIC8qIGV4Y2VwdGlvbiAqLworI2RlZmluZSBNVl9DT01QQVJFX05PVF9JTVBMIC0yIC8qIG5vdCBpbXBsZW1lbnRlZCAqLworCisvKiBUcmFuc2xhdGUgYSBTdHJ1Y3RFcnJvciB0byAibm90IGVxdWFsIi4gUHJlc2VydmUgb3RoZXIgZXhjZXB0aW9ucy4gKi8KK3N0YXRpYyBpbnQKK2ZpeF9zdHJ1Y3RfZXJyb3JfaW50KHZvaWQpCit7CisgICAgYXNzZXJ0KFB5RXJyX09jY3VycmVkKCkpOworICAgIC8qIFhYWCBDYW5ub3QgZ2V0IGF0IFN0cnVjdEVycm9yIGRpcmVjdGx5PyAqLworICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0ltcG9ydEVycm9yKSB8fAorICAgICAgICBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX01lbW9yeUVycm9yKSkgeworICAgICAgICByZXR1cm4gTVZfQ09NUEFSRV9FWDsKKyAgICB9CisgICAgLyogU3RydWN0RXJyb3I6IGludmFsaWQgb3IgdW5rbm93biBmb3JtYXQgLT4gbm90IGVxdWFsICovCisgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICByZXR1cm4gMDsKK30KKworLyogVW5wYWNrIGFuZCBjb21wYXJlIHNpbmdsZSBpdGVtcyBvZiBwIGFuZCBxIHVzaW5nIHRoZSBzdHJ1Y3QgbW9kdWxlLiAqLworc3RhdGljIGludAorc3RydWN0X3VucGFja19jbXAoY29uc3QgY2hhciAqcCwgY29uc3QgY2hhciAqcSwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3AsIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3EpCit7CisgICAgUHlPYmplY3QgKnYsICp3OworICAgIGludCByZXQ7CisKKyAgICAvKiBBdCB0aGlzIHBvaW50IGFueSBleGNlcHRpb24gZnJvbSB0aGUgc3RydWN0IG1vZHVsZSBzaG91bGQgbm90IGJlCisgICAgICAgU3RydWN0RXJyb3IsIHNpbmNlIGJvdGggZm9ybWF0cyBoYXZlIGJlZW4gYWNjZXB0ZWQgYWxyZWFkeS4gKi8KKyAgICB2ID0gc3RydWN0X3VucGFja19zaW5nbGUocCwgdW5wYWNrX3ApOworICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgIHJldHVybiBNVl9DT01QQVJFX0VYOworCisgICAgdyA9IHN0cnVjdF91bnBhY2tfc2luZ2xlKHEsIHVucGFja19xKTsKKyAgICBpZiAodyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgcmV0dXJuIE1WX0NPTVBBUkVfRVg7CisgICAgfQorCisgICAgLyogTVZfQ09NUEFSRV9FWCA9PSAtMTogZXhjZXB0aW9ucyBhcmUgcHJlc2VydmVkICovCisgICAgcmV0ID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHYsIHcsIFB5X0VRKTsKKyAgICBQeV9ERUNSRUYodik7CisgICAgUHlfREVDUkVGKHcpOworCisgICAgcmV0dXJuIHJldDsKK30KKworLyogVW5wYWNrIGFuZCBjb21wYXJlIHNpbmdsZSBpdGVtcyBvZiBwIGFuZCBxLiBJZiBib3RoIHAgYW5kIHEgaGF2ZSB0aGUgc2FtZQorICAgc2luZ2xlIGVsZW1lbnQgbmF0aXZlIGZvcm1hdCwgdGhlIGNvbXBhcmlzb24gdXNlcyBhIGZhc3QgcGF0aCAoZ2NjIGNyZWF0ZXMKKyAgIGEganVtcCB0YWJsZSBhbmQgY29udmVydHMgbWVtY3B5IGludG8gc2ltcGxlIGFzc2lnbm1lbnRzIG9uIHg4Ni94NjQpLgorCisgICBPdGhlcndpc2UsIHRoZSBjb21wYXJpc29uIGlzIGRlbGVnYXRlZCB0byB0aGUgc3RydWN0IG1vZHVsZSwgd2hpY2ggaXMKKyAgIDMwLTYweCBzbG93ZXIuICovCisjZGVmaW5lIENNUF9TSU5HTEUocCwgcSwgdHlwZSkgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHR5cGUgeDsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdHlwZSB5OyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtZW1jcHkoKGNoYXIgKikmeCwgcCwgc2l6ZW9mIHgpOyBcCisgICAgICAgIG1lbWNweSgoY2hhciAqKSZ5LCBxLCBzaXplb2YgeSk7IFwKKyAgICAgICAgZXF1YWwgPSAoeCA9PSB5KTsgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKK1B5X0xPQ0FMX0lOTElORShpbnQpCit1bnBhY2tfY21wKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGNoYXIgKnEsIGNoYXIgZm10LAorICAgICAgICAgICBzdHJ1Y3QgdW5wYWNrZXIgKnVucGFja19wLCBzdHJ1Y3QgdW5wYWNrZXIgKnVucGFja19xKQoreworICAgIGludCBlcXVhbDsKKworICAgIHN3aXRjaCAoZm10KSB7CisKKyAgICAvKiBzaWduZWQgaW50ZWdlcnMgYW5kIGZhc3QgcGF0aCBmb3IgJ0InICovCisgICAgY2FzZSAnQic6IHJldHVybiAqKCh1bnNpZ25lZCBjaGFyICopcCkgPT0gKigodW5zaWduZWQgY2hhciAqKXEpOworICAgIGNhc2UgJ2InOiByZXR1cm4gKigoc2lnbmVkIGNoYXIgKilwKSA9PSAqKChzaWduZWQgY2hhciAqKXEpOworICAgIGNhc2UgJ2gnOiBDTVBfU0lOR0xFKHAsIHEsIHNob3J0KTsgcmV0dXJuIGVxdWFsOworICAgIGNhc2UgJ2knOiBDTVBfU0lOR0xFKHAsIHEsIGludCk7IHJldHVybiBlcXVhbDsKKyAgICBjYXNlICdsJzogQ01QX1NJTkdMRShwLCBxLCBsb25nKTsgcmV0dXJuIGVxdWFsOworCisgICAgLyogYm9vbGVhbiAqLworICAgICNpZmRlZiBIQVZFX0M5OV9CT09MCisgICAgY2FzZSAnPyc6IENNUF9TSU5HTEUocCwgcSwgX0Jvb2wpOyByZXR1cm4gZXF1YWw7CisgICAgI2Vsc2UKKyAgICBjYXNlICc/JzogQ01QX1NJTkdMRShwLCBxLCBjaGFyKTsgcmV0dXJuIGVxdWFsOworICAgICNlbmRpZgorCisgICAgLyogdW5zaWduZWQgaW50ZWdlcnMgKi8KKyAgICBjYXNlICdIJzogQ01QX1NJTkdMRShwLCBxLCB1bnNpZ25lZCBzaG9ydCk7IHJldHVybiBlcXVhbDsKKyAgICBjYXNlICdJJzogQ01QX1NJTkdMRShwLCBxLCB1bnNpZ25lZCBpbnQpOyByZXR1cm4gZXF1YWw7CisgICAgY2FzZSAnTCc6IENNUF9TSU5HTEUocCwgcSwgdW5zaWduZWQgbG9uZyk7IHJldHVybiBlcXVhbDsKKworICAgIC8qIG5hdGl2ZSA2NC1iaXQgKi8KKyAgICAjaWZkZWYgSEFWRV9MT05HX0xPTkcKKyAgICBjYXNlICdxJzogQ01QX1NJTkdMRShwLCBxLCBQWV9MT05HX0xPTkcpOyByZXR1cm4gZXF1YWw7CisgICAgY2FzZSAnUSc6IENNUF9TSU5HTEUocCwgcSwgdW5zaWduZWQgUFlfTE9OR19MT05HKTsgcmV0dXJuIGVxdWFsOworICAgICNlbmRpZgorCisgICAgLyogc3NpemVfdCBhbmQgc2l6ZV90ICovCisgICAgY2FzZSAnbic6IENNUF9TSU5HTEUocCwgcSwgUHlfc3NpemVfdCk7IHJldHVybiBlcXVhbDsKKyAgICBjYXNlICdOJzogQ01QX1NJTkdMRShwLCBxLCBzaXplX3QpOyByZXR1cm4gZXF1YWw7CisKKyAgICAvKiBmbG9hdHMgKi8KKyAgICAvKiBYWFggREJMX0VQU0lMT04/ICovCisgICAgY2FzZSAnZic6IENNUF9TSU5HTEUocCwgcSwgZmxvYXQpOyByZXR1cm4gZXF1YWw7CisgICAgY2FzZSAnZCc6IENNUF9TSU5HTEUocCwgcSwgZG91YmxlKTsgcmV0dXJuIGVxdWFsOworCisgICAgLyogYnl0ZXMgb2JqZWN0ICovCisgICAgY2FzZSAnYyc6IHJldHVybiAqcCA9PSAqcTsKKworICAgIC8qIHBvaW50ZXIgKi8KKyAgICBjYXNlICdQJzogQ01QX1NJTkdMRShwLCBxLCB2b2lkICopOyByZXR1cm4gZXF1YWw7CisKKyAgICAvKiB1c2UgdGhlIHN0cnVjdCBtb2R1bGUgKi8KKyAgICBjYXNlICdfJzoKKyAgICAgICAgYXNzZXJ0KHVucGFja19wKTsKKyAgICAgICAgYXNzZXJ0KHVucGFja19xKTsKKyAgICAgICAgcmV0dXJuIHN0cnVjdF91bnBhY2tfY21wKHAsIHEsIHVucGFja19wLCB1bnBhY2tfcSk7CisgICAgfQorCisgICAgLyogTk9UIFJFQUNIRUQgKi8KKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAibWVtb3J5dmlldzogaW50ZXJuYWwgZXJyb3IgaW4gcmljaGNvbXBhcmUiKTsKKyAgICByZXR1cm4gTVZfQ09NUEFSRV9FWDsKK30KKworLyogQmFzZSBjYXNlIGZvciByZWN1cnNpdmUgYXJyYXkgY29tcGFyaXNvbnMuIEFzc3VtcHRpb246IG5kaW0gPT0gMS4gKi8KK3N0YXRpYyBpbnQKK2NtcF9iYXNlKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGNoYXIgKnEsIGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlLAorICAgICAgICAgY29uc3QgUHlfc3NpemVfdCAqcHN0cmlkZXMsIGNvbnN0IFB5X3NzaXplX3QgKnBzdWJvZmZzZXRzLAorICAgICAgICAgY29uc3QgUHlfc3NpemVfdCAqcXN0cmlkZXMsIGNvbnN0IFB5X3NzaXplX3QgKnFzdWJvZmZzZXRzLAorICAgICAgICAgY2hhciBmbXQsIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3AsIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3EpCit7CisgICAgUHlfc3NpemVfdCBpOworICAgIGludCBlcXVhbDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBzaGFwZVswXTsgcCs9cHN0cmlkZXNbMF0sIHErPXFzdHJpZGVzWzBdLCBpKyspIHsKKyAgICAgICAgY29uc3QgY2hhciAqeHAgPSBBREpVU1RfUFRSKHAsIHBzdWJvZmZzZXRzKTsKKyAgICAgICAgY29uc3QgY2hhciAqeHEgPSBBREpVU1RfUFRSKHEsIHFzdWJvZmZzZXRzKTsKKyAgICAgICAgZXF1YWwgPSB1bnBhY2tfY21wKHhwLCB4cSwgZm10LCB1bnBhY2tfcCwgdW5wYWNrX3EpOworICAgICAgICBpZiAoZXF1YWwgPD0gMCkKKyAgICAgICAgICAgIHJldHVybiBlcXVhbDsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworLyogUmVjdXJzaXZlbHkgY29tcGFyZSB0d28gbXVsdGktZGltZW5zaW9uYWwgYXJyYXlzIHRoYXQgaGF2ZSB0aGUgc2FtZQorICAgbG9naWNhbCBzdHJ1Y3R1cmUuIEFzc3VtcHRpb246IG5kaW0gPj0gMS4gKi8KK3N0YXRpYyBpbnQKK2NtcF9yZWMoY29uc3QgY2hhciAqcCwgY29uc3QgY2hhciAqcSwKKyAgICAgICAgUHlfc3NpemVfdCBuZGltLCBjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSwKKyAgICAgICAgY29uc3QgUHlfc3NpemVfdCAqcHN0cmlkZXMsIGNvbnN0IFB5X3NzaXplX3QgKnBzdWJvZmZzZXRzLAorICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpxc3RyaWRlcywgY29uc3QgUHlfc3NpemVfdCAqcXN1Ym9mZnNldHMsCisgICAgICAgIGNoYXIgZm10LCBzdHJ1Y3QgdW5wYWNrZXIgKnVucGFja19wLCBzdHJ1Y3QgdW5wYWNrZXIgKnVucGFja19xKQoreworICAgIFB5X3NzaXplX3QgaTsKKyAgICBpbnQgZXF1YWw7CisKKyAgICBhc3NlcnQobmRpbSA+PSAxKTsKKyAgICBhc3NlcnQoc2hhcGUgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHBzdHJpZGVzICE9IE5VTEwpOworICAgIGFzc2VydChxc3RyaWRlcyAhPSBOVUxMKTsKKworICAgIGlmIChuZGltID09IDEpIHsKKyAgICAgICAgcmV0dXJuIGNtcF9iYXNlKHAsIHEsIHNoYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgcHN0cmlkZXMsIHBzdWJvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgcXN0cmlkZXMsIHFzdWJvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgZm10LCB1bnBhY2tfcCwgdW5wYWNrX3EpOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBzaGFwZVswXTsgcCs9cHN0cmlkZXNbMF0sIHErPXFzdHJpZGVzWzBdLCBpKyspIHsKKyAgICAgICAgY29uc3QgY2hhciAqeHAgPSBBREpVU1RfUFRSKHAsIHBzdWJvZmZzZXRzKTsKKyAgICAgICAgY29uc3QgY2hhciAqeHEgPSBBREpVU1RfUFRSKHEsIHFzdWJvZmZzZXRzKTsKKyAgICAgICAgZXF1YWwgPSBjbXBfcmVjKHhwLCB4cSwgbmRpbS0xLCBzaGFwZSsxLAorICAgICAgICAgICAgICAgICAgICAgICAgcHN0cmlkZXMrMSwgcHN1Ym9mZnNldHMgPyBwc3Vib2Zmc2V0cysxIDogTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHFzdHJpZGVzKzEsIHFzdWJvZmZzZXRzID8gcXN1Ym9mZnNldHMrMSA6IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICBmbXQsIHVucGFja19wLCB1bnBhY2tfcSk7CisgICAgICAgIGlmIChlcXVhbCA8PSAwKQorICAgICAgICAgICAgcmV0dXJuIGVxdWFsOworICAgIH0KKworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X3JpY2hjb21wYXJlKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdywgaW50IG9wKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlfYnVmZmVyIHdidWYsICp2djsKKyAgICBQeV9idWZmZXIgKnd3ID0gTlVMTDsKKyAgICBzdHJ1Y3QgdW5wYWNrZXIgKnVucGFja192ID0gTlVMTDsKKyAgICBzdHJ1Y3QgdW5wYWNrZXIgKnVucGFja193ID0gTlVMTDsKKyAgICBjaGFyIHZmbXQsIHdmbXQ7CisgICAgaW50IGVxdWFsID0gTVZfQ09NUEFSRV9OT1RfSU1QTDsKKworICAgIGlmIChvcCAhPSBQeV9FUSAmJiBvcCAhPSBQeV9ORSkKKyAgICAgICAgZ290byByZXN1bHQ7IC8qIFB5X05vdEltcGxlbWVudGVkICovCisKKyAgICBhc3NlcnQoUHlNZW1vcnlWaWV3X0NoZWNrKHYpKTsKKyAgICBpZiAoQkFTRV9JTkFDQ0VTU0lCTEUodikpIHsKKyAgICAgICAgZXF1YWwgPSAodiA9PSB3KTsKKyAgICAgICAgZ290byByZXN1bHQ7CisgICAgfQorICAgIHZ2ID0gVklFV19BRERSKHYpOworCisgICAgaWYgKFB5TWVtb3J5Vmlld19DaGVjayh3KSkgeworICAgICAgICBpZiAoQkFTRV9JTkFDQ0VTU0lCTEUodykpIHsKKyAgICAgICAgICAgIGVxdWFsID0gKHYgPT0gdyk7CisgICAgICAgICAgICBnb3RvIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICB3dyA9IFZJRVdfQUREUih3KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIodywgJndidWYsIFB5QlVGX0ZVTExfUk8pIDwgMCkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIGdvdG8gcmVzdWx0OyAvKiBQeV9Ob3RJbXBsZW1lbnRlZCAqLworICAgICAgICB9CisgICAgICAgIHd3ID0gJndidWY7CisgICAgfQorCisgICAgaWYgKCFlcXVpdl9zaGFwZSh2diwgd3cpKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGVxdWFsID0gMDsKKyAgICAgICAgZ290byByZXN1bHQ7CisgICAgfQorCisgICAgLyogVXNlIGZhc3QgdW5wYWNraW5nIGZvciBpZGVudGljYWwgcHJpbWl0aXZlIEMgdHlwZSBmb3JtYXRzLiAqLworICAgIGlmIChnZXRfbmF0aXZlX2ZtdGNoYXIoJnZmbXQsIHZ2LT5mb3JtYXQpIDwgMCkKKyAgICAgICAgdmZtdCA9ICdfJzsKKyAgICBpZiAoZ2V0X25hdGl2ZV9mbXRjaGFyKCZ3Zm10LCB3dy0+Zm9ybWF0KSA8IDApCisgICAgICAgIHdmbXQgPSAnXyc7CisgICAgaWYgKHZmbXQgPT0gJ18nIHx8IHdmbXQgPT0gJ18nIHx8IHZmbXQgIT0gd2ZtdCkgeworICAgICAgICAvKiBVc2Ugc3RydWN0IG1vZHVsZSB1bnBhY2tpbmcuIE5PVEU6IEV2ZW4gZm9yIGVxdWFsIGZvcm1hdCBzdHJpbmdzLAorICAgICAgICAgICBtZW1jbXAoKSBjYW5ub3QgYmUgdXNlZCBmb3IgaXRlbSBjb21wYXJpc29uIHNpbmNlIGl0IHdvdWxkIGdpdmUKKyAgICAgICAgICAgaW5jb3JyZWN0IHJlc3VsdHMgaW4gdGhlIGNhc2Ugb2YgTmFOcyBvciB1bmluaXRpYWxpemVkIHBhZGRpbmcKKyAgICAgICAgICAgYnl0ZXMuICovCisgICAgICAgIHZmbXQgPSAnXyc7CisgICAgICAgIHVucGFja192ID0gc3RydWN0X2dldF91bnBhY2tlcih2di0+Zm9ybWF0LCB2di0+aXRlbXNpemUpOworICAgICAgICBpZiAodW5wYWNrX3YgPT0gTlVMTCkgeworICAgICAgICAgICAgZXF1YWwgPSBmaXhfc3RydWN0X2Vycm9yX2ludCgpOworICAgICAgICAgICAgZ290byByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgdW5wYWNrX3cgPSBzdHJ1Y3RfZ2V0X3VucGFja2VyKHd3LT5mb3JtYXQsIHd3LT5pdGVtc2l6ZSk7CisgICAgICAgIGlmICh1bnBhY2tfdyA9PSBOVUxMKSB7CisgICAgICAgICAgICBlcXVhbCA9IGZpeF9zdHJ1Y3RfZXJyb3JfaW50KCk7CisgICAgICAgICAgICBnb3RvIHJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICh2di0+bmRpbSA9PSAwKSB7CisgICAgICAgIGVxdWFsID0gdW5wYWNrX2NtcCh2di0+YnVmLCB3dy0+YnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmZtdCwgdW5wYWNrX3YsIHVucGFja193KTsKKyAgICB9CisgICAgZWxzZSBpZiAodnYtPm5kaW0gPT0gMSkgeworICAgICAgICBlcXVhbCA9IGNtcF9iYXNlKHZ2LT5idWYsIHd3LT5idWYsIHZ2LT5zaGFwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2di0+c3RyaWRlcywgdnYtPnN1Ym9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgd3ctPnN0cmlkZXMsIHd3LT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgIHZmbXQsIHVucGFja192LCB1bnBhY2tfdyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBlcXVhbCA9IGNtcF9yZWModnYtPmJ1Ziwgd3ctPmJ1ZiwgdnYtPm5kaW0sIHZ2LT5zaGFwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZ2LT5zdHJpZGVzLCB2di0+c3Vib2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgIHd3LT5zdHJpZGVzLCB3dy0+c3Vib2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgIHZmbXQsIHVucGFja192LCB1bnBhY2tfdyk7CisgICAgfQorCityZXN1bHQ6CisgICAgaWYgKGVxdWFsIDwgMCkgeworICAgICAgICBpZiAoZXF1YWwgPT0gTVZfQ09NUEFSRV9OT1RfSU1QTCkKKyAgICAgICAgICAgIHJlcyA9IFB5X05vdEltcGxlbWVudGVkOworICAgICAgICBlbHNlIC8qIGV4Y2VwdGlvbiAqLworICAgICAgICAgICAgcmVzID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAoKGVxdWFsICYmIG9wID09IFB5X0VRKSB8fCAoIWVxdWFsICYmIG9wID09IFB5X05FKSkKKyAgICAgICAgcmVzID0gUHlfVHJ1ZTsKKyAgICBlbHNlCisgICAgICAgIHJlcyA9IFB5X0ZhbHNlOworCisgICAgaWYgKHd3ID09ICZ3YnVmKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKHd3KTsKKworICAgIHVucGFja2VyX2ZyZWUodW5wYWNrX3YpOworICAgIHVucGFja2VyX2ZyZWUodW5wYWNrX3cpOworCisgICAgUHlfWElOQ1JFRihyZXMpOworICAgIHJldHVybiByZXM7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIFB5X2hhc2hfdAorbWVtb3J5X2hhc2goUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmKQoreworICAgIGlmIChzZWxmLT5oYXNoID09IC0xKSB7CisgICAgICAgIFB5X2J1ZmZlciAqdmlldyA9ICZzZWxmLT52aWV3OworICAgICAgICBjaGFyICptZW0gPSB2aWV3LT5idWY7CisgICAgICAgIFB5X3NzaXplX3QgcmV0OworICAgICAgICBjaGFyIGZtdDsKKworICAgICAgICBDSEVDS19SRUxFQVNFRF9JTlQoc2VsZik7CisKKyAgICAgICAgaWYgKCF2aWV3LT5yZWFkb25seSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImNhbm5vdCBoYXNoIHdyaXRhYmxlIG1lbW9yeXZpZXcgb2JqZWN0Iik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgcmV0ID0gZ2V0X25hdGl2ZV9mbXRjaGFyKCZmbXQsIHZpZXctPmZvcm1hdCk7CisgICAgICAgIGlmIChyZXQgPCAwIHx8ICFJU19CWVRFX0ZPUk1BVChmbXQpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibWVtb3J5dmlldzogaGFzaGluZyBpcyByZXN0cmljdGVkIHRvIGZvcm1hdHMgJ0InLCAnYicgb3IgJ2MnIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZpZXctPm9iaiAhPSBOVUxMICYmIFB5T2JqZWN0X0hhc2godmlldy0+b2JqKSA9PSAtMSkgeworICAgICAgICAgICAgLyogS2VlcCB0aGUgb3JpZ2luYWwgZXJyb3IgbWVzc2FnZSAqLworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFNVl9DX0NPTlRJR1VPVVMoc2VsZi0+ZmxhZ3MpKSB7CisgICAgICAgICAgICBtZW0gPSBQeU1lbV9NYWxsb2Modmlldy0+bGVuKTsKKyAgICAgICAgICAgIGlmIChtZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGJ1ZmZlcl90b19jb250aWd1b3VzKG1lbSwgdmlldywgJ0MnKSA8IDApIHsKKyAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKG1lbSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyogQ2FuJ3QgZmFpbCAqLworICAgICAgICBzZWxmLT5oYXNoID0gX1B5X0hhc2hCeXRlcygodW5zaWduZWQgY2hhciAqKW1lbSwgdmlldy0+bGVuKTsKKworICAgICAgICBpZiAobWVtICE9IHZpZXctPmJ1ZikKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUobWVtKTsKKyAgICB9CisKKyAgICByZXR1cm4gc2VsZi0+aGFzaDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfSW50VHVwbGVGcm9tU3NpemV0KGludCBsZW4sIFB5X3NzaXplX3QgKnZhbHMpCit7CisgICAgaW50IGk7CisgICAgUHlPYmplY3QgKm87CisgICAgUHlPYmplY3QgKmludFR1cGxlOworCisgICAgaWYgKHZhbHMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5VHVwbGVfTmV3KDApOworCisgICAgaW50VHVwbGUgPSBQeVR1cGxlX05ldyhsZW4pOworICAgIGlmICghaW50VHVwbGUpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGZvciAoaT0wOyBpPGxlbjsgaSsrKSB7CisgICAgICAgIG8gPSBQeUxvbmdfRnJvbVNzaXplX3QodmFsc1tpXSk7CisgICAgICAgIGlmICghbykgeworICAgICAgICAgICAgUHlfREVDUkVGKGludFR1cGxlKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oaW50VHVwbGUsIGksIG8pOworICAgIH0KKyAgICByZXR1cm4gaW50VHVwbGU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfb2JqX2dldChQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCit7CisgICAgUHlfYnVmZmVyICp2aWV3ID0gJnNlbGYtPnZpZXc7CisKKyAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKKyAgICBpZiAodmlldy0+b2JqID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIFB5X0lOQ1JFRih2aWV3LT5vYmopOworICAgIHJldHVybiB2aWV3LT5vYmo7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfbmJ5dGVzX2dldChQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCit7CisgICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT52aWV3Lmxlbik7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBtZW1vcnlfZm9ybWF0X2dldChQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCiB7CkBAIC0zNDMsMzEgKzI4MTUsNiBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotX0ludFR1cGxlRnJvbVNzaXpldChpbnQgbGVuLCBQeV9zc2l6ZV90ICp2YWxzKQotewotICAgIGludCBpOwotICAgIFB5T2JqZWN0ICpvOwotICAgIFB5T2JqZWN0ICppbnRUdXBsZTsKLQotICAgIGlmICh2YWxzID09IE5VTEwpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICB9Ci0gICAgaW50VHVwbGUgPSBQeVR1cGxlX05ldyhsZW4pOwotICAgIGlmICghaW50VHVwbGUpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGZvciAoaT0wOyBpPGxlbjsgaSsrKSB7Ci0gICAgICAgIG8gPSBQeUxvbmdfRnJvbVNzaXplX3QodmFsc1tpXSk7Ci0gICAgICAgIGlmICghbykgewotICAgICAgICAgICAgUHlfREVDUkVGKGludFR1cGxlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0oaW50VHVwbGUsIGksIG8pOwotICAgIH0KLSAgICByZXR1cm4gaW50VHVwbGU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCiBtZW1vcnlfc2hhcGVfZ2V0KFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKIHsKICAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKQEAgLTQwMiwxMSArMjg0OSw0MiBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+dmlldy5uZGltKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9jX2NvbnRpZ3VvdXMoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhNVl9DX0NPTlRJR1VPVVMoc2VsZi0+ZmxhZ3MpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9mX2NvbnRpZ3VvdXMoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhNVl9GX0NPTlRJR1VPVVMoc2VsZi0+ZmxhZ3MpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9jb250aWd1b3VzKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoTVZfQU5ZX0NPTlRJR1VPVVMoc2VsZi0+ZmxhZ3MpKTsKK30KKworUHlEb2NfU1RSVkFSKG1lbW9yeV9vYmpfZG9jLAorICAgICAgICAgICAgICJUaGUgdW5kZXJseWluZyBvYmplY3Qgb2YgdGhlIG1lbW9yeXZpZXcuIik7CitQeURvY19TVFJWQVIobWVtb3J5X25ieXRlc19kb2MsCisgICAgICAgICAgICAgIlRoZSBhbW91bnQgb2Ygc3BhY2UgaW4gYnl0ZXMgdGhhdCB0aGUgYXJyYXkgd291bGQgdXNlIGluXG4iCisgICAgICAgICAgICAgIiBhIGNvbnRpZ3VvdXMgcmVwcmVzZW50YXRpb24uIik7CitQeURvY19TVFJWQVIobWVtb3J5X3JlYWRvbmx5X2RvYywKKyAgICAgICAgICAgICAiQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIHJlYWQgb25seS4iKTsKK1B5RG9jX1NUUlZBUihtZW1vcnlfaXRlbXNpemVfZG9jLAorICAgICAgICAgICAgICJUaGUgc2l6ZSBpbiBieXRlcyBvZiBlYWNoIGVsZW1lbnQgb2YgdGhlIG1lbW9yeXZpZXcuIik7CiBQeURvY19TVFJWQVIobWVtb3J5X2Zvcm1hdF9kb2MsCiAgICAgICAgICAgICAgIkEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZvcm1hdCAoaW4gc3RydWN0IG1vZHVsZSBzdHlsZSlcbiIKICAgICAgICAgICAgICAiIGZvciBlYWNoIGVsZW1lbnQgaW4gdGhlIHZpZXcuIik7Ci1QeURvY19TVFJWQVIobWVtb3J5X2l0ZW1zaXplX2RvYywKLSAgICAgICAgICAgICAiVGhlIHNpemUgaW4gYnl0ZXMgb2YgZWFjaCBlbGVtZW50IG9mIHRoZSBtZW1vcnl2aWV3LiIpOworUHlEb2NfU1RSVkFSKG1lbW9yeV9uZGltX2RvYywKKyAgICAgICAgICAgICAiQW4gaW50ZWdlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpbWVuc2lvbnMgb2YgYSBtdWx0aS1kaW1lbnNpb25hbFxuIgorICAgICAgICAgICAgICIgYXJyYXkgdGhlIG1lbW9yeSByZXByZXNlbnRzLiIpOwogUHlEb2NfU1RSVkFSKG1lbW9yeV9zaGFwZV9kb2MsCiAgICAgICAgICAgICAgIkEgdHVwbGUgb2YgbmRpbSBpbnRlZ2VycyBnaXZpbmcgdGhlIHNoYXBlIG9mIHRoZSBtZW1vcnlcbiIKICAgICAgICAgICAgICAiIGFzIGFuIE4tZGltZW5zaW9uYWwgYXJyYXkuIik7CkBAIC00MTUsOTUgKzI4OTMsMjkgQEAKICAgICAgICAgICAgICAiIGVhY2ggZWxlbWVudCBmb3IgZWFjaCBkaW1lbnNpb24gb2YgdGhlIGFycmF5LiIpOwogUHlEb2NfU1RSVkFSKG1lbW9yeV9zdWJvZmZzZXRzX2RvYywKICAgICAgICAgICAgICAiQSB0dXBsZSBvZiBpbnRlZ2VycyB1c2VkIGludGVybmFsbHkgZm9yIFBJTC1zdHlsZSBhcnJheXMuIik7Ci1QeURvY19TVFJWQVIobWVtb3J5X3JlYWRvbmx5X2RvYywKLSAgICAgICAgICAgICAiQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIHJlYWQgb25seS4iKTsKLVB5RG9jX1NUUlZBUihtZW1vcnlfbmRpbV9kb2MsCi0gICAgICAgICAgICAgIkFuIGludGVnZXIgaW5kaWNhdGluZyBob3cgbWFueSBkaW1lbnNpb25zIG9mIGEgbXVsdGktZGltZW5zaW9uYWxcbiIKLSAgICAgICAgICAgICAiIGFycmF5IHRoZSBtZW1vcnkgcmVwcmVzZW50cy4iKTsKK1B5RG9jX1NUUlZBUihtZW1vcnlfY19jb250aWd1b3VzX2RvYywKKyAgICAgICAgICAgICAiQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIEMgY29udGlndW91cy4iKTsKK1B5RG9jX1NUUlZBUihtZW1vcnlfZl9jb250aWd1b3VzX2RvYywKKyAgICAgICAgICAgICAiQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIEZvcnRyYW4gY29udGlndW91cy4iKTsKK1B5RG9jX1NUUlZBUihtZW1vcnlfY29udGlndW91c19kb2MsCisgICAgICAgICAgICAgIkEgYm9vbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG1lbW9yeSBpcyBjb250aWd1b3VzLiIpOwogCiBzdGF0aWMgUHlHZXRTZXREZWYgbWVtb3J5X2dldHNldGxpc3RbXSA9IHsKLSAgICB7ImZvcm1hdCIsICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X2Zvcm1hdF9nZXQsICAgICAgTlVMTCwgbWVtb3J5X2Zvcm1hdF9kb2N9LAotICAgIHsiaXRlbXNpemUiLCAgICAgICAgKGdldHRlciltZW1vcnlfaXRlbXNpemVfZ2V0LCAgICBOVUxMLCBtZW1vcnlfaXRlbXNpemVfZG9jfSwKLSAgICB7InNoYXBlIiwgICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X3NoYXBlX2dldCwgICAgICAgTlVMTCwgbWVtb3J5X3NoYXBlX2RvY30sCi0gICAgeyJzdHJpZGVzIiwgICAgICAgICAoZ2V0dGVyKW1lbW9yeV9zdHJpZGVzX2dldCwgICAgIE5VTEwsIG1lbW9yeV9zdHJpZGVzX2RvY30sCi0gICAgeyJzdWJvZmZzZXRzIiwgICAgICAoZ2V0dGVyKW1lbW9yeV9zdWJvZmZzZXRzX2dldCwgIE5VTEwsIG1lbW9yeV9zdWJvZmZzZXRzX2RvY30sCi0gICAgeyJyZWFkb25seSIsICAgICAgICAoZ2V0dGVyKW1lbW9yeV9yZWFkb25seV9nZXQsICAgIE5VTEwsIG1lbW9yeV9yZWFkb25seV9kb2N9LAotICAgIHsibmRpbSIsICAgICAgICAgICAgKGdldHRlciltZW1vcnlfbmRpbV9nZXQsICAgICAgICBOVUxMLCBtZW1vcnlfbmRpbV9kb2N9LAorICAgIHsib2JqIiwgICAgICAgICAgICAgKGdldHRlciltZW1vcnlfb2JqX2dldCwgICAgICAgIE5VTEwsIG1lbW9yeV9vYmpfZG9jfSwKKyAgICB7Im5ieXRlcyIsICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X25ieXRlc19nZXQsICAgICBOVUxMLCBtZW1vcnlfbmJ5dGVzX2RvY30sCisgICAgeyJyZWFkb25seSIsICAgICAgICAoZ2V0dGVyKW1lbW9yeV9yZWFkb25seV9nZXQsICAgTlVMTCwgbWVtb3J5X3JlYWRvbmx5X2RvY30sCisgICAgeyJpdGVtc2l6ZSIsICAgICAgICAoZ2V0dGVyKW1lbW9yeV9pdGVtc2l6ZV9nZXQsICAgTlVMTCwgbWVtb3J5X2l0ZW1zaXplX2RvY30sCisgICAgeyJmb3JtYXQiLCAgICAgICAgICAoZ2V0dGVyKW1lbW9yeV9mb3JtYXRfZ2V0LCAgICAgTlVMTCwgbWVtb3J5X2Zvcm1hdF9kb2N9LAorICAgIHsibmRpbSIsICAgICAgICAgICAgKGdldHRlciltZW1vcnlfbmRpbV9nZXQsICAgICAgIE5VTEwsIG1lbW9yeV9uZGltX2RvY30sCisgICAgeyJzaGFwZSIsICAgICAgICAgICAoZ2V0dGVyKW1lbW9yeV9zaGFwZV9nZXQsICAgICAgTlVMTCwgbWVtb3J5X3NoYXBlX2RvY30sCisgICAgeyJzdHJpZGVzIiwgICAgICAgICAoZ2V0dGVyKW1lbW9yeV9zdHJpZGVzX2dldCwgICAgTlVMTCwgbWVtb3J5X3N0cmlkZXNfZG9jfSwKKyAgICB7InN1Ym9mZnNldHMiLCAgICAgIChnZXR0ZXIpbWVtb3J5X3N1Ym9mZnNldHNfZ2V0LCBOVUxMLCBtZW1vcnlfc3Vib2Zmc2V0c19kb2N9LAorICAgIHsiY19jb250aWd1b3VzIiwgICAgKGdldHRlciltZW1vcnlfY19jb250aWd1b3VzLCAgIE5VTEwsIG1lbW9yeV9jX2NvbnRpZ3VvdXNfZG9jfSwKKyAgICB7ImZfY29udGlndW91cyIsICAgIChnZXR0ZXIpbWVtb3J5X2ZfY29udGlndW91cywgICBOVUxMLCBtZW1vcnlfZl9jb250aWd1b3VzX2RvY30sCisgICAgeyJjb250aWd1b3VzIiwgICAgICAoZ2V0dGVyKW1lbW9yeV9jb250aWd1b3VzLCAgICAgTlVMTCwgbWVtb3J5X2NvbnRpZ3VvdXNfZG9jfSwKICAgICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sCiB9OwogCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1tZW1vcnlfdG9ieXRlcyhQeU1lbW9yeVZpZXdPYmplY3QgKm1lbSwgUHlPYmplY3QgKm5vYXJncykKLXsKLSAgICBDSEVDS19SRUxFQVNFRChtZW0pOwotICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKAotICAgICAgICAgICAgKFB5T2JqZWN0ICopICZQeUJ5dGVzX1R5cGUsIG1lbSwgTlVMTCk7Ci19Ci0KLS8qIFRPRE86IHJld3JpdGUgdGhpcyBmdW5jdGlvbiB1c2luZyB0aGUgc3RydWN0IG1vZHVsZSB0byB1bnBhY2sKLSAgIGVhY2ggYnVmZmVyIGl0ZW0gKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLW1lbW9yeV90b2xpc3QoUHlNZW1vcnlWaWV3T2JqZWN0ICptZW0sIFB5T2JqZWN0ICpub2FyZ3MpCi17Ci0gICAgUHlfYnVmZmVyICp2aWV3ID0gJihtZW0tPnZpZXcpOwotICAgIFB5X3NzaXplX3QgaTsKLSAgICBQeU9iamVjdCAqcmVzLCAqaXRlbTsKLSAgICBjaGFyICpidWY7Ci0KLSAgICBDSEVDS19SRUxFQVNFRChtZW0pOwotICAgIGlmIChzdHJjbXAodmlldy0+Zm9ybWF0LCAiQiIpIHx8IHZpZXctPml0ZW1zaXplICE9IDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsIAotICAgICAgICAgICAgICAgICJ0b2xpc3QoKSBvbmx5IHN1cHBvcnRzIGJ5dGUgdmlld3MiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmICh2aWV3LT5uZGltICE9IDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsIAotICAgICAgICAgICAgICAgICJ0b2xpc3QoKSBvbmx5IHN1cHBvcnRzIG9uZS1kaW1lbnNpb25hbCBvYmplY3RzIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXMgPSBQeUxpc3RfTmV3KHZpZXctPmxlbik7Ci0gICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBidWYgPSB2aWV3LT5idWY7Ci0gICAgZm9yIChpID0gMDsgaSA8IHZpZXctPmxlbjsgaSsrKSB7Ci0gICAgICAgIGl0ZW0gPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgY2hhcikgKmJ1Zik7Ci0gICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlMaXN0X1NFVF9JVEVNKHJlcywgaSwgaXRlbSk7Ci0gICAgICAgIGJ1ZisrOwotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi1zdGF0aWMgdm9pZAotZG9fcmVsZWFzZShQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCi17Ci0gICAgaWYgKHNlbGYtPnZpZXcub2JqICE9IE5VTEwpIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmKHNlbGYtPnZpZXcpKTsKLSAgICB9Ci0gICAgc2VsZi0+dmlldy5vYmogPSBOVUxMOwotICAgIHNlbGYtPnZpZXcuYnVmID0gTlVMTDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLW1lbW9yeV9lbnRlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7Ci0gICAgUHlfSU5DUkVGKHNlbGYpOwotICAgIHJldHVybiBzZWxmOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotbWVtb3J5X2V4aXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGRvX3JlbGVhc2UoKFB5TWVtb3J5Vmlld09iamVjdCAqKSBzZWxmKTsKLSAgICBQeV9SRVRVUk5fTk9ORTsKLX0KLQogUHlEb2NfU1RSVkFSKG1lbW9yeV9yZWxlYXNlX2RvYywKICJNLnJlbGVhc2UoKSAtPiBOb25lXG5cCiBcblwKQEAgLTUxNiwzNDMgKzI5MjgsMjcgQEAKICJNLnRvbGlzdCgpIC0+IGxpc3RcblwKIFxuXAogUmV0dXJuIHRoZSBkYXRhIGluIHRoZSBidWZmZXIgYXMgYSBsaXN0IG9mIGVsZW1lbnRzLiIpOworUHlEb2NfU1RSVkFSKG1lbW9yeV9jYXN0X2RvYywKKyJNLmNhc3QoZm9ybWF0Wywgc2hhcGVdKSAtPiBtZW1vcnl2aWV3XG5cCitcblwKK0Nhc3QgYSBtZW1vcnl2aWV3IHRvIGEgbmV3IGZvcm1hdCBvciBzaGFwZS4iKTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIG1lbW9yeV9tZXRob2RzW10gPSB7Ci0gICAgeyJyZWxlYXNlIiwgbWVtb3J5X2V4aXQsIE1FVEhfTk9BUkdTLCBtZW1vcnlfcmVsZWFzZV9kb2N9LAotICAgIHsidG9ieXRlcyIsIChQeUNGdW5jdGlvbiltZW1vcnlfdG9ieXRlcywgTUVUSF9OT0FSR1MsIG1lbW9yeV90b2J5dGVzX2RvY30sCi0gICAgeyJ0b2xpc3QiLCAoUHlDRnVuY3Rpb24pbWVtb3J5X3RvbGlzdCwgTUVUSF9OT0FSR1MsIG1lbW9yeV90b2xpc3RfZG9jfSwKLSAgICB7Il9fZW50ZXJfXyIsIG1lbW9yeV9lbnRlciwgTUVUSF9OT0FSR1N9LAotICAgIHsiX19leGl0X18iLCBtZW1vcnlfZXhpdCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7TlVMTCwgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCi19OwotCi0KLXN0YXRpYyB2b2lkCi1tZW1vcnlfZGVhbGxvYyhQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCi17Ci0gICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7Ci0gICAgZG9fcmVsZWFzZShzZWxmKTsKLSAgICBQeU9iamVjdF9HQ19EZWwoc2VsZik7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1tZW1vcnlfcmVwcihQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCi17Ci0gICAgaWYgKElTX1JFTEVBU0VEKHNlbGYpKQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxyZWxlYXNlZCBtZW1vcnkgYXQgJXA+Iiwgc2VsZik7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxtZW1vcnkgYXQgJXA+Iiwgc2VsZik7Ci19Ci0KLS8qIFNlcXVlbmNlIG1ldGhvZHMgKi8KLXN0YXRpYyBQeV9zc2l6ZV90Ci1tZW1vcnlfbGVuZ3RoKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKLXsKLSAgICBDSEVDS19SRUxFQVNFRF9JTlQoc2VsZik7Ci0gICAgcmV0dXJuIGdldF9zaGFwZTAoJnNlbGYtPnZpZXcpOwotfQotCi0vKiBBbHRlcm5hdGUgdmVyc2lvbiBvZiBtZW1vcnlfc3ViY3JpcHQgdGhhdCBvbmx5IGFjY2VwdHMgaW5kaWNlcy4KLSAgIFVzZWQgYnkgUHlTZXFJdGVyX05ldygpLgotKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1tZW1vcnlfaXRlbShQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgcmVzdWx0KQotewotICAgIFB5X2J1ZmZlciAqdmlldyA9ICYoc2VsZi0+dmlldyk7Ci0KLSAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKLSAgICBpZiAodmlldy0+bmRpbSA9PSAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgaW5kZXhpbmcgb2YgMC1kaW0gbWVtb3J5Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAodmlldy0+bmRpbSA9PSAxKSB7Ci0gICAgICAgIC8qIFJldHVybiBhIGJ5dGVzIG9iamVjdCAqLwotICAgICAgICBjaGFyICpwdHI7Ci0gICAgICAgIHB0ciA9IChjaGFyICopdmlldy0+YnVmOwotICAgICAgICBpZiAocmVzdWx0IDwgMCkgewotICAgICAgICAgICAgcmVzdWx0ICs9IGdldF9zaGFwZTAodmlldyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKChyZXN1bHQgPCAwKSB8fCAocmVzdWx0ID49IGdldF9zaGFwZTAodmlldykpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluZGV4IG91dCBvZiBib3VuZHMiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmICh2aWV3LT5zdHJpZGVzID09IE5VTEwpCi0gICAgICAgICAgICBwdHIgKz0gdmlldy0+aXRlbXNpemUgKiByZXN1bHQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHB0ciArPSB2aWV3LT5zdHJpZGVzWzBdICogcmVzdWx0OwotICAgICAgICBpZiAodmlldy0+c3Vib2Zmc2V0cyAhPSBOVUxMICYmCi0gICAgICAgICAgICB2aWV3LT5zdWJvZmZzZXRzWzBdID49IDApIHsKLSAgICAgICAgICAgIHB0ciA9ICooKGNoYXIgKiopcHRyKSArIHZpZXctPnN1Ym9mZnNldHNbMF07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocHRyLCB2aWV3LT5pdGVtc2l6ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogUmV0dXJuIGEgbmV3IG1lbW9yeS12aWV3IG9iamVjdCAqLwotICAgICAgICBQeV9idWZmZXIgbmV3dmlldzsKLSAgICAgICAgbWVtc2V0KCZuZXd2aWV3LCAwLCBzaXplb2YobmV3dmlldykpOwotICAgICAgICAvKiBYWFg6ICBUaGlzIG5lZWRzIHRvIGJlIGZpeGVkIHNvIGl0IGFjdHVhbGx5IHJldHVybnMgYSBzdWItdmlldyAqLwotICAgICAgICByZXR1cm4gUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoJm5ld3ZpZXcpOwotICAgIH0KLX0KLQotLyoKLSAgbWVtW29ial0gcmV0dXJucyBhIGJ5dGVzIG9iamVjdCBob2xkaW5nIHRoZSBkYXRhIGZvciBvbmUgZWxlbWVudCBpZgotICAgICAgICAgICBvYmogZnVsbHkgaW5kZXhlcyB0aGUgbWVtb3J5IHZpZXcgb3IgYW5vdGhlciBtZW1vcnktdmlldyBvYmplY3QKLSAgICAgICAgICAgaWYgaXQgZG9lcyBub3QuCi0KLSAgICAgICAgICAgMC1kIG1lbW9yeS12aWV3IG9iamVjdHMgY2FuIGJlIHJlZmVyZW5jZWQgdXNpbmcgLi4uIG9yICgpIGJ1dAotICAgICAgICAgICBub3Qgd2l0aCBhbnl0aGluZyBlbHNlLgotICovCi1zdGF0aWMgUHlPYmplY3QgKgotbWVtb3J5X3N1YnNjcmlwdChQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXkpCi17Ci0gICAgUHlfYnVmZmVyICp2aWV3OwotICAgIHZpZXcgPSAmKHNlbGYtPnZpZXcpOwotICAgIAotICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOwotICAgIGlmICh2aWV3LT5uZGltID09IDApIHsKLSAgICAgICAgaWYgKGtleSA9PSBQeV9FbGxpcHNpcyB8fAotICAgICAgICAgICAgKFB5VHVwbGVfQ2hlY2soa2V5KSAmJiBQeVR1cGxlX0dFVF9TSVpFKGtleSk9PTApKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBpbmRleGluZyBvZiAwLWRpbSBtZW1vcnkiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChQeUluZGV4X0NoZWNrKGtleSkpIHsKLSAgICAgICAgUHlfc3NpemVfdCByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdCA9IFB5TnVtYmVyX0FzU3NpemVfdChrZXksIE5VTEwpOwotICAgICAgICBpZiAocmVzdWx0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJldHVybiBtZW1vcnlfaXRlbShzZWxmLCByZXN1bHQpOwotICAgIH0KLSAgICBlbHNlIGlmIChQeVNsaWNlX0NoZWNrKGtleSkpIHsKLSAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgc3RvcCwgc3RlcCwgc2xpY2VsZW5ndGg7Ci0KLSAgICAgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KGtleSwgZ2V0X3NoYXBlMCh2aWV3KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJnN0b3AsICZzdGVwLCAmc2xpY2VsZW5ndGgpIDwgMCkgewotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAKLSAgICAgICAgaWYgKHN0ZXAgPT0gMSAmJiB2aWV3LT5uZGltID09IDEpIHsKLSAgICAgICAgICAgIFB5X2J1ZmZlciBuZXd2aWV3OwotICAgICAgICAgICAgdm9pZCAqbmV3YnVmID0gKGNoYXIgKikgdmlldy0+YnVmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHN0YXJ0ICogdmlldy0+aXRlbXNpemU7Ci0gICAgICAgICAgICBpbnQgbmV3ZmxhZ3MgPSB2aWV3LT5yZWFkb25seQotICAgICAgICAgICAgICAgICAgICA/IFB5QlVGX0NPTlRJR19STyA6IFB5QlVGX0NPTlRJRzsKLSAgICAKLSAgICAgICAgICAgIC8qIFhYWCBUaGVyZSBzaG91bGQgYmUgYW4gQVBJIHRvIGNyZWF0ZSBhIHN1YmJ1ZmZlciAqLwotICAgICAgICAgICAgaWYgKHZpZXctPm9iaiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih2aWV3LT5vYmosICZuZXd2aWV3LCBuZXdmbGFncykgPT0gLTEpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbmV3dmlldyA9ICp2aWV3OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbmV3dmlldy5idWYgPSBuZXdidWY7Ci0gICAgICAgICAgICBuZXd2aWV3LmxlbiA9IHNsaWNlbGVuZ3RoICogbmV3dmlldy5pdGVtc2l6ZTsKLSAgICAgICAgICAgIG5ld3ZpZXcuZm9ybWF0ID0gdmlldy0+Zm9ybWF0OwotICAgICAgICAgICAgbmV3dmlldy5zaGFwZSA9ICYobmV3dmlldy5zbWFsbHRhYmxlWzBdKTsKLSAgICAgICAgICAgIG5ld3ZpZXcuc2hhcGVbMF0gPSBzbGljZWxlbmd0aDsKLSAgICAgICAgICAgIG5ld3ZpZXcuc3RyaWRlcyA9ICYobmV3dmlldy5pdGVtc2l6ZSk7Ci0gICAgICAgICAgICByZXR1cm4gUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoJm5ld3ZpZXcpOwotICAgICAgICB9Ci0gICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAiY2Fubm90IGluZGV4IG1lbW9yeSB1c2luZyBcIiUuMjAwc1wiIiwgCi0gICAgICAgIGtleS0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLQotLyogTmVlZCB0byBzdXBwb3J0IGFzc2lnbmluZyBtZW1vcnkgaWYgd2UgY2FuICovCi1zdGF0aWMgaW50Ci1tZW1vcnlfYXNzX3N1YihQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSkKLXsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0LCBsZW4sIGJ5dGVsZW47Ci0gICAgUHlfYnVmZmVyIHNyY3ZpZXc7Ci0gICAgUHlfYnVmZmVyICp2aWV3ID0gJihzZWxmLT52aWV3KTsKLSAgICBjaGFyICpzcmNidWYsICpkZXN0YnVmOwotCi0gICAgQ0hFQ0tfUkVMRUFTRURfSU5UKHNlbGYpOwotICAgIGlmICh2aWV3LT5yZWFkb25seSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgImNhbm5vdCBtb2RpZnkgcmVhZC1vbmx5IG1lbW9yeSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGRlbGV0ZSBtZW1vcnkiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAodmlldy0+bmRpbSAhPSAxKSB7Ci0gICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKFB5SW5kZXhfQ2hlY2soa2V5KSkgewotICAgICAgICBzdGFydCA9IFB5TnVtYmVyX0FzU3NpemVfdChrZXksIE5VTEwpOwotICAgICAgICBpZiAoc3RhcnQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKHN0YXJ0IDwgMCkgewotICAgICAgICAgICAgc3RhcnQgKz0gZ2V0X3NoYXBlMCh2aWV3KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoKHN0YXJ0IDwgMCkgfHwgKHN0YXJ0ID49IGdldF9zaGFwZTAodmlldykpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5kZXggb3V0IG9mIGJvdW5kcyIpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIGxlbiA9IDE7Ci0gICAgfQotICAgIGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soa2V5KSkgewotICAgICAgICBQeV9zc2l6ZV90IHN0b3AsIHN0ZXA7Ci0KLSAgICAgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KGtleSwgZ2V0X3NoYXBlMCh2aWV3KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZzdG9wLCAmc3RlcCwgJmxlbikgPCAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHN0ZXAgIT0gMSkgewotICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJjYW5ub3QgaW5kZXggbWVtb3J5IHVzaW5nIFwiJS4yMDBzXCIiLCAKLSAgICAgICAgICAgIGtleS0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih2YWx1ZSwgJnNyY3ZpZXcsIFB5QlVGX0NPTlRJR19STykgPT0gLTEpIHsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICAvKiBYWFggc2hvdWxkIHdlIGFsbG93IGFzc2lnbm1lbnQgb2YgZGlmZmVyZW50IGl0ZW0gc2l6ZXMKLSAgICAgICBhcyBsb25nIGFzIHRoZSBieXRlIGxlbmd0aCBpcyB0aGUgc2FtZT8KLSAgICAgICAoZS5nLiBhc3NpZ24gMiBzaG9ydHMgdG8gYSA0LWJ5dGUgc2xpY2UpICovCi0gICAgaWYgKHNyY3ZpZXcuaXRlbXNpemUgIT0gdmlldy0+aXRlbXNpemUpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJtaXNtYXRjaGluZyBpdGVtIHNpemVzIGZvciBcIiUuMjAwc1wiIGFuZCBcIiUuMjAwc1wiIiwgCi0gICAgICAgICAgICB2aWV3LT5vYmotPm9iX3R5cGUtPnRwX25hbWUsIHNyY3ZpZXcub2JqLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgZ290byBfZXJyb3I7Ci0gICAgfQotICAgIGJ5dGVsZW4gPSBsZW4gKiB2aWV3LT5pdGVtc2l6ZTsKLSAgICBpZiAoYnl0ZWxlbiAhPSBzcmN2aWV3LmxlbikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICJjYW5ub3QgbW9kaWZ5IHNpemUgb2YgbWVtb3J5dmlldyBvYmplY3QiKTsKLSAgICAgICAgZ290byBfZXJyb3I7Ci0gICAgfQotICAgIC8qIERvIHRoZSBhY3R1YWwgY29weSAqLwotICAgIGRlc3RidWYgPSAoY2hhciAqKSB2aWV3LT5idWYgKyBzdGFydCAqIHZpZXctPml0ZW1zaXplOwotICAgIHNyY2J1ZiA9IChjaGFyICopIHNyY3ZpZXcuYnVmOwotICAgIGlmIChkZXN0YnVmICsgYnl0ZWxlbiA8IHNyY2J1ZiB8fCBzcmNidWYgKyBieXRlbGVuIDwgZGVzdGJ1ZikKLSAgICAgICAgLyogTm8gb3ZlcmxhcHBpbmcgKi8KLSAgICAgICAgbWVtY3B5KGRlc3RidWYsIHNyY2J1ZiwgYnl0ZWxlbik7Ci0gICAgZWxzZQotICAgICAgICBtZW1tb3ZlKGRlc3RidWYsIHNyY2J1ZiwgYnl0ZWxlbik7Ci0KLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzcmN2aWV3KTsKLSAgICByZXR1cm4gMDsKLQotX2Vycm9yOgotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNyY3ZpZXcpOwotICAgIHJldHVybiAtMTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLW1lbW9yeV9yaWNoY29tcGFyZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncsIGludCBvcCkKLXsKLSAgICBQeV9idWZmZXIgdnYsIHd3OwotICAgIGludCBlcXVhbCA9IDA7Ci0gICAgUHlPYmplY3QgKnJlczsKLQotICAgIHZ2Lm9iaiA9IE5VTEw7Ci0gICAgd3cub2JqID0gTlVMTDsKLSAgICBpZiAob3AgIT0gUHlfRVEgJiYgb3AgIT0gUHlfTkUpCi0gICAgICAgIGdvdG8gX25vdGltcGw7Ci0gICAgaWYgKChQeU1lbW9yeVZpZXdfQ2hlY2sodikgJiYgSVNfUkVMRUFTRUQodikpIHx8Ci0gICAgICAgIChQeU1lbW9yeVZpZXdfQ2hlY2sodykgJiYgSVNfUkVMRUFTRUQodykpKSB7Ci0gICAgICAgIGVxdWFsID0gKHYgPT0gdyk7Ci0gICAgICAgIGdvdG8gX2VuZDsKLSAgICB9Ci0gICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih2LCAmdnYsIFB5QlVGX0NPTlRJR19STykgPT0gLTEpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgZ290byBfbm90aW1wbDsKLSAgICB9Ci0gICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih3LCAmd3csIFB5QlVGX0NPTlRJR19STykgPT0gLTEpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgZ290byBfbm90aW1wbDsKLSAgICB9Ci0KLSAgICBpZiAodnYuaXRlbXNpemUgIT0gd3cuaXRlbXNpemUgfHwgdnYubGVuICE9IHd3LmxlbikKLSAgICAgICAgZ290byBfZW5kOwotCi0gICAgZXF1YWwgPSAhbWVtY21wKHZ2LmJ1Ziwgd3cuYnVmLCB2di5sZW4pOwotCi1fZW5kOgotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZ2KTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ3dyk7Ci0gICAgaWYgKChlcXVhbCAmJiBvcCA9PSBQeV9FUSkgfHwgKCFlcXVhbCAmJiBvcCA9PSBQeV9ORSkpCi0gICAgICAgIHJlcyA9IFB5X1RydWU7Ci0gICAgZWxzZQotICAgICAgICByZXMgPSBQeV9GYWxzZTsKLSAgICBQeV9JTkNSRUYocmVzKTsKLSAgICByZXR1cm4gcmVzOwotCi1fbm90aW1wbDoKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2dik7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmd3cpOwotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotfQotCi0KLXN0YXRpYyBpbnQKLW1lbW9yeV90cmF2ZXJzZShQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQotewotICAgIGlmIChzZWxmLT52aWV3Lm9iaiAhPSBOVUxMKQotICAgICAgICBQeV9WSVNJVChzZWxmLT52aWV3Lm9iaik7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQKLW1lbW9yeV9jbGVhcihQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmc2VsZi0+dmlldyk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLQotLyogQXMgbWFwcGluZyAqLwotc3RhdGljIFB5TWFwcGluZ01ldGhvZHMgbWVtb3J5X2FzX21hcHBpbmcgPSB7Ci0gICAgKGxlbmZ1bmMpbWVtb3J5X2xlbmd0aCwgICAgICAgICAgICAgICAvKiBtcF9sZW5ndGggKi8KLSAgICAoYmluYXJ5ZnVuYyltZW1vcnlfc3Vic2NyaXB0LCAgICAgICAgIC8qIG1wX3N1YnNjcmlwdCAqLwotICAgIChvYmpvYmphcmdwcm9jKW1lbW9yeV9hc3Nfc3ViLCAgICAgICAgLyogbXBfYXNzX3N1YnNjcmlwdCAqLwotfTsKLQotc3RhdGljIFB5U2VxdWVuY2VNZXRob2RzIG1lbW9yeV9hc19zZXF1ZW5jZSA9IHsKLSAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfbGVuZ3RoICovCi0gICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2NvbmNhdCAqLwotICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9yZXBlYXQgKi8KLSAgICAgICAgKHNzaXplYXJnZnVuYyltZW1vcnlfaXRlbSwgICAgICAgICAgLyogc3FfaXRlbSAqLwotfTsKLQotLyogQnVmZmVyIG1ldGhvZHMgKi8KLQotc3RhdGljIFB5QnVmZmVyUHJvY3MgbWVtb3J5X2FzX2J1ZmZlciA9IHsKLSAgICAoZ2V0YnVmZmVycHJvYyltZW1vcnlfZ2V0YnVmLCAgICAgICAgIC8qIGJmX2dldGJ1ZmZlciAqLwotICAgIChyZWxlYXNlYnVmZmVycHJvYyltZW1vcnlfcmVsZWFzZWJ1ZiwgLyogYmZfcmVsZWFzZWJ1ZmZlciAqLworICAgIHsicmVsZWFzZSIsICAgICAoUHlDRnVuY3Rpb24pbWVtb3J5X3JlbGVhc2UsIE1FVEhfTk9BUkdTLCBtZW1vcnlfcmVsZWFzZV9kb2N9LAorICAgIHsidG9ieXRlcyIsICAgICAoUHlDRnVuY3Rpb24pbWVtb3J5X3RvYnl0ZXMsIE1FVEhfTk9BUkdTLCBtZW1vcnlfdG9ieXRlc19kb2N9LAorICAgIHsidG9saXN0IiwgICAgICAoUHlDRnVuY3Rpb24pbWVtb3J5X3RvbGlzdCwgTUVUSF9OT0FSR1MsIG1lbW9yeV90b2xpc3RfZG9jfSwKKyAgICB7ImNhc3QiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKW1lbW9yeV9jYXN0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgbWVtb3J5X2Nhc3RfZG9jfSwKKyAgICB7Il9fZW50ZXJfXyIsICAgbWVtb3J5X2VudGVyLCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAgeyJfX2V4aXRfXyIsICAgIG1lbW9yeV9leGl0LCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICAgIHtOVUxMLCAgICAgICAgICBOVUxMfQogfTsKIAogCiBQeVR5cGVPYmplY3QgUHlNZW1vcnlWaWV3X1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKLSAgICAibWVtb3J5dmlldyIsCi0gICAgc2l6ZW9mKFB5TWVtb3J5Vmlld09iamVjdCksCi0gICAgMCwKKyAgICAibWVtb3J5dmlldyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgb2Zmc2V0b2YoUHlNZW1vcnlWaWV3T2JqZWN0LCBvYl9hcnJheSksICAgLyogdHBfYmFzaWNzaXplICovCisgICAgc2l6ZW9mKFB5X3NzaXplX3QpLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAoZGVzdHJ1Y3RvciltZW1vcnlfZGVhbGxvYywgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCkBAIC04NjIsNyArMjk1OCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgJm1lbW9yeV9hc19zZXF1ZW5jZSwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KICAgICAmbWVtb3J5X2FzX21hcHBpbmcsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIChoYXNoZnVuYyltZW1vcnlfaGFzaCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KQEAgLTg3Myw3ICsyOTY5LDcgQEAKICAgICAodHJhdmVyc2Vwcm9jKW1lbW9yeV90cmF2ZXJzZSwgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIChpbnF1aXJ5KW1lbW9yeV9jbGVhciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgbWVtb3J5X3JpY2hjb21wYXJlLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIG9mZnNldG9mKFB5TWVtb3J5Vmlld09iamVjdCwgd2Vha3JlZmxpc3QpLC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgbWVtb3J5X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tZXRob2RvYmplY3QuYyBiL09iamVjdHMvbWV0aG9kb2JqZWN0LmMKaW5kZXggZjFhOWY0Yi4uNjBkZjMwMiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tZXRob2RvYmplY3QuYworKysgYi9PYmplY3RzL21ldGhvZG9iamVjdC5jCkBAIC00NCw3ICs0NCw3IEBACiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuICgoUHlDRnVuY3Rpb25PYmplY3QgKilvcCkgLT4gbV9tbCAtPiBtbF9tZXRoOworICAgIHJldHVybiBQeUNGdW5jdGlvbl9HRVRfRlVOQ1RJT04ob3ApOwogfQogCiBQeU9iamVjdCAqCkBAIC01NCw3ICs1NCw3IEBACiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuICgoUHlDRnVuY3Rpb25PYmplY3QgKilvcCkgLT4gbV9zZWxmOworICAgIHJldHVybiBQeUNGdW5jdGlvbl9HRVRfU0VMRihvcCk7CiB9CiAKIGludApAQCAtNjQsNyArNjQsNyBAQAogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICByZXR1cm4gKChQeUNGdW5jdGlvbk9iamVjdCAqKW9wKSAtPiBtX21sIC0+IG1sX2ZsYWdzOworICAgIHJldHVybiBQeUNGdW5jdGlvbl9HRVRfRkxBR1Mob3ApOwogfQogCiBQeU9iamVjdCAqCkBAIC0xNTEsNiArMTUxLDQxIEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKG0tPm1fbWwtPm1sX25hbWUpOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbWV0aF9nZXRfX3F1YWxuYW1lX18oUHlDRnVuY3Rpb25PYmplY3QgKm0sIHZvaWQgKmNsb3N1cmUpCit7CisgICAgLyogSWYgX19zZWxmX18gaXMgYSBtb2R1bGUgb3IgTlVMTCwgcmV0dXJuIG0uX19uYW1lX18KKyAgICAgICAoZS5nLiBsZW4uX19xdWFsbmFtZV9fID09ICdsZW4nKQorCisgICAgICAgSWYgX19zZWxmX18gaXMgYSB0eXBlLCByZXR1cm4gbS5fX3NlbGZfXy5fX3F1YWxuYW1lX18gKyAnLicgKyBtLl9fbmFtZV9fCisgICAgICAgKGUuZy4gZGljdC5mcm9ta2V5cy5fX3F1YWxuYW1lX18gPT0gJ2RpY3QuZnJvbWtleXMnKQorCisgICAgICAgT3RoZXJ3aXNlIHJldHVybiB0eXBlKG0uX19zZWxmX18pLl9fcXVhbG5hbWVfXyArICcuJyArIG0uX19uYW1lX18KKyAgICAgICAoZS5nLiBbXS5hcHBlbmQuX19xdWFsbmFtZV9fID09ICdsaXN0LmFwcGVuZCcpICovCisgICAgUHlPYmplY3QgKnR5cGUsICp0eXBlX3F1YWxuYW1lLCAqcmVzOworICAgIF9QeV9JREVOVElGSUVSKF9fcXVhbG5hbWVfXyk7CisKKyAgICBpZiAobS0+bV9zZWxmID09IE5VTEwgfHwgUHlNb2R1bGVfQ2hlY2sobS0+bV9zZWxmKSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKG0tPm1fbWwtPm1sX25hbWUpOworCisgICAgdHlwZSA9IFB5VHlwZV9DaGVjayhtLT5tX3NlbGYpID8gbS0+bV9zZWxmIDogKFB5T2JqZWN0KilQeV9UWVBFKG0tPm1fc2VsZik7CisKKyAgICB0eXBlX3F1YWxuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZCh0eXBlLCAmUHlJZF9fX3F1YWxuYW1lX18pOworICAgIGlmICh0eXBlX3F1YWxuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodHlwZV9xdWFsbmFtZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIjxtZXRob2Q+Ll9fY2xhc3NfXy4iCisgICAgICAgICAgICAgICAgICAgICAgICAiX19xdWFsbmFtZV9fIGlzIG5vdCBhIHVuaWNvZGUgb2JqZWN0Iik7CisgICAgICAgIFB5X1hERUNSRUYodHlwZV9xdWFsbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlUy4lcyIsIHR5cGVfcXVhbG5hbWUsIG0tPm1fbWwtPm1sX25hbWUpOworICAgIFB5X0RFQ1JFRih0eXBlX3F1YWxuYW1lKTsKKyAgICByZXR1cm4gcmVzOworfQorCiBzdGF0aWMgaW50CiBtZXRoX3RyYXZlcnNlKFB5Q0Z1bmN0aW9uT2JqZWN0ICptLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKQEAgLTE2NCw3ICsxOTksNyBAQAogewogICAgIFB5T2JqZWN0ICpzZWxmOwogCi0gICAgc2VsZiA9IG0tPm1fc2VsZjsKKyAgICBzZWxmID0gUHlDRnVuY3Rpb25fR0VUX1NFTEYobSk7CiAgICAgaWYgKHNlbGYgPT0gTlVMTCkKICAgICAgICAgc2VsZiA9IFB5X05vbmU7CiAgICAgUHlfSU5DUkVGKHNlbGYpOwpAQCAtMTc0LDYgKzIwOSw3IEBACiBzdGF0aWMgUHlHZXRTZXREZWYgbWV0aF9nZXRzZXRzIFtdID0gewogICAgIHsiX19kb2NfXyIsICAoZ2V0dGVyKW1ldGhfZ2V0X19kb2NfXywgIE5VTEwsIE5VTEx9LAogICAgIHsiX19uYW1lX18iLCAoZ2V0dGVyKW1ldGhfZ2V0X19uYW1lX18sIE5VTEwsIE5VTEx9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlciltZXRoX2dldF9fcXVhbG5hbWVfXywgTlVMTCwgTlVMTH0sCiAgICAgeyJfX3NlbGZfXyIsIChnZXR0ZXIpbWV0aF9nZXRfX3NlbGZfXywgTlVMTCwgTlVMTH0sCiAgICAgezB9CiB9OwpAQCAtMjA4LDggKzI0NCw3IEBACiAgICAgICAgICFQeUNGdW5jdGlvbl9DaGVjayhzZWxmKSB8fAogICAgICAgICAhUHlDRnVuY3Rpb25fQ2hlY2sob3RoZXIpKQogICAgIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQogICAgIGEgPSAoUHlDRnVuY3Rpb25PYmplY3QgKilzZWxmOwogICAgIGIgPSAoUHlDRnVuY3Rpb25PYmplY3QgKilvdGhlcjsKQEAgLTMwMyw2ICszMzgsMTUgQEAKICAgICAodm9pZClQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0KCk7CiB9CiAKKy8qIFByaW50IHN1bW1hcnkgaW5mbyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIG9wdGltaXplZCBhbGxvY2F0b3IgKi8KK3ZvaWQKK19QeUNGdW5jdGlvbl9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCkKK3sKKyAgICBfUHlEZWJ1Z0FsbG9jYXRvclN0YXRzKG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmVlIFB5Q0Z1bmN0aW9uT2JqZWN0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1mcmVlLCBzaXplb2YoUHlDRnVuY3Rpb25PYmplY3QpKTsKK30KKwogLyogUHlDRnVuY3Rpb25fTmV3KCkgaXMgbm93IGp1c3QgYSBtYWNybyB0aGF0IGNhbGxzIFB5Q0Z1bmN0aW9uX05ld0V4KCksCiAgICBidXQgaXQncyBwYXJ0IG9mIHRoZSBBUEkgc28gd2UgbmVlZCB0byBrZWVwIGEgZnVuY3Rpb24gYXJvdW5kIHRoYXQKICAgIGV4aXN0aW5nIEMgZXh0ZW5zaW9ucyBjYW4gY2FsbC4KZGlmZiAtLWdpdCBhL09iamVjdHMvbW9kdWxlb2JqZWN0LmMgYi9PYmplY3RzL21vZHVsZW9iamVjdC5jCmluZGV4IDUzM2RiNDYuLjJmMmJkMzYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbW9kdWxlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9tb2R1bGVvYmplY3QuYwpAQCAtMjcsMzYgKzI3LDQ1IEBACiAKIAogUHlPYmplY3QgKgotUHlNb2R1bGVfTmV3KGNvbnN0IGNoYXIgKm5hbWUpCitQeU1vZHVsZV9OZXdPYmplY3QoUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgUHlNb2R1bGVPYmplY3QgKm07Ci0gICAgUHlPYmplY3QgKm5hbWVvYmo7CiAgICAgbSA9IFB5T2JqZWN0X0dDX05ldyhQeU1vZHVsZU9iamVjdCwgJlB5TW9kdWxlX1R5cGUpOwogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIG0tPm1kX2RlZiA9IE5VTEw7CiAgICAgbS0+bWRfc3RhdGUgPSBOVUxMOwotICAgIG5hbWVvYmogPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKICAgICBtLT5tZF9kaWN0ID0gUHlEaWN0X05ldygpOwotICAgIGlmIChtLT5tZF9kaWN0ID09IE5VTEwgfHwgbmFtZW9iaiA9PSBOVUxMKQorICAgIGlmIChtLT5tZF9kaWN0ID09IE5VTEwpCiAgICAgICAgIGdvdG8gZmFpbDsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobS0+bWRfZGljdCwgIl9fbmFtZV9fIiwgbmFtZW9iaikgIT0gMCkKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobS0+bWRfZGljdCwgIl9fbmFtZV9fIiwgbmFtZSkgIT0gMCkKICAgICAgICAgZ290byBmYWlsOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtLT5tZF9kaWN0LCAiX19kb2NfXyIsIFB5X05vbmUpICE9IDApCiAgICAgICAgIGdvdG8gZmFpbDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobS0+bWRfZGljdCwgIl9fcGFja2FnZV9fIiwgUHlfTm9uZSkgIT0gMCkKICAgICAgICAgZ290byBmYWlsOwotICAgIFB5X0RFQ1JFRihuYW1lb2JqKTsKICAgICBQeU9iamVjdF9HQ19UcmFjayhtKTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbTsKIAogIGZhaWw6Ci0gICAgUHlfWERFQ1JFRihuYW1lb2JqKTsKICAgICBQeV9ERUNSRUYobSk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKIFB5T2JqZWN0ICoKK1B5TW9kdWxlX05ldyhjb25zdCBjaGFyICpuYW1lKQoreworICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqbW9kdWxlOworICAgIG5hbWVvYmogPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKKyAgICBpZiAobmFtZW9iaiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtb2R1bGUgPSBQeU1vZHVsZV9OZXdPYmplY3QobmFtZW9iaik7CisgICAgUHlfREVDUkVGKG5hbWVvYmopOworICAgIHJldHVybiBtb2R1bGU7Cit9CisKKworUHlPYmplY3QgKgogUHlNb2R1bGVfQ3JlYXRlMihzdHJ1Y3QgUHlNb2R1bGVEZWYqIG1vZHVsZSwgaW50IG1vZHVsZV9hcGlfdmVyc2lvbikKIHsKICAgICBQeU9iamVjdCAqZCwgKnYsICpuOwpAQCAtMTc1LDI0ICsxODQsMzUgQEAKICAgICByZXR1cm4gZDsKIH0KIAotY29uc3QgY2hhciAqCi1QeU1vZHVsZV9HZXROYW1lKFB5T2JqZWN0ICptKQorUHlPYmplY3QqCitQeU1vZHVsZV9HZXROYW1lT2JqZWN0KFB5T2JqZWN0ICptKQogewogICAgIFB5T2JqZWN0ICpkOwotICAgIFB5T2JqZWN0ICpuYW1lb2JqOworICAgIFB5T2JqZWN0ICpuYW1lOwogICAgIGlmICghUHlNb2R1bGVfQ2hlY2sobSkpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGQgPSAoKFB5TW9kdWxlT2JqZWN0ICopbSktPm1kX2RpY3Q7CiAgICAgaWYgKGQgPT0gTlVMTCB8fAotICAgICAgICAobmFtZW9iaiA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGQsICJfX25hbWVfXyIpKSA9PSBOVUxMIHx8Ci0gICAgICAgICFQeVVuaWNvZGVfQ2hlY2sobmFtZW9iaikpCisgICAgICAgIChuYW1lID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgIl9fbmFtZV9fIikpID09IE5VTEwgfHwKKyAgICAgICAgIVB5VW5pY29kZV9DaGVjayhuYW1lKSkKICAgICB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgIm5hbWVsZXNzIG1vZHVsZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZW9iaik7CisgICAgUHlfSU5DUkVGKG5hbWUpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBjaGFyICoKK1B5TW9kdWxlX0dldE5hbWUoUHlPYmplY3QgKm0pCit7CisgICAgUHlPYmplY3QgKm5hbWUgPSBQeU1vZHVsZV9HZXROYW1lT2JqZWN0KG0pOworICAgIGlmIChuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0RFQ1JFRihuYW1lKTsgICAvKiBtb2R1bGUgZGljdCBoYXMgc3RpbGwgYSByZWZlcmVuY2UgKi8KKyAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lKTsKIH0KIAogUHlPYmplY3QqCkBAIC0yMjUsNyArMjQ1LDcgQEAKICAgICBpZiAoZmlsZW9iaiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB1dGY4ID0gX1B5VW5pY29kZV9Bc1N0cmluZyhmaWxlb2JqKTsKLSAgICBQeV9ERUNSRUYoZmlsZW9iaik7CisgICAgUHlfREVDUkVGKGZpbGVvYmopOyAgIC8qIG1vZHVsZSBkaWN0IGhhcyBzdGlsbCBhIHJlZmVyZW5jZSAqLwogICAgIHJldHVybiB1dGY4OwogfQogCkBAIC0yNzEsOCArMjkxLDggQEAKICAgICBwb3MgPSAwOwogICAgIHdoaWxlIChQeURpY3RfTmV4dChkLCAmcG9zLCAma2V5LCAmdmFsdWUpKSB7CiAgICAgICAgIGlmICh2YWx1ZSAhPSBQeV9Ob25lICYmIFB5VW5pY29kZV9DaGVjayhrZXkpKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICp1ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoa2V5KTsKLSAgICAgICAgICAgIGlmICh1WzBdID09ICdfJyAmJiB1WzFdICE9ICdfJykgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEX0NIQVIoa2V5LCAwKSA9PSAnXycgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRF9DSEFSKGtleSwgMSkgIT0gJ18nKSB7CiAgICAgICAgICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnID4gMSkgewogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzID0gX1B5VW5pY29kZV9Bc1N0cmluZyhrZXkpOwogICAgICAgICAgICAgICAgICAgICBpZiAocyAhPSBOVUxMKQpAQCAtMjg5LDkgKzMwOSw4IEBACiAgICAgcG9zID0gMDsKICAgICB3aGlsZSAoUHlEaWN0X05leHQoZCwgJnBvcywgJmtleSwgJnZhbHVlKSkgewogICAgICAgICBpZiAodmFsdWUgIT0gUHlfTm9uZSAmJiBQeVVuaWNvZGVfQ2hlY2soa2V5KSkgewotICAgICAgICAgICAgUHlfVU5JQ09ERSAqdSA9IFB5VW5pY29kZV9BU19VTklDT0RFKGtleSk7Ci0gICAgICAgICAgICBpZiAodVswXSAhPSAnXycKLSAgICAgICAgICAgICAgICB8fCBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhrZXksICJfX2J1aWx0aW5zX18iKSAhPSAwKQorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEX0NIQVIoa2V5LCAwKSAhPSAnXycgfHwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhrZXksICJfX2J1aWx0aW5zX18iKSAhPSAwKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZyA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcyA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoa2V5KTsKQEAgLTM1MywyMSArMzcyLDU0IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbW9kdWxlX3JlcHIoUHlNb2R1bGVPYmplY3QgKm0pCiB7Ci0gICAgY29uc3QgY2hhciAqbmFtZTsKLSAgICBQeU9iamVjdCAqZmlsZW5hbWUsICpyZXByOworICAgIFB5T2JqZWN0ICpuYW1lLCAqZmlsZW5hbWUsICpyZXByLCAqbG9hZGVyID0gTlVMTDsKIAotICAgIG5hbWUgPSBQeU1vZHVsZV9HZXROYW1lKChQeU9iamVjdCAqKW0pOworICAgIC8qIFNlZSBpZiB0aGUgbW9kdWxlIGhhcyBhbiBfX2xvYWRlcl9fLiAgSWYgaXQgZG9lcywgZ2l2ZSB0aGUgbG9hZGVyIHRoZQorICAgICAqIGZpcnN0IHNob3QgYXQgcHJvZHVjaW5nIGEgcmVwciBmb3IgdGhlIG1vZHVsZS4KKyAgICAgKi8KKyAgICBpZiAobS0+bWRfZGljdCAhPSBOVUxMKSB7CisgICAgICAgIGxvYWRlciA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG0tPm1kX2RpY3QsICJfX2xvYWRlcl9fIik7CisgICAgfQorICAgIGlmIChsb2FkZXIgIT0gTlVMTCkgeworICAgICAgICByZXByID0gUHlPYmplY3RfQ2FsbE1ldGhvZChsb2FkZXIsICJtb2R1bGVfcmVwciIsICIoTykiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKiltLCBOVUxMKTsKKyAgICAgICAgaWYgKHJlcHIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiByZXByOworICAgICAgICB9CisgICAgfQorICAgIC8qIF9fbG9hZGVyX18ubW9kdWxlX3JlcHIobSkgZGlkIG5vdCBwcm92aWRlIHVzIHdpdGggYSByZXByLiAgTmV4dCwgc2VlIGlmCisgICAgICogdGhlIG1vZHVsZSBoYXMgYW4gX19maWxlX18uICBJZiBpdCBkb2Vzbid0IHRoZW4gdXNlIHJlcHIoX19sb2FkZXJfXykgaWYKKyAgICAgKiBpdCBleGlzdHMsIG90aGVyd2lzZSwganVzdCB1c2UgbW9kdWxlLl9fbmFtZV9fLgorICAgICAqLworICAgIG5hbWUgPSBQeU1vZHVsZV9HZXROYW1lT2JqZWN0KChQeU9iamVjdCAqKW0pOwogICAgIGlmIChuYW1lID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgbmFtZSA9ICI/IjsKKyAgICAgICAgbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgiPyIsIDEpOworICAgICAgICBpZiAobmFtZSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGZpbGVuYW1lID0gUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QoKFB5T2JqZWN0ICopbSk7CiAgICAgaWYgKGZpbGVuYW1lID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8bW9kdWxlICclcycgKGJ1aWx0LWluKT4iLCBuYW1lKTsKKyAgICAgICAgLyogVGhlcmUncyBubyBtLl9fZmlsZV9fLCBzbyBpZiB0aGVyZSB3YXMgYW4gX19sb2FkZXJfXywgdXNlIHRoYXQgaW4KKyAgICAgICAgICogdGhlIHJlcHIsIG90aGVyd2lzZSwgdGhlIG9ubHkgdGhpbmcgeW91IGNhbiB1c2UgaXMgbS5fX25hbWVfXworICAgICAgICAgKi8KKyAgICAgICAgaWYgKGxvYWRlciA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxtb2R1bGUgJVI+IiwgbmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxtb2R1bGUgJVIgKCVSKT4iLCBuYW1lLCBsb2FkZXIpOworICAgICAgICB9CiAgICAgfQotICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPG1vZHVsZSAnJXMnIGZyb20gJyVVJz4iLCBuYW1lLCBmaWxlbmFtZSk7Ci0gICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKKyAgICAvKiBGaW5hbGx5LCB1c2UgbS5fX2ZpbGVfXyAqLworICAgIGVsc2UgeworICAgICAgICByZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxtb2R1bGUgJVIgZnJvbSAlUj4iLCBuYW1lLCBmaWxlbmFtZSk7CisgICAgICAgIFB5X0RFQ1JFRihmaWxlbmFtZSk7CisgICAgfQorICAgIFB5X0RFQ1JFRihuYW1lKTsKICAgICByZXR1cm4gcmVwcjsKIH0KIApAQCAtMzk1LDYgKzQ0NywzNSBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbW9kdWxlX2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgX1B5X0lERU5USUZJRVIoX19kaWN0X18pOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLCAmUHlJZF9fX2RpY3RfXyk7CisKKyAgICBpZiAoZGljdCAhPSBOVUxMKSB7CisgICAgICAgIGlmIChQeURpY3RfQ2hlY2soZGljdCkpCisgICAgICAgICAgICByZXN1bHQgPSBQeURpY3RfS2V5cyhkaWN0KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lID0gUHlNb2R1bGVfR2V0TmFtZShzZWxmKTsKKyAgICAgICAgICAgIGlmIChuYW1lKQorICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMuX19kaWN0X18gaXMgbm90IGEgZGljdGlvbmFyeSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOworICAgICAgICB9CisgICAgfQorCisgICAgUHlfWERFQ1JFRihkaWN0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlNZXRob2REZWYgbW9kdWxlX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fZGlyX18iLCBtb2R1bGVfZGlyLCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfX2Rpcl9fKCkgLT4gbGlzdFxuc3BlY2lhbGl6ZWQgZGlyKCkgaW1wbGVtZW50YXRpb24iKX0sCisgICAgezB9Cit9OworCiAKIFB5RG9jX1NUUlZBUihtb2R1bGVfZG9jLAogIm1vZHVsZShuYW1lWywgZG9jXSlcblwKQEAgLTQzMSw3ICs1MTIsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgbW9kdWxlX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgbW9kdWxlX21lbWJlcnMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMgYi9PYmplY3RzL25hbWVzcGFjZW9iamVjdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjc4ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL25hbWVzcGFjZW9iamVjdC5jCkBAIC0wLDAgKzEsMjI1IEBACisvKiBuYW1lc3BhY2Ugb2JqZWN0IGltcGxlbWVudGF0aW9uICovCisKKyNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5T2JqZWN0ICpuc19kaWN0OworfSBfUHlOYW1lc3BhY2VPYmplY3Q7CisKKworc3RhdGljIFB5TWVtYmVyRGVmIG5hbWVzcGFjZV9tZW1iZXJzW10gPSB7CisgICAgeyJfX2RpY3RfXyIsIFRfT0JKRUNULCBvZmZzZXRvZihfUHlOYW1lc3BhY2VPYmplY3QsIG5zX2RpY3QpLCBSRUFET05MWX0sCisgICAge05VTEx9Cit9OworCisKKy8qIE1ldGhvZHMgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK25hbWVzcGFjZV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKnNlbGY7CisKKyAgICBhc3NlcnQodHlwZSAhPSBOVUxMICYmIHR5cGUtPnRwX2FsbG9jICE9IE5VTEwpOworICAgIHNlbGYgPSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CisgICAgICAgIF9QeU5hbWVzcGFjZU9iamVjdCAqbnMgPSAoX1B5TmFtZXNwYWNlT2JqZWN0ICopc2VsZjsKKyAgICAgICAgbnMtPm5zX2RpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgICAgIGlmIChucy0+bnNfZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobnMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKworc3RhdGljIGludAorbmFtZXNwYWNlX2luaXQoX1B5TmFtZXNwYWNlT2JqZWN0ICpucywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIC8qIGlnbm9yZSBhcmdzIGlmIGl0J3MgTlVMTCBvciBlbXB0eSAqLworICAgIGlmIChhcmdzICE9IE5VTEwpIHsKKyAgICAgICAgUHlfc3NpemVfdCBhcmdjb3VudCA9IFB5T2JqZWN0X1NpemUoYXJncyk7CisgICAgICAgIGlmIChhcmdjb3VudCA8IDApCisgICAgICAgICAgICByZXR1cm4gYXJnY291bnQ7CisgICAgICAgIGVsc2UgaWYgKGFyZ2NvdW50ID4gMCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIm5vIHBvc2l0aW9uYWwgYXJndW1lbnRzIGV4cGVjdGVkIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGt3ZHMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIFB5RGljdF9VcGRhdGUobnMtPm5zX2RpY3QsIGt3ZHMpOworfQorCisKK3N0YXRpYyB2b2lkCituYW1lc3BhY2VfZGVhbGxvYyhfUHlOYW1lc3BhY2VPYmplY3QgKm5zKQoreworICAgIFB5T2JqZWN0X0dDX1VuVHJhY2sobnMpOworICAgIFB5X0NMRUFSKG5zLT5uc19kaWN0KTsKKyAgICBQeV9UWVBFKG5zKS0+dHBfZnJlZSgoUHlPYmplY3QgKilucyk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK25hbWVzcGFjZV9yZXByKF9QeU5hbWVzcGFjZU9iamVjdCAqbnMpCit7CisgICAgaW50IGksIGxvb3BfZXJyb3IgPSAwOworICAgIFB5T2JqZWN0ICpwYWlycyA9IE5VTEwsICpkID0gTlVMTCwgKmtleXMgPSBOVUxMLCAqa2V5c19pdGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqa2V5OworICAgIFB5T2JqZWN0ICpzZXBhcmF0b3IsICpwYWlyc3JlcHIsICpyZXByID0gTlVMTDsKKworICAgIGkgPSBQeV9SZXByRW50ZXIoKFB5T2JqZWN0ICopbnMpOworICAgIGlmIChpICE9IDApIHsKKyAgICAgICAgcmV0dXJuIGkgPiAwID8gUHlVbmljb2RlX0Zyb21TdHJpbmcoIm5hbWVzcGFjZSguLi4pIikgOiBOVUxMOworICAgIH0KKworICAgIHBhaXJzID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAocGFpcnMgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGQgPSAoKF9QeU5hbWVzcGFjZU9iamVjdCAqKW5zKS0+bnNfZGljdDsKKyAgICBhc3NlcnQoZCAhPSBOVUxMKTsKKyAgICBQeV9JTkNSRUYoZCk7CisKKyAgICBrZXlzID0gUHlEaWN0X0tleXMoZCk7CisgICAgaWYgKGtleXMgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoUHlMaXN0X1NvcnQoa2V5cykgIT0gMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGtleXNfaXRlciA9IFB5T2JqZWN0X0dldEl0ZXIoa2V5cyk7CisgICAgaWYgKGtleXNfaXRlciA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgd2hpbGUgKChrZXkgPSBQeUl0ZXJfTmV4dChrZXlzX2l0ZXIpKSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soa2V5KSAmJiBQeVVuaWNvZGVfR0VUX1NJWkUoa2V5KSA+IDApIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSwgKml0ZW07CisKKyAgICAgICAgICAgIHZhbHVlID0gUHlEaWN0X0dldEl0ZW0oZCwga2V5KTsKKyAgICAgICAgICAgIGFzc2VydCh2YWx1ZSAhPSBOVUxMKTsKKworICAgICAgICAgICAgaXRlbSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlUz0lUiIsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGxvb3BfZXJyb3IgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbG9vcF9lcnJvciA9IFB5TGlzdF9BcHBlbmQocGFpcnMsIGl0ZW0pOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICBpZiAobG9vcF9lcnJvcikKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgc2VwYXJhdG9yID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiwgIik7CisgICAgaWYgKHNlcGFyYXRvciA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgcGFpcnNyZXByID0gUHlVbmljb2RlX0pvaW4oc2VwYXJhdG9yLCBwYWlycyk7CisgICAgUHlfREVDUkVGKHNlcGFyYXRvcik7CisgICAgaWYgKHBhaXJzcmVwciA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyglUykiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFB5T2JqZWN0ICopbnMpLT5vYl90eXBlLT50cF9uYW1lLCBwYWlyc3JlcHIpOworICAgIFB5X0RFQ1JFRihwYWlyc3JlcHIpOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHBhaXJzKTsKKyAgICBQeV9YREVDUkVGKGQpOworICAgIFB5X1hERUNSRUYoa2V5cyk7CisgICAgUHlfWERFQ1JFRihrZXlzX2l0ZXIpOworICAgIFB5X1JlcHJMZWF2ZSgoUHlPYmplY3QgKilucyk7CisKKyAgICByZXR1cm4gcmVwcjsKK30KKworCitzdGF0aWMgaW50CituYW1lc3BhY2VfdHJhdmVyc2UoX1B5TmFtZXNwYWNlT2JqZWN0ICpucywgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQobnMtPm5zX2RpY3QpOworICAgIHJldHVybiAwOworfQorCisKK3N0YXRpYyBpbnQKK25hbWVzcGFjZV9jbGVhcihfUHlOYW1lc3BhY2VPYmplY3QgKm5zKQoreworICAgIFB5X0NMRUFSKG5zLT5uc19kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworCitQeURvY19TVFJWQVIobmFtZXNwYWNlX2RvYywKKyJBIHNpbXBsZSBhdHRyaWJ1dGUtYmFzZWQgbmFtZXNwYWNlLlxuXAorXG5cCituYW1lc3BhY2UoKiprd2FyZ3MpIik7CisKK1B5VHlwZU9iamVjdCBfUHlOYW1lc3BhY2VfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJuYW1lc3BhY2UiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihfUHlOYW1lc3BhY2VPYmplY3QpLCAgICAgICAgICAgICAgICAgLyogdHBfc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3RvciluYW1lc3BhY2VfZGVhbGxvYywgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIChyZXByZnVuYyluYW1lc3BhY2VfcmVwciwgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8CisgICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIG5hbWVzcGFjZV9kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyluYW1lc3BhY2VfdHJhdmVyc2UsICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KW5hbWVzcGFjZV9jbGVhciwgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBuYW1lc3BhY2VfbWVtYmVycywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICBvZmZzZXRvZihfUHlOYW1lc3BhY2VPYmplY3QsIG5zX2RpY3QpLCAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2MpbmFtZXNwYWNlX2luaXQsICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgKG5ld2Z1bmMpbmFtZXNwYWNlX25ldywgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KK307CisKKworUHlPYmplY3QgKgorX1B5TmFtZXNwYWNlX05ldyhQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqbnMgPSBuYW1lc3BhY2VfbmV3KCZfUHlOYW1lc3BhY2VfVHlwZSwgTlVMTCwgTlVMTCk7CisgICAgaWYgKG5zID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGt3ZHMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIG5zOworICAgIGlmIChQeURpY3RfVXBkYXRlKCgoX1B5TmFtZXNwYWNlT2JqZWN0ICopbnMpLT5uc19kaWN0LCBrd2RzKSAhPSAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihucyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiAoUHlPYmplY3QgKiluczsKK30KZGlmZiAtLWdpdCBhL09iamVjdHMvb2JqZWN0LmMgYi9PYmplY3RzL29iamVjdC5jCmluZGV4IDI4YmI5YzEuLjk0OWU3ZGMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9vYmplY3QuYwpAQCAtMSw1ICsxLDUgQEAKIAotLyogR2VuZXJpYyBvYmplY3Qgb3BlcmF0aW9uczsgYW5kIGltcGxlbWVudGF0aW9uIG9mIE5vbmUgKE5vT2JqZWN0KSAqLworLyogR2VuZXJpYyBvYmplY3Qgb3BlcmF0aW9uczsgYW5kIGltcGxlbWVudGF0aW9uIG9mIE5vbmUgKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgImZyYW1lb2JqZWN0LmgiCkBAIC0yOSw4ICsyOSw2IEBACiB9CiAjZW5kaWYgLyogUHlfUkVGX0RFQlVHICovCiAKLWludCBQeV9EaXZpc2lvbldhcm5pbmdGbGFnOwotCiAvKiBPYmplY3QgYWxsb2NhdGlvbiByb3V0aW5lcyB1c2VkIGJ5IE5FV09CSiBhbmQgTkVXVkFST0JKIG1hY3Jvcy4KICAgIFRoZXNlIGFyZSB1c2VkIGJ5IHRoZSBpbmRpdmlkdWFsIHJvdXRpbmVzIGZvciBvYmplY3QgY3JlYXRpb24uCiAgICBEbyBub3QgY2FsbCB0aGVtIG90aGVyd2lzZSwgdGhleSBkbyBub3QgaW5pdGlhbGl6ZSB0aGUgb2JqZWN0ISAqLwpAQCAtMjk3LDkgKzI5NSw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2socykpIHsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdDsKLSAgICAgICAgICAgICAgICB0ID0gUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUocyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhY2tzbGFzaHJlcGxhY2UiKTsKKyAgICAgICAgICAgICAgICB0ID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhzLCAidXRmLTgiLCAiYmFja3NsYXNocmVwbGFjZSIpOwogICAgICAgICAgICAgICAgIGlmICh0ID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIHJldCA9IDA7CiAgICAgICAgICAgICAgICAgZWxzZSB7CkBAIC0zODIsMTMgKzM3OCwxOSBAQAogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjwlcyBvYmplY3QgYXQgJXA+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtPm9iX3R5cGUtPnRwX25hbWUsIHYpOwogICAgIHJlcyA9ICgqdi0+b2JfdHlwZS0+dHBfcmVwcikodik7Ci0gICAgaWYgKHJlcyAhPSBOVUxMICYmICFQeVVuaWNvZGVfQ2hlY2socmVzKSkgeworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2socmVzKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIl9fcmVwcl9fIHJldHVybmVkIG5vbi1zdHJpbmcgKHR5cGUgJS4yMDBzKSIsCiAgICAgICAgICAgICAgICAgICAgICByZXMtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorI2lmbmRlZiBQeV9ERUJVRworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVzKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCiAgICAgcmV0dXJuIHJlczsKIH0KIApAQCAtNDA3LDYgKzQwOSwxMCBAQAogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygiPE5VTEw+Iik7CiAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHYpKSB7CisjaWZuZGVmIFB5X0RFQlVHCisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodikgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKICAgICAgICAgUHlfSU5DUkVGKHYpOwogICAgICAgICByZXR1cm4gdjsKICAgICB9CkBAIC00MjgsNiArNDM0LDExIEBACiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisjaWZuZGVmIFB5X0RFQlVHCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXMpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOwogICAgIHJldHVybiByZXM7CiB9CiAKQEAgLTQ0MSwxMSArNDUyLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiByZXByIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBQeVVuaWNvZGUgb2JqZWN0IGJ5IFB5T2JqZWN0X1JlcHIgKi8KLSAgICBhc2NpaSA9IFB5VW5pY29kZV9FbmNvZGVBU0NJSSgKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUocmVwciksCi0gICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShyZXByKSwKLSAgICAgICAgImJhY2tzbGFzaHJlcGxhY2UiKTsKLQorICAgIGFzY2lpID0gX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHJlcHIsICJiYWNrc2xhc2hyZXBsYWNlIik7CiAgICAgUHlfREVDUkVGKHJlcHIpOwogICAgIGlmIChhc2NpaSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ2Myw3ICs0NzAsNyBAQAogUHlPYmplY3RfQnl0ZXMoUHlPYmplY3QgKnYpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCwgKmZ1bmM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpieXRlc3N0cmluZyA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX19ieXRlc19fKTsKIAogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmcoIjxOVUxMPiIpOwpAQCAtNDczLDcgKzQ4MCw3IEBACiAgICAgICAgIHJldHVybiB2OwogICAgIH0KIAotICAgIGZ1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbCh2LCAiX19ieXRlc19fIiwgJmJ5dGVzc3RyaW5nKTsKKyAgICBmdW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwodiwgJlB5SWRfX19ieXRlc19fKTsKICAgICBpZiAoZnVuYyAhPSBOVUxMKSB7CiAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZnVuYywgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKQEAgLTc0Nyw2ICs3NTQsMzMgQEAKIH0KIAogUHlfaGFzaF90CitfUHlfSGFzaEJ5dGVzKHVuc2lnbmVkIGNoYXIgKnAsIFB5X3NzaXplX3QgbGVuKQoreworICAgIFB5X3VoYXNoX3QgeDsKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICAvKgorICAgICAgV2UgbWFrZSB0aGUgaGFzaCBvZiB0aGUgZW1wdHkgc3RyaW5nIGJlIDAsIHJhdGhlciB0aGFuIHVzaW5nCisgICAgICAocHJlZml4IF4gc3VmZml4KSwgc2luY2UgdGhpcyBzbGlnaHRseSBvYmZ1c2NhdGVzIHRoZSBoYXNoIHNlY3JldAorICAgICovCisjaWZkZWYgUHlfREVCVUcKKyAgICBhc3NlcnQoX1B5X0hhc2hTZWNyZXRfSW5pdGlhbGl6ZWQpOworI2VuZGlmCisgICAgaWYgKGxlbiA9PSAwKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICB4ID0gKFB5X3VoYXNoX3QpIF9QeV9IYXNoU2VjcmV0LnByZWZpeDsKKyAgICB4IF49IChQeV91aGFzaF90KSAqcCA8PCA3OworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKKyAgICAgICAgeCA9IChfUHlIQVNIX01VTFRJUExJRVIgKiB4KSBeIChQeV91aGFzaF90KSAqcCsrOworICAgIHggXj0gKFB5X3VoYXNoX3QpIGxlbjsKKyAgICB4IF49IChQeV91aGFzaF90KSBfUHlfSGFzaFNlY3JldC5zdWZmaXg7CisgICAgaWYgKHggPT0gLTEpCisgICAgICAgIHggPSAtMjsKKyAgICByZXR1cm4geDsKK30KKworUHlfaGFzaF90CiBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQoUHlPYmplY3QgKnYpCiB7CiAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgInVuaGFzaGFibGUgdHlwZTogJyUuMjAwcyciLApAQCAtNzg4LDcgKzgyMiw3IEBACiAgICAgaWYgKHcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmVzID0gUHlPYmplY3RfR2V0QXR0cih2LCB3KTsKLSAgICBQeV9YREVDUkVGKHcpOworICAgIFB5X0RFQ1JFRih3KTsKICAgICByZXR1cm4gcmVzOwogfQogCkBAIC04MjAsNiArODU0LDYyIEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAoraW50CitfUHlPYmplY3RfSXNBYnN0cmFjdChQeU9iamVjdCAqb2JqKQoreworICAgIGludCByZXM7CisgICAgUHlPYmplY3QqIGlzYWJzdHJhY3Q7CisgICAgX1B5X0lERU5USUZJRVIoX19pc2Fic3RyYWN0bWV0aG9kX18pOworCisgICAgaWYgKG9iaiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlzYWJzdHJhY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfX19pc2Fic3RyYWN0bWV0aG9kX18pOworICAgIGlmIChpc2Fic3RyYWN0ID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXMgPSBQeU9iamVjdF9Jc1RydWUoaXNhYnN0cmFjdCk7CisgICAgUHlfREVDUkVGKGlzYWJzdHJhY3QpOworICAgIHJldHVybiByZXM7Cit9CisKK1B5T2JqZWN0ICoKK19QeU9iamVjdF9HZXRBdHRySWQoUHlPYmplY3QgKnYsIF9QeV9JZGVudGlmaWVyICpuYW1lKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKm9uYW1lID0gX1B5VW5pY29kZV9Gcm9tSWQobmFtZSk7IC8qIGJvcnJvd2VkICovCisgICAgaWYgKCFvbmFtZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gUHlPYmplY3RfR2V0QXR0cih2LCBvbmFtZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50CitfUHlPYmplY3RfSGFzQXR0cklkKFB5T2JqZWN0ICp2LCBfUHlfSWRlbnRpZmllciAqbmFtZSkKK3sKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpvbmFtZSA9IF9QeVVuaWNvZGVfRnJvbUlkKG5hbWUpOyAvKiBib3Jyb3dlZCAqLworICAgIGlmICghb25hbWUpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXN1bHQgPSBQeU9iamVjdF9IYXNBdHRyKHYsIG9uYW1lKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpbnQKK19QeU9iamVjdF9TZXRBdHRySWQoUHlPYmplY3QgKnYsIF9QeV9JZGVudGlmaWVyICpuYW1lLCBQeU9iamVjdCAqdykKK3sKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpvbmFtZSA9IF9QeVVuaWNvZGVfRnJvbUlkKG5hbWUpOyAvKiBib3Jyb3dlZCAqLworICAgIGlmICghb25hbWUpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXN1bHQgPSBQeU9iamVjdF9TZXRBdHRyKHYsIG9uYW1lLCB3KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBQeU9iamVjdCAqCiBQeU9iamVjdF9HZXRBdHRyKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqbmFtZSkKIHsKQEAgLTkzOCw2ICsxMDI4LDE5IEBACiAgICAgcmV0dXJuIG9iajsKIH0KIAorLyogQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZ2V0IGEgYnVpbHRpbiBmcm9tIGl0cyBuYW1lICovCitQeU9iamVjdCAqCitfUHlPYmplY3RfR2V0QnVpbHRpbihjb25zdCBjaGFyICpuYW1lKQoreworICAgIFB5T2JqZWN0ICptb2QsICphdHRyOworICAgIG1vZCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiYnVpbHRpbnMiKTsKKyAgICBpZiAobW9kID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGF0dHIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG1vZCwgbmFtZSk7CisgICAgUHlfREVDUkVGKG1vZCk7CisgICAgcmV0dXJuIGF0dHI7Cit9CisKIC8qIEhlbHBlciB1c2VkIHdoZW4gdGhlIF9fbmV4dF9fIG1ldGhvZCBpcyByZW1vdmVkIGZyb20gYSB0eXBlOgogICAgdHBfaXRlcm5leHQgaXMgbmV2ZXIgTlVMTCBhbmQgY2FuIGJlIHNhZmVseSBjYWxsZWQgd2l0aG91dCBjaGVja2luZwogICAgb24gZXZlcnkgaXRlcmF0aW9uLgpAQCAtOTg2LDcgKzEwODksNiBAQAogICAgICAgICBmID0gZGVzY3ItPm9iX3R5cGUtPnRwX2Rlc2NyX2dldDsKICAgICAgICAgaWYgKGYgIT0gTlVMTCAmJiBQeURlc2NyX0lzRGF0YShkZXNjcikpIHsKICAgICAgICAgICAgIHJlcyA9IGYoZGVzY3IsIG9iaiwgKFB5T2JqZWN0ICopb2JqLT5vYl90eXBlKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihkZXNjcik7CiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDE3LDcgKzExMTksNiBAQAogICAgICAgICByZXMgPSBQeURpY3RfR2V0SXRlbShkaWN0LCBuYW1lKTsKICAgICAgICAgaWYgKHJlcyAhPSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9JTkNSRUYocmVzKTsKLSAgICAgICAgICAgIFB5X1hERUNSRUYoZGVzY3IpOwogICAgICAgICAgICAgUHlfREVDUkVGKGRpY3QpOwogICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICB9CkBAIC0xMDI2LDEzICsxMTI3LDEyIEBACiAKICAgICBpZiAoZiAhPSBOVUxMKSB7CiAgICAgICAgIHJlcyA9IGYoZGVzY3IsIG9iaiwgKFB5T2JqZWN0ICopUHlfVFlQRShvYmopKTsKLSAgICAgICAgUHlfREVDUkVGKGRlc2NyKTsKICAgICAgICAgZ290byBkb25lOwogICAgIH0KIAogICAgIGlmIChkZXNjciAhPSBOVUxMKSB7CiAgICAgICAgIHJlcyA9IGRlc2NyOwotICAgICAgICAvKiBkZXNjciB3YXMgYWxyZWFkeSBpbmNyZWZlZCBhYm92ZSAqLworICAgICAgICBkZXNjciA9IE5VTEw7CiAgICAgICAgIGdvdG8gZG9uZTsKICAgICB9CiAKQEAgLTEwNDAsNiArMTE0MCw3IEBACiAgICAgICAgICAgICAgICAgICInJS41MHMnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICclVSciLAogICAgICAgICAgICAgICAgICB0cC0+dHBfbmFtZSwgbmFtZSk7CiAgIGRvbmU6CisgICAgUHlfWERFQ1JFRihkZXNjcik7CiAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgIHJldHVybiByZXM7CiB9CkBAIC0xMDY2LDE1ICsxMTY3LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICBuYW1lLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIFB5X0lOQ1JFRihuYW1lKTsKIAotICAgIGlmICh0cC0+dHBfZGljdCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeVR5cGVfUmVhZHkodHApIDwgMCkKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICB9CisgICAgaWYgKHRwLT50cF9kaWN0ID09IE5VTEwgJiYgUHlUeXBlX1JlYWR5KHRwKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIFB5X0lOQ1JFRihuYW1lKTsKIAogICAgIGRlc2NyID0gX1B5VHlwZV9Mb29rdXAodHAsIG5hbWUpOworICAgIFB5X1hJTkNSRUYoZGVzY3IpOworCiAgICAgZiA9IE5VTEw7CiAgICAgaWYgKGRlc2NyICE9IE5VTEwpIHsKICAgICAgICAgZiA9IGRlc2NyLT5vYl90eXBlLT50cF9kZXNjcl9zZXQ7CkBAIC0xMDg3LDEzICsxMTg4LDEwIEBACiAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICBkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKICAgICAgICAgaWYgKGRpY3RwdHIgIT0gTlVMTCkgewotICAgICAgICAgICAgZGljdCA9ICpkaWN0cHRyOwotICAgICAgICAgICAgaWYgKGRpY3QgPT0gTlVMTCAmJiB2YWx1ZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgICAgICAgICBpZiAoZGljdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgICAgICAgICAgKmRpY3RwdHIgPSBkaWN0OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzID0gX1B5T2JqZWN0RGljdF9TZXRJdGVtKFB5X1RZUEUob2JqKSwgZGljdHB0ciwgbmFtZSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKHJlcyA8IDAgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1lKTsKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoZGljdCAhPSBOVUxMKSB7CkBAIC0xMTAyLDkgKzEyMDAsOSBAQAogICAgICAgICAgICAgcmVzID0gUHlEaWN0X0RlbEl0ZW0oZGljdCwgbmFtZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtKGRpY3QsIG5hbWUsIHZhbHVlKTsKKyAgICAgICAgUHlfREVDUkVGKGRpY3QpOwogICAgICAgICBpZiAocmVzIDwgMCAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7Ci0gICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKICAgICAgICAgZ290byBkb25lOwogICAgIH0KIApAQCAtMTEyNCw2ICsxMjIyLDcgQEAKICAgICAgICAgICAgICAgICAgIiclLjUwcycgb2JqZWN0IGF0dHJpYnV0ZSAnJVUnIGlzIHJlYWQtb25seSIsCiAgICAgICAgICAgICAgICAgIHRwLT50cF9uYW1lLCBuYW1lKTsKICAgZG9uZToKKyAgICBQeV9YREVDUkVGKGRlc2NyKTsKICAgICBQeV9ERUNSRUYobmFtZSk7CiAgICAgcmV0dXJuIHJlczsKIH0KQEAgLTExMzQsNiArMTIzMywzMiBAQAogICAgIHJldHVybiBfUHlPYmplY3RfR2VuZXJpY1NldEF0dHJXaXRoRGljdChvYmosIG5hbWUsIHZhbHVlLCBOVUxMKTsKIH0KIAoraW50CitQeU9iamVjdF9HZW5lcmljU2V0RGljdChQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRpY3QsICoqZGljdHB0ciA9IF9QeU9iamVjdF9HZXREaWN0UHRyKG9iaik7CisgICAgaWYgKGRpY3RwdHIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBvYmplY3QgaGFzIG5vIF9fZGljdF9fIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImNhbm5vdCBkZWxldGUgX19kaWN0X18iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoIVB5RGljdF9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJfX2RpY3RfXyBtdXN0IGJlIHNldCB0byBhIGRpY3Rpb25hcnksICIKKyAgICAgICAgICAgICAgICAgICAgICJub3QgYSAnJS4yMDBzJyIsIFB5X1RZUEUodmFsdWUpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBkaWN0ID0gKmRpY3RwdHI7CisgICAgUHlfWElOQ1JFRih2YWx1ZSk7CisgICAgKmRpY3RwdHIgPSB2YWx1ZTsKKyAgICBQeV9YREVDUkVGKGRpY3QpOworICAgIHJldHVybiAwOworfQorCiAKIC8qIFRlc3QgYSB2YWx1ZSB1c2VkIGFzIGNvbmRpdGlvbiwgZS5nLiwgaW4gYSBmb3Igb3IgaWYgc3RhdGVtZW50LgogICAgUmV0dXJuIC0xIGlmIGFuIGVycm9yIG9jY3VycmVkICovCkBAIC0xMTg2LDY2ICsxMzExLDYgQEAKICAgICByZXR1cm4geC0+b2JfdHlwZS0+dHBfY2FsbCAhPSBOVUxMOwogfQogCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB5T2JqZWN0X0RpcigpIGhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0vKiBIZWxwZXIgZm9yIFB5T2JqZWN0X0Rpci4KLSAgIE1lcmdlIHRoZSBfX2RpY3RfXyBvZiBhY2xhc3MgaW50byBkaWN0LCBhbmQgcmVjdXJzaXZlbHkgYWxzbyBhbGwKLSAgIHRoZSBfX2RpY3RfX3Mgb2YgYWNsYXNzJ3MgYmFzZSBjbGFzc2VzLiAgVGhlIG9yZGVyIG9mIG1lcmdpbmcgaXNuJ3QKLSAgIGRlZmluZWQsIGFzIGl0J3MgZXhwZWN0ZWQgdGhhdCBvbmx5IHRoZSBmaW5hbCBzZXQgb2YgZGljdCBrZXlzIGlzCi0gICBpbnRlcmVzdGluZy4KLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yLgotKi8KLQotc3RhdGljIGludAotbWVyZ2VfY2xhc3NfZGljdChQeU9iamVjdCogZGljdCwgUHlPYmplY3QqIGFjbGFzcykKLXsKLSAgICBQeU9iamVjdCAqY2xhc3NkaWN0OwotICAgIFB5T2JqZWN0ICpiYXNlczsKLQotICAgIGFzc2VydChQeURpY3RfQ2hlY2soZGljdCkpOwotICAgIGFzc2VydChhY2xhc3MpOwotCi0gICAgLyogTWVyZ2UgaW4gdGhlIHR5cGUncyBkaWN0IChpZiBhbnkpLiAqLwotICAgIGNsYXNzZGljdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoYWNsYXNzLCAiX19kaWN0X18iKTsKLSAgICBpZiAoY2xhc3NkaWN0ID09IE5VTEwpCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGludCBzdGF0dXMgPSBQeURpY3RfVXBkYXRlKGRpY3QsIGNsYXNzZGljdCk7Ci0gICAgICAgIFB5X0RFQ1JFRihjbGFzc2RpY3QpOwotICAgICAgICBpZiAoc3RhdHVzIDwgMCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICAvKiBSZWN1cnNpdmVseSBtZXJnZSBpbiB0aGUgYmFzZSB0eXBlcycgKGlmIGFueSkgZGljdHMuICovCi0gICAgYmFzZXMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGFjbGFzcywgIl9fYmFzZXNfXyIpOwotICAgIGlmIChiYXNlcyA9PSBOVUxMKQotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIGVsc2UgewotICAgICAgICAvKiBXZSBoYXZlIG5vIGd1YXJhbnRlZSB0aGF0IGJhc2VzIGlzIGEgcmVhbCB0dXBsZSAqLwotICAgICAgICBQeV9zc2l6ZV90IGksIG47Ci0gICAgICAgIG4gPSBQeVNlcXVlbmNlX1NpemUoYmFzZXMpOyAvKiBUaGlzIGJldHRlciBiZSByaWdodCAqLwotICAgICAgICBpZiAobiA8IDApCi0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgICAgICAgICBpbnQgc3RhdHVzOwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpiYXNlID0gUHlTZXF1ZW5jZV9HZXRJdGVtKGJhc2VzLCBpKTsKLSAgICAgICAgICAgICAgICBpZiAoYmFzZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3RhdHVzID0gbWVyZ2VfY2xhc3NfZGljdChkaWN0LCBiYXNlKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYmFzZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KIAogLyogSGVscGVyIGZvciBQeU9iamVjdF9EaXIgd2l0aG91dCBhcmd1bWVudHM6IHJldHVybnMgdGhlIGxvY2FsIHNjb3BlLiAqLwogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEyNjksMTQwICsxMzM0LDQzIEBACiAgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBpZiAoUHlMaXN0X1NvcnQobmFtZXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICAvKiB0aGUgbG9jYWxzIGRvbid0IG5lZWQgdG8gYmUgREVDUkVGJ2QgKi8KICAgICByZXR1cm4gbmFtZXM7CiB9CiAKLS8qIEhlbHBlciBmb3IgUHlPYmplY3RfRGlyIG9mIHR5cGUgb2JqZWN0czogcmV0dXJucyBfX2RpY3RfXyBhbmQgX19iYXNlc19fLgotICAgV2UgZGVsaWJlcmF0ZWx5IGRvbid0IHN1Y2sgdXAgaXRzIF9fY2xhc3NfXywgYXMgbWV0aG9kcyBiZWxvbmdpbmcgdG8gdGhlCi0gICBtZXRhY2xhc3Mgd291bGQgcHJvYmFibHkgYmUgbW9yZSBjb25mdXNpbmcgdGhhbiBoZWxwZnVsLgotKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1fc3BlY2lhbGl6ZWRfZGlyX3R5cGUoUHlPYmplY3QgKm9iaikKLXsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZGljdCA9IFB5RGljdF9OZXcoKTsKLQotICAgIGlmIChkaWN0ICE9IE5VTEwgJiYgbWVyZ2VfY2xhc3NfZGljdChkaWN0LCBvYmopID09IDApCi0gICAgICAgIHJlc3VsdCA9IFB5RGljdF9LZXlzKGRpY3QpOwotCi0gICAgUHlfWERFQ1JFRihkaWN0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBIZWxwZXIgZm9yIFB5T2JqZWN0X0RpciBvZiBtb2R1bGUgb2JqZWN0czogcmV0dXJucyB0aGUgbW9kdWxlJ3MgX19kaWN0X18uICovCi1zdGF0aWMgUHlPYmplY3QgKgotX3NwZWNpYWxpemVkX2Rpcl9tb2R1bGUoUHlPYmplY3QgKm9iaikKLXsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZGljdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiX19kaWN0X18iKTsKLQotICAgIGlmIChkaWN0ICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RGljdF9DaGVjayhkaWN0KSkKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5RGljdF9LZXlzKGRpY3QpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBQeU1vZHVsZV9HZXROYW1lKG9iaik7Ci0gICAgICAgICAgICBpZiAobmFtZSkKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzLl9fZGljdF9fIGlzIG5vdCBhIGRpY3Rpb25hcnkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFB5X1hERUNSRUYoZGljdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogSGVscGVyIGZvciBQeU9iamVjdF9EaXIgb2YgZ2VuZXJpYyBvYmplY3RzOiByZXR1cm5zIF9fZGljdF9fLCBfX2NsYXNzX18sCi0gICBhbmQgcmVjdXJzaXZlbHkgdXAgdGhlIF9fY2xhc3NfXy5fX2Jhc2VzX18gY2hhaW4uCi0qLwotc3RhdGljIFB5T2JqZWN0ICoKLV9nZW5lcmljX2RpcihQeU9iamVjdCAqb2JqKQotewotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpkaWN0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqaXRzY2xhc3MgPSBOVUxMOwotCi0gICAgLyogR2V0IF9fZGljdF9fICh3aGljaCBtYXkgb3IgbWF5IG5vdCBiZSBhIHJlYWwgZGljdC4uLikgKi8KLSAgICBkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJfX2RpY3RfXyIpOwotICAgIGlmIChkaWN0ID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoIVB5RGljdF9DaGVjayhkaWN0KSkgewotICAgICAgICBQeV9ERUNSRUYoZGljdCk7Ci0gICAgICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBDb3B5IF9fZGljdF9fIHRvIGF2b2lkIG11dGF0aW5nIGl0LiAqLwotICAgICAgICBQeU9iamVjdCAqdGVtcCA9IFB5RGljdF9Db3B5KGRpY3QpOwotICAgICAgICBQeV9ERUNSRUYoZGljdCk7Ci0gICAgICAgIGRpY3QgPSB0ZW1wOwotICAgIH0KLQotICAgIGlmIChkaWN0ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICAvKiBNZXJnZSBpbiBhdHRycyByZWFjaGFibGUgZnJvbSBpdHMgY2xhc3MuICovCi0gICAgaXRzY2xhc3MgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fY2xhc3NfXyIpOwotICAgIGlmIChpdHNjbGFzcyA9PSBOVUxMKQotICAgICAgICAvKiBYWFgodG9tZXIpOiBQZXJoYXBzIGZhbGwgYmFjayB0byBvYmotPm9iX3R5cGUgaWYgbm8KLSAgICAgICAgICAgICAgICAgICAgICAgX19jbGFzc19fIGV4aXN0cz8gKi8KLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKG1lcmdlX2NsYXNzX2RpY3QoZGljdCwgaXRzY2xhc3MpICE9IDApCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQotICAgIHJlc3VsdCA9IFB5RGljdF9LZXlzKGRpY3QpOwotICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihpdHNjbGFzcyk7Ci0gICAgUHlfWERFQ1JFRihkaWN0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBIZWxwZXIgZm9yIFB5T2JqZWN0X0Rpcjogb2JqZWN0IGludHJvc3BlY3Rpb24uCi0gICBUaGlzIGNhbGxzIG9uZSBvZiB0aGUgYWJvdmUgc3BlY2lhbGl6ZWQgdmVyc2lvbnMgaWYgbm8gX19kaXJfXyBtZXRob2QKLSAgIGV4aXN0cy4gKi8KKy8qIEhlbHBlciBmb3IgUHlPYmplY3RfRGlyOiBvYmplY3QgaW50cm9zcGVjdGlvbi4gKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBfZGlyX29iamVjdChQeU9iamVjdCAqb2JqKQogewotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIHN0YXRpYyBQeU9iamVjdCAqZGlyX3N0ciA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmRpcmZ1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvYmosICJfX2Rpcl9fIiwgJmRpcl9zdHIpOworICAgIFB5T2JqZWN0ICpyZXN1bHQsICpzb3J0ZWQ7CisgICAgX1B5X0lERU5USUZJRVIoX19kaXJfXyk7CisgICAgUHlPYmplY3QgKmRpcmZ1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvYmosICZQeUlkX19fZGlyX18pOwogCiAgICAgYXNzZXJ0KG9iaik7CiAgICAgaWYgKGRpcmZ1bmMgPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAvKiB1c2UgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAqLwotICAgICAgICBpZiAoUHlNb2R1bGVfQ2hlY2sob2JqKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IF9zcGVjaWFsaXplZF9kaXJfbW9kdWxlKG9iaik7Ci0gICAgICAgIGVsc2UgaWYgKFB5VHlwZV9DaGVjayhvYmopKQotICAgICAgICAgICAgcmVzdWx0ID0gX3NwZWNpYWxpemVkX2Rpcl90eXBlKG9iaik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IF9nZW5lcmljX2RpcihvYmopOworICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAib2JqZWN0IGRvZXMgbm90IHByb3ZpZGUgX19kaXJfXyIpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIHVzZSBfX2Rpcl9fICovCi0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZGlyZnVuYywgTlVMTCk7Ci0gICAgICAgIFB5X0RFQ1JFRihkaXJmdW5jKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgLyogcmVzdWx0IG11c3QgYmUgYSBsaXN0ICovCi0gICAgICAgIC8qIFhYWChnYnJhbmRsKTogY291bGQgYWxzbyBjaGVjayBpZiBhbGwgaXRlbXMgYXJlIHN0cmluZ3MgKi8KLSAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2socmVzdWx0KSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiX19kaXJfXygpIG11c3QgcmV0dXJuIGEgbGlzdCwgbm90ICUuMjAwcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShyZXN1bHQpLT50cF9uYW1lKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgcmVzdWx0ID0gTlVMTDsKLSAgICAgICAgfQorICAgIC8qIHVzZSBfX2Rpcl9fICovCisgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhkaXJmdW5jLCBOVUxMKTsKKyAgICBQeV9ERUNSRUYoZGlyZnVuYyk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiByZXR1cm4gc29ydGVkKHJlc3VsdCkgKi8KKyAgICBzb3J0ZWQgPSBQeVNlcXVlbmNlX0xpc3QocmVzdWx0KTsKKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICBpZiAoc29ydGVkID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeUxpc3RfU29ydChzb3J0ZWQpKSB7CisgICAgICAgIFB5X0RFQ1JFRihzb3J0ZWQpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBzb3J0ZWQ7CiB9CiAKIC8qIEltcGxlbWVudGF0aW9uIG9mIGRpcigpIC0tIGlmIG9iaiBpcyBOVUxMLCByZXR1cm5zIHRoZSBuYW1lcyBpbiB0aGUgY3VycmVudApAQCAtMTQxMiwzMSArMTM4MCwxMyBAQAogUHlPYmplY3QgKgogUHlPYmplY3RfRGlyKFB5T2JqZWN0ICpvYmopCiB7Ci0gICAgUHlPYmplY3QgKiByZXN1bHQ7Ci0KLSAgICBpZiAob2JqID09IE5VTEwpCi0gICAgICAgIC8qIG5vIG9iamVjdCAtLSBpbnRyb3NwZWN0IHRoZSBsb2NhbHMgKi8KLSAgICAgICAgcmVzdWx0ID0gX2Rpcl9sb2NhbHMoKTsKLSAgICBlbHNlCi0gICAgICAgIC8qIG9iamVjdCAtLSBpbnRyb3NwZWN0IHRoZSBvYmplY3QgKi8KLSAgICAgICAgcmVzdWx0ID0gX2Rpcl9vYmplY3Qob2JqKTsKLQotICAgIGFzc2VydChyZXN1bHQgPT0gTlVMTCB8fCBQeUxpc3RfQ2hlY2socmVzdWx0KSk7Ci0KLSAgICBpZiAocmVzdWx0ICE9IE5VTEwgJiYgUHlMaXN0X1NvcnQocmVzdWx0KSAhPSAwKSB7Ci0gICAgICAgIC8qIHNvcnRpbmcgdGhlIGxpc3QgZmFpbGVkICovCi0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICByZXN1bHQgPSBOVUxMOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIChvYmogPT0gTlVMTCkgPyBfZGlyX2xvY2FscygpIDogX2Rpcl9vYmplY3Qob2JqKTsKIH0KIAogLyoKLU5vT2JqZWN0IGlzIHVzYWJsZSBhcyBhIG5vbi1OVUxMIHVuZGVmaW5lZCB2YWx1ZSwgdXNlZCBieSB0aGUgbWFjcm8gTm9uZS4KK05vbmUgaXMgYSBub24tTlVMTCB1bmRlZmluZWQgdmFsdWUuCiBUaGVyZSBpcyAoYW5kIHNob3VsZCBiZSEpIG5vIHdheSB0byBjcmVhdGUgb3RoZXIgb2JqZWN0cyBvZiB0aGlzIHR5cGUsCiBzbyB0aGVyZSBpcyBleGFjdGx5IG9uZSAod2hpY2ggaXMgaW5kZXN0cnVjdGlibGUsIGJ5IHRoZSB3YXkpLgotKFhYWCBUaGlzIHR5cGUgYW5kIHRoZSB0eXBlIG9mIE5vdEltcGxlbWVudGVkIGJlbG93IHNob3VsZCBiZSB1bmlmaWVkLikKICovCiAKIC8qIEFSR1NVU0VEICovCkBAIC0xNDU2LDYgKzE0MDYsNTggQEAKICAgICBQeV9GYXRhbEVycm9yKCJkZWFsbG9jYXRpbmcgTm9uZSIpOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbm9uZV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSB8fCAoa3dhcmdzICYmIFB5RGljdF9TaXplKGt3YXJncykpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJOb25lVHlwZSB0YWtlcyBubyBhcmd1bWVudHMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgaW50Citub25lX2Jvb2woUHlPYmplY3QgKnYpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU51bWJlck1ldGhvZHMgbm9uZV9hc19udW1iZXIgPSB7CisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2FkZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9zdWJ0cmFjdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9tdWx0aXBseSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9yZW1haW5kZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfZGl2bW9kICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3Bvd2VyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX25lZ2F0aXZlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3Bvc2l0aXZlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Fic29sdXRlICovCisgICAgKGlucXVpcnkpbm9uZV9ib29sLCAgICAgICAgIC8qIG5iX2Jvb2wgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW52ZXJ0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2xzaGlmdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9yc2hpZnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfYW5kICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3hvciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9vciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfZmxvYXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9hZGQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9zdWJ0cmFjdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX211bHRpcGx5ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfcmVtYWluZGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfcG93ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9sc2hpZnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9yc2hpZnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9hbmQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV94b3IgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9vciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9mbG9vcl9kaXZpZGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfdHJ1ZV9kaXZpZGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9mbG9vcl9kaXZpZGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV90cnVlX2RpdmlkZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbmRleCAqLworfTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBQeU5vbmVfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQpAQCAtMTQ2OCwxMCArMTQ3MCwzNCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KICAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLwogICAgIG5vbmVfcmVwciwgICAgICAgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KKyAgICAmbm9uZV9hc19udW1iZXIsICAgIC8qdHBfYXNfbnVtYmVyKi8KICAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwogICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KICAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsIC8qdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYWxsb2MgKi8KKyAgICBub25lX25ldywgICAgICAgICAgIC8qdHBfbmV3ICovCiB9OwogCiBQeU9iamVjdCBfUHlfTm9uZVN0cnVjdCA9IHsKQEAgLTE0ODgsNiArMTUxNCwxNiBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygiTm90SW1wbGVtZW50ZWQiKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK25vdGltcGxlbWVudGVkX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIHx8IChrd2FyZ3MgJiYgUHlEaWN0X1NpemUoa3dhcmdzKSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIk5vdEltcGxlbWVudGVkVHlwZSB0YWtlcyBubyBhcmd1bWVudHMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKK30KKwogc3RhdGljIFB5VHlwZU9iamVjdCBQeU5vdEltcGxlbWVudGVkX1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKICAgICAiTm90SW1wbGVtZW50ZWRUeXBlIiwKQEAgLTE1MDMsNiArMTUzOSwzMCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCiAgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwogICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyp0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hbGxvYyAqLworICAgIG5vdGltcGxlbWVudGVkX25ldywgLyp0cF9uZXcgKi8KIH07CiAKIFB5T2JqZWN0IF9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdCA9IHsKQEAgLTE1ODUsNiArMTY0NSw5IEBACiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlQcm9wZXJ0eV9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgcHJvcGVydHkgdHlwZSIpOwogCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmX1B5TWFuYWdlZEJ1ZmZlcl9UeXBlKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgbWFuYWdlZCBidWZmZXIgdHlwZSIpOworCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlNZW1vcnlWaWV3X1R5cGUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBtZW1vcnl2aWV3IHR5cGUiKTsKIApAQCAtMTY0NSw2ICsxNzA4LDkgQEAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVppcF9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgemlwIHR5cGUiKTsKIAorICAgIGlmIChQeVR5cGVfUmVhZHkoJl9QeU5hbWVzcGFjZV9UeXBlKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgbmFtZXNwYWNlIHR5cGUiKTsKKwogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5Q2Fwc3VsZV9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgY2Fwc3VsZSB0eXBlIik7CiAKQEAgLTE4MTAsNiArMTg3NiwxOCBAQAogICAgIFB5TWVtX0ZSRUUocCk7CiB9CiAKK3ZvaWQKK19QeU9iamVjdF9EZWJ1Z1R5cGVTdGF0cyhGSUxFICpvdXQpCit7CisgICAgX1B5Q0Z1bmN0aW9uX0RlYnVnTWFsbG9jU3RhdHMob3V0KTsKKyAgICBfUHlEaWN0X0RlYnVnTWFsbG9jU3RhdHMob3V0KTsKKyAgICBfUHlGbG9hdF9EZWJ1Z01hbGxvY1N0YXRzKG91dCk7CisgICAgX1B5RnJhbWVfRGVidWdNYWxsb2NTdGF0cyhvdXQpOworICAgIF9QeUxpc3RfRGVidWdNYWxsb2NTdGF0cyhvdXQpOworICAgIF9QeU1ldGhvZF9EZWJ1Z01hbGxvY1N0YXRzKG91dCk7CisgICAgX1B5U2V0X0RlYnVnTWFsbG9jU3RhdHMob3V0KTsKKyAgICBfUHlUdXBsZV9EZWJ1Z01hbGxvY1N0YXRzKG91dCk7Cit9CiAKIC8qIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgdG8gY29udHJvbCBpbmZpbml0ZSByZWN1cnNpb24gaW4gcmVwciwgc3RyLCBwcmludCwKICAgIGV0Yy4gIENvbnRhaW5lciBvYmplY3RzIHRoYXQgbWF5IHJlY3Vyc2l2ZWx5IGNvbnRhaW4gdGhlbXNlbHZlcywKZGlmZiAtLWdpdCBhL09iamVjdHMvb2JtYWxsb2MuYyBiL09iamVjdHMvb2JtYWxsb2MuYwppbmRleCAzOTE2MjYyLi41MGZjN2MxIDEwMDY0NAotLS0gYS9PYmplY3RzL29ibWFsbG9jLmMKKysrIGIvT2JqZWN0cy9vYm1hbGxvYy5jCkBAIC0yLDYgKzIsMTMgQEAKIAogI2lmZGVmIFdJVEhfUFlNQUxMT0MKIAorI2lmZGVmIEhBVkVfTU1BUAorICNpbmNsdWRlIDxzeXMvbW1hbi5oPgorICNpZmRlZiBNQVBfQU5PTllNT1VTCisgICNkZWZpbmUgQVJFTkFTX1VTRV9NTUFQCisgI2VuZGlmCisjZW5kaWYKKwogI2lmZGVmIFdJVEhfVkFMR1JJTkQKICNpbmNsdWRlIDx2YWxncmluZC92YWxncmluZC5oPgogCkBAIC03NSw3ICs4Miw4IEBACiAgKiBBbGxvY2F0aW9uIHN0cmF0ZWd5IGFic3RyYWN0OgogICoKICAqIEZvciBzbWFsbCByZXF1ZXN0cywgdGhlIGFsbG9jYXRvciBzdWItYWxsb2NhdGVzIDxCaWc+IGJsb2NrcyBvZiBtZW1vcnkuCi0gKiBSZXF1ZXN0cyBncmVhdGVyIHRoYW4gMjU2IGJ5dGVzIGFyZSByb3V0ZWQgdG8gdGhlIHN5c3RlbSdzIGFsbG9jYXRvci4KKyAqIFJlcXVlc3RzIGdyZWF0ZXIgdGhhbiBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCBieXRlcyBhcmUgcm91dGVkIHRvIHRoZQorICogc3lzdGVtJ3MgYWxsb2NhdG9yLgogICoKICAqIFNtYWxsIHJlcXVlc3RzIGFyZSBncm91cGVkIGluIHNpemUgY2xhc3NlcyBzcGFjZWQgOCBieXRlcyBhcGFydCwgZHVlCiAgKiB0byB0aGUgcmVxdWlyZWQgdmFsaWQgYWxpZ25tZW50IG9mIHRoZSByZXR1cm5lZCBhZGRyZXNzLiBSZXF1ZXN0cyBvZgpAQCAtMTA3LDEwICsxMTUsMTEgQEAKICAqICAgICAgIDU3LTY0ICAgICAgICAgICAgICAgICAgIDY0ICAgICAgICAgICAgICAgICAgICAgICA3CiAgKiAgICAgICA2NS03MiAgICAgICAgICAgICAgICAgICA3MiAgICAgICAgICAgICAgICAgICAgICAgOAogICogICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAuLi4KLSAqICAgICAgMjQxLTI0OCAgICAgICAgICAgICAgICAgMjQ4ICAgICAgICAgICAgICAgICAgICAgIDMwCi0gKiAgICAgIDI0OS0yNTYgICAgICAgICAgICAgICAgIDI1NiAgICAgICAgICAgICAgICAgICAgICAzMQorICogICAgICA0OTctNTA0ICAgICAgICAgICAgICAgICA1MDQgICAgICAgICAgICAgICAgICAgICAgNjIKKyAqICAgICAgNTA1LTUxMiAgICAgICAgICAgICAgICAgNTEyICAgICAgICAgICAgICAgICAgICAgIDYzCiAgKgotICogICAgICAwLCAyNTcgYW5kIHVwOiByb3V0ZWQgdG8gdGhlIHVuZGVybHlpbmcgYWxsb2NhdG9yLgorICogICAgICAwLCBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCArIDEgYW5kIHVwOiByb3V0ZWQgdG8gdGhlIHVuZGVybHlpbmcKKyAqICAgICAgYWxsb2NhdG9yLgogICovCiAKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwpAQCAtMTI5LDcgKzEzOCw2IEBACiAgKi8KICNkZWZpbmUgQUxJR05NRU5UICAgICAgICAgICAgICAgOCAgICAgICAgICAgICAgIC8qIG11c3QgYmUgMl5OICovCiAjZGVmaW5lIEFMSUdOTUVOVF9TSElGVCAgICAgICAgIDMKLSNkZWZpbmUgQUxJR05NRU5UX01BU0sgICAgICAgICAgKEFMSUdOTUVOVCAtIDEpCiAKIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHNpemUgY2xhc3MgSSwgYXMgYSB1aW50LiAqLwogI2RlZmluZSBJTkRFWDJTSVpFKEkpICgoKHVpbnQpKEkpICsgMSkgPDwgQUxJR05NRU5UX1NISUZUKQpAQCAtMTM5LDE0ICsxNDcsMTcgQEAKICAqIHNtYWxsIGVub3VnaCBpbiBvcmRlciB0byB1c2UgcHJlYWxsb2NhdGVkIG1lbW9yeSBwb29scy4gWW91IGNhbiB0dW5lCiAgKiB0aGlzIHZhbHVlIGFjY29yZGluZyB0byB5b3VyIGFwcGxpY2F0aW9uIGJlaGF2aW91ciBhbmQgbWVtb3J5IG5lZWRzLgogICoKKyAqIE5vdGU6IGEgc2l6ZSB0aHJlc2hvbGQgb2YgNTEyIGd1YXJhbnRlZXMgdGhhdCBuZXdseSBjcmVhdGVkIGRpY3Rpb25hcmllcworICogd2lsbCBiZSBhbGxvY2F0ZWQgZnJvbSBwcmVhbGxvY2F0ZWQgbWVtb3J5IHBvb2xzIG9uIDY0LWJpdC4KKyAqCiAgKiBUaGUgZm9sbG93aW5nIGludmFyaWFudHMgbXVzdCBob2xkOgotICogICAgICAxKSBBTElHTk1FTlQgPD0gU01BTExfUkVRVUVTVF9USFJFU0hPTEQgPD0gMjU2CisgKiAgICAgIDEpIEFMSUdOTUVOVCA8PSBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCA8PSA1MTIKICAqICAgICAgMikgU01BTExfUkVRVUVTVF9USFJFU0hPTEQgaXMgZXZlbmx5IGRpdmlzaWJsZSBieSBBTElHTk1FTlQKICAqCiAgKiBBbHRob3VnaCBub3QgcmVxdWlyZWQsIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UgYW5kIHNwYWNlIGVmZmljaWVuY3ksCiAgKiBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEIGlzIHNldCB0byBhIHBvd2VyIG9mIDIuCiAgKi8KLSNkZWZpbmUgU01BTExfUkVRVUVTVF9USFJFU0hPTEQgMjU2CisjZGVmaW5lIFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEIDUxMgogI2RlZmluZSBOQl9TTUFMTF9TSVpFX0NMQVNTRVMgICAoU01BTExfUkVRVUVTVF9USFJFU0hPTEQgLyBBTElHTk1FTlQpCiAKIC8qCkBAIC0xNzQsMTUgKzE4NSwxNSBAQAogLyoKICAqIFRoZSBhbGxvY2F0b3Igc3ViLWFsbG9jYXRlcyA8QmlnPiBibG9ja3Mgb2YgbWVtb3J5IChjYWxsZWQgYXJlbmFzKSBhbGlnbmVkCiAgKiBvbiBhIHBhZ2UgYm91bmRhcnkuIFRoaXMgaXMgYSByZXNlcnZlZCB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UgZm9yIHRoZQotICogY3VycmVudCBwcm9jZXNzIChvYnRhaW5lZCB0aHJvdWdoIGEgbWFsbG9jIGNhbGwpLiBJbiBubyB3YXkgdGhpcyBtZWFucwotICogdGhhdCB0aGUgbWVtb3J5IGFyZW5hcyB3aWxsIGJlIHVzZWQgZW50aXJlbHkuIEEgbWFsbG9jKDxCaWc+KSBpcyB1c3VhbGx5Ci0gKiBhbiBhZGRyZXNzIHJhbmdlIHJlc2VydmF0aW9uIGZvciA8QmlnPiBieXRlcywgdW5sZXNzIGFsbCBwYWdlcyB3aXRoaW4gdGhpcwotICogc3BhY2UgYXJlIHJlZmVyZW5jZWQgc3Vic2VxdWVudGx5LiBTbyBtYWxsb2MnaW5nIGJpZyBibG9ja3MgYW5kIG5vdCB1c2luZwotICogdGhlbSBkb2VzIG5vdCBtZWFuICJ3YXN0aW5nIG1lbW9yeSIuIEl0J3MgYW4gYWRkcmVzc2FibGUgcmFuZ2Ugd2FzdGFnZS4uLgorICogY3VycmVudCBwcm9jZXNzIChvYnRhaW5lZCB0aHJvdWdoIGEgbWFsbG9jKCkvbW1hcCgpIGNhbGwpLiBJbiBubyB3YXkgdGhpcworICogbWVhbnMgdGhhdCB0aGUgbWVtb3J5IGFyZW5hcyB3aWxsIGJlIHVzZWQgZW50aXJlbHkuIEEgbWFsbG9jKDxCaWc+KSBpcworICogdXN1YWxseSBhbiBhZGRyZXNzIHJhbmdlIHJlc2VydmF0aW9uIGZvciA8QmlnPiBieXRlcywgdW5sZXNzIGFsbCBwYWdlcyB3aXRoaW4KKyAqIHRoaXMgc3BhY2UgYXJlIHJlZmVyZW5jZWQgc3Vic2VxdWVudGx5LiBTbyBtYWxsb2MnaW5nIGJpZyBibG9ja3MgYW5kIG5vdAorICogdXNpbmcgdGhlbSBkb2VzIG5vdCBtZWFuICJ3YXN0aW5nIG1lbW9yeSIuIEl0J3MgYW4gYWRkcmVzc2FibGUgcmFuZ2UKKyAqIHdhc3RhZ2UuLi4KICAqCi0gKiBUaGVyZWZvcmUsIGFsbG9jYXRpbmcgYXJlbmFzIHdpdGggbWFsbG9jIGlzIG5vdCBvcHRpbWFsLCBiZWNhdXNlIHRoZXJlIGlzCi0gKiBzb21lIGFkZHJlc3Mgc3BhY2Ugd2FzdGFnZSwgYnV0IHRoaXMgaXMgdGhlIG1vc3QgcG9ydGFibGUgd2F5IHRvIHJlcXVlc3QKLSAqIG1lbW9yeSBmcm9tIHRoZSBzeXN0ZW0gYWNyb3NzIHZhcmlvdXMgcGxhdGZvcm1zLgorICogQXJlbmFzIGFyZSBhbGxvY2F0ZWQgd2l0aCBtbWFwKCkgb24gc3lzdGVtcyBzdXBwb3J0aW5nIGFub255bW91cyBtZW1vcnkKKyAqIG1hcHBpbmdzIHRvIHJlZHVjZSBoZWFwIGZyYWdtZW50YXRpb24uCiAgKi8KICNkZWZpbmUgQVJFTkFfU0laRSAgICAgICAgICAgICAgKDI1NiA8PCAxMCkgICAgIC8qIDI1NktCICovCiAKQEAgLTMwMiwxNCArMzEzLDEyIEBACiAgICAgc3RydWN0IGFyZW5hX29iamVjdCogcHJldmFyZW5hOwogfTsKIAotI3VuZGVmICBST1VORFVQCi0jZGVmaW5lIFJPVU5EVVAoeCkgICAgICAgICAgICAgICgoKHgpICsgQUxJR05NRU5UX01BU0spICYgfkFMSUdOTUVOVF9NQVNLKQotI2RlZmluZSBQT09MX09WRVJIRUFEICAgICAgICAgICBST1VORFVQKHNpemVvZihzdHJ1Y3QgcG9vbF9oZWFkZXIpKQorI2RlZmluZSBQT09MX09WRVJIRUFEICAgX1B5X1NJWkVfUk9VTkRfVVAoc2l6ZW9mKHN0cnVjdCBwb29sX2hlYWRlciksIEFMSUdOTUVOVCkKIAogI2RlZmluZSBEVU1NWV9TSVpFX0lEWCAgICAgICAgICAweGZmZmYgIC8qIHNpemUgY2xhc3Mgb2YgbmV3bHkgY2FjaGVkIHBvb2xzICovCiAKIC8qIFJvdW5kIHBvaW50ZXIgUCBkb3duIHRvIHRoZSBjbG9zZXN0IHBvb2wtYWxpZ25lZCBhZGRyZXNzIDw9IFAsIGFzIGEgcG9vbHAgKi8KLSNkZWZpbmUgUE9PTF9BRERSKFApICgocG9vbHApKCh1cHRyKShQKSAmIH4odXB0cilQT09MX1NJWkVfTUFTSykpCisjZGVmaW5lIFBPT0xfQUREUihQKSAoKHBvb2xwKV9QeV9BTElHTl9ET1dOKChQKSwgUE9PTF9TSVpFKSkKIAogLyogUmV0dXJuIHRvdGFsIG51bWJlciBvZiBibG9ja3MgaW4gcG9vbCBvZiBzaXplIGluZGV4IEksIGFzIGEgdWludC4gKi8KICNkZWZpbmUgTlVNQkxPQ0tTKEkpICgodWludCkoUE9PTF9TSVpFIC0gUE9PTF9PVkVSSEVBRCkgLyBJTkRFWDJTSVpFKEkpKQpAQCAtNDQwLDYgKzQ0OSw5IEBACiAgICAgLCBQVCg0OCksIFBUKDQ5KSwgUFQoNTApLCBQVCg1MSksIFBUKDUyKSwgUFQoNTMpLCBQVCg1NCksIFBUKDU1KQogI2lmIE5CX1NNQUxMX1NJWkVfQ0xBU1NFUyA+IDU2CiAgICAgLCBQVCg1NiksIFBUKDU3KSwgUFQoNTgpLCBQVCg1OSksIFBUKDYwKSwgUFQoNjEpLCBQVCg2MiksIFBUKDYzKQorI2lmIE5CX1NNQUxMX1NJWkVfQ0xBU1NFUyA+IDY0CisjZXJyb3IgIk5CX1NNQUxMX1NJWkVfQ0xBU1NFUyBzaG91bGQgYmUgbGVzcyB0aGFuIDY0IgorI2VuZGlmIC8qIE5CX1NNQUxMX1NJWkVfQ0xBU1NFUyA+IDY0ICovCiAjZW5kaWYgLyogTkJfU01BTExfU0laRV9DTEFTU0VTID4gNTYgKi8KICNlbmRpZiAvKiBOQl9TTUFMTF9TSVpFX0NMQVNTRVMgPiA0OCAqLwogI2VuZGlmIC8qIE5CX1NNQUxMX1NJWkVfQ0xBU1NFUyA+IDQwICovCkBAIC01MDgsMTIgKzUyMCwxMCBAQAogLyogTnVtYmVyIG9mIGFyZW5hcyBhbGxvY2F0ZWQgdGhhdCBoYXZlbid0IGJlZW4gZnJlZSgpJ2QuICovCiBzdGF0aWMgc2l6ZV90IG5hcmVuYXNfY3VycmVudGx5X2FsbG9jYXRlZCA9IDA7CiAKLSNpZmRlZiBQWU1BTExPQ19ERUJVRwogLyogVG90YWwgbnVtYmVyIG9mIHRpbWVzIG1hbGxvYygpIGNhbGxlZCB0byBhbGxvY2F0ZSBhbiBhcmVuYS4gKi8KIHN0YXRpYyBzaXplX3QgbnRpbWVzX2FyZW5hX2FsbG9jYXRlZCA9IDA7CiAvKiBIaWdoIHdhdGVyIG1hcmsgKG1heCB2YWx1ZSBldmVyIHNlZW4pIGZvciBuYXJlbmFzX2N1cnJlbnRseV9hbGxvY2F0ZWQuICovCiBzdGF0aWMgc2l6ZV90IG5hcmVuYXNfaGlnaHdhdGVyID0gMDsKLSNlbmRpZgogCiAvKiBBbGxvY2F0ZSBhIG5ldyBhcmVuYS4gIElmIHdlIHJ1biBvdXQgb2YgbWVtb3J5LCByZXR1cm4gTlVMTC4gIEVsc2UKICAqIGFsbG9jYXRlIGEgbmV3IGFyZW5hLCBhbmQgcmV0dXJuIHRoZSBhZGRyZXNzIG9mIGFuIGFyZW5hX29iamVjdApAQCAtNTI1LDEwICs1MzUsMTIgQEAKIHsKICAgICBzdHJ1Y3QgYXJlbmFfb2JqZWN0KiBhcmVuYW9iajsKICAgICB1aW50IGV4Y2VzczsgICAgICAgIC8qIG51bWJlciBvZiBieXRlcyBhYm92ZSBwb29sIGFsaWdubWVudCAqLworICAgIHZvaWQgKmFkZHJlc3M7CisgICAgaW50IGVycjsKIAogI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiAgICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKSkKLSAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoKTsKKyAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKICNlbmRpZgogICAgIGlmICh1bnVzZWRfYXJlbmFfb2JqZWN0cyA9PSBOVUxMKSB7CiAgICAgICAgIHVpbnQgaTsKQEAgLTU3Nyw4ICs1ODksMTUgQEAKICAgICBhcmVuYW9iaiA9IHVudXNlZF9hcmVuYV9vYmplY3RzOwogICAgIHVudXNlZF9hcmVuYV9vYmplY3RzID0gYXJlbmFvYmotPm5leHRhcmVuYTsKICAgICBhc3NlcnQoYXJlbmFvYmotPmFkZHJlc3MgPT0gMCk7Ci0gICAgYXJlbmFvYmotPmFkZHJlc3MgPSAodXB0ciltYWxsb2MoQVJFTkFfU0laRSk7Ci0gICAgaWYgKGFyZW5hb2JqLT5hZGRyZXNzID09IDApIHsKKyNpZmRlZiBBUkVOQVNfVVNFX01NQVAKKyAgICBhZGRyZXNzID0gbW1hcChOVUxMLCBBUkVOQV9TSVpFLCBQUk9UX1JFQUR8UFJPVF9XUklURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFQX1BSSVZBVEV8TUFQX0FOT05ZTU9VUywgLTEsIDApOworICAgIGVyciA9IChhZGRyZXNzID09IE1BUF9GQUlMRUQpOworI2Vsc2UKKyAgICBhZGRyZXNzID0gbWFsbG9jKEFSRU5BX1NJWkUpOworICAgIGVyciA9IChhZGRyZXNzID09IDApOworI2VuZGlmCisgICAgaWYgKGVycikgewogICAgICAgICAvKiBUaGUgYWxsb2NhdGlvbiBmYWlsZWQ6IHJldHVybiBOVUxMIGFmdGVyIHB1dHRpbmcgdGhlCiAgICAgICAgICAqIGFyZW5hb2JqIGJhY2suCiAgICAgICAgICAqLwpAQCAtNTg2LDEzICs2MDUsMTIgQEAKICAgICAgICAgdW51c2VkX2FyZW5hX29iamVjdHMgPSBhcmVuYW9iajsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIGFyZW5hb2JqLT5hZGRyZXNzID0gKHVwdHIpYWRkcmVzczsKIAogICAgICsrbmFyZW5hc19jdXJyZW50bHlfYWxsb2NhdGVkOwotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiAgICAgKytudGltZXNfYXJlbmFfYWxsb2NhdGVkOwogICAgIGlmIChuYXJlbmFzX2N1cnJlbnRseV9hbGxvY2F0ZWQgPiBuYXJlbmFzX2hpZ2h3YXRlcikKICAgICAgICAgbmFyZW5hc19oaWdod2F0ZXIgPSBuYXJlbmFzX2N1cnJlbnRseV9hbGxvY2F0ZWQ7Ci0jZW5kaWYKICAgICBhcmVuYW9iai0+ZnJlZXBvb2xzID0gTlVMTDsKICAgICAvKiBwb29sX2FkZHJlc3MgPC0gZmlyc3QgcG9vbC1hbGlnbmVkIGFkZHJlc3MgaW4gdGhlIGFyZW5hCiAgICAgICAgbmZyZWVwb29scyA8LSBudW1iZXIgb2Ygd2hvbGUgcG9vbHMgdGhhdCBmaXQgYWZ0ZXIgYWxpZ25tZW50ICovCkBAIC0xMDU0LDcgKzEwNzIsMTEgQEAKICAgICAgICAgICAgICAgICB1bnVzZWRfYXJlbmFfb2JqZWN0cyA9IGFvOwogCiAgICAgICAgICAgICAgICAgLyogRnJlZSB0aGUgZW50aXJlIGFyZW5hLiAqLworI2lmZGVmIEFSRU5BU19VU0VfTU1BUAorICAgICAgICAgICAgICAgIG11bm1hcCgodm9pZCAqKWFvLT5hZGRyZXNzLCBBUkVOQV9TSVpFKTsKKyNlbHNlCiAgICAgICAgICAgICAgICAgZnJlZSgodm9pZCAqKWFvLT5hZGRyZXNzKTsKKyNlbmRpZgogICAgICAgICAgICAgICAgIGFvLT5hZGRyZXNzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAvKiBtYXJrIHVuYXNzb2NpYXRlZCAqLwogICAgICAgICAgICAgICAgIC0tbmFyZW5hc19jdXJyZW50bHlfYWxsb2NhdGVkOwogCkBAIC0xNjk0LDE3ICsxNzE2LDE5IEBACiAgICAgfQogfQogCisjZW5kaWYgIC8qIFBZTUFMTE9DX0RFQlVHICovCisKIHN0YXRpYyBzaXplX3QKLXByaW50b25lKGNvbnN0IGNoYXIqIG1zZywgc2l6ZV90IHZhbHVlKQorcHJpbnRvbmUoRklMRSAqb3V0LCBjb25zdCBjaGFyKiBtc2csIHNpemVfdCB2YWx1ZSkKIHsKICAgICBpbnQgaSwgazsKICAgICBjaGFyIGJ1ZlsxMDBdOwogICAgIHNpemVfdCBvcmlndmFsdWUgPSB2YWx1ZTsKIAotICAgIGZwdXRzKG1zZywgc3RkZXJyKTsKKyAgICBmcHV0cyhtc2csIG91dCk7CiAgICAgZm9yIChpID0gKGludClzdHJsZW4obXNnKTsgaSA8IDM1OyArK2kpCi0gICAgICAgIGZwdXRjKCcgJywgc3RkZXJyKTsKLSAgICBmcHV0YygnPScsIHN0ZGVycik7CisgICAgICAgIGZwdXRjKCcgJywgb3V0KTsKKyAgICBmcHV0YygnPScsIG91dCk7CiAKICAgICAvKiBXcml0ZSB0aGUgdmFsdWUgd2l0aCBjb21tYXMuICovCiAgICAgaSA9IDIyOwpAQCAtMTcxMyw3ICsxNzM3LDcgQEAKICAgICBrID0gMzsKICAgICBkbyB7CiAgICAgICAgIHNpemVfdCBuZXh0dmFsdWUgPSB2YWx1ZSAvIDEwOwotICAgICAgICB1aW50IGRpZ2l0ID0gKHVpbnQpKHZhbHVlIC0gbmV4dHZhbHVlICogMTApOworICAgICAgICB1bnNpZ25lZCBpbnQgZGlnaXQgPSAodW5zaWduZWQgaW50KSh2YWx1ZSAtIG5leHR2YWx1ZSAqIDEwKTsKICAgICAgICAgdmFsdWUgPSBuZXh0dmFsdWU7CiAgICAgICAgIGJ1ZltpLS1dID0gKGNoYXIpKGRpZ2l0ICsgJzAnKTsKICAgICAgICAgLS1rOwpAQCAtMTcyNSwxNyArMTc0OSwzMyBAQAogCiAgICAgd2hpbGUgKGkgPj0gMCkKICAgICAgICAgYnVmW2ktLV0gPSAnICc7Ci0gICAgZnB1dHMoYnVmLCBzdGRlcnIpOworICAgIGZwdXRzKGJ1Ziwgb3V0KTsKIAogICAgIHJldHVybiBvcmlndmFsdWU7CiB9CiAKLS8qIFByaW50IHN1bW1hcnkgaW5mbyB0byBzdGRlcnIgYWJvdXQgdGhlIHN0YXRlIG9mIHB5bWFsbG9jJ3Mgc3RydWN0dXJlcy4KK3ZvaWQKK19QeURlYnVnQWxsb2NhdG9yU3RhdHMoRklMRSAqb3V0LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpibG9ja19uYW1lLCBpbnQgbnVtX2Jsb2Nrcywgc2l6ZV90IHNpemVvZl9ibG9jaykKK3sKKyAgICBjaGFyIGJ1ZjFbMTI4XTsKKyAgICBjaGFyIGJ1ZjJbMTI4XTsKKyAgICBQeU9TX3NucHJpbnRmKGJ1ZjEsIHNpemVvZihidWYxKSwKKyAgICAgICAgICAgICAgICAgICIlZCAlc3MgKiAlemQgYnl0ZXMgZWFjaCIsCisgICAgICAgICAgICAgICAgICBudW1fYmxvY2tzLCBibG9ja19uYW1lLCBzaXplb2ZfYmxvY2spOworICAgIFB5T1Nfc25wcmludGYoYnVmMiwgc2l6ZW9mKGJ1ZjIpLAorICAgICAgICAgICAgICAgICAgIiU0OHMgIiwgYnVmMSk7CisgICAgKHZvaWQpcHJpbnRvbmUob3V0LCBidWYyLCBudW1fYmxvY2tzICogc2l6ZW9mX2Jsb2NrKTsKK30KKworI2lmZGVmIFdJVEhfUFlNQUxMT0MKKworLyogUHJpbnQgc3VtbWFyeSBpbmZvIHRvICJvdXQiIGFib3V0IHRoZSBzdGF0ZSBvZiBweW1hbGxvYydzIHN0cnVjdHVyZXMuCiAgKiBJbiBQeV9ERUJVRyBtb2RlLCBhbHNvIHBlcmZvcm0gc29tZSBleHBlbnNpdmUgaW50ZXJuYWwgY29uc2lzdGVuY3kKICAqIGNoZWNrcy4KICAqLwogdm9pZAotX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHModm9pZCkKK19QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCkKIHsKICAgICB1aW50IGk7CiAgICAgY29uc3QgdWludCBudW1jbGFzc2VzID0gU01BTExfUkVRVUVTVF9USFJFU0hPTEQgPj4gQUxJR05NRU5UX1NISUZUOwpAQCAtMTc2NCw3ICsxODA0LDcgQEAKICAgICBzaXplX3QgdG90YWw7CiAgICAgY2hhciBidWZbMTI4XTsKIAotICAgIGZwcmludGYoc3RkZXJyLCAiU21hbGwgYmxvY2sgdGhyZXNob2xkID0gJWQsIGluICV1IHNpemUgY2xhc3Nlcy5cbiIsCisgICAgZnByaW50ZihvdXQsICJTbWFsbCBibG9jayB0aHJlc2hvbGQgPSAlZCwgaW4gJXUgc2l6ZSBjbGFzc2VzLlxuIiwKICAgICAgICAgICAgIFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xELCBudW1jbGFzc2VzKTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBudW1jbGFzc2VzOyArK2kpCkBAIC0xNzc1LDcgKzE4MTUsNiBAQAogICAgICAqIHdpbGwgYmUgbGl2aW5nIGluIGZ1bGwgcG9vbHMgLS0gd291bGQgYmUgYSBzaGFtZSB0byBtaXNzIHRoZW0uCiAgICAgICovCiAgICAgZm9yIChpID0gMDsgaSA8IG1heGFyZW5hczsgKytpKSB7Ci0gICAgICAgIHVpbnQgcG9vbHNpbmFyZW5hOwogICAgICAgICB1aW50IGo7CiAgICAgICAgIHVwdHIgYmFzZSA9IGFyZW5hc1tpXS5hZGRyZXNzOwogCkBAIC0xNzg0LDcgKzE4MjMsNiBAQAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIG5hcmVuYXMgKz0gMTsKIAotICAgICAgICBwb29sc2luYXJlbmEgPSBhcmVuYXNbaV0ubnRvdGFscG9vbHM7CiAgICAgICAgIG51bWZyZWVwb29scyArPSBhcmVuYXNbaV0ubmZyZWVwb29sczsKIAogICAgICAgICAvKiByb3VuZCB1cCB0byBwb29sIGFsaWdubWVudCAqLwpAQCAtMTgyMCwxMCArMTg1OCwxMCBAQAogICAgIH0KICAgICBhc3NlcnQobmFyZW5hcyA9PSBuYXJlbmFzX2N1cnJlbnRseV9hbGxvY2F0ZWQpOwogCi0gICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKKyAgICBmcHV0YygnXG4nLCBvdXQpOwogICAgIGZwdXRzKCJjbGFzcyAgIHNpemUgICBudW0gcG9vbHMgICBibG9ja3MgaW4gdXNlICBhdmFpbCBibG9ja3NcbiIKICAgICAgICAgICAiLS0tLS0gICAtLS0tICAgLS0tLS0tLS0tICAgLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tXG4iLAotICAgICAgICAgIHN0ZGVycik7CisgICAgICAgICAgb3V0KTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBudW1jbGFzc2VzOyArK2kpIHsKICAgICAgICAgc2l6ZV90IHAgPSBudW1wb29sc1tpXTsKQEAgLTE4MzQsNyArMTg3Miw3IEBACiAgICAgICAgICAgICBhc3NlcnQoYiA9PSAwICYmIGYgPT0gMCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiU1dSAlNnUgIgorICAgICAgICBmcHJpbnRmKG91dCwgIiU1dSAlNnUgIgogICAgICAgICAgICAgICAgICAgICAgICAgIiUxMSIgUFlfRk9STUFUX1NJWkVfVCAidSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiJTE1IiBQWV9GT1JNQVRfU0laRV9UICJ1ICIKICAgICAgICAgICAgICAgICAgICAgICAgICIlMTMiIFBZX0ZPUk1BVF9TSVpFX1QgInVcbiIsCkBAIC0xODQ0LDM1ICsxODgyLDM2IEBACiAgICAgICAgIHBvb2xfaGVhZGVyX2J5dGVzICs9IHAgKiBQT09MX09WRVJIRUFEOwogICAgICAgICBxdWFudGl6YXRpb24gKz0gcCAqICgoUE9PTF9TSVpFIC0gUE9PTF9PVkVSSEVBRCkgJSBzaXplKTsKICAgICB9Ci0gICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKLSAgICAodm9pZClwcmludG9uZSgiIyB0aW1lcyBvYmplY3QgbWFsbG9jIGNhbGxlZCIsIHNlcmlhbG5vKTsKLQotICAgICh2b2lkKXByaW50b25lKCIjIGFyZW5hcyBhbGxvY2F0ZWQgdG90YWwiLCBudGltZXNfYXJlbmFfYWxsb2NhdGVkKTsKLSAgICAodm9pZClwcmludG9uZSgiIyBhcmVuYXMgcmVjbGFpbWVkIiwgbnRpbWVzX2FyZW5hX2FsbG9jYXRlZCAtIG5hcmVuYXMpOwotICAgICh2b2lkKXByaW50b25lKCIjIGFyZW5hcyBoaWdod2F0ZXIgbWFyayIsIG5hcmVuYXNfaGlnaHdhdGVyKTsKLSAgICAodm9pZClwcmludG9uZSgiIyBhcmVuYXMgYWxsb2NhdGVkIGN1cnJlbnQiLCBuYXJlbmFzKTsKKyAgICBmcHV0YygnXG4nLCBvdXQpOworI2lmZGVmIFBZTUFMTE9DX0RFQlVHCisgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyB0aW1lcyBvYmplY3QgbWFsbG9jIGNhbGxlZCIsIHNlcmlhbG5vKTsKKyNlbmRpZgorICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgYXJlbmFzIGFsbG9jYXRlZCB0b3RhbCIsIG50aW1lc19hcmVuYV9hbGxvY2F0ZWQpOworICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgYXJlbmFzIHJlY2xhaW1lZCIsIG50aW1lc19hcmVuYV9hbGxvY2F0ZWQgLSBuYXJlbmFzKTsKKyAgICAodm9pZClwcmludG9uZShvdXQsICIjIGFyZW5hcyBoaWdod2F0ZXIgbWFyayIsIG5hcmVuYXNfaGlnaHdhdGVyKTsKKyAgICAodm9pZClwcmludG9uZShvdXQsICIjIGFyZW5hcyBhbGxvY2F0ZWQgY3VycmVudCIsIG5hcmVuYXMpOwogCiAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLAogICAgICAgICAiJSIgUFlfRk9STUFUX1NJWkVfVCAidSBhcmVuYXMgKiAlZCBieXRlcy9hcmVuYSIsCiAgICAgICAgIG5hcmVuYXMsIEFSRU5BX1NJWkUpOwotICAgICh2b2lkKXByaW50b25lKGJ1ZiwgbmFyZW5hcyAqIEFSRU5BX1NJWkUpOworICAgICh2b2lkKXByaW50b25lKG91dCwgYnVmLCBuYXJlbmFzICogQVJFTkFfU0laRSk7CiAKLSAgICBmcHV0YygnXG4nLCBzdGRlcnIpOworICAgIGZwdXRjKCdcbicsIG91dCk7CiAKLSAgICB0b3RhbCA9IHByaW50b25lKCIjIGJ5dGVzIGluIGFsbG9jYXRlZCBibG9ja3MiLCBhbGxvY2F0ZWRfYnl0ZXMpOwotICAgIHRvdGFsICs9IHByaW50b25lKCIjIGJ5dGVzIGluIGF2YWlsYWJsZSBibG9ja3MiLCBhdmFpbGFibGVfYnl0ZXMpOworICAgIHRvdGFsID0gcHJpbnRvbmUob3V0LCAiIyBieXRlcyBpbiBhbGxvY2F0ZWQgYmxvY2tzIiwgYWxsb2NhdGVkX2J5dGVzKTsKKyAgICB0b3RhbCArPSBwcmludG9uZShvdXQsICIjIGJ5dGVzIGluIGF2YWlsYWJsZSBibG9ja3MiLCBhdmFpbGFibGVfYnl0ZXMpOwogCiAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLAogICAgICAgICAiJXUgdW51c2VkIHBvb2xzICogJWQgYnl0ZXMiLCBudW1mcmVlcG9vbHMsIFBPT0xfU0laRSk7Ci0gICAgdG90YWwgKz0gcHJpbnRvbmUoYnVmLCAoc2l6ZV90KW51bWZyZWVwb29scyAqIFBPT0xfU0laRSk7CisgICAgdG90YWwgKz0gcHJpbnRvbmUob3V0LCBidWYsIChzaXplX3QpbnVtZnJlZXBvb2xzICogUE9PTF9TSVpFKTsKIAotICAgIHRvdGFsICs9IHByaW50b25lKCIjIGJ5dGVzIGxvc3QgdG8gcG9vbCBoZWFkZXJzIiwgcG9vbF9oZWFkZXJfYnl0ZXMpOwotICAgIHRvdGFsICs9IHByaW50b25lKCIjIGJ5dGVzIGxvc3QgdG8gcXVhbnRpemF0aW9uIiwgcXVhbnRpemF0aW9uKTsKLSAgICB0b3RhbCArPSBwcmludG9uZSgiIyBieXRlcyBsb3N0IHRvIGFyZW5hIGFsaWdubWVudCIsIGFyZW5hX2FsaWdubWVudCk7Ci0gICAgKHZvaWQpcHJpbnRvbmUoIlRvdGFsIiwgdG90YWwpOworICAgIHRvdGFsICs9IHByaW50b25lKG91dCwgIiMgYnl0ZXMgbG9zdCB0byBwb29sIGhlYWRlcnMiLCBwb29sX2hlYWRlcl9ieXRlcyk7CisgICAgdG90YWwgKz0gcHJpbnRvbmUob3V0LCAiIyBieXRlcyBsb3N0IHRvIHF1YW50aXphdGlvbiIsIHF1YW50aXphdGlvbik7CisgICAgdG90YWwgKz0gcHJpbnRvbmUob3V0LCAiIyBieXRlcyBsb3N0IHRvIGFyZW5hIGFsaWdubWVudCIsIGFyZW5hX2FsaWdubWVudCk7CisgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiVG90YWwiLCB0b3RhbCk7CiB9CiAKLSNlbmRpZiAgLyogUFlNQUxMT0NfREVCVUcgKi8KKyNlbmRpZiAvKiAjaWZkZWYgV0lUSF9QWU1BTExPQyAqLwogCiAjaWZkZWYgUHlfVVNJTkdfTUVNT1JZX0RFQlVHR0VSCiAvKiBNYWtlIHRoaXMgZnVuY3Rpb24gbGFzdCBzbyBnY2Mgd29uJ3QgaW5saW5lIGl0IHNpbmNlIHRoZSBkZWZpbml0aW9uIGlzCmRpZmYgLS1naXQgYS9PYmplY3RzL3Jhbmdlb2JqZWN0LmMgYi9PYmplY3RzL3Jhbmdlb2JqZWN0LmMKaW5kZXggY2ViY2NmZi4uMjE0YjQ1NSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9yYW5nZW9iamVjdC5jCisrKyBiL09iamVjdHMvcmFuZ2VvYmplY3QuYwpAQCAtMSw2ICsxLDcgQEAKIC8qIFJhbmdlIG9iamVjdCBpbXBsZW1lbnRhdGlvbiAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAKIC8qIFN1cHBvcnQgb2JqZWN0cyB3aG9zZSBsZW5ndGggaXMgPiBQWV9TU0laRV9UX01BWC4KIApAQCAtNjEwLDYgKzYxMSwxMzcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX0lURVJTRUFSQ0hfQ09OVEFJTlMpOwogfQogCisvKiBDb21wYXJlIHR3byByYW5nZSBvYmplY3RzLiAgUmV0dXJuIDEgZm9yIGVxdWFsLCAwIGZvciBub3QgZXF1YWwKKyAgIGFuZCAtMSBvbiBlcnJvci4gIFRoZSBhbGdvcml0aG0gaXMgcm91Z2hseSB0aGUgQyBlcXVpdmFsZW50IG9mCisKKyAgIGlmIHIwIGlzIHIxOgorICAgICAgIHJldHVybiBUcnVlCisgICBpZiBsZW4ocjApICE9IGxlbihyMSk6CisgICAgICAgcmV0dXJuIEZhbHNlCisgICBpZiBub3QgbGVuKHIwKToKKyAgICAgICByZXR1cm4gVHJ1ZQorICAgaWYgcjAuc3RhcnQgIT0gcjEuc3RhcnQ6CisgICAgICAgcmV0dXJuIEZhbHNlCisgICBpZiBsZW4ocjApID09IDE6CisgICAgICAgcmV0dXJuIFRydWUKKyAgIHJldHVybiByMC5zdGVwID09IHIxLnN0ZXAKKyovCitzdGF0aWMgaW50CityYW5nZV9lcXVhbHMocmFuZ2VvYmplY3QgKnIwLCByYW5nZW9iamVjdCAqcjEpCit7CisgICAgaW50IGNtcF9yZXN1bHQ7CisgICAgUHlPYmplY3QgKm9uZTsKKworICAgIGlmIChyMCA9PSByMSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgY21wX3Jlc3VsdCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChyMC0+bGVuZ3RoLCByMS0+bGVuZ3RoLCBQeV9FUSk7CisgICAgLyogUmV0dXJuIEZhbHNlIG9yIGVycm9yIHRvIHRoZSBjYWxsZXIuICovCisgICAgaWYgKGNtcF9yZXN1bHQgIT0gMSkKKyAgICAgICAgcmV0dXJuIGNtcF9yZXN1bHQ7CisgICAgY21wX3Jlc3VsdCA9IFB5T2JqZWN0X05vdChyMC0+bGVuZ3RoKTsKKyAgICAvKiBSZXR1cm4gVHJ1ZSBvciBlcnJvciB0byB0aGUgY2FsbGVyLiAqLworICAgIGlmIChjbXBfcmVzdWx0ICE9IDApCisgICAgICAgIHJldHVybiBjbXBfcmVzdWx0OworICAgIGNtcF9yZXN1bHQgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wocjAtPnN0YXJ0LCByMS0+c3RhcnQsIFB5X0VRKTsKKyAgICAvKiBSZXR1cm4gRmFsc2Ugb3IgZXJyb3IgdG8gdGhlIGNhbGxlci4gKi8KKyAgICBpZiAoY21wX3Jlc3VsdCAhPSAxKQorICAgICAgICByZXR1cm4gY21wX3Jlc3VsdDsKKyAgICBvbmUgPSBQeUxvbmdfRnJvbUxvbmcoMSk7CisgICAgaWYgKCFvbmUpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHIwLT5sZW5ndGgsIG9uZSwgUHlfRVEpOworICAgIFB5X0RFQ1JFRihvbmUpOworICAgIC8qIFJldHVybiBUcnVlIG9yIGVycm9yIHRvIHRoZSBjYWxsZXIuICovCisgICAgaWYgKGNtcF9yZXN1bHQgIT0gMCkKKyAgICAgICAgcmV0dXJuIGNtcF9yZXN1bHQ7CisgICAgcmV0dXJuIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChyMC0+c3RlcCwgcjEtPnN0ZXAsIFB5X0VRKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3JhbmdlX3JpY2hjb21wYXJlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKK3sKKyAgICBpbnQgcmVzdWx0OworCisgICAgaWYgKCFQeVJhbmdlX0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIFB5X05FOgorICAgIGNhc2UgUHlfRVE6CisgICAgICAgIHJlc3VsdCA9IHJhbmdlX2VxdWFscygocmFuZ2VvYmplY3QqKXNlbGYsIChyYW5nZW9iamVjdCopb3RoZXIpOworICAgICAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChvcCA9PSBQeV9ORSkKKyAgICAgICAgICAgIHJlc3VsdCA9ICFyZXN1bHQ7CisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIGNhc2UgUHlfTEU6CisgICAgY2FzZSBQeV9HRToKKyAgICBjYXNlIFB5X0xUOgorICAgIGNhc2UgUHlfR1Q6CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKKy8qIEhhc2ggZnVuY3Rpb24gZm9yIHJhbmdlIG9iamVjdHMuICBSb3VnaCBDIGVxdWl2YWxlbnQgb2YKKworICAgaWYgbm90IGxlbihyKToKKyAgICAgICByZXR1cm4gaGFzaCgobGVuKHIpLCBOb25lLCBOb25lKSkKKyAgIGlmIGxlbihyKSA9PSAxOgorICAgICAgIHJldHVybiBoYXNoKChsZW4ociksIHIuc3RhcnQsIE5vbmUpKQorICAgcmV0dXJuIGhhc2goKGxlbihyKSwgci5zdGFydCwgci5zdGVwKSkKKyovCitzdGF0aWMgUHlfaGFzaF90CityYW5nZV9oYXNoKHJhbmdlb2JqZWN0ICpyKQoreworICAgIFB5T2JqZWN0ICp0OworICAgIFB5X2hhc2hfdCByZXN1bHQgPSAtMTsKKyAgICBpbnQgY21wX3Jlc3VsdDsKKworICAgIHQgPSBQeVR1cGxlX05ldygzKTsKKyAgICBpZiAoIXQpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBQeV9JTkNSRUYoci0+bGVuZ3RoKTsKKyAgICBQeVR1cGxlX1NFVF9JVEVNKHQsIDAsIHItPmxlbmd0aCk7CisgICAgY21wX3Jlc3VsdCA9IFB5T2JqZWN0X05vdChyLT5sZW5ndGgpOworICAgIGlmIChjbXBfcmVzdWx0ID09IC0xKQorICAgICAgICBnb3RvIGVuZDsKKyAgICBpZiAoY21wX3Jlc3VsdCA9PSAxKSB7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHQsIDEsIFB5X05vbmUpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHQsIDIsIFB5X05vbmUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKm9uZTsKKyAgICAgICAgUHlfSU5DUkVGKHItPnN0YXJ0KTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh0LCAxLCByLT5zdGFydCk7CisgICAgICAgIG9uZSA9IFB5TG9uZ19Gcm9tTG9uZygxKTsKKyAgICAgICAgaWYgKCFvbmUpCisgICAgICAgICAgICBnb3RvIGVuZDsKKyAgICAgICAgY21wX3Jlc3VsdCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChyLT5sZW5ndGgsIG9uZSwgUHlfRVEpOworICAgICAgICBQeV9ERUNSRUYob25lKTsKKyAgICAgICAgaWYgKGNtcF9yZXN1bHQgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGVuZDsKKyAgICAgICAgaWYgKGNtcF9yZXN1bHQgPT0gMSkgeworICAgICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh0LCAyLCBQeV9Ob25lKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihyLT5zdGVwKTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odCwgMiwgci0+c3RlcCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmVzdWx0ID0gUHlPYmplY3RfSGFzaCh0KTsKKyAgZW5kOgorICAgIFB5X0RFQ1JFRih0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogcmFuZ2VfY291bnQocmFuZ2VvYmplY3QgKnIsIFB5T2JqZWN0ICpvYikKIHsKQEAgLTc1MCw2ICs4ODIsMTMgQEAKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAorc3RhdGljIFB5TWVtYmVyRGVmIHJhbmdlX21lbWJlcnNbXSA9IHsKKyAgICB7InN0YXJ0IiwgICBUX09CSkVDVF9FWCwgICAgb2Zmc2V0b2YocmFuZ2VvYmplY3QsIHN0YXJ0KSwgICBSRUFET05MWX0sCisgICAgeyJzdG9wIiwgICAgVF9PQkpFQ1RfRVgsICAgIG9mZnNldG9mKHJhbmdlb2JqZWN0LCBzdG9wKSwgICAgUkVBRE9OTFl9LAorICAgIHsic3RlcCIsICAgIFRfT0JKRUNUX0VYLCAgICBvZmZzZXRvZihyYW5nZW9iamVjdCwgc3RlcCksICAgIFJFQURPTkxZfSwKKyAgICB7MH0KK307CisKIFB5VHlwZU9iamVjdCBQeVJhbmdlX1R5cGUgPSB7CiAgICAgICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCiAgICAgICAgICJyYW5nZSIsICAgICAgICAgICAgICAgIC8qIE5hbWUgb2YgdGhpcyB0eXBlICovCkBAIC03NjQsNyArOTAzLDcgQEAKICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgICAgICZyYW5nZV9hc19zZXF1ZW5jZSwgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCiAgICAgICAgICZyYW5nZV9hc19tYXBwaW5nLCAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgICAgICAoaGFzaGZ1bmMpcmFuZ2VfaGFzaCwgICAvKiB0cF9oYXNoICovCiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCiAgICAgICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgLyogdHBfZ2V0YXR0cm8gKi8KQEAgLTc3NCwxMiArOTEzLDEyIEBACiAgICAgICAgIHJhbmdlX2RvYywgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgICAgICByYW5nZV9yaWNoY29tcGFyZSwgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgICAgICByYW5nZV9pdGVyLCAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgICAgIHJhbmdlX21ldGhvZHMsICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KLSAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgICAgICByYW5nZV9tZW1iZXJzLCAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KQEAgLTgyNiw5ICs5NjUsNTkgQEAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsCiAgICAgICAgICAgICAgIlByaXZhdGUgbWV0aG9kIHJldHVybmluZyBhbiBlc3RpbWF0ZSBvZiBsZW4obGlzdChpdCkpLiIpOwogCitzdGF0aWMgUHlPYmplY3QgKgorcmFuZ2VpdGVyX3JlZHVjZShyYW5nZWl0ZXJvYmplY3QgKnIpCit7CisgICAgUHlPYmplY3QgKnN0YXJ0PU5VTEwsICpzdG9wPU5VTEwsICpzdGVwPU5VTEw7CisgICAgUHlPYmplY3QgKnJhbmdlOworCisgICAgLyogY3JlYXRlIGEgcmFuZ2Ugb2JqZWN0IGZvciBwaWNrbGluZyAqLworICAgIHN0YXJ0ID0gUHlMb25nX0Zyb21Mb25nKHItPnN0YXJ0KTsKKyAgICBpZiAoc3RhcnQgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnI7CisgICAgc3RvcCA9IFB5TG9uZ19Gcm9tTG9uZyhyLT5zdGFydCArIHItPmxlbiAqIHItPnN0ZXApOworICAgIGlmIChzdG9wID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyOworICAgIHN0ZXAgPSBQeUxvbmdfRnJvbUxvbmcoci0+c3RlcCk7CisgICAgaWYgKHN0ZXAgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnI7CisgICAgcmFuZ2UgPSAoUHlPYmplY3QqKW1ha2VfcmFuZ2Vfb2JqZWN0KCZQeVJhbmdlX1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIHN0b3AsIHN0ZXApOworICAgIGlmIChyYW5nZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycjsKKyAgICAvKiByZXR1cm4gdGhlIHJlc3VsdCAqLworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE4paSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIHJhbmdlLCByLT5pbmRleCk7CitlcnI6CisgICAgUHlfWERFQ1JFRihzdGFydCk7CisgICAgUHlfWERFQ1JFRihzdG9wKTsKKyAgICBQeV9YREVDUkVGKHN0ZXApOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorcmFuZ2VpdGVyX3NldHN0YXRlKHJhbmdlaXRlcm9iamVjdCAqciwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIGxvbmcgaW5kZXggPSBQeUxvbmdfQXNMb25nKHN0YXRlKTsKKyAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSByLT5sZW4pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHItPmluZGV4ID0gaW5kZXg7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKK1B5RG9jX1NUUlZBUihzZXRzdGF0ZV9kb2MsICJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CisKIHN0YXRpYyBQeU1ldGhvZERlZiByYW5nZWl0ZXJfbWV0aG9kc1tdID0gewogICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKXJhbmdlaXRlcl9sZW4sIE1FVEhfTk9BUkdTLAogICAgICAgICBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilyYW5nZWl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywKKyAgICAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pcmFuZ2VpdGVyX3NldHN0YXRlLCBNRVRIX08sCisgICAgICAgIHNldHN0YXRlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTk1Nyw5ICsxMTQ2LDUxIEBACiAgICAgcmV0dXJuIFB5TnVtYmVyX1N1YnRyYWN0KHItPmxlbiwgci0+aW5kZXgpOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbG9uZ3JhbmdlaXRlcl9yZWR1Y2UobG9uZ3JhbmdlaXRlcm9iamVjdCAqcikKK3sKKyAgICBQeU9iamVjdCAqcHJvZHVjdCwgKnN0b3A9TlVMTDsKKyAgICBQeU9iamVjdCAqcmFuZ2U7CisKKyAgICAvKiBjcmVhdGUgYSByYW5nZSBvYmplY3QgZm9yIHBpY2tsaW5nLiAgTXVzdCBjYWxjdWxhdGUgdGhlICJzdG9wIiB2YWx1ZSAqLworICAgIHByb2R1Y3QgPSBQeU51bWJlcl9NdWx0aXBseShyLT5sZW4sIHItPnN0ZXApOworICAgIGlmIChwcm9kdWN0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHN0b3AgPSBQeU51bWJlcl9BZGQoci0+c3RhcnQsIHByb2R1Y3QpOworICAgIFB5X0RFQ1JFRihwcm9kdWN0KTsKKyAgICBpZiAoc3RvcCA9PSAgTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKHItPnN0YXJ0KTsKKyAgICBQeV9JTkNSRUYoci0+c3RlcCk7CisgICAgcmFuZ2UgPSAgKFB5T2JqZWN0KiltYWtlX3JhbmdlX29iamVjdCgmUHlSYW5nZV9UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHItPnN0YXJ0LCBzdG9wLCByLT5zdGVwKTsKKyAgICBpZiAocmFuZ2UgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoci0+c3RhcnQpOworICAgICAgICBQeV9ERUNSRUYoc3RvcCk7CisgICAgICAgIFB5X0RFQ1JFRihyLT5zdGVwKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogcmV0dXJuIHRoZSByZXN1bHQgKi8KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKU8iLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLCByYW5nZSwgci0+aW5kZXgpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbG9uZ3JhbmdlaXRlcl9zZXRzdGF0ZShsb25ncmFuZ2VpdGVyb2JqZWN0ICpyLCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlfQ0xFQVIoci0+aW5kZXgpOworICAgIHItPmluZGV4ID0gc3RhdGU7CisgICAgUHlfSU5DUkVGKHItPmluZGV4KTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKwogc3RhdGljIFB5TWV0aG9kRGVmIGxvbmdyYW5nZWl0ZXJfbWV0aG9kc1tdID0gewogICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKWxvbmdyYW5nZWl0ZXJfbGVuLCBNRVRIX05PQVJHUywKICAgICAgICAgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pbG9uZ3JhbmdlaXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAorICAgICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilsb25ncmFuZ2VpdGVyX3NldHN0YXRlLCBNRVRIX08sCisgICAgICAgIHNldHN0YXRlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvc2V0b2JqZWN0LmMgYi9PYmplY3RzL3NldG9iamVjdC5jCmluZGV4IGQ4NDAxZjQuLmM0ODRkY2UgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc2V0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9zZXRvYmplY3QuYwpAQCAtODYsNyArODYsNyBAQAogICAgIHJlZ2lzdGVyIGludCBjbXA7CiAgICAgUHlPYmplY3QgKnN0YXJ0a2V5OwogCi0gICAgaSA9IGhhc2ggJiBtYXNrOworICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwogICAgIGVudHJ5ID0gJnRhYmxlW2ldOwogICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwgfHwgZW50cnktPmtleSA9PSBrZXkpCiAgICAgICAgIHJldHVybiBlbnRyeTsKQEAgLTE3NCw3ICsxNzQsNyBAQAogICAgICAgICBzby0+bG9va3VwID0gc2V0X2xvb2trZXk7CiAgICAgICAgIHJldHVybiBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKICAgICB9Ci0gICAgaSA9IGhhc2ggJiBtYXNrOworICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwogICAgIGVudHJ5ID0gJnRhYmxlW2ldOwogICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwgfHwgZW50cnktPmtleSA9PSBrZXkpCiAgICAgICAgIHJldHVybiBlbnRyeTsKQEAgLTI1Niw3ICsyNTYsNyBAQAogICAgIHNldGVudHJ5ICp0YWJsZSA9IHNvLT50YWJsZTsKICAgICByZWdpc3RlciBzZXRlbnRyeSAqZW50cnk7CiAKLSAgICBpID0gaGFzaCAmIG1hc2s7CisgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CiAgICAgZW50cnkgPSAmdGFibGVbaV07CiAgICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgZW50cnktPmtleSAhPSBOVUxMOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7CiAgICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKQEAgLTM4Niw3ICszODYsNyBAQAogICAgIHJlZ2lzdGVyIFB5X3NzaXplX3Qgbl91c2VkOwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC00MzQsNyArNDM0LDcgQEAKICAgICBhc3NlcnQgKFB5QW55U2V0X0NoZWNrKHNvKSk7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTU3OSwxMSArNTc5LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfcmVwcihQeVNldE9iamVjdCAqc28pCiB7Ci0gICAgUHlPYmplY3QgKmtleXMsICpyZXN1bHQ9TlVMTDsKLSAgICBQeV9VTklDT0RFICp1OworICAgIFB5T2JqZWN0ICpyZXN1bHQ9TlVMTCwgKmtleXMsICpsaXN0cmVwciwgKnRtcDsKICAgICBpbnQgc3RhdHVzID0gUHlfUmVwckVudGVyKChQeU9iamVjdCopc28pOwotICAgIFB5T2JqZWN0ICpsaXN0cmVwcjsKLSAgICBQeV9zc2l6ZV90IG5ld3NpemU7CiAKICAgICBpZiAoc3RhdHVzICE9IDApIHsKICAgICAgICAgaWYgKHN0YXR1cyA8IDApCkBAIC02MDEsMjkgKzU5OCwyNCBAQAogICAgIGlmIChrZXlzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZG9uZTsKIAorICAgIC8qIHJlcHIoa2V5cylbMTotMV0gKi8KICAgICBsaXN0cmVwciA9IFB5T2JqZWN0X1JlcHIoa2V5cyk7CiAgICAgUHlfREVDUkVGKGtleXMpOwogICAgIGlmIChsaXN0cmVwciA9PSBOVUxMKQogICAgICAgICBnb3RvIGRvbmU7Ci0gICAgbmV3c2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShsaXN0cmVwcik7Ci0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIG5ld3NpemUpOwotICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgdSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCk7Ci0gICAgICAgICp1KysgPSAneyc7Ci0gICAgICAgIC8qIE9taXQgdGhlIGJyYWNrZXRzIGZyb20gdGhlIGxpc3RyZXByICovCi0gICAgICAgIFB5X1VOSUNPREVfQ09QWSh1LCBQeVVuaWNvZGVfQVNfVU5JQ09ERShsaXN0cmVwcikrMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShsaXN0cmVwciktMik7Ci0gICAgICAgIHUgKz0gbmV3c2l6ZS0yOwotICAgICAgICAqdSsrID0gJ30nOwotICAgIH0KKyAgICB0bXAgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGxpc3RyZXByLCAxLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChsaXN0cmVwciktMSk7CiAgICAgUHlfREVDUkVGKGxpc3RyZXByKTsKLSAgICBpZiAoUHlfVFlQRShzbykgIT0gJlB5U2V0X1R5cGUpIHsKLSAgICAgICAgUHlPYmplY3QgKnRtcCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyglVSkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzbyktPnRwX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOwotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgcmVzdWx0ID0gdG1wOwotICAgIH0KKyAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBsaXN0cmVwciA9IHRtcDsKKworICAgIGlmIChQeV9UWVBFKHNvKSAhPSAmUHlTZXRfVHlwZSkKKyAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKHslVX0pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzbyktPnRwX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RyZXByKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJ7JVV9IiwgbGlzdHJlcHIpOworICAgIFB5X0RFQ1JFRihsaXN0cmVwcik7CiBkb25lOgogICAgIFB5X1JlcHJMZWF2ZSgoUHlPYmplY3QqKXNvKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjgyLDcgKzY3NCw3IEBACiAgICAgc2V0ZW50cnkgKmVudHJ5OwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC03NzUsNyArNzY3LDcgQEAKICAgICBpZiAoc28tPmhhc2ggIT0gLTEpCiAgICAgICAgIHJldHVybiBzby0+aGFzaDsKIAotICAgIGhhc2ggKj0gUHlTZXRfR0VUX1NJWkUoc2VsZikgKyAxOworICAgIGhhc2ggKj0gKFB5X3VoYXNoX3QpUHlTZXRfR0VUX1NJWkUoc2VsZikgKyAxOwogICAgIHdoaWxlIChzZXRfbmV4dChzbywgJnBvcywgJmVudHJ5KSkgewogICAgICAgICAvKiBXb3JrIHRvIGluY3JlYXNlIHRoZSBiaXQgZGlzcGVyc2lvbiBmb3IgY2xvc2VseSBzcGFjZWQgaGFzaAogICAgICAgICAgICB2YWx1ZXMuICBUaGUgaXMgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSB1c2UgY2FzZXMgaGF2ZSBtYW55CkBAIC03ODUsNyArNzc3LDcgQEAKICAgICAgICAgaCA9IGVudHJ5LT5oYXNoOwogICAgICAgICBoYXNoIF49IChoIF4gKGggPDwgMTYpIF4gODk4Njk3NDdVTCkgICogMzY0NDc5ODE2N1VMOwogICAgIH0KLSAgICBoYXNoID0gaGFzaCAqIDY5MDY5VUwgKyA5MDcxMzM5MjNVTDsKKyAgICBoYXNoID0gaGFzaCAqIDY5MDY5VSArIDkwNzEzMzkyM1VMOwogICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICBoYXNoID0gNTkwOTIzNzEzVUw7CiAgICAgc28tPmhhc2ggPSBoYXNoOwpAQCAtODI3LDggKzgxOSw1MSBAQAogCiBQeURvY19TVFJWQVIobGVuZ3RoX2hpbnRfZG9jLCAiUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqc2V0aXRlcl9pdGVybmV4dChzZXRpdGVyb2JqZWN0ICpzaSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzZXRpdGVyX3JlZHVjZShzZXRpdGVyb2JqZWN0ICpzaSkKK3sKKyAgICBQeU9iamVjdCAqbGlzdDsKKyAgICBzZXRpdGVyb2JqZWN0IHRtcDsKKworICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOworICAgIGlmICghbGlzdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBjb3B5IHRoZSBpdGVyYXRvciBzdGF0ZSAqLworICAgIHRtcCA9ICpzaTsKKyAgICBQeV9YSU5DUkVGKHRtcC5zaV9zZXQpOworCisgICAgLyogaXRlcmF0ZSB0aGUgdGVtcG9yYXJ5IGludG8gYSBsaXN0ICovCisgICAgZm9yKDs7KSB7CisgICAgICAgIFB5T2JqZWN0ICplbGVtZW50ID0gc2V0aXRlcl9pdGVybmV4dCgmdG1wKTsKKyAgICAgICAgaWYgKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIGVsZW1lbnQpKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW1lbnQpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcC5zaV9zZXQpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKGVsZW1lbnQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBQeV9YREVDUkVGKHRtcC5zaV9zZXQpOworICAgIC8qIGNoZWNrIGZvciBlcnJvciAqLworICAgIGlmICh0bXAuc2lfc2V0ICE9IE5VTEwpIHsKKyAgICAgICAgLyogd2UgaGF2ZSBhbiBlcnJvciAqLworICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIGxpc3QpOworfQorCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKIHN0YXRpYyBQeU1ldGhvZERlZiBzZXRpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilzZXRpdGVyX2xlbiwgTUVUSF9OT0FSR1MsIGxlbmd0aF9oaW50X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKXNldGl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTEwNzYsOSArMTExMSwxMCBAQAogICAgIHJldHVybiBlbXB0eWZyb3plbnNldDsKIH0KIAotdm9pZAotUHlTZXRfRmluaSh2b2lkKQoraW50CitQeVNldF9DbGVhckZyZWVMaXN0KHZvaWQpCiB7CisgICAgaW50IGZyZWVsaXN0X3NpemUgPSBudW1mcmVlOwogICAgIFB5U2V0T2JqZWN0ICpzbzsKIAogICAgIHdoaWxlIChudW1mcmVlKSB7CkBAIC0xMDg2LDEwICsxMTIyLDI3IEBACiAgICAgICAgIHNvID0gZnJlZV9saXN0W251bWZyZWVdOwogICAgICAgICBQeU9iamVjdF9HQ19EZWwoc28pOwogICAgIH0KKyAgICByZXR1cm4gZnJlZWxpc3Rfc2l6ZTsKK30KKwordm9pZAorUHlTZXRfRmluaSh2b2lkKQoreworICAgIFB5U2V0X0NsZWFyRnJlZUxpc3QoKTsKICAgICBQeV9DTEVBUihkdW1teSk7CiAgICAgUHlfQ0xFQVIoZW1wdHlmcm96ZW5zZXQpOwogfQogCisvKiBQcmludCBzdW1tYXJ5IGluZm8gYWJvdXQgdGhlIHN0YXRlIG9mIHRoZSBvcHRpbWl6ZWQgYWxsb2NhdG9yICovCit2b2lkCitfUHlTZXRfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpCit7CisgICAgX1B5RGVidWdBbGxvY2F0b3JTdGF0cyhvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJlZSBQeVNldE9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1mcmVlLCBzaXplb2YoUHlTZXRPYmplY3QpKTsKK30KKworCiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKQEAgLTEyMTAsMTAgKzEyNjMsOCBAQAogewogICAgIFB5U2V0T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKHNvKSB8fCAhUHlBbnlTZXRfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeUFueVNldF9DaGVjayhzbykgfHwgIVB5QW55U2V0X0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgcmVzdWx0ID0gKFB5U2V0T2JqZWN0ICopc2V0X2NvcHkoc28pOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKQEAgLTEyMzAsMTAgKzEyODEsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNldF9pb3IoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqb3RoZXIpCiB7Ci0gICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworCiAgICAgaWYgKHNldF91cGRhdGVfaW50ZXJuYWwoc28sIG90aGVyKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfSU5DUkVGKHNvKTsKQEAgLTEzODMsMTAgKzE0MzMsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNldF9hbmQoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqb3RoZXIpCiB7Ci0gICAgaWYgKCFQeUFueVNldF9DaGVjayhzbykgfHwgIVB5QW55U2V0X0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlBbnlTZXRfQ2hlY2soc28pIHx8ICFQeUFueVNldF9DaGVjayhvdGhlcikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICByZXR1cm4gc2V0X2ludGVyc2VjdGlvbihzbywgb3RoZXIpOwogfQogCkBAIC0xMzk1LDEwICsxNDQzLDggQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCi0gICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIHJlc3VsdCA9IHNldF9pbnRlcnNlY3Rpb25fdXBkYXRlKHNvLCBvdGhlcik7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE2MjUsMjAgKzE2NzEsMTYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfc3ViKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKm90aGVyKQogewotICAgIGlmICghUHlBbnlTZXRfQ2hlY2soc28pIHx8ICFQeUFueVNldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5QW55U2V0X0NoZWNrKHNvKSB8fCAhUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgcmV0dXJuIHNldF9kaWZmZXJlbmNlKHNvLCBvdGhlcik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfaXN1YihQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICpvdGhlcikKIHsKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgaWYgKHNldF9kaWZmZXJlbmNlX3VwZGF0ZV9pbnRlcm5hbChzbywgb3RoZXIpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9JTkNSRUYoc28pOwpAQCAtMTczNiwxMCArMTc3OCw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X3hvcihQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICpvdGhlcikKIHsKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKHNvKSB8fCAhUHlBbnlTZXRfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeUFueVNldF9DaGVjayhzbykgfHwgIVB5QW55U2V0X0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIHJldHVybiBzZXRfc3ltbWV0cmljX2RpZmZlcmVuY2Uoc28sIG90aGVyKTsKIH0KIApAQCAtMTc0OCwxMCArMTc4OCw4IEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICByZXN1bHQgPSBzZXRfc3ltbWV0cmljX2RpZmZlcmVuY2VfdXBkYXRlKHNvLCBvdGhlcik7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE4MTMsMTAgKzE4NTEsOSBAQAogewogICAgIFB5T2JqZWN0ICpyMSwgKnIyOwogCi0gICAgaWYoIVB5QW55U2V0X0NoZWNrKHcpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYoIVB5QW55U2V0X0NoZWNrKHcpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisKICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgY2FzZSBQeV9FUToKICAgICAgICAgaWYgKFB5U2V0X0dFVF9TSVpFKHYpICE9IFB5U2V0X0dFVF9TSVpFKHcpKQpAQCAtMTg0Niw4ICsxODgzLDcgQEAKICAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKICAgICAgICAgcmV0dXJuIHNldF9pc3N1cGVyc2V0KHYsIHcpOwogICAgIH0KLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xOTU5LDYgKzE5OTUsNyBAQAogc2V0X3JlZHVjZShQeVNldE9iamVjdCAqc28pCiB7CiAgICAgUHlPYmplY3QgKmtleXM9TlVMTCwgKmFyZ3M9TlVMTCwgKnJlc3VsdD1OVUxMLCAqZGljdD1OVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKIAogICAgIGtleXMgPSBQeVNlcXVlbmNlX0xpc3QoKFB5T2JqZWN0ICopc28pOwogICAgIGlmIChrZXlzID09IE5VTEwpCkBAIC0xOTY2LDcgKzIwMDMsNyBAQAogICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwga2V5cyk7CiAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKICAgICAgICAgZ290byBkb25lOwotICAgIGRpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKXNvLCAiX19kaWN0X18iKTsKKyAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilzbywgJlB5SWRfX19kaWN0X18pOwogICAgIGlmIChkaWN0ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZGljdCA9IFB5X05vbmU7CkBAIC0xOTgwLDggKzIwMTcsNiBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIHNldF9zaXplb2YoUHlTZXRPYmplY3QgKnNvKQogewpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zbGljZW9iamVjdC5jIGIvT2JqZWN0cy9zbGljZW9iamVjdC5jCmluZGV4IDBmNGI2NDcuLjE1OTMzMzUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc2xpY2VvYmplY3QuYworKysgYi9PYmplY3RzL3NsaWNlb2JqZWN0LmMKQEAgLTE3LDYgKzE3LDE3IEBACiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAKIHN0YXRpYyBQeU9iamVjdCAqCitlbGxpcHNpc19uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSB8fCAoa3dhcmdzICYmIFB5RGljdF9TaXplKGt3YXJncykpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJFbGxpcHNpc1R5cGUgdGFrZXMgbm8gYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9JTkNSRUYoUHlfRWxsaXBzaXMpOworICAgIHJldHVybiBQeV9FbGxpcHNpczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGVsbGlwc2lzX3JlcHIoUHlPYmplY3QgKm9wKQogewogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygiRWxsaXBzaXMiKTsKQEAgLTQzLDYgKzU0LDI0IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBlbGxpcHNpc19uZXcsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KIH07CiAKIFB5T2JqZWN0IF9QeV9FbGxpcHNpc09iamVjdCA9IHsKQEAgLTUxLDE5ICs4MCwzOCBAQAogfTsKIAogCi0vKiBTbGljZSBvYmplY3QgaW1wbGVtZW50YXRpb24KKy8qIFNsaWNlIG9iamVjdCBpbXBsZW1lbnRhdGlvbiAqLwogCi0gICBzdGFydCwgc3RvcCwgYW5kIHN0ZXAgYXJlIHB5dGhvbiBvYmplY3RzIHdpdGggTm9uZSBpbmRpY2F0aW5nIG5vCisvKiBVc2luZyBhIGNhY2hlIGlzIHZlcnkgZWZmZWN0aXZlIHNpbmNlIHR5cGljYWxseSBvbmx5IGEgc2luZ2xlIHNsaWNlIGlzCisgKiBjcmVhdGVkIGFuZCB0aGVuIGRlbGV0ZWQgYWdhaW4KKyAqLworc3RhdGljIFB5U2xpY2VPYmplY3QgKnNsaWNlX2NhY2hlID0gTlVMTDsKK3ZvaWQgUHlTbGljZV9GaW5pKHZvaWQpCit7CisgICAgUHlTbGljZU9iamVjdCAqb2JqID0gc2xpY2VfY2FjaGU7CisgICAgaWYgKG9iaiAhPSBOVUxMKSB7CisgICAgICAgIHNsaWNlX2NhY2hlID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3RfRGVsKG9iaik7CisgICAgfQorfQorCisvKiBzdGFydCwgc3RvcCwgYW5kIHN0ZXAgYXJlIHB5dGhvbiBvYmplY3RzIHdpdGggTm9uZSBpbmRpY2F0aW5nIG5vCiAgICBpbmRleCBpcyBwcmVzZW50LgogKi8KIAogUHlPYmplY3QgKgogUHlTbGljZV9OZXcoUHlPYmplY3QgKnN0YXJ0LCBQeU9iamVjdCAqc3RvcCwgUHlPYmplY3QgKnN0ZXApCiB7Ci0gICAgUHlTbGljZU9iamVjdCAqb2JqID0gUHlPYmplY3RfTmV3KFB5U2xpY2VPYmplY3QsICZQeVNsaWNlX1R5cGUpOwotCi0gICAgaWYgKG9iaiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeVNsaWNlT2JqZWN0ICpvYmo7CisgICAgaWYgKHNsaWNlX2NhY2hlICE9IE5VTEwpIHsKKyAgICAgICAgb2JqID0gc2xpY2VfY2FjaGU7CisgICAgICAgIHNsaWNlX2NhY2hlID0gTlVMTDsKKyAgICAgICAgX1B5X05ld1JlZmVyZW5jZSgoUHlPYmplY3QgKilvYmopOworICAgIH0gZWxzZSB7CisgICAgICAgIG9iaiA9IFB5T2JqZWN0X05ldyhQeVNsaWNlT2JqZWN0LCAmUHlTbGljZV9UeXBlKTsKKyAgICAgICAgaWYgKG9iaiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgaWYgKHN0ZXAgPT0gTlVMTCkgc3RlcCA9IFB5X05vbmU7CiAgICAgUHlfSU5DUkVGKHN0ZXApOwpAQCAtMjMyLDcgKzI4MCwxMCBAQAogICAgIFB5X0RFQ1JFRihyLT5zdGVwKTsKICAgICBQeV9ERUNSRUYoci0+c3RhcnQpOwogICAgIFB5X0RFQ1JFRihyLT5zdG9wKTsKLSAgICBQeU9iamVjdF9EZWwocik7CisgICAgaWYgKHNsaWNlX2NhY2hlID09IE5VTEwpCisgICAgICAgIHNsaWNlX2NhY2hlID0gcjsKKyAgICBlbHNlCisgICAgICAgIFB5T2JqZWN0X0RlbChyKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI5OCwxMCArMzQ5LDggQEAKICAgICBQeU9iamVjdCAqdDI7CiAgICAgUHlPYmplY3QgKnJlczsKIAotICAgIGlmICghUHlTbGljZV9DaGVjayh2KSB8fCAhUHlTbGljZV9DaGVjayh3KSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlTbGljZV9DaGVjayh2KSB8fCAhUHlTbGljZV9DaGVjayh3KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgaWYgKHYgPT0gdykgewogICAgICAgICAvKiBYWFggRG8gd2UgcmVhbGx5IG5lZWQgdGhpcyBzaG9ydGN1dD8KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2FzY2lpbGliLmggYi9PYmplY3RzL3N0cmluZ2xpYi9hc2NpaWxpYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MjgxM2QKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9hc2NpaWxpYi5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qIHRoaXMgaXMgc29ydCBvZiBhIGhhY2suICB0aGVyZSdzIGF0IGxlYXN0IG9uZSBwbGFjZSAoZm9ybWF0dGluZworICAgZmxvYXRzKSB3aGVyZSBzb21lIHN0cmluZ2xpYiBjb2RlIHRha2VzIGEgZGlmZmVyZW50IHBhdGggaWYgaXQncworICAgY29tcGlsZWQgYXMgdW5pY29kZS4gKi8KKyNkZWZpbmUgU1RSSU5HTElCX0lTX1VOSUNPREUgICAgIDEKKworI2RlZmluZSBGQVNUU0VBUkNIICAgICAgICAgICAgICAgYXNjaWlsaWJfZmFzdHNlYXJjaAorI2RlZmluZSBTVFJJTkdMSUIoRikgICAgICAgICAgICAgYXNjaWlsaWJfIyNGCisjZGVmaW5lIFNUUklOR0xJQl9PQkpFQ1QgICAgICAgICBQeVVuaWNvZGVPYmplY3QKKyNkZWZpbmUgU1RSSU5HTElCX1NJWkVPRl9DSEFSICAgIDEKKyNkZWZpbmUgU1RSSU5HTElCX01BWF9DSEFSICAgICAgIDB4N0Z1CisjZGVmaW5lIFNUUklOR0xJQl9DSEFSICAgICAgICAgICBQeV9VQ1MxCisjZGVmaW5lIFNUUklOR0xJQl9UWVBFX05BTUUgICAgICAidW5pY29kZSIKKyNkZWZpbmUgU1RSSU5HTElCX1BBUlNFX0NPREUgICAgICJVIgorI2RlZmluZSBTVFJJTkdMSUJfRU1QVFkgICAgICAgICAgdW5pY29kZV9lbXB0eQorI2RlZmluZSBTVFJJTkdMSUJfSVNTUEFDRSAgICAgICAgUHlfVU5JQ09ERV9JU1NQQUNFCisjZGVmaW5lIFNUUklOR0xJQl9JU0xJTkVCUkVBSyAgICBCTE9PTV9MSU5FQlJFQUsKKyNkZWZpbmUgU1RSSU5HTElCX0lTREVDSU1BTCAgICAgIFB5X1VOSUNPREVfSVNERUNJTUFMCisjZGVmaW5lIFNUUklOR0xJQl9UT0RFQ0lNQUwgICAgICBQeV9VTklDT0RFX1RPREVDSU1BTAorI2RlZmluZSBTVFJJTkdMSUJfU1RSICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEKKyNkZWZpbmUgU1RSSU5HTElCX0xFTiAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RICisjZGVmaW5lIFNUUklOR0xJQl9ORVcoU1RSLExFTikgICBfUHlVbmljb2RlX0Zyb21BU0NJSSgoY2hhciopKFNUUiksKExFTikpCisjZGVmaW5lIFNUUklOR0xJQl9SRVNJWkUgICAgICAgICBub3Rfc3VwcG9ydGVkCisjZGVmaW5lIFNUUklOR0xJQl9DSEVDSyAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2sKKyNkZWZpbmUgU1RSSU5HTElCX0NIRUNLX0VYQUNUICAgIFB5VW5pY29kZV9DaGVja0V4YWN0CisKKyNkZWZpbmUgU1RSSU5HTElCX1RPU1RSICAgICAgICAgIFB5T2JqZWN0X1N0cgorI2RlZmluZSBTVFJJTkdMSUJfVE9BU0NJSSAgICAgICAgUHlPYmplY3RfQVNDSUkKKworI2RlZmluZSBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcgX1B5VW5pY29kZV9hc2NpaV9JbnNlcnRUaG91c2FuZHNHcm91cGluZworCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaCBiL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNTMzNjcKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaApAQCAtMCwwICsxLDY2MSBAQAorLyogc3RyaW5nbGliOiBjb2RlYyBpbXBsZW1lbnRhdGlvbnMgKi8KKworI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCisKKy8qIE1hc2sgdG8gcXVpY2tseSBjaGVjayB3aGV0aGVyIGEgQyAnbG9uZycgY29udGFpbnMgYQorICAgbm9uLUFTQ0lJLCBVVEY4LWVuY29kZWQgY2hhci4gKi8KKyNpZiAoU0laRU9GX0xPTkcgPT0gOCkKKyMgZGVmaW5lIEFTQ0lJX0NIQVJfTUFTSyAweDgwODA4MDgwODA4MDgwODBVTAorI2VsaWYgKFNJWkVPRl9MT05HID09IDQpCisjIGRlZmluZSBBU0NJSV9DSEFSX01BU0sgMHg4MDgwODA4MFVMCisjZWxzZQorIyBlcnJvciBDICdsb25nJyBzaXplIHNob3VsZCBiZSBlaXRoZXIgNCBvciA4IQorI2VuZGlmCisKKy8qIDEweHh4eHh4ICovCisjZGVmaW5lIElTX0NPTlRJTlVBVElPTl9CWVRFKGNoKSAoKGNoKSA+PSAweDgwICYmIChjaCkgPCAweEMwKQorCitQeV9MT0NBTF9JTkxJTkUoUHlfVUNTNCkKK1NUUklOR0xJQih1dGY4X2RlY29kZSkoY29uc3QgY2hhciAqKmlucHRyLCBjb25zdCBjaGFyICplbmQsCisgICAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpvdXRwb3MpCit7CisgICAgUHlfVUNTNCBjaDsKKyAgICBjb25zdCBjaGFyICpzID0gKmlucHRyOworICAgIGNvbnN0IGNoYXIgKmFsaWduZWRfZW5kID0gKGNvbnN0IGNoYXIgKikgX1B5X0FMSUdOX0RPV04oZW5kLCBTSVpFT0ZfTE9ORyk7CisgICAgU1RSSU5HTElCX0NIQVIgKnAgPSBkZXN0ICsgKm91dHBvczsKKworICAgIHdoaWxlIChzIDwgZW5kKSB7CisgICAgICAgIGNoID0gKHVuc2lnbmVkIGNoYXIpKnM7CisKKyAgICAgICAgaWYgKGNoIDwgMHg4MCkgeworICAgICAgICAgICAgLyogRmFzdCBwYXRoIGZvciBydW5zIG9mIEFTQ0lJIGNoYXJhY3RlcnMuIEdpdmVuIHRoYXQgY29tbW9uIFVURi04CisgICAgICAgICAgICAgICBpbnB1dCB3aWxsIGNvbnNpc3Qgb2YgYW4gb3ZlcndoZWxtaW5nIG1ham9yaXR5IG9mIEFTQ0lJCisgICAgICAgICAgICAgICBjaGFyYWN0ZXJzLCB3ZSB0cnkgdG8gb3B0aW1pemUgZm9yIHRoaXMgY2FzZSBieSBjaGVja2luZworICAgICAgICAgICAgICAgYXMgbWFueSBjaGFyYWN0ZXJzIGFzIGEgQyAnbG9uZycgY2FuIGNvbnRhaW4uCisgICAgICAgICAgICAgICBGaXJzdCwgY2hlY2sgaWYgd2UgY2FuIGRvIGFuIGFsaWduZWQgcmVhZCwgYXMgbW9zdCBDUFVzIGhhdmUKKyAgICAgICAgICAgICAgIGEgcGVuYWx0eSBmb3IgdW5hbGlnbmVkIHJlYWRzLgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChfUHlfSVNfQUxJR05FRChzLCBTSVpFT0ZfTE9ORykpIHsKKyAgICAgICAgICAgICAgICAvKiBIZWxwIHJlZ2lzdGVyIGFsbG9jYXRpb24gKi8KKyAgICAgICAgICAgICAgICByZWdpc3RlciBjb25zdCBjaGFyICpfcyA9IHM7CisgICAgICAgICAgICAgICAgcmVnaXN0ZXIgU1RSSU5HTElCX0NIQVIgKl9wID0gcDsKKyAgICAgICAgICAgICAgICB3aGlsZSAoX3MgPCBhbGlnbmVkX2VuZCkgeworICAgICAgICAgICAgICAgICAgICAvKiBSZWFkIGEgd2hvbGUgbG9uZyBhdCBhIHRpbWUgKGVpdGhlciA0IG9yIDggYnl0ZXMpLAorICAgICAgICAgICAgICAgICAgICAgICBhbmQgZG8gYSBmYXN0IHVucm9sbGVkIGNvcHkgaWYgaXQgb25seSBjb250YWlucyBBU0NJSQorICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzLiAqLworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZhbHVlID0gKih1bnNpZ25lZCBsb25nICopIF9zOworICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgJiBBU0NJSV9DSEFSX01BU0spCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyNpZmRlZiBCWVRFT1JERVJfSVNfTElUVExFX0VORElBTgorICAgICAgICAgICAgICAgICAgICBfcFswXSA9IChTVFJJTkdMSUJfQ0hBUikodmFsdWUgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzFdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gOCkgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzJdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gMTYpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFszXSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDI0KSAmIDB4RkZ1KTsKKyMgaWYgU0laRU9GX0xPTkcgPT0gOAorICAgICAgICAgICAgICAgICAgICBfcFs0XSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDMyKSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbNV0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiA0MCkgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzZdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gNDgpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFs3XSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDU2KSAmIDB4RkZ1KTsKKyMgZW5kaWYKKyNlbHNlCisjIGlmIFNJWkVPRl9MT05HID09IDgKKyAgICAgICAgICAgICAgICAgICAgX3BbMF0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiA1NikgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzFdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gNDgpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFsyXSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDQwKSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbM10gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiAzMikgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzRdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gMjQpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFs1XSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDE2KSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbNl0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiA4KSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbN10gPSAoU1RSSU5HTElCX0NIQVIpKHZhbHVlICYgMHhGRnUpOworIyBlbHNlCisgICAgICAgICAgICAgICAgICAgIF9wWzBdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gMjQpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFsxXSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDE2KSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbMl0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiA4KSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbM10gPSAoU1RSSU5HTElCX0NIQVIpKHZhbHVlICYgMHhGRnUpOworIyBlbmRpZgorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgIF9zICs9IFNJWkVPRl9MT05HOworICAgICAgICAgICAgICAgICAgICBfcCArPSBTSVpFT0ZfTE9ORzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcyA9IF9zOworICAgICAgICAgICAgICAgIHAgPSBfcDsKKyAgICAgICAgICAgICAgICBpZiAocyA9PSBlbmQpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNoID0gKHVuc2lnbmVkIGNoYXIpKnM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY2ggPCAweDgwKSB7CisgICAgICAgICAgICAgICAgcysrOworICAgICAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChjaCA8IDB4RTApIHsKKyAgICAgICAgICAgIC8qIFx4QzJceDgwLVx4REZceEJGIC0tIDAwODAtMDdGRiAqLworICAgICAgICAgICAgUHlfVUNTNCBjaDI7CisgICAgICAgICAgICBpZiAoY2ggPCAweEMyKSB7CisgICAgICAgICAgICAgICAgLyogaW52YWxpZCBzZXF1ZW5jZQorICAgICAgICAgICAgICAgIFx4ODAtXHhCRiAtLSBjb250aW51YXRpb24gYnl0ZQorICAgICAgICAgICAgICAgIFx4QzAtXHhDMSAtLSBmYWtlIDAwMDAtMDA3RiAqLworICAgICAgICAgICAgICAgIGdvdG8gSW52YWxpZFN0YXJ0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGVuZCAtIHMgPCAyKSB7CisgICAgICAgICAgICAgICAgLyogdW5leHBlY3RlZCBlbmQgb2YgZGF0YTogdGhlIGNhbGxlciB3aWxsIGRlY2lkZSB3aGV0aGVyCisgICAgICAgICAgICAgICAgICAgaXQncyBhbiBlcnJvciBvciBub3QgKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoMiA9ICh1bnNpZ25lZCBjaGFyKXNbMV07CisgICAgICAgICAgICBpZiAoIUlTX0NPTlRJTlVBVElPTl9CWVRFKGNoMikpCisgICAgICAgICAgICAgICAgLyogaW52YWxpZCBjb250aW51YXRpb24gYnl0ZSAqLworICAgICAgICAgICAgICAgIGdvdG8gSW52YWxpZENvbnRpbnVhdGlvbjE7CisgICAgICAgICAgICBjaCA9IChjaCA8PCA2KSArIGNoMiAtCisgICAgICAgICAgICAgICAgICgoMHhDMCA8PCA2KSArIDB4ODApOworICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweDAwN0YpICYmIChjaCA8PSAweDA3RkYpKTsKKyAgICAgICAgICAgIHMgKz0gMjsKKyAgICAgICAgICAgIGlmIChTVFJJTkdMSUJfTUFYX0NIQVIgPD0gMHgwMDdGIHx8CisgICAgICAgICAgICAgICAgKFNUUklOR0xJQl9NQVhfQ0hBUiA8IDB4MDdGRiAmJiBjaCA+IFNUUklOR0xJQl9NQVhfQ0hBUikpCisgICAgICAgICAgICAgICAgLyogT3V0LW9mLXJhbmdlICovCisgICAgICAgICAgICAgICAgZ290byBSZXR1cm47CisgICAgICAgICAgICAqcCsrID0gY2g7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjaCA8IDB4RjApIHsKKyAgICAgICAgICAgIC8qIFx4RTBceEEwXHg4MC1ceEVGXHhCRlx4QkYgLS0gMDgwMC1GRkZGICovCisgICAgICAgICAgICBQeV9VQ1M0IGNoMiwgY2gzOworICAgICAgICAgICAgaWYgKGVuZCAtIHMgPCAzKSB7CisgICAgICAgICAgICAgICAgLyogdW5leHBlY3RlZCBlbmQgb2YgZGF0YTogdGhlIGNhbGxlciB3aWxsIGRlY2lkZSB3aGV0aGVyCisgICAgICAgICAgICAgICAgICAgaXQncyBhbiBlcnJvciBvciBub3QgKi8KKyAgICAgICAgICAgICAgICBpZiAoZW5kIC0gcyA8IDIpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNoMiA9ICh1bnNpZ25lZCBjaGFyKXNbMV07CisgICAgICAgICAgICAgICAgaWYgKCFJU19DT05USU5VQVRJT05fQllURShjaDIpIHx8CisgICAgICAgICAgICAgICAgICAgIChjaDIgPCAweEEwID8gY2ggPT0gMHhFMCA6IGNoID09IDB4RUQpKQorICAgICAgICAgICAgICAgICAgICAvKiBmb3IgY2xhcmlmaWNhdGlvbiBzZWUgY29tbWVudHMgYmVsb3cgKi8KKyAgICAgICAgICAgICAgICAgICAgZ290byBJbnZhbGlkQ29udGludWF0aW9uMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoMiA9ICh1bnNpZ25lZCBjaGFyKXNbMV07CisgICAgICAgICAgICBjaDMgPSAodW5zaWduZWQgY2hhcilzWzJdOworICAgICAgICAgICAgaWYgKCFJU19DT05USU5VQVRJT05fQllURShjaDIpKSB7CisgICAgICAgICAgICAgICAgLyogaW52YWxpZCBjb250aW51YXRpb24gYnl0ZSAqLworICAgICAgICAgICAgICAgIGdvdG8gSW52YWxpZENvbnRpbnVhdGlvbjE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY2ggPT0gMHhFMCkgeworICAgICAgICAgICAgICAgIGlmIChjaDIgPCAweEEwKQorICAgICAgICAgICAgICAgICAgICAvKiBpbnZhbGlkIHNlcXVlbmNlCisgICAgICAgICAgICAgICAgICAgICAgIFx4RTBceDgwXHg4MC1ceEUwXHg5Rlx4QkYgLS0gZmFrZSAwMDAwLTA4MDAgKi8KKyAgICAgICAgICAgICAgICAgICAgZ290byBJbnZhbGlkQ29udGludWF0aW9uMTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gMHhFRCAmJiBjaDIgPj0gMHhBMCkgeworICAgICAgICAgICAgICAgIC8qIERlY29kaW5nIFVURi04IHNlcXVlbmNlcyBpbiByYW5nZSBceEVEXHhBMFx4ODAtXHhFRFx4QkZceEJGCisgICAgICAgICAgICAgICAgICAgd2lsbCByZXN1bHQgaW4gc3Vycm9nYXRlcyBpbiByYW5nZSBEODAwLURGRkYuIFN1cnJvZ2F0ZXMgYXJlCisgICAgICAgICAgICAgICAgICAgbm90IHZhbGlkIFVURi04IHNvIHRoZXkgYXJlIHJlamVjdGVkLgorICAgICAgICAgICAgICAgICAgIFNlZSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3ZlcnNpb25zL1VuaWNvZGU1LjIuMC9jaDAzLnBkZgorICAgICAgICAgICAgICAgICAgICh0YWJsZSAzLTcpIGFuZCBodHRwOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmMzNjI5LnR4dCAqLworICAgICAgICAgICAgICAgIGdvdG8gSW52YWxpZENvbnRpbnVhdGlvbjE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIUlTX0NPTlRJTlVBVElPTl9CWVRFKGNoMykpIHsKKyAgICAgICAgICAgICAgICAvKiBpbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlICovCisgICAgICAgICAgICAgICAgZ290byBJbnZhbGlkQ29udGludWF0aW9uMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoID0gKGNoIDw8IDEyKSArIChjaDIgPDwgNikgKyBjaDMgLQorICAgICAgICAgICAgICAgICAoKDB4RTAgPDwgMTIpICsgKDB4ODAgPDwgNikgKyAweDgwKTsKKyAgICAgICAgICAgIGFzc2VydCAoKGNoID4gMHgwN0ZGKSAmJiAoY2ggPD0gMHhGRkZGKSk7CisgICAgICAgICAgICBzICs9IDM7CisgICAgICAgICAgICBpZiAoU1RSSU5HTElCX01BWF9DSEFSIDw9IDB4MDdGRiB8fAorICAgICAgICAgICAgICAgIChTVFJJTkdMSUJfTUFYX0NIQVIgPCAweEZGRkYgJiYgY2ggPiBTVFJJTkdMSUJfTUFYX0NIQVIpKQorICAgICAgICAgICAgICAgIC8qIE91dC1vZi1yYW5nZSAqLworICAgICAgICAgICAgICAgIGdvdG8gUmV0dXJuOworICAgICAgICAgICAgKnArKyA9IGNoOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2ggPCAweEY1KSB7CisgICAgICAgICAgICAvKiBceEYwXHg5MFx4ODBceDgwLVx4RjRceDhGXHhCRlx4QkYgLS0gMTAwMDAtMTBGRkZGICovCisgICAgICAgICAgICBQeV9VQ1M0IGNoMiwgY2gzLCBjaDQ7CisgICAgICAgICAgICBpZiAoZW5kIC0gcyA8IDQpIHsKKyAgICAgICAgICAgICAgICAvKiB1bmV4cGVjdGVkIGVuZCBvZiBkYXRhOiB0aGUgY2FsbGVyIHdpbGwgZGVjaWRlIHdoZXRoZXIKKyAgICAgICAgICAgICAgICAgICBpdCdzIGFuIGVycm9yIG9yIG5vdCAqLworICAgICAgICAgICAgICAgIGlmIChlbmQgLSBzIDwgMikKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2gyID0gKHVuc2lnbmVkIGNoYXIpc1sxXTsKKyAgICAgICAgICAgICAgICBpZiAoIUlTX0NPTlRJTlVBVElPTl9CWVRFKGNoMikgfHwKKyAgICAgICAgICAgICAgICAgICAgKGNoMiA8IDB4OTAgPyBjaCA9PSAweEYwIDogY2ggPT0gMHhGNCkpCisgICAgICAgICAgICAgICAgICAgIC8qIGZvciBjbGFyaWZpY2F0aW9uIHNlZSBjb21tZW50cyBiZWxvdyAqLworICAgICAgICAgICAgICAgICAgICBnb3RvIEludmFsaWRDb250aW51YXRpb24xOworICAgICAgICAgICAgICAgIGlmIChlbmQgLSBzIDwgMykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2gzID0gKHVuc2lnbmVkIGNoYXIpc1syXTsKKyAgICAgICAgICAgICAgICBpZiAoIUlTX0NPTlRJTlVBVElPTl9CWVRFKGNoMykpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gSW52YWxpZENvbnRpbnVhdGlvbjI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaDIgPSAodW5zaWduZWQgY2hhcilzWzFdOworICAgICAgICAgICAgY2gzID0gKHVuc2lnbmVkIGNoYXIpc1syXTsKKyAgICAgICAgICAgIGNoNCA9ICh1bnNpZ25lZCBjaGFyKXNbM107CisgICAgICAgICAgICBpZiAoIUlTX0NPTlRJTlVBVElPTl9CWVRFKGNoMikpIHsKKyAgICAgICAgICAgICAgICAvKiBpbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlICovCisgICAgICAgICAgICAgICAgZ290byBJbnZhbGlkQ29udGludWF0aW9uMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjaCA9PSAweEYwKSB7CisgICAgICAgICAgICAgICAgaWYgKGNoMiA8IDB4OTApCisgICAgICAgICAgICAgICAgICAgIC8qIGludmFsaWQgc2VxdWVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgXHhGMFx4ODBceDgwXHg4MC1ceEYwXHg4Rlx4QkZceEJGIC0tIGZha2UgMDAwMC1GRkZGICovCisgICAgICAgICAgICAgICAgICAgIGdvdG8gSW52YWxpZENvbnRpbnVhdGlvbjE7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09IDB4RjQgJiYgY2gyID49IDB4OTApIHsKKyAgICAgICAgICAgICAgICAvKiBpbnZhbGlkIHNlcXVlbmNlCisgICAgICAgICAgICAgICAgICAgXHhGNFx4OTBceDgwXDgwLSAtLSAxMTAwMDAtIG92ZXJmbG93ICovCisgICAgICAgICAgICAgICAgZ290byBJbnZhbGlkQ29udGludWF0aW9uMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghSVNfQ09OVElOVUFUSU9OX0JZVEUoY2gzKSkgeworICAgICAgICAgICAgICAgIC8qIGludmFsaWQgY29udGludWF0aW9uIGJ5dGUgKi8KKyAgICAgICAgICAgICAgICBnb3RvIEludmFsaWRDb250aW51YXRpb24yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFJU19DT05USU5VQVRJT05fQllURShjaDQpKSB7CisgICAgICAgICAgICAgICAgLyogaW52YWxpZCBjb250aW51YXRpb24gYnl0ZSAqLworICAgICAgICAgICAgICAgIGdvdG8gSW52YWxpZENvbnRpbnVhdGlvbjM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaCA9IChjaCA8PCAxOCkgKyAoY2gyIDw8IDEyKSArIChjaDMgPDwgNikgKyBjaDQgLQorICAgICAgICAgICAgICAgICAoKDB4RjAgPDwgMTgpICsgKDB4ODAgPDwgMTIpICsgKDB4ODAgPDwgNikgKyAweDgwKTsKKyAgICAgICAgICAgIGFzc2VydCAoKGNoID4gMHhGRkZGKSAmJiAoY2ggPD0gMHgxMEZGRkYpKTsKKyAgICAgICAgICAgIHMgKz0gNDsKKyAgICAgICAgICAgIGlmIChTVFJJTkdMSUJfTUFYX0NIQVIgPD0gMHhGRkZGIHx8CisgICAgICAgICAgICAgICAgKFNUUklOR0xJQl9NQVhfQ0hBUiA8IDB4MTBGRkZGICYmIGNoID4gU1RSSU5HTElCX01BWF9DSEFSKSkKKyAgICAgICAgICAgICAgICAvKiBPdXQtb2YtcmFuZ2UgKi8KKyAgICAgICAgICAgICAgICBnb3RvIFJldHVybjsKKyAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGdvdG8gSW52YWxpZFN0YXJ0OworICAgIH0KKyAgICBjaCA9IDA7CitSZXR1cm46CisgICAgKmlucHRyID0gczsKKyAgICAqb3V0cG9zID0gcCAtIGRlc3Q7CisgICAgcmV0dXJuIGNoOworSW52YWxpZFN0YXJ0OgorICAgIGNoID0gMTsKKyAgICBnb3RvIFJldHVybjsKK0ludmFsaWRDb250aW51YXRpb24xOgorICAgIGNoID0gMjsKKyAgICBnb3RvIFJldHVybjsKK0ludmFsaWRDb250aW51YXRpb24yOgorICAgIGNoID0gMzsKKyAgICBnb3RvIFJldHVybjsKK0ludmFsaWRDb250aW51YXRpb24zOgorICAgIGNoID0gNDsKKyAgICBnb3RvIFJldHVybjsKK30KKworI3VuZGVmIEFTQ0lJX0NIQVJfTUFTSworCisKKy8qIFVURi04IGVuY29kZXIgc3BlY2lhbGl6ZWQgZm9yIGEgVW5pY29kZSBraW5kIHRvIGF2b2lkIHRoZSBzbG93CisgICBQeVVuaWNvZGVfUkVBRCgpIG1hY3JvLiBEZWxldGUgc29tZSBwYXJ0cyBvZiB0aGUgY29kZSBkZXBlbmRpbmcgb24gdGhlIGtpbmQ6CisgICBVQ1MtMSBzdHJpbmdzIGRvbid0IG5lZWQgdG8gaGFuZGxlIHN1cnJvZ2F0ZXMgZm9yIGV4YW1wbGUuICovCitQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKK1NUUklOR0xJQih1dGY4X2VuY29kZXIpKFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCit7CisjZGVmaW5lIE1BWF9TSE9SVF9VTklDSEFSUyAzMDAgIC8qIGxhcmdlc3Qgc2l6ZSB3ZSdsbCBkbyBvbiB0aGUgc3RhY2sgKi8KKworICAgIFB5X3NzaXplX3QgaTsgICAgICAgICAgICAgICAgLyogaW5kZXggaW50byBzIG9mIG5leHQgaW5wdXQgYnl0ZSAqLworICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgLyogcmVzdWx0IHN0cmluZyBvYmplY3QgKi8KKyAgICBjaGFyICpwOyAgICAgICAgICAgICAgICAgICAgIC8qIG5leHQgZnJlZSBieXRlIGluIG91dHB1dCBidWZmZXIgKi8KKyAgICBQeV9zc2l6ZV90IG5hbGxvY2F0ZWQ7ICAgICAgLyogbnVtYmVyIG9mIHJlc3VsdCBieXRlcyBhbGxvY2F0ZWQgKi8KKyAgICBQeV9zc2l6ZV90IG5uZWVkZWQ7ICAgICAgICAgICAgLyogbnVtYmVyIG9mIHJlc3VsdCBieXRlcyBuZWVkZWQgKi8KKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCisgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlcCA9IE5VTEw7CisjZW5kaWYKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMQorICAgIGNvbnN0IFB5X3NzaXplX3QgbWF4X2NoYXJfc2l6ZSA9IDI7CisgICAgY2hhciBzdGFja2J1ZltNQVhfU0hPUlRfVU5JQ0hBUlMgKiAyXTsKKyNlbGlmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAyCisgICAgY29uc3QgUHlfc3NpemVfdCBtYXhfY2hhcl9zaXplID0gMzsKKyAgICBjaGFyIHN0YWNrYnVmW01BWF9TSE9SVF9VTklDSEFSUyAqIDNdOworI2Vsc2UgLyogIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSA0ICovCisgICAgY29uc3QgUHlfc3NpemVfdCBtYXhfY2hhcl9zaXplID0gNDsKKyAgICBjaGFyIHN0YWNrYnVmW01BWF9TSE9SVF9VTklDSEFSUyAqIDRdOworI2VuZGlmCisKKyAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKKworICAgIGlmIChzaXplIDw9IE1BWF9TSE9SVF9VTklDSEFSUykgeworICAgICAgICAvKiBXcml0ZSBpbnRvIHRoZSBzdGFjayBidWZmZXI7IG5hbGxvY2F0ZWQgY2FuJ3Qgb3ZlcmZsb3cuCisgICAgICAgICAqIEF0IHRoZSBlbmQsIHdlJ2xsIGFsbG9jYXRlIGV4YWN0bHkgYXMgbXVjaCBoZWFwIHNwYWNlIGFzIGl0CisgICAgICAgICAqIHR1cm5zIG91dCB3ZSBuZWVkLgorICAgICAgICAgKi8KKyAgICAgICAgbmFsbG9jYXRlZCA9IFB5X1NBRkVfRE9XTkNBU1Qoc2l6ZW9mKHN0YWNrYnVmKSwgc2l6ZV90LCBpbnQpOworICAgICAgICByZXN1bHQgPSBOVUxMOyAgIC8qIHdpbGwgYWxsb2NhdGUgYWZ0ZXIgd2UncmUgZG9uZSAqLworICAgICAgICBwID0gc3RhY2tidWY7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gbWF4X2NoYXJfc2l6ZSkgeworICAgICAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLworICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIH0KKyAgICAgICAgLyogT3ZlcmFsbG9jYXRlIG9uIHRoZSBoZWFwLCBhbmQgZ2l2ZSB0aGUgZXhjZXNzIGJhY2sgYXQgdGhlIGVuZC4gKi8KKyAgICAgICAgbmFsbG9jYXRlZCA9IHNpemUgKiBtYXhfY2hhcl9zaXplOworICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG5hbGxvY2F0ZWQpOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7KSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBkYXRhW2krK107CisKKyAgICAgICAgaWYgKGNoIDwgMHg4MCkgeworICAgICAgICAgICAgLyogRW5jb2RlIEFTQ0lJICovCisgICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOworCisgICAgICAgIH0KKyAgICAgICAgZWxzZQorI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKKyAgICAgICAgaWYgKGNoIDwgMHgwODAwKQorI2VuZGlmCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIEVuY29kZSBMYXRpbi0xICovCisgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4YzAgfCAoY2ggPj4gNikpOworICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKGNoICYgMHgzZikpOworICAgICAgICB9CisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQorICAgICAgICBlbHNlIGlmIChQeV9VTklDT0RFX0lTX1NVUlJPR0FURShjaCkpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbmV3cG9zOworICAgICAgICAgICAgUHlfc3NpemVfdCByZXBzaXplLCBrLCBzdGFydHBvczsKKyAgICAgICAgICAgIHN0YXJ0cG9zID0gaS0xOworICAgICAgICAgICAgcmVwID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCisgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsICJ1dGYtOCIsICJzdXJyb2dhdGVzIG5vdCBhbGxvd2VkIiwKKyAgICAgICAgICAgICAgICAgIHVuaWNvZGUsICZleGMsIHN0YXJ0cG9zLCBzdGFydHBvcysxLCAmbmV3cG9zKTsKKyAgICAgICAgICAgIGlmICghcmVwKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpCisgICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVwKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwKTsKKworICAgICAgICAgICAgaWYgKHJlcHNpemUgPiBtYXhfY2hhcl9zaXplKSB7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvZmZzZXQ7CisKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHAgLSBzdGFja2J1ZjsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworCisgICAgICAgICAgICAgICAgaWYgKG5hbGxvY2F0ZWQgPiBQWV9TU0laRV9UX01BWCAtIHJlcHNpemUgKyBtYXhfY2hhcl9zaXplKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIGludGVnZXIgb3ZlcmZsb3cgKi8KKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbmFsbG9jYXRlZCArPSByZXBzaXplIC0gbWF4X2NoYXJfc2l6ZTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBuYWxsb2NhdGVkKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbmFsbG9jYXRlZCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIFB5X01FTUNQWShQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpLCBzdGFja2J1Ziwgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkgKyBvZmZzZXQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKKyAgICAgICAgICAgICAgICBjaGFyICpwcmVwID0gUHlCeXRlc19BU19TVFJJTkcocmVwKTsKKyAgICAgICAgICAgICAgICBmb3IoayA9IHJlcHNpemU7IGsgPiAwOyBrLS0pCisgICAgICAgICAgICAgICAgICAgICpwKysgPSAqcHJlcCsrOworICAgICAgICAgICAgfSBlbHNlIC8qIHJlcCBpcyB1bmljb2RlICovIHsKKyAgICAgICAgICAgICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIHJlcGtpbmQ7CisgICAgICAgICAgICAgICAgdm9pZCAqcmVwZGF0YTsKKworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwKSA8IDApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgcmVwa2luZCA9IFB5VW5pY29kZV9LSU5EKHJlcCk7CisgICAgICAgICAgICAgICAgcmVwZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlcCk7CisKKyAgICAgICAgICAgICAgICBmb3Ioaz0wOyBrPHJlcHNpemU7IGsrKykgeworICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChyZXBraW5kLCByZXBkYXRhLCBrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKDB4ODAgPD0gYykgeworICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCAidXRmLTgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLTEsIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVzIG5vdCBhbGxvd2VkIik7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICpwKysgPSAoY2hhciljOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0NMRUFSKHJlcCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDIKKyAgICAgICAgaWYgKGNoIDwgMHgxMDAwMCkKKyNlbmRpZgorICAgICAgICB7CisgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ZTAgfCAoY2ggPj4gMTIpKTsKKyAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8ICgoY2ggPj4gNikgJiAweDNmKSk7CisgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoY2ggJiAweDNmKSk7CisgICAgICAgIH0KKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAyCisgICAgICAgIGVsc2UgLyogY2ggPj0gMHgxMDAwMCAqLworICAgICAgICB7CisgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOworICAgICAgICAgICAgLyogRW5jb2RlIFVDUzQgVW5pY29kZSBvcmRpbmFscyAqLworICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweGYwIHwgKGNoID4+IDE4KSk7CisgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoKGNoID4+IDEyKSAmIDB4M2YpKTsKKyAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8ICgoY2ggPj4gNikgJiAweDNmKSk7CisgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoY2ggJiAweDNmKSk7CisgICAgICAgIH0KKyNlbmRpZiAvKiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAyICovCisjZW5kaWYgLyogU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMSAqLworICAgIH0KKworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICAvKiBUaGlzIHdhcyBzdGFjayBhbGxvY2F0ZWQuICovCisgICAgICAgIG5uZWVkZWQgPSBwIC0gc3RhY2tidWY7CisgICAgICAgIGFzc2VydChubmVlZGVkIDw9IG5hbGxvY2F0ZWQpOworICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHN0YWNrYnVmLCBubmVlZGVkKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIEN1dCBiYWNrIHRvIHNpemUgYWN0dWFsbHkgbmVlZGVkLiAqLworICAgICAgICBubmVlZGVkID0gcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgICAgIGFzc2VydChubmVlZGVkIDw9IG5hbGxvY2F0ZWQpOworICAgICAgICBfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgbm5lZWRlZCk7CisgICAgfQorCisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQorICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGV4Yyk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworCisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQorIGVycm9yOgorICAgIFB5X1hERUNSRUYocmVwKTsKKyAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihleGMpOworICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorCisjdW5kZWYgTUFYX1NIT1JUX1VOSUNIQVJTCit9CisKKy8qIFRoZSBwYXR0ZXJuIGZvciBjb25zdHJ1Y3RpbmcgVUNTMi1yZXBlYXRlZCBtYXNrcy4gKi8KKyNpZiBTSVpFT0ZfTE9ORyA9PSA4CisjIGRlZmluZSBVQ1MyX1JFUEVBVF9NQVNLIDB4MDAwMTAwMDEwMDAxMDAwMXVsCisjZWxpZiBTSVpFT0ZfTE9ORyA9PSA0CisjIGRlZmluZSBVQ1MyX1JFUEVBVF9NQVNLIDB4MDAwMTAwMDF1bAorI2Vsc2UKKyMgZXJyb3IgQyAnbG9uZycgc2l6ZSBzaG91bGQgYmUgZWl0aGVyIDQgb3IgOCEKKyNlbmRpZgorCisvKiBUaGUgbWFzayBmb3IgZmFzdCBjaGVja2luZy4gKi8KKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMQorLyogVGhlIG1hc2sgZm9yIGZhc3QgY2hlY2tpbmcgb2Ygd2hldGhlciBhIEMgJ2xvbmcnIGNvbnRhaW5zIGEKKyAgIG5vbi1BU0NJSSBvciBub24tTGF0aW4xIFVURjE2LWVuY29kZWQgY2hhcmFjdGVycy4gKi8KKyMgZGVmaW5lIEZBU1RfQ0hBUl9NQVNLICAgICAgICAgKFVDUzJfUkVQRUFUX01BU0sgKiAoMHhGRkZGdSAmIH5TVFJJTkdMSUJfTUFYX0NIQVIpKQorI2Vsc2UKKy8qIFRoZSBtYXNrIGZvciBmYXN0IGNoZWNraW5nIG9mIHdoZXRoZXIgYSBDICdsb25nJyBtYXkgY29udGFpbgorICAgVVRGMTYtZW5jb2RlZCBzdXJyb2dhdGUgY2hhcmFjdGVycy4gVGhpcyBpcyBhbiBlZmZpY2llbnQgaGV1cmlzdGljLAorICAgYXNzdW1pbmcgdGhhdCBub24tc3Vycm9nYXRlIGNoYXJhY3RlcnMgd2l0aCBhIGNvZGUgcG9pbnQgPj0gMHg4MDAwIGFyZQorICAgcmFyZSBpbiBtb3N0IGlucHV0LgorKi8KKyMgZGVmaW5lIEZBU1RfQ0hBUl9NQVNLICAgICAgICAgKFVDUzJfUkVQRUFUX01BU0sgKiAweDgwMDB1KQorI2VuZGlmCisvKiBUaGUgbWFzayBmb3IgZmFzdCBieXRlLXN3YXBwaW5nLiAqLworI2RlZmluZSBTVFJJUFBFRF9NQVNLICAgICAgICAgICAoVUNTMl9SRVBFQVRfTUFTSyAqIDB4MDBGRnUpCisvKiBTd2FwIGJ5dGVzLiAqLworI2RlZmluZSBTV0FCKHZhbHVlKSAgICAgICAgICAgICAoKCgodmFsdWUpID4+IDgpICYgU1RSSVBQRURfTUFTSykgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCh2YWx1ZSkgJiBTVFJJUFBFRF9NQVNLKSA8PCA4KSkKKworUHlfTE9DQUxfSU5MSU5FKFB5X1VDUzQpCitTVFJJTkdMSUIodXRmMTZfZGVjb2RlKShjb25zdCB1bnNpZ25lZCBjaGFyICoqaW5wdHIsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmUsCisgICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqZGVzdCwgUHlfc3NpemVfdCAqb3V0cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5hdGl2ZV9vcmRlcmluZykKK3sKKyAgICBQeV9VQ1M0IGNoOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFsaWduZWRfZW5kID0KKyAgICAgICAgICAgIChjb25zdCB1bnNpZ25lZCBjaGFyICopIF9QeV9BTElHTl9ET1dOKGUsIFNJWkVPRl9MT05HKTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpxID0gKmlucHRyOworICAgIFNUUklOR0xJQl9DSEFSICpwID0gZGVzdCArICpvdXRwb3M7CisgICAgLyogT2Zmc2V0cyBmcm9tIHEgZm9yIHJldHJpZXZpbmcgYnl0ZSBwYWlycyBpbiB0aGUgcmlnaHQgb3JkZXIuICovCisjaWZkZWYgQllURU9SREVSX0lTX0xJVFRMRV9FTkRJQU4KKyAgICBpbnQgaWhpID0gISFuYXRpdmVfb3JkZXJpbmcsIGlsbyA9ICFuYXRpdmVfb3JkZXJpbmc7CisjZWxzZQorICAgIGludCBpaGkgPSAhbmF0aXZlX29yZGVyaW5nLCBpbG8gPSAhIW5hdGl2ZV9vcmRlcmluZzsKKyNlbmRpZgorICAgIC0tZTsKKworICAgIHdoaWxlIChxIDwgZSkgeworICAgICAgICBQeV9VQ1M0IGNoMjsKKyAgICAgICAgLyogRmlyc3QgY2hlY2sgZm9yIHBvc3NpYmxlIGFsaWduZWQgcmVhZCBvZiBhIEMgJ2xvbmcnLiBVbmFsaWduZWQKKyAgICAgICAgICAgcmVhZHMgYXJlIG1vcmUgZXhwZW5zaXZlLCBiZXR0ZXIgdG8gZGVmZXIgdG8gYW5vdGhlciBpdGVyYXRpb24uICovCisgICAgICAgIGlmIChfUHlfSVNfQUxJR05FRChxLCBTSVpFT0ZfTE9ORykpIHsKKyAgICAgICAgICAgIC8qIEZhc3QgcGF0aCBmb3IgcnVucyBvZiBpbi1yYW5nZSBub24tc3Vycm9nYXRlIGNoYXJzLiAqLworICAgICAgICAgICAgcmVnaXN0ZXIgY29uc3QgdW5zaWduZWQgY2hhciAqX3EgPSBxOworICAgICAgICAgICAgd2hpbGUgKF9xIDwgYWxpZ25lZF9lbmQpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGJsb2NrID0gKiAodW5zaWduZWQgbG9uZyAqKSBfcTsKKyAgICAgICAgICAgICAgICBpZiAobmF0aXZlX29yZGVyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIENhbiB1c2UgYnVmZmVyIGRpcmVjdGx5ICovCisgICAgICAgICAgICAgICAgICAgIGlmIChibG9jayAmIEZBU1RfQ0hBUl9NQVNLKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvKiBOZWVkIHRvIGJ5dGUtc3dhcCAqLworICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2sgJiBTV0FCKEZBU1RfQ0hBUl9NQVNLKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxCisgICAgICAgICAgICAgICAgICAgIGJsb2NrID4+PSA4OworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgYmxvY2sgPSBTV0FCKGJsb2NrKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIH0KKyNpZmRlZiBCWVRFT1JERVJfSVNfTElUVExFX0VORElBTgorIyBpZiBTSVpFT0ZfTE9ORyA9PSA0CisgICAgICAgICAgICAgICAgcFswXSA9IChTVFJJTkdMSUJfQ0hBUikoYmxvY2sgJiAweEZGRkZ1KTsKKyAgICAgICAgICAgICAgICBwWzFdID0gKFNUUklOR0xJQl9DSEFSKShibG9jayA+PiAxNik7CisjIGVsaWYgU0laRU9GX0xPTkcgPT0gOAorICAgICAgICAgICAgICAgIHBbMF0gPSAoU1RSSU5HTElCX0NIQVIpKGJsb2NrICYgMHhGRkZGdSk7CisgICAgICAgICAgICAgICAgcFsxXSA9IChTVFJJTkdMSUJfQ0hBUikoKGJsb2NrID4+IDE2KSAmIDB4RkZGRnUpOworICAgICAgICAgICAgICAgIHBbMl0gPSAoU1RSSU5HTElCX0NIQVIpKChibG9jayA+PiAzMikgJiAweEZGRkZ1KTsKKyAgICAgICAgICAgICAgICBwWzNdID0gKFNUUklOR0xJQl9DSEFSKShibG9jayA+PiA0OCk7CisjIGVuZGlmCisjZWxzZQorIyBpZiBTSVpFT0ZfTE9ORyA9PSA0CisgICAgICAgICAgICAgICAgcFswXSA9IChTVFJJTkdMSUJfQ0hBUikoYmxvY2sgPj4gMTYpOworICAgICAgICAgICAgICAgIHBbMV0gPSAoU1RSSU5HTElCX0NIQVIpKGJsb2NrICYgMHhGRkZGdSk7CisjIGVsaWYgU0laRU9GX0xPTkcgPT0gOAorICAgICAgICAgICAgICAgIHBbMF0gPSAoU1RSSU5HTElCX0NIQVIpKGJsb2NrID4+IDQ4KTsKKyAgICAgICAgICAgICAgICBwWzFdID0gKFNUUklOR0xJQl9DSEFSKSgoYmxvY2sgPj4gMzIpICYgMHhGRkZGdSk7CisgICAgICAgICAgICAgICAgcFsyXSA9IChTVFJJTkdMSUJfQ0hBUikoKGJsb2NrID4+IDE2KSAmIDB4RkZGRnUpOworICAgICAgICAgICAgICAgIHBbM10gPSAoU1RSSU5HTElCX0NIQVIpKGJsb2NrICYgMHhGRkZGdSk7CisjIGVuZGlmCisjZW5kaWYKKyAgICAgICAgICAgICAgICBfcSArPSBTSVpFT0ZfTE9ORzsKKyAgICAgICAgICAgICAgICBwICs9IFNJWkVPRl9MT05HIC8gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHEgPSBfcTsKKyAgICAgICAgICAgIGlmIChxID49IGUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjaCA9IChxW2loaV0gPDwgOCkgfCBxW2lsb107CisgICAgICAgIHEgKz0gMjsKKyAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTX1NVUlJPR0FURShjaCkpIHsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPCAyCisgICAgICAgICAgICBpZiAoY2ggPiBTVFJJTkdMSUJfTUFYX0NIQVIpCisgICAgICAgICAgICAgICAgLyogT3V0LW9mLXJhbmdlICovCisgICAgICAgICAgICAgICAgZ290byBSZXR1cm47CisjZW5kaWYKKyAgICAgICAgICAgICpwKysgPSAoU1RSSU5HTElCX0NIQVIpY2g7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFVURi0xNiBjb2RlIHBhaXI6ICovCisgICAgICAgIGlmIChxID49IGUpCisgICAgICAgICAgICBnb3RvIFVuZXhwZWN0ZWRFbmQ7CisgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShjaCkpCisgICAgICAgICAgICBnb3RvIElsbGVnYWxFbmNvZGluZzsKKyAgICAgICAgY2gyID0gKHFbaWhpXSA8PCA4KSB8IHFbaWxvXTsKKyAgICAgICAgcSArPSAyOworICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURShjaDIpKQorICAgICAgICAgICAgZ290byBJbGxlZ2FsU3Vycm9nYXRlOworICAgICAgICBjaCA9IFB5X1VOSUNPREVfSk9JTl9TVVJST0dBVEVTKGNoLCBjaDIpOworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA8IDQKKyAgICAgICAgLyogT3V0LW9mLXJhbmdlICovCisgICAgICAgIGdvdG8gUmV0dXJuOworI2Vsc2UKKyAgICAgICAgKnArKyA9IChTVFJJTkdMSUJfQ0hBUiljaDsKKyNlbmRpZgorICAgIH0KKyAgICBjaCA9IDA7CitSZXR1cm46CisgICAgKmlucHRyID0gcTsKKyAgICAqb3V0cG9zID0gcCAtIGRlc3Q7CisgICAgcmV0dXJuIGNoOworVW5leHBlY3RlZEVuZDoKKyAgICBjaCA9IDE7CisgICAgZ290byBSZXR1cm47CitJbGxlZ2FsRW5jb2Rpbmc6CisgICAgY2ggPSAyOworICAgIGdvdG8gUmV0dXJuOworSWxsZWdhbFN1cnJvZ2F0ZToKKyAgICBjaCA9IDM7CisgICAgZ290byBSZXR1cm47Cit9CisjdW5kZWYgVUNTMl9SRVBFQVRfTUFTSworI3VuZGVmIEZBU1RfQ0hBUl9NQVNLCisjdW5kZWYgU1RSSVBQRURfTUFTSworI3VuZGVmIFNXQUIKKworCitQeV9MT0NBTF9JTkxJTkUodm9pZCkKK1NUUklOR0xJQih1dGYxNl9lbmNvZGUpKHVuc2lnbmVkIHNob3J0ICpvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBuYXRpdmVfb3JkZXJpbmcpCit7CisgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKmVuZCA9IGluICsgbGVuOworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxCisjIGRlZmluZSBTV0FCMihDSCkgICgoQ0gpIDw8IDgpCisjZWxzZQorIyBkZWZpbmUgU1dBQjIoQ0gpICAoKChDSCkgPDwgOCkgfCAoKENIKSA+PiA4KSkKKyNlbmRpZgorI2lmIFNUUklOR0xJQl9NQVhfQ0hBUiA8IDB4MTAwMDAKKyAgICBpZiAobmF0aXZlX29yZGVyaW5nKSB7CisjIGlmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAyCisgICAgICAgIFB5X01FTUNQWShvdXQsIGluLCAyICogbGVuKTsKKyMgZWxzZQorICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoU1RSSU5HTElCX0NIQVIsIHVuc2lnbmVkIHNob3J0LCBpbiwgZW5kLCBvdXQpOworIyBlbmRpZgorICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICp1bnJvbGxlZF9lbmQgPSBpbiArIF9QeV9TSVpFX1JPVU5EX0RPV04obGVuLCA0KTsKKyAgICAgICAgd2hpbGUgKGluIDwgdW5yb2xsZWRfZW5kKSB7CisgICAgICAgICAgICBvdXRbMF0gPSBTV0FCMihpblswXSk7CisgICAgICAgICAgICBvdXRbMV0gPSBTV0FCMihpblsxXSk7CisgICAgICAgICAgICBvdXRbMl0gPSBTV0FCMihpblsyXSk7CisgICAgICAgICAgICBvdXRbM10gPSBTV0FCMihpblszXSk7CisgICAgICAgICAgICBpbiArPSA0OyBvdXQgKz0gNDsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoaW4gPCBlbmQpIHsKKyAgICAgICAgICAgICpvdXQrKyA9IFNXQUIyKCppbik7CisgICAgICAgICAgICArK2luOworICAgICAgICB9CisgICAgfQorI2Vsc2UKKyAgICBpZiAobmF0aXZlX29yZGVyaW5nKSB7CisgICAgICAgIHdoaWxlIChpbiA8IGVuZCkgeworICAgICAgICAgICAgUHlfVUNTNCBjaCA9ICppbisrOworICAgICAgICAgICAgaWYgKGNoIDwgMHgxMDAwMCkKKyAgICAgICAgICAgICAgICAqb3V0KysgPSBjaDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG91dFswXSA9IFB5X1VOSUNPREVfSElHSF9TVVJST0dBVEUoY2gpOworICAgICAgICAgICAgICAgIG91dFsxXSA9IFB5X1VOSUNPREVfTE9XX1NVUlJPR0FURShjaCk7CisgICAgICAgICAgICAgICAgb3V0ICs9IDI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICB3aGlsZSAoaW4gPCBlbmQpIHsKKyAgICAgICAgICAgIFB5X1VDUzQgY2ggPSAqaW4rKzsKKyAgICAgICAgICAgIGlmIChjaCA8IDB4MTAwMDApCisgICAgICAgICAgICAgICAgKm91dCsrID0gU1dBQjIoKFB5X1VDUzIpY2gpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlfVUNTMiBjaDEgPSBQeV9VTklDT0RFX0hJR0hfU1VSUk9HQVRFKGNoKTsKKyAgICAgICAgICAgICAgICBQeV9VQ1MyIGNoMiA9IFB5X1VOSUNPREVfTE9XX1NVUlJPR0FURShjaCk7CisgICAgICAgICAgICAgICAgb3V0WzBdID0gU1dBQjIoY2gxKTsKKyAgICAgICAgICAgICAgICBvdXRbMV0gPSBTV0FCMihjaDIpOworICAgICAgICAgICAgICAgIG91dCArPSAyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCisjdW5kZWYgU1dBQjIKK30KKyNlbmRpZiAvKiBTVFJJTkdMSUJfSVNfVU5JQ09ERSAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvY291bnQuaCBiL09iamVjdHMvc3RyaW5nbGliL2NvdW50LmgKaW5kZXggZGUzNGY5Ni4uZjQ4NTAwYiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvY291bnQuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9jb3VudC5oCkBAIC0xLDE0ICsxLDExIEBACiAvKiBzdHJpbmdsaWI6IGNvdW50IGltcGxlbWVudGF0aW9uICovCiAKLSNpZm5kZWYgU1RSSU5HTElCX0NPVU5UX0gKLSNkZWZpbmUgU1RSSU5HTElCX0NPVU5UX0gKLQogI2lmbmRlZiBTVFJJTkdMSUJfRkFTVFNFQVJDSF9ICiAjZXJyb3IgbXVzdCBpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIiBiZWZvcmUgaW5jbHVkaW5nIHRoaXMgbW9kdWxlCiAjZW5kaWYKIAogUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1zdHJpbmdsaWJfY291bnQoY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAorU1RSSU5HTElCKGNvdW50KShjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN1YiwgUHlfc3NpemVfdCBzdWJfbGVuLAogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7CkBAIC0xOSw3ICsxNiw3IEBACiAgICAgaWYgKHN1Yl9sZW4gPT0gMCkKICAgICAgICAgcmV0dXJuIChzdHJfbGVuIDwgbWF4Y291bnQpID8gc3RyX2xlbiArIDEgOiBtYXhjb3VudDsKIAotICAgIGNvdW50ID0gZmFzdHNlYXJjaChzdHIsIHN0cl9sZW4sIHN1Yiwgc3ViX2xlbiwgbWF4Y291bnQsIEZBU1RfQ09VTlQpOworICAgIGNvdW50ID0gRkFTVFNFQVJDSChzdHIsIHN0cl9sZW4sIHN1Yiwgc3ViX2xlbiwgbWF4Y291bnQsIEZBU1RfQ09VTlQpOwogCiAgICAgaWYgKGNvdW50IDwgMCkKICAgICAgICAgcmV0dXJuIDA7IC8qIG5vIG1hdGNoICovCkBAIC0yNyw0ICsyNCw0IEBACiAgICAgcmV0dXJuIGNvdW50OwogfQogCi0jZW5kaWYKKwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaCBiL09iamVjdHMvc3RyaW5nbGliL2VxLmgKaW5kZXggM2U3ZjVlOC4uOGU3OWE0MyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9lcS5oCkBAIC05LDEzICs5LDI2IEBACiAgICAgcmVnaXN0ZXIgUHlVbmljb2RlT2JqZWN0ICphID0gKFB5VW5pY29kZU9iamVjdCAqKWFhOwogICAgIHJlZ2lzdGVyIFB5VW5pY29kZU9iamVjdCAqYiA9IChQeVVuaWNvZGVPYmplY3QgKiliYjsKIAotICAgIGlmIChhLT5sZW5ndGggIT0gYi0+bGVuZ3RoKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYSkgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKGIpID09IC0xKSB7CisgICAgICAgIGFzc2VydCgwICYmICJ1bmljb2RlX2VxIHJlYWR5IGZhaWwiKTsKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKGEtPmxlbmd0aCA9PSAwKQotICAgICAgICByZXR1cm4gMTsKLSAgICBpZiAoYS0+c3RyWzBdICE9IGItPnN0clswXSkKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoYSkgIT0gUHlVbmljb2RlX0dFVF9MRU5HVEgoYikpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChhLT5sZW5ndGggPT0gMSkKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoYSkgPT0gMCkKICAgICAgICAgcmV0dXJuIDE7Ci0gICAgcmV0dXJuIG1lbWNtcChhLT5zdHIsIGItPnN0ciwgYS0+bGVuZ3RoICogc2l6ZW9mKFB5X1VOSUNPREUpKSA9PSAwOworICAgIGlmIChQeVVuaWNvZGVfS0lORChhKSAhPSBQeVVuaWNvZGVfS0lORChiKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgLyogSnVzdCBjb21wYXJpbmcgdGhlIGZpcnN0IGJ5dGUgaXMgZW5vdWdoIHRvIHNlZSBpZiBhIGFuZCBiIGRpZmZlci4KKyAgICAgKiBJZiB0aGV5IGFyZSAyIGJ5dGUgb3IgNCBieXRlIGNoYXJhY3RlciBtb3N0IGRpZmZlcmVuY2VzIHdpbGwgaGFwcGVuIGluCisgICAgICogdGhlIGxvd2VyIGJ5dGVzIGFueXdheXMuCisgICAgICovCisgICAgaWYgKFB5VW5pY29kZV8xQllURV9EQVRBKGEpWzBdICE9IFB5VW5pY29kZV8xQllURV9EQVRBKGIpWzBdKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoUHlVbmljb2RlX0tJTkQoYSkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQgJiYKKyAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoYSkgPT0gMSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIG1lbWNtcChQeVVuaWNvZGVfMUJZVEVfREFUQShhKSwgUHlVbmljb2RlXzFCWVRFX0RBVEEoYiksCisgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChhKSAqIFB5VW5pY29kZV9LSU5EKGEpKSA9PSAwOwogfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oCmluZGV4IGUyMzFjNTguLjU1YWM3N2QgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmgKQEAgLTEsNiArMSw1IEBACiAvKiBzdHJpbmdsaWI6IGZhc3RzZWFyY2ggaW1wbGVtZW50YXRpb24gKi8KIAotI2lmbmRlZiBTVFJJTkdMSUJfRkFTVFNFQVJDSF9ICiAjZGVmaW5lIFNUUklOR0xJQl9GQVNUU0VBUkNIX0gKIAogLyogZmFzdCBzZWFyY2gvY291bnQgaW1wbGVtZW50YXRpb24sIGJhc2VkIG9uIGEgbWl4IGJldHdlZW4gYm95ZXItCkBAIC0zMyw4ICszMiw1NiBAQAogI2RlZmluZSBTVFJJTkdMSUJfQkxPT00obWFzaywgY2gpICAgICBcCiAgICAgKChtYXNrICYgICgxVUwgPDwgKChjaCkgJiAoU1RSSU5HTElCX0JMT09NX1dJRFRIIC0xKSkpKSkKIAorCiBQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLWZhc3RzZWFyY2goY29uc3QgU1RSSU5HTElCX0NIQVIqIHMsIFB5X3NzaXplX3QgbiwKK1NUUklOR0xJQihmYXN0c2VhcmNoX21lbWNocl8xY2hhcikoY29uc3QgU1RSSU5HTElCX0NIQVIqIHMsIFB5X3NzaXplX3QgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgY2gsIHVuc2lnbmVkIGNoYXIgbmVlZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50LCBpbnQgbW9kZSkKK3sKKyAgICBpZiAobW9kZSA9PSBGQVNUX1NFQVJDSCkgeworICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqcHRyID0gczsKKyAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKmUgPSBzICsgbjsKKyAgICAgICAgd2hpbGUgKHB0ciA8IGUpIHsKKyAgICAgICAgICAgIHZvaWQgKmNhbmRpZGF0ZSA9IG1lbWNocigoY29uc3Qgdm9pZCAqKSBwdHIsIG5lZWRsZSwgKGUgLSBwdHIpICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7CisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgcHRyID0gKGNvbnN0IFNUUklOR0xJQl9DSEFSICopIF9QeV9BTElHTl9ET1dOKGNhbmRpZGF0ZSwgc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7CisgICAgICAgICAgICBpZiAoc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSA9PSAxIHx8ICpwdHIgPT0gY2gpCisgICAgICAgICAgICAgICAgcmV0dXJuIChwdHIgLSBzKTsKKyAgICAgICAgICAgIC8qIEZhbHNlIHBvc2l0aXZlICovCisgICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorI2lmZGVmIEhBVkVfTUVNUkNIUgorICAgIC8qIG1lbXJjaHIoKSBpcyBhIEdOVSBleHRlbnNpb24sIGF2YWlsYWJsZSBzaW5jZSBnbGliYyAyLjEuOTEuCisgICAgICAgaXQgZG9lc24ndCBzZWVtIGFzIG9wdGltaXplZCBhcyBtZW1jaHIoKSwgYnV0IGlzIHN0aWxsIHF1aXRlCisgICAgICAgZmFzdGVyIHRoYW4gb3VyIGhhbmQtd3JpdHRlbiBsb29wIGluIEZBU1RTRUFSQ0ggYmVsb3cgKi8KKyAgICBlbHNlIGlmIChtb2RlID09IEZBU1RfUlNFQVJDSCkgeworICAgICAgICB3aGlsZSAobiA+IDApIHsKKyAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICpmb3VuZDsKKyAgICAgICAgICAgIHZvaWQgKmNhbmRpZGF0ZSA9IG1lbXJjaHIoKGNvbnN0IHZvaWQgKikgcywgbmVlZGxlLCBuICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7CisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgZm91bmQgPSAoY29uc3QgU1RSSU5HTElCX0NIQVIgKikgX1B5X0FMSUdOX0RPV04oY2FuZGlkYXRlLCBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKKyAgICAgICAgICAgIG4gPSBmb3VuZCAtIHM7CisgICAgICAgICAgICBpZiAoc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSA9PSAxIHx8ICpmb3VuZCA9PSBjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgICAgIC8qIEZhbHNlIHBvc2l0aXZlICovCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyNlbmRpZgorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQoMCk7IC8qIFNob3VsZCBuZXZlciBnZXQgaGVyZSAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyN1bmRlZiBET19NRU1DSFIKK30KKworUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitGQVNUU0VBUkNIKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzLCBQeV9zc2l6ZV90IG4sCiAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBwLCBQeV9zc2l6ZV90IG0sCiAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQsIGludCBtb2RlKQogewpAQCAtNTIsNiArOTksMjQgQEAKICAgICAgICAgaWYgKG0gPD0gMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgLyogdXNlIHNwZWNpYWwgY2FzZSBmb3IgMS1jaGFyYWN0ZXIgc3RyaW5ncyAqLworICAgICAgICBpZiAobiA+IDEwICYmIChtb2RlID09IEZBU1RfU0VBUkNICisjaWZkZWYgSEFWRV9NRU1SQ0hSCisgICAgICAgICAgICAgICAgICAgIHx8IG1vZGUgPT0gRkFTVF9SU0VBUkNICisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgKSkgeworICAgICAgICAgICAgLyogdXNlIG1lbWNociBpZiB3ZSBjYW4gY2hvb3NlIGEgbmVlZGxlIHdpdGhvdXQgdHdvIG1hbnkgbGlrZWx5CisgICAgICAgICAgICAgICBmYWxzZSBwb3NpdGl2ZXMgKi8KKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbmVlZGxlOworICAgICAgICAgICAgbmVlZGxlID0gcFswXSAmIDB4ZmY7CisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQorICAgICAgICAgICAgLyogSWYgbG9va2luZyBmb3IgYSBtdWx0aXBsZSBvZiAyNTYsIHdlJ2QgaGF2ZSB0b28KKyAgICAgICAgICAgICAgIG1hbnkgZmFsc2UgcG9zaXRpdmVzIGxvb2tpbmcgZm9yIHRoZSAnXDAnIGJ5dGUgaW4gVUNTMgorICAgICAgICAgICAgICAgYW5kIFVDUzQgcmVwcmVzZW50YXRpb25zLiAqLworICAgICAgICAgICAgaWYgKG5lZWRsZSAhPSAwKQorI2VuZGlmCisgICAgICAgICAgICAgICAgcmV0dXJuIFNUUklOR0xJQihmYXN0c2VhcmNoX21lbWNocl8xY2hhcikKKyAgICAgICAgICAgICAgICAgICAgICAgKHMsIG4sIHBbMF0sIG5lZWRsZSwgbWF4Y291bnQsIG1vZGUpOworICAgICAgICB9CiAgICAgICAgIGlmIChtb2RlID09IEZBU1RfQ09VTlQpIHsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgICAgICAgICAgaWYgKHNbaV0gPT0gcFswXSkgewpAQCAtMTU3LDQgKzIyMiwzIEBACiAgICAgcmV0dXJuIGNvdW50OwogfQogCi0jZW5kaWYKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaCBiL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaAppbmRleCBjZTYxNWRjLi41MThlMDEyIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oCkBAIC0xLDE0ICsxLDExIEBACiAvKiBzdHJpbmdsaWI6IGZpbmQvaW5kZXggaW1wbGVtZW50YXRpb24gKi8KIAotI2lmbmRlZiBTVFJJTkdMSUJfRklORF9ICi0jZGVmaW5lIFNUUklOR0xJQl9GSU5EX0gKLQogI2lmbmRlZiBTVFJJTkdMSUJfRkFTVFNFQVJDSF9ICiAjZXJyb3IgbXVzdCBpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIiBiZWZvcmUgaW5jbHVkaW5nIHRoaXMgbW9kdWxlCiAjZW5kaWYKIAogUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1zdHJpbmdsaWJfZmluZChjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCitTVFJJTkdMSUIoZmluZCkoY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN1YiwgUHlfc3NpemVfdCBzdWJfbGVuLAogICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvZmZzZXQpCiB7CkBAIC0xOSw3ICsxNiw3IEBACiAgICAgaWYgKHN1Yl9sZW4gPT0gMCkKICAgICAgICAgcmV0dXJuIG9mZnNldDsKIAotICAgIHBvcyA9IGZhc3RzZWFyY2goc3RyLCBzdHJfbGVuLCBzdWIsIHN1Yl9sZW4sIC0xLCBGQVNUX1NFQVJDSCk7CisgICAgcG9zID0gRkFTVFNFQVJDSChzdHIsIHN0cl9sZW4sIHN1Yiwgc3ViX2xlbiwgLTEsIEZBU1RfU0VBUkNIKTsKIAogICAgIGlmIChwb3MgPj0gMCkKICAgICAgICAgcG9zICs9IG9mZnNldDsKQEAgLTI4LDcgKzI1LDcgQEAKIH0KIAogUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1zdHJpbmdsaWJfcmZpbmQoY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAorU1RSSU5HTElCKHJmaW5kKShjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN1YiwgUHlfc3NpemVfdCBzdWJfbGVuLAogICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb2Zmc2V0KQogewpAQCAtMzksNyArMzYsNyBAQAogICAgIGlmIChzdWJfbGVuID09IDApCiAgICAgICAgIHJldHVybiBzdHJfbGVuICsgb2Zmc2V0OwogCi0gICAgcG9zID0gZmFzdHNlYXJjaChzdHIsIHN0cl9sZW4sIHN1Yiwgc3ViX2xlbiwgLTEsIEZBU1RfUlNFQVJDSCk7CisgICAgcG9zID0gRkFTVFNFQVJDSChzdHIsIHN0cl9sZW4sIHN1Yiwgc3ViX2xlbiwgLTEsIEZBU1RfUlNFQVJDSCk7CiAKICAgICBpZiAocG9zID49IDApCiAgICAgICAgIHBvcyArPSBvZmZzZXQ7CkBAIC02MywyOSArNjAsMjkgQEAKICAgICB9CiAKIFB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotc3RyaW5nbGliX2ZpbmRfc2xpY2UoY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAorU1RSSU5HTElCKGZpbmRfc2xpY2UpKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdWIsIFB5X3NzaXplX3Qgc3ViX2xlbiwKICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQogewogICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIHN0cl9sZW4pOwotICAgIHJldHVybiBzdHJpbmdsaWJfZmluZChzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yiwgc3ViX2xlbiwgc3RhcnQpOworICAgIHJldHVybiBTVFJJTkdMSUIoZmluZCkoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCBzdWIsIHN1Yl9sZW4sIHN0YXJ0KTsKIH0KIAogUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1zdHJpbmdsaWJfcmZpbmRfc2xpY2UoY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAorU1RSSU5HTElCKHJmaW5kX3NsaWNlKShjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN1YiwgUHlfc3NpemVfdCBzdWJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQogewogICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIHN0cl9sZW4pOwotICAgIHJldHVybiBzdHJpbmdsaWJfcmZpbmQoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCBzdWIsIHN1Yl9sZW4sIHN0YXJ0KTsKKyAgICByZXR1cm4gU1RSSU5HTElCKHJmaW5kKShzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yiwgc3ViX2xlbiwgc3RhcnQpOwogfQogCiAjaWZkZWYgU1RSSU5HTElCX1dBTlRfQ09OVEFJTlNfT0JKCiAKIFB5X0xPQ0FMX0lOTElORShpbnQpCi1zdHJpbmdsaWJfY29udGFpbnNfb2JqKFB5T2JqZWN0KiBzdHIsIFB5T2JqZWN0KiBzdWIpCitTVFJJTkdMSUIoY29udGFpbnNfb2JqKShQeU9iamVjdCogc3RyLCBQeU9iamVjdCogc3ViKQogewotICAgIHJldHVybiBzdHJpbmdsaWJfZmluZCgKKyAgICByZXR1cm4gU1RSSU5HTElCKGZpbmQpKAogICAgICAgICBTVFJJTkdMSUJfU1RSKHN0ciksIFNUUklOR0xJQl9MRU4oc3RyKSwKICAgICAgICAgU1RSSU5HTElCX1NUUihzdWIpLCBTVFJJTkdMSUJfTEVOKHN1YiksIDAKICAgICAgICAgKSAhPSAtMTsKQEAgLTk4LDE0ICs5NSwxNCBAQAogcmluZGV4KSBhbmQgZm9yIGNvdW50LCBzdGFydHN3aXRoIGFuZCBlbmRzd2l0aCwgYmVjYXVzZSB0aGV5IGFsbCBoYXZlCiB0aGUgc2FtZSBiZWhhdmlvdXIgZm9yIHRoZSBhcmd1bWVudHMuCiAKLUl0IGRvZXMgbm90IHRvdWNoIHRoZSB2YXJpYWJsZXMgcmVjZWl2ZWQgdW50aWwgaXQga25vd3MgZXZlcnl0aGluZyAKK0l0IGRvZXMgbm90IHRvdWNoIHRoZSB2YXJpYWJsZXMgcmVjZWl2ZWQgdW50aWwgaXQga25vd3MgZXZlcnl0aGluZwogaXMgb2suCiAqLwogCiAjZGVmaW5lIEZPUk1BVF9CVUZGRVJfU0laRSA1MAogCiBQeV9MT0NBTF9JTkxJTkUoaW50KQotc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoY29uc3QgY2hhciAqIGZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAorU1RSSU5HTElCKHBhcnNlX2FyZ3NfZmluZHMpKGNvbnN0IGNoYXIgKiBmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3Vib2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKmVuZCkKIHsKQEAgLTE0OCwyOCArMTQ1LDc2IEBACiAKIE5vdGUgdGhhdCB3ZSByZWNlaXZlIGEgcG9pbnRlciB0byB0aGUgcG9pbnRlciBvZiB0aGUgc3Vic3RyaW5nIG9iamVjdCwKIHNvIHdoZW4gd2UgY3JlYXRlIHRoYXQgb2JqZWN0IGluIHRoaXMgZnVuY3Rpb24gd2UgZG9uJ3QgREVDUkVGIGl0LAotYmVjYXVzZSBpdCBjb250aW51ZXMgbGl2aW5nIGluIHRoZSBjYWxsZXIgZnVuY3Rpb25zICh0aG9zZSBmdW5jdGlvbnMsIAorYmVjYXVzZSBpdCBjb250aW51ZXMgbGl2aW5nIGluIHRoZSBjYWxsZXIgZnVuY3Rpb25zICh0aG9zZSBmdW5jdGlvbnMsCiBhZnRlciBmaW5pc2hpbmcgdXNpbmcgdGhlIHN1YnN0cmluZywgbXVzdCBERUNSRUYgaXQpLgogKi8KIAogUHlfTE9DQUxfSU5MSU5FKGludCkKLXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoY29uc3QgY2hhciAqIGZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVPYmplY3QgKipzdWJzdHJpbmcsCitTVFJJTkdMSUIocGFyc2VfYXJnc19maW5kc191bmljb2RlKShjb25zdCBjaGFyICogZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3Vic3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqZW5kKQogewogICAgIFB5T2JqZWN0ICp0bXBfc3Vic3RyaW5nOwogCi0gICAgaWYoc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoZnVuY3Rpb25fbmFtZSwgYXJncywgJnRtcF9zdWJzdHJpbmcsCisgICAgaWYoU1RSSU5HTElCKHBhcnNlX2FyZ3NfZmluZHMpKGZ1bmN0aW9uX25hbWUsIGFyZ3MsICZ0bXBfc3Vic3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQpKSB7CiAgICAgICAgIHRtcF9zdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdCh0bXBfc3Vic3RyaW5nKTsKICAgICAgICAgaWYgKCF0bXBfc3Vic3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICpzdWJzdHJpbmcgPSAoUHlVbmljb2RlT2JqZWN0ICopdG1wX3N1YnN0cmluZzsKKyAgICAgICAgKnN1YnN0cmluZyA9IHRtcF9zdWJzdHJpbmc7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KIAotI2VuZGlmIC8qIFNUUklOR0xJQl9JU19VTklDT0RFICovCisjZWxzZSAvKiAhU1RSSU5HTElCX0lTX1VOSUNPREUgKi8KIAotI2VuZGlmIC8qIFNUUklOR0xJQl9GSU5EX0ggKi8KKy8qCitXcmFwcyBzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygpIGFuZCBhZGRpdGlvbmFsbHkgY2hlY2tzIHdoZXRoZXIgdGhlCitmaXJzdCBhcmd1bWVudCBpcyBhbiBpbnRlZ2VyIGluIHJhbmdlKDAsIDI1NikuCisKK0lmIHRoaXMgaXMgdGhlIGNhc2UsIHdyaXRlcyB0aGUgaW50ZWdlciB2YWx1ZSB0byB0aGUgYnl0ZSBwYXJhbWV0ZXIKK2FuZCBzZXRzIHN1Ym9iaiB0byBOVUxMLiBPdGhlcndpc2UsIHNldHMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHN1Ym9iagorYW5kIGRvZXNuJ3QgdG91Y2ggYnl0ZS4gVGhlIG90aGVyIHBhcmFtZXRlcnMgYXJlIHNpbWlsYXIgdG8gdGhvc2Ugb2YKK3N0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCkuCisqLworCitQeV9MT0NBTF9JTkxJTkUoaW50KQorU1RSSU5HTElCKHBhcnNlX2FyZ3NfZmluZHNfYnl0ZSkoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnN1Ym9iaiwgY2hhciAqYnl0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnN0YXJ0LCBQeV9zc2l6ZV90ICplbmQpCit7CisgICAgUHlPYmplY3QgKnRtcF9zdWJvYmo7CisgICAgUHlfc3NpemVfdCBpdmFsOworICAgIFB5T2JqZWN0ICplcnI7CisKKyAgICBpZighU1RSSU5HTElCKHBhcnNlX2FyZ3NfZmluZHMpKGZ1bmN0aW9uX25hbWUsIGFyZ3MsICZ0bXBfc3Vib2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFQeU51bWJlcl9DaGVjayh0bXBfc3Vib2JqKSkgeworICAgICAgICAqc3Vib2JqID0gdG1wX3N1Ym9iajsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaXZhbCA9IFB5TnVtYmVyX0FzU3NpemVfdCh0bXBfc3Vib2JqLCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKKyAgICBpZiAoaXZhbCA9PSAtMSkgeworICAgICAgICBlcnIgPSBQeUVycl9PY2N1cnJlZCgpOworICAgICAgICBpZiAoZXJyICYmICFQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMoZXJyLCBQeUV4Y19PdmVyZmxvd0Vycm9yKSkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgICpzdWJvYmogPSB0bXBfc3Vib2JqOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoaXZhbCA8IDAgfHwgaXZhbCA+IDI1NSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImJ5dGUgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgICpzdWJvYmogPSBOVUxMOworICAgICpieXRlID0gKGNoYXIpaXZhbDsKKyAgICByZXR1cm4gMTsKK30KKworI2VuZGlmIC8qIFNUUklOR0xJQl9JU19VTklDT0RFICovCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9maW5kX21heF9jaGFyLmggYi9PYmplY3RzL3N0cmluZ2xpYi9maW5kX21heF9jaGFyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY1NTljOAotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaApAQCAtMCwwICsxLDEzMyBAQAorLyogRmluZGluZyB0aGUgb3B0aW1hbCB3aWR0aCBvZiB1bmljb2RlIGNoYXJhY3RlcnMgaW4gYSBidWZmZXIgKi8KKworI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCisKKy8qIE1hc2sgdG8gcXVpY2tseSBjaGVjayB3aGV0aGVyIGEgQyAnbG9uZycgY29udGFpbnMgYQorICAgbm9uLUFTQ0lJLCBVVEY4LWVuY29kZWQgY2hhci4gKi8KKyNpZiAoU0laRU9GX0xPTkcgPT0gOCkKKyMgZGVmaW5lIFVDUzFfQVNDSUlfQ0hBUl9NQVNLIDB4ODA4MDgwODA4MDgwODA4MFVMCisjZWxpZiAoU0laRU9GX0xPTkcgPT0gNCkKKyMgZGVmaW5lIFVDUzFfQVNDSUlfQ0hBUl9NQVNLIDB4ODA4MDgwODBVTAorI2Vsc2UKKyMgZXJyb3IgQyAnbG9uZycgc2l6ZSBzaG91bGQgYmUgZWl0aGVyIDQgb3IgOCEKKyNlbmRpZgorCisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEKKworUHlfTE9DQUxfSU5MSU5FKFB5X1VDUzQpCitTVFJJTkdMSUIoZmluZF9tYXhfY2hhcikoY29uc3QgU1RSSU5HTElCX0NIQVIgKmJlZ2luLCBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqZW5kKQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBiZWdpbjsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphbGlnbmVkX2VuZCA9CisgICAgICAgICAgICAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBfUHlfQUxJR05fRE9XTihlbmQsIFNJWkVPRl9MT05HKTsKKworICAgIHdoaWxlIChwIDwgZW5kKSB7CisgICAgICAgIGlmIChfUHlfSVNfQUxJR05FRChwLCBTSVpFT0ZfTE9ORykpIHsKKyAgICAgICAgICAgIC8qIEhlbHAgcmVnaXN0ZXIgYWxsb2NhdGlvbiAqLworICAgICAgICAgICAgcmVnaXN0ZXIgY29uc3QgdW5zaWduZWQgY2hhciAqX3AgPSBwOworICAgICAgICAgICAgd2hpbGUgKF9wIDwgYWxpZ25lZF9lbmQpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZhbHVlID0gKih1bnNpZ25lZCBsb25nICopIF9wOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmIFVDUzFfQVNDSUlfQ0hBUl9NQVNLKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjU1OworICAgICAgICAgICAgICAgIF9wICs9IFNJWkVPRl9MT05HOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcCA9IF9wOworICAgICAgICAgICAgaWYgKHAgPT0gZW5kKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmICgqcCsrICYgMHg4MCkKKyAgICAgICAgICAgIHJldHVybiAyNTU7CisgICAgfQorICAgIHJldHVybiAxMjc7Cit9CisKKyN1bmRlZiBBU0NJSV9DSEFSX01BU0sKKworI2Vsc2UgLyogU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEgKi8KKworI2RlZmluZSBNQVNLX0FTQ0lJIDB4RkZGRkZGODAKKyNkZWZpbmUgTUFTS19VQ1MxIDB4RkZGRkZGMDAKKyNkZWZpbmUgTUFTS19VQ1MyIDB4RkZGRjAwMDAKKworI2RlZmluZSBNQVhfQ0hBUl9BU0NJSSAweDdmCisjZGVmaW5lIE1BWF9DSEFSX1VDUzEgIDB4ZmYKKyNkZWZpbmUgTUFYX0NIQVJfVUNTMiAgMHhmZmZmCisjZGVmaW5lIE1BWF9DSEFSX1VDUzQgIDB4MTBmZmZmCisKK1B5X0xPQ0FMX0lOTElORShQeV9VQ1M0KQorU1RSSU5HTElCKGZpbmRfbWF4X2NoYXIpKGNvbnN0IFNUUklOR0xJQl9DSEFSICpiZWdpbiwgY29uc3QgU1RSSU5HTElCX0NIQVIgKmVuZCkKK3sKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMgorICAgIGNvbnN0IFB5X1VDUzQgbWFza19saW1pdCA9IE1BU0tfVUNTMTsKKyAgICBjb25zdCBQeV9VQ1M0IG1heF9jaGFyX2xpbWl0ID0gTUFYX0NIQVJfVUNTMjsKKyNlbGlmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSA0CisgICAgY29uc3QgUHlfVUNTNCBtYXNrX2xpbWl0ID0gTUFTS19VQ1MyOworICAgIGNvbnN0IFB5X1VDUzQgbWF4X2NoYXJfbGltaXQgPSBNQVhfQ0hBUl9VQ1M0OworI2Vsc2UKKyNlcnJvciBJbnZhbGlkIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiAobXVzdCBiZSAxLCAyIG9yIDQpCisjZW5kaWYKKyAgICByZWdpc3RlciBQeV9VQ1M0IG1hc2s7CisgICAgUHlfc3NpemVfdCBuID0gZW5kIC0gYmVnaW47CisgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKnAgPSBiZWdpbjsKKyAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqdW5yb2xsZWRfZW5kID0gYmVnaW4gKyBfUHlfU0laRV9ST1VORF9ET1dOKG4sIDQpOworICAgIFB5X1VDUzQgbWF4X2NoYXI7CisKKyAgICBtYXhfY2hhciA9IE1BWF9DSEFSX0FTQ0lJOworICAgIG1hc2sgPSBNQVNLX0FTQ0lJOworICAgIHdoaWxlIChwIDwgdW5yb2xsZWRfZW5kKSB7CisgICAgICAgIFNUUklOR0xJQl9DSEFSIGJpdHMgPSBwWzBdIHwgcFsxXSB8IHBbMl0gfCBwWzNdOworICAgICAgICBpZiAoYml0cyAmIG1hc2spIHsKKyAgICAgICAgICAgIGlmIChtYXNrID09IG1hc2tfbGltaXQpIHsKKyAgICAgICAgICAgICAgICAvKiBMaW1pdCByZWFjaGVkICovCisgICAgICAgICAgICAgICAgcmV0dXJuIG1heF9jaGFyX2xpbWl0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1hc2sgPT0gTUFTS19BU0NJSSkgeworICAgICAgICAgICAgICAgIG1heF9jaGFyID0gTUFYX0NIQVJfVUNTMTsKKyAgICAgICAgICAgICAgICBtYXNrID0gTUFTS19VQ1MxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLyogbWFzayBjYW4ndCBiZSBNQVNLX1VDUzIgYmVjYXVzZSBvZiBtYXNrX2xpbWl0IGFib3ZlICovCisgICAgICAgICAgICAgICAgYXNzZXJ0KG1hc2sgPT0gTUFTS19VQ1MxKTsKKyAgICAgICAgICAgICAgICBtYXhfY2hhciA9IE1BWF9DSEFSX1VDUzI7CisgICAgICAgICAgICAgICAgbWFzayA9IE1BU0tfVUNTMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIFdlIGNoZWNrIHRoZSBuZXcgbWFzayBvbiB0aGUgc2FtZSBjaGFycyBpbiB0aGUgbmV4dCBpdGVyYXRpb24gKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIHAgKz0gNDsKKyAgICB9CisgICAgd2hpbGUgKHAgPCBlbmQpIHsKKyAgICAgICAgaWYgKHBbMF0gJiBtYXNrKSB7CisgICAgICAgICAgICBpZiAobWFzayA9PSBtYXNrX2xpbWl0KSB7CisgICAgICAgICAgICAgICAgLyogTGltaXQgcmVhY2hlZCAqLworICAgICAgICAgICAgICAgIHJldHVybiBtYXhfY2hhcl9saW1pdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtYXNrID09IE1BU0tfQVNDSUkpIHsKKyAgICAgICAgICAgICAgICBtYXhfY2hhciA9IE1BWF9DSEFSX1VDUzE7CisgICAgICAgICAgICAgICAgbWFzayA9IE1BU0tfVUNTMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8qIG1hc2sgY2FuJ3QgYmUgTUFTS19VQ1MyIGJlY2F1c2Ugb2YgbWFza19saW1pdCBhYm92ZSAqLworICAgICAgICAgICAgICAgIGFzc2VydChtYXNrID09IE1BU0tfVUNTMSk7CisgICAgICAgICAgICAgICAgbWF4X2NoYXIgPSBNQVhfQ0hBUl9VQ1MyOworICAgICAgICAgICAgICAgIG1hc2sgPSBNQVNLX1VDUzI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBXZSBjaGVjayB0aGUgbmV3IG1hc2sgb24gdGhlIHNhbWUgY2hhcnMgaW4gdGhlIG5leHQgaXRlcmF0aW9uICovCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBwKys7CisgICAgfQorICAgIHJldHVybiBtYXhfY2hhcjsKK30KKworI3VuZGVmIE1BU0tfQVNDSUkKKyN1bmRlZiBNQVNLX1VDUzEKKyN1bmRlZiBNQVNLX1VDUzIKKyN1bmRlZiBNQVhfQ0hBUl9BU0NJSQorI3VuZGVmIE1BWF9DSEFSX1VDUzEKKyN1bmRlZiBNQVhfQ0hBUl9VQ1MyCisjdW5kZWYgTUFYX0NIQVJfVUNTNAorCisjZW5kaWYgLyogU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEgKi8KKyNlbmRpZiAvKiBTVFJJTkdMSUJfSVNfVU5JQ09ERSAqLworCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9mb3JtYXR0ZXIuaCBiL09iamVjdHMvc3RyaW5nbGliL2Zvcm1hdHRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTBkODk3Li4wMDAwMDAwCi0tLSBhL09iamVjdHMvc3RyaW5nbGliL2Zvcm1hdHRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTUxNiArMCwwIEBACi0vKiBpbXBsZW1lbnRzIHRoZSBzdHJpbmcsIGxvbmcsIGFuZCBmbG9hdCBmb3JtYXR0ZXJzLiAgdGhhdCBpcywKLSAgIHN0cmluZy5fX2Zvcm1hdF9fLCBldGMuICovCi0KLSNpbmNsdWRlIDxsb2NhbGUuaD4KLQotLyogQmVmb3JlIGluY2x1ZGluZyB0aGlzLCB5b3UgbXVzdCBpbmNsdWRlIGVpdGhlcjoKLSAgIHN0cmluZ2xpYi91bmljb2RlZGVmcy5oCi0gICBzdHJpbmdsaWIvc3RyaW5nZGVmcy5oCi0KLSAgIEFsc28sIHlvdSBzaG91bGQgZGVmaW5lIHRoZSBuYW1lczoKLSAgIEZPUk1BVF9TVFJJTkcKLSAgIEZPUk1BVF9MT05HCi0gICBGT1JNQVRfRkxPQVQKLSAgIEZPUk1BVF9DT01QTEVYCi0gICB0byBiZSB3aGF0ZXZlciB5b3Ugd2FudCB0aGUgcHVibGljIG5hbWVzIG9mIHRoZXNlIGZ1bmN0aW9ucyB0bwotICAgYmUuICBUaGVzZSBhcmUgdGhlIG9ubHkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgZGVmaW5lZCBoZXJlLgotKi8KLQotLyogUmFpc2VzIGFuIGV4Y2VwdGlvbiBhYm91dCBhbiB1bmtub3duIHByZXNlbnRhdGlvbiB0eXBlIGZvciB0aGlzCi0gKiB0eXBlLiAqLwotCi1zdGF0aWMgdm9pZAotdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShTVFJJTkdMSUJfQ0hBUiBwcmVzZW50YXRpb25fdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdHlwZV9uYW1lKQotewotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi0gICAgLyogSWYgU1RSSU5HTElCX0NIQVIgaXMgUHlfVU5JQ09ERSwgJWMgbWlnaHQgYmUgb3V0LW9mLXJhbmdlLAotICAgICAgIGhlbmNlIHRoZSB0d28gY2FzZXMuIElmIGl0IGlzIGNoYXIsIGdjYyBjb21wbGFpbnMgdGhhdCB0aGUKLSAgICAgICBjb25kaXRpb24gYmVsb3cgaXMgYWx3YXlzIHRydWUsIGhlbmNlIHRoZSBpZmRlZi4gKi8KLSAgICBpZiAocHJlc2VudGF0aW9uX3R5cGUgPiAzMiAmJiBwcmVzZW50YXRpb25fdHlwZSA8IDEyOCkKLSNlbmRpZgotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIGZvcm1hdCBjb2RlICclYycgIgotICAgICAgICAgICAgICAgICAgICAgImZvciBvYmplY3Qgb2YgdHlwZSAnJS4yMDBzJyIsCi0gICAgICAgICAgICAgICAgICAgICAoY2hhcilwcmVzZW50YXRpb25fdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgIHR5cGVfbmFtZSk7Ci0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSAgICBlbHNlCi0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIlVua25vd24gZm9ybWF0IGNvZGUgJ1xceCV4JyAiCi0gICAgICAgICAgICAgICAgICAgICAiZm9yIG9iamVjdCBvZiB0eXBlICclLjIwMHMnIiwKLSAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpcHJlc2VudGF0aW9uX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICB0eXBlX25hbWUpOwotI2VuZGlmCi19Ci0KLXN0YXRpYyB2b2lkCi1pbnZhbGlkX2NvbW1hX3R5cGUoU1RSSU5HTElCX0NIQVIgcHJlc2VudGF0aW9uX3R5cGUpCi17Ci0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSAgICAvKiBTZWUgY29tbWVudCBpbiB1bmtub3duX3ByZXNlbnRhdGlvbl90eXBlICovCi0gICAgaWYgKHByZXNlbnRhdGlvbl90eXBlID4gMzIgJiYgcHJlc2VudGF0aW9uX3R5cGUgPCAxMjgpCi0jZW5kaWYKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgJywnIHdpdGggJyVjJy4iLAotICAgICAgICAgICAgICAgICAgICAgKGNoYXIpcHJlc2VudGF0aW9uX3R5cGUpOwotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi0gICAgZWxzZQotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3BlY2lmeSAnLCcgd2l0aCAnXFx4JXgnLiIsCi0gICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgaW50KXByZXNlbnRhdGlvbl90eXBlKTsKLSNlbmRpZgotfQotCi0vKgotICAgIGdldF9pbnRlZ2VyIGNvbnN1bWVzIDAgb3IgbW9yZSBkZWNpbWFsIGRpZ2l0IGNoYXJhY3RlcnMgZnJvbSBhbgotICAgIGlucHV0IHN0cmluZywgdXBkYXRlcyAqcmVzdWx0IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgcG9zaXRpdmUKLSAgICBpbnRlZ2VyLCBhbmQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBjb25zdW1lZC4KLQotICAgIHJldHVybnMgLTEgb24gZXJyb3IuCi0qLwotc3RhdGljIGludAotZ2V0X2ludGVnZXIoU1RSSU5HTElCX0NIQVIgKipwdHIsIFNUUklOR0xJQl9DSEFSICplbmQsCi0gICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpyZXN1bHQpCi17Ci0gICAgUHlfc3NpemVfdCBhY2N1bXVsYXRvciwgZGlnaXR2YWw7Ci0gICAgaW50IG51bWRpZ2l0czsKLSAgICBhY2N1bXVsYXRvciA9IG51bWRpZ2l0cyA9IDA7Ci0gICAgZm9yICg7OygqcHRyKSsrLCBudW1kaWdpdHMrKykgewotICAgICAgICBpZiAoKnB0ciA+PSBlbmQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGlnaXR2YWwgPSBTVFJJTkdMSUJfVE9ERUNJTUFMKCoqcHRyKTsKLSAgICAgICAgaWYgKGRpZ2l0dmFsIDwgMCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAvKgotICAgICAgICAgICBEZXRlY3QgcG9zc2libGUgb3ZlcmZsb3cgYmVmb3JlIGl0IGhhcHBlbnM6Ci0KLSAgICAgICAgICAgICAgYWNjdW11bGF0b3IgKiAxMCArIGRpZ2l0dmFsID4gUFlfU1NJWkVfVF9NQVggaWYgYW5kIG9ubHkgaWYKLSAgICAgICAgICAgICAgYWNjdW11bGF0b3IgPiAoUFlfU1NJWkVfVF9NQVggLSBkaWdpdHZhbCkgLyAxMC4KLSAgICAgICAgKi8KLSAgICAgICAgaWYgKGFjY3VtdWxhdG9yID4gKFBZX1NTSVpFX1RfTUFYIC0gZGlnaXR2YWwpIC8gMTApIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJUb28gbWFueSBkZWNpbWFsIGRpZ2l0cyBpbiBmb3JtYXQgc3RyaW5nIik7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgYWNjdW11bGF0b3IgPSBhY2N1bXVsYXRvciAqIDEwICsgZGlnaXR2YWw7Ci0gICAgfQotICAgICpyZXN1bHQgPSBhY2N1bXVsYXRvcjsKLSAgICByZXR1cm4gbnVtZGlnaXRzOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqIHN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIgcGFyc2luZyAqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qIHJldHVybnMgdHJ1ZSBpZiB0aGlzIGNoYXJhY3RlciBpcyBhIHNwZWNpZmllciBhbGlnbm1lbnQgdG9rZW4gKi8KLVB5X0xPQ0FMX0lOTElORShpbnQpCi1pc19hbGlnbm1lbnRfdG9rZW4oU1RSSU5HTElCX0NIQVIgYykKLXsKLSAgICBzd2l0Y2ggKGMpIHsKLSAgICBjYXNlICc8JzogY2FzZSAnPic6IGNhc2UgJz0nOiBjYXNlICdeJzoKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotfQotCi0vKiByZXR1cm5zIHRydWUgaWYgdGhpcyBjaGFyYWN0ZXIgaXMgYSBzaWduIGVsZW1lbnQgKi8KLVB5X0xPQ0FMX0lOTElORShpbnQpCi1pc19zaWduX2VsZW1lbnQoU1RSSU5HTElCX0NIQVIgYykKLXsKLSAgICBzd2l0Y2ggKGMpIHsKLSAgICBjYXNlICcgJzogY2FzZSAnKyc6IGNhc2UgJy0nOgotICAgICAgICByZXR1cm4gMTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19Ci0KLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFNUUklOR0xJQl9DSEFSIGZpbGxfY2hhcjsKLSAgICBTVFJJTkdMSUJfQ0hBUiBhbGlnbjsKLSAgICBpbnQgYWx0ZXJuYXRlOwotICAgIFNUUklOR0xJQl9DSEFSIHNpZ247Ci0gICAgUHlfc3NpemVfdCB3aWR0aDsKLSAgICBpbnQgdGhvdXNhbmRzX3NlcGFyYXRvcnM7Ci0gICAgUHlfc3NpemVfdCBwcmVjaXNpb247Ci0gICAgU1RSSU5HTElCX0NIQVIgdHlwZTsKLX0gSW50ZXJuYWxGb3JtYXRTcGVjOwotCi0KLSNpZiAwCi0vKiBPY2Nhc3Npb25hbGx5IHVzZWZ1bCBmb3IgZGVidWdnaW5nLiBTaG91bGQgbm9ybWFsbHkgYmUgY29tbWVudGVkIG91dC4gKi8KLXN0YXRpYyB2b2lkCi1ERUJVR19QUklOVF9GT1JNQVRfU1BFQyhJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCkKLXsKLSAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiBmaWxsX2NoYXIgJWRcbiIsIGZvcm1hdC0+ZmlsbF9jaGFyKTsKLSAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiBhbGlnbiAlZFxuIiwgZm9ybWF0LT5hbGlnbik7Ci0gICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogYWx0ZXJuYXRlICVkXG4iLCBmb3JtYXQtPmFsdGVybmF0ZSk7Ci0gICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogc2lnbiAlZFxuIiwgZm9ybWF0LT5zaWduKTsKLSAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiB3aWR0aCAlemRcbiIsIGZvcm1hdC0+d2lkdGgpOwotICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IHRob3VzYW5kc19zZXBhcmF0b3JzICVkXG4iLAotICAgICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzKTsKLSAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiBwcmVjaXNpb24gJXpkXG4iLCBmb3JtYXQtPnByZWNpc2lvbik7Ci0gICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogdHlwZSAlY1xuIiwgZm9ybWF0LT50eXBlKTsKLSAgICBwcmludGYoIlxuIik7Ci19Ci0jZW5kaWYKLQotCi0vKgotICBwdHIgcG9pbnRzIHRvIHRoZSBzdGFydCBvZiB0aGUgZm9ybWF0X3NwZWMsIGVuZCBwb2ludHMganVzdCBwYXN0IGl0cyBlbmQuCi0gIGZpbGxzIGluIGZvcm1hdCB3aXRoIHRoZSBwYXJzZWQgaW5mb3JtYXRpb24uCi0gIHJldHVybnMgMSBvbiBzdWNjZXNzLCAwIG9uIGZhaWx1cmUuCi0gIGlmIGZhaWx1cmUsIHNldHMgdGhlIGV4Y2VwdGlvbgotKi8KLXN0YXRpYyBpbnQKLXBhcnNlX2ludGVybmFsX3JlbmRlcl9mb3JtYXRfc3BlYyhTVFJJTkdMSUJfQ0hBUiAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBmb3JtYXRfc3BlY19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBkZWZhdWx0X3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBkZWZhdWx0X2FsaWduKQotewotICAgIFNUUklOR0xJQl9DSEFSICpwdHIgPSBmb3JtYXRfc3BlYzsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqZW5kID0gZm9ybWF0X3NwZWMgKyBmb3JtYXRfc3BlY19sZW47Ci0KLSAgICAvKiBlbmQtcHRyIGlzIHVzZWQgdGhyb3VnaG91dCB0aGlzIGNvZGUgdG8gc3BlY2lmeSB0aGUgbGVuZ3RoIG9mCi0gICAgICAgdGhlIGlucHV0IHN0cmluZyAqLwotCi0gICAgUHlfc3NpemVfdCBjb25zdW1lZDsKLSAgICBpbnQgYWxpZ25fc3BlY2lmaWVkID0gMDsKLQotICAgIGZvcm1hdC0+ZmlsbF9jaGFyID0gJ1wwJzsKLSAgICBmb3JtYXQtPmFsaWduID0gZGVmYXVsdF9hbGlnbjsKLSAgICBmb3JtYXQtPmFsdGVybmF0ZSA9IDA7Ci0gICAgZm9ybWF0LT5zaWduID0gJ1wwJzsKLSAgICBmb3JtYXQtPndpZHRoID0gLTE7Ci0gICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IDA7Ci0gICAgZm9ybWF0LT5wcmVjaXNpb24gPSAtMTsKLSAgICBmb3JtYXQtPnR5cGUgPSBkZWZhdWx0X3R5cGU7Ci0KLSAgICAvKiBJZiB0aGUgc2Vjb25kIGNoYXIgaXMgYW4gYWxpZ25tZW50IHRva2VuLAotICAgICAgIHRoZW4gcGFyc2UgdGhlIGZpbGwgY2hhciAqLwotICAgIGlmIChlbmQtcHRyID49IDIgJiYgaXNfYWxpZ25tZW50X3Rva2VuKHB0clsxXSkpIHsKLSAgICAgICAgZm9ybWF0LT5hbGlnbiA9IHB0clsxXTsKLSAgICAgICAgZm9ybWF0LT5maWxsX2NoYXIgPSBwdHJbMF07Ci0gICAgICAgIGFsaWduX3NwZWNpZmllZCA9IDE7Ci0gICAgICAgIHB0ciArPSAyOwotICAgIH0KLSAgICBlbHNlIGlmIChlbmQtcHRyID49IDEgJiYgaXNfYWxpZ25tZW50X3Rva2VuKHB0clswXSkpIHsKLSAgICAgICAgZm9ybWF0LT5hbGlnbiA9IHB0clswXTsKLSAgICAgICAgYWxpZ25fc3BlY2lmaWVkID0gMTsKLSAgICAgICAgKytwdHI7Ci0gICAgfQotCi0gICAgLyogUGFyc2UgdGhlIHZhcmlvdXMgc2lnbiBvcHRpb25zICovCi0gICAgaWYgKGVuZC1wdHIgPj0gMSAmJiBpc19zaWduX2VsZW1lbnQocHRyWzBdKSkgewotICAgICAgICBmb3JtYXQtPnNpZ24gPSBwdHJbMF07Ci0gICAgICAgICsrcHRyOwotICAgIH0KLQotICAgIC8qIElmIHRoZSBuZXh0IGNoYXJhY3RlciBpcyAjLCB3ZSdyZSBpbiBhbHRlcm5hdGUgbW9kZS4gIFRoaXMgb25seQotICAgICAgIGFwcGxpZXMgdG8gaW50ZWdlcnMuICovCi0gICAgaWYgKGVuZC1wdHIgPj0gMSAmJiBwdHJbMF0gPT0gJyMnKSB7Ci0gICAgICAgIGZvcm1hdC0+YWx0ZXJuYXRlID0gMTsKLSAgICAgICAgKytwdHI7Ci0gICAgfQotCi0gICAgLyogVGhlIHNwZWNpYWwgY2FzZSBmb3IgMC1wYWRkaW5nIChiYWNrd2FyZHMgY29tcGF0KSAqLwotICAgIGlmIChmb3JtYXQtPmZpbGxfY2hhciA9PSAnXDAnICYmIGVuZC1wdHIgPj0gMSAmJiBwdHJbMF0gPT0gJzAnKSB7Ci0gICAgICAgIGZvcm1hdC0+ZmlsbF9jaGFyID0gJzAnOwotICAgICAgICBpZiAoIWFsaWduX3NwZWNpZmllZCkgewotICAgICAgICAgICAgZm9ybWF0LT5hbGlnbiA9ICc9JzsKLSAgICAgICAgfQotICAgICAgICArK3B0cjsKLSAgICB9Ci0KLSAgICBjb25zdW1lZCA9IGdldF9pbnRlZ2VyKCZwdHIsIGVuZCwgJmZvcm1hdC0+d2lkdGgpOwotICAgIGlmIChjb25zdW1lZCA9PSAtMSkKLSAgICAgICAgLyogT3ZlcmZsb3cgZXJyb3IuIEV4Y2VwdGlvbiBhbHJlYWR5IHNldC4gKi8KLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvKiBJZiBjb25zdW1lZCBpcyAwLCB3ZSBkaWRuJ3QgY29uc3VtZSBhbnkgY2hhcmFjdGVycyBmb3IgdGhlCi0gICAgICAgd2lkdGguIEluIHRoYXQgY2FzZSwgcmVzZXQgdGhlIHdpZHRoIHRvIC0xLCBiZWNhdXNlCi0gICAgICAgZ2V0X2ludGVnZXIoKSB3aWxsIGhhdmUgc2V0IGl0IHRvIHplcm8uIC0xIGlzIGhvdyB3ZSByZWNvcmQKLSAgICAgICB0aGF0IHRoZSB3aWR0aCB3YXNuJ3Qgc3BlY2lmaWVkLiAqLwotICAgIGlmIChjb25zdW1lZCA9PSAwKQotICAgICAgICBmb3JtYXQtPndpZHRoID0gLTE7Ci0KLSAgICAvKiBDb21tYSBzaWduaWZpZXMgYWRkIHRob3VzYW5kcyBzZXBhcmF0b3JzICovCi0gICAgaWYgKGVuZC1wdHIgJiYgcHRyWzBdID09ICcsJykgewotICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID0gMTsKLSAgICAgICAgKytwdHI7Ci0gICAgfQotCi0gICAgLyogUGFyc2UgZmllbGQgcHJlY2lzaW9uICovCi0gICAgaWYgKGVuZC1wdHIgJiYgcHRyWzBdID09ICcuJykgewotICAgICAgICArK3B0cjsKLQotICAgICAgICBjb25zdW1lZCA9IGdldF9pbnRlZ2VyKCZwdHIsIGVuZCwgJmZvcm1hdC0+cHJlY2lzaW9uKTsKLSAgICAgICAgaWYgKGNvbnN1bWVkID09IC0xKQotICAgICAgICAgICAgLyogT3ZlcmZsb3cgZXJyb3IuIEV4Y2VwdGlvbiBhbHJlYWR5IHNldC4gKi8KLSAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIC8qIE5vdCBoYXZpbmcgYSBwcmVjaXNpb24gYWZ0ZXIgYSBkb3QgaXMgYW4gZXJyb3IuICovCi0gICAgICAgIGlmIChjb25zdW1lZCA9PSAwKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRm9ybWF0IHNwZWNpZmllciBtaXNzaW5nIHByZWNpc2lvbiIpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQotICAgIH0KLQotICAgIC8qIEZpbmFsbHksIHBhcnNlIHRoZSB0eXBlIGZpZWxkLiAqLwotCi0gICAgaWYgKGVuZC1wdHIgPiAxKSB7Ci0gICAgICAgIC8qIE1vcmUgdGhhbiBvbmUgY2hhciByZW1haW4sIGludmFsaWQgY29udmVyc2lvbiBzcGVjLiAqLwotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIkludmFsaWQgY29udmVyc2lvbiBzcGVjaWZpY2F0aW9uIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmIChlbmQtcHRyID09IDEpIHsKLSAgICAgICAgZm9ybWF0LT50eXBlID0gcHRyWzBdOwotICAgICAgICArK3B0cjsKLSAgICB9Ci0KLSAgICAvKiBEbyBhcyBtdWNoIHZhbGlkYXRpbmcgYXMgd2UgY2FuLCBqdXN0IGJ5IGxvb2tpbmcgYXQgdGhlIGZvcm1hdAotICAgICAgIHNwZWNpZmllci4gIERvIG5vdCB0YWtlIGludG8gYWNjb3VudCB3aGF0IHR5cGUgb2YgZm9ybWF0dGluZwotICAgICAgIHdlJ3JlIGRvaW5nIChpbnQsIGZsb2F0LCBzdHJpbmcpLiAqLwotCi0gICAgaWYgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMpIHsKLSAgICAgICAgc3dpdGNoIChmb3JtYXQtPnR5cGUpIHsKLSAgICAgICAgY2FzZSAnZCc6Ci0gICAgICAgIGNhc2UgJ2UnOgotICAgICAgICBjYXNlICdmJzoKLSAgICAgICAgY2FzZSAnZyc6Ci0gICAgICAgIGNhc2UgJ0UnOgotICAgICAgICBjYXNlICdHJzoKLSAgICAgICAgY2FzZSAnJSc6Ci0gICAgICAgIGNhc2UgJ0YnOgotICAgICAgICBjYXNlICdcMCc6Ci0gICAgICAgICAgICAvKiBUaGVzZSBhcmUgYWxsb3dlZC4gU2VlIFBFUCAzNzguKi8KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaW52YWxpZF9jb21tYV90eXBlKGZvcm1hdC0+dHlwZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiAxOwotfQotCi0vKiBDYWxjdWxhdGUgdGhlIHBhZGRpbmcgbmVlZGVkLiAqLwotc3RhdGljIHZvaWQKLWNhbGNfcGFkZGluZyhQeV9zc2l6ZV90IG5jaGFycywgUHlfc3NpemVfdCB3aWR0aCwgU1RSSU5HTElCX0NIQVIgYWxpZ24sCi0gICAgICAgICAgICAgUHlfc3NpemVfdCAqbl9scGFkZGluZywgUHlfc3NpemVfdCAqbl9ycGFkZGluZywKLSAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuX3RvdGFsKQotewotICAgIGlmICh3aWR0aCA+PSAwKSB7Ci0gICAgICAgIGlmIChuY2hhcnMgPiB3aWR0aCkKLSAgICAgICAgICAgICpuX3RvdGFsID0gbmNoYXJzOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAqbl90b3RhbCA9IHdpZHRoOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogbm90IHNwZWNpZmllZCwgdXNlIGFsbCBvZiB0aGUgY2hhcnMgYW5kIG5vIG1vcmUgKi8KLSAgICAgICAgKm5fdG90YWwgPSBuY2hhcnM7Ci0gICAgfQotCi0gICAgLyogRmlndXJlIG91dCBob3cgbXVjaCBsZWFkaW5nIHNwYWNlIHdlIG5lZWQsIGJhc2VkIG9uIHRoZQotICAgICAgIGFsaWduaW5nICovCi0gICAgaWYgKGFsaWduID09ICc+JykKLSAgICAgICAgKm5fbHBhZGRpbmcgPSAqbl90b3RhbCAtIG5jaGFyczsKLSAgICBlbHNlIGlmIChhbGlnbiA9PSAnXicpCi0gICAgICAgICpuX2xwYWRkaW5nID0gKCpuX3RvdGFsIC0gbmNoYXJzKSAvIDI7Ci0gICAgZWxzZSBpZiAoYWxpZ24gPT0gJzwnIHx8IGFsaWduID09ICc9JykKLSAgICAgICAgKm5fbHBhZGRpbmcgPSAwOwotICAgIGVsc2UgewotICAgICAgICAvKiBXZSBzaG91bGQgbmV2ZXIgaGF2ZSBhbiB1bnNwZWNpZmllZCBhbGlnbm1lbnQuICovCi0gICAgICAgICpuX2xwYWRkaW5nID0gMDsKLSAgICAgICAgYXNzZXJ0KDApOwotICAgIH0KLQotICAgICpuX3JwYWRkaW5nID0gKm5fdG90YWwgLSBuY2hhcnMgLSAqbl9scGFkZGluZzsKLX0KLQotLyogRG8gdGhlIHBhZGRpbmcsIGFuZCByZXR1cm4gYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBjYWxsZXItc3VwcGxpZWQKLSAgIGNvbnRlbnQgZ29lcy4gKi8KLXN0YXRpYyBTVFJJTkdMSUJfQ0hBUiAqCi1maWxsX3BhZGRpbmcoU1RSSU5HTElCX0NIQVIgKnAsIFB5X3NzaXplX3QgbmNoYXJzLCBTVFJJTkdMSUJfQ0hBUiBmaWxsX2NoYXIsCi0gICAgICAgICAgICAgUHlfc3NpemVfdCBuX2xwYWRkaW5nLCBQeV9zc2l6ZV90IG5fcnBhZGRpbmcpCi17Ci0gICAgLyogUGFkIG9uIGxlZnQuICovCi0gICAgaWYgKG5fbHBhZGRpbmcpCi0gICAgICAgIFNUUklOR0xJQl9GSUxMKHAsIGZpbGxfY2hhciwgbl9scGFkZGluZyk7Ci0KLSAgICAvKiBQYWQgb24gcmlnaHQuICovCi0gICAgaWYgKG5fcnBhZGRpbmcpCi0gICAgICAgIFNUUklOR0xJQl9GSUxMKHAgKyBuY2hhcnMgKyBuX2xwYWRkaW5nLCBmaWxsX2NoYXIsIG5fcnBhZGRpbmcpOwotCi0gICAgLyogUG9pbnRlciB0byB0aGUgdXNlciBjb250ZW50LiAqLwotICAgIHJldHVybiBwICsgbl9scGFkZGluZzsKLX0KLQotI2lmIGRlZmluZWQgRk9STUFUX0ZMT0FUIHx8IGRlZmluZWQgRk9STUFUX0xPTkcgfHwgZGVmaW5lZCBGT1JNQVRfQ09NUExFWAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKiBjb21tb24gcm91dGluZXMgZm9yIG51bWVyaWMgZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKiBMb2NhbGUgdHlwZSBjb2Rlcy4gKi8KLSNkZWZpbmUgTFRfQ1VSUkVOVF9MT0NBTEUgMAotI2RlZmluZSBMVF9ERUZBVUxUX0xPQ0FMRSAxCi0jZGVmaW5lIExUX05PX0xPQ0FMRSAyCi0KLS8qIExvY2FsZSBpbmZvIG5lZWRlZCBmb3IgZm9ybWF0dGluZyBpbnRlZ2VycyBhbmQgdGhlIHBhcnQgb2YgZmxvYXRzCi0gICBiZWZvcmUgYW5kIGluY2x1ZGluZyB0aGUgZGVjaW1hbC4gTm90ZSB0aGF0IGxvY2FsZXMgb25seSBzdXBwb3J0Ci0gICA4LWJpdCBjaGFycywgbm90IHVuaWNvZGUuICovCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgY2hhciAqZGVjaW1hbF9wb2ludDsKLSAgICBjaGFyICp0aG91c2FuZHNfc2VwOwotICAgIGNoYXIgKmdyb3VwaW5nOwotfSBMb2NhbGVJbmZvOwotCi0vKiBkZXNjcmliZXMgdGhlIGxheW91dCBmb3IgYW4gaW50ZWdlciwgc2VlIHRoZSBjb21tZW50IGluCi0gICBjYWxjX251bWJlcl93aWR0aHMoKSBmb3IgZGV0YWlscyAqLwotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5X3NzaXplX3Qgbl9scGFkZGluZzsKLSAgICBQeV9zc2l6ZV90IG5fcHJlZml4OwotICAgIFB5X3NzaXplX3Qgbl9zcGFkZGluZzsKLSAgICBQeV9zc2l6ZV90IG5fcnBhZGRpbmc7Ci0gICAgY2hhciBzaWduOwotICAgIFB5X3NzaXplX3Qgbl9zaWduOyAgICAgIC8qIG51bWJlciBvZiBkaWdpdHMgbmVlZGVkIGZvciBzaWduICgwLzEpICovCi0gICAgUHlfc3NpemVfdCBuX2dyb3VwZWRfZGlnaXRzOyAvKiBTcGFjZSB0YWtlbiB1cCBieSB0aGUgZGlnaXRzLCBpbmNsdWRpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueSBncm91cGluZyBjaGFycy4gKi8KLSAgICBQeV9zc2l6ZV90IG5fZGVjaW1hbDsgICAvKiAwIGlmIG9ubHkgYW4gaW50ZWdlciAqLwotICAgIFB5X3NzaXplX3Qgbl9yZW1haW5kZXI7IC8qIERpZ2l0cyBpbiBkZWNpbWFsIGFuZC9vciBleHBvbmVudCBwYXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGluZyB0aGUgZGVjaW1hbCBpdHNlbGYsIGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudC4gKi8KLQotICAgIC8qIFRoZXNlIDIgYXJlIG5vdCB0aGUgd2lkdGhzIG9mIGZpZWxkcywgYnV0IGFyZSBuZWVkZWQgYnkKLSAgICAgICBTVFJJTkdMSUJfR1JPVVBJTkcuICovCi0gICAgUHlfc3NpemVfdCBuX2RpZ2l0czsgICAgLyogVGhlIG51bWJlciBvZiBkaWdpdHMgYmVmb3JlIGEgZGVjaW1hbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGV4cG9uZW50LiAqLwotICAgIFB5X3NzaXplX3Qgbl9taW5fd2lkdGg7IC8qIFRoZSBtaW5fd2lkdGggd2UgdXNlZCB3aGVuIHdlIGNvbXB1dGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG5fZ3JvdXBlZF9kaWdpdHMgd2lkdGguICovCi19IE51bWJlckZpZWxkV2lkdGhzOwotCi0KLS8qIEdpdmVuIGEgbnVtYmVyIG9mIHRoZSBmb3JtOgotICAgZGlnaXRzW3JlbWFpbmRlcl0KLSAgIHdoZXJlIHB0ciBwb2ludHMgdG8gdGhlIHN0YXJ0IGFuZCBlbmQgcG9pbnRzIHRvIHRoZSBlbmQsIGZpbmQgd2hlcmUKLSAgICB0aGUgaW50ZWdlciBwYXJ0IGVuZHMuIFRoaXMgY291bGQgYmUgYSBkZWNpbWFsLCBhbiBleHBvbmVudCwgYm90aCwKLSAgICBvciBuZWl0aGVyLgotICAgSWYgYSBkZWNpbWFsIHBvaW50IGlzIHByZXNlbnQsIHNldCAqaGFzX2RlY2ltYWwgYW5kIGluY3JlbWVudAotICAgIHJlbWFpbmRlciBiZXlvbmQgaXQuCi0gICBSZXN1bHRzIGFyZSB1bmRlZmluZWQgKGJ1dCBzaG91bGRuJ3QgY3Jhc2gpIGZvciBpbXByb3Blcmx5Ci0gICAgZm9ybWF0dGVkIHN0cmluZ3MuCi0qLwotc3RhdGljIHZvaWQKLXBhcnNlX251bWJlcihTVFJJTkdMSUJfQ0hBUiAqcHRyLCBQeV9zc2l6ZV90IGxlbiwKLSAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuX3JlbWFpbmRlciwgaW50ICpoYXNfZGVjaW1hbCkKLXsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqZW5kID0gcHRyICsgbGVuOwotICAgIFNUUklOR0xJQl9DSEFSICpyZW1haW5kZXI7Ci0KLSAgICB3aGlsZSAocHRyPGVuZCAmJiBQeV9JU0RJR0lUKCpwdHIpKQotICAgICAgICArK3B0cjsKLSAgICByZW1haW5kZXIgPSBwdHI7Ci0KLSAgICAvKiBEb2VzIHJlbWFpbmRlciBzdGFydCB3aXRoIGEgZGVjaW1hbCBwb2ludD8gKi8KLSAgICAqaGFzX2RlY2ltYWwgPSBwdHI8ZW5kICYmICpyZW1haW5kZXIgPT0gJy4nOwotCi0gICAgLyogU2tpcCB0aGUgZGVjaW1hbCBwb2ludC4gKi8KLSAgICBpZiAoKmhhc19kZWNpbWFsKQotICAgICAgICByZW1haW5kZXIrKzsKLQotICAgICpuX3JlbWFpbmRlciA9IGVuZCAtIHJlbWFpbmRlcjsKLX0KLQotLyogbm90IGFsbCBmaWVsZHMgb2YgZm9ybWF0IGFyZSB1c2VkLiAgZm9yIGV4YW1wbGUsIHByZWNpc2lvbiBpcwotICAgdW51c2VkLiAgc2hvdWxkIHRoaXMgdGFrZSBkaXNjcmV0ZSBwYXJhbXMgaW4gb3JkZXIgdG8gYmUgbW9yZSBjbGVhcgotICAgYWJvdXQgd2hhdCBpdCBkb2VzPyAgb3IgaXMgcGFzc2luZyBhIHNpbmdsZSBmb3JtYXQgcGFyYW1ldGVyIGVhc2llcgotICAgYW5kIG1vcmUgZWZmaWNpZW50IGVub3VnaCB0byBqdXN0aWZ5IGEgbGl0dGxlIG9iZnVzY2F0aW9uPyAqLwotc3RhdGljIFB5X3NzaXplX3QKLWNhbGNfbnVtYmVyX3dpZHRocyhOdW1iZXJGaWVsZFdpZHRocyAqc3BlYywgUHlfc3NpemVfdCBuX3ByZWZpeCwKLSAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiBzaWduX2NoYXIsIFNUUklOR0xJQl9DSEFSICpudW1iZXIsCi0gICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuX251bWJlciwgUHlfc3NpemVfdCBuX3JlbWFpbmRlciwKLSAgICAgICAgICAgICAgICAgICBpbnQgaGFzX2RlY2ltYWwsIGNvbnN0IExvY2FsZUluZm8gKmxvY2FsZSwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCkKLXsKLSAgICBQeV9zc2l6ZV90IG5fbm9uX2RpZ2l0X25vbl9wYWRkaW5nOwotICAgIFB5X3NzaXplX3Qgbl9wYWRkaW5nOwotCi0gICAgc3BlYy0+bl9kaWdpdHMgPSBuX251bWJlciAtIG5fcmVtYWluZGVyIC0gKGhhc19kZWNpbWFsPzE6MCk7Ci0gICAgc3BlYy0+bl9scGFkZGluZyA9IDA7Ci0gICAgc3BlYy0+bl9wcmVmaXggPSBuX3ByZWZpeDsKLSAgICBzcGVjLT5uX2RlY2ltYWwgPSBoYXNfZGVjaW1hbCA/IHN0cmxlbihsb2NhbGUtPmRlY2ltYWxfcG9pbnQpIDogMDsKLSAgICBzcGVjLT5uX3JlbWFpbmRlciA9IG5fcmVtYWluZGVyOwotICAgIHNwZWMtPm5fc3BhZGRpbmcgPSAwOwotICAgIHNwZWMtPm5fcnBhZGRpbmcgPSAwOwotICAgIHNwZWMtPnNpZ24gPSAnXDAnOwotICAgIHNwZWMtPm5fc2lnbiA9IDA7Ci0KLSAgICAvKiB0aGUgb3V0cHV0IHdpbGwgbG9vayBsaWtlOgotICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICB8IDxscGFkZGluZz4gPHNpZ24+IDxwcmVmaXg+IDxzcGFkZGluZz4gPGdyb3VwZWRfZGlnaXRzPiA8ZGVjaW1hbD4gPHJlbWFpbmRlcj4gPHJwYWRkaW5nPiB8Ci0gICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCi0gICAgICAgc2lnbiBpcyBjb21wdXRlZCBmcm9tIGZvcm1hdC0+c2lnbiBhbmQgdGhlIGFjdHVhbAotICAgICAgIHNpZ24gb2YgdGhlIG51bWJlcgotCi0gICAgICAgcHJlZml4IGlzIGdpdmVuIChpdCdzIGZvciB0aGUgJzB4JyBwcmVmaXgpCi0KLSAgICAgICBkaWdpdHMgaXMgYWxyZWFkeSBrbm93bgotCi0gICAgICAgdGhlIHRvdGFsIHdpZHRoIGlzIGVpdGhlciBnaXZlbiwgb3IgY29tcHV0ZWQgZnJvbSB0aGUKLSAgICAgICBhY3R1YWwgZGlnaXRzCi0KLSAgICAgICBvbmx5IG9uZSBvZiBscGFkZGluZywgc3BhZGRpbmcsIGFuZCBycGFkZGluZyBjYW4gYmUgbm9uLXplcm8sCi0gICAgICAgYW5kIGl0J3MgY2FsY3VsYXRlZCBmcm9tIHRoZSB3aWR0aCBhbmQgb3RoZXIgZmllbGRzCi0gICAgKi8KLQotICAgIC8qIGNvbXB1dGUgdGhlIHZhcmlvdXMgcGFydHMgd2UncmUgZ29pbmcgdG8gd3JpdGUgKi8KLSAgICBzd2l0Y2ggKGZvcm1hdC0+c2lnbikgewotICAgIGNhc2UgJysnOgotICAgICAgICAvKiBhbHdheXMgcHV0IGEgKyBvciAtICovCi0gICAgICAgIHNwZWMtPm5fc2lnbiA9IDE7Ci0gICAgICAgIHNwZWMtPnNpZ24gPSAoc2lnbl9jaGFyID09ICctJyA/ICctJyA6ICcrJyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgJyAnOgotICAgICAgICBzcGVjLT5uX3NpZ24gPSAxOwotICAgICAgICBzcGVjLT5zaWduID0gKHNpZ25fY2hhciA9PSAnLScgPyAnLScgOiAnICcpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICAvKiBOb3Qgc3BlY2lmaWVkLCBvciB0aGUgZGVmYXVsdCAoLSkgKi8KLSAgICAgICAgaWYgKHNpZ25fY2hhciA9PSAnLScpIHsKLSAgICAgICAgICAgIHNwZWMtPm5fc2lnbiA9IDE7Ci0gICAgICAgICAgICBzcGVjLT5zaWduID0gJy0nOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyogVGhlIG51bWJlciBvZiBjaGFycyB1c2VkIGZvciBub24tZGlnaXRzIGFuZCBub24tcGFkZGluZy4gKi8KLSAgICBuX25vbl9kaWdpdF9ub25fcGFkZGluZyA9IHNwZWMtPm5fc2lnbiArIHNwZWMtPm5fcHJlZml4ICsgc3BlYy0+bl9kZWNpbWFsICsKLSAgICAgICAgc3BlYy0+bl9yZW1haW5kZXI7Ci0KLSAgICAvKiBtaW5fd2lkdGggY2FuIGdvIG5lZ2F0aXZlLCB0aGF0J3Mgb2theS4gZm9ybWF0LT53aWR0aCA9PSAtMSBtZWFucwotICAgICAgIHdlIGRvbid0IGNhcmUuICovCi0gICAgaWYgKGZvcm1hdC0+ZmlsbF9jaGFyID09ICcwJyAmJiBmb3JtYXQtPmFsaWduID09ICc9JykKLSAgICAgICAgc3BlYy0+bl9taW5fd2lkdGggPSBmb3JtYXQtPndpZHRoIC0gbl9ub25fZGlnaXRfbm9uX3BhZGRpbmc7Ci0gICAgZWxzZQotICAgICAgICBzcGVjLT5uX21pbl93aWR0aCA9IDA7Ci0KLSAgICBpZiAoc3BlYy0+bl9kaWdpdHMgPT0gMCkKLSAgICAgICAgLyogVGhpcyBjYXNlIG9ubHkgb2NjdXJzIHdoZW4gdXNpbmcgJ2MnIGZvcm1hdHRpbmcsIHdlIG5lZWQKLSAgICAgICAgICAgdG8gc3BlY2lhbCBjYXNlIGl0IGJlY2F1c2UgdGhlIGdyb3VwaW5nIGNvZGUgYWx3YXlzIHdhbnRzCi0gICAgICAgICAgIHRvIGhhdmUgYXQgbGVhc3Qgb25lIGNoYXJhY3Rlci4gKi8KLSAgICAgICAgc3BlYy0+bl9ncm91cGVkX2RpZ2l0cyA9IDA7Ci0gICAgZWxzZQotICAgICAgICBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzID0gU1RSSU5HTElCX0dST1VQSU5HKE5VTEwsIDAsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYy0+bl9kaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYy0+bl9taW5fd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlLT5ncm91cGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUtPnRob3VzYW5kc19zZXApOwotCi0gICAgLyogR2l2ZW4gdGhlIGRlc2lyZWQgd2lkdGggYW5kIHRoZSB0b3RhbCBvZiBkaWdpdCBhbmQgbm9uLWRpZ2l0Ci0gICAgICAgc3BhY2Ugd2UgY29uc3VtZSwgc2VlIGlmIHdlIG5lZWQgYW55IHBhZGRpbmcuIGZvcm1hdC0+d2lkdGggY2FuCi0gICAgICAgYmUgbmVnYXRpdmUgKG1lYW5pbmcgbm8gcGFkZGluZyksIGJ1dCB0aGlzIGNvZGUgc3RpbGwgd29ya3MgaW4KLSAgICAgICB0aGF0IGNhc2UuICovCi0gICAgbl9wYWRkaW5nID0gZm9ybWF0LT53aWR0aCAtCi0gICAgICAgICAgICAgICAgICAgICAgICAobl9ub25fZGlnaXRfbm9uX3BhZGRpbmcgKyBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzKTsKLSAgICBpZiAobl9wYWRkaW5nID4gMCkgewotICAgICAgICAvKiBTb21lIHBhZGRpbmcgaXMgbmVlZGVkLiBEZXRlcm1pbmUgaWYgaXQncyBsZWZ0LCBzcGFjZSwgb3IgcmlnaHQuICovCi0gICAgICAgIHN3aXRjaCAoZm9ybWF0LT5hbGlnbikgewotICAgICAgICBjYXNlICc8JzoKLSAgICAgICAgICAgIHNwZWMtPm5fcnBhZGRpbmcgPSBuX3BhZGRpbmc7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnXic6Ci0gICAgICAgICAgICBzcGVjLT5uX2xwYWRkaW5nID0gbl9wYWRkaW5nIC8gMjsKLSAgICAgICAgICAgIHNwZWMtPm5fcnBhZGRpbmcgPSBuX3BhZGRpbmcgLSBzcGVjLT5uX2xwYWRkaW5nOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJz0nOgotICAgICAgICAgICAgc3BlYy0+bl9zcGFkZGluZyA9IG5fcGFkZGluZzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICc+JzoKLSAgICAgICAgICAgIHNwZWMtPm5fbHBhZGRpbmcgPSBuX3BhZGRpbmc7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIC8qIFNob3VsZG4ndCBnZXQgaGVyZSwgYnV0IHRyZWF0IGl0IGFzICc+JyAqLwotICAgICAgICAgICAgc3BlYy0+bl9scGFkZGluZyA9IG5fcGFkZGluZzsKLSAgICAgICAgICAgIGFzc2VydCgwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBzcGVjLT5uX2xwYWRkaW5nICsgc3BlYy0+bl9zaWduICsgc3BlYy0+bl9wcmVmaXggKwotICAgICAgICBzcGVjLT5uX3NwYWRkaW5nICsgc3BlYy0+bl9ncm91cGVkX2RpZ2l0cyArIHNwZWMtPm5fZGVjaW1hbCArCi0gICAgICAgIHNwZWMtPm5fcmVtYWluZGVyICsgc3BlYy0+bl9ycGFkZGluZzsKLX0KLQotLyogRmlsbCBpbiB0aGUgZGlnaXQgcGFydHMgb2YgYSBudW1iZXJzJ3Mgc3RyaW5nIHJlcHJlc2VudGF0aW9uLAotICAgYXMgZGV0ZXJtaW5lZCBpbiBjYWxjX251bWJlcl93aWR0aHMoKS4KLSAgIE5vIGVycm9yIGNoZWNraW5nLCBzaW5jZSB3ZSBrbm93IHRoZSBidWZmZXIgaXMgdGhlIGNvcnJlY3Qgc2l6ZS4gKi8KLXN0YXRpYyB2b2lkCi1maWxsX251bWJlcihTVFJJTkdMSUJfQ0hBUiAqYnVmLCBjb25zdCBOdW1iZXJGaWVsZFdpZHRocyAqc3BlYywKLSAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpkaWdpdHMsIFB5X3NzaXplX3Qgbl9kaWdpdHMsCi0gICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqcHJlZml4LCBTVFJJTkdMSUJfQ0hBUiBmaWxsX2NoYXIsCi0gICAgICAgICAgICBMb2NhbGVJbmZvICpsb2NhbGUsIGludCB0b3VwcGVyKQotewotICAgIC8qIFVzZWQgdG8ga2VlcCB0cmFjayBvZiBkaWdpdHMsIGRlY2ltYWwsIGFuZCByZW1haW5kZXIuICovCi0gICAgU1RSSU5HTElCX0NIQVIgKnAgPSBkaWdpdHM7Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgUHlfc3NpemVfdCByOwotI2VuZGlmCi0KLSAgICBpZiAoc3BlYy0+bl9scGFkZGluZykgewotICAgICAgICBTVFJJTkdMSUJfRklMTChidWYsIGZpbGxfY2hhciwgc3BlYy0+bl9scGFkZGluZyk7Ci0gICAgICAgIGJ1ZiArPSBzcGVjLT5uX2xwYWRkaW5nOwotICAgIH0KLSAgICBpZiAoc3BlYy0+bl9zaWduID09IDEpIHsKLSAgICAgICAgKmJ1ZisrID0gc3BlYy0+c2lnbjsKLSAgICB9Ci0gICAgaWYgKHNwZWMtPm5fcHJlZml4KSB7Ci0gICAgICAgIG1lbW1vdmUoYnVmLAotICAgICAgICAgICAgICAgIHByZWZpeCwKLSAgICAgICAgICAgICAgICBzcGVjLT5uX3ByZWZpeCAqIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOwotICAgICAgICBpZiAodG91cHBlcikgewotICAgICAgICAgICAgUHlfc3NpemVfdCB0OwotICAgICAgICAgICAgZm9yICh0ID0gMDsgdCA8IHNwZWMtPm5fcHJlZml4OyArK3QpCi0gICAgICAgICAgICAgICAgYnVmW3RdID0gU1RSSU5HTElCX1RPVVBQRVIoYnVmW3RdKTsKLSAgICAgICAgfQotICAgICAgICBidWYgKz0gc3BlYy0+bl9wcmVmaXg7Ci0gICAgfQotICAgIGlmIChzcGVjLT5uX3NwYWRkaW5nKSB7Ci0gICAgICAgIFNUUklOR0xJQl9GSUxMKGJ1ZiwgZmlsbF9jaGFyLCBzcGVjLT5uX3NwYWRkaW5nKTsKLSAgICAgICAgYnVmICs9IHNwZWMtPm5fc3BhZGRpbmc7Ci0gICAgfQotCi0gICAgLyogT25seSBmb3IgdHlwZSAnYycgc3BlY2lhbCBjYXNlLCBpdCBoYXMgbm8gZGlnaXRzLiAqLwotICAgIGlmIChzcGVjLT5uX2RpZ2l0cyAhPSAwKSB7Ci0gICAgICAgIC8qIEZpbGwgdGhlIGRpZ2l0cyB3aXRoIEluc2VydFRob3VzYW5kc0dyb3VwaW5nLiAqLwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgciA9Ci0jZW5kaWYKLSAgICAgICAgICAgIFNUUklOR0xJQl9HUk9VUElORyhidWYsIHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHMsIGRpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjLT5uX2RpZ2l0cywgc3BlYy0+bl9taW5fd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlLT5ncm91cGluZywgbG9jYWxlLT50aG91c2FuZHNfc2VwKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIGFzc2VydChyID09IHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHMpOwotI2VuZGlmCi0gICAgICAgIHAgKz0gc3BlYy0+bl9kaWdpdHM7Ci0gICAgfQotICAgIGlmICh0b3VwcGVyKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgdDsKLSAgICAgICAgZm9yICh0ID0gMDsgdCA8IHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHM7ICsrdCkKLSAgICAgICAgICAgIGJ1Zlt0XSA9IFNUUklOR0xJQl9UT1VQUEVSKGJ1Zlt0XSk7Ci0gICAgfQotICAgIGJ1ZiArPSBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzOwotCi0gICAgaWYgKHNwZWMtPm5fZGVjaW1hbCkgewotICAgICAgICBQeV9zc2l6ZV90IHQ7Ci0gICAgICAgIGZvciAodCA9IDA7IHQgPCBzcGVjLT5uX2RlY2ltYWw7ICsrdCkKLSAgICAgICAgICAgIGJ1Zlt0XSA9IGxvY2FsZS0+ZGVjaW1hbF9wb2ludFt0XTsKLSAgICAgICAgYnVmICs9IHNwZWMtPm5fZGVjaW1hbDsKLSAgICAgICAgcCArPSAxOwotICAgIH0KLQotICAgIGlmIChzcGVjLT5uX3JlbWFpbmRlcikgewotICAgICAgICBtZW1jcHkoYnVmLCBwLCBzcGVjLT5uX3JlbWFpbmRlciAqIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOwotICAgICAgICBidWYgKz0gc3BlYy0+bl9yZW1haW5kZXI7Ci0gICAgICAgIHAgKz0gc3BlYy0+bl9yZW1haW5kZXI7Ci0gICAgfQotCi0gICAgaWYgKHNwZWMtPm5fcnBhZGRpbmcpIHsKLSAgICAgICAgU1RSSU5HTElCX0ZJTEwoYnVmLCBmaWxsX2NoYXIsIHNwZWMtPm5fcnBhZGRpbmcpOwotICAgICAgICBidWYgKz0gc3BlYy0+bl9ycGFkZGluZzsKLSAgICB9Ci19Ci0KLXN0YXRpYyBjaGFyIG5vX2dyb3VwaW5nWzFdID0ge0NIQVJfTUFYfTsKLQotLyogRmluZCB0aGUgZGVjaW1hbCBwb2ludCBjaGFyYWN0ZXIocz8pLCB0aG91c2FuZHNfc2VwYXJhdG9yKHM/KSwgYW5kCi0gICBncm91cGluZyBkZXNjcmlwdGlvbiwgZWl0aGVyIGZvciB0aGUgY3VycmVudCBsb2NhbGUgaWYgdHlwZSBpcwotICAgTFRfQ1VSUkVOVF9MT0NBTEUsIGEgaGFyZC1jb2RlZCBsb2NhbGUgaWYgTFRfREVGQVVMVF9MT0NBTEUsIG9yCi0gICBub25lIGlmIExUX05PX0xPQ0FMRS4gKi8KLXN0YXRpYyB2b2lkCi1nZXRfbG9jYWxlX2luZm8oaW50IHR5cGUsIExvY2FsZUluZm8gKmxvY2FsZV9pbmZvKQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgTFRfQ1VSUkVOVF9MT0NBTEU6IHsKLSAgICAgICAgc3RydWN0IGxjb252ICpsb2NhbGVfZGF0YSA9IGxvY2FsZWNvbnYoKTsKLSAgICAgICAgbG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgPSBsb2NhbGVfZGF0YS0+ZGVjaW1hbF9wb2ludDsKLSAgICAgICAgbG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXAgPSBsb2NhbGVfZGF0YS0+dGhvdXNhbmRzX3NlcDsKLSAgICAgICAgbG9jYWxlX2luZm8tPmdyb3VwaW5nID0gbG9jYWxlX2RhdGEtPmdyb3VwaW5nOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBMVF9ERUZBVUxUX0xPQ0FMRToKLSAgICAgICAgbG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgPSAiLiI7Ci0gICAgICAgIGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwID0gIiwiOwotICAgICAgICBsb2NhbGVfaW5mby0+Z3JvdXBpbmcgPSAiXDMiOyAvKiBHcm91cCBldmVyeSAzIGNoYXJhY3RlcnMuICBUaGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltcGxpY2l0KSB0cmFpbGluZyAwIG1lYW5zIHJlcGVhdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZpbml0ZWx5LiAqLwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExUX05PX0xPQ0FMRToKLSAgICAgICAgbG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgPSAiLiI7Ci0gICAgICAgIGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwID0gIiI7Ci0gICAgICAgIGxvY2FsZV9pbmZvLT5ncm91cGluZyA9IG5vX2dyb3VwaW5nOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBhc3NlcnQoMCk7Ci0gICAgfQotfQotCi0jZW5kaWYgLyogRk9STUFUX0ZMT0FUIHx8IEZPUk1BVF9MT05HIHx8IEZPUk1BVF9DT01QTEVYICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKiogc3RyaW5nIGZvcm1hdHRpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLWZvcm1hdF9zdHJpbmdfaW50ZXJuYWwoUHlPYmplY3QgKnZhbHVlLCBjb25zdCBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCkKLXsKLSAgICBQeV9zc2l6ZV90IGxwYWQ7Ci0gICAgUHlfc3NpemVfdCBycGFkOwotICAgIFB5X3NzaXplX3QgdG90YWw7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnA7Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBTVFJJTkdMSUJfTEVOKHZhbHVlKTsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLQotICAgIC8qIHNpZ24gaXMgbm90IGFsbG93ZWQgb24gc3RyaW5ncyAqLwotICAgIGlmIChmb3JtYXQtPnNpZ24gIT0gJ1wwJykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJTaWduIG5vdCBhbGxvd2VkIGluIHN0cmluZyBmb3JtYXQgc3BlY2lmaWVyIik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiBhbHRlcm5hdGUgaXMgbm90IGFsbG93ZWQgb24gc3RyaW5ncyAqLwotICAgIGlmIChmb3JtYXQtPmFsdGVybmF0ZSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJBbHRlcm5hdGUgZm9ybSAoIykgbm90IGFsbG93ZWQgaW4gc3RyaW5nIGZvcm1hdCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAic3BlY2lmaWVyIik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiAnPScgYWxpZ25tZW50IG5vdCBhbGxvd2VkIG9uIHN0cmluZ3MgKi8KLSAgICBpZiAoZm9ybWF0LT5hbGlnbiA9PSAnPScpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiJz0nIGFsaWdubWVudCBub3QgYWxsb3dlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiaW4gc3RyaW5nIGZvcm1hdCBzcGVjaWZpZXIiKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIC8qIGlmIHByZWNpc2lvbiBpcyBzcGVjaWZpZWQsIG91dHB1dCBubyBtb3JlIHRoYXQgZm9ybWF0LnByZWNpc2lvbgotICAgICAgIGNoYXJhY3RlcnMgKi8KLSAgICBpZiAoZm9ybWF0LT5wcmVjaXNpb24gPj0gMCAmJiBsZW4gPj0gZm9ybWF0LT5wcmVjaXNpb24pIHsKLSAgICAgICAgbGVuID0gZm9ybWF0LT5wcmVjaXNpb247Ci0gICAgfQotCi0gICAgY2FsY19wYWRkaW5nKGxlbiwgZm9ybWF0LT53aWR0aCwgZm9ybWF0LT5hbGlnbiwgJmxwYWQsICZycGFkLCAmdG90YWwpOwotCi0gICAgLyogYWxsb2NhdGUgdGhlIHJlc3VsdGluZyBzdHJpbmcgKi8KLSAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHRvdGFsKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIC8qIFdyaXRlIGludG8gdGhhdCBzcGFjZS4gRmlyc3QgdGhlIHBhZGRpbmcuICovCi0gICAgcCA9IGZpbGxfcGFkZGluZyhTVFJJTkdMSUJfU1RSKHJlc3VsdCksIGxlbiwKLSAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+ZmlsbF9jaGFyPT0nXDAnPycgJzpmb3JtYXQtPmZpbGxfY2hhciwKLSAgICAgICAgICAgICAgICAgICAgIGxwYWQsIHJwYWQpOwotCi0gICAgLyogVGhlbiB0aGUgc291cmNlIHN0cmluZy4gKi8KLSAgICBtZW1jcHkocCwgU1RSSU5HTElCX1NUUih2YWx1ZSksIGxlbiAqIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOwotCi1kb25lOgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKiBsb25nIGZvcm1hdHRpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWYgZGVmaW5lZCBGT1JNQVRfTE9ORyB8fCBkZWZpbmVkIEZPUk1BVF9JTlQKLXR5cGVkZWYgUHlPYmplY3QqCi0oKkludE9yTG9uZ1RvU3RyaW5nKShQeU9iamVjdCAqdmFsdWUsIGludCBiYXNlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLWZvcm1hdF9pbnRfb3JfbG9uZ19pbnRlcm5hbChQeU9iamVjdCAqdmFsdWUsIGNvbnN0IEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludE9yTG9uZ1RvU3RyaW5nIHRvc3RyaW5nKQotewotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICp0bXAgPSBOVUxMOwotICAgIFNUUklOR0xJQl9DSEFSICpwbnVtZXJpY19jaGFyczsKLSAgICBTVFJJTkdMSUJfQ0hBUiBudW1lcmljX2NoYXI7Ci0gICAgU1RSSU5HTElCX0NIQVIgc2lnbl9jaGFyID0gJ1wwJzsKLSAgICBQeV9zc2l6ZV90IG5fZGlnaXRzOyAgICAgICAvKiBjb3VudCBvZiBkaWdpdHMgbmVlZCBmcm9tIHRoZSBjb21wdXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyAqLwotICAgIFB5X3NzaXplX3Qgbl9yZW1haW5kZXIgPSAwOyAvKiBVc2VkIG9ubHkgZm9yICdjJyBmb3JtYXR0aW5nLCB3aGljaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWNlcyBub24tZGlnaXRzICovCi0gICAgUHlfc3NpemVfdCBuX3ByZWZpeCA9IDA7ICAgLyogQ291bnQgb2YgcHJlZml4IGNoYXJzLCAoZS5nLiwgJzB4JykgKi8KLSAgICBQeV9zc2l6ZV90IG5fdG90YWw7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnByZWZpeCA9IE5VTEw7Ci0gICAgTnVtYmVyRmllbGRXaWR0aHMgc3BlYzsKLSAgICBsb25nIHg7Ci0KLSAgICAvKiBMb2NhbGUgc2V0dGluZ3MsIGVpdGhlciBmcm9tIHRoZSBhY3R1YWwgbG9jYWxlIG9yCi0gICAgICAgZnJvbSBhIGhhcmQtY29kZSBwc2V1ZG8tbG9jYWxlICovCi0gICAgTG9jYWxlSW5mbyBsb2NhbGU7Ci0KLSAgICAvKiBubyBwcmVjaXNpb24gYWxsb3dlZCBvbiBpbnRlZ2VycyAqLwotICAgIGlmIChmb3JtYXQtPnByZWNpc2lvbiAhPSAtMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJQcmVjaXNpb24gbm90IGFsbG93ZWQgaW4gaW50ZWdlciBmb3JtYXQgc3BlY2lmaWVyIik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiBzcGVjaWFsIGNhc2UgZm9yIGNoYXJhY3RlciBmb3JtYXR0aW5nICovCi0gICAgaWYgKGZvcm1hdC0+dHlwZSA9PSAnYycpIHsKLSAgICAgICAgLyogZXJyb3IgdG8gc3BlY2lmeSBhIHNpZ24gKi8KLSAgICAgICAgaWYgKGZvcm1hdC0+c2lnbiAhPSAnXDAnKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2lnbiBub3QgYWxsb3dlZCB3aXRoIGludGVnZXIiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBmb3JtYXQgc3BlY2lmaWVyICdjJyIpOwotICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogdGFrZW4gZnJvbSB1bmljb2Rlb2JqZWN0LmMgZm9ybWF0Y2hhcigpICovCi0gICAgICAgIC8qIEludGVnZXIgaW5wdXQgdHJ1bmNhdGVkIHRvIGEgY2hhcmFjdGVyICovCi0vKiBYWFg6IHdvbid0IHdvcmsgZm9yIGludCAqLwotICAgICAgICB4ID0gUHlMb25nX0FzTG9uZyh2YWx1ZSk7Ci0gICAgICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgIGlmICh4IDwgMCB8fCB4ID4gMHgxMGZmZmYpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlYyBhcmcgbm90IGluIHJhbmdlKDB4MTEwMDAwKSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIih3aWRlIFB5dGhvbiBidWlsZCkiKTsKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgaWYgKHggPCAwIHx8IHggPiAweGZmZmYpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlYyBhcmcgbm90IGluIHJhbmdlKDB4MTAwMDApICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKG5hcnJvdyBQeXRob24gYnVpbGQpIik7Ci0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBudW1lcmljX2NoYXIgPSAoU1RSSU5HTElCX0NIQVIpeDsKLSAgICAgICAgcG51bWVyaWNfY2hhcnMgPSAmbnVtZXJpY19jaGFyOwotICAgICAgICBuX2RpZ2l0cyA9IDE7Ci0KLSAgICAgICAgLyogQXMgYSBzb3J0LW9mIGhhY2ssIHdlIHRlbGwgY2FsY19udW1iZXJfd2lkdGhzIHRoYXQgd2Ugb25seQotICAgICAgICAgICBoYXZlICJyZW1haW5kZXIiIGNoYXJhY3RlcnMuIGNhbGNfbnVtYmVyX3dpZHRocyB0aGlua3MKLSAgICAgICAgICAgdGhlc2UgYXJlIGNoYXJhY3RlcnMgdGhhdCBkb24ndCBnZXQgZm9ybWF0dGVkLCBvbmx5IGNvcGllZAotICAgICAgICAgICBpbnRvIHRoZSBvdXRwdXQgc3RyaW5nLiBXZSBkbyB0aGlzIGZvciAnYycgZm9ybWF0dGluZywKLSAgICAgICAgICAgYmVjYXVzZSB0aGUgY2hhcmFjdGVycyBhcmUgbGlrZWx5IHRvIGJlIG5vbi1kaWdpdHMuICovCi0gICAgICAgIG5fcmVtYWluZGVyID0gMTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGludCBiYXNlOwotICAgICAgICBpbnQgbGVhZGluZ19jaGFyc190b19za2lwID0gMDsgIC8qIE51bWJlciBvZiBjaGFyYWN0ZXJzIGFkZGVkIGJ5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlOdW1iZXJfVG9CYXNlIHRoYXQgd2Ugd2FudCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXAgb3Zlci4gKi8KLQotICAgICAgICAvKiBDb21wdXRlIHRoZSBiYXNlIGFuZCBob3cgbWFueSBjaGFyYWN0ZXJzIHdpbGwgYmUgYWRkZWQgYnkKLSAgICAgICAgICAgUHlOdW1iZXJfVG9CYXNlICovCi0gICAgICAgIHN3aXRjaCAoZm9ybWF0LT50eXBlKSB7Ci0gICAgICAgIGNhc2UgJ2InOgotICAgICAgICAgICAgYmFzZSA9IDI7Ci0gICAgICAgICAgICBsZWFkaW5nX2NoYXJzX3RvX3NraXAgPSAyOyAvKiAwYiAqLwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ28nOgotICAgICAgICAgICAgYmFzZSA9IDg7Ci0gICAgICAgICAgICBsZWFkaW5nX2NoYXJzX3RvX3NraXAgPSAyOyAvKiAwbyAqLwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3gnOgotICAgICAgICBjYXNlICdYJzoKLSAgICAgICAgICAgIGJhc2UgPSAxNjsKLSAgICAgICAgICAgIGxlYWRpbmdfY2hhcnNfdG9fc2tpcCA9IDI7IC8qIDB4ICovCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDogIC8qIHNob3VsZG4ndCBiZSBuZWVkZWQsIGJ1dCBzdG9wcyBhIGNvbXBpbGVyIHdhcm5pbmcgKi8KLSAgICAgICAgY2FzZSAnZCc6Ci0gICAgICAgIGNhc2UgJ24nOgotICAgICAgICAgICAgYmFzZSA9IDEwOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBUaGUgbnVtYmVyIG9mIHByZWZpeCBjaGFycyBpcyB0aGUgc2FtZSBhcyB0aGUgbGVhZGluZwotICAgICAgICAgICBjaGFycyB0byBza2lwICovCi0gICAgICAgIGlmIChmb3JtYXQtPmFsdGVybmF0ZSkKLSAgICAgICAgICAgIG5fcHJlZml4ID0gbGVhZGluZ19jaGFyc190b19za2lwOwotCi0gICAgICAgIC8qIERvIHRoZSBoYXJkIHBhcnQsIGNvbnZlcnRpbmcgdG8gYSBzdHJpbmcgaW4gYSBnaXZlbiBiYXNlICovCi0gICAgICAgIHRtcCA9IHRvc3RyaW5nKHZhbHVlLCBiYXNlKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBkb25lOwotCi0gICAgICAgIHBudW1lcmljX2NoYXJzID0gU1RSSU5HTElCX1NUUih0bXApOwotICAgICAgICBuX2RpZ2l0cyA9IFNUUklOR0xJQl9MRU4odG1wKTsKLQotICAgICAgICBwcmVmaXggPSBwbnVtZXJpY19jaGFyczsKLQotICAgICAgICAvKiBSZW1lbWJlciBub3QgdG8gbW9kaWZ5IHdoYXQgcG51bWVyaWNfY2hhcnMgcG9pbnRzIHRvLiAgaXQKLSAgICAgICAgICAgbWlnaHQgYmUgaW50ZXJuZWQuICBPbmx5IG1vZGlmeSBpdCBhZnRlciB3ZSBjb3B5IGl0IGludG8gYQotICAgICAgICAgICBuZXdseSBhbGxvY2F0ZWQgb3V0cHV0IGJ1ZmZlci4gKi8KLQotICAgICAgICAvKiBJcyBhIHNpZ24gY2hhcmFjdGVyIHByZXNlbnQgaW4gdGhlIG91dHB1dD8gIElmIHNvLCByZW1lbWJlciBpdAotICAgICAgICAgICBhbmQgc2tpcCBpdCAqLwotICAgICAgICBpZiAocG51bWVyaWNfY2hhcnNbMF0gPT0gJy0nKSB7Ci0gICAgICAgICAgICBzaWduX2NoYXIgPSBwbnVtZXJpY19jaGFyc1swXTsKLSAgICAgICAgICAgICsrcHJlZml4OwotICAgICAgICAgICAgKytsZWFkaW5nX2NoYXJzX3RvX3NraXA7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBTa2lwIG92ZXIgdGhlIGxlYWRpbmcgY2hhcnMgKDB4LCAwYiwgZXRjLikgKi8KLSAgICAgICAgbl9kaWdpdHMgLT0gbGVhZGluZ19jaGFyc190b19za2lwOwotICAgICAgICBwbnVtZXJpY19jaGFycyArPSBsZWFkaW5nX2NoYXJzX3RvX3NraXA7Ci0gICAgfQotCi0gICAgLyogRGV0ZXJtaW5lIHRoZSBncm91cGluZywgc2VwYXJhdG9yLCBhbmQgZGVjaW1hbCBwb2ludCwgaWYgYW55LiAqLwotICAgIGdldF9sb2NhbGVfaW5mbyhmb3JtYXQtPnR5cGUgPT0gJ24nID8gTFRfQ1VSUkVOVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA/Ci0gICAgICAgICAgICAgICAgICAgICBMVF9ERUZBVUxUX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgICBMVF9OT19MT0NBTEUpLAotICAgICAgICAgICAgICAgICAgICAmbG9jYWxlKTsKLQotICAgIC8qIENhbGN1bGF0ZSBob3cgbXVjaCBtZW1vcnkgd2UnbGwgbmVlZC4gKi8KLSAgICBuX3RvdGFsID0gY2FsY19udW1iZXJfd2lkdGhzKCZzcGVjLCBuX3ByZWZpeCwgc2lnbl9jaGFyLCBwbnVtZXJpY19jaGFycywKLSAgICAgICAgICAgICAgICAgICAgICAgbl9kaWdpdHMsIG5fcmVtYWluZGVyLCAwLCAmbG9jYWxlLCBmb3JtYXQpOwotCi0gICAgLyogQWxsb2NhdGUgdGhlIG1lbW9yeS4gKi8KLSAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIG5fdG90YWwpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICAvKiBQb3B1bGF0ZSB0aGUgbWVtb3J5LiAqLwotICAgIGZpbGxfbnVtYmVyKFNUUklOR0xJQl9TVFIocmVzdWx0KSwgJnNwZWMsIHBudW1lcmljX2NoYXJzLCBuX2RpZ2l0cywKLSAgICAgICAgICAgICAgICBwcmVmaXgsIGZvcm1hdC0+ZmlsbF9jaGFyID09ICdcMCcgPyAnICcgOiBmb3JtYXQtPmZpbGxfY2hhciwKLSAgICAgICAgICAgICAgICAmbG9jYWxlLCBmb3JtYXQtPnR5cGUgPT0gJ1gnKTsKLQotZG9uZToKLSAgICBQeV9YREVDUkVGKHRtcCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNlbmRpZiAvKiBkZWZpbmVkIEZPUk1BVF9MT05HIHx8IGRlZmluZWQgRk9STUFUX0lOVCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqIGZsb2F0IGZvcm1hdHRpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZmRlZiBGT1JNQVRfRkxPQVQKLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotc3RhdGljIHZvaWQKLXN0cnRvdW5pY29kZShQeV9VTklDT0RFICpidWZmZXIsIGNvbnN0IGNoYXIgKmNoYXJidWZmZXIsIFB5X3NzaXplX3QgbGVuKQotewotICAgIFB5X3NzaXplX3QgaTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpCi0gICAgICAgIGJ1ZmZlcltpXSA9IChQeV9VTklDT0RFKWNoYXJidWZmZXJbaV07Ci19Ci0jZW5kaWYKLQotLyogbXVjaCBvZiB0aGlzIGlzIHRha2VuIGZyb20gdW5pY29kZW9iamVjdC5jICovCi1zdGF0aWMgUHlPYmplY3QgKgotZm9ybWF0X2Zsb2F0X2ludGVybmFsKFB5T2JqZWN0ICp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCkKLXsKLSAgICBjaGFyICpidWYgPSBOVUxMOyAgICAgICAvKiBidWZmZXIgcmV0dXJuZWQgZnJvbSBQeU9TX2RvdWJsZV90b19zdHJpbmcgKi8KLSAgICBQeV9zc2l6ZV90IG5fZGlnaXRzOwotICAgIFB5X3NzaXplX3Qgbl9yZW1haW5kZXI7Ci0gICAgUHlfc3NpemVfdCBuX3RvdGFsOwotICAgIGludCBoYXNfZGVjaW1hbDsKLSAgICBkb3VibGUgdmFsOwotICAgIFB5X3NzaXplX3QgcHJlY2lzaW9uID0gZm9ybWF0LT5wcmVjaXNpb247Ci0gICAgUHlfc3NpemVfdCBkZWZhdWx0X3ByZWNpc2lvbiA9IDY7Ci0gICAgU1RSSU5HTElCX0NIQVIgdHlwZSA9IGZvcm1hdC0+dHlwZTsKLSAgICBpbnQgYWRkX3BjdCA9IDA7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnA7Ci0gICAgTnVtYmVyRmllbGRXaWR0aHMgc3BlYzsKLSAgICBpbnQgZmxhZ3MgPSAwOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIFNUUklOR0xJQl9DSEFSIHNpZ25fY2hhciA9ICdcMCc7Ci0gICAgaW50IGZsb2F0X3R5cGU7IC8qIFVzZWQgdG8gc2VlIGlmIHdlIGhhdmUgYSBuYW4sIGluZiwgb3IgcmVndWxhciBmbG9hdC4gKi8KLQotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi0gICAgUHlfVU5JQ09ERSAqdW5pY29kZV90bXAgPSBOVUxMOwotI2VuZGlmCi0KLSAgICAvKiBMb2NhbGUgc2V0dGluZ3MsIGVpdGhlciBmcm9tIHRoZSBhY3R1YWwgbG9jYWxlIG9yCi0gICAgICAgZnJvbSBhIGhhcmQtY29kZSBwc2V1ZG8tbG9jYWxlICovCi0gICAgTG9jYWxlSW5mbyBsb2NhbGU7Ci0KLSAgICBpZiAoZm9ybWF0LT5hbHRlcm5hdGUpCi0gICAgICAgIGZsYWdzIHw9IFB5X0RUU0ZfQUxUOwotCi0gICAgaWYgKHR5cGUgPT0gJ1wwJykgewotICAgICAgICAvKiBPbWl0dGVkIHR5cGUgc3BlY2lmaWVyLiAgQmVoYXZlcyBpbiB0aGUgc2FtZSB3YXkgYXMgcmVwcih4KQotICAgICAgICAgICBhbmQgc3RyKHgpIGlmIG5vIHByZWNpc2lvbiBpcyBnaXZlbiwgZWxzZSBsaWtlICdnJywgYnV0IHdpdGgKLSAgICAgICAgICAgYXQgbGVhc3Qgb25lIGRpZ2l0IGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LiAqLwotICAgICAgICBmbGFncyB8PSBQeV9EVFNGX0FERF9ET1RfMDsKLSAgICAgICAgdHlwZSA9ICdyJzsKLSAgICAgICAgZGVmYXVsdF9wcmVjaXNpb24gPSAwOwotICAgIH0KLQotICAgIGlmICh0eXBlID09ICduJykKLSAgICAgICAgLyogJ24nIGlzIHRoZSBzYW1lIGFzICdnJywgZXhjZXB0IGZvciB0aGUgbG9jYWxlIHVzZWQgdG8KLSAgICAgICAgICAgZm9ybWF0IHRoZSByZXN1bHQuIFdlIHRha2UgY2FyZSBvZiB0aGF0IGxhdGVyLiAqLwotICAgICAgICB0eXBlID0gJ2cnOwotCi0gICAgdmFsID0gUHlGbG9hdF9Bc0RvdWJsZSh2YWx1ZSk7Ci0gICAgaWYgKHZhbCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIGlmICh0eXBlID09ICclJykgewotICAgICAgICB0eXBlID0gJ2YnOwotICAgICAgICB2YWwgKj0gMTAwOwotICAgICAgICBhZGRfcGN0ID0gMTsKLSAgICB9Ci0KLSAgICBpZiAocHJlY2lzaW9uIDwgMCkKLSAgICAgICAgcHJlY2lzaW9uID0gZGVmYXVsdF9wcmVjaXNpb247Ci0gICAgZWxzZSBpZiAodHlwZSA9PSAncicpCi0gICAgICAgIHR5cGUgPSAnZyc7Ci0KLSAgICAvKiBDYXN0ICJ0eXBlIiwgYmVjYXVzZSBpZiB3ZSdyZSBpbiB1bmljb2RlIHdlIG5lZWQgdG8gcGFzcyBhCi0gICAgICAgOC1iaXQgY2hhci4gVGhpcyBpcyBzYWZlLCBiZWNhdXNlIHdlJ3ZlIHJlc3RyaWN0ZWQgd2hhdCAidHlwZSIKLSAgICAgICBjYW4gYmUuICovCi0gICAgYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKHZhbCwgKGNoYXIpdHlwZSwgcHJlY2lzaW9uLCBmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZsb2F0X3R5cGUpOwotICAgIGlmIChidWYgPT0gTlVMTCkKLSAgICAgICAgZ290byBkb25lOwotICAgIG5fZGlnaXRzID0gc3RybGVuKGJ1Zik7Ci0KLSAgICBpZiAoYWRkX3BjdCkgewotICAgICAgICAvKiBXZSBrbm93IHRoYXQgYnVmIGhhcyBhIHRyYWlsaW5nIHplcm8gKHNpbmNlIHdlIGp1c3QgY2FsbGVkCi0gICAgICAgICAgIHN0cmxlbigpIG9uIGl0KSwgYW5kIHdlIGRvbid0IHVzZSB0aGF0IGZhY3QgYW55IG1vcmUuIFNvIHdlCi0gICAgICAgICAgIGNhbiBqdXN0IHdyaXRlIG92ZXIgdGhlIHRyYWlsaW5nIHplcm8uICovCi0gICAgICAgIGJ1ZltuX2RpZ2l0c10gPSAnJSc7Ci0gICAgICAgIG5fZGlnaXRzICs9IDE7Ci0gICAgfQotCi0gICAgLyogU2luY2UgdGhlcmUgaXMgbm8gdW5pY29kZSB2ZXJzaW9uIG9mIFB5T1NfZG91YmxlX3RvX3N0cmluZywKLSAgICAgICBqdXN0IHVzZSB0aGUgOCBiaXQgdmVyc2lvbiBhbmQgdGhlbiBjb252ZXJ0IHRvIHVuaWNvZGUuICovCi0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSAgICB1bmljb2RlX3RtcCA9IChQeV9VTklDT0RFKilQeU1lbV9NYWxsb2MoKG5fZGlnaXRzKSpzaXplb2YoUHlfVU5JQ09ERSkpOwotICAgIGlmICh1bmljb2RlX3RtcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0gICAgc3RydG91bmljb2RlKHVuaWNvZGVfdG1wLCBidWYsIG5fZGlnaXRzKTsKLSAgICBwID0gdW5pY29kZV90bXA7Ci0jZWxzZQotICAgIHAgPSBidWY7Ci0jZW5kaWYKLQotICAgIC8qIElzIGEgc2lnbiBjaGFyYWN0ZXIgcHJlc2VudCBpbiB0aGUgb3V0cHV0PyAgSWYgc28sIHJlbWVtYmVyIGl0Ci0gICAgICAgYW5kIHNraXAgaXQgKi8KLSAgICBpZiAoKnAgPT0gJy0nKSB7Ci0gICAgICAgIHNpZ25fY2hhciA9ICpwOwotICAgICAgICArK3A7Ci0gICAgICAgIC0tbl9kaWdpdHM7Ci0gICAgfQotCi0gICAgLyogRGV0ZXJtaW5lIGlmIHdlIGhhdmUgYW55ICJyZW1haW5kZXIiIChhZnRlciB0aGUgZGlnaXRzLCBtaWdodCBpbmNsdWRlCi0gICAgICAgZGVjaW1hbCBvciBleHBvbmVudCBvciBib3RoIChvciBuZWl0aGVyKSkgKi8KLSAgICBwYXJzZV9udW1iZXIocCwgbl9kaWdpdHMsICZuX3JlbWFpbmRlciwgJmhhc19kZWNpbWFsKTsKLQotICAgIC8qIERldGVybWluZSB0aGUgZ3JvdXBpbmcsIHNlcGFyYXRvciwgYW5kIGRlY2ltYWwgcG9pbnQsIGlmIGFueS4gKi8KLSAgICBnZXRfbG9jYWxlX2luZm8oZm9ybWF0LT50eXBlID09ICduJyA/IExUX0NVUlJFTlRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPwotICAgICAgICAgICAgICAgICAgICAgTFRfREVGQVVMVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAgTFRfTk9fTE9DQUxFKSwKLSAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSk7Ci0KLSAgICAvKiBDYWxjdWxhdGUgaG93IG11Y2ggbWVtb3J5IHdlJ2xsIG5lZWQuICovCi0gICAgbl90b3RhbCA9IGNhbGNfbnVtYmVyX3dpZHRocygmc3BlYywgMCwgc2lnbl9jaGFyLCBwLCBuX2RpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fcmVtYWluZGVyLCBoYXNfZGVjaW1hbCwgJmxvY2FsZSwgZm9ybWF0KTsKLQotICAgIC8qIEFsbG9jYXRlIHRoZSBtZW1vcnkuICovCi0gICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCBuX3RvdGFsKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIC8qIFBvcHVsYXRlIHRoZSBtZW1vcnkuICovCi0gICAgZmlsbF9udW1iZXIoU1RSSU5HTElCX1NUUihyZXN1bHQpLCAmc3BlYywgcCwgbl9kaWdpdHMsIE5VTEwsCi0gICAgICAgICAgICAgICAgZm9ybWF0LT5maWxsX2NoYXIgPT0gJ1wwJyA/ICcgJyA6IGZvcm1hdC0+ZmlsbF9jaGFyLCAmbG9jYWxlLAotICAgICAgICAgICAgICAgIDApOwotCi1kb25lOgotICAgIFB5TWVtX0ZyZWUoYnVmKTsKLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotICAgIFB5TWVtX0ZyZWUodW5pY29kZV90bXApOwotI2VuZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNlbmRpZiAvKiBGT1JNQVRfRkxPQVQgKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKiBjb21wbGV4IGZvcm1hdHRpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWZkZWYgRk9STUFUX0NPTVBMRVgKLQotc3RhdGljIFB5T2JqZWN0ICoKLWZvcm1hdF9jb21wbGV4X2ludGVybmFsKFB5T2JqZWN0ICp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0KQotewotICAgIGRvdWJsZSByZTsKLSAgICBkb3VibGUgaW07Ci0gICAgY2hhciAqcmVfYnVmID0gTlVMTDsgICAgICAgLyogYnVmZmVyIHJldHVybmVkIGZyb20gUHlPU19kb3VibGVfdG9fc3RyaW5nICovCi0gICAgY2hhciAqaW1fYnVmID0gTlVMTDsgICAgICAgLyogYnVmZmVyIHJldHVybmVkIGZyb20gUHlPU19kb3VibGVfdG9fc3RyaW5nICovCi0KLSAgICBJbnRlcm5hbEZvcm1hdFNwZWMgdG1wX2Zvcm1hdCA9ICpmb3JtYXQ7Ci0gICAgUHlfc3NpemVfdCBuX3JlX2RpZ2l0czsKLSAgICBQeV9zc2l6ZV90IG5faW1fZGlnaXRzOwotICAgIFB5X3NzaXplX3Qgbl9yZV9yZW1haW5kZXI7Ci0gICAgUHlfc3NpemVfdCBuX2ltX3JlbWFpbmRlcjsKLSAgICBQeV9zc2l6ZV90IG5fcmVfdG90YWw7Ci0gICAgUHlfc3NpemVfdCBuX2ltX3RvdGFsOwotICAgIGludCByZV9oYXNfZGVjaW1hbDsKLSAgICBpbnQgaW1faGFzX2RlY2ltYWw7Ci0gICAgUHlfc3NpemVfdCBwcmVjaXNpb24gPSBmb3JtYXQtPnByZWNpc2lvbjsKLSAgICBQeV9zc2l6ZV90IGRlZmF1bHRfcHJlY2lzaW9uID0gNjsKLSAgICBTVFJJTkdMSUJfQ0hBUiB0eXBlID0gZm9ybWF0LT50eXBlOwotICAgIFNUUklOR0xJQl9DSEFSICpwX3JlOwotICAgIFNUUklOR0xJQl9DSEFSICpwX2ltOwotICAgIE51bWJlckZpZWxkV2lkdGhzIHJlX3NwZWM7Ci0gICAgTnVtYmVyRmllbGRXaWR0aHMgaW1fc3BlYzsKLSAgICBpbnQgZmxhZ3MgPSAwOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIFNUUklOR0xJQl9DSEFSICpwOwotICAgIFNUUklOR0xJQl9DSEFSIHJlX3NpZ25fY2hhciA9ICdcMCc7Ci0gICAgU1RSSU5HTElCX0NIQVIgaW1fc2lnbl9jaGFyID0gJ1wwJzsKLSAgICBpbnQgcmVfZmxvYXRfdHlwZTsgLyogVXNlZCB0byBzZWUgaWYgd2UgaGF2ZSBhIG5hbiwgaW5mLCBvciByZWd1bGFyIGZsb2F0LiAqLwotICAgIGludCBpbV9mbG9hdF90eXBlOwotICAgIGludCBhZGRfcGFyZW5zID0gMDsKLSAgICBpbnQgc2tpcF9yZSA9IDA7Ci0gICAgUHlfc3NpemVfdCBscGFkOwotICAgIFB5X3NzaXplX3QgcnBhZDsKLSAgICBQeV9zc2l6ZV90IHRvdGFsOwotCi0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSAgICBQeV9VTklDT0RFICpyZV91bmljb2RlX3RtcCA9IE5VTEw7Ci0gICAgUHlfVU5JQ09ERSAqaW1fdW5pY29kZV90bXAgPSBOVUxMOwotI2VuZGlmCi0KLSAgICAvKiBMb2NhbGUgc2V0dGluZ3MsIGVpdGhlciBmcm9tIHRoZSBhY3R1YWwgbG9jYWxlIG9yCi0gICAgICAgZnJvbSBhIGhhcmQtY29kZSBwc2V1ZG8tbG9jYWxlICovCi0gICAgTG9jYWxlSW5mbyBsb2NhbGU7Ci0KLSAgICAvKiBaZXJvIHBhZGRpbmcgaXMgbm90IGFsbG93ZWQuICovCi0gICAgaWYgKGZvcm1hdC0+ZmlsbF9jaGFyID09ICcwJykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJaZXJvIHBhZGRpbmcgaXMgbm90IGFsbG93ZWQgaW4gY29tcGxleCBmb3JtYXQgIgotICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllciIpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgLyogTmVpdGhlciBpcyAnPScgYWxpZ25tZW50IC4gKi8KLSAgICBpZiAoZm9ybWF0LT5hbGlnbiA9PSAnPScpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiJz0nIGFsaWdubWVudCBmbGFnIGlzIG5vdCBhbGxvd2VkIGluIGNvbXBsZXggZm9ybWF0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJzcGVjaWZpZXIiKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIHJlID0gUHlDb21wbGV4X1JlYWxBc0RvdWJsZSh2YWx1ZSk7Ci0gICAgaWYgKHJlID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZ290byBkb25lOwotICAgIGltID0gUHlDb21wbGV4X0ltYWdBc0RvdWJsZSh2YWx1ZSk7Ci0gICAgaWYgKGltID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgaWYgKGZvcm1hdC0+YWx0ZXJuYXRlKQotICAgICAgICBmbGFncyB8PSBQeV9EVFNGX0FMVDsKLQotICAgIGlmICh0eXBlID09ICdcMCcpIHsKLSAgICAgICAgLyogT21pdHRlZCB0eXBlIHNwZWNpZmllci4gU2hvdWxkIGJlIGxpa2Ugc3RyKHNlbGYpLiAqLwotICAgICAgICB0eXBlID0gJ3InOwotICAgICAgICBkZWZhdWx0X3ByZWNpc2lvbiA9IDA7Ci0gICAgICAgIGlmIChyZSA9PSAwLjAgJiYgY29weXNpZ24oMS4wLCByZSkgPT0gMS4wKQotICAgICAgICAgICAgc2tpcF9yZSA9IDE7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZF9wYXJlbnMgPSAxOwotICAgIH0KLQotICAgIGlmICh0eXBlID09ICduJykKLSAgICAgICAgLyogJ24nIGlzIHRoZSBzYW1lIGFzICdnJywgZXhjZXB0IGZvciB0aGUgbG9jYWxlIHVzZWQgdG8KLSAgICAgICAgICAgZm9ybWF0IHRoZSByZXN1bHQuIFdlIHRha2UgY2FyZSBvZiB0aGF0IGxhdGVyLiAqLwotICAgICAgICB0eXBlID0gJ2cnOwotCi0gICAgaWYgKHByZWNpc2lvbiA8IDApCi0gICAgICAgIHByZWNpc2lvbiA9IGRlZmF1bHRfcHJlY2lzaW9uOwotICAgIGVsc2UgaWYgKHR5cGUgPT0gJ3InKQotICAgICAgICB0eXBlID0gJ2cnOwotCi0gICAgLyogQ2FzdCAidHlwZSIsIGJlY2F1c2UgaWYgd2UncmUgaW4gdW5pY29kZSB3ZSBuZWVkIHRvIHBhc3MgYQotICAgICAgIDgtYml0IGNoYXIuIFRoaXMgaXMgc2FmZSwgYmVjYXVzZSB3ZSd2ZSByZXN0cmljdGVkIHdoYXQgInR5cGUiCi0gICAgICAgY2FuIGJlLiAqLwotICAgIHJlX2J1ZiA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyhyZSwgKGNoYXIpdHlwZSwgcHJlY2lzaW9uLCBmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlX2Zsb2F0X3R5cGUpOwotICAgIGlmIChyZV9idWYgPT0gTlVMTCkKLSAgICAgICAgZ290byBkb25lOwotICAgIGltX2J1ZiA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyhpbSwgKGNoYXIpdHlwZSwgcHJlY2lzaW9uLCBmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmltX2Zsb2F0X3R5cGUpOwotICAgIGlmIChpbV9idWYgPT0gTlVMTCkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgbl9yZV9kaWdpdHMgPSBzdHJsZW4ocmVfYnVmKTsKLSAgICBuX2ltX2RpZ2l0cyA9IHN0cmxlbihpbV9idWYpOwotCi0gICAgLyogU2luY2UgdGhlcmUgaXMgbm8gdW5pY29kZSB2ZXJzaW9uIG9mIFB5T1NfZG91YmxlX3RvX3N0cmluZywKLSAgICAgICBqdXN0IHVzZSB0aGUgOCBiaXQgdmVyc2lvbiBhbmQgdGhlbiBjb252ZXJ0IHRvIHVuaWNvZGUuICovCi0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSAgICByZV91bmljb2RlX3RtcCA9IChQeV9VTklDT0RFKilQeU1lbV9NYWxsb2MoKG5fcmVfZGlnaXRzKSpzaXplb2YoUHlfVU5JQ09ERSkpOwotICAgIGlmIChyZV91bmljb2RlX3RtcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0gICAgc3RydG91bmljb2RlKHJlX3VuaWNvZGVfdG1wLCByZV9idWYsIG5fcmVfZGlnaXRzKTsKLSAgICBwX3JlID0gcmVfdW5pY29kZV90bXA7Ci0KLSAgICBpbV91bmljb2RlX3RtcCA9IChQeV9VTklDT0RFKilQeU1lbV9NYWxsb2MoKG5faW1fZGlnaXRzKSpzaXplb2YoUHlfVU5JQ09ERSkpOwotICAgIGlmIChpbV91bmljb2RlX3RtcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0gICAgc3RydG91bmljb2RlKGltX3VuaWNvZGVfdG1wLCBpbV9idWYsIG5faW1fZGlnaXRzKTsKLSAgICBwX2ltID0gaW1fdW5pY29kZV90bXA7Ci0jZWxzZQotICAgIHBfcmUgPSByZV9idWY7Ci0gICAgcF9pbSA9IGltX2J1ZjsKLSNlbmRpZgotCi0gICAgLyogSXMgYSBzaWduIGNoYXJhY3RlciBwcmVzZW50IGluIHRoZSBvdXRwdXQ/ICBJZiBzbywgcmVtZW1iZXIgaXQKLSAgICAgICBhbmQgc2tpcCBpdCAqLwotICAgIGlmICgqcF9yZSA9PSAnLScpIHsKLSAgICAgICAgcmVfc2lnbl9jaGFyID0gKnBfcmU7Ci0gICAgICAgICsrcF9yZTsKLSAgICAgICAgLS1uX3JlX2RpZ2l0czsKLSAgICB9Ci0gICAgaWYgKCpwX2ltID09ICctJykgewotICAgICAgICBpbV9zaWduX2NoYXIgPSAqcF9pbTsKLSAgICAgICAgKytwX2ltOwotICAgICAgICAtLW5faW1fZGlnaXRzOwotICAgIH0KLQotICAgIC8qIERldGVybWluZSBpZiB3ZSBoYXZlIGFueSAicmVtYWluZGVyIiAoYWZ0ZXIgdGhlIGRpZ2l0cywgbWlnaHQgaW5jbHVkZQotICAgICAgIGRlY2ltYWwgb3IgZXhwb25lbnQgb3IgYm90aCAob3IgbmVpdGhlcikpICovCi0gICAgcGFyc2VfbnVtYmVyKHBfcmUsIG5fcmVfZGlnaXRzLCAmbl9yZV9yZW1haW5kZXIsICZyZV9oYXNfZGVjaW1hbCk7Ci0gICAgcGFyc2VfbnVtYmVyKHBfaW0sIG5faW1fZGlnaXRzLCAmbl9pbV9yZW1haW5kZXIsICZpbV9oYXNfZGVjaW1hbCk7Ci0KLSAgICAvKiBEZXRlcm1pbmUgdGhlIGdyb3VwaW5nLCBzZXBhcmF0b3IsIGFuZCBkZWNpbWFsIHBvaW50LCBpZiBhbnkuICovCi0gICAgZ2V0X2xvY2FsZV9pbmZvKGZvcm1hdC0+dHlwZSA9PSAnbicgPyBMVF9DVVJSRU5UX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID8KLSAgICAgICAgICAgICAgICAgICAgIExUX0RFRkFVTFRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgIExUX05PX0xPQ0FMRSksCi0gICAgICAgICAgICAgICAgICAgICZsb2NhbGUpOwotCi0gICAgLyogVHVybiBvZmYgYW55IHBhZGRpbmcuIFdlJ2xsIGRvIGl0IGxhdGVyIGFmdGVyIHdlJ3ZlIGNvbXBvc2VkCi0gICAgICAgdGhlIG51bWJlcnMgd2l0aG91dCBwYWRkaW5nLiAqLwotICAgIHRtcF9mb3JtYXQuZmlsbF9jaGFyID0gJ1wwJzsKLSAgICB0bXBfZm9ybWF0LmFsaWduID0gJzwnOwotICAgIHRtcF9mb3JtYXQud2lkdGggPSAtMTsKLQotICAgIC8qIENhbGN1bGF0ZSBob3cgbXVjaCBtZW1vcnkgd2UnbGwgbmVlZC4gKi8KLSAgICBuX3JlX3RvdGFsID0gY2FsY19udW1iZXJfd2lkdGhzKCZyZV9zcGVjLCAwLCByZV9zaWduX2NoYXIsIHBfcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX3JlX2RpZ2l0cywgbl9yZV9yZW1haW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZV9oYXNfZGVjaW1hbCwgJmxvY2FsZSwgJnRtcF9mb3JtYXQpOwotCi0gICAgLyogU2FtZSBmb3JtYXR0aW5nLCBidXQgYWx3YXlzIGluY2x1ZGUgYSBzaWduLCB1bmxlc3MgdGhlIHJlYWwgcGFydCBpcwotICAgICAqIGdvaW5nIHRvIGJlIG9taXR0ZWQsIGluIHdoaWNoIGNhc2Ugd2UgdXNlIHdoYXRldmVyIHNpZ24gY29udmVudGlvbiB3YXMKLSAgICAgKiByZXF1ZXN0ZWQgYnkgdGhlIG9yaWdpbmFsIGZvcm1hdC4gKi8KLSAgICBpZiAoIXNraXBfcmUpCi0gICAgICAgIHRtcF9mb3JtYXQuc2lnbiA9ICcrJzsKLSAgICBuX2ltX3RvdGFsID0gY2FsY19udW1iZXJfd2lkdGhzKCZpbV9zcGVjLCAwLCBpbV9zaWduX2NoYXIsIHBfaW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX2ltX2RpZ2l0cywgbl9pbV9yZW1haW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbV9oYXNfZGVjaW1hbCwgJmxvY2FsZSwgJnRtcF9mb3JtYXQpOwotCi0gICAgaWYgKHNraXBfcmUpCi0gICAgICAgIG5fcmVfdG90YWwgPSAwOwotCi0gICAgLyogQWRkIDEgZm9yIHRoZSAnaicsIGFuZCBvcHRpb25hbGx5IDIgZm9yIHBhcmVucy4gKi8KLSAgICBjYWxjX3BhZGRpbmcobl9yZV90b3RhbCArIG5faW1fdG90YWwgKyAxICsgYWRkX3BhcmVucyAqIDIsCi0gICAgICAgICAgICAgICAgIGZvcm1hdC0+d2lkdGgsIGZvcm1hdC0+YWxpZ24sICZscGFkLCAmcnBhZCwgJnRvdGFsKTsKLQotICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgdG90YWwpOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgLyogUG9wdWxhdGUgdGhlIG1lbW9yeS4gRmlyc3QsIHRoZSBwYWRkaW5nLiAqLwotICAgIHAgPSBmaWxsX3BhZGRpbmcoU1RSSU5HTElCX1NUUihyZXN1bHQpLAotICAgICAgICAgICAgICAgICAgICAgbl9yZV90b3RhbCArIG5faW1fdG90YWwgKyAxICsgYWRkX3BhcmVucyAqIDIsCi0gICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPmZpbGxfY2hhcj09J1wwJyA/ICcgJyA6IGZvcm1hdC0+ZmlsbF9jaGFyLAotICAgICAgICAgICAgICAgICAgICAgbHBhZCwgcnBhZCk7Ci0KLSAgICBpZiAoYWRkX3BhcmVucykKLSAgICAgICAgKnArKyA9ICcoJzsKLQotICAgIGlmICghc2tpcF9yZSkgewotICAgICAgICBmaWxsX251bWJlcihwLCAmcmVfc3BlYywgcF9yZSwgbl9yZV9kaWdpdHMsIE5VTEwsIDAsICZsb2NhbGUsIDApOwotICAgICAgICBwICs9IG5fcmVfdG90YWw7Ci0gICAgfQotICAgIGZpbGxfbnVtYmVyKHAsICZpbV9zcGVjLCBwX2ltLCBuX2ltX2RpZ2l0cywgTlVMTCwgMCwgJmxvY2FsZSwgMCk7Ci0gICAgcCArPSBuX2ltX3RvdGFsOwotICAgICpwKysgPSAnaic7Ci0KLSAgICBpZiAoYWRkX3BhcmVucykKLSAgICAgICAgKnArKyA9ICcpJzsKLQotZG9uZToKLSAgICBQeU1lbV9GcmVlKHJlX2J1Zik7Ci0gICAgUHlNZW1fRnJlZShpbV9idWYpOwotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi0gICAgUHlNZW1fRnJlZShyZV91bmljb2RlX3RtcCk7Ci0gICAgUHlNZW1fRnJlZShpbV91bmljb2RlX3RtcCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2VuZGlmIC8qIEZPUk1BVF9DT01QTEVYICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKiogYnVpbHQgaW4gZm9ybWF0dGVycyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLVB5T2JqZWN0ICoKLUZPUk1BVF9TVFJJTkcoUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmZvcm1hdF9zcGVjLAotICAgICAgICAgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbikKLXsKLSAgICBJbnRlcm5hbEZvcm1hdFNwZWMgZm9ybWF0OwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotCi0gICAgLyogY2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugb2YgemVybyBsZW5ndGggZm9ybWF0IHNwZWMsIG1ha2UKLSAgICAgICBpdCBlcXVpdmFsZW50IHRvIHN0cihvYmopICovCi0gICAgaWYgKGZvcm1hdF9zcGVjX2xlbiA9PSAwKSB7Ci0gICAgICAgIHJlc3VsdCA9IFNUUklOR0xJQl9UT1NUUihvYmopOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgLyogcGFyc2UgdGhlIGZvcm1hdF9zcGVjICovCi0gICAgaWYgKCFwYXJzZV9pbnRlcm5hbF9yZW5kZXJfZm9ybWF0X3NwZWMoZm9ybWF0X3NwZWMsIGZvcm1hdF9zcGVjX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0LCAncycsICc8JykpCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIC8qIHR5cGUgY29udmVyc2lvbj8gKi8KLSAgICBzd2l0Y2ggKGZvcm1hdC50eXBlKSB7Ci0gICAgY2FzZSAncyc6Ci0gICAgICAgIC8qIG5vIHR5cGUgY29udmVyc2lvbiBuZWVkZWQsIGFscmVhZHkgYSBzdHJpbmcuICBkbyB0aGUgZm9ybWF0dGluZyAqLwotICAgICAgICByZXN1bHQgPSBmb3JtYXRfc3RyaW5nX2ludGVybmFsKG9iaiwgJmZvcm1hdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8qIHVua25vd24gKi8KLSAgICAgICAgdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShmb3JtYXQudHlwZSwgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotZG9uZToKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0jaWYgZGVmaW5lZCBGT1JNQVRfTE9ORyB8fCBkZWZpbmVkIEZPUk1BVF9JTlQKLXN0YXRpYyBQeU9iamVjdCoKLWZvcm1hdF9pbnRfb3JfbG9uZyhQeU9iamVjdCogb2JqLAotICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpmb3JtYXRfc3BlYywKLSAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbiwKLSAgICAgICAgICAgICAgICAgICBJbnRPckxvbmdUb1N0cmluZyB0b3N0cmluZykKLXsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqdG1wID0gTlVMTDsKLSAgICBJbnRlcm5hbEZvcm1hdFNwZWMgZm9ybWF0OwotCi0gICAgLyogY2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugb2YgemVybyBsZW5ndGggZm9ybWF0IHNwZWMsIG1ha2UKLSAgICAgICBpdCBlcXVpdmFsZW50IHRvIHN0cihvYmopICovCi0gICAgaWYgKGZvcm1hdF9zcGVjX2xlbiA9PSAwKSB7Ci0gICAgICAgIHJlc3VsdCA9IFNUUklOR0xJQl9UT1NUUihvYmopOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgLyogcGFyc2UgdGhlIGZvcm1hdF9zcGVjICovCi0gICAgaWYgKCFwYXJzZV9pbnRlcm5hbF9yZW5kZXJfZm9ybWF0X3NwZWMoZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3NwZWNfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsICdkJywgJz4nKSkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgLyogdHlwZSBjb252ZXJzaW9uPyAqLwotICAgIHN3aXRjaCAoZm9ybWF0LnR5cGUpIHsKLSAgICBjYXNlICdiJzoKLSAgICBjYXNlICdjJzoKLSAgICBjYXNlICdkJzoKLSAgICBjYXNlICdvJzoKLSAgICBjYXNlICd4JzoKLSAgICBjYXNlICdYJzoKLSAgICBjYXNlICduJzoKLSAgICAgICAgLyogbm8gdHlwZSBjb252ZXJzaW9uIG5lZWRlZCwgYWxyZWFkeSBhbiBpbnQgKG9yIGxvbmcpLiAgZG8KLSAgICAgICAgICAgdGhlIGZvcm1hdHRpbmcgKi8KLSAgICAgICAgICAgIHJlc3VsdCA9IGZvcm1hdF9pbnRfb3JfbG9uZ19pbnRlcm5hbChvYmosICZmb3JtYXQsIHRvc3RyaW5nKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlICdlJzoKLSAgICBjYXNlICdFJzoKLSAgICBjYXNlICdmJzoKLSAgICBjYXNlICdGJzoKLSAgICBjYXNlICdnJzoKLSAgICBjYXNlICdHJzoKLSAgICBjYXNlICclJzoKLSAgICAgICAgLyogY29udmVydCB0byBmbG9hdCAqLwotICAgICAgICB0bXAgPSBQeU51bWJlcl9GbG9hdChvYmopOwotICAgICAgICBpZiAodG1wID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIHJlc3VsdCA9IGZvcm1hdF9mbG9hdF9pbnRlcm5hbCh0bXAsICZmb3JtYXQpOwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8qIHVua25vd24gKi8KLSAgICAgICAgdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShmb3JtYXQudHlwZSwgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotZG9uZToKLSAgICBQeV9YREVDUkVGKHRtcCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNlbmRpZiAvKiBGT1JNQVRfTE9ORyB8fCBkZWZpbmVkIEZPUk1BVF9JTlQgKi8KLQotI2lmZGVmIEZPUk1BVF9MT05HCi0vKiBOZWVkIHRvIGRlZmluZSBsb25nX2Zvcm1hdCBhcyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBjb252ZXJ0IGEgbG9uZwotICAgdG8gYSBzdHJpbmcuICBJbiAzLjAsIF9QeUxvbmdfRm9ybWF0IGhhcyB0aGUgY29ycmVjdCBzaWduYXR1cmUuICBJbgotICAgMi54LCB3ZSBuZWVkIHRvIGZ1ZGdlIGEgZmV3IHBhcmFtZXRlcnMgKi8KLSNpZiBQWV9WRVJTSU9OX0hFWCA+PSAweDAzMDAwMDAwCi0jZGVmaW5lIGxvbmdfZm9ybWF0IF9QeUxvbmdfRm9ybWF0Ci0jZWxzZQotc3RhdGljIFB5T2JqZWN0KgotbG9uZ19mb3JtYXQoUHlPYmplY3QqIHZhbHVlLCBpbnQgYmFzZSkKLXsKLSAgICAvKiBDb252ZXJ0IHRvIGJhc2UsIGRvbid0IGFkZCB0cmFpbGluZyAnTCcsIGFuZCB1c2UgdGhlIG5ldyBvY3RhbAotICAgICAgIGZvcm1hdC4gV2UgYWxyZWFkeSBrbm93IHRoaXMgaXMgYSBsb25nIG9iamVjdCAqLwotICAgIGFzc2VydChQeUxvbmdfQ2hlY2sodmFsdWUpKTsKLSAgICAvKiBjb252ZXJ0IHRvIGJhc2UsIGRvbid0IGFkZCAnTCcsIGFuZCB1c2UgdGhlIG5ldyBvY3RhbCBmb3JtYXQgKi8KLSAgICByZXR1cm4gX1B5TG9uZ19Gb3JtYXQodmFsdWUsIGJhc2UsIDAsIDEpOwotfQotI2VuZGlmCi0KLVB5T2JqZWN0ICoKLUZPUk1BVF9MT05HKFB5T2JqZWN0ICpvYmosCi0gICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbikKLXsKLSAgICByZXR1cm4gZm9ybWF0X2ludF9vcl9sb25nKG9iaiwgZm9ybWF0X3NwZWMsIGZvcm1hdF9zcGVjX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdfZm9ybWF0KTsKLX0KLSNlbmRpZiAvKiBGT1JNQVRfTE9ORyAqLwotCi0jaWZkZWYgRk9STUFUX0lOVAotLyogdGhpcyBpcyBvbmx5IHVzZWQgZm9yIDIueCwgbm90IDMuMCAqLwotc3RhdGljIFB5T2JqZWN0KgotaW50X2Zvcm1hdChQeU9iamVjdCogdmFsdWUsIGludCBiYXNlKQotewotICAgIC8qIENvbnZlcnQgdG8gYmFzZSwgYW5kIHVzZSB0aGUgbmV3IG9jdGFsIGZvcm1hdC4gV2UgYWxyZWFkeQotICAgICAgIGtub3cgdGhpcyBpcyBhbiBpbnQgb2JqZWN0ICovCi0gICAgYXNzZXJ0KFB5SW50X0NoZWNrKHZhbHVlKSk7Ci0gICAgcmV0dXJuIF9QeUludF9Gb3JtYXQoKFB5SW50T2JqZWN0Kil2YWx1ZSwgYmFzZSwgMSk7Ci19Ci0KLVB5T2JqZWN0ICoKLUZPUk1BVF9JTlQoUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmZvcm1hdF9zcGVjLAotICAgICAgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbikKLXsKLSAgICByZXR1cm4gZm9ybWF0X2ludF9vcl9sb25nKG9iaiwgZm9ybWF0X3NwZWMsIGZvcm1hdF9zcGVjX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9mb3JtYXQpOwotfQotI2VuZGlmIC8qIEZPUk1BVF9JTlQgKi8KLQotI2lmZGVmIEZPUk1BVF9GTE9BVAotUHlPYmplY3QgKgotRk9STUFUX0ZMT0FUKFB5T2JqZWN0ICpvYmosCi0gICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmZvcm1hdF9zcGVjLAotICAgICAgICAgICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuKQotewotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIEludGVybmFsRm9ybWF0U3BlYyBmb3JtYXQ7Ci0KLSAgICAvKiBjaGVjayBmb3IgdGhlIHNwZWNpYWwgY2FzZSBvZiB6ZXJvIGxlbmd0aCBmb3JtYXQgc3BlYywgbWFrZQotICAgICAgIGl0IGVxdWl2YWxlbnQgdG8gc3RyKG9iaikgKi8KLSAgICBpZiAoZm9ybWF0X3NwZWNfbGVuID09IDApIHsKLSAgICAgICAgcmVzdWx0ID0gU1RSSU5HTElCX1RPU1RSKG9iaik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiBwYXJzZSB0aGUgZm9ybWF0X3NwZWMgKi8KLSAgICBpZiAoIXBhcnNlX2ludGVybmFsX3JlbmRlcl9mb3JtYXRfc3BlYyhmb3JtYXRfc3BlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3BlY19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCwgJ1wwJywgJz4nKSkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgLyogdHlwZSBjb252ZXJzaW9uPyAqLwotICAgIHN3aXRjaCAoZm9ybWF0LnR5cGUpIHsKLSAgICBjYXNlICdcMCc6IC8qIE5vIGZvcm1hdCBjb2RlOiBsaWtlICdnJywgYnV0IHdpdGggYXQgbGVhc3Qgb25lIGRlY2ltYWwuICovCi0gICAgY2FzZSAnZSc6Ci0gICAgY2FzZSAnRSc6Ci0gICAgY2FzZSAnZic6Ci0gICAgY2FzZSAnRic6Ci0gICAgY2FzZSAnZyc6Ci0gICAgY2FzZSAnRyc6Ci0gICAgY2FzZSAnbic6Ci0gICAgY2FzZSAnJSc6Ci0gICAgICAgIC8qIG5vIGNvbnZlcnNpb24sIGFscmVhZHkgYSBmbG9hdC4gIGRvIHRoZSBmb3JtYXR0aW5nICovCi0gICAgICAgIHJlc3VsdCA9IGZvcm1hdF9mbG9hdF9pbnRlcm5hbChvYmosICZmb3JtYXQpOwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8qIHVua25vd24gKi8KLSAgICAgICAgdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShmb3JtYXQudHlwZSwgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotZG9uZToKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2VuZGlmIC8qIEZPUk1BVF9GTE9BVCAqLwotCi0jaWZkZWYgRk9STUFUX0NPTVBMRVgKLVB5T2JqZWN0ICoKLUZPUk1BVF9DT01QTEVYKFB5T2JqZWN0ICpvYmosCi0gICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbikKLXsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBJbnRlcm5hbEZvcm1hdFNwZWMgZm9ybWF0OwotCi0gICAgLyogY2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugb2YgemVybyBsZW5ndGggZm9ybWF0IHNwZWMsIG1ha2UKLSAgICAgICBpdCBlcXVpdmFsZW50IHRvIHN0cihvYmopICovCi0gICAgaWYgKGZvcm1hdF9zcGVjX2xlbiA9PSAwKSB7Ci0gICAgICAgIHJlc3VsdCA9IFNUUklOR0xJQl9UT1NUUihvYmopOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgLyogcGFyc2UgdGhlIGZvcm1hdF9zcGVjICovCi0gICAgaWYgKCFwYXJzZV9pbnRlcm5hbF9yZW5kZXJfZm9ybWF0X3NwZWMoZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3NwZWNfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsICdcMCcsICc+JykpCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIC8qIHR5cGUgY29udmVyc2lvbj8gKi8KLSAgICBzd2l0Y2ggKGZvcm1hdC50eXBlKSB7Ci0gICAgY2FzZSAnXDAnOiAvKiBObyBmb3JtYXQgY29kZTogbGlrZSAnZycsIGJ1dCB3aXRoIGF0IGxlYXN0IG9uZSBkZWNpbWFsLiAqLwotICAgIGNhc2UgJ2UnOgotICAgIGNhc2UgJ0UnOgotICAgIGNhc2UgJ2YnOgotICAgIGNhc2UgJ0YnOgotICAgIGNhc2UgJ2cnOgotICAgIGNhc2UgJ0cnOgotICAgIGNhc2UgJ24nOgotICAgICAgICAvKiBubyBjb252ZXJzaW9uLCBhbHJlYWR5IGEgY29tcGxleC4gIGRvIHRoZSBmb3JtYXR0aW5nICovCi0gICAgICAgIHJlc3VsdCA9IGZvcm1hdF9jb21wbGV4X2ludGVybmFsKG9iaiwgJmZvcm1hdCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgLyogdW5rbm93biAqLwotICAgICAgICB1bmtub3duX3ByZXNlbnRhdGlvbl90eXBlKGZvcm1hdC50eXBlLCBvYmotPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi1kb25lOgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0jZW5kaWYgLyogRk9STUFUX0NPTVBMRVggKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaCBiL09iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaAppbmRleCBmNTQ4MTMzLi42ZTJmMDczIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oCkBAIC0xLDIxICsxLDE5IEBACiAvKiBzdHJpbmdsaWI6IGxvY2FsZSByZWxhdGVkIGhlbHBlcnMgaW1wbGVtZW50YXRpb24gKi8KIAotI2lmbmRlZiBTVFJJTkdMSUJfTE9DQUxFVVRJTF9ICi0jZGVmaW5lIFNUUklOR0xJQl9MT0NBTEVVVElMX0gKLQogI2luY2x1ZGUgPGxvY2FsZS5oPgogCi0jZGVmaW5lIE1BWCh4LCB5KSAoKHgpIDwgKHkpID8gKHkpIDogKHgpKQotI2RlZmluZSBNSU4oeCwgeSkgKCh4KSA8ICh5KSA/ICh4KSA6ICh5KSkKKyNpZm5kZWYgU1RSSU5HTElCX0lTX1VOSUNPREUKKyMgICBlcnJvciAibG9jYWxldXRpbCBpcyBzcGVjaWZpYyB0byBVbmljb2RlIgorI2VuZGlmCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBjb25zdCBjaGFyICpncm91cGluZzsKICAgICBjaGFyIHByZXZpb3VzOwogICAgIFB5X3NzaXplX3QgaTsgLyogV2hlcmUgd2UncmUgY3VycmVudGx5IHBvaW50aW5nIGluIGdyb3VwaW5nLiAqLwotfSBHcm91cEdlbmVyYXRvcjsKK30gU1RSSU5HTElCKEdyb3VwR2VuZXJhdG9yKTsKIAogc3RhdGljIHZvaWQKLV9Hcm91cEdlbmVyYXRvcl9pbml0KEdyb3VwR2VuZXJhdG9yICpzZWxmLCBjb25zdCBjaGFyICpncm91cGluZykKK1NUUklOR0xJQihHcm91cEdlbmVyYXRvcl9pbml0KShTVFJJTkdMSUIoR3JvdXBHZW5lcmF0b3IpICpzZWxmLCBjb25zdCBjaGFyICpncm91cGluZykKIHsKICAgICBzZWxmLT5ncm91cGluZyA9IGdyb3VwaW5nOwogICAgIHNlbGYtPmkgPSAwOwpAQCAtMjQsNyArMjIsNyBAQAogCiAvKiBSZXR1cm5zIHRoZSBuZXh0IGdyb3VwaW5nLCBvciAwIHRvIHNpZ25pZnkgZW5kLiAqLwogc3RhdGljIFB5X3NzaXplX3QKLV9Hcm91cEdlbmVyYXRvcl9uZXh0KEdyb3VwR2VuZXJhdG9yICpzZWxmKQorU1RSSU5HTElCKEdyb3VwR2VuZXJhdG9yX25leHQpKFNUUklOR0xJQihHcm91cEdlbmVyYXRvcikgKnNlbGYpCiB7CiAgICAgLyogTm90ZSB0aGF0IHdlIGRvbid0IHJlYWxseSBkbyBtdWNoIGVycm9yIGNoZWNraW5nIGhlcmUuIElmIGEKICAgICAgICBncm91cGluZyBzdHJpbmcgY29udGFpbnMganVzdCBDSEFSX01BWCwgZm9yIGV4YW1wbGUsIHRoZW4ganVzdApAQCAtNDgsMjcgKzQ2LDE4IEBACiAvKiBGaWxsIGluIHNvbWUgZGlnaXRzLCBsZWFkaW5nIHplcm9zLCBhbmQgdGhvdXNhbmRzIHNlcGFyYXRvci4gQWxsCiAgICBhcmUgb3B0aW9uYWwsIGRlcGVuZGluZyBvbiB3aGVuIHdlJ3JlIGNhbGxlZC4gKi8KIHN0YXRpYyB2b2lkCi1maWxsKFNUUklOR0xJQl9DSEFSICoqZGlnaXRzX2VuZCwgU1RSSU5HTElCX0NIQVIgKipidWZmZXJfZW5kLAotICAgICBQeV9zc2l6ZV90IG5fY2hhcnMsIFB5X3NzaXplX3Qgbl96ZXJvcywgY29uc3QgY2hhciogdGhvdXNhbmRzX3NlcCwKK1NUUklOR0xJQihmaWxsKShTVFJJTkdMSUJfQ0hBUiAqKmRpZ2l0c19lbmQsIFNUUklOR0xJQl9DSEFSICoqYnVmZmVyX2VuZCwKKyAgICAgUHlfc3NpemVfdCBuX2NoYXJzLCBQeV9zc2l6ZV90IG5femVyb3MsIFNUUklOR0xJQl9DSEFSKiB0aG91c2FuZHNfc2VwLAogICAgICBQeV9zc2l6ZV90IHRob3VzYW5kc19zZXBfbGVuKQogewotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCiAgICAgUHlfc3NpemVfdCBpOwotI2VuZGlmCiAKICAgICBpZiAodGhvdXNhbmRzX3NlcCkgewogICAgICAgICAqYnVmZmVyX2VuZCAtPSB0aG91c2FuZHNfc2VwX2xlbjsKIAogICAgICAgICAvKiBDb3B5IHRoZSB0aG91c2FuZHNfc2VwIGNoYXJzIGludG8gdGhlIGJ1ZmZlci4gKi8KLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotICAgICAgICAvKiBDb252ZXJ0IGZyb20gdGhlIGNoYXIncyBvZiB0aGUgdGhvdXNhbmRzX3NlcCBmcm9tCi0gICAgICAgICAgIHRoZSBsb2NhbGUgaW50byB1bmljb2RlLiAqLwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhvdXNhbmRzX3NlcF9sZW47ICsraSkKLSAgICAgICAgICAgICgqYnVmZmVyX2VuZClbaV0gPSB0aG91c2FuZHNfc2VwW2ldOwotI2Vsc2UKLSAgICAgICAgLyogTm8gY29udmVyc2lvbiwganVzdCBtZW1jcHkgdGhlIHRob3VzYW5kc19zZXAuICovCi0gICAgICAgIG1lbWNweSgqYnVmZmVyX2VuZCwgdGhvdXNhbmRzX3NlcCwgdGhvdXNhbmRzX3NlcF9sZW4pOwotI2VuZGlmCisgICAgICAgIG1lbWNweSgqYnVmZmVyX2VuZCwgdGhvdXNhbmRzX3NlcCwKKyAgICAgICAgICAgICAgIHRob3VzYW5kc19zZXBfbGVuICogU1RSSU5HTElCX1NJWkVPRl9DSEFSKTsKICAgICB9CiAKICAgICAqYnVmZmVyX2VuZCAtPSBuX2NoYXJzOwpAQCAtNzYsMTEgKzY1LDEyIEBACiAgICAgbWVtY3B5KCpidWZmZXJfZW5kLCAqZGlnaXRzX2VuZCwgbl9jaGFycyAqIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOwogCiAgICAgKmJ1ZmZlcl9lbmQgLT0gbl96ZXJvczsKLSAgICBTVFJJTkdMSUJfRklMTCgqYnVmZmVyX2VuZCwgJzAnLCBuX3plcm9zKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbl96ZXJvczsgaSsrKQorICAgICAgICAoKmJ1ZmZlcl9lbmQpW2ldID0gJzAnOwogfQogCiAvKioKLSAqIF9QeV9JbnNlcnRUaG91c2FuZHNHcm91cGluZzoKKyAqIEluc2VydFRob3VzYW5kc0dyb3VwaW5nOgogICogQGJ1ZmZlcjogQSBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiBhIHN0cmluZy4KICAqIEBuX2J1ZmZlcjogTnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gQGJ1ZmZlci4KICAqIEBkaWdpdHM6IEEgcG9pbnRlciB0byB0aGUgZGlnaXRzIHdlJ3JlIHJlYWRpbmcgZnJvbS4gSWYgY291bnQKQEAgLTEwOSwxNCArOTksMTYgQEAKICAqIEFzIGNsb3NlbHkgYXMgcG9zc2libGUsIHRoaXMgY29kZSBtaW1pY3MgdGhlIGxvZ2ljIGluIGRlY2ltYWwucHkncwogICAgIF9pbnNlcnRfdGhvdXNhbmRzX3NlcCgpLgogICoqLwotUHlfc3NpemVfdAotX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nKFNUUklOR0xJQl9DSEFSICpidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuX2J1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgbl9kaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtaW5fd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZ3JvdXBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdGhvdXNhbmRzX3NlcCkKK3N0YXRpYyBQeV9zc2l6ZV90CitTVFJJTkdMSUIoSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcpKAorICAgIFNUUklOR0xJQl9DSEFSICpidWZmZXIsCisgICAgUHlfc3NpemVfdCBuX2J1ZmZlciwKKyAgICBTVFJJTkdMSUJfQ0hBUiAqZGlnaXRzLAorICAgIFB5X3NzaXplX3Qgbl9kaWdpdHMsCisgICAgUHlfc3NpemVfdCBtaW5fd2lkdGgsCisgICAgY29uc3QgY2hhciAqZ3JvdXBpbmcsCisgICAgU1RSSU5HTElCX0NIQVIgKnRob3VzYW5kc19zZXAsCisgICAgUHlfc3NpemVfdCB0aG91c2FuZHNfc2VwX2xlbikKIHsKICAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKICAgICBQeV9zc2l6ZV90IG5femVyb3M7CkBAIC0xMjgsMjMgKzEyMCwyMiBAQAogICAgIFNUUklOR0xJQl9DSEFSICpkaWdpdHNfZW5kID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGw7CiAgICAgUHlfc3NpemVfdCBuX2NoYXJzOwotICAgIFB5X3NzaXplX3QgdGhvdXNhbmRzX3NlcF9sZW4gPSBzdHJsZW4odGhvdXNhbmRzX3NlcCk7CiAgICAgUHlfc3NpemVfdCByZW1haW5pbmcgPSBuX2RpZ2l0czsgLyogTnVtYmVyIG9mIGNoYXJzIHJlbWFpbmluZyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGxvb2tlZCBhdCAqLwogICAgIC8qIEEgZ2VuZXJhdG9yIHRoYXQgcmV0dXJucyBhbGwgb2YgdGhlIGdyb3VwaW5nIHdpZHRocywgdW50aWwgaXQKICAgICAgICByZXR1cm5zIDAuICovCi0gICAgR3JvdXBHZW5lcmF0b3IgZ3JvdXBnZW47Ci0gICAgX0dyb3VwR2VuZXJhdG9yX2luaXQoJmdyb3VwZ2VuLCBncm91cGluZyk7CisgICAgU1RSSU5HTElCKEdyb3VwR2VuZXJhdG9yKSBncm91cGdlbjsKKyAgICBTVFJJTkdMSUIoR3JvdXBHZW5lcmF0b3JfaW5pdCkoJmdyb3VwZ2VuLCBncm91cGluZyk7CiAKICAgICBpZiAoYnVmZmVyKSB7CiAgICAgICAgIGJ1ZmZlcl9lbmQgPSBidWZmZXIgKyBuX2J1ZmZlcjsKICAgICAgICAgZGlnaXRzX2VuZCA9IGRpZ2l0cyArIG5fZGlnaXRzOwogICAgIH0KIAotICAgIHdoaWxlICgobCA9IF9Hcm91cEdlbmVyYXRvcl9uZXh0KCZncm91cGdlbikpID4gMCkgewotICAgICAgICBsID0gTUlOKGwsIE1BWChNQVgocmVtYWluaW5nLCBtaW5fd2lkdGgpLCAxKSk7Ci0gICAgICAgIG5femVyb3MgPSBNQVgoMCwgbCAtIHJlbWFpbmluZyk7Ci0gICAgICAgIG5fY2hhcnMgPSBNQVgoMCwgTUlOKHJlbWFpbmluZywgbCkpOworICAgIHdoaWxlICgobCA9IFNUUklOR0xJQihHcm91cEdlbmVyYXRvcl9uZXh0KSgmZ3JvdXBnZW4pKSA+IDApIHsKKyAgICAgICAgbCA9IFB5X01JTihsLCBQeV9NQVgoUHlfTUFYKHJlbWFpbmluZywgbWluX3dpZHRoKSwgMSkpOworICAgICAgICBuX3plcm9zID0gUHlfTUFYKDAsIGwgLSByZW1haW5pbmcpOworICAgICAgICBuX2NoYXJzID0gUHlfTUFYKDAsIFB5X01JTihyZW1haW5pbmcsIGwpKTsKIAogICAgICAgICAvKiBVc2Ugbl96ZXJvIHplcm8ncyBhbmQgbl9jaGFycyBjaGFycyAqLwogCkBAIC0xNTMsNyArMTQ0LDcgQEAKIAogICAgICAgICBpZiAoYnVmZmVyKSB7CiAgICAgICAgICAgICAvKiBDb3B5IGludG8gdGhlIG91dHB1dCBidWZmZXIuICovCi0gICAgICAgICAgICBmaWxsKCZkaWdpdHNfZW5kLCAmYnVmZmVyX2VuZCwgbl9jaGFycywgbl96ZXJvcywKKyAgICAgICAgICAgIFNUUklOR0xJQihmaWxsKSgmZGlnaXRzX2VuZCwgJmJ1ZmZlcl9lbmQsIG5fY2hhcnMsIG5femVyb3MsCiAgICAgICAgICAgICAgICAgIHVzZV9zZXBhcmF0b3IgPyB0aG91c2FuZHNfc2VwIDogTlVMTCwgdGhvdXNhbmRzX3NlcF9sZW4pOwogICAgICAgICB9CiAKQEAgLTE3Miw0MSArMTYzLDE4IEBACiAgICAgaWYgKCFsb29wX2Jyb2tlbikgewogICAgICAgICAvKiBXZSBsZWZ0IHRoZSBsb29wIHdpdGhvdXQgdXNpbmcgYSBicmVhayBzdGF0ZW1lbnQuICovCiAKLSAgICAgICAgbCA9IE1BWChNQVgocmVtYWluaW5nLCBtaW5fd2lkdGgpLCAxKTsKLSAgICAgICAgbl96ZXJvcyA9IE1BWCgwLCBsIC0gcmVtYWluaW5nKTsKLSAgICAgICAgbl9jaGFycyA9IE1BWCgwLCBNSU4ocmVtYWluaW5nLCBsKSk7CisgICAgICAgIGwgPSBQeV9NQVgoUHlfTUFYKHJlbWFpbmluZywgbWluX3dpZHRoKSwgMSk7CisgICAgICAgIG5femVyb3MgPSBQeV9NQVgoMCwgbCAtIHJlbWFpbmluZyk7CisgICAgICAgIG5fY2hhcnMgPSBQeV9NQVgoMCwgUHlfTUlOKHJlbWFpbmluZywgbCkpOwogCiAgICAgICAgIC8qIFVzZSBuX3plcm8gemVybydzIGFuZCBuX2NoYXJzIGNoYXJzICovCiAgICAgICAgIGNvdW50ICs9ICh1c2Vfc2VwYXJhdG9yID8gdGhvdXNhbmRzX3NlcF9sZW4gOiAwKSArIG5femVyb3MgKyBuX2NoYXJzOwogICAgICAgICBpZiAoYnVmZmVyKSB7CiAgICAgICAgICAgICAvKiBDb3B5IGludG8gdGhlIG91dHB1dCBidWZmZXIuICovCi0gICAgICAgICAgICBmaWxsKCZkaWdpdHNfZW5kLCAmYnVmZmVyX2VuZCwgbl9jaGFycywgbl96ZXJvcywKKyAgICAgICAgICAgIFNUUklOR0xJQihmaWxsKSgmZGlnaXRzX2VuZCwgJmJ1ZmZlcl9lbmQsIG5fY2hhcnMsIG5femVyb3MsCiAgICAgICAgICAgICAgICAgIHVzZV9zZXBhcmF0b3IgPyB0aG91c2FuZHNfc2VwIDogTlVMTCwgdGhvdXNhbmRzX3NlcF9sZW4pOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBjb3VudDsKIH0KIAotLyoqCi0gKiBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmdMb2NhbGU6Ci0gKiBAYnVmZmVyOiBBIHBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIGEgc3RyaW5nLgotICogQG5fZGlnaXRzOiBUaGUgbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgc3RyaW5nLCBpbiB3aGljaCB3ZSB3YW50Ci0gKiAgICAgICAgICAgIHRvIHB1dCB0aGUgZ3JvdXBpbmcgY2hhcnMuCi0gKgotICogUmVhZHMgdGhlZSBjdXJyZW50IGxvY2FsZSBhbmQgY2FsbHMgX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nKCkuCi0gKiovCi1QeV9zc2l6ZV90Ci1fUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmdMb2NhbGUoU1RSSU5HTElCX0NIQVIgKmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpkaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuX2RpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1pbl93aWR0aCkKLXsKLSAgICAgICAgc3RydWN0IGxjb252ICpsb2NhbGVfZGF0YSA9IGxvY2FsZWNvbnYoKTsKLSAgICAgICAgY29uc3QgY2hhciAqZ3JvdXBpbmcgPSBsb2NhbGVfZGF0YS0+Z3JvdXBpbmc7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnRob3VzYW5kc19zZXAgPSBsb2NhbGVfZGF0YS0+dGhvdXNhbmRzX3NlcDsKLQotICAgICAgICByZXR1cm4gX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nKGJ1ZmZlciwgbl9idWZmZXIsIGRpZ2l0cywgbl9kaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluX3dpZHRoLCBncm91cGluZywgdGhvdXNhbmRzX3NlcCk7Ci19Ci0jZW5kaWYgLyogU1RSSU5HTElCX0xPQ0FMRVVUSUxfSCAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvcGFydGl0aW9uLmggYi9PYmplY3RzL3N0cmluZ2xpYi9wYXJ0aXRpb24uaAppbmRleCAwMTcwYmRkLi40MGNiNTEyIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9wYXJ0aXRpb24uaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9wYXJ0aXRpb24uaApAQCAtMSwxNCArMSwxMSBAQAogLyogc3RyaW5nbGliOiBwYXJ0aXRpb24gaW1wbGVtZW50YXRpb24gKi8KIAotI2lmbmRlZiBTVFJJTkdMSUJfUEFSVElUSU9OX0gKLSNkZWZpbmUgU1RSSU5HTElCX1BBUlRJVElPTl9ICi0KICNpZm5kZWYgU1RSSU5HTElCX0ZBU1RTRUFSQ0hfSAogI2Vycm9yIG11c3QgaW5jbHVkZSAic3RyaW5nbGliL2Zhc3RzZWFyY2guaCIgYmVmb3JlIGluY2x1ZGluZyB0aGlzIG1vZHVsZQogI2VuZGlmCiAKIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCopCi1zdHJpbmdsaWJfcGFydGl0aW9uKFB5T2JqZWN0KiBzdHJfb2JqLAorU1RSSU5HTElCKHBhcnRpdGlvbikoUHlPYmplY3QqIHN0cl9vYmosCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QqIHNlcF9vYmosCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzZXAsIFB5X3NzaXplX3Qgc2VwX2xlbikKQEAgLTI1LDcgKzIyLDcgQEAKICAgICBpZiAoIW91dCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBwb3MgPSBmYXN0c2VhcmNoKHN0ciwgc3RyX2xlbiwgc2VwLCBzZXBfbGVuLCAtMSwgRkFTVF9TRUFSQ0gpOworICAgIHBvcyA9IEZBU1RTRUFSQ0goc3RyLCBzdHJfbGVuLCBzZXAsIHNlcF9sZW4sIC0xLCBGQVNUX1NFQVJDSCk7CiAKICAgICBpZiAocG9zIDwgMCkgewogI2lmIFNUUklOR0xJQl9NVVRBQkxFCkBAIC01OCw3ICs1NSw3IEBACiB9CiAKIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCopCi1zdHJpbmdsaWJfcnBhcnRpdGlvbihQeU9iamVjdCogc3RyX29iaiwKK1NUUklOR0xJQihycGFydGl0aW9uKShQeU9iamVjdCogc3RyX29iaiwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0KiBzZXBfb2JqLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHNlcCwgUHlfc3NpemVfdCBzZXBfbGVuKQpAQCAtNzUsNyArNzIsNyBAQAogICAgIGlmICghb3V0KQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHBvcyA9IGZhc3RzZWFyY2goc3RyLCBzdHJfbGVuLCBzZXAsIHNlcF9sZW4sIC0xLCBGQVNUX1JTRUFSQ0gpOworICAgIHBvcyA9IEZBU1RTRUFSQ0goc3RyLCBzdHJfbGVuLCBzZXAsIHNlcF9sZW4sIC0xLCBGQVNUX1JTRUFSQ0gpOwogCiAgICAgaWYgKHBvcyA8IDApIHsKICNpZiBTVFJJTkdMSUJfTVVUQUJMRQpAQCAtMTA3LDQgKzEwNCwzIEBACiAgICAgcmV0dXJuIG91dDsKIH0KIAotI2VuZGlmCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9zcGxpdC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvc3BsaXQuaAppbmRleCA2MGU3NzY3Li45NDdkZDI4IDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9zcGxpdC5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3NwbGl0LmgKQEAgLTEsOCArMSw1IEBACiAvKiBzdHJpbmdsaWI6IHNwbGl0IGltcGxlbWVudGF0aW9uICovCiAKLSNpZm5kZWYgU1RSSU5HTElCX1NQTElUX0gKLSNkZWZpbmUgU1RSSU5HTElCX1NQTElUX0gKLQogI2lmbmRlZiBTVFJJTkdMSUJfRkFTVFNFQVJDSF9ICiAjZXJyb3IgbXVzdCBpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIiBiZWZvcmUgaW5jbHVkaW5nIHRoaXMgbW9kdWxlCiAjZW5kaWYKQEAgLTU0LDcgKzUxLDcgQEAKICNkZWZpbmUgRklYX1BSRUFMTE9DX1NJWkUobGlzdCkgUHlfU0laRShsaXN0KSA9IGNvdW50CiAKIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQotc3RyaW5nbGliX3NwbGl0X3doaXRlc3BhY2UoUHlPYmplY3QqIHN0cl9vYmosCitTVFJJTkdMSUIoc3BsaXRfd2hpdGVzcGFjZSkoUHlPYmplY3QqIHN0cl9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQogewpAQCAtMTAyLDcgKzk5LDcgQEAKIH0KIAogUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCi1zdHJpbmdsaWJfc3BsaXRfY2hhcihQeU9iamVjdCogc3RyX29iaiwKK1NUUklOR0xJQihzcGxpdF9jaGFyKShQeU9iamVjdCogc3RyX29iaiwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSIGNoLAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKQEAgLTE0NSw3ICsxNDIsNyBAQAogfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKLXN0cmluZ2xpYl9zcGxpdChQeU9iamVjdCogc3RyX29iaiwKK1NUUklOR0xJQihzcGxpdCkoUHlPYmplY3QqIHN0cl9vYmosCiAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzZXAsIFB5X3NzaXplX3Qgc2VwX2xlbiwKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQpAQCAtMTU4LDcgKzE1NSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlIGlmIChzZXBfbGVuID09IDEpCi0gICAgICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRfY2hhcihzdHJfb2JqLCBzdHIsIHN0cl9sZW4sIHNlcFswXSwgbWF4Y291bnQpOworICAgICAgICByZXR1cm4gU1RSSU5HTElCKHNwbGl0X2NoYXIpKHN0cl9vYmosIHN0ciwgc3RyX2xlbiwgc2VwWzBdLCBtYXhjb3VudCk7CiAKICAgICBsaXN0ID0gUHlMaXN0X05ldyhQUkVBTExPQ19TSVpFKG1heGNvdW50KSk7CiAgICAgaWYgKGxpc3QgPT0gTlVMTCkKQEAgLTE2Niw3ICsxNjMsNyBAQAogCiAgICAgaSA9IGogPSAwOwogICAgIHdoaWxlIChtYXhjb3VudC0tID4gMCkgewotICAgICAgICBwb3MgPSBmYXN0c2VhcmNoKHN0citpLCBzdHJfbGVuLWksIHNlcCwgc2VwX2xlbiwgLTEsIEZBU1RfU0VBUkNIKTsKKyAgICAgICAgcG9zID0gRkFTVFNFQVJDSChzdHIraSwgc3RyX2xlbi1pLCBzZXAsIHNlcF9sZW4sIC0xLCBGQVNUX1NFQVJDSCk7CiAgICAgICAgIGlmIChwb3MgPCAwKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGogPSBpICsgcG9zOwpAQCAtMTkzLDcgKzE5MCw3IEBACiB9CiAKIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQotc3RyaW5nbGliX3JzcGxpdF93aGl0ZXNwYWNlKFB5T2JqZWN0KiBzdHJfb2JqLAorU1RSSU5HTElCKHJzcGxpdF93aGl0ZXNwYWNlKShQeU9iamVjdCogc3RyX29iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKIHsKQEAgLTI0Myw3ICsyNDAsNyBAQAogfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKLXN0cmluZ2xpYl9yc3BsaXRfY2hhcihQeU9iamVjdCogc3RyX29iaiwKK1NUUklOR0xJQihyc3BsaXRfY2hhcikoUHlPYmplY3QqIHN0cl9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSIGNoLAogICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCkBAIC0yODcsNyArMjg0LDcgQEAKIH0KIAogUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCi1zdHJpbmdsaWJfcnNwbGl0KFB5T2JqZWN0KiBzdHJfb2JqLAorU1RSSU5HTElCKHJzcGxpdCkoUHlPYmplY3QqIHN0cl9vYmosCiAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHNlcCwgUHlfc3NpemVfdCBzZXBfbGVuLAogICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQpAQCAtMzAwLDcgKzI5Nyw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlIGlmIChzZXBfbGVuID09IDEpCi0gICAgICAgIHJldHVybiBzdHJpbmdsaWJfcnNwbGl0X2NoYXIoc3RyX29iaiwgc3RyLCBzdHJfbGVuLCBzZXBbMF0sIG1heGNvdW50KTsKKyAgICAgICAgcmV0dXJuIFNUUklOR0xJQihyc3BsaXRfY2hhcikoc3RyX29iaiwgc3RyLCBzdHJfbGVuLCBzZXBbMF0sIG1heGNvdW50KTsKIAogICAgIGxpc3QgPSBQeUxpc3RfTmV3KFBSRUFMTE9DX1NJWkUobWF4Y291bnQpKTsKICAgICBpZiAobGlzdCA9PSBOVUxMKQpAQCAtMzA4LDcgKzMwNSw3IEBACiAKICAgICBqID0gc3RyX2xlbjsKICAgICB3aGlsZSAobWF4Y291bnQtLSA+IDApIHsKLSAgICAgICAgcG9zID0gZmFzdHNlYXJjaChzdHIsIGosIHNlcCwgc2VwX2xlbiwgLTEsIEZBU1RfUlNFQVJDSCk7CisgICAgICAgIHBvcyA9IEZBU1RTRUFSQ0goc3RyLCBqLCBzZXAsIHNlcF9sZW4sIC0xLCBGQVNUX1JTRUFSQ0gpOwogICAgICAgICBpZiAocG9zIDwgMCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBTUExJVF9BREQoc3RyLCBwb3MgKyBzZXBfbGVuLCBqKTsKQEAgLTMzNiw3ICszMzMsNyBAQAogfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKLXN0cmluZ2xpYl9zcGxpdGxpbmVzKFB5T2JqZWN0KiBzdHJfb2JqLAorU1RSSU5HTElCKHNwbGl0bGluZXMpKFB5T2JqZWN0KiBzdHJfb2JqLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgaW50IGtlZXBlbmRzKQogewpAQCAtMzkxLDQgKzM4OCwzIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvc3RyaW5nZGVmcy5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvc3RyaW5nZGVmcy5oCmluZGV4IDFjNDk0MjYuLjdiYjkxYTcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3N0cmluZ2RlZnMuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9zdHJpbmdkZWZzLmgKQEAgLTYsNyArNiwxMCBAQAogICAgY29tcGlsZWQgYXMgdW5pY29kZS4gKi8KICNkZWZpbmUgU1RSSU5HTElCX0lTX1VOSUNPREUgICAgIDAKIAorI2RlZmluZSBGQVNUU0VBUkNIIGZhc3RzZWFyY2gKKyNkZWZpbmUgU1RSSU5HTElCKEYpIHN0cmluZ2xpYl8jI0YKICNkZWZpbmUgU1RSSU5HTElCX09CSkVDVCAgICAgICAgIFB5Qnl0ZXNPYmplY3QKKyNkZWZpbmUgU1RSSU5HTElCX1NJWkVPRl9DSEFSICAgIDEKICNkZWZpbmUgU1RSSU5HTElCX0NIQVIgICAgICAgICAgIGNoYXIKICNkZWZpbmUgU1RSSU5HTElCX1RZUEVfTkFNRSAgICAgICJzdHJpbmciCiAjZGVmaW5lIFNUUklOR0xJQl9QQVJTRV9DT0RFICAgICAiUyIKQEAgLTE1LDkgKzE4LDYgQEAKICNkZWZpbmUgU1RSSU5HTElCX0lTTElORUJSRUFLKHgpICgoeCA9PSAnXG4nKSB8fCAoeCA9PSAnXHInKSkKICNkZWZpbmUgU1RSSU5HTElCX0lTREVDSU1BTCh4KSAgICgoeCA+PSAnMCcpICYmICh4IDw9ICc5JykpCiAjZGVmaW5lIFNUUklOR0xJQl9UT0RFQ0lNQUwoeCkgICAoU1RSSU5HTElCX0lTREVDSU1BTCh4KSA/ICh4IC0gJzAnKSA6IC0xKQotI2RlZmluZSBTVFJJTkdMSUJfVE9VUFBFUiAgICAgICAgUHlfVE9VUFBFUgotI2RlZmluZSBTVFJJTkdMSUJfVE9MT1dFUiAgICAgICAgUHlfVE9MT1dFUgotI2RlZmluZSBTVFJJTkdMSUJfRklMTCAgICAgICAgICAgbWVtc2V0CiAjZGVmaW5lIFNUUklOR0xJQl9TVFIgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORwogI2RlZmluZSBTVFJJTkdMSUJfTEVOICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRQogI2RlZmluZSBTVFJJTkdMSUJfTkVXICAgICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQpAQCAtMjUsNyArMjUsNSBAQAogI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0sgICAgICAgICAgUHlCeXRlc19DaGVjawogI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1QgICAgUHlCeXRlc19DaGVja0V4YWN0CiAjZGVmaW5lIFNUUklOR0xJQl9UT1NUUiAgICAgICAgICBQeU9iamVjdF9TdHIKLSNkZWZpbmUgU1RSSU5HTElCX0dST1VQSU5HICAgICAgIF9QeUJ5dGVzX0luc2VydFRob3VzYW5kc0dyb3VwaW5nCi0jZGVmaW5lIFNUUklOR0xJQl9HUk9VUElOR19MT0NBTEUgX1B5Qnl0ZXNfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmdMb2NhbGUKICNkZWZpbmUgU1RSSU5HTElCX1RPQVNDSUkgICAgICAgIFB5T2JqZWN0X1JlcHIKICNlbmRpZiAvKiAhU1RSSU5HTElCX1NUUklOR0RFRlNfSCAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvdWNzMWxpYi5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvdWNzMWxpYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YzZmY2IKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi91Y3MxbGliLmgKQEAgLTAsMCArMSwzMSBAQAorLyogdGhpcyBpcyBzb3J0IG9mIGEgaGFjay4gIHRoZXJlJ3MgYXQgbGVhc3Qgb25lIHBsYWNlIChmb3JtYXR0aW5nCisgICBmbG9hdHMpIHdoZXJlIHNvbWUgc3RyaW5nbGliIGNvZGUgdGFrZXMgYSBkaWZmZXJlbnQgcGF0aCBpZiBpdCdzCisgICBjb21waWxlZCBhcyB1bmljb2RlLiAqLworI2RlZmluZSBTVFJJTkdMSUJfSVNfVU5JQ09ERSAgICAgMQorCisjZGVmaW5lIEZBU1RTRUFSQ0ggICAgICAgICAgICAgICB1Y3MxbGliX2Zhc3RzZWFyY2gKKyNkZWZpbmUgU1RSSU5HTElCKEYpICAgICAgICAgICAgIHVjczFsaWJfIyNGCisjZGVmaW5lIFNUUklOR0xJQl9PQkpFQ1QgICAgICAgICBQeVVuaWNvZGVPYmplY3QKKyNkZWZpbmUgU1RSSU5HTElCX1NJWkVPRl9DSEFSICAgIDEKKyNkZWZpbmUgU1RSSU5HTElCX01BWF9DSEFSICAgICAgIDB4RkZ1CisjZGVmaW5lIFNUUklOR0xJQl9DSEFSICAgICAgICAgICBQeV9VQ1MxCisjZGVmaW5lIFNUUklOR0xJQl9UWVBFX05BTUUgICAgICAidW5pY29kZSIKKyNkZWZpbmUgU1RSSU5HTElCX1BBUlNFX0NPREUgICAgICJVIgorI2RlZmluZSBTVFJJTkdMSUJfRU1QVFkgICAgICAgICAgdW5pY29kZV9lbXB0eQorI2RlZmluZSBTVFJJTkdMSUJfSVNTUEFDRSAgICAgICAgUHlfVU5JQ09ERV9JU1NQQUNFCisjZGVmaW5lIFNUUklOR0xJQl9JU0xJTkVCUkVBSyAgICBCTE9PTV9MSU5FQlJFQUsKKyNkZWZpbmUgU1RSSU5HTElCX0lTREVDSU1BTCAgICAgIFB5X1VOSUNPREVfSVNERUNJTUFMCisjZGVmaW5lIFNUUklOR0xJQl9UT0RFQ0lNQUwgICAgICBQeV9VTklDT0RFX1RPREVDSU1BTAorI2RlZmluZSBTVFJJTkdMSUJfU1RSICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEKKyNkZWZpbmUgU1RSSU5HTElCX0xFTiAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RICisjZGVmaW5lIFNUUklOR0xJQl9ORVcgICAgICAgICAgICBfUHlVbmljb2RlX0Zyb21VQ1MxCisjZGVmaW5lIFNUUklOR0xJQl9SRVNJWkUgICAgICAgICBub3Rfc3VwcG9ydGVkCisjZGVmaW5lIFNUUklOR0xJQl9DSEVDSyAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2sKKyNkZWZpbmUgU1RSSU5HTElCX0NIRUNLX0VYQUNUICAgIFB5VW5pY29kZV9DaGVja0V4YWN0CisKKyNkZWZpbmUgU1RSSU5HTElCX1RPU1RSICAgICAgICAgIFB5T2JqZWN0X1N0cgorI2RlZmluZSBTVFJJTkdMSUJfVE9BU0NJSSAgICAgICAgUHlPYmplY3RfQVNDSUkKKworI2RlZmluZSBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcgX1B5VW5pY29kZV91Y3MxX0luc2VydFRob3VzYW5kc0dyb3VwaW5nCisKKwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvdWNzMmxpYi5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvdWNzMmxpYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1ZTU3MjkKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi91Y3MybGliLmgKQEAgLTAsMCArMSwzMCBAQAorLyogdGhpcyBpcyBzb3J0IG9mIGEgaGFjay4gIHRoZXJlJ3MgYXQgbGVhc3Qgb25lIHBsYWNlIChmb3JtYXR0aW5nCisgICBmbG9hdHMpIHdoZXJlIHNvbWUgc3RyaW5nbGliIGNvZGUgdGFrZXMgYSBkaWZmZXJlbnQgcGF0aCBpZiBpdCdzCisgICBjb21waWxlZCBhcyB1bmljb2RlLiAqLworI2RlZmluZSBTVFJJTkdMSUJfSVNfVU5JQ09ERSAgICAgMQorCisjZGVmaW5lIEZBU1RTRUFSQ0ggICAgICAgICAgICAgICB1Y3MybGliX2Zhc3RzZWFyY2gKKyNkZWZpbmUgU1RSSU5HTElCKEYpICAgICAgICAgICAgIHVjczJsaWJfIyNGCisjZGVmaW5lIFNUUklOR0xJQl9PQkpFQ1QgICAgICAgICBQeVVuaWNvZGVPYmplY3QKKyNkZWZpbmUgU1RSSU5HTElCX1NJWkVPRl9DSEFSICAgIDIKKyNkZWZpbmUgU1RSSU5HTElCX01BWF9DSEFSICAgICAgIDB4RkZGRnUKKyNkZWZpbmUgU1RSSU5HTElCX0NIQVIgICAgICAgICAgIFB5X1VDUzIKKyNkZWZpbmUgU1RSSU5HTElCX1RZUEVfTkFNRSAgICAgICJ1bmljb2RlIgorI2RlZmluZSBTVFJJTkdMSUJfUEFSU0VfQ09ERSAgICAgIlUiCisjZGVmaW5lIFNUUklOR0xJQl9FTVBUWSAgICAgICAgICB1bmljb2RlX2VtcHR5CisjZGVmaW5lIFNUUklOR0xJQl9JU1NQQUNFICAgICAgICBQeV9VTklDT0RFX0lTU1BBQ0UKKyNkZWZpbmUgU1RSSU5HTElCX0lTTElORUJSRUFLICAgIEJMT09NX0xJTkVCUkVBSworI2RlZmluZSBTVFJJTkdMSUJfSVNERUNJTUFMICAgICAgUHlfVU5JQ09ERV9JU0RFQ0lNQUwKKyNkZWZpbmUgU1RSSU5HTElCX1RPREVDSU1BTCAgICAgIFB5X1VOSUNPREVfVE9ERUNJTUFMCisjZGVmaW5lIFNUUklOR0xJQl9TVFIgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQQorI2RlZmluZSBTVFJJTkdMSUJfTEVOICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgKKyNkZWZpbmUgU1RSSU5HTElCX05FVyAgICAgICAgICAgIF9QeVVuaWNvZGVfRnJvbVVDUzIKKyNkZWZpbmUgU1RSSU5HTElCX1JFU0laRSAgICAgICAgIG5vdF9zdXBwb3J0ZWQKKyNkZWZpbmUgU1RSSU5HTElCX0NIRUNLICAgICAgICAgIFB5VW5pY29kZV9DaGVjaworI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1QgICAgUHlVbmljb2RlX0NoZWNrRXhhY3QKKworI2RlZmluZSBTVFJJTkdMSUJfVE9TVFIgICAgICAgICAgUHlPYmplY3RfU3RyCisjZGVmaW5lIFNUUklOR0xJQl9UT0FTQ0lJICAgICAgICBQeU9iamVjdF9BU0NJSQorCisjZGVmaW5lIF9QeV9JbnNlcnRUaG91c2FuZHNHcm91cGluZyBfUHlVbmljb2RlX3VjczJfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcKKwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvdWNzNGxpYi5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvdWNzNGxpYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0N2EyN2UKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi91Y3M0bGliLmgKQEAgLTAsMCArMSwzMCBAQAorLyogdGhpcyBpcyBzb3J0IG9mIGEgaGFjay4gIHRoZXJlJ3MgYXQgbGVhc3Qgb25lIHBsYWNlIChmb3JtYXR0aW5nCisgICBmbG9hdHMpIHdoZXJlIHNvbWUgc3RyaW5nbGliIGNvZGUgdGFrZXMgYSBkaWZmZXJlbnQgcGF0aCBpZiBpdCdzCisgICBjb21waWxlZCBhcyB1bmljb2RlLiAqLworI2RlZmluZSBTVFJJTkdMSUJfSVNfVU5JQ09ERSAgICAgMQorCisjZGVmaW5lIEZBU1RTRUFSQ0ggICAgICAgICAgICAgICB1Y3M0bGliX2Zhc3RzZWFyY2gKKyNkZWZpbmUgU1RSSU5HTElCKEYpICAgICAgICAgICAgIHVjczRsaWJfIyNGCisjZGVmaW5lIFNUUklOR0xJQl9PQkpFQ1QgICAgICAgICBQeVVuaWNvZGVPYmplY3QKKyNkZWZpbmUgU1RSSU5HTElCX1NJWkVPRl9DSEFSICAgIDQKKyNkZWZpbmUgU1RSSU5HTElCX01BWF9DSEFSICAgICAgIDB4MTBGRkZGdQorI2RlZmluZSBTVFJJTkdMSUJfQ0hBUiAgICAgICAgICAgUHlfVUNTNAorI2RlZmluZSBTVFJJTkdMSUJfVFlQRV9OQU1FICAgICAgInVuaWNvZGUiCisjZGVmaW5lIFNUUklOR0xJQl9QQVJTRV9DT0RFICAgICAiVSIKKyNkZWZpbmUgU1RSSU5HTElCX0VNUFRZICAgICAgICAgIHVuaWNvZGVfZW1wdHkKKyNkZWZpbmUgU1RSSU5HTElCX0lTU1BBQ0UgICAgICAgIFB5X1VOSUNPREVfSVNTUEFDRQorI2RlZmluZSBTVFJJTkdMSUJfSVNMSU5FQlJFQUsgICAgQkxPT01fTElORUJSRUFLCisjZGVmaW5lIFNUUklOR0xJQl9JU0RFQ0lNQUwgICAgICBQeV9VTklDT0RFX0lTREVDSU1BTAorI2RlZmluZSBTVFJJTkdMSUJfVE9ERUNJTUFMICAgICAgUHlfVU5JQ09ERV9UT0RFQ0lNQUwKKyNkZWZpbmUgU1RSSU5HTElCX1NUUiAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBCisjZGVmaW5lIFNUUklOR0xJQl9MRU4gICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSAorI2RlZmluZSBTVFJJTkdMSUJfTkVXICAgICAgICAgICAgX1B5VW5pY29kZV9Gcm9tVUNTNAorI2RlZmluZSBTVFJJTkdMSUJfUkVTSVpFICAgICAgICAgbm90X3N1cHBvcnRlZAorI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0sgICAgICAgICAgUHlVbmljb2RlX0NoZWNrCisjZGVmaW5lIFNUUklOR0xJQl9DSEVDS19FWEFDVCAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdAorCisjZGVmaW5lIFNUUklOR0xJQl9UT1NUUiAgICAgICAgICBQeU9iamVjdF9TdHIKKyNkZWZpbmUgU1RSSU5HTElCX1RPQVNDSUkgICAgICAgIFB5T2JqZWN0X0FTQ0lJCisKKyNkZWZpbmUgX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nIF9QeVVuaWNvZGVfdWNzNF9JbnNlcnRUaG91c2FuZHNHcm91cGluZworCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi91bmRlZi5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvdW5kZWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzExN2VjCi0tLSAvZGV2L251bGwKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvdW5kZWYuaApAQCAtMCwwICsxLDEyIEBACisjdW5kZWYgIEZBU1RTRUFSQ0gKKyN1bmRlZiAgU1RSSU5HTElCCisjdW5kZWYgIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUgorI3VuZGVmICBTVFJJTkdMSUJfTUFYX0NIQVIKKyN1bmRlZiAgU1RSSU5HTElCX0NIQVIKKyN1bmRlZiAgU1RSSU5HTElCX1NUUgorI3VuZGVmICBTVFJJTkdMSUJfTEVOCisjdW5kZWYgIFNUUklOR0xJQl9ORVcKKyN1bmRlZiAgU1RSSU5HTElCX1JFU0laRQorI3VuZGVmICBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcKKyN1bmRlZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQorCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9zdHJpbmdfZm9ybWF0LmggYi9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oCnNpbWlsYXJpdHkgaW5kZXggNzglCnJlbmFtZSBmcm9tIE9iamVjdHMvc3RyaW5nbGliL3N0cmluZ19mb3JtYXQuaApyZW5hbWUgdG8gT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZV9mb3JtYXQuaAppbmRleCBjNDZiZGMyLi5lOWJlNTE2IDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9zdHJpbmdfZm9ybWF0LmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZV9mb3JtYXQuaApAQCAtMSwyMiArMSw3IEBACiAvKgotICAgIHN0cmluZ19mb3JtYXQuaCAtLSBpbXBsZW1lbnRhdGlvbiBvZiBzdHJpbmcuZm9ybWF0KCkuCi0KLSAgICBJdCB1c2VzIHRoZSBPYmplY3RzL3N0cmluZ2xpYiBjb252ZW50aW9ucywgc28gdGhhdCBpdCBjYW4gYmUKLSAgICBjb21waWxlZCBmb3IgYm90aCB1bmljb2RlIGFuZCBzdHJpbmcgb2JqZWN0cy4KKyAgICB1bmljb2RlX2Zvcm1hdC5oIC0tIGltcGxlbWVudGF0aW9uIG9mIHN0ci5mb3JtYXQoKS4KICovCiAKLQotLyogRGVmaW5lcyBmb3IgUHl0aG9uIDIuNiBjb21wYXRpYmlsaXR5ICovCi0jaWYgUFlfVkVSU0lPTl9IRVggPCAweDAzMDAwMDAwCi0jZGVmaW5lIFB5TG9uZ19Gcm9tU3NpemVfdCBfUHlMb25nX0Zyb21Tc2l6ZV90Ci0jZW5kaWYKLQotLyogRGVmaW5lcyBmb3IgbW9yZSBlZmZpY2llbnRseSByZWFsbG9jYXRpbmcgdGhlIHN0cmluZyBidWZmZXIgKi8KLSNkZWZpbmUgSU5JVElBTF9TSVpFX0lOQ1JFTUVOVCAxMDAKLSNkZWZpbmUgU0laRV9NVUxUSVBMSUVSIDIKLSNkZWZpbmUgTUFYX1NJWkVfSU5DUkVNRU5UICAzMjAwCi0KLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qKioqKioqKioqKiAgIEdsb2JhbCBkYXRhIHN0cnVjdHVyZXMgYW5kIGZvcndhcmQgZGVjbGFyYXRpb25zICAqKioqKioqKiovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtMjYsOCArMTEsOCBAQAogICAgdW5pY29kZSBwb2ludGVycy4KICovCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnB0cjsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqZW5kOworICAgIFB5T2JqZWN0ICpzdHI7IC8qIGJvcnJvd2VkIHJlZmVyZW5jZSAqLworICAgIFB5X3NzaXplX3Qgc3RhcnQsIGVuZDsKIH0gU3ViU3RyaW5nOwogCiAKQEAgLTY0LDM0ICs0OSwzMiBAQAogCiAvKiBmaWxsIGluIGEgU3ViU3RyaW5nIGZyb20gYSBwb2ludGVyIGFuZCBsZW5ndGggKi8KIFB5X0xPQ0FMX0lOTElORSh2b2lkKQotU3ViU3RyaW5nX2luaXQoU3ViU3RyaW5nICpzdHIsIFNUUklOR0xJQl9DSEFSICpwLCBQeV9zc2l6ZV90IGxlbikKK1N1YlN0cmluZ19pbml0KFN1YlN0cmluZyAqc3RyLCBQeU9iamVjdCAqcywgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCiB7Ci0gICAgc3RyLT5wdHIgPSBwOwotICAgIGlmIChwID09IE5VTEwpCi0gICAgICAgIHN0ci0+ZW5kID0gTlVMTDsKLSAgICBlbHNlCi0gICAgICAgIHN0ci0+ZW5kID0gc3RyLT5wdHIgKyBsZW47CisgICAgc3RyLT5zdHIgPSBzOworICAgIHN0ci0+c3RhcnQgPSBzdGFydDsKKyAgICBzdHItPmVuZCA9IGVuZDsKIH0KIAotLyogcmV0dXJuIGEgbmV3IHN0cmluZy4gIGlmIHN0ci0+cHRyIGlzIE5VTEwsIHJldHVybiBOb25lICovCisvKiByZXR1cm4gYSBuZXcgc3RyaW5nLiAgaWYgc3RyLT5zdHIgaXMgTlVMTCwgcmV0dXJuIE5vbmUgKi8KIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQogU3ViU3RyaW5nX25ld19vYmplY3QoU3ViU3RyaW5nICpzdHIpCiB7Ci0gICAgaWYgKHN0ci0+cHRyID09IE5VTEwpIHsKKyAgICBpZiAoc3RyLT5zdHIgPT0gTlVMTCkgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KLSAgICByZXR1cm4gU1RSSU5HTElCX05FVyhzdHItPnB0ciwgc3RyLT5lbmQgLSBzdHItPnB0cik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9TdWJzdHJpbmcoc3RyLT5zdHIsIHN0ci0+c3RhcnQsIHN0ci0+ZW5kKTsKIH0KIAotLyogcmV0dXJuIGEgbmV3IHN0cmluZy4gIGlmIHN0ci0+cHRyIGlzIE5VTEwsIHJldHVybiBOb25lICovCisvKiByZXR1cm4gYSBuZXcgc3RyaW5nLiAgaWYgc3RyLT5zdHIgaXMgTlVMTCwgcmV0dXJuIE5vbmUgKi8KIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQogU3ViU3RyaW5nX25ld19vYmplY3Rfb3JfZW1wdHkoU3ViU3RyaW5nICpzdHIpCiB7Ci0gICAgaWYgKHN0ci0+cHRyID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFNUUklOR0xJQl9ORVcoTlVMTCwgMCk7CisgICAgaWYgKHN0ci0+c3RyID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9OZXcoMCwgMCk7CiAgICAgfQotICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKHN0ci0+cHRyLCBzdHItPmVuZCAtIHN0ci0+cHRyKTsKKyAgICByZXR1cm4gU3ViU3RyaW5nX25ld19vYmplY3Qoc3RyKTsKIH0KIAogLyogUmV0dXJuIDEgaWYgYW4gZXJyb3IgaGFzIGJlZW4gZGV0ZWN0ZWQgc3dpdGNoaW5nIGJldHdlZW4gYXV0b21hdGljCkBAIC0xMjEsNzQgKzEwNCw2IEBACiAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKiAgICBPdXRwdXQgc3RyaW5nIG1hbmFnZW1lbnQgZnVuY3Rpb25zICAgICAgICoqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnB0cjsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqZW5kOwotICAgIFB5T2JqZWN0ICpvYmo7Ci0gICAgUHlfc3NpemVfdCBzaXplX2luY3JlbWVudDsKLX0gT3V0cHV0U3RyaW5nOwotCi0vKiBpbml0aWFsaXplIGFuIE91dHB1dFN0cmluZyBvYmplY3QsIHJlc2VydmluZyBzaXplIGNoYXJhY3RlcnMgKi8KLXN0YXRpYyBpbnQKLW91dHB1dF9pbml0aWFsaXplKE91dHB1dFN0cmluZyAqb3V0cHV0LCBQeV9zc2l6ZV90IHNpemUpCi17Ci0gICAgb3V0cHV0LT5vYmogPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHNpemUpOwotICAgIGlmIChvdXRwdXQtPm9iaiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIG91dHB1dC0+cHRyID0gU1RSSU5HTElCX1NUUihvdXRwdXQtPm9iaik7Ci0gICAgb3V0cHV0LT5lbmQgPSBTVFJJTkdMSUJfTEVOKG91dHB1dC0+b2JqKSArIG91dHB1dC0+cHRyOwotICAgIG91dHB1dC0+c2l6ZV9pbmNyZW1lbnQgPSBJTklUSUFMX1NJWkVfSU5DUkVNRU5UOwotCi0gICAgcmV0dXJuIDE7Ci19Ci0KLS8qCi0gICAgb3V0cHV0X2V4dGVuZCByZWFsbG9jYXRlcyB0aGUgb3V0cHV0IHN0cmluZyBidWZmZXIuCi0gICAgSXQgcmV0dXJucyBhIHN0YXR1czogIDAgZm9yIGEgZmFpbGVkIHJlYWxsb2NhdGlvbiwKLSAgICAxIGZvciBzdWNjZXNzLgotKi8KLQotc3RhdGljIGludAotb3V0cHV0X2V4dGVuZChPdXRwdXRTdHJpbmcgKm91dHB1dCwgUHlfc3NpemVfdCBjb3VudCkKLXsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqc3RhcnRwdHIgPSBTVFJJTkdMSUJfU1RSKG91dHB1dC0+b2JqKTsKLSAgICBQeV9zc2l6ZV90IGN1cmxlbiA9IG91dHB1dC0+cHRyIC0gc3RhcnRwdHI7Ci0gICAgUHlfc3NpemVfdCBtYXhsZW4gPSBjdXJsZW4gKyBjb3VudCArIG91dHB1dC0+c2l6ZV9pbmNyZW1lbnQ7Ci0KLSAgICBpZiAoU1RSSU5HTElCX1JFU0laRSgmb3V0cHV0LT5vYmosIG1heGxlbikgPCAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICBzdGFydHB0ciA9IFNUUklOR0xJQl9TVFIob3V0cHV0LT5vYmopOwotICAgIG91dHB1dC0+cHRyID0gc3RhcnRwdHIgKyBjdXJsZW47Ci0gICAgb3V0cHV0LT5lbmQgPSBzdGFydHB0ciArIG1heGxlbjsKLSAgICBpZiAob3V0cHV0LT5zaXplX2luY3JlbWVudCA8IE1BWF9TSVpFX0lOQ1JFTUVOVCkKLSAgICAgICAgb3V0cHV0LT5zaXplX2luY3JlbWVudCAqPSBTSVpFX01VTFRJUExJRVI7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLS8qCi0gICAgb3V0cHV0X2RhdGEgZHVtcHMgY2hhcmFjdGVycyBpbnRvIG91ciBvdXRwdXQgc3RyaW5nCi0gICAgYnVmZmVyLgotCi0gICAgSW4gc29tZSBjYXNlcywgaXQgaGFzIHRvIHJlYWxsb2NhdGUgdGhlIHN0cmluZy4KLQotICAgIEl0IHJldHVybnMgYSBzdGF0dXM6ICAwIGZvciBhIGZhaWxlZCByZWFsbG9jYXRpb24sCi0gICAgMSBmb3Igc3VjY2Vzcy4KLSovCi1zdGF0aWMgaW50Ci1vdXRwdXRfZGF0YShPdXRwdXRTdHJpbmcgKm91dHB1dCwgY29uc3QgU1RSSU5HTElCX0NIQVIgKnMsIFB5X3NzaXplX3QgY291bnQpCi17Ci0gICAgaWYgKChjb3VudCA+IG91dHB1dC0+ZW5kIC0gb3V0cHV0LT5wdHIpICYmICFvdXRwdXRfZXh0ZW5kKG91dHB1dCwgY291bnQpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBtZW1jcHkob3V0cHV0LT5wdHIsIHMsIGNvdW50ICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7Ci0gICAgb3V0cHV0LT5wdHIgKz0gY291bnQ7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKioqKioqKioqKiogIEZvcm1hdCBzdHJpbmcgcGFyc2luZyAtLSBpbnRlZ2VycyBhbmQgaWRlbnRpZmllcnMgKioqKioqKioqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIApAQCAtMTk3LDE0ICsxMTIsMTQgQEAKIHsKICAgICBQeV9zc2l6ZV90IGFjY3VtdWxhdG9yID0gMDsKICAgICBQeV9zc2l6ZV90IGRpZ2l0dmFsOwotICAgIFNUUklOR0xJQl9DSEFSICpwOworICAgIFB5X3NzaXplX3QgaTsKIAogICAgIC8qIGVtcHR5IHN0cmluZyBpcyBhbiBlcnJvciAqLwotICAgIGlmIChzdHItPnB0ciA+PSBzdHItPmVuZCkKKyAgICBpZiAoc3RyLT5zdGFydCA+PSBzdHItPmVuZCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgZm9yIChwID0gc3RyLT5wdHI7IHAgPCBzdHItPmVuZDsgcCsrKSB7Ci0gICAgICAgIGRpZ2l0dmFsID0gU1RSSU5HTElCX1RPREVDSU1BTCgqcCk7CisgICAgZm9yIChpID0gc3RyLT5zdGFydDsgaSA8IHN0ci0+ZW5kOyBpKyspIHsKKyAgICAgICAgZGlnaXR2YWwgPSBQeV9VTklDT0RFX1RPREVDSU1BTChQeVVuaWNvZGVfUkVBRF9DSEFSKHN0ci0+c3RyLCBpKSk7CiAgICAgICAgIGlmIChkaWdpdHZhbCA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIC8qCkBAIC0yNzksMzQgKzE5NCwzNiBAQAogICAgICAgIGxpZmV0aW1lIG9mIHRoZSBpdGVyYXRvci4gIGNhbiBiZSBlbXB0eSAqLwogICAgIFN1YlN0cmluZyBzdHI7CiAKLSAgICAvKiBwb2ludGVyIHRvIHdoZXJlIHdlIGFyZSBpbnNpZGUgZmllbGRfbmFtZSAqLwotICAgIFNUUklOR0xJQl9DSEFSICpwdHI7CisgICAgLyogaW5kZXggdG8gd2hlcmUgd2UgYXJlIGluc2lkZSBmaWVsZF9uYW1lICovCisgICAgUHlfc3NpemVfdCBpbmRleDsKIH0gRmllbGROYW1lSXRlcmF0b3I7CiAKIAogc3RhdGljIGludAotRmllbGROYW1lSXRlcmF0b3JfaW5pdChGaWVsZE5hbWVJdGVyYXRvciAqc2VsZiwgU1RSSU5HTElCX0NIQVIgKnB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4pCitGaWVsZE5hbWVJdGVyYXRvcl9pbml0KEZpZWxkTmFtZUl0ZXJhdG9yICpzZWxmLCBQeU9iamVjdCAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCiB7Ci0gICAgU3ViU3RyaW5nX2luaXQoJnNlbGYtPnN0ciwgcHRyLCBsZW4pOwotICAgIHNlbGYtPnB0ciA9IHNlbGYtPnN0ci5wdHI7CisgICAgU3ViU3RyaW5nX2luaXQoJnNlbGYtPnN0ciwgcywgc3RhcnQsIGVuZCk7CisgICAgc2VsZi0+aW5kZXggPSBzdGFydDsKICAgICByZXR1cm4gMTsKIH0KIAogc3RhdGljIGludAogX0ZpZWxkTmFtZUl0ZXJhdG9yX2F0dHIoRmllbGROYW1lSXRlcmF0b3IgKnNlbGYsIFN1YlN0cmluZyAqbmFtZSkKIHsKLSAgICBTVFJJTkdMSUJfQ0hBUiBjOworICAgIFB5X1VDUzQgYzsKIAotICAgIG5hbWUtPnB0ciA9IHNlbGYtPnB0cjsKKyAgICBuYW1lLT5zdHIgPSBzZWxmLT5zdHIuc3RyOworICAgIG5hbWUtPnN0YXJ0ID0gc2VsZi0+aW5kZXg7CiAKICAgICAvKiByZXR1cm4gZXZlcnl0aGluZyB1bnRpbCAnLicgb3IgJ1snICovCi0gICAgd2hpbGUgKHNlbGYtPnB0ciA8IHNlbGYtPnN0ci5lbmQpIHsKLSAgICAgICAgc3dpdGNoIChjID0gKnNlbGYtPnB0cisrKSB7CisgICAgd2hpbGUgKHNlbGYtPmluZGV4IDwgc2VsZi0+c3RyLmVuZCkgeworICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihzZWxmLT5zdHIuc3RyLCBzZWxmLT5pbmRleCsrKTsKKyAgICAgICAgc3dpdGNoIChjKSB7CiAgICAgICAgIGNhc2UgJ1snOgogICAgICAgICBjYXNlICcuJzoKICAgICAgICAgICAgIC8qIGJhY2t1cCBzbyB0aGF0IHdlIHRoaXMgY2hhcmFjdGVyIHdpbGwgYmUgc2VlbiBuZXh0IHRpbWUgKi8KLSAgICAgICAgICAgIHNlbGYtPnB0ci0tOworICAgICAgICAgICAgc2VsZi0+aW5kZXgtLTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgY29udGludWU7CkBAIC0zMTQsNyArMjMxLDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIC8qIGVuZCBvZiBzdHJpbmcgaXMgb2theSAqLwotICAgIG5hbWUtPmVuZCA9IHNlbGYtPnB0cjsKKyAgICBuYW1lLT5lbmQgPSBzZWxmLT5pbmRleDsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtMzIyLDEzICsyMzksMTUgQEAKIF9GaWVsZE5hbWVJdGVyYXRvcl9pdGVtKEZpZWxkTmFtZUl0ZXJhdG9yICpzZWxmLCBTdWJTdHJpbmcgKm5hbWUpCiB7CiAgICAgaW50IGJyYWNrZXRfc2VlbiA9IDA7Ci0gICAgU1RSSU5HTElCX0NIQVIgYzsKKyAgICBQeV9VQ1M0IGM7CiAKLSAgICBuYW1lLT5wdHIgPSBzZWxmLT5wdHI7CisgICAgbmFtZS0+c3RyID0gc2VsZi0+c3RyLnN0cjsKKyAgICBuYW1lLT5zdGFydCA9IHNlbGYtPmluZGV4OwogCiAgICAgLyogcmV0dXJuIGV2ZXJ5dGhpbmcgdW50aWwgJ10nICovCi0gICAgd2hpbGUgKHNlbGYtPnB0ciA8IHNlbGYtPnN0ci5lbmQpIHsKLSAgICAgICAgc3dpdGNoIChjID0gKnNlbGYtPnB0cisrKSB7CisgICAgd2hpbGUgKHNlbGYtPmluZGV4IDwgc2VsZi0+c3RyLmVuZCkgeworICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihzZWxmLT5zdHIuc3RyLCBzZWxmLT5pbmRleCsrKTsKKyAgICAgICAgc3dpdGNoIChjKSB7CiAgICAgICAgIGNhc2UgJ10nOgogICAgICAgICAgICAgYnJhY2tldF9zZWVuID0gMTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzQ1LDcgKzI2NCw3IEBACiAKICAgICAvKiBlbmQgb2Ygc3RyaW5nIGlzIG9rYXkgKi8KICAgICAvKiBkb24ndCBpbmNsdWRlIHRoZSAnXScgKi8KLSAgICBuYW1lLT5lbmQgPSBzZWxmLT5wdHItMTsKKyAgICBuYW1lLT5lbmQgPSBzZWxmLT5pbmRleC0xOwogICAgIHJldHVybiAxOwogfQogCkBAIC0zNTUsMTAgKzI3NCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuYW1lX2lkeCwgU3ViU3RyaW5nICpuYW1lKQogewogICAgIC8qIGNoZWNrIGF0IGVuZCBvZiBpbnB1dCAqLwotICAgIGlmIChzZWxmLT5wdHIgPj0gc2VsZi0+c3RyLmVuZCkKKyAgICBpZiAoc2VsZi0+aW5kZXggPj0gc2VsZi0+c3RyLmVuZCkKICAgICAgICAgcmV0dXJuIDE7CiAKLSAgICBzd2l0Y2ggKCpzZWxmLT5wdHIrKykgeworICAgIHN3aXRjaCAoUHlVbmljb2RlX1JFQURfQ0hBUihzZWxmLT5zdHIuc3RyLCBzZWxmLT5pbmRleCsrKSkgewogICAgIGNhc2UgJy4nOgogICAgICAgICAqaXNfYXR0cmlidXRlID0gMTsKICAgICAgICAgaWYgKF9GaWVsZE5hbWVJdGVyYXRvcl9hdHRyKHNlbGYsIG5hbWUpID09IDApCkBAIC0zODEsNyArMzAwLDcgQEAKICAgICB9CiAKICAgICAvKiBlbXB0eSBzdHJpbmcgaXMgYW4gZXJyb3IgKi8KLSAgICBpZiAobmFtZS0+cHRyID09IG5hbWUtPmVuZCkgeworICAgIGlmIChuYW1lLT5zdGFydCA9PSBuYW1lLT5lbmQpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJFbXB0eSBhdHRyaWJ1dGUgaW4gZm9ybWF0IHN0cmluZyIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0zOTcsMjQgKzMxNiwyMyBAQAogICAgICAgICAgICAncmVzdCcgaXMgYW4gaXRlcmF0b3IgdG8gcmV0dXJuIHRoZSByZXN0CiAqLwogc3RhdGljIGludAotZmllbGRfbmFtZV9zcGxpdChTVFJJTkdMSUJfQ0hBUiAqcHRyLCBQeV9zc2l6ZV90IGxlbiwgU3ViU3RyaW5nICpmaXJzdCwKK2ZpZWxkX25hbWVfc3BsaXQoUHlPYmplY3QgKnN0ciwgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIFN1YlN0cmluZyAqZmlyc3QsCiAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmZpcnN0X2lkeCwgRmllbGROYW1lSXRlcmF0b3IgKnJlc3QsCiAgICAgICAgICAgICAgICAgIEF1dG9OdW1iZXIgKmF1dG9fbnVtYmVyKQogewotICAgIFNUUklOR0xJQl9DSEFSIGM7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnAgPSBwdHI7Ci0gICAgU1RSSU5HTElCX0NIQVIgKmVuZCA9IHB0ciArIGxlbjsKKyAgICBQeV9VQ1M0IGM7CisgICAgUHlfc3NpemVfdCBpID0gc3RhcnQ7CiAgICAgaW50IGZpZWxkX25hbWVfaXNfZW1wdHk7CiAgICAgaW50IHVzaW5nX251bWVyaWNfaW5kZXg7CiAKICAgICAvKiBmaW5kIHRoZSBwYXJ0IHVwIHVudGlsIHRoZSBmaXJzdCAnLicgb3IgJ1snICovCi0gICAgd2hpbGUgKHAgPCBlbmQpIHsKLSAgICAgICAgc3dpdGNoIChjID0gKnArKykgeworICAgIHdoaWxlIChpIDwgZW5kKSB7CisgICAgICAgIHN3aXRjaCAoYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIoc3RyLCBpKyspKSB7CiAgICAgICAgIGNhc2UgJ1snOgogICAgICAgICBjYXNlICcuJzoKICAgICAgICAgICAgIC8qIGJhY2t1cCBzbyB0aGF0IHdlIHRoaXMgY2hhcmFjdGVyIGlzIGF2YWlsYWJsZSB0byB0aGUKICAgICAgICAgICAgICAgICJyZXN0IiBpdGVyYXRvciAqLwotICAgICAgICAgICAgcC0tOworICAgICAgICAgICAgaS0tOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTQyMywxNSArMzQxLDE1IEBACiAgICAgfQogCiAgICAgLyogc2V0IHVwIHRoZSByZXR1cm4gdmFsdWVzICovCi0gICAgU3ViU3RyaW5nX2luaXQoZmlyc3QsIHB0ciwgcCAtIHB0cik7Ci0gICAgRmllbGROYW1lSXRlcmF0b3JfaW5pdChyZXN0LCBwLCBlbmQgLSBwKTsKKyAgICBTdWJTdHJpbmdfaW5pdChmaXJzdCwgc3RyLCBzdGFydCwgaSk7CisgICAgRmllbGROYW1lSXRlcmF0b3JfaW5pdChyZXN0LCBzdHIsIGksIGVuZCk7CiAKICAgICAvKiBzZWUgaWYgImZpcnN0IiBpcyBhbiBpbnRlZ2VyLCBpbiB3aGljaCBjYXNlIGl0J3MgdXNlZCBhcyBhbiBpbmRleCAqLwogICAgICpmaXJzdF9pZHggPSBnZXRfaW50ZWdlcihmaXJzdCk7CiAgICAgaWYgKCpmaXJzdF9pZHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBmaWVsZF9uYW1lX2lzX2VtcHR5ID0gZmlyc3QtPnB0ciA+PSBmaXJzdC0+ZW5kOworICAgIGZpZWxkX25hbWVfaXNfZW1wdHkgPSBmaXJzdC0+c3RhcnQgPj0gZmlyc3QtPmVuZDsKIAogICAgIC8qIElmIHRoZSBmaWVsZCBuYW1lIGlzIG9taXR0ZWQgb3IgaWYgd2UgaGF2ZSBhIG51bWVyaWMgaW5kZXgKICAgICAgICBzcGVjaWZpZWQsIHRoZW4gd2UncmUgZG9pbmcgbnVtZXJpYyBpbmRleGluZyBpbnRvIGFyZ3MuICovCkBAIC00ODYsNyArNDA0LDcgQEAKICAgICBQeV9zc2l6ZV90IGluZGV4OwogICAgIEZpZWxkTmFtZUl0ZXJhdG9yIHJlc3Q7CiAKLSAgICBpZiAoIWZpZWxkX25hbWVfc3BsaXQoaW5wdXQtPnB0ciwgaW5wdXQtPmVuZCAtIGlucHV0LT5wdHIsICZmaXJzdCwKKyAgICBpZiAoIWZpZWxkX25hbWVfc3BsaXQoaW5wdXQtPnN0ciwgaW5wdXQtPnN0YXJ0LCBpbnB1dC0+ZW5kLCAmZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmRleCwgJnJlc3QsIGF1dG9fbnVtYmVyKSkgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTU3MCwzOSArNDg4LDQxIEBACiAgICAgYXBwZW5kcyB0byB0aGUgb3V0cHV0LgogKi8KIHN0YXRpYyBpbnQKLXJlbmRlcl9maWVsZChQeU9iamVjdCAqZmllbGRvYmosIFN1YlN0cmluZyAqZm9ybWF0X3NwZWMsIE91dHB1dFN0cmluZyAqb3V0cHV0KQorcmVuZGVyX2ZpZWxkKFB5T2JqZWN0ICpmaWVsZG9iaiwgU3ViU3RyaW5nICpmb3JtYXRfc3BlYywgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQogewogICAgIGludCBvayA9IDA7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjX29iamVjdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKigqZm9ybWF0dGVyKShQeU9iamVjdCAqLCBTVFJJTkdMSUJfQ0hBUiAqLCBQeV9zc2l6ZV90KSA9IE5VTEw7Ci0gICAgU1RSSU5HTElCX0NIQVIqIGZvcm1hdF9zcGVjX3N0YXJ0ID0gZm9ybWF0X3NwZWMtPnB0ciA/Ci0gICAgICAgICAgICBmb3JtYXRfc3BlYy0+cHRyIDogTlVMTDsKLSAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbiA9IGZvcm1hdF9zcGVjLT5wdHIgPwotICAgICAgICAgICAgZm9ybWF0X3NwZWMtPmVuZCAtIGZvcm1hdF9zcGVjLT5wdHIgOiAwOworICAgIGludCAoKmZvcm1hdHRlcikgKF9QeVVuaWNvZGVXcml0ZXIqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeV9zc2l6ZV90LCBQeV9zc2l6ZV90KSA9IE5VTEw7CisgICAgaW50IGVycjsKIAogICAgIC8qIElmIHdlIGtub3cgdGhlIHR5cGUgZXhhY3RseSwgc2tpcCB0aGUgbG9va3VwIG9mIF9fZm9ybWF0X18gYW5kIGp1c3QKICAgICAgICBjYWxsIHRoZSBmb3JtYXR0ZXIgZGlyZWN0bHkuICovCiAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGZpZWxkb2JqKSkKLSAgICAgICAgZm9ybWF0dGVyID0gX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZDsKKyAgICAgICAgZm9ybWF0dGVyID0gX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZFdyaXRlcjsKICAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChmaWVsZG9iaikpCi0gICAgICAgIGZvcm1hdHRlciA9X1B5TG9uZ19Gb3JtYXRBZHZhbmNlZDsKKyAgICAgICAgZm9ybWF0dGVyID0gX1B5TG9uZ19Gb3JtYXRBZHZhbmNlZFdyaXRlcjsKICAgICBlbHNlIGlmIChQeUZsb2F0X0NoZWNrRXhhY3QoZmllbGRvYmopKQotICAgICAgICBmb3JtYXR0ZXIgPSBfUHlGbG9hdF9Gb3JtYXRBZHZhbmNlZDsKLQotICAgIC8qIFhYWDogZm9yIDIuNiwgY29udmVydCBmb3JtYXRfc3BlYyB0byB0aGUgYXBwcm9wcmlhdGUgdHlwZQotICAgICAgICh1bmljb2RlLCBzdHIpICovCisgICAgICAgIGZvcm1hdHRlciA9IF9QeUZsb2F0X0Zvcm1hdEFkdmFuY2VkV3JpdGVyOworICAgIGVsc2UgaWYgKFB5Q29tcGxleF9DaGVja0V4YWN0KGZpZWxkb2JqKSkKKyAgICAgICAgZm9ybWF0dGVyID0gX1B5Q29tcGxleF9Gb3JtYXRBZHZhbmNlZFdyaXRlcjsKIAogICAgIGlmIChmb3JtYXR0ZXIpIHsKICAgICAgICAgLyogd2Uga25vdyBleGFjdGx5IHdoaWNoIGZvcm1hdHRlciB3aWxsIGJlIGNhbGxlZCB3aGVuIF9fZm9ybWF0X18gaXMKICAgICAgICAgICAgbG9va2VkIHVwLCBzbyBjYWxsIGl0IGRpcmVjdGx5LCBpbnN0ZWFkLiAqLwotICAgICAgICByZXN1bHQgPSBmb3JtYXR0ZXIoZmllbGRvYmosIGZvcm1hdF9zcGVjX3N0YXJ0LCBmb3JtYXRfc3BlY19sZW4pOworICAgICAgICBlcnIgPSBmb3JtYXR0ZXIod3JpdGVyLCBmaWVsZG9iaiwgZm9ybWF0X3NwZWMtPnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zcGVjLT5zdGFydCwgZm9ybWF0X3NwZWMtPmVuZCk7CisgICAgICAgIHJldHVybiAoZXJyID09IDApOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogV2UgbmVlZCB0byBjcmVhdGUgYW4gb2JqZWN0IG91dCBvZiB0aGUgcG9pbnRlcnMgd2UgaGF2ZSwgYmVjYXVzZQogICAgICAgICAgICBfX2Zvcm1hdF9fIHRha2VzIGEgc3RyaW5nL3VuaWNvZGUgb2JqZWN0IGZvciBmb3JtYXRfc3BlYy4gKi8KLSAgICAgICAgZm9ybWF0X3NwZWNfb2JqZWN0ID0gU1RSSU5HTElCX05FVyhmb3JtYXRfc3BlY19zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3BlY19sZW4pOworICAgICAgICBpZiAoZm9ybWF0X3NwZWMtPnN0cikKKyAgICAgICAgICAgIGZvcm1hdF9zcGVjX29iamVjdCA9IFB5VW5pY29kZV9TdWJzdHJpbmcoZm9ybWF0X3NwZWMtPnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3NwZWMtPnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3BlYy0+ZW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZm9ybWF0X3NwZWNfb2JqZWN0ID0gUHlVbmljb2RlX05ldygwLCAwKTsKICAgICAgICAgaWYgKGZvcm1hdF9zcGVjX29iamVjdCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBkb25lOwogCkBAIC02MTEsMjQgKzUzMSwxMCBAQAogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgZ290byBkb25lOwogCi0jaWYgUFlfVkVSU0lPTl9IRVggPj0gMHgwMzAwMDAwMAotICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2socmVzdWx0KSk7Ci0jZWxzZQotICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKHJlc3VsdCkgfHwgUHlVbmljb2RlX0NoZWNrKHJlc3VsdCkpOworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKHdyaXRlciwgcmVzdWx0KSA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOworICAgIG9rID0gMTsKIAotICAgIC8qIENvbnZlcnQgcmVzdWx0IHRvIG91ciB0eXBlLiAgV2UgY291bGQgYmUgc3RyLCBhbmQgcmVzdWx0IGNvdWxkCi0gICAgICAgYmUgdW5pY29kZSAqLwotICAgIHsKLSAgICAgICAgUHlPYmplY3QgKnRtcCA9IFNUUklOR0xJQl9UT1NUUihyZXN1bHQpOwotICAgICAgICBpZiAodG1wID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICByZXN1bHQgPSB0bXA7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBvayA9IG91dHB1dF9kYXRhKG91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9TVFIocmVzdWx0KSwgU1RSSU5HTElCX0xFTihyZXN1bHQpKTsKIGRvbmU6CiAgICAgUHlfWERFQ1JFRihmb3JtYXRfc3BlY19vYmplY3QpOwogICAgIFB5X1hERUNSRUYocmVzdWx0KTsKQEAgLTYzNywyMyArNTQzLDI0IEBACiAKIHN0YXRpYyBpbnQKIHBhcnNlX2ZpZWxkKFN1YlN0cmluZyAqc3RyLCBTdWJTdHJpbmcgKmZpZWxkX25hbWUsIFN1YlN0cmluZyAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqY29udmVyc2lvbikKKyAgICAgICAgICAgIFB5X1VDUzQgKmNvbnZlcnNpb24pCiB7CiAgICAgLyogTm90ZSB0aGlzIGZ1bmN0aW9uIHdvcmtzIGlmIHRoZSBmaWVsZCBuYW1lIGlzIHplcm8gbGVuZ3RoLAogICAgICAgIHdoaWNoIGlzIGdvb2QuICBaZXJvIGxlbmd0aCBmaWVsZCBuYW1lcyBhcmUgaGFuZGxlZCBsYXRlciwgaW4KICAgICAgICBmaWVsZF9uYW1lX3NwbGl0LiAqLwogCi0gICAgU1RSSU5HTElCX0NIQVIgYyA9IDA7CisgICAgUHlfVUNTNCBjID0gMDsKIAogICAgIC8qIGluaXRpYWxpemUgdGhlc2UsIGFzIHRoZXkgbWF5IGJlIGVtcHR5ICovCiAgICAgKmNvbnZlcnNpb24gPSAnXDAnOwotICAgIFN1YlN0cmluZ19pbml0KGZvcm1hdF9zcGVjLCBOVUxMLCAwKTsKKyAgICBTdWJTdHJpbmdfaW5pdChmb3JtYXRfc3BlYywgTlVMTCwgMCwgMCk7CiAKICAgICAvKiBTZWFyY2ggZm9yIHRoZSBmaWVsZCBuYW1lLiAgaXQncyB0ZXJtaW5hdGVkIGJ5IHRoZSBlbmQgb2YKICAgICAgICB0aGUgc3RyaW5nLCBvciBhICc6JyBvciAnIScgKi8KLSAgICBmaWVsZF9uYW1lLT5wdHIgPSBzdHItPnB0cjsKLSAgICB3aGlsZSAoc3RyLT5wdHIgPCBzdHItPmVuZCkgewotICAgICAgICBzd2l0Y2ggKGMgPSAqKHN0ci0+cHRyKyspKSB7CisgICAgZmllbGRfbmFtZS0+c3RyID0gc3RyLT5zdHI7CisgICAgZmllbGRfbmFtZS0+c3RhcnQgPSBzdHItPnN0YXJ0OworICAgIHdoaWxlIChzdHItPnN0YXJ0IDwgc3RyLT5lbmQpIHsKKyAgICAgICAgc3dpdGNoICgoYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIoc3RyLT5zdHIsIHN0ci0+c3RhcnQrKykpKSB7CiAgICAgICAgIGNhc2UgJzonOgogICAgICAgICBjYXNlICchJzoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjY2LDI2ICs1NzMsMjcgQEAKICAgICBpZiAoYyA9PSAnIScgfHwgYyA9PSAnOicpIHsKICAgICAgICAgLyogd2UgaGF2ZSBhIGZvcm1hdCBzcGVjaWZpZXIgYW5kL29yIGEgY29udmVyc2lvbiAqLwogICAgICAgICAvKiBkb24ndCBpbmNsdWRlIHRoZSBsYXN0IGNoYXJhY3RlciAqLwotICAgICAgICBmaWVsZF9uYW1lLT5lbmQgPSBzdHItPnB0ci0xOworICAgICAgICBmaWVsZF9uYW1lLT5lbmQgPSBzdHItPnN0YXJ0LTE7CiAKICAgICAgICAgLyogdGhlIGZvcm1hdCBzcGVjaWZpZXIgaXMgdGhlIHJlc3Qgb2YgdGhlIHN0cmluZyAqLwotICAgICAgICBmb3JtYXRfc3BlYy0+cHRyID0gc3RyLT5wdHI7CisgICAgICAgIGZvcm1hdF9zcGVjLT5zdHIgPSBzdHItPnN0cjsKKyAgICAgICAgZm9ybWF0X3NwZWMtPnN0YXJ0ID0gc3RyLT5zdGFydDsKICAgICAgICAgZm9ybWF0X3NwZWMtPmVuZCA9IHN0ci0+ZW5kOwogCiAgICAgICAgIC8qIHNlZSBpZiB0aGVyZSdzIGEgY29udmVyc2lvbiBzcGVjaWZpZXIgKi8KICAgICAgICAgaWYgKGMgPT0gJyEnKSB7CiAgICAgICAgICAgICAvKiB0aGVyZSBtdXN0IGJlIGFub3RoZXIgY2hhcmFjdGVyIHByZXNlbnQgKi8KLSAgICAgICAgICAgIGlmIChmb3JtYXRfc3BlYy0+cHRyID49IGZvcm1hdF9zcGVjLT5lbmQpIHsKKyAgICAgICAgICAgIGlmIChmb3JtYXRfc3BlYy0+c3RhcnQgPj0gZm9ybWF0X3NwZWMtPmVuZCkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kIG9mIGZvcm1hdCB3aGlsZSBsb29raW5nIGZvciBjb252ZXJzaW9uICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllciIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgKmNvbnZlcnNpb24gPSAqKGZvcm1hdF9zcGVjLT5wdHIrKyk7CisgICAgICAgICAgICAqY29udmVyc2lvbiA9IFB5VW5pY29kZV9SRUFEX0NIQVIoZm9ybWF0X3NwZWMtPnN0ciwgZm9ybWF0X3NwZWMtPnN0YXJ0KyspOwogCiAgICAgICAgICAgICAvKiBpZiB0aGVyZSBpcyBhbm90aGVyIGNoYXJhY3RlciwgaXQgbXVzdCBiZSBhIGNvbG9uICovCi0gICAgICAgICAgICBpZiAoZm9ybWF0X3NwZWMtPnB0ciA8IGZvcm1hdF9zcGVjLT5lbmQpIHsKLSAgICAgICAgICAgICAgICBjID0gKihmb3JtYXRfc3BlYy0+cHRyKyspOworICAgICAgICAgICAgaWYgKGZvcm1hdF9zcGVjLT5zdGFydCA8IGZvcm1hdF9zcGVjLT5lbmQpIHsKKyAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihmb3JtYXRfc3BlYy0+c3RyLCBmb3JtYXRfc3BlYy0+c3RhcnQrKyk7CiAgICAgICAgICAgICAgICAgaWYgKGMgIT0gJzonKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICc6JyBhZnRlciBmb3JtYXQgc3BlY2lmaWVyIik7CkBAIC02OTYsNyArNjA0LDcgQEAKICAgICB9CiAgICAgZWxzZQogICAgICAgICAvKiBlbmQgb2Ygc3RyaW5nLCB0aGVyZSdzIG5vIGZvcm1hdF9zcGVjIG9yIGNvbnZlcnNpb24gKi8KLSAgICAgICAgZmllbGRfbmFtZS0+ZW5kID0gc3RyLT5wdHI7CisgICAgICAgIGZpZWxkX25hbWUtPmVuZCA9IHN0ci0+c3RhcnQ7CiAKICAgICByZXR1cm4gMTsKIH0KQEAgLTcxNSw5ICs2MjMsMTAgQEAKIH0gTWFya3VwSXRlcmF0b3I7CiAKIHN0YXRpYyBpbnQKLU1hcmt1cEl0ZXJhdG9yX2luaXQoTWFya3VwSXRlcmF0b3IgKnNlbGYsIFNUUklOR0xJQl9DSEFSICpwdHIsIFB5X3NzaXplX3QgbGVuKQorTWFya3VwSXRlcmF0b3JfaW5pdChNYXJrdXBJdGVyYXRvciAqc2VsZiwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCiB7Ci0gICAgU3ViU3RyaW5nX2luaXQoJnNlbGYtPnN0ciwgcHRyLCBsZW4pOworICAgIFN1YlN0cmluZ19pbml0KCZzZWxmLT5zdHIsIHN0ciwgc3RhcnQsIGVuZCk7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTcyNiwzMCArNjM1LDMwIEBACiBzdGF0aWMgaW50CiBNYXJrdXBJdGVyYXRvcl9uZXh0KE1hcmt1cEl0ZXJhdG9yICpzZWxmLCBTdWJTdHJpbmcgKmxpdGVyYWwsCiAgICAgICAgICAgICAgICAgICAgIGludCAqZmllbGRfcHJlc2VudCwgU3ViU3RyaW5nICpmaWVsZF9uYW1lLAotICAgICAgICAgICAgICAgICAgICBTdWJTdHJpbmcgKmZvcm1hdF9zcGVjLCBTVFJJTkdMSUJfQ0hBUiAqY29udmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgU3ViU3RyaW5nICpmb3JtYXRfc3BlYywgUHlfVUNTNCAqY29udmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgaW50ICpmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmcpCiB7CiAgICAgaW50IGF0X2VuZDsKLSAgICBTVFJJTkdMSUJfQ0hBUiBjID0gMDsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqc3RhcnQ7CisgICAgUHlfVUNTNCBjID0gMDsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0OwogICAgIGludCBjb3VudDsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBpbnQgbWFya3VwX2ZvbGxvd3MgPSAwOwogCiAgICAgLyogaW5pdGlhbGl6ZSBhbGwgb2YgdGhlIG91dHB1dCB2YXJpYWJsZXMgKi8KLSAgICBTdWJTdHJpbmdfaW5pdChsaXRlcmFsLCBOVUxMLCAwKTsKLSAgICBTdWJTdHJpbmdfaW5pdChmaWVsZF9uYW1lLCBOVUxMLCAwKTsKLSAgICBTdWJTdHJpbmdfaW5pdChmb3JtYXRfc3BlYywgTlVMTCwgMCk7CisgICAgU3ViU3RyaW5nX2luaXQobGl0ZXJhbCwgTlVMTCwgMCwgMCk7CisgICAgU3ViU3RyaW5nX2luaXQoZmllbGRfbmFtZSwgTlVMTCwgMCwgMCk7CisgICAgU3ViU3RyaW5nX2luaXQoZm9ybWF0X3NwZWMsIE5VTEwsIDAsIDApOwogICAgICpjb252ZXJzaW9uID0gJ1wwJzsKICAgICAqZm9ybWF0X3NwZWNfbmVlZHNfZXhwYW5kaW5nID0gMDsKICAgICAqZmllbGRfcHJlc2VudCA9IDA7CiAKICAgICAvKiBObyBtb3JlIGlucHV0LCBlbmQgb2YgaXRlcmF0b3IuICBUaGlzIGlzIHRoZSBub3JtYWwgZXhpdAogICAgICAgIHBhdGguICovCi0gICAgaWYgKHNlbGYtPnN0ci5wdHIgPj0gc2VsZi0+c3RyLmVuZCkKKyAgICBpZiAoc2VsZi0+c3RyLnN0YXJ0ID49IHNlbGYtPnN0ci5lbmQpCiAgICAgICAgIHJldHVybiAxOwogCi0gICAgc3RhcnQgPSBzZWxmLT5zdHIucHRyOworICAgIHN0YXJ0ID0gc2VsZi0+c3RyLnN0YXJ0OwogCiAgICAgLyogRmlyc3QgcmVhZCBhbnkgbGl0ZXJhbCB0ZXh0LiBSZWFkIHVudGlsIHRoZSBlbmQgb2Ygc3RyaW5nLCBhbgogICAgICAgIGVzY2FwZWQgJ3snIG9yICd9Jywgb3IgYW4gdW5lc2NhcGVkICd7Jy4gIEluIG9yZGVyIHRvIG5ldmVyCkBAIC03NTgsOCArNjY3LDggQEAKICAgICAgICBpbmNsdWRpbmcgdGhlIGJyYWNlLCBidXQgbm8gZm9ybWF0IG9iamVjdC4gIFRoZSBuZXh0IHRpbWUKICAgICAgICB0aHJvdWdoLCB3ZSdsbCByZXR1cm4gdGhlIHJlc3Qgb2YgdGhlIGxpdGVyYWwsIHNraXBwaW5nIHBhc3QKICAgICAgICB0aGUgc2Vjb25kIGNvbnNlY3V0aXZlIGJyYWNlLiAqLwotICAgIHdoaWxlIChzZWxmLT5zdHIucHRyIDwgc2VsZi0+c3RyLmVuZCkgewotICAgICAgICBzd2l0Y2ggKGMgPSAqKHNlbGYtPnN0ci5wdHIrKykpIHsKKyAgICB3aGlsZSAoc2VsZi0+c3RyLnN0YXJ0IDwgc2VsZi0+c3RyLmVuZCkgeworICAgICAgICBzd2l0Y2ggKGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHNlbGYtPnN0ci5zdHIsIHNlbGYtPnN0ci5zdGFydCsrKSkgewogICAgICAgICBjYXNlICd7JzoKICAgICAgICAgY2FzZSAnfSc6CiAgICAgICAgICAgICBtYXJrdXBfZm9sbG93cyA9IDE7CkBAIC03NzAsMTAgKzY3OSwxMiBAQAogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBhdF9lbmQgPSBzZWxmLT5zdHIucHRyID49IHNlbGYtPnN0ci5lbmQ7Ci0gICAgbGVuID0gc2VsZi0+c3RyLnB0ciAtIHN0YXJ0OworICAgIGF0X2VuZCA9IHNlbGYtPnN0ci5zdGFydCA+PSBzZWxmLT5zdHIuZW5kOworICAgIGxlbiA9IHNlbGYtPnN0ci5zdGFydCAtIHN0YXJ0OwogCi0gICAgaWYgKChjID09ICd9JykgJiYgKGF0X2VuZCB8fCAoYyAhPSAqc2VsZi0+c3RyLnB0cikpKSB7CisgICAgaWYgKChjID09ICd9JykgJiYgKGF0X2VuZCB8fAorICAgICAgICAgICAgICAgICAgICAgICAoYyAhPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHNlbGYtPnN0ci5zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyLnN0YXJ0KSkpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiU2luZ2xlICd9JyBlbmNvdW50ZXJlZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gZm9ybWF0IHN0cmluZyIpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTc4NCwxMCArNjk1LDEwIEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAoIWF0X2VuZCkgewotICAgICAgICBpZiAoYyA9PSAqc2VsZi0+c3RyLnB0cikgeworICAgICAgICBpZiAoYyA9PSBQeVVuaWNvZGVfUkVBRF9DSEFSKHNlbGYtPnN0ci5zdHIsIHNlbGYtPnN0ci5zdGFydCkpIHsKICAgICAgICAgICAgIC8qIGVzY2FwZWQgfSBvciB7LCBza2lwIGl0IGluIHRoZSBpbnB1dC4gIHRoZXJlIGlzIG5vCiAgICAgICAgICAgICAgICBtYXJrdXAgb2JqZWN0IGZvbGxvd2luZyB1cywganVzdCB0aGlzIGxpdGVyYWwgdGV4dCAqLwotICAgICAgICAgICAgc2VsZi0+c3RyLnB0cisrOworICAgICAgICAgICAgc2VsZi0+c3RyLnN0YXJ0Kys7CiAgICAgICAgICAgICBtYXJrdXBfZm9sbG93cyA9IDA7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQpAQCAtNzk1LDcgKzcwNiw4IEBACiAgICAgfQogCiAgICAgLyogcmVjb3JkIHRoZSBsaXRlcmFsIHRleHQgKi8KLSAgICBsaXRlcmFsLT5wdHIgPSBzdGFydDsKKyAgICBsaXRlcmFsLT5zdHIgPSBzZWxmLT5zdHIuc3RyOworICAgIGxpdGVyYWwtPnN0YXJ0ID0gc3RhcnQ7CiAgICAgbGl0ZXJhbC0+ZW5kID0gc3RhcnQgKyBsZW47CiAKICAgICBpZiAoIW1hcmt1cF9mb2xsb3dzKQpAQCAtODA3LDEyICs3MTksMTIgQEAKICAgICAqZmllbGRfcHJlc2VudCA9IDE7CiAgICAgY291bnQgPSAxOwogCi0gICAgc3RhcnQgPSBzZWxmLT5zdHIucHRyOworICAgIHN0YXJ0ID0gc2VsZi0+c3RyLnN0YXJ0OwogCiAgICAgLyogd2Uga25vdyB3ZSBjYW4ndCBoYXZlIGEgemVybyBsZW5ndGggc3RyaW5nLCBzbyBkb24ndCB3b3JyeQogICAgICAgIGFib3V0IHRoYXQgY2FzZSAqLwotICAgIHdoaWxlIChzZWxmLT5zdHIucHRyIDwgc2VsZi0+c3RyLmVuZCkgewotICAgICAgICBzd2l0Y2ggKGMgPSAqKHNlbGYtPnN0ci5wdHIrKykpIHsKKyAgICB3aGlsZSAoc2VsZi0+c3RyLnN0YXJ0IDwgc2VsZi0+c3RyLmVuZCkgeworICAgICAgICBzd2l0Y2ggKGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHNlbGYtPnN0ci5zdHIsIHNlbGYtPnN0ci5zdGFydCsrKSkgewogICAgICAgICBjYXNlICd7JzoKICAgICAgICAgICAgIC8qIHRoZSBmb3JtYXQgc3BlYyBuZWVkcyB0byBiZSByZWN1cnNpdmVseSBleHBhbmRlZC4KICAgICAgICAgICAgICAgIHRoaXMgaXMgYW4gb3B0aW1pemF0aW9uLCBhbmQgbm90IHN0cmljdGx5IG5lZWRlZCAqLwpAQCAtODI1LDcgKzczNyw3IEBACiAgICAgICAgICAgICAgICAgLyogd2UncmUgZG9uZS4gIHBhcnNlIGFuZCBnZXQgb3V0ICovCiAgICAgICAgICAgICAgICAgU3ViU3RyaW5nIHM7CiAKLSAgICAgICAgICAgICAgICBTdWJTdHJpbmdfaW5pdCgmcywgc3RhcnQsIHNlbGYtPnN0ci5wdHIgLSAxIC0gc3RhcnQpOworICAgICAgICAgICAgICAgIFN1YlN0cmluZ19pbml0KCZzLCBzZWxmLT5zdHIuc3RyLCBzdGFydCwgc2VsZi0+c3RyLnN0YXJ0IC0gMSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlX2ZpZWxkKCZzLCBmaWVsZF9uYW1lLCBmb3JtYXRfc3BlYywgY29udmVyc2lvbikgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTg0NCw3ICs3NTYsNyBAQAogCiAvKiBkbyB0aGUgIXIgb3IgIXMgY29udmVyc2lvbiBvbiBvYmogKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1kb19jb252ZXJzaW9uKFB5T2JqZWN0ICpvYmosIFNUUklOR0xJQl9DSEFSIGNvbnZlcnNpb24pCitkb19jb252ZXJzaW9uKFB5T2JqZWN0ICpvYmosIFB5X1VDUzQgY29udmVyc2lvbikKIHsKICAgICAvKiBYWFggaW4gcHJlLTMuMCwgZG8gd2UgbmVlZCB0byBjb252ZXJ0IHRoaXMgdG8gdW5pY29kZSwgc2luY2UgaXQKICAgICAgICBtaWdodCBoYXZlIHJldHVybmVkIGEgc3RyaW5nPyAqLwpAQCAtODUyLDExICs3NjQsOSBAQAogICAgIGNhc2UgJ3InOgogICAgICAgICByZXR1cm4gUHlPYmplY3RfUmVwcihvYmopOwogICAgIGNhc2UgJ3MnOgotICAgICAgICByZXR1cm4gU1RSSU5HTElCX1RPU1RSKG9iaik7Ci0jaWYgUFlfVkVSU0lPTl9IRVggPj0gMHgwMzAwMDAwMAorICAgICAgICByZXR1cm4gUHlPYmplY3RfU3RyKG9iaik7CiAgICAgY2FzZSAnYSc6Ci0gICAgICAgIHJldHVybiBTVFJJTkdMSUJfVE9BU0NJSShvYmopOwotI2VuZGlmCisgICAgICAgIHJldHVybiBQeU9iamVjdF9BU0NJSShvYmopOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGlmIChjb252ZXJzaW9uID4gMzIgJiYgY29udmVyc2lvbiA8IDEyNykgewogICAgICAgICAgICAgICAgIC8qIEl0J3MgdGhlIEFTQ0lJIHN1YnJhbmdlOyBjYXN0aW5nIHRvIGNoYXIgaXMgc2FmZQpAQCAtODg4LDggKzc5OCw4IEBACiAKIHN0YXRpYyBpbnQKIG91dHB1dF9tYXJrdXAoU3ViU3RyaW5nICpmaWVsZF9uYW1lLCBTdWJTdHJpbmcgKmZvcm1hdF9zcGVjLAotICAgICAgICAgICAgICBpbnQgZm9ybWF0X3NwZWNfbmVlZHNfZXhwYW5kaW5nLCBTVFJJTkdMSUJfQ0hBUiBjb252ZXJzaW9uLAotICAgICAgICAgICAgICBPdXRwdXRTdHJpbmcgKm91dHB1dCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MsCisgICAgICAgICAgICAgIGludCBmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmcsIFB5X1VDUzQgY29udmVyc2lvbiwKKyAgICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncywKICAgICAgICAgICAgICAgaW50IHJlY3Vyc2lvbl9kZXB0aCwgQXV0b051bWJlciAqYXV0b19udW1iZXIpCiB7CiAgICAgUHlPYmplY3QgKnRtcCA9IE5VTEw7CkBAIC05MDUsNyArODE1LDcgQEAKIAogICAgIGlmIChjb252ZXJzaW9uICE9ICdcMCcpIHsKICAgICAgICAgdG1wID0gZG9fY29udmVyc2lvbihmaWVsZG9iaiwgY29udmVyc2lvbik7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWSh0bXApID09IC0xKQogICAgICAgICAgICAgZ290byBkb25lOwogCiAgICAgICAgIC8qIGRvIHRoZSBhc3NpZ25tZW50LCB0cmFuc2ZlcnJpbmcgb3duZXJzaGlwOiBmaWVsZG9iaiA9IHRtcCAqLwpAQCAtOTE4LDIwICs4MjgsMTkgQEAKICAgICBpZiAoZm9ybWF0X3NwZWNfbmVlZHNfZXhwYW5kaW5nKSB7CiAgICAgICAgIHRtcCA9IGJ1aWxkX3N0cmluZyhmb3JtYXRfc3BlYywgYXJncywga3dhcmdzLCByZWN1cnNpb25fZGVwdGgtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9fbnVtYmVyKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICBpZiAodG1wID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHRtcCkgPT0gLTEpCiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAKICAgICAgICAgLyogbm90ZSB0aGF0IGluIHRoZSBjYXNlIHdlJ3JlIGV4cGFuZGluZyB0aGUgZm9ybWF0IHN0cmluZywKICAgICAgICAgICAgdG1wIG11c3QgYmUga2VwdCBhcm91bmQgdW50aWwgYWZ0ZXIgdGhlIGNhbGwgdG8KICAgICAgICAgICAgcmVuZGVyX2ZpZWxkLiAqLwotICAgICAgICBTdWJTdHJpbmdfaW5pdCgmZXhwYW5kZWRfZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9TVFIodG1wKSwgU1RSSU5HTElCX0xFTih0bXApKTsKKyAgICAgICAgU3ViU3RyaW5nX2luaXQoJmV4cGFuZGVkX2Zvcm1hdF9zcGVjLCB0bXAsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHRtcCkpOwogICAgICAgICBhY3R1YWxfZm9ybWF0X3NwZWMgPSAmZXhwYW5kZWRfZm9ybWF0X3NwZWM7CiAgICAgfQogICAgIGVsc2UKICAgICAgICAgYWN0dWFsX2Zvcm1hdF9zcGVjID0gZm9ybWF0X3NwZWM7CiAKLSAgICBpZiAocmVuZGVyX2ZpZWxkKGZpZWxkb2JqLCBhY3R1YWxfZm9ybWF0X3NwZWMsIG91dHB1dCkgPT0gMCkKKyAgICBpZiAocmVuZGVyX2ZpZWxkKGZpZWxkb2JqLCBhY3R1YWxfZm9ybWF0X3NwZWMsIHdyaXRlcikgPT0gMCkKICAgICAgICAgZ290byBkb25lOwogCiAgICAgcmVzdWx0ID0gMTsKQEAgLTk1MSw3ICs4NjAsNyBAQAogKi8KIHN0YXRpYyBpbnQKIGRvX21hcmt1cChTdWJTdHJpbmcgKmlucHV0LCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncywKLSAgICAgICAgICBPdXRwdXRTdHJpbmcgKm91dHB1dCwgaW50IHJlY3Vyc2lvbl9kZXB0aCwgQXV0b051bWJlciAqYXV0b19udW1iZXIpCisgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBpbnQgcmVjdXJzaW9uX2RlcHRoLCBBdXRvTnVtYmVyICphdXRvX251bWJlcikKIHsKICAgICBNYXJrdXBJdGVyYXRvciBpdGVyOwogICAgIGludCBmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmc7CkBAIC05NjAsMjAgKzg2OSwzNSBAQAogICAgIFN1YlN0cmluZyBsaXRlcmFsOwogICAgIFN1YlN0cmluZyBmaWVsZF9uYW1lOwogICAgIFN1YlN0cmluZyBmb3JtYXRfc3BlYzsKLSAgICBTVFJJTkdMSUJfQ0hBUiBjb252ZXJzaW9uOworICAgIFB5X1VDUzQgY29udmVyc2lvbiwgbWF4Y2hhcjsKKyAgICBQeV9zc2l6ZV90IHN1YmxlbjsKKyAgICBpbnQgZXJyOwogCi0gICAgTWFya3VwSXRlcmF0b3JfaW5pdCgmaXRlciwgaW5wdXQtPnB0ciwgaW5wdXQtPmVuZCAtIGlucHV0LT5wdHIpOworICAgIE1hcmt1cEl0ZXJhdG9yX2luaXQoJml0ZXIsIGlucHV0LT5zdHIsIGlucHV0LT5zdGFydCwgaW5wdXQtPmVuZCk7CiAgICAgd2hpbGUgKChyZXN1bHQgPSBNYXJrdXBJdGVyYXRvcl9uZXh0KCZpdGVyLCAmbGl0ZXJhbCwgJmZpZWxkX3ByZXNlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaWVsZF9uYW1lLCAmZm9ybWF0X3NwZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb252ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0X3NwZWNfbmVlZHNfZXhwYW5kaW5nKSkgPT0gMikgewotICAgICAgICBpZiAoIW91dHB1dF9kYXRhKG91dHB1dCwgbGl0ZXJhbC5wdHIsIGxpdGVyYWwuZW5kIC0gbGl0ZXJhbC5wdHIpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmIChmaWVsZF9wcmVzZW50KQorICAgICAgICBzdWJsZW4gPSBsaXRlcmFsLmVuZCAtIGxpdGVyYWwuc3RhcnQ7CisgICAgICAgIGlmIChzdWJsZW4pIHsKKyAgICAgICAgICAgIG1heGNoYXIgPSBfUHlVbmljb2RlX0ZpbmRNYXhDaGFyKGxpdGVyYWwuc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGl0ZXJhbC5zdGFydCwgbGl0ZXJhbC5lbmQpOworICAgICAgICAgICAgZXJyID0gX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKHdyaXRlciwgc3VibGVuLCBtYXhjaGFyKTsKKyAgICAgICAgICAgIGlmIChlcnIgPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXRlcmFsLnN0ciwgbGl0ZXJhbC5zdGFydCwgc3VibGVuKTsKKyAgICAgICAgICAgIHdyaXRlci0+cG9zICs9IHN1YmxlbjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmaWVsZF9wcmVzZW50KSB7CisgICAgICAgICAgICBpZiAoaXRlci5zdHIuc3RhcnQgPT0gaXRlci5zdHIuZW5kKQorICAgICAgICAgICAgICAgIHdyaXRlci0+b3ZlcmFsbG9jYXRlID0gMDsKICAgICAgICAgICAgIGlmICghb3V0cHV0X21hcmt1cCgmZmllbGRfbmFtZSwgJmZvcm1hdF9zcGVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zcGVjX25lZWRzX2V4cGFuZGluZywgY29udmVyc2lvbiwgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zcGVjX25lZWRzX2V4cGFuZGluZywgY29udmVyc2lvbiwgd3JpdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGt3YXJncywgcmVjdXJzaW9uX2RlcHRoLCBhdXRvX251bWJlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTk4Nyw0MyArOTExLDI2IEBACiBidWlsZF9zdHJpbmcoU3ViU3RyaW5nICppbnB1dCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MsCiAgICAgICAgICAgICAgaW50IHJlY3Vyc2lvbl9kZXB0aCwgQXV0b051bWJlciAqYXV0b19udW1iZXIpCiB7Ci0gICAgT3V0cHV0U3RyaW5nIG91dHB1dDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGNvdW50OwotCi0gICAgb3V0cHV0Lm9iaiA9IE5VTEw7IC8qIG5lZWRlZCBzbyBjbGVhbnVwIGNvZGUgYWx3YXlzIHdvcmtzICovCisgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CisgICAgUHlfc3NpemVfdCBtaW5sZW47CiAKICAgICAvKiBjaGVjayB0aGUgcmVjdXJzaW9uIGxldmVsICovCiAgICAgaWYgKHJlY3Vyc2lvbl9kZXB0aCA8PSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIk1heCBzdHJpbmcgcmVjdXJzaW9uIGV4Y2VlZGVkIik7Ci0gICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgLyogaW5pdGlhbCBzaXplIGlzIHRoZSBsZW5ndGggb2YgdGhlIGZvcm1hdCBzdHJpbmcsIHBsdXMgdGhlIHNpemUKLSAgICAgICBpbmNyZW1lbnQuICBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBkZWZhdWx0ICovCi0gICAgaWYgKCFvdXRwdXRfaW5pdGlhbGl6ZSgmb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQtPmVuZCAtIGlucHV0LT5wdHIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5JVElBTF9TSVpFX0lOQ1JFTUVOVCkpCi0gICAgICAgIGdvdG8gZG9uZTsKKyAgICBtaW5sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dC0+c3RyKSArIDEwMDsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlciwgbWlubGVuKTsKIAotICAgIGlmICghZG9fbWFya3VwKGlucHV0LCBhcmdzLCBrd2FyZ3MsICZvdXRwdXQsIHJlY3Vyc2lvbl9kZXB0aCwKKyAgICBpZiAoIWRvX21hcmt1cChpbnB1dCwgYXJncywga3dhcmdzLCAmd3JpdGVyLCByZWN1cnNpb25fZGVwdGgsCiAgICAgICAgICAgICAgICAgICAgYXV0b19udW1iZXIpKSB7Ci0gICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBjb3VudCA9IG91dHB1dC5wdHIgLSBTVFJJTkdMSUJfU1RSKG91dHB1dC5vYmopOwotICAgIGlmIChTVFJJTkdMSUJfUkVTSVpFKCZvdXRwdXQub2JqLCBjb3VudCkgPCAwKSB7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiB0cmFuc2ZlciBvd25lcnNoaXAgdG8gcmVzdWx0ICovCi0gICAgcmVzdWx0ID0gb3V0cHV0Lm9iajsKLSAgICBvdXRwdXQub2JqID0gTlVMTDsKLQotZG9uZToKLSAgICBQeV9YREVDUkVGKG91dHB1dC5vYmopOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtMTA0NCw4ICs5NTEsMTEgQEAKIAogICAgIEF1dG9OdW1iZXIgYXV0b19udW1iZXI7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIEF1dG9OdW1iZXJfSW5pdCgmYXV0b19udW1iZXIpOwotICAgIFN1YlN0cmluZ19pbml0KCZpbnB1dCwgU1RSSU5HTElCX1NUUihzZWxmKSwgU1RSSU5HTElCX0xFTihzZWxmKSk7CisgICAgU3ViU3RyaW5nX2luaXQoJmlucHV0LCBzZWxmLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSk7CiAgICAgcmV0dXJuIGJ1aWxkX3N0cmluZygmaW5wdXQsIGFyZ3MsIGt3YXJncywgcmVjdXJzaW9uX2RlcHRoLCAmYXV0b19udW1iZXIpOwogfQogCkBAIC0xMDY3LDkgKzk3Nyw3IEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0KLSAgICBTVFJJTkdMSUJfT0JKRUNUICpzdHI7Ci0KKyAgICBQeU9iamVjdCAqc3RyOwogICAgIE1hcmt1cEl0ZXJhdG9yIGl0X21hcmt1cDsKIH0gZm9ybWF0dGVyaXRlcm9iamVjdDsKIApAQCAtMTA5NCw3ICsxMDAyLDcgQEAKICAgICBTdWJTdHJpbmcgbGl0ZXJhbDsKICAgICBTdWJTdHJpbmcgZmllbGRfbmFtZTsKICAgICBTdWJTdHJpbmcgZm9ybWF0X3NwZWM7Ci0gICAgU1RSSU5HTElCX0NIQVIgY29udmVyc2lvbjsKKyAgICBQeV9VQ1M0IGNvbnZlcnNpb247CiAgICAgaW50IGZvcm1hdF9zcGVjX25lZWRzX2V4cGFuZGluZzsKICAgICBpbnQgZmllbGRfcHJlc2VudDsKICAgICBpbnQgcmVzdWx0ID0gTWFya3VwSXRlcmF0b3JfbmV4dCgmaXQtPml0X21hcmt1cCwgJmxpdGVyYWwsICZmaWVsZF9wcmVzZW50LApAQCAtMTEzOCw3ICsxMDQ2LDggQEAKICAgICAgICAgICAgIFB5X0lOQ1JFRihjb252ZXJzaW9uX3N0cik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udmVyc2lvbl9zdHIgPSBTVFJJTkdMSUJfTkVXKCZjb252ZXJzaW9uLCAxKTsKKyAgICAgICAgICAgIGNvbnZlcnNpb25fc3RyID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udmVyc2lvbiwgMSk7CiAgICAgICAgIGlmIChjb252ZXJzaW9uX3N0ciA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBkb25lOwogCkBAIC0xMTk1LDcgKzExMDQsNyBAQAogICAgZGVzY3JpYmluZyB0aGUgcGFyc2VkIGVsZW1lbnRzLiAgSXQncyBhIHdyYXBwZXIgYXJvdW5kCiAgICBzdHJpbmdsaWIvc3RyaW5nX2Zvcm1hdC5oJ3MgTWFya3VwSXRlcmF0b3IgKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1mb3JtYXR0ZXJfcGFyc2VyKFB5T2JqZWN0ICppZ25vcmVkLCBTVFJJTkdMSUJfT0JKRUNUICpzZWxmKQorZm9ybWF0dGVyX3BhcnNlcihQeU9iamVjdCAqaWdub3JlZCwgUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgZm9ybWF0dGVyaXRlcm9iamVjdCAqaXQ7CiAKQEAgLTEyMDQsNiArMTExMyw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaXQgPSBQeU9iamVjdF9OZXcoZm9ybWF0dGVyaXRlcm9iamVjdCwgJlB5Rm9ybWF0dGVySXRlcl9UeXBlKTsKICAgICBpZiAoaXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMjEzLDEwICsxMTI1LDcgQEAKICAgICBpdC0+c3RyID0gc2VsZjsKIAogICAgIC8qIGluaXRpYWxpemUgdGhlIGNvbnRhaW5lZCBNYXJrdXBJdGVyYXRvciAqLwotICAgIE1hcmt1cEl0ZXJhdG9yX2luaXQoJml0LT5pdF9tYXJrdXAsCi0gICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfU1RSKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0xFTihzZWxmKSk7Ci0KKyAgICBNYXJrdXBJdGVyYXRvcl9pbml0KCZpdC0+aXRfbWFya3VwLCAoUHlPYmplY3QqKXNlbGYsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpKTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopaXQ7CiB9CiAKQEAgLTEyMzIsOSArMTE0MSw3IEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0KLSAgICBTVFJJTkdMSUJfT0JKRUNUICpzdHI7Ci0KKyAgICBQeU9iamVjdCAqc3RyOwogICAgIEZpZWxkTmFtZUl0ZXJhdG9yIGl0X2ZpZWxkOwogfSBmaWVsZG5hbWVpdGVyb2JqZWN0OwogCkBAIC0xMzM1LDcgKzEyNDIsNyBAQAogICAgZmllbGRfbmFtZV9zcGxpdC4gIFRoZSBpdGVyYXRvciBpdCByZXR1cm5zIGlzIGEKICAgIEZpZWxkTmFtZUl0ZXJhdG9yICovCiBzdGF0aWMgUHlPYmplY3QgKgotZm9ybWF0dGVyX2ZpZWxkX25hbWVfc3BsaXQoUHlPYmplY3QgKmlnbm9yZWQsIFNUUklOR0xJQl9PQkpFQ1QgKnNlbGYpCitmb3JtYXR0ZXJfZmllbGRfbmFtZV9zcGxpdChQeU9iamVjdCAqaWdub3JlZCwgUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgU3ViU3RyaW5nIGZpcnN0OwogICAgIFB5X3NzaXplX3QgZmlyc3RfaWR4OwpAQCAtMTM0OSw2ICsxMjU2LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpdCA9IFB5T2JqZWN0X05ldyhmaWVsZG5hbWVpdGVyb2JqZWN0LCAmUHlGaWVsZE5hbWVJdGVyX1R5cGUpOwogICAgIGlmIChpdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzNjAsOCArMTI3MCw3IEBACiAKICAgICAvKiBQYXNzIGluIGF1dG9fbnVtYmVyID0gTlVMTC4gV2UnbGwgcmV0dXJuIGFuIGVtcHR5IHN0cmluZyBmb3IKICAgICAgICBmaXJzdF9vYmogaW4gdGhhdCBjYXNlLiAqLwotICAgIGlmICghZmllbGRfbmFtZV9zcGxpdChTVFJJTkdMSUJfU1RSKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfTEVOKHNlbGYpLAorICAgIGlmICghZmllbGRfbmFtZV9zcGxpdCgoUHlPYmplY3QqKXNlbGYsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3QsICZmaXJzdF9pZHgsICZpdC0+aXRfZmllbGQsIE5VTEwpKQogICAgICAgICBnb3RvIGRvbmU7CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmggYi9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlZGVmcy5oCmluZGV4IDA5ZGFlNmQuLmYxNmYyMWUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZWRlZnMuaApAQCAtNiw3ICs2LDEwIEBACiAgICBjb21waWxlZCBhcyB1bmljb2RlLiAqLwogI2RlZmluZSBTVFJJTkdMSUJfSVNfVU5JQ09ERSAgICAgMQogCisjZGVmaW5lIEZBU1RTRUFSQ0ggICAgICAgICAgICAgICBmYXN0c2VhcmNoCisjZGVmaW5lIFNUUklOR0xJQihGKSAgICAgICAgICAgICBzdHJpbmdsaWJfIyNGCiAjZGVmaW5lIFNUUklOR0xJQl9PQkpFQ1QgICAgICAgICBQeVVuaWNvZGVPYmplY3QKKyNkZWZpbmUgU1RSSU5HTElCX1NJWkVPRl9DSEFSICAgIFB5X1VOSUNPREVfU0laRQogI2RlZmluZSBTVFJJTkdMSUJfQ0hBUiAgICAgICAgICAgUHlfVU5JQ09ERQogI2RlZmluZSBTVFJJTkdMSUJfVFlQRV9OQU1FICAgICAgInVuaWNvZGUiCiAjZGVmaW5lIFNUUklOR0xJQl9QQVJTRV9DT0RFICAgICAiVSIKQEAgLTE1LDE3ICsxOCwxMiBAQAogI2RlZmluZSBTVFJJTkdMSUJfSVNMSU5FQlJFQUsgICAgQkxPT01fTElORUJSRUFLCiAjZGVmaW5lIFNUUklOR0xJQl9JU0RFQ0lNQUwgICAgICBQeV9VTklDT0RFX0lTREVDSU1BTAogI2RlZmluZSBTVFJJTkdMSUJfVE9ERUNJTUFMICAgICAgUHlfVU5JQ09ERV9UT0RFQ0lNQUwKLSNkZWZpbmUgU1RSSU5HTElCX1RPVVBQRVIgICAgICAgIFB5X1VOSUNPREVfVE9VUFBFUgotI2RlZmluZSBTVFJJTkdMSUJfVE9MT1dFUiAgICAgICAgUHlfVU5JQ09ERV9UT0xPV0VSCi0jZGVmaW5lIFNUUklOR0xJQl9GSUxMICAgICAgICAgICBQeV9VTklDT0RFX0ZJTEwKICNkZWZpbmUgU1RSSU5HTElCX1NUUiAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFCiAjZGVmaW5lIFNUUklOR0xJQl9MRU4gICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUKICNkZWZpbmUgU1RSSU5HTElCX05FVyAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tVW5pY29kZQogI2RlZmluZSBTVFJJTkdMSUJfUkVTSVpFICAgICAgICAgUHlVbmljb2RlX1Jlc2l6ZQogI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0sgICAgICAgICAgUHlVbmljb2RlX0NoZWNrCiAjZGVmaW5lIFNUUklOR0xJQl9DSEVDS19FWEFDVCAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdAotI2RlZmluZSBTVFJJTkdMSUJfR1JPVVBJTkcgICAgICAgX1B5VW5pY29kZV9JbnNlcnRUaG91c2FuZHNHcm91cGluZwotI2RlZmluZSBTVFJJTkdMSUJfR1JPVVBJTkdfTE9DQUxFIF9QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmdMb2NhbGUKIAogI2lmIFBZX1ZFUlNJT05fSEVYIDwgMHgwMzAwMDAwMAogI2RlZmluZSBTVFJJTkdMSUJfVE9TVFIgICAgICAgICAgUHlPYmplY3RfVW5pY29kZQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy90dXBsZW9iamVjdC5jIGIvT2JqZWN0cy90dXBsZW9iamVjdC5jCmluZGV4IDllOTE0Y2IuLmVjM2Y5MWIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdHVwbGVvYmplY3QuYworKysgYi9PYmplY3RzL3R1cGxlb2JqZWN0LmMKQEAgLTQ1LDYgKzQ1LDIyIEBACiB9CiAjZW5kaWYKIAorLyogUHJpbnQgc3VtbWFyeSBpbmZvIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW1pemVkIGFsbG9jYXRvciAqLwordm9pZAorX1B5VHVwbGVfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpCit7CisjaWYgUHlUdXBsZV9NQVhTQVZFU0laRSA+IDAKKyAgICBpbnQgaTsKKyAgICBjaGFyIGJ1ZlsxMjhdOworICAgIGZvciAoaSA9IDE7IGkgPCBQeVR1cGxlX01BWFNBVkVTSVpFOyBpKyspIHsKKyAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLAorICAgICAgICAgICAgICAgICAgICAgICJmcmVlICVkLXNpemVkIFB5VHVwbGVPYmplY3QiLCBpKTsKKyAgICAgICAgX1B5RGVidWdBbGxvY2F0b3JTdGF0cyhvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWZyZWVbaV0sIF9QeU9iamVjdF9WQVJfU0laRSgmUHlUdXBsZV9UeXBlLCBpKSk7CisgICAgfQorI2VuZGlmCit9CiAKIFB5T2JqZWN0ICoKIFB5VHVwbGVfTmV3KHJlZ2lzdGVyIFB5X3NzaXplX3Qgc2l6ZSkKQEAgLTgwLDE1ICs5NiwxMSBAQAogICAgIGVsc2UKICNlbmRpZgogICAgIHsKLSAgICAgICAgUHlfc3NpemVfdCBuYnl0ZXMgPSBzaXplICogc2l6ZW9mKFB5T2JqZWN0ICopOwogICAgICAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KLSAgICAgICAgaWYgKG5ieXRlcyAvIHNpemVvZihQeU9iamVjdCAqKSAhPSAoc2l6ZV90KXNpemUgfHwKLSAgICAgICAgICAgIChuYnl0ZXMgPiBQWV9TU0laRV9UX01BWCAtIHNpemVvZihQeVR1cGxlT2JqZWN0KSAtIHNpemVvZihQeU9iamVjdCAqKSkpCi0gICAgICAgIHsKKyAgICAgICAgaWYgKHNpemUgPiAoUFlfU1NJWkVfVF9NQVggLSBzaXplb2YoUHlUdXBsZU9iamVjdCkgLQorICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlPYmplY3QgKikpIC8gc2l6ZW9mKFB5T2JqZWN0ICopKSB7CiAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgfQotICAgICAgICBuYnl0ZXMgKz0gc2l6ZW9mKFB5VHVwbGVPYmplY3QpIC0gc2l6ZW9mKFB5T2JqZWN0ICopOwotCiAgICAgICAgIG9wID0gUHlPYmplY3RfR0NfTmV3VmFyKFB5VHVwbGVPYmplY3QsICZQeVR1cGxlX1R5cGUsIHNpemUpOwogICAgICAgICBpZiAob3AgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzI4LDEwICszNDAsMTAgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgeCA9ICh4IF4geSkgKiBtdWx0OwogICAgICAgICAvKiB0aGUgY2FzdCBtaWdodCB0cnVuY2F0ZSBsZW47IHRoYXQgZG9lc24ndCBjaGFuZ2UgaGFzaCBzdGFiaWxpdHkgKi8KLSAgICAgICAgbXVsdCArPSAoUHlfdWhhc2hfdCkoODI1MjBVTCArIGxlbiArIGxlbik7CisgICAgICAgIG11bHQgKz0gKFB5X2hhc2hfdCkoODI1MjBVTCArIGxlbiArIGxlbik7CiAgICAgfQogICAgIHggKz0gOTc1MzFVTDsKLSAgICBpZiAoeCA9PSAtMSkKKyAgICBpZiAoeCA9PSAoUHlfdWhhc2hfdCktMSkKICAgICAgICAgeCA9IC0yOwogICAgIHJldHVybiB4OwogfQpAQCAtNDY1LDkgKzQ3Nyw5IEBACiAgICAgICAgIGlmIChQeV9TSVpFKGEpID09IDApCiAgICAgICAgICAgICByZXR1cm4gUHlUdXBsZV9OZXcoMCk7CiAgICAgfQotICAgIHNpemUgPSBQeV9TSVpFKGEpICogbjsKLSAgICBpZiAoc2l6ZS9QeV9TSVpFKGEpICE9IG4pCisgICAgaWYgKG4gPiBQWV9TU0laRV9UX01BWCAvIFB5X1NJWkUoYSkpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIHNpemUgPSBQeV9TSVpFKGEpICogbjsKICAgICBucCA9IChQeVR1cGxlT2JqZWN0ICopIFB5VHVwbGVfTmV3KHNpemUpOwogICAgIGlmIChucCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTU0NywxMCArNTU5LDggQEAKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlfc3NpemVfdCB2bGVuLCB3bGVuOwogCi0gICAgaWYgKCFQeVR1cGxlX0NoZWNrKHYpIHx8ICFQeVR1cGxlX0NoZWNrKHcpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeVR1cGxlX0NoZWNrKHYpIHx8ICFQeVR1cGxlX0NoZWNrKHcpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAKICAgICB2dCA9IChQeVR1cGxlT2JqZWN0ICopdjsKICAgICB3dCA9IChQeVR1cGxlT2JqZWN0ICopdzsKQEAgLTk3MSw4ICs5ODEsMzkgQEAKIAogUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywgIlByaXZhdGUgbWV0aG9kIHJldHVybmluZyBhbiBlc3RpbWF0ZSBvZiBsZW4obGlzdChpdCkpLiIpOwogCitzdGF0aWMgUHlPYmplY3QgKgordHVwbGVpdGVyX3JlZHVjZSh0dXBsZWl0ZXJvYmplY3QgKml0KQoreworICAgIGlmIChpdC0+aXRfc2VxKQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKWwiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+aXRfc2VxLCBpdC0+aXRfaW5kZXgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oKCkpIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0dXBsZWl0ZXJfc2V0c3RhdGUodHVwbGVpdGVyb2JqZWN0ICppdCwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIGxvbmcgaW5kZXggPSBQeUxvbmdfQXNMb25nKHN0YXRlKTsKKyAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGl0LT5pdF9zZXEgIT0gTlVMTCkgeworICAgICAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICBlbHNlIGlmIChpdC0+aXRfc2VxICE9IE5VTEwgJiYgaW5kZXggPiBQeVR1cGxlX0dFVF9TSVpFKGl0LT5pdF9zZXEpKQorICAgICAgICAgICAgaW5kZXggPSBQeVR1cGxlX0dFVF9TSVpFKGl0LT5pdF9zZXEpOworICAgICAgICBpdC0+aXRfaW5kZXggPSBpbmRleDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKK1B5RG9jX1NUUlZBUihzZXRzdGF0ZV9kb2MsICJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CisKIHN0YXRpYyBQeU1ldGhvZERlZiB0dXBsZWl0ZXJfbWV0aG9kc1tdID0gewogICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKXR1cGxlaXRlcl9sZW4sIE1FVEhfTk9BUkdTLCBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbil0dXBsZWl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pdHVwbGVpdGVyX3NldHN0YXRlLCBNRVRIX08sIHNldHN0YXRlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvdHlwZW9iamVjdC5jIGIvT2JqZWN0cy90eXBlb2JqZWN0LmMKaW5kZXggYmJmMDNhMS4uYWFiODNlMSAxMDA2NDQKLS0tIGEvT2JqZWN0cy90eXBlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy90eXBlb2JqZWN0LmMKQEAgLTE0LDE2ICsxNCwxNyBAQAogICAgTUNBQ0hFX01BWF9BVFRSX1NJWkUsIHNpbmNlIGl0IG1pZ2h0IGJlIGEgcHJvYmxlbSBpZiB2ZXJ5IGxhcmdlCiAgICBzdHJpbmdzIGFyZSB1c2VkIGFzIGF0dHJpYnV0ZSBuYW1lcy4gKi8KICNkZWZpbmUgTUNBQ0hFX01BWF9BVFRSX1NJWkUgICAgMTAwCi0jZGVmaW5lIE1DQUNIRV9TSVpFX0VYUCAgICAgICAgIDEwCisjZGVmaW5lIE1DQUNIRV9TSVpFX0VYUCAgICAgICAgIDkKICNkZWZpbmUgTUNBQ0hFX0hBU0godmVyc2lvbiwgbmFtZV9oYXNoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgKCgodW5zaWduZWQgaW50KSh2ZXJzaW9uKSAqICh1bnNpZ25lZCBpbnQpKG5hbWVfaGFzaCkpICAgICAgICAgIFwKICAgICAgICAgID4+ICg4KnNpemVvZih1bnNpZ25lZCBpbnQpIC0gTUNBQ0hFX1NJWkVfRVhQKSkKICNkZWZpbmUgTUNBQ0hFX0hBU0hfTUVUSE9EKHR5cGUsIG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgTUNBQ0hFX0hBU0goKHR5cGUpLT50cF92ZXJzaW9uX3RhZywgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICgoUHlVbmljb2RlT2JqZWN0ICopKG5hbWUpKS0+aGFzaCkKKyAgICAgICAgICAgICAgICAgICAgKChQeUFTQ0lJT2JqZWN0ICopKG5hbWUpKS0+aGFzaCkKICNkZWZpbmUgTUNBQ0hFX0NBQ0hFQUJMRV9OQU1FKG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgUHlVbmljb2RlX0NoZWNrRXhhY3QobmFtZSkgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUobmFtZSkgPD0gTUNBQ0hFX01BWF9BVFRSX1NJWkUKKyAgICAgICAgUHlVbmljb2RlX1JFQURZKG5hbWUpICE9IC0xICYmICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgPD0gTUNBQ0hFX01BWF9BVFRSX1NJWkUKIAogc3RydWN0IG1ldGhvZF9jYWNoZV9lbnRyeSB7CiAgICAgdW5zaWduZWQgaW50IHZlcnNpb247CkBAIC0zNCw2ICszNSwyMiBAQAogc3RhdGljIHN0cnVjdCBtZXRob2RfY2FjaGVfZW50cnkgbWV0aG9kX2NhY2hlWzEgPDwgTUNBQ0hFX1NJWkVfRVhQXTsKIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmV4dF92ZXJzaW9uX3RhZyA9IDA7CiAKK19QeV9JREVOVElGSUVSKF9fY2xhc3NfXyk7CitfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CitfUHlfSURFTlRJRklFUihfX2RvY19fKTsKK19QeV9JREVOVElGSUVSKF9fZ2V0aXRlbV9fKTsKK19QeV9JREVOVElGSUVSKF9fZ2V0YXR0cmlidXRlX18pOworX1B5X0lERU5USUZJRVIoX19oYXNoX18pOworX1B5X0lERU5USUZJRVIoX19tb2R1bGVfXyk7CitfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CitfUHlfSURFTlRJRklFUihfX25ld19fKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19QeVR5cGVfTG9va3VwSWQoUHlUeXBlT2JqZWN0ICp0eXBlLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorc2xvdF90cF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpOworCiB1bnNpZ25lZCBpbnQKIFB5VHlwZV9DbGVhckNhY2hlKHZvaWQpCiB7CkBAIC05NiwxNSArMTEzLDEzIEBACiBzdGF0aWMgdm9pZAogdHlwZV9tcm9fbW9kaWZpZWQoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYmFzZXMpIHsKICAgICAvKgotICAgICAgIENoZWNrIHRoYXQgYWxsIGJhc2UgY2xhc3NlcyBvciBlbGVtZW50cyBvZiB0aGUgbXJvIG9mIHR5cGUgYXJlCisgICAgICAgQ2hlY2sgdGhhdCBhbGwgYmFzZSBjbGFzc2VzIG9yIGVsZW1lbnRzIG9mIHRoZSBNUk8gb2YgdHlwZSBhcmUKICAgICAgICBhYmxlIHRvIGJlIGNhY2hlZC4gIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFmdGVyIHRoZSBiYXNlCiAgICAgICAgY2xhc3NlcyBvciBtcm8gb2YgdGhlIHR5cGUgYXJlIGFsdGVyZWQuCiAKICAgICAgICBVbnNldCBIQVZFX1ZFUlNJT05fVEFHIGFuZCBWQUxJRF9WRVJTSU9OX1RBRyBpZiB0aGUgdHlwZQotICAgICAgIGluaGVyaXRzIGZyb20gYW4gb2xkLXN0eWxlIGNsYXNzLCBlaXRoZXIgZGlyZWN0bHkgb3IgaWYgaXQKLSAgICAgICBhcHBlYXJzIGluIHRoZSBNUk8gb2YgYSBuZXctc3R5bGUgY2xhc3MuICBObyBzdXBwb3J0IGVpdGhlciBmb3IKLSAgICAgICBjdXN0b20gTVJPcyB0aGF0IGluY2x1ZGUgdHlwZXMgdGhhdCBhcmUgbm90IG9mZmljaWFsbHkgc3VwZXIKLSAgICAgICB0eXBlcy4KKyAgICAgICBoYXMgYSBjdXN0b20gTVJPIHRoYXQgaW5jbHVkZXMgYSB0eXBlIHdoaWNoIGlzIG5vdCBvZmZpY2lhbGx5CisgICAgICAgc3VwZXIgdHlwZS4KIAogICAgICAgIENhbGxlZCBmcm9tIG1yb19pbnRlcm5hbCwgd2hpY2ggd2lsbCBzdWJzZXF1ZW50bHkgYmUgY2FsbGVkIG9uCiAgICAgICAgZWFjaCBzdWJjbGFzcyB3aGVuIHRoZWlyIG1ybyBpcyByZWN1cnNpdmVseSB1cGRhdGVkLgpAQCAtMTIwLDExICsxMzUsNyBAQAogICAgICAgICBQeU9iamVjdCAqYiA9IFB5VHVwbGVfR0VUX0lURU0oYmFzZXMsIGkpOwogICAgICAgICBQeVR5cGVPYmplY3QgKmNsczsKIAotICAgICAgICBpZiAoIVB5VHlwZV9DaGVjayhiKSApIHsKLSAgICAgICAgICAgIGNsZWFyID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KKyAgICAgICAgYXNzZXJ0KFB5VHlwZV9DaGVjayhiKSk7CiAgICAgICAgIGNscyA9IChQeVR5cGVPYmplY3QgKiliOwogCiAgICAgICAgIGlmICghUHlUeXBlX0hhc0ZlYXR1cmUoY2xzLCBQeV9UUEZMQUdTX0hBVkVfVkVSU0lPTl9UQUcpIHx8CkBAIC0yMDEsNiArMjEyLDIyIEBACiAgICAgezB9CiB9OwogCitzdGF0aWMgaW50CitjaGVja19zZXRfc3BlY2lhbF90eXBlX2F0dHIoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgaWYgKCEodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImNhbid0IHNldCAlcy4lcyIsIHR5cGUtPnRwX25hbWUsIG5hbWUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImNhbid0IGRlbGV0ZSAlcy4lcyIsIHR5cGUtPnRwX25hbWUsIG5hbWUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiB0eXBlX25hbWUoUHlUeXBlT2JqZWN0ICp0eXBlLCB2b2lkICpjb250ZXh0KQogewpAQCAtMjIyLDYgKzI0OSwxOSBAQAogICAgIH0KIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3R5cGVfcXVhbG5hbWUoUHlUeXBlT2JqZWN0ICp0eXBlLCB2b2lkICpjb250ZXh0KQoreworICAgIGlmICh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpIHsKKyAgICAgICAgUHlIZWFwVHlwZU9iamVjdCogZXQgPSAoUHlIZWFwVHlwZU9iamVjdCopdHlwZTsKKyAgICAgICAgUHlfSU5DUkVGKGV0LT5odF9xdWFsbmFtZSk7CisgICAgICAgIHJldHVybiBldC0+aHRfcXVhbG5hbWU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gdHlwZV9uYW1lKHR5cGUsIGNvbnRleHQpOworICAgIH0KK30KKwogc3RhdGljIGludAogdHlwZV9zZXRfbmFtZShQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKIHsKQEAgLTIyOSwxNiArMjY5LDggQEAKICAgICBjaGFyICp0cF9uYW1lOwogICAgIFB5T2JqZWN0ICp0bXA7CiAKLSAgICBpZiAoISh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY2FuJ3Qgc2V0ICVzLl9fbmFtZV9fIiwgdHlwZS0+dHBfbmFtZSk7CisgICAgaWYgKCFjaGVja19zZXRfc3BlY2lhbF90eXBlX2F0dHIodHlwZSwgdmFsdWUsICJfX25hbWVfXyIpKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmICghdmFsdWUpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBkZWxldGUgJXMuX19uYW1lX18iLCB0eXBlLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJjYW4gb25seSBhc3NpZ24gc3RyaW5nIHRvICVzLl9fbmFtZV9fLCBub3QgJyVzJyIsCkBAIC0yNzQsNiArMzA2LDI3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQKK3R5cGVfc2V0X3F1YWxuYW1lKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjb250ZXh0KQoreworICAgIFB5SGVhcFR5cGVPYmplY3QqIGV0OworCisgICAgaWYgKCFjaGVja19zZXRfc3BlY2lhbF90eXBlX2F0dHIodHlwZSwgdmFsdWUsICJfX3F1YWxuYW1lX18iKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImNhbiBvbmx5IGFzc2lnbiBzdHJpbmcgdG8gJXMuX19xdWFsbmFtZV9fLCBub3QgJyVzJyIsCisgICAgICAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lLCBQeV9UWVBFKHZhbHVlKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBldCA9IChQeUhlYXBUeXBlT2JqZWN0Kil0eXBlOworICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgUHlfREVDUkVGKGV0LT5odF9xdWFsbmFtZSk7CisgICAgZXQtPmh0X3F1YWxuYW1lID0gdmFsdWU7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiB0eXBlX21vZHVsZShQeVR5cGVPYmplY3QgKnR5cGUsIHZvaWQgKmNvbnRleHQpCiB7CkBAIC0yODEsNyArMzM0LDcgQEAKICAgICBjaGFyICpzOwogCiAgICAgaWYgKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkgewotICAgICAgICBtb2QgPSBQeURpY3RfR2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19tb2R1bGVfXyIpOworICAgICAgICBtb2QgPSBfUHlEaWN0X0dldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX21vZHVsZV9fKTsKICAgICAgICAgaWYgKCFtb2QpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgIl9fbW9kdWxlX18iKTsKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMzAxLDIwICszNTQsMTIgQEAKIHN0YXRpYyBpbnQKIHR5cGVfc2V0X21vZHVsZShQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKIHsKLSAgICBpZiAoISh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY2FuJ3Qgc2V0ICVzLl9fbW9kdWxlX18iLCB0eXBlLT50cF9uYW1lKTsKKyAgICBpZiAoIWNoZWNrX3NldF9zcGVjaWFsX3R5cGVfYXR0cih0eXBlLCB2YWx1ZSwgIl9fbW9kdWxlX18iKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgZGVsZXRlICVzLl9fbW9kdWxlX18iLCB0eXBlLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KIAogICAgIFB5VHlwZV9Nb2RpZmllZCh0eXBlKTsKIAotICAgIHJldHVybiBQeURpY3RfU2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19tb2R1bGVfXyIsIHZhbHVlKTsKKyAgICByZXR1cm4gX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19tb2R1bGVfXywgdmFsdWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDM1LDE2ICs0ODAsOCBAQAogICAgIFB5VHlwZU9iamVjdCAqbmV3X2Jhc2UsICpvbGRfYmFzZTsKICAgICBQeU9iamVjdCAqb2xkX2Jhc2VzLCAqb2xkX21ybzsKIAotICAgIGlmICghKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBzZXQgJXMuX19iYXNlc19fIiwgdHlwZS0+dHBfbmFtZSk7CisgICAgaWYgKCFjaGVja19zZXRfc3BlY2lhbF90eXBlX2F0dHIodHlwZSwgdmFsdWUsICJfX2Jhc2VzX18iKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgZGVsZXRlICVzLl9fYmFzZXNfXyIsIHR5cGUtPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogICAgIGlmICghUHlUdXBsZV9DaGVjayh2YWx1ZSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAiY2FuIG9ubHkgYXNzaWduIHR1cGxlIHRvICVzLl9fYmFzZXNfXywgbm90ICVzIiwKQEAgLTQ2MSw4ICs0OTgsNyBAQAogICAgICAgICBvYiA9IFB5VHVwbGVfR0VUX0lURU0odmFsdWUsIGkpOwogICAgICAgICBpZiAoIVB5VHlwZV9DaGVjayhvYikpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiVzLl9fYmFzZXNfXyBtdXN0IGJlIHR1cGxlIG9mIG9sZC0gb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJuZXctc3R5bGUgY2xhc3Nlcywgbm90ICclcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICIlcy5fX2Jhc2VzX18gbXVzdCBiZSB0dXBsZSBvZiBjbGFzc2VzLCBub3QgJyVzJyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSwgUHlfVFlQRShvYiktPnRwX25hbWUpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC01ODAsNyArNjE2LDcgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGlmICghKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkgJiYgdHlwZS0+dHBfZG9jICE9IE5VTEwpCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyh0eXBlLT50cF9kb2MpOwotICAgIHJlc3VsdCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKHR5cGUtPnRwX2RpY3QsICJfX2RvY19fIik7CisgICAgcmVzdWx0ID0gX1B5RGljdF9HZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19kb2NfXyk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgIHJlc3VsdCA9IFB5X05vbmU7CiAgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOwpAQCAtNTk1LDYgKzYzMSwxNSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBpbnQKK3R5cGVfc2V0X2RvYyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBpZiAoIWNoZWNrX3NldF9zcGVjaWFsX3R5cGVfYXR0cih0eXBlLCB2YWx1ZSwgIl9fZG9jX18iKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIFB5VHlwZV9Nb2RpZmllZCh0eXBlKTsKKyAgICByZXR1cm4gX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19kb2NfXywgdmFsdWUpOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogdHlwZV9fX2luc3RhbmNlY2hlY2tfXyhQeU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmluc3QpCiB7CkBAIC02MjUsMTIgKzY3MCwxMyBAQAogCiBzdGF0aWMgUHlHZXRTZXREZWYgdHlwZV9nZXRzZXRzW10gPSB7CiAgICAgeyJfX25hbWVfXyIsIChnZXR0ZXIpdHlwZV9uYW1lLCAoc2V0dGVyKXR5cGVfc2V0X25hbWUsIE5VTEx9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlcil0eXBlX3F1YWxuYW1lLCAoc2V0dGVyKXR5cGVfc2V0X3F1YWxuYW1lLCBOVUxMfSwKICAgICB7Il9fYmFzZXNfXyIsIChnZXR0ZXIpdHlwZV9nZXRfYmFzZXMsIChzZXR0ZXIpdHlwZV9zZXRfYmFzZXMsIE5VTEx9LAogICAgIHsiX19tb2R1bGVfXyIsIChnZXR0ZXIpdHlwZV9tb2R1bGUsIChzZXR0ZXIpdHlwZV9zZXRfbW9kdWxlLCBOVUxMfSwKICAgICB7Il9fYWJzdHJhY3RtZXRob2RzX18iLCAoZ2V0dGVyKXR5cGVfYWJzdHJhY3RtZXRob2RzLAogICAgICAoc2V0dGVyKXR5cGVfc2V0X2Fic3RyYWN0bWV0aG9kcywgTlVMTH0sCiAgICAgeyJfX2RpY3RfXyIsICAoZ2V0dGVyKXR5cGVfZGljdCwgIE5VTEwsIE5VTEx9LAotICAgIHsiX19kb2NfXyIsIChnZXR0ZXIpdHlwZV9nZXRfZG9jLCBOVUxMLCBOVUxMfSwKKyAgICB7Il9fZG9jX18iLCAoZ2V0dGVyKXR5cGVfZ2V0X2RvYywgKHNldHRlcil0eXBlX3NldF9kb2MsIE5VTEx9LAogICAgIHswfQogfTsKIApAQCAtNjQ2LDcgKzY5Miw3IEBACiAgICAgICAgIFB5X0RFQ1JFRihtb2QpOwogICAgICAgICBtb2QgPSBOVUxMOwogICAgIH0KLSAgICBuYW1lID0gdHlwZV9uYW1lKHR5cGUsIE5VTEwpOworICAgIG5hbWUgPSB0eXBlX3F1YWxuYW1lKHR5cGUsIE5VTEwpOwogICAgIGlmIChuYW1lID09IE5VTEwpIHsKICAgICAgICAgUHlfWERFQ1JFRihtb2QpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTkxMSw3ICs5NTcsNyBAQAogCiAgICAgLyogRmluZCB0aGUgbmVhcmVzdCBiYXNlIHdpdGggYSBkaWZmZXJlbnQgdHBfZGVhbGxvYyAqLwogICAgIGJhc2UgPSB0eXBlOwotICAgIHdoaWxlICgoYmFzZWRlYWxsb2MgPSBiYXNlLT50cF9kZWFsbG9jKSA9PSBzdWJ0eXBlX2RlYWxsb2MpIHsKKyAgICB3aGlsZSAoKC8qYmFzZWRlYWxsb2MgPSovIGJhc2UtPnRwX2RlYWxsb2MpID09IHN1YnR5cGVfZGVhbGxvYykgewogICAgICAgICBiYXNlID0gYmFzZS0+dHBfYmFzZTsKICAgICAgICAgYXNzZXJ0KGJhc2UpOwogICAgIH0KQEAgLTExMzYsMTYgKzExODIsMTEgQEAKICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1sb29rdXBfbWF5YmUoUHlPYmplY3QgKnNlbGYsIGNoYXIgKmF0dHJzdHIsIFB5T2JqZWN0ICoqYXR0cm9iaikKK2xvb2t1cF9tYXliZShQeU9iamVjdCAqc2VsZiwgX1B5X0lkZW50aWZpZXIgKmF0dHJpZCkKIHsKICAgICBQeU9iamVjdCAqcmVzOwogCi0gICAgaWYgKCphdHRyb2JqID09IE5VTEwpIHsKLSAgICAgICAgKmF0dHJvYmogPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZyhhdHRyc3RyKTsKLSAgICAgICAgaWYgKCphdHRyb2JqID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzID0gX1B5VHlwZV9Mb29rdXAoUHlfVFlQRShzZWxmKSwgKmF0dHJvYmopOworICAgIHJlcyA9IF9QeVR5cGVfTG9va3VwSWQoUHlfVFlQRShzZWxmKSwgYXR0cmlkKTsKICAgICBpZiAocmVzICE9IE5VTEwpIHsKICAgICAgICAgZGVzY3JnZXRmdW5jIGY7CiAgICAgICAgIGlmICgoZiA9IFB5X1RZUEUocmVzKS0+dHBfZGVzY3JfZ2V0KSA9PSBOVUxMKQpAQCAtMTE1NywxOCArMTE5OCwxOCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotbG9va3VwX21ldGhvZChQeU9iamVjdCAqc2VsZiwgY2hhciAqYXR0cnN0ciwgUHlPYmplY3QgKiphdHRyb2JqKQorbG9va3VwX21ldGhvZChQeU9iamVjdCAqc2VsZiwgX1B5X0lkZW50aWZpZXIgKmF0dHJpZCkKIHsKLSAgICBQeU9iamVjdCAqcmVzID0gbG9va3VwX21heWJlKHNlbGYsIGF0dHJzdHIsIGF0dHJvYmopOworICAgIFB5T2JqZWN0ICpyZXMgPSBsb29rdXBfbWF5YmUoc2VsZiwgYXR0cmlkKTsKICAgICBpZiAocmVzID09IE5VTEwgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgKmF0dHJvYmopOworICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIGF0dHJpZC0+b2JqZWN0KTsKICAgICByZXR1cm4gcmVzOwogfQogCiBQeU9iamVjdCAqCi1fUHlPYmplY3RfTG9va3VwU3BlY2lhbChQeU9iamVjdCAqc2VsZiwgY2hhciAqYXR0cnN0ciwgUHlPYmplY3QgKiphdHRyb2JqKQorX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoUHlPYmplY3QgKnNlbGYsIF9QeV9JZGVudGlmaWVyICphdHRyaWQpCiB7Ci0gICAgcmV0dXJuIGxvb2t1cF9tYXliZShzZWxmLCBhdHRyc3RyLCBhdHRyb2JqKTsKKyAgICByZXR1cm4gbG9va3VwX21heWJlKHNlbGYsIGF0dHJpZCk7CiB9CiAKIC8qIEEgdmFyaWF0aW9uIG9mIFB5T2JqZWN0X0NhbGxNZXRob2QgdGhhdCB1c2VzIGxvb2t1cF9tZXRob2QoKQpAQCAtMTE3NiwxNyArMTIxNywxNyBAQAogICAgYXMgbG9va3VwX21ldGhvZCB0byBjYWNoZSB0aGUgaW50ZXJuZWQgbmFtZSBzdHJpbmcgb2JqZWN0LiAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY2FsbF9tZXRob2QoUHlPYmplY3QgKm8sIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICoqbmFtZW9iaiwgY2hhciAqZm9ybWF0LCAuLi4pCitjYWxsX21ldGhvZChQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKm5hbWVpZCwgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YTsKICAgICBQeU9iamVjdCAqYXJncywgKmZ1bmMgPSAwLCAqcmV0dmFsOwogICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogCi0gICAgZnVuYyA9IGxvb2t1cF9tYXliZShvLCBuYW1lLCBuYW1lb2JqKTsKKyAgICBmdW5jID0gbG9va3VwX21heWJlKG8sIG5hbWVpZCk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICB2YV9lbmQodmEpOwogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsICpuYW1lb2JqKTsKKyAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZWlkLT5vYmplY3QpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTEyMTIsMTkgKzEyNTMsMTcgQEAKIC8qIENsb25lIG9mIGNhbGxfbWV0aG9kKCkgdGhhdCByZXR1cm5zIE5vdEltcGxlbWVudGVkIHdoZW4gdGhlIGxvb2t1cCBmYWlscy4gKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfbWF5YmUoUHlPYmplY3QgKm8sIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICoqbmFtZW9iaiwgY2hhciAqZm9ybWF0LCAuLi4pCitjYWxsX21heWJlKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZWlkLCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhOwogICAgIFB5T2JqZWN0ICphcmdzLCAqZnVuYyA9IDAsICpyZXR2YWw7CiAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAKLSAgICBmdW5jID0gbG9va3VwX21heWJlKG8sIG5hbWUsIG5hbWVvYmopOworICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUobywgbmFtZWlkKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIHZhX2VuZCh2YSk7Ci0gICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICAgICAgfQorICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTI5MCw3ICsxMzI5LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBjbGFzc19uYW1lKFB5T2JqZWN0ICpjbHMpCiB7Ci0gICAgUHlPYmplY3QgKm5hbWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGNscywgIl9fbmFtZV9fIik7CisgICAgUHlPYmplY3QgKm5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNscywgJlB5SWRfX19uYW1lX18pOwogICAgIGlmIChuYW1lID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgUHlfWERFQ1JFRihuYW1lKTsKQEAgLTE1NDUsOSArMTU4NCw5IEBACiAgICAgICAgIHJlc3VsdCA9IG1yb19pbXBsZW1lbnRhdGlvbih0eXBlKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0YXRpYyBQeU9iamVjdCAqbXJvX3N0cjsKKyAgICAgICAgX1B5X0lERU5USUZJRVIobXJvKTsKICAgICAgICAgY2hlY2tpdCA9IDE7Ci0gICAgICAgIG1ybyA9IGxvb2t1cF9tZXRob2QoKFB5T2JqZWN0ICopdHlwZSwgIm1ybyIsICZtcm9fc3RyKTsKKyAgICAgICAgbXJvID0gbG9va3VwX21ldGhvZCgoUHlPYmplY3QgKil0eXBlLCAmUHlJZF9tcm8pOwogICAgICAgICBpZiAobXJvID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3QobXJvLCBOVUxMKTsKQEAgLTE1OTEsNyArMTYzMCw3IEBACiAgICAgdHlwZS0+dHBfbXJvID0gdHVwbGU7CiAKICAgICB0eXBlX21yb19tb2RpZmllZCh0eXBlLCB0eXBlLT50cF9tcm8pOwotICAgIC8qIGNvcm5lciBjYXNlOiB0aGUgb2xkLXN0eWxlIHN1cGVyIGNsYXNzIG1pZ2h0IGhhdmUgYmVlbiBoaWRkZW4KKyAgICAvKiBjb3JuZXIgY2FzZTogdGhlIHN1cGVyIGNsYXNzIG1pZ2h0IGhhdmUgYmVlbiBoaWRkZW4KICAgICAgICBmcm9tIHRoZSBjdXN0b20gTVJPICovCiAgICAgdHlwZV9tcm9fbW9kaWZpZWQodHlwZSwgdHlwZS0+dHBfYmFzZXMpOwogCkBAIC0xNjQ4LDkgKzE2ODcsOCBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGJhc2UgPT0gTlVMTCkKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJhIG5ldy1zdHlsZSBjbGFzcyBjYW4ndCBoYXZlIG9ubHkgY2xhc3NpYyBiYXNlcyIpOworICAgIGFzc2VydCAoYmFzZSAhPSBOVUxMKTsKKwogICAgIHJldHVybiBiYXNlOwogfQogCkBAIC0xNzE4LDE1ICsxNzU2LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBnZXRfZGljdF9kZXNjcmlwdG9yKFB5VHlwZU9iamVjdCAqdHlwZSkKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmRpY3Rfc3RyOwogICAgIFB5T2JqZWN0ICpkZXNjcjsKIAotICAgIGlmIChkaWN0X3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIGRpY3Rfc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fZGljdF9fIik7Ci0gICAgICAgIGlmIChkaWN0X3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGRlc2NyID0gX1B5VHlwZV9Mb29rdXAodHlwZSwgZGljdF9zdHIpOworICAgIGRlc2NyID0gX1B5VHlwZV9Mb29rdXBJZCh0eXBlLCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgaWYgKGRlc2NyID09IE5VTEwgfHwgIVB5RGVzY3JfSXNEYXRhKGRlc2NyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTE3NDQsOCArMTc3Niw2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc3VidHlwZV9kaWN0KFB5T2JqZWN0ICpvYmosIHZvaWQgKmNvbnRleHQpCiB7Ci0gICAgUHlPYmplY3QgKipkaWN0cHRyOwotICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5VHlwZU9iamVjdCAqYmFzZTsKIAogICAgIGJhc2UgPSBnZXRfYnVpbHRpbl9iYXNlX3dpdGhfZGljdChQeV9UWVBFKG9iaikpOwpAQCAtMTc2MywyNSArMTc5MywxMyBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmdW5jKGRlc2NyLCBvYmosIChQeU9iamVjdCAqKShQeV9UWVBFKG9iaikpKTsKICAgICB9Ci0KLSAgICBkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKLSAgICBpZiAoZGljdHB0ciA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIG9iamVjdCBoYXMgbm8gX19kaWN0X18iKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGRpY3QgPSAqZGljdHB0cjsKLSAgICBpZiAoZGljdCA9PSBOVUxMKQotICAgICAgICAqZGljdHB0ciA9IGRpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgUHlfWElOQ1JFRihkaWN0KTsKLSAgICByZXR1cm4gZGljdDsKKyAgICByZXR1cm4gUHlPYmplY3RfR2VuZXJpY0dldERpY3Qob2JqLCBjb250ZXh0KTsKIH0KIAogc3RhdGljIGludAogc3VidHlwZV9zZXRkaWN0KFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKIHsKLSAgICBQeU9iamVjdCAqKmRpY3RwdHI7Ci0gICAgUHlPYmplY3QgKmRpY3Q7CisgICAgUHlPYmplY3QgKmRpY3QsICoqZGljdHB0cjsKICAgICBQeVR5cGVPYmplY3QgKmJhc2U7CiAKICAgICBiYXNlID0gZ2V0X2J1aWx0aW5fYmFzZV93aXRoX2RpY3QoUHlfVFlQRShvYmopKTsKQEAgLTE3OTksNyArMTgxNyw3IEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZ1bmMoZGVzY3IsIG9iaiwgdmFsdWUpOwogICAgIH0KLQorICAgIC8qIEFsbW9zdCBsaWtlIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0LCBidXQgYWxsb3cgX19kaWN0X18gdG8gYmUgZGVsZXRlZC4gKi8KICAgICBkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKICAgICBpZiAoZGljdHB0ciA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwKQEAgLTE5NjAsMTQgKzE5NzgsMTYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0eXBlX25ldyhQeVR5cGVPYmplY3QgKm1ldGF0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgUHlPYmplY3QgKm5hbWUsICpiYXNlcywgKmRpY3Q7CisgICAgUHlPYmplY3QgKm5hbWUsICpiYXNlcyA9IE5VTEwsICpvcmlnX2RpY3QsICpkaWN0ID0gTlVMTDsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im5hbWUiLCAiYmFzZXMiLCAiZGljdCIsIDB9OwotICAgIFB5T2JqZWN0ICpzbG90cywgKnRtcCwgKm5ld3Nsb3RzOwotICAgIFB5VHlwZU9iamVjdCAqdHlwZSwgKmJhc2UsICp0bXB0eXBlLCAqd2lubmVyOworICAgIFB5T2JqZWN0ICpxdWFsbmFtZSwgKnNsb3RzID0gTlVMTCwgKnRtcCwgKm5ld3Nsb3RzOworICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9IE5VTEwsICpiYXNlLCAqdG1wdHlwZSwgKndpbm5lcjsKICAgICBQeUhlYXBUeXBlT2JqZWN0ICpldDsKICAgICBQeU1lbWJlckRlZiAqbXA7CiAgICAgUHlfc3NpemVfdCBpLCBuYmFzZXMsIG5zbG90cywgc2xvdG9mZnNldCwgYWRkX2RpY3QsIGFkZF93ZWFrOwogICAgIGludCBqLCBtYXlfYWRkX2RpY3QsIG1heV9hZGRfd2VhazsKKyAgICBfUHlfSURFTlRJRklFUihfX3F1YWxuYW1lX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fc2xvdHNfXyk7CiAKICAgICBhc3NlcnQoYXJncyAhPSBOVUxMICYmIFB5VHVwbGVfQ2hlY2soYXJncykpOwogICAgIGFzc2VydChrd2RzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3ZHMpKTsKQEAgLTE5OTcsNyArMjAxNyw3IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIlVPIU8hOnR5cGUiLCBrd2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VHVwbGVfVHlwZSwgJmJhc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURpY3RfVHlwZSwgJmRpY3QpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURpY3RfVHlwZSwgJm9yaWdfZGljdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogRGV0ZXJtaW5lIHRoZSBwcm9wZXIgbWV0YXR5cGUgdG8gZGVhbCB3aXRoIHRoaXM6ICovCkBAIC0yMDE3LDMwICsyMDM3LDMwIEBACiAgICAgaWYgKG5iYXNlcyA9PSAwKSB7CiAgICAgICAgIGJhc2VzID0gUHlUdXBsZV9QYWNrKDEsICZQeUJhc2VPYmplY3RfVHlwZSk7CiAgICAgICAgIGlmIChiYXNlcyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBuYmFzZXMgPSAxOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIFB5X0lOQ1JFRihiYXNlcyk7CiAKLSAgICAvKiBYWFggRnJvbSBoZXJlIHVudGlsIHR5cGUgaXMgYWxsb2NhdGVkLCAicmV0dXJuIE5VTEwiIGxlYWtzIGJhc2VzISAqLwotCiAgICAgLyogQ2FsY3VsYXRlIGJlc3QgYmFzZSwgYW5kIGNoZWNrIHRoYXQgYWxsIGJhc2VzIGFyZSB0eXBlIG9iamVjdHMgKi8KICAgICBiYXNlID0gYmVzdF9iYXNlKGJhc2VzKTsKICAgICBpZiAoYmFzZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KICAgICBpZiAoIVB5VHlwZV9IYXNGZWF0dXJlKGJhc2UsIFB5X1RQRkxBR1NfQkFTRVRZUEUpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAidHlwZSAnJS4xMDBzJyBpcyBub3QgYW4gYWNjZXB0YWJsZSBiYXNlIHR5cGUiLAogICAgICAgICAgICAgICAgICAgICAgYmFzZS0+dHBfbmFtZSk7Ci0gICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAorICAgIGRpY3QgPSBQeURpY3RfQ29weShvcmlnX2RpY3QpOworICAgIGlmIChkaWN0ID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKICAgICAvKiBDaGVjayBmb3IgYSBfX3Nsb3RzX18gc2VxdWVuY2UgdmFyaWFibGUgaW4gZGljdCwgYW5kIGNvdW50IGl0ICovCi0gICAgc2xvdHMgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhkaWN0LCAiX19zbG90c19fIik7CisgICAgc2xvdHMgPSBfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX3Nsb3RzX18pOwogICAgIG5zbG90cyA9IDA7CiAgICAgYWRkX2RpY3QgPSAwOwogICAgIGFkZF93ZWFrID0gMDsKQEAgLTIwNjIsMTAgKzIwODIsOCBAQAogICAgICAgICAgICAgc2xvdHMgPSBQeVR1cGxlX1BhY2soMSwgc2xvdHMpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzbG90cyA9IFB5U2VxdWVuY2VfVHVwbGUoc2xvdHMpOwotICAgICAgICBpZiAoc2xvdHMgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CisgICAgICAgIGlmIChzbG90cyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soc2xvdHMpKTsKIAogICAgICAgICAvKiBBcmUgc2xvdHMgYWxsb3dlZD8gKi8KQEAgLTIwNzUsMjQgKzIwOTMsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uZW1wdHkgX19zbG90c19fICIKICAgICAgICAgICAgICAgICAgICAgICAgICAibm90IHN1cHBvcnRlZCBmb3Igc3VidHlwZSBvZiAnJXMnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlLT50cF9uYW1lKTsKLSAgICAgICAgICBiYWRfc2xvdHM6Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwotICAgICAgICAgICAgUHlfREVDUkVGKHNsb3RzKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogCiAgICAgICAgIC8qIENoZWNrIGZvciB2YWxpZCBzbG90IG5hbWVzIGFuZCB0d28gc3BlY2lhbCBjYXNlcyAqLwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnNsb3RzOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp0bXAgPSBQeVR1cGxlX0dFVF9JVEVNKHNsb3RzLCBpKTsKICAgICAgICAgICAgIGlmICghdmFsaWRfaWRlbnRpZmllcih0bXApKQotICAgICAgICAgICAgICAgIGdvdG8gYmFkX3Nsb3RzOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHRtcCkpOwogICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKHRtcCwgIl9fZGljdF9fIikgPT0gMCkgewogICAgICAgICAgICAgICAgIGlmICghbWF5X2FkZF9kaWN0IHx8IGFkZF9kaWN0KSB7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiX19kaWN0X18gc2xvdCBkaXNhbGxvd2VkOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAid2UgYWxyZWFkeSBnb3Qgb25lIik7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gYmFkX3Nsb3RzOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBhZGRfZGljdCsrOwogICAgICAgICAgICAgfQpAQCAtMjEwMiw3ICsyMTE3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJfX3dlYWtyZWZfXyBzbG90IGRpc2FsbG93ZWQ6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgd2UgYWxyZWFkeSBnb3Qgb25lLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAib3IgX19pdGVtc2l6ZV9fICE9IDAiKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBiYWRfc2xvdHM7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGFkZF93ZWFrKys7CiAgICAgICAgICAgICB9CkBAIC0yMTE0LDcgKzIxMjksNyBAQAogICAgICAgICAqLwogICAgICAgICBuZXdzbG90cyA9IFB5TGlzdF9OZXcobnNsb3RzIC0gYWRkX2RpY3QgLSBhZGRfd2Vhayk7CiAgICAgICAgIGlmIChuZXdzbG90cyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBiYWRfc2xvdHM7CisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBmb3IgKGkgPSBqID0gMDsgaSA8IG5zbG90czsgaSsrKSB7CiAgICAgICAgICAgICB0bXAgPSBQeVR1cGxlX0dFVF9JVEVNKHNsb3RzLCBpKTsKICAgICAgICAgICAgIGlmICgoYWRkX2RpY3QgJiYKQEAgLTIxMjUsMjUgKzIxNDAsMjkgQEAKICAgICAgICAgICAgIHRtcCA9X1B5X01hbmdsZShuYW1lLCB0bXApOwogICAgICAgICAgICAgaWYgKCF0bXApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3c2xvdHMpOwotICAgICAgICAgICAgICAgIGdvdG8gYmFkX3Nsb3RzOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeUxpc3RfU0VUX0lURU0obmV3c2xvdHMsIGosIHRtcCk7CisgICAgICAgICAgICBpZiAoUHlEaWN0X0dldEl0ZW0oZGljdCwgdG1wKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJVIgaW4gX19zbG90c19fIGNvbmZsaWN0cyB3aXRoIGNsYXNzIHZhcmlhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3c2xvdHMpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBqKys7CiAgICAgICAgIH0KICAgICAgICAgYXNzZXJ0KGogPT0gbnNsb3RzIC0gYWRkX2RpY3QgLSBhZGRfd2Vhayk7CiAgICAgICAgIG5zbG90cyA9IGo7Ci0gICAgICAgIFB5X0RFQ1JFRihzbG90cyk7CisgICAgICAgIFB5X0NMRUFSKHNsb3RzKTsKICAgICAgICAgaWYgKFB5TGlzdF9Tb3J0KG5ld3Nsb3RzKSA9PSAtMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdzbG90cyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgc2xvdHMgPSBQeUxpc3RfQXNUdXBsZShuZXdzbG90cyk7CiAgICAgICAgIFB5X0RFQ1JFRihuZXdzbG90cyk7Ci0gICAgICAgIGlmIChzbG90cyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHNsb3RzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgICAgIC8qIFNlY29uZGFyeSBiYXNlcyBtYXkgcHJvdmlkZSB3ZWFrcmVmcyBvciBkaWN0ICovCiAgICAgICAgIGlmIChuYmFzZXMgPiAxICYmCkBAIC0yMTcxLDIyICsyMTkwLDE3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiBYWFggRnJvbSBoZXJlIHVudGlsIHR5cGUgaXMgc2FmZWx5IGFsbG9jYXRlZCwKLSAgICAgICAicmV0dXJuIE5VTEwiIG1heSBsZWFrIHNsb3RzISAqLwotCiAgICAgLyogQWxsb2NhdGUgdGhlIHR5cGUgb2JqZWN0ICovCiAgICAgdHlwZSA9IChQeVR5cGVPYmplY3QgKiltZXRhdHlwZS0+dHBfYWxsb2MobWV0YXR5cGUsIG5zbG90cyk7Ci0gICAgaWYgKHR5cGUgPT0gTlVMTCkgewotICAgICAgICBQeV9YREVDUkVGKHNsb3RzKTsKLSAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGlmICh0eXBlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICAvKiBLZWVwIG5hbWUgYW5kIHNsb3RzIGFsaXZlIGluIHRoZSBleHRlbmRlZCB0eXBlIG9iamVjdCAqLwogICAgIGV0ID0gKFB5SGVhcFR5cGVPYmplY3QgKil0eXBlOwogICAgIFB5X0lOQ1JFRihuYW1lKTsKICAgICBldC0+aHRfbmFtZSA9IG5hbWU7CiAgICAgZXQtPmh0X3Nsb3RzID0gc2xvdHM7CisgICAgc2xvdHMgPSBOVUxMOwogCiAgICAgLyogSW5pdGlhbGl6ZSB0cF9mbGFncyAqLwogICAgIHR5cGUtPnRwX2ZsYWdzID0gUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IRUFQVFlQRSB8CkBAIC0yMjAwLDU5ICsyMjE0LDY4IEBACiAgICAgdHlwZS0+dHBfYXNfbWFwcGluZyA9ICZldC0+YXNfbWFwcGluZzsKICAgICB0eXBlLT50cF9hc19idWZmZXIgPSAmZXQtPmFzX2J1ZmZlcjsKICAgICB0eXBlLT50cF9uYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lKTsKLSAgICBpZiAoIXR5cGUtPnRwX25hbWUpIHsKLSAgICAgICAgUHlfREVDUkVGKHR5cGUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaWYgKCF0eXBlLT50cF9uYW1lKQorICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgLyogU2V0IHRwX2Jhc2UgYW5kIHRwX2Jhc2VzICovCiAgICAgdHlwZS0+dHBfYmFzZXMgPSBiYXNlczsKKyAgICBiYXNlcyA9IE5VTEw7CiAgICAgUHlfSU5DUkVGKGJhc2UpOwogICAgIHR5cGUtPnRwX2Jhc2UgPSBiYXNlOwogCiAgICAgLyogSW5pdGlhbGl6ZSB0cF9kaWN0IGZyb20gcGFzc2VkLWluIGRpY3QgKi8KLSAgICB0eXBlLT50cF9kaWN0ID0gZGljdCA9IFB5RGljdF9Db3B5KGRpY3QpOwotICAgIGlmIChkaWN0ID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHR5cGUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgUHlfSU5DUkVGKGRpY3QpOworICAgIHR5cGUtPnRwX2RpY3QgPSBkaWN0OwogCiAgICAgLyogU2V0IF9fbW9kdWxlX18gaW4gdGhlIGRpY3QgKi8KLSAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcoZGljdCwgIl9fbW9kdWxlX18iKSA9PSBOVUxMKSB7CisgICAgaWYgKF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19fbW9kdWxlX18pID09IE5VTEwpIHsKICAgICAgICAgdG1wID0gUHlFdmFsX0dldEdsb2JhbHMoKTsKICAgICAgICAgaWYgKHRtcCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICB0bXAgPSBQeURpY3RfR2V0SXRlbVN0cmluZyh0bXAsICJfX25hbWVfXyIpOworICAgICAgICAgICAgdG1wID0gX1B5RGljdF9HZXRJdGVtSWQodG1wLCAmUHlJZF9fX25hbWVfXyk7CiAgICAgICAgICAgICBpZiAodG1wICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgIl9fbW9kdWxlX18iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXApIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKGRpY3QsICZQeUlkX19fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCkgPCAwKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCisgICAgLyogU2V0IGh0X3F1YWxuYW1lIHRvIGRpY3RbJ19fcXVhbG5hbWVfXyddIGlmIGF2YWlsYWJsZSwgZWxzZSB0bworICAgICAgIF9fbmFtZV9fLiAgVGhlIF9fcXVhbG5hbWVfXyBhY2Nlc3NvciB3aWxsIGxvb2sgZm9yIGh0X3F1YWxuYW1lLgorICAgICovCisgICAgcXVhbG5hbWUgPSBfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX3F1YWxuYW1lX18pOworICAgIGlmIChxdWFsbmFtZSAhPSBOVUxMKSB7CisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHF1YWxuYW1lKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSBfX3F1YWxuYW1lX18gbXVzdCBiZSBhIHN0ciwgbm90ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHF1YWxuYW1lKS0+dHBfbmFtZSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGV0LT5odF9xdWFsbmFtZSA9IHF1YWxuYW1lID8gcXVhbG5hbWUgOiBldC0+aHRfbmFtZTsKKyAgICBQeV9JTkNSRUYoZXQtPmh0X3F1YWxuYW1lKTsKKyAgICBpZiAocXVhbG5hbWUgIT0gTlVMTCAmJiBQeURpY3RfRGVsSXRlbShkaWN0LCBQeUlkX19fcXVhbG5hbWVfXy5vYmplY3QpIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKwogICAgIC8qIFNldCB0cF9kb2MgdG8gYSBjb3B5IG9mIGRpY3RbJ19fZG9jX18nXSwgaWYgdGhlIGxhdHRlciBpcyB0aGVyZQogICAgICAgIGFuZCBpcyBhIHN0cmluZy4gIFRoZSBfX2RvY19fIGFjY2Vzc29yIHdpbGwgZmlyc3QgbG9vayBmb3IgdHBfZG9jOwogICAgICAgIGlmIHRoYXQgZmFpbHMsIGl0IHdpbGwgc3RpbGwgbG9vayBpbnRvIF9fZGljdF9fLgogICAgICovCiAgICAgewotICAgICAgICBQeU9iamVjdCAqZG9jID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZGljdCwgIl9fZG9jX18iKTsKKyAgICAgICAgUHlPYmplY3QgKmRvYyA9IF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19fZG9jX18pOwogICAgICAgICBpZiAoZG9jICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrKGRvYykpIHsKICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgY2hhciAqZG9jX3N0cjsKICAgICAgICAgICAgIGNoYXIgKnRwX2RvYzsKIAogICAgICAgICAgICAgZG9jX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoZG9jKTsKLSAgICAgICAgICAgIGlmIChkb2Nfc3RyID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodHlwZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZG9jX3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAvKiBTaWxlbnRseSB0cnVuY2F0ZSB0aGUgZG9jc3RyaW5nIGlmIGl0IGNvbnRhaW5zIG51bGwgYnl0ZXMuICovCiAgICAgICAgICAgICBsZW4gPSBzdHJsZW4oZG9jX3N0cik7CiAgICAgICAgICAgICB0cF9kb2MgPSAoY2hhciAqKVB5T2JqZWN0X01BTExPQyhsZW4gKyAxKTsKLSAgICAgICAgICAgIGlmICh0cF9kb2MgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0eXBlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0cF9kb2MgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgbWVtY3B5KHRwX2RvYywgZG9jX3N0ciwgbGVuICsgMSk7CiAgICAgICAgICAgICB0eXBlLT50cF9kb2MgPSB0cF9kb2M7CiAgICAgICAgIH0KQEAgLTIyNjAsMjggKzIyODMsMjUgQEAKIAogICAgIC8qIFNwZWNpYWwtY2FzZSBfX25ld19fOiBpZiBpdCdzIGEgcGxhaW4gZnVuY3Rpb24sCiAgICAgICAgbWFrZSBpdCBhIHN0YXRpYyBmdW5jdGlvbiAqLwotICAgIHRtcCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGRpY3QsICJfX25ld19fIik7CisgICAgdG1wID0gX1B5RGljdF9HZXRJdGVtSWQoZGljdCwgJlB5SWRfX19uZXdfXyk7CiAgICAgaWYgKHRtcCAhPSBOVUxMICYmIFB5RnVuY3Rpb25fQ2hlY2sodG1wKSkgewogICAgICAgICB0bXAgPSBQeVN0YXRpY01ldGhvZF9OZXcodG1wKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodHlwZSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiX19uZXdfXyIsIHRtcCk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZChkaWN0LCAmUHlJZF9fX25ld19fLCB0bXApIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgIH0KIAogICAgIC8qIEFkZCBkZXNjcmlwdG9ycyBmb3IgY3VzdG9tIHNsb3RzIGZyb20gX19zbG90c19fLCBvciBmb3IgX19kaWN0X18gKi8KICAgICBtcCA9IFB5SGVhcFR5cGVfR0VUX01FTUJFUlMoZXQpOwogICAgIHNsb3RvZmZzZXQgPSBiYXNlLT50cF9iYXNpY3NpemU7Ci0gICAgaWYgKHNsb3RzICE9IE5VTEwpIHsKKyAgICBpZiAoZXQtPmh0X3Nsb3RzICE9IE5VTEwpIHsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5zbG90czsgaSsrLCBtcCsrKSB7CiAgICAgICAgICAgICBtcC0+bmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoCi0gICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzbG90cywgaSkpOwotICAgICAgICAgICAgaWYgKG1wLT5uYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodHlwZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShldC0+aHRfc2xvdHMsIGkpKTsKKyAgICAgICAgICAgIGlmIChtcC0+bmFtZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBtcC0+dHlwZSA9IFRfT0JKRUNUX0VYOwogICAgICAgICAgICAgbXAtPm9mZnNldCA9IHNsb3RvZmZzZXQ7CiAKQEAgLTIyOTksNiArMjMxOSw5IEBACiAgICAgICAgICAgICB0eXBlLT50cF9kaWN0b2Zmc2V0ID0gc2xvdG9mZnNldDsKICAgICAgICAgc2xvdG9mZnNldCArPSBzaXplb2YoUHlPYmplY3QgKik7CiAgICAgfQorICAgIGlmICh0eXBlLT50cF9kaWN0b2Zmc2V0KSB7CisgICAgICAgIGV0LT5odF9jYWNoZWRfa2V5cyA9IF9QeURpY3RfTmV3S2V5c0ZvckNsYXNzKCk7CisgICAgfQogICAgIGlmIChhZGRfd2VhaykgewogICAgICAgICBhc3NlcnQoIWJhc2UtPnRwX2l0ZW1zaXplKTsKICAgICAgICAgdHlwZS0+dHBfd2Vha2xpc3RvZmZzZXQgPSBzbG90b2Zmc2V0OwpAQCAtMjM0MiwxNSArMjM2NSwyMSBAQAogICAgICAgICB0eXBlLT50cF9mcmVlID0gUHlPYmplY3RfRGVsOwogCiAgICAgLyogSW5pdGlhbGl6ZSB0aGUgcmVzdCAqLwotICAgIGlmIChQeVR5cGVfUmVhZHkodHlwZSkgPCAwKSB7Ci0gICAgICAgIFB5X0RFQ1JFRih0eXBlKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGlmIChQeVR5cGVfUmVhZHkodHlwZSkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgLyogUHV0IHRoZSBwcm9wZXIgc2xvdHMgaW4gcGxhY2UgKi8KICAgICBmaXh1cF9zbG90X2Rpc3BhdGNoZXJzKHR5cGUpOwogCisgICAgUHlfREVDUkVGKGRpY3QpOwogICAgIHJldHVybiAoUHlPYmplY3QgKil0eXBlOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGRpY3QpOworICAgIFB5X1hERUNSRUYoYmFzZXMpOworICAgIFB5X1hERUNSRUYoc2xvdHMpOworICAgIFB5X1hERUNSRUYodHlwZSk7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBzaG9ydCBzbG90b2Zmc2V0c1tdID0gewpAQCAtMjM1OSwzMCArMjM4OCw4OSBAQAogfTsKIAogUHlPYmplY3QgKgotUHlUeXBlX0Zyb21TcGVjKFB5VHlwZV9TcGVjICpzcGVjKQorUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzKFB5VHlwZV9TcGVjICpzcGVjLCBQeU9iamVjdCAqYmFzZXMpCiB7CiAgICAgUHlIZWFwVHlwZU9iamVjdCAqcmVzID0gKFB5SGVhcFR5cGVPYmplY3QqKVB5VHlwZV9HZW5lcmljQWxsb2MoJlB5VHlwZV9UeXBlLCAwKTsKKyAgICBQeVR5cGVPYmplY3QgKnR5cGUsICpiYXNlOworICAgIGNoYXIgKnM7CiAgICAgY2hhciAqcmVzX3N0YXJ0ID0gKGNoYXIqKXJlczsKICAgICBQeVR5cGVfU2xvdCAqc2xvdDsKKyAgICAKKyAgICAvKiBTZXQgdGhlIHR5cGUgbmFtZSBhbmQgcXVhbG5hbWUgKi8KKyAgICBzID0gc3RycmNocihzcGVjLT5uYW1lLCAnLicpOworICAgIGlmIChzID09IE5VTEwpCisgICAgICAgIHMgPSAoY2hhciopc3BlYy0+bmFtZTsKKyAgICBlbHNlCisgICAgICAgIHMrKzsKIAogICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcy0+aHRfbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHNwZWMtPm5hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB0eXBlID0gJnJlcy0+aHRfdHlwZTsKKyAgICAvKiBUaGUgZmxhZ3MgbXVzdCBiZSBpbml0aWFsaXplZCBlYXJseSwgYmVmb3JlIHRoZSBHQyB0cmF2ZXJzZXMgdXMgKi8KKyAgICB0eXBlLT50cF9mbGFncyA9IHNwZWMtPmZsYWdzIHwgUHlfVFBGTEFHU19IRUFQVFlQRTsKKyAgICByZXMtPmh0X25hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhzKTsKICAgICBpZiAoIXJlcy0+aHRfbmFtZSkKICAgICAgICAgZ290byBmYWlsOwotICAgIHJlcy0+aHRfdHlwZS50cF9uYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhyZXMtPmh0X25hbWUpOwotICAgIGlmICghcmVzLT5odF90eXBlLnRwX25hbWUpCisgICAgcmVzLT5odF9xdWFsbmFtZSA9IHJlcy0+aHRfbmFtZTsKKyAgICBQeV9JTkNSRUYocmVzLT5odF9xdWFsbmFtZSk7CisgICAgdHlwZS0+dHBfbmFtZSA9IHNwZWMtPm5hbWU7CisgICAgaWYgKCF0eXBlLT50cF9uYW1lKQogICAgICAgICBnb3RvIGZhaWw7CisgICAgCisgICAgLyogQWRqdXN0IGZvciBlbXB0eSB0dXBsZSBiYXNlcyAqLworICAgIGlmICghYmFzZXMpIHsKKyAgICAgICAgYmFzZSA9ICZQeUJhc2VPYmplY3RfVHlwZTsKKyAgICAgICAgLyogU2VlIHdoZXRoZXIgUHlfdHBfYmFzZShzKSB3YXMgc3BlY2lmaWVkICovCisgICAgICAgIGZvciAoc2xvdCA9IHNwZWMtPnNsb3RzOyBzbG90LT5zbG90OyBzbG90KyspIHsKKyAgICAgICAgICAgIGlmIChzbG90LT5zbG90ID09IFB5X3RwX2Jhc2UpCisgICAgICAgICAgICAgICAgYmFzZSA9IHNsb3QtPnBmdW5jOworICAgICAgICAgICAgZWxzZSBpZiAoc2xvdC0+c2xvdCA9PSBQeV90cF9iYXNlcykgeworICAgICAgICAgICAgICAgIGJhc2VzID0gc2xvdC0+cGZ1bmM7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGJhc2VzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIWJhc2VzKQorICAgICAgICAgICAgYmFzZXMgPSBQeVR1cGxlX1BhY2soMSwgYmFzZSk7CisgICAgICAgIGlmICghYmFzZXMpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgUHlfSU5DUkVGKGJhc2VzKTsKIAotICAgIHJlcy0+aHRfdHlwZS50cF9iYXNpY3NpemUgPSBzcGVjLT5iYXNpY3NpemU7Ci0gICAgcmVzLT5odF90eXBlLnRwX2l0ZW1zaXplID0gc3BlYy0+aXRlbXNpemU7Ci0gICAgcmVzLT5odF90eXBlLnRwX2ZsYWdzID0gc3BlYy0+ZmxhZ3MgfCBQeV9UUEZMQUdTX0hFQVBUWVBFOworICAgIC8qIENhbGN1bGF0ZSBiZXN0IGJhc2UsIGFuZCBjaGVjayB0aGF0IGFsbCBiYXNlcyBhcmUgdHlwZSBvYmplY3RzICovCisgICAgYmFzZSA9IGJlc3RfYmFzZShiYXNlcyk7CisgICAgaWYgKGJhc2UgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorICAgIGlmICghUHlUeXBlX0hhc0ZlYXR1cmUoYmFzZSwgUHlfVFBGTEFHU19CQVNFVFlQRSkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJ0eXBlICclLjEwMHMnIGlzIG5vdCBhbiBhY2NlcHRhYmxlIGJhc2UgdHlwZSIsCisgICAgICAgICAgICAgICAgICAgICBiYXNlLT50cF9uYW1lKTsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIC8qIEluaXRpYWxpemUgZXNzZW50aWFsIGZpZWxkcyAqLworICAgIHR5cGUtPnRwX2FzX251bWJlciA9ICZyZXMtPmFzX251bWJlcjsKKyAgICB0eXBlLT50cF9hc19zZXF1ZW5jZSA9ICZyZXMtPmFzX3NlcXVlbmNlOworICAgIHR5cGUtPnRwX2FzX21hcHBpbmcgPSAmcmVzLT5hc19tYXBwaW5nOworICAgIHR5cGUtPnRwX2FzX2J1ZmZlciA9ICZyZXMtPmFzX2J1ZmZlcjsKKyAgICAvKiBTZXQgdHBfYmFzZSBhbmQgdHBfYmFzZXMgKi8KKyAgICB0eXBlLT50cF9iYXNlcyA9IGJhc2VzOworICAgIGJhc2VzID0gTlVMTDsKKyAgICBQeV9JTkNSRUYoYmFzZSk7CisgICAgdHlwZS0+dHBfYmFzZSA9IGJhc2U7CisKKyAgICB0eXBlLT50cF9iYXNpY3NpemUgPSBzcGVjLT5iYXNpY3NpemU7CisgICAgdHlwZS0+dHBfaXRlbXNpemUgPSBzcGVjLT5pdGVtc2l6ZTsKIAogICAgIGZvciAoc2xvdCA9IHNwZWMtPnNsb3RzOyBzbG90LT5zbG90OyBzbG90KyspIHsKLSAgICAgICAgaWYgKHNsb3QtPnNsb3QgPj0gc2l6ZW9mKHNsb3RvZmZzZXRzKS9zaXplb2Yoc2xvdG9mZnNldHNbMF0pKSB7CisgICAgICAgIGlmIChzbG90LT5zbG90ID49IFB5X0FSUkFZX0xFTkdUSChzbG90b2Zmc2V0cykpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJpbnZhbGlkIHNsb3Qgb2Zmc2V0Iik7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHNsb3QtPnNsb3QgPT0gUHlfdHBfYmFzZSB8fCBzbG90LT5zbG90ID09IFB5X3RwX2Jhc2VzKQorICAgICAgICAgICAgLyogUHJvY2Vzc2VkIGFib3ZlICovCisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgKih2b2lkKiopKHJlc19zdGFydCArIHNsb3RvZmZzZXRzW3Nsb3QtPnNsb3RdKSA9IHNsb3QtPnBmdW5jOwogCiAgICAgICAgIC8qIG5lZWQgdG8gbWFrZSBhIGNvcHkgb2YgdGhlIGRvY3N0cmluZyBzbG90LCB3aGljaCB1c3VhbGx5CkBAIC0yMzkzLDE5ICsyNDgxLDI5IEBACiAgICAgICAgICAgICBpZiAodHBfZG9jID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICAgICAgbWVtY3B5KHRwX2RvYywgc2xvdC0+cGZ1bmMsIGxlbik7Ci0gICAgICAgICAgICByZXMtPmh0X3R5cGUudHBfZG9jID0gdHBfZG9jOworICAgICAgICAgICAgdHlwZS0+dHBfZG9jID0gdHBfZG9jOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChyZXMtPmh0X3R5cGUudHBfZGVhbGxvYyA9PSBOVUxMKSB7CisgICAgaWYgKHR5cGUtPnRwX2RpY3RvZmZzZXQpIHsKKyAgICAgICAgcmVzLT5odF9jYWNoZWRfa2V5cyA9IF9QeURpY3RfTmV3S2V5c0ZvckNsYXNzKCk7CisgICAgfQorICAgIGlmICh0eXBlLT50cF9kZWFsbG9jID09IE5VTEwpIHsKICAgICAgICAgLyogSXQncyBhIGhlYXAgdHlwZSwgc28gbmVlZHMgdGhlIGhlYXAgdHlwZXMnIGRlYWxsb2MuCiAgICAgICAgICAgIHN1YnR5cGVfZGVhbGxvYyB3aWxsIGNhbGwgdGhlIGJhc2UgdHlwZSdzIHRwX2RlYWxsb2MsIGlmCiAgICAgICAgICAgIG5lY2Vzc2FyeS4gKi8KLSAgICAgICAgcmVzLT5odF90eXBlLnRwX2RlYWxsb2MgPSBzdWJ0eXBlX2RlYWxsb2M7CisgICAgICAgIHR5cGUtPnRwX2RlYWxsb2MgPSBzdWJ0eXBlX2RlYWxsb2M7CiAgICAgfQogCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmcmVzLT5odF90eXBlKSA8IDApCisgICAgaWYgKFB5VHlwZV9SZWFkeSh0eXBlKSA8IDApCiAgICAgICAgIGdvdG8gZmFpbDsKIAorICAgIC8qIFNldCB0eXBlLl9fbW9kdWxlX18gKi8KKyAgICBzID0gc3RycmNocihzcGVjLT5uYW1lLCAnLicpOworICAgIGlmIChzICE9IE5VTEwpCisgICAgICAgIF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbW9kdWxlX18sIAorICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKAorICAgICAgICAgICAgICAgIHNwZWMtPm5hbWUsIChQeV9zc2l6ZV90KShzIC0gc3BlYy0+bmFtZSkpKTsKKwogICAgIHJldHVybiAoUHlPYmplY3QqKXJlczsKIAogIGZhaWw6CkBAIC0yNDEzLDYgKzI1MTEsMTIgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorUHlPYmplY3QgKgorUHlUeXBlX0Zyb21TcGVjKFB5VHlwZV9TcGVjICpzcGVjKQoreworICAgIHJldHVybiBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMoc3BlYywgTlVMTCk7Cit9CisKIAogLyogSW50ZXJuYWwgQVBJIHRvIGxvb2sgZm9yIGEgbmFtZSB0aHJvdWdoIHRoZSBNUk8uCiAgICBUaGlzIHJldHVybnMgYSBib3Jyb3dlZCByZWZlcmVuY2UsIGFuZCBkb2Vzbid0IHNldCBhbiBleGNlcHRpb24hICovCkBAIC0yNDQyLDYgKzI1NDYsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJlcyA9IE5VTEw7CisgICAgLyoga2VlcCBhIHN0cm9uZyByZWZlcmVuY2UgdG8gbXJvIGJlY2F1c2UgdHlwZS0+dHBfbXJvIGNhbiBiZSByZXBsYWNlZAorICAgICAgIGR1cmluZyBQeURpY3RfR2V0SXRlbShkaWN0LCBuYW1lKSAgKi8KKyAgICBQeV9JTkNSRUYobXJvKTsKICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhtcm8pKTsKICAgICBuID0gUHlUdXBsZV9HRVRfU0laRShtcm8pOwogICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKQEAgLTI0NTMsNiArMjU2MCw3IEBACiAgICAgICAgIGlmIChyZXMgIT0gTlVMTCkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBQeV9ERUNSRUYobXJvKTsKIAogICAgIGlmIChNQ0FDSEVfQ0FDSEVBQkxFX05BTUUobmFtZSkgJiYgYXNzaWduX3ZlcnNpb25fdGFnKHR5cGUpKSB7CiAgICAgICAgIGggPSBNQ0FDSEVfSEFTSF9NRVRIT0QodHlwZSwgbmFtZSk7CkBAIC0yNDY1LDYgKzI1NzMsMTYgQEAKICAgICByZXR1cm4gcmVzOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorX1B5VHlwZV9Mb29rdXBJZChQeVR5cGVPYmplY3QgKnR5cGUsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqbmFtZSkKK3sKKyAgICBQeU9iamVjdCAqb25hbWU7CisgICAgb25hbWUgPSBfUHlVbmljb2RlX0Zyb21JZChuYW1lKTsgICAvKiBib3Jyb3dlZCAqLworICAgIGlmIChvbmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gX1B5VHlwZV9Mb29rdXAodHlwZSwgb25hbWUpOworfQorCiAvKiBUaGlzIGlzIHNpbWlsYXIgdG8gUHlPYmplY3RfR2VuZXJpY0dldEF0dHIoKSwKICAgIGJ1dCB1c2VzIF9QeVR5cGVfTG9va3VwKCkgaW5zdGVhZCBvZiBqdXN0IGxvb2tpbmcgaW4gdHlwZS0+dHBfZGljdC4gKi8KIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNTY0LDYgKzI2ODIsOSBAQAogICAgIHJldHVybiB1cGRhdGVfc2xvdCh0eXBlLCBuYW1lKTsKIH0KIAorZXh0ZXJuIHZvaWQKK19QeURpY3RLZXlzX0RlY1JlZihQeURpY3RLZXlzT2JqZWN0ICprZXlzKTsKKwogc3RhdGljIHZvaWQKIHR5cGVfZGVhbGxvYyhQeVR5cGVPYmplY3QgKnR5cGUpCiB7CkBAIC0yNTg1LDcgKzI3MDYsMTAgQEAKICAgICAgKi8KICAgICBQeU9iamVjdF9GcmVlKChjaGFyICopdHlwZS0+dHBfZG9jKTsKICAgICBQeV9YREVDUkVGKGV0LT5odF9uYW1lKTsKKyAgICBQeV9YREVDUkVGKGV0LT5odF9xdWFsbmFtZSk7CiAgICAgUHlfWERFQ1JFRihldC0+aHRfc2xvdHMpOworICAgIGlmIChldC0+aHRfY2FjaGVkX2tleXMpCisgICAgICAgIF9QeURpY3RLZXlzX0RlY1JlZihldC0+aHRfY2FjaGVkX2tleXMpOwogICAgIFB5X1RZUEUodHlwZSktPnRwX2ZyZWUoKFB5T2JqZWN0ICopdHlwZSk7CiB9CiAKQEAgLTI2MjMsNiArMjc0Nyw5OSBAQAogICAgIHJldHVybiBQeURpY3RfTmV3KCk7CiB9CiAKKy8qCisgICBNZXJnZSB0aGUgX19kaWN0X18gb2YgYWNsYXNzIGludG8gZGljdCwgYW5kIHJlY3Vyc2l2ZWx5IGFsc28gYWxsCisgICB0aGUgX19kaWN0X19zIG9mIGFjbGFzcydzIGJhc2UgY2xhc3Nlcy4gIFRoZSBvcmRlciBvZiBtZXJnaW5nIGlzbid0CisgICBkZWZpbmVkLCBhcyBpdCdzIGV4cGVjdGVkIHRoYXQgb25seSB0aGUgZmluYWwgc2V0IG9mIGRpY3Qga2V5cyBpcworICAgaW50ZXJlc3RpbmcuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvci4KKyovCisKK3N0YXRpYyBpbnQKK21lcmdlX2NsYXNzX2RpY3QoUHlPYmplY3QgKmRpY3QsIFB5T2JqZWN0ICphY2xhc3MpCit7CisgICAgUHlPYmplY3QgKmNsYXNzZGljdDsKKyAgICBQeU9iamVjdCAqYmFzZXM7CisgICAgX1B5X0lERU5USUZJRVIoX19iYXNlc19fKTsKKworICAgIGFzc2VydChQeURpY3RfQ2hlY2soZGljdCkpOworICAgIGFzc2VydChhY2xhc3MpOworCisgICAgLyogTWVyZ2UgaW4gdGhlIHR5cGUncyBkaWN0IChpZiBhbnkpLiAqLworICAgIGNsYXNzZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoYWNsYXNzLCAmUHlJZF9fX2RpY3RfXyk7CisgICAgaWYgKGNsYXNzZGljdCA9PSBOVUxMKQorICAgICAgICBQeUVycl9DbGVhcigpOworICAgIGVsc2UgeworICAgICAgICBpbnQgc3RhdHVzID0gUHlEaWN0X1VwZGF0ZShkaWN0LCBjbGFzc2RpY3QpOworICAgICAgICBQeV9ERUNSRUYoY2xhc3NkaWN0KTsKKyAgICAgICAgaWYgKHN0YXR1cyA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogUmVjdXJzaXZlbHkgbWVyZ2UgaW4gdGhlIGJhc2UgdHlwZXMnIChpZiBhbnkpIGRpY3RzLiAqLworICAgIGJhc2VzID0gX1B5T2JqZWN0X0dldEF0dHJJZChhY2xhc3MsICZQeUlkX19fYmFzZXNfXyk7CisgICAgaWYgKGJhc2VzID09IE5VTEwpCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgZWxzZSB7CisgICAgICAgIC8qIFdlIGhhdmUgbm8gZ3VhcmFudGVlIHRoYXQgYmFzZXMgaXMgYSByZWFsIHR1cGxlICovCisgICAgICAgIFB5X3NzaXplX3QgaSwgbjsKKyAgICAgICAgbiA9IFB5U2VxdWVuY2VfU2l6ZShiYXNlcyk7IC8qIFRoaXMgYmV0dGVyIGJlIHJpZ2h0ICovCisgICAgICAgIGlmIChuIDwgMCkKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgICAgIGludCBzdGF0dXM7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmJhc2UgPSBQeVNlcXVlbmNlX0dldEl0ZW0oYmFzZXMsIGkpOworICAgICAgICAgICAgICAgIGlmIChiYXNlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0dXMgPSBtZXJnZV9jbGFzc19kaWN0KGRpY3QsIGJhc2UpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdHVzIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKiBfX2Rpcl9fIGZvciB0eXBlIG9iamVjdHM6IHJldHVybnMgX19kaWN0X18gYW5kIF9fYmFzZXNfXy4KKyAgIFdlIGRlbGliZXJhdGVseSBkb24ndCBzdWNrIHVwIGl0cyBfX2NsYXNzX18sIGFzIG1ldGhvZHMgYmVsb25naW5nIHRvIHRoZQorICAgbWV0YWNsYXNzIHdvdWxkIHByb2JhYmx5IGJlIG1vcmUgY29uZnVzaW5nIHRoYW4gaGVscGZ1bC4KKyovCitzdGF0aWMgUHlPYmplY3QgKgordHlwZV9kaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpkaWN0ID0gUHlEaWN0X05ldygpOworCisgICAgaWYgKGRpY3QgIT0gTlVMTCAmJiBtZXJnZV9jbGFzc19kaWN0KGRpY3QsIHNlbGYpID09IDApCisgICAgICAgIHJlc3VsdCA9IFB5RGljdF9LZXlzKGRpY3QpOworCisgICAgUHlfWERFQ1JFRihkaWN0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QqCit0eXBlX3NpemVvZihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3NfdW51c2VkKQoreworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSAoUHlUeXBlT2JqZWN0KilzZWxmOworICAgIGlmICh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpIHsKKyAgICAgICAgUHlIZWFwVHlwZU9iamVjdCogZXQgPSAoUHlIZWFwVHlwZU9iamVjdCopdHlwZTsKKyAgICAgICAgc2l6ZSA9IHNpemVvZihQeUhlYXBUeXBlT2JqZWN0KTsKKyAgICAgICAgaWYgKGV0LT5odF9jYWNoZWRfa2V5cykKKyAgICAgICAgICAgIHNpemUgKz0gX1B5RGljdF9LZXlzU2l6ZShldC0+aHRfY2FjaGVkX2tleXMpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHNpemUgPSBzaXplb2YoUHlUeXBlT2JqZWN0KTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNpemUpOworfQorCiBzdGF0aWMgUHlNZXRob2REZWYgdHlwZV9tZXRob2RzW10gPSB7CiAgICAgeyJtcm8iLCAoUHlDRnVuY3Rpb24pbXJvX2V4dGVybmFsLCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJtcm8oKSAtPiBsaXN0XG5yZXR1cm4gYSB0eXBlJ3MgbWV0aG9kIHJlc29sdXRpb24gb3JkZXIiKX0sCkBAIC0yNjM2LDYgKzI4NTMsMTAgQEAKICAgICAgUHlEb2NfU1RSKCJfX2luc3RhbmNlY2hlY2tfXygpIC0+IGJvb2xcbmNoZWNrIGlmIGFuIG9iamVjdCBpcyBhbiBpbnN0YW5jZSIpfSwKICAgICB7Il9fc3ViY2xhc3NjaGVja19fIiwgdHlwZV9fX3N1YmNsYXNzY2hlY2tfXywgTUVUSF9PLAogICAgICBQeURvY19TVFIoIl9fc3ViY2xhc3NjaGVja19fKCkgLT4gYm9vbFxuY2hlY2sgaWYgYSBjbGFzcyBpcyBhIHN1YmNsYXNzIil9LAorICAgIHsiX19kaXJfXyIsIHR5cGVfZGlyLCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfX2Rpcl9fKCkgLT4gbGlzdFxuc3BlY2lhbGl6ZWQgX19kaXJfXyBpbXBsZW1lbnRhdGlvbiBmb3IgdHlwZXMiKX0sCisgICAgeyJfX3NpemVvZl9fIiwgICAgICB0eXBlX3NpemVvZiwgICAgICAgTUVUSF9OT0FSR1MsCisgICAgICJfX3NpemVvZl9fKCkgLT4gaW50XG5yZXR1cm4gbWVtb3J5IGNvbnN1bXB0aW9uIG9mIHRoZSB0eXBlIG9iamVjdCJ9LAogICAgIHswfQogfTsKIApAQCAtMjY0OCw3ICsyODY5LDEyIEBACiB7CiAgICAgLyogQmVjYXVzZSBvZiB0eXBlX2lzX2djKCksIHRoZSBjb2xsZWN0b3Igb25seSBjYWxscyB0aGlzCiAgICAgICAgZm9yIGhlYXB0eXBlcy4gKi8KLSAgICBhc3NlcnQodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKTsKKyAgICBpZiAoISh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpKSB7CisgICAgICAgIGNoYXIgbXNnWzIwMF07CisgICAgICAgIHNwcmludGYobXNnLCAidHlwZV90cmF2ZXJzZSgpIGNhbGxlZCBmb3Igbm9uLWhlYXAgdHlwZSAnJS4xMDBzJyIsCisgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSk7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IobXNnKTsKKyAgICB9CiAKICAgICBQeV9WSVNJVCh0eXBlLT50cF9kaWN0KTsKICAgICBQeV9WSVNJVCh0eXBlLT50cF9jYWNoZSk7CkBAIC0yNjY3LDYgKzI4OTMsNyBAQAogc3RhdGljIGludAogdHlwZV9jbGVhcihQeVR5cGVPYmplY3QgKnR5cGUpCiB7CisgICAgUHlEaWN0S2V5c09iamVjdCAqY2FjaGVkX2tleXM7CiAgICAgLyogQmVjYXVzZSBvZiB0eXBlX2lzX2djKCksIHRoZSBjb2xsZWN0b3Igb25seSBjYWxscyB0aGlzCiAgICAgICAgZm9yIGhlYXB0eXBlcy4gKi8KICAgICBhc3NlcnQodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKTsKQEAgLTI2OTgsNiArMjkyNSwxMSBAQAogICAgICovCiAKICAgICBQeVR5cGVfTW9kaWZpZWQodHlwZSk7CisgICAgY2FjaGVkX2tleXMgPSAoKFB5SGVhcFR5cGVPYmplY3QgKil0eXBlKS0+aHRfY2FjaGVkX2tleXM7CisgICAgaWYgKGNhY2hlZF9rZXlzICE9IE5VTEwpIHsKKyAgICAgICAgKChQeUhlYXBUeXBlT2JqZWN0ICopdHlwZSktPmh0X2NhY2hlZF9rZXlzID0gTlVMTDsKKyAgICAgICAgX1B5RGljdEtleXNfRGVjUmVmKGNhY2hlZF9rZXlzKTsKKyAgICB9CiAgICAgaWYgKHR5cGUtPnRwX2RpY3QpCiAgICAgICAgIFB5RGljdF9DbGVhcih0eXBlLT50cF9kaWN0KTsKICAgICBQeV9DTEVBUih0eXBlLT50cF9tcm8pOwpAQCAtMjgxMywyMiArMzA0NSwxMSBAQAogb2JqZWN0X2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBpbnQgZXJyID0gMDsKLSAgICBpZiAoZXhjZXNzX2FyZ3MoYXJncywga3dkcykpIHsKLSAgICAgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gUHlfVFlQRShzZWxmKTsKLSAgICAgICAgaWYgKHR5cGUtPnRwX2luaXQgIT0gb2JqZWN0X2luaXQgJiYKLSAgICAgICAgICAgIHR5cGUtPnRwX25ldyAhPSBvYmplY3RfbmV3KQotICAgICAgICB7Ci0gICAgICAgICAgICBlcnIgPSBQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0Ll9faW5pdF9fKCkgdGFrZXMgbm8gcGFyYW1ldGVycyIsCi0gICAgICAgICAgICAgICAgICAgICAgIDEpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUtPnRwX2luaXQgIT0gb2JqZWN0X2luaXQgfHwKLSAgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmV3ID09IG9iamVjdF9uZXcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgIm9iamVjdC5fX2luaXRfXygpIHRha2VzIG5vIHBhcmFtZXRlcnMiKTsKLSAgICAgICAgICAgIGVyciA9IC0xOwotICAgICAgICB9CisgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gUHlfVFlQRShzZWxmKTsKKyAgICBpZiAoZXhjZXNzX2FyZ3MoYXJncywga3dkcykgJiYKKyAgICAgICAgKHR5cGUtPnRwX25ldyA9PSBvYmplY3RfbmV3IHx8IHR5cGUtPnRwX2luaXQgIT0gb2JqZWN0X2luaXQpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJvYmplY3QuX19pbml0X18oKSB0YWtlcyBubyBwYXJhbWV0ZXJzIik7CisgICAgICAgIGVyciA9IC0xOwogICAgIH0KICAgICByZXR1cm4gZXJyOwogfQpAQCAtMjgzNiwzMyArMzA1NywyMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9iamVjdF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgaW50IGVyciA9IDA7Ci0gICAgaWYgKGV4Y2Vzc19hcmdzKGFyZ3MsIGt3ZHMpKSB7Ci0gICAgICAgIGlmICh0eXBlLT50cF9uZXcgIT0gb2JqZWN0X25ldyAmJgotICAgICAgICAgICAgdHlwZS0+dHBfaW5pdCAhPSBvYmplY3RfaW5pdCkKLSAgICAgICAgewotICAgICAgICAgICAgZXJyID0gUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCgpIHRha2VzIG5vIHBhcmFtZXRlcnMiLAotICAgICAgICAgICAgICAgICAgICAgICAxKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICh0eXBlLT50cF9uZXcgIT0gb2JqZWN0X25ldyB8fAotICAgICAgICAgICAgICAgICB0eXBlLT50cF9pbml0ID09IG9iamVjdF9pbml0KQotICAgICAgICB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICJvYmplY3QoKSB0YWtlcyBubyBwYXJhbWV0ZXJzIik7Ci0gICAgICAgICAgICBlcnIgPSAtMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoZXJyIDwgMCkKKyAgICBpZiAoZXhjZXNzX2FyZ3MoYXJncywga3dkcykgJiYKKyAgICAgICAgKHR5cGUtPnRwX2luaXQgPT0gb2JqZWN0X2luaXQgfHwgdHlwZS0+dHBfbmV3ICE9IG9iamVjdF9uZXcpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJvYmplY3QoKSB0YWtlcyBubyBwYXJhbWV0ZXJzIik7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIGlmICh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSVNfQUJTVFJBQ1QpIHsKLSAgICAgICAgc3RhdGljIFB5T2JqZWN0ICpjb21tYSA9IE5VTEw7CiAgICAgICAgIFB5T2JqZWN0ICphYnN0cmFjdF9tZXRob2RzID0gTlVMTDsKICAgICAgICAgUHlPYmplY3QgKmJ1aWx0aW5zOwogICAgICAgICBQeU9iamVjdCAqc29ydGVkOwogICAgICAgICBQeU9iamVjdCAqc29ydGVkX21ldGhvZHMgPSBOVUxMOwogICAgICAgICBQeU9iamVjdCAqam9pbmVkID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3QgKmNvbW1hOworICAgICAgICBfUHlfc3RhdGljX3N0cmluZyhjb21tYV9pZCwgIiwgIik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHNvcnRlZCk7CiAKICAgICAgICAgLyogQ29tcHV0ZSAiLCAiLmpvaW4oc29ydGVkKHR5cGUuX19hYnN0cmFjdG1ldGhvZHNfXykpCiAgICAgICAgICAgIGludG8gam9pbmVkLiAqLwpAQCAtMjg3Miw3ICszMDgxLDcgQEAKICAgICAgICAgYnVpbHRpbnMgPSBQeUV2YWxfR2V0QnVpbHRpbnMoKTsKICAgICAgICAgaWYgKGJ1aWx0aW5zID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICBzb3J0ZWQgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhidWlsdGlucywgInNvcnRlZCIpOworICAgICAgICBzb3J0ZWQgPSBfUHlEaWN0X0dldEl0ZW1JZChidWlsdGlucywgJlB5SWRfc29ydGVkKTsKICAgICAgICAgaWYgKHNvcnRlZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgc29ydGVkX21ldGhvZHMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHNvcnRlZCwKQEAgLTI4ODAsMTMgKzMwODksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgICAgICBpZiAoc29ydGVkX21ldGhvZHMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGlmIChjb21tYSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBjb21tYSA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCIsICIpOwotICAgICAgICAgICAgaWYgKGNvbW1hID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBqb2luZWQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGNvbW1hLCAiam9pbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk8iLCAgc29ydGVkX21ldGhvZHMpOworICAgICAgICBjb21tYSA9IF9QeVVuaWNvZGVfRnJvbUlkKCZjb21tYV9pZCk7CisgICAgICAgIGlmIChjb21tYSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgam9pbmVkID0gUHlVbmljb2RlX0pvaW4oY29tbWEsIHNvcnRlZF9tZXRob2RzKTsKICAgICAgICAgaWYgKGpvaW5lZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtMjkyNCw3ICszMTMwLDcgQEAKICAgICAgICAgUHlfREVDUkVGKG1vZCk7CiAgICAgICAgIG1vZCA9IE5VTEw7CiAgICAgfQotICAgIG5hbWUgPSB0eXBlX25hbWUodHlwZSwgTlVMTCk7CisgICAgbmFtZSA9IHR5cGVfcXVhbG5hbWUodHlwZSwgTlVMTCk7CiAgICAgaWYgKG5hbWUgPT0gTlVMTCkgewogICAgICAgICBQeV9YREVDUkVGKG1vZCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzA4OSw3ICszMjk1LDcgQEAKICAgICB9CiAgICAgaWYgKCFQeVR5cGVfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgIl9fY2xhc3NfXyBtdXN0IGJlIHNldCB0byBuZXctc3R5bGUgY2xhc3MsIG5vdCAnJXMnIG9iamVjdCIsCisgICAgICAgICAgIl9fY2xhc3NfXyBtdXN0IGJlIHNldCB0byBhIGNsYXNzLCBub3QgJyVzJyBvYmplY3QiLAogICAgICAgICAgIFB5X1RZUEUodmFsdWUpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTMxMzAsMTQgKzMzMzYsMTkgQEAKIGltcG9ydF9jb3B5cmVnKHZvaWQpCiB7CiAgICAgc3RhdGljIFB5T2JqZWN0ICpjb3B5cmVnX3N0cjsKKyAgICBzdGF0aWMgUHlPYmplY3QgKm1vZF9jb3B5cmVnID0gTlVMTDsKIAogICAgIGlmICghY29weXJlZ19zdHIpIHsKICAgICAgICAgY29weXJlZ19zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiY29weXJlZyIpOwogICAgICAgICBpZiAoY29weXJlZ19zdHIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBpZiAoIW1vZF9jb3B5cmVnKSB7CisgICAgICAgIG1vZF9jb3B5cmVnID0gUHlJbXBvcnRfSW1wb3J0KGNvcHlyZWdfc3RyKTsKKyAgICB9CiAKLSAgICByZXR1cm4gUHlJbXBvcnRfSW1wb3J0KGNvcHlyZWdfc3RyKTsKKyAgICBQeV9YSU5DUkVGKG1vZF9jb3B5cmVnKTsKKyAgICByZXR1cm4gbW9kX2NvcHlyZWc7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zMTQ2LDE0ICszMzU3LDExIEBACiAgICAgUHlPYmplY3QgKmNsc2RpY3Q7CiAgICAgUHlPYmplY3QgKmNvcHlyZWc7CiAgICAgUHlPYmplY3QgKnNsb3RuYW1lczsKLQotICAgIGlmICghUHlUeXBlX0NoZWNrKGNscykpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICB9CisgICAgX1B5X0lERU5USUZJRVIoX19zbG90bmFtZXNfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX3Nsb3RuYW1lcyk7CiAKICAgICBjbHNkaWN0ID0gKChQeVR5cGVPYmplY3QgKiljbHMpLT50cF9kaWN0OwotICAgIHNsb3RuYW1lcyA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGNsc2RpY3QsICJfX3Nsb3RuYW1lc19fIik7CisgICAgc2xvdG5hbWVzID0gX1B5RGljdF9HZXRJdGVtSWQoY2xzZGljdCwgJlB5SWRfX19zbG90bmFtZXNfXyk7CiAgICAgaWYgKHNsb3RuYW1lcyAhPSBOVUxMICYmIFB5TGlzdF9DaGVjayhzbG90bmFtZXMpKSB7CiAgICAgICAgIFB5X0lOQ1JFRihzbG90bmFtZXMpOwogICAgICAgICByZXR1cm4gc2xvdG5hbWVzOwpAQCAtMzE2Myw3ICszMzcxLDcgQEAKICAgICBpZiAoY29weXJlZyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHNsb3RuYW1lcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoY29weXJlZywgIl9zbG90bmFtZXMiLCAiTyIsIGNscyk7CisgICAgc2xvdG5hbWVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChjb3B5cmVnLCAmUHlJZF9fc2xvdG5hbWVzLCAiTyIsIGNscyk7CiAgICAgUHlfREVDUkVGKGNvcHlyZWcpOwogICAgIGlmIChzbG90bmFtZXMgIT0gTlVMTCAmJgogICAgICAgICBzbG90bmFtZXMgIT0gUHlfTm9uZSAmJgpAQCAtMzE4NywxMiArMzM5NSwxMyBAQAogICAgIFB5T2JqZWN0ICpzbG90cyA9IE5VTEwsICpsaXN0aXRlbXMgPSBOVUxMLCAqZGljdGl0ZW1zID0gTlVMTDsKICAgICBQeU9iamVjdCAqY29weXJlZyA9IE5VTEwsICpuZXdvYmogPSBOVUxMLCAqcmVzID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGksIG47CisgICAgX1B5X0lERU5USUZJRVIoX19nZXRuZXdhcmdzX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fZ2V0c3RhdGVfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfXyk7CiAKLSAgICBjbHMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fY2xhc3NfXyIpOwotICAgIGlmIChjbHMgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgY2xzID0gKFB5T2JqZWN0ICopIFB5X1RZUEUob2JqKTsKIAotICAgIGdldG5ld2FyZ3MgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fZ2V0bmV3YXJnc19fIik7CisgICAgZ2V0bmV3YXJncyA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9fX2dldG5ld2FyZ3NfXyk7CiAgICAgaWYgKGdldG5ld2FyZ3MgIT0gTlVMTCkgewogICAgICAgICBhcmdzID0gUHlPYmplY3RfQ2FsbE9iamVjdChnZXRuZXdhcmdzLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKGdldG5ld2FyZ3MpOwpAQCAtMzIxMCw3ICszNDE5LDcgQEAKICAgICBpZiAoYXJncyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVuZDsKIAotICAgIGdldHN0YXRlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJfX2dldHN0YXRlX18iKTsKKyAgICBnZXRzdGF0ZSA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9fX2dldHN0YXRlX18pOwogICAgIGlmIChnZXRzdGF0ZSAhPSBOVUxMKSB7CiAgICAgICAgIHN0YXRlID0gUHlPYmplY3RfQ2FsbE9iamVjdChnZXRzdGF0ZSwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihnZXRzdGF0ZSk7CkBAIC0zMjE4LDE3ICszNDI3LDE4IEBACiAgICAgICAgICAgICBnb3RvIGVuZDsKICAgICB9CiAgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICoqZGljdDsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgc3RhdGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fZGljdF9fIik7Ci0gICAgICAgIGlmIChzdGF0ZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBkaWN0ID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKKyAgICAgICAgaWYgKGRpY3QgJiYgKmRpY3QpCisgICAgICAgICAgICBzdGF0ZSA9ICpkaWN0OworICAgICAgICBlbHNlCiAgICAgICAgICAgICBzdGF0ZSA9IFB5X05vbmU7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoc3RhdGUpOwotICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihzdGF0ZSk7CiAgICAgICAgIG5hbWVzID0gc2xvdG5hbWVzKGNscyk7CiAgICAgICAgIGlmIChuYW1lcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlbmQ7Ci0gICAgICAgIGlmIChuYW1lcyAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmIChuYW1lcyAhPSBQeV9Ob25lICYmIFB5TGlzdF9HRVRfU0laRShuYW1lcykgPiAwKSB7CiAgICAgICAgICAgICBhc3NlcnQoUHlMaXN0X0NoZWNrKG5hbWVzKSk7CiAgICAgICAgICAgICBzbG90cyA9IFB5RGljdF9OZXcoKTsKICAgICAgICAgICAgIGlmIChzbG90cyA9PSBOVUxMKQpAQCAtMzI3NSw3ICszNDg1LDggQEAKICAgICAgICAgUHlfSU5DUkVGKGRpY3RpdGVtcyk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqaXRlbXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKG9iaiwgIml0ZW1zIiwgIiIpOworICAgICAgICBfUHlfSURFTlRJRklFUihpdGVtcyk7CisgICAgICAgIFB5T2JqZWN0ICppdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob2JqLCAmUHlJZF9pdGVtcywgIiIpOwogICAgICAgICBpZiAoaXRlbXMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZW5kOwogICAgICAgICBkaWN0aXRlbXMgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZW1zKTsKQEAgLTMyODcsNyArMzQ5OCw3IEBACiAgICAgY29weXJlZyA9IGltcG9ydF9jb3B5cmVnKCk7CiAgICAgaWYgKGNvcHlyZWcgPT0gTlVMTCkKICAgICAgICAgZ290byBlbmQ7Ci0gICAgbmV3b2JqID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhjb3B5cmVnLCAiX19uZXdvYmpfXyIpOworICAgIG5ld29iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQoY29weXJlZywgJlB5SWRfX19uZXdvYmpfXyk7CiAgICAgaWYgKG5ld29iaiA9PSBOVUxMKQogICAgICAgICBnb3RvIGVuZDsKIApAQCAtMzI5NSw4ICszNTA2LDggQEAKICAgICBhcmdzMiA9IFB5VHVwbGVfTmV3KG4rMSk7CiAgICAgaWYgKGFyZ3MyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZW5kOworICAgIFB5X0lOQ1JFRihjbHMpOwogICAgIFB5VHVwbGVfU0VUX0lURU0oYXJnczIsIDAsIGNscyk7Ci0gICAgY2xzID0gTlVMTDsKICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICp2ID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKICAgICAgICAgUHlfSU5DUkVGKHYpOwpAQCAtMzMwNiw3ICszNTE3LDYgQEAKICAgICByZXMgPSBQeVR1cGxlX1BhY2soNSwgbmV3b2JqLCBhcmdzMiwgc3RhdGUsIGxpc3RpdGVtcywgZGljdGl0ZW1zKTsKIAogICBlbmQ6Ci0gICAgUHlfWERFQ1JFRihjbHMpOwogICAgIFB5X1hERUNSRUYoYXJncyk7CiAgICAgUHlfWERFQ1JFRihhcmdzMik7CiAgICAgUHlfWERFQ1JFRihzbG90cyk7CkBAIC0zMzY2LDMxICszNTc2LDM0IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb2JqZWN0X3JlZHVjZV9leChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgc3RhdGljIFB5T2JqZWN0ICpvYmpyZWR1Y2U7CiAgICAgUHlPYmplY3QgKnJlZHVjZSwgKnJlczsKICAgICBpbnQgcHJvdG8gPSAwOworICAgIF9QeV9JREVOVElGSUVSKF9fcmVkdWNlX18pOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpfX3JlZHVjZV9leF9fIiwgJnByb3RvKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZWR1Y2UgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYsICJfX3JlZHVjZV9fIik7CisgICAgaWYgKG9ianJlZHVjZSA9PSBOVUxMKSB7CisgICAgICAgIG9ianJlZHVjZSA9IF9QeURpY3RfR2V0SXRlbUlkKFB5QmFzZU9iamVjdF9UeXBlLnRwX2RpY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19fcmVkdWNlX18pOworICAgICAgICBpZiAob2JqcmVkdWNlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZWR1Y2UgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fcmVkdWNlX18pOwogICAgIGlmIChyZWR1Y2UgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKmNscywgKmNsc3JlZHVjZSwgKm9ianJlZHVjZTsKKyAgICAgICAgUHlPYmplY3QgKmNscywgKmNsc3JlZHVjZTsKICAgICAgICAgaW50IG92ZXJyaWRlOwotICAgICAgICBjbHMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYsICJfX2NsYXNzX18iKTsKLSAgICAgICAgaWYgKGNscyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVkdWNlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGNsc3JlZHVjZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoY2xzLCAiX19yZWR1Y2VfXyIpOwotICAgICAgICBQeV9ERUNSRUYoY2xzKTsKKworICAgICAgICBjbHMgPSAoUHlPYmplY3QgKikgUHlfVFlQRShzZWxmKTsKKyAgICAgICAgY2xzcmVkdWNlID0gX1B5T2JqZWN0X0dldEF0dHJJZChjbHMsICZQeUlkX19fcmVkdWNlX18pOwogICAgICAgICBpZiAoY2xzcmVkdWNlID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZWR1Y2UpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgb2JqcmVkdWNlID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoUHlCYXNlT2JqZWN0X1R5cGUudHBfZGljdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fcmVkdWNlX18iKTsKICAgICAgICAgb3ZlcnJpZGUgPSAoY2xzcmVkdWNlICE9IG9ianJlZHVjZSk7CiAgICAgICAgIFB5X0RFQ1JFRihjbHNyZWR1Y2UpOwogICAgICAgICBpZiAob3ZlcnJpZGUpIHsKQEAgLTM0MDgsOCArMzYyMSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb2JqZWN0X3N1YmNsYXNzaG9vayhQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIFB5RG9jX1NUUlZBUihvYmplY3Rfc3ViY2xhc3Nob29rX2RvYywKQEAgLTM0NDAsMjEgKzM2NTIsMjEgQEAKICAgICBzZWxmX2FzX3N0ciA9IFB5T2JqZWN0X1N0cihzZWxmKTsKICAgICBpZiAoc2VsZl9hc19zdHIgIT0gTlVMTCkgewogICAgICAgICAvKiBJc3N1ZSA3OTk0OiBJZiB3ZSdyZSBjb252ZXJ0aW5nIHRvIGEgc3RyaW5nLCB3ZQotCSAgIHNob3VsZCByZWplY3QgZm9ybWF0IHNwZWNpZmljYXRpb25zICovCi0gICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoZm9ybWF0X3NwZWMpID4gMCkgewotCSAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCi0JCQkgICAgICJvYmplY3QuX19mb3JtYXRfXyB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCAiCi0JCQkgICAgICJzdHJpbmcgaXMgZGVwcmVjYXRlZCIsIDEpIDwgMCkgewotCSAgICAgIGdvdG8gZG9uZTsKLQkgICAgfQotCSAgICAvKiBFdmVudHVhbGx5IHRoaXMgd2lsbCBiZWNvbWUgYW4gZXJyb3I6Ci0JICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0JICAgICAgICJub24tZW1wdHkgZm9ybWF0IHN0cmluZyBwYXNzZWQgdG8gb2JqZWN0Ll9fZm9ybWF0X18iKTsKLQkgICAgICAgZ290byBkb25lOwotCSAgICAqLwotCX0KKyAgICAgICAgICAgc2hvdWxkIHJlamVjdCBmb3JtYXQgc3BlY2lmaWNhdGlvbnMgKi8KKyAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGZvcm1hdF9zcGVjKSA+IDApIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0Ll9fZm9ybWF0X18gd2l0aCBhIG5vbi1lbXB0eSBmb3JtYXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIGlzIGRlcHJlY2F0ZWQiLCAxKSA8IDApIHsKKyAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogRXZlbnR1YWxseSB0aGlzIHdpbGwgYmVjb21lIGFuIGVycm9yOgorICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICJub24tZW1wdHkgZm9ybWF0IHN0cmluZyBwYXNzZWQgdG8gb2JqZWN0Ll9fZm9ybWF0X18iKTsKKyAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgICovCisgICAgICAgIH0KIAotCXJlc3VsdCA9IFB5T2JqZWN0X0Zvcm1hdChzZWxmX2FzX3N0ciwgZm9ybWF0X3NwZWMpOworICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9Gb3JtYXQoc2VsZl9hc19zdHIsIGZvcm1hdF9zcGVjKTsKICAgICB9CiAKIGRvbmU6CkBAIC0zNDc3LDYgKzM2ODksNTMgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7CiB9CiAKKy8qIF9fZGlyX18gZm9yIGdlbmVyaWMgb2JqZWN0czogcmV0dXJucyBfX2RpY3RfXywgX19jbGFzc19fLAorICAgYW5kIHJlY3Vyc2l2ZWx5IHVwIHRoZSBfX2NsYXNzX18uX19iYXNlc19fIGNoYWluLgorKi8KK3N0YXRpYyBQeU9iamVjdCAqCitvYmplY3RfZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZGljdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKml0c2NsYXNzID0gTlVMTDsKKworICAgIC8qIEdldCBfX2RpY3RfXyAod2hpY2ggbWF5IG9yIG1heSBub3QgYmUgYSByZWFsIGRpY3QuLi4pICovCisgICAgZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19kaWN0X18pOworICAgIGlmIChkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICB9CisgICAgZWxzZSBpZiAoIVB5RGljdF9DaGVjayhkaWN0KSkgeworICAgICAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBDb3B5IF9fZGljdF9fIHRvIGF2b2lkIG11dGF0aW5nIGl0LiAqLworICAgICAgICBQeU9iamVjdCAqdGVtcCA9IFB5RGljdF9Db3B5KGRpY3QpOworICAgICAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgICAgIGRpY3QgPSB0ZW1wOworICAgIH0KKworICAgIGlmIChkaWN0ID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAvKiBNZXJnZSBpbiBhdHRycyByZWFjaGFibGUgZnJvbSBpdHMgY2xhc3MuICovCisgICAgaXRzY2xhc3MgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fY2xhc3NfXyk7CisgICAgaWYgKGl0c2NsYXNzID09IE5VTEwpCisgICAgICAgIC8qIFhYWCh0b21lcik6IFBlcmhhcHMgZmFsbCBiYWNrIHRvIG9iai0+b2JfdHlwZSBpZiBubworICAgICAgICAgICAgICAgICAgICAgICBfX2NsYXNzX18gZXhpc3RzPyAqLworICAgICAgICBQeUVycl9DbGVhcigpOworICAgIGVsc2UgaWYgKG1lcmdlX2NsYXNzX2RpY3QoZGljdCwgaXRzY2xhc3MpICE9IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXN1bHQgPSBQeURpY3RfS2V5cyhkaWN0KTsKKyAgICAvKiBmYWxsIHRocm91Z2ggKi8KK2Vycm9yOgorICAgIFB5X1hERUNSRUYoaXRzY2xhc3MpOworICAgIFB5X1hERUNSRUYoZGljdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIFB5TWV0aG9kRGVmIG9iamVjdF9tZXRob2RzW10gPSB7CiAgICAgeyJfX3JlZHVjZV9leF9fIiwgb2JqZWN0X3JlZHVjZV9leCwgTUVUSF9WQVJBUkdTLAogICAgICBQeURvY19TVFIoImhlbHBlciBmb3IgcGlja2xlIil9LApAQCAtMzQ4OCw2ICszNzQ3LDggQEAKICAgICAgUHlEb2NfU1RSKCJkZWZhdWx0IG9iamVjdCBmb3JtYXR0ZXIiKX0sCiAgICAgeyJfX3NpemVvZl9fIiwgb2JqZWN0X3NpemVvZiwgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiX19zaXplb2ZfXygpIC0+IGludFxuc2l6ZSBvZiBvYmplY3QgaW4gbWVtb3J5LCBpbiBieXRlcyIpfSwKKyAgICB7Il9fZGlyX18iLCBvYmplY3RfZGlyLCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfX2Rpcl9fKCkgLT4gbGlzdFxuZGVmYXVsdCBkaXIoKSBpbXBsZW1lbnRhdGlvbiIpfSwKICAgICB7MH0KIH07CiAKQEAgLTM1NTcsNyArMzgxOCw3IEBACiAgICAgICAgICAgICBkZXNjciA9IFB5RGVzY3JfTmV3Q2xhc3NNZXRob2QodHlwZSwgbWV0aCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAobWV0aC0+bWxfZmxhZ3MgJiBNRVRIX1NUQVRJQykgewotICAgICAgICAgICAgUHlPYmplY3QgKmNmdW5jID0gUHlDRnVuY3Rpb25fTmV3KG1ldGgsIE5VTEwpOworICAgICAgICAgICAgUHlPYmplY3QgKmNmdW5jID0gUHlDRnVuY3Rpb25fTmV3KG1ldGgsIChQeU9iamVjdCopdHlwZSk7CiAgICAgICAgICAgICBpZiAoY2Z1bmMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICBkZXNjciA9IFB5U3RhdGljTWV0aG9kX05ldyhjZnVuYyk7CkBAIC0zNjM4LDggKzM4OTksOCBAQAogICAgICAgICAgICB0aGF0IHRoZSBleHRlbnNpb24gdHlwZSdzIG93biBmYWN0b3J5IGZ1bmN0aW9uIGVuc3VyZXMpLgogICAgICAgICAgICBIZWFwIHR5cGVzLCBvZiBjb3Vyc2UsIGFyZSB1bmRlciBvdXIgY29udHJvbCwgc28gdGhleSBkbwogICAgICAgICAgICBpbmhlcml0IHRwX25ldzsgc3RhdGljIGV4dGVuc2lvbiB0eXBlcyB0aGF0IHNwZWNpZnkgc29tZQotICAgICAgICAgICBvdGhlciBidWlsdC1pbiB0eXBlIGFzIHRoZSBkZWZhdWx0IGFyZSBjb25zaWRlcmVkCi0gICAgICAgICAgIG5ldy1zdHlsZS1hd2FyZSBzbyB0aGV5IGFsc28gaW5oZXJpdCBvYmplY3QuX19uZXdfXy4gKi8KKyAgICAgICAgICAgb3RoZXIgYnVpbHQtaW4gdHlwZSBhcyB0aGUgZGVmYXVsdCBhbHNvCisgICAgICAgICAgIGluaGVyaXQgb2JqZWN0Ll9fbmV3X18uICovCiAgICAgICAgIGlmIChiYXNlICE9ICZQeUJhc2VPYmplY3RfVHlwZSB8fAogICAgICAgICAgICAgKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKICAgICAgICAgICAgIGlmICh0eXBlLT50cF9uZXcgPT0gTlVMTCkKQEAgLTM2NzgsMjMgKzM5MzksMTcgQEAKICAgICAgICAgdHlwZS0+dHBfZmxhZ3MgfD0gUHlfVFBGTEFHU19ESUNUX1NVQkNMQVNTOwogfQogCi1zdGF0aWMgY2hhciAqaGFzaF9uYW1lX29wW10gPSB7Ci0gICAgIl9fZXFfXyIsCi0gICAgIl9faGFzaF9fIiwKLSAgICBOVUxMCi19OwotCiBzdGF0aWMgaW50CiBvdmVycmlkZXNfaGFzaChQeVR5cGVPYmplY3QgKnR5cGUpCiB7Ci0gICAgY2hhciAqKnA7CiAgICAgUHlPYmplY3QgKmRpY3QgPSB0eXBlLT50cF9kaWN0OworICAgIF9QeV9JREVOVElGSUVSKF9fZXFfXyk7CiAKICAgICBhc3NlcnQoZGljdCAhPSBOVUxMKTsKLSAgICBmb3IgKHAgPSBoYXNoX25hbWVfb3A7ICpwOyBwKyspIHsKLSAgICAgICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKGRpY3QsICpwKSAhPSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQorICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX2VxX18pICE9IE5VTEwpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX2hhc2hfXykgIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTM5ODAsMTYgKzQyMzUsMTYgQEAKICAgICAvKiBpZiB0aGUgdHlwZSBkaWN0aW9uYXJ5IGRvZXNuJ3QgY29udGFpbiBhIF9fZG9jX18sIHNldCBpdCBmcm9tCiAgICAgICAgdGhlIHRwX2RvYyBzbG90LgogICAgICAqLwotICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19kb2NfXyIpID09IE5VTEwpIHsKKyAgICBpZiAoX1B5RGljdF9HZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19kb2NfXykgPT0gTlVMTCkgewogICAgICAgICBpZiAodHlwZS0+dHBfZG9jICE9IE5VTEwpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpkb2MgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyh0eXBlLT50cF9kb2MpOwogICAgICAgICAgICAgaWYgKGRvYyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19kb2NfXyIsIGRvYyk7CisgICAgICAgICAgICBfUHlEaWN0X1NldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX2RvY19fLCBkb2MpOwogICAgICAgICAgICAgUHlfREVDUkVGKGRvYyk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fZG9jX18iLCBQeV9Ob25lKTsKKyAgICAgICAgICAgIF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fX2RvY19fLCBQeV9Ob25lKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDAwMCw4ICs0MjU1LDggQEAKICAgICAgICBUaGlzIHNpZ25hbHMgdGhhdCBfX2hhc2hfXyBpcyBub3QgaW5oZXJpdGVkLgogICAgICAqLwogICAgIGlmICh0eXBlLT50cF9oYXNoID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKHR5cGUtPnRwX2RpY3QsICJfX2hhc2hfXyIpID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19oYXNoX18iLCBQeV9Ob25lKSA8IDApCisgICAgICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX2hhc2hfXykgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19faGFzaF9fLCBQeV9Ob25lKSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIHR5cGUtPnRwX2hhc2ggPSBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQ7CiAgICAgICAgIH0KQEAgLTQ1OTgsNyArNDg1Myw3IEBACiAgICAgICAgb2JqZWN0Ll9fbmV3X18oZGljdCkuICBUbyBkbyB0aGlzLCB3ZSBjaGVjayB0aGF0IHRoZQogICAgICAgIG1vc3QgZGVyaXZlZCBiYXNlIHRoYXQncyBub3QgYSBoZWFwIHR5cGUgaXMgdGhpcyB0eXBlLiAqLwogICAgIHN0YXRpY2Jhc2UgPSBzdWJ0eXBlOwotICAgIHdoaWxlIChzdGF0aWNiYXNlICYmIChzdGF0aWNiYXNlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpKQorICAgIHdoaWxlIChzdGF0aWNiYXNlICYmIChzdGF0aWNiYXNlLT50cF9uZXcgPT0gc2xvdF90cF9uZXcpKQogICAgICAgICBzdGF0aWNiYXNlID0gc3RhdGljYmFzZS0+dHBfYmFzZTsKICAgICAvKiBJZiBzdGF0aWNiYXNlIGlzIE5VTEwgbm93LCBpdCBpcyBhIHJlYWxseSB3ZWlyZCB0eXBlLgogICAgICAgIEluIHRoZSBzcGlyaXQgb2YgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgKD8pLCBqdXN0IHNodXQgdXAuICovCkBAIC00NjMxLDEyICs0ODg2LDEyIEBACiB7CiAgICAgUHlPYmplY3QgKmZ1bmM7CiAKLSAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcodHlwZS0+dHBfZGljdCwgIl9fbmV3X18iKSAhPSBOVUxMKQorICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX25ld19fKSAhPSBOVUxMKQogICAgICAgICByZXR1cm4gMDsKICAgICBmdW5jID0gUHlDRnVuY3Rpb25fTmV3KHRwX25ld19tZXRob2RkZWYsIChQeU9iamVjdCAqKXR5cGUpOwogICAgIGlmIChmdW5jID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcodHlwZS0+dHBfZGljdCwgIl9fbmV3X18iLCBmdW5jKSkgeworICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX25ld19fLCBmdW5jKSkgewogICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC00NjUxLDM0ICs0OTA2LDM0IEBACiBzdGF0aWMgUHlPYmplY3QgKiBcCiBGVU5DTkFNRShQeU9iamVjdCAqc2VsZikgXAogeyBcCi0gICAgc3RhdGljIFB5T2JqZWN0ICpjYWNoZV9zdHI7IFwKLSAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgT1BTVFIsICZjYWNoZV9zdHIsICIoKSIpOyBcCisgICAgX1B5X3N0YXRpY19zdHJpbmcoaWQsIE9QU1RSKTsgXAorICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmaWQsICIoKSIpOyBcCiB9CiAKICNkZWZpbmUgU0xPVDEoRlVOQ05BTUUsIE9QU1RSLCBBUkcxVFlQRSwgQVJHQ09ERVMpIFwKIHN0YXRpYyBQeU9iamVjdCAqIFwKIEZVTkNOQU1FKFB5T2JqZWN0ICpzZWxmLCBBUkcxVFlQRSBhcmcxKSBcCiB7IFwKLSAgICBzdGF0aWMgUHlPYmplY3QgKmNhY2hlX3N0cjsgXAotICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCBPUFNUUiwgJmNhY2hlX3N0ciwgIigiIEFSR0NPREVTICIpIiwgYXJnMSk7IFwKKyAgICBfUHlfc3RhdGljX3N0cmluZyhpZCwgT1BTVFIpOyBcCisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZpZCwgIigiIEFSR0NPREVTICIpIiwgYXJnMSk7IFwKIH0KIAogLyogQm9vbGVhbiBoZWxwZXIgZm9yIFNMT1QxQklORlVMTCgpLgogICAgcmlnaHQuX19jbGFzc19fIGlzIGEgbm9udHJpdmlhbCBzdWJjbGFzcyBvZiBsZWZ0Ll9fY2xhc3NfXy4gKi8KIHN0YXRpYyBpbnQKLW1ldGhvZF9pc19vdmVybG9hZGVkKFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQsIGNoYXIgKm5hbWUpCittZXRob2RfaXNfb3ZlcmxvYWRlZChQeU9iamVjdCAqbGVmdCwgUHlPYmplY3QgKnJpZ2h0LCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm5hbWUpCiB7CiAgICAgUHlPYmplY3QgKmEsICpiOwogICAgIGludCBvazsKIAotICAgIGIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKShQeV9UWVBFKHJpZ2h0KSksIG5hbWUpOworICAgIGIgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKShQeV9UWVBFKHJpZ2h0KSksIG5hbWUpOwogICAgIGlmIChiID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgLyogSWYgcmlnaHQgZG9lc24ndCBoYXZlIGl0LCBpdCdzIG5vdCBvdmVybG9hZGVkICovCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGEgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKShQeV9UWVBFKGxlZnQpKSwgbmFtZSk7CisgICAgYSA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopKFB5X1RZUEUobGVmdCkpLCBuYW1lKTsKICAgICBpZiAoYSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIFB5X0RFQ1JFRihiKTsKQEAgLTQ3MDIsNyArNDk1Nyw4IEBACiBzdGF0aWMgUHlPYmplY3QgKiBcCiBGVU5DTkFNRShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm90aGVyKSBcCiB7IFwKLSAgICBzdGF0aWMgUHlPYmplY3QgKmNhY2hlX3N0ciwgKnJjYWNoZV9zdHI7IFwKKyAgICBfUHlfc3RhdGljX3N0cmluZyhvcF9pZCwgT1BTVFIpOyBcCisgICAgX1B5X3N0YXRpY19zdHJpbmcocm9wX2lkLCBST1BTVFIpOyBcCiAgICAgaW50IGRvX290aGVyID0gUHlfVFlQRShzZWxmKSAhPSBQeV9UWVBFKG90aGVyKSAmJiBcCiAgICAgICAgIFB5X1RZUEUob3RoZXIpLT50cF9hc19udW1iZXIgIT0gTlVMTCAmJiBcCiAgICAgICAgIFB5X1RZUEUob3RoZXIpLT50cF9hc19udW1iZXItPlNMT1ROQU1FID09IFRFU1RGVU5DOyBcCkBAIC00NzExLDI3ICs0OTY3LDIzIEBACiAgICAgICAgIFB5T2JqZWN0ICpyOyBcCiAgICAgICAgIGlmIChkb19vdGhlciAmJiBcCiAgICAgICAgICAgICBQeVR5cGVfSXNTdWJ0eXBlKFB5X1RZUEUob3RoZXIpLCBQeV9UWVBFKHNlbGYpKSAmJiBcCi0gICAgICAgICAgICBtZXRob2RfaXNfb3ZlcmxvYWRlZChzZWxmLCBvdGhlciwgUk9QU1RSKSkgeyBcCi0gICAgICAgICAgICByID0gY2FsbF9tYXliZSggXAotICAgICAgICAgICAgICAgIG90aGVyLCBST1BTVFIsICZyY2FjaGVfc3RyLCAiKE8pIiwgc2VsZik7IFwKKyAgICAgICAgICAgIG1ldGhvZF9pc19vdmVybG9hZGVkKHNlbGYsIG90aGVyLCAmcm9wX2lkKSkgeyBcCisgICAgICAgICAgICByID0gY2FsbF9tYXliZShvdGhlciwgJnJvcF9pZCwgIihPKSIsIHNlbGYpOyBcCiAgICAgICAgICAgICBpZiAociAhPSBQeV9Ob3RJbXBsZW1lbnRlZCkgXAogICAgICAgICAgICAgICAgIHJldHVybiByOyBcCiAgICAgICAgICAgICBQeV9ERUNSRUYocik7IFwKICAgICAgICAgICAgIGRvX290aGVyID0gMDsgXAogICAgICAgICB9IFwKLSAgICAgICAgciA9IGNhbGxfbWF5YmUoIFwKLSAgICAgICAgICAgIHNlbGYsIE9QU1RSLCAmY2FjaGVfc3RyLCAiKE8pIiwgb3RoZXIpOyBcCisgICAgICAgIHIgPSBjYWxsX21heWJlKHNlbGYsICZvcF9pZCwgIihPKSIsIG90aGVyKTsgXAogICAgICAgICBpZiAociAhPSBQeV9Ob3RJbXBsZW1lbnRlZCB8fCBcCiAgICAgICAgICAgICBQeV9UWVBFKG90aGVyKSA9PSBQeV9UWVBFKHNlbGYpKSBcCiAgICAgICAgICAgICByZXR1cm4gcjsgXAogICAgICAgICBQeV9ERUNSRUYocik7IFwKICAgICB9IFwKICAgICBpZiAoZG9fb3RoZXIpIHsgXAotICAgICAgICByZXR1cm4gY2FsbF9tYXliZSggXAotICAgICAgICAgICAgb3RoZXIsIFJPUFNUUiwgJnJjYWNoZV9zdHIsICIoTykiLCBzZWxmKTsgXAorICAgICAgICByZXR1cm4gY2FsbF9tYXliZShvdGhlciwgJnJvcF9pZCwgIihPKSIsIHNlbGYpOyBcCiAgICAgfSBcCi0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsgXAotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsgXAorICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsgXAogfQogCiAjZGVmaW5lIFNMT1QxQklOKEZVTkNOQU1FLCBTTE9UTkFNRSwgT1BTVFIsIFJPUFNUUikgXApAQCAtNDc0MSwxNiArNDk5MywxNSBAQAogc3RhdGljIFB5T2JqZWN0ICogXAogRlVOQ05BTUUoUHlPYmplY3QgKnNlbGYsIEFSRzFUWVBFIGFyZzEsIEFSRzJUWVBFIGFyZzIpIFwKIHsgXAotICAgIHN0YXRpYyBQeU9iamVjdCAqY2FjaGVfc3RyOyBcCi0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsIE9QU1RSLCAmY2FjaGVfc3RyLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICIoIiBBUkdDT0RFUyAiKSIsIGFyZzEsIGFyZzIpOyBcCisgICAgX1B5X3N0YXRpY19zdHJpbmcoaWQsICNPUFNUUik7IFwKKyAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJmlkLCAiKCIgQVJHQ09ERVMgIikiLCBhcmcxLCBhcmcyKTsgXAogfQogCiBzdGF0aWMgUHlfc3NpemVfdAogc2xvdF9zcV9sZW5ndGgoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpsZW5fc3RyOwotICAgIFB5T2JqZWN0ICpyZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19sZW5fXyIsICZsZW5fc3RyLCAiKCkiKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2xlbl9fKTsKKyAgICBQeU9iamVjdCAqcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19sZW5fXywgIigpIik7CiAgICAgUHlfc3NpemVfdCBsZW47CiAKICAgICBpZiAocmVzID09IE5VTEwpCkBAIC00NzcxLDE2ICs1MDIyLDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2xvdF9zcV9pdGVtKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGkpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpnZXRpdGVtX3N0cjsKICAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3MgPSBOVUxMLCAqaXZhbCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOwogICAgIGRlc2NyZ2V0ZnVuYyBmOwogCi0gICAgaWYgKGdldGl0ZW1fc3RyID09IE5VTEwpIHsKLSAgICAgICAgZ2V0aXRlbV9zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19nZXRpdGVtX18iKTsKLSAgICAgICAgaWYgKGdldGl0ZW1fc3RyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZnVuYyA9IF9QeVR5cGVfTG9va3VwKFB5X1RZUEUoc2VsZiksIGdldGl0ZW1fc3RyKTsKKyAgICBmdW5jID0gX1B5VHlwZV9Mb29rdXBJZChQeV9UWVBFKHNlbGYpLCAmUHlJZF9fX2dldGl0ZW1fXyk7CiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewogICAgICAgICBpZiAoKGYgPSBQeV9UWVBFKGZ1bmMpLT50cF9kZXNjcl9nZXQpID09IE5VTEwpCiAgICAgICAgICAgICBQeV9JTkNSRUYoZnVuYyk7CkBAIC00ODAzLDYgKzUwNDgsNyBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqZ2V0aXRlbV9zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX2dldGl0ZW1fXyk7CiAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgZ2V0aXRlbV9zdHIpOwogICAgIH0KICAgICBQeV9YREVDUkVGKGFyZ3MpOwpAQCAtNDgxNSwxNCArNTA2MSwxMyBAQAogc2xvdF9zcV9hc3NfaXRlbShQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCwgUHlPYmplY3QgKnZhbHVlKQogewogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpkZWxpdGVtX3N0ciwgKnNldGl0ZW1fc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fZGVsaXRlbV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX3NldGl0ZW1fXyk7CiAKICAgICBpZiAodmFsdWUgPT0gTlVMTCkKLSAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgIl9fZGVsaXRlbV9fIiwgJmRlbGl0ZW1fc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKG4pIiwgaW5kZXgpOworICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2RlbGl0ZW1fXywgIihuKSIsIGluZGV4KTsKICAgICBlbHNlCi0gICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICJfX3NldGl0ZW1fXyIsICZzZXRpdGVtX3N0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIihuTykiLCBpbmRleCwgdmFsdWUpOworICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX3NldGl0ZW1fXywgIihuTykiLCBpbmRleCwgdmFsdWUpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtNDgzNCwxMCArNTA3OSw5IEBACiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICpyZXMsICphcmdzOwogICAgIGludCByZXN1bHQgPSAtMTsKKyAgICBfUHlfSURFTlRJRklFUihfX2NvbnRhaW5zX18pOwogCi0gICAgc3RhdGljIFB5T2JqZWN0ICpjb250YWluc19zdHI7Ci0KLSAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICJfX2NvbnRhaW5zX18iLCAmY29udGFpbnNfc3RyKTsKKyAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fY29udGFpbnNfXyk7CiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewogICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIHZhbHVlKTsKICAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKQEAgLTQ4NjgsMTQgKzUxMTIsMTQgQEAKIHNsb3RfbXBfYXNzX3N1YnNjcmlwdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQogewogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpkZWxpdGVtX3N0ciwgKnNldGl0ZW1fc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fZGVsaXRlbV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX3NldGl0ZW1fXyk7CiAKICAgICBpZiAodmFsdWUgPT0gTlVMTCkKLSAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgIl9fZGVsaXRlbV9fIiwgJmRlbGl0ZW1fc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKE8pIiwga2V5KTsKKyAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19kZWxpdGVtX18sICIoTykiLCBrZXkpOwogICAgIGVsc2UKLSAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgIl9fc2V0aXRlbV9fIiwgJnNldGl0ZW1fc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICIoT08pIiwga2V5LCB2YWx1ZSk7CisgICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fc2V0aXRlbV9fLCAiKE9PKSIsIGtleSwgdmFsdWUpOworCiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC00ODk2LDcgKzUxNDAsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfbmJfcG93ZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgUHlPYmplY3QgKm1vZHVsdXMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpwb3dfc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fcG93X18pOwogCiAgICAgaWYgKG1vZHVsdXMgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHNsb3RfbmJfcG93ZXJfYmluYXJ5KHNlbGYsIG90aGVyKTsKQEAgLTQ5MDUsMTEgKzUxNDksOSBAQAogICAgICAgIHNsb3RfbmJfcG93ZXIsIHNvIGNoZWNrIGJlZm9yZSBjYWxsaW5nIHNlbGYuX19wb3dfXy4gKi8KICAgICBpZiAoUHlfVFlQRShzZWxmKS0+dHBfYXNfbnVtYmVyICE9IE5VTEwgJiYKICAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfYXNfbnVtYmVyLT5uYl9wb3dlciA9PSBzbG90X25iX3Bvd2VyKSB7Ci0gICAgICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAiX19wb3dfXyIsICZwb3dfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIihPTykiLCBvdGhlciwgbW9kdWx1cyk7CisgICAgICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX3Bvd19fLCAiKE9PKSIsIG90aGVyLCBtb2R1bHVzKTsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiBTTE9UMChzbG90X25iX25lZ2F0aXZlLCAiX19uZWdfXyIpCkBAIC00OTIwLDE1ICs1MTYyLDE2IEBACiBzbG90X25iX2Jvb2woUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICphcmdzOwotICAgIHN0YXRpYyBQeU9iamVjdCAqYm9vbF9zdHIsICpsZW5fc3RyOwogICAgIGludCByZXN1bHQgPSAtMTsKICAgICBpbnQgdXNpbmdfbGVuID0gMDsKKyAgICBfUHlfSURFTlRJRklFUihfX2xlbl9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2Jvb2xfXyk7CiAKLSAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICJfX2Jvb2xfXyIsICZib29sX3N0cik7CisgICAgZnVuYyA9IGxvb2t1cF9tYXliZShzZWxmLCAmUHlJZF9fX2Jvb2xfXyk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgZnVuYyA9IGxvb2t1cF9tYXliZShzZWxmLCAiX19sZW5fXyIsICZsZW5fc3RyKTsKKyAgICAgICAgZnVuYyA9IGxvb2t1cF9tYXliZShzZWxmLCAmUHlJZF9fX2xlbl9fKTsKICAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBQeUVycl9PY2N1cnJlZCgpID8gLTEgOiAxOwogICAgICAgICB1c2luZ19sZW4gPSAxOwpAQCAtNDk2Myw4ICs1MjA2LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X25iX2luZGV4KFB5T2JqZWN0ICpzZWxmKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqaW5kZXhfc3RyOwotICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAiX19pbmRleF9fIiwgJmluZGV4X3N0ciwgIigpIik7CisgICAgX1B5X0lERU5USUZJRVIoX19pbmRleF9fKTsKKyAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19pbmRleF9fLCAiKCkiKTsKIH0KIAogCkBAIC00OTg1LDggKzUyMjgsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfbmJfaW5wbGFjZV9wb3dlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiBhcmcxLCBQeU9iamVjdCAqYXJnMikKIHsKLSAgc3RhdGljIFB5T2JqZWN0ICpjYWNoZV9zdHI7Ci0gIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAiX19pcG93X18iLCAmY2FjaGVfc3RyLCAiKCIgIk8iICIpIiwgYXJnMSk7CisgICAgX1B5X0lERU5USUZJRVIoX19pcG93X18pOworICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2lwb3dfXywgIigiICJPIiAiKSIsIGFyZzEpOwogfQogU0xPVDEoc2xvdF9uYl9pbnBsYWNlX2xzaGlmdCwgIl9faWxzaGlmdF9fIiwgUHlPYmplY3QgKiwgIk8iKQogU0xPVDEoc2xvdF9uYl9pbnBsYWNlX3JzaGlmdCwgIl9faXJzaGlmdF9fIiwgUHlPYmplY3QgKiwgIk8iKQpAQCAtNTAwMyw5ICs1MjQ2LDkgQEAKIHNsb3RfdHBfcmVwcihQeU9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKnJlcHJfc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fcmVwcl9fKTsKIAotICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICJfX3JlcHJfXyIsICZyZXByX3N0cik7CisgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19yZXByX18pOwogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKICAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZnVuYywgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKQEAgLTUwMjAsMjMgKzUyNjMsMzAgQEAKIHNsb3RfdHBfc3RyKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzOwotICAgIHN0YXRpYyBQeU9iamVjdCAqc3RyX3N0cjsKKyAgICBfUHlfSURFTlRJRklFUihfX3N0cl9fKTsKIAotICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICJfX3N0cl9fIiwgJnN0cl9zdHIpOworICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19fc3RyX18pOwogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKICAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZnVuYywgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXNzOworICAgICAgICAvKiBQeU9iamVjdCAqcmVzczsgKi8KICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgcmVzID0gc2xvdF90cF9yZXByKHNlbGYpOwogICAgICAgICBpZiAoIXJlcykKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXNzID0gX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nKHJlcywgTlVMTCk7CisgICAgICAgIC8qIFhYWCB0aGlzIGlzIG5vbi1zZW5zaWNhbC4gV2h5IHNob3VsZCB3ZSByZXR1cm4KKyAgICAgICAgICAgYSBieXRlcyBvYmplY3QgZnJvbSBfX3N0cl9fLiBJcyB0aGlzIGNvZGUgZXZlbgorICAgICAgICAgICB1c2VkPyAtIG12bCAqLworICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIC8qCisgICAgICAgIHJlc3MgPSBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcocmVzKTsKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgIHJldHVybiByZXNzOworICAgICAgICAqLwogICAgIH0KIH0KIApAQCAtNTA0NCwxMCArNTI5NCw5IEBACiBzbG90X3RwX2hhc2goUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpoYXNoX3N0cjsKICAgICBQeV9zc2l6ZV90IGg7CiAKLSAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAiX19oYXNoX18iLCAmaGFzaF9zdHIpOworICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19faGFzaF9fKTsKIAogICAgIGlmIChmdW5jID09IFB5X05vbmUpIHsKICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwpAQCAtNTA5MSw4ICs1MzQwLDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX2NhbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmNhbGxfc3RyOwotICAgIFB5T2JqZWN0ICptZXRoID0gbG9va3VwX21ldGhvZChzZWxmLCAiX19jYWxsX18iLCAmY2FsbF9zdHIpOworICAgIF9QeV9JREVOVElGSUVSKF9fY2FsbF9fKTsKKyAgICBQeU9iamVjdCAqbWV0aCA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19jYWxsX18pOwogICAgIFB5T2JqZWN0ICpyZXM7CiAKICAgICBpZiAobWV0aCA9PSBOVUxMKQpAQCAtNTExOCw5ICs1MzY3LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX2dldGF0dHJvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbmFtZSkKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmdldGF0dHJpYnV0ZV9zdHIgPSBOVUxMOwotICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAiX19nZXRhdHRyaWJ1dGVfXyIsICZnZXRhdHRyaWJ1dGVfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAiKE8pIiwgbmFtZSk7CisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fZ2V0YXR0cmlidXRlX18sICIoTykiLCBuYW1lKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTUxNDYsMjYgKzUzOTMsMTQgQEAKIHsKICAgICBQeVR5cGVPYmplY3QgKnRwID0gUHlfVFlQRShzZWxmKTsKICAgICBQeU9iamVjdCAqZ2V0YXR0ciwgKmdldGF0dHJpYnV0ZSwgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmdldGF0dHJpYnV0ZV9zdHIgPSBOVUxMOwotICAgIHN0YXRpYyBQeU9iamVjdCAqZ2V0YXR0cl9zdHIgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fZ2V0YXR0cl9fKTsKIAotICAgIGlmIChnZXRhdHRyX3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIGdldGF0dHJfc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fZ2V0YXR0cl9fIik7Ci0gICAgICAgIGlmIChnZXRhdHRyX3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChnZXRhdHRyaWJ1dGVfc3RyID09IE5VTEwpIHsKLSAgICAgICAgZ2V0YXR0cmlidXRlX3N0ciA9Ci0gICAgICAgICAgICBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19nZXRhdHRyaWJ1dGVfXyIpOwotICAgICAgICBpZiAoZ2V0YXR0cmlidXRlX3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIC8qIHNwZWVkIGhhY2s6IHdlIGNvdWxkIHVzZSBsb29rdXBfbWF5YmUsIGJ1dCB0aGF0IHdvdWxkIHJlc29sdmUgdGhlCiAgICAgICAgbWV0aG9kIGZ1bGx5IGZvciBlYWNoIGF0dHJpYnV0ZSBsb29rdXAgZm9yIGNsYXNzZXMgd2l0aAogICAgICAgIF9fZ2V0YXR0cl9fLCBldmVuIHdoZW4gdGhlIGF0dHJpYnV0ZSBpcyBwcmVzZW50LiBTbyB3ZSB1c2UKICAgICAgICBfUHlUeXBlX0xvb2t1cCBhbmQgY3JlYXRlIHRoZSBtZXRob2Qgb25seSB3aGVuIG5lZWRlZCwgd2l0aAogICAgICAgIGNhbGxfYXR0cmlidXRlLiAqLwotICAgIGdldGF0dHIgPSBfUHlUeXBlX0xvb2t1cCh0cCwgZ2V0YXR0cl9zdHIpOworICAgIGdldGF0dHIgPSBfUHlUeXBlX0xvb2t1cElkKHRwLCAmUHlJZF9fX2dldGF0dHJfXyk7CiAgICAgaWYgKGdldGF0dHIgPT0gTlVMTCkgewogICAgICAgICAvKiBObyBfX2dldGF0dHJfXyBob29rOiB1c2UgYSBzaW1wbGVyIGRpc3BhdGNoZXIgKi8KICAgICAgICAgdHAtPnRwX2dldGF0dHJvID0gc2xvdF90cF9nZXRhdHRybzsKQEAgLTUxNzcsNyArNTQxMiw3IEBACiAgICAgICAgX19nZXRhdHRyX18sIGV2ZW4gd2hlbiBzZWxmIGhhcyB0aGUgZGVmYXVsdCBfX2dldGF0dHJpYnV0ZV9fCiAgICAgICAgbWV0aG9kLiBTbyB3ZSB1c2UgX1B5VHlwZV9Mb29rdXAgYW5kIGNyZWF0ZSB0aGUgbWV0aG9kIG9ubHkgd2hlbgogICAgICAgIG5lZWRlZCwgd2l0aCBjYWxsX2F0dHJpYnV0ZS4gKi8KLSAgICBnZXRhdHRyaWJ1dGUgPSBfUHlUeXBlX0xvb2t1cCh0cCwgZ2V0YXR0cmlidXRlX3N0cik7CisgICAgZ2V0YXR0cmlidXRlID0gX1B5VHlwZV9Mb29rdXBJZCh0cCwgJlB5SWRfX19nZXRhdHRyaWJ1dGVfXyk7CiAgICAgaWYgKGdldGF0dHJpYnV0ZSA9PSBOVUxMIHx8CiAgICAgICAgIChQeV9UWVBFKGdldGF0dHJpYnV0ZSkgPT0gJlB5V3JhcHBlckRlc2NyX1R5cGUgJiYKICAgICAgICAgICgoUHlXcmFwcGVyRGVzY3JPYmplY3QgKilnZXRhdHRyaWJ1dGUpLT5kX3dyYXBwZWQgPT0KQEAgLTUyMDAsNDAgKzU0MzUsMzcgQEAKIHNsb3RfdHBfc2V0YXR0cm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqdmFsdWUpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmRlbGF0dHJfc3RyLCAqc2V0YXR0cl9zdHI7CisgICAgX1B5X0lERU5USUZJRVIoX19kZWxhdHRyX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fc2V0YXR0cl9fKTsKIAogICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19kZWxhdHRyX18iLCAmZGVsYXR0cl9zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoTykiLCBuYW1lKTsKKyAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19kZWxhdHRyX18sICIoTykiLCBuYW1lKTsKICAgICBlbHNlCi0gICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICJfX3NldGF0dHJfXyIsICZzZXRhdHRyX3N0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIihPTykiLCBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fc2V0YXR0cl9fLCAiKE9PKSIsIG5hbWUsIHZhbHVlKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBQeV9ERUNSRUYocmVzKTsKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGNoYXIgKm5hbWVfb3BbXSA9IHsKLSAgICAiX19sdF9fIiwKLSAgICAiX19sZV9fIiwKLSAgICAiX19lcV9fIiwKLSAgICAiX19uZV9fIiwKLSAgICAiX19ndF9fIiwKLSAgICAiX19nZV9fIiwKK3N0YXRpYyBfUHlfSWRlbnRpZmllciBuYW1lX29wW10gPSB7CisgICAgezAsICJfX2x0X18iLCAwfSwKKyAgICB7MCwgIl9fbGVfXyIsIDB9LAorICAgIHswLCAiX19lcV9fIiwgMH0sCisgICAgezAsICJfX25lX18iLCAwfSwKKyAgICB7MCwgIl9fZ3RfXyIsIDB9LAorICAgIHswLCAiX19nZV9fIiwgMH0KIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX3JpY2hjb21wYXJlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKIHsKICAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3MsICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpvcF9zdHJbNl07CiAKLSAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCBuYW1lX29wW29wXSwgJm9wX3N0cltvcF0pOworICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZuYW1lX29wW29wXSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCBvdGhlcik7CiAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKQEAgLTUyNTAsOSArNTQ4Miw5IEBACiBzbG90X3RwX2l0ZXIoUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICppdGVyX3N0ciwgKmdldGl0ZW1fc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9faXRlcl9fKTsKIAotICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICJfX2l0ZXJfXyIsICZpdGVyX3N0cik7CisgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19pdGVyX18pOwogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKmFyZ3M7CiAgICAgICAgIGFyZ3MgPSByZXMgPSBQeVR1cGxlX05ldygwKTsKQEAgLTUyNjQsNyArNTQ5Niw3IEBACiAgICAgICAgIHJldHVybiByZXM7CiAgICAgfQogICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgIl9fZ2V0aXRlbV9fIiwgJmdldGl0ZW1fc3RyKTsKKyAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2dldGl0ZW1fXyk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgaXRlcmFibGUiLApAQCAtNTI3OCw4ICs1NTEwLDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX2l0ZXJuZXh0KFB5T2JqZWN0ICpzZWxmKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqbmV4dF9zdHI7Ci0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICJfX25leHRfXyIsICZuZXh0X3N0ciwgIigpIik7CisgICAgX1B5X0lERU5USUZJRVIoX19uZXh0X18pOworICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX25leHRfXywgIigpIik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC01Mjg3LDE0ICs1NTE5LDkgQEAKIHsKICAgICBQeVR5cGVPYmplY3QgKnRwID0gUHlfVFlQRShzZWxmKTsKICAgICBQeU9iamVjdCAqZ2V0OwotICAgIHN0YXRpYyBQeU9iamVjdCAqZ2V0X3N0ciA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX19nZXRfXyk7CiAKLSAgICBpZiAoZ2V0X3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIGdldF9zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19nZXRfXyIpOwotICAgICAgICBpZiAoZ2V0X3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGdldCA9IF9QeVR5cGVfTG9va3VwKHRwLCBnZXRfc3RyKTsKKyAgICBnZXQgPSBfUHlUeXBlX0xvb2t1cElkKHRwLCAmUHlJZF9fX2dldF9fKTsKICAgICBpZiAoZ2V0ID09IE5VTEwpIHsKICAgICAgICAgLyogQXZvaWQgZnVydGhlciBzbG93ZG93bnMgKi8KICAgICAgICAgaWYgKHRwLT50cF9kZXNjcl9nZXQgPT0gc2xvdF90cF9kZXNjcl9nZXQpCkBAIC01MzEzLDE0ICs1NTQwLDEzIEBACiBzbG90X3RwX2Rlc2NyX3NldChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhcmdldCwgUHlPYmplY3QgKnZhbHVlKQogewogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpkZWxfc3RyLCAqc2V0X3N0cjsKKyAgICBfUHlfSURFTlRJRklFUihfX2RlbGV0ZV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX3NldF9fKTsKIAogICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19kZWxldGVfXyIsICZkZWxfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKE8pIiwgdGFyZ2V0KTsKKyAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19kZWxldGVfXywgIihPKSIsIHRhcmdldCk7CiAgICAgZWxzZQotICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19zZXRfXyIsICZzZXRfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKE9PKSIsIHRhcmdldCwgdmFsdWUpOworICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX3NldF9fLCAiKE9PKSIsIHRhcmdldCwgdmFsdWUpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtNTMzMCw4ICs1NTU2LDggQEAKIHN0YXRpYyBpbnQKIHNsb3RfdHBfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqaW5pdF9zdHI7Ci0gICAgUHlPYmplY3QgKm1ldGggPSBsb29rdXBfbWV0aG9kKHNlbGYsICJfX2luaXRfXyIsICZpbml0X3N0cik7CisgICAgX1B5X0lERU5USUZJRVIoX19pbml0X18pOworICAgIFB5T2JqZWN0ICptZXRoID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2luaXRfXyk7CiAgICAgUHlPYmplY3QgKnJlczsKIAogICAgIGlmIChtZXRoID09IE5VTEwpCkBAIC01MzU0LDE3ICs1NTgwLDEyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2xvdF90cF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpuZXdfc3RyOwogICAgIFB5T2JqZWN0ICpmdW5jOwogICAgIFB5T2JqZWN0ICpuZXdhcmdzLCAqeDsKICAgICBQeV9zc2l6ZV90IGksIG47CisgICAgX1B5X0lERU5USUZJRVIoX19uZXdfXyk7CiAKLSAgICBpZiAobmV3X3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIG5ld19zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19uZXdfXyIpOwotICAgICAgICBpZiAobmV3X3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyKChQeU9iamVjdCAqKXR5cGUsIG5ld19zdHIpOworICAgIGZ1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKXR5cGUsICZQeUlkX19fbmV3X18pOwogICAgIGlmIChmdW5jID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKQEAgLTUzODgsNyArNTYwOSw3IEBACiBzdGF0aWMgdm9pZAogc2xvdF90cF9kZWwoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpkZWxfc3RyID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2RlbF9fKTsKICAgICBQeU9iamVjdCAqZGVsLCAqcmVzOwogICAgIFB5T2JqZWN0ICplcnJvcl90eXBlLCAqZXJyb3JfdmFsdWUsICplcnJvcl90cmFjZWJhY2s7CiAKQEAgLTU0MDAsNyArNTYyMSw3IEBACiAgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7CiAKICAgICAvKiBFeGVjdXRlIF9fZGVsX18gbWV0aG9kLCBpZiBhbnkuICovCi0gICAgZGVsID0gbG9va3VwX21heWJlKHNlbGYsICJfX2RlbF9fIiwgJmRlbF9zdHIpOworICAgIGRlbCA9IGxvb2t1cF9tYXliZShzZWxmLCAmUHlJZF9fX2RlbF9fKTsKICAgICBpZiAoZGVsICE9IE5VTEwpIHsKICAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZGVsLCBOVUxMKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQpAQCAtNjExNSw3ICs2MzM2LDcgQEAKICAgICAgICAgLyogV2Ugd2FudCBfX2NsYXNzX18gdG8gcmV0dXJuIHRoZSBjbGFzcyBvZiB0aGUgc3VwZXIgb2JqZWN0CiAgICAgICAgICAgIChpLmUuIHN1cGVyLCBvciBhIHN1YmNsYXNzKSwgbm90IHRoZSBjbGFzcyBvZiBzdS0+b2JqLiAqLwogICAgICAgICBza2lwID0gKFB5VW5pY29kZV9DaGVjayhuYW1lKSAmJgotICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKG5hbWUpID09IDkgJiYKKyAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID09IDkgJiYKICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICJfX2NsYXNzX18iKSA9PSAwKTsKICAgICB9CiAKQEAgLTYxNDAsNiArNjM2MSw5IEBACiAgICAgICAgIH0KICAgICAgICAgaSsrOwogICAgICAgICByZXMgPSBOVUxMOworICAgICAgICAvKiBrZWVwIGEgc3Ryb25nIHJlZmVyZW5jZSB0byBtcm8gYmVjYXVzZSBzdGFydHR5cGUtPnRwX21ybyBjYW4gYmUKKyAgICAgICAgICAgcmVwbGFjZWQgZHVyaW5nIFB5RGljdF9HZXRJdGVtKGRpY3QsIG5hbWUpICAqLworICAgICAgICBQeV9JTkNSRUYobXJvKTsKICAgICAgICAgZm9yICg7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgIHRtcCA9IFB5VHVwbGVfR0VUX0lURU0obXJvLCBpKTsKICAgICAgICAgICAgIGlmIChQeVR5cGVfQ2hlY2sodG1wKSkKQEAgLTYxNjQsOSArNjM4OCwxMSBAQAogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgICAgICAgICAgICAgcmVzID0gdG1wOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobXJvKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihtcm8pOwogICAgIH0KICAgICByZXR1cm4gUHlPYmplY3RfR2VuZXJpY0dldEF0dHIoc2VsZiwgbmFtZSk7CiB9CkBAIC02MTc2LDcgKzY0MDIsNyBAQAogewogICAgIC8qIENoZWNrIHRoYXQgYSBzdXBlcigpIGNhbGwgbWFrZXMgc2Vuc2UuICBSZXR1cm4gYSB0eXBlIG9iamVjdC4KIAotICAgICAgIG9iaiBjYW4gYmUgYSBuZXctc3R5bGUgY2xhc3MsIG9yIGFuIGluc3RhbmNlIG9mIG9uZToKKyAgICAgICBvYmogY2FuIGJlIGEgY2xhc3MsIG9yIGFuIGluc3RhbmNlIG9mIG9uZToKIAogICAgICAgIC0gSWYgaXQgaXMgYSBjbGFzcywgaXQgbXVzdCBiZSBhIHN1YmNsYXNzIG9mICd0eXBlJy4gICAgICBUaGlzIGNhc2UgaXMKICAgICAgICAgIHVzZWQgZm9yIGNsYXNzIG1ldGhvZHM7IHRoZSByZXR1cm4gdmFsdWUgaXMgb2JqLgpAQCAtNjIwMiwxNyArNjQyOCw5IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBUcnkgdGhlIHNsb3cgd2F5ICovCi0gICAgICAgIHN0YXRpYyBQeU9iamVjdCAqY2xhc3Nfc3RyID0gTlVMTDsKICAgICAgICAgUHlPYmplY3QgKmNsYXNzX2F0dHI7CiAKLSAgICAgICAgaWYgKGNsYXNzX3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBjbGFzc19zdHIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiX19jbGFzc19fIik7Ci0gICAgICAgICAgICBpZiAoY2xhc3Nfc3RyID09IE5VTEwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLQotICAgICAgICBjbGFzc19hdHRyID0gUHlPYmplY3RfR2V0QXR0cihvYmosIGNsYXNzX3N0cik7Ci0KKyAgICAgICAgY2xhc3NfYXR0ciA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9fX2NsYXNzX18pOwogICAgICAgICBpZiAoY2xhc3NfYXR0ciAhPSBOVUxMICYmCiAgICAgICAgICAgICBQeVR5cGVfQ2hlY2soY2xhc3NfYXR0cikgJiYKICAgICAgICAgICAgIChQeVR5cGVPYmplY3QgKiljbGFzc19hdHRyICE9IFB5X1RZUEUob2JqKSkKQEAgLTYyODksMTggKzY1MDcsMTggQEAKICAgICAgICAgUHlDb2RlT2JqZWN0ICpjbyA9IGYtPmZfY29kZTsKICAgICAgICAgUHlfc3NpemVfdCBpLCBuOwogICAgICAgICBpZiAoY28gPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3VwZXIoKTogbm8gY29kZSBvYmplY3QiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBpZiAoY28tPmNvX2FyZ2NvdW50ID09IDApIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cGVyKCk6IG5vIGFyZ3VtZW50cyIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIG9iaiA9IGYtPmZfbG9jYWxzcGx1c1swXTsKICAgICAgICAgaWYgKG9iaiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBlcigpOiBhcmdbMF0gZGVsZXRlZCIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC02MzE5LDE4ICs2NTM3LDE4IEBACiAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2NlbGx2YXJzKSArIGk7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNlbGwgPSBmLT5mX2xvY2Fsc3BsdXNbaW5kZXhdOwogICAgICAgICAgICAgICAgIGlmIChjZWxsID09IE5VTEwgfHwgIVB5Q2VsbF9DaGVjayhjZWxsKSkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgInN1cGVyKCk6IGJhZCBfX2NsYXNzX18gY2VsbCIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHR5cGUgPSAoUHlUeXBlT2JqZWN0ICopIFB5Q2VsbF9HRVQoY2VsbCk7CiAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgInN1cGVyKCk6IGVtcHR5IF9fY2xhc3NfXyBjZWxsIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFQeVR5cGVfQ2hlY2sodHlwZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICJzdXBlcigpOiBfX2NsYXNzX18gaXMgbm90IGEgdHlwZSAoJXMpIiwKICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHR5cGUpLT50cF9uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNjMzOSw3ICs2NTU3LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAodHlwZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBlcigpOiBfX2NsYXNzX18gY2VsbCBub3QgZm91bmQiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy90eXBlc2xvdHMuaW5jIGIvT2JqZWN0cy90eXBlc2xvdHMuaW5jCmluZGV4IDUxODZkY2YuLmNhYTFlMDMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdHlwZXNsb3RzLmluYworKysgYi9PYmplY3RzL3R5cGVzbG90cy5pbmMKQEAgLTEsNCArMSw0IEBACi0vKiBHZW5lcmF0ZWQgYnkgdHlwZXNsb3RzLnB5ICRSZXZpc2lvbiQgKi8KKy8qIEdlbmVyYXRlZCBieSB0eXBlc2xvdHMucHkgKi8KIDAsCiAwLAogb2Zmc2V0b2YoUHlIZWFwVHlwZU9iamVjdCwgYXNfbWFwcGluZy5tcF9hc3Nfc3Vic2NyaXB0KSwKZGlmZiAtLWdpdCBhL09iamVjdHMvdHlwZXNsb3RzLnB5IGIvT2JqZWN0cy90eXBlc2xvdHMucHkKaW5kZXggMmUwMGM4MC4uYjI0YzdmNCAxMDA2NDQKLS0tIGEvT2JqZWN0cy90eXBlc2xvdHMucHkKKysrIGIvT2JqZWN0cy90eXBlc2xvdHMucHkKQEAgLTMsNyArMyw3IEBACiAKIGltcG9ydCBzeXMsIHJlCiAKLXByaW50KCIvKiBHZW5lcmF0ZWQgYnkgdHlwZXNsb3RzLnB5ICRSZXZpc2lvbiQgKi8iKQorcHJpbnQoIi8qIEdlbmVyYXRlZCBieSB0eXBlc2xvdHMucHkgKi8iKQogcmVzID0ge30KIGZvciBsaW5lIGluIHN5cy5zdGRpbjoKICAgICBtID0gcmUubWF0Y2goIiNkZWZpbmUgUHlfKFthLXpfXSspIChbMC05XSspIiwgbGluZSkKZGlmZiAtLWdpdCBhL09iamVjdHMvdW5pY29kZWN0eXBlLmMgYi9PYmplY3RzL3VuaWNvZGVjdHlwZS5jCmluZGV4IDlmNmFjODkuLmE1NzJjMTIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdW5pY29kZWN0eXBlLmMKKysrIGIvT2JqZWN0cy91bmljb2RlY3R5cGUuYwpAQCAtMjEsMTMgKzIxLDIwIEBACiAjZGVmaW5lIFhJRF9TVEFSVF9NQVNLIDB4MTAwCiAjZGVmaW5lIFhJRF9DT05USU5VRV9NQVNLIDB4MjAwCiAjZGVmaW5lIFBSSU5UQUJMRV9NQVNLIDB4NDAwCi0jZGVmaW5lIE5PREVMVEFfTUFTSyAweDgwMAotI2RlZmluZSBOVU1FUklDX01BU0sgMHgxMDAwCisjZGVmaW5lIE5VTUVSSUNfTUFTSyAweDgwMAorI2RlZmluZSBDQVNFX0lHTk9SQUJMRV9NQVNLIDB4MTAwMAorI2RlZmluZSBDQVNFRF9NQVNLIDB4MjAwMAorI2RlZmluZSBFWFRFTkRFRF9DQVNFX01BU0sgMHg0MDAwCiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgICBjb25zdCBQeV9VQ1M0IHVwcGVyOwotICAgIGNvbnN0IFB5X1VDUzQgbG93ZXI7Ci0gICAgY29uc3QgUHlfVUNTNCB0aXRsZTsKKyAgICAvKiAKKyAgICAgICBUaGVzZSBhcmUgZWl0aGVyIGRlbHRhcyB0byB0aGUgY2hhcmFjdGVyIG9yIG9mZnNldHMgaW4KKyAgICAgICBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZS4KKyAgICAqLworICAgIGNvbnN0IGludCB1cHBlcjsKKyAgICBjb25zdCBpbnQgbG93ZXI7CisgICAgY29uc3QgaW50IHRpdGxlOworICAgIC8qIE5vdGUgaWYgbW9yZSBmbGFnIHNwYWNlIGlzIG5lZWRlZCwgZGVjaW1hbCBhbmQgZGlnaXQgY291bGQgYmUgdW5pZmllZC4gKi8KICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGRlY2ltYWw7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciBkaWdpdDsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBmbGFnczsKQEAgLTU3LDE1ICs2NCwxMCBAQAogUHlfVUNTNCBfUHlVbmljb2RlX1RvVGl0bGVjYXNlKHJlZ2lzdGVyIFB5X1VDUzQgY2gpCiB7CiAgICAgY29uc3QgX1B5VW5pY29kZV9UeXBlUmVjb3JkICpjdHlwZSA9IGdldHR5cGVyZWNvcmQoY2gpOwotICAgIGludCBkZWx0YSA9IGN0eXBlLT50aXRsZTsKIAotICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBOT0RFTFRBX01BU0spCi0gICAgICAgIHJldHVybiBkZWx0YTsKLQotICAgIGlmIChkZWx0YSA+PSAzMjc2OCkKLSAgICAgICAgICAgIGRlbHRhIC09IDY1NTM2OwotCi0gICAgcmV0dXJuIGNoICsgZGVsdGE7CisgICAgaWYgKGN0eXBlLT5mbGFncyAmIEVYVEVOREVEX0NBU0VfTUFTSykKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlW2N0eXBlLT50aXRsZSAmIDB4RkZGRl07CisgICAgcmV0dXJuIGNoICsgY3R5cGUtPnRpdGxlOwogfQogCiAvKiBSZXR1cm5zIDEgZm9yIFVuaWNvZGUgY2hhcmFjdGVycyBoYXZpbmcgdGhlIGNhdGVnb3J5ICdMdCcsIDAKQEAgLTE4OCwxMiArMTkwLDEwIEBACiBQeV9VQ1M0IF9QeVVuaWNvZGVfVG9VcHBlcmNhc2UoUHlfVUNTNCBjaCkKIHsKICAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7Ci0gICAgaW50IGRlbHRhID0gY3R5cGUtPnVwcGVyOwotICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBOT0RFTFRBX01BU0spCi0gICAgICAgIHJldHVybiBkZWx0YTsKLSAgICBpZiAoZGVsdGEgPj0gMzI3NjgpCi0gICAgICAgICAgICBkZWx0YSAtPSA2NTUzNjsKLSAgICByZXR1cm4gY2ggKyBkZWx0YTsKKworICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBFWFRFTkRFRF9DQVNFX01BU0spCisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZVtjdHlwZS0+dXBwZXIgJiAweEZGRkZdOworICAgIHJldHVybiBjaCArIGN0eXBlLT51cHBlcjsKIH0KIAogLyogUmV0dXJucyB0aGUgbG93ZXJjYXNlIFVuaWNvZGUgY2hhcmFjdGVycyBjb3JyZXNwb25kaW5nIHRvIGNoIG9yIGp1c3QKQEAgLTIwMiwxMiArMjAyLDg3IEBACiBQeV9VQ1M0IF9QeVVuaWNvZGVfVG9Mb3dlcmNhc2UoUHlfVUNTNCBjaCkKIHsKICAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7Ci0gICAgaW50IGRlbHRhID0gY3R5cGUtPmxvd2VyOwotICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBOT0RFTFRBX01BU0spCi0gICAgICAgIHJldHVybiBkZWx0YTsKLSAgICBpZiAoZGVsdGEgPj0gMzI3NjgpCi0gICAgICAgICAgICBkZWx0YSAtPSA2NTUzNjsKLSAgICByZXR1cm4gY2ggKyBkZWx0YTsKKworICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBFWFRFTkRFRF9DQVNFX01BU0spCisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZVtjdHlwZS0+bG93ZXIgJiAweEZGRkZdOworICAgIHJldHVybiBjaCArIGN0eXBlLT5sb3dlcjsKK30KKworaW50IF9QeVVuaWNvZGVfVG9Mb3dlckZ1bGwoUHlfVUNTNCBjaCwgUHlfVUNTNCAqcmVzKQoreworICAgIGNvbnN0IF9QeVVuaWNvZGVfVHlwZVJlY29yZCAqY3R5cGUgPSBnZXR0eXBlcmVjb3JkKGNoKTsKKworICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBFWFRFTkRFRF9DQVNFX01BU0spIHsKKyAgICAgICAgaW50IGluZGV4ID0gY3R5cGUtPmxvd2VyICYgMHhGRkZGOworICAgICAgICBpbnQgbiA9IGN0eXBlLT5sb3dlciA+PiAyNDsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgICAgICByZXNbaV0gPSBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZVtpbmRleCArIGldOworICAgICAgICByZXR1cm4gbjsKKyAgICB9CisgICAgcmVzWzBdID0gY2ggKyBjdHlwZS0+bG93ZXI7CisgICAgcmV0dXJuIDE7Cit9CisKK2ludCBfUHlVbmljb2RlX1RvVGl0bGVGdWxsKFB5X1VDUzQgY2gsIFB5X1VDUzQgKnJlcykKK3sKKyAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7CisKKyAgICBpZiAoY3R5cGUtPmZsYWdzICYgRVhURU5ERURfQ0FTRV9NQVNLKSB7CisgICAgICAgIGludCBpbmRleCA9IGN0eXBlLT50aXRsZSAmIDB4RkZGRjsKKyAgICAgICAgaW50IG4gPSBjdHlwZS0+dGl0bGUgPj4gMjQ7CisgICAgICAgIGludCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQorICAgICAgICAgICAgcmVzW2ldID0gX1B5VW5pY29kZV9FeHRlbmRlZENhc2VbaW5kZXggKyBpXTsKKyAgICAgICAgcmV0dXJuIG47CisgICAgfQorICAgIHJlc1swXSA9IGNoICsgY3R5cGUtPnRpdGxlOworICAgIHJldHVybiAxOworfQorCitpbnQgX1B5VW5pY29kZV9Ub1VwcGVyRnVsbChQeV9VQ1M0IGNoLCBQeV9VQ1M0ICpyZXMpCit7CisgICAgY29uc3QgX1B5VW5pY29kZV9UeXBlUmVjb3JkICpjdHlwZSA9IGdldHR5cGVyZWNvcmQoY2gpOworCisgICAgaWYgKGN0eXBlLT5mbGFncyAmIEVYVEVOREVEX0NBU0VfTUFTSykgeworICAgICAgICBpbnQgaW5kZXggPSBjdHlwZS0+dXBwZXIgJiAweEZGRkY7CisgICAgICAgIGludCBuID0gY3R5cGUtPnVwcGVyID4+IDI0OworICAgICAgICBpbnQgaTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIHJlc1tpXSA9IF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlW2luZGV4ICsgaV07CisgICAgICAgIHJldHVybiBuOworICAgIH0KKyAgICByZXNbMF0gPSBjaCArIGN0eXBlLT51cHBlcjsKKyAgICByZXR1cm4gMTsKK30KKworaW50IF9QeVVuaWNvZGVfVG9Gb2xkZWRGdWxsKFB5X1VDUzQgY2gsIFB5X1VDUzQgKnJlcykKK3sKKyAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7CisKKyAgICBpZiAoY3R5cGUtPmZsYWdzICYgRVhURU5ERURfQ0FTRV9NQVNLICYmIChjdHlwZS0+bG93ZXIgPj4gMjApICYgNykgeworICAgICAgICBpbnQgaW5kZXggPSAoY3R5cGUtPmxvd2VyICYgMHhGRkZGKSArIChjdHlwZS0+bG93ZXIgPj4gMjQpOworICAgICAgICBpbnQgbiA9IChjdHlwZS0+bG93ZXIgPj4gMjApICYgNzsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgICAgICByZXNbaV0gPSBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZVtpbmRleCArIGldOworICAgICAgICByZXR1cm4gbjsKKyAgICB9CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfVG9Mb3dlckZ1bGwoY2gsIHJlcyk7Cit9CisKK2ludCBfUHlVbmljb2RlX0lzQ2FzZWQoUHlfVUNTNCBjaCkKK3sKKyAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7CisKKyAgICByZXR1cm4gKGN0eXBlLT5mbGFncyAmIENBU0VEX01BU0spICE9IDA7Cit9CisKK2ludCBfUHlVbmljb2RlX0lzQ2FzZUlnbm9yYWJsZShQeV9VQ1M0IGNoKQoreworICAgIGNvbnN0IF9QeVVuaWNvZGVfVHlwZVJlY29yZCAqY3R5cGUgPSBnZXR0eXBlcmVjb3JkKGNoKTsKKworICAgIHJldHVybiAoY3R5cGUtPmZsYWdzICYgQ0FTRV9JR05PUkFCTEVfTUFTSykgIT0gMDsKIH0KIAogLyogUmV0dXJucyAxIGZvciBVbmljb2RlIGNoYXJhY3RlcnMgaGF2aW5nIHRoZSBjYXRlZ29yeSAnTGwnLCAnTHUnLCAnTHQnLApkaWZmIC0tZ2l0IGEvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMgYi9PYmplY3RzL3VuaWNvZGVvYmplY3QuYwppbmRleCBjZDRlOWU5Li45ZjI2OWE1IDEwMDY0NAotLS0gYS9PYmplY3RzL3VuaWNvZGVvYmplY3QuYworKysgYi9PYmplY3RzL3VuaWNvZGVvYmplY3QuYwpAQCAtMSw4ICsxLDcgQEAKIC8qCiAKIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gb3JpZ2luYWwgY29kZSBieSBGcmVkcmlrIEx1bmRoLAotbW9kaWZpZWQgYnkgTWFyYy1BbmRyZSBMZW1idXJnIDxtYWxAbGVtYnVyZy5jb20+IGFjY29yZGluZyB0byB0aGUKLVVuaWNvZGUgSW50ZWdyYXRpb24gUHJvcG9zYWwgKHNlZSBmaWxlIE1pc2MvdW5pY29kZS50eHQpLgorbW9kaWZpZWQgYnkgTWFyYy1BbmRyZSBMZW1idXJnIDxtYWxAbGVtYnVyZy5jb20+LgogCiBNYWpvciBzcGVlZCB1cGdyYWRlcyB0byB0aGUgbWV0aG9kIGltcGxlbWVudGF0aW9ucyBhdCB0aGUgUmV5a2phdmlrCiBOZWVkRm9yU3BlZWQgc3ByaW50LCBieSBGcmVkcmlrIEx1bmRoIGFuZCBBbmRyZXcgRGFsa2UuCkBAIC00MiwzNCArNDEsMTIgQEAKICNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInVjbmhhc2guaCIKKyNpbmNsdWRlICJieXRlc19tZXRob2RzLmgiCiAKICNpZmRlZiBNU19XSU5ET1dTCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCiAKLS8qIExpbWl0IGZvciB0aGUgVW5pY29kZSBvYmplY3QgZnJlZSBsaXN0ICovCi0KLSNkZWZpbmUgUHlVbmljb2RlX01BWEZSRUVMSVNUICAgICAgIDEwMjQKLQotLyogTGltaXQgZm9yIHRoZSBVbmljb2RlIG9iamVjdCBmcmVlIGxpc3Qgc3RheSBhbGl2ZSBvcHRpbWl6YXRpb24uCi0KLSAgIFRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIGtlZXAgYWxsb2NhdGVkIFVuaWNvZGUgbWVtb3J5IGludGFjdCBmb3IKLSAgIGFsbCBvYmplY3RzIG9uIHRoZSBmcmVlIGxpc3QgaGF2aW5nIGEgc2l6ZSBsZXNzIHRoYW4gdGhpcwotICAgbGltaXQuIFRoaXMgcmVkdWNlcyBtYWxsb2MoKSBvdmVyaGVhZCBmb3Igc21hbGwgVW5pY29kZSBvYmplY3RzLgotCi0gICBBdCB3b3JzdCB0aGlzIHdpbGwgcmVzdWx0IGluIFB5VW5pY29kZV9NQVhGUkVFTElTVCAqCi0gICAoc2l6ZW9mKFB5VW5pY29kZU9iamVjdCkgKyBLRUVQQUxJVkVfU0laRV9MSU1JVCArCi0gICBtYWxsb2MoKS1vdmVyaGVhZCkgYnl0ZXMgb2YgdW51c2VkIGdhcmJhZ2UuCi0KLSAgIFNldHRpbmcgdGhlIGxpbWl0IHRvIDAgZWZmZWN0aXZlbHkgdHVybnMgdGhlIGZlYXR1cmUgb2ZmLgotCi0gICBOb3RlOiBUaGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlICEgSWYgeW91IGdldCBjb3JlIGR1bXBzIHdoZW4KLSAgIHVzaW5nIFVuaWNvZGUgb2JqZWN0cywgdHVybiB0aGlzIGZlYXR1cmUgb2ZmLgotCi0qLwotCi0jZGVmaW5lIEtFRVBBTElWRV9TSVpFX0xJTUlUICAgICAgIDkKLQogLyogRW5kaWFubmVzcyBzd2l0Y2hlczsgZGVmYXVsdHMgdG8gbGl0dGxlIGVuZGlhbiAqLwogCiAjaWZkZWYgV09SRFNfQklHRU5ESUFOCkBAIC05MSw2ICs2OCwxMTAgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8qIE1heGltdW0gY29kZSBwb2ludCBvZiBVbmljb2RlIDYuMDogMHgxMGZmZmYgKDEsMTE0LDExMSkgKi8KKyNkZWZpbmUgTUFYX1VOSUNPREUgMHgxMGZmZmYKKworI2lmZGVmIFB5X0RFQlVHCisjICBkZWZpbmUgX1B5VW5pY29kZV9DSEVDSyhvcCkgX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KG9wLCAwKQorI2Vsc2UKKyMgIGRlZmluZSBfUHlVbmljb2RlX0NIRUNLKG9wKSBQeVVuaWNvZGVfQ2hlY2sob3ApCisjZW5kaWYKKworI2RlZmluZSBfUHlVbmljb2RlX1VURjgob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlDb21wYWN0VW5pY29kZU9iamVjdCopKG9wKSktPnV0ZjgpCisjZGVmaW5lIFB5VW5pY29kZV9VVEY4KG9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKG9wKSksICAgICAgICAgICAgICAgICAgICBcCisgICAgIFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9wKSA/ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICgoY2hhciopKChQeUFTQ0lJT2JqZWN0Kikob3ApICsgMSkpIDogICAgICAgICAgXAorICAgICAgICAgX1B5VW5pY29kZV9VVEY4KG9wKSkKKyNkZWZpbmUgX1B5VW5pY29kZV9VVEY4X0xFTkdUSChvcCkgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QqKShvcCkpLT51dGY4X2xlbmd0aCkKKyNkZWZpbmUgUHlVbmljb2RlX1VURjhfTEVOR1RIKG9wKSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhvcCkpLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkob3ApKSwgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob3ApID8gICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgKChQeUFTQ0lJT2JqZWN0Kikob3ApKS0+bGVuZ3RoIDogICAgICAgICAgICAgICBcCisgICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKG9wKSkKKyNkZWZpbmUgX1B5VW5pY29kZV9XU1RSKG9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoKFB5QVNDSUlPYmplY3QqKShvcCkpLT53c3RyKQorI2RlZmluZSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKG9wKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlDb21wYWN0VW5pY29kZU9iamVjdCopKG9wKSktPndzdHJfbGVuZ3RoKQorI2RlZmluZSBfUHlVbmljb2RlX0xFTkdUSChvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT5sZW5ndGgpCisjZGVmaW5lIF9QeVVuaWNvZGVfU1RBVEUob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPnN0YXRlKQorI2RlZmluZSBfUHlVbmljb2RlX0hBU0gob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT5oYXNoKQorI2RlZmluZSBfUHlVbmljb2RlX0tJTkQob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChfUHlVbmljb2RlX0NIRUNLKG9wKSksICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPnN0YXRlLmtpbmQpCisjZGVmaW5lIF9QeVVuaWNvZGVfR0VUX0xFTkdUSChvcCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+bGVuZ3RoKQorI2RlZmluZSBfUHlVbmljb2RlX0RBVEFfQU5ZKG9wKSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlVbmljb2RlT2JqZWN0Kikob3ApKS0+ZGF0YS5hbnkpCisKKy8qIE9wdGltaXplZCB2ZXJzaW9uIG9mIFB5X01BWCgpIHRvIGNvbXB1dGUgdGhlIG1heGltdW0gY2hhcmFjdGVyOgorICAgdXNlIGl0IHdoZW4geW91ciBhcmUgY29tcHV0aW5nIHRoZSBzZWNvbmQgYXJndW1lbnQgb2YgUHlVbmljb2RlX05ldygpICovCisjZGVmaW5lIE1BWF9NQVhDSEFSKG1heGNoYXIxLCBtYXhjaGFyMikgICAgICAgICAgICAgICAgIFwKKyAgICAoKG1heGNoYXIxKSB8IChtYXhjaGFyMikpCisKKyN1bmRlZiBQeVVuaWNvZGVfUkVBRFkKKyNkZWZpbmUgUHlVbmljb2RlX1JFQURZKG9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhvcCkpLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIChQeVVuaWNvZGVfSVNfUkVBRFkob3ApID8gICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIDAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgX1B5VW5pY29kZV9SZWFkeShvcCkpKQorCisjZGVmaW5lIF9QeVVuaWNvZGVfU0hBUkVfVVRGOChvcCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBhc3NlcnQoIVB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9wKSksICAgICAgICAgICBcCisgICAgIChfUHlVbmljb2RlX1VURjgob3ApID09IFB5VW5pY29kZV9EQVRBKG9wKSkpCisjZGVmaW5lIF9QeVVuaWNvZGVfU0hBUkVfV1NUUihvcCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID09IFB5VW5pY29kZV9EQVRBKG9wKSkpCisKKy8qIHRydWUgaWYgdGhlIFVuaWNvZGUgb2JqZWN0IGhhcyBhbiBhbGxvY2F0ZWQgVVRGLTggbWVtb3J5IGJsb2NrCisgICAobm90IHNoYXJlZCB3aXRoIG90aGVyIGRhdGEpICovCisjZGVmaW5lIF9QeVVuaWNvZGVfSEFTX1VURjhfTUVNT1JZKG9wKSAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoIVB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9wKSAgICAgICAgICAgICAgICAgICBcCisgICAgICAmJiBfUHlVbmljb2RlX1VURjgob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICYmIF9QeVVuaWNvZGVfVVRGOChvcCkgIT0gUHlVbmljb2RlX0RBVEEob3ApKSkKKworLyogdHJ1ZSBpZiB0aGUgVW5pY29kZSBvYmplY3QgaGFzIGFuIGFsbG9jYXRlZCB3c3RyIG1lbW9yeSBibG9jaworICAgKG5vdCBzaGFyZWQgd2l0aCBvdGhlciBkYXRhKSAqLworI2RlZmluZSBfUHlVbmljb2RlX0hBU19XU1RSX01FTU9SWShvcCkgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChfUHlVbmljb2RlX0NIRUNLKG9wKSksICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKF9QeVVuaWNvZGVfV1NUUihvcCkgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgKCFQeVVuaWNvZGVfSVNfUkVBRFkob3ApIHx8ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgX1B5VW5pY29kZV9XU1RSKG9wKSAhPSBQeVVuaWNvZGVfREFUQShvcCkpKSkKKworLyogR2VuZXJpYyBoZWxwZXIgbWFjcm8gdG8gY29udmVydCBjaGFyYWN0ZXJzIG9mIGRpZmZlcmVudCB0eXBlcy4KKyAgIGZyb21fdHlwZSBhbmQgdG9fdHlwZSBoYXZlIHRvIGJlIHZhbGlkIHR5cGUgbmFtZXMsIGJlZ2luIGFuZCBlbmQKKyAgIGFyZSBwb2ludGVycyB0byB0aGUgc291cmNlIGNoYXJhY3RlcnMgd2hpY2ggc2hvdWxkIGJlIG9mIHR5cGUKKyAgICJmcm9tX3R5cGUgKiIuICB0byBpcyBhIHBvaW50ZXIgb2YgdHlwZSAidG9fdHlwZSAqIiBhbmQgcG9pbnRzIHRvIHRoZQorICAgYnVmZmVyIHdoZXJlIHRoZSByZXN1bHQgY2hhcmFjdGVycyBhcmUgd3JpdHRlbiB0by4gKi8KKyNkZWZpbmUgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKGZyb21fdHlwZSwgdG9fdHlwZSwgYmVnaW4sIGVuZCwgdG8pIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0b190eXBlICpfdG8gPSAodG9fdHlwZSAqKSB0bzsgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNvbnN0IGZyb21fdHlwZSAqX2l0ZXIgPSAoYmVnaW4pOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgY29uc3QgZnJvbV90eXBlICpfZW5kID0gKGVuZCk7ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9zc2l6ZV90IG4gPSAoX2VuZCkgLSAoX2l0ZXIpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIGNvbnN0IGZyb21fdHlwZSAqX3Vucm9sbGVkX2VuZCA9ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9pdGVyICsgX1B5X1NJWkVfUk9VTkRfRE9XTihuLCA0KTsgICAgICAgICAgXAorICAgICAgICB3aGlsZSAoX2l0ZXIgPCAoX3Vucm9sbGVkX2VuZCkpIHsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfdG9bMF0gPSAodG9fdHlwZSkgX2l0ZXJbMF07ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF90b1sxXSA9ICh0b190eXBlKSBfaXRlclsxXTsgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgX3RvWzJdID0gKHRvX3R5cGUpIF9pdGVyWzJdOyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfdG9bM10gPSAodG9fdHlwZSkgX2l0ZXJbM107ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9pdGVyICs9IDQ7IF90byArPSA0OyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHdoaWxlIChfaXRlciA8IChfZW5kKSkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICpfdG8rKyA9ICh0b190eXBlKSAqX2l0ZXIrKzsgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKIC8qIFRoaXMgZGljdGlvbmFyeSBob2xkcyBhbGwgaW50ZXJuZWQgdW5pY29kZSBzdHJpbmdzLiAgTm90ZSB0aGF0IHJlZmVyZW5jZXMKICAgIHRvIHN0cmluZ3MgaW4gdGhpcyBkaWN0aW9uYXJ5IGFyZSAqbm90KiBjb3VudGVkIGluIHRoZSBzdHJpbmcncyBvYl9yZWZjbnQuCiAgICBXaGVuIHRoZSBpbnRlcm5lZCBzdHJpbmcgcmVhY2hlcyBhIHJlZmNudCBvZiAwIHRoZSBzdHJpbmcgZGVhbGxvY2F0aW9uCkBAIC0xMDEsMjggKzE4MiwzNCBAQAogKi8KIHN0YXRpYyBQeU9iamVjdCAqaW50ZXJuZWQgPSBOVUxMOwogCi0vKiBGcmVlIGxpc3QgZm9yIFVuaWNvZGUgb2JqZWN0cyAqLwotc3RhdGljIFB5VW5pY29kZU9iamVjdCAqZnJlZV9saXN0ID0gTlVMTDsKLXN0YXRpYyBpbnQgbnVtZnJlZSA9IDA7Ci0KIC8qIFRoZSBlbXB0eSBVbmljb2RlIG9iamVjdCBpcyBzaGFyZWQgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS4gKi8KLXN0YXRpYyBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGVfZW1wdHkgPSBOVUxMOworc3RhdGljIFB5T2JqZWN0ICp1bmljb2RlX2VtcHR5ID0gTlVMTDsKIAotI2RlZmluZSBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKSAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIF9QeV9JTkNSRUZfVU5JQ09ERV9FTVBUWSgpICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAodW5pY29kZV9lbXB0eSAhPSBOVUxMKSAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgdW5pY29kZV9lbXB0eSA9IF9QeVVuaWNvZGVfTmV3KDApOyAgICAgICAgICBcCi0gICAgICAgICAgICBpZiAodW5pY29kZV9lbXB0eSAhPSBOVUxMKSAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHVuaWNvZGVfZW1wdHkgPSBQeVVuaWNvZGVfTmV3KDAsIDApOyAgICAgICAgXAorICAgICAgICAgICAgaWYgKHVuaWNvZGVfZW1wdHkgIT0gTlVMTCkgeyAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGVfZW1wdHksIDEpKTsgXAorICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGVfZW1wdHk7ICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKKyNkZWZpbmUgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCkgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9QeV9JTkNSRUZfVU5JQ09ERV9FTVBUWSgpOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKy8qIExpc3Qgb2Ygc3RhdGljIHN0cmluZ3MuICovCitzdGF0aWMgX1B5X0lkZW50aWZpZXIgKnN0YXRpY19zdHJpbmdzID0gTlVMTDsKKwogLyogU2luZ2xlIGNoYXJhY3RlciBVbmljb2RlIHN0cmluZ3MgaW4gdGhlIExhdGluLTEgcmFuZ2UgYXJlIGJlaW5nCiAgICBzaGFyZWQgYXMgd2VsbC4gKi8KLXN0YXRpYyBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGVfbGF0aW4xWzI1Nl0gPSB7TlVMTH07CitzdGF0aWMgUHlPYmplY3QgKnVuaWNvZGVfbGF0aW4xWzI1Nl0gPSB7TlVMTH07CiAKIC8qIEZhc3QgZGV0ZWN0aW9uIG9mIHRoZSBtb3N0IGZyZXF1ZW50IHdoaXRlc3BhY2UgY2hhcmFjdGVycyAqLwogY29uc3QgdW5zaWduZWQgY2hhciBfUHlfYXNjaWlfd2hpdGVzcGFjZVtdID0gewpAQCAtMTU1LDE2ICsyNDIsMzEgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCiB9OwogCi1zdGF0aWMgUHlPYmplY3QgKnVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycywKKy8qIGZvcndhcmQgKi8KK3N0YXRpYyBQeVVuaWNvZGVPYmplY3QgKl9QeVVuaWNvZGVfTmV3KFB5X3NzaXplX3QgbGVuZ3RoKTsKK3N0YXRpYyBQeU9iamVjdCogZ2V0X2xhdGluMV9jaGFyKHVuc2lnbmVkIGNoYXIgY2gpOworc3RhdGljIGludCB1bmljb2RlX21vZGlmaWFibGUoUHlPYmplY3QgKnVuaWNvZGUpOworCisKK3N0YXRpYyBQeU9iamVjdCAqCitfUHlVbmljb2RlX0Zyb21VQ1MxKGNvbnN0IFB5X1VDUzEgKnMsIFB5X3NzaXplX3Qgc2l6ZSk7CitzdGF0aWMgUHlPYmplY3QgKgorX1B5VW5pY29kZV9Gcm9tVUNTMihjb25zdCBQeV9VQ1MyICpzLCBQeV9zc2l6ZV90IHNpemUpOworc3RhdGljIFB5T2JqZWN0ICoKK19QeVVuaWNvZGVfRnJvbVVDUzQoY29uc3QgUHlfVUNTNCAqcywgUHlfc3NpemVfdCBzaXplKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycywKICAgICAgICBQeU9iamVjdCAqKmVycm9ySGFuZGxlcixjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqcmVhc29uLAotICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc2l6ZSwgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCisgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAogICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLCBQeV9zc2l6ZV90ICpuZXdwb3MpOwogCi1zdGF0aWMgdm9pZCByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqdW5pY29kZSwgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKTsKK3N0YXRpYyB2b2lkCityYWlzZV9lbmNvZGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pOwogCiAvKiBTYW1lIGZvciBsaW5lYnJlYWtzICovCiBzdGF0aWMgdW5zaWduZWQgY2hhciBhc2NpaV9saW5lYnJlYWtbXSA9IHsKQEAgLTE5NCw3ICsyOTYsOCBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAKIH07CiAKLQorLyogVGhlIG1heCB1bmljb2RlIHZhbHVlIGlzIGFsd2F5cyAweDEwRkZGRiB3aGlsZSB1c2luZyB0aGUgUEVQLTM5MyBBUEkuCisgICBUaGlzIGZ1bmN0aW9uIGlzIGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgb2xkIEFQSS4gKi8KIFB5X1VOSUNPREUKIFB5VW5pY29kZV9HZXRNYXgodm9pZCkKIHsKQEAgLTIwNyw2ICszMTAsMjIzIEBACiAjZW5kaWYKIH0KIAorI2lmZGVmIFB5X0RFQlVHCitpbnQKK19QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShQeU9iamVjdCAqb3AsIGludCBjaGVja19jb250ZW50KQoreworICAgIFB5QVNDSUlPYmplY3QgKmFzY2lpOworICAgIHVuc2lnbmVkIGludCBraW5kOworCisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpOworCisgICAgYXNjaWkgPSAoUHlBU0NJSU9iamVjdCAqKW9wOworICAgIGtpbmQgPSBhc2NpaS0+c3RhdGUua2luZDsKKworICAgIGlmIChhc2NpaS0+c3RhdGUuYXNjaWkgPT0gMSAmJiBhc2NpaS0+c3RhdGUuY29tcGFjdCA9PSAxKSB7CisgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKKyAgICAgICAgYXNzZXJ0KGFzY2lpLT5zdGF0ZS5yZWFkeSA9PSAxKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5Q29tcGFjdFVuaWNvZGVPYmplY3QgKmNvbXBhY3QgPSAoUHlDb21wYWN0VW5pY29kZU9iamVjdCAqKW9wOworICAgICAgICB2b2lkICpkYXRhOworCisgICAgICAgIGlmIChhc2NpaS0+c3RhdGUuY29tcGFjdCA9PSAxKSB7CisgICAgICAgICAgICBkYXRhID0gY29tcGFjdCArIDE7CisgICAgICAgICAgICBhc3NlcnQoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORAorICAgICAgICAgICAgICAgICAgIHx8IGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQKKyAgICAgICAgICAgICAgICAgICB8fCBraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgICAgIGFzc2VydChhc2NpaS0+c3RhdGUuYXNjaWkgPT0gMCk7CisgICAgICAgICAgICBhc3NlcnQoYXNjaWktPnN0YXRlLnJlYWR5ID09IDEpOworICAgICAgICAgICAgYXNzZXJ0IChjb21wYWN0LT51dGY4ICE9IGRhdGEpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlID0gKFB5VW5pY29kZU9iamVjdCAqKW9wOworCisgICAgICAgICAgICBkYXRhID0gdW5pY29kZS0+ZGF0YS5hbnk7CisgICAgICAgICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfV0NIQVJfS0lORCkgeworICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+bGVuZ3RoID09IDApOworICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+aGFzaCA9PSAtMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT5zdGF0ZS5jb21wYWN0ID09IDApOworICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+c3RhdGUuYXNjaWkgPT0gMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT5zdGF0ZS5yZWFkeSA9PSAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPnN0YXRlLmludGVybmVkID09IFNTVEFURV9OT1RfSU5URVJORUQpOworICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+d3N0ciAhPSBOVUxMKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoZGF0YSA9PSBOVUxMKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoY29tcGFjdC0+dXRmOCA9PSBOVUxMKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5ECisgICAgICAgICAgICAgICAgICAgICAgIHx8IGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQKKyAgICAgICAgICAgICAgICAgICAgICAgfHwga2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT5zdGF0ZS5jb21wYWN0ID09IDApOworICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+c3RhdGUucmVhZHkgPT0gMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGRhdGEgIT0gTlVMTCk7CisgICAgICAgICAgICAgICAgaWYgKGFzY2lpLT5zdGF0ZS5hc2NpaSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKGNvbXBhY3QtPnV0ZjggPT0gZGF0YSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoY29tcGFjdC0+dXRmOF9sZW5ndGggPT0gYXNjaWktPmxlbmd0aCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChjb21wYWN0LT51dGY4ICE9IGRhdGEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChraW5kICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKSB7CisgICAgICAgICAgICBpZiAoCisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgICAgICAgICAgICAgIGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQKKyNlbHNlCisgICAgICAgICAgICAgICAga2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORAorI2VuZGlmCisgICAgICAgICAgICAgICApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT53c3RyID09IGRhdGEpOworICAgICAgICAgICAgICAgIGFzc2VydChjb21wYWN0LT53c3RyX2xlbmd0aCA9PSBhc2NpaS0+bGVuZ3RoKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+d3N0ciAhPSBkYXRhKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb21wYWN0LT51dGY4ID09IE5VTEwpCisgICAgICAgICAgICBhc3NlcnQoY29tcGFjdC0+dXRmOF9sZW5ndGggPT0gMCk7CisgICAgICAgIGlmIChhc2NpaS0+d3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgYXNzZXJ0KGNvbXBhY3QtPndzdHJfbGVuZ3RoID09IDApOworICAgIH0KKyAgICAvKiBjaGVjayB0aGF0IHRoZSBiZXN0IGtpbmQgaXMgdXNlZCAqLworICAgIGlmIChjaGVja19jb250ZW50ICYmIGtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpCisgICAgeworICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgIFB5X1VDUzQgbWF4Y2hhciA9IDA7CisgICAgICAgIHZvaWQgKmRhdGE7CisgICAgICAgIFB5X1VDUzQgY2g7CisKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKGFzY2lpKTsKKyAgICAgICAgZm9yIChpPTA7IGkgPCBhc2NpaS0+bGVuZ3RoOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgICAgICBpZiAoY2ggPiBtYXhjaGFyKQorICAgICAgICAgICAgICAgIG1heGNoYXIgPSBjaDsKKyAgICAgICAgfQorICAgICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICAgICAgaWYgKGFzY2lpLT5zdGF0ZS5hc2NpaSA9PSAwKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG1heGNoYXIgPj0gMTI4KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQobWF4Y2hhciA8PSAyNTUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFzc2VydChtYXhjaGFyIDwgMTI4KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgICAgICBhc3NlcnQobWF4Y2hhciA+PSAweDEwMCk7CisgICAgICAgICAgICBhc3NlcnQobWF4Y2hhciA8PSAweEZGRkYpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KG1heGNoYXIgPj0gMHgxMDAwMCk7CisgICAgICAgICAgICBhc3NlcnQobWF4Y2hhciA8PSBNQVhfVU5JQ09ERSk7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGFzY2lpLT5sZW5ndGgpID09IDApOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QqCit1bmljb2RlX3Jlc3VsdF93Y2hhcihQeU9iamVjdCAqdW5pY29kZSkKK3sKKyNpZm5kZWYgUHlfREVCVUcKKyAgICBQeV9zc2l6ZV90IGxlbjsKKworICAgIGFzc2VydChQeV9SRUZDTlQodW5pY29kZSkgPT0gMSk7CisKKyAgICBsZW4gPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgIGlmIChsZW4gPT0gMCkgeworICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOworICAgIH0KKworICAgIGlmIChsZW4gPT0gMSkgeworICAgICAgICB3Y2hhcl90IGNoID0gX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpWzBdOworICAgICAgICBpZiAoKFB5X1VDUzQpY2ggPCAyNTYpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpsYXRpbjFfY2hhciA9IGdldF9sYXRpbjFfY2hhcigodW5zaWduZWQgY2hhciljaCk7CisgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgICAgICByZXR1cm4gbGF0aW4xX2NoYXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoX1B5VW5pY29kZV9SZWFkeSh1bmljb2RlKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorI2Vsc2UKKyAgICAvKiBkb24ndCBtYWtlIHRoZSByZXN1bHQgcmVhZHkgaW4gZGVidWcgbW9kZSB0byBlbnN1cmUgdGhhdCB0aGUgY2FsbGVyCisgICAgICAgbWFrZXMgdGhlIHN0cmluZyByZWFkeSBiZWZvcmUgdXNpbmcgaXQgKi8KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKKyNlbmRpZgorICAgIHJldHVybiB1bmljb2RlOworfQorCitzdGF0aWMgUHlPYmplY3QqCit1bmljb2RlX3Jlc3VsdF9yZWFkeShQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICBQeV9zc2l6ZV90IGxlbmd0aDsKKworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGlmIChsZW5ndGggPT0gMCkgeworICAgICAgICBpZiAodW5pY29kZSAhPSB1bmljb2RlX2VtcHR5KSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICB9CisKKyAgICBpZiAobGVuZ3RoID09IDEpIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIodW5pY29kZSwgMCk7CisgICAgICAgIGlmIChjaCA8IDI1NikgeworICAgICAgICAgICAgUHlPYmplY3QgKmxhdGluMV9jaGFyID0gdW5pY29kZV9sYXRpbjFbY2hdOworICAgICAgICAgICAgaWYgKGxhdGluMV9jaGFyICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAodW5pY29kZSAhPSBsYXRpbjFfY2hhcikgeworICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYobGF0aW4xX2NoYXIpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBsYXRpbjFfY2hhcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZSwgMSkpOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlKTsKKyAgICAgICAgICAgICAgICB1bmljb2RlX2xhdGluMVtjaF0gPSB1bmljb2RlOworICAgICAgICAgICAgICAgIHJldHVybiB1bmljb2RlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAxKSk7CisgICAgcmV0dXJuIHVuaWNvZGU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3VuaWNvZGVfcmVzdWx0KFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIGFzc2VydChfUHlVbmljb2RlX0NIRUNLKHVuaWNvZGUpKTsKKyAgICBpZiAoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKQorICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfcmVhZHkodW5pY29kZSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfd2NoYXIodW5pY29kZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3VuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QodW5pY29kZSkpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9JTkNSRUYodW5pY29kZSk7CisgICAgICAgIHJldHVybiB1bmljb2RlOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIC8qIFN1YnR5cGUgLS0gcmV0dXJuIGdlbnVpbmUgdW5pY29kZSBzdHJpbmcgd2l0aCB0aGUgc2FtZSB2YWx1ZS4gKi8KKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQ29weSh1bmljb2RlKTsKK30KKworI2lmZGVmIEhBVkVfTUJDUworc3RhdGljIE9TVkVSU0lPTklORk9FWCB3aW52ZXI7CisjZW5kaWYKKwogLyogLS0tIEJsb29tIEZpbHRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogLyogc3R1ZmYgdG8gaW1wbGVtZW50IHNpbXBsZSAiYmxvb20gZmlsdGVycyIgZm9yIFVuaWNvZGUgY2hhcmFjdGVycy4KQEAgLTIzNiw3ICs1NTYsOCBAQAogICAgICgoY2gpIDwgMTI4VSA/IGFzY2lpX2xpbmVicmVha1soY2gpXSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoQkxPT00oYmxvb21fbGluZWJyZWFrLCAoY2gpKSAmJiBQeV9VTklDT0RFX0lTTElORUJSRUFLKGNoKSkpCiAKLVB5X0xPQ0FMX0lOTElORShCTE9PTV9NQVNLKSBtYWtlX2Jsb29tX21hc2soUHlfVU5JQ09ERSogcHRyLCBQeV9zc2l6ZV90IGxlbikKK1B5X0xPQ0FMX0lOTElORShCTE9PTV9NQVNLKQorbWFrZV9ibG9vbV9tYXNrKGludCBraW5kLCB2b2lkKiBwdHIsIFB5X3NzaXplX3QgbGVuKQogewogICAgIC8qIGNhbGN1bGF0ZSBzaW1wbGUgYmxvb20tc3R5bGUgYml0bWFzayBmb3IgYSBnaXZlbiB1bmljb2RlIHN0cmluZyAqLwogCkBAIC0yNDUsNzYgKzU2NiwyNTcgQEAKIAogICAgIG1hc2sgPSAwOwogICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLSAgICAgICAgQkxPT01fQUREKG1hc2ssIHB0cltpXSk7CisgICAgICAgIEJMT09NX0FERChtYXNrLCBQeVVuaWNvZGVfUkVBRChraW5kLCBwdHIsIGkpKTsKIAogICAgIHJldHVybiBtYXNrOwogfQogCi1QeV9MT0NBTF9JTkxJTkUoaW50KSB1bmljb2RlX21lbWJlcihQeV9VTklDT0RFIGNociwgUHlfVU5JQ09ERSogc2V0LCBQeV9zc2l6ZV90IHNldGxlbikKLXsKLSAgICBQeV9zc2l6ZV90IGk7CisjZGVmaW5lIEJMT09NX01FTUJFUihtYXNrLCBjaHIsIHN0cikgXAorICAgIChCTE9PTShtYXNrLCBjaHIpIFwKKyAgICAgJiYgKFB5VW5pY29kZV9GaW5kQ2hhcihzdHIsIGNociwgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSwgMSkgPj0gMCkpCiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgc2V0bGVuOyBpKyspCi0gICAgICAgIGlmIChzZXRbaV0gPT0gY2hyKQotICAgICAgICAgICAgcmV0dXJuIDE7CisvKiBDb21waWxhdGlvbiBvZiB0ZW1wbGF0ZWQgcm91dGluZXMgKi8KIAotICAgIHJldHVybiAwOwotfQorI2luY2x1ZGUgInN0cmluZ2xpYi9hc2NpaWxpYi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3BhcnRpdGlvbi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9zcGxpdC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb3VudC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvbG9jYWxldXRpbC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi91bmRlZi5oIgogCi0jZGVmaW5lIEJMT09NX01FTUJFUihtYXNrLCBjaHIsIHNldCwgc2V0bGVuKSAgICAgICAgICAgICAgICAgICAgXAotICAgIEJMT09NKG1hc2ssIGNocikgJiYgdW5pY29kZV9tZW1iZXIoY2hyLCBzZXQsIHNldGxlbikKKyNpbmNsdWRlICJzdHJpbmdsaWIvdWNzMWxpYi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3BhcnRpdGlvbi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9zcGxpdC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb3VudC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvbG9jYWxldXRpbC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi91bmRlZi5oIgorCisjaW5jbHVkZSAic3RyaW5nbGliL3VjczJsaWIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9wYXJ0aXRpb24uaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvc3BsaXQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY291bnQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmluZC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kX21heF9jaGFyLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2xvY2FsZXV0aWwuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5kZWYuaCIKKworI2luY2x1ZGUgInN0cmluZ2xpYi91Y3M0bGliLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2Zhc3RzZWFyY2guaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvcGFydGl0aW9uLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3NwbGl0LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvdW50LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9sb2NhbGV1dGlsLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3VuZGVmLmgiCisKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5pY29kZWRlZnMuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb3VudC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3VuZGVmLmgiCiAKIC8qIC0tLSBVbmljb2RlIE9iamVjdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1zdGF0aWMKLWludCB1bmljb2RlX3Jlc2l6ZShyZWdpc3RlciBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgpCitzdGF0aWMgUHlPYmplY3QgKgorZml4dXAoUHlPYmplY3QgKnNlbGYsIFB5X1VDUzQgKCpmaXhmY3QpKFB5T2JqZWN0ICpzKSk7CisKK1B5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KSBmaW5kY2hhcih2b2lkICpzLCBpbnQga2luZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsIFB5X1VDUzQgY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKIHsKLSAgICB2b2lkICpvbGRzdHI7CisgICAgaW50IG1vZGUgPSAoZGlyZWN0aW9uID09IDEpID8gRkFTVF9TRUFSQ0ggOiBGQVNUX1JTRUFSQ0g7CiAKLSAgICAvKiBTaG9ydGN1dCBpZiB0aGVyZSdzIG5vdGhpbmcgbXVjaCB0byBkby4gKi8KLSAgICBpZiAodW5pY29kZS0+bGVuZ3RoID09IGxlbmd0aCkKLSAgICAgICAgZ290byByZXNldDsKLQotICAgIC8qIFJlc2l6aW5nIHNoYXJlZCBvYmplY3QgKHVuaWNvZGVfZW1wdHkgb3Igc2luZ2xlIGNoYXJhY3RlcgotICAgICAgIG9iamVjdHMpIGluLXBsYWNlIGlzIG5vdCBhbGxvd2VkLiBVc2UgUHlVbmljb2RlX1Jlc2l6ZSgpCi0gICAgICAgaW5zdGVhZCAhICovCi0KLSAgICBpZiAodW5pY29kZSA9PSB1bmljb2RlX2VtcHR5IHx8Ci0gICAgICAgICh1bmljb2RlLT5sZW5ndGggPT0gMSAmJgotICAgICAgICAgdW5pY29kZS0+c3RyWzBdIDwgMjU2VSAmJgotICAgICAgICAgdW5pY29kZV9sYXRpbjFbdW5pY29kZS0+c3RyWzBdXSA9PSB1bmljb2RlKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgcmVzaXplIHNoYXJlZCBzdHIgb2JqZWN0cyIpOworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIFB5X1VDUzEgY2gxID0gKFB5X1VDUzEpIGNoOworICAgICAgICAgICAgaWYgKGNoMSA9PSBjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9mYXN0c2VhcmNoKChQeV9VQ1MxICopIHMsIHNpemUsICZjaDEsIDEsIDAsIG1vZGUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIFB5X1VDUzIgY2gyID0gKFB5X1VDUzIpIGNoOworICAgICAgICAgICAgaWYgKGNoMiA9PSBjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdWNzMmxpYl9mYXN0c2VhcmNoKChQeV9VQ1MyICopIHMsIHNpemUsICZjaDIsIDEsIDAsIG1vZGUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiB1Y3M0bGliX2Zhc3RzZWFyY2goKFB5X1VDUzQgKikgcywgc2l6ZSwgJmNoLCAxLCAwLCBtb2RlKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Cit9CiAKLSAgICAvKiBXZSBhbGxvY2F0ZSBvbmUgbW9yZSBieXRlIHRvIG1ha2Ugc3VyZSB0aGUgc3RyaW5nIGlzIFV4MDAwMCB0ZXJtaW5hdGVkLgotICAgICAgIFRoZSBvdmVyYWxsb2NhdGlvbiBpcyBhbHNvIHVzZWQgYnkgZmFzdHNlYXJjaCwgd2hpY2ggYXNzdW1lcyB0aGF0IGl0J3MKLSAgICAgICBzYWZlIHRvIGxvb2sgYXQgc3RyW2xlbmd0aF0gKHdpdGhvdXQgbWFraW5nIGFueSBhc3N1bXB0aW9ucyBhYm91dCB3aGF0Ci0gICAgICAgaXQgY29udGFpbnMpLiAqLworc3RhdGljIFB5T2JqZWN0KgorcmVzaXplX2NvbXBhY3QoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgbGVuZ3RoKQoreworICAgIFB5X3NzaXplX3QgY2hhcl9zaXplOworICAgIFB5X3NzaXplX3Qgc3RydWN0X3NpemU7CisgICAgUHlfc3NpemVfdCBuZXdfc2l6ZTsKKyAgICBpbnQgc2hhcmVfd3N0cjsKKyAgICBQeU9iamVjdCAqbmV3X3VuaWNvZGU7CisgICAgYXNzZXJ0KHVuaWNvZGVfbW9kaWZpYWJsZSh1bmljb2RlKSk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19DT01QQUNUKHVuaWNvZGUpKTsKIAotICAgIG9sZHN0ciA9IHVuaWNvZGUtPnN0cjsKLSAgICB1bmljb2RlLT5zdHIgPSBQeU9iamVjdF9SRUFMTE9DKHVuaWNvZGUtPnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihQeV9VTklDT0RFKSAqIChsZW5ndGggKyAxKSk7Ci0gICAgaWYgKCF1bmljb2RlLT5zdHIpIHsKLSAgICAgICAgdW5pY29kZS0+c3RyID0gKFB5X1VOSUNPREUgKilvbGRzdHI7CisgICAgY2hhcl9zaXplID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgc3RydWN0X3NpemUgPSBzaXplb2YoUHlBU0NJSU9iamVjdCk7CisgICAgZWxzZQorICAgICAgICBzdHJ1Y3Rfc2l6ZSA9IHNpemVvZihQeUNvbXBhY3RVbmljb2RlT2JqZWN0KTsKKyAgICBzaGFyZV93c3RyID0gX1B5VW5pY29kZV9TSEFSRV9XU1RSKHVuaWNvZGUpOworCisgICAgaWYgKGxlbmd0aCA+ICgoUFlfU1NJWkVfVF9NQVggLSBzdHJ1Y3Rfc2l6ZSkgLyBjaGFyX3NpemUgLSAxKSkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbmV3X3NpemUgPSAoc3RydWN0X3NpemUgKyAobGVuZ3RoICsgMSkgKiBjaGFyX3NpemUpOworCisgICAgX1B5X0RFQ19SRUZUT1RBTDsKKyAgICBfUHlfRm9yZ2V0UmVmZXJlbmNlKHVuaWNvZGUpOworCisgICAgbmV3X3VuaWNvZGUgPSAoUHlPYmplY3QgKilQeU9iamVjdF9SRUFMTE9DKChjaGFyICopdW5pY29kZSwgbmV3X3NpemUpOworICAgIGlmIChuZXdfdW5pY29kZSA9PSBOVUxMKSB7CisgICAgICAgIF9QeV9OZXdSZWZlcmVuY2UodW5pY29kZSk7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICB1bmljb2RlID0gbmV3X3VuaWNvZGU7CisgICAgX1B5X05ld1JlZmVyZW5jZSh1bmljb2RlKTsKKworICAgIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpID0gbGVuZ3RoOworICAgIGlmIChzaGFyZV93c3RyKSB7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgICAgICBpZiAoIVB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSBsZW5ndGg7CisgICAgfQorICAgIGVsc2UgaWYgKF9QeVVuaWNvZGVfSEFTX1dTVFJfTUVNT1JZKHVuaWNvZGUpKSB7CisgICAgICAgIFB5T2JqZWN0X0RFTChfUHlVbmljb2RlX1dTVFIodW5pY29kZSkpOworICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBOVUxMOworICAgIH0KKyAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlX0tJTkQodW5pY29kZSksIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgICBsZW5ndGgsIDApOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZSwgMCkpOworICAgIHJldHVybiB1bmljb2RlOworfQorCitzdGF0aWMgaW50CityZXNpemVfaW5wbGFjZShQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgpCit7CisgICAgd2NoYXJfdCAqd3N0cjsKKyAgICBQeV9zc2l6ZV90IG5ld19zaXplOworICAgIGFzc2VydCghUHlVbmljb2RlX0lTX0NPTVBBQ1QodW5pY29kZSkpOworICAgIGFzc2VydChQeV9SRUZDTlQodW5pY29kZSkgPT0gMSk7CisKKyAgICBpZiAoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKSB7CisgICAgICAgIFB5X3NzaXplX3QgY2hhcl9zaXplOworICAgICAgICBpbnQgc2hhcmVfd3N0ciwgc2hhcmVfdXRmODsKKyAgICAgICAgdm9pZCAqZGF0YTsKKworICAgICAgICBkYXRhID0gX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKTsKKyAgICAgICAgY2hhcl9zaXplID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgICAgIHNoYXJlX3dzdHIgPSBfUHlVbmljb2RlX1NIQVJFX1dTVFIodW5pY29kZSk7CisgICAgICAgIHNoYXJlX3V0ZjggPSBfUHlVbmljb2RlX1NIQVJFX1VURjgodW5pY29kZSk7CisKKyAgICAgICAgaWYgKGxlbmd0aCA+IChQWV9TU0laRV9UX01BWCAvIGNoYXJfc2l6ZSAtIDEpKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIG5ld19zaXplID0gKGxlbmd0aCArIDEpICogY2hhcl9zaXplOworCisgICAgICAgIGlmICghc2hhcmVfdXRmOCAmJiBfUHlVbmljb2RlX0hBU19VVEY4X01FTU9SWSh1bmljb2RlKSkKKyAgICAgICAgeworICAgICAgICAgICAgUHlPYmplY3RfREVMKF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSk7CisgICAgICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBOVUxMOworICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgICAgIH0KKworICAgICAgICBkYXRhID0gKFB5T2JqZWN0ICopUHlPYmplY3RfUkVBTExPQyhkYXRhLCBuZXdfc2l6ZSk7CisgICAgICAgIGlmIChkYXRhID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSA9IGRhdGE7CisgICAgICAgIGlmIChzaGFyZV93c3RyKSB7CisgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBkYXRhOworICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IGxlbmd0aDsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2hhcmVfdXRmOCkgeworICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gZGF0YTsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSBsZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgPSBsZW5ndGg7CisgICAgICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfS0lORCh1bmljb2RlKSwgZGF0YSwgbGVuZ3RoLCAwKTsKKyAgICAgICAgaWYgKHNoYXJlX3dzdHIgfHwgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID09IE5VTEwpIHsKKyAgICAgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZSwgMCkpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSAhPSBOVUxMKTsKKworICAgIC8qIGNoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93ICovCisgICAgaWYgKGxlbmd0aCA+IFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKHdjaGFyX3QpIC0gMSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHVuaWNvZGUtPnN0cltsZW5ndGhdID0gMDsKLSAgICB1bmljb2RlLT5sZW5ndGggPSBsZW5ndGg7Ci0KLSAgcmVzZXQ6Ci0gICAgLyogUmVzZXQgdGhlIG9iamVjdCBjYWNoZXMgKi8KLSAgICBpZiAodW5pY29kZS0+ZGVmZW5jKSB7Ci0gICAgICAgIFB5X0NMRUFSKHVuaWNvZGUtPmRlZmVuYyk7CisgICAgbmV3X3NpemUgPSBzaXplb2Yod2NoYXJfdCkgKiAobGVuZ3RoICsgMSk7CisgICAgd3N0ciA9ICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSk7CisgICAgd3N0ciA9IFB5T2JqZWN0X1JFQUxMT0Mod3N0ciwgbmV3X3NpemUpOworICAgIGlmICghd3N0cikgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHVuaWNvZGUtPmhhc2ggPSAtMTsKLQorICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IHdzdHI7CisgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpW2xlbmd0aF0gPSAwOworICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSBsZW5ndGg7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAwKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCoKK3Jlc2l6ZV9jb3B5KFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBQeV9zc2l6ZV90IGNvcHlfbGVuZ3RoOworICAgIGlmIChfUHlVbmljb2RlX0tJTkQodW5pY29kZSkgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpIHsKKyAgICAgICAgUHlPYmplY3QgKmNvcHk7CisKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGNvcHkgPSBQeVVuaWNvZGVfTmV3KGxlbmd0aCwgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHVuaWNvZGUpKTsKKyAgICAgICAgaWYgKGNvcHkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGNvcHlfbGVuZ3RoID0gUHlfTUlOKGxlbmd0aCwgUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpOworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhjb3B5LCAwLCB1bmljb2RlLCAwLCBjb3B5X2xlbmd0aCk7CisgICAgICAgIHJldHVybiBjb3B5OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKnc7CisKKyAgICAgICAgdyA9IChQeU9iamVjdCopX1B5VW5pY29kZV9OZXcobGVuZ3RoKTsKKyAgICAgICAgaWYgKHcgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBjb3B5X2xlbmd0aCA9IF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgICAgIGNvcHlfbGVuZ3RoID0gUHlfTUlOKGNvcHlfbGVuZ3RoLCBsZW5ndGgpOworICAgICAgICBQeV9VTklDT0RFX0NPUFkoX1B5VW5pY29kZV9XU1RSKHcpLCBfUHlVbmljb2RlX1dTVFIodW5pY29kZSksCisgICAgICAgICAgICAgICAgICAgICAgICBjb3B5X2xlbmd0aCk7CisgICAgICAgIHJldHVybiB3OworICAgIH0KK30KKwogLyogV2UgYWxsb2NhdGUgb25lIG1vcmUgYnl0ZSB0byBtYWtlIHN1cmUgdGhlIHN0cmluZyBpcwogICAgVXgwMDAwIHRlcm1pbmF0ZWQ7IHNvbWUgY29kZSAoZS5nLiBuZXdfaWRlbnRpZmllcikKICAgIHJlbGllcyBvbiB0aGF0LgpAQCAtMzI0LDU1ICs4MjYsMzkgQEAKIAogKi8KIAotc3RhdGljCi1QeVVuaWNvZGVPYmplY3QgKl9QeVVuaWNvZGVfTmV3KFB5X3NzaXplX3QgbGVuZ3RoKQorc3RhdGljIFB5VW5pY29kZU9iamVjdCAqCitfUHlVbmljb2RlX05ldyhQeV9zc2l6ZV90IGxlbmd0aCkKIHsKICAgICByZWdpc3RlciBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGU7CisgICAgc2l6ZV90IG5ld19zaXplOwogCiAgICAgLyogT3B0aW1pemF0aW9uIGZvciBlbXB0eSBzdHJpbmdzICovCiAgICAgaWYgKGxlbmd0aCA9PSAwICYmIHVuaWNvZGVfZW1wdHkgIT0gTlVMTCkgewogICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7Ci0gICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgICAgICByZXR1cm4gKFB5VW5pY29kZU9iamVjdCopdW5pY29kZV9lbXB0eTsKICAgICB9CiAKICAgICAvKiBFbnN1cmUgd2Ugd29uJ3Qgb3ZlcmZsb3cgdGhlIHNpemUuICovCiAgICAgaWYgKGxlbmd0aCA+ICgoUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoUHlfVU5JQ09ERSkpIC0gMSkpIHsKICAgICAgICAgcmV0dXJuIChQeVVuaWNvZGVPYmplY3QgKilQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KLQotICAgIC8qIFVuaWNvZGUgZnJlZWxpc3QgJiBtZW1vcnkgYWxsb2NhdGlvbiAqLwotICAgIGlmIChmcmVlX2xpc3QpIHsKLSAgICAgICAgdW5pY29kZSA9IGZyZWVfbGlzdDsKLSAgICAgICAgZnJlZV9saXN0ID0gKihQeVVuaWNvZGVPYmplY3QgKiopdW5pY29kZTsKLSAgICAgICAgbnVtZnJlZS0tOwotICAgICAgICBpZiAodW5pY29kZS0+c3RyKSB7Ci0gICAgICAgICAgICAvKiBLZWVwLUFsaXZlIG9wdGltaXphdGlvbjogd2Ugb25seSB1cHNpemUgdGhlIGJ1ZmZlciwKLSAgICAgICAgICAgICAgIG5ldmVyIGRvd25zaXplIGl0LiAqLwotICAgICAgICAgICAgaWYgKCh1bmljb2RlLT5sZW5ndGggPCBsZW5ndGgpICYmCi0gICAgICAgICAgICAgICAgdW5pY29kZV9yZXNpemUodW5pY29kZSwgbGVuZ3RoKSA8IDApIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdF9ERUwodW5pY29kZS0+c3RyKTsKLSAgICAgICAgICAgICAgICB1bmljb2RlLT5zdHIgPSBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2l6ZV90IG5ld19zaXplID0gc2l6ZW9mKFB5X1VOSUNPREUpICogKChzaXplX3QpbGVuZ3RoICsgMSk7Ci0gICAgICAgICAgICB1bmljb2RlLT5zdHIgPSAoUHlfVU5JQ09ERSopIFB5T2JqZWN0X01BTExPQyhuZXdfc2l6ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgUHlPYmplY3RfSU5JVCh1bmljb2RlLCAmUHlVbmljb2RlX1R5cGUpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgc2l6ZV90IG5ld19zaXplOwotICAgICAgICB1bmljb2RlID0gUHlPYmplY3RfTmV3KFB5VW5pY29kZU9iamVjdCwgJlB5VW5pY29kZV9UeXBlKTsKLSAgICAgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBuZXdfc2l6ZSA9IHNpemVvZihQeV9VTklDT0RFKSAqICgoc2l6ZV90KWxlbmd0aCArIDEpOwotICAgICAgICB1bmljb2RlLT5zdHIgPSAoUHlfVU5JQ09ERSopIFB5T2JqZWN0X01BTExPQyhuZXdfc2l6ZSk7CisgICAgaWYgKGxlbmd0aCA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIk5lZ2F0aXZlIHNpemUgcGFzc2VkIHRvIF9QeVVuaWNvZGVfTmV3Iik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmICghdW5pY29kZS0+c3RyKSB7CisgICAgdW5pY29kZSA9IFB5T2JqZWN0X05ldyhQeVVuaWNvZGVPYmplY3QsICZQeVVuaWNvZGVfVHlwZSk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbmV3X3NpemUgPSBzaXplb2YoUHlfVU5JQ09ERSkgKiAoKHNpemVfdClsZW5ndGggKyAxKTsKKyAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSAoUHlfVU5JQ09ERSopIFB5T2JqZWN0X01BTExPQyhuZXdfc2l6ZSk7CisgICAgaWYgKCFfUHlVbmljb2RlX1dTVFIodW5pY29kZSkpIHsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKwogICAgIC8qIEluaXRpYWxpemUgdGhlIGZpcnN0IGVsZW1lbnQgdG8gZ3VhcmQgYWdhaW5zdCBjYXNlcyB3aGVyZQogICAgICAqIHRoZSBjYWxsZXIgZmFpbHMgYmVmb3JlIGluaXRpYWxpemluZyBzdHIgLS0gdW5pY29kZV9yZXNpemUoKQogICAgICAqIHJlYWRzIHN0clswXSwgYW5kIHRoZSBLZWVwLUFsaXZlIG9wdGltaXphdGlvbiBjYW4ga2VlcCBtZW1vcnkKQEAgLTM4MCwyNCArODY2LDY1OCBAQAogICAgICAqIFdlIGRvbid0IHdhbnQgdW5pY29kZV9yZXNpemUgdG8gcmVhZCB1bmluaXRpYWxpemVkIG1lbW9yeSBpbgogICAgICAqIHRoYXQgY2FzZS4KICAgICAgKi8KLSAgICB1bmljb2RlLT5zdHJbMF0gPSAwOwotICAgIHVuaWNvZGUtPnN0cltsZW5ndGhdID0gMDsKLSAgICB1bmljb2RlLT5sZW5ndGggPSBsZW5ndGg7Ci0gICAgdW5pY29kZS0+aGFzaCA9IC0xOwotICAgIHVuaWNvZGUtPnN0YXRlID0gMDsKLSAgICB1bmljb2RlLT5kZWZlbmMgPSBOVUxMOworICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKVswXSA9IDA7CisgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpW2xlbmd0aF0gPSAwOworICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSBsZW5ndGg7CisgICAgX1B5VW5pY29kZV9IQVNIKHVuaWNvZGUpID0gLTE7CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5pbnRlcm5lZCA9IDA7CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5raW5kID0gMDsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmNvbXBhY3QgPSAwOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkucmVhZHkgPSAwOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuYXNjaWkgPSAwOworICAgIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPSBOVUxMOworICAgIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBOVUxMOworICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSAwOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koKFB5T2JqZWN0ICopdW5pY29kZSwgMCkpOwogICAgIHJldHVybiB1bmljb2RlOwotCi0gIG9uRXJyb3I6Ci0gICAgLyogWFhYIFVOUkVGL05FV1JFRiBpbnRlcmZhY2Ugc2hvdWxkIGJlIG1vcmUgc3ltbWV0cmljYWwgKi8KLSAgICBfUHlfREVDX1JFRlRPVEFMOwotICAgIF9QeV9Gb3JnZXRSZWZlcmVuY2UoKFB5T2JqZWN0ICopdW5pY29kZSk7Ci0gICAgUHlPYmplY3RfRGVsKHVuaWNvZGUpOwotICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMKLXZvaWQgdW5pY29kZV9kZWFsbG9jKHJlZ2lzdGVyIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZSkKK3N0YXRpYyBjb25zdCBjaGFyKgordW5pY29kZV9raW5kX25hbWUoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgLyogZG9uJ3QgY2hlY2sgY29uc2lzdGVuY3k6IHVuaWNvZGVfa2luZF9uYW1lKCkgaXMgY2FsbGVkIGZyb20KKyAgICAgICBfUHlVbmljb2RlX0R1bXAoKSAqLworICAgIGlmICghUHlVbmljb2RlX0lTX0NPTVBBQ1QodW5pY29kZSkpCisgICAgeworICAgICAgICBpZiAoIVB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSkKKyAgICAgICAgICAgIHJldHVybiAid3N0ciI7CisgICAgICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQodW5pY29kZSkpCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkodW5pY29kZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuICJsZWdhY3kgYXNjaWkiOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiAibGVnYWN5IGxhdGluMSI7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXR1cm4gImxlZ2FjeSBVQ1MyIjsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgICAgIHJldHVybiAibGVnYWN5IFVDUzQiOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuICI8bGVnYWN5IGludmFsaWQga2luZD4iOworICAgICAgICB9CisgICAgfQorICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQodW5pY29kZSkpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICAgICAgcmV0dXJuICJhc2NpaSI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiAibGF0aW4xIjsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXR1cm4gIlVDUzIiOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiAiVUNTNCI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuICI8aW52YWxpZCBjb21wYWN0IGtpbmQ+IjsKKyAgICB9Cit9CisKKyNpZmRlZiBQeV9ERUJVRworLyogRnVuY3Rpb25zIHdyYXBwaW5nIG1hY3JvcyBmb3IgdXNlIGluIGRlYnVnZ2VyICovCitjaGFyICpfUHlVbmljb2RlX3V0Zjgodm9pZCAqdW5pY29kZSl7CisgICAgcmV0dXJuIFB5VW5pY29kZV9VVEY4KHVuaWNvZGUpOworfQorCit2b2lkICpfUHlVbmljb2RlX2NvbXBhY3RfZGF0YSh2b2lkICp1bmljb2RlKSB7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQ09NUEFDVF9EQVRBKHVuaWNvZGUpOworfQordm9pZCAqX1B5VW5pY29kZV9kYXRhKHZvaWQgKnVuaWNvZGUpeworICAgIHByaW50Zigib2JqICVwXG4iLCB1bmljb2RlKTsKKyAgICBwcmludGYoImNvbXBhY3QgJWRcbiIsIFB5VW5pY29kZV9JU19DT01QQUNUKHVuaWNvZGUpKTsKKyAgICBwcmludGYoImNvbXBhY3QgYXNjaWkgJWRcbiIsIFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKHVuaWNvZGUpKTsKKyAgICBwcmludGYoImFzY2lpIG9wICVwXG4iLCAoKHZvaWQqKSgoUHlBU0NJSU9iamVjdCopKHVuaWNvZGUpICsgMSkpKTsKKyAgICBwcmludGYoImNvbXBhY3Qgb3AgJXBcbiIsICgodm9pZCopKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0KikodW5pY29kZSkgKyAxKSkpOworICAgIHByaW50ZigiY29tcGFjdCBkYXRhICVwXG4iLCBfUHlVbmljb2RlX0NPTVBBQ1RfREFUQSh1bmljb2RlKSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworfQorCit2b2lkCitfUHlVbmljb2RlX0R1bXAoUHlPYmplY3QgKm9wKQoreworICAgIFB5QVNDSUlPYmplY3QgKmFzY2lpID0gKFB5QVNDSUlPYmplY3QgKilvcDsKKyAgICBQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICpjb21wYWN0ID0gKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QgKilvcDsKKyAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGUgPSAoUHlVbmljb2RlT2JqZWN0ICopb3A7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGlmIChhc2NpaS0+c3RhdGUuY29tcGFjdCkKKyAgICB7CisgICAgICAgIGlmIChhc2NpaS0+c3RhdGUuYXNjaWkpCisgICAgICAgICAgICBkYXRhID0gKGFzY2lpICsgMSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRhdGEgPSAoY29tcGFjdCArIDEpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIGRhdGEgPSB1bmljb2RlLT5kYXRhLmFueTsKKyAgICBwcmludGYoIiVzOiBsZW49JXp1LCAiLHVuaWNvZGVfa2luZF9uYW1lKG9wKSwgYXNjaWktPmxlbmd0aCk7CisKKyAgICBpZiAoYXNjaWktPndzdHIgPT0gZGF0YSkKKyAgICAgICAgcHJpbnRmKCJzaGFyZWQgIik7CisgICAgcHJpbnRmKCJ3c3RyPSVwIiwgYXNjaWktPndzdHIpOworCisgICAgaWYgKCEoYXNjaWktPnN0YXRlLmFzY2lpID09IDEgJiYgYXNjaWktPnN0YXRlLmNvbXBhY3QgPT0gMSkpIHsKKyAgICAgICAgcHJpbnRmKCIgKCV6dSksICIsIGNvbXBhY3QtPndzdHJfbGVuZ3RoKTsKKyAgICAgICAgaWYgKCFhc2NpaS0+c3RhdGUuY29tcGFjdCAmJiBjb21wYWN0LT51dGY4ID09IHVuaWNvZGUtPmRhdGEuYW55KQorICAgICAgICAgICAgcHJpbnRmKCJzaGFyZWQgIik7CisgICAgICAgIHByaW50ZigidXRmOD0lcCAoJXp1KSIsIGNvbXBhY3QtPnV0ZjgsIGNvbXBhY3QtPnV0ZjhfbGVuZ3RoKTsKKyAgICB9CisgICAgcHJpbnRmKCIsIGRhdGE9JXBcbiIsIGRhdGEpOworfQorI2VuZGlmCisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9OZXcoUHlfc3NpemVfdCBzaXplLCBQeV9VQ1M0IG1heGNoYXIpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICp1bmljb2RlOworICAgIHZvaWQgKmRhdGE7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIGludCBpc19zaGFyaW5nLCBpc19hc2NpaTsKKyAgICBQeV9zc2l6ZV90IGNoYXJfc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHN0cnVjdF9zaXplOworCisgICAgLyogT3B0aW1pemF0aW9uIGZvciBlbXB0eSBzdHJpbmdzICovCisgICAgaWYgKHNpemUgPT0gMCAmJiB1bmljb2RlX2VtcHR5ICE9IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICB9CisKKyAgICBpc19hc2NpaSA9IDA7CisgICAgaXNfc2hhcmluZyA9IDA7CisgICAgc3RydWN0X3NpemUgPSBzaXplb2YoUHlDb21wYWN0VW5pY29kZU9iamVjdCk7CisgICAgaWYgKG1heGNoYXIgPCAxMjgpIHsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV8xQllURV9LSU5EOworICAgICAgICBjaGFyX3NpemUgPSAxOworICAgICAgICBpc19hc2NpaSA9IDE7CisgICAgICAgIHN0cnVjdF9zaXplID0gc2l6ZW9mKFB5QVNDSUlPYmplY3QpOworICAgIH0KKyAgICBlbHNlIGlmIChtYXhjaGFyIDwgMjU2KSB7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfMUJZVEVfS0lORDsKKyAgICAgICAgY2hhcl9zaXplID0gMTsKKyAgICB9CisgICAgZWxzZSBpZiAobWF4Y2hhciA8IDY1NTM2KSB7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfMkJZVEVfS0lORDsKKyAgICAgICAgY2hhcl9zaXplID0gMjsKKyAgICAgICAgaWYgKHNpemVvZih3Y2hhcl90KSA9PSAyKQorICAgICAgICAgICAgaXNfc2hhcmluZyA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAobWF4Y2hhciA+IE1BWF9VTklDT0RFKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbWF4aW11bSBjaGFyYWN0ZXIgcGFzc2VkIHRvIFB5VW5pY29kZV9OZXciKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfNEJZVEVfS0lORDsKKyAgICAgICAgY2hhcl9zaXplID0gNDsKKyAgICAgICAgaWYgKHNpemVvZih3Y2hhcl90KSA9PSA0KQorICAgICAgICAgICAgaXNfc2hhcmluZyA9IDE7CisgICAgfQorCisgICAgLyogRW5zdXJlIHdlIHdvbid0IG92ZXJmbG93IHRoZSBzaXplLiAqLworICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiTmVnYXRpdmUgc2l6ZSBwYXNzZWQgdG8gUHlVbmljb2RlX05ldyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHNpemUgPiAoKFBZX1NTSVpFX1RfTUFYIC0gc3RydWN0X3NpemUpIC8gY2hhcl9zaXplIC0gMSkpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworCisgICAgLyogRHVwbGljYXRlZCBhbGxvY2F0aW9uIGNvZGUgZnJvbSBfUHlPYmplY3RfTmV3KCkgaW5zdGVhZCBvZiBhIGNhbGwgdG8KKyAgICAgKiBQeU9iamVjdF9OZXcoKSBzbyB3ZSBhcmUgYWJsZSB0byBhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIG9iamVjdCBhbmQKKyAgICAgKiBpdCdzIGRhdGEgYnVmZmVyLgorICAgICAqLworICAgIG9iaiA9IChQeU9iamVjdCAqKSBQeU9iamVjdF9NQUxMT0Moc3RydWN0X3NpemUgKyAoc2l6ZSArIDEpICogY2hhcl9zaXplKTsKKyAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIG9iaiA9IFB5T2JqZWN0X0lOSVQob2JqLCAmUHlVbmljb2RlX1R5cGUpOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB1bmljb2RlID0gKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QgKilvYmo7CisgICAgaWYgKGlzX2FzY2lpKQorICAgICAgICBkYXRhID0gKChQeUFTQ0lJT2JqZWN0KilvYmopICsgMTsKKyAgICBlbHNlCisgICAgICAgIGRhdGEgPSB1bmljb2RlICsgMTsKKyAgICBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSA9IHNpemU7CisgICAgX1B5VW5pY29kZV9IQVNIKHVuaWNvZGUpID0gLTE7CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5pbnRlcm5lZCA9IDA7CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5raW5kID0ga2luZDsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmNvbXBhY3QgPSAxOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkucmVhZHkgPSAxOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuYXNjaWkgPSBpc19hc2NpaTsKKyAgICBpZiAoaXNfYXNjaWkpIHsKKyAgICAgICAgKChjaGFyKilkYXRhKVtzaXplXSA9IDA7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgKChjaGFyKilkYXRhKVtzaXplXSA9IDA7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IE5VTEw7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSAwOworICAgICAgICB1bmljb2RlLT51dGY4ID0gTlVMTDsKKyAgICAgICAgdW5pY29kZS0+dXRmOF9sZW5ndGggPSAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdW5pY29kZS0+dXRmOCA9IE5VTEw7CisgICAgICAgIHVuaWNvZGUtPnV0ZjhfbGVuZ3RoID0gMDsKKyAgICAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpCisgICAgICAgICAgICAoKFB5X1VDUzIqKWRhdGEpW3NpemVdID0gMDsKKyAgICAgICAgZWxzZSAvKiBraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EICovCisgICAgICAgICAgICAoKFB5X1VDUzQqKWRhdGEpW3NpemVdID0gMDsKKyAgICAgICAgaWYgKGlzX3NoYXJpbmcpIHsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSBzaXplOworICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gKHdjaGFyX3QgKilkYXRhOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBOVUxMOworICAgICAgICB9CisgICAgfQorI2lmZGVmIFB5X0RFQlVHCisgICAgLyogRmlsbCB0aGUgZGF0YSB3aXRoIGludmFsaWQgY2hhcmFjdGVycyB0byBkZXRlY3QgYnVncyBlYXJsaWVyLgorICAgICAgIF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShzdHIsIDEpIGRldGVjdHMgaW52YWxpZCBjaGFyYWN0ZXJzLAorICAgICAgIGF0IGxlYXN0IGZvciBBU0NJSSBhbmQgVUNTLTQgc3RyaW5ncy4gVSswMEZGIGlzIGludmFsaWQgaW4gQVNDSUkKKyAgICAgICBhbmQgVStGRkZGRkZGRiBpcyBhbiBpbnZhbGlkIGNoYXJhY3RlciBpbiBVbmljb2RlIDYuMC4gKi8KKyAgICBtZW1zZXQoZGF0YSwgMHhmZiwgc2l6ZSAqIGtpbmQpOworI2VuZGlmCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSgoUHlPYmplY3QqKXVuaWNvZGUsIDApKTsKKyAgICByZXR1cm4gb2JqOworfQorCisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorLyogSGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZlcnQgYSAxNi1iaXRzIHdjaGFyX3QgcmVwcmVzZW50YXRpb24gdG8gVUNTNCwgdGhpcworICAgd2lsbCBkZWNvZGUgc3Vycm9nYXRlIHBhaXJzLCB0aGUgb3RoZXIgY29udmVyc2lvbnMgYXJlIGltcGxlbWVudGVkIGFzIG1hY3JvcworICAgZm9yIGVmZmljaWVuY3kuCisKKyAgIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHVuaWNvZGUgY2FuIGhvbGQgb25lIG1vcmUgY29kZSBwb2ludCB0aGFuIHdzdHIKKyAgIGNoYXJhY3RlcnMgZm9yIGEgdGVybWluYXRpbmcgbnVsbCBjaGFyYWN0ZXIuICovCitzdGF0aWMgdm9pZAordW5pY29kZV9jb252ZXJ0X3djaGFyX3RvX3VjczQoY29uc3Qgd2NoYXJfdCAqYmVnaW4sIGNvbnN0IHdjaGFyX3QgKmVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIGNvbnN0IHdjaGFyX3QgKml0ZXI7CisgICAgUHlfVUNTNCAqdWNzNF9vdXQ7CisKKyAgICBhc3NlcnQodW5pY29kZSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyh1bmljb2RlKSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfS0lORCh1bmljb2RlKSA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7CisgICAgdWNzNF9vdXQgPSBQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKTsKKworICAgIGZvciAoaXRlciA9IGJlZ2luOyBpdGVyIDwgZW5kOyApIHsKKyAgICAgICAgYXNzZXJ0KHVjczRfb3V0IDwgKFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSkpOworICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShpdGVyWzBdKQorICAgICAgICAgICAgJiYgKGl0ZXIrMSkgPCBlbmQKKyAgICAgICAgICAgICYmIFB5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURShpdGVyWzFdKSkKKyAgICAgICAgeworICAgICAgICAgICAgKnVjczRfb3V0KysgPSBQeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUyhpdGVyWzBdLCBpdGVyWzFdKTsKKyAgICAgICAgICAgIGl0ZXIgKz0gMjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICp1Y3M0X291dCsrID0gKml0ZXI7CisgICAgICAgICAgICBpdGVyKys7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KHVjczRfb3V0ID09IChQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKSArCisgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpKTsKKworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQKK3VuaWNvZGVfY2hlY2tfbW9kaWZpYWJsZShQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICBpZiAoIXVuaWNvZGVfbW9kaWZpYWJsZSh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IG1vZGlmeSBhIHN0cmluZyBjdXJyZW50bHkgdXNlZCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitfY29weV9jaGFyYWN0ZXJzKFB5T2JqZWN0ICp0bywgUHlfc3NpemVfdCB0b19zdGFydCwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZyb20sIFB5X3NzaXplX3QgZnJvbV9zdGFydCwKKyAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBob3dfbWFueSwgaW50IGNoZWNrX21heGNoYXIpCit7CisgICAgdW5zaWduZWQgaW50IGZyb21fa2luZCwgdG9fa2luZDsKKyAgICB2b2lkICpmcm9tX2RhdGEsICp0b19kYXRhOworCisgICAgYXNzZXJ0KDAgPD0gaG93X21hbnkpOworICAgIGFzc2VydCgwIDw9IGZyb21fc3RhcnQpOworICAgIGFzc2VydCgwIDw9IHRvX3N0YXJ0KTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKGZyb20pKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKGZyb20pKTsKKyAgICBhc3NlcnQoZnJvbV9zdGFydCArIGhvd19tYW55IDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGZyb20pKTsKKworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2sodG8pKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHRvKSk7CisgICAgYXNzZXJ0KHRvX3N0YXJ0ICsgaG93X21hbnkgPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgodG8pKTsKKworICAgIGlmIChob3dfbWFueSA9PSAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZyb21fa2luZCA9IFB5VW5pY29kZV9LSU5EKGZyb20pOworICAgIGZyb21fZGF0YSA9IFB5VW5pY29kZV9EQVRBKGZyb20pOworICAgIHRvX2tpbmQgPSBQeVVuaWNvZGVfS0lORCh0byk7CisgICAgdG9fZGF0YSA9IFB5VW5pY29kZV9EQVRBKHRvKTsKKworI2lmZGVmIFB5X0RFQlVHCisgICAgaWYgKCFjaGVja19tYXhjaGFyCisgICAgICAgICYmIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShmcm9tKSA+IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh0bykpCisgICAgeworICAgICAgICBjb25zdCBQeV9VQ1M0IHRvX21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodG8pOworICAgICAgICBQeV9VQ1M0IGNoOworICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgIGZvciAoaT0wOyBpIDwgaG93X21hbnk7IGkrKykgeworICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChmcm9tX2tpbmQsIGZyb21fZGF0YSwgZnJvbV9zdGFydCArIGkpOworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IHRvX21heGNoYXIpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAoZnJvbV9raW5kID09IHRvX2tpbmQpIHsKKyAgICAgICAgaWYgKGNoZWNrX21heGNoYXIKKyAgICAgICAgICAgICYmICFQeVVuaWNvZGVfSVNfQVNDSUkoZnJvbSkgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHRvKSkKKyAgICAgICAgeworICAgICAgICAgICAgLyogV3JpdGluZyBMYXRpbi0xIGNoYXJhY3RlcnMgaW50byBhbiBBU0NJSSBzdHJpbmcgcmVxdWlyZXMgdG8KKyAgICAgICAgICAgICAgIGNoZWNrIHRoYXQgYWxsIHdyaXR0ZW4gY2hhcmFjdGVycyBhcmUgcHVyZSBBU0NJSSAqLworICAgICAgICAgICAgUHlfVUNTNCBtYXhfY2hhcjsKKyAgICAgICAgICAgIG1heF9jaGFyID0gdWNzMWxpYl9maW5kX21heF9jaGFyKGZyb21fZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9VQ1MxKilmcm9tX2RhdGEgKyBob3dfbWFueSk7CisgICAgICAgICAgICBpZiAobWF4X2NoYXIgPj0gMTI4KQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBQeV9NRU1DUFkoKGNoYXIqKXRvX2RhdGEgKyB0b19raW5kICogdG9fc3RhcnQsCisgICAgICAgICAgICAgICAgICAoY2hhciopZnJvbV9kYXRhICsgZnJvbV9raW5kICogZnJvbV9zdGFydCwKKyAgICAgICAgICAgICAgICAgIHRvX2tpbmQgKiBob3dfbWFueSk7CisgICAgfQorICAgIGVsc2UgaWYgKGZyb21fa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORAorICAgICAgICAgICAgICYmIHRvX2tpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpCisgICAgeworICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoCisgICAgICAgICAgICBQeV9VQ1MxLCBQeV9VQ1MyLAorICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0LAorICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0ICsgaG93X21hbnksCisgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQSh0bykgKyB0b19zdGFydAorICAgICAgICAgICAgKTsKKyAgICB9CisgICAgZWxzZSBpZiAoZnJvbV9raW5kID09IFB5VW5pY29kZV8xQllURV9LSU5ECisgICAgICAgICAgICAgJiYgdG9fa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCkKKyAgICB7CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUygKKyAgICAgICAgICAgIFB5X1VDUzEsIFB5X1VDUzQsCisgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQsCisgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQgKyBob3dfbWFueSwKKyAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBKHRvKSArIHRvX3N0YXJ0CisgICAgICAgICAgICApOworICAgIH0KKyAgICBlbHNlIGlmIChmcm9tX2tpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQKKyAgICAgICAgICAgICAmJiB0b19raW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKQorICAgIHsKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgUHlfVUNTMiwgUHlfVUNTNCwKKyAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCwKKyAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCArIGhvd19tYW55LAorICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEodG8pICsgdG9fc3RhcnQKKyAgICAgICAgICAgICk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQgKFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShmcm9tKSA+IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh0bykpOworCisgICAgICAgIGlmICghY2hlY2tfbWF4Y2hhcikgeworICAgICAgICAgICAgaWYgKGZyb21fa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORAorICAgICAgICAgICAgICAgICYmIHRvX2tpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgICAgICAgICBQeV9VQ1MyLCBQeV9VQ1MxLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQsCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCArIGhvd19tYW55LAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh0bykgKyB0b19zdGFydAorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoZnJvbV9raW5kID09IFB5VW5pY29kZV80QllURV9LSU5ECisgICAgICAgICAgICAgICAgICAgICAmJiB0b19raW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUygKKyAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCwgUHlfVUNTMSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQgKyBob3dfbWFueSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEodG8pICsgdG9fc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGZyb21fa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORAorICAgICAgICAgICAgICAgICAgICAgJiYgdG9fa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoCisgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQsIFB5X1VDUzIsCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0ICsgaG93X21hbnksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHRvKSArIHRvX3N0YXJ0CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29uc3QgUHlfVUNTNCB0b19tYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHRvKTsKKyAgICAgICAgICAgIFB5X1VDUzQgY2g7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisKKyAgICAgICAgICAgIGZvciAoaT0wOyBpIDwgaG93X21hbnk7IGkrKykgeworICAgICAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoZnJvbV9raW5kLCBmcm9tX2RhdGEsIGZyb21fc3RhcnQgKyBpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2ggPiB0b19tYXhjaGFyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHRvX2tpbmQsIHRvX2RhdGEsIHRvX3N0YXJ0ICsgaSwgY2gpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCit2b2lkCitfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycygKKyAgICBQeU9iamVjdCAqdG8sIFB5X3NzaXplX3QgdG9fc3RhcnQsCisgICAgUHlPYmplY3QgKmZyb20sIFB5X3NzaXplX3QgZnJvbV9zdGFydCwgUHlfc3NpemVfdCBob3dfbWFueSkKK3sKKyAgICAodm9pZClfY29weV9jaGFyYWN0ZXJzKHRvLCB0b19zdGFydCwgZnJvbSwgZnJvbV9zdGFydCwgaG93X21hbnksIDApOworfQorCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfQ29weUNoYXJhY3RlcnMoUHlPYmplY3QgKnRvLCBQeV9zc2l6ZV90IHRvX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tLCBQeV9zc2l6ZV90IGZyb21fc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBob3dfbWFueSkKK3sKKyAgICBpbnQgZXJyOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soZnJvbSkgfHwgIVB5VW5pY29kZV9DaGVjayh0bykpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGZyb20pID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh0bykgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChmcm9tX3N0YXJ0IDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInN0cmluZyBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAodG9fc3RhcnQgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAic3RyaW5nIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGhvd19tYW55ID0gUHlfTUlOKFB5VW5pY29kZV9HRVRfTEVOR1RIKGZyb20pLCBob3dfbWFueSk7CisgICAgaWYgKHRvX3N0YXJ0ICsgaG93X21hbnkgPiBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0bykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCB3cml0ZSAlemkgY2hhcmFjdGVycyBhdCAlemkgIgorICAgICAgICAgICAgICAgICAgICAgImluIGEgc3RyaW5nIG9mICV6aSBjaGFyYWN0ZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgIGhvd19tYW55LCB0b19zdGFydCwgUHlVbmljb2RlX0dFVF9MRU5HVEgodG8pKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChob3dfbWFueSA9PSAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICh1bmljb2RlX2NoZWNrX21vZGlmaWFibGUodG8pKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBlcnIgPSBfY29weV9jaGFyYWN0ZXJzKHRvLCB0b19zdGFydCwgZnJvbSwgZnJvbV9zdGFydCwgaG93X21hbnksIDEpOworICAgIGlmIChlcnIpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBjb3B5ICVzIGNoYXJhY3RlcnMgIgorICAgICAgICAgICAgICAgICAgICAgImludG8gYSBzdHJpbmcgb2YgJXMgY2hhcmFjdGVycyIsCisgICAgICAgICAgICAgICAgICAgICB1bmljb2RlX2tpbmRfbmFtZShmcm9tKSwKKyAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVfa2luZF9uYW1lKHRvKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIGhvd19tYW55OworfQorCisvKiBGaW5kIHRoZSBtYXhpbXVtIGNvZGUgcG9pbnQgYW5kIGNvdW50IHRoZSBudW1iZXIgb2Ygc3Vycm9nYXRlIHBhaXJzIHNvIGEKKyAgIGNvcnJlY3Qgc3RyaW5nIGxlbmd0aCBjYW4gYmUgY29tcHV0ZWQgYmVmb3JlIGNvbnZlcnRpbmcgYSBzdHJpbmcgdG8gVUNTNC4KKyAgIFRoaXMgZnVuY3Rpb24gY291bnRzIHNpbmdsZSBzdXJyb2dhdGVzIGFzIGEgY2hhcmFjdGVyIGFuZCBub3QgYXMgYSBwYWlyLgorCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCBvciAtMSBvbiBlcnJvci4gKi8KK3N0YXRpYyBpbnQKK2ZpbmRfbWF4Y2hhcl9zdXJyb2dhdGVzKGNvbnN0IHdjaGFyX3QgKmJlZ2luLCBjb25zdCB3Y2hhcl90ICplbmQsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0ICptYXhjaGFyLCBQeV9zc2l6ZV90ICpudW1fc3Vycm9nYXRlcykKK3sKKyAgICBjb25zdCB3Y2hhcl90ICppdGVyOworICAgIFB5X1VDUzQgY2g7CisKKyAgICBhc3NlcnQobnVtX3N1cnJvZ2F0ZXMgIT0gTlVMTCAmJiBtYXhjaGFyICE9IE5VTEwpOworICAgICpudW1fc3Vycm9nYXRlcyA9IDA7CisgICAgKm1heGNoYXIgPSAwOworCisgICAgZm9yIChpdGVyID0gYmVnaW47IGl0ZXIgPCBlbmQ7ICkgeworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNfSElHSF9TVVJST0dBVEUoaXRlclswXSkKKyAgICAgICAgICAgICYmIChpdGVyKzEpIDwgZW5kCisgICAgICAgICAgICAmJiBQeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUoaXRlclsxXSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNoID0gUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMoaXRlclswXSwgaXRlclsxXSk7CisgICAgICAgICAgICArKygqbnVtX3N1cnJvZ2F0ZXMpOworICAgICAgICAgICAgaXRlciArPSAyOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICB7CisgICAgICAgICAgICBjaCA9ICppdGVyOworICAgICAgICAgICAgaXRlcisrOworICAgICAgICB9CisgICAgICAgIGlmIChjaCA+ICptYXhjaGFyKSB7CisgICAgICAgICAgICAqbWF4Y2hhciA9IGNoOworICAgICAgICAgICAgaWYgKCptYXhjaGFyID4gTUFYX1VOSUNPREUpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlciBVKyV4IGlzIG5vdCBpbiByYW5nZSBbVSswMDAwOyBVKzEwZmZmZl0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCitpbnQKK19QeVVuaWNvZGVfUmVhZHkoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgd2NoYXJfdCAqZW5kOworICAgIFB5X1VDUzQgbWF4Y2hhciA9IDA7CisgICAgUHlfc3NpemVfdCBudW1fc3Vycm9nYXRlczsKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSAyCisgICAgUHlfc3NpemVfdCBsZW5ndGhfd29fc3Vycm9nYXRlczsKKyNlbmRpZgorCisgICAgLyogX1B5VW5pY29kZV9SZWFkeSgpIGlzIG9ubHkgaW50ZW5kZWQgZm9yIG9sZC1zdHlsZSBBUEkgdXNhZ2Ugd2hlcmUKKyAgICAgICBzdHJpbmdzIHdlcmUgY3JlYXRlZCB1c2luZyBfUHlPYmplY3RfTmV3KCkgYW5kIHdoZXJlIG5vIGNhbm9uaWNhbAorICAgICAgIHJlcHJlc2VudGF0aW9uICh0aGUgc3RyIGZpZWxkKSBoYXMgYmVlbiBzZXQgeWV0IGFrYSBzdHJpbmdzCisgICAgICAgd2hpY2ggYXJlIG5vdCB5ZXQgcmVhZHkuICovCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sodW5pY29kZSkpOworICAgIGFzc2VydChfUHlVbmljb2RlX0tJTkQodW5pY29kZSkgPT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpOworICAgIGFzc2VydChfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgIT0gTlVMTCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPT0gTlVMTCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9PSBOVUxMKTsKKyAgICAvKiBBY3R1YWxseSwgaXQgc2hvdWxkIG5laXRoZXIgYmUgaW50ZXJuZWQgbm9yIGJlIGFueXRoaW5nIGVsc2U6ICovCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuaW50ZXJuZWQgPT0gU1NUQVRFX05PVF9JTlRFUk5FRCk7CisKKyAgICBlbmQgPSBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgKyBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgIGlmIChmaW5kX21heGNoYXJfc3Vycm9nYXRlcyhfUHlVbmljb2RlX1dTVFIodW5pY29kZSksIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1heGNoYXIsICZudW1fc3Vycm9nYXRlcykgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChtYXhjaGFyIDwgMjU2KSB7CisgICAgICAgIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPSBQeU9iamVjdF9NQUxMT0MoX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSArIDEpOworICAgICAgICBpZiAoIV9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKHdjaGFyX3QsIHVuc2lnbmVkIGNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSwgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSk7CisgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpW19QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSldID0gJ1wwJzsKKyAgICAgICAgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgICAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmtpbmQgPSBQeVVuaWNvZGVfMUJZVEVfS0lORDsKKyAgICAgICAgaWYgKG1heGNoYXIgPCAxMjgpIHsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuYXNjaWkgPSAxOworICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKTsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5hc2NpaSA9IDA7CisgICAgICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBOVUxMOworICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgUHlPYmplY3RfRlJFRShfUHlVbmljb2RlX1dTVFIodW5pY29kZSkpOworICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyAgICB9CisgICAgLyogSW4gdGhpcyBjYXNlIHdlIG1pZ2h0IGhhdmUgdG8gY29udmVydCBkb3duIGZyb20gNC1ieXRlIG5hdGl2ZQorICAgICAgIHdjaGFyX3QgdG8gMi1ieXRlIHVuaWNvZGUuICovCisgICAgZWxzZSBpZiAobWF4Y2hhciA8IDY1NTM2KSB7CisgICAgICAgIGFzc2VydChudW1fc3Vycm9nYXRlcyA9PSAwICYmCisgICAgICAgICAgICAgICAiRmluZE1heENoYXJBbmROdW1TdXJyb2dhdGVQYWlycygpIG1lc3NlZCB1cCIpOworCisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgICAgICAvKiBXZSBjYW4gc2hhcmUgcmVwcmVzZW50YXRpb25zIGFuZCBhcmUgZG9uZS4gKi8KKyAgICAgICAgX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSA9IF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKTsKKyAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSlbX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKV0gPSAnXDAnOworICAgICAgICBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSA9IF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkua2luZCA9IFB5VW5pY29kZV8yQllURV9LSU5EOworICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyNlbHNlCisgICAgICAgIC8qIHNpemVvZih3Y2hhcl90KSA9PSA0ICovCisgICAgICAgIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPSBQeU9iamVjdF9NQUxMT0MoCisgICAgICAgICAgICAyICogKF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgKyAxKSk7CisgICAgICAgIGlmICghX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMod2NoYXJfdCwgUHlfVUNTMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpLCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpKTsKKyAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSlbX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKV0gPSAnXDAnOworICAgICAgICBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSA9IF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkua2luZCA9IFB5VW5pY29kZV8yQllURV9LSU5EOworICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyAgICAgICAgUHlPYmplY3RfRlJFRShfUHlVbmljb2RlX1dTVFIodW5pY29kZSkpOworICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyNlbmRpZgorICAgIH0KKyAgICAvKiBtYXhjaGFyIGV4ZWVkcyAxNiBiaXQsIHdlZSBuZWVkIDQgYnl0ZXMgZm9yIHVuaWNvZGUgY2hhcmFjdGVycyAqLworICAgIGVsc2UgeworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICAgICAgLyogaW4gY2FzZSB0aGUgbmF0aXZlIHJlcHJlc2VudGF0aW9uIGlzIDItYnl0ZXMsIHdlIG5lZWQgdG8gYWxsb2NhdGUgYQorICAgICAgICAgICBuZXcgbm9ybWFsaXplZCA0LWJ5dGUgdmVyc2lvbi4gKi8KKyAgICAgICAgbGVuZ3RoX3dvX3N1cnJvZ2F0ZXMgPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpIC0gbnVtX3N1cnJvZ2F0ZXM7CisgICAgICAgIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPSBQeU9iamVjdF9NQUxMT0MoNCAqIChsZW5ndGhfd29fc3Vycm9nYXRlcyArIDEpKTsKKyAgICAgICAgaWYgKCFfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpID0gbGVuZ3RoX3dvX3N1cnJvZ2F0ZXM7CisgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkua2luZCA9IFB5VW5pY29kZV80QllURV9LSU5EOworICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyAgICAgICAgLyogdW5pY29kZV9jb252ZXJ0X3djaGFyX3RvX3VjczQoKSByZXF1aXJlcyBhIHJlYWR5IHN0cmluZyAqLworICAgICAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLnJlYWR5ID0gMTsKKyAgICAgICAgdW5pY29kZV9jb252ZXJ0X3djaGFyX3RvX3VjczQoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpLCBlbmQsIHVuaWNvZGUpOworICAgICAgICBQeU9iamVjdF9GUkVFKF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSk7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IE5VTEw7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSAwOworI2Vsc2UKKyAgICAgICAgYXNzZXJ0KG51bV9zdXJyb2dhdGVzID09IDApOworCisgICAgICAgIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPSBfUHlVbmljb2RlX1dTVFIodW5pY29kZSk7CisgICAgICAgIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkua2luZCA9IFB5VW5pY29kZV80QllURV9LSU5EOworI2VuZGlmCisgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpW19QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpXSA9ICdcMCc7CisgICAgfQorICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkucmVhZHkgPSAxOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZSwgMSkpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAordW5pY29kZV9kZWFsbG9jKHJlZ2lzdGVyIFB5T2JqZWN0ICp1bmljb2RlKQogewogICAgIHN3aXRjaCAoUHlVbmljb2RlX0NIRUNLX0lOVEVSTkVEKHVuaWNvZGUpKSB7CiAgICAgY2FzZSBTU1RBVEVfTk9UX0lOVEVSTkVEOgpAQCAtNDA2LDcgKzE1MjYsNyBAQAogICAgIGNhc2UgU1NUQVRFX0lOVEVSTkVEX01PUlRBTDoKICAgICAgICAgLyogcmV2aXZlIGRlYWQgb2JqZWN0IHRlbXBvcmFyaWx5IGZvciBEZWxJdGVtICovCiAgICAgICAgIFB5X1JFRkNOVCh1bmljb2RlKSA9IDM7Ci0gICAgICAgIGlmIChQeURpY3RfRGVsSXRlbShpbnRlcm5lZCwgKFB5T2JqZWN0ICopdW5pY29kZSkgIT0gMCkKKyAgICAgICAgaWYgKFB5RGljdF9EZWxJdGVtKGludGVybmVkLCB1bmljb2RlKSAhPSAwKQogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigKICAgICAgICAgICAgICAgICAiZGVsZXRpb24gb2YgaW50ZXJuZWQgc3RyaW5nIGZhaWxlZCIpOwogICAgICAgICBicmVhazsKQEAgLTQxOCwxODggKzE1MzgsNzM2IEBACiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkluY29uc2lzdGVudCBpbnRlcm5lZCBzdHJpbmcgc3RhdGUuIik7CiAgICAgfQogCi0gICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHVuaWNvZGUpICYmCi0gICAgICAgIG51bWZyZWUgPCBQeVVuaWNvZGVfTUFYRlJFRUxJU1QpIHsKLSAgICAgICAgLyogS2VlcC1BbGl2ZSBvcHRpbWl6YXRpb24gKi8KLSAgICAgICAgaWYgKHVuaWNvZGUtPmxlbmd0aCA+PSBLRUVQQUxJVkVfU0laRV9MSU1JVCkgewotICAgICAgICAgICAgUHlPYmplY3RfREVMKHVuaWNvZGUtPnN0cik7Ci0gICAgICAgICAgICB1bmljb2RlLT5zdHIgPSBOVUxMOwotICAgICAgICAgICAgdW5pY29kZS0+bGVuZ3RoID0gMDsKLSAgICAgICAgfQotICAgICAgICBpZiAodW5pY29kZS0+ZGVmZW5jKSB7Ci0gICAgICAgICAgICBQeV9DTEVBUih1bmljb2RlLT5kZWZlbmMpOwotICAgICAgICB9Ci0gICAgICAgIC8qIEFkZCB0byBmcmVlIGxpc3QgKi8KLSAgICAgICAgKihQeVVuaWNvZGVPYmplY3QgKiopdW5pY29kZSA9IGZyZWVfbGlzdDsKLSAgICAgICAgZnJlZV9saXN0ID0gdW5pY29kZTsKLSAgICAgICAgbnVtZnJlZSsrOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3RfREVMKHVuaWNvZGUtPnN0cik7Ci0gICAgICAgIFB5X1hERUNSRUYodW5pY29kZS0+ZGVmZW5jKTsKLSAgICAgICAgUHlfVFlQRSh1bmljb2RlKS0+dHBfZnJlZSgoUHlPYmplY3QgKil1bmljb2RlKTsKLSAgICB9CisgICAgaWYgKF9QeVVuaWNvZGVfSEFTX1dTVFJfTUVNT1JZKHVuaWNvZGUpKQorICAgICAgICBQeU9iamVjdF9ERUwoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpKTsKKyAgICBpZiAoX1B5VW5pY29kZV9IQVNfVVRGOF9NRU1PUlkodW5pY29kZSkpCisgICAgICAgIFB5T2JqZWN0X0RFTChfUHlVbmljb2RlX1VURjgodW5pY29kZSkpOworICAgIGlmICghUHlVbmljb2RlX0lTX0NPTVBBQ1QodW5pY29kZSkgJiYgX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSkKKyAgICAgICAgUHlPYmplY3RfREVMKF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkpOworCisgICAgUHlfVFlQRSh1bmljb2RlKS0+dHBfZnJlZSh1bmljb2RlKTsKIH0KIAotc3RhdGljCi1pbnQgX1B5VW5pY29kZV9SZXNpemUoUHlVbmljb2RlT2JqZWN0ICoqdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgpCisjaWZkZWYgUHlfREVCVUcKK3N0YXRpYyBpbnQKK3VuaWNvZGVfaXNfc2luZ2xldG9uKFB5T2JqZWN0ICp1bmljb2RlKQogewotICAgIHJlZ2lzdGVyIFB5VW5pY29kZU9iamVjdCAqdjsKLQotICAgIC8qIEFyZ3VtZW50IGNoZWNrcyAqLwotICAgIGlmICh1bmljb2RlID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICBQeUFTQ0lJT2JqZWN0ICphc2NpaSA9IChQeUFTQ0lJT2JqZWN0ICopdW5pY29kZTsKKyAgICBpZiAodW5pY29kZSA9PSB1bmljb2RlX2VtcHR5KQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoYXNjaWktPnN0YXRlLmtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQgJiYgYXNjaWktPmxlbmd0aCA9PSAxKQorICAgIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIodW5pY29kZSwgMCk7CisgICAgICAgIGlmIChjaCA8IDI1NiAmJiB1bmljb2RlX2xhdGluMVtjaF0gPT0gdW5pY29kZSkKKyAgICAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICB2ID0gKnVuaWNvZGU7Ci0gICAgaWYgKHYgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHYpIHx8IFB5X1JFRkNOVCh2KSAhPSAxIHx8IGxlbmd0aCA8IDApIHsKLSAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKIAotICAgIC8qIFJlc2l6aW5nIHVuaWNvZGVfZW1wdHkgYW5kIHNpbmdsZSBjaGFyYWN0ZXIgb2JqZWN0cyBpcyBub3QKLSAgICAgICBwb3NzaWJsZSBzaW5jZSB0aGVzZSBhcmUgYmVpbmcgc2hhcmVkLiBXZSBzaW1wbHkgcmV0dXJuIGEgZnJlc2gKLSAgICAgICBjb3B5IHdpdGggdGhlIHNhbWUgVW5pY29kZSBjb250ZW50LiAqLwotICAgIGlmICh2LT5sZW5ndGggIT0gbGVuZ3RoICYmCi0gICAgICAgICh2ID09IHVuaWNvZGVfZW1wdHkgfHwgdi0+bGVuZ3RoID09IDEpKSB7Ci0gICAgICAgIFB5VW5pY29kZU9iamVjdCAqdyA9IF9QeVVuaWNvZGVfTmV3KGxlbmd0aCk7Ci0gICAgICAgIGlmICh3ID09IE5VTEwpCitzdGF0aWMgaW50Cit1bmljb2RlX21vZGlmaWFibGUoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sodW5pY29kZSkpOworICAgIGlmIChQeV9SRUZDTlQodW5pY29kZSkgIT0gMSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKF9QeVVuaWNvZGVfSEFTSCh1bmljb2RlKSAhPSAtMSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKFB5VW5pY29kZV9DSEVDS19JTlRFUk5FRCh1bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdCh1bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIDA7CisjaWZkZWYgUHlfREVCVUcKKyAgICAvKiBzaW5nbGV0b24gcmVmY291bnQgaXMgZ3JlYXRlciB0aGFuIDEgKi8KKyAgICBhc3NlcnQoIXVuaWNvZGVfaXNfc2luZ2xldG9uKHVuaWNvZGUpKTsKKyNlbmRpZgorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Cit1bmljb2RlX3Jlc2l6ZShQeU9iamVjdCAqKnBfdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgpCit7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgUHlfc3NpemVfdCBvbGRfbGVuZ3RoOworCisgICAgYXNzZXJ0KHBfdW5pY29kZSAhPSBOVUxMKTsKKyAgICB1bmljb2RlID0gKnBfdW5pY29kZTsKKworICAgIGFzc2VydCh1bmljb2RlICE9IE5VTEwpOworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpOworICAgIGFzc2VydCgwIDw9IGxlbmd0aCk7CisKKyAgICBpZiAoX1B5VW5pY29kZV9LSU5EKHVuaWNvZGUpID09IFB5VW5pY29kZV9XQ0hBUl9LSU5EKQorICAgICAgICBvbGRfbGVuZ3RoID0gUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgIGVsc2UKKyAgICAgICAgb2xkX2xlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGlmIChvbGRfbGVuZ3RoID09IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAobGVuZ3RoID09IDApIHsKKyAgICAgICAgX1B5X0lOQ1JFRl9VTklDT0RFX0VNUFRZKCk7CisgICAgICAgIGlmICghdW5pY29kZV9lbXB0eSkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHctPnN0ciwgdi0+c3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoIDwgdi0+bGVuZ3RoID8gbGVuZ3RoIDogdi0+bGVuZ3RoKTsKLSAgICAgICAgUHlfREVDUkVGKCp1bmljb2RlKTsKLSAgICAgICAgKnVuaWNvZGUgPSB3OworICAgICAgICBQeV9ERUNSRUYoKnBfdW5pY29kZSk7CisgICAgICAgICpwX3VuaWNvZGUgPSB1bmljb2RlX2VtcHR5OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICAvKiBOb3RlIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBtb2RpZnkgKnVuaWNvZGUgZm9yIHVuc2hhcmVkIFVuaWNvZGUKLSAgICAgICBvYmplY3RzLCBzaW5jZSB3ZSBjYW4gbW9kaWZ5IHRoZW0gaW4tcGxhY2UuICovCi0gICAgcmV0dXJuIHVuaWNvZGVfcmVzaXplKHYsIGxlbmd0aCk7CisgICAgaWYgKCF1bmljb2RlX21vZGlmaWFibGUodW5pY29kZSkpIHsKKyAgICAgICAgUHlPYmplY3QgKmNvcHkgPSByZXNpemVfY29weSh1bmljb2RlLCBsZW5ndGgpOworICAgICAgICBpZiAoY29weSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBQeV9ERUNSRUYoKnBfdW5pY29kZSk7CisgICAgICAgICpwX3VuaWNvZGUgPSBjb3B5OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX0lTX0NPTVBBQ1QodW5pY29kZSkpIHsKKyAgICAgICAgUHlPYmplY3QgKm5ld191bmljb2RlID0gcmVzaXplX2NvbXBhY3QodW5pY29kZSwgbGVuZ3RoKTsKKyAgICAgICAgaWYgKG5ld191bmljb2RlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICpwX3VuaWNvZGUgPSBuZXdfdW5pY29kZTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXNpemVfaW5wbGFjZSh1bmljb2RlLCBsZW5ndGgpOwogfQogCi1pbnQgUHlVbmljb2RlX1Jlc2l6ZShQeU9iamVjdCAqKnVuaWNvZGUsIFB5X3NzaXplX3QgbGVuZ3RoKQoraW50CitQeVVuaWNvZGVfUmVzaXplKFB5T2JqZWN0ICoqcF91bmljb2RlLCBQeV9zc2l6ZV90IGxlbmd0aCkKIHsKLSAgICByZXR1cm4gX1B5VW5pY29kZV9SZXNpemUoKFB5VW5pY29kZU9iamVjdCAqKil1bmljb2RlLCBsZW5ndGgpOworICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgIGlmIChwX3VuaWNvZGUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICB1bmljb2RlID0gKnBfdW5pY29kZTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkgfHwgbGVuZ3RoIDwgMCkKKyAgICB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiB1bmljb2RlX3Jlc2l6ZShwX3VuaWNvZGUsIGxlbmd0aCk7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbVVuaWNvZGUoY29uc3QgUHlfVU5JQ09ERSAqdSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQorc3RhdGljIGludAordW5pY29kZV93aWRlbihQeU9iamVjdCAqKnBfdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgsCisgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtYXhjaGFyKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkoKnBfdW5pY29kZSkpOworICAgIGFzc2VydChsZW5ndGggPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgoKnBfdW5pY29kZSkpOworICAgIGlmIChtYXhjaGFyIDw9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSgqcF91bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX05ldyhQeVVuaWNvZGVfR0VUX0xFTkdUSCgqcF91bmljb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNoYXIpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHJlc3VsdCwgMCwgKnBfdW5pY29kZSwgMCwgbGVuZ3RoKTsKKyAgICBQeV9ERUNSRUYoKnBfdW5pY29kZSk7CisgICAgKnBfdW5pY29kZSA9IHJlc3VsdDsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAordW5pY29kZV9wdXRjaGFyKFB5T2JqZWN0ICoqcF91bmljb2RlLCBQeV9zc2l6ZV90ICpwb3MsCisgICAgICAgICAgICAgICAgUHlfVUNTNCBjaCkKK3sKKyAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOworICAgIGlmICh1bmljb2RlX3dpZGVuKHBfdW5pY29kZSwgKnBvcywgY2gpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfS0lORCgqcF91bmljb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEoKnBfdW5pY29kZSksCisgICAgICAgICAgICAgICAgICAgICgqcG9zKSsrLCBjaCk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIENvcHkgYSBBU0NJSSBvciBsYXRpbjEgY2hhciogc3RyaW5nIGludG8gYSBQeXRob24gVW5pY29kZSBzdHJpbmcuCisKKyAgIFdBUk5JTkc6IFRoZSBmdW5jdGlvbiBkb2Vzbid0IGNvcHkgdGhlIHRlcm1pbmF0aW5nIG51bGwgY2hhcmFjdGVyIGFuZAorICAgZG9lc24ndCBjaGVjayB0aGUgbWF4aW11bSBjaGFyYWN0ZXIgKG1heSB3cml0ZSBhIGxhdGluMSBjaGFyYWN0ZXIgaW4gYW4KKyAgIEFTQ0lJIHN0cmluZykuICovCitzdGF0aWMgdm9pZAordW5pY29kZV93cml0ZV9jc3RyKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IGluZGV4LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4pCit7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgIGNvbnN0IGNoYXIgKmVuZCA9IHN0ciArIGxlbjsKKworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6IHsKKyAgICAgICAgYXNzZXJ0KGluZGV4ICsgbGVuIDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKyAgICAgICAgbWVtY3B5KChjaGFyICopIGRhdGEgKyBpbmRleCwgc3RyLCBsZW4pOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDogeworICAgICAgICBQeV9VQ1MyICpzdGFydCA9IChQeV9VQ1MyICopZGF0YSArIGluZGV4OworICAgICAgICBQeV9VQ1MyICp1Y3MyID0gc3RhcnQ7CisgICAgICAgIGFzc2VydChpbmRleCA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisKKyAgICAgICAgZm9yICg7IHN0ciA8IGVuZDsgKyt1Y3MyLCArK3N0cikKKyAgICAgICAgICAgICp1Y3MyID0gKFB5X1VDUzIpKnN0cjsKKworICAgICAgICBhc3NlcnQoKHVjczIgLSBzdGFydCkgPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDogeworICAgICAgICBQeV9VQ1M0ICpzdGFydCA9IChQeV9VQ1M0ICopZGF0YSArIGluZGV4OworICAgICAgICBQeV9VQ1M0ICp1Y3M0ID0gc3RhcnQ7CisgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgYXNzZXJ0KGluZGV4IDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKworICAgICAgICBmb3IgKDsgc3RyIDwgZW5kOyArK3VjczQsICsrc3RyKQorICAgICAgICAgICAgKnVjczQgPSAoUHlfVUNTNCkqc3RyOworCisgICAgICAgIGFzc2VydCgodWNzNCAtIHN0YXJ0KSA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisgICAgfQorICAgIH0KK30KKworCitzdGF0aWMgUHlPYmplY3QqCitnZXRfbGF0aW4xX2NoYXIodW5zaWduZWQgY2hhciBjaCkKK3sKKyAgICBQeU9iamVjdCAqdW5pY29kZSA9IHVuaWNvZGVfbGF0aW4xW2NoXTsKKyAgICBpZiAoIXVuaWNvZGUpIHsKKyAgICAgICAgdW5pY29kZSA9IFB5VW5pY29kZV9OZXcoMSwgY2gpOworICAgICAgICBpZiAoIXVuaWNvZGUpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSlbMF0gPSBjaDsKKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAxKSk7CisgICAgICAgIHVuaWNvZGVfbGF0aW4xW2NoXSA9IHVuaWNvZGU7CisgICAgfQorICAgIFB5X0lOQ1JFRih1bmljb2RlKTsKKyAgICByZXR1cm4gdW5pY29kZTsKK30KKworUHlPYmplY3QgKgorUHlVbmljb2RlX0Zyb21Vbmljb2RlKGNvbnN0IFB5X1VOSUNPREUgKnUsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqdW5pY29kZTsKKyAgICBQeV9VQ1M0IG1heGNoYXIgPSAwOworICAgIFB5X3NzaXplX3QgbnVtX3N1cnJvZ2F0ZXM7CisKKyAgICBpZiAodSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gKFB5T2JqZWN0KilfUHlVbmljb2RlX05ldyhzaXplKTsKIAogICAgIC8qIElmIHRoZSBVbmljb2RlIGRhdGEgaXMga25vd24gYXQgY29uc3RydWN0aW9uIHRpbWUsIHdlIGNhbiBhcHBseQogICAgICAgIHNvbWUgb3B0aW1pemF0aW9ucyB3aGljaCBzaGFyZSBjb21tb25seSB1c2VkIG9iamVjdHMuICovCi0gICAgaWYgKHUgIT0gTlVMTCkgewogCi0gICAgICAgIC8qIE9wdGltaXphdGlvbiBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICAgICAgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCk7CisgICAgLyogT3B0aW1pemF0aW9uIGZvciBlbXB0eSBzdHJpbmdzICovCisgICAgaWYgKHNpemUgPT0gMCkKKyAgICAgICAgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCk7CiAKLSAgICAgICAgLyogU2luZ2xlIGNoYXJhY3RlciBVbmljb2RlIG9iamVjdHMgaW4gdGhlIExhdGluLTEgcmFuZ2UgYXJlCi0gICAgICAgICAgIHNoYXJlZCB3aGVuIHVzaW5nIHRoaXMgY29uc3RydWN0b3IgKi8KLSAgICAgICAgaWYgKHNpemUgPT0gMSAmJiAqdSA8IDI1NikgewotICAgICAgICAgICAgdW5pY29kZSA9IHVuaWNvZGVfbGF0aW4xWyp1XTsKLSAgICAgICAgICAgIGlmICghdW5pY29kZSkgewotICAgICAgICAgICAgICAgIHVuaWNvZGUgPSBfUHlVbmljb2RlX05ldygxKTsKLSAgICAgICAgICAgICAgICBpZiAoIXVuaWNvZGUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIHVuaWNvZGUtPnN0clswXSA9ICp1OwotICAgICAgICAgICAgICAgIHVuaWNvZGVfbGF0aW4xWyp1XSA9IHVuaWNvZGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZSk7Ci0gICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKLSAgICAgICAgfQotICAgIH0KKyAgICAvKiBTaW5nbGUgY2hhcmFjdGVyIFVuaWNvZGUgb2JqZWN0cyBpbiB0aGUgTGF0aW4tMSByYW5nZSBhcmUKKyAgICAgICBzaGFyZWQgd2hlbiB1c2luZyB0aGlzIGNvbnN0cnVjdG9yICovCisgICAgaWYgKHNpemUgPT0gMSAmJiAoUHlfVUNTNCkqdSA8IDI1NikKKyAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcigodW5zaWduZWQgY2hhcikqdSk7CiAKLSAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7CisgICAgLyogSWYgbm90IGVtcHR5IGFuZCBub3Qgc2luZ2xlIGNoYXJhY3RlciwgY29weSB0aGUgVW5pY29kZSBkYXRhCisgICAgICAgaW50byB0aGUgbmV3IG9iamVjdCAqLworICAgIGlmIChmaW5kX21heGNoYXJfc3Vycm9nYXRlcyh1LCB1ICsgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1heGNoYXIsICZudW1fc3Vycm9nYXRlcykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgdW5pY29kZSA9IFB5VW5pY29kZV9OZXcoc2l6ZSAtIG51bV9zdXJyb2dhdGVzLCBtYXhjaGFyKTsKICAgICBpZiAoIXVuaWNvZGUpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgLyogQ29weSB0aGUgVW5pY29kZSBkYXRhIGludG8gdGhlIG5ldyBvYmplY3QgKi8KLSAgICBpZiAodSAhPSBOVUxMKQotICAgICAgICBQeV9VTklDT0RFX0NPUFkodW5pY29kZS0+c3RyLCB1LCBzaXplKTsKKyAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKFB5X1VOSUNPREUsIHVuc2lnbmVkIGNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUsIHUgKyBzaXplLCBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisjaWYgUHlfVU5JQ09ERV9TSVpFID09IDIKKyAgICAgICAgUHlfTUVNQ1BZKFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpLCB1LCBzaXplICogMik7CisjZWxzZQorICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVU5JQ09ERSwgUHlfVUNTMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSwgdSArIHNpemUsIFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpKTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICAgICAgLyogVGhpcyBpcyB0aGUgb25seSBjYXNlIHdoaWNoIGhhcyB0byBwcm9jZXNzIHN1cnJvZ2F0ZXMsIHRodXMKKyAgICAgICAgICAgYSBzaW1wbGUgY29weSBsb29wIGlzIG5vdCBlbm91Z2ggYW5kIHdlIG5lZWQgYSBmdW5jdGlvbi4gKi8KKyAgICAgICAgdW5pY29kZV9jb252ZXJ0X3djaGFyX3RvX3VjczQodSwgdSArIHNpemUsIHVuaWNvZGUpOworI2Vsc2UKKyAgICAgICAgYXNzZXJ0KG51bV9zdXJyb2dhdGVzID09IDApOworICAgICAgICBQeV9NRU1DUFkoUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSksIHUsIHNpemUgKiA0KTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCAmJiAiSW1wb3NzaWJsZSBzdGF0ZSIpOworICAgIH0KIAotICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh1bmljb2RlKTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShjb25zdCBjaGFyICp1LCBQeV9zc2l6ZV90IHNpemUpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoY29uc3QgY2hhciAqdSwgUHlfc3NpemVfdCBzaXplKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKLQogICAgIGlmIChzaXplIDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiTmVnYXRpdmUgc2l6ZSBwYXNzZWQgdG8gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIC8qIElmIHRoZSBVbmljb2RlIGRhdGEgaXMga25vd24gYXQgY29uc3RydWN0aW9uIHRpbWUsIHdlIGNhbiBhcHBseQotICAgICAgIHNvbWUgb3B0aW1pemF0aW9ucyB3aGljaCBzaGFyZSBjb21tb25seSB1c2VkIG9iamVjdHMuCi0gICAgICAgQWxzbywgdGhpcyBtZWFucyB0aGUgaW5wdXQgbXVzdCBiZSBVVEYtOCwgc28gZmFsbCBiYWNrIHRvIHRoZQotICAgICAgIFVURi04IGRlY29kZXIgYXQgdGhlIGVuZC4gKi8KLSAgICBpZiAodSAhPSBOVUxMKSB7Ci0KLSAgICAgICAgLyogT3B0aW1pemF0aW9uIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgICAgIGlmIChzaXplID09IDApCi0gICAgICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKLQotICAgICAgICAvKiBTaW5nbGUgY2hhcmFjdGVycyBhcmUgc2hhcmVkIHdoZW4gdXNpbmcgdGhpcyBjb25zdHJ1Y3Rvci4KLSAgICAgICAgICAgUmVzdHJpY3QgdG8gQVNDSUksIHNpbmNlIHRoZSBpbnB1dCBtdXN0IGJlIFVURi04LiAqLwotICAgICAgICBpZiAoc2l6ZSA9PSAxICYmIFB5X0NIQVJNQVNLKCp1KSA8IDEyOCkgewotICAgICAgICAgICAgdW5pY29kZSA9IHVuaWNvZGVfbGF0aW4xW1B5X0NIQVJNQVNLKCp1KV07Ci0gICAgICAgICAgICBpZiAoIXVuaWNvZGUpIHsKLSAgICAgICAgICAgICAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoMSk7Ci0gICAgICAgICAgICAgICAgaWYgKCF1bmljb2RlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB1bmljb2RlLT5zdHJbMF0gPSBQeV9DSEFSTUFTSygqdSk7Ci0gICAgICAgICAgICAgICAgdW5pY29kZV9sYXRpbjFbUHlfQ0hBUk1BU0soKnUpXSA9IHVuaWNvZGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZSk7Ci0gICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOCh1LCBzaXplLCBOVUxMKTsKLSAgICB9Ci0KLSAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7Ci0gICAgaWYgKCF1bmljb2RlKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgIGlmICh1ICE9IE5VTEwpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHUsIHNpemUsIE5VTEwsIE5VTEwpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKV9QeVVuaWNvZGVfTmV3KHNpemUpOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0Zyb21TdHJpbmcoY29uc3QgY2hhciAqdSkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Gcm9tU3RyaW5nKGNvbnN0IGNoYXIgKnUpCiB7CiAgICAgc2l6ZV90IHNpemUgPSBzdHJsZW4odSk7CiAgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgImlucHV0IHRvbyBsb25nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bCh1LCAoUHlfc3NpemVfdClzaXplLCBOVUxMLCBOVUxMKTsKK30KIAotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUodSwgc2l6ZSk7CitQeU9iamVjdCAqCitfUHlVbmljb2RlX0Zyb21JZChfUHlfSWRlbnRpZmllciAqaWQpCit7CisgICAgaWYgKCFpZC0+b2JqZWN0KSB7CisgICAgICAgIGlkLT5vYmplY3QgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKGlkLT5zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihpZC0+c3RyaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghaWQtPm9iamVjdCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZSgmaWQtPm9iamVjdCk7CisgICAgICAgIGFzc2VydCghaWQtPm5leHQpOworICAgICAgICBpZC0+bmV4dCA9IHN0YXRpY19zdHJpbmdzOworICAgICAgICBzdGF0aWNfc3RyaW5ncyA9IGlkOworICAgIH0KKyAgICByZXR1cm4gaWQtPm9iamVjdDsKK30KKwordm9pZAorX1B5VW5pY29kZV9DbGVhclN0YXRpY1N0cmluZ3MoKQoreworICAgIF9QeV9JZGVudGlmaWVyICp0bXAsICpzID0gc3RhdGljX3N0cmluZ3M7CisgICAgd2hpbGUgKHMpIHsKKyAgICAgICAgUHlfREVDUkVGKHMtPm9iamVjdCk7CisgICAgICAgIHMtPm9iamVjdCA9IE5VTEw7CisgICAgICAgIHRtcCA9IHMtPm5leHQ7CisgICAgICAgIHMtPm5leHQgPSBOVUxMOworICAgICAgICBzID0gdG1wOworICAgIH0KKyAgICBzdGF0aWNfc3RyaW5ncyA9IE5VTEw7Cit9CisKKy8qIEludGVybmFsIGZ1bmN0aW9uLCBkb2Vzbid0IGNoZWNrIG1heGltdW0gY2hhcmFjdGVyICovCisKK1B5T2JqZWN0KgorX1B5VW5pY29kZV9Gcm9tQVNDSUkoY29uc3QgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcyA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopYnVmZmVyOworICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgIGlmIChzaXplID09IDEpIHsKKyNpZmRlZiBQeV9ERUJVRworICAgICAgICBhc3NlcnQoKHVuc2lnbmVkIGNoYXIpc1swXSA8IDEyOCk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcihzWzBdKTsKKyAgICB9CisgICAgdW5pY29kZSA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgMTI3KTsKKyAgICBpZiAoIXVuaWNvZGUpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG1lbWNweShQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSwgcywgc2l6ZSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAxKSk7CisgICAgcmV0dXJuIHVuaWNvZGU7Cit9CisKK3N0YXRpYyBQeV9VQ1M0CitraW5kX21heGNoYXJfbGltaXQodW5zaWduZWQgaW50IGtpbmQpCit7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIDB4ODA7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIDB4MTAwOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiAweDEwMDAwOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwICYmICJpbnZhbGlkIGtpbmQiKTsKKyAgICAgICAgcmV0dXJuIE1BWF9VTklDT0RFOworICAgIH0KK30KKworUHlfTE9DQUxfSU5MSU5FKFB5X1VDUzQpCithbGlnbl9tYXhjaGFyKFB5X1VDUzQgbWF4Y2hhcikKK3sKKyAgICBpZiAobWF4Y2hhciA8PSAxMjcpCisgICAgICAgIHJldHVybiAxMjc7CisgICAgZWxzZSBpZiAobWF4Y2hhciA8PSAyNTUpCisgICAgICAgIHJldHVybiAyNTU7CisgICAgZWxzZSBpZiAobWF4Y2hhciA8PSA2NTUzNSkKKyAgICAgICAgcmV0dXJuIDY1NTM1OworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIE1BWF9VTklDT0RFOworfQorCitzdGF0aWMgUHlPYmplY3QqCitfUHlVbmljb2RlX0Zyb21VQ1MxKGNvbnN0IFB5X1VDUzEqIHUsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIHVuc2lnbmVkIGNoYXIgbWF4X2NoYXI7CisKKyAgICBpZiAoc2l6ZSA9PSAwKQorICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKKyAgICBhc3NlcnQoc2l6ZSA+IDApOworICAgIGlmIChzaXplID09IDEpCisgICAgICAgIHJldHVybiBnZXRfbGF0aW4xX2NoYXIodVswXSk7CisKKyAgICBtYXhfY2hhciA9IHVjczFsaWJfZmluZF9tYXhfY2hhcih1LCB1ICsgc2l6ZSk7CisgICAgcmVzID0gUHlVbmljb2RlX05ldyhzaXplLCBtYXhfY2hhcik7CisgICAgaWYgKCFyZXMpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG1lbWNweShQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpLCB1LCBzaXplKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK19QeVVuaWNvZGVfRnJvbVVDUzIoY29uc3QgUHlfVUNTMiAqdSwgUHlfc3NpemVfdCBzaXplKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlfVUNTMiBtYXhfY2hhcjsKKworICAgIGlmIChzaXplID09IDApCisgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOworICAgIGFzc2VydChzaXplID4gMCk7CisgICAgaWYgKHNpemUgPT0gMSkgeworICAgICAgICBQeV9VQ1M0IGNoID0gdVswXTsKKyAgICAgICAgaWYgKGNoIDwgMjU2KQorICAgICAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcigodW5zaWduZWQgY2hhciljaCk7CisKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX05ldygxLCBjaCk7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlX0tJTkQocmVzKSwgUHlVbmljb2RlX0RBVEEocmVzKSwgMCwgY2gpOworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKworICAgIG1heF9jaGFyID0gdWNzMmxpYl9maW5kX21heF9jaGFyKHUsIHUgKyBzaXplKTsKKyAgICByZXMgPSBQeVVuaWNvZGVfTmV3KHNpemUsIG1heF9jaGFyKTsKKyAgICBpZiAoIXJlcykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKG1heF9jaGFyID49IDI1NikKKyAgICAgICAgbWVtY3B5KFB5VW5pY29kZV8yQllURV9EQVRBKHJlcyksIHUsIHNpemVvZihQeV9VQ1MyKSpzaXplKTsKKyAgICBlbHNlIHsKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgUHlfVUNTMiwgUHlfVUNTMSwgdSwgdSArIHNpemUsIFB5VW5pY29kZV8xQllURV9EQVRBKHJlcykpOworICAgIH0KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK19QeVVuaWNvZGVfRnJvbVVDUzQoY29uc3QgUHlfVUNTNCAqdSwgUHlfc3NpemVfdCBzaXplKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlfVUNTNCBtYXhfY2hhcjsKKworICAgIGlmIChzaXplID09IDApCisgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOworICAgIGFzc2VydChzaXplID4gMCk7CisgICAgaWYgKHNpemUgPT0gMSkgeworICAgICAgICBQeV9VQ1M0IGNoID0gdVswXTsKKyAgICAgICAgaWYgKGNoIDwgMjU2KQorICAgICAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcigodW5zaWduZWQgY2hhciljaCk7CisKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX05ldygxLCBjaCk7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlX0tJTkQocmVzKSwgUHlVbmljb2RlX0RBVEEocmVzKSwgMCwgY2gpOworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKworICAgIG1heF9jaGFyID0gdWNzNGxpYl9maW5kX21heF9jaGFyKHUsIHUgKyBzaXplKTsKKyAgICByZXMgPSBQeVVuaWNvZGVfTmV3KHNpemUsIG1heF9jaGFyKTsKKyAgICBpZiAoIXJlcykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKG1heF9jaGFyIDwgMjU2KQorICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVUNTNCwgUHlfVUNTMSwgdSwgdSArIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpKTsKKyAgICBlbHNlIGlmIChtYXhfY2hhciA8IDB4MTAwMDApCisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VQ1M0LCBQeV9VQ1MyLCB1LCB1ICsgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHJlcykpOworICAgIGVsc2UKKyAgICAgICAgbWVtY3B5KFB5VW5pY29kZV80QllURV9EQVRBKHJlcyksIHUsIHNpemVvZihQeV9VQ1M0KSpzaXplKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgIHJldHVybiByZXM7Cit9CisKK1B5T2JqZWN0KgorUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShpbnQga2luZCwgY29uc3Qgdm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAic2l6ZSBtdXN0IGJlIHBvc2l0aXZlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Gcm9tVUNTMShidWZmZXIsIHNpemUpOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0Zyb21VQ1MyKGJ1ZmZlciwgc2l6ZSk7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRnJvbVVDUzQoYnVmZmVyLCBzaXplKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJpbnZhbGlkIGtpbmQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCitQeV9VQ1M0CitfUHlVbmljb2RlX0ZpbmRNYXhDaGFyKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgdm9pZCAqc3RhcnRwdHIsICplbmRwdHI7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoMCA8PSBzdGFydCk7CisgICAgYXNzZXJ0KGVuZCA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisgICAgYXNzZXJ0KHN0YXJ0IDw9IGVuZCk7CisKKyAgICBpZiAoc3RhcnQgPT0gMCAmJiBlbmQgPT0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodW5pY29kZSk7CisKKyAgICBpZiAoc3RhcnQgPT0gZW5kKQorICAgICAgICByZXR1cm4gMTI3OworCisgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIDEyNzsKKworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBzdGFydHB0ciA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgIGVuZHB0ciA9IChjaGFyICopc3RhcnRwdHIgKyBlbmQgKiBraW5kOworICAgIHN0YXJ0cHRyID0gKGNoYXIgKilzdGFydHB0ciArIHN0YXJ0ICoga2luZDsKKyAgICBzd2l0Y2goa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiB1Y3MxbGliX2ZpbmRfbWF4X2NoYXIoc3RhcnRwdHIsIGVuZHB0cik7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczJsaWJfZmluZF9tYXhfY2hhcihzdGFydHB0ciwgZW5kcHRyKTsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzNGxpYl9maW5kX21heF9jaGFyKHN0YXJ0cHRyLCBlbmRwdHIpOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCisvKiBFbnN1cmUgdGhhdCBhIHN0cmluZyB1c2VzIHRoZSBtb3N0IGVmZmljaWVudCBzdG9yYWdlLCBpZiBpdCBpcyBub3QgdGhlCisgICBjYXNlOiBjcmVhdGUgYSBuZXcgc3RyaW5nIHdpdGggb2YgdGhlIHJpZ2h0IGtpbmQuIFdyaXRlIE5VTEwgaW50byAqcF91bmljb2RlCisgICBvbiBlcnJvci4gKi8KK3N0YXRpYyB2b2lkCit1bmljb2RlX2FkanVzdF9tYXhjaGFyKFB5T2JqZWN0ICoqcF91bmljb2RlKQoreworICAgIFB5T2JqZWN0ICp1bmljb2RlLCAqY29weTsKKyAgICBQeV9VQ1M0IG1heF9jaGFyOworICAgIFB5X3NzaXplX3QgbGVuOworICAgIHVuc2lnbmVkIGludCBraW5kOworCisgICAgYXNzZXJ0KHBfdW5pY29kZSAhPSBOVUxMKTsKKyAgICB1bmljb2RlID0gKnBfdW5pY29kZTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKKyAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICByZXR1cm47CisKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgY29uc3QgUHlfVUNTMSAqdSA9IFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpOworICAgICAgICBtYXhfY2hhciA9IHVjczFsaWJfZmluZF9tYXhfY2hhcih1LCB1ICsgbGVuKTsKKyAgICAgICAgaWYgKG1heF9jaGFyID49IDEyOCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICBjb25zdCBQeV9VQ1MyICp1ID0gUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSk7CisgICAgICAgIG1heF9jaGFyID0gdWNzMmxpYl9maW5kX21heF9jaGFyKHUsIHUgKyBsZW4pOworICAgICAgICBpZiAobWF4X2NoYXIgPj0gMjU2KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCAqdSA9IFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpOworICAgICAgICBhc3NlcnQoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7CisgICAgICAgIG1heF9jaGFyID0gdWNzNGxpYl9maW5kX21heF9jaGFyKHUsIHUgKyBsZW4pOworICAgICAgICBpZiAobWF4X2NoYXIgPj0gMHgxMDAwMCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29weSA9IFB5VW5pY29kZV9OZXcobGVuLCBtYXhfY2hhcik7CisgICAgaWYgKGNvcHkgIT0gTlVMTCkKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoY29weSwgMCwgdW5pY29kZSwgMCwgbGVuKTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgKnBfdW5pY29kZSA9IGNvcHk7Cit9CisKK1B5T2JqZWN0KgorX1B5VW5pY29kZV9Db3B5KFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIFB5X3NzaXplX3QgbGVuZ3RoOworICAgIFB5T2JqZWN0ICpjb3B5OworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGNvcHkgPSBQeVVuaWNvZGVfTmV3KGxlbmd0aCwgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHVuaWNvZGUpKTsKKyAgICBpZiAoIWNvcHkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChjb3B5KSA9PSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKSk7CisKKyAgICBQeV9NRU1DUFkoUHlVbmljb2RlX0RBVEEoY29weSksIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAorICAgICAgICAgICAgICBsZW5ndGggKiBQeVVuaWNvZGVfS0lORCh1bmljb2RlKSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShjb3B5LCAxKSk7CisgICAgcmV0dXJuIGNvcHk7Cit9CisKKworLyogV2lkZW4gVW5pY29kZSBvYmplY3RzIHRvIGxhcmdlciBidWZmZXJzLiBEb24ndCB3cml0ZSB0ZXJtaW5hdGluZyBudWxsCisgICBjaGFyYWN0ZXIuIFJldHVybiBOVUxMIG9uIGVycm9yLiAqLworCit2b2lkKgorX1B5VW5pY29kZV9Bc0tpbmQoUHlPYmplY3QgKnMsIHVuc2lnbmVkIGludCBraW5kKQoreworICAgIFB5X3NzaXplX3QgbGVuOworICAgIHZvaWQgKnJlc3VsdDsKKyAgICB1bnNpZ25lZCBpbnQgc2tpbmQ7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHMpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHMpOworICAgIHNraW5kID0gUHlVbmljb2RlX0tJTkQocyk7CisgICAgaWYgKHNraW5kID49IGtpbmQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiaW52YWxpZCB3aWRlbmluZyBhdHRlbXB0Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXN1bHQgPSBQeU1lbV9NYWxsb2MobGVuICogc2l6ZW9mKFB5X1VDUzIpKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgYXNzZXJ0KHNraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgUHlfVUNTMSwgUHlfVUNTMiwKKyAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHMpLAorICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEocykgKyBsZW4sCisgICAgICAgICAgICByZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJlc3VsdCA9IFB5TWVtX01hbGxvYyhsZW4gKiBzaXplb2YoUHlfVUNTNCkpOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBpZiAoc2tpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUygKKyAgICAgICAgICAgICAgICBQeV9VQ1MyLCBQeV9VQ1M0LAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHMpLAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHMpICsgbGVuLAorICAgICAgICAgICAgICAgIHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoc2tpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworICAgICAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgICAgIFB5X1VDUzEsIFB5X1VDUzQsCisgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEocyksCisgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEocykgKyBsZW4sCisgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJpbnZhbGlkIGtpbmQiKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5X1VDUzQqCithc191Y3M0KFB5T2JqZWN0ICpzdHJpbmcsIFB5X1VDUzQgKnRhcmdldCwgUHlfc3NpemVfdCB0YXJnZXRzaXplLAorICAgICAgICBpbnQgY29weV9udWxsKQoreworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBsZW4sIHRhcmdldGxlbjsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cmluZykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHJpbmcpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyk7CisgICAgdGFyZ2V0bGVuID0gbGVuOworICAgIGlmIChjb3B5X251bGwpCisgICAgICAgIHRhcmdldGxlbisrOworICAgIGlmICghdGFyZ2V0KSB7CisgICAgICAgIGlmIChQWV9TU0laRV9UX01BWCAvIHNpemVvZihQeV9VQ1M0KSA8IHRhcmdldGxlbikgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHRhcmdldCA9IFB5TWVtX01hbGxvYyh0YXJnZXRsZW4gKiBzaXplb2YoUHlfVUNTNCkpOworICAgICAgICBpZiAoIXRhcmdldCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAodGFyZ2V0c2l6ZSA8IHRhcmdldGxlbikgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgaXMgbG9uZ2VyIHRoYW4gdGhlIGJ1ZmZlciIpOworICAgICAgICAgICAgaWYgKGNvcHlfbnVsbCAmJiAwIDwgdGFyZ2V0c2l6ZSkKKyAgICAgICAgICAgICAgICB0YXJnZXRbMF0gPSAwOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgUHlfVUNTMSAqc3RhcnQgPSAoUHlfVUNTMSAqKSBkYXRhOworICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVUNTMSwgUHlfVUNTNCwgc3RhcnQsIHN0YXJ0ICsgbGVuLCB0YXJnZXQpOworICAgIH0KKyAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgIFB5X1VDUzIgKnN0YXJ0ID0gKFB5X1VDUzIgKikgZGF0YTsKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKFB5X1VDUzIsIFB5X1VDUzQsIHN0YXJ0LCBzdGFydCArIGxlbiwgdGFyZ2V0KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgUHlfTUVNQ1BZKHRhcmdldCwgZGF0YSwgbGVuICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICB9CisgICAgaWYgKGNvcHlfbnVsbCkKKyAgICAgICAgdGFyZ2V0W2xlbl0gPSAwOworICAgIHJldHVybiB0YXJnZXQ7Cit9CisKK1B5X1VDUzQqCitQeVVuaWNvZGVfQXNVQ1M0KFB5T2JqZWN0ICpzdHJpbmcsIFB5X1VDUzQgKnRhcmdldCwgUHlfc3NpemVfdCB0YXJnZXRzaXplLAorICAgICAgICAgICAgICAgICBpbnQgY29weV9udWxsKQoreworICAgIGlmICh0YXJnZXQgPT0gTlVMTCB8fCB0YXJnZXRzaXplIDwgMCkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBhc191Y3M0KHN0cmluZywgdGFyZ2V0LCB0YXJnZXRzaXplLCBjb3B5X251bGwpOworfQorCitQeV9VQ1M0KgorUHlVbmljb2RlX0FzVUNTNENvcHkoUHlPYmplY3QgKnN0cmluZykKK3sKKyAgICByZXR1cm4gYXNfdWNzNChzdHJpbmcsIE5VTEwsIDAsIDEpOwogfQogCiAjaWZkZWYgSEFWRV9XQ0hBUl9ICiAKLSNpZiAoUHlfVU5JQ09ERV9TSVpFID09IDIpICYmIGRlZmluZWQoU0laRU9GX1dDSEFSX1QpICYmIChTSVpFT0ZfV0NIQVJfVCA9PSA0KQotIyBkZWZpbmUgQ09OVkVSVF9XQ0hBUl9UT19TVVJST0dBVEVTCi0jZW5kaWYKLQotI2lmZGVmIENPTlZFUlRfV0NIQVJfVE9fU1VSUk9HQVRFUwotCi0vKiBIZXJlIHNpemVvZih3Y2hhcl90KSBpcyA0IGJ1dCBQeV9VTklDT0RFX1NJWkUgPT0gMiwgc28gd2UgbmVlZAotICAgdG8gY29udmVydCBmcm9tIFVURjMyIHRvIFVURjE2LiAqLwotCi1QeU9iamVjdCAqUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihyZWdpc3RlciBjb25zdCB3Y2hhcl90ICp3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihyZWdpc3RlciBjb25zdCB3Y2hhcl90ICp3LCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlOwotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaTsKLSAgICBQeV9zc2l6ZV90IGFsbG9jOwotICAgIGNvbnN0IHdjaGFyX3QgKm9yaWdfdzsKLQogICAgIGlmICh3ID09IE5VTEwpIHsKICAgICAgICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CisgICAgICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTYwOCw3NyArMjI3NiwxMCBAQAogICAgICAgICBzaXplID0gd2NzbGVuKHcpOwogICAgIH0KIAotICAgIGFsbG9jID0gc2l6ZTsKLSAgICBvcmlnX3cgPSB3OwotICAgIGZvciAoaSA9IHNpemU7IGkgPiAwOyBpLS0pIHsKLSAgICAgICAgaWYgKCp3ID4gMHhGRkZGKQotICAgICAgICAgICAgYWxsb2MrKzsKLSAgICAgICAgdysrOwotICAgIH0KLSAgICB3ID0gb3JpZ193OwotICAgIHVuaWNvZGUgPSBfUHlVbmljb2RlX05ldyhhbGxvYyk7Ci0gICAgaWYgKCF1bmljb2RlKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIENvcHkgdGhlIHdjaGFyX3QgZGF0YSBpbnRvIHRoZSBuZXcgb2JqZWN0ICovCi0gICAgewotICAgICAgICByZWdpc3RlciBQeV9VTklDT0RFICp1OwotICAgICAgICB1ID0gUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7Ci0gICAgICAgIGZvciAoaSA9IHNpemU7IGkgPiAwOyBpLS0pIHsKLSAgICAgICAgICAgIGlmICgqdyA+IDB4RkZGRikgewotICAgICAgICAgICAgICAgIHdjaGFyX3Qgb3JkaW5hbCA9ICp3Kys7Ci0gICAgICAgICAgICAgICAgb3JkaW5hbCAtPSAweDEwMDAwOwotICAgICAgICAgICAgICAgICp1KysgPSAweEQ4MDAgfCAob3JkaW5hbCA+PiAxMCk7Ci0gICAgICAgICAgICAgICAgKnUrKyA9IDB4REMwMCB8IChvcmRpbmFsICYgMHgzRkYpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICp1KysgPSAqdysrOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUodywgc2l6ZSk7CiB9CiAKLSNlbHNlCi0KLVB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHJlZ2lzdGVyIGNvbnN0IHdjaGFyX3QgKncsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUpCi17Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlOwotCi0gICAgaWYgKHcgPT0gTlVMTCkgewotICAgICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKLSAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChzaXplID09IC0xKSB7Ci0gICAgICAgIHNpemUgPSB3Y3NsZW4odyk7Ci0gICAgfQotCi0gICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KHNpemUpOwotICAgIGlmICghdW5pY29kZSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiBDb3B5IHRoZSB3Y2hhcl90IGRhdGEgaW50byB0aGUgbmV3IG9iamVjdCAqLwotI2lmIFB5X1VOSUNPREVfU0laRSA9PSBTSVpFT0ZfV0NIQVJfVAotICAgIG1lbWNweSh1bmljb2RlLT5zdHIsIHcsIHNpemUgKiBzaXplb2Yod2NoYXJfdCkpOwotI2Vsc2UKLSAgICB7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgKnU7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaTsKLSAgICAgICAgdSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwotICAgICAgICBmb3IgKGkgPSBzaXplOyBpID4gMDsgaS0tKQotICAgICAgICAgICAgKnUrKyA9ICp3Kys7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKLX0KLQotI2VuZGlmIC8qIENPTlZFUlRfV0NIQVJfVE9fU1VSUk9HQVRFUyAqLwotCi0jdW5kZWYgQ09OVkVSVF9XQ0hBUl9UT19TVVJST0dBVEVTCisjZW5kaWYgLyogSEFWRV9XQ0hBUl9IICovCiAKIHN0YXRpYyB2b2lkCiBtYWtlZm10KGNoYXIgKmZtdCwgaW50IGxvbmdmbGFnLCBpbnQgbG9uZ2xvbmdmbGFnLCBpbnQgc2l6ZV90ZmxhZywKQEAgLTcxNiwxMCArMjMxNyw3MSBAQAogICAgICpmbXQgPSAnXDAnOwogfQogCi0jZGVmaW5lIGFwcGVuZHN0cmluZyhzdHJpbmcpIHtmb3IgKGNvcHkgPSBzdHJpbmc7KmNvcHk7KSAqcysrID0gKmNvcHkrKzt9CisvKiBoZWxwZXIgZm9yIFB5VW5pY29kZV9Gcm9tRm9ybWF0VigpICovCiAKLS8qIHNpemUgb2YgZml4ZWQtc2l6ZSBidWZmZXIgZm9yIGZvcm1hdHRpbmcgc2luZ2xlIGFyZ3VtZW50cyAqLwotI2RlZmluZSBJVEVNX0JVRkZFUl9MRU4gMjEKK3N0YXRpYyBjb25zdCBjaGFyKgorcGFyc2VfZm9ybWF0X2ZsYWdzKGNvbnN0IGNoYXIgKmYsCisgICAgICAgICAgICAgICAgICAgaW50ICpwX3dpZHRoLCBpbnQgKnBfcHJlY2lzaW9uLAorICAgICAgICAgICAgICAgICAgIGludCAqcF9sb25nZmxhZywgaW50ICpwX2xvbmdsb25nZmxhZywgaW50ICpwX3NpemVfdGZsYWcpCit7CisgICAgaW50IHdpZHRoLCBwcmVjaXNpb24sIGxvbmdmbGFnLCBsb25nbG9uZ2ZsYWcsIHNpemVfdGZsYWc7CisKKyAgICAvKiBwYXJzZSB0aGUgd2lkdGgucHJlY2lzaW9uIHBhcnQsIGUuZy4gIiUyLjVzIiA9PiB3aWR0aD0yLCBwcmVjaXNpb249NSAqLworICAgIGYrKzsKKyAgICB3aWR0aCA9IDA7CisgICAgd2hpbGUgKFB5X0lTRElHSVQoKHVuc2lnbmVkKSpmKSkKKyAgICAgICAgd2lkdGggPSAod2lkdGgqMTApICsgKmYrKyAtICcwJzsKKyAgICBwcmVjaXNpb24gPSAwOworICAgIGlmICgqZiA9PSAnLicpIHsKKyAgICAgICAgZisrOworICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgodW5zaWduZWQpKmYpKQorICAgICAgICAgICAgcHJlY2lzaW9uID0gKHByZWNpc2lvbioxMCkgKyAqZisrIC0gJzAnOworICAgICAgICBpZiAoKmYgPT0gJyUnKSB7CisgICAgICAgICAgICAvKiAiJS4zJXMiID0+IGYgcG9pbnRzIHRvICIzIiAqLworICAgICAgICAgICAgZi0tOworICAgICAgICB9CisgICAgfQorICAgIGlmICgqZiA9PSAnXDAnKSB7CisgICAgICAgIC8qIGJvZ3VzIGZvcm1hdCAiJS4xIiA9PiBnbyBiYWNrd2FyZCwgZiBwb2ludHMgdG8gIjEiICovCisgICAgICAgIGYtLTsKKyAgICB9CisgICAgaWYgKHBfd2lkdGggIT0gTlVMTCkKKyAgICAgICAgKnBfd2lkdGggPSB3aWR0aDsKKyAgICBpZiAocF9wcmVjaXNpb24gIT0gTlVMTCkKKyAgICAgICAgKnBfcHJlY2lzaW9uID0gcHJlY2lzaW9uOworCisgICAgLyogSGFuZGxlICVsZCwgJWx1LCAlbGxkIGFuZCAlbGx1LiAqLworICAgIGxvbmdmbGFnID0gMDsKKyAgICBsb25nbG9uZ2ZsYWcgPSAwOworICAgIHNpemVfdGZsYWcgPSAwOworCisgICAgaWYgKCpmID09ICdsJykgeworICAgICAgICBpZiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScgfHwgZlsxXSA9PSAnaScpIHsKKyAgICAgICAgICAgIGxvbmdmbGFnID0gMTsKKyAgICAgICAgICAgICsrZjsKKyAgICAgICAgfQorI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgICAgIGVsc2UgaWYgKGZbMV0gPT0gJ2wnICYmCisgICAgICAgICAgICAgICAgIChmWzJdID09ICdkJyB8fCBmWzJdID09ICd1JyB8fCBmWzJdID09ICdpJykpIHsKKyAgICAgICAgICAgIGxvbmdsb25nZmxhZyA9IDE7CisgICAgICAgICAgICBmICs9IDI7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0KKyAgICAvKiBoYW5kbGUgdGhlIHNpemVfdCBmbGFnLiAqLworICAgIGVsc2UgaWYgKCpmID09ICd6JyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScgfHwgZlsxXSA9PSAnaScpKSB7CisgICAgICAgIHNpemVfdGZsYWcgPSAxOworICAgICAgICArK2Y7CisgICAgfQorICAgIGlmIChwX2xvbmdmbGFnICE9IE5VTEwpCisgICAgICAgICpwX2xvbmdmbGFnID0gbG9uZ2ZsYWc7CisgICAgaWYgKHBfbG9uZ2xvbmdmbGFnICE9IE5VTEwpCisgICAgICAgICpwX2xvbmdsb25nZmxhZyA9IGxvbmdsb25nZmxhZzsKKyAgICBpZiAocF9zaXplX3RmbGFnICE9IE5VTEwpCisgICAgICAgICpwX3NpemVfdGZsYWcgPSBzaXplX3RmbGFnOworICAgIHJldHVybiBmOworfQorCiAvKiBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHJlcXVpcmVkIGZvciBvdXRwdXQgb2YgJWxkLiAgMjEgY2hhcmFjdGVycwogICAgYWxsb3dzIGZvciA2NC1iaXQgaW50ZWdlcnMgKGluIGRlY2ltYWwpIGFuZCBhbiBvcHRpb25hbCBzaWduLiAqLwogI2RlZmluZSBNQVhfTE9OR19DSEFSUyAyMQpAQCAtNzQwLDEwNiArMjQwMiwzNSBAQAogICAgIGludCBwcmVjaXNpb24gPSAwOwogICAgIGludCB6ZXJvcGFkOwogICAgIGNvbnN0IGNoYXIqIGY7Ci0gICAgUHlfVU5JQ09ERSAqczsKICAgICBQeU9iamVjdCAqc3RyaW5nOwogICAgIC8qIHVzZWQgYnkgc3ByaW50ZiAqLwotICAgIGNoYXIgYnVmZmVyW0lURU1fQlVGRkVSX0xFTisxXTsKLSAgICAvKiB1c2UgYWJ1ZmZlciBpbnN0ZWFkIG9mIGJ1ZmZlciwgaWYgd2UgbmVlZCBtb3JlIHNwYWNlCi0gICAgICogKHdoaWNoIGNhbiBoYXBwZW4gaWYgdGhlcmUncyBhIGZvcm1hdCBzcGVjaWZpZXIgd2l0aCB3aWR0aCkuICovCi0gICAgY2hhciAqYWJ1ZmZlciA9IE5VTEw7Ci0gICAgY2hhciAqcmVhbGJ1ZmZlcjsKLSAgICBQeV9zc2l6ZV90IGFidWZmZXJzaXplID0gMDsKICAgICBjaGFyIGZtdFs2MV07IC8qIHNob3VsZCBiZSBlbm91Z2ggZm9yICUwd2lkdGgucHJlY2lzaW9ubGxkICovCi0gICAgY29uc3QgY2hhciAqY29weTsKKyAgICBQeV9VQ1M0IG1heGNoYXIgPSAxMjc7IC8qIHJlc3VsdCBpcyBBU0NJSSBieSBkZWZhdWx0ICovCisgICAgUHlfVUNTNCBhcmdtYXhjaGFyOworICAgIFB5X3NzaXplX3QgbnVtYmVyc2l6ZSA9IDA7CisgICAgY2hhciAqbnVtYmVycmVzdWx0cyA9IE5VTEw7CisgICAgY2hhciAqbnVtYmVycmVzdWx0ID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKIAogICAgIFB5X1ZBX0NPUFkoY291bnQsIHZhcmdzKTsKICAgICAvKiBzdGVwIDE6IGNvdW50IHRoZSBudW1iZXIgb2YgJVMvJVIvJUEvJXMgZm9ybWF0IHNwZWNpZmljYXRpb25zCiAgICAgICogKHdlIGNhbGwgUHlPYmplY3RfU3RyKCkvUHlPYmplY3RfUmVwcigpL1B5T2JqZWN0X0FTQ0lJKCkvCiAgICAgICogUHlVbmljb2RlX0RlY29kZVVURjgoKSBmb3IgdGhlc2Ugb2JqZWN0cyBvbmNlIGR1cmluZyBzdGVwIDMgYW5kIHB1dCB0aGUKLSAgICAgKiByZXN1bHQgaW4gYW4gYXJyYXkpICovCi0gICAgZm9yIChmID0gZm9ybWF0OyAqZjsgZisrKSB7Ci0gICAgICAgICBpZiAoKmYgPT0gJyUnKSB7Ci0gICAgICAgICAgICAgaWYgKCooZisxKT09JyUnKQotICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICBpZiAoKihmKzEpPT0nUycgfHwgKihmKzEpPT0nUicgfHwgKihmKzEpPT0nQScgfHwgKihmKzEpID09ICdWJykKLSAgICAgICAgICAgICAgICAgKytjYWxsY291bnQ7Ci0gICAgICAgICAgICAgd2hpbGUgKFB5X0lTRElHSVQoKHVuc2lnbmVkKSpmKSkKLSAgICAgICAgICAgICAgICAgd2lkdGggPSAod2lkdGgqMTApICsgKmYrKyAtICcwJzsKLSAgICAgICAgICAgICB3aGlsZSAoKisrZiAmJiAqZiAhPSAnJScgJiYgIVB5X0lTQUxQSEEoKHVuc2lnbmVkKSpmKSkKLSAgICAgICAgICAgICAgICAgOwotICAgICAgICAgICAgIGlmICgqZiA9PSAncycpCi0gICAgICAgICAgICAgICAgICsrY2FsbGNvdW50OwotICAgICAgICAgfQotICAgICAgICAgZWxzZSBpZiAoMTI4IDw9ICh1bnNpZ25lZCBjaGFyKSpmKSB7Ci0gICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgIlB5VW5pY29kZV9Gcm9tRm9ybWF0VigpIGV4cGVjdHMgYW4gQVNDSUktZW5jb2RlZCBmb3JtYXQgIgotICAgICAgICAgICAgICAgICJzdHJpbmcsIGdvdCBhIG5vbi1BU0NJSSBieXRlOiAweCUwMngiLAotICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKSpmKTsKLSAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgIH0KLSAgICB9Ci0gICAgLyogc3RlcCAyOiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSByZXN1bHRzIG9mCi0gICAgICogUHlPYmplY3RfU3RyKCkvUHlPYmplY3RfUmVwcigpL1B5VW5pY29kZV9EZWNvZGVVVEY4KCkgY2FsbHMgKi8KLSAgICBpZiAoY2FsbGNvdW50KSB7Ci0gICAgICAgIGNhbGxyZXN1bHRzID0gUHlPYmplY3RfTWFsbG9jKHNpemVvZihQeU9iamVjdCAqKSpjYWxsY291bnQpOwotICAgICAgICBpZiAoIWNhbGxyZXN1bHRzKSB7Ci0gICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgY2FsbHJlc3VsdCA9IGNhbGxyZXN1bHRzOwotICAgIH0KLSAgICAvKiBzdGVwIDM6IGZpZ3VyZSBvdXQgaG93IGxhcmdlIGEgYnVmZmVyIHdlIG5lZWQgKi8KKyAgICAgKiByZXN1bHQgaW4gYW4gYXJyYXkpCisgICAgICogYWxzbyBlc3RpbWF0ZSBhIHVwcGVyIGJvdW5kIGZvciBhbGwgdGhlIG51bWJlciBmb3JtYXRzIGluIHRoZSBzdHJpbmcsCisgICAgICogbnVtYmVycyB3aWxsIGJlIGZvcm1hdHRlZCBpbiBzdGVwIDMgYW5kIGJlIGtlcHQgaW4gYSAnXDAnLXNlcGFyYXRlZAorICAgICAqIGJ1ZmZlciBiZWZvcmUgcHV0dGluZyBldmVyeXRoaW5nIHRvZ2V0aGVyLiAqLwogICAgIGZvciAoZiA9IGZvcm1hdDsgKmY7IGYrKykgewogICAgICAgICBpZiAoKmYgPT0gJyUnKSB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgICAgIGludCBsb25nbG9uZ2ZsYWcgPSAwOwotI2VuZGlmCi0gICAgICAgICAgICBjb25zdCBjaGFyKiBwID0gZjsKLSAgICAgICAgICAgIHdpZHRoID0gMDsKLSAgICAgICAgICAgIHdoaWxlIChQeV9JU0RJR0lUKCh1bnNpZ25lZCkqZikpCi0gICAgICAgICAgICAgICAgd2lkdGggPSAod2lkdGgqMTApICsgKmYrKyAtICcwJzsKLSAgICAgICAgICAgIHdoaWxlICgqKytmICYmICpmICE9ICclJyAmJiAhUHlfSVNBTFBIQSgodW5zaWduZWQpKmYpKQotICAgICAgICAgICAgICAgIDsKKyAgICAgICAgICAgIGludCBsb25nbG9uZ2ZsYWc7CisgICAgICAgICAgICAvKiBza2lwIHdpZHRoIG9yIHdpZHRoLnByZWNpc2lvbiAoZWcuICIxLjIiIG9mICIlMS4yZiIpICovCisgICAgICAgICAgICBmID0gcGFyc2VfZm9ybWF0X2ZsYWdzKGYsICZ3aWR0aCwgTlVMTCwgTlVMTCwgJmxvbmdsb25nZmxhZywgTlVMTCk7CisgICAgICAgICAgICBpZiAoKmYgPT0gJ3MnIHx8ICpmPT0nUycgfHwgKmY9PSdSJyB8fCAqZj09J0EnIHx8ICpmPT0nVicpCisgICAgICAgICAgICAgICAgKytjYWxsY291bnQ7CiAKLSAgICAgICAgICAgIC8qIHNraXAgdGhlICdsJyBvciAneicgaW4geyVsZCwgJXpkLCAlbHUsICV6dX0gc2luY2UKLSAgICAgICAgICAgICAqIHRoZXkgZG9uJ3QgYWZmZWN0IHRoZSBhbW91bnQgb2Ygc3BhY2Ugd2UgcmVzZXJ2ZS4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKCpmID09ICdsJykgewotICAgICAgICAgICAgICAgIGlmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JykgewotICAgICAgICAgICAgICAgICAgICArK2Y7Ci0gICAgICAgICAgICAgICAgfQotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZlsxXSA9PSAnbCcgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAoZlsyXSA9PSAnZCcgfHwgZlsyXSA9PSAndScpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxvbmdsb25nZmxhZyA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIGYgKz0gMjsKLSAgICAgICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKCpmID09ICd6JyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpKSB7Ci0gICAgICAgICAgICAgICAgKytmOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzd2l0Y2ggKCpmKSB7Ci0gICAgICAgICAgICBjYXNlICdjJzoKLSAgICAgICAgICAgIHsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAgICAgaW50IG9yZGluYWwgPSB2YV9hcmcoY291bnQsIGludCk7Ci0gICAgICAgICAgICAgICAgaWYgKG9yZGluYWwgPiAweGZmZmYpCi0gICAgICAgICAgICAgICAgICAgIG4gKz0gMjsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG4rKzsKLSNlbHNlCi0gICAgICAgICAgICAgICAgKHZvaWQpdmFfYXJnKGNvdW50LCBpbnQpOwotICAgICAgICAgICAgICAgIG4rKzsKLSNlbmRpZgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSAnJSc6Ci0gICAgICAgICAgICAgICAgbisrOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnZCc6IGNhc2UgJ3UnOiBjYXNlICdpJzogY2FzZSAneCc6Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZyhjb3VudCwgaW50KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCpmID09ICdkJyB8fCAqZj09J3UnIHx8ICpmPT0naScgfHwgKmY9PSd4JyB8fCAqZj09J3AnKSB7CiAjaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgICAgICAgICBpZiAobG9uZ2xvbmdmbGFnKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA8IE1BWF9MT05HX0xPTkdfQ0hBUlMpCkBAIC04NTMsMTkgKzI0NDQsMTU1IEBACiAgICAgICAgICAgICAgICAgICAgICAgIG5lZWQgbW9yZSAod2hpY2ggd2UgYWxsb2NhdGUgbGF0ZXIpLiAqLwogICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPCBNQVhfTE9OR19DSEFSUykKICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gTUFYX0xPTkdfQ0hBUlM7Ci0gICAgICAgICAgICAgICAgbiArPSB3aWR0aDsKLSAgICAgICAgICAgICAgICAvKiBYWFggc2hvdWxkIGFsbG93IGZvciBsYXJnZSBwcmVjaXNpb24gaGVyZSB0b28uICovCi0gICAgICAgICAgICAgICAgaWYgKGFidWZmZXJzaXplIDwgd2lkdGgpCi0gICAgICAgICAgICAgICAgICAgIGFidWZmZXJzaXplID0gd2lkdGg7CisKKyAgICAgICAgICAgICAgICAvKiBhY2NvdW50IGZvciB0aGUgc2l6ZSArICdcMCcgdG8gc2VwYXJhdGUgbnVtYmVycworICAgICAgICAgICAgICAgICAgIGluc2lkZSBvZiB0aGUgbnVtYmVycmVzdWx0cyBidWZmZXIgKi8KKyAgICAgICAgICAgICAgICBudW1iZXJzaXplICs9ICh3aWR0aCArIDEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCh1bnNpZ25lZCBjaGFyKSpmID4gMTI3KSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCkgZXhwZWN0cyBhbiBBU0NJSS1lbmNvZGVkIGZvcm1hdCAiCisgICAgICAgICAgICAgICAgInN0cmluZywgZ290IGEgbm9uLUFTQ0lJIGJ5dGU6IDB4JTAyeCIsCisgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpKmYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgLyogc3RlcCAyOiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSByZXN1bHRzIG9mCisgICAgICogUHlPYmplY3RfU3RyKCkvUHlPYmplY3RfUmVwcigpL1B5VW5pY29kZV9EZWNvZGVVVEY4KCkgY2FsbHMgKi8KKyAgICBpZiAoY2FsbGNvdW50KSB7CisgICAgICAgIGNhbGxyZXN1bHRzID0gUHlPYmplY3RfTWFsbG9jKHNpemVvZihQeU9iamVjdCAqKSAqIGNhbGxjb3VudCk7CisgICAgICAgIGlmICghY2FsbHJlc3VsdHMpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBjYWxscmVzdWx0ID0gY2FsbHJlc3VsdHM7CisgICAgfQorICAgIC8qIHN0ZXAgMi41OiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSByZXN1bHRzIG9mIGZvcm1hdGluZyBudW1iZXJzICovCisgICAgaWYgKG51bWJlcnNpemUpIHsKKyAgICAgICAgbnVtYmVycmVzdWx0cyA9IFB5T2JqZWN0X01hbGxvYyhudW1iZXJzaXplKTsKKyAgICAgICAgaWYgKCFudW1iZXJyZXN1bHRzKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgICAgIG51bWJlcnJlc3VsdCA9IG51bWJlcnJlc3VsdHM7CisgICAgfQorCisgICAgLyogc3RlcCAzOiBmb3JtYXQgbnVtYmVycyBhbmQgZmlndXJlIG91dCBob3cgbGFyZ2UgYSBidWZmZXIgd2UgbmVlZCAqLworICAgIGZvciAoZiA9IGZvcm1hdDsgKmY7IGYrKykgeworICAgICAgICBpZiAoKmYgPT0gJyUnKSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBwOworICAgICAgICAgICAgaW50IGxvbmdmbGFnOworICAgICAgICAgICAgaW50IGxvbmdsb25nZmxhZzsKKyAgICAgICAgICAgIGludCBzaXplX3RmbGFnOworICAgICAgICAgICAgaW50IG51bXByaW50ZWQ7CisKKyAgICAgICAgICAgIHAgPSBmOworICAgICAgICAgICAgemVyb3BhZCA9IChmWzFdID09ICcwJyk7CisgICAgICAgICAgICBmID0gcGFyc2VfZm9ybWF0X2ZsYWdzKGYsICZ3aWR0aCwgJnByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxvbmdmbGFnLCAmbG9uZ2xvbmdmbGFnLCAmc2l6ZV90ZmxhZyk7CisgICAgICAgICAgICBzd2l0Y2ggKCpmKSB7CisgICAgICAgICAgICBjYXNlICdjJzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBQeV9VQ1M0IG9yZGluYWwgPSB2YV9hcmcoY291bnQsIGludCk7CisgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIG9yZGluYWwpOworICAgICAgICAgICAgICAgIG4rKzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgJyUnOgorICAgICAgICAgICAgICAgIG4rKzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2knOgorICAgICAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICAgICAgbWFrZWZtdChmbXQsIGxvbmdmbGFnLCBsb25nbG9uZ2ZsYWcsIHNpemVfdGZsYWcsIHplcm9wYWQsCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgcHJlY2lzaW9uLCAqZik7CisgICAgICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQorICAgICAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKGNvdW50LCBsb25nKSk7CisjaWZkZWYgSEFWRV9MT05HX0xPTkcKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChsb25nbG9uZ2ZsYWcpCisgICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgPSBzcHJpbnRmKG51bWJlcnJlc3VsdCwgZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoY291bnQsIFBZX0xPTkdfTE9ORykpOworI2VuZGlmCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKKyAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhjb3VudCwgUHlfc3NpemVfdCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhjb3VudCwgaW50KSk7CisgICAgICAgICAgICAgICAgbiArPSBudW1wcmludGVkOworICAgICAgICAgICAgICAgIC8qIGFkdmFuY2UgYnkgKzEgdG8gc2tpcCBvdmVyIHRoZSAnXDAnICovCisgICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0ICs9IChudW1wcmludGVkICsgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMSkgPT0gJ1wwJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMikgIT0gJ1wwJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG51bXByaW50ZWQgPj0gMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG51bWJlcnJlc3VsdCA8PSBudW1iZXJyZXN1bHRzICsgbnVtYmVyc2l6ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICd1JzoKKyAgICAgICAgICAgICAgICBtYWtlZm10KGZtdCwgbG9uZ2ZsYWcsIGxvbmdsb25nZmxhZywgc2l6ZV90ZmxhZywgemVyb3BhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBwcmVjaXNpb24sICd1Jyk7CisgICAgICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQorICAgICAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKGNvdW50LCB1bnNpZ25lZCBsb25nKSk7CisjaWZkZWYgSEFWRV9MT05HX0xPTkcKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChsb25nbG9uZ2ZsYWcpCisgICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgPSBzcHJpbnRmKG51bWJlcnJlc3VsdCwgZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoY291bnQsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORykpOworI2VuZGlmCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKKyAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhjb3VudCwgc2l6ZV90KSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKGNvdW50LCB1bnNpZ25lZCBpbnQpKTsKKyAgICAgICAgICAgICAgICBuICs9IG51bXByaW50ZWQ7CisgICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0ICs9IChudW1wcmludGVkICsgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMSkgPT0gJ1wwJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMikgIT0gJ1wwJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG51bXByaW50ZWQgPj0gMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG51bWJlcnJlc3VsdCA8PSBudW1iZXJyZXN1bHRzICsgbnVtYmVyc2l6ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgICAgICBtYWtlZm10KGZtdCwgMCwgMCwgMCwgemVyb3BhZCwgd2lkdGgsIHByZWNpc2lvbiwgJ3gnKTsKKyAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwgdmFfYXJnKGNvdW50LCBpbnQpKTsKKyAgICAgICAgICAgICAgICBuICs9IG51bXByaW50ZWQ7CisgICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0ICs9IChudW1wcmludGVkICsgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMSkgPT0gJ1wwJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMikgIT0gJ1wwJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG51bXByaW50ZWQgPj0gMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG51bWJlcnJlc3VsdCA8PSBudW1iZXJyZXN1bHRzICsgbnVtYmVyc2l6ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdwJzoKKyAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsICIlcCIsIHZhX2FyZyhjb3VudCwgdm9pZCopKTsKKyAgICAgICAgICAgICAgICAvKiAlcCBpcyBpbGwtZGVmaW5lZDogIGVuc3VyZSBsZWFkaW5nIDB4LiAqLworICAgICAgICAgICAgICAgIGlmIChudW1iZXJyZXN1bHRbMV0gPT0gJ1gnKQorICAgICAgICAgICAgICAgICAgICBudW1iZXJyZXN1bHRbMV0gPSAneCc7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobnVtYmVycmVzdWx0WzFdICE9ICd4JykgeworICAgICAgICAgICAgICAgICAgICBtZW1tb3ZlKG51bWJlcnJlc3VsdCArIDIsIG51bWJlcnJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4obnVtYmVycmVzdWx0KSArIDEpOworICAgICAgICAgICAgICAgICAgICBudW1iZXJyZXN1bHRbMF0gPSAnMCc7CisgICAgICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdFsxXSA9ICd4JzsKKyAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCArPSAyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuICs9IG51bXByaW50ZWQ7CisgICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0ICs9IChudW1wcmludGVkICsgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMSkgPT0gJ1wwJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCoobnVtYmVycmVzdWx0IC0gMikgIT0gJ1wwJyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG51bXByaW50ZWQgPj0gMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG51bWJlcnJlc3VsdCA8PSBudW1iZXJyZXN1bHRzICsgbnVtYmVyc2l6ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvKiBVVEYtOCAqLwogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnMgPSB2YV9hcmcoY291bnQsIGNvbnN0IGNoYXIqKTsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyID0gUHlVbmljb2RlX0RlY29kZVVURjgocywgc3RybGVuKHMpLCAicmVwbGFjZSIpOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHIgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHN0cmxlbihzKSwgInJlcGxhY2UiLCBOVUxMKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0cikKICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9TSVpFKHN0cik7CisgICAgICAgICAgICAgICAgLyogc2luY2UgUHlVbmljb2RlX0RlY29kZVVURjggcmV0dXJucyBhbHJlYWR5IGZsZXhpYmxlCisgICAgICAgICAgICAgICAgICAgdW5pY29kZSBvYmplY3RzLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGwgcmVhZHkgb24gdGhlbSAqLworICAgICAgICAgICAgICAgIGFyZ21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoc3RyKTsKKyAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgYXJnbWF4Y2hhcik7CisgICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOwogICAgICAgICAgICAgICAgIC8qIFJlbWVtYmVyIHRoZSBzdHIgYW5kIHN3aXRjaCB0byB0aGUgbmV4dCBzbG90ICovCiAgICAgICAgICAgICAgICAgKmNhbGxyZXN1bHQrKyA9IHN0cjsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTg3Myw4ICsyNjAwLDEyIEBACiAgICAgICAgICAgICBjYXNlICdVJzoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqID0gdmFfYXJnKGNvdW50LCBQeU9iamVjdCAqKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQob2JqICYmIFB5VW5pY29kZV9DaGVjayhvYmopKTsKLSAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfU0laRShvYmopOworICAgICAgICAgICAgICAgIGFzc2VydChvYmogJiYgX1B5VW5pY29kZV9DSEVDSyhvYmopKTsKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgICAgICBhcmdtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKG9iaik7CisgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGFyZ21heGNoYXIpOworICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgJ1YnOgpAQCAtODgzLDE2ICsyNjE0LDI2IEBACiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyID0gdmFfYXJnKGNvdW50LCBjb25zdCBjaGFyICopOwogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJfb2JqOwogICAgICAgICAgICAgICAgIGFzc2VydChvYmogfHwgc3RyKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQoIW9iaiB8fCBQeVVuaWNvZGVfQ2hlY2sob2JqKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCFvYmogfHwgX1B5VW5pY29kZV9DSEVDSyhvYmopKTsKICAgICAgICAgICAgICAgICBpZiAob2JqKSB7Ci0gICAgICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9TSVpFKG9iaik7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgICAgICAgICAgYXJnbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShvYmopOworICAgICAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgYXJnbWF4Y2hhcik7CisgICAgICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKICAgICAgICAgICAgICAgICAgICAgKmNhbGxyZXN1bHQrKyA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBzdHJfb2JqID0gUHlVbmljb2RlX0RlY29kZVVURjgoc3RyLCBzdHJsZW4oc3RyKSwgInJlcGxhY2UiKTsKKyAgICAgICAgICAgICAgICAgICAgc3RyX29iaiA9IFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwoc3RyLCBzdHJsZW4oc3RyKSwgInJlcGxhY2UiLCBOVUxMKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJfb2JqKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfU0laRShzdHJfb2JqKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJfb2JqKSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGFyZ21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoc3RyX29iaik7CisgICAgICAgICAgICAgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBhcmdtYXhjaGFyKTsKKyAgICAgICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJfb2JqKTsKICAgICAgICAgICAgICAgICAgICAgKmNhbGxyZXN1bHQrKyA9IHN0cl9vYmo7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTA1LDcgKzI2NDYsMTMgQEAKICAgICAgICAgICAgICAgICBzdHIgPSBQeU9iamVjdF9TdHIob2JqKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0cikKICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9TSVpFKHN0cik7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFyZ21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoc3RyKTsKKyAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgYXJnbWF4Y2hhcik7CisgICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOwogICAgICAgICAgICAgICAgIC8qIFJlbWVtYmVyIHRoZSBzdHIgYW5kIHN3aXRjaCB0byB0aGUgbmV4dCBzbG90ICovCiAgICAgICAgICAgICAgICAgKmNhbGxyZXN1bHQrKyA9IHN0cjsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTkxOCw3ICsyNjY1LDEzIEBACiAgICAgICAgICAgICAgICAgcmVwciA9IFB5T2JqZWN0X1JlcHIob2JqKTsKICAgICAgICAgICAgICAgICBpZiAoIXJlcHIpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfU0laRShyZXByKTsKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHJlcHIpID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXByKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhcmdtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHJlcHIpOworICAgICAgICAgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBhcmdtYXhjaGFyKTsKKyAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHIpOwogICAgICAgICAgICAgICAgIC8qIFJlbWVtYmVyIHRoZSByZXByIGFuZCBzd2l0Y2ggdG8gdGhlIG5leHQgc2xvdCAqLwogICAgICAgICAgICAgICAgICpjYWxscmVzdWx0KysgPSByZXByOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTMxLDIwICsyNjg0LDE3IEBACiAgICAgICAgICAgICAgICAgYXNjaWkgPSBQeU9iamVjdF9BU0NJSShvYmopOwogICAgICAgICAgICAgICAgIGlmICghYXNjaWkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfU0laRShhc2NpaSk7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShhc2NpaSkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFzY2lpKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhcmdtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKGFzY2lpKTsKKyAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgYXJnbWF4Y2hhcik7CisgICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChhc2NpaSk7CiAgICAgICAgICAgICAgICAgLyogUmVtZW1iZXIgdGhlIHJlcHIgYW5kIHN3aXRjaCB0byB0aGUgbmV4dCBzbG90ICovCiAgICAgICAgICAgICAgICAgKmNhbGxyZXN1bHQrKyA9IGFzY2lpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSAncCc6Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZyhjb3VudCwgaW50KTsKLSAgICAgICAgICAgICAgICAvKiBtYXhpbXVtIDY0LWJpdCBwb2ludGVyIHJlcHJlc2VudGF0aW9uOgotICAgICAgICAgICAgICAgICAqIDB4ZmZmZmZmZmZmZmZmZmZmZgotICAgICAgICAgICAgICAgICAqIHNvIDE5IGNoYXJhY3RlcnMgaXMgZW5vdWdoLgotICAgICAgICAgICAgICAgICAqIFhYWCBJIGNvdW50IDE4IC0tIHdoYXQncyB0aGUgZXh0cmEgZm9yPwotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIG4gKz0gMTk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIC8qIGlmIHdlIHN0dW1ibGUgdXBvbiBhbiB1bmtub3duCiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGluZyBjb2RlLCBjb3B5IHRoZSByZXN0IG9mCkBAIC05NTksMTI3ICsyNzA5LDY4IEBACiAgICAgICAgICAgICBuKys7CiAgICAgfQogICBleHBhbmQ6Ci0gICAgaWYgKGFidWZmZXJzaXplID4gSVRFTV9CVUZGRVJfTEVOKSB7Ci0gICAgICAgIC8qIGFkZCAxIGZvciBzcHJpbnRmJ3MgdHJhaWxpbmcgbnVsbCBieXRlICovCi0gICAgICAgIGFidWZmZXIgPSBQeU9iamVjdF9NYWxsb2MoYWJ1ZmZlcnNpemUgKyAxKTsKLSAgICAgICAgaWYgKCFhYnVmZmVyKSB7Ci0gICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICB9Ci0gICAgICAgIHJlYWxidWZmZXIgPSBhYnVmZmVyOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJlYWxidWZmZXIgPSBidWZmZXI7CiAgICAgLyogc3RlcCA0OiBmaWxsIHRoZSBidWZmZXIgKi8KLSAgICAvKiBTaW5jZSB3ZSd2ZSBhbmFseXplZCBob3cgbXVjaCBzcGFjZSB3ZSBuZWVkIGZvciB0aGUgd29yc3QgY2FzZSwKKyAgICAvKiBTaW5jZSB3ZSd2ZSBhbmFseXplZCBob3cgbXVjaCBzcGFjZSB3ZSBuZWVkLAogICAgICAgIHdlIGRvbid0IGhhdmUgdG8gcmVzaXplIHRoZSBzdHJpbmcuCiAgICAgICAgVGhlcmUgY2FuIGJlIG5vIGVycm9ycyBiZXlvbmQgdGhpcyBwb2ludC4gKi8KLSAgICBzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgbik7CisgICAgc3RyaW5nID0gUHlVbmljb2RlX05ldyhuLCBtYXhjaGFyKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgZ290byBmYWlsOwotCi0gICAgcyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHN0cmluZyk7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cmluZyk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cmluZyk7CiAgICAgY2FsbHJlc3VsdCA9IGNhbGxyZXN1bHRzOworICAgIG51bWJlcnJlc3VsdCA9IG51bWJlcnJlc3VsdHM7CiAKLSAgICBmb3IgKGYgPSBmb3JtYXQ7ICpmOyBmKyspIHsKKyAgICBmb3IgKGkgPSAwLCBmID0gZm9ybWF0OyAqZjsgZisrKSB7CiAgICAgICAgIGlmICgqZiA9PSAnJScpIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIHAgPSBmKys7Ci0gICAgICAgICAgICBpbnQgbG9uZ2ZsYWcgPSAwOwotICAgICAgICAgICAgaW50IGxvbmdsb25nZmxhZyA9IDA7Ci0gICAgICAgICAgICBpbnQgc2l6ZV90ZmxhZyA9IDA7Ci0gICAgICAgICAgICB6ZXJvcGFkID0gKCpmID09ICcwJyk7Ci0gICAgICAgICAgICAvKiBwYXJzZSB0aGUgd2lkdGgucHJlY2lzaW9uIHBhcnQgKi8KLSAgICAgICAgICAgIHdpZHRoID0gMDsKLSAgICAgICAgICAgIHdoaWxlIChQeV9JU0RJR0lUKCh1bnNpZ25lZCkqZikpCi0gICAgICAgICAgICAgICAgd2lkdGggPSAod2lkdGgqMTApICsgKmYrKyAtICcwJzsKLSAgICAgICAgICAgIHByZWNpc2lvbiA9IDA7Ci0gICAgICAgICAgICBpZiAoKmYgPT0gJy4nKSB7Ci0gICAgICAgICAgICAgICAgZisrOwotICAgICAgICAgICAgICAgIHdoaWxlIChQeV9JU0RJR0lUKCh1bnNpZ25lZCkqZikpCi0gICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiA9IChwcmVjaXNpb24qMTApICsgKmYrKyAtICcwJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIEhhbmRsZSAlbGQsICVsdSwgJWxsZCBhbmQgJWxsdS4gKi8KLSAgICAgICAgICAgIGlmICgqZiA9PSAnbCcpIHsKLSAgICAgICAgICAgICAgICBpZiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpIHsKLSAgICAgICAgICAgICAgICAgICAgbG9uZ2ZsYWcgPSAxOwotICAgICAgICAgICAgICAgICAgICArK2Y7Ci0gICAgICAgICAgICAgICAgfQotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZlsxXSA9PSAnbCcgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAoZlsyXSA9PSAnZCcgfHwgZlsyXSA9PSAndScpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxvbmdsb25nZmxhZyA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIGYgKz0gMjsKLSAgICAgICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIGhhbmRsZSB0aGUgc2l6ZV90IGZsYWcuICovCi0gICAgICAgICAgICBpZiAoKmYgPT0gJ3onICYmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JykpIHsKLSAgICAgICAgICAgICAgICBzaXplX3RmbGFnID0gMTsKLSAgICAgICAgICAgICAgICArK2Y7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBjb25zdCBjaGFyKiBwOworCisgICAgICAgICAgICBwID0gZjsKKyAgICAgICAgICAgIGYgPSBwYXJzZV9mb3JtYXRfZmxhZ3MoZiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCk7CisgICAgICAgICAgICAvKiBjaGVja2luZyBmb3IgPT0gYmVjYXVzZSB0aGUgbGFzdCBhcmd1bWVudCBjb3VsZCBiZSBhIGVtcHR5CisgICAgICAgICAgICAgICBzdHJpbmcsIHdoaWNoIGNhdXNlcyBpIHRvIHBvaW50IHRvIGVuZCwgdGhlIGFzc2VydCBhdCB0aGUgZW5kIG9mCisgICAgICAgICAgICAgICB0aGUgbG9vcCAqLworICAgICAgICAgICAgYXNzZXJ0KGkgPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKSk7CiAKICAgICAgICAgICAgIHN3aXRjaCAoKmYpIHsKICAgICAgICAgICAgIGNhc2UgJ2MnOgogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCBvcmRpbmFsID0gdmFfYXJnKHZhcmdzLCBpbnQpOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICAgICBpZiAob3JkaW5hbCA+IDB4ZmZmZikgewotICAgICAgICAgICAgICAgICAgICBvcmRpbmFsIC09IDB4MTAwMDA7Ci0gICAgICAgICAgICAgICAgICAgICpzKysgPSAweEQ4MDAgfCAob3JkaW5hbCA+PiAxMCk7Ci0gICAgICAgICAgICAgICAgICAgICpzKysgPSAweERDMDAgfCAob3JkaW5hbCAmIDB4M0ZGKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgICAgICpzKysgPSBvcmRpbmFsOworICAgICAgICAgICAgICAgIGNvbnN0IGludCBvcmRpbmFsID0gdmFfYXJnKHZhcmdzLCBpbnQpOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBpKyssIG9yZGluYWwpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSAnZCc6Ci0gICAgICAgICAgICAgICAgbWFrZWZtdChmbXQsIGxvbmdmbGFnLCBsb25nbG9uZ2ZsYWcsIHNpemVfdGZsYWcsIHplcm9wYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgcHJlY2lzaW9uLCAnZCcpOwotICAgICAgICAgICAgICAgIGlmIChsb25nZmxhZykKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihyZWFsYnVmZmVyLCBmbXQsIHZhX2FyZyh2YXJncywgbG9uZykpOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgICAgICAgICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLCBQWV9MT05HX0xPTkcpKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsIFB5X3NzaXplX3QpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsIGludCkpOwotICAgICAgICAgICAgICAgIGFwcGVuZHN0cmluZyhyZWFsYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAgICAgIG1ha2VmbXQoZm10LCBsb25nZmxhZywgbG9uZ2xvbmdmbGFnLCBzaXplX3RmbGFnLCB6ZXJvcGFkLAotICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIHByZWNpc2lvbiwgJ3UnKTsKLSAgICAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsIHVuc2lnbmVkIGxvbmcpKTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxvbmdsb25nZmxhZykKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihyZWFsYnVmZmVyLCBmbXQsIHZhX2FyZyh2YXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcpKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsIHNpemVfdCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihyZWFsYnVmZmVyLCBmbXQsIHZhX2FyZyh2YXJncywgdW5zaWduZWQgaW50KSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kc3RyaW5nKHJlYWxidWZmZXIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAnaSc6Ci0gICAgICAgICAgICAgICAgbWFrZWZtdChmbXQsIDAsIDAsIDAsIHplcm9wYWQsIHdpZHRoLCBwcmVjaXNpb24sICdpJyk7Ci0gICAgICAgICAgICAgICAgc3ByaW50ZihyZWFsYnVmZmVyLCBmbXQsIHZhX2FyZyh2YXJncywgaW50KSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kc3RyaW5nKHJlYWxidWZmZXIpOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICBjYXNlICd1JzoKICAgICAgICAgICAgIGNhc2UgJ3gnOgotICAgICAgICAgICAgICAgIG1ha2VmbXQoZm10LCAwLCAwLCAwLCB6ZXJvcGFkLCB3aWR0aCwgcHJlY2lzaW9uLCAneCcpOwotICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsIGludCkpOwotICAgICAgICAgICAgICAgIGFwcGVuZHN0cmluZyhyZWFsYnVmZmVyKTsKKyAgICAgICAgICAgIGNhc2UgJ3AnOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgICAgIC8qIHVudXNlZCwgc2luY2Ugd2UgYWxyZWFkeSBoYXZlIHRoZSByZXN1bHQgKi8KKyAgICAgICAgICAgICAgICBpZiAoKmYgPT0gJ3AnKQorICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKHZhcmdzLCB2b2lkICopOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZyh2YXJncywgaW50KTsKKyAgICAgICAgICAgICAgICAvKiBleHRyYWN0IHRoZSByZXN1bHQgZnJvbSBudW1iZXJyZXN1bHRzIGFuZCBhcHBlbmQuICovCisgICAgICAgICAgICAgICAgbGVuID0gc3RybGVuKG51bWJlcnJlc3VsdCk7CisgICAgICAgICAgICAgICAgdW5pY29kZV93cml0ZV9jc3RyKHN0cmluZywgaSwgbnVtYmVycmVzdWx0LCBsZW4pOworICAgICAgICAgICAgICAgIC8qIHNraXAgb3ZlciB0aGUgc2VwYXJhdGluZyAnXDAnICovCisgICAgICAgICAgICAgICAgaSArPSBsZW47CisgICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0ICs9IGxlbjsKKyAgICAgICAgICAgICAgICBhc3NlcnQoKm51bWJlcnJlc3VsdCA9PSAnXDAnKTsKKyAgICAgICAgICAgICAgICBudW1iZXJyZXN1bHQrKzsKKyAgICAgICAgICAgICAgICBhc3NlcnQobnVtYmVycmVzdWx0IDw9IG51bWJlcnJlc3VsdHMgKyBudW1iZXJzaXplKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8qIHVudXNlZCwgc2luY2Ugd2UgYWxyZWFkeSBoYXZlIHRoZSByZXN1bHQgKi8KKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZyh2YXJncywgY2hhciAqKTsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocywgUHlVbmljb2RlX0FTX1VOSUNPREUoKmNhbGxyZXN1bHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoKmNhbGxyZXN1bHQpKTsKLSAgICAgICAgICAgICAgICBzICs9IFB5VW5pY29kZV9HRVRfU0laRSgqY2FsbHJlc3VsdCk7CisgICAgICAgICAgICAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKCpjYWxscmVzdWx0KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQoKmNhbGxyZXN1bHQpIDw9IFB5VW5pY29kZV9LSU5EKHN0cmluZykpOworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHN0cmluZywgaSwgKmNhbGxyZXN1bHQsIDAsIHNpemUpOworICAgICAgICAgICAgICAgIGkgKz0gc2l6ZTsKICAgICAgICAgICAgICAgICAvKiBXZSdyZSBkb25lIHdpdGggdGhlIHVuaWNvZGUoKS9yZXByKCkgPT4gZm9yZ2V0IGl0ICovCiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKCpjYWxscmVzdWx0KTsKICAgICAgICAgICAgICAgICAvKiBzd2l0Y2ggdG8gbmV4dCB1bmljb2RlKCkvcmVwcigpIHJlc3VsdCAqLwpAQCAtMTA4OSwyMyArMjc4MCwyOSBAQAogICAgICAgICAgICAgY2FzZSAnVSc6CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiA9IHZhX2FyZyh2YXJncywgUHlPYmplY3QgKik7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKG9iaik7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHMsIFB5VW5pY29kZV9BU19VTklDT0RFKG9iaiksIHNpemUpOwotICAgICAgICAgICAgICAgIHMgKz0gc2l6ZTsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKG9iaikgPD0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKSk7CisgICAgICAgICAgICAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CisgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoc3RyaW5nLCBpLCBvYmosIDAsIHNpemUpOworICAgICAgICAgICAgICAgIGkgKz0gc2l6ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgJ1YnOgogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqID0gdmFfYXJnKHZhcmdzLCBQeU9iamVjdCAqKTsKICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIGNvbnN0IGNoYXIgKik7CiAgICAgICAgICAgICAgICAgaWYgKG9iaikgewotICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHMsIFB5VW5pY29kZV9BU19VTklDT0RFKG9iaiksIHNpemUpOwotICAgICAgICAgICAgICAgICAgICBzICs9IHNpemU7CisgICAgICAgICAgICAgICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQob2JqKSA8PSBQeVVuaWNvZGVfS0lORChzdHJpbmcpKTsKKyAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoc3RyaW5nLCBpLCBvYmosIDAsIHNpemUpOworICAgICAgICAgICAgICAgICAgICBpICs9IHNpemU7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHMsIFB5VW5pY29kZV9BU19VTklDT0RFKCpjYWxscmVzdWx0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSgqY2FsbHJlc3VsdCkpOwotICAgICAgICAgICAgICAgICAgICBzICs9IFB5VW5pY29kZV9HRVRfU0laRSgqY2FsbHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqY2FsbHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORCgqY2FsbHJlc3VsdCkgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9LSU5EKHN0cmluZykpOworICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhzdHJpbmcsIGksICpjYWxscmVzdWx0LCAwLCBzaXplKTsKKyAgICAgICAgICAgICAgICAgICAgaSArPSBzaXplOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoKmNhbGxyZXN1bHQpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICArK2NhbGxyZXN1bHQ7CkBAIC0xMTE1LDUyICsyODEyLDQ0IEBACiAgICAgICAgICAgICBjYXNlICdSJzoKICAgICAgICAgICAgIGNhc2UgJ0EnOgogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKnVjb3B5OwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgdXNpemU7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCB1cG9zOworICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKCpjYWxscmVzdWx0KTsKICAgICAgICAgICAgICAgICAvKiB1bnVzZWQsIHNpbmNlIHdlIGFscmVhZHkgaGF2ZSB0aGUgcmVzdWx0ICovCiAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZyh2YXJncywgUHlPYmplY3QgKik7Ci0gICAgICAgICAgICAgICAgdWNvcHkgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqY2FsbHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgdXNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUoKmNhbGxyZXN1bHQpOwotICAgICAgICAgICAgICAgIGZvciAodXBvcyA9IDA7IHVwb3M8dXNpemU7KQotICAgICAgICAgICAgICAgICAgICAqcysrID0gdWNvcHlbdXBvcysrXTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQoKmNhbGxyZXN1bHQpIDw9IFB5VW5pY29kZV9LSU5EKHN0cmluZykpOworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHN0cmluZywgaSwgKmNhbGxyZXN1bHQsIDAsICBzaXplKTsKKyAgICAgICAgICAgICAgICBpICs9IHNpemU7CiAgICAgICAgICAgICAgICAgLyogV2UncmUgZG9uZSB3aXRoIHRoZSB1bmljb2RlKCkvcmVwcigpID0+IGZvcmdldCBpdCAqLwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRigqY2FsbHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgLyogc3dpdGNoIHRvIG5leHQgdW5pY29kZSgpL3JlcHIoKSByZXN1bHQgKi8KICAgICAgICAgICAgICAgICArK2NhbGxyZXN1bHQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlICdwJzoKLSAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVwIiwgdmFfYXJnKHZhcmdzLCB2b2lkKikpOwotICAgICAgICAgICAgICAgIC8qICVwIGlzIGlsbC1kZWZpbmVkOiAgZW5zdXJlIGxlYWRpbmcgMHguICovCi0gICAgICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnWCcpCi0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlclsxXSA9ICd4JzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChidWZmZXJbMV0gIT0gJ3gnKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1lbW1vdmUoYnVmZmVyKzIsIGJ1ZmZlciwgc3RybGVuKGJ1ZmZlcikrMSk7Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlclswXSA9ICcwJzsKLSAgICAgICAgICAgICAgICAgICAgYnVmZmVyWzFdID0gJ3gnOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhcHBlbmRzdHJpbmcoYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgICAgICpzKysgPSAnJSc7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIGkrKywgJyUnKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYXBwZW5kc3RyaW5nKHApOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuID0gc3RybGVuKHApOworICAgICAgICAgICAgICAgIHVuaWNvZGVfd3JpdGVfY3N0cihzdHJpbmcsIGksIHAsIGxlbik7CisgICAgICAgICAgICAgICAgaSArPSBsZW47CisgICAgICAgICAgICAgICAgYXNzZXJ0KGkgPT0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKSk7CiAgICAgICAgICAgICAgICAgZ290byBlbmQ7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgKnMrKyA9ICpmOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChpIDwgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKSk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgaSsrLCAqZik7CisgICAgICAgIH0KICAgICB9CisgICAgYXNzZXJ0KGkgPT0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKSk7CiAKICAgZW5kOgogICAgIGlmIChjYWxscmVzdWx0cykKICAgICAgICAgUHlPYmplY3RfRnJlZShjYWxscmVzdWx0cyk7Ci0gICAgaWYgKGFidWZmZXIpCi0gICAgICAgIFB5T2JqZWN0X0ZyZWUoYWJ1ZmZlcik7Ci0gICAgUHlVbmljb2RlX1Jlc2l6ZSgmc3RyaW5nLCBzIC0gUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyaW5nKSk7Ci0gICAgcmV0dXJuIHN0cmluZzsKKyAgICBpZiAobnVtYmVycmVzdWx0cykKKyAgICAgICAgUHlPYmplY3RfRnJlZShudW1iZXJyZXN1bHRzKTsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQoc3RyaW5nKTsKICAgZmFpbDoKICAgICBpZiAoY2FsbHJlc3VsdHMpIHsKICAgICAgICAgUHlPYmplY3QgKipjYWxscmVzdWx0MiA9IGNhbGxyZXN1bHRzOwpAQCAtMTE3MCwxMyArMjg1OSwxMSBAQAogICAgICAgICB9CiAgICAgICAgIFB5T2JqZWN0X0ZyZWUoY2FsbHJlc3VsdHMpOwogICAgIH0KLSAgICBpZiAoYWJ1ZmZlcikKLSAgICAgICAgUHlPYmplY3RfRnJlZShhYnVmZmVyKTsKKyAgICBpZiAobnVtYmVycmVzdWx0cykKKyAgICAgICAgUHlPYmplY3RfRnJlZShudW1iZXJyZXN1bHRzKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotI3VuZGVmIGFwcGVuZHN0cmluZwotCiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfRnJvbUZvcm1hdChjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKQEAgLTExOTMsNiArMjg4MCw4IEBACiAgICAgcmV0dXJuIHJldDsKIH0KIAorI2lmZGVmIEhBVkVfV0NIQVJfSAorCiAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIFB5VW5pY29kZV9Bc1dpZGVDaGFyKCkgYW5kIFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKCk6CiAgICBjb252ZXJ0IGEgVW5pY29kZSBvYmplY3QgdG8gYSB3aWRlIGNoYXJhY3RlciBzdHJpbmcuCiAKQEAgLTEyMDMsMTAzICsyODkyLDI3IEBACiAgICAgIGNoYXJhY3Rlcikgd3JpdHRlbiBpbnRvIHcuIFdyaXRlIGF0IG1vc3Qgc2l6ZSB3aWRlIGNoYXJhY3RlcnMgKGluY2x1ZGluZwogICAgICB0aGUgbnVsbCBjaGFyYWN0ZXIpLiAqLwogc3RhdGljIFB5X3NzaXplX3QKLXVuaWNvZGVfYXN3aWRlY2hhcihQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGUsCit1bmljb2RlX2Fzd2lkZWNoYXIoUHlPYmplY3QgKnVuaWNvZGUsCiAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqdywKICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUpCiB7Ci0jaWYgUHlfVU5JQ09ERV9TSVpFID09IFNJWkVPRl9XQ0hBUl9UCiAgICAgUHlfc3NpemVfdCByZXM7CisgICAgY29uc3Qgd2NoYXJfdCAqd3N0cjsKKworICAgIHdzdHIgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh1bmljb2RlLCAmcmVzKTsKKyAgICBpZiAod3N0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKICAgICBpZiAodyAhPSBOVUxMKSB7Ci0gICAgICAgIHJlcyA9IFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKTsKICAgICAgICAgaWYgKHNpemUgPiByZXMpCiAgICAgICAgICAgICBzaXplID0gcmVzICsgMTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzID0gc2l6ZTsKLSAgICAgICAgbWVtY3B5KHcsIHVuaWNvZGUtPnN0ciwgc2l6ZSAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgIFB5X01FTUNQWSh3LCB3c3RyLCBzaXplICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpICsgMTsKLSNlbGlmIFB5X1VOSUNPREVfU0laRSA9PSAyICYmIFNJWkVPRl9XQ0hBUl9UID09IDQKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICp1OwotICAgIGNvbnN0IFB5X1VOSUNPREUgKnVlbmQ7Ci0gICAgY29uc3Qgd2NoYXJfdCAqd29yaWcsICp3ZW5kOwotICAgIFB5X3NzaXplX3QgbmNoYXI7Ci0KLSAgICB1ID0gUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7Ci0gICAgdWVuZCA9IHUgKyBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSk7Ci0gICAgaWYgKHcgIT0gTlVMTCkgewotICAgICAgICB3b3JpZyA9IHc7Ci0gICAgICAgIHdlbmQgPSB3ICsgc2l6ZTsKLSAgICAgICAgd2hpbGUgKHUgIT0gdWVuZCAmJiB3ICE9IHdlbmQpIHsKLSAgICAgICAgICAgIGlmICgweEQ4MDAgPD0gdVswXSAmJiB1WzBdIDw9IDB4REJGRgotICAgICAgICAgICAgICAgICYmIDB4REMwMCA8PSB1WzFdICYmIHVbMV0gPD0gMHhERkZGKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICp3ID0gKCgodVswXSAmIDB4M0ZGKSA8PCAxMCkgfCAodVsxXSAmIDB4M0ZGKSkgKyAweDEwMDAwOwotICAgICAgICAgICAgICAgIHUgKz0gMjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICp3ID0gKnU7Ci0gICAgICAgICAgICAgICAgdSsrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdysrOwotICAgICAgICB9Ci0gICAgICAgIGlmICh3ICE9IHdlbmQpCi0gICAgICAgICAgICAqdyA9IEwnXDAnOwotICAgICAgICByZXR1cm4gdyAtIHdvcmlnOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgbmNoYXIgPSAxOyAvKiBudWxsIGNoYXJhY3RlciBhdCB0aGUgZW5kICovCi0gICAgICAgIHdoaWxlICh1ICE9IHVlbmQpIHsKLSAgICAgICAgICAgIGlmICgweEQ4MDAgPD0gdVswXSAmJiB1WzBdIDw9IDB4REJGRgotICAgICAgICAgICAgICAgICYmIDB4REMwMCA8PSB1WzFdICYmIHVbMV0gPD0gMHhERkZGKQotICAgICAgICAgICAgICAgIHUgKz0gMjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1Kys7Ci0gICAgICAgICAgICBuY2hhcisrOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBuY2hhcjsKLSNlbGlmIFB5X1VOSUNPREVfU0laRSA9PSA0ICYmIFNJWkVPRl9XQ0hBUl9UID09IDIKLSAgICByZWdpc3RlciBQeV9VTklDT0RFICp1LCAqdWVuZCwgb3JkaW5hbDsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7Ci0gICAgd2NoYXJfdCAqd29yaWcsICp3ZW5kOwotICAgIFB5X3NzaXplX3QgbmNoYXI7Ci0KLSAgICB1ID0gUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7Ci0gICAgdWVuZCA9IHUgKyBQeVVuaWNvZGVfR0VUX1NJWkUodSk7Ci0gICAgaWYgKHcgIT0gTlVMTCkgewotICAgICAgICB3b3JpZyA9IHc7Ci0gICAgICAgIHdlbmQgPSB3ICsgc2l6ZTsKLSAgICAgICAgd2hpbGUgKHUgIT0gdWVuZCAmJiB3ICE9IHdlbmQpIHsKLSAgICAgICAgICAgIG9yZGluYWwgPSAqdTsKLSAgICAgICAgICAgIGlmIChvcmRpbmFsID4gMHhmZmZmKSB7Ci0gICAgICAgICAgICAgICAgb3JkaW5hbCAtPSAweDEwMDAwOwotICAgICAgICAgICAgICAgICp3KysgPSAweEQ4MDAgfCAob3JkaW5hbCA+PiAxMCk7Ci0gICAgICAgICAgICAgICAgKncrKyA9IDB4REMwMCB8IChvcmRpbmFsICYgMHgzRkYpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICp3KysgPSBvcmRpbmFsOwotICAgICAgICAgICAgdSsrOwotICAgICAgICB9Ci0gICAgICAgIGlmICh3ICE9IHdlbmQpCi0gICAgICAgICAgICAqdyA9IDA7Ci0gICAgICAgIHJldHVybiB3IC0gd29yaWc7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBuY2hhciA9IDE7IC8qIG51bGwgY2hhcmFjdGVyICovCi0gICAgICAgIHdoaWxlICh1ICE9IHVlbmQpIHsKLSAgICAgICAgICAgIGlmICgqdSA+IDB4ZmZmZikKLSAgICAgICAgICAgICAgICBuY2hhciArPSAyOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG5jaGFyKys7Ci0gICAgICAgICAgICB1Kys7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5jaGFyOwotICAgIH0KLSNlbHNlCi0jICBlcnJvciAidW5zdXBwb3J0ZWQgd2NoYXJfdCBhbmQgUHlfVU5JQ09ERSBzaXplcywgc2VlIGlzc3VlICM4NjcwIgotI2VuZGlmCisgICAgICAgIHJldHVybiByZXMgKyAxOwogfQogCiBQeV9zc2l6ZV90CkBAIC0xMzExLDcgKzI5MjQsNyBAQAogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICByZXR1cm4gdW5pY29kZV9hc3dpZGVjaGFyKChQeVVuaWNvZGVPYmplY3QqKXVuaWNvZGUsIHcsIHNpemUpOworICAgIHJldHVybiB1bmljb2RlX2Fzd2lkZWNoYXIodW5pY29kZSwgdywgc2l6ZSk7CiB9CiAKIHdjaGFyX3QqCkBAIC0xMzI2LDcgKzI5MzksOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBidWZsZW4gPSB1bmljb2RlX2Fzd2lkZWNoYXIoKFB5VW5pY29kZU9iamVjdCAqKXVuaWNvZGUsIE5VTEwsIDApOworICAgIGJ1ZmxlbiA9IHVuaWNvZGVfYXN3aWRlY2hhcih1bmljb2RlLCBOVUxMLCAwKTsKKyAgICBpZiAoYnVmbGVuID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUFlfU1NJWkVfVF9NQVggLyBzaXplb2Yod2NoYXJfdCkgPCBidWZsZW4pIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMzM3LDUwICsyOTUyLDU0IEBACiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBidWZsZW4gPSB1bmljb2RlX2Fzd2lkZWNoYXIoKFB5VW5pY29kZU9iamVjdCAqKXVuaWNvZGUsIGJ1ZmZlciwgYnVmbGVuKTsKKyAgICBidWZsZW4gPSB1bmljb2RlX2Fzd2lkZWNoYXIodW5pY29kZSwgYnVmZmVyLCBidWZsZW4pOworICAgIGlmIChidWZsZW4gPT0gLTEpIHsKKyAgICAgICAgUHlNZW1fRlJFRShidWZmZXIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgaWYgKHNpemUgIT0gTlVMTCkKICAgICAgICAgKnNpemUgPSBidWZsZW47CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9XQ0hBUl9IICovCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbU9yZGluYWwoaW50IG9yZGluYWwpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRnJvbU9yZGluYWwoaW50IG9yZGluYWwpCiB7Ci0gICAgUHlfVU5JQ09ERSBzWzJdOwotCi0gICAgaWYgKG9yZGluYWwgPCAwIHx8IG9yZGluYWwgPiAweDEwZmZmZikgeworICAgIFB5T2JqZWN0ICp2OworICAgIGlmIChvcmRpbmFsIDwgMCB8fCBvcmRpbmFsID4gTUFYX1VOSUNPREUpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2hyKCkgYXJnIG5vdCBpbiByYW5nZSgweDExMDAwMCkiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgIGlmIChvcmRpbmFsID4gMHhmZmZmKSB7Ci0gICAgICAgIG9yZGluYWwgLT0gMHgxMDAwMDsKLSAgICAgICAgc1swXSA9IDB4RDgwMCB8IChvcmRpbmFsID4+IDEwKTsKLSAgICAgICAgc1sxXSA9IDB4REMwMCB8IChvcmRpbmFsICYgMHgzRkYpOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIDIpOwotICAgIH0KLSNlbmRpZgorICAgIGlmICgoUHlfVUNTNClvcmRpbmFsIDwgMjU2KQorICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKCh1bnNpZ25lZCBjaGFyKW9yZGluYWwpOwogCi0gICAgc1swXSA9IChQeV9VTklDT0RFKW9yZGluYWw7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCAxKTsKKyAgICB2ID0gUHlVbmljb2RlX05ldygxLCBvcmRpbmFsKTsKKyAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlX0tJTkQodiksIFB5VW5pY29kZV9EQVRBKHYpLCAwLCBvcmRpbmFsKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHYsIDEpKTsKKyAgICByZXR1cm4gdjsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Gcm9tT2JqZWN0KHJlZ2lzdGVyIFB5T2JqZWN0ICpvYmopCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRnJvbU9iamVjdChyZWdpc3RlciBQeU9iamVjdCAqb2JqKQogewogICAgIC8qIFhYWCBQZXJoYXBzIHdlIHNob3VsZCBtYWtlIHRoaXMgQVBJIGFuIGFsaWFzIG9mCiAgICAgICAgUHlPYmplY3RfU3RyKCkgaW5zdGVhZCA/ISAqLwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBQeV9JTkNSRUYob2JqKTsKICAgICAgICAgcmV0dXJuIG9iajsKICAgICB9CiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKSB7CiAgICAgICAgIC8qIEZvciBhIFVuaWNvZGUgc3VidHlwZSB0aGF0J3Mgbm90IGEgVW5pY29kZSBvYmplY3QsCiAgICAgICAgICAgIHJldHVybiBhIHRydWUgVW5pY29kZSBvYmplY3Qgd2l0aCB0aGUgc2FtZSBkYXRhLiAqLwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKFB5VW5pY29kZV9BU19VTklDT0RFKG9iaiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKG9iaikpOworICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Db3B5KG9iaik7CiAgICAgfQogICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICJDYW4ndCBjb252ZXJ0ICclLjEwMHMnIG9iamVjdCB0byBzdHIgaW1wbGljaXRseSIsCkBAIC0xMzg4LDkgKzMwMDcsMTAgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdChyZWdpc3RlciBQeU9iamVjdCAqb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KHJlZ2lzdGVyIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5X2J1ZmZlciBidWZmZXI7CiAgICAgUHlPYmplY3QgKnY7CkBAIC0xNDQ3LDYgKzMwNjcsMTAgQEAKICAgICBjaGFyICpsOwogICAgIGNoYXIgKmxfZW5kOwogCisgICAgaWYgKGVuY29kaW5nID09IE5VTEwpIHsKKyAgICAgICAgc3RyY3B5KGxvd2VyLCAidXRmLTgiKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQogICAgIGUgPSBlbmNvZGluZzsKICAgICBsID0gbG93ZXI7CiAgICAgbF9lbmQgPSAmbG93ZXJbbG93ZXJfbGVuIC0gMV07CkBAIC0xNDY4LDI2ICszMDkyLDI2IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlKGNvbnN0IGNoYXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGUoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5T2JqZWN0ICpidWZmZXIgPSBOVUxMLCAqdW5pY29kZTsKICAgICBQeV9idWZmZXIgaW5mbzsKICAgICBjaGFyIGxvd2VyWzExXTsgIC8qIEVub3VnaCBmb3IgYW55IGVuY29kaW5nIHNob3J0Y3V0ICovCiAKLSAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKLSAgICAgICAgZW5jb2RpbmcgPSBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nKCk7Ci0KICAgICAvKiBTaG9ydGN1dHMgZm9yIGNvbW1vbiBkZWZhdWx0IGVuY29kaW5ncyAqLwogICAgIGlmIChfUHlfbm9ybWFsaXplX2VuY29kaW5nKGVuY29kaW5nLCBsb3dlciwgc2l6ZW9mKGxvd2VyKSkpIHsKLSAgICAgICAgaWYgKHN0cmNtcChsb3dlciwgInV0Zi04IikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOChzLCBzaXplLCBlcnJvcnMpOworICAgICAgICBpZiAoKHN0cmNtcChsb3dlciwgInV0Zi04IikgPT0gMCkgfHwKKyAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJ1dGY4IikgPT0gMCkpCisgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCBlcnJvcnMsIE5VTEwpOwogICAgICAgICBlbHNlIGlmICgoc3RyY21wKGxvd2VyLCAibGF0aW4tMSIpID09IDApIHx8CisgICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJsYXRpbjEiKSA9PSAwKSB8fAogICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAiaXNvLTg4NTktMSIpID09IDApKQogICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMYXRpbjEocywgc2l6ZSwgZXJyb3JzKTsKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoSEFWRV9VU0FCTEVfV0NIQVJfVCkKKyNpZmRlZiBIQVZFX01CQ1MKICAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibWJjcyIpID09IDApCiAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZU1CQ1Mocywgc2l6ZSwgZXJyb3JzKTsKICNlbmRpZgpAQCAtMTUxNywxNiArMzE0MSwxNyBAQAogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogICAgIFB5X0RFQ1JFRihidWZmZXIpOwotICAgIHJldHVybiB1bmljb2RlOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh1bmljb2RlKTsKIAogICBvbkVycm9yOgogICAgIFB5X1hERUNSRUYoYnVmZmVyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QoUHlPYmplY3QgKnVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QoUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgUHlPYmplY3QgKnY7CiAKQEAgLTE1NDIsMTUgKzMxNjcsMTYgQEAKICAgICB2ID0gUHlDb2RlY19EZWNvZGUodW5pY29kZSwgZW5jb2RpbmcsIGVycm9ycyk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwotICAgIHJldHVybiB2OworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh2KTsKIAogICBvbkVycm9yOgogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqdjsKIApAQCAtMTU3MywxNiArMzE5OSwxNyBAQAogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHYpOwogCiAgIG9uRXJyb3I6CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRW5jb2RlKGNvbnN0IFB5X1VOSUNPREUgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGUoY29uc3QgUHlfVU5JQ09ERSAqcywKKyAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5T2JqZWN0ICp2LCAqdW5pY29kZTsKIApAQCAtMTU5NCw5ICszMjIxLDEwIEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0KFB5T2JqZWN0ICp1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0KFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5T2JqZWN0ICp2OwogCkBAIC0xNjE4LDE3ICszMjQ2LDE5MiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgc2l6ZV90Cit3Y3N0b21ic19lcnJvcnBvcyhjb25zdCB3Y2hhcl90ICp3c3RyKQoreworICAgIHNpemVfdCBsZW47CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgIHdjaGFyX3QgYnVmWzNdOworI2Vsc2UKKyAgICB3Y2hhcl90IGJ1ZlsyXTsKKyNlbmRpZgorICAgIGNoYXIgb3V0YnVmW01CX0xFTl9NQVhdOworICAgIGNvbnN0IHdjaGFyX3QgKnN0YXJ0LCAqcHJldmlvdXM7CisKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSAyCisgICAgYnVmWzJdID0gMDsKKyNlbHNlCisgICAgYnVmWzFdID0gMDsKKyNlbmRpZgorICAgIHN0YXJ0ID0gd3N0cjsKKyAgICB3aGlsZSAoKndzdHIgIT0gTCdcMCcpCisgICAgeworICAgICAgICBwcmV2aW91cyA9IHdzdHI7CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURSh3c3RyWzBdKQorICAgICAgICAgICAgJiYgUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKHdzdHJbMV0pKQorICAgICAgICB7CisgICAgICAgICAgICBidWZbMF0gPSB3c3RyWzBdOworICAgICAgICAgICAgYnVmWzFdID0gd3N0clsxXTsKKyAgICAgICAgICAgIHdzdHIgKz0gMjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZlswXSA9ICp3c3RyOworICAgICAgICAgICAgYnVmWzFdID0gMDsKKyAgICAgICAgICAgIHdzdHIrKzsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgYnVmWzBdID0gKndzdHI7CisgICAgICAgIHdzdHIrKzsKKyNlbmRpZgorICAgICAgICBsZW4gPSB3Y3N0b21icyhvdXRidWYsIGJ1Ziwgc2l6ZW9mKG91dGJ1ZikpOworICAgICAgICBpZiAobGVuID09IChzaXplX3QpLTEpCisgICAgICAgICAgICByZXR1cm4gcHJldmlvdXMgLSBzdGFydDsKKyAgICB9CisKKyAgICAvKiBmYWlsZWQgdG8gZmluZCB0aGUgdW5lbmNvZGFibGUgY2hhcmFjdGVyICovCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2xvY2FsZV9lcnJvcl9oYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpzdXJyb2dhdGVlc2NhcGUpCit7CisgICAgaWYgKGVycm9ycyA9PSBOVUxMKSB7CisgICAgICAgICpzdXJyb2dhdGVlc2NhcGUgPSAwOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApIHsKKyAgICAgICAgKnN1cnJvZ2F0ZWVzY2FwZSA9IDA7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoc3RyY21wKGVycm9ycywgInN1cnJvZ2F0ZWVzY2FwZSIpID09IDApIHsKKyAgICAgICAgKnN1cnJvZ2F0ZWVzY2FwZSA9IDE7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgIm9ubHkgJ3N0cmljdCcgYW5kICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXJzICIKKyAgICAgICAgICAgICAgICAgImFyZSBzdXBwb3J0ZWQsIG5vdCAnJXMnIiwKKyAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVMb2NhbGUoUHlPYmplY3QgKnVuaWNvZGUsIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBQeV9zc2l6ZV90IHdsZW4sIHdsZW4yOworICAgIHdjaGFyX3QgKndzdHI7CisgICAgUHlPYmplY3QgKmJ5dGVzID0gTlVMTDsKKyAgICBjaGFyICplcnJtc2c7CisgICAgUHlPYmplY3QgKnJlYXNvbjsKKyAgICBQeU9iamVjdCAqZXhjOworICAgIHNpemVfdCBlcnJvcl9wb3M7CisgICAgaW50IHN1cnJvZ2F0ZWVzY2FwZTsKKworICAgIGlmIChsb2NhbGVfZXJyb3JfaGFuZGxlcihlcnJvcnMsICZzdXJyb2dhdGVlc2NhcGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB3c3RyID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcodW5pY29kZSwgJndsZW4pOworICAgIGlmICh3c3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgd2xlbjIgPSB3Y3NsZW4od3N0cik7CisgICAgaWYgKHdsZW4yICE9IHdsZW4pIHsKKyAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChzdXJyb2dhdGVlc2NhcGUpIHsKKyAgICAgICAgLyogbG9jYWxlIGVuY29kaW5nIHdpdGggc3Vycm9nYXRlZXNjYXBlICovCisgICAgICAgIGNoYXIgKnN0cjsKKworICAgICAgICBzdHIgPSBfUHlfd2NoYXIyY2hhcih3c3RyLCAmZXJyb3JfcG9zKTsKKyAgICAgICAgaWYgKHN0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoZXJyb3JfcG9zID09IChzaXplX3QpLTEpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVuY29kZV9lcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworCisgICAgICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nKHN0cik7CisgICAgICAgIFB5TWVtX0ZyZWUoc3RyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHNpemVfdCBsZW4sIGxlbjI7CisKKyAgICAgICAgbGVuID0gd2NzdG9tYnMoTlVMTCwgd3N0ciwgMCk7CisgICAgICAgIGlmIChsZW4gPT0gKHNpemVfdCktMSkgeworICAgICAgICAgICAgZXJyb3JfcG9zID0gKHNpemVfdCktMTsKKyAgICAgICAgICAgIGdvdG8gZW5jb2RlX2Vycm9yOworICAgICAgICB9CisKKyAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGxlbik7CisgICAgICAgIGlmIChieXRlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBsZW4yID0gd2NzdG9tYnMoUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCB3c3RyLCBsZW4rMSk7CisgICAgICAgIGlmIChsZW4yID09IChzaXplX3QpLTEgfHwgbGVuMiA+IGxlbikgeworICAgICAgICAgICAgZXJyb3JfcG9zID0gKHNpemVfdCktMTsKKyAgICAgICAgICAgIGdvdG8gZW5jb2RlX2Vycm9yOworICAgICAgICB9CisgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgfQorICAgIHJldHVybiBieXRlczsKKworZW5jb2RlX2Vycm9yOgorICAgIGVycm1zZyA9IHN0cmVycm9yKGVycm5vKTsKKyAgICBhc3NlcnQoZXJybXNnICE9IE5VTEwpOworCisgICAgaWYgKGVycm9yX3BvcyA9PSAoc2l6ZV90KS0xKQorICAgICAgICBlcnJvcl9wb3MgPSB3Y3N0b21ic19lcnJvcnBvcyh3c3RyKTsKKworICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgUHlfWERFQ1JFRihieXRlcyk7CisKKyAgICBpZiAoZXJybXNnICE9IE5VTEwpIHsKKyAgICAgICAgc2l6ZV90IGVycmxlbjsKKyAgICAgICAgd3N0ciA9IF9QeV9jaGFyMndjaGFyKGVycm1zZywgJmVycmxlbik7CisgICAgICAgIGlmICh3c3RyICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHJlYXNvbiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod3N0ciwgZXJybGVuKTsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZXJybXNnID0gTlVMTDsKKyAgICB9CisgICAgaWYgKGVycm1zZyA9PSBOVUxMKQorICAgICAgICByZWFzb24gPSBQeVVuaWNvZGVfRnJvbVN0cmluZygKKyAgICAgICAgICAgICJ3Y3N0b21icygpIGVuY291bnRlcmVkIGFuIHVuZW5jb2RhYmxlICIKKyAgICAgICAgICAgICJ3aWRlIGNoYXJhY3RlciIpOworICAgIGlmIChyZWFzb24gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBleGMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oUHlFeGNfVW5pY29kZUVuY29kZUVycm9yLCAic09ubk8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9jYWxlIiwgdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpZXJyb3JfcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCkoZXJyb3JfcG9zKzEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24pOworICAgIFB5X0RFQ1JFRihyZWFzb24pOworICAgIGlmIChleGMgIT0gTlVMTCkgeworICAgICAgICBQeUNvZGVjX1N0cmljdEVycm9ycyhleGMpOworICAgICAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KFB5T2JqZWN0ICp1bmljb2RlKQogewotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChIQVZFX1VTQUJMRV9XQ0hBUl9UKQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTUJDUyhQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyNpZmRlZiBIQVZFX01CQ1MKKyAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgdW5pY29kZSwgTlVMTCk7CiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCAic3Vycm9nYXRlZXNjYXBlIik7CiAjZWxzZQogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOwogICAgIC8qIEJvb3RzdHJhcCBjaGVjazogaWYgdGhlIGZpbGVzeXN0ZW0gY29kZWMgaXMgaW1wbGVtZW50ZWQgaW4gUHl0aG9uLCB3ZQpAQCAtMTY0Niw0NiArMzQ0OSwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlZXNjYXBlIik7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICAvKiBsb2NhbGUgZW5jb2Rpbmcgd2l0aCBzdXJyb2dhdGVlc2NhcGUgKi8KLSAgICAgICAgd2NoYXJfdCAqd2NoYXI7Ci0gICAgICAgIGNoYXIgKmJ5dGVzOwotICAgICAgICBQeU9iamVjdCAqYnl0ZXNfb2JqOwotICAgICAgICBzaXplX3QgZXJyb3JfcG9zOwotCi0gICAgICAgIHdjaGFyID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcodW5pY29kZSwgTlVMTCk7Ci0gICAgICAgIGlmICh3Y2hhciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGJ5dGVzID0gX1B5X3djaGFyMmNoYXIod2NoYXIsICZlcnJvcl9wb3MpOwotICAgICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKGVycm9yX3BvcyAhPSAoc2l6ZV90KS0xKSB7Ci0gICAgICAgICAgICAgICAgY2hhciAqZXJybXNnID0gc3RyZXJyb3IoZXJybm8pOwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgICAgICAgICAgICAgIGlmIChlcnJtc2cgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZXJybXNnID0gIlB5X3djaGFyMmNoYXIoKSBmYWlsZWQiOwotICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywKLSAgICAgICAgICAgICAgICAgICAgImZpbGVzeXN0ZW1lbmNvZGluZyIsCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLCBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgIGVycm9yX3BvcywgZXJyb3JfcG9zKzEsCi0gICAgICAgICAgICAgICAgICAgIGVycm1zZyk7Ci0gICAgICAgICAgICAgICAgUHlfWERFQ1JFRihleGMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICBQeU1lbV9GcmVlKHdjaGFyKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIFB5TWVtX0ZyZWUod2NoYXIpOwotCi0gICAgICAgIGJ5dGVzX29iaiA9IFB5Qnl0ZXNfRnJvbVN0cmluZyhieXRlcyk7Ci0gICAgICAgIFB5TWVtX0ZyZWUoYnl0ZXMpOwotICAgICAgICByZXR1cm4gYnl0ZXNfb2JqOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUxvY2FsZSh1bmljb2RlLCAic3Vycm9nYXRlZXNjYXBlIik7CiAgICAgfQogI2VuZGlmCiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5T2JqZWN0ICp2OwogICAgIGNoYXIgbG93ZXJbMTFdOyAgLyogRW5vdWdoIGZvciBhbnkgZW5jb2Rpbmcgc2hvcnRjdXQgKi8KQEAgLTE2OTUsNDYgKzM0NjcsMjcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGVuY29kaW5nID09IE5VTEwpCi0gICAgICAgIGVuY29kaW5nID0gUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZygpOwotCiAgICAgLyogU2hvcnRjdXRzIGZvciBjb21tb24gZGVmYXVsdCBlbmNvZGluZ3MgKi8KICAgICBpZiAoX1B5X25vcm1hbGl6ZV9lbmNvZGluZyhlbmNvZGluZywgbG93ZXIsIHNpemVvZihsb3dlcikpKSB7Ci0gICAgICAgIGlmIChzdHJjbXAobG93ZXIsICJ1dGYtOCIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7CisgICAgICAgIGlmICgoc3RyY21wKGxvd2VyLCAidXRmLTgiKSA9PSAwKSB8fAorICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgInV0ZjgiKSA9PSAwKSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGVycm9ycyA9PSBOVUxMIHx8IHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSA9PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBOVUxMKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKKyAgICAgICAgfQogICAgICAgICBlbHNlIGlmICgoc3RyY21wKGxvd2VyLCAibGF0aW4tMSIpID09IDApIHx8CisgICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJsYXRpbjEiKSA9PSAwKSB8fAogICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAiaXNvLTg4NTktMSIpID09IDApKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVMYXRpbjEoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOwotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChIQVZFX1VTQUJMRV9XQ0hBUl9UKQorICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKKyNpZmRlZiBIQVZFX01CQ1MKICAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibWJjcyIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZU1CQ1MoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7CisgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgdW5pY29kZSwgZXJyb3JzKTsKICNlbmRpZgogICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJhc2NpaSIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUFTQ0lJKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7CisgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CiAgICAgfQotICAgIC8qIER1cmluZyBib290c3RyYXAsIHdlIG1heSBuZWVkIHRvIGZpbmQgdGhlIGVuY29kaW5ncwotICAgICAgIHBhY2thZ2UsIHRvIGxvYWQgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nLCBhbmQgcmVxdWlyZSB0aGUKLSAgICAgICBmaWxlIHN5c3RlbSBlbmNvZGluZyBpbiBvcmRlciB0byBsb2FkIHRoZSBlbmNvZGluZ3MKLSAgICAgICBwYWNrYWdlLgotCi0gICAgICAgQnJlYWsgb3V0IG9mIHRoaXMgZGVwZW5kZW5jeSBieSBhc3N1bWluZyB0aGF0IHRoZSBwYXRoIHRvCi0gICAgICAgdGhlIGVuY29kaW5ncyBtb2R1bGUgaXMgQVNDSUktb25seS4gIFhYWCBjb3VsZCB0cnkgd2NzdG9tYnMKLSAgICAgICBpbnN0ZWFkLCBpZiB0aGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgaXMgdGhlIGxvY2FsZSdzCi0gICAgICAgZW5jb2RpbmcuICovCi0gICAgaWYgKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgJiYKLSAgICAgICAgICAgICBzdHJjbXAoZW5jb2RpbmcsIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcpID09IDAgJiYKLSAgICAgICAgICAgICAhUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwLT5jb2RlY3NfaW5pdGlhbGl6ZWQpCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQVNDSUkoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7CiAKICAgICAvKiBFbmNvZGUgdmlhIHRoZSBjb2RlYyByZWdpc3RyeSAqLwogICAgIHYgPSBQeUNvZGVjX0VuY29kZSh1bmljb2RlLCBlbmNvZGluZywgZXJyb3JzKTsKQEAgLTE3NzAsOSArMzUyMywxMCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqdjsKIApAQCAtMTgwMSwyNCArMzU1NSwxNTEgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKl9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorc3RhdGljIHNpemVfdAorbWJzdG93Y3NfZXJyb3Jwb3MoY29uc3QgY2hhciAqc3RyLCBzaXplX3QgbGVuKQogewotICAgIFB5T2JqZWN0ICp2ID0gKChQeVVuaWNvZGVPYmplY3QgKil1bmljb2RlKS0+ZGVmZW5jOwotICAgIGlmICh2KQotICAgICAgICByZXR1cm4gdjsKLSAgICBpZiAoZXJyb3JzICE9IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIm5vbi1OVUxMIGVuY29kaW5nIGluIF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyIpOwotICAgIHYgPSBQeVVuaWNvZGVfRW5jb2RlVVRGOChQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICBpZiAoIXYpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgICgoUHlVbmljb2RlT2JqZWN0ICopdW5pY29kZSktPmRlZmVuYyA9IHY7Ci0gICAgcmV0dXJuIHY7CisjaWZkZWYgSEFWRV9NQlJUT1dDCisgICAgY29uc3QgY2hhciAqc3RhcnQgPSBzdHI7CisgICAgbWJzdGF0ZV90IG1iczsKKyAgICBzaXplX3QgY29udmVydGVkOworICAgIHdjaGFyX3QgY2g7CisKKyAgICBtZW1zZXQoJm1icywgMCwgc2l6ZW9mIG1icyk7CisgICAgd2hpbGUgKGxlbikKKyAgICB7CisgICAgICAgIGNvbnZlcnRlZCA9IG1icnRvd2MoJmNoLCAoY2hhciopc3RyLCBsZW4sICZtYnMpOworICAgICAgICBpZiAoY29udmVydGVkID09IDApCisgICAgICAgICAgICAvKiBSZWFjaGVkIGVuZCBvZiBzdHJpbmcgKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoY29udmVydGVkID09IChzaXplX3QpLTEgfHwgY29udmVydGVkID09IChzaXplX3QpLTIpIHsKKyAgICAgICAgICAgIC8qIENvbnZlcnNpb24gZXJyb3Igb3IgaW5jb21wbGV0ZSBjaGFyYWN0ZXIgKi8KKyAgICAgICAgICAgIHJldHVybiBzdHIgLSBzdGFydDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN0ciArPSBjb252ZXJ0ZWQ7CisgICAgICAgICAgICBsZW4gLT0gY29udmVydGVkOworICAgICAgICB9CisgICAgfQorICAgIC8qIGZhaWxlZCB0byBmaW5kIHRoZSB1bmRlY29kYWJsZSBieXRlIHNlcXVlbmNlICovCisgICAgcmV0dXJuIDA7CisjZW5kaWYKKyAgICByZXR1cm4gMDsKIH0KIAogUHlPYmplY3QqCitQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZShjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIHdjaGFyX3Qgc21hbGxidWZbMjU2XTsKKyAgICBzaXplX3Qgc21hbGxidWZfbGVuID0gUHlfQVJSQVlfTEVOR1RIKHNtYWxsYnVmKTsKKyAgICB3Y2hhcl90ICp3c3RyOworICAgIHNpemVfdCB3bGVuLCB3bGVuMjsKKyAgICBQeU9iamVjdCAqdW5pY29kZTsKKyAgICBpbnQgc3Vycm9nYXRlZXNjYXBlOworICAgIHNpemVfdCBlcnJvcl9wb3M7CisgICAgY2hhciAqZXJybXNnOworICAgIFB5T2JqZWN0ICpyZWFzb24sICpleGM7CisKKyAgICBpZiAobG9jYWxlX2Vycm9yX2hhbmRsZXIoZXJyb3JzLCAmc3Vycm9nYXRlZXNjYXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHN0cltsZW5dICE9ICdcMCcgfHwgbGVuICE9IHN0cmxlbihzdHIpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoc3Vycm9nYXRlZXNjYXBlKQorICAgIHsKKyAgICAgICAgd3N0ciA9IF9QeV9jaGFyMndjaGFyKHN0ciwgJndsZW4pOworICAgICAgICBpZiAod3N0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAod2xlbiA9PSAoc2l6ZV90KS0xKQorICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICB1bmljb2RlID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3c3RyLCB3bGVuKTsKKyAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICB9CisgICAgZWxzZSB7CisjaWZuZGVmIEhBVkVfQlJPS0VOX01CU1RPV0NTCisgICAgICAgIHdsZW4gPSBtYnN0b3djcyhOVUxMLCBzdHIsIDApOworI2Vsc2UKKyAgICAgICAgd2xlbiA9IGxlbjsKKyNlbmRpZgorICAgICAgICBpZiAod2xlbiA9PSAoc2l6ZV90KS0xKQorICAgICAgICAgICAgZ290byBkZWNvZGVfZXJyb3I7CisgICAgICAgIGlmICh3bGVuKzEgPD0gc21hbGxidWZfbGVuKSB7CisgICAgICAgICAgICB3c3RyID0gc21hbGxidWY7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAod2xlbiA+IFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKHdjaGFyX3QpIC0gMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKworICAgICAgICAgICAgd3N0ciA9IFB5TWVtX01hbGxvYygod2xlbisxKSAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgICAgICBpZiAoIXdzdHIpCisgICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIH0KKworICAgICAgICAvKiBUaGlzIHNob3VsZG4ndCBmYWlsIG5vdyAqLworICAgICAgICB3bGVuMiA9IG1ic3Rvd2NzKHdzdHIsIHN0ciwgd2xlbisxKTsKKyAgICAgICAgaWYgKHdsZW4yID09IChzaXplX3QpLTEpIHsKKyAgICAgICAgICAgIGlmICh3c3RyICE9IHNtYWxsYnVmKQorICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgICAgICAgICBnb3RvIGRlY29kZV9lcnJvcjsKKyAgICAgICAgfQorI2lmZGVmIEhBVkVfQlJPS0VOX01CU1RPV0NTCisgICAgICAgIGFzc2VydCh3bGVuMiA9PSB3bGVuKTsKKyNlbmRpZgorICAgICAgICB1bmljb2RlID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3c3RyLCB3bGVuMik7CisgICAgICAgIGlmICh3c3RyICE9IHNtYWxsYnVmKQorICAgICAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICB9CisgICAgcmV0dXJuIHVuaWNvZGU7CisKK2RlY29kZV9lcnJvcjoKKyAgICBlcnJtc2cgPSBzdHJlcnJvcihlcnJubyk7CisgICAgYXNzZXJ0KGVycm1zZyAhPSBOVUxMKTsKKworICAgIGVycm9yX3BvcyA9IG1ic3Rvd2NzX2Vycm9ycG9zKHN0ciwgbGVuKTsKKyAgICBpZiAoZXJybXNnICE9IE5VTEwpIHsKKyAgICAgICAgc2l6ZV90IGVycmxlbjsKKyAgICAgICAgd3N0ciA9IF9QeV9jaGFyMndjaGFyKGVycm1zZywgJmVycmxlbik7CisgICAgICAgIGlmICh3c3RyICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHJlYXNvbiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod3N0ciwgZXJybGVuKTsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZXJybXNnID0gTlVMTDsKKyAgICB9CisgICAgaWYgKGVycm1zZyA9PSBOVUxMKQorICAgICAgICByZWFzb24gPSBQeVVuaWNvZGVfRnJvbVN0cmluZygKKyAgICAgICAgICAgICJtYnN0b3djcygpIGVuY291bnRlcmVkIGFuIGludmFsaWQgbXVsdGlieXRlIHNlcXVlbmNlIik7CisgICAgaWYgKHJlYXNvbiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGV4YyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IsICJzeSNubk8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9jYWxlIiwgc3RyLCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KWVycm9yX3BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpKGVycm9yX3BvcysxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uKTsKKyAgICBQeV9ERUNSRUYocmVhc29uKTsKKyAgICBpZiAoZXhjICE9IE5VTEwpIHsKKyAgICAgICAgUHlDb2RlY19TdHJpY3RFcnJvcnMoZXhjKTsKKyAgICAgICAgUHlfWERFQ1JFRihleGMpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlPYmplY3QqCitQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKGNvbnN0IGNoYXIgKnN0ciwgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIFB5X3NzaXplX3Qgc2l6ZSA9IChQeV9zc2l6ZV90KXN0cmxlbihzdHIpOworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZShzdHIsIHNpemUsIGVycm9ycyk7Cit9CisKKworUHlPYmplY3QqCiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGNvbnN0IGNoYXIgKnMpIHsKICAgICBQeV9zc2l6ZV90IHNpemUgPSAoUHlfc3NpemVfdClzdHJsZW4ocyk7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKHMsIHNpemUpOwpAQCAtMTgyNywxMCArMzcwOCwxMCBAQAogUHlPYmplY3QqCiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiBkZWZpbmVkKEhBVkVfVVNBQkxFX1dDSEFSX1QpCisjaWZkZWYgSEFWRV9NQkNTCiAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVNQkNTKHMsIHNpemUsIE5VTEwpOwogI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCi0gICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4KHMsIHNpemUsICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCAic3Vycm9nYXRlZXNjYXBlIiwgTlVMTCk7CiAjZWxzZQogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOwogICAgIC8qIEJvb3RzdHJhcCBjaGVjazogaWYgdGhlIGZpbGVzeXN0ZW0gY29kZWMgaXMgaW1wbGVtZW50ZWQgaW4gUHl0aG9uLCB3ZQpAQCAtMTg0OCwyMyArMzcyOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVlc2NhcGUiKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIC8qIGxvY2FsZSBlbmNvZGluZyB3aXRoIHN1cnJvZ2F0ZWVzY2FwZSAqLwotICAgICAgICB3Y2hhcl90ICp3Y2hhcjsKLSAgICAgICAgUHlPYmplY3QgKnVuaWNvZGU7Ci0gICAgICAgIHNpemVfdCBsZW47Ci0KLSAgICAgICAgaWYgKHNbc2l6ZV0gIT0gJ1wwJyB8fCBzaXplICE9IHN0cmxlbihzKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVtYmVkZGVkIE5VTCBjaGFyYWN0ZXIiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0KLSAgICAgICAgd2NoYXIgPSBfUHlfY2hhcjJ3Y2hhcihzLCAmbGVuKTsKLSAgICAgICAgaWYgKHdjaGFyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLQotICAgICAgICB1bmljb2RlID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3Y2hhciwgbGVuKTsKLSAgICAgICAgUHlNZW1fRnJlZSh3Y2hhcik7Ci0gICAgICAgIHJldHVybiB1bmljb2RlOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUocywgc2l6ZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMTkyNywxMyArMzc5MiwxMyBAQAogUHlVbmljb2RlX0ZTRGVjb2RlcihQeU9iamVjdCogYXJnLCB2b2lkKiBhZGRyKQogewogICAgIFB5T2JqZWN0ICpvdXRwdXQgPSBOVUxMOwotICAgIFB5X3NzaXplX3Qgc2l6ZTsKLSAgICB2b2lkICpkYXRhOwogICAgIGlmIChhcmcgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoKihQeU9iamVjdCoqKWFkZHIpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYXJnKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBvdXRwdXQgPSBhcmc7CiAgICAgICAgIFB5X0lOQ1JFRihvdXRwdXQpOwogICAgIH0KQEAgLTE5NTIsOSArMzgxNywxMiBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9Ci0gICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShvdXRwdXQpOwotICAgIGRhdGEgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvdXRwdXQpOwotICAgIGlmIChzaXplICE9IFB5X1VOSUNPREVfc3RybGVuKGRhdGEpKSB7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvdXRwdXQpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKGZpbmRjaGFyKFB5VW5pY29kZV9EQVRBKG91dHB1dCksIFB5VW5pY29kZV9LSU5EKG91dHB1dCksCisgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG91dHB1dCksIDAsIDEpID49IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVtYmVkZGVkIE5VTCBjaGFyYWN0ZXIiKTsKICAgICAgICAgUHlfREVDUkVGKG91dHB1dCk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTk2NSw0MCArMzgzMywxNjYgQEAKIAogCiBjaGFyKgotX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgKnBzaXplKQorUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgKnBzaXplKQogewogICAgIFB5T2JqZWN0ICpieXRlczsKKwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBieXRlcyA9IF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyh1bmljb2RlLCBOVUxMKTsKLSAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocHNpemUgIT0gTlVMTCkKLSAgICAgICAgKnBzaXplID0gUHlCeXRlc19HRVRfU0laRShieXRlcyk7Ci0gICAgcmV0dXJuIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKTsKKworICAgIGlmIChQeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9PSBOVUxMKSB7CisgICAgICAgIGFzc2VydCghUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkodW5pY29kZSkpOworICAgICAgICBieXRlcyA9IF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsICJzdHJpY3QiKTsKKyAgICAgICAgaWYgKGJ5dGVzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gUHlPYmplY3RfTUFMTE9DKFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpICsgMSk7CisgICAgICAgIGlmIChfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKTsKKyAgICAgICAgUHlfTUVNQ1BZKF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSwKKyAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwKKyAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgKyAxKTsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICB9CisKKyAgICBpZiAocHNpemUpCisgICAgICAgICpwc2l6ZSA9IFB5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX1VURjgodW5pY29kZSk7CiB9CiAKIGNoYXIqCi1fUHlVbmljb2RlX0FzU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorUHlVbmljb2RlX0FzVVRGOChQeU9iamVjdCAqdW5pY29kZSkKIHsKLSAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUodW5pY29kZSwgTlVMTCk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKHVuaWNvZGUsIE5VTEwpOwogfQogCi1QeV9VTklDT0RFICpQeVVuaWNvZGVfQXNVbmljb2RlKFB5T2JqZWN0ICp1bmljb2RlKQorUHlfVU5JQ09ERSAqCitQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCAqc2l6ZSkKIHsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpvbmVfYnl0ZTsKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0CisgICAgY29uc3QgUHlfVUNTMiAqdHdvX2J5dGVzOworI2Vsc2UKKyAgICBjb25zdCBQeV9VQ1M0ICpmb3VyX2J5dGVzOworICAgIGNvbnN0IFB5X1VDUzQgKnVjczRfZW5kOworICAgIFB5X3NzaXplX3QgbnVtX3N1cnJvZ2F0ZXM7CisjZW5kaWYKKyAgICB3Y2hhcl90ICp3OworICAgIHdjaGFyX3QgKndjaGFyX2VuZDsKKwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7Ci0gICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKKyAgICBpZiAoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID09IE5VTEwpIHsKKyAgICAgICAgLyogTm9uLUFTQ0lJIGNvbXBhY3QgdW5pY29kZSBvYmplY3QgKi8KKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfS0lORCh1bmljb2RlKSAhPSAwKTsKKyAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSk7CiAKLSAgb25FcnJvcjoKLSAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpID09IFB5VW5pY29kZV80QllURV9LSU5EKSB7CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgICAgICAgICAgZm91cl9ieXRlcyA9IFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpOworICAgICAgICAgICAgdWNzNF9lbmQgPSBmb3VyX2J5dGVzICsgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSk7CisgICAgICAgICAgICBudW1fc3Vycm9nYXRlcyA9IDA7CisKKyAgICAgICAgICAgIGZvciAoOyBmb3VyX2J5dGVzIDwgdWNzNF9lbmQ7ICsrZm91cl9ieXRlcykgeworICAgICAgICAgICAgICAgIGlmICgqZm91cl9ieXRlcyA+IDB4RkZGRikKKyAgICAgICAgICAgICAgICAgICAgKytudW1fc3Vycm9nYXRlczsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gKHdjaGFyX3QgKikgUHlPYmplY3RfTUFMTE9DKAorICAgICAgICAgICAgICAgICAgICBzaXplb2Yod2NoYXJfdCkgKiAoX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgKyAxICsgbnVtX3N1cnJvZ2F0ZXMpKTsKKyAgICAgICAgICAgIGlmICghX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSArIG51bV9zdXJyb2dhdGVzOworCisgICAgICAgICAgICB3ID0gX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpOworICAgICAgICAgICAgd2NoYXJfZW5kID0gdyArIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgICAgICAgICBmb3VyX2J5dGVzID0gUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSk7CisgICAgICAgICAgICBmb3IgKDsgZm91cl9ieXRlcyA8IHVjczRfZW5kOyArK2ZvdXJfYnl0ZXMsICsrdykgeworICAgICAgICAgICAgICAgIGlmICgqZm91cl9ieXRlcyA+IDB4RkZGRikgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoKmZvdXJfYnl0ZXMgPD0gTUFYX1VOSUNPREUpOworICAgICAgICAgICAgICAgICAgICAvKiBlbmNvZGUgc3Vycm9nYXRlIHBhaXIgaW4gdGhpcyBjYXNlICovCisgICAgICAgICAgICAgICAgICAgICp3KysgPSBQeV9VTklDT0RFX0hJR0hfU1VSUk9HQVRFKCpmb3VyX2J5dGVzKTsKKyAgICAgICAgICAgICAgICAgICAgKncgICA9IFB5X1VOSUNPREVfTE9XX1NVUlJPR0FURSgqZm91cl9ieXRlcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKncgPSAqZm91cl9ieXRlczsKKworICAgICAgICAgICAgICAgIGlmICh3ID4gd2NoYXJfZW5kKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCgwICYmICJNaXNjYWxjdWxhdGVkIHN0cmluZyBlbmQiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqdyA9IDA7CisjZWxzZQorICAgICAgICAgICAgLyogc2l6ZW9mKHdjaGFyX3QpID09IDQgKi8KKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkltcG9zc2libGUgdW5pY29kZSBvYmplY3Qgc3RhdGUsIHdzdHIgYW5kIHN0ciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJzaG91bGQgc2hhcmUgbWVtb3J5IGFscmVhZHkuIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gKHdjaGFyX3QgKikgUHlPYmplY3RfTUFMTE9DKHNpemVvZih3Y2hhcl90KSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSArIDEpKTsKKyAgICAgICAgICAgIGlmICghX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkodW5pY29kZSkpCisgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpOworICAgICAgICAgICAgdyA9IF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKTsKKyAgICAgICAgICAgIHdjaGFyX2VuZCA9IHcgKyBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKTsKKworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgICAgICAgICAgb25lX2J5dGUgPSBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKTsKKyAgICAgICAgICAgICAgICBmb3IgKDsgdyA8IHdjaGFyX2VuZDsgKytvbmVfYnl0ZSwgKyt3KQorICAgICAgICAgICAgICAgICAgICAqdyA9ICpvbmVfYnl0ZTsKKyAgICAgICAgICAgICAgICAvKiBudWxsLXRlcm1pbmF0ZSB0aGUgd3N0ciAqLworICAgICAgICAgICAgICAgICp3ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gNAorICAgICAgICAgICAgICAgIHR3b19ieXRlcyA9IFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpOworICAgICAgICAgICAgICAgIGZvciAoOyB3IDwgd2NoYXJfZW5kOyArK3R3b19ieXRlcywgKyt3KQorICAgICAgICAgICAgICAgICAgICAqdyA9ICp0d29fYnl0ZXM7CisgICAgICAgICAgICAgICAgLyogbnVsbC10ZXJtaW5hdGUgdGhlIHdzdHIgKi8KKyAgICAgICAgICAgICAgICAqdyA9IDA7CisjZWxzZQorICAgICAgICAgICAgICAgIC8qIHNpemVvZih3Y2hhcl90KSA9PSAyICovCisgICAgICAgICAgICAgICAgUHlPYmplY3RfRlJFRShfUHlVbmljb2RlX1dTVFIodW5pY29kZSkpOworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IE5VTEw7CisgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiSW1wb3NzaWJsZSB1bmljb2RlIG9iamVjdCBzdGF0ZSwgd3N0ciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5kIHN0ciBzaG91bGQgc2hhcmUgbWVtb3J5IGFscmVhZHkuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGFzc2VydCgwICYmICJUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHNpemUgIT0gTlVMTCkKKyAgICAgICAgKnNpemUgPSBQeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKTsKIH0KIAotUHlfc3NpemVfdCBQeVVuaWNvZGVfR2V0U2l6ZShQeU9iamVjdCAqdW5pY29kZSkKK1B5X1VOSUNPREUgKgorUHlVbmljb2RlX0FzVW5pY29kZShQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICByZXR1cm4gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUodW5pY29kZSwgTlVMTCk7Cit9CisKKworUHlfc3NpemVfdAorUHlVbmljb2RlX0dldFNpemUoUHlPYmplY3QgKnVuaWNvZGUpCiB7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKQEAgLTIwMTAsNyArNDAwNCw1NyBAQAogICAgIHJldHVybiAtMTsKIH0KIAotY29uc3QgY2hhciAqUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZyh2b2lkKQorUHlfc3NpemVfdAorUHlVbmljb2RlX0dldExlbmd0aChQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7Cit9CisKK1B5X1VDUzQKK1B5VW5pY29kZV9SZWFkQ2hhcihQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBpbmRleCkKK3sKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSB8fCBQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIChQeV9VQ1M0KS0xOworICAgIH0KKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAic3RyaW5nIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gKFB5X1VDUzQpLTE7CisgICAgfQorICAgIHJldHVybiBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIGluZGV4KTsKK30KKworaW50CitQeVVuaWNvZGVfV3JpdGVDaGFyKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IGluZGV4LCBQeV9VQ1M0IGNoKQoreworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpIHx8ICFQeVVuaWNvZGVfSVNfQ09NUEFDVCh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJzdHJpbmcgaW5kZXggb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHVuaWNvZGVfY2hlY2tfbW9kaWZpYWJsZSh1bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChjaCA+IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImNoYXJhY3RlciBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlX0tJTkQodW5pY29kZSksIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgICBpbmRleCwgY2gpOworICAgIHJldHVybiAwOworfQorCitjb25zdCBjaGFyICoKK1B5VW5pY29kZV9HZXREZWZhdWx0RW5jb2Rpbmcodm9pZCkKIHsKICAgICByZXR1cm4gInV0Zi04IjsKIH0KQEAgLTIwNDksMjYgKzQwOTMsMjkgQEAKICAgIHJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yCiAqLwogCi1zdGF0aWMKLWludCB1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMsIFB5T2JqZWN0ICoqZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICpyZWFzb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmlucHV0LCBjb25zdCBjaGFyICoqaW5lbmQsIFB5X3NzaXplX3QgKnN0YXJ0aW5wb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqZW5kaW5wb3MsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LCBjb25zdCBjaGFyICoqaW5wdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlT2JqZWN0ICoqb3V0cHV0LCBQeV9zc2l6ZV90ICpvdXRwb3MsIFB5X1VOSUNPREUgKipvdXRwdHIpCitzdGF0aWMgaW50Cit1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMsIFB5T2JqZWN0ICoqZXJyb3JIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKnJlYXNvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKippbnB1dCwgY29uc3QgY2hhciAqKmluZW5kLCBQeV9zc2l6ZV90ICpzdGFydGlucG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqZW5kaW5wb3MsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LCBjb25zdCBjaGFyICoqaW5wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKm91dHB1dCwgUHlfc3NpemVfdCAqb3V0cG9zKQogewogICAgIHN0YXRpYyBjaGFyICphcmdwYXJzZSA9ICJPIW47ZGVjb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKIAogICAgIFB5T2JqZWN0ICpyZXN0dXBsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGUgPSBOVUxMOwotICAgIFB5X3NzaXplX3Qgb3V0c2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRSgqb3V0cHV0KTsKKyAgICBQeV9zc2l6ZV90IG91dHNpemU7CiAgICAgUHlfc3NpemVfdCBpbnNpemU7CiAgICAgUHlfc3NpemVfdCByZXF1aXJlZHNpemU7CiAgICAgUHlfc3NpemVfdCBuZXdwb3M7Ci0gICAgUHlfVU5JQ09ERSAqcmVwcHRyOwogICAgIFB5T2JqZWN0ICppbnB1dG9iaiA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCByZXBzaXplOwogICAgIGludCByZXMgPSAtMTsKIAorICAgIGlmIChfUHlVbmljb2RlX0tJTkQoKm91dHB1dCkgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpCisgICAgICAgIG91dHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqb3V0cHV0KTsKKyAgICBlbHNlCisgICAgICAgIG91dHNpemUgPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKCpvdXRwdXQpOworCiAgICAgaWYgKCplcnJvckhhbmRsZXIgPT0gTlVMTCkgewogICAgICAgICAqZXJyb3JIYW5kbGVyID0gUHlDb2RlY19Mb29rdXBFcnJvcihlcnJvcnMpOwogICAgICAgICBpZiAoKmVycm9ySGFuZGxlciA9PSBOVUxMKQpAQCAtMjA5Miw2ICs0MTM5LDggQEAKICAgICB9CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHJlc3R1cGxlLCBhcmdwYXJzZSwgJlB5VW5pY29kZV9UeXBlLCAmcmVwdW5pY29kZSwgJm5ld3BvcykpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHJlcHVuaWNvZGUpID09IC0xKQorICAgICAgICBnb3RvIG9uRXJyb3I7CiAKICAgICAvKiBDb3B5IGJhY2sgdGhlIGJ5dGVzIHZhcmlhYmxlcywgd2hpY2ggbWlnaHQgaGF2ZSBiZWVuIG1vZGlmaWVkIGJ5IHRoZQogICAgICAgIGNhbGxiYWNrICovCkBAIC0yMTE1LDI1ICs0MTY0LDQ3IEBACiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKLSAgICAvKiBuZWVkIG1vcmUgc3BhY2U/IChhdCBsZWFzdCBlbm91Z2ggZm9yIHdoYXQgd2UKLSAgICAgICBoYXZlK3RoZSByZXBsYWNlbWVudCt0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIChzdGFydGluZwotICAgICAgIGF0IHRoZSBuZXcgaW5wdXQgcG9zaXRpb24pLCBzbyB3ZSB3b24ndCBoYXZlIHRvIGNoZWNrIHNwYWNlCi0gICAgICAgd2hlbiB0aGVyZSBhcmUgbm8gZXJyb3JzIGluIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcpICovCi0gICAgcmVwcHRyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwdW5pY29kZSk7Ci0gICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShyZXB1bmljb2RlKTsKLSAgICByZXF1aXJlZHNpemUgPSAqb3V0cG9zICsgcmVwc2l6ZSArIGluc2l6ZS1uZXdwb3M7Ci0gICAgaWYgKHJlcXVpcmVkc2l6ZSA+IG91dHNpemUpIHsKLSAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZTwyKm91dHNpemUpCi0gICAgICAgICAgICByZXF1aXJlZHNpemUgPSAyKm91dHNpemU7Ci0gICAgICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZShvdXRwdXQsIHJlcXVpcmVkc2l6ZSkgPCAwKQorICAgIGlmIChfUHlVbmljb2RlX0tJTkQoKm91dHB1dCkgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpIHsKKyAgICAgICAgLyogbmVlZCBtb3JlIHNwYWNlPyAoYXQgbGVhc3QgZW5vdWdoIGZvciB3aGF0IHdlCisgICAgICAgICAgIGhhdmUrdGhlIHJlcGxhY2VtZW50K3RoZSByZXN0IG9mIHRoZSBzdHJpbmcgKHN0YXJ0aW5nCisgICAgICAgICAgIGF0IHRoZSBuZXcgaW5wdXQgcG9zaXRpb24pLCBzbyB3ZSB3b24ndCBoYXZlIHRvIGNoZWNrIHNwYWNlCisgICAgICAgICAgIHdoZW4gdGhlcmUgYXJlIG5vIGVycm9ycyBpbiB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nKSAqLworICAgICAgICBQeV9zc2l6ZV90IHJlcGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHVuaWNvZGUpOworICAgICAgICByZXF1aXJlZHNpemUgPSAqb3V0cG9zICsgcmVwbGVuICsgaW5zaXplLW5ld3BvczsKKyAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IG91dHNpemUpIHsKKyAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemU8MipvdXRzaXplKQorICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IDIqb3V0c2l6ZTsKKyAgICAgICAgICAgIGlmICh1bmljb2RlX3Jlc2l6ZShvdXRwdXQsIHJlcXVpcmVkc2l6ZSkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAodW5pY29kZV93aWRlbihvdXRwdXQsICpvdXRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShyZXB1bmljb2RlKSkgPCAwKQogICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAqb3V0cHRyID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKm91dHB1dCkgKyAqb3V0cG9zOworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycygqb3V0cHV0LCAqb3V0cG9zLCByZXB1bmljb2RlLCAwLCByZXBsZW4pOworICAgICAgICAqb3V0cG9zICs9IHJlcGxlbjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHdjaGFyX3QgKnJlcHdzdHI7CisgICAgICAgIFB5X3NzaXplX3QgcmVwd2xlbjsKKyAgICAgICAgcmVwd3N0ciA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHJlcHVuaWNvZGUsICZyZXB3bGVuKTsKKyAgICAgICAgaWYgKHJlcHdzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgLyogbmVlZCBtb3JlIHNwYWNlPyAoYXQgbGVhc3QgZW5vdWdoIGZvciB3aGF0IHdlCisgICAgICAgICAgIGhhdmUrdGhlIHJlcGxhY2VtZW50K3RoZSByZXN0IG9mIHRoZSBzdHJpbmcgKHN0YXJ0aW5nCisgICAgICAgICAgIGF0IHRoZSBuZXcgaW5wdXQgcG9zaXRpb24pLCBzbyB3ZSB3b24ndCBoYXZlIHRvIGNoZWNrIHNwYWNlCisgICAgICAgICAgIHdoZW4gdGhlcmUgYXJlIG5vIGVycm9ycyBpbiB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nKSAqLworICAgICAgICByZXF1aXJlZHNpemUgPSAqb3V0cG9zICsgcmVwd2xlbiArIGluc2l6ZS1uZXdwb3M7CisgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiBvdXRzaXplKSB7CisgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplIDwgMipvdXRzaXplKQorICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IDIqb3V0c2l6ZTsKKyAgICAgICAgICAgIGlmICh1bmljb2RlX3Jlc2l6ZShvdXRwdXQsIHJlcXVpcmVkc2l6ZSkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQorICAgICAgICB3Y3NuY3B5KF9QeVVuaWNvZGVfV1NUUigqb3V0cHV0KSArICpvdXRwb3MsIHJlcHdzdHIsIHJlcHdsZW4pOworICAgICAgICAqb3V0cG9zICs9IHJlcHdsZW47CiAgICAgfQogICAgICplbmRpbnBvcyA9IG5ld3BvczsKICAgICAqaW5wdHIgPSAqaW5wdXQgKyBuZXdwb3M7Ci0gICAgUHlfVU5JQ09ERV9DT1BZKCpvdXRwdHIsIHJlcHB0ciwgcmVwc2l6ZSk7Ci0gICAgKm91dHB0ciArPSByZXBzaXplOwotICAgICpvdXRwb3MgKz0gcmVwc2l6ZTsKIAogICAgIC8qIHdlIG1hZGUgaXQhICovCiAgICAgcmVzID0gMDsKQEAgLTIyMjQsOSArNDI5NSwxMCBAQAogICAgICAgKGRpcmVjdFdTICYmICh1dGY3X2NhdGVnb3J5WyhjKV0gPT0gMikpIHx8ICAgICAgICBcCiAgICAgICAoZGlyZWN0TyAmJiAodXRmN19jYXRlZ29yeVsoYyldID09IDEpKSkpCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlVVRGNyhjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlVVRGNyhjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsKHMsIHNpemUsIGVycm9ycywgTlVMTCk7CiB9CkBAIC0yMjM4LDQyICs0MzEwLDQyIEBACiAgKiBhbGwgdGhlIHNoaWZ0IHN0YXRlIChzZWVuIGJpdHMsIG51bWJlciBvZiBiaXRzIHNlZW4sIGhpZ2gKICAqIHN1cnJvZ2F0ZSkuICovCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsKGNvbnN0IGNoYXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmNvbnN1bWVkKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7CiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgUHlfc3NpemVfdCBvdXRwb3M7CiAgICAgY29uc3QgY2hhciAqZTsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGU7Ci0gICAgUHlfVU5JQ09ERSAqcDsKKyAgICBQeU9iamVjdCAqdW5pY29kZTsKICAgICBjb25zdCBjaGFyICplcnJtc2cgPSAiIjsKICAgICBpbnQgaW5TaGlmdCA9IDA7Ci0gICAgUHlfVU5JQ09ERSAqc2hpZnRPdXRTdGFydDsKKyAgICBQeV9zc2l6ZV90IHNoaWZ0T3V0U3RhcnQ7CiAgICAgdW5zaWduZWQgaW50IGJhc2U2NGJpdHMgPSAwOwogICAgIHVuc2lnbmVkIGxvbmcgYmFzZTY0YnVmZmVyID0gMDsKLSAgICBQeV9VTklDT0RFIHN1cnJvZ2F0ZSA9IDA7CisgICAgUHlfVUNTNCBzdXJyb2dhdGUgPSAwOwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogCi0gICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KHNpemUpOworICAgIC8qIFN0YXJ0IG9mZiBhc3N1bWluZyBpdCdzIGFsbCBBU0NJSS4gV2lkZW4gbGF0ZXIgYXMgbmVjZXNzYXJ5LiAqLworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfTmV3KHNpemUsIDEyNyk7CiAgICAgaWYgKCF1bmljb2RlKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgIGlmIChjb25zdW1lZCkKICAgICAgICAgICAgICpjb25zdW1lZCA9IDA7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgICAgICByZXR1cm4gdW5pY29kZTsKICAgICB9CiAKLSAgICBwID0gdW5pY29kZS0+c3RyOwotICAgIHNoaWZ0T3V0U3RhcnQgPSBwOworICAgIHNoaWZ0T3V0U3RhcnQgPSBvdXRwb3MgPSAwOwogICAgIGUgPSBzICsgc2l6ZTsKIAogICAgIHdoaWxlIChzIDwgZSkgewotICAgICAgICBQeV9VTklDT0RFIGNoOworICAgICAgICBQeV9VQ1M0IGNoOwogICAgICAgcmVzdGFydDoKICAgICAgICAgY2ggPSAodW5zaWduZWQgY2hhcikgKnM7CiAKQEAgLTIyODQsMzQgKzQzNTYsMzEgQEAKICAgICAgICAgICAgICAgICBzKys7CiAgICAgICAgICAgICAgICAgaWYgKGJhc2U2NGJpdHMgPj0gMTYpIHsKICAgICAgICAgICAgICAgICAgICAgLyogd2UgaGF2ZSBlbm91Z2ggYml0cyBmb3IgYSBVVEYtMTYgdmFsdWUgKi8KLSAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBvdXRDaCA9IChQeV9VTklDT0RFKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJhc2U2NGJ1ZmZlciA+PiAoYmFzZTY0Yml0cy0xNikpOworICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IG91dENoID0gKFB5X1VDUzQpKGJhc2U2NGJ1ZmZlciA+PiAoYmFzZTY0Yml0cy0xNikpOwogICAgICAgICAgICAgICAgICAgICBiYXNlNjRiaXRzIC09IDE2OwogICAgICAgICAgICAgICAgICAgICBiYXNlNjRidWZmZXIgJj0gKDEgPDwgYmFzZTY0Yml0cykgLSAxOyAvKiBjbGVhciBoaWdoIGJpdHMgKi8KICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cnJvZ2F0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLyogZXhwZWN0aW5nIGEgc2Vjb25kIHN1cnJvZ2F0ZSAqLwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG91dENoID49IDB4REMwMCAmJiBvdXRDaCA8PSAweERGRkYpIHsKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcCsrID0gKCgoc3Vycm9nYXRlICYgMHgzRkYpPDwxMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKG91dENoICYgMHgzRkYpKSArIDB4MTAwMDA7Ci0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSBzdXJyb2dhdGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9IG91dENoOwotI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKG91dENoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgY2gyID0gUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMoc3Vycm9nYXRlLCBvdXRDaCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgY2gyKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJyb2dhdGUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9IHN1cnJvZ2F0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCBzdXJyb2dhdGUpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cnJvZ2F0ZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKG91dENoID49IDB4RDgwMCAmJiBvdXRDaCA8PSAweERCRkYpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNfSElHSF9TVVJST0dBVEUob3V0Q2gpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmaXJzdCBzdXJyb2dhdGUgKi8KICAgICAgICAgICAgICAgICAgICAgICAgIHN1cnJvZ2F0ZSA9IG91dENoOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9IG91dENoOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgb3V0Q2gpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yMzE5LDcgKzQzODgsOCBAQAogICAgICAgICAgICAgICAgIGluU2hpZnQgPSAwOwogICAgICAgICAgICAgICAgIHMrKzsKICAgICAgICAgICAgICAgICBpZiAoc3Vycm9nYXRlKSB7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBzdXJyb2dhdGU7CisgICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIHN1cnJvZ2F0ZSkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgICAgICBzdXJyb2dhdGUgPSAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoYmFzZTY0Yml0cyA+IDApIHsgLyogbGVmdC1vdmVyIGJpdHMgKi8KQEAgLTIzMzksNyArNDQwOSw4IEBACiAgICAgICAgICAgICAgICAgaWYgKGNoICE9ICctJykgewogICAgICAgICAgICAgICAgICAgICAvKiAnLScgaXMgYWJzb3JiZWQ7IG90aGVyIHRlcm1pbmF0aW5nCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMgYXJlIHByZXNlcnZlZCAqLwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gY2g7CisgICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIGNoKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMzQ4LDE2ICs0NDE5LDE4IEBACiAgICAgICAgICAgICBzKys7IC8qIGNvbnN1bWUgJysnICovCiAgICAgICAgICAgICBpZiAocyA8IGUgJiYgKnMgPT0gJy0nKSB7IC8qICcrLScgZW5jb2RlcyAnKycgKi8KICAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgKnArKyA9ICcrJzsKKyAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCAnKycpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7IC8qIGJlZ2luIGJhc2U2NC1lbmNvZGVkIHNlY3Rpb24gKi8KICAgICAgICAgICAgICAgICBpblNoaWZ0ID0gMTsKLSAgICAgICAgICAgICAgICBzaGlmdE91dFN0YXJ0ID0gcDsKKyAgICAgICAgICAgICAgICBzaGlmdE91dFN0YXJ0ID0gb3V0cG9zOwogICAgICAgICAgICAgICAgIGJhc2U2NGJpdHMgPSAwOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKERFQ09ERV9ESVJFQ1QoY2gpKSB7IC8qIGNoYXJhY3RlciBkZWNvZGVzIGFzIGl0c2VsZiAqLwotICAgICAgICAgICAgKnArKyA9IGNoOworICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgY2gpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBzKys7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC0yMzY4LDEzICs0NDQxLDEyIEBACiAgICAgICAgIH0KICAgICAgICAgY29udGludWU7CiB1dGY3RXJyb3I6Ci0gICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7CiAgICAgICAgIGVuZGlucG9zID0gcy1zdGFydHM7CiAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgInV0ZjciLCBlcnJtc2csCiAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgJnVuaWNvZGUsICZvdXRwb3MpKQogICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KIApAQCAtMjM4NSwxMyArNDQ1NywxMiBAQAogICAgICAgICBpZiAoc3Vycm9nYXRlIHx8CiAgICAgICAgICAgICAgICAgKGJhc2U2NGJpdHMgPj0gNikgfHwKICAgICAgICAgICAgICAgICAoYmFzZTY0Yml0cyA+IDAgJiYgYmFzZTY0YnVmZmVyICE9IDApKSB7Ci0gICAgICAgICAgICBvdXRwb3MgPSBwLVB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwogICAgICAgICAgICAgZW5kaW5wb3MgPSBzaXplOwogICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICJ1dGY3IiwgInVudGVybWluYXRlZCBzaGlmdCBzZXF1ZW5jZSIsCiAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgJnVuaWNvZGUsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAgICAgJnVuaWNvZGUsICZvdXRwb3MpKQogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIGlmIChzIDwgZSkKICAgICAgICAgICAgICAgICBnb3RvIHJlc3RhcnQ7CkBAIC0yNDAxLDcgKzQ0NzIsNyBAQAogICAgIC8qIHJldHVybiBzdGF0ZSAqLwogICAgIGlmIChjb25zdW1lZCkgewogICAgICAgICBpZiAoaW5TaGlmdCkgewotICAgICAgICAgICAgcCA9IHNoaWZ0T3V0U3RhcnQ7IC8qIGJhY2sgb2ZmIG91dHB1dCAqLworICAgICAgICAgICAgb3V0cG9zID0gc2hpZnRPdXRTdGFydDsgLyogYmFjayBvZmYgb3V0cHV0ICovCiAgICAgICAgICAgICAqY29uc3VtZWQgPSBzdGFydGlucG9zOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpAQCAtMjQwOSwxMiArNDQ4MCwxMiBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ1bmljb2RlLCBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSkpIDwgMCkKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnVuaWNvZGUsIG91dHBvcykgPCAwKQogICAgICAgICBnb3RvIG9uRXJyb3I7CiAKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh1bmljb2RlKTsKIAogICBvbkVycm9yOgogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKQEAgLTI0MjQsMzUgKzQ0OTUsNDIgQEAKIH0KIAogCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZVVURjcoY29uc3QgUHlfVU5JQ09ERSAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2U2NFNldE8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2U2NFdoaXRlU3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorX1B5VW5pY29kZV9FbmNvZGVVVEY3KFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2U2NFNldE8sCisgICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2U2NFdoaXRlU3BhY2UsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogeworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgLyogSXQgbWlnaHQgYmUgcG9zc2libGUgdG8gdGlnaHRlbiB0aGlzIHdvcnN0IGNhc2UgKi8KLSAgICBQeV9zc2l6ZV90IGFsbG9jYXRlZCA9IDggKiBzaXplOwogICAgIGludCBpblNoaWZ0ID0gMDsKLSAgICBQeV9zc2l6ZV90IGkgPSAwOworICAgIFB5X3NzaXplX3QgaTsKICAgICB1bnNpZ25lZCBpbnQgYmFzZTY0Yml0cyA9IDA7CiAgICAgdW5zaWduZWQgbG9uZyBiYXNlNjRidWZmZXIgPSAwOwogICAgIGNoYXIgKiBvdXQ7CiAgICAgY2hhciAqIHN0YXJ0OwogCi0gICAgaWYgKHNpemUgPT0gMCkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHIpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CisKKyAgICBpZiAobGVuID09IDApCiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwogCi0gICAgaWYgKGFsbG9jYXRlZCAvIDggIT0gc2l6ZSkKKyAgICAvKiBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byB0aWdodGVuIHRoaXMgd29yc3QgY2FzZSAqLworICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIDgpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotCi0gICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYWxsb2NhdGVkKTsKKyAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBsZW4gKiA4KTsKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0YXJ0ID0gb3V0ID0gUHlCeXRlc19BU19TVFJJTkcodik7Ci0gICAgZm9yICg7aSA8IHNpemU7ICsraSkgewotICAgICAgICBQeV9VTklDT0RFIGNoID0gc1tpXTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogCiAgICAgICAgIGlmIChpblNoaWZ0KSB7CiAgICAgICAgICAgICBpZiAoRU5DT0RFX0RJUkVDVChjaCwgIWJhc2U2NFNldE8sICFiYXNlNjRXaGl0ZVNwYWNlKSkgewpAQCAtMjQ5MCw4ICs0NTY4LDkgQEAKICAgICAgICAgfQogICAgICAgICBjb250aW51ZTsKIGVuY29kZV9jaGFyOgotI2lmZGVmIFB5X1VOSUNPREVfV0lERQogICAgICAgICBpZiAoY2ggPj0gMHgxMDAwMCkgeworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKKwogICAgICAgICAgICAgLyogY29kZSBmaXJzdCBzdXJyb2dhdGUgKi8KICAgICAgICAgICAgIGJhc2U2NGJpdHMgKz0gMTY7CiAgICAgICAgICAgICBiYXNlNjRidWZmZXIgPSAoYmFzZTY0YnVmZmVyIDw8IDE2KSB8IDB4ZDgwMCB8ICgoY2gtMHgxMDAwMCkgPj4gMTApOwpAQCAtMjUwMCw5ICs0NTc5LDggQEAKICAgICAgICAgICAgICAgICBiYXNlNjRiaXRzIC09IDY7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiBwcmVwYXJlIHNlY29uZCBzdXJyb2dhdGUgKi8KLSAgICAgICAgICAgIGNoID0gIDB4REMwMCB8ICgoY2gtMHgxMDAwMCkgJiAweDNGRik7CisgICAgICAgICAgICBjaCA9IFB5X1VOSUNPREVfTE9XX1NVUlJPR0FURShjaCk7CiAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICBiYXNlNjRiaXRzICs9IDE2OwogICAgICAgICBiYXNlNjRidWZmZXIgPSAoYmFzZTY0YnVmZmVyIDw8IDE2KSB8IGNoOwogICAgICAgICB3aGlsZSAoYmFzZTY0Yml0cyA+PSA2KSB7CkBAIC0yNTE4LDYgKzQ1OTYsMjIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIHY7CiB9CitQeU9iamVjdCAqCitQeVVuaWNvZGVfRW5jb2RlVVRGNyhjb25zdCBQeV9VTklDT0RFICpzLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2U2NFNldE8sCisgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZTY0V2hpdGVTcGFjZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICp0bXAgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocywgc2l6ZSk7CisgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSBfUHlVbmljb2RlX0VuY29kZVVURjcodG1wLCBiYXNlNjRTZXRPLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlNjRXaGl0ZVNwYWNlLCBlcnJvcnMpOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKICN1bmRlZiBJU19CQVNFNjQKICN1bmRlZiBGUk9NX0JBU0U2NApAQCAtMjUyNywyNzIgKzQ2MjEsMjAzIEBACiAKIC8qIC0tLSBVVEYtOCBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1zdGF0aWMKLWNoYXIgdXRmOF9jb2RlX2xlbmd0aFsyNTZdID0gewotICAgIC8qIE1hcCBVVEYtOCBlbmNvZGVkIHByZWZpeCBieXRlIHRvIHNlcXVlbmNlIGxlbmd0aC4gIFplcm8gbWVhbnMKLSAgICAgICBpbGxlZ2FsIHByZWZpeC4gIFNlZSBSRkMgMzYyOSBmb3IgZGV0YWlscyAqLwotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIC8qIDAwLTBGICovCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgLyogNzAtN0YgKi8KLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAvKiA4MC04RiAqLwotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAvKiBCMC1CRiAqLwotICAgIDAsIDAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIC8qIEMwLUMxICsgQzItQ0YgKi8KLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAvKiBEMC1ERiAqLwotICAgIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIC8qIEUwLUVGICovCi0gICAgNCwgNCwgNCwgNCwgNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCAgLyogRjAtRjQgKyBGNS1GRiAqLwotfTsKLQotUHlPYmplY3QgKlB5VW5pY29kZV9EZWNvZGVVVEY4KGNvbnN0IGNoYXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVVVEY4KGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgc2l6ZSwgZXJyb3JzLCBOVUxMKTsKIH0KIAotLyogTWFzayB0byBjaGVjayBvciBmb3JjZSBhbGlnbm1lbnQgb2YgYSBwb2ludGVyIHRvIEMgJ2xvbmcnIGJvdW5kYXJpZXMgKi8KLSNkZWZpbmUgTE9OR19QVFJfTUFTSyAoc2l6ZV90KSAoU0laRU9GX0xPTkcgLSAxKQorI2luY2x1ZGUgInN0cmluZ2xpYi9hc2NpaWxpYi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb2RlY3MuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5kZWYuaCIKKworI2luY2x1ZGUgInN0cmluZ2xpYi91Y3MxbGliLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvZGVjcy5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi91bmRlZi5oIgorCisjaW5jbHVkZSAic3RyaW5nbGliL3VjczJsaWIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY29kZWNzLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3VuZGVmLmgiCisKKyNpbmNsdWRlICJzdHJpbmdsaWIvdWNzNGxpYi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb2RlY3MuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5kZWYuaCIKIAogLyogTWFzayB0byBxdWlja2x5IGNoZWNrIHdoZXRoZXIgYSBDICdsb25nJyBjb250YWlucyBhCiAgICBub24tQVNDSUksIFVURjgtZW5jb2RlZCBjaGFyLiAqLwogI2lmIChTSVpFT0ZfTE9ORyA9PSA4KQotIyBkZWZpbmUgQVNDSUlfQ0hBUl9NQVNLIDB4ODA4MDgwODA4MDgwODA4MEwKKyMgZGVmaW5lIEFTQ0lJX0NIQVJfTUFTSyAweDgwODA4MDgwODA4MDgwODBVTAogI2VsaWYgKFNJWkVPRl9MT05HID09IDQpCi0jIGRlZmluZSBBU0NJSV9DSEFSX01BU0sgMHg4MDgwODA4MEwKKyMgZGVmaW5lIEFTQ0lJX0NIQVJfTUFTSyAweDgwODA4MDgwVUwKICNlbHNlCiAjIGVycm9yIEMgJ2xvbmcnIHNpemUgc2hvdWxkIGJlIGVpdGhlciA0IG9yIDghCiAjZW5kaWYKIAotUHlPYmplY3QgKlB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorc3RhdGljIFB5X3NzaXplX3QKK2FzY2lpX2RlY29kZShjb25zdCBjaGFyICpzdGFydCwgY29uc3QgY2hhciAqZW5kLCBQeV9VQ1MxICpkZXN0KQogeworICAgIGNvbnN0IGNoYXIgKnAgPSBzdGFydDsKKyAgICBjb25zdCBjaGFyICphbGlnbmVkX2VuZCA9IChjb25zdCBjaGFyICopIF9QeV9BTElHTl9ET1dOKGVuZCwgU0laRU9GX0xPTkcpOworCisjaWYgU0laRU9GX0xPTkcgPD0gU0laRU9GX1ZPSURfUAorICAgIGFzc2VydChfUHlfSVNfQUxJR05FRChkZXN0LCBTSVpFT0ZfTE9ORykpOworICAgIGlmIChfUHlfSVNfQUxJR05FRChwLCBTSVpFT0ZfTE9ORykpIHsKKyAgICAgICAgLyogRmFzdCBwYXRoLCBzZWUgaW4gU1RSSU5HTElCKHV0ZjhfZGVjb2RlKSBmb3IKKyAgICAgICAgICAgYW4gZXhwbGFuYXRpb24uICovCisgICAgICAgIC8qIEhlbHAgcmVnaXN0ZXIgYWxsb2NhdGlvbiAqLworICAgICAgICByZWdpc3RlciBjb25zdCBjaGFyICpfcCA9IHA7CisgICAgICAgIHJlZ2lzdGVyIFB5X1VDUzEgKiBxID0gZGVzdDsKKyAgICAgICAgd2hpbGUgKF9wIDwgYWxpZ25lZF9lbmQpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWUgPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKikgX3A7CisgICAgICAgICAgICBpZiAodmFsdWUgJiBBU0NJSV9DSEFSX01BU0spCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAqKCh1bnNpZ25lZCBsb25nICopcSkgPSB2YWx1ZTsKKyAgICAgICAgICAgIF9wICs9IFNJWkVPRl9MT05HOworICAgICAgICAgICAgcSArPSBTSVpFT0ZfTE9ORzsKKyAgICAgICAgfQorICAgICAgICBwID0gX3A7CisgICAgICAgIHdoaWxlIChwIDwgZW5kKSB7CisgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGNoYXIpKnAgJiAweDgwKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgKnErKyA9ICpwKys7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHAgLSBzdGFydDsKKyAgICB9CisjZW5kaWYKKyAgICB3aGlsZSAocCA8IGVuZCkgeworICAgICAgICAvKiBGYXN0IHBhdGgsIHNlZSBpbiBTVFJJTkdMSUIodXRmOF9kZWNvZGUpIGluIHN0cmluZ2xpYi9jb2RlY3MuaAorICAgICAgICAgICBmb3IgYW4gZXhwbGFuYXRpb24uICovCisgICAgICAgIGlmIChfUHlfSVNfQUxJR05FRChwLCBTSVpFT0ZfTE9ORykpIHsKKyAgICAgICAgICAgIC8qIEhlbHAgcmVnaXN0ZXIgYWxsb2NhdGlvbiAqLworICAgICAgICAgICAgcmVnaXN0ZXIgY29uc3QgY2hhciAqX3AgPSBwOworICAgICAgICAgICAgd2hpbGUgKF9wIDwgYWxpZ25lZF9lbmQpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZhbHVlID0gKih1bnNpZ25lZCBsb25nICopIF9wOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmIEFTQ0lJX0NIQVJfTUFTSykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgX3AgKz0gU0laRU9GX0xPTkc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwID0gX3A7CisgICAgICAgICAgICBpZiAoX3AgPT0gZW5kKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmICgodW5zaWduZWQgY2hhcikqcCAmIDB4ODApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgKytwOworICAgIH0KKyAgICBtZW1jcHkoZGVzdCwgc3RhcnQsIHAgLSBzdGFydCk7CisgICAgcmV0dXJuIHAgLSBzdGFydDsKK30KKworUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqY29uc3VtZWQpCit7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CiAgICAgY29uc3QgY2hhciAqc3RhcnRzID0gczsKLSAgICBpbnQgbjsKLSAgICBpbnQgazsKKyAgICBjb25zdCBjaGFyICplbmQgPSBzICsgc2l6ZTsKKyAgICBQeV9zc2l6ZV90IG91dHBvczsKKwogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwotICAgIFB5X3NzaXplX3Qgb3V0cG9zOwotICAgIGNvbnN0IGNoYXIgKmUsICphbGlnbmVkX2VuZDsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGU7Ci0gICAgUHlfVU5JQ09ERSAqcDsKICAgICBjb25zdCBjaGFyICplcnJtc2cgPSAiIjsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKIAotICAgIC8qIE5vdGU6IHNpemUgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZyBVbmljb2RlCi0gICAgICAgY2hhcmFjdGVyIGNvdW50ICovCi0gICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KHNpemUpOwotICAgIGlmICghdW5pY29kZSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNpemUgPT0gMCkgewogICAgICAgICBpZiAoY29uc3VtZWQpCiAgICAgICAgICAgICAqY29uc3VtZWQgPSAwOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKKyAgICAgICAgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCk7CiAgICAgfQogCi0gICAgLyogVW5wYWNrIFVURi04IGVuY29kZWQgZGF0YSAqLwotICAgIHAgPSB1bmljb2RlLT5zdHI7Ci0gICAgZSA9IHMgKyBzaXplOwotICAgIGFsaWduZWRfZW5kID0gKGNvbnN0IGNoYXIgKikgKChzaXplX3QpIGUgJiB+TE9OR19QVFJfTUFTSyk7CisgICAgLyogQVNDSUkgaXMgZXF1aXZhbGVudCB0byB0aGUgZmlyc3QgMTI4IG9yZGluYWxzIGluIFVuaWNvZGUuICovCisgICAgaWYgKHNpemUgPT0gMSAmJiAodW5zaWduZWQgY2hhcilzWzBdIDwgMTI4KSB7CisgICAgICAgIGlmIChjb25zdW1lZCkKKyAgICAgICAgICAgICpjb25zdW1lZCA9IDE7CisgICAgICAgIHJldHVybiBnZXRfbGF0aW4xX2NoYXIoKHVuc2lnbmVkIGNoYXIpc1swXSk7CisgICAgfQogCi0gICAgd2hpbGUgKHMgPCBlKSB7Ci0gICAgICAgIFB5X1VDUzQgY2ggPSAodW5zaWduZWQgY2hhcikqczsKKyAgICB1bmljb2RlID0gUHlVbmljb2RlX05ldyhzaXplLCAxMjcpOworICAgIGlmICghdW5pY29kZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgaWYgKGNoIDwgMHg4MCkgewotICAgICAgICAgICAgLyogRmFzdCBwYXRoIGZvciBydW5zIG9mIEFTQ0lJIGNoYXJhY3RlcnMuIEdpdmVuIHRoYXQgY29tbW9uIFVURi04Ci0gICAgICAgICAgICAgICBpbnB1dCB3aWxsIGNvbnNpc3Qgb2YgYW4gb3ZlcndoZWxtaW5nIG1ham9yaXR5IG9mIEFTQ0lJCi0gICAgICAgICAgICAgICBjaGFyYWN0ZXJzLCB3ZSB0cnkgdG8gb3B0aW1pemUgZm9yIHRoaXMgY2FzZSBieSBjaGVja2luZwotICAgICAgICAgICAgICAgYXMgbWFueSBjaGFyYWN0ZXJzIGFzIGEgQyAnbG9uZycgY2FuIGNvbnRhaW4uCi0gICAgICAgICAgICAgICBGaXJzdCwgY2hlY2sgaWYgd2UgY2FuIGRvIGFuIGFsaWduZWQgcmVhZCwgYXMgbW9zdCBDUFVzIGhhdmUKLSAgICAgICAgICAgICAgIGEgcGVuYWx0eSBmb3IgdW5hbGlnbmVkIHJlYWRzLgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmICghKChzaXplX3QpIHMgJiBMT05HX1BUUl9NQVNLKSkgewotICAgICAgICAgICAgICAgIC8qIEhlbHAgcmVnaXN0ZXIgYWxsb2NhdGlvbiAqLwotICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKl9zID0gczsKLSAgICAgICAgICAgICAgICByZWdpc3RlciBQeV9VTklDT0RFICpfcCA9IHA7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKF9zIDwgYWxpZ25lZF9lbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogUmVhZCBhIHdob2xlIGxvbmcgYXQgYSB0aW1lIChlaXRoZXIgNCBvciA4IGJ5dGVzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIGRvIGEgZmFzdCB1bnJvbGxlZCBjb3B5IGlmIGl0IG9ubHkgY29udGFpbnMgQVNDSUkKLSAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVycy4gKi8KLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhID0gKih1bnNpZ25lZCBsb25nICopIF9zOwotICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSAmIEFTQ0lJX0NIQVJfTUFTSykKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBfcFswXSA9ICh1bnNpZ25lZCBjaGFyKSBfc1swXTsKLSAgICAgICAgICAgICAgICAgICAgX3BbMV0gPSAodW5zaWduZWQgY2hhcikgX3NbMV07Ci0gICAgICAgICAgICAgICAgICAgIF9wWzJdID0gKHVuc2lnbmVkIGNoYXIpIF9zWzJdOwotICAgICAgICAgICAgICAgICAgICBfcFszXSA9ICh1bnNpZ25lZCBjaGFyKSBfc1szXTsKLSNpZiAoU0laRU9GX0xPTkcgPT0gOCkKLSAgICAgICAgICAgICAgICAgICAgX3BbNF0gPSAodW5zaWduZWQgY2hhcikgX3NbNF07Ci0gICAgICAgICAgICAgICAgICAgIF9wWzVdID0gKHVuc2lnbmVkIGNoYXIpIF9zWzVdOwotICAgICAgICAgICAgICAgICAgICBfcFs2XSA9ICh1bnNpZ25lZCBjaGFyKSBfc1s2XTsKLSAgICAgICAgICAgICAgICAgICAgX3BbN10gPSAodW5zaWduZWQgY2hhcikgX3NbN107Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgX3MgKz0gU0laRU9GX0xPTkc7Ci0gICAgICAgICAgICAgICAgICAgIF9wICs9IFNJWkVPRl9MT05HOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzID0gX3M7Ci0gICAgICAgICAgICAgICAgcCA9IF9wOwotICAgICAgICAgICAgICAgIGlmIChzID09IGUpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNoID0gKHVuc2lnbmVkIGNoYXIpKnM7Ci0gICAgICAgICAgICB9CisgICAgb3V0cG9zID0gYXNjaWlfZGVjb2RlKHMsIGVuZCwgUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSkpOworICAgIHMgKz0gb3V0cG9zOworICAgIHdoaWxlIChzIDwgZW5kKSB7CisgICAgICAgIFB5X1VDUzQgY2g7CisgICAgICAgIGludCBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICAgICAgICAgIGNoID0gYXNjaWlsaWJfdXRmOF9kZWNvZGUoJnMsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpLCAmb3V0cG9zKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjaCA9IHVjczFsaWJfdXRmOF9kZWNvZGUoJnMsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpLCAmb3V0cG9zKTsKKyAgICAgICAgfSBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgICAgICBjaCA9IHVjczJsaWJfdXRmOF9kZWNvZGUoJnMsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSksICZvdXRwb3MpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICAgICAgY2ggPSB1Y3M0bGliX3V0ZjhfZGVjb2RlKCZzLCBlbmQsCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpLCAmb3V0cG9zKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChjaCA8IDB4ODApIHsKLSAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSljaDsKLSAgICAgICAgICAgIHMrKzsKKyAgICAgICAgc3dpdGNoIChjaCkgeworICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICBpZiAocyA9PSBlbmQgfHwgY29uc3VtZWQpCisgICAgICAgICAgICAgICAgZ290byBFbmQ7CisgICAgICAgICAgICBlcnJtc2cgPSAidW5leHBlY3RlZCBlbmQgb2YgZGF0YSI7CisgICAgICAgICAgICBzdGFydGlucG9zID0gcyAtIHN0YXJ0czsKKyAgICAgICAgICAgIGVuZGlucG9zID0gZW5kIC0gc3RhcnRzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGVycm1zZyA9ICJpbnZhbGlkIHN0YXJ0IGJ5dGUiOworICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMgLSBzdGFydHM7CisgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgY2FzZSAzOgorICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICBlcnJtc2cgPSAiaW52YWxpZCBjb250aW51YXRpb24gYnl0ZSI7CisgICAgICAgICAgICBzdGFydGlucG9zID0gcyAtIHN0YXJ0czsKKyAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIGNoIC0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgY2gpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIG4gPSB1dGY4X2NvZGVfbGVuZ3RoW2NoXTsKLQotICAgICAgICBpZiAocyArIG4gPiBlKSB7Ci0gICAgICAgICAgICBpZiAoY29uc3VtZWQpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBlcnJtc2cgPSAidW5leHBlY3RlZCBlbmQgb2YgZGF0YSI7Ci0gICAgICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcysxOwotICAgICAgICAgICAgICAgIGZvciAoaz0xOyAoayA8IHNpemUtc3RhcnRpbnBvcykgJiYgKChzW2tdJjB4QzApID09IDB4ODApOyBrKyspCi0gICAgICAgICAgICAgICAgICAgIGVuZGlucG9zKys7Ci0gICAgICAgICAgICAgICAgZ290byB1dGY4RXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKG4pIHsKLQotICAgICAgICBjYXNlIDA6Ci0gICAgICAgICAgICBlcnJtc2cgPSAiaW52YWxpZCBzdGFydCBieXRlIjsKLSAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcysxOwotICAgICAgICAgICAgZ290byB1dGY4RXJyb3I7Ci0KLSAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgZXJybXNnID0gImludGVybmFsIGVycm9yIjsKLSAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcysxOwotICAgICAgICAgICAgZ290byB1dGY4RXJyb3I7Ci0KLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKChzWzFdICYgMHhjMCkgIT0gMHg4MCkgewotICAgICAgICAgICAgICAgIGVycm1zZyA9ICJpbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlIjsKLSAgICAgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMTsKLSAgICAgICAgICAgICAgICBnb3RvIHV0ZjhFcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNoID0gKChzWzBdICYgMHgxZikgPDwgNikgKyAoc1sxXSAmIDB4M2YpOwotICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweDAwN0YpICYmIChjaCA8PSAweDA3RkYpKTsKLSAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSljaDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIC8qIERlY29kaW5nIFVURi04IHNlcXVlbmNlcyBpbiByYW5nZSBceGVkXHhhMFx4ODAtXHhlZFx4YmZceGJmCi0gICAgICAgICAgICAgICB3aWxsIHJlc3VsdCBpbiBzdXJyb2dhdGVzIGluIHJhbmdlIGQ4MDAtZGZmZi4gU3Vycm9nYXRlcyBhcmUKLSAgICAgICAgICAgICAgIG5vdCB2YWxpZCBVVEYtOCBzbyB0aGV5IGFyZSByZWplY3RlZC4KLSAgICAgICAgICAgICAgIFNlZSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3ZlcnNpb25zL1VuaWNvZGU1LjIuMC9jaDAzLnBkZgotICAgICAgICAgICAgICAgKHRhYmxlIDMtNykgYW5kIGh0dHA6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzM2MjkudHh0ICovCi0gICAgICAgICAgICBpZiAoKHNbMV0gJiAweGMwKSAhPSAweDgwIHx8Ci0gICAgICAgICAgICAgICAgKHNbMl0gJiAweGMwKSAhPSAweDgwIHx8Ci0gICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKXNbMF0gPT0gMHhFMCAmJgotICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzWzFdIDwgMHhBMCkgfHwKLSAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIpc1swXSA9PSAweEVEICYmCi0gICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNbMV0gPiAweDlGKSkgewotICAgICAgICAgICAgICAgIGVycm1zZyA9ICJpbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlIjsKLSAgICAgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMTsKLQotICAgICAgICAgICAgICAgIC8qIGlmIHNbMV0gZmlyc3QgdHdvIGJpdHMgYXJlIDEgYW5kIDAsIHRoZW4gdGhlIGludmFsaWQKLSAgICAgICAgICAgICAgICAgICBjb250aW51YXRpb24gYnl0ZSBpcyBzWzJdLCBzbyBpbmNyZW1lbnQgZW5kaW5wb3MgYnkgMSwKLSAgICAgICAgICAgICAgICAgICBpZiBub3QsIHNbMV0gaXMgaW52YWxpZCBhbmQgZW5kaW5wb3MgZG9lc24ndCBuZWVkIHRvCi0gICAgICAgICAgICAgICAgICAgYmUgaW5jcmVtZW50ZWQuICovCi0gICAgICAgICAgICAgICAgaWYgKChzWzFdICYgMHhDMCkgPT0gMHg4MCkKLSAgICAgICAgICAgICAgICAgICAgZW5kaW5wb3MrKzsKLSAgICAgICAgICAgICAgICBnb3RvIHV0ZjhFcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNoID0gKChzWzBdICYgMHgwZikgPDwgMTIpICsgKChzWzFdICYgMHgzZikgPDwgNikgKyAoc1syXSAmIDB4M2YpOwotICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweDA3RkYpICYmIChjaCA8PSAweEZGRkYpKTsKLSAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSljaDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIGlmICgoc1sxXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoc1syXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoc1szXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIpc1swXSA9PSAweEYwICYmCi0gICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNbMV0gPCAweDkwKSB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RjQgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA+IDB4OEYpKSB7Ci0gICAgICAgICAgICAgICAgZXJybXNnID0gImludmFsaWQgY29udGludWF0aW9uIGJ5dGUiOwotICAgICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOwotICAgICAgICAgICAgICAgIGlmICgoc1sxXSAmIDB4QzApID09IDB4ODApIHsKLSAgICAgICAgICAgICAgICAgICAgZW5kaW5wb3MrKzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKChzWzJdICYgMHhDMCkgPT0gMHg4MCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZGlucG9zKys7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGdvdG8gdXRmOEVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2ggPSAoKHNbMF0gJiAweDcpIDw8IDE4KSArICgoc1sxXSAmIDB4M2YpIDw8IDEyKSArCi0gICAgICAgICAgICAgICAgICgoc1syXSAmIDB4M2YpIDw8IDYpICsgKHNbM10gJiAweDNmKTsKLSAgICAgICAgICAgIGFzc2VydCAoKGNoID4gMHhGRkZGKSAmJiAoY2ggPD0gMHgxMGZmZmYpKTsKLQotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKWNoOwotI2Vsc2UKLSAgICAgICAgICAgIC8qICBjb21wdXRlIGFuZCBhcHBlbmQgdGhlIHR3byBzdXJyb2dhdGVzOiAqLwotCi0gICAgICAgICAgICAvKiAgdHJhbnNsYXRlIGZyb20gMTAwMDAuLjEwRkZGRiB0byAwLi5GRkZGICovCi0gICAgICAgICAgICBjaCAtPSAweDEwMDAwOwotCi0gICAgICAgICAgICAvKiAgaGlnaCBzdXJyb2dhdGUgPSB0b3AgMTAgYml0cyBhZGRlZCB0byBEODAwICovCi0gICAgICAgICAgICAqcCsrID0gKFB5X1VOSUNPREUpKDB4RDgwMCArIChjaCA+PiAxMCkpOwotCi0gICAgICAgICAgICAvKiAgbG93IHN1cnJvZ2F0ZSA9IGJvdHRvbSAxMCBiaXRzIGFkZGVkIHRvIERDMDAgKi8KLSAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSkoMHhEQzAwICsgKGNoICYgMHgwM0ZGKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHMgKz0gbjsKLSAgICAgICAgY29udGludWU7Ci0KLSAgICAgIHV0ZjhFcnJvcjoKLSAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAidXRmLTgiLCBlcnJtc2csCi0gICAgICAgICAgICAgICAgJnN0YXJ0cywgJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCisgICAgICAgICAgICAgICAgJnVuaWNvZGUsICZvdXRwb3MpKQogICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICBhbGlnbmVkX2VuZCA9IChjb25zdCBjaGFyICopICgoc2l6ZV90KSBlICYgfkxPTkdfUFRSX01BU0spOwogICAgIH0KLSAgICBpZiAoY29uc3VtZWQpCi0gICAgICAgICpjb25zdW1lZCA9IHMtc3RhcnRzOwogCi0gICAgLyogQWRqdXN0IGxlbmd0aCAqLwotICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmdW5pY29kZSwgcCAtIHVuaWNvZGUtPnN0cikgPCAwKQorRW5kOgorICAgIGlmICh1bmljb2RlX3Jlc2l6ZSgmdW5pY29kZSwgb3V0cG9zKSA8IDApCiAgICAgICAgIGdvdG8gb25FcnJvcjsKIAotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKLSAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7CisgICAgaWYgKGNvbnN1bWVkKQorICAgICAgICAqY29uc3VtZWQgPSBzIC0gc3RhcnRzOwogCi0gIG9uRXJyb3I6CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAxKSk7CisgICAgcmV0dXJuIHVuaWNvZGU7CisKK29uRXJyb3I6CisgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXhjKTsKKyAgICBQeV9YREVDUkVGKHVuaWNvZGUpOwogICAgIHJldHVybiBOVUxMOwogfQogCi0jdW5kZWYgQVNDSUlfQ0hBUl9NQVNLCi0KICNpZmRlZiBfX0FQUExFX18KIAogLyogU2ltcGxpZmllZCBVVEYtOCBkZWNvZGVyIHVzaW5nIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyLApAQCAtMjgwNCw5ICs0ODI5LDkgQEAKIHdjaGFyX3QqCiBfUHlfRGVjb2RlVVRGOF9zdXJyb2dhdGVlc2NhcGUoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplKQogewotICAgIGludCBuOwogICAgIGNvbnN0IGNoYXIgKmU7Ci0gICAgd2NoYXJfdCAqdW5pY29kZSwgKnA7CisgICAgd2NoYXJfdCAqdW5pY29kZTsKKyAgICBQeV9zc2l6ZV90IG91dHBvczsKIAogICAgIC8qIE5vdGU6IHNpemUgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZyBVbmljb2RlCiAgICAgICAgY2hhcmFjdGVyIGNvdW50ICovCkBAIC0yODE3LDI3NyArNDg0MiwxMDEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBVbnBhY2sgVVRGLTggZW5jb2RlZCBkYXRhICovCi0gICAgcCA9IHVuaWNvZGU7CiAgICAgZSA9IHMgKyBzaXplOworICAgIG91dHBvcyA9IDA7CiAgICAgd2hpbGUgKHMgPCBlKSB7Ci0gICAgICAgIFB5X1VDUzQgY2ggPSAodW5zaWduZWQgY2hhcikqczsKLQotICAgICAgICBpZiAoY2ggPCAweDgwKSB7Ci0gICAgICAgICAgICAqcCsrID0gKHdjaGFyX3QpY2g7Ci0gICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIG4gPSB1dGY4X2NvZGVfbGVuZ3RoW2NoXTsKLSAgICAgICAgaWYgKHMgKyBuID4gZSkgewotICAgICAgICAgICAgZ290byBzdXJyb2dhdGVlc2NhcGU7Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKG4pIHsKLSAgICAgICAgY2FzZSAwOgotICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBnb3RvIHN1cnJvZ2F0ZWVzY2FwZTsKLQotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoKHNbMV0gJiAweGMwKSAhPSAweDgwKQotICAgICAgICAgICAgICAgIGdvdG8gc3Vycm9nYXRlZXNjYXBlOwotICAgICAgICAgICAgY2ggPSAoKHNbMF0gJiAweDFmKSA8PCA2KSArIChzWzFdICYgMHgzZik7Ci0gICAgICAgICAgICBhc3NlcnQgKChjaCA+IDB4MDA3RikgJiYgKGNoIDw9IDB4MDdGRikpOwotICAgICAgICAgICAgKnArKyA9ICh3Y2hhcl90KWNoOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgLyogRGVjb2RpbmcgVVRGLTggc2VxdWVuY2VzIGluIHJhbmdlIFx4ZWRceGEwXHg4MC1ceGVkXHhiZlx4YmYKLSAgICAgICAgICAgICAgIHdpbGwgcmVzdWx0IGluIHN1cnJvZ2F0ZXMgaW4gcmFuZ2UgZDgwMC1kZmZmLiBTdXJyb2dhdGVzIGFyZQotICAgICAgICAgICAgICAgbm90IHZhbGlkIFVURi04IHNvIHRoZXkgYXJlIHJlamVjdGVkLgotICAgICAgICAgICAgICAgU2VlIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdmVyc2lvbnMvVW5pY29kZTUuMi4wL2NoMDMucGRmCi0gICAgICAgICAgICAgICAodGFibGUgMy03KSBhbmQgaHR0cDovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjMzYyOS50eHQgKi8KLSAgICAgICAgICAgIGlmICgoc1sxXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoc1syXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIpc1swXSA9PSAweEUwICYmCi0gICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNbMV0gPCAweEEwKSB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RUQgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA+IDB4OUYpKSB7Ci0KLSAgICAgICAgICAgICAgICBnb3RvIHN1cnJvZ2F0ZWVzY2FwZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNoID0gKChzWzBdICYgMHgwZikgPDwgMTIpICsgKChzWzFdICYgMHgzZikgPDwgNikgKyAoc1syXSAmIDB4M2YpOwotICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweDA3RkYpICYmIChjaCA8PSAweEZGRkYpKTsKLSAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSljaDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIGlmICgoc1sxXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoc1syXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoc1szXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIpc1swXSA9PSAweEYwICYmCi0gICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNbMV0gPCAweDkwKSB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RjQgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA+IDB4OEYpKSB7Ci0gICAgICAgICAgICAgICAgZ290byBzdXJyb2dhdGVlc2NhcGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjaCA9ICgoc1swXSAmIDB4NykgPDwgMTgpICsgKChzWzFdICYgMHgzZikgPDwgMTIpICsKLSAgICAgICAgICAgICAgICAgKChzWzJdICYgMHgzZikgPDwgNikgKyAoc1szXSAmIDB4M2YpOwotICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweEZGRkYpICYmIChjaCA8PSAweDEwZmZmZikpOwotCisgICAgICAgIFB5X1VDUzQgY2g7CiAjaWYgU0laRU9GX1dDSEFSX1QgPT0gNAotICAgICAgICAgICAgKnArKyA9ICh3Y2hhcl90KWNoOworICAgICAgICBjaCA9IHVjczRsaWJfdXRmOF9kZWNvZGUoJnMsIGUsIChQeV9VQ1M0ICopdW5pY29kZSwgJm91dHBvcyk7CiAjZWxzZQotICAgICAgICAgICAgLyogIGNvbXB1dGUgYW5kIGFwcGVuZCB0aGUgdHdvIHN1cnJvZ2F0ZXM6ICovCi0KLSAgICAgICAgICAgIC8qICB0cmFuc2xhdGUgZnJvbSAxMDAwMC4uMTBGRkZGIHRvIDAuLkZGRkYgKi8KLSAgICAgICAgICAgIGNoIC09IDB4MTAwMDA7Ci0KLSAgICAgICAgICAgIC8qICBoaWdoIHN1cnJvZ2F0ZSA9IHRvcCAxMCBiaXRzIGFkZGVkIHRvIEQ4MDAgKi8KLSAgICAgICAgICAgICpwKysgPSAod2NoYXJfdCkoMHhEODAwICsgKGNoID4+IDEwKSk7Ci0KLSAgICAgICAgICAgIC8qICBsb3cgc3Vycm9nYXRlID0gYm90dG9tIDEwIGJpdHMgYWRkZWQgdG8gREMwMCAqLwotICAgICAgICAgICAgKnArKyA9ICh3Y2hhcl90KSgweERDMDAgKyAoY2ggJiAweDAzRkYpKTsKKyAgICAgICAgY2ggPSB1Y3MybGliX3V0ZjhfZGVjb2RlKCZzLCBlLCAoUHlfVUNTMiAqKXVuaWNvZGUsICZvdXRwb3MpOwogI2VuZGlmCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGNoID4gMHhGRikgeworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDQKKyAgICAgICAgICAgIGFzc2VydCgwKTsKKyNlbHNlCisgICAgICAgICAgICBhc3NlcnQoUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoY2gpKTsKKyAgICAgICAgICAgIC8qICBjb21wdXRlIGFuZCBhcHBlbmQgdGhlIHR3byBzdXJyb2dhdGVzOiAqLworICAgICAgICAgICAgdW5pY29kZVtvdXRwb3MrK10gPSAod2NoYXJfdClQeV9VTklDT0RFX0hJR0hfU1VSUk9HQVRFKGNoKTsKKyAgICAgICAgICAgIHVuaWNvZGVbb3V0cG9zKytdID0gKHdjaGFyX3QpUHlfVU5JQ09ERV9MT1dfU1VSUk9HQVRFKGNoKTsKKyNlbmRpZgogICAgICAgICB9Ci0gICAgICAgIHMgKz0gbjsKLSAgICAgICAgY29udGludWU7Ci0KLSAgICAgIHN1cnJvZ2F0ZWVzY2FwZToKLSAgICAgICAgKnArKyA9IDB4REMwMCArIGNoOwotICAgICAgICBzKys7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKCFjaCAmJiBzID09IGUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvKiBzdXJyb2dhdGVlc2NhcGUgKi8KKyAgICAgICAgICAgIHVuaWNvZGVbb3V0cG9zKytdID0gMHhEQzAwICsgKHVuc2lnbmVkIGNoYXIpKnMrKzsKKyAgICAgICAgfQogICAgIH0KLSAgICAqcCA9IEwnXDAnOworICAgIHVuaWNvZGVbb3V0cG9zXSA9IEwnXDAnOwogICAgIHJldHVybiB1bmljb2RlOwogfQogCiAjZW5kaWYgLyogX19BUFBMRV9fICovCiAKLS8qIEFsbG9jYXRpb24gc3RyYXRlZ3k6ICBpZiB0aGUgc3RyaW5nIGlzIHNob3J0LCBjb252ZXJ0IGludG8gYSBzdGFjayBidWZmZXIKKy8qIFByaW1hcnkgaW50ZXJuYWwgZnVuY3Rpb24gd2hpY2ggY3JlYXRlcyB1dGY4IGVuY29kZWQgYnl0ZXMgb2JqZWN0cy4KKworICAgQWxsb2NhdGlvbiBzdHJhdGVneTogIGlmIHRoZSBzdHJpbmcgaXMgc2hvcnQsIGNvbnZlcnQgaW50byBhIHN0YWNrIGJ1ZmZlcgogICAgYW5kIGFsbG9jYXRlIGV4YWN0bHkgYXMgbXVjaCBzcGFjZSBuZWVkZWQgYXQgdGhlIGVuZC4gIEVsc2UgYWxsb2NhdGUgdGhlCiAgICBtYXhpbXVtIHBvc3NpYmxlIG5lZWRlZCAoNCByZXN1bHQgYnl0ZXMgcGVyIFVuaWNvZGUgY2hhcmFjdGVyKSwgYW5kIHJldHVybgogICAgdGhlIGV4Y2VzcyBtZW1vcnkgYXQgdGhlIGVuZC4KICovCiBQeU9iamVjdCAqCi1QeVVuaWNvZGVfRW5jb2RlVVRGOChjb25zdCBQeV9VTklDT0RFICpzLAotICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUsIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSNkZWZpbmUgTUFYX1NIT1JUX1VOSUNIQVJTIDMwMCAgLyogbGFyZ2VzdCBzaXplIHdlJ2xsIGRvIG9uIHRoZSBzdGFjayAqLworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKIAotICAgIFB5X3NzaXplX3QgaTsgICAgICAgICAgICAgICAgLyogaW5kZXggaW50byBzIG9mIG5leHQgaW5wdXQgYnl0ZSAqLwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgLyogcmVzdWx0IHN0cmluZyBvYmplY3QgKi8KLSAgICBjaGFyICpwOyAgICAgICAgICAgICAgICAgICAgIC8qIG5leHQgZnJlZSBieXRlIGluIG91dHB1dCBidWZmZXIgKi8KLSAgICBQeV9zc2l6ZV90IG5hbGxvY2F0ZWQ7ICAgICAgLyogbnVtYmVyIG9mIHJlc3VsdCBieXRlcyBhbGxvY2F0ZWQgKi8KLSAgICBQeV9zc2l6ZV90IG5uZWVkZWQ7ICAgICAgICAgICAgLyogbnVtYmVyIG9mIHJlc3VsdCBieXRlcyBuZWVkZWQgKi8KLSAgICBjaGFyIHN0YWNrYnVmW01BWF9TSE9SVF9VTklDSEFSUyAqIDRdOwotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotCi0gICAgYXNzZXJ0KHMgIT0gTlVMTCk7Ci0gICAgYXNzZXJ0KHNpemUgPj0gMCk7Ci0KLSAgICBpZiAoc2l6ZSA8PSBNQVhfU0hPUlRfVU5JQ0hBUlMpIHsKLSAgICAgICAgLyogV3JpdGUgaW50byB0aGUgc3RhY2sgYnVmZmVyOyBuYWxsb2NhdGVkIGNhbid0IG92ZXJmbG93LgotICAgICAgICAgKiBBdCB0aGUgZW5kLCB3ZSdsbCBhbGxvY2F0ZSBleGFjdGx5IGFzIG11Y2ggaGVhcCBzcGFjZSBhcyBpdAotICAgICAgICAgKiB0dXJucyBvdXQgd2UgbmVlZC4KLSAgICAgICAgICovCi0gICAgICAgIG5hbGxvY2F0ZWQgPSBQeV9TQUZFX0RPV05DQVNUKHNpemVvZihzdGFja2J1ZiksIHNpemVfdCwgaW50KTsKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsgICAvKiB3aWxsIGFsbG9jYXRlIGFmdGVyIHdlJ3JlIGRvbmUgKi8KLSAgICAgICAgcCA9IHN0YWNrYnVmOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogT3ZlcmFsbG9jYXRlIG9uIHRoZSBoZWFwLCBhbmQgZ2l2ZSB0aGUgZXhjZXNzIGJhY2sgYXQgdGhlIGVuZC4gKi8KLSAgICAgICAgbmFsbG9jYXRlZCA9IHNpemUgKiA0OwotICAgICAgICBpZiAobmFsbG9jYXRlZCAvIDQgIT0gc2l6ZSkgIC8qIG92ZXJmbG93ISAqLwotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbmFsbG9jYXRlZCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICB9Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTspIHsKLSAgICAgICAgUHlfVUNTNCBjaCA9IHNbaSsrXTsKLQotICAgICAgICBpZiAoY2ggPCAweDgwKQotICAgICAgICAgICAgLyogRW5jb2RlIEFTQ0lJICovCi0gICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOwotCi0gICAgICAgIGVsc2UgaWYgKGNoIDwgMHgwODAwKSB7Ci0gICAgICAgICAgICAvKiBFbmNvZGUgTGF0aW4tMSAqLwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweGMwIHwgKGNoID4+IDYpKTsKLSAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8IChjaCAmIDB4M2YpKTsKLSAgICAgICAgfSBlbHNlIGlmICgweEQ4MDAgPD0gY2ggJiYgY2ggPD0gMHhERkZGKSB7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgLyogU3BlY2lhbCBjYXNlOiBjaGVjayBmb3IgaGlnaCBhbmQgbG93IHN1cnJvZ2F0ZSAqLwotICAgICAgICAgICAgaWYgKGNoIDw9IDB4REJGRiAmJiBpICE9IHNpemUgJiYgMHhEQzAwIDw9IHNbaV0gJiYgc1tpXSA8PSAweERGRkYpIHsKLSAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoMiA9IHNbaV07Ci0gICAgICAgICAgICAgICAgLyogQ29tYmluZSB0aGUgdHdvIHN1cnJvZ2F0ZXMgdG8gZm9ybSBhIFVDUzQgdmFsdWUgKi8KLSAgICAgICAgICAgICAgICBjaCA9ICgoY2ggLSAweEQ4MDApIDw8IDEwIHwgKGNoMiAtIDB4REMwMCkpICsgMHgxMDAwMDsKLSAgICAgICAgICAgICAgICBpKys7Ci0KLSAgICAgICAgICAgICAgICAvKiBFbmNvZGUgVUNTNCBVbmljb2RlIG9yZGluYWxzICovCi0gICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweGYwIHwgKGNoID4+IDE4KSk7Ci0gICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKChjaCA+PiAxMikgJiAweDNmKSk7Ci0gICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKChjaCA+PiA2KSAmIDB4M2YpKTsKLSAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoY2ggJiAweDNmKSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotI2VuZGlmCi0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdwb3M7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlcDsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemUsIGs7Ci0gICAgICAgICAgICAgICAgcmVwID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIKLSAgICAgICAgICAgICAgICAgICAgKGVycm9ycywgJmVycm9ySGFuZGxlciwgInV0Zi04IiwgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiLAotICAgICAgICAgICAgICAgICAgICAgcywgc2l6ZSwgJmV4YywgaS0xLCBpLCAmbmV3cG9zKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlcCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLQotICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpCi0gICAgICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlcCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlcCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAocmVwc2l6ZSA+IDQpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvZmZzZXQ7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcCAtIHN0YWNrYnVmOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAobmFsbG9jYXRlZCA+IFBZX1NTSVpFX1RfTUFYIC0gcmVwc2l6ZSArIDQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIGludGVnZXIgb3ZlcmZsb3cgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG5hbGxvY2F0ZWQgKz0gcmVwc2l6ZSAtIDQ7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBuYWxsb2NhdGVkKSA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbmFsbG9jYXRlZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X01FTUNQWShQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpLCBzdGFja2J1Ziwgb2Zmc2V0KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIG9mZnNldDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXApKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYXIgKnByZXAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXApOwotICAgICAgICAgICAgICAgICAgICBmb3IoayA9IHJlcHNpemU7IGsgPiAwOyBrLS0pCi0gICAgICAgICAgICAgICAgICAgICAgICAqcCsrID0gKnByZXArKzsKLSAgICAgICAgICAgICAgICB9IGVsc2UgLyogcmVwIGlzIHVuaWNvZGUgKi8gewotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpwcmVwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjOwotCi0gICAgICAgICAgICAgICAgICAgIGZvcihrPTA7IGs8cmVwc2l6ZTsgaysrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gcHJlcFtrXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgweDgwIDw9IGMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsICJ1dGYtOCIsIHMsIHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLTEsIGksICJzdXJyb2dhdGVzIG5vdCBhbGxvd2VkIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSAoY2hhcilwcmVwW2tdOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXApOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICB9IGVsc2UgaWYgKGNoIDwgMHgxMDAwMCkgewotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweGUwIHwgKGNoID4+IDEyKSk7Ci0gICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoKGNoID4+IDYpICYgMHgzZikpOwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKGNoICYgMHgzZikpOwotICAgICAgICB9IGVsc2UgLyogY2ggPj0gMHgxMDAwMCAqLyB7Ci0gICAgICAgICAgICAvKiBFbmNvZGUgVUNTNCBVbmljb2RlIG9yZGluYWxzICovCi0gICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ZjAgfCAoY2ggPj4gMTgpKTsKLSAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8ICgoY2ggPj4gMTIpICYgMHgzZikpOwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKChjaCA+PiA2KSAmIDB4M2YpKTsKLSAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8IChjaCAmIDB4M2YpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewotICAgICAgICAvKiBUaGlzIHdhcyBzdGFjayBhbGxvY2F0ZWQuICovCi0gICAgICAgIG5uZWVkZWQgPSBwIC0gc3RhY2tidWY7Ci0gICAgICAgIGFzc2VydChubmVlZGVkIDw9IG5hbGxvY2F0ZWQpOwotICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHN0YWNrYnVmLCBubmVlZGVkKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIEN1dCBiYWNrIHRvIHNpemUgYWN0dWFsbHkgbmVlZGVkLiAqLwotICAgICAgICBubmVlZGVkID0gcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgICAgIGFzc2VydChubmVlZGVkIDw9IG5hbGxvY2F0ZWQpOwotICAgICAgICBfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgbm5lZWRlZCk7Ci0gICAgfQotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKLSAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSBlcnJvcjoKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7Ci0gICAgUHlfWERFQ1JFRihleGMpOwotICAgIFB5X1hERUNSRUYocmVzdWx0KTsKLSAgICByZXR1cm4gTlVMTDsKLQotI3VuZGVmIE1BWF9TSE9SVF9VTklDSEFSUwotfQotCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzVVRGOFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKLXsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVVVEY4KFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlVbmljb2RlX1VURjgodW5pY29kZSkpCisgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKFB5VW5pY29kZV9VVEY4KHVuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkpOworCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKKyAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgLyogdGhlIHN0cmluZyBjYW5ub3QgYmUgQVNDSUksIG9yIFB5VW5pY29kZV9VVEY4KCkgd291bGQgYmUgc2V0ICovCisgICAgICAgIGFzc2VydCghUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKTsKKyAgICAgICAgcmV0dXJuIHVjczFsaWJfdXRmOF9lbmNvZGVyKHVuaWNvZGUsIGRhdGEsIHNpemUsIGVycm9ycyk7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczJsaWJfdXRmOF9lbmNvZGVyKHVuaWNvZGUsIGRhdGEsIHNpemUsIGVycm9ycyk7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczRsaWJfdXRmOF9lbmNvZGVyKHVuaWNvZGUsIGRhdGEsIHNpemUsIGVycm9ycyk7CisgICAgfQorfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRW5jb2RlVVRGOChjb25zdCBQeV9VTklDT0RFICpzLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIFB5T2JqZWN0ICp2LCAqdW5pY29kZTsKKworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocywgc2l6ZSk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdiA9IF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIHJldHVybiB2OworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBOVUxMKTsKIH0KIAogLyogLS0tIFVURi0zMiBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC0zMTEyLDE0ICs0OTYxLDcgQEAKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBQeV9zc2l6ZV90IG91dHBvczsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGU7Ci0gICAgUHlfVU5JQ09ERSAqcDsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgaW50IHBhaXJzID0gMDsKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpxcTsKLSNlbHNlCi0gICAgY29uc3QgaW50IHBhaXJzID0gMDsKLSNlbmRpZgorICAgIFB5T2JqZWN0ICp1bmljb2RlOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnEsICplOwogICAgIGludCBibyA9IDA7ICAgICAgIC8qIGFzc3VtZSBuYXRpdmUgb3JkZXJpbmcgYnkgZGVmYXVsdCAqLwogICAgIGNvbnN0IGNoYXIgKmVycm1zZyA9ICIiOwpAQCAtMzE4MywyMyArNTAyNSwxMyBAQAogICAgICAgICBpb3JkZXJbM10gPSAwOwogICAgIH0KIAotICAgIC8qIE9uIG5hcnJvdyBidWlsZHMgd2Ugc3BsaXQgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBCTVAgaW50byB0d28KLSAgICAgICBjb2RlcG9pbnRzID0+IGNvdW50IGhvdyBtdWNoIGV4dHJhIHNwYWNlIHdlIG5lZWQuICovCi0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgIGZvciAocXEgPSBxOyBlIC0gcXEgPj0gNDsgcXEgKz0gNCkKLSAgICAgICAgaWYgKHFxW2lvcmRlclsyXV0gIT0gMCB8fCBxcVtpb3JkZXJbM11dICE9IDApCi0gICAgICAgICAgICBwYWlycysrOwotI2VuZGlmCi0KICAgICAvKiBUaGlzIG1pZ2h0IGJlIG9uZSB0byBtdWNoLCBiZWNhdXNlIG9mIGEgQk9NICovCi0gICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KChzaXplKzMpLzQrcGFpcnMpOworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfTmV3KChzaXplKzMpLzQsIDEyNyk7CiAgICAgaWYgKCF1bmljb2RlKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKLQotICAgIC8qIFVucGFjayBVVEYtMzIgZW5jb2RlZCBkYXRhICovCi0gICAgcCA9IHVuaWNvZGUtPnN0cjsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGU7CisgICAgb3V0cG9zID0gMDsKIAogICAgIHdoaWxlIChxIDwgZSkgewogICAgICAgICBQeV9VQ1M0IGNoOwpAQCAtMzIyNCwyNCArNTA1NiwxNiBAQAogICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzQ7CiAgICAgICAgICAgICBnb3RvIHV0ZjMyRXJyb3I7CiAgICAgICAgIH0KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgIGlmIChjaCA+PSAweDEwMDAwKQotICAgICAgICB7Ci0gICAgICAgICAgICAqcCsrID0gMHhEODAwIHwgKChjaC0weDEwMDAwKSA+PiAxMCk7Ci0gICAgICAgICAgICAqcCsrID0gMHhEQzAwIHwgKChjaC0weDEwMDAwKSAmIDB4M0ZGKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgY2gpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgcSArPSA0OwogICAgICAgICBjb250aW51ZTsKICAgICAgIHV0ZjMyRXJyb3I6Ci0gICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7CiAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgInV0ZjMyIiwgZXJybXNnLAogICAgICAgICAgICAgICAgICZzdGFydHMsIChjb25zdCBjaGFyICoqKSZlLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAoY29uc3QgY2hhciAqKikmcSwKLSAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcywgJnApKQorICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zKSkKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKQEAgLTMyNTIsMTIgKzUwNzYsMTIgQEAKICAgICAgICAgKmNvbnN1bWVkID0gKGNvbnN0IGNoYXIgKilxLXN0YXJ0czsKIAogICAgIC8qIEFkanVzdCBsZW5ndGggKi8KLSAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnVuaWNvZGUsIHAgLSB1bmljb2RlLT5zdHIpIDwgMCkKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnVuaWNvZGUsIG91dHBvcykgPCAwKQogICAgICAgICBnb3RvIG9uRXJyb3I7CiAKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh1bmljb2RlKTsKIAogICBvbkVycm9yOgogICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKQEAgLTMyNjcsMTkgKzUwOTEsMTYgQEAKIH0KIAogUHlPYmplY3QgKgotUHlVbmljb2RlX0VuY29kZVVURjMyKGNvbnN0IFB5X1VOSUNPREUgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICBpbnQgYnl0ZW9yZGVyKQorX1B5VW5pY29kZV9FbmNvZGVVVEYzMihQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgIGludCBieXRlb3JkZXIpCiB7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqdjsKICAgICB1bnNpZ25lZCBjaGFyICpwOwotICAgIFB5X3NzaXplX3QgbnNpemUsIGJ5dGVzaXplOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBQeV9zc2l6ZV90IGksIHBhaXJzOwotI2Vsc2UKLSAgICBjb25zdCBpbnQgcGFpcnMgPSAwOwotI2VuZGlmCisgICAgUHlfc3NpemVfdCBuc2l6ZSwgaTsKICAgICAvKiBPZmZzZXRzIGZyb20gcCBmb3Igc3RvcmluZyBieXRlIHBhaXJzIGluIHRoZSByaWdodCBvcmRlci4gKi8KICNpZmRlZiBCWVRFT1JERVJfSVNfTElUVExFX0VORElBTgogICAgIGludCBpb3JkZXJbXSA9IHswLCAxLCAyLCAzfTsKQEAgLTMyOTYsMjYgKzUxMTcsMjcgQEAKICAgICAgICAgcCArPSA0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlKDApCiAKLSAgICAvKiBJbiBuYXJyb3cgYnVpbGRzIHdlIGNhbiBvdXRwdXQgc3Vycm9nYXRlIHBhaXJzIGFzIG9uZSBjb2RlcG9pbnQsCi0gICAgICAgc28gd2UgbmVlZCBsZXNzIHNwYWNlLiAqLwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBmb3IgKGkgPSBwYWlycyA9IDA7IGkgPCBzaXplLTE7IGkrKykKLSAgICAgICAgaWYgKDB4RDgwMCA8PSBzW2ldICYmIHNbaV0gPD0gMHhEQkZGICYmCi0gICAgICAgICAgICAweERDMDAgPD0gc1tpKzFdICYmIHNbaSsxXSA8PSAweERGRkYpCi0gICAgICAgICAgICBwYWlycysrOwotI2VuZGlmCi0gICAgbnNpemUgPSAoc2l6ZSAtIHBhaXJzICsgKGJ5dGVvcmRlciA9PSAwKSk7Ci0gICAgYnl0ZXNpemUgPSBuc2l6ZSAqIDQ7Ci0gICAgaWYgKGJ5dGVzaXplIC8gNCAhPSBuc2l6ZSkKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdHIpKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHIpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CisKKyAgICBuc2l6ZSA9IGxlbiArIChieXRlb3JkZXIgPT0gMCk7CisgICAgaWYgKG5zaXplID4gUFlfU1NJWkVfVF9NQVggLyA0KQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBieXRlc2l6ZSk7CisgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbnNpemUgKiA0KTsKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHAgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwogICAgIGlmIChieXRlb3JkZXIgPT0gMCkKICAgICAgICAgU1RPUkVDSEFSKDB4RkVGRik7Ci0gICAgaWYgKHNpemUgPT0gMCkKKyAgICBpZiAobGVuID09IDApCiAgICAgICAgIGdvdG8gZG9uZTsKIAogICAgIGlmIChieXRlb3JkZXIgPT0gLTEpIHsKQEAgLTMzMzMsMzYgKzUxNTUsMzMgQEAKICAgICAgICAgaW9yZGVyWzNdID0gMDsKICAgICB9CiAKLSAgICB3aGlsZSAoc2l6ZS0tID4gMCkgewotICAgICAgICBQeV9VQ1M0IGNoID0gKnMrKzsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgIGlmICgweEQ4MDAgPD0gY2ggJiYgY2ggPD0gMHhEQkZGICYmIHNpemUgPiAwKSB7Ci0gICAgICAgICAgICBQeV9VQ1M0IGNoMiA9ICpzOwotICAgICAgICAgICAgaWYgKDB4REMwMCA8PSBjaDIgJiYgY2gyIDw9IDB4REZGRikgewotICAgICAgICAgICAgICAgIGNoID0gKCgoY2ggJiAweDNGRik8PDEwKSB8IChjaDIgJiAweDNGRikpICsgMHgxMDAwMDsKLSAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgc2l6ZS0tOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgU1RPUkVDSEFSKGNoKTsKLSAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorICAgICAgICBTVE9SRUNIQVIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOwogCiAgIGRvbmU6CiAgICAgcmV0dXJuIHY7CiAjdW5kZWYgU1RPUkVDSEFSCiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNVVEYzMlN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVVVEYzMihjb25zdCBQeV9VTklDT0RFICpzLAorICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgaW50IGJ5dGVvcmRlcikKIHsKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewotICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnRtcCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBzaXplKTsKKyAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjMyKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIodG1wLCBlcnJvcnMsIGJ5dGVvcmRlcik7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUHlPYmplY3QgKgorUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIodW5pY29kZSwgTlVMTCwgMCk7CiB9CiAKIC8qIC0tLSBVVEYtMTYgQ29kZWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtMzM3NiwyMyArNTE5NSw2IEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsKHMsIHNpemUsIGVycm9ycywgYnl0ZW9yZGVyLCBOVUxMKTsKIH0KIAotLyogVHdvIG1hc2tzIGZvciBmYXN0IGNoZWNraW5nIG9mIHdoZXRoZXIgYSBDICdsb25nJyBtYXkgY29udGFpbgotICAgVVRGMTYtZW5jb2RlZCBzdXJyb2dhdGUgY2hhcmFjdGVycy4gVGhpcyBpcyBhbiBlZmZpY2llbnQgaGV1cmlzdGljLAotICAgYXNzdW1pbmcgdGhhdCBub24tc3Vycm9nYXRlIGNoYXJhY3RlcnMgd2l0aCBhIGNvZGUgcG9pbnQgPj0gMHg4MDAwIGFyZQotICAgcmFyZSBpbiBtb3N0IGlucHV0LgotICAgRkFTVF9DSEFSX01BU0sgaXMgdXNlZCB3aGVuIHRoZSBpbnB1dCBpcyBpbiBuYXRpdmUgYnl0ZSBvcmRlcmluZywKLSAgIFNXQVBQRURfRkFTVF9DSEFSX01BU0sgd2hlbiB0aGUgaW5wdXQgaXMgaW4gYnl0ZXN3YXBwZWQgb3JkZXJpbmcuCi0qLwotI2lmIChTSVpFT0ZfTE9ORyA9PSA4KQotIyBkZWZpbmUgRkFTVF9DSEFSX01BU0sgICAgICAgICAweDgwMDA4MDAwODAwMDgwMDBMCi0jIGRlZmluZSBTV0FQUEVEX0ZBU1RfQ0hBUl9NQVNLIDB4MDA4MDAwODAwMDgwMDA4MEwKLSNlbGlmIChTSVpFT0ZfTE9ORyA9PSA0KQotIyBkZWZpbmUgRkFTVF9DSEFSX01BU0sgICAgICAgICAweDgwMDA4MDAwTAotIyBkZWZpbmUgU1dBUFBFRF9GQVNUX0NIQVJfTUFTSyAweDAwODAwMDgwTAotI2Vsc2UKLSMgZXJyb3IgQyAnbG9uZycgc2l6ZSBzaG91bGQgYmUgZWl0aGVyIDQgb3IgOCEKLSNlbmRpZgotCiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bChjb25zdCBjaGFyICpzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLApAQCAtMzQwNCwzMSArNTIwNiwxNCBAQAogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIFB5X3NzaXplX3Qgb3V0cG9zOwotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKLSAgICBQeV9VTklDT0RFICpwOwotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnEsICplLCAqYWxpZ25lZF9lbmQ7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcSwgKmU7CiAgICAgaW50IGJvID0gMDsgICAgICAgLyogYXNzdW1lIG5hdGl2ZSBvcmRlcmluZyBieSBkZWZhdWx0ICovCi0gICAgaW50IG5hdGl2ZV9vcmRlcmluZyA9IDA7CisgICAgaW50IG5hdGl2ZV9vcmRlcmluZzsKICAgICBjb25zdCBjaGFyICplcnJtc2cgPSAiIjsKLSAgICAvKiBPZmZzZXRzIGZyb20gcSBmb3IgcmV0cmlldmluZyBieXRlIHBhaXJzIGluIHRoZSByaWdodCBvcmRlci4gKi8KLSNpZmRlZiBCWVRFT1JERVJfSVNfTElUVExFX0VORElBTgotICAgIGludCBpaGkgPSAxLCBpbG8gPSAwOwotI2Vsc2UKLSAgICBpbnQgaWhpID0gMCwgaWxvID0gMTsKLSNlbmRpZgogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogCi0gICAgLyogTm90ZTogc2l6ZSB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nIFVuaWNvZGUKLSAgICAgICBjaGFyYWN0ZXIgY291bnQgKi8KLSAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7Ci0gICAgaWYgKCF1bmljb2RlKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKLQotICAgIC8qIFVucGFjayBVVEYtMTYgZW5jb2RlZCBkYXRhICovCi0gICAgcCA9IHVuaWNvZGUtPnN0cjsKICAgICBxID0gKHVuc2lnbmVkIGNoYXIgKilzOwogICAgIGUgPSBxICsgc2l6ZTsKIApAQCAtMzQzOSwxNzkgKzUyMjQsMTAwIEBACiAgICAgICAgYnl0ZSBvcmRlciBzZXR0aW5nIGFjY29yZGluZ2x5LiBJbiBuYXRpdmUgbW9kZSwgdGhlIGxlYWRpbmcgQk9NCiAgICAgICAgbWFyayBpcyBza2lwcGVkLCBpbiBhbGwgb3RoZXIgbW9kZXMsIGl0IGlzIGNvcGllZCB0byB0aGUgb3V0cHV0CiAgICAgICAgc3RyZWFtIGFzLWlzIChnaXZpbmcgYSBaV05CU1AgY2hhcmFjdGVyKS4gKi8KLSAgICBpZiAoYm8gPT0gMCkgewotICAgICAgICBpZiAoc2l6ZSA+PSAyKSB7Ci0gICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFIGJvbSA9IChxW2loaV0gPDwgOCkgfCBxW2lsb107Ci0jaWZkZWYgQllURU9SREVSX0lTX0xJVFRMRV9FTkRJQU4KLSAgICAgICAgICAgIGlmIChib20gPT0gMHhGRUZGKSB7Ci0gICAgICAgICAgICAgICAgcSArPSAyOwotICAgICAgICAgICAgICAgIGJvID0gLTE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChib20gPT0gMHhGRkZFKSB7Ci0gICAgICAgICAgICAgICAgcSArPSAyOwotICAgICAgICAgICAgICAgIGJvID0gMTsKLSAgICAgICAgICAgIH0KLSNlbHNlCi0gICAgICAgICAgICBpZiAoYm9tID09IDB4RkVGRikgewotICAgICAgICAgICAgICAgIHEgKz0gMjsKLSAgICAgICAgICAgICAgICBibyA9IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChib20gPT0gMHhGRkZFKSB7Ci0gICAgICAgICAgICAgICAgcSArPSAyOwotICAgICAgICAgICAgICAgIGJvID0gLTE7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKKyAgICBpZiAoYm8gPT0gMCAmJiBzaXplID49IDIpIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCBib20gPSAocVsxXSA8PCA4KSB8IHFbMF07CisgICAgICAgIGlmIChib20gPT0gMHhGRUZGKSB7CisgICAgICAgICAgICBxICs9IDI7CisgICAgICAgICAgICBibyA9IC0xOwogICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGJvbSA9PSAweEZGRkUpIHsKKyAgICAgICAgICAgIHEgKz0gMjsKKyAgICAgICAgICAgIGJvID0gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYnl0ZW9yZGVyKQorICAgICAgICAgICAgKmJ5dGVvcmRlciA9IGJvOwogICAgIH0KIAotICAgIGlmIChibyA9PSAtMSkgewotICAgICAgICAvKiBmb3JjZSBMRSAqLwotICAgICAgICBpaGkgPSAxOwotICAgICAgICBpbG8gPSAwOworICAgIGlmIChxID09IGUpIHsKKyAgICAgICAgaWYgKGNvbnN1bWVkKQorICAgICAgICAgICAgKmNvbnN1bWVkID0gc2l6ZTsKKyAgICAgICAgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCk7CiAgICAgfQotICAgIGVsc2UgaWYgKGJvID09IDEpIHsKLSAgICAgICAgLyogZm9yY2UgQkUgKi8KLSAgICAgICAgaWhpID0gMDsKLSAgICAgICAgaWxvID0gMTsKLSAgICB9CisKICNpZmRlZiBCWVRFT1JERVJfSVNfTElUVExFX0VORElBTgotICAgIG5hdGl2ZV9vcmRlcmluZyA9IGlsbyA8IGloaTsKKyAgICBuYXRpdmVfb3JkZXJpbmcgPSBibyA8PSAwOwogI2Vsc2UKLSAgICBuYXRpdmVfb3JkZXJpbmcgPSBpbG8gPiBpaGk7CisgICAgbmF0aXZlX29yZGVyaW5nID0gYm8gPj0gMDsKICNlbmRpZgogCi0gICAgYWxpZ25lZF9lbmQgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAoKHNpemVfdCkgZSAmIH5MT05HX1BUUl9NQVNLKTsKKyAgICAvKiBOb3RlOiBzaXplIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcgVW5pY29kZQorICAgICAgIGNoYXJhY3RlciBjb3VudCAqLworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfTmV3KChlIC0gcSArIDEpIC8gMiwgMTI3KTsKKyAgICBpZiAoIXVuaWNvZGUpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgb3V0cG9zID0gMDsKICAgICB3aGlsZSAoMSkgewotICAgICAgICBQeV9VTklDT0RFIGNoOwotICAgICAgICBpZiAoZSAtIHEgPCAyKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSAwOworICAgICAgICBpZiAoZSAtIHEgPj0gMikgeworICAgICAgICAgICAgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICAgICAgICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgY2ggPSBhc2NpaWxpYl91dGYxNl9kZWNvZGUoJnEsIGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSksICZvdXRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX29yZGVyaW5nKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGNoID0gdWNzMWxpYl91dGYxNl9kZWNvZGUoJnEsIGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSksICZvdXRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX29yZGVyaW5nKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICAgICAgICAgIGNoID0gdWNzMmxpYl91dGYxNl9kZWNvZGUoJnEsIGUsCisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9vcmRlcmluZyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgICAgICAgICBjaCA9IHVjczRsaWJfdXRmMTZfZGVjb2RlKCZxLCBlLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSksICZvdXRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfb3JkZXJpbmcpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChjaCkKKyAgICAgICAgeworICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAvKiByZW1haW5pbmcgYnl0ZSBhdCB0aGUgZW5kPyAoc2l6ZSBzaG91bGQgYmUgZXZlbikgKi8KICAgICAgICAgICAgIGlmIChxID09IGUgfHwgY29uc3VtZWQpCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZ290byBFbmQ7CiAgICAgICAgICAgICBlcnJtc2cgPSAidHJ1bmNhdGVkIGRhdGEiOwogICAgICAgICAgICAgc3RhcnRpbnBvcyA9ICgoY29uc3QgY2hhciAqKXEpIC0gc3RhcnRzOwogICAgICAgICAgICAgZW5kaW5wb3MgPSAoKGNvbnN0IGNoYXIgKillKSAtIHN0YXJ0czsKLSAgICAgICAgICAgIG91dHBvcyA9IHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKLSAgICAgICAgICAgIGdvdG8gdXRmMTZFcnJvcjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgLyogVGhlIHJlbWFpbmluZyBpbnB1dCBjaGFycyBhcmUgaWdub3JlZCBpZiB0aGUgY2FsbGJhY2sKICAgICAgICAgICAgICAgIGNob29zZXMgdG8gc2tpcCB0aGUgaW5wdXQgKi8KLSAgICAgICAgfQotICAgICAgICAvKiBGaXJzdCBjaGVjayBmb3IgcG9zc2libGUgYWxpZ25lZCByZWFkIG9mIGEgQyAnbG9uZycuIFVuYWxpZ25lZAotICAgICAgICAgICByZWFkcyBhcmUgbW9yZSBleHBlbnNpdmUsIGJldHRlciB0byBkZWZlciB0byBhbm90aGVyIGl0ZXJhdGlvbi4gKi8KLSAgICAgICAgaWYgKCEoKHNpemVfdCkgcSAmIExPTkdfUFRSX01BU0spKSB7Ci0gICAgICAgICAgICAvKiBGYXN0IHBhdGggZm9yIHJ1bnMgb2Ygbm9uLXN1cnJvZ2F0ZSBjaGFycy4gKi8KLSAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9xID0gcTsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKl9wID0gcDsKLSAgICAgICAgICAgIGlmIChuYXRpdmVfb3JkZXJpbmcpIHsKLSAgICAgICAgICAgICAgICAvKiBOYXRpdmUgb3JkZXJpbmcgaXMgc2ltcGxlOiBhcyBsb25nIGFzIHRoZSBpbnB1dCBjYW5ub3QKLSAgICAgICAgICAgICAgICAgICBwb3NzaWJseSBjb250YWluIGEgc3Vycm9nYXRlIGNoYXIsIGRvIGFuIHVucm9sbGVkIGNvcHkKLSAgICAgICAgICAgICAgICAgICBvZiBzZXZlcmFsIDE2LWJpdCBjb2RlIHBvaW50cyB0byB0aGUgdGFyZ2V0IG9iamVjdC4KLSAgICAgICAgICAgICAgICAgICBUaGUgbm9uLXN1cnJvZ2F0ZSBjaGVjayBpcyBkb25lIG9uIHNldmVyYWwgaW5wdXQgYnl0ZXMKLSAgICAgICAgICAgICAgICAgICBhdCBhIHRpbWUgKGFzIG1hbnkgYXMgYSBDICdsb25nJyBjYW4gY29udGFpbikuICovCi0gICAgICAgICAgICAgICAgd2hpbGUgKF9xIDwgYWxpZ25lZF9lbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhID0gKiAodW5zaWduZWQgbG9uZyAqKSBfcTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEgJiBGQVNUX0NIQVJfTUFTSykKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBfcFswXSA9ICgodW5zaWduZWQgc2hvcnQgKikgX3EpWzBdOwotICAgICAgICAgICAgICAgICAgICBfcFsxXSA9ICgodW5zaWduZWQgc2hvcnQgKikgX3EpWzFdOwotI2lmIChTSVpFT0ZfTE9ORyA9PSA4KQotICAgICAgICAgICAgICAgICAgICBfcFsyXSA9ICgodW5zaWduZWQgc2hvcnQgKikgX3EpWzJdOwotICAgICAgICAgICAgICAgICAgICBfcFszXSA9ICgodW5zaWduZWQgc2hvcnQgKikgX3EpWzNdOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgIF9xICs9IFNJWkVPRl9MT05HOwotICAgICAgICAgICAgICAgICAgICBfcCArPSBTSVpFT0ZfTE9ORyAvIDI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgLyogQnl0ZXN3YXBwZWQgb3JkZXJpbmcgaXMgc2ltaWxhciwgYnV0IHdlIG11c3QgZGVjb21wb3NlCi0gICAgICAgICAgICAgICAgICAgdGhlIGNvcHkgYnl0ZXdpc2UsIGFuZCB0YWtlIGNhcmUgb2YgemVybydpbmcgb3V0IHRoZQotICAgICAgICAgICAgICAgICAgIHVwcGVyIGJ5dGVzIGlmIHRoZSB0YXJnZXQgb2JqZWN0IGlzIGluIDMyLWJpdCB1bml0cwotICAgICAgICAgICAgICAgICAgICh0aGF0IGlzLCBpbiBVQ1MtNCBidWlsZHMpLiAqLwotICAgICAgICAgICAgICAgIHdoaWxlIChfcSA8IGFsaWduZWRfZW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YSA9ICogKHVuc2lnbmVkIGxvbmcgKikgX3E7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhICYgU1dBUFBFRF9GQVNUX0NIQVJfTUFTSykKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAvKiBaZXJvIHVwcGVyIGJ5dGVzIGluIFVDUy00IGJ1aWxkcyAqLwotI2lmIChQeV9VTklDT0RFX1NJWkUgPiAyKQotICAgICAgICAgICAgICAgICAgICBfcFswXSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIF9wWzFdID0gMDsKLSNpZiAoU0laRU9GX0xPTkcgPT0gOCkKLSAgICAgICAgICAgICAgICAgICAgX3BbMl0gPSAwOwotICAgICAgICAgICAgICAgICAgICBfcFszXSA9IDA7Ci0jZW5kaWYKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAvKiBJc3N1ZSAjNDkxNjsgVUNTLTQgYnVpbGRzIG9uIGJpZyBlbmRpYW4gbWFjaGluZXMgbXVzdAotICAgICAgICAgICAgICAgICAgICAgICBmaWxsIHRoZSB0d28gbGFzdCBieXRlcyBvZiBlYWNoIDQtYnl0ZSB1bml0LiAqLwotI2lmICghZGVmaW5lZChCWVRFT1JERVJfSVNfTElUVExFX0VORElBTikgJiYgUHlfVU5JQ09ERV9TSVpFID4gMikKLSMgZGVmaW5lIE9GRiAyCi0jZWxzZQotIyBkZWZpbmUgT0ZGIDAKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKikgX3ApW09GRiArIDFdID0gX3FbMF07Ci0gICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKSBfcClbT0ZGICsgMF0gPSBfcVsxXTsKLSAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICopIF9wKVtPRkYgKyAxICsgUHlfVU5JQ09ERV9TSVpFXSA9IF9xWzJdOwotICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKikgX3ApW09GRiArIDAgKyBQeV9VTklDT0RFX1NJWkVdID0gX3FbM107Ci0jaWYgKFNJWkVPRl9MT05HID09IDgpCi0gICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKSBfcClbT0ZGICsgMSArIDIgKiBQeV9VTklDT0RFX1NJWkVdID0gX3FbNF07Ci0gICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKSBfcClbT0ZGICsgMCArIDIgKiBQeV9VTklDT0RFX1NJWkVdID0gX3FbNV07Ci0gICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKSBfcClbT0ZGICsgMSArIDMgKiBQeV9VTklDT0RFX1NJWkVdID0gX3FbNl07Ci0gICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKSBfcClbT0ZGICsgMCArIDMgKiBQeV9VTklDT0RFX1NJWkVdID0gX3FbN107Ci0jZW5kaWYKLSN1bmRlZiBPRkYKLSAgICAgICAgICAgICAgICAgICAgX3EgKz0gU0laRU9GX0xPTkc7Ci0gICAgICAgICAgICAgICAgICAgIF9wICs9IFNJWkVPRl9MT05HIC8gMjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwID0gX3A7Ci0gICAgICAgICAgICBxID0gX3E7Ci0gICAgICAgICAgICBpZiAoZSAtIHEgPCAyKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGNoID0gKHFbaWhpXSA8PCA4KSB8IHFbaWxvXTsKLQotICAgICAgICBxICs9IDI7Ci0KLSAgICAgICAgaWYgKGNoIDwgMHhEODAwIHx8IGNoID4gMHhERkZGKSB7Ci0gICAgICAgICAgICAqcCsrID0gY2g7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIFVURi0xNiBjb2RlIHBhaXI6ICovCi0gICAgICAgIGlmIChlIC0gcSA8IDIpIHsKKyAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgcSAtPSAyOwogICAgICAgICAgICAgaWYgKGNvbnN1bWVkKQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGdvdG8gRW5kOwogICAgICAgICAgICAgZXJybXNnID0gInVuZXhwZWN0ZWQgZW5kIG9mIGRhdGEiOwogICAgICAgICAgICAgc3RhcnRpbnBvcyA9ICgoY29uc3QgY2hhciAqKXEpIC0gc3RhcnRzOwogICAgICAgICAgICAgZW5kaW5wb3MgPSAoKGNvbnN0IGNoYXIgKillKSAtIHN0YXJ0czsKLSAgICAgICAgICAgIGdvdG8gdXRmMTZFcnJvcjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBlcnJtc2cgPSAiaWxsZWdhbCBlbmNvZGluZyI7CisgICAgICAgICAgICBzdGFydGlucG9zID0gKChjb25zdCBjaGFyICopcSkgLSAyIC0gc3RhcnRzOworICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBlcnJtc2cgPSAiaWxsZWdhbCBVVEYtMTYgc3Vycm9nYXRlIjsKKyAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSAoKGNvbnN0IGNoYXIgKilxKSAtIDQgLSBzdGFydHM7CisgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCBjaCkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmICgweEQ4MDAgPD0gY2ggJiYgY2ggPD0gMHhEQkZGKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGNoMiA9IChxW2loaV0gPDwgOCkgfCBxW2lsb107Ci0gICAgICAgICAgICBxICs9IDI7Ci0gICAgICAgICAgICBpZiAoMHhEQzAwIDw9IGNoMiAmJiBjaDIgPD0gMHhERkZGKSB7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgICAgICpwKysgPSBjaDsKLSAgICAgICAgICAgICAgICAqcCsrID0gY2gyOwotI2Vsc2UKLSAgICAgICAgICAgICAgICAqcCsrID0gKCgoY2ggJiAweDNGRik8PDEwKSB8IChjaDIgJiAweDNGRikpICsgMHgxMDAwMDsKLSNlbmRpZgotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXJybXNnID0gImlsbGVnYWwgVVRGLTE2IHN1cnJvZ2F0ZSI7Ci0gICAgICAgICAgICAgICAgc3RhcnRpbnBvcyA9ICgoKGNvbnN0IGNoYXIgKilxKS00KS1zdGFydHM7Ci0gICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzI7Ci0gICAgICAgICAgICAgICAgZ290byB1dGYxNkVycm9yOwotICAgICAgICAgICAgfQogCi0gICAgICAgIH0KLSAgICAgICAgZXJybXNnID0gImlsbGVnYWwgZW5jb2RpbmciOwotICAgICAgICBzdGFydGlucG9zID0gKCgoY29uc3QgY2hhciAqKXEpLTIpLXN0YXJ0czsKLSAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzI7Ci0gICAgICAgIC8qIEZhbGwgdGhyb3VnaCB0byByZXBvcnQgdGhlIGVycm9yICovCi0KLSAgICAgIHV0ZjE2RXJyb3I6Ci0gICAgICAgIG91dHBvcyA9IHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgIGVycm9ycywKICAgICAgICAgICAgICAgICAmZXJyb3JIYW5kbGVyLApAQCAtMzYyMywyNyArNTMyOSwyMSBAQAogICAgICAgICAgICAgICAgICZleGMsCiAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKiopJnEsCiAgICAgICAgICAgICAgICAgJnVuaWNvZGUsCi0gICAgICAgICAgICAgICAgJm91dHBvcywKLSAgICAgICAgICAgICAgICAmcCkpCisgICAgICAgICAgICAgICAgJm91dHBvcykpCiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgIC8qIFVwZGF0ZSBkYXRhIGJlY2F1c2UgdW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIgbWlnaHQgaGF2ZQotICAgICAgICAgICBjaGFuZ2VkIHRoZSBpbnB1dCBvYmplY3QuICovCi0gICAgICAgIGFsaWduZWRfZW5kID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgKChzaXplX3QpIGUgJiB+TE9OR19QVFJfTUFTSyk7CiAgICAgfQogCi0gICAgaWYgKGJ5dGVvcmRlcikKLSAgICAgICAgKmJ5dGVvcmRlciA9IGJvOwotCitFbmQ6CiAgICAgaWYgKGNvbnN1bWVkKQogICAgICAgICAqY29uc3VtZWQgPSAoY29uc3QgY2hhciAqKXEtc3RhcnRzOwogCiAgICAgLyogQWRqdXN0IGxlbmd0aCAqLwotICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmdW5pY29kZSwgcCAtIHVuaWNvZGUtPnN0cikgPCAwKQorICAgIGlmICh1bmljb2RlX3Jlc2l6ZSgmdW5pY29kZSwgb3V0cG9zKSA8IDApCiAgICAgICAgIGdvdG8gb25FcnJvcjsKIAogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHVuaWNvZGUpOwogCiAgIG9uRXJyb3I6CiAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwpAQCAtMzY1Miw4ICs1MzUyLDc3IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLSN1bmRlZiBGQVNUX0NIQVJfTUFTSwotI3VuZGVmIFNXQVBQRURfRkFTVF9DSEFSX01BU0sKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfRW5jb2RlVVRGMTYoUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnl0ZW9yZGVyKQoreworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICBjb25zdCB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3QgbGVuOworICAgIFB5T2JqZWN0ICp2OworICAgIHVuc2lnbmVkIHNob3J0ICpvdXQ7CisgICAgUHlfc3NpemVfdCBieXRlc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHBhaXJzOworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorICAgIGludCBuYXRpdmVfb3JkZXJpbmcgPSBieXRlb3JkZXIgPj0gMDsKKyNlbHNlCisgICAgaW50IG5hdGl2ZV9vcmRlcmluZyA9IGJ5dGVvcmRlciA8PSAwOworI2VuZGlmCisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdHIpKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHIpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CisKKyAgICBwYWlycyA9IDA7CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCAqaW4gPSAoY29uc3QgUHlfVUNTNCAqKWRhdGE7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgKmVuZCA9IGluICsgbGVuOworICAgICAgICB3aGlsZSAoaW4gPCBlbmQpCisgICAgICAgICAgICBpZiAoKmluKysgPj0gMHgxMDAwMCkKKyAgICAgICAgICAgICAgICBwYWlycysrOworICAgIH0KKyAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyAyIC0gcGFpcnMgLSAoYnl0ZW9yZGVyID09IDApKQorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBieXRlc2l6ZSA9IChsZW4gKyBwYWlycyArIChieXRlb3JkZXIgPT0gMCkpICogMjsKKyAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBieXRlc2l6ZSk7CisgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBvdXRwdXQgYnVmZmVyIGlzIDItYnl0ZXMgYWxpZ25lZCAqLworICAgIGFzc2VydChfUHlfSVNfQUxJR05FRChQeUJ5dGVzX0FTX1NUUklORyh2KSwgMikpOworICAgIG91dCA9ICh1bnNpZ25lZCBzaG9ydCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHYpOworICAgIGlmIChieXRlb3JkZXIgPT0gMCkKKyAgICAgICAgKm91dCsrID0gMHhGRUZGOworICAgIGlmIChsZW4gPT0gMCkKKyAgICAgICAgZ290byBkb25lOworCisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDogeworICAgICAgICB1Y3MxbGliX3V0ZjE2X2VuY29kZShvdXQsIChjb25zdCBQeV9VQ1MxICopZGF0YSwgbGVuLCBuYXRpdmVfb3JkZXJpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDogeworICAgICAgICB1Y3MybGliX3V0ZjE2X2VuY29kZShvdXQsIChjb25zdCBQeV9VQ1MyICopZGF0YSwgbGVuLCBuYXRpdmVfb3JkZXJpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDogeworICAgICAgICB1Y3M0bGliX3V0ZjE2X2VuY29kZShvdXQsIChjb25zdCBQeV9VQ1M0ICopZGF0YSwgbGVuLCBuYXRpdmVfb3JkZXJpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgIH0KKworICBkb25lOgorICAgIHJldHVybiB2OworfQogCiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfRW5jb2RlVVRGMTYoY29uc3QgUHlfVU5JQ09ERSAqcywKQEAgLTM2NjEsMTM1ICs1NDMwLDE0MCBAQAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnl0ZW9yZGVyKQogewotICAgIFB5T2JqZWN0ICp2OwotICAgIHVuc2lnbmVkIGNoYXIgKnA7Ci0gICAgUHlfc3NpemVfdCBuc2l6ZSwgYnl0ZXNpemU7Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgUHlfc3NpemVfdCBpLCBwYWlyczsKLSNlbHNlCi0gICAgY29uc3QgaW50IHBhaXJzID0gMDsKLSNlbmRpZgotICAgIC8qIE9mZnNldHMgZnJvbSBwIGZvciBzdG9yaW5nIGJ5dGUgcGFpcnMgaW4gdGhlIHJpZ2h0IG9yZGVyLiAqLwotI2lmZGVmIEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOCi0gICAgaW50IGloaSA9IDEsIGlsbyA9IDA7Ci0jZWxzZQotICAgIGludCBpaGkgPSAwLCBpbG8gPSAxOwotI2VuZGlmCi0KLSNkZWZpbmUgU1RPUkVDSEFSKENIKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcFtpaGldID0gKChDSCkgPj4gOCkgJiAweGZmOyAgICAgICAgICAgIFwKLSAgICAgICAgcFtpbG9dID0gKENIKSAmIDB4ZmY7ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcCArPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlKDApCi0KLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBmb3IgKGkgPSBwYWlycyA9IDA7IGkgPCBzaXplOyBpKyspCi0gICAgICAgIGlmIChzW2ldID49IDB4MTAwMDApCi0gICAgICAgICAgICBwYWlycysrOwotI2VuZGlmCi0gICAgLyogMiAqIChzaXplICsgcGFpcnMgKyAoYnl0ZW9yZGVyID09IDApKSAqLwotICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggfHwKLSAgICAgICAgc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gcGFpcnMgLSAoYnl0ZW9yZGVyID09IDApKQotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICBuc2l6ZSA9IHNpemUgKyBwYWlycyArIChieXRlb3JkZXIgPT0gMCk7Ci0gICAgYnl0ZXNpemUgPSBuc2l6ZSAqIDI7Ci0gICAgaWYgKGJ5dGVzaXplIC8gMiAhPSBuc2l6ZSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnl0ZXNpemUpOwotICAgIGlmICh2ID09IE5VTEwpCisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdG1wID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIHNpemUpOworICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBwID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyh2KTsKLSAgICBpZiAoYnl0ZW9yZGVyID09IDApCi0gICAgICAgIFNUT1JFQ0hBUigweEZFRkYpOwotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIGlmIChieXRlb3JkZXIgPT0gLTEpIHsKLSAgICAgICAgLyogZm9yY2UgTEUgKi8KLSAgICAgICAgaWhpID0gMTsKLSAgICAgICAgaWxvID0gMDsKLSAgICB9Ci0gICAgZWxzZSBpZiAoYnl0ZW9yZGVyID09IDEpIHsKLSAgICAgICAgLyogZm9yY2UgQkUgKi8KLSAgICAgICAgaWhpID0gMDsKLSAgICAgICAgaWxvID0gMTsKLSAgICB9Ci0KLSAgICB3aGlsZSAoc2l6ZS0tID4gMCkgewotICAgICAgICBQeV9VTklDT0RFIGNoID0gKnMrKzsKLSAgICAgICAgUHlfVU5JQ09ERSBjaDIgPSAwOwotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICBpZiAoY2ggPj0gMHgxMDAwMCkgewotICAgICAgICAgICAgY2gyID0gMHhEQzAwIHwgKChjaC0weDEwMDAwKSAmIDB4M0ZGKTsKLSAgICAgICAgICAgIGNoICA9IDB4RDgwMCB8ICgoY2gtMHgxMDAwMCkgPj4gMTApOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgU1RPUkVDSEFSKGNoKTsKLSAgICAgICAgaWYgKGNoMikKLSAgICAgICAgICAgIFNUT1JFQ0hBUihjaDIpOwotICAgIH0KLQotICBkb25lOgotICAgIHJldHVybiB2OwotI3VuZGVmIFNUT1JFQ0hBUgorICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYodG1wLCBlcnJvcnMsIGJ5dGVvcmRlcik7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc1VURjE2U3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCiB7Ci0gICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKLSAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGMTYoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYodW5pY29kZSwgTlVMTCwgMCk7CiB9CiAKIC8qIC0tLSBVbmljb2RlIEVzY2FwZSBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCisvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlLCBkZXRlcm1pbmVzCisgICBpZiBhbGwgdGhlIGVzY2FwZXMgaW4gdGhlIHN0cmluZyBtYWtlIGl0IHN0aWxsIGEgdmFsaWQgQVNDSUkgc3RyaW5nLgorICAgUmV0dXJucyAtMSBpZiBhbnkgZXNjYXBlcyB3ZXJlIGZvdW5kIHdoaWNoIGNhdXNlIHRoZSBzdHJpbmcgdG8KKyAgIHBvcCBvdXQgb2YgQVNDSUkgcmFuZ2UuICBPdGhlcndpc2UgcmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZQorICAgcmVxdWlyZWQgYnVmZmVyIHRvIGhvbGQgdGhlIHN0cmluZy4KKyAgICovCitzdGF0aWMgUHlfc3NpemVfdAorbGVuZ3RoX29mX2VzY2FwZWRfYXNjaWlfc3RyaW5nKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilzOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVuZCA9IHAgKyBzaXplOworICAgIFB5X3NzaXplX3QgbGVuZ3RoID0gMDsKKworICAgIGlmIChzaXplIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgZm9yICg7IHAgPCBlbmQ7ICsrcCkgeworICAgICAgICBpZiAoKnAgPiAxMjcpIHsKKyAgICAgICAgICAgIC8qIE5vbi1BU0NJSSAqLworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCpwICE9ICdcXCcpIHsKKyAgICAgICAgICAgIC8qIE5vcm1hbCBjaGFyYWN0ZXIgKi8KKyAgICAgICAgICAgICsrbGVuZ3RoOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogQmFja3NsYXNoLWVzY2FwZSwgY2hlY2sgbmV4dCBjaGFyICovCisgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAvKiBFc2NhcGUgc2VxdWVuY2UgcmVhY2hlcyB0aWxsIGVuZCBvZiBzdHJpbmcgb3IKKyAgICAgICAgICAgICAgIG5vbi1BU0NJSSBmb2xsb3ctdXAuICovCisgICAgICAgICAgICBpZiAocCA+PSBlbmQgfHwgKnAgPiAxMjcpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgc3dpdGNoICgqcCkgeworICAgICAgICAgICAgY2FzZSAnXG4nOgorICAgICAgICAgICAgICAgIC8qIGJhY2tzbGFzaCArIFxuIHJlc3VsdCBpbiB6ZXJvIGNoYXJhY3RlcnMgKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ1xcJzogY2FzZSAnXCcnOiBjYXNlICdcIic6CisgICAgICAgICAgICBjYXNlICdiJzogY2FzZSAnZic6IGNhc2UgJ3QnOgorICAgICAgICAgICAgY2FzZSAnbic6IGNhc2UgJ3InOiBjYXNlICd2JzogY2FzZSAnYSc6CisgICAgICAgICAgICAgICAgKytsZW5ndGg7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzoKKyAgICAgICAgICAgIGNhc2UgJzQnOiBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOgorICAgICAgICAgICAgY2FzZSAneCc6IGNhc2UgJ3UnOiBjYXNlICdVJzogY2FzZSAnTic6CisgICAgICAgICAgICAgICAgLyogdGhlc2UgZG8gbm90IGd1YXJhbnRlZSBBU0NJSSBjaGFyYWN0ZXJzICovCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAvKiBjb3VudCB0aGUgYmFja3NsYXNoICsgdGhlIG90aGVyIGNoYXJhY3RlciAqLworICAgICAgICAgICAgICAgIGxlbmd0aCArPSAyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBsZW5ndGg7Cit9CisKIHN0YXRpYyBfUHlVbmljb2RlX05hbWVfQ0FQSSAqdWNuaGFzaF9DQVBJID0gTlVMTDsKIAotUHlPYmplY3QgKlB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlKGNvbnN0IGNoYXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgY29uc3QgY2hhciAqc3RhcnRzID0gczsKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKLSAgICBQeV9zc2l6ZV90IG91dHBvczsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnY7Ci0gICAgUHlfVU5JQ09ERSAqcDsKKyAgICBQeU9iamVjdCAqdjsKICAgICBjb25zdCBjaGFyICplbmQ7CiAgICAgY2hhciogbWVzc2FnZTsKICAgICBQeV9VQ1M0IGNociA9IDB4ZmZmZmZmZmY7IC8qIGluIGNhc2UgJ2dldGNvZGUnIG1lc3NlcyB1cCAqLwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbGVuOworICAgIFB5X3NzaXplX3QgaTsKIAotICAgIC8qIEVzY2FwZWQgc3RyaW5ncyB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nCi0gICAgICAgVW5pY29kZSBzdHJpbmcsIHNvIHdlIHN0YXJ0IHdpdGggc2l6ZSBoZXJlIGFuZCB0aGVuIHJlZHVjZSB0aGUKLSAgICAgICBsZW5ndGggYWZ0ZXIgY29udmVyc2lvbiB0byB0aGUgdHJ1ZSB2YWx1ZS4KLSAgICAgICAoYnV0IGlmIHRoZSBlcnJvciBjYWxsYmFjayByZXR1cm5zIGEgbG9uZyByZXBsYWNlbWVudCBzdHJpbmcKLSAgICAgICB3ZSdsbCBoYXZlIHRvIGFsbG9jYXRlIG1vcmUgc3BhY2UpICovCi0gICAgdiA9IF9QeVVuaWNvZGVfTmV3KHNpemUpOwotICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICBsZW4gPSBsZW5ndGhfb2ZfZXNjYXBlZF9hc2NpaV9zdHJpbmcocywgc2l6ZSk7CisKKyAgICAvKiBBZnRlciBsZW5ndGhfb2ZfZXNjYXBlZF9hc2NpaV9zdHJpbmcoKSB0aGVyZSBhcmUgdHdvIGFsdGVybmF0aXZlcywKKyAgICAgICBlaXRoZXIgdGhlIHN0cmluZyBpcyBwdXJlIEFTQ0lJIHdpdGggbmFtZWQgZXNjYXBlcyBsaWtlIFxuLCBldGMuCisgICAgICAgYW5kIHdlIGRldGVybWluZWQgaXQncyBleGFjdCBzaXplIChjb21tb24gY2FzZSkKKyAgICAgICBvciBpdCBjb250YWlucyBceCwgXHUsIC4uLiBlc2NhcGUgc2VxdWVuY2VzLiAgdGhlbiB3ZSBjcmVhdGUgYQorICAgICAgIGxlZ2FjeSB3Y2hhciBzdHJpbmcgYW5kIHJlc2l6ZSBpdCBhdCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24uICovCisgICAgaWYgKGxlbiA+PSAwKSB7CisgICAgICAgIHYgPSBQeVVuaWNvZGVfTmV3KGxlbiwgMTI3KTsKKyAgICAgICAgaWYgKCF2KQorICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQodikgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogRXNjYXBlZCBzdHJpbmdzIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcKKyAgICAgICAgICAgVW5pY29kZSBzdHJpbmcsIHNvIHdlIHN0YXJ0IHdpdGggc2l6ZSBoZXJlIGFuZCB0aGVuIHJlZHVjZSB0aGUKKyAgICAgICAgICAgbGVuZ3RoIGFmdGVyIGNvbnZlcnNpb24gdG8gdGhlIHRydWUgdmFsdWUuCisgICAgICAgICAgIChidXQgaWYgdGhlIGVycm9yIGNhbGxiYWNrIHJldHVybnMgYSBsb25nIHJlcGxhY2VtZW50IHN0cmluZworICAgICAgICAgICB3ZSdsbCBoYXZlIHRvIGFsbG9jYXRlIG1vcmUgc3BhY2UpICovCisgICAgICAgIHYgPSBQeVVuaWNvZGVfTmV3KHNpemUsIDEyNyk7CisgICAgICAgIGlmICghdikKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgbGVuID0gc2l6ZTsKKyAgICB9CisKICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKLQotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKKyAgICAgICAgcmV0dXJuIHY7CisgICAgaSA9IDA7CiAgICAgZW5kID0gcyArIHNpemU7CiAKICAgICB3aGlsZSAocyA8IGVuZCkgewogICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Ci0gICAgICAgIFB5X1VOSUNPREUgeDsKKyAgICAgICAgUHlfVUNTNCB4OwogICAgICAgICBpbnQgZGlnaXRzOwogCisgICAgICAgIC8qIFRoZSBvbmx5IGNhc2UgaW4gd2hpY2ggaSA9PSBhc2NpaV9sZW5ndGggaXMgYSBiYWNrc2xhc2gKKyAgICAgICAgICAgZm9sbG93ZWQgYnkgYSBuZXdsaW5lLiAqLworICAgICAgICBhc3NlcnQoaSA8PSBsZW4pOworCiAgICAgICAgIC8qIE5vbi1lc2NhcGUgY2hhcmFjdGVycyBhcmUgaW50ZXJwcmV0ZWQgYXMgVW5pY29kZSBvcmRpbmFscyAqLwogICAgICAgICBpZiAoKnMgIT0gJ1xcJykgewotICAgICAgICAgICAgKnArKyA9ICh1bnNpZ25lZCBjaGFyKSAqcysrOworICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdiwgJmksICh1bnNpZ25lZCBjaGFyKSAqcysrKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtMzc5OSwyMCArNTU3MywzNCBAQAogICAgICAgICBjID0gKnMrKzsKICAgICAgICAgaWYgKHMgPiBlbmQpCiAgICAgICAgICAgICBjID0gJ1wwJzsgLyogSW52YWxpZCBhZnRlciBcICovCisKKyAgICAgICAgLyogVGhlIG9ubHkgY2FzZSBpbiB3aGljaCBpID09IGFzY2lpX2xlbmd0aCBpcyBhIGJhY2tzbGFzaAorICAgICAgICAgICBmb2xsb3dlZCBieSBhIG5ld2xpbmUuICovCisgICAgICAgIGFzc2VydChpIDwgbGVuIHx8IChpID09IGxlbiAmJiBjID09ICdcbicpKTsKKwogICAgICAgICBzd2l0Y2ggKGMpIHsKIAogICAgICAgICAgICAgLyogXHggZXNjYXBlcyAqLworI2RlZmluZSBXUklURUNIQVIoY2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmaSwgY2gpIDwgMCkgICAgXAorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9d2hpbGUoMCkKKwogICAgICAgICBjYXNlICdcbic6IGJyZWFrOwotICAgICAgICBjYXNlICdcXCc6ICpwKysgPSAnXFwnOyBicmVhazsKLSAgICAgICAgY2FzZSAnXCcnOiAqcCsrID0gJ1wnJzsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1wiJzogKnArKyA9ICdcIic7IGJyZWFrOwotICAgICAgICBjYXNlICdiJzogKnArKyA9ICdcYic7IGJyZWFrOwotICAgICAgICBjYXNlICdmJzogKnArKyA9ICdcMDE0JzsgYnJlYWs7IC8qIEZGICovCi0gICAgICAgIGNhc2UgJ3QnOiAqcCsrID0gJ1x0JzsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ24nOiAqcCsrID0gJ1xuJzsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3InOiAqcCsrID0gJ1xyJzsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3YnOiAqcCsrID0gJ1wwMTMnOyBicmVhazsgLyogVlQgKi8KLSAgICAgICAgY2FzZSAnYSc6ICpwKysgPSAnXDAwNyc7IGJyZWFrOyAvKiBCRUwsIG5vdCBjbGFzc2ljIEMgKi8KKyAgICAgICAgY2FzZSAnXFwnOiBXUklURUNIQVIoJ1xcJyk7IGJyZWFrOworICAgICAgICBjYXNlICdcJyc6IFdSSVRFQ0hBUignXCcnKTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ1wiJzogV1JJVEVDSEFSKCdcIicpOyBicmVhazsKKyAgICAgICAgY2FzZSAnYic6IFdSSVRFQ0hBUignXGInKTsgYnJlYWs7CisgICAgICAgIC8qIEZGICovCisgICAgICAgIGNhc2UgJ2YnOiBXUklURUNIQVIoJ1wwMTQnKTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ3QnOiBXUklURUNIQVIoJ1x0Jyk7IGJyZWFrOworICAgICAgICBjYXNlICduJzogV1JJVEVDSEFSKCdcbicpOyBicmVhazsKKyAgICAgICAgY2FzZSAncic6IFdSSVRFQ0hBUignXHInKTsgYnJlYWs7CisgICAgICAgIC8qIFZUICovCisgICAgICAgIGNhc2UgJ3YnOiBXUklURUNIQVIoJ1wwMTMnKTsgYnJlYWs7CisgICAgICAgIC8qIEJFTCwgbm90IGNsYXNzaWMgQyAqLworICAgICAgICBjYXNlICdhJzogV1JJVEVDSEFSKCdcMDA3Jyk7IGJyZWFrOwogCiAgICAgICAgICAgICAvKiBcT09PIChvY3RhbCkgZXNjYXBlcyAqLwogICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzoKQEAgLTM4MjMsNyArNTYxMSw3IEBACiAgICAgICAgICAgICAgICAgaWYgKHMgPCBlbmQgJiYgJzAnIDw9ICpzICYmICpzIDw9ICc3JykKICAgICAgICAgICAgICAgICAgICAgeCA9ICh4PDwzKSArICpzKysgLSAnMCc7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcCsrID0geDsKKyAgICAgICAgICAgIFdSSVRFQ0hBUih4KTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAvKiBoZXggZXNjYXBlcyAqLwpAQCAtMzg3MiwyMyArNTY2MCwxMCBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBzdG9yZToKICAgICAgICAgICAgIC8qIHdoZW4gd2UgZ2V0IGhlcmUsIGNociBpcyBhIDMyLWJpdCB1bmljb2RlIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgaWYgKGNociA8PSAweGZmZmYpCi0gICAgICAgICAgICAgICAgLyogVUNTLTIgY2hhcmFjdGVyICovCi0gICAgICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKSBjaHI7Ci0gICAgICAgICAgICBlbHNlIGlmIChjaHIgPD0gMHgxMGZmZmYpIHsKLSAgICAgICAgICAgICAgICAvKiBVQ1MtNCBjaGFyYWN0ZXIuIEVpdGhlciBzdG9yZSBkaXJlY3RseSwgb3IgYXMKLSAgICAgICAgICAgICAgICAgICBzdXJyb2dhdGUgcGFpci4gKi8KLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICAgICAqcCsrID0gY2hyOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBjaHIgLT0gMHgxMDAwMEw7Ci0gICAgICAgICAgICAgICAgKnArKyA9IDB4RDgwMCArIChQeV9VTklDT0RFKSAoY2hyID4+IDEwKTsKLSAgICAgICAgICAgICAgICAqcCsrID0gMHhEQzAwICsgKFB5X1VOSUNPREUpIChjaHIgJiAweDAzRkYpOwotI2VuZGlmCi0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiaWxsZWdhbCBVbmljb2RlIGNoYXJhY3RlciI7CisgICAgICAgICAgICBtZXNzYWdlID0gImlsbGVnYWwgVW5pY29kZSBjaGFyYWN0ZXIiOworICAgICAgICAgICAgaWYgKGNociA+IE1BWF9VTklDT0RFKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBXUklURUNIQVIoY2hyKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAvKiBcTntuYW1lfSAqLwpAQCAtMzg5Niw3ICs1NjcxLDggQEAKICAgICAgICAgICAgIG1lc3NhZ2UgPSAibWFsZm9ybWVkIFxcTiBjaGFyYWN0ZXIgZXNjYXBlIjsKICAgICAgICAgICAgIGlmICh1Y25oYXNoX0NBUEkgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIC8qIGxvYWQgdGhlIHVuaWNvZGUgZGF0YSBtb2R1bGUgKi8KLSAgICAgICAgICAgICAgICB1Y25oYXNoX0NBUEkgPSAoX1B5VW5pY29kZV9OYW1lX0NBUEkgKilQeUNhcHN1bGVfSW1wb3J0KFB5VW5pY29kZURhdGFfQ0FQU1VMRV9OQU1FLCAxKTsKKyAgICAgICAgICAgICAgICB1Y25oYXNoX0NBUEkgPSAoX1B5VW5pY29kZV9OYW1lX0NBUEkgKilQeUNhcHN1bGVfSW1wb3J0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlRGF0YV9DQVBTVUxFX05BTUUsIDEpOwogICAgICAgICAgICAgICAgIGlmICh1Y25oYXNoX0NBUEkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byB1Y25oYXNoRXJyb3I7CiAgICAgICAgICAgICB9CkBAIC0zOTEwLDcgKzU2ODYsOCBAQAogICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gInVua25vd24gVW5pY29kZSBjaGFyYWN0ZXIgbmFtZSI7CiAgICAgICAgICAgICAgICAgICAgIHMrKzsKICAgICAgICAgICAgICAgICAgICAgaWYgKHMgLSBzdGFydCAtIDEgPD0gSU5UX01BWCAmJgotICAgICAgICAgICAgICAgICAgICAgICAgdWNuaGFzaF9DQVBJLT5nZXRjb2RlKE5VTEwsIHN0YXJ0LCAoaW50KShzLXN0YXJ0LTEpLCAmY2hyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHVjbmhhc2hfQ0FQSS0+Z2V0Y29kZShOVUxMLCBzdGFydCwgKGludCkocy1zdGFydC0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2hyLCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RvcmU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMzkyMyw4ICs1NzAwLDggQEAKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAgICAgKnArKyA9ICh1bnNpZ25lZCBjaGFyKXNbLTFdOworICAgICAgICAgICAgICAgIFdSSVRFQ0hBUignXFwnKTsKKyAgICAgICAgICAgICAgICBXUklURUNIQVIoKHVuc2lnbmVkIGNoYXIpc1stMV0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM5MzIsMjAgKzU3MDksMjIgQEAKIAogICAgICAgZXJyb3I6CiAgICAgICAgIGVuZGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgInVuaWNvZGVlc2NhcGUiLCBtZXNzYWdlLAogICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgJnYsICZpKSkKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodik7CiAgICAgICAgIGNvbnRpbnVlOwogICAgIH0KLSAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnYsIHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkgPCAwKQorI3VuZGVmIFdSSVRFQ0hBUgorCisgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ2LCBpKSA8IDApCiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiAoUHlPYmplY3QgKil2OworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh2KTsKIAogICB1Y25oYXNoRXJyb3I6CiAgICAgUHlFcnJfU2V0U3RyaW5nKApAQCAtMzk3MSw3MCArNTc1MCw1NiBAQAogCiAqLwogCi1QeV9MT0NBTF9JTkxJTkUoY29uc3QgUHlfVU5JQ09ERSAqKSBmaW5kY2hhcihjb25zdCBQeV9VTklDT0RFICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjaCkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCiB7Ci0gICAgLyogbGlrZSB3Y3NjaHIsIGJ1dCBkb2Vzbid0IHN0b3AgYXQgTlVMTCBjaGFyYWN0ZXJzICovCi0KLSAgICB3aGlsZSAoc2l6ZS0tID4gMCkgewotICAgICAgICBpZiAoKnMgPT0gY2gpCi0gICAgICAgICAgICByZXR1cm4gczsKLSAgICAgICAgcysrOwotICAgIH0KLQotICAgIHJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgY29uc3QgY2hhciAqaGV4ZGlnaXRzID0gIjAxMjM0NTY3ODlhYmNkZWYiOwotCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGUoY29uc3QgUHlfVU5JQ09ERSAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUpCi17CisgICAgUHlfc3NpemVfdCBpLCBsZW47CiAgICAgUHlPYmplY3QgKnJlcHI7CiAgICAgY2hhciAqcDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3QgZXhwYW5kc2l6ZSA9IDA7CiAKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBjb25zdCBQeV9zc2l6ZV90IGV4cGFuZHNpemUgPSAxMDsKLSNlbHNlCi0gICAgY29uc3QgUHlfc3NpemVfdCBleHBhbmRzaXplID0gNjsKLSNlbmRpZgotCi0gICAgLyogWFhYKG5ub3J3aXR6KTogcmF0aGVyIHRoYW4gb3Zlci1hbGxvY2F0aW5nLCBpdCB3b3VsZCBiZQotICAgICAgIGJldHRlciB0byBjaG9vc2UgYSBkaWZmZXJlbnQgc2NoZW1lLiAgUGVyaGFwcyBzY2FuIHRoZQotICAgICAgIGZpcnN0IE4tY2hhcnMgb2YgdGhlIHN0cmluZyBhbmQgYWxsb2NhdGUgYmFzZWQgb24gdGhhdCBzaXplLgotICAgICovCi0gICAgLyogSW5pdGlhbCBhbGxvY2F0aW9uIGlzIGJhc2VkIG9uIHRoZSBsb25nZXN0LXBvc3NpYmxlIHVuaWNocgorICAgIC8qIEluaXRpYWwgYWxsb2NhdGlvbiBpcyBiYXNlZCBvbiB0aGUgbG9uZ2VzdC1wb3NzaWJsZSBjaGFyYWN0ZXIKICAgICAgICBlc2NhcGUuCiAKLSAgICAgICBJbiB3aWRlIChVVEYtMzIpIGJ1aWxkcyAnXFUwMHh4eHh4eCcgaXMgMTAgY2hhcnMgcGVyIHNvdXJjZQotICAgICAgIHVuaWNociwgc28gaW4gdGhpcyBjYXNlIGl0J3MgdGhlIGxvbmdlc3QgdW5pY2hyIGVzY2FwZS4gSW4KLSAgICAgICBuYXJyb3cgKFVURi0xNikgYnVpbGRzIHRoaXMgaXMgZml2ZSBjaGFycyBwZXIgc291cmNlIHVuaWNocgotICAgICAgIHNpbmNlIHRoZXJlIGFyZSB0d28gdW5pY2hycyBpbiB0aGUgc3Vycm9nYXRlIHBhaXIsIHNvIGluIG5hcnJvdwotICAgICAgIChVVEYtMTYpIGJ1aWxkcyBpdCdzIG5vdCB0aGUgbG9uZ2VzdCB1bmljaHIgZXNjYXBlLgotCi0gICAgICAgSW4gd2lkZSBvciBuYXJyb3cgYnVpbGRzICdcdXh4eHgnIGlzIDYgY2hhcnMgcGVyIHNvdXJjZSB1bmljaHIsCi0gICAgICAgc28gaW4gdGhlIG5hcnJvdyAoVVRGLTE2KSBidWlsZCBjYXNlIGl0J3MgdGhlIGxvbmdlc3QgdW5pY2hyCi0gICAgICAgZXNjYXBlLgorICAgICAgIEZvciBVQ1MxIHN0cmluZ3MgaXQncyAnXHh4eCcsIDQgYnl0ZXMgcGVyIHNvdXJjZSBjaGFyYWN0ZXIuCisgICAgICAgRm9yIFVDUzIgc3RyaW5ncyBpdCdzICdcdXh4eHgnLCA2IGJ5dGVzIHBlciBzb3VyY2UgY2hhcmFjdGVyLgorICAgICAgIEZvciBVQ1M0IHN0cmluZ3MgaXQncyAnXFUwMHh4eHh4eCcsIDEwIGJ5dGVzIHBlciBzb3VyY2UgY2hhcmFjdGVyLgogICAgICovCiAKLSAgICBpZiAoc2l6ZSA9PSAwKQorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6IGV4cGFuZHNpemUgPSA0OyBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOiBleHBhbmRzaXplID0gNjsgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDogZXhwYW5kc2l6ZSA9IDEwOyBicmVhazsKKyAgICB9CisKKyAgICBpZiAobGVuID09IDApCiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwogCi0gICAgaWYgKHNpemUgPiAoUFlfU1NJWkVfVF9NQVggLSAyIC0gMSkgLyBleHBhbmRzaXplKQorICAgIGlmIChsZW4gPiAoUFlfU1NJWkVfVF9NQVggLSAyIC0gMSkgLyBleHBhbmRzaXplKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKIAogICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZXhwYW5kc2l6ZSpzaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBleHBhbmRzaXplKmxlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgMSk7CiAgICAgaWYgKHJlcHIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7CiAKLSAgICB3aGlsZSAoc2l6ZS0tID4gMCkgewotICAgICAgICBQeV9VTklDT0RFIGNoID0gKnMrKzsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogCiAgICAgICAgIC8qIEVzY2FwZSBiYWNrc2xhc2hlcyAqLwogICAgICAgICBpZiAoY2ggPT0gJ1xcJykgewpAQCAtNDA0Myw1NyArNTgwOCwzMCBAQAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotI2lmZGVmIFB5X1VOSUNPREVfV0lERQogICAgICAgICAvKiBNYXAgMjEtYml0IGNoYXJhY3RlcnMgdG8gJ1xVMDB4eHh4eHgnICovCiAgICAgICAgIGVsc2UgaWYgKGNoID49IDB4MTAwMDApIHsKKyAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAnVSc7Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMjApICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gOCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDAwMDAwRl07CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgLyogTWFwIFVURi0xNiBzdXJyb2dhdGUgcGFpcnMgdG8gJ1xVMDB4eHh4eHgnICovCi0gICAgICAgIGVsc2UgaWYgKGNoID49IDB4RDgwMCAmJiBjaCA8IDB4REMwMCkgewotICAgICAgICAgICAgUHlfVU5JQ09ERSBjaDI7Ci0gICAgICAgICAgICBQeV9VQ1M0IHVjczsKLQotICAgICAgICAgICAgY2gyID0gKnMrKzsKLSAgICAgICAgICAgIHNpemUtLTsKLSAgICAgICAgICAgIGlmIChjaDIgPj0gMHhEQzAwICYmIGNoMiA8PSAweERGRkYpIHsKLSAgICAgICAgICAgICAgICB1Y3MgPSAoKChjaCAmIDB4MDNGRikgPDwgMTApIHwgKGNoMiAmIDB4MDNGRikpICsgMHgwMDAxMDAwMDsKLSAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAqcCsrID0gJ1UnOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyOCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDIwKSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAxNikgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMTIpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDgpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1t1Y3MgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaDogaXNvbGF0ZWQgc3Vycm9nYXRlcyBhcmUgY29waWVkIGFzLWlzICovCi0gICAgICAgICAgICBzLS07Ci0gICAgICAgICAgICBzaXplKys7Ci0gICAgICAgIH0KLSNlbmRpZgogCiAgICAgICAgIC8qIE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHV4eHh4JyAqLwogICAgICAgICBpZiAoY2ggPj0gMjU2KSB7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAndSc7Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gOCkgJiAweDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDB4MDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwRl07CiAgICAgICAgIH0KIAogICAgICAgICAvKiBNYXAgc3BlY2lhbCB3aGl0ZXNwYWNlIHRvICdcdCcsIFxuJywgJ1xyJyAqLwpAQCAtNDExNCw4ICs1ODUyLDggQEAKICAgICAgICAgZWxzZSBpZiAoY2ggPCAnICcgfHwgY2ggPj0gMHg3RikgewogICAgICAgICAgICAgKnArKyA9ICdcXCc7CiAgICAgICAgICAgICAqcCsrID0gJ3gnOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDB4MDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIENvcHkgZXZlcnl0aGluZyBlbHNlIGFzLWlzICovCkBAIC00MTI5LDMwICs1ODY3LDMxIEBACiAgICAgcmV0dXJuIHJlcHI7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGUoY29uc3QgUHlfVU5JQ09ERSAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQeU9iamVjdCAqczsKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewotICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnRtcCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBzaXplKTsKKyAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBzID0gUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGUoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSk7Ci0gICAgcmV0dXJuIHM7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyh0bXApOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8qIC0tLSBSYXcgVW5pY29kZSBFc2NhcGUgQ29kZWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBjb25zdCBjaGFyICpzdGFydHMgPSBzOwogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIFB5X3NzaXplX3Qgb3V0cG9zOwotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKLSAgICBQeV9VTklDT0RFICpwOworICAgIFB5T2JqZWN0ICp2OwogICAgIGNvbnN0IGNoYXIgKmVuZDsKICAgICBjb25zdCBjaGFyICpiczsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKQEAgLTQxNjIsMTIgKzU5MDEsMTIgQEAKICAgICAgICBVbmljb2RlIHN0cmluZywgc28gd2Ugc3RhcnQgd2l0aCBzaXplIGhlcmUgYW5kIHRoZW4gcmVkdWNlIHRoZQogICAgICAgIGxlbmd0aCBhZnRlciBjb252ZXJzaW9uIHRvIHRoZSB0cnVlIHZhbHVlLiAoQnV0IGRlY29kaW5nIGVycm9yCiAgICAgICAgaGFuZGxlciBtaWdodCBoYXZlIHRvIHJlc2l6ZSB0aGUgc3RyaW5nKSAqLwotICAgIHYgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKKyAgICB2ID0gUHlVbmljb2RlX05ldyhzaXplLCAxMjcpOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7CisgICAgICAgIHJldHVybiB2OworICAgIG91dHBvcyA9IDA7CiAgICAgZW5kID0gcyArIHNpemU7CiAgICAgd2hpbGUgKHMgPCBlbmQpIHsKICAgICAgICAgdW5zaWduZWQgY2hhciBjOwpAQCAtNDE3Nyw3ICs1OTE2LDggQEAKIAogICAgICAgICAvKiBOb24tZXNjYXBlIGNoYXJhY3RlcnMgYXJlIGludGVycHJldGVkIGFzIFVuaWNvZGUgb3JkaW5hbHMgKi8KICAgICAgICAgaWYgKCpzICE9ICdcXCcpIHsKLSAgICAgICAgICAgICpwKysgPSAodW5zaWduZWQgY2hhcikqcysrOworICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdiwgJm91dHBvcywgKHVuc2lnbmVkIGNoYXIpKnMrKykgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKQEAgLTQxODgsMTkgKzU5MjgsMTkgQEAKICAgICAgICAgZm9yICg7cyA8IGVuZDspIHsKICAgICAgICAgICAgIGlmICgqcyAhPSAnXFwnKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgKnArKyA9ICh1bnNpZ25lZCBjaGFyKSpzKys7CisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLCAodW5zaWduZWQgY2hhcikqcysrKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICB9CiAgICAgICAgIGlmICgoKHMgLSBicykgJiAxKSA9PSAwIHx8CiAgICAgICAgICAgICBzID49IGVuZCB8fAogICAgICAgICAgICAgKCpzICE9ICd1JyAmJiAqcyAhPSAnVScpKSB7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBwLS07CisgICAgICAgIG91dHBvcy0tOwogICAgICAgICBjb3VudCA9ICpzPT0ndScgPyA0IDogODsKICAgICAgICAgcysrOwogCiAgICAgICAgIC8qIFx1WFhYWCB3aXRoIDQgaGV4IGRpZ2l0cywgXFV4eHh4eHh4eCB3aXRoIDggKi8KLSAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgZm9yICh4ID0gMCwgaSA9IDA7IGkgPCBjb3VudDsgKytpLCArK3MpIHsKICAgICAgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikqczsKICAgICAgICAgICAgIGlmICghUHlfSVNYRElHSVQoYykpIHsKQEAgLTQyMDksNyArNTk0OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAicmF3dW5pY29kZWVzY2FwZSIsICJ0cnVuY2F0ZWQgXFx1WFhYWCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcykpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICBnb3RvIG5leHRCeXRlOwogICAgICAgICAgICAgfQpAQCAtNDIyMSwzNyArNTk2MSwyNiBAQAogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHggKz0gMTAgKyBjIC0gJ0EnOwogICAgICAgICB9Ci0gICAgICAgIGlmICh4IDw9IDB4ZmZmZikKLSAgICAgICAgICAgIC8qIFVDUy0yIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKSB4OwotICAgICAgICBlbHNlIGlmICh4IDw9IDB4MTBmZmZmKSB7Ci0gICAgICAgICAgICAvKiBVQ1MtNCBjaGFyYWN0ZXIuIEVpdGhlciBzdG9yZSBkaXJlY3RseSwgb3IgYXMKLSAgICAgICAgICAgICAgIHN1cnJvZ2F0ZSBwYWlyLiAqLwotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKSB4OwotI2Vsc2UKLSAgICAgICAgICAgIHggLT0gMHgxMDAwMEw7Ci0gICAgICAgICAgICAqcCsrID0gMHhEODAwICsgKFB5X1VOSUNPREUpICh4ID4+IDEwKTsKLSAgICAgICAgICAgICpwKysgPSAweERDMDAgKyAoUHlfVU5JQ09ERSkgKHggJiAweDAzRkYpOwotI2VuZGlmCisgICAgICAgIGlmICh4IDw9IE1BWF9VTklDT0RFKSB7CisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLCB4KSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZW5kaW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgInJhd3VuaWNvZGVlc2NhcGUiLCAiXFxVeHh4eHh4eHggb3V0IG9mIHJhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zKSkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgIH0KICAgICAgIG5leHRCeXRlOgogICAgICAgICA7CiAgICAgfQotICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmdiwgcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpKSA8IDApCisgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ2LCBvdXRwb3MpIDwgMCkKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHYpOwogCiAgIG9uRXJyb3I6CiAgICAgUHlfWERFQ1JFRih2KTsKQEAgLTQyNjAsMTc0ICs1OTg5LDE4MSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgUHlfVU5JQ09ERSAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUpCisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCiB7CiAgICAgUHlPYmplY3QgKnJlcHI7CiAgICAgY2hhciAqcDsKICAgICBjaGFyICpxOworICAgIFB5X3NzaXplX3QgZXhwYW5kc2l6ZSwgcG9zOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBsZW47CiAKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBjb25zdCBQeV9zc2l6ZV90IGV4cGFuZHNpemUgPSAxMDsKLSNlbHNlCi0gICAgY29uc3QgUHlfc3NpemVfdCBleHBhbmRzaXplID0gNjsKLSNlbmRpZgorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIC8qIDQgYnl0ZSBjaGFyYWN0ZXJzIGNhbiB0YWtlIHVwIDEwIGJ5dGVzLCAyIGJ5dGUgY2hhcmFjdGVycyBjYW4gdGFrZSB1cCA2CisgICAgICAgYnl0ZXMsIGFuZCAxIGJ5dGUgY2hhcmFjdGVycyA0LiAqLworICAgIGV4cGFuZHNpemUgPSBraW5kICogMiArIDI7CiAKLSAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gZXhwYW5kc2l6ZSkKKyAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyBleHBhbmRzaXplKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKIAotICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGV4cGFuZHNpemUgKiBzaXplKTsKKyAgICByZXByID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBleHBhbmRzaXplICogbGVuKTsKICAgICBpZiAocmVwciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2l6ZSA9PSAwKQorICAgIGlmIChsZW4gPT0gMCkKICAgICAgICAgcmV0dXJuIHJlcHI7CiAKICAgICBwID0gcSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpOwotICAgIHdoaWxlIChzaXplLS0gPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSAqcysrOwotI2lmZGVmIFB5X1VOSUNPREVfV0lERQorICAgIGZvciAocG9zID0gMDsgcG9zIDwgbGVuOyBwb3MrKykgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKTsKICAgICAgICAgLyogTWFwIDMyLWJpdCBjaGFyYWN0ZXJzIHRvICdcVXh4eHh4eHh4JyAqLwogICAgICAgICBpZiAoY2ggPj0gMHgxMDAwMCkgeworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMjApICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDE1XTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDE1XTsKICAgICAgICAgfQotICAgICAgICBlbHNlCi0jZWxzZQotICAgICAgICAgICAgLyogTWFwIFVURi0xNiBzdXJyb2dhdGUgcGFpcnMgdG8gJ1xVMDB4eHh4eHgnICovCi0gICAgICAgICAgICBpZiAoY2ggPj0gMHhEODAwICYmIGNoIDwgMHhEQzAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjaDI7Ci0gICAgICAgICAgICAgICAgUHlfVUNTNCB1Y3M7Ci0KLSAgICAgICAgICAgICAgICBjaDIgPSAqcysrOwotICAgICAgICAgICAgICAgIHNpemUtLTsKLSAgICAgICAgICAgICAgICBpZiAoY2gyID49IDB4REMwMCAmJiBjaDIgPD0gMHhERkZGKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVjcyA9ICgoKGNoICYgMHgwM0ZGKSA8PCAxMCkgfCAoY2gyICYgMHgwM0ZGKSkgKyAweDAwMDEwMDAwOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDI4KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyNCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjApICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDE2KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gOCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gNCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW3VjcyAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBGYWxsIHRocm91Z2g6IGlzb2xhdGVkIHN1cnJvZ2F0ZXMgYXJlIGNvcGllZCBhcy1pcyAqLwotICAgICAgICAgICAgICAgIHMtLTsKLSAgICAgICAgICAgICAgICBzaXplKys7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdXh4eHgnICovCi0gICAgICAgIGlmIChjaCA+PSAyNTYpIHsKKyAgICAgICAgZWxzZSBpZiAoY2ggPj0gMjU2KSB7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAndSc7Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDE1XTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMTVdOwogICAgICAgICB9CiAgICAgICAgIC8qIENvcHkgZXZlcnl0aGluZyBlbHNlIGFzLWlzICovCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CiAgICAgfQotICAgIHNpemUgPSBwIC0gcTsKIAotICAgIGFzc2VydChzaXplID4gMCk7Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgc2l6ZSkgPCAwKQorICAgIGFzc2VydChwID4gcSk7CisgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgcCAtIHEpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIHJlcHI7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgUHlfVU5JQ09ERSAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQeU9iamVjdCAqczsKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewotICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnRtcCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBzaXplKTsKKyAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBzID0gUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSk7Ci0KLSAgICByZXR1cm4gczsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nKHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyogLS0tIFVuaWNvZGUgSW50ZXJuYWwgQ29kZWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1QeU9iamVjdCAqX1B5VW5pY29kZV9EZWNvZGVVbmljb2RlSW50ZXJuYWwoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorX1B5VW5pY29kZV9EZWNvZGVVbmljb2RlSW50ZXJuYWwoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBjb25zdCBjaGFyICpzdGFydHMgPSBzOwogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIFB5X3NzaXplX3Qgb3V0cG9zOwotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKLSAgICBQeV9VTklDT0RFICpwOworICAgIFB5T2JqZWN0ICp2OwogICAgIGNvbnN0IGNoYXIgKmVuZDsKICAgICBjb25zdCBjaGFyICpyZWFzb247CiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBQeV9VTklDT0RFIHVuaW1heCA9IFB5VW5pY29kZV9HZXRNYXgoKTsKLSNlbmRpZgorICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVfaW50ZXJuYWwgY29kZWMgaGFzIGJlZW4gZGVwcmVjYXRlZCIsCisgICAgICAgICAgICAgICAgICAgICAxKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBYWFggb3ZlcmZsb3cgZGV0ZWN0aW9uIG1pc3NpbmcgKi8KLSAgICB2ID0gX1B5VW5pY29kZV9OZXcoKHNpemUrUHlfVU5JQ09ERV9TSVpFLTEpLyBQeV9VTklDT0RFX1NJWkUpOworICAgIHYgPSBQeVVuaWNvZGVfTmV3KChzaXplK1B5X1VOSUNPREVfU0laRS0xKS8gUHlfVU5JQ09ERV9TSVpFLCAxMjcpOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICBpZiAoUHlVbmljb2RlX0dldFNpemUoKFB5T2JqZWN0ICopdikgPT0gMCkKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXY7Ci0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KSA9PSAwKQorICAgICAgICByZXR1cm4gdjsKKyAgICBvdXRwb3MgPSAwOwogICAgIGVuZCA9IHMgKyBzaXplOwogCiAgICAgd2hpbGUgKHMgPCBlbmQpIHsKLSAgICAgICAgaWYgKGVuZC1zIDwgUHlfVU5JQ09ERV9TSVpFKSB7CisgICAgICAgIFB5X1VOSUNPREUgdWNoOworICAgICAgICBQeV9VQ1M0IGNoOworICAgICAgICBpZiAoZW5kIC0gcyA8IFB5X1VOSUNPREVfU0laRSkgewogICAgICAgICAgICAgZW5kaW5wb3MgPSBlbmQtc3RhcnRzOwogICAgICAgICAgICAgcmVhc29uID0gInRydW5jYXRlZCBpbnB1dCI7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9Ci0gICAgICAgIG1lbWNweShwLCBzLCBzaXplb2YoUHlfVU5JQ09ERSkpOworICAgICAgICAvKiBXZSBjb3B5IHRoZSByYXcgcmVwcmVzZW50YXRpb24gb25lIGJ5dGUgYXQgYSB0aW1lIGJlY2F1c2UgdGhlCisgICAgICAgICAgIHBvaW50ZXIgbWF5IGJlIHVuYWxpZ25lZCAoc2VlIHRlc3RfY29kZWNjYWxsYmFja3MpLiAqLworICAgICAgICAoKGNoYXIgKikgJnVjaClbMF0gPSBzWzBdOworICAgICAgICAoKGNoYXIgKikgJnVjaClbMV0gPSBzWzFdOworI2lmZGVmIFB5X1VOSUNPREVfV0lERQorICAgICAgICAoKGNoYXIgKikgJnVjaClbMl0gPSBzWzJdOworICAgICAgICAoKGNoYXIgKikgJnVjaClbM10gPSBzWzNdOworI2VuZGlmCisgICAgICAgIGNoID0gdWNoOwogI2lmZGVmIFB5X1VOSUNPREVfV0lERQogICAgICAgICAvKiBXZSBoYXZlIHRvIHNhbml0eSBjaGVjayB0aGUgcmF3IGRhdGEsIG90aGVyd2lzZSBkb29tIGxvb21zIGZvcgogICAgICAgICAgICBzb21lIG1hbGZvcm1lZCBVQ1MtNCBkYXRhLiAqLwotICAgICAgICBpZiAoKnAgPiB1bmltYXggfHwgKnAgPCAwKSB7CisgICAgICAgIGlmIChjaCA+IDB4MTBmZmZmKSB7CiAgICAgICAgICAgICBlbmRpbnBvcyA9IHMgLSBzdGFydHMgKyBQeV9VTklDT0RFX1NJWkU7CiAgICAgICAgICAgICByZWFzb24gPSAiaWxsZWdhbCBjb2RlIHBvaW50ICg+IDB4MTBGRkZGKSI7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgcCsrOwogICAgICAgICBzICs9IFB5X1VOSUNPREVfU0laRTsKKyNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCisgICAgICAgIGlmIChQeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFKGNoKSAmJiBlbmQgLSBzID49IFB5X1VOSUNPREVfU0laRSkKKyAgICAgICAgeworICAgICAgICAgICAgUHlfVU5JQ09ERSB1Y2gyOworICAgICAgICAgICAgKChjaGFyICopICZ1Y2gyKVswXSA9IHNbMF07CisgICAgICAgICAgICAoKGNoYXIgKikgJnVjaDIpWzFdID0gc1sxXTsKKyAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUodWNoMikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2ggPSBQeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUyh1Y2gsIHVjaDIpOworICAgICAgICAgICAgICAgIHMgKz0gUHlfVU5JQ09ERV9TSVpFOworICAgICAgICAgICAgfQorICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLCBjaCkgPCAwKQorICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICBjb250aW51ZTsKIAogICBlcnJvcjoKICAgICAgICAgc3RhcnRpbnBvcyA9IHMgLSBzdGFydHM7Ci0gICAgICAgIG91dHBvcyA9IHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAidW5pY29kZV9pbnRlcm5hbCIsIHJlYXNvbiwKICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAmdiwgJm91dHBvcywgJnApKSB7CisgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MpKQogICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ2LCBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpIDwgMCkKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnYsIG91dHBvcykgPCAwKQogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodik7CiAKICAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKHYpOwpAQCAtNDQzOCw1NyArNjE3NCwyNyBAQAogCiAvKiAtLS0gTGF0aW4tMSBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotUHlPYmplY3QgKlB5VW5pY29kZV9EZWNvZGVMYXRpbjEoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVMYXRpbjEoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwotICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgY29uc3QgY2hhciAqZSwgKnVucm9sbGVkX2VuZDsKLQogICAgIC8qIExhdGluLTEgaXMgZXF1aXZhbGVudCB0byB0aGUgZmlyc3QgMjU2IG9yZGluYWxzIGluIFVuaWNvZGUuICovCi0gICAgaWYgKHNpemUgPT0gMSkgewotICAgICAgICBQeV9VTklDT0RFIHIgPSAqKHVuc2lnbmVkIGNoYXIqKXM7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoJnIsIDEpOwotICAgIH0KLQotICAgIHYgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKLSAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXY7Ci0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpOwotICAgIGUgPSBzICsgc2l6ZTsKLSAgICAvKiBVbnJvbGxpbmcgdGhlIGNvcHkgbWFrZXMgaXQgbXVjaCBmYXN0ZXIgYnkgcmVkdWNpbmcgdGhlIGxvb3BpbmcKLSAgICAgICBvdmVyaGVhZC4gVGhpcyBpcyBzaW1pbGFyIHRvIHdoYXQgbWFueSBtZW1jcHkoKSBpbXBsZW1lbnRhdGlvbnMgZG8uICovCi0gICAgdW5yb2xsZWRfZW5kID0gZSAtIDQ7Ci0gICAgd2hpbGUgKHMgPCB1bnJvbGxlZF9lbmQpIHsKLSAgICAgICAgcFswXSA9ICh1bnNpZ25lZCBjaGFyKSBzWzBdOwotICAgICAgICBwWzFdID0gKHVuc2lnbmVkIGNoYXIpIHNbMV07Ci0gICAgICAgIHBbMl0gPSAodW5zaWduZWQgY2hhcikgc1syXTsKLSAgICAgICAgcFszXSA9ICh1bnNpZ25lZCBjaGFyKSBzWzNdOwotICAgICAgICBzICs9IDQ7Ci0gICAgICAgIHAgKz0gNDsKLSAgICB9Ci0gICAgd2hpbGUgKHMgPCBlKQotICAgICAgICAqcCsrID0gKHVuc2lnbmVkIGNoYXIpICpzKys7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXY7Ci0KLSAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHYpOwotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBfUHlVbmljb2RlX0Zyb21VQ1MxKCh1bnNpZ25lZCBjaGFyKilzLCBzaXplKTsKIH0KIAogLyogY3JlYXRlIG9yIGFkanVzdCBhIFVuaWNvZGVFbmNvZGVFcnJvciAqLwotc3RhdGljIHZvaWQgbWFrZV9lbmNvZGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pCitzdGF0aWMgdm9pZAorbWFrZV9lbmNvZGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikKIHsKICAgICBpZiAoKmV4Y2VwdGlvbk9iamVjdCA9PSBOVUxMKSB7Ci0gICAgICAgICpleGNlcHRpb25PYmplY3QgPSBQeVVuaWNvZGVFbmNvZGVFcnJvcl9DcmVhdGUoCi0gICAgICAgICAgICBlbmNvZGluZywgdW5pY29kZSwgc2l6ZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgKmV4Y2VwdGlvbk9iamVjdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigKKyAgICAgICAgICAgIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciwgInNPbm5zIiwKKyAgICAgICAgICAgIGVuY29kaW5nLCB1bmljb2RlLCBzdGFydHBvcywgZW5kcG9zLCByZWFzb24pOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0KCpleGNlcHRpb25PYmplY3QsIHN0YXJ0cG9zKSkKQEAgLTQ1MDUsMTQgKzYyMTEsMTUgQEAKIH0KIAogLyogcmFpc2VzIGEgVW5pY29kZUVuY29kZUVycm9yICovCi1zdGF0aWMgdm9pZCByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqdW5pY29kZSwgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKQorc3RhdGljIHZvaWQKK3JhaXNlX2VuY29kZV9leGNlcHRpb24oUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikKIHsKICAgICBtYWtlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgdW5pY29kZSwgc2l6ZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHVuaWNvZGUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CiAgICAgaWYgKCpleGNlcHRpb25PYmplY3QgIT0gTlVMTCkKICAgICAgICAgUHlDb2RlY19TdHJpY3RFcnJvcnMoKmV4Y2VwdGlvbk9iamVjdCk7CiB9CkBAIC00NTIxLDE1ICs2MjI4LDE2IEBACiAgICBidWlsZCBhcmd1bWVudHMsIGNhbGwgdGhlIGNhbGxiYWNrIGFuZCBjaGVjayB0aGUgYXJndW1lbnRzLAogICAgcHV0IHRoZSByZXN1bHQgaW50byBuZXdwb3MgYW5kIHJldHVybiB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nLCB3aGljaAogICAgaGFzIHRvIGJlIGZyZWVkIGJ5IHRoZSBjYWxsZXIgKi8KLXN0YXRpYyBQeU9iamVjdCAqdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKnJlYXNvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqdW5pY29kZSwgUHlfc3NpemVfdCBzaXplLCBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5ld3BvcykKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICpyZWFzb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5ld3BvcykKIHsKICAgICBzdGF0aWMgY2hhciAqYXJncGFyc2UgPSAiT247ZW5jb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyL2J5dGVzLCBpbnQpIHR1cGxlIjsKLQorICAgIFB5X3NzaXplX3QgbGVuOwogICAgIFB5T2JqZWN0ICpyZXN0dXBsZTsKICAgICBQeU9iamVjdCAqcmVzdW5pY29kZTsKIApAQCAtNDUzOSw4ICs2MjQ3LDEyIEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKwogICAgIG1ha2VfZW5jb2RlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCB1bmljb2RlLCBzaXplLCBzdGFydHBvcywgZW5kcG9zLCByZWFzb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKICAgICBpZiAoKmV4Y2VwdGlvbk9iamVjdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtNDU2NCw4ICs2Mjc2LDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmICgqbmV3cG9zPDApCi0gICAgICAgICpuZXdwb3MgPSBzaXplKypuZXdwb3M7Ci0gICAgaWYgKCpuZXdwb3M8MCB8fCAqbmV3cG9zPnNpemUpIHsKKyAgICAgICAgKm5ld3BvcyA9IGxlbiArICpuZXdwb3M7CisgICAgaWYgKCpuZXdwb3M8MCB8fCAqbmV3cG9zPmxlbikgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW5kZXhFcnJvciwgInBvc2l0aW9uICV6ZCBmcm9tIGVycm9yIGhhbmRsZXIgb3V0IG9mIGJvdW5kcyIsICpuZXdwb3MpOwogICAgICAgICBQeV9ERUNSRUYocmVzdHVwbGUpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ1NzUsMTggKzYyODcsMTcgQEAKICAgICByZXR1cm4gcmVzdW5pY29kZTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICp1bmljb2RlX2VuY29kZV91Y3MxKGNvbnN0IFB5X1VOSUNPREUgKnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQpCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZV9lbmNvZGVfdWNzMShQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGltaXQpCiB7CisgICAgLyogaW5wdXQgc3RhdGUgKi8KKyAgICBQeV9zc2l6ZV90IHBvcz0wLCBzaXplOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAgICAgLyogb3V0cHV0IG9iamVjdCAqLwogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgLyogcG9pbnRlcnMgdG8gdGhlIGJlZ2lubmluZyBhbmQgZW5kKzEgb2YgaW5wdXQgKi8KLSAgICBjb25zdCBQeV9VTklDT0RFICpzdGFydHAgPSBwOwotICAgIGNvbnN0IFB5X1VOSUNPREUgKmVuZHAgPSBwICsgc2l6ZTsKLSAgICAvKiBwb2ludGVyIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHVuZW5jb2RhYmxlIGNoYXJhY3RlcnMgKi8KLSAgICAvKiBjb25zdCBQeV9VTklDT0RFICpiYWRwID0gTlVMTDsgKi8KICAgICAvKiBwb2ludGVyIGludG8gdGhlIG91dHB1dCAqLwogICAgIGNoYXIgKnN0cjsKICAgICAvKiBjdXJyZW50IG91dHB1dCBwb3NpdGlvbiAqLwpAQCAtNDU5OSw2ICs2MzEwLDExIEBACiAgICAgICogLTE9bm90IGluaXRpYWxpemVkLCAwPXVua25vd24sIDE9c3RyaWN0LCAyPXJlcGxhY2UsIDM9aWdub3JlLCA0PXhtbGNoYXJyZWZyZXBsYWNlICovCiAgICAgaW50IGtub3duX2Vycm9ySGFuZGxlciA9IC0xOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CiAgICAgLyogYWxsb2NhdGUgZW5vdWdoIGZvciBhIHNpbXBsZSBlbmNvZGluZyB3aXRob3V0CiAgICAgICAgcmVwbGFjZW1lbnRzLCBpZiB3ZSBuZWVkIG1vcmUsIHdlJ2xsIHJlc2l6ZSAqLwogICAgIGlmIChzaXplID09IDApCkBAIC00NjA5LDI4ICs2MzI1LDI0IEBACiAgICAgc3RyID0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKICAgICByZXNzaXplID0gc2l6ZTsKIAotICAgIHdoaWxlIChwPGVuZHApIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjID0gKnA7CisgICAgd2hpbGUgKHBvcyA8IHNpemUpIHsKKyAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKTsKIAogICAgICAgICAvKiBjYW4gd2UgZW5jb2RlIHRoaXM/ICovCiAgICAgICAgIGlmIChjPGxpbWl0KSB7CiAgICAgICAgICAgICAvKiBubyBvdmVyZmxvdyBjaGVjaywgYmVjYXVzZSB3ZSBrbm93IHRoYXQgdGhlIHNwYWNlIGlzIGVub3VnaCAqLwogICAgICAgICAgICAgKnN0cisrID0gKGNoYXIpYzsKLSAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICsrcG9zOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlfc3NpemVfdCB1bmljb2RlcG9zID0gcC1zdGFydHA7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcXVpcmVkc2l6ZTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlOwotICAgICAgICAgICAgUHlfc3NpemVfdCByZXBzaXplOwotICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdwb3M7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlc3BvczsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKnVuaTI7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemUsIG5ld3BvcywgcmVzcG9zLCBpOwogICAgICAgICAgICAgLyogc3RhcnRwb3MgZm9yIGNvbGxlY3RpbmcgdW5lbmNvZGFibGUgY2hhcnMgKi8KLSAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKmNvbGxzdGFydCA9IHA7Ci0gICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICpjb2xsZW5kID0gcDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbHN0YXJ0ID0gcG9zOworICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsZW5kID0gcG9zOwogICAgICAgICAgICAgLyogZmluZCBhbGwgdW5lY29kYWJsZSBjaGFyYWN0ZXJzICovCi0gICAgICAgICAgICB3aGlsZSAoKGNvbGxlbmQgPCBlbmRwKSAmJiAoKCpjb2xsZW5kKT49bGltaXQpKQorICAgICAgICAgICAgd2hpbGUgKChjb2xsZW5kIDwgc2l6ZSkgJiYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGNvbGxlbmQpPj1saW1pdCkpCiAgICAgICAgICAgICAgICAgKytjb2xsZW5kOwogICAgICAgICAgICAgLyogY2FjaGUgY2FsbGJhY2sgbmFtZSBsb29rdXAgKGlmIG5vdCBkb25lIHlldCwgaS5lLiBpdCdzIHRoZSBmaXJzdCBlcnJvcikgKi8KICAgICAgICAgICAgIGlmIChrbm93bl9lcnJvckhhbmRsZXI9PS0xKSB7CkBAIC00NjQ3LDM5ICs2MzU5LDM3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzd2l0Y2ggKGtub3duX2Vycm9ySGFuZGxlcikgewogICAgICAgICAgICAgY2FzZSAxOiAvKiBzdHJpY3QgKi8KLSAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCBzdGFydHAsIHNpemUsIGNvbGxzdGFydC1zdGFydHAsIGNvbGxlbmQtc3RhcnRwLCByZWFzb24pOworICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsIHVuaWNvZGUsIGNvbGxzdGFydCwgY29sbGVuZCwgcmVhc29uKTsKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBjYXNlIDI6IC8qIHJlcGxhY2UgKi8KICAgICAgICAgICAgICAgICB3aGlsZSAoY29sbHN0YXJ0Kys8Y29sbGVuZCkKICAgICAgICAgICAgICAgICAgICAgKnN0cisrID0gJz8nOyAvKiBmYWxsIHRocm91Z2ggKi8KICAgICAgICAgICAgIGNhc2UgMzogLyogaWdub3JlICovCi0gICAgICAgICAgICAgICAgcCA9IGNvbGxlbmQ7CisgICAgICAgICAgICAgICAgcG9zID0gY29sbGVuZDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgNDogLyogeG1sY2hhcnJlZnJlcGxhY2UgKi8KICAgICAgICAgICAgICAgICByZXNwb3MgPSBzdHIgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpOwotICAgICAgICAgICAgICAgIC8qIGRldGVybWluZSByZXBsYWNlbWVudCBzaXplICh0ZW1wb3JhcmlseSAobWlzKXVzZXMgcCkgKi8KLSAgICAgICAgICAgICAgICBmb3IgKHAgPSBjb2xsc3RhcnQsIHJlcHNpemUgPSAwOyBwIDwgY29sbGVuZDsgKytwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgqcDwxMCkKKyAgICAgICAgICAgICAgICAvKiBkZXRlcm1pbmUgcmVwbGFjZW1lbnQgc2l6ZSAqLworICAgICAgICAgICAgICAgIGZvciAoaSA9IGNvbGxzdGFydCwgcmVwc2l6ZSA9IDA7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHNpemUgKz0gMisxKzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDApCiAgICAgICAgICAgICAgICAgICAgICAgICByZXBzaXplICs9IDIrMisxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwKQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDApCiAgICAgICAgICAgICAgICAgICAgICAgICByZXBzaXplICs9IDIrMysxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwMCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHNpemUgKz0gMis0KzE7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDAwKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVwc2l6ZSArPSAyKzUrMTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDAwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcHNpemUgKz0gMis1KzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDAwMDApCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDAwMCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHNpemUgKz0gMis2KzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVwc2l6ZSArPSAyKzcrMTsKLSNlbmRpZgorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IHJlc3BvcytyZXBzaXplKyhlbmRwLWNvbGxlbmQpOworICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IHJlc3BvcytyZXBzaXplKyhzaXplLWNvbGxlbmQpOwogICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiByZXNzaXplKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemU8MipyZXNzaXplKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gMipyZXNzaXplOwpAQCAtNDY4OCwxNyArNjM5OCwxOCBAQAogICAgICAgICAgICAgICAgICAgICBzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpICsgcmVzcG9zOwogICAgICAgICAgICAgICAgICAgICByZXNzaXplID0gcmVxdWlyZWRzaXplOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAodGVtcG9yYXJpbHkgKG1pcyl1c2VzIHApICovCi0gICAgICAgICAgICAgICAgZm9yIChwID0gY29sbHN0YXJ0OyBwIDwgY29sbGVuZDsgKytwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0ciArPSBzcHJpbnRmKHN0ciwgIiYjJWQ7IiwgKGludCkqcCk7CisgICAgICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKi8KKyAgICAgICAgICAgICAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RyICs9IHNwcmludGYoc3RyLCAiJiMlZDsiLCBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHAgPSBjb2xsZW5kOworICAgICAgICAgICAgICAgIHBvcyA9IGNvbGxlbmQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIHJlcHVuaWNvZGUgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHN0YXJ0cCwgc2l6ZSwgJmV4YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0LXN0YXJ0cCwgY29sbGVuZC1zdGFydHAsICZuZXdwb3MpOwotICAgICAgICAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHVuaWNvZGUsICZleGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydCwgY29sbGVuZCwgJm5ld3Bvcyk7CisgICAgICAgICAgICAgICAgaWYgKHJlcHVuaWNvZGUgPT0gTlVMTCB8fCAoUHlVbmljb2RlX0NoZWNrKHJlcHVuaWNvZGUpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQURZKHJlcHVuaWNvZGUpID09IC0xKSkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcHVuaWNvZGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIERpcmVjdGx5IGNvcHkgYnl0ZXMgcmVzdWx0IHRvIG91dHB1dC4gKi8KQEAgLTQ3MTUsNyArNjQyNiw3IEBACiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHN0ciwgUHlCeXRlc19Bc1N0cmluZyhyZXB1bmljb2RlKSwgcmVwc2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIHN0ciArPSByZXBzaXplOwotICAgICAgICAgICAgICAgICAgICBwID0gc3RhcnRwICsgbmV3cG9zOworICAgICAgICAgICAgICAgICAgICBwb3MgPSBuZXdwb3M7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDcyMyw4ICs2NDM0LDggQEAKICAgICAgICAgICAgICAgICAgICBoYXZlK3RoZSByZXBsYWNlbWVudCt0aGUgcmVzdCBvZiB0aGUgc3RyaW5nLCBzbwogICAgICAgICAgICAgICAgICAgIHdlIHdvbid0IGhhdmUgdG8gY2hlY2sgc3BhY2UgZm9yIGVuY29kYWJsZSBjaGFyYWN0ZXJzKSAqLwogICAgICAgICAgICAgICAgIHJlc3BvcyA9IHN0ciAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7Ci0gICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSByZXNwb3MrcmVwc2l6ZSsoZW5kcC1jb2xsZW5kKTsKKyAgICAgICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwdW5pY29kZSk7CisgICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gcmVzcG9zK3JlcHNpemUrKHNpemUtY29sbGVuZCk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IHJlc3NpemUpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZTwyKnJlc3NpemUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSAyKnJlc3NpemU7CkBAIC00NzM3LDE3ICs2NDQ4LDE3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIHRoZXJlIGlzIGFueXRoaW5nIHVuZW5jb2RhYmxlIGluIHRoZSByZXBsYWNlbWVudAogICAgICAgICAgICAgICAgICAgIGFuZCBjb3B5IGl0IHRvIHRoZSBvdXRwdXQgKi8KLSAgICAgICAgICAgICAgICBmb3IgKHVuaTIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXB1bmljb2RlKTtyZXBzaXplLS0+MDsgKyt1bmkyLCArK3N0cikgewotICAgICAgICAgICAgICAgICAgICBjID0gKnVuaTI7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgcmVwc2l6ZS0tPjA7ICsraSwgKytzdHIpIHsKKyAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIocmVwdW5pY29kZSwgaSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjID49IGxpbWl0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCBzdGFydHAsIHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVwb3MsIHVuaWNvZGVwb3MrMSwgcmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsIHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcywgcG9zKzEsIHJlYXNvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgKnN0ciA9IChjaGFyKWM7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHAgPSBzdGFydHAgKyBuZXdwb3M7CisgICAgICAgICAgICAgICAgcG9zID0gbmV3cG9zOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDc3MSwzMyArNjQ4Miw1NyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZUxhdGluMShjb25zdCBQeV9VTklDT0RFICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLyogRGVwcmVjYXRlZCAqLworUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZUxhdGluMShjb25zdCBQeV9VTklDT0RFICpwLAorICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSAgICByZXR1cm4gdW5pY29kZV9lbmNvZGVfdWNzMShwLCBzaXplLCBlcnJvcnMsIDI1Nik7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwLCBzaXplKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSB1bmljb2RlX2VuY29kZV91Y3MxKHVuaWNvZGUsIGVycm9ycywgMjU2KTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc0xhdGluMVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUsIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVMYXRpbjEoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIEZhc3QgcGF0aDogaWYgaXQgaXMgYSBvbmUtYnl0ZSBzdHJpbmcsIGNvbnN0cnVjdAorICAgICAgIGJ5dGVzIG9iamVjdCBkaXJlY3RseS4gKi8KKyAgICBpZiAoUHlVbmljb2RlX0tJTkQodW5pY29kZSkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpCisgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisgICAgLyogTm9uLUxhdGluLTEgY2hhcmFjdGVycyBwcmVzZW50LiBEZWZlciB0byBhYm92ZSBmdW5jdGlvbiB0bworICAgICAgIHJhaXNlIHRoZSBleGNlcHRpb24uICovCisgICAgcmV0dXJuIHVuaWNvZGVfZW5jb2RlX3VjczEodW5pY29kZSwgZXJyb3JzLCAyNTYpOworfQorCitQeU9iamVjdCoKK1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyh1bmljb2RlLCBOVUxMKTsKIH0KIAogLyogLS0tIDctYml0IEFTQ0lJIENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlQVNDSUkoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlQVNDSUkoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwotICAgIFB5X1VOSUNPREUgKnA7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBQeV9zc2l6ZV90IG91dHBvczsKQEAgLTQ4MDUsNzAgKzY1NDAsOTcgQEAKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKIAotICAgIC8qIEFTQ0lJIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGZpcnN0IDEyOCBvcmRpbmFscyBpbiBVbmljb2RlLiAqLwotICAgIGlmIChzaXplID09IDEgJiYgKih1bnNpZ25lZCBjaGFyKilzIDwgMTI4KSB7Ci0gICAgICAgIFB5X1VOSUNPREUgciA9ICoodW5zaWduZWQgY2hhciopczsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgmciwgMSk7Ci0gICAgfQotCi0gICAgdiA9IF9QeVVuaWNvZGVfTmV3KHNpemUpOwotICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7CisgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOworCisgICAgLyogQVNDSUkgaXMgZXF1aXZhbGVudCB0byB0aGUgZmlyc3QgMTI4IG9yZGluYWxzIGluIFVuaWNvZGUuICovCisgICAgaWYgKHNpemUgPT0gMSAmJiAodW5zaWduZWQgY2hhcilzWzBdIDwgMTI4KQorICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKCh1bnNpZ25lZCBjaGFyKXNbMF0pOworCisgICAgdW5pY29kZSA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgMTI3KTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICBnb3RvIG9uRXJyb3I7CisKICAgICBlID0gcyArIHNpemU7CisgICAgZGF0YSA9IFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpOworICAgIG91dHBvcyA9IGFzY2lpX2RlY29kZShzLCBlLCAoUHlfVUNTMSAqKWRhdGEpOworICAgIGlmIChvdXRwb3MgPT0gc2l6ZSkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGU7CisKKyAgICBzICs9IG91dHBvczsKKyAgICBraW5kID0gUHlVbmljb2RlXzFCWVRFX0tJTkQ7CiAgICAgd2hpbGUgKHMgPCBlKSB7CiAgICAgICAgIHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgYyA9ICh1bnNpZ25lZCBjaGFyKSpzOwogICAgICAgICBpZiAoYyA8IDEyOCkgewotICAgICAgICAgICAgKnArKyA9IGM7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgb3V0cG9zKyssIGMpOwogICAgICAgICAgICAgKytzOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwogICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMTsKLSAgICAgICAgICAgIG91dHBvcyA9IHAgLSAoUHlfVU5JQ09ERSAqKVB5VW5pY29kZV9BU19VTklDT0RFKHYpOwogICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICJhc2NpaSIsICJvcmRpbmFsIG5vdCBpbiByYW5nZSgxMjgpIiwKICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcywgJnApKQorICAgICAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcykpCiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgICAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikgPCBQeVVuaWNvZGVfR0VUX1NJWkUodikpCi0gICAgICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmdiwgcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpKSA8IDApCi0gICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ1bmljb2RlLCBvdXRwb3MpIDwgMCkKKyAgICAgICAgZ290byBvbkVycm9yOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAxKSk7CisgICAgcmV0dXJuIHVuaWNvZGU7CiAKICAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHYpOworICAgIFB5X1hERUNSRUYodW5pY29kZSk7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9FbmNvZGVBU0NJSShjb25zdCBQeV9VTklDT0RFICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qIERlcHJlY2F0ZWQgKi8KK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVBU0NJSShjb25zdCBQeV9VTklDT0RFICpwLAorICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7Ci0gICAgcmV0dXJuIHVuaWNvZGVfZW5jb2RlX3VjczEocCwgc2l6ZSwgZXJyb3JzLCAxMjgpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocCwgc2l6ZSk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gdW5pY29kZV9lbmNvZGVfdWNzMSh1bmljb2RlLCBlcnJvcnMsIDEyOCk7CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUFTQ0lJKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogRmFzdCBwYXRoOiBpZiBpdCBpcyBhbiBBU0NJSS1vbmx5IHN0cmluZywgY29uc3RydWN0IGJ5dGVzIG9iamVjdAorICAgICAgIGRpcmVjdGx5LiBFbHNlIGRlZmVyIHRvIGFib3ZlIGZ1bmN0aW9uIHRvIHJhaXNlIHRoZSBleGNlcHRpb24uICovCisgICAgaWYgKFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKSA8IDEyOCkKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoUHlVbmljb2RlX0RBVEEodW5pY29kZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKyAgICByZXR1cm4gdW5pY29kZV9lbmNvZGVfdWNzMSh1bmljb2RlLCBlcnJvcnMsIDEyOCk7CiB9CiAKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoSEFWRV9VU0FCTEVfV0NIQVJfVCkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIHJldHVybiBfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcodW5pY29kZSwgTlVMTCk7Cit9CisKKyNpZmRlZiBIQVZFX01CQ1MKIAogLyogLS0tIE1CQ1MgY29kZWNzIGZvciBXaW5kb3dzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTQ4NzYsMzM2ICs2NjM4LDg0MSBAQAogI2RlZmluZSBORUVEX1JFVFJZCiAjZW5kaWYKIAotLyogWFhYIFRoaXMgY29kZSBpcyBsaW1pdGVkIHRvICJ0cnVlIiBkb3VibGUtYnl0ZSBlbmNvZGluZ3MsIGFzCi0gICBhKSBpdCBhc3N1bWVzIGFuIGluY29tcGxldGUgY2hhcmFjdGVyIGNvbnNpc3RzIG9mIGEgc2luZ2xlIGJ5dGUsIGFuZAotICAgYikgSXNEQkNTTGVhZEJ5dGUgKHByb2JhYmx5KSBkb2VzIG5vdCB3b3JrIGZvciBub24tREJDUyBtdWx0aS1ieXRlCi0gICBlbmNvZGluZ3MsIHNlZSBJc0RCQ1NMZWFkQnl0ZUV4IGRvY3VtZW50YXRpb24uICovCisjaWZuZGVmIFdDX0VSUl9JTlZBTElEX0NIQVJTCisjICBkZWZpbmUgV0NfRVJSX0lOVkFMSURfQ0hBUlMgMHgwMDgwCisjZW5kaWYKIAotc3RhdGljIGludCBpc19kYmNzX2xlYWRfYnl0ZShjb25zdCBjaGFyICpzLCBpbnQgb2Zmc2V0KQorc3RhdGljIGNoYXIqCitjb2RlX3BhZ2VfbmFtZShVSU5UIGNvZGVfcGFnZSwgUHlPYmplY3QgKipvYmopCit7CisgICAgKm9iaiA9IE5VTEw7CisgICAgaWYgKGNvZGVfcGFnZSA9PSBDUF9BQ1ApCisgICAgICAgIHJldHVybiAibWJjcyI7CisgICAgaWYgKGNvZGVfcGFnZSA9PSBDUF9VVEY3KQorICAgICAgICByZXR1cm4gIkNQX1VURjciOworICAgIGlmIChjb2RlX3BhZ2UgPT0gQ1BfVVRGOCkKKyAgICAgICAgcmV0dXJuICJDUF9VVEY4IjsKKworICAgICpvYmogPSBQeUJ5dGVzX0Zyb21Gb3JtYXQoImNwJXUiLCBjb2RlX3BhZ2UpOworICAgIGlmICgqb2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUJ5dGVzX0FTX1NUUklORygqb2JqKTsKK30KKworc3RhdGljIGludAoraXNfZGJjc19sZWFkX2J5dGUoVUlOVCBjb2RlX3BhZ2UsIGNvbnN0IGNoYXIgKnMsIGludCBvZmZzZXQpCiB7CiAgICAgY29uc3QgY2hhciAqY3VyciA9IHMgKyBvZmZzZXQ7CisgICAgY29uc3QgY2hhciAqcHJldjsKIAotICAgIGlmIChJc0RCQ1NMZWFkQnl0ZSgqY3VycikpIHsKLSAgICAgICAgY29uc3QgY2hhciAqcHJldiA9IENoYXJQcmV2KHMsIGN1cnIpOwotICAgICAgICByZXR1cm4gKHByZXYgPT0gY3VycikgfHwgIUlzREJDU0xlYWRCeXRlKCpwcmV2KSB8fCAoY3VyciAtIHByZXYgPT0gMik7Ci0gICAgfQorICAgIGlmICghSXNEQkNTTGVhZEJ5dGVFeChjb2RlX3BhZ2UsICpjdXJyKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBwcmV2ID0gQ2hhclByZXZFeEEoY29kZV9wYWdlLCBzLCBjdXJyLCAwKTsKKyAgICBpZiAocHJldiA9PSBjdXJyKQorICAgICAgICByZXR1cm4gMTsKKyAgICAvKiBGSVhNRTogVGhpcyBjb2RlIGlzIGxpbWl0ZWQgdG8gInRydWUiIGRvdWJsZS1ieXRlIGVuY29kaW5ncywKKyAgICAgICBhcyBpdCBhc3N1bWVzIGFuIGluY29tcGxldGUgY2hhcmFjdGVyIGNvbnNpc3RzIG9mIGEgc2luZ2xlCisgICAgICAgYnl0ZS4gKi8KKyAgICBpZiAoY3VyciAtIHByZXYgPT0gMikKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKCFJc0RCQ1NMZWFkQnl0ZUV4KGNvZGVfcGFnZSwgKnByZXYpKQorICAgICAgICByZXR1cm4gMTsKICAgICByZXR1cm4gMDsKIH0KIAotLyoKLSAqIERlY29kZSBNQkNTIHN0cmluZyBpbnRvIHVuaWNvZGUgb2JqZWN0LiBJZiAnZmluYWwnIGlzIHNldCwgY29udmVydHMKLSAqIHRyYWlsaW5nIGxlYWQtYnl0ZSB0b28uIFJldHVybnMgY29uc3VtZWQgc2l6ZSBpZiBzdWNjZWVkLCAtMSBvdGhlcndpc2UuCi0gKi8KLXN0YXRpYyBpbnQgZGVjb2RlX21iY3MoUHlVbmljb2RlT2JqZWN0ICoqdiwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcywgLyogTUJDUyBzdHJpbmcgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsIC8qIHNpemVvZiBNQkNTIHN0cmluZyAqLwotICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmluYWwsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3N0YXRpYyBEV09SRAorZGVjb2RlX2NvZGVfcGFnZV9mbGFncyhVSU5UIGNvZGVfcGFnZSkKIHsKLSAgICBQeV9VTklDT0RFICpwOwotICAgIFB5X3NzaXplX3QgbjsKLSAgICBEV09SRCB1c2l6ZTsKLSAgICBEV09SRCBmbGFnczsKLQotICAgIGFzc2VydChzaXplID49IDApOwotCi0gICAgLyogY2hlY2sgYW5kIGhhbmRsZSAnZXJyb3JzJyBhcmcgKi8KLSAgICBpZiAoZXJyb3JzPT1OVUxMIHx8IHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKT09MCkKLSAgICAgICAgZmxhZ3MgPSBNQl9FUlJfSU5WQUxJRF9DSEFSUzsKLSAgICBlbHNlIGlmIChzdHJjbXAoZXJyb3JzLCAiaWdub3JlIik9PTApCi0gICAgICAgIGZsYWdzID0gMDsKLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAibWJjcyBlbmNvZGluZyBkb2VzIG5vdCBzdXBwb3J0IGVycm9ycz0nJXMnIiwKLSAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoY29kZV9wYWdlID09IENQX1VURjcpIHsKKyAgICAgICAgLyogVGhlIENQX1VURjcgZGVjb2RlciBvbmx5IHN1cHBvcnRzIGZsYWdzPTAgKi8KKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIE1CX0VSUl9JTlZBTElEX0NIQVJTOworfQogCi0gICAgLyogU2tpcCB0cmFpbGluZyBsZWFkLWJ5dGUgdW5sZXNzICdmaW5hbCcgaXMgc2V0ICovCi0gICAgaWYgKCFmaW5hbCAmJiBzaXplID49IDEgJiYgaXNfZGJjc19sZWFkX2J5dGUocywgc2l6ZSAtIDEpKQotICAgICAgICAtLXNpemU7CisvKgorICogRGVjb2RlIGEgYnl0ZSBzdHJpbmcgZnJvbSBhIFdpbmRvd3MgY29kZSBwYWdlIGludG8gdW5pY29kZSBvYmplY3QgaW4gc3RyaWN0CisgKiBtb2RlLgorICoKKyAqIFJldHVybnMgY29uc3VtZWQgc2l6ZSBpZiBzdWNjZWVkLCByZXR1cm5zIC0yIG9uIGRlY29kZSBlcnJvciwgb3IgcmFpc2UgYQorICogV2luZG93c0Vycm9yIGFuZCByZXR1cm5zIC0xIG9uIG90aGVyIGVycm9yLgorICovCitzdGF0aWMgaW50CitkZWNvZGVfY29kZV9wYWdlX3N0cmljdChVSU5UIGNvZGVfcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqdiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmluLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluc2l6ZSkKK3sKKyAgICBjb25zdCBEV09SRCBmbGFncyA9IGRlY29kZV9jb2RlX3BhZ2VfZmxhZ3MoY29kZV9wYWdlKTsKKyAgICB3Y2hhcl90ICpvdXQ7CisgICAgRFdPUkQgb3V0c2l6ZTsKIAogICAgIC8qIEZpcnN0IGdldCB0aGUgc2l6ZSBvZiB0aGUgcmVzdWx0ICovCi0gICAgaWYgKHNpemUgPiAwKSB7Ci0gICAgICAgIHVzaXplID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9BQ1AsIGZsYWdzLCBzLCBzaXplLCBOVUxMLCAwKTsKLSAgICAgICAgaWYgKHVzaXplPT0wKQotICAgICAgICAgICAgZ290byBtYmNzX2RlY29kZV9lcnJvcjsKLSAgICB9IGVsc2UKLSAgICAgICAgdXNpemUgPSAwOworICAgIGFzc2VydChpbnNpemUgPiAwKTsKKyAgICBvdXRzaXplID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihjb2RlX3BhZ2UsIGZsYWdzLCBpbiwgaW5zaXplLCBOVUxMLCAwKTsKKyAgICBpZiAob3V0c2l6ZSA8PSAwKQorICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgaWYgKCp2ID09IE5VTEwpIHsKICAgICAgICAgLyogQ3JlYXRlIHVuaWNvZGUgb2JqZWN0ICovCi0gICAgICAgICp2ID0gX1B5VW5pY29kZV9OZXcodXNpemUpOworICAgICAgICAvKiBGSVhNRTogZG9uJ3QgdXNlIF9QeVVuaWNvZGVfTmV3KCksIGJ1dCBhbGxvY2F0ZSBhIHdjaGFyX3QqIGJ1ZmZlciAqLworICAgICAgICAqdiA9IChQeU9iamVjdCopX1B5VW5pY29kZV9OZXcob3V0c2l6ZSk7CiAgICAgICAgIGlmICgqdiA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBuID0gMDsKKyAgICAgICAgb3V0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKnYpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogRXh0ZW5kIHVuaWNvZGUgb2JqZWN0ICovCi0gICAgICAgIG4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoKnYpOwotICAgICAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUodiwgbiArIHVzaXplKSA8IDApCisgICAgICAgIFB5X3NzaXplX3QgbiA9IFB5VW5pY29kZV9HRVRfU0laRSgqdik7CisgICAgICAgIGlmICh1bmljb2RlX3Jlc2l6ZSh2LCBuICsgb3V0c2l6ZSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBvdXQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqdikgKyBuOwogICAgIH0KIAogICAgIC8qIERvIHRoZSBjb252ZXJzaW9uICovCi0gICAgaWYgKHVzaXplID4gMCkgewotICAgICAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKnYpICsgbjsKLSAgICAgICAgaWYgKDAgPT0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9BQ1AsIGZsYWdzLCBzLCBzaXplLCBwLCB1c2l6ZSkpIHsKLSAgICAgICAgICAgIGdvdG8gbWJjc19kZWNvZGVfZXJyb3I7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHNpemU7CisgICAgb3V0c2l6ZSA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoY29kZV9wYWdlLCBmbGFncywgaW4sIGluc2l6ZSwgb3V0LCBvdXRzaXplKTsKKyAgICBpZiAob3V0c2l6ZSA8PSAwKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHJldHVybiBpbnNpemU7CiAKLW1iY3NfZGVjb2RlX2Vycm9yOgotICAgIC8qIElmIHRoZSBsYXN0IGVycm9yIHdhcyBFUlJPUl9OT19VTklDT0RFX1RSQU5TTEFUSU9OLCB0aGVuCi0gICAgICAgd2UgcmFpc2UgYSBVbmljb2RlRGVjb2RlRXJyb3IgLSBlbHNlIGl0IGlzIGEgJ2dlbmVyaWMnCi0gICAgICAgd2luZG93cyBlcnJvcgotICAgICAqLwotICAgIGlmIChHZXRMYXN0RXJyb3IoKT09RVJST1JfTk9fVU5JQ09ERV9UUkFOU0xBVElPTikgewotICAgICAgICAvKiBJZGVhbGx5LCB3ZSBzaG91bGQgZ2V0IHJlYXNvbiBmcm9tIEZvcm1hdE1lc3NhZ2UgLSB0aGlzCi0gICAgICAgICAgIGlzIHRoZSBXaW5kb3dzIDIwMDAgRW5nbGlzaCB2ZXJzaW9uIG9mIHRoZSBtZXNzYWdlCi0gICAgICAgICovCi0gICAgICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgICAgICBjb25zdCBjaGFyICpyZWFzb24gPSAiTm8gbWFwcGluZyBmb3IgdGhlIFVuaWNvZGUgY2hhcmFjdGVyIGV4aXN0cyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiB0aGUgdGFyZ2V0IG11bHRpLWJ5dGUgY29kZSBwYWdlLiI7Ci0gICAgICAgIG1ha2VfZGVjb2RlX2V4Y2VwdGlvbigmZXhjLCAibWJjcyIsIHMsIHNpemUsIDAsIDAsIHJlYXNvbik7Ci0gICAgICAgIGlmIChleGMgIT0gTlVMTCkgewotICAgICAgICAgICAgUHlDb2RlY19TdHJpY3RFcnJvcnMoZXhjKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihleGMpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoMCwgTlVMTCk7Ci0gICAgfQorZXJyb3I6CisgICAgaWYgKEdldExhc3RFcnJvcigpID09IEVSUk9SX05PX1VOSUNPREVfVFJBTlNMQVRJT04pCisgICAgICAgIHJldHVybiAtMjsKKyAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKICAgICByZXR1cm4gLTE7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlTUJDU1N0YXRlZnVsKGNvbnN0IGNoYXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCkKKy8qCisgKiBEZWNvZGUgYSBieXRlIHN0cmluZyBmcm9tIGEgY29kZSBwYWdlIGludG8gdW5pY29kZSBvYmplY3Qgd2l0aCBhbiBlcnJvcgorICogaGFuZGxlci4KKyAqCisgKiBSZXR1cm5zIGNvbnN1bWVkIHNpemUgaWYgc3VjY2VlZCwgb3IgcmFpc2UgYSBXaW5kb3dzRXJyb3Igb3IKKyAqIFVuaWNvZGVEZWNvZGVFcnJvciBleGNlcHRpb24gYW5kIHJldHVybnMgLTEgb24gZXJyb3IuCisgKi8KK3N0YXRpYyBpbnQKK2RlY29kZV9jb2RlX3BhZ2VfZXJyb3JzKFVJTlQgY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKip2LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW4sIGNvbnN0IGludCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdiA9IE5VTEw7Ci0gICAgaW50IGRvbmU7CisgICAgY29uc3QgY2hhciAqc3RhcnRpbiA9IGluOworICAgIGNvbnN0IGNoYXIgKmVuZGluID0gaW4gKyBzaXplOworICAgIGNvbnN0IERXT1JEIGZsYWdzID0gZGVjb2RlX2NvZGVfcGFnZV9mbGFncyhjb2RlX3BhZ2UpOworICAgIC8qIElkZWFsbHksIHdlIHNob3VsZCBnZXQgcmVhc29uIGZyb20gRm9ybWF0TWVzc2FnZS4gVGhpcyBpcyB0aGUgV2luZG93cworICAgICAgIDIwMDAgRW5nbGlzaCB2ZXJzaW9uIG9mIHRoZSBtZXNzYWdlLiAqLworICAgIGNvbnN0IGNoYXIgKnJlYXNvbiA9ICJObyBtYXBwaW5nIGZvciB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgZXhpc3RzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gdGhlIHRhcmdldCBjb2RlIHBhZ2UuIjsKKyAgICAvKiBlYWNoIHN0ZXAgY2Fubm90IGRlY29kZSBtb3JlIHRoYW4gMSBjaGFyYWN0ZXIsIGJ1dCBhIGNoYXJhY3RlciBjYW4gYmUKKyAgICAgICByZXByZXNlbnRlZCBhcyBhIHN1cnJvZ2F0ZSBwYWlyICovCisgICAgd2NoYXJfdCBidWZmZXJbMl0sICpzdGFydG91dCwgKm91dDsKKyAgICBpbnQgaW5zaXplLCBvdXRzaXplOworICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOworICAgIFB5T2JqZWN0ICplbmNvZGluZ19vYmogPSBOVUxMOworICAgIGNoYXIgKmVuY29kaW5nOworICAgIERXT1JEIGVycjsKKyAgICBpbnQgcmV0ID0gLTE7CisKKyAgICBhc3NlcnQoc2l6ZSA+IDApOworCisgICAgZW5jb2RpbmcgPSBjb2RlX3BhZ2VfbmFtZShjb2RlX3BhZ2UsICZlbmNvZGluZ19vYmopOworICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoZXJyb3JzID09IE5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApIHsKKyAgICAgICAgLyogVGhlIGxhc3QgZXJyb3Igd2FzIEVSUk9SX05PX1VOSUNPREVfVFJBTlNMQVRJT04sIHRoZW4gd2UgcmFpc2UgYQorICAgICAgICAgICBVbmljb2RlRGVjb2RlRXJyb3IuICovCisgICAgICAgIG1ha2VfZGVjb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgaW4sIHNpemUsIDAsIDAsIHJlYXNvbik7CisgICAgICAgIGlmIChleGMgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlDb2RlY19TdHJpY3RFcnJvcnMoZXhjKTsKKyAgICAgICAgICAgIFB5X0NMRUFSKGV4Yyk7CisgICAgICAgIH0KKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAoKnYgPT0gTlVMTCkgeworICAgICAgICAvKiBDcmVhdGUgdW5pY29kZSBvYmplY3QgKi8KKyAgICAgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAvIChQeV9zc2l6ZV90KVB5X0FSUkFZX0xFTkdUSChidWZmZXIpKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICAvKiBGSVhNRTogZG9uJ3QgdXNlIF9QeVVuaWNvZGVfTmV3KCksIGJ1dCBhbGxvY2F0ZSBhIHdjaGFyX3QqIGJ1ZmZlciAqLworICAgICAgICAqdiA9IChQeU9iamVjdCopX1B5VW5pY29kZV9OZXcoc2l6ZSAqIFB5X0FSUkFZX0xFTkdUSChidWZmZXIpKTsKKyAgICAgICAgaWYgKCp2ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBzdGFydG91dCA9IFB5VW5pY29kZV9BU19VTklDT0RFKCp2KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIEV4dGVuZCB1bmljb2RlIG9iamVjdCAqLworICAgICAgICBQeV9zc2l6ZV90IG4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoKnYpOworICAgICAgICBpZiAoc2l6ZSA+IChQWV9TU0laRV9UX01BWCAtIG4pIC8gKFB5X3NzaXplX3QpUHlfQVJSQVlfTEVOR1RIKGJ1ZmZlcikpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGlmICh1bmljb2RlX3Jlc2l6ZSh2LCBuICsgc2l6ZSAqIFB5X0FSUkFZX0xFTkdUSChidWZmZXIpKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBzdGFydG91dCA9IFB5VW5pY29kZV9BU19VTklDT0RFKCp2KSArIG47CisgICAgfQorCisgICAgLyogRGVjb2RlIHRoZSBieXRlIHN0cmluZyBjaGFyYWN0ZXIgcGVyIGNoYXJhY3RlciAqLworICAgIG91dCA9IHN0YXJ0b3V0OworICAgIHdoaWxlIChpbiA8IGVuZGluKQorICAgIHsKKyAgICAgICAgLyogRGVjb2RlIGEgY2hhcmFjdGVyICovCisgICAgICAgIGluc2l6ZSA9IDE7CisgICAgICAgIGRvCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dHNpemUgPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKGNvZGVfcGFnZSwgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiwgaW5zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLCBQeV9BUlJBWV9MRU5HVEgoYnVmZmVyKSk7CisgICAgICAgICAgICBpZiAob3V0c2l6ZSA+IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgICAgIGlmIChlcnIgIT0gRVJST1JfTk9fVU5JQ09ERV9UUkFOU0xBVElPTgorICAgICAgICAgICAgICAgICYmIGVyciAhPSBFUlJPUl9JTlNVRkZJQ0lFTlRfQlVGRkVSKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnNpemUrKzsKKyAgICAgICAgfQorICAgICAgICAvKiA0PW1heGltdW0gbGVuZ3RoIG9mIGEgVVRGLTggc2VxdWVuY2UgKi8KKyAgICAgICAgd2hpbGUgKGluc2l6ZSA8PSA0ICYmIChpbiArIGluc2l6ZSkgPD0gZW5kaW4pOworCisgICAgICAgIGlmIChvdXRzaXplIDw9IDApIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvcywgZW5kaW5wb3MsIG91dHBvczsKKworICAgICAgICAgICAgc3RhcnRpbnBvcyA9IGluIC0gc3RhcnRpbjsKKyAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIDE7CisgICAgICAgICAgICBvdXRwb3MgPSBvdXQgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqdik7CisgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCisgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwKKyAgICAgICAgICAgICAgICAgICAgJnN0YXJ0aW4sICZlbmRpbiwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJmluLAorICAgICAgICAgICAgICAgICAgICB2LCAmb3V0cG9zKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKnYpICsgb3V0cG9zOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW4gKz0gaW5zaXplOworICAgICAgICAgICAgbWVtY3B5KG91dCwgYnVmZmVyLCBvdXRzaXplICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgICAgIG91dCArPSBvdXRzaXplOworICAgICAgICB9CisgICAgfQorCisgICAgLyogd3JpdGUgYSBOVUwgY2hhcmFjdGVyIGF0IHRoZSBlbmQgKi8KKyAgICAqb3V0ID0gMDsKKworICAgIC8qIEV4dGVuZCB1bmljb2RlIG9iamVjdCAqLworICAgIG91dHNpemUgPSBvdXQgLSBzdGFydG91dDsKKyAgICBhc3NlcnQob3V0c2l6ZSA8PSBQeVVuaWNvZGVfV1NUUl9MRU5HVEgoKnYpKTsKKyAgICBpZiAodW5pY29kZV9yZXNpemUodiwgb3V0c2l6ZSkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHJldCA9IHNpemU7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoZW5jb2Rpbmdfb2JqKTsKKyAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihleGMpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNvZGVfY29kZV9wYWdlX3N0YXRlZnVsKGludCBjb2RlX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKK3sKKyAgICBQeU9iamVjdCAqdiA9IE5VTEw7CisgICAgaW50IGNodW5rX3NpemUsIGZpbmFsLCBjb252ZXJ0ZWQsIGRvbmU7CisKKyAgICBpZiAoY29kZV9wYWdlIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgY29kZSBwYWdlIG51bWJlciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICBpZiAoY29uc3VtZWQpCiAgICAgICAgICpjb25zdW1lZCA9IDA7CiAKKyAgICBkbworICAgIHsKICNpZmRlZiBORUVEX1JFVFJZCi0gIHJldHJ5OgotICAgIGlmIChzaXplID4gSU5UX01BWCkKLSAgICAgICAgZG9uZSA9IGRlY29kZV9tYmNzKCZ2LCBzLCBJTlRfTUFYLCAwLCBlcnJvcnMpOwotICAgIGVsc2UKKyAgICAgICAgaWYgKHNpemUgPiBJTlRfTUFYKSB7CisgICAgICAgICAgICBjaHVua19zaXplID0gSU5UX01BWDsKKyAgICAgICAgICAgIGZpbmFsID0gMDsKKyAgICAgICAgICAgIGRvbmUgPSAwOworICAgICAgICB9CisgICAgICAgIGVsc2UKICNlbmRpZgotICAgICAgICBkb25lID0gZGVjb2RlX21iY3MoJnYsIHMsIChpbnQpc2l6ZSwgIWNvbnN1bWVkLCBlcnJvcnMpOworICAgICAgICB7CisgICAgICAgICAgICBjaHVua19zaXplID0gKGludClzaXplOworICAgICAgICAgICAgZmluYWwgPSAoY29uc3VtZWQgPT0gTlVMTCk7CisgICAgICAgICAgICBkb25lID0gMTsKKyAgICAgICAgfQogCi0gICAgaWYgKGRvbmUgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYodik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICAgICAgLyogU2tpcCB0cmFpbGluZyBsZWFkLWJ5dGUgdW5sZXNzICdmaW5hbCcgaXMgc2V0ICovCisgICAgICAgIGlmICghZmluYWwgJiYgaXNfZGJjc19sZWFkX2J5dGUoY29kZV9wYWdlLCBzLCBjaHVua19zaXplIC0gMSkpCisgICAgICAgICAgICAtLWNodW5rX3NpemU7CiAKLSAgICBpZiAoY29uc3VtZWQpCi0gICAgICAgICpjb25zdW1lZCArPSBkb25lOworICAgICAgICBpZiAoY2h1bmtfc2l6ZSA9PSAwICYmIGRvbmUpIHsKKyAgICAgICAgICAgIGlmICh2ICE9IE5VTEwpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKKyAgICAgICAgfQogCi0jaWZkZWYgTkVFRF9SRVRSWQotICAgIGlmIChzaXplID4gSU5UX01BWCkgewotICAgICAgICBzICs9IGRvbmU7Ci0gICAgICAgIHNpemUgLT0gZG9uZTsKLSAgICAgICAgZ290byByZXRyeTsKLSAgICB9Ci0jZW5kaWYKIAotICAgIHJldHVybiAoUHlPYmplY3QgKil2OworICAgICAgICBjb252ZXJ0ZWQgPSBkZWNvZGVfY29kZV9wYWdlX3N0cmljdChjb2RlX3BhZ2UsICZ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjaHVua19zaXplKTsKKyAgICAgICAgaWYgKGNvbnZlcnRlZCA9PSAtMikKKyAgICAgICAgICAgIGNvbnZlcnRlZCA9IGRlY29kZV9jb2RlX3BhZ2VfZXJyb3JzKGNvZGVfcGFnZSwgJnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjaHVua19zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICAgICAgYXNzZXJ0KGNvbnZlcnRlZCAhPSAwKTsKKworICAgICAgICBpZiAoY29udmVydGVkIDwgMCkgeworICAgICAgICAgICAgUHlfWERFQ1JFRih2KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbnN1bWVkKQorICAgICAgICAgICAgKmNvbnN1bWVkICs9IGNvbnZlcnRlZDsKKworICAgICAgICBzICs9IGNvbnZlcnRlZDsKKyAgICAgICAgc2l6ZSAtPSBjb252ZXJ0ZWQ7CisgICAgfSB3aGlsZSAoIWRvbmUpOworCisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHYpOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZU1CQ1MoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZUNvZGVQYWdlU3RhdGVmdWwoaW50IGNvZGVfcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCkKK3sKKyAgICByZXR1cm4gZGVjb2RlX2NvZGVfcGFnZV9zdGF0ZWZ1bChjb2RlX3BhZ2UsIHMsIHNpemUsIGVycm9ycywgY29uc3VtZWQpOworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlTUJDU1N0YXRlZnVsKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCkKK3sKKyAgICByZXR1cm4gZGVjb2RlX2NvZGVfcGFnZV9zdGF0ZWZ1bChDUF9BQ1AsIHMsIHNpemUsIGVycm9ycywgY29uc3VtZWQpOworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlTUJDUyhjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTUJDU1N0YXRlZnVsKHMsIHNpemUsIGVycm9ycywgTlVMTCk7CiB9CiAKK3N0YXRpYyBEV09SRAorZW5jb2RlX2NvZGVfcGFnZV9mbGFncyhVSU5UIGNvZGVfcGFnZSwgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIGlmIChjb2RlX3BhZ2UgPT0gQ1BfVVRGOCkgeworICAgICAgICBpZiAod2ludmVyLmR3TWFqb3JWZXJzaW9uID49IDYpCisgICAgICAgICAgICAvKiBDUF9VVEY4IHN1cHBvcnRzIFdDX0VSUl9JTlZBTElEX0NIQVJTIG9uIFdpbmRvd3MgVmlzdGEKKyAgICAgICAgICAgICAgIGFuZCBsYXRlciAqLworICAgICAgICAgICAgcmV0dXJuIFdDX0VSUl9JTlZBTElEX0NIQVJTOworICAgICAgICBlbHNlCisgICAgICAgICAgICAvKiBDUF9VVEY4IG9ubHkgc3VwcG9ydHMgZmxhZ3M9MCBvbiBXaW5kb3dzIG9sZGVyIHRoYW4gVmlzdGEgKi8KKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIGlmIChjb2RlX3BhZ2UgPT0gQ1BfVVRGNykgeworICAgICAgICAvKiBDUF9VVEY3IG9ubHkgc3VwcG9ydHMgZmxhZ3M9MCAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChlcnJvcnMgIT0gTlVMTCAmJiBzdHJjbXAoZXJyb3JzLCAicmVwbGFjZSIpID09IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIFdDX05PX0JFU1RfRklUX0NIQVJTOworICAgIH0KK30KKwogLyoKLSAqIENvbnZlcnQgdW5pY29kZSBpbnRvIHN0cmluZyBvYmplY3QgKE1CQ1MpLgotICogUmV0dXJucyAwIGlmIHN1Y2NlZWQsIC0xIG90aGVyd2lzZS4KKyAqIEVuY29kZSBhIFVuaWNvZGUgc3RyaW5nIHRvIGEgV2luZG93cyBjb2RlIHBhZ2UgaW50byBhIGJ5dGUgc3RyaW5nIGluIHN0cmljdAorICogbW9kZS4KKyAqCisgKiBSZXR1cm5zIGNvbnN1bWVkIGNoYXJhY3RlcnMgaWYgc3VjY2VlZCwgcmV0dXJucyAtMiBvbiBlbmNvZGUgZXJyb3IsIG9yIHJhaXNlCisgKiBhIFdpbmRvd3NFcnJvciBhbmQgcmV0dXJucyAtMSBvbiBvdGhlciBlcnJvci4KICAqLwotc3RhdGljIGludCBlbmNvZGVfbWJjcyhQeU9iamVjdCAqKnJlcHIsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnAsIC8qIHVuaWNvZGUgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsIC8qIHNpemUgb2YgdW5pY29kZSAqLwotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlcnJvcnMpCitzdGF0aWMgaW50CitlbmNvZGVfY29kZV9wYWdlX3N0cmljdChVSU5UIGNvZGVfcGFnZSwgUHlPYmplY3QgKipvdXRieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IG9mZnNldCwgaW50IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9ycykKIHsKICAgICBCT09MIHVzZWREZWZhdWx0Q2hhciA9IEZBTFNFOwotICAgIEJPT0wgKnB1c2VkRGVmYXVsdENoYXI7Ci0gICAgaW50IG1iY3NzaXplOwotICAgIFB5X3NzaXplX3QgbjsKKyAgICBCT09MICpwdXNlZERlZmF1bHRDaGFyID0gJnVzZWREZWZhdWx0Q2hhcjsKKyAgICBpbnQgb3V0c2l6ZTsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKLSAgICBEV09SRCBmbGFnczsKKyAgICB3Y2hhcl90ICpwOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBjb25zdCBEV09SRCBmbGFncyA9IGVuY29kZV9jb2RlX3BhZ2VfZmxhZ3MoY29kZV9wYWdlLCBOVUxMKTsKKyAgICBjaGFyICpvdXQ7CisgICAgLyogQ3JlYXRlIGEgc3Vic3RyaW5nIHNvIHRoYXQgd2UgY2FuIGdldCB0aGUgVVRGLTE2IHJlcHJlc2VudGF0aW9uCisgICAgICAgb2YganVzdCB0aGUgc2xpY2UgdW5kZXIgY29uc2lkZXJhdGlvbi4gKi8KKyAgICBQeU9iamVjdCAqc3Vic3RyaW5nOwogCi0gICAgYXNzZXJ0KHNpemUgPj0gMCk7CisgICAgYXNzZXJ0KGxlbiA+IDApOwogCi0gICAgLyogY2hlY2sgYW5kIGhhbmRsZSAnZXJyb3JzJyBhcmcgKi8KLSAgICBpZiAoZXJyb3JzPT1OVUxMIHx8IHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKT09MCkgewotICAgICAgICBmbGFncyA9IFdDX05PX0JFU1RfRklUX0NIQVJTOworICAgIGlmIChjb2RlX3BhZ2UgIT0gQ1BfVVRGOCAmJiBjb2RlX3BhZ2UgIT0gQ1BfVVRGNykKICAgICAgICAgcHVzZWREZWZhdWx0Q2hhciA9ICZ1c2VkRGVmYXVsdENoYXI7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAoZXJyb3JzLCAicmVwbGFjZSIpPT0wKSB7Ci0gICAgICAgIGZsYWdzID0gMDsKKyAgICBlbHNlCiAgICAgICAgIHB1c2VkRGVmYXVsdENoYXIgPSBOVUxMOwotICAgIH0gZWxzZSB7Ci0gICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAibWJjcyBlbmNvZGluZyBkb2VzIG5vdCBzdXBwb3J0IGVycm9ycz0nJXMnIiwKLSAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOwotICAgICAgICAgcmV0dXJuIC0xOworCisgICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX1N1YnN0cmluZyh1bmljb2RlLCBvZmZzZXQsIG9mZnNldCtsZW4pOworICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHAgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShzdWJzdHJpbmcsICZzaXplKTsKKyAgICBpZiAocCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgLyogRmlyc3QgZ2V0IHRoZSBzaXplIG9mIHRoZSByZXN1bHQgKi8KLSAgICBpZiAoc2l6ZSA+IDApIHsKLSAgICAgICAgbWJjc3NpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgZmxhZ3MsIHAsIHNpemUsIE5VTEwsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBwdXNlZERlZmF1bHRDaGFyKTsKLSAgICAgICAgaWYgKG1iY3NzaXplID09IDApIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lKDAsIE5VTEwpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIC8qIElmIHdlIHVzZWQgYSBkZWZhdWx0IGNoYXIsIHRoZW4gd2UgZmFpbGVkISAqLwotICAgICAgICBpZiAocHVzZWREZWZhdWx0Q2hhciAmJiAqcHVzZWREZWZhdWx0Q2hhcikKLSAgICAgICAgICAgIGdvdG8gbWJjc19lbmNvZGVfZXJyb3I7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbWJjc3NpemUgPSAwOworICAgIG91dHNpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKGNvZGVfcGFnZSwgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCwgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHB1c2VkRGVmYXVsdENoYXIpOworICAgIGlmIChvdXRzaXplIDw9IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgLyogSWYgd2UgdXNlZCBhIGRlZmF1bHQgY2hhciwgdGhlbiB3ZSBmYWlsZWQhICovCisgICAgaWYgKHB1c2VkRGVmYXVsdENoYXIgJiYgKnB1c2VkRGVmYXVsdENoYXIpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgICAgIHJldHVybiAtMjsKICAgICB9CiAKLSAgICBpZiAoKnJlcHIgPT0gTlVMTCkgeworICAgIGlmICgqb3V0Ynl0ZXMgPT0gTlVMTCkgewogICAgICAgICAvKiBDcmVhdGUgc3RyaW5nIG9iamVjdCAqLwotICAgICAgICAqcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbWJjc3NpemUpOwotICAgICAgICBpZiAoKnJlcHIgPT0gTlVMTCkKKyAgICAgICAgKm91dGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBvdXRzaXplKTsKKyAgICAgICAgaWYgKCpvdXRieXRlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgbiA9IDA7CisgICAgICAgIH0KKyAgICAgICAgb3V0ID0gUHlCeXRlc19BU19TVFJJTkcoKm91dGJ5dGVzKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIEV4dGVuZCBzdHJpbmcgb2JqZWN0ICovCi0gICAgICAgIG4gPSBQeUJ5dGVzX1NpemUoKnJlcHIpOwotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKHJlcHIsIG4gKyBtYmNzc2l6ZSkgPCAwKQorICAgICAgICBjb25zdCBQeV9zc2l6ZV90IG4gPSBQeUJ5dGVzX1NpemUoKm91dGJ5dGVzKTsKKyAgICAgICAgaWYgKG91dHNpemUgPiBQWV9TU0laRV9UX01BWCAtIG4pIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKG91dGJ5dGVzLCBuICsgb3V0c2l6ZSkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBvdXQgPSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpICsgbjsKICAgICB9CiAKICAgICAvKiBEbyB0aGUgY29udmVyc2lvbiAqLwotICAgIGlmIChzaXplID4gMCkgewotICAgICAgICBjaGFyICpzID0gUHlCeXRlc19BU19TVFJJTkcoKnJlcHIpICsgbjsKLSAgICAgICAgaWYgKDAgPT0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIGZsYWdzLCBwLCBzaXplLCBzLCBtYmNzc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBwdXNlZERlZmF1bHRDaGFyKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoMCwgTlVMTCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHB1c2VkRGVmYXVsdENoYXIgJiYgKnB1c2VkRGVmYXVsdENoYXIpCi0gICAgICAgICAgICBnb3RvIG1iY3NfZW5jb2RlX2Vycm9yOwotICAgIH0KKyAgICBvdXRzaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShjb2RlX3BhZ2UsIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAsIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0LCBvdXRzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHB1c2VkRGVmYXVsdENoYXIpOworICAgIFB5X0NMRUFSKHN1YnN0cmluZyk7CisgICAgaWYgKG91dHNpemUgPD0gMCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAocHVzZWREZWZhdWx0Q2hhciAmJiAqcHVzZWREZWZhdWx0Q2hhcikKKyAgICAgICAgcmV0dXJuIC0yOwogICAgIHJldHVybiAwOwogCi1tYmNzX2VuY29kZV9lcnJvcjoKLSAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsICJtYmNzIiwgcCwgc2l6ZSwgMCwgMCwgImludmFsaWQgY2hhcmFjdGVyIik7Ci0gICAgUHlfWERFQ1JFRihleGMpOworZXJyb3I6CisgICAgUHlfWERFQ1JFRihzdWJzdHJpbmcpOworICAgIGlmIChHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9OT19VTklDT0RFX1RSQU5TTEFUSU9OKQorICAgICAgICByZXR1cm4gLTI7CisgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CiAgICAgcmV0dXJuIC0xOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZU1CQ1MoY29uc3QgUHlfVU5JQ09ERSAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLyoKKyAqIEVuY29kZSBhIFVuaWNvZGUgc3RyaW5nIHRvIGEgV2luZG93cyBjb2RlIHBhZ2UgaW50byBhIGJ5dGUgc3RyaW5nIHVzaW5nIGEKKyAqIGVycm9yIGhhbmRsZXIuCisgKgorICogUmV0dXJucyBjb25zdW1lZCBjaGFyYWN0ZXJzIGlmIHN1Y2NlZWQsIG9yIHJhaXNlIGEgV2luZG93c0Vycm9yIGFuZCByZXR1cm5zCisgKiAtMSBvbiBvdGhlciBlcnJvci4KKyAqLworc3RhdGljIGludAorZW5jb2RlX2NvZGVfcGFnZV9lcnJvcnMoVUlOVCBjb2RlX3BhZ2UsIFB5T2JqZWN0ICoqb3V0Ynl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCB1bmljb2RlX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaW5zaXplLCBjb25zdCBjaGFyKiBlcnJvcnMpCiB7Ci0gICAgUHlPYmplY3QgKnJlcHIgPSBOVUxMOwotICAgIGludCByZXQ7CisgICAgY29uc3QgRFdPUkQgZmxhZ3MgPSBlbmNvZGVfY29kZV9wYWdlX2ZsYWdzKGNvZGVfcGFnZSwgZXJyb3JzKTsKKyAgICBQeV9zc2l6ZV90IHBvcyA9IHVuaWNvZGVfb2Zmc2V0OworICAgIFB5X3NzaXplX3QgZW5kaW4gPSB1bmljb2RlX29mZnNldCArIGluc2l6ZTsKKyAgICAvKiBJZGVhbGx5LCB3ZSBzaG91bGQgZ2V0IHJlYXNvbiBmcm9tIEZvcm1hdE1lc3NhZ2UuIFRoaXMgaXMgdGhlIFdpbmRvd3MKKyAgICAgICAyMDAwIEVuZ2xpc2ggdmVyc2lvbiBvZiB0aGUgbWVzc2FnZS4gKi8KKyAgICBjb25zdCBjaGFyICpyZWFzb24gPSAiaW52YWxpZCBjaGFyYWN0ZXIiOworICAgIC8qIDQ9bWF4aW11bSBsZW5ndGggb2YgYSBVVEYtOCBzZXF1ZW5jZSAqLworICAgIGNoYXIgYnVmZmVyWzRdOworICAgIEJPT0wgdXNlZERlZmF1bHRDaGFyID0gRkFMU0UsICpwdXNlZERlZmF1bHRDaGFyOworICAgIFB5X3NzaXplX3Qgb3V0c2l6ZTsKKyAgICBjaGFyICpvdXQ7CisgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmVuY29kaW5nX29iaiA9IE5VTEw7CisgICAgY2hhciAqZW5jb2Rpbmc7CisgICAgUHlfc3NpemVfdCBuZXdwb3MsIG5ld291dHNpemU7CisgICAgUHlPYmplY3QgKnJlcDsKKyAgICBpbnQgcmV0ID0gLTE7CiAKLSNpZmRlZiBORUVEX1JFVFJZCi0gIHJldHJ5OgotICAgIGlmIChzaXplID4gSU5UX01BWCkKLSAgICAgICAgcmV0ID0gZW5jb2RlX21iY3MoJnJlcHIsIHAsIElOVF9NQVgsIGVycm9ycyk7CisgICAgYXNzZXJ0KGluc2l6ZSA+IDApOworCisgICAgZW5jb2RpbmcgPSBjb2RlX3BhZ2VfbmFtZShjb2RlX3BhZ2UsICZlbmNvZGluZ19vYmopOworICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoZXJyb3JzID09IE5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApIHsKKyAgICAgICAgLyogVGhlIGxhc3QgZXJyb3Igd2FzIEVSUk9SX05PX1VOSUNPREVfVFJBTlNMQVRJT04sCisgICAgICAgICAgIHRoZW4gd2UgcmFpc2UgYSBVbmljb2RlRW5jb2RlRXJyb3IuICovCisgICAgICAgIG1ha2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgdW5pY29kZSwgMCwgMCwgcmVhc29uKTsKKyAgICAgICAgaWYgKGV4YyAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeUNvZGVjX1N0cmljdEVycm9ycyhleGMpOworICAgICAgICAgICAgUHlfREVDUkVGKGV4Yyk7CisgICAgICAgIH0KKyAgICAgICAgUHlfWERFQ1JFRihlbmNvZGluZ19vYmopOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKGNvZGVfcGFnZSAhPSBDUF9VVEY4ICYmIGNvZGVfcGFnZSAhPSBDUF9VVEY3KQorICAgICAgICBwdXNlZERlZmF1bHRDaGFyID0gJnVzZWREZWZhdWx0Q2hhcjsKICAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgcmV0ID0gZW5jb2RlX21iY3MoJnJlcHIsIHAsIChpbnQpc2l6ZSwgZXJyb3JzKTsKKyAgICAgICAgcHVzZWREZWZhdWx0Q2hhciA9IE5VTEw7CiAKLSAgICBpZiAocmV0IDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHJlcHIpOworICAgIGlmIChQeV9BUlJBWV9MRU5HVEgoYnVmZmVyKSA+IFBZX1NTSVpFX1RfTUFYIC8gaW5zaXplKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIG91dHNpemUgPSBpbnNpemUgKiBQeV9BUlJBWV9MRU5HVEgoYnVmZmVyKTsKKworICAgIGlmICgqb3V0Ynl0ZXMgPT0gTlVMTCkgeworICAgICAgICAvKiBDcmVhdGUgc3RyaW5nIG9iamVjdCAqLworICAgICAgICAqb3V0Ynl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG91dHNpemUpOworICAgICAgICBpZiAoKm91dGJ5dGVzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBvdXQgPSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogRXh0ZW5kIHN0cmluZyBvYmplY3QgKi8KKyAgICAgICAgUHlfc3NpemVfdCBuID0gUHlCeXRlc19TaXplKCpvdXRieXRlcyk7CisgICAgICAgIGlmIChuID4gUFlfU1NJWkVfVF9NQVggLSBvdXRzaXplKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKG91dGJ5dGVzLCBuICsgb3V0c2l6ZSkgPCAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgb3V0ID0gUHlCeXRlc19BU19TVFJJTkcoKm91dGJ5dGVzKSArIG47CisgICAgfQorCisgICAgLyogRW5jb2RlIHRoZSBzdHJpbmcgY2hhcmFjdGVyIHBlciBjaGFyYWN0ZXIgKi8KKyAgICB3aGlsZSAocG9zIDwgZW5kaW4pCisgICAgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlLCBwb3MpOworICAgICAgICB3Y2hhcl90IGNoYXJzWzJdOworICAgICAgICBpbnQgY2hhcnNpemU7CisgICAgICAgIGlmIChjaCA8IDB4MTAwMDApIHsKKyAgICAgICAgICAgIGNoYXJzWzBdID0gKHdjaGFyX3QpY2g7CisgICAgICAgICAgICBjaGFyc2l6ZSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjaCAtPSAweDEwMDAwOworICAgICAgICAgICAgY2hhcnNbMF0gPSAweGQ4MDAgKyAoY2ggPj4gMTApOworICAgICAgICAgICAgY2hhcnNbMV0gPSAweGRjMDAgKyAoY2ggJiAweDNmZik7CisgICAgICAgICAgICBjaGFyc2l6ZSA9IDI7CisgICAgICAgIH0KKworICAgICAgICBvdXRzaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShjb2RlX3BhZ2UsIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFycywgY2hhcnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciwgUHlfQVJSQVlfTEVOR1RIKGJ1ZmZlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHB1c2VkRGVmYXVsdENoYXIpOworICAgICAgICBpZiAob3V0c2l6ZSA+IDApIHsKKyAgICAgICAgICAgIGlmIChwdXNlZERlZmF1bHRDaGFyID09IE5VTEwgfHwgISgqcHVzZWREZWZhdWx0Q2hhcikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcG9zKys7CisgICAgICAgICAgICAgICAgbWVtY3B5KG91dCwgYnVmZmVyLCBvdXRzaXplKTsKKyAgICAgICAgICAgICAgICBvdXQgKz0gb3V0c2l6ZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChHZXRMYXN0RXJyb3IoKSAhPSBFUlJPUl9OT19VTklDT0RFX1RSQU5TTEFUSU9OKSB7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICByZXAgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKKyAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwgZW5jb2RpbmcsIHJlYXNvbiwKKyAgICAgICAgICAgICAgICAgIHVuaWNvZGUsICZleGMsCisgICAgICAgICAgICAgICAgICBwb3MsIHBvcyArIDEsICZuZXdwb3MpOworICAgICAgICBpZiAocmVwID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBwb3MgPSBuZXdwb3M7CisKKyAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkgeworICAgICAgICAgICAgb3V0c2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVwKTsKKyAgICAgICAgICAgIGlmIChvdXRzaXplICE9IDEpIHsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldCA9IG91dCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKCpvdXRieXRlcyk7CisgICAgICAgICAgICAgICAgbmV3b3V0c2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoKm91dGJ5dGVzKSArIChvdXRzaXplIC0gMSk7CisgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZShvdXRieXRlcywgbmV3b3V0c2l6ZSkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXApOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBvdXQgPSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpICsgb2Zmc2V0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVtY3B5KG91dCwgUHlCeXRlc19BU19TVFJJTkcocmVwKSwgb3V0c2l6ZSk7CisgICAgICAgICAgICBvdXQgKz0gb3V0c2l6ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICAgICAgICAgIHZvaWQgKmRhdGE7CisKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwKSA9PSAtMSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXApOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG91dHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXApOworICAgICAgICAgICAgaWYgKG91dHNpemUgIT0gMSkgeworICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb2Zmc2V0ID0gb3V0IC0gUHlCeXRlc19BU19TVFJJTkcoKm91dGJ5dGVzKTsKKyAgICAgICAgICAgICAgICBuZXdvdXRzaXplID0gUHlCeXRlc19HRVRfU0laRSgqb3V0Ynl0ZXMpICsgKG91dHNpemUgLSAxKTsKKyAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKG91dGJ5dGVzLCBuZXdvdXRzaXplKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcCk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKCpvdXRieXRlcykgKyBvZmZzZXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocmVwKTsKKyAgICAgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShyZXApOworICAgICAgICAgICAgZm9yIChpPTA7IGkgPCBvdXRzaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgICAgICAgICAgaWYgKGNoID4gMTI3KSB7CisgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCB1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zLCBwb3MgKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBlbmNvZGUgZXJyb3IgaGFuZGxlciByZXN1bHQgdG8gQVNDSUkiKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcCk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICpvdXQgPSAodW5zaWduZWQgY2hhciljaDsKKyAgICAgICAgICAgICAgICBvdXQrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYocmVwKTsKKyAgICB9CisgICAgLyogd3JpdGUgYSBOVUwgYnl0ZSAqLworICAgICpvdXQgPSAwOworICAgIG91dHNpemUgPSBvdXQgLSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpOworICAgIGFzc2VydChvdXRzaXplIDw9IFB5Qnl0ZXNfR0VUX1NJWkUoKm91dGJ5dGVzKSk7CisgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZShvdXRieXRlcywgb3V0c2l6ZSkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHJldCA9IDA7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoZW5jb2Rpbmdfb2JqKTsKKyAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihleGMpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitlbmNvZGVfY29kZV9wYWdlKGludCBjb2RlX3BhZ2UsCisgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlPYmplY3QgKm91dGJ5dGVzID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IG9mZnNldDsKKyAgICBpbnQgY2h1bmtfbGVuLCByZXQsIGRvbmU7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKworICAgIGlmIChjb2RlX3BhZ2UgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBjb2RlIHBhZ2UgbnVtYmVyIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotI2lmZGVmIE5FRURfUkVUUlkKLSAgICBpZiAoc2l6ZSA+IElOVF9NQVgpIHsKLSAgICAgICAgcCArPSBJTlRfTUFYOwotICAgICAgICBzaXplIC09IElOVF9NQVg7Ci0gICAgICAgIGdvdG8gcmV0cnk7Ci0gICAgfQotI2VuZGlmCisgICAgaWYgKGxlbiA9PSAwKQorICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKIAotICAgIHJldHVybiByZXByOworICAgIG9mZnNldCA9IDA7CisgICAgZG8KKyAgICB7CisjaWZkZWYgTkVFRF9SRVRSWQorICAgICAgICAvKiBVVEYtMTYgZW5jb2RpbmcgbWF5IGRvdWJsZSB0aGUgc2l6ZSwgc28gdXNlIG9ubHkgSU5UX01BWC8yCisgICAgICAgICAgIGNodW5rcy4gKi8KKyAgICAgICAgaWYgKGxlbiA+IElOVF9NQVgvMikgeworICAgICAgICAgICAgY2h1bmtfbGVuID0gSU5UX01BWC8yOworICAgICAgICAgICAgZG9uZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHsKKyAgICAgICAgICAgIGNodW5rX2xlbiA9IChpbnQpbGVuOworICAgICAgICAgICAgZG9uZSA9IDE7CisgICAgICAgIH0KKworICAgICAgICByZXQgPSBlbmNvZGVfY29kZV9wYWdlX3N0cmljdChjb2RlX3BhZ2UsICZvdXRieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgb2Zmc2V0LCBjaHVua19sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7CisgICAgICAgIGlmIChyZXQgPT0gLTIpCisgICAgICAgICAgICByZXQgPSBlbmNvZGVfY29kZV9wYWdlX2Vycm9ycyhjb2RlX3BhZ2UsICZvdXRieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX2xlbiwgZXJyb3JzKTsKKyAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYob3V0Ynl0ZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBvZmZzZXQgKz0gY2h1bmtfbGVuOworICAgICAgICBsZW4gLT0gY2h1bmtfbGVuOworICAgIH0gd2hpbGUgKCFkb25lKTsKKworICAgIHJldHVybiBvdXRieXRlczsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc01CQ1NTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRW5jb2RlTUJDUyhjb25zdCBQeV9VTklDT0RFICpwLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIFB5T2JqZWN0ICp1bmljb2RlLCAqcmVzOworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocCwgc2l6ZSk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzID0gZW5jb2RlX2NvZGVfcGFnZShDUF9BQ1AsIHVuaWNvZGUsIGVycm9ycyk7CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIHJldHVybiByZXM7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShpbnQgY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICByZXR1cm4gZW5jb2RlX2NvZGVfcGFnZShjb2RlX3BhZ2UsIHVuaWNvZGUsIGVycm9ycyk7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc01CQ1NTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCiB7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTUJDUyhQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgdW5pY29kZSwgTlVMTCk7CiB9CiAKICN1bmRlZiBORUVEX1JFVFJZCiAKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCisjZW5kaWYgLyogSEFWRV9NQkNTICovCiAKIC8qIC0tLSBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZUNoYXJtYXAoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZUNoYXJtYXAoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7CiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgUHlfc3NpemVfdCBvdXRwb3M7CiAgICAgY29uc3QgY2hhciAqZTsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnY7Ci0gICAgUHlfVU5JQ09ERSAqcDsKKyAgICBQeU9iamVjdCAqdjsKICAgICBQeV9zc2l6ZV90IGV4dHJhY2hhcnMgPSAwOwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgIFB5X1VOSUNPREUgKm1hcHN0cmluZyA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBtYXBsZW4gPSAwOwogCiAgICAgLyogRGVmYXVsdCB0byBMYXRpbi0xICovCiAgICAgaWYgKG1hcHBpbmcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMYXRpbjEocywgc2l6ZSwgZXJyb3JzKTsKIAotICAgIHYgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKKyAgICB2ID0gUHlVbmljb2RlX05ldyhzaXplLCAxMjcpOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7CisgICAgICAgIHJldHVybiB2OworICAgIG91dHBvcyA9IDA7CiAgICAgZSA9IHMgKyBzaXplOwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChtYXBwaW5nKSkgewotICAgICAgICBtYXBzdHJpbmcgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShtYXBwaW5nKTsKLSAgICAgICAgbWFwbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKG1hcHBpbmcpOworICAgICAgICBQeV9zc2l6ZV90IG1hcGxlbjsKKyAgICAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBtYXBraW5kOworICAgICAgICB2b2lkICptYXBkYXRhOworICAgICAgICBQeV9VQ1M0IHg7CisKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShtYXBwaW5nKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIG1hcGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG1hcHBpbmcpOworICAgICAgICBtYXBkYXRhID0gUHlVbmljb2RlX0RBVEEobWFwcGluZyk7CisgICAgICAgIG1hcGtpbmQgPSBQeVVuaWNvZGVfS0lORChtYXBwaW5nKTsKICAgICAgICAgd2hpbGUgKHMgPCBlKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNoID0gKnM7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIHggPSAweGZmZmU7IC8qIGlsbGVnYWwgdmFsdWUgKi8KKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY2g7CisgICAgICAgICAgICBpZiAobWFwa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCAmJiBtYXBsZW4gPj0gMjU2KSB7CisgICAgICAgICAgICAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBvdXRraW5kID0gUHlVbmljb2RlX0tJTkQodik7CisgICAgICAgICAgICAgICAgaWYgKG91dGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3V0ZGF0YSA9IFB5VW5pY29kZV9EQVRBKHYpOworICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodik7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChzIDwgZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjaCA9ICpzOworICAgICAgICAgICAgICAgICAgICAgICAgeCA9IFB5VW5pY29kZV9SRUFEKFB5VW5pY29kZV8yQllURV9LSU5ELCBtYXBkYXRhLCBjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeCA+IG1heGNoYXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfMUJZVEVfS0lORCwgb3V0ZGF0YSwgb3V0cG9zKyssIHgpOworICAgICAgICAgICAgICAgICAgICAgICAgKytzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChvdXRraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgICAgICAgICAgICAgIHZvaWQgKm91dGRhdGEgPSBQeVVuaWNvZGVfREFUQSh2KTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHMgPCBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNoID0gKnM7CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gUHlVbmljb2RlX1JFQUQoUHlVbmljb2RlXzJCWVRFX0tJTkQsIG1hcGRhdGEsIGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4ID09IDB4RkZGRSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIEVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV8yQllURV9LSU5ELCBvdXRkYXRhLCBvdXRwb3MrKywgeCk7CisgICAgICAgICAgICAgICAgICAgICAgICArK3M7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgY2ggPSAqczsKIAogICAgICAgICAgICAgaWYgKGNoIDwgbWFwbGVuKQotICAgICAgICAgICAgICAgIHggPSBtYXBzdHJpbmdbY2hdOwotCi0gICAgICAgICAgICBpZiAoeCA9PSAweGZmZmUpIHsKKyAgICAgICAgICAgICAgICB4ID0gUHlVbmljb2RlX1JFQUQobWFwa2luZCwgbWFwZGF0YSwgY2gpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHggPSAweGZmZmU7IC8qIGludmFsaWQgdmFsdWUgKi8KK0Vycm9yOgorICAgICAgICAgICAgaWYgKHggPT0gMHhmZmZlKQorICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8qIHVuZGVmaW5lZCBtYXBwaW5nICovCi0gICAgICAgICAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7CiAgICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzE7CiAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJtYXAiLCAiY2hhcmFjdGVyIG1hcHMgdG8gPHVuZGVmaW5lZD4iLAogICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MpKSB7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcCsrID0geDsKKworICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdiwgJm91dHBvcywgeCkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICsrczsKICAgICAgICAgfQogICAgIH0KQEAgLTUyMzYsNjggKzc1MDMsNTkgQEAKICAgICAgICAgICAgICAgICBsb25nIHZhbHVlID0gUHlMb25nX0FTX0xPTkcoeCk7CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IDB4RkZGRSkKICAgICAgICAgICAgICAgICAgICAgZ290byBVbmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IDB4MTBGRkZGKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhcmFjdGVyIG1hcHBpbmcgbXVzdCBiZSBpbiByYW5nZSgweDExMDAwMCkiKTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID4gTUFYX1VOSUNPREUpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFyYWN0ZXIgbWFwcGluZyBtdXN0IGJlIGluIHJhbmdlKDB4JWx4KSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylNQVhfVU5JQ09ERSArIDEpOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoeCk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAgICAgaWYgKHZhbHVlID4gMHhGRkZGKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIHNlZSB0aGUgY29kZSBmb3IgMS1uIG1hcHBpbmcgYmVsb3cgKi8KLSAgICAgICAgICAgICAgICAgICAgaWYgKGV4dHJhY2hhcnMgPCAyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiByZXNpemUgZmlyc3QgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb2xkcG9zID0gcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuZWVkZWQgPSAxMCAtIGV4dHJhY2hhcnM7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYWNoYXJzICs9IG5lZWRlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIFhYWCBvdmVyZmxvdyBkZXRlY3Rpb24gbWlzc2luZyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh2KSArIG5lZWRlZCkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSArIG9sZHBvczsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB2YWx1ZSAtPSAweDEwMDAwOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gMHhEODAwIHwgKHZhbHVlID4+IDEwKTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IDB4REMwMCB8ICh2YWx1ZSAmIDB4M0ZGKTsKLSAgICAgICAgICAgICAgICAgICAgZXh0cmFjaGFycyAtPSAyOworICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnYsICZvdXRwb3MsIHZhbHVlKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHgpOworICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSl2YWx1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayh4KSkgewotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgdGFyZ2V0c2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRSh4KTsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHRhcmdldHNpemU7CisKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHgpID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih4KTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0YXJnZXRzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoeCk7CiAKICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0c2l6ZSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIDEtMSBtYXBwaW5nICovCi0gICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgdmFsdWUgPSAqUHlVbmljb2RlX0FTX1VOSUNPREUoeCk7CisgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgdmFsdWUgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHgsIDApOwogICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gMHhGRkZFKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBVbmRlZmluZWQ7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdiwgJm91dHBvcywgdmFsdWUpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHgpOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRhcmdldHNpemUgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIDEtbiBtYXBwaW5nICovCiAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRzaXplID4gZXh0cmFjaGFycykgewogICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVzaXplIGZpcnN0ICovCi0gICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9sZHBvcyA9IHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmVlZGVkID0gKHRhcmdldHNpemUgLSBleHRyYWNoYXJzKSArIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFyZ2V0c2l6ZSA8PCAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY2hhcnMgKz0gbmVlZGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgLyogWFhYIG92ZXJmbG93IGRldGVjdGlvbiBtaXNzaW5nICovCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHYpICsgbmVlZGVkKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3Jlc2l6ZSgmdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KSArIG5lZWRlZCkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodikgKyBvbGRwb3M7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERSh4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldHNpemUpOwotICAgICAgICAgICAgICAgICAgICBwICs9IHRhcmdldHNpemU7CisgICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3dpZGVuKCZ2LCBvdXRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh4KSkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoeCk7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKHYsIG91dHBvcywgeCwgMCwgdGFyZ2V0c2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIG91dHBvcyArPSB0YXJnZXRzaXplOwogICAgICAgICAgICAgICAgICAgICBleHRyYWNoYXJzIC09IHRhcmdldHNpemU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8qIDEtMCBtYXBwaW5nOiBza2lwIHRoZSBjaGFyYWN0ZXIgKi8KQEAgLTUzMTUsMjQgKzc1NzMsMjIgQEAKIFVuZGVmaW5lZDoKICAgICAgICAgICAgIC8qIHVuZGVmaW5lZCBtYXBwaW5nICovCiAgICAgICAgICAgICBQeV9YREVDUkVGKHgpOwotICAgICAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKICAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcysxOwogICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICJjaGFybWFwIiwgImNoYXJhY3RlciBtYXBzIHRvIDx1bmRlZmluZWQ+IiwKICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcywgJnApKSB7CisgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zKSkgewogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBpZiAocCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpIDwgUHlVbmljb2RlX0dFVF9TSVpFKHYpKQotICAgICAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnYsIHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkgPCAwKQotICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgIGlmICh1bmljb2RlX3Jlc2l6ZSgmdiwgb3V0cG9zKSA8IDApCisgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiAoUHlPYmplY3QgKil2OworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh2KTsKIAogICBvbkVycm9yOgogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKQEAgLTUzNDMsNyArNzU5OSw3IEBACiAKIC8qIENoYXJtYXAgZW5jb2Rpbmc6IHRoZSBsb29rdXAgdGFibGUgKi8KIAotc3RydWN0IGVuY29kaW5nX21hcHsKK3N0cnVjdCBlbmNvZGluZ19tYXAgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICB1bnNpZ25lZCBjaGFyIGxldmVsMVszMl07CiAgICAgaW50IGNvdW50MiwgY291bnQzOwpAQCAtNTQxNyw3ICs3NjczLDYgQEAKIFB5T2JqZWN0KgogUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAoUHlPYmplY3QqIHN0cmluZykKIHsKLSAgICBQeV9VTklDT0RFICpkZWNvZGU7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBzdHJ1Y3QgZW5jb2RpbmdfbWFwICptcmVzdWx0OwogICAgIGludCBpOwpAQCAtNTQyNiwzNSArNzY4MSwzOSBAQAogICAgIHVuc2lnbmVkIGNoYXIgbGV2ZWwyWzUxMl07CiAgICAgdW5zaWduZWQgY2hhciAqbWxldmVsMSwgKm1sZXZlbDIsICptbGV2ZWwzOwogICAgIGludCBjb3VudDIgPSAwLCBjb3VudDMgPSAwOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisgICAgUHlfVUNTNCBjaDsKIAotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN0cmluZykgfHwgUHlVbmljb2RlX0dldFNpemUoc3RyaW5nKSAhPSAyNTYpIHsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdHJpbmcpIHx8ICFQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBkZWNvZGUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHJpbmcpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHJpbmcpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyk7CisgICAgbGVuZ3RoID0gUHlfTUlOKGxlbmd0aCwgMjU2KTsKICAgICBtZW1zZXQobGV2ZWwxLCAweEZGLCBzaXplb2YgbGV2ZWwxKTsKICAgICBtZW1zZXQobGV2ZWwyLCAweEZGLCBzaXplb2YgbGV2ZWwyKTsKIAogICAgIC8qIElmIHRoZXJlIGlzbid0IGEgb25lLXRvLW9uZSBtYXBwaW5nIG9mIE5VTEwgdG8gXDAsCiAgICAgICAgb3IgaWYgdGhlcmUgYXJlIG5vbi1CTVAgY2hhcmFjdGVycywgd2UgbmVlZCB0byB1c2UKICAgICAgICBhIG1hcHBpbmcgZGljdGlvbmFyeS4gKi8KLSAgICBpZiAoZGVjb2RlWzBdICE9IDApCisgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApICE9IDApCiAgICAgICAgIG5lZWRfZGljdCA9IDE7Ci0gICAgZm9yIChpID0gMTsgaSA8IDI1NjsgaSsrKSB7CisgICAgZm9yIChpID0gMTsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgIGludCBsMSwgbDI7Ci0gICAgICAgIGlmIChkZWNvZGVbaV0gPT0gMAotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgfHwgZGVjb2RlW2ldID4gMHhGRkZGCi0jZW5kaWYKLSAgICAgICAgICAgICkgeworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBpZiAoY2ggPT0gMCB8fCBjaCA+IDB4RkZGRikgewogICAgICAgICAgICAgbmVlZF9kaWN0ID0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlmIChkZWNvZGVbaV0gPT0gMHhGRkZFKQorICAgICAgICBpZiAoY2ggPT0gMHhGRkZFKQogICAgICAgICAgICAgLyogdW5tYXBwZWQgY2hhcmFjdGVyICovCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbDEgPSBkZWNvZGVbaV0gPj4gMTE7Ci0gICAgICAgIGwyID0gZGVjb2RlW2ldID4+IDc7CisgICAgICAgIGwxID0gY2ggPj4gMTE7CisgICAgICAgIGwyID0gY2ggPj4gNzsKICAgICAgICAgaWYgKGxldmVsMVtsMV0gPT0gMHhGRikKICAgICAgICAgICAgIGxldmVsMVtsMV0gPSBjb3VudDIrKzsKICAgICAgICAgaWYgKGxldmVsMltsMl0gPT0gMHhGRikKQEAgLTU0NjksOSArNzcyOCw4IEBACiAgICAgICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZTsKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7Ci0gICAgICAgICAgICBrZXkgPSB2YWx1ZSA9IE5VTEw7Ci0gICAgICAgICAgICBrZXkgPSBQeUxvbmdfRnJvbUxvbmcoZGVjb2RlW2ldKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBrZXkgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOwogICAgICAgICAgICAgdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoaSk7CiAgICAgICAgICAgICBpZiAoIWtleSB8fCAhdmFsdWUpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQxOwpAQCAtNTUwNCwxNyArNzc2MiwxOCBAQAogICAgIG1lbXNldChtbGV2ZWwyLCAweEZGLCAxNipjb3VudDIpOwogICAgIG1lbXNldChtbGV2ZWwzLCAwLCAxMjgqY291bnQzKTsKICAgICBjb3VudDMgPSAwOwotICAgIGZvciAoaSA9IDE7IGkgPCAyNTY7IGkrKykgeworICAgIGZvciAoaSA9IDE7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICBpbnQgbzEsIG8yLCBvMywgaTIsIGkzOwotICAgICAgICBpZiAoZGVjb2RlW2ldID09IDB4RkZGRSkKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBpZiAoY2ggPT0gMHhGRkZFKQogICAgICAgICAgICAgLyogdW5tYXBwZWQgY2hhcmFjdGVyICovCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbzEgPSBkZWNvZGVbaV0+PjExOwotICAgICAgICBvMiA9IChkZWNvZGVbaV0+PjcpICYgMHhGOworICAgICAgICBvMSA9IGNoPj4xMTsKKyAgICAgICAgbzIgPSAoY2g+PjcpICYgMHhGOwogICAgICAgICBpMiA9IDE2Km1sZXZlbDFbbzFdICsgbzI7CiAgICAgICAgIGlmIChtbGV2ZWwyW2kyXSA9PSAweEZGKQogICAgICAgICAgICAgbWxldmVsMltpMl0gPSBjb3VudDMrKzsKLSAgICAgICAgbzMgPSBkZWNvZGVbaV0gJiAweDdGOworICAgICAgICBvMyA9IGNoICYgMHg3RjsKICAgICAgICAgaTMgPSAxMjgqbWxldmVsMltpMl0gKyBvMzsKICAgICAgICAgbWxldmVsM1tpM10gPSBpOwogICAgIH0KQEAgLTU1MjIsNyArNzc4MSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLWVuY29kaW5nX21hcF9sb29rdXAoUHlfVU5JQ09ERSBjLCBQeU9iamVjdCAqbWFwcGluZykKK2VuY29kaW5nX21hcF9sb29rdXAoUHlfVUNTNCBjLCBQeU9iamVjdCAqbWFwcGluZykKIHsKICAgICBzdHJ1Y3QgZW5jb2RpbmdfbWFwICptYXAgPSAoc3RydWN0IGVuY29kaW5nX21hcCopbWFwcGluZzsKICAgICBpbnQgbDEgPSBjPj4xMTsKQEAgLTU1MzAsMTEgKzc3ODksOCBAQAogICAgIGludCBsMyA9IGMgJiAweDdGOwogICAgIGludCBpOwogCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgaWYgKGMgPiAweEZGRkYpIHsKKyAgICBpZiAoYyA+IDB4RkZGRikKICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSNlbmRpZgogICAgIGlmIChjID09IDApCiAgICAgICAgIHJldHVybiAwOwogICAgIC8qIGxldmVsIDEqLwpAQCAtNTU1OCw3ICs3ODE0LDggQEAKIC8qIExvb2t1cCB0aGUgY2hhcmFjdGVyIGNoIGluIHRoZSBtYXBwaW5nLiBJZiB0aGUgY2hhcmFjdGVyCiAgICBjYW4ndCBiZSBmb3VuZCwgUHlfTm9uZSBpcyByZXR1cm5lZCAob3IgTlVMTCwgaWYgYW5vdGhlcgogICAgZXJyb3Igb2NjdXJyZWQpLiAqLwotc3RhdGljIFB5T2JqZWN0ICpjaGFybWFwZW5jb2RlX2xvb2t1cChQeV9VTklDT0RFIGMsIFB5T2JqZWN0ICptYXBwaW5nKQorc3RhdGljIFB5T2JqZWN0ICoKK2NoYXJtYXBlbmNvZGVfbG9va3VwKFB5X1VDUzQgYywgUHlPYmplY3QgKm1hcHBpbmcpCiB7CiAgICAgUHlPYmplY3QgKncgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpYyk7CiAgICAgUHlPYmplY3QgKng7CkBAIC01NjE1LDE2ICs3ODcyLDE2IEBACiAKIHR5cGVkZWYgZW51bSBjaGFybWFwZW5jb2RlX3Jlc3VsdCB7CiAgICAgZW5jX1NVQ0NFU1MsIGVuY19GQUlMRUQsIGVuY19FWENFUFRJT04KLX1jaGFybWFwZW5jb2RlX3Jlc3VsdDsKK30gY2hhcm1hcGVuY29kZV9yZXN1bHQ7CiAvKiBsb29rdXAgdGhlIGNoYXJhY3RlciwgcHV0IHRoZSByZXN1bHQgaW4gdGhlIG91dHB1dCBzdHJpbmcgYW5kIGFkanVzdAogICAgdmFyaW91cyBzdGF0ZSB2YXJpYWJsZXMuIFJlc2l6ZSB0aGUgb3V0cHV0IGJ5dGVzIG9iamVjdCBpZiBub3QgZW5vdWdoCiAgICBzcGFjZSBpcyBhdmFpbGFibGUuIFJldHVybiBhIG5ldyByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCB0aGF0CiAgICB3YXMgcHV0IGluIHRoZSBvdXRwdXQgYnVmZmVyLCBvciBQeV9Ob25lLCBpZiB0aGUgbWFwcGluZyB3YXMgdW5kZWZpbmVkCiAgICAoaW4gd2hpY2ggY2FzZSBubyBjaGFyYWN0ZXIgd2FzIHdyaXR0ZW4pIG9yIE5VTEwsIGlmIGEKICAgIHJlYWxsb2NhdGlvbiBlcnJvciBvY2N1cnJlZC4gVGhlIGNhbGxlciBtdXN0IGRlY3JlZiB0aGUgcmVzdWx0ICovCi1zdGF0aWMKLWNoYXJtYXBlbmNvZGVfcmVzdWx0IGNoYXJtYXBlbmNvZGVfb3V0cHV0KFB5X1VOSUNPREUgYywgUHlPYmplY3QgKm1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKm91dG9iaiwgUHlfc3NpemVfdCAqb3V0cG9zKQorc3RhdGljIGNoYXJtYXBlbmNvZGVfcmVzdWx0CitjaGFybWFwZW5jb2RlX291dHB1dChQeV9VQ1M0IGMsIFB5T2JqZWN0ICptYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipvdXRvYmosIFB5X3NzaXplX3QgKm91dHBvcykKIHsKICAgICBQeU9iamVjdCAqcmVwOwogICAgIGNoYXIgKm91dHN0YXJ0OwpAQCAtNTY4MCwxNyArNzkzNywxOSBAQAogCiAvKiBoYW5kbGUgYW4gZXJyb3IgaW4gUHlVbmljb2RlX0VuY29kZUNoYXJtYXAKICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yICovCi1zdGF0aWMKLWludCBjaGFybWFwX2VuY29kaW5nX2Vycm9yKAotICAgIGNvbnN0IFB5X1VOSUNPREUgKnAsIFB5X3NzaXplX3Qgc2l6ZSwgUHlfc3NpemVfdCAqaW5wb3MsIFB5T2JqZWN0ICptYXBwaW5nLAorc3RhdGljIGludAorY2hhcm1hcF9lbmNvZGluZ19lcnJvcigKKyAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCAqaW5wb3MsIFB5T2JqZWN0ICptYXBwaW5nLAogICAgIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAogICAgIGludCAqa25vd25fZXJyb3JIYW5kbGVyLCBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwgY29uc3QgY2hhciAqZXJyb3JzLAogICAgIFB5T2JqZWN0ICoqcmVzLCBQeV9zc2l6ZV90ICpyZXNwb3MpCiB7CiAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGUgPSBOVUxMOyAvKiBpbml0aWFsaXplIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KLSAgICBQeV9zc2l6ZV90IHJlcHNpemU7CisgICAgUHlfc3NpemVfdCBzaXplLCByZXBzaXplOwogICAgIFB5X3NzaXplX3QgbmV3cG9zOwotICAgIFB5X1VOSUNPREUgKnVuaTI7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBpbmRleDsKICAgICAvKiBzdGFydHBvcyBmb3IgY29sbGVjdGluZyB1bmVuY29kYWJsZSBjaGFycyAqLwogICAgIFB5X3NzaXplX3QgY29sbHN0YXJ0cG9zID0gKmlucG9zOwogICAgIFB5X3NzaXplX3QgY29sbGVuZHBvcyA9ICppbnBvcysxOwpAQCAtNTY5OCwxOSArNzk1NywyNiBAQAogICAgIGNoYXIgKmVuY29kaW5nID0gImNoYXJtYXAiOwogICAgIGNoYXIgKnJlYXNvbiA9ICJjaGFyYWN0ZXIgbWFwcyB0byA8dW5kZWZpbmVkPiI7CiAgICAgY2hhcm1hcGVuY29kZV9yZXN1bHQgeDsKKyAgICBQeV9VQ1M0IGNoOworICAgIGludCB2YWw7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOwogICAgIC8qIGZpbmQgYWxsIHVuZW5jb2RhYmxlIGNoYXJhY3RlcnMgKi8KICAgICB3aGlsZSAoY29sbGVuZHBvcyA8IHNpemUpIHsKICAgICAgICAgUHlPYmplY3QgKnJlcDsKICAgICAgICAgaWYgKFB5X1RZUEUobWFwcGluZykgPT0gJkVuY29kaW5nTWFwVHlwZSkgewotICAgICAgICAgICAgaW50IHJlcyA9IGVuY29kaW5nX21hcF9sb29rdXAocFtjb2xsZW5kcG9zXSwgbWFwcGluZyk7Ci0gICAgICAgICAgICBpZiAocmVzICE9IC0xKQorICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIGNvbGxlbmRwb3MpOworICAgICAgICAgICAgdmFsID0gZW5jb2RpbmdfbWFwX2xvb2t1cChjaCwgbWFwcGluZyk7CisgICAgICAgICAgICBpZiAodmFsICE9IC0xKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgKytjb2xsZW5kcG9zOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICByZXAgPSBjaGFybWFwZW5jb2RlX2xvb2t1cChwW2NvbGxlbmRwb3NdLCBtYXBwaW5nKTsKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIGNvbGxlbmRwb3MpOworICAgICAgICByZXAgPSBjaGFybWFwZW5jb2RlX2xvb2t1cChjaCwgbWFwcGluZyk7CiAgICAgICAgIGlmIChyZXA9PU5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGVsc2UgaWYgKHJlcCE9UHlfTm9uZSkgewpAQCAtNTczNiw3ICs4MDAyLDcgQEAKICAgICB9CiAgICAgc3dpdGNoICgqa25vd25fZXJyb3JIYW5kbGVyKSB7CiAgICAgY2FzZSAxOiAvKiBzdHJpY3QgKi8KLSAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsIGVuY29kaW5nLCBwLCBzaXplLCBjb2xsc3RhcnRwb3MsIGNvbGxlbmRwb3MsIHJlYXNvbik7CisgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgdW5pY29kZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgY2FzZSAyOiAvKiByZXBsYWNlICovCiAgICAgICAgIGZvciAoY29sbHBvcyA9IGNvbGxzdGFydHBvczsgY29sbHBvczxjb2xsZW5kcG9zOyArK2NvbGxwb3MpIHsKQEAgLTU3NDUsNyArODAxMSw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoeD09ZW5jX0ZBSUxFRCkgewotICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgcCwgc2l6ZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOworICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgdW5pY29kZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTc1OCwxMyArODAyNCwxMyBAQAogICAgICAgICBmb3IgKGNvbGxwb3MgPSBjb2xsc3RhcnRwb3M7IGNvbGxwb3MgPCBjb2xsZW5kcG9zOyArK2NvbGxwb3MpIHsKICAgICAgICAgICAgIGNoYXIgYnVmZmVyWzIrMjkrMSsxXTsKICAgICAgICAgICAgIGNoYXIgKmNwOwotICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICImIyVkOyIsIChpbnQpcFtjb2xscG9zXSk7CisgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiYjJWQ7IiwgKGludClQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIGNvbGxwb3MpKTsKICAgICAgICAgICAgIGZvciAoY3AgPSBidWZmZXI7ICpjcDsgKytjcCkgewogICAgICAgICAgICAgICAgIHggPSBjaGFybWFwZW5jb2RlX291dHB1dCgqY3AsIG1hcHBpbmcsIHJlcywgcmVzcG9zKTsKICAgICAgICAgICAgICAgICBpZiAoeD09ZW5jX0VYQ0VQVElPTikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHg9PWVuY19GQUlMRUQpIHsKLSAgICAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsIGVuY29kaW5nLCBwLCBzaXplLCBjb2xsc3RhcnRwb3MsIGNvbGxlbmRwb3MsIHJlYXNvbik7CisgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgdW5pY29kZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNTc3Myw3ICs4MDM5LDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmVwdW5pY29kZSA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGVycm9ycywgZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwgcCwgc2l6ZSwgZXhjZXB0aW9uT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwgdW5pY29kZSwgZXhjZXB0aW9uT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCAmbmV3cG9zKTsKICAgICAgICAgaWYgKHJlcHVuaWNvZGUgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTU3OTcsMTUgKzgwNjMsMjMgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICAqLwotICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlcHVuaWNvZGUpOwotICAgICAgICBmb3IgKHVuaTIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXB1bmljb2RlKTsgcmVwc2l6ZS0tPjA7ICsrdW5pMikgewotICAgICAgICAgICAgeCA9IGNoYXJtYXBlbmNvZGVfb3V0cHV0KCp1bmkyLCBtYXBwaW5nLCByZXMsIHJlc3Bvcyk7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwdW5pY29kZSkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwdW5pY29kZSk7CisgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShyZXB1bmljb2RlKTsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHJlcHVuaWNvZGUpOworICAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCByZXBzaXplOyBpbmRleCsrKSB7CisgICAgICAgICAgICBQeV9VQ1M0IHJlcGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaW5kZXgpOworICAgICAgICAgICAgeCA9IGNoYXJtYXBlbmNvZGVfb3V0cHV0KHJlcGNoLCBtYXBwaW5nLCByZXMsIHJlc3Bvcyk7CiAgICAgICAgICAgICBpZiAoeD09ZW5jX0VYQ0VQVElPTikgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmICh4PT1lbmNfRkFJTEVEKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgcCwgc2l6ZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOworICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgdW5pY29kZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTgxNSwxNSArODA4OSwxNiBAQAogICAgIHJldHVybiAwOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoY29uc3QgUHlfVU5JQ09ERSAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorX1B5VW5pY29kZV9FbmNvZGVDaGFybWFwKFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICAvKiBvdXRwdXQgb2JqZWN0ICovCiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgLyogY3VycmVudCBpbnB1dCBwb3NpdGlvbiAqLwogICAgIFB5X3NzaXplX3QgaW5wb3MgPSAwOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICAvKiBjdXJyZW50IG91dHB1dCBwb3NpdGlvbiAqLwogICAgIFB5X3NzaXplX3QgcmVzcG9zID0gMDsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKQEAgLTU4MzMsOSArODEwOCwxMyBAQAogICAgICAqIDM9aWdub3JlLCA0PXhtbGNoYXJyZWZyZXBsYWNlICovCiAgICAgaW50IGtub3duX2Vycm9ySGFuZGxlciA9IC0xOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworCiAgICAgLyogRGVmYXVsdCB0byBMYXRpbi0xICovCiAgICAgaWYgKG1hcHBpbmcgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVMYXRpbjEocCwgc2l6ZSwgZXJyb3JzKTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW5jb2RlX3VjczEodW5pY29kZSwgZXJyb3JzLCAyNTYpOwogCiAgICAgLyogYWxsb2NhdGUgZW5vdWdoIGZvciBhIHNpbXBsZSBlbmNvZGluZyB3aXRob3V0CiAgICAgICAgcmVwbGFjZW1lbnRzLCBpZiB3ZSBuZWVkIG1vcmUsIHdlJ2xsIHJlc2l6ZSAqLwpAQCAtNTg0NiwxMiArODEyNSwxMyBAQAogICAgICAgICByZXR1cm4gcmVzOwogCiAgICAgd2hpbGUgKGlucG9zPHNpemUpIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIodW5pY29kZSwgaW5wb3MpOwogICAgICAgICAvKiB0cnkgdG8gZW5jb2RlIGl0ICovCi0gICAgICAgIGNoYXJtYXBlbmNvZGVfcmVzdWx0IHggPSBjaGFybWFwZW5jb2RlX291dHB1dChwW2lucG9zXSwgbWFwcGluZywgJnJlcywgJnJlc3Bvcyk7CisgICAgICAgIGNoYXJtYXBlbmNvZGVfcmVzdWx0IHggPSBjaGFybWFwZW5jb2RlX291dHB1dChjaCwgbWFwcGluZywgJnJlcywgJnJlc3Bvcyk7CiAgICAgICAgIGlmICh4PT1lbmNfRVhDRVBUSU9OKSAvKiBlcnJvciAqLwogICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICBpZiAoeD09ZW5jX0ZBSUxFRCkgeyAvKiB1bmVuY29kYWJsZSBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgIGlmIChjaGFybWFwX2VuY29kaW5nX2Vycm9yKHAsIHNpemUsICZpbnBvcywgbWFwcGluZywKKyAgICAgICAgICAgIGlmIChjaGFybWFwX2VuY29kaW5nX2Vycm9yKHVuaWNvZGUsICZpbnBvcywgbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZleGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma25vd25fZXJyb3JIYW5kbGVyLCAmZXJyb3JIYW5kbGVyLCBlcnJvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzLCAmcmVzcG9zKSkgewpAQCAtNTg3OSwyOCArODE1OSw0MyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nKQorLyogRGVwcmVjYXRlZCAqLworUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoY29uc3QgUHlfVU5JQ09ERSAqcCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocCwgc2l6ZSk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gX1B5VW5pY29kZV9FbmNvZGVDaGFybWFwKHVuaWNvZGUsIG1hcHBpbmcsIGVycm9ycyk7CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nKQogewogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpIHx8IG1hcHBpbmcgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVDaGFybWFwKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZUNoYXJtYXAodW5pY29kZSwgbWFwcGluZywgTlVMTCk7CiB9CiAKIC8qIGNyZWF0ZSBvciBhZGp1c3QgYSBVbmljb2RlVHJhbnNsYXRlRXJyb3IgKi8KLXN0YXRpYyB2b2lkIG1ha2VfdHJhbnNsYXRlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICp1bmljb2RlLCBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKQorc3RhdGljIHZvaWQKK21ha2VfdHJhbnNsYXRlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pCiB7CiAgICAgaWYgKCpleGNlcHRpb25PYmplY3QgPT0gTlVMTCkgewotICAgICAgICAqZXhjZXB0aW9uT2JqZWN0ID0gUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfQ3JlYXRlKAotICAgICAgICAgICAgdW5pY29kZSwgc2l6ZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgKmV4Y2VwdGlvbk9iamVjdCA9IF9QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9DcmVhdGUoCisgICAgICAgICAgICB1bmljb2RlLCBzdGFydHBvcywgZW5kcG9zLCByZWFzb24pOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0KCpleGNlcHRpb25PYmplY3QsIHN0YXJ0cG9zKSkKQEAgLTU5MTcsMTMgKzgyMTIsMTQgQEAKIH0KIAogLyogcmFpc2VzIGEgVW5pY29kZVRyYW5zbGF0ZUVycm9yICovCi1zdGF0aWMgdm9pZCByYWlzZV90cmFuc2xhdGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICp1bmljb2RlLCBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pCitzdGF0aWMgdm9pZAorcmFpc2VfdHJhbnNsYXRlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pCiB7CiAgICAgbWFrZV90cmFuc2xhdGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgc2l6ZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKICAgICBpZiAoKmV4Y2VwdGlvbk9iamVjdCAhPSBOVUxMKQogICAgICAgICBQeUNvZGVjX1N0cmljdEVycm9ycygqZXhjZXB0aW9uT2JqZWN0KTsKIH0KQEAgLTU5MzIsMTIgKzgyMjgsMTMgQEAKICAgIGJ1aWxkIGFyZ3VtZW50cywgY2FsbCB0aGUgY2FsbGJhY2sgYW5kIGNoZWNrIHRoZSBhcmd1bWVudHMsCiAgICBwdXQgdGhlIHJlc3VsdCBpbnRvIG5ld3BvcyBhbmQgcmV0dXJuIHRoZSByZXBsYWNlbWVudCBzdHJpbmcsIHdoaWNoCiAgICBoYXMgdG8gYmUgZnJlZWQgYnkgdGhlIGNhbGxlciAqLwotc3RhdGljIFB5T2JqZWN0ICp1bmljb2RlX3RyYW5zbGF0ZV9jYWxsX2Vycm9yaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc2l6ZSwgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuZXdwb3MpCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZV90cmFuc2xhdGVfY2FsbF9lcnJvcmhhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKiplcnJvckhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5ld3BvcykKIHsKICAgICBzdGF0aWMgY2hhciAqYXJncGFyc2UgPSAiTyFuO3RyYW5zbGF0aW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CiAKQEAgLTU5NTIsNyArODI0OSw3IEBACiAgICAgfQogCiAgICAgbWFrZV90cmFuc2xhdGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgc2l6ZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKICAgICBpZiAoKmV4Y2VwdGlvbk9iamVjdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtNTk3MSwxMCArODI2OCwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKGlfbmV3cG9zPDApCi0gICAgICAgICpuZXdwb3MgPSBzaXplK2lfbmV3cG9zOworICAgICAgICAqbmV3cG9zID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkraV9uZXdwb3M7CiAgICAgZWxzZQogICAgICAgICAqbmV3cG9zID0gaV9uZXdwb3M7Ci0gICAgaWYgKCpuZXdwb3M8MCB8fCAqbmV3cG9zPnNpemUpIHsKKyAgICBpZiAoKm5ld3BvczwwIHx8ICpuZXdwb3M+UHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0luZGV4RXJyb3IsICJwb3NpdGlvbiAlemQgZnJvbSBlcnJvciBoYW5kbGVyIG91dCBvZiBib3VuZHMiLCAqbmV3cG9zKTsKICAgICAgICAgUHlfREVDUkVGKHJlc3R1cGxlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01OTg3LDggKzgyODQsOCBAQAogLyogTG9va3VwIHRoZSBjaGFyYWN0ZXIgY2ggaW4gdGhlIG1hcHBpbmcgYW5kIHB1dCB0aGUgcmVzdWx0IGluIHJlc3VsdCwKICAgIHdoaWNoIG11c3QgYmUgZGVjcmVmZWQgYnkgdGhlIGNhbGxlci4KICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yICovCi1zdGF0aWMKLWludCBjaGFybWFwdHJhbnNsYXRlX2xvb2t1cChQeV9VTklDT0RFIGMsIFB5T2JqZWN0ICptYXBwaW5nLCBQeU9iamVjdCAqKnJlc3VsdCkKK3N0YXRpYyBpbnQKK2NoYXJtYXB0cmFuc2xhdGVfbG9va3VwKFB5X1VDUzQgYywgUHlPYmplY3QgKm1hcHBpbmcsIFB5T2JqZWN0ICoqcmVzdWx0KQogewogICAgIFB5T2JqZWN0ICp3ID0gUHlMb25nX0Zyb21Mb25nKChsb25nKWMpOwogICAgIFB5T2JqZWN0ICp4OwpAQCAtNjAzNywyMCArODMzNCwyMSBAQAogLyogZW5zdXJlIHRoYXQgKm91dG9iaiBpcyBhdCBsZWFzdCByZXF1aXJlZHNpemUgY2hhcmFjdGVycyBsb25nLAogICAgaWYgbm90IHJlYWxsb2NhdGUgYW5kIGFkanVzdCB2YXJpb3VzIHN0YXRlIHZhcmlhYmxlcy4KICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yICovCi1zdGF0aWMKLWludCBjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZShQeU9iamVjdCAqKm91dG9iaiwgUHlfVU5JQ09ERSAqKm91dHAsCitzdGF0aWMgaW50CitjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZShQeV9VQ1M0ICoqb3V0b2JqLCBQeV9zc2l6ZV90ICpwc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcXVpcmVkc2l6ZSkKIHsKLSAgICBQeV9zc2l6ZV90IG9sZHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUoKm91dG9iaik7CisgICAgUHlfc3NpemVfdCBvbGRzaXplID0gKnBzaXplOworICAgIFB5X1VDUzQgKm5ld19vdXRvYmo7CiAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IG9sZHNpemUpIHsKLSAgICAgICAgLyogcmVtZW1iZXIgb2xkIG91dHB1dCBwb3NpdGlvbiAqLwotICAgICAgICBQeV9zc2l6ZV90IG91dHBvcyA9ICpvdXRwLVB5VW5pY29kZV9BU19VTklDT0RFKCpvdXRvYmopOwogICAgICAgICAvKiBleHBvbmVudGlhbGx5IG92ZXJhbGxvY2F0ZSB0byBtaW5pbWl6ZSByZWFsbG9jYXRpb25zICovCiAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPCAyICogb2xkc2l6ZSkKICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IDIgKiBvbGRzaXplOwotICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZShvdXRvYmosIHJlcXVpcmVkc2l6ZSkgPCAwKQorICAgICAgICBuZXdfb3V0b2JqID0gUHlNZW1fUmVhbGxvYygqb3V0b2JqLCByZXF1aXJlZHNpemUgKiBzaXplb2YoUHlfVUNTNCkpOworICAgICAgICBpZiAobmV3X291dG9iaiA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAqb3V0cCA9IFB5VW5pY29kZV9BU19VTklDT0RFKCpvdXRvYmopICsgb3V0cG9zOworICAgICAgICAqb3V0b2JqID0gbmV3X291dG9iajsKKyAgICAgICAgKnBzaXplID0gcmVxdWlyZWRzaXplOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KQEAgLTYwNjAsMzggKzgzNTgsNDQgQEAKICAgIHVuZGVmaW5lZCAoaW4gd2hpY2ggY2FzZSBubyBjaGFyYWN0ZXIgd2FzIHdyaXR0ZW4pLgogICAgVGhlIGNhbGxlZCBtdXN0IGRlY3JlZiByZXN1bHQuCiAgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvci4gKi8KLXN0YXRpYwotaW50IGNoYXJtYXB0cmFuc2xhdGVfb3V0cHV0KGNvbnN0IFB5X1VOSUNPREUgKnN0YXJ0aW5wLCBjb25zdCBQeV9VTklDT0RFICpjdXJpbnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpbnNpemUsIFB5T2JqZWN0ICptYXBwaW5nLCBQeU9iamVjdCAqKm91dG9iaiwgUHlfVU5JQ09ERSAqKm91dHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipyZXMpCitzdGF0aWMgaW50CitjaGFybWFwdHJhbnNsYXRlX291dHB1dChQeU9iamVjdCAqaW5wdXQsIFB5X3NzaXplX3QgaXBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLCBQeV9VQ1M0ICoqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqb3NpemUsIFB5X3NzaXplX3QgKm9wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnJlcykKIHsKLSAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoKmN1cmlucCwgbWFwcGluZywgcmVzKSkKKyAgICBQeV9VQ1M0IGN1cmlucCA9IFB5VW5pY29kZV9SRUFEX0NIQVIoaW5wdXQsIGlwb3MpOworICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX2xvb2t1cChjdXJpbnAsIG1hcHBpbmcsIHJlcykpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoKnJlcz09TlVMTCkgewogICAgICAgICAvKiBub3QgZm91bmQgPT4gZGVmYXVsdCB0byAxOjEgbWFwcGluZyAqLwotICAgICAgICAqKCpvdXRwKSsrID0gKmN1cmlucDsKKyAgICAgICAgKCpvdXRwdXQpWygqb3BvcykrK10gPSBjdXJpbnA7CiAgICAgfQogICAgIGVsc2UgaWYgKCpyZXM9PVB5X05vbmUpCiAgICAgICAgIDsKICAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2soKnJlcykpIHsKICAgICAgICAgLyogbm8gb3ZlcmZsb3cgY2hlY2ssIGJlY2F1c2Ugd2Uga25vdyB0aGF0IHRoZSBzcGFjZSBpcyBlbm91Z2ggKi8KLSAgICAgICAgKigqb3V0cCkrKyA9IChQeV9VTklDT0RFKVB5TG9uZ19BU19MT05HKCpyZXMpOworICAgICAgICAoKm91dHB1dClbKCpvcG9zKSsrXSA9IChQeV9VQ1M0KVB5TG9uZ19BU19MT05HKCpyZXMpOwogICAgIH0KICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soKnJlcykpIHsKLSAgICAgICAgUHlfc3NpemVfdCByZXBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKCpyZXMpOworICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemU7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoKnJlcykgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqcmVzKTsKICAgICAgICAgaWYgKHJlcHNpemU9PTEpIHsKICAgICAgICAgICAgIC8qIG5vIG92ZXJmbG93IGNoZWNrLCBiZWNhdXNlIHdlIGtub3cgdGhhdCB0aGUgc3BhY2UgaXMgZW5vdWdoICovCi0gICAgICAgICAgICAqKCpvdXRwKSsrID0gKlB5VW5pY29kZV9BU19VTklDT0RFKCpyZXMpOworICAgICAgICAgICAgKCpvdXRwdXQpWygqb3BvcykrK10gPSBQeVVuaWNvZGVfUkVBRF9DSEFSKCpyZXMsIDApOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKHJlcHNpemUhPTApIHsKICAgICAgICAgICAgIC8qIG1vcmUgdGhhbiBvbmUgY2hhcmFjdGVyICovCi0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlcXVpcmVkc2l6ZSA9ICgqb3V0cC1QeVVuaWNvZGVfQVNfVU5JQ09ERSgqb3V0b2JqKSkgKwotICAgICAgICAgICAgICAgIChpbnNpemUgLSAoY3VyaW5wLXN0YXJ0aW5wKSkgKworICAgICAgICAgICAgUHlfc3NpemVfdCByZXF1aXJlZHNpemUgPSAqb3BvcyArCisgICAgICAgICAgICAgICAgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0KSAtIGlwb3MpICsKICAgICAgICAgICAgICAgICByZXBzaXplIC0gMTsKLSAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZShvdXRvYmosIG91dHAsIHJlcXVpcmVkc2l6ZSkpCisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2Uob3V0cHV0LCBvc2l6ZSwgcmVxdWlyZWRzaXplKSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBtZW1jcHkoKm91dHAsIFB5VW5pY29kZV9BU19VTklDT0RFKCpyZXMpLCBzaXplb2YoUHlfVU5JQ09ERSkqcmVwc2l6ZSk7Ci0gICAgICAgICAgICAqb3V0cCArPSByZXBzaXplOworICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgcmVwc2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgICgqb3V0cHV0KVsoKm9wb3MpKytdID0gUHlVbmljb2RlX1JFQURfQ0hBUigqcmVzLCBpKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCkBAIC02MDk5LDIwICs4NDAzLDIxIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChjb25zdCBQeV9VTklDT0RFICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitfUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoUHlPYmplY3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSAgICAvKiBvdXRwdXQgb2JqZWN0ICovCi0gICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7Ci0gICAgLyogcG9pbnRlcnMgdG8gdGhlIGJlZ2lubmluZyBhbmQgZW5kKzEgb2YgaW5wdXQgKi8KLSAgICBjb25zdCBQeV9VTklDT0RFICpzdGFydHAgPSBwOwotICAgIGNvbnN0IFB5X1VOSUNPREUgKmVuZHAgPSBwICsgc2l6ZTsKLSAgICAvKiBwb2ludGVyIGludG8gdGhlIG91dHB1dCAqLwotICAgIFB5X1VOSUNPREUgKnN0cjsKKyAgICAvKiBpbnB1dCBvYmplY3QgKi8KKyAgICBjaGFyICppZGF0YTsKKyAgICBQeV9zc2l6ZV90IHNpemUsIGk7CisgICAgaW50IGtpbmQ7CisgICAgLyogb3V0cHV0IGJ1ZmZlciAqLworICAgIFB5X1VDUzQgKm91dHB1dCA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBvc2l6ZTsKKyAgICBQeU9iamVjdCAqcmVzOwogICAgIC8qIGN1cnJlbnQgb3V0cHV0IHBvc2l0aW9uICovCi0gICAgUHlfc3NpemVfdCByZXNwb3MgPSAwOworICAgIFB5X3NzaXplX3Qgb3BvczsKICAgICBjaGFyICpyZWFzb24gPSAiY2hhcmFjdGVyIG1hcHMgdG8gPHVuZGVmaW5lZD4iOwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwpAQCAtNjEyNiwzOCArODQzMSw1MiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGlucHV0KSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWRhdGEgPSAoY2hhciopUHlVbmljb2RlX0RBVEEoaW5wdXQpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChpbnB1dCk7CisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0KTsKKyAgICBpID0gMDsKKworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgUHlfSU5DUkVGKGlucHV0KTsKKyAgICAgICAgcmV0dXJuIGlucHV0OworICAgIH0KKwogICAgIC8qIGFsbG9jYXRlIGVub3VnaCBmb3IgYSBzaW1wbGUgMToxIHRyYW5zbGF0aW9uIHdpdGhvdXQKICAgICAgICByZXBsYWNlbWVudHMsIGlmIHdlIG5lZWQgbW9yZSwgd2UnbGwgcmVzaXplICovCi0gICAgcmVzID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHNpemUpOwotICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICBvc2l6ZSA9IHNpemU7CisgICAgb3V0cHV0ID0gUHlNZW1fTWFsbG9jKG9zaXplICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICBvcG9zID0gMDsKKyAgICBpZiAob3V0cHV0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgZ290byBvbkVycm9yOwotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiByZXM7Ci0gICAgc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzKTsKKyAgICB9CiAKLSAgICB3aGlsZSAocDxlbmRwKSB7CisgICAgd2hpbGUgKGk8c2l6ZSkgewogICAgICAgICAvKiB0cnkgdG8gZW5jb2RlIGl0ICovCiAgICAgICAgIFB5T2JqZWN0ICp4ID0gTlVMTDsKLSAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfb3V0cHV0KHN0YXJ0cCwgcCwgc2l6ZSwgbWFwcGluZywgJnJlcywgJnN0ciwgJngpKSB7CisgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX291dHB1dChpbnB1dCwgaSwgbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdXQsICZvc2l6ZSwgJm9wb3MsICZ4KSkgewogICAgICAgICAgICAgUHlfWERFQ1JFRih4KTsKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgfQogICAgICAgICBQeV9YREVDUkVGKHgpOwogICAgICAgICBpZiAoeCE9UHlfTm9uZSkgLyogaXQgd29ya2VkID0+IGFkanVzdCBpbnB1dCBwb2ludGVyICovCi0gICAgICAgICAgICArK3A7CisgICAgICAgICAgICArK2k7CiAgICAgICAgIGVsc2UgeyAvKiB1bnRyYW5zbGF0YWJsZSBjaGFyYWN0ZXIgKi8KICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlID0gTlVMTDsgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCiAgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemU7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IG5ld3BvczsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKnVuaTI7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHVuaTI7CiAgICAgICAgICAgICAvKiBzdGFydHBvcyBmb3IgY29sbGVjdGluZyB1bnRyYW5zbGF0YWJsZSBjaGFycyAqLwotICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqY29sbHN0YXJ0ID0gcDsKLSAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKmNvbGxlbmQgPSBwKzE7Ci0gICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICpjb2xsOworICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsc3RhcnQgPSBpOworICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsZW5kID0gaSsxOworICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsOwogCiAgICAgICAgICAgICAvKiBmaW5kIGFsbCB1bnRyYW5zbGF0YWJsZSBjaGFyYWN0ZXJzICovCi0gICAgICAgICAgICB3aGlsZSAoY29sbGVuZCA8IGVuZHApIHsKLSAgICAgICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoKmNvbGxlbmQsIG1hcHBpbmcsICZ4KSkKKyAgICAgICAgICAgIHdoaWxlIChjb2xsZW5kIDwgc2l6ZSkgeworICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX2xvb2t1cChQeVVuaWNvZGVfUkVBRChraW5kLGlkYXRhLCBjb2xsZW5kKSwgbWFwcGluZywgJngpKQogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih4KTsKICAgICAgICAgICAgICAgICBpZiAoeCE9UHlfTm9uZSkKQEAgLTYxODAsMjYxICs4NDk5LDQxOSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3dpdGNoIChrbm93bl9lcnJvckhhbmRsZXIpIHsKICAgICAgICAgICAgIGNhc2UgMTogLyogc3RyaWN0ICovCi0gICAgICAgICAgICAgICAgcmFpc2VfdHJhbnNsYXRlX2V4Y2VwdGlvbigmZXhjLCBzdGFydHAsIHNpemUsIGNvbGxzdGFydC1zdGFydHAsIGNvbGxlbmQtc3RhcnRwLCByZWFzb24pOworICAgICAgICAgICAgICAgIHJhaXNlX3RyYW5zbGF0ZV9leGNlcHRpb24oJmV4YywgaW5wdXQsIGNvbGxzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlbmQsIHJlYXNvbik7CiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgY2FzZSAyOiAvKiByZXBsYWNlICovCiAgICAgICAgICAgICAgICAgLyogTm8gbmVlZCB0byBjaGVjayBmb3Igc3BhY2UsIHRoaXMgaXMgYSAxOjEgcmVwbGFjZW1lbnQgKi8KLSAgICAgICAgICAgICAgICBmb3IgKGNvbGwgPSBjb2xsc3RhcnQ7IGNvbGw8Y29sbGVuZDsgKytjb2xsKQotICAgICAgICAgICAgICAgICAgICAqc3RyKysgPSAnPyc7CisgICAgICAgICAgICAgICAgZm9yIChjb2xsID0gY29sbHN0YXJ0OyBjb2xsPGNvbGxlbmQ7IGNvbGwrKykKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0W29wb3MrK10gPSAnPyc7CiAgICAgICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCiAgICAgICAgICAgICBjYXNlIDM6IC8qIGlnbm9yZSAqLwotICAgICAgICAgICAgICAgIHAgPSBjb2xsZW5kOworICAgICAgICAgICAgICAgIGkgPSBjb2xsZW5kOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSA0OiAvKiB4bWxjaGFycmVmcmVwbGFjZSAqLwotICAgICAgICAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICh0ZW1wb3JhcmlseSAobWlzKXVzZXMgcCkgKi8KLSAgICAgICAgICAgICAgICBmb3IgKHAgPSBjb2xsc3RhcnQ7IHAgPCBjb2xsZW5kOyArK3ApIHsKKyAgICAgICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAodGVtcG9yYXJpbHkgKG1pcyl1c2VzIGkpICovCisgICAgICAgICAgICAgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNoYXIgYnVmZmVyWzIrMjkrMSsxXTsKICAgICAgICAgICAgICAgICAgICAgY2hhciAqY3A7Ci0gICAgICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJiMlZDsiLCAoaW50KSpwKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbWFrZXNwYWNlKCZyZXMsICZzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyLVB5VW5pY29kZV9BU19VTklDT0RFKHJlcykpK3N0cmxlbihidWZmZXIpKyhlbmRwLWNvbGxlbmQpKSkKKyAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICImIyVkOyIsIFB5VW5pY29kZV9SRUFEKGtpbmQsIGlkYXRhLCBpKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZSgmb3V0cHV0LCAmb3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcG9zK3N0cmxlbihidWZmZXIpKyhzaXplLWNvbGxlbmQpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICAgICAgZm9yIChjcCA9IGJ1ZmZlcjsgKmNwOyArK2NwKQotICAgICAgICAgICAgICAgICAgICAgICAgKnN0cisrID0gKmNwOworICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0W29wb3MrK10gPSAqY3A7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHAgPSBjb2xsZW5kOworICAgICAgICAgICAgICAgIGkgPSBjb2xsZW5kOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICByZXB1bmljb2RlID0gdW5pY29kZV90cmFuc2xhdGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24sIHN0YXJ0cCwgc2l6ZSwgJmV4YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0LXN0YXJ0cCwgY29sbGVuZC1zdGFydHAsICZuZXdwb3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24sIGlucHV0LCAmZXhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsc3RhcnQsIGNvbGxlbmQsICZuZXdwb3MpOwogICAgICAgICAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAgKi8KLSAgICAgICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZSgmcmVzLCAmc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyLVB5VW5pY29kZV9BU19VTklDT0RFKHJlcykpK3JlcHNpemUrKGVuZHAtY29sbGVuZCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXB1bmljb2RlKSA9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZm9yICh1bmkyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwdW5pY29kZSk7IHJlcHNpemUtLT4wOyArK3VuaTIpCi0gICAgICAgICAgICAgICAgICAgICpzdHIrKyA9ICp1bmkyOwotICAgICAgICAgICAgICAgIHAgPSBzdGFydHAgKyBuZXdwb3M7CisgICAgICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgICovCisgICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZSgmb3V0cHV0LCAmb3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wb3MrcmVwc2l6ZSsoc2l6ZS1jb2xsZW5kKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvciAodW5pMiA9IDA7IHJlcHNpemUtLT4wOyArK3VuaTIpCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFtvcG9zKytdID0gUHlVbmljb2RlX1JFQURfQ0hBUihyZXB1bmljb2RlLCB1bmkyKTsKKyAgICAgICAgICAgICAgICBpID0gbmV3cG9zOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAvKiBSZXNpemUgaWYgd2UgYWxsb2NhdGVkIHRvIG11Y2ggKi8KLSAgICByZXNwb3MgPSBzdHItUHlVbmljb2RlX0FTX1VOSUNPREUocmVzKTsKLSAgICBpZiAocmVzcG9zPFB5VW5pY29kZV9HRVRfU0laRShyZXMpKSB7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZyZXMsIHJlc3BvcykgPCAwKQotICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgIH0KKyAgICByZXMgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELCBvdXRwdXQsIG9wb3MpOworICAgIGlmICghcmVzKQorICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgUHlNZW1fRnJlZShvdXRwdXQpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgcmV0dXJuIHJlczsKIAogICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYocmVzKTsKKyAgICBQeU1lbV9GcmVlKG91dHB1dCk7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9UcmFuc2xhdGUoUHlPYmplY3QgKnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLyogRGVwcmVjYXRlZC4gVXNlIFB5VW5pY29kZV9UcmFuc2xhdGUgaW5zdGVhZC4gKi8KK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKGNvbnN0IFB5X1VOSUNPREUgKnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICp1bmljb2RlID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHAsIHNpemUpOworICAgIGlmICghdW5pY29kZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gX1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKHVuaWNvZGUsIG1hcHBpbmcsIGVycm9ycyk7CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9UcmFuc2xhdGUoUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKICAgICBpZiAoc3RyID09IE5VTEwpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gX1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKHN0ciwgbWFwcGluZywgZXJyb3JzKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gcmVzdWx0OworfQogCi0gIG9uRXJyb3I6Ci0gICAgUHlfWERFQ1JFRihzdHIpOwotICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5X1VDUzQKK2ZpeF9kZWNpbWFsX2FuZF9zcGFjZV90b19hc2NpaShQeU9iamVjdCAqc2VsZikKK3sKKyAgICAvKiBObyBuZWVkIHRvIGNhbGwgUHlVbmljb2RlX1JFQURZKHNlbGYpIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBvbmx5CisgICAgICAgY2FsbGVkIGFzIGEgY2FsbGJhY2sgZnJvbSBmaXh1cCgpIHdoaWNoIGRvZXMgaXQgYWxyZWFkeS4gKi8KKyAgICBjb25zdCBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGNvbnN0IGludCBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIFB5X1VDUzQgbWF4Y2hhciA9IDEyNywgY2gsIGZpeGVkOworICAgIGludCBtb2RpZmllZCA9IDA7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKSB7CisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIGZpeGVkID0gMDsKKyAgICAgICAgaWYgKGNoID4gMTI3KSB7CisgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU1NQQUNFKGNoKSkKKyAgICAgICAgICAgICAgICBmaXhlZCA9ICcgJzsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGNvbnN0IGludCBkZWNpbWFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoY2gpOworICAgICAgICAgICAgICAgIGlmIChkZWNpbWFsID49IDApCisgICAgICAgICAgICAgICAgICAgIGZpeGVkID0gJzAnICsgZGVjaW1hbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChmaXhlZCAhPSAwKSB7CisgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSAxOworICAgICAgICAgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBmaXhlZCk7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIGksIGZpeGVkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgY2gpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIChtb2RpZmllZCkgPyBtYXhjaGFyIDogMDsKK30KKworUHlPYmplY3QgKgorX1B5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsQW5kU3BhY2VUb0FTQ0lJKFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKSA8PSAxMjcpIHsKKyAgICAgICAgLyogSWYgdGhlIHN0cmluZyBpcyBhbHJlYWR5IEFTQ0lJLCBqdXN0IHJldHVybiB0aGUgc2FtZSBzdHJpbmcgKi8KKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGUpOworICAgICAgICByZXR1cm4gdW5pY29kZTsKKyAgICB9CisgICAgcmV0dXJuIGZpeHVwKHVuaWNvZGUsIGZpeF9kZWNpbWFsX2FuZF9zcGFjZV90b19hc2NpaSk7CiB9CiAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsVG9BU0NJSShQeV9VTklDT0RFICpzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoKQogewotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgUHlfVU5JQ09ERSAqcDsgLyogd3JpdGUgcG9pbnRlciBpbnRvIHJlc3VsdCAqLworICAgIFB5T2JqZWN0ICpkZWNpbWFsOwogICAgIFB5X3NzaXplX3QgaTsKLSAgICAvKiBDb3B5IHRvIGEgbmV3IHN0cmluZyAqLwotICAgIHJlc3VsdCA9IChQeU9iamVjdCAqKV9QeVVuaWNvZGVfTmV3KGxlbmd0aCk7Ci0gICAgUHlfVU5JQ09ERV9DT1BZKFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCksIHMsIGxlbmd0aCk7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOwotICAgIC8qIEl0ZXJhdGUgb3ZlciBjb2RlIHBvaW50cyAqLworICAgIFB5X1VDUzQgbWF4Y2hhcjsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIG1heGNoYXIgPSAxMjc7CiAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPXNbaV07CisgICAgICAgIFB5X1VOSUNPREUgY2ggPSBzW2ldOwogICAgICAgICBpZiAoY2ggPiAxMjcpIHsKICAgICAgICAgICAgIGludCBkZWNpbWFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoY2gpOwogICAgICAgICAgICAgaWYgKGRlY2ltYWwgPj0gMCkKLSAgICAgICAgICAgICAgICBwW2ldID0gJzAnICsgZGVjaW1hbDsKKyAgICAgICAgICAgICAgICBjaCA9ICcwJyArIGRlY2ltYWw7CisgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgY2gpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAvKiBDb3B5IHRvIGEgbmV3IHN0cmluZyAqLworICAgIGRlY2ltYWwgPSBQeVVuaWNvZGVfTmV3KGxlbmd0aCwgbWF4Y2hhcik7CisgICAgaWYgKGRlY2ltYWwgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIGRlY2ltYWw7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGRlY2ltYWwpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShkZWNpbWFsKTsKKyAgICAvKiBJdGVyYXRlIG92ZXIgY29kZSBwb2ludHMgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgUHlfVU5JQ09ERSBjaCA9IHNbaV07CisgICAgICAgIGlmIChjaCA+IDEyNykgeworICAgICAgICAgICAgaW50IGRlY2ltYWwgPSBQeV9VTklDT0RFX1RPREVDSU1BTChjaCk7CisgICAgICAgICAgICBpZiAoZGVjaW1hbCA+PSAwKQorICAgICAgICAgICAgICAgIGNoID0gJzAnICsgZGVjaW1hbDsKKyAgICAgICAgfQorICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgaSwgY2gpOworICAgIH0KKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQoZGVjaW1hbCk7CiB9CiAvKiAtLS0gRGVjaW1hbCBFbmNvZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotaW50IFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsKFB5X1VOSUNPREUgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK2ludAorUHlVbmljb2RlX0VuY29kZURlY2ltYWwoUHlfVU5JQ09ERSAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewotICAgIFB5X1VOSUNPREUgKnAsICplbmQ7Ci0gICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0gICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSAiZGVjaW1hbCI7Ci0gICAgY29uc3QgY2hhciAqcmVhc29uID0gImludmFsaWQgZGVjaW1hbCBVbmljb2RlIHN0cmluZyI7Ci0gICAgLyogdGhlIGZvbGxvd2luZyB2YXJpYWJsZSBpcyB1c2VkIGZvciBjYWNoaW5nIHN0cmluZyBjb21wYXJpc29ucwotICAgICAqIC0xPW5vdCBpbml0aWFsaXplZCwgMD11bmtub3duLCAxPXN0cmljdCwgMj1yZXBsYWNlLCAzPWlnbm9yZSwgND14bWxjaGFycmVmcmVwbGFjZSAqLwotICAgIGludCBrbm93bl9lcnJvckhhbmRsZXIgPSAtMTsKKyAgICBQeU9iamVjdCAqdW5pY29kZTsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAKICAgICBpZiAob3V0cHV0ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIHAgPSBzOwotICAgIGVuZCA9IHMgKyBsZW5ndGg7Ci0gICAgd2hpbGUgKHAgPCBlbmQpIHsKLSAgICAgICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSBjaCA9ICpwOworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocywgbGVuZ3RoKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworCisgICAgZm9yIChpPTA7IGkgPCBsZW5ndGg7ICkgeworICAgICAgICBQeU9iamVjdCAqZXhjOworICAgICAgICBQeV9VQ1M0IGNoOwogICAgICAgICBpbnQgZGVjaW1hbDsKLSAgICAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGU7Ci0gICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZTsKLSAgICAgICAgUHlfc3NpemVfdCBuZXdwb3M7Ci0gICAgICAgIFB5X1VOSUNPREUgKnVuaTI7Ci0gICAgICAgIFB5X1VOSUNPREUgKmNvbGxzdGFydDsKLSAgICAgICAgUHlfVU5JQ09ERSAqY29sbGVuZDsKKyAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvczsKKworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogCiAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTU1BBQ0UoY2gpKSB7CiAgICAgICAgICAgICAqb3V0cHV0KysgPSAnICc7Ci0gICAgICAgICAgICArK3A7CisgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBkZWNpbWFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoY2gpOwogICAgICAgICBpZiAoZGVjaW1hbCA+PSAwKSB7CiAgICAgICAgICAgICAqb3V0cHV0KysgPSAnMCcgKyBkZWNpbWFsOwotICAgICAgICAgICAgKytwOworICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKDAgPCBjaCAmJiBjaCA8IDI1NikgewogICAgICAgICAgICAgKm91dHB1dCsrID0gKGNoYXIpY2g7Ci0gICAgICAgICAgICArK3A7CisgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICAvKiBBbGwgb3RoZXIgY2hhcmFjdGVycyBhcmUgY29uc2lkZXJlZCB1bmVuY29kYWJsZSAqLwotICAgICAgICBjb2xsc3RhcnQgPSBwOwotICAgICAgICBmb3IgKGNvbGxlbmQgPSBwKzE7IGNvbGxlbmQgPCBlbmQ7IGNvbGxlbmQrKykgewotICAgICAgICAgICAgaWYgKCgwIDwgKmNvbGxlbmQgJiYgKmNvbGxlbmQgPCAyNTYpIHx8Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9JU1NQQUNFKCpjb2xsZW5kKSB8fAotICAgICAgICAgICAgICAgIDAgPD0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoKmNvbGxlbmQpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIC8qIGNhY2hlIGNhbGxiYWNrIG5hbWUgbG9va3VwCi0gICAgICAgICAqIChpZiBub3QgZG9uZSB5ZXQsIGkuZS4gaXQncyB0aGUgZmlyc3QgZXJyb3IpICovCi0gICAgICAgIGlmIChrbm93bl9lcnJvckhhbmRsZXI9PS0xKSB7Ci0gICAgICAgICAgICBpZiAoKGVycm9ycz09TlVMTCkgfHwgKCFzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikpKQotICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDE7Ci0gICAgICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgInJlcGxhY2UiKSkKLSAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAyOwotICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJpZ25vcmUiKSkKLSAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAzOwotICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJ4bWxjaGFycmVmcmVwbGFjZSIpKQotICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDQ7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMDsKLSAgICAgICAgfQotICAgICAgICBzd2l0Y2ggKGtub3duX2Vycm9ySGFuZGxlcikgewotICAgICAgICBjYXNlIDE6IC8qIHN0cmljdCAqLwotICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgcywgbGVuZ3RoLCBjb2xsc3RhcnQtcywgY29sbGVuZC1zLCByZWFzb24pOwotICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICBjYXNlIDI6IC8qIHJlcGxhY2UgKi8KLSAgICAgICAgICAgIGZvciAocCA9IGNvbGxzdGFydDsgcCA8IGNvbGxlbmQ7ICsrcCkKLSAgICAgICAgICAgICAgICAqb3V0cHV0KysgPSAnPyc7Ci0gICAgICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICAgICAgY2FzZSAzOiAvKiBpZ25vcmUgKi8KLSAgICAgICAgICAgIHAgPSBjb2xsZW5kOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgNDogLyogeG1sY2hhcnJlZnJlcGxhY2UgKi8KLSAgICAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICh0ZW1wb3JhcmlseSAobWlzKXVzZXMgcCkgKi8KLSAgICAgICAgICAgIGZvciAocCA9IGNvbGxzdGFydDsgcCA8IGNvbGxlbmQ7ICsrcCkKLSAgICAgICAgICAgICAgICBvdXRwdXQgKz0gc3ByaW50ZihvdXRwdXQsICImIyVkOyIsIChpbnQpKnApOwotICAgICAgICAgICAgcCA9IGNvbGxlbmQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJlcHVuaWNvZGUgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwgcywgbGVuZ3RoLCAmZXhjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydC1zLCBjb2xsZW5kLXMsICZuZXdwb3MpOwotICAgICAgICAgICAgaWYgKHJlcHVuaWNvZGUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhyZXB1bmljb2RlKSkgewotICAgICAgICAgICAgICAgIC8qIEJ5dGUgcmVzdWx0cyBub3Qgc3VwcG9ydGVkLCBzaW5jZSB0aGV5IGhhdmUgbm8gZGVjaW1hbCBwcm9wZXJ0eS4gKi8KLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZXJyb3IgaGFuZGxlciBzaG91bGQgcmV0dXJuIHVuaWNvZGUiKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgICovCi0gICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgZm9yICh1bmkyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwdW5pY29kZSk7IHJlcHNpemUtLT4wOyArK3VuaTIpIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGNoID0gKnVuaTI7Ci0gICAgICAgICAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNTUEFDRShjaCkpCi0gICAgICAgICAgICAgICAgICAgICpvdXRwdXQrKyA9ICcgJzsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgZGVjaW1hbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKGNoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRlY2ltYWwgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICpvdXRwdXQrKyA9ICcwJyArIGRlY2ltYWw7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKDAgPCBjaCAmJiBjaCA8IDI1NikKLSAgICAgICAgICAgICAgICAgICAgICAgICpvdXRwdXQrKyA9IChjaGFyKWNoOwotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGxlbmd0aCwgY29sbHN0YXJ0LXMsIGNvbGxlbmQtcywgcmVhc29uKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHAgPSBzICsgbmV3cG9zOwotICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwotICAgICAgICB9CisKKyAgICAgICAgc3RhcnRwb3MgPSBpOworICAgICAgICBleGMgPSBOVUxMOworICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsICJkZWNpbWFsIiwgdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHBvcywgc3RhcnRwb3MrMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBkZWNpbWFsIFVuaWNvZGUgc3RyaW5nIik7CisgICAgICAgIFB5X1hERUNSRUYoZXhjKTsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIC8qIDAtdGVybWluYXRlIHRoZSBvdXRwdXQgc3RyaW5nICovCiAgICAgKm91dHB1dCsrID0gJ1wwJzsKLSAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKICAgICByZXR1cm4gMDsKLQotICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7Ci0gICAgcmV0dXJuIC0xOwogfQogCiAvKiAtLS0gSGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotI2luY2x1ZGUgInN0cmluZ2xpYi91bmljb2RlZGVmcy5oIgotI2luY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiCitzdGF0aWMgUHlfc3NpemVfdAorYW55X2ZpbmRfc2xpY2UoaW50IGRpcmVjdGlvbiwgUHlPYmplY3QqIHMxLCBQeU9iamVjdCogczIsCisgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQpCit7CisgICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICB2b2lkICpidWYxLCAqYnVmMjsKKyAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjIsIHJlc3VsdDsKIAotI2luY2x1ZGUgInN0cmluZ2xpYi9jb3VudC5oIgotI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kLmgiCi0jaW5jbHVkZSAic3RyaW5nbGliL3BhcnRpdGlvbi5oIgotI2luY2x1ZGUgInN0cmluZ2xpYi9zcGxpdC5oIgorICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoczEpOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoczIpOworICAgIGtpbmQgPSBraW5kMSA+IGtpbmQyID8ga2luZDEgOiBraW5kMjsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoczEpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzMik7CisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzMSwga2luZCk7CisgICAgaWYgKCFidWYxKQorICAgICAgICByZXR1cm4gLTI7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzMiwga2luZCk7CisgICAgaWYgKCFidWYyKSB7CisgICAgICAgIGlmIChraW5kMSAhPSBraW5kKSBQeU1lbV9GcmVlKGJ1ZjEpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzMSk7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHMyKTsKIAotI2RlZmluZSBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcgX1B5VW5pY29kZV9JbnNlcnRUaG91c2FuZHNHcm91cGluZwotI2RlZmluZSBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmdMb2NhbGUgX1B5VW5pY29kZV9JbnNlcnRUaG91c2FuZHNHcm91cGluZ0xvY2FsZQotI2luY2x1ZGUgInN0cmluZ2xpYi9sb2NhbGV1dGlsLmgiCisgICAgaWYgKGRpcmVjdGlvbiA+IDApIHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHMxKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoczIpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFzY2lpbGliX2ZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gdWNzMWxpYl9maW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXN1bHQgPSB1Y3MybGliX2ZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgICAgIHJlc3VsdCA9IHVjczRsaWJfZmluZF9zbGljZShidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYXNzZXJ0KDApOyByZXN1bHQgPSAtMjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHMxKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoczIpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFzY2lpbGliX3JmaW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHVjczFsaWJfcmZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgICAgIHJlc3VsdCA9IHVjczJsaWJfcmZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgICAgIHJlc3VsdCA9IHVjczRsaWJfcmZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydCgwKTsgcmVzdWx0ID0gLTI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoa2luZDEgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5X3NzaXplX3QKK19QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgaW5kZXgsCisgICAgUHlfc3NpemVfdCBuX2J1ZmZlciwKKyAgICB2b2lkICpkaWdpdHMsIFB5X3NzaXplX3Qgbl9kaWdpdHMsCisgICAgUHlfc3NpemVfdCBtaW5fd2lkdGgsCisgICAgY29uc3QgY2hhciAqZ3JvdXBpbmcsIFB5T2JqZWN0ICp0aG91c2FuZHNfc2VwLAorICAgIFB5X1VDUzQgKm1heGNoYXIpCit7CisgICAgdW5zaWduZWQgaW50IGtpbmQsIHRob3VzYW5kc19zZXBfa2luZDsKKyAgICBjaGFyICpkYXRhLCAqdGhvdXNhbmRzX3NlcF9kYXRhOworICAgIFB5X3NzaXplX3QgdGhvdXNhbmRzX3NlcF9sZW47CisgICAgUHlfc3NpemVfdCBsZW47CisKKyAgICBpZiAodW5pY29kZSAhPSBOVUxMKSB7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICAgICAgZGF0YSA9IChjaGFyICopIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpICsgaW5kZXggKiBraW5kOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV8xQllURV9LSU5EOworICAgICAgICBkYXRhID0gTlVMTDsKKyAgICB9CisgICAgdGhvdXNhbmRzX3NlcF9raW5kID0gUHlVbmljb2RlX0tJTkQodGhvdXNhbmRzX3NlcCk7CisgICAgdGhvdXNhbmRzX3NlcF9kYXRhID0gUHlVbmljb2RlX0RBVEEodGhvdXNhbmRzX3NlcCk7CisgICAgdGhvdXNhbmRzX3NlcF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0aG91c2FuZHNfc2VwKTsKKyAgICBpZiAodW5pY29kZSAhPSBOVUxMICYmIHRob3VzYW5kc19zZXBfa2luZCAhPSBraW5kKSB7CisgICAgICAgIGlmICh0aG91c2FuZHNfc2VwX2tpbmQgPCBraW5kKSB7CisgICAgICAgICAgICB0aG91c2FuZHNfc2VwX2RhdGEgPSBfUHlVbmljb2RlX0FzS2luZCh0aG91c2FuZHNfc2VwLCBraW5kKTsKKyAgICAgICAgICAgIGlmICghdGhvdXNhbmRzX3NlcF9kYXRhKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRhdGEgPSBfUHlVbmljb2RlX0FzS2luZCh1bmljb2RlLCB0aG91c2FuZHNfc2VwX2tpbmQpOworICAgICAgICAgICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmICh1bmljb2RlICE9IE5VTEwgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICAgICAgbGVuID0gYXNjaWlsaWJfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoCisgICAgICAgICAgICAgICAgKFB5X1VDUzEgKikgZGF0YSwgbl9idWZmZXIsIChQeV9VQ1MxICopIGRpZ2l0cywgbl9kaWdpdHMsCisgICAgICAgICAgICAgICAgbWluX3dpZHRoLCBncm91cGluZywKKyAgICAgICAgICAgICAgICAoUHlfVUNTMSAqKSB0aG91c2FuZHNfc2VwX2RhdGEsIHRob3VzYW5kc19zZXBfbGVuKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGVuID0gdWNzMWxpYl9JbnNlcnRUaG91c2FuZHNHcm91cGluZygKKyAgICAgICAgICAgICAgICAoUHlfVUNTMSopZGF0YSwgbl9idWZmZXIsIChQeV9VQ1MxKilkaWdpdHMsIG5fZGlnaXRzLAorICAgICAgICAgICAgICAgIG1pbl93aWR0aCwgZ3JvdXBpbmcsCisgICAgICAgICAgICAgICAgKFB5X1VDUzEgKikgdGhvdXNhbmRzX3NlcF9kYXRhLCB0aG91c2FuZHNfc2VwX2xlbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIGxlbiA9IHVjczJsaWJfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoCisgICAgICAgICAgICAoUHlfVUNTMiAqKSBkYXRhLCBuX2J1ZmZlciwgKFB5X1VDUzIgKikgZGlnaXRzLCBuX2RpZ2l0cywKKyAgICAgICAgICAgIG1pbl93aWR0aCwgZ3JvdXBpbmcsCisgICAgICAgICAgICAoUHlfVUNTMiAqKSB0aG91c2FuZHNfc2VwX2RhdGEsIHRob3VzYW5kc19zZXBfbGVuKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgbGVuID0gdWNzNGxpYl9JbnNlcnRUaG91c2FuZHNHcm91cGluZygKKyAgICAgICAgICAgIChQeV9VQ1M0ICopIGRhdGEsIG5fYnVmZmVyLCAoUHlfVUNTNCAqKSBkaWdpdHMsIG5fZGlnaXRzLAorICAgICAgICAgICAgbWluX3dpZHRoLCBncm91cGluZywKKyAgICAgICAgICAgIChQeV9VQ1M0ICopIHRob3VzYW5kc19zZXBfZGF0YSwgdGhvdXNhbmRzX3NlcF9sZW4pOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHVuaWNvZGUgIT0gTlVMTCAmJiB0aG91c2FuZHNfc2VwX2tpbmQgIT0ga2luZCkgeworICAgICAgICBpZiAodGhvdXNhbmRzX3NlcF9raW5kIDwga2luZCkKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUodGhvdXNhbmRzX3NlcF9kYXRhKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUHlNZW1fRnJlZShkYXRhKTsKKyAgICB9CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkgeworICAgICAgICAqbWF4Y2hhciA9IDEyNzsKKyAgICAgICAgaWYgKGxlbiAhPSBuX2RpZ2l0cykgeworICAgICAgICAgICAgKm1heGNoYXIgPSBNQVhfTUFYQ0hBUigqbWF4Y2hhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHRob3VzYW5kc19zZXApKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbGVuOworfQorCiAKIC8qIGhlbHBlciBtYWNybyB0byBmaXh1cCBzdGFydC9lbmQgc2xpY2UgdmFsdWVzICovCiAjZGVmaW5lIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbikgICAgICAgICBcCkBAIC02NDUxLDcyICs4OTI4LDEwMiBAQAogICAgICAgICAgICAgc3RhcnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KIAotLyogX1B5X1VOSUNPREVfTkVYVCBpcyBhIHByaXZhdGUgbWFjcm8gdXNlZCB0byByZXRyaWV2ZSB0aGUgY2hhcmFjdGVyIHBvaW50ZWQKLSAqIGJ5ICdwdHInLCBwb3NzaWJseSBjb21iaW5pbmcgc3Vycm9nYXRlIHBhaXJzIG9uIG5hcnJvdyBidWlsZHMuCi0gKiAncHRyJyBhbmQgJ2VuZCcgbXVzdCBiZSBQeV9VTklDT0RFKiwgd2l0aCAncHRyJyBwb2ludGluZyBhdCB0aGUgY2hhcmFjdGVyCi0gKiB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCBhbmQgJ2VuZCcgcG9pbnRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgYnVmZmVyLgotICogKCdlbmQnIGlzIHVzZWQgb24gbmFycm93IGJ1aWxkcyB0byBkZXRlY3QgYSBsb25lIHN1cnJvZ2F0ZSBhdCB0aGUKLSAqIGVuZCBvZiB0aGUgYnVmZmVyIHRoYXQgc2hvdWxkIGJlIHJldHVybmVkIHVuY2hhbmdlZC4pCi0gKiBUaGUgcHRyIGFuZCBlbmQgYXJndW1lbnRzIHNob3VsZCBiZSBzaWRlLWVmZmVjdCBmcmVlIGFuZCBwdHIgbXVzdCBhbiBsdmFsdWUuCi0gKiBUaGUgdHlwZSBvZiB0aGUgcmV0dXJuZWQgY2hhciBpcyBhbHdheXMgUHlfVUNTNC4KLSAqCi0gKiBOb3RlOiB0aGUgbWFjcm8gYWR2YW5jZXMgcHRyIHRvIG5leHQgY2hhciwgc28gaXQgbWlnaHQgaGF2ZSBzaWRlLWVmZmVjdHMKLSAqICAgICAgIChlc3BlY2lhbGx5IGlmIHVzZWQgd2l0aCBvdGhlciBtYWNyb3MpLgotICovCi0KLS8qIGhlbHBlciBtYWNyb3MgdXNlZCBieSBfUHlfVU5JQ09ERV9ORVhUICovCi0jZGVmaW5lIF9QeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFKGNoKSAoMHhEODAwIDw9IGNoICYmIGNoIDw9IDB4REJGRikKLSNkZWZpbmUgX1B5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURShjaCkgKDB4REMwMCA8PSBjaCAmJiBjaCA8PSAweERGRkYpCi0vKiBKb2luIHR3byBzdXJyb2dhdGUgY2hhcmFjdGVycyBhbmQgcmV0dXJuIGEgc2luZ2xlIFB5X1VDUzQgdmFsdWUuICovCi0jZGVmaW5lIF9QeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUyhoaWdoLCBsb3cpICBcCi0gICAgKCgoKChQeV9VQ1M0KShoaWdoKSAmIDB4MDNGRikgPDwgMTApIHwgICAgICBcCi0gICAgICAoKFB5X1VDUzQpKGxvdykgJiAweDAzRkYpKSArIDB4MTAwMDApCi0KLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSNkZWZpbmUgX1B5X1VOSUNPREVfTkVYVChwdHIsIGVuZCkgKihwdHIpKysKLSNlbHNlCi0jZGVmaW5lIF9QeV9VTklDT0RFX05FWFQocHRyLCBlbmQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICgoKF9QeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFKCoocHRyKSkgJiYgKHB0cikgPCAoZW5kKSkgJiYgICAgICBcCi0gICAgICAgIF9QeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUoKHB0cilbMV0pKSA/ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgKChwdHIpICs9IDIsX1B5X1VOSUNPREVfSk9JTl9TVVJST0dBVEVTKChwdHIpWy0yXSwgKHB0cilbLTFdKSkgOiBcCi0gICAgICAgKFB5X1VDUzQpKihwdHIpKyspCi0jZW5kaWYKLQotUHlfc3NpemVfdCBQeVVuaWNvZGVfQ291bnQoUHlPYmplY3QgKnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQpCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfQ291bnQoUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vic3RyLAorICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQpCiB7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7Ci0gICAgUHlVbmljb2RlT2JqZWN0KiBzdHJfb2JqOwotICAgIFB5VW5pY29kZU9iamVjdCogc3ViX29iajsKKyAgICBQeU9iamVjdCogc3RyX29iajsKKyAgICBQeU9iamVjdCogc3ViX29iajsKKyAgICBpbnQga2luZDEsIGtpbmQyLCBraW5kOworICAgIHZvaWQgKmJ1ZjEgPSBOVUxMLCAqYnVmMiA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCi0gICAgc3RyX29iaiA9IChQeVVuaWNvZGVPYmplY3QqKSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOworICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmICghc3RyX29iaikKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHN1Yl9vYmogPSAoUHlVbmljb2RlT2JqZWN0KikgUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vic3RyKTsKKyAgICBzdWJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vic3RyKTsKICAgICBpZiAoIXN1Yl9vYmopIHsKICAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3ViX29iaikgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHN0cl9vYmopID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgc3RyX29iai0+bGVuZ3RoKTsKLSAgICByZXN1bHQgPSBzdHJpbmdsaWJfY291bnQoCi0gICAgICAgIHN0cl9vYmotPnN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViX29iai0+c3RyLCBzdWJfb2JqLT5sZW5ndGgsCi0gICAgICAgIFBZX1NTSVpFX1RfTUFYCi0gICAgICAgICk7CisgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHJfb2JqKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1Yl9vYmopOworICAgIGtpbmQgPSBraW5kMTsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX29iaik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1Yl9vYmopOworICAgIGlmIChraW5kMiAhPSBraW5kKSB7CisgICAgICAgIGlmIChraW5kMiA+IGtpbmQpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJfb2JqLCBraW5kKTsKKyAgICB9CisgICAgaWYgKCFidWYyKQorICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cl9vYmopOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJfb2JqKTsKKworICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbjEpOworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyX29iaikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN1Yl9vYmopKQorICAgICAgICAgICAgcmVzdWx0ID0gYXNjaWlsaWJfY291bnQoCisgICAgICAgICAgICAgICAgKChQeV9VQ1MxKilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgICAgICBidWYyLCBsZW4yLCBQWV9TU0laRV9UX01BWAorICAgICAgICAgICAgICAgICk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IHVjczFsaWJfY291bnQoCisgICAgICAgICAgICAgICAgKChQeV9VQ1MxKilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgICAgICBidWYyLCBsZW4yLCBQWV9TU0laRV9UX01BWAorICAgICAgICAgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIHJlc3VsdCA9IHVjczJsaWJfY291bnQoCisgICAgICAgICAgICAoKFB5X1VDUzIqKWJ1ZjEpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKKyAgICAgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJlc3VsdCA9IHVjczRsaWJfY291bnQoCisgICAgICAgICAgICAoKFB5X1VDUzQqKWJ1ZjEpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKKyAgICAgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsgcmVzdWx0ID0gMDsKKyAgICB9CiAKICAgICBQeV9ERUNSRUYoc3ViX29iaik7CiAgICAgUHlfREVDUkVGKHN0cl9vYmopOwogCisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CisKICAgICByZXR1cm4gcmVzdWx0OworICBvbkVycm9yOgorICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKKyAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgaWYgKGtpbmQyICE9IGtpbmQgJiYgYnVmMikKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKKyAgICByZXR1cm4gLTE7CiB9CiAKLVB5X3NzaXplX3QgUHlVbmljb2RlX0ZpbmQoUHlPYmplY3QgKnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfRmluZChQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YiwKKyAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwKKyAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CiAKQEAgLTY1MjgsMTkgKzkwMzUsMTUgQEAKICAgICAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiAtMjsKICAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWIpID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWIpOworICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KIAotICAgIGlmIChkaXJlY3Rpb24gPiAwKQotICAgICAgICByZXN1bHQgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3ViKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN1YiksCi0gICAgICAgICAgICBzdGFydCwgZW5kCi0gICAgICAgICAgICApOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAotICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdWIpLCBQeVVuaWNvZGVfR0VUX1NJWkUoc3ViKSwKLSAgICAgICAgICAgIHN0YXJ0LCBlbmQKLSAgICAgICAgICAgICk7CisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoZGlyZWN0aW9uLAorICAgICAgICBzdHIsIHN1Yiwgc3RhcnQsIGVuZAorICAgICAgICApOwogCiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgUHlfREVDUkVGKHN1Yik7CkBAIC02NTQ4LDM3ICs5MDUxLDEwNCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYwotaW50IHRhaWxtYXRjaChQeVVuaWNvZGVPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nLAotICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAotICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwKLSAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKK1B5X3NzaXplX3QKK1B5VW5pY29kZV9GaW5kQ2hhcihQeU9iamVjdCAqc3RyLCBQeV9VQ1M0IGNoLAorICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kLAorICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7Ci0gICAgaWYgKHN1YnN0cmluZy0+bGVuZ3RoID09IDApCisgICAgaW50IGtpbmQ7CisgICAgUHlfc3NpemVfdCByZXN1bHQ7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gLTI7CisgICAgaWYgKHN0YXJ0IDwgMCB8fCBlbmQgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAic3RyaW5nIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorICAgIGlmIChlbmQgPiBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKQorICAgICAgICBlbmQgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIHJlc3VsdCA9IGZpbmRjaGFyKFB5VW5pY29kZV8xQllURV9EQVRBKHN0cikgKyBraW5kKnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgIGtpbmQsIGVuZC1zdGFydCwgY2gsIGRpcmVjdGlvbik7CisgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHN0YXJ0ICsgcmVzdWx0OworfQorCitzdGF0aWMgaW50Cit0YWlsbWF0Y2goUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgUHlPYmplY3QgKnN1YnN0cmluZywKKyAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAorICAgICAgICAgIGludCBkaXJlY3Rpb24pCit7CisgICAgaW50IGtpbmRfc2VsZjsKKyAgICBpbnQga2luZF9zdWI7CisgICAgdm9pZCAqZGF0YV9zZWxmOworICAgIHZvaWQgKmRhdGFfc3ViOworICAgIFB5X3NzaXplX3Qgb2Zmc2V0OworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeV9zc2l6ZV90IGVuZF9zdWI7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xIHx8CisgICAgICAgIFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpID09IDApCiAgICAgICAgIHJldHVybiAxOwogCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgc2VsZi0+bGVuZ3RoKTsKLSAgICBlbmQgLT0gc3Vic3RyaW5nLT5sZW5ndGg7CisgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikpOworICAgIGVuZCAtPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpOwogICAgIGlmIChlbmQgPCBzdGFydCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoZGlyZWN0aW9uID4gMCkgewotICAgICAgICBpZiAoUHlfVU5JQ09ERV9NQVRDSChzZWxmLCBlbmQsIHN1YnN0cmluZykpCisgICAga2luZF9zZWxmID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YV9zZWxmID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAga2luZF9zdWIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHJpbmcpOworICAgIGRhdGFfc3ViID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyaW5nKTsKKyAgICBlbmRfc3ViID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKSAtIDE7CisKKyAgICBpZiAoZGlyZWN0aW9uID4gMCkKKyAgICAgICAgb2Zmc2V0ID0gZW5kOworICAgIGVsc2UKKyAgICAgICAgb2Zmc2V0ID0gc3RhcnQ7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZF9zZWxmLCBkYXRhX3NlbGYsIG9mZnNldCkgPT0KKyAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZF9zdWIsIGRhdGFfc3ViLCAwKSAmJgorICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kX3NlbGYsIGRhdGFfc2VsZiwgb2Zmc2V0ICsgZW5kX3N1YikgPT0KKyAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZF9zdWIsIGRhdGFfc3ViLCBlbmRfc3ViKSkgeworICAgICAgICAvKiBJZiBib3RoIGFyZSBvZiB0aGUgc2FtZSBraW5kLCBtZW1jbXAgaXMgc3VmZmljaWVudCAqLworICAgICAgICBpZiAoa2luZF9zZWxmID09IGtpbmRfc3ViKSB7CisgICAgICAgICAgICByZXR1cm4gISBtZW1jbXAoKGNoYXIgKilkYXRhX3NlbGYgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2Zmc2V0ICogUHlVbmljb2RlX0tJTkQoc3Vic3RyaW5nKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZykpOworICAgICAgICB9CisgICAgICAgIC8qIG90aGVyd2lzZSB3ZSBoYXZlIHRvIGNvbXBhcmUgZWFjaCBjaGFyYWN0ZXIgYnkgZmlyc3QgYWNjZXNpbmcgaXQgKi8KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBXZSBkbyBub3QgbmVlZCB0byBjb21wYXJlIDAgYW5kIGxlbihzdWJzdHJpbmcpLTEgYmVjYXVzZQorICAgICAgICAgICAgICAgdGhlIGlmIHN0YXRlbWVudCBhYm92ZSBlbnN1cmVkIGFscmVhZHkgdGhhdCB0aGV5IGFyZSBlcXVhbAorICAgICAgICAgICAgICAgd2hlbiB3ZSBlbmQgdXAgaGVyZS4gKi8KKyAgICAgICAgICAgIC8qIFRPRE86IGhvbm9yIGRpcmVjdGlvbiBhbmQgZG8gYSBmb3J3YXJkIG9yIGJhY2t3YXJkcyBzZWFyY2ggKi8KKyAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCBlbmRfc3ViOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZF9zZWxmLCBkYXRhX3NlbGYsIG9mZnNldCArIGkpICE9CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmRfc3ViLCBkYXRhX3N1YiwgaSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKFB5X1VOSUNPREVfTUFUQ0goc2VsZiwgc3RhcnQsIHN1YnN0cmluZykpCi0gICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiAwOwogfQogCi1QeV9zc2l6ZV90IFB5VW5pY29kZV9UYWlsbWF0Y2goUHlPYmplY3QgKnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vic3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKK1B5X3NzaXplX3QKK1B5VW5pY29kZV9UYWlsbWF0Y2goUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YnN0ciwKKyAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCisgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CiAKQEAgLTY1OTEsOCArOTE2MSw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICByZXN1bHQgPSB0YWlsbWF0Y2goKFB5VW5pY29kZU9iamVjdCAqKXN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgKFB5VW5pY29kZU9iamVjdCAqKXN1YnN0ciwKKyAgICByZXN1bHQgPSB0YWlsbWF0Y2goc3RyLCBzdWJzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgUHlfREVDUkVGKHN1YnN0cik7CkBAIC02NjAyLDE2OCArOTE3MSwzMTIgQEAKIC8qIEFwcGx5IGZpeGZjdCBmaWx0ZXIgdG8gdGhlIFVuaWNvZGUgb2JqZWN0IHNlbGYgYW5kIHJldHVybiBhCiAgICByZWZlcmVuY2UgdG8gdGhlIG1vZGlmaWVkIG9iamVjdCAqLwogCi1zdGF0aWMKLVB5T2JqZWN0ICpmaXh1cChQeVVuaWNvZGVPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgaW50ICgqZml4ZmN0KShQeVVuaWNvZGVPYmplY3QgKnMpKQorc3RhdGljIFB5T2JqZWN0ICoKK2ZpeHVwKFB5T2JqZWN0ICpzZWxmLAorICAgICAgUHlfVUNTNCAoKmZpeGZjdCkoUHlPYmplY3QgKnMpKQogeworICAgIFB5T2JqZWN0ICp1OworICAgIFB5X1VDUzQgbWF4Y2hhcl9vbGQsIG1heGNoYXJfbmV3ID0gMDsKKyAgICBQeU9iamVjdCAqdjsKIAotICAgIFB5VW5pY29kZU9iamVjdCAqdTsKLQotICAgIHUgPSAoUHlVbmljb2RlT2JqZWN0KikgUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHNlbGYtPmxlbmd0aCk7CisgICAgdSA9IF9QeVVuaWNvZGVfQ29weShzZWxmKTsKICAgICBpZiAodSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtYXhjaGFyX29sZCA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1KTsKIAotICAgIFB5X1VOSUNPREVfQ09QWSh1LT5zdHIsIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoKTsKKyAgICAvKiBmaXggZnVuY3Rpb25zIHJldHVybiB0aGUgbmV3IG1heGltdW0gY2hhcmFjdGVyIGluIGEgc3RyaW5nLAorICAgICAgIGlmIHRoZSBraW5kIG9mIHRoZSByZXN1bHRpbmcgdW5pY29kZSBvYmplY3QgZG9lcyBub3QgY2hhbmdlLAorICAgICAgIGV2ZXJ5dGhpbmcgaXMgZmluZS4gIE90aGVyd2lzZSB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUgc3RyaW5nIGtpbmQKKyAgICAgICBhbmQgcmUtcnVuIHRoZSBmaXggZnVuY3Rpb24uICovCisgICAgbWF4Y2hhcl9uZXcgPSBmaXhmY3QodSk7CiAKLSAgICBpZiAoIWZpeGZjdCh1KSAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICAvKiBmaXhmY3Qgc2hvdWxkIHJldHVybiBUUlVFIGlmIGl0IG1vZGlmaWVkIHRoZSBidWZmZXIuIElmCi0gICAgICAgICAgIEZBTFNFLCByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIG9yaWdpbmFsIGJ1ZmZlciBpbnN0ZWFkCi0gICAgICAgICAgICh0byBzYXZlIHNwYWNlLCBub3QgdGltZSkgKi8KLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOworICAgIGlmIChtYXhjaGFyX25ldyA9PSAwKSB7CisgICAgICAgIC8qIG5vIGNoYW5nZXMgKi87CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHUpOworICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOworICAgICAgICAgICAgcmV0dXJuIHNlbGY7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHU7CisgICAgfQorCisgICAgbWF4Y2hhcl9uZXcgPSBhbGlnbl9tYXhjaGFyKG1heGNoYXJfbmV3KTsKKworICAgIGlmIChtYXhjaGFyX25ldyA9PSBtYXhjaGFyX29sZCkKKyAgICAgICAgcmV0dXJuIHU7CisKKyAgICAvKiBJbiBjYXNlIHRoZSBtYXhpbXVtIGNoYXJhY3RlciBjaGFuZ2VkLCB3ZSBuZWVkIHRvCisgICAgICAgY29udmVydCB0aGUgc3RyaW5nIHRvIHRoZSBuZXcgY2F0ZWdvcnkuICovCisgICAgdiA9IFB5VW5pY29kZV9OZXcoUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIG1heGNoYXJfbmV3KTsKKyAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRih1KTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gKFB5T2JqZWN0KikgdTsKKyAgICBpZiAobWF4Y2hhcl9uZXcgPiBtYXhjaGFyX29sZCkgeworICAgICAgICAvKiBJZiB0aGUgbWF4Y2hhciBpbmNyZWFzZWQgc28gdGhhdCB0aGUga2luZCBjaGFuZ2VkLCBub3QgYWxsCisgICAgICAgICAgIGNoYXJhY3RlcnMgYXJlIHJlcHJlc2VudGFibGUgYW55bW9yZSBhbmQgd2UgbmVlZCB0byBmaXggdGhlCisgICAgICAgICAgIHN0cmluZyBhZ2Fpbi4gVGhpcyBvbmx5IGhhcHBlbnMgaW4gdmVyeSBmZXcgY2FzZXMuICovCisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHYsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpKTsKKyAgICAgICAgbWF4Y2hhcl9vbGQgPSBmaXhmY3Qodik7CisgICAgICAgIGFzc2VydChtYXhjaGFyX29sZCA+IDAgJiYgbWF4Y2hhcl9vbGQgPD0gbWF4Y2hhcl9uZXcpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnModiwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSwgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikpOworICAgIH0KKyAgICBQeV9ERUNSRUYodSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh2LCAxKSk7CisgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYwotaW50IGZpeHVwcGVyKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3N0YXRpYyBQeU9iamVjdCAqCithc2NpaV91cHBlcl9vcl9sb3dlcihQeU9iamVjdCAqc2VsZiwgaW50IGxvd2VyKQogewotICAgIFB5X3NzaXplX3QgbGVuID0gc2VsZi0+bGVuZ3RoOwotICAgIFB5X1VOSUNPREUgKnMgPSBzZWxmLT5zdHI7Ci0gICAgaW50IHN0YXR1cyA9IDA7CisgICAgUHlfc3NpemVfdCBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBjaGFyICpyZXNkYXRhLCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIFB5T2JqZWN0ICpyZXM7CiAKLSAgICB3aGlsZSAobGVuLS0gPiAwKSB7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgY2g7CisgICAgcmVzID0gUHlVbmljb2RlX05ldyhsZW4sIDEyNyk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXNkYXRhID0gUHlVbmljb2RlX0RBVEEocmVzKTsKKyAgICBpZiAobG93ZXIpCisgICAgICAgIF9QeV9ieXRlc19sb3dlcihyZXNkYXRhLCBkYXRhLCBsZW4pOworICAgIGVsc2UKKyAgICAgICAgX1B5X2J5dGVzX3VwcGVyKHJlc2RhdGEsIGRhdGEsIGxlbik7CisgICAgcmV0dXJuIHJlczsKK30KIAotICAgICAgICBjaCA9IFB5X1VOSUNPREVfVE9VUFBFUigqcyk7Ci0gICAgICAgIGlmIChjaCAhPSAqcykgewotICAgICAgICAgICAgc3RhdHVzID0gMTsKLSAgICAgICAgICAgICpzID0gY2g7CitzdGF0aWMgUHlfVUNTNAoraGFuZGxlX2NhcGl0YWxfc2lnbWEoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9zc2l6ZV90IGkpCit7CisgICAgUHlfc3NpemVfdCBqOworICAgIGludCBmaW5hbF9zaWdtYTsKKyAgICBQeV9VQ1M0IGM7CisgICAgLyogVSswM0EzIGlzIGluIHRoZSBGaW5hbF9TaWdtYSBjb250ZXh0IHdoZW4sIGl0IGlzIGZvdW5kIGxpa2UgdGhpczoKKworICAgICBccHtjYXNlZH1ccHtjYXNlLWlnbm9yYWJsZX0qVSswM0EzIShccHtjYXNlLWlnbm9yYWJsZX0qXHB7Y2FzZWR9KQorCisgICAgd2hlcmUgISBpcyBhIG5lZ2F0aW9uIGFuZCBccHt4eHh9IGlzIGEgY2hhcmFjdGVyIHdpdGggcHJvcGVydHkgeHh4LgorICAgICovCisgICAgZm9yIChqID0gaSAtIDE7IGogPj0gMDsgai0tKSB7CisgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBqKTsKKyAgICAgICAgaWYgKCFfUHlVbmljb2RlX0lzQ2FzZUlnbm9yYWJsZShjKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBmaW5hbF9zaWdtYSA9IGogPj0gMCAmJiBfUHlVbmljb2RlX0lzQ2FzZWQoYyk7CisgICAgaWYgKGZpbmFsX3NpZ21hKSB7CisgICAgICAgIGZvciAoaiA9IGkgKyAxOyBqIDwgbGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBqKTsKKyAgICAgICAgICAgIGlmICghX1B5VW5pY29kZV9Jc0Nhc2VJZ25vcmFibGUoYykpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgcysrOworICAgICAgICBmaW5hbF9zaWdtYSA9IGogPT0gbGVuZ3RoIHx8ICFfUHlVbmljb2RlX0lzQ2FzZWQoYyk7CiAgICAgfQotCi0gICAgcmV0dXJuIHN0YXR1czsKKyAgICByZXR1cm4gKGZpbmFsX3NpZ21hKSA/IDB4M0MyIDogMHgzQzM7CiB9CiAKLXN0YXRpYwotaW50IGZpeGxvd2VyKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3N0YXRpYyBpbnQKK2xvd2VyX3VjczQoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9zc2l6ZV90IGksCisgICAgICAgICAgIFB5X1VDUzQgYywgUHlfVUNTNCAqbWFwcGVkKQogewotICAgIFB5X3NzaXplX3QgbGVuID0gc2VsZi0+bGVuZ3RoOwotICAgIFB5X1VOSUNPREUgKnMgPSBzZWxmLT5zdHI7Ci0gICAgaW50IHN0YXR1cyA9IDA7CisgICAgLyogT2JzY3VyZSBzcGVjaWFsIGNhc2UuICovCisgICAgaWYgKGMgPT0gMHgzQTMpIHsKKyAgICAgICAgbWFwcGVkWzBdID0gaGFuZGxlX2NhcGl0YWxfc2lnbWEoa2luZCwgZGF0YSwgbGVuZ3RoLCBpKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiBfUHlVbmljb2RlX1RvTG93ZXJGdWxsKGMsIG1hcHBlZCk7Cit9CiAKLSAgICB3aGlsZSAobGVuLS0gPiAwKSB7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgY2g7CitzdGF0aWMgUHlfc3NpemVfdAorZG9fY2FwaXRhbGl6ZShpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgKnJlcywgUHlfVUNTNCAqbWF4Y2hhcikKK3sKKyAgICBQeV9zc2l6ZV90IGksIGsgPSAwOworICAgIGludCBuX3JlcywgajsKKyAgICBQeV9VQ1M0IGMsIG1hcHBlZFszXTsKIAotICAgICAgICBjaCA9IFB5X1VOSUNPREVfVE9MT1dFUigqcyk7Ci0gICAgICAgIGlmIChjaCAhPSAqcykgewotICAgICAgICAgICAgc3RhdHVzID0gMTsKLSAgICAgICAgICAgICpzID0gY2g7CisgICAgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApOworICAgIG5fcmVzID0gX1B5VW5pY29kZV9Ub1VwcGVyRnVsbChjLCBtYXBwZWQpOworICAgIGZvciAoaiA9IDA7IGogPCBuX3JlczsgaisrKSB7CisgICAgICAgICptYXhjaGFyID0gTUFYX01BWENIQVIoKm1heGNoYXIsIG1hcHBlZFtqXSk7CisgICAgICAgIHJlc1trKytdID0gbWFwcGVkW2pdOworICAgIH0KKyAgICBmb3IgKGkgPSAxOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBuX3JlcyA9IGxvd2VyX3VjczQoa2luZCwgZGF0YSwgbGVuZ3RoLCBpLCBjLCBtYXBwZWQpOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgbl9yZXM7IGorKykgeworICAgICAgICAgICAgKm1heGNoYXIgPSBNQVhfTUFYQ0hBUigqbWF4Y2hhciwgbWFwcGVkW2pdKTsKKyAgICAgICAgICAgIHJlc1trKytdID0gbWFwcGVkW2pdOwogICAgICAgICB9Ci0gICAgICAgIHMrKzsKICAgICB9Ci0KLSAgICByZXR1cm4gc3RhdHVzOworICAgIHJldHVybiBrOwogfQogCi1zdGF0aWMKLWludCBmaXhzd2FwY2FzZShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBzZWxmLT5sZW5ndGg7Ci0gICAgUHlfVU5JQ09ERSAqcyA9IHNlbGYtPnN0cjsKLSAgICBpbnQgc3RhdHVzID0gMDsKK3N0YXRpYyBQeV9zc2l6ZV90Citkb19zd2FwY2FzZShpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgKnJlcywgUHlfVUNTNCAqbWF4Y2hhcikgeworICAgIFB5X3NzaXplX3QgaSwgayA9IDA7CiAKLSAgICB3aGlsZSAobGVuLS0gPiAwKSB7Ci0gICAgICAgIGlmIChQeV9VTklDT0RFX0lTVVBQRVIoKnMpKSB7Ci0gICAgICAgICAgICAqcyA9IFB5X1VOSUNPREVfVE9MT1dFUigqcyk7Ci0gICAgICAgICAgICBzdGF0dXMgPSAxOwotICAgICAgICB9IGVsc2UgaWYgKFB5X1VOSUNPREVfSVNMT1dFUigqcykpIHsKLSAgICAgICAgICAgICpzID0gUHlfVU5JQ09ERV9UT1VQUEVSKCpzKTsKLSAgICAgICAgICAgIHN0YXR1cyA9IDE7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpLCBtYXBwZWRbM107CisgICAgICAgIGludCBuX3JlcywgajsKKyAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNVUFBFUihjKSkgeworICAgICAgICAgICAgbl9yZXMgPSBsb3dlcl91Y3M0KGtpbmQsIGRhdGEsIGxlbmd0aCwgaSwgYywgbWFwcGVkKTsKICAgICAgICAgfQotICAgICAgICBzKys7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0YXR1czsKLX0KLQotc3RhdGljCi1pbnQgZml4Y2FwaXRhbGl6ZShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBzZWxmLT5sZW5ndGg7Ci0gICAgUHlfVU5JQ09ERSAqcyA9IHNlbGYtPnN0cjsKLSAgICBpbnQgc3RhdHVzID0gMDsKLQotICAgIGlmIChsZW4gPT0gMCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCFQeV9VTklDT0RFX0lTVVBQRVIoKnMpKSB7Ci0gICAgICAgICpzID0gUHlfVU5JQ09ERV9UT1VQUEVSKCpzKTsKLSAgICAgICAgc3RhdHVzID0gMTsKLSAgICB9Ci0gICAgcysrOwotICAgIHdoaWxlICgtLWxlbiA+IDApIHsKLSAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTTE9XRVIoKnMpKSB7Ci0gICAgICAgICAgICAqcyA9IFB5X1VOSUNPREVfVE9MT1dFUigqcyk7Ci0gICAgICAgICAgICBzdGF0dXMgPSAxOworICAgICAgICBlbHNlIGlmIChQeV9VTklDT0RFX0lTTE9XRVIoYykpIHsKKyAgICAgICAgICAgIG5fcmVzID0gX1B5VW5pY29kZV9Ub1VwcGVyRnVsbChjLCBtYXBwZWQpOwogICAgICAgICB9Ci0gICAgICAgIHMrKzsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBuX3JlcyA9IDE7CisgICAgICAgICAgICBtYXBwZWRbMF0gPSBjOworICAgICAgICB9CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBuX3JlczsgaisrKSB7CisgICAgICAgICAgICAqbWF4Y2hhciA9IE1BWF9NQVhDSEFSKCptYXhjaGFyLCBtYXBwZWRbal0pOworICAgICAgICAgICAgcmVzW2srK10gPSBtYXBwZWRbal07CisgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHN0YXR1czsKKyAgICByZXR1cm4gazsKIH0KIAotc3RhdGljCi1pbnQgZml4dGl0bGUoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQorc3RhdGljIFB5X3NzaXplX3QKK2RvX3VwcGVyX29yX2xvd2VyKGludCBraW5kLCB2b2lkICpkYXRhLCBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfVUNTNCAqcmVzLAorICAgICAgICAgICAgICAgICAgUHlfVUNTNCAqbWF4Y2hhciwgaW50IGxvd2VyKQogewotICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgayA9IDA7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSksIG1hcHBlZFszXTsKKyAgICAgICAgaW50IG5fcmVzLCBqOworICAgICAgICBpZiAobG93ZXIpCisgICAgICAgICAgICBuX3JlcyA9IGxvd2VyX3VjczQoa2luZCwgZGF0YSwgbGVuZ3RoLCBpLCBjLCBtYXBwZWQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBuX3JlcyA9IF9QeVVuaWNvZGVfVG9VcHBlckZ1bGwoYywgbWFwcGVkKTsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IG5fcmVzOyBqKyspIHsKKyAgICAgICAgICAgICptYXhjaGFyID0gTUFYX01BWENIQVIoKm1heGNoYXIsIG1hcHBlZFtqXSk7CisgICAgICAgICAgICByZXNbaysrXSA9IG1hcHBlZFtqXTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gazsKK30KKworc3RhdGljIFB5X3NzaXplX3QKK2RvX3VwcGVyKGludCBraW5kLCB2b2lkICpkYXRhLCBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfVUNTNCAqcmVzLCBQeV9VQ1M0ICptYXhjaGFyKQoreworICAgIHJldHVybiBkb191cHBlcl9vcl9sb3dlcihraW5kLCBkYXRhLCBsZW5ndGgsIHJlcywgbWF4Y2hhciwgMCk7Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90Citkb19sb3dlcihpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgKnJlcywgUHlfVUNTNCAqbWF4Y2hhcikKK3sKKyAgICByZXR1cm4gZG9fdXBwZXJfb3JfbG93ZXIoa2luZCwgZGF0YSwgbGVuZ3RoLCByZXMsIG1heGNoYXIsIDEpOworfQorCitzdGF0aWMgUHlfc3NpemVfdAorZG9fY2FzZWZvbGQoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0ICpyZXMsIFB5X1VDUzQgKm1heGNoYXIpCit7CisgICAgUHlfc3NpemVfdCBpLCBrID0gMDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgUHlfVUNTNCBtYXBwZWRbM107CisgICAgICAgIGludCBqLCBuX3JlcyA9IF9QeVVuaWNvZGVfVG9Gb2xkZWRGdWxsKGMsIG1hcHBlZCk7CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBuX3JlczsgaisrKSB7CisgICAgICAgICAgICAqbWF4Y2hhciA9IE1BWF9NQVhDSEFSKCptYXhjaGFyLCBtYXBwZWRbal0pOworICAgICAgICAgICAgcmVzW2srK10gPSBtYXBwZWRbal07CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGs7Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90Citkb190aXRsZShpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgKnJlcywgUHlfVUNTNCAqbWF4Y2hhcikKK3sKKyAgICBQeV9zc2l6ZV90IGksIGsgPSAwOwogICAgIGludCBwcmV2aW91c19pc19jYXNlZDsKIAotICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEpIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9IFB5X1VOSUNPREVfVE9USVRMRSgqcCk7Ci0gICAgICAgIGlmICgqcCAhPSBjaCkgewotICAgICAgICAgICAgKnAgPSBjaDsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwogICAgIHByZXZpb3VzX2lzX2Nhc2VkID0gMDsKLSAgICBmb3IgKDsgcCA8IGU7IHArKykgewotICAgICAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFIGNoID0gKnA7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBQeV9VQ1M0IG1hcHBlZFszXTsKKyAgICAgICAgaW50IG5fcmVzLCBqOwogCiAgICAgICAgIGlmIChwcmV2aW91c19pc19jYXNlZCkKLSAgICAgICAgICAgICpwID0gUHlfVU5JQ09ERV9UT0xPV0VSKGNoKTsKKyAgICAgICAgICAgIG5fcmVzID0gbG93ZXJfdWNzNChraW5kLCBkYXRhLCBsZW5ndGgsIGksIGMsIG1hcHBlZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICpwID0gUHlfVU5JQ09ERV9UT1RJVExFKGNoKTsKKyAgICAgICAgICAgIG5fcmVzID0gX1B5VW5pY29kZV9Ub1RpdGxlRnVsbChjLCBtYXBwZWQpOwogCi0gICAgICAgIGlmIChQeV9VTklDT0RFX0lTTE9XRVIoY2gpIHx8Ci0gICAgICAgICAgICBQeV9VTklDT0RFX0lTVVBQRVIoY2gpIHx8Ci0gICAgICAgICAgICBQeV9VTklDT0RFX0lTVElUTEUoY2gpKQotICAgICAgICAgICAgcHJldmlvdXNfaXNfY2FzZWQgPSAxOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwcmV2aW91c19pc19jYXNlZCA9IDA7CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBuX3JlczsgaisrKSB7CisgICAgICAgICAgICAqbWF4Y2hhciA9IE1BWF9NQVhDSEFSKCptYXhjaGFyLCBtYXBwZWRbal0pOworICAgICAgICAgICAgcmVzW2srK10gPSBtYXBwZWRbal07CisgICAgICAgIH0KKworICAgICAgICBwcmV2aW91c19pc19jYXNlZCA9IF9QeVVuaWNvZGVfSXNDYXNlZChjKTsKICAgICB9Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGs7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjYXNlX29wZXJhdGlvbihQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKCpwZXJmb3JtKShpbnQsIHZvaWQgKiwgUHlfc3NpemVfdCwgUHlfVUNTNCAqLCBQeV9VQ1M0ICopKQoreworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbGVuZ3RoLCBuZXdsZW5ndGggPSAwOworICAgIGludCBraW5kLCBvdXRraW5kOworICAgIHZvaWQgKmRhdGEsICpvdXRkYXRhOworICAgIFB5X1VDUzQgbWF4Y2hhciA9IDAsICp0bXAsICp0bXBlbmQ7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHNlbGYpKTsKKworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgdG1wID0gUHlNZW1fTUFMTE9DKHNpemVvZihQeV9VQ1M0KSAqIDMgKiBsZW5ndGgpOworICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgbmV3bGVuZ3RoID0gcGVyZm9ybShraW5kLCBkYXRhLCBsZW5ndGgsIHRtcCwgJm1heGNoYXIpOworICAgIHJlcyA9IFB5VW5pY29kZV9OZXcobmV3bGVuZ3RoLCBtYXhjaGFyKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIGdvdG8gbGVhdmU7CisgICAgdG1wZW5kID0gdG1wICsgbmV3bGVuZ3RoOworICAgIG91dGRhdGEgPSBQeVVuaWNvZGVfREFUQShyZXMpOworICAgIG91dGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXMpOworICAgIHN3aXRjaCAob3V0a2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VQ1M0LCBQeV9VQ1MxLCB0bXAsIHRtcGVuZCwgb3V0ZGF0YSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VQ1M0LCBQeV9VQ1MyLCB0bXAsIHRtcGVuZCwgb3V0ZGF0YSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIG1lbWNweShvdXRkYXRhLCB0bXAsIHNpemVvZihQeV9VQ1M0KSAqIG5ld2xlbmd0aCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICBsZWF2ZToKKyAgICBQeU1lbV9GUkVFKHRtcCk7CisgICAgcmV0dXJuIHJlczsKIH0KIAogUHlPYmplY3QgKgogUHlVbmljb2RlX0pvaW4oUHlPYmplY3QgKnNlcGFyYXRvciwgUHlPYmplY3QgKnNlcSkKIHsKLSAgICBjb25zdCBQeV9VTklDT0RFIGJsYW5rID0gJyAnOwotICAgIGNvbnN0IFB5X1VOSUNPREUgKnNlcCA9ICZibGFuazsKLSAgICBQeV9zc2l6ZV90IHNlcGxlbiA9IDE7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpyZXMgPSBOVUxMOyAvKiB0aGUgcmVzdWx0ICovCi0gICAgUHlfVU5JQ09ERSAqcmVzX3A7ICAgICAgIC8qIHBvaW50ZXIgdG8gZnJlZSBieXRlIGluIHJlcydzIHN0cmluZyBhcmVhICovCisgICAgUHlPYmplY3QgKnNlcCA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBzZXBsZW47CisgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7IC8qIHRoZSByZXN1bHQgKi8KICAgICBQeU9iamVjdCAqZnNlcTsgICAgICAgICAgLyogUHlTZXF1ZW5jZV9GYXN0KHNlcSkgKi8KICAgICBQeV9zc2l6ZV90IHNlcWxlbjsgICAgICAgLyogbGVuKGZzZXEpIC0tIG51bWJlciBvZiBpdGVtcyBpbiBzZXF1ZW5jZSAqLwogICAgIFB5T2JqZWN0ICoqaXRlbXM7CiAgICAgUHlPYmplY3QgKml0ZW07Ci0gICAgUHlfc3NpemVfdCBzeiwgaTsKKyAgICBQeV9zc2l6ZV90IHN6LCBpLCByZXNfb2Zmc2V0OworICAgIFB5X1VDUzQgbWF4Y2hhcjsKKyAgICBQeV9VQ1M0IGl0ZW1fbWF4Y2hhcjsKKyAgICBpbnQgdXNlX21lbWNweTsKKyAgICB1bnNpZ25lZCBjaGFyICpyZXNfZGF0YSA9IE5VTEwsICpzZXBfZGF0YSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmxhc3Rfb2JqOworICAgIHVuc2lnbmVkIGludCBraW5kID0gMDsKIAogICAgIGZzZXEgPSBQeVNlcXVlbmNlX0Zhc3Qoc2VxLCAiIik7CiAgICAgaWYgKGZzZXEgPT0gTlVMTCkgewpAQCAtNjc3NywyNCArOTQ5MCwzMiBAQAogICAgIHNlcWxlbiA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShmc2VxKTsKICAgICAvKiBJZiBlbXB0eSBzZXF1ZW5jZSwgcmV0dXJuIHUiIi4gKi8KICAgICBpZiAoc2VxbGVuID09IDApIHsKLSAgICAgICAgcmVzID0gX1B5VW5pY29kZV9OZXcoMCk7ICAvKiBlbXB0eSBzZXF1ZW5jZTsgcmV0dXJuIHUiIiAqLwotICAgICAgICBnb3RvIERvbmU7CisgICAgICAgIFB5X0RFQ1JFRihmc2VxKTsKKyAgICAgICAgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCk7CiAgICAgfQotICAgIGl0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0lURU1TKGZzZXEpOworCiAgICAgLyogSWYgc2luZ2xldG9uIHNlcXVlbmNlIHdpdGggYW4gZXhhY3QgVW5pY29kZSwgcmV0dXJuIHRoYXQuICovCisgICAgbGFzdF9vYmogPSBOVUxMOworICAgIGl0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0lURU1TKGZzZXEpOwogICAgIGlmIChzZXFsZW4gPT0gMSkgewotICAgICAgICBpdGVtID0gaXRlbXNbMF07Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChpdGVtKSkgewotICAgICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOwotICAgICAgICAgICAgcmVzID0gKFB5VW5pY29kZU9iamVjdCAqKWl0ZW07Ci0gICAgICAgICAgICBnb3RvIERvbmU7CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChpdGVtc1swXSkpIHsKKyAgICAgICAgICAgIHJlcyA9IGl0ZW1zWzBdOworICAgICAgICAgICAgUHlfSU5DUkVGKHJlcyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZnNlcSk7CisgICAgICAgICAgICByZXR1cm4gcmVzOwogICAgICAgICB9CisgICAgICAgIHNlcGxlbiA9IDA7CisgICAgICAgIG1heGNoYXIgPSAwOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogU2V0IHVwIHNlcCBhbmQgc2VwbGVuICovCiAgICAgICAgIGlmIChzZXBhcmF0b3IgPT0gTlVMTCkgewotICAgICAgICAgICAgc2VwID0gJmJsYW5rOworICAgICAgICAgICAgLyogZmFsbCBiYWNrIHRvIGEgYmxhbmsgc3BhY2Ugc2VwYXJhdG9yICovCisgICAgICAgICAgICBzZXAgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoJyAnKTsKKyAgICAgICAgICAgIGlmICghc2VwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIHNlcGxlbiA9IDE7CisgICAgICAgICAgICBtYXhjaGFyID0gMzI7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzZXBhcmF0b3IpKSB7CkBAIC02ODA0LDkgKzk1MjUsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzZXBhcmF0b3IpLT50cF9uYW1lKTsKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzZXAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZXBhcmF0b3IpOwotICAgICAgICAgICAgc2VwbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHNlcGFyYXRvcik7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlcGFyYXRvcikpCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgc2VwID0gc2VwYXJhdG9yOworICAgICAgICAgICAgc2VwbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VwYXJhdG9yKTsKKyAgICAgICAgICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoc2VwYXJhdG9yKTsKKyAgICAgICAgICAgIC8qIGluYyByZWZjb3VudCB0byBrZWVwIHRoaXMgY29kZSBwYXRoIHN5bW1ldHJpYyB3aXRoIHRoZQorICAgICAgICAgICAgICAgYWJvdmUgY2FzZSBvZiBhIGJsYW5rIHNlcGFyYXRvciAqLworICAgICAgICAgICAgUHlfSU5DUkVGKHNlcCk7CiAgICAgICAgIH0KKyAgICAgICAgbGFzdF9vYmogPSBzZXA7CiAgICAgfQogCiAgICAgLyogVGhlcmUgYXJlIGF0IGxlYXN0IHR3byB0aGluZ3MgdG8gam9pbiwgb3IgZWxzZSB3ZSBoYXZlIGEgc3ViY2xhc3MKQEAgLTY4MTUsNiArOTU0MywxMSBAQAogICAgICAqIG5lZWQgKHN6KSwgYW5kIHNlZSB3aGV0aGVyIGFsbCBhcmd1bWVudCBhcmUgc3RyaW5ncy4KICAgICAgKi8KICAgICBzeiA9IDA7CisjaWZkZWYgUHlfREVCVUcKKyAgICB1c2VfbWVtY3B5ID0gMDsKKyNlbHNlCisgICAgdXNlX21lbWNweSA9IDE7CisjZW5kaWYKICAgICBmb3IgKGkgPSAwOyBpIDwgc2VxbGVuOyBpKyspIHsKICAgICAgICAgY29uc3QgUHlfc3NpemVfdCBvbGRfc3ogPSBzejsKICAgICAgICAgaXRlbSA9IGl0ZW1zW2ldOwpAQCAtNjgyNSw3ICs5NTU4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgaSwgUHlfVFlQRShpdGVtKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgIH0KLSAgICAgICAgc3ogKz0gUHlVbmljb2RlX0dFVF9TSVpFKGl0ZW0pOworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGl0ZW0pID09IC0xKQorICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBzeiArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpdGVtKTsKKyAgICAgICAgaXRlbV9tYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKGl0ZW0pOworICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgaXRlbV9tYXhjaGFyKTsKICAgICAgICAgaWYgKGkgIT0gMCkKICAgICAgICAgICAgIHN6ICs9IHNlcGxlbjsKICAgICAgICAgaWYgKHN6IDwgb2xkX3N6IHx8IHN6ID4gUFlfU1NJWkVfVF9NQVgpIHsKQEAgLTY4MzMsMjY2ICs5NTcwLDcyOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJqb2luKCkgcmVzdWx0IGlzIHRvbyBsb25nIGZvciBhIFB5dGhvbiBzdHJpbmciKTsKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgfQorICAgICAgICBpZiAodXNlX21lbWNweSAmJiBsYXN0X29iaiAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0tJTkQobGFzdF9vYmopICE9IFB5VW5pY29kZV9LSU5EKGl0ZW0pKQorICAgICAgICAgICAgICAgIHVzZV9tZW1jcHkgPSAwOworICAgICAgICB9CisgICAgICAgIGxhc3Rfb2JqID0gaXRlbTsKICAgICB9CiAKLSAgICByZXMgPSBfUHlVbmljb2RlX05ldyhzeik7CisgICAgcmVzID0gUHlVbmljb2RlX05ldyhzeiwgbWF4Y2hhcik7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICBnb3RvIG9uRXJyb3I7CiAKICAgICAvKiBDYXRlbmF0ZSBldmVyeXRoaW5nLiAqLwotICAgIHJlc19wID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgc2VxbGVuOyArK2kpIHsKKyNpZmRlZiBQeV9ERUJVRworICAgIHVzZV9tZW1jcHkgPSAwOworI2Vsc2UKKyAgICBpZiAodXNlX21lbWNweSkgeworICAgICAgICByZXNfZGF0YSA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJlcyk7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXMpOworICAgICAgICBpZiAoc2VwbGVuICE9IDApCisgICAgICAgICAgICBzZXBfZGF0YSA9IFB5VW5pY29kZV8xQllURV9EQVRBKHNlcCk7CisgICAgfQorI2VuZGlmCisgICAgZm9yIChpID0gMCwgcmVzX29mZnNldCA9IDA7IGkgPCBzZXFsZW47ICsraSkgewogICAgICAgICBQeV9zc2l6ZV90IGl0ZW1sZW47CiAgICAgICAgIGl0ZW0gPSBpdGVtc1tpXTsKLSAgICAgICAgaXRlbWxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShpdGVtKTsKICAgICAgICAgLyogQ29weSBpdGVtLCBhbmQgbWF5YmUgdGhlIHNlcGFyYXRvci4gKi8KLSAgICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShyZXNfcCwgc2VwLCBzZXBsZW4pOwotICAgICAgICAgICAgcmVzX3AgKz0gc2VwbGVuOworICAgICAgICBpZiAoaSAmJiBzZXBsZW4gIT0gMCkgeworICAgICAgICAgICAgaWYgKHVzZV9tZW1jcHkpIHsKKyAgICAgICAgICAgICAgICBQeV9NRU1DUFkocmVzX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kICogc2VwbGVuKTsKKyAgICAgICAgICAgICAgICByZXNfZGF0YSArPSBraW5kICogc2VwbGVuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMocmVzLCByZXNfb2Zmc2V0LCBzZXAsIDAsIHNlcGxlbik7CisgICAgICAgICAgICAgICAgcmVzX29mZnNldCArPSBzZXBsZW47CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHJlc19wLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShpdGVtKSwgaXRlbWxlbik7Ci0gICAgICAgIHJlc19wICs9IGl0ZW1sZW47CisgICAgICAgIGl0ZW1sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpdGVtKTsKKyAgICAgICAgaWYgKGl0ZW1sZW4gIT0gMCkgeworICAgICAgICAgICAgaWYgKHVzZV9tZW1jcHkpIHsKKyAgICAgICAgICAgICAgICBQeV9NRU1DUFkocmVzX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9EQVRBKGl0ZW0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kICogaXRlbWxlbik7CisgICAgICAgICAgICAgICAgcmVzX2RhdGEgKz0ga2luZCAqIGl0ZW1sZW47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhyZXMsIHJlc19vZmZzZXQsIGl0ZW0sIDAsIGl0ZW1sZW4pOworICAgICAgICAgICAgICAgIHJlc19vZmZzZXQgKz0gaXRlbWxlbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KKyAgICBpZiAodXNlX21lbWNweSkKKyAgICAgICAgYXNzZXJ0KHJlc19kYXRhID09IFB5VW5pY29kZV8xQllURV9EQVRBKHJlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsga2luZCAqIFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcykpOworICAgIGVsc2UKKyAgICAgICAgYXNzZXJ0KHJlc19vZmZzZXQgPT0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzKSk7CiAKLSAgRG9uZToKICAgICBQeV9ERUNSRUYoZnNlcSk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXJlczsKKyAgICBQeV9YREVDUkVGKHNlcCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKKyAgICByZXR1cm4gcmVzOwogCiAgIG9uRXJyb3I6CiAgICAgUHlfREVDUkVGKGZzZXEpOworICAgIFB5X1hERUNSRUYoc2VwKTsKICAgICBQeV9YREVDUkVGKHJlcyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYwotUHlVbmljb2RlT2JqZWN0ICpwYWQoUHlVbmljb2RlT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZWZ0LAotICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCByaWdodCwKLSAgICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgZmlsbCkKKyNkZWZpbmUgRklMTChraW5kLCBkYXRhLCB2YWx1ZSwgc3RhcnQsIGxlbmd0aCkgXAorICAgIGRvIHsgXAorICAgICAgICBQeV9zc2l6ZV90IGlfID0gMDsgXAorICAgICAgICBhc3NlcnQoa2luZCAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORCk7IFwKKyAgICAgICAgc3dpdGNoICgoa2luZCkpIHsgXAorICAgICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOiB7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiB0b18gPSAodW5zaWduZWQgY2hhciAqKSgoZGF0YSkpICsgKHN0YXJ0KTsgXAorICAgICAgICAgICAgbWVtc2V0KHRvXywgKHVuc2lnbmVkIGNoYXIpdmFsdWUsIChsZW5ndGgpKTsgXAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6IHsgXAorICAgICAgICAgICAgUHlfVUNTMiAqIHRvXyA9IChQeV9VQ1MyICopKChkYXRhKSkgKyAoc3RhcnQpOyBcCisgICAgICAgICAgICBmb3IgKDsgaV8gPCAobGVuZ3RoKTsgKytpXywgKyt0b18pICp0b18gPSAodmFsdWUpOyBcCisgICAgICAgICAgICBicmVhazsgXAorICAgICAgICB9IFwKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDogeyBcCisgICAgICAgICAgICBQeV9VQ1M0ICogdG9fID0gKFB5X1VDUzQgKikoKGRhdGEpKSArIChzdGFydCk7IFwKKyAgICAgICAgICAgIGZvciAoOyBpXyA8IChsZW5ndGgpOyArK2lfLCArK3RvXykgKnRvXyA9ICh2YWx1ZSk7IFwKKyAgICAgICAgICAgIGJyZWFrOyBcCisgICAgICAgIGRlZmF1bHQ6IGFzc2VydCgwKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSB3aGlsZSAoMCkKKwordm9pZAorX1B5VW5pY29kZV9GYXN0RmlsbChQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgZmlsbF9jaGFyKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdTsKKyAgICBjb25zdCBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBjb25zdCB2b2lkICpkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSk7CisgICAgYXNzZXJ0KHVuaWNvZGVfbW9kaWZpYWJsZSh1bmljb2RlKSk7CisgICAgYXNzZXJ0KGZpbGxfY2hhciA8PSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodW5pY29kZSkpOworICAgIGFzc2VydChzdGFydCA+PSAwKTsKKyAgICBhc3NlcnQoc3RhcnQgKyBsZW5ndGggPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpOworICAgIEZJTEwoa2luZCwgZGF0YSwgZmlsbF9jaGFyLCBzdGFydCwgbGVuZ3RoKTsKK30KKworUHlfc3NpemVfdAorUHlVbmljb2RlX0ZpbGwoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgUHlfVUNTNCBmaWxsX2NoYXIpCit7CisgICAgUHlfc3NpemVfdCBtYXhsZW47CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHVuaWNvZGVfY2hlY2tfbW9kaWZpYWJsZSh1bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKHN0YXJ0IDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInN0cmluZyBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoZmlsbF9jaGFyID4gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxsIGNoYXJhY3RlciBpcyBiaWdnZXIgdGhhbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBzdHJpbmcgbWF4aW11bSBjaGFyYWN0ZXIiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIG1heGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpIC0gc3RhcnQ7CisgICAgbGVuZ3RoID0gUHlfTUlOKG1heGxlbiwgbGVuZ3RoKTsKKyAgICBpZiAobGVuZ3RoIDw9IDApCisgICAgICAgIHJldHVybiAwOworCisgICAgX1B5VW5pY29kZV9GYXN0RmlsbCh1bmljb2RlLCBzdGFydCwgbGVuZ3RoLCBmaWxsX2NoYXIpOworICAgIHJldHVybiBsZW5ndGg7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitwYWQoUHlPYmplY3QgKnNlbGYsCisgICAgUHlfc3NpemVfdCBsZWZ0LAorICAgIFB5X3NzaXplX3QgcmlnaHQsCisgICAgUHlfVUNTNCBmaWxsKQoreworICAgIFB5T2JqZWN0ICp1OworICAgIFB5X1VDUzQgbWF4Y2hhcjsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogCiAgICAgaWYgKGxlZnQgPCAwKQogICAgICAgICBsZWZ0ID0gMDsKICAgICBpZiAocmlnaHQgPCAwKQogICAgICAgICByaWdodCA9IDA7CiAKLSAgICBpZiAobGVmdCA9PSAwICYmIHJpZ2h0ID09IDAgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gc2VsZjsKLSAgICB9CisgICAgaWYgKGxlZnQgPT0gMCAmJiByaWdodCA9PSAwKQorICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHNlbGYpOwogCi0gICAgaWYgKGxlZnQgPiBQWV9TU0laRV9UX01BWCAtIHNlbGYtPmxlbmd0aCB8fAotICAgICAgICByaWdodCA+IFBZX1NTSVpFX1RfTUFYIC0gKGxlZnQgKyBzZWxmLT5sZW5ndGgpKSB7CisgICAgaWYgKGxlZnQgPiBQWV9TU0laRV9UX01BWCAtIF9QeVVuaWNvZGVfTEVOR1RIKHNlbGYpIHx8CisgICAgICAgIHJpZ2h0ID4gUFlfU1NJWkVfVF9NQVggLSAobGVmdCArIF9QeVVuaWNvZGVfTEVOR1RIKHNlbGYpKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInBhZGRlZCBzdHJpbmcgaXMgdG9vIGxvbmciKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHUgPSBfUHlVbmljb2RlX05ldyhsZWZ0ICsgc2VsZi0+bGVuZ3RoICsgcmlnaHQpOwotICAgIGlmICh1KSB7Ci0gICAgICAgIGlmIChsZWZ0KQotICAgICAgICAgICAgUHlfVU5JQ09ERV9GSUxMKHUtPnN0ciwgZmlsbCwgbGVmdCk7Ci0gICAgICAgIFB5X1VOSUNPREVfQ09QWSh1LT5zdHIgKyBsZWZ0LCBzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCk7Ci0gICAgICAgIGlmIChyaWdodCkKLSAgICAgICAgICAgIFB5X1VOSUNPREVfRklMTCh1LT5zdHIgKyBsZWZ0ICsgc2VsZi0+bGVuZ3RoLCBmaWxsLCByaWdodCk7Ci0gICAgfQorICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoc2VsZik7CisgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGZpbGwpOworICAgIHUgPSBQeVVuaWNvZGVfTmV3KGxlZnQgKyBfUHlVbmljb2RlX0xFTkdUSChzZWxmKSArIHJpZ2h0LCBtYXhjaGFyKTsKKyAgICBpZiAoIXUpCisgICAgICAgIHJldHVybiBOVUxMOwogCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1KTsKKyAgICBpZiAobGVmdCkKKyAgICAgICAgRklMTChraW5kLCBkYXRhLCBmaWxsLCAwLCBsZWZ0KTsKKyAgICBpZiAocmlnaHQpCisgICAgICAgIEZJTEwoa2luZCwgZGF0YSwgZmlsbCwgbGVmdCArIF9QeVVuaWNvZGVfTEVOR1RIKHNlbGYpLCByaWdodCk7CisgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnModSwgbGVmdCwgc2VsZiwgMCwgX1B5VW5pY29kZV9MRU5HVEgoc2VsZikpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodSwgMSkpOwogICAgIHJldHVybiB1OwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX1NwbGl0bGluZXMoUHlPYmplY3QgKnN0cmluZywgaW50IGtlZXBlbmRzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX1NwbGl0bGluZXMoUHlPYmplY3QgKnN0cmluZywgaW50IGtlZXBlbmRzKQogewogICAgIFB5T2JqZWN0ICpsaXN0OwogCiAgICAgc3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyaW5nKTsKICAgICBpZiAoc3RyaW5nID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyaW5nKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYoc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgbGlzdCA9IHN0cmluZ2xpYl9zcGxpdGxpbmVzKAotICAgICAgICAoUHlPYmplY3QqKSBzdHJpbmcsIFB5VW5pY29kZV9BU19VTklDT0RFKHN0cmluZyksCi0gICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHJpbmcpLCBrZWVwZW5kcyk7Ci0KKyAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHN0cmluZykpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHN0cmluZykpCisgICAgICAgICAgICBsaXN0ID0gYXNjaWlsaWJfc3BsaXRsaW5lcygKKyAgICAgICAgICAgICAgICBzdHJpbmcsIFB5VW5pY29kZV8xQllURV9EQVRBKHN0cmluZyksCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKSwga2VlcGVuZHMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsaXN0ID0gdWNzMWxpYl9zcGxpdGxpbmVzKAorICAgICAgICAgICAgICAgIHN0cmluZywgUHlVbmljb2RlXzFCWVRFX0RBVEEoc3RyaW5nKSwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpLCBrZWVwZW5kcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIGxpc3QgPSB1Y3MybGliX3NwbGl0bGluZXMoCisgICAgICAgICAgICBzdHJpbmcsIFB5VW5pY29kZV8yQllURV9EQVRBKHN0cmluZyksCisgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpLCBrZWVwZW5kcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIGxpc3QgPSB1Y3M0bGliX3NwbGl0bGluZXMoCisgICAgICAgICAgICBzdHJpbmcsIFB5VW5pY29kZV80QllURV9EQVRBKHN0cmluZyksCisgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpLCBrZWVwZW5kcyk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgbGlzdCA9IDA7CisgICAgfQogICAgIFB5X0RFQ1JFRihzdHJpbmcpOwogICAgIHJldHVybiBsaXN0OwogfQogCi1zdGF0aWMKLVB5T2JqZWN0ICpzcGxpdChQeVVuaWNvZGVPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlT2JqZWN0ICpzdWJzdHJpbmcsCi0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3N0YXRpYyBQeU9iamVjdCAqCitzcGxpdChQeU9iamVjdCAqc2VsZiwKKyAgICAgIFB5T2JqZWN0ICpzdWJzdHJpbmcsCisgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQogeworICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CisgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOworICAgIFB5T2JqZWN0KiBvdXQ7CisKICAgICBpZiAobWF4Y291bnQgPCAwKQogICAgICAgICBtYXhjb3VudCA9IFBZX1NTSVpFX1RfTUFYOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpCi0gICAgICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRfd2hpdGVzcGFjZSgKLSAgICAgICAgICAgIChQeU9iamVjdCopIHNlbGYsICBzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCwgbWF4Y291bnQKLSAgICAgICAgICAgICk7CisgICAgICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQoc2VsZikpIHsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFzY2lpbGliX3NwbGl0X3doaXRlc3BhY2UoCisgICAgICAgICAgICAgICAgICAgIHNlbGYsICBQeVVuaWNvZGVfMUJZVEVfREFUQShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIG1heGNvdW50CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIHVjczFsaWJfc3BsaXRfd2hpdGVzcGFjZSgKKyAgICAgICAgICAgICAgICAgICAgc2VsZiwgIFB5VW5pY29kZV8xQllURV9EQVRBKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSwgbWF4Y291bnQKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgICAgIHJldHVybiB1Y3MybGliX3NwbGl0X3doaXRlc3BhY2UoCisgICAgICAgICAgICAgICAgc2VsZiwgIFB5VW5pY29kZV8yQllURV9EQVRBKHNlbGYpLAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjb3VudAorICAgICAgICAgICAgICAgICk7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXR1cm4gdWNzNGxpYl9zcGxpdF93aGl0ZXNwYWNlKAorICAgICAgICAgICAgICAgIHNlbGYsICBQeVVuaWNvZGVfNEJZVEVfREFUQShzZWxmKSwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSwgbWF4Y291bnQKKyAgICAgICAgICAgICAgICApOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYXNzZXJ0KDApOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KIAotICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXQoCi0gICAgICAgIChQeU9iamVjdCopIHNlbGYsICBzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCwKLSAgICAgICAgc3Vic3RyaW5nLT5zdHIsIHN1YnN0cmluZy0+bGVuZ3RoLAotICAgICAgICBtYXhjb3VudAotICAgICAgICApOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyaW5nKTsKKyAgICBraW5kID0ga2luZDEgPiBraW5kMiA/IGtpbmQxIDoga2luZDI7CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHJpbmcpOworICAgIGlmIChraW5kMSAhPSBraW5kKQorICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VsZiwga2luZCk7CisgICAgaWYgKCFidWYxKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1YnN0cmluZywga2luZCk7CisgICAgaWYgKCFidWYyKSB7CisgICAgICAgIGlmIChraW5kMSAhPSBraW5kKSBQeU1lbV9GcmVlKGJ1ZjEpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpOworCisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzZWxmKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc3Vic3RyaW5nKSkKKyAgICAgICAgICAgIG91dCA9IGFzY2lpbGliX3NwbGl0KAorICAgICAgICAgICAgICAgIHNlbGYsICBidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBtYXhjb3VudCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dCA9IHVjczFsaWJfc3BsaXQoCisgICAgICAgICAgICAgICAgc2VsZiwgIGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG1heGNvdW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgb3V0ID0gdWNzMmxpYl9zcGxpdCgKKyAgICAgICAgICAgIHNlbGYsICBidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBtYXhjb3VudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIG91dCA9IHVjczRsaWJfc3BsaXQoCisgICAgICAgICAgICBzZWxmLCAgYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgbWF4Y291bnQpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBvdXQgPSBOVUxMOworICAgIH0KKyAgICBpZiAoa2luZDEgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKKyAgICByZXR1cm4gb3V0OwogfQogCi1zdGF0aWMKLVB5T2JqZWN0ICpyc3BsaXQoUHlVbmljb2RlT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZywKLSAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3N0YXRpYyBQeU9iamVjdCAqCityc3BsaXQoUHlPYmplY3QgKnNlbGYsCisgICAgICAgUHlPYmplY3QgKnN1YnN0cmluZywKKyAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQogeworICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CisgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOworICAgIFB5T2JqZWN0KiBvdXQ7CisKICAgICBpZiAobWF4Y291bnQgPCAwKQogICAgICAgICBtYXhjb3VudCA9IFBZX1NTSVpFX1RfTUFYOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpCi0gICAgICAgIHJldHVybiBzdHJpbmdsaWJfcnNwbGl0X3doaXRlc3BhY2UoCi0gICAgICAgICAgICAoUHlPYmplY3QqKSBzZWxmLCAgc2VsZi0+c3RyLCBzZWxmLT5sZW5ndGgsIG1heGNvdW50Ci0gICAgICAgICAgICApOworICAgICAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHNlbGYpKSB7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHNlbGYpKQorICAgICAgICAgICAgICAgIHJldHVybiBhc2NpaWxpYl9yc3BsaXRfd2hpdGVzcGFjZSgKKyAgICAgICAgICAgICAgICAgICAgc2VsZiwgIFB5VW5pY29kZV8xQllURV9EQVRBKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSwgbWF4Y291bnQKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9yc3BsaXRfd2hpdGVzcGFjZSgKKyAgICAgICAgICAgICAgICAgICAgc2VsZiwgIFB5VW5pY29kZV8xQllURV9EQVRBKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSwgbWF4Y291bnQKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgICAgIHJldHVybiB1Y3MybGliX3JzcGxpdF93aGl0ZXNwYWNlKAorICAgICAgICAgICAgICAgIHNlbGYsICBQeVVuaWNvZGVfMkJZVEVfREFUQShzZWxmKSwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSwgbWF4Y291bnQKKyAgICAgICAgICAgICAgICApOworICAgICAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICAgICAgcmV0dXJuIHVjczRsaWJfcnNwbGl0X3doaXRlc3BhY2UoCisgICAgICAgICAgICAgICAgc2VsZiwgIFB5VW5pY29kZV80QllURV9EQVRBKHNlbGYpLAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjb3VudAorICAgICAgICAgICAgICAgICk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogCi0gICAgcmV0dXJuIHN0cmluZ2xpYl9yc3BsaXQoCi0gICAgICAgIChQeU9iamVjdCopIHNlbGYsICBzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCwKLSAgICAgICAgc3Vic3RyaW5nLT5zdHIsIHN1YnN0cmluZy0+bGVuZ3RoLAotICAgICAgICBtYXhjb3VudAotICAgICAgICApOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyaW5nKTsKKyAgICBraW5kID0ga2luZDEgPiBraW5kMiA/IGtpbmQxIDoga2luZDI7CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHJpbmcpOworICAgIGlmIChraW5kMSAhPSBraW5kKQorICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VsZiwga2luZCk7CisgICAgaWYgKCFidWYxKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1YnN0cmluZywga2luZCk7CisgICAgaWYgKCFidWYyKSB7CisgICAgICAgIGlmIChraW5kMSAhPSBraW5kKSBQeU1lbV9GcmVlKGJ1ZjEpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpOworCisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzZWxmKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc3Vic3RyaW5nKSkKKyAgICAgICAgICAgIG91dCA9IGFzY2lpbGliX3JzcGxpdCgKKyAgICAgICAgICAgICAgICBzZWxmLCAgYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgbWF4Y291bnQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvdXQgPSB1Y3MxbGliX3JzcGxpdCgKKyAgICAgICAgICAgICAgICBzZWxmLCAgYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgbWF4Y291bnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICBvdXQgPSB1Y3MybGliX3JzcGxpdCgKKyAgICAgICAgICAgIHNlbGYsICBidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBtYXhjb3VudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIG91dCA9IHVjczRsaWJfcnNwbGl0KAorICAgICAgICAgICAgc2VsZiwgIGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG1heGNvdW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgb3V0ID0gTlVMTDsKKyAgICB9CisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CisgICAgcmV0dXJuIG91dDsKIH0KIAotc3RhdGljCi1QeU9iamVjdCAqcmVwbGFjZShQeVVuaWNvZGVPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICBQeVVuaWNvZGVPYmplY3QgKnN0cjEsCi0gICAgICAgICAgICAgICAgICBQeVVuaWNvZGVPYmplY3QgKnN0cjIsCi0gICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQorc3RhdGljIFB5X3NzaXplX3QKK2FueWxpYl9maW5kKGludCBraW5kLCBQeU9iamVjdCAqc3RyMSwgdm9pZCAqYnVmMSwgUHlfc3NpemVfdCBsZW4xLAorICAgICAgICAgICAgUHlPYmplY3QgKnN0cjIsIHZvaWQgKmJ1ZjIsIFB5X3NzaXplX3QgbGVuMiwgUHlfc3NpemVfdCBvZmZzZXQpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1OworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyMSkgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN0cjIpKQorICAgICAgICAgICAgcmV0dXJuIGFzY2lpbGliX2ZpbmQoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgb2Zmc2V0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHVjczFsaWJfZmluZChidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBvZmZzZXQpOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiB1Y3MybGliX2ZpbmQoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgb2Zmc2V0KTsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzNGxpYl9maW5kKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG9mZnNldCk7CisgICAgfQorICAgIGFzc2VydCgwKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90CithbnlsaWJfY291bnQoaW50IGtpbmQsIFB5T2JqZWN0ICpzc3RyLCB2b2lkKiBzYnVmLCBQeV9zc2l6ZV90IHNsZW4sCisgICAgICAgICAgICAgUHlPYmplY3QgKnN0cjEsIHZvaWQgKmJ1ZjEsIFB5X3NzaXplX3QgbGVuMSwgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHNzdHIpICYmIFB5VW5pY29kZV9JU19BU0NJSShzdHIxKSkKKyAgICAgICAgICAgIHJldHVybiBhc2NpaWxpYl9jb3VudChzYnVmLCBzbGVuLCBidWYxLCBsZW4xLCBtYXhjb3VudCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiB1Y3MxbGliX2NvdW50KHNidWYsIHNsZW4sIGJ1ZjEsIGxlbjEsIG1heGNvdW50KTsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzMmxpYl9jb3VudChzYnVmLCBzbGVuLCBidWYxLCBsZW4xLCBtYXhjb3VudCk7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczRsaWJfY291bnQoc2J1Ziwgc2xlbiwgYnVmMSwgbGVuMSwgbWF4Y291bnQpOworICAgIH0KKyAgICBhc3NlcnQoMCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCityZXBsYWNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyMSwKKyAgICAgICAgUHlPYmplY3QgKnN0cjIsIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgUHlPYmplY3QgKnU7CisgICAgY2hhciAqc2J1ZiA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGNoYXIgKmJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHIxKTsKKyAgICBjaGFyICpidWYyID0gUHlVbmljb2RlX0RBVEEoc3RyMik7CisgICAgaW50IHNyZWxlYXNlID0gMCwgcmVsZWFzZTEgPSAwLCByZWxlYXNlMiA9IDA7CisgICAgaW50IHNraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgaW50IGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyMSk7CisgICAgaW50IGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3RyMik7CisgICAgUHlfc3NpemVfdCBzbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgUHlfc3NpemVfdCBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyMSk7CisgICAgUHlfc3NpemVfdCBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyMik7CisgICAgaW50IG1heXNocmluazsKKyAgICBQeV9VQ1M0IG1heGNoYXIsIG1heGNoYXJfc3RyMjsKIAogICAgIGlmIChtYXhjb3VudCA8IDApCiAgICAgICAgIG1heGNvdW50ID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgZWxzZSBpZiAobWF4Y291bnQgPT0gMCB8fCBzZWxmLT5sZW5ndGggPT0gMCkKKyAgICBlbHNlIGlmIChtYXhjb3VudCA9PSAwIHx8IHNsZW4gPT0gMCkKICAgICAgICAgZ290byBub3RoaW5nOwogCi0gICAgaWYgKHN0cjEtPmxlbmd0aCA9PSBzdHIyLT5sZW5ndGgpIHsKLSAgICAgICAgUHlfc3NpemVfdCBpOworICAgIGlmIChzdHIxID09IHN0cjIpCisgICAgICAgIGdvdG8gbm90aGluZzsKKyAgICBpZiAoc2tpbmQgPCBraW5kMSkKKyAgICAgICAgLyogc3Vic3RyaW5nIHRvbyB3aWRlIHRvIGJlIHByZXNlbnQgKi8KKyAgICAgICAgZ290byBub3RoaW5nOworCisgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzZWxmKTsKKyAgICBtYXhjaGFyX3N0cjIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoc3RyMik7CisgICAgLyogUmVwbGFjaW5nIHN0cjEgd2l0aCBzdHIyIG1heSBjYXVzZSBhIG1heGNoYXIgcmVkdWN0aW9uIGluIHRoZQorICAgICAgIHJlc3VsdCBzdHJpbmcuICovCisgICAgbWF5c2hyaW5rID0gKG1heGNoYXJfc3RyMiA8IG1heGNoYXIpOworICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBtYXhjaGFyX3N0cjIpOworCisgICAgaWYgKGxlbjEgPT0gbGVuMikgewogICAgICAgICAvKiBzYW1lIGxlbmd0aCAqLwotICAgICAgICBpZiAoc3RyMS0+bGVuZ3RoID09IDApCisgICAgICAgIGlmIChsZW4xID09IDApCiAgICAgICAgICAgICBnb3RvIG5vdGhpbmc7Ci0gICAgICAgIGlmIChzdHIxLT5sZW5ndGggPT0gMSkgeworICAgICAgICBpZiAobGVuMSA9PSAxKSB7CiAgICAgICAgICAgICAvKiByZXBsYWNlIGNoYXJhY3RlcnMgKi8KLSAgICAgICAgICAgIFB5X1VOSUNPREUgdTEsIHUyOwotICAgICAgICAgICAgaWYgKCFmaW5kY2hhcihzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCwgc3RyMS0+c3RyWzBdKSkKKyAgICAgICAgICAgIFB5X1VDUzQgdTEsIHUyOworICAgICAgICAgICAgaW50IHJraW5kOworICAgICAgICAgICAgUHlfc3NpemVfdCBpbmRleCwgcG9zOworICAgICAgICAgICAgY2hhciAqc3JjOworCisgICAgICAgICAgICB1MSA9IFB5VW5pY29kZV9SRUFEX0NIQVIoc3RyMSwgMCk7CisgICAgICAgICAgICBwb3MgPSBmaW5kY2hhcihzYnVmLCBQeVVuaWNvZGVfS0lORChzZWxmKSwgc2xlbiwgdTEsIDEpOworICAgICAgICAgICAgaWYgKHBvcyA8IDApCiAgICAgICAgICAgICAgICAgZ290byBub3RoaW5nOwotICAgICAgICAgICAgdSA9IChQeVVuaWNvZGVPYmplY3QqKSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgc2VsZi0+bGVuZ3RoKTsKKyAgICAgICAgICAgIHUyID0gUHlVbmljb2RlX1JFQURfQ0hBUihzdHIyLCAwKTsKKyAgICAgICAgICAgIHUgPSBQeVVuaWNvZGVfTmV3KHNsZW4sIG1heGNoYXIpOwogICAgICAgICAgICAgaWYgKCF1KQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHUtPnN0ciwgc2VsZi0+c3RyLCBzZWxmLT5sZW5ndGgpOwotICAgICAgICAgICAgdTEgPSBzdHIxLT5zdHJbMF07Ci0gICAgICAgICAgICB1MiA9IHN0cjItPnN0clswXTsKLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB1LT5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgICAgICBpZiAodS0+c3RyW2ldID09IHUxKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgtLW1heGNvdW50IDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB1LT5zdHJbaV0gPSB1MjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpID0gc3RyaW5nbGliX2ZpbmQoCi0gICAgICAgICAgICAgICAgc2VsZi0+c3RyLCBzZWxmLT5sZW5ndGgsIHN0cjEtPnN0ciwgc3RyMS0+bGVuZ3RoLCAwCi0gICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnModSwgMCwgc2VsZiwgMCwgc2xlbik7CisgICAgICAgICAgICBya2luZCA9IFB5VW5pY29kZV9LSU5EKHUpOworCisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUocmtpbmQsIFB5VW5pY29kZV9EQVRBKHUpLCBwb3MsIHUyKTsKKyAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgICAgIHNyYyA9IHNidWY7CisgICAgICAgICAgICB3aGlsZSAoLS1tYXhjb3VudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwb3MrKzsKKyAgICAgICAgICAgICAgICBzcmMgKz0gcG9zICogUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgICAgICAgICAgICAgc2xlbiAtPSBwb3M7CisgICAgICAgICAgICAgICAgaW5kZXggKz0gcG9zOworICAgICAgICAgICAgICAgIHBvcyA9IGZpbmRjaGFyKHNyYywgUHlVbmljb2RlX0tJTkQoc2VsZiksIHNsZW4sIHUxLCAxKTsKKyAgICAgICAgICAgICAgICBpZiAocG9zIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHJraW5kLCBQeVVuaWNvZGVfREFUQSh1KSwgaW5kZXggKyBwb3MsIHUyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGludCBya2luZCA9IHNraW5kOworICAgICAgICAgICAgY2hhciAqcmVzOworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworCisgICAgICAgICAgICBpZiAoa2luZDEgPCBya2luZCkgeworICAgICAgICAgICAgICAgIC8qIHdpZGVuIHN1YnN0cmluZyAqLworICAgICAgICAgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzdHIxLCBya2luZCk7CisgICAgICAgICAgICAgICAgaWYgKCFidWYxKSBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIHJlbGVhc2UxID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGkgPSBhbnlsaWJfZmluZChya2luZCwgc2VsZiwgc2J1Ziwgc2xlbiwgc3RyMSwgYnVmMSwgbGVuMSwgMCk7CiAgICAgICAgICAgICBpZiAoaSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBub3RoaW5nOwotICAgICAgICAgICAgdSA9IChQeVVuaWNvZGVPYmplY3QqKSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgc2VsZi0+bGVuZ3RoKTsKKyAgICAgICAgICAgIGlmIChya2luZCA+IGtpbmQyKSB7CisgICAgICAgICAgICAgICAgLyogd2lkZW4gcmVwbGFjZW1lbnQgKi8KKyAgICAgICAgICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3RyMiwgcmtpbmQpOworICAgICAgICAgICAgICAgIGlmICghYnVmMikgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICByZWxlYXNlMiA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChya2luZCA8IGtpbmQyKSB7CisgICAgICAgICAgICAgICAgLyogd2lkZW4gc2VsZiBhbmQgYnVmMSAqLworICAgICAgICAgICAgICAgIHJraW5kID0ga2luZDI7CisgICAgICAgICAgICAgICAgaWYgKHJlbGVhc2UxKSBQeU1lbV9GcmVlKGJ1ZjEpOworICAgICAgICAgICAgICAgIHJlbGVhc2UxID0gMDsKKyAgICAgICAgICAgICAgICBzYnVmID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VsZiwgcmtpbmQpOworICAgICAgICAgICAgICAgIGlmICghc2J1ZikgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBzcmVsZWFzZSA9IDE7CisgICAgICAgICAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cjEsIHJraW5kKTsKKyAgICAgICAgICAgICAgICBpZiAoIWJ1ZjEpIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgcmVsZWFzZTEgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdSA9IFB5VW5pY29kZV9OZXcoc2xlbiwgbWF4Y2hhcik7CiAgICAgICAgICAgICBpZiAoIXUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkodS0+c3RyLCBzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORCh1KSA9PSBya2luZCk7CisgICAgICAgICAgICByZXMgPSBQeVVuaWNvZGVfREFUQSh1KTsKIAorICAgICAgICAgICAgbWVtY3B5KHJlcywgc2J1ZiwgcmtpbmQgKiBzbGVuKTsKICAgICAgICAgICAgIC8qIGNoYW5nZSBldmVyeXRoaW5nIGluLXBsYWNlLCBzdGFydGluZyB3aXRoIHRoaXMgb25lICovCi0gICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkodS0+c3RyK2ksIHN0cjItPnN0ciwgc3RyMi0+bGVuZ3RoKTsKLSAgICAgICAgICAgIGkgKz0gc3RyMS0+bGVuZ3RoOworICAgICAgICAgICAgbWVtY3B5KHJlcyArIHJraW5kICogaSwKKyAgICAgICAgICAgICAgICAgICBidWYyLAorICAgICAgICAgICAgICAgICAgIHJraW5kICogbGVuMik7CisgICAgICAgICAgICBpICs9IGxlbjE7CiAKICAgICAgICAgICAgIHdoaWxlICggLS1tYXhjb3VudCA+IDApIHsKLSAgICAgICAgICAgICAgICBpID0gc3RyaW5nbGliX2ZpbmQoc2VsZi0+c3RyK2ksIHNlbGYtPmxlbmd0aC1pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIxLT5zdHIsIHN0cjEtPmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSk7CisgICAgICAgICAgICAgICAgaSA9IGFueWxpYl9maW5kKHJraW5kLCBzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYnVmK3JraW5kKmksIHNsZW4taSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyMSwgYnVmMSwgbGVuMSwgaSk7CiAgICAgICAgICAgICAgICAgaWYgKGkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWSh1LT5zdHIraSwgc3RyMi0+c3RyLCBzdHIyLT5sZW5ndGgpOwotICAgICAgICAgICAgICAgIGkgKz0gc3RyMS0+bGVuZ3RoOworICAgICAgICAgICAgICAgIG1lbWNweShyZXMgKyBya2luZCAqIGksCisgICAgICAgICAgICAgICAgICAgICAgIGJ1ZjIsCisgICAgICAgICAgICAgICAgICAgICAgIHJraW5kICogbGVuMik7CisgICAgICAgICAgICAgICAgaSArPSBsZW4xOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X3NzaXplX3QgbiwgaSwgaiwgaXJlczsKKyAgICAgICAgUHlfc3NpemVfdCBuZXdfc2l6ZTsKKyAgICAgICAgaW50IHJraW5kID0gc2tpbmQ7CisgICAgICAgIGNoYXIgKnJlczsKIAotICAgICAgICBQeV9zc2l6ZV90IG4sIGksIGo7Ci0gICAgICAgIFB5X3NzaXplX3QgcHJvZHVjdCwgbmV3X3NpemUsIGRlbHRhOwotICAgICAgICBQeV9VTklDT0RFICpwOwotCi0gICAgICAgIC8qIHJlcGxhY2Ugc3RyaW5ncyAqLwotICAgICAgICBuID0gc3RyaW5nbGliX2NvdW50KHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoLCBzdHIxLT5zdHIsIHN0cjEtPmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7CisgICAgICAgIGlmIChraW5kMSA8IHJraW5kKSB7CisgICAgICAgICAgICAvKiB3aWRlbiBzdWJzdHJpbmcgKi8KKyAgICAgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzdHIxLCBya2luZCk7CisgICAgICAgICAgICBpZiAoIWJ1ZjEpIGdvdG8gZXJyb3I7CisgICAgICAgICAgICByZWxlYXNlMSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgbiA9IGFueWxpYl9jb3VudChya2luZCwgc2VsZiwgc2J1Ziwgc2xlbiwgc3RyMSwgYnVmMSwgbGVuMSwgbWF4Y291bnQpOwogICAgICAgICBpZiAobiA9PSAwKQogICAgICAgICAgICAgZ290byBub3RoaW5nOwotICAgICAgICAvKiBuZXdfc2l6ZSA9IHNlbGYtPmxlbmd0aCArIG4gKiAoc3RyMi0+bGVuZ3RoIC0gc3RyMS0+bGVuZ3RoKSk7ICovCi0gICAgICAgIGRlbHRhID0gKHN0cjItPmxlbmd0aCAtIHN0cjEtPmxlbmd0aCk7Ci0gICAgICAgIGlmIChkZWx0YSA9PSAwKSB7Ci0gICAgICAgICAgICBuZXdfc2l6ZSA9IHNlbGYtPmxlbmd0aDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHByb2R1Y3QgPSBuICogKHN0cjItPmxlbmd0aCAtIHN0cjEtPmxlbmd0aCk7Ci0gICAgICAgICAgICBpZiAoKHByb2R1Y3QgLyAoc3RyMi0+bGVuZ3RoIC0gc3RyMS0+bGVuZ3RoKSkgIT0gbikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZSBzdHJpbmcgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG5ld19zaXplID0gc2VsZi0+bGVuZ3RoICsgcHJvZHVjdDsKLSAgICAgICAgICAgIGlmIChuZXdfc2l6ZSA8IDApIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2Ugc3RyaW5nIGlzIHRvbyBsb25nIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChraW5kMiA8IHJraW5kKSB7CisgICAgICAgICAgICAvKiB3aWRlbiByZXBsYWNlbWVudCAqLworICAgICAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cjIsIHJraW5kKTsKKyAgICAgICAgICAgIGlmICghYnVmMikgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHJlbGVhc2UyID0gMTsKICAgICAgICAgfQotICAgICAgICB1ID0gX1B5VW5pY29kZV9OZXcobmV3X3NpemUpOworICAgICAgICBlbHNlIGlmIChraW5kMiA+IHJraW5kKSB7CisgICAgICAgICAgICAvKiB3aWRlbiBzZWxmIGFuZCBidWYxICovCisgICAgICAgICAgICBya2luZCA9IGtpbmQyOworICAgICAgICAgICAgc2J1ZiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlbGYsIHJraW5kKTsKKyAgICAgICAgICAgIGlmICghc2J1ZikgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHNyZWxlYXNlID0gMTsKKyAgICAgICAgICAgIGlmIChyZWxlYXNlMSkgUHlNZW1fRnJlZShidWYxKTsKKyAgICAgICAgICAgIHJlbGVhc2UxID0gMDsKKyAgICAgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzdHIxLCBya2luZCk7CisgICAgICAgICAgICBpZiAoIWJ1ZjEpIGdvdG8gZXJyb3I7CisgICAgICAgICAgICByZWxlYXNlMSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgLyogbmV3X3NpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSArIG4gKiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyMikgLQorICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIxKSkpOyAqLworICAgICAgICBpZiAobGVuMiA+IGxlbjEgJiYgbGVuMiAtIGxlbjEgPiAoUFlfU1NJWkVfVF9NQVggLSBzbGVuKSAvIG4pIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2Ugc3RyaW5nIGlzIHRvbyBsb25nIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBuZXdfc2l6ZSA9IHNsZW4gKyBuICogKGxlbjIgLSBsZW4xKTsKKyAgICAgICAgaWYgKG5ld19zaXplID09IDApIHsKKyAgICAgICAgICAgIF9QeV9JTkNSRUZfVU5JQ09ERV9FTVBUWSgpOworICAgICAgICAgICAgaWYgKCF1bmljb2RlX2VtcHR5KQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB1ID0gdW5pY29kZV9lbXB0eTsKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgfQorICAgICAgICBpZiAobmV3X3NpemUgPiAoUFlfU1NJWkVfVF9NQVggPj4gKHJraW5kLTEpKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2Ugc3RyaW5nIGlzIHRvbyBsb25nIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIHUgPSBQeVVuaWNvZGVfTmV3KG5ld19zaXplLCBtYXhjaGFyKTsKICAgICAgICAgaWYgKCF1KQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGkgPSAwOwotICAgICAgICBwID0gdS0+c3RyOwotICAgICAgICBpZiAoc3RyMS0+bGVuZ3RoID4gMCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHUpID09IHJraW5kKTsKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX0RBVEEodSk7CisgICAgICAgIGlyZXMgPSBpID0gMDsKKyAgICAgICAgaWYgKGxlbjEgPiAwKSB7CiAgICAgICAgICAgICB3aGlsZSAobi0tID4gMCkgewogICAgICAgICAgICAgICAgIC8qIGxvb2sgZm9yIG5leHQgbWF0Y2ggKi8KLSAgICAgICAgICAgICAgICBqID0gc3RyaW5nbGliX2ZpbmQoc2VsZi0+c3RyK2ksIHNlbGYtPmxlbmd0aC1pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIxLT5zdHIsIHN0cjEtPmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSk7CisgICAgICAgICAgICAgICAgaiA9IGFueWxpYl9maW5kKHJraW5kLCBzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYnVmICsgcmtpbmQgKiBpLCBzbGVuLWksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cjEsIGJ1ZjEsIGxlbjEsIGkpOwogICAgICAgICAgICAgICAgIGlmIChqID09IC0xKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChqID4gaSkgewogICAgICAgICAgICAgICAgICAgICAvKiBjb3B5IHVuY2hhbmdlZCBwYXJ0IFtpOmpdICovCi0gICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShwLCBzZWxmLT5zdHIraSwgai1pKTsKLSAgICAgICAgICAgICAgICAgICAgcCArPSBqIC0gaTsKKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHJlcyArIHJraW5kICogaXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNidWYgKyBya2luZCAqIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBya2luZCAqIChqLWkpKTsKKyAgICAgICAgICAgICAgICAgICAgaXJlcyArPSBqIC0gaTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLyogY29weSBzdWJzdGl0dXRpb24gc3RyaW5nICovCi0gICAgICAgICAgICAgICAgaWYgKHN0cjItPmxlbmd0aCA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHAsIHN0cjItPnN0ciwgc3RyMi0+bGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAgICAgcCArPSBzdHIyLT5sZW5ndGg7CisgICAgICAgICAgICAgICAgaWYgKGxlbjIgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIG1lbWNweShyZXMgKyBya2luZCAqIGlyZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmtpbmQgKiBsZW4yKTsKKyAgICAgICAgICAgICAgICAgICAgaXJlcyArPSBsZW4yOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpID0gaiArIHN0cjEtPmxlbmd0aDsKKyAgICAgICAgICAgICAgICBpID0gaiArIGxlbjE7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaSA8IHNlbGYtPmxlbmd0aCkKKyAgICAgICAgICAgIGlmIChpIDwgc2xlbikKICAgICAgICAgICAgICAgICAvKiBjb3B5IHRhaWwgW2k6XSAqLwotICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShwLCBzZWxmLT5zdHIraSwgc2VsZi0+bGVuZ3RoLWkpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1lbWNweShyZXMgKyBya2luZCAqIGlyZXMsCisgICAgICAgICAgICAgICAgICAgICAgIHNidWYgKyBya2luZCAqIGksCisgICAgICAgICAgICAgICAgICAgICAgIHJraW5kICogKHNsZW4taSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLyogaW50ZXJsZWF2ZSAqLwogICAgICAgICAgICAgd2hpbGUgKG4gPiAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHAsIHN0cjItPnN0ciwgc3RyMi0+bGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBwICs9IHN0cjItPmxlbmd0aDsKKyAgICAgICAgICAgICAgICBtZW1jcHkocmVzICsgcmtpbmQgKiBpcmVzLAorICAgICAgICAgICAgICAgICAgICAgICBidWYyLAorICAgICAgICAgICAgICAgICAgICAgICBya2luZCAqIGxlbjIpOworICAgICAgICAgICAgICAgIGlyZXMgKz0gbGVuMjsKICAgICAgICAgICAgICAgICBpZiAoLS1uIDw9IDApCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICpwKysgPSBzZWxmLT5zdHJbaSsrXTsKKyAgICAgICAgICAgICAgICBtZW1jcHkocmVzICsgcmtpbmQgKiBpcmVzLAorICAgICAgICAgICAgICAgICAgICAgICBzYnVmICsgcmtpbmQgKiBpLAorICAgICAgICAgICAgICAgICAgICAgICBya2luZCk7CisgICAgICAgICAgICAgICAgaXJlcysrOworICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShwLCBzZWxmLT5zdHIraSwgc2VsZi0+bGVuZ3RoLWkpOworICAgICAgICAgICAgbWVtY3B5KHJlcyArIHJraW5kICogaXJlcywKKyAgICAgICAgICAgICAgICAgICBzYnVmICsgcmtpbmQgKiBpLAorICAgICAgICAgICAgICAgICAgIHJraW5kICogKHNsZW4taSkpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiAoUHlPYmplY3QgKikgdTsKKworICAgIGlmIChtYXlzaHJpbmspIHsKKyAgICAgICAgdW5pY29kZV9hZGp1c3RfbWF4Y2hhcigmdSk7CisgICAgICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICBkb25lOgorICAgIGlmIChzcmVsZWFzZSkKKyAgICAgICAgUHlNZW1fRlJFRShzYnVmKTsKKyAgICBpZiAocmVsZWFzZTEpCisgICAgICAgIFB5TWVtX0ZSRUUoYnVmMSk7CisgICAgaWYgKHJlbGVhc2UyKQorICAgICAgICBQeU1lbV9GUkVFKGJ1ZjIpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodSwgMSkpOworICAgIHJldHVybiB1OwogCiAgIG5vdGhpbmc6CiAgICAgLyogbm90aGluZyB0byByZXBsYWNlOyByZXR1cm4gb3JpZ2luYWwgc3RyaW5nICh3aGVuIHBvc3NpYmxlKSAqLwotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKikgc2VsZjsKLSAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCk7CisgICAgaWYgKHNyZWxlYXNlKQorICAgICAgICBQeU1lbV9GUkVFKHNidWYpOworICAgIGlmIChyZWxlYXNlMSkKKyAgICAgICAgUHlNZW1fRlJFRShidWYxKTsKKyAgICBpZiAocmVsZWFzZTIpCisgICAgICAgIFB5TWVtX0ZSRUUoYnVmMik7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKKworICBlcnJvcjoKKyAgICBpZiAoc3JlbGVhc2UgJiYgc2J1ZikKKyAgICAgICAgUHlNZW1fRlJFRShzYnVmKTsKKyAgICBpZiAocmVsZWFzZTEgJiYgYnVmMSkKKyAgICAgICAgUHlNZW1fRlJFRShidWYxKTsKKyAgICBpZiAocmVsZWFzZTIgJiYgYnVmMikKKyAgICAgICAgUHlNZW1fRlJFRShidWYyKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogLyogLS0tIFVuaWNvZGUgT2JqZWN0IE1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC03MTA0LDkgKzEwMzA0LDExIEBACiBjaGFyYWN0ZXJzLCBhbGwgcmVtYWluaW5nIGNhc2VkIGNoYXJhY3RlcnMgaGF2ZSBsb3dlciBjYXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3RpdGxlKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfdGl0bGUoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIGZpeHVwKHNlbGYsIGZpeHRpdGxlKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gY2FzZV9vcGVyYXRpb24oc2VsZiwgZG9fdGl0bGUpOwogfQogCiBQeURvY19TVFJWQVIoY2FwaXRhbGl6ZV9fZG9jX18sCkBAIC03MTE2LDU3ICsxMDMxOCwzOCBAQAogaGF2ZSB1cHBlciBjYXNlIGFuZCB0aGUgcmVzdCBsb3dlciBjYXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2NhcGl0YWxpemUoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9jYXBpdGFsaXplKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJldHVybiBmaXh1cChzZWxmLCBmaXhjYXBpdGFsaXplKTsKLX0KLQotI2lmIDAKLVB5RG9jX1NUUlZBUihjYXB3b3Jkc19fZG9jX18sCi0gICAgICAgICAgICAgIlMuY2Fwd29yZHMoKSAtPiBzdHJcblwKLVxuXAotQXBwbHkgLmNhcGl0YWxpemUoKSB0byBhbGwgd29yZHMgaW4gUyBhbmQgcmV0dXJuIHRoZSByZXN1bHQgd2l0aFxuXAotbm9ybWFsaXplZCB3aGl0ZXNwYWNlIChhbGwgd2hpdGVzcGFjZSBzdHJpbmdzIGFyZSByZXBsYWNlZCBieSAnICcpLiIpOwotCi1zdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2NhcHdvcmRzKFB5VW5pY29kZU9iamVjdCAqc2VsZikKLXsKLSAgICBQeU9iamVjdCAqbGlzdDsKLSAgICBQeU9iamVjdCAqaXRlbTsKLSAgICBQeV9zc2l6ZV90IGk7Ci0KLSAgICAvKiBTcGxpdCBpbnRvIHdvcmRzICovCi0gICAgbGlzdCA9IHNwbGl0KHNlbGYsIE5VTEwsIC0xKTsKLSAgICBpZiAoIWxpc3QpCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiBDYXBpdGFsaXplIGVhY2ggd29yZCAqLwotICAgIGZvciAoaSA9IDA7IGkgPCBQeUxpc3RfR0VUX1NJWkUobGlzdCk7IGkrKykgewotICAgICAgICBpdGVtID0gZml4dXAoKFB5VW5pY29kZU9iamVjdCAqKVB5TGlzdF9HRVRfSVRFTShsaXN0LCBpKSwKLSAgICAgICAgICAgICAgICAgICAgIGZpeGNhcGl0YWxpemUpOwotICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICBQeV9ERUNSRUYoUHlMaXN0X0dFVF9JVEVNKGxpc3QsIGkpKTsKLSAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGxpc3QsIGksIGl0ZW0pOwotICAgIH0KLQotICAgIC8qIEpvaW4gdGhlIHdvcmRzIHRvIGZvcm0gYSBuZXcgc3RyaW5nICovCi0gICAgaXRlbSA9IFB5VW5pY29kZV9Kb2luKE5VTEwsIGxpc3QpOwotCi0gIG9uRXJyb3I6Ci0gICAgUHlfREVDUkVGKGxpc3QpOwotICAgIHJldHVybiAoUHlPYmplY3QgKilpdGVtOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSA9PSAwKQorICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHNlbGYpOworICAgIHJldHVybiBjYXNlX29wZXJhdGlvbihzZWxmLCBkb19jYXBpdGFsaXplKTsKIH0KLSNlbmRpZgorCitQeURvY19TVFJWQVIoY2FzZWZvbGRfX2RvY19fLAorICAgICAgICAgICAgICJTLmNhc2Vmb2xkKCkgLT4gc3RyXG5cCitcblwKK1JldHVybiBhIHZlcnNpb24gb2YgUyBzdWl0YWJsZSBmb3IgY2FzZWxlc3MgY29tcGFyaXNvbnMuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlX2Nhc2Vmb2xkKFB5T2JqZWN0ICpzZWxmKQoreworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikpCisgICAgICAgIHJldHVybiBhc2NpaV91cHBlcl9vcl9sb3dlcihzZWxmLCAxKTsKKyAgICByZXR1cm4gY2FzZV9vcGVyYXRpb24oc2VsZiwgZG9fY2FzZWZvbGQpOworfQorCiAKIC8qIEFyZ3VtZW50IGNvbnZlcnRlci4gIENvZXJjZXMgdG8gYSBzaW5nbGUgdW5pY29kZSBjaGFyYWN0ZXIgKi8KIAogc3RhdGljIGludAogY29udmVydF91YyhQeU9iamVjdCAqb2JqLCB2b2lkICphZGRyKQogewotICAgIFB5X1VOSUNPREUgKmZpbGxjaGFybG9jID0gKFB5X1VOSUNPREUgKilhZGRyOworICAgIFB5X1VDUzQgKmZpbGxjaGFybG9jID0gKFB5X1VDUzQgKilhZGRyOwogICAgIFB5T2JqZWN0ICp1bmlvYmo7Ci0gICAgUHlfVU5JQ09ERSAqdW5pc3RyOwogCiAgICAgdW5pb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qob2JqKTsKICAgICBpZiAodW5pb2JqID09IE5VTEwpIHsKQEAgLTcxNzQsMTQgKzEwMzU3LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGZpbGwgY2hhcmFjdGVyIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gVW5pY29kZSIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRSh1bmlvYmopICE9IDEpIHsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pb2JqKSAhPSAxKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGZpbGwgY2hhcmFjdGVyIG11c3QgYmUgZXhhY3RseSBvbmUgY2hhcmFjdGVyIGxvbmciKTsKICAgICAgICAgUHlfREVDUkVGKHVuaW9iaik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICB1bmlzdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmlvYmopOwotICAgICpmaWxsY2hhcmxvYyA9IHVuaXN0clswXTsKKyAgICAqZmlsbGNoYXJsb2MgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaW9iaiwgMCk7CiAgICAgUHlfREVDUkVGKHVuaW9iaik7CiAgICAgcmV0dXJuIDE7CiB9CkBAIC03MTkzLDExMiArMTAzNzUsNjQgQEAKIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKSIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9jZW50ZXIoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfY2VudGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeV9zc2l6ZV90IG1hcmcsIGxlZnQ7CiAgICAgUHlfc3NpemVfdCB3aWR0aDsKLSAgICBQeV9VTklDT0RFIGZpbGxjaGFyID0gJyAnOworICAgIFB5X1VDUzQgZmlsbGNoYXIgPSAnICc7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58TyY6Y2VudGVyIiwgJndpZHRoLCBjb252ZXJ0X3VjLCAmZmlsbGNoYXIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChzZWxmLT5sZW5ndGggPj0gd2lkdGggJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLSAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBtYXJnID0gd2lkdGggLSBzZWxmLT5sZW5ndGg7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpID49IHdpZHRoKQorICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHNlbGYpOworCisgICAgbWFyZyA9IHdpZHRoIC0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CiAgICAgbGVmdCA9IG1hcmcgLyAyICsgKG1hcmcgJiB3aWR0aCAmIDEpOwogCi0gICAgcmV0dXJuIChQeU9iamVjdCopIHBhZChzZWxmLCBsZWZ0LCBtYXJnIC0gbGVmdCwgZmlsbGNoYXIpOworICAgIHJldHVybiBwYWQoc2VsZiwgbGVmdCwgbWFyZyAtIGxlZnQsIGZpbGxjaGFyKTsKIH0KIAotI2lmIDAKLQotLyogVGhpcyBjb2RlIHNob3VsZCBnbyBpbnRvIHNvbWUgZnV0dXJlIFVuaWNvZGUgY29sbGF0aW9uIHN1cHBvcnQKLSAgIG1vZHVsZS4gVGhlIGJhc2ljIGNvbXBhcmlzb24gc2hvdWxkIGNvbXBhcmUgb3JkaW5hbHMgb24gYSBuYWl2ZQotICAgYmFzaXMgKHRoaXMgaXMgd2hhdCBKYXZhIGRvZXMgYW5kIHRodXMgSnl0aG9uIHRvbykuICovCi0KLS8qIHNwZWVkeSBVVEYtMTYgY29kZSBwb2ludCBvcmRlciBjb21wYXJpc29uICovCi0vKiBnbGVhbmVkIGZyb206ICovCi0vKiBodHRwOi8vd3d3LTQuaWJtLmNvbS9zb2Z0d2FyZS9kZXZlbG9wZXIvbGlicmFyeS91dGYxNi5odG1sP2R3em9uZT11bmljb2RlICovCi0KLXN0YXRpYyBzaG9ydCB1dGYxNkZpeHVwWzMyXSA9Ci17Ci0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCi0gICAgMCwgMCwgMCwgMHgyMDAwLCAtMHg4MDAsIC0weDgwMCwgLTB4ODAwLCAtMHg4MDAKLX07CisvKiBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCBzdHIxIGFuZCBzdHIyIGFyZSByZWFkaWVkIGJ5IHRoZSBjYWxsZXIuICovCiAKIHN0YXRpYyBpbnQKLXVuaWNvZGVfY29tcGFyZShQeVVuaWNvZGVPYmplY3QgKnN0cjEsIFB5VW5pY29kZU9iamVjdCAqc3RyMikKK3VuaWNvZGVfY29tcGFyZShQeU9iamVjdCAqc3RyMSwgUHlPYmplY3QgKnN0cjIpCiB7Ci0gICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOworICAgIGludCBraW5kMSwga2luZDI7CisgICAgdm9pZCAqZGF0YTEsICpkYXRhMjsKKyAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjIsIGk7CiAKLSAgICBQeV9VTklDT0RFICpzMSA9IHN0cjEtPnN0cjsKLSAgICBQeV9VTklDT0RFICpzMiA9IHN0cjItPnN0cjsKKyAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cjEpOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3RyMik7CisgICAgZGF0YTEgPSBQeVVuaWNvZGVfREFUQShzdHIxKTsKKyAgICBkYXRhMiA9IFB5VW5pY29kZV9EQVRBKHN0cjIpOworICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIxKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyMik7CiAKLSAgICBsZW4xID0gc3RyMS0+bGVuZ3RoOwotICAgIGxlbjIgPSBzdHIyLT5sZW5ndGg7Ci0KLSAgICB3aGlsZSAobGVuMSA+IDAgJiYgbGVuMiA+IDApIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjMSwgYzI7Ci0KLSAgICAgICAgYzEgPSAqczErKzsKLSAgICAgICAgYzIgPSAqczIrKzsKLQotICAgICAgICBpZiAoYzEgPiAoMTw8MTEpICogMjYpCi0gICAgICAgICAgICBjMSArPSB1dGYxNkZpeHVwW2MxPj4xMV07Ci0gICAgICAgIGlmIChjMiA+ICgxPDwxMSkgKiAyNikKLSAgICAgICAgICAgIGMyICs9IHV0ZjE2Rml4dXBbYzI+PjExXTsKLSAgICAgICAgLyogbm93IGMxIGFuZCBjMiBhcmUgaW4gVVRGLTMyLWNvbXBhdGlibGUgb3JkZXIgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuMSAmJiBpIDwgbGVuMjsgKytpKSB7CisgICAgICAgIFB5X1VDUzQgYzEsIGMyOworICAgICAgICBjMSA9IFB5VW5pY29kZV9SRUFEKGtpbmQxLCBkYXRhMSwgaSk7CisgICAgICAgIGMyID0gUHlVbmljb2RlX1JFQUQoa2luZDIsIGRhdGEyLCBpKTsKIAogICAgICAgICBpZiAoYzEgIT0gYzIpCiAgICAgICAgICAgICByZXR1cm4gKGMxIDwgYzIpID8gLTEgOiAxOwotCi0gICAgICAgIGxlbjEtLTsgbGVuMi0tOwogICAgIH0KIAogICAgIHJldHVybiAobGVuMSA8IGxlbjIpID8gLTEgOiAobGVuMSAhPSBsZW4yKTsKIH0KIAotI2Vsc2UKLQotc3RhdGljIGludAotdW5pY29kZV9jb21wYXJlKFB5VW5pY29kZU9iamVjdCAqc3RyMSwgUHlVbmljb2RlT2JqZWN0ICpzdHIyKQoraW50CitQeVVuaWNvZGVfQ29tcGFyZShQeU9iamVjdCAqbGVmdCwgUHlPYmplY3QgKnJpZ2h0KQogewotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKLQotICAgIFB5X1VOSUNPREUgKnMxID0gc3RyMS0+c3RyOwotICAgIFB5X1VOSUNPREUgKnMyID0gc3RyMi0+c3RyOwotCi0gICAgbGVuMSA9IHN0cjEtPmxlbmd0aDsKLSAgICBsZW4yID0gc3RyMi0+bGVuZ3RoOwotCi0gICAgd2hpbGUgKGxlbjEgPiAwICYmIGxlbjIgPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgYzEsIGMyOwotCi0gICAgICAgIGMxID0gKnMxKys7Ci0gICAgICAgIGMyID0gKnMyKys7Ci0KLSAgICAgICAgaWYgKGMxICE9IGMyKQotICAgICAgICAgICAgcmV0dXJuIChjMSA8IGMyKSA/IC0xIDogMTsKLQotICAgICAgICBsZW4xLS07IGxlbjItLTsKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGxlZnQpICYmIFB5VW5pY29kZV9DaGVjayhyaWdodCkpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShsZWZ0KSA9PSAtMSB8fAorICAgICAgICAgICAgUHlVbmljb2RlX1JFQURZKHJpZ2h0KSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfY29tcGFyZShsZWZ0LCByaWdodCk7CiAgICAgfQotCi0gICAgcmV0dXJuIChsZW4xIDwgbGVuMikgPyAtMSA6IChsZW4xICE9IGxlbjIpOwotfQotCi0jZW5kaWYKLQotaW50IFB5VW5pY29kZV9Db21wYXJlKFB5T2JqZWN0ICpsZWZ0LAotICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyaWdodCkKLXsKLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGxlZnQpICYmIFB5VW5pY29kZV9DaGVjayhyaWdodCkpCi0gICAgICAgIHJldHVybiB1bmljb2RlX2NvbXBhcmUoKFB5VW5pY29kZU9iamVjdCAqKWxlZnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5VW5pY29kZU9iamVjdCAqKXJpZ2h0KTsKICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAiQ2FuJ3QgY29tcGFyZSAlLjEwMHMgYW5kICUuMTAwcyIsCiAgICAgICAgICAgICAgICAgIGxlZnQtPm9iX3R5cGUtPnRwX25hbWUsCkBAIC03MzA5LDE3ICsxMDQ0MywyMyBAQAogaW50CiBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhQeU9iamVjdCogdW5pLCBjb25zdCBjaGFyKiBzdHIpCiB7Ci0gICAgaW50IGk7Ci0gICAgUHlfVU5JQ09ERSAqaWQ7Ci0gICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayh1bmkpKTsKLSAgICBpZCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHVuaSk7CisgICAgUHlfc3NpemVfdCBpOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfVUNTNCBjaHI7CisKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyh1bmkpKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaSkgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pKTsKICAgICAvKiBDb21wYXJlIFVuaWNvZGUgc3RyaW5nIGFuZCBzb3VyY2UgY2hhcmFjdGVyIHNldCBzdHJpbmcgKi8KLSAgICBmb3IgKGkgPSAwOyBpZFtpXSAmJiBzdHJbaV07IGkrKykKLSAgICAgICAgaWYgKGlkW2ldICE9IHN0cltpXSkKLSAgICAgICAgICAgIHJldHVybiAoKGludClpZFtpXSA8IChpbnQpc3RyW2ldKSA/IC0xIDogMTsKKyAgICBmb3IgKGkgPSAwOyAoY2hyID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpICYmIHN0cltpXTsgaSsrKQorICAgICAgICBpZiAoY2hyICE9IHN0cltpXSkKKyAgICAgICAgICAgIHJldHVybiAoY2hyIDwgKHVuc2lnbmVkIGNoYXIpKHN0cltpXSkpID8gLTEgOiAxOwogICAgIC8qIFRoaXMgY2hlY2sga2VlcHMgUHl0aG9uIHN0cmluZ3MgdGhhdCBlbmQgaW4gJ1wwJyBmcm9tIGNvbXBhcmluZyBlcXVhbAogICAgICB0byBDIHN0cmluZ3MgaWRlbnRpY2FsIHVwIHRvIHRoYXQgcG9pbnQuICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRSh1bmkpICE9IGkgfHwgaWRbaV0pCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaSkgIT0gaSB8fCBjaHIpCiAgICAgICAgIHJldHVybiAxOyAvKiB1bmkgaXMgbG9uZ2VyICovCiAgICAgaWYgKHN0cltpXSkKICAgICAgICAgcmV0dXJuIC0xOyAvKiBzdHIgaXMgbG9uZ2VyICovCkBAIC03MzMwLDE2ICsxMDQ3MCwxOCBAQAogI2RlZmluZSBURVNUX0NPTkQoY29uZCkgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICgoY29uZCkgPyBQeV9UcnVlIDogUHlfRmFsc2UpCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfUmljaENvbXBhcmUoUHlPYmplY3QgKmxlZnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9wKQorUHlPYmplY3QgKgorUHlVbmljb2RlX1JpY2hDb21wYXJlKFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQsIGludCBvcCkKIHsKICAgICBpbnQgcmVzdWx0OwogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhsZWZ0KSAmJiBQeVVuaWNvZGVfQ2hlY2socmlnaHQpKSB7CiAgICAgICAgIFB5T2JqZWN0ICp2OwotICAgICAgICBpZiAoKChQeVVuaWNvZGVPYmplY3QgKikgbGVmdCktPmxlbmd0aCAhPQotICAgICAgICAgICAgKChQeVVuaWNvZGVPYmplY3QgKikgcmlnaHQpLT5sZW5ndGgpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShsZWZ0KSA9PSAtMSB8fAorICAgICAgICAgICAgUHlVbmljb2RlX1JFQURZKHJpZ2h0KSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgobGVmdCkgIT0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmlnaHQpIHx8CisgICAgICAgICAgICBQeVVuaWNvZGVfS0lORChsZWZ0KSAhPSBQeVVuaWNvZGVfS0lORChyaWdodCkpIHsKICAgICAgICAgICAgIGlmIChvcCA9PSBQeV9FUSkgewogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9GYWxzZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5X0ZhbHNlOwpAQCAtNzM1Miw4ICsxMDQ5NCw3IEBACiAgICAgICAgIGlmIChsZWZ0ID09IHJpZ2h0KQogICAgICAgICAgICAgcmVzdWx0ID0gMDsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gdW5pY29kZV9jb21wYXJlKChQeVVuaWNvZGVPYmplY3QgKilsZWZ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeVVuaWNvZGVPYmplY3QgKilyaWdodCk7CisgICAgICAgICAgICByZXN1bHQgPSB1bmljb2RlX2NvbXBhcmUobGVmdCwgcmlnaHQpOwogCiAgICAgICAgIC8qIENvbnZlcnQgdGhlIHJldHVybiB2YWx1ZSB0byBhIEJvb2xlYW4gKi8KICAgICAgICAgc3dpdGNoIChvcCkgewpAQCAtNzM4MywxNCArMTA1MjQsMTYgQEAKICAgICAgICAgcmV0dXJuIHY7CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCi1pbnQgUHlVbmljb2RlX0NvbnRhaW5zKFB5T2JqZWN0ICpjb250YWluZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICplbGVtZW50KQoraW50CitQeVVuaWNvZGVfQ29udGFpbnMoUHlPYmplY3QgKmNvbnRhaW5lciwgUHlPYmplY3QgKmVsZW1lbnQpCiB7CiAgICAgUHlPYmplY3QgKnN0ciwgKnN1YjsKKyAgICBpbnQga2luZDEsIGtpbmQyLCBraW5kOworICAgIHZvaWQgKmJ1ZjEsICpidWYyOworICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKICAgICBpbnQgcmVzdWx0OwogCiAgICAgLyogQ29lcmNlIHRoZSB0d28gYXJndW1lbnRzICovCkBAIC03NDA3LDUwICsxMDU1MCwxMDYgQEAKICAgICAgICAgUHlfREVDUkVGKHN1Yik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWIpID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWIpOworICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICB9CiAKLSAgICByZXN1bHQgPSBzdHJpbmdsaWJfY29udGFpbnNfb2JqKHN0ciwgc3ViKTsKKyAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWIpOworICAgIGtpbmQgPSBraW5kMTsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3ViKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkgeworICAgICAgICBpZiAoa2luZDIgPiBraW5kKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3ViKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1Yiwga2luZCk7CisgICAgfQorICAgIGlmICghYnVmMikgeworICAgICAgICBQeV9ERUNSRUYoc3ViKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1Yik7CisKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICByZXN1bHQgPSB1Y3MxbGliX2ZpbmQoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgMCkgIT0gLTE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIHJlc3VsdCA9IHVjczJsaWJfZmluZChidWYxLCBsZW4xLCBidWYyLCBsZW4yLCAwKSAhPSAtMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgcmVzdWx0ID0gdWNzNGxpYl9maW5kKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIDApICE9IC0xOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXN1bHQgPSAtMTsKKyAgICAgICAgYXNzZXJ0KDApOworICAgIH0KIAogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIFB5X0RFQ1JFRihzdWIpOwogCisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvKiBDb25jYXQgdG8gc3RyaW5nIG9yIFVuaWNvZGUgb2JqZWN0IGdpdmluZyBhIG5ldyBVbmljb2RlIG9iamVjdC4gKi8KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Db25jYXQoUHlPYmplY3QgKmxlZnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmlnaHQpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQ29uY2F0KFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1ID0gTlVMTCwgKnYgPSBOVUxMLCAqdzsKKyAgICBQeU9iamVjdCAqdSA9IE5VTEwsICp2ID0gTlVMTCwgKnc7CisgICAgUHlfVUNTNCBtYXhjaGFyLCBtYXhjaGFyMjsKKyAgICBQeV9zc2l6ZV90IHVfbGVuLCB2X2xlbiwgbmV3X2xlbjsKIAogICAgIC8qIENvZXJjZSB0aGUgdHdvIGFyZ3VtZW50cyAqLwotICAgIHUgPSAoUHlVbmljb2RlT2JqZWN0ICopUHlVbmljb2RlX0Zyb21PYmplY3QobGVmdCk7CisgICAgdSA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KGxlZnQpOwogICAgIGlmICh1ID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICB2ID0gKFB5VW5pY29kZU9iamVjdCAqKVB5VW5pY29kZV9Gcm9tT2JqZWN0KHJpZ2h0KTsKKyAgICB2ID0gUHlVbmljb2RlX0Zyb21PYmplY3QocmlnaHQpOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKIAogICAgIC8qIFNob3J0Y3V0cyAqLwogICAgIGlmICh2ID09IHVuaWNvZGVfZW1wdHkpIHsKICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdTsKKyAgICAgICAgcmV0dXJuIHU7CiAgICAgfQogICAgIGlmICh1ID09IHVuaWNvZGVfZW1wdHkpIHsKICAgICAgICAgUHlfREVDUkVGKHUpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKKyAgICAgICAgcmV0dXJuIHY7CiAgICAgfQogCisgICAgdV9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1KTsKKyAgICB2X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHYpOworICAgIGlmICh1X2xlbiA+IFBZX1NTSVpFX1RfTUFYIC0gdl9sZW4pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5ncyBhcmUgdG9vIGxhcmdlIHRvIGNvbmNhdCIpOworICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgfQorICAgIG5ld19sZW4gPSB1X2xlbiArIHZfbGVuOworCisgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1KTsKKyAgICBtYXhjaGFyMiA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh2KTsKKyAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgbWF4Y2hhcjIpOworCiAgICAgLyogQ29uY2F0IHRoZSB0d28gVW5pY29kZSBzdHJpbmdzICovCi0gICAgdyA9IF9QeVVuaWNvZGVfTmV3KHUtPmxlbmd0aCArIHYtPmxlbmd0aCk7CisgICAgdyA9IFB5VW5pY29kZV9OZXcobmV3X2xlbiwgbWF4Y2hhcik7CiAgICAgaWYgKHcgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwotICAgIFB5X1VOSUNPREVfQ09QWSh3LT5zdHIsIHUtPnN0ciwgdS0+bGVuZ3RoKTsKLSAgICBQeV9VTklDT0RFX0NPUFkody0+c3RyICsgdS0+bGVuZ3RoLCB2LT5zdHIsIHYtPmxlbmd0aCk7Ci0KKyAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3LCAwLCB1LCAwLCB1X2xlbik7CisgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnModywgdV9sZW4sIHYsIDAsIHZfbGVuKTsKICAgICBQeV9ERUNSRUYodSk7CiAgICAgUHlfREVDUkVGKHYpOwotICAgIHJldHVybiAoUHlPYmplY3QgKil3OworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodywgMSkpOworICAgIHJldHVybiB3OwogCiAgIG9uRXJyb3I6CiAgICAgUHlfWERFQ1JFRih1KTsKQEAgLTc0NTksMTkgKzEwNjU4LDg5IEBACiB9CiAKIHZvaWQKLVB5VW5pY29kZV9BcHBlbmQoUHlPYmplY3QgKipwbGVmdCwgUHlPYmplY3QgKnJpZ2h0KQorUHlVbmljb2RlX0FwcGVuZChQeU9iamVjdCAqKnBfbGVmdCwgUHlPYmplY3QgKnJpZ2h0KQogewotICAgIFB5T2JqZWN0ICpuZXc7Ci0gICAgaWYgKCpwbGVmdCA9PSBOVUxMKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKHJpZ2h0ID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjaygqcGxlZnQpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRigqcGxlZnQpOwotICAgICAgICAqcGxlZnQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpsZWZ0LCAqcmVzOworICAgIFB5X1VDUzQgbWF4Y2hhciwgbWF4Y2hhcjI7CisgICAgUHlfc3NpemVfdCBsZWZ0X2xlbiwgcmlnaHRfbGVuLCBuZXdfbGVuOworCisgICAgaWYgKHBfbGVmdCA9PSBOVUxMKSB7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG5ldyA9IFB5VW5pY29kZV9Db25jYXQoKnBsZWZ0LCByaWdodCk7Ci0gICAgUHlfREVDUkVGKCpwbGVmdCk7Ci0gICAgKnBsZWZ0ID0gbmV3OworICAgIGxlZnQgPSAqcF9sZWZ0OworICAgIGlmIChyaWdodCA9PSBOVUxMIHx8IGxlZnQgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKGxlZnQpKSB7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobGVmdCkgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyaWdodCkgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAvKiBTaG9ydGN1dHMgKi8KKyAgICBpZiAobGVmdCA9PSB1bmljb2RlX2VtcHR5KSB7CisgICAgICAgIFB5X0RFQ1JFRihsZWZ0KTsKKyAgICAgICAgUHlfSU5DUkVGKHJpZ2h0KTsKKyAgICAgICAgKnBfbGVmdCA9IHJpZ2h0OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChyaWdodCA9PSB1bmljb2RlX2VtcHR5KQorICAgICAgICByZXR1cm47CisKKyAgICBsZWZ0X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGxlZnQpOworICAgIHJpZ2h0X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJpZ2h0KTsKKyAgICBpZiAobGVmdF9sZW4gPiBQWV9TU0laRV9UX01BWCAtIHJpZ2h0X2xlbikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmdzIGFyZSB0b28gbGFyZ2UgdG8gY29uY2F0Iik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIG5ld19sZW4gPSBsZWZ0X2xlbiArIHJpZ2h0X2xlbjsKKworICAgIGlmICh1bmljb2RlX21vZGlmaWFibGUobGVmdCkKKyAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3QocmlnaHQpCisgICAgICAgICYmIFB5VW5pY29kZV9LSU5EKHJpZ2h0KSA8PSBQeVVuaWNvZGVfS0lORChsZWZ0KQorICAgICAgICAvKiBEb24ndCByZXNpemUgZm9yIGFzY2lpICs9IGxhdGluMS4gQ29udmVydCBhc2NpaSB0byBsYXRpbjEgcmVxdWlyZXMKKyAgICAgICAgICAgdG8gY2hhbmdlIHRoZSBzdHJ1Y3R1cmUgc2l6ZSwgYnV0IGNoYXJhY3RlcnMgYXJlIHN0b3JlZCBqdXN0IGFmdGVyCisgICAgICAgICAgIHRoZSBzdHJ1Y3R1cmUsIGFuZCBzbyBpdCByZXF1aXJlcyB0byBtb3ZlIGFsbCBjaGFyYWN0ZXJzIHdoaWNoIGlzCisgICAgICAgICAgIG5vdCBzbyBkaWZmZXJlbnQgdGhhbiBkdXBsaWNhdGluZyB0aGUgc3RyaW5nLiAqLworICAgICAgICAmJiAhKFB5VW5pY29kZV9JU19BU0NJSShsZWZ0KSAmJiAhUHlVbmljb2RlX0lTX0FTQ0lJKHJpZ2h0KSkpCisgICAgeworICAgICAgICAvKiBhcHBlbmQgaW5wbGFjZSAqLworICAgICAgICBpZiAodW5pY29kZV9yZXNpemUocF9sZWZ0LCBuZXdfbGVuKSAhPSAwKSB7CisgICAgICAgICAgICAvKiBYWFggaWYgX1B5VW5pY29kZV9SZXNpemUoKSBmYWlscywgJ2xlZnQnIGhhcyBiZWVuCisgICAgICAgICAgICAgKiBkZWFsbG9jYXRlZCBzbyBpdCBjYW5ub3QgYmUgcHV0IGJhY2sgaW50bworICAgICAgICAgICAgICogJ3ZhcmlhYmxlJy4gIFRoZSBNZW1vcnlFcnJvciBpcyByYWlzZWQgd2hlbiB0aGVyZQorICAgICAgICAgICAgICogaXMgbm8gdmFsdWUgaW4gJ3ZhcmlhYmxlJywgd2hpY2ggbWlnaHQgKHZlcnkKKyAgICAgICAgICAgICAqIHJlbW90ZWx5KSBiZSBhIGNhdXNlIG9mIGluY29tcGF0aWJpbGl0aWVzLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIC8qIGNvcHkgJ3JpZ2h0JyBpbnRvIHRoZSBuZXdseSBhbGxvY2F0ZWQgYXJlYSBvZiAnbGVmdCcgKi8KKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoKnBfbGVmdCwgbGVmdF9sZW4sIHJpZ2h0LCAwLCByaWdodF9sZW4pOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShsZWZ0KTsKKyAgICAgICAgbWF4Y2hhcjIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUocmlnaHQpOworICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgbWF4Y2hhcjIpOworCisgICAgICAgIC8qIENvbmNhdCB0aGUgdHdvIFVuaWNvZGUgc3RyaW5ncyAqLworICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KG5ld19sZW4sIG1heGNoYXIpOworICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhyZXMsIDAsIGxlZnQsIDAsIGxlZnRfbGVuKTsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMocmVzLCBsZWZ0X2xlbiwgcmlnaHQsIDAsIHJpZ2h0X2xlbik7CisgICAgICAgIFB5X0RFQ1JFRihsZWZ0KTsKKyAgICAgICAgKnBfbGVmdCA9IHJlczsKKyAgICB9CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSgqcF9sZWZ0LCAxKSk7CisgICAgcmV0dXJuOworCitlcnJvcjoKKyAgICBQeV9DTEVBUigqcF9sZWZ0KTsKIH0KIAogdm9pZApAQCAtNzQ4OSwyMyArMTA3NTgsNjQgQEAKIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9jb3VudChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9jb3VudChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpzdWJzdHJpbmc7CisgICAgUHlPYmplY3QgKnN1YnN0cmluZzsKICAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKICAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICB2b2lkICpidWYxLCAqYnVmMjsKKyAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjIsIGlyZXN1bHQ7CiAKICAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoImNvdW50IiwgYXJncywgJnN1YnN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBzZWxmLT5sZW5ndGgpOwotICAgIHJlc3VsdCA9IFB5TG9uZ19Gcm9tU3NpemVfdCgKLSAgICAgICAgc3RyaW5nbGliX2NvdW50KHNlbGYtPnN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0cmluZy0+c3RyLCBzdWJzdHJpbmctPmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTSVpFX1RfTUFYKQotICAgICAgICApOworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHJpbmcpOworICAgIGlmIChraW5kMiA+IGtpbmQxKQorICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKDApOworICAgIGtpbmQgPSBraW5kMTsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHJpbmcsIGtpbmQpOworICAgIGlmICghYnVmMikgeworICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKTsKKworICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbjEpOworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlyZXN1bHQgPSB1Y3MxbGliX2NvdW50KAorICAgICAgICAgICAgKChQeV9VQ1MxKilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgIGJ1ZjIsIGxlbjIsIFBZX1NTSVpFX1RfTUFYCisgICAgICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICBpcmVzdWx0ID0gdWNzMmxpYl9jb3VudCgKKyAgICAgICAgICAgICgoUHlfVUNTMiopYnVmMSkgKyBzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICBidWYyLCBsZW4yLCBQWV9TU0laRV9UX01BWAorICAgICAgICAgICAgKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgaXJlc3VsdCA9IHVjczRsaWJfY291bnQoCisgICAgICAgICAgICAoKFB5X1VDUzQqKWJ1ZjEpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKKyAgICAgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsgaXJlc3VsdCA9IDA7CisgICAgfQorCisgICAgcmVzdWx0ID0gUHlMb25nX0Zyb21Tc2l6ZV90KGlyZXN1bHQpOworCisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKIApAQCAtNzUyMyw3ICsxMDgzMyw3IEBACiBjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBjYW4gaGFuZGxlIFVuaWNvZGVFbmNvZGVFcnJvcnMuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2VuY29kZShQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQordW5pY29kZV9lbmNvZGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgMH07CiAgICAgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwpAQCAtNzUzMiw3ICsxMDg0Miw3IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifHNzOmVuY29kZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmZW5jb2RpbmcsICZlcnJvcnMpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZygoUHlPYmplY3QgKilzZWxmLCBlbmNvZGluZywgZXJyb3JzKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhzZWxmLCBlbmNvZGluZywgZXJyb3JzKTsKIH0KIAogUHlEb2NfU1RSVkFSKGV4cGFuZHRhYnNfX2RvY19fLApAQCAtNzU0Miw4MiArMTA4NTIsODIgQEAKIElmIHRhYnNpemUgaXMgbm90IGdpdmVuLCBhIHRhYiBzaXplIG9mIDggY2hhcmFjdGVycyBpcyBhc3N1bWVkLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2V4cGFuZHRhYnMoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfZXhwYW5kdGFicyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfVU5JQ09ERSAqZTsKLSAgICBQeV9VTklDT0RFICpwOwotICAgIFB5X1VOSUNPREUgKnE7Ci0gICAgUHlfVU5JQ09ERSAqcWU7Ci0gICAgUHlfc3NpemVfdCBpLCBqLCBpbmNyOwotICAgIFB5VW5pY29kZU9iamVjdCAqdTsKKyAgICBQeV9zc2l6ZV90IGksIGosIGxpbmVfcG9zLCBzcmNfbGVuLCBpbmNyOworICAgIFB5X1VDUzQgY2g7CisgICAgUHlPYmplY3QgKnU7CisgICAgdm9pZCAqc3JjX2RhdGEsICpkZXN0X2RhdGE7CiAgICAgaW50IHRhYnNpemUgPSA4OworICAgIGludCBraW5kOworICAgIGludCBmb3VuZDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6ZXhwYW5kdGFicyIsICZ0YWJzaXplKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIC8qIEZpcnN0IHBhc3M6IGRldGVybWluZSBzaXplIG9mIG91dHB1dCBzdHJpbmcgKi8KLSAgICBpID0gMDsgLyogY2hhcnMgdXAgdG8gYW5kIGluY2x1ZGluZyBtb3N0IHJlY2VudCBcbiBvciBcciAqLwotICAgIGogPSAwOyAvKiBjaGFycyBzaW5jZSBtb3N0IHJlY2VudCBcbiBvciBcciAodXNlIGluIHRhYiBjYWxjdWxhdGlvbnMpICovCi0gICAgZSA9IHNlbGYtPnN0ciArIHNlbGYtPmxlbmd0aDsgLyogZW5kIG9mIGlucHV0ICovCi0gICAgZm9yIChwID0gc2VsZi0+c3RyOyBwIDwgZTsgcCsrKQotICAgICAgICBpZiAoKnAgPT0gJ1x0JykgeworICAgIHNyY19sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBpID0gaiA9IGxpbmVfcG9zID0gMDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgc3JjX2RhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBmb3VuZCA9IDA7CisgICAgZm9yICg7IGkgPCBzcmNfbGVuOyBpKyspIHsKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBzcmNfZGF0YSwgaSk7CisgICAgICAgIGlmIChjaCA9PSAnXHQnKSB7CisgICAgICAgICAgICBmb3VuZCA9IDE7CiAgICAgICAgICAgICBpZiAodGFic2l6ZSA+IDApIHsKLSAgICAgICAgICAgICAgICBpbmNyID0gdGFic2l6ZSAtIChqICUgdGFic2l6ZSk7IC8qIGNhbm5vdCBvdmVyZmxvdyAqLworICAgICAgICAgICAgICAgIGluY3IgPSB0YWJzaXplIC0gKGxpbmVfcG9zICUgdGFic2l6ZSk7IC8qIGNhbm5vdCBvdmVyZmxvdyAqLwogICAgICAgICAgICAgICAgIGlmIChqID4gUFlfU1NJWkVfVF9NQVggLSBpbmNyKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93MTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzsKKyAgICAgICAgICAgICAgICBsaW5lX3BvcyArPSBpbmNyOwogICAgICAgICAgICAgICAgIGogKz0gaW5jcjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmIChqID4gUFlfU1NJWkVfVF9NQVggLSAxKQotICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3cxOworICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7CisgICAgICAgICAgICBsaW5lX3BvcysrOwogICAgICAgICAgICAgaisrOwotICAgICAgICAgICAgaWYgKCpwID09ICdcbicgfHwgKnAgPT0gJ1xyJykgewotICAgICAgICAgICAgICAgIGlmIChpID4gUFlfU1NJWkVfVF9NQVggLSBqKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93MTsKLSAgICAgICAgICAgICAgICBpICs9IGo7Ci0gICAgICAgICAgICAgICAgaiA9IDA7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY2ggPT0gJ1xuJyB8fCBjaCA9PSAnXHInKQorICAgICAgICAgICAgICAgIGxpbmVfcG9zID0gMDsKICAgICAgICAgfQotCi0gICAgaWYgKGkgPiBQWV9TU0laRV9UX01BWCAtIGopCi0gICAgICAgIGdvdG8gb3ZlcmZsb3cxOworICAgIH0KKyAgICBpZiAoIWZvdW5kKQorICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHNlbGYpOwogCiAgICAgLyogU2Vjb25kIHBhc3M6IGNyZWF0ZSBvdXRwdXQgc3RyaW5nIGFuZCBmaWxsIGl0ICovCi0gICAgdSA9IF9QeVVuaWNvZGVfTmV3KGkgKyBqKTsKKyAgICB1ID0gUHlVbmljb2RlX05ldyhqLCBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoc2VsZikpOwogICAgIGlmICghdSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZGVzdF9kYXRhID0gUHlVbmljb2RlX0RBVEEodSk7CiAKLSAgICBqID0gMDsgLyogc2FtZSBhcyBpbiBmaXJzdCBwYXNzICovCi0gICAgcSA9IHUtPnN0cjsgLyogbmV4dCBvdXRwdXQgY2hhciAqLwotICAgIHFlID0gdS0+c3RyICsgdS0+bGVuZ3RoOyAvKiBlbmQgb2Ygb3V0cHV0ICovCisgICAgaSA9IGogPSBsaW5lX3BvcyA9IDA7CiAKLSAgICBmb3IgKHAgPSBzZWxmLT5zdHI7IHAgPCBlOyBwKyspCi0gICAgICAgIGlmICgqcCA9PSAnXHQnKSB7CisgICAgZm9yICg7IGkgPCBzcmNfbGVuOyBpKyspIHsKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBzcmNfZGF0YSwgaSk7CisgICAgICAgIGlmIChjaCA9PSAnXHQnKSB7CiAgICAgICAgICAgICBpZiAodGFic2l6ZSA+IDApIHsKLSAgICAgICAgICAgICAgICBpID0gdGFic2l6ZSAtIChqICUgdGFic2l6ZSk7Ci0gICAgICAgICAgICAgICAgaiArPSBpOwotICAgICAgICAgICAgICAgIHdoaWxlIChpLS0pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHEgPj0gcWUpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93MjsKLSAgICAgICAgICAgICAgICAgICAgKnErKyA9ICcgJzsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaW5jciA9IHRhYnNpemUgLSAobGluZV9wb3MgJSB0YWJzaXplKTsKKyAgICAgICAgICAgICAgICBsaW5lX3BvcyArPSBpbmNyOworICAgICAgICAgICAgICAgIEZJTEwoa2luZCwgZGVzdF9kYXRhLCAnICcsIGosIGluY3IpOworICAgICAgICAgICAgICAgIGogKz0gaW5jcjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChxID49IHFlKQotICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3cyOwotICAgICAgICAgICAgKnErKyA9ICpwOworICAgICAgICAgICAgbGluZV9wb3MrKzsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkZXN0X2RhdGEsIGosIGNoKTsKICAgICAgICAgICAgIGorKzsKLSAgICAgICAgICAgIGlmICgqcCA9PSAnXG4nIHx8ICpwID09ICdccicpCi0gICAgICAgICAgICAgICAgaiA9IDA7CisgICAgICAgICAgICBpZiAoY2ggPT0gJ1xuJyB8fCBjaCA9PSAnXHInKQorICAgICAgICAgICAgICAgIGxpbmVfcG9zID0gMDsKICAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQgKGogPT0gUHlVbmljb2RlX0dFVF9MRU5HVEgodSkpOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh1KTsKIAotICAgIHJldHVybiAoUHlPYmplY3QqKSB1OwotCi0gIG92ZXJmbG93MjoKLSAgICBQeV9ERUNSRUYodSk7Ci0gIG92ZXJmbG93MToKKyAgb3ZlcmZsb3c6CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJuZXcgc3RyaW5nIGlzIHRvbyBsb25nIik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CkBAIC03NjMyLDkgKzEwOTQyLDkgQEAKIFJldHVybiAtMSBvbiBmYWlsdXJlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9maW5kKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX2ZpbmQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nOworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBzdGFydDsKICAgICBQeV9zc2l6ZV90IGVuZDsKICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKQEAgLTc2NDMsNjMgKzEwOTUzLDExNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJlc3VsdCA9IHN0cmluZ2xpYl9maW5kX3NsaWNlKAotICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKSwgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpLAotICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdWJzdHJpbmcpLCBQeVVuaWNvZGVfR0VUX1NJWkUoc3Vic3RyaW5nKSwKLSAgICAgICAgc3RhcnQsIGVuZAotICAgICAgICApOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgxLCBzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQpOwogCiAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAKKyAgICBpZiAocmVzdWx0ID09IC0yKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfZ2V0aXRlbShQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgpCit1bmljb2RlX2dldGl0ZW0oUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgpCiB7Ci0gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBzZWxmLT5sZW5ndGgpIHsKKyAgICB2b2lkICpkYXRhOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICBQeV9VQ1M0IGNoOworICAgIFB5T2JqZWN0ICpyZXM7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzZWxmKSB8fCBQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJzdHJpbmcgaW5kZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaW5kZXgpOworICAgIGlmIChjaCA8IDI1NikKKyAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcihjaCk7CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0KikgUHlVbmljb2RlX0Zyb21Vbmljb2RlKCZzZWxmLT5zdHJbaW5kZXhdLCAxKTsKKyAgICByZXMgPSBQeVVuaWNvZGVfTmV3KDEsIGNoKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXMpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShyZXMpOworICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCAwLCBjaCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKKyAgICByZXR1cm4gcmVzOwogfQogCiAvKiBCZWxpZXZlIGl0IG9yIG5vdCwgdGhpcyBwcm9kdWNlcyB0aGUgc2FtZSB2YWx1ZSBmb3IgQVNDSUkgc3RyaW5ncwotICAgYXMgc3RyaW5nX2hhc2goKS4gKi8KKyAgIGFzIGJ5dGVzX2hhc2goKS4gKi8KIHN0YXRpYyBQeV9oYXNoX3QKLXVuaWNvZGVfaGFzaChQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2hhc2goUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlfc3NpemVfdCBsZW47Ci0gICAgUHlfVU5JQ09ERSAqcDsKICAgICBQeV91aGFzaF90IHg7ICAvKiBVbnNpZ25lZCBmb3IgZGVmaW5lZCBvdmVyZmxvdyBiZWhhdmlvci4gKi8KIAogI2lmZGVmIFB5X0RFQlVHCiAgICAgYXNzZXJ0KF9QeV9IYXNoU2VjcmV0X0luaXRpYWxpemVkKTsKICNlbmRpZgotICAgIGlmIChzZWxmLT5oYXNoICE9IC0xKQotICAgICAgICByZXR1cm4gc2VsZi0+aGFzaDsKLSAgICBsZW4gPSBQeV9TSVpFKHNlbGYpOworICAgIGlmIChfUHlVbmljb2RlX0hBU0goc2VsZikgIT0gLTEpCisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0hBU0goc2VsZik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogICAgIC8qCiAgICAgICBXZSBtYWtlIHRoZSBoYXNoIG9mIHRoZSBlbXB0eSBzdHJpbmcgYmUgMCwgcmF0aGVyIHRoYW4gdXNpbmcKICAgICAgIChwcmVmaXggXiBzdWZmaXgpLCBzaW5jZSB0aGlzIHNsaWdodGx5IG9iZnVzY2F0ZXMgdGhlIGhhc2ggc2VjcmV0CiAgICAgKi8KICAgICBpZiAobGVuID09IDApIHsKLSAgICAgICAgc2VsZi0+aGFzaCA9IDA7CisgICAgICAgIF9QeVVuaWNvZGVfSEFTSChzZWxmKSA9IDA7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBwID0gc2VsZi0+c3RyOwotICAgIHggPSBfUHlfSGFzaFNlY3JldC5wcmVmaXg7Ci0gICAgeCBePSAqcCA8PCA3OwotICAgIHdoaWxlICgtLWxlbiA+PSAwKQotICAgICAgICB4ID0gKF9QeUhBU0hfTVVMVElQTElFUip4KSBeICpwKys7Ci0gICAgeCBePSBQeV9TSVpFKHNlbGYpOwotICAgIHggXj0gX1B5X0hhc2hTZWNyZXQuc3VmZml4OworCisgICAgLyogVGhlIGhhc2ggZnVuY3Rpb24gYXMgYSBtYWNybywgZ2V0cyBleHBhbmRlZCB0aHJlZSB0aW1lcyBiZWxvdy4gKi8KKyNkZWZpbmUgSEFTSChQKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHggXj0gKFB5X3VoYXNoX3QpICpQIDw8IDc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgd2hpbGUgKC0tbGVuID49IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgeCA9IChfUHlIQVNIX01VTFRJUExJRVIgKiB4KSBeIChQeV91aGFzaF90KSAqUCsrOyAgXAorCisgICAgeCA9IChQeV91aGFzaF90KSBfUHlfSGFzaFNlY3JldC5wcmVmaXg7CisgICAgc3dpdGNoIChQeVVuaWNvZGVfS0lORChzZWxmKSkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6IHsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYyA9IFB5VW5pY29kZV8xQllURV9EQVRBKHNlbGYpOworICAgICAgICBIQVNIKGMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDogeworICAgICAgICBjb25zdCBQeV9VQ1MyICpzID0gUHlVbmljb2RlXzJCWVRFX0RBVEEoc2VsZik7CisgICAgICAgIEhBU0gocyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAgIFB5X1VDUzQgKmw7CisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChzZWxmKSA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCAmJgorICAgICAgICAgICAgICAgIkltcG9zc2libGUgc3dpdGNoIGNhc2UgaW4gdW5pY29kZV9oYXNoIik7CisgICAgICAgIGwgPSBQeVVuaWNvZGVfNEJZVEVfREFUQShzZWxmKTsKKyAgICAgICAgSEFTSChsKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KKyAgICB4IF49IChQeV91aGFzaF90KSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICB4IF49IChQeV91aGFzaF90KSBfUHlfSGFzaFNlY3JldC5zdWZmaXg7CisKICAgICBpZiAoeCA9PSAtMSkKICAgICAgICAgeCA9IC0yOwotICAgIHNlbGYtPmhhc2ggPSB4OworICAgIF9QeVVuaWNvZGVfSEFTSChzZWxmKSA9IHg7CiAgICAgcmV0dXJuIHg7CiB9CisjdW5kZWYgSEFTSAogCiBQeURvY19TVFJWQVIoaW5kZXhfX2RvY19fLAogICAgICAgICAgICAgICJTLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXApAQCAtNzcwNywxMCArMTEwNjgsMTAgQEAKIExpa2UgUy5maW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic3RyaW5nIGlzIG5vdCBmb3VuZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfaW5kZXgoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfaW5kZXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X3NzaXplX3QgcmVzdWx0OwotICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nOworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBzdGFydDsKICAgICBQeV9zc2l6ZV90IGVuZDsKIApAQCAtNzcxOCwxNCArMTEwNzksMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXN1bHQgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZiksIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSwKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3Vic3RyaW5nKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN1YnN0cmluZyksCi0gICAgICAgIHN0YXJ0LCBlbmQKLSAgICAgICAgKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKIAogICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogCisgICAgaWYgKHJlc3VsdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAocmVzdWx0IDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInN1YnN0cmluZyBub3QgZm91bmQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03NzQxLDI0ICsxMTEwNiwzMSBAQAogYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciBpbiBTLCBGYWxzZSBvdGhlcndpc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfaXNsb3dlcihQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2lzbG93ZXIoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgUHlfc3NpemVfdCBpLCBsZW5ndGg7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKICAgICBpbnQgY2FzZWQ7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworCiAgICAgLyogU2hvcnRjdXQgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhQeV9VTklDT0RFX0lTTE9XRVIoKnApKTsKKyAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoCisgICAgICAgICAgICBQeV9VTklDT0RFX0lTTE9XRVIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCkpKTsKIAogICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMCkKKyAgICBpZiAobGVuZ3RoID09IDApCiAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAKLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKICAgICBjYXNlZCA9IDA7Ci0gICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBfUHlfVU5JQ09ERV9ORVhUKHAsIGUpOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAKICAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNVUFBFUihjaCkgfHwgUHlfVU5JQ09ERV9JU1RJVExFKGNoKSkKICAgICAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CkBAIC03Nzc1LDI0ICsxMTE0NywzMSBAQAogYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciBpbiBTLCBGYWxzZSBvdGhlcndpc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfaXN1cHBlcihQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2lzdXBwZXIoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgUHlfc3NpemVfdCBpLCBsZW5ndGg7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKICAgICBpbnQgY2FzZWQ7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworCiAgICAgLyogU2hvcnRjdXQgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhQeV9VTklDT0RFX0lTVVBQRVIoKnApICE9IDApOworICAgIGlmIChsZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygKKyAgICAgICAgICAgIFB5X1VOSUNPREVfSVNVUFBFUihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKSkgIT0gMCk7CiAKICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDApCisgICAgaWYgKGxlbmd0aCA9PSAwKQogICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7CiAgICAgY2FzZWQgPSAwOwotICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gX1B5X1VOSUNPREVfTkVYVChwLCBlKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogCiAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTTE9XRVIoY2gpIHx8IFB5X1VOSUNPREVfSVNUSVRMRShjaCkpCiAgICAgICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwpAQCAtNzgxMSwyNiArMTExOTAsMzQgQEAKIFJldHVybiBGYWxzZSBvdGhlcndpc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfaXN0aXRsZShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2lzdGl0bGUoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgUHlfc3NpemVfdCBpLCBsZW5ndGg7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKICAgICBpbnQgY2FzZWQsIHByZXZpb3VzX2lzX2Nhc2VkOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKwogICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEpCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKFB5X1VOSUNPREVfSVNUSVRMRSgqcCkgIT0gMCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlfVU5JQ09ERV9JU1VQUEVSKCpwKSAhPSAwKSk7CisgICAgaWYgKGxlbmd0aCA9PSAxKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKTsKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygoUHlfVU5JQ09ERV9JU1RJVExFKGNoKSAhPSAwKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9VTklDT0RFX0lTVVBQRVIoY2gpICE9IDApKTsKKyAgICB9CiAKICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDApCisgICAgaWYgKGxlbmd0aCA9PSAwKQogICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7CiAgICAgY2FzZWQgPSAwOwogICAgIHByZXZpb3VzX2lzX2Nhc2VkID0gMDsKLSAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IF9QeV9VTklDT0RFX05FWFQocCwgZSk7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKIAogICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU1VQUEVSKGNoKSB8fCBQeV9VTklDT0RFX0lTVElUTEUoY2gpKSB7CiAgICAgICAgICAgICBpZiAocHJldmlvdXNfaXNfY2FzZWQpCkBAIC03ODU3LDIzICsxMTI0NCwyOSBAQAogYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgaW4gUywgRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2lzc3BhY2UoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9pc3NwYWNlKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwogCiAgICAgLyogU2hvcnRjdXQgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMSAmJgotICAgICAgICBQeV9VTklDT0RFX0lTU1BBQ0UoKnApKQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDEpOworICAgIGlmIChsZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygKKyAgICAgICAgICAgIFB5X1VOSUNPREVfSVNTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKSkpOwogCiAgICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAwKQorICAgIGlmIChsZW5ndGggPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKIAotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwotICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gX1B5X1VOSUNPREVfTkVYVChwLCBlKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNTUEFDRShjaCkpCiAgICAgICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogICAgIH0KQEAgLTc4ODcsMjMgKzExMjgwLDI5IEBACiBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBpbiBTLCBGYWxzZSBvdGhlcndpc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfaXNhbHBoYShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2lzYWxwaGEoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgUHlfc3NpemVfdCBpLCBsZW5ndGg7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CiAKICAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxICYmCi0gICAgICAgIFB5X1VOSUNPREVfSVNBTFBIQSgqcCkpCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMSk7CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKAorICAgICAgICAgICAgUHlfVU5JQ09ERV9JU0FMUEhBKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApKSk7CiAKICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDApCisgICAgaWYgKGxlbmd0aCA9PSAwKQogICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7Ci0gICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgIGlmICghUHlfVU5JQ09ERV9JU0FMUEhBKF9QeV9VTklDT0RFX05FWFQocCwgZSkpKQorICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNBTFBIQShQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkpCiAgICAgICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogICAgIH0KICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDEpOwpAQCAtNzkxNiwyMyArMTEzMTUsMzEgQEAKIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGluIFMsIEZhbHNlIG90aGVyd2lzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9pc2FsbnVtKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfaXNhbG51bShQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3QgbGVuLCBpOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogCiAgICAgLyogU2hvcnRjdXQgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMSAmJgotICAgICAgICBQeV9VTklDT0RFX0lTQUxOVU0oKnApKQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDEpOworICAgIGlmIChsZW4gPT0gMSkgeworICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCk7CisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoUHlfVU5JQ09ERV9JU0FMTlVNKGNoKSk7CisgICAgfQogCiAgICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAwKQorICAgIGlmIChsZW4gPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKIAotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwotICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gX1B5X1VOSUNPREVfTkVYVChwLCBlKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNBTE5VTShjaCkpCiAgICAgICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogICAgIH0KQEAgLTc5NDYsMjMgKzExMzUzLDI5IEBACiBGYWxzZSBvdGhlcndpc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfaXNkZWNpbWFsKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfaXNkZWNpbWFsKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwogCiAgICAgLyogU2hvcnRjdXQgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMSAmJgotICAgICAgICBQeV9VTklDT0RFX0lTREVDSU1BTCgqcCkpCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMSk7CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKAorICAgICAgICAgICAgUHlfVU5JQ09ERV9JU0RFQ0lNQUwoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCkpKTsKIAogICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMCkKKyAgICBpZiAobGVuZ3RoID09IDApCiAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAKLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKLSAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTREVDSU1BTChfUHlfVU5JQ09ERV9ORVhUKHAsIGUpKSkKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTREVDSU1BTChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkpCiAgICAgICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogICAgIH0KICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDEpOwpAQCAtNzk3NSwyMyArMTEzODgsMzAgQEAKIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGluIFMsIEZhbHNlIG90aGVyd2lzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9pc2RpZ2l0KFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfaXNkaWdpdChQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGxlbmd0aDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKIAogICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEgJiYKLSAgICAgICAgUHlfVU5JQ09ERV9JU0RJR0lUKCpwKSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxKTsKKyAgICBpZiAobGVuZ3RoID09IDEpIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApOworICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKFB5X1VOSUNPREVfSVNESUdJVChjaCkpOworICAgIH0KIAogICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMCkKKyAgICBpZiAobGVuZ3RoID09IDApCiAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAKLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKLSAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTRElHSVQoX1B5X1VOSUNPREVfTkVYVChwLCBlKSkpCisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU0RJR0lUKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKSkKICAgICAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAgICAgfQogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMSk7CkBAIC04MDA0LDIzICsxMTQyNCwyOSBAQAogRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2lzbnVtZXJpYyhQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2lzbnVtZXJpYyhQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGxlbmd0aDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKIAogICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEgJiYKLSAgICAgICAgUHlfVU5JQ09ERV9JU05VTUVSSUMoKnApKQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDEpOworICAgIGlmIChsZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygKKyAgICAgICAgICAgIFB5X1VOSUNPREVfSVNOVU1FUklDKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApKSk7CiAKICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDApCisgICAgaWYgKGxlbmd0aCA9PSAwKQogICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7Ci0gICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgIGlmICghUHlfVU5JQ09ERV9JU05VTUVSSUMoX1B5X1VOSUNPREVfTkVYVChwLCBlKSkpCisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU05VTUVSSUMoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpKQogICAgICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKICAgICB9CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxKTsKQEAgLTgwMjksMTMgKzExNDU1LDIxIEBACiBpbnQKIFB5VW5pY29kZV9Jc0lkZW50aWZpZXIoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKChQeVVuaWNvZGVPYmplY3QqKXNlbGYpOwotICAgIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlfVUNTNCBmaXJzdDsKIAotICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMCkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoImlkZW50aWZpZXIgbm90IHJlYWR5Iik7CiAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSA9PSAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwogCiAgICAgLyogUEVQIDMxMzEgc2F5cyB0aGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgbXVzdCBiZSBpbgogICAgICAgIFhJRF9TdGFydCBhbmQgc3Vic2VxdWVudCBjaGFyYWN0ZXJzIGluIFhJRF9Db250aW51ZSwKQEAgLTgwNDUsMTMgKzExNDc5LDEyIEBACiAgICAgICAgZGVmaW5pdGlvbiBvZiBYSURfU3RhcnQgYW5kIFhJRF9Db250aW51ZSwgaXQgaXMgc3VmZmljaWVudAogICAgICAgIHRvIGNoZWNrIGp1c3QgZm9yIHRoZXNlLCBleGNlcHQgdGhhdCBfIG11c3QgYmUgYWxsb3dlZAogICAgICAgIGFzIHN0YXJ0aW5nIGFuIGlkZW50aWZpZXIuICAqLwotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwotICAgIGZpcnN0ID0gX1B5X1VOSUNPREVfTkVYVChwLCBlKTsKKyAgICBmaXJzdCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApOwogICAgIGlmICghX1B5VW5pY29kZV9Jc1hpZFN0YXJ0KGZpcnN0KSAmJiBmaXJzdCAhPSAweDVGIC8qIExPVyBMSU5FICovKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHdoaWxlIChwIDwgZSkKLSAgICAgICAgaWYgKCFfUHlVbmljb2RlX0lzWGlkQ29udGludWUoX1B5X1VOSUNPREVfTkVYVChwLCBlKSkpCisgICAgZm9yIChpID0gMTsgaSA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOyBpKyspCisgICAgICAgIGlmICghX1B5VW5pY29kZV9Jc1hpZENvbnRpbnVlKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiAxOwogfQpAQCAtODA3NywxNyArMTE1MTAsMjMgQEAKIHN0YXRpYyBQeU9iamVjdCoKIHVuaWNvZGVfaXNwcmludGFibGUoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgUHlfc3NpemVfdCBpLCBsZW5ndGg7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CiAKICAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxICYmIFB5X1VOSUNPREVfSVNQUklOVEFCTEUoKnApKSB7Ci0gICAgICAgIFB5X1JFVFVSTl9UUlVFOwotICAgIH0KKyAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoCisgICAgICAgICAgICBQeV9VTklDT0RFX0lTUFJJTlRBQkxFKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApKSk7CiAKLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKLSAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTUFJJTlRBQkxFKF9QeV9VTklDT0RFX05FWFQocCwgZSkpKSB7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU1BSSU5UQUJMRShQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkpIHsKICAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKICAgICAgICAgfQogICAgIH0KQEAgLTgxMDcsOSArMTE1NDYsMTEgQEAKIH0KIAogc3RhdGljIFB5X3NzaXplX3QKLXVuaWNvZGVfbGVuZ3RoKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfbGVuZ3RoKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJldHVybiBzZWxmLT5sZW5ndGg7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKIH0KIAogUHlEb2NfU1RSVkFSKGxqdXN0X19kb2NfXywKQEAgLTgxMTksMjAgKzExNTYwLDIxIEBACiBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2xqdXN0KFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX2xqdXN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeV9zc2l6ZV90IHdpZHRoOwotICAgIFB5X1VOSUNPREUgZmlsbGNoYXIgPSAnICc7CisgICAgUHlfVUNTNCBmaWxsY2hhciA9ICcgJzsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxPJjpsanVzdCIsICZ3aWR0aCwgY29udmVydF91YywgJmZpbGxjaGFyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoc2VsZi0+bGVuZ3RoID49IHdpZHRoICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7Ci0gICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIChQeU9iamVjdCopIHBhZChzZWxmLCAwLCB3aWR0aCAtIHNlbGYtPmxlbmd0aCwgZmlsbGNoYXIpOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSA+PSB3aWR0aCkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKKworICAgIHJldHVybiBwYWQoc2VsZiwgMCwgd2lkdGggLSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSwgZmlsbGNoYXIpOwogfQogCiBQeURvY19TVFJWQVIobG93ZXJfX2RvY19fLApAQCAtODE0MSw5ICsxMTU4MywxMyBAQAogUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIFMgY29udmVydGVkIHRvIGxvd2VyY2FzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9sb3dlcihQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2xvd2VyKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJldHVybiBmaXh1cChzZWxmLCBmaXhsb3dlcik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzZWxmKSkKKyAgICAgICAgcmV0dXJuIGFzY2lpX3VwcGVyX29yX2xvd2VyKHNlbGYsIDEpOworICAgIHJldHVybiBjYXNlX29wZXJhdGlvbihzZWxmLCBkb19sb3dlcik7CiB9CiAKICNkZWZpbmUgTEVGVFNUUklQIDAKQEAgLTgxNTcsMTkgKzExNjAzLDI3IEBACiAKIC8qIGV4dGVybmFsbHkgdmlzaWJsZSBmb3Igc3RyLnN0cmlwKHVuaWNvZGUpICovCiBQeU9iamVjdCAqCi1fUHlVbmljb2RlX1hTdHJpcChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIGludCBzdHJpcHR5cGUsIFB5T2JqZWN0ICpzZXBvYmopCitfUHlVbmljb2RlX1hTdHJpcChQeU9iamVjdCAqc2VsZiwgaW50IHN0cmlwdHlwZSwgUHlPYmplY3QgKnNlcG9iaikKIHsKLSAgICBQeV9VTklDT0RFICpzID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7Ci0gICAgUHlfVU5JQ09ERSAqc2VwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2Vwb2JqKTsKLSAgICBQeV9zc2l6ZV90IHNlcGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShzZXBvYmopOwotICAgIFB5X3NzaXplX3QgaSwgajsKKyAgICB2b2lkICpkYXRhOworICAgIGludCBraW5kOworICAgIFB5X3NzaXplX3QgaSwgaiwgbGVuOworICAgIEJMT09NX01BU0sgc2VwbWFzazsKIAotICAgIEJMT09NX01BU0sgc2VwbWFzayA9IG1ha2VfYmxvb21fbWFzayhzZXAsIHNlcGxlbik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc2Vwb2JqKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIHNlcG1hc2sgPSBtYWtlX2Jsb29tX21hc2soUHlVbmljb2RlX0tJTkQoc2Vwb2JqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9EQVRBKHNlcG9iaiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZXBvYmopKTsKIAogICAgIGkgPSAwOwogICAgIGlmIChzdHJpcHR5cGUgIT0gUklHSFRTVFJJUCkgewotICAgICAgICB3aGlsZSAoaSA8IGxlbiAmJiBCTE9PTV9NRU1CRVIoc2VwbWFzaywgc1tpXSwgc2VwLCBzZXBsZW4pKSB7CisgICAgICAgIHdoaWxlIChpIDwgbGVuICYmCisgICAgICAgICAgICAgICBCTE9PTV9NRU1CRVIoc2VwbWFzaywgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSksIHNlcG9iaikpIHsKICAgICAgICAgICAgIGkrKzsKICAgICAgICAgfQogICAgIH0KQEAgLTgxNzgsMjggKzExNjMyLDY4IEBACiAgICAgaWYgKHN0cmlwdHlwZSAhPSBMRUZUU1RSSVApIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgai0tOwotICAgICAgICB9IHdoaWxlIChqID49IGkgJiYgQkxPT01fTUVNQkVSKHNlcG1hc2ssIHNbal0sIHNlcCwgc2VwbGVuKSk7CisgICAgICAgIH0gd2hpbGUgKGogPj0gaSAmJgorICAgICAgICAgICAgICAgICBCTE9PTV9NRU1CRVIoc2VwbWFzaywgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaiksIHNlcG9iaikpOwogICAgICAgICBqKys7CiAgICAgfQogCi0gICAgaWYgKGkgPT0gMCAmJiBqID09IGxlbiAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKXNlbGY7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzK2ksIGotaSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9TdWJzdHJpbmcoc2VsZiwgaSwgaik7CiB9CiAKK1B5T2JqZWN0KgorUHlVbmljb2RlX1N1YnN0cmluZyhQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgdW5zaWduZWQgY2hhciAqZGF0YTsKKyAgICBpbnQga2luZDsKKyAgICBQeV9zc2l6ZV90IGxlbmd0aDsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgZW5kID0gUHlfTUlOKGVuZCwgbGVuZ3RoKTsKKworICAgIGlmIChzdGFydCA9PSAwICYmIGVuZCA9PSBsZW5ndGgpCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CisKKyAgICBpZiAoc3RhcnQgPCAwIHx8IGVuZCA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJzdHJpbmcgaW5kZXggb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoc3RhcnQgPj0gbGVuZ3RoIHx8IGVuZCA8IHN0YXJ0KQorICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKKworICAgIGxlbmd0aCA9IGVuZCAtIHN0YXJ0OworICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikpIHsKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV8xQllURV9EQVRBKHNlbGYpOworICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Gcm9tQVNDSUkoKGNoYXIqKShkYXRhICsgc3RhcnQpLCBsZW5ndGgpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgICAgICBkYXRhID0gUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VsZik7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKGtpbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgKyBraW5kICogc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCk7CisgICAgfQorfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZG9fc3RyaXAoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBpbnQgc3RyaXB0eXBlKQorZG9fc3RyaXAoUHlPYmplY3QgKnNlbGYsIGludCBzdHJpcHR5cGUpCiB7Ci0gICAgUHlfVU5JQ09ERSAqcyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIFB5X3NzaXplX3QgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpLCBpLCBqOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBsZW4sIGksIGo7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CiAKICAgICBpID0gMDsKICAgICBpZiAoc3RyaXB0eXBlICE9IFJJR0hUU1RSSVApIHsKLSAgICAgICAgd2hpbGUgKGkgPCBsZW4gJiYgUHlfVU5JQ09ERV9JU1NQQUNFKHNbaV0pKSB7CisgICAgICAgIHdoaWxlIChpIDwgbGVuICYmIFB5X1VOSUNPREVfSVNTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkpIHsKICAgICAgICAgICAgIGkrKzsKICAgICAgICAgfQogICAgIH0KQEAgLTgyMDgsMjEgKzExNzAyLDE2IEBACiAgICAgaWYgKHN0cmlwdHlwZSAhPSBMRUZUU1RSSVApIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgai0tOwotICAgICAgICB9IHdoaWxlIChqID49IGkgJiYgUHlfVU5JQ09ERV9JU1NQQUNFKHNbal0pKTsKKyAgICAgICAgfSB3aGlsZSAoaiA+PSBpICYmIFB5X1VOSUNPREVfSVNTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBqKSkpOwogICAgICAgICBqKys7CiAgICAgfQogCi0gICAgaWYgKGkgPT0gMCAmJiBqID09IGxlbiAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKXNlbGY7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzK2ksIGotaSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9TdWJzdHJpbmcoc2VsZiwgaSwgaik7CiB9CiAKIAogc3RhdGljIFB5T2JqZWN0ICoKLWRvX2FyZ3N0cmlwKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgaW50IHN0cmlwdHlwZSwgUHlPYmplY3QgKmFyZ3MpCitkb19hcmdzdHJpcChQeU9iamVjdCAqc2VsZiwgaW50IHN0cmlwdHlwZSwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnNlcCA9IE5VTEw7CiAKQEAgLTgyNTIsNyArMTE3NDEsNyBAQAogSWYgY2hhcnMgaXMgZ2l2ZW4gYW5kIG5vdCBOb25lLCByZW1vdmUgY2hhcmFjdGVycyBpbiBjaGFycyBpbnN0ZWFkLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9zdHJpcChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9zdHJpcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMCkKICAgICAgICAgcmV0dXJuIGRvX3N0cmlwKHNlbGYsIEJPVEhTVFJJUCk7IC8qIENvbW1vbiBjYXNlICovCkBAIC04MjY4LDcgKzExNzU3LDcgQEAKIElmIGNoYXJzIGlzIGdpdmVuIGFuZCBub3QgTm9uZSwgcmVtb3ZlIGNoYXJhY3RlcnMgaW4gY2hhcnMgaW5zdGVhZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfbHN0cmlwKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX2xzdHJpcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMCkKICAgICAgICAgcmV0dXJuIGRvX3N0cmlwKHNlbGYsIExFRlRTVFJJUCk7IC8qIENvbW1vbiBjYXNlICovCkBAIC04Mjg0LDcgKzExNzczLDcgQEAKIElmIGNoYXJzIGlzIGdpdmVuIGFuZCBub3QgTm9uZSwgcmVtb3ZlIGNoYXJhY3RlcnMgaW4gY2hhcnMgaW5zdGVhZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfcnN0cmlwKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX3JzdHJpcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMCkKICAgICAgICAgcmV0dXJuIGRvX3N0cmlwKHNlbGYsIFJJR0hUU1RSSVApOyAvKiBDb21tb24gY2FzZSAqLwpAQCAtODI5NCw2MiArMTE3ODMsNzQgQEAKIAogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3JlcGVhdChQeVVuaWNvZGVPYmplY3QgKnN0ciwgUHlfc3NpemVfdCBsZW4pCit1bmljb2RlX3JlcGVhdChQeU9iamVjdCAqc3RyLCBQeV9zc2l6ZV90IGxlbikKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnU7Ci0gICAgUHlfVU5JQ09ERSAqcDsKLSAgICBQeV9zc2l6ZV90IG5jaGFyczsKLSAgICBzaXplX3QgbmJ5dGVzOworICAgIFB5T2JqZWN0ICp1OworICAgIFB5X3NzaXplX3QgbmNoYXJzLCBuOwogCiAgICAgaWYgKGxlbiA8IDEpCiAgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOwogCi0gICAgaWYgKGxlbiA9PSAxICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KHN0cikpIHsKLSAgICAgICAgLyogbm8gcmVwZWF0LCByZXR1cm4gb3JpZ2luYWwgc3RyaW5nICovCi0gICAgICAgIFB5X0lOQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc3RyOwotICAgIH0KKyAgICAvKiBubyByZXBlYXQsIHJldHVybiBvcmlnaW5hbCBzdHJpbmcgKi8KKyAgICBpZiAobGVuID09IDEpCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc3RyKTsKIAotICAgIC8qIGVuc3VyZSAjIG9mIGNoYXJzIG5lZWRlZCBkb2Vzbid0IG92ZXJmbG93IGludCBhbmQgIyBvZiBieXRlcwotICAgICAqIG5lZWRlZCBkb2Vzbid0IG92ZXJmbG93IHNpemVfdAotICAgICAqLwotICAgIG5jaGFycyA9IGxlbiAqIHN0ci0+bGVuZ3RoOwotICAgIGlmIChuY2hhcnMgLyBsZW4gIT0gc3RyLT5sZW5ndGgpIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgPiBQWV9TU0laRV9UX01BWCAvIGxlbikgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBlYXRlZCBzdHJpbmcgaXMgdG9vIGxvbmciKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG5ieXRlcyA9IChuY2hhcnMgKyAxKSAqIHNpemVvZihQeV9VTklDT0RFKTsKLSAgICBpZiAobmJ5dGVzIC8gc2l6ZW9mKFB5X1VOSUNPREUpICE9IChzaXplX3QpKG5jaGFycyArIDEpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlcGVhdGVkIHN0cmluZyBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdSA9IF9QeVVuaWNvZGVfTmV3KG5jaGFycyk7CisgICAgbmNoYXJzID0gbGVuICogUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKworICAgIHUgPSBQeVVuaWNvZGVfTmV3KG5jaGFycywgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHN0cikpOwogICAgIGlmICghdSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHUpID09IFB5VW5pY29kZV9LSU5EKHN0cikpOwogCi0gICAgcCA9IHUtPnN0cjsKLQotICAgIGlmIChzdHItPmxlbmd0aCA9PSAxKSB7Ci0gICAgICAgIFB5X1VOSUNPREVfRklMTChwLCBzdHItPnN0clswXSwgbGVuKTsKLSAgICB9IGVsc2UgewotICAgICAgICBQeV9zc2l6ZV90IGRvbmUgPSBzdHItPmxlbmd0aDsgLyogbnVtYmVyIG9mIGNoYXJhY3RlcnMgY29waWVkIHRoaXMgZmFyICovCi0gICAgICAgIFB5X1VOSUNPREVfQ09QWShwLCBzdHItPnN0ciwgc3RyLT5sZW5ndGgpOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpID09IDEpIHsKKyAgICAgICAgY29uc3QgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgICAgICBjb25zdCBQeV9VQ1M0IGZpbGxfY2hhciA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIFB5VW5pY29kZV9EQVRBKHN0ciksIDApOworICAgICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICAgICAgdm9pZCAqdG8gPSBQeVVuaWNvZGVfREFUQSh1KTsKKyAgICAgICAgICAgIG1lbXNldCh0bywgKHVuc2lnbmVkIGNoYXIpZmlsbF9jaGFyLCBsZW4pOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgIFB5X1VDUzIgKnVjczIgPSBQeVVuaWNvZGVfMkJZVEVfREFUQSh1KTsKKyAgICAgICAgICAgIGZvciAobiA9IDA7IG4gPCBsZW47ICsrbikKKyAgICAgICAgICAgICAgICB1Y3MyW25dID0gZmlsbF9jaGFyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlfVUNTNCAqdWNzNCA9IFB5VW5pY29kZV80QllURV9EQVRBKHUpOworICAgICAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IGxlbjsgKytuKQorICAgICAgICAgICAgICAgIHVjczRbbl0gPSBmaWxsX2NoYXI7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIG51bWJlciBvZiBjaGFyYWN0ZXJzIGNvcGllZCB0aGlzIGZhciAqLworICAgICAgICBQeV9zc2l6ZV90IGRvbmUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworICAgICAgICBjb25zdCBQeV9zc2l6ZV90IGNoYXJfc2l6ZSA9IFB5VW5pY29kZV9LSU5EKHN0cik7CisgICAgICAgIGNoYXIgKnRvID0gKGNoYXIgKikgUHlVbmljb2RlX0RBVEEodSk7CisgICAgICAgIFB5X01FTUNQWSh0bywgUHlVbmljb2RlX0RBVEEoc3RyKSwKKyAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgKiBjaGFyX3NpemUpOwogICAgICAgICB3aGlsZSAoZG9uZSA8IG5jaGFycykgewotICAgICAgICAgICAgUHlfc3NpemVfdCBuID0gKGRvbmUgPD0gbmNoYXJzLWRvbmUpID8gZG9uZSA6IG5jaGFycy1kb25lOwotICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHArZG9uZSwgcCwgbik7CisgICAgICAgICAgICBuID0gKGRvbmUgPD0gbmNoYXJzLWRvbmUpID8gZG9uZSA6IG5jaGFycy1kb25lOworICAgICAgICAgICAgUHlfTUVNQ1BZKHRvICsgKGRvbmUgKiBjaGFyX3NpemUpLCB0bywgbiAqIGNoYXJfc2l6ZSk7CiAgICAgICAgICAgICBkb25lICs9IG47CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0KikgdTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHUsIDEpKTsKKyAgICByZXR1cm4gdTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9SZXBsYWNlKFB5T2JqZWN0ICpvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1Ym9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVwbG9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQorUHlPYmplY3QgKgorUHlVbmljb2RlX1JlcGxhY2UoUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJvYmosCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVwbG9iaiwKKyAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7CiAgICAgUHlPYmplY3QgKnNlbGY7CiAgICAgUHlPYmplY3QgKnN0cjE7CkBAIC04MzcwLDEwICsxMTg3MSwxMiBAQAogICAgICAgICBQeV9ERUNSRUYoc3RyMSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXN1bHQgPSByZXBsYWNlKChQeVVuaWNvZGVPYmplY3QgKilzZWxmLAotICAgICAgICAgICAgICAgICAgICAgKFB5VW5pY29kZU9iamVjdCAqKXN0cjEsCi0gICAgICAgICAgICAgICAgICAgICAoUHlVbmljb2RlT2JqZWN0ICopc3RyMiwKLSAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xIHx8CisgICAgICAgIFB5VW5pY29kZV9SRUFEWShzdHIxKSA9PSAtMSB8fAorICAgICAgICBQeVVuaWNvZGVfUkVBRFkoc3RyMikgPT0gLTEpCisgICAgICAgIHJlc3VsdCA9IE5VTEw7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSByZXBsYWNlKHNlbGYsIHN0cjEsIHN0cjIsIG1heGNvdW50KTsKICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgUHlfREVDUkVGKHN0cjEpOwogICAgIFB5X0RFQ1JFRihzdHIyKTsKQEAgLTgzODgsMTc3ICsxMTg5MSwxODEgQEAKIGdpdmVuLCBvbmx5IHRoZSBmaXJzdCBjb3VudCBvY2N1cnJlbmNlcyBhcmUgcmVwbGFjZWQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfcmVwbGFjZShQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9yZXBsYWNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnN0cjE7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpzdHIyOworICAgIFB5T2JqZWN0ICpzdHIxOworICAgIFB5T2JqZWN0ICpzdHIyOwogICAgIFB5X3NzaXplX3QgbWF4Y291bnQgPSAtMTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT3xuOnJlcGxhY2UiLCAmc3RyMSwgJnN0cjIsICZtYXhjb3VudCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cjEgPSAoUHlVbmljb2RlT2JqZWN0ICopUHlVbmljb2RlX0Zyb21PYmplY3QoKFB5T2JqZWN0ICopc3RyMSk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc3RyMSA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cjEpOwogICAgIGlmIChzdHIxID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cjIgPSAoUHlVbmljb2RlT2JqZWN0ICopUHlVbmljb2RlX0Zyb21PYmplY3QoKFB5T2JqZWN0ICopc3RyMik7CisgICAgc3RyMiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cjIpOwogICAgIGlmIChzdHIyID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHN0cjEpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSAgICByZXN1bHQgPSByZXBsYWNlKHNlbGYsIHN0cjEsIHN0cjIsIG1heGNvdW50KTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cjEpID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHIyKSA9PSAtMSkKKyAgICAgICAgcmVzdWx0ID0gTlVMTDsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IHJlcGxhY2Uoc2VsZiwgc3RyMSwgc3RyMiwgbWF4Y291bnQpOwogCiAgICAgUHlfREVDUkVGKHN0cjEpOwogICAgIFB5X0RFQ1JFRihzdHIyKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMKLVB5T2JqZWN0ICp1bmljb2RlX3JlcHIoUHlPYmplY3QgKnVuaWNvZGUpCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZV9yZXByKFB5T2JqZWN0ICp1bmljb2RlKQogewogICAgIFB5T2JqZWN0ICpyZXByOwotICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgUHlfVU5JQ09ERSAqcyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwotICAgIFB5X3NzaXplX3Qgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKTsKKyAgICBQeV9zc2l6ZV90IGlzaXplOworICAgIFB5X3NzaXplX3Qgb3NpemUsIHNxdW90ZSwgZHF1b3RlLCBpLCBvOworICAgIFB5X1VDUzQgbWF4LCBxdW90ZTsKKyAgICBpbnQgaWtpbmQsIG9raW5kOworICAgIHZvaWQgKmlkYXRhLCAqb2RhdGE7CiAKLSAgICAvKiBYWFgobm5vcndpdHopOiByYXRoZXIgdGhhbiBvdmVyLWFsbG9jYXRpbmcsIGl0IHdvdWxkIGJlCi0gICAgICAgYmV0dGVyIHRvIGNob29zZSBhIGRpZmZlcmVudCBzY2hlbWUuICBQZXJoYXBzIHNjYW4gdGhlCi0gICAgICAgZmlyc3QgTi1jaGFycyBvZiB0aGUgc3RyaW5nIGFuZCBhbGxvY2F0ZSBiYXNlZCBvbiB0aGF0IHNpemUuCi0gICAgKi8KLSAgICAvKiBJbml0aWFsIGFsbG9jYXRpb24gaXMgYmFzZWQgb24gdGhlIGxvbmdlc3QtcG9zc2libGUgdW5pY2hyCi0gICAgICAgZXNjYXBlLgotCi0gICAgICAgSW4gd2lkZSAoVVRGLTMyKSBidWlsZHMgJ1xVMDB4eHh4eHgnIGlzIDEwIGNoYXJzIHBlciBzb3VyY2UKLSAgICAgICB1bmljaHIsIHNvIGluIHRoaXMgY2FzZSBpdCdzIHRoZSBsb25nZXN0IHVuaWNociBlc2NhcGUuIEluCi0gICAgICAgbmFycm93IChVVEYtMTYpIGJ1aWxkcyB0aGlzIGlzIGZpdmUgY2hhcnMgcGVyIHNvdXJjZSB1bmljaHIKLSAgICAgICBzaW5jZSB0aGVyZSBhcmUgdHdvIHVuaWNocnMgaW4gdGhlIHN1cnJvZ2F0ZSBwYWlyLCBzbyBpbiBuYXJyb3cKLSAgICAgICAoVVRGLTE2KSBidWlsZHMgaXQncyBub3QgdGhlIGxvbmdlc3QgdW5pY2hyIGVzY2FwZS4KLQotICAgICAgIEluIHdpZGUgb3IgbmFycm93IGJ1aWxkcyAnXHV4eHh4JyBpcyA2IGNoYXJzIHBlciBzb3VyY2UgdW5pY2hyLAotICAgICAgIHNvIGluIHRoZSBuYXJyb3cgKFVURi0xNikgYnVpbGQgY2FzZSBpdCdzIHRoZSBsb25nZXN0IHVuaWNocgotICAgICAgIGVzY2FwZS4KLSAgICAqLwotCi0gICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAvKiBxdW90ZXMgKi8KLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgMTAqc2l6ZQotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgNipzaXplCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgMSk7Ci0gICAgaWYgKHJlcHIgPT0gTlVMTCkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXByKTsKKyAgICBpc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGlkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CiAKLSAgICAvKiBBZGQgcXVvdGUgKi8KLSAgICAqcCsrID0gKGZpbmRjaGFyKHMsIHNpemUsICdcJycpICYmCi0gICAgICAgICAgICAhZmluZGNoYXIocywgc2l6ZSwgJyInKSkgPyAnIicgOiAnXCcnOwotICAgIHdoaWxlIChzaXplLS0gPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSAqcysrOworICAgIC8qIENvbXB1dGUgbGVuZ3RoIG9mIG91dHB1dCwgcXVvdGUgY2hhcmFjdGVycywgYW5kCisgICAgICAgbWF4aW11bSBjaGFyYWN0ZXIgKi8KKyAgICBvc2l6ZSA9IDI7IC8qIHF1b3RlcyAqLworICAgIG1heCA9IDEyNzsKKyAgICBzcXVvdGUgPSBkcXVvdGUgPSAwOworICAgIGlraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZm9yIChpID0gMDsgaSA8IGlzaXplOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGlraW5kLCBpZGF0YSwgaSk7CisgICAgICAgIHN3aXRjaCAoY2gpIHsKKyAgICAgICAgY2FzZSAnXCcnOiBzcXVvdGUrKzsgb3NpemUrKzsgYnJlYWs7CisgICAgICAgIGNhc2UgJyInOiAgZHF1b3RlKys7IG9zaXplKys7IGJyZWFrOworICAgICAgICBjYXNlICdcXCc6IGNhc2UgJ1x0JzogY2FzZSAnXHInOiBjYXNlICdcbic6CisgICAgICAgICAgICBvc2l6ZSArPSAyOyBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8qIEZhc3QtcGF0aCBBU0NJSSAqLworICAgICAgICAgICAgaWYgKGNoIDwgJyAnIHx8IGNoID09IDB4N2YpCisgICAgICAgICAgICAgICAgb3NpemUgKz0gNDsgLyogXHhISCAqLworICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAweDdmKQorICAgICAgICAgICAgICAgIG9zaXplKys7CisgICAgICAgICAgICBlbHNlIGlmIChQeV9VTklDT0RFX0lTUFJJTlRBQkxFKGNoKSkgeworICAgICAgICAgICAgICAgIG9zaXplKys7CisgICAgICAgICAgICAgICAgbWF4ID0gY2ggPiBtYXggPyBjaCA6IG1heDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMHgxMDApCisgICAgICAgICAgICAgICAgb3NpemUgKz0gNDsgLyogXHhISCAqLworICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAweDEwMDAwKQorICAgICAgICAgICAgICAgIG9zaXplICs9IDY7IC8qIFx1SEhISCAqLworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9zaXplICs9IDEwOyAvKiBcdUhISEhISEhIICovCisgICAgICAgIH0KKyAgICB9CisKKyAgICBxdW90ZSA9ICdcJyc7CisgICAgaWYgKHNxdW90ZSkgeworICAgICAgICBpZiAoZHF1b3RlKQorICAgICAgICAgICAgLyogQm90aCBzcXVvdGUgYW5kIGRxdW90ZSBwcmVzZW50LiBVc2Ugc3F1b3RlLAorICAgICAgICAgICAgICAgYW5kIGVzY2FwZSB0aGVtICovCisgICAgICAgICAgICBvc2l6ZSArPSBzcXVvdGU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHF1b3RlID0gJyInOworICAgIH0KKworICAgIHJlcHIgPSBQeVVuaWNvZGVfTmV3KG9zaXplLCBtYXgpOworICAgIGlmIChyZXByID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG9raW5kID0gUHlVbmljb2RlX0tJTkQocmVwcik7CisgICAgb2RhdGEgPSBQeVVuaWNvZGVfREFUQShyZXByKTsKKworICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIDAsIHF1b3RlKTsKKyAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvc2l6ZS0xLCBxdW90ZSk7CisKKyAgICBmb3IgKGkgPSAwLCBvID0gMTsgaSA8IGlzaXplOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGlraW5kLCBpZGF0YSwgaSk7CiAKICAgICAgICAgLyogRXNjYXBlIHF1b3RlcyBhbmQgYmFja3NsYXNoZXMgKi8KLSAgICAgICAgaWYgKChjaCA9PSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXByKVswXSkgfHwgKGNoID09ICdcXCcpKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgaWYgKChjaCA9PSBxdW90ZSkgfHwgKGNoID09ICdcXCcpKSB7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdcXCcpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBjaCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIE1hcCBzcGVjaWFsIHdoaXRlc3BhY2UgdG8gJ1x0JywgXG4nLCAnXHInICovCiAgICAgICAgIGlmIChjaCA9PSAnXHQnKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAndCc7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdcXCcpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAndCcpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGNoID09ICdcbicpIHsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICduJzsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ1xcJyk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICduJyk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1xyJykgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ3InOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnXFwnKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ3InKTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIE1hcCBub24tcHJpbnRhYmxlIFVTIEFTQ0lJIHRvICdceGhoJyAqLwogICAgICAgICBlbHNlIGlmIChjaCA8ICcgJyB8fCBjaCA9PSAweDdGKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAneCc7Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ1xcJyk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICd4Jyk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXSk7CiAgICAgICAgIH0KIAogICAgICAgICAvKiBDb3B5IEFTQ0lJIGNoYXJhY3RlcnMgYXMtaXMgKi8KICAgICAgICAgZWxzZSBpZiAoY2ggPCAweDdGKSB7Ci0gICAgICAgICAgICAqcCsrID0gY2g7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIGNoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIE5vbi1BU0NJSSBjaGFyYWN0ZXJzICovCiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlfVUNTNCB1Y3MgPSBjaDsKLQotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgIFB5X1VOSUNPREUgY2gyID0gMDsKLSAgICAgICAgICAgIC8qIEdldCBjb2RlIHBvaW50IGZyb20gc3Vycm9nYXRlIHBhaXIgKi8KLSAgICAgICAgICAgIGlmIChzaXplID4gMCkgewotICAgICAgICAgICAgICAgIGNoMiA9ICpzOwotICAgICAgICAgICAgICAgIGlmIChjaCA+PSAweEQ4MDAgJiYgY2ggPCAweERDMDAgJiYgY2gyID49IDB4REMwMAotICAgICAgICAgICAgICAgICAgICAmJiBjaDIgPD0gMHhERkZGKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVjcyA9ICgoKGNoICYgMHgwM0ZGKSA8PCAxMCkgfCAoY2gyICYgMHgwM0ZGKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICsgMHgwMDAxMDAwMDsKLSAgICAgICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgICAgICBzaXplLS07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgICAgICAvKiBNYXAgVW5pY29kZSB3aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNoYXJhY3RlcnMKICAgICAgICAgICAgICAgIChjYXRlZ29yaWVzIFoqIGFuZCBDKiBleGNlcHQgQVNDSUkgc3BhY2UpCiAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTUFJJTlRBQkxFKHVjcykpIHsKKyAgICAgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU1BSSU5UQUJMRShjaCkpIHsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdcXCcpOwogICAgICAgICAgICAgICAgIC8qIE1hcCA4LWJpdCBjaGFyYWN0ZXJzIHRvICdceGhoJyAqLwotICAgICAgICAgICAgICAgIGlmICh1Y3MgPD0gMHhmZikgewotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICd4JzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogTWFwIDIxLWJpdCBjaGFyYWN0ZXJzIHRvICdcVTAweHh4eHh4JyAqLwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHVjcyA+PSAweDEwMDAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1UnOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjgpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyNCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDIwKSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMTYpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAxMikgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDgpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiA0KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW3VjcyAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgICAgIGlmIChjaCA8PSAweGZmKSB7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ3gnKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDBGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8qIE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHV4eHh4JyAqLworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDw9IDB4ZmZmZikgeworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICd1Jyk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1tjaCAmIDB4Rl0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvKiBNYXAgMjEtYml0IGNoYXJhY3RlcnMgdG8gJ1xVMDB4eHh4eHgnICovCiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ3UnOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMTIpICYgMHgwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDgpICYgMHgwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDQpICYgMHgwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1t1Y3MgJiAweDAwMEZdOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdVJyk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzW2NoICYgMHhGXSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogQ29weSBjaGFyYWN0ZXJzIGFzLWlzICovCiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAqcCsrID0gY2g7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgICAgIGlmICh1Y3MgPj0gMHgxMDAwMCkKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGNoMjsKLSNlbmRpZgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgY2gpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIC8qIEFkZCBxdW90ZSAqLwotICAgICpwKysgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXByKVswXTsKLQotICAgICpwID0gJ1wwJzsKLSAgICBQeVVuaWNvZGVfUmVzaXplKCZyZXByLCBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwcikpOworICAgIC8qIENsb3NpbmcgcXVvdGUgYWxyZWFkeSBhZGRlZCBhdCB0aGUgYmVnaW5uaW5nICovCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXByLCAxKSk7CiAgICAgcmV0dXJuIHJlcHI7CiB9CiAKQEAgLTg1NzIsOSArMTIwNzksOSBAQAogUmV0dXJuIC0xIG9uIGZhaWx1cmUuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX3JmaW5kKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX3JmaW5kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZzsKKyAgICBQeU9iamVjdCAqc3Vic3RyaW5nOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ7CiAgICAgUHlfc3NpemVfdCBlbmQ7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CkBAIC04NTgzLDE0ICsxMjA5MCwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJlc3VsdCA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZiksIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSwKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3Vic3RyaW5nKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN1YnN0cmluZyksCi0gICAgICAgIHN0YXJ0LCBlbmQKLSAgICAgICAgKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoLTEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7CiAKICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKIAorICAgIGlmIChyZXN1bHQgPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOwogfQogCkBAIC04NjAwLDkgKzEyMTExLDkgQEAKIExpa2UgUy5yZmluZCgpIGJ1dCByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3QgZm91bmQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX3JpbmRleChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9yaW5kZXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nOworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBzdGFydDsKICAgICBQeV9zc2l6ZV90IGVuZDsKICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKQEAgLTg2MTEsMTggKzEyMTIyLDIzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmVzdWx0ID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAotICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKSwgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpLAotICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdWJzdHJpbmcpLCBQeVVuaWNvZGVfR0VUX1NJWkUoc3Vic3RyaW5nKSwKLSAgICAgICAgc3RhcnQsIGVuZAotICAgICAgICApOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgtMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKIAogICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogCisgICAgaWYgKHJlc3VsdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAocmVzdWx0IDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInN1YnN0cmluZyBub3QgZm91bmQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOwogfQogCkBAIC04NjMzLDI1ICsxMjE0OSwyNSBAQAogZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyIChkZWZhdWx0IGlzIGEgc3BhY2UpLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9yanVzdChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9yanVzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlfc3NpemVfdCB3aWR0aDsKLSAgICBQeV9VTklDT0RFIGZpbGxjaGFyID0gJyAnOworICAgIFB5X1VDUzQgZmlsbGNoYXIgPSAnICc7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58TyY6cmp1c3QiLCAmd2lkdGgsIGNvbnZlcnRfdWMsICZmaWxsY2hhcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKHNlbGYtPmxlbmd0aCA+PSB3aWR0aCAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwotICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiAoUHlPYmplY3QqKSBwYWQoc2VsZiwgd2lkdGggLSBzZWxmLT5sZW5ndGgsIDAsIGZpbGxjaGFyKTsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikgPj0gd2lkdGgpCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CisKKyAgICByZXR1cm4gcGFkKHNlbGYsIHdpZHRoIC0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIDAsIGZpbGxjaGFyKTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9TcGxpdChQeU9iamVjdCAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNlcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9TcGxpdChQeU9iamVjdCAqcywgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCkBAIC04NjY2LDcgKzEyMTgyLDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHJlc3VsdCA9IHNwbGl0KChQeVVuaWNvZGVPYmplY3QgKilzLCAoUHlVbmljb2RlT2JqZWN0ICopc2VwLCBtYXhzcGxpdCk7CisgICAgcmVzdWx0ID0gc3BsaXQocywgc2VwLCBtYXhzcGxpdCk7CiAKICAgICBQeV9ERUNSRUYocyk7CiAgICAgUHlfWERFQ1JFRihzZXApOwpAQCAtODY3NCw3ICsxMjE5MCw3IEBACiB9CiAKIFB5RG9jX1NUUlZBUihzcGxpdF9fZG9jX18sCi0gICAgICAgICAgICAgIlMuc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pIC0+IGxpc3Qgb2Ygc3RyaW5nc1xuXAorICAgICAgICAgICAgICJTLnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSkgLT4gbGlzdCBvZiBzdHJpbmdzXG5cCiBcblwKIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIFMsIHVzaW5nIHNlcCBhcyB0aGVcblwKIGRlbGltaXRlciBzdHJpbmcuICBJZiBtYXhzcGxpdCBpcyBnaXZlbiwgYXQgbW9zdCBtYXhzcGxpdFxuXApAQCAtODY4MywyMCArMTIxOTksMjIgQEAKIHJlbW92ZWQgZnJvbSB0aGUgcmVzdWx0LiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3NwbGl0KFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX3NwbGl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzZXAiLCAibWF4c3BsaXQiLCAwfTsKICAgICBQeU9iamVjdCAqc3Vic3RyaW5nID0gUHlfTm9uZTsKICAgICBQeV9zc2l6ZV90IG1heGNvdW50ID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPbjpzcGxpdCIsICZzdWJzdHJpbmcsICZtYXhjb3VudCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPbjpzcGxpdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3Vic3RyaW5nLCAmbWF4Y291bnQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChzdWJzdHJpbmcgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHNwbGl0KHNlbGYsIE5VTEwsIG1heGNvdW50KTsKICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soc3Vic3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIHNwbGl0KHNlbGYsIChQeVVuaWNvZGVPYmplY3QgKilzdWJzdHJpbmcsIG1heGNvdW50KTsKKyAgICAgICAgcmV0dXJuIHNwbGl0KHNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9TcGxpdCgoUHlPYmplY3QgKilzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9TcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKIH0KIAogUHlPYmplY3QgKgpAQCAtODcwNSw2ICsxMjIyMyw5IEBACiAgICAgUHlPYmplY3QqIHN0cl9vYmo7CiAgICAgUHlPYmplY3QqIHNlcF9vYmo7CiAgICAgUHlPYmplY3QqIG91dDsKKyAgICBpbnQga2luZDEsIGtpbmQyLCBraW5kOworICAgIHZvaWQgKmJ1ZjEgPSBOVUxMLCAqYnVmMiA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCiAgICAgc3RyX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cl9pbik7CiAgICAgaWYgKCFzdHJfb2JqKQpAQCAtODcxNCwxNiArMTIyMzUsNjIgQEAKICAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZXBfb2JqKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyX29iaikgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKHNlcF9vYmopOworICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICAgIG91dCA9IHN0cmluZ2xpYl9wYXJ0aXRpb24oCi0gICAgICAgIHN0cl9vYmosIFB5VW5pY29kZV9BU19VTklDT0RFKHN0cl9vYmopLCBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyX29iaiksCi0gICAgICAgIHNlcF9vYmosIFB5VW5pY29kZV9BU19VTklDT0RFKHNlcF9vYmopLCBQeVVuaWNvZGVfR0VUX1NJWkUoc2VwX29iaikKLSAgICAgICAgKTsKKyAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cl9vYmopOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc2VwX29iaik7CisgICAga2luZCA9IFB5X01BWChraW5kMSwga2luZDIpOworICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKKyAgICBpZiAoa2luZDEgIT0ga2luZCkKKyAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cl9vYmosIGtpbmQpOworICAgIGlmICghYnVmMSkKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzZXBfb2JqKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlcF9vYmosIGtpbmQpOworICAgIGlmICghYnVmMikKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJfb2JqKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VwX29iaik7CisKKyAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHN0cl9vYmopKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzdHJfb2JqKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc2VwX29iaikpCisgICAgICAgICAgICBvdXQgPSBhc2NpaWxpYl9wYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dCA9IHVjczFsaWJfcGFydGl0aW9uKHN0cl9vYmosIGJ1ZjEsIGxlbjEsIHNlcF9vYmosIGJ1ZjIsIGxlbjIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICBvdXQgPSB1Y3MybGliX3BhcnRpdGlvbihzdHJfb2JqLCBidWYxLCBsZW4xLCBzZXBfb2JqLCBidWYyLCBsZW4yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgb3V0ID0gdWNzNGxpYl9wYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgb3V0ID0gMDsKKyAgICB9CiAKICAgICBQeV9ERUNSRUYoc2VwX29iaik7CiAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgIGlmIChraW5kMSAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjEpOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgcmV0dXJuIG91dDsKKyAgb25FcnJvcjoKKyAgICBQeV9ERUNSRUYoc2VwX29iaik7CisgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgIGlmIChraW5kMSAhPSBraW5kICYmIGJ1ZjEpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQgJiYgYnVmMikKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogCkBAIC04NzMzLDYgKzEyMzAwLDkgQEAKICAgICBQeU9iamVjdCogc3RyX29iajsKICAgICBQeU9iamVjdCogc2VwX29iajsKICAgICBQeU9iamVjdCogb3V0OworICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgdm9pZCAqYnVmMSA9IE5VTEwsICpidWYyID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAKICAgICBzdHJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyX2luKTsKICAgICBpZiAoIXN0cl9vYmopCkBAIC04NzQzLDE1ICsxMjMxMyw1NiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBvdXQgPSBzdHJpbmdsaWJfcnBhcnRpdGlvbigKLSAgICAgICAgc3RyX29iaiwgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyX29iaiksIFB5VW5pY29kZV9HRVRfU0laRShzdHJfb2JqKSwKLSAgICAgICAgc2VwX29iaiwgUHlVbmljb2RlX0FTX1VOSUNPREUoc2VwX29iaiksIFB5VW5pY29kZV9HRVRfU0laRShzZXBfb2JqKQotICAgICAgICApOworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyX2luKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHNlcF9vYmopOworICAgIGtpbmQgPSBQeV9NQVgoa2luZDEsIGtpbmQyKTsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX2luKTsKKyAgICBpZiAoa2luZDEgIT0ga2luZCkKKyAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cl9pbiwga2luZCk7CisgICAgaWYgKCFidWYxKQorICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHNlcF9vYmopOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VwX29iaiwga2luZCk7CisgICAgaWYgKCFidWYyKQorICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cl9vYmopOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZXBfb2JqKTsKKworICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQoc3RyX2luKSkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyX29iaikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHNlcF9vYmopKQorICAgICAgICAgICAgb3V0ID0gYXNjaWlsaWJfcnBhcnRpdGlvbihzdHJfb2JqLCBidWYxLCBsZW4xLCBzZXBfb2JqLCBidWYyLCBsZW4yKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0ID0gdWNzMWxpYl9ycGFydGl0aW9uKHN0cl9vYmosIGJ1ZjEsIGxlbjEsIHNlcF9vYmosIGJ1ZjIsIGxlbjIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICBvdXQgPSB1Y3MybGliX3JwYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIG91dCA9IHVjczRsaWJfcnBhcnRpdGlvbihzdHJfb2JqLCBidWYxLCBsZW4xLCBzZXBfb2JqLCBidWYyLCBsZW4yKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgICAgICBvdXQgPSAwOworICAgIH0KIAogICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICByZXR1cm4gb3V0OworICBvbkVycm9yOgorICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKKyAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgaWYgKGtpbmQxICE9IGtpbmQgJiYgYnVmMSkKKyAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCAmJiBidWYyKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOworICAgIHJldHVybiBOVUxMOwogfQogCiBQeURvY19TVFJWQVIocGFydGl0aW9uX19kb2NfXywKQEAgLTg3NjIsOSArMTIzNzMsOSBAQAogZm91bmQsIHJldHVybiBTIGFuZCB0d28gZW1wdHkgc3RyaW5ncy4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9wYXJ0aXRpb24oUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwYXJhdG9yKQordW5pY29kZV9wYXJ0aXRpb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXBhcmF0b3IpCiB7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9QYXJ0aXRpb24oKFB5T2JqZWN0ICopc2VsZiwgc2VwYXJhdG9yKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX1BhcnRpdGlvbihzZWxmLCBzZXBhcmF0b3IpOwogfQogCiBQeURvY19TVFJWQVIocnBhcnRpdGlvbl9fZG9jX18sCkBAIC04Nzc1LDE0ICsxMjM4NiwxMyBAQAogc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJuIHR3byBlbXB0eSBzdHJpbmdzIGFuZCBTLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3JwYXJ0aXRpb24oUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwYXJhdG9yKQordW5pY29kZV9ycGFydGl0aW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwYXJhdG9yKQogewotICAgIHJldHVybiBQeVVuaWNvZGVfUlBhcnRpdGlvbigoUHlPYmplY3QgKilzZWxmLCBzZXBhcmF0b3IpOworICAgIHJldHVybiBQeVVuaWNvZGVfUlBhcnRpdGlvbihzZWxmLCBzZXBhcmF0b3IpOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX1JTcGxpdChQeU9iamVjdCAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heHNwbGl0KQorUHlPYmplY3QgKgorUHlVbmljb2RlX1JTcGxpdChQeU9iamVjdCAqcywgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCkBAIC04Nzk3LDcgKzEyNDA3LDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHJlc3VsdCA9IHJzcGxpdCgoUHlVbmljb2RlT2JqZWN0ICopcywgKFB5VW5pY29kZU9iamVjdCAqKXNlcCwgbWF4c3BsaXQpOworICAgIHJlc3VsdCA9IHJzcGxpdChzLCBzZXAsIG1heHNwbGl0KTsKIAogICAgIFB5X0RFQ1JFRihzKTsKICAgICBQeV9YREVDUkVGKHNlcCk7CkBAIC04ODA1LDcgKzEyNDE1LDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKHJzcGxpdF9fZG9jX18sCi0gICAgICAgICAgICAgIlMucnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKSAtPiBsaXN0IG9mIHN0cmluZ3NcblwKKyAgICAgICAgICAgICAiUy5yc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKSAtPiBsaXN0IG9mIHN0cmluZ3NcblwKIFxuXAogUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gUywgdXNpbmcgc2VwIGFzIHRoZVxuXAogZGVsaW1pdGVyIHN0cmluZywgc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGFuZFxuXApAQCAtODgxNCwyMCArMTI0MjQsMjIgQEAKIGlzIGEgc2VwYXJhdG9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3JzcGxpdChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9yc3BsaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNlcCIsICJtYXhzcGxpdCIsIDB9OwogICAgIFB5T2JqZWN0ICpzdWJzdHJpbmcgPSBQeV9Ob25lOwogICAgIFB5X3NzaXplX3QgbWF4Y291bnQgPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE9uOnJzcGxpdCIsICZzdWJzdHJpbmcsICZtYXhjb3VudCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPbjpyc3BsaXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnN1YnN0cmluZywgJm1heGNvdW50KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoc3Vic3RyaW5nID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiByc3BsaXQoc2VsZiwgTlVMTCwgbWF4Y291bnQpOwogICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKQotICAgICAgICByZXR1cm4gcnNwbGl0KHNlbGYsIChQeVVuaWNvZGVPYmplY3QgKilzdWJzdHJpbmcsIG1heGNvdW50KTsKKyAgICAgICAgcmV0dXJuIHJzcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfUlNwbGl0KChQeU9iamVjdCAqKXNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX1JTcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKIH0KIAogUHlEb2NfU1RSVkFSKHNwbGl0bGluZXNfX2RvY19fLApAQCAtODgzOCwyNiArMTI0NTAsMjIgQEAKIGlzIGdpdmVuIGFuZCB0cnVlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3NwbGl0bGluZXMoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfc3BsaXRsaW5lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogeworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsia2VlcGVuZHMiLCAwfTsKICAgICBpbnQga2VlcGVuZHMgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpzcGxpdGxpbmVzIiwgJmtlZXBlbmRzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGk6c3BsaXRsaW5lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAma2VlcGVuZHMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBQeVVuaWNvZGVfU3BsaXRsaW5lcygoUHlPYmplY3QgKilzZWxmLCBrZWVwZW5kcyk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9TcGxpdGxpbmVzKHNlbGYsIGtlZXBlbmRzKTsKIH0KIAogc3RhdGljCiBQeU9iamVjdCAqdW5pY29kZV9zdHIoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIHNlbGY7Ci0gICAgfSBlbHNlCi0gICAgICAgIC8qIFN1YnR5cGUgLS0gcmV0dXJuIGdlbnVpbmUgdW5pY29kZSBzdHJpbmcgd2l0aCB0aGUgc2FtZSB2YWx1ZS4gKi8KLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikpOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CiB9CiAKIFB5RG9jX1NUUlZBUihzd2FwY2FzZV9fZG9jX18sCkBAIC04ODY3LDkgKzEyNDc1LDExIEBACiBhbmQgdmljZSB2ZXJzYS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9zd2FwY2FzZShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX3N3YXBjYXNlKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJldHVybiBmaXh1cChzZWxmLCBmaXhzd2FwY2FzZSk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIGNhc2Vfb3BlcmF0aW9uKHNlbGYsIGRvX3N3YXBjYXNlKTsKIH0KIAogUHlEb2NfU1RSVkFSKG1ha2V0cmFuc19fZG9jX18sCkBAIC04ODg1LDcgKzEyNDk1LDcgQEAKIG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG8gTm9uZSBpbiB0aGUgcmVzdWx0LiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX21ha2V0cmFucyhQeVVuaWNvZGVPYmplY3QgKm51bGwsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9tYWtldHJhbnMoUHlPYmplY3QgKm51bGwsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICp4LCAqeSA9IE5VTEwsICp6ID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmV3ID0gTlVMTCwgKmtleSwgKnZhbHVlOwpAQCAtODg5OCwyNCArMTI1MDgsMzAgQEAKICAgICBpZiAoIW5ldykKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHkgIT0gTlVMTCkgeworICAgICAgICBpbnQgeF9raW5kLCB5X2tpbmQsIHpfa2luZDsKKyAgICAgICAgdm9pZCAqeF9kYXRhLCAqeV9kYXRhLCAqel9kYXRhOworCiAgICAgICAgIC8qIHggbXVzdCBiZSBhIHN0cmluZyB0b28sIG9mIGVxdWFsIGxlbmd0aCAqLwotICAgICAgICBQeV9zc2l6ZV90IHlsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoeSk7CiAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHgpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZmlyc3QgbWFrZXRyYW5zIGFyZ3VtZW50IG11c3QgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZSBhIHN0cmluZyBpZiB0aGVyZSBpcyBhIHNlY29uZCBhcmd1bWVudCIpOwogICAgICAgICAgICAgZ290byBlcnI7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRSh4KSAhPSB5bGVuKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh4KSAhPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh5KSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ0aGUgZmlyc3QgdHdvIG1ha2V0cmFucyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50cyBtdXN0IGhhdmUgZXF1YWwgbGVuZ3RoIik7CiAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgfQogICAgICAgICAvKiBjcmVhdGUgZW50cmllcyBmb3IgdHJhbnNsYXRpbmcgY2hhcnMgaW4geCB0byB0aG9zZSBpbiB5ICovCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVVuaWNvZGVfR0VUX1NJWkUoeCk7IGkrKykgewotICAgICAgICAgICAga2V5ID0gUHlMb25nX0Zyb21Mb25nKFB5VW5pY29kZV9BU19VTklDT0RFKHgpW2ldKTsKKyAgICAgICAgeF9raW5kID0gUHlVbmljb2RlX0tJTkQoeCk7CisgICAgICAgIHlfa2luZCA9IFB5VW5pY29kZV9LSU5EKHkpOworICAgICAgICB4X2RhdGEgPSBQeVVuaWNvZGVfREFUQSh4KTsKKyAgICAgICAgeV9kYXRhID0gUHlVbmljb2RlX0RBVEEoeSk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSCh4KTsgaSsrKSB7CisgICAgICAgICAgICBrZXkgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX1JFQUQoeF9raW5kLCB4X2RhdGEsIGkpKTsKICAgICAgICAgICAgIGlmICgha2V5KQogICAgICAgICAgICAgICAgIGdvdG8gZXJyOwotICAgICAgICAgICAgdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX0FTX1VOSUNPREUoeSlbaV0pOworICAgICAgICAgICAgdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX1JFQUQoeV9raW5kLCB5X2RhdGEsIGkpKTsKICAgICAgICAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICBnb3RvIGVycjsKQEAgLTg5MjgsOCArMTI1NDQsMTAgQEAKICAgICAgICAgfQogICAgICAgICAvKiBjcmVhdGUgZW50cmllcyBmb3IgZGVsZXRpbmcgY2hhcnMgaW4geiAqLwogICAgICAgICBpZiAoeiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlVbmljb2RlX0dFVF9TSVpFKHopOyBpKyspIHsKLSAgICAgICAgICAgICAgICBrZXkgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX0FTX1VOSUNPREUoeilbaV0pOworICAgICAgICAgICAgel9raW5kID0gUHlVbmljb2RlX0tJTkQoeik7CisgICAgICAgICAgICB6X2RhdGEgPSBQeVVuaWNvZGVfREFUQSh6KTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSCh6KTsgaSsrKSB7CisgICAgICAgICAgICAgICAga2V5ID0gUHlMb25nX0Zyb21Mb25nKFB5VW5pY29kZV9SRUFEKHpfa2luZCwgel9kYXRhLCBpKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFrZXkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICAgICAgICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtKG5ldywga2V5LCBQeV9Ob25lKTsKQEAgLTg5MzksNiArMTI1NTcsOSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IGtpbmQ7CisgICAgICAgIHZvaWQgKmRhdGE7CisKICAgICAgICAgLyogeCBtdXN0IGJlIGEgZGljdCAqLwogICAgICAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KHgpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiaWYgeW91IGdpdmUgb25seSBvbmUgYXJndW1lbnQgIgpAQCAtODk1MCwxMiArMTI1NzEsMTQgQEAKICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soa2V5KSkgewogICAgICAgICAgICAgICAgIC8qIGNvbnZlcnQgc3RyaW5nIGtleXMgdG8gaW50ZWdlciBrZXlzICovCiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5ld2tleTsKLSAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKGtleSkgIT0gMSkgeworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChrZXkpICE9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJzdHJpbmcga2V5cyBpbiB0cmFuc2xhdGUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhYmxlIG11c3QgYmUgb2YgbGVuZ3RoIDEiKTsKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5ld2tleSA9IFB5TG9uZ19Gcm9tTG9uZyhQeVVuaWNvZGVfQVNfVU5JQ09ERShrZXkpWzBdKTsKKyAgICAgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoa2V5KTsKKyAgICAgICAgICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoa2V5KTsKKyAgICAgICAgICAgICAgICBuZXdrZXkgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCkpOwogICAgICAgICAgICAgICAgIGlmICghbmV3a2V5KQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgICAgICAgICByZXMgPSBQeURpY3RfU2V0SXRlbShuZXcsIG5ld2tleSwgdmFsdWUpOwpAQCAtODk4OSw5ICsxMjYxMiw5IEBACiBhcmUgZGVsZXRlZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV90cmFuc2xhdGUoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUpCit1bmljb2RlX3RyYW5zbGF0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlKQogewotICAgIHJldHVybiBQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCwgdGFibGUsICJpZ25vcmUiKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKHNlbGYsIHRhYmxlLCAiaWdub3JlIik7CiB9CiAKIFB5RG9jX1NUUlZBUih1cHBlcl9fZG9jX18sCkBAIC05MDAwLDkgKzEyNjIzLDEzIEBACiBSZXR1cm4gYSBjb3B5IG9mIFMgY29udmVydGVkIHRvIHVwcGVyY2FzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV91cHBlcihQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX3VwcGVyKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJldHVybiBmaXh1cChzZWxmLCBmaXh1cHBlcik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzZWxmKSkKKyAgICAgICAgcmV0dXJuIGFzY2lpX3VwcGVyX29yX2xvd2VyKHNlbGYsIDApOworICAgIHJldHVybiBjYXNlX29wZXJhdGlvbihzZWxmLCBkb191cHBlcik7CiB9CiAKIFB5RG9jX1NUUlZBUih6ZmlsbF9fZG9jX18sCkBAIC05MDEyLDU1ICsxMjYzOSw1MCBAQAogb2YgdGhlIHNwZWNpZmllZCB3aWR0aC4gVGhlIHN0cmluZyBTIGlzIG5ldmVyIHRydW5jYXRlZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfemZpbGwoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfemZpbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X3NzaXplX3QgZmlsbDsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnU7Ci0KKyAgICBQeU9iamVjdCAqdTsKICAgICBQeV9zc2l6ZV90IHdpZHRoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfVUNTNCBjaHI7CisKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm46emZpbGwiLCAmd2lkdGgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChzZWxmLT5sZW5ndGggPj0gd2lkdGgpIHsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpLAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKQotICAgICAgICAgICAgICAgICk7Ci0gICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZmlsbCA9IHdpZHRoIC0gc2VsZi0+bGVuZ3RoOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSA+PSB3aWR0aCkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKKworICAgIGZpbGwgPSB3aWR0aCAtIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogCiAgICAgdSA9IHBhZChzZWxmLCBmaWxsLCAwLCAnMCcpOwogCiAgICAgaWYgKHUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAodS0+c3RyW2ZpbGxdID09ICcrJyB8fCB1LT5zdHJbZmlsbF0gPT0gJy0nKSB7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1KTsKKyAgICBjaHIgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBmaWxsKTsKKworICAgIGlmIChjaHIgPT0gJysnIHx8IGNociA9PSAnLScpIHsKICAgICAgICAgLyogbW92ZSBzaWduIHRvIGJlZ2lubmluZyBvZiBzdHJpbmcgKi8KLSAgICAgICAgdS0+c3RyWzBdID0gdS0+c3RyW2ZpbGxdOwotICAgICAgICB1LT5zdHJbZmlsbF0gPSAnMCc7CisgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCAwLCBjaHIpOworICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgZmlsbCwgJzAnKTsKICAgICB9CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0KikgdTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHUsIDEpKTsKKyAgICByZXR1cm4gdTsKIH0KIAogI2lmIDAKLXN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfZnJlZWxpc3RzaXplKFB5VW5pY29kZU9iamVjdCAqc2VsZikKLXsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG51bWZyZWUpOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9fZGVjaW1hbDJhc2NpaShQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxBbmRTcGFjZVRvQVNDSUkoc2VsZik7CiB9CiAjZW5kaWYKIApAQCAtOTA3MywxMSArMTI2OTUsMTEgQEAKIHByZWZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHN0cmluZ3MgdG8gdHJ5LiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9zdGFydHN3aXRoKFB5VW5pY29kZU9iamVjdCAqc2VsZiwKK3VuaWNvZGVfc3RhcnRzd2l0aChQeU9iamVjdCAqc2VsZiwKICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nOworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKICAgICBpbnQgcmVzdWx0OwpAQCAtOTA4Nyw4ICsxMjcwOSw3IEBACiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewogICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgc3Vic3RyaW5nID0gKFB5VW5pY29kZU9iamVjdCAqKVB5VW5pY29kZV9Gcm9tT2JqZWN0KAotICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSk7CisgICAgICAgICAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSkpOwogICAgICAgICAgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgLTEpOwpAQCAtOTEwMCw3ICsxMjcyMSw3IEBACiAgICAgICAgIC8qIG5vdGhpbmcgbWF0Y2hlZCAqLwogICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CiAgICAgfQotICAgIHN1YnN0cmluZyA9IChQeVVuaWNvZGVPYmplY3QgKilQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJvYmopOworICAgIHN1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1Ym9iaik7CiAgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAic3RhcnRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBzdHIgb3IgIgpAQCAtOTEyMiwxMSArMTI3NDMsMTEgQEAKIHN1ZmZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHN0cmluZ3MgdG8gdHJ5LiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9lbmRzd2l0aChQeVVuaWNvZGVPYmplY3QgKnNlbGYsCit1bmljb2RlX2VuZHN3aXRoKFB5T2JqZWN0ICpzZWxmLAogICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nOworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKICAgICBpbnQgcmVzdWx0OwpAQCAtOTEzNiw3ICsxMjc1Nyw3IEBACiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewogICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgc3Vic3RyaW5nID0gKFB5VW5pY29kZU9iamVjdCAqKVB5VW5pY29kZV9Gcm9tT2JqZWN0KAorICAgICAgICAgICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3QoCiAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpKTsKICAgICAgICAgICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTkxNDgsNyArMTI3NjksNyBAQAogICAgICAgICB9CiAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKICAgICB9Ci0gICAgc3Vic3RyaW5nID0gKFB5VW5pY29kZU9iamVjdCAqKVB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1Ym9iaik7CisgICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vib2JqKTsKICAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJlbmRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBzdHIgb3IgIgpAQCAtOTE2MCw3ICsxMjc4MSwxNTkgQEAKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7CiB9CiAKLSNpbmNsdWRlICJzdHJpbmdsaWIvc3RyaW5nX2Zvcm1hdC5oIgorUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitfUHlVbmljb2RlV3JpdGVyX1VwZGF0ZShfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCit7CisgICAgd3JpdGVyLT5zaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgod3JpdGVyLT5idWZmZXIpOworICAgIHdyaXRlci0+bWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh3cml0ZXItPmJ1ZmZlcik7CisgICAgd3JpdGVyLT5kYXRhID0gUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpOworICAgIHdyaXRlci0+a2luZCA9IFB5VW5pY29kZV9LSU5EKHdyaXRlci0+YnVmZmVyKTsKK30KKwordm9pZAorX1B5VW5pY29kZVdyaXRlcl9Jbml0KF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgUHlfc3NpemVfdCBtaW5fbGVuZ3RoKQoreworICAgIG1lbXNldCh3cml0ZXIsIDAsIHNpemVvZigqd3JpdGVyKSk7CisjaWZkZWYgUHlfREVCVUcKKyAgICB3cml0ZXItPmtpbmQgPSA1OyAgICAvKiBpbnZhbGlkIGtpbmQgKi8KKyNlbmRpZgorICAgIHdyaXRlci0+bWluX2xlbmd0aCA9IFB5X01BWChtaW5fbGVuZ3RoLCAxMDApOworICAgIHdyaXRlci0+b3ZlcmFsbG9jYXRlID0gKG1pbl9sZW5ndGggPiAwKTsKK30KKworaW50CitfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVJbnRlcm5hbChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfVUNTNCBtYXhjaGFyKQoreworICAgIFB5X3NzaXplX3QgbmV3bGVuOworICAgIFB5T2JqZWN0ICpuZXdidWZmZXI7CisKKyAgICBhc3NlcnQobGVuZ3RoID4gMCk7CisKKyAgICBpZiAobGVuZ3RoID4gUFlfU1NJWkVfVF9NQVggLSB3cml0ZXItPnBvcykgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIG5ld2xlbiA9IHdyaXRlci0+cG9zICsgbGVuZ3RoOworCisgICAgaWYgKHdyaXRlci0+YnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgaWYgKHdyaXRlci0+b3ZlcmFsbG9jYXRlKSB7CisgICAgICAgICAgICAvKiBvdmVyYWxsb2NhdGUgMjUlIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgcmVzaXplICovCisgICAgICAgICAgICBpZiAobmV3bGVuIDw9IChQWV9TU0laRV9UX01BWCAtIG5ld2xlbiAvIDQpKQorICAgICAgICAgICAgICAgIG5ld2xlbiArPSBuZXdsZW4gLyA0OworICAgICAgICAgICAgaWYgKG5ld2xlbiA8IHdyaXRlci0+bWluX2xlbmd0aCkKKyAgICAgICAgICAgICAgICBuZXdsZW4gPSB3cml0ZXItPm1pbl9sZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBQeVVuaWNvZGVfTmV3KG5ld2xlbiwgbWF4Y2hhcik7CisgICAgICAgIGlmICh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBfUHlVbmljb2RlV3JpdGVyX1VwZGF0ZSh3cml0ZXIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAobmV3bGVuID4gd3JpdGVyLT5zaXplKSB7CisgICAgICAgIGlmICh3cml0ZXItPm92ZXJhbGxvY2F0ZSkgeworICAgICAgICAgICAgLyogb3ZlcmFsbG9jYXRlIDI1JSB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIHJlc2l6ZSAqLworICAgICAgICAgICAgaWYgKG5ld2xlbiA8PSAoUFlfU1NJWkVfVF9NQVggLSBuZXdsZW4gLyA0KSkKKyAgICAgICAgICAgICAgICBuZXdsZW4gKz0gbmV3bGVuIC8gNDsKKyAgICAgICAgICAgIGlmIChuZXdsZW4gPCB3cml0ZXItPm1pbl9sZW5ndGgpCisgICAgICAgICAgICAgICAgbmV3bGVuID0gd3JpdGVyLT5taW5fbGVuZ3RoOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1heGNoYXIgPiB3cml0ZXItPm1heGNoYXIgfHwgd3JpdGVyLT5yZWFkb25seSkgeworICAgICAgICAgICAgLyogcmVzaXplICsgd2lkZW4gKi8KKyAgICAgICAgICAgIG5ld2J1ZmZlciA9IFB5VW5pY29kZV9OZXcobmV3bGVuLCBtYXhjaGFyKTsKKyAgICAgICAgICAgIGlmIChuZXdidWZmZXIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhuZXdidWZmZXIsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciwgMCwgd3JpdGVyLT5wb3MpOworICAgICAgICAgICAgUHlfREVDUkVGKHdyaXRlci0+YnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci0+cmVhZG9ubHkgPSAwOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbmV3YnVmZmVyID0gcmVzaXplX2NvbXBhY3Qod3JpdGVyLT5idWZmZXIsIG5ld2xlbik7CisgICAgICAgICAgICBpZiAobmV3YnVmZmVyID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHdyaXRlci0+YnVmZmVyID0gbmV3YnVmZmVyOworICAgICAgICBfUHlVbmljb2RlV3JpdGVyX1VwZGF0ZSh3cml0ZXIpOworICAgIH0KKyAgICBlbHNlIGlmIChtYXhjaGFyID4gd3JpdGVyLT5tYXhjaGFyKSB7CisgICAgICAgIGFzc2VydCghd3JpdGVyLT5yZWFkb25seSk7CisgICAgICAgIG5ld2J1ZmZlciA9IFB5VW5pY29kZV9OZXcod3JpdGVyLT5zaXplLCBtYXhjaGFyKTsKKyAgICAgICAgaWYgKG5ld2J1ZmZlciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhuZXdidWZmZXIsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci0+YnVmZmVyLCAwLCB3cml0ZXItPnBvcyk7CisgICAgICAgIFB5X0RFQ1JFRih3cml0ZXItPmJ1ZmZlcik7CisgICAgICAgIHdyaXRlci0+YnVmZmVyID0gbmV3YnVmZmVyOworICAgICAgICBfUHlVbmljb2RlV3JpdGVyX1VwZGF0ZSh3cml0ZXIpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworaW50CitfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgUHlPYmplY3QgKnN0cikKK3sKKyAgICBQeV9VQ1M0IG1heGNoYXI7CisgICAgUHlfc3NpemVfdCBsZW47CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworICAgIGlmIChsZW4gPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzdHIpOworICAgIGlmIChtYXhjaGFyID4gd3JpdGVyLT5tYXhjaGFyIHx8IGxlbiA+IHdyaXRlci0+c2l6ZSAtIHdyaXRlci0+cG9zKSB7CisgICAgICAgIGlmICh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMICYmICF3cml0ZXItPm92ZXJhbGxvY2F0ZSkgeworICAgICAgICAgICAgUHlfSU5DUkVGKHN0cik7CisgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IHN0cjsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfVXBkYXRlKHdyaXRlcik7CisgICAgICAgICAgICB3cml0ZXItPnJlYWRvbmx5ID0gMTsKKyAgICAgICAgICAgIHdyaXRlci0+c2l6ZSA9IDA7CisgICAgICAgICAgICB3cml0ZXItPnBvcyArPSBsZW47CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlSW50ZXJuYWwod3JpdGVyLCBsZW4sIG1heGNoYXIpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyLCAwLCBsZW4pOworICAgIHdyaXRlci0+cG9zICs9IGxlbjsKKyAgICByZXR1cm4gMDsKK30KKworUHlPYmplY3QgKgorX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQoreworICAgIGlmICh3cml0ZXItPnBvcyA9PSAwKSB7CisgICAgICAgIFB5X1hERUNSRUYod3JpdGVyLT5idWZmZXIpOworICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKKyAgICB9CisgICAgaWYgKHdyaXRlci0+cmVhZG9ubHkpIHsKKyAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9HRVRfTEVOR1RIKHdyaXRlci0+YnVmZmVyKSA9PSB3cml0ZXItPnBvcyk7CisgICAgICAgIHJldHVybiB3cml0ZXItPmJ1ZmZlcjsKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHdyaXRlci0+YnVmZmVyKSAhPSB3cml0ZXItPnBvcykgeworICAgICAgICBQeU9iamVjdCAqbmV3YnVmZmVyOworICAgICAgICBuZXdidWZmZXIgPSByZXNpemVfY29tcGFjdCh3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MpOworICAgICAgICBpZiAobmV3YnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih3cml0ZXItPmJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IG5ld2J1ZmZlcjsKKyAgICB9CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh3cml0ZXItPmJ1ZmZlciwgMSkpOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF9yZWFkeSh3cml0ZXItPmJ1ZmZlcik7Cit9CisKK3ZvaWQKK19QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYyhfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCit7CisgICAgUHlfQ0xFQVIod3JpdGVyLT5idWZmZXIpOworfQorCisjaW5jbHVkZSAic3RyaW5nbGliL3VuaWNvZGVfZm9ybWF0LmgiCiAKIFB5RG9jX1NUUlZBUihmb3JtYXRfX2RvY19fLAogICAgICAgICAgICAgICJTLmZvcm1hdCgqYXJncywgKiprd2FyZ3MpIC0+IHN0clxuXApAQCAtOTE3OCwxMyArMTI5NTEsMjMgQEAKIHVuaWNvZGVfX2Zvcm1hdF9fKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKICAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWM7CisgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CisgICAgaW50IHJldDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpfX2Zvcm1hdF9fIiwgJmZvcm1hdF9zcGVjKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKGZvcm1hdF9zcGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoZm9ybWF0X3NwZWMpKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlciwgMCk7CisgICAgcmV0ID0gX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZFdyaXRlcigmd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgZm9ybWF0X3NwZWMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChmb3JtYXRfc3BlYykpOworICAgIGlmIChyZXQgPT0gLTEpIHsKKyAgICAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogfQogCiBQeURvY19TVFJWQVIocF9mb3JtYXRfX2RvY19fLApAQCAtOTE5MywyOCArMTI5NzYsNTUgQEAKIFJldHVybiBhIGZvcm1hdHRlZCB2ZXJzaW9uIG9mIFMgYXMgZGVzY3JpYmVkIGJ5IGZvcm1hdF9zcGVjLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9fc2l6ZW9mX18oUHlVbmljb2RlT2JqZWN0ICp2KQordW5pY29kZV9fc2l6ZW9mX18oUHlPYmplY3QgKnYpCiB7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzaXplb2YoUHlVbmljb2RlT2JqZWN0KSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlfVU5JQ09ERSkgKiAodi0+bGVuZ3RoICsgMSkpOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKworICAgIC8qIElmIGl0J3MgYSBjb21wYWN0IG9iamVjdCwgYWNjb3VudCBmb3IgYmFzZSBzdHJ1Y3R1cmUgKworICAgICAgIGNoYXJhY3RlciBkYXRhLiAqLworICAgIGlmIChQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSSh2KSkKKyAgICAgICAgc2l6ZSA9IHNpemVvZihQeUFTQ0lJT2JqZWN0KSArIFB5VW5pY29kZV9HRVRfTEVOR1RIKHYpICsgMTsKKyAgICBlbHNlIGlmIChQeVVuaWNvZGVfSVNfQ09NUEFDVCh2KSkKKyAgICAgICAgc2l6ZSA9IHNpemVvZihQeUNvbXBhY3RVbmljb2RlT2JqZWN0KSArCisgICAgICAgICAgICAoUHlVbmljb2RlX0dFVF9MRU5HVEgodikgKyAxKSAqIFB5VW5pY29kZV9LSU5EKHYpOworICAgIGVsc2UgeworICAgICAgICAvKiBJZiBpdCBpcyBhIHR3by1ibG9jayBvYmplY3QsIGFjY291bnQgZm9yIGJhc2Ugb2JqZWN0LCBhbmQKKyAgICAgICAgICAgZm9yIGNoYXJhY3RlciBibG9jayBpZiBwcmVzZW50LiAqLworICAgICAgICBzaXplID0gc2l6ZW9mKFB5VW5pY29kZU9iamVjdCk7CisgICAgICAgIGlmIChfUHlVbmljb2RlX0RBVEFfQU5ZKHYpKQorICAgICAgICAgICAgc2l6ZSArPSAoUHlVbmljb2RlX0dFVF9MRU5HVEgodikgKyAxKSAqCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0tJTkQodik7CisgICAgfQorICAgIC8qIElmIHRoZSB3c3RyIHBvaW50ZXIgaXMgcHJlc2VudCwgYWNjb3VudCBmb3IgaXQgdW5sZXNzIGl0IGlzIHNoYXJlZAorICAgICAgIHdpdGggdGhlIGRhdGEgcG9pbnRlci4gQ2hlY2sgaWYgdGhlIGRhdGEgaXMgbm90IHNoYXJlZC4gKi8KKyAgICBpZiAoX1B5VW5pY29kZV9IQVNfV1NUUl9NRU1PUlkodikpCisgICAgICAgIHNpemUgKz0gKFB5VW5pY29kZV9XU1RSX0xFTkdUSCh2KSArIDEpICogc2l6ZW9mKHdjaGFyX3QpOworICAgIGlmIChfUHlVbmljb2RlX0hBU19VVEY4X01FTU9SWSh2KSkKKyAgICAgICAgc2l6ZSArPSBQeVVuaWNvZGVfVVRGOF9MRU5HVEgodikgKyAxOworCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzaXplKTsKIH0KIAogUHlEb2NfU1RSVkFSKHNpemVvZl9fZG9jX18sCiAgICAgICAgICAgICAgIlMuX19zaXplb2ZfXygpIC0+IHNpemUgb2YgUyBpbiBtZW1vcnksIGluIGJ5dGVzIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2dldG5ld2FyZ3MoUHlVbmljb2RlT2JqZWN0ICp2KQordW5pY29kZV9nZXRuZXdhcmdzKFB5T2JqZWN0ICp2KQogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIodSMpIiwgdi0+c3RyLCB2LT5sZW5ndGgpOworICAgIFB5T2JqZWN0ICpjb3B5ID0gX1B5VW5pY29kZV9Db3B5KHYpOworICAgIGlmICghY29weSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihOKSIsIGNvcHkpOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgdW5pY29kZV9tZXRob2RzW10gPSB7CiAgICAgeyJlbmNvZGUiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfZW5jb2RlLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBlbmNvZGVfX2RvY19ffSwKICAgICB7InJlcGxhY2UiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfcmVwbGFjZSwgTUVUSF9WQVJBUkdTLCByZXBsYWNlX19kb2NfX30sCi0gICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9zcGxpdCwgTUVUSF9WQVJBUkdTLCBzcGxpdF9fZG9jX199LAotICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3JzcGxpdCwgTUVUSF9WQVJBUkdTLCByc3BsaXRfX2RvY19ffSwKKyAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3NwbGl0LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBzcGxpdF9fZG9jX199LAorICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3JzcGxpdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcnNwbGl0X19kb2NfX30sCiAgICAgeyJqb2luIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX2pvaW4sIE1FVEhfTywgam9pbl9fZG9jX199LAogICAgIHsiY2FwaXRhbGl6ZSIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9jYXBpdGFsaXplLCBNRVRIX05PQVJHUywgY2FwaXRhbGl6ZV9fZG9jX199LAorICAgIHsiY2FzZWZvbGQiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfY2FzZWZvbGQsIE1FVEhfTk9BUkdTLCBjYXNlZm9sZF9fZG9jX199LAogICAgIHsidGl0bGUiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfdGl0bGUsIE1FVEhfTk9BUkdTLCB0aXRsZV9fZG9jX199LAogICAgIHsiY2VudGVyIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX2NlbnRlciwgTUVUSF9WQVJBUkdTLCBjZW50ZXJfX2RvY19ffSwKICAgICB7ImNvdW50IiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX2NvdW50LCBNRVRIX1ZBUkFSR1MsIGNvdW50X19kb2NfX30sCkBAIC05MjMwLDcgKzEzMDQwLDcgQEAKICAgICB7InJqdXN0IiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3JqdXN0LCBNRVRIX1ZBUkFSR1MsIHJqdXN0X19kb2NfX30sCiAgICAgeyJyc3RyaXAiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfcnN0cmlwLCBNRVRIX1ZBUkFSR1MsIHJzdHJpcF9fZG9jX199LAogICAgIHsicnBhcnRpdGlvbiIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9ycGFydGl0aW9uLCBNRVRIX08sIHJwYXJ0aXRpb25fX2RvY19ffSwKLSAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfc3BsaXRsaW5lcywgTUVUSF9WQVJBUkdTLCBzcGxpdGxpbmVzX19kb2NfX30sCisgICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3NwbGl0bGluZXMsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHNwbGl0bGluZXNfX2RvY19ffSwKICAgICB7InN0cmlwIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3N0cmlwLCBNRVRIX1ZBUkFSR1MsIHN0cmlwX19kb2NfX30sCiAgICAgeyJzd2FwY2FzZSIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9zd2FwY2FzZSwgTUVUSF9OT0FSR1MsIHN3YXBjYXNlX19kb2NfX30sCiAgICAgeyJ0cmFuc2xhdGUiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfdHJhbnNsYXRlLCBNRVRIX08sIHRyYW5zbGF0ZV9fZG9jX199LApAQCAtOTI1NiwxMiArMTMwNjYsNyBAQAogICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX1NUQVRJQywgbWFrZXRyYW5zX19kb2NfX30sCiAgICAgeyJfX3NpemVvZl9fIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX19zaXplb2ZfXywgTUVUSF9OT0FSR1MsIHNpemVvZl9fZG9jX199LAogI2lmIDAKLSAgICB7ImNhcHdvcmRzIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX2NhcHdvcmRzLCBNRVRIX05PQVJHUywgY2Fwd29yZHNfX2RvY19ffSwKLSNlbmRpZgotCi0jaWYgMAogICAgIC8qIFRoZXNlIG1ldGhvZHMgYXJlIGp1c3QgdXNlZCBmb3IgZGVidWdnaW5nIHRoZSBpbXBsZW1lbnRhdGlvbi4gKi8KLSAgICB7ImZyZWVsaXN0c2l6ZSIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9mcmVlbGlzdHNpemUsIE1FVEhfTk9BUkdTfSwKICAgICB7Il9kZWNpbWFsMmFzY2lpIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX19kZWNpbWFsMmFzY2lpLCBNRVRIX05PQVJHU30sCiAjZW5kaWYKIApAQCAtOTI3MiwxMCArMTMwNzcsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfbW9kKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdykKIHsKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh2KSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHYpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gb3JtYXQodiwgdyk7CiB9CiAKQEAgLTkyOTgsNTAgKzEzMTAxLDY4IEBACiB9OwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3N1YnNjcmlwdChQeVVuaWNvZGVPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBpdGVtKQordW5pY29kZV9zdWJzY3JpcHQoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBpdGVtKQogeworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKFB5SW5kZXhfQ2hlY2soaXRlbSkpIHsKICAgICAgICAgUHlfc3NpemVfdCBpID0gUHlOdW1iZXJfQXNTc2l6ZV90KGl0ZW0sIFB5RXhjX0luZGV4RXJyb3IpOwogICAgICAgICBpZiAoaSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChpIDwgMCkKLSAgICAgICAgICAgIGkgKz0gUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOworICAgICAgICAgICAgaSArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKICAgICAgICAgcmV0dXJuIHVuaWNvZGVfZ2V0aXRlbShzZWxmLCBpKTsKICAgICB9IGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soaXRlbSkpIHsKICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgc3RvcCwgc3RlcCwgc2xpY2VsZW5ndGgsIGN1ciwgaTsKLSAgICAgICAgUHlfVU5JQ09ERSogc291cmNlX2J1ZjsKLSAgICAgICAgUHlfVU5JQ09ERSogcmVzdWx0X2J1ZjsKLSAgICAgICAgUHlPYmplY3QqIHJlc3VsdDsKKyAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICAgICAgdm9pZCAqc3JjX2RhdGEsICpkZXN0X2RhdGE7CisgICAgICAgIGludCBzcmNfa2luZCwgZGVzdF9raW5kOworICAgICAgICBQeV9VQ1M0IGNoLCBtYXhfY2hhciwga2luZF9saW1pdDsKIAotICAgICAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoaXRlbSwgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpLAorICAgICAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoaXRlbSwgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZzdG9wLCAmc3RlcCwgJnNsaWNlbGVuZ3RoKSA8IDApIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNsaWNlbGVuZ3RoIDw9IDApIHsKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgMCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RhcnQgPT0gMCAmJiBzdGVwID09IDEgJiYgc2xpY2VsZW5ndGggPT0gc2VsZi0+bGVuZ3RoICYmCi0gICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworICAgICAgICAgICAgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCk7CisgICAgICAgIH0gZWxzZSBpZiAoc3RhcnQgPT0gMCAmJiBzdGVwID09IDEgJiYKKyAgICAgICAgICAgICAgICAgICBzbGljZWxlbmd0aCA9PSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSkgeworICAgICAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGVwID09IDEpIHsKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoc2VsZi0+c3RyICsgc3RhcnQsIHNsaWNlbGVuZ3RoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNvdXJjZV9idWYgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgoUHlPYmplY3QqKXNlbGYpOwotICAgICAgICAgICAgcmVzdWx0X2J1ZiA9IChQeV9VTklDT0RFICopUHlPYmplY3RfTUFMTE9DKHNsaWNlbGVuZ3RoKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihQeV9VTklDT0RFKSk7Ci0KLSAgICAgICAgICAgIGlmIChyZXN1bHRfYnVmID09IE5VTEwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0KLSAgICAgICAgICAgIGZvciAoY3VyID0gc3RhcnQsIGkgPSAwOyBpIDwgc2xpY2VsZW5ndGg7IGN1ciArPSBzdGVwLCBpKyspIHsKLSAgICAgICAgICAgICAgICByZXN1bHRfYnVmW2ldID0gc291cmNlX2J1ZltjdXJdOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocmVzdWx0X2J1Ziwgc2xpY2VsZW5ndGgpOwotICAgICAgICAgICAgUHlPYmplY3RfRlJFRShyZXN1bHRfYnVmKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX1N1YnN0cmluZyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIHN0YXJ0ICsgc2xpY2VsZW5ndGgpOwogICAgICAgICB9CisgICAgICAgIC8qIEdlbmVyYWwgY2FzZSAqLworICAgICAgICBzcmNfa2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgICAgICBzcmNfZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgICAgICBpZiAoIVB5VW5pY29kZV9JU19BU0NJSShzZWxmKSkgeworICAgICAgICAgICAga2luZF9saW1pdCA9IGtpbmRfbWF4Y2hhcl9saW1pdChzcmNfa2luZCk7CisgICAgICAgICAgICBtYXhfY2hhciA9IDA7CisgICAgICAgICAgICBmb3IgKGN1ciA9IHN0YXJ0LCBpID0gMDsgaSA8IHNsaWNlbGVuZ3RoOyBjdXIgKz0gc3RlcCwgaSsrKSB7CisgICAgICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChzcmNfa2luZCwgc3JjX2RhdGEsIGN1cik7CisgICAgICAgICAgICAgICAgaWYgKGNoID4gbWF4X2NoYXIpIHsKKyAgICAgICAgICAgICAgICAgICAgbWF4X2NoYXIgPSBjaDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1heF9jaGFyID49IGtpbmRfbGltaXQpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWF4X2NoYXIgPSAxMjc7CisgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9OZXcoc2xpY2VsZW5ndGgsIG1heF9jaGFyKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGRlc3Rfa2luZCA9IFB5VW5pY29kZV9LSU5EKHJlc3VsdCk7CisgICAgICAgIGRlc3RfZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlc3VsdCk7CisKKyAgICAgICAgZm9yIChjdXIgPSBzdGFydCwgaSA9IDA7IGkgPCBzbGljZWxlbmd0aDsgY3VyICs9IHN0ZXAsIGkrKykgeworICAgICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKHNyY19raW5kLCBzcmNfZGF0YSwgY3VyKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShkZXN0X2tpbmQsIGRlc3RfZGF0YSwgaSwgY2gpOworICAgICAgICB9CisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzdWx0LCAxKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInN0cmluZyBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC05Mzc1LDE2ICsxMzE5NiwxNyBAQAogCiAvKiBSZXR1cm5zIGEgbmV3IHJlZmVyZW5jZSB0byBhIFB5VW5pY29kZSBvYmplY3QsIG9yIE5VTEwgb24gZmFpbHVyZS4gKi8KIAotc3RhdGljIFB5T2JqZWN0ICoKLWZvcm1hdGZsb2F0KFB5T2JqZWN0ICp2LCBpbnQgZmxhZ3MsIGludCBwcmVjLCBpbnQgdHlwZSkKK3N0YXRpYyBpbnQKK2Zvcm1hdGZsb2F0KFB5T2JqZWN0ICp2LCBpbnQgZmxhZ3MsIGludCBwcmVjLCBpbnQgdHlwZSwKKyAgICAgICAgICAgIFB5T2JqZWN0ICoqcF9vdXRwdXQsIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKIHsKICAgICBjaGFyICpwOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgZG91YmxlIHg7CisgICAgUHlfc3NpemVfdCBsZW47CiAKICAgICB4ID0gUHlGbG9hdF9Bc0RvdWJsZSh2KTsKICAgICBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAocHJlYyA8IDApCiAgICAgICAgIHByZWMgPSA2OwpAQCAtOTM5Miw1NCArMTMyMTQsMTcwIEBACiAgICAgcCA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyh4LCB0eXBlLCBwcmVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZsYWdzICYgRl9BTFQpID8gUHlfRFRTRl9BTFQgOiAwLCBOVUxMKTsKICAgICBpZiAocCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUocCwgc3RybGVuKHApKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGxlbiA9IHN0cmxlbihwKTsKKyAgICBpZiAod3JpdGVyKSB7CisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBsZW4sIDEyNykgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUocCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgdW5pY29kZV93cml0ZV9jc3RyKHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcywgcCwgbGVuKTsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gbGVuOworICAgIH0KKyAgICBlbHNlCisgICAgICAgICpwX291dHB1dCA9IF9QeVVuaWNvZGVfRnJvbUFTQ0lJKHAsIGxlbik7CiAgICAgUHlNZW1fRnJlZShwKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiAwOwogfQogCisvKiBmb3JtYXRsb25nKCkgZW11bGF0ZXMgdGhlIGZvcm1hdCBjb2RlcyBkLCB1LCBvLCB4IGFuZCBYLCBhbmQKKyAqIHRoZSBGX0FMVCBmbGFnLCBmb3IgUHl0aG9uJ3MgbG9uZyAodW5ib3VuZGVkKSBpbnRzLiAgSXQncyBub3QgdXNlZCBmb3IKKyAqIFB5dGhvbidzIHJlZ3VsYXIgaW50cy4KKyAqIFJldHVybiB2YWx1ZTogIGEgbmV3IFB5VW5pY29kZU9iamVjdCosIG9yIE5VTEwgaWYgZXJyb3IuCisgKiAgICAgVGhlIG91dHB1dCBzdHJpbmcgaXMgb2YgdGhlIGZvcm0KKyAqICAgICAgICAgIi0iPyAoIjB4IiB8ICIwWCIpPyBkaWdpdCsKKyAqICAgICAiMHgiLyIwWCIgYXJlIHByZXNlbnQgb25seSBmb3IgeCBhbmQgWCBjb252ZXJzaW9ucywgd2l0aCBGX0FMVAorICogICAgICAgICBzZXQgaW4gZmxhZ3MuICBUaGUgY2FzZSBvZiBoZXggZGlnaXRzIHdpbGwgYmUgY29ycmVjdCwKKyAqICAgICBUaGVyZSB3aWxsIGJlIGF0IGxlYXN0IHByZWMgZGlnaXRzLCB6ZXJvLWZpbGxlZCBvbiB0aGUgbGVmdCBpZgorICogICAgICAgICBuZWNlc3NhcnkgdG8gZ2V0IHRoYXQgbWFueS4KKyAqIHZhbCAgICAgICAgICBvYmplY3QgdG8gYmUgY29udmVydGVkCisgKiBmbGFncyAgICAgICAgYml0bWFzayBvZiBmb3JtYXQgZmxhZ3M7IG9ubHkgRl9BTFQgaXMgbG9va2VkIGF0CisgKiBwcmVjICAgICAgICAgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzOyAwLWZpbGwgb24gbGVmdCBpZiBuZWVkZWQKKyAqIHR5cGUgICAgICAgICBhIGNoYXJhY3RlciBpbiBbZHVveFhdOyB1IGFjdHMgdGhlIHNhbWUgYXMgZAorICoKKyAqIENBVVRJT046ICBvLCB4IGFuZCBYIGNvbnZlcnNpb25zIG9uIHJlZ3VsYXIgaW50cyBjYW4gbmV2ZXIKKyAqIHByb2R1Y2UgYSAnLScgc2lnbiwgYnV0IGNhbiBmb3IgUHl0aG9uJ3MgdW5ib3VuZGVkIGludHMuCisgKi8KIHN0YXRpYyBQeU9iamVjdCoKIGZvcm1hdGxvbmcoUHlPYmplY3QgKnZhbCwgaW50IGZsYWdzLCBpbnQgcHJlYywgaW50IHR5cGUpCiB7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgY2hhciAqYnVmOwotICAgIGludCBsZW47Ci0gICAgUHlPYmplY3QgKnN0cjsgLyogdGVtcG9yYXJ5IHN0cmluZyBvYmplY3QuICovCi0gICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgaW50IHNpZ247ICAgICAgICAgICAvKiAxIGlmICctJywgZWxzZSAwICovCisgICAgaW50IGxlbjsgICAgICAgICAgICAvKiBudW1iZXIgb2YgY2hhcmFjdGVycyAqLworICAgIFB5X3NzaXplX3QgbGxlbjsKKyAgICBpbnQgbnVtZGlnaXRzOyAgICAgIC8qIGxlbiA9PSBudW1ub25kaWdpdHMgKyBudW1kaWdpdHMgKi8KKyAgICBpbnQgbnVtbm9uZGlnaXRzID0gMDsKIAotICAgIHN0ciA9IF9QeUJ5dGVzX0Zvcm1hdExvbmcodmFsLCBmbGFncywgcHJlYywgdHlwZSwgJmJ1ZiwgJmxlbik7Ci0gICAgaWYgKCFzdHIpCisgICAgLyogQXZvaWQgZXhjZWVkaW5nIFNTSVpFX1RfTUFYICovCisgICAgaWYgKHByZWMgPiBJTlRfTUFYLTMpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAicHJlY2lzaW9uIHRvbyBsYXJnZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBsZW4pOwotICAgIFB5X0RFQ1JFRihzdHIpOworICAgIH0KKworICAgIGFzc2VydChQeUxvbmdfQ2hlY2sodmFsKSk7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlICdkJzoKKyAgICBjYXNlICd1JzoKKyAgICAgICAgLyogU3BlY2lhbC1jYXNlIGJvb2xlYW46IHdlIHdhbnQgMC8xICovCisgICAgICAgIGlmIChQeUJvb2xfQ2hlY2sodmFsKSkKKyAgICAgICAgICAgIHJlc3VsdCA9IFB5TnVtYmVyX1RvQmFzZSh2YWwsIDEwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gUHlfVFlQRSh2YWwpLT50cF9zdHIodmFsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnbyc6CisgICAgICAgIG51bW5vbmRpZ2l0cyA9IDI7CisgICAgICAgIHJlc3VsdCA9IFB5TnVtYmVyX1RvQmFzZSh2YWwsIDgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlICd4JzoKKyAgICBjYXNlICdYJzoKKyAgICAgICAgbnVtbm9uZGlnaXRzID0gMjsKKyAgICAgICAgcmVzdWx0ID0gUHlOdW1iZXJfVG9CYXNlKHZhbCwgMTYpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoISIndHlwZScgbm90IGluIFtkdW94WF0iKTsKKyAgICB9CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgYXNzZXJ0KHVuaWNvZGVfbW9kaWZpYWJsZShyZXN1bHQpKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHJlc3VsdCkpOworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfQVNDSUkocmVzdWx0KSk7CisKKyAgICAvKiBUbyBtb2RpZnkgdGhlIHN0cmluZyBpbi1wbGFjZSwgdGhlcmUgY2FuIG9ubHkgYmUgb25lIHJlZmVyZW5jZS4gKi8KKyAgICBpZiAoUHlfUkVGQ05UKHJlc3VsdCkgIT0gMSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGJ1ZiA9IFB5VW5pY29kZV9EQVRBKHJlc3VsdCk7CisgICAgbGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlc3VsdCk7CisgICAgaWYgKGxsZW4gPiBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyB0b28gbGFyZ2UgaW4gX1B5Qnl0ZXNfRm9ybWF0TG9uZyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbGVuID0gKGludClsbGVuOworICAgIHNpZ24gPSBidWZbMF0gPT0gJy0nOworICAgIG51bW5vbmRpZ2l0cyArPSBzaWduOworICAgIG51bWRpZ2l0cyA9IGxlbiAtIG51bW5vbmRpZ2l0czsKKyAgICBhc3NlcnQobnVtZGlnaXRzID4gMCk7CisKKyAgICAvKiBHZXQgcmlkIG9mIGJhc2UgbWFya2VyIHVubGVzcyBGX0FMVCAqLworICAgIGlmICgoKGZsYWdzICYgRl9BTFQpID09IDAgJiYKKyAgICAgICAgKHR5cGUgPT0gJ28nIHx8IHR5cGUgPT0gJ3gnIHx8IHR5cGUgPT0gJ1gnKSkpIHsKKyAgICAgICAgYXNzZXJ0KGJ1ZltzaWduXSA9PSAnMCcpOworICAgICAgICBhc3NlcnQoYnVmW3NpZ24rMV0gPT0gJ3gnIHx8IGJ1ZltzaWduKzFdID09ICdYJyB8fAorICAgICAgICAgICAgICAgYnVmW3NpZ24rMV0gPT0gJ28nKTsKKyAgICAgICAgbnVtbm9uZGlnaXRzIC09IDI7CisgICAgICAgIGJ1ZiArPSAyOworICAgICAgICBsZW4gLT0gMjsKKyAgICAgICAgaWYgKHNpZ24pCisgICAgICAgICAgICBidWZbMF0gPSAnLSc7CisgICAgICAgIGFzc2VydChsZW4gPT0gbnVtbm9uZGlnaXRzICsgbnVtZGlnaXRzKTsKKyAgICAgICAgYXNzZXJ0KG51bWRpZ2l0cyA+IDApOworICAgIH0KKworICAgIC8qIEZpbGwgd2l0aCBsZWFkaW5nIHplcm9lcyB0byBtZWV0IG1pbmltdW0gd2lkdGguICovCisgICAgaWYgKHByZWMgPiBudW1kaWdpdHMpIHsKKyAgICAgICAgUHlPYmplY3QgKnIxID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1ub25kaWdpdHMgKyBwcmVjKTsKKyAgICAgICAgY2hhciAqYjE7CisgICAgICAgIGlmICghcjEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgYjEgPSBQeUJ5dGVzX0FTX1NUUklORyhyMSk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1ub25kaWdpdHM7ICsraSkKKyAgICAgICAgICAgICpiMSsrID0gKmJ1ZisrOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcHJlYyAtIG51bWRpZ2l0czsgaSsrKQorICAgICAgICAgICAgKmIxKysgPSAnMCc7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1kaWdpdHM7IGkrKykKKyAgICAgICAgICAgICpiMSsrID0gKmJ1ZisrOworICAgICAgICAqYjEgPSAnXDAnOworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0ID0gcjE7CisgICAgICAgIGJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgICAgIGxlbiA9IG51bW5vbmRpZ2l0cyArIHByZWM7CisgICAgfQorCisgICAgLyogRml4IHVwIGNhc2UgZm9yIGhleCBjb252ZXJzaW9ucy4gKi8KKyAgICBpZiAodHlwZSA9PSAnWCcpIHsKKyAgICAgICAgLyogTmVlZCB0byBjb252ZXJ0IGFsbCBsb3dlciBjYXNlIGxldHRlcnMgdG8gdXBwZXIgY2FzZS4KKyAgICAgICAgICAgYW5kIG5lZWQgdG8gY29udmVydCAweCB0byAwWCAoYW5kIC0weCB0byAtMFgpLiAqLworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCisgICAgICAgICAgICBpZiAoYnVmW2ldID49ICdhJyAmJiBidWZbaV0gPD0gJ3gnKQorICAgICAgICAgICAgICAgIGJ1ZltpXSAtPSAnYSctJ0EnOworICAgIH0KKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhyZXN1bHQpIHx8IGxlbiAhPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXN1bHQpKSB7CisgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgICAgICB1bmljb2RlID0gX1B5VW5pY29kZV9Gcm9tQVNDSUkoYnVmLCBsZW4pOworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0ID0gdW5pY29kZTsKKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGludAotZm9ybWF0Y2hhcihQeV9VTklDT0RFICpidWYsCi0gICAgICAgICAgIHNpemVfdCBidWZsZW4sCi0gICAgICAgICAgIFB5T2JqZWN0ICp2KQorc3RhdGljIFB5X1VDUzQKK2Zvcm1hdGNoYXIoUHlPYmplY3QgKnYpCiB7CiAgICAgLyogcHJlc3VtZSB0aGF0IHRoZSBidWZmZXIgaXMgYXQgbGVhc3QgMyBjaGFyYWN0ZXJzIGxvbmcgKi8KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUodikgPT0gMSkgewotICAgICAgICAgICAgYnVmWzBdID0gUHlVbmljb2RlX0FTX1VOSUNPREUodilbMF07Ci0gICAgICAgICAgICBidWZbMV0gPSAnXDAnOwotICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KSA9PSAxKSB7CisgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX1JFQURfQ0hBUih2LCAwKTsKICAgICAgICAgfQotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRSh2KSA9PSAyKSB7Ci0gICAgICAgICAgICAvKiBEZWNvZGUgYSB2YWxpZCBzdXJyb2dhdGUgcGFpciAqLwotICAgICAgICAgICAgaW50IGMwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodilbMF07Ci0gICAgICAgICAgICBpbnQgYzEgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KVsxXTsKLSAgICAgICAgICAgIGlmICgweEQ4MDAgPD0gYzAgJiYgYzAgPD0gMHhEQkZGICYmCi0gICAgICAgICAgICAgICAgMHhEQzAwIDw9IGMxICYmIGMxIDw9IDB4REZGRikgewotICAgICAgICAgICAgICAgIGJ1ZlswXSA9IGMwOwotICAgICAgICAgICAgICAgIGJ1ZlsxXSA9IGMxOwotICAgICAgICAgICAgICAgIGJ1ZlsyXSA9ICdcMCc7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogICAgIGVsc2UgewpAQCAtOTQ0OSw0NSArMTMzODcsMzUgQEAKICAgICAgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKIAotICAgICAgICBpZiAoeCA8IDAgfHwgeCA+IDB4MTBmZmZmKSB7CisgICAgICAgIGlmICh4IDwgMCB8fCB4ID4gTUFYX1VOSUNPREUpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlYyBhcmcgbm90IGluIHJhbmdlKDB4MTEwMDAwKSIpOwotICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgcmV0dXJuIChQeV9VQ1M0KSAtMTsKICAgICAgICAgfQogCi0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICBpZiAoeCA+IDB4ZmZmZikgewotICAgICAgICAgICAgeCAtPSAweDEwMDAwOwotICAgICAgICAgICAgYnVmWzBdID0gKFB5X1VOSUNPREUpKDB4RDgwMCB8ICh4ID4+IDEwKSk7Ci0gICAgICAgICAgICBidWZbMV0gPSAoUHlfVU5JQ09ERSkoMHhEQzAwIHwgKHggJiAweDNGRikpOwotICAgICAgICAgICAgcmV0dXJuIDI7Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBidWZbMF0gPSAoUHlfVU5JQ09ERSkgeDsKLSAgICAgICAgYnVmWzFdID0gJ1wwJzsKLSAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIHJldHVybiAoUHlfVUNTNCkgeDsKICAgICB9CiAKICAgb25FcnJvcjoKICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAiJWMgcmVxdWlyZXMgaW50IG9yIGNoYXIiKTsKLSAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIChQeV9VQ1M0KSAtMTsKIH0KIAotLyogZm10JSh2MSx2MiwuLi4pIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byBzcHJpbnRmKGZtdCwgdjEsIHYyLCAuLi4pCi0gICBGT1JNQVRCVUZMRU4gaXMgdGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyIGluIHdoaWNoIGNoYXJzIGFyZSBmb3JtYXR0ZWQuCi0qLwotI2RlZmluZSBGT1JNQVRCVUZMRU4gKHNpemVfdCkxMAotCi1QeU9iamVjdCAqUHlVbmljb2RlX0Zvcm1hdChQeU9iamVjdCAqZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRm9ybWF0KFB5T2JqZWN0ICpmb3JtYXQsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X1VOSUNPREUgKmZtdCwgKnJlczsKLSAgICBQeV9zc2l6ZV90IGZtdGNudCwgcmVzY250LCByZXNsZW4sIGFyZ2xlbiwgYXJnaWR4OworICAgIFB5X3NzaXplX3QgZm10Y250LCBmbXRwb3MsIGFyZ2xlbiwgYXJnaWR4OwogICAgIGludCBhcmdzX293bmVkID0gMDsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmRpY3QgPSBOVUxMOworICAgIFB5T2JqZWN0ICp0ZW1wID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc2Vjb25kID0gTlVMTDsKICAgICBQeU9iamVjdCAqdWZvcm1hdDsKKyAgICB2b2lkICpmbXQ7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kLCBmbXRraW5kOworICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOworICAgIFB5X3NzaXplX3Qgc3VibGVuOworICAgIFB5X1VDUzQgbWF4Y2hhcjsKIAogICAgIGlmIChmb3JtYXQgPT0gTlVMTCB8fCBhcmdzID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CkBAIC05NDk2LDE0ICsxMzQyNCwxNyBAQAogICAgIHVmb3JtYXQgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChmb3JtYXQpOwogICAgIGlmICh1Zm9ybWF0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZtdCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHVmb3JtYXQpOwotICAgIGZtdGNudCA9IFB5VW5pY29kZV9HRVRfU0laRSh1Zm9ybWF0KTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVmb3JtYXQpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRih1Zm9ybWF0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgcmVzbGVuID0gcmVzY250ID0gZm10Y250ICsgMTAwOwotICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfTmV3KHJlc2xlbik7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgcmVzID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KTsKKyAgICBmbXQgPSBQeVVuaWNvZGVfREFUQSh1Zm9ybWF0KTsKKyAgICBmbXRraW5kID0gUHlVbmljb2RlX0tJTkQodWZvcm1hdCk7CisgICAgZm10Y250ID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodWZvcm1hdCk7CisgICAgZm10cG9zID0gMDsKKworICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyLCBmbXRjbnQgKyAxMDApOwogCiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soYXJncykpIHsKICAgICAgICAgYXJnbGVuID0gUHlUdXBsZV9TaXplKGFyZ3MpOwpAQCAtOTUxNywzNSArMTM0NDgsNDYgQEAKICAgICAgICAgZGljdCA9IGFyZ3M7CiAKICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgewotICAgICAgICBpZiAoKmZtdCAhPSAnJScpIHsKLSAgICAgICAgICAgIGlmICgtLXJlc2NudCA8IDApIHsKLSAgICAgICAgICAgICAgICByZXNjbnQgPSBmbXRjbnQgKyAxMDA7Ci0gICAgICAgICAgICAgICAgcmVzbGVuICs9IHJlc2NudDsKLSAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnJlc3VsdCwgcmVzbGVuKSA8IDApCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICByZXMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpICsgcmVzbGVuIC0gcmVzY250OwotICAgICAgICAgICAgICAgIC0tcmVzY250OworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MpICE9ICclJykgeworICAgICAgICAgICAgUHlfc3NpemVfdCBub25mbXRwb3M7CisgICAgICAgICAgICBub25mbXRwb3MgPSBmbXRwb3MrKzsKKyAgICAgICAgICAgIHdoaWxlIChmbXRjbnQgPj0gMCAmJgorICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKSAhPSAnJScpIHsKKyAgICAgICAgICAgICAgICBmbXRwb3MrKzsKKyAgICAgICAgICAgICAgICBmbXRjbnQtLTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpyZXMrKyA9ICpmbXQrKzsKKyAgICAgICAgICAgIGlmIChmbXRjbnQgPCAwKQorICAgICAgICAgICAgICAgIGZtdHBvcy0tOworICAgICAgICAgICAgc3VibGVuID0gZm10cG9zIC0gbm9uZm10cG9zOworICAgICAgICAgICAgbWF4Y2hhciA9IF9QeVVuaWNvZGVfRmluZE1heENoYXIodWZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmZtdHBvcywgbm9uZm10cG9zICsgc3VibGVuKTsKKyAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgc3VibGVuLCBtYXhjaGFyKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHdyaXRlci5idWZmZXIsIHdyaXRlci5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Zm9ybWF0LCBub25mbXRwb3MsIHN1Ymxlbik7CisgICAgICAgICAgICB3cml0ZXIucG9zICs9IHN1YmxlbjsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8qIEdvdCBhIGZvcm1hdCBzcGVjaWZpZXIgKi8KICAgICAgICAgICAgIGludCBmbGFncyA9IDA7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IHdpZHRoID0gLTE7CiAgICAgICAgICAgICBpbnQgcHJlYyA9IC0xOwotICAgICAgICAgICAgUHlfVU5JQ09ERSBjID0gJ1wwJzsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgZmlsbDsKKyAgICAgICAgICAgIFB5X1VDUzQgYyA9ICdcMCc7CisgICAgICAgICAgICBQeV9VQ1M0IGZpbGw7CisgICAgICAgICAgICBpbnQgc2lnbjsKKyAgICAgICAgICAgIFB5X1VDUzQgc2lnbmNoYXI7CiAgICAgICAgICAgICBpbnQgaXNudW1vazsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gTlVMTDsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gTlVMTDsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKnBidWY7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIHNpZ247Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgZm9ybWF0YnVmW0ZPUk1BVEJVRkxFTl07IC8qIEZvciBmb3JtYXRjaGFyKCkgKi8KKyAgICAgICAgICAgIHZvaWQgKnBidWYgPSBOVUxMOworICAgICAgICAgICAgUHlfc3NpemVfdCBwaW5kZXgsIGxlbjsKKyAgICAgICAgICAgIFB5X1VDUzQgYnVmbWF4Y2hhcjsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgYnVmbGVuOwogCi0gICAgICAgICAgICBmbXQrKzsKLSAgICAgICAgICAgIGlmICgqZm10ID09ICcoJykgewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKmtleXN0YXJ0OworICAgICAgICAgICAgZm10cG9zKys7CisgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MpOworICAgICAgICAgICAgaWYgKGMgPT0gJygnKSB7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBrZXlzdGFydDsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGtleWxlbjsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5OwogICAgICAgICAgICAgICAgIGludCBwY291bnQgPSAxOwpAQCAtOTU1NSwzNCArMTM0OTcsMjYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXQgcmVxdWlyZXMgYSBtYXBwaW5nIik7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKytmbXQ7CisgICAgICAgICAgICAgICAgKytmbXRwb3M7CiAgICAgICAgICAgICAgICAgLS1mbXRjbnQ7Ci0gICAgICAgICAgICAgICAga2V5c3RhcnQgPSBmbXQ7CisgICAgICAgICAgICAgICAga2V5c3RhcnQgPSBmbXRwb3M7CiAgICAgICAgICAgICAgICAgLyogU2tpcCBvdmVyIGJhbGFuY2VkIHBhcmVudGhlc2VzICovCiAgICAgICAgICAgICAgICAgd2hpbGUgKHBjb3VudCA+IDAgJiYgLS1mbXRjbnQgPj0gMCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKScpCisgICAgICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICcpJykKICAgICAgICAgICAgICAgICAgICAgICAgIC0tcGNvdW50OwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgqZm10ID09ICcoJykKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnKCcpCiAgICAgICAgICAgICAgICAgICAgICAgICArK3Bjb3VudDsKLSAgICAgICAgICAgICAgICAgICAgZm10Kys7CisgICAgICAgICAgICAgICAgICAgIGZtdHBvcysrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBrZXlsZW4gPSBmbXQgLSBrZXlzdGFydCAtIDE7CisgICAgICAgICAgICAgICAga2V5bGVuID0gZm10cG9zIC0ga2V5c3RhcnQgLSAxOwogICAgICAgICAgICAgICAgIGlmIChmbXRjbnQgPCAwIHx8IHBjb3VudCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5jb21wbGV0ZSBmb3JtYXQga2V5Iik7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0jaWYgMAotICAgICAgICAgICAgICAgIC8qIGtleXMgYXJlIGNvbnZlcnRlZCB0byBzdHJpbmdzIHVzaW5nIFVURi04IGFuZAotICAgICAgICAgICAgICAgICAgIHRoZW4gbG9va2VkIHVwIHNpbmNlIFB5dGhvbiB1c2VzIHN0cmluZ3MgdG8gaG9sZAotICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBuYW1lcyBldGMuIGluIGl0cyBuYW1lc3BhY2VzIGFuZCB3ZQotICAgICAgICAgICAgICAgICAgIHdvdWxkbid0IHdhbnQgdG8gYnJlYWsgY29tbW9uIGlkaW9tcy4gKi8KLSAgICAgICAgICAgICAgICBrZXkgPSBQeVVuaWNvZGVfRW5jb2RlVVRGOChrZXlzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0jZWxzZQotICAgICAgICAgICAgICAgIGtleSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShrZXlzdGFydCwga2V5bGVuKTsKLSNlbmRpZgorICAgICAgICAgICAgICAgIGtleSA9IFB5VW5pY29kZV9TdWJzdHJpbmcodWZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXN0YXJ0LCBrZXlzdGFydCArIGtleWxlbik7CiAgICAgICAgICAgICAgICAgaWYgKGtleSA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgaWYgKGFyZ3Nfb3duZWQpIHsKQEAgLTk1OTksNyArMTM1MzMsOCBAQAogICAgICAgICAgICAgICAgIGFyZ2lkeCA9IC0yOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKGMgPSAqZm10KyspIHsKKyAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MrKyk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChjKSB7CiAgICAgICAgICAgICAgICAgY2FzZSAnLSc6IGZsYWdzIHw9IEZfTEpVU1Q7IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGNhc2UgJysnOiBmbGFncyB8PSBGX1NJR047IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGNhc2UgJyAnOiBmbGFncyB8PSBGX0JMQU5LOyBjb250aW51ZTsKQEAgLTk2MjUsMTQgKzEzNTYwLDE3IEBACiAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gLXdpZHRoOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoLS1mbXRjbnQgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgYyA9ICpmbXQrKzsKKyAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKyspOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHsKICAgICAgICAgICAgICAgICB3aWR0aCA9IGMgLSAnMCc7CiAgICAgICAgICAgICAgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9ICpmbXQrKzsKKyAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKyspOwogICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICcwJyB8fCBjID4gJzknKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIC8qIFNpbmNlIGMgaXMgdW5zaWduZWQsIHRoZSBSSFMgd291bGQgZW5kIHVwIGFzIHVuc2lnbmVkLAorICAgICAgICAgICAgICAgICAgICAgICBtaXhpbmcgc2lnbmVkIGFuZCB1bnNpZ25lZCBjb21wYXJpc29uLiBTaW5jZSBjIGlzIGJldHdlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgJzAnIGFuZCAnOScsIGNhc3RpbmcgdG8gaW50IGlzIHNhZmUuICovCiAgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IChQWV9TU0laRV9UX01BWCAtICgoaW50KWMgLSAnMCcpKSAvIDEwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGggdG9vIGJpZyIpOwpAQCAtOTY0NCw3ICsxMzU4Miw3IEBACiAgICAgICAgICAgICBpZiAoYyA9PSAnLicpIHsKICAgICAgICAgICAgICAgICBwcmVjID0gMDsKICAgICAgICAgICAgICAgICBpZiAoLS1mbXRjbnQgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgYyA9ICpmbXQrKzsKKyAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKyspOwogICAgICAgICAgICAgICAgIGlmIChjID09ICcqJykgewogICAgICAgICAgICAgICAgICAgICB2ID0gZ2V0bmV4dGFyZyhhcmdzLCBhcmdsZW4sICZhcmdpZHgpOwogICAgICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQpAQCAtOTY2MCwxMiArMTM1OTgsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWMgPCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgcHJlYyA9IDA7CiAgICAgICAgICAgICAgICAgICAgIGlmICgtLWZtdGNudCA+PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICpmbXQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcysrKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHsKICAgICAgICAgICAgICAgICAgICAgcHJlYyA9IGMgLSAnMCc7CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgtLWZtdGNudCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gKmZtdCsrOworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKyspOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPCAnMCcgfHwgYyA+ICc5JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVjID4gKElOVF9NQVggLSAoKGludCljIC0gJzAnKSkgLyAxMCkgewpAQCAtOTY4MCw3ICsxMzYxOCw3IEBACiAgICAgICAgICAgICBpZiAoZm10Y250ID49IDApIHsKICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnaCcgfHwgYyA9PSAnbCcgfHwgYyA9PSAnTCcpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCi0gICAgICAgICAgICAgICAgICAgICAgICBjID0gKmZtdCsrOworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKyspOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmbXRjbnQgPCAwKSB7CkBAIC05Njg4LDI1ICsxMzYyNiwzNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5jb21wbGV0ZSBmb3JtYXQiKTsKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYyAhPSAnJScpIHsKLSAgICAgICAgICAgICAgICB2ID0gZ2V0bmV4dGFyZyhhcmdzLCBhcmdsZW4sICZhcmdpZHgpOwotICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgICAgICBpZiAoZm10Y250ID09IDApCisgICAgICAgICAgICAgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDA7CisKKyAgICAgICAgICAgIGlmIChjID09ICclJykgeworICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgMSwgJyUnKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsICclJyk7CisgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSAxOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2ID0gZ2V0bmV4dGFyZyhhcmdzLCBhcmdsZW4sICZhcmdpZHgpOworICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKICAgICAgICAgICAgIHNpZ24gPSAwOworICAgICAgICAgICAgc2lnbmNoYXIgPSAnXDAnOwogICAgICAgICAgICAgZmlsbCA9ICcgJzsKICAgICAgICAgICAgIHN3aXRjaCAoYykgewogCi0gICAgICAgICAgICBjYXNlICclJzoKLSAgICAgICAgICAgICAgICBwYnVmID0gZm9ybWF0YnVmOwotICAgICAgICAgICAgICAgIC8qIHByZXN1bWUgdGhhdCBidWZmZXIgbGVuZ3RoIGlzIGF0IGxlYXN0IDEgKi8KLSAgICAgICAgICAgICAgICBwYnVmWzBdID0gJyUnOwotICAgICAgICAgICAgICAgIGxlbiA9IDE7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgY2FzZSAncic6CiAgICAgICAgICAgICBjYXNlICdhJzoKKyAgICAgICAgICAgICAgICBpZiAoUHlMb25nX0NoZWNrRXhhY3QodikgJiYgd2lkdGggPT0gLTEgJiYgcHJlYyA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUxvbmdfRm9ybWF0V3JpdGVyKCZ3cml0ZXIsIHYsIDEwLCBmbGFncyAmIEZfQUxUKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0YXJnOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdCh2KSAmJiBjID09ICdzJykgewogICAgICAgICAgICAgICAgICAgICB0ZW1wID0gdjsKICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRlbXApOwpAQCAtOTcxOCwyMSArMTM2NjcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IFB5T2JqZWN0X1JlcHIodik7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSBQeU9iamVjdF9BU0NJSSh2KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh0ZW1wKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5vdGhpbmcgdG8gZG8gKi87Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRlbXApOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgYXJndW1lbnQgaGFzIG5vbi1zdHJpbmcgc3RyKCkiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwYnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUodGVtcCk7Ci0gICAgICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHRlbXApOwotICAgICAgICAgICAgICAgIGlmIChwcmVjID49IDAgJiYgbGVuID4gcHJlYykKLSAgICAgICAgICAgICAgICAgICAgbGVuID0gcHJlYzsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSAnaSc6CkBAIC05NzQxLDYgKzEzNjc2LDMyIEBACiAgICAgICAgICAgICBjYXNlICdvJzoKICAgICAgICAgICAgIGNhc2UgJ3gnOgogICAgICAgICAgICAgY2FzZSAnWCc6CisgICAgICAgICAgICAgICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KHYpCisgICAgICAgICAgICAgICAgICAgICYmIHdpZHRoID09IC0xICYmIHByZWMgPT0gLTEKKyAgICAgICAgICAgICAgICAgICAgJiYgIShmbGFncyAmIChGX1NJR04gfCBGX0JMQU5LKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGMpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2knOgorICAgICAgICAgICAgICAgICAgICBjYXNlICd1JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfUHlMb25nX0Zvcm1hdFdyaXRlcigmd3JpdGVyLCB2LCAxMCwgZmxhZ3MgJiBGX0FMVCkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0YXJnOworICAgICAgICAgICAgICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfUHlMb25nX0Zvcm1hdFdyaXRlcigmd3JpdGVyLCB2LCAxNiwgZmxhZ3MgJiBGX0FMVCkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0YXJnOworICAgICAgICAgICAgICAgICAgICBjYXNlICdvJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfUHlMb25nX0Zvcm1hdFdyaXRlcigmd3JpdGVyLCB2LCA4LCBmbGFncyAmIEZfQUxUKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlzbnVtb2sgPSAwOwogICAgICAgICAgICAgICAgIGlmIChQeU51bWJlcl9DaGVjayh2KSkgewogICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW9iaj1OVUxMOwpAQCAtOTc1NSwxMyArMTM3MTYsOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiAoaW9iaiE9TlVMTCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFB5TG9uZ19DaGVjayhpb2JqKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzbnVtb2sgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ24gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSBmb3JtYXRsb25nKGlvYmosIGZsYWdzLCBwcmVjLCAoYyA9PSAnaSc/ICdkJzogYykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpb2JqKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRlbXApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUodGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHRlbXApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ24gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGlvYmopOwpAQCAtOTc4NCwyMiArMTM3NDEsMzggQEAKICAgICAgICAgICAgIGNhc2UgJ0YnOgogICAgICAgICAgICAgY2FzZSAnZyc6CiAgICAgICAgICAgICBjYXNlICdHJzoKLSAgICAgICAgICAgICAgICB0ZW1wID0gZm9ybWF0ZmxvYXQodiwgZmxhZ3MsIHByZWMsIGMpOwotICAgICAgICAgICAgICAgIGlmICghdGVtcCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIHBidWYgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZW1wKTsKLSAgICAgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUodGVtcCk7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IC0xICYmIHByZWMgPT0gLTEKKyAgICAgICAgICAgICAgICAgICAgJiYgIShmbGFncyAmIChGX1NJR04gfCBGX0JMQU5LKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1hdGZsb2F0KHYsIGZsYWdzLCBwcmVjLCBjLCBOVUxMLCAmd3JpdGVyKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0YXJnOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIHNpZ24gPSAxOwogICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIEZfWkVSTykKICAgICAgICAgICAgICAgICAgICAgZmlsbCA9ICcwJzsKKyAgICAgICAgICAgICAgICBpZiAoZm9ybWF0ZmxvYXQodiwgZmxhZ3MsIHByZWMsIGMsICZ0ZW1wLCBOVUxMKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgdGVtcCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgJ2MnOgotICAgICAgICAgICAgICAgIHBidWYgPSBmb3JtYXRidWY7Ci0gICAgICAgICAgICAgICAgbGVuID0gZm9ybWF0Y2hhcihwYnVmLCBzaXplb2YoZm9ybWF0YnVmKS9zaXplb2YoUHlfVU5JQ09ERSksIHYpOwotICAgICAgICAgICAgICAgIGlmIChsZW4gPCAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBmb3JtYXRjaGFyKHYpOworICAgICAgICAgICAgICAgIGlmIChjaCA9PSAoUHlfVUNTNCkgLTEpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPT0gLTEgJiYgcHJlYyA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCAxLCBjaCkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsIGNoKTsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSAxOworICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRlbXAgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoY2gpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLApAQCAtOTgwNyw5MCArMTM3ODAsMTM5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdCBpbmRleCAlemQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMzE8PWMgJiYgYzw9MTI2KSA/IChjaGFyKWMgOiAnPycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpKGZtdCAtIDEgLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodWZvcm1hdCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10cG9zIC0gMSk7CiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRlbXAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBhc3NlcnQgKFB5VW5pY29kZV9DaGVjayh0ZW1wKSk7CisKKyAgICAgICAgICAgIGlmICh3aWR0aCA9PSAtMSAmJiBwcmVjID09IC0xCisgICAgICAgICAgICAgICAgJiYgIShmbGFncyAmIChGX1NJR04gfCBGX0JMQU5LKSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIoJndyaXRlciwgdGVtcCkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodGVtcCkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBQeV9DTEVBUih0ZW1wKTsKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodGVtcCk7CisgICAgICAgICAgICBwYnVmID0gUHlVbmljb2RlX0RBVEEodGVtcCk7CisgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0ZW1wKTsKKworICAgICAgICAgICAgaWYgKGMgPT0gJ3MnIHx8IGMgPT0gJ3InIHx8IGMgPT0gJ2EnKSB7CisgICAgICAgICAgICAgICAgaWYgKHByZWMgPj0gMCAmJiBsZW4gPiBwcmVjKQorICAgICAgICAgICAgICAgICAgICBsZW4gPSBwcmVjOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBwYnVmIGlzIGluaXRpYWxpemVkIGhlcmUuICovCisgICAgICAgICAgICBwaW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKHNpZ24pIHsKLSAgICAgICAgICAgICAgICBpZiAoKnBidWYgPT0gJy0nIHx8ICpwYnVmID09ICcrJykgewotICAgICAgICAgICAgICAgICAgICBzaWduID0gKnBidWYrKzsKKyAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgcGJ1ZiwgcGluZGV4KTsKKyAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJy0nIHx8IGNoID09ICcrJykgeworICAgICAgICAgICAgICAgICAgICBzaWduY2hhciA9IGNoOwogICAgICAgICAgICAgICAgICAgICBsZW4tLTsKKyAgICAgICAgICAgICAgICAgICAgcGluZGV4Kys7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgRl9TSUdOKQotICAgICAgICAgICAgICAgICAgICBzaWduID0gJysnOworICAgICAgICAgICAgICAgICAgICBzaWduY2hhciA9ICcrJzsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIEZfQkxBTkspCi0gICAgICAgICAgICAgICAgICAgIHNpZ24gPSAnICc7CisgICAgICAgICAgICAgICAgICAgIHNpZ25jaGFyID0gJyAnOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgc2lnbiA9IDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAod2lkdGggPCBsZW4pCiAgICAgICAgICAgICAgICAgd2lkdGggPSBsZW47Ci0gICAgICAgICAgICBpZiAocmVzY250IC0gKHNpZ24gIT0gMCkgPCB3aWR0aCkgewotICAgICAgICAgICAgICAgIHJlc2xlbiAtPSByZXNjbnQ7Ci0gICAgICAgICAgICAgICAgcmVzY250ID0gd2lkdGggKyBmbXRjbnQgKyAxMDA7Ci0gICAgICAgICAgICAgICAgcmVzbGVuICs9IHJlc2NudDsKLSAgICAgICAgICAgICAgICBpZiAocmVzbGVuIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOwotICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICAgICAgICAgIC8qIENvbXB1dGUgdGhlIGxlbmd0aCBhbmQgbWF4aW11bSBjaGFyYWN0ZXIgb2YgdGhlCisgICAgICAgICAgICAgICB3cml0dGVuIGNoYXJhY3RlcnMgKi8KKyAgICAgICAgICAgIGJ1Zm1heGNoYXIgPSAxMjc7CisgICAgICAgICAgICBpZiAoIShmbGFncyAmIEZfTEpVU1QpKSB7CisgICAgICAgICAgICAgICAgaWYgKHNpZ24pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCh3aWR0aC0xKSA+IGxlbikKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zm1heGNoYXIgPSBNQVhfTUFYQ0hBUihidWZtYXhjaGFyLCBmaWxsKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZyZXN1bHQsIHJlc2xlbikgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuKQorICAgICAgICAgICAgICAgICAgICAgICAgYnVmbWF4Y2hhciA9IE1BWF9NQVhDSEFSKGJ1Zm1heGNoYXIsIGZpbGwpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgICsgcmVzbGVuIC0gcmVzY250OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgbWF4Y2hhciA9IF9QeVVuaWNvZGVfRmluZE1heENoYXIodGVtcCwgMCwgcGluZGV4K2xlbik7CisgICAgICAgICAgICBidWZtYXhjaGFyID0gTUFYX01BWENIQVIoYnVmbWF4Y2hhciwgbWF4Y2hhcik7CisKKyAgICAgICAgICAgIGJ1ZmxlbiA9IHdpZHRoOworICAgICAgICAgICAgaWYgKHNpZ24gJiYgbGVuID09IHdpZHRoKQorICAgICAgICAgICAgICAgIGJ1ZmxlbisrOworCisgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIGJ1ZmxlbiwgYnVmbWF4Y2hhcikgPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworCisgICAgICAgICAgICAvKiBXcml0ZSBjaGFyYWN0ZXJzICovCiAgICAgICAgICAgICBpZiAoc2lnbikgewotICAgICAgICAgICAgICAgIGlmIChmaWxsICE9ICcgJykKLSAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gc2lnbjsKLSAgICAgICAgICAgICAgICByZXNjbnQtLTsKKyAgICAgICAgICAgICAgICBpZiAoZmlsbCAhPSAnICcpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcywgc2lnbmNoYXIpOworICAgICAgICAgICAgICAgICAgICB3cml0ZXIucG9zICs9IDE7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IGxlbikKICAgICAgICAgICAgICAgICAgICAgd2lkdGgtLTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBGX0FMVCkgJiYgKGMgPT0gJ3gnIHx8IGMgPT0gJ1gnIHx8IGMgPT0gJ28nKSkgewotICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzBdID09ICcwJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KHBidWZbMV0gPT0gYyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9SRUFEKGtpbmQsIHBidWYsIHBpbmRleCkgPT0gJzAnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX1JFQUQoa2luZCwgcGJ1ZiwgcGluZGV4ICsgMSkgPT0gYyk7CiAgICAgICAgICAgICAgICAgaWYgKGZpbGwgIT0gJyAnKSB7Ci0gICAgICAgICAgICAgICAgICAgICpyZXMrKyA9ICpwYnVmKys7Ci0gICAgICAgICAgICAgICAgICAgICpyZXMrKyA9ICpwYnVmKys7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsICcwJyk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MrMSwgYyk7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gMjsKKyAgICAgICAgICAgICAgICAgICAgcGluZGV4ICs9IDI7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlc2NudCAtPSAyOwogICAgICAgICAgICAgICAgIHdpZHRoIC09IDI7CiAgICAgICAgICAgICAgICAgaWYgKHdpZHRoIDwgMCkKICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAwOwogICAgICAgICAgICAgICAgIGxlbiAtPSAyOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuICYmICEoZmxhZ3MgJiBGX0xKVVNUKSkgewotICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgLS1yZXNjbnQ7Ci0gICAgICAgICAgICAgICAgICAgICpyZXMrKyA9IGZpbGw7Ci0gICAgICAgICAgICAgICAgfSB3aGlsZSAoLS13aWR0aCA+IGxlbik7CisgICAgICAgICAgICAgICAgc3VibGVuID0gd2lkdGggLSBsZW47CisgICAgICAgICAgICAgICAgRklMTCh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIGZpbGwsIHdyaXRlci5wb3MsIHN1Ymxlbik7CisgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSBzdWJsZW47CisgICAgICAgICAgICAgICAgd2lkdGggPSBsZW47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZmlsbCA9PSAnICcpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2lnbikKLSAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gc2lnbjsKKyAgICAgICAgICAgICAgICBpZiAoc2lnbikgeworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zLCBzaWduY2hhcik7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gMTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKChmbGFncyAmIEZfQUxUKSAmJiAoYyA9PSAneCcgfHwgYyA9PSAnWCcgfHwgYyA9PSAnbycpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzBdID09ICcwJyk7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzFdID09IGMpOwotICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOwotICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX1JFQUQoa2luZCwgcGJ1ZiwgcGluZGV4KSA9PSAnMCcpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX1JFQUQoa2luZCwgcGJ1ZiwgcGluZGV4KzEpID09IGMpOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zLCAnMCcpOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zKzEsIGMpOworICAgICAgICAgICAgICAgICAgICB3cml0ZXIucG9zICs9IDI7CisgICAgICAgICAgICAgICAgICAgIHBpbmRleCArPSAyOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShyZXMsIHBidWYsIGxlbik7Ci0gICAgICAgICAgICByZXMgKz0gbGVuOwotICAgICAgICAgICAgcmVzY250IC09IGxlbjsKLSAgICAgICAgICAgIHdoaWxlICgtLXdpZHRoID49IGxlbikgewotICAgICAgICAgICAgICAgIC0tcmVzY250OwotICAgICAgICAgICAgICAgICpyZXMrKyA9ICcgJzsKKworICAgICAgICAgICAgaWYgKGxlbikgeworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHdyaXRlci5idWZmZXIsIHdyaXRlci5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCwgcGluZGV4LCBsZW4pOworICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gbGVuOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuKSB7CisgICAgICAgICAgICAgICAgc3VibGVuID0gd2lkdGggLSBsZW47CisgICAgICAgICAgICAgICAgRklMTCh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsICcgJywgd3JpdGVyLnBvcywgc3VibGVuKTsKKyAgICAgICAgICAgICAgICB3cml0ZXIucG9zICs9IHN1YmxlbjsKKyAgICAgICAgICAgIH0KKworbmV4dGFyZzoKICAgICAgICAgICAgIGlmIChkaWN0ICYmIChhcmdpZHggPCBhcmdsZW4pICYmIGMgIT0gJyUnKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgc3RyaW5nIGZvcm1hdHRpbmciKTsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOwogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7CisgICAgICAgICAgICBQeV9DTEVBUih0ZW1wKTsKICAgICAgICAgfSAvKiAnJScgKi8KICAgICB9IC8qIHVudGlsIGVuZCAqLwogICAgIGlmIChhcmdpZHggPCBhcmdsZW4gJiYgIWRpY3QpIHsKQEAgLTk4OTksMTcgKzEzOTIxLDE5IEBACiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKLSAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnJlc3VsdCwgcmVzbGVuIC0gcmVzY250KSA8IDApCi0gICAgICAgIGdvdG8gb25FcnJvcjsKICAgICBpZiAoYXJnc19vd25lZCkgewogICAgICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgfQogICAgIFB5X0RFQ1JFRih1Zm9ybWF0KTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVzdWx0OworICAgIFB5X1hERUNSRUYodGVtcCk7CisgICAgUHlfWERFQ1JFRihzZWNvbmQpOworICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIAogICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYocmVzdWx0KTsKICAgICBQeV9ERUNSRUYodWZvcm1hdCk7CisgICAgUHlfWERFQ1JFRih0ZW1wKTsKKyAgICBQeV9YREVDUkVGKHNlY29uZCk7CisgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIGlmIChhcmdzX293bmVkKSB7CiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICB9CkBAIC05OTMzLDcgKzEzOTU3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZ4LCAmZW5jb2RpbmcsICZlcnJvcnMpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoeCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopX1B5VW5pY29kZV9OZXcoMCk7CisgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOwogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMICYmIGVycm9ycyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlPYmplY3RfU3RyKHgpOwogICAgIGVsc2UKQEAgLTk5NDMsMzEgKzEzOTY3LDEwMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfc3VidHlwZV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp0bXAsICpwbmV3OwotICAgIFB5X3NzaXplX3QgbjsKKyAgICBQeU9iamVjdCAqdW5pY29kZSwgKnNlbGY7CisgICAgUHlfc3NpemVfdCBsZW5ndGgsIGNoYXJfc2l6ZTsKKyAgICBpbnQgc2hhcmVfd3N0ciwgc2hhcmVfdXRmODsKKyAgICB1bnNpZ25lZCBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogCiAgICAgYXNzZXJ0KFB5VHlwZV9Jc1N1YnR5cGUodHlwZSwgJlB5VW5pY29kZV9UeXBlKSk7Ci0gICAgdG1wID0gKFB5VW5pY29kZU9iamVjdCAqKXVuaWNvZGVfbmV3KCZQeVVuaWNvZGVfVHlwZSwgYXJncywga3dkcyk7Ci0gICAgaWYgKHRtcCA9PSBOVUxMKQorCisgICAgdW5pY29kZSA9IHVuaWNvZGVfbmV3KCZQeVVuaWNvZGVfVHlwZSwgYXJncywga3dkcyk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayh0bXApKTsKLSAgICBwbmV3ID0gKFB5VW5pY29kZU9iamVjdCAqKSB0eXBlLT50cF9hbGxvYyh0eXBlLCBuID0gdG1wLT5sZW5ndGgpOwotICAgIGlmIChwbmV3ID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sodW5pY29kZSkpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcG5ldy0+c3RyID0gKFB5X1VOSUNPREUqKSBQeU9iamVjdF9NQUxMT0Moc2l6ZW9mKFB5X1VOSUNPREUpICogKG4rMSkpOwotICAgIGlmIChwbmV3LT5zdHIgPT0gTlVMTCkgewotICAgICAgICBfUHlfRm9yZ2V0UmVmZXJlbmNlKChQeU9iamVjdCAqKXBuZXcpOwotICAgICAgICBQeU9iamVjdF9EZWwocG5ldyk7Ci0gICAgICAgIFB5X0RFQ1JFRih0bXApOwotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKworICAgIHNlbGYgPSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAoc2VsZiA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X1VOSUNPREVfQ09QWShwbmV3LT5zdHIsIHRtcC0+c3RyLCBuKzEpOwotICAgIHBuZXctPmxlbmd0aCA9IG47Ci0gICAgcG5ldy0+aGFzaCA9IHRtcC0+aGFzaDsKLSAgICBQeV9ERUNSRUYodG1wKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopcG5ldzsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisKKyAgICBfUHlVbmljb2RlX0xFTkdUSChzZWxmKSA9IGxlbmd0aDsKKyNpZmRlZiBQeV9ERUJVRworICAgIF9QeVVuaWNvZGVfSEFTSChzZWxmKSA9IC0xOworI2Vsc2UKKyAgICBfUHlVbmljb2RlX0hBU0goc2VsZikgPSBfUHlVbmljb2RlX0hBU0godW5pY29kZSk7CisjZW5kaWYKKyAgICBfUHlVbmljb2RlX1NUQVRFKHNlbGYpLmludGVybmVkID0gMDsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHNlbGYpLmtpbmQgPSBraW5kOworICAgIF9QeVVuaWNvZGVfU1RBVEUoc2VsZikuY29tcGFjdCA9IDA7CisgICAgX1B5VW5pY29kZV9TVEFURShzZWxmKS5hc2NpaSA9IF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuYXNjaWk7CisgICAgX1B5VW5pY29kZV9TVEFURShzZWxmKS5yZWFkeSA9IDE7CisgICAgX1B5VW5pY29kZV9XU1RSKHNlbGYpID0gTlVMTDsKKyAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHNlbGYpID0gMDsKKyAgICBfUHlVbmljb2RlX1VURjgoc2VsZikgPSBOVUxMOworICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgoc2VsZikgPSAwOworICAgIF9QeVVuaWNvZGVfREFUQV9BTlkoc2VsZikgPSBOVUxMOworCisgICAgc2hhcmVfdXRmOCA9IDA7CisgICAgc2hhcmVfd3N0ciA9IDA7CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgY2hhcl9zaXplID0gMTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKSA8IDEyOCkKKyAgICAgICAgICAgIHNoYXJlX3V0ZjggPSAxOworICAgIH0KKyAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgIGNoYXJfc2l6ZSA9IDI7CisgICAgICAgIGlmIChzaXplb2Yod2NoYXJfdCkgPT0gMikKKyAgICAgICAgICAgIHNoYXJlX3dzdHIgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICBjaGFyX3NpemUgPSA0OworICAgICAgICBpZiAoc2l6ZW9mKHdjaGFyX3QpID09IDQpCisgICAgICAgICAgICBzaGFyZV93c3RyID0gMTsKKyAgICB9CisKKyAgICAvKiBFbnN1cmUgd2Ugd29uJ3Qgb3ZlcmZsb3cgdGhlIGxlbmd0aC4gKi8KKyAgICBpZiAobGVuZ3RoID4gKFBZX1NTSVpFX1RfTUFYIC8gY2hhcl9zaXplIC0gMSkpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIH0KKyAgICBkYXRhID0gUHlPYmplY3RfTUFMTE9DKChsZW5ndGggKyAxKSAqIGNoYXJfc2l6ZSk7CisgICAgaWYgKGRhdGEgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgfQorCisgICAgX1B5VW5pY29kZV9EQVRBX0FOWShzZWxmKSA9IGRhdGE7CisgICAgaWYgKHNoYXJlX3V0ZjgpIHsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSChzZWxmKSA9IGxlbmd0aDsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4KHNlbGYpID0gZGF0YTsKKyAgICB9CisgICAgaWYgKHNoYXJlX3dzdHIpIHsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSChzZWxmKSA9IGxlbmd0aDsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSKHNlbGYpID0gKHdjaGFyX3QgKilkYXRhOworICAgIH0KKworICAgIFB5X01FTUNQWShkYXRhLCBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKKyAgICAgICAgICAgICAga2luZCAqIChsZW5ndGggKyAxKSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShzZWxmLCAxKSk7CisjaWZkZWYgUHlfREVCVUcKKyAgICBfUHlVbmljb2RlX0hBU0goc2VsZikgPSBfUHlVbmljb2RlX0hBU0godW5pY29kZSk7CisjZW5kaWYKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHNlbGY7CisKK29uRXJyb3I6CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogUHlEb2NfU1RSVkFSKHVuaWNvZGVfZG9jLApAQCAtMTAwMzAsMTAgKzE0MTI0LDEwIEBACiAKIC8qIEluaXRpYWxpemUgdGhlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gKi8KIAotdm9pZCBfUHlVbmljb2RlX0luaXQodm9pZCkKK2ludCBfUHlVbmljb2RlX0luaXQodm9pZCkKIHsKICAgICAvKiBYWFggLSBtb3ZlIHRoaXMgYXJyYXkgdG8gdW5pY29kZWN0eXBlLmMgPyAqLwotICAgIFB5X1VOSUNPREUgbGluZWJyZWFrW10gPSB7CisgICAgUHlfVUNTMiBsaW5lYnJlYWtbXSA9IHsKICAgICAgICAgMHgwMDBBLCAvKiBMSU5FIEZFRUQgKi8KICAgICAgICAgMHgwMDBELCAvKiBDQVJSSUFHRSBSRVRVUk4gKi8KICAgICAgICAgMHgwMDFDLCAvKiBGSUxFIFNFUEFSQVRPUiAqLwpAQCAtMTAwNDUsMTkgKzE0MTM5LDE4IEBACiAgICAgfTsKIAogICAgIC8qIEluaXQgdGhlIGltcGxlbWVudGF0aW9uICovCi0gICAgaWYgKCF1bmljb2RlX2VtcHR5KSB7Ci0gICAgICAgIHVuaWNvZGVfZW1wdHkgPSBfUHlVbmljb2RlX05ldygwKTsKLSAgICAgICAgaWYgKCF1bmljb2RlX2VtcHR5KQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBfUHlfSU5DUkVGX1VOSUNPREVfRU1QVFkoKTsKKyAgICBpZiAoIXVuaWNvZGVfZW1wdHkpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGNyZWF0ZSBlbXB0eSBzdHJpbmciKTsKKyAgICBQeV9ERUNSRUYodW5pY29kZV9lbXB0eSk7CiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVVuaWNvZGVfVHlwZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplICd1bmljb2RlJyIpOwogCiAgICAgLyogaW5pdGlhbGl6ZSB0aGUgbGluZWJyZWFrIGJsb29tIGZpbHRlciAqLwogICAgIGJsb29tX2xpbmVicmVhayA9IG1ha2VfYmxvb21fbWFzaygKLSAgICAgICAgbGluZWJyZWFrLCBzaXplb2YobGluZWJyZWFrKSAvIHNpemVvZihsaW5lYnJlYWtbMF0pCi0gICAgICAgICk7CisgICAgICAgIFB5VW5pY29kZV8yQllURV9LSU5ELCBsaW5lYnJlYWssCisgICAgICAgIFB5X0FSUkFZX0xFTkdUSChsaW5lYnJlYWspKTsKIAogICAgIFB5VHlwZV9SZWFkeSgmRW5jb2RpbmdNYXBUeXBlKTsKIApAQCAtMTAwNjYsNiArMTQxNTksMTUgQEAKIAogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5Rm9ybWF0dGVySXRlcl9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgZm9ybWF0dGVyIGl0ZXIgdHlwZSIpOworCisjaWZkZWYgSEFWRV9NQkNTCisgICAgd2ludmVyLmR3T1NWZXJzaW9uSW5mb1NpemUgPSBzaXplb2Yod2ludmVyKTsKKyAgICBpZiAoIUdldFZlcnNpb25FeCgoT1NWRVJTSU9OSU5GTyopJndpbnZlcikpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gMDsKIH0KIAogLyogRmluYWxpemUgdGhlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gKi8KQEAgLTEwMDczLDIxICsxNDE3NSw3IEBACiBpbnQKIFB5VW5pY29kZV9DbGVhckZyZWVMaXN0KHZvaWQpCiB7Ci0gICAgaW50IGZyZWVsaXN0X3NpemUgPSBudW1mcmVlOwotICAgIFB5VW5pY29kZU9iamVjdCAqdTsKLQotICAgIGZvciAodSA9IGZyZWVfbGlzdDsgdSAhPSBOVUxMOykgewotICAgICAgICBQeVVuaWNvZGVPYmplY3QgKnYgPSB1OwotICAgICAgICB1ID0gKihQeVVuaWNvZGVPYmplY3QgKiopdTsKLSAgICAgICAgaWYgKHYtPnN0cikKLSAgICAgICAgICAgIFB5T2JqZWN0X0RFTCh2LT5zdHIpOwotICAgICAgICBQeV9YREVDUkVGKHYtPmRlZmVuYyk7Ci0gICAgICAgIFB5T2JqZWN0X0RlbCh2KTsKLSAgICAgICAgbnVtZnJlZS0tOwotICAgIH0KLSAgICBmcmVlX2xpc3QgPSBOVUxMOwotICAgIGFzc2VydChudW1mcmVlID09IDApOwotICAgIHJldHVybiBmcmVlbGlzdF9zaXplOworICAgIHJldHVybiAwOwogfQogCiB2b2lkCkBAIC0xMDA5OSwxOCArMTQxODcsMjIgQEAKIAogICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKICAgICAgICAgUHlfQ0xFQVIodW5pY29kZV9sYXRpbjFbaV0pOwotCisgICAgX1B5VW5pY29kZV9DbGVhclN0YXRpY1N0cmluZ3MoKTsKICAgICAodm9pZClQeVVuaWNvZGVfQ2xlYXJGcmVlTGlzdCgpOwogfQogCiB2b2lkCiBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZShQeU9iamVjdCAqKnApCiB7Ci0gICAgcmVnaXN0ZXIgUHlVbmljb2RlT2JqZWN0ICpzID0gKFB5VW5pY29kZU9iamVjdCAqKSgqcCk7CisgICAgcmVnaXN0ZXIgUHlPYmplY3QgKnMgPSAqcDsKICAgICBQeU9iamVjdCAqdDsKKyNpZmRlZiBQeV9ERUJVRworICAgIGFzc2VydChzICE9IE5VTEwpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NIRUNLKHMpKTsKKyNlbHNlCiAgICAgaWYgKHMgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHMpKQotICAgICAgICBQeV9GYXRhbEVycm9yKAotICAgICAgICAgICAgIlB5VW5pY29kZV9JbnRlcm5JblBsYWNlOiB1bmljb2RlIHN0cmluZ3Mgb25seSBwbGVhc2UhIik7CisgICAgICAgIHJldHVybjsKKyNlbmRpZgogICAgIC8qIElmIGl0J3MgYSBzdWJjbGFzcywgd2UgZG9uJ3QgcmVhbGx5IGtub3cgd2hhdCBwdXR0aW5nCiAgICAgICAgaXQgaW4gdGhlIGludGVybmVkIGRpY3QgbWlnaHQgZG8uICovCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChzKSkKQEAgLTEwMTI4LDcgKzE0MjIwLDcgQEAKICAgICAgICB0aG91Z2ggdGhlIGtleSBpcyBwcmVzZW50IGluIHRoZSBkaWN0aW9uYXJ5LAogICAgICAgIG5hbWVseSB3aGVuIHRoaXMgaGFwcGVucyBkdXJpbmcgYSBzdGFjayBvdmVyZmxvdy4gKi8KICAgICBQeV9BTExPV19SRUNVUlNJT04KLSAgICAgICAgdCA9IFB5RGljdF9HZXRJdGVtKGludGVybmVkLCAoUHlPYmplY3QgKilzKTsKKyAgICB0ID0gUHlEaWN0X0dldEl0ZW0oaW50ZXJuZWQsIHMpOwogICAgIFB5X0VORF9BTExPV19SRUNVUlNJT04KIAogICAgICAgICBpZiAodCkgewpAQCAtMTAxMzksNyArMTQyMzEsNyBAQAogICAgICAgICB9CiAKICAgICBQeVRocmVhZFN0YXRlX0dFVCgpLT5yZWN1cnNpb25fY3JpdGljYWwgPSAxOwotICAgIGlmIChQeURpY3RfU2V0SXRlbShpbnRlcm5lZCwgKFB5T2JqZWN0ICopcywgKFB5T2JqZWN0ICopcykgPCAwKSB7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtKGludGVybmVkLCBzLCBzKSA8IDApIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgUHlUaHJlYWRTdGF0ZV9HRVQoKS0+cmVjdXJzaW9uX2NyaXRpY2FsID0gMDsKICAgICAgICAgcmV0dXJuOwpAQCAtMTAxNDgsNyArMTQyNDAsNyBAQAogICAgIC8qIFRoZSB0d28gcmVmZXJlbmNlcyBpbiBpbnRlcm5lZCBhcmUgbm90IGNvdW50ZWQgYnkgcmVmY250LgogICAgICAgIFRoZSBkZWFsbG9jYXRvciB3aWxsIHRha2UgY2FyZSBvZiB0aGlzICovCiAgICAgUHlfUkVGQ05UKHMpIC09IDI7Ci0gICAgUHlVbmljb2RlX0NIRUNLX0lOVEVSTkVEKHMpID0gU1NUQVRFX0lOVEVSTkVEX01PUlRBTDsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHMpLmludGVybmVkID0gU1NUQVRFX0lOVEVSTkVEX01PUlRBTDsKIH0KIAogdm9pZApAQCAtMTAxNTYsNyArMTQyNDgsNyBAQAogewogICAgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlKHApOwogICAgIGlmIChQeVVuaWNvZGVfQ0hFQ0tfSU5URVJORUQoKnApICE9IFNTVEFURV9JTlRFUk5FRF9JTU1PUlRBTCkgewotICAgICAgICBQeVVuaWNvZGVfQ0hFQ0tfSU5URVJORUQoKnApID0gU1NUQVRFX0lOVEVSTkVEX0lNTU9SVEFMOworICAgICAgICBfUHlVbmljb2RlX1NUQVRFKCpwKS5pbnRlcm5lZCA9IFNTVEFURV9JTlRFUk5FRF9JTU1PUlRBTDsKICAgICAgICAgUHlfSU5DUkVGKCpwKTsKICAgICB9CiB9CkBAIC0xMDE3MSwxMCArMTQyNjMsMTEgQEAKICAgICByZXR1cm4gczsKIH0KIAotdm9pZCBfUHlfUmVsZWFzZUludGVybmVkVW5pY29kZVN0cmluZ3Modm9pZCkKK3ZvaWQKK19QeV9SZWxlYXNlSW50ZXJuZWRVbmljb2RlU3RyaW5ncyh2b2lkKQogewogICAgIFB5T2JqZWN0ICprZXlzOwotICAgIFB5VW5pY29kZU9iamVjdCAqczsKKyAgICBQeU9iamVjdCAqczsKICAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgUHlfc3NpemVfdCBpbW1vcnRhbF9zaXplID0gMCwgbW9ydGFsX3NpemUgPSAwOwogCkBAIC0xMDE5NSwyMyArMTQyODgsMjcgQEAKICAgICBmcHJpbnRmKHN0ZGVyciwgInJlbGVhc2luZyAlIiBQWV9GT1JNQVRfU0laRV9UICJkIGludGVybmVkIHN0cmluZ3NcbiIsCiAgICAgICAgICAgICBuKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgIHMgPSAoUHlVbmljb2RlT2JqZWN0ICopIFB5TGlzdF9HRVRfSVRFTShrZXlzLCBpKTsKLSAgICAgICAgc3dpdGNoIChzLT5zdGF0ZSkgeworICAgICAgICBzID0gUHlMaXN0X0dFVF9JVEVNKGtleXMsIGkpOworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHMpID09IC0xKSB7CisgICAgICAgICAgICBhc3NlcnQoMCAmJiAiY291bGQgbm90IHJlYWR5IHN0cmluZyIpOworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJjb3VsZCBub3QgcmVhZHkgc3RyaW5nXG4iKTsKKyAgICAgICAgfQorICAgICAgICBzd2l0Y2ggKFB5VW5pY29kZV9DSEVDS19JTlRFUk5FRChzKSkgewogICAgICAgICBjYXNlIFNTVEFURV9OT1RfSU5URVJORUQ6CiAgICAgICAgICAgICAvKiBYWFggU2hvdWxkbid0IGhhcHBlbiAqLwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU1NUQVRFX0lOVEVSTkVEX0lNTU9SVEFMOgogICAgICAgICAgICAgUHlfUkVGQ05UKHMpICs9IDE7Ci0gICAgICAgICAgICBpbW1vcnRhbF9zaXplICs9IHMtPmxlbmd0aDsKKyAgICAgICAgICAgIGltbW9ydGFsX3NpemUgKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgocyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTU1RBVEVfSU5URVJORURfTU9SVEFMOgogICAgICAgICAgICAgUHlfUkVGQ05UKHMpICs9IDI7Ci0gICAgICAgICAgICBtb3J0YWxfc2l6ZSArPSBzLT5sZW5ndGg7CisgICAgICAgICAgICBtb3J0YWxfc2l6ZSArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiSW5jb25zaXN0ZW50IGludGVybmVkIHN0cmluZyBzdGF0ZS4iKTsKICAgICAgICAgfQotICAgICAgICBzLT5zdGF0ZSA9IFNTVEFURV9OT1RfSU5URVJORUQ7CisgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUocykuaW50ZXJuZWQgPSBTU1RBVEVfTk9UX0lOVEVSTkVEOwogICAgIH0KICAgICBmcHJpbnRmKHN0ZGVyciwgInRvdGFsIHNpemUgb2YgYWxsIGludGVybmVkIHN0cmluZ3M6ICIKICAgICAgICAgICAgICIlIiBQWV9GT1JNQVRfU0laRV9UICJkLyUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgIgpAQCAtMTAyMjcsNyArMTQzMjQsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeV9zc2l6ZV90IGl0X2luZGV4OwotICAgIFB5VW5pY29kZU9iamVjdCAqaXRfc2VxOyAvKiBTZXQgdG8gTlVMTCB3aGVuIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLworICAgIFB5T2JqZWN0ICppdF9zZXE7ICAgIC8qIFNldCB0byBOVUxMIHdoZW4gaXRlcmF0b3IgaXMgZXhoYXVzdGVkICovCiB9IHVuaWNvZGVpdGVyb2JqZWN0OwogCiBzdGF0aWMgdm9pZApAQCAtMTAyNDgsMTggKzE0MzQ1LDE5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZWl0ZXJfbmV4dCh1bmljb2RlaXRlcm9iamVjdCAqaXQpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpzZXE7Ci0gICAgUHlPYmplY3QgKml0ZW07CisgICAgUHlPYmplY3QgKnNlcSwgKml0ZW07CiAKICAgICBhc3NlcnQoaXQgIT0gTlVMTCk7CiAgICAgc2VxID0gaXQtPml0X3NlcTsKICAgICBpZiAoc2VxID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soc2VxKSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0soc2VxKSk7CiAKLSAgICBpZiAoaXQtPml0X2luZGV4IDwgUHlVbmljb2RlX0dFVF9TSVpFKHNlcSkpIHsKLSAgICAgICAgaXRlbSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHNlcSkraXQtPml0X2luZGV4LCAxKTsKKyAgICBpZiAoaXQtPml0X2luZGV4IDwgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VxKSkgeworICAgICAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlcSk7CisgICAgICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQShzZXEpOworICAgICAgICBQeV9VQ1M0IGNociA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGl0LT5pdF9pbmRleCk7CisgICAgICAgIGl0ZW0gPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoY2hyKTsKICAgICAgICAgaWYgKGl0ZW0gIT0gTlVMTCkKICAgICAgICAgICAgICsraXQtPml0X2luZGV4OwogICAgICAgICByZXR1cm4gaXRlbTsKQEAgLTEwMjc1LDE1ICsxNDM3Myw0OSBAQAogewogICAgIFB5X3NzaXplX3QgbGVuID0gMDsKICAgICBpZiAoaXQtPml0X3NlcSkKLSAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKGl0LT5pdF9zZXEpIC0gaXQtPml0X2luZGV4OworICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpdC0+aXRfc2VxKSAtIGl0LT5pdF9pbmRleDsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGxlbik7CiB9CiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVpdGVyX3JlZHVjZSh1bmljb2RlaXRlcm9iamVjdCAqaXQpCit7CisgICAgaWYgKGl0LT5pdF9zZXEgIT0gTlVMTCkgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKW4iLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+aXRfc2VxLCBpdC0+aXRfaW5kZXgpOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICp1ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIDApOworICAgICAgICBpZiAodSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE4pIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwgdSk7CisgICAgfQorfQorCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlaXRlcl9zZXRzdGF0ZSh1bmljb2RlaXRlcm9iamVjdCAqaXQsIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChzdGF0ZSk7CisgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpbmRleCA8IDApCisgICAgICAgIGluZGV4ID0gMDsKKyAgICBpdC0+aXRfaW5kZXggPSBpbmRleDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHNldHN0YXRlX2RvYywgIlNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4iKTsKKwogc3RhdGljIFB5TWV0aG9kRGVmIHVuaWNvZGVpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbil1bmljb2RlaXRlcl9sZW4sIE1FVEhfTk9BUkdTLAogICAgICBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVpdGVyX3NldHN0YXRlLCBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCiAgICAge05VTEwsICAgICAgTlVMTH0gICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTEwMzI5LDE2ICsxNDQ2MSwxOSBAQAogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VxKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaXQgPSBQeU9iamVjdF9HQ19OZXcodW5pY29kZWl0ZXJvYmplY3QsICZQeVVuaWNvZGVJdGVyX1R5cGUpOwogICAgIGlmIChpdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpdC0+aXRfaW5kZXggPSAwOwogICAgIFB5X0lOQ1JFRihzZXEpOwotICAgIGl0LT5pdF9zZXEgPSAoUHlVbmljb2RlT2JqZWN0ICopc2VxOworICAgIGl0LT5pdF9zZXEgPSBzZXE7CiAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKGl0KTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopaXQ7CiB9CiAKKwogc2l6ZV90CiBQeV9VTklDT0RFX3N0cmxlbihjb25zdCBQeV9VTklDT0RFICp1KQogewpAQCAtMTA0MzAsMjUgKzE0NTY1LDMxIEBACiB9CiAKIFB5X1VOSUNPREUqCi1QeVVuaWNvZGVfQXNVbmljb2RlQ29weShQeU9iamVjdCAqb2JqZWN0KQorUHlVbmljb2RlX0FzVW5pY29kZUNvcHkoUHlPYmplY3QgKnVuaWNvZGUpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlID0gKFB5VW5pY29kZU9iamVjdCAqKW9iamVjdDsKLSAgICBQeV9VTklDT0RFICpjb3B5OwotICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBQeV9VTklDT0RFICp1LCAqY29weTsKKyAgICBQeV9zc2l6ZV90IGxlbiwgc2l6ZTsKIAorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICB1ID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUodW5pY29kZSwgJmxlbik7CisgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgLyogRW5zdXJlIHdlIHdvbid0IG92ZXJmbG93IHRoZSBzaXplLiAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSkgPiAoKFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKFB5X1VOSUNPREUpKSAtIDEpKSB7CisgICAgaWYgKGxlbiA+ICgoUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoUHlfVU5JQ09ERSkpIC0gMSkpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSkgKyAxOyAvKiBjb3B5IHRoZSBudWwgY2hhcmFjdGVyICovCisgICAgc2l6ZSA9IGxlbiArIDE7IC8qIGNvcHkgdGhlIG51bGwgY2hhcmFjdGVyICovCiAgICAgc2l6ZSAqPSBzaXplb2YoUHlfVU5JQ09ERSk7CiAgICAgY29weSA9IFB5TWVtX01hbGxvYyhzaXplKTsKICAgICBpZiAoY29weSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBtZW1jcHkoY29weSwgUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksIHNpemUpOworICAgIG1lbWNweShjb3B5LCB1LCBzaXplKTsKICAgICByZXR1cm4gY29weTsKIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oIGIvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oCmluZGV4IDg4YTc5MTIuLjQ2YTkyYmIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaAorKysgYi9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmgKQEAgLTgsMTg0ICs4LDk5MiBAQAogICAgIHswLCAwLCAwLCAwLCAwLCA0OH0sCiAgICAgezAsIDAsIDAsIDAsIDAsIDEwNTZ9LAogICAgIHswLCAwLCAwLCAwLCAwLCAxMDI0fSwKLSAgICB7MCwgMCwgMCwgMCwgMCwgNTYzOH0sCi0gICAgezAsIDAsIDAsIDEsIDEsIDU2Mzh9LAotICAgIHswLCAwLCAwLCAyLCAyLCA1NjM4fSwKLSAgICB7MCwgMCwgMCwgMywgMywgNTYzOH0sCi0gICAgezAsIDAsIDAsIDQsIDQsIDU2Mzh9LAotICAgIHswLCAwLCAwLCA1LCA1LCA1NjM4fSwKLSAgICB7MCwgMCwgMCwgNiwgNiwgNTYzOH0sCi0gICAgezAsIDAsIDAsIDcsIDcsIDU2Mzh9LAotICAgIHswLCAwLCAwLCA4LCA4LCA1NjM4fSwKLSAgICB7MCwgMCwgMCwgOSwgOSwgNTYzOH0sCi0gICAgezAsIDMyLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMCwgMCwgMCwgMCwgMTUzNn0sCi0gICAgezY1NTA0LCAwLCA2NTUwNCwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDAsIDAsIDAsIDAsIDE4MDF9LAotICAgIHswLCAwLCAwLCAwLCAyLCA1MTI0fSwKLSAgICB7MCwgMCwgMCwgMCwgMywgNTEyNH0sCi0gICAgezc0MywgMCwgNzQzLCAwLCAwLCAxODAxfSwKLSAgICB7MCwgMCwgMCwgMCwgMSwgNTEyNH0sCiAgICAgezAsIDAsIDAsIDAsIDAsIDUxMjB9LAotICAgIHsxMjEsIDAsIDEyMSwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDEsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs2NTUzNSwgMCwgNjU1MzUsIDAsIDAsIDE4MDF9LAotICAgIHswLCA2NTMzNywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezY1MzA0LCAwLCA2NTMwNCwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDY1NDE1LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NjUyMzYsIDAsIDY1MjM2LCAwLCAwLCAxODAxfSwKLSAgICB7MTk1LCAwLCAxOTUsIDAsIDAsIDE4MDF9LAotICAgIHswLCAyMTAsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAyMDYsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAyMDUsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA3OSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDIwMiwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDIwMywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDIwNywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezk3LCAwLCA5NywgMCwgMCwgMTgwMX0sCi0gICAgezAsIDIxMSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDIwOSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezE2MywgMCwgMTYzLCAwLCAwLCAxODAxfSwKLSAgICB7MCwgMjEzLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MTMwLCAwLCAxMzAsIDAsIDAsIDE4MDF9LAotICAgIHswLCAyMTQsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAyMTgsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAyMTcsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAyMTksIDAsIDAsIDAsIDE5MjF9LAorICAgIHswLCAwLCAwLCAwLCAwLCAzNTkwfSwKKyAgICB7MCwgMCwgMCwgMSwgMSwgMzU5MH0sCisgICAgezAsIDAsIDAsIDIsIDIsIDM1OTB9LAorICAgIHswLCAwLCAwLCAzLCAzLCAzNTkwfSwKKyAgICB7MCwgMCwgMCwgNCwgNCwgMzU5MH0sCisgICAgezAsIDAsIDAsIDUsIDUsIDM1OTB9LAorICAgIHswLCAwLCAwLCA2LCA2LCAzNTkwfSwKKyAgICB7MCwgMCwgMCwgNywgNywgMzU5MH0sCisgICAgezAsIDAsIDAsIDgsIDgsIDM1OTB9LAorICAgIHswLCAwLCAwLCA5LCA5LCAzNTkwfSwKKyAgICB7MCwgMzIsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMTUzNn0sCisgICAgey0zMiwgMCwgLTMyLCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgOTk5M30sCisgICAgezAsIDAsIDAsIDAsIDAsIDQwOTZ9LAorICAgIHswLCAwLCAwLCAwLCAyLCAzMDc2fSwKKyAgICB7MCwgMCwgMCwgMCwgMywgMzA3Nn0sCisgICAgezE2Nzc3MjE4LCAxNzgyNTc5MiwgMTY3NzcyMTgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgNTYzMn0sCisgICAgezAsIDAsIDAsIDAsIDEsIDMwNzZ9LAorICAgIHswLCAwLCAwLCAwLCAwLCAzMDcyfSwKKyAgICB7MzM1NTQ0MzgsIDE4ODc0MzcxLCAzMzU1NDQ0MCwgMCwgMCwgMjYzNzd9LAorICAgIHsxMjEsIDAsIDEyMSwgMCwgMCwgOTk5M30sCisgICAgezAsIDEsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7LTEsIDAsIC0xLCAwLCAwLCA5OTkzfSwKKyAgICB7MTY3NzcyMjgsIDMzNTU0NDQyLCAxNjc3NzIyOCwgMCwgMCwgMjY0OTd9LAorICAgIHstMjMyLCAwLCAtMjMyLCAwLCAwLCA5OTkzfSwKKyAgICB7MzM1NTQ0NDgsIDE4ODc0MzgxLCAzMzU1NDQ0OCwgMCwgMCwgMjYzNzd9LAorICAgIHswLCAtMTIxLCAwLCAwLCAwLCAxMDExM30sCisgICAgezE2Nzc3MjM2LCAxNzgyNTgxMCwgMTY3NzcyMzYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTk1LCAwLCAxOTUsIDAsIDAsIDk5OTN9LAorICAgIHswLCAyMTAsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMjA2LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDIwNSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCA3OSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAyMDIsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMjAzLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDIwNywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHs5NywgMCwgOTcsIDAsIDAsIDk5OTN9LAorICAgIHswLCAyMTEsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMjA5LCAwLCAwLCAwLCAxMDExM30sCisgICAgezE2MywgMCwgMTYzLCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMjEzLCAwLCAwLCAwLCAxMDExM30sCisgICAgezEzMCwgMCwgMTMwLCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMjE0LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDIxOCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAyMTcsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMjE5LCAwLCAwLCAwLCAxMDExM30sCiAgICAgezAsIDAsIDAsIDAsIDAsIDE3OTN9LAotICAgIHs1NiwgMCwgNTYsIDAsIDAsIDE4MDF9LAotICAgIHswLCAyLCAxLCAwLCAwLCAxOTIxfSwKLSAgICB7NjU1MzUsIDEsIDAsIDAsIDAsIDE4NTd9LAotICAgIHs2NTUzNCwgMCwgNjU1MzUsIDAsIDAsIDE4MDF9LAotICAgIHs2NTQ1NywgMCwgNjU0NTcsIDAsIDAsIDE4MDF9LAotICAgIHswLCA2NTQzOSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDY1NDgwLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNjU0MDYsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAxMDc5NSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDY1MzczLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMTA3OTIsIDAsIDAsIDAsIDE5MjF9LAotICAgIHsxMDgxNSwgMCwgMTA4MTUsIDAsIDAsIDE4MDF9LAotICAgIHswLCA2NTM0MSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDY5LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNzEsIDAsIDAsIDAsIDE5MjF9LAotICAgIHsxMDc4MywgMCwgMTA3ODMsIDAsIDAsIDE4MDF9LAotICAgIHsxMDc4MCwgMCwgMTA3ODAsIDAsIDAsIDE4MDF9LAotICAgIHsxMDc4MiwgMCwgMTA3ODIsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMyNiwgMCwgNjUzMjYsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMzMCwgMCwgNjUzMzAsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMzMSwgMCwgNjUzMzEsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMzNCwgMCwgNjUzMzQsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMzMywgMCwgNjUzMzMsIDAsIDAsIDE4MDF9LAotICAgIHs2NTMyOSwgMCwgNjUzMjksIDAsIDAsIDE4MDF9LAotICAgIHs0Mjg5MywgNjEzLCA0Mjg5MywgMCwgMCwgMzg0OX0sCi0gICAgezY1MzI3LCAwLCA2NTMyNywgMCwgMCwgMTgwMX0sCi0gICAgezY1MzI1LCAwLCA2NTMyNSwgMCwgMCwgMTgwMX0sCi0gICAgezEwNzQzLCAwLCAxMDc0MywgMCwgMCwgMTgwMX0sCi0gICAgezEwNzQ5LCAwLCAxMDc0OSwgMCwgMCwgMTgwMX0sCi0gICAgezY1MzIzLCAwLCA2NTMyMywgMCwgMCwgMTgwMX0sCi0gICAgezY1MzIyLCAwLCA2NTMyMiwgMCwgMCwgMTgwMX0sCi0gICAgezEwNzI3LCAwLCAxMDcyNywgMCwgMCwgMTgwMX0sCi0gICAgezY1MzE4LCAwLCA2NTMxOCwgMCwgMCwgMTgwMX0sCi0gICAgezY1NDY3LCAwLCA2NTQ2NywgMCwgMCwgMTgwMX0sCi0gICAgezY1MzE5LCAwLCA2NTMxOSwgMCwgMCwgMTgwMX0sCi0gICAgezY1NDY1LCAwLCA2NTQ2NSwgMCwgMCwgMTgwMX0sCi0gICAgezY1MzE3LCAwLCA2NTMxNywgMCwgMCwgMTgwMX0sCi0gICAgezg0LCAwLCA4NCwgMCwgMCwgMTUzNn0sCi0gICAgezAsIDAsIDAsIDAsIDAsIDEwMjV9LAotICAgIHswLCAzOCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDM3LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNjQsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA2MywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezY1NDk4LCAwLCA2NTQ5OCwgMCwgMCwgMTgwMX0sCi0gICAgezY1NDk5LCAwLCA2NTQ5OSwgMCwgMCwgMTgwMX0sCi0gICAgezY1NTA1LCAwLCA2NTUwNSwgMCwgMCwgMTgwMX0sCi0gICAgezY1NDcyLCAwLCA2NTQ3MiwgMCwgMCwgMTgwMX0sCi0gICAgezY1NDczLCAwLCA2NTQ3MywgMCwgMCwgMTgwMX0sCi0gICAgezAsIDgsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs2NTQ3NCwgMCwgNjU0NzQsIDAsIDAsIDE4MDF9LAotICAgIHs2NTQ3OSwgMCwgNjU0NzksIDAsIDAsIDE4MDF9LAotICAgIHswLCAwLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NjU0ODksIDAsIDY1NDg5LCAwLCAwLCAxODAxfSwKLSAgICB7NjU0ODIsIDAsIDY1NDgyLCAwLCAwLCAxODAxfSwKLSAgICB7NjU1MjgsIDAsIDY1NTI4LCAwLCAwLCAxODAxfSwKLSAgICB7NjU0NTAsIDAsIDY1NDUwLCAwLCAwLCAxODAxfSwKLSAgICB7NjU0NTYsIDAsIDY1NDU2LCAwLCAwLCAxODAxfSwKLSAgICB7NywgMCwgNywgMCwgMCwgMTgwMX0sCi0gICAgezAsIDY1NDc2LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NjU0NDAsIDAsIDY1NDQwLCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNjU1MjksIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA4MCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDE1LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NjU1MjEsIDAsIDY1NTIxLCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNDgsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs2NTQ4OCwgMCwgNjU0ODgsIDAsIDAsIDE4MDF9LAotICAgIHswLCAwLCAwLCAwLCAwLCAxNTM3fSwKLSAgICB7MCwgNzI2NCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDAsIDAsIDAsIDEsIDU2MzZ9LAotICAgIHswLCAwLCAwLCAwLCAyLCA1NjM2fSwKLSAgICB7MCwgMCwgMCwgMCwgMywgNTYzNn0sCi0gICAgezAsIDAsIDAsIDAsIDQsIDU2MzZ9LAotICAgIHswLCAwLCAwLCAwLCA1LCA1NjM2fSwKLSAgICB7MCwgMCwgMCwgMCwgNiwgNTYzNn0sCi0gICAgezAsIDAsIDAsIDAsIDcsIDU2MzZ9LAotICAgIHswLCAwLCAwLCAwLCA4LCA1NjM2fSwKLSAgICB7MCwgMCwgMCwgMCwgOSwgNTYzNn0sCi0gICAgezAsIDAsIDAsIDAsIDAsIDU4ODh9LAotICAgIHs0Mjg3NywgNzU0NSwgNDI4NzcsIDAsIDAsIDM4NDl9LAotICAgIHszODE0LCAwLCAzODE0LCAwLCAwLCAxODAxfSwKLSAgICB7NjU0NzcsIDAsIDY1NDc3LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNTc5MjEsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs4LCAwLCA4LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNjU1MjgsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs3NCwgMCwgNzQsIDAsIDAsIDE4MDF9LAotICAgIHs4NiwgMCwgODYsIDAsIDAsIDE4MDF9LAotICAgIHsxMDAsIDAsIDEwMCwgMCwgMCwgMTgwMX0sCi0gICAgezEyOCwgMCwgMTI4LCAwLCAwLCAxODAxfSwKLSAgICB7MTEyLCAwLCAxMTIsIDAsIDAsIDE4MDF9LAotICAgIHsxMjYsIDAsIDEyNiwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDY1NTI4LCAwLCAwLCAwLCAxODU3fSwKLSAgICB7OSwgMCwgOSwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDY1NDYyLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNjU1MjcsIDAsIDAsIDAsIDE4NTd9LAotICAgIHs1ODMzMSwgMCwgNTgzMzEsIDAsIDAsIDE4MDF9LAotICAgIHswLCA2NTQ1MCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDY1NDM2LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNjU0MjQsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA2NTQwOCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDY1NDEwLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMCwgMCwgMCwgMCwgNTEyNH0sCi0gICAgezAsIDAsIDAsIDAsIDQsIDUxMjR9LAotICAgIHswLCAwLCAwLCAwLCA1LCA1MTI0fSwKLSAgICB7MCwgMCwgMCwgMCwgNiwgNTEyNH0sCi0gICAgezAsIDAsIDAsIDAsIDcsIDUxMjR9LAotICAgIHswLCAwLCAwLCAwLCA4LCA1MTI0fSwKLSAgICB7MCwgMCwgMCwgMCwgOSwgNTEyNH0sCi0gICAgezAsIDAsIDAsIDAsIDAsIDE3OTJ9LAotICAgIHswLCA1ODAxOSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDU3MTUzLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNTcyNzQsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAyOCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezY1NTA4LCAwLCA2NTUwOCwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDE2LCAwLCAwLCAwLCA1ODg4fSwKLSAgICB7NjU1MjAsIDAsIDY1NTIwLCAwLCAwLCA1ODg4fSwKLSAgICB7MCwgMjYsIDAsIDAsIDAsIDEwMjR9LAotICAgIHs2NTUxMCwgMCwgNjU1MTAsIDAsIDAsIDEwMjR9LAotICAgIHswLCA1NDc5MywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDYxNzIyLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNTQ4MDksIDAsIDAsIDAsIDE5MjF9LAotICAgIHs1NDc0MSwgMCwgNTQ3NDEsIDAsIDAsIDE4MDF9LAotICAgIHs1NDc0NCwgMCwgNTQ3NDQsIDAsIDAsIDE4MDF9LAotICAgIHswLCA1NDc1NiwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDU0Nzg3LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNTQ3NTMsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA1NDc1NCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDU0NzIxLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NTgyNzIsIDAsIDU4MjcyLCAwLCAwLCAxODAxfSwKKyAgICB7NTYsIDAsIDU2LCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMiwgMSwgMCwgMCwgMTAxMTN9LAorICAgIHstMSwgMSwgMCwgMCwgMCwgMTAwNDl9LAorICAgIHstMiwgMCwgLTEsIDAsIDAsIDk5OTN9LAorICAgIHstNzksIDAsIC03OSwgMCwgMCwgOTk5M30sCisgICAgezMzNTU0NDU2LCAxODg3NDM4OSwgMzM1NTQ0NTYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgLTk3LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC01NiwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtMTMwLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDEwNzk1LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC0xNjMsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMTA3OTIsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MTA4MTUsIDAsIDEwODE1LCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgLTE5NSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCA2OSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCA3MSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHsxMDc4MywgMCwgMTA3ODMsIDAsIDAsIDk5OTN9LAorICAgIHsxMDc4MCwgMCwgMTA3ODAsIDAsIDAsIDk5OTN9LAorICAgIHsxMDc4MiwgMCwgMTA3ODIsIDAsIDAsIDk5OTN9LAorICAgIHstMjEwLCAwLCAtMjEwLCAwLCAwLCA5OTkzfSwKKyAgICB7LTIwNiwgMCwgLTIwNiwgMCwgMCwgOTk5M30sCisgICAgey0yMDUsIDAsIC0yMDUsIDAsIDAsIDk5OTN9LAorICAgIHstMjAyLCAwLCAtMjAyLCAwLCAwLCA5OTkzfSwKKyAgICB7LTIwMywgMCwgLTIwMywgMCwgMCwgOTk5M30sCisgICAgey0yMDcsIDAsIC0yMDcsIDAsIDAsIDk5OTN9LAorICAgIHs0MjI4MCwgMCwgNDIyODAsIDAsIDAsIDk5OTN9LAorICAgIHs0MjMwOCwgMCwgNDIzMDgsIDAsIDAsIDk5OTN9LAorICAgIHstMjA5LCAwLCAtMjA5LCAwLCAwLCA5OTkzfSwKKyAgICB7LTIxMSwgMCwgLTIxMSwgMCwgMCwgOTk5M30sCisgICAgezEwNzQzLCAwLCAxMDc0MywgMCwgMCwgOTk5M30sCisgICAgezEwNzQ5LCAwLCAxMDc0OSwgMCwgMCwgOTk5M30sCisgICAgey0yMTMsIDAsIC0yMTMsIDAsIDAsIDk5OTN9LAorICAgIHstMjE0LCAwLCAtMjE0LCAwLCAwLCA5OTkzfSwKKyAgICB7MTA3MjcsIDAsIDEwNzI3LCAwLCAwLCA5OTkzfSwKKyAgICB7LTIxOCwgMCwgLTIxOCwgMCwgMCwgOTk5M30sCisgICAgey02OSwgMCwgLTY5LCAwLCAwLCA5OTkzfSwKKyAgICB7LTIxNywgMCwgLTIxNywgMCwgMCwgOTk5M30sCisgICAgey03MSwgMCwgLTcxLCAwLCAwLCA5OTkzfSwKKyAgICB7LTIxOSwgMCwgLTIxOSwgMCwgMCwgOTk5M30sCisgICAgezAsIDAsIDAsIDAsIDAsIDE0MDg5fSwKICAgICB7MCwgMCwgMCwgMCwgMCwgNTg4OX0sCi0gICAgezQyODc3LCA3NTQ1LCA0Mjg3NywgMCwgMCwgMzk2OX0sCi0gICAgezQyODkzLCA2MTMsIDQyODkzLCAwLCAwLCAzOTY5fSwKLSAgICB7MCwgNDAsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs2NTQ5NiwgMCwgNjU0OTYsIDAsIDAsIDE4MDF9LAorICAgIHsxNjc3NzI0NCwgMTc4MjU4MTgsIDE2Nzc3MjQ0LCAwLCAwLCAzMDIxNn0sCisgICAgezAsIDAsIDAsIDAsIDAsIDEzMzIxfSwKKyAgICB7MCwgMzgsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMzcsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgNjQsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgNjMsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7NTAzMzE2ODEsIDE5OTIyOTczLCA1MDMzMTY4MSwgMCwgMCwgMjYzNzd9LAorICAgIHstMzgsIDAsIC0zOCwgMCwgMCwgOTk5M30sCisgICAgey0zNywgMCwgLTM3LCAwLCAwLCA5OTkzfSwKKyAgICB7NTAzMzE2ODgsIDE5OTIyOTgwLCA1MDMzMTY4OCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzI2MSwgMTc4MjU4MzUsIDE2Nzc3MjYxLCAwLCAwLCAyNjM3N30sCisgICAgey02NCwgMCwgLTY0LCAwLCAwLCA5OTkzfSwKKyAgICB7LTYzLCAwLCAtNjMsIDAsIDAsIDk5OTN9LAorICAgIHswLCA4LCAwLCAwLCAwLCAxMDExM30sCisgICAgezE2Nzc3MjY0LCAxNzgyNTgzOCwgMTY3NzcyNjQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzcyNjcsIDE3ODI1ODQxLCAxNjc3NzI2NywgMCwgMCwgMjYzNzd9LAorICAgIHswLCAwLCAwLCAwLCAwLCAxMDExM30sCisgICAgezE2Nzc3MjcwLCAxNzgyNTg0NCwgMTY3NzcyNzAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzcyNzMsIDE3ODI1ODQ3LCAxNjc3NzI3MywgMCwgMCwgMjYzNzd9LAorICAgIHstOCwgMCwgLTgsIDAsIDAsIDk5OTN9LAorICAgIHsxNjc3NzI3NiwgMTc4MjU4NTAsIDE2Nzc3Mjc2LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3Mjc5LCAxNzgyNTg1MywgMTY3NzcyNzksIDAsIDAsIDI2Mzc3fSwKKyAgICB7NywgMCwgNywgMCwgMCwgOTk5M30sCisgICAgezAsIC02MCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHsxNjc3NzI4MiwgMTc4MjU4NTYsIDE2Nzc3MjgyLCAwLCAwLCAyNjM3N30sCisgICAgezAsIC03LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDgwLCAwLCAwLCAwLCAxMDExM30sCisgICAgey04MCwgMCwgLTgwLCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMTUsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7LTE1LCAwLCAtMTUsIDAsIDAsIDk5OTN9LAorICAgIHswLCA0OCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHstNDgsIDAsIC00OCwgMCwgMCwgOTk5M30sCisgICAgezMzNTU0NTAyLCAxODg3NDQzNSwgMzM1NTQ1MDQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMTUzN30sCisgICAgezAsIDcyNjQsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMCwgMCwgMCwgMSwgMzU4OH0sCisgICAgezAsIDAsIDAsIDAsIDIsIDM1ODh9LAorICAgIHswLCAwLCAwLCAwLCAzLCAzNTg4fSwKKyAgICB7MCwgMCwgMCwgMCwgNCwgMzU4OH0sCisgICAgezAsIDAsIDAsIDAsIDUsIDM1ODh9LAorICAgIHswLCAwLCAwLCAwLCA2LCAzNTg4fSwKKyAgICB7MCwgMCwgMCwgMCwgNywgMzU4OH0sCisgICAgezAsIDAsIDAsIDAsIDgsIDM1ODh9LAorICAgIHswLCAwLCAwLCAwLCA5LCAzNTg4fSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMzg0MH0sCisgICAgezM1MzMyLCAwLCAzNTMzMiwgMCwgMCwgOTk5M30sCisgICAgezM4MTQsIDAsIDM4MTQsIDAsIDAsIDk5OTN9LAorICAgIHszMzU1NDUwOSwgMTg4NzQ0NDIsIDMzNTU0NTA5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NTE0LCAxODg3NDQ0NywgMzM1NTQ1MTQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ1MTksIDE4ODc0NDUyLCAzMzU1NDUxOSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDUyNCwgMTg4NzQ0NTcsIDMzNTU0NTI0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NTI5LCAxODg3NDQ2MiwgMzM1NTQ1MjksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzczMTcsIDE3ODI1ODkxLCAxNjc3NzMxNywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzMyMSwgMTg4NzQ0NzAsIDE2Nzc3MzIxLCAwLCAwLCAyNjQ5N30sCisgICAgezgsIDAsIDgsIDAsIDAsIDk5OTN9LAorICAgIHswLCAtOCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHszMzU1NDU0MSwgMTg4NzQ0NzQsIDMzNTU0NTQxLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMxNzYzLCAxOTkyMzA1NSwgNTAzMzE3NjMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzE3NzAsIDE5OTIzMDYyLCA1MDMzMTc3MCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMTc3NywgMTk5MjMwNjksIDUwMzMxNzc3LCAwLCAwLCAyNjM3N30sCisgICAgezc0LCAwLCA3NCwgMCwgMCwgOTk5M30sCisgICAgezg2LCAwLCA4NiwgMCwgMCwgOTk5M30sCisgICAgezEwMCwgMCwgMTAwLCAwLCAwLCA5OTkzfSwKKyAgICB7MTI4LCAwLCAxMjgsIDAsIDAsIDk5OTN9LAorICAgIHsxMTIsIDAsIDExMiwgMCwgMCwgOTk5M30sCisgICAgezEyNiwgMCwgMTI2LCAwLCAwLCA5OTkzfSwKKyAgICB7MzM1NTQ1NjcsIDE4ODc0NTAwLCAxNjc3NzM1MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDU3MywgMTg4NzQ1MDYsIDE2Nzc3MzU5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NTc5LCAxODg3NDUxMiwgMTY3NzczNjUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ1ODUsIDE4ODc0NTE4LCAxNjc3NzM3MSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDU5MSwgMTg4NzQ1MjQsIDE2Nzc3Mzc3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NTk3LCAxODg3NDUzMCwgMTY3NzczODMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ2MDMsIDE4ODc0NTM2LCAxNjc3NzM4OSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDYwOSwgMTg4NzQ1NDIsIDE2Nzc3Mzk1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NjE1LCAxODg3NDU0OCwgMTY3Nzc0MDEsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ2MjEsIDE4ODc0NTU0LCAxNjc3NzQwNywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDYyNywgMTg4NzQ1NjAsIDE2Nzc3NDEzLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NjMzLCAxODg3NDU2NiwgMTY3Nzc0MTksIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ2MzksIDE4ODc0NTcyLCAxNjc3NzQyNSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDY0NSwgMTg4NzQ1NzgsIDE2Nzc3NDMxLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NjUxLCAxODg3NDU4NCwgMTY3Nzc0MzcsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ2NTcsIDE4ODc0NTkwLCAxNjc3NzQ0MywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDY2MywgMTg4NzQ1OTYsIDE2Nzc3NDQ5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NjY5LCAxODg3NDYwMiwgMTY3Nzc0NTUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ2NzUsIDE4ODc0NjA4LCAxNjc3NzQ2MSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDY4MSwgMTg4NzQ2MTQsIDE2Nzc3NDY3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0Njg3LCAxODg3NDYyMCwgMTY3Nzc0NzMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ2OTMsIDE4ODc0NjI2LCAxNjc3NzQ3OSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDY5OSwgMTg4NzQ2MzIsIDE2Nzc3NDg1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NzA1LCAxODg3NDYzOCwgMTY3Nzc0OTEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ3MTEsIDE4ODc0NjQ0LCAxNjc3NzQ5NywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDcxNywgMTg4NzQ2NTAsIDE2Nzc3NTAzLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NzIzLCAxODg3NDY1NiwgMTY3Nzc1MDksIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ3MjksIDE4ODc0NjYyLCAxNjc3NzUxNSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDczNSwgMTg4NzQ2NjgsIDE2Nzc3NTIxLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NzQxLCAxODg3NDY3NCwgMTY3Nzc1MjcsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ3NDcsIDE4ODc0NjgwLCAxNjc3NzUzMywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDc1MywgMTg4NzQ2ODYsIDE2Nzc3NTM5LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NzU5LCAxODg3NDY5MiwgMTY3Nzc1NDUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ3NjUsIDE4ODc0Njk4LCAxNjc3NzU1MSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDc3MSwgMTg4NzQ3MDQsIDE2Nzc3NTU3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0Nzc3LCAxODg3NDcxMCwgMTY3Nzc1NjMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ3ODMsIDE4ODc0NzE2LCAxNjc3NzU2OSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDc4OSwgMTg4NzQ3MjIsIDE2Nzc3NTc1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0Nzk1LCAxODg3NDcyOCwgMTY3Nzc1ODEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4MDEsIDE4ODc0NzM0LCAxNjc3NzU4NywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDgwNywgMTg4NzQ3NDAsIDE2Nzc3NTkzLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0ODEzLCAxODg3NDc0NiwgMTY3Nzc1OTksIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ4MTksIDE4ODc0NzUyLCAxNjc3NzYwNSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDgyNSwgMTg4NzQ3NTgsIDE2Nzc3NjExLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0ODMxLCAxODg3NDc2NCwgMTY3Nzc2MTcsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ4MzcsIDE4ODc0NzcwLCAxNjc3NzYyMywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDg0MywgMTg4NzQ3NzYsIDE2Nzc3NjI5LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0ODQ5LCAxODg3NDc4MiwgMTY3Nzc2MzUsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ4NTUsIDE4ODc0Nzg4LCAzMzU1NDg1NywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg2MiwgMTg4NzQ3OTUsIDE2Nzc3NjQ4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODY4LCAxODg3NDgwMSwgMzM1NTQ4NzAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NzUsIDE4ODc0ODA4LCAzMzU1NDg3NSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjA5NywgMTk5MjMzODksIDUwMzMyMTAwLCAwLCAwLCAyNjM3N30sCisgICAgezAsIC03NCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHszMzU1NDg5MCwgMTg4NzQ4MjMsIDE2Nzc3Njc2LCAwLCAwLCAyNjQzM30sCisgICAgezE2Nzc3Njc5LCAxNzgyNjI1MywgMTY3Nzc2NzksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4OTksIDE4ODc0ODMyLCAzMzU1NDkwMSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDkwNiwgMTg4NzQ4MzksIDE2Nzc3NjkyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTEyLCAxODg3NDg0NSwgMzM1NTQ5MTQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5MTksIDE4ODc0ODUyLCAzMzU1NDkxOSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjE0MSwgMTk5MjM0MzMsIDUwMzMyMTQ0LCAwLCAwLCAyNjM3N30sCisgICAgezAsIC04NiwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHszMzU1NDkzNCwgMTg4NzQ4NjcsIDE2Nzc3NzIwLCAwLCAwLCAyNjQzM30sCisgICAgezUwMzMyMTU3LCAxOTkyMzQ0OSwgNTAzMzIxNTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIxNjQsIDE5OTIzNDU2LCA1MDMzMjE2NCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk1NCwgMTg4NzQ4ODcsIDMzNTU0OTU0LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMTc2LCAxOTkyMzQ2OCwgNTAzMzIxNzYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgLTEwMCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHs1MDMzMjE4MywgMTk5MjM0NzUsIDUwMzMyMTgzLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMTkwLCAxOTkyMzQ4MiwgNTAzMzIxOTAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5ODAsIDE4ODc0OTEzLCAzMzU1NDk4MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk4NSwgMTg4NzQ5MTgsIDMzNTU0OTg1LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMjA3LCAxOTkyMzQ5OSwgNTAzMzIyMDcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgLTExMiwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHszMzU1NDk5NywgMTg4NzQ5MzAsIDMzNTU0OTk5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDA0LCAxODg3NDkzNywgMTY3Nzc3OTAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwMTAsIDE4ODc0OTQzLCAzMzU1NTAxMiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTAxNywgMTg4NzQ5NTAsIDMzNTU1MDE3LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMjM5LCAxOTkyMzUzMSwgNTAzMzIyNDIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgLTEyOCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtMTI2LCAwLCAwLCAwLCAxMDExM30sCisgICAgezMzNTU1MDMyLCAxODg3NDk2NSwgMTY3Nzc4MTgsIDAsIDAsIDI2NDMzfSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMzA3Nn0sCisgICAgezAsIDAsIDAsIDAsIDQsIDMwNzZ9LAorICAgIHswLCAwLCAwLCAwLCA1LCAzMDc2fSwKKyAgICB7MCwgMCwgMCwgMCwgNiwgMzA3Nn0sCisgICAgezAsIDAsIDAsIDAsIDcsIDMwNzZ9LAorICAgIHswLCAwLCAwLCAwLCA4LCAzMDc2fSwKKyAgICB7MCwgMCwgMCwgMCwgOSwgMzA3Nn0sCisgICAgezAsIDAsIDAsIDAsIDAsIDE3OTJ9LAorICAgIHswLCAtNzUxNywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtODM4MywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtODI2MiwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAyOCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHstMjgsIDAsIC0yOCwgMCwgMCwgOTk5M30sCisgICAgezAsIDE2LCAwLCAwLCAwLCAxMjE2MH0sCisgICAgey0xNiwgMCwgLTE2LCAwLCAwLCAxMjA0MH0sCisgICAgezAsIDI2LCAwLCAwLCAwLCA5MzQ0fSwKKyAgICB7LTI2LCAwLCAtMjYsIDAsIDAsIDkyMjR9LAorICAgIHswLCAtMTA3NDMsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTM4MTQsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTEwNzI3LCAwLCAwLCAwLCAxMDExM30sCisgICAgey0xMDc5NSwgMCwgLTEwNzk1LCAwLCAwLCA5OTkzfSwKKyAgICB7LTEwNzkyLCAwLCAtMTA3OTIsIDAsIDAsIDk5OTN9LAorICAgIHswLCAtMTA3ODAsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTEwNzQ5LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC0xMDc4MywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtMTA3ODIsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTEwODE1LCAwLCAwLCAwLCAxMDExM30sCisgICAgey03MjY0LCAwLCAtNzI2NCwgMCwgMCwgOTk5M30sCisgICAgezAsIDAsIDAsIDAsIDAsIDUxMjF9LAorICAgIHswLCAwLCAwLCAwLCAwLCAzODQxfSwKKyAgICB7MCwgLTM1MzMyLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC00MjI4MCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtNDIzMDgsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MzM1NTUwMzgsIDE4ODc0OTcxLCAzMzU1NTA0MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA0NSwgMTg4NzQ5NzgsIDMzNTU1MDQ3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDUyLCAxODg3NDk4NSwgMzM1NTUwNTQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIyNzYsIDE5OTIzNTY4LCA1MDMzMjI3OSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjI4NiwgMTk5MjM1NzgsIDUwMzMyMjg5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDc5LCAxODg3NTAxMiwgMzM1NTUwODEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwODYsIDE4ODc1MDE5LCAzMzU1NTA4OCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA5MywgMTg4NzUwMjYsIDMzNTU1MDk1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTAwLCAxODg3NTAzMywgMzM1NTUxMDIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxMDcsIDE4ODc1MDQwLCAzMzU1NTEwOSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTExNCwgMTg4NzUwNDcsIDMzNTU1MTE2LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTIxLCAxODg3NTA1NCwgMzM1NTUxMjMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMTAyNX0sCisgICAgezAsIDAsIDAsIDAsIDAsIDU2MzN9LAorICAgIHswLCA0MCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHstNDAsIDAsIC00MCwgMCwgMCwgOTk5M30sCit9OworCisvKiBleHRlbmRlZCBjYXNlIG1hcHBpbmdzICovCisKK2NvbnN0IFB5X1VDUzQgX1B5VW5pY29kZV9FeHRlbmRlZENhc2VbXSA9IHsKKyAgICAxODEsCisgICAgOTU2LAorICAgIDkyNCwKKyAgICAyMjMsCisgICAgMTE1LAorICAgIDExNSwKKyAgICA4MywKKyAgICA4MywKKyAgICA4MywKKyAgICAxMTUsCisgICAgMTA1LAorICAgIDc3NSwKKyAgICAzMDQsCisgICAgMzI5LAorICAgIDcwMCwKKyAgICAxMTAsCisgICAgNzAwLAorICAgIDc4LAorICAgIDM4MywKKyAgICAxMTUsCisgICAgODMsCisgICAgNDk2LAorICAgIDEwNiwKKyAgICA3ODAsCisgICAgNzQsCisgICAgNzgwLAorICAgIDgzNywKKyAgICA5NTMsCisgICAgOTIxLAorICAgIDkxMiwKKyAgICA5NTMsCisgICAgNzc2LAorICAgIDc2OSwKKyAgICA5MjEsCisgICAgNzc2LAorICAgIDc2OSwKKyAgICA5NDQsCisgICAgOTY1LAorICAgIDc3NiwKKyAgICA3NjksCisgICAgOTMzLAorICAgIDc3NiwKKyAgICA3NjksCisgICAgOTYyLAorICAgIDk2MywKKyAgICA5MzEsCisgICAgOTc2LAorICAgIDk0NiwKKyAgICA5MTQsCisgICAgOTc3LAorICAgIDk1MiwKKyAgICA5MjAsCisgICAgOTgxLAorICAgIDk2NiwKKyAgICA5MzQsCisgICAgOTgyLAorICAgIDk2MCwKKyAgICA5MjgsCisgICAgMTAwOCwKKyAgICA5NTQsCisgICAgOTIyLAorICAgIDEwMDksCisgICAgOTYxLAorICAgIDkyOSwKKyAgICAxMDEzLAorICAgIDk0OSwKKyAgICA5MTcsCisgICAgMTQxNSwKKyAgICAxMzgxLAorICAgIDE0MTAsCisgICAgMTMzMywKKyAgICAxMzYyLAorICAgIDEzMzMsCisgICAgMTQxMCwKKyAgICA3ODMwLAorICAgIDEwNCwKKyAgICA4MTcsCisgICAgNzIsCisgICAgODE3LAorICAgIDc4MzEsCisgICAgMTE2LAorICAgIDc3NiwKKyAgICA4NCwKKyAgICA3NzYsCisgICAgNzgzMiwKKyAgICAxMTksCisgICAgNzc4LAorICAgIDg3LAorICAgIDc3OCwKKyAgICA3ODMzLAorICAgIDEyMSwKKyAgICA3NzgsCisgICAgODksCisgICAgNzc4LAorICAgIDc4MzQsCisgICAgOTcsCisgICAgNzAyLAorICAgIDY1LAorICAgIDcwMiwKKyAgICA3ODM1LAorICAgIDc3NzcsCisgICAgNzc3NiwKKyAgICAyMjMsCisgICAgMTE1LAorICAgIDExNSwKKyAgICA3ODM4LAorICAgIDgwMTYsCisgICAgOTY1LAorICAgIDc4NywKKyAgICA5MzMsCisgICAgNzg3LAorICAgIDgwMTgsCisgICAgOTY1LAorICAgIDc4NywKKyAgICA3NjgsCisgICAgOTMzLAorICAgIDc4NywKKyAgICA3NjgsCisgICAgODAyMCwKKyAgICA5NjUsCisgICAgNzg3LAorICAgIDc2OSwKKyAgICA5MzMsCisgICAgNzg3LAorICAgIDc2OSwKKyAgICA4MDIyLAorICAgIDk2NSwKKyAgICA3ODcsCisgICAgODM0LAorICAgIDkzMywKKyAgICA3ODcsCisgICAgODM0LAorICAgIDgwNjQsCisgICAgNzkzNiwKKyAgICA5NTMsCisgICAgNzk0NCwKKyAgICA5MjEsCisgICAgODA3MiwKKyAgICA4MDY1LAorICAgIDc5MzcsCisgICAgOTUzLAorICAgIDc5NDUsCisgICAgOTIxLAorICAgIDgwNzMsCisgICAgODA2NiwKKyAgICA3OTM4LAorICAgIDk1MywKKyAgICA3OTQ2LAorICAgIDkyMSwKKyAgICA4MDc0LAorICAgIDgwNjcsCisgICAgNzkzOSwKKyAgICA5NTMsCisgICAgNzk0NywKKyAgICA5MjEsCisgICAgODA3NSwKKyAgICA4MDY4LAorICAgIDc5NDAsCisgICAgOTUzLAorICAgIDc5NDgsCisgICAgOTIxLAorICAgIDgwNzYsCisgICAgODA2OSwKKyAgICA3OTQxLAorICAgIDk1MywKKyAgICA3OTQ5LAorICAgIDkyMSwKKyAgICA4MDc3LAorICAgIDgwNzAsCisgICAgNzk0MiwKKyAgICA5NTMsCisgICAgNzk1MCwKKyAgICA5MjEsCisgICAgODA3OCwKKyAgICA4MDcxLAorICAgIDc5NDMsCisgICAgOTUzLAorICAgIDc5NTEsCisgICAgOTIxLAorICAgIDgwNzksCisgICAgODA2NCwKKyAgICA3OTM2LAorICAgIDk1MywKKyAgICA3OTQ0LAorICAgIDkyMSwKKyAgICA4MDcyLAorICAgIDgwNjUsCisgICAgNzkzNywKKyAgICA5NTMsCisgICAgNzk0NSwKKyAgICA5MjEsCisgICAgODA3MywKKyAgICA4MDY2LAorICAgIDc5MzgsCisgICAgOTUzLAorICAgIDc5NDYsCisgICAgOTIxLAorICAgIDgwNzQsCisgICAgODA2NywKKyAgICA3OTM5LAorICAgIDk1MywKKyAgICA3OTQ3LAorICAgIDkyMSwKKyAgICA4MDc1LAorICAgIDgwNjgsCisgICAgNzk0MCwKKyAgICA5NTMsCisgICAgNzk0OCwKKyAgICA5MjEsCisgICAgODA3NiwKKyAgICA4MDY5LAorICAgIDc5NDEsCisgICAgOTUzLAorICAgIDc5NDksCisgICAgOTIxLAorICAgIDgwNzcsCisgICAgODA3MCwKKyAgICA3OTQyLAorICAgIDk1MywKKyAgICA3OTUwLAorICAgIDkyMSwKKyAgICA4MDc4LAorICAgIDgwNzEsCisgICAgNzk0MywKKyAgICA5NTMsCisgICAgNzk1MSwKKyAgICA5MjEsCisgICAgODA3OSwKKyAgICA4MDgwLAorICAgIDc5NjgsCisgICAgOTUzLAorICAgIDc5NzYsCisgICAgOTIxLAorICAgIDgwODgsCisgICAgODA4MSwKKyAgICA3OTY5LAorICAgIDk1MywKKyAgICA3OTc3LAorICAgIDkyMSwKKyAgICA4MDg5LAorICAgIDgwODIsCisgICAgNzk3MCwKKyAgICA5NTMsCisgICAgNzk3OCwKKyAgICA5MjEsCisgICAgODA5MCwKKyAgICA4MDgzLAorICAgIDc5NzEsCisgICAgOTUzLAorICAgIDc5NzksCisgICAgOTIxLAorICAgIDgwOTEsCisgICAgODA4NCwKKyAgICA3OTcyLAorICAgIDk1MywKKyAgICA3OTgwLAorICAgIDkyMSwKKyAgICA4MDkyLAorICAgIDgwODUsCisgICAgNzk3MywKKyAgICA5NTMsCisgICAgNzk4MSwKKyAgICA5MjEsCisgICAgODA5MywKKyAgICA4MDg2LAorICAgIDc5NzQsCisgICAgOTUzLAorICAgIDc5ODIsCisgICAgOTIxLAorICAgIDgwOTQsCisgICAgODA4NywKKyAgICA3OTc1LAorICAgIDk1MywKKyAgICA3OTgzLAorICAgIDkyMSwKKyAgICA4MDk1LAorICAgIDgwODAsCisgICAgNzk2OCwKKyAgICA5NTMsCisgICAgNzk3NiwKKyAgICA5MjEsCisgICAgODA4OCwKKyAgICA4MDgxLAorICAgIDc5NjksCisgICAgOTUzLAorICAgIDc5NzcsCisgICAgOTIxLAorICAgIDgwODksCisgICAgODA4MiwKKyAgICA3OTcwLAorICAgIDk1MywKKyAgICA3OTc4LAorICAgIDkyMSwKKyAgICA4MDkwLAorICAgIDgwODMsCisgICAgNzk3MSwKKyAgICA5NTMsCisgICAgNzk3OSwKKyAgICA5MjEsCisgICAgODA5MSwKKyAgICA4MDg0LAorICAgIDc5NzIsCisgICAgOTUzLAorICAgIDc5ODAsCisgICAgOTIxLAorICAgIDgwOTIsCisgICAgODA4NSwKKyAgICA3OTczLAorICAgIDk1MywKKyAgICA3OTgxLAorICAgIDkyMSwKKyAgICA4MDkzLAorICAgIDgwODYsCisgICAgNzk3NCwKKyAgICA5NTMsCisgICAgNzk4MiwKKyAgICA5MjEsCisgICAgODA5NCwKKyAgICA4MDg3LAorICAgIDc5NzUsCisgICAgOTUzLAorICAgIDc5ODMsCisgICAgOTIxLAorICAgIDgwOTUsCisgICAgODA5NiwKKyAgICA4MDMyLAorICAgIDk1MywKKyAgICA4MDQwLAorICAgIDkyMSwKKyAgICA4MTA0LAorICAgIDgwOTcsCisgICAgODAzMywKKyAgICA5NTMsCisgICAgODA0MSwKKyAgICA5MjEsCisgICAgODEwNSwKKyAgICA4MDk4LAorICAgIDgwMzQsCisgICAgOTUzLAorICAgIDgwNDIsCisgICAgOTIxLAorICAgIDgxMDYsCisgICAgODA5OSwKKyAgICA4MDM1LAorICAgIDk1MywKKyAgICA4MDQzLAorICAgIDkyMSwKKyAgICA4MTA3LAorICAgIDgxMDAsCisgICAgODAzNiwKKyAgICA5NTMsCisgICAgODA0NCwKKyAgICA5MjEsCisgICAgODEwOCwKKyAgICA4MTAxLAorICAgIDgwMzcsCisgICAgOTUzLAorICAgIDgwNDUsCisgICAgOTIxLAorICAgIDgxMDksCisgICAgODEwMiwKKyAgICA4MDM4LAorICAgIDk1MywKKyAgICA4MDQ2LAorICAgIDkyMSwKKyAgICA4MTEwLAorICAgIDgxMDMsCisgICAgODAzOSwKKyAgICA5NTMsCisgICAgODA0NywKKyAgICA5MjEsCisgICAgODExMSwKKyAgICA4MDk2LAorICAgIDgwMzIsCisgICAgOTUzLAorICAgIDgwNDAsCisgICAgOTIxLAorICAgIDgxMDQsCisgICAgODA5NywKKyAgICA4MDMzLAorICAgIDk1MywKKyAgICA4MDQxLAorICAgIDkyMSwKKyAgICA4MTA1LAorICAgIDgwOTgsCisgICAgODAzNCwKKyAgICA5NTMsCisgICAgODA0MiwKKyAgICA5MjEsCisgICAgODEwNiwKKyAgICA4MDk5LAorICAgIDgwMzUsCisgICAgOTUzLAorICAgIDgwNDMsCisgICAgOTIxLAorICAgIDgxMDcsCisgICAgODEwMCwKKyAgICA4MDM2LAorICAgIDk1MywKKyAgICA4MDQ0LAorICAgIDkyMSwKKyAgICA4MTA4LAorICAgIDgxMDEsCisgICAgODAzNywKKyAgICA5NTMsCisgICAgODA0NSwKKyAgICA5MjEsCisgICAgODEwOSwKKyAgICA4MTAyLAorICAgIDgwMzgsCisgICAgOTUzLAorICAgIDgwNDYsCisgICAgOTIxLAorICAgIDgxMTAsCisgICAgODEwMywKKyAgICA4MDM5LAorICAgIDk1MywKKyAgICA4MDQ3LAorICAgIDkyMSwKKyAgICA4MTExLAorICAgIDgxMTQsCisgICAgODA0OCwKKyAgICA5NTMsCisgICAgODEyMiwKKyAgICA5MjEsCisgICAgODEyMiwKKyAgICA4MzcsCisgICAgODExNSwKKyAgICA5NDUsCisgICAgOTUzLAorICAgIDkxMywKKyAgICA5MjEsCisgICAgODEyNCwKKyAgICA4MTE2LAorICAgIDk0MCwKKyAgICA5NTMsCisgICAgOTAyLAorICAgIDkyMSwKKyAgICA5MDIsCisgICAgODM3LAorICAgIDgxMTgsCisgICAgOTQ1LAorICAgIDgzNCwKKyAgICA5MTMsCisgICAgODM0LAorICAgIDgxMTksCisgICAgOTQ1LAorICAgIDgzNCwKKyAgICA5NTMsCisgICAgOTEzLAorICAgIDgzNCwKKyAgICA5MjEsCisgICAgOTEzLAorICAgIDgzNCwKKyAgICA4MzcsCisgICAgODExNSwKKyAgICA5NDUsCisgICAgOTUzLAorICAgIDkxMywKKyAgICA5MjEsCisgICAgODEyNCwKKyAgICA4MTI2LAorICAgIDk1MywKKyAgICA5MjEsCisgICAgODEzMCwKKyAgICA4MDUyLAorICAgIDk1MywKKyAgICA4MTM4LAorICAgIDkyMSwKKyAgICA4MTM4LAorICAgIDgzNywKKyAgICA4MTMxLAorICAgIDk1MSwKKyAgICA5NTMsCisgICAgOTE5LAorICAgIDkyMSwKKyAgICA4MTQwLAorICAgIDgxMzIsCisgICAgOTQyLAorICAgIDk1MywKKyAgICA5MDUsCisgICAgOTIxLAorICAgIDkwNSwKKyAgICA4MzcsCisgICAgODEzNCwKKyAgICA5NTEsCisgICAgODM0LAorICAgIDkxOSwKKyAgICA4MzQsCisgICAgODEzNSwKKyAgICA5NTEsCisgICAgODM0LAorICAgIDk1MywKKyAgICA5MTksCisgICAgODM0LAorICAgIDkyMSwKKyAgICA5MTksCisgICAgODM0LAorICAgIDgzNywKKyAgICA4MTMxLAorICAgIDk1MSwKKyAgICA5NTMsCisgICAgOTE5LAorICAgIDkyMSwKKyAgICA4MTQwLAorICAgIDgxNDYsCisgICAgOTUzLAorICAgIDc3NiwKKyAgICA3NjgsCisgICAgOTIxLAorICAgIDc3NiwKKyAgICA3NjgsCisgICAgODE0NywKKyAgICA5NTMsCisgICAgNzc2LAorICAgIDc2OSwKKyAgICA5MjEsCisgICAgNzc2LAorICAgIDc2OSwKKyAgICA4MTUwLAorICAgIDk1MywKKyAgICA4MzQsCisgICAgOTIxLAorICAgIDgzNCwKKyAgICA4MTUxLAorICAgIDk1MywKKyAgICA3NzYsCisgICAgODM0LAorICAgIDkyMSwKKyAgICA3NzYsCisgICAgODM0LAorICAgIDgxNjIsCisgICAgOTY1LAorICAgIDc3NiwKKyAgICA3NjgsCisgICAgOTMzLAorICAgIDc3NiwKKyAgICA3NjgsCisgICAgODE2MywKKyAgICA5NjUsCisgICAgNzc2LAorICAgIDc2OSwKKyAgICA5MzMsCisgICAgNzc2LAorICAgIDc2OSwKKyAgICA4MTY0LAorICAgIDk2MSwKKyAgICA3ODcsCisgICAgOTI5LAorICAgIDc4NywKKyAgICA4MTY2LAorICAgIDk2NSwKKyAgICA4MzQsCisgICAgOTMzLAorICAgIDgzNCwKKyAgICA4MTY3LAorICAgIDk2NSwKKyAgICA3NzYsCisgICAgODM0LAorICAgIDkzMywKKyAgICA3NzYsCisgICAgODM0LAorICAgIDgxNzgsCisgICAgODA2MCwKKyAgICA5NTMsCisgICAgODE4NiwKKyAgICA5MjEsCisgICAgODE4NiwKKyAgICA4MzcsCisgICAgODE3OSwKKyAgICA5NjksCisgICAgOTUzLAorICAgIDkzNywKKyAgICA5MjEsCisgICAgODE4OCwKKyAgICA4MTgwLAorICAgIDk3NCwKKyAgICA5NTMsCisgICAgOTExLAorICAgIDkyMSwKKyAgICA5MTEsCisgICAgODM3LAorICAgIDgxODIsCisgICAgOTY5LAorICAgIDgzNCwKKyAgICA5MzcsCisgICAgODM0LAorICAgIDgxODMsCisgICAgOTY5LAorICAgIDgzNCwKKyAgICA5NTMsCisgICAgOTM3LAorICAgIDgzNCwKKyAgICA5MjEsCisgICAgOTM3LAorICAgIDgzNCwKKyAgICA4MzcsCisgICAgODE3OSwKKyAgICA5NjksCisgICAgOTUzLAorICAgIDkzNywKKyAgICA5MjEsCisgICAgODE4OCwKKyAgICA2NDI1NiwKKyAgICAxMDIsCisgICAgMTAyLAorICAgIDcwLAorICAgIDcwLAorICAgIDcwLAorICAgIDEwMiwKKyAgICA2NDI1NywKKyAgICAxMDIsCisgICAgMTA1LAorICAgIDcwLAorICAgIDczLAorICAgIDcwLAorICAgIDEwNSwKKyAgICA2NDI1OCwKKyAgICAxMDIsCisgICAgMTA4LAorICAgIDcwLAorICAgIDc2LAorICAgIDcwLAorICAgIDEwOCwKKyAgICA2NDI1OSwKKyAgICAxMDIsCisgICAgMTAyLAorICAgIDEwNSwKKyAgICA3MCwKKyAgICA3MCwKKyAgICA3MywKKyAgICA3MCwKKyAgICAxMDIsCisgICAgMTA1LAorICAgIDY0MjYwLAorICAgIDEwMiwKKyAgICAxMDIsCisgICAgMTA4LAorICAgIDcwLAorICAgIDcwLAorICAgIDc2LAorICAgIDcwLAorICAgIDEwMiwKKyAgICAxMDgsCisgICAgNjQyNjEsCisgICAgMTE1LAorICAgIDExNiwKKyAgICA4MywKKyAgICA4NCwKKyAgICA4MywKKyAgICAxMTYsCisgICAgNjQyNjIsCisgICAgMTE1LAorICAgIDExNiwKKyAgICA4MywKKyAgICA4NCwKKyAgICA4MywKKyAgICAxMTYsCisgICAgNjQyNzUsCisgICAgMTM5NiwKKyAgICAxMzk4LAorICAgIDEzNDgsCisgICAgMTM1MCwKKyAgICAxMzQ4LAorICAgIDEzOTgsCisgICAgNjQyNzYsCisgICAgMTM5NiwKKyAgICAxMzgxLAorICAgIDEzNDgsCisgICAgMTMzMywKKyAgICAxMzQ4LAorICAgIDEzODEsCisgICAgNjQyNzcsCisgICAgMTM5NiwKKyAgICAxMzg3LAorICAgIDEzNDgsCisgICAgMTMzOSwKKyAgICAxMzQ4LAorICAgIDEzODcsCisgICAgNjQyNzgsCisgICAgMTQwNiwKKyAgICAxMzk4LAorICAgIDEzNTgsCisgICAgMTM1MCwKKyAgICAxMzU4LAorICAgIDEzOTgsCisgICAgNjQyNzksCisgICAgMTM5NiwKKyAgICAxMzg5LAorICAgIDEzNDgsCisgICAgMTM0MSwKKyAgICAxMzQ4LAorICAgIDEzODksCiB9OwogCiAvKiB0eXBlIGluZGV4ZXMgKi8KQEAgLTE5NSw3MiArMTAwMyw3MiBAQAogICAgIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzQsIDM1LCAzNiwgMzcsIAogICAgIDM4LCAzOSwgMzQsIDM0LCAzNCwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTIsIAogICAgIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2MywgNjQsIDY0LCA2NCwgNjUsIDY2LCA2NywgNjQsIAotICAgIDY0LCA2NCwgNjQsIDY4LCA2OSwgNjQsIDY0LCA2NCwgNjQsIDY0LCA2NCwgNzAsIDE3LCA3MSwgNzIsIDczLCA3NCwgNzUsIAotICAgIDc2LCA2NCwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDY0LCA2NCwgODQsIDg1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCA4NiwgMzQsIDM0LCAzNCwgMzQsIDM0LCA4NywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDY0LCA2NCwgNjQsIDY4LCA2OSwgNjQsIDY0LCA2NCwgNjQsIDY0LCA2NCwgNzAsIDcxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIAorICAgIDc3LCA2NCwgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDY0LCA2NCwgODUsIDg2LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCA4NywgMzQsIDM0LCAzNCwgMzQsIDM0LCA4OCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODgsIDg5LCA5MCwgOTEsIDM0LCAzNCwgMzQsIDkyLCAzNCwgMzQsIAotICAgIDM0LCA5MywgOTQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgOTUsIDM0LCAzNCwgMzQsIDk2LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgOTcsIDk4LCA5OSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTAwLCAxMDEsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTAyLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDEwMywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMDQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAxMDAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMTAzLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMDUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMDYsIDEwNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMDgsIDEwOSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMTAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDExMSwgMzQsIDM0LCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwgMTIwLCAKLSAgICAxMjEsIDEyMiwgMTIzLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODksIDkwLCA5MSwgOTIsIDM0LCAzNCwgMzQsIDkzLCAzNCwgMzQsIAorICAgIDM0LCA5NCwgOTUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgOTYsIDM0LCAzNCwgMzQsIDk3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgOTgsIDk5LCAxMDAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDEwMSwgMTAyLCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDEwMywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAxMDQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTA1LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMTAxLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDEwNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTA2LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTA3LCAxMDgsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTA5LCAxMTAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTExLCAxMTIsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMTEzLCAzNCwgMzQsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLCAxMjIsIAorICAgIDEyMywgMTI0LCAxMjUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDEyNCwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI2LCAxMjcsIDEyOCwgCi0gICAgMTI5LCAxMzAsIDEzMSwgMTMyLCAzNCwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAKLSAgICAxNywgMTQzLCAxNDQsIDE0NSwgMTQ2LCAxNDcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE0OCwgMTcsIDE0OSwgMTcsIAotICAgIDE1MCwgMTcsIDE1MSwgMTcsIDE1MiwgMTcsIDE3LCAxNywgMTUzLCAxNywgMTcsIDE3LCAxNTQsIDE1NSwgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTU2LCAxNywgMTU3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTU4LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMzQsIDM0LCAzNCwgMzQsIDE1OSwgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE2MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgNjQsIDE2MSwgMTYyLCAxNjMsIDE2NCwgMTcsIDE2NSwgMTcsIDE2NiwgMTY3LCAxNjgsIDE2OSwgMTcwLCAxNzEsIAotICAgIDE3MiwgMTczLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNzQsIDE3NSwgMTc2LCAKLSAgICAxNzcsIDE3OCwgMTcsIDE3OSwgMTgwLCAxODEsIDE4MiwgMTgzLCAxODQsIDE4NSwgMTg2LCA2NSwgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxODcsIDE4OCwgMTg5LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCA4NiwgMTkwLCAzNCwgMTkxLCAKLSAgICAxOTIsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDEyNiwgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI4LCAxMjksIDEzMCwgCisgICAgMTMxLCAxMzIsIDEzMywgMTM0LCAzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAKKyAgICA3MSwgMTQ1LCAxNDYsIDE0NywgMTQ4LCAxNDksIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDE1MCwgNzEsIDE1MSwgMTUyLCAKKyAgICAxNTMsIDcxLCAxNTQsIDcxLCAxNTUsIDcxLCA3MSwgNzEsIDE1NiwgNzEsIDcxLCA3MSwgMTU3LCAxNTgsIDE1OSwgMTYwLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxNjEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE2MiwgNzEsIAorICAgIDE2MywgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE2NCwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDM0LCAzNCwgMzQsIDM0LCAxNjUsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDE2NiwgMTY3LCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDE2OCwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNjQsIDE2OSwgMTcwLCAxNzEsIDE3MiwgNzEsIDE3MywgNzEsIDE3NCwgMTc1LCAxNzYsIDE3NywgMTc4LCAKKyAgICAxNzksIDE4MCwgMTgxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDE4MiwgMTgzLCA3MSwgNzEsIDE4NCwgCisgICAgMTg1LCAxODYsIDE4NywgMTg4LCA3MSwgMTg5LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDY1LCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDE5NywgMTk4LCAKKyAgICAxOTksIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDg3LCAyMDAsIAorICAgIDM0LCAyMDEsIDIwMiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE5MywgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxOTQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMDMsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjA0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE5NSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIwNSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTk2LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjA2LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKQEAgLTI2OCw4NjAgKzEwNzYsODYyIEBACiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAxOTcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMDcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDE5OCwgMzQsIDE5OSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDM0LCAxOTMsIDM0LCAzNCwgMTk5LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAyMDAsIDE3LCAyMDEsIDIwMiwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMjAzLCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDIwMywgCisgICAgMzQsIDM0LCAzNCwgMzQsIDIwOCwgMzQsIDIwOSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDM0LCAyMDMsIDM0LCAzNCwgMjA5LCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCAyMTAsIDcxLCAyMTEsIDIxMiwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMjEzLCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDIxMywgCiB9OwogCi1zdGF0aWMgdW5zaWduZWQgY2hhciBpbmRleDJbXSA9IHsKK3N0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbmRleDJbXSA9IHsKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAyLCAzLCAzLCAzLCAzLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAzLCAzLCAzLCAyLCA0LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNiwgMTYsIDE2LCAxNiwgCi0gICAgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgCi0gICAgMTYsIDE2LCAxNiwgMTYsIDUsIDUsIDUsIDUsIDE3LCA1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDUsIDUsIAorICAgIDEsIDEsIDEsIDEsIDMsIDMsIDMsIDIsIDQsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIAorICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA2LCA1LCA1LCA1LCA1LCA1LCA1LCAxNywgMTcsIDE3LCAxNywgCisgICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCisgICAgMTcsIDE3LCAxNywgMTcsIDUsIDUsIDUsIDYsIDE4LCA2LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKKyAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDUsIDUsIAogICAgIDUsIDUsIDEsIDEsIDEsIDEsIDEsIDEsIDMsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDIsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE5LCA1LCA1LCAKLSAgICAxLCA1LCA1LCA1LCA1LCAyMCwgMjEsIDUsIDIyLCA1LCAxNywgNSwgMjMsIDE5LCA1LCAyNCwgMjQsIDI0LCA1LCAxNiwgMTYsIAotICAgIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIAotICAgIDE2LCAxNiwgMTYsIDUsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxOSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCA1LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI4LCAyOSwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMTksIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAxOSwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDMwLCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAzMSwgMzIsIDMzLCAyNiwgMjcsIDI2LCAyNywgMzQsIDI2LCAKLSAgICAyNywgMzUsIDM1LCAyNiwgMjcsIDE5LCAzNiwgMzcsIDM4LCAyNiwgMjcsIDM1LCAzOSwgNDAsIDQxLCA0MiwgMjYsIDI3LCAKLSAgICA0MywgMTksIDQxLCA0NCwgNDUsIDQ2LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCA0NywgMjYsIDI3LCA0NywgMTksIDE5LCAKLSAgICAyNiwgMjcsIDQ3LCAyNiwgMjcsIDQ4LCA0OCwgMjYsIDI3LCAyNiwgMjcsIDQ5LCAyNiwgMjcsIDE5LCA1MCwgMjYsIDI3LCAKLSAgICAxOSwgNTEsIDUwLCA1MCwgNTAsIDUwLCA1MiwgNTMsIDU0LCA1MiwgNTMsIDU0LCA1MiwgNTMsIDU0LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgNTUsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDE5LCA1MiwgNTMsIDU0LCAKLSAgICAyNiwgMjcsIDU2LCA1NywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDU4LCAxOSwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgNTksIDI2LCAKLSAgICAyNywgNjAsIDYxLCA2MiwgNjIsIDI2LCAyNywgNjMsIDY0LCA2NSwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDY2LCA2NywgNjgsIDY5LCA3MCwgMTksIDcxLCA3MSwgMTksIDcyLCAxOSwgNzMsIDE5LCAxOSwgMTksIDE5LCAKLSAgICA3MSwgMTksIDE5LCA3NCwgMTksIDc1LCAxOSwgMTksIDc2LCA3NywgMTksIDc4LCAxOSwgMTksIDE5LCA3NywgMTksIDc5LCAKLSAgICA4MCwgMTksIDE5LCA4MSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDgyLCAxOSwgMTksIDgzLCAxOSwgMTksIDgzLCAKLSAgICAxOSwgMTksIDE5LCAxOSwgODMsIDg0LCA4NSwgODUsIDg2LCAxOSwgMTksIDE5LCAxOSwgMTksIDg3LCAxOSwgNTAsIDE5LCAKKyAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAyLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA1LCAyMCwgNSwgNSwgCisgICAgMjEsIDUsIDYsIDUsIDUsIDIyLCAyMywgNiwgMjQsIDUsIDI1LCA2LCAyNiwgMjAsIDUsIDI3LCAyNywgMjcsIDUsIDE3LCAKKyAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKKyAgICAxNywgMTcsIDE3LCAxNywgNSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDI4LCAxOSwgMTksIDE5LCAxOSwgMTksIAogICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1MCwgNSwgNTAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCisgICAgNSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDI5LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMiwgMzMsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzQsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzNSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzYsIDM3LCAzOCwgMzAsIDMxLCAzMCwgMzEsIDM5LCAKKyAgICAzMCwgMzEsIDQwLCA0MCwgMzAsIDMxLCAyMCwgNDEsIDQyLCA0MywgMzAsIDMxLCA0MCwgNDQsIDQ1LCA0NiwgNDcsIDMwLCAKKyAgICAzMSwgNDgsIDIwLCA0NiwgNDksIDUwLCA1MSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgNTIsIDMwLCAzMSwgNTIsIDIwLCAKKyAgICAyMCwgMzAsIDMxLCA1MiwgMzAsIDMxLCA1MywgNTMsIDMwLCAzMSwgMzAsIDMxLCA1NCwgMzAsIDMxLCAyMCwgNTUsIDMwLCAKKyAgICAzMSwgMjAsIDU2LCA1NSwgNTUsIDU1LCA1NSwgNTcsIDU4LCA1OSwgNTcsIDU4LCA1OSwgNTcsIDU4LCA1OSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDYwLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCA2MSwgNTcsIDU4LCAKKyAgICA1OSwgMzAsIDMxLCA2MiwgNjMsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCA2NCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDY1LCAKKyAgICAzMCwgMzEsIDY2LCA2NywgNjgsIDY4LCAzMCwgMzEsIDY5LCA3MCwgNzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDIwLCA3NywgNzcsIDIwLCA3OCwgMjAsIDc5LCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgNzcsIDIwLCAyMCwgODAsIDIwLCA4MSwgODIsIDIwLCA4MywgODQsIDIwLCA4NSwgMjAsIDIwLCAyMCwgODQsIDIwLCAKKyAgICA4NiwgODcsIDIwLCAyMCwgODgsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA4OSwgMjAsIDIwLCA5MCwgMjAsIDIwLCAKKyAgICA5MCwgMjAsIDIwLCAyMCwgMjAsIDkwLCA5MSwgOTIsIDkyLCA5MywgMjAsIDIwLCAyMCwgMjAsIDIwLCA5NCwgMjAsIDU1LCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKKyAgICA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTUsIDk1LCA2LCA2LCA2LCA2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCAKKyAgICA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA5NSwgOTUsIAorICAgIDk1LCA5NSwgOTUsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDk2LCA2LCA5NiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgCisgICAgNiwgNiwgNiwgNiwgNiwgNiwgNiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgOTcsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDMwLCAzMSwgMzAsIDMxLCA5NiwgNiwgMzAsIDMxLCAwLCAwLCAKKyAgICA5OCwgNTAsIDUwLCA1MCwgNSwgMCwgMCwgMCwgMCwgMCwgNiwgNiwgOTksIDI1LCAxMDAsIDEwMCwgMTAwLCAwLCAxMDEsIDAsIAorICAgIDEwMiwgMTAyLCAxMDMsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCisgICAgMTcsIDE3LCAxNywgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTA0LCAxMDUsIDEwNSwgMTA1LCAKKyAgICAxMDYsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCisgICAgMTA3LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDgsIDEwOSwgMTA5LCAxMTAsIDExMSwgMTEyLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTQsIDExNSwgMTE2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxMTcsIDExOCwgMTE5LCAyMCwgCisgICAgMTIwLCAxMjEsIDUsIDMwLCAzMSwgMTIyLCAzMCwgMzEsIDIwLCA2NCwgNjQsIDY0LCAxMjMsIDEyMywgMTIzLCAxMjMsIAorICAgIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDE3LCAxNywgMTcsIAogICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCA4OCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMjYsIDI3LCAyNiwgMjcsIDUwLCA1LCAyNiwgMjcsIDAsIDAsIDg5LCAKLSAgICA0NSwgNDUsIDQ1LCA1LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA5MCwgMTcsIDkxLCA5MSwgOTEsIDAsIDkyLCAwLCA5MywgOTMsIAotICAgIDE5LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIAotICAgIDAsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDk0LCA5NSwgOTUsIDk1LCAxOSwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCA5NiwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgOTcsIDk4LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMiwgMTAyLCAxMDMsIAotICAgIDEwNCwgMTA1LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAxMDYsIDEwNywgMTA4LCAxOSwgMTA5LCAxMTAsIDUsIDI2LCAyNywgCi0gICAgMTExLCAyNiwgMjcsIDE5LCA1OCwgNTgsIDU4LCAxMTIsIDExMiwgMTEyLCAxMTIsIDExMiwgMTEyLCAxMTIsIDExMiwgMTEyLCAKLSAgICAxMTIsIDExMiwgMTEyLCAxMTIsIDExMiwgMTEyLCAxMTIsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIAotICAgIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIAotICAgIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICA1LCAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDUsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDExMywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAxMTQsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMCwgMCwgNTAsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAKLSAgICAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgCi0gICAgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIAotICAgIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxOSwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgMTcsIDUsIDE3LCAxNywgNSwgMTcsIDE3LCA1LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNSwgNSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCAwLCAwLCA1LCA1LCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCi0gICAgNSwgNSwgNSwgNSwgNTAsIDUwLCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNTAsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxLCA1LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1MCwgNTAsIDE3LCAxNywgNSwgCi0gICAgMTcsIDE3LCAxNywgMTcsIDUwLCA1MCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNTAsIDUwLCA1MCwgCi0gICAgNSwgNSwgNTAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDEsIDUwLCAxNywgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCA1MCwgNTAsIDUsIDUsIDUsIDUsIDUwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAKLSAgICAxNywgMTcsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1MCwgMTcsIDE3LCAxNywgNTAsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAKKyAgICAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDYsIDYsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDEyNSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxMjYsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMCwgMCwgOTYsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKKyAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCisgICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjksIDAsIDUsIDUsIDAsIDAsIDAsIAorICAgIDAsIDUsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDI1LCA1LCAyNSwgMjUsIDUsIDI1LCAyNSwgCisgICAgNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDUsIDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIAorICAgIDIxLCAyMSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA1LCAwLCAwLCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDk2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNywgOCwgCisgICAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjEsIDUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDk2LCA5NiwgMjUsIDI1LCA1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIAorICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNSwgNSwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDAsIDIxLCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDk2LCA5NiwgNSwgNSwgNSwgNSwgOTYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgOTYsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDk2LCAyNSwgMjUsIDI1LCA5NiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAKKyAgICAyNSwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCA1NSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDUsIDUsIAorICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA5NiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMCwgCisgICAgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCisgICAgNTUsIDU1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMjUsIDAsIDE4LCAKKyAgICAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAwLCAwLCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAyNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjUsIDI1LCA1NSwgNTUsIDU1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMjUsIDI1LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgCisgICAgMTgsIDAsIDE4LCAxOCwgMjUsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAyNSwgMTgsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAKKyAgICAxOCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIAorICAgIDEzLCAxNCwgMTUsIDE2LCA1LCA1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAorICAgIDE4LCAxOCwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMTgsIDE4LCAxOCwgMCwgMTgsIDE4LCAxOCwgMjUsIDAsIDAsIDU1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE4LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDAsIDI1LCAyNSwgMjUsIDAsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgMCwgMCwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMjUsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMCwgMjUsIDE4LCAxOCwgMCwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIDE4LCAxOCwgMTgsIDAsIAorICAgIDE4LCAxOCwgMTgsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMTgsIDE4LCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDE4LCAyNSwgCisgICAgMjUsIDI1LCAwLCAyNSwgMCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMTgsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMTMwLCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgOTYsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIAorICAgIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAKKyAgICAxMzAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgOTYsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKKyAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNywgCisgICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICA1LCAyNSwgNSwgMjUsIDUsIDI1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgCisgICAgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAKKyAgICAyNSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDU1LCAxOCwgMTgsIDE4LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDU1LCAKKyAgICAxOCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE4LCAxOCwgMTgsIDI1LCA1LCA1LCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA5NiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1LCA1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAKKyAgICAyNSwgMjUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgOTYsIDUsIDUsIDUsIDUsIDU1LCAyNSwgMCwgMCwgNywgCisgICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAyNSwgMjUsIDI1LCAyLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA5NiwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDI1LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIAorICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDEzMiwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDAsIDAsIDUsIDUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDI1LCAxOCwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMCwgMCwgMjUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAKKyAgICAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgOTYsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAxOCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKKyAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNywgOCwgOSwgCisgICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgCisgICAgMjUsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAKKyAgICA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIAorICAgIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgNSwgNSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDUwLCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1MCwgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDUsIDUsIDYsIAotICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMTcsIDE3LCAxNywgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICAwLCAwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIAotICAgIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAxNywgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAKLSAgICAxNywgMTcsIDAsIDAsIDE3LCAxNywgMTcsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMCwgMCwgMCwgMCwgNTAsIAotICAgIDUwLCAwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDUwLCAKLSAgICA1MCwgNSwgNSwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgMCwgNTAsIDUwLCAwLCA1MCwgNTAsIDAsIDAsIDE3LCAwLCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDE3LCAxNywgMCwgMCwgMTcsIDE3LCAxNywgMCwgMCwgMCwgMTcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNiwgNywgOCwgOSwgMTAsIAotICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTcsIDE3LCA1MCwgNTAsIDUwLCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTcsIDE3LCAxNywgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgMCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgMCwgMCwgMTcsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDE3LCAxNywgMTcsIDAsIAotICAgIDE3LCAxNywgMTcsIDAsIDAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgCi0gICAgNTAsIDE3LCAxNywgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMCwgNSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgMCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDE3LCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDAsIDAsIDE3LCAxNywgMCwgMCwgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAKLSAgICAwLCAwLCAwLCAwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgCi0gICAgMTMsIDE0LCAxNSwgNSwgNTAsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE3LCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDAsIDAsIDAsIDUwLCA1MCwgMCwgNTAsIDAsIDUwLCA1MCwgMCwgMCwgMCwgNTAsIDUwLCAwLCAwLCAwLCA1MCwgNTAsIAotICAgIDUwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDAsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCA1MCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYsIDcsIDgsIDksIAotICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDI0LCAyNCwgMjQsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE3LCAxNywgMTcsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgMCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAwLCAwLCAwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDE3LCAxNywgMTcsIDAsIAotICAgIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTAsIDUwLCAxNywgMTcsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCA1LCAwLCAwLCAxNywgMTcsIDAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAxNywgNTAsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAwLCAxNywgMTcsIDE3LCAwLCAxNywgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgMCwgNTAsIDUwLCAxNywgMTcsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTcsIDE3LCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAxNywgMTcsIDE3LCAwLCAxNywgCi0gICAgMTcsIDE3LCAxNywgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgCi0gICAgNTAsIDE3LCAxNywgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMjQsIDI0LCAyNCwgMjQsIDI0LCAKLSAgICAyNCwgMCwgMCwgMCwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMTcsIDE3LCAwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgMCwgMCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDE3LCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAwLCAxNywgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCA1MCwgMTE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNSwgNSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCAwLCA1MCwgMCwgMCwgNTAsIDUwLCAwLCA1MCwgMCwgMCwgCi0gICAgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgNTAsIDAsIDUwLCAwLCAwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCAxNywgNTAsIDExNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMTcsIDE3LCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgCi0gICAgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMCwgCi0gICAgMCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA3LCA4LCAKLSAgICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgNSwgMTcsIAotICAgIDUsIDE3LCA1LCAxNywgNSwgNSwgNSwgNSwgMTcsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIAotICAgIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgNSwgMTcsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDE4LCAxOCwgMjUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKKyAgICA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKKyAgICA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKKyAgICA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTUsIDE0MiwgMjAsIDIwLCAyMCwgMTQzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAorICAgIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAorICAgIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTQ0LCAKKyAgICAxNDUsIDE0NiwgMTQ3LCAxNDgsIDE0OSwgMjAsIDIwLCAxNTAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxNTEsIDE1MSwgCisgICAgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIAorICAgIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDAsIDAsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDAsIDAsIAorICAgIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAKKyAgICAxNTIsIDE1MiwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MiwgMTUyLCAxNTIsIDE1MiwgCisgICAgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAwLCAwLCAxNTIsIDE1MiwgMTUyLCAKKyAgICAxNTIsIDE1MiwgMTUyLCAwLCAwLCAxNTMsIDE1MSwgMTU0LCAxNTEsIDE1NSwgMTUxLCAxNTYsIDE1MSwgMCwgMTUyLCAwLCAKKyAgICAxNTIsIDAsIDE1MiwgMCwgMTUyLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUyLCAxNTIsIAorICAgIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1NywgMTU3LCAxNTgsIDE1OCwgMTU4LCAxNTgsIDE1OSwgMTU5LCAKKyAgICAxNjAsIDE2MCwgMTYxLCAxNjEsIDE2MiwgMTYyLCAwLCAwLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjksIAorICAgIDE3MCwgMTcxLCAxNzIsIDE3MywgMTc0LCAxNzUsIDE3NiwgMTc3LCAxNzgsIDE3OSwgMTgwLCAxODEsIDE4MiwgMTgzLCAKKyAgICAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwgMTg5LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5NywgCisgICAgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDIwOSwgMjEwLCAxNTEsIAorICAgIDE1MSwgMjExLCAyMTIsIDIxMywgMCwgMjE0LCAyMTUsIDE1MiwgMTUyLCAyMTYsIDIxNiwgMjE3LCA2LCAyMTgsIDYsIDYsIAorICAgIDYsIDIxOSwgMjIwLCAyMjEsIDAsIDIyMiwgMjIzLCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNSwgNiwgNiwgNiwgMTUxLCAKKyAgICAxNTEsIDIyNiwgMjI3LCAwLCAwLCAyMjgsIDIyOSwgMTUyLCAxNTIsIDIzMCwgMjMwLCAwLCA2LCA2LCA2LCAxNTEsIDE1MSwgCisgICAgMjMxLCAyMzIsIDIzMywgMTE5LCAyMzQsIDIzNSwgMTUyLCAxNTIsIDIzNiwgMjM2LCAxMjIsIDYsIDYsIDYsIDAsIDAsIAorICAgIDIzNywgMjM4LCAyMzksIDAsIDI0MCwgMjQxLCAyNDIsIDI0MiwgMjQzLCAyNDMsIDI0NCwgNiwgNiwgMCwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjEsIDIxLCAyMSwgMjEsIDIxLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA2LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA1LCA1LCA2LCAzLCAzLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDIsIDIxLCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjQ1LCA5NSwgMCwgMCwgCisgICAgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgNSwgNSwgNSwgNSwgNSwgOTUsIDI0NSwgMjYsIDIyLCAyMywgMjQ2LCAKKyAgICAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgNSwgNSwgNSwgNSwgNSwgMCwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAorICAgIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCi0gICAgMTQsIDE1LCA1LCA1LCA1LCA1LCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDE3LCAxNywgMTcsIDUwLCAxNywgMTcsIDE3LCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUwLCAxNywgNiwgNywgOCwgCi0gICAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTcsIDE3LCAxNywgMTcsIDUsIDUsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNSwgNTAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCAKLSAgICAwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAxNywgMTcsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAxMTksIDEyMCwgMTIxLCAxMjIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAKLSAgICAyNCwgMjQsIDI0LCAyNCwgMjQsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgMCwgMCwgMCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNSwgNSwgNSwgMTI4LCAxMjgsIDEyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCA1LCA1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCAwLCAxNywgMTcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxLCAxLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCA1LCA1LCA1LCA1MCwgNSwgNSwgNSwgNSwgNTAsIDE3LCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAKLSAgICAxMywgMTQsIDE1LCAwLCAwLCAwLCAwLCAwLCAwLCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDE3LCAxNywgMiwgMCwgNiwgNywgCi0gICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMTcsIDUwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCA1LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAKLSAgICAxMywgMTQsIDE1LCAxMTksIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDE3LCA2LCA3LCA4LCA5LCAxMCwgMTEsIAotICAgIDEyLCAxMywgMTQsIDE1LCAwLCAwLCAwLCAwLCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1MCwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKLSAgICAxNCwgMTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDE3LCAxNywgMTcsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCA1MCwgNTAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDYsIDcsIDgsIDksIAotICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDUsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDUwLCA1MCwgNTAsIDUwLCAxNywgNTAsIDUwLCA1MCwgNTAsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA1MCwgMTI5LCAKLSAgICAxOSwgMTksIDE5LCAxMzAsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAxOSwgMTksIDE5LCAxOSwgMTksIDEzMSwgMTksIDE5LCAxMzIsIAotICAgIDE5LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTM0LCAKLSAgICAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDAsIDAsIAotICAgIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDAsIDAsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgCi0gICAgMTMzLCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIAotICAgIDEzMywgMTMzLCAxMzMsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzMsIDEzMywgMTMzLCAKLSAgICAxMzMsIDEzMywgMTMzLCAwLCAwLCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAwLCAwLCAxOSwgMTMzLCAxOSwgCi0gICAgMTMzLCAxOSwgMTMzLCAxOSwgMTMzLCAwLCAxMzQsIDAsIDEzNCwgMCwgMTM0LCAwLCAxMzQsIDEzMywgMTMzLCAxMzMsIAotICAgIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM1LCAKLSAgICAxMzUsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM3LCAxMzcsIDEzOCwgMTM4LCAxMzksIDEzOSwgMTQwLCAxNDAsIDAsIDAsIAotICAgIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDEzMywgMTMzLCAxOSwgMTQyLCAxOSwgMCwgMTksIDE5LCAxMzQsIDEzNCwgCi0gICAgMTQzLCAxNDMsIDE0NCwgNSwgMTQ1LCA1LCA1LCA1LCAxOSwgMTQyLCAxOSwgMCwgMTksIDE5LCAxNDYsIDE0NiwgMTQ2LCAKLSAgICAxNDYsIDE0NCwgNSwgNSwgNSwgMTMzLCAxMzMsIDE5LCAxOSwgMCwgMCwgMTksIDE5LCAxMzQsIDEzNCwgMTQ3LCAxNDcsIDAsIAotICAgIDUsIDUsIDUsIDEzMywgMTMzLCAxOSwgMTksIDE5LCAxMDgsIDE5LCAxOSwgMTM0LCAxMzQsIDE0OCwgMTQ4LCAxMTEsIDUsIAotICAgIDUsIDUsIDAsIDAsIDE5LCAxNDIsIDE5LCAwLCAxOSwgMTksIDE0OSwgMTQ5LCAxNTAsIDE1MCwgMTQ0LCA1LCA1LCAwLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxLCAxLCAxLCAxLCAxLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAzLCAzLCAxLCAxLCAxLCAxLCAxLCAyLCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNywgMTcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxNTEsIDUwLCAwLCAwLCAxNTIsIDE1MywgCi0gICAgMTU0LCAxNTUsIDE1NiwgMTU3LCA1LCA1LCA1LCA1LCA1LCA1MCwgMTUxLCAyMywgMjAsIDIxLCAxNTIsIDE1MywgMTU0LCAKLSAgICAxNTUsIDE1NiwgMTU3LCA1LCA1LCA1LCA1LCA1LCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDUsIDUsIDUsIDUsIDE3LCA1LCA1LCA1LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAxMDIsIDUsIDUsIDUsIDUsIDEwMiwgCi0gICAgNSwgNSwgMTksIDEwMiwgMTAyLCAxMDIsIDE5LCAxOSwgMTAyLCAxMDIsIDEwMiwgMTksIDUsIDEwMiwgNSwgNSwgMTU4LCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgNSwgNSwgNSwgNSwgNSwgNSwgMTAyLCA1LCAxNTksIDUsIDEwMiwgNSwgMTYwLCAKLSAgICAxNjEsIDEwMiwgMTAyLCAxNTgsIDE5LCAxMDIsIDEwMiwgMTYyLCAxMDIsIDE5LCA1MCwgNTAsIDUwLCA1MCwgMTksIDUsIDUsIAotICAgIDE5LCAxOSwgMTAyLCAxMDIsIDUsIDUsIDUsIDUsIDUsIDEwMiwgMTksIDE5LCAxOSwgMTksIDUsIDUsIDUsIDUsIDE2MywgNSwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDE2NCwgMTY0LCAKLSAgICAxNjQsIDE2NCwgMTY0LCAxNjQsIDE2NCwgMTY0LCAxNjQsIDE2NCwgMTY0LCAxNjQsIDE2NCwgMTY0LCAxNjQsIDE2NCwgCi0gICAgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjUsIAotICAgIDE2NSwgMTY1LCAxMjgsIDEyOCwgMTI4LCAyNiwgMjcsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMjQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA2LCA2LCA2LCA2LCAyNSwgNiwgNiwgNiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMTEzLCA1LCA1LCAKKyAgICA1LCA1LCAxMTMsIDUsIDUsIDIwLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDIwLCA1LCAxMTMsIDUsIAorICAgIDUsIDI1MiwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDUsIDUsIDUsIDUsIDUsIDUsIDExMywgNSwgMjUzLCA1LCAxMTMsIAorICAgIDUsIDI1NCwgMjU1LCAxMTMsIDExMywgMjUyLCAyMCwgMTEzLCAxMTMsIDI1NiwgMTEzLCAyMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDIwLCA1LCA1LCAyMCwgMjAsIDExMywgMTEzLCA1LCA1LCA1LCA1LCA1LCAxMTMsIDIwLCAyMCwgMjAsIDIwLCA1LCA1LCA1LCAKKyAgICA1LCAyNTcsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgCisgICAgMjU4LCAyNTgsIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIAorICAgIDI1OSwgMjU5LCAyNTksIDI1OSwgMTQxLCAxNDEsIDE0MSwgMzAsIDMxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDI3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKQEAgLTExMzUsNjMyICsxOTQ1LDY4NCBAQAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzLCAyMCwgMjEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAxNTcsIDI0LCAKLSAgICAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjMsIDIwLCAyMSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAKLSAgICAxNTYsIDE1NywgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyMywgMjAsIDIxLCAxNTIsIAotICAgIDE1MywgMTU0LCAxNTUsIDE1NiwgMTU3LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAKLSAgICAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjcsIDE2NywgCi0gICAgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIAotICAgIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTUxLCAyNCwgMjQsIDI0LCAyNCwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjMsIDIwLCAyMSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxNTYsIDE1NywgMjQsIAotICAgIDE1MSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIAorICAgIDI1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgCisgICAgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAyMiwgCisgICAgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAKKyAgICAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MSwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNDUsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNywgCisgICAgMjQ1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyMywgCi0gICAgMjAsIDIxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTU3LCAyNCwgMjMsIDIwLCAyMSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAKLSAgICAxNTYsIDE1NywgMjQsIDIzLCAyMCwgMjEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAxNTcsIDI0LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNiwgCisgICAgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNywgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAKKyAgICAyNTAsIDI1MSwgMjcsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDI3LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCAwLCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMCwgCi0gICAgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIAotICAgIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAKLSAgICAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgCi0gICAgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDAsIDI2LCAyNywgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDE3MywgMTc0LCAxNzUsIDE3NiwgMTksIDI2LCAyNywgMTksIDI2LCAyNywgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgNTAsIDE3NywgMTc3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMTksIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDI2LCAyNywgMjYsIDI3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAyNCwgCi0gICAgNSwgNSwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAKLSAgICAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgCi0gICAgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgODksIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAotICAgIDAsIDAsIDIsIDUsIDUsIDUsIDUsIDUwLCA1MCwgMTI4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDUwLCA1MCwgNSwgNSwgNSwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAwLCAwLCAxNywgMTcsIDUsIDUsIDUwLCA1MCwgNTAsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1LCA1LCAyNCwgMjQsIDI0LCAyNCwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIAotICAgIDI0LCAyNCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjQsIDI0LCAyNCwgMjQsIDI0LCAKLSAgICAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTc5LCA1MCwgNTAsIDE3OSwgCi0gICAgNTAsIDUwLCA1MCwgMTc5LCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDE3OSwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgCi0gICAgNTAsIDE3OSwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCAxNzksIAotICAgIDE3OSwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgMTc5LCAxNzksIDE3OSwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDE3OSwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCAxNzksIDE3OSwgNTAsIDE3OSwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDAsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAorICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKKyAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCisgICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAwLCAzMCwgMzEsIDI2MiwgMjYzLCAKKyAgICAyNjQsIDI2NSwgMjY2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAyNjcsIDI2OCwgMjY5LCAyNzAsIDIwLCAzMCwgMzEsIAorICAgIDIwLCAzMCwgMzEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTUsIDk1LCAyNzEsIDI3MSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDIwLCA1LCA1LCA1LCA1LCA1LCA1LCAzMCwgMzEsIDMwLCAzMSwgMjUsIDI1LCAyNSwgMzAsIDMxLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAyNywgNSwgNSwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKKyAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCisgICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAorICAgIDI3MiwgMjcyLCAyNzIsIDAsIDI3MiwgMCwgMCwgMCwgMCwgMCwgMjcyLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDk2LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjczLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKLSAgICA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCA1MCwgMTcsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE3LCAxNywgNSwgNTAsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDE3LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAxOSwgMTksIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgNTAsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMjYsIDI3LCAyNiwgMjcsIDE4MCwgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDUwLCA1LCA1LCAyNiwgMjcsIDE4MSwgMTksIDAsIDI2LCAyNywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDUwLCA1MCwgCi0gICAgNTAsIDE3LCA1MCwgNTAsIDUwLCA1MCwgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCAKLSAgICA1LCA1LCAwLCAwLCAwLCAwLCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgNSwgCi0gICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgCi0gICAgMTMsIDE0LCAxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgNSwgNTAsIDAsIDAsIDAsIAotICAgIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1MCwgCi0gICAgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDE3LCAxNywgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMCwgMCwgNSwgNSwgCi0gICAgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCA1LCA1MCwgMTcsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCA1MCwgMTcsIDE3LCAxNywgNTAsIDUwLCAxNywgMTcsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMTcsIDE3LCA1MCwgMTcsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCAxNywgMTcsIDAsIDAsIAotICAgIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMTksIDE5LCAxOSwgMTksIDAsIDAsIDAsIDAsIAotICAgIDAsIDUwLCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCAwLCA1MCwgNTAsIAotICAgIDAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDg5LCA4OSwgODksIDg5LCA4OSwgODksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgODksIDg5LCA1LCA1LCAwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDE3LCAxNywgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDE3LCAKLSAgICAxNywgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgODksIDUwLCA4OSwgNTAsIDg5LCAwLCA4OSwgNTAsIDg5LCA1MCwgODksIDUwLCAKLSAgICA4OSwgNTAsIDg5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAwLCAwLCAxLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCAKLSAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNiwgMTYsIDE2LCAxNiwgMTYsIAotICAgIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIAotICAgIDE2LCAxNiwgMTYsIDUsIDUsIDUsIDUsIDE3LCA1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTE3LCAxMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxLCAxLCAxLCA1LCA1LCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgMCwgMCwgCi0gICAgMCwgMCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAKLSAgICAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAKLSAgICAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDI0LCAyNCwgMjQsIDI0LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMiwgNSwgNSwgNSwgNSwgOTYsIDU1LCAxNDEsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE0MSwgCisgICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDUsIDk2LCAKKyAgICA5NiwgOTYsIDk2LCA5NiwgNSwgNSwgMTQxLCAxNDEsIDE0MSwgOTYsIDU1LCA1LCA1LCA1LCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgNiwgNiwgOTYsIDk2LCA1NSwgCisgICAgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNSwgOTYsIDk2LCA5NiwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNywgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNzQsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAyNzQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjc0LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgMjc0LCA1NSwgMjc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDI3NCwgMjc0LCAyNzQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDI3NCwgMjc0LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMjQsIDI0LCAyNCwgMjQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTI4LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDEyOCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgOTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDk2LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDU1LCAyNSwgNiwgNiwgNiwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDUsIDk2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCAKKyAgICA2LCA2LCA2LCA2LCA2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA2LCA2LCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDIwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCA5NSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMjc1LCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgOTYsIDYsIDYsIDMwLCAzMSwgMjc2LCAyMCwgMCwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAyNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIAotICAgIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1LCA5NSwgMjAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgCisgICAgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgCisgICAgMTgsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIAorICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAKKyAgICAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgMCwgOTYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgCi0gICAgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIAotICAgIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAKLSAgICAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgCi0gICAgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIAotICAgIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAKLSAgICAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAKLSAgICAxMiwgMTMsIDE0LCAxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgMCwgMCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCAwLCAwLCAwLCAKLSAgICA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAwLCAwLCAwLCA1LCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAxNywgMTcsIDE3LCAwLCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgCi0gICAgMTcsIDE3LCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMTcsIDIzLCAyMCwgMjEsIDE1MiwgMjQsIDI0LCAyNCwgCi0gICAgMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMjQsIDI0LCA1LCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAKKyAgICAyNSwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCisgICAgMTYsIDAsIDAsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA5NiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNTUsIDE4LCAwLCAwLCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgCisgICAgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgNTUsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA5NiwgNSwgNSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDUsIDUsIDU1LCA5NiwgOTYsIAorICAgIDE4LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIAorICAgIDE4LCAxOCwgMjUsIDE4LCAxOCwgNSwgMTgsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCisgICAgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjc0LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyMywgMjAsIDIxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTU3LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIAotICAgIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMCwgMTcsIDE3LCAxNywgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAwLCAwLCAwLCAwLCAyMywgMjAsIDIxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTU3LCAyNCwgMjQsIDI0LCAyNCwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgMSwgNSwgCi0gICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjc4LCAyNzksIDI4MCwgMjgxLCAyODIsIDI4MywgMjg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyODUsIDI4NiwgMjg3LCAyODgsIDI4OSwgMCwgMCwgMCwgMCwgMCwgNTUsIDI1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMjkwLCAyOTAsIDI5MCwgMjkwLCAyOTAsIDI5MCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxNTgsIDE1OCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxNTgsIDE1OCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDI5MCwgMjkwLCA1LCA1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDE4LCAxOCwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCAKKyAgICAxOCwgNSwgNSwgNiwgMCwgNSwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjkwLCA1NSwgMjkwLCA1NSwgMjkwLCAwLCAyOTAsIDU1LCAyOTAsIDU1LCAKKyAgICAyOTAsIDU1LCAyOTAsIDU1LCAyOTAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDIxLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA2LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCA1LCA2LCAxOCwgNiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCisgICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCisgICAgMTksIDE5LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgOTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI5MSwgMjkxLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgNSwgNSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCisgICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMjcsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTQxLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIAorICAgIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAKKyAgICAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTMsIDI5MywgCisgICAgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIAorICAgIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAKKyAgICAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDUsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDI1LCAyNSwgMjUsIDAsIDI1LCAKKyAgICAyNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNSwgCisgICAgMjYsIDIyLCAyMywgMjQ2LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAyNywgMjcsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMCwgMTgsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAKKyAgICAyNDksIDI1MCwgMjUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMTgsIDE4LCAyNSwgMjUsIDUsIDUsIDIxLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCisgICAgMTYsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCisgICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMjUyLCAyNTIsIDE0MSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCisgICAgMTQxLCAxNDEsIDE0MSwgMjUyLCAyNTIsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMTc3NSwyNzIgKzI2MzcsMjg2IEBACiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICA1LCA1LCA1LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDUsIDUsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNywgMTcsIAotICAgIDE3LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAKKyAgICA1LCA1LCA1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAxNywgMTcsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0LCAyNCwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMCwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTAyLCAwLCAxMDIsIDEwMiwgMCwgMCwgMTAyLCAwLCAwLCAxMDIsIDEwMiwgMCwgMCwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAwLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTksIDE5LCAKLSAgICAxOSwgMTksIDAsIDE5LCAwLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMCwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIDEwMiwgMCwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAwLCAwLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMCwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAwLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDEwMiwgMTAyLCAwLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDAsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAwLCAxMDIsIDAsIDAsIDAsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMCwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDAsIDAsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgNSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDUsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgNSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDUsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgNSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDUsIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgNSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDUsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgNSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDUsIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDEwMiwgMTksIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDYsIDcsIAotICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDYsIDcsIAotICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MSwgMTUxLCAyMywgMjAsIDIxLCAxNTIsIDE1MywgCi0gICAgMTU0LCAxNTUsIDE1NiwgMTU3LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDAsIDExMywgMTEzLCAwLCAwLCAxMTMsIDAsIDAsIAorICAgIDExMywgMTEzLCAwLCAwLCAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMCwgMjAsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAwLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDAsIDAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDAsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDExMywgMCwgMCwgMCwgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMCwgMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCA1LCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNSwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCA1LCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAyMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKKyAgICAxNSwgMTYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAorICAgIDE1LCAxNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCisgICAgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgNTUsIDAsIDU1LCAwLCAKKyAgICA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIAorICAgIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDUsIDI0NSwgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAKKyAgICAyNTAsIDI1MSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgCisgICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCiAgICAgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgMCwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgCi0gICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDAsIDUsIDAsIDUsIDAsIDUsIDAsIDUsIAotICAgIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMCwgMCwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMCwgMCwgCiB9OwogCiAvKiBSZXR1cm5zIHRoZSBudW1lcmljIHZhbHVlIGFzIGRvdWJsZSBmb3IgVW5pY29kZSBjaGFyYWN0ZXJzCkBAIC0yMTAwLDYgKzI5NzYsMTAgQEAKICAgICBjYXNlIDB4MTAxOEE6CiAgICAgY2FzZSAweDEwNEEwOgogICAgIGNhc2UgMHgxMTA2NjoKKyAgICBjYXNlIDB4MTEwRjA6CisgICAgY2FzZSAweDExMTM2OgorICAgIGNhc2UgMHgxMTFEMDoKKyAgICBjYXNlIDB4MTE2QzA6CiAgICAgY2FzZSAweDFEN0NFOgogICAgIGNhc2UgMHgxRDdEODoKICAgICBjYXNlIDB4MUQ3RTI6CkBAIC0yMTg3LDYgKzMwNjcsMTAgQEAKICAgICBjYXNlIDB4MTBFNjA6CiAgICAgY2FzZSAweDExMDUyOgogICAgIGNhc2UgMHgxMTA2NzoKKyAgICBjYXNlIDB4MTEwRjE6CisgICAgY2FzZSAweDExMTM3OgorICAgIGNhc2UgMHgxMTFEMToKKyAgICBjYXNlIDB4MTE2QzE6CiAgICAgY2FzZSAweDEyNDE1OgogICAgIGNhc2UgMHgxMjQxRToKICAgICBjYXNlIDB4MTI0MkM6CkBAIC0yMjYzLDYgKzMxNDcsNyBAQAogICAgIGNhc2UgMHgyNzkzOgogICAgIGNhc2UgMHgzMDM4OgogICAgIGNhc2UgMHgzMjI5OgorICAgIGNhc2UgMHgzMjQ4OgogICAgIGNhc2UgMHgzMjg5OgogICAgIGNhc2UgMHg0RUMwOgogICAgIGNhc2UgMHg1MzQxOgpAQCAtMjQ4Myw2ICszMzY4LDEwIEBACiAgICAgY2FzZSAweDEwRTYxOgogICAgIGNhc2UgMHgxMTA1MzoKICAgICBjYXNlIDB4MTEwNjg6CisgICAgY2FzZSAweDExMEYyOgorICAgIGNhc2UgMHgxMTEzODoKKyAgICBjYXNlIDB4MTExRDI6CisgICAgY2FzZSAweDExNkMyOgogICAgIGNhc2UgMHgxMjQwMDoKICAgICBjYXNlIDB4MTI0MTY6CiAgICAgY2FzZSAweDEyNDFGOgpAQCAtMjUxNSw2ICszNDA0LDcgQEAKICAgICBjYXNlIDB4MjQ5QjoKICAgICBjYXNlIDB4MjRGNDoKICAgICBjYXNlIDB4MzAzOToKKyAgICBjYXNlIDB4MzI0OToKICAgICBjYXNlIDB4NTM0NDoKICAgICBjYXNlIDB4NUVGRjoKICAgICBjYXNlIDB4MTAxMTE6CkBAIC0yNjI2LDYgKzM1MTYsMTAgQEAKICAgICBjYXNlIDB4MTBFNjI6CiAgICAgY2FzZSAweDExMDU0OgogICAgIGNhc2UgMHgxMTA2OToKKyAgICBjYXNlIDB4MTEwRjM6CisgICAgY2FzZSAweDExMTM5OgorICAgIGNhc2UgMHgxMTFEMzoKKyAgICBjYXNlIDB4MTE2QzM6CiAgICAgY2FzZSAweDEyNDAxOgogICAgIGNhc2UgMHgxMjQwODoKICAgICBjYXNlIDB4MTI0MTc6CkBAIC0yNjcxLDYgKzM1NjUsNyBAQAogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzguMDsKICAgICBjYXNlIDB4MTM3NDoKICAgICBjYXNlIDB4MzAzQToKKyAgICBjYXNlIDB4MzI0QToKICAgICBjYXNlIDB4MzI1QToKICAgICBjYXNlIDB4NTM0NToKICAgICBjYXNlIDB4MTAxMTI6CkBAIC0yNzcwLDYgKzM2NjUsMTAgQEAKICAgICBjYXNlIDB4MTBFNjM6CiAgICAgY2FzZSAweDExMDU1OgogICAgIGNhc2UgMHgxMTA2QToKKyAgICBjYXNlIDB4MTEwRjQ6CisgICAgY2FzZSAweDExMTNBOgorICAgIGNhc2UgMHgxMTFENDoKKyAgICBjYXNlIDB4MTE2QzQ6CiAgICAgY2FzZSAweDEyNDAyOgogICAgIGNhc2UgMHgxMjQwOToKICAgICBjYXNlIDB4MTI0MEY6CkBAIC0yNzk5LDYgKzM2OTgsNyBAQAogICAgIGNhc2UgMHgyMTU4OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNC4wLzUuMDsKICAgICBjYXNlIDB4MTM3NToKKyAgICBjYXNlIDB4MzI0QjoKICAgICBjYXNlIDB4MzJCNToKICAgICBjYXNlIDB4NTM0QzoKICAgICBjYXNlIDB4MTAxMTM6CkBAIC0yOTAwLDYgKzM4MDAsMTAgQEAKICAgICBjYXNlIDB4MTBFNjQ6CiAgICAgY2FzZSAweDExMDU2OgogICAgIGNhc2UgMHgxMTA2QjoKKyAgICBjYXNlIDB4MTEwRjU6CisgICAgY2FzZSAweDExMTNCOgorICAgIGNhc2UgMHgxMTFENToKKyAgICBjYXNlIDB4MTE2QzU6CiAgICAgY2FzZSAweDEyNDAzOgogICAgIGNhc2UgMHgxMjQwQToKICAgICBjYXNlIDB4MTI0MTA6CkBAIC0yOTMxLDYgKzM4MzUsNyBAQAogICAgIGNhc2UgMHgyMTZDOgogICAgIGNhc2UgMHgyMTdDOgogICAgIGNhc2UgMHgyMTg2OgorICAgIGNhc2UgMHgzMjRDOgogICAgIGNhc2UgMHgzMkJGOgogICAgIGNhc2UgMHgxMDExNDoKICAgICBjYXNlIDB4MTAxNDQ6CkBAIC0zMDM0LDYgKzM5MzksMTAgQEAKICAgICBjYXNlIDB4MTBFNjU6CiAgICAgY2FzZSAweDExMDU3OgogICAgIGNhc2UgMHgxMTA2QzoKKyAgICBjYXNlIDB4MTEwRjY6CisgICAgY2FzZSAweDExMTNDOgorICAgIGNhc2UgMHgxMTFENjoKKyAgICBjYXNlIDB4MTE2QzY6CiAgICAgY2FzZSAweDEyNDA0OgogICAgIGNhc2UgMHgxMjQwQjoKICAgICBjYXNlIDB4MTI0MTE6CkBAIC0zMDUxLDYgKzM5NjAsNyBAQAogICAgIGNhc2UgMHgyMEFFQToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDYuMDsKICAgICBjYXNlIDB4MTM3NzoKKyAgICBjYXNlIDB4MzI0RDoKICAgICBjYXNlIDB4MTAxMTU6CiAgICAgY2FzZSAweDEwRTZFOgogICAgIGNhc2UgMHgxMTA2MDoKQEAgLTMxMjQsNiArNDAzNCwxMCBAQAogICAgIGNhc2UgMHgxMEU2NjoKICAgICBjYXNlIDB4MTEwNTg6CiAgICAgY2FzZSAweDExMDZEOgorICAgIGNhc2UgMHgxMTBGNzoKKyAgICBjYXNlIDB4MTExM0Q6CisgICAgY2FzZSAweDExMUQ3OgorICAgIGNhc2UgMHgxMTZDNzoKICAgICBjYXNlIDB4MTI0MDU6CiAgICAgY2FzZSAweDEyNDBDOgogICAgIGNhc2UgMHgxMjQxMjoKQEAgLTMxNDYsNiArNDA2MCw3IEBACiAgICAgY2FzZSAweDIxNUU6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA3LjAvOC4wOwogICAgIGNhc2UgMHgxMzc4OgorICAgIGNhc2UgMHgzMjRFOgogICAgIGNhc2UgMHgxMDExNjoKICAgICBjYXNlIDB4MTBFNkY6CiAgICAgY2FzZSAweDExMDYxOgpAQCAtMzIxNyw2ICs0MTMyLDEwIEBACiAgICAgY2FzZSAweDEwRTY3OgogICAgIGNhc2UgMHgxMTA1OToKICAgICBjYXNlIDB4MTEwNkU6CisgICAgY2FzZSAweDExMEY4OgorICAgIGNhc2UgMHgxMTEzRToKKyAgICBjYXNlIDB4MTExRDg6CisgICAgY2FzZSAweDExNkM4OgogICAgIGNhc2UgMHgxMjQwNjoKICAgICBjYXNlIDB4MTI0MEQ6CiAgICAgY2FzZSAweDEyNDEzOgpAQCAtMzIzMyw2ICs0MTUyLDcgQEAKICAgICBjYXNlIDB4MUYxMDk6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA4LjA7CiAgICAgY2FzZSAweDEzNzk6CisgICAgY2FzZSAweDMyNEY6CiAgICAgY2FzZSAweDEwMTE3OgogICAgIGNhc2UgMHgxMEU3MDoKICAgICBjYXNlIDB4MTEwNjI6CkBAIC0zMzA1LDYgKzQyMjUsMTAgQEAKICAgICBjYXNlIDB4MTBFNjg6CiAgICAgY2FzZSAweDExMDVBOgogICAgIGNhc2UgMHgxMTA2RjoKKyAgICBjYXNlIDB4MTEwRjk6CisgICAgY2FzZSAweDExMTNGOgorICAgIGNhc2UgMHgxMTFEOToKKyAgICBjYXNlIDB4MTE2Qzk6CiAgICAgY2FzZSAweDEyNDA3OgogICAgIGNhc2UgMHgxMjQwRToKICAgICBjYXNlIDB4MTI0MTQ6CmRpZmYgLS1naXQgYS9PYmplY3RzL3dlYWtyZWZvYmplY3QuYyBiL09iamVjdHMvd2Vha3JlZm9iamVjdC5jCmluZGV4IDQxN2YwNzUuLmI0OWRjZWUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvd2Vha3JlZm9iamVjdC5jCisrKyBiL09iamVjdHMvd2Vha3JlZm9iamVjdC5jCkBAIC0xNTUsMzYgKzE1NSwzMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHdlYWtyZWZfcmVwcihQeVdlYWtSZWZlcmVuY2UgKnNlbGYpCiB7Ci0gICAgY2hhciBidWZmZXJbMjU2XTsKLSAgICBpZiAoUHlXZWFrcmVmX0dFVF9PQkpFQ1Qoc2VsZikgPT0gUHlfTm9uZSkgewotICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICI8d2Vha3JlZiBhdCAlcDsgZGVhZD4iLCBzZWxmKTsKKyAgICBQeU9iamVjdCAqbmFtZSwgKnJlcHI7CisgICAgX1B5X0lERU5USUZJRVIoX19uYW1lX18pOworCisgICAgaWYgKFB5V2Vha3JlZl9HRVRfT0JKRUNUKHNlbGYpID09IFB5X05vbmUpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPHdlYWtyZWYgYXQgJXA7IGRlYWQ+Iiwgc2VsZik7CisKKyAgICBuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZChQeVdlYWtyZWZfR0VUX09CSkVDVChzZWxmKSwgJlB5SWRfX19uYW1lX18pOworICAgIGlmIChuYW1lID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhuYW1lKSkgeworICAgICAgICBpZiAobmFtZSA9PSBOVUxMKQorICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KAorICAgICAgICAgICAgIjx3ZWFrcmVmIGF0ICVwOyB0byAnJXMnIGF0ICVwPiIsCisgICAgICAgICAgICBzZWxmLAorICAgICAgICAgICAgUHlfVFlQRShQeVdlYWtyZWZfR0VUX09CSkVDVChzZWxmKSktPnRwX25hbWUsCisgICAgICAgICAgICBQeVdlYWtyZWZfR0VUX09CSkVDVChzZWxmKSk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBjaGFyICpuYW1lID0gTlVMTDsKLSAgICAgICAgUHlPYmplY3QgKm5hbWVvYmogPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKFB5V2Vha3JlZl9HRVRfT0JKRUNUKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fbmFtZV9fIik7Ci0gICAgICAgIGlmIChuYW1lb2JqID09IE5VTEwpCi0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWVvYmopKQotICAgICAgICAgICAgICAgIG5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWVvYmopOwotICAgICAgICBpZiAobmFtZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICI8d2Vha3JlZiBhdCAlcDsgdG8gJyUuNTBzJyBhdCAlcCAoJXMpPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoUHlXZWFrcmVmX0dFVF9PQkpFQ1Qoc2VsZikpLT50cF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVdlYWtyZWZfR0VUX09CSkVDVChzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICI8d2Vha3JlZiBhdCAlcDsgdG8gJyUuNTBzJyBhdCAlcD4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKFB5V2Vha3JlZl9HRVRfT0JKRUNUKHNlbGYpKS0+dHBfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlXZWFrcmVmX0dFVF9PQkpFQ1Qoc2VsZikpOwotICAgICAgICB9Ci0gICAgICAgIFB5X1hERUNSRUYobmFtZW9iaik7CisgICAgICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgICAgICI8d2Vha3JlZiBhdCAlcDsgdG8gJyVzJyBhdCAlcCAoJVUpPiIsCisgICAgICAgICAgICBzZWxmLAorICAgICAgICAgICAgUHlfVFlQRShQeVdlYWtyZWZfR0VUX09CSkVDVChzZWxmKSktPnRwX25hbWUsCisgICAgICAgICAgICBQeVdlYWtyZWZfR0VUX09CSkVDVChzZWxmKSwKKyAgICAgICAgICAgIG5hbWUpOwogICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoYnVmZmVyKTsKKyAgICBQeV9YREVDUkVGKG5hbWUpOworICAgIHJldHVybiByZXByOwogfQogCiAvKiBXZWFrIHJlZmVyZW5jZXMgb25seSBzdXBwb3J0IGVxdWFsaXR5LCBub3Qgb3JkZXJpbmcuIFR3byB3ZWFrIHJlZmVyZW5jZXMKQEAgLTE5Nyw4ICsxOTMsNyBAQAogICAgIGlmICgob3AgIT0gUHlfRVEgJiYgb3AgIT0gUHlfTkUpIHx8CiAgICAgICAgICFQeVdlYWtyZWZfQ2hlY2soc2VsZikgfHwKICAgICAgICAgIVB5V2Vha3JlZl9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQogICAgIGlmIChQeVdlYWtyZWZfR0VUX09CSkVDVChzZWxmKSA9PSBQeV9Ob25lCiAgICAgICAgIHx8IFB5V2Vha3JlZl9HRVRfT0JKRUNUKG90aGVyKSA9PSBQeV9Ob25lKSB7CkBAIC00NDksOCArNDQ0LDkgQEAKICNkZWZpbmUgV1JBUF9NRVRIT0QobWV0aG9kLCBzcGVjaWFsKSBcCiAgICAgc3RhdGljIFB5T2JqZWN0ICogXAogICAgIG1ldGhvZChQeU9iamVjdCAqcHJveHkpIHsgXAorICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoc3BlY2lhbCk7IFwKICAgICAgICAgICAgIFVOV1JBUChwcm94eSk7IFwKLSAgICAgICAgICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChwcm94eSwgc3BlY2lhbCwgIiIpOyBcCisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHJveHksICZQeUlkXyMjc3BlY2lhbCwgIiIpOyBcCiAgICAgICAgIH0KIAogCkBAIC00NjMsMTIgKzQ1OSwxMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHByb3h5X3JlcHIoUHlXZWFrUmVmZXJlbmNlICpwcm94eSkKIHsKLSAgICBjaGFyIGJ1ZlsxNjBdOwotICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKLSAgICAgICAgICAgICAgICAgICI8d2Vha3Byb3h5IGF0ICVwIHRvICUuMTAwcyBhdCAlcD4iLCBwcm94eSwKLSAgICAgICAgICAgICAgICAgIFB5X1RZUEUoUHlXZWFrcmVmX0dFVF9PQkpFQ1QocHJveHkpKS0+dHBfbmFtZSwKLSAgICAgICAgICAgICAgICAgIFB5V2Vha3JlZl9HRVRfT0JKRUNUKHByb3h5KSk7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KAorICAgICAgICAiPHdlYWtwcm94eSBhdCAlcCB0byAlcyBhdCAlcD4iLAorICAgICAgICBwcm94eSwKKyAgICAgICAgUHlfVFlQRShQeVdlYWtyZWZfR0VUX09CSkVDVChwcm94eSkpLT50cF9uYW1lLAorICAgICAgICBQeVdlYWtyZWZfR0VUX09CSkVDVChwcm94eSkpOwogfQogCiAKQEAgLTU5NCw3ICs1ODksNyBAQAogfQogCiAKLVdSQVBfTUVUSE9EKHByb3h5X2J5dGVzLCAiX19ieXRlc19fIikKK1dSQVBfTUVUSE9EKHByb3h5X2J5dGVzLCBfX2J5dGVzX18pCiAKIAogc3RhdGljIFB5TWV0aG9kRGVmIHByb3h5X21ldGhvZHNbXSA9IHsKZGlmZiAtLWdpdCBhL1BDL1ZDNi9fbXVsdGlwcm9jZXNzaW5nLmRzcCBiL1BDL1ZDNi9fbXVsdGlwcm9jZXNzaW5nLmRzcAppbmRleCAyZGNhZjgzLi5lMWI4NDcwIDEwMDY0NAotLS0gYS9QQy9WQzYvX211bHRpcHJvY2Vzc2luZy5kc3AKKysrIGIvUEMvVkM2L19tdWx0aXByb2Nlc3NpbmcuZHNwCkBAIC05NywxOCArOTcsMTAgQEAKICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KIA0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdccGlwZV9jb25uZWN0aW9uLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCiBTT1VSQ0U9Li5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHNlbWFwaG9yZS5jDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQotU09VUkNFPS4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xzb2NrZXRfY29ubmVjdGlvbi5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQogU09VUkNFPS4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1x3aW4zMl9mdW5jdGlvbnMuYw0KICMgRW5kIFNvdXJjZSBGaWxlDQogIyBFbmQgVGFyZ2V0DQpkaWZmIC0tZ2l0IGEvUEMvVkM2L3B5dGhvbmNvcmUuZHNwIGIvUEMvVkM2L3B5dGhvbmNvcmUuZHNwCmluZGV4IDkyNjI1NmQuLjBjZTk4ZDEgMTAwNjQ0Ci0tLSBhL1BDL1ZDNi9weXRob25jb3JlLmRzcAorKysgYi9QQy9WQzYvcHl0aG9uY29yZS5kc3AKQEAgLTU0LDcgKzU0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbGFyZ2VpbnQubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiAvbm9sb2dvIC9iYXNlOiIweDFlMDAwMDAwIiAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiJsaWJjIiAvb3V0OiIuL3B5dGhvbjMyLmRsbCINCisjIEFERCBMSU5LMzIgbGFyZ2VpbnQubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiAvbm9sb2dvIC9iYXNlOiIweDFlMDAwMDAwIiAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiJsaWJjIiAvb3V0OiIuL3B5dGhvbjMzLmRsbCINCiAjIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUNCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAicHl0aG9uY29yZSAtIFdpbjMyIERlYnVnIg0KQEAgLTgyLDcgKzgyLDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbGFyZ2VpbnQubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiAvbm9sb2dvIC9iYXNlOiIweDFlMDAwMDAwIiAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiJsaWJjIiAvb3V0OiIuL3B5dGhvbjMyX2QuZGxsIiAvcGRidHlwZTpzZXB0DQorIyBBREQgTElOSzMyIGxhcmdlaW50LmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgL25vbG9nbyAvYmFzZToiMHgxZTAwMDAwMCIgL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL25vZGVmYXVsdGxpYjoibGliYyIgL291dDoiLi9weXRob24zM19kLmRsbCIgL3BkYnR5cGU6c2VwdA0KICMgU1VCVFJBQ1QgTElOSzMyIC9wZGI6bm9uZQ0KIA0KICFFTkRJRiANCkBAIC00NjYsMTEgKzQ2Niw2IEBACiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCi1TT1VSQ0U9Li5caW1wb3J0X250LmMNCi0jIEFERCBDUFAgL0kgIi4uXC4uXFB5dGhvbiINCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCiBTT1VSQ0U9Li5cLi5cUHl0aG9uXGltcG9ydGRsLmMNCiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCmRpZmYgLS1naXQgYS9QQy9WQzYvcmVhZG1lLnR4dCBiL1BDL1ZDNi9yZWFkbWUudHh0CmluZGV4IGZhMWFlN2QuLmQ2ZWM2ZTYgMTAwNjQ0Ci0tLSBhL1BDL1ZDNi9yZWFkbWUudHh0CisrKyBiL1BDL1ZDNi9yZWFkbWUudHh0CkBAIC0xMiw3ICsxMiw3IEBACiBUaGUgcHJvcGVyIG9yZGVyIHRvIGJ1aWxkIHN1YnByb2plY3RzOgogCiAxKSBweXRob25jb3JlICh0aGlzIGJ1aWxkcyB0aGUgbWFpbiBQeXRob24gRExMIGFuZCBsaWJyYXJ5IGZpbGVzLAotICAgICAgICAgICAgICAgcHl0aG9uMzIue2RsbCwgbGlifSBpbiBSZWxlYXNlIG1vZGUpCisgICAgICAgICAgICAgICBweXRob24zMy57ZGxsLCBsaWJ9IGluIFJlbGVhc2UgbW9kZSkKIAogMikgcHl0aG9uICh0aGlzIGJ1aWxkcyB0aGUgbWFpbiBQeXRob24gZXhlY3V0YWJsZSwKICAgICAgICAgICAgcHl0aG9uLmV4ZSBpbiBSZWxlYXNlIG1vZGUpCkBAIC0yMyw3ICsyMyw3IEBACiAgICB0byB0aGUgc3Vic3lzdGVtcyB0aGV5IGltcGxlbWVudDsgc2VlIFNVQlBST0pFQ1RTIGJlbG93KQogCiBXaGVuIHVzaW5nIHRoZSBEZWJ1ZyBzZXR0aW5nLCB0aGUgb3V0cHV0IGZpbGVzIGhhdmUgYSBfZCBhZGRlZCB0bwotdGhlaXIgbmFtZTogIHB5dGhvbjMyX2QuZGxsLCBweXRob25fZC5leGUsIHB5ZXhwYXRfZC5weWQsIGFuZCBzbyBvbi4KK3RoZWlyIG5hbWU6ICBweXRob24zM19kLmRsbCwgcHl0aG9uX2QuZXhlLCBweWV4cGF0X2QucHlkLCBhbmQgc28gb24uCiAKIFNVQlBST0pFQ1RTCiAtLS0tLS0tLS0tLQpAQCAtMTUzLDkgKzE1Myw5IEBACiAKICAgICBVbnBhY2sgaW50byB0aGUgImRpc3QiIGRpcmVjdG9yeSwgcmV0YWluaW5nIHRoZSBmb2xkZXIgbmFtZSBmcm9tCiAgICAgdGhlIGFyY2hpdmUgLSBmb3IgZXhhbXBsZSwgdGhlIGxhdGVzdCBzdGFibGUgT3BlblNTTCB3aWxsIGluc3RhbGwgYXMKLSAgICAgICAgZGlzdC9vcGVuc3NsLTEuMC4wagorICAgICAgICBkaXN0L29wZW5zc2wtMS4wLjFjCiAKLSAgICBZb3UgbmVlZCB0byB1c2UgdmVyc2lvbiAxLjAuMGogb2YgT3BlblNTTC4KKyAgICBZb3UgbmVlZCB0byB1c2UgdmVyc2lvbiAxLjAuMWMgb2YgT3BlblNTTC4KIAogICAgIFlvdSBjYW4gaW5zdGFsbCB0aGUgTkFTTSBhc3NlbWJsZXIgZnJvbQogICAgICAgICBodHRwOi8vd3d3Lm5hc20udXMvCmRpZmYgLS1naXQgYS9QQy9WUzcuMS9weXRob25jb3JlLnZjcHJvaiBiL1BDL1ZTNy4xL3B5dGhvbmNvcmUudmNwcm9qCmluZGV4IDc3ZjdkOWQuLjA1YzQxODQgMTAwNjQ0Ci0tLSBhL1BDL1ZTNy4xL3B5dGhvbmNvcmUudmNwcm9qCisrKyBiL1BDL1ZTNy4xL3B5dGhvbmNvcmUudmNwcm9qCkBAIC0zOSwxNSArMzksMTUgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZ2V0YnVpbGRpbmZvLm8iDQotCQkJCU91dHB1dEZpbGU9Ii4vcHl0aG9uMzIuZGxsIg0KKwkJCQlPdXRwdXRGaWxlPSIuL3B5dGhvbjMzLmRsbCINCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQogCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbjMyLnBkYiINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbjMzLnBkYiINCiAJCQkJU3ViU3lzdGVtPSIyIg0KIAkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL3B5dGhvbjMyLmxpYiINCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL3B5dGhvbjMzLmxpYiINCiAJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCkBAIC05OSwxNSArOTksMTUgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZ2V0YnVpbGRpbmZvLm8iDQotCQkJCU91dHB1dEZpbGU9Ii4vcHl0aG9uMzJfZC5kbGwiDQorCQkJCU91dHB1dEZpbGU9Ii4vcHl0aG9uMzNfZC5kbGwiDQogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KIAkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob24zMl9kLnBkYiINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbjMzX2QucGRiIg0KIAkJCQlTdWJTeXN0ZW09IjIiDQogCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vcHl0aG9uMzJfZC5saWIiDQorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9weXRob24zM19kLmxpYiINCiAJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCkBAIC0xNjYsMTUgKzE2NiwxNSBAQAogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpJQTY0IC9VU0VMSU5LOk1TX1NESyINCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZ2V0YnVpbGRpbmZvLm8iDQotCQkJCU91dHB1dEZpbGU9Ii4vcHl0aG9uMzIuZGxsIg0KKwkJCQlPdXRwdXRGaWxlPSIuL3B5dGhvbjMzLmRsbCINCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IkZBTFNFIg0KIAkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob24zMi5wZGIiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob24zMy5wZGIiDQogCQkJCVN1YlN5c3RlbT0iMiINCiAJCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9weXRob24zMi5saWIiDQorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9weXRob24zMy5saWIiDQogCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQpAQCAtMjMzLDE1ICsyMzMsMTUgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIg0KIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJnZXRidWlsZGluZm8ubyINCi0JCQkJT3V0cHV0RmlsZT0iLi9weXRob24zMi5kbGwiDQorCQkJCU91dHB1dEZpbGU9Ii4vcHl0aG9uMzMuZGxsIg0KIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCiAJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHl0aG9uMzIucGRiIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHl0aG9uMzMucGRiIg0KIAkJCQlTdWJTeXN0ZW09IjIiDQogCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vcHl0aG9uMzIubGliIg0KKwkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vcHl0aG9uMzMubGliIg0KIAkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KQEAgLTYxNiwzMyArNjE2LDYgQEAKIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGltcG9ydC5jIj4NCiAJCTwvRmlsZT4NCiAJCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xpbXBvcnRfbnQuYyI+DQotCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiPg0KLQkJCQk8VG9vbA0KLQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbiIvPg0KLQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCU5hbWU9IkRlYnVnfFdpbjMyIj4NCi0JCQkJPFRvb2wNCi0JCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob24iLz4NCi0JCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiI+DQotCQkJCTxUb29sDQotCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uIi8+DQotCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJTmFtZT0iUmVsZWFzZUFNRDY0fFdpbjMyIj4NCi0JCQkJPFRvb2wNCi0JCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob24iLz4NCi0JCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxpbXBvcnRkbC5jIj4NCiAJCTwvRmlsZT4NCiAJCTxGaWxlDQpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvcmVhZG1lLnR4dCBiL1BDL1ZTNy4xL3JlYWRtZS50eHQKaW5kZXggOGZiMDY5Zi4uYmZkOGE3MCAxMDA2NDQKLS0tIGEvUEMvVlM3LjEvcmVhZG1lLnR4dAorKysgYi9QQy9WUzcuMS9yZWFkbWUudHh0CkBAIC0xMiw3ICsxMiw3IEBACiBUaGUgcHJvcGVyIG9yZGVyIHRvIGJ1aWxkIHN1YnByb2plY3RzOgogCiAxKSBweXRob25jb3JlICh0aGlzIGJ1aWxkcyB0aGUgbWFpbiBQeXRob24gRExMIGFuZCBsaWJyYXJ5IGZpbGVzLAotICAgICAgICAgICAgICAgcHl0aG9uMjYue2RsbCwgbGlifSBpbiBSZWxlYXNlIG1vZGUpCisgICAgICAgICAgICAgICBweXRob24zMy57ZGxsLCBsaWJ9IGluIFJlbGVhc2UgbW9kZSkKICAgICAgICAgICAgICAgTk9URTogIGluIHByZXZpb3VzIHJlbGVhc2VzLCB0aGlzIHN1YnByb2plY3Qgd2FzCiAgICAgICAgICAgICAgIG5hbWVkIGFmdGVyIHRoZSByZWxlYXNlIG51bWJlciwgZS5nLiBweXRob24yMC4KIApAQCAtMjYsNyArMjYsNyBAQAogICAgdGVzdCBzbGF2ZTsgc2VlIFNVQlBST0pFQ1RTIGJlbG93KQogCiBXaGVuIHVzaW5nIHRoZSBEZWJ1ZyBzZXR0aW5nLCB0aGUgb3V0cHV0IGZpbGVzIGhhdmUgYSBfZCBhZGRlZCB0bwotdGhlaXIgbmFtZTogIHB5dGhvbjI2X2QuZGxsLCBweXRob25fZC5leGUsIHBhcnNlcl9kLnB5ZCwgYW5kIHNvIG9uLgordGhlaXIgbmFtZTogIHB5dGhvbjMzX2QuZGxsLCBweXRob25fZC5leGUsIHBhcnNlcl9kLnB5ZCwgYW5kIHNvIG9uLgogCiBTVUJQUk9KRUNUUwogLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL19tdWx0aXByb2Nlc3NpbmcudmNwcm9qIGIvUEMvVlM4LjAvX211bHRpcHJvY2Vzc2luZy52Y3Byb2oKaW5kZXggYzJiYmVjNC4uOGYxY2FmYyAxMDA2NDQKLS0tIGEvUEMvVlM4LjAvX211bHRpcHJvY2Vzc2luZy52Y3Byb2oKKysrIGIvUEMvVlM4LjAvX211bHRpcHJvY2Vzc2luZy52Y3Byb2oKQEAgLTUyMiwxMCArNTIyLDYgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xtdWx0aXByb2Nlc3NpbmcuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xjb25uZWN0aW9uLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCiAJCTxGaWx0ZXINCiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQpAQCAtNTM1LDE4ICs1MzEsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHBpcGVfY29ubmVjdGlvbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHNlbWFwaG9yZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHNvY2tldF9jb25uZWN0aW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcd2luMzJfZnVuY3Rpb25zLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvYnVpbGRfc3NsLmJhdCBiL1BDL1ZTOC4wL2J1aWxkX3NzbC5iYXQKaW5kZXggMzljMWZmMC4uMzU3YjA4YiAxMDA2NDQKLS0tIGEvUEMvVlM4LjAvYnVpbGRfc3NsLmJhdAorKysgYi9QQy9WUzguMC9idWlsZF9zc2wuYmF0CkBAIC0yLDEwICsyLDEwIEBACiBpZiBub3QgZGVmaW5lZCBIT1NUX1BZVEhPTiAoCiAgIGlmICUxIEVRVSBEZWJ1ZyAoCiAgICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbl9kLmV4ZQotICAgIGlmIG5vdCBleGlzdCBweXRob24zMl9kLmRsbCBleGl0IDEKKyAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzNfZC5kbGwgZXhpdCAxCiAgICkgRUxTRSAoCiAgICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbi5leGUKLSAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzIuZGxsIGV4aXQgMQorICAgIGlmIG5vdCBleGlzdCBweXRob24zMy5kbGwgZXhpdCAxCiAgICkKICkKICVIT1NUX1BZVEhPTiUgYnVpbGRfc3NsLnB5ICUxICUyICUzCmRpZmYgLS1naXQgYS9QQy9WUzguMC9raWxsX3B5dGhvbi5jIGIvUEMvVlM4LjAva2lsbF9weXRob24uYwppbmRleCA2YjkxNjc4Li5iYjMyM2QzIDEwMDY0NAotLS0gYS9QQy9WUzguMC9raWxsX3B5dGhvbi5jCisrKyBiL1BDL1ZTOC4wL2tpbGxfcHl0aG9uLmMKQEAgLTEwNiw3ICsxMDYsNyBAQAogICAgICAgICAvKgogICAgICAgICAgKiBYWFggVE9ETzogaWYgd2UgcmVhbGx5IHdhbnRlZCB0byBiZSBmYW5jeSwgd2UgY291bGQgY2hlY2sgdGhlIAogICAgICAgICAgKiBtb2R1bGVzIGZvciBhbGwgcHJvY2Vzc2VzIChub3QganVzdCB0aGUgcHl0aG9uW19kXS5leGUgb25lcykKLSAgICAgICAgICogYW5kIHNlZSBpZiBhbnkgb2Ygb3VyIERMTHMgYXJlIGxvYWRlZCAoaS5lLiBweXRob24zMltfZF0uZGxsKSwKKyAgICAgICAgICogYW5kIHNlZSBpZiBhbnkgb2Ygb3VyIERMTHMgYXJlIGxvYWRlZCAoaS5lLiBweXRob24zM1tfZF0uZGxsKSwKICAgICAgICAgICogYXMgdGhhdCB3b3VsZCBhbHNvIGluaGliaXQgb3VyIGFiaWxpdHkgdG8gcmVidWlsZCB0aGUgc29sdXRpb24uCiAgICAgICAgICAqIE5vdCB3b3J0aCBsb29zaW5nIHNsZWVwIG92ZXIgdGhvdWdoOyBmb3Igbm93LCBhIHNpbXBsZSBjaGVjayAKICAgICAgICAgICogZm9yIGp1c3QgdGhlIHB5dGhvbiBleGVjdXRhYmxlIHNob3VsZCBiZSBzdWZmaWNpZW50LgpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvcHlwcm9qZWN0LnZzcHJvcHMgYi9QQy9WUzguMC9weXByb2plY3QudnNwcm9wcwppbmRleCAyYTgyZTQ5Li5mODZjZGVjIDEwMDY0NAotLS0gYS9QQy9WUzguMC9weXByb2plY3QudnNwcm9wcworKysgYi9QQy9WUzguMC9weXByb2plY3QudnNwcm9wcwpAQCAtMzgsNyArMzgsNyBAQAogCS8+DQogCTxVc2VyTWFjcm8NCiAJCU5hbWU9IlB5RGxsTmFtZSINCi0JCVZhbHVlPSJweXRob24zMiINCisJCVZhbHVlPSJweXRob24zMyINCiAJLz4NCiAJPFVzZXJNYWNybw0KIAkJTmFtZT0iUHl0aG9uRXhlIg0KQEAgLTU4LDcgKzU4LDcgQEAKIAkvPg0KIAk8VXNlck1hY3JvDQogCQlOYW1lPSJvcGVuc3NsRGlyIg0KLQkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxvcGVuc3NsLTEuMC4waiINCisJCVZhbHVlPSIkKGV4dGVybmFsc0Rpcilcb3BlbnNzbC0xLjAuMWMiDQogCS8+DQogCTxVc2VyTWFjcm8NCiAJCU5hbWU9InRjbHRrRGlyIg0KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL3B5dGhvbmNvcmUudmNwcm9qIGIvUEMvVlM4LjAvcHl0aG9uY29yZS52Y3Byb2oKaW5kZXggZTgxNTU5ZS4uYTc1YmI5ZCAxMDA2NDQKLS0tIGEvUEMvVlM4LjAvcHl0aG9uY29yZS52Y3Byb2oKKysrIGIvUEMvVlM4LjAvcHl0aG9uY29yZS52Y3Byb2oKQEAgLTE3MDcsMTAgKzE3MDcsNiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xpbXBvcnRfbnQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXG1zdmNydG1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvYnoyLnZjcHJvaiBiL1BDL1ZTOS4wL19iejIudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIFBDYnVpbGQvYnoyLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvX2J6Mi52Y3Byb2oKaW5kZXggZTJiMzUzYi4uN2NlYjhjNyAxMDA2NDQKLS0tIGEvUENidWlsZC9iejIudmNwcm9qCisrKyBiL1BDL1ZTOS4wL19iejIudmNwcm9qCkBAIC0xLDggKzEsOCBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQotCU5hbWU9ImJ6MiINCisJVmVyc2lvbj0iOS4wMCINCisJTmFtZT0iX2J6MiINCiAJUHJvamVjdEdVSUQ9Ins3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9Ig0KIAlSb290TmFtZXNwYWNlPSJiejIiDQogCUtleXdvcmQ9IldpbjMyUHJvaiINCkBAIC01MjcsNyArNTI3LDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGJ6Mm1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2J6Mm1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fY3R5cGVzLnZjcHJvaiBiL1BDL1ZTOS4wL19jdHlwZXMudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggODglCnJlbmFtZSBmcm9tIFBDYnVpbGQvX2N0eXBlcy52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL19jdHlwZXMudmNwcm9qCmluZGV4IDFlYjhiNTcuLjhlNWNiYTEgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX2N0eXBlcy52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX2N0eXBlcy52Y3Byb2oKQEAgLTQyLDcgKzQyLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0xMDMsNyArMTAzLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0xNjQsNyArMTY0LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0yMjgsNyArMjI4LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0yOTEsNyArMjkxLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0zNTUsNyArMzU1LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC00MTksNyArNDE5LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC00ODMsNyArNDgzLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC01MzEsMjcgKzUzMSwyNyBAQAogCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjdHlwZXMuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY3R5cGVzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcY3R5cGVzX2RsZmNuLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGN0eXBlc19kbGZjbi5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmlfY29tbW9uLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaV9jb21tb24uaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmljb25maWcuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpY29uZmlnLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpdGFyZ2V0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaXRhcmdldC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtNTU5LDM5ICs1NTksMzkgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlcy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbGJhY2tzLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxiYWNrcy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxwcm9jLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxwcm9jLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcY2ZpZWxkLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGNmaWVsZC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xtYWxsb2NfY2xvc3VyZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xtYWxsb2NfY2xvc3VyZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHByZXBfY2lmLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHByZXBfY2lmLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcc3RnZGljdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xzdGdkaWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luMzIuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luMzIuYyINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCU5hbWU9IkRlYnVnfHg2NCINCkBAIC02MjcsNyArNjI3LDcgQEAKIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1x3aW42NC5hc20iDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjY0LmFzbSINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2N0eXBlc190ZXN0LnZjcHJvaiBiL1BDL1ZTOS4wL19jdHlwZXNfdGVzdC52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gUENidWlsZC9fY3R5cGVzX3Rlc3QudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9fY3R5cGVzX3Rlc3QudmNwcm9qCmluZGV4IDBjN2FiYmUuLjcwMzM1NDYgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX2N0eXBlc190ZXN0LnZjcHJvagorKysgYi9QQy9WUzkuMC9fY3R5cGVzX3Rlc3QudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9Il9jdHlwZXNfdGVzdCINCiAJUHJvamVjdEdVSUQ9Ins5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9Ig0KIAlSb290TmFtZXNwYWNlPSJfY3R5cGVzX3Rlc3QiDQpAQCAtNTAzLDcgKzUwMyw3IEBACiAJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzX3Rlc3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTUxMSw3ICs1MTEsNyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzX3Rlc3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlc190ZXN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19jdHlwZXMudmNwcm9qIGIvUEMvVlM5LjAvX2RlY2ltYWwudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggNjklCmNvcHkgZnJvbSBQQ2J1aWxkL19jdHlwZXMudmNwcm9qCmNvcHkgdG8gUEMvVlM5LjAvX2RlY2ltYWwudmNwcm9qCmluZGV4IDFlYjhiNTcuLmI5ZmFiYjAgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX2N0eXBlcy52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX2RlY2ltYWwudmNwcm9qCkBAIC0yLDkgKzIsOSBAQAogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQogCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9jdHlwZXMiDQotCVByb2plY3RHVUlEPSJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fSINCi0JUm9vdE5hbWVzcGFjZT0iX2N0eXBlcyINCisJTmFtZT0iX2RlY2ltYWwiDQorCVByb2plY3RHVUlEPSJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fSINCisJUm9vdE5hbWVzcGFjZT0iX2RlY2ltYWwiDQogCUtleXdvcmQ9IldpbjMyUHJvaiINCiAJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KIAk+DQpAQCAtNDIsNyArNDIsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzMyIC9EUFBSTyAvRE1BU00iDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTEwMyw3ICsxMDQsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzY0IC9ETUFTTSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMTY0LDcgKzE2Niw4IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMTc3LDcgKzE4MCw2IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KIAkJCQlTdWJTeXN0ZW09IjAiDQogCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KIAkJCS8+DQpAQCAtMjI4LDcgKzIzMCw4IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0yNDEsNyArMjQ0LDYgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQogCQkJCVN1YlN5c3RlbT0iMCINCiAJCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQogCQkJLz4NCkBAIC0yOTEsNyArMjkzLDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR18zMiAvRFBQUk8gL0RNQVNNIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0zMDQsNyArMzA3LDYgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQogCQkJCVN1YlN5c3RlbT0iMCINCiAJCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQogCQkJLz4NCkBAIC0zNTUsNyArMzU3LDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR182NCAvRE1BU00iDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTM2OCw3ICszNzEsNiBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCiAJCQkJU3ViU3lzdGVtPSIwIg0KIAkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCiAJCQkJVGFyZ2V0TWFjaGluZT0iMTciDQpAQCAtNDE5LDcgKzQyMSw4IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtNDMyLDcgKzQzNSw2IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KIAkJCQlTdWJTeXN0ZW09IjAiDQogCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KIAkJCS8+DQpAQCAtNDgzLDcgKzQ4NSw4IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC00OTYsNyArNDk5LDYgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQogCQkJCVN1YlN5c3RlbT0iMCINCiAJCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQogCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KQEAgLTUzMSwyNyArNTMzLDcxIEBACiAJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGN0eXBlcy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcYmFzZWFyaXRoLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcY3R5cGVzX2RsZmNuLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xiaXRzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb25zdGFudHMuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmlfY29tbW9uLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb252b2x1dGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmljb25maWcuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNydC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaXRhcmdldC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZGlmcmFkaXgyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGRvY3N0cmluZ3MuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm50LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZvdXJzdGVwLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG1wZGVjaW1hbC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xudW1iZXJ0aGVvcnkuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcc2l4c3RlcC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x0cmFuc3Bvc2UuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdHlwZWFyaXRoLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHVtb2Rhcml0aC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x2Y2NvbXBhdC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x2Y3N0ZGludC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtNTU5LDc1ICs2MDUsNjcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlcy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcX2RlY2ltYWwuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjYWxsYmFja3MuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGJhc2Vhcml0aC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxwcm9jLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb25zdGFudHMuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjZmllbGQuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnRleHQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnZvbHV0ZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXG1hbGxvY19jbG9zdXJlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjcnQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xwcmVwX2NpZi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZGlmcmFkaXgyLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcc3RnZGljdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm50LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luMzIuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZvdXJzdGVwLmMiDQogCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjY0LmFzbSINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGlvLmMiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG1lbW9yeS5jIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xtcGRlY2ltYWwuYyINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbnVtYmVydGhlb3J5LmMiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHNpeHN0ZXAuYyINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdHJhbnNwb3NlLmMiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHZjZGl2NjQuYXNtIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQpAQCAtNjQyLDggKzY4MCw4IEBACiAJCQkJCT4NCiAJCQkJCTxUb29sDQogCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICZxdW90OyQoSW50RGlyKVx3aW42NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KLQkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx3aW42NC5vYmoiDQorCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICZxdW90OyQoSW50RGlyKVx2Y2RpdjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQorCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHZjZGl2NjQub2JqIg0KIAkJCQkJLz4NCiAJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtNjU5LDggKzY5Nyw4IEBACiAJCQkJCT4NCiAJCQkJCTxUb29sDQogCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvRm8gJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHdpbjY0Lm9iaiINCisJCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9aaSAvRm8gJnF1b3Q7JChJbnREaXIpXHZjZGl2NjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCisJCQkJCQlPdXRwdXRzPSIkKEludERpcilcdmNkaXY2NC5vYmoiDQogCQkJCQkvPg0KIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC02NzYsOCArNzE0LDggQEAKIAkJCQkJPg0KIAkJCQkJPFRvb2wNCiAJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9GbyAmcXVvdDskKEludERpcilcd2luNjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCi0JCQkJCQlPdXRwdXRzPSIkKEludERpcilcd2luNjQub2JqIg0KKwkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL0ZvICZxdW90OyQoSW50RGlyKVx2Y2RpdjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQorCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHZjZGl2NjQub2JqIg0KIAkJCQkJLz4NCiAJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtNjkzLDggKzczMSw4IEBACiAJCQkJCT4NCiAJCQkJCTxUb29sDQogCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvRm8gJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHdpbjY0Lm9iaiINCisJCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9GbyAmcXVvdDskKEludERpcilcdmNkaXY2NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KKwkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx2Y2RpdjY0Lm9iaiINCiAJCQkJCS8+DQogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2VsZW1lbnR0cmVlLnZjcHJvaiBiL1BDL1ZTOS4wL19lbGVtZW50dHJlZS52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA4NyUKcmVuYW1lIGZyb20gUENidWlsZC9fZWxlbWVudHRyZWUudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9fZWxlbWVudHRyZWUudmNwcm9qCmluZGV4IDNlOTYzMWYuLmY5ZDczNzUgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX2VsZW1lbnR0cmVlLnZjcHJvagorKysgYi9QQy9WUzkuMC9fZWxlbWVudHRyZWUudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9Il9lbGVtZW50dHJlZSINCiAJUHJvamVjdEdVSUQ9InsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9Ig0KIAlSb290TmFtZXNwYWNlPSJfZWxlbWVudHRyZWUiDQpAQCAtNDIsNyArNDIsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC0xMDQsNyArMTA0LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtMTY2LDcgKzE2Niw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTIyOSw3ICsyMjksNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC0yOTEsNyArMjkxLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtMzU0LDcgKzM1NCw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTQxNyw3ICs0MTcsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC00ODAsNyArNDgwLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtNTI3LDYzICs1MjcsNjMgQEAKIAkJCU5hbWU9IkhlYWRlciBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XGFzY2lpLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxhc2NpaS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFxhc2NpaXRhYi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcYXNjaWl0YWIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRcZXhwYXQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGV4cGF0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XGV4cGF0X2NvbmZpZy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcZXhwYXRfY29uZmlnLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XGV4cGF0X2V4dGVybmFsLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxleHBhdF9leHRlcm5hbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFxpYXNjaWl0YWIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGlhc2NpaXRhYi5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFxpbnRlcm5hbC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcaW50ZXJuYWwuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRcbGF0aW4xdGFiLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxsYXRpbjF0YWIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRcbWFjY29uZmlnLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxtYWNjb25maWcuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRcbmFtZXRhYi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcbmFtZXRhYi5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFxweWV4cGF0bnMuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHB5ZXhwYXRucy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFx1dGY4dGFiLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx1dGY4dGFiLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XHdpbmNvbmZpZy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcd2luY29uZmlnLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTU5MSwxOSArNTkxLDE5IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfZWxlbWVudHRyZWUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9lbGVtZW50dHJlZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFx4bWxwYXJzZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9faGFzaGxpYi52Y3Byb2ogYi9QQy9WUzkuMC9faGFzaGxpYi52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gUENidWlsZC9faGFzaGxpYi52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL19oYXNobGliLnZjcHJvagppbmRleCBlMDVkOTdlLi43NzQxN2VjIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19oYXNobGliLnZjcHJvagorKysgYi9QQy9WUzkuMC9faGFzaGxpYi52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0iX2hhc2hsaWIiDQogCVByb2plY3RHVUlEPSJ7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfSINCiAJUm9vdE5hbWVzcGFjZT0iX2hhc2hsaWIiDQpAQCAtNTI3LDcgKzUyNyw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfaGFzaG9wZW5zc2wuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9oYXNob3BlbnNzbC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9iejIudmNwcm9qIGIvUEMvVlM5LjAvX2x6bWEudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggODIlCmNvcHkgZnJvbSBQQ2J1aWxkL2J6Mi52Y3Byb2oKY29weSB0byBQQy9WUzkuMC9fbHptYS52Y3Byb2oKaW5kZXggZTJiMzUzYi4uN2M2MDAzZiAxMDA2NDQKLS0tIGEvUENidWlsZC9iejIudmNwcm9qCisrKyBiL1BDL1ZTOS4wL19sem1hLnZjcHJvagpAQCAtMSwxMCArMSwxMCBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQotCU5hbWU9ImJ6MiINCi0JUHJvamVjdEdVSUQ9Ins3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9Ig0KLQlSb290TmFtZXNwYWNlPSJiejIiDQorCVZlcnNpb249IjkuMDAiDQorCU5hbWU9Il9sem1hIg0KKwlQcm9qZWN0R1VJRD0ie0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0iDQorCVJvb3ROYW1lc3BhY2U9Imx6bWEiDQogCUtleXdvcmQ9IldpbjMyUHJvaiINCiAJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KIAk+DQpAQCAtNDIsOCArNDIsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtNTYsNyArNTYsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KQEAgLTEwNCw4ICsxMDQsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMTE4LDcgKzExOCw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmEiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCkBAIC0xNjYsOCArMTY2LDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTE4MCw3ICsxODAsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KQEAgLTIyOSw4ICsyMjksOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMjQzLDcgKzI0Myw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmEiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCkBAIC0yOTEsOCArMjkxLDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTMwNSw3ICszMDUsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KQEAgLTM1NCw4ICszNTQsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMzY4LDcgKzM2OCw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmEiDQogCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC00MTcsOCArNDE3LDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTQzMSw3ICs0MzEsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KQEAgLTQ4MCw4ICs0ODAsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtNDk0LDcgKzQ5NCw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmEiDQogCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC01MjcsNTEgKzUyNyw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xiejJtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9ImJ6aXAyIDEuMC42IEhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcYnpsaWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxiemxpYl9wcml2YXRlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJiemlwMiAxLjAuNiBTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGJsb2Nrc29ydC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGJ6bGliLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcY29tcHJlc3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxjcmN0YWJsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGRlY29tcHJlc3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxodWZmbWFuLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilccmFuZHRhYmxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbHptYW1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fbXNpLnZjcHJvaiBiL1BDL1ZTOS4wL19tc2kudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIFBDYnVpbGQvX21zaS52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL19tc2kudmNwcm9qCmluZGV4IDA4NGVmZGYuLmNiMjMwZTEgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX21zaS52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX21zaS52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0iX21zaSINCiAJUHJvamVjdEdVSUQ9InszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9Ig0KIAlSb290TmFtZXNwYWNlPSJfbXNpIg0KQEAgLTUxOSw3ICs1MTksNyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXF9tc2kuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xfbXNpLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19zb2NrZXQudmNwcm9qIGIvUEMvVlM5LjAvX211bHRpcHJvY2Vzc2luZy52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5NSUKY29weSBmcm9tIFBDYnVpbGQvX3NvY2tldC52Y3Byb2oKY29weSB0byBQQy9WUzkuMC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvagppbmRleCBlZTcyYzEwLi5mYjNkMWU3IDEwMDY0NAotLS0gYS9QQ2J1aWxkL19zb2NrZXQudmNwcm9qCisrKyBiL1BDL1ZTOS4wL19tdWx0aXByb2Nlc3NpbmcudmNwcm9qCkBAIC0xLDEwICsxLDEwIEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0iX3NvY2tldCINCi0JUHJvamVjdEdVSUQ9Ins4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9Ig0KLQlSb290TmFtZXNwYWNlPSJfc29ja2V0Ig0KKwlWZXJzaW9uPSI5LjAwIg0KKwlOYW1lPSJfbXVsdGlwcm9jZXNzaW5nIg0KKwlQcm9qZWN0R1VJRD0iezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0iDQorCVJvb3ROYW1lc3BhY2U9Il9tdWx0aXByb2Nlc3NpbmciDQogCUtleXdvcmQ9IldpbjMyUHJvaiINCiAJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KIAk+DQpAQCAtNTE5LDcgKzUxOSw3IEBACiAJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC01MjcsNyArNTI3LDExIEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmMiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcc2VtYXBob3JlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19zb2NrZXQudmNwcm9qIGIvUEMvVlM5LjAvX3NvY2tldC52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gUENidWlsZC9fc29ja2V0LnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvX3NvY2tldC52Y3Byb2oKaW5kZXggZWU3MmMxMC4uZmYxZjZkNCAxMDA2NDQKLS0tIGEvUENidWlsZC9fc29ja2V0LnZjcHJvagorKysgYi9QQy9WUzkuMC9fc29ja2V0LnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJfc29ja2V0Ig0KIAlQcm9qZWN0R1VJRD0iezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0iDQogCVJvb3ROYW1lc3BhY2U9Il9zb2NrZXQiDQpAQCAtNTE5LDcgKzUxOSw3IEBACiAJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtNTI3LDcgKzUyNyw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fc3FsaXRlMy52Y3Byb2ogYi9QQy9WUzkuMC9fc3FsaXRlMy52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gUENidWlsZC9fc3FsaXRlMy52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL19zcWxpdGUzLnZjcHJvagppbmRleCBiMzFmOWI2Li5mNzEwMGYxIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19zcWxpdGUzLnZjcHJvagorKysgYi9QQy9WUzkuMC9fc3FsaXRlMy52Y3Byb2oKQEAgLTUyNyw0MyArNTI3LDQzIEBACiAJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcY29ubmVjdGlvbi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcY3Vyc29yLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGN1cnNvci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcbW9kdWxlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXG1vZHVsZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXHByZXBhcmVfcHJvdG9jb2wuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVccHJlcGFyZV9wcm90b2NvbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxyb3cuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxzcWxpdGVjb21wYXQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcc3FsaXRlY29tcGF0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHN0YXRlbWVudC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXHV0aWwuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcdXRpbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtNTcxLDM5ICs1NzEsMzkgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcY2FjaGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY2FjaGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGNvbm5lY3Rpb24uYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjdXJzb3IuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY3Vyc29yLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcbWljcm9wcm90b2NvbHMuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcbWljcm9wcm90b2NvbHMuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVccHJlcGFyZV9wcm90b2NvbC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxwcmVwYXJlX3Byb3RvY29sLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVccm93LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXHN0YXRlbWVudC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxzdGF0ZW1lbnQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVx1dGlsLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHV0aWwuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3NzbC52Y3Byb2ogYi9QQy9WUzkuMC9fc3NsLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL19zc2wudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9fc3NsLnZjcHJvagppbmRleCA1NzI4Yzg0Li45N2FhMjk0IDEwMDY0NAotLS0gYS9QQ2J1aWxkL19zc2wudmNwcm9qCisrKyBiL1BDL1ZTOS4wL19zc2wudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9Il9zc2wiDQogCVByb2plY3RHVUlEPSJ7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfSINCiAJUm9vdE5hbWVzcGFjZT0iX3NzbCINCkBAIC01MjcsNyArNTI3LDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zc2wuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zc2wuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3RjYXBpLnZjcHJvaiBiL1BDL1ZTOS4wL190ZXN0YnVmZmVyLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk3JQpjb3B5IGZyb20gUENidWlsZC9fdGVzdGNhcGkudmNwcm9qCmNvcHkgdG8gUEMvVlM5LjAvX3Rlc3RidWZmZXIudmNwcm9qCmluZGV4IDU1ZjI0M2YuLjAzMzc3ZTEgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX3Rlc3RjYXBpLnZjcHJvagorKysgYi9QQy9WUzkuMC9fdGVzdGJ1ZmZlci52Y3Byb2oKQEAgLTEsMTAgKzEsMTAgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KLQlOYW1lPSJfdGVzdGNhcGkiDQotCVByb2plY3RHVUlEPSJ7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfSINCi0JUm9vdE5hbWVzcGFjZT0iX3Rlc3RjYXBpIg0KKwlWZXJzaW9uPSI5LjAwIg0KKwlOYW1lPSJfdGVzdGJ1ZmZlciINCisJUHJvamVjdEdVSUQ9IntBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9Ig0KKwlSb290TmFtZXNwYWNlPSJfdGVzdGJ1ZmZlciINCiAJS2V5d29yZD0iV2luMzJQcm9qIg0KIAlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQogCT4NCkBAIC01MTEsNyArNTExLDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF90ZXN0Y2FwaW1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3Rlc3RidWZmZXIuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3RjYXBpLnZjcHJvaiBiL1BDL1ZTOS4wL190ZXN0Y2FwaS52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gUENidWlsZC9fdGVzdGNhcGkudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9fdGVzdGNhcGkudmNwcm9qCmluZGV4IDU1ZjI0M2YuLjQ1MzMwMGEgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX3Rlc3RjYXBpLnZjcHJvagorKysgYi9QQy9WUzkuMC9fdGVzdGNhcGkudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9Il90ZXN0Y2FwaSINCiAJUHJvamVjdEdVSUQ9Ins2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9Ig0KIAlSb290TmFtZXNwYWNlPSJfdGVzdGNhcGkiDQpAQCAtNTExLDcgKzUxMSw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfdGVzdGNhcGltb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90ZXN0Y2FwaW1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGtpbnRlci52Y3Byb2ogYi9QQy9WUzkuMC9fdGtpbnRlci52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gUENidWlsZC9fdGtpbnRlci52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL190a2ludGVyLnZjcHJvagppbmRleCAxYzVmMGNiLi41MTYzMzE3IDEwMDY0NAotLS0gYS9QQ2J1aWxkL190a2ludGVyLnZjcHJvagorKysgYi9QQy9WUzkuMC9fdGtpbnRlci52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0iX3RraW50ZXIiDQogCVByb2plY3RHVUlEPSJ7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfSINCiAJUm9vdE5hbWVzcGFjZT0iX3RraW50ZXIiDQpAQCAtNTI3LDExICs1MjcsMTEgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF90a2ludGVyLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfdGtpbnRlci5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x0a2FwcGluaXQuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHRrYXBwaW5pdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9iZGlzdF93aW5pbnN0LnZjcHJvaiBiL1BDL1ZTOS4wL2JkaXN0X3dpbmluc3QudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggNzclCnJlbmFtZSBmcm9tIFBDYnVpbGQvYmRpc3Rfd2luaW5zdC52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL2JkaXN0X3dpbmluc3QudmNwcm9qCmluZGV4IDY4YjM5MzEuLmI4Y2M3YWQgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvYmRpc3Rfd2luaW5zdC52Y3Byb2oKKysrIGIvUEMvVlM5LjAvYmRpc3Rfd2luaW5zdC52Y3Byb2oKQEAgLTIwLDcgKzIwLDcgQEAKIAk8Q29uZmlndXJhdGlvbnM+DQogCQk8Q29uZmlndXJhdGlvbg0KIAkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQiDQorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQiDQogCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQogCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQogCQkJVXNlT2ZNRkM9IjAiDQpAQCAtNDUsMTQgKzQ1LDE0IEBACiAJCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJ0cnVlIg0KIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQogCQkJCVRhcmdldEVudmlyb25tZW50PSIxIg0KLQkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QudGxiIg0KKwkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QudGxiIg0KIAkJCQlIZWFkZXJGaWxlTmFtZT0iIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCiAJCQkJT3B0aW1pemF0aW9uPSIxIg0KIAkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUENcYmRpc3Rfd2luaW5zdDsuLlxJbmNsdWRlOy4uXE1vZHVsZXNcemxpYiINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdDsuLlwuLlxJbmNsdWRlOy4uXC4uXE1vZHVsZXNcemxpYiINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KIAkJCQlSdW50aW1lTGlicmFyeT0iMCINCkBAIC02Nyw3ICs2Nyw3IEBACiAJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCiAJCQkJQ3VsdHVyZT0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUEM7Li5cUENcYmRpc3Rfd2luaW5zdDsuLlxJbmNsdWRlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQzsuLlwuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtNzUsMTEgKzc1LDExIEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNvbWN0bDMyLmxpYiBpbWFnZWhscC5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC5leGUiDQorCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC5leGUiDQogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KIAkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJMSUJDIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAucGRiIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAucGRiIg0KIAkJCQlTdWJTeXN0ZW09IjIiDQogCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCiAJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQpAQCAtMTM1LDE0ICsxMzUsMTQgQEAKIAkJCQlNa1R5cExpYkNvbXBhdGlibGU9InRydWUiDQogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCiAJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJCVR5cGVMaWJyYXJ5TmFtZT0iLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC50bGIiDQorCQkJCVR5cGVMaWJyYXJ5TmFtZT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC50bGIiDQogCQkJCUhlYWRlckZpbGVOYW1lPSIiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJCQlPcHRpbWl6YXRpb249IjEiDQogCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXEluY2x1ZGU7Li5cTW9kdWxlc1x6bGliIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXC4uXEluY2x1ZGU7Li5cLi5cTW9kdWxlc1x6bGliIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQogCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KQEAgLTE1Nyw3ICsxNTcsNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQogCQkJCUN1bHR1cmU9IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXFBDOy4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cSW5jbHVkZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUEM7Li5cLi5cUENcYmRpc3Rfd2luaW5zdDsuLlwuLlxJbmNsdWRlIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KQEAgLTE2NSwxMSArMTY1LDExIEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNvbWN0bDMyLmxpYiBpbWFnZWhscC5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC1hbWQ2NC5leGUiDQorCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC1hbWQ2NC5leGUiDQogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KIAkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJMSUJDIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAtYW1kNjQucGRiIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAtYW1kNjQucGRiIg0KIAkJCQlTdWJTeXN0ZW09IjIiDQogCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCiAJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQpAQCAtMjA2LDM4ICsyMDYsMzggQEAKIAkJCUZpbHRlcj0iY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGV4dHJhY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XGV4dHJhY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXGJkaXN0X3dpbmluc3RcaW5zdGFsbC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcaW5zdGFsbC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWx0ZXINCiAJCQkJTmFtZT0iemxpYiINCiAJCQkJPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCTwvRmlsdGVyPg0KQEAgLTI0Nyw3ICsyNDcsNyBAQAogCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXGJkaXN0X3dpbmluc3RcYXJjaGl2ZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcYXJjaGl2ZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtMjU2LDExICsyNTYsMTEgQEAKIAkJCUZpbHRlcj0iaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXGJkaXN0X3dpbmluc3RcaW5zdGFsbC5yYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwucmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xiZGlzdF93aW5pbnN0XFB5dGhvblBvd2VyZWQuYm1wIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcUHl0aG9uUG93ZXJlZC5ibXAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2RlYnVnLnZzcHJvcHMgYi9QQy9WUzkuMC9kZWJ1Zy52c3Byb3BzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBQQ2J1aWxkL2RlYnVnLnZzcHJvcHMKcmVuYW1lIHRvIFBDL1ZTOS4wL2RlYnVnLnZzcHJvcHMKZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL2tpbGxfcHl0aG9uLmMgYi9QQy9WUzkuMC9raWxsX3B5dGhvbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiMzIzZDMKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9WUzkuMC9raWxsX3B5dGhvbi5jCkBAIC0wLDAgKzEsMTc4IEBACisvKgorICogSGVscGVyIHByb2dyYW0gZm9yIGtpbGxpbmcgbGluZ2VyaW5nIHB5dGhvbltfZF0uZXhlIHByb2Nlc3NlcyBiZWZvcmUKKyAqIGJ1aWxkaW5nLCB0aHVzIGF0dGVtcHRpbmcgdG8gYXZvaWQgYnVpbGQgZmFpbHVyZXMgZHVlIHRvIGZpbGVzIGJlaW5nCisgKiBsb2NrZWQuCisgKi8KKworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3Y2hhci5oPgorI2luY2x1ZGUgPHRsaGVscDMyLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI3ByYWdtYSBjb21tZW50KGxpYiwgInBzYXBpIikKKworI2lmZGVmIF9ERUJVRworI2RlZmluZSBQWVRIT05fRVhFICAgICAgICAgIChMInB5dGhvbl9kLmV4ZSIpCisjZGVmaW5lIFBZVEhPTl9FWEVfTEVOICAgICAgKDEyKQorI2RlZmluZSBLSUxMX1BZVEhPTl9FWEUgICAgIChMImtpbGxfcHl0aG9uX2QuZXhlIikKKyNkZWZpbmUgS0lMTF9QWVRIT05fRVhFX0xFTiAoMTcpCisjZWxzZQorI2RlZmluZSBQWVRIT05fRVhFICAgICAgICAgIChMInB5dGhvbi5leGUiKQorI2RlZmluZSBQWVRIT05fRVhFX0xFTiAgICAgICgxMCkKKyNkZWZpbmUgS0lMTF9QWVRIT05fRVhFICAgICAoTCJraWxsX3B5dGhvbi5leGUiKQorI2RlZmluZSBLSUxMX1BZVEhPTl9FWEVfTEVOICgxNSkKKyNlbmRpZgorCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIEhBTkRMRSAgIGhwLCBoc3AsIGhzbTsgLyogcHJvY2Vzcywgc25hcHNob3QgcHJvY2Vzc2VzLCBzbmFwc2hvdCBtb2R1bGVzICovCisgICAgRFdPUkQgICAgZGFjLCBvdXJfcGlkOworICAgIHNpemVfdCAgIGxlbjsKKyAgICB3Y2hhcl90ICBwYXRoW01BWF9QQVRIKzFdOworCisgICAgTU9EVUxFRU5UUlkzMlcgIG1lOworICAgIFBST0NFU1NFTlRSWTMyVyBwZTsKKworICAgIG1lLmR3U2l6ZSA9IHNpemVvZihNT0RVTEVFTlRSWTMyVyk7CisgICAgcGUuZHdTaXplID0gc2l6ZW9mKFBST0NFU1NFTlRSWTMyVyk7CisKKyAgICBtZW1zZXQocGF0aCwgMCwgTUFYX1BBVEgrMSk7CisKKyAgICBvdXJfcGlkID0gR2V0Q3VycmVudFByb2Nlc3NJZCgpOworCisgICAgaHNtID0gQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90KFRIMzJDU19TTkFQTU9EVUxFLCBvdXJfcGlkKTsKKyAgICBpZiAoaHNtID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIHByaW50ZigiQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90WzFdIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKCFNb2R1bGUzMkZpcnN0Vyhoc20sICZtZSkpIHsKKyAgICAgICAgcHJpbnRmKCJNb2R1bGUzMkZpcnN0V1sxXSBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgIENsb3NlSGFuZGxlKGhzbSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIC8qCisgICAgICogRW51bWVyYXRlIG92ZXIgdGhlIG1vZHVsZXMgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3MgaW4gb3JkZXIgdG8gZmluZAorICAgICAqIGtpbGxfcHJvY2Vzc1tfZF0uZXhlLCB0aGVuIHRha2UgYSBub3RlIG9mIHRoZSBkaXJlY3RvcnkgaXQgbGl2ZXMgaW4uCisgICAgICovCisgICAgZG8geworICAgICAgICBpZiAoX3djc25pY21wKG1lLnN6TW9kdWxlLCBLSUxMX1BZVEhPTl9FWEUsIEtJTExfUFlUSE9OX0VYRV9MRU4pKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgbGVuID0gd2Nzbmxlbl9zKG1lLnN6RXhlUGF0aCwgTUFYX1BBVEgpIC0gS0lMTF9QWVRIT05fRVhFX0xFTjsKKyAgICAgICAgd2NzbmNweV9zKHBhdGgsIE1BWF9QQVRIKzEsIG1lLnN6RXhlUGF0aCwgbGVuKTsgCisKKyAgICAgICAgYnJlYWs7CisKKyAgICB9IHdoaWxlIChNb2R1bGUzMk5leHRXKGhzbSwgJm1lKSk7CisKKyAgICBDbG9zZUhhbmRsZShoc20pOworCisgICAgaWYgKHBhdGggPT0gTlVMTCkgeworICAgICAgICBwcmludGYoImZhaWxlZCB0byBkaXNjZXJuIGRpcmVjdG9yeSBvZiBydW5uaW5nIHByb2Nlc3NcbiIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFRha2UgYSBzbmFwc2hvdCBvZiBzeXN0ZW0gcHJvY2Vzc2VzLiAgRW51bWVyYXRlIG92ZXIgdGhlIHNuYXBzaG90LAorICAgICAqIGxvb2tpbmcgZm9yIHB5dGhvbiBwcm9jZXNzZXMuICBXaGVuIHdlIGZpbmQgb25lLCB2ZXJpZnkgaXQgbGl2ZXMKKyAgICAgKiBpbiB0aGUgc2FtZSBkaXJlY3Rvcnkgd2UgbGl2ZSBpbi4gIElmIGl0IGRvZXMsIGtpbGwgaXQuICBJZiB3ZSdyZQorICAgICAqIHVuYWJsZSB0byBraWxsIGl0LCB0cmVhdCB0aGlzIGFzIGEgZmF0YWwgZXJyb3IgYW5kIHJldHVybiAxLgorICAgICAqIAorICAgICAqIFRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgaXMgdGhhdCB3ZSdyZSBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSAKKyAgICAgKiBidWlsZCBwcm9jZXNzIG9uIHRoZSBiYXNpcyB0aGF0IHdlJ2xsIHRha2UgY2FyZSBvZiBraWxsaW5nIGFueQorICAgICAqIHJ1bm5pbmcgaW5zdGFuY2VzLCBzdWNoIHRoYXQgdGhlIGJ1aWxkIHdvbid0IGVuY291bnRlciBwZXJtaXNzaW9uCisgICAgICogZGVuaWVkIGVycm9ycyBkdXJpbmcgbGlua2luZy4gSWYgd2UgY2FuJ3Qga2lsbCBvbmUgb2YgdGhlIHByb2Nlc3NlcywKKyAgICAgKiB3ZSBjYW4ndCBwcm92aWRlIHRoaXMgYXNzdXJhbmNlLCBhbmQgdGhlIGJ1aWxkIHNob3VsZG4ndCBzdGFydC4KKyAgICAgKi8KKworICAgIGhzcCA9IENyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdChUSDMyQ1NfU05BUFBST0NFU1MsIDApOworICAgIGlmIChoc3AgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgcHJpbnRmKCJDcmVhdGVUb29saGVscDMyU25hcHNob3RbMl0gZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpZiAoIVByb2Nlc3MzMkZpcnN0Vyhoc3AsICZwZSkpIHsKKyAgICAgICAgcHJpbnRmKCJQcm9jZXNzMzJGaXJzdFcgZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOworICAgICAgICBDbG9zZUhhbmRsZShoc3ApOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBkYWMgPSBQUk9DRVNTX1FVRVJZX0lORk9STUFUSU9OIHwgUFJPQ0VTU19WTV9SRUFEIHwgUFJPQ0VTU19URVJNSU5BVEU7CisgICAgZG8geworCisgICAgICAgIC8qCisgICAgICAgICAqIFhYWCBUT0RPOiBpZiB3ZSByZWFsbHkgd2FudGVkIHRvIGJlIGZhbmN5LCB3ZSBjb3VsZCBjaGVjayB0aGUgCisgICAgICAgICAqIG1vZHVsZXMgZm9yIGFsbCBwcm9jZXNzZXMgKG5vdCBqdXN0IHRoZSBweXRob25bX2RdLmV4ZSBvbmVzKQorICAgICAgICAgKiBhbmQgc2VlIGlmIGFueSBvZiBvdXIgRExMcyBhcmUgbG9hZGVkIChpLmUuIHB5dGhvbjMzW19kXS5kbGwpLAorICAgICAgICAgKiBhcyB0aGF0IHdvdWxkIGFsc28gaW5oaWJpdCBvdXIgYWJpbGl0eSB0byByZWJ1aWxkIHRoZSBzb2x1dGlvbi4KKyAgICAgICAgICogTm90IHdvcnRoIGxvb3Npbmcgc2xlZXAgb3ZlciB0aG91Z2g7IGZvciBub3csIGEgc2ltcGxlIGNoZWNrIAorICAgICAgICAgKiBmb3IganVzdCB0aGUgcHl0aG9uIGV4ZWN1dGFibGUgc2hvdWxkIGJlIHN1ZmZpY2llbnQuCisgICAgICAgICAqLworCisgICAgICAgIGlmIChfd2NzbmljbXAocGUuc3pFeGVGaWxlLCBQWVRIT05fRVhFLCBQWVRIT05fRVhFX0xFTikpCisgICAgICAgICAgICAvKiBUaGlzIGlzbid0IGEgcHl0aG9uIHByb2Nlc3MuICovCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvKiBJdCdzIGEgcHl0aG9uIHByb2Nlc3MsIHNvIGZpZ3VyZSBvdXQgd2hpY2ggZGlyZWN0b3J5IGl0J3MgaW4uLi4gKi8KKyAgICAgICAgaHNtID0gQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90KFRIMzJDU19TTkFQTU9EVUxFLCBwZS50aDMyUHJvY2Vzc0lEKTsKKyAgICAgICAgaWYgKGhzbSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgICAgIC8qIAorICAgICAgICAgICAgICogSWYgb3VyIG1vZHVsZSBzbmFwc2hvdCBmYWlscyAod2hpY2ggd2lsbCBoYXBwZW4gaWYgd2UgZG9uJ3Qgb3duCisgICAgICAgICAgICAgKiB0aGUgcHJvY2VzcyksIGp1c3QgaWdub3JlIGl0IGFuZCBjb250aW51ZS4gIChJdCBzZWVtcyBkaWZmZXJlbnQKKyAgICAgICAgICAgICAqIHZlcnNpb25zIG9mIFdpbmRvd3MgcmV0dXJuIGRpZmZlcmVudCB2YWx1ZXMgZm9yIEdldExhc3RFcnJvcigpCisgICAgICAgICAgICAgKiBpbiB0aGlzIHNpdHVhdGlvbjsgaXQncyBlYXNpZXIgdG8ganVzdCBpZ25vcmUgaXQgYW5kIG1vdmUgb24gdnMuCisgICAgICAgICAgICAgKiBzdG9wcGluZyB0aGUgYnVpbGQgZm9yIHdoYXQgY291bGQgYmUgYSBmYWxzZSBwb3NpdGl2ZS4pCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIU1vZHVsZTMyRmlyc3RXKGhzbSwgJm1lKSkgeworICAgICAgICAgICAgcHJpbnRmKCJNb2R1bGUzMkZpcnN0V1syXSBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgICAgICBDbG9zZUhhbmRsZShoc3ApOworICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNtKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisKKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYgKF93Y3NuaWNtcChtZS5zek1vZHVsZSwgUFlUSE9OX0VYRSwgUFlUSE9OX0VYRV9MRU4pKQorICAgICAgICAgICAgICAgIC8qIFdyb25nIG1vZHVsZSwgd2UncmUgbG9va2luZyBmb3IgcHl0aG9uW19kXS5leGUuLi4gKi8KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKF93Y3NuaWNtcChwYXRoLCBtZS5zekV4ZVBhdGgsIGxlbikpCisgICAgICAgICAgICAgICAgLyogUHJvY2VzcyBkb2Vzbid0IGxpdmUgaW4gb3VyIGRpcmVjdG9yeS4gKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgLyogUHl0aG9uIHByb2Nlc3MgcmVzaWRpbmcgaW4gdGhlIHJpZ2h0IGRpcmVjdG9yeSwga2lsbCBpdCEgICovCisgICAgICAgICAgICBocCA9IE9wZW5Qcm9jZXNzKGRhYywgRkFMU0UsIHBlLnRoMzJQcm9jZXNzSUQpOworICAgICAgICAgICAgaWYgKCFocCkgeworICAgICAgICAgICAgICAgIHByaW50ZigiT3BlblByb2Nlc3MgZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOworICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzcCk7CisgICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNtKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFUZXJtaW5hdGVQcm9jZXNzKGhwLCAxKSkgeworICAgICAgICAgICAgICAgIHByaW50ZigiVGVybWluYXRlUHJvY2VzcyBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNwKTsKKyAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShoc20pOworICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHApOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgfSB3aGlsZSAoTW9kdWxlMzJOZXh0Vyhoc20sICZtZSkpOworCisgICAgICAgIENsb3NlSGFuZGxlKGhzbSk7CisKKyAgICB9IHdoaWxlIChQcm9jZXNzMzJOZXh0Vyhoc3AsICZwZSkpOworCisgICAgQ2xvc2VIYW5kbGUoaHNwKTsKKworICAgIHJldHVybiAwOworfQorCisvKiB2aTogc2V0IHRzPTggc3c9NCBzdHM9NCBleHBhbmR0YWIgKi8KZGlmZiAtLWdpdCBhL1BDYnVpbGQva2lsbF9weXRob24udmNwcm9qIGIvUEMvVlM5LjAva2lsbF9weXRob24udmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBQQ2J1aWxkL2tpbGxfcHl0aG9uLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAva2lsbF9weXRob24udmNwcm9qCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9tYWtlX2J1aWxkaW5mby5jIGIvUEMvVlM5LjAvbWFrZV9idWlsZGluZm8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjRhNjRhCi0tLSAvZGV2L251bGwKKysrIGIvUEMvVlM5LjAvbWFrZV9idWlsZGluZm8uYwpAQCAtMCwwICsxLDE5NSBAQAorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8aW8uaD4KKworI2RlZmluZSBDTURfU0laRSA1MDAKKworLyogVGhpcyBmaWxlIGNyZWF0ZXMgdGhlIGdldGJ1aWxkaW5mby5vIG9iamVjdCwgYnkgZmlyc3QKKyAgIGludm9raW5nIHN1YndjcmV2LmV4ZSAoaWYgZm91bmQpLCBhbmQgdGhlbiBpbnZva2luZyBjbC5leGUuCisgICBBcyBhIHNpZGUgZWZmZWN0LCBpdCBtaWdodCBnZW5lcmF0ZSBQQ0J1aWxkXGdldGJ1aWxkaW5mbzIuYworICAgYWxzby4gSWYgdGhpcyBpc24ndCBhIHN1YnZlcnNpb24gY2hlY2tvdXQsIG9yIHN1YndjcmV2IGlzbid0CisgICBmb3VuZCwgaXQgY29tcGlsZXMgLi5cXC4uXFxNb2R1bGVzXFxnZXRidWlsZGluZm8uYyBpbnN0ZWFkLgorCisgICBDdXJyZW50bHksIHN1YndjcmV2LmV4ZSBpcyBmb3VuZCBmcm9tIHRoZSByZWdpc3RyeSBlbnRyaWVzCisgICBvZiBUb3J0b2lzZVNWTi4KKworICAgTm8gYXR0ZW1wdCBpcyBtYWRlIHRvIHBsYWNlIGdldGJ1aWxkaW5mby5vIGludG8gdGhlIHByb3BlcgorICAgYmluYXJ5IGRpcmVjdG9yeS4gVGhpcyBpc24ndCBuZWNlc3NhcnksIGFzIHRoaXMgdG9vbCBpcworICAgaW52b2tlZCBhcyBhIHByZS1saW5rIHN0ZXAgZm9yIHB5dGhvbmNvcmUsIHNvIHRoYXQgb3ZlcndyaXRlcworICAgYW55IHByZXZpb3VzIGdldGJ1aWxkaW5mby5vLgorCisgICBIb3dldmVyLCBpZiBhIHNlY29uZCBhcmd1bWVudCBpcyBwcm92aWRlZCwgdGhpcyB3aWxsIGJlIHVzZWQKKyAgIGFzIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB3aGVyZSBhbnkgZ2V0YnVpbGRpbmZvMi5jIGFuZAorICAgZ2V0YnVpbGRpbmZvLm8gZmlsZXMgYXJlIHB1dC4gIFRoaXMgaXMgdXNlZnVsIGlmIG11bHRpcGxlCisgICBjb25maWd1cmF0aW9ucyBhcmUgYmVpbmcgYnVpbHQgaW4gcGFyYWxsZWwsIHRvIGF2b2lkIHRoZW0KKyAgIHRyYW1wbGluZyBlYWNoIG90aGVyJ3MgZmlsZXMuCisKKyovCisKK2ludCBtYWtlX2J1aWxkaW5mbzIoY29uc3QgY2hhciAqdG1wcGF0aCkKK3sKKyAgICBzdHJ1Y3QgX3N0YXQgc3Q7CisgICAgSEtFWSBoVG9ydG9pc2U7CisgICAgY2hhciBjb21tYW5kW0NNRF9TSVpFKzFdOworICAgIERXT1JEIHR5cGUsIHNpemU7CisgICAgaWYgKF9zdGF0KCIuc3ZuIiwgJnN0KSA8IDApCisgICAgICAgIHJldHVybiAwOworICAgIC8qIEFsbG93IHN1cHByZXNzaW9uIG9mIHN1YndjcmV2LmV4ZSBpbnZvY2F0aW9uIGlmIGEgbm9fc3Vid2NyZXYgZmlsZSBpcyBwcmVzZW50LiAqLworICAgIGlmIChfc3RhdCgibm9fc3Vid2NyZXYiLCAmc3QpID09IDApCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChSZWdPcGVuS2V5KEhLRVlfTE9DQUxfTUFDSElORSwgIlNvZnR3YXJlXFxUb3J0b2lzZVNWTiIsICZoVG9ydG9pc2UpICE9IEVSUk9SX1NVQ0NFU1MgJiYKKyAgICAgICAgUmVnT3BlbktleShIS0VZX0NVUlJFTlRfVVNFUiwgIlNvZnR3YXJlXFxUb3J0b2lzZVNWTiIsICZoVG9ydG9pc2UpICE9IEVSUk9SX1NVQ0NFU1MpCisgICAgICAgIC8qIFRvcnRvaXNlIG5vdCBpbnN0YWxsZWQgKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgY29tbWFuZFswXSA9ICciJzsgIC8qIHF1b3RlIHRoZSBwYXRoIHRvIHRoZSBleGVjdXRhYmxlICovCisgICAgc2l6ZSA9IHNpemVvZihjb21tYW5kKSAtIDE7CisgICAgaWYgKFJlZ1F1ZXJ5VmFsdWVFeChoVG9ydG9pc2UsICJEaXJlY3RvcnkiLCAwLCAmdHlwZSwgY29tbWFuZCsxLCAmc2l6ZSkgIT0gRVJST1JfU1VDQ0VTUyB8fAorICAgICAgICB0eXBlICE9IFJFR19TWikKKyAgICAgICAgLyogUmVnaXN0cnkgY29ycnVwdGVkICovCisgICAgICAgIHJldHVybiAwOworICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiYmluXFxzdWJ3Y3Jldi5leGUiKTsKKyAgICBpZiAoX3N0YXQoY29tbWFuZCsxLCAmc3QpIDwgMCkKKyAgICAgICAgLyogc3Vid2NyZXYuZXhlIG5vdCBwYXJ0IG9mIHRoZSByZWxlYXNlICovCisgICAgICAgIHJldHVybiAwOworICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXCIgLi5cXC4uIC4uXFwuLlxcTW9kdWxlc1xcZ2V0YnVpbGRpbmZvLmMgXCIiKTsKKyAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgdG1wcGF0aCk7IC8qIHF1b3RlZCB0bXBwYXRoICovCisgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJnZXRidWlsZGluZm8yLmNcIiIpOworCisgICAgcHV0cyhjb21tYW5kKTsgZmZsdXNoKHN0ZG91dCk7CisgICAgaWYgKHN5c3RlbShjb21tYW5kKSA8IDApCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiAxOworfQorCitjb25zdCBjaGFyIERFTElNU1tdID0geyAiIFxuIiB9OworCitpbnQgZ2V0X21lcmN1cmlhbF9pbmZvKGNoYXIgKiBoZ2JyYW5jaCwgY2hhciAqIGhndGFnLCBjaGFyICogaGdyZXYsIGludCBzaXplKQoreworICAgIGludCByZXN1bHQgPSAwOworICAgIGNoYXIgZmlsZW5hbWVbQ01EX1NJWkVdOworICAgIGNoYXIgY21kbGluZVtDTURfU0laRV07CisKKyAgICBzdHJjcHlfcyhmaWxlbmFtZSwgQ01EX1NJWkUsICJ0bXBYWFhYWFgiKTsKKyAgICBpZiAoX21rdGVtcF9zKGZpbGVuYW1lLCBDTURfU0laRSkgPT0gMCkgeworICAgICAgICBpbnQgcmM7CisKKyAgICAgICAgc3RyY3B5X3MoY21kbGluZSwgQ01EX1NJWkUsICJoZyBpZCAtYml0ID4gIik7CisgICAgICAgIHN0cmNhdF9zKGNtZGxpbmUsIENNRF9TSVpFLCBmaWxlbmFtZSk7CisgICAgICAgIHJjID0gc3lzdGVtKGNtZGxpbmUpOworICAgICAgICBpZiAocmMgPT0gMCkgeworICAgICAgICAgICAgRklMRSAqIGZwOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZm9wZW5fcygmZnAsIGZpbGVuYW1lLCAiciIpID09IDApIHsKKyAgICAgICAgICAgICAgICBjaGFyICogY3AgPSBmZ2V0cyhjbWRsaW5lLCBDTURfU0laRSwgZnApOworCisgICAgICAgICAgICAgICAgaWYgKGNwKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgKiBjb250ZXh0ID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgY2hhciAqIHRwID0gc3RydG9rX3MoY3AsIERFTElNUywgJmNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICBpZiAodHApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweV9zKGhncmV2LCBzaXplLCB0cCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0cCA9IHN0cnRva19zKE5VTEwsIERFTElNUywgJmNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyY3B5X3MoaGdicmFuY2gsIHNpemUsIHRwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cCA9IHN0cnRva19zKE5VTEwsIERFTElNUywgJmNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHlfcyhoZ3RhZywgc2l6ZSwgdHApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmY2xvc2UoZnApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIF91bmxpbmsoZmlsZW5hbWUpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciphcmd2W10pCit7CisgICAgY2hhciBjb21tYW5kW0NNRF9TSVpFXSA9ICJjbC5leGUgLWMgLURfV0lOMzIgLURVU0VfRExfRVhQT1JUIC1EX1dJTkRPV1MgLURXSU4zMiAtRF9XSU5ETEwgIjsKKyAgICBjaGFyIHRtcHBhdGhbQ01EX1NJWkVdID0gIiI7CisgICAgaW50IGRvX3VubGluaywgcmVzdWx0OworICAgIGNoYXIgKnRtcGRpciA9IE5VTEw7CisgICAgaWYgKGFyZ2MgPD0gMiB8fCBhcmdjID4gMykgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm1ha2VfYnVpbGRpbmZvICQoQ29uZmlndXJhdGlvbk5hbWUpIFt0bXBkaXJdXG4iKTsKKyAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICB9CisgICAgaWYgKHN0cmNtcChhcmd2WzFdLCAiUmVsZWFzZSIpID09IDApIHsKKyAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgIik7CisgICAgfQorICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiRGVidWciKSA9PSAwKSB7CisgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLURfREVCVUcgLU1EZCAiKTsKKyAgICB9CisgICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJSZWxlYXNlSXRhbml1bSIpID09IDApIHsKKyAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgL1VTRUNMOk1TX0lUQU5JVU0gIik7CisgICAgfQorICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiUmVsZWFzZUFNRDY0IikgPT0gMCkgeworICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi1NRCAiKTsKKyAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgL1VTRUNMOk1TX09QVEVST04gIik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInVuc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24gJXNcbiIsIGFyZ3ZbMV0pOworICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIH0KKyAgICBpZiAoYXJnYyA+IDIpIHsKKyAgICAgICAgdG1wZGlyID0gYXJndlsyXTsKKyAgICAgICAgc3RyY2F0X3ModG1wcGF0aCwgX2NvdW50b2YodG1wcGF0aCksIHRtcGRpcik7CisgICAgICAgIC8qIEhhY2sgZml4IGZvciBiYWQgY29tbWFuZCBsaW5lOiAgSWYgdGhlIGNvbW1hbmQgaXMgaXNzdWVkIGxpa2UgdGhpczoKKyAgICAgICAgICogJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIERlYnVnICIkKEludERpcikiCisgICAgICAgICAqIHdlIHdpbGwgZ2V0IGEgdHJhaWxpbmcgcXVvdGUgYmVjYXVzZSBJbnREaXIgZW5kcyB3aXRoIGEgYmFja3NsYXNoIHRoYXQgdGhlbgorICAgICAgICAgKiBlc2NhcGVzIHRoZSBmaW5hbCAiLiAgVG8gc2ltcGxpZnkgdGhlIGxpZmUgZm9yIGRldmVsb3BlcnMsIGNhdGNoIHRoYXQgcHJvYmxlbQorICAgICAgICAgKiBoZXJlIGJ5IGN1dHRpbmcgaXQgb2ZmLgorICAgICAgICAgKiBUaGUgcHJvcGVyIGNvbW1hbmQgbGluZSwgYnR3IGlzOgorICAgICAgICAgKiAkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgRGVidWcgIiQoSW50RGlyKVwiCisgICAgICAgICAqIEhvb3JheSBmb3IgY29tbWFuZCBsaW5lIHBhcnNpbmcgb24gd2luZG93cy4KKyAgICAgICAgICovCisgICAgICAgIGlmIChzdHJsZW4odG1wcGF0aCkgPiAwICYmIHRtcHBhdGhbc3RybGVuKHRtcHBhdGgpLTFdID09ICciJykKKyAgICAgICAgICAgIHRtcHBhdGhbc3RybGVuKHRtcHBhdGgpLTFdID0gJ1wwJzsKKyAgICAgICAgc3RyY2F0X3ModG1wcGF0aCwgX2NvdW50b2YodG1wcGF0aCksICJcXCIpOworICAgIH0KKworICAgIGlmICgoZG9fdW5saW5rID0gbWFrZV9idWlsZGluZm8yKHRtcHBhdGgpKSkgeworICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlwiIik7CisgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsKKyAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJnZXRidWlsZGluZm8yLmNcIiAtRFNVQldDUkVWICIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgY2hhciBoZ3RhZ1tDTURfU0laRV07CisgICAgICAgIGNoYXIgaGdicmFuY2hbQ01EX1NJWkVdOworICAgICAgICBjaGFyIGhncmV2W0NNRF9TSVpFXTsKKworICAgICAgICBpZiAoZ2V0X21lcmN1cmlhbF9pbmZvKGhnYnJhbmNoLCBoZ3RhZywgaGdyZXYsIENNRF9TSVpFKSkgeworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItREhHQlJBTkNIPVxcXCIiKTsKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCBoZ2JyYW5jaCk7CisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlxcXCIiKTsKKworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIgLURIR1RBRz1cXFwiIik7CisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgaGd0YWcpOworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcXFwiIik7CisKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiIC1ESEdWRVJTSU9OPVxcXCIiKTsKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCBoZ3Jldik7CisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlxcXCIgIik7CisgICAgICAgIH0KKyAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIuLlxcLi5cXE1vZHVsZXNcXGdldGJ1aWxkaW5mby5jIik7CisgICAgfQorICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiIC1Gb1wiIik7CisgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIHRtcHBhdGgpOworICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiZ2V0YnVpbGRpbmZvLm9cIiAtSS4uXFwuLlxcSW5jbHVkZSAtSS4uXFwuLlxcUEMiKTsKKyAgICBwdXRzKGNvbW1hbmQpOyBmZmx1c2goc3Rkb3V0KTsKKyAgICByZXN1bHQgPSBzeXN0ZW0oY29tbWFuZCk7CisgICAgaWYgKGRvX3VubGluaykgeworICAgICAgICBjb21tYW5kWzBdID0gJ1wwJzsKKyAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcIiIpOworICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgdG1wcGF0aCk7CisgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiZ2V0YnVpbGRpbmZvMi5jXCIiKTsKKyAgICAgICAgX3VubGluayhjb21tYW5kKTsKKyAgICB9CisgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjcHJvaiBiL1BDL1ZTOS4wL21ha2VfYnVpbGRpbmZvLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvbWFrZV9idWlsZGluZm8udmNwcm9qCmluZGV4IDE5MTBiOWUuLjkyNDA2NWQgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvbWFrZV9idWlsZGluZm8udmNwcm9qCisrKyBiL1BDL1ZTOS4wL21ha2VfYnVpbGRpbmZvLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IndpbmRvd3MtMTI1MCI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJtYWtlX2J1aWxkaW5mbyINCiAJUHJvamVjdEdVSUQ9IntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9Ig0KIAlSb290TmFtZXNwYWNlPSJtYWtlX2J1aWxkaW5mbyINCmRpZmYgLS1naXQgYS9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmNwcm9qIGIvUEMvVlM5LjAvbWFrZV92ZXJzaW9uaW5mby52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gUENidWlsZC9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvbWFrZV92ZXJzaW9uaW5mby52Y3Byb2oKaW5kZXggODgxZjQ0Yi4uMGExZmQyOCAxMDA2NDQKLS0tIGEvUENidWlsZC9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvagorKysgYi9QQy9WUzkuMC9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJtYWtlX3ZlcnNpb25pbmZvIg0KIAlQcm9qZWN0R1VJRD0ie0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0iDQogCVJvb3ROYW1lc3BhY2U9Im1ha2VfdmVyc2lvbmluZm8iDQpAQCAtMzIsOCArMzIsOCBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQogCQkJCURlc2NyaXB0aW9uPSJCdWlsZCBQQy9weXRob25udF9yYyhfZCkuaCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlxQQ1xweXRob25udF9yYy5oJiN4MEQ7JiN4MEE7Ig0KLQkJCQlPdXRwdXRzPSIkKFNvbHV0aW9uRGlyKS4uXFBDXHB5dGhvbm50X3JjLmgiDQorCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmMuaCYjeDBEOyYjeDBBOyINCisJCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlwuLlxQQ1xweXRob25udF9yYy5oIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCkBAIC05Miw3ICs5Miw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbl9udC5oJiN4MEQ7JiN4MEE7Ig0KKwkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbl9udC5oJiN4MEQ7JiN4MEE7Ig0KIAkJCS8+DQogCQk8L0NvbmZpZ3VyYXRpb24+DQogCQk8Q29uZmlndXJhdGlvbg0KQEAgLTEwNiw4ICsxMDYsOCBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQogCQkJCURlc2NyaXB0aW9uPSJCdWlsZCBQQy9weXRob25udF9yYyhfZCkuaCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlxQQ1xweXRob25udF9yYy5oJiN4MEQ7JiN4MEE7Ig0KLQkJCQlPdXRwdXRzPSIkKFNvbHV0aW9uRGlyKS4uXFBDXHB5dGhvbm50X3JjLmgiDQorCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmMuaCYjeDBEOyYjeDBBOyINCisJCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlwuLlxQQ1xweXRob25udF9yYy5oIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCkBAIC0xNTgsNyArMTU4LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cUENccHl0aG9uX250LmgmI3gwRDsmI3gwQTsiDQorCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250LmgmI3gwRDsmI3gwQTsiDQogCQkJLz4NCiAJCTwvQ29uZmlndXJhdGlvbj4NCiAJCTxDb25maWd1cmF0aW9uDQpAQCAtMTc1LDggKzE3NSw4IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCiAJCQkJRGVzY3JpcHRpb249IkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cUENccHl0aG9ubnRfcmNfZC5oJiN4MEQ7JiN4MEE7Ig0KLQkJCQlPdXRwdXRzPSIkKFNvbHV0aW9uRGlyKS4uXFBDXHB5dGhvbm50X3JjX2QuaCINCisJCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbm50X3JjX2QuaCYjeDBEOyYjeDBBOyINCisJCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlwuLlxQQ1xweXRob25udF9yY19kLmgiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KQEAgLTIzNSw3ICsyMzUsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbl9udF9kLmgmI3gwRDsmI3gwQTsiDQorCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25fbnRfZC5oJiN4MEQ7JiN4MEE7Ig0KIAkJCS8+DQogCQk8L0NvbmZpZ3VyYXRpb24+DQogCQk8Q29uZmlndXJhdGlvbg0KQEAgLTI0OSw4ICsyNDksOCBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQogCQkJCURlc2NyaXB0aW9uPSJCdWlsZCBQQy9weXRob25udF9yYyhfZCkuaCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbm50X3JjX2QuaCYjeDBEOyYjeDBBOyINCi0JCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlxQQ1xweXRob25udF9yY19kLmgiDQorCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25udF9yY19kLmgmI3gwRDsmI3gwQTsiDQorCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCkBAIC0zMDMsNyArMzAzLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlxQQ1xweXRob25fbnRfZC5oJiN4MEQ7JiN4MEE7Ig0KKwkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250X2QuaCYjeDBEOyYjeDBBOyINCiAJCQkvPg0KIAkJPC9Db25maWd1cmF0aW9uPg0KIAk8L0NvbmZpZ3VyYXRpb25zPg0KQEAgLTMxNCw3ICszMTQsNyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXG1ha2VfdmVyc2lvbmluZm8uYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xtYWtlX3ZlcnNpb25pbmZvLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9wY2J1aWxkLnNsbiBiL1BDL1ZTOS4wL3BjYnVpbGQuc2xuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmOGNiYjYKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9WUzkuMC9wY2J1aWxkLnNsbgpAQCAtMCwwICsxLDY1OCBAQAorTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTAuMDANCisjIFZpc3VhbCBTdHVkaW8gMjAwOA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uIiwgInB5dGhvbi52Y3Byb2oiLCAie0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9ID0ge0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJtYWtlX3ZlcnNpb25pbmZvIiwgIm1ha2VfdmVyc2lvbmluZm8udmNwcm9qIiwgIntGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbmNvcmUiLCAicHl0aG9uY29yZS52Y3Byb2oiLCAie0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9ID0ge0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0NCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9ID0gezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0NCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9ID0ge0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob253IiwgInB5dGhvbncudmNwcm9qIiwgIntGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidzl4cG9wZW4iLCAidzl4cG9wZW4udmNwcm9qIiwgIntFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSA9IHs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV9idWlsZGluZm8iLCAibWFrZV9idWlsZGluZm8udmNwcm9qIiwgIntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7MjE1MEUzMzMtOEZEQy00MkEzLTk0NzQtMUEzOTU2RDQ2REU4fSIpID0gIlNvbHV0aW9uIEl0ZW1zIiwgIlNvbHV0aW9uIEl0ZW1zIiwgIns1NTNFQzMzRS05ODE2LTQ5OTYtQTY2MC01RDYxODZBMEIwQjN9Ig0KKwlQcm9qZWN0U2VjdGlvbihTb2x1dGlvbkl0ZW1zKSA9IHByZVByb2plY3QNCisJCS4uXC4uXE1vZHVsZXNcZ2V0YnVpbGRpbmZvLmMgPSAuLlwuLlxNb2R1bGVzXGdldGJ1aWxkaW5mby5jDQorCQlyZWFkbWUudHh0ID0gcmVhZG1lLnR4dA0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIndpbnNvdW5kIiwgIndpbnNvdW5kLnZjcHJvaiIsICJ7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9kZWNpbWFsIiwgIl9kZWNpbWFsLnZjcHJvaiIsICJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9jdHlwZXMiLCAiX2N0eXBlcy52Y3Byb2oiLCAiezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzX3Rlc3QiLCAiX2N0eXBlc190ZXN0LnZjcHJvaiIsICJ7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9lbGVtZW50dHJlZSIsICJfZWxlbWVudHRyZWUudmNwcm9qIiwgInsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX21zaSIsICJfbXNpLnZjcHJvaiIsICJ7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9zb2NrZXQiLCAiX3NvY2tldC52Y3Byb2oiLCAiezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc3FsaXRlMyIsICJfc3FsaXRlMy52Y3Byb2oiLCAiezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9ID0ge0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc3NsIiwgIl9zc2wudmNwcm9qIiwgIntDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSA9IHtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9DQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfSA9IHs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfSA9IHtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3RjYXBpIiwgIl90ZXN0Y2FwaS52Y3Byb2oiLCAiezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGtpbnRlciIsICJfdGtpbnRlci52Y3Byb2oiLCAiezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfYnoyIiwgIl9iejIudmNwcm9qIiwgIns3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2x6bWEiLCAiX2x6bWEudmNwcm9qIiwgIntGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic2VsZWN0IiwgInNlbGVjdC52Y3Byb2oiLCAiezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ1bmljb2RlZGF0YSIsICJ1bmljb2RlZGF0YS52Y3Byb2oiLCAie0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweWV4cGF0IiwgInB5ZXhwYXQudmNwcm9qIiwgIntEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiYmRpc3Rfd2luaW5zdCIsICJiZGlzdF93aW5pbnN0LnZjcHJvaiIsICJ7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfaGFzaGxpYiIsICJfaGFzaGxpYi52Y3Byb2oiLCAiezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9ID0ge0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0NCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9ID0ge0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0NCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzcWxpdGUzIiwgInNxbGl0ZTMudmNwcm9qIiwgIntBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSA9IHs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX211bHRpcHJvY2Vzc2luZyIsICJfbXVsdGlwcm9jZXNzaW5nLnZjcHJvaiIsICJ7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNzbCIsICJzc2wudmNwcm9qIiwgIntFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSA9IHtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAia2lsbF9weXRob24iLCAia2lsbF9weXRob24udmNwcm9qIiwgIns2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbjNkbGwiLCAicHl0aG9uM2RsbC52Y3Byb2oiLCAiezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAieHhsaW1pdGVkIiwgInh4bGltaXRlZC52Y3Byb2oiLCAie0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3RidWZmZXIiLCAiX3Rlc3RidWZmZXIudmNwcm9qIiwgIntBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK0dsb2JhbA0KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbg0KKwkJRGVidWd8V2luMzIgPSBEZWJ1Z3xXaW4zMg0KKwkJRGVidWd8eDY0ID0gRGVidWd8eDY0DQorCQlQR0luc3RydW1lbnR8V2luMzIgPSBQR0luc3RydW1lbnR8V2luMzINCisJCVBHSW5zdHJ1bWVudHx4NjQgPSBQR0luc3RydW1lbnR8eDY0DQorCQlQR1VwZGF0ZXxXaW4zMiA9IFBHVXBkYXRlfFdpbjMyDQorCQlQR1VwZGF0ZXx4NjQgPSBQR1VwZGF0ZXx4NjQNCisJCVJlbGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyDQorCQlSZWxlYXNlfHg2NCA9IFJlbGVhc2V8eDY0DQorCUVuZEdsb2JhbFNlY3Rpb24NCisJR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24NCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwlFbmRHbG9iYWxTZWN0aW9uDQorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uDQorCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UNCisJRW5kR2xvYmFsU2VjdGlvbg0KK0VuZEdsb2JhbA0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcGdpbnN0cnVtZW50LnZzcHJvcHMgYi9QQy9WUzkuMC9wZ2luc3RydW1lbnQudnNwcm9wcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gUENidWlsZC9wZ2luc3RydW1lbnQudnNwcm9wcwpyZW5hbWUgdG8gUEMvVlM5LjAvcGdpbnN0cnVtZW50LnZzcHJvcHMKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcGd1cGRhdGUudnNwcm9wcyBiL1BDL1ZTOS4wL3BndXBkYXRlLnZzcHJvcHMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFBDYnVpbGQvcGd1cGRhdGUudnNwcm9wcwpyZW5hbWUgdG8gUEMvVlM5LjAvcGd1cGRhdGUudnNwcm9wcwpkaWZmIC0tZ2l0IGEvUENidWlsZC9weWQudnNwcm9wcyBiL1BDL1ZTOS4wL3B5ZC52c3Byb3BzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3B5ZC52c3Byb3BzCnJlbmFtZSB0byBQQy9WUzkuMC9weWQudnNwcm9wcwpkaWZmIC0tZ2l0IGEvUENidWlsZC9weWRfZC52c3Byb3BzIGIvUEMvVlM5LjAvcHlkX2QudnNwcm9wcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gUENidWlsZC9weWRfZC52c3Byb3BzCnJlbmFtZSB0byBQQy9WUzkuMC9weWRfZC52c3Byb3BzCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5ZXhwYXQudmNwcm9qIGIvUEMvVlM5LjAvcHlleHBhdC52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5MiUKcmVuYW1lIGZyb20gUENidWlsZC9weWV4cGF0LnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvcHlleHBhdC52Y3Byb2oKaW5kZXggNWEyMGE1MS4uYThkMmNkNyAxMDA2NDQKLS0tIGEvUENidWlsZC9weWV4cGF0LnZjcHJvagorKysgYi9QQy9WUzkuMC9weWV4cGF0LnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJweWV4cGF0Ig0KIAlQcm9qZWN0R1VJRD0ie0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0iDQogCVJvb3ROYW1lc3BhY2U9InB5ZXhwYXQiDQpAQCAtNDIsNyArNDIsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtMTAzLDcgKzEwMyw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC0xNjQsNyArMTY0LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTIyNiw3ICsyMjYsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtMjg3LDcgKzI4Nyw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC0zNDksNyArMzQ5LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTQxMSw3ICs0MTEsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtNDczLDcgKzQ3Myw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC01MTksMTEgKzUxOSwxMSBAQAogCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtNTMxLDE5ICs1MzEsMTkgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHB5ZXhwYXQuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHB5ZXhwYXQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHBhcnNlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlwcm9qZWN0LnZzcHJvcHMgYi9QQy9WUzkuMC9weXByb2plY3QudnNwcm9wcwpzaW1pbGFyaXR5IGluZGV4IDg1JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3B5cHJvamVjdC52c3Byb3BzCnJlbmFtZSB0byBQQy9WUzkuMC9weXByb2plY3QudnNwcm9wcwppbmRleCA2YTk0YTY4Li4wMWM3Y2E3IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5cHJvamVjdC52c3Byb3BzCisrKyBiL1BDL1ZTOS4wL3B5cHJvamVjdC52c3Byb3BzCkBAIC0xMSw3ICsxMSw3IEBACiAJCU9wdGltaXphdGlvbj0iMiINCiAJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KIAkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJ0cnVlIg0KLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cSW5jbHVkZTsgLi5cUEMiDQorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlOyAuLlwuLlxQQyINCiAJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lOMzIiDQogCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KIAkJRXhjZXB0aW9uSGFuZGxpbmc9IjAiDQpAQCAtMzQsMTEgKzM0LDExIEBACiAJLz4NCiAJPFRvb2wNCiAJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxQQzsuLlxJbmNsdWRlIg0KKwkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUEM7Li5cLi5cSW5jbHVkZSINCiAJLz4NCiAJPFVzZXJNYWNybw0KIAkJTmFtZT0iUHlEbGxOYW1lIg0KLQkJVmFsdWU9InB5dGhvbjMyIg0KKwkJVmFsdWU9InB5dGhvbjMzIg0KIAkvPg0KIAk8VXNlck1hY3JvDQogCQlOYW1lPSJQeXRob25FeGUiDQpAQCAtNDYsMTkgKzQ2LDIzIEBACiAJLz4NCiAJPFVzZXJNYWNybw0KIAkJTmFtZT0iZXh0ZXJuYWxzRGlyIg0KLQkJVmFsdWU9Ii4uXC4uIg0KKwkJVmFsdWU9Ii4uXC4uXC4uIg0KIAkvPg0KIAk8VXNlck1hY3JvDQogCQlOYW1lPSJzcWxpdGUzRGlyIg0KLQkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxzcWxpdGUtMy43LjQiDQorCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXHNxbGl0ZS0zLjcuMTIiDQogCS8+DQogCTxVc2VyTWFjcm8NCiAJCU5hbWU9ImJ6MkRpciINCiAJCVZhbHVlPSIkKGV4dGVybmFsc0RpcilcYnppcDItMS4wLjYiDQogCS8+DQogCTxVc2VyTWFjcm8NCisJCU5hbWU9Imx6bWFEaXIiDQorCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXHh6LTUuMC4zIg0KKwkvPg0KKwk8VXNlck1hY3JvDQogCQlOYW1lPSJvcGVuc3NsRGlyIg0KLQkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxvcGVuc3NsLTEuMC4waiINCisJCVZhbHVlPSIkKGV4dGVybmFsc0Rpcilcb3BlbnNzbC0xLjAuMWMiDQogCS8+DQogCTxVc2VyTWFjcm8NCiAJCU5hbWU9InRjbHRrRGlyIg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uLnZjcHJvaiBiL1BDL1ZTOS4wL3B5dGhvbi52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gUENidWlsZC9weXRob24udmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9weXRob24udmNwcm9qCmluZGV4IDQ3YjI4OWUuLmIwN2RlMjEgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uLnZjcHJvagorKysgYi9QQy9WUzkuMC9weXRob24udmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9InB5dGhvbiINCiAJUHJvamVjdEdVSUQ9IntCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9Ig0KIAlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQpAQCAtMjAyLDcgKzIwMiw3IEBACiAJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCiAJCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cSW5jbHVkZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCkBAIC0yNzcsNyArMjc3LDcgQEAKIAkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KIAkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxJbmNsdWRlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KQEAgLTYxNSwxMSArNjE1LDExIEBACiAJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xweWNvbi5pY28iDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHljb24uaWNvIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENccHl0aG9uX2V4ZS5yYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob25fZXhlLnJjIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtNjI3LDcgKzYyNyw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xweXRob24uYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHB5dGhvbi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob24zZGxsLnZjcHJvaiBiL1BDL1ZTOS4wL3B5dGhvbjNkbGwudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggNjklCnJlbmFtZSBmcm9tIFBDYnVpbGQvcHl0aG9uM2RsbC52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL3B5dGhvbjNkbGwudmNwcm9qCmluZGV4IDUyYzY3NTIuLmVkNzMzM2IgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3Byb2oKKysrIGIvUEMvVlM5LjAvcHl0aG9uM2RsbC52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0icHl0aG9uM2RsbCINCiAJUHJvamVjdEdVSUQ9Ins4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9Ig0KIAlSb290TmFtZXNwYWNlPSJweXRob24zZGxsIg0KQEAgLTI3LDkgKzI3LDkgQEAKIAkJCT4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW4iDQorCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSINCisJCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCisJCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KIAkJCQlPdXRwdXQ9IiQoT3V0RGlyKVxweXRob24zLmRsbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCiAJCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCkBAIC00Niw5ICs0Niw5IEBACiAJCQk+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KKwkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikiDQorCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQorCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCiAJCQkJT3V0cHV0PSIkKE91dERpcilccHl0aG9uMy5kbGwiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQogCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQpAQCAtNjUsOSArNjUsOSBAQAogCQkJPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCisJCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIg0KKwkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KKwkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW4iDQogCQkJCU91dHB1dD0iJChPdXREaXIpXHB5dGhvbjMuZGxsIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KIAkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KQEAgLTg0LDkgKzg0LDkgQEAKIAkJCT4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW4iDQorCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSINCisJCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCisJCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KIAkJCQlPdXRwdXQ9IiQoT3V0RGlyKVxweXRob24zLmRsbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCiAJCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCkBAIC0xMDMsOSArMTAzLDkgQEAKIAkJCT4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW4iDQorCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSINCisJCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCisJCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KIAkJCQlPdXRwdXQ9IiQoT3V0RGlyKVxweXRob24zLmRsbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCiAJCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCkBAIC0xMjIsOSArMTIyLDkgQEAKIAkJCT4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW4iDQorCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSINCisJCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCisJCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KIAkJCQlPdXRwdXQ9IiQoT3V0RGlyKVxweXRob24zLmRsbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCiAJCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCkBAIC0xNDQsNyArMTQ0LDcgQEAKIAkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9Ig0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXHB5dGhvbjMuZGVmIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbjMuZGVmIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCkBAIC0xNzIsNyArMTcyLDcgQEAKIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXHB5dGhvbjNkbGwuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob24zZGxsLmMiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KQEAgLTIxMiw3ICsyMTIsNyBAQAogCQkJVW5pcXVlSWRlbnRpZmllcj0iezY3REE2QUI2LUY4MDAtNGMwOC04QjdBLTgzQkIxMjFBQUQwMX0iDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENccHl0aG9uX250LnJjIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbl9udC5yYyINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob25jb3JlLnZjcHJvaiBiL1BDL1ZTOS4wL3B5dGhvbmNvcmUudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggNjElCnJlbmFtZSBmcm9tIFBDYnVpbGQvcHl0aG9uY29yZS52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL3B5dGhvbmNvcmUudmNwcm9qCmluZGV4IDVlNjEzMDguLjlmYjYzZmYgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3Byb2oKKysrIGIvUEMvVlM5LjAvcHl0aG9uY29yZS52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0icHl0aG9uY29yZSINCiAJUHJvamVjdEdVSUQ9IntDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9Ig0KIAlSb290TmFtZXNwYWNlPSJweXRob25jb3JlIg0KQEAgLTQzLDcgKzQzLDcgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxQeXRob247Li5cTW9kdWxlc1x6bGliIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KIAkJCS8+DQpAQCAtNTQsNyArNTQsNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQogCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXEluY2x1ZGUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtMTE4LDcgKzExOCw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYiINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KIAkJCQlSdW50aW1lTGlicmFyeT0iMiINCiAJCQkvPg0KQEAgLTEyOSw3ICsxMjksNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQogCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXEluY2x1ZGUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtMTk2LDcgKzE5Niw3IEBACiAJCQkJT3B0aW1pemF0aW9uPSIwIg0KIAkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMCINCiAJCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYiINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KIAkJCQlSdW50aW1lTGlicmFyeT0iMyINCiAJCQkvPg0KQEAgLTIwNyw3ICsyMDcsNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQogCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXEluY2x1ZGUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtMjc0LDcgKzI3NCw3IEBACiAJCQkJT3B0aW1pemF0aW9uPSIwIg0KIAkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMCINCiAJCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYiINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KIAkJCQlSdW50aW1lTGlicmFyeT0iMyINCiAJCQkvPg0KQEAgLTI4NSw3ICsyODUsNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQogCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXEluY2x1ZGUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtMzQ4LDcgKzM0OCw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYiINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KIAkJCQlSdW50aW1lTGlicmFyeT0iMiINCiAJCQkvPg0KQEAgLTM1OSw3ICszNTksNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQogCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXEluY2x1ZGUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtNDIzLDcgKzQyMyw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYiINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KIAkJCQlSdW50aW1lTGlicmFyeT0iMiINCiAJCQkvPg0KQEAgLTQzNCw3ICs0MzQsNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQogCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXEluY2x1ZGUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtNDk4LDcgKzQ5OCw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYiINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KIAkJCQlSdW50aW1lTGlicmFyeT0iMiINCiAJCQkvPg0KQEAgLTUwOSw3ICs1MDksNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQogCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXEluY2x1ZGUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtNTczLDcgKzU3Myw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYiINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KIAkJCQlSdW50aW1lTGlicmFyeT0iMiINCiAJCQkvPg0KQEAgLTU4NCw3ICs1ODQsNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQogCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXEluY2x1ZGUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtNjMxLDM1OSArNjMxLDM2MyBAQAogCQkJTmFtZT0iSW5jbHVkZSINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGFic3RyYWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxhYnN0cmFjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxhY2N1LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxhY2N1LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGFzZGwuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGFzZGwuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcYXN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxhc3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcYml0c2V0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxiaXRzZXQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcYm9vbG9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYm9vbG9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxieXRlc19tZXRob2RzLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxieXRlc19tZXRob2RzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGJ5dGVhcnJheW9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYnl0ZWFycmF5b2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGJ5dGVzb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxieXRlc29iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxjZWxsb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjZWxsb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGNldmFsLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjZXZhbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxjbGFzc29iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY2xhc3NvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcY29kZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY29kZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxjb2RlY3MuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNvZGVjcy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxjb21waWxlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjb21waWxlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGNvbXBsZXhvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNvbXBsZXhvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZGF0ZXRpbWUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGRhdGV0aW1lLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGRlc2Nyb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxkZXNjcm9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxkaWN0b2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxkaWN0b2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGR5bmFtaWNfYW5ub3RhdGlvbnMuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGR5bmFtaWNfYW5ub3RhdGlvbnMuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZW51bW9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZW51bW9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxlcnJjb2RlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxlcnJjb2RlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGV2YWwuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGV2YWwuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZmlsZW9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZmlsZW9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxmaWxldXRpbHMuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGZpbGV1dGlscy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxmbG9hdG9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZmxvYXRvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZm9ybWF0dGVyX3VuaWNvZGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGZyYW1lb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGZyYW1lb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmdW5jb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGZ1bmNvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGdlbm9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxnZW5vYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGdyYW1pbml0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGdyYW1pbml0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxncmFtbWFyLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGdyYW1tYXIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGltcG9ydC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxpbXBvcnQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGludHJjaGVjay5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxpbnRyY2hlY2suaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGl0ZXJvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcaXRlcm9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbGlzdG9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxsaXN0b2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxsb25naW50cmVwci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxsb25naW50cmVwci5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbG9uZ29iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxsb25nb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtYXJzaGFsLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXG1hcnNoYWwuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1lbW9yeW9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxtZW1vcnlvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1ldGFncmFtbWFyLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXG1ldGFncmFtbWFyLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtZXRob2RvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcbWV0aG9kb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtb2RzdXBwb3J0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXG1vZHN1cHBvcnQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1vZHVsZW9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxtb2R1bGVvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG5hbWVzcGFjZW9iamVjdC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxub2RlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXG5vZGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG9iamltcGwuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcb2JqaW1wbC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcb3Bjb2RlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXG9wY29kZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcb3NkZWZzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXG9zZGVmcy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccGFyc2V0b2suaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccGFyc2V0b2suaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHBhdGNobGV2ZWwuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccGF0Y2hsZXZlbC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccGdlbi5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxwZ2VuLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxwZ2VuaGVhZGVycy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxwZ2VuaGVhZGVycy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlfY3Vyc2VzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5X2N1cnNlcy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlhcmVuYS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweWFyZW5hLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWNhcHN1bGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHljYXBzdWxlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWN0eXBlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5Y3R5cGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5ZGVidWcuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHlkZWJ1Zy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHllcnJvcnMuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHllcnJvcnMuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5ZXhwYXQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHlleHBhdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlmcGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHlmcGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5Z2V0b3B0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5Z2V0b3B0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweW1hY3Rvb2xib3guaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHltYWN0b29sYm94LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweW1hdGguaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHltYXRoLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXRpbWUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHl0aW1lLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweW1hY3JvLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5bWVtLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweW1lbS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweXBvcnQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5cG9ydC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweXN0YXRlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXN0YXRlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5c3RyY21wLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXN0cmNtcC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweXN0cnRvZC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlzdHJ0b2QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZHRvYS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZHRvYS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxQeXRob24tYXN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxQeXRob24tYXN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXFB5dGhvbi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcUHl0aG9uLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5dGhvbnJ1bi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHl0aG9ucnVuLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5dGhyZWFkLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXRocmVhZC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxyYW5nZW9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccmFuZ2VvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcc2V0b2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzZXRvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcc2xpY2VvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHNsaWNlb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHN0cnVjdG1lbWJlci5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc3RydWN0bWVtYmVyLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHN0cnVjdHNlcS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc3RydWN0c2VxLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHN5bXRhYmxlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzeW10YWJsZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxzeXNtb2R1bGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHN5c21vZHVsZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVx0aW1lZnVuY3MuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHRpbWVmdW5jcy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVx0b2tlbi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdG9rZW4uaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcdHJhY2ViYWNrLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx0cmFjZWJhY2suaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcdHVwbGVvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHR1cGxlb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHVjbmhhc2guaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHVjbmhhc2guaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcdW5pY29kZW9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdW5pY29kZW9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVx3ZWFrcmVmb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx3ZWFrcmVmb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC05OTEsMjIyICs5OTUsMjIyIEBACiAJCQlOYW1lPSJNb2R1bGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2Jpc2VjdG1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2Jpc2VjdG1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY29kZWNzbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY29kZWNzbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jb2xsZWN0aW9uc21vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2NvbGxlY3Rpb25zbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jc3YuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jc3YuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2Z1bmN0b29sc21vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2Z1bmN0b29sc21vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfaGVhcHFtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9oZWFwcW1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfanNvbi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2pzb24uYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2xvY2FsZW1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2xvY2FsZW1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfbHNwcm9mLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbHNwcm9mLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9tYXRoLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbWF0aC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfbWF0aC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX21hdGguaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3BpY2tsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3BpY2tsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfcmFuZG9tbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfcmFuZG9tbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcmUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcmUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3N0cnVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3N0cnVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfdGltZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3dlYWtyZWYuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3RpbWUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF93aW5hcGkuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3dlYWtyZWYuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGFycmF5bW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGFycmF5bW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xhdGV4aXRtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcYXRleGl0bW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xhdWRpb29wLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGF1ZGlvb3AuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGJpbmFzY2lpLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGJpbmFzY2lpLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjbWF0aG1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjbWF0aG1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RhdGV0aW1lbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9kYXRldGltZW1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXJybm9tb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXJybm9tb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGZhdWx0aGFuZGxlci5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xnY21vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZ2Ntb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcaXRlcnRvb2xzbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xpdGVydG9vbHNtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcbWFpbi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbWFpbi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xtYXRobW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xtYXRobW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXG1kNW1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbWQ1bW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXG1tYXBtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG1tYXBtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcb3BlcmF0b3IuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG9wZXJhdG9yLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHBhcnNlcm1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccGFyc2VybW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHBvc2l4bW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xwb3NpeG1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xyb3RhdGluZ3RyZWUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xyb3RhdGluZ3RyZWUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xzaGExbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzaGExbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHNoYTI1Nm1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2hhMjU2bW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHNoYTUxMm1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2hhNTEybW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHNpZ25hbG1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2lnbmFsbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHN5bXRhYmxlbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzeW10YWJsZW1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfdGhyZWFkbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfdGhyZWFkbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHRpbWVtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHRpbWVtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNceHhzdWJ0eXBlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x4eHN1YnR5cGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemlwaW1wb3J0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6aXBpbXBvcnQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYm1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYm1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWx0ZXINCiAJCQkJTmFtZT0iX2lvIg0KIAkJCQk+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2lvXGZpbGVpby5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xmaWxlaW8uYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9pb1xieXRlc2lvLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXGJ5dGVzaW8uYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9pb1xzdHJpbmdpby5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xzdHJpbmdpby5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2lvXGJ1ZmZlcmVkaW8uYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cYnVmZmVyZWRpby5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2lvXGlvYmFzZS5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xpb2Jhc2UuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9pb1x0ZXh0aW8uYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cdGV4dGlvLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xfaW9tb2R1bGUuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCTwvRmlsdGVyPg0KQEAgLTEyMTQsMzEgKzEyMTgsMzEgQEAKIAkJCQlOYW1lPSJ6bGliIg0KIAkJCQk+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGNvbXByZXNzLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxjb21wcmVzcy5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcY3JjMzIuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGNyYzMyLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGRlZmxhdGUuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGRlZmxhdGUuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcZGVmbGF0ZS5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcZGVmbGF0ZS5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxnemlvLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxnemlvLmMiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KQEAgLTEzMDYsNjcgKzEzMTAsNjcgQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcaW5mYmFjay5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mYmFjay5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcaW5mZml4ZWQuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZpeGVkLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXHRyZWVzLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx0cmVlcy5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlx0cmVlcy5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcdHJlZXMuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcdW5jb21wci5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcdW5jb21wci5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlx6Y29uZi5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcemNvbmYuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcemNvbmYuaW4uaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHpjb25mLmluLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXHpsaWIuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHpsaWIuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHp1dGlsLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXHp1dGlsLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6dXRpbC5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJPC9GaWx0ZXI+DQpAQCAtMTM3NCw3MSArMTM3OCw3MSBAQAogCQkJCU5hbWU9ImNqa2NvZGVjcyINCiAJCQkJPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2NuLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfY24uYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2hrLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfaGsuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2lzbzIwMjIuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19pc28yMDIyLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19qcC5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2pwLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19rci5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2tyLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc190dy5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX3R3LmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcYWxnX2ppc3gwMjAxLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXGFsZ19qaXN4MDIwMS5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXGNqa2NvZGVjcy5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xjamtjb2RlY3MuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xlbXVfamlzeDAyMTNfMjAwMC5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xlbXVfamlzeDAyMTNfMjAwMC5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2NuLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2NuLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfaGsuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfaGsuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19qaXN4MDIxM19wYWlyLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2ppc3gwMjEzX3BhaXIuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19qcC5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19qcC5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2tyLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2tyLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfdHcuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfdHcuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtdWx0aWJ5dGVjb2RlYy5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtdWx0aWJ5dGVjb2RlYy5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG11bHRpYnl0ZWNvZGVjLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG11bHRpYnl0ZWNvZGVjLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQk8L0ZpbHRlcj4NCkBAIC0xNDQ3LDE3NSArMTQ1MSwxNzkgQEAKIAkJCU5hbWU9Ik9iamVjdHMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xhYnN0cmFjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYWJzdHJhY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcYWNjdS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYWNjdS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xib29sb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xib29sb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGJ5dGVzX21ldGhvZHMuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJ5dGVzX21ldGhvZHMuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcYnl0ZWFycmF5b2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xieXRlYXJyYXlvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcYnl0ZXNvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJ5dGVzb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGNhcHN1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNhcHN1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcY2VsbG9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY2VsbG9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xjbGFzc29iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY2xhc3NvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcY29kZW9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY29kZW9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xjb21wbGV4b2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjb21wbGV4b2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxjb3VudC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXGNvdW50LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGRlc2Nyb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xkZXNjcm9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xkaWN0b2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xkaWN0b2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGVudW1vYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGVudW1vYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcZXhjZXB0aW9ucy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZXhjZXB0aW9ucy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xzdHJpbmdsaWJcZmFzdHNlYXJjaC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXGZhc3RzZWFyY2guaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcZmlsZW9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZmlsZW9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xzdHJpbmdsaWJcZmluZC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXGZpbmQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcZmxvYXRvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGZsb2F0b2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGZyYW1lb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xmcmFtZW9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xmdW5jb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xmdW5jb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGdlbm9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZ2Vub2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGl0ZXJvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGl0ZXJvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcbGlzdG9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbGlzdG9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xsb25nb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xsb25nb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXG1lbW9yeW9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbWVtb3J5b2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXG1ldGhvZG9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbWV0aG9kb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXG1vZHVsZW9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbW9kdWxlb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXG9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbmFtZXNwYWNlb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXG9ibWFsbG9jLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcc3RyaW5nbGliXHBhcnRpdGlvbi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcb2JtYWxsb2MuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNccmFuZ2VvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cmluZ2xpYlxwYXJ0aXRpb24uaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcc2V0b2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xyYW5nZW9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xzbGljZW9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc2V0b2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxzcGxpdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc2xpY2VvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcc3RydWN0c2VxLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJpbmdsaWJcc3BsaXQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcdHVwbGVvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cnVjdHNlcS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1x0eXBlb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x0dXBsZW9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1x1bmljb2RlY3R5cGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHR5cGVvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcdW5pY29kZW9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcdW5pY29kZWN0eXBlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXHVuaWNvZGV0eXBlX2RiLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x1bmljb2Rlb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXHdlYWtyZWZvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHVuaWNvZGV0eXBlX2RiLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHdlYWtyZWZvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTE2MjMsNTkgKzE2MzEsNTkgQEAKIAkJCU5hbWU9IlBhcnNlciINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQYXJzZXJcYWNjZWxlci5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxhY2NlbGVyLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQYXJzZXJcYml0c2V0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGJpdHNldC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGFyc2VyXGZpcnN0c2V0cy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxmaXJzdHNldHMuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBhcnNlclxncmFtbWFyLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGdyYW1tYXIuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBhcnNlclxncmFtbWFyMS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxncmFtbWFyMS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGFyc2VyXGxpc3Rub2RlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGxpc3Rub2RlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQYXJzZXJcbWV0YWdyYW1tYXIuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcbWV0YWdyYW1tYXIuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBhcnNlclxteXJlYWRsaW5lLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXG15cmVhZGxpbmUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBhcnNlclxub2RlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXG5vZGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBhcnNlclxwYXJzZXIuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJccGFyc2VyLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQYXJzZXJccGFyc2VyLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHBhcnNlci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGFyc2VyXHBhcnNldG9rLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHBhcnNldG9rLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQYXJzZXJcdG9rZW5pemVyLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHRva2VuaXplci5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGFyc2VyXHRva2VuaXplci5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclx0b2tlbml6ZXIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTE2ODMsMzkgKzE2OTEsMzEgQEAKIAkJCU5hbWU9IlBDIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXF9zdWJwcm9jZXNzLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcd2lucmVnLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1x3aW5yZWcuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xjb25maWcuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXGNvbmZpZy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGRsX250LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xkbF9udC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGVycm1hcC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENcZXJybWFwLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcZ2V0cGF0aHAuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXGdldHBhdGhwLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcbXN2Y3J0bW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xpbXBvcnRfbnQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXG1zdmNydG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENccHljb25maWcuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweWNvbmZpZy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtMTcyMywxOTEgKzE3MjMsMTkxIEBACiAJCQlOYW1lPSJQeXRob24iDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXF93YXJuaW5ncy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxfd2FybmluZ3MuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxhc2RsLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGFzZGwuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxhc3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cYXN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cYmx0aW5tb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cYmx0aW5tb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxjZXZhbC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjZXZhbC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGNvZGVjcy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjb2RlY3MuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxjb21waWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGNvbXBpbGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxkeW5hbWljX2Fubm90YXRpb25zLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGR5bmFtaWNfYW5ub3RhdGlvbnMuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxkeW5sb2FkX3dpbi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxkeW5sb2FkX3dpbi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGVycm9ycy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxlcnJvcnMuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxmaWxldXRpbHMuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZmlsZXV0aWxzLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cZm9ybWF0dGVyX3VuaWNvZGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZm9ybWF0dGVyX3VuaWNvZGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxmcm96ZW4uYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZnJvemVuLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cZnV0dXJlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZ1dHVyZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGdldGFyZ3MuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0YXJncy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGdldGNvbXBpbGVyLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldGNvbXBpbGVyLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cZ2V0Y29weXJpZ2h0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldGNvcHlyaWdodC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGdldG9wdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRvcHQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxnZXRwbGF0Zm9ybS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRwbGF0Zm9ybS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGdldHZlcnNpb24uYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0dmVyc2lvbi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGdyYW1pbml0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdyYW1pbml0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25caW1wb3J0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGltcG9ydC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGltcG9ydGRsLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGltcG9ydGRsLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25caW1wb3J0ZGwuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25caW1wb3J0ZGwuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxtYXJzaGFsLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXG1hcnNoYWwuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxtb2RzdXBwb3J0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXG1vZHN1cHBvcnQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxteXNucHJpbnRmLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXG15c25wcmludGYuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxteXN0cnRvdWwuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cbXlzdHJ0b3VsLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25ccGVlcGhvbGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccGVlcGhvbGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxweWFyZW5hLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5YXJlbmEuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxweWN0eXBlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5Y3R5cGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxweWZwZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweWZwZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHB5bWF0aC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweW1hdGguYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxweXRpbWUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHl0aW1lLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25ccHlzdGF0ZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXN0YXRlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25ccHlzdHJjbXAuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlzdHJjbXAuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxweXN0cnRvZC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXN0cnRvZC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGR0b2EuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZHRvYS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXFB5dGhvbi1hc3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cUHl0aG9uLWFzdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHB5dGhvbnJ1bi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXRob25ydW4uYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAgCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25ccmFuZG9tLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHJhbmRvbS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHN0cnVjdG1lbWJlci5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxzdHJ1Y3RtZW1iZXIuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxzeW10YWJsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxzeW10YWJsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHN5c21vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxzeXNtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblx0aHJlYWQuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cdGhyZWFkLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cdGhyZWFkX250LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHRocmVhZF9udC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHRyYWNlYmFjay5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblx0cmFjZWJhY2suYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTE5MTUsNyArMTkxNSw3IEBACiAJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xweXRob25fbnQucmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uX250LnJjIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob253LnZjcHJvaiBiL1BDL1ZTOS4wL3B5dGhvbncudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIFBDYnVpbGQvcHl0aG9udy52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL3B5dGhvbncudmNwcm9qCmluZGV4IDdhZTU2MmEuLjdmNWMwNGIgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9udy52Y3Byb2oKKysrIGIvUEMvVlM5LjAvcHl0aG9udy52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0icHl0aG9udyINCiAJUHJvamVjdEdVSUQ9IntGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9Ig0KIAlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQpAQCAtNjAwLDcgKzYwMCw3IEBACiAJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xweXRob25fZXhlLnJjIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbl9leGUucmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC02MDgsNyArNjA4LDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xXaW5NYWluLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcV2luTWFpbi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9yZWxlYXNlLnZzcHJvcHMgYi9QQy9WUzkuMC9yZWxlYXNlLnZzcHJvcHMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFBDYnVpbGQvcmVsZWFzZS52c3Byb3BzCnJlbmFtZSB0byBQQy9WUzkuMC9yZWxlYXNlLnZzcHJvcHMKZGlmZiAtLWdpdCBhL1BDYnVpbGQvc2VsZWN0LnZjcHJvaiBiL1BDL1ZTOS4wL3NlbGVjdC52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gUENidWlsZC9zZWxlY3QudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9zZWxlY3QudmNwcm9qCmluZGV4IDAyZTBhMmYuLjYzN2ZkOTcgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvc2VsZWN0LnZjcHJvagorKysgYi9QQy9WUzkuMC9zZWxlY3QudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9InNlbGVjdCINCiAJUHJvamVjdEdVSUQ9InsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9Ig0KIAlSb290TmFtZXNwYWNlPSJzZWxlY3QiDQpAQCAtNTI3LDcgKzUyNyw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xzZWxlY3Rtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNlbGVjdG1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9zcWxpdGUzLnZjcHJvaiBiL1BDL1ZTOS4wL3NxbGl0ZTMudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIFBDYnVpbGQvc3FsaXRlMy52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL3NxbGl0ZTMudmNwcm9qCmluZGV4IGUxNzcxZjQuLmVmOGMzMjggMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvc3FsaXRlMy52Y3Byb2oKKysrIGIvUEMvVlM5LjAvc3FsaXRlMy52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0ic3FsaXRlMyINCiAJUHJvamVjdEdVSUQ9IntBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9Ig0KIAlSb290TmFtZXNwYWNlPSJzcWxpdGUzIg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3FsaXRlMy52c3Byb3BzIGIvUEMvVlM5LjAvc3FsaXRlMy52c3Byb3BzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3NxbGl0ZTMudnNwcm9wcwpyZW5hbWUgdG8gUEMvVlM5LjAvc3FsaXRlMy52c3Byb3BzCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NzbC52Y3Byb2ogYi9QQy9WUzkuMC9zc2wudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIFBDYnVpbGQvc3NsLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvc3NsLnZjcHJvagppbmRleCBlYzJiZTMwLi5kMzBlODc3IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3NzbC52Y3Byb2oKKysrIGIvUEMvVlM5LjAvc3NsLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJzc2wiDQogCVByb2plY3RHVUlEPSJ7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfSINCiAJUm9vdE5hbWVzcGFjZT0ic3NsIg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvdW5pY29kZWRhdGEudmNwcm9qIGIvUEMvVlM5LjAvdW5pY29kZWRhdGEudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIFBDYnVpbGQvdW5pY29kZWRhdGEudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC91bmljb2RlZGF0YS52Y3Byb2oKaW5kZXggNTk2ODJhMS4uYjY2ZmY3MiAxMDA2NDQKLS0tIGEvUENidWlsZC91bmljb2RlZGF0YS52Y3Byb2oKKysrIGIvUEMvVlM5LjAvdW5pY29kZWRhdGEudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9InVuaWNvZGVkYXRhIg0KIAlQcm9qZWN0R1VJRD0ie0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0iDQogCVJvb3ROYW1lc3BhY2U9InVuaWNvZGVkYXRhIg0KQEAgLTUxMSwxMSArNTExLDExIEBACiAJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x1bmljb2RlZGF0YV9kYi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdW5pY29kZWRhdGFfZGIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcdW5pY29kZW5hbWVfZGIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHVuaWNvZGVuYW1lX2RiLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC01MjMsNyArNTIzLDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHVuaWNvZGVkYXRhLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x1bmljb2RlZGF0YS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC93OXhwb3Blbi52Y3Byb2ogYi9QQy9WUzkuMC93OXhwb3Blbi52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gUENidWlsZC93OXhwb3Blbi52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL3c5eHBvcGVuLnZjcHJvagppbmRleCAwNWQ4ZjgxLi43YTg1YjAwIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3c5eHBvcGVuLnZjcHJvagorKysgYi9QQy9WUzkuMC93OXhwb3Blbi52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0idzl4cG9wZW4iDQogCVByb2plY3RHVUlEPSJ7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fSINCiAJUm9vdE5hbWVzcGFjZT0idzl4cG9wZW4iDQpAQCAtNTY2LDcgKzU2Niw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENcdzl4cG9wZW4uYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1x3OXhwb3Blbi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC93aW5zb3VuZC52Y3Byb2ogYi9QQy9WUzkuMC93aW5zb3VuZC52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gUENidWlsZC93aW5zb3VuZC52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL3dpbnNvdW5kLnZjcHJvagppbmRleCA2OTQ3MGNjLi40N2RiZjI5IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3dpbnNvdW5kLnZjcHJvagorKysgYi9QQy9WUzkuMC93aW5zb3VuZC52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0id2luc291bmQiDQogCVByb2plY3RHVUlEPSJ7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fSINCiAJUm9vdE5hbWVzcGFjZT0id2luc291bmQiDQpAQCAtNTEzLDcgKzUxMyw3IEBACiAJCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1x3aW5zb3VuZC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHdpbnNvdW5kLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3g2NC52c3Byb3BzIGIvUEMvVlM5LjAveDY0LnZzcHJvcHMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFBDYnVpbGQveDY0LnZzcHJvcHMKcmVuYW1lIHRvIFBDL1ZTOS4wL3g2NC52c3Byb3BzCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3h4bGltaXRlZC52Y3Byb2ogYi9QQy9WUzkuMC94eGxpbWl0ZWQudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIFBDYnVpbGQveHhsaW1pdGVkLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAveHhsaW1pdGVkLnZjcHJvagppbmRleCA2ZGEyMDE2Li5hM2FhYWQ2IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3h4bGltaXRlZC52Y3Byb2oKKysrIGIvUEMvVlM5LjAveHhsaW1pdGVkLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJ4eGxpbWl0ZWQiDQogCVByb2plY3RHVUlEPSJ7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfSINCiAJUm9vdE5hbWVzcGFjZT0ieHhsaW1pdGVkIg0KQEAgLTQwNyw3ICs0MDcsNyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNceHhsaW1pdGVkLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x4eGxpbWl0ZWQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDL19tc2kuYyBiL1BDL19tc2kuYwppbmRleCBkNGQ4NDgzLi4wYjViOTRlIDEwMDY0NAotLS0gYS9QQy9fbXNpLmMKKysrIGIvUEMvX21zaS5jCkBAIC0xOCw3ICsxOCw3IEBACiB1dWlkY3JlYXRlKFB5T2JqZWN0KiBvYmosIFB5T2JqZWN0KmFyZ3MpCiB7CiAgICAgVVVJRCByZXN1bHQ7Ci0gICAgdW5zaWduZWQgc2hvcnQgKmNyZXN1bHQ7CisgICAgd2NoYXJfdCAqY3Jlc3VsdDsKICAgICBQeU9iamVjdCAqb3Jlc3VsdDsKIAogICAgIC8qIE1heSByZXR1cm4gb2ssIGxvY2FsIG9ubHksIGFuZCBubyBhZGRyZXNzLgpAQCAtMzUsNyArMzUsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBvcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKGNyZXN1bHQsIHdjc2xlbihjcmVzdWx0KSk7CisgICAgb3Jlc3VsdCA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoY3Jlc3VsdCwgd2NzbGVuKGNyZXN1bHQpKTsKICAgICBScGNTdHJpbmdGcmVlVygmY3Jlc3VsdCk7CiAgICAgcmV0dXJuIG9yZXN1bHQ7CiAKQEAgLTEyMiw3ICsxMjIsOSBAQAogc3RhdGljIEZORkNJU1RBVFVTKGNiX3N0YXR1cykKIHsKICAgICBpZiAocHYpIHsKLSAgICAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QocHYsICJzdGF0dXMiLCAiaWlpIiwgdHlwZVN0YXR1cywgY2IxLCBjYjIpOworICAgICAgICBfUHlfSURFTlRJRklFUihzdGF0dXMpOworCisgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHB2LCAmUHlJZF9zdGF0dXMsICJpaWkiLCB0eXBlU3RhdHVzLCBjYjEsIGNiMik7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CkBAIC0xMzMsNyArMTM1LDkgQEAKIHN0YXRpYyBGTkZDSUdFVE5FWFRDQUJJTkVUKGNiX2dldG5leHRjYWJpbmV0KQogewogICAgIGlmIChwdikgewotICAgICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChwdiwgImdldG5leHRjYWJpbmV0IiwgImkiLCBwY2NhYi0+aUNhYik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGdldG5leHRjYWJpbmV0KTsKKworICAgICAgICBQeU9iamVjdCAqcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwdiwgJlB5SWRfZ2V0bmV4dGNhYmluZXQsICJpIiwgcGNjYWItPmlDYWIpOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhyZXN1bHQpKSB7CkBAIC0zNzUsNyArMzc5LDcgQEAKICAgICB9CiAgICAgaWYgKHN0YXR1cyAhPSBFUlJPUl9TVUNDRVNTKQogICAgICAgICByZXR1cm4gbXNpZXJyb3IoKGludCkgc3RhdHVzKTsKLSAgICBzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocmVzLCBzaXplKTsKKyAgICBzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHJlcywgc2l6ZSk7CiAgICAgaWYgKGJ1ZiAhPSByZXMpCiAgICAgICAgIGZyZWUocmVzKTsKICAgICByZXR1cm4gc3RyaW5nOwpAQCAtMzk3LDcgKzQwMSw3IEBACiB7CiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgZmllbGQ7Ci0gICAgUHlfVU5JQ09ERSAqZGF0YTsKKyAgICB3Y2hhcl90ICpkYXRhOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpdTpTZXRTdHJpbmciLCAmZmllbGQsICZkYXRhKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC00MTQsNyArNDE4LDcgQEAKIHsKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBmaWVsZDsKLSAgICBQeV9VTklDT0RFICpkYXRhOworICAgIHdjaGFyX3QgKmRhdGE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml1OlNldFN0cmVhbSIsICZmaWVsZCwgJmRhdGEpKQogICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL1BDL19zdWJwcm9jZXNzLmMgYi9QQy9fc3VicHJvY2Vzcy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWE3OWE3Li4wMDAwMDAwCi0tLSBhL1BDL19zdWJwcm9jZXNzLmMKKysrIC9kZXYvbnVsbApAQCAtMSw2OTAgKzAsMCBAQAotLyoKLSAqIHN1cHBvcnQgcm91dGluZXMgZm9yIHN1YnByb2Nlc3MgbW9kdWxlCi0gKgotICogQ3VycmVudGx5LCB0aGlzIGV4dGVuc2lvbiBtb2R1bGUgaXMgb25seSByZXF1aXJlZCB3aGVuIHVzaW5nIHRoZQotICogc3VicHJvY2VzcyBtb2R1bGUgb24gV2luZG93cywgYnV0IGluIHRoZSBmdXR1cmUsIHN0dWJzIGZvciBvdGhlcgotICogcGxhdGZvcm1zIG1pZ2h0IGJlIGFkZGVkIGhlcmUgYXMgd2VsbC4KLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQgYnkgRnJlZHJpayBMdW5kaCA8ZnJlZHJpa0BweXRob253YXJlLmNvbT4KLSAqIENvcHlyaWdodCAoYykgMjAwNCBieSBTZWNyZXQgTGFicyBBQiwgaHR0cDovL3d3dy5weXRob253YXJlLmNvbQotICogQ29weXJpZ2h0IChjKSAyMDA0IGJ5IFBldGVyIEFzdHJhbmQgPGFzdHJhbmRAbHlzYXRvci5saXUuc2U+Ci0gKgotICogQnkgb2J0YWluaW5nLCB1c2luZywgYW5kL29yIGNvcHlpbmcgdGhpcyBzb2Z0d2FyZSBhbmQvb3IgaXRzCi0gKiBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24sIHlvdSBhZ3JlZSB0aGF0IHlvdSBoYXZlIHJlYWQsIHVuZGVyc3Rvb2QsCi0gKiBhbmQgd2lsbCBjb21wbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRlcm1zIGFuZCBjb25kaXRpb25zOgotICoKLSAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kCi0gKiBpdHMgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMKLSAqIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4KLSAqIGFsbCBjb3BpZXMsIGFuZCB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24KLSAqIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZiB0aGUKLSAqIGF1dGhvcnMgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8KLSAqIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvcgotICogcGVybWlzc2lvbi4KLSAqCi0gKiBUSEUgQVVUSE9SUyBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSwKLSAqIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4KLSAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTCi0gKiBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsCi0gKiBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgotICogV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCi0gKgotICovCi0KLS8qIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4gKi8KLS8qIFNlZSBodHRwOi8vd3d3LnB5dGhvbi5vcmcvMi40L2xpY2Vuc2UgZm9yIGxpY2Vuc2luZyBkZXRhaWxzLiAqLwotCi0jaW5jbHVkZSAiUHl0aG9uLmgiCi0KLSNkZWZpbmUgV0lORE9XU19MRUFOX0FORF9NRUFOCi0jaW5jbHVkZSAid2luZG93cy5oIgotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogaGFuZGxlIHdyYXBwZXIuICBub3RlIHRoYXQgdGhpcyBsaWJyYXJ5IHVzZXMgaW50ZWdlcnMgd2hlbiBwYXNzaW5nCi0gICBoYW5kbGVzIHRvIGEgZnVuY3Rpb24sIGFuZCBoYW5kbGUgd3JhcHBlcnMgd2hlbiByZXR1cm5pbmcgaGFuZGxlcy4KLSAgIHRoZSB3cmFwcGVyIGlzIHVzZWQgdG8gcHJvdmlkZSBEZXRhY2ggYW5kIENsb3NlIG1ldGhvZHMgKi8KLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5T2JqZWN0X0hFQUQKLSAgICBIQU5ETEUgaGFuZGxlOwotfSBzcF9oYW5kbGVfb2JqZWN0OwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IHNwX2hhbmRsZV90eXBlOwotCi1zdGF0aWMgUHlPYmplY3QqCi1zcF9oYW5kbGVfbmV3KEhBTkRMRSBoYW5kbGUpCi17Ci0gICAgc3BfaGFuZGxlX29iamVjdCogc2VsZjsKLQotICAgIHNlbGYgPSBQeU9iamVjdF9ORVcoc3BfaGFuZGxlX29iamVjdCwgJnNwX2hhbmRsZV90eXBlKTsKLSAgICBpZiAoc2VsZiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHNlbGYtPmhhbmRsZSA9IGhhbmRsZTsKLQotICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwotfQotCi0jaWYgZGVmaW5lZChNU19XSU4zMikgJiYgIWRlZmluZWQoTVNfV0lONjQpCi0jZGVmaW5lIEhBTkRMRV9UT19QWU5VTShoYW5kbGUpIFB5TG9uZ19Gcm9tTG9uZygobG9uZykgaGFuZGxlKQotI2RlZmluZSBQWV9IQU5ETEVfUEFSQU0gImwiCi0jZWxzZQotI2RlZmluZSBIQU5ETEVfVE9fUFlOVU0oaGFuZGxlKSBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIGhhbmRsZSkKLSNkZWZpbmUgUFlfSEFORExFX1BBUkFNICJMIgotI2VuZGlmCi0KLXN0YXRpYyBQeU9iamVjdCoKLXNwX2hhbmRsZV9kZXRhY2goc3BfaGFuZGxlX29iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgSEFORExFIGhhbmRsZTsKLQotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpEZXRhY2giKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBoYW5kbGUgPSBzZWxmLT5oYW5kbGU7Ci0KLSAgICBzZWxmLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKLQotICAgIC8qIG5vdGU6IHJldHVybiB0aGUgY3VycmVudCBoYW5kbGUsIGFzIGFuIGludGVnZXIgKi8KLSAgICByZXR1cm4gSEFORExFX1RPX1BZTlVNKGhhbmRsZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCoKLXNwX2hhbmRsZV9jbG9zZShzcF9oYW5kbGVfb2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6Q2xvc2UiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoc2VsZi0+aGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIENsb3NlSGFuZGxlKHNlbGYtPmhhbmRsZSk7Ci0gICAgICAgIHNlbGYtPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotICAgIH0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci19Ci0KLXN0YXRpYyB2b2lkCi1zcF9oYW5kbGVfZGVhbGxvYyhzcF9oYW5kbGVfb2JqZWN0KiBzZWxmKQotewotICAgIGlmIChzZWxmLT5oYW5kbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIENsb3NlSGFuZGxlKHNlbGYtPmhhbmRsZSk7Ci0gICAgUHlPYmplY3RfRlJFRShzZWxmKTsKLX0KLQotc3RhdGljIFB5TWV0aG9kRGVmIHNwX2hhbmRsZV9tZXRob2RzW10gPSB7Ci0gICAgeyJEZXRhY2giLCAoUHlDRnVuY3Rpb24pIHNwX2hhbmRsZV9kZXRhY2gsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJDbG9zZSIsICAoUHlDRnVuY3Rpb24pIHNwX2hhbmRsZV9jbG9zZSwgIE1FVEhfVkFSQVJHU30sCi0gICAge05VTEwsIE5VTEx9Ci19OwotCi1zdGF0aWMgUHlPYmplY3QqCi1zcF9oYW5kbGVfYXNfaW50KHNwX2hhbmRsZV9vYmplY3QqIHNlbGYpCi17Ci0gICAgcmV0dXJuIEhBTkRMRV9UT19QWU5VTShzZWxmLT5oYW5kbGUpOwotfQotCi1zdGF0aWMgUHlOdW1iZXJNZXRob2RzIHNwX2hhbmRsZV9hc19udW1iZXI7Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3Qgc3BfaGFuZGxlX3R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIl9zdWJwcm9jZXNzX2hhbmRsZSIsIHNpemVvZihzcF9oYW5kbGVfb2JqZWN0KSwgMCwKLSAgICAoZGVzdHJ1Y3Rvcikgc3BfaGFuZGxlX2RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgJnNwX2hhbmRsZV9hc19udW1iZXIsICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyp0cF9mbGFncyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCovCi0gICAgc3BfaGFuZGxlX21ldGhvZHMsICAgICAgICAgICAgICAgICAgLyp0cF9tZXRob2RzKi8KLX07Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiB3aW5kb3dzIEFQSSBmdW5jdGlvbnMgKi8KLQotUHlEb2NfU1RSVkFSKEdldFN0ZEhhbmRsZV9kb2MsCi0iR2V0U3RkSGFuZGxlKGhhbmRsZSkgLT4gaW50ZWdlclxuXAotXG5cCi1SZXR1cm4gYSBoYW5kbGUgdG8gdGhlIHNwZWNpZmllZCBzdGFuZGFyZCBkZXZpY2VcblwKLShTVERfSU5QVVRfSEFORExFLCBTVERfT1VUUFVUX0hBTkRMRSwgU1REX0VSUk9SX0hBTkRMRSkuXG5cCi1UaGUgaW50ZWdlciBhc3NvY2lhdGVkIHdpdGggdGhlIGhhbmRsZSBvYmplY3QgaXMgcmV0dXJuZWQuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1zcF9HZXRTdGRIYW5kbGUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIEhBTkRMRSBoYW5kbGU7Ci0gICAgaW50IHN0ZF9oYW5kbGU7Ci0KLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOkdldFN0ZEhhbmRsZSIsICZzdGRfaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaGFuZGxlID0gR2V0U3RkSGFuZGxlKChEV09SRCkgc3RkX2hhbmRsZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7Ci0KLSAgICBpZiAoISBoYW5kbGUpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICB9Ci0KLSAgICAvKiBub3RlOiByZXR1cm5zIGludGVnZXIsIG5vdCBoYW5kbGUgb2JqZWN0ICovCi0gICAgcmV0dXJuIEhBTkRMRV9UT19QWU5VTShoYW5kbGUpOwotfQotCi1QeURvY19TVFJWQVIoR2V0Q3VycmVudFByb2Nlc3NfZG9jLAotIkdldEN1cnJlbnRQcm9jZXNzKCkgLT4gaGFuZGxlXG5cCi1cblwKLVJldHVybiBhIGhhbmRsZSBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3MuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1zcF9HZXRDdXJyZW50UHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkdldEN1cnJlbnRQcm9jZXNzIikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIHNwX2hhbmRsZV9uZXcoR2V0Q3VycmVudFByb2Nlc3MoKSk7Ci19Ci0KLVB5RG9jX1NUUlZBUihEdXBsaWNhdGVIYW5kbGVfZG9jLAotIkR1cGxpY2F0ZUhhbmRsZShzb3VyY2VfcHJvY19oYW5kbGUsIHNvdXJjZV9oYW5kbGUsXG5cCi0gICAgICAgICAgICAgICAgIHRhcmdldF9wcm9jX2hhbmRsZSwgdGFyZ2V0X2hhbmRsZSwgYWNjZXNzLFxuXAotICAgICAgICAgICAgICAgICBpbmhlcml0Wywgb3B0aW9uc10pIC0+IGhhbmRsZVxuXAotXG5cCi1SZXR1cm4gYSBkdXBsaWNhdGUgaGFuZGxlIG9iamVjdC5cblwKLVxuXAotVGhlIGR1cGxpY2F0ZSBoYW5kbGUgcmVmZXJzIHRvIHRoZSBzYW1lIG9iamVjdCBhcyB0aGUgb3JpZ2luYWxcblwKLWhhbmRsZS4gVGhlcmVmb3JlLCBhbnkgY2hhbmdlcyB0byB0aGUgb2JqZWN0IGFyZSByZWZsZWN0ZWRcblwKLXRocm91Z2ggYm90aCBoYW5kbGVzLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotc3BfRHVwbGljYXRlSGFuZGxlKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBIQU5ETEUgdGFyZ2V0X2hhbmRsZTsKLSAgICBCT09MIHJlc3VsdDsKLQotICAgIEhBTkRMRSBzb3VyY2VfcHJvY2Vzc19oYW5kbGU7Ci0gICAgSEFORExFIHNvdXJjZV9oYW5kbGU7Ci0gICAgSEFORExFIHRhcmdldF9wcm9jZXNzX2hhbmRsZTsKLSAgICBpbnQgZGVzaXJlZF9hY2Nlc3M7Ci0gICAgaW50IGluaGVyaXRfaGFuZGxlOwotICAgIGludCBvcHRpb25zID0gMDsKLQotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX0hBTkRMRV9QQVJBTSBQWV9IQU5ETEVfUEFSQU0gUFlfSEFORExFX1BBUkFNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiaWl8aTpEdXBsaWNhdGVIYW5kbGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNvdXJjZV9wcm9jZXNzX2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZzb3VyY2VfaGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhcmdldF9wcm9jZXNzX2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZkZXNpcmVkX2FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmhlcml0X2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25zKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzdWx0ID0gRHVwbGljYXRlSGFuZGxlKAotICAgICAgICBzb3VyY2VfcHJvY2Vzc19oYW5kbGUsCi0gICAgICAgIHNvdXJjZV9oYW5kbGUsCi0gICAgICAgIHRhcmdldF9wcm9jZXNzX2hhbmRsZSwKLSAgICAgICAgJnRhcmdldF9oYW5kbGUsCi0gICAgICAgIGRlc2lyZWRfYWNjZXNzLAotICAgICAgICBpbmhlcml0X2hhbmRsZSwKLSAgICAgICAgb3B0aW9ucwotICAgICk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmICghIHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKLQotICAgIHJldHVybiBzcF9oYW5kbGVfbmV3KHRhcmdldF9oYW5kbGUpOwotfQotCi1QeURvY19TVFJWQVIoQ3JlYXRlUGlwZV9kb2MsCi0iQ3JlYXRlUGlwZShwaXBlX2F0dHJzLCBzaXplKSAtPiAocmVhZF9oYW5kbGUsIHdyaXRlX2hhbmRsZSlcblwKLVxuXAotQ3JlYXRlIGFuIGFub255bW91cyBwaXBlLCBhbmQgcmV0dXJuIGhhbmRsZXMgdG8gdGhlIHJlYWQgYW5kXG5cCi13cml0ZSBlbmRzIG9mIHRoZSBwaXBlLlxuXAotXG5cCi1waXBlX2F0dHJzIGlzIGlnbm9yZWQgaW50ZXJuYWxseSBhbmQgY2FuIGJlIE5vbmUuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1zcF9DcmVhdGVQaXBlKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBIQU5ETEUgcmVhZF9waXBlOwotICAgIEhBTkRMRSB3cml0ZV9waXBlOwotICAgIEJPT0wgcmVzdWx0OwotCi0gICAgUHlPYmplY3QqIHBpcGVfYXR0cmlidXRlczsgLyogaWdub3JlZCAqLwotICAgIGludCBzaXplOwotCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2k6Q3JlYXRlUGlwZSIsICZwaXBlX2F0dHJpYnV0ZXMsICZzaXplKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzdWx0ID0gQ3JlYXRlUGlwZSgmcmVhZF9waXBlLCAmd3JpdGVfcGlwZSwgTlVMTCwgc2l6ZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmICghIHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKLQotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKAotICAgICAgICAiTk4iLCBzcF9oYW5kbGVfbmV3KHJlYWRfcGlwZSksIHNwX2hhbmRsZV9uZXcod3JpdGVfcGlwZSkpOwotfQotCi0vKiBoZWxwZXJzIGZvciBjcmVhdGVwcm9jZXNzICovCi0KLXN0YXRpYyBpbnQKLWdldGludChQeU9iamVjdCogb2JqLCBjaGFyKiBuYW1lKQotewotICAgIFB5T2JqZWN0KiB2YWx1ZTsKLSAgICBpbnQgcmV0OwotCi0gICAgdmFsdWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgbmFtZSk7Ci0gICAgaWYgKCEgdmFsdWUpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsgLyogRklYTUU6IHByb3BhZ2F0ZSBlcnJvcj8gKi8KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldCA9IChpbnQpIFB5TG9uZ19Bc0xvbmcodmFsdWUpOwotICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIEhBTkRMRQotZ2V0aGFuZGxlKFB5T2JqZWN0KiBvYmosIGNoYXIqIG5hbWUpCi17Ci0gICAgc3BfaGFuZGxlX29iamVjdCogdmFsdWU7Ci0gICAgSEFORExFIHJldDsKLQotICAgIHZhbHVlID0gKHNwX2hhbmRsZV9vYmplY3QqKSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgbmFtZSk7Ci0gICAgaWYgKCEgdmFsdWUpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsgLyogRklYTUU6IHByb3BhZ2F0ZSBlcnJvcj8gKi8KLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeV9UWVBFKHZhbHVlKSAhPSAmc3BfaGFuZGxlX3R5cGUpCi0gICAgICAgIHJldCA9IE5VTEw7Ci0gICAgZWxzZQotICAgICAgICByZXQgPSB2YWx1ZS0+aGFuZGxlOwotICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIFB5T2JqZWN0KgotZ2V0ZW52aXJvbm1lbnQoUHlPYmplY3QqIGVudmlyb25tZW50KQotewotICAgIGludCBpOwotICAgIFB5X3NzaXplX3QgZW52c2l6ZTsKLSAgICBQeU9iamVjdCogb3V0ID0gTlVMTDsKLSAgICBQeU9iamVjdCoga2V5czsKLSAgICBQeU9iamVjdCogdmFsdWVzOwotICAgIFB5X1VOSUNPREUqIHA7Ci0KLSAgICAvKiBjb252ZXJ0IGVudmlyb25tZW50IGRpY3Rpb25hcnkgdG8gd2luZG93cyBlbnZpcm9tZW50IHN0cmluZyAqLwotICAgIGlmICghIFB5TWFwcGluZ19DaGVjayhlbnZpcm9ubWVudCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLCAiZW52aXJvbm1lbnQgbXVzdCBiZSBkaWN0aW9uYXJ5IG9yIE5vbmUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgZW52c2l6ZSA9IFB5TWFwcGluZ19MZW5ndGgoZW52aXJvbm1lbnQpOwotCi0gICAga2V5cyA9IFB5TWFwcGluZ19LZXlzKGVudmlyb25tZW50KTsKLSAgICB2YWx1ZXMgPSBQeU1hcHBpbmdfVmFsdWVzKGVudmlyb25tZW50KTsKLSAgICBpZiAoIWtleXMgfHwgIXZhbHVlcykKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIG91dCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAyMDQ4KTsKLSAgICBpZiAoISBvdXQpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUob3V0KTsKLQotICAgIGZvciAoaSA9IDA7IGkgPCBlbnZzaXplOyBpKyspIHsKLSAgICAgICAgUHlfc3NpemVfdCBrc2l6ZSwgdnNpemUsIHRvdGFsc2l6ZTsKLSAgICAgICAgUHlPYmplY3QqIGtleSA9IFB5TGlzdF9HRVRfSVRFTShrZXlzLCBpKTsKLSAgICAgICAgUHlPYmplY3QqIHZhbHVlID0gUHlMaXN0X0dFVF9JVEVNKHZhbHVlcywgaSk7Ci0KLSAgICAgICAgaWYgKCEgUHlVbmljb2RlX0NoZWNrKGtleSkgfHwgISBQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICJlbnZpcm9ubWVudCBjYW4gb25seSBjb250YWluIHN0cmluZ3MiKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAga3NpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUoa2V5KTsKLSAgICAgICAgdnNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUodmFsdWUpOwotICAgICAgICB0b3RhbHNpemUgPSAocCAtIFB5VW5pY29kZV9BU19VTklDT0RFKG91dCkpICsga3NpemUgKyAxICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnNpemUgKyAxICsgMTsKLSAgICAgICAgaWYgKHRvdGFsc2l6ZSA+IFB5VW5pY29kZV9HRVRfU0laRShvdXQpKSB7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldCA9IHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvdXQpOwotICAgICAgICAgICAgUHlVbmljb2RlX1Jlc2l6ZSgmb3V0LCB0b3RhbHNpemUgKyAxMDI0KTsKLSAgICAgICAgICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvdXQpICsgb2Zmc2V0OwotICAgICAgICB9Ci0gICAgICAgIFB5X1VOSUNPREVfQ09QWShwLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShrZXkpLCBrc2l6ZSk7Ci0gICAgICAgIHAgKz0ga3NpemU7Ci0gICAgICAgICpwKysgPSAnPSc7Ci0gICAgICAgIFB5X1VOSUNPREVfQ09QWShwLCBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2YWx1ZSksIHZzaXplKTsKLSAgICAgICAgcCArPSB2c2l6ZTsKLSAgICAgICAgKnArKyA9ICdcMCc7Ci0gICAgfQotCi0gICAgLyogYWRkIHRyYWlsaW5nIG51bGwgYnl0ZSAqLwotICAgICpwKysgPSAnXDAnOwotICAgIFB5VW5pY29kZV9SZXNpemUoJm91dCwgcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKG91dCkpOwotCi0gICAgLyogUHlPYmplY3RfUHJpbnQob3V0LCBzdGRvdXQsIDApOyAqLwotCi0gICAgUHlfWERFQ1JFRihrZXlzKTsKLSAgICBQeV9YREVDUkVGKHZhbHVlcyk7Ci0KLSAgICByZXR1cm4gb3V0OwotCi0gZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihvdXQpOwotICAgIFB5X1hERUNSRUYoa2V5cyk7Ci0gICAgUHlfWERFQ1JFRih2YWx1ZXMpOwotICAgIHJldHVybiBOVUxMOwotfQotCi1QeURvY19TVFJWQVIoQ3JlYXRlUHJvY2Vzc19kb2MsCi0iQ3JlYXRlUHJvY2VzcyhhcHBfbmFtZSwgY21kX2xpbmUsIHByb2NfYXR0cnMsIHRocmVhZF9hdHRycyxcblwKLSAgICAgICAgICAgICAgIGluaGVyaXQsIGZsYWdzLCBlbnZfbWFwcGluZywgY3VyZGlyLFxuXAotICAgICAgICAgICAgICAgc3RhcnR1cF9pbmZvKSAtPiAocHJvY19oYW5kbGUsIHRocmVhZF9oYW5kbGUsXG5cCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWQsIHRpZClcblwKLVxuXAotQ3JlYXRlIGEgbmV3IHByb2Nlc3MgYW5kIGl0cyBwcmltYXJ5IHRocmVhZC4gVGhlIHJldHVyblxuXAotdmFsdWUgaXMgYSB0dXBsZSBvZiB0aGUgcHJvY2VzcyBoYW5kbGUsIHRocmVhZCBoYW5kbGUsXG5cCi1wcm9jZXNzIElELCBhbmQgdGhyZWFkIElELlxuXAotXG5cCi1wcm9jX2F0dHJzIGFuZCB0aHJlYWRfYXR0cnMgYXJlIGlnbm9yZWQgaW50ZXJuYWxseSBhbmQgY2FuIGJlIE5vbmUuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1zcF9DcmVhdGVQcm9jZXNzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBCT09MIHJlc3VsdDsKLSAgICBQUk9DRVNTX0lORk9STUFUSU9OIHBpOwotICAgIFNUQVJUVVBJTkZPVyBzaTsKLSAgICBQeU9iamVjdCogZW52aXJvbm1lbnQ7Ci0KLSAgICBQeV9VTklDT0RFKiBhcHBsaWNhdGlvbl9uYW1lOwotICAgIFB5X1VOSUNPREUqIGNvbW1hbmRfbGluZTsKLSAgICBQeU9iamVjdCogcHJvY2Vzc19hdHRyaWJ1dGVzOyAvKiBpZ25vcmVkICovCi0gICAgUHlPYmplY3QqIHRocmVhZF9hdHRyaWJ1dGVzOyAvKiBpZ25vcmVkICovCi0gICAgaW50IGluaGVyaXRfaGFuZGxlczsKLSAgICBpbnQgY3JlYXRpb25fZmxhZ3M7Ci0gICAgUHlPYmplY3QqIGVudl9tYXBwaW5nOwotICAgIFB5X1VOSUNPREUqIGN1cnJlbnRfZGlyZWN0b3J5OwotICAgIFB5T2JqZWN0KiBzdGFydHVwX2luZm87Ci0KLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaWk9PaWlPWk86Q3JlYXRlUHJvY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmYXBwbGljYXRpb25fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb21tYW5kX2xpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJvY2Vzc19hdHRyaWJ1dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRocmVhZF9hdHRyaWJ1dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluaGVyaXRfaGFuZGxlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZjcmVhdGlvbl9mbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZlbnZfbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZjdXJyZW50X2RpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHVwX2luZm8pKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFplcm9NZW1vcnkoJnNpLCBzaXplb2Yoc2kpKTsKLSAgICBzaS5jYiA9IHNpemVvZihzaSk7Ci0KLSAgICAvKiBub3RlOiB3ZSBvbmx5IHN1cHBvcnQgYSBzbWFsbCBzdWJzZXQgb2YgYWxsIFNJIGF0dHJpYnV0ZXMgKi8KLSAgICBzaS5kd0ZsYWdzID0gZ2V0aW50KHN0YXJ0dXBfaW5mbywgImR3RmxhZ3MiKTsKLSAgICBzaS53U2hvd1dpbmRvdyA9IGdldGludChzdGFydHVwX2luZm8sICJ3U2hvd1dpbmRvdyIpOwotICAgIHNpLmhTdGRJbnB1dCA9IGdldGhhbmRsZShzdGFydHVwX2luZm8sICJoU3RkSW5wdXQiKTsKLSAgICBzaS5oU3RkT3V0cHV0ID0gZ2V0aGFuZGxlKHN0YXJ0dXBfaW5mbywgImhTdGRPdXRwdXQiKTsKLSAgICBzaS5oU3RkRXJyb3IgPSBnZXRoYW5kbGUoc3RhcnR1cF9pbmZvLCAiaFN0ZEVycm9yIik7Ci0KLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoZW52X21hcHBpbmcgPT0gUHlfTm9uZSkKLSAgICAgICAgZW52aXJvbm1lbnQgPSBOVUxMOwotICAgIGVsc2UgewotICAgICAgICBlbnZpcm9ubWVudCA9IGdldGVudmlyb25tZW50KGVudl9tYXBwaW5nKTsKLSAgICAgICAgaWYgKCEgZW52aXJvbm1lbnQpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzdWx0ID0gQ3JlYXRlUHJvY2Vzc1coYXBwbGljYXRpb25fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRfbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdF9oYW5kbGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRpb25fZmxhZ3MgfCBDUkVBVEVfVU5JQ09ERV9FTlZJUk9OTUVOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50ID8gUHlVbmljb2RlX0FTX1VOSUNPREUoZW52aXJvbm1lbnQpIDogTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBpKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgUHlfWERFQ1JFRihlbnZpcm9ubWVudCk7Ci0KLSAgICBpZiAoISByZXN1bHQpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7Ci0KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTk5paSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3BfaGFuZGxlX25ldyhwaS5oUHJvY2VzcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3BfaGFuZGxlX25ldyhwaS5oVGhyZWFkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBwaS5kd1Byb2Nlc3NJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBwaS5kd1RocmVhZElkKTsKLX0KLQotUHlEb2NfU1RSVkFSKFRlcm1pbmF0ZVByb2Nlc3NfZG9jLAotIlRlcm1pbmF0ZVByb2Nlc3MoaGFuZGxlLCBleGl0X2NvZGUpIC0+IE5vbmVcblwKLVxuXAotVGVybWluYXRlIHRoZSBzcGVjaWZpZWQgcHJvY2VzcyBhbmQgYWxsIG9mIGl0cyB0aHJlYWRzLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotc3BfVGVybWluYXRlUHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgQk9PTCByZXN1bHQ7Ci0KLSAgICBIQU5ETEUgcHJvY2VzczsKLSAgICBpbnQgZXhpdF9jb2RlOwotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgUFlfSEFORExFX1BBUkFNICJpOlRlcm1pbmF0ZVByb2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb2Nlc3MsICZleGl0X2NvZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdCA9IFRlcm1pbmF0ZVByb2Nlc3MocHJvY2VzcywgZXhpdF9jb2RlKTsKLQotICAgIGlmICghIHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKLQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLX0KLQotUHlEb2NfU1RSVkFSKEdldEV4aXRDb2RlUHJvY2Vzc19kb2MsCi0iR2V0RXhpdENvZGVQcm9jZXNzKGhhbmRsZSkgLT4gRXhpdCBjb2RlXG5cCi1cblwKLVJldHVybiB0aGUgdGVybWluYXRpb24gc3RhdHVzIG9mIHRoZSBzcGVjaWZpZWQgcHJvY2Vzcy4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXNwX0dldEV4aXRDb2RlUHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgRFdPUkQgZXhpdF9jb2RlOwotICAgIEJPT0wgcmVzdWx0OwotCi0gICAgSEFORExFIHByb2Nlc3M7Ci0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBQWV9IQU5ETEVfUEFSQU0gIjpHZXRFeGl0Q29kZVByb2Nlc3MiLCAmcHJvY2VzcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0ID0gR2V0RXhpdENvZGVQcm9jZXNzKHByb2Nlc3MsICZleGl0X2NvZGUpOwotCi0gICAgaWYgKCEgcmVzdWx0KQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOwotCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhleGl0X2NvZGUpOwotfQotCi1QeURvY19TVFJWQVIoV2FpdEZvclNpbmdsZU9iamVjdF9kb2MsCi0iV2FpdEZvclNpbmdsZU9iamVjdChoYW5kbGUsIHRpbWVvdXQpIC0+IHJlc3VsdFxuXAotXG5cCi1XYWl0IHVudGlsIHRoZSBzcGVjaWZpZWQgb2JqZWN0IGlzIGluIHRoZSBzaWduYWxlZCBzdGF0ZSBvclxuXAotdGhlIHRpbWUtb3V0IGludGVydmFsIGVsYXBzZXMuIFRoZSB0aW1lb3V0IHZhbHVlIGlzIHNwZWNpZmllZFxuXAotaW4gbWlsbGlzZWNvbmRzLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotc3BfV2FpdEZvclNpbmdsZU9iamVjdChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgRFdPUkQgcmVzdWx0OwotCi0gICAgSEFORExFIGhhbmRsZTsKLSAgICBpbnQgbWlsbGlzZWNvbmRzOwotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgUFlfSEFORExFX1BBUkFNICJpOldhaXRGb3JTaW5nbGVPYmplY3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtaWxsaXNlY29uZHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXN1bHQgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KGhhbmRsZSwgKERXT1JEKSBtaWxsaXNlY29uZHMpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAocmVzdWx0ID09IFdBSVRfRkFJTEVEKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOwotCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygoaW50KSByZXN1bHQpOwotfQotCi1QeURvY19TVFJWQVIoR2V0VmVyc2lvbl9kb2MsCi0iR2V0VmVyc2lvbigpIC0+IHZlcnNpb25cblwKLVxuXAotUmV0dXJuIHRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotc3BfR2V0VmVyc2lvbihQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkdldFZlcnNpb24iKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChpbnQpIEdldFZlcnNpb24oKSk7Ci19Ci0KLVB5RG9jX1NUUlZBUihHZXRNb2R1bGVGaWxlTmFtZV9kb2MsCi0iR2V0TW9kdWxlRmlsZU5hbWUobW9kdWxlKSAtPiBwYXRoXG5cCi1cblwKLVJldHVybiB0aGUgZnVsbHktcXVhbGlmaWVkIHBhdGggZm9yIHRoZSBmaWxlIHRoYXQgY29udGFpbnNcblwKLXRoZSBzcGVjaWZpZWQgbW9kdWxlLiBUaGUgbW9kdWxlIG11c3QgaGF2ZSBiZWVuIGxvYWRlZCBieSB0aGVcblwKLWN1cnJlbnQgcHJvY2Vzcy5cblwKLVxuXAotVGhlIG1vZHVsZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGEgaGFuZGxlIHRvIHRoZSBsb2FkZWQgbW9kdWxlXG5cCi13aG9zZSBwYXRoIGlzIGJlaW5nIHJlcXVlc3RlZC4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgMCwgXG5cCi1HZXRNb2R1bGVGaWxlTmFtZSByZXRyaWV2ZXMgdGhlIHBhdGggb2YgdGhlIGV4ZWN1dGFibGUgZmlsZVxuXAotb2YgdGhlIGN1cnJlbnQgcHJvY2Vzcy4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXNwX0dldE1vZHVsZUZpbGVOYW1lKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBCT09MIHJlc3VsdDsKLSAgICBITU9EVUxFIG1vZHVsZTsKLSAgICBXQ0hBUiBmaWxlbmFtZVtNQVhfUEFUSF07Ci0KLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIFBZX0hBTkRMRV9QQVJBTSAiOkdldE1vZHVsZUZpbGVOYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZtb2R1bGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdCA9IEdldE1vZHVsZUZpbGVOYW1lVyhtb2R1bGUsIGZpbGVuYW1lLCBNQVhfUEFUSCk7Ci0gICAgZmlsZW5hbWVbTUFYX1BBVEgtMV0gPSAnXDAnOwotCi0gICAgaWYgKCEgcmVzdWx0KQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOwotCi0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShmaWxlbmFtZSwgUHlfVU5JQ09ERV9zdHJsZW4oZmlsZW5hbWUpKTsKLX0KLQotc3RhdGljIFB5TWV0aG9kRGVmIHNwX2Z1bmN0aW9uc1tdID0gewotICAgIHsiR2V0U3RkSGFuZGxlIiwgc3BfR2V0U3RkSGFuZGxlLCBNRVRIX1ZBUkFSR1MsIEdldFN0ZEhhbmRsZV9kb2N9LAotICAgIHsiR2V0Q3VycmVudFByb2Nlc3MiLCBzcF9HZXRDdXJyZW50UHJvY2VzcywgICAgICAgICBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0Q3VycmVudFByb2Nlc3NfZG9jfSwKLSAgICB7IkR1cGxpY2F0ZUhhbmRsZSIsICAgICAgICAgc3BfRHVwbGljYXRlSGFuZGxlLCAgICAgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEdXBsaWNhdGVIYW5kbGVfZG9jfSwKLSAgICB7IkNyZWF0ZVBpcGUiLCBzcF9DcmVhdGVQaXBlLCBNRVRIX1ZBUkFSR1MsIENyZWF0ZVBpcGVfZG9jfSwKLSAgICB7IkNyZWF0ZVByb2Nlc3MiLCBzcF9DcmVhdGVQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsIENyZWF0ZVByb2Nlc3NfZG9jfSwKLSAgICB7IlRlcm1pbmF0ZVByb2Nlc3MiLCBzcF9UZXJtaW5hdGVQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXJtaW5hdGVQcm9jZXNzX2RvY30sCi0gICAgeyJHZXRFeGl0Q29kZVByb2Nlc3MiLCBzcF9HZXRFeGl0Q29kZVByb2Nlc3MsIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0RXhpdENvZGVQcm9jZXNzX2RvY30sCi0gICAgeyJXYWl0Rm9yU2luZ2xlT2JqZWN0Iiwgc3BfV2FpdEZvclNpbmdsZU9iamVjdCwgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdhaXRGb3JTaW5nbGVPYmplY3RfZG9jfSwKLSAgICB7IkdldFZlcnNpb24iLCBzcF9HZXRWZXJzaW9uLCBNRVRIX1ZBUkFSR1MsIEdldFZlcnNpb25fZG9jfSwKLSAgICB7IkdldE1vZHVsZUZpbGVOYW1lIiwgc3BfR2V0TW9kdWxlRmlsZU5hbWUsIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRNb2R1bGVGaWxlTmFtZV9kb2N9LAotICAgIHtOVUxMLCBOVUxMfQotfTsKLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotc3RhdGljIHZvaWQKLWRlZmludChQeU9iamVjdCogZCwgY29uc3QgY2hhciogbmFtZSwgaW50IHZhbHVlKQotewotICAgIFB5T2JqZWN0KiB2ID0gUHlMb25nX0Zyb21Mb25nKChsb25nKSB2YWx1ZSk7Ci0gICAgaWYgKHYpIHsKLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgKGNoYXIqKSBuYW1lLCB2KTsKLSAgICAgICAgUHlfREVDUkVGKHYpOwotICAgIH0KLX0KLQotc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfc3VicHJvY2Vzc21vZHVsZSA9IHsKLSAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgIl9zdWJwcm9jZXNzIiwKLSAgICBOVUxMLAotICAgIC0xLAotICAgIHNwX2Z1bmN0aW9ucywKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMCi19OwotCi1QeU1PRElOSVRfRlVOQwotUHlJbml0X19zdWJwcm9jZXNzKCkKLXsKLSAgICBQeU9iamVjdCAqZDsKLSAgICBQeU9iamVjdCAqbTsKLQotICAgIC8qIHBhdGNoIHVwIG9iamVjdCBkZXNjcmlwdG9ycyAqLwotICAgIHNwX2hhbmRsZV9hc19udW1iZXIubmJfaW50ID0gKHVuYXJ5ZnVuYykgc3BfaGFuZGxlX2FzX2ludDsKLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZzcF9oYW5kbGVfdHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJl9zdWJwcm9jZXNzbW9kdWxlKTsKLSAgICBpZiAobSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBkID0gUHlNb2R1bGVfR2V0RGljdChtKTsKLQotICAgIC8qIGNvbnN0YW50cyAqLwotICAgIGRlZmludChkLCAiU1REX0lOUFVUX0hBTkRMRSIsIFNURF9JTlBVVF9IQU5ETEUpOwotICAgIGRlZmludChkLCAiU1REX09VVFBVVF9IQU5ETEUiLCBTVERfT1VUUFVUX0hBTkRMRSk7Ci0gICAgZGVmaW50KGQsICJTVERfRVJST1JfSEFORExFIiwgU1REX0VSUk9SX0hBTkRMRSk7Ci0gICAgZGVmaW50KGQsICJEVVBMSUNBVEVfU0FNRV9BQ0NFU1MiLCBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MpOwotICAgIGRlZmludChkLCAiU1RBUlRGX1VTRVNUREhBTkRMRVMiLCBTVEFSVEZfVVNFU1RESEFORExFUyk7Ci0gICAgZGVmaW50KGQsICJTVEFSVEZfVVNFU0hPV1dJTkRPVyIsIFNUQVJURl9VU0VTSE9XV0lORE9XKTsKLSAgICBkZWZpbnQoZCwgIlNXX0hJREUiLCBTV19ISURFKTsKLSAgICBkZWZpbnQoZCwgIklORklOSVRFIiwgSU5GSU5JVEUpOwotICAgIGRlZmludChkLCAiV0FJVF9PQkpFQ1RfMCIsIFdBSVRfT0JKRUNUXzApOwotICAgIGRlZmludChkLCAiQ1JFQVRFX05FV19DT05TT0xFIiwgQ1JFQVRFX05FV19DT05TT0xFKTsKLSAgICBkZWZpbnQoZCwgIkNSRUFURV9ORVdfUFJPQ0VTU19HUk9VUCIsIENSRUFURV9ORVdfUFJPQ0VTU19HUk9VUCk7Ci0gICAgZGVmaW50KGQsICJTVElMTF9BQ1RJVkUiLCBTVElMTF9BQ1RJVkUpOwotCi0gICAgcmV0dXJuIG07Ci19CmRpZmYgLS1naXQgYS9QQy9jb25maWcuYyBiL1BDL2NvbmZpZy5jCmluZGV4IDFmYzJiNDAuLjU3YjUwNzMgMTAwNjQ0Ci0tLSBhL1BDL2NvbmZpZy5jCisrKyBiL1BDL2NvbmZpZy5jCkBAIC0xMiw2ICsxMiw3IEBACiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9iaW5hc2NpaSh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X2NtYXRoKHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfZXJybm8odm9pZCk7CitleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9mYXVsdGhhbmRsZXIodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9nYyh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X21hdGgodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fbWQ1KHZvaWQpOwpAQCAtNTUsNyArNTYsNyBAQAogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX2NvZGVjc19qcCh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19jb2RlY3Nfa3Iodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fY29kZWNzX3R3KHZvaWQpOwotZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3N1YnByb2Nlc3Modm9pZCk7CitleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fd2luYXBpKHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX2xzcHJvZih2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19hc3Qodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9faW8odm9pZCk7CkBAIC04Miw2ICs4Myw3IEBACiAgICAgeyJiaW5hc2NpaSIsIFB5SW5pdF9iaW5hc2NpaX0sCiAgICAgeyJjbWF0aCIsIFB5SW5pdF9jbWF0aH0sCiAgICAgeyJlcnJubyIsIFB5SW5pdF9lcnJub30sCisgICAgeyJmYXVsdGhhbmRsZXIiLCBQeUluaXRfZmF1bHRoYW5kbGVyfSwKICAgICB7ImdjIiwgUHlJbml0X2djfSwKICAgICB7Im1hdGgiLCBQeUluaXRfbWF0aH0sCiAgICAgeyJudCIsIFB5SW5pdF9udH0sIC8qIFVzZSB0aGUgTlQgb3MgZnVuY3Rpb25zLCBub3QgcG9zaXggKi8KQEAgLTk5LDggKzEwMSw4IEBACiAgICAgeyJtc3ZjcnQiLCBQeUluaXRfbXN2Y3J0fSwKICAgICB7Il9sb2NhbGUiLCBQeUluaXRfX2xvY2FsZX0sCiAjZW5kaWYKLSAgICAvKiBYWFggU2hvdWxkIF9zdWJwcm9jZXNzIGdvIGluIGEgV0lOMzIgYmxvY2s/ICBub3QgV0lONjQ/ICovCi0gICAgeyJfc3VicHJvY2VzcyIsIFB5SW5pdF9fc3VicHJvY2Vzc30sCisgICAgLyogWFhYIFNob3VsZCBfd2luYXBpIGdvIGluIGEgV0lOMzIgYmxvY2s/ICBub3QgV0lONjQ/ICovCisgICAgeyJfd2luYXBpIiwgUHlJbml0X193aW5hcGl9LAogCiAgICAgeyJfY29kZWNzIiwgUHlJbml0X19jb2RlY3N9LAogICAgIHsiX3dlYWtyZWYiLCBQeUluaXRfX3dlYWtyZWZ9LApAQCAtMTQxLDEwICsxNDMsOSBAQAogICAgIHsibWFyc2hhbCIsIFB5TWFyc2hhbF9Jbml0fSwKIAogICAgIC8qIFRoaXMgbGl2ZXMgaXQgd2l0aCBpbXBvcnQuYyAqLwotICAgIHsiaW1wIiwgUHlJbml0X2ltcH0sCisgICAgeyJfaW1wIiwgUHlJbml0X2ltcH0sCiAKICAgICAvKiBUaGVzZSBlbnRyaWVzIGFyZSBoZXJlIGZvciBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMgKi8KLSAgICB7Il9fbWFpbl9fIiwgTlVMTH0sCiAgICAgeyJidWlsdGlucyIsIE5VTEx9LAogICAgIHsic3lzIiwgTlVMTH0sCiAgICAgeyJfd2FybmluZ3MiLCBfUHlXYXJuaW5nc19Jbml0fSwKZGlmZiAtLWdpdCBhL1BDL2RsX250LmMgYi9QQy9kbF9udC5jCmluZGV4IGVmMWNlMDkuLmFlMTBmYjUgMTAwNjQ0Ci0tLSBhL1BDL2RsX250LmMKKysrIGIvUEMvZGxfbnQuYwpAQCAtMTgsNyArMTgsOCBAQAogSE1PRFVMRSBQeVdpbl9ETExoTW9kdWxlID0gTlVMTDsKIGNvbnN0IGNoYXIgKlB5V2luX0RMTFZlcnNpb25TdHJpbmcgPSBkbGxWZXJzaW9uQnVmZmVyOwogCi0vLyBXaW5kb3dzICJBY3RpdmF0aW9uIENvbnRleHQiIHdvcms6CisjaWYgSEFWRV9TWFMKKy8vIFdpbmRvd3MgIkFjdGl2YXRpb24gQ29udGV4dCIgd29yay4KIC8vIE91ciAucHlkIGV4dGVuc2lvbiBtb2R1bGVzIGFyZSBnZW5lcmFsbHkgYnVpbHQgd2l0aG91dCBhIG1hbmlmZXN0IChpZSwKIC8vIHRob3NlIGluY2x1ZGVkIHdpdGggUHl0aG9uIGFuZCB0aG9zZSBidWlsdCB3aXRoIGEgZGVmYXVsdCBkaXN0dXRpbHMuCiAvLyBUaGlzIHJlcXVpcmVzIHdlIHBlcmZvcm0gc29tZSAiYWN0aXZhdGlvbiBjb250ZXh0IiBtYWdpYyB3aGVuIGxvYWRpbmcgb3VyCkBAIC0yOSw2ICszMCw4IEBACiAvLyBBcyBhbiBhZGRlZCBjb21wbGljYXRpb24sIHRoaXMgbWFnaWMgb25seSB3b3JrcyBvbiBYUCBvciBsYXRlciAtIHdlIHNpbXBseQogLy8gdXNlIHRoZSBleGlzdGVuY2UgKG9yIG5vdCkgb2YgdGhlIHJlbGV2YW50IGZ1bmN0aW9uIHBvaW50ZXJzIGZyb20ga2VybmVsMzIuCiAvLyBTZWUgYnVnIDQ1NjYgKGh0dHA6Ly9weXRob24ub3JnL3NmLzQ1NjYpIGZvciBtb3JlIGRldGFpbHMuCisvLyBJbiBWaXN1YWwgU3R1ZGlvIDIwMTAsIHNpZGUgYnkgc2lkZSBhc3NlbWJsaWVzIGFyZSBubyBsb25nZXIgdXNlZCBieQorLy8gZGVmYXVsdC4KIAogdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5fR0VUQ1VSUkVOVEFDVENUWCkoSEFORExFICopOwogdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5fQUNUSVZBVEVBQ1RDVFgpKEhBTkRMRSwgVUxPTkdfUFRSICopOwpAQCAtNzUsNiArNzgsNyBAQAogICAgICAgICBpZiAoISgqcGZuRGVhY3RpdmF0ZUFjdEN0eCkoMCwgY29va2llKSkKICAgICAgICAgICAgIE91dHB1dERlYnVnU3RyaW5nKCJQeXRob24gZmFpbGVkIHRvIGRlLWFjdGl2YXRlIHRoZSBhY3RpdmF0aW9uIGNvbnRleHRcbiIpOwogfQorI2VuZGlmIC8qIEhBVkVfU1hTICovCiAKIEJPT0wgICAgV0lOQVBJICBEbGxNYWluIChIQU5ETEUgaEluc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTE9ORyB1bF9yZWFzb25fZm9yX2NhbGwsCkBAIC04NywxNyArOTEsMjEgQEAKICAgICAgICAgICAgIC8vIDEwMDAgaXMgYSBtYWdpYyBudW1iZXIgSSBwaWNrZWQgb3V0IG9mIHRoZSBhaXIuICBDb3VsZCBkbyB3aXRoIGEgI2RlZmluZSwgSSBzcG9zZS4uLgogICAgICAgICAgICAgTG9hZFN0cmluZyhoSW5zdCwgMTAwMCwgZGxsVmVyc2lvbkJ1ZmZlciwgc2l6ZW9mKGRsbFZlcnNpb25CdWZmZXIpKTsKIAorI2lmIEhBVkVfU1hTCiAgICAgICAgICAgICAvLyBhbmQgY2FwdHVyZSBvdXIgYWN0aXZhdGlvbiBjb250ZXh0IGZvciB1c2Ugd2hlbiBsb2FkaW5nIGV4dGVuc2lvbnMuCiAgICAgICAgICAgICBfTG9hZEFjdEN0eFBvaW50ZXJzKCk7CiAgICAgICAgICAgICBpZiAocGZuR2V0Q3VycmVudEFjdEN0eCAmJiBwZm5BZGRSZWZBY3RDdHgpCiAgICAgICAgICAgICAgICAgaWYgKCgqcGZuR2V0Q3VycmVudEFjdEN0eCkoJlB5V2luX0RMTGhBY3RpdmF0aW9uQ29udGV4dCkpCiAgICAgICAgICAgICAgICAgICAgIGlmICghKCpwZm5BZGRSZWZBY3RDdHgpKFB5V2luX0RMTGhBY3RpdmF0aW9uQ29udGV4dCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXREZWJ1Z1N0cmluZygiUHl0aG9uIGZhaWxlZCB0byBsb2FkIHRoZSBkZWZhdWx0IGFjdGl2YXRpb24gY29udGV4dFxuIik7CisjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgRExMX1BST0NFU1NfREVUQUNIOgorI2lmIEhBVkVfU1hTCiAgICAgICAgICAgICBpZiAocGZuUmVsZWFzZUFjdEN0eCkKICAgICAgICAgICAgICAgICAoKnBmblJlbGVhc2VBY3RDdHgpKFB5V2luX0RMTGhBY3RpdmF0aW9uQ29udGV4dCk7CisjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gVFJVRTsKZGlmZiAtLWdpdCBhL1BDL2V4YW1wbGVfbnQvZXhhbXBsZS52Y3Byb2ogYi9QQy9leGFtcGxlX250L2V4YW1wbGUudmNwcm9qCmluZGV4IGY5MjRjN2QuLmZiYTAwYjYgMTAwNjQ0Ci0tLSBhL1BDL2V4YW1wbGVfbnQvZXhhbXBsZS52Y3Byb2oKKysrIGIvUEMvZXhhbXBsZV9udC9leGFtcGxlLnZjcHJvagpAQCAtMzksNyArMzksNyBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL2V4cG9ydDppbml0ZXhhbXBsZSINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ib2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgcHl0aG9uMjYubGliIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBweXRob24zMy5saWIiDQogCQkJCU91dHB1dEZpbGU9Ii5cUmVsZWFzZS9leGFtcGxlLnB5ZCINCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQpAQCAtMTA1LDcgKzEwNSw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvZXhwb3J0OmluaXRleGFtcGxlIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBweXRob24yNl9kLmxpYiINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ib2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgcHl0aG9uMzNfZC5saWIiDQogCQkJCU91dHB1dEZpbGU9Ii5cRGVidWcvZXhhbXBsZV9kLnB5ZCINCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQpkaWZmIC0tZ2l0IGEvUEMvZnJvemVuX2RsbG1haW4uYyBiL1BDL2Zyb3plbl9kbGxtYWluLmMKaW5kZXggYThjYzg4NS4uMDE1NmM1MCAxMDA2NDQKLS0tIGEvUEMvZnJvemVuX2RsbG1haW4uYworKysgYi9QQy9mcm96ZW5fZGxsbWFpbi5jCkBAIC03Nyw3ICs3Nyw3IEBACiB7CiAgICAgLy8gTXVzdCBnbyBiYWNrd2FyZHMKICAgICBjaGFyICoqbW9kTmFtZTsKLSAgICBmb3IgKG1vZE5hbWUgPSBwb3NzaWJsZU1vZHVsZXMrKHNpemVvZihwb3NzaWJsZU1vZHVsZXMpIC8gc2l6ZW9mKGNoYXIgKikpLTI7CisgICAgZm9yIChtb2ROYW1lID0gcG9zc2libGVNb2R1bGVzK1B5X0FSUkFZX0xFTkdUSChwb3NzaWJsZU1vZHVsZXMpLTI7CiAgICAgICAgICBtb2ROYW1lID49IHBvc3NpYmxlTW9kdWxlczsKICAgICAgICAgICptb2ROYW1lLS0pIHsKIC8qICAgICAgICAgICAgICBwcmludGYoIlRlcm1pbmF0aW5nICclcydcbiIsICptb2ROYW1lKTsqLwpAQCAtMTAzLDcgKzEwMyw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIE11c3QgZ28gYmFja3dhcmRzCiAgICAgICAgICAgICBjaGFyICoqbW9kTmFtZTsKLSAgICAgICAgICAgIGZvciAobW9kTmFtZSA9IHBvc3NpYmxlTW9kdWxlcysoc2l6ZW9mKHBvc3NpYmxlTW9kdWxlcykgLyBzaXplb2YoY2hhciAqKSktMjsKKyAgICAgICAgICAgIGZvciAobW9kTmFtZSA9IHBvc3NpYmxlTW9kdWxlcytQeV9BUlJBWV9MRU5HVEgocG9zc2libGVNb2R1bGVzKS0yOwogICAgICAgICAgICAgICAgICBtb2ROYW1lID49IHBvc3NpYmxlTW9kdWxlczsKICAgICAgICAgICAgICAgICAgKm1vZE5hbWUtLSkKICAgICAgICAgICAgICAgICBDYWxsTW9kdWxlRGxsTWFpbigqbW9kTmFtZSwgRExMX1BST0NFU1NfREVUQUNIKTsKQEAgLTExOCw3ICsxMTgsNyBAQAogICAgIEJPT0wgKFdJTkFQSSAqIHBmbmRsbG1haW4pKEhJTlNUQU5DRSwgRFdPUkQsIExQVk9JRCk7CiAKICAgICBjaGFyIGZ1bmNOYW1lWzI1NV07Ci0gICAgSE1PRFVMRSBobW9kID0gR2V0TW9kdWxlSGFuZGxlKE5VTEwpOworICAgIEhNT0RVTEUgaG1vZCA9IEdldE1vZHVsZUhhbmRsZVcoTlVMTCk7CiAgICAgc3RyY3B5KGZ1bmNOYW1lLCAiX0RsbE1haW4iKTsKICAgICBzdHJjYXQoZnVuY05hbWUsIG1vZE5hbWUpOwogICAgIHN0cmNhdChmdW5jTmFtZSwgIkAxMiIpOyAvLyBzdGRjYWxsIGNvbnZlbnRpb24uCmRpZmYgLS1naXQgYS9QQy9nZXRwYXRocC5jIGIvUEMvZ2V0cGF0aHAuYwppbmRleCBjZDNhNGIyLi5iNWJmMzI1IDEwMDY0NAotLS0gYS9QQy9nZXRwYXRocC5jCisrKyBiL1BDL2dldHBhdGhwLmMKQEAgLTI1MSw3ICsyNTEsNyBAQAogICAgIGlmIChrZXlCdWY9PU5VTEwpIGdvdG8gZG9uZTsKIAogICAgIG1lbWNweShrZXlCdWZQdHIsIGtleVByZWZpeCwgc2l6ZW9mKGtleVByZWZpeCktc2l6ZW9mKFdDSEFSKSk7Ci0gICAga2V5QnVmUHRyICs9IHNpemVvZihrZXlQcmVmaXgpL3NpemVvZihXQ0hBUikgLSAxOworICAgIGtleUJ1ZlB0ciArPSBQeV9BUlJBWV9MRU5HVEgoa2V5UHJlZml4KSAtIDE7CiAgICAgbWJzdG93Y3Moa2V5QnVmUHRyLCBQeVdpbl9ETExWZXJzaW9uU3RyaW5nLCB2ZXJzaW9uTGVuKTsKICAgICBrZXlCdWZQdHIgKz0gdmVyc2lvbkxlbjsKICAgICAvKiBOVUxMIGNvbWVzIHdpdGggdGhpcyBvbmUhICovCkBAIC00MjMsNiArNDIzLDUzIEBACiAgICAgICAgIHByb2dwYXRoWzBdID0gJ1wwJzsKIH0KIAorc3RhdGljIGludAorZmluZF9lbnZfY29uZmlnX3ZhbHVlKEZJTEUgKiBlbnZfZmlsZSwgY29uc3Qgd2NoYXJfdCAqIGtleSwgd2NoYXJfdCAqIHZhbHVlKQoreworICAgIGludCByZXN1bHQgPSAwOyAvKiBtZWFuaW5nIG5vdCBmb3VuZCAqLworICAgIGNoYXIgYnVmZmVyW01BWFBBVEhMRU4qMisxXTsgIC8qIGFsbG93IGV4dHJhIGZvciBrZXksICc9JywgZXRjLiAqLworCisgICAgZnNlZWsoZW52X2ZpbGUsIDAsIFNFRUtfU0VUKTsKKyAgICB3aGlsZSAoIWZlb2YoZW52X2ZpbGUpKSB7CisgICAgICAgIGNoYXIgKiBwID0gZmdldHMoYnVmZmVyLCBNQVhQQVRITEVOKjIsIGVudl9maWxlKTsKKyAgICAgICAgd2NoYXJfdCB0bXBidWZmZXJbTUFYUEFUSExFTioyKzFdOworICAgICAgICBQeU9iamVjdCAqIGRlY29kZWQ7CisgICAgICAgIGludCBuOworCisgICAgICAgIGlmIChwID09IE5VTEwpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbiA9IHN0cmxlbihwKTsKKyAgICAgICAgaWYgKHBbbiAtIDFdICE9ICdcbicpIHsKKyAgICAgICAgICAgIC8qIGxpbmUgaGFzIG92ZXJmbG93ZWQgLSBiYWlsICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAocFswXSA9PSAnIycpICAgIC8qIENvbW1lbnQgLSBza2lwICovCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KGJ1ZmZlciwgbiwgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgICAgICBpZiAoZGVjb2RlZCAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGs7CisgICAgICAgICAgICBrID0gUHlVbmljb2RlX0FzV2lkZUNoYXIoZGVjb2RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBidWZmZXIsIE1BWFBBVEhMRU4gKiAyKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihkZWNvZGVkKTsKKyAgICAgICAgICAgIGlmIChrID49IDApIHsKKyAgICAgICAgICAgICAgICB3Y2hhcl90ICogdG9rID0gd2NzdG9rKHRtcGJ1ZmZlciwgTCIgXHRcclxuIik7CisgICAgICAgICAgICAgICAgaWYgKCh0b2sgIT0gTlVMTCkgJiYgIXdjc2NtcCh0b2ssIGtleSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdG9rID0gd2NzdG9rKE5VTEwsIEwiIFx0Iik7CisgICAgICAgICAgICAgICAgICAgIGlmICgodG9rICE9IE5VTEwpICYmICF3Y3NjbXAodG9rLCBMIj0iKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdG9rID0gd2NzdG9rKE5VTEwsIEwiXHJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvayAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NzbmNweSh2YWx1ZSwgdG9rLCBNQVhQQVRITEVOKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHN0YXRpYyB2b2lkCiBjYWxjdWxhdGVfcGF0aCh2b2lkKQogewpAQCAtNDU3LDYgKzUwNCw0MCBAQAogICAgIC8qIHByb2dwYXRoIGd1YXJhbnRlZWQgXDAgdGVybWluYXRlZCBpbiBNQVhQQVRIKzEgYnl0ZXMuICovCiAgICAgd2NzY3B5KGFyZ3YwX3BhdGgsIHByb2dwYXRoKTsKICAgICByZWR1Y2UoYXJndjBfcGF0aCk7CisKKyAgICAvKiBTZWFyY2ggZm9yIGFuIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb24gZmlsZSwgZmlyc3QgaW4gdGhlCisgICAgICAgZXhlY3V0YWJsZSdzIGRpcmVjdG9yeSBhbmQgdGhlbiBpbiB0aGUgcGFyZW50IGRpcmVjdG9yeS4KKyAgICAgICBJZiBmb3VuZCwgb3BlbiBpdCBmb3IgdXNlIHdoZW4gc2VhcmNoaW5nIGZvciBwcmVmaXhlcy4KKyAgICAqLworCisgICAgeworICAgICAgICB3Y2hhcl90IHRtcGJ1ZmZlcltNQVhQQVRITEVOKzFdOworICAgICAgICB3Y2hhcl90ICplbnZfY2ZnID0gTCJweXZlbnYuY2ZnIjsKKyAgICAgICAgRklMRSAqIGVudl9maWxlID0gTlVMTDsKKworICAgICAgICB3Y3NjcHkodG1wYnVmZmVyLCBhcmd2MF9wYXRoKTsKKyAgICAgICAgam9pbih0bXBidWZmZXIsIGVudl9jZmcpOworICAgICAgICBlbnZfZmlsZSA9IF9QeV93Zm9wZW4odG1wYnVmZmVyLCBMInIiKTsKKyAgICAgICAgaWYgKGVudl9maWxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgICAgIHJlZHVjZSh0bXBidWZmZXIpOworICAgICAgICAgICAgcmVkdWNlKHRtcGJ1ZmZlcik7CisgICAgICAgICAgICBqb2luKHRtcGJ1ZmZlciwgZW52X2NmZyk7CisgICAgICAgICAgICBlbnZfZmlsZSA9IF9QeV93Zm9wZW4odG1wYnVmZmVyLCBMInIiKTsKKyAgICAgICAgICAgIGlmIChlbnZfZmlsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZXJybm8gPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChlbnZfZmlsZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAvKiBMb29rIGZvciBhICdob21lJyB2YXJpYWJsZSBhbmQgc2V0IGFyZ3YwX3BhdGggdG8gaXQsIGlmIGZvdW5kICovCisgICAgICAgICAgICBpZiAoZmluZF9lbnZfY29uZmlnX3ZhbHVlKGVudl9maWxlLCBMImhvbWUiLCB0bXBidWZmZXIpKSB7CisgICAgICAgICAgICAgICAgd2NzY3B5KGFyZ3YwX3BhdGgsIHRtcGJ1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmY2xvc2UoZW52X2ZpbGUpOworICAgICAgICAgICAgZW52X2ZpbGUgPSBOVUxMOworICAgICAgICB9CisgICAgfQorCiAgICAgaWYgKHB5dGhvbmhvbWUgPT0gTlVMTCB8fCAqcHl0aG9uaG9tZSA9PSAnXDAnKSB7CiAgICAgICAgIGlmIChzZWFyY2hfZm9yX3ByZWZpeChhcmd2MF9wYXRoLCBMQU5ETUFSSykpCiAgICAgICAgICAgICBweXRob25ob21lID0gcHJlZml4OwpAQCAtNzA4LDggKzc4OSw4IEBACiAgICAgcmV0dXJuIHByb2dwYXRoOwogfQogCi0vKiBMb2FkIHB5dGhvbjMuZGxsIGJlZm9yZSBsb2FkaW5nIGFueSBleHRlbnNpb24gbW9kdWxlIHRoYXQgbWlnaHQgcmVmZXIgCi0gICB0byBpdC4gVGhhdCB3YXksIHdlIGNhbiBiZSBzdXJlIHRoYXQgYWx3YXlzIHRoZSBweXRob24zLmRsbCBjb3JyZXNwb25kaW5nIAorLyogTG9hZCBweXRob24zLmRsbCBiZWZvcmUgbG9hZGluZyBhbnkgZXh0ZW5zaW9uIG1vZHVsZSB0aGF0IG1pZ2h0IHJlZmVyCisgICB0byBpdC4gVGhhdCB3YXksIHdlIGNhbiBiZSBzdXJlIHRoYXQgYWx3YXlzIHRoZSBweXRob24zLmRsbCBjb3JyZXNwb25kaW5nCiAgICB0byB0aGlzIHB5dGhvbiBETEwgaXMgbG9hZGVkLCBub3QgYSBweXRob24zLmRsbCB0aGF0IG1pZ2h0IGJlIG9uIHRoZSBwYXRoCiAgICBieSBjaGFuY2UuCiAgICBSZXR1cm4gd2hldGhlciB0aGUgRExMIHdhcyBmb3VuZC4KZGlmZiAtLWdpdCBhL1BDL2ltcG9ydF9udC5jIGIvUEMvaW1wb3J0X250LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NmE3NzQuLjAwMDAwMDAKLS0tIGEvUEMvaW1wb3J0X250LmMKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotIGltcG9ydF9udC5jCi0KLSAgV2luMzIgc3BlY2lmaWMgaW1wb3J0IGNvZGUuCi0KLSovCi0KLSNpbmNsdWRlICJQeXRob24uaCIKLSNpbmNsdWRlICJvc2RlZnMuaCIKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSAiaW1wb3J0ZGwuaCIKLSNpbmNsdWRlICJtYWxsb2MuaCIgLyogZm9yIGFsbG9jYSAqLwotCi0vKiBhIHN0cmluZyBsb2FkZWQgZnJvbSB0aGUgRExMIGF0IHN0YXJ0dXAgKi8KLWV4dGVybiBjb25zdCBjaGFyICpQeVdpbl9ETExWZXJzaW9uU3RyaW5nOwotCi1GSUxFICpQeVdpbl9GaW5kUmVnaXN0ZXJlZE1vZHVsZShjb25zdCBjaGFyICptb2R1bGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZpbGVkZXNjciAqKnBwRmlsZURlc2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpwYXRoQnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBwYXRoTGVuKQotewotICAgIGNoYXIgKm1vZHVsZUtleTsKLSAgICBjb25zdCBjaGFyIGtleVByZWZpeFtdID0gIlNvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXCI7Ci0gICAgY29uc3QgY2hhciBrZXlTdWZmaXhbXSA9ICJcXE1vZHVsZXNcXCI7Ci0jaWZkZWYgX0RFQlVHCi0gICAgLyogSW4gZGVidWdnaW5nIGJ1aWxkcywgd2UgX211c3RfIGhhdmUgdGhlIGRlYnVnIHZlcnNpb24KLSAgICAgKiByZWdpc3RlcmVkLgotICAgICAqLwotICAgIGNvbnN0IGNoYXIgZGVidWdTdHJpbmdbXSA9ICJcXERlYnVnIjsKLSNlbHNlCi0gICAgY29uc3QgY2hhciBkZWJ1Z1N0cmluZ1tdID0gIiI7Ci0jZW5kaWYKLSAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmZHAgPSBOVUxMOwotICAgIEZJTEUgKmZwOwotICAgIEhLRVkga2V5QmFzZSA9IEhLRVlfQ1VSUkVOVF9VU0VSOwotICAgIGludCBtb2ROYW1lU2l6ZTsKLSAgICBsb25nIHJlZ1N0YXQ7Ci0KLSAgICAvKiBDYWxjdWxhdGUgdGhlIHNpemUgZm9yIHRoZSBzcHJpbnRmIGJ1ZmZlci4KLSAgICAgKiBHZXQgdGhlIHNpemUgb2YgdGhlIGNoYXJzIG9ubHksIHBsdXMgMSBOVUxMLgotICAgICAqLwotICAgIHNpemVfdCBidWZTaXplID0gc2l6ZW9mKGtleVByZWZpeCktMSArCi0gICAgICAgICAgICAgICAgICAgICBzdHJsZW4oUHlXaW5fRExMVmVyc2lvblN0cmluZykgKwotICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGtleVN1ZmZpeCkgKwotICAgICAgICAgICAgICAgICAgICAgc3RybGVuKG1vZHVsZU5hbWUpICsKLSAgICAgICAgICAgICAgICAgICAgIHNpemVvZihkZWJ1Z1N0cmluZykgLSAxOwotICAgIC8qIGFsbG9jYSA9PSBubyBmcmVlIHJlcXVpcmVkLCBidXQgbWVtb3J5IG9ubHkgbG9jYWwgdG8gZm4sCi0gICAgICogYWxzbyBubyBoZWFwIGZyYWdtZW50YXRpb24hCi0gICAgICovCi0gICAgbW9kdWxlS2V5ID0gYWxsb2NhKGJ1ZlNpemUpOwotICAgIFB5T1Nfc25wcmludGYobW9kdWxlS2V5LCBidWZTaXplLAotICAgICAgICAgICAgICAgICAgIlNvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXCVzXFxNb2R1bGVzXFwlcyVzIiwKLSAgICAgICAgICAgICAgICAgIFB5V2luX0RMTFZlcnNpb25TdHJpbmcsIG1vZHVsZU5hbWUsIGRlYnVnU3RyaW5nKTsKLQotICAgIGFzc2VydChwYXRoTGVuIDwgSU5UX01BWCk7Ci0gICAgbW9kTmFtZVNpemUgPSAoaW50KXBhdGhMZW47Ci0gICAgcmVnU3RhdCA9IFJlZ1F1ZXJ5VmFsdWUoa2V5QmFzZSwgbW9kdWxlS2V5LCBwYXRoQnVmLCAmbW9kTmFtZVNpemUpOwotICAgIGlmIChyZWdTdGF0ICE9IEVSUk9SX1NVQ0NFU1MpIHsKLSAgICAgICAgLyogTm8gdXNlciBzZXR0aW5nIC0gbG9va3VwIGluIG1hY2hpbmUgc2V0dGluZ3MgKi8KLSAgICAgICAga2V5QmFzZSA9IEhLRVlfTE9DQUxfTUFDSElORTsKLSAgICAgICAgLyogYmUgYW5hbCAtIGZhaWx1cmUgbWF5IGhhdmUgcmVzZXQgc2l6ZSBwYXJhbSAqLwotICAgICAgICBtb2ROYW1lU2l6ZSA9IChpbnQpcGF0aExlbjsKLSAgICAgICAgcmVnU3RhdCA9IFJlZ1F1ZXJ5VmFsdWUoa2V5QmFzZSwgbW9kdWxlS2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoQnVmLCAmbW9kTmFtZVNpemUpOwotCi0gICAgICAgIGlmIChyZWdTdGF0ICE9IEVSUk9SX1NVQ0NFU1MpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgLyogdXNlIHRoZSBmaWxlIGV4dGVuc2lvbiB0byBsb2NhdGUgdGhlIHR5cGUgZW50cnkuICovCi0gICAgZm9yIChmZHAgPSBfUHlJbXBvcnRfRmlsZXRhYjsgZmRwLT5zdWZmaXggIT0gTlVMTDsgZmRwKyspIHsKLSAgICAgICAgc2l6ZV90IGV4dExlbiA9IHN0cmxlbihmZHAtPnN1ZmZpeCk7Ci0gICAgICAgIGFzc2VydChtb2ROYW1lU2l6ZSA+PSAwKTsgLyogZWxzZSBjYXN0IHRvIHNpemVfdCBpcyB3cm9uZyAqLwotICAgICAgICBpZiAoKHNpemVfdCltb2ROYW1lU2l6ZSA+IGV4dExlbiAmJgotICAgICAgICAgICAgc3RybmljbXAocGF0aEJ1ZiArICgoc2l6ZV90KW1vZE5hbWVTaXplLWV4dExlbi0xKSwKLSAgICAgICAgICAgICAgICAgICAgIGZkcC0+c3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgZXh0TGVuKSA9PSAwKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmIChmZHAtPnN1ZmZpeCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmcCA9IGZvcGVuKHBhdGhCdWYsIGZkcC0+bW9kZSk7Ci0gICAgaWYgKGZwICE9IE5VTEwpCi0gICAgICAgICpwcEZpbGVEZXNjID0gZmRwOwotICAgIHJldHVybiBmcDsKLX0KZGlmZiAtLWdpdCBhL1BDL2xhdW5jaGVyLmMgYi9QQy9sYXVuY2hlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NWU5NmUKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9sYXVuY2hlci5jCkBAIC0wLDAgKzEsMTM4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDEyIFZpbmF5IFNhamlwLgorICogTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgY29udHJpYnV0b3IgYWdyZWVtZW50LgorICoKKyAqIEJhc2VkIG9uIHRoZSB3b3JrIG9mOgorICoKKyAqIE1hcmsgSGFtbW9uZCAob3JpZ2luYWwgYXV0aG9yIG9mIFB5dGhvbiB2ZXJzaW9uKQorICogQ3VydCBIYWdlbmxvY2hlciAoam9iIG1hbmFnZW1lbnQpCisgKi8KKworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxzaGxvYmouaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHRjaGFyLmg+CisKKyNkZWZpbmUgQlVGU0laRSAyNTYKKyNkZWZpbmUgTVNHU0laRSAxMDI0CisKKy8qIEJ1aWxkIG9wdGlvbnMuICovCisjZGVmaW5lIFNLSVBfUFJFRklYCisvKiAjZGVmaW5lIFNFQVJDSF9QQVRIICovCisKKy8qIEp1c3QgZm9yIG5vdyAtIHN0YXRpYyBkZWZpbml0aW9uICovCisKK3N0YXRpYyBGSUxFICogbG9nX2ZwID0gTlVMTDsKKworc3RhdGljIHdjaGFyX3QgKgorc2tpcF93aGl0ZXNwYWNlKHdjaGFyX3QgKiBwKQoreworICAgIHdoaWxlICgqcCAmJiBpc3NwYWNlKCpwKSkKKyAgICAgICAgKytwOworICAgIHJldHVybiBwOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBpcyBoZXJlIHRvIHNpbXBsaWZ5IG1lbW9yeSBtYW5hZ2VtZW50CisgKiBhbmQgdG8gdHJlYXQgYmxhbmsgdmFsdWVzIGFzIGlmIHRoZXkgYXJlIGFic2VudC4KKyAqLworc3RhdGljIHdjaGFyX3QgKiBnZXRfZW52KHdjaGFyX3QgKiBrZXkpCit7CisgICAgLyogVGhpcyBpcyBub3QgdGhyZWFkLXNhZmUsIGp1c3QgbGlrZSBnZXRlbnYgKi8KKyAgICBzdGF0aWMgd2NoYXJfdCBidWZbMjU2XTsKKyAgICBEV09SRCByZXN1bHQgPSBHZXRFbnZpcm9ubWVudFZhcmlhYmxlVyhrZXksIGJ1ZiwgMjU2KTsKKworICAgIGlmIChyZXN1bHQgPiAyNTUpIHsKKyAgICAgICAgLyogTGFyZ2UgZW52aXJvbm1lbnQgdmFyaWFibGUuIEFjY2VwdCBzb21lIGxlYWthZ2UgKi8KKyAgICAgICAgd2NoYXJfdCAqYnVmMiA9ICh3Y2hhcl90KiltYWxsb2Moc2l6ZW9mKHdjaGFyX3QpICogKHJlc3VsdCsxKSk7CisgICAgICAgIEdldEVudmlyb25tZW50VmFyaWFibGVXKGtleSwgYnVmMiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGJ1ZjI7CisgICAgfQorCisgICAgaWYgKHJlc3VsdCA9PSAwKQorICAgICAgICAvKiBFaXRoZXIgc29tZSBlcnJvciwgZS5nLiBFUlJPUl9FTlZWQVJfTk9UX0ZPVU5ELAorICAgICAgICAgICBvciBhbiBlbXB0eSBlbnZpcm9ubWVudCB2YXJpYWJsZS4gKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gYnVmOworfQorCisKK3N0YXRpYyB2b2lkCitkZWJ1Zyh3Y2hhcl90ICogZm9ybWF0LCAuLi4pCit7CisgICAgdmFfbGlzdCB2YTsKKworICAgIGlmIChsb2dfZnAgIT0gTlVMTCkgeworICAgICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICAgICAgdmZ3cHJpbnRmX3MobG9nX2ZwLCBmb3JtYXQsIHZhKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCit3aW5lcnJvcihpbnQgcmMsIHdjaGFyX3QgKiBtZXNzYWdlLCBpbnQgc2l6ZSkKK3sKKyAgICBGb3JtYXRNZXNzYWdlVygKKyAgICAgICAgRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0gfCBGT1JNQVRfTUVTU0FHRV9JR05PUkVfSU5TRVJUUywKKyAgICAgICAgTlVMTCwgcmMsIE1BS0VMQU5HSUQoTEFOR19ORVVUUkFMLCBTVUJMQU5HX0RFRkFVTFQpLAorICAgICAgICBtZXNzYWdlLCBzaXplLCBOVUxMKTsKK30KKworc3RhdGljIHZvaWQKK2Vycm9yKGludCByYywgd2NoYXJfdCAqIGZvcm1hdCwgLi4uICkKK3sKKyAgICB2YV9saXN0IHZhOworICAgIHdjaGFyX3QgbWVzc2FnZVtNU0dTSVpFXTsKKyAgICB3Y2hhcl90IHdpbl9tZXNzYWdlW01TR1NJWkVdOworICAgIGludCBsZW47CisKKyAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICBsZW4gPSBfdnNud3ByaW50Zl9zKG1lc3NhZ2UsIE1TR1NJWkUsIF9UUlVOQ0FURSwgZm9ybWF0LCB2YSk7CisKKyAgICBpZiAocmMgPT0gMCkgeyAgLyogYSBXaW5kb3dzIGVycm9yICovCisgICAgICAgIHdpbmVycm9yKEdldExhc3RFcnJvcigpLCB3aW5fbWVzc2FnZSwgTVNHU0laRSk7CisgICAgICAgIGlmIChsZW4gPj0gMCkgeworICAgICAgICAgICAgX3Nud3ByaW50Zl9zKCZtZXNzYWdlW2xlbl0sIE1TR1NJWkUgLSBsZW4sIF9UUlVOQ0FURSwgTCI6ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB3aW5fbWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9CisKKyNpZiAhZGVmaW5lZChfV0lORE9XUykKKyAgICBmd3ByaW50ZihzdGRlcnIsIEwiJXNcbiIsIG1lc3NhZ2UpOworI2Vsc2UKKyAgICBNZXNzYWdlQm94KE5VTEwsIG1lc3NhZ2UsIFRFWFQoIlB5dGhvbiBMYXVuY2hlciBpcyBzb3JyeSB0byBzYXkgLi4uIiksIE1CX09LKTsgCisjZW5kaWYKKyAgICBFeGl0UHJvY2VzcyhyYyk7Cit9CisKKyNpZiBkZWZpbmVkKF9XSU5ET1dTKQorCisjZGVmaW5lIFBZVEhPTl9FWEVDVVRBQkxFIEwicHl0aG9udy5leGUiCisKKyNlbHNlCisKKyNkZWZpbmUgUFlUSE9OX0VYRUNVVEFCTEUgTCJweXRob24uZXhlIgorCisjZW5kaWYKKworI2RlZmluZSBSQ19OT19TVERfSEFORExFUyAgIDEwMAorI2RlZmluZSBSQ19DUkVBVEVfUFJPQ0VTUyAgIDEwMQorI2RlZmluZSBSQ19CQURfVklSVFVBTF9QQVRIIDEwMgorI2RlZmluZSBSQ19OT19QWVRIT04gICAgICAgIDEwMworCisjZGVmaW5lIE1BWF9WRVJTSU9OX1NJWkUgICAgNAorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgd2NoYXJfdCB2ZXJzaW9uW01BWF9WRVJTSU9OX1NJWkVdOyAvKiBtLm4gKi8KKyAgICBpbnQgYml0czsgICAvKiAzMiBvciA2NCAqLworICAgIHdjaGFyX3QgZXhlY3V0YWJsZVtNQVhfUEFUSF07Cit9IElOU1RBTExFRF9QWVRIT047CisKKy8qCisgKiBUbyBhdm9pZCBtZXNzaW5nIGFib3V0IHdpdGggaGVhcCBhbGxvY2F0aW9ucywganVzdCBhc3N1bWUgd2UgY2FuIGFsbG9jYXRlCisgKiBzdGF0aWNhbGx5IGFuZCBuZXZlciBoYXZlIHRvIGRlYWwgd2l0aCBtb3JlIHZlcnNpb25zIHRoYW4gdGhpcy4KKyAqLworI2RlZmluZSBNQVhfSU5TVEFMTEVEX1BZVEhPTlMgICAxMDAKKworc3RhdGljIElOU1RBTExFRF9QWVRIT04gaW5zdGFsbGVkX3B5dGhvbnNbTUFYX0lOU1RBTExFRF9QWVRIT05TXTsKKworc3RhdGljIHNpemVfdCBudW1faW5zdGFsbGVkX3B5dGhvbnMgPSAwOworCisvKiB0byBob2xkIFNPRlRXQVJFXFB5dGhvblxQeXRob25Db3JlXFguWVxJbnN0YWxsUGF0aCAqLworI2RlZmluZSBJUF9CQVNFX1NJWkUgNDAKKyNkZWZpbmUgSVBfU0laRSAoSVBfQkFTRV9TSVpFICsgTUFYX1ZFUlNJT05fU0laRSkKKyNkZWZpbmUgQ09SRV9QQVRIIEwiU09GVFdBUkVcXFB5dGhvblxcUHl0aG9uQ29yZSIKKworc3RhdGljIHdjaGFyX3QgKiBsb2NhdGlvbl9jaGVja3NbXSA9IHsKKyAgICBMIlxcIiwKKyAgICBMIlxcUENCdWlsZFxcIiwKKyAgICBMIlxcUENCdWlsZFxcYW1kNjRcXCIsCisgICAgTlVMTAorfTsKKworc3RhdGljIElOU1RBTExFRF9QWVRIT04gKgorZmluZF9leGlzdGluZ19weXRob24od2NoYXJfdCAqIHBhdGgpCit7CisgICAgSU5TVEFMTEVEX1BZVEhPTiAqIHJlc3VsdCA9IE5VTEw7CisgICAgc2l6ZV90IGk7CisgICAgSU5TVEFMTEVEX1BZVEhPTiAqIGlwOworCisgICAgZm9yIChpID0gMCwgaXAgPSBpbnN0YWxsZWRfcHl0aG9uczsgaSA8IG51bV9pbnN0YWxsZWRfcHl0aG9uczsgaSsrLCBpcCsrKSB7CisgICAgICAgIGlmIChfd2NzaWNtcChwYXRoLCBpcC0+ZXhlY3V0YWJsZSkgPT0gMCkgeworICAgICAgICAgICAgcmVzdWx0ID0gaXA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZAorbG9jYXRlX3B5dGhvbnNfZm9yX2tleShIS0VZIHJvb3QsIFJFR1NBTSBmbGFncykKK3sKKyAgICBIS0VZIGNvcmVfcm9vdCwgaXBfa2V5OworICAgIExTVEFUVVMgc3RhdHVzID0gUmVnT3BlbktleUV4Vyhyb290LCBDT1JFX1BBVEgsIDAsIGZsYWdzLCAmY29yZV9yb290KTsKKyAgICB3Y2hhcl90IG1lc3NhZ2VbTVNHU0laRV07CisgICAgRFdPUkQgaTsKKyAgICBzaXplX3QgbjsKKyAgICBCT09MIG9rOworICAgIERXT1JEIHR5cGUsIGRhdGFfc2l6ZSwgYXR0cnM7CisgICAgSU5TVEFMTEVEX1BZVEhPTiAqIGlwLCAqIHBpcDsKKyAgICB3Y2hhcl90IGlwX3BhdGhbSVBfU0laRV07CisgICAgd2NoYXJfdCAqIGNoZWNrOworICAgIHdjaGFyX3QgKiogY2hlY2twOworICAgIHdjaGFyX3QgKmtleV9uYW1lID0gKHJvb3QgPT0gSEtFWV9MT0NBTF9NQUNISU5FKSA/IEwiSEtMTSIgOiBMIkhLQ1UiOworCisgICAgaWYgKHN0YXR1cyAhPSBFUlJPUl9TVUNDRVNTKQorICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6IHVuYWJsZSB0byBvcGVuIFB5dGhvbkNvcmUga2V5IGluICVzXG4iLAorICAgICAgICAgICAgICBrZXlfbmFtZSk7CisgICAgZWxzZSB7CisgICAgICAgIGlwID0gJmluc3RhbGxlZF9weXRob25zW251bV9pbnN0YWxsZWRfcHl0aG9uc107CisgICAgICAgIGZvciAoaSA9IDA7IG51bV9pbnN0YWxsZWRfcHl0aG9ucyA8IE1BWF9JTlNUQUxMRURfUFlUSE9OUzsgaSsrKSB7CisgICAgICAgICAgICBzdGF0dXMgPSBSZWdFbnVtS2V5Vyhjb3JlX3Jvb3QsIGksIGlwLT52ZXJzaW9uLCBNQVhfVkVSU0lPTl9TSVpFKTsKKyAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gRVJST1JfU1VDQ0VTUykgeworICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gRVJST1JfTk9fTU9SRV9JVEVNUykgeworICAgICAgICAgICAgICAgICAgICAvKiB1bmV4cGVjdGVkIGVycm9yICovCisgICAgICAgICAgICAgICAgICAgIHdpbmVycm9yKHN0YXR1cywgbWVzc2FnZSwgTVNHU0laRSk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiQ2FuJ3QgZW51bWVyYXRlIHJlZ2lzdHJ5IGtleSBmb3IgdmVyc2lvbiAlczogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT52ZXJzaW9uLCBtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBfc253cHJpbnRmX3MoaXBfcGF0aCwgSVBfU0laRSwgX1RSVU5DQVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMIiVzXFwlc1xcSW5zdGFsbFBhdGgiLCBDT1JFX1BBVEgsIGlwLT52ZXJzaW9uKTsKKyAgICAgICAgICAgICAgICBzdGF0dXMgPSBSZWdPcGVuS2V5RXhXKHJvb3QsIGlwX3BhdGgsIDAsIGZsYWdzLCAmaXBfa2V5KTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgICAgICAgd2luZXJyb3Ioc3RhdHVzLCBtZXNzYWdlLCBNU0dTSVpFKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogJ21lc3NhZ2UnIGFscmVhZHkgaGFzIGEgdHJhaWxpbmcgXG4KKyAgICAgICAgICAgICAgICAgICAgZGVidWcoTCIlc1xcJXM6ICVzIiwga2V5X25hbWUsIGlwX3BhdGgsIG1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGF0YV9zaXplID0gc2l6ZW9mKGlwLT5leGVjdXRhYmxlKSAtIDE7CisgICAgICAgICAgICAgICAgc3RhdHVzID0gUmVnUXVlcnlWYWx1ZUV4VyhpcF9rZXksIE5VTEwsIE5VTEwsICZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExQQllURSlpcC0+ZXhlY3V0YWJsZSwgJmRhdGFfc2l6ZSk7CisgICAgICAgICAgICAgICAgUmVnQ2xvc2VLZXkoaXBfa2V5KTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgICAgICAgd2luZXJyb3Ioc3RhdHVzLCBtZXNzYWdlLCBNU0dTSVpFKTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoTCIlc1xcJXM6ICVzXG4iLCBrZXlfbmFtZSwgaXBfcGF0aCwgbWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBSRUdfU1opIHsKKyAgICAgICAgICAgICAgICAgICAgZGF0YV9zaXplID0gZGF0YV9zaXplIC8gc2l6ZW9mKHdjaGFyX3QpIC0gMTsgIC8qIGZvciBOVUwgKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKGlwLT5leGVjdXRhYmxlW2RhdGFfc2l6ZSAtIDFdID09IEwnXFwnKQorICAgICAgICAgICAgICAgICAgICAgICAgLS1kYXRhX3NpemU7IC8qIHJlZyB2YWx1ZSBlbmRlZCBpbiBhIGJhY2tzbGFzaCAqLworICAgICAgICAgICAgICAgICAgICAvKiBpcC0+ZXhlY3V0YWJsZSBpcyBkYXRhX3NpemUgbG9uZyAqLworICAgICAgICAgICAgICAgICAgICBmb3IgKGNoZWNrcCA9IGxvY2F0aW9uX2NoZWNrczsgKmNoZWNrcDsgKytjaGVja3ApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrID0gKmNoZWNrcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9zbndwcmludGZfcygmaXAtPmV4ZWN1dGFibGVbZGF0YV9zaXplXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfUEFUSCAtIGRhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfUEFUSCAtIGRhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMIiVzJXMiLCBjaGVjaywgUFlUSE9OX0VYRUNVVEFCTEUpOworICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMgPSBHZXRGaWxlQXR0cmlidXRlc1coaXAtPmV4ZWN1dGFibGUpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZXJyb3IoR2V0TGFzdEVycm9yKCksIG1lc3NhZ2UsIE1TR1NJWkUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogJXM6ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZSwgbWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRycyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogJyVzJyBpcyBhIFwKK2RpcmVjdG9yeVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZSwgYXR0cnMpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmluZF9leGlzdGluZ19weXRob24oaXAtPmV4ZWN1dGFibGUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAlczogYWxyZWFkeSBcCitmb3VuZDogJXNcbiIsIGlwLT5leGVjdXRhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIHRoZSBleGVjdXRhYmxlIHR5cGUuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2sgPSBHZXRCaW5hcnlUeXBlVyhpcC0+ZXhlY3V0YWJsZSwgJmF0dHJzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9rKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiRmFpbHVyZSBnZXR0aW5nIGJpbmFyeSB0eXBlOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmV4ZWN1dGFibGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJzID09IFNDU182NEJJVF9CSU5BUlkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+Yml0cyA9IDY0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRycyA9PSBTQ1NfMzJCSVRfQklOQVJZKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmJpdHMgPSAzMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmJpdHMgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXAtPmJpdHMgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAlczogXAoraW52YWxpZCBiaW5hcnkgdHlwZTogJVhcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZSwgYXR0cnMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdjc2NocihpcC0+ZXhlY3V0YWJsZSwgTCcgJykgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGhhcyBzcGFjZXMsIHNvIHF1b3RlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHdjc2xlbihpcC0+ZXhlY3V0YWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtbW92ZSgmaXAtPmV4ZWN1dGFibGVbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZSwgbiAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmV4ZWN1dGFibGVbMF0gPSBMJ1wiJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZVtuICsgMV0gPSBMJ1wiJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZVtuICsgMl0gPSBMJ1wwJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogJXMgXAoraXMgYSAlZGJpdCBleGVjdXRhYmxlXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5leGVjdXRhYmxlLCBpcC0+Yml0cyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK251bV9pbnN0YWxsZWRfcHl0aG9uczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcCA9IGlwKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobnVtX2luc3RhbGxlZF9weXRob25zID49CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFYX0lOU1RBTExFRF9QWVRIT05TKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ29weSBvdmVyIHRoZSBhdHRyaWJ1dGVzIGZvciB0aGUgbmV4dCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmlwID0gKnBpcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBSZWdDbG9zZUtleShjb3JlX3Jvb3QpOworICAgIH0KK30KKworc3RhdGljIGludAorY29tcGFyZV9weXRob25zKGNvbnN0IHZvaWQgKiBwMSwgY29uc3Qgdm9pZCAqIHAyKQoreworICAgIElOU1RBTExFRF9QWVRIT04gKiBpcDEgPSAoSU5TVEFMTEVEX1BZVEhPTiAqKSBwMTsKKyAgICBJTlNUQUxMRURfUFlUSE9OICogaXAyID0gKElOU1RBTExFRF9QWVRIT04gKikgcDI7CisgICAgLyogbm90ZSByZXZlcnNlIHNvcnRpbmcgb24gdmVyc2lvbiAqLworICAgIGludCByZXN1bHQgPSB3Y3NjbXAoaXAyLT52ZXJzaW9uLCBpcDEtPnZlcnNpb24pOworCisgICAgaWYgKHJlc3VsdCA9PSAwKQorICAgICAgICByZXN1bHQgPSBpcDItPmJpdHMgLSBpcDEtPmJpdHM7IC8qIDY0IGJlZm9yZSAzMiAqLworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkCitsb2NhdGVfYWxsX3B5dGhvbnMoKQoreworI2lmIGRlZmluZWQoX01fWDY0KQorICAgIC8vIElmIHdlIGFyZSBhIDY0Yml0IHByb2Nlc3MsIGZpcnN0IGhpdCB0aGUgMzJiaXQga2V5cy4KKyAgICBkZWJ1ZyhMImxvY2F0aW5nIFB5dGhvbnMgaW4gMzJiaXQgcmVnaXN0cnlcbiIpOworICAgIGxvY2F0ZV9weXRob25zX2Zvcl9rZXkoSEtFWV9DVVJSRU5UX1VTRVIsIEtFWV9SRUFEIHwgS0VZX1dPVzY0XzMyS0VZKTsKKyAgICBsb2NhdGVfcHl0aG9uc19mb3Jfa2V5KEhLRVlfTE9DQUxfTUFDSElORSwgS0VZX1JFQUQgfCBLRVlfV09XNjRfMzJLRVkpOworI2Vsc2UKKyAgICAvLyBJZiB3ZSBhcmUgYSAzMmJpdCBwcm9jZXNzIG9uIGEgNjRiaXQgV2luZG93cywgZmlyc3QgaGl0IHRoZSA2NGJpdCBrZXlzLgorICAgIEJPT0wgZjY0ID0gRkFMU0U7CisgICAgaWYgKElzV293NjRQcm9jZXNzKEdldEN1cnJlbnRQcm9jZXNzKCksICZmNjQpICYmIGY2NCkgeworICAgICAgICBkZWJ1ZyhMImxvY2F0aW5nIFB5dGhvbnMgaW4gNjRiaXQgcmVnaXN0cnlcbiIpOworICAgICAgICBsb2NhdGVfcHl0aG9uc19mb3Jfa2V5KEhLRVlfQ1VSUkVOVF9VU0VSLCBLRVlfUkVBRCB8IEtFWV9XT1c2NF82NEtFWSk7CisgICAgICAgIGxvY2F0ZV9weXRob25zX2Zvcl9rZXkoSEtFWV9MT0NBTF9NQUNISU5FLCBLRVlfUkVBRCB8IEtFWV9XT1c2NF82NEtFWSk7CisgICAgfQorI2VuZGlmICAgIAorICAgIC8vIG5vdyBoaXQgdGhlICJuYXRpdmUiIGtleSBmb3IgdGhpcyBwcm9jZXNzIGJpdHRlZG5lc3MuCisgICAgZGVidWcoTCJsb2NhdGluZyBQeXRob25zIGluIG5hdGl2ZSByZWdpc3RyeVxuIik7CisgICAgbG9jYXRlX3B5dGhvbnNfZm9yX2tleShIS0VZX0NVUlJFTlRfVVNFUiwgS0VZX1JFQUQpOworICAgIGxvY2F0ZV9weXRob25zX2Zvcl9rZXkoSEtFWV9MT0NBTF9NQUNISU5FLCBLRVlfUkVBRCk7CisgICAgcXNvcnQoaW5zdGFsbGVkX3B5dGhvbnMsIG51bV9pbnN0YWxsZWRfcHl0aG9ucywgc2l6ZW9mKElOU1RBTExFRF9QWVRIT04pLAorICAgICAgICAgIGNvbXBhcmVfcHl0aG9ucyk7Cit9CisKK3N0YXRpYyBJTlNUQUxMRURfUFlUSE9OICoKK2ZpbmRfcHl0aG9uX2J5X3ZlcnNpb24od2NoYXJfdCBjb25zdCAqIHdhbnRlZF92ZXIpCit7CisgICAgSU5TVEFMTEVEX1BZVEhPTiAqIHJlc3VsdCA9IE5VTEw7CisgICAgSU5TVEFMTEVEX1BZVEhPTiAqIGlwID0gaW5zdGFsbGVkX3B5dGhvbnM7CisgICAgc2l6ZV90IGksIG47CisgICAgc2l6ZV90IHdsZW4gPSB3Y3NsZW4od2FudGVkX3Zlcik7CisgICAgaW50IGJpdHMgPSAwOworCisgICAgaWYgKHdjc3N0cih3YW50ZWRfdmVyLCBMIi0zMiIpKQorICAgICAgICBiaXRzID0gMzI7CisgICAgZm9yIChpID0gMDsgaSA8IG51bV9pbnN0YWxsZWRfcHl0aG9uczsgaSsrLCBpcCsrKSB7CisgICAgICAgIG4gPSB3Y3NsZW4oaXAtPnZlcnNpb24pOworICAgICAgICBpZiAobiA+IHdsZW4pCisgICAgICAgICAgICBuID0gd2xlbjsKKyAgICAgICAgaWYgKCh3Y3NuY21wKGlwLT52ZXJzaW9uLCB3YW50ZWRfdmVyLCBuKSA9PSAwKSAmJgorICAgICAgICAgICAgLyogYml0cyA9PSAwID0+IGRvbid0IGNhcmUgKi8KKyAgICAgICAgICAgICgoYml0cyA9PSAwKSB8fCAoaXAtPmJpdHMgPT0gYml0cykpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBpcDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworc3RhdGljIHdjaGFyX3QgYXBwZGF0YV9pbmlfcGF0aFtNQVhfUEFUSF07CitzdGF0aWMgd2NoYXJfdCBsYXVuY2hlcl9pbmlfcGF0aFtNQVhfUEFUSF07CisKKy8qCisgKiBHZXQgYSB2YWx1ZSBlaXRoZXIgZnJvbSB0aGUgZW52aXJvbm1lbnQgb3IgYSBjb25maWd1cmF0aW9uIGZpbGUuCisgKiBUaGUga2V5IHBhc3NlZCBpbiB3aWxsIGVpdGhlciBiZSAicHl0aG9uIiwgInB5dGhvbjIiIG9yICJweXRob24zIi4KKyAqLworc3RhdGljIHdjaGFyX3QgKgorZ2V0X2NvbmZpZ3VyZWRfdmFsdWUod2NoYXJfdCAqIGtleSkKK3sKKy8qCisgKiBOb3RlOiB0aGlzIHN0YXRpYyB2YWx1ZSBpcyB1c2VkIHRvIHJldHVybiBhIGNvbmZpZ3VyZWQgdmFsdWUKKyAqIG9idGFpbmVkIGVpdGhlciBmcm9tIHRoZSBlbnZpcm9ubWVudCBvciBjb25maWd1cmF0aW9uIGZpbGUuCisgKiBUaGlzIHNob3VsZCBiZSBPSyBzaW5jZSB0aGVyZSB3b3VsZG4ndCBiZSBhbnkgY29uY3VycmVudCBjYWxscy4KKyAqLworICAgIHN0YXRpYyB3Y2hhcl90IGNvbmZpZ3VyZWRfdmFsdWVbTVNHU0laRV07CisgICAgd2NoYXJfdCAqIHJlc3VsdCA9IE5VTEw7CisgICAgd2NoYXJfdCAqIGZvdW5kX2luID0gTCJlbnZpcm9ubWVudCI7CisgICAgRFdPUkQgc2l6ZTsKKworICAgIC8qIEZpcnN0LCBzZWFyY2ggdGhlIGVudmlyb25tZW50LiAqLworICAgIF9zbndwcmludGZfcyhjb25maWd1cmVkX3ZhbHVlLCBNU0dTSVpFLCBfVFJVTkNBVEUsIEwicHlfJXMiLCBrZXkpOworICAgIHJlc3VsdCA9IGdldF9lbnYoY29uZmlndXJlZF92YWx1ZSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMICYmIGFwcGRhdGFfaW5pX3BhdGhbMF0pIHsKKyAgICAgICAgLyogTm90IGluIGVudmlyb25tZW50OiBjaGVjayBsb2NhbCBjb25maWd1cmF0aW9uLiAqLworICAgICAgICBzaXplID0gR2V0UHJpdmF0ZVByb2ZpbGVTdHJpbmdXKEwiZGVmYXVsdHMiLCBrZXksIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJlZF92YWx1ZSwgTVNHU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBkYXRhX2luaV9wYXRoKTsKKyAgICAgICAgaWYgKHNpemUgPiAwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBjb25maWd1cmVkX3ZhbHVlOworICAgICAgICAgICAgZm91bmRfaW4gPSBhcHBkYXRhX2luaV9wYXRoOworICAgICAgICB9CisgICAgfQorICAgIGlmIChyZXN1bHQgPT0gTlVMTCAmJiBsYXVuY2hlcl9pbmlfcGF0aFswXSkgeworICAgICAgICAvKiBOb3QgaW4gZW52aXJvbm1lbnQgb3IgbG9jYWw6IGNoZWNrIGdsb2JhbCBjb25maWd1cmF0aW9uLiAqLworICAgICAgICBzaXplID0gR2V0UHJpdmF0ZVByb2ZpbGVTdHJpbmdXKEwiZGVmYXVsdHMiLCBrZXksIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJlZF92YWx1ZSwgTVNHU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXVuY2hlcl9pbmlfcGF0aCk7CisgICAgICAgIGlmIChzaXplID4gMCkgeworICAgICAgICAgICAgcmVzdWx0ID0gY29uZmlndXJlZF92YWx1ZTsKKyAgICAgICAgICAgIGZvdW5kX2luID0gbGF1bmNoZXJfaW5pX3BhdGg7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICBkZWJ1ZyhMImZvdW5kIGNvbmZpZ3VyZWQgdmFsdWUgJyVzPSVzJyBpbiAlc1xuIiwKKyAgICAgICAgICAgICAga2V5LCByZXN1bHQsIGZvdW5kX2luID8gZm91bmRfaW4gOiBMIih1bmtub3duKSIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKEwiZm91bmQgbm8gY29uZmlndXJlZCB2YWx1ZSBmb3IgJyVzJ1xuIiwga2V5KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIElOU1RBTExFRF9QWVRIT04gKgorbG9jYXRlX3B5dGhvbih3Y2hhcl90ICogd2FudGVkX3ZlcikKK3sKKyAgICBzdGF0aWMgd2NoYXJfdCBjb25maWdfa2V5IFtdID0geyBMInB5dGhvblgiIH07CisgICAgc3RhdGljIHdjaGFyX3QgKiBsYXN0X2NoYXIgPSAmY29uZmlnX2tleVtzaXplb2YoY29uZmlnX2tleSkgLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHdjaGFyX3QpIC0gMl07CisgICAgSU5TVEFMTEVEX1BZVEhPTiAqIHJlc3VsdCA9IE5VTEw7CisgICAgc2l6ZV90IG4gPSB3Y3NsZW4od2FudGVkX3Zlcik7CisgICAgd2NoYXJfdCAqIGNvbmZpZ3VyZWRfdmFsdWU7CisKKyAgICBpZiAobnVtX2luc3RhbGxlZF9weXRob25zID09IDApCisgICAgICAgIGxvY2F0ZV9hbGxfcHl0aG9ucygpOworCisgICAgaWYgKG4gPT0gMSkgeyAgIC8qIGp1c3QgbWFqb3IgdmVyc2lvbiBzcGVjaWZpZWQgKi8KKyAgICAgICAgKmxhc3RfY2hhciA9ICp3YW50ZWRfdmVyOworICAgICAgICBjb25maWd1cmVkX3ZhbHVlID0gZ2V0X2NvbmZpZ3VyZWRfdmFsdWUoY29uZmlnX2tleSk7CisgICAgICAgIGlmIChjb25maWd1cmVkX3ZhbHVlICE9IE5VTEwpCisgICAgICAgICAgICB3YW50ZWRfdmVyID0gY29uZmlndXJlZF92YWx1ZTsKKyAgICB9CisgICAgaWYgKCp3YW50ZWRfdmVyKSB7CisgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24od2FudGVkX3Zlcik7CisgICAgICAgIGRlYnVnKEwic2VhcmNoIGZvciBQeXRob24gdmVyc2lvbiAnJXMnIGZvdW5kICIsIHdhbnRlZF92ZXIpOworICAgICAgICBpZiAocmVzdWx0KSB7CisgICAgICAgICAgICBkZWJ1ZyhMIiclcydcbiIsIHJlc3VsdC0+ZXhlY3V0YWJsZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkZWJ1ZyhMIm5vIGludGVycHJldGVyXG4iKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgKmxhc3RfY2hhciA9IEwnXDAnOyAvKiBsb29rIGZvciBhbiBvdmVyYWxsIGRlZmF1bHQgKi8KKyAgICAgICAgY29uZmlndXJlZF92YWx1ZSA9IGdldF9jb25maWd1cmVkX3ZhbHVlKGNvbmZpZ19rZXkpOworICAgICAgICBpZiAoY29uZmlndXJlZF92YWx1ZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24oY29uZmlndXJlZF92YWx1ZSk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24oTCIyIik7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24oTCIzIik7CisgICAgICAgIGRlYnVnKEwic2VhcmNoIGZvciBkZWZhdWx0IFB5dGhvbiBmb3VuZCAiKTsKKyAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgZGVidWcoTCJ2ZXJzaW9uICVzIGF0ICclcydcbiIsCisgICAgICAgICAgICAgICAgICByZXN1bHQtPnZlcnNpb24sIHJlc3VsdC0+ZXhlY3V0YWJsZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkZWJ1ZyhMIm5vIGludGVycHJldGVyXG4iKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKgorICogUHJvY2VzcyBjcmVhdGlvbiBjb2RlCisgKi8KKworc3RhdGljIEJPT0wKK3NhZmVfZHVwbGljYXRlX2hhbmRsZShIQU5ETEUgaW4sIEhBTkRMRSAqIHBvdXQpCit7CisgICAgQk9PTCBvazsKKyAgICBIQU5ETEUgcHJvY2VzcyA9IEdldEN1cnJlbnRQcm9jZXNzKCk7CisgICAgRFdPUkQgcmM7CisKKyAgICAqcG91dCA9IE5VTEw7CisgICAgb2sgPSBEdXBsaWNhdGVIYW5kbGUocHJvY2VzcywgaW4sIHByb2Nlc3MsIHBvdXQsIDAsIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgRFVQTElDQVRFX1NBTUVfQUNDRVNTKTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIHJjID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgIGlmIChyYyA9PSBFUlJPUl9JTlZBTElEX0hBTkRMRSkgeworICAgICAgICAgICAgZGVidWcoTCJEdXBsaWNhdGVIYW5kbGUgcmV0dXJuZWQgRVJST1JfSU5WQUxJRF9IQU5ETEVcbiIpOworICAgICAgICAgICAgb2sgPSBUUlVFOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZGVidWcoTCJEdXBsaWNhdGVIYW5kbGUgcmV0dXJuZWQgJWRcbiIsIHJjKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gb2s7Cit9CisKK3N0YXRpYyBCT09MIFdJTkFQSQorY3RybF9jX2hhbmRsZXIoRFdPUkQgY29kZSkKK3sKKyAgICByZXR1cm4gVFJVRTsgICAgLyogV2UganVzdCBpZ25vcmUgYWxsIGNvbnRyb2wgZXZlbnRzLiAqLworfQorCitzdGF0aWMgdm9pZAorcnVuX2NoaWxkKHdjaGFyX3QgKiBjbWRsaW5lKQoreworICAgIEhBTkRMRSBqb2I7CisgICAgSk9CT0JKRUNUX0VYVEVOREVEX0xJTUlUX0lORk9STUFUSU9OIGluZm87CisgICAgRFdPUkQgcmM7CisgICAgQk9PTCBvazsKKyAgICBTVEFSVFVQSU5GT1cgc2k7CisgICAgUFJPQ0VTU19JTkZPUk1BVElPTiBwaTsKKworI2lmIGRlZmluZWQoX1dJTkRPV1MpCisgICAgLy8gV2hlbiBleHBsb3JlciBsYXVuY2hlcyBhIFdpbmRvd3MgKEdVSSkgYXBwbGljYXRpb24sIGl0IGRpc3BsYXlzCisgICAgLy8gdGhlICJhcHAgc3RhcnRpbmciICh0aGUgInBvaW50ZXIgKyBob3VyZ2xhc3MiKSBjdXJzb3IgZm9yIGEgbnVtYmVyCisgICAgLy8gb2Ygc2Vjb25kcywgb3IgdW50aWwgdGhlIGFwcCBkb2VzIHNvbWV0aGluZyBVSS1pc2ggKGVnLCBjcmVhdGluZyBhCisgICAgLy8gd2luZG93LCBvciBmZXRjaGluZyBhIG1lc3NhZ2UpLiAgQXMgdGhpcyBsYXVuY2hlciBkb2Vzbid0IGRvIHRoaXMKKyAgICAvLyBkaXJlY3RseSwgdGhhdCBjdXJzb3IgcmVtYWlucyBldmVuIGFmdGVyIHRoZSBjaGlsZCBwcm9jZXNzIGRvZXMgdGhlc2UKKyAgICAvLyB0aGluZ3MuICBXZSBhdm9pZCB0aGF0IGJ5IGRvaW5nIGEgc2ltcGxlIHBvc3QrZ2V0IG1lc3NhZ2UuCisgICAgLy8gU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNzI5MCBhbmQgCisgICAgLy8gaHR0cHM6Ly9iaXRidWNrZXQub3JnL3ZpbmF5LnNhamlwL3B5bGF1bmNoZXIvaXNzdWUvMjAvYnVzeS1jdXJzb3ItZm9yLWEtbG9uZy10aW1lLXdoZW4tcnVubmluZworICAgIE1TRyBtc2c7CisKKyAgICBQb3N0TWVzc2FnZSgwLCAwLCAwLCAwKTsKKyAgICBHZXRNZXNzYWdlKCZtc2csIDAsIDAsIDApOworI2VuZGlmCisKKyAgICBkZWJ1ZyhMInJ1bl9jaGlsZDogYWJvdXQgdG8gcnVuICclcydcbiIsIGNtZGxpbmUpOworICAgIGpvYiA9IENyZWF0ZUpvYk9iamVjdChOVUxMLCBOVUxMKTsKKyAgICBvayA9IFF1ZXJ5SW5mb3JtYXRpb25Kb2JPYmplY3Qoam9iLCBKb2JPYmplY3RFeHRlbmRlZExpbWl0SW5mb3JtYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluZm8sIHNpemVvZihpbmZvKSwgJnJjKTsKKyAgICBpZiAoIW9rIHx8IChyYyAhPSBzaXplb2YoaW5mbykpIHx8ICFqb2IpCisgICAgICAgIGVycm9yKFJDX0NSRUFURV9QUk9DRVNTLCBMIkpvYiBpbmZvcm1hdGlvbiBxdWVyeWluZyBmYWlsZWQiKTsKKyAgICBpbmZvLkJhc2ljTGltaXRJbmZvcm1hdGlvbi5MaW1pdEZsYWdzIHw9IEpPQl9PQkpFQ1RfTElNSVRfS0lMTF9PTl9KT0JfQ0xPU0UgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSk9CX09CSkVDVF9MSU1JVF9TSUxFTlRfQlJFQUtBV0FZX09LOworICAgIG9rID0gU2V0SW5mb3JtYXRpb25Kb2JPYmplY3Qoam9iLCBKb2JPYmplY3RFeHRlbmRlZExpbWl0SW5mb3JtYXRpb24sICZpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGluZm8pKTsKKyAgICBpZiAoIW9rKQorICAgICAgICBlcnJvcihSQ19DUkVBVEVfUFJPQ0VTUywgTCJKb2IgaW5mb3JtYXRpb24gc2V0dGluZyBmYWlsZWQiKTsKKyAgICBtZW1zZXQoJnNpLCAwLCBzaXplb2Yoc2kpKTsKKyAgICBzaS5jYiA9IHNpemVvZihzaSk7CisgICAgb2sgPSBzYWZlX2R1cGxpY2F0ZV9oYW5kbGUoR2V0U3RkSGFuZGxlKFNURF9JTlBVVF9IQU5ETEUpLCAmc2kuaFN0ZElucHV0KTsKKyAgICBpZiAoIW9rKQorICAgICAgICBlcnJvcihSQ19OT19TVERfSEFORExFUywgTCJzdGRpbiBkdXBsaWNhdGlvbiBmYWlsZWQiKTsKKyAgICBvayA9IHNhZmVfZHVwbGljYXRlX2hhbmRsZShHZXRTdGRIYW5kbGUoU1REX09VVFBVVF9IQU5ETEUpLCAmc2kuaFN0ZE91dHB1dCk7CisgICAgaWYgKCFvaykKKyAgICAgICAgZXJyb3IoUkNfTk9fU1REX0hBTkRMRVMsIEwic3Rkb3V0IGR1cGxpY2F0aW9uIGZhaWxlZCIpOworICAgIG9rID0gc2FmZV9kdXBsaWNhdGVfaGFuZGxlKEdldFN0ZEhhbmRsZShTVERfRVJST1JfSEFORExFKSwgJnNpLmhTdGRFcnJvcik7CisgICAgaWYgKCFvaykKKyAgICAgICAgZXJyb3IoUkNfTk9fU1REX0hBTkRMRVMsIEwic3RkZXJyIGR1cGxpY2F0aW9uIGZhaWxlZCIpOworCisgICAgb2sgPSBTZXRDb25zb2xlQ3RybEhhbmRsZXIoY3RybF9jX2hhbmRsZXIsIFRSVUUpOworICAgIGlmICghb2spCisgICAgICAgIGVycm9yKFJDX0NSRUFURV9QUk9DRVNTLCBMImNvbnRyb2wgaGFuZGxlciBzZXR0aW5nIGZhaWxlZCIpOworCisgICAgc2kuZHdGbGFncyA9IFNUQVJURl9VU0VTVERIQU5ETEVTOworICAgIG9rID0gQ3JlYXRlUHJvY2Vzc1coTlVMTCwgY21kbGluZSwgTlVMTCwgTlVMTCwgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgIDAsIE5VTEwsIE5VTEwsICZzaSwgJnBpKTsKKyAgICBpZiAoIW9rKQorICAgICAgICBlcnJvcihSQ19DUkVBVEVfUFJPQ0VTUywgTCJVbmFibGUgdG8gY3JlYXRlIHByb2Nlc3MgdXNpbmcgJyVzJyIsIGNtZGxpbmUpOworICAgIEFzc2lnblByb2Nlc3NUb0pvYk9iamVjdChqb2IsIHBpLmhQcm9jZXNzKTsKKyAgICBDbG9zZUhhbmRsZShwaS5oVGhyZWFkKTsKKyAgICBXYWl0Rm9yU2luZ2xlT2JqZWN0KHBpLmhQcm9jZXNzLCBJTkZJTklURSk7CisgICAgb2sgPSBHZXRFeGl0Q29kZVByb2Nlc3MocGkuaFByb2Nlc3MsICZyYyk7CisgICAgaWYgKCFvaykKKyAgICAgICAgZXJyb3IoUkNfQ1JFQVRFX1BST0NFU1MsIEwiRmFpbGVkIHRvIGdldCBleGl0IGNvZGUgb2YgcHJvY2VzcyIpOworICAgIGRlYnVnKEwiY2hpbGQgcHJvY2VzcyBleGl0IGNvZGU6ICVkXG4iLCByYyk7CisgICAgRXhpdFByb2Nlc3MocmMpOworfQorCitzdGF0aWMgdm9pZAoraW52b2tlX2NoaWxkKHdjaGFyX3QgKiBleGVjdXRhYmxlLCB3Y2hhcl90ICogc3VmZml4LCB3Y2hhcl90ICogY21kbGluZSkKK3sKKyAgICB3Y2hhcl90ICogY2hpbGRfY29tbWFuZDsKKyAgICBzaXplX3QgY2hpbGRfY29tbWFuZF9zaXplOworICAgIEJPT0wgbm9fc3VmZml4ID0gKHN1ZmZpeCA9PSBOVUxMKSB8fCAoKnN1ZmZpeCA9PSBMJ1wwJyk7CisgICAgQk9PTCBub19jbWRsaW5lID0gKCpjbWRsaW5lID09IEwnXDAnKTsKKworICAgIGlmIChub19zdWZmaXggJiYgbm9fY21kbGluZSkKKyAgICAgICAgcnVuX2NoaWxkKGV4ZWN1dGFibGUpOworICAgIGVsc2UgeworICAgICAgICBpZiAobm9fc3VmZml4KSB7CisgICAgICAgICAgICAvKiBhZGQgMiBmb3Igc3BhY2Ugc2VwYXJhdG9yICsgdGVybWluYXRpbmcgTlVMLiAqLworICAgICAgICAgICAgY2hpbGRfY29tbWFuZF9zaXplID0gd2NzbGVuKGV4ZWN1dGFibGUpICsgd2NzbGVuKGNtZGxpbmUpICsgMjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIGFkZCAzIGZvciAyIHNwYWNlIHNlcGFyYXRvcnMgKyB0ZXJtaW5hdGluZyBOVUwuICovCisgICAgICAgICAgICBjaGlsZF9jb21tYW5kX3NpemUgPSB3Y3NsZW4oZXhlY3V0YWJsZSkgKyB3Y3NsZW4oc3VmZml4KSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y3NsZW4oY21kbGluZSkgKyAzOworICAgICAgICB9CisgICAgICAgIGNoaWxkX2NvbW1hbmQgPSBjYWxsb2MoY2hpbGRfY29tbWFuZF9zaXplLCBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICBpZiAoY2hpbGRfY29tbWFuZCA9PSBOVUxMKQorICAgICAgICAgICAgZXJyb3IoUkNfQ1JFQVRFX1BST0NFU1MsIEwidW5hYmxlIHRvIGFsbG9jYXRlICVkIGJ5dGVzIGZvciBjaGlsZCBjb21tYW5kLiIsCisgICAgICAgICAgICAgICAgICBjaGlsZF9jb21tYW5kX3NpemUpOworICAgICAgICBpZiAobm9fc3VmZml4KQorICAgICAgICAgICAgX3Nud3ByaW50Zl9zKGNoaWxkX2NvbW1hbmQsIGNoaWxkX2NvbW1hbmRfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZF9jb21tYW5kX3NpemUgLSAxLCBMIiVzICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlLCBjbWRsaW5lKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgX3Nud3ByaW50Zl9zKGNoaWxkX2NvbW1hbmQsIGNoaWxkX2NvbW1hbmRfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZF9jb21tYW5kX3NpemUgLSAxLCBMIiVzICVzICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlLCBzdWZmaXgsIGNtZGxpbmUpOworICAgICAgICBydW5fY2hpbGQoY2hpbGRfY29tbWFuZCk7CisgICAgICAgIGZyZWUoY2hpbGRfY29tbWFuZCk7CisgICAgfQorfQorCitzdGF0aWMgd2NoYXJfdCAqIGJ1aWx0aW5fdmlydHVhbF9wYXRocyBbXSA9IHsKKyAgICBMIi91c3IvYmluL2VudiBweXRob24iLAorICAgIEwiL3Vzci9iaW4vcHl0aG9uIiwKKyAgICBMIi91c3IvbG9jYWwvYmluL3B5dGhvbiIsCisgICAgTCJweXRob24iLAorICAgIE5VTEwKK307CisKKy8qIEZvciBub3csIGEgc3RhdGljIGFycmF5IG9mIGNvbW1hbmRzLiAqLworCisjZGVmaW5lIE1BWF9DT01NQU5EUyAxMDAKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHdjaGFyX3Qga2V5W01BWF9QQVRIXTsKKyAgICB3Y2hhcl90IHZhbHVlW01TR1NJWkVdOworfSBDT01NQU5EOworCitzdGF0aWMgQ09NTUFORCBjb21tYW5kc1tNQVhfQ09NTUFORFNdOworc3RhdGljIGludCBudW1fY29tbWFuZHMgPSAwOworCisjaWYgZGVmaW5lZChTS0lQX1BSRUZJWCkKKworc3RhdGljIHdjaGFyX3QgKiBidWlsdGluX3ByZWZpeGVzIFtdID0geworICAgIC8qIFRoZXNlIG11c3QgYmUgaW4gYW4gb3JkZXIgdGhhdCB0aGUgbG9uZ2VzdCBtYXRjaGVzIHNob3VsZCBiZSBmb3VuZCwKKyAgICAgKiBpLmUuIGlmIHRoZSBwcmVmaXggaXMgIi91c3IvYmluL2VudiAiLCBpdCBzaG91bGQgbWF0Y2ggdGhhdCBlbnRyeQorICAgICAqICpiZWZvcmUqIG1hdGNoaW5nICIvdXNyL2Jpbi8iLgorICAgICAqLworICAgIEwiL3Vzci9iaW4vZW52ICIsCisgICAgTCIvdXNyL2Jpbi8iLAorICAgIEwiL3Vzci9sb2NhbC9iaW4vIiwKKyAgICBOVUxMCit9OworCitzdGF0aWMgd2NoYXJfdCAqIHNraXBfcHJlZml4KHdjaGFyX3QgKiBuYW1lKQoreworICAgIHdjaGFyX3QgKiogcHAgPSBidWlsdGluX3ByZWZpeGVzOworICAgIHdjaGFyX3QgKiByZXN1bHQgPSBuYW1lOworICAgIHdjaGFyX3QgKiBwOworICAgIHNpemVfdCBuOworCisgICAgZm9yICg7IHAgPSAqcHA7IHBwKyspIHsKKyAgICAgICAgbiA9IHdjc2xlbihwKTsKKyAgICAgICAgaWYgKF93Y3NuaWNtcChwLCBuYW1lLCBuKSA9PSAwKSB7CisgICAgICAgICAgICByZXN1bHQgKz0gbjsgICAvKiBza2lwIHRoZSBwcmVmaXggKi8KKyAgICAgICAgICAgIGlmIChwW24gLSAxXSA9PSBMJyAnKSAvKiBObyBlbXB0eSBzdHJpbmdzIGluIHRhYmxlLCBzbyBuID4gMSAqLworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNraXBfd2hpdGVzcGFjZShyZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFNFQVJDSF9QQVRIKQorCitzdGF0aWMgQ09NTUFORCBwYXRoX2NvbW1hbmQ7CisKK3N0YXRpYyBDT01NQU5EICogZmluZF9vbl9wYXRoKHdjaGFyX3QgKiBuYW1lKQoreworICAgIHdjaGFyX3QgKiBwYXRoZXh0OworICAgIHNpemVfdCAgICB2YXJzaXplOworICAgIHdjaGFyX3QgKiBjb250ZXh0ID0gTlVMTDsKKyAgICB3Y2hhcl90ICogZXh0ZW5zaW9uOworICAgIENPTU1BTkQgKiByZXN1bHQgPSBOVUxMOworICAgIERXT1JEICAgICBsZW47CisgICAgZXJybm9fdCAgIHJjOworCisgICAgd2NzY3B5X3MocGF0aF9jb21tYW5kLmtleSwgTUFYX1BBVEgsIG5hbWUpOworICAgIGlmICh3Y3NjaHIobmFtZSwgTCcuJykgIT0gTlVMTCkgeworICAgICAgICAvKiBhc3N1bWUgaXQgaGFzIGFuIGV4dGVuc2lvbi4gKi8KKyAgICAgICAgbGVuID0gU2VhcmNoUGF0aFcoTlVMTCwgbmFtZSwgTlVMTCwgTVNHU0laRSwgcGF0aF9jb21tYW5kLnZhbHVlLCBOVUxMKTsKKyAgICAgICAgaWYgKGxlbikgeworICAgICAgICAgICAgcmVzdWx0ID0gJnBhdGhfY29tbWFuZDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogTm8gZXh0ZW5zaW9uIC0gc2VhcmNoIHVzaW5nIHJlZ2lzdGVyZWQgZXh0ZW5zaW9ucy4gKi8KKyAgICAgICAgcmMgPSBfd2R1cGVudl9zKCZwYXRoZXh0LCAmdmFyc2l6ZSwgTCJQQVRIRVhUIik7CisgICAgICAgIGlmIChyYyA9PSAwKSB7CisgICAgICAgICAgICBleHRlbnNpb24gPSB3Y3N0b2tfcyhwYXRoZXh0LCBMIjsiLCAmY29udGV4dCk7CisgICAgICAgICAgICB3aGlsZSAoZXh0ZW5zaW9uKSB7CisgICAgICAgICAgICAgICAgbGVuID0gU2VhcmNoUGF0aFcoTlVMTCwgbmFtZSwgZXh0ZW5zaW9uLCBNU0dTSVpFLCBwYXRoX2NvbW1hbmQudmFsdWUsIE5VTEwpOworICAgICAgICAgICAgICAgIGlmIChsZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gJnBhdGhfY29tbWFuZDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9IHdjc3Rva19zKE5VTEwsIEwiOyIsICZjb250ZXh0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZyZWUocGF0aGV4dCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2VuZGlmCisKK3N0YXRpYyBDT01NQU5EICogZmluZF9jb21tYW5kKHdjaGFyX3QgKiBuYW1lKQoreworICAgIENPTU1BTkQgKiByZXN1bHQgPSBOVUxMOworICAgIENPTU1BTkQgKiBjcCA9IGNvbW1hbmRzOworICAgIGludCBpOworCisgICAgZm9yIChpID0gMDsgaSA8IG51bV9jb21tYW5kczsgaSsrLCBjcCsrKSB7CisgICAgICAgIGlmIChfd2NzaWNtcChjcC0+a2V5LCBuYW1lKSA9PSAwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBjcDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorI2lmIGRlZmluZWQoU0VBUkNIX1BBVEgpCisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXN1bHQgPSBmaW5kX29uX3BhdGgobmFtZSk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZAordXBkYXRlX2NvbW1hbmQoQ09NTUFORCAqIGNwLCB3Y2hhcl90ICogbmFtZSwgd2NoYXJfdCAqIGNtZGxpbmUpCit7CisgICAgd2NzbmNweV9zKGNwLT5rZXksIE1BWF9QQVRILCBuYW1lLCBfVFJVTkNBVEUpOworICAgIHdjc25jcHlfcyhjcC0+dmFsdWUsIE1TR1NJWkUsIGNtZGxpbmUsIF9UUlVOQ0FURSk7Cit9CisKK3N0YXRpYyB2b2lkCithZGRfY29tbWFuZCh3Y2hhcl90ICogbmFtZSwgd2NoYXJfdCAqIGNtZGxpbmUpCit7CisgICAgaWYgKG51bV9jb21tYW5kcyA+PSBNQVhfQ09NTUFORFMpIHsKKyAgICAgICAgZGVidWcoTCJjYW4ndCBhZGQgJXMgPSAnJXMnOiBubyByb29tXG4iLCBuYW1lLCBjbWRsaW5lKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIENPTU1BTkQgKiBjcCA9ICZjb21tYW5kc1tudW1fY29tbWFuZHMrK107CisKKyAgICAgICAgdXBkYXRlX2NvbW1hbmQoY3AsIG5hbWUsIGNtZGxpbmUpOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK3JlYWRfY29uZmlnX2ZpbGUod2NoYXJfdCAqIGNvbmZpZ19wYXRoKQoreworICAgIHdjaGFyX3Qga2V5bmFtZXNbTVNHU0laRV07CisgICAgd2NoYXJfdCB2YWx1ZVtNU0dTSVpFXTsKKyAgICBEV09SRCByZWFkOworICAgIHdjaGFyX3QgKiBrZXk7CisgICAgQ09NTUFORCAqIGNwOworICAgIHdjaGFyX3QgKiBjbWRwOworCisgICAgcmVhZCA9IEdldFByaXZhdGVQcm9maWxlU3RyaW5nVyhMImNvbW1hbmRzIiwgTlVMTCwgTlVMTCwga2V5bmFtZXMsIE1TR1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfcGF0aCk7CisgICAgaWYgKHJlYWQgPT0gTVNHU0laRSAtIDEpIHsKKyAgICAgICAgZGVidWcoTCJyZWFkX2NvbW1hbmRzOiAlczogbm90IGVub3VnaCBzcGFjZSBmb3IgbmFtZXNcbiIsIGNvbmZpZ19wYXRoKTsKKyAgICB9CisgICAga2V5ID0ga2V5bmFtZXM7CisgICAgd2hpbGUgKCprZXkpIHsKKyAgICAgICAgcmVhZCA9IEdldFByaXZhdGVQcm9maWxlU3RyaW5nVyhMImNvbW1hbmRzIiwga2V5LCBOVUxMLCB2YWx1ZSwgTVNHU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ19wYXRoKTsKKyAgICAgICAgaWYgKHJlYWQgPT0gTVNHU0laRSAtIDEpIHsKKyAgICAgICAgICAgIGRlYnVnKEwicmVhZF9jb21tYW5kczogJXM6IG5vdCBlbm91Z2ggc3BhY2UgZm9yICVzXG4iLAorICAgICAgICAgICAgICAgICAgY29uZmlnX3BhdGgsIGtleSk7CisgICAgICAgIH0KKyAgICAgICAgY21kcCA9IHNraXBfd2hpdGVzcGFjZSh2YWx1ZSk7CisgICAgICAgIGlmICgqY21kcCkgeworICAgICAgICAgICAgY3AgPSBmaW5kX2NvbW1hbmQoa2V5KTsKKyAgICAgICAgICAgIGlmIChjcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGFkZF9jb21tYW5kKGtleSwgdmFsdWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHVwZGF0ZV9jb21tYW5kKGNwLCBrZXksIHZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBrZXkgKz0gd2NzbGVuKGtleSkgKyAxOworICAgIH0KK30KKworc3RhdGljIHZvaWQgcmVhZF9jb21tYW5kcygpCit7CisgICAgaWYgKGxhdW5jaGVyX2luaV9wYXRoWzBdKQorICAgICAgICByZWFkX2NvbmZpZ19maWxlKGxhdW5jaGVyX2luaV9wYXRoKTsKKyAgICBpZiAoYXBwZGF0YV9pbmlfcGF0aFswXSkKKyAgICAgICAgcmVhZF9jb25maWdfZmlsZShhcHBkYXRhX2luaV9wYXRoKTsKK30KKworc3RhdGljIEJPT0wKK3BhcnNlX3NoZWJhbmcod2NoYXJfdCAqIHNoZWJhbmdfbGluZSwgaW50IG5jaGFycywgd2NoYXJfdCAqKiBjb21tYW5kLAorICAgICAgICAgICAgICB3Y2hhcl90ICoqIHN1ZmZpeCkKK3sKKyAgICBCT09MIHJjID0gRkFMU0U7CisgICAgd2NoYXJfdCAqKiB2cHA7CisgICAgc2l6ZV90IHBsZW47CisgICAgd2NoYXJfdCAqIHA7CisgICAgd2NoYXJfdCB6YXBwZWQ7CisgICAgd2NoYXJfdCAqIGVuZHAgPSBzaGViYW5nX2xpbmUgKyBuY2hhcnMgLSAxOworICAgIENPTU1BTkQgKiBjcDsKKyAgICB3Y2hhcl90ICogc2tpcHBlZDsKKworICAgICpjb21tYW5kID0gTlVMTDsgICAgLyogZmFpbHVyZSByZXR1cm4gKi8KKyAgICAqc3VmZml4ID0gTlVMTDsKKworICAgIGlmICgoKnNoZWJhbmdfbGluZSsrID09IEwnIycpICYmICgqc2hlYmFuZ19saW5lKysgPT0gTCchJykpIHsKKyAgICAgICAgc2hlYmFuZ19saW5lID0gc2tpcF93aGl0ZXNwYWNlKHNoZWJhbmdfbGluZSk7CisgICAgICAgIGlmICgqc2hlYmFuZ19saW5lKSB7CisgICAgICAgICAgICAqY29tbWFuZCA9IHNoZWJhbmdfbGluZTsKKyAgICAgICAgICAgIGZvciAodnBwID0gYnVpbHRpbl92aXJ0dWFsX3BhdGhzOyAqdnBwOyArK3ZwcCkgeworICAgICAgICAgICAgICAgIHBsZW4gPSB3Y3NsZW4oKnZwcCk7CisgICAgICAgICAgICAgICAgaWYgKHdjc25jbXAoc2hlYmFuZ19saW5lLCAqdnBwLCBwbGVuKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJjID0gVFJVRTsKKyAgICAgICAgICAgICAgICAgICAgLyogV2UgY2FuIGRvIHRoaXMgYmVjYXVzZSBhbGwgYnVpbHRpbiBjb21tYW5kcyBjb250YWluCisgICAgICAgICAgICAgICAgICAgICAqICJweXRob24iLgorICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgKmNvbW1hbmQgPSB3Y3NzdHIoc2hlYmFuZ19saW5lLCBMInB5dGhvbiIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKnZwcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBOb3QgZm91bmQgaW4gYnVpbHRpbnMgLSBsb29rIGluIGN1c3RvbWlzZWQgY29tbWFuZHMuCisgICAgICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgKiBXZSBjYW4ndCBwZXJtYW5lbnRseSBtb2RpZnkgdGhlIHNoZWJhbmcgbGluZSBpbiBjYXNlCisgICAgICAgICAgICAgICAgICogaXQncyBub3QgYSBjdXN0b21pc2VkIGNvbW1hbmQsIGJ1dCB3ZSBjYW4gdGVtcG9yYXJpbHkKKyAgICAgICAgICAgICAgICAgKiBzdGljayBhIE5VTCBhZnRlciB0aGUgY29tbWFuZCB3aGlsZSBzZWFyY2hpbmcgZm9yIGl0LAorICAgICAgICAgICAgICAgICAqIHRoZW4gcHV0IGJhY2sgdGhlIGNoYXIgd2UgemFwcGVkLgorICAgICAgICAgICAgICAgICAqLworI2lmIGRlZmluZWQoU0tJUF9QUkVGSVgpCisgICAgICAgICAgICAgICAgc2tpcHBlZCA9IHNraXBfcHJlZml4KHNoZWJhbmdfbGluZSk7CisjZWxzZQorICAgICAgICAgICAgICAgIHNraXBwZWQgPSBzaGViYW5nX2xpbmU7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBwID0gd2NzcGJyayhza2lwcGVkLCBMIiBcdFxyXG4iKTsKKyAgICAgICAgICAgICAgICBpZiAocCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHphcHBlZCA9ICpwOworICAgICAgICAgICAgICAgICAgICAqcCA9IEwnXDAnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjcCA9IGZpbmRfY29tbWFuZChza2lwcGVkKTsKKyAgICAgICAgICAgICAgICBpZiAocCAhPSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAqcCA9IHphcHBlZDsKKyAgICAgICAgICAgICAgICBpZiAoY3AgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAqY29tbWFuZCA9IGNwLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHAgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgICpzdWZmaXggPSBza2lwX3doaXRlc3BhY2UocCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogcmVtb3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2UgKi8KKyAgICAgICAgICAgIHdoaWxlICgoZW5kcCA+IHNoZWJhbmdfbGluZSkgJiYgaXNzcGFjZSgqZW5kcCkpCisgICAgICAgICAgICAgICAgLS1lbmRwOworICAgICAgICAgICAgaWYgKGVuZHAgPiBzaGViYW5nX2xpbmUpCisgICAgICAgICAgICAgICAgZW5kcFsxXSA9IEwnXDAnOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByYzsKK30KKworLyogI2RlZmluZSBDUF9VVEY4ICAgICAgICAgICAgIDY1MDAxIGRlZmluZWQgaW4gd2lubmxzLmggKi8KKyNkZWZpbmUgQ1BfVVRGMTZMRSAgICAgICAgICAxMjAwCisjZGVmaW5lIENQX1VURjE2QkUgICAgICAgICAgMTIwMQorI2RlZmluZSBDUF9VVEYzMkxFICAgICAgICAgIDEyMDAwCisjZGVmaW5lIENQX1VURjMyQkUgICAgICAgICAgMTIwMDEKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGludCBsZW5ndGg7CisgICAgY2hhciBzZXF1ZW5jZVs0XTsKKyAgICBVSU5UIGNvZGVfcGFnZTsKK30gQk9NOworCisvKgorICogU3RyaWN0bHksIHdlIGRvbid0IG5lZWQgdG8gaGFuZGxlIFVURi0xNiBhbmYgVVRGLTMyLCBzaW5jZSBQeXRob24gaXRzZWxmCisgKiBkb2Vzbid0LiBOZXZlciBtaW5kLCBvbmUgZGF5IGl0IG1pZ2h0IC0gdGhlcmUncyBubyBoYXJtIGxlYXZpbmcgaXQgaW4uCisgKi8KK3N0YXRpYyBCT00gQk9Nc1tdID0geworICAgIHsgMywgeyAweEVGLCAweEJCLCAweEJGIH0sIENQX1VURjggfSwgICAgICAgICAgIC8qIFVURi04IC0ga2VlcCBmaXJzdCAqLworICAgIHsgMiwgeyAweEZGLCAweEZFIH0sIENQX1VURjE2TEUgfSwgICAgICAgICAgICAgIC8qIFVURi0xNkxFICovCisgICAgeyAyLCB7IDB4RkUsIDB4RkYgfSwgQ1BfVVRGMTZCRSB9LCAgICAgICAgICAgICAgLyogVVRGLTE2QkUgKi8KKyAgICB7IDQsIHsgMHhGRiwgMHhGRSwgMHgwMCwgMHgwMCB9LCBDUF9VVEYzMkxFIH0sICAvKiBVVEYtMzJMRSAqLworICAgIHsgNCwgeyAweDAwLCAweDAwLCAweEZFLCAweEZGIH0sIENQX1VURjMyQkUgfSwgIC8qIFVURi0zMkJFICovCisgICAgeyAwIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKK3N0YXRpYyBCT00gKgorZmluZF9CT00oY2hhciAqIGJ1ZmZlcikKK3sKKy8qCisgKiBMb29rIGZvciBhIEJPTSBpbiB0aGUgaW5wdXQgYW5kIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlCisgKiBjb3JyZXNwb25kaW5nIHN0cnVjdHVyZSwgb3IgTlVMTCBpZiBub3QgZm91bmQuCisgKi8KKyAgICBCT00gKiByZXN1bHQgPSBOVUxMOworICAgIEJPTSAqYm9tOworCisgICAgZm9yIChib20gPSBCT01zOyBib20tPmxlbmd0aDsgYm9tKyspIHsKKyAgICAgICAgaWYgKHN0cm5jbXAoYm9tLT5zZXF1ZW5jZSwgYnVmZmVyLCBib20tPmxlbmd0aCkgPT0gMCkgeworICAgICAgICAgICAgcmVzdWx0ID0gYm9tOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGNoYXIgKgorZmluZF90ZXJtaW5hdG9yKGNoYXIgKiBidWZmZXIsIGludCBsZW4sIEJPTSAqYm9tKQoreworICAgIGNoYXIgKiByZXN1bHQgPSBOVUxMOworICAgIGNoYXIgKiBlbmQgPSBidWZmZXIgKyBsZW47CisgICAgY2hhciAgKiBwOworICAgIGNoYXIgYzsKKyAgICBpbnQgY3A7CisKKyAgICBmb3IgKHAgPSBidWZmZXI7IHAgPCBlbmQ7IHArKykgeworICAgICAgICBjID0gKnA7CisgICAgICAgIGlmIChjID09ICdccicpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoYyA9PSAnXG4nKSB7CisgICAgICAgICAgICByZXN1bHQgPSBwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7CisgICAgICAgIGNwID0gYm9tLT5jb2RlX3BhZ2U7CisKKyAgICAgICAgLyogYWRqdXN0bWVudHMgdG8gaW5jbHVkZSBhbGwgYnl0ZXMgb2YgdGhlIGNoYXIgKi8KKyAgICAgICAgLyogbm8gYWRqdXN0bWVudCBuZWVkZWQgZm9yIFVURi04IG9yIGJpZyBlbmRpYW4gKi8KKyAgICAgICAgaWYgKGNwID09IENQX1VURjE2TEUpCisgICAgICAgICAgICArK3Jlc3VsdDsKKyAgICAgICAgZWxzZSBpZiAoY3AgPT0gQ1BfVVRGMzJMRSkKKyAgICAgICAgICAgIHJlc3VsdCArPSAzOworICAgICAgICArK3Jlc3VsdDsgLyogcG9pbnQganVzdCBwYXN0IHRlcm1pbmF0b3IgKi8KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIEJPT0wKK3ZhbGlkYXRlX3ZlcnNpb24od2NoYXJfdCAqIHApCit7CisgICAgQk9PTCByZXN1bHQgPSBUUlVFOworCisgICAgaWYgKCFpc2RpZ2l0KCpwKSkgICAgICAgICAgICAgICAvKiBleHBlY3QgbWFqb3IgdmVyc2lvbiAqLworICAgICAgICByZXN1bHQgPSBGQUxTRTsKKyAgICBlbHNlIGlmICgqKytwKSB7ICAgICAgICAgICAgICAgIC8qIG1vcmUgdG8gZG8gKi8KKyAgICAgICAgaWYgKCpwICE9IEwnLicpICAgICAgICAgICAgIC8qIG1ham9yL21pbm9yIHNlcGFyYXRvciAqLworICAgICAgICAgICAgcmVzdWx0ID0gRkFMU0U7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgKytwOworICAgICAgICAgICAgaWYgKCFpc2RpZ2l0KCpwKSkgICAgICAgLyogZXhwZWN0IG1pbm9yIHZlcnNpb24gKi8KKyAgICAgICAgICAgICAgICByZXN1bHQgPSBGQUxTRTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICBpZiAoKnApIHsgICAgICAgICAgIC8qIG1vcmUgdG8gZG8gKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKCpwICE9IEwnLScpCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBGQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCpwICE9ICczJykgJiYgKCorK3AgIT0gJzInKSAmJiAhKisrcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBGQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdW5zaWduZWQgc2hvcnQgbWluOworICAgIHVuc2lnbmVkIHNob3J0IG1heDsKKyAgICB3Y2hhcl90IHZlcnNpb25bTUFYX1ZFUlNJT05fU0laRV07Cit9IFBZQ19NQUdJQzsKKworc3RhdGljIFBZQ19NQUdJQyBtYWdpY192YWx1ZXNbXSA9IHsKKyAgICB7IDB4YzY4NywgMHhjNjg3LCBMIjIuMCIgfSwKKyAgICB7IDB4ZWIyYSwgMHhlYjJhLCBMIjIuMSIgfSwKKyAgICB7IDB4ZWQyZCwgMHhlZDJkLCBMIjIuMiIgfSwKKyAgICB7IDB4ZjIzYiwgMHhmMjQ1LCBMIjIuMyIgfSwKKyAgICB7IDB4ZjI1OSwgMHhmMjZkLCBMIjIuNCIgfSwKKyAgICB7IDB4ZjI3NywgMHhmMmIzLCBMIjIuNSIgfSwKKyAgICB7IDB4ZjJjNywgMHhmMmQxLCBMIjIuNiIgfSwKKyAgICB7IDB4ZjJkYiwgMHhmMzAzLCBMIjIuNyIgfSwKKyAgICB7IDB4MGJiOCwgMHgwYzNiLCBMIjMuMCIgfSwKKyAgICB7IDB4MGM0NSwgMHgwYzRmLCBMIjMuMSIgfSwKKyAgICB7IDB4MGM1OCwgMHgwYzZjLCBMIjMuMiIgfSwKKyAgICB7IDB4MGM3NiwgMHgwYzc2LCBMIjMuMyIgfSwKKyAgICB7IDAgfQorfTsKKworc3RhdGljIElOU1RBTExFRF9QWVRIT04gKgorZmluZF9ieV9tYWdpYyh1bnNpZ25lZCBzaG9ydCBtYWdpYykKK3sKKyAgICBJTlNUQUxMRURfUFlUSE9OICogcmVzdWx0ID0gTlVMTDsKKyAgICBQWUNfTUFHSUMgKiBtcDsKKworICAgIGZvciAobXAgPSBtYWdpY192YWx1ZXM7IG1wLT5taW47IG1wKyspIHsKKyAgICAgICAgaWYgKChtYWdpYyA+PSBtcC0+bWluKSAmJiAobWFnaWMgPD0gbXAtPm1heCkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGxvY2F0ZV9weXRob24obXAtPnZlcnNpb24pOworICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkCittYXliZV9oYW5kbGVfc2hlYmFuZyh3Y2hhcl90ICoqIGFyZ3YsIHdjaGFyX3QgKiBjbWRsaW5lKQoreworLyoKKyAqIExvb2sgZm9yIGEgc2hlYmFuZyBsaW5lIGluIHRoZSBmaXJzdCBhcmd1bWVudC4gIElmIGZvdW5kCisgKiBhbmQgd2Ugc3Bhd24gYSBjaGlsZCBwcm9jZXNzLCB0aGlzIG5ldmVyIHJldHVybnMuICBJZiBpdAorICogZG9lcyByZXR1cm4gdGhlbiB3ZSBwcm9jZXNzIHRoZSBhcmdzICJub3JtYWxseSIuCisgKgorICogYXJndlswXSBtaWdodCBiZSBhIGZpbGVuYW1lIHdpdGggYSBzaGViYW5nLgorICovCisgICAgRklMRSAqIGZwOworICAgIGVycm5vX3QgcmMgPSBfd2ZvcGVuX3MoJmZwLCAqYXJndiwgTCJyYiIpOworICAgIHVuc2lnbmVkIGNoYXIgYnVmZmVyW0JVRlNJWkVdOworICAgIHdjaGFyX3Qgc2hlYmFuZ19saW5lW0JVRlNJWkUgKyAxXTsKKyAgICBzaXplX3QgcmVhZDsKKyAgICBjaGFyICpwOworICAgIGNoYXIgKiBzdGFydDsKKyAgICBjaGFyICogc2hlYmFuZ19hbGlhcyA9IChjaGFyICopIHNoZWJhbmdfbGluZTsKKyAgICBCT00qIGJvbTsKKyAgICBpbnQgaSwgaiwgbmNoYXJzID0gMDsKKyAgICBpbnQgaGVhZGVyX2xlbjsKKyAgICBCT09MIGlzX3ZpcnQ7CisgICAgd2NoYXJfdCAqIGNvbW1hbmQ7CisgICAgd2NoYXJfdCAqIHN1ZmZpeDsKKyAgICBJTlNUQUxMRURfUFlUSE9OICogaXA7CisKKyAgICBpZiAocmMgPT0gMCkgeworICAgICAgICByZWFkID0gZnJlYWQoYnVmZmVyLCBzaXplb2YoY2hhciksIEJVRlNJWkUsIGZwKTsKKyAgICAgICAgZGVidWcoTCJtYXliZV9oYW5kbGVfc2hlYmFuZzogcmVhZCAlZCBieXRlc1xuIiwgcmVhZCk7CisgICAgICAgIGZjbG9zZShmcCk7CisKKyAgICAgICAgaWYgKChyZWFkID49IDQpICYmIChidWZmZXJbM10gPT0gJ1xuJykgJiYgKGJ1ZmZlclsyXSA9PSAnXHInKSkgeworICAgICAgICAgICAgaXAgPSBmaW5kX2J5X21hZ2ljKChidWZmZXJbMV0gPDwgOCB8IGJ1ZmZlclswXSkgJiAweEZGRkYpOworICAgICAgICAgICAgaWYgKGlwICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZyhMInNjcmlwdCBmaWxlIGlzIGNvbXBpbGVkIGFnYWluc3QgUHl0aG9uICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgIGlwLT52ZXJzaW9uKTsKKyAgICAgICAgICAgICAgICBpbnZva2VfY2hpbGQoaXAtPmV4ZWN1dGFibGUsIE5VTEwsIGNtZGxpbmUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8qIExvb2sgZm9yIEJPTSAqLworICAgICAgICBib20gPSBmaW5kX0JPTShidWZmZXIpOworICAgICAgICBpZiAoYm9tID09IE5VTEwpIHsKKyAgICAgICAgICAgIHN0YXJ0ID0gYnVmZmVyOworICAgICAgICAgICAgZGVidWcoTCJtYXliZV9oYW5kbGVfc2hlYmFuZzogQk9NIG5vdCBmb3VuZCwgdXNpbmcgVVRGLThcbiIpOworICAgICAgICAgICAgYm9tID0gQk9NczsgLyogcG9pbnRzIHRvIFVURi04IGVudHJ5IC0gdGhlIGRlZmF1bHQgKi8KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRlYnVnKEwibWF5YmVfaGFuZGxlX3NoZWJhbmc6IEJPTSBmb3VuZCwgY29kZSBwYWdlICVkXG4iLAorICAgICAgICAgICAgICAgICAgYm9tLT5jb2RlX3BhZ2UpOworICAgICAgICAgICAgc3RhcnQgPSAmYnVmZmVyW2JvbS0+bGVuZ3RoXTsKKyAgICAgICAgfQorICAgICAgICBwID0gZmluZF90ZXJtaW5hdG9yKHN0YXJ0LCBCVUZTSVpFLCBib20pOworICAgICAgICAvKgorICAgICAgICAgKiBJZiBubyBDUiBvciBMRiB3YXMgZm91bmQgaW4gdGhlIGhlYWRpbmcsCisgICAgICAgICAqIHdlIGFzc3VtZSBpdCdzIG5vdCBhIHNoZWJhbmcgZmlsZS4KKyAgICAgICAgICovCisgICAgICAgIGlmIChwID09IE5VTEwpIHsKKyAgICAgICAgICAgIGRlYnVnKEwibWF5YmVfaGFuZGxlX3NoZWJhbmc6IE5vIGxpbmUgdGVybWluYXRvciBmb3VuZFxuIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogRm91bmQgbGluZSB0ZXJtaW5hdG9yIC0gcGFyc2UgdGhlIHNoZWJhbmcuCisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogU3RyaWN0bHksIHdlIGRvbid0IG5lZWQgdG8gaGFuZGxlIFVURi0xNiBhbmYgVVRGLTMyLAorICAgICAgICAgICAgICogc2luY2UgUHl0aG9uIGl0c2VsZiBkb2Vzbid0LgorICAgICAgICAgICAgICogTmV2ZXIgbWluZCwgb25lIGRheSBpdCBtaWdodC4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaGVhZGVyX2xlbiA9IChpbnQpIChwIC0gc3RhcnQpOworICAgICAgICAgICAgc3dpdGNoKGJvbS0+Y29kZV9wYWdlKSB7CisgICAgICAgICAgICBjYXNlIENQX1VURjg6CisgICAgICAgICAgICAgICAgbmNoYXJzID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihib20tPmNvZGVfcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgaGVhZGVyX2xlbiwgc2hlYmFuZ19saW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlVGU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENQX1VURjE2QkU6CisgICAgICAgICAgICAgICAgaWYgKGhlYWRlcl9sZW4gJSAyICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJtYXliZV9oYW5kbGVfc2hlYmFuZzogVVRGLTE2QkUsIGJ1dCBhbiBvZGQgbnVtYmVyIFwKK29mIGJ5dGVzOiAlZFxuIiwgaGVhZGVyX2xlbik7CisgICAgICAgICAgICAgICAgICAgIC8qIG5jaGFycyA9IDA7IE5vdCBuZWVkZWQgLSBpbml0aWFsaXNlZCB0byAwLiAqLworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gaGVhZGVyX2xlbjsgaSA+IDA7IGkgLT0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgc2hlYmFuZ19hbGlhc1tpIC0gMV0gPSBzdGFydFtpIC0gMl07CisgICAgICAgICAgICAgICAgICAgICAgICBzaGViYW5nX2FsaWFzW2kgLSAyXSA9IHN0YXJ0W2kgLSAxXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBuY2hhcnMgPSBoZWFkZXJfbGVuIC8gc2l6ZW9mKHdjaGFyX3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1BfVVRGMTZMRToKKyAgICAgICAgICAgICAgICBpZiAoKGhlYWRlcl9sZW4gJSAyKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiVVRGLTE2TEUsIGJ1dCBhbiBvZGQgbnVtYmVyIG9mIGJ5dGVzOiAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX2xlbik7CisgICAgICAgICAgICAgICAgICAgIC8qIG5jaGFycyA9IDA7IE5vdCBuZWVkZWQgLSBpbml0aWFsaXNlZCB0byAwLiAqLworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLyogbm8gYWN0dWFsIGNvbnZlcnNpb24gbmVlZGVkLiAqLworICAgICAgICAgICAgICAgICAgICBtZW1jcHkoc2hlYmFuZ19saW5lLCBzdGFydCwgaGVhZGVyX2xlbik7CisgICAgICAgICAgICAgICAgICAgIG5jaGFycyA9IGhlYWRlcl9sZW4gLyBzaXplb2Yod2NoYXJfdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDUF9VVEYzMkJFOgorICAgICAgICAgICAgICAgIGlmIChoZWFkZXJfbGVuICUgNCAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiVVRGLTMyQkUsIGJ1dCBub3QgZGl2aXNpYmxlIGJ5IDQ6ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgLyogbmNoYXJzID0gMDsgTm90IG5lZWRlZCAtIGluaXRpYWxpc2VkIHRvIDAuICovCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBoZWFkZXJfbGVuLCBqID0gaGVhZGVyX2xlbiAvIDI7IGkgPiAwOyBpIC09IDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogLT0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgc2hlYmFuZ19hbGlhc1tqIC0gMV0gPSBzdGFydFtpIC0gMl07CisgICAgICAgICAgICAgICAgICAgICAgICBzaGViYW5nX2FsaWFzW2ogLSAyXSA9IHN0YXJ0W2kgLSAxXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBuY2hhcnMgPSBoZWFkZXJfbGVuIC8gc2l6ZW9mKHdjaGFyX3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1BfVVRGMzJMRToKKyAgICAgICAgICAgICAgICBpZiAoaGVhZGVyX2xlbiAlIDQgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIlVURi0zMkxFLCBidXQgbm90IGRpdmlzaWJsZSBieSA0OiAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX2xlbik7CisgICAgICAgICAgICAgICAgICAgIC8qIG5jaGFycyA9IDA7IE5vdCBuZWVkZWQgLSBpbml0aWFsaXNlZCB0byAwLiAqLworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gaGVhZGVyX2xlbiwgaiA9IGhlYWRlcl9sZW4gLyAyOyBpID4gMDsgaSAtPSA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqIC09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoZWJhbmdfYWxpYXNbaiAtIDFdID0gc3RhcnRbaSAtIDNdOworICAgICAgICAgICAgICAgICAgICAgICAgc2hlYmFuZ19hbGlhc1tqIC0gMl0gPSBzdGFydFtpIC0gNF07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbmNoYXJzID0gaGVhZGVyX2xlbiAvIHNpemVvZih3Y2hhcl90KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobmNoYXJzID4gMCkgeworICAgICAgICAgICAgICAgIHNoZWJhbmdfbGluZVstLW5jaGFyc10gPSBMJ1wwJzsKKyAgICAgICAgICAgICAgICBpc192aXJ0ID0gcGFyc2Vfc2hlYmFuZyhzaGViYW5nX2xpbmUsIG5jaGFycywgJmNvbW1hbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1ZmZpeCk7CisgICAgICAgICAgICAgICAgaWYgKGNvbW1hbmQgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMInBhcnNlX3NoZWJhbmc6IGZvdW5kIGNvbW1hbmQ6ICVzXG4iLCBjb21tYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc192aXJ0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnZva2VfY2hpbGQoY29tbWFuZCwgc3VmZml4LCBjbWRsaW5lKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCA9IHdjc2Nocihjb21tYW5kLCBMJyAnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWZmaXggIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdWZmaXgrKyA9IEwnXDAnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCA9IHNraXBfd2hpdGVzcGFjZShzdWZmaXgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdjc25jbXAoY29tbWFuZCwgTCJweXRob24iLCA2KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihSQ19CQURfVklSVFVBTF9QQVRILCBMIlVua25vd24gdmlydHVhbCBcCitwYXRoICclcyciLCBjb21tYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgKz0gNjsgICAvKiBza2lwIHBhc3QgInB5dGhvbiIgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqY29tbWFuZCAmJiAhdmFsaWRhdGVfdmVyc2lvbihjb21tYW5kKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihSQ19CQURfVklSVFVBTF9QQVRILCBMIkludmFsaWQgdmVyc2lvbiBcCitzcGVjaWZpY2F0aW9uOiAnJXMnLlxuSW4gdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHNjcmlwdCwgJ3B5dGhvbicgbmVlZHMgdG8gYmUgXAorZm9sbG93ZWQgYnkgYSB2YWxpZCB2ZXJzaW9uIHNwZWNpZmllci5cblBsZWFzZSBjaGVjayB0aGUgZG9jdW1lbnRhdGlvbi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9ETyBjb3VsZCBjYWxsIHZhbGlkYXRlX3ZlcnNpb24oY29tbWFuZCkgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbihjb21tYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoUkNfTk9fUFlUSE9OLCBMIlJlcXVlc3RlZCBQeXRob24gdmVyc2lvbiBcCisoJXMpIGlzIG5vdCBpbnN0YWxsZWQiLCBjb21tYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludm9rZV9jaGlsZChpcC0+ZXhlY3V0YWJsZSwgc3VmZml4LCBjbWRsaW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHdjaGFyX3QgKgorc2tpcF9tZSh3Y2hhcl90ICogY21kbGluZSkKK3sKKyAgICBCT09MIHF1b3RlZDsKKyAgICB3Y2hhcl90IGM7CisgICAgd2NoYXJfdCAqIHJlc3VsdCA9IGNtZGxpbmU7CisKKyAgICBxdW90ZWQgPSBjbWRsaW5lWzBdID09IEwnXCInOworICAgIGlmICghcXVvdGVkKQorICAgICAgICBjID0gTCcgJzsKKyAgICBlbHNlIHsKKyAgICAgICAgYyA9IEwnXCInOworICAgICAgICArK3Jlc3VsdDsKKyAgICB9CisgICAgcmVzdWx0ID0gd2NzY2hyKHJlc3VsdCwgYyk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSAvKiB3aGVuLCBmb3IgZXhhbXBsZSwganVzdCBleGUgbmFtZSBvbiBjb21tYW5kIGxpbmUgKi8KKyAgICAgICAgcmVzdWx0ID0gTCIiOworICAgIGVsc2UgeworICAgICAgICArK3Jlc3VsdDsgLyogc2tpcCBwYXN0IHNwYWNlIG9yIGNsb3NpbmcgcXVvdGUgKi8KKyAgICAgICAgcmVzdWx0ID0gc2tpcF93aGl0ZXNwYWNlKHJlc3VsdCk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBEV09SRCB2ZXJzaW9uX2hpZ2ggPSAwOworc3RhdGljIERXT1JEIHZlcnNpb25fbG93ID0gMDsKKworc3RhdGljIHZvaWQKK2dldF92ZXJzaW9uX2luZm8od2NoYXJfdCAqIHZlcnNpb25fdGV4dCwgc2l6ZV90IHNpemUpCit7CisgICAgV09SRCBtYWosIG1pbiwgcmVsLCBibGQ7CisKKyAgICBpZiAoIXZlcnNpb25faGlnaCAmJiAhdmVyc2lvbl9sb3cpCisgICAgICAgIHdjc25jcHlfcyh2ZXJzaW9uX3RleHQsIHNpemUsIEwiMC4xIiwgX1RSVU5DQVRFKTsgICAvKiBmYWxsYmFjayAqLworICAgIGVsc2UgeworICAgICAgICBtYWogPSBISVdPUkQodmVyc2lvbl9oaWdoKTsKKyAgICAgICAgbWluID0gTE9XT1JEKHZlcnNpb25faGlnaCk7CisgICAgICAgIHJlbCA9IEhJV09SRCh2ZXJzaW9uX2xvdyk7CisgICAgICAgIGJsZCA9IExPV09SRCh2ZXJzaW9uX2xvdyk7CisgICAgICAgIF9zbndwcmludGZfcyh2ZXJzaW9uX3RleHQsIHNpemUsIF9UUlVOQ0FURSwgTCIlZC4lZC4lZC4lZCIsIG1haiwKKyAgICAgICAgICAgICAgICAgICAgIG1pbiwgcmVsLCBibGQpOworICAgIH0KK30KKworc3RhdGljIGludAorcHJvY2VzcyhpbnQgYXJnYywgd2NoYXJfdCAqKiBhcmd2KQoreworICAgIHdjaGFyX3QgKiB3cDsKKyAgICB3Y2hhcl90ICogY29tbWFuZDsKKyAgICB3Y2hhcl90ICogcDsKKyAgICBpbnQgcmMgPSAwOworICAgIHNpemVfdCBwbGVuOworICAgIElOU1RBTExFRF9QWVRIT04gKiBpcDsKKyAgICBCT09MIHZhbGlkOworICAgIERXT1JEIHNpemUsIGF0dHJzOworICAgIEhSRVNVTFQgaHI7CisgICAgd2NoYXJfdCBtZXNzYWdlW01TR1NJWkVdOworICAgIHdjaGFyX3QgdmVyc2lvbl90ZXh0IFtNQVhfUEFUSF07CisgICAgdm9pZCAqIHZlcnNpb25fZGF0YTsKKyAgICBWU19GSVhFREZJTEVJTkZPICogZmlsZV9pbmZvOworICAgIFVJTlQgYmxvY2tfc2l6ZTsKKworICAgIHdwID0gZ2V0X2VudihMIlBZTEFVTkNIX0RFQlVHIik7CisgICAgaWYgKCh3cCAhPSBOVUxMKSAmJiAoKndwICE9IEwnXDAnKSkKKyAgICAgICAgbG9nX2ZwID0gc3RkZXJyOworCisjaWYgZGVmaW5lZChfTV9YNjQpCisgICAgZGVidWcoTCJsYXVuY2hlciBidWlsZDogNjRiaXRcbiIpOworI2Vsc2UKKyAgICBkZWJ1ZyhMImxhdW5jaGVyIGJ1aWxkOiAzMmJpdFxuIik7CisjZW5kaWYKKyNpZiBkZWZpbmVkKF9XSU5ET1dTKQorICAgIGRlYnVnKEwibGF1bmNoZXIgZXhlY3V0YWJsZTogV2luZG93c1xuIik7CisjZWxzZQorICAgIGRlYnVnKEwibGF1bmNoZXIgZXhlY3V0YWJsZTogQ29uc29sZVxuIik7CisjZW5kaWYKKyAgICAvKiBHZXQgdGhlIGxvY2FsIGFwcGRhdGEgZm9sZGVyIChub24tcm9hbWluZykgKi8KKyAgICBociA9IFNIR2V0Rm9sZGVyUGF0aFcoTlVMTCwgQ1NJRExfTE9DQUxfQVBQREFUQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgYXBwZGF0YV9pbmlfcGF0aCk7CisgICAgaWYgKGhyICE9IFNfT0spIHsKKyAgICAgICAgZGVidWcoTCJTSEdldEZvbGRlclBhdGggZmFpbGVkOiAlWFxuIiwgaHIpOworICAgICAgICBhcHBkYXRhX2luaV9wYXRoWzBdID0gTCdcMCc7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBwbGVuID0gd2NzbGVuKGFwcGRhdGFfaW5pX3BhdGgpOworICAgICAgICBwID0gJmFwcGRhdGFfaW5pX3BhdGhbcGxlbl07CisgICAgICAgIHdjc25jcHlfcyhwLCBNQVhfUEFUSCAtIHBsZW4sIEwiXFxweS5pbmkiLCBfVFJVTkNBVEUpOworICAgICAgICBhdHRycyA9IEdldEZpbGVBdHRyaWJ1dGVzVyhhcHBkYXRhX2luaV9wYXRoKTsKKyAgICAgICAgaWYgKGF0dHJzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKSB7CisgICAgICAgICAgICBkZWJ1ZyhMIkZpbGUgJyVzJyBub24tZXhpc3RlbnRcbiIsIGFwcGRhdGFfaW5pX3BhdGgpOworICAgICAgICAgICAgYXBwZGF0YV9pbmlfcGF0aFswXSA9IEwnXDAnOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVidWcoTCJVc2luZyBsb2NhbCBjb25maWd1cmF0aW9uIGZpbGUgJyVzJ1xuIiwgYXBwZGF0YV9pbmlfcGF0aCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcGxlbiA9IEdldE1vZHVsZUZpbGVOYW1lVyhOVUxMLCBsYXVuY2hlcl9pbmlfcGF0aCwgTUFYX1BBVEgpOworICAgIHNpemUgPSBHZXRGaWxlVmVyc2lvbkluZm9TaXplVyhsYXVuY2hlcl9pbmlfcGF0aCwgJnNpemUpOworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgd2luZXJyb3IoR2V0TGFzdEVycm9yKCksIG1lc3NhZ2UsIE1TR1NJWkUpOworICAgICAgICBkZWJ1ZyhMIkdldEZpbGVWZXJzaW9uSW5mb1NpemUgZmFpbGVkOiAlc1xuIiwgbWVzc2FnZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB2ZXJzaW9uX2RhdGEgPSBtYWxsb2Moc2l6ZSk7CisgICAgICAgIGlmICh2ZXJzaW9uX2RhdGEpIHsKKyAgICAgICAgICAgIHZhbGlkID0gR2V0RmlsZVZlcnNpb25JbmZvVyhsYXVuY2hlcl9pbmlfcGF0aCwgMCwgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uX2RhdGEpOworICAgICAgICAgICAgaWYgKCF2YWxpZCkKKyAgICAgICAgICAgICAgICBkZWJ1ZyhMIkdldEZpbGVWZXJzaW9uSW5mbyBmYWlsZWQ6ICVYXG4iLCBHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YWxpZCA9IFZlclF1ZXJ5VmFsdWVXKHZlcnNpb25fZGF0YSwgTCJcXCIsICZmaWxlX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYmxvY2tfc2l6ZSk7CisgICAgICAgICAgICAgICAgaWYgKCF2YWxpZCkKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJWZXJRdWVyeVZhbHVlIGZhaWxlZDogJVhcbiIsIEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9oaWdoID0gZmlsZV9pbmZvLT5kd0ZpbGVWZXJzaW9uTVM7CisgICAgICAgICAgICAgICAgICAgIHZlcnNpb25fbG93ID0gZmlsZV9pbmZvLT5kd0ZpbGVWZXJzaW9uTFM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZnJlZSh2ZXJzaW9uX2RhdGEpOworICAgICAgICB9CisgICAgfQorICAgIHAgPSB3Y3NyY2hyKGxhdW5jaGVyX2luaV9wYXRoLCBMJ1xcJyk7CisgICAgaWYgKHAgPT0gTlVMTCkgeworICAgICAgICBkZWJ1ZyhMIkdldE1vZHVsZUZpbGVOYW1lVyByZXR1cm5lZCB2YWx1ZSBoYXMgbm8gYmFja3NsYXNoOiAlc1xuIiwKKyAgICAgICAgICAgICAgbGF1bmNoZXJfaW5pX3BhdGgpOworICAgICAgICBsYXVuY2hlcl9pbmlfcGF0aFswXSA9IEwnXDAnOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgd2NzbmNweV9zKHAsIE1BWF9QQVRIIC0gKHAgLSBsYXVuY2hlcl9pbmlfcGF0aCksIEwiXFxweS5pbmkiLAorICAgICAgICAgICAgICAgICAgX1RSVU5DQVRFKTsKKyAgICAgICAgYXR0cnMgPSBHZXRGaWxlQXR0cmlidXRlc1cobGF1bmNoZXJfaW5pX3BhdGgpOworICAgICAgICBpZiAoYXR0cnMgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpIHsKKyAgICAgICAgICAgIGRlYnVnKEwiRmlsZSAnJXMnIG5vbi1leGlzdGVudFxuIiwgbGF1bmNoZXJfaW5pX3BhdGgpOworICAgICAgICAgICAgbGF1bmNoZXJfaW5pX3BhdGhbMF0gPSBMJ1wwJzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRlYnVnKEwiVXNpbmcgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gZmlsZSAnJXMnXG4iLCBsYXVuY2hlcl9pbmlfcGF0aCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb21tYW5kID0gc2tpcF9tZShHZXRDb21tYW5kTGluZVcoKSk7CisgICAgZGVidWcoTCJDYWxsZWQgd2l0aCBjb21tYW5kIGxpbmU6ICVzIiwgY29tbWFuZCk7CisgICAgaWYgKGFyZ2MgPD0gMSkgeworICAgICAgICB2YWxpZCA9IEZBTFNFOworICAgICAgICBwID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHAgPSBhcmd2WzFdOworICAgICAgICBwbGVuID0gd2NzbGVuKHApOworICAgICAgICBpZiAocFswXSAhPSBMJy0nKSB7CisgICAgICAgICAgICByZWFkX2NvbW1hbmRzKCk7CisgICAgICAgICAgICBtYXliZV9oYW5kbGVfc2hlYmFuZygmYXJndlsxXSwgY29tbWFuZCk7CisgICAgICAgIH0KKyAgICAgICAgLyogTm8gZmlsZSB3aXRoIHNoZWJhbmcsIG9yIGFuIHVucmVjb2duaXNlZCBzaGViYW5nLgorICAgICAgICAgKiBJcyB0aGUgZmlyc3QgYXJnIGEgc3BlY2lhbCB2ZXJzaW9uIHF1YWxpZmllcj8KKyAgICAgICAgICovCisgICAgICAgIHZhbGlkID0gKCpwID09IEwnLScpICYmIHZhbGlkYXRlX3ZlcnNpb24oJnBbMV0pOworICAgICAgICBpZiAodmFsaWQpIHsKKyAgICAgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbigmcFsxXSk7CisgICAgICAgICAgICBpZiAoaXAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBlcnJvcihSQ19OT19QWVRIT04sIEwiUmVxdWVzdGVkIFB5dGhvbiB2ZXJzaW9uICglcykgbm90IFwKK2luc3RhbGxlZCIsICZwWzFdKTsKKyAgICAgICAgICAgIGNvbW1hbmQgKz0gd2NzbGVuKHApOworICAgICAgICAgICAgY29tbWFuZCA9IHNraXBfd2hpdGVzcGFjZShjb21tYW5kKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIXZhbGlkKSB7CisgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbihMIiIpOworICAgICAgICBpZiAoaXAgPT0gTlVMTCkKKyAgICAgICAgICAgIGVycm9yKFJDX05PX1BZVEhPTiwgTCJDYW4ndCBmaW5kIGEgZGVmYXVsdCBQeXRob24uIik7CisgICAgICAgIGlmICgoYXJnYyA9PSAyKSAmJiAoIV93Y3NpY21wKHAsIEwiLWgiKSB8fCAhX3djc2ljbXAocCwgTCItLWhlbHAiKSkpIHsKKyNpZiBkZWZpbmVkKF9NX1g2NCkKKyAgICAgICAgICAgIEJPT0wgY2FuRG82NGJpdCA9IFRSVUU7CisjZWxzZQorICAgIC8vIElmIHdlIGFyZSBhIDMyYml0IHByb2Nlc3Mgb24gYSA2NGJpdCBXaW5kb3dzLCBmaXJzdCBoaXQgdGhlIDY0Yml0IGtleXMuCisgICAgICAgICAgICBCT09MIGNhbkRvNjRiaXQgPSBGQUxTRTsKKyAgICAgICAgICAgIElzV293NjRQcm9jZXNzKEdldEN1cnJlbnRQcm9jZXNzKCksICZjYW5EbzY0Yml0KTsKKyNlbmRpZgorCisgICAgICAgICAgICBnZXRfdmVyc2lvbl9pbmZvKHZlcnNpb25fdGV4dCwgTUFYX1BBVEgpOworICAgICAgICAgICAgZndwcmludGYoc3Rkb3V0LCBMIlwKK1B5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cyBWZXJzaW9uICVzXG5cbiIsIHZlcnNpb25fdGV4dCk7CisgICAgICAgICAgICBmd3ByaW50ZihzdGRvdXQsIEwiXAordXNhZ2U6ICVzIFsgbGF1bmNoZXItYXJndW1lbnRzIF0gc2NyaXB0IFsgc2NyaXB0LWFyZ3VtZW50cyBdXG5cbiIsIGFyZ3ZbMF0pOworICAgICAgICAgICAgZnB1dHdzKEwiXAorTGF1bmNoZXIgYXJndW1lbnRzOlxuXG5cCistMiAgICAgOiBMYXVuY2ggdGhlIGxhdGVzdCBQeXRob24gMi54IHZlcnNpb25cblwKKy0zICAgICA6IExhdW5jaCB0aGUgbGF0ZXN0IFB5dGhvbiAzLnggdmVyc2lvblxuXAorLVguWSAgIDogTGF1bmNoIHRoZSBzcGVjaWZpZWQgUHl0aG9uIHZlcnNpb25cbiIsIHN0ZG91dCk7CisgICAgICAgICAgICBpZiAoY2FuRG82NGJpdCkgeworICAgICAgICAgICAgICAgIGZwdXR3cyhMIlwKKy1YLlktMzI6IExhdW5jaCB0aGUgc3BlY2lmaWVkIDMyYml0IFB5dGhvbiB2ZXJzaW9uIiwgc3Rkb3V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZwdXR3cyhMIlxuXG5UaGUgZm9sbG93aW5nIGhlbHAgdGV4dCBpcyBmcm9tIFB5dGhvbjpcblxuIiwgc3Rkb3V0KTsKKyAgICAgICAgICAgIGZmbHVzaChzdGRvdXQpOworICAgICAgICB9CisgICAgfQorICAgIGludm9rZV9jaGlsZChpcC0+ZXhlY3V0YWJsZSwgTlVMTCwgY29tbWFuZCk7CisgICAgcmV0dXJuIHJjOworfQorCisjaWYgZGVmaW5lZChfV0lORE9XUykKKworaW50IFdJTkFQSSB3V2luTWFpbihISU5TVEFOQ0UgaEluc3RhbmNlLCBISU5TVEFOQ0UgaFByZXZJbnN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICBMUFdTVFIgbHBzdHJDbWQsIGludCBuU2hvdykKK3sKKyAgICByZXR1cm4gcHJvY2VzcyhfX2FyZ2MsIF9fd2FyZ3YpOworfQorCisjZWxzZQorCitpbnQgY2RlY2wgd21haW4oaW50IGFyZ2MsIHdjaGFyX3QgKiogYXJndikKK3sKKyAgICByZXR1cm4gcHJvY2VzcyhhcmdjLCBhcmd2KTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9QQy9sYXVuY2hlci5pY28gYi9QQy9sYXVuY2hlci5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFkN2Q1NwotLS0gL2Rldi9udWxsCisrKyBiL1BDL2xhdW5jaGVyLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9tc3ZjcnRtb2R1bGUuYyBiL1BDL21zdmNydG1vZHVsZS5jCmluZGV4IDE2NmRmMDMuLjA0ZDIwODggMTAwNzU1Ci0tLSBhL1BDL21zdmNydG1vZHVsZS5jCisrKyBiL1BDL21zdmNydG1vZHVsZS5jCkBAIC0yNyw2ICsyNyw4IEBACiAjaWZkZWYgX01TQ19WRVIKICNpZiBfTVNDX1ZFUiA+PSAxNTAwICYmIF9NU0NfVkVSIDwgMTYwMAogI2luY2x1ZGUgPGNydGFzc2VtLmg+CisjZWxpZiBfTVNDX1ZFUiA+PSAxNjAwCisjaW5jbHVkZSA8Y3J0dmVyc2lvbi5oPgogI2VuZGlmCiAjZW5kaWYKIApAQCAtMjExLDggKzIxMyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbXN2Y3J0X2dldHdjaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfVU5JQ09ERSBjaDsKLSAgICBQeV9VTklDT0RFIHVbMV07CisgICAgd2NoYXJfdCBjaDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmdldHdjaCIpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIyMCw4ICsyMjEsNyBAQAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBjaCA9IF9nZXR3Y2goKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIHVbMF0gPSBjaDsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHUsIDEpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9yZGluYWwoY2gpOwogfQogCiBQeURvY19TVFJWQVIoZ2V0d2NoX2RvYywKQEAgLTI1Niw4ICsyNTYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG1zdmNydF9nZXR3Y2hlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9VTklDT0RFIGNoOwotICAgIFB5X1VOSUNPREUgc1sxXTsKKyAgICB3Y2hhcl90IGNoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6Z2V0d2NoZSIpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI2NSw4ICsyNjQsNyBAQAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBjaCA9IF9nZXR3Y2hlKCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBzWzBdID0gY2g7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCAxKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGNoKTsKIH0KIAogUHlEb2NfU1RSVkFSKGdldHdjaGVfZG9jLApAQCAtNDY4LDcgKzQ2Niw3IEBACiBQeUluaXRfbXN2Y3J0KHZvaWQpCiB7CiAgICAgaW50IHN0OwotICAgIFB5T2JqZWN0ICpkOworICAgIFB5T2JqZWN0ICpkLCAqdmVyc2lvbjsKICAgICBQeU9iamVjdCAqbSA9IFB5TW9kdWxlX0NyZWF0ZSgmbXN2Y3J0bW9kdWxlKTsKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ5OCw2ICs0OTYsNyBAQAogI2VuZGlmCiAKICAgICAvKiBjb25zdGFudHMgZm9yIHRoZSBjcnQgdmVyc2lvbnMgKi8KKyAgICAodm9pZClzdDsKICNpZmRlZiBfVkNfQVNTRU1CTFlfUFVCTElDS0VZVE9LRU4KICAgICBzdCA9IFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJWQ19BU1NFTUJMWV9QVUJMSUNLRVlUT0tFTiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVkNfQVNTRU1CTFlfUFVCTElDS0VZVE9LRU4pOwpAQCAtNTE0LDUgKzUxMywxNSBAQAogICAgIGlmIChzdCA8IDApIHJldHVybiBOVUxMOwogI2VuZGlmCiAKKyAgICAvKiBjb25zdGFudHMgZm9yIHRoZSAyMDEwIGNydCB2ZXJzaW9ucyAqLworI2lmIGRlZmluZWQoX1ZDX0NSVF9NQUpPUl9WRVJTSU9OKSAmJiBkZWZpbmVkIChfVkNfQ1JUX01JTk9SX1ZFUlNJT04pICYmIGRlZmluZWQoX1ZDX0NSVF9CVUlMRF9WRVJTSU9OKSAmJiBkZWZpbmVkKF9WQ19DUlRfUkJVSUxEX1ZFUlNJT04pCisgICAgdmVyc2lvbiA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlZC4lZC4lZC4lZCIsIF9WQ19DUlRfTUFKT1JfVkVSU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ZDX0NSVF9NSU5PUl9WRVJTSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVkNfQ1JUX0JVSUxEX1ZFUlNJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9WQ19DUlRfUkJVSUxEX1ZFUlNJT04pOworICAgIHN0ID0gUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJDUlRfQVNTRU1CTFlfVkVSU0lPTiIsIHZlcnNpb24pOworICAgIGlmIChzdCA8IDApIHJldHVybiBOVUxMOworI2VuZGlmCisKICAgICByZXR1cm4gbTsKIH0KZGlmZiAtLWdpdCBhL1BDL29zMmVteC9NYWtlZmlsZSBiL1BDL29zMmVteC9NYWtlZmlsZQppbmRleCBkOWNkZWQ3Li44MDA2MTBlIDEwMDY0NAotLS0gYS9QQy9vczJlbXgvTWFrZWZpbGUKKysrIGIvUEMvb3MyZW14L01ha2VmaWxlCkBAIC0yMzcsNyArMjM3LDcgQEAKIAogIyBPdXRwdXQgZmlsZSBuYW1lcwogUFlUSE9OX1ZFUj0JMi42Ci1QWVRIT05fTElCPQlweXRob24yNgorUFlUSE9OX0xJQj0JcHl0aG9uMzMKIFBZVEhPTi5MSUI9CSQoUFlUSE9OX0xJQilfcyRBCiBQWVRIT04uSU1QTElCPQkkKFBZVEhPTl9MSUIpJEEKIGlmZXEgKCQoRVhFT01GKSx5ZXMpCmRpZmYgLS1naXQgYS9QQy9vczJlbXgvUkVBRE1FLm9zMmVteCBiL1BDL29zMmVteC9SRUFETUUub3MyZW14CmluZGV4IGZjZjU1ZDIuLjYxY2Y2ZGYgMTAwNjQ0Ci0tLSBhL1BDL29zMmVteC9SRUFETUUub3MyZW14CisrKyBiL1BDL29zMmVteC9SRUFETUUub3MyZW14CkBAIC0zMDUsNyArMzA1LDcgQEAKICAgIHRvIGJlIGluc3RhbGxlZCBpbiBhIGRpcmVjdG9yeSBvdGhlciB0aGFuIHRoZSBQWVRIT05IT01FIGRpcmVjdG9yeSwgc2V0IAogICAgdGhlIHZhbHVlIG9mIHRoZSBNYWtlZmlsZSB2YXJpYWJsZSBFWEVfRElSIHRvIHRoZSBhcHByb3ByaWF0ZSBkaXJlY3RvcnkuCiAKLTMuIElmIHlvdSB3aXNoIHRoZSBQeXRob24gY29yZSBETEwgKHB5dGhvbjI2LmRsbCkgdG8gYmUgaW5zdGFsbGVkIGluIGEgCiszLiBJZiB5b3Ugd2lzaCB0aGUgUHl0aG9uIGNvcmUgRExMIChweXRob24zMy5kbGwpIHRvIGJlIGluc3RhbGxlZCBpbiBhIAogICAgZGlyZWN0b3J5IG90aGVyIHRoYW4gdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgUHl0aG9uIGV4ZWN1dGFibGVzIGFyZSAKICAgIGluc3RhbGxlZCAoYnkgZGVmYXVsdCwgdGhlIFBZVEhPTkhPTUUgZGlyZWN0b3J5KSwgc2V0IHRoZSB2YWx1ZSBvZiB0aGUgCiAgICBNYWtlZmlsZSB2YXJpYWJsZSBETExfRElSIHRvIHRoZSBhcHByb3ByaWF0ZSBkaXJlY3RvcnkuICBUaGlzIERMTCBtdXN0IApkaWZmIC0tZ2l0IGEvUEMvb3MyZW14L2NvbmZpZy5jIGIvUEMvb3MyZW14L2NvbmZpZy5jCmluZGV4IDIxOGFhNjguLjU4NzkxMTAgMTAwNjQ0Ci0tLSBhL1BDL29zMmVteC9jb25maWcuYworKysgYi9QQy9vczJlbXgvY29uZmlnLmMKQEAgLTE1MCwxMCArMTUwLDkgQEAKICAgICB7Im1hcnNoYWwiLCBQeU1hcnNoYWxfSW5pdH0sCiAKICAgICAvKiBUaGlzIGxpdmVzIGl0IHdpdGggaW1wb3J0LmMgKi8KLSAgICB7ImltcCIsIGluaXRpbXB9LAorICAgIHsiX2ltcCIsIGluaXRpbXB9LAogCiAgICAgLyogVGhlc2UgZW50cmllcyBhcmUgaGVyZSBmb3Igc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzICovCi0gICAgeyJfX21haW5fXyIsIE5VTEx9LAogICAgIHsiYnVpbHRpbnMiLCBOVUxMfSwKICAgICB7InN5cyIsIE5VTEx9LAogCmRpZmYgLS1naXQgYS9QQy9vczJlbXgvcHljb25maWcuaCBiL1BDL29zMmVteC9weWNvbmZpZy5oCmluZGV4IDM4MGUxOWMuLmU1NjEwNWEgMTAwNjQ0Ci0tLSBhL1BDL29zMmVteC9weWNvbmZpZy5oCisrKyBiL1BDL29zMmVteC9weWNvbmZpZy5oCkBAIC0xLDYgKzEsOCBAQAogI2lmbmRlZiBQeV9DT05GSUdfSAogI2RlZmluZSBQeV9DT05GSUdfSAogCisjZXJyb3IgIlBFUCAxMTogT1MvMiBpcyBub3cgdW5zdXBwb3J0ZWQsIGNvZGUgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjQiCisKIC8qIGNvbmZpZy5oLgogICogQXQgc29tZSB0aW1lIGluIHRoZSBwYXN0LCBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieS9mcm9tIGNvbmZpZ3VyZS4KICAqIG5vdyBtYWludGFpbmVkIG1hbnVhbGx5LgpkaWZmIC0tZ2l0IGEvUEMvb3MyZW14L3B5dGhvbjI3LmRlZiBiL1BDL29zMmVteC9weXRob24zMy5kZWYKc2ltaWxhcml0eSBpbmRleCA4NSUKcmVuYW1lIGZyb20gUEMvb3MyZW14L3B5dGhvbjI3LmRlZgpyZW5hbWUgdG8gUEMvb3MyZW14L3B5dGhvbjMzLmRlZgppbmRleCBkODdkZDc2Li4yNTY3MjZiIDEwMDY0NAotLS0gYS9QQy9vczJlbXgvcHl0aG9uMjcuZGVmCisrKyBiL1BDL29zMmVteC9weXRob24zMy5kZWYKQEAgLTEsNzIgKzEsNzIgQEAKLUxJQlJBUlkgcHl0aG9uMjYgSU5JVElOU1RBTkNFIFRFUk1JTlNUQU5DRSAKK0xJQlJBUlkgcHl0aG9uMzMgSU5JVElOU1RBTkNFIFRFUk1JTlNUQU5DRSAKIERFU0NSSVBUSU9OICJQeXRob24gMi42IENvcmUgRExMIiAKIFBST1RNT0RFIAogREFUQSBNVUxUSVBMRSBOT05TSEFSRUQgCiBFWFBPUlRTIAogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY29uZmlnKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGNvbmZpZykKICAgIl9QeUltcG9ydF9Jbml0dGFiIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZGxmY24pCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZGxmY24pCiA7ICAiZGxvcGVuIgogOyAgImRsc3ltIgogOyAgImRsY2xvc2UiCiA7ICAiZGxlcnJvciIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGdldHBhdGhwKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGdldHBhdGhwKQogICAiUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoIgogICAiUHlfR2V0UHJlZml4IgogICAiUHlfR2V0RXhlY1ByZWZpeCIKICAgIlB5X0dldFBhdGgiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihnZXRidWlsZGluZm8pCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZ2V0YnVpbGRpbmZvKQogICAiUHlfR2V0QnVpbGRJbmZvIgogICAiX1B5X3N2bnZlcnNpb24iCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihtYWluKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG1haW4pCiAgICJQeV9NYWluIgogICAiUHlfR2V0QXJnY0FyZ3YiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihhY2NlbGVyKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGFjY2VsZXIpCiAgICJQeUdyYW1tYXJfQWRkQWNjZWxlcmF0b3JzIgogICAiUHlHcmFtbWFyX1JlbW92ZUFjY2VsZXJhdG9ycyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGdyYW1tYXIxKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGdyYW1tYXIxKQogICAiUHlHcmFtbWFyX0ZpbmRERkEiCiAgICJQeUdyYW1tYXJfTGFiZWxSZXByIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobGlzdG5vZGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIobGlzdG5vZGUpCiAgICJQeU5vZGVfTGlzdFRyZWUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihub2RlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG5vZGUpCiAgICJQeU5vZGVfTmV3IgogICAiUHlOb2RlX0FkZENoaWxkIgogICAiUHlOb2RlX0ZyZWUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihwYXJzZXIpCis7IEZyb20gcHl0aG9uMzNfcy5saWIocGFyc2VyKQogICAiUHlQYXJzZXJfQWRkVG9rZW4iCiAgICJQeVBhcnNlcl9OZXciCiAgICJQeVBhcnNlcl9EZWxldGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihwYXJzZXRvaykKKzsgRnJvbSBweXRob24zM19zLmxpYihwYXJzZXRvaykKICAgIlB5UGFyc2VyX1BhcnNlU3RyaW5nIgogICAiUHlQYXJzZXJfUGFyc2VTdHJpbmdGbGFnc0ZpbGVuYW1lIgogICAiUHlQYXJzZXJfUGFyc2VGaWxlIgogICAiUHlQYXJzZXJfUGFyc2VGaWxlRmxhZ3MiCiAgICJQeVBhcnNlcl9QYXJzZVN0cmluZ0ZsYWdzIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoYml0c2V0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGJpdHNldCkKICAgIl9QeV9uZXdiaXRzZXQiCiAgICJfUHlfZGVsYml0c2V0IgogICAiX1B5X2FkZGJpdCIKICAgIl9QeV9zYW1lYml0c2V0IgogICAiX1B5X21lcmdlYml0c2V0IgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobWV0YWdyYW1tYXIpCis7IEZyb20gcHl0aG9uMzNfcy5saWIobWV0YWdyYW1tYXIpCiAgICJfUHlfbWV0YV9ncmFtbWFyIgogICAiUHlfbWV0YV9ncmFtbWFyIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIodG9rZW5pemVyKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHRva2VuaXplcikKICAgIlB5VG9rZW5fT25lQ2hhciIKICAgIlB5VG9rZW5fVHdvQ2hhcnMiCiAgICJQeVRva2VuX1RocmVlQ2hhcnMiCkBAIC03NiwxNCArNzYsMTQgQEAKICAgIlB5VG9rZW5pemVyX0dldCIKICAgIl9QeVBhcnNlcl9Ub2tlbk5hbWVzIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobXlyZWFkbGluZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihteXJlYWRsaW5lKQogICAiX1B5T1NfUmVhZGxpbmVUU3RhdGUiCiAgICJQeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyIgogICAiUHlPU19TdGRpb1JlYWRsaW5lIgogICAiUHlPU19SZWFkbGluZSIKICAgIlB5T1NfSW5wdXRIb29rIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoYWJzdHJhY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoYWJzdHJhY3QpCiAgICJfUHlPYmplY3RfTGVuZ3RoSGludCIKICAgIlB5TWFwcGluZ19TaXplIgogICAiUHlPYmplY3RfQ2FsbE1ldGhvZCIKQEAgLTE3NCwxMyArMTc0LDEzIEBACiAgICJQeU9iamVjdF9Jc0luc3RhbmNlIgogICAiUHlPYmplY3RfSXNTdWJjbGFzcyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGJvb2xvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoYm9vbG9iamVjdCkKICAgIlB5Qm9vbF9Gcm9tTG9uZyIKICAgIlB5Qm9vbF9UeXBlIgogICAiX1B5X1plcm9TdHJ1Y3QiCiAgICJfUHlfVHJ1ZVN0cnVjdCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGJ1ZmZlcm9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihidWZmZXJvYmplY3QpCiAgICJQeUJ1ZmZlcl9Gcm9tT2JqZWN0IgogICAiUHlCdWZmZXJfRnJvbVJlYWRXcml0ZU9iamVjdCIKICAgIlB5QnVmZmVyX0Zyb21NZW1vcnkiCkBAIC0xODgsMTMgKzE4OCwxMyBAQAogICAiUHlCdWZmZXJfTmV3IgogICAiUHlCdWZmZXJfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGNlbGxvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoY2VsbG9iamVjdCkKICAgIlB5Q2VsbF9OZXciCiAgICJQeUNlbGxfR2V0IgogICAiUHlDZWxsX1NldCIKICAgIlB5Q2VsbF9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY2xhc3NvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoY2xhc3NvYmplY3QpCiAgICJQeUNsYXNzX05ldyIKICAgIlB5Q2xhc3NfSXNTdWJjbGFzcyIKICAgIlB5SW5zdGFuY2VfTmV3IgpAQCAtMjA5LDcgKzIwOSw3IEBACiAgICJQeUluc3RhbmNlX1R5cGUiCiAgICJQeU1ldGhvZF9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY2Fwc3VsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihjYXBzdWxlKQogICAiUHlDYXBzdWxlX0dldENvbnRleHQiCiAgICJQeUNhcHN1bGVfR2V0RGVzdHJ1Y3RvciIKICAgIlB5Q2Fwc3VsZV9HZXROYW1lIgpAQCAtMjIyLDcgKzIyMiw3IEBACiAgICJQeUNhcHN1bGVfU2V0TmFtZSIKICAgIlB5Q2Fwc3VsZV9TZXRQb2ludGVyIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY29iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihjb2JqZWN0KQogICAiUHlDT2JqZWN0X0Zyb21Wb2lkUHRyIgogICAiUHlDT2JqZWN0X0Zyb21Wb2lkUHRyQW5kRGVzYyIKICAgIlB5Q09iamVjdF9Bc1ZvaWRQdHIiCkBAIC0yMzEsMTMgKzIzMSwxMyBAQAogICAiUHlDT2JqZWN0X1NldFZvaWRQdHIiCiAgICJQeUNPYmplY3RfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGNvZGVvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoY29kZW9iamVjdCkKICAgIlB5Q29kZV9OZXciCiAgICJQeUNvZGVfQWRkcjJMaW5lIgogICAiUHlDb2RlX0NoZWNrTGluZU51bWJlciIKICAgIlB5Q29kZV9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY29tcGxleG9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihjb21wbGV4b2JqZWN0KQogICAiX1B5X2NfcG93IgogICAiX1B5X2Nfc3VtIgogICAiX1B5X2NfZGlmZiIKQEAgLTI1MSw3ICsyNTEsNyBAQAogICAiUHlDb21wbGV4X0FzQ0NvbXBsZXgiCiAgICJQeUNvbXBsZXhfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGRlc2Nyb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGRlc2Nyb2JqZWN0KQogICAiUHlXcmFwcGVyX05ldyIKICAgIlB5RGVzY3JfTmV3TWV0aG9kIgogICAiUHlEZXNjcl9OZXdDbGFzc01ldGhvZCIKQEAgLTI2Miw3ICsyNjIsNyBAQAogICAiUHlXcmFwcGVyRGVzY3JfVHlwZSIKICAgIlB5UHJvcGVydHlfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGRpY3RvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZGljdG9iamVjdCkKICAgIlB5RGljdF9OZXciCiAgICJQeURpY3RfR2V0SXRlbSIKICAgIlB5RGljdF9TZXRJdGVtIgpAQCAtMjg2LDExICsyODYsMTEgQEAKICAgIlB5RGljdEl0ZXJWYWx1ZV9UeXBlIgogICAiUHlEaWN0SXRlckl0ZW1fVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGVudW1vYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZW51bW9iamVjdCkKICAgIlB5RW51bV9UeXBlIgogICAiUHlSZXZlcnNlZF9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZmlsZW9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihmaWxlb2JqZWN0KQogICAiUHlGaWxlX0Zyb21TdHJpbmciCiAgICJQeV9Vbml2ZXJzYWxOZXdsaW5lRnJlYWQiCiAgICJQeUZpbGVfR2V0TGluZSIKQEAgLTMwNiw3ICszMDYsNyBAQAogICAiUHlGaWxlX05hbWUiCiAgICJQeUZpbGVfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGZsb2F0b2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGZsb2F0b2JqZWN0KQogICAiUHlGbG9hdF9Gcm9tU3RyaW5nIgogICAiUHlGbG9hdF9Bc0RvdWJsZSIKICAgIlB5RmxvYXRfRmluaSIKQEAgLTMyMSw3ICszMjEsNyBAQAogICAiUHlGbG9hdF9Bc1N0cmluZ0V4IgogICAiUHlGbG9hdF9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZnJhbWVvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZnJhbWVvYmplY3QpCiAgICJQeUZyYW1lX05ldyIKICAgIlB5RnJhbWVfRmFzdFRvTG9jYWxzIgogICAiUHlGcmFtZV9Mb2NhbHNUb0Zhc3QiCkBAIC0zMzEsNyArMzMxLDcgQEAKICAgIlB5RnJhbWVfQmxvY2tQb3AiCiAgICJQeUZyYW1lX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihmdW5jb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGZ1bmNvYmplY3QpCiAgICJQeUZ1bmN0aW9uX05ldyIKICAgIlB5RnVuY3Rpb25fR2V0Q29kZSIKICAgIlB5RnVuY3Rpb25fR2V0R2xvYmFscyIKQEAgLTM0NiwxMiArMzQ2LDEyIEBACiAgICJQeUNsYXNzTWV0aG9kX1R5cGUiCiAgICJQeVN0YXRpY01ldGhvZF9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZ2Vub2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGdlbm9iamVjdCkKICAgIlB5R2VuX05ldyIKICAgIlB5R2VuX05lZWRzRmluYWxpemluZyIKICAgIlB5R2VuX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihpbnRvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoaW50b2JqZWN0KQogICAiUHlJbnRfQXNMb25nIgogICAiUHlJbnRfQXNVbnNpZ25lZExvbmdNYXNrIgogICAiUHlJbnRfQXNVbnNpZ25lZExvbmdMb25nTWFzayIKQEAgLTM2NiwxMyArMzY2LDEzIEBACiAgICJfUHlJbnRfSW5pdCIKICAgIlB5SW50X1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihpdGVyb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGl0ZXJvYmplY3QpCiAgICJQeVNlcUl0ZXJfTmV3IgogICAiUHlDYWxsSXRlcl9OZXciCiAgICJQeVNlcUl0ZXJfVHlwZSIKICAgIlB5Q2FsbEl0ZXJfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGxpc3RvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIobGlzdG9iamVjdCkKICAgIlB5TGlzdF9OZXciCiAgICJQeUxpc3RfQXBwZW5kIgogICAiUHlMaXN0X1NpemUiCkBAIC0zOTAsNyArMzkwLDcgQEAKICAgIlB5TGlzdEl0ZXJfVHlwZSIKICAgIlB5TGlzdFJldkl0ZXJfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGxvbmdvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIobG9uZ29iamVjdCkKICAgIlB5TG9uZ19Gcm9tRG91YmxlIgogICAiUHlMb25nX0FzTG9uZyIKICAgIl9QeUxvbmdfQXNTc2l6ZV90IgpAQCAtNDIwLDcgKzQyMCw3IEBACiAgICJQeUxvbmdfVHlwZSIKICAgIl9QeUxvbmdfRGlnaXRWYWx1ZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKG1ldGhvZG9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihtZXRob2RvYmplY3QpCiAgICJQeUNGdW5jdGlvbl9DYWxsIgogICAiUHlfRmluZE1ldGhvZEluQ2hhaW4iCiAgICJQeUNGdW5jdGlvbl9HZXRGdW5jdGlvbiIKQEAgLTQzMiw3ICs0MzIsNyBAQAogICAiUHlDRnVuY3Rpb25fTmV3IgogICAiUHlDRnVuY3Rpb25fVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKG1vZHVsZW9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihtb2R1bGVvYmplY3QpCiAgICJQeU1vZHVsZV9OZXciCiAgICJfUHlNb2R1bGVfQ2xlYXIiCiAgICJQeU1vZHVsZV9HZXREaWN0IgpAQCAtNDQwLDcgKzQ0MCw3IEBACiAgICJQeU1vZHVsZV9HZXRGaWxlbmFtZSIKICAgIlB5TW9kdWxlX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIob2JqZWN0KQogICAiUHlfRGl2aXNpb25XYXJuaW5nRmxhZyIKICAgIlB5T2JqZWN0X1N0ciIKICAgIlB5T2JqZWN0X1JlcHIiCkBAIC00OTMsMTUgKzQ5MywxNSBAQAogICAiX1B5VHJhc2hfZGVsZXRlX25lc3RpbmciCiAgICJfUHlUcmFzaF9kZWxldGVfbGF0ZXIiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihvYm1hbGxvYykKKzsgRnJvbSBweXRob24zM19zLmxpYihvYm1hbGxvYykKICAgIlB5T2JqZWN0X01hbGxvYyIKICAgIlB5T2JqZWN0X0ZyZWUiCiAgICJQeU9iamVjdF9SZWFsbG9jIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIocmFuZ2VvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIocmFuZ2VvYmplY3QpCiAgICJQeVJhbmdlX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihzZXRvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoc2V0b2JqZWN0KQogICAiUHlTZXRfUG9wIgogICAiUHlTZXRfTmV3IgogICAiUHlGcm96ZW5TZXRfTmV3IgpAQCAtNTE2LDcgKzUxNiw3IEBACiAgICJQeVNldF9UeXBlIgogICAiUHlGcm96ZW5TZXRfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHNsaWNlb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHNsaWNlb2JqZWN0KQogICAiX1B5U2xpY2VfRnJvbUluZGljZXMiCiAgICJQeVNsaWNlX0dldEluZGljZXMiCiAgICJQeVNsaWNlX0dldEluZGljZXNFeCIKQEAgLTUyNCw3ICs1MjQsNyBAQAogICAiX1B5X0VsbGlwc2lzT2JqZWN0IgogICAiUHlTbGljZV9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoc3RyaW5nb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHN0cmluZ29iamVjdCkKICAgIlB5U3RyaW5nX0Zyb21TdHJpbmdBbmRTaXplIgogICAiUHlTdHJpbmdfSW50ZXJuSW5QbGFjZSIKICAgIlB5U3RyaW5nX0Zyb21TdHJpbmciCkBAIC01NTUsMTIgKzU1NSwxMiBAQAogICAiUHlTdHJpbmdfVHlwZSIKICAgIlB5QmFzZVN0cmluZ19UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoc3RydWN0c2VxKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHN0cnVjdHNlcSkKICAgIlB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUiCiAgICJQeVN0cnVjdFNlcXVlbmNlX05ldyIKICAgIlB5U3RydWN0U2VxdWVuY2VfVW5uYW1lZEZpZWxkIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIodHVwbGVvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIodHVwbGVvYmplY3QpCiAgICJQeVR1cGxlX05ldyIKICAgIlB5VHVwbGVfUGFjayIKICAgIl9QeVR1cGxlX1Jlc2l6ZSIKQEAgLTU3Miw3ICs1NzIsNyBAQAogICAiUHlUdXBsZV9UeXBlIgogICAiUHlUdXBsZUl0ZXJfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHR5cGVvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIodHlwZW9iamVjdCkKICAgIlB5VHlwZV9Jc1N1YnR5cGUiCiAgICJfUHlUeXBlX0xvb2t1cCIKICAgIlB5VHlwZV9SZWFkeSIKQEAgLTU4Myw3ICs1ODMsNyBAQAogICAiUHlCYXNlT2JqZWN0X1R5cGUiCiAgICJQeVN1cGVyX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYih1bmljb2Rlb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHVuaWNvZGVvYmplY3QpCiAgICJQeVVuaWNvZGVVQ1MyX1Jlc2l6ZSIKICAgIlB5VW5pY29kZVVDUzJfRnJvbU9yZGluYWwiCiAgICJQeVVuaWNvZGVVQ1MyX0Zyb21PYmplY3QiCkBAIC02NDksNyArNjQ5LDcgQEAKICAgIlB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QiCiAgICJQeVVuaWNvZGVfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHVuaWNvZGVjdHlwZSkKKzsgRnJvbSBweXRob24zM19zLmxpYih1bmljb2RlY3R5cGUpCiAgICJfUHlVbmljb2RlX1R5cGVSZWNvcmRzIgogICAiX1B5VW5pY29kZVVDUzJfVG9OdW1lcmljIgogICAiX1B5VW5pY29kZVVDUzJfSXNMb3dlcmNhc2UiCkBAIC02NjcsNyArNjY3LDcgQEAKICAgIl9QeVVuaWNvZGVVQ1MyX0lzTnVtZXJpYyIKICAgIl9QeVVuaWNvZGVVQ1MyX0lzQWxwaGEiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYih3ZWFrcmVmb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHdlYWtyZWZvYmplY3QpCiAgICJQeVdlYWtyZWZfTmV3UmVmIgogICAiUHlXZWFrcmVmX05ld1Byb3h5IgogICAiUHlPYmplY3RfQ2xlYXJXZWFrUmVmcyIKQEAgLTY3OCw3ICs2NzgsNyBAQAogICAiX1B5V2Vha3JlZl9Qcm94eVR5cGUiCiAgICJfUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoUHl0aG9uLWFzdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihQeXRob24tYXN0KQogOyAgImluaXRfYXN0IgogICAiTW9kdWxlIgogICAiSW50ZXJhY3RpdmUiCkBAIC03MzcsMTggKzczNywxOCBAQAogICAiYWxpYXMiCiAgICJQeUFTVF9tb2Qyb2JqIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoYXNkbCkKKzsgRnJvbSBweXRob24zM19zLmxpYihhc2RsKQogICAiYXNkbF9zZXFfbmV3IgogICAiYXNkbF9pbnRfc2VxX25ldyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGFzdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihhc3QpCiAgICJQeUFTVF9Gcm9tTm9kZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGJsdGlubW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGJsdGlubW9kdWxlKQogICAiX1B5QnVpbHRpbl9Jbml0IgogICAiUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGV4Y2VwdGlvbnMpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZXhjZXB0aW9ucykKICAgIlB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0IgogICAiUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQiCiAgICJQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQiCkBAIC04MjQsNyArODI0LDcgQEAKICAgIlB5RXhjX0ltcG9ydFdhcm5pbmciCiAgICJQeUV4Y19NZW1vcnlFcnJvckluc3QiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihjZXZhbCkKKzsgRnJvbSBweXRob24zM19zLmxpYihjZXZhbCkKICAgIlB5RXZhbF9FdmFsRnJhbWVFeCIKICAgIlB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzIgogICAiUHlFdmFsX0V2YWxDb2RlRXgiCkBAIC04NjMsMTMgKzg2MywxMyBAQAogICAiX1B5X0NoZWNrSW50ZXJ2YWwiCiAgICJfUHlfVGlja2VyIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY29tcGlsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihjb21waWxlKQogICAiX1B5X01hbmdsZSIKICAgIlB5QVNUX0NvbXBpbGUiCiAgICJQeU5vZGVfQ29tcGlsZSIKICAgIlB5X09wdGltaXplRmxhZyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGNvZGVjcykKKzsgRnJvbSBweXRob24zM19zLmxpYihjb2RlY3MpCiAgICJfUHlDb2RlY19Mb29rdXAiCiAgICJQeUNvZGVjX0VuY29kZSIKICAgIlB5Q29kZWNfRGVjb2RlIgpAQCAtODg4LDcgKzg4OCw3IEBACiAgICJQeUNvZGVjX0xvb2t1cEVycm9yIgogICAiUHlDb2RlY19TdHJpY3RFcnJvcnMiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihlcnJvcnMpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZXJyb3JzKQogICAiUHlFcnJfU2V0Tm9uZSIKICAgIlB5RXJyX1NldFN0cmluZyIKICAgIlB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyIKQEAgLTkxNCwxNiArOTE0LDE2IEBACiAgICJQeUVycl9XYXJuIgogICAiUHlFcnJfV2FybkV4cGxpY2l0IgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZnJvemVuKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGZyb3plbikKICAgIlB5SW1wb3J0X0Zyb3plbk1vZHVsZXMiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihmcm96ZW5tYWluKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGZyb3plbm1haW4pCiAgICJQeV9Gcm96ZW5NYWluIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZnV0dXJlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGZ1dHVyZSkKICAgIlB5RnV0dXJlX0Zyb21BU1QiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihnZXRhcmdzKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGdldGFyZ3MpCiAgICJQeUFyZ19QYXJzZSIKICAgIl9QeUFyZ19QYXJzZV9TaXplVCIKICAgIlB5QXJnX1BhcnNlVHVwbGUiCkBAIC05MzcsMjIgKzkzNywyMiBAQAogICAiX1B5QXJnX1ZhUGFyc2VfU2l6ZVQiCiAgICJfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihnZXRjb21waWxlcikKKzsgRnJvbSBweXRob24zM19zLmxpYihnZXRjb21waWxlcikKICAgIlB5X0dldENvbXBpbGVyIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZ2V0Y29weXJpZ2h0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGdldGNvcHlyaWdodCkKICAgIlB5X0dldENvcHlyaWdodCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGdldHBsYXRmb3JtKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGdldHBsYXRmb3JtKQogICAiUHlfR2V0UGxhdGZvcm0iCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihnZXR2ZXJzaW9uKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGdldHZlcnNpb24pCiAgICJQeV9HZXRWZXJzaW9uIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZ3JhbWluaXQpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZ3JhbWluaXQpCiAgICJfUHlQYXJzZXJfR3JhbW1hciIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGltcG9ydCkKKzsgRnJvbSBweXRob24zM19zLmxpYihpbXBvcnQpCiAgICJfUHlJbXBvcnRfSW5pdCIKICAgIl9QeUltcG9ydEhvb2tzX0luaXQiCiAgICJQeUltcG9ydF9JbXBvcnRNb2R1bGUiCkBAIC05NzksMTAgKzk3OSwxMCBAQAogICAiUHlJbXBvcnRfSW5pdHRhYiIKICAgIl9QeUltcG9ydF9GaWxldGFiIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoaW1wb3J0ZGwpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoaW1wb3J0ZGwpCiAgICJfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihtYXJzaGFsKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG1hcnNoYWwpCiAgICJQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZSIKICAgIlB5TWFyc2hhbF9Xcml0ZU9iamVjdFRvU3RyaW5nIgogICAiUHlNYXJzaGFsX1dyaXRlTG9uZ1RvRmlsZSIKQEAgLTk5Myw3ICs5OTMsNyBAQAogICAiUHlNYXJzaGFsX1JlYWRPYmplY3RGcm9tU3RyaW5nIgogICAiUHlNYXJzaGFsX0luaXQiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihtb2RzdXBwb3J0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG1vZHN1cHBvcnQpCiAgICJQeV9Jbml0TW9kdWxlNCIKICAgIlB5X0J1aWxkVmFsdWUiCiAgICJfUHlfQnVpbGRWYWx1ZV9TaXplVCIKQEAgLTEwMDYsMjQgKzEwMDYsMjQgQEAKICAgIlB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50IgogICAiX1B5X1BhY2thZ2VDb250ZXh0IgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobXlzbnByaW50ZikKKzsgRnJvbSBweXRob24zM19zLmxpYihteXNucHJpbnRmKQogICAiUHlPU19zbnByaW50ZiIKICAgIlB5T1NfdnNucHJpbnRmIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobXlzdHJ0b3VsKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG15c3RydG91bCkKICAgIlB5T1Nfc3RydG91bCIKICAgIlB5T1Nfc3RydG9sIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIocHlhcmVuYSkKKzsgRnJvbSBweXRob24zM19zLmxpYihweWFyZW5hKQogICAiUHlBcmVuYV9OZXciCiAgICJQeUFyZW5hX0ZyZWUiCiAgICJQeUFyZW5hX01hbGxvYyIKICAgIlB5QXJlbmFfQWRkUHlPYmplY3QiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihweWZwZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihweWZwZSkKICAgIlB5RlBFX2R1bW15IgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIocHlzdGF0ZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihweXN0YXRlKQogICAiUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyIgogICAiUHlUaHJlYWRTdGF0ZV9DbGVhciIKICAgIl9QeVRocmVhZF9DdXJyZW50RnJhbWVzIgpAQCAtMTA0OCw3ICsxMDQ4LDcgQEAKICAgIl9QeVRocmVhZFN0YXRlX0N1cnJlbnQiCiAgICJfUHlUaHJlYWRTdGF0ZV9HZXRGcmFtZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHB5dGhvbnJ1bikKKzsgRnJvbSBweXRob24zM19zLmxpYihweXRob25ydW4pCiAgICJQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWciCiAgICJQeV9EZWJ1Z0ZsYWciCiAgICJQeV9WZXJib3NlRmxhZyIKQEAgLTExMTAsMjAgKzExMTAsMjAgQEAKICAgIlB5X1VuaWNvZGVGbGFnIgogICAiX1B5X1FuZXdGbGFnIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoc3RydWN0bWVtYmVyKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHN0cnVjdG1lbWJlcikKICAgIlB5TWVtYmVyX0dldCIKICAgIlB5TWVtYmVyX0dldE9uZSIKICAgIlB5TWVtYmVyX1NldE9uZSIKICAgIlB5TWVtYmVyX1NldCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHN5bXRhYmxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHN5bXRhYmxlKQogICAiUHlTeW10YWJsZV9CdWlsZCIKICAgIlB5U3ltdGFibGVfRnJlZSIKICAgIlB5U1RfR2V0U2NvcGUiCiAgICJQeVN5bXRhYmxlX0xvb2t1cCIKICAgIlB5U1RFbnRyeV9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoc3lzbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHN5c21vZHVsZSkKICAgIl9QeVN5c19Jbml0IgogICAiUHlTeXNfV3JpdGVTdGRlcnIiCiAgICJQeVN5c19TZXRQYXRoIgpAQCAtMTEzNywyMiArMTEzNywyMiBAQAogICAiUHlTeXNfUmVzZXRXYXJuT3B0aW9ucyIKICAgIlB5U3lzX0FkZFdhcm5PcHRpb24iCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYih0cmFjZWJhY2spCis7IEZyb20gcHl0aG9uMzNfcy5saWIodHJhY2ViYWNrKQogICAiUHlUcmFjZUJhY2tfSGVyZSIKICAgIlB5VHJhY2VCYWNrX1ByaW50IgogICAiUHlUcmFjZUJhY2tfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGdldG9wdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihnZXRvcHQpCiAgICJfUHlPU19HZXRPcHQiCiAgICJfUHlPU19vcHRlcnIiCiAgICJfUHlPU19vcHRpbmQiCiAgICJfUHlPU19vcHRhcmciCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihkeW5sb2FkX3NobGliKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGR5bmxvYWRfc2hsaWIpCiAgICJfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWIiCiAgICJfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYih0aHJlYWQpCis7IEZyb20gcHl0aG9uMzNfcy5saWIodGhyZWFkKQogICAiUHlUaHJlYWRfZGVsZXRlX2tleV92YWx1ZSIKICAgIlB5VGhyZWFkX2luaXRfdGhyZWFkIgogICAiUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCIKQEAgLTExNjksNyArMTE2OSw3IEBACiAgICJQeVRocmVhZF9zZXRfa2V5X3ZhbHVlIgogICAiUHlUaHJlYWRfZ2V0X2tleV92YWx1ZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGdjbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGdjbW9kdWxlKQogOyAgImluaXRnYyIKICAgIl9QeU9iamVjdF9HQ19OZXciCiAgICJfUHlPYmplY3RfR0NfTmV3VmFyIgpAQCAtMTE4NSw3ICsxMTg1LDcgQEAKICAgIl9QeU9iamVjdF9HQ19EZWwiCiAgICJfUHlHQ19nZW5lcmF0aW9uMCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHNpZ25hbG1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihzaWduYWxtb2R1bGUpCiA7ICAiaW5pdHNpZ25hbCIKICAgIlB5RXJyX0NoZWNrU2lnbmFscyIKICAgIlB5RXJyX1NldEludGVycnVwdCIKQEAgLTExOTQsMTIxICsxMTk0LDEyMSBAQAogICAiUHlPU19Jbml0SW50ZXJydXB0cyIKICAgIlB5T1NfQWZ0ZXJGb3JrIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIocG9zaXhtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIocG9zaXhtb2R1bGUpCiA7ICAiaW5pdG9zMiIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKF90aHJlYWRtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoX3RocmVhZG1vZHVsZSkKIDsgICJpbml0X3RocmVhZCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGFycmF5bW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGFycmF5bW9kdWxlKQogOyAgImluaXRhcnJheSIKIDsgICJhcnJheV9tZXRob2RzIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoYmluYXNjaWkpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoYmluYXNjaWkpCiA7ICAiaW5pdGJpbmFzY2lpIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY21hdGhtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoY21hdGhtb2R1bGUpCiA7ICAiaW5pdGNtYXRoIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoX2NvZGVjc21vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihfY29kZWNzbW9kdWxlKQogOyAgImluaXRfY29kZWNzIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY29sbGVjdGlvbnNtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoY29sbGVjdGlvbnNtb2R1bGUpCiA7ICAiaW5pdGNvbGxlY3Rpb25zIgogICAiZGVxdWVpdGVyX3R5cGUiCiAgICJkZXF1ZXJldml0ZXJfdHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGNQaWNrbGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoY1BpY2tsZSkKIDsgICJpbml0Y1BpY2tsZSIKIDsgICJmYXN0X3NhdmVfbGVhdmUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihfY3N2KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKF9jc3YpCiA7ICAiaW5pdF9jc3YiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihkYXRldGltZW1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihkYXRldGltZW1vZHVsZSkKIDsgICJpbml0ZGF0ZXRpbWUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihkbG1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihkbG1vZHVsZSkKIDsgICJpbml0ZGwiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihlcnJub21vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihlcnJub21vZHVsZSkKIDsgICJpbml0ZXJybm8iCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihmY250bG1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihmY250bG1vZHVsZSkKIDsgICJpbml0ZmNudGwiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihfZnVuY3Rvb2xzbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKF9mdW5jdG9vbHNtb2R1bGUpCiA7ICAiaW5pdF9mdW5jdG9vbHMiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihfaGVhcHFtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoX2hlYXBxbW9kdWxlKQogOyAgImluaXRfaGVhcHEiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihpbWFnZW9wKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGltYWdlb3ApCiA7ICAiaW5pdGltYWdlb3AiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihpdGVydG9vbHNtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoaXRlcnRvb2xzbW9kdWxlKQogOyAgImluaXRpdGVydG9vbHMiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihfbG9jYWxlbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKF9sb2NhbGVtb2R1bGUpCiA7ICAiaW5pdF9sb2NhbGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihtYXRobW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG1hdGhtb2R1bGUpCiA7ICAiaW5pdG1hdGgiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihtZDUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIobWQ1KQogICAibWQ1X2ZpbmlzaCIKICAgIm1kNV9pbml0IgogICAibWQ1X2FwcGVuZCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKG1kNW1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihtZDVtb2R1bGUpCiA7ICAiaW5pdF9tZDUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihvcGVyYXRvcikKKzsgRnJvbSBweXRob24zM19zLmxpYihvcGVyYXRvcikKIDsgICJpbml0b3BlcmF0b3IiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihfcmFuZG9tbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKF9yYW5kb21tb2R1bGUpCiA7ICAiaW5pdF9yYW5kb20iCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihyZ2JpbWdtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIocmdiaW1nbW9kdWxlKQogOyAgImluaXRyZ2JpbWciCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihzaGFtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoc2hhbW9kdWxlKQogOyAgImluaXRfc2hhIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoc2hhMjU2bW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHNoYTI1Nm1vZHVsZSkKIDsgICJpbml0X3NoYTI1NiIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHNoYTUxMm1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihzaGE1MTJtb2R1bGUpCiA7ICAiaW5pdF9zaGE1MTIiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihfc3JlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKF9zcmUpCiA7ICAiaW5pdF9zcmUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihzdHJvcG1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihzdHJvcG1vZHVsZSkKIDsgICJpbml0c3Ryb3AiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihfc3RydWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKF9zdHJ1Y3QpCiA7ICAiaW5pdF9zdHJ1Y3QiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihzeW10YWJsZW1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihzeW10YWJsZW1vZHVsZSkKIDsgICJpbml0X3N5bXRhYmxlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIodGVybWlvcykKKzsgRnJvbSBweXRob24zM19zLmxpYih0ZXJtaW9zKQogOyAgImluaXR0ZXJtaW9zIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIodGltZW1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYih0aW1lbW9kdWxlKQogOyAgImluaXR0aW1lIgogICAiX1B5VGltZV9Eb3VibGVUb1RpbWV0IgogOyAgImluaXR0aW1lem9uZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHRpbWluZ21vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYih0aW1pbmdtb2R1bGUpCiA7ICAiaW5pdHRpbWluZyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKF93ZWFrcmVmKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKF93ZWFrcmVmKQogOyAgImluaXRfd2Vha3JlZiIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHh4c3VidHlwZSkKKzsgRnJvbSBweXRob24zM19zLmxpYih4eHN1YnR5cGUpCiA7ICAiaW5pdHh4c3VidHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHppcGltcG9ydCkKKzsgRnJvbSBweXRob24zM19zLmxpYih6aXBpbXBvcnQpCiA7ICAiaW5pdHppcGltcG9ydCIKZGlmZiAtLWdpdCBhL1BDL29zMnZhY3BwL2NvbmZpZy5jIGIvUEMvb3MydmFjcHAvY29uZmlnLmMKaW5kZXggYmJkZjZmMy4uYjI2YjUyMSAxMDA2NDQKLS0tIGEvUEMvb3MydmFjcHAvY29uZmlnLmMKKysrIGIvUEMvb3MydmFjcHAvY29uZmlnLmMKQEAgLTg4LDEwICs4OCw5IEBACiAgICAgICAgIHsibWFyc2hhbCIsIFB5TWFyc2hhbF9Jbml0fSwKIAogICAgICAgICAvKiBUaGlzIGxpdmVzIGl0IHdpdGggaW1wb3J0LmMgKi8KLSAgICAgICAgeyJpbXAiLCBpbml0aW1wfSwKKyAgICAgICAgeyJfaW1wIiwgaW5pdGltcH0sCiAKICAgICAgICAgLyogVGhlc2UgZW50cmllcyBhcmUgaGVyZSBmb3Igc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzICovCi0gICAgICAgIHsiX19tYWluX18iLCBOVUxMfSwKICAgICAgICAgeyJidWlsdGlucyIsIE5VTEx9LAogICAgICAgICB7InN5cyIsIE5VTEx9LAogCmRpZmYgLS1naXQgYS9QQy9weWNvbmZpZy5oIGIvUEMvcHljb25maWcuaAppbmRleCBiYTgwODAwLi5kNmRlNWYwIDEwMDY0NAotLS0gYS9QQy9weWNvbmZpZy5oCisrKyBiL1BDL3B5Y29uZmlnLmgKQEAgLTIxNSwxNCArMjE1LDE5IEBACiAjZGVmaW5lIGNvcHlzaWduIF9jb3B5c2lnbgogI2RlZmluZSBoeXBvdCBfaHlwb3QKIAotI2VuZGlmIC8qIF9NU0NfVkVSICovCisvKiBTaWRlIGJ5IFNpZGUgYXNzZW1ibGllcyBzdXBwb3J0ZWQgaW4gVlMgMjAwNSBhbmQgVlMgMjAwOCBidXQgbm90IDIwMTAqLworI2lmIF9NU0NfVkVSID49IDE0MDAgJiYgX01TQ19WRVIgPCAxNjAwCisjZGVmaW5lIEhBVkVfU1hTIDEKKyNlbmRpZgogCiAvKiBkZWZpbmUgc29tZSBBTlNJIHR5cGVzIHRoYXQgYXJlIG5vdCBkZWZpbmVkIGluIGVhcmxpZXIgV2luIGhlYWRlcnMgKi8KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxMjAwCisjaWYgX01TQ19WRVIgPj0gMTIwMAogLyogVGhpcyBmaWxlIG9ubHkgZXhpc3RzIGluIFZDIDYuMCBvciBoaWdoZXIgKi8KICNpbmNsdWRlIDxiYXNldHNkLmg+CiAjZW5kaWYKIAorI2VuZGlmIC8qIF9NU0NfVkVSICovCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiBUaGUgQm9ybGFuZCBjb21waWxlciBkZWZpbmVzIF9fQk9STEFORENfXyAqLwogLyogWFhYIFRoZXNlIGRlZmluZXMgYXJlIGxpa2VseSBpbmNvbXBsZXRlLCBidXQgc2hvdWxkIGJlIGVhc3kgdG8gZml4LiAqLwpAQCAtMzE5LDExICszMjQsMTEgQEAKIAkJCXRoZWlyIE1ha2VmaWxlIChvdGhlciBjb21waWxlcnMgYXJlIGdlbmVyYWxseQogCQkJdGFrZW4gY2FyZSBvZiBieSBkaXN0dXRpbHMuKSAqLwogIwkJCWlmIGRlZmluZWQoX0RFQlVHKQotIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjMyX2QubGliIikKKyMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zM19kLmxpYiIpCiAjCQkJZWxpZiBkZWZpbmVkKFB5X0xJTUlURURfQVBJKQogIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjMubGliIikKICMJCQllbHNlCi0jCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMzIubGliIikKKyMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zMy5saWIiKQogIwkJCWVuZGlmIC8qIF9ERUJVRyAqLwogIwkJZW5kaWYgLyogX01TQ19WRVIgKi8KICMJZW5kaWYgLyogUHlfQlVJTERfQ09SRSAqLwpAQCAtNTUwLDEwICs1NTUsNiBAQAogLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgR05VIHJlYWRsaW5lIGxpYnJhcnkgKi8KIC8qICNkZWZpbmUgV0lUSF9SRUFETElORSAxICovCiAKLS8qIERlZmluZSBhcyB0aGUgc2l6ZSBvZiB0aGUgdW5pY29kZSB0eXBlLiAqLwotLyogVGhpcyBpcyBlbm91Z2ggZm9yIHVuaWNvZGVvYmplY3QuaCB0byBkbyB0aGUgInJpZ2h0IHRoaW5nIiBvbiBXaW5kb3dzLiAqLwotI2RlZmluZSBQeV9VTklDT0RFX1NJWkUgMgotCiAvKiBVc2UgUHl0aG9uJ3Mgb3duIHNtYWxsLWJsb2NrIG1lbW9yeS1hbGxvY2F0b3IuICovCiAjZGVmaW5lIFdJVEhfUFlNQUxMT0MgMQogCkBAIC03MTQsOSArNzE1LDYgQEAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy91dHNuYW1lLmg+IGhlYWRlciBmaWxlLiAgKi8KIC8qICNkZWZpbmUgSEFWRV9TWVNfVVRTTkFNRV9IIDEgKi8KIAotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8dGhyZWFkLmg+IGhlYWRlciBmaWxlLiAgKi8KLS8qICN1bmRlZiBIQVZFX1RIUkVBRF9IICovCi0KIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0ZC5oPiBoZWFkZXIgZmlsZS4gICovCiAvKiAjZGVmaW5lIEhBVkVfVU5JU1REX0ggMSAqLwogCmRpZmYgLS1naXQgYS9QQy9weWxhdW5jaGVyLnJjIGIvUEMvcHlsYXVuY2hlci5yYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjU4MjRhCi0tLSAvZGV2L251bGwKKysrIGIvUEMvcHlsYXVuY2hlci5yYwpAQCAtMCwwICsxLDUxIEBACisjaW5jbHVkZSA8d2luZG93cy5oPgorCisjZGVmaW5lIE1TX1dJTkRPV1MKKyNpbmNsdWRlICIuLlxJbmNsdWRlXG1vZHN1cHBvcnQuaCIKKyNpbmNsdWRlICIuLlxJbmNsdWRlXHBhdGNobGV2ZWwuaCIKKyNpZmRlZiBfREVCVUcKKyMgICBpbmNsdWRlICJweXRob25udF9yY19kLmgiCisjZWxzZQorIyAgIGluY2x1ZGUgInB5dGhvbm50X3JjLmgiCisjZW5kaWYKKworI2RlZmluZSBQWVRIT05fVkVSU0lPTiBQWV9WRVJTSU9OICJcMCIKKyNkZWZpbmUgUFlWRVJTSU9ONjQgUFlfTUFKT1JfVkVSU0lPTiwgUFlfTUlOT1JfVkVSU0lPTiwgRklFTEQzLCBQWVRIT05fQVBJX1ZFUlNJT04KKworVlNfVkVSU0lPTl9JTkZPIFZFUlNJT05JTkZPCisgRklMRVZFUlNJT04gUFlWRVJTSU9ONjQKKyBQUk9EVUNUVkVSU0lPTiBQWVZFUlNJT042NAorIEZJTEVGTEFHU01BU0sgMHgxN0wKKyNpZmRlZiBfREVCVUcKKyBGSUxFRkxBR1MgMHgxTAorI2Vsc2UKKyBGSUxFRkxBR1MgMHgwTAorI2VuZGlmCisgRklMRU9TIDB4NEwKKyBGSUxFVFlQRSAweDFMCisgRklMRVNVQlRZUEUgMHgwTAorQkVHSU4KKyAgICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iCisgICAgQkVHSU4KKyAgICAgICAgQkxPQ0sgIjA4MDkwNGIwIgorICAgICAgICBCRUdJTgorICAgICAgICAgICAgVkFMVUUgIkNvbW1lbnRzIiwgIlB5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cyIKKyAgICAgICAgICAgIFZBTFVFICJDb21wYW55TmFtZSIsICJQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiIKKyAgICAgICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzIChDb25zb2xlKSIKKyAgICAgICAgICAgIFZBTFVFICJGaWxlVmVyc2lvbiIsIFBZVEhPTl9WRVJTSU9OCisgICAgICAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwgInB5IgorICAgICAgICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgIkNvcHlyaWdodCAoQykgMjAxMS0yMDEyIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uIgorICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAicHkiCisgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAiUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzIgorICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgUFlUSE9OX1ZFUlNJT04KKyAgICAgICAgRU5ECisgICAgRU5ECisgICAgQkxPQ0sgIlZhckZpbGVJbmZvIgorICAgIEJFR0lOCisgICAgICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4ODA5LCAxMjAwCisgICAgRU5ECitFTkQKKworSURJX0lDT04xICAgICAgICAgICAgICAgSUNPTiAgICAgICAgICAgICAgICAgICAgImxhdW5jaGVyLmljbyIKKworCmRpZmYgLS1naXQgYS9QQy9weXRob24zLmRlZiBiL1BDL3B5dGhvbjMuZGVmCmluZGV4IGE4NDUzMzUuLmQ3MjY1MjUgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbjMuZGVmCisrKyBiL1BDL3B5dGhvbjMuZGVmCkBAIC0xLDY4OSArMSw2OTkgQEAKKzsgV2hlbiBjaGFuZ2luZyB0aGlzIGZpbGUsIHJ1biBweXRob24zM2dlbi5weQogTElCUkFSWQkicHl0aG9uMyIKIEVYUE9SVFMKLSAgUHlBcmdfUGFyc2U9cHl0aG9uMzIuUHlBcmdfUGFyc2UKLSAgUHlBcmdfUGFyc2VUdXBsZT1weXRob24zMi5QeUFyZ19QYXJzZVR1cGxlCi0gIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zMi5QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMKLSAgUHlBcmdfVW5wYWNrVHVwbGU9cHl0aG9uMzIuUHlBcmdfVW5wYWNrVHVwbGUKLSAgUHlBcmdfVmFQYXJzZT1weXRob24zMi5QeUFyZ19WYVBhcnNlCi0gIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjMyLlB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzCi0gIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cz1weXRob24zMi5QeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMKLSAgUHlCYXNlT2JqZWN0X1R5cGU9cHl0aG9uMzIuUHlCYXNlT2JqZWN0X1R5cGUgREFUQQotICBQeUJvb2xfRnJvbUxvbmc9cHl0aG9uMzIuUHlCb29sX0Zyb21Mb25nCi0gIFB5Qm9vbF9UeXBlPXB5dGhvbjMyLlB5Qm9vbF9UeXBlIERBVEEKLSAgUHlCeXRlQXJyYXlJdGVyX1R5cGU9cHl0aG9uMzIuUHlCeXRlQXJyYXlJdGVyX1R5cGUgREFUQQotICBQeUJ5dGVBcnJheV9Bc1N0cmluZz1weXRob24zMi5QeUJ5dGVBcnJheV9Bc1N0cmluZwotICBQeUJ5dGVBcnJheV9Db25jYXQ9cHl0aG9uMzIuUHlCeXRlQXJyYXlfQ29uY2F0Ci0gIFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Q9cHl0aG9uMzIuUHlCeXRlQXJyYXlfRnJvbU9iamVjdAotICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zMi5QeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVBcnJheV9SZXNpemU9cHl0aG9uMzIuUHlCeXRlQXJyYXlfUmVzaXplCi0gIFB5Qnl0ZUFycmF5X1NpemU9cHl0aG9uMzIuUHlCeXRlQXJyYXlfU2l6ZQotICBQeUJ5dGVBcnJheV9UeXBlPXB5dGhvbjMyLlB5Qnl0ZUFycmF5X1R5cGUgREFUQQotICBQeUJ5dGVzSXRlcl9UeXBlPXB5dGhvbjMyLlB5Qnl0ZXNJdGVyX1R5cGUgREFUQQotICBQeUJ5dGVzX0FzU3RyaW5nPXB5dGhvbjMyLlB5Qnl0ZXNfQXNTdHJpbmcKLSAgUHlCeXRlc19Bc1N0cmluZ0FuZFNpemU9cHl0aG9uMzIuUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUKLSAgUHlCeXRlc19Db25jYXQ9cHl0aG9uMzIuUHlCeXRlc19Db25jYXQKLSAgUHlCeXRlc19Db25jYXRBbmREZWw9cHl0aG9uMzIuUHlCeXRlc19Db25jYXRBbmREZWwKLSAgUHlCeXRlc19EZWNvZGVFc2NhcGU9cHl0aG9uMzIuUHlCeXRlc19EZWNvZGVFc2NhcGUKLSAgUHlCeXRlc19Gcm9tRm9ybWF0PXB5dGhvbjMyLlB5Qnl0ZXNfRnJvbUZvcm1hdAotICBQeUJ5dGVzX0Zyb21Gb3JtYXRWPXB5dGhvbjMyLlB5Qnl0ZXNfRnJvbUZvcm1hdFYKLSAgUHlCeXRlc19Gcm9tT2JqZWN0PXB5dGhvbjMyLlB5Qnl0ZXNfRnJvbU9iamVjdAotICBQeUJ5dGVzX0Zyb21TdHJpbmc9cHl0aG9uMzIuUHlCeXRlc19Gcm9tU3RyaW5nCi0gIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzIuUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVzX1JlcHI9cHl0aG9uMzIuUHlCeXRlc19SZXByCi0gIFB5Qnl0ZXNfU2l6ZT1weXRob24zMi5QeUJ5dGVzX1NpemUKLSAgUHlCeXRlc19UeXBlPXB5dGhvbjMyLlB5Qnl0ZXNfVHlwZSBEQVRBCi0gIFB5Q0Z1bmN0aW9uX0NhbGw9cHl0aG9uMzIuUHlDRnVuY3Rpb25fQ2FsbAotICBQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0PXB5dGhvbjMyLlB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3QKLSAgUHlDRnVuY3Rpb25fR2V0RmxhZ3M9cHl0aG9uMzIuUHlDRnVuY3Rpb25fR2V0RmxhZ3MKLSAgUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb249cHl0aG9uMzIuUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24KLSAgUHlDRnVuY3Rpb25fR2V0U2VsZj1weXRob24zMi5QeUNGdW5jdGlvbl9HZXRTZWxmCi0gIFB5Q0Z1bmN0aW9uX05ld0V4PXB5dGhvbjMyLlB5Q0Z1bmN0aW9uX05ld0V4Ci0gIFB5Q0Z1bmN0aW9uX1R5cGU9cHl0aG9uMzIuUHlDRnVuY3Rpb25fVHlwZSBEQVRBCi0gIFB5Q2FsbEl0ZXJfTmV3PXB5dGhvbjMyLlB5Q2FsbEl0ZXJfTmV3Ci0gIFB5Q2FsbEl0ZXJfVHlwZT1weXRob24zMi5QeUNhbGxJdGVyX1R5cGUgREFUQQotICBQeUNhbGxhYmxlX0NoZWNrPXB5dGhvbjMyLlB5Q2FsbGFibGVfQ2hlY2sKLSAgUHlDYXBzdWxlX0dldENvbnRleHQ9cHl0aG9uMzIuUHlDYXBzdWxlX0dldENvbnRleHQKLSAgUHlDYXBzdWxlX0dldERlc3RydWN0b3I9cHl0aG9uMzIuUHlDYXBzdWxlX0dldERlc3RydWN0b3IKLSAgUHlDYXBzdWxlX0dldE5hbWU9cHl0aG9uMzIuUHlDYXBzdWxlX0dldE5hbWUKLSAgUHlDYXBzdWxlX0dldFBvaW50ZXI9cHl0aG9uMzIuUHlDYXBzdWxlX0dldFBvaW50ZXIKLSAgUHlDYXBzdWxlX0ltcG9ydD1weXRob24zMi5QeUNhcHN1bGVfSW1wb3J0Ci0gIFB5Q2Fwc3VsZV9Jc1ZhbGlkPXB5dGhvbjMyLlB5Q2Fwc3VsZV9Jc1ZhbGlkCi0gIFB5Q2Fwc3VsZV9OZXc9cHl0aG9uMzIuUHlDYXBzdWxlX05ldwotICBQeUNhcHN1bGVfU2V0Q29udGV4dD1weXRob24zMi5QeUNhcHN1bGVfU2V0Q29udGV4dAotICBQeUNhcHN1bGVfU2V0RGVzdHJ1Y3Rvcj1weXRob24zMi5QeUNhcHN1bGVfU2V0RGVzdHJ1Y3RvcgotICBQeUNhcHN1bGVfU2V0TmFtZT1weXRob24zMi5QeUNhcHN1bGVfU2V0TmFtZQotICBQeUNhcHN1bGVfU2V0UG9pbnRlcj1weXRob24zMi5QeUNhcHN1bGVfU2V0UG9pbnRlcgotICBQeUNhcHN1bGVfVHlwZT1weXRob24zMi5QeUNhcHN1bGVfVHlwZSBEQVRBCi0gIFB5Q2xhc3NNZXRob2REZXNjcl9UeXBlPXB5dGhvbjMyLlB5Q2xhc3NNZXRob2REZXNjcl9UeXBlIERBVEEKLSAgUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzPXB5dGhvbjMyLlB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycwotICBQeUNvZGVjX0RlY29kZT1weXRob24zMi5QeUNvZGVjX0RlY29kZQotICBQeUNvZGVjX0RlY29kZXI9cHl0aG9uMzIuUHlDb2RlY19EZWNvZGVyCi0gIFB5Q29kZWNfRW5jb2RlPXB5dGhvbjMyLlB5Q29kZWNfRW5jb2RlCi0gIFB5Q29kZWNfRW5jb2Rlcj1weXRob24zMi5QeUNvZGVjX0VuY29kZXIKLSAgUHlDb2RlY19JZ25vcmVFcnJvcnM9cHl0aG9uMzIuUHlDb2RlY19JZ25vcmVFcnJvcnMKLSAgUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXI9cHl0aG9uMzIuUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXIKLSAgUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXI9cHl0aG9uMzIuUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXIKLSAgUHlDb2RlY19Lbm93bkVuY29kaW5nPXB5dGhvbjMyLlB5Q29kZWNfS25vd25FbmNvZGluZwotICBQeUNvZGVjX0xvb2t1cEVycm9yPXB5dGhvbjMyLlB5Q29kZWNfTG9va3VwRXJyb3IKLSAgUHlDb2RlY19SZWdpc3Rlcj1weXRob24zMi5QeUNvZGVjX1JlZ2lzdGVyCi0gIFB5Q29kZWNfUmVnaXN0ZXJFcnJvcj1weXRob24zMi5QeUNvZGVjX1JlZ2lzdGVyRXJyb3IKLSAgUHlDb2RlY19SZXBsYWNlRXJyb3JzPXB5dGhvbjMyLlB5Q29kZWNfUmVwbGFjZUVycm9ycwotICBQeUNvZGVjX1N0cmVhbVJlYWRlcj1weXRob24zMi5QeUNvZGVjX1N0cmVhbVJlYWRlcgotICBQeUNvZGVjX1N0cmVhbVdyaXRlcj1weXRob24zMi5QeUNvZGVjX1N0cmVhbVdyaXRlcgotICBQeUNvZGVjX1N0cmljdEVycm9ycz1weXRob24zMi5QeUNvZGVjX1N0cmljdEVycm9ycwotICBQeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzPXB5dGhvbjMyLlB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnMKLSAgUHlDb21wbGV4X0Zyb21Eb3VibGVzPXB5dGhvbjMyLlB5Q29tcGxleF9Gcm9tRG91YmxlcwotICBQeUNvbXBsZXhfSW1hZ0FzRG91YmxlPXB5dGhvbjMyLlB5Q29tcGxleF9JbWFnQXNEb3VibGUKLSAgUHlDb21wbGV4X1JlYWxBc0RvdWJsZT1weXRob24zMi5QeUNvbXBsZXhfUmVhbEFzRG91YmxlCi0gIFB5Q29tcGxleF9UeXBlPXB5dGhvbjMyLlB5Q29tcGxleF9UeXBlIERBVEEKLSAgUHlEZXNjcl9OZXdDbGFzc01ldGhvZD1weXRob24zMi5QeURlc2NyX05ld0NsYXNzTWV0aG9kCi0gIFB5RGVzY3JfTmV3R2V0U2V0PXB5dGhvbjMyLlB5RGVzY3JfTmV3R2V0U2V0Ci0gIFB5RGVzY3JfTmV3TWVtYmVyPXB5dGhvbjMyLlB5RGVzY3JfTmV3TWVtYmVyCi0gIFB5RGVzY3JfTmV3TWV0aG9kPXB5dGhvbjMyLlB5RGVzY3JfTmV3TWV0aG9kCi0gIFB5RGljdEl0ZW1zX1R5cGU9cHl0aG9uMzIuUHlEaWN0SXRlbXNfVHlwZSBEQVRBCi0gIFB5RGljdEl0ZXJJdGVtX1R5cGU9cHl0aG9uMzIuUHlEaWN0SXRlckl0ZW1fVHlwZSBEQVRBCi0gIFB5RGljdEl0ZXJLZXlfVHlwZT1weXRob24zMi5QeURpY3RJdGVyS2V5X1R5cGUgREFUQQotICBQeURpY3RJdGVyVmFsdWVfVHlwZT1weXRob24zMi5QeURpY3RJdGVyVmFsdWVfVHlwZSBEQVRBCi0gIFB5RGljdEtleXNfVHlwZT1weXRob24zMi5QeURpY3RLZXlzX1R5cGUgREFUQQotICBQeURpY3RQcm94eV9OZXc9cHl0aG9uMzIuUHlEaWN0UHJveHlfTmV3Ci0gIFB5RGljdFByb3h5X1R5cGU9cHl0aG9uMzIuUHlEaWN0UHJveHlfVHlwZSBEQVRBCi0gIFB5RGljdFZhbHVlc19UeXBlPXB5dGhvbjMyLlB5RGljdFZhbHVlc19UeXBlIERBVEEKLSAgUHlEaWN0X0NsZWFyPXB5dGhvbjMyLlB5RGljdF9DbGVhcgotICBQeURpY3RfQ29udGFpbnM9cHl0aG9uMzIuUHlEaWN0X0NvbnRhaW5zCi0gIFB5RGljdF9Db3B5PXB5dGhvbjMyLlB5RGljdF9Db3B5Ci0gIFB5RGljdF9EZWxJdGVtPXB5dGhvbjMyLlB5RGljdF9EZWxJdGVtCi0gIFB5RGljdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjMyLlB5RGljdF9EZWxJdGVtU3RyaW5nCi0gIFB5RGljdF9HZXRJdGVtPXB5dGhvbjMyLlB5RGljdF9HZXRJdGVtCi0gIFB5RGljdF9HZXRJdGVtU3RyaW5nPXB5dGhvbjMyLlB5RGljdF9HZXRJdGVtU3RyaW5nCi0gIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yPXB5dGhvbjMyLlB5RGljdF9HZXRJdGVtV2l0aEVycm9yCi0gIFB5RGljdF9JdGVtcz1weXRob24zMi5QeURpY3RfSXRlbXMKLSAgUHlEaWN0X0tleXM9cHl0aG9uMzIuUHlEaWN0X0tleXMKLSAgUHlEaWN0X01lcmdlPXB5dGhvbjMyLlB5RGljdF9NZXJnZQotICBQeURpY3RfTWVyZ2VGcm9tU2VxMj1weXRob24zMi5QeURpY3RfTWVyZ2VGcm9tU2VxMgotICBQeURpY3RfTmV3PXB5dGhvbjMyLlB5RGljdF9OZXcKLSAgUHlEaWN0X05leHQ9cHl0aG9uMzIuUHlEaWN0X05leHQKLSAgUHlEaWN0X1NldEl0ZW09cHl0aG9uMzIuUHlEaWN0X1NldEl0ZW0KLSAgUHlEaWN0X1NldEl0ZW1TdHJpbmc9cHl0aG9uMzIuUHlEaWN0X1NldEl0ZW1TdHJpbmcKLSAgUHlEaWN0X1NpemU9cHl0aG9uMzIuUHlEaWN0X1NpemUKLSAgUHlEaWN0X1R5cGU9cHl0aG9uMzIuUHlEaWN0X1R5cGUgREFUQQotICBQeURpY3RfVXBkYXRlPXB5dGhvbjMyLlB5RGljdF9VcGRhdGUKLSAgUHlEaWN0X1ZhbHVlcz1weXRob24zMi5QeURpY3RfVmFsdWVzCi0gIFB5RWxsaXBzaXNfVHlwZT1weXRob24zMi5QeUVsbGlwc2lzX1R5cGUgREFUQQotICBQeUVudW1fVHlwZT1weXRob24zMi5QeUVudW1fVHlwZSBEQVRBCi0gIFB5RXJyX0JhZEFyZ3VtZW50PXB5dGhvbjMyLlB5RXJyX0JhZEFyZ3VtZW50Ci0gIFB5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zMi5QeUVycl9CYWRJbnRlcm5hbENhbGwKLSAgUHlFcnJfQ2hlY2tTaWduYWxzPXB5dGhvbjMyLlB5RXJyX0NoZWNrU2lnbmFscwotICBQeUVycl9DbGVhcj1weXRob24zMi5QeUVycl9DbGVhcgotICBQeUVycl9EaXNwbGF5PXB5dGhvbjMyLlB5RXJyX0Rpc3BsYXkKLSAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zMi5QeUVycl9FeGNlcHRpb25NYXRjaGVzCi0gIFB5RXJyX0ZldGNoPXB5dGhvbjMyLlB5RXJyX0ZldGNoCi0gIFB5RXJyX0Zvcm1hdD1weXRob24zMi5QeUVycl9Gb3JtYXQKLSAgUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjMyLlB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcwotICBQeUVycl9OZXdFeGNlcHRpb249cHl0aG9uMzIuUHlFcnJfTmV3RXhjZXB0aW9uCi0gIFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2M9cHl0aG9uMzIuUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYwotICBQeUVycl9Ob01lbW9yeT1weXRob24zMi5QeUVycl9Ob01lbW9yeQotICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb249cHl0aG9uMzIuUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uCi0gIFB5RXJyX09jY3VycmVkPXB5dGhvbjMyLlB5RXJyX09jY3VycmVkCi0gIFB5RXJyX1ByaW50PXB5dGhvbjMyLlB5RXJyX1ByaW50Ci0gIFB5RXJyX1ByaW50RXg9cHl0aG9uMzIuUHlFcnJfUHJpbnRFeAotICBQeUVycl9Qcm9ncmFtVGV4dD1weXRob24zMi5QeUVycl9Qcm9ncmFtVGV4dAotICBQeUVycl9SZXN0b3JlPXB5dGhvbjMyLlB5RXJyX1Jlc3RvcmUKLSAgUHlFcnJfU2V0RnJvbUVycm5vPXB5dGhvbjMyLlB5RXJyX1NldEZyb21FcnJubwotICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWU9cHl0aG9uMzIuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lCi0gIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdD1weXRob24zMi5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QKLSAgUHlFcnJfU2V0SW50ZXJydXB0PXB5dGhvbjMyLlB5RXJyX1NldEludGVycnVwdAotICBQeUVycl9TZXROb25lPXB5dGhvbjMyLlB5RXJyX1NldE5vbmUKLSAgUHlFcnJfU2V0T2JqZWN0PXB5dGhvbjMyLlB5RXJyX1NldE9iamVjdAotICBQeUVycl9TZXRTdHJpbmc9cHl0aG9uMzIuUHlFcnJfU2V0U3RyaW5nCi0gIFB5RXJyX1N5bnRheExvY2F0aW9uPXB5dGhvbjMyLlB5RXJyX1N5bnRheExvY2F0aW9uCi0gIFB5RXJyX1dhcm5FeD1weXRob24zMi5QeUVycl9XYXJuRXgKLSAgUHlFcnJfV2FybkV4cGxpY2l0PXB5dGhvbjMyLlB5RXJyX1dhcm5FeHBsaWNpdAotICBQeUVycl9XYXJuRm9ybWF0PXB5dGhvbjMyLlB5RXJyX1dhcm5Gb3JtYXQKLSAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlPXB5dGhvbjMyLlB5RXJyX1dyaXRlVW5yYWlzYWJsZQotICBQeUV2YWxfQWNxdWlyZUxvY2s9cHl0aG9uMzIuUHlFdmFsX0FjcXVpcmVMb2NrCi0gIFB5RXZhbF9BY3F1aXJlVGhyZWFkPXB5dGhvbjMyLlB5RXZhbF9BY3F1aXJlVGhyZWFkCi0gIFB5RXZhbF9DYWxsRnVuY3Rpb249cHl0aG9uMzIuUHlFdmFsX0NhbGxGdW5jdGlvbgotICBQeUV2YWxfQ2FsbE1ldGhvZD1weXRob24zMi5QeUV2YWxfQ2FsbE1ldGhvZAotICBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3Jkcz1weXRob24zMi5QeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcwotICBQeUV2YWxfRXZhbENvZGU9cHl0aG9uMzIuUHlFdmFsX0V2YWxDb2RlCi0gIFB5RXZhbF9FdmFsQ29kZUV4PXB5dGhvbjMyLlB5RXZhbF9FdmFsQ29kZUV4Ci0gIFB5RXZhbF9FdmFsRnJhbWU9cHl0aG9uMzIuUHlFdmFsX0V2YWxGcmFtZQotICBQeUV2YWxfRXZhbEZyYW1lRXg9cHl0aG9uMzIuUHlFdmFsX0V2YWxGcmFtZUV4Ci0gIFB5RXZhbF9HZXRCdWlsdGlucz1weXRob24zMi5QeUV2YWxfR2V0QnVpbHRpbnMKLSAgUHlFdmFsX0dldENhbGxTdGF0cz1weXRob24zMi5QeUV2YWxfR2V0Q2FsbFN0YXRzCi0gIFB5RXZhbF9HZXRGcmFtZT1weXRob24zMi5QeUV2YWxfR2V0RnJhbWUKLSAgUHlFdmFsX0dldEZ1bmNEZXNjPXB5dGhvbjMyLlB5RXZhbF9HZXRGdW5jRGVzYwotICBQeUV2YWxfR2V0RnVuY05hbWU9cHl0aG9uMzIuUHlFdmFsX0dldEZ1bmNOYW1lCi0gIFB5RXZhbF9HZXRHbG9iYWxzPXB5dGhvbjMyLlB5RXZhbF9HZXRHbG9iYWxzCi0gIFB5RXZhbF9HZXRMb2NhbHM9cHl0aG9uMzIuUHlFdmFsX0dldExvY2FscwotICBQeUV2YWxfSW5pdFRocmVhZHM9cHl0aG9uMzIuUHlFdmFsX0luaXRUaHJlYWRzCi0gIFB5RXZhbF9SZUluaXRUaHJlYWRzPXB5dGhvbjMyLlB5RXZhbF9SZUluaXRUaHJlYWRzCi0gIFB5RXZhbF9SZWxlYXNlTG9jaz1weXRob24zMi5QeUV2YWxfUmVsZWFzZUxvY2sKLSAgUHlFdmFsX1JlbGVhc2VUaHJlYWQ9cHl0aG9uMzIuUHlFdmFsX1JlbGVhc2VUaHJlYWQKLSAgUHlFdmFsX1Jlc3RvcmVUaHJlYWQ9cHl0aG9uMzIuUHlFdmFsX1Jlc3RvcmVUaHJlYWQKLSAgUHlFdmFsX1NhdmVUaHJlYWQ9cHl0aG9uMzIuUHlFdmFsX1NhdmVUaHJlYWQKLSAgUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZD1weXRob24zMi5QeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkCi0gIFB5RXhjX0FyaXRobWV0aWNFcnJvcj1weXRob24zMi5QeUV4Y19Bcml0aG1ldGljRXJyb3IgREFUQQotICBQeUV4Y19Bc3NlcnRpb25FcnJvcj1weXRob24zMi5QeUV4Y19Bc3NlcnRpb25FcnJvciBEQVRBCi0gIFB5RXhjX0F0dHJpYnV0ZUVycm9yPXB5dGhvbjMyLlB5RXhjX0F0dHJpYnV0ZUVycm9yIERBVEEKLSAgUHlFeGNfQmFzZUV4Y2VwdGlvbj1weXRob24zMi5QeUV4Y19CYXNlRXhjZXB0aW9uIERBVEEKLSAgUHlFeGNfQnVmZmVyRXJyb3I9cHl0aG9uMzIuUHlFeGNfQnVmZmVyRXJyb3IgREFUQQotICBQeUV4Y19CeXRlc1dhcm5pbmc9cHl0aG9uMzIuUHlFeGNfQnl0ZXNXYXJuaW5nIERBVEEKLSAgUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjMyLlB5RXhjX0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCi0gIFB5RXhjX0VPRkVycm9yPXB5dGhvbjMyLlB5RXhjX0VPRkVycm9yIERBVEEKLSAgUHlFeGNfRW52aXJvbm1lbnRFcnJvcj1weXRob24zMi5QeUV4Y19FbnZpcm9ubWVudEVycm9yIERBVEEKLSAgUHlFeGNfRXhjZXB0aW9uPXB5dGhvbjMyLlB5RXhjX0V4Y2VwdGlvbiBEQVRBCi0gIFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcj1weXRob24zMi5QeUV4Y19GbG9hdGluZ1BvaW50RXJyb3IgREFUQQotICBQeUV4Y19GdXR1cmVXYXJuaW5nPXB5dGhvbjMyLlB5RXhjX0Z1dHVyZVdhcm5pbmcgREFUQQotICBQeUV4Y19HZW5lcmF0b3JFeGl0PXB5dGhvbjMyLlB5RXhjX0dlbmVyYXRvckV4aXQgREFUQQotICBQeUV4Y19JT0Vycm9yPXB5dGhvbjMyLlB5RXhjX0lPRXJyb3IgREFUQQotICBQeUV4Y19JbXBvcnRFcnJvcj1weXRob24zMi5QeUV4Y19JbXBvcnRFcnJvciBEQVRBCi0gIFB5RXhjX0ltcG9ydFdhcm5pbmc9cHl0aG9uMzIuUHlFeGNfSW1wb3J0V2FybmluZyBEQVRBCi0gIFB5RXhjX0luZGVudGF0aW9uRXJyb3I9cHl0aG9uMzIuUHlFeGNfSW5kZW50YXRpb25FcnJvciBEQVRBCi0gIFB5RXhjX0luZGV4RXJyb3I9cHl0aG9uMzIuUHlFeGNfSW5kZXhFcnJvciBEQVRBCi0gIFB5RXhjX0tleUVycm9yPXB5dGhvbjMyLlB5RXhjX0tleUVycm9yIERBVEEKLSAgUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQ9cHl0aG9uMzIuUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQgREFUQQotICBQeUV4Y19Mb29rdXBFcnJvcj1weXRob24zMi5QeUV4Y19Mb29rdXBFcnJvciBEQVRBCi0gIFB5RXhjX01lbW9yeUVycm9yPXB5dGhvbjMyLlB5RXhjX01lbW9yeUVycm9yIERBVEEKLSAgUHlFeGNfTWVtb3J5RXJyb3JJbnN0PXB5dGhvbjMyLlB5RXhjX01lbW9yeUVycm9ySW5zdCBEQVRBCi0gIFB5RXhjX05hbWVFcnJvcj1weXRob24zMi5QeUV4Y19OYW1lRXJyb3IgREFUQQotICBQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yPXB5dGhvbjMyLlB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IgREFUQQotICBQeUV4Y19PU0Vycm9yPXB5dGhvbjMyLlB5RXhjX09TRXJyb3IgREFUQQotICBQeUV4Y19PdmVyZmxvd0Vycm9yPXB5dGhvbjMyLlB5RXhjX092ZXJmbG93RXJyb3IgREFUQQotICBQeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjMyLlB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgREFUQQotICBQeUV4Y19SZWN1cnNpb25FcnJvckluc3Q9cHl0aG9uMzIuUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0IERBVEEKLSAgUHlFeGNfUmVmZXJlbmNlRXJyb3I9cHl0aG9uMzIuUHlFeGNfUmVmZXJlbmNlRXJyb3IgREFUQQotICBQeUV4Y19SdW50aW1lRXJyb3I9cHl0aG9uMzIuUHlFeGNfUnVudGltZUVycm9yIERBVEEKLSAgUHlFeGNfUnVudGltZVdhcm5pbmc9cHl0aG9uMzIuUHlFeGNfUnVudGltZVdhcm5pbmcgREFUQQotICBQeUV4Y19TdG9wSXRlcmF0aW9uPXB5dGhvbjMyLlB5RXhjX1N0b3BJdGVyYXRpb24gREFUQQotICBQeUV4Y19TeW50YXhFcnJvcj1weXRob24zMi5QeUV4Y19TeW50YXhFcnJvciBEQVRBCi0gIFB5RXhjX1N5bnRheFdhcm5pbmc9cHl0aG9uMzIuUHlFeGNfU3ludGF4V2FybmluZyBEQVRBCi0gIFB5RXhjX1N5c3RlbUVycm9yPXB5dGhvbjMyLlB5RXhjX1N5c3RlbUVycm9yIERBVEEKLSAgUHlFeGNfU3lzdGVtRXhpdD1weXRob24zMi5QeUV4Y19TeXN0ZW1FeGl0IERBVEEKLSAgUHlFeGNfVGFiRXJyb3I9cHl0aG9uMzIuUHlFeGNfVGFiRXJyb3IgREFUQQotICBQeUV4Y19UeXBlRXJyb3I9cHl0aG9uMzIuUHlFeGNfVHlwZUVycm9yIERBVEEKLSAgUHlFeGNfVW5ib3VuZExvY2FsRXJyb3I9cHl0aG9uMzIuUHlFeGNfVW5ib3VuZExvY2FsRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3I9cHl0aG9uMzIuUHlFeGNfVW5pY29kZURlY29kZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yPXB5dGhvbjMyLlB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVFcnJvcj1weXRob24zMi5QeUV4Y19Vbmljb2RlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3I9cHl0aG9uMzIuUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZVdhcm5pbmc9cHl0aG9uMzIuUHlFeGNfVW5pY29kZVdhcm5pbmcgREFUQQotICBQeUV4Y19Vc2VyV2FybmluZz1weXRob24zMi5QeUV4Y19Vc2VyV2FybmluZyBEQVRBCi0gIFB5RXhjX1ZhbHVlRXJyb3I9cHl0aG9uMzIuUHlFeGNfVmFsdWVFcnJvciBEQVRBCi0gIFB5RXhjX1dhcm5pbmc9cHl0aG9uMzIuUHlFeGNfV2FybmluZyBEQVRBCi0gIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yPXB5dGhvbjMyLlB5RXhjX1plcm9EaXZpc2lvbkVycm9yIERBVEEKLSAgUHlFeGNlcHRpb25fR2V0Q2F1c2U9cHl0aG9uMzIuUHlFeGNlcHRpb25fR2V0Q2F1c2UKLSAgUHlFeGNlcHRpb25fR2V0Q29udGV4dD1weXRob24zMi5QeUV4Y2VwdGlvbl9HZXRDb250ZXh0Ci0gIFB5RXhjZXB0aW9uX0dldFRyYWNlYmFjaz1weXRob24zMi5QeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2sKLSAgUHlFeGNlcHRpb25fU2V0Q2F1c2U9cHl0aG9uMzIuUHlFeGNlcHRpb25fU2V0Q2F1c2UKLSAgUHlFeGNlcHRpb25fU2V0Q29udGV4dD1weXRob24zMi5QeUV4Y2VwdGlvbl9TZXRDb250ZXh0Ci0gIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjaz1weXRob24zMi5QeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sKLSAgUHlGaWxlX0Zyb21GZD1weXRob24zMi5QeUZpbGVfRnJvbUZkCi0gIFB5RmlsZV9HZXRMaW5lPXB5dGhvbjMyLlB5RmlsZV9HZXRMaW5lCi0gIFB5RmlsZV9Xcml0ZU9iamVjdD1weXRob24zMi5QeUZpbGVfV3JpdGVPYmplY3QKLSAgUHlGaWxlX1dyaXRlU3RyaW5nPXB5dGhvbjMyLlB5RmlsZV9Xcml0ZVN0cmluZwotICBQeUZpbHRlcl9UeXBlPXB5dGhvbjMyLlB5RmlsdGVyX1R5cGUgREFUQQotICBQeUZsb2F0X0FzRG91YmxlPXB5dGhvbjMyLlB5RmxvYXRfQXNEb3VibGUKLSAgUHlGbG9hdF9Gcm9tRG91YmxlPXB5dGhvbjMyLlB5RmxvYXRfRnJvbURvdWJsZQotICBQeUZsb2F0X0Zyb21TdHJpbmc9cHl0aG9uMzIuUHlGbG9hdF9Gcm9tU3RyaW5nCi0gIFB5RmxvYXRfR2V0SW5mbz1weXRob24zMi5QeUZsb2F0X0dldEluZm8KLSAgUHlGbG9hdF9HZXRNYXg9cHl0aG9uMzIuUHlGbG9hdF9HZXRNYXgKLSAgUHlGbG9hdF9HZXRNaW49cHl0aG9uMzIuUHlGbG9hdF9HZXRNaW4KLSAgUHlGbG9hdF9UeXBlPXB5dGhvbjMyLlB5RmxvYXRfVHlwZSBEQVRBCi0gIFB5RnJvemVuU2V0X05ldz1weXRob24zMi5QeUZyb3plblNldF9OZXcKLSAgUHlGcm96ZW5TZXRfVHlwZT1weXRob24zMi5QeUZyb3plblNldF9UeXBlIERBVEEKLSAgUHlHQ19Db2xsZWN0PXB5dGhvbjMyLlB5R0NfQ29sbGVjdAotICBQeUdJTFN0YXRlX0Vuc3VyZT1weXRob24zMi5QeUdJTFN0YXRlX0Vuc3VyZQotICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZT1weXRob24zMi5QeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZQotICBQeUdJTFN0YXRlX1JlbGVhc2U9cHl0aG9uMzIuUHlHSUxTdGF0ZV9SZWxlYXNlCi0gIFB5R2V0U2V0RGVzY3JfVHlwZT1weXRob24zMi5QeUdldFNldERlc2NyX1R5cGUgREFUQQotICBQeUltcG9ydF9BZGRNb2R1bGU9cHl0aG9uMzIuUHlJbXBvcnRfQWRkTW9kdWxlCi0gIFB5SW1wb3J0X0FwcGVuZEluaXR0YWI9cHl0aG9uMzIuUHlJbXBvcnRfQXBwZW5kSW5pdHRhYgotICBQeUltcG9ydF9DbGVhbnVwPXB5dGhvbjMyLlB5SW1wb3J0X0NsZWFudXAKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGU9cHl0aG9uMzIuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeD1weXRob24zMi5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4Ci0gIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcz1weXRob24zMi5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMKLSAgUHlJbXBvcnRfR2V0SW1wb3J0ZXI9cHl0aG9uMzIuUHlJbXBvcnRfR2V0SW1wb3J0ZXIKLSAgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXI9cHl0aG9uMzIuUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIKLSAgUHlJbXBvcnRfR2V0TWFnaWNUYWc9cHl0aG9uMzIuUHlJbXBvcnRfR2V0TWFnaWNUYWcKLSAgUHlJbXBvcnRfR2V0TW9kdWxlRGljdD1weXRob24zMi5QeUltcG9ydF9HZXRNb2R1bGVEaWN0Ci0gIFB5SW1wb3J0X0ltcG9ydD1weXRob24zMi5QeUltcG9ydF9JbXBvcnQKLSAgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlPXB5dGhvbjMyLlB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZQotICBQeUltcG9ydF9JbXBvcnRNb2R1bGU9cHl0aG9uMzIuUHlJbXBvcnRfSW1wb3J0TW9kdWxlCi0gIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsPXB5dGhvbjMyLlB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsCi0gIFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2s9cHl0aG9uMzIuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jawotICBQeUltcG9ydF9SZWxvYWRNb2R1bGU9cHl0aG9uMzIuUHlJbXBvcnRfUmVsb2FkTW9kdWxlCi0gIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcj1weXRob24zMi5QeUludGVycHJldGVyU3RhdGVfQ2xlYXIKLSAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZT1weXRob24zMi5QeUludGVycHJldGVyU3RhdGVfRGVsZXRlCi0gIFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXc9cHl0aG9uMzIuUHlJbnRlcnByZXRlclN0YXRlX05ldwotICBQeUl0ZXJfTmV4dD1weXRob24zMi5QeUl0ZXJfTmV4dAotICBQeUxpc3RJdGVyX1R5cGU9cHl0aG9uMzIuUHlMaXN0SXRlcl9UeXBlIERBVEEKLSAgUHlMaXN0UmV2SXRlcl9UeXBlPXB5dGhvbjMyLlB5TGlzdFJldkl0ZXJfVHlwZSBEQVRBCi0gIFB5TGlzdF9BcHBlbmQ9cHl0aG9uMzIuUHlMaXN0X0FwcGVuZAotICBQeUxpc3RfQXNUdXBsZT1weXRob24zMi5QeUxpc3RfQXNUdXBsZQotICBQeUxpc3RfR2V0SXRlbT1weXRob24zMi5QeUxpc3RfR2V0SXRlbQotICBQeUxpc3RfR2V0U2xpY2U9cHl0aG9uMzIuUHlMaXN0X0dldFNsaWNlCi0gIFB5TGlzdF9JbnNlcnQ9cHl0aG9uMzIuUHlMaXN0X0luc2VydAotICBQeUxpc3RfTmV3PXB5dGhvbjMyLlB5TGlzdF9OZXcKLSAgUHlMaXN0X1JldmVyc2U9cHl0aG9uMzIuUHlMaXN0X1JldmVyc2UKLSAgUHlMaXN0X1NldEl0ZW09cHl0aG9uMzIuUHlMaXN0X1NldEl0ZW0KLSAgUHlMaXN0X1NldFNsaWNlPXB5dGhvbjMyLlB5TGlzdF9TZXRTbGljZQotICBQeUxpc3RfU2l6ZT1weXRob24zMi5QeUxpc3RfU2l6ZQotICBQeUxpc3RfU29ydD1weXRob24zMi5QeUxpc3RfU29ydAotICBQeUxpc3RfVHlwZT1weXRob24zMi5QeUxpc3RfVHlwZSBEQVRBCi0gIFB5TG9uZ1JhbmdlSXRlcl9UeXBlPXB5dGhvbjMyLlB5TG9uZ1JhbmdlSXRlcl9UeXBlIERBVEEKLSAgUHlMb25nX0FzRG91YmxlPXB5dGhvbjMyLlB5TG9uZ19Bc0RvdWJsZQotICBQeUxvbmdfQXNMb25nPXB5dGhvbjMyLlB5TG9uZ19Bc0xvbmcKLSAgUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjMyLlB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdwotICBQeUxvbmdfQXNMb25nTG9uZz1weXRob24zMi5QeUxvbmdfQXNMb25nTG9uZwotICBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjMyLlB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cKLSAgUHlMb25nX0FzU2l6ZV90PXB5dGhvbjMyLlB5TG9uZ19Bc1NpemVfdAotICBQeUxvbmdfQXNTc2l6ZV90PXB5dGhvbjMyLlB5TG9uZ19Bc1NzaXplX3QKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nPXB5dGhvbjMyLlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZwotICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nPXB5dGhvbjMyLlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2s9cHl0aG9uMzIuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaz1weXRob24zMi5QeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrCi0gIFB5TG9uZ19Bc1ZvaWRQdHI9cHl0aG9uMzIuUHlMb25nX0FzVm9pZFB0cgotICBQeUxvbmdfRnJvbURvdWJsZT1weXRob24zMi5QeUxvbmdfRnJvbURvdWJsZQotICBQeUxvbmdfRnJvbUxvbmc9cHl0aG9uMzIuUHlMb25nX0Zyb21Mb25nCi0gIFB5TG9uZ19Gcm9tTG9uZ0xvbmc9cHl0aG9uMzIuUHlMb25nX0Zyb21Mb25nTG9uZwotICBQeUxvbmdfRnJvbVNpemVfdD1weXRob24zMi5QeUxvbmdfRnJvbVNpemVfdAotICBQeUxvbmdfRnJvbVNzaXplX3Q9cHl0aG9uMzIuUHlMb25nX0Zyb21Tc2l6ZV90Ci0gIFB5TG9uZ19Gcm9tU3RyaW5nPXB5dGhvbjMyLlB5TG9uZ19Gcm9tU3RyaW5nCi0gIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nPXB5dGhvbjMyLlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nCi0gIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZz1weXRob24zMi5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcKLSAgUHlMb25nX0Zyb21Wb2lkUHRyPXB5dGhvbjMyLlB5TG9uZ19Gcm9tVm9pZFB0cgotICBQeUxvbmdfR2V0SW5mbz1weXRob24zMi5QeUxvbmdfR2V0SW5mbwotICBQeUxvbmdfVHlwZT1weXRob24zMi5QeUxvbmdfVHlwZSBEQVRBCi0gIFB5TWFwX1R5cGU9cHl0aG9uMzIuUHlNYXBfVHlwZSBEQVRBCi0gIFB5TWFwcGluZ19DaGVjaz1weXRob24zMi5QeU1hcHBpbmdfQ2hlY2sKLSAgUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmc9cHl0aG9uMzIuUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcKLSAgUHlNYXBwaW5nX0hhc0tleT1weXRob24zMi5QeU1hcHBpbmdfSGFzS2V5Ci0gIFB5TWFwcGluZ19IYXNLZXlTdHJpbmc9cHl0aG9uMzIuUHlNYXBwaW5nX0hhc0tleVN0cmluZwotICBQeU1hcHBpbmdfSXRlbXM9cHl0aG9uMzIuUHlNYXBwaW5nX0l0ZW1zCi0gIFB5TWFwcGluZ19LZXlzPXB5dGhvbjMyLlB5TWFwcGluZ19LZXlzCi0gIFB5TWFwcGluZ19MZW5ndGg9cHl0aG9uMzIuUHlNYXBwaW5nX0xlbmd0aAotICBQeU1hcHBpbmdfU2V0SXRlbVN0cmluZz1weXRob24zMi5QeU1hcHBpbmdfU2V0SXRlbVN0cmluZwotICBQeU1hcHBpbmdfU2l6ZT1weXRob24zMi5QeU1hcHBpbmdfU2l6ZQotICBQeU1hcHBpbmdfVmFsdWVzPXB5dGhvbjMyLlB5TWFwcGluZ19WYWx1ZXMKLSAgUHlNZW1fRnJlZT1weXRob24zMi5QeU1lbV9GcmVlCi0gIFB5TWVtX01hbGxvYz1weXRob24zMi5QeU1lbV9NYWxsb2MKLSAgUHlNZW1fUmVhbGxvYz1weXRob24zMi5QeU1lbV9SZWFsbG9jCi0gIFB5TWVtYmVyRGVzY3JfVHlwZT1weXRob24zMi5QeU1lbWJlckRlc2NyX1R5cGUgREFUQQotICBQeU1lbW9yeVZpZXdfRnJvbU9iamVjdD1weXRob24zMi5QeU1lbW9yeVZpZXdfRnJvbU9iamVjdAotICBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cz1weXRob24zMi5QeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cwotICBQeU1lbW9yeVZpZXdfVHlwZT1weXRob24zMi5QeU1lbW9yeVZpZXdfVHlwZSBEQVRBCi0gIFB5TWV0aG9kRGVzY3JfVHlwZT1weXRob24zMi5QeU1ldGhvZERlc2NyX1R5cGUgREFUQQotICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudD1weXRob24zMi5QeU1vZHVsZV9BZGRJbnRDb25zdGFudAotICBQeU1vZHVsZV9BZGRPYmplY3Q9cHl0aG9uMzIuUHlNb2R1bGVfQWRkT2JqZWN0Ci0gIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50PXB5dGhvbjMyLlB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50Ci0gIFB5TW9kdWxlX0NyZWF0ZTI9cHl0aG9uMzIuUHlNb2R1bGVfQ3JlYXRlMgotICBQeU1vZHVsZV9HZXREZWY9cHl0aG9uMzIuUHlNb2R1bGVfR2V0RGVmCi0gIFB5TW9kdWxlX0dldERpY3Q9cHl0aG9uMzIuUHlNb2R1bGVfR2V0RGljdAotICBQeU1vZHVsZV9HZXRGaWxlbmFtZT1weXRob24zMi5QeU1vZHVsZV9HZXRGaWxlbmFtZQotICBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdD1weXRob24zMi5QeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdAotICBQeU1vZHVsZV9HZXROYW1lPXB5dGhvbjMyLlB5TW9kdWxlX0dldE5hbWUKLSAgUHlNb2R1bGVfR2V0U3RhdGU9cHl0aG9uMzIuUHlNb2R1bGVfR2V0U3RhdGUKLSAgUHlNb2R1bGVfTmV3PXB5dGhvbjMyLlB5TW9kdWxlX05ldwotICBQeU1vZHVsZV9UeXBlPXB5dGhvbjMyLlB5TW9kdWxlX1R5cGUgREFUQQotICBQeU51bGxJbXBvcnRlcl9UeXBlPXB5dGhvbjMyLlB5TnVsbEltcG9ydGVyX1R5cGUgREFUQQotICBQeU51bWJlcl9BYnNvbHV0ZT1weXRob24zMi5QeU51bWJlcl9BYnNvbHV0ZQotICBQeU51bWJlcl9BZGQ9cHl0aG9uMzIuUHlOdW1iZXJfQWRkCi0gIFB5TnVtYmVyX0FuZD1weXRob24zMi5QeU51bWJlcl9BbmQKLSAgUHlOdW1iZXJfQXNTc2l6ZV90PXB5dGhvbjMyLlB5TnVtYmVyX0FzU3NpemVfdAotICBQeU51bWJlcl9DaGVjaz1weXRob24zMi5QeU51bWJlcl9DaGVjawotICBQeU51bWJlcl9EaXZtb2Q9cHl0aG9uMzIuUHlOdW1iZXJfRGl2bW9kCi0gIFB5TnVtYmVyX0Zsb2F0PXB5dGhvbjMyLlB5TnVtYmVyX0Zsb2F0Ci0gIFB5TnVtYmVyX0Zsb29yRGl2aWRlPXB5dGhvbjMyLlB5TnVtYmVyX0Zsb29yRGl2aWRlCi0gIFB5TnVtYmVyX0luUGxhY2VBZGQ9cHl0aG9uMzIuUHlOdW1iZXJfSW5QbGFjZUFkZAotICBQeU51bWJlcl9JblBsYWNlQW5kPXB5dGhvbjMyLlB5TnVtYmVyX0luUGxhY2VBbmQKLSAgUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlPXB5dGhvbjMyLlB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZQotICBQeU51bWJlcl9JblBsYWNlTHNoaWZ0PXB5dGhvbjMyLlB5TnVtYmVyX0luUGxhY2VMc2hpZnQKLSAgUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5PXB5dGhvbjMyLlB5TnVtYmVyX0luUGxhY2VNdWx0aXBseQotICBQeU51bWJlcl9JblBsYWNlT3I9cHl0aG9uMzIuUHlOdW1iZXJfSW5QbGFjZU9yCi0gIFB5TnVtYmVyX0luUGxhY2VQb3dlcj1weXRob24zMi5QeU51bWJlcl9JblBsYWNlUG93ZXIKLSAgUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcj1weXRob24zMi5QeU51bWJlcl9JblBsYWNlUmVtYWluZGVyCi0gIFB5TnVtYmVyX0luUGxhY2VSc2hpZnQ9cHl0aG9uMzIuUHlOdW1iZXJfSW5QbGFjZVJzaGlmdAotICBQeU51bWJlcl9JblBsYWNlU3VidHJhY3Q9cHl0aG9uMzIuUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0Ci0gIFB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlPXB5dGhvbjMyLlB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlCi0gIFB5TnVtYmVyX0luUGxhY2VYb3I9cHl0aG9uMzIuUHlOdW1iZXJfSW5QbGFjZVhvcgotICBQeU51bWJlcl9JbmRleD1weXRob24zMi5QeU51bWJlcl9JbmRleAotICBQeU51bWJlcl9JbnZlcnQ9cHl0aG9uMzIuUHlOdW1iZXJfSW52ZXJ0Ci0gIFB5TnVtYmVyX0xvbmc9cHl0aG9uMzIuUHlOdW1iZXJfTG9uZwotICBQeU51bWJlcl9Mc2hpZnQ9cHl0aG9uMzIuUHlOdW1iZXJfTHNoaWZ0Ci0gIFB5TnVtYmVyX011bHRpcGx5PXB5dGhvbjMyLlB5TnVtYmVyX011bHRpcGx5Ci0gIFB5TnVtYmVyX05lZ2F0aXZlPXB5dGhvbjMyLlB5TnVtYmVyX05lZ2F0aXZlCi0gIFB5TnVtYmVyX09yPXB5dGhvbjMyLlB5TnVtYmVyX09yCi0gIFB5TnVtYmVyX1Bvc2l0aXZlPXB5dGhvbjMyLlB5TnVtYmVyX1Bvc2l0aXZlCi0gIFB5TnVtYmVyX1Bvd2VyPXB5dGhvbjMyLlB5TnVtYmVyX1Bvd2VyCi0gIFB5TnVtYmVyX1JlbWFpbmRlcj1weXRob24zMi5QeU51bWJlcl9SZW1haW5kZXIKLSAgUHlOdW1iZXJfUnNoaWZ0PXB5dGhvbjMyLlB5TnVtYmVyX1JzaGlmdAotICBQeU51bWJlcl9TdWJ0cmFjdD1weXRob24zMi5QeU51bWJlcl9TdWJ0cmFjdAotICBQeU51bWJlcl9Ub0Jhc2U9cHl0aG9uMzIuUHlOdW1iZXJfVG9CYXNlCi0gIFB5TnVtYmVyX1RydWVEaXZpZGU9cHl0aG9uMzIuUHlOdW1iZXJfVHJ1ZURpdmlkZQotICBQeU51bWJlcl9Yb3I9cHl0aG9uMzIuUHlOdW1iZXJfWG9yCi0gIFB5T1NfQWZ0ZXJGb3JrPXB5dGhvbjMyLlB5T1NfQWZ0ZXJGb3JrCi0gIFB5T1NfSW5pdEludGVycnVwdHM9cHl0aG9uMzIuUHlPU19Jbml0SW50ZXJydXB0cwotICBQeU9TX0lucHV0SG9vaz1weXRob24zMi5QeU9TX0lucHV0SG9vayBEQVRBCi0gIFB5T1NfSW50ZXJydXB0T2NjdXJyZWQ9cHl0aG9uMzIuUHlPU19JbnRlcnJ1cHRPY2N1cnJlZAotICBQeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyPXB5dGhvbjMyLlB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXIgREFUQQotICBQeU9TX2RvdWJsZV90b19zdHJpbmc9cHl0aG9uMzIuUHlPU19kb3VibGVfdG9fc3RyaW5nCi0gIFB5T1NfZ2V0c2lnPXB5dGhvbjMyLlB5T1NfZ2V0c2lnCi0gIFB5T1NfbXlzdHJpY21wPXB5dGhvbjMyLlB5T1NfbXlzdHJpY21wCi0gIFB5T1NfbXlzdHJuaWNtcD1weXRob24zMi5QeU9TX215c3RybmljbXAKLSAgUHlPU19zZXRzaWc9cHl0aG9uMzIuUHlPU19zZXRzaWcKLSAgUHlPU19zbnByaW50Zj1weXRob24zMi5QeU9TX3NucHJpbnRmCi0gIFB5T1Nfc3RyaW5nX3RvX2RvdWJsZT1weXRob24zMi5QeU9TX3N0cmluZ190b19kb3VibGUKLSAgUHlPU19zdHJ0b2w9cHl0aG9uMzIuUHlPU19zdHJ0b2wKLSAgUHlPU19zdHJ0b3VsPXB5dGhvbjMyLlB5T1Nfc3RydG91bAotICBQeU9TX3ZzbnByaW50Zj1weXRob24zMi5QeU9TX3ZzbnByaW50ZgotICBQeU9iamVjdF9BU0NJST1weXRob24zMi5QeU9iamVjdF9BU0NJSQotICBQeU9iamVjdF9Bc0NoYXJCdWZmZXI9cHl0aG9uMzIuUHlPYmplY3RfQXNDaGFyQnVmZmVyCi0gIFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3I9cHl0aG9uMzIuUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcgotICBQeU9iamVjdF9Bc1JlYWRCdWZmZXI9cHl0aG9uMzIuUHlPYmplY3RfQXNSZWFkQnVmZmVyCi0gIFB5T2JqZWN0X0FzV3JpdGVCdWZmZXI9cHl0aG9uMzIuUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcgotICBQeU9iamVjdF9CeXRlcz1weXRob24zMi5QeU9iamVjdF9CeXRlcwotICBQeU9iamVjdF9DYWxsPXB5dGhvbjMyLlB5T2JqZWN0X0NhbGwKLSAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uPXB5dGhvbjMyLlB5T2JqZWN0X0NhbGxGdW5jdGlvbgotICBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzPXB5dGhvbjMyLlB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MKLSAgUHlPYmplY3RfQ2FsbE1ldGhvZD1weXRob24zMi5QeU9iamVjdF9DYWxsTWV0aG9kCi0gIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzPXB5dGhvbjMyLlB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzCi0gIFB5T2JqZWN0X0NhbGxPYmplY3Q9cHl0aG9uMzIuUHlPYmplY3RfQ2FsbE9iamVjdAotICBQeU9iamVjdF9DaGVja1JlYWRCdWZmZXI9cHl0aG9uMzIuUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyCi0gIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnM9cHl0aG9uMzIuUHlPYmplY3RfQ2xlYXJXZWFrUmVmcwotICBQeU9iamVjdF9EZWxJdGVtPXB5dGhvbjMyLlB5T2JqZWN0X0RlbEl0ZW0KLSAgUHlPYmplY3RfRGVsSXRlbVN0cmluZz1weXRob24zMi5QeU9iamVjdF9EZWxJdGVtU3RyaW5nCi0gIFB5T2JqZWN0X0Rpcj1weXRob24zMi5QeU9iamVjdF9EaXIKLSAgUHlPYmplY3RfRm9ybWF0PXB5dGhvbjMyLlB5T2JqZWN0X0Zvcm1hdAotICBQeU9iamVjdF9GcmVlPXB5dGhvbjMyLlB5T2JqZWN0X0ZyZWUKLSAgUHlPYmplY3RfR0NfRGVsPXB5dGhvbjMyLlB5T2JqZWN0X0dDX0RlbAotICBQeU9iamVjdF9HQ19UcmFjaz1weXRob24zMi5QeU9iamVjdF9HQ19UcmFjawotICBQeU9iamVjdF9HQ19VblRyYWNrPXB5dGhvbjMyLlB5T2JqZWN0X0dDX1VuVHJhY2sKLSAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHI9cHl0aG9uMzIuUHlPYmplY3RfR2VuZXJpY0dldEF0dHIKLSAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHI9cHl0aG9uMzIuUHlPYmplY3RfR2VuZXJpY1NldEF0dHIKLSAgUHlPYmplY3RfR2V0QXR0cj1weXRob24zMi5QeU9iamVjdF9HZXRBdHRyCi0gIFB5T2JqZWN0X0dldEF0dHJTdHJpbmc9cHl0aG9uMzIuUHlPYmplY3RfR2V0QXR0clN0cmluZwotICBQeU9iamVjdF9HZXRJdGVtPXB5dGhvbjMyLlB5T2JqZWN0X0dldEl0ZW0KLSAgUHlPYmplY3RfR2V0SXRlcj1weXRob24zMi5QeU9iamVjdF9HZXRJdGVyCi0gIFB5T2JqZWN0X0hhc0F0dHI9cHl0aG9uMzIuUHlPYmplY3RfSGFzQXR0cgotICBQeU9iamVjdF9IYXNBdHRyU3RyaW5nPXB5dGhvbjMyLlB5T2JqZWN0X0hhc0F0dHJTdHJpbmcKLSAgUHlPYmplY3RfSGFzaD1weXRob24zMi5QeU9iamVjdF9IYXNoCi0gIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZD1weXRob24zMi5QeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQKLSAgUHlPYmplY3RfSW5pdD1weXRob24zMi5QeU9iamVjdF9Jbml0Ci0gIFB5T2JqZWN0X0luaXRWYXI9cHl0aG9uMzIuUHlPYmplY3RfSW5pdFZhcgotICBQeU9iamVjdF9Jc0luc3RhbmNlPXB5dGhvbjMyLlB5T2JqZWN0X0lzSW5zdGFuY2UKLSAgUHlPYmplY3RfSXNTdWJjbGFzcz1weXRob24zMi5QeU9iamVjdF9Jc1N1YmNsYXNzCi0gIFB5T2JqZWN0X0lzVHJ1ZT1weXRob24zMi5QeU9iamVjdF9Jc1RydWUKLSAgUHlPYmplY3RfTGVuZ3RoPXB5dGhvbjMyLlB5T2JqZWN0X0xlbmd0aAotICBQeU9iamVjdF9NYWxsb2M9cHl0aG9uMzIuUHlPYmplY3RfTWFsbG9jCi0gIFB5T2JqZWN0X05vdD1weXRob24zMi5QeU9iamVjdF9Ob3QKLSAgUHlPYmplY3RfUmVhbGxvYz1weXRob24zMi5QeU9iamVjdF9SZWFsbG9jCi0gIFB5T2JqZWN0X1JlcHI9cHl0aG9uMzIuUHlPYmplY3RfUmVwcgotICBQeU9iamVjdF9SaWNoQ29tcGFyZT1weXRob24zMi5QeU9iamVjdF9SaWNoQ29tcGFyZQotICBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2w9cHl0aG9uMzIuUHlPYmplY3RfUmljaENvbXBhcmVCb29sCi0gIFB5T2JqZWN0X1NlbGZJdGVyPXB5dGhvbjMyLlB5T2JqZWN0X1NlbGZJdGVyCi0gIFB5T2JqZWN0X1NldEF0dHI9cHl0aG9uMzIuUHlPYmplY3RfU2V0QXR0cgotICBQeU9iamVjdF9TZXRBdHRyU3RyaW5nPXB5dGhvbjMyLlB5T2JqZWN0X1NldEF0dHJTdHJpbmcKLSAgUHlPYmplY3RfU2V0SXRlbT1weXRob24zMi5QeU9iamVjdF9TZXRJdGVtCi0gIFB5T2JqZWN0X1NpemU9cHl0aG9uMzIuUHlPYmplY3RfU2l6ZQotICBQeU9iamVjdF9TdHI9cHl0aG9uMzIuUHlPYmplY3RfU3RyCi0gIFB5T2JqZWN0X1R5cGU9cHl0aG9uMzIuUHlPYmplY3RfVHlwZSBEQVRBCi0gIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzPXB5dGhvbjMyLlB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzCi0gIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3M9cHl0aG9uMzIuUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncwotICBQeVByb3BlcnR5X1R5cGU9cHl0aG9uMzIuUHlQcm9wZXJ0eV9UeXBlIERBVEEKLSAgUHlSYW5nZUl0ZXJfVHlwZT1weXRob24zMi5QeVJhbmdlSXRlcl9UeXBlIERBVEEKLSAgUHlSYW5nZV9UeXBlPXB5dGhvbjMyLlB5UmFuZ2VfVHlwZSBEQVRBCi0gIFB5UmV2ZXJzZWRfVHlwZT1weXRob24zMi5QeVJldmVyc2VkX1R5cGUgREFUQQotICBQeVNlcUl0ZXJfTmV3PXB5dGhvbjMyLlB5U2VxSXRlcl9OZXcKLSAgUHlTZXFJdGVyX1R5cGU9cHl0aG9uMzIuUHlTZXFJdGVyX1R5cGUgREFUQQotICBQeVNlcXVlbmNlX0NoZWNrPXB5dGhvbjMyLlB5U2VxdWVuY2VfQ2hlY2sKLSAgUHlTZXF1ZW5jZV9Db25jYXQ9cHl0aG9uMzIuUHlTZXF1ZW5jZV9Db25jYXQKLSAgUHlTZXF1ZW5jZV9Db250YWlucz1weXRob24zMi5QeVNlcXVlbmNlX0NvbnRhaW5zCi0gIFB5U2VxdWVuY2VfQ291bnQ9cHl0aG9uMzIuUHlTZXF1ZW5jZV9Db3VudAotICBQeVNlcXVlbmNlX0RlbEl0ZW09cHl0aG9uMzIuUHlTZXF1ZW5jZV9EZWxJdGVtCi0gIFB5U2VxdWVuY2VfRGVsU2xpY2U9cHl0aG9uMzIuUHlTZXF1ZW5jZV9EZWxTbGljZQotICBQeVNlcXVlbmNlX0Zhc3Q9cHl0aG9uMzIuUHlTZXF1ZW5jZV9GYXN0Ci0gIFB5U2VxdWVuY2VfR2V0SXRlbT1weXRob24zMi5QeVNlcXVlbmNlX0dldEl0ZW0KLSAgUHlTZXF1ZW5jZV9HZXRTbGljZT1weXRob24zMi5QeVNlcXVlbmNlX0dldFNsaWNlCi0gIFB5U2VxdWVuY2VfSW49cHl0aG9uMzIuUHlTZXF1ZW5jZV9JbgotICBQeVNlcXVlbmNlX0luUGxhY2VDb25jYXQ9cHl0aG9uMzIuUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0Ci0gIFB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdD1weXRob24zMi5QeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQKLSAgUHlTZXF1ZW5jZV9JbmRleD1weXRob24zMi5QeVNlcXVlbmNlX0luZGV4Ci0gIFB5U2VxdWVuY2VfTGVuZ3RoPXB5dGhvbjMyLlB5U2VxdWVuY2VfTGVuZ3RoCi0gIFB5U2VxdWVuY2VfTGlzdD1weXRob24zMi5QeVNlcXVlbmNlX0xpc3QKLSAgUHlTZXF1ZW5jZV9SZXBlYXQ9cHl0aG9uMzIuUHlTZXF1ZW5jZV9SZXBlYXQKLSAgUHlTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjMyLlB5U2VxdWVuY2VfU2V0SXRlbQotICBQeVNlcXVlbmNlX1NldFNsaWNlPXB5dGhvbjMyLlB5U2VxdWVuY2VfU2V0U2xpY2UKLSAgUHlTZXF1ZW5jZV9TaXplPXB5dGhvbjMyLlB5U2VxdWVuY2VfU2l6ZQotICBQeVNlcXVlbmNlX1R1cGxlPXB5dGhvbjMyLlB5U2VxdWVuY2VfVHVwbGUKLSAgUHlTZXRJdGVyX1R5cGU9cHl0aG9uMzIuUHlTZXRJdGVyX1R5cGUgREFUQQotICBQeVNldF9BZGQ9cHl0aG9uMzIuUHlTZXRfQWRkCi0gIFB5U2V0X0NsZWFyPXB5dGhvbjMyLlB5U2V0X0NsZWFyCi0gIFB5U2V0X0NvbnRhaW5zPXB5dGhvbjMyLlB5U2V0X0NvbnRhaW5zCi0gIFB5U2V0X0Rpc2NhcmQ9cHl0aG9uMzIuUHlTZXRfRGlzY2FyZAotICBQeVNldF9OZXc9cHl0aG9uMzIuUHlTZXRfTmV3Ci0gIFB5U2V0X1BvcD1weXRob24zMi5QeVNldF9Qb3AKLSAgUHlTZXRfU2l6ZT1weXRob24zMi5QeVNldF9TaXplCi0gIFB5U2V0X1R5cGU9cHl0aG9uMzIuUHlTZXRfVHlwZSBEQVRBCi0gIFB5U2xpY2VfR2V0SW5kaWNlcz1weXRob24zMi5QeVNsaWNlX0dldEluZGljZXMKLSAgUHlTbGljZV9HZXRJbmRpY2VzRXg9cHl0aG9uMzIuUHlTbGljZV9HZXRJbmRpY2VzRXgKLSAgUHlTbGljZV9OZXc9cHl0aG9uMzIuUHlTbGljZV9OZXcKLSAgUHlTbGljZV9UeXBlPXB5dGhvbjMyLlB5U2xpY2VfVHlwZSBEQVRBCi0gIFB5U29ydFdyYXBwZXJfVHlwZT1weXRob24zMi5QeVNvcnRXcmFwcGVyX1R5cGUgREFUQQotICBQeVN0YXRlX0ZpbmRNb2R1bGU9cHl0aG9uMzIuUHlTdGF0ZV9GaW5kTW9kdWxlCi0gIFB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbT1weXRob24zMi5QeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW0KLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXc9cHl0aG9uMzIuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcKLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlPXB5dGhvbjMyLlB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZQotICBQeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzIuUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtCi0gIFB5U3VwZXJfVHlwZT1weXRob24zMi5QeVN1cGVyX1R5cGUgREFUQQotICBQeVN5c19BZGRXYXJuT3B0aW9uPXB5dGhvbjMyLlB5U3lzX0FkZFdhcm5PcHRpb24KLSAgUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGU9cHl0aG9uMzIuUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUKLSAgUHlTeXNfRm9ybWF0U3RkZXJyPXB5dGhvbjMyLlB5U3lzX0Zvcm1hdFN0ZGVycgotICBQeVN5c19Gb3JtYXRTdGRvdXQ9cHl0aG9uMzIuUHlTeXNfRm9ybWF0U3Rkb3V0Ci0gIFB5U3lzX0dldE9iamVjdD1weXRob24zMi5QeVN5c19HZXRPYmplY3QKLSAgUHlTeXNfSGFzV2Fybk9wdGlvbnM9cHl0aG9uMzIuUHlTeXNfSGFzV2Fybk9wdGlvbnMKLSAgUHlTeXNfUmVzZXRXYXJuT3B0aW9ucz1weXRob24zMi5QeVN5c19SZXNldFdhcm5PcHRpb25zCi0gIFB5U3lzX1NldEFyZ3Y9cHl0aG9uMzIuUHlTeXNfU2V0QXJndgotICBQeVN5c19TZXRBcmd2RXg9cHl0aG9uMzIuUHlTeXNfU2V0QXJndkV4Ci0gIFB5U3lzX1NldE9iamVjdD1weXRob24zMi5QeVN5c19TZXRPYmplY3QKLSAgUHlTeXNfU2V0UGF0aD1weXRob24zMi5QeVN5c19TZXRQYXRoCi0gIFB5U3lzX1dyaXRlU3RkZXJyPXB5dGhvbjMyLlB5U3lzX1dyaXRlU3RkZXJyCi0gIFB5U3lzX1dyaXRlU3Rkb3V0PXB5dGhvbjMyLlB5U3lzX1dyaXRlU3Rkb3V0Ci0gIFB5VGhyZWFkU3RhdGVfQ2xlYXI9cHl0aG9uMzIuUHlUaHJlYWRTdGF0ZV9DbGVhcgotICBQeVRocmVhZFN0YXRlX0RlbGV0ZT1weXRob24zMi5QeVRocmVhZFN0YXRlX0RlbGV0ZQotICBQeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQ9cHl0aG9uMzIuUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50Ci0gIFB5VGhyZWFkU3RhdGVfR2V0PXB5dGhvbjMyLlB5VGhyZWFkU3RhdGVfR2V0Ci0gIFB5VGhyZWFkU3RhdGVfR2V0RGljdD1weXRob24zMi5QeVRocmVhZFN0YXRlX0dldERpY3QKLSAgUHlUaHJlYWRTdGF0ZV9OZXc9cHl0aG9uMzIuUHlUaHJlYWRTdGF0ZV9OZXcKLSAgUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4Yz1weXRob24zMi5QeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjCi0gIFB5VGhyZWFkU3RhdGVfU3dhcD1weXRob24zMi5QeVRocmVhZFN0YXRlX1N3YXAKLSAgUHlUcmFjZUJhY2tfSGVyZT1weXRob24zMi5QeVRyYWNlQmFja19IZXJlCi0gIFB5VHJhY2VCYWNrX1ByaW50PXB5dGhvbjMyLlB5VHJhY2VCYWNrX1ByaW50Ci0gIFB5VHJhY2VCYWNrX1R5cGU9cHl0aG9uMzIuUHlUcmFjZUJhY2tfVHlwZSBEQVRBCi0gIFB5VHVwbGVJdGVyX1R5cGU9cHl0aG9uMzIuUHlUdXBsZUl0ZXJfVHlwZSBEQVRBCi0gIFB5VHVwbGVfQ2xlYXJGcmVlTGlzdD1weXRob24zMi5QeVR1cGxlX0NsZWFyRnJlZUxpc3QKLSAgUHlUdXBsZV9HZXRJdGVtPXB5dGhvbjMyLlB5VHVwbGVfR2V0SXRlbQotICBQeVR1cGxlX0dldFNsaWNlPXB5dGhvbjMyLlB5VHVwbGVfR2V0U2xpY2UKLSAgUHlUdXBsZV9OZXc9cHl0aG9uMzIuUHlUdXBsZV9OZXcKLSAgUHlUdXBsZV9QYWNrPXB5dGhvbjMyLlB5VHVwbGVfUGFjawotICBQeVR1cGxlX1NldEl0ZW09cHl0aG9uMzIuUHlUdXBsZV9TZXRJdGVtCi0gIFB5VHVwbGVfU2l6ZT1weXRob24zMi5QeVR1cGxlX1NpemUKLSAgUHlUdXBsZV9UeXBlPXB5dGhvbjMyLlB5VHVwbGVfVHlwZSBEQVRBCi0gIFB5VHlwZV9DbGVhckNhY2hlPXB5dGhvbjMyLlB5VHlwZV9DbGVhckNhY2hlCi0gIFB5VHlwZV9Gcm9tU3BlYz1weXRob24zMi5QeVR5cGVfRnJvbVNwZWMKLSAgUHlUeXBlX0dlbmVyaWNBbGxvYz1weXRob24zMi5QeVR5cGVfR2VuZXJpY0FsbG9jCi0gIFB5VHlwZV9HZW5lcmljTmV3PXB5dGhvbjMyLlB5VHlwZV9HZW5lcmljTmV3Ci0gIFB5VHlwZV9HZXRGbGFncz1weXRob24zMi5QeVR5cGVfR2V0RmxhZ3MKLSAgUHlUeXBlX0lzU3VidHlwZT1weXRob24zMi5QeVR5cGVfSXNTdWJ0eXBlCi0gIFB5VHlwZV9Nb2RpZmllZD1weXRob24zMi5QeVR5cGVfTW9kaWZpZWQKLSAgUHlUeXBlX1JlYWR5PXB5dGhvbjMyLlB5VHlwZV9SZWFkeQotICBQeVR5cGVfVHlwZT1weXRob24zMi5QeVR5cGVfVHlwZSBEQVRBCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZT1weXRob24zMi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGUKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzIuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2RpbmcKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjMyLlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzIuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0Ci0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zMi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb24KLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzIuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjMyLlB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzIuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uCi0gIFB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjMyLlB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0Ci0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjMyLlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZD1weXRob24zMi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjMyLlB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzIuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjMyLlB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0Ci0gIFB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZD1weXRob24zMi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjMyLlB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbgotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zMi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydAotICBQeVVuaWNvZGVJdGVyX1R5cGU9cHl0aG9uMzIuUHlVbmljb2RlSXRlcl9UeXBlIERBVEEKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kPXB5dGhvbjMyLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzIuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0Ci0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbj1weXRob24zMi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb24KLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzIuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kPXB5dGhvbjMyLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzIuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0PXB5dGhvbjMyLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0Ci0gIFB5VW5pY29kZV9BcHBlbmQ9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9BcHBlbmQKLSAgUHlVbmljb2RlX0FwcGVuZEFuZERlbD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0FwcGVuZEFuZERlbAotICBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZz1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0FzQVNDSUlTdHJpbmcKLSAgUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZz1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0FzQ2hhcm1hcFN0cmluZwotICBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXNEZWNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXNEZWNvZGVkVW5pY29kZQotICBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXNFbmNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmc9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Bc0VuY29kZWRTdHJpbmcKLSAgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGU9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Bc0VuY29kZWRVbmljb2RlCi0gIFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZz1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0FzTGF0aW4xU3RyaW5nCi0gIFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKLSAgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmc9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Bc1VURjE2U3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXNVVEYzMlN0cmluZwotICBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXNVVEY4U3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcKLSAgUHlVbmljb2RlX0FzV2lkZUNoYXI9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Bc1dpZGVDaGFyCi0gIFB5VW5pY29kZV9DbGVhckZyZWVsaXN0PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQ2xlYXJGcmVlbGlzdAotICBQeVVuaWNvZGVfQ29tcGFyZT1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0NvbXBhcmUKLSAgUHlVbmljb2RlX0NvbmNhdD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0NvbmNhdAotICBQeVVuaWNvZGVfQ29udGFpbnM9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Db250YWlucwotICBQeVVuaWNvZGVfQ291bnQ9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Db3VudAotICBQeVVuaWNvZGVfRGVjb2RlPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlCi0gIFB5VW5pY29kZV9EZWNvZGVBU0NJST1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0RlY29kZUFTQ0lJCi0gIFB5VW5pY29kZV9EZWNvZGVDaGFybWFwPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlQ2hhcm1hcAotICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlRlNEZWZhdWx0Ci0gIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZQotICBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlTGF0aW4xCi0gIFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlUmF3VW5pY29kZUVzY2FwZQotICBQeVVuaWNvZGVfRGVjb2RlVVRGMTY9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9EZWNvZGVVVEYxNgotICBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0RlY29kZVVURjE2U3RhdGVmdWwKLSAgUHlVbmljb2RlX0RlY29kZVVURjMyPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMzIKLSAgUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWw9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9EZWNvZGVVVEYzMlN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVVEY4PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGOAotICBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGOFN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlVW5pY29kZUVzY2FwZQotICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXI9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9GU0NvbnZlcnRlcgotICBQeVVuaWNvZGVfRlNEZWNvZGVyPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRlNEZWNvZGVyCi0gIFB5VW5pY29kZV9GaW5kPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRmluZAotICBQeVVuaWNvZGVfRm9ybWF0PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRm9ybWF0Ci0gIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0Zyb21FbmNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Gcm9tRm9ybWF0PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRnJvbUZvcm1hdAotICBQeVVuaWNvZGVfRnJvbUZvcm1hdFY9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Gcm9tRm9ybWF0VgotICBQeVVuaWNvZGVfRnJvbU9iamVjdD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0Zyb21PYmplY3QKLSAgUHlVbmljb2RlX0Zyb21PcmRpbmFsPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRnJvbU9yZGluYWwKLSAgUHlVbmljb2RlX0Zyb21TdHJpbmc9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Gcm9tU3RyaW5nCi0gIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0Zyb21TdHJpbmdBbmRTaXplCi0gIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXI9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Gcm9tV2lkZUNoYXIKLSAgUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZz1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0dldERlZmF1bHRFbmNvZGluZwotICBQeVVuaWNvZGVfR2V0U2l6ZT1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0dldFNpemUKLSAgUHlVbmljb2RlX0lzSWRlbnRpZmllcj1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0lzSWRlbnRpZmllcgotICBQeVVuaWNvZGVfSm9pbj1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0pvaW4KLSAgUHlVbmljb2RlX1BhcnRpdGlvbj1weXRob24zMi5QeVVuaWNvZGVVQ1MyX1BhcnRpdGlvbgotICBQeVVuaWNvZGVfUlBhcnRpdGlvbj1weXRob24zMi5QeVVuaWNvZGVVQ1MyX1JQYXJ0aXRpb24KLSAgUHlVbmljb2RlX1JTcGxpdD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX1JTcGxpdAotICBQeVVuaWNvZGVfUmVwbGFjZT1weXRob24zMi5QeVVuaWNvZGVVQ1MyX1JlcGxhY2UKLSAgUHlVbmljb2RlX1Jlc2l6ZT1weXRob24zMi5QeVVuaWNvZGVVQ1MyX1Jlc2l6ZQotICBQeVVuaWNvZGVfUmljaENvbXBhcmU9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9SaWNoQ29tcGFyZQotICBQeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfU2V0RGVmYXVsdEVuY29kaW5nCi0gIFB5VW5pY29kZV9TcGxpdD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX1NwbGl0Ci0gIFB5VW5pY29kZV9TcGxpdGxpbmVzPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfU3BsaXRsaW5lcwotICBQeVVuaWNvZGVfVGFpbG1hdGNoPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfVGFpbG1hdGNoCi0gIFB5VW5pY29kZV9UcmFuc2xhdGU9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9UcmFuc2xhdGUKLSAgUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXA9cHl0aG9uMzIuUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAKLSAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmc9cHl0aG9uMzIuUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcKLSAgUHlVbmljb2RlX0RlY29kZVVURjc9cHl0aG9uMzIuUHlVbmljb2RlX0RlY29kZVVURjcKLSAgUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bD1weXRob24zMi5QeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsCi0gIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQ9cHl0aG9uMzIuUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdAotICBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZz1weXRob24zMi5QeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZwotICBQeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWw9cHl0aG9uMzIuUHlVbmljb2RlX0ludGVybkltbW9ydGFsCi0gIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlPXB5dGhvbjMyLlB5VW5pY29kZV9JbnRlcm5JblBsYWNlCi0gIFB5VW5pY29kZV9UeXBlPXB5dGhvbjMyLlB5VW5pY29kZV9UeXBlIERBVEEKLSAgUHlXZWFrcmVmX0dldE9iamVjdD1weXRob24zMi5QeVdlYWtyZWZfR2V0T2JqZWN0IERBVEEKLSAgUHlXZWFrcmVmX05ld1Byb3h5PXB5dGhvbjMyLlB5V2Vha3JlZl9OZXdQcm94eQotICBQeVdlYWtyZWZfTmV3UmVmPXB5dGhvbjMyLlB5V2Vha3JlZl9OZXdSZWYKLSAgUHlXcmFwcGVyRGVzY3JfVHlwZT1weXRob24zMi5QeVdyYXBwZXJEZXNjcl9UeXBlIERBVEEKLSAgUHlXcmFwcGVyX05ldz1weXRob24zMi5QeVdyYXBwZXJfTmV3Ci0gIFB5WmlwX1R5cGU9cHl0aG9uMzIuUHlaaXBfVHlwZSBEQVRBCi0gIFB5X0FkZFBlbmRpbmdDYWxsPXB5dGhvbjMyLlB5X0FkZFBlbmRpbmdDYWxsCi0gIFB5X0F0RXhpdD1weXRob24zMi5QeV9BdEV4aXQKLSAgUHlfQnVpbGRWYWx1ZT1weXRob24zMi5QeV9CdWlsZFZhbHVlCi0gIFB5X0NvbXBpbGVTdHJpbmc9cHl0aG9uMzIuUHlfQ29tcGlsZVN0cmluZwotICBQeV9EZWNSZWY9cHl0aG9uMzIuUHlfRGVjUmVmCi0gIFB5X0VuZEludGVycHJldGVyPXB5dGhvbjMyLlB5X0VuZEludGVycHJldGVyCi0gIFB5X0V4aXQ9cHl0aG9uMzIuUHlfRXhpdAotICBQeV9GYXRhbEVycm9yPXB5dGhvbjMyLlB5X0ZhdGFsRXJyb3IKLSAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zMi5QeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKLSAgUHlfRmluYWxpemU9cHl0aG9uMzIuUHlfRmluYWxpemUKLSAgUHlfR2V0QnVpbGRJbmZvPXB5dGhvbjMyLlB5X0dldEJ1aWxkSW5mbwotICBQeV9HZXRDb21waWxlcj1weXRob24zMi5QeV9HZXRDb21waWxlcgotICBQeV9HZXRDb3B5cmlnaHQ9cHl0aG9uMzIuUHlfR2V0Q29weXJpZ2h0Ci0gIFB5X0dldEV4ZWNQcmVmaXg9cHl0aG9uMzIuUHlfR2V0RXhlY1ByZWZpeAotICBQeV9HZXRQYXRoPXB5dGhvbjMyLlB5X0dldFBhdGgKLSAgUHlfR2V0UGxhdGZvcm09cHl0aG9uMzIuUHlfR2V0UGxhdGZvcm0KLSAgUHlfR2V0UHJlZml4PXB5dGhvbjMyLlB5X0dldFByZWZpeAotICBQeV9HZXRQcm9ncmFtRnVsbFBhdGg9cHl0aG9uMzIuUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoCi0gIFB5X0dldFByb2dyYW1OYW1lPXB5dGhvbjMyLlB5X0dldFByb2dyYW1OYW1lCi0gIFB5X0dldFB5dGhvbkhvbWU9cHl0aG9uMzIuUHlfR2V0UHl0aG9uSG9tZQotICBQeV9HZXRSZWN1cnNpb25MaW1pdD1weXRob24zMi5QeV9HZXRSZWN1cnNpb25MaW1pdAotICBQeV9HZXRWZXJzaW9uPXB5dGhvbjMyLlB5X0dldFZlcnNpb24KLSAgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zMi5QeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKLSAgUHlfSW5jUmVmPXB5dGhvbjMyLlB5X0luY1JlZgotICBQeV9Jbml0aWFsaXplPXB5dGhvbjMyLlB5X0luaXRpYWxpemUKLSAgUHlfSW5pdGlhbGl6ZUV4PXB5dGhvbjMyLlB5X0luaXRpYWxpemVFeAotICBQeV9Jc0luaXRpYWxpemVkPXB5dGhvbjMyLlB5X0lzSW5pdGlhbGl6ZWQKLSAgUHlfTWFpbj1weXRob24zMi5QeV9NYWluCi0gIFB5X01ha2VQZW5kaW5nQ2FsbHM9cHl0aG9uMzIuUHlfTWFrZVBlbmRpbmdDYWxscwotICBQeV9OZXdJbnRlcnByZXRlcj1weXRob24zMi5QeV9OZXdJbnRlcnByZXRlcgotICBQeV9SZXByRW50ZXI9cHl0aG9uMzIuUHlfUmVwckVudGVyCi0gIFB5X1JlcHJMZWF2ZT1weXRob24zMi5QeV9SZXByTGVhdmUKLSAgUHlfU2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzIuUHlfU2V0UHJvZ3JhbU5hbWUKLSAgUHlfU2V0UHl0aG9uSG9tZT1weXRob24zMi5QeV9TZXRQeXRob25Ib21lCi0gIFB5X1NldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjMyLlB5X1NldFJlY3Vyc2lvbkxpbWl0Ci0gIFB5X1N5bXRhYmxlU3RyaW5nPXB5dGhvbjMyLlB5X1N5bXRhYmxlU3RyaW5nCi0gIFB5X1ZhQnVpbGRWYWx1ZT1weXRob24zMi5QeV9WYUJ1aWxkVmFsdWUKLSAgX1B5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zMi5fUHlFcnJfQmFkSW50ZXJuYWxDYWxsCi0gIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQ9cHl0aG9uMzIuX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVAotICBfUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVD1weXRob24zMi5fUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVAotICBfUHlPYmplY3RfR0NfTWFsbG9jPXB5dGhvbjMyLl9QeU9iamVjdF9HQ19NYWxsb2MKLSAgX1B5T2JqZWN0X0dDX05ldz1weXRob24zMi5fUHlPYmplY3RfR0NfTmV3Ci0gIF9QeU9iamVjdF9HQ19OZXdWYXI9cHl0aG9uMzIuX1B5T2JqZWN0X0dDX05ld1ZhcgotICBfUHlPYmplY3RfR0NfUmVzaXplPXB5dGhvbjMyLl9QeU9iamVjdF9HQ19SZXNpemUKLSAgX1B5T2JqZWN0X05ldz1weXRob24zMi5fUHlPYmplY3RfTmV3Ci0gIF9QeU9iamVjdF9OZXdWYXI9cHl0aG9uMzIuX1B5T2JqZWN0X05ld1ZhcgotICBfUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzIuX1B5U3RhdGVfQWRkTW9kdWxlCi0gIF9QeVRocmVhZFN0YXRlX0luaXQ9cHl0aG9uMzIuX1B5VGhyZWFkU3RhdGVfSW5pdAotICBfUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYz1weXRob24zMi5fUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYwotICBfUHlUcmFzaF9kZWxldGVfbGF0ZXI9cHl0aG9uMzIuX1B5VHJhc2hfZGVsZXRlX2xhdGVyIERBVEEKLSAgX1B5VHJhc2hfZGVsZXRlX25lc3Rpbmc9cHl0aG9uMzIuX1B5VHJhc2hfZGVsZXRlX25lc3RpbmcgREFUQQotICBfUHlUcmFzaF9kZXBvc2l0X29iamVjdD1weXRob24zMi5fUHlUcmFzaF9kZXBvc2l0X29iamVjdAotICBfUHlUcmFzaF9kZXN0cm95X2NoYWluPXB5dGhvbjMyLl9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4KLSAgX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZT1weXRob24zMi5fUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlIERBVEEKLSAgX1B5V2Vha3JlZl9Qcm94eVR5cGU9cHl0aG9uMzIuX1B5V2Vha3JlZl9Qcm94eVR5cGUgREFUQQotICBfUHlXZWFrcmVmX1JlZlR5cGU9cHl0aG9uMzIuX1B5V2Vha3JlZl9SZWZUeXBlIERBVEEKLSAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzIuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKLSAgX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQ9cHl0aG9uMzIuX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQgREFUQQotICBfUHlfQ2hlY2tSZWN1cnNpdmVDYWxsPXB5dGhvbjMyLl9QeV9DaGVja1JlY3Vyc2l2ZUNhbGwKLSAgX1B5X0RlYWxsb2M9cHl0aG9uMzIuX1B5X0RlYWxsb2MKLSAgX1B5X0VsbGlwc2lzT2JqZWN0PXB5dGhvbjMyLl9QeV9FbGxpcHNpc09iamVjdCBEQVRBCi0gIF9QeV9GYWxzZVN0cnVjdD1weXRob24zMi5fUHlfRmFsc2VTdHJ1Y3QgREFUQQotICBfUHlfTm9uZVN0cnVjdD1weXRob24zMi5fUHlfTm9uZVN0cnVjdCBEQVRBCi0gIF9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdD1weXRob24zMi5fUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3QgREFUQQotICBfUHlfU3dhcHBlZE9wPXB5dGhvbjMyLl9QeV9Td2FwcGVkT3AgREFUQQotICBfUHlfVHJ1ZVN0cnVjdD1weXRob24zMi5fUHlfVHJ1ZVN0cnVjdCBEQVRBCi0gIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzIuX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVAorICBQeUFyZ19QYXJzZT1weXRob24zMy5QeUFyZ19QYXJzZQorICBQeUFyZ19QYXJzZVR1cGxlPXB5dGhvbjMzLlB5QXJnX1BhcnNlVHVwbGUKKyAgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjMzLlB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcworICBQeUFyZ19VbnBhY2tUdXBsZT1weXRob24zMy5QeUFyZ19VbnBhY2tUdXBsZQorICBQeUFyZ19WYVBhcnNlPXB5dGhvbjMzLlB5QXJnX1ZhUGFyc2UKKyAgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHM9cHl0aG9uMzMuUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMKKyAgUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzPXB5dGhvbjMzLlB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cworICBQeUJhc2VPYmplY3RfVHlwZT1weXRob24zMy5QeUJhc2VPYmplY3RfVHlwZSBEQVRBCisgIFB5Qm9vbF9Gcm9tTG9uZz1weXRob24zMy5QeUJvb2xfRnJvbUxvbmcKKyAgUHlCb29sX1R5cGU9cHl0aG9uMzMuUHlCb29sX1R5cGUgREFUQQorICBQeUJ5dGVBcnJheUl0ZXJfVHlwZT1weXRob24zMy5QeUJ5dGVBcnJheUl0ZXJfVHlwZSBEQVRBCisgIFB5Qnl0ZUFycmF5X0FzU3RyaW5nPXB5dGhvbjMzLlB5Qnl0ZUFycmF5X0FzU3RyaW5nCisgIFB5Qnl0ZUFycmF5X0NvbmNhdD1weXRob24zMy5QeUJ5dGVBcnJheV9Db25jYXQKKyAgUHlCeXRlQXJyYXlfRnJvbU9iamVjdD1weXRob24zMy5QeUJ5dGVBcnJheV9Gcm9tT2JqZWN0CisgIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjMzLlB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplCisgIFB5Qnl0ZUFycmF5X1Jlc2l6ZT1weXRob24zMy5QeUJ5dGVBcnJheV9SZXNpemUKKyAgUHlCeXRlQXJyYXlfU2l6ZT1weXRob24zMy5QeUJ5dGVBcnJheV9TaXplCisgIFB5Qnl0ZUFycmF5X1R5cGU9cHl0aG9uMzMuUHlCeXRlQXJyYXlfVHlwZSBEQVRBCisgIFB5Qnl0ZXNJdGVyX1R5cGU9cHl0aG9uMzMuUHlCeXRlc0l0ZXJfVHlwZSBEQVRBCisgIFB5Qnl0ZXNfQXNTdHJpbmc9cHl0aG9uMzMuUHlCeXRlc19Bc1N0cmluZworICBQeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZT1weXRob24zMy5QeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZQorICBQeUJ5dGVzX0NvbmNhdD1weXRob24zMy5QeUJ5dGVzX0NvbmNhdAorICBQeUJ5dGVzX0NvbmNhdEFuZERlbD1weXRob24zMy5QeUJ5dGVzX0NvbmNhdEFuZERlbAorICBQeUJ5dGVzX0RlY29kZUVzY2FwZT1weXRob24zMy5QeUJ5dGVzX0RlY29kZUVzY2FwZQorICBQeUJ5dGVzX0Zyb21Gb3JtYXQ9cHl0aG9uMzMuUHlCeXRlc19Gcm9tRm9ybWF0CisgIFB5Qnl0ZXNfRnJvbUZvcm1hdFY9cHl0aG9uMzMuUHlCeXRlc19Gcm9tRm9ybWF0VgorICBQeUJ5dGVzX0Zyb21PYmplY3Q9cHl0aG9uMzMuUHlCeXRlc19Gcm9tT2JqZWN0CisgIFB5Qnl0ZXNfRnJvbVN0cmluZz1weXRob24zMy5QeUJ5dGVzX0Zyb21TdHJpbmcKKyAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zMy5QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplCisgIFB5Qnl0ZXNfUmVwcj1weXRob24zMy5QeUJ5dGVzX1JlcHIKKyAgUHlCeXRlc19TaXplPXB5dGhvbjMzLlB5Qnl0ZXNfU2l6ZQorICBQeUJ5dGVzX1R5cGU9cHl0aG9uMzMuUHlCeXRlc19UeXBlIERBVEEKKyAgUHlDRnVuY3Rpb25fQ2FsbD1weXRob24zMy5QeUNGdW5jdGlvbl9DYWxsCisgIFB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3Q9cHl0aG9uMzMuUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdAorICBQeUNGdW5jdGlvbl9HZXRGbGFncz1weXRob24zMy5QeUNGdW5jdGlvbl9HZXRGbGFncworICBQeUNGdW5jdGlvbl9HZXRGdW5jdGlvbj1weXRob24zMy5QeUNGdW5jdGlvbl9HZXRGdW5jdGlvbgorICBQeUNGdW5jdGlvbl9HZXRTZWxmPXB5dGhvbjMzLlB5Q0Z1bmN0aW9uX0dldFNlbGYKKyAgUHlDRnVuY3Rpb25fTmV3RXg9cHl0aG9uMzMuUHlDRnVuY3Rpb25fTmV3RXgKKyAgUHlDRnVuY3Rpb25fVHlwZT1weXRob24zMy5QeUNGdW5jdGlvbl9UeXBlIERBVEEKKyAgUHlDYWxsSXRlcl9OZXc9cHl0aG9uMzMuUHlDYWxsSXRlcl9OZXcKKyAgUHlDYWxsSXRlcl9UeXBlPXB5dGhvbjMzLlB5Q2FsbEl0ZXJfVHlwZSBEQVRBCisgIFB5Q2FsbGFibGVfQ2hlY2s9cHl0aG9uMzMuUHlDYWxsYWJsZV9DaGVjaworICBQeUNhcHN1bGVfR2V0Q29udGV4dD1weXRob24zMy5QeUNhcHN1bGVfR2V0Q29udGV4dAorICBQeUNhcHN1bGVfR2V0RGVzdHJ1Y3Rvcj1weXRob24zMy5QeUNhcHN1bGVfR2V0RGVzdHJ1Y3RvcgorICBQeUNhcHN1bGVfR2V0TmFtZT1weXRob24zMy5QeUNhcHN1bGVfR2V0TmFtZQorICBQeUNhcHN1bGVfR2V0UG9pbnRlcj1weXRob24zMy5QeUNhcHN1bGVfR2V0UG9pbnRlcgorICBQeUNhcHN1bGVfSW1wb3J0PXB5dGhvbjMzLlB5Q2Fwc3VsZV9JbXBvcnQKKyAgUHlDYXBzdWxlX0lzVmFsaWQ9cHl0aG9uMzMuUHlDYXBzdWxlX0lzVmFsaWQKKyAgUHlDYXBzdWxlX05ldz1weXRob24zMy5QeUNhcHN1bGVfTmV3CisgIFB5Q2Fwc3VsZV9TZXRDb250ZXh0PXB5dGhvbjMzLlB5Q2Fwc3VsZV9TZXRDb250ZXh0CisgIFB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yPXB5dGhvbjMzLlB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yCisgIFB5Q2Fwc3VsZV9TZXROYW1lPXB5dGhvbjMzLlB5Q2Fwc3VsZV9TZXROYW1lCisgIFB5Q2Fwc3VsZV9TZXRQb2ludGVyPXB5dGhvbjMzLlB5Q2Fwc3VsZV9TZXRQb2ludGVyCisgIFB5Q2Fwc3VsZV9UeXBlPXB5dGhvbjMzLlB5Q2Fwc3VsZV9UeXBlIERBVEEKKyAgUHlDbGFzc01ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzMuUHlDbGFzc01ldGhvZERlc2NyX1R5cGUgREFUQQorICBQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnM9cHl0aG9uMzMuUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzCisgIFB5Q29kZWNfRGVjb2RlPXB5dGhvbjMzLlB5Q29kZWNfRGVjb2RlCisgIFB5Q29kZWNfRGVjb2Rlcj1weXRob24zMy5QeUNvZGVjX0RlY29kZXIKKyAgUHlDb2RlY19FbmNvZGU9cHl0aG9uMzMuUHlDb2RlY19FbmNvZGUKKyAgUHlDb2RlY19FbmNvZGVyPXB5dGhvbjMzLlB5Q29kZWNfRW5jb2RlcgorICBQeUNvZGVjX0lnbm9yZUVycm9ycz1weXRob24zMy5QeUNvZGVjX0lnbm9yZUVycm9ycworICBQeUNvZGVjX0luY3JlbWVudGFsRGVjb2Rlcj1weXRob24zMy5QeUNvZGVjX0luY3JlbWVudGFsRGVjb2RlcgorICBQeUNvZGVjX0luY3JlbWVudGFsRW5jb2Rlcj1weXRob24zMy5QeUNvZGVjX0luY3JlbWVudGFsRW5jb2RlcgorICBQeUNvZGVjX0tub3duRW5jb2Rpbmc9cHl0aG9uMzMuUHlDb2RlY19Lbm93bkVuY29kaW5nCisgIFB5Q29kZWNfTG9va3VwRXJyb3I9cHl0aG9uMzMuUHlDb2RlY19Mb29rdXBFcnJvcgorICBQeUNvZGVjX1JlZ2lzdGVyPXB5dGhvbjMzLlB5Q29kZWNfUmVnaXN0ZXIKKyAgUHlDb2RlY19SZWdpc3RlckVycm9yPXB5dGhvbjMzLlB5Q29kZWNfUmVnaXN0ZXJFcnJvcgorICBQeUNvZGVjX1JlcGxhY2VFcnJvcnM9cHl0aG9uMzMuUHlDb2RlY19SZXBsYWNlRXJyb3JzCisgIFB5Q29kZWNfU3RyZWFtUmVhZGVyPXB5dGhvbjMzLlB5Q29kZWNfU3RyZWFtUmVhZGVyCisgIFB5Q29kZWNfU3RyZWFtV3JpdGVyPXB5dGhvbjMzLlB5Q29kZWNfU3RyZWFtV3JpdGVyCisgIFB5Q29kZWNfU3RyaWN0RXJyb3JzPXB5dGhvbjMzLlB5Q29kZWNfU3RyaWN0RXJyb3JzCisgIFB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnM9cHl0aG9uMzMuUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycworICBQeUNvbXBsZXhfRnJvbURvdWJsZXM9cHl0aG9uMzMuUHlDb21wbGV4X0Zyb21Eb3VibGVzCisgIFB5Q29tcGxleF9JbWFnQXNEb3VibGU9cHl0aG9uMzMuUHlDb21wbGV4X0ltYWdBc0RvdWJsZQorICBQeUNvbXBsZXhfUmVhbEFzRG91YmxlPXB5dGhvbjMzLlB5Q29tcGxleF9SZWFsQXNEb3VibGUKKyAgUHlDb21wbGV4X1R5cGU9cHl0aG9uMzMuUHlDb21wbGV4X1R5cGUgREFUQQorICBQeURlc2NyX05ld0NsYXNzTWV0aG9kPXB5dGhvbjMzLlB5RGVzY3JfTmV3Q2xhc3NNZXRob2QKKyAgUHlEZXNjcl9OZXdHZXRTZXQ9cHl0aG9uMzMuUHlEZXNjcl9OZXdHZXRTZXQKKyAgUHlEZXNjcl9OZXdNZW1iZXI9cHl0aG9uMzMuUHlEZXNjcl9OZXdNZW1iZXIKKyAgUHlEZXNjcl9OZXdNZXRob2Q9cHl0aG9uMzMuUHlEZXNjcl9OZXdNZXRob2QKKyAgUHlEaWN0SXRlbXNfVHlwZT1weXRob24zMy5QeURpY3RJdGVtc19UeXBlIERBVEEKKyAgUHlEaWN0SXRlckl0ZW1fVHlwZT1weXRob24zMy5QeURpY3RJdGVySXRlbV9UeXBlIERBVEEKKyAgUHlEaWN0SXRlcktleV9UeXBlPXB5dGhvbjMzLlB5RGljdEl0ZXJLZXlfVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJWYWx1ZV9UeXBlPXB5dGhvbjMzLlB5RGljdEl0ZXJWYWx1ZV9UeXBlIERBVEEKKyAgUHlEaWN0S2V5c19UeXBlPXB5dGhvbjMzLlB5RGljdEtleXNfVHlwZSBEQVRBCisgIFB5RGljdFByb3h5X05ldz1weXRob24zMy5QeURpY3RQcm94eV9OZXcKKyAgUHlEaWN0UHJveHlfVHlwZT1weXRob24zMy5QeURpY3RQcm94eV9UeXBlIERBVEEKKyAgUHlEaWN0VmFsdWVzX1R5cGU9cHl0aG9uMzMuUHlEaWN0VmFsdWVzX1R5cGUgREFUQQorICBQeURpY3RfQ2xlYXI9cHl0aG9uMzMuUHlEaWN0X0NsZWFyCisgIFB5RGljdF9Db250YWlucz1weXRob24zMy5QeURpY3RfQ29udGFpbnMKKyAgUHlEaWN0X0NvcHk9cHl0aG9uMzMuUHlEaWN0X0NvcHkKKyAgUHlEaWN0X0RlbEl0ZW09cHl0aG9uMzMuUHlEaWN0X0RlbEl0ZW0KKyAgUHlEaWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzMuUHlEaWN0X0RlbEl0ZW1TdHJpbmcKKyAgUHlEaWN0X0dldEl0ZW09cHl0aG9uMzMuUHlEaWN0X0dldEl0ZW0KKyAgUHlEaWN0X0dldEl0ZW1TdHJpbmc9cHl0aG9uMzMuUHlEaWN0X0dldEl0ZW1TdHJpbmcKKyAgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3I9cHl0aG9uMzMuUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IKKyAgUHlEaWN0X0l0ZW1zPXB5dGhvbjMzLlB5RGljdF9JdGVtcworICBQeURpY3RfS2V5cz1weXRob24zMy5QeURpY3RfS2V5cworICBQeURpY3RfTWVyZ2U9cHl0aG9uMzMuUHlEaWN0X01lcmdlCisgIFB5RGljdF9NZXJnZUZyb21TZXEyPXB5dGhvbjMzLlB5RGljdF9NZXJnZUZyb21TZXEyCisgIFB5RGljdF9OZXc9cHl0aG9uMzMuUHlEaWN0X05ldworICBQeURpY3RfTmV4dD1weXRob24zMy5QeURpY3RfTmV4dAorICBQeURpY3RfU2V0SXRlbT1weXRob24zMy5QeURpY3RfU2V0SXRlbQorICBQeURpY3RfU2V0SXRlbVN0cmluZz1weXRob24zMy5QeURpY3RfU2V0SXRlbVN0cmluZworICBQeURpY3RfU2l6ZT1weXRob24zMy5QeURpY3RfU2l6ZQorICBQeURpY3RfVHlwZT1weXRob24zMy5QeURpY3RfVHlwZSBEQVRBCisgIFB5RGljdF9VcGRhdGU9cHl0aG9uMzMuUHlEaWN0X1VwZGF0ZQorICBQeURpY3RfVmFsdWVzPXB5dGhvbjMzLlB5RGljdF9WYWx1ZXMKKyAgUHlFbGxpcHNpc19UeXBlPXB5dGhvbjMzLlB5RWxsaXBzaXNfVHlwZSBEQVRBCisgIFB5RW51bV9UeXBlPXB5dGhvbjMzLlB5RW51bV9UeXBlIERBVEEKKyAgUHlFcnJfQmFkQXJndW1lbnQ9cHl0aG9uMzMuUHlFcnJfQmFkQXJndW1lbnQKKyAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjMzLlB5RXJyX0JhZEludGVybmFsQ2FsbAorICBQeUVycl9DaGVja1NpZ25hbHM9cHl0aG9uMzMuUHlFcnJfQ2hlY2tTaWduYWxzCisgIFB5RXJyX0NsZWFyPXB5dGhvbjMzLlB5RXJyX0NsZWFyCisgIFB5RXJyX0Rpc3BsYXk9cHl0aG9uMzMuUHlFcnJfRGlzcGxheQorICBQeUVycl9FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjMzLlB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMKKyAgUHlFcnJfRmV0Y2g9cHl0aG9uMzMuUHlFcnJfRmV0Y2gKKyAgUHlFcnJfRm9ybWF0PXB5dGhvbjMzLlB5RXJyX0Zvcm1hdAorICBQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXM9cHl0aG9uMzMuUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzCisgIFB5RXJyX05ld0V4Y2VwdGlvbj1weXRob24zMy5QeUVycl9OZXdFeGNlcHRpb24KKyAgUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYz1weXRob24zMy5QeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jCisgIFB5RXJyX05vTWVtb3J5PXB5dGhvbjMzLlB5RXJyX05vTWVtb3J5CisgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbj1weXRob24zMy5QeUVycl9Ob3JtYWxpemVFeGNlcHRpb24KKyAgUHlFcnJfT2NjdXJyZWQ9cHl0aG9uMzMuUHlFcnJfT2NjdXJyZWQKKyAgUHlFcnJfUHJpbnQ9cHl0aG9uMzMuUHlFcnJfUHJpbnQKKyAgUHlFcnJfUHJpbnRFeD1weXRob24zMy5QeUVycl9QcmludEV4CisgIFB5RXJyX1Byb2dyYW1UZXh0PXB5dGhvbjMzLlB5RXJyX1Byb2dyYW1UZXh0CisgIFB5RXJyX1Jlc3RvcmU9cHl0aG9uMzMuUHlFcnJfUmVzdG9yZQorICBQeUVycl9TZXRGcm9tRXJybm89cHl0aG9uMzMuUHlFcnJfU2V0RnJvbUVycm5vCisgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZT1weXRob24zMy5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUKKyAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0PXB5dGhvbjMzLlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdAorICBQeUVycl9TZXRJbnRlcnJ1cHQ9cHl0aG9uMzMuUHlFcnJfU2V0SW50ZXJydXB0CisgIFB5RXJyX1NldE5vbmU9cHl0aG9uMzMuUHlFcnJfU2V0Tm9uZQorICBQeUVycl9TZXRPYmplY3Q9cHl0aG9uMzMuUHlFcnJfU2V0T2JqZWN0CisgIFB5RXJyX1NldFN0cmluZz1weXRob24zMy5QeUVycl9TZXRTdHJpbmcKKyAgUHlFcnJfU3ludGF4TG9jYXRpb249cHl0aG9uMzMuUHlFcnJfU3ludGF4TG9jYXRpb24KKyAgUHlFcnJfV2FybkV4PXB5dGhvbjMzLlB5RXJyX1dhcm5FeAorICBQeUVycl9XYXJuRXhwbGljaXQ9cHl0aG9uMzMuUHlFcnJfV2FybkV4cGxpY2l0CisgIFB5RXJyX1dhcm5Gb3JtYXQ9cHl0aG9uMzMuUHlFcnJfV2FybkZvcm1hdAorICBQeUVycl9Xcml0ZVVucmFpc2FibGU9cHl0aG9uMzMuUHlFcnJfV3JpdGVVbnJhaXNhYmxlCisgIFB5RXZhbF9BY3F1aXJlTG9jaz1weXRob24zMy5QeUV2YWxfQWNxdWlyZUxvY2sKKyAgUHlFdmFsX0FjcXVpcmVUaHJlYWQ9cHl0aG9uMzMuUHlFdmFsX0FjcXVpcmVUaHJlYWQKKyAgUHlFdmFsX0NhbGxGdW5jdGlvbj1weXRob24zMy5QeUV2YWxfQ2FsbEZ1bmN0aW9uCisgIFB5RXZhbF9DYWxsTWV0aG9kPXB5dGhvbjMzLlB5RXZhbF9DYWxsTWV0aG9kCisgIFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzPXB5dGhvbjMzLlB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzCisgIFB5RXZhbF9FdmFsQ29kZT1weXRob24zMy5QeUV2YWxfRXZhbENvZGUKKyAgUHlFdmFsX0V2YWxDb2RlRXg9cHl0aG9uMzMuUHlFdmFsX0V2YWxDb2RlRXgKKyAgUHlFdmFsX0V2YWxGcmFtZT1weXRob24zMy5QeUV2YWxfRXZhbEZyYW1lCisgIFB5RXZhbF9FdmFsRnJhbWVFeD1weXRob24zMy5QeUV2YWxfRXZhbEZyYW1lRXgKKyAgUHlFdmFsX0dldEJ1aWx0aW5zPXB5dGhvbjMzLlB5RXZhbF9HZXRCdWlsdGlucworICBQeUV2YWxfR2V0Q2FsbFN0YXRzPXB5dGhvbjMzLlB5RXZhbF9HZXRDYWxsU3RhdHMKKyAgUHlFdmFsX0dldEZyYW1lPXB5dGhvbjMzLlB5RXZhbF9HZXRGcmFtZQorICBQeUV2YWxfR2V0RnVuY0Rlc2M9cHl0aG9uMzMuUHlFdmFsX0dldEZ1bmNEZXNjCisgIFB5RXZhbF9HZXRGdW5jTmFtZT1weXRob24zMy5QeUV2YWxfR2V0RnVuY05hbWUKKyAgUHlFdmFsX0dldEdsb2JhbHM9cHl0aG9uMzMuUHlFdmFsX0dldEdsb2JhbHMKKyAgUHlFdmFsX0dldExvY2Fscz1weXRob24zMy5QeUV2YWxfR2V0TG9jYWxzCisgIFB5RXZhbF9Jbml0VGhyZWFkcz1weXRob24zMy5QeUV2YWxfSW5pdFRocmVhZHMKKyAgUHlFdmFsX1JlSW5pdFRocmVhZHM9cHl0aG9uMzMuUHlFdmFsX1JlSW5pdFRocmVhZHMKKyAgUHlFdmFsX1JlbGVhc2VMb2NrPXB5dGhvbjMzLlB5RXZhbF9SZWxlYXNlTG9jaworICBQeUV2YWxfUmVsZWFzZVRocmVhZD1weXRob24zMy5QeUV2YWxfUmVsZWFzZVRocmVhZAorICBQeUV2YWxfUmVzdG9yZVRocmVhZD1weXRob24zMy5QeUV2YWxfUmVzdG9yZVRocmVhZAorICBQeUV2YWxfU2F2ZVRocmVhZD1weXRob24zMy5QeUV2YWxfU2F2ZVRocmVhZAorICBQeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkPXB5dGhvbjMzLlB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQKKyAgUHlFeGNfQXJpdGhtZXRpY0Vycm9yPXB5dGhvbjMzLlB5RXhjX0FyaXRobWV0aWNFcnJvciBEQVRBCisgIFB5RXhjX0Fzc2VydGlvbkVycm9yPXB5dGhvbjMzLlB5RXhjX0Fzc2VydGlvbkVycm9yIERBVEEKKyAgUHlFeGNfQXR0cmlidXRlRXJyb3I9cHl0aG9uMzMuUHlFeGNfQXR0cmlidXRlRXJyb3IgREFUQQorICBQeUV4Y19CYXNlRXhjZXB0aW9uPXB5dGhvbjMzLlB5RXhjX0Jhc2VFeGNlcHRpb24gREFUQQorICBQeUV4Y19CdWZmZXJFcnJvcj1weXRob24zMy5QeUV4Y19CdWZmZXJFcnJvciBEQVRBCisgIFB5RXhjX0J5dGVzV2FybmluZz1weXRob24zMy5QeUV4Y19CeXRlc1dhcm5pbmcgREFUQQorICBQeUV4Y19EZXByZWNhdGlvbldhcm5pbmc9cHl0aG9uMzMuUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKKyAgUHlFeGNfRU9GRXJyb3I9cHl0aG9uMzMuUHlFeGNfRU9GRXJyb3IgREFUQQorICBQeUV4Y19FbnZpcm9ubWVudEVycm9yPXB5dGhvbjMzLlB5RXhjX0Vudmlyb25tZW50RXJyb3IgREFUQQorICBQeUV4Y19FeGNlcHRpb249cHl0aG9uMzMuUHlFeGNfRXhjZXB0aW9uIERBVEEKKyAgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yPXB5dGhvbjMzLlB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvciBEQVRBCisgIFB5RXhjX0Z1dHVyZVdhcm5pbmc9cHl0aG9uMzMuUHlFeGNfRnV0dXJlV2FybmluZyBEQVRBCisgIFB5RXhjX0dlbmVyYXRvckV4aXQ9cHl0aG9uMzMuUHlFeGNfR2VuZXJhdG9yRXhpdCBEQVRBCisgIFB5RXhjX0lPRXJyb3I9cHl0aG9uMzMuUHlFeGNfSU9FcnJvciBEQVRBCisgIFB5RXhjX0ltcG9ydEVycm9yPXB5dGhvbjMzLlB5RXhjX0ltcG9ydEVycm9yIERBVEEKKyAgUHlFeGNfSW1wb3J0V2FybmluZz1weXRob24zMy5QeUV4Y19JbXBvcnRXYXJuaW5nIERBVEEKKyAgUHlFeGNfSW5kZW50YXRpb25FcnJvcj1weXRob24zMy5QeUV4Y19JbmRlbnRhdGlvbkVycm9yIERBVEEKKyAgUHlFeGNfSW5kZXhFcnJvcj1weXRob24zMy5QeUV4Y19JbmRleEVycm9yIERBVEEKKyAgUHlFeGNfS2V5RXJyb3I9cHl0aG9uMzMuUHlFeGNfS2V5RXJyb3IgREFUQQorICBQeUV4Y19LZXlib2FyZEludGVycnVwdD1weXRob24zMy5QeUV4Y19LZXlib2FyZEludGVycnVwdCBEQVRBCisgIFB5RXhjX0xvb2t1cEVycm9yPXB5dGhvbjMzLlB5RXhjX0xvb2t1cEVycm9yIERBVEEKKyAgUHlFeGNfTWVtb3J5RXJyb3I9cHl0aG9uMzMuUHlFeGNfTWVtb3J5RXJyb3IgREFUQQorICBQeUV4Y19NZW1vcnlFcnJvckluc3Q9cHl0aG9uMzMuUHlFeGNfTWVtb3J5RXJyb3JJbnN0IERBVEEKKyAgUHlFeGNfTmFtZUVycm9yPXB5dGhvbjMzLlB5RXhjX05hbWVFcnJvciBEQVRBCisgIFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3I9cHl0aG9uMzMuUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciBEQVRBCisgIFB5RXhjX09TRXJyb3I9cHl0aG9uMzMuUHlFeGNfT1NFcnJvciBEQVRBCisgIFB5RXhjX092ZXJmbG93RXJyb3I9cHl0aG9uMzMuUHlFeGNfT3ZlcmZsb3dFcnJvciBEQVRBCisgIFB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmc9cHl0aG9uMzMuUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCisgIFB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdD1weXRob24zMy5QeUV4Y19SZWN1cnNpb25FcnJvckluc3QgREFUQQorICBQeUV4Y19SZWZlcmVuY2VFcnJvcj1weXRob24zMy5QeUV4Y19SZWZlcmVuY2VFcnJvciBEQVRBCisgIFB5RXhjX1J1bnRpbWVFcnJvcj1weXRob24zMy5QeUV4Y19SdW50aW1lRXJyb3IgREFUQQorICBQeUV4Y19SdW50aW1lV2FybmluZz1weXRob24zMy5QeUV4Y19SdW50aW1lV2FybmluZyBEQVRBCisgIFB5RXhjX1N0b3BJdGVyYXRpb249cHl0aG9uMzMuUHlFeGNfU3RvcEl0ZXJhdGlvbiBEQVRBCisgIFB5RXhjX1N5bnRheEVycm9yPXB5dGhvbjMzLlB5RXhjX1N5bnRheEVycm9yIERBVEEKKyAgUHlFeGNfU3ludGF4V2FybmluZz1weXRob24zMy5QeUV4Y19TeW50YXhXYXJuaW5nIERBVEEKKyAgUHlFeGNfU3lzdGVtRXJyb3I9cHl0aG9uMzMuUHlFeGNfU3lzdGVtRXJyb3IgREFUQQorICBQeUV4Y19TeXN0ZW1FeGl0PXB5dGhvbjMzLlB5RXhjX1N5c3RlbUV4aXQgREFUQQorICBQeUV4Y19UYWJFcnJvcj1weXRob24zMy5QeUV4Y19UYWJFcnJvciBEQVRBCisgIFB5RXhjX1R5cGVFcnJvcj1weXRob24zMy5QeUV4Y19UeXBlRXJyb3IgREFUQQorICBQeUV4Y19VbmJvdW5kTG9jYWxFcnJvcj1weXRob24zMy5QeUV4Y19VbmJvdW5kTG9jYWxFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcj1weXRob24zMy5QeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3I9cHl0aG9uMzMuUHlFeGNfVW5pY29kZUVuY29kZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZUVycm9yPXB5dGhvbjMzLlB5RXhjX1VuaWNvZGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvcj1weXRob24zMy5QeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlV2FybmluZz1weXRob24zMy5QeUV4Y19Vbmljb2RlV2FybmluZyBEQVRBCisgIFB5RXhjX1VzZXJXYXJuaW5nPXB5dGhvbjMzLlB5RXhjX1VzZXJXYXJuaW5nIERBVEEKKyAgUHlFeGNfVmFsdWVFcnJvcj1weXRob24zMy5QeUV4Y19WYWx1ZUVycm9yIERBVEEKKyAgUHlFeGNfV2FybmluZz1weXRob24zMy5QeUV4Y19XYXJuaW5nIERBVEEKKyAgUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3I9cHl0aG9uMzMuUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3IgREFUQQorICBQeUV4Y2VwdGlvbl9HZXRDYXVzZT1weXRob24zMy5QeUV4Y2VwdGlvbl9HZXRDYXVzZQorICBQeUV4Y2VwdGlvbl9HZXRDb250ZXh0PXB5dGhvbjMzLlB5RXhjZXB0aW9uX0dldENvbnRleHQKKyAgUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrPXB5dGhvbjMzLlB5RXhjZXB0aW9uX0dldFRyYWNlYmFjaworICBQeUV4Y2VwdGlvbl9TZXRDYXVzZT1weXRob24zMy5QeUV4Y2VwdGlvbl9TZXRDYXVzZQorICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0PXB5dGhvbjMzLlB5RXhjZXB0aW9uX1NldENvbnRleHQKKyAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrPXB5dGhvbjMzLlB5RXhjZXB0aW9uX1NldFRyYWNlYmFjaworICBQeUZpbGVfRnJvbUZkPXB5dGhvbjMzLlB5RmlsZV9Gcm9tRmQKKyAgUHlGaWxlX0dldExpbmU9cHl0aG9uMzMuUHlGaWxlX0dldExpbmUKKyAgUHlGaWxlX1dyaXRlT2JqZWN0PXB5dGhvbjMzLlB5RmlsZV9Xcml0ZU9iamVjdAorICBQeUZpbGVfV3JpdGVTdHJpbmc9cHl0aG9uMzMuUHlGaWxlX1dyaXRlU3RyaW5nCisgIFB5RmlsdGVyX1R5cGU9cHl0aG9uMzMuUHlGaWx0ZXJfVHlwZSBEQVRBCisgIFB5RmxvYXRfQXNEb3VibGU9cHl0aG9uMzMuUHlGbG9hdF9Bc0RvdWJsZQorICBQeUZsb2F0X0Zyb21Eb3VibGU9cHl0aG9uMzMuUHlGbG9hdF9Gcm9tRG91YmxlCisgIFB5RmxvYXRfRnJvbVN0cmluZz1weXRob24zMy5QeUZsb2F0X0Zyb21TdHJpbmcKKyAgUHlGbG9hdF9HZXRJbmZvPXB5dGhvbjMzLlB5RmxvYXRfR2V0SW5mbworICBQeUZsb2F0X0dldE1heD1weXRob24zMy5QeUZsb2F0X0dldE1heAorICBQeUZsb2F0X0dldE1pbj1weXRob24zMy5QeUZsb2F0X0dldE1pbgorICBQeUZsb2F0X1R5cGU9cHl0aG9uMzMuUHlGbG9hdF9UeXBlIERBVEEKKyAgUHlGcm96ZW5TZXRfTmV3PXB5dGhvbjMzLlB5RnJvemVuU2V0X05ldworICBQeUZyb3plblNldF9UeXBlPXB5dGhvbjMzLlB5RnJvemVuU2V0X1R5cGUgREFUQQorICBQeUdDX0NvbGxlY3Q9cHl0aG9uMzMuUHlHQ19Db2xsZWN0CisgIFB5R0lMU3RhdGVfRW5zdXJlPXB5dGhvbjMzLlB5R0lMU3RhdGVfRW5zdXJlCisgIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlPXB5dGhvbjMzLlB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlCisgIFB5R0lMU3RhdGVfUmVsZWFzZT1weXRob24zMy5QeUdJTFN0YXRlX1JlbGVhc2UKKyAgUHlHZXRTZXREZXNjcl9UeXBlPXB5dGhvbjMzLlB5R2V0U2V0RGVzY3JfVHlwZSBEQVRBCisgIFB5SW1wb3J0X0FkZE1vZHVsZT1weXRob24zMy5QeUltcG9ydF9BZGRNb2R1bGUKKyAgUHlJbXBvcnRfQXBwZW5kSW5pdHRhYj1weXRob24zMy5QeUltcG9ydF9BcHBlbmRJbml0dGFiCisgIFB5SW1wb3J0X0NsZWFudXA9cHl0aG9uMzMuUHlJbXBvcnRfQ2xlYW51cAorICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZT1weXRob24zMy5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZQorICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4PXB5dGhvbjMzLlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXgKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzPXB5dGhvbjMzLlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcworICBQeUltcG9ydF9HZXRJbXBvcnRlcj1weXRob24zMy5QeUltcG9ydF9HZXRJbXBvcnRlcgorICBQeUltcG9ydF9HZXRNYWdpY051bWJlcj1weXRob24zMy5QeUltcG9ydF9HZXRNYWdpY051bWJlcgorICBQeUltcG9ydF9HZXRNYWdpY1RhZz1weXRob24zMy5QeUltcG9ydF9HZXRNYWdpY1RhZworICBQeUltcG9ydF9HZXRNb2R1bGVEaWN0PXB5dGhvbjMzLlB5SW1wb3J0X0dldE1vZHVsZURpY3QKKyAgUHlJbXBvcnRfSW1wb3J0PXB5dGhvbjMzLlB5SW1wb3J0X0ltcG9ydAorICBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGU9cHl0aG9uMzMuUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlCisgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZT1weXRob24zMy5QeUltcG9ydF9JbXBvcnRNb2R1bGUKKyAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWw9cHl0aG9uMzMuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwKKyAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaz1weXRob24zMy5QeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrCisgIFB5SW1wb3J0X1JlbG9hZE1vZHVsZT1weXRob24zMy5QeUltcG9ydF9SZWxvYWRNb2R1bGUKKyAgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyPXB5dGhvbjMzLlB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcgorICBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlPXB5dGhvbjMzLlB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUKKyAgUHlJbnRlcnByZXRlclN0YXRlX05ldz1weXRob24zMy5QeUludGVycHJldGVyU3RhdGVfTmV3CisgIFB5SXRlcl9OZXh0PXB5dGhvbjMzLlB5SXRlcl9OZXh0CisgIFB5TGlzdEl0ZXJfVHlwZT1weXRob24zMy5QeUxpc3RJdGVyX1R5cGUgREFUQQorICBQeUxpc3RSZXZJdGVyX1R5cGU9cHl0aG9uMzMuUHlMaXN0UmV2SXRlcl9UeXBlIERBVEEKKyAgUHlMaXN0X0FwcGVuZD1weXRob24zMy5QeUxpc3RfQXBwZW5kCisgIFB5TGlzdF9Bc1R1cGxlPXB5dGhvbjMzLlB5TGlzdF9Bc1R1cGxlCisgIFB5TGlzdF9HZXRJdGVtPXB5dGhvbjMzLlB5TGlzdF9HZXRJdGVtCisgIFB5TGlzdF9HZXRTbGljZT1weXRob24zMy5QeUxpc3RfR2V0U2xpY2UKKyAgUHlMaXN0X0luc2VydD1weXRob24zMy5QeUxpc3RfSW5zZXJ0CisgIFB5TGlzdF9OZXc9cHl0aG9uMzMuUHlMaXN0X05ldworICBQeUxpc3RfUmV2ZXJzZT1weXRob24zMy5QeUxpc3RfUmV2ZXJzZQorICBQeUxpc3RfU2V0SXRlbT1weXRob24zMy5QeUxpc3RfU2V0SXRlbQorICBQeUxpc3RfU2V0U2xpY2U9cHl0aG9uMzMuUHlMaXN0X1NldFNsaWNlCisgIFB5TGlzdF9TaXplPXB5dGhvbjMzLlB5TGlzdF9TaXplCisgIFB5TGlzdF9Tb3J0PXB5dGhvbjMzLlB5TGlzdF9Tb3J0CisgIFB5TGlzdF9UeXBlPXB5dGhvbjMzLlB5TGlzdF9UeXBlIERBVEEKKyAgUHlMb25nUmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzMuUHlMb25nUmFuZ2VJdGVyX1R5cGUgREFUQQorICBQeUxvbmdfQXNEb3VibGU9cHl0aG9uMzMuUHlMb25nX0FzRG91YmxlCisgIFB5TG9uZ19Bc0xvbmc9cHl0aG9uMzMuUHlMb25nX0FzTG9uZworICBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3c9cHl0aG9uMzMuUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93CisgIFB5TG9uZ19Bc0xvbmdMb25nPXB5dGhvbjMzLlB5TG9uZ19Bc0xvbmdMb25nCisgIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3c9cHl0aG9uMzMuUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdworICBQeUxvbmdfQXNTaXplX3Q9cHl0aG9uMzMuUHlMb25nX0FzU2l6ZV90CisgIFB5TG9uZ19Bc1NzaXplX3Q9cHl0aG9uMzMuUHlMb25nX0FzU3NpemVfdAorICBQeUxvbmdfQXNVbnNpZ25lZExvbmc9cHl0aG9uMzMuUHlMb25nX0FzVW5zaWduZWRMb25nCisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzMuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZworICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzaz1weXRob24zMy5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzaworICBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrPXB5dGhvbjMzLlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sKKyAgUHlMb25nX0FzVm9pZFB0cj1weXRob24zMy5QeUxvbmdfQXNWb2lkUHRyCisgIFB5TG9uZ19Gcm9tRG91YmxlPXB5dGhvbjMzLlB5TG9uZ19Gcm9tRG91YmxlCisgIFB5TG9uZ19Gcm9tTG9uZz1weXRob24zMy5QeUxvbmdfRnJvbUxvbmcKKyAgUHlMb25nX0Zyb21Mb25nTG9uZz1weXRob24zMy5QeUxvbmdfRnJvbUxvbmdMb25nCisgIFB5TG9uZ19Gcm9tU2l6ZV90PXB5dGhvbjMzLlB5TG9uZ19Gcm9tU2l6ZV90CisgIFB5TG9uZ19Gcm9tU3NpemVfdD1weXRob24zMy5QeUxvbmdfRnJvbVNzaXplX3QKKyAgUHlMb25nX0Zyb21TdHJpbmc9cHl0aG9uMzMuUHlMb25nX0Zyb21TdHJpbmcKKyAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmc9cHl0aG9uMzMuUHlMb25nX0Zyb21VbnNpZ25lZExvbmcKKyAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nPXB5dGhvbjMzLlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZworICBQeUxvbmdfRnJvbVZvaWRQdHI9cHl0aG9uMzMuUHlMb25nX0Zyb21Wb2lkUHRyCisgIFB5TG9uZ19HZXRJbmZvPXB5dGhvbjMzLlB5TG9uZ19HZXRJbmZvCisgIFB5TG9uZ19UeXBlPXB5dGhvbjMzLlB5TG9uZ19UeXBlIERBVEEKKyAgUHlNYXBfVHlwZT1weXRob24zMy5QeU1hcF9UeXBlIERBVEEKKyAgUHlNYXBwaW5nX0NoZWNrPXB5dGhvbjMzLlB5TWFwcGluZ19DaGVjaworICBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZz1weXRob24zMy5QeU1hcHBpbmdfR2V0SXRlbVN0cmluZworICBQeU1hcHBpbmdfSGFzS2V5PXB5dGhvbjMzLlB5TWFwcGluZ19IYXNLZXkKKyAgUHlNYXBwaW5nX0hhc0tleVN0cmluZz1weXRob24zMy5QeU1hcHBpbmdfSGFzS2V5U3RyaW5nCisgIFB5TWFwcGluZ19JdGVtcz1weXRob24zMy5QeU1hcHBpbmdfSXRlbXMKKyAgUHlNYXBwaW5nX0tleXM9cHl0aG9uMzMuUHlNYXBwaW5nX0tleXMKKyAgUHlNYXBwaW5nX0xlbmd0aD1weXRob24zMy5QeU1hcHBpbmdfTGVuZ3RoCisgIFB5TWFwcGluZ19TZXRJdGVtU3RyaW5nPXB5dGhvbjMzLlB5TWFwcGluZ19TZXRJdGVtU3RyaW5nCisgIFB5TWFwcGluZ19TaXplPXB5dGhvbjMzLlB5TWFwcGluZ19TaXplCisgIFB5TWFwcGluZ19WYWx1ZXM9cHl0aG9uMzMuUHlNYXBwaW5nX1ZhbHVlcworICBQeU1lbV9GcmVlPXB5dGhvbjMzLlB5TWVtX0ZyZWUKKyAgUHlNZW1fTWFsbG9jPXB5dGhvbjMzLlB5TWVtX01hbGxvYworICBQeU1lbV9SZWFsbG9jPXB5dGhvbjMzLlB5TWVtX1JlYWxsb2MKKyAgUHlNZW1iZXJEZXNjcl9UeXBlPXB5dGhvbjMzLlB5TWVtYmVyRGVzY3JfVHlwZSBEQVRBCisgIFB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0PXB5dGhvbjMzLlB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0CisgIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzPXB5dGhvbjMzLlB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzCisgIFB5TWVtb3J5Vmlld19UeXBlPXB5dGhvbjMzLlB5TWVtb3J5Vmlld19UeXBlIERBVEEKKyAgUHlNZXRob2REZXNjcl9UeXBlPXB5dGhvbjMzLlB5TWV0aG9kRGVzY3JfVHlwZSBEQVRBCisgIFB5TW9kdWxlX0FkZEludENvbnN0YW50PXB5dGhvbjMzLlB5TW9kdWxlX0FkZEludENvbnN0YW50CisgIFB5TW9kdWxlX0FkZE9iamVjdD1weXRob24zMy5QeU1vZHVsZV9BZGRPYmplY3QKKyAgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQ9cHl0aG9uMzMuUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQKKyAgUHlNb2R1bGVfQ3JlYXRlMj1weXRob24zMy5QeU1vZHVsZV9DcmVhdGUyCisgIFB5TW9kdWxlX0dldERlZj1weXRob24zMy5QeU1vZHVsZV9HZXREZWYKKyAgUHlNb2R1bGVfR2V0RGljdD1weXRob24zMy5QeU1vZHVsZV9HZXREaWN0CisgIFB5TW9kdWxlX0dldEZpbGVuYW1lPXB5dGhvbjMzLlB5TW9kdWxlX0dldEZpbGVuYW1lCisgIFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0PXB5dGhvbjMzLlB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0CisgIFB5TW9kdWxlX0dldE5hbWU9cHl0aG9uMzMuUHlNb2R1bGVfR2V0TmFtZQorICBQeU1vZHVsZV9HZXRTdGF0ZT1weXRob24zMy5QeU1vZHVsZV9HZXRTdGF0ZQorICBQeU1vZHVsZV9OZXc9cHl0aG9uMzMuUHlNb2R1bGVfTmV3CisgIFB5TW9kdWxlX1R5cGU9cHl0aG9uMzMuUHlNb2R1bGVfVHlwZSBEQVRBCisgIFB5TnVsbEltcG9ydGVyX1R5cGU9cHl0aG9uMzMuUHlOdWxsSW1wb3J0ZXJfVHlwZSBEQVRBCisgIFB5TnVtYmVyX0Fic29sdXRlPXB5dGhvbjMzLlB5TnVtYmVyX0Fic29sdXRlCisgIFB5TnVtYmVyX0FkZD1weXRob24zMy5QeU51bWJlcl9BZGQKKyAgUHlOdW1iZXJfQW5kPXB5dGhvbjMzLlB5TnVtYmVyX0FuZAorICBQeU51bWJlcl9Bc1NzaXplX3Q9cHl0aG9uMzMuUHlOdW1iZXJfQXNTc2l6ZV90CisgIFB5TnVtYmVyX0NoZWNrPXB5dGhvbjMzLlB5TnVtYmVyX0NoZWNrCisgIFB5TnVtYmVyX0Rpdm1vZD1weXRob24zMy5QeU51bWJlcl9EaXZtb2QKKyAgUHlOdW1iZXJfRmxvYXQ9cHl0aG9uMzMuUHlOdW1iZXJfRmxvYXQKKyAgUHlOdW1iZXJfRmxvb3JEaXZpZGU9cHl0aG9uMzMuUHlOdW1iZXJfRmxvb3JEaXZpZGUKKyAgUHlOdW1iZXJfSW5QbGFjZUFkZD1weXRob24zMy5QeU51bWJlcl9JblBsYWNlQWRkCisgIFB5TnVtYmVyX0luUGxhY2VBbmQ9cHl0aG9uMzMuUHlOdW1iZXJfSW5QbGFjZUFuZAorICBQeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGU9cHl0aG9uMzMuUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlCisgIFB5TnVtYmVyX0luUGxhY2VMc2hpZnQ9cHl0aG9uMzMuUHlOdW1iZXJfSW5QbGFjZUxzaGlmdAorICBQeU51bWJlcl9JblBsYWNlTXVsdGlwbHk9cHl0aG9uMzMuUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5CisgIFB5TnVtYmVyX0luUGxhY2VPcj1weXRob24zMy5QeU51bWJlcl9JblBsYWNlT3IKKyAgUHlOdW1iZXJfSW5QbGFjZVBvd2VyPXB5dGhvbjMzLlB5TnVtYmVyX0luUGxhY2VQb3dlcgorICBQeU51bWJlcl9JblBsYWNlUmVtYWluZGVyPXB5dGhvbjMzLlB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXIKKyAgUHlOdW1iZXJfSW5QbGFjZVJzaGlmdD1weXRob24zMy5QeU51bWJlcl9JblBsYWNlUnNoaWZ0CisgIFB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdD1weXRob24zMy5QeU51bWJlcl9JblBsYWNlU3VidHJhY3QKKyAgUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGU9cHl0aG9uMzMuUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGUKKyAgUHlOdW1iZXJfSW5QbGFjZVhvcj1weXRob24zMy5QeU51bWJlcl9JblBsYWNlWG9yCisgIFB5TnVtYmVyX0luZGV4PXB5dGhvbjMzLlB5TnVtYmVyX0luZGV4CisgIFB5TnVtYmVyX0ludmVydD1weXRob24zMy5QeU51bWJlcl9JbnZlcnQKKyAgUHlOdW1iZXJfTG9uZz1weXRob24zMy5QeU51bWJlcl9Mb25nCisgIFB5TnVtYmVyX0xzaGlmdD1weXRob24zMy5QeU51bWJlcl9Mc2hpZnQKKyAgUHlOdW1iZXJfTXVsdGlwbHk9cHl0aG9uMzMuUHlOdW1iZXJfTXVsdGlwbHkKKyAgUHlOdW1iZXJfTmVnYXRpdmU9cHl0aG9uMzMuUHlOdW1iZXJfTmVnYXRpdmUKKyAgUHlOdW1iZXJfT3I9cHl0aG9uMzMuUHlOdW1iZXJfT3IKKyAgUHlOdW1iZXJfUG9zaXRpdmU9cHl0aG9uMzMuUHlOdW1iZXJfUG9zaXRpdmUKKyAgUHlOdW1iZXJfUG93ZXI9cHl0aG9uMzMuUHlOdW1iZXJfUG93ZXIKKyAgUHlOdW1iZXJfUmVtYWluZGVyPXB5dGhvbjMzLlB5TnVtYmVyX1JlbWFpbmRlcgorICBQeU51bWJlcl9Sc2hpZnQ9cHl0aG9uMzMuUHlOdW1iZXJfUnNoaWZ0CisgIFB5TnVtYmVyX1N1YnRyYWN0PXB5dGhvbjMzLlB5TnVtYmVyX1N1YnRyYWN0CisgIFB5TnVtYmVyX1RvQmFzZT1weXRob24zMy5QeU51bWJlcl9Ub0Jhc2UKKyAgUHlOdW1iZXJfVHJ1ZURpdmlkZT1weXRob24zMy5QeU51bWJlcl9UcnVlRGl2aWRlCisgIFB5TnVtYmVyX1hvcj1weXRob24zMy5QeU51bWJlcl9Yb3IKKyAgUHlPU19BZnRlckZvcms9cHl0aG9uMzMuUHlPU19BZnRlckZvcmsKKyAgUHlPU19Jbml0SW50ZXJydXB0cz1weXRob24zMy5QeU9TX0luaXRJbnRlcnJ1cHRzCisgIFB5T1NfSW5wdXRIb29rPXB5dGhvbjMzLlB5T1NfSW5wdXRIb29rIERBVEEKKyAgUHlPU19JbnRlcnJ1cHRPY2N1cnJlZD1weXRob24zMy5QeU9TX0ludGVycnVwdE9jY3VycmVkCisgIFB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXI9cHl0aG9uMzMuUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlciBEQVRBCisgIFB5T1NfZG91YmxlX3RvX3N0cmluZz1weXRob24zMy5QeU9TX2RvdWJsZV90b19zdHJpbmcKKyAgUHlPU19nZXRzaWc9cHl0aG9uMzMuUHlPU19nZXRzaWcKKyAgUHlPU19teXN0cmljbXA9cHl0aG9uMzMuUHlPU19teXN0cmljbXAKKyAgUHlPU19teXN0cm5pY21wPXB5dGhvbjMzLlB5T1NfbXlzdHJuaWNtcAorICBQeU9TX3NldHNpZz1weXRob24zMy5QeU9TX3NldHNpZworICBQeU9TX3NucHJpbnRmPXB5dGhvbjMzLlB5T1Nfc25wcmludGYKKyAgUHlPU19zdHJpbmdfdG9fZG91YmxlPXB5dGhvbjMzLlB5T1Nfc3RyaW5nX3RvX2RvdWJsZQorICBQeU9TX3N0cnRvbD1weXRob24zMy5QeU9TX3N0cnRvbAorICBQeU9TX3N0cnRvdWw9cHl0aG9uMzMuUHlPU19zdHJ0b3VsCisgIFB5T1NfdnNucHJpbnRmPXB5dGhvbjMzLlB5T1NfdnNucHJpbnRmCisgIFB5T2JqZWN0X0FTQ0lJPXB5dGhvbjMzLlB5T2JqZWN0X0FTQ0lJCisgIFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcj1weXRob24zMy5QeU9iamVjdF9Bc0NoYXJCdWZmZXIKKyAgUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcj1weXRob24zMy5QeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yCisgIFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcj1weXRob24zMy5QeU9iamVjdF9Bc1JlYWRCdWZmZXIKKyAgUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcj1weXRob24zMy5QeU9iamVjdF9Bc1dyaXRlQnVmZmVyCisgIFB5T2JqZWN0X0J5dGVzPXB5dGhvbjMzLlB5T2JqZWN0X0J5dGVzCisgIFB5T2JqZWN0X0NhbGw9cHl0aG9uMzMuUHlPYmplY3RfQ2FsbAorICBQeU9iamVjdF9DYWxsRnVuY3Rpb249cHl0aG9uMzMuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uCisgIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3M9cHl0aG9uMzMuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncworICBQeU9iamVjdF9DYWxsTWV0aG9kPXB5dGhvbjMzLlB5T2JqZWN0X0NhbGxNZXRob2QKKyAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3M9cHl0aG9uMzMuUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MKKyAgUHlPYmplY3RfQ2FsbE9iamVjdD1weXRob24zMy5QeU9iamVjdF9DYWxsT2JqZWN0CisgIFB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcj1weXRob24zMy5QeU9iamVjdF9DaGVja1JlYWRCdWZmZXIKKyAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcz1weXRob24zMy5QeU9iamVjdF9DbGVhcldlYWtSZWZzCisgIFB5T2JqZWN0X0RlbEl0ZW09cHl0aG9uMzMuUHlPYmplY3RfRGVsSXRlbQorICBQeU9iamVjdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjMzLlB5T2JqZWN0X0RlbEl0ZW1TdHJpbmcKKyAgUHlPYmplY3RfRGlyPXB5dGhvbjMzLlB5T2JqZWN0X0RpcgorICBQeU9iamVjdF9Gb3JtYXQ9cHl0aG9uMzMuUHlPYmplY3RfRm9ybWF0CisgIFB5T2JqZWN0X0ZyZWU9cHl0aG9uMzMuUHlPYmplY3RfRnJlZQorICBQeU9iamVjdF9HQ19EZWw9cHl0aG9uMzMuUHlPYmplY3RfR0NfRGVsCisgIFB5T2JqZWN0X0dDX1RyYWNrPXB5dGhvbjMzLlB5T2JqZWN0X0dDX1RyYWNrCisgIFB5T2JqZWN0X0dDX1VuVHJhY2s9cHl0aG9uMzMuUHlPYmplY3RfR0NfVW5UcmFjaworICBQeU9iamVjdF9HZW5lcmljR2V0QXR0cj1weXRob24zMy5QeU9iamVjdF9HZW5lcmljR2V0QXR0cgorICBQeU9iamVjdF9HZW5lcmljU2V0QXR0cj1weXRob24zMy5QeU9iamVjdF9HZW5lcmljU2V0QXR0cgorICBQeU9iamVjdF9HZXRBdHRyPXB5dGhvbjMzLlB5T2JqZWN0X0dldEF0dHIKKyAgUHlPYmplY3RfR2V0QXR0clN0cmluZz1weXRob24zMy5QeU9iamVjdF9HZXRBdHRyU3RyaW5nCisgIFB5T2JqZWN0X0dldEl0ZW09cHl0aG9uMzMuUHlPYmplY3RfR2V0SXRlbQorICBQeU9iamVjdF9HZXRJdGVyPXB5dGhvbjMzLlB5T2JqZWN0X0dldEl0ZXIKKyAgUHlPYmplY3RfSGFzQXR0cj1weXRob24zMy5QeU9iamVjdF9IYXNBdHRyCisgIFB5T2JqZWN0X0hhc0F0dHJTdHJpbmc9cHl0aG9uMzMuUHlPYmplY3RfSGFzQXR0clN0cmluZworICBQeU9iamVjdF9IYXNoPXB5dGhvbjMzLlB5T2JqZWN0X0hhc2gKKyAgUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkPXB5dGhvbjMzLlB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZAorICBQeU9iamVjdF9Jbml0PXB5dGhvbjMzLlB5T2JqZWN0X0luaXQKKyAgUHlPYmplY3RfSW5pdFZhcj1weXRob24zMy5QeU9iamVjdF9Jbml0VmFyCisgIFB5T2JqZWN0X0lzSW5zdGFuY2U9cHl0aG9uMzMuUHlPYmplY3RfSXNJbnN0YW5jZQorICBQeU9iamVjdF9Jc1N1YmNsYXNzPXB5dGhvbjMzLlB5T2JqZWN0X0lzU3ViY2xhc3MKKyAgUHlPYmplY3RfSXNUcnVlPXB5dGhvbjMzLlB5T2JqZWN0X0lzVHJ1ZQorICBQeU9iamVjdF9MZW5ndGg9cHl0aG9uMzMuUHlPYmplY3RfTGVuZ3RoCisgIFB5T2JqZWN0X01hbGxvYz1weXRob24zMy5QeU9iamVjdF9NYWxsb2MKKyAgUHlPYmplY3RfTm90PXB5dGhvbjMzLlB5T2JqZWN0X05vdAorICBQeU9iamVjdF9SZWFsbG9jPXB5dGhvbjMzLlB5T2JqZWN0X1JlYWxsb2MKKyAgUHlPYmplY3RfUmVwcj1weXRob24zMy5QeU9iamVjdF9SZXByCisgIFB5T2JqZWN0X1JpY2hDb21wYXJlPXB5dGhvbjMzLlB5T2JqZWN0X1JpY2hDb21wYXJlCisgIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbD1weXRob24zMy5QeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wKKyAgUHlPYmplY3RfU2VsZkl0ZXI9cHl0aG9uMzMuUHlPYmplY3RfU2VsZkl0ZXIKKyAgUHlPYmplY3RfU2V0QXR0cj1weXRob24zMy5QeU9iamVjdF9TZXRBdHRyCisgIFB5T2JqZWN0X1NldEF0dHJTdHJpbmc9cHl0aG9uMzMuUHlPYmplY3RfU2V0QXR0clN0cmluZworICBQeU9iamVjdF9TZXRJdGVtPXB5dGhvbjMzLlB5T2JqZWN0X1NldEl0ZW0KKyAgUHlPYmplY3RfU2l6ZT1weXRob24zMy5QeU9iamVjdF9TaXplCisgIFB5T2JqZWN0X1N0cj1weXRob24zMy5QeU9iamVjdF9TdHIKKyAgUHlPYmplY3RfVHlwZT1weXRob24zMy5QeU9iamVjdF9UeXBlIERBVEEKKyAgUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3M9cHl0aG9uMzMuUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3MKKyAgUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncz1weXRob24zMy5QeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzCisgIFB5UHJvcGVydHlfVHlwZT1weXRob24zMy5QeVByb3BlcnR5X1R5cGUgREFUQQorICBQeVJhbmdlSXRlcl9UeXBlPXB5dGhvbjMzLlB5UmFuZ2VJdGVyX1R5cGUgREFUQQorICBQeVJhbmdlX1R5cGU9cHl0aG9uMzMuUHlSYW5nZV9UeXBlIERBVEEKKyAgUHlSZXZlcnNlZF9UeXBlPXB5dGhvbjMzLlB5UmV2ZXJzZWRfVHlwZSBEQVRBCisgIFB5U2VxSXRlcl9OZXc9cHl0aG9uMzMuUHlTZXFJdGVyX05ldworICBQeVNlcUl0ZXJfVHlwZT1weXRob24zMy5QeVNlcUl0ZXJfVHlwZSBEQVRBCisgIFB5U2VxdWVuY2VfQ2hlY2s9cHl0aG9uMzMuUHlTZXF1ZW5jZV9DaGVjaworICBQeVNlcXVlbmNlX0NvbmNhdD1weXRob24zMy5QeVNlcXVlbmNlX0NvbmNhdAorICBQeVNlcXVlbmNlX0NvbnRhaW5zPXB5dGhvbjMzLlB5U2VxdWVuY2VfQ29udGFpbnMKKyAgUHlTZXF1ZW5jZV9Db3VudD1weXRob24zMy5QeVNlcXVlbmNlX0NvdW50CisgIFB5U2VxdWVuY2VfRGVsSXRlbT1weXRob24zMy5QeVNlcXVlbmNlX0RlbEl0ZW0KKyAgUHlTZXF1ZW5jZV9EZWxTbGljZT1weXRob24zMy5QeVNlcXVlbmNlX0RlbFNsaWNlCisgIFB5U2VxdWVuY2VfRmFzdD1weXRob24zMy5QeVNlcXVlbmNlX0Zhc3QKKyAgUHlTZXF1ZW5jZV9HZXRJdGVtPXB5dGhvbjMzLlB5U2VxdWVuY2VfR2V0SXRlbQorICBQeVNlcXVlbmNlX0dldFNsaWNlPXB5dGhvbjMzLlB5U2VxdWVuY2VfR2V0U2xpY2UKKyAgUHlTZXF1ZW5jZV9Jbj1weXRob24zMy5QeVNlcXVlbmNlX0luCisgIFB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdD1weXRob24zMy5QeVNlcXVlbmNlX0luUGxhY2VDb25jYXQKKyAgUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0PXB5dGhvbjMzLlB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdAorICBQeVNlcXVlbmNlX0luZGV4PXB5dGhvbjMzLlB5U2VxdWVuY2VfSW5kZXgKKyAgUHlTZXF1ZW5jZV9MZW5ndGg9cHl0aG9uMzMuUHlTZXF1ZW5jZV9MZW5ndGgKKyAgUHlTZXF1ZW5jZV9MaXN0PXB5dGhvbjMzLlB5U2VxdWVuY2VfTGlzdAorICBQeVNlcXVlbmNlX1JlcGVhdD1weXRob24zMy5QeVNlcXVlbmNlX1JlcGVhdAorICBQeVNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzMuUHlTZXF1ZW5jZV9TZXRJdGVtCisgIFB5U2VxdWVuY2VfU2V0U2xpY2U9cHl0aG9uMzMuUHlTZXF1ZW5jZV9TZXRTbGljZQorICBQeVNlcXVlbmNlX1NpemU9cHl0aG9uMzMuUHlTZXF1ZW5jZV9TaXplCisgIFB5U2VxdWVuY2VfVHVwbGU9cHl0aG9uMzMuUHlTZXF1ZW5jZV9UdXBsZQorICBQeVNldEl0ZXJfVHlwZT1weXRob24zMy5QeVNldEl0ZXJfVHlwZSBEQVRBCisgIFB5U2V0X0FkZD1weXRob24zMy5QeVNldF9BZGQKKyAgUHlTZXRfQ2xlYXI9cHl0aG9uMzMuUHlTZXRfQ2xlYXIKKyAgUHlTZXRfQ29udGFpbnM9cHl0aG9uMzMuUHlTZXRfQ29udGFpbnMKKyAgUHlTZXRfRGlzY2FyZD1weXRob24zMy5QeVNldF9EaXNjYXJkCisgIFB5U2V0X05ldz1weXRob24zMy5QeVNldF9OZXcKKyAgUHlTZXRfUG9wPXB5dGhvbjMzLlB5U2V0X1BvcAorICBQeVNldF9TaXplPXB5dGhvbjMzLlB5U2V0X1NpemUKKyAgUHlTZXRfVHlwZT1weXRob24zMy5QeVNldF9UeXBlIERBVEEKKyAgUHlTbGljZV9HZXRJbmRpY2VzPXB5dGhvbjMzLlB5U2xpY2VfR2V0SW5kaWNlcworICBQeVNsaWNlX0dldEluZGljZXNFeD1weXRob24zMy5QeVNsaWNlX0dldEluZGljZXNFeAorICBQeVNsaWNlX05ldz1weXRob24zMy5QeVNsaWNlX05ldworICBQeVNsaWNlX1R5cGU9cHl0aG9uMzMuUHlTbGljZV9UeXBlIERBVEEKKyAgUHlTb3J0V3JhcHBlcl9UeXBlPXB5dGhvbjMzLlB5U29ydFdyYXBwZXJfVHlwZSBEQVRBCisgIFB5U3RhdGVfRmluZE1vZHVsZT1weXRob24zMy5QeVN0YXRlX0ZpbmRNb2R1bGUKKyAgUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzMuUHlTdGF0ZV9BZGRNb2R1bGUKKyAgUHlTdGF0ZV9SZW1vdmVNb2R1bGU9cHl0aG9uMzMuUHlTdGF0ZV9SZW1vdmVNb2R1bGUKKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtPXB5dGhvbjMzLlB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbQorICBQeVN0cnVjdFNlcXVlbmNlX05ldz1weXRob24zMy5QeVN0cnVjdFNlcXVlbmNlX05ldworICBQeVN0cnVjdFNlcXVlbmNlX05ld1R5cGU9cHl0aG9uMzMuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlCisgIFB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbT1weXRob24zMy5QeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW0KKyAgUHlTdXBlcl9UeXBlPXB5dGhvbjMzLlB5U3VwZXJfVHlwZSBEQVRBCisgIFB5U3lzX0FkZFdhcm5PcHRpb249cHl0aG9uMzMuUHlTeXNfQWRkV2Fybk9wdGlvbgorICBQeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZT1weXRob24zMy5QeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZQorICBQeVN5c19Gb3JtYXRTdGRlcnI9cHl0aG9uMzMuUHlTeXNfRm9ybWF0U3RkZXJyCisgIFB5U3lzX0Zvcm1hdFN0ZG91dD1weXRob24zMy5QeVN5c19Gb3JtYXRTdGRvdXQKKyAgUHlTeXNfR2V0T2JqZWN0PXB5dGhvbjMzLlB5U3lzX0dldE9iamVjdAorICBQeVN5c19IYXNXYXJuT3B0aW9ucz1weXRob24zMy5QeVN5c19IYXNXYXJuT3B0aW9ucworICBQeVN5c19SZXNldFdhcm5PcHRpb25zPXB5dGhvbjMzLlB5U3lzX1Jlc2V0V2Fybk9wdGlvbnMKKyAgUHlTeXNfU2V0QXJndj1weXRob24zMy5QeVN5c19TZXRBcmd2CisgIFB5U3lzX1NldEFyZ3ZFeD1weXRob24zMy5QeVN5c19TZXRBcmd2RXgKKyAgUHlTeXNfU2V0T2JqZWN0PXB5dGhvbjMzLlB5U3lzX1NldE9iamVjdAorICBQeVN5c19TZXRQYXRoPXB5dGhvbjMzLlB5U3lzX1NldFBhdGgKKyAgUHlTeXNfV3JpdGVTdGRlcnI9cHl0aG9uMzMuUHlTeXNfV3JpdGVTdGRlcnIKKyAgUHlTeXNfV3JpdGVTdGRvdXQ9cHl0aG9uMzMuUHlTeXNfV3JpdGVTdGRvdXQKKyAgUHlUaHJlYWRTdGF0ZV9DbGVhcj1weXRob24zMy5QeVRocmVhZFN0YXRlX0NsZWFyCisgIFB5VGhyZWFkU3RhdGVfRGVsZXRlPXB5dGhvbjMzLlB5VGhyZWFkU3RhdGVfRGVsZXRlCisgIFB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudD1weXRob24zMy5QeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQKKyAgUHlUaHJlYWRTdGF0ZV9HZXQ9cHl0aG9uMzMuUHlUaHJlYWRTdGF0ZV9HZXQKKyAgUHlUaHJlYWRTdGF0ZV9HZXREaWN0PXB5dGhvbjMzLlB5VGhyZWFkU3RhdGVfR2V0RGljdAorICBQeVRocmVhZFN0YXRlX05ldz1weXRob24zMy5QeVRocmVhZFN0YXRlX05ldworICBQeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjPXB5dGhvbjMzLlB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGMKKyAgUHlUaHJlYWRTdGF0ZV9Td2FwPXB5dGhvbjMzLlB5VGhyZWFkU3RhdGVfU3dhcAorICBQeVRyYWNlQmFja19IZXJlPXB5dGhvbjMzLlB5VHJhY2VCYWNrX0hlcmUKKyAgUHlUcmFjZUJhY2tfUHJpbnQ9cHl0aG9uMzMuUHlUcmFjZUJhY2tfUHJpbnQKKyAgUHlUcmFjZUJhY2tfVHlwZT1weXRob24zMy5QeVRyYWNlQmFja19UeXBlIERBVEEKKyAgUHlUdXBsZUl0ZXJfVHlwZT1weXRob24zMy5QeVR1cGxlSXRlcl9UeXBlIERBVEEKKyAgUHlUdXBsZV9DbGVhckZyZWVMaXN0PXB5dGhvbjMzLlB5VHVwbGVfQ2xlYXJGcmVlTGlzdAorICBQeVR1cGxlX0dldEl0ZW09cHl0aG9uMzMuUHlUdXBsZV9HZXRJdGVtCisgIFB5VHVwbGVfR2V0U2xpY2U9cHl0aG9uMzMuUHlUdXBsZV9HZXRTbGljZQorICBQeVR1cGxlX05ldz1weXRob24zMy5QeVR1cGxlX05ldworICBQeVR1cGxlX1BhY2s9cHl0aG9uMzMuUHlUdXBsZV9QYWNrCisgIFB5VHVwbGVfU2V0SXRlbT1weXRob24zMy5QeVR1cGxlX1NldEl0ZW0KKyAgUHlUdXBsZV9TaXplPXB5dGhvbjMzLlB5VHVwbGVfU2l6ZQorICBQeVR1cGxlX1R5cGU9cHl0aG9uMzMuUHlUdXBsZV9UeXBlIERBVEEKKyAgUHlUeXBlX0NsZWFyQ2FjaGU9cHl0aG9uMzMuUHlUeXBlX0NsZWFyQ2FjaGUKKyAgUHlUeXBlX0Zyb21TcGVjPXB5dGhvbjMzLlB5VHlwZV9Gcm9tU3BlYworICBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXM9cHl0aG9uMzMuUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzCisgIFB5VHlwZV9HZW5lcmljQWxsb2M9cHl0aG9uMzMuUHlUeXBlX0dlbmVyaWNBbGxvYworICBQeVR5cGVfR2VuZXJpY05ldz1weXRob24zMy5QeVR5cGVfR2VuZXJpY05ldworICBQeVR5cGVfR2V0RmxhZ3M9cHl0aG9uMzMuUHlUeXBlX0dldEZsYWdzCisgIFB5VHlwZV9Jc1N1YnR5cGU9cHl0aG9uMzMuUHlUeXBlX0lzU3VidHlwZQorICBQeVR5cGVfTW9kaWZpZWQ9cHl0aG9uMzMuUHlUeXBlX01vZGlmaWVkCisgIFB5VHlwZV9SZWFkeT1weXRob24zMy5QeVR5cGVfUmVhZHkKKyAgUHlUeXBlX1R5cGU9cHl0aG9uMzMuUHlUeXBlX1R5cGUgREFUQQorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGU9cHl0aG9uMzMuUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjMzLlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZD1weXRob24zMy5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjMzLlB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzMuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjMzLlB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0CisgIFB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZD1weXRob24zMy5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjMzLlB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbgorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zMy5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zMy5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZworICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzMuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kCisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdD1weXRob24zMy5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3QKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjMzLlB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbgorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zMy5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzMuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kCisgIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zMy5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb24KKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzMuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQKKyAgUHlVbmljb2RlSXRlcl9UeXBlPXB5dGhvbjMzLlB5VW5pY29kZUl0ZXJfVHlwZSBEQVRBCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZD1weXRob24zMy5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjMzLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzMuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0PXB5dGhvbjMzLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0CisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZD1weXRob24zMy5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjMzLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbgorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydD1weXRob24zMy5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydAorICBQeVVuaWNvZGVfQXBwZW5kPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXBwZW5kCisgIFB5VW5pY29kZV9BcHBlbmRBbmREZWw9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9BcHBlbmRBbmREZWwKKyAgUHlVbmljb2RlX0FzQVNDSUlTdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc0FTQ0lJU3RyaW5nCisgIFB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc0NoYXJtYXBTdHJpbmcKKyAgUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzRGVjb2RlZE9iamVjdAorICBQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzRGVjb2RlZFVuaWNvZGUKKyAgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzRW5jb2RlZE9iamVjdAorICBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNFbmNvZGVkU3RyaW5nCisgIFB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNFbmNvZGVkVW5pY29kZQorICBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc0xhdGluMVN0cmluZworICBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjE2U3RyaW5nPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNVVEYxNlN0cmluZworICBQeVVuaWNvZGVfQXNVVEYzMlN0cmluZz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzVVRGMzJTdHJpbmcKKyAgUHlVbmljb2RlX0FzVVRGOFN0cmluZz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzVVRGOFN0cmluZworICBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNVbmljb2RlRXNjYXBlU3RyaW5nCisgIFB5VW5pY29kZV9Bc1dpZGVDaGFyPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNXaWRlQ2hhcgorICBQeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0NsZWFyRnJlZWxpc3QKKyAgUHlVbmljb2RlX0NvbXBhcmU9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Db21wYXJlCisgIFB5VW5pY29kZV9Db25jYXQ9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Db25jYXQKKyAgUHlVbmljb2RlX0NvbnRhaW5zPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQ29udGFpbnMKKyAgUHlVbmljb2RlX0NvdW50PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQ291bnQKKyAgUHlVbmljb2RlX0RlY29kZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZQorICBQeVVuaWNvZGVfRGVjb2RlQVNDSUk9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9EZWNvZGVBU0NJSQorICBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZUNoYXJtYXAKKyAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZUZTRGVmYXVsdAorICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZUZTRGVmYXVsdEFuZFNpemUKKyAgUHlVbmljb2RlX0RlY29kZUxhdGluMT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZUxhdGluMQorICBQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUKKyAgUHlVbmljb2RlX0RlY29kZVVURjE2PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMTYKKyAgUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWw9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9EZWNvZGVVVEYxNlN0YXRlZnVsCisgIFB5VW5pY29kZV9EZWNvZGVVVEYzMj1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZVVURjMyCisgIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMzJTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVVRGOD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZVVURjgKKyAgUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZVVURjhTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZVVuaWNvZGVFc2NhcGUKKyAgUHlVbmljb2RlX0ZTQ29udmVydGVyPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRlNDb252ZXJ0ZXIKKyAgUHlVbmljb2RlX0ZTRGVjb2Rlcj1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0ZTRGVjb2RlcgorICBQeVVuaWNvZGVfRmluZD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0ZpbmQKKyAgUHlVbmljb2RlX0Zvcm1hdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0Zvcm1hdAorICBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3Q9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Gcm9tRW5jb2RlZE9iamVjdAorICBQeVVuaWNvZGVfRnJvbUZvcm1hdD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0Zyb21Gb3JtYXQKKyAgUHlVbmljb2RlX0Zyb21Gb3JtYXRWPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRnJvbUZvcm1hdFYKKyAgUHlVbmljb2RlX0Zyb21PYmplY3Q9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Gcm9tT2JqZWN0CisgIFB5VW5pY29kZV9Gcm9tT3JkaW5hbD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0Zyb21PcmRpbmFsCisgIFB5VW5pY29kZV9Gcm9tU3RyaW5nPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRnJvbVN0cmluZworICBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Gcm9tU3RyaW5nQW5kU2l6ZQorICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRnJvbVdpZGVDaGFyCisgIFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9HZXREZWZhdWx0RW5jb2RpbmcKKyAgUHlVbmljb2RlX0dldFNpemU9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9HZXRTaXplCisgIFB5VW5pY29kZV9Jc0lkZW50aWZpZXI9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Jc0lkZW50aWZpZXIKKyAgUHlVbmljb2RlX0pvaW49cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Kb2luCisgIFB5VW5pY29kZV9QYXJ0aXRpb249cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9QYXJ0aXRpb24KKyAgUHlVbmljb2RlX1JQYXJ0aXRpb249cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9SUGFydGl0aW9uCisgIFB5VW5pY29kZV9SU3BsaXQ9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9SU3BsaXQKKyAgUHlVbmljb2RlX1JlcGxhY2U9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9SZXBsYWNlCisgIFB5VW5pY29kZV9SZXNpemU9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9SZXNpemUKKyAgUHlVbmljb2RlX1JpY2hDb21wYXJlPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfUmljaENvbXBhcmUKKyAgUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX1NldERlZmF1bHRFbmNvZGluZworICBQeVVuaWNvZGVfU3BsaXQ9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9TcGxpdAorICBQeVVuaWNvZGVfU3BsaXRsaW5lcz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX1NwbGl0bGluZXMKKyAgUHlVbmljb2RlX1RhaWxtYXRjaD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX1RhaWxtYXRjaAorICBQeVVuaWNvZGVfVHJhbnNsYXRlPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfVHJhbnNsYXRlCisgIFB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwPXB5dGhvbjMzLlB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwCisgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nPXB5dGhvbjMzLlB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nCisgIFB5VW5pY29kZV9EZWNvZGVVVEY3PXB5dGhvbjMzLlB5VW5pY29kZV9EZWNvZGVVVEY3CisgIFB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWw9cHl0aG9uMzMuUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0PXB5dGhvbjMzLlB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQKKyAgUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcKKyAgUHlVbmljb2RlX0ludGVybkltbW9ydGFsPXB5dGhvbjMzLlB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbAorICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZT1weXRob24zMy5QeVVuaWNvZGVfSW50ZXJuSW5QbGFjZQorICBQeVVuaWNvZGVfVHlwZT1weXRob24zMy5QeVVuaWNvZGVfVHlwZSBEQVRBCisgIFB5V2Vha3JlZl9HZXRPYmplY3Q9cHl0aG9uMzMuUHlXZWFrcmVmX0dldE9iamVjdCBEQVRBCisgIFB5V2Vha3JlZl9OZXdQcm94eT1weXRob24zMy5QeVdlYWtyZWZfTmV3UHJveHkKKyAgUHlXZWFrcmVmX05ld1JlZj1weXRob24zMy5QeVdlYWtyZWZfTmV3UmVmCisgIFB5V3JhcHBlckRlc2NyX1R5cGU9cHl0aG9uMzMuUHlXcmFwcGVyRGVzY3JfVHlwZSBEQVRBCisgIFB5V3JhcHBlcl9OZXc9cHl0aG9uMzMuUHlXcmFwcGVyX05ldworICBQeVppcF9UeXBlPXB5dGhvbjMzLlB5WmlwX1R5cGUgREFUQQorICBQeV9BZGRQZW5kaW5nQ2FsbD1weXRob24zMy5QeV9BZGRQZW5kaW5nQ2FsbAorICBQeV9BdEV4aXQ9cHl0aG9uMzMuUHlfQXRFeGl0CisgIFB5X0J1aWxkVmFsdWU9cHl0aG9uMzMuUHlfQnVpbGRWYWx1ZQorICBQeV9Db21waWxlU3RyaW5nPXB5dGhvbjMzLlB5X0NvbXBpbGVTdHJpbmcKKyAgUHlfRGVjUmVmPXB5dGhvbjMzLlB5X0RlY1JlZgorICBQeV9FbmRJbnRlcnByZXRlcj1weXRob24zMy5QeV9FbmRJbnRlcnByZXRlcgorICBQeV9FeGl0PXB5dGhvbjMzLlB5X0V4aXQKKyAgUHlfRmF0YWxFcnJvcj1weXRob24zMy5QeV9GYXRhbEVycm9yCisgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzMuUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBEQVRBCisgIFB5X0ZpbmFsaXplPXB5dGhvbjMzLlB5X0ZpbmFsaXplCisgIFB5X0dldEJ1aWxkSW5mbz1weXRob24zMy5QeV9HZXRCdWlsZEluZm8KKyAgUHlfR2V0Q29tcGlsZXI9cHl0aG9uMzMuUHlfR2V0Q29tcGlsZXIKKyAgUHlfR2V0Q29weXJpZ2h0PXB5dGhvbjMzLlB5X0dldENvcHlyaWdodAorICBQeV9HZXRFeGVjUHJlZml4PXB5dGhvbjMzLlB5X0dldEV4ZWNQcmVmaXgKKyAgUHlfR2V0UGF0aD1weXRob24zMy5QeV9HZXRQYXRoCisgIFB5X0dldFBsYXRmb3JtPXB5dGhvbjMzLlB5X0dldFBsYXRmb3JtCisgIFB5X0dldFByZWZpeD1weXRob24zMy5QeV9HZXRQcmVmaXgKKyAgUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoPXB5dGhvbjMzLlB5X0dldFByb2dyYW1GdWxsUGF0aAorICBQeV9HZXRQcm9ncmFtTmFtZT1weXRob24zMy5QeV9HZXRQcm9ncmFtTmFtZQorICBQeV9HZXRQeXRob25Ib21lPXB5dGhvbjMzLlB5X0dldFB5dGhvbkhvbWUKKyAgUHlfR2V0UmVjdXJzaW9uTGltaXQ9cHl0aG9uMzMuUHlfR2V0UmVjdXJzaW9uTGltaXQKKyAgUHlfR2V0VmVyc2lvbj1weXRob24zMy5QeV9HZXRWZXJzaW9uCisgIFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzMuUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBEQVRBCisgIFB5X0luY1JlZj1weXRob24zMy5QeV9JbmNSZWYKKyAgUHlfSW5pdGlhbGl6ZT1weXRob24zMy5QeV9Jbml0aWFsaXplCisgIFB5X0luaXRpYWxpemVFeD1weXRob24zMy5QeV9Jbml0aWFsaXplRXgKKyAgUHlfSXNJbml0aWFsaXplZD1weXRob24zMy5QeV9Jc0luaXRpYWxpemVkCisgIFB5X01haW49cHl0aG9uMzMuUHlfTWFpbgorICBQeV9NYWtlUGVuZGluZ0NhbGxzPXB5dGhvbjMzLlB5X01ha2VQZW5kaW5nQ2FsbHMKKyAgUHlfTmV3SW50ZXJwcmV0ZXI9cHl0aG9uMzMuUHlfTmV3SW50ZXJwcmV0ZXIKKyAgUHlfUmVwckVudGVyPXB5dGhvbjMzLlB5X1JlcHJFbnRlcgorICBQeV9SZXByTGVhdmU9cHl0aG9uMzMuUHlfUmVwckxlYXZlCisgIFB5X1NldFByb2dyYW1OYW1lPXB5dGhvbjMzLlB5X1NldFByb2dyYW1OYW1lCisgIFB5X1NldFB5dGhvbkhvbWU9cHl0aG9uMzMuUHlfU2V0UHl0aG9uSG9tZQorICBQeV9TZXRSZWN1cnNpb25MaW1pdD1weXRob24zMy5QeV9TZXRSZWN1cnNpb25MaW1pdAorICBQeV9TeW10YWJsZVN0cmluZz1weXRob24zMy5QeV9TeW10YWJsZVN0cmluZworICBQeV9WYUJ1aWxkVmFsdWU9cHl0aG9uMzMuUHlfVmFCdWlsZFZhbHVlCisgIF9QeUVycl9CYWRJbnRlcm5hbENhbGw9cHl0aG9uMzMuX1B5RXJyX0JhZEludGVybmFsQ2FsbAorICBfUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUPXB5dGhvbjMzLl9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQKKyAgX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQ9cHl0aG9uMzMuX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQKKyAgX1B5T2JqZWN0X0dDX01hbGxvYz1weXRob24zMy5fUHlPYmplY3RfR0NfTWFsbG9jCisgIF9QeU9iamVjdF9HQ19OZXc9cHl0aG9uMzMuX1B5T2JqZWN0X0dDX05ldworICBfUHlPYmplY3RfR0NfTmV3VmFyPXB5dGhvbjMzLl9QeU9iamVjdF9HQ19OZXdWYXIKKyAgX1B5T2JqZWN0X0dDX1Jlc2l6ZT1weXRob24zMy5fUHlPYmplY3RfR0NfUmVzaXplCisgIF9QeU9iamVjdF9OZXc9cHl0aG9uMzMuX1B5T2JqZWN0X05ldworICBfUHlPYmplY3RfTmV3VmFyPXB5dGhvbjMzLl9QeU9iamVjdF9OZXdWYXIKKyAgX1B5U3RhdGVfQWRkTW9kdWxlPXB5dGhvbjMzLl9QeVN0YXRlX0FkZE1vZHVsZQorICBfUHlUaHJlYWRTdGF0ZV9Jbml0PXB5dGhvbjMzLl9QeVRocmVhZFN0YXRlX0luaXQKKyAgX1B5VGhyZWFkU3RhdGVfUHJlYWxsb2M9cHl0aG9uMzMuX1B5VGhyZWFkU3RhdGVfUHJlYWxsb2MKKyAgX1B5VHJhc2hfZGVsZXRlX2xhdGVyPXB5dGhvbjMzLl9QeVRyYXNoX2RlbGV0ZV9sYXRlciBEQVRBCisgIF9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nPXB5dGhvbjMzLl9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nIERBVEEKKyAgX1B5VHJhc2hfZGVwb3NpdF9vYmplY3Q9cHl0aG9uMzMuX1B5VHJhc2hfZGVwb3NpdF9vYmplY3QKKyAgX1B5VHJhc2hfZGVzdHJveV9jaGFpbj1weXRob24zMy5fUHlUcmFzaF9kZXN0cm95X2NoYWluCisgIF9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGU9cHl0aG9uMzMuX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZSBEQVRBCisgIF9QeVdlYWtyZWZfUHJveHlUeXBlPXB5dGhvbjMzLl9QeVdlYWtyZWZfUHJveHlUeXBlIERBVEEKKyAgX1B5V2Vha3JlZl9SZWZUeXBlPXB5dGhvbjMzLl9QeVdlYWtyZWZfUmVmVHlwZSBEQVRBCisgIF9QeV9CdWlsZFZhbHVlX1NpemVUPXB5dGhvbjMzLl9QeV9CdWlsZFZhbHVlX1NpemVUCisgIF9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0PXB5dGhvbjMzLl9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0IERBVEEKKyAgX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbD1weXRob24zMy5fUHlfQ2hlY2tSZWN1cnNpdmVDYWxsCisgIF9QeV9EZWFsbG9jPXB5dGhvbjMzLl9QeV9EZWFsbG9jCisgIF9QeV9FbGxpcHNpc09iamVjdD1weXRob24zMy5fUHlfRWxsaXBzaXNPYmplY3QgREFUQQorICBfUHlfRmFsc2VTdHJ1Y3Q9cHl0aG9uMzMuX1B5X0ZhbHNlU3RydWN0IERBVEEKKyAgX1B5X05vbmVTdHJ1Y3Q9cHl0aG9uMzMuX1B5X05vbmVTdHJ1Y3QgREFUQQorICBfUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3Q9cHl0aG9uMzMuX1B5X05vdEltcGxlbWVudGVkU3RydWN0IERBVEEKKyAgX1B5X1N3YXBwZWRPcD1weXRob24zMy5fUHlfU3dhcHBlZE9wIERBVEEKKyAgX1B5X1RydWVTdHJ1Y3Q9cHl0aG9uMzMuX1B5X1RydWVTdHJ1Y3QgREFUQQorICBfUHlfVmFCdWlsZFZhbHVlX1NpemVUPXB5dGhvbjMzLl9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQKKyAgX1B5QXJnX1BhcnNlX1NpemVUPXB5dGhvbjMzLl9QeUFyZ19QYXJzZV9TaXplVAorICBfUHlBcmdfUGFyc2VUdXBsZV9TaXplVD1weXRob24zMy5fUHlBcmdfUGFyc2VUdXBsZV9TaXplVAorICBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUPXB5dGhvbjMzLl9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyAgX1B5QXJnX1ZhUGFyc2VfU2l6ZVQ9cHl0aG9uMzMuX1B5QXJnX1ZhUGFyc2VfU2l6ZVQKKyAgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUPXB5dGhvbjMzLl9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAorICBfUHlfQnVpbGRWYWx1ZV9TaXplVD1weXRob24zMy5fUHlfQnVpbGRWYWx1ZV9TaXplVApkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uMy5tYWsgYi9QQy9weXRob24zLm1hawppbmRleCBhN2YwMWNiLi4yZWM5MTg1IDEwMDY0NAotLS0gYS9QQy9weXRob24zLm1haworKysgYi9QQy9weXRob24zLm1hawpAQCAtMSwxMCArMSwxMCBAQAotJChPdXREaXIpcHl0aG9uMy5kbGw6CXB5dGhvbjMuZGVmICQoT3V0RGlyKXB5dGhvbjMyc3R1Yi5saWIKLQljbCAvTEQgL0ZlJChPdXREaXIpcHl0aG9uMy5kbGwgcHl0aG9uM2RsbC5jIHB5dGhvbjMuZGVmICQoT3V0RGlyKXB5dGhvbjMyc3R1Yi5saWIKKyQoT3V0RGlyKXB5dGhvbjMuZGxsOglweXRob24zLmRlZiAkKE91dERpcilweXRob24zM3N0dWIubGliCisJY2wgL0xEIC9GZSQoT3V0RGlyKXB5dGhvbjMuZGxsIHB5dGhvbjNkbGwuYyBweXRob24zLmRlZiAkKE91dERpcilweXRob24zM3N0dWIubGliCiAKLSQoT3V0RGlyKXB5dGhvbjMyc3R1Yi5saWI6CXB5dGhvbjMyc3R1Yi5kZWYKLQlsaWIgL2RlZjpweXRob24zMnN0dWIuZGVmIC9vdXQ6JChPdXREaXIpcHl0aG9uMzJzdHViLmxpYiAvTUFDSElORTokKE1BQ0hJTkUpCiskKE91dERpcilweXRob24zM3N0dWIubGliOglweXRob24zM3N0dWIuZGVmCisJbGliIC9kZWY6cHl0aG9uMzNzdHViLmRlZiAvb3V0OiQoT3V0RGlyKXB5dGhvbjMzc3R1Yi5saWIgL01BQ0hJTkU6JChNQUNISU5FKQogCiBjbGVhbjoKLQlkZWwgJChPdXREaXIpcHl0aG9uMy5kbGwgJChPdXREaXIpcHl0aG9uMy5saWIgJChPdXREaXIpcHl0aG9uMzJzdHViLmxpYiAkKE91dERpcilweXRob24zLmV4cCAkKE91dERpcilweXRob24zMnN0dWIuZXhwCisJZGVsICQoT3V0RGlyKXB5dGhvbjMuZGxsICQoT3V0RGlyKXB5dGhvbjMubGliICQoT3V0RGlyKXB5dGhvbjMzc3R1Yi5saWIgJChPdXREaXIpcHl0aG9uMy5leHAgJChPdXREaXIpcHl0aG9uMzNzdHViLmV4cAogCiByZWJ1aWxkOiBjbGVhbiAkKE91dERpcilweXRob24zLmRsbApkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uMzJnZW4ucHkgYi9QQy9weXRob24zM2dlbi5weQpzaW1pbGFyaXR5IGluZGV4IDYzJQpyZW5hbWUgZnJvbSBQQy9weXRob24zMmdlbi5weQpyZW5hbWUgdG8gUEMvcHl0aG9uMzNnZW4ucHkKaW5kZXggOTE4MmQ1NC4uMjFiOWY1NiAxMDA2NDQKLS0tIGEvUEMvcHl0aG9uMzJnZW4ucHkKKysrIGIvUEMvcHl0aG9uMzNnZW4ucHkKQEAgLTEsMTggKzEsMjAgQEAKLSMgR2VuZXJhdGUgcHl0aG9uMzJzdHViLmRlZiBvdXQgb2YgcHl0aG9uMy5kZWYKKyMgR2VuZXJhdGUgcHl0aG9uMzNzdHViLmRlZiBvdXQgb2YgcHl0aG9uMy5kZWYKICMgVGhlIHJlZ3VsYXIgaW1wb3J0IGxpYnJhcnkgY2Fubm90IGJlIHVzZWQsCiAjIHNpbmNlIGl0IGRvZXNuJ3QgcHJvdmlkZSB0aGUgcmlnaHQgc3ltYm9scyBmb3IKICMgZGF0YSBmb3J3YXJkaW5nCi1vdXQgPSBvcGVuKCJweXRob24zMnN0dWIuZGVmIiwgInciKQotb3V0LndyaXRlKCdMSUJSQVJZICJweXRob24zMiJcbicpCitvdXQgPSBvcGVuKCJweXRob24zM3N0dWIuZGVmIiwgInciKQorb3V0LndyaXRlKCdMSUJSQVJZICJweXRob24zMyJcbicpCiBvdXQud3JpdGUoJ0VYUE9SVFNcbicpCiAKIGlucCA9IG9wZW4oInB5dGhvbjMuZGVmIikKLWlucC5yZWFkbGluZSgpCiBsaW5lID0gaW5wLnJlYWRsaW5lKCkKK3doaWxlIGxpbmUuc3RyaXAoKS5zdGFydHN3aXRoKCc7Jyk6CisgICAgbGluZSA9IGlucC5yZWFkbGluZSgpCitsaW5lID0gaW5wLnJlYWRsaW5lKCkgIyBMSUJSQVJZCiBhc3NlcnQgbGluZS5zdHJpcCgpPT0nRVhQT1JUUycKIAogZm9yIGxpbmUgaW4gaW5wOgotICAgICMgU1lNMT1weXRob24zMi5TWU0yWyBEQVRBXQorICAgICMgU1lNMT1weXRob24zMy5TWU0yWyBEQVRBXQogICAgIGhlYWQsIHRhaWwgPSBsaW5lLnNwbGl0KCcuJykKICAgICBpZiAnREFUQScgaW4gdGFpbDoKICAgICAgICAgc3ltYm9sLCB0YWlsID0gdGFpbC5zcGxpdCgnICcpCkBAIC0yMiw0ICsyNCwzIEBACiAKIGlucC5jbG9zZSgpCiBvdXQuY2xvc2UoKQotCmRpZmYgLS1naXQgYS9QQy9weXRob24zMnN0dWIuZGVmIGIvUEMvcHl0aG9uMzNzdHViLmRlZgpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBQQy9weXRob24zMnN0dWIuZGVmCnJlbmFtZSB0byBQQy9weXRob24zM3N0dWIuZGVmCmluZGV4IDA5NDNlZjAuLjViOGNjZjYgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbjMyc3R1Yi5kZWYKKysrIGIvUEMvcHl0aG9uMzNzdHViLmRlZgpAQCAtMSw0ICsxLDQgQEAKLUxJQlJBUlkgInB5dGhvbjMyIgorTElCUkFSWSAicHl0aG9uMzMiCiBFWFBPUlRTCiBQeUFyZ19QYXJzZQogUHlBcmdfUGFyc2VUdXBsZQpAQCAtNDcxLDYgKzQ3MSw4IEBACiBQeVNsaWNlX1R5cGUKIFB5U29ydFdyYXBwZXJfVHlwZQogUHlTdGF0ZV9GaW5kTW9kdWxlCitQeVN0YXRlX0FkZE1vZHVsZQorUHlTdGF0ZV9SZW1vdmVNb2R1bGUKIFB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbQogUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcKIFB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZQpAQCAtNTExLDYgKzUxMyw3IEBACiBQeVR1cGxlX1R5cGUKIFB5VHlwZV9DbGVhckNhY2hlCiBQeVR5cGVfRnJvbVNwZWMKK1B5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcwogUHlUeXBlX0dlbmVyaWNBbGxvYwogUHlUeXBlX0dlbmVyaWNOZXcKIFB5VHlwZV9HZXRGbGFncwpAQCAtNjg3LDMgKzY5MCw5IEBACiBfUHlfU3dhcHBlZE9wCiBfUHlfVHJ1ZVN0cnVjdAogX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVAorX1B5QXJnX1BhcnNlX1NpemVUCitfUHlBcmdfUGFyc2VUdXBsZV9TaXplVAorX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAorX1B5QXJnX1ZhUGFyc2VfU2l6ZVQKK19QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAorX1B5X0J1aWxkVmFsdWVfU2l6ZVQKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbl9udC5yYyBiL1BDL3B5dGhvbl9udC5yYwppbmRleCA1Mjk1NjEwLi41MDEwYmFhIDEwMDY0NAotLS0gYS9QQy9weXRob25fbnQucmMKKysrIGIvUEMvcHl0aG9uX250LnJjCkBAIC0xMiw3ICsxMiw3IEBACiAjICAgaW5jbHVkZSAicHl0aG9ubnRfcmMuaCIKICNlbmRpZgogCi0vKiBlLmcuLCAyLjFhMgorLyogZS5nLiwgMy4zLjBhMQogICogUFlfVkVSU0lPTiBjb21lcyBmcm9tIHBhdGNoZXZlbC5oCiAgKi8KICNkZWZpbmUgUFlUSE9OX1ZFUlNJT04gUFlfVkVSU0lPTiAiXDAiCmRpZmYgLS1naXQgYS9QQy9yZWFkbWUudHh0IGIvUEMvcmVhZG1lLnR4dAppbmRleCBiNWE1YTg3Li5mZGMwOWFiIDEwMDY0NAotLS0gYS9QQy9yZWFkbWUudHh0CisrKyBiL1BDL3JlYWRtZS50eHQKQEAgLTYzLDcgKzYzLDcgQEAKIAogcHl0aG9uX250LnJjICAgUmVzb3VyY2UgY29tcGlsZXIgaW5wdXQgZm9yIHB5dGhvbjE1LmRsbC4KIAotZGxfbnQuYywgaW1wb3J0X250LmMKK2RsX250LmMKICAgICAgICAgICAgICAgIEFkZGl0aW9uYWwgc291cmNlcyB1c2VkIGZvciAzMi1iaXQgV2luZG93cyBmZWF0dXJlcy4KIAogZ2V0cGF0aHAuYyAgICAgRGVmYXVsdCBzeXMucGF0aCBjYWxjdWxhdGlvbnMgKGZvciBhbGwgUEMgcGxhdGZvcm1zKS4KZGlmZiAtLWdpdCBhL1BDL3dpbnJlZy5jIGIvUEMvd2lucmVnLmMKaW5kZXggZTRiOTMwNy4uMzhhOWU2OSAxMDA2NDQKLS0tIGEvUEMvd2lucmVnLmMKKysrIGIvUEMvd2lucmVnLmMKQEAgLTg5LDcgKzg5LDcgQEAKICJrZXkgaXMgdGhlIHByZWRlZmluZWQgaGFuZGxlIHRvIGNvbm5lY3QgdG8uXG4iCiAiXG4iCiAiVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaGFuZGxlIG9mIHRoZSBvcGVuZWQga2V5LlxuIgotIklmIHRoZSBmdW5jdGlvbiBmYWlscywgYSBXaW5kb3dzRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKKyJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKIAogUHlEb2NfU1RSVkFSKENyZWF0ZUtleV9kb2MsCiAiQ3JlYXRlS2V5KGtleSwgc3ViX2tleSkgLT4ga2V5XG4iCkBAIC0xMDQsNyArMTA0LDcgQEAKICJJZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzLCB0aGlzIGZ1bmN0aW9uIG9wZW5zIHRoZSBleGlzdGluZyBrZXkuXG4iCiAiXG4iCiAiVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaGFuZGxlIG9mIHRoZSBvcGVuZWQga2V5LlxuIgotIklmIHRoZSBmdW5jdGlvbiBmYWlscywgYSBXaW5kb3dzRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKKyJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKIAogUHlEb2NfU1RSVkFSKENyZWF0ZUtleUV4X2RvYywKICJDcmVhdGVLZXlFeChrZXksIHN1Yl9rZXksIHJlc2VydmVkPTAsIGFjY2Vzcz1LRVlfV1JJVEUpIC0+IGtleVxuIgpAQCAtMTIyLDcgKzEyMiw3IEBACiAiSWYgdGhlIGtleSBhbHJlYWR5IGV4aXN0cywgdGhpcyBmdW5jdGlvbiBvcGVucyB0aGUgZXhpc3Rpbmcga2V5XG4iCiAiXG4iCiAiVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaGFuZGxlIG9mIHRoZSBvcGVuZWQga2V5LlxuIgotIklmIHRoZSBmdW5jdGlvbiBmYWlscywgYSBXaW5kb3dzRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKKyJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKIAogUHlEb2NfU1RSVkFSKERlbGV0ZUtleV9kb2MsCiAiRGVsZXRlS2V5KGtleSwgc3ViX2tleSlcbiIKQEAgLTEzNiw3ICsxMzYsNyBAQAogIlRoaXMgbWV0aG9kIGNhbiBub3QgZGVsZXRlIGtleXMgd2l0aCBzdWJrZXlzLlxuIgogIlxuIgogIklmIHRoZSBmdW5jdGlvbiBzdWNjZWVkcywgdGhlIGVudGlyZSBrZXksIGluY2x1ZGluZyBhbGwgb2YgaXRzIHZhbHVlcyxcbiIKLSJpcyByZW1vdmVkLiAgSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhIFdpbmRvd3NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOworImlzIHJlbW92ZWQuICBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKIAogUHlEb2NfU1RSVkFSKERlbGV0ZUtleUV4X2RvYywKICJEZWxldGVLZXlFeChrZXksIHN1Yl9rZXksIGFjY2Vzcz1LRVlfV09XNjRfNjRLRVksIHJlc2VydmVkPTApXG4iCkBAIC0xNTMsNyArMTUzLDcgQEAKICJUaGlzIG1ldGhvZCBjYW4gbm90IGRlbGV0ZSBrZXlzIHdpdGggc3Via2V5cy5cbiIKICJcbiIKICJJZiB0aGUgZnVuY3Rpb24gc3VjY2VlZHMsIHRoZSBlbnRpcmUga2V5LCBpbmNsdWRpbmcgYWxsIG9mIGl0cyB2YWx1ZXMsXG4iCi0iaXMgcmVtb3ZlZC4gIElmIHRoZSBmdW5jdGlvbiBmYWlscywgYSBXaW5kb3dzRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbiIKKyJpcyByZW1vdmVkLiAgSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4iCiAiT24gdW5zdXBwb3J0ZWQgV2luZG93cyB2ZXJzaW9ucywgTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuIik7CiAKIFB5RG9jX1NUUlZBUihEZWxldGVWYWx1ZV9kb2MsCkBAIC0xNzEsNyArMTcxLDcgQEAKICJpbmRleCBpcyBhbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgaW5kZXggb2YgdGhlIGtleSB0byByZXRyaWV2ZS5cbiIKICJcbiIKICJUaGUgZnVuY3Rpb24gcmV0cmlldmVzIHRoZSBuYW1lIG9mIG9uZSBzdWJrZXkgZWFjaCB0aW1lIGl0IGlzIGNhbGxlZC5cbiIKLSJJdCBpcyB0eXBpY2FsbHkgY2FsbGVkIHJlcGVhdGVkbHkgdW50aWwgYSBXaW5kb3dzRXJyb3IgZXhjZXB0aW9uIGlzXG4iCisiSXQgaXMgdHlwaWNhbGx5IGNhbGxlZCByZXBlYXRlZGx5IHVudGlsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzXG4iCiAicmFpc2VkLCBpbmRpY2F0aW5nIG5vIG1vcmUgdmFsdWVzIGFyZSBhdmFpbGFibGUuIik7CiAKIFB5RG9jX1NUUlZBUihFbnVtVmFsdWVfZG9jLApAQCAtMTgxLDcgKzE4MSw3IEBACiAiaW5kZXggaXMgYW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIGluZGV4IG9mIHRoZSB2YWx1ZSB0byByZXRyaWV2ZS5cbiIKICJcbiIKICJUaGUgZnVuY3Rpb24gcmV0cmlldmVzIHRoZSBuYW1lIG9mIG9uZSBzdWJrZXkgZWFjaCB0aW1lIGl0IGlzIGNhbGxlZC5cbiIKLSJJdCBpcyB0eXBpY2FsbHkgY2FsbGVkIHJlcGVhdGVkbHksIHVudGlsIGEgV2luZG93c0Vycm9yIGV4Y2VwdGlvblxuIgorIkl0IGlzIHR5cGljYWxseSBjYWxsZWQgcmVwZWF0ZWRseSwgdW50aWwgYW4gT1NFcnJvciBleGNlcHRpb25cbiIKICJpcyByYWlzZWQsIGluZGljYXRpbmcgbm8gbW9yZSB2YWx1ZXMuXG4iCiAiXG4iCiAiVGhlIHJlc3VsdCBpcyBhIHR1cGxlIG9mIDMgaXRlbXM6XG4iCkBAIC0yNDAsNyArMjQwLDcgQEAKICIgICAgICAgc2VjdXJpdHkgYWNjZXNzIGZvciB0aGUga2V5LiAgRGVmYXVsdCBpcyBLRVlfUkVBRFxuIgogIlxuIgogIlRoZSByZXN1bHQgaXMgYSBuZXcgaGFuZGxlIHRvIHRoZSBzcGVjaWZpZWQga2V5XG4iCi0iSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhIFdpbmRvd3NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOworIklmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOwogCiBQeURvY19TVFJWQVIoT3BlbktleUV4X2RvYywgIlNlZSBPcGVuS2V5KCkiKTsKIApAQCAtNzkyLDI2ICs3OTIsMjcgQEAKICAgICAgICAgY2FzZSBSRUdfU1o6CiAgICAgICAgIGNhc2UgUkVHX0VYUEFORF9TWjoKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKQotICAgICAgICAgICAgICAgICpyZXREYXRhU2l6ZSA9IDE7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgICAgICAgICAqcmV0RGF0YVNpemUgPSBQeV9TQUZFX0RPV05DQVNUKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyICsgUHlVbmljb2RlX0dFVF9EQVRBX1NJWkUodmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QsIERXT1JEKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpyZXREYXRhQnVmID0gKEJZVEUgKilQeU1lbV9ORVcoRFdPUkQsICpyZXREYXRhU2l6ZSk7Ci0gICAgICAgICAgICBpZiAoKnJldERhdGFCdWY9PU5VTEwpewotICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHZhbHVlID09IFB5X05vbmUpCi0gICAgICAgICAgICAgICAgd2NzY3B5KCh3Y2hhcl90ICopKnJldERhdGFCdWYsIEwiIik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgd2NzY3B5KCh3Y2hhcl90ICopKnJldERhdGFCdWYsCi0gICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHZhbHVlKSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT0gUHlfTm9uZSkgeworICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgICAgICAgICAqcmV0RGF0YUJ1ZiA9IChCWVRFKilQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyh2YWx1ZSwgJmxlbik7CisgICAgICAgICAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1ZiA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgICAgICAgICAqcmV0RGF0YVNpemUgPSBQeV9TQUZFX0RPV05DQVNUKAorICAgICAgICAgICAgICAgICAgICAgICAgKGxlbiArIDEpICogc2l6ZW9mKHdjaGFyX3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCwgRFdPUkQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgKnJldERhdGFCdWYgPSAoQllURSAqKVB5TWVtX05FVyh3Y2hhcl90LCAxKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCpyZXREYXRhQnVmID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgKCh3Y2hhcl90ICopKnJldERhdGFCdWYpWzBdID0gTCdcMCc7CisgICAgICAgICAgICAgICAgICAgICpyZXREYXRhU2l6ZSA9IDEgKiBzaXplb2Yod2NoYXJfdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICBjYXNlIFJFR19NVUxUSV9TWjoKICAgICAgICAgICAgIHsKQEAgLTgyOCwxMCArODI5LDE2IEBACiAgICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGk7IGorKykKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0OworICAgICAgICAgICAgICAgICAgICB3Y2hhcl90ICp3c3RyOworICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKwogICAgICAgICAgICAgICAgICAgICB0ID0gUHlMaXN0X0dFVF9JVEVNKHZhbHVlLCBqKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICAgICAgICAgICAgICAgIHNpemUgKz0gUHlfU0FGRV9ET1dOQ0FTVCgyICsgUHlVbmljb2RlX0dFVF9EQVRBX1NJWkUodCksCisgICAgICAgICAgICAgICAgICAgIHdzdHIgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh0LCAmbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSArPSBQeV9TQUZFX0RPV05DQVNUKChsZW4gKyAxKSAqIHNpemVvZih3Y2hhcl90KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCwgRFdPUkQpOwogICAgICAgICAgICAgICAgIH0KIApAQCAtODQ3LDEwICs4NTQsMTUgQEAKICAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgaTsgaisrKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnQ7CisgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKndzdHI7CisgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworCiAgICAgICAgICAgICAgICAgICAgIHQgPSBQeUxpc3RfR0VUX0lURU0odmFsdWUsIGopOwotICAgICAgICAgICAgICAgICAgICB3Y3NjcHkoUCwgUHlVbmljb2RlX0FTX1VOSUNPREUodCkpOwotICAgICAgICAgICAgICAgICAgICBQICs9IDEgKyB3Y3NsZW4oCi0gICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERSh0KSk7CisgICAgICAgICAgICAgICAgICAgIHdzdHIgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh0LCAmbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgd2NzY3B5KFAsIHdzdHIpOworICAgICAgICAgICAgICAgICAgICBQICs9IChsZW4gKyAxKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLyogQW5kIGRvdWJseS10ZXJtaW5hdGUgdGhlIGxpc3QuLi4gKi8KICAgICAgICAgICAgICAgICAqUCA9ICdcMCc7CkBAIC05MTQsNyArOTI2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0RGF0YVNpemUgLT0gMjsKICAgICAgICAgICAgICAgICBpZiAocmV0RGF0YVNpemUgPD0gMCkKICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IEwiIjsKLSAgICAgICAgICAgICAgICBvYkRhdGEgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoZGF0YSwgcmV0RGF0YVNpemUvMik7CisgICAgICAgICAgICAgICAgb2JEYXRhID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihkYXRhLCByZXREYXRhU2l6ZS8yKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgY2FzZSBSRUdfTVVMVElfU1o6CkBAIC05NDUsNyArOTU3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBQeUxpc3RfU2V0SXRlbShvYkRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoc3RyW2luZGV4XSwgbGVuKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoc3RyW2luZGV4XSwgbGVuKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGZyZWUoc3RyKTsKIApAQCAtMTA4Niw3ICsxMDk4LDcgQEAKIAogICAgIC8qIE9ubHkgYXZhaWxhYmxlIG9uIDY0Yml0IHBsYXRmb3Jtcywgc28gd2UgbXVzdCBsb2FkIGl0CiAgICAgICAgZHluYW1pY2FsbHkuICovCi0gICAgaE1vZCA9IEdldE1vZHVsZUhhbmRsZSgiYWR2YXBpMzIuZGxsIik7CisgICAgaE1vZCA9IEdldE1vZHVsZUhhbmRsZVcoTCJhZHZhcGkzMi5kbGwiKTsKICAgICBpZiAoaE1vZCkKICAgICAgICAgcGZuID0gKFJES0VGdW5jKUdldFByb2NBZGRyZXNzKGhNb2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlZ0RlbGV0ZUtleUV4VyIpOwpAQCAtMTE1NSw3ICsxMTY3LDcgQEAKICAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLCAiUmVnRW51bUtleUV4Iik7CiAKLSAgICByZXRTdHIgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUodG1wYnVmLCBsZW4pOworICAgIHJldFN0ciA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIodG1wYnVmLCBsZW4pOwogICAgIHJldHVybiByZXRTdHI7ICAvKiBjYW4gYmUgTlVMTCAqLwogfQogCkBAIC0xMjQ3LDggKzEyNTksOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFB5RXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9VTklDT0RFICpyZXRWYWx1ZSA9IE5VTEw7Ci0gICAgUHlfVU5JQ09ERSAqc3JjOworICAgIHdjaGFyX3QgKnJldFZhbHVlID0gTlVMTDsKKyAgICB3Y2hhcl90ICpzcmM7CiAgICAgRFdPUkQgcmV0VmFsdWVTaXplOwogICAgIERXT1JEIHJjOwogICAgIFB5T2JqZWN0ICpvOwpAQCAtMTI2MSw3ICsxMjczLDcgQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJldFZhbHVlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzIik7CiAgICAgfQotICAgIHJldFZhbHVlID0gKFB5X1VOSUNPREUgKilQeU1lbV9NYWxsb2MocmV0VmFsdWVTaXplICogc2l6ZW9mKFB5X1VOSUNPREUpKTsKKyAgICByZXRWYWx1ZSA9ICh3Y2hhcl90ICopUHlNZW1fTWFsbG9jKHJldFZhbHVlU2l6ZSAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgaWYgKHJldFZhbHVlID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQpAQCAtMTI3Miw3ICsxMjg0LDcgQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJldFZhbHVlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzIik7CiAgICAgfQotICAgIG8gPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocmV0VmFsdWUsIHdjc2xlbihyZXRWYWx1ZSkpOworICAgIG8gPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHJldFZhbHVlLCB3Y3NsZW4ocmV0VmFsdWUpKTsKICAgICBQeU1lbV9GcmVlKHJldFZhbHVlKTsKICAgICByZXR1cm4gbzsKIH0KQEAgLTE0MjYsNyArMTQzOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVnUXVlcnlWYWx1ZSIpOwogICAgIH0KIAotICAgIHJldFN0ciA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShyZXRCdWYsIHdjc2xlbihyZXRCdWYpKTsKKyAgICByZXRTdHIgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHJldEJ1Ziwgd2NzbGVuKHJldEJ1ZikpOwogICAgIFB5TWVtX0ZyZWUocmV0QnVmKTsKICAgICByZXR1cm4gcmV0U3RyOwogfQpAQCAtMTU1Nyw3ICsxNTY5LDcgQEAKIHsKICAgICBIS0VZIGhLZXk7CiAgICAgUHlPYmplY3QgKm9iS2V5OwotICAgIFB5X1VOSUNPREUgKnZhbHVlTmFtZTsKKyAgICB3Y2hhcl90ICp2YWx1ZU5hbWU7CiAgICAgUHlPYmplY3QgKm9iUmVzOwogICAgIFB5T2JqZWN0ICp2YWx1ZTsKICAgICBCWVRFICpkYXRhOwpAQCAtMTYxMCw3ICsxNjIyLDcgQEAKIAogICAgIC8qIE9ubHkgYXZhaWxhYmxlIG9uIDY0Yml0IHBsYXRmb3Jtcywgc28gd2UgbXVzdCBsb2FkIGl0CiAgICAgICAgZHluYW1pY2FsbHkuKi8KLSAgICBoTW9kID0gR2V0TW9kdWxlSGFuZGxlKCJhZHZhcGkzMi5kbGwiKTsKKyAgICBoTW9kID0gR2V0TW9kdWxlSGFuZGxlVyhMImFkdmFwaTMyLmRsbCIpOwogICAgIGlmIChoTW9kKQogICAgICAgICBwZm4gPSAoUkRSS0Z1bmMpR2V0UHJvY0FkZHJlc3MoaE1vZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZWdEaXNhYmxlUmVmbGVjdGlvbktleSIpOwpAQCAtMTY0Niw3ICsxNjU4LDcgQEAKIAogICAgIC8qIE9ubHkgYXZhaWxhYmxlIG9uIDY0Yml0IHBsYXRmb3Jtcywgc28gd2UgbXVzdCBsb2FkIGl0CiAgICAgICAgZHluYW1pY2FsbHkuKi8KLSAgICBoTW9kID0gR2V0TW9kdWxlSGFuZGxlKCJhZHZhcGkzMi5kbGwiKTsKKyAgICBoTW9kID0gR2V0TW9kdWxlSGFuZGxlVyhMImFkdmFwaTMyLmRsbCIpOwogICAgIGlmIChoTW9kKQogICAgICAgICBwZm4gPSAoUkVSS0Z1bmMpR2V0UHJvY0FkZHJlc3MoaE1vZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZWdFbmFibGVSZWZsZWN0aW9uS2V5Iik7CkBAIC0xNjgzLDcgKzE2OTUsNyBAQAogCiAgICAgLyogT25seSBhdmFpbGFibGUgb24gNjRiaXQgcGxhdGZvcm1zLCBzbyB3ZSBtdXN0IGxvYWQgaXQKICAgICAgICBkeW5hbWljYWxseS4qLwotICAgIGhNb2QgPSBHZXRNb2R1bGVIYW5kbGUoImFkdmFwaTMyLmRsbCIpOworICAgIGhNb2QgPSBHZXRNb2R1bGVIYW5kbGVXKEwiYWR2YXBpMzIuZGxsIik7CiAgICAgaWYgKGhNb2QpCiAgICAgICAgIHBmbiA9IChSUVJLRnVuYylHZXRQcm9jQWRkcmVzcyhoTW9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlZ1F1ZXJ5UmVmbGVjdGlvbktleSIpOwpkaWZmIC0tZ2l0IGEvUEMvd2luc291bmQuYyBiL1BDL3dpbnNvdW5kLmMKaW5kZXggMWVkOTViYS4uYjU2NGVhYiAxMDA2NDQKLS0tIGEvUEMvd2luc291bmQuYworKysgYi9QQy93aW5zb3VuZC5jCkBAIC03Miw3ICs3Miw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc291bmRfcGxheXNvdW5kKFB5T2JqZWN0ICpzLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9VTklDT0RFICp3c291bmQ7CisgICAgd2NoYXJfdCAqd3NvdW5kOwogICAgIGludCBmbGFnczsKICAgICBpbnQgb2s7CiAKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2J6Mi52Y3hwcm9qIGIvUENidWlsZC9fYnoyLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM4N2U1NAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX2J6Mi52Y3hwcm9qCkBAIC0wLDAgKzEsMjYxIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+YnoyPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoYnoyRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTcwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChiejJEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNzAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChiejJEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNzAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoYnoyRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTcwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChiejJEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNzAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChiejJEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNzAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGJ6MkRpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE3MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoYnoyRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTcwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9iejJtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoYnoyRGlyKVxibG9ja3NvcnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoYnoyRGlyKVxiemxpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChiejJEaXIpXGNvbXByZXNzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilcY3JjdGFibGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoYnoyRGlyKVxkZWNvbXByZXNzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilcaHVmZm1hbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChiejJEaXIpXHJhbmR0YWJsZS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoYnoyRGlyKVxiemxpYi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChiejJEaXIpXGJ6bGliX3ByaXZhdGUuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2J6Mi52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL19iejIudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhYzY0ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19iejIudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsNDggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2Y1M2E4NTlkLWRhZDItNGQ1Yi1hZTQxLWYyOGQ4YjU3MWY1YX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJiemlwMiAxLjAuNiBIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezdlMGJlZDA1LWFlMzMtNDNiNy04Nzk3LTY1NjQ1NWJiYjdmM308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJiemlwMiAxLjAuNiBTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2VkNTc0Yjg5LTY5ODMtNGNkZi05Zjk4LWZlNzA0OGQ5ZTg5Y308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYnoybW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoYnoyRGlyKVxibG9ja3NvcnQuYyI+CisgICAgICA8RmlsdGVyPmJ6aXAyIDEuMC42IFNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChiejJEaXIpXGJ6bGliLmMiPgorICAgICAgPEZpbHRlcj5iemlwMiAxLjAuNiBTb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoYnoyRGlyKVxjb21wcmVzcy5jIj4KKyAgICAgIDxGaWx0ZXI+YnppcDIgMS4wLjYgU291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilcY3JjdGFibGUuYyI+CisgICAgICA8RmlsdGVyPmJ6aXAyIDEuMC42IFNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChiejJEaXIpXGRlY29tcHJlc3MuYyI+CisgICAgICA8RmlsdGVyPmJ6aXAyIDEuMC42IFNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChiejJEaXIpXGh1ZmZtYW4uYyI+CisgICAgICA8RmlsdGVyPmJ6aXAyIDEuMC42IFNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChiejJEaXIpXHJhbmR0YWJsZS5jIj4KKyAgICAgIDxGaWx0ZXI+YnppcDIgMS4wLjYgU291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChiejJEaXIpXGJ6bGliLmgiPgorICAgICAgPEZpbHRlcj5iemlwMiAxLjAuNiBIZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoYnoyRGlyKVxiemxpYl9wcml2YXRlLmgiPgorICAgICAgPEZpbHRlcj5iemlwMiAxLjAuNiBIZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL19jdHlwZXMudmN4cHJvaiBiL1BDYnVpbGQvX2N0eXBlcy52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMmNiMWYKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19jdHlwZXMudmN4cHJvagpAQCAtMCwwICsxLDI5NCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPl9jdHlwZXM8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcY3R5cGVzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcY3R5cGVzX2RsZmNuLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpX2NvbW1vbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaWNvbmZpZy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaXRhcmdldC5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbGJhY2tzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbHByb2MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjZmllbGQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xtYWxsb2NfY2xvc3VyZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHByZXBfY2lmLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcc3RnZGljdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjMyLmMiPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDdXN0b21CdWlsZCBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luNjQuYXNtIj4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8Q29tbWFuZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPm1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICIkKEludERpcil3aW42NC5vYmoiICIlKEZ1bGxQYXRoKSIKKzwvQ29tbWFuZD4KKyAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChJbnREaXIpd2luNjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPm1sNjQgL25vbG9nbyAvYyAvRm8gIiQoSW50RGlyKXdpbjY0Lm9iaiIgIiUoRnVsbFBhdGgpIgorPC9Db21tYW5kPgorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChJbnREaXIpd2luNjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5tbDY0IC9ub2xvZ28gL2MgL0ZvICIkKEludERpcil3aW42NC5vYmoiICIlKEZ1bGxQYXRoKSIKKzwvQ29tbWFuZD4KKyAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChJbnREaXIpd2luNjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8Q29tbWFuZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+bWw2NCAvbm9sb2dvIC9jIC9GbyAiJChJbnREaXIpd2luNjQub2JqIiAiJShGdWxsUGF0aCkiCis8L0NvbW1hbmQ+CisgICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChJbnREaXIpd2luNjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+CisgICAgPC9DdXN0b21CdWlsZD4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fY3R5cGVzLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX2N0eXBlcy52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNkN2E3YgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX2N0eXBlcy52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSw2NSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ODA2MDgxZWUtMmFmMC00OGQwLWE4M2UtZWUwMmE3NGJhYTBmfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZGJkZWExZjItYWQ4Yi00NGNhLWI3ODItZmNmNjVkOTE1NTlifTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcY3R5cGVzLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjdHlwZXNfZGxmY24uaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaS5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpX2NvbW1vbi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpY29uZmlnLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZml0YXJnZXQuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjYWxsYmFja3MuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxwcm9jLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjZmllbGQuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbWFsbG9jX2Nsb3N1cmUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHByZXBfY2lmLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xzdGdkaWN0LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1x3aW4zMi5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDdXN0b21CdWlsZCBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luNjQuYXNtIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DdXN0b21CdWlsZD4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fY3R5cGVzX3Rlc3QudmN4cHJvaiBiL1BDYnVpbGQvX2N0eXBlc190ZXN0LnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVlMjk5YgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX2N0eXBlc190ZXN0LnZjeHByb2oKQEAgLTAsMCArMSwxOTIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPns5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fY3R5cGVzX3Rlc3Q8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlc190ZXN0LmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19jdHlwZXNfdGVzdC52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL19jdHlwZXNfdGVzdC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFlOTRjZQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX2N0eXBlc190ZXN0LnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDIxIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns4ZmQ3MDExOS01NDgxLTRlNWQtYjE4Ny1kMGIxNGViMjdlMzh9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnszOGFiYzQ4Ni1lMTQzLTQ5ZGMtOGNmMC04YWVmYWIwZTBkM2R9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzX3Rlc3QuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzX3Rlc3QuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19kZWNpbWFsLnZjeHByb2ogYi9QQ2J1aWxkL19kZWNpbWFsLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThiYTgxZAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX2RlY2ltYWwudmN4cHJvagpAQCAtMCwwICsxLDMwOCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN308L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPl9kZWNpbWFsPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzMyIC9EUFBSTyAvRE1BU00gJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfZGVjaW1hbDsuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzY0IC9ETUFTTSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9kZWNpbWFsOy4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzMyIC9EUFBSTyAvRE1BU00gJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfZGVjaW1hbDsuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzY0IC9ETUFTTSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9kZWNpbWFsOy4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWM7Li5cSW5jbHVkZTsuLlxQQzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9kZWNpbWFsOy4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR182NCAvRE1BU00gJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfZGVjaW1hbDsuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR18zMiAvRFBQUk8gL0RNQVNNICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGJhc2Vhcml0aC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xiaXRzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnN0YW50cy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb252b2x1dGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY3J0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGRpZnJhZGl4Mi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxkb2NzdHJpbmdzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZudC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xmb3Vyc3RlcC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xtcGRlY2ltYWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbnVtYmVydGhlb3J5LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHNpeHN0ZXAuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdHJhbnNwb3NlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHR5cGVhcml0aC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x1bW9kYXJpdGguaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdmNjb21wYXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdmNzdGRpbnQuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXF9kZWNpbWFsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGJhc2Vhcml0aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb25zdGFudHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29udGV4dC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb252b2x1dGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY3J0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGRpZnJhZGl4Mi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xmbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm91cnN0ZXAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcaW8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbWVtb3J5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG1wZGVjaW1hbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xudW1iZXJ0aGVvcnkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcc2l4c3RlcC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x0cmFuc3Bvc2UuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPEN1c3RvbUJ1aWxkIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdmNkaXY2NC5hc20iPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+bWw2NCAvbm9sb2dvIC9jIC9aaSAvRm8gIiQoSW50RGlyKXZjZGl2NjQub2JqIiAiJShGdWxsUGF0aCkiCis8L0NvbW1hbmQ+CisgICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoSW50RGlyKXZjZGl2NjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPm1sNjQgL25vbG9nbyAvYyAvRm8gIiQoSW50RGlyKXZjZGl2NjQub2JqIiAiJShGdWxsUGF0aCkiCis8L0NvbW1hbmQ+CisgICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKEludERpcil2Y2RpdjY0Lm9iajslKE91dHB1dHMpPC9PdXRwdXRzPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+bWw2NCAvbm9sb2dvIC9jIC9GbyAiJChJbnREaXIpdmNkaXY2NC5vYmoiICIlKEZ1bGxQYXRoKSIKKzwvQ29tbWFuZD4KKyAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChJbnREaXIpdmNkaXY2NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5tbDY0IC9ub2xvZ28gL2MgL1ppIC9GbyAiJChJbnREaXIpdmNkaXY2NC5vYmoiICIlKEZ1bGxQYXRoKSIKKzwvQ29tbWFuZD4KKyAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKEludERpcil2Y2RpdjY0Lm9iajslKE91dHB1dHMpPC9PdXRwdXRzPgorICAgIDwvQ3VzdG9tQnVpbGQ+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2RlY2ltYWwudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fZGVjaW1hbC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2UxOWFhMgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX2RlY2ltYWwudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTE2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntmMzVhNzhhNi0zZWYwLTRlMzYtYmQ4Yi1hZmFlZjIyZmJiN2N9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnsxMzgwODlmOC1mYWJhLTQ5NGYtYjZlZC0wNTFmMzFmYmFmMmR9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcYmFzZWFyaXRoLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcYml0cy5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnN0YW50cy5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnZvbHV0ZS5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNydC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGRpZnJhZGl4Mi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGRvY3N0cmluZ3MuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xmbnQuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xmb3Vyc3RlcC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG1wZGVjaW1hbC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG51bWJlcnRoZW9yeS5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHNpeHN0ZXAuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x0cmFuc3Bvc2UuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x0eXBlYXJpdGguaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x1bW9kYXJpdGguaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x2Y2NvbXBhdC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHZjc3RkaW50LmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXF9kZWNpbWFsLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcYmFzZWFyaXRoLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29uc3RhbnRzLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29udGV4dC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnZvbHV0ZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNydC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGRpZnJhZGl4Mi5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZudC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZvdXJzdGVwLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcaW8uYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xtZW1vcnkuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xtcGRlY2ltYWwuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xudW1iZXJ0aGVvcnkuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xzaXhzdGVwLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdHJhbnNwb3NlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPEN1c3RvbUJ1aWxkIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdmNkaXY2NC5hc20iPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0N1c3RvbUJ1aWxkPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19lbGVtZW50dHJlZS52Y3hwcm9qIGIvUENidWlsZC9fZWxlbWVudHRyZWUudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODAyYWIzCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fZWxlbWVudHRyZWUudmN4cHJvagpAQCAtMCwwICsxLDI3MCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPl9lbGVtZW50dHJlZTwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5YTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcYXNjaWkuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcYXNjaWl0YWIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcZXhwYXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcZXhwYXRfY29uZmlnLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGV4cGF0X2V4dGVybmFsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGlhc2NpaXRhYi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxpbnRlcm5hbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxsYXRpbjF0YWIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcbWFjY29uZmlnLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XG5hbWV0YWIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRccHlleHBhdG5zLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHV0Zjh0YWIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcd2luY29uZmlnLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZWxlbWVudHRyZWUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2VsZW1lbnR0cmVlLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX2VsZW1lbnR0cmVlLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTc4Mjk1Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fZWxlbWVudHRyZWUudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsNzIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezY0M2Q4NjA3LWQwMjQtNDBmZS04NTgzLTE4MjNjOTY0MzBmMH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezdiNTMzNWFkLTA1OWYtNDg2Zi04NWU0LWY0NzU3ZTI2YTliZn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxhc2NpaS5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGFzY2lpdGFiLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcZXhwYXQuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxleHBhdF9jb25maWcuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxleHBhdF9leHRlcm5hbC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGlhc2NpaXRhYi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGludGVybmFsLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcbGF0aW4xdGFiLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcbWFjY29uZmlnLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcbmFtZXRhYi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHB5ZXhwYXRucy5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHV0Zjh0YWIuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx3aW5jb25maWcuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9lbGVtZW50dHJlZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHBhcnNlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvaiBiL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTE5N2FmCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qCkBAIC0wLDAgKzEsMTg4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICAgIDxSb290TmFtZXNwYWNlPl9mcmVlemVfaW1wb3J0bGliPC9Sb290TmFtZXNwYWNlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxMaW5rSW5jcmVtZW50YWw+dHJ1ZTwvTGlua0luY3JlbWVudGFsPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPExpbmtJbmNyZW1lbnRhbD50cnVlPC9MaW5rSW5jcmVtZW50YWw+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPExpbmtJbmNyZW1lbnRhbD5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TGlua0luY3JlbWVudGFsPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICA8L0xpbms+CisgICAgPFBvc3RCdWlsZEV2ZW50PgorICAgICAgPENvbW1hbmQ+JChUYXJnZXRQYXRoKSAuLlxMaWJcaW1wb3J0bGliXF9ib290c3RyYXAucHkgLi5cUHl0aG9uXGltcG9ydGxpYi5oPC9Db21tYW5kPgorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+CisgICAgPFBvc3RCdWlsZEV2ZW50PgorICAgICAgPE1lc3NhZ2U+Y3JlYXRpbmcgaW1wb3J0bGliLmg8L01lc3NhZ2U+CisgICAgPC9Qb3N0QnVpbGRFdmVudD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICA8L0xpbms+CisgICAgPFBvc3RCdWlsZEV2ZW50PgorICAgICAgPENvbW1hbmQ+JChUYXJnZXRQYXRoKSAuLlxMaWJcaW1wb3J0bGliXF9ib290c3RyYXAucHkgLi5cUHl0aG9uXGltcG9ydGxpYi5oPC9Db21tYW5kPgorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+CisgICAgPFBvc3RCdWlsZEV2ZW50PgorICAgICAgPE1lc3NhZ2U+Y3JlYXRpbmcgaW1wb3J0bGliLmg8L01lc3NhZ2U+CisgICAgPC9Qb3N0QnVpbGRFdmVudD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICA8L0xpbms+CisgICAgPFBvc3RCdWlsZEV2ZW50PgorICAgICAgPENvbW1hbmQ+JChUYXJnZXRQYXRoKSAuLlxMaWJcaW1wb3J0bGliXF9ib290c3RyYXAucHkgLi5cUHl0aG9uXGltcG9ydGxpYi5oPC9Db21tYW5kPgorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+CisgICAgPFBvc3RCdWlsZEV2ZW50PgorICAgICAgPE1lc3NhZ2U+Y3JlYXRpbmcgaW1wb3J0bGliLmg8L01lc3NhZ2U+CisgICAgPC9Qb3N0QnVpbGRFdmVudD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgPC9MaW5rPgorICAgIDxQb3N0QnVpbGRFdmVudD4KKyAgICAgIDxDb21tYW5kPiQoVGFyZ2V0UGF0aCkgLi5cTGliXGltcG9ydGxpYlxfYm9vdHN0cmFwLnB5IC4uXFB5dGhvblxpbXBvcnRsaWIuaDwvQ29tbWFuZD4KKyAgICA8L1Bvc3RCdWlsZEV2ZW50PgorICAgIDxQb3N0QnVpbGRFdmVudD4KKyAgICAgIDxNZXNzYWdlPmNyZWF0aW5nIGltcG9ydGxpYi5oPC9NZXNzYWdlPgorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2ZyZWV6ZV9pbXBvcnRsaWIuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFByaXZhdGU+dHJ1ZTwvUHJpdmF0ZT4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT50cnVlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICAgIDxDb3B5TG9jYWxTYXRlbGxpdGVBc3NlbWJsaWVzPmZhbHNlPC9Db3B5TG9jYWxTYXRlbGxpdGVBc3NlbWJsaWVzPgorICAgICAgPExpbmtMaWJyYXJ5RGVwZW5kZW5jaWVzPnRydWU8L0xpbmtMaWJyYXJ5RGVwZW5kZW5jaWVzPgorICAgICAgPFVzZUxpYnJhcnlEZXBlbmRlbmN5SW5wdXRzPmZhbHNlPC9Vc2VMaWJyYXJ5RGVwZW5kZW5jeUlucHV0cz4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXExpYlxpbXBvcnRsaWJcX2Jvb3RzdHJhcC5weSIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL19mcmVlemVfaW1wb3J0bGliLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGVjMTkzCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwyNyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUmVzb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezY3REE2QUI2LUY4MDAtNGMwOC04QjdBLTgzQkIxMjFBQUQwMX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5yYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGU7cmVzeDt0aWZmO3RpZjtwbmc7d2F2O21mY3JpYmJvbi1tczwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9mcmVlemVfaW1wb3J0bGliLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cTGliXGltcG9ydGxpYlxfYm9vdHN0cmFwLnB5Ij4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9Ob25lPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19oYXNobGliLnZjeHByb2ogYi9QQ2J1aWxkL19oYXNobGliLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI0MzNlZAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX2hhc2hsaWIudmN4cHJvagpAQCAtMCwwICsxLDI4MiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPl9oYXNobGliPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jNjQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jNjQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2hhc2hvcGVuc3NsLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbi52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntiMTFkNzUwZi1jZDFmLTRhOTYtODVjZS1lNjlhNWM1MjU5Zjl9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ic3NsLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2U1YjA0Y2MwLWViNGMtNDJhYi1iNGRjLTE4ZWY5NWY4NjRiMH08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9faGFzaGxpYi52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL19oYXNobGliLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWQ5OTNlCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9faGFzaGxpYi52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57Y2M0NTk2M2QtYmQyNS00ZWI4LWJkYmEtYTU1MDcwOTBiY2E0fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9oYXNob3BlbnNzbC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2x6bWEudmN4cHJvaiBiL1BDYnVpbGQvX2x6bWEudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzI1YzgwCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fbHptYS52Y3hwcm9qCkBAIC0wLDAgKzEsMjUwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+bHptYTwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbHptYW1vZHVsZS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fbHptYS52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL19sem1hLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzVlZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fbHptYS52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NTNlNjhlZGEtMzlmYy00MzM2LWE2NTgtZGM1ZjVkNTk4NzYwfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9sem1hbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fbXNpLnZjeHByb2ogYi9QQ2J1aWxkL19tc2kudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzIzZDE2Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fbXNpLnZjeHByb2oKQEAgLTAsMCArMSwyMjYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fbXNpPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZmNpLmxpYjttc2kubGliO3JwY3J0NC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZmNpLmxpYjttc2kubGliO3JwY3J0NC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZmNpLmxpYjttc2kubGliO3JwY3J0NC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmZjaS5saWI7bXNpLmxpYjtycGNydDQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE2MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcX21zaS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fbXNpLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX21zaS52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RlYzUyZAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX21zaS52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57YmRlZjc3MTAtZTQzMy00YWMwLTg0ZTAtMTRmMzQ0NTRiZDNlfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xfbXNpLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvaiBiL1BDYnVpbGQvX211bHRpcHJvY2Vzc2luZy52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkNjMzN2QuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDU1NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0iX211bHRpcHJvY2Vzc2luZyINCi0JUHJvamVjdEdVSUQ9Ins5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9Ig0KLQlSb290TmFtZXNwYWNlPSJfbXVsdGlwcm9jZXNzaW5nIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+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+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXG11bHRpcHJvY2Vzc2luZy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXGNvbm5lY3Rpb24uaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdccGlwZV9jb25uZWN0aW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcc2VtYXBob3JlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcc29ja2V0X2Nvbm5lY3Rpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1x3aW4zMl9mdW5jdGlvbnMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19tdWx0aXByb2Nlc3NpbmcudmN4cHJvaiBiL1BDYnVpbGQvX211bHRpcHJvY2Vzc2luZy52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0YmI1NjgKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19tdWx0aXByb2Nlc3NpbmcudmN4cHJvagpAQCAtMCwwICsxLDIzMCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPl9tdWx0aXByb2Nlc3Npbmc8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXG11bHRpcHJvY2Vzc2luZy5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xtdWx0aXByb2Nlc3NpbmcuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xzZW1hcGhvcmUuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX211bHRpcHJvY2Vzc2luZy52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL19tdWx0aXByb2Nlc3NpbmcudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MTMzZWMKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19tdWx0aXByb2Nlc3NpbmcudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMjQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezYyM2M5NTZjLTE4OTMtNDNkOS1hN2RjLTk2ZTRmZWYyMGY5M308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezM0NjE1YTYyLWY5OTktNDY1OS04M2Y1LTE5ZDE3YTY0NDUzMH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXG11bHRpcHJvY2Vzc2luZy5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXG11bHRpcHJvY2Vzc2luZy5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcc2VtYXBob3JlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fc29ja2V0LnZjeHByb2ogYi9QQ2J1aWxkL19zb2NrZXQudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzgzNmU5Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fc29ja2V0LnZjeHByb2oKQEAgLTAsMCArMSwyMjkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPns4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fc29ja2V0PC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc29ja2V0bW9kdWxlLmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3NvY2tldC52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL19zb2NrZXQudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5MGZmYTgKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19zb2NrZXQudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMjEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezE0NTIyMDdmLTcwN2MtNGU4NC1iNTMyLTMwNzE5M2EwZmQ4NX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezFlZGZlMGQwLTdiOWQtNGRjOC1hMzM1LWIyMWZlZjdjYzc3YX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc29ja2V0bW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fc3FsaXRlMy52Y3hwcm9qIGIvUENidWlsZC9fc3FsaXRlMy52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MmRhZDEKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19zcWxpdGUzLnZjeHByb2oKQEAgLTAsMCArMSwyNzQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fc3FsaXRlMzwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TU9EVUxFX05BTUU9InNxbGl0ZTMiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMTgwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk1PRFVMRV9OQU1FPSJzcWxpdGUzIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTE4MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TU9EVUxFX05BTUU9InNxbGl0ZTMiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMTgwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TU9EVUxFX05BTUU9InNxbGl0ZTMiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMTgwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk1PRFVMRV9OQU1FPSJzcWxpdGUzIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTE4MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TU9EVUxFX05BTUU9InNxbGl0ZTMiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMTgwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk1PRFVMRV9OQU1FPSJzcWxpdGUzIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTE4MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxODAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjYWNoZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXGNvbm5lY3Rpb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjdXJzb3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxtaWNyb3Byb3RvY29scy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXG1vZHVsZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHByZXBhcmVfcHJvdG9jb2wuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxyb3cuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxzcWxpdGVjb21wYXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxzdGF0ZW1lbnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVx1dGlsLmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcY29ubmVjdGlvbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXGN1cnNvci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVccHJlcGFyZV9wcm90b2NvbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHN0YXRlbWVudC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHV0aWwuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ic3FsaXRlMy52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnthMWEyOTVlNS00NjNjLTQzN2YtODFjYS0xZjMyMzY3Njg1ZGF9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3NxbGl0ZTMudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fc3FsaXRlMy52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhlNWZkYgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3NxbGl0ZTMudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsNzIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2RhYzhhYjNiLWNlMTYtNGJlZi1iZWY5LTc2NDYzYTAxZjVjNH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezgxNGIxODdkLTQ0YWQtNGYyYi1iYWE3LTE4Y2E4YThhNmE3N308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjdXJzb3IuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHByZXBhcmVfcHJvdG9jb2wuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcc3FsaXRlY29tcGF0LmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxzdGF0ZW1lbnQuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHV0aWwuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjYWNoZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcY29ubmVjdGlvbi5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcY3Vyc29yLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxtaWNyb3Byb3RvY29scy5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxwcmVwYXJlX3Byb3RvY29sLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxyb3cuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHN0YXRlbWVudC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcdXRpbC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3NzbC52Y3hwcm9qIGIvUENidWlsZC9fc3NsLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU3MWQxOQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3NzbC52Y3hwcm9qCkBAIC0wLDAgKzEsMjg2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X3NzbDwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmM2NDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmM2NDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zc2wuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2IxMWQ3NTBmLWNkMWYtNGE5Ni04NWNlLWU2OWE1YzUyNTlmOX08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJzc2wudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57ZTViMDRjYzAtZWI0Yy00MmFiLWI0ZGMtMThlZjk1Zjg2NGIwfTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Il9zb2NrZXQudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57ODY5MzdmNTMtYzE4OS00MGVmLThjZTgtODc1OWQ4ZTdkNDgwfTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19zc2wudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fc3NsLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGIxNDU5Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fc3NsLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2OTUzNDhmNy1lOWY2LTRmZTEtYmMwMy01ZjA4ZmZjODA5NWJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NzbC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3RidWZmZXIudmN4cHJvaiBiL1BDYnVpbGQvX3Rlc3RidWZmZXIudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTI2NWY2Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fdGVzdGJ1ZmZlci52Y3hwcm9qCkBAIC0wLDAgKzEsMjE3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X3Rlc3RidWZmZXI8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGVzdGJ1ZmZlci5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0YnVmZmVyLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX3Rlc3RidWZmZXIudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZGYyODIKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL190ZXN0YnVmZmVyLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns4ZDIzMjI0MC05MjFhLTRiYzItODdjMy05M2ZmZDM0NjJmMGF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3Rlc3RidWZmZXIuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0Y2FwaS52Y3hwcm9qIGIvUENidWlsZC9fdGVzdGNhcGkudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTlhN2U0Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fdGVzdGNhcGkudmN4cHJvagpAQCAtMCwwICsxLDIxOCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPl90ZXN0Y2FwaTwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90ZXN0Y2FwaW1vZHVsZS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGVzdGNhcGkudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fdGVzdGNhcGkudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNmFkMWEKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL190ZXN0Y2FwaS52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57YTc2YTkwZDgtOGU4Yi00YzM2LThmNTgtOGJkNDZhYmU5ZjVlfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90ZXN0Y2FwaW1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3RraW50ZXIudmN4cHJvaiBiL1BDYnVpbGQvX3RraW50ZXIudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2Y3MmZlCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fdGtpbnRlci52Y3hwcm9qCkBAIC0wLDAgKzEsMjUxIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X3RraW50ZXI8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JCh0Y2x0a0RpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJVEhfQVBQSU5JVDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrTGliRGVidWcpOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGs2NERpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJVEhfQVBQSU5JVDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrNjRMaWJEZWJ1Zyk7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGtEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSVRIX0FQUElOSVQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JCh0Y2x0a0xpYik7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHRjbHRrNjREaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSVRIX0FQUElOSVQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JCh0Y2x0azY0TGliKTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHRjbHRrRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lUSF9BUFBJTklUOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQodGNsdGtMaWIpOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHRjbHRrNjREaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSVRIX0FQUElOSVQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JCh0Y2x0azY0TGliKTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHRjbHRrRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lUSF9BUFBJTklUOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQodGNsdGtMaWIpOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGs2NERpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJVEhfQVBQSU5JVDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrNjRMaWIpOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGtpbnRlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x0a2FwcGluaXQuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3RraW50ZXIudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fdGtpbnRlci52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU1Y2Q0NwotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3RraW50ZXIudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2I5Y2U2NGRkLWNiOTUtNDcyZC1iYmU4LTU1ODNiMmNkMzc1Yn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGtpbnRlci5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHRrYXBwaW5pdC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvYmRpc3Rfd2luaW5zdC52Y3hwcm9qIGIvUENidWlsZC9iZGlzdF93aW5pbnN0LnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkyNzZhMgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvYmRpc3Rfd2luaW5zdC52Y3hwcm9qCkBAIC0wLDAgKzEsMTU4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT53aW5pbnN0PC9Sb290TmFtZXNwYWNlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcPC9PdXREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPi4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFw8L091dERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS10ZW1wLSQoQ29uZmlndXJhdGlvbilcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPExpbmtJbmNyZW1lbnRhbCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPFRhcmdldEV4dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4uZXhlPC9UYXJnZXRFeHQ+CisgICAgPFRhcmdldEV4dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+LmV4ZTwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPgorICAgICAgPFRhcmdldEVudmlyb25tZW50PldpbjMyPC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+LlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1pblNwYWNlPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cSW5jbHVkZTsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDAwMDwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFBDOy4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y29tY3RsMzIubGliO2ltYWdlaGxwLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+Li5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtMTAuMC5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3VwcHJlc3NTdGFydHVwQmFubmVyPnRydWU8L1N1cHByZXNzU3RhcnR1cEJhbm5lcj4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+TElCQzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPi4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTEwLjAucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+CisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+CisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+CisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8TWtUeXBMaWJDb21wYXRpYmxlPnRydWU8L01rVHlwTGliQ29tcGF0aWJsZT4KKyAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VHlwZUxpYnJhcnlOYW1lPi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QudGxiPC9UeXBlTGlicmFyeU5hbWU+CisgICAgICA8SGVhZGVyRmlsZU5hbWU+CisgICAgICA8L0hlYWRlckZpbGVOYW1lPgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NaW5TcGFjZTwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXEluY2x1ZGU7Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8U3VwcHJlc3NTdGFydHVwQmFubmVyPnRydWU8L1N1cHByZXNzU3RhcnR1cEJhbm5lcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDAwMDA8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQQzsuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmNvbWN0bDMyLmxpYjtpbWFnZWhscC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPi4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTEwLjAtYW1kNjQuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPkxJQkM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4uLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAtYW1kNjQucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+CisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+CisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+CisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGJkaXN0X3dpbmluc3RcZXh0cmFjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcYmRpc3Rfd2luaW5zdFxpbnN0YWxsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGNyYzMyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHp1dGlsLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUENcYmRpc3Rfd2luaW5zdFxhcmNoaXZlLmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENcYmRpc3Rfd2luaW5zdFxpbnN0YWxsLnJjIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XFB5dGhvblBvd2VyZWQuYm1wIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2JkaXN0X3dpbmluc3QudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9iZGlzdF93aW5pbnN0LnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGI2YTRkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9iZGlzdF93aW5pbnN0LnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDYxIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnsyOTNiMTA5Mi0wM2FkLTRiN2MtYWNiOS1jNGFiNjJlNTJmNTV9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlc1x6bGliIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnswZWRjMDQwNi0yODJmLTRkYmMtYjYwZS1hODY3YzM0YTJhMzF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntlYTBjMGYwZS0zYjczLTQ3NGUtYTk5OS1lOTY4OWQwMzJjY2N9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnswYzc3YzFjZi0zZjg3LTRmODctYmQ4Ni1iNDI1MjExYzIxODF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGJkaXN0X3dpbmluc3RcZXh0cmFjdC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHp1dGlsLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFBDXGJkaXN0X3dpbmluc3RcYXJjaGl2ZS5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENcYmRpc3Rfd2luaW5zdFxpbnN0YWxsLnJjIj4KKyAgICAgIDxGaWx0ZXI+UmVzb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cUENcYmRpc3Rfd2luaW5zdFxQeXRob25Qb3dlcmVkLmJtcCI+CisgICAgICA8RmlsdGVyPlJlc291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9Ob25lPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2J1aWxkLmJhdCBiL1BDYnVpbGQvYnVpbGQuYmF0CmluZGV4IGE3MzU2MGUuLmZhMGQ5NWIgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvYnVpbGQuYmF0CisrKyBiL1BDYnVpbGQvYnVpbGQuYmF0CkBAIC01LDE0ICs1LDE1IEBACiBzZXRsb2NhbAogc2V0IHBsYXRmPVdpbjMyCiBzZXQgY29uZj1SZWxlYXNlCi1zZXQgYnVpbGQ9CitzZXQgdGFyZ2V0PWJ1aWxkCitzZXQgZGlyPSV+ZHAwCiAKIDpDaGVja09wdHMKIGlmICIlMSI9PSItYyIgKHNldCBjb25mPSUyKSAmIHNoaWZ0ICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cwogaWYgIiUxIj09Ii1wIiAoc2V0IHBsYXRmPSUyKSAmIHNoaWZ0ICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cwotaWYgIiUxIj09Ii1yIiAoc2V0IGJ1aWxkPS9yZWJ1aWxkKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKK2lmICIlMSI9PSItciIgKHNldCB0YXJnZXQ9cmVidWlsZCkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCiBpZiAiJTEiPT0iLWQiIChzZXQgY29uZj1EZWJ1ZykgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCiAKLXNldCBjbWQ9dmNidWlsZCAvdXNlZW52IHBjYnVpbGQuc2xuICVidWlsZCUgIiVjb25mJXwlcGxhdGYlIgorc2V0IGNtZD1tc2J1aWxkIC9wOnVzZWVudj10cnVlICVkaXIlcGNidWlsZC5zbG4gL3Q6JXRhcmdldCUgL3A6Q29uZmlndXJhdGlvbj0lY29uZiUgL3A6UGxhdGZvcm09JXBsYXRmJQogZWNobyAlY21kJQogJWNtZCUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvYnVpbGRfc3NsLmJhdCBiL1BDYnVpbGQvYnVpbGRfc3NsLmJhdAppbmRleCBjZWU2NGE4Li4zNTdiMDhiIDEwMDY0NAotLS0gYS9QQ2J1aWxkL2J1aWxkX3NzbC5iYXQKKysrIGIvUENidWlsZC9idWlsZF9zc2wuYmF0CkBAIC0yLDEwICsyLDEwIEBACiBpZiBub3QgZGVmaW5lZCBIT1NUX1BZVEhPTiAoCiAgIGlmICUxIEVRVSBEZWJ1ZyAoCiAgICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbl9kLmV4ZQotICAgIGlmIG5vdCBleGlzdCBweXRob24zMV9kLmRsbCBleGl0IDEKKyAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzNfZC5kbGwgZXhpdCAxCiAgICkgRUxTRSAoCiAgICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbi5leGUKLSAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzEuZGxsIGV4aXQgMQorICAgIGlmIG5vdCBleGlzdCBweXRob24zMy5kbGwgZXhpdCAxCiAgICkKICkKICVIT1NUX1BZVEhPTiUgYnVpbGRfc3NsLnB5ICUxICUyICUzCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2J1aWxkX3NzbC5weSBiL1BDYnVpbGQvYnVpbGRfc3NsLnB5CmluZGV4IDkzODgxMjQuLjVhN2E4OWUgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvYnVpbGRfc3NsLnB5CisrKyBiL1BDYnVpbGQvYnVpbGRfc3NsLnB5CkBAIC02NSw5ICs2NSw5IEBACiAKICMgRmV0Y2ggU1NMIGRpcmVjdG9yeSBmcm9tIFZDIHByb3BlcnRpZXMKIGRlZiBnZXRfc3NsX2RpcigpOgotICAgIHByb3BmaWxlID0gKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAncHlwcm9qZWN0LnZzcHJvcHMnKSkKKyAgICBwcm9wZmlsZSA9IChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJ3B5cHJvamVjdC5wcm9wcycpKQogICAgIHdpdGggb3Blbihwcm9wZmlsZSkgYXMgZjoKLSAgICAgICAgbSA9IHJlLnNlYXJjaCgnb3BlbnNzbC0oW14iXSspIicsIGYucmVhZCgpKQorICAgICAgICBtID0gcmUuc2VhcmNoKCdvcGVuc3NsLShbXjxdKyk8JywgZi5yZWFkKCkpCiAgICAgICAgIHJldHVybiAiLi5cLi5cb3BlbnNzbC0iK20uZ3JvdXAoMSkKIAogCkBAIC0yMjgsOSArMjI4LDkgQEAKIAogICAgICAgICAjIE5vdyBydW4gbWFrZS4KICAgICAgICAgaWYgYXJjaCA9PSAiYW1kNjQiOgotICAgICAgICAgICAgcmMgPSBvcy5zeXN0ZW0oIm1sNjQgLWMgLUZvbXNcXHVwdGFibGUub2JqIG1zXFx1cHRhYmxlLmFzbSIpCisgICAgICAgICAgICByYyA9IG9zLnN5c3RlbSgibmFzbSAtZiB3aW42NCAtRE5FQVIgLU94IC1nIG1zXFx1cHRhYmxlLmFzbSIpCiAgICAgICAgICAgICBpZiByYzoKLSAgICAgICAgICAgICAgICBwcmludCgibWw2NCBhc3NlbWJsZXIgaGFzIGZhaWxlZC4iKQorICAgICAgICAgICAgICAgIHByaW50KCJuYXNtIGFzc2VtYmxlciBoYXMgZmFpbGVkLiIpCiAgICAgICAgICAgICAgICAgc3lzLmV4aXQocmMpCiAKICAgICAgICAgY29weShyImNyeXB0b1xidWlsZGluZl8lcy5oIiAlIGFyY2gsIHIiY3J5cHRvXGJ1aWxkaW5mLmgiKQpkaWZmIC0tZ2l0IGEvUENidWlsZC9idWlsZF90a2ludGVyLnB5IGIvUENidWlsZC9idWlsZF90a2ludGVyLnB5CmluZGV4IGViMWQwOTIuLjQxOTZjZjMgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvYnVpbGRfdGtpbnRlci5weQorKysgYi9QQ2J1aWxkL2J1aWxkX3RraW50ZXIucHkKQEAgLTExLDggKzExLDggQEAKIGhlcmUgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKIHBhciA9IG9zLnBhdGgucGFyZGlyCiAKLVRDTCA9ICJ0Y2w4LjUuOSIKLVRLID0gInRrOC41LjkiCitUQ0wgPSAidGNsOC41LjExIgorVEsgPSAidGs4LjUuMTEiCiBUSVggPSAidGl4LTguNC4zLngiCiAKIFJPT1QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGhlcmUsIHBhciwgcGFyKSkKQEAgLTMyLDcgKzMyLDcgQEAKIGRlZiBidWlsZChwbGF0Zm9ybSwgY2xlYW4pOgogICAgIGlmIHBsYXRmb3JtID09ICJXaW4zMiI6CiAgICAgICAgIGRlc3QgPSBvcy5wYXRoLmpvaW4oUk9PVCwgInRjbHRrIikKLSAgICAgICAgbWFjaGluZSA9ICJYODYiCisgICAgICAgIG1hY2hpbmUgPSAiSVg4NiIKICAgICBlbGlmIHBsYXRmb3JtID09ICJBTUQ2NCI6CiAgICAgICAgIGRlc3QgPSBvcy5wYXRoLmpvaW4oUk9PVCwgInRjbHRrNjQiKQogICAgICAgICBtYWNoaW5lID0gIkFNRDY0IgpkaWZmIC0tZ2l0IGEvUENidWlsZC9kZWJ1Zy5wcm9wcyBiL1BDYnVpbGQvZGVidWcucHJvcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI3YTY1YQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvZGVidWcucHJvcHMKQEAgLTAsMCArMSwyNyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyI+CisgICAgPFB5RGVidWdFeHQ+X2Q8L1B5RGVidWdFeHQ+CisgICAgPEtpbGxQeXRob25FeGU+JChPdXREaXIpa2lsbF9weXRob25fZC5leGU8L0tpbGxQeXRob25FeGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxUYXJnZXROYW1lPiQoUHJvamVjdE5hbWUpX2Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IlB5RGVidWdFeHQiPgorICAgICAgPFZhbHVlPiQoUHlEZWJ1Z0V4dCk8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJLaWxsUHl0aG9uRXhlIj4KKyAgICAgIDxWYWx1ZT4kKEtpbGxQeXRob25FeGUpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvZW52LmJhdCBiL1BDYnVpbGQvZW52LmJhdAppbmRleCA2MzhiMTZjLi4wOGRjOGVmIDEwMDY0NAotLS0gYS9QQ2J1aWxkL2Vudi5iYXQKKysrIGIvUENidWlsZC9lbnYuYmF0CkBAIC0xLDUgKzEsOSBAQAogQGVjaG8gb2ZmCi1zZXQgVlM5PSVQcm9ncmFtRmlsZXMlXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDkuMAorc2V0IFZTMTA9JVByb2dyYW1GaWxlcyh4ODYpJVxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAxMC4wCitJRiBFWElTVCAiJVZTMTAlIiBHT1RPIG9rCitzZXQgVlMxMD0lUHJvZ3JhbUZpbGVzJVxNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAxMC4wCis6b2sKKwogZWNobyBCdWlsZCBlbnZpcm9ubWVudHM6IHg4NiwgaWE2NCwgYW1kNjQsIHg4Nl9hbWQ2NCwgeDg2X2lhNjQKIGVjaG8uCi1jYWxsICIlVlM5JVxWQ1x2Y3ZhcnNhbGwuYmF0IiAlMQorY2FsbCAiJVZTMTAlXFZDXHZjdmFyc2FsbC5iYXQiICUxCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2tpbGxfcHl0aG9uLmMgYi9QQ2J1aWxkL2tpbGxfcHl0aG9uLmMKaW5kZXggNmI5MTY3OC4uYmIzMjNkMyAxMDA2NDQKLS0tIGEvUENidWlsZC9raWxsX3B5dGhvbi5jCisrKyBiL1BDYnVpbGQva2lsbF9weXRob24uYwpAQCAtMTA2LDcgKzEwNiw3IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIFhYWCBUT0RPOiBpZiB3ZSByZWFsbHkgd2FudGVkIHRvIGJlIGZhbmN5LCB3ZSBjb3VsZCBjaGVjayB0aGUgCiAgICAgICAgICAqIG1vZHVsZXMgZm9yIGFsbCBwcm9jZXNzZXMgKG5vdCBqdXN0IHRoZSBweXRob25bX2RdLmV4ZSBvbmVzKQotICAgICAgICAgKiBhbmQgc2VlIGlmIGFueSBvZiBvdXIgRExMcyBhcmUgbG9hZGVkIChpLmUuIHB5dGhvbjMyW19kXS5kbGwpLAorICAgICAgICAgKiBhbmQgc2VlIGlmIGFueSBvZiBvdXIgRExMcyBhcmUgbG9hZGVkIChpLmUuIHB5dGhvbjMzW19kXS5kbGwpLAogICAgICAgICAgKiBhcyB0aGF0IHdvdWxkIGFsc28gaW5oaWJpdCBvdXIgYWJpbGl0eSB0byByZWJ1aWxkIHRoZSBzb2x1dGlvbi4KICAgICAgICAgICogTm90IHdvcnRoIGxvb3Npbmcgc2xlZXAgb3ZlciB0aG91Z2g7IGZvciBub3csIGEgc2ltcGxlIGNoZWNrIAogICAgICAgICAgKiBmb3IganVzdCB0aGUgcHl0aG9uIGV4ZWN1dGFibGUgc2hvdWxkIGJlIHN1ZmZpY2llbnQuCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2tpbGxfcHl0aG9uLnZjeHByb2ogYi9QQ2J1aWxkL2tpbGxfcHl0aG9uLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY2N2M0MAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQva2lsbF9weXRob24udmN4cHJvagpAQCAtMCwwICsxLDEyMCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPmtpbGxfcHl0aG9uPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKV9kLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSlfZC5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJraWxsX3B5dGhvbi5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2tpbGxfcHl0aG9uLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQva2lsbF9weXRob24udmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzM2Q3NTEKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL2tpbGxfcHl0aG9uLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0ODYwNjU5MS1jOGI2LTQxYTUtOTVjNS05YTA4OTBjNTUwNGZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImtpbGxfcHl0aG9uLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9tYWtlX2J1aWxkaW5mby5jIGIvUENidWlsZC9tYWtlX2J1aWxkaW5mby5jCmluZGV4IGZkM2EyZTIuLmY5YWFkZWUgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvbWFrZV9idWlsZGluZm8uYworKysgYi9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLmMKQEAgLTIsNiArMiw3IEBACiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGlvLmg+CiAKICNkZWZpbmUgQ01EX1NJWkUgNTAwCiAKQEAgLTYxLDYgKzYyLDUxIEBACiAgICAgcmV0dXJuIDE7CiB9CiAKK2NvbnN0IGNoYXIgREVMSU1TW10gPSB7ICIgXG4iIH07CisKK2ludCBnZXRfbWVyY3VyaWFsX2luZm8oY2hhciAqIGhnYnJhbmNoLCBjaGFyICogaGd0YWcsIGNoYXIgKiBoZ3JldiwgaW50IHNpemUpCit7CisgICAgaW50IHJlc3VsdCA9IDA7CisgICAgY2hhciBmaWxlbmFtZVtDTURfU0laRV07CisgICAgY2hhciBjbWRsaW5lW0NNRF9TSVpFXTsKKworICAgIHN0cmNweV9zKGZpbGVuYW1lLCBDTURfU0laRSwgInRtcFhYWFhYWCIpOworICAgIGlmIChfbWt0ZW1wX3MoZmlsZW5hbWUsIENNRF9TSVpFKSA9PSAwKSB7CisgICAgICAgIGludCByYzsKKworICAgICAgICBzdHJjcHlfcyhjbWRsaW5lLCBDTURfU0laRSwgImhnIGlkIC1iaXQgPiAiKTsKKyAgICAgICAgc3RyY2F0X3MoY21kbGluZSwgQ01EX1NJWkUsIGZpbGVuYW1lKTsKKyAgICAgICAgcmMgPSBzeXN0ZW0oY21kbGluZSk7CisgICAgICAgIGlmIChyYyA9PSAwKSB7CisgICAgICAgICAgICBGSUxFICogZnA7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChmb3Blbl9zKCZmcCwgZmlsZW5hbWUsICJyIikgPT0gMCkgeworICAgICAgICAgICAgICAgIGNoYXIgKiBjcCA9IGZnZXRzKGNtZGxpbmUsIENNRF9TSVpFLCBmcCk7CisKKyAgICAgICAgICAgICAgICBpZiAoY3ApIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhciAqIGNvbnRleHQgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBjaGFyICogdHAgPSBzdHJ0b2tfcyhjcCwgREVMSU1TLCAmY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0cCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RyY3B5X3MoaGdyZXYsIHNpemUsIHRwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRwID0gc3RydG9rX3MoTlVMTCwgREVMSU1TLCAmY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHlfcyhoZ2JyYW5jaCwgc2l6ZSwgdHApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwID0gc3RydG9rX3MoTlVMTCwgREVMSU1TLCAmY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweV9zKGhndGFnLCBzaXplLCB0cCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZjbG9zZShmcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgX3VubGluayhmaWxlbmFtZSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIGludCBtYWluKGludCBhcmdjLCBjaGFyKmFyZ3ZbXSkKIHsKICAgICBjaGFyIGNvbW1hbmRbQ01EX1NJWkVdID0gImNsLmV4ZSAtYyAtRF9XSU4zMiAtRFVTRV9ETF9FWFBPUlQgLURfV0lORE9XUyAtRFdJTjMyIC1EX1dJTkRMTCAiOwpAQCAtMTA5LDggKzE1NSwyNyBAQAogICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlwiIik7CiAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsKICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJnZXRidWlsZGluZm8yLmNcIiAtRFNVQldDUkVWICIpOwotICAgIH0gZWxzZQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgY2hhciBoZ3RhZ1tDTURfU0laRV07CisgICAgICAgIGNoYXIgaGdicmFuY2hbQ01EX1NJWkVdOworICAgICAgICBjaGFyIGhncmV2W0NNRF9TSVpFXTsKKworICAgICAgICBpZiAoZ2V0X21lcmN1cmlhbF9pbmZvKGhnYnJhbmNoLCBoZ3RhZywgaGdyZXYsIENNRF9TSVpFKSkgeworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItREhHQlJBTkNIPVxcXCIiKTsKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCBoZ2JyYW5jaCk7CisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlxcXCIiKTsKKworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIgLURIR1RBRz1cXFwiIik7CisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgaGd0YWcpOworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcXFwiIik7CisKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiIC1ESEdWRVJTSU9OPVxcXCIiKTsKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCBoZ3Jldik7CisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlxcXCIgIik7CisgICAgICAgIH0KICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIuLlxcTW9kdWxlc1xcZ2V0YnVpbGRpbmZvLmMiKTsKKyAgICB9CiAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIgLUZvXCIiKTsKICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgdG1wcGF0aCk7CiAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJnZXRidWlsZGluZm8ub1wiIC1JLi5cXEluY2x1ZGUgLUkuLlxcUEMiKTsKZGlmZiAtLWdpdCBhL1BDYnVpbGQvbWFrZV9idWlsZGluZm8udmN4cHJvaiBiL1BDYnVpbGQvbWFrZV9idWlsZGluZm8udmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWU3ZjkxCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9tYWtlX2J1aWxkaW5mby52Y3hwcm9qCkBAIC0wLDAgKzEsNTIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+bWFrZV9idWlsZGluZm88L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKW1ha2VfYnVpbGRpbmZvLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibWFrZV9idWlsZGluZm8uYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9tYWtlX2J1aWxkaW5mby52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjI3ZjhjCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9tYWtlX2J1aWxkaW5mby52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxNCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Im1ha2VfYnVpbGRpbmZvLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9tYWtlX3ZlcnNpb25pbmZvLnZjeHByb2ogYi9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2Y1MDdiCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9tYWtlX3ZlcnNpb25pbmZvLnZjeHByb2oKQEAgLTAsMCArMSwyMDAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5tYWtlX3ZlcnNpb25pbmZvPC9Sb290TmFtZXNwYWNlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDdXN0b21CdWlsZFN0ZXA+CisgICAgICA8TWVzc2FnZT5CdWlsZCBQQy9weXRob25udF9yYyhfZCkuaDwvTWVzc2FnZT4KKyAgICAgIDxDb21tYW5kPmNkICQoU29sdXRpb25EaXIpCittYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbm50X3JjLmgKKzwvQ29tbWFuZD4KKyAgICAgIDxPdXRwdXRzPiQoU29sdXRpb25EaXIpLi5cUENccHl0aG9ubnRfcmMuaDslKE91dHB1dHMpPC9PdXRwdXRzPgorICAgICAgPElucHV0cz4kKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm8uZXhlPC9JbnB1dHM+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mby5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgICAgPFBvc3RCdWlsZEV2ZW50IC8+CisgICAgPFBvc3RCdWlsZEV2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9Qb3N0QnVpbGRFdmVudD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPEN1c3RvbUJ1aWxkU3RlcD4KKyAgICAgIDxNZXNzYWdlPkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oPC9NZXNzYWdlPgorICAgICAgPENvbW1hbmQ+Y2QgJChTb2x1dGlvbkRpcikKK21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cUENccHl0aG9ubnRfcmMuaAorPC9Db21tYW5kPgorICAgICAgPE91dHB1dHM+JChTb2x1dGlvbkRpcikuLlxQQ1xweXRob25udF9yYy5oOyUoT3V0cHV0cyk8L091dHB1dHM+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICA8L0xpbms+CisgICAgPFBvc3RCdWlsZEV2ZW50PgorICAgICAgPENvbW1hbmQ+Y2QgJChTb2x1dGlvbkRpcikKK21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cUENccHl0aG9uX250LmgKKzwvQ29tbWFuZD4KKyAgICA8L1Bvc3RCdWlsZEV2ZW50PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q3VzdG9tQnVpbGRTdGVwPgorICAgICAgPE1lc3NhZ2U+QnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmg8L01lc3NhZ2U+CisgICAgICA8Q29tbWFuZD5jZCAkKFNvbHV0aW9uRGlyKQorbWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbm50X3JjX2QuaAorPC9Db21tYW5kPgorICAgICAgPE91dHB1dHM+JChTb2x1dGlvbkRpcikuLlxQQ1xweXRob25udF9yY19kLmg7JShPdXRwdXRzKTwvT3V0cHV0cz4KKyAgICAgIDxJbnB1dHM+JChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvX2QuZXhlPC9JbnB1dHM+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm9fZC5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgICAgPFBvc3RCdWlsZEV2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9Qb3N0QnVpbGRFdmVudD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxDdXN0b21CdWlsZFN0ZXA+CisgICAgICA8TWVzc2FnZT5CdWlsZCBQQy9weXRob25udF9yYyhfZCkuaDwvTWVzc2FnZT4KKyAgICAgIDxDb21tYW5kPmNkICQoU29sdXRpb25EaXIpCittYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cUENccHl0aG9ubnRfcmNfZC5oCis8L0NvbW1hbmQ+CisgICAgICA8T3V0cHV0cz4kKFNvbHV0aW9uRGlyKS4uXFBDXHB5dGhvbm50X3JjX2QuaDslKE91dHB1dHMpPC9PdXRwdXRzPgorICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+ZmFsc2U8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm9fZC5leGU8L091dHB1dEZpbGU+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8Q29tbWFuZD5jZCAkKFNvbHV0aW9uRGlyKQorbWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbl9udF9kLmgKKzwvQ29tbWFuZD4KKyAgICA8L1Bvc3RCdWlsZEV2ZW50PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xtYWtlX3ZlcnNpb25pbmZvLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvbWFrZV92ZXJzaW9uaW5mby52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2YzA0MzQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2U0MTgwOTU0LWMzYTUtNDc0OS1iOWE0LTMxYjgwNGVlNGZhOH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcbWFrZV92ZXJzaW9uaW5mby5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcGNidWlsZC5zbG4gYi9QQ2J1aWxkL3BjYnVpbGQuc2xuCmluZGV4IDFkZTRlYTEuLmQ2YTAyMmYgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcGNidWlsZC5zbG4KKysrIGIvUENidWlsZC9wY2J1aWxkLnNsbgpAQCAtMSwxNDEgKzEsNzggQEAKLU1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDEwLjAwDQotIyBWaXN1YWwgU3R1ZGlvIDIwMDgNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbiIsICJweXRob24udmNwcm9qIiwgIntCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fSA9IHtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV92ZXJzaW9uaW5mbyIsICJtYWtlX3ZlcnNpb25pbmZvLnZjcHJvaiIsICJ7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfSINCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob25jb3JlIiwgInB5dGhvbmNvcmUudmNwcm9qIiwgIntDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfSA9IHtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSA9IHs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9DQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSA9IHtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9udyIsICJweXRob253LnZjcHJvaiIsICJ7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInc5eHBvcGVuIiwgInc5eHBvcGVuLnZjcHJvaiIsICJ7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0gPSB7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIm1ha2VfYnVpbGRpbmZvIiwgIm1ha2VfYnVpbGRpbmZvLnZjcHJvaiIsICJ7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSINCi1FbmRQcm9qZWN0DQorTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTEuMDANCisjIFZpc3VhbCBTdHVkaW8gMjAxMA0KIFByb2plY3QoInsyMTUwRTMzMy04RkRDLTQyQTMtOTQ3NC0xQTM5NTZENDZERTh9IikgPSAiU29sdXRpb24gSXRlbXMiLCAiU29sdXRpb24gSXRlbXMiLCAiezU1M0VDMzNFLTk4MTYtNDk5Ni1BNjYwLTVENjE4NkEwQjBCM30iDQogCVByb2plY3RTZWN0aW9uKFNvbHV0aW9uSXRlbXMpID0gcHJlUHJvamVjdA0KIAkJLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYyA9IC4uXE1vZHVsZXNcZ2V0YnVpbGRpbmZvLmMNCiAJCXJlYWRtZS50eHQgPSByZWFkbWUudHh0DQogCUVuZFByb2plY3RTZWN0aW9uDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAid2luc291bmQiLCAid2luc291bmQudmNwcm9qIiwgInsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob24iLCAicHl0aG9uLnZjeHByb2oiLCAie0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2N0eXBlcyIsICJfY3R5cGVzLnZjcHJvaiIsICJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV92ZXJzaW9uaW5mbyIsICJtYWtlX3ZlcnNpb25pbmZvLnZjeHByb2oiLCAie0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2N0eXBlc190ZXN0IiwgIl9jdHlwZXNfdGVzdC52Y3Byb2oiLCAiezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbmNvcmUiLCAicHl0aG9uY29yZS52Y3hwcm9qIiwgIntDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9lbGVtZW50dHJlZSIsICJfZWxlbWVudHRyZWUudmNwcm9qIiwgInsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob253IiwgInB5dGhvbncudmN4cHJvaiIsICJ7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbXNpIiwgIl9tc2kudmNwcm9qIiwgInszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ3OXhwb3BlbiIsICJ3OXhwb3Blbi52Y3hwcm9qIiwgIntFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9zb2NrZXQiLCAiX3NvY2tldC52Y3Byb2oiLCAiezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIm1ha2VfYnVpbGRpbmZvIiwgIm1ha2VfYnVpbGRpbmZvLnZjeHByb2oiLCAie0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NxbGl0ZTMiLCAiX3NxbGl0ZTMudmNwcm9qIiwgInsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfSA9IHtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ3aW5zb3VuZCIsICJ3aW5zb3VuZC52Y3hwcm9qIiwgInsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9zc2wiLCAiX3NzbC52Y3Byb2oiLCAie0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9ID0ge0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0NCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9ID0gezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0NCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9ID0ge0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0NCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9kZWNpbWFsIiwgIl9kZWNpbWFsLnZjeHByb2oiLCAiezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3RjYXBpIiwgIl90ZXN0Y2FwaS52Y3Byb2oiLCAiezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9jdHlwZXMiLCAiX2N0eXBlcy52Y3hwcm9qIiwgInswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90a2ludGVyIiwgIl90a2ludGVyLnZjcHJvaiIsICJ7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2N0eXBlc190ZXN0IiwgIl9jdHlwZXNfdGVzdC52Y3hwcm9qIiwgIns5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImJ6MiIsICJiejIudmNwcm9qIiwgIns3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfZWxlbWVudHRyZWUiLCAiX2VsZW1lbnR0cmVlLnZjeHByb2oiLCAiezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic2VsZWN0IiwgInNlbGVjdC52Y3Byb2oiLCAiezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9tc2kiLCAiX21zaS52Y3hwcm9qIiwgInszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInVuaWNvZGVkYXRhIiwgInVuaWNvZGVkYXRhLnZjcHJvaiIsICJ7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NvY2tldCIsICJfc29ja2V0LnZjeHByb2oiLCAiezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHlleHBhdCIsICJweWV4cGF0LnZjcHJvaiIsICJ7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NxbGl0ZTMiLCAiX3NxbGl0ZTMudmN4cHJvaiIsICJ7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJiZGlzdF93aW5pbnN0IiwgImJkaXN0X3dpbmluc3QudmNwcm9qIiwgIntFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9Ig0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NzbCIsICJfc3NsLnZjeHByb2oiLCAie0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2hhc2hsaWIiLCAiX2hhc2hsaWIudmNwcm9qIiwgIns0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSA9IHtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfSA9IHtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGVzdGNhcGkiLCAiX3Rlc3RjYXBpLnZjeHByb2oiLCAiezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic3FsaXRlMyIsICJzcWxpdGUzLnZjcHJvaiIsICJ7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0gPSB7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3RraW50ZXIiLCAiX3RraW50ZXIudmN4cHJvaiIsICJ7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbXVsdGlwcm9jZXNzaW5nIiwgIl9tdWx0aXByb2Nlc3NpbmcudmNwcm9qIiwgIns5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfYnoyIiwgIl9iejIudmN4cHJvaiIsICJ7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzc2wiLCAic3NsLnZjcHJvaiIsICJ7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0gPSB7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic2VsZWN0IiwgInNlbGVjdC52Y3hwcm9qIiwgInsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImtpbGxfcHl0aG9uIiwgImtpbGxfcHl0aG9uLnZjcHJvaiIsICJ7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSINCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9sem1hIiwgIl9sem1hLnZjeHByb2oiLCAie0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uM2RsbCIsICJweXRob24zZGxsLnZjcHJvaiIsICJ7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfSINCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInVuaWNvZGVkYXRhIiwgInVuaWNvZGVkYXRhLnZjeHByb2oiLCAie0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAieHhsaW1pdGVkIiwgInh4bGltaXRlZC52Y3Byb2oiLCAie0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0iDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweWV4cGF0IiwgInB5ZXhwYXQudmN4cHJvaiIsICJ7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJiZGlzdF93aW5pbnN0IiwgImJkaXN0X3dpbmluc3QudmN4cHJvaiIsICJ7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfaGFzaGxpYiIsICJfaGFzaGxpYi52Y3hwcm9qIiwgIns0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNxbGl0ZTMiLCAic3FsaXRlMy52Y3hwcm9qIiwgIntBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9tdWx0aXByb2Nlc3NpbmciLCAiX211bHRpcHJvY2Vzc2luZy52Y3hwcm9qIiwgIns5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNzbCIsICJzc2wudmN4cHJvaiIsICJ7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJraWxsX3B5dGhvbiIsICJraWxsX3B5dGhvbi52Y3hwcm9qIiwgIns2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbjNkbGwiLCAicHl0aG9uM2RsbC52Y3hwcm9qIiwgIns4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInh4bGltaXRlZCIsICJ4eGxpbWl0ZWQudmN4cHJvaiIsICJ7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGVzdGJ1ZmZlciIsICJfdGVzdGJ1ZmZlci52Y3hwcm9qIiwgIntBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5bGF1bmNoZXIiLCAicHlsYXVuY2hlci52Y3hwcm9qIiwgIns3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5d2xhdW5jaGVyIiwgInB5d2xhdW5jaGVyLnZjeHByb2oiLCAiezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2ZyZWV6ZV9pbXBvcnRsaWIiLCAiX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvaiIsICJ7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfSINCiBFbmRQcm9qZWN0DQogR2xvYmFsDQogCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uDQpAQCAtMjYxLDYgKzE5OCwyMiBAQAogCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KIAkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCiAJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KIAkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KQEAgLTQzNyw2ICszOTAsMjIgQEAKIAkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQogCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCiAJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCkBAIC01NTgsMzYgKzUyNyw5MCBAQAogCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQogCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KIAkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KIAkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCiAJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQogCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCiAJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KIAkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQogCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KIAkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQogCUVuZEdsb2JhbFNlY3Rpb24NCiAJR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24NCiAJCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQ0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcGdpbnN0cnVtZW50LnByb3BzIGIvUENidWlsZC9wZ2luc3RydW1lbnQucHJvcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU4NDk5NQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcGdpbnN0cnVtZW50LnByb3BzCkBAIC0wLDAgKzEsMzggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiPgorICAgIDxPdXREaXJQR0k+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtKS1wZ2lcPC9PdXREaXJQR0k+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXI+JChPdXREaXJQR0kpXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktdGVtcC1wZ2lcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPEZhdm9yU2l6ZU9yU3BlZWQ+U2l6ZTwvRmF2b3JTaXplT3JTcGVlZD4KKyAgICAgIDxPbWl0RnJhbWVQb2ludGVycz50cnVlPC9PbWl0RnJhbWVQb2ludGVycz4KKyAgICAgIDxFbmFibGVGaWJlclNhZmVPcHRpbWl6YXRpb25zPmZhbHNlPC9FbmFibGVGaWJlclNhZmVPcHRpbWl6YXRpb25zPgorICAgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPEV4Y2VwdGlvbkhhbmRsaW5nPgorICAgICAgPC9FeGNlcHRpb25IYW5kbGluZz4KKyAgICAgIDxCdWZmZXJTZWN1cml0eUNoZWNrPmZhbHNlPC9CdWZmZXJTZWN1cml0eUNoZWNrPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz5mYWxzZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICAgIDxMaW5rVGltZUNvZGVHZW5lcmF0aW9uPlBHSW5zdHJ1bWVudDwvTGlua1RpbWVDb2RlR2VuZXJhdGlvbj4KKyAgICAgIDxQcm9maWxlR3VpZGVkRGF0YWJhc2U+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtKS1wZ2lcJChUYXJnZXROYW1lKS5wZ2Q8L1Byb2ZpbGVHdWlkZWREYXRhYmFzZT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoT3V0RGlyUEdJKVwkKFRhcmdldE5hbWUpLmxpYjwvSW1wb3J0TGlicmFyeT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJPdXREaXJQR0kiPgorICAgICAgPFZhbHVlPiQoT3V0RGlyUEdJKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcGd1cGRhdGUucHJvcHMgYi9QQ2J1aWxkL3BndXBkYXRlLnByb3BzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NzVhMDIKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3BndXBkYXRlLnByb3BzCkBAIC0wLDAgKzEsMTcgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFNvbHV0aW9uRGlyKVxwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXBnb1w8L091dERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsTWFuaWZlc3REZXBlbmRlbmNpZXM+JShBZGRpdGlvbmFsTWFuaWZlc3REZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsTWFuaWZlc3REZXBlbmRlbmNpZXM+CisgICAgICA8TGlua1RpbWVDb2RlR2VuZXJhdGlvbj5QR1VwZGF0ZTwvTGlua1RpbWVDb2RlR2VuZXJhdGlvbj4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlkLnByb3BzIGIvUENidWlsZC9weWQucHJvcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY5OTY2ZQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHlkLnByb3BzCkBAIC0wLDAgKzEsMjUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPEdlbmVyYXRlTWFuaWZlc3Q+ZmFsc2U8L0dlbmVyYXRlTWFuaWZlc3Q+CisgICAgPEVtYmVkTWFuaWZlc3Q+ZmFsc2U8L0VtYmVkTWFuaWZlc3Q+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QeV9CVUlMRF9DT1JFX01PRFVMRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgPC9MaW5rPgorICAgIDxQb3N0QnVpbGRFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5ZF9kLnByb3BzIGIvUENidWlsZC9weWRfZC5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDIzMjg4Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weWRfZC5wcm9wcwpAQCAtMCwwICsxLDMxIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPExpbmtJbmNyZW1lbnRhbD5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxHZW5lcmF0ZU1hbmlmZXN0PmZhbHNlPC9HZW5lcmF0ZU1hbmlmZXN0PgorICAgIDxFbWJlZE1hbmlmZXN0PmZhbHNlPC9FbWJlZE1hbmlmZXN0PgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICAgIDxUYXJnZXROYW1lPiQoUHJvamVjdE5hbWUpX2Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5EZWZhdWx0PC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+ZmFsc2U8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QeV9CVUlMRF9DT1JFX01PRFVMRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluayAvPgorICAgIDxQb3N0QnVpbGRFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cCAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlleHBhdC52Y3hwcm9qIGIvUENidWlsZC9weWV4cGF0LnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc0ZmQzZAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHlleHBhdC52Y3hwcm9qCkBAIC0wLDAgKzEsMjM3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+cHlleHBhdDwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uXC4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi5cLi5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi5cLi5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uXC4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi5cLi5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi5cLi5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi5cLi5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xweWV4cGF0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHBhcnNlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9weWV4cGF0LnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmYzNjJmCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weWV4cGF0LnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDMzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntkZGFlNzdhNi03Y2EwLTRhMWItYjcxYy1kZWVhNWY0MDI1ZGV9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns1YWY5ZDQwYy1mYzQ2LTQ2NDAtYWQ4NC0zZDFkZDM0YTcxZDd9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xweWV4cGF0LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weWxhdW5jaGVyLnZjeHByb2ogYi9QQ2J1aWxkL3B5bGF1bmNoZXIudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmE5M2RkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weWxhdW5jaGVyLnZjeHByb2oKQEAgLTAsMCArMSwzMTEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPns3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5weWxhdW5jaGVyPC9Sb290TmFtZXNwYWNlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5weV9kPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPFRhcmdldE5hbWU+cHlfZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5weTwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+cHk8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5weTwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPFRhcmdldE5hbWU+cHk8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8VGFyZ2V0TmFtZT5weTwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8VGFyZ2V0TmFtZT5weTwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTtOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz5mYWxzZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTtOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz5mYWxzZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTtOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz5mYWxzZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xsYXVuY2hlci5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxQQ1xsYXVuY2hlci5pY28iIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHlsYXVuY2hlci5yYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ibWFrZV92ZXJzaW9uaW5mby52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntmMGUwNTQxZS1mMTdkLTQzMGItOTdjNC05M2FkZjBkZDI4NGV9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5bGF1bmNoZXIudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9weWxhdW5jaGVyLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGIyM2QyCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weWxhdW5jaGVyLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDMyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJSZXNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjdEQTZBQjYtRjgwMC00YzA4LThCN0EtODNCQjEyMUFBRDAxfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPnJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZTtyZXN4O3RpZmY7dGlmO3BuZzt3YXY7bWZjcmliYm9uLW1zPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGxhdW5jaGVyLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cUENcbGF1bmNoZXIuaWNvIj4KKyAgICAgIDxGaWx0ZXI+UmVzb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L05vbmU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHlsYXVuY2hlci5yYyI+CisgICAgICA8RmlsdGVyPlJlc291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlwcm9qZWN0LnByb3BzIGIvUENidWlsZC9weXByb2plY3QucHJvcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFmYmUzYwotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHlwcm9qZWN0LnByb3BzCkBAIC0wLDAgKzEsMTA1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJz09J1dpbjMyJyI+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcik8L091dERpcj4KKyAgICA8SW50RGlyPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtJChDb25maWd1cmF0aW9uKVwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgIDwvUHJvcGVydHlHcm91cD4gIAorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSd4NjQnIj4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPF9Qcm9wZXJ0eVNoZWV0RGlzcGxheU5hbWU+YW1kNjQ8L19Qcm9wZXJ0eVNoZWV0RGlzcGxheU5hbWU+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKWFtZDY0XDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktdGVtcC0kKENvbmZpZ3VyYXRpb24pXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIj4KKyAgICA8UHlEbGxOYW1lPnB5dGhvbjMzJChQeURlYnVnRXh0KTwvUHlEbGxOYW1lPgorICAgIDxQeXRob25FeGU+JChPdXREaXIpcHl0aG9uJChQeURlYnVnRXh0KS5leGU8L1B5dGhvbkV4ZT4KKyAgICA8S2lsbFB5dGhvbkV4ZT4kKE91dERpcilraWxsX3B5dGhvbiQoUHlEZWJ1Z0V4dCkuZXhlPC9LaWxsUHl0aG9uRXhlPgorICAgIDxleHRlcm5hbHNEaXI+Li5cLi48L2V4dGVybmFsc0Rpcj4KKyAgICA8c3FsaXRlM0Rpcj4kKGV4dGVybmFsc0Rpcilcc3FsaXRlLTMuNy4xMjwvc3FsaXRlM0Rpcj4KKyAgICA8YnoyRGlyPiQoZXh0ZXJuYWxzRGlyKVxiemlwMi0xLjAuNjwvYnoyRGlyPgorICAgIDxsem1hRGlyPiQoZXh0ZXJuYWxzRGlyKVx4ei01LjAuMzwvbHptYURpcj4KKyAgICA8b3BlbnNzbERpcj4kKGV4dGVybmFsc0Rpcilcb3BlbnNzbC0xLjAuMWM8L29wZW5zc2xEaXI+CisgICAgPHRjbHRrRGlyPiQoZXh0ZXJuYWxzRGlyKVx0Y2x0azwvdGNsdGtEaXI+CisgICAgPHRjbHRrNjREaXI+JChleHRlcm5hbHNEaXIpXHRjbHRrNjQ8L3RjbHRrNjREaXI+CisgICAgPHRjbHRrTGliPiQodGNsdGtEaXIpXGxpYlx0Y2w4NS5saWI7JCh0Y2x0a0RpcilcbGliXHRrODUubGliPC90Y2x0a0xpYj4KKyAgICA8dGNsdGtMaWJEZWJ1Zz4kKHRjbHRrRGlyKVxsaWJcdGNsODVnLmxpYjskKHRjbHRrRGlyKVxsaWJcdGs4NWcubGliPC90Y2x0a0xpYkRlYnVnPgorICAgIDx0Y2x0azY0TGliPiQodGNsdGs2NERpcilcbGliXHRjbDg1LmxpYjskKHRjbHRrNjREaXIpXGxpYlx0azg1LmxpYjwvdGNsdGs2NExpYj4KKyAgICA8dGNsdGs2NExpYkRlYnVnPiQodGNsdGs2NERpcilcbGliXHRjbDg1Zy5saWI7JCh0Y2x0azY0RGlyKVxsaWJcdGs4NWcubGliPC90Y2x0azY0TGliRGVidWc+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyAuLlxQQzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU4zMjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPEV4Y2VwdGlvbkhhbmRsaW5nPgorICAgICAgPC9FeGNlcHRpb25IYW5kbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPiQoT3V0RGlyKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8UHJvZ3JhbURhdGFiYXNlRmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpLnBkYjwvUHJvZ3JhbURhdGFiYXNlRmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPgorICAgICAgPFJhbmRvbWl6ZWRCYXNlQWRkcmVzcz5mYWxzZTwvUmFuZG9taXplZEJhc2VBZGRyZXNzPgorICAgICAgPERhdGFFeGVjdXRpb25QcmV2ZW50aW9uPgorICAgICAgPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQQzsuLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJQeURsbE5hbWUiPgorICAgICAgPFZhbHVlPiQoUHlEbGxOYW1lKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IlB5dGhvbkV4ZSI+CisgICAgICA8VmFsdWU+JChQeXRob25FeGUpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iS2lsbFB5dGhvbkV4ZSI+CisgICAgICA8VmFsdWU+JChLaWxsUHl0aG9uRXhlKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9ImV4dGVybmFsc0RpciI+CisgICAgICA8VmFsdWU+JChleHRlcm5hbHNEaXIpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0ic3FsaXRlM0RpciI+CisgICAgICA8VmFsdWU+JChzcWxpdGUzRGlyKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9ImJ6MkRpciI+CisgICAgICA8VmFsdWU+JChiejJEaXIpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0ibHptYURpciI+CisgICAgICA8VmFsdWU+JChsem1hRGlyKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9Im9wZW5zc2xEaXIiPgorICAgICAgPFZhbHVlPiQob3BlbnNzbERpcik8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJ0Y2x0a0RpciI+CisgICAgICA8VmFsdWU+JCh0Y2x0a0Rpcik8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJ0Y2x0azY0RGlyIj4KKyAgICAgIDxWYWx1ZT4kKHRjbHRrNjREaXIpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0idGNsdGtMaWIiPgorICAgICAgPFZhbHVlPiQodGNsdGtMaWIpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0idGNsdGtMaWJEZWJ1ZyI+CisgICAgICA8VmFsdWU+JCh0Y2x0a0xpYkRlYnVnKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9InRjbHRrNjRMaWIiPgorICAgICAgPFZhbHVlPiQodGNsdGs2NExpYik8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJ0Y2x0azY0TGliRGVidWciPgorICAgICAgPFZhbHVlPiQodGNsdGs2NExpYkRlYnVnKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uLnZjeHByb2ogYi9QQ2J1aWxkL3B5dGhvbi52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwYTlkZTAKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5dGhvbi52Y3hwcm9qCkBAIC0wLDAgKzEsMzY4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fTwvUHJvamVjdEd1aWQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob24uZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbi5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbl9kLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbl9kLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjEwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PgorICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PgorICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob24uZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPEltcG9ydExpYnJhcnk+CisgICAgICA8L0ltcG9ydExpYnJhcnk+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbi5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8SW1wb3J0TGlicmFyeT4KKyAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cUENccHljb24uaWNvIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9leGUucmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xweXRob24uYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0idzl4cG9wZW4udmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57ZTllMGExZjYtMDAwOS00ZThjLWI4ZjgtMWI4ZjVkNDlhMDU4fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbi52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3B5dGhvbi52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ5MDZhNAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHl0aG9uLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDI2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUmVzb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezJkNjkwNzk1LWRlODMtNGEzMy04MjM1LTNjNWRhZmU0NWVmYX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezhiMDEwYTE5LTViMjktNDVmMS1hOGEwLWY2NzJlMmJiYjExYX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXFBDXHB5Y29uLmljbyI+CisgICAgICA8RmlsdGVyPlJlc291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9Ob25lPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9leGUucmMiPgorICAgICAgPEZpbHRlcj5SZXNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccHl0aG9uLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob24zZGxsLnZjeHByb2ogYi9QQ2J1aWxkL3B5dGhvbjNkbGwudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzQ1OWI1Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weXRob24zZGxsLnZjeHByb2oKQEAgLTAsMCArMSwxODQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnB5dGhvbjNkbGw8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgcmVidWlsZDwvTk1ha2VSZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIGNsZWFuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoT3V0RGlyKXB5dGhvbjMuZGxsPC9OTWFrZU91dHB1dD4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKTwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkPC9OTWFrZVJlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIGNsZWFuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE91dERpcilweXRob24zLmRsbDwvTk1ha2VPdXRwdXQ+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcik8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQ8L05NYWtlUmVCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIGNsZWFuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgcmVidWlsZDwvTk1ha2VSZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIGNsZWFuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoT3V0RGlyKXB5dGhvbjMuZGxsPC9OTWFrZU91dHB1dD4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKTwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkPC9OTWFrZVJlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIGNsZWFuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE91dERpcilweXRob24zLmRsbDwvTk1ha2VPdXRwdXQ+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcik8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQ8L05NYWtlUmVCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIGNsZWFuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxQQ1xweXRob24zLmRlZiIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob24zZGxsLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX250LnJjIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbjNkbGwudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9weXRob24zZGxsLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjUwYzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weXRob24zZGxsLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDMyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJSZXNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjdEQTZBQjYtRjgwMC00YzA4LThCN0EtODNCQjEyMUFBRDAxfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPnJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZTtyZXN4O3RpZmY7dGlmO3BuZzt3YXY8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbjMuZGVmIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9Ob25lPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbjNkbGwuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9udC5yYyI+CisgICAgICA8RmlsdGVyPlJlc291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qIGIvUENidWlsZC9weXRob25jb3JlLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk0OTNlMwotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qCkBAIC0wLDAgKzEsNjgwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+cHl0aG9uY29yZTwvUm9vdE5hbWVzcGFjZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKFB5RGxsTmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKFB5RGxsTmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoUHlEbGxOYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKFB5RGxsTmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKFB5RGxsTmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKFB5RGxsTmFtZSk8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vWm0yMDAgICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8TWVzc2FnZT5HZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLjwvTWVzc2FnZT4KKyAgICAgIDxDb21tYW5kPiIkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgUmVsZWFzZSAiJChJbnREaXIpIjwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFB5RGxsTmFtZSkuZGxsPC9PdXRwdXRGaWxlPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vWm0yMDAgICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8TWVzc2FnZT5HZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLjwvTWVzc2FnZT4KKyAgICAgIDxDb21tYW5kPiIkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgUmVsZWFzZSAiJChJbnREaXIpIjwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9abTIwMCAgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPkRlZmF1bHQ8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPE1lc3NhZ2U+R2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi48L01lc3NhZ2U+CisgICAgICA8Q29tbWFuZD4iJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIERlYnVnICIkKEludERpcikiPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChJbnREaXIpZ2V0YnVpbGRpbmZvLm87JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9abTIwMCAgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPkRlZmF1bHQ8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPE1lc3NhZ2U+R2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi48L01lc3NhZ2U+CisgICAgICA8Q29tbWFuZD4iJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIERlYnVnICIkKEludERpcikiPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChJbnREaXIpZ2V0YnVpbGRpbmZvLm87JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9abTIwMCAgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgorICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBSZWxlYXNlICIkKEludERpcikiPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChJbnREaXIpZ2V0YnVpbGRpbmZvLm87JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5kbGw8L091dHB1dEZpbGU+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPE1lc3NhZ2U+R2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi48L01lc3NhZ2U+CisgICAgICA8Q29tbWFuZD4iJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIFJlbGVhc2UgIiQoSW50RGlyKSI8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKEludERpcilnZXRidWlsZGluZm8ubzslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPE1lc3NhZ2U+R2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi48L01lc3NhZ2U+CisgICAgICA8Q29tbWFuZD4iJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIFJlbGVhc2UgIiQoSW50RGlyKSI8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKEludERpcilnZXRidWlsZGluZm8ubzslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQeURsbE5hbWUpLmRsbDwvT3V0cHV0RmlsZT4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9abTIwMCAgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgorICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBSZWxlYXNlICIkKEludERpcikiPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChJbnREaXIpZ2V0YnVpbGRpbmZvLm87JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGFic3RyYWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGFjY3UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYXNkbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxhc3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYml0c2V0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGJvb2xvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYnl0ZXNfbWV0aG9kcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxieXRlYXJyYXlvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYnl0ZXNvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcY2VsbG9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxjZXZhbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxjbGFzc29iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxjb2RlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGNvZGVjcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxjb21waWxlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGNvbXBsZXhvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZGF0ZXRpbWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZGVzY3JvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZGljdG9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxkeW5hbWljX2Fubm90YXRpb25zLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGVudW1vYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZXJyY29kZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxldmFsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGZpbGVvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZmlsZXV0aWxzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGZsb2F0b2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGZyYW1lb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGZ1bmNvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZ2Vub2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGdyYW1pbml0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGdyYW1tYXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcaW1wb3J0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGludHJjaGVjay5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxpdGVyb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGxpc3RvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbG9uZ2ludHJlcHIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbG9uZ29iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxtYXJzaGFsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG1lbW9yeW9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxtZXRhZ3JhbW1hci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxtZXRob2RvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbW9kc3VwcG9ydC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxtb2R1bGVvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbmFtZXNwYWNlb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG5vZGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9iamltcGwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3Bjb2RlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9zZGVmcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwYXJzZXRvay5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwYXRjaGxldmVsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHBnZW4uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGdlbmhlYWRlcnMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlfY3Vyc2VzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5YXJlbmEuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHljYXBzdWxlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5Y3R5cGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlkZWJ1Zy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWVycm9ycy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWV4cGF0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5ZnBlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5Z2V0b3B0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5bWF0aC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXRpbWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHltYWNyby5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweW1lbS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXBvcnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlzdGF0ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXN0cmNtcC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXN0cnRvZC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxkdG9hLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXFB5dGhvbi1hc3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcUHl0aG9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5dGhvbnJ1bi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXRocmVhZC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxyYW5nZW9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxzZXRvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcc2xpY2VvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcc3RydWN0bWVtYmVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHN0cnVjdHNlcS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxzeW10YWJsZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxzeXNtb2R1bGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcdG9rZW4uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcdHJhY2ViYWNrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHR1cGxlb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHVjbmhhc2guaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcdW5pY29kZW9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVx3ZWFrcmVmb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9tYXRoLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcY3JjMzIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxkZWZsYXRlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZmZpeGVkLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcdHJlZXMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx6Y29uZi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHpjb25mLmluLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcemxpYi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHp1dGlsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xhbGdfamlzeDAyMDEuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXGNqa2NvZGVjcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcZW11X2ppc3gwMjEzXzIwMDAuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2NuLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19oay5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfamlzeDAyMTNfcGFpci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfanAuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2tyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc190dy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbXVsdGlieXRlY29kZWMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RyaW5nbGliXGNvdW50LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxmYXN0c2VhcmNoLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxmaW5kLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxwYXJ0aXRpb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RyaW5nbGliXHNwbGl0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHVuaWNvZGV0eXBlX2RiLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQYXJzZXJccGFyc2VyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQYXJzZXJcdG9rZW5pemVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQQ1xlcnJtYXAuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFBDXHB5Y29uZmlnLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cY2V2YWxfZ2lsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cY29uZHZhci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXGltcG9ydGRsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cdGhyZWFkX250LmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmlzZWN0bW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jb2RlY3Ntb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2NvbGxlY3Rpb25zbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jc3YuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2Z1bmN0b29sc21vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaGVhcHFtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2pzb24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2xvY2FsZW1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbHNwcm9mLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9tYXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9waWNrbGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3JhbmRvbW1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3JlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zdHJ1Y3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3dlYWtyZWYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcYXJyYXltb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcYXRleGl0bW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGF1ZGlvb3AuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcYmluYXNjaWkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY21hdGhtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RhdGV0aW1lbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGVycm5vbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZhdWx0aGFuZGxlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xnY21vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xpdGVydG9vbHNtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbWFpbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xtYXRobW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG1kNW1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xtbWFwbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG9wZXJhdG9yLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHBhcnNlcm1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xwb3NpeG1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xyb3RhdGluZ3RyZWUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc2hhMW1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzaGEyNTZtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc2hhNTEybW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNpZ25hbG1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzeW10YWJsZW1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGhyZWFkbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHRpbWVtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNceHhzdWJ0eXBlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHppcGltcG9ydC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGlibW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xmaWxlaW8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXGJ5dGVzaW8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXHN0cmluZ2lvLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xidWZmZXJlZGlvLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xpb2Jhc2UuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXHRleHRpby5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGNvbXByZXNzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxkZWZsYXRlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mYmFjay5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx0cmVlcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHVuY29tcHIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19jbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19oay5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19pc28yMDIyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2pwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2tyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX3R3LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtdWx0aWJ5dGVjb2RlYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfd2luYXBpLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGFic3RyYWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGFjY3UuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcYm9vbG9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xieXRlc19tZXRob2RzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGJ5dGVhcnJheW9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xieXRlc29iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xjYXBzdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGNlbGxvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcY2xhc3NvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcY29kZW9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xjb21wbGV4b2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGRlc2Nyb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGRpY3RvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZW51bW9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xleGNlcHRpb25zLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGZpbGVvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZmxvYXRvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZnJhbWVvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZnVuY29iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xnZW5vYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcaXRlcm9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xsaXN0b2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGxvbmdvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcbWVtb3J5b2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG1ldGhvZG9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xtb2R1bGVvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcbmFtZXNwYWNlb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xvYm1hbGxvYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xyYW5nZW9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzZXRvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc2xpY2VvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RydWN0c2VxLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHR1cGxlb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHR5cGVvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcdW5pY29kZWN0eXBlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHVuaWNvZGVvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcd2Vha3JlZm9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXGFjY2VsZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxiaXRzZXQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxmaXJzdHNldHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxncmFtbWFyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcZ3JhbW1hcjEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxsaXN0bm9kZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXG1ldGFncmFtbWFyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcbXlyZWFkbGluZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXG5vZGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxwYXJzZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxwYXJzZXRvay5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXHRva2VuaXplci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcd2lucmVnLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xjb25maWcuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGRsX250LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xnZXRwYXRocC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcbXN2Y3J0bW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccmFuZG9tLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cX3dhcm5pbmdzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cYXNkbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGFzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGJsdGlubW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cY2V2YWwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxjb2RlY3MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxjb21waWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZHluYW1pY19hbm5vdGF0aW9ucy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGR5bmxvYWRfd2luLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZXJyb3JzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZmlsZXV0aWxzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZm9ybWF0dGVyX3VuaWNvZGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxmcm96ZW4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxmdXR1cmUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxnZXRhcmdzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZ2V0Y29tcGlsZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxnZXRjb3B5cmlnaHQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxnZXRvcHQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxnZXRwbGF0Zm9ybS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGdldHZlcnNpb24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxncmFtaW5pdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGltcG9ydC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGltcG9ydGRsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cbWFyc2hhbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXG1vZHN1cHBvcnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxteXNucHJpbnRmLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cbXlzdHJ0b3VsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccGVlcGhvbGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweWFyZW5hLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHljdHlwZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5ZnBlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHltYXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHl0aW1lLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlzdGF0ZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5c3RyY21wLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlzdHJ0b2QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxkdG9hLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cUHl0aG9uLWFzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5dGhvbnJ1bi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHN0cnVjdG1lbWJlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHN5bXRhYmxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cc3lzbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cdGhyZWFkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cdHJhY2ViYWNrLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX250LnJjIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJraWxsX3B5dGhvbi52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0Pns2ZGUxMDc0NC1lMzk2LTQwYTUtYjRlMi0xYjY5YWE3YzhkMzF9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ibWFrZV9idWlsZGluZm8udmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57YzczZjBlYzEtMzU4Yi00MTc3LTk0MGYtMDg0NmFjOGIwNGNkfTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Im1ha2VfdmVyc2lvbmluZm8udmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57ZjBlMDU0MWUtZjE3ZC00MzBiLTk3YzQtOTNhZGYwZGQyODRlfTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWI0YmI0Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDkyNSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkluY2x1ZGUiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezA4NmIwYWZiLTI3MGMtNDYwMy1hMDJhLTYzZDQ2ZjBiMmI5Mn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJNb2R1bGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns4ZTgxNjA5Zi0xM2NhLTRlYWUtOWZkYi1mOGFmMjBjNzEwYzd9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iTW9kdWxlc1xfaW8iPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezg3ODdjNWJiLWJhYjYtNDU4Ni1hNDJlLTRhMjdjN2IzZmZiNn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJNb2R1bGVzXHpsaWIiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezVkNmQyZDZjLTllNjEtNGExZC1iMGIyLTVjYzJmNDQ2ZDY5ZX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJNb2R1bGVzXGNqa2NvZGVjcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OWYxMmM0YjEtMzIyZS00MzFlLWFiZjEtZTAyNTUwZjUwMDMyfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9Ik9iamVjdHMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2FiMjlhNTU4LTE0M2QtNGZlNy1hMDM5LWI0MzFmYjQyOTg1Nn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJQYXJzZXIiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezk3MzQ5ZmVlLTBhYmYtNDhiMC1hOGY1LTc3MWJmMzliOGFlZX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJQQyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZWEyMWZjOTgtZGU4OS00NzQ2LWE5NzktYzU2MTY5NjQzMjlhfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlB5dGhvbiI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZjI2OTY0MDYtMTRiYy00OGJkLTkwYzUtZTkzYWI4MmEyMWFjfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntjM2UwM2E1Yy01NmM3LTQ1ZmQtODU0My1lNWQyMzI2YjkwN2R9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYWJzdHJhY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYWNjdS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxhc2RsLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGFzdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxiaXRzZXQuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYm9vbG9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxieXRlc19tZXRob2RzLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGJ5dGVhcnJheW9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxieXRlc29iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxjZWxsb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGNldmFsLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGNsYXNzb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGNvZGUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcY29kZWNzLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGNvbXBpbGUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcY29tcGxleG9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxkYXRldGltZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxkZXNjcm9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxkaWN0b2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGR5bmFtaWNfYW5ub3RhdGlvbnMuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZW51bW9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxlcnJjb2RlLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGV2YWwuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZmlsZW9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxmaWxldXRpbHMuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZmxvYXRvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZnJhbWVvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZnVuY29iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxnZW5vYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZ3JhbWluaXQuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZ3JhbW1hci5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxpbXBvcnQuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcaW50cmNoZWNrLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGl0ZXJvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbGlzdG9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxsb25naW50cmVwci5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxsb25nb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG1hcnNoYWwuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbWVtb3J5b2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG1ldGFncmFtbWFyLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG1ldGhvZG9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxtb2RzdXBwb3J0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG1vZHVsZW9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxub2RlLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvYmppbXBsLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9wY29kZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvc2RlZnMuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGFyc2V0b2suaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGF0Y2hsZXZlbC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwZ2VuLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHBnZW5oZWFkZXJzLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5X2N1cnNlcy5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWFyZW5hLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5Y2Fwc3VsZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWN0eXBlLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5ZGVidWcuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHllcnJvcnMuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlleHBhdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWZwZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWdldG9wdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweW1hdGguaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHl0aW1lLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5bWFjcm8uaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHltZW0uaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlwb3J0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5c3RhdGUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlzdHJjbXAuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlzdHJ0b2QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZHRvYS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxQeXRob24tYXN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXFB5dGhvbi5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXRob25ydW4uaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHl0aHJlYWQuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccmFuZ2VvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcc2V0b2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHNsaWNlb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHN0cnVjdG1lbWJlci5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxzdHJ1Y3RzZXEuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcc3ltdGFibGUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcc3lzbW9kdWxlLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHRva2VuLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHRyYWNlYmFjay5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVx0dXBsZW9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVx1Y25oYXNoLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHVuaWNvZGVvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcd2Vha3JlZm9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbWF0aC5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xyb3RhdGluZ3RyZWUuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xfaW88L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxjcmMzMi5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcZGVmbGF0ZS5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mZml4ZWQuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx0cmVlcy5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcemNvbmYuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHpjb25mLmluLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx6bGliLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx6dXRpbC5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xhbGdfamlzeDAyMDEuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xjamtjb2RlY3MuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xlbXVfamlzeDAyMTNfMjAwMC5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2NuLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfaGsuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19qaXN4MDIxM19wYWlyLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfanAuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19rci5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX3R3LmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbXVsdGlieXRlY29kZWMuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxjb3VudC5oIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzdHJpbmdsaWJcZmFzdHNlYXJjaC5oIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzdHJpbmdsaWJcZmluZC5oIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzdHJpbmdsaWJccGFydGl0aW9uLmgiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxzcGxpdC5oIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cT2JqZWN0c1x1bmljb2RldHlwZV9kYi5oIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUGFyc2VyXHBhcnNlci5oIj4KKyAgICAgIDxGaWx0ZXI+UGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQYXJzZXJcdG9rZW5pemVyLmgiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFBDXGVycm1hcC5oIj4KKyAgICAgIDxGaWx0ZXI+UEM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFBDXHB5Y29uZmlnLmgiPgorICAgICAgPEZpbHRlcj5QQzwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXGltcG9ydGRsLmgiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblx0aHJlYWRfbnQuaCI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxuYW1lc3BhY2VvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblxjb25kdmFyLmgiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblxjZXZhbF9naWwuaCI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2Jpc2VjdG1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY29kZWNzbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jb2xsZWN0aW9uc21vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3N2LmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9mdW5jdG9vbHNtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2hlYXBxbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9qc29uLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9sb2NhbGVtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2xzcHJvZi5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbWF0aC5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfcGlja2xlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9yYW5kb21tb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NyZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3RydWN0LmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF93ZWFrcmVmLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGFycmF5bW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGF0ZXhpdG1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xhdWRpb29wLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGJpbmFzY2lpLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNtYXRobW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kYXRldGltZW1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xlcnJub21vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xmYXVsdGhhbmRsZXIuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZ2Ntb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcaXRlcnRvb2xzbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG1haW4uYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbWF0aG1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xtZDVtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbW1hcG1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xvcGVyYXRvci5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xwYXJzZXJtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccG9zaXhtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccm90YXRpbmd0cmVlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNoYTFtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc2hhMjU2bW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNoYTUxMm1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzaWduYWxtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc3ltdGFibGVtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3RocmVhZG1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x0aW1lbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHh4c3VidHlwZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6aXBpbXBvcnQuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYm1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cZmlsZWlvLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cYnl0ZXNpby5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xfaW88L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXHN0cmluZ2lvLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cYnVmZmVyZWRpby5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xfaW88L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXGlvYmFzZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xfaW88L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXHRleHRpby5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xfaW88L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xfaW88L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxjb21wcmVzcy5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGRlZmxhdGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZmJhY2suYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx0cmVlcy5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcdW5jb21wci5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19jbi5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfaGsuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2lzbzIwMjIuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2pwLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19rci5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfdHcuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtdWx0aWJ5dGVjb2RlYy5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcYWJzdHJhY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcYWNjdS5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xib29sb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGJ5dGVzX21ldGhvZHMuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcYnl0ZWFycmF5b2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGJ5dGVzb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGNhcHN1bGUuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcY2VsbG9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xjbGFzc29iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xjb2Rlb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGNvbXBsZXhvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZGVzY3JvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZGljdG9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xlbnVtb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGV4Y2VwdGlvbnMuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZmlsZW9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xmbG9hdG9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xmcmFtZW9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xmdW5jb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGdlbm9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xpdGVyb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGxpc3RvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcbG9uZ29iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xtZW1vcnlvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcbWV0aG9kb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG1vZHVsZW9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcb2JtYWxsb2MuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNccmFuZ2VvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc2V0b2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHNsaWNlb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHN0cnVjdHNlcS5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1x0dXBsZW9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1x0eXBlb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHVuaWNvZGVjdHlwZS5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1x1bmljb2Rlb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHdlYWtyZWZvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxhY2NlbGVyLmMiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxiaXRzZXQuYyI+CisgICAgICA8RmlsdGVyPlBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXGZpcnN0c2V0cy5jIj4KKyAgICAgIDxGaWx0ZXI+UGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcZ3JhbW1hci5jIj4KKyAgICAgIDxGaWx0ZXI+UGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcZ3JhbW1hcjEuYyI+CisgICAgICA8RmlsdGVyPlBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXGxpc3Rub2RlLmMiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxtZXRhZ3JhbW1hci5jIj4KKyAgICAgIDxGaWx0ZXI+UGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcbXlyZWFkbGluZS5jIj4KKyAgICAgIDxGaWx0ZXI+UGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcbm9kZS5jIj4KKyAgICAgIDxGaWx0ZXI+UGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJccGFyc2VyLmMiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxwYXJzZXRvay5jIj4KKyAgICAgIDxGaWx0ZXI+UGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcdG9rZW5pemVyLmMiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHdpbnJlZy5jIj4KKyAgICAgIDxGaWx0ZXI+UEM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGNvbmZpZy5jIj4KKyAgICAgIDxGaWx0ZXI+UEM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGRsX250LmMiPgorICAgICAgPEZpbHRlcj5QQzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcZ2V0cGF0aHAuYyI+CisgICAgICA8RmlsdGVyPlBDPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xtc3ZjcnRtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPlBDPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cX3dhcm5pbmdzLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxhc2RsLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxhc3QuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGJsdGlubW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxjZXZhbC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cY29kZWNzLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxjb21waWxlLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxkeW5hbWljX2Fubm90YXRpb25zLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxkeW5sb2FkX3dpbi5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZXJyb3JzLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxmaWxldXRpbHMuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGZvcm1hdHRlcl91bmljb2RlLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxmcm96ZW4uYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGZ1dHVyZS5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZ2V0YXJncy5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZ2V0Y29tcGlsZXIuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGdldGNvcHlyaWdodC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZ2V0b3B0LmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxnZXRwbGF0Zm9ybS5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZ2V0dmVyc2lvbi5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZ3JhbWluaXQuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGltcG9ydC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25caW1wb3J0ZGwuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXG1hcnNoYWwuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXG1vZHN1cHBvcnQuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXG15c25wcmludGYuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXG15c3RydG91bC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccGVlcGhvbGUuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5YXJlbmEuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5Y3R5cGUuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5ZnBlLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweW1hdGguYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5dGltZS5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlzdGF0ZS5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlzdHJjbXAuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5c3RydG9kLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxkdG9hLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxQeXRob24tYXN0LmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXRob25ydW4uYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHN0cnVjdG1lbWJlci5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cc3ltdGFibGUuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHN5c21vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cdGhyZWFkLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblx0cmFjZWJhY2suYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHJhbmRvbS5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF93aW5hcGkuYyI+CisgICAgICA8RmlsdGVyPlBDPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG5hbWVzcGFjZW9iamVjdC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9udC5yYyI+CisgICAgICA8RmlsdGVyPlJlc291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9udy52Y3hwcm9qIGIvUENidWlsZC9weXRob253LnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTIxNDU2OQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHl0aG9udy52Y3hwcm9qCkBAIC0wLDAgKzEsMzQ2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfTwvUHJvamVjdEd1aWQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+ZmFsc2U8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob253X2QuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+ZmFsc2U8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob253X2QuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbncuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9udy5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob253LmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8SW1wb3J0TGlicmFyeT4KKyAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob253LmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8SW1wb3J0TGlicmFyeT4KKyAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9udy5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPEltcG9ydExpYnJhcnk+CisgICAgICA8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob253LmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8SW1wb3J0TGlicmFyeT4KKyAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fZXhlLnJjIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXFdpbk1haW4uYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9udy52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3B5dGhvbncudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1OTg2NmYKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5dGhvbncudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMjEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJSZXNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MDQzNGNmMTEtYTMxMS00YTkyLThhNmMtNDE2NGFhNzlhN2YyfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZTFkOGVhNmItYzY1ZC00MmY0LTllZWQtNjAxMDg0NmVkMzc4fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fZXhlLnJjIj4KKyAgICAgIDxGaWx0ZXI+UmVzb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xXaW5NYWluLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXdsYXVuY2hlci52Y3hwcm9qIGIvUENidWlsZC9weXdsYXVuY2hlci52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4ZTM1YTcKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5d2xhdW5jaGVyLnZjeHByb2oKQEAgLTAsMCArMSwyNDYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5weXdsYXVuY2hlcjwvUm9vdE5hbWVzcGFjZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+cHl3X2Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8VGFyZ2V0TmFtZT5weXdfZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5weXc8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxUYXJnZXROYW1lPnB5dzwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPnB5dzwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+cHl3PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUztOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz5mYWxzZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTO05ERUJVRztfV0lONjQ7X01fWDY0OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUztOREVCVUc7X1dJTjY0O19NX1g2NDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGxhdW5jaGVyLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXFBDXGxhdW5jaGVyLmljbyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweWxhdW5jaGVyLnJjIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5d2xhdW5jaGVyLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvcHl3bGF1bmNoZXIudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0YjIzZDIKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5d2xhdW5jaGVyLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDMyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJSZXNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjdEQTZBQjYtRjgwMC00YzA4LThCN0EtODNCQjEyMUFBRDAxfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPnJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZTtyZXN4O3RpZmY7dGlmO3BuZzt3YXY7bWZjcmliYm9uLW1zPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGxhdW5jaGVyLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cUENcbGF1bmNoZXIuaWNvIj4KKyAgICAgIDxGaWx0ZXI+UmVzb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L05vbmU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHlsYXVuY2hlci5yYyI+CisgICAgICA8RmlsdGVyPlJlc291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcmVhZG1lLnR4dCBiL1BDYnVpbGQvcmVhZG1lLnR4dAppbmRleCBjN2UzYzcyLi5lNzQ5NDI5IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3JlYWRtZS50eHQKKysrIGIvUENidWlsZC9yZWFkbWUudHh0CkBAIC0xLDQgKzEsNCBAQAotQnVpbGRpbmcgUHl0aG9uIHVzaW5nIFZDKysgOS4wCitCdWlsZGluZyBQeXRob24gdXNpbmcgVkMrKyAxMC4wCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogVGhpcyBkaXJlY3RvcnkgaXMgdXNlZCB0byBidWlsZCBQeXRob24gZm9yIFdpbjMyIGFuZCB4NjQgcGxhdGZvcm1zLCBlLmcuIApAQCAtMzcsNyArMzcsNyBAQAogICAgcnVubmluZyBhIFB5dGhvbiBjb3JlIGJ1aWxkYm90IHRlc3Qgc2xhdmU7IHNlZSBTVUJQUk9KRUNUUyBiZWxvdykKIAogV2hlbiB1c2luZyB0aGUgRGVidWcgc2V0dGluZywgdGhlIG91dHB1dCBmaWxlcyBoYXZlIGEgX2QgYWRkZWQgdG8KLXRoZWlyIG5hbWU6ICBweXRob24zMl9kLmRsbCwgcHl0aG9uX2QuZXhlLCBwYXJzZXJfZC5weWQsIGFuZCBzbyBvbi4gQm90aAordGhlaXIgbmFtZTogIHB5dGhvbjMzX2QuZGxsLCBweXRob25fZC5leGUsIHBhcnNlcl9kLnB5ZCwgYW5kIHNvIG9uLiBCb3RoCiB0aGUgYnVpbGQgYW5kIHJ0IGJhdGNoIGZpbGVzIGFjY2VwdCBhIC1kIG9wdGlvbiBmb3IgZGVidWcgYnVpbGRzLgogCiBUaGUgMzJiaXQgYnVpbGRzIGVuZCB1cCBpbiB0aGUgc29sdXRpb24gZm9sZGVyIFBDYnVpbGQgd2hpbGUgdGhlIHg2NCBidWlsZHMKQEAgLTYyLDE3ICs2MiwxMSBAQAogQyBSVU5USU1FCiAtLS0tLS0tLS0KIAotVmlzdWFsIFN0dWRpbyAyMDA4IHVzZXMgdmVyc2lvbiA5IG9mIHRoZSBDIHJ1bnRpbWUgKE1TVkNSVDkpLiAgVGhlIGV4ZWN1dGFibGVzCi1hcmUgbGlua2VkIHRvIGEgQ1JUICJzaWRlIGJ5IHNpZGUiIGFzc2VtYmx5IHdoaWNoIG11c3QgYmUgcHJlc2VudCBvbiB0aGUgdGFyZ2V0Ci1tYWNoaW5lLiAgVGhpcyBpcyBhdmFsaWJsZSB1bmRlciB0aGUgVkMvUmVkaXN0IGZvbGRlciBvZiB5b3VyIHZpc3VhbCBzdHVkaW8KLWRpc3RyaWJ1dGlvbi4gT24gWFAgYW5kIGxhdGVyIG9wZXJhdGluZyBzeXN0ZW1zIHRoYXQgc3VwcG9ydAotc2lkZS1ieS1zaWRlIGFzc2VtYmxpZXMgaXQgaXMgbm90IGVub3VnaCB0byBoYXZlIHRoZSBtc3ZjcnQ5MC5kbGwgcHJlc2VudCwKLWl0IGhhcyB0byBiZSB0aGVyZSBhcyBhIHdob2xlIGFzc2VtYmx5LCB0aGF0IGlzLCBhIGZvbGRlciB3aXRoIHRoZSAuZGxsCi1hbmQgYSAubWFuaWZlc3QuICBBbHNvLCBhIGNoZWNrIGlzIG1hZGUgZm9yIHRoZSBjb3JyZWN0IHZlcnNpb24uCi1UaGVyZWZvcmUsIG9uZSBzaG91bGQgZGlzdHJpYnV0ZSB0aGlzIGFzc2VtYmx5IHdpdGggdGhlIGRsbHMsIGFuZCBrZWVwCi1pdCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuICBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHN5c3RlbXMsIG9uZSBzaG91bGQKLWFsc28gc2V0IHRoZSBQQVRIIHRvIHRoaXMgZGlyZWN0b3J5IHNvIHRoYXQgdGhlIGRsbCBjYW4gYmUgZm91bmQuCi1Gb3IgbW9yZSBpbmZvLCBzZWUgdGhlIFJlYWRtZSBpbiB0aGUgVkMvUmVkaXN0IGZvbGRlci4KK1Zpc3VhbCBTdHVkaW8gMjAxMCB1c2VzIHZlcnNpb24gMTAgb2YgdGhlIEMgcnVudGltZSAoTVNWQ1JUOSkuICBUaGUgZXhlY3V0YWJsZXMKK25vIGxvbmdlciB1c2UgdGhlICJTaWRlIGJ5IFNpZGUiIGFzc2VtYmxpZXMgdXNlZCBpbiBwcmV2aW91cyB2ZXJzaW9ucyBvZiB0aGUKK2NvbXBpbGVyLiAgVGhpcyBzaW1wbGlmaWVzIGRpc3RyaWJ1dGlvbiBvZiBhcHBsaWNhdGlvbnMuCitUaGUgcnVuIHRpbWUgbGlicmFyaWVzIGFyZSBhdmFsaWJsZSB1bmRlciB0aGUgVkMvUmVkaXN0IGZvbGRlciBvZiB5b3VyIHZpc3VhbCBzdHVkaW8KK2Rpc3RyaWJ1dGlvbi4gRm9yIG1vcmUgaW5mbywgc2VlIHRoZSBSZWFkbWUgaW4gdGhlIFZDL1JlZGlzdCBmb2xkZXIuCiAKIFNVQlBST0pFQ1RTCiAtLS0tLS0tLS0tLQpAQCAtOTIsNiArODYsOSBAQAogX3Rlc3RjYXBpCiAgICAgdGVzdHMgb2YgdGhlIFB5dGhvbiBDIEFQSSwgcnVuIHZpYSBMaWIvdGVzdC90ZXN0X2NhcGkucHksIGFuZAogICAgIGltcGxlbWVudGVkIGJ5IG1vZHVsZSBNb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCitfdGVzdGJ1ZmZlcgorICAgIGJ1ZmZlciBwcm90b2NvbCB0ZXN0cywgcnVuIHZpYSBMaWIvdGVzdC90ZXN0X2J1ZmZlci5weSwgYW5kCisgICAgaW1wbGVtZW50ZWQgYnkgbW9kdWxlIE1vZHVsZXMvX3Rlc3RidWZmZXIuYwogcHlleHBhdAogICAgIFB5dGhvbiB3cmFwcGVyIGZvciBhY2NlbGVyYXRlZCBYTUwgcGFyc2luZywgd2hpY2ggaW5jb3Jwb3JhdGVzIHN0YWJsZQogICAgIGNvZGUgZnJvbSB0aGUgRXhwYXQgcHJvamVjdDogIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZXhwYXQvCkBAIC0xMTIsOSArMTA5LDkgQEAKICAgICBwcmUtYnVpbHQgVGNsL1RrIGluIGVpdGhlciAuLlwuLlx0Y2x0ayBmb3IgMzItYml0IG9yIC4uXC4uXHRjbHRrNjQgZm9yCiAgICAgNjQtYml0IChyZWxhdGl2ZSB0byB0aGlzIGRpcmVjdG9yeSkuICBTZWUgYmVsb3cgZm9yIGluc3RydWN0aW9ucyB0byBidWlsZAogICAgIFRjbC9Uay4gCi1iejIKLSAgICBQeXRob24gd3JhcHBlciBmb3IgdGhlIGxpYmJ6MiBjb21wcmVzc2lvbiBsaWJyYXJ5LiAgSG9tZXBhZ2UKLSAgICAgICAgaHR0cDovL3NvdXJjZXMucmVkaGF0LmNvbS9iemlwMi8KK19iejIKKyAgICBQeXRob24gd3JhcHBlciBmb3IgdGhlIGxpYmJ6aXAyIGNvbXByZXNzaW9uIGxpYnJhcnkuICBIb21lcGFnZQorICAgICAgICBodHRwOi8vd3d3LmJ6aXAub3JnLwogICAgIERvd25sb2FkIHRoZSBzb3VyY2UgZnJvbSB0aGUgcHl0aG9uLm9yZyBjb3B5IGludG8gdGhlIGRpc3QKICAgICBkaXJlY3Rvcnk6CiAKQEAgLTEzMywxMyArMTMwLDE5IEBACiAKICAgICBBbGwgb2YgdGhpcyBtYW5hZ2VkIHRvIGJ1aWxkIGxpYmJ6Mi5saWIgaW4gCiAgICAgYnppcDItMS4wLjZcJHBsYXRmb3JtLSRjb25maWd1cmF0aW9uXCwgd2hpY2ggdGhlIFB5dGhvbiBwcm9qZWN0IGxpbmtzIGluLgorX2x6bWEKKyAgICBQeXRob24gd3JhcHBlciBmb3IgdGhlIGxpYmx6bWEgY29tcHJlc3Npb24gbGlicmFyeS4KKworICAgIERvd25sb2FkIHRoZSBwcmUtYnVpbHQgV2luZG93cyBiaW5hcmllcyBmcm9tIGh0dHA6Ly90dWthYW5pLm9yZy94ei8sIGFuZAorICAgIGV4dHJhY3QgdG8gLi5ceHotNS4wLjMuIElmIHlvdSBhcmUgdXNpbmcgYSBtb3JlIHJlY2VudCB2ZXJzaW9uIG9mIGxpYmx6bWEsCisgICAgaXQgd2lsbCBiZSBuZWNlc3NhcnkgdG8gcmVuYW1lIHRoZSBkaXJlY3RvcnkgZnJvbSB4ei08VkVSU0lPTj4gdG8geHotNS4wLjMuCiAKIF9zc2wKICAgICBQeXRob24gd3JhcHBlciBmb3IgdGhlIHNlY3VyZSBzb2NrZXRzIGxpYnJhcnkuCiAKICAgICBHZXQgdGhlIHNvdXJjZSBjb2RlIHRocm91Z2gKIAotICAgIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL29wZW5zc2wtMS4wLjBqCisgICAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvb3BlbnNzbC0xLjAuMWMKIAogICAgICoqIE5PVEU6IGlmIHlvdSB1c2UgdGhlIFRvb2xzXGJ1aWxkYm90XGV4dGVybmFsKC1hbWQ2NCkuYmF0IGFwcHJvYWNoIGZvcgogICAgIG9idGFpbmluZyBleHRlcm5hbCBzb3VyY2VzIHRoZW4geW91IGRvbid0IG5lZWQgdG8gbWFudWFsbHkgZ2V0IHRoZSBzb3VyY2UKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcmVsZWFzZS5wcm9wcyBiL1BDYnVpbGQvcmVsZWFzZS5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2ZlM2U0Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9yZWxlYXNlLnByb3BzCkBAIC0wLDAgKzEsMTkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiPgorICAgIDxQeURlYnVnRXh0IC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IlB5RGVidWdFeHQiPgorICAgICAgPFZhbHVlPiQoUHlEZWJ1Z0V4dCk8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9zZWxlY3QudmN4cHJvaiBiL1BDYnVpbGQvc2VsZWN0LnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MzNmQ2NAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvc2VsZWN0LnZjeHByb2oKQEAgLTAsMCArMSwyMzQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5zZWxlY3Q8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzZWxlY3Rtb2R1bGUuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvc2VsZWN0LnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvc2VsZWN0LnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWEyZmM4Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9zZWxlY3QudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezk4MzQ2MDc3LTkwMGMtNGM3YS04NTJmLWEyMzQ3MGUzN2I0MH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzZWxlY3Rtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NxbGl0ZTMucHJvcHMgYi9QQ2J1aWxkL3NxbGl0ZTMucHJvcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNlZTAyYwotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvc3FsaXRlMy5wcm9wcwpAQCAtMCwwICsxLDE2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5TUUxJVEVfQVBJPV9fZGVjbHNwZWMoZGxsZXhwb3J0KTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMTwvV2FybmluZ0xldmVsPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9zcWxpdGUzLnZjeHByb2ogYi9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWYwMTBkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9zcWxpdGUzLnZjeHByb2oKQEAgLTAsMCArMSwyNDAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5zcWxpdGUzPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpX2QuZGxsPC9PdXRwdXRGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSlfZC5kbGw8L091dHB1dEZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkuZGxsPC9PdXRwdXRGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKS5kbGw8L091dHB1dEZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLmRsbDwvT3V0cHV0RmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkuZGxsPC9PdXRwdXRGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKHNxbGl0ZTNEaXIpXHNxbGl0ZTMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoc3FsaXRlM0Rpcilcc3FsaXRlM2V4dC5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoc3FsaXRlM0Rpcilcc3FsaXRlMy5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJraWxsX3B5dGhvbi52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0Pns2ZGUxMDc0NC1lMzk2LTQwYTUtYjRlMi0xYjY5YWE3YzhkMzF9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2NjgwYzEKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMjQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2NlNWI2NDlkLWE2ZjctNDQ1OS05NDI1LWM4ODM3OTVkNzlkZn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezBlODQyZmUyLTE3NmItNGU4My05ZDFmLTBhZDEzYTg1OWVmZH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChzcWxpdGUzRGlyKVxzcWxpdGUzLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoc3FsaXRlM0Rpcilcc3FsaXRlM2V4dC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChzcWxpdGUzRGlyKVxzcWxpdGUzLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9zc2wudmN4cHJvaiBiL1BDYnVpbGQvc3NsLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFmZDc4MAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvc3NsLnZjeHByb2oKQEAgLTAsMCArMSwyMjEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5zc2w8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+TWFrZUZpbGVQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Y2QgIiQoU29sdXRpb25EaXIpIgorIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Y2QgIiQoU29sdXRpb25EaXIpIgorIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Y2QgIiQoU29sdXRpb25EaXIpIgorIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Y2QgIiQoU29sdXRpb25EaXIpIgorIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Y2QgIiQoU29sdXRpb25EaXIpIgorIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Y2QgIiQoU29sdXRpb25EaXIpIgorIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Y2QgIiQoU29sdXRpb25EaXIpIgorIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Y2QgIiQoU29sdXRpb25EaXIpIgorIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2IxMWQ3NTBmLWNkMWYtNGE5Ni04NWNlLWU2OWE1YzUyNTlmOX08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC91bmljb2RlZGF0YS52Y3hwcm9qIGIvUENidWlsZC91bmljb2RlZGF0YS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZDUyNzgKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3VuaWNvZGVkYXRhLnZjeHByb2oKQEAgLTAsMCArMSwyMjIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT51bmljb2RlZGF0YTwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHVuaWNvZGVkYXRhX2RiLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHVuaWNvZGVuYW1lX2RiLmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x1bmljb2RlZGF0YS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC91bmljb2RlZGF0YS52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3VuaWNvZGVkYXRhLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGU2NDBlCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC91bmljb2RlZGF0YS52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwyNCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57YjkzOWE4ZjEtY2NkNy00MjBhLTk3NGEtMjQzNjA2ZGNjZDc0fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZTJjMDU1YmItZWM2Mi00YmJjLWFhMWMtZDg4ZGE0ZDRhZDFjfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHVuaWNvZGVkYXRhX2RiLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdW5pY29kZW5hbWVfZGIuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdW5pY29kZWRhdGEuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3ZzOXRvMTAucHkgYi9QQ2J1aWxkL3ZzOXRvMTAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJmODMyYQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvdnM5dG8xMC5weQpAQCAtMCwwICsxLDU2IEBACisjUnVuIHRoaXMgZmlsZSBhZnRlciBhdXRvbWF0aWMgY29udmVydHNpb24gb2YgdGhlIFZpc3VhbFN0dWRpbyAyMDA4IHNvbHV0aW9uIGJ5IFZpc3VhbFN0dWRpbyAyMDEwLgorI1RoaXMgY2FuIGJlIGRvbmUgd2hlbmV2ZXIgdGhlIDIwMDggc29sdXRpb24gY2hhbmdlcy4KKyNJdCB3aWxsIG1ha2UgdGhlIG5lY2Vzc2FyeSBjbGVhbnVwIGFuZCB1cGRhdGVzIHRvIHRoZSB2Y3hwcm9qIGZpbGVzCisjdGhlIC5wcm9wcyBmaWxlcyBuZWVkIHRvIGJlIG1haW50YWluZWQgYnkgaGFuZCBpZiB0aGUgLnZzcHJvcHMgZmlsZXMgY2hhbmdlCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKKworZGVmIHZzOXRvMTAoc3JjLCBkZXN0KToKKyAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKHNyYyk6CisgICAgICAgIHBhdGgsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKKyAgICAgICAgaWYgZXh0Lmxvd2VyKCkgbm90IGluICgnLnZjeHByb2onLCk6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oc3JjLCBuYW1lKSkKKyAgICAgICAgZGVzdG5hbWUgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihkZXN0LCBuYW1lKSkKKyAgICAgICAgcHJpbnQoIiVzIC0+ICVzIiAlIChmaWxlbmFtZSwgZGVzdG5hbWUpKQorCisgICAgICAgIGxpbmVzID0gW10KKyAgICAgICAgbGFzdGxpbmUgPSBiIiIKKyAgICAgICAgaW1wb3J0Z3JvdXAgPSBGYWxzZQorICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICdyYicpIGFzIGZpbjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGZpbjoKKyAgICAgICAgICAgICAgICAjcmVtb3ZlIHJlZHVuZGFudCBsaW5rZXIgb3V0cHV0IGluZm8KKyAgICAgICAgICAgICAgICBpZiBiIjxPdXRwdXRMaW5lPiIgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBiIjxQcm9ncmFtRGF0YWJhc2VGaWxlPiIgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBiIjxJbXBvcnRMaWJyYXJ5PiIgaW4gbGluZSBhbmQgYiI8L0ltcG9ydExpYnJhcnk+IiBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgI2FkZCBuZXcgcHJvcGVydHkgc2hlZXQgdG8gdGhlIHB5dGhvbmNvcmUKKyAgICAgICAgICAgICAgICBpZiBpbXBvcnRncm91cCBhbmQgInB5dGhvbmNvcmUiIGluIG5hbWUubG93ZXIoKToKKyAgICAgICAgICAgICAgICAgICAgaWYgYiI8L0ltcG9ydEdyb3VwPiIgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGIiZGVidWcucHJvcHMiIGluIGxhc3RsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChiJyAgICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbmNvcmVfZC5wcm9wcyIgLz5cclxuJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgYiJweXRob25jb3JlIiBub3QgaW4gbGFzdGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKGInICAgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uY29yZS5wcm9wcyIgLz5cclxuJykKKyAgICAgICAgICAgICAgICBpZiBiIjxJbXBvcnRHcm91cCBDb25kaXRpb24iIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydGdyb3VwID0gVHJ1ZQorICAgICAgICAgICAgICAgIGVsaWYgYiI8L0ltcG9ydEdyb3VwPiIgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0Z3JvdXAgPSBGYWxzZQorICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lKQorICAgICAgICAgICAgICAgIGxhc3RsaW5lID0gbGluZQorICAgICAgICB3aXRoIG9wZW4oZGVzdG5hbWUsICd3YicpIGFzIGZvdXQ6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgICAgICAgICBmb3V0LndyaXRlKGxpbmUpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgc3JjID0gIi4iIGlmIGxlbihzeXMuYXJndikgPCAyIGVsc2Ugc3lzLmFyZ3ZbMV0KKyAgICBuYW1lID0gb3MucGF0aC5iYXNlbmFtZShvcy5wYXRoLmFic3BhdGgoc3JjKSkKKyAgICBkZXN0ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihzcmMsICIuLiIsIG5hbWUgKyAiVXBkIikpCisgICAgb3MubWFrZWRpcnMoZGVzdCkKKyAgICB2czl0bzEwKHNyYywgZGVzdCkKZGlmZiAtLWdpdCBhL1BDYnVpbGQvdzl4cG9wZW4udmN4cHJvaiBiL1BDYnVpbGQvdzl4cG9wZW4udmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWFmZTIyCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC93OXhwb3Blbi52Y3hwcm9qCkBAIC0wLDAgKzEsMjg3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+dzl4cG9wZW48L1Jvb3ROYW1lc3BhY2U+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPmZhbHNlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPmZhbHNlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj5mYWxzZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8SW1wb3J0TGlicmFyeT4KKyAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+ZmFsc2U8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEltcG9ydExpYnJhcnk+CisgICAgICA8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+ZmFsc2U8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEltcG9ydExpYnJhcnk+CisgICAgICA8L0ltcG9ydExpYnJhcnk+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+ZmFsc2U8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEltcG9ydExpYnJhcnk+CisgICAgICA8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcdzl4cG9wZW4uYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC93OXhwb3Blbi52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3c5eHBvcGVuLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWM2N2FkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC93OXhwb3Blbi52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57YWJjMmRmZmQtM2YyYS00N2JkLWI4OWItMDMxNGM5OWVmMjFlfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1x3OXhwb3Blbi5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvd2luc291bmQudmN4cHJvaiBiL1BDYnVpbGQvd2luc291bmQudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjUxOGU5Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC93aW5zb3VuZC52Y3hwcm9qCkBAIC0wLDAgKzEsMjE4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+d2luc291bmQ8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHdpbnNvdW5kLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3dpbnNvdW5kLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvd2luc291bmQudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMDg5MzEKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3dpbnNvdW5kLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDE0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcd2luc291bmQuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3g2NC5wcm9wcyBiL1BDYnVpbGQveDY0LnByb3BzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4OWQ5NWIKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3g2NC5wcm9wcwpAQCAtMCwwICsxLDIwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiBDb25kaXRpb249IickKEhPU1RfUFlUSE9OKSchPScnIj4KKyAgICA8UHl0aG9uRXhlPiQoSE9TVF9QWVRIT04pPC9QeXRob25FeGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vVVNFQ0w6TVNfT1BURVJPTiAvR1MtICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lONjQ7X01fWDY0OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iUHl0aG9uRXhlIj4KKyAgICAgIDxWYWx1ZT4kKFB5dGhvbkV4ZSk8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qIGIvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmJjMjBkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvagpAQCAtMCwwICsxLDE5NCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+eHhsaW1pdGVkPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHO19XSU4zMjtfV0lORExMO1B5X0xJTUlURURfQVBJPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QeV9MSU1JVEVEX0FQSTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QeV9MSU1JVEVEX0FQSTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHh4bGltaXRlZC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFkYjQ2OAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntlYjVlZWJjNy0zNzg3LTRmOGYtYjI4Mi0yMDRkYjI5NjJjYzN9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNceHhsaW1pdGVkLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGFyc2VyL1B5dGhvbi5hc2RsIGIvUGFyc2VyL1B5dGhvbi5hc2RsCmluZGV4IDk0MDdiMmYuLmMyNGQ4NDAgMTAwNjQ0Ci0tLSBhL1BhcnNlci9QeXRob24uYXNkbAorKysgYi9QYXJzZXIvUHl0aG9uLmFzZGwKQEAgLTEsMTE5ICsxLDEyMCBAQAotLS0gQVNETCdzIGZvdXIgYnVpbHRpbiB0eXBlcyBhcmUgaWRlbnRpZmllciwgaW50LCBzdHJpbmcsIG9iamVjdAorLS0gQVNETCdzIGZpdmUgYnVpbHRpbiB0eXBlcyBhcmUgaWRlbnRpZmllciwgaW50LCBzdHJpbmcsIGJ5dGVzLCBvYmplY3QKIAotbW9kdWxlIFB5dGhvbiB2ZXJzaW9uICIkUmV2aXNpb24kIgorbW9kdWxlIFB5dGhvbgogewotCW1vZCA9IE1vZHVsZShzdG10KiBib2R5KQotCSAgICB8IEludGVyYWN0aXZlKHN0bXQqIGJvZHkpCi0JICAgIHwgRXhwcmVzc2lvbihleHByIGJvZHkpCisgICAgbW9kID0gTW9kdWxlKHN0bXQqIGJvZHkpCisgICAgICAgIHwgSW50ZXJhY3RpdmUoc3RtdCogYm9keSkKKyAgICAgICAgfCBFeHByZXNzaW9uKGV4cHIgYm9keSkKIAotCSAgICAtLSBub3QgcmVhbGx5IGFuIGFjdHVhbCBub2RlIGJ1dCB1c2VmdWwgaW4gSnl0aG9uJ3MgdHlwZXN5c3RlbS4KLQkgICAgfCBTdWl0ZShzdG10KiBib2R5KQorICAgICAgICAtLSBub3QgcmVhbGx5IGFuIGFjdHVhbCBub2RlIGJ1dCB1c2VmdWwgaW4gSnl0aG9uJ3MgdHlwZXN5c3RlbS4KKyAgICAgICAgfCBTdWl0ZShzdG10KiBib2R5KQogCi0Jc3RtdCA9IEZ1bmN0aW9uRGVmKGlkZW50aWZpZXIgbmFtZSwgYXJndW1lbnRzIGFyZ3MsIAorICAgIHN0bXQgPSBGdW5jdGlvbkRlZihpZGVudGlmaWVyIG5hbWUsIGFyZ3VtZW50cyBhcmdzLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bXQqIGJvZHksIGV4cHIqIGRlY29yYXRvcl9saXN0LCBleHByPyByZXR1cm5zKQotCSAgICAgIHwgQ2xhc3NEZWYoaWRlbnRpZmllciBuYW1lLCAKLQkJCSBleHByKiBiYXNlcywKLQkJCSBrZXl3b3JkKiBrZXl3b3JkcywKLQkJCSBleHByPyBzdGFyYXJncywKLQkJCSBleHByPyBrd2FyZ3MsCi0JCQkgc3RtdCogYm9keSwKLQkJCSBleHByKiBkZWNvcmF0b3JfbGlzdCkKLQkgICAgICB8IFJldHVybihleHByPyB2YWx1ZSkKKyAgICAgICAgICB8IENsYXNzRGVmKGlkZW50aWZpZXIgbmFtZSwgCisgICAgICAgICAgICAgZXhwciogYmFzZXMsCisgICAgICAgICAgICAga2V5d29yZCoga2V5d29yZHMsCisgICAgICAgICAgICAgZXhwcj8gc3RhcmFyZ3MsCisgICAgICAgICAgICAgZXhwcj8ga3dhcmdzLAorICAgICAgICAgICAgIHN0bXQqIGJvZHksCisgICAgICAgICAgICAgZXhwciogZGVjb3JhdG9yX2xpc3QpCisgICAgICAgICAgfCBSZXR1cm4oZXhwcj8gdmFsdWUpCiAKLQkgICAgICB8IERlbGV0ZShleHByKiB0YXJnZXRzKQotCSAgICAgIHwgQXNzaWduKGV4cHIqIHRhcmdldHMsIGV4cHIgdmFsdWUpCi0JICAgICAgfCBBdWdBc3NpZ24oZXhwciB0YXJnZXQsIG9wZXJhdG9yIG9wLCBleHByIHZhbHVlKQorICAgICAgICAgIHwgRGVsZXRlKGV4cHIqIHRhcmdldHMpCisgICAgICAgICAgfCBBc3NpZ24oZXhwciogdGFyZ2V0cywgZXhwciB2YWx1ZSkKKyAgICAgICAgICB8IEF1Z0Fzc2lnbihleHByIHRhcmdldCwgb3BlcmF0b3Igb3AsIGV4cHIgdmFsdWUpCiAKLQkgICAgICAtLSB1c2UgJ29yZWxzZScgYmVjYXVzZSBlbHNlIGlzIGEga2V5d29yZCBpbiB0YXJnZXQgbGFuZ3VhZ2VzCi0JICAgICAgfCBGb3IoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQotCSAgICAgIHwgV2hpbGUoZXhwciB0ZXN0LCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpCi0JICAgICAgfCBJZihleHByIHRlc3QsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKLQkgICAgICB8IFdpdGgoZXhwciBjb250ZXh0X2V4cHIsIGV4cHI/IG9wdGlvbmFsX3ZhcnMsIHN0bXQqIGJvZHkpCisgICAgICAgICAgLS0gdXNlICdvcmVsc2UnIGJlY2F1c2UgZWxzZSBpcyBhIGtleXdvcmQgaW4gdGFyZ2V0IGxhbmd1YWdlcworICAgICAgICAgIHwgRm9yKGV4cHIgdGFyZ2V0LCBleHByIGl0ZXIsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKKyAgICAgICAgICB8IFdoaWxlKGV4cHIgdGVzdCwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQorICAgICAgICAgIHwgSWYoZXhwciB0ZXN0LCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpCisgICAgICAgICAgfCBXaXRoKHdpdGhpdGVtKiBpdGVtcywgc3RtdCogYm9keSkKIAotCSAgICAgIHwgUmFpc2UoZXhwcj8gZXhjLCBleHByPyBjYXVzZSkKLQkgICAgICB8IFRyeUV4Y2VwdChzdG10KiBib2R5LCBleGNlcHRoYW5kbGVyKiBoYW5kbGVycywgc3RtdCogb3JlbHNlKQotCSAgICAgIHwgVHJ5RmluYWxseShzdG10KiBib2R5LCBzdG10KiBmaW5hbGJvZHkpCi0JICAgICAgfCBBc3NlcnQoZXhwciB0ZXN0LCBleHByPyBtc2cpCisgICAgICAgICAgfCBSYWlzZShleHByPyBleGMsIGV4cHI/IGNhdXNlKQorICAgICAgICAgIHwgVHJ5KHN0bXQqIGJvZHksIGV4Y2VwdGhhbmRsZXIqIGhhbmRsZXJzLCBzdG10KiBvcmVsc2UsIHN0bXQqIGZpbmFsYm9keSkKKyAgICAgICAgICB8IEFzc2VydChleHByIHRlc3QsIGV4cHI/IG1zZykKIAotCSAgICAgIHwgSW1wb3J0KGFsaWFzKiBuYW1lcykKLQkgICAgICB8IEltcG9ydEZyb20oaWRlbnRpZmllcj8gbW9kdWxlLCBhbGlhcyogbmFtZXMsIGludD8gbGV2ZWwpCisgICAgICAgICAgfCBJbXBvcnQoYWxpYXMqIG5hbWVzKQorICAgICAgICAgIHwgSW1wb3J0RnJvbShpZGVudGlmaWVyPyBtb2R1bGUsIGFsaWFzKiBuYW1lcywgaW50PyBsZXZlbCkKIAotCSAgICAgIHwgR2xvYmFsKGlkZW50aWZpZXIqIG5hbWVzKQotCSAgICAgIHwgTm9ubG9jYWwoaWRlbnRpZmllciogbmFtZXMpCi0JICAgICAgfCBFeHByKGV4cHIgdmFsdWUpCi0JICAgICAgfCBQYXNzIHwgQnJlYWsgfCBDb250aW51ZQorICAgICAgICAgIHwgR2xvYmFsKGlkZW50aWZpZXIqIG5hbWVzKQorICAgICAgICAgIHwgTm9ubG9jYWwoaWRlbnRpZmllciogbmFtZXMpCisgICAgICAgICAgfCBFeHByKGV4cHIgdmFsdWUpCisgICAgICAgICAgfCBQYXNzIHwgQnJlYWsgfCBDb250aW51ZQogCi0JICAgICAgLS0gWFhYIEp5dGhvbiB3aWxsIGJlIGRpZmZlcmVudAotCSAgICAgIC0tIGNvbF9vZmZzZXQgaXMgdGhlIGJ5dGUgb2Zmc2V0IGluIHRoZSB1dGY4IHN0cmluZyB0aGUgcGFyc2VyIHVzZXMKLQkgICAgICBhdHRyaWJ1dGVzIChpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCkKKyAgICAgICAgICAtLSBYWFggSnl0aG9uIHdpbGwgYmUgZGlmZmVyZW50CisgICAgICAgICAgLS0gY29sX29mZnNldCBpcyB0aGUgYnl0ZSBvZmZzZXQgaW4gdGhlIHV0Zjggc3RyaW5nIHRoZSBwYXJzZXIgdXNlcworICAgICAgICAgIGF0dHJpYnV0ZXMgKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQogCi0JICAgICAgLS0gQm9vbE9wKCkgY2FuIHVzZSBsZWZ0ICYgcmlnaHQ/Ci0JZXhwciA9IEJvb2xPcChib29sb3Agb3AsIGV4cHIqIHZhbHVlcykKLQkgICAgIHwgQmluT3AoZXhwciBsZWZ0LCBvcGVyYXRvciBvcCwgZXhwciByaWdodCkKLQkgICAgIHwgVW5hcnlPcCh1bmFyeW9wIG9wLCBleHByIG9wZXJhbmQpCi0JICAgICB8IExhbWJkYShhcmd1bWVudHMgYXJncywgZXhwciBib2R5KQotCSAgICAgfCBJZkV4cChleHByIHRlc3QsIGV4cHIgYm9keSwgZXhwciBvcmVsc2UpCi0JICAgICB8IERpY3QoZXhwcioga2V5cywgZXhwciogdmFsdWVzKQotCSAgICAgfCBTZXQoZXhwciogZWx0cykKLQkgICAgIHwgTGlzdENvbXAoZXhwciBlbHQsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpCi0JICAgICB8IFNldENvbXAoZXhwciBlbHQsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpCi0JICAgICB8IERpY3RDb21wKGV4cHIga2V5LCBleHByIHZhbHVlLCBjb21wcmVoZW5zaW9uKiBnZW5lcmF0b3JzKQotCSAgICAgfCBHZW5lcmF0b3JFeHAoZXhwciBlbHQsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpCi0JICAgICAtLSB0aGUgZ3JhbW1hciBjb25zdHJhaW5zIHdoZXJlIHlpZWxkIGV4cHJlc3Npb25zIGNhbiBvY2N1cgotCSAgICAgfCBZaWVsZChleHByPyB2YWx1ZSkKLQkgICAgIC0tIG5lZWQgc2VxdWVuY2VzIGZvciBjb21wYXJlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4KLQkgICAgIC0tIHggPCA0IDwgMyBhbmQgKHggPCA0KSA8IDMKLQkgICAgIHwgQ29tcGFyZShleHByIGxlZnQsIGNtcG9wKiBvcHMsIGV4cHIqIGNvbXBhcmF0b3JzKQotCSAgICAgfCBDYWxsKGV4cHIgZnVuYywgZXhwciogYXJncywga2V5d29yZCoga2V5d29yZHMsCi0JCQkgZXhwcj8gc3RhcmFyZ3MsIGV4cHI/IGt3YXJncykKLQkgICAgIHwgTnVtKG9iamVjdCBuKSAtLSBhIG51bWJlciBhcyBhIFB5T2JqZWN0LgotCSAgICAgfCBTdHIoc3RyaW5nIHMpIC0tIG5lZWQgdG8gc3BlY2lmeSByYXcsIHVuaWNvZGUsIGV0Yz8KLQkgICAgIHwgQnl0ZXMoc3RyaW5nIHMpCi0JICAgICB8IEVsbGlwc2lzCi0JICAgICAtLSBvdGhlciBsaXRlcmFscz8gYm9vbHM/CisgICAgICAgICAgLS0gQm9vbE9wKCkgY2FuIHVzZSBsZWZ0ICYgcmlnaHQ/CisgICAgZXhwciA9IEJvb2xPcChib29sb3Agb3AsIGV4cHIqIHZhbHVlcykKKyAgICAgICAgIHwgQmluT3AoZXhwciBsZWZ0LCBvcGVyYXRvciBvcCwgZXhwciByaWdodCkKKyAgICAgICAgIHwgVW5hcnlPcCh1bmFyeW9wIG9wLCBleHByIG9wZXJhbmQpCisgICAgICAgICB8IExhbWJkYShhcmd1bWVudHMgYXJncywgZXhwciBib2R5KQorICAgICAgICAgfCBJZkV4cChleHByIHRlc3QsIGV4cHIgYm9keSwgZXhwciBvcmVsc2UpCisgICAgICAgICB8IERpY3QoZXhwcioga2V5cywgZXhwciogdmFsdWVzKQorICAgICAgICAgfCBTZXQoZXhwciogZWx0cykKKyAgICAgICAgIHwgTGlzdENvbXAoZXhwciBlbHQsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpCisgICAgICAgICB8IFNldENvbXAoZXhwciBlbHQsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpCisgICAgICAgICB8IERpY3RDb21wKGV4cHIga2V5LCBleHByIHZhbHVlLCBjb21wcmVoZW5zaW9uKiBnZW5lcmF0b3JzKQorICAgICAgICAgfCBHZW5lcmF0b3JFeHAoZXhwciBlbHQsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpCisgICAgICAgICAtLSB0aGUgZ3JhbW1hciBjb25zdHJhaW5zIHdoZXJlIHlpZWxkIGV4cHJlc3Npb25zIGNhbiBvY2N1cgorICAgICAgICAgfCBZaWVsZChleHByPyB2YWx1ZSkKKyAgICAgICAgIHwgWWllbGRGcm9tKGV4cHIgdmFsdWUpCisgICAgICAgICAtLSBuZWVkIHNlcXVlbmNlcyBmb3IgY29tcGFyZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuCisgICAgICAgICAtLSB4IDwgNCA8IDMgYW5kICh4IDwgNCkgPCAzCisgICAgICAgICB8IENvbXBhcmUoZXhwciBsZWZ0LCBjbXBvcCogb3BzLCBleHByKiBjb21wYXJhdG9ycykKKyAgICAgICAgIHwgQ2FsbChleHByIGZ1bmMsIGV4cHIqIGFyZ3MsIGtleXdvcmQqIGtleXdvcmRzLAorICAgICAgICAgICAgIGV4cHI/IHN0YXJhcmdzLCBleHByPyBrd2FyZ3MpCisgICAgICAgICB8IE51bShvYmplY3QgbikgLS0gYSBudW1iZXIgYXMgYSBQeU9iamVjdC4KKyAgICAgICAgIHwgU3RyKHN0cmluZyBzKSAtLSBuZWVkIHRvIHNwZWNpZnkgcmF3LCB1bmljb2RlLCBldGM/CisgICAgICAgICB8IEJ5dGVzKGJ5dGVzIHMpCisgICAgICAgICB8IEVsbGlwc2lzCisgICAgICAgICAtLSBvdGhlciBsaXRlcmFscz8gYm9vbHM/CiAKLQkgICAgIC0tIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbiBjYW4gYXBwZWFyIGluIGFzc2lnbm1lbnQgY29udGV4dAotCSAgICAgfCBBdHRyaWJ1dGUoZXhwciB2YWx1ZSwgaWRlbnRpZmllciBhdHRyLCBleHByX2NvbnRleHQgY3R4KQotCSAgICAgfCBTdWJzY3JpcHQoZXhwciB2YWx1ZSwgc2xpY2Ugc2xpY2UsIGV4cHJfY29udGV4dCBjdHgpCi0JICAgICB8IFN0YXJyZWQoZXhwciB2YWx1ZSwgZXhwcl9jb250ZXh0IGN0eCkKLQkgICAgIHwgTmFtZShpZGVudGlmaWVyIGlkLCBleHByX2NvbnRleHQgY3R4KQotCSAgICAgfCBMaXN0KGV4cHIqIGVsdHMsIGV4cHJfY29udGV4dCBjdHgpIAotCSAgICAgfCBUdXBsZShleHByKiBlbHRzLCBleHByX2NvbnRleHQgY3R4KQorICAgICAgICAgLS0gdGhlIGZvbGxvd2luZyBleHByZXNzaW9uIGNhbiBhcHBlYXIgaW4gYXNzaWdubWVudCBjb250ZXh0CisgICAgICAgICB8IEF0dHJpYnV0ZShleHByIHZhbHVlLCBpZGVudGlmaWVyIGF0dHIsIGV4cHJfY29udGV4dCBjdHgpCisgICAgICAgICB8IFN1YnNjcmlwdChleHByIHZhbHVlLCBzbGljZSBzbGljZSwgZXhwcl9jb250ZXh0IGN0eCkKKyAgICAgICAgIHwgU3RhcnJlZChleHByIHZhbHVlLCBleHByX2NvbnRleHQgY3R4KQorICAgICAgICAgfCBOYW1lKGlkZW50aWZpZXIgaWQsIGV4cHJfY29udGV4dCBjdHgpCisgICAgICAgICB8IExpc3QoZXhwciogZWx0cywgZXhwcl9jb250ZXh0IGN0eCkgCisgICAgICAgICB8IFR1cGxlKGV4cHIqIGVsdHMsIGV4cHJfY29udGV4dCBjdHgpCiAKLQkgICAgICAtLSBjb2xfb2Zmc2V0IGlzIHRoZSBieXRlIG9mZnNldCBpbiB0aGUgdXRmOCBzdHJpbmcgdGhlIHBhcnNlciB1c2VzCi0JICAgICAgYXR0cmlidXRlcyAoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCisgICAgICAgICAgLS0gY29sX29mZnNldCBpcyB0aGUgYnl0ZSBvZmZzZXQgaW4gdGhlIHV0Zjggc3RyaW5nIHRoZSBwYXJzZXIgdXNlcworICAgICAgICAgIGF0dHJpYnV0ZXMgKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQogCi0JZXhwcl9jb250ZXh0ID0gTG9hZCB8IFN0b3JlIHwgRGVsIHwgQXVnTG9hZCB8IEF1Z1N0b3JlIHwgUGFyYW0KKyAgICBleHByX2NvbnRleHQgPSBMb2FkIHwgU3RvcmUgfCBEZWwgfCBBdWdMb2FkIHwgQXVnU3RvcmUgfCBQYXJhbQogCi0Jc2xpY2UgPSBTbGljZShleHByPyBsb3dlciwgZXhwcj8gdXBwZXIsIGV4cHI/IHN0ZXApIAotCSAgICAgIHwgRXh0U2xpY2Uoc2xpY2UqIGRpbXMpIAotCSAgICAgIHwgSW5kZXgoZXhwciB2YWx1ZSkgCisgICAgc2xpY2UgPSBTbGljZShleHByPyBsb3dlciwgZXhwcj8gdXBwZXIsIGV4cHI/IHN0ZXApIAorICAgICAgICAgIHwgRXh0U2xpY2Uoc2xpY2UqIGRpbXMpIAorICAgICAgICAgIHwgSW5kZXgoZXhwciB2YWx1ZSkgCiAKLQlib29sb3AgPSBBbmQgfCBPciAKKyAgICBib29sb3AgPSBBbmQgfCBPciAKIAotCW9wZXJhdG9yID0gQWRkIHwgU3ViIHwgTXVsdCB8IERpdiB8IE1vZCB8IFBvdyB8IExTaGlmdCAKKyAgICBvcGVyYXRvciA9IEFkZCB8IFN1YiB8IE11bHQgfCBEaXYgfCBNb2QgfCBQb3cgfCBMU2hpZnQgCiAgICAgICAgICAgICAgICAgIHwgUlNoaWZ0IHwgQml0T3IgfCBCaXRYb3IgfCBCaXRBbmQgfCBGbG9vckRpdgogCi0JdW5hcnlvcCA9IEludmVydCB8IE5vdCB8IFVBZGQgfCBVU3ViCisgICAgdW5hcnlvcCA9IEludmVydCB8IE5vdCB8IFVBZGQgfCBVU3ViCiAKLQljbXBvcCA9IEVxIHwgTm90RXEgfCBMdCB8IEx0RSB8IEd0IHwgR3RFIHwgSXMgfCBJc05vdCB8IEluIHwgTm90SW4KKyAgICBjbXBvcCA9IEVxIHwgTm90RXEgfCBMdCB8IEx0RSB8IEd0IHwgR3RFIHwgSXMgfCBJc05vdCB8IEluIHwgTm90SW4KIAotCWNvbXByZWhlbnNpb24gPSAoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgZXhwciogaWZzKQorICAgIGNvbXByZWhlbnNpb24gPSAoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgZXhwciogaWZzKQogCi0JLS0gbm90IHN1cmUgd2hhdCB0byBjYWxsIHRoZSBmaXJzdCBhcmd1bWVudCBmb3IgcmFpc2UgYW5kIGV4Y2VwdAotCWV4Y2VwdGhhbmRsZXIgPSBFeGNlcHRIYW5kbGVyKGV4cHI/IHR5cGUsIGlkZW50aWZpZXI/IG5hbWUsIHN0bXQqIGJvZHkpCi0JICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQorICAgIGV4Y2VwdGhhbmRsZXIgPSBFeGNlcHRIYW5kbGVyKGV4cHI/IHR5cGUsIGlkZW50aWZpZXI/IG5hbWUsIHN0bXQqIGJvZHkpCisgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQogCi0JYXJndW1lbnRzID0gKGFyZyogYXJncywgaWRlbnRpZmllcj8gdmFyYXJnLCBleHByPyB2YXJhcmdhbm5vdGF0aW9uLAorICAgIGFyZ3VtZW50cyA9IChhcmcqIGFyZ3MsIGlkZW50aWZpZXI/IHZhcmFyZywgZXhwcj8gdmFyYXJnYW5ub3RhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgIGFyZyoga3dvbmx5YXJncywgaWRlbnRpZmllcj8ga3dhcmcsCiAgICAgICAgICAgICAgICAgICAgICBleHByPyBrd2FyZ2Fubm90YXRpb24sIGV4cHIqIGRlZmF1bHRzLAogICAgICAgICAgICAgICAgICAgICAgZXhwcioga3dfZGVmYXVsdHMpCi0JYXJnID0gKGlkZW50aWZpZXIgYXJnLCBleHByPyBhbm5vdGF0aW9uKQorICAgIGFyZyA9IChpZGVudGlmaWVyIGFyZywgZXhwcj8gYW5ub3RhdGlvbikKIAotICAgICAgICAtLSBrZXl3b3JkIGFyZ3VtZW50cyBzdXBwbGllZCB0byBjYWxsCi0gICAgICAgIGtleXdvcmQgPSAoaWRlbnRpZmllciBhcmcsIGV4cHIgdmFsdWUpCisgICAgLS0ga2V5d29yZCBhcmd1bWVudHMgc3VwcGxpZWQgdG8gY2FsbAorICAgIGtleXdvcmQgPSAoaWRlbnRpZmllciBhcmcsIGV4cHIgdmFsdWUpCiAKLSAgICAgICAgLS0gaW1wb3J0IG5hbWUgd2l0aCBvcHRpb25hbCAnYXMnIGFsaWFzLgotICAgICAgICBhbGlhcyA9IChpZGVudGlmaWVyIG5hbWUsIGlkZW50aWZpZXI/IGFzbmFtZSkKKyAgICAtLSBpbXBvcnQgbmFtZSB3aXRoIG9wdGlvbmFsICdhcycgYWxpYXMuCisgICAgYWxpYXMgPSAoaWRlbnRpZmllciBuYW1lLCBpZGVudGlmaWVyPyBhc25hbWUpCisKKyAgICB3aXRoaXRlbSA9IChleHByIGNvbnRleHRfZXhwciwgZXhwcj8gb3B0aW9uYWxfdmFycykKIH0KIApkaWZmIC0tZ2l0IGEvUGFyc2VyL2FzZGwucHkgYi9QYXJzZXIvYXNkbC5weQppbmRleCA3YjRlMmRjLi4wOGFhMDViIDEwMDY0NAotLS0gYS9QYXJzZXIvYXNkbC5weQorKysgYi9QYXJzZXIvYXNkbC5weQpAQCAtMTE0LDI4ICsxMTQsMjAgQEAKICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKHRvay5saW5lbm8sIHRvaykKIAogICAgIGRlZiBwX21vZHVsZV8wKHNlbGYsIGluZm8pOgotICAgICAgICAiIG1vZHVsZSA6Oj0gSWQgSWQgdmVyc2lvbiB7IH0gIgotICAgICAgICBtb2R1bGUsIG5hbWUsIHZlcnNpb24sIF8wLCBfMSA9IGluZm8KKyAgICAgICAgIiBtb2R1bGUgOjo9IElkIElkIHsgfSAiCisgICAgICAgIG1vZHVsZSwgbmFtZSwgXzAsIF8xID0gaW5mbwogICAgICAgICBpZiBtb2R1bGUudmFsdWUgIT0gIm1vZHVsZSI6CiAgICAgICAgICAgICByYWlzZSBBU0RMU3ludGF4RXJyb3IobW9kdWxlLmxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9ImV4cGVjdGVkICdtb2R1bGUnLCBmb3VuZCAlcyIgJSBtb2R1bGUpCi0gICAgICAgIHJldHVybiBNb2R1bGUobmFtZSwgTm9uZSwgdmVyc2lvbikKKyAgICAgICAgcmV0dXJuIE1vZHVsZShuYW1lLCBOb25lKQogCiAgICAgZGVmIHBfbW9kdWxlKHNlbGYsIGluZm8pOgotICAgICAgICAiIG1vZHVsZSA6Oj0gSWQgSWQgdmVyc2lvbiB7IGRlZmluaXRpb25zIH0gIgotICAgICAgICBtb2R1bGUsIG5hbWUsIHZlcnNpb24sIF8wLCBkZWZpbml0aW9ucywgXzEgPSBpbmZvCisgICAgICAgICIgbW9kdWxlIDo6PSBJZCBJZCB7IGRlZmluaXRpb25zIH0gIgorICAgICAgICBtb2R1bGUsIG5hbWUsIF8wLCBkZWZpbml0aW9ucywgXzEgPSBpbmZvCiAgICAgICAgIGlmIG1vZHVsZS52YWx1ZSAhPSAibW9kdWxlIjoKICAgICAgICAgICAgIHJhaXNlIEFTRExTeW50YXhFcnJvcihtb2R1bGUubGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iZXhwZWN0ZWQgJ21vZHVsZScsIGZvdW5kICVzIiAlIG1vZHVsZSkKLSAgICAgICAgcmV0dXJuIE1vZHVsZShuYW1lLCBkZWZpbml0aW9ucywgdmVyc2lvbikKLQotICAgIGRlZiBwX3ZlcnNpb24oc2VsZiwgaW5mbyk6Ci0gICAgICAgICJ2ZXJzaW9uIDo6PSBJZCBTdHJpbmciCi0gICAgICAgIHZlcnNpb24sIFYgPSBpbmZvCi0gICAgICAgIGlmIHZlcnNpb24udmFsdWUgIT0gInZlcnNpb24iOgotICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKHZlcnNpb24ubGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iZXhwZWN0ZWQgJ3ZlcnNpb24nLCBmb3VuZCAlIiAlIHZlcnNpb24pCi0gICAgICAgIHJldHVybiBWCisgICAgICAgIHJldHVybiBNb2R1bGUobmFtZSwgZGVmaW5pdGlvbnMpCiAKICAgICBkZWYgcF9kZWZpbml0aW9uXzAoc2VsZiwgZGVmaW5pdGlvbik6CiAgICAgICAgICIgZGVmaW5pdGlvbnMgOjo9IGRlZmluaXRpb24gIgpAQCAtMTY0LDE1ICsxNTYsMTEgQEAKICAgICAgICAgaWYgaWQudmFsdWUgIT0gImF0dHJpYnV0ZXMiOgogICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKGlkLmxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9ImV4cGVjdGVkIGF0dHJpYnV0ZXMsIGZvdW5kICVzIiAlIGlkKQotICAgICAgICBpZiBhdHRyaWJ1dGVzOgotICAgICAgICAgICAgYXR0cmlidXRlcy5yZXZlcnNlKCkKICAgICAgICAgcmV0dXJuIFN1bShzdW0sIGF0dHJpYnV0ZXMpCiAKICAgICBkZWYgcF9wcm9kdWN0KHNlbGYsIGluZm8pOgogICAgICAgICAiIHByb2R1Y3QgOjo9ICggZmllbGRzICkgIgogICAgICAgICBfMCwgZmllbGRzLCBfMSA9IGluZm8KLSAgICAgICAgIyBYWFggY2FuJ3QgSSBqdXN0IGNvbnN0cnVjdCB0aGluZ3MgaW4gdGhlIHJpZ2h0IG9yZGVyPwotICAgICAgICBmaWVsZHMucmV2ZXJzZSgpCiAgICAgICAgIHJldHVybiBQcm9kdWN0KGZpZWxkcykKIAogICAgIGRlZiBwX3N1bV8wKHNlbGYsIGNvbnN0cnVjdG9yKToKQEAgLTE5Niw4ICsxODQsNiBAQAogICAgIGRlZiBwX2NvbnN0cnVjdG9yXzEoc2VsZiwgaW5mbyk6CiAgICAgICAgICIgY29uc3RydWN0b3IgOjo9IElkICggZmllbGRzICkgIgogICAgICAgICBpZCwgXzAsIGZpZWxkcywgXzEgPSBpbmZvCi0gICAgICAgICMgWFhYIGNhbid0IEkganVzdCBjb25zdHJ1Y3QgdGhpbmdzIGluIHRoZSByaWdodCBvcmRlcj8KLSAgICAgICAgZmllbGRzLnJldmVyc2UoKQogICAgICAgICByZXR1cm4gQ29uc3RydWN0b3IoaWQsIGZpZWxkcykKIAogICAgIGRlZiBwX2ZpZWxkc18wKHNlbGYsIGZpZWxkKToKQEAgLTIwNSw4ICsxOTEsOCBAQAogICAgICAgICByZXR1cm4gW2ZpZWxkWzBdXQogCiAgICAgZGVmIHBfZmllbGRzXzEoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgZmllbGRzIDo6PSBmaWVsZCAsIGZpZWxkcyAiCi0gICAgICAgIGZpZWxkLCBfLCBmaWVsZHMgPSBpbmZvCisgICAgICAgICIgZmllbGRzIDo6PSBmaWVsZHMgLCBmaWVsZCAiCisgICAgICAgIGZpZWxkcywgXywgZmllbGQgPSBpbmZvCiAgICAgICAgIHJldHVybiBmaWVsZHMgKyBbZmllbGRdCiAKICAgICBkZWYgcF9maWVsZF8wKHNlbGYsIHR5cGVfKToKQEAgLTIzNiw3ICsyMjIsNyBAQAogICAgICAgICAiIGZpZWxkIDo6PSBJZCA/ICIKICAgICAgICAgcmV0dXJuIEZpZWxkKHR5cGVbMF0sIG9wdD1UcnVlKQogCi1idWlsdGluX3R5cGVzID0gKCJpZGVudGlmaWVyIiwgInN0cmluZyIsICJpbnQiLCAiYm9vbCIsICJvYmplY3QiKQorYnVpbHRpbl90eXBlcyA9ICgiaWRlbnRpZmllciIsICJzdHJpbmciLCAiYnl0ZXMiLCAiaW50IiwgIm9iamVjdCIpCiAKICMgYmVsb3cgaXMgYSBjb2xsZWN0aW9uIG9mIGNsYXNzZXMgdG8gY2FwdHVyZSB0aGUgQVNUIG9mIGFuIEFTVCA6LSkKICMgbm90IHN1cmUgaWYgYW55IG9mIHRoZSBtZXRob2RzIGFyZSB1c2VmdWwgeWV0LCBidXQgSSdtIGFkZGluZyB0aGVtCkBAIC0yNDYsMTAgKzIzMiw5IEBACiAgICAgcGFzcyAjIGEgbWFya2VyIGNsYXNzCiAKIGNsYXNzIE1vZHVsZShBU1QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBkZm5zLCB2ZXJzaW9uKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgZGZucyk6CiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICAgc2VsZi5kZm5zID0gZGZucwotICAgICAgICBzZWxmLnZlcnNpb24gPSB2ZXJzaW9uCiAgICAgICAgIHNlbGYudHlwZXMgPSB7fSAjIG1hcHMgdHlwZSBuYW1lIHRvIHZhbHVlIChmcm9tIGRmbnMpCiAgICAgICAgIGZvciB0eXBlIGluIGRmbnM6CiAgICAgICAgICAgICBzZWxmLnR5cGVzW3R5cGUubmFtZS52YWx1ZV0gPSB0eXBlLnZhbHVlCmRpZmYgLS1naXQgYS9QYXJzZXIvYXNkbF9jLnB5IGIvUGFyc2VyL2FzZGxfYy5weQppbmRleCA3ZjYxM2RiLi5hOWU2NjI2IDEwMDc1NQotLS0gYS9QYXJzZXIvYXNkbF9jLnB5CisrKyBiL1BhcnNlci9hc2RsX2MucHkKQEAgLTg0LDggKzg0LDE2IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSk6CiAgICAgICAgIHNlbGYuZmlsZSA9IGZpbGUKKyAgICAgICAgc2VsZi5pZGVudGlmaWVycyA9IHNldCgpCiAgICAgICAgIHN1cGVyKEVtaXRWaXNpdG9yLCBzZWxmKS5fX2luaXRfXygpCiAKKyAgICBkZWYgZW1pdF9pZGVudGlmaWVyKHNlbGYsIG5hbWUpOgorICAgICAgICBuYW1lID0gc3RyKG5hbWUpCisgICAgICAgIGlmIG5hbWUgaW4gc2VsZi5pZGVudGlmaWVyczoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmVtaXQoIl9QeV9JREVOVElGSUVSKCVzKTsiICUgbmFtZSwgMCkKKyAgICAgICAgc2VsZi5pZGVudGlmaWVycy5hZGQobmFtZSkKKwogICAgIGRlZiBlbWl0KHNlbGYsIHMsIGRlcHRoLCByZWZsb3c9VHJ1ZSk6CiAgICAgICAgICMgWFhYIHJlZmxvdyBsb25nIGxpbmVzPwogICAgICAgICBpZiByZWZsb3c6CkBAIC00ODUsMTIgKzQ5MywxMiBAQAogCiAgICAgZGVmIHZpc2l0RmllbGQoc2VsZiwgZmllbGQsIG5hbWUsIHN1bT1Ob25lLCBwcm9kPU5vbmUsIGRlcHRoPTApOgogICAgICAgICBjdHlwZSA9IGdldF9jX3R5cGUoZmllbGQudHlwZSkKLSAgICAgICAgc2VsZi5lbWl0KCJpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosIFwiJXNcIikpIHsiICUgZmllbGQubmFtZSwgZGVwdGgpCisgICAgICAgIHNlbGYuZW1pdCgiaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF8lcykpIHsiICUgZmllbGQubmFtZSwgZGVwdGgpCiAgICAgICAgIHNlbGYuZW1pdCgiaW50IHJlczsiLCBkZXB0aCsxKQogICAgICAgICBpZiBmaWVsZC5zZXE6CiAgICAgICAgICAgICBzZWxmLmVtaXQoIlB5X3NzaXplX3QgbGVuOyIsIGRlcHRoKzEpCiAgICAgICAgICAgICBzZWxmLmVtaXQoIlB5X3NzaXplX3QgaTsiLCBkZXB0aCsxKQotICAgICAgICBzZWxmLmVtaXQoInRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCBcIiVzXCIpOyIgJSBmaWVsZC5uYW1lLCBkZXB0aCsxKQorICAgICAgICBzZWxmLmVtaXQoInRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF8lcyk7IiAlIGZpZWxkLm5hbWUsIGRlcHRoKzEpCiAgICAgICAgIHNlbGYuZW1pdCgiaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsiLCBkZXB0aCsxKQogICAgICAgICBpZiBmaWVsZC5zZXE6CiAgICAgICAgICAgICBzZWxmLmVtaXQoImlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsiLCBkZXB0aCsxKQpAQCAtNTUyLDYgKzU2MCw4IEBACiAgICAgICAgIHNlbGYuZW1pdCgic3RhdGljIFB5VHlwZU9iamVjdCAqJXNfdHlwZTsiICUgbmFtZSwgMCkKICAgICAgICAgc2VsZi5lbWl0KCJzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfJXModm9pZCopOyIgJSBuYW1lLCAwKQogICAgICAgICBpZiBwcm9kLmZpZWxkczoKKyAgICAgICAgICAgIGZvciBmIGluIHByb2QuZmllbGRzOgorICAgICAgICAgICAgICAgIHNlbGYuZW1pdF9pZGVudGlmaWVyKGYubmFtZSkKICAgICAgICAgICAgIHNlbGYuZW1pdCgic3RhdGljIGNoYXIgKiVzX2ZpZWxkc1tdPXsiICUgbmFtZSwwKQogICAgICAgICAgICAgZm9yIGYgaW4gcHJvZC5maWVsZHM6CiAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCciJXMiLCcgJSBmLm5hbWUsIDEpCkBAIC01NjAsNiArNTcwLDggQEAKICAgICBkZWYgdmlzaXRTdW0oc2VsZiwgc3VtLCBuYW1lKToKICAgICAgICAgc2VsZi5lbWl0KCJzdGF0aWMgUHlUeXBlT2JqZWN0IColc190eXBlOyIgJSBuYW1lLCAwKQogICAgICAgICBpZiBzdW0uYXR0cmlidXRlczoKKyAgICAgICAgICAgIGZvciBhIGluIHN1bS5hdHRyaWJ1dGVzOgorICAgICAgICAgICAgICAgIHNlbGYuZW1pdF9pZGVudGlmaWVyKGEubmFtZSkKICAgICAgICAgICAgIHNlbGYuZW1pdCgic3RhdGljIGNoYXIgKiVzX2F0dHJpYnV0ZXNbXSA9IHsiICUgbmFtZSwgMCkKICAgICAgICAgICAgIGZvciBhIGluIHN1bS5hdHRyaWJ1dGVzOgogICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgnIiVzIiwnICUgYS5uYW1lLCAxKQpAQCAtNTc5LDYgKzU5MSw4IEBACiAgICAgZGVmIHZpc2l0Q29uc3RydWN0b3Ioc2VsZiwgY29ucywgbmFtZSk6CiAgICAgICAgIHNlbGYuZW1pdCgic3RhdGljIFB5VHlwZU9iamVjdCAqJXNfdHlwZTsiICUgY29ucy5uYW1lLCAwKQogICAgICAgICBpZiBjb25zLmZpZWxkczoKKyAgICAgICAgICAgIGZvciB0IGluIGNvbnMuZmllbGRzOgorICAgICAgICAgICAgICAgIHNlbGYuZW1pdF9pZGVudGlmaWVyKHQubmFtZSkKICAgICAgICAgICAgIHNlbGYuZW1pdCgic3RhdGljIGNoYXIgKiVzX2ZpZWxkc1tdPXsiICUgY29ucy5uYW1lLCAwKQogICAgICAgICAgICAgZm9yIHQgaW4gY29ucy5maWVsZHM6CiAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCciJXMiLCcgJSB0Lm5hbWUsIDEpCkBAIC01ODgsMTMgKzYwMiwzOSBAQAogCiAgICAgZGVmIHZpc2l0TW9kdWxlKHNlbGYsIG1vZCk6CiAgICAgICAgIHNlbGYuZW1pdCgiIiIKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKmRpY3Q7Cit9IEFTVF9vYmplY3Q7CisKK3N0YXRpYyB2b2lkCithc3RfZGVhbGxvYyhBU1Rfb2JqZWN0ICpzZWxmKQoreworICAgIFB5X0NMRUFSKHNlbGYtPmRpY3QpOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoc2VsZik7Cit9CisKK3N0YXRpYyBpbnQKK2FzdF90cmF2ZXJzZShBU1Rfb2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChzZWxmLT5kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK2FzdF9jbGVhcihBU1Rfb2JqZWN0ICpzZWxmKQoreworICAgIFB5X0NMRUFSKHNlbGYtPmRpY3QpOworfQorCiBzdGF0aWMgaW50CiBhc3RfdHlwZV9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogeworICAgIF9QeV9JREVOVElGSUVSKF9maWVsZHMpOwogICAgIFB5X3NzaXplX3QgaSwgbnVtZmllbGRzID0gMDsKICAgICBpbnQgcmVzID0gLTE7CiAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlLCAqZmllbGRzOwotICAgIGZpZWxkcyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0KilQeV9UWVBFKHNlbGYpLCAiX2ZpZWxkcyIpOworICAgIGZpZWxkcyA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0KilQeV9UWVBFKHNlbGYpLCAmUHlJZF9fZmllbGRzKTsKICAgICBpZiAoIWZpZWxkcykKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBpZiAoZmllbGRzKSB7CkBAIC02NDQsNyArNjg0LDggQEAKIGFzdF90eXBlX3JlZHVjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKIHsKICAgICBQeU9iamVjdCAqcmVzOwotICAgIFB5T2JqZWN0ICpkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzZWxmLCAiX19kaWN0X18iKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CisgICAgUHlPYmplY3QgKmRpY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fZGljdF9fKTsKICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC02NjQsMTIgKzcwNSwxNyBAQAogICAgIHtOVUxMfQogfTsKIAorc3RhdGljIFB5R2V0U2V0RGVmIGFzdF90eXBlX2dldHNldHNbXSA9IHsKKyAgICB7Il9fZGljdF9fIiwgUHlPYmplY3RfR2VuZXJpY0dldERpY3QsIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0fSwKKyAgICB7TlVMTH0KK307CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgQVNUX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKICAgICAiX2FzdC5BU1QiLAotICAgIHNpemVvZihQeU9iamVjdCksCisgICAgc2l6ZW9mKEFTVF9vYmplY3QpLAogICAgIDAsCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAoZGVzdHJ1Y3Rvcilhc3RfZGVhbGxvYywgLyogdHBfZGVhbGxvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KQEAgLTY4NCwyNiArNzMwLDI2IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsIC8qIHRwX2dldGF0dHJvICovCiAgICAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHIsIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsIC8qIHRwX2ZsYWdzICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8IFB5X1RQRkxBR1NfSEFWRV9HQywgLyogdHBfZmxhZ3MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgKHRyYXZlcnNlcHJvYylhc3RfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpYXN0X2NsZWFyLCAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBhc3RfdHlwZV9tZXRob2RzLCAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIGFzdF90eXBlX2dldHNldHMsICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIG9mZnNldG9mKEFTVF9vYmplY3QsIGRpY3QpLC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICAoaW5pdHByb2MpYXN0X3R5cGVfaW5pdCwgLyogdHBfaW5pdCAqLwogICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAvKiB0cF9hbGxvYyAqLwogICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAvKiB0cF9uZXcgKi8KLSAgICBQeU9iamVjdF9EZWwsICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCiAKQEAgLTczMCw2ICs3NzYsNyBAQAogc3RhdGljIGludCBhZGRfYXR0cmlidXRlcyhQeVR5cGVPYmplY3QqIHR5cGUsIGNoYXIqKmF0dHJzLCBpbnQgbnVtX2ZpZWxkcykKIHsKICAgICBpbnQgaSwgcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKF9hdHRyaWJ1dGVzKTsKICAgICBQeU9iamVjdCAqcywgKmwgPSBQeVR1cGxlX05ldyhudW1fZmllbGRzKTsKICAgICBpZiAoIWwpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNzQxLDcgKzc4OCw3IEBACiAgICAgICAgIH0KICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShsLCBpLCBzKTsKICAgICB9Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfU2V0QXR0clN0cmluZygoUHlPYmplY3QqKXR5cGUsICJfYXR0cmlidXRlcyIsIGwpID49IDA7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X1NldEF0dHJJZCgoUHlPYmplY3QqKXR5cGUsICZQeUlkX19hdHRyaWJ1dGVzLCBsKSA+PSAwOwogICAgIFB5X0RFQ1JFRihsKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNzUwLDcgKzc5Nyw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9saXN0KGFzZGxfc2VxICpzZXEsIFB5T2JqZWN0KiAoKmZ1bmMpKHZvaWQqKSkKIHsKLSAgICBpbnQgaSwgbiA9IGFzZGxfc2VxX0xFTihzZXEpOworICAgIFB5X3NzaXplX3QgaSwgbiA9IGFzZGxfc2VxX0xFTihzZXEpOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeUxpc3RfTmV3KG4pOwogICAgIFB5T2JqZWN0ICp2YWx1ZTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTc3NSw2ICs4MjIsNyBAQAogfQogI2RlZmluZSBhc3Qyb2JqX2lkZW50aWZpZXIgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9zdHJpbmcgYXN0Mm9ial9vYmplY3QKKyNkZWZpbmUgYXN0Mm9ial9ieXRlcyBhc3Qyb2JqX29iamVjdAogCiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfaW50KGxvbmcgYikKIHsKQEAgLTgxMiw2ICs4NjAsMTUgQEAKICAgICByZXR1cm4gb2JqMmFzdF9vYmplY3Qob2JqLCBvdXQsIGFyZW5hKTsKIH0KIAorc3RhdGljIGludCBvYmoyYXN0X2J5dGVzKFB5T2JqZWN0KiBvYmosIFB5T2JqZWN0Kiogb3V0LCBQeUFyZW5hKiBhcmVuYSkKK3sKKyAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJBU1QgYnl0ZXMgbXVzdCBiZSBvZiB0eXBlIGJ5dGVzIik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gb2JqMmFzdF9vYmplY3Qob2JqLCBvdXQsIGFyZW5hKTsKK30KKwogc3RhdGljIGludCBvYmoyYXN0X2ludChQeU9iamVjdCogb2JqLCBpbnQqIG91dCwgUHlBcmVuYSogYXJlbmEpCiB7CiAgICAgaW50IGk7CkBAIC05MTAsMTAgKzk2Nyw2IEBACiAgICAgICAgIHNlbGYuZW1pdCgnaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBU1QiLCAoUHlPYmplY3QqKSZBU1RfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsnLCAxKQogICAgICAgICBzZWxmLmVtaXQoJ2lmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlDRl9PTkxZX0FTVCIsIFB5Q0ZfT05MWV9BU1QpIDwgMCknLCAxKQogICAgICAgICBzZWxmLmVtaXQoInJldHVybiBOVUxMOyIsIDIpCi0gICAgICAgICMgVmFsdWUgb2YgdmVyc2lvbjogIiRSZXZpc2lvbiQiCi0gICAgICAgIHNlbGYuZW1pdCgnaWYgKFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJfX3ZlcnNpb25fXyIsICIlcyIpIDwgMCknCi0gICAgICAgICAgICAgICAgJSBtb2QudmVyc2lvbiwgMSkKLSAgICAgICAgc2VsZi5lbWl0KCJyZXR1cm4gTlVMTDsiLCAyKQogICAgICAgICBmb3IgZGZuIGluIG1vZC5kZm5zOgogICAgICAgICAgICAgc2VsZi52aXNpdChkZm4pCiAgICAgICAgIHNlbGYuZW1pdCgicmV0dXJuIG07IiwgMSkKQEAgLTk5Nyw3ICsxMDUwLDcgQEAKICAgICAgICAgZm9yIGEgaW4gc3VtLmF0dHJpYnV0ZXM6CiAgICAgICAgICAgICBzZWxmLmVtaXQoInZhbHVlID0gYXN0Mm9ial8lcyhvLT4lcyk7IiAlIChhLnR5cGUsIGEubmFtZSksIDEpCiAgICAgICAgICAgICBzZWxmLmVtaXQoImlmICghdmFsdWUpIGdvdG8gZmFpbGVkOyIsIDEpCi0gICAgICAgICAgICBzZWxmLmVtaXQoJ2lmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIiVzIiwgdmFsdWUpIDwgMCknICUgYS5uYW1lLCAxKQorICAgICAgICAgICAgc2VsZi5lbWl0KCdpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkXyVzLCB2YWx1ZSkgPCAwKScgJSBhLm5hbWUsIDEpCiAgICAgICAgICAgICBzZWxmLmVtaXQoJ2dvdG8gZmFpbGVkOycsIDIpCiAgICAgICAgICAgICBzZWxmLmVtaXQoJ1B5X0RFQ1JFRih2YWx1ZSk7JywgMSkKICAgICAgICAgc2VsZi5mdW5jX2VuZCgpCkBAIC0xMDQzLDcgKzEwOTYsNyBAQAogICAgICAgICAgICAgdmFsdWUgPSAiby0+di4lcy4lcyIgJSAobmFtZSwgZmllbGQubmFtZSkKICAgICAgICAgc2VsZi5zZXQoZmllbGQsIHZhbHVlLCBkZXB0aCkKICAgICAgICAgZW1pdCgiaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7IiwgMCkKLSAgICAgICAgZW1pdCgnaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiJXMiLCB2YWx1ZSkgPT0gLTEpJyAlIGZpZWxkLm5hbWUsIDApCisgICAgICAgIGVtaXQoJ2lmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfJXMsIHZhbHVlKSA9PSAtMSknICUgZmllbGQubmFtZSwgMCkKICAgICAgICAgZW1pdCgiZ290byBmYWlsZWQ7IiwgMSkKICAgICAgICAgZW1pdCgiUHlfREVDUkVGKHZhbHVlKTsiLCAwKQogCkBAIC0xMDY2LDcgKzExMTksNyBAQAogICAgICAgICAgICAgICAgICMgV2hpbGUgdGhlIHNlcXVlbmNlIGVsZW1lbnRzIGFyZSBzdG9yZWQgYXMgdm9pZCosCiAgICAgICAgICAgICAgICAgIyBhc3Qyb2JqX2NtcG9wIGV4cGVjdHMgYW4gZW51bQogICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgieyIsIGRlcHRoKQotICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgiaW50IGksIG4gPSBhc2RsX3NlcV9MRU4oJXMpOyIgJSB2YWx1ZSwgZGVwdGgrMSkKKyAgICAgICAgICAgICAgICBzZWxmLmVtaXQoIlB5X3NzaXplX3QgaSwgbiA9IGFzZGxfc2VxX0xFTiglcyk7IiAlIHZhbHVlLCBkZXB0aCsxKQogICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgidmFsdWUgPSBQeUxpc3RfTmV3KG4pOyIsIGRlcHRoKzEpCiAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCJpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsiLCBkZXB0aCsxKQogICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgiZm9yKGkgPSAwOyBpIDwgbjsgaSsrKSIsIGRlcHRoKzEpCkBAIC0xMTM0LDI0ICsxMTg3LDEyIEBACiAKIGNvbW1vbl9tc2cgPSAiLyogRmlsZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSAlcy4gKi9cblxuIgogCi1jX2ZpbGVfbXNnID0gIiIiCi0vKgotICAgX192ZXJzaW9uX18gJXMuCi0KLSAgIFRoaXMgbW9kdWxlIG11c3QgYmUgY29tbWl0dGVkIHNlcGFyYXRlbHkgYWZ0ZXIgZWFjaCBBU1QgZ3JhbW1hciBjaGFuZ2U7Ci0gICBUaGUgX192ZXJzaW9uX18gbnVtYmVyIGlzIHNldCB0byB0aGUgcmV2aXNpb24gbnVtYmVyIG9mIHRoZSBjb21taXQKLSAgIGNvbnRhaW5pbmcgdGhlIGdyYW1tYXIgY2hhbmdlLgotKi8KLQotIiIiCi0KIGRlZiBtYWluKHNyY2ZpbGUpOgogICAgIGFyZ3YwID0gc3lzLmFyZ3ZbMF0KICAgICBjb21wb25lbnRzID0gYXJndjAuc3BsaXQob3Muc2VwKQogICAgIGFyZ3YwID0gb3Muc2VwLmpvaW4oY29tcG9uZW50c1stMjpdKQogICAgIGF1dG9fZ2VuX21zZyA9IGNvbW1vbl9tc2cgJSBhcmd2MAogICAgIG1vZCA9IGFzZGwucGFyc2Uoc3JjZmlsZSkKLSAgICBtb2QudmVyc2lvbiA9ICI4MjE2MyIKICAgICBpZiBub3QgYXNkbC5jaGVjayhtb2QpOgogICAgICAgICBzeXMuZXhpdCgxKQogICAgIGlmIElOQ19ESVI6CkBAIC0xMTczLDcgKzEyMTQsOCBAQAogICAgICAgICBwID0gb3MucGF0aC5qb2luKFNSQ19ESVIsIHN0cihtb2QubmFtZSkgKyAiLWFzdC5jIikKICAgICAgICAgZiA9IG9wZW4ocCwgInciKQogICAgICAgICBmLndyaXRlKGF1dG9fZ2VuX21zZykKLSAgICAgICAgZi53cml0ZShjX2ZpbGVfbXNnICUgbW9kLnZlcnNpb24pCisgICAgICAgIGYud3JpdGUoJyNpbmNsdWRlIDxzdGRkZWYuaD5cbicpCisgICAgICAgIGYud3JpdGUoJ1xuJykKICAgICAgICAgZi53cml0ZSgnI2luY2x1ZGUgIlB5dGhvbi5oIlxuJykKICAgICAgICAgZi53cml0ZSgnI2luY2x1ZGUgIiVzLWFzdC5oIlxuJyAlIG1vZC5uYW1lKQogICAgICAgICBmLndyaXRlKCdcbicpCmRpZmYgLS1naXQgYS9QYXJzZXIvaW50cmNoZWNrLmMgYi9QYXJzZXIvaW50cmNoZWNrLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0Mzk4NjQuLjAwMDAwMDAKLS0tIGEvUGFyc2VyL2ludHJjaGVjay5jCisrKyAvZGV2L251bGwKQEAgLTEsMTc0ICswLDAgQEAKLQotLyogQ2hlY2sgZm9yIGludGVycnVwdHMgKi8KLQotI2luY2x1ZGUgIlB5dGhvbi5oIgotI2luY2x1ZGUgInB5dGhyZWFkLmgiCi0KLSNpZmRlZiBRVUlDS1dJTgotCi0jaW5jbHVkZSA8aW8uaD4KLQotdm9pZAotUHlPU19Jbml0SW50ZXJydXB0cyh2b2lkKQotewotfQotCi12b2lkCi1QeU9TX0ZpbmlJbnRlcnJ1cHRzKHZvaWQpCi17Ci19Ci0KLWludAotUHlPU19JbnRlcnJ1cHRPY2N1cnJlZCh2b2lkKQotewotICAgIF93eWllbGQoKTsKLX0KLQotI2RlZmluZSBPSwotCi0jZW5kaWYgLyogUVVJQ0tXSU4gKi8KLQotI2lmIGRlZmluZWQoX01fSVg4NikgJiYgIWRlZmluZWQoX19RTlhfXykKLSNpbmNsdWRlIDxpby5oPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE1TRE9TKSAmJiAhZGVmaW5lZChRVUlDS1dJTikKLQotI2lmZGVmIF9fR05VQ19fCi0KLS8qIFRoaXMgaXMgZm9yIERKR1BQJ3MgR08zMiBleHRlbmRlci4gIEkgZG9uJ3Qga25vdyBob3cgdG8gdHJhcAotICogY29udHJvbC1DICAoVGhlcmUncyBubyBBUEkgZm9yIGN0cmwtQywgYW5kIEkgZG9uJ3Qgd2FudCB0byBtZXNzIHdpdGgKLSAqIHRoZSBpbnRlcnJ1cHQgdmVjdG9ycy4pICBIb3dldmVyLCB0aGlzIERPRVMgY2F0Y2ggY29udHJvbC1icmVhay4KLSAqIC0tQW1yaXQKLSAqLwotCi0jaW5jbHVkZSA8Z28zMi5oPgotCi12b2lkCi1QeU9TX0luaXRJbnRlcnJ1cHRzKHZvaWQpCi17Ci0gICAgX2dvMzJfd2FudF9jdHJsX2JyZWFrKDEgLyogVFJVRSAqLyk7Ci19Ci0KLXZvaWQKLVB5T1NfRmluaUludGVycnVwdHModm9pZCkKLXsKLX0KLQotaW50Ci1QeU9TX0ludGVycnVwdE9jY3VycmVkKHZvaWQpCi17Ci0gICAgcmV0dXJuIF9nbzMyX3dhc19jdHJsX2JyZWFrX2hpdCgpOwotfQotCi0jZWxzZSAvKiAhX19HTlVDX18gKi8KLQotLyogVGhpcyBtaWdodCB3b3JrIGZvciBNUy1ET1MgKHVudGVzdGVkIHRob3VnaCk6ICovCi0KLXZvaWQKLVB5T1NfSW5pdEludGVycnVwdHModm9pZCkKLXsKLX0KLQotdm9pZAotUHlPU19GaW5pSW50ZXJydXB0cyh2b2lkKQotewotfQotCi1pbnQKLVB5T1NfSW50ZXJydXB0T2NjdXJyZWQodm9pZCkKLXsKLSAgICBpbnQgaW50ZXJydXB0ZWQgPSAwOwotICAgIHdoaWxlIChrYmhpdCgpKSB7Ci0gICAgICAgIGlmIChnZXRjaCgpID09ICdcMDAzJykKLSAgICAgICAgICAgIGludGVycnVwdGVkID0gMTsKLSAgICB9Ci0gICAgcmV0dXJuIGludGVycnVwdGVkOwotfQotCi0jZW5kaWYgLyogX19HTlVDX18gKi8KLQotI2RlZmluZSBPSwotCi0jZW5kaWYgLyogTVNET1MgJiYgIVFVSUNLV0lOICovCi0KLQotI2lmbmRlZiBPSwotCi0vKiBEZWZhdWx0IHZlcnNpb24gLS0gZm9yIHJlYWwgb3BlcmF0aW5nIHN5c3RlbXMgYW5kIGZvciBTdGFuZGFyZCBDICovCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHNpZ25hbC5oPgotCi1zdGF0aWMgaW50IGludGVycnVwdGVkOwotCi12b2lkCi1QeUVycl9TZXRJbnRlcnJ1cHQodm9pZCkKLXsKLSAgICBpbnRlcnJ1cHRlZCA9IDE7Ci19Ci0KLWV4dGVybiBpbnQgUHlFcnJfQ2hlY2tTaWduYWxzKHZvaWQpOwotCi1zdGF0aWMgaW50Ci1jaGVja3NpZ25hbHNfd2l0aGFyZyh2b2lkICogYXJnKQotewotICAgIHJldHVybiBQeUVycl9DaGVja1NpZ25hbHMoKTsKLX0KLQotc3RhdGljIHZvaWQKLWludGNhdGNoZXIoaW50IHNpZykKLXsKLSAgICBleHRlcm4gdm9pZCBQeV9FeGl0KGludCk7Ci0gICAgc3RhdGljIGNoYXIgbWVzc2FnZVtdID0KLSJweXRob246IHRvIGludGVycnVwdCBhIHRydWx5IGhhbmdpbmcgUHl0aG9uIHByb2dyYW0sIGludGVycnVwdCBvbmNlIG1vcmUuXG4iOwotICAgIHN3aXRjaCAoaW50ZXJydXB0ZWQrKykgewotICAgIGNhc2UgMDoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxOgotICAgICAgICB3cml0ZSgyLCBtZXNzYWdlLCBzdHJsZW4obWVzc2FnZSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDI6Ci0gICAgICAgIGludGVycnVwdGVkID0gMDsKLSAgICAgICAgUHlfRXhpdCgxKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIFB5T1Nfc2V0c2lnKFNJR0lOVCwgaW50Y2F0Y2hlcik7Ci0gICAgUHlfQWRkUGVuZGluZ0NhbGwoY2hlY2tzaWduYWxzX3dpdGhhcmcsIE5VTEwpOwotfQotCi1zdGF0aWMgdm9pZCAoKm9sZF9zaWdpbnRoYW5kbGVyKShpbnQpID0gU0lHX0RGTDsKLQotdm9pZAotUHlPU19Jbml0SW50ZXJydXB0cyh2b2lkKQotewotICAgIGlmICgob2xkX3NpZ2ludGhhbmRsZXIgPSBQeU9TX3NldHNpZyhTSUdJTlQsIFNJR19JR04pKSAhPSBTSUdfSUdOKQotICAgICAgICBQeU9TX3NldHNpZyhTSUdJTlQsIGludGNhdGNoZXIpOwotfQotCi12b2lkCi1QeU9TX0ZpbmlJbnRlcnJ1cHRzKHZvaWQpCi17Ci0gICAgUHlPU19zZXRzaWcoU0lHSU5ULCBvbGRfc2lnaW50aGFuZGxlcik7Ci19Ci0KLWludAotUHlPU19JbnRlcnJ1cHRPY2N1cnJlZCh2b2lkKQotewotICAgIGlmICghaW50ZXJydXB0ZWQpCi0gICAgICAgIHJldHVybiAwOwotICAgIGludGVycnVwdGVkID0gMDsKLSAgICByZXR1cm4gMTsKLX0KLQotI2VuZGlmIC8qICFPSyAqLwotCi12b2lkCi1QeU9TX0FmdGVyRm9yayh2b2lkKQotewotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgUHlFdmFsX1JlSW5pdFRocmVhZHMoKTsKLSAgICBQeVRocmVhZF9SZUluaXRUTFMoKTsKLSNlbmRpZgotfQpkaWZmIC0tZ2l0IGEvUGFyc2VyL215cmVhZGxpbmUuYyBiL1BhcnNlci9teXJlYWRsaW5lLmMKaW5kZXggOTNlZGQ3Zi4uZDg2NDYyMyAxMDA2NDQKLS0tIGEvUGFyc2VyL215cmVhZGxpbmUuYworKysgYi9QYXJzZXIvbXlyZWFkbGluZS5jCkBAIC0zNSwxMiArMzUsMTEgQEAKIHN0YXRpYyBpbnQKIG15X2ZnZXRzKGNoYXIgKmJ1ZiwgaW50IGxlbiwgRklMRSAqZnApCiB7CisjaWZkZWYgTVNfV0lORE9XUworICAgIEhBTkRMRSBoSW50ZXJydXB0RXZlbnQ7CisjZW5kaWYKICAgICBjaGFyICpwOwogICAgIGludCBlcnI7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIGludCBpOwotI2VuZGlmCi0KICAgICB3aGlsZSAoMSkgewogICAgICAgICBpZiAoUHlPU19JbnB1dEhvb2sgIT0gTlVMTCkKICAgICAgICAgICAgICh2b2lkKShQeU9TX0lucHV0SG9vaykoKTsKQEAgLTU3LDIwICs1NiwyNCBAQAogICAgICAgICAvKiBDdHJsLUMgYW55d2hlcmUgb24gdGhlIGxpbmUgb3IgQ3RybC1aIGlmIHRoZSBvbmx5IGNoYXJhY3RlcgogICAgICAgICAgICBvbiBhIGxpbmUgd2lsbCBzZXQgRVJST1JfT1BFUkFUSU9OX0FCT1JURUQuIFVuZGVyIG5vcm1hbAogICAgICAgICAgICBjaXJjdW1zdGFuY2VzIEN0cmwtQyB3aWxsIGFsc28gaGF2ZSBjYXVzZWQgdGhlIFNJR0lOVCBoYW5kbGVyCi0gICAgICAgICAgIHRvIGZpcmUuIFRoaXMgc2lnbmFsIGZpcmVzIGluIGFub3RoZXIgdGhyZWFkIGFuZCBpcyBub3QKLSAgICAgICAgICAgZ3VhcmFudGVlZCB0byBoYXZlIG9jY3VycmVkIGJlZm9yZSB0aGlzIHBvaW50IGluIHRoZSBjb2RlLgorICAgICAgICAgICB0byBmaXJlIHdoaWNoIHdpbGwgaGF2ZSBzZXQgdGhlIGV2ZW50IG9iamVjdCByZXR1cm5lZCBieQorICAgICAgICAgICBfUHlPU19TaWdpbnRFdmVudC4gVGhpcyBzaWduYWwgZmlyZXMgaW4gYW5vdGhlciB0aHJlYWQgYW5kCisgICAgICAgICAgIGlzIG5vdCBndWFyYW50ZWVkIHRvIGhhdmUgb2NjdXJyZWQgYmVmb3JlIHRoaXMgcG9pbnQgaW4gdGhlCisgICAgICAgICAgIGNvZGUuCiAKLSAgICAgICAgICAgVGhlcmVmb3JlOiBjaGVjayBpbiBhIHNtYWxsIGxvb3AgdG8gc2VlIGlmIHRoZSB0cmlnZ2VyIGhhcwotICAgICAgICAgICBmaXJlZCwgaW4gd2hpY2ggY2FzZSBhc3N1bWUgdGhpcyBpcyBhIEN0cmwtQyBldmVudC4gSWYgaXQKLSAgICAgICAgICAgaGFzbid0IGZpcmVkIHdpdGhpbiAxMG1zIGFzc3VtZSB0aGF0IHRoaXMgaXMgYSBDdHJsLVogb24gaXRzCi0gICAgICAgICAgIG93biBvciB0aGF0IHRoZSBzaWduYWwgaXNuJ3QgZ29pbmcgdG8gZmlyZSBmb3Igc29tZSBvdGhlcgotICAgICAgICAgICByZWFzb24gYW5kIGRyb3AgdGhyb3VnaCB0byBjaGVjayBmb3IgRU9GLgorICAgICAgICAgICBUaGVyZWZvcmU6IGNoZWNrIHdoZXRoZXIgdGhlIGV2ZW50IGlzIHNldCB3aXRoIGEgc21hbGwgdGltZW91dC4KKyAgICAgICAgICAgSWYgaXQgaXMsIGFzc3VtZSB0aGlzIGlzIGEgQ3RybC1DIGFuZCByZXNldCB0aGUgZXZlbnQuIElmIGl0CisgICAgICAgICAgIGlzbid0IHNldCBhc3N1bWUgdGhhdCB0aGlzIGlzIGEgQ3RybC1aIG9uIGl0cyBvd24gYW5kIGRyb3AKKyAgICAgICAgICAgdGhyb3VnaCB0byBjaGVjayBmb3IgRU9GLgogICAgICAgICAqLwogICAgICAgICBpZiAoR2V0TGFzdEVycm9yKCk9PUVSUk9SX09QRVJBVElPTl9BQk9SVEVEKSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgewotICAgICAgICAgICAgICAgIGlmIChQeU9TX0ludGVycnVwdE9jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgU2xlZXAoMSk7CisgICAgICAgICAgICBoSW50ZXJydXB0RXZlbnQgPSBfUHlPU19TaWdpbnRFdmVudCgpOworICAgICAgICAgICAgc3dpdGNoIChXYWl0Rm9yU2luZ2xlT2JqZWN0KGhJbnRlcnJ1cHRFdmVudCwgMTApKSB7CisgICAgICAgICAgICBjYXNlIFdBSVRfT0JKRUNUXzA6CisgICAgICAgICAgICAgICAgUmVzZXRFdmVudChoSW50ZXJydXB0RXZlbnQpOworICAgICAgICAgICAgICAgIHJldHVybiAxOyAvKiBJbnRlcnJ1cHQgKi8KKyAgICAgICAgICAgIGNhc2UgV0FJVF9GQUlMRUQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIC0yOyAvKiBFcnJvciAqLwogICAgICAgICAgICAgfQogICAgICAgICB9CiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwpAQCAtOTAsNyArOTMsNyBAQAogI2VuZGlmCiAgICAgICAgICAgICBpZiAocyA8IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotCSAgICAvKiB0cnkgYWdhaW4gKi8KKyAgICAgICAgLyogdHJ5IGFnYWluICovCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9QYXJzZXIvbm9kZS5jIGIvUGFyc2VyL25vZGUuYwppbmRleCAwZGVhMzBmLi4xZTRmMGRhIDEwMDY0NAotLS0gYS9QYXJzZXIvbm9kZS5jCisrKyBiL1BhcnNlci9ub2RlLmMKQEAgLTcxLDcgKzcxLDcgQEAKICAqIGNhcGFjaXR5LiAgVGhlIGNvZGUgaXMgdHJpY2t5IHRvIGF2b2lkIHRoYXQuCiAgKi8KICNkZWZpbmUgWFhYUk9VTkRVUChuKSAoKG4pIDw9IDEgPyAobikgOiAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgKG4pIDw9IDEyOCA/ICgoKG4pICsgMykgJiB+MykgOiAgICAgICAgICBcCisgICAgICAgICAgICAgICAobikgPD0gMTI4ID8gX1B5X1NJWkVfUk9VTkRfVVAoKG4pLCA0KSA6IFwKICAgICAgICAgICAgICAgIGZhbmN5X3JvdW5kdXAobikpCiAKIApkaWZmIC0tZ2l0IGEvUGFyc2VyL3BhcnNldG9rLmMgYi9QYXJzZXIvcGFyc2V0b2suYwppbmRleCBiYjlhZmM0Li43YmViNzM1IDEwMDY0NAotLS0gYS9QYXJzZXIvcGFyc2V0b2suYworKysgYi9QYXJzZXIvcGFyc2V0b2suYwpAQCAtMTMsNyArMTMsNyBAQAogCiAvKiBGb3J3YXJkICovCiBzdGF0aWMgbm9kZSAqcGFyc2V0b2soc3RydWN0IHRva19zdGF0ZSAqLCBncmFtbWFyICosIGludCwgcGVycmRldGFpbCAqLCBpbnQgKik7Ci1zdGF0aWMgdm9pZCBpbml0ZXJyKHBlcnJkZXRhaWwgKmVycl9yZXQsIGNvbnN0IGNoYXIqIGZpbGVuYW1lKTsKK3N0YXRpYyBpbnQgaW5pdGVycihwZXJyZGV0YWlsICplcnJfcmV0LCBjb25zdCBjaGFyKiBmaWxlbmFtZSk7CiAKIC8qIFBhcnNlIGlucHV0IGNvbWluZyBmcm9tIGEgc3RyaW5nLiAgUmV0dXJuIGVycm9yIGNvZGUsIHByaW50IHNvbWUgZXJyb3JzLiAqLwogbm9kZSAqCkBAIC00OCw3ICs0OCw4IEBACiAgICAgc3RydWN0IHRva19zdGF0ZSAqdG9rOwogICAgIGludCBleGVjX2lucHV0ID0gc3RhcnQgPT0gZmlsZV9pbnB1dDsKIAotICAgIGluaXRlcnIoZXJyX3JldCwgZmlsZW5hbWUpOworICAgIGlmIChpbml0ZXJyKGVycl9yZXQsIGZpbGVuYW1lKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCpmbGFncyAmIFB5UEFSU0VfSUdOT1JFX0NPT0tJRSkKICAgICAgICAgdG9rID0gUHlUb2tlbml6ZXJfRnJvbVVURjgocywgZXhlY19pbnB1dCk7CkBAIC01OSw3ICs2MCwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICB0b2stPmZpbGVuYW1lID0gZmlsZW5hbWUgPyBmaWxlbmFtZSA6ICI8c3RyaW5nPiI7CisjaWZuZGVmIFBHRU4KKyAgICBQeV9JTkNSRUYoZXJyX3JldC0+ZmlsZW5hbWUpOworICAgIHRvay0+ZmlsZW5hbWUgPSBlcnJfcmV0LT5maWxlbmFtZTsKKyNlbmRpZgogICAgIHJldHVybiBwYXJzZXRvayh0b2ssIGcsIHN0YXJ0LCBlcnJfcmV0LCBmbGFncyk7CiB9CiAKQEAgLTkwLDEzICs5NCwxNyBAQAogewogICAgIHN0cnVjdCB0b2tfc3RhdGUgKnRvazsKIAotICAgIGluaXRlcnIoZXJyX3JldCwgZmlsZW5hbWUpOworICAgIGlmIChpbml0ZXJyKGVycl9yZXQsIGZpbGVuYW1lKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCh0b2sgPSBQeVRva2VuaXplcl9Gcm9tRmlsZShmcCwgKGNoYXIgKillbmMsIHBzMSwgcHMyKSkgPT0gTlVMTCkgewogICAgICAgICBlcnJfcmV0LT5lcnJvciA9IEVfTk9NRU07CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICB0b2stPmZpbGVuYW1lID0gZmlsZW5hbWU7CisjaWZuZGVmIFBHRU4KKyAgICBQeV9JTkNSRUYoZXJyX3JldC0+ZmlsZW5hbWUpOworICAgIHRvay0+ZmlsZW5hbWUgPSBlcnJfcmV0LT5maWxlbmFtZTsKKyNlbmRpZgogICAgIHJldHVybiBwYXJzZXRvayh0b2ssIGcsIHN0YXJ0LCBlcnJfcmV0LCBmbGFncyk7CiB9CiAKQEAgLTIxNiw2ICsyMjQsMzYgQEAKICAgICBpZiAoZXJyX3JldC0+ZXJyb3IgPT0gRV9ET05FKSB7CiAgICAgICAgIG4gPSBwcy0+cF90cmVlOwogICAgICAgICBwcy0+cF90cmVlID0gTlVMTDsKKworI2lmbmRlZiBQR0VOCisgICAgICAgIC8qIENoZWNrIHRoYXQgdGhlIHNvdXJjZSBmb3IgYSBzaW5nbGUgaW5wdXQgc3RhdGVtZW50IHJlYWxseQorICAgICAgICAgICBpcyBhIHNpbmdsZSBzdGF0ZW1lbnQgYnkgbG9va2luZyBhdCB3aGF0IGlzIGxlZnQgaW4gdGhlCisgICAgICAgICAgIGJ1ZmZlciBhZnRlciBwYXJzaW5nLiAgVHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQgY29tbWVudHMKKyAgICAgICAgICAgYXJlIE9LLiAgKi8KKyAgICAgICAgaWYgKHN0YXJ0ID09IHNpbmdsZV9pbnB1dCkgeworICAgICAgICAgICAgY2hhciAqY3VyID0gdG9rLT5jdXI7CisgICAgICAgICAgICBjaGFyIGMgPSAqdG9rLT5jdXI7CisKKyAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoYyA9PSAnICcgfHwgYyA9PSAnXHQnIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdcMDE0JykKKyAgICAgICAgICAgICAgICAgICAgYyA9ICorK2N1cjsKKworICAgICAgICAgICAgICAgIGlmICghYykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBpZiAoYyAhPSAnIycpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJyX3JldC0+ZXJyb3IgPSBFX0JBRFNJTkdMRTsKKyAgICAgICAgICAgICAgICAgICAgUHlOb2RlX0ZyZWUobik7CisgICAgICAgICAgICAgICAgICAgIG4gPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBTdWNrIHVwIGNvbW1lbnQuICovCisgICAgICAgICAgICAgICAgd2hpbGUgKGMgJiYgYyAhPSAnXG4nKQorICAgICAgICAgICAgICAgICAgICBjID0gKisrY3VyOworICAgICAgICAgICAgfQorICAgICAgICB9CisjZW5kaWYKICAgICB9CiAgICAgZWxzZQogICAgICAgICBuID0gTlVMTDsKQEAgLTIyNiw3ICsyNjQsNyBAQAogICAgIFB5UGFyc2VyX0RlbGV0ZShwcyk7CiAKICAgICBpZiAobiA9PSBOVUxMKSB7Ci0gICAgICAgIGlmICh0b2stPmxpbmVubyA8PSAxICYmIHRvay0+ZG9uZSA9PSBFX0VPRikKKyAgICAgICAgaWYgKHRvay0+ZG9uZSA9PSBFX0VPRikKICAgICAgICAgICAgIGVycl9yZXQtPmVycm9yID0gRV9FT0Y7CiAgICAgICAgIGVycl9yZXQtPmxpbmVubyA9IHRvay0+bGluZW5vOwogICAgICAgICBpZiAodG9rLT5idWYgIT0gTlVMTCkgewpAQCAtMjY5LDE0ICszMDcsMjQgQEAKICAgICByZXR1cm4gbjsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRpYyBpbnQKIGluaXRlcnIocGVycmRldGFpbCAqZXJyX3JldCwgY29uc3QgY2hhciAqZmlsZW5hbWUpCiB7CiAgICAgZXJyX3JldC0+ZXJyb3IgPSBFX09LOwotICAgIGVycl9yZXQtPmZpbGVuYW1lID0gZmlsZW5hbWU7CiAgICAgZXJyX3JldC0+bGluZW5vID0gMDsKICAgICBlcnJfcmV0LT5vZmZzZXQgPSAwOwogICAgIGVycl9yZXQtPnRleHQgPSBOVUxMOwogICAgIGVycl9yZXQtPnRva2VuID0gLTE7CiAgICAgZXJyX3JldC0+ZXhwZWN0ZWQgPSAtMTsKKyNpZm5kZWYgUEdFTgorICAgIGlmIChmaWxlbmFtZSkKKyAgICAgICAgZXJyX3JldC0+ZmlsZW5hbWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGZpbGVuYW1lKTsKKyAgICBlbHNlCisgICAgICAgIGVycl9yZXQtPmZpbGVuYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxzdHJpbmc+Iik7CisgICAgaWYgKGVycl9yZXQtPmZpbGVuYW1lID09IE5VTEwpIHsKKyAgICAgICAgZXJyX3JldC0+ZXJyb3IgPSBFX0VSUk9SOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9QYXJzZXIvcGFyc2V0b2tfcGdlbi5jIGIvUGFyc2VyL3BhcnNldG9rX3BnZW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2I5Mjg4Ci0tLSAvZGV2L251bGwKKysrIGIvUGFyc2VyL3BhcnNldG9rX3BnZW4uYwpAQCAtMCwwICsxLDIgQEAKKyNkZWZpbmUgUEdFTgorI2luY2x1ZGUgInBhcnNldG9rLmMiCmRpZmYgLS1naXQgYS9QYXJzZXIvcGdlbm1haW4uYyBiL1BhcnNlci9wZ2VubWFpbi5jCmluZGV4IDRiN2I1NWEuLjUyYjgzODAgMTAwNjQ0Ci0tLSBhL1BhcnNlci9wZ2VubWFpbi5jCisrKyBiL1BhcnNlci9wZ2VubWFpbi5jCkBAIC0yOSw2ICsyOSw4IEBACiAvKiBGb3J3YXJkICovCiBncmFtbWFyICpnZXRncmFtbWFyKGNoYXIgKmZpbGVuYW1lKTsKIAordm9pZCBQeV9FeGl0KGludCkgX1B5X05PX1JFVFVSTjsKKwogdm9pZAogUHlfRXhpdChpbnQgc3RzKQogewpkaWZmIC0tZ2l0IGEvUGFyc2VyL3Rva2VuaXplci5jIGIvUGFyc2VyL3Rva2VuaXplci5jCmluZGV4IDViYTEyYTQuLjkzYTRhNWMgMTAwNjQ0Ci0tLSBhL1BhcnNlci90b2tlbml6ZXIuYworKysgYi9QYXJzZXIvdG9rZW5pemVyLmMKQEAgLTEyOCw3ICsxMjgsNiBAQAogICAgIHRvay0+cHJvbXB0ID0gdG9rLT5uZXh0cHJvbXB0ID0gTlVMTDsKICAgICB0b2stPmxpbmVubyA9IDA7CiAgICAgdG9rLT5sZXZlbCA9IDA7Ci0gICAgdG9rLT5maWxlbmFtZSA9IE5VTEw7CiAgICAgdG9rLT5hbHR3YXJuaW5nID0gMTsKICAgICB0b2stPmFsdGVycm9yID0gMTsKICAgICB0b2stPmFsdHRhYnNpemUgPSAxOwpAQCAtMTQwLDYgKzEzOSw3IEBACiAgICAgdG9rLT5lbmNvZGluZyA9IE5VTEw7CiAgICAgdG9rLT5jb250X2xpbmUgPSAwOwogI2lmbmRlZiBQR0VOCisgICAgdG9rLT5maWxlbmFtZSA9IE5VTEw7CiAgICAgdG9rLT5kZWNvZGluZ19yZWFkbGluZSA9IE5VTEw7CiAgICAgdG9rLT5kZWNvZGluZ19idWZmZXIgPSBOVUxMOwogI2VuZGlmCkBAIC00NjIsNiArNDYyLDggQEAKIGZwX3NldHJlYWRsKHN0cnVjdCB0b2tfc3RhdGUgKnRvaywgY29uc3QgY2hhciogZW5jKQogewogICAgIFB5T2JqZWN0ICpyZWFkbGluZSA9IE5VTEwsICpzdHJlYW0gPSBOVUxMLCAqaW8gPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKG9wZW4pOworICAgIF9QeV9JREVOVElGSUVSKHJlYWRsaW5lKTsKICAgICBpbnQgZmQ7CiAKICAgICBpbyA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soImlvIik7CkBAIC00NzQsMTMgKzQ3NiwxMyBAQAogICAgICAgICBnb3RvIGNsZWFudXA7CiAgICAgfQogCi0gICAgc3RyZWFtID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbywgIm9wZW4iLCAiaXNpc09PTyIsCisgICAgc3RyZWFtID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfb3BlbiwgImlzaXNPT08iLAogICAgICAgICAgICAgICAgICAgICBmZCwgInIiLCAtMSwgZW5jLCBQeV9Ob25lLCBQeV9Ob25lLCBQeV9GYWxzZSk7CiAgICAgaWYgKHN0cmVhbSA9PSBOVUxMKQogICAgICAgICBnb3RvIGNsZWFudXA7CiAKICAgICBQeV9YREVDUkVGKHRvay0+ZGVjb2RpbmdfcmVhZGxpbmUpOwotICAgIHJlYWRsaW5lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzdHJlYW0sICJyZWFkbGluZSIpOworICAgIHJlYWRsaW5lID0gX1B5T2JqZWN0X0dldEF0dHJJZChzdHJlYW0sICZQeUlkX3JlYWRsaW5lKTsKICAgICB0b2stPmRlY29kaW5nX3JlYWRsaW5lID0gcmVhZGxpbmU7CiAKICAgICAvKiBUaGUgZmlsZSBoYXMgYmVlbiByZW9wZW5lZDsgcGFyc2luZyB3aWxsIHJlc3RhcnQgZnJvbQpAQCAtNTQ1LDcgKzU0Nyw2IEBACiB7CiAgICAgY2hhciAqbGluZSA9IE5VTEw7CiAgICAgaW50IGJhZGNoYXIgPSAwOwotICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIGlmICh0b2stPmRlY29kaW5nX3N0YXRlID09IFNUQVRFX05PUk1BTCkgewogICAgICAgICAgICAgLyogV2UgYWxyZWFkeSBoYXZlIGEgY29kZWMgYXNzb2NpYXRlZCB3aXRoCkBAIC01ODYsMTkgKzU4NywxMiBAQAogICAgIGlmIChiYWRjaGFyKSB7CiAgICAgICAgIC8qIE5lZWQgdG8gYWRkIDEgdG8gdGhlIGxpbmUgbnVtYmVyLCBzaW5jZSB0aGlzIGxpbmUKICAgICAgICAgICAgaGFzIG5vdCBiZWVuIGNvdW50ZWQsIHlldC4gICovCi0gICAgICAgIGlmICh0b2stPmZpbGVuYW1lICE9IE5VTEwpCi0gICAgICAgICAgICBmaWxlbmFtZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQodG9rLT5maWxlbmFtZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxmaWxlPiIpOwotICAgICAgICBpZiAoZmlsZW5hbWUgIT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5bnRheEVycm9yLAotICAgICAgICAgICAgICAgICAgICAiTm9uLVVURi04IGNvZGUgc3RhcnRpbmcgd2l0aCAnXFx4JS4yeCcgIgotICAgICAgICAgICAgICAgICAgICAiaW4gZmlsZSAlVSBvbiBsaW5lICVpLCAiCi0gICAgICAgICAgICAgICAgICAgICJidXQgbm8gZW5jb2RpbmcgZGVjbGFyZWQ7ICIKLSAgICAgICAgICAgICAgICAgICAgInNlZSBodHRwOi8vcHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDI2My8gZm9yIGRldGFpbHMiLAotICAgICAgICAgICAgICAgICAgICBiYWRjaGFyLCBmaWxlbmFtZSwgdG9rLT5saW5lbm8gKyAxKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmaWxlbmFtZSk7Ci0gICAgICAgIH0KKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5bnRheEVycm9yLAorICAgICAgICAgICAgICAgICJOb24tVVRGLTggY29kZSBzdGFydGluZyB3aXRoICdcXHglLjJ4JyAiCisgICAgICAgICAgICAgICAgImluIGZpbGUgJVUgb24gbGluZSAlaSwgIgorICAgICAgICAgICAgICAgICJidXQgbm8gZW5jb2RpbmcgZGVjbGFyZWQ7ICIKKyAgICAgICAgICAgICAgICAic2VlIGh0dHA6Ly9weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wMjYzLyBmb3IgZGV0YWlscyIsCisgICAgICAgICAgICAgICAgYmFkY2hhciwgdG9rLT5maWxlbmFtZSwgdG9rLT5saW5lbm8gKyAxKTsKICAgICAgICAgcmV0dXJuIGVycm9yX3JldCh0b2spOwogICAgIH0KICNlbmRpZgpAQCAtODU2LDYgKzg1MCw3IEBACiAjaWZuZGVmIFBHRU4KICAgICBQeV9YREVDUkVGKHRvay0+ZGVjb2RpbmdfcmVhZGxpbmUpOwogICAgIFB5X1hERUNSRUYodG9rLT5kZWNvZGluZ19idWZmZXIpOworICAgIFB5X1hERUNSRUYodG9rLT5maWxlbmFtZSk7CiAjZW5kaWYKICAgICBpZiAodG9rLT5mcCAhPSBOVUxMICYmIHRvay0+YnVmICE9IE5VTEwpCiAgICAgICAgIFB5TWVtX0ZSRUUodG9rLT5idWYpOwpAQCAtMTI1MCw4ICsxMjQ1LDEzIEBACiAgICAgICAgIHJldHVybiAxOwogICAgIH0KICAgICBpZiAodG9rLT5hbHR3YXJuaW5nKSB7Ci0gICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIlczogaW5jb25zaXN0ZW50IHVzZSBvZiB0YWJzIGFuZCBzcGFjZXMgIgorI2lmZGVmIFBHRU4KKyAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImluY29uc2lzdGVudCB1c2Ugb2YgdGFicyBhbmQgc3BhY2VzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImluIGluZGVudGF0aW9uXG4iKTsKKyNlbHNlCisgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiJVU6IGluY29uc2lzdGVudCB1c2Ugb2YgdGFicyBhbmQgc3BhY2VzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgImluIGluZGVudGF0aW9uXG4iLCB0b2stPmZpbGVuYW1lKTsKKyNlbmRpZgogICAgICAgICB0b2stPmFsdHdhcm5pbmcgPSAwOwogICAgIH0KICAgICByZXR1cm4gMDsKQEAgLTEyNjAsMTQgKzEyNjAsMTYgQEAKICNpZmRlZiBQR0VOCiAjZGVmaW5lIHZlcmlmeV9pZGVudGlmaWVyKHRvaykgMQogI2Vsc2UKLS8qIFZlcmlmeSB0aGF0IHRoZSBpZGVudGlmaWVyIGZvbGxvd3MgUEVQIDMxMzEuICovCisvKiBWZXJpZnkgdGhhdCB0aGUgaWRlbnRpZmllciBmb2xsb3dzIFBFUCAzMTMxLgorICAgQWxsIGlkZW50aWZpZXIgc3RyaW5ncyBhcmUgZ3VhcmFudGVlZCB0byBiZSAicmVhZHkiIHVuaWNvZGUgb2JqZWN0cy4KKyAqLwogc3RhdGljIGludAogdmVyaWZ5X2lkZW50aWZpZXIoc3RydWN0IHRva19zdGF0ZSAqdG9rKQogewogICAgIFB5T2JqZWN0ICpzOwogICAgIGludCByZXN1bHQ7CiAgICAgcyA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KHRvay0+c3RhcnQsIHRvay0+Y3VyIC0gdG9rLT5zdGFydCwgTlVMTCk7Ci0gICAgaWYgKHMgPT0gTlVMTCkgeworICAgIGlmIChzID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHMpID09IC0xKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcikpIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX0lERU5USUZJRVI7CkBAIC0xNDEwLDEzICsxNDEyLDIwIEBACiAgICAgLyogSWRlbnRpZmllciAobW9zdCBmcmVxdWVudCB0b2tlbiEpICovCiAgICAgbm9uYXNjaWkgPSAwOwogICAgIGlmIChpc19wb3RlbnRpYWxfaWRlbnRpZmllcl9zdGFydChjKSkgewotICAgICAgICAvKiBQcm9jZXNzIGIiIiwgciIiIGFuZCBiciIiICovCi0gICAgICAgIGlmIChjID09ICdiJyB8fCBjID09ICdCJykgewotICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgaWYgKGMgPT0gJyInIHx8IGMgPT0gJ1wnJykKLSAgICAgICAgICAgICAgICBnb3RvIGxldHRlcl9xdW90ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoYyA9PSAncicgfHwgYyA9PSAnUicpIHsKKyAgICAgICAgLyogUHJvY2VzcyBiIiIsIHIiIiwgdSIiLCBiciIiIGFuZCByYiIiICovCisgICAgICAgIGludCBzYXdfYiA9IDAsIHNhd19yID0gMCwgc2F3X3UgPSAwOworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgaWYgKCEoc2F3X2IgfHwgc2F3X3UpICYmIChjID09ICdiJyB8fCBjID09ICdCJykpCisgICAgICAgICAgICAgICAgc2F3X2IgPSAxOworICAgICAgICAgICAgLyogU2luY2UgdGhpcyBpcyBhIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHN1cHBvcnQgbGl0ZXJhbCB3ZSBkb24ndAorICAgICAgICAgICAgICAgd2FudCB0byBzdXBwb3J0IGl0IGluIGFyYml0cmFyeSBvcmRlciBsaWtlIGJ5dGUgbGl0ZXJhbHMuICovCisgICAgICAgICAgICBlbHNlIGlmICghKHNhd19iIHx8IHNhd191IHx8IHNhd19yKSAmJiAoYyA9PSAndScgfHwgYyA9PSAnVScpKQorICAgICAgICAgICAgICAgIHNhd191ID0gMTsKKyAgICAgICAgICAgIC8qIHVyIiIgYW5kIHJ1IiIgYXJlIG5vdCBzdXBwb3J0ZWQgKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKCEoc2F3X3IgfHwgc2F3X3UpICYmIChjID09ICdyJyB8fCBjID09ICdSJykpCisgICAgICAgICAgICAgICAgc2F3X3IgPSAxOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwogICAgICAgICAgICAgaWYgKGMgPT0gJyInIHx8IGMgPT0gJ1wnJykKICAgICAgICAgICAgICAgICBnb3RvIGxldHRlcl9xdW90ZTsKQEAgLTE2OTIsMTcgKzE3MDEsMTggQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0vKiBHZXQgLSotIGVuY29kaW5nIC0qLSBmcm9tIGEgUHl0aG9uIGZpbGUuCisvKiBHZXQgdGhlIGVuY29kaW5nIG9mIGEgUHl0aG9uIGZpbGUuIENoZWNrIGZvciB0aGUgY29kaW5nIGNvb2tpZSBhbmQgY2hlY2sgaWYKKyAgIHRoZSBmaWxlIHN0YXJ0cyB3aXRoIGEgQk9NLgogCi0gICBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmcgcmV0dXJucyBOVUxMIHdoZW4gaXQgY2FuJ3QgZmluZCB0aGUgZW5jb2RpbmcgaW4KLSAgIHRoZSBmaXJzdCBvciBzZWNvbmQgbGluZSBvZiB0aGUgZmlsZSAoaW4gd2hpY2ggY2FzZSB0aGUgZW5jb2RpbmcKLSAgIHNob3VsZCBiZSBhc3N1bWVkIHRvIGJlIFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcoKSkuCisgICBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmdGaWxlbmFtZSgpIHJldHVybnMgTlVMTCB3aGVuIGl0IGNhbid0IGZpbmQgdGhlCisgICBlbmNvZGluZyBpbiB0aGUgZmlyc3Qgb3Igc2Vjb25kIGxpbmUgb2YgdGhlIGZpbGUgKGluIHdoaWNoIGNhc2UgdGhlIGVuY29kaW5nCisgICBzaG91bGQgYmUgYXNzdW1lZCB0byBiZSBVVEYtOCkuCiAKLSAgIFRoZSBjaGFyICogcmV0dXJuZWQgaXMgbWFsbG9jJ2VkIHZpYSBQeU1lbV9NQUxMT0MoKSBhbmQgdGh1cyBtdXN0IGJlIGZyZWVkCi0gICBieSB0aGUgY2FsbGVyLgotKi8KKyAgIFRoZSBjaGFyKiByZXR1cm5lZCBpcyBtYWxsb2MnZWQgdmlhIFB5TWVtX01BTExPQygpIGFuZCB0aHVzIG11c3QgYmUgZnJlZWQKKyAgIGJ5IHRoZSBjYWxsZXIuICovCisKIGNoYXIgKgotUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nKGludCBmZCkKK1B5VG9rZW5pemVyX0ZpbmRFbmNvZGluZ0ZpbGVuYW1lKGludCBmZCwgUHlPYmplY3QgKmZpbGVuYW1lKQogewogICAgIHN0cnVjdCB0b2tfc3RhdGUgKnRvazsKICAgICBGSUxFICpmcDsKQEAgLTE3MjEsNiArMTczMSwyMCBAQAogICAgICAgICBmY2xvc2UoZnApOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisjaWZuZGVmIFBHRU4KKyAgICBpZiAoZmlsZW5hbWUgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoZmlsZW5hbWUpOworICAgICAgICB0b2stPmZpbGVuYW1lID0gZmlsZW5hbWU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB0b2stPmZpbGVuYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxzdHJpbmc+Iik7CisgICAgICAgIGlmICh0b2stPmZpbGVuYW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgIGZjbG9zZShmcCk7CisgICAgICAgICAgICBQeVRva2VuaXplcl9GcmVlKHRvayk7CisgICAgICAgICAgICByZXR1cm4gZW5jb2Rpbmc7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKICAgICB3aGlsZSAodG9rLT5saW5lbm8gPCAyICYmIHRvay0+ZG9uZSA9PSBFX09LKSB7CiAgICAgICAgIFB5VG9rZW5pemVyX0dldCh0b2ssICZwX3N0YXJ0LCAmcF9lbmQpOwogICAgIH0KQEAgLTE3MzQsNiArMTc1OCwxMiBAQAogICAgIHJldHVybiBlbmNvZGluZzsKIH0KIAorY2hhciAqCitQeVRva2VuaXplcl9GaW5kRW5jb2RpbmcoaW50IGZkKQoreworICAgIHJldHVybiBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmdGaWxlbmFtZShmZCwgTlVMTCk7Cit9CisKICNpZmRlZiBQeV9ERUJVRwogCiB2b2lkCmRpZmYgLS1naXQgYS9QYXJzZXIvdG9rZW5pemVyLmggYi9QYXJzZXIvdG9rZW5pemVyLmgKaW5kZXggMmJlM2JmMi4uZWQxZjNhYSAxMDA2NDQKLS0tIGEvUGFyc2VyL3Rva2VuaXplci5oCisrKyBiL1BhcnNlci90b2tlbml6ZXIuaApAQCAtNDAsNyArNDAsMTMgQEAKICAgICBpbnQgbGV2ZWw7ICAgICAgICAgIC8qICgpIFtdIHt9IFBhcmVudGhlc2VzIG5lc3RpbmcgbGV2ZWwgKi8KICAgICAgICAgICAgIC8qIFVzZWQgdG8gYWxsb3cgZnJlZSBjb250aW51YXRpb25zIGluc2lkZSB0aGVtICovCiAgICAgLyogU3R1ZmYgZm9yIGNoZWNraW5nIG9uIGRpZmZlcmVudCB0YWIgc2l6ZXMgKi8KLSAgICBjb25zdCBjaGFyICpmaWxlbmFtZTsgICAvKiBlbmNvZGVkIHRvIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nICovCisjaWZuZGVmIFBHRU4KKyAgICAvKiBwZ2VuIGRvZXNuJ3QgaGF2ZSBhY2Nlc3MgdG8gUHl0aG9uIGNvZGVjcywgaXQgY2Fubm90IGRlY29kZSB0aGUgaW5wdXQKKyAgICAgICBmaWxlbmFtZS4gVGhlIGJ5dGVzIGZpbGVuYW1lIG1pZ2h0IGJlIGtlcHQsIGJ1dCBpdCBpcyBvbmx5IHVzZWQgYnkKKyAgICAgICBpbmRlbnRlcnJvcigpIGFuZCBpdCBpcyBub3QgcmVhbGx5IG5lZWRlZDogcGdlbiBvbmx5IGNvbXBpbGVzIG9uZSBmaWxlCisgICAgICAgKEdyYW1tYXIvR3JhbW1hcikuICovCisgICAgUHlPYmplY3QgKmZpbGVuYW1lOworI2VuZGlmCiAgICAgaW50IGFsdHdhcm5pbmc7ICAgICAvKiBJc3N1ZSB3YXJuaW5nIGlmIGFsdGVybmF0ZSB0YWJzIGRvbid0IG1hdGNoICovCiAgICAgaW50IGFsdGVycm9yOyAgICAgICAvKiBJc3N1ZSBlcnJvciBpZiBhbHRlcm5hdGUgdGFicyBkb24ndCBtYXRjaCAqLwogICAgIGludCBhbHR0YWJzaXplOyAgICAgLyogQWx0ZXJuYXRlIHRhYiBzcGFjaW5nICovCkBAIC02OSw3ICs3NSw2IEBACiBleHRlcm4gaW50IFB5VG9rZW5pemVyX0dldChzdHJ1Y3QgdG9rX3N0YXRlICosIGNoYXIgKiosIGNoYXIgKiopOwogZXh0ZXJuIGNoYXIgKiBQeVRva2VuaXplcl9SZXN0b3JlRW5jb2Rpbmcoc3RydWN0IHRva19zdGF0ZSogdG9rLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbiwgaW50ICpvZmZzZXQpOwotZXh0ZXJuIGNoYXIgKiBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmcoaW50KTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9QeXRob24vUHl0aG9uLWFzdC5jIGIvUHl0aG9uL1B5dGhvbi1hc3QuYwppbmRleCBhMjc2YjZjLi5lNmYxZTU4IDEwMDY0NAotLS0gYS9QeXRob24vUHl0aG9uLWFzdC5jCisrKyBiL1B5dGhvbi9QeXRob24tYXN0LmMKQEAgLTEsMTMgKzEsNiBAQAogLyogRmlsZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBQYXJzZXIvYXNkbF9jLnB5LiAqLwogCi0KLS8qCi0gICBfX3ZlcnNpb25fXyA4MjE2My4KLQotICAgVGhpcyBtb2R1bGUgbXVzdCBiZSBjb21taXR0ZWQgc2VwYXJhdGVseSBhZnRlciBlYWNoIEFTVCBncmFtbWFyIGNoYW5nZTsKLSAgIFRoZSBfX3ZlcnNpb25fXyBudW1iZXIgaXMgc2V0IHRvIHRoZSByZXZpc2lvbiBudW1iZXIgb2YgdGhlIGNvbW1pdAotICAgY29udGFpbmluZyB0aGUgZ3JhbW1hciBjaGFuZ2UuCi0qLworI2luY2x1ZGUgPHN0ZGRlZi5oPgogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiUHl0aG9uLWFzdC5oIgpAQCAtMTYsNiArOSw3IEBACiBzdGF0aWMgUHlUeXBlT2JqZWN0ICptb2RfdHlwZTsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9tb2Qodm9pZCopOwogc3RhdGljIFB5VHlwZU9iamVjdCAqTW9kdWxlX3R5cGU7CitfUHlfSURFTlRJRklFUihib2R5KTsKIHN0YXRpYyBjaGFyICpNb2R1bGVfZmllbGRzW109ewogICAgICAgICAiYm9keSIsCiB9OwpAQCAtMzIsMTIgKzI2LDE4IEBACiAgICAgICAgICJib2R5IiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpzdG10X3R5cGU7CitfUHlfSURFTlRJRklFUihsaW5lbm8pOworX1B5X0lERU5USUZJRVIoY29sX29mZnNldCk7CiBzdGF0aWMgY2hhciAqc3RtdF9hdHRyaWJ1dGVzW10gPSB7CiAgICAgICAgICJsaW5lbm8iLAogICAgICAgICAiY29sX29mZnNldCIsCiB9Owogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX3N0bXQodm9pZCopOwogc3RhdGljIFB5VHlwZU9iamVjdCAqRnVuY3Rpb25EZWZfdHlwZTsKK19QeV9JREVOVElGSUVSKG5hbWUpOworX1B5X0lERU5USUZJRVIoYXJncyk7CitfUHlfSURFTlRJRklFUihkZWNvcmF0b3JfbGlzdCk7CitfUHlfSURFTlRJRklFUihyZXR1cm5zKTsKIHN0YXRpYyBjaGFyICpGdW5jdGlvbkRlZl9maWVsZHNbXT17CiAgICAgICAgICJuYW1lIiwKICAgICAgICAgImFyZ3MiLApAQCAtNDYsNiArNDYsMTAgQEAKICAgICAgICAgInJldHVybnMiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkNsYXNzRGVmX3R5cGU7CitfUHlfSURFTlRJRklFUihiYXNlcyk7CitfUHlfSURFTlRJRklFUihrZXl3b3Jkcyk7CitfUHlfSURFTlRJRklFUihzdGFyYXJncyk7CitfUHlfSURFTlRJRklFUihrd2FyZ3MpOwogc3RhdGljIGNoYXIgKkNsYXNzRGVmX2ZpZWxkc1tdPXsKICAgICAgICAgIm5hbWUiLAogICAgICAgICAiYmFzZXMiLApAQCAtNTYsMTAgKzYwLDEyIEBACiAgICAgICAgICJkZWNvcmF0b3JfbGlzdCIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqUmV0dXJuX3R5cGU7CitfUHlfSURFTlRJRklFUih2YWx1ZSk7CiBzdGF0aWMgY2hhciAqUmV0dXJuX2ZpZWxkc1tdPXsKICAgICAgICAgInZhbHVlIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpEZWxldGVfdHlwZTsKK19QeV9JREVOVElGSUVSKHRhcmdldHMpOwogc3RhdGljIGNoYXIgKkRlbGV0ZV9maWVsZHNbXT17CiAgICAgICAgICJ0YXJnZXRzIiwKIH07CkBAIC02OSwxMiArNzUsMTYgQEAKICAgICAgICAgInZhbHVlIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpBdWdBc3NpZ25fdHlwZTsKK19QeV9JREVOVElGSUVSKHRhcmdldCk7CitfUHlfSURFTlRJRklFUihvcCk7CiBzdGF0aWMgY2hhciAqQXVnQXNzaWduX2ZpZWxkc1tdPXsKICAgICAgICAgInRhcmdldCIsCiAgICAgICAgICJvcCIsCiAgICAgICAgICJ2YWx1ZSIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqRm9yX3R5cGU7CitfUHlfSURFTlRJRklFUihpdGVyKTsKK19QeV9JREVOVElGSUVSKG9yZWxzZSk7CiBzdGF0aWMgY2hhciAqRm9yX2ZpZWxkc1tdPXsKICAgICAgICAgInRhcmdldCIsCiAgICAgICAgICJpdGVyIiwKQEAgLTgyLDYgKzkyLDcgQEAKICAgICAgICAgIm9yZWxzZSIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqV2hpbGVfdHlwZTsKK19QeV9JREVOVElGSUVSKHRlc3QpOwogc3RhdGljIGNoYXIgKldoaWxlX2ZpZWxkc1tdPXsKICAgICAgICAgInRlc3QiLAogICAgICAgICAiYm9keSIsCkBAIC05NCwzNyArMTA1LDQxIEBACiAgICAgICAgICJvcmVsc2UiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKldpdGhfdHlwZTsKK19QeV9JREVOVElGSUVSKGl0ZW1zKTsKIHN0YXRpYyBjaGFyICpXaXRoX2ZpZWxkc1tdPXsKLSAgICAgICAgImNvbnRleHRfZXhwciIsCi0gICAgICAgICJvcHRpb25hbF92YXJzIiwKKyAgICAgICAgIml0ZW1zIiwKICAgICAgICAgImJvZHkiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKlJhaXNlX3R5cGU7CitfUHlfSURFTlRJRklFUihleGMpOworX1B5X0lERU5USUZJRVIoY2F1c2UpOwogc3RhdGljIGNoYXIgKlJhaXNlX2ZpZWxkc1tdPXsKICAgICAgICAgImV4YyIsCiAgICAgICAgICJjYXVzZSIsCiB9Owotc3RhdGljIFB5VHlwZU9iamVjdCAqVHJ5RXhjZXB0X3R5cGU7Ci1zdGF0aWMgY2hhciAqVHJ5RXhjZXB0X2ZpZWxkc1tdPXsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKlRyeV90eXBlOworX1B5X0lERU5USUZJRVIoaGFuZGxlcnMpOworX1B5X0lERU5USUZJRVIoZmluYWxib2R5KTsKK3N0YXRpYyBjaGFyICpUcnlfZmllbGRzW109ewogICAgICAgICAiYm9keSIsCiAgICAgICAgICJoYW5kbGVycyIsCiAgICAgICAgICJvcmVsc2UiLAotfTsKLXN0YXRpYyBQeVR5cGVPYmplY3QgKlRyeUZpbmFsbHlfdHlwZTsKLXN0YXRpYyBjaGFyICpUcnlGaW5hbGx5X2ZpZWxkc1tdPXsKLSAgICAgICAgImJvZHkiLAogICAgICAgICAiZmluYWxib2R5IiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpBc3NlcnRfdHlwZTsKK19QeV9JREVOVElGSUVSKG1zZyk7CiBzdGF0aWMgY2hhciAqQXNzZXJ0X2ZpZWxkc1tdPXsKICAgICAgICAgInRlc3QiLAogICAgICAgICAibXNnIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpJbXBvcnRfdHlwZTsKK19QeV9JREVOVElGSUVSKG5hbWVzKTsKIHN0YXRpYyBjaGFyICpJbXBvcnRfZmllbGRzW109ewogICAgICAgICAibmFtZXMiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkltcG9ydEZyb21fdHlwZTsKK19QeV9JREVOVElGSUVSKG1vZHVsZSk7CitfUHlfSURFTlRJRklFUihsZXZlbCk7CiBzdGF0aWMgY2hhciAqSW1wb3J0RnJvbV9maWVsZHNbXT17CiAgICAgICAgICJtb2R1bGUiLAogICAgICAgICAibmFtZXMiLApAQCAtMTUyLDE3ICsxNjcsMjEgQEAKIH07CiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfZXhwcih2b2lkKik7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpCb29sT3BfdHlwZTsKK19QeV9JREVOVElGSUVSKHZhbHVlcyk7CiBzdGF0aWMgY2hhciAqQm9vbE9wX2ZpZWxkc1tdPXsKICAgICAgICAgIm9wIiwKICAgICAgICAgInZhbHVlcyIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqQmluT3BfdHlwZTsKK19QeV9JREVOVElGSUVSKGxlZnQpOworX1B5X0lERU5USUZJRVIocmlnaHQpOwogc3RhdGljIGNoYXIgKkJpbk9wX2ZpZWxkc1tdPXsKICAgICAgICAgImxlZnQiLAogICAgICAgICAib3AiLAogICAgICAgICAicmlnaHQiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKlVuYXJ5T3BfdHlwZTsKK19QeV9JREVOVElGSUVSKG9wZXJhbmQpOwogc3RhdGljIGNoYXIgKlVuYXJ5T3BfZmllbGRzW109ewogICAgICAgICAib3AiLAogICAgICAgICAib3BlcmFuZCIsCkBAIC0xNzksMTUgKzE5OCwxOSBAQAogICAgICAgICAib3JlbHNlIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpEaWN0X3R5cGU7CitfUHlfSURFTlRJRklFUihrZXlzKTsKIHN0YXRpYyBjaGFyICpEaWN0X2ZpZWxkc1tdPXsKICAgICAgICAgImtleXMiLAogICAgICAgICAidmFsdWVzIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpTZXRfdHlwZTsKK19QeV9JREVOVElGSUVSKGVsdHMpOwogc3RhdGljIGNoYXIgKlNldF9maWVsZHNbXT17CiAgICAgICAgICJlbHRzIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpMaXN0Q29tcF90eXBlOworX1B5X0lERU5USUZJRVIoZWx0KTsKK19QeV9JREVOVElGSUVSKGdlbmVyYXRvcnMpOwogc3RhdGljIGNoYXIgKkxpc3RDb21wX2ZpZWxkc1tdPXsKICAgICAgICAgImVsdCIsCiAgICAgICAgICJnZW5lcmF0b3JzIiwKQEAgLTE5OCw2ICsyMjEsNyBAQAogICAgICAgICAiZ2VuZXJhdG9ycyIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqRGljdENvbXBfdHlwZTsKK19QeV9JREVOVElGSUVSKGtleSk7CiBzdGF0aWMgY2hhciAqRGljdENvbXBfZmllbGRzW109ewogICAgICAgICAia2V5IiwKICAgICAgICAgInZhbHVlIiwKQEAgLTIxMiwxMyArMjM2LDIwIEBACiBzdGF0aWMgY2hhciAqWWllbGRfZmllbGRzW109ewogICAgICAgICAidmFsdWUiLAogfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKllpZWxkRnJvbV90eXBlOworc3RhdGljIGNoYXIgKllpZWxkRnJvbV9maWVsZHNbXT17CisgICAgICAgICJ2YWx1ZSIsCit9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqQ29tcGFyZV90eXBlOworX1B5X0lERU5USUZJRVIob3BzKTsKK19QeV9JREVOVElGSUVSKGNvbXBhcmF0b3JzKTsKIHN0YXRpYyBjaGFyICpDb21wYXJlX2ZpZWxkc1tdPXsKICAgICAgICAgImxlZnQiLAogICAgICAgICAib3BzIiwKICAgICAgICAgImNvbXBhcmF0b3JzIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpDYWxsX3R5cGU7CitfUHlfSURFTlRJRklFUihmdW5jKTsKIHN0YXRpYyBjaGFyICpDYWxsX2ZpZWxkc1tdPXsKICAgICAgICAgImZ1bmMiLAogICAgICAgICAiYXJncyIsCkBAIC0yMjcsMTAgKzI1OCwxMiBAQAogICAgICAgICAia3dhcmdzIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpOdW1fdHlwZTsKK19QeV9JREVOVElGSUVSKG4pOwogc3RhdGljIGNoYXIgKk51bV9maWVsZHNbXT17CiAgICAgICAgICJuIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpTdHJfdHlwZTsKK19QeV9JREVOVElGSUVSKHMpOwogc3RhdGljIGNoYXIgKlN0cl9maWVsZHNbXT17CiAgICAgICAgICJzIiwKIH07CkBAIC0yNDAsMTIgKzI3MywxNSBAQAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkVsbGlwc2lzX3R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpBdHRyaWJ1dGVfdHlwZTsKK19QeV9JREVOVElGSUVSKGF0dHIpOworX1B5X0lERU5USUZJRVIoY3R4KTsKIHN0YXRpYyBjaGFyICpBdHRyaWJ1dGVfZmllbGRzW109ewogICAgICAgICAidmFsdWUiLAogICAgICAgICAiYXR0ciIsCiAgICAgICAgICJjdHgiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKlN1YnNjcmlwdF90eXBlOworX1B5X0lERU5USUZJRVIoc2xpY2UpOwogc3RhdGljIGNoYXIgKlN1YnNjcmlwdF9maWVsZHNbXT17CiAgICAgICAgICJ2YWx1ZSIsCiAgICAgICAgICJzbGljZSIsCkBAIC0yNTcsNiArMjkzLDcgQEAKICAgICAgICAgImN0eCIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqTmFtZV90eXBlOworX1B5X0lERU5USUZJRVIoaWQpOwogc3RhdGljIGNoYXIgKk5hbWVfZmllbGRzW109ewogICAgICAgICAiaWQiLAogICAgICAgICAiY3R4IiwKQEAgLTI4NCwxMiArMzIxLDE2IEBACiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpzbGljZV90eXBlOwogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX3NsaWNlKHZvaWQqKTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKlNsaWNlX3R5cGU7CitfUHlfSURFTlRJRklFUihsb3dlcik7CitfUHlfSURFTlRJRklFUih1cHBlcik7CitfUHlfSURFTlRJRklFUihzdGVwKTsKIHN0YXRpYyBjaGFyICpTbGljZV9maWVsZHNbXT17CiAgICAgICAgICJsb3dlciIsCiAgICAgICAgICJ1cHBlciIsCiAgICAgICAgICJzdGVwIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpFeHRTbGljZV90eXBlOworX1B5X0lERU5USUZJRVIoZGltcyk7CiBzdGF0aWMgY2hhciAqRXh0U2xpY2VfZmllbGRzW109ewogICAgICAgICAiZGltcyIsCiB9OwpAQCAtMzQ1LDYgKzM4Niw3IEBACiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpOb3RJbl90eXBlOwogc3RhdGljIFB5VHlwZU9iamVjdCAqY29tcHJlaGVuc2lvbl90eXBlOwogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2NvbXByZWhlbnNpb24odm9pZCopOworX1B5X0lERU5USUZJRVIoaWZzKTsKIHN0YXRpYyBjaGFyICpjb21wcmVoZW5zaW9uX2ZpZWxkc1tdPXsKICAgICAgICAgInRhcmdldCIsCiAgICAgICAgICJpdGVyIiwKQEAgLTM1Nyw2ICszOTksNyBAQAogfTsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9leGNlcHRoYW5kbGVyKHZvaWQqKTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkV4Y2VwdEhhbmRsZXJfdHlwZTsKK19QeV9JREVOVElGSUVSKHR5cGUpOwogc3RhdGljIGNoYXIgKkV4Y2VwdEhhbmRsZXJfZmllbGRzW109ewogICAgICAgICAidHlwZSIsCiAgICAgICAgICJuYW1lIiwKQEAgLTM2NCw2ICs0MDcsMTMgQEAKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICphcmd1bWVudHNfdHlwZTsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9hcmd1bWVudHModm9pZCopOworX1B5X0lERU5USUZJRVIodmFyYXJnKTsKK19QeV9JREVOVElGSUVSKHZhcmFyZ2Fubm90YXRpb24pOworX1B5X0lERU5USUZJRVIoa3dvbmx5YXJncyk7CitfUHlfSURFTlRJRklFUihrd2FyZyk7CitfUHlfSURFTlRJRklFUihrd2FyZ2Fubm90YXRpb24pOworX1B5X0lERU5USUZJRVIoZGVmYXVsdHMpOworX1B5X0lERU5USUZJRVIoa3dfZGVmYXVsdHMpOwogc3RhdGljIGNoYXIgKmFyZ3VtZW50c19maWVsZHNbXT17CiAgICAgICAgICJhcmdzIiwKICAgICAgICAgInZhcmFyZyIsCkBAIC0zNzYsNiArNDI2LDggQEAKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICphcmdfdHlwZTsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9hcmcodm9pZCopOworX1B5X0lERU5USUZJRVIoYXJnKTsKK19QeV9JREVOVElGSUVSKGFubm90YXRpb24pOwogc3RhdGljIGNoYXIgKmFyZ19maWVsZHNbXT17CiAgICAgICAgICJhcmciLAogICAgICAgICAiYW5ub3RhdGlvbiIsCkBAIC0zODgsMTkgKzQ0MCw1NCBAQAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKmFsaWFzX3R5cGU7CiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfYWxpYXModm9pZCopOworX1B5X0lERU5USUZJRVIoYXNuYW1lKTsKIHN0YXRpYyBjaGFyICphbGlhc19maWVsZHNbXT17CiAgICAgICAgICJuYW1lIiwKICAgICAgICAgImFzbmFtZSIsCiB9Oworc3RhdGljIFB5VHlwZU9iamVjdCAqd2l0aGl0ZW1fdHlwZTsKK3N0YXRpYyBQeU9iamVjdCogYXN0Mm9ial93aXRoaXRlbSh2b2lkKik7CitfUHlfSURFTlRJRklFUihjb250ZXh0X2V4cHIpOworX1B5X0lERU5USUZJRVIob3B0aW9uYWxfdmFycyk7CitzdGF0aWMgY2hhciAqd2l0aGl0ZW1fZmllbGRzW109eworICAgICAgICAiY29udGV4dF9leHByIiwKKyAgICAgICAgIm9wdGlvbmFsX3ZhcnMiLAorfTsKIAogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5T2JqZWN0ICpkaWN0OworfSBBU1Rfb2JqZWN0OworCitzdGF0aWMgdm9pZAorYXN0X2RlYWxsb2MoQVNUX29iamVjdCAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT5kaWN0KTsKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKHNlbGYpOworfQorCitzdGF0aWMgaW50Cithc3RfdHJhdmVyc2UoQVNUX29iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+ZGljdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCithc3RfY2xlYXIoQVNUX29iamVjdCAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT5kaWN0KTsKK30KKwogc3RhdGljIGludAogYXN0X3R5cGVfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKKyAgICBfUHlfSURFTlRJRklFUihfZmllbGRzKTsKICAgICBQeV9zc2l6ZV90IGksIG51bWZpZWxkcyA9IDA7CiAgICAgaW50IHJlcyA9IC0xOwogICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZSwgKmZpZWxkczsKLSAgICBmaWVsZHMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCopUHlfVFlQRShzZWxmKSwgIl9maWVsZHMiKTsKKyAgICBmaWVsZHMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCopUHlfVFlQRShzZWxmKSwgJlB5SWRfX2ZpZWxkcyk7CiAgICAgaWYgKCFmaWVsZHMpCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgaWYgKGZpZWxkcykgewpAQCAtNDUwLDcgKzUzNyw4IEBACiBhc3RfdHlwZV9yZWR1Y2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKLSAgICBQeU9iamVjdCAqZGljdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc2VsZiwgIl9fZGljdF9fIik7CisgICAgX1B5X0lERU5USUZJRVIoX19kaWN0X18pOworICAgIFB5T2JqZWN0ICpkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtNDcwLDEyICs1NTgsMTcgQEAKICAgICB7TlVMTH0KIH07CiAKK3N0YXRpYyBQeUdldFNldERlZiBhc3RfdHlwZV9nZXRzZXRzW10gPSB7CisgICAgeyJfX2RpY3RfXyIsIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0LCBQeU9iamVjdF9HZW5lcmljU2V0RGljdH0sCisgICAge05VTEx9Cit9OworCiBzdGF0aWMgUHlUeXBlT2JqZWN0IEFTVF90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCiAgICAgIl9hc3QuQVNUIiwKLSAgICBzaXplb2YoUHlPYmplY3QpLAorICAgIHNpemVvZihBU1Rfb2JqZWN0KSwKICAgICAwLAotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgKGRlc3RydWN0b3IpYXN0X2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCkBAIC00OTAsMjYgKzU4MywyNiBAQAogICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAvKiB0cF9nZXRhdHRybyAqLwogICAgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyLCAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLCAvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsIC8qIHRwX2ZsYWdzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgICh0cmF2ZXJzZXByb2MpYXN0X3RyYXZlcnNlLCAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KWFzdF9jbGVhciwgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgYXN0X3R5cGVfbWV0aG9kcywgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICBhc3RfdHlwZV9nZXRzZXRzLCAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICBvZmZzZXRvZihBU1Rfb2JqZWN0LCBkaWN0KSwvKiB0cF9kaWN0b2Zmc2V0ICovCiAgICAgKGluaXRwcm9jKWFzdF90eXBlX2luaXQsIC8qIHRwX2luaXQgKi8KICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgLyogdHBfYWxsb2MgKi8KICAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgLyogdHBfbmV3ICovCi0gICAgUHlPYmplY3RfRGVsLCAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAogCkBAIC01MzYsNiArNjI5LDcgQEAKIHN0YXRpYyBpbnQgYWRkX2F0dHJpYnV0ZXMoUHlUeXBlT2JqZWN0KiB0eXBlLCBjaGFyKiphdHRycywgaW50IG51bV9maWVsZHMpCiB7CiAgICAgaW50IGksIHJlc3VsdDsKKyAgICBfUHlfSURFTlRJRklFUihfYXR0cmlidXRlcyk7CiAgICAgUHlPYmplY3QgKnMsICpsID0gUHlUdXBsZV9OZXcobnVtX2ZpZWxkcyk7CiAgICAgaWYgKCFsKQogICAgICAgICByZXR1cm4gMDsKQEAgLTU0Nyw3ICs2NDEsNyBAQAogICAgICAgICB9CiAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obCwgaSwgcyk7CiAgICAgfQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X1NldEF0dHJTdHJpbmcoKFB5T2JqZWN0Kil0eXBlLCAiX2F0dHJpYnV0ZXMiLCBsKSA+PSAwOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9TZXRBdHRySWQoKFB5T2JqZWN0Kil0eXBlLCAmUHlJZF9fYXR0cmlidXRlcywgbCkgPj0gMDsKICAgICBQeV9ERUNSRUYobCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTU1Niw3ICs2NTAsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfbGlzdChhc2RsX3NlcSAqc2VxLCBQeU9iamVjdCogKCpmdW5jKSh2b2lkKikpCiB7Ci0gICAgaW50IGksIG4gPSBhc2RsX3NlcV9MRU4oc2VxKTsKKyAgICBQeV9zc2l6ZV90IGksIG4gPSBhc2RsX3NlcV9MRU4oc2VxKTsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlMaXN0X05ldyhuKTsKICAgICBQeU9iamVjdCAqdmFsdWU7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC01ODEsNiArNjc1LDcgQEAKIH0KICNkZWZpbmUgYXN0Mm9ial9pZGVudGlmaWVyIGFzdDJvYmpfb2JqZWN0CiAjZGVmaW5lIGFzdDJvYmpfc3RyaW5nIGFzdDJvYmpfb2JqZWN0CisjZGVmaW5lIGFzdDJvYmpfYnl0ZXMgYXN0Mm9ial9vYmplY3QKIAogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2ludChsb25nIGIpCiB7CkBAIC02MTgsNiArNzEzLDE1IEBACiAgICAgcmV0dXJuIG9iajJhc3Rfb2JqZWN0KG9iaiwgb3V0LCBhcmVuYSk7CiB9CiAKK3N0YXRpYyBpbnQgb2JqMmFzdF9ieXRlcyhQeU9iamVjdCogb2JqLCBQeU9iamVjdCoqIG91dCwgUHlBcmVuYSogYXJlbmEpCit7CisgICAgaWYgKCFQeUJ5dGVzX0NoZWNrRXhhY3Qob2JqKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiQVNUIGJ5dGVzIG11c3QgYmUgb2YgdHlwZSBieXRlcyIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIG9iajJhc3Rfb2JqZWN0KG9iaiwgb3V0LCBhcmVuYSk7Cit9CisKIHN0YXRpYyBpbnQgb2JqMmFzdF9pbnQoUHlPYmplY3QqIG9iaiwgaW50KiBvdXQsIFB5QXJlbmEqIGFyZW5hKQogewogICAgIGludCBpOwpAQCAtNjkxLDE1ICs3OTUsMTIgQEAKICAgICAgICAgaWYgKCFXaGlsZV90eXBlKSByZXR1cm4gMDsKICAgICAgICAgSWZfdHlwZSA9IG1ha2VfdHlwZSgiSWYiLCBzdG10X3R5cGUsIElmX2ZpZWxkcywgMyk7CiAgICAgICAgIGlmICghSWZfdHlwZSkgcmV0dXJuIDA7Ci0gICAgICAgIFdpdGhfdHlwZSA9IG1ha2VfdHlwZSgiV2l0aCIsIHN0bXRfdHlwZSwgV2l0aF9maWVsZHMsIDMpOworICAgICAgICBXaXRoX3R5cGUgPSBtYWtlX3R5cGUoIldpdGgiLCBzdG10X3R5cGUsIFdpdGhfZmllbGRzLCAyKTsKICAgICAgICAgaWYgKCFXaXRoX3R5cGUpIHJldHVybiAwOwogICAgICAgICBSYWlzZV90eXBlID0gbWFrZV90eXBlKCJSYWlzZSIsIHN0bXRfdHlwZSwgUmFpc2VfZmllbGRzLCAyKTsKICAgICAgICAgaWYgKCFSYWlzZV90eXBlKSByZXR1cm4gMDsKLSAgICAgICAgVHJ5RXhjZXB0X3R5cGUgPSBtYWtlX3R5cGUoIlRyeUV4Y2VwdCIsIHN0bXRfdHlwZSwgVHJ5RXhjZXB0X2ZpZWxkcywgMyk7Ci0gICAgICAgIGlmICghVHJ5RXhjZXB0X3R5cGUpIHJldHVybiAwOwotICAgICAgICBUcnlGaW5hbGx5X3R5cGUgPSBtYWtlX3R5cGUoIlRyeUZpbmFsbHkiLCBzdG10X3R5cGUsIFRyeUZpbmFsbHlfZmllbGRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMik7Ci0gICAgICAgIGlmICghVHJ5RmluYWxseV90eXBlKSByZXR1cm4gMDsKKyAgICAgICAgVHJ5X3R5cGUgPSBtYWtlX3R5cGUoIlRyeSIsIHN0bXRfdHlwZSwgVHJ5X2ZpZWxkcywgNCk7CisgICAgICAgIGlmICghVHJ5X3R5cGUpIHJldHVybiAwOwogICAgICAgICBBc3NlcnRfdHlwZSA9IG1ha2VfdHlwZSgiQXNzZXJ0Iiwgc3RtdF90eXBlLCBBc3NlcnRfZmllbGRzLCAyKTsKICAgICAgICAgaWYgKCFBc3NlcnRfdHlwZSkgcmV0dXJuIDA7CiAgICAgICAgIEltcG9ydF90eXBlID0gbWFrZV90eXBlKCJJbXBvcnQiLCBzdG10X3R5cGUsIEltcG9ydF9maWVsZHMsIDEpOwpAQCAtNzQ3LDYgKzg0OCw4IEBACiAgICAgICAgIGlmICghR2VuZXJhdG9yRXhwX3R5cGUpIHJldHVybiAwOwogICAgICAgICBZaWVsZF90eXBlID0gbWFrZV90eXBlKCJZaWVsZCIsIGV4cHJfdHlwZSwgWWllbGRfZmllbGRzLCAxKTsKICAgICAgICAgaWYgKCFZaWVsZF90eXBlKSByZXR1cm4gMDsKKyAgICAgICAgWWllbGRGcm9tX3R5cGUgPSBtYWtlX3R5cGUoIllpZWxkRnJvbSIsIGV4cHJfdHlwZSwgWWllbGRGcm9tX2ZpZWxkcywgMSk7CisgICAgICAgIGlmICghWWllbGRGcm9tX3R5cGUpIHJldHVybiAwOwogICAgICAgICBDb21wYXJlX3R5cGUgPSBtYWtlX3R5cGUoIkNvbXBhcmUiLCBleHByX3R5cGUsIENvbXBhcmVfZmllbGRzLCAzKTsKICAgICAgICAgaWYgKCFDb21wYXJlX3R5cGUpIHJldHVybiAwOwogICAgICAgICBDYWxsX3R5cGUgPSBtYWtlX3R5cGUoIkNhbGwiLCBleHByX3R5cGUsIENhbGxfZmllbGRzLCA1KTsKQEAgLTk0OSw2ICsxMDUyLDggQEAKICAgICAgICAgaWYgKCFrZXl3b3JkX3R5cGUpIHJldHVybiAwOwogICAgICAgICBhbGlhc190eXBlID0gbWFrZV90eXBlKCJhbGlhcyIsICZBU1RfdHlwZSwgYWxpYXNfZmllbGRzLCAyKTsKICAgICAgICAgaWYgKCFhbGlhc190eXBlKSByZXR1cm4gMDsKKyAgICAgICAgd2l0aGl0ZW1fdHlwZSA9IG1ha2VfdHlwZSgid2l0aGl0ZW0iLCAmQVNUX3R5cGUsIHdpdGhpdGVtX2ZpZWxkcywgMik7CisgICAgICAgIGlmICghd2l0aGl0ZW1fdHlwZSkgcmV0dXJuIDA7CiAgICAgICAgIGluaXRpYWxpemVkID0gMTsKICAgICAgICAgcmV0dXJuIDE7CiB9CkBAIC05NzEsNiArMTA3Niw3IEBACiBzdGF0aWMgaW50IG9iajJhc3RfYXJnKFB5T2JqZWN0KiBvYmosIGFyZ190eSogb3V0LCBQeUFyZW5hKiBhcmVuYSk7CiBzdGF0aWMgaW50IG9iajJhc3Rfa2V5d29yZChQeU9iamVjdCogb2JqLCBrZXl3b3JkX3R5KiBvdXQsIFB5QXJlbmEqIGFyZW5hKTsKIHN0YXRpYyBpbnQgb2JqMmFzdF9hbGlhcyhQeU9iamVjdCogb2JqLCBhbGlhc190eSogb3V0LCBQeUFyZW5hKiBhcmVuYSk7CitzdGF0aWMgaW50IG9iajJhc3Rfd2l0aGl0ZW0oUHlPYmplY3QqIG9iaiwgd2l0aGl0ZW1fdHkqIG91dCwgUHlBcmVuYSogYXJlbmEpOwogCiBtb2RfdHkKIE1vZHVsZShhc2RsX3NlcSAqIGJvZHksIFB5QXJlbmEgKmFyZW5hKQpAQCAtMTIzNiwyMSArMTM0MiwxNSBAQAogfQogCiBzdG10X3R5Ci1XaXRoKGV4cHJfdHkgY29udGV4dF9leHByLCBleHByX3R5IG9wdGlvbmFsX3ZhcnMsIGFzZGxfc2VxICogYm9keSwgaW50IGxpbmVubywKLSAgICAgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQorV2l0aChhc2RsX3NlcSAqIGl0ZW1zLCBhc2RsX3NlcSAqIGJvZHksIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hCisgICAgICphcmVuYSkKIHsKICAgICAgICAgc3RtdF90eSBwOwotICAgICAgICBpZiAoIWNvbnRleHRfZXhwcikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgY29udGV4dF9leHByIGlzIHJlcXVpcmVkIGZvciBXaXRoIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICAgICAgcCA9IChzdG10X3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKICAgICAgICAgaWYgKCFwKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBwLT5raW5kID0gV2l0aF9raW5kOwotICAgICAgICBwLT52LldpdGguY29udGV4dF9leHByID0gY29udGV4dF9leHByOwotICAgICAgICBwLT52LldpdGgub3B0aW9uYWxfdmFycyA9IG9wdGlvbmFsX3ZhcnM7CisgICAgICAgIHAtPnYuV2l0aC5pdGVtcyA9IGl0ZW1zOwogICAgICAgICBwLT52LldpdGguYm9keSA9IGJvZHk7CiAgICAgICAgIHAtPmxpbmVubyA9IGxpbmVubzsKICAgICAgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CkBAIC0xMjczLDMzICsxMzczLDE4IEBACiB9CiAKIHN0bXRfdHkKLVRyeUV4Y2VwdChhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogaGFuZGxlcnMsIGFzZGxfc2VxICogb3JlbHNlLCBpbnQgbGluZW5vLAotICAgICAgICAgIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK1RyeShhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogaGFuZGxlcnMsIGFzZGxfc2VxICogb3JlbHNlLCBhc2RsX3NlcSAqCisgICAgZmluYWxib2R5LCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgICAgIHN0bXRfdHkgcDsKICAgICAgICAgcCA9IChzdG10X3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKICAgICAgICAgaWYgKCFwKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBwLT5raW5kID0gVHJ5RXhjZXB0X2tpbmQ7Ci0gICAgICAgIHAtPnYuVHJ5RXhjZXB0LmJvZHkgPSBib2R5OwotICAgICAgICBwLT52LlRyeUV4Y2VwdC5oYW5kbGVycyA9IGhhbmRsZXJzOwotICAgICAgICBwLT52LlRyeUV4Y2VwdC5vcmVsc2UgPSBvcmVsc2U7Ci0gICAgICAgIHAtPmxpbmVubyA9IGxpbmVubzsKLSAgICAgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7Ci0gICAgICAgIHJldHVybiBwOwotfQotCi1zdG10X3R5Ci1UcnlGaW5hbGx5KGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBmaW5hbGJvZHksIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LAotICAgICAgICAgICBQeUFyZW5hICphcmVuYSkKLXsKLSAgICAgICAgc3RtdF90eSBwOwotICAgICAgICBwID0gKHN0bXRfdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOwotICAgICAgICBpZiAoIXApCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHAtPmtpbmQgPSBUcnlGaW5hbGx5X2tpbmQ7Ci0gICAgICAgIHAtPnYuVHJ5RmluYWxseS5ib2R5ID0gYm9keTsKLSAgICAgICAgcC0+di5UcnlGaW5hbGx5LmZpbmFsYm9keSA9IGZpbmFsYm9keTsKKyAgICAgICAgcC0+a2luZCA9IFRyeV9raW5kOworICAgICAgICBwLT52LlRyeS5ib2R5ID0gYm9keTsKKyAgICAgICAgcC0+di5UcnkuaGFuZGxlcnMgPSBoYW5kbGVyczsKKyAgICAgICAgcC0+di5Ucnkub3JlbHNlID0gb3JlbHNlOworICAgICAgICBwLT52LlRyeS5maW5hbGJvZHkgPSBmaW5hbGJvZHk7CiAgICAgICAgIHAtPmxpbmVubyA9IGxpbmVubzsKICAgICAgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CiAgICAgICAgIHJldHVybiBwOwpAQCAtMTcxNCw2ICsxNzk5LDI1IEBACiB9CiAKIGV4cHJfdHkKK1lpZWxkRnJvbShleHByX3R5IHZhbHVlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgICAgIGV4cHJfdHkgcDsKKyAgICAgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgdmFsdWUgaXMgcmVxdWlyZWQgZm9yIFlpZWxkRnJvbSIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHAgPSAoZXhwcl90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgICAgIGlmICghcCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcC0+a2luZCA9IFlpZWxkRnJvbV9raW5kOworICAgICAgICBwLT52LllpZWxkRnJvbS52YWx1ZSA9IHZhbHVlOworICAgICAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OworICAgICAgICByZXR1cm4gcDsKK30KKworZXhwcl90eQogQ29tcGFyZShleHByX3R5IGxlZnQsIGFzZGxfaW50X3NlcSAqIG9wcywgYXNkbF9zZXEgKiBjb21wYXJhdG9ycywgaW50IGxpbmVubywKICAgICAgICAgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQogewpAQCAtMTc5OCw3ICsxOTAyLDcgQEAKIH0KIAogZXhwcl90eQotQnl0ZXMoc3RyaW5nIHMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK0J5dGVzKGJ5dGVzIHMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKICAgICAgICAgZXhwcl90eSBwOwogICAgICAgICBpZiAoIXMpIHsKQEAgLTIxNDYsNiArMjI1MCwyMyBAQAogICAgICAgICByZXR1cm4gcDsKIH0KIAord2l0aGl0ZW1fdHkKK3dpdGhpdGVtKGV4cHJfdHkgY29udGV4dF9leHByLCBleHByX3R5IG9wdGlvbmFsX3ZhcnMsIFB5QXJlbmEgKmFyZW5hKQoreworICAgICAgICB3aXRoaXRlbV90eSBwOworICAgICAgICBpZiAoIWNvbnRleHRfZXhwcikgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgY29udGV4dF9leHByIGlzIHJlcXVpcmVkIGZvciB3aXRoaXRlbSIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHAgPSAod2l0aGl0ZW1fdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOworICAgICAgICBpZiAoIXApCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHAtPmNvbnRleHRfZXhwciA9IGNvbnRleHRfZXhwcjsKKyAgICAgICAgcC0+b3B0aW9uYWxfdmFycyA9IG9wdGlvbmFsX3ZhcnM7CisgICAgICAgIHJldHVybiBwOworfQorCiAKIFB5T2JqZWN0KgogYXN0Mm9ial9tb2Qodm9pZCogX28pCkBAIC0yMTYzLDcgKzIyODQsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52Lk1vZHVsZS5ib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE3Miw3ICsyMjkzLDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5JbnRlcmFjdGl2ZS5ib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE4MSw3ICsyMzAyLDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5FeHByZXNzaW9uLmJvZHkpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE5MCw3ICsyMzExLDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5TdWl0ZS5ib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjIxOCwyOSArMjMzOSwyOSBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT52LkZ1bmN0aW9uRGVmLm5hbWUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm5hbWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9uYW1lLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9hcmd1bWVudHMoby0+di5GdW5jdGlvbkRlZi5hcmdzKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJhcmdzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYXJncywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkZ1bmN0aW9uRGVmLmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5GdW5jdGlvbkRlZi5kZWNvcmF0b3JfbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImRlY29yYXRvcl9saXN0IiwgdmFsdWUpID09CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9kZWNvcmF0b3JfbGlzdCwgdmFsdWUpID09CiAgICAgICAgICAgICAgICAgICAgIC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkZ1bmN0aW9uRGVmLnJldHVybnMpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInJldHVybnMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9yZXR1cm5zLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjI0OSwzOCArMjM3MCwzOCBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT52LkNsYXNzRGVmLm5hbWUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm5hbWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9uYW1lLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQ2xhc3NEZWYuYmFzZXMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYmFzZXMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9iYXNlcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkNsYXNzRGVmLmtleXdvcmRzLCBhc3Qyb2JqX2tleXdvcmQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImtleXdvcmRzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa2V5d29yZHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5DbGFzc0RlZi5zdGFyYXJncyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAic3RhcmFyZ3MiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9zdGFyYXJncywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkNsYXNzRGVmLmt3YXJncyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAia3dhcmdzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa3dhcmdzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQ2xhc3NEZWYuYm9keSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkNsYXNzRGVmLmRlY29yYXRvcl9saXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZGVjb3JhdG9yX2xpc3QiLCB2YWx1ZSkgPT0KKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2RlY29yYXRvcl9saXN0LCB2YWx1ZSkgPT0KICAgICAgICAgICAgICAgICAgICAgLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwpAQCAtMjI5MCw3ICsyNDExLDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5SZXR1cm4udmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjk5LDcgKzI0MjAsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkRlbGV0ZS50YXJnZXRzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInRhcmdldHMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90YXJnZXRzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjMwOCwxMiArMjQyOSwxMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkFzc2lnbi50YXJnZXRzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInRhcmdldHMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90YXJnZXRzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQXNzaWduLnZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjMyMiwxNyArMjQ0MywxNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkF1Z0Fzc2lnbi50YXJnZXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInRhcmdldCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3RhcmdldCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfb3BlcmF0b3Ioby0+di5BdWdBc3NpZ24ub3ApOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm9wIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3AsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5BdWdBc3NpZ24udmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMzQxLDIyICsyNDYyLDIyIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuRm9yLnRhcmdldCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidGFyZ2V0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdGFyZ2V0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuRm9yLml0ZXIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIml0ZXIiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9pdGVyLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuRm9yLmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Gb3Iub3JlbHNlLCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm9yZWxzZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX29yZWxzZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIzNjUsMTcgKzI0ODYsMTcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5XaGlsZS50ZXN0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ0ZXN0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdGVzdCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LldoaWxlLmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5XaGlsZS5vcmVsc2UsIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3JlbHNlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3JlbHNlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjM4NCwzNyArMjUwNSwzMSBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LklmLnRlc3QpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInRlc3QiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90ZXN0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuSWYuYm9keSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LklmLm9yZWxzZSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJvcmVsc2UiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcmVsc2UsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2l0aF9raW5kOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KFdpdGhfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuV2l0aC5jb250ZXh0X2V4cHIpOworICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuV2l0aC5pdGVtcywgYXN0Mm9ial93aXRoaXRlbSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY29udGV4dF9leHByIiwgdmFsdWUpID09IC0xKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LldpdGgub3B0aW9uYWxfdmFycyk7Ci0gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3B0aW9uYWxfdmFycyIsIHZhbHVlKSA9PQotICAgICAgICAgICAgICAgICAgICAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2l0ZW1zLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuV2l0aC5ib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjQyMyw0NiArMjUzOCwzNiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LlJhaXNlLmV4Yyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZXhjIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZXhjLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuUmFpc2UuY2F1c2UpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImNhdXNlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY2F1c2UsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVHJ5RXhjZXB0X2tpbmQ6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoVHJ5RXhjZXB0X3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBjYXNlIFRyeV9raW5kOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KFRyeV90eXBlLCBOVUxMLCBOVUxMKTsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5UcnlFeGNlcHQuYm9keSwgYXN0Mm9ial9zdG10KTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlRyeS5ib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuVHJ5RXhjZXB0LmhhbmRsZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdDJvYmpfZXhjZXB0aGFuZGxlcik7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5UcnkuaGFuZGxlcnMsIGFzdDJvYmpfZXhjZXB0aGFuZGxlcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiaGFuZGxlcnMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9oYW5kbGVycywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlRyeUV4Y2VwdC5vcmVsc2UsIGFzdDJvYmpfc3RtdCk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Ucnkub3JlbHNlLCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm9yZWxzZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX29yZWxzZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUcnlGaW5hbGx5X2tpbmQ6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoVHJ5RmluYWxseV90eXBlLCBOVUxMLCBOVUxMKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5UcnlGaW5hbGx5LmJvZHksIGFzdDJvYmpfc3RtdCk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5UcnkuZmluYWxib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuVHJ5RmluYWxseS5maW5hbGJvZHksIGFzdDJvYmpfc3RtdCk7Ci0gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZmluYWxib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZmluYWxib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjQ3MSwxMiArMjU3NiwxMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkFzc2VydC50ZXN0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ0ZXN0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdGVzdCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkFzc2VydC5tc2cpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm1zZyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX21zZywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI0ODUsNyArMjU5MCw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuSW1wb3J0Lm5hbWVzLCBhc3Qyb2JqX2FsaWFzKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJuYW1lcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX25hbWVzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjQ5NCwxNyArMjU5OSwxNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT52LkltcG9ydEZyb20ubW9kdWxlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJtb2R1bGUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9tb2R1bGUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5JbXBvcnRGcm9tLm5hbWVzLCBhc3Qyb2JqX2FsaWFzKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJuYW1lcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX25hbWVzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+di5JbXBvcnRGcm9tLmxldmVsKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJsZXZlbCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2xldmVsLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjUxMyw3ICsyNjE4LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5HbG9iYWwubmFtZXMsIGFzdDJvYmpfaWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibmFtZXMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9uYW1lcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI1MjIsNyArMjYyNyw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuTm9ubG9jYWwubmFtZXMsIGFzdDJvYmpfaWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibmFtZXMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9uYW1lcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI1MzEsNyArMjYzNiw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuRXhwci52YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI1NTAsMTIgKzI2NTUsMTIgQEAKICAgICAgICAgfQogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaW50KG8tPmxpbmVubyk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJsaW5lbm8iLCB2YWx1ZSkgPCAwKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2xpbmVubywgdmFsdWUpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2ludChvLT5jb2xfb2Zmc2V0KTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImNvbF9vZmZzZXQiLCB2YWx1ZSkgPCAwKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2NvbF9vZmZzZXQsIHZhbHVlKSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0yNTgxLDEyICsyNjg2LDEyIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9ib29sb3Aoby0+di5Cb29sT3Aub3ApOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm9wIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3AsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Cb29sT3AudmFsdWVzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI1OTUsMTcgKzI3MDAsMTcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5CaW5PcC5sZWZ0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJsZWZ0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbGVmdCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfb3BlcmF0b3Ioby0+di5CaW5PcC5vcCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3AiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkJpbk9wLnJpZ2h0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJyaWdodCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3JpZ2h0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjYxNCwxMiArMjcxOSwxMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfdW5hcnlvcChvLT52LlVuYXJ5T3Aub3ApOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm9wIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3AsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5VbmFyeU9wLm9wZXJhbmQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm9wZXJhbmQiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcGVyYW5kLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjYyOCwxMiArMjczMywxMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfYXJndW1lbnRzKG8tPnYuTGFtYmRhLmFyZ3MpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImFyZ3MiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9hcmdzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuTGFtYmRhLmJvZHkpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjY0MiwxNyArMjc0NywxNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LklmRXhwLnRlc3QpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInRlc3QiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90ZXN0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuSWZFeHAuYm9keSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5JZkV4cC5vcmVsc2UpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm9yZWxzZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX29yZWxzZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI2NjEsMTIgKzI3NjYsMTIgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5EaWN0LmtleXMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAia2V5cyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2tleXMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5EaWN0LnZhbHVlcywgYXN0Mm9ial9leHByKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZXMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZXMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjc1LDcgKzI3ODAsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlNldC5lbHRzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImVsdHMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9lbHRzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjY4NCwxMyArMjc4OSwxMyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52Lkxpc3RDb21wLmVsdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZWx0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZWx0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuTGlzdENvbXAuZ2VuZXJhdG9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3Qyb2JqX2NvbXByZWhlbnNpb24pOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImdlbmVyYXRvcnMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9nZW5lcmF0b3JzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjY5OSwxMyArMjgwNCwxMyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LlNldENvbXAuZWx0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJlbHQiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9lbHQsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5TZXRDb21wLmdlbmVyYXRvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Mm9ial9jb21wcmVoZW5zaW9uKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJnZW5lcmF0b3JzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZ2VuZXJhdG9ycywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI3MTQsMTggKzI4MTksMTggQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5EaWN0Q29tcC5rZXkpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImtleSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2tleSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkRpY3RDb21wLnZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuRGljdENvbXAuZ2VuZXJhdG9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3Qyb2JqX2NvbXByZWhlbnNpb24pOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImdlbmVyYXRvcnMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9nZW5lcmF0b3JzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjczNCwxMyArMjgzOSwxMyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkdlbmVyYXRvckV4cC5lbHQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImVsdCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2VsdCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkdlbmVyYXRvckV4cC5nZW5lcmF0b3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdDJvYmpfY29tcHJlaGVuc2lvbik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZ2VuZXJhdG9ycyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2dlbmVyYXRvcnMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNzQ5LDcgKzI4NTQsMTYgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5ZaWVsZC52YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBZaWVsZEZyb21fa2luZDoKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhZaWVsZEZyb21fdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuWWllbGRGcm9tLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjc1OCwyMyArMjg3MiwyMyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkNvbXBhcmUubGVmdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibGVmdCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2xlZnQsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGksIG4gPSBhc2RsX3NlcV9MRU4oby0+di5Db21wYXJlLm9wcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGksIG4gPSBhc2RsX3NlcV9MRU4oby0+di5Db21wYXJlLm9wcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IFB5TGlzdF9OZXcobik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IG47IGkrKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X1NFVF9JVEVNKHZhbHVlLCBpLCBhc3Qyb2JqX2NtcG9wKChjbXBvcF90eSlhc2RsX3NlcV9HRVQoby0+di5Db21wYXJlLm9wcywgaSkpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3BzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3BzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQ29tcGFyZS5jb21wYXJhdG9ycywgYXN0Mm9ial9leHByKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjb21wYXJhdG9ycyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2NvbXBhcmF0b3JzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjc4MywyNyArMjg5NywyNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkNhbGwuZnVuYyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZnVuYyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2Z1bmMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5DYWxsLmFyZ3MsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYXJncyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2FyZ3MsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5DYWxsLmtleXdvcmRzLCBhc3Qyb2JqX2tleXdvcmQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImtleXdvcmRzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa2V5d29yZHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5DYWxsLnN0YXJhcmdzKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJzdGFyYXJncyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3N0YXJhcmdzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQ2FsbC5rd2FyZ3MpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImt3YXJncyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2t3YXJncywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI4MTIsNyArMjkyNiw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9vYmplY3Qoby0+di5OdW0ubik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibiIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX24sIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yODIxLDE2ICsyOTM1LDE2IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9zdHJpbmcoby0+di5TdHIucyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAicyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3MsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQnl0ZXNfa2luZDoKICAgICAgICAgICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhCeXRlc190eXBlLCBOVUxMLCBOVUxMKTsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX3N0cmluZyhvLT52LkJ5dGVzLnMpOworICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9ieXRlcyhvLT52LkJ5dGVzLnMpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9zLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjg0MywxNyArMjk1NywxNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkF0dHJpYnV0ZS52YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT52LkF0dHJpYnV0ZS5hdHRyKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJhdHRyIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYXR0ciwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcl9jb250ZXh0KG8tPnYuQXR0cmlidXRlLmN0eCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY3R4IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY3R4LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjg2MiwxNyArMjk3NiwxNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LlN1YnNjcmlwdC52YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfc2xpY2Uoby0+di5TdWJzY3JpcHQuc2xpY2UpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInNsaWNlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfc2xpY2UsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHJfY29udGV4dChvLT52LlN1YnNjcmlwdC5jdHgpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImN0eCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2N0eCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI4ODEsMTIgKzI5OTUsMTIgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5TdGFycmVkLnZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByX2NvbnRleHQoby0+di5TdGFycmVkLmN0eCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY3R4IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY3R4LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjg5NSwxMiArMzAwOSwxMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT52Lk5hbWUuaWQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImlkIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfaWQsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHJfY29udGV4dChvLT52Lk5hbWUuY3R4KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjdHgiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jdHgsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yOTA5LDEyICszMDIzLDEyIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuTGlzdC5lbHRzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImVsdHMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9lbHRzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByX2NvbnRleHQoby0+di5MaXN0LmN0eCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY3R4IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY3R4LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjkyMywyNCArMzAzNywyNCBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlR1cGxlLmVsdHMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZWx0cyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2VsdHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHJfY29udGV4dChvLT52LlR1cGxlLmN0eCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY3R4IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY3R4LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+bGluZW5vKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImxpbmVubyIsIHZhbHVlKSA8IDApCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbGluZW5vLCB2YWx1ZSkgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaW50KG8tPmNvbF9vZmZzZXQpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY29sX29mZnNldCIsIHZhbHVlKSA8IDApCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY29sX29mZnNldCwgdmFsdWUpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTI5OTMsMTcgKzMxMDcsMTcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5TbGljZS5sb3dlcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibG93ZXIiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9sb3dlciwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LlNsaWNlLnVwcGVyKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ1cHBlciIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3VwcGVyLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuU2xpY2Uuc3RlcCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAic3RlcCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3N0ZXAsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zMDEyLDcgKzMxMjYsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkV4dFNsaWNlLmRpbXMsIGFzdDJvYmpfc2xpY2UpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImRpbXMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9kaW1zLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzAyMSw3ICszMTM1LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5JbmRleC52YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTMxNjcsMTcgKzMyODEsMTcgQEAKICAgICAgICAgaWYgKCFyZXN1bHQpIHJldHVybiBOVUxMOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT50YXJnZXQpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidGFyZ2V0IiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3RhcmdldCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT5pdGVyKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIml0ZXIiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfaXRlciwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT5pZnMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJpZnMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfaWZzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zMjAzLDI5ICszMzE3LDI5IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuRXhjZXB0SGFuZGxlci50eXBlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ0eXBlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdHlwZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT52LkV4Y2VwdEhhbmRsZXIubmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibmFtZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX25hbWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5FeGNlcHRIYW5kbGVyLmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2ludChvLT5saW5lbm8pOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibGluZW5vIiwgdmFsdWUpIDwgMCkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9saW5lbm8sIHZhbHVlKSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+Y29sX29mZnNldCk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjb2xfb2Zmc2V0IiwgdmFsdWUpIDwgMCkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jb2xfb2Zmc2V0LCB2YWx1ZSkgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzI0OSw0MiArMzM2Myw0MiBAQAogICAgICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuIE5VTEw7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPmFyZ3MsIGFzdDJvYmpfYXJnKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImFyZ3MiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYXJncywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT52YXJhcmcpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFyYXJnIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhcmFyZywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52YXJhcmdhbm5vdGF0aW9uKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhcmFyZ2Fubm90YXRpb24iLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFyYXJnYW5ub3RhdGlvbiwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT5rd29ubHlhcmdzLCBhc3Qyb2JqX2FyZyk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJrd29ubHlhcmdzIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2t3b25seWFyZ3MsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2lkZW50aWZpZXIoby0+a3dhcmcpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAia3dhcmciLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa3dhcmcsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+a3dhcmdhbm5vdGF0aW9uKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImt3YXJnYW5ub3RhdGlvbiIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rd2FyZ2Fubm90YXRpb24sIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+ZGVmYXVsdHMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJkZWZhdWx0cyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9kZWZhdWx0cywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT5rd19kZWZhdWx0cywgYXN0Mm9ial9leHByKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImt3X2RlZmF1bHRzIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2t3X2RlZmF1bHRzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zMzA4LDEyICszNDIyLDEyIEBACiAgICAgICAgIGlmICghcmVzdWx0KSByZXR1cm4gTlVMTDsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2lkZW50aWZpZXIoby0+YXJnKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImFyZyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9hcmcsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+YW5ub3RhdGlvbik7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJhbm5vdGF0aW9uIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2Fubm90YXRpb24sIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMzMzcsMTIgKzM0NTEsMTIgQEAKICAgICAgICAgaWYgKCFyZXN1bHQpIHJldHVybiBOVUxMOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT5hcmcpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYXJnIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2FyZywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52YWx1ZSk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzM2NiwxMiArMzQ4MCw0MSBAQAogICAgICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuIE5VTEw7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPm5hbWUpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibmFtZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9uYW1lLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPmFzbmFtZSk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJhc25hbWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYXNuYW1lLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CitmYWlsZWQ6CisgICAgICAgIFB5X1hERUNSRUYodmFsdWUpOworICAgICAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworfQorCitQeU9iamVjdCoKK2FzdDJvYmpfd2l0aGl0ZW0odm9pZCogX28pCit7CisgICAgICAgIHdpdGhpdGVtX3R5IG8gPSAod2l0aGl0ZW1fdHkpX287CisgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMLCAqdmFsdWUgPSBOVUxMOworICAgICAgICBpZiAoIW8pIHsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyh3aXRoaXRlbV90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIHJldHVybiBOVUxMOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT5jb250ZXh0X2V4cHIpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jb250ZXh0X2V4cHIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+b3B0aW9uYWxfdmFycyk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX29wdGlvbmFsX3ZhcnMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTM0MDAsMTEgKzM1NDMsMTEgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogYm9keTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIk1vZHVsZSBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTM0MzYsMTEgKzM1NzksMTEgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogYm9keTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkludGVyYWN0aXZlIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtMzQ3Miw5ICszNjE1LDkgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBleHByX3R5IGJvZHk7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmJvZHksIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zNDk1LDExICszNjM4LDExIEBACiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGJvZHk7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJTdWl0ZSBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTM1NDQsOSArMzY4Nyw5IEBACiAgICAgICAgICAgICAgICAgKm91dCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibGluZW5vIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9saW5lbm8pKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImxpbmVubyIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9saW5lbm8pOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pbnQodG1wLCAmbGluZW5vLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM1NTYsOSArMzY5OSw5IEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwibGluZW5vXCIgbWlzc2luZyBmcm9tIHN0bXQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJjb2xfb2Zmc2V0IikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9jb2xfb2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjb2xfb2Zmc2V0Iik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2NvbF9vZmZzZXQpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pbnQodG1wLCAmY29sX29mZnNldCwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zNTc5LDkgKzM3MjIsOSBAQAogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBkZWNvcmF0b3JfbGlzdDsKICAgICAgICAgICAgICAgICBleHByX3R5IHJldHVybnM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJuYW1lIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX25hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJuYW1lIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKHRtcCwgJm5hbWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zNTkxLDkgKzM3MzQsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwibmFtZVwiIG1pc3NpbmcgZnJvbSBGdW5jdGlvbkRlZiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImFyZ3MiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYXJncykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImFyZ3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9hcmdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2FyZ3VtZW50cyh0bXAsICZhcmdzLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzYwMywxMSArMzc0NiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYXJnc1wiIG1pc3NpbmcgZnJvbSBGdW5jdGlvbkRlZiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkZ1bmN0aW9uRGVmIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtMzYyOCwxMSArMzc3MSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBGdW5jdGlvbkRlZiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImRlY29yYXRvcl9saXN0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2RlY29yYXRvcl9saXN0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJkZWNvcmF0b3JfbGlzdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2RlY29yYXRvcl9saXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJGdW5jdGlvbkRlZiBmaWVsZCBcImRlY29yYXRvcl9saXN0XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC0zNjUzLDkgKzM3OTYsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZGVjb3JhdG9yX2xpc3RcIiBtaXNzaW5nIGZyb20gRnVuY3Rpb25EZWYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJyZXR1cm5zIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3JldHVybnMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJyZXR1cm5zIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfcmV0dXJucyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnJldHVybnMsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zNjgyLDkgKzM4MjUsOSBAQAogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBkZWNvcmF0b3JfbGlzdDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm5hbWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm5hbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmbmFtZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM2OTQsMTEgKzM4MzcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm5hbWVcIiBtaXNzaW5nIGZyb20gQ2xhc3NEZWYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJiYXNlcyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9iYXNlcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYmFzZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9iYXNlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQ2xhc3NEZWYgZmllbGQgXCJiYXNlc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtMzcxOSwxMSArMzg2MiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYmFzZXNcIiBtaXNzaW5nIGZyb20gQ2xhc3NEZWYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJrZXl3b3JkcyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rZXl3b3JkcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAia2V5d29yZHMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9rZXl3b3Jkcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQ2xhc3NEZWYgZmllbGQgXCJrZXl3b3Jkc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtMzc0NCw5ICszODg3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImtleXdvcmRzXCIgbWlzc2luZyBmcm9tIENsYXNzRGVmIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAic3RhcmFyZ3MiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfc3RhcmFyZ3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJzdGFyYXJncyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3N0YXJhcmdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmc3RhcmFyZ3MsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zNzU1LDkgKzM4OTgsOSBAQAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyYXJncyA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImt3YXJncyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rd2FyZ3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJrd2FyZ3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9rd2FyZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZrd2FyZ3MsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zNzY2LDExICszOTA5LDExIEBACiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJncyA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkNsYXNzRGVmIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtMzc5MSwxMSArMzkzNCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBDbGFzc0RlZiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImRlY29yYXRvcl9saXN0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2RlY29yYXRvcl9saXN0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJkZWNvcmF0b3JfbGlzdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2RlY29yYXRvcl9saXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJDbGFzc0RlZiBmaWVsZCBcImRlY29yYXRvcl9saXN0XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC0zODI4LDkgKzM5NzEsOSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM4NTAsMTEgKzM5OTMsMTEgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogdGFyZ2V0czsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInRhcmdldHMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0cykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidGFyZ2V0cyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3RhcmdldHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkRlbGV0ZSBmaWVsZCBcInRhcmdldHNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTM4ODcsMTEgKzQwMzAsMTEgQEAKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogdGFyZ2V0czsKICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidGFyZ2V0cyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90YXJnZXRzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ0YXJnZXRzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQXNzaWduIGZpZWxkIFwidGFyZ2V0c1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtMzkxMiw5ICs0MDU1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInRhcmdldHNcIiBtaXNzaW5nIGZyb20gQXNzaWduIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zOTM3LDkgKzQwODAsOSBAQAogICAgICAgICAgICAgICAgIG9wZXJhdG9yX3R5IG9wOwogICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ0YXJnZXQiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidGFyZ2V0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdGFyZ2V0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzk0OSw5ICs0MDkyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInRhcmdldFwiIG1pc3NpbmcgZnJvbSBBdWdBc3NpZ24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm9wIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3ApOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfb3BlcmF0b3IodG1wLCAmb3AsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zOTYxLDkgKzQxMDQsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwib3BcIiBtaXNzaW5nIGZyb20gQXVnQXNzaWduIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zOTg3LDkgKzQxMzAsOSBAQAogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBvcmVsc2U7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ0YXJnZXQiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidGFyZ2V0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdGFyZ2V0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzk5OSw5ICs0MTQyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInRhcmdldFwiIG1pc3NpbmcgZnJvbSBGb3IiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJpdGVyIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2l0ZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJpdGVyIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfaXRlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJml0ZXIsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00MDExLDExICs0MTU0LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJpdGVyXCIgbWlzc2luZyBmcm9tIEZvciIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkZvciBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQwMzYsMTEgKzQxNzksMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImJvZHlcIiBtaXNzaW5nIGZyb20gRm9yIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAib3JlbHNlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29yZWxzZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3JlbHNlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3JlbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJGb3IgZmllbGQgXCJvcmVsc2VcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQwNzUsOSArNDIxOCw5IEBACiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGJvZHk7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIG9yZWxzZTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInRlc3QiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGVzdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInRlc3QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF90ZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdGVzdCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQwODcsMTEgKzQyMzAsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInRlc3RcIiBtaXNzaW5nIGZyb20gV2hpbGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJXaGlsZSBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQxMTIsMTEgKzQyNTUsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImJvZHlcIiBtaXNzaW5nIGZyb20gV2hpbGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcmVsc2UiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfb3JlbHNlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJvcmVsc2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIldoaWxlIGZpZWxkIFwib3JlbHNlXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC00MTUwLDkgKzQyOTMsOSBAQAogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBvcmVsc2U7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ0ZXN0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3Rlc3QpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ0ZXN0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGVzdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnRlc3QsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00MTYyLDExICs0MzA1LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ0ZXN0XCIgbWlzc2luZyBmcm9tIElmIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiSWYgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC00MTg3LDExICs0MzMwLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJib2R5XCIgbWlzc2luZyBmcm9tIElmIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAib3JlbHNlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29yZWxzZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3JlbHNlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3JlbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJJZiBmaWVsZCBcIm9yZWxzZVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDIyMSwzOCArNDM2NCwzOSBAQAogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7Ci0gICAgICAgICAgICAgICAgZXhwcl90eSBjb250ZXh0X2V4cHI7Ci0gICAgICAgICAgICAgICAgZXhwcl90eSBvcHRpb25hbF92YXJzOworICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBpdGVtczsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogYm9keTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImNvbnRleHRfZXhwciIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjb250ZXh0X2V4cHIiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmY29udGV4dF9leHByLCBhcmVuYSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiY29udGV4dF9leHByXCIgbWlzc2luZyBmcm9tIFdpdGgiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcHRpb25hbF92YXJzIikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm9wdGlvbmFsX3ZhcnMiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmb3B0aW9uYWxfdmFycywgYXJlbmEpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsX3ZhcnMgPSBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2l0ZW1zKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfaXRlbXMpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIldpdGggZmllbGQgXCJpdGVtc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOworICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMgPSBhc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbXMgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aGl0ZW1fdHkgdmFsdWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfd2l0aGl0ZW0oUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoaXRlbXMsIGksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIml0ZW1zXCIgbWlzc2luZyBmcm9tIFdpdGgiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiV2l0aCBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQyNzMsOCArNDQxNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJib2R5XCIgbWlzc2luZyBmcm9tIFdpdGgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAqb3V0ID0gV2l0aChjb250ZXh0X2V4cHIsIG9wdGlvbmFsX3ZhcnMsIGJvZHksIGxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfb2Zmc2V0LCBhcmVuYSk7CisgICAgICAgICAgICAgICAgKm91dCA9IFdpdGgoaXRlbXMsIGJvZHksIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC00Mjg2LDkgKzQ0MjksOSBAQAogICAgICAgICAgICAgICAgIGV4cHJfdHkgZXhjOwogICAgICAgICAgICAgICAgIGV4cHJfdHkgY2F1c2U7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJleGMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZXhjKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZXhjIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZXhjKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmZXhjLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDI5Nyw5ICs0NDQwLDkgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgZXhjID0gTlVMTDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiY2F1c2UiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY2F1c2UpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjYXVzZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2NhdXNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmY2F1c2UsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00MzEyLDcgKzQ0NTUsNyBAQAogICAgICAgICAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilUcnlFeGNlcHRfdHlwZSk7CisgICAgICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilUcnlfdHlwZSk7CiAgICAgICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KQEAgLTQzMjAsMTUgKzQ0NjMsMTYgQEAKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogYm9keTsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogaGFuZGxlcnM7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIG9yZWxzZTsKKyAgICAgICAgICAgICAgICBhc2RsX3NlcSogZmluYWxib2R5OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiVHJ5RXhjZXB0IGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiVHJ5IGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOwpAQCAtNDM0MywxNyArNDQ4NywxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBUcnlFeGNlcHQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImJvZHlcIiBtaXNzaW5nIGZyb20gVHJ5Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiaGFuZGxlcnMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfaGFuZGxlcnMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImhhbmRsZXJzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfaGFuZGxlcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlRyeUV4Y2VwdCBmaWVsZCBcImhhbmRsZXJzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJUcnkgZmllbGQgXCJoYW5kbGVyc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOwpAQCAtNDM2OCwxNyArNDUxMiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiaGFuZGxlcnNcIiBtaXNzaW5nIGZyb20gVHJ5RXhjZXB0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJoYW5kbGVyc1wiIG1pc3NpbmcgZnJvbSBUcnkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcmVsc2UiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfb3JlbHNlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJvcmVsc2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlRyeUV4Y2VwdCBmaWVsZCBcIm9yZWxzZVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiVHJ5IGZpZWxkIFwib3JlbHNlXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7CkBAIC00MzkzLDU1ICs0NTM3LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJvcmVsc2VcIiBtaXNzaW5nIGZyb20gVHJ5RXhjZXB0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJvcmVsc2VcIiBtaXNzaW5nIGZyb20gVHJ5Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKm91dCA9IFRyeUV4Y2VwdChib2R5LCBoYW5kbGVycywgb3JlbHNlLCBsaW5lbm8sIGNvbF9vZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVuYSk7Ci0gICAgICAgICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKVRyeUZpbmFsbHlfdHlwZSk7Ci0gICAgICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKLSAgICAgICAgICAgICAgICBhc2RsX3NlcSogYm9keTsKLSAgICAgICAgICAgICAgICBhc2RsX3NlcSogZmluYWxib2R5OwotCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9maW5hbGJvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9maW5hbGJvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlRyeUZpbmFsbHkgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkgPT0gTlVMTCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdF90eSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdG10KFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGJvZHksIGksIHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImJvZHlcIiBtaXNzaW5nIGZyb20gVHJ5RmluYWxseSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImZpbmFsYm9keSIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImZpbmFsYm9keSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlRyeUZpbmFsbHkgZmllbGQgXCJmaW5hbGJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlRyeSBmaWVsZCBcImZpbmFsYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOwpAQCAtNDQ1NiwxMCArNDU2MiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZmluYWxib2R5XCIgbWlzc2luZyBmcm9tIFRyeUZpbmFsbHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImZpbmFsYm9keVwiIG1pc3NpbmcgZnJvbSBUcnkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAqb3V0ID0gVHJ5RmluYWxseShib2R5LCBmaW5hbGJvZHksIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICAgICAgICAgICpvdXQgPSBUcnkoYm9keSwgaGFuZGxlcnMsIG9yZWxzZSwgZmluYWxib2R5LCBsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfb2Zmc2V0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KQEAgLTQ0NzEsOSArNDU3OCw5IEBACiAgICAgICAgICAgICAgICAgZXhwcl90eSB0ZXN0OwogICAgICAgICAgICAgICAgIGV4cHJfdHkgbXNnOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidGVzdCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90ZXN0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidGVzdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3Rlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ0ZXN0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDQ4Myw5ICs0NTkwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInRlc3RcIiBtaXNzaW5nIGZyb20gQXNzZXJ0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibXNnIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX21zZykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm1zZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX21zZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJm1zZywgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ1MDUsMTEgKzQ2MTIsMTEgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogbmFtZXM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJuYW1lcyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9uYW1lcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibmFtZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9uYW1lcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiSW1wb3J0IGZpZWxkIFwibmFtZXNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQ1NDMsOSArNDY1MCw5IEBACiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIG5hbWVzOwogICAgICAgICAgICAgICAgIGludCBsZXZlbDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm1vZHVsZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9tb2R1bGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJtb2R1bGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9tb2R1bGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZtb2R1bGUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00NTU0LDExICs0NjYxLDExIEBACiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm5hbWVzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX25hbWVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJuYW1lcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX25hbWVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJJbXBvcnRGcm9tIGZpZWxkIFwibmFtZXNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQ1NzksOSArNDY4Niw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJuYW1lc1wiIG1pc3NpbmcgZnJvbSBJbXBvcnRGcm9tIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibGV2ZWwiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbGV2ZWwpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJsZXZlbCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2xldmVsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2ludCh0bXAsICZsZXZlbCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ2MDIsMTEgKzQ3MDksMTEgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogbmFtZXM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJuYW1lcyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9uYW1lcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibmFtZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9uYW1lcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiR2xvYmFsIGZpZWxkIFwibmFtZXNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQ2MzgsMTEgKzQ3NDUsMTEgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogbmFtZXM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJuYW1lcyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9uYW1lcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibmFtZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9uYW1lcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiTm9ubG9jYWwgZmllbGQgXCJuYW1lc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDY3NCw5ICs0NzgxLDkgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00NzQwLDkgKzQ4NDcsOSBAQAogICAgICAgICAgICAgICAgICpvdXQgPSBOVUxMOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImxpbmVubyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbGluZW5vKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJsaW5lbm8iKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbGluZW5vKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJmxpbmVubywgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00NzUyLDkgKzQ4NTksOSBAQAogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImxpbmVub1wiIG1pc3NpbmcgZnJvbSBleHByIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiY29sX29mZnNldCIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY29sX29mZnNldCkpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiY29sX29mZnNldCIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jb2xfb2Zmc2V0KTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJmNvbF9vZmZzZXQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDc3Miw5ICs0ODc5LDkgQEAKICAgICAgICAgICAgICAgICBib29sb3BfdHkgb3A7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIHZhbHVlczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm9wIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3AiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9ib29sb3AodG1wLCAmb3AsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00Nzg0LDExICs0ODkxLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJvcFwiIG1pc3NpbmcgZnJvbSBCb29sT3AiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZXMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkJvb2xPcCBmaWVsZCBcInZhbHVlc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDgyMiw5ICs0OTI5LDkgQEAKICAgICAgICAgICAgICAgICBvcGVyYXRvcl90eSBvcDsKICAgICAgICAgICAgICAgICBleHByX3R5IHJpZ2h0OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibGVmdCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9sZWZ0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibGVmdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2xlZnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZsZWZ0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDgzNCw5ICs0OTQxLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImxlZnRcIiBtaXNzaW5nIGZyb20gQmluT3AiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm9wIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3ApOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfb3BlcmF0b3IodG1wLCAmb3AsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00ODQ2LDkgKzQ5NTMsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwib3BcIiBtaXNzaW5nIGZyb20gQmluT3AiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJyaWdodCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9yaWdodCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInJpZ2h0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfcmlnaHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZyaWdodCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ4NzAsOSArNDk3Nyw5IEBACiAgICAgICAgICAgICAgICAgdW5hcnlvcF90eSBvcDsKICAgICAgICAgICAgICAgICBleHByX3R5IG9wZXJhbmQ7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm9wIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3ApOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfdW5hcnlvcCh0bXAsICZvcCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ4ODIsOSArNDk4OSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJvcFwiIG1pc3NpbmcgZnJvbSBVbmFyeU9wIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAib3BlcmFuZCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcGVyYW5kKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3BlcmFuZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX29wZXJhbmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZvcGVyYW5kLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDkwNiw5ICs1MDEzLDkgQEAKICAgICAgICAgICAgICAgICBhcmd1bWVudHNfdHkgYXJnczsKICAgICAgICAgICAgICAgICBleHByX3R5IGJvZHk7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJhcmdzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2FyZ3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJhcmdzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYXJncyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9hcmd1bWVudHModG1wLCAmYXJncywgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ5MTgsOSArNTAyNSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJhcmdzXCIgbWlzc2luZyBmcm9tIExhbWJkYSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmYm9keSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ5NDMsOSArNTA1MCw5IEBACiAgICAgICAgICAgICAgICAgZXhwcl90eSBib2R5OwogICAgICAgICAgICAgICAgIGV4cHJfdHkgb3JlbHNlOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidGVzdCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90ZXN0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidGVzdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3Rlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ0ZXN0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDk1NSw5ICs1MDYyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInRlc3RcIiBtaXNzaW5nIGZyb20gSWZFeHAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmJvZHksIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00OTY3LDkgKzUwNzQsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBJZkV4cCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm9yZWxzZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJvcmVsc2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZvcmVsc2UsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00OTkxLDExICs1MDk4LDExIEBACiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGtleXM7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIHZhbHVlczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImtleXMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfa2V5cykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAia2V5cyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2tleXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkRpY3QgZmllbGQgXCJrZXlzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01MDE2LDExICs1MTIzLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJrZXlzXCIgbWlzc2luZyBmcm9tIERpY3QiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZXMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkRpY3QgZmllbGQgXCJ2YWx1ZXNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTUwNTIsMTEgKzUxNTksMTEgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogZWx0czsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImVsdHMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZWx0cykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZWx0cyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2VsdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlNldCBmaWVsZCBcImVsdHNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTUwODksOSArNTE5Niw5IEBACiAgICAgICAgICAgICAgICAgZXhwcl90eSBlbHQ7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGdlbmVyYXRvcnM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJlbHQiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZWx0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZWx0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZWx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmZWx0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTEwMSwxMSArNTIwOCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZWx0XCIgbWlzc2luZyBmcm9tIExpc3RDb21wIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZ2VuZXJhdG9ycyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9nZW5lcmF0b3JzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJnZW5lcmF0b3JzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZ2VuZXJhdG9ycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiTGlzdENvbXAgZmllbGQgXCJnZW5lcmF0b3JzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01MTM4LDkgKzUyNDUsOSBAQAogICAgICAgICAgICAgICAgIGV4cHJfdHkgZWx0OwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBnZW5lcmF0b3JzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZWx0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2VsdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImVsdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2VsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmVsdCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTUxNTAsMTEgKzUyNTcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImVsdFwiIG1pc3NpbmcgZnJvbSBTZXRDb21wIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZ2VuZXJhdG9ycyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9nZW5lcmF0b3JzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJnZW5lcmF0b3JzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZ2VuZXJhdG9ycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiU2V0Q29tcCBmaWVsZCBcImdlbmVyYXRvcnNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTUxODgsOSArNTI5NSw5IEBACiAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogZ2VuZXJhdG9yczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImtleSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rZXkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJrZXkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9rZXkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZrZXksIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01MjAwLDkgKzUzMDcsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwia2V5XCIgbWlzc2luZyBmcm9tIERpY3RDb21wIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01MjEyLDExICs1MzE5LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ2YWx1ZVwiIG1pc3NpbmcgZnJvbSBEaWN0Q29tcCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImdlbmVyYXRvcnMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZ2VuZXJhdG9ycykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZ2VuZXJhdG9ycyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2dlbmVyYXRvcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkRpY3RDb21wIGZpZWxkIFwiZ2VuZXJhdG9yc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNTI1MCw5ICs1MzU3LDkgQEAKICAgICAgICAgICAgICAgICBleHByX3R5IGVsdDsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogZ2VuZXJhdG9yczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImVsdCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9lbHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJlbHQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9lbHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZlbHQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01MjYyLDExICs1MzY5LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJlbHRcIiBtaXNzaW5nIGZyb20gR2VuZXJhdG9yRXhwIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZ2VuZXJhdG9ycyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9nZW5lcmF0b3JzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJnZW5lcmF0b3JzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZ2VuZXJhdG9ycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiR2VuZXJhdG9yRXhwIGZpZWxkIFwiZ2VuZXJhdG9yc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNTI5OCw5ICs1NDA1LDkgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01MzEzLDYgKzU0MjAsMjkgQEAKICAgICAgICAgICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQorICAgICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopWWllbGRGcm9tX3R5cGUpOworICAgICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CisgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKKworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ2YWx1ZVwiIG1pc3NpbmcgZnJvbSBZaWVsZEZyb20iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAqb3V0ID0gWWllbGRGcm9tKHZhbHVlLCBsaW5lbm8sIGNvbF9vZmZzZXQsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQogICAgICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQ29tcGFyZV90eXBlKTsKICAgICAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKQEAgLTUzMjIsOSArNTQ1Miw5IEBACiAgICAgICAgICAgICAgICAgYXNkbF9pbnRfc2VxKiBvcHM7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGNvbXBhcmF0b3JzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibGVmdCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9sZWZ0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibGVmdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2xlZnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZsZWZ0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTMzNCwxMSArNTQ2NCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwibGVmdFwiIG1pc3NpbmcgZnJvbSBDb21wYXJlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAib3BzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29wcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3BzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3BzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJDb21wYXJlIGZpZWxkIFwib3BzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01MzU5LDExICs1NDg5LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJvcHNcIiBtaXNzaW5nIGZyb20gQ29tcGFyZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImNvbXBhcmF0b3JzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2NvbXBhcmF0b3JzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjb21wYXJhdG9ycyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2NvbXBhcmF0b3JzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJDb21wYXJlIGZpZWxkIFwiY29tcGFyYXRvcnNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTU0MDAsOSArNTUzMCw5IEBACiAgICAgICAgICAgICAgICAgZXhwcl90eSBzdGFyYXJnczsKICAgICAgICAgICAgICAgICBleHByX3R5IGt3YXJnczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImZ1bmMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZnVuYykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImZ1bmMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9mdW5jKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmZnVuYywgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU0MTIsMTEgKzU1NDIsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImZ1bmNcIiBtaXNzaW5nIGZyb20gQ2FsbCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImFyZ3MiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYXJncykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYXJncyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2FyZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkNhbGwgZmllbGQgXCJhcmdzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01NDM3LDExICs1NTY3LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJhcmdzXCIgbWlzc2luZyBmcm9tIENhbGwiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJrZXl3b3JkcyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rZXl3b3JkcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAia2V5d29yZHMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9rZXl3b3Jkcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQ2FsbCBmaWVsZCBcImtleXdvcmRzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01NDYyLDkgKzU1OTIsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwia2V5d29yZHNcIiBtaXNzaW5nIGZyb20gQ2FsbCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInN0YXJhcmdzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3N0YXJhcmdzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAic3RhcmFyZ3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9zdGFyYXJncyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnN0YXJhcmdzLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTQ3Myw5ICs1NjAzLDkgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgc3RhcmFyZ3MgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJrd2FyZ3MiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfa3dhcmdzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAia3dhcmdzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa3dhcmdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAma3dhcmdzLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTQ5Niw5ICs1NjI2LDkgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBvYmplY3QgbjsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm4iKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X29iamVjdCh0bXAsICZuLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTUxOSw5ICs1NjQ5LDkgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBzdHJpbmcgczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9zKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0cmluZyh0bXAsICZzLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTU0MCwxMyArNTY3MCwxMyBAQAogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7Ci0gICAgICAgICAgICAgICAgc3RyaW5nIHM7CisgICAgICAgICAgICAgICAgYnl0ZXMgczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9zKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0cmluZyh0bXAsICZzLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2J5dGVzKHRtcCwgJnMsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwpAQCAtNTU3Nyw5ICs1NzA3LDkgQEAKICAgICAgICAgICAgICAgICBpZGVudGlmaWVyIGF0dHI7CiAgICAgICAgICAgICAgICAgZXhwcl9jb250ZXh0X3R5IGN0eDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTU4OSw5ICs1NzE5LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlXCIgbWlzc2luZyBmcm9tIEF0dHJpYnV0ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImF0dHIiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYXR0cikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImF0dHIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9hdHRyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmYXR0ciwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU2MDEsOSArNTczMSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJhdHRyXCIgbWlzc2luZyBmcm9tIEF0dHJpYnV0ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImN0eCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9jdHgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjdHgiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jdHgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcl9jb250ZXh0KHRtcCwgJmN0eCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU2MjYsOSArNTc1Niw5IEBACiAgICAgICAgICAgICAgICAgc2xpY2VfdHkgc2xpY2U7CiAgICAgICAgICAgICAgICAgZXhwcl9jb250ZXh0X3R5IGN0eDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTYzOCw5ICs1NzY4LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlXCIgbWlzc2luZyBmcm9tIFN1YnNjcmlwdCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInNsaWNlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3NsaWNlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAic2xpY2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9zbGljZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zbGljZSh0bXAsICZzbGljZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU2NTAsOSArNTc4MCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJzbGljZVwiIG1pc3NpbmcgZnJvbSBTdWJzY3JpcHQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJjdHgiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY3R4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiY3R4Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY3R4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHJfY29udGV4dCh0bXAsICZjdHgsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01Njc0LDkgKzU4MDQsOSBAQAogICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAgICAgICAgICAgICAgICAgZXhwcl9jb250ZXh0X3R5IGN0eDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTY4Niw5ICs1ODE2LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlXCIgbWlzc2luZyBmcm9tIFN0YXJyZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJjdHgiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY3R4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiY3R4Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY3R4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHJfY29udGV4dCh0bXAsICZjdHgsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NzEwLDkgKzU4NDAsOSBAQAogICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgaWQ7CiAgICAgICAgICAgICAgICAgZXhwcl9jb250ZXh0X3R5IGN0eDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImlkIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2lkKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiaWQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9pZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKHRtcCwgJmlkLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTcyMiw5ICs1ODUyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImlkXCIgbWlzc2luZyBmcm9tIE5hbWUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJjdHgiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY3R4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiY3R4Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY3R4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHJfY29udGV4dCh0bXAsICZjdHgsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NzQ2LDExICs1ODc2LDExIEBACiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGVsdHM7CiAgICAgICAgICAgICAgICAgZXhwcl9jb250ZXh0X3R5IGN0eDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImVsdHMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZWx0cykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZWx0cyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2VsdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkxpc3QgZmllbGQgXCJlbHRzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01NzcxLDkgKzU5MDEsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZWx0c1wiIG1pc3NpbmcgZnJvbSBMaXN0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiY3R4IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2N0eCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImN0eCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2N0eCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByX2NvbnRleHQodG1wLCAmY3R4LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTc5NSwxMSArNTkyNSwxMSBAQAogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBlbHRzOwogICAgICAgICAgICAgICAgIGV4cHJfY29udGV4dF90eSBjdHg7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJlbHRzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2VsdHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImVsdHMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9lbHRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJUdXBsZSBmaWVsZCBcImVsdHNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTU4MjAsOSArNTk1MCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJlbHRzXCIgbWlzc2luZyBmcm9tIFR1cGxlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiY3R4IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2N0eCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImN0eCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2N0eCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByX2NvbnRleHQodG1wLCAmY3R4LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTkyMSw5ICs2MDUxLDkgQEAKICAgICAgICAgICAgICAgICBleHByX3R5IHVwcGVyOwogICAgICAgICAgICAgICAgIGV4cHJfdHkgc3RlcDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImxvd2VyIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2xvd2VyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibG93ZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9sb3dlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmxvd2VyLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTkzMiw5ICs2MDYyLDkgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgbG93ZXIgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ1cHBlciIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF91cHBlcikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInVwcGVyIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdXBwZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ1cHBlciwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU5NDMsOSArNjA3Myw5IEBACiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyID0gTlVMTDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAic3RlcCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9zdGVwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAic3RlcCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3N0ZXApOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZzdGVwLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTk2NSwxMSArNjA5NSwxMSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBkaW1zOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZGltcyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9kaW1zKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJkaW1zIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZGltcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiRXh0U2xpY2UgZmllbGQgXCJkaW1zXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC02MDAxLDkgKzYxMzEsOSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTYyOTYsOSArNjQyNiw5IEBACiAgICAgICAgIGV4cHJfdHkgaXRlcjsKICAgICAgICAgYXNkbF9zZXEqIGlmczsKIAotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ0YXJnZXQiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3RhcmdldCkpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidGFyZ2V0Iik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3RhcmdldCk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdGFyZ2V0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTYzMDgsOSArNjQzOCw5IEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidGFyZ2V0XCIgbWlzc2luZyBmcm9tIGNvbXByZWhlbnNpb24iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJpdGVyIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9pdGVyKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJpdGVyIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2l0ZXIpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJml0ZXIsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjMyMCwxMSArNjQ1MCwxMSBAQAogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIml0ZXJcIiBtaXNzaW5nIGZyb20gY29tcHJlaGVuc2lvbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImlmcyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfaWZzKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiaWZzIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2lmcyk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiY29tcHJlaGVuc2lvbiBmaWVsZCBcImlmc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNjM2NSw5ICs2NDk1LDkgQEAKICAgICAgICAgICAgICAgICAqb3V0ID0gTlVMTDsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJsaW5lbm8iKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2xpbmVubykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibGluZW5vIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2xpbmVubyk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2ludCh0bXAsICZsaW5lbm8sIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjM3Nyw5ICs2NTA3LDkgQEAKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJsaW5lbm9cIiBtaXNzaW5nIGZyb20gZXhjZXB0aGFuZGxlciIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImNvbF9vZmZzZXQiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2NvbF9vZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImNvbF9vZmZzZXQiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY29sX29mZnNldCk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2ludCh0bXAsICZjb2xfb2Zmc2V0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTYzOTgsOSArNjUyOCw5IEBACiAgICAgICAgICAgICAgICAgaWRlbnRpZmllciBuYW1lOwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidHlwZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90eXBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidHlwZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ0eXBlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjQwOSw5ICs2NTM5LDkgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm5hbWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm5hbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmbmFtZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY0MjAsMTEgKzY1NTAsMTEgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkV4Y2VwdEhhbmRsZXIgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC02NDcwLDExICs2NjAwLDExIEBACiAgICAgICAgIGFzZGxfc2VxKiBkZWZhdWx0czsKICAgICAgICAgYXNkbF9zZXEqIGt3X2RlZmF1bHRzOwogCi0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImFyZ3MiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2FyZ3MpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJhcmdzIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2FyZ3MpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50cyBmaWVsZCBcImFyZ3NcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTY0OTUsOSArNjYyNSw5IEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYXJnc1wiIG1pc3NpbmcgZnJvbSBhcmd1bWVudHMiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YXJhcmciKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhcmFyZykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFyYXJnIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhcmFyZyk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmdmFyYXJnLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY1MDYsOSArNjYzNiw5IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFyYXJnID0gTlVMTDsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YXJhcmdhbm5vdGF0aW9uIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YXJhcmdhbm5vdGF0aW9uKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YXJhcmdhbm5vdGF0aW9uIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhcmFyZ2Fubm90YXRpb24pOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhcmFyZ2Fubm90YXRpb24sIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjUxNywxMSArNjY0NywxMSBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhcmFyZ2Fubm90YXRpb24gPSBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImt3b25seWFyZ3MiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2t3b25seWFyZ3MpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJrd29ubHlhcmdzIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2t3b25seWFyZ3MpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50cyBmaWVsZCBcImt3b25seWFyZ3NcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTY1NDIsOSArNjY3Miw5IEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwia3dvbmx5YXJnc1wiIG1pc3NpbmcgZnJvbSBhcmd1bWVudHMiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJrd2FyZyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfa3dhcmcpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImt3YXJnIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2t3YXJnKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZrd2FyZywgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02NTUzLDkgKzY2ODMsOSBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGt3YXJnID0gTlVMTDsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJrd2FyZ2Fubm90YXRpb24iKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2t3YXJnYW5ub3RhdGlvbikpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAia3dhcmdhbm5vdGF0aW9uIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2t3YXJnYW5ub3RhdGlvbik7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAma3dhcmdhbm5vdGF0aW9uLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY1NjQsMTEgKzY2OTQsMTEgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBrd2FyZ2Fubm90YXRpb24gPSBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImRlZmF1bHRzIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9kZWZhdWx0cykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImRlZmF1bHRzIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2RlZmF1bHRzKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJhcmd1bWVudHMgZmllbGQgXCJkZWZhdWx0c1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNjU4OSwxMSArNjcxOSwxMSBAQAogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImRlZmF1bHRzXCIgbWlzc2luZyBmcm9tIGFyZ3VtZW50cyIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImt3X2RlZmF1bHRzIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rd19kZWZhdWx0cykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImt3X2RlZmF1bHRzIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2t3X2RlZmF1bHRzKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJhcmd1bWVudHMgZmllbGQgXCJrd19kZWZhdWx0c1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNjYyOSw5ICs2NzU5LDkgQEAKICAgICAgICAgaWRlbnRpZmllciBhcmc7CiAgICAgICAgIGV4cHJfdHkgYW5ub3RhdGlvbjsKIAotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJhcmciKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2FyZykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYXJnIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2FyZyk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmYXJnLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY2NDEsOSArNjc3MSw5IEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYXJnXCIgbWlzc2luZyBmcm9tIGFyZyIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImFubm90YXRpb24iKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2Fubm90YXRpb24pKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImFubm90YXRpb24iKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYW5ub3RhdGlvbik7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmYW5ub3RhdGlvbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02NjY2LDkgKzY3OTYsOSBAQAogICAgICAgICBpZGVudGlmaWVyIGFyZzsKICAgICAgICAgZXhwcl90eSB2YWx1ZTsKIAotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJhcmciKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2FyZykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYXJnIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2FyZyk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmYXJnLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY2NzgsOSArNjgwOCw5IEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYXJnXCIgbWlzc2luZyBmcm9tIGtleXdvcmQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZSIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02NzA0LDkgKzY4MzQsOSBAQAogICAgICAgICBpZGVudGlmaWVyIG5hbWU7CiAgICAgICAgIGlkZW50aWZpZXIgYXNuYW1lOwogCi0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm5hbWUiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX25hbWUpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm5hbWUiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmbmFtZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02NzE2LDkgKzY4NDYsOSBAQAogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm5hbWVcIiBtaXNzaW5nIGZyb20gYWxpYXMiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJhc25hbWUiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2FzbmFtZSkpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYXNuYW1lIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2FzbmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmYXNuYW1lLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY3MzQsNiArNjg2NCw0MyBAQAogICAgICAgICByZXR1cm4gMTsKIH0KIAoraW50CitvYmoyYXN0X3dpdGhpdGVtKFB5T2JqZWN0KiBvYmosIHdpdGhpdGVtX3R5KiBvdXQsIFB5QXJlbmEqIGFyZW5hKQoreworICAgICAgICBQeU9iamVjdCogdG1wID0gTlVMTDsKKyAgICAgICAgZXhwcl90eSBjb250ZXh0X2V4cHI7CisgICAgICAgIGV4cHJfdHkgb3B0aW9uYWxfdmFyczsKKworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2NvbnRleHRfZXhwcikpIHsKKyAgICAgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jb250ZXh0X2V4cHIpOworICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmNvbnRleHRfZXhwciwgYXJlbmEpOworICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOworICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiY29udGV4dF9leHByXCIgbWlzc2luZyBmcm9tIHdpdGhpdGVtIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcHRpb25hbF92YXJzKSkgeworICAgICAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX29wdGlvbmFsX3ZhcnMpOworICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJm9wdGlvbmFsX3ZhcnMsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG9wdGlvbmFsX3ZhcnMgPSBOVUxMOworICAgICAgICB9CisgICAgICAgICpvdXQgPSB3aXRoaXRlbShjb250ZXh0X2V4cHIsIG9wdGlvbmFsX3ZhcnMsIGFyZW5hKTsKKyAgICAgICAgcmV0dXJuIDA7CitmYWlsZWQ6CisgICAgICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICAgICAgcmV0dXJuIDE7Cit9CisKIAogc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfYXN0bW9kdWxlID0gewogICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsICJfYXN0IgpAQCAtNjc1MCw4ICs2OTE3LDYgQEAKICAgICAgICAgICAgIE5VTEw7CiAgICAgICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlDRl9PTkxZX0FTVCIsIFB5Q0ZfT05MWV9BU1QpIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJfX3ZlcnNpb25fXyIsICI4MjE2MyIpIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJtb2QiLCAoUHlPYmplY3QqKW1vZF90eXBlKSA8IDApIHJldHVybgogICAgICAgICAgICAgTlVMTDsKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJNb2R1bGUiLCAoUHlPYmplY3QqKU1vZHVsZV90eXBlKSA8IDApCkBAIC02Nzg1LDEwICs2OTUwLDggQEAKICAgICAgICAgICAgIE5VTEw7CiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiUmFpc2UiLCAoUHlPYmplY3QqKVJhaXNlX3R5cGUpIDwgMCkgcmV0dXJuCiAgICAgICAgICAgICBOVUxMOwotICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlRyeUV4Y2VwdCIsIChQeU9iamVjdCopVHJ5RXhjZXB0X3R5cGUpIDwKLSAgICAgICAgICAgIDApIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlRyeUZpbmFsbHkiLCAoUHlPYmplY3QqKVRyeUZpbmFsbHlfdHlwZSkgPAotICAgICAgICAgICAgMCkgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiVHJ5IiwgKFB5T2JqZWN0KilUcnlfdHlwZSkgPCAwKSByZXR1cm4KKyAgICAgICAgICAgIE5VTEw7CiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQXNzZXJ0IiwgKFB5T2JqZWN0KilBc3NlcnRfdHlwZSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiSW1wb3J0IiwgKFB5T2JqZWN0KilJbXBvcnRfdHlwZSkgPCAwKQpAQCAtNjgzMyw2ICs2OTk2LDggQEAKICAgICAgICAgICAgIChQeU9iamVjdCopR2VuZXJhdG9yRXhwX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiWWllbGQiLCAoUHlPYmplY3QqKVlpZWxkX3R5cGUpIDwgMCkgcmV0dXJuCiAgICAgICAgICAgICBOVUxMOworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIllpZWxkRnJvbSIsIChQeU9iamVjdCopWWllbGRGcm9tX3R5cGUpIDwKKyAgICAgICAgICAgIDApIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNvbXBhcmUiLCAoUHlPYmplY3QqKUNvbXBhcmVfdHlwZSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQ2FsbCIsIChQeU9iamVjdCopQ2FsbF90eXBlKSA8IDApIHJldHVybgpAQCAtNjk1MSw2ICs3MTE2LDggQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgImFsaWFzIiwgKFB5T2JqZWN0KilhbGlhc190eXBlKSA8IDApIHJldHVybgogICAgICAgICAgICAgTlVMTDsKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJ3aXRoaXRlbSIsIChQeU9iamVjdCopd2l0aGl0ZW1fdHlwZSkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHJldHVybiBtOwogfQogCmRpZmYgLS1naXQgYS9QeXRob24vX3dhcm5pbmdzLmMgYi9QeXRob24vX3dhcm5pbmdzLmMKaW5kZXggYzEyZGI0NC4uZjMzZTQ3NyAxMDA2NDQKLS0tIGEvUHl0aG9uL193YXJuaW5ncy5jCisrKyBiL1B5dGhvbi9fd2FybmluZ3MuYwpAQCAtMTgsMTEgKzE4LDEyIEBACiBjaGVja19tYXRjaGVkKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBfUHlfSURFTlRJRklFUihtYXRjaCk7CiAgICAgaW50IHJjOwogCiAgICAgaWYgKG9iaiA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gMTsKLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKG9iaiwgIm1hdGNoIiwgIk8iLCBhcmcpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob2JqLCAmUHlJZF9tYXRjaCwgIk8iLCBhcmcpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC0yMDIsMTMgKzIwMywxMyBAQAogCiAgICAgbW9kX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoZmlsZW5hbWUpOwogICAgIGlmIChtb2Rfc3RyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBsZW4gPSBQeVVuaWNvZGVfR2V0U2l6ZShmaWxlbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbiA9IFB5VW5pY29kZV9HZXRMZW5ndGgoZmlsZW5hbWUpOwogICAgIGlmIChsZW4gPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobGVuID49IDMgJiYKICAgICAgICAgc3RybmNtcChtb2Rfc3RyICsgKGxlbiAtIDMpLCAiLnB5IiwgMykgPT0gMCkgewotICAgICAgICBtb2R1bGUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUobW9kX3N0ciwgbGVuLTMpOworICAgICAgICBtb2R1bGUgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGZpbGVuYW1lLCAwLCBsZW4tMyk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBtb2R1bGUgPSBmaWxlbmFtZTsKQEAgLTI0NiwxMCArMjQ3LDExIEBACiAgICAgUHlPYmplY3QgKmZfc3RkZXJyOwogICAgIFB5T2JqZWN0ICpuYW1lOwogICAgIGNoYXIgbGluZW5vX3N0clsxMjhdOworICAgIF9QeV9JREVOVElGSUVSKF9fbmFtZV9fKTsKIAogICAgIFB5T1Nfc25wcmludGYobGluZW5vX3N0ciwgc2l6ZW9mKGxpbmVub19zdHIpLCAiOiVkOiAiLCBsaW5lbm8pOwogCi0gICAgbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoY2F0ZWdvcnksICJfX25hbWVfXyIpOworICAgIG5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNhdGVnb3J5LCAmUHlJZF9fX25hbWVfXyk7CiAgICAgaWYgKG5hbWUgPT0gTlVMTCkgIC8qIFhYWCBDYW4gYW4gb2JqZWN0IGxhY2sgYSAnX19uYW1lX18nIGF0dHJpYnV0ZT8gKi8KICAgICAgICAgcmV0dXJuOwogCkBAIC00MDksMTAgKzQxMSwxMCBAQAogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXM7CiAKLSAgICAgICAgICAgIGlmICghUHlNZXRob2RfQ2hlY2soc2hvd19meG4pICYmICFQeUZ1bmN0aW9uX0NoZWNrKHNob3dfZnhuKSkgeworICAgICAgICAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKHNob3dfZnhuKSkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3YXJuaW5ncy5zaG93d2FybmluZygpIG11c3QgYmUgc2V0IHRvIGEgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24gb3IgbWV0aG9kIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsYWJsZSIpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzaG93X2Z4bik7CiAgICAgICAgICAgICAgICAgZ290byBjbGVhbnVwOwogICAgICAgICAgICAgfQpAQCAtNDk3LDE4ICs0OTksMjggQEAKICAgICAvKiBTZXR1cCBmaWxlbmFtZS4gKi8KICAgICAqZmlsZW5hbWUgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhnbG9iYWxzLCAiX19maWxlX18iKTsKICAgICBpZiAoKmZpbGVuYW1lICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrKCpmaWxlbmFtZSkpIHsKLSAgICAgICAgUHlfc3NpemVfdCBsZW4gPSBQeVVuaWNvZGVfR2V0U2l6ZSgqZmlsZW5hbWUpOwotICAgICAgICBQeV9VTklDT0RFICp1bmljb2RlID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKmZpbGVuYW1lKTsKKyAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgIGludCBraW5kOworICAgICAgICB2b2lkICpkYXRhOwogCisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoKmZpbGVuYW1lKSkKKyAgICAgICAgICAgIGdvdG8gaGFuZGxlX2Vycm9yOworCisgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HZXRMZW5ndGgoKmZpbGVuYW1lKTsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKCpmaWxlbmFtZSk7CisgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSgqZmlsZW5hbWUpOworCisjZGVmaW5lIGFzY2lpX2xvd2VyKGMpICgoYyA8PSAxMjcpID8gUHlfVE9MT1dFUihjKSA6IDApCiAgICAgICAgIC8qIGlmIGZpbGVuYW1lLmxvd2VyKCkuZW5kc3dpdGgoKCIucHljIiwgIi5weW8iKSk6ICovCiAgICAgICAgIGlmIChsZW4gPj0gNCAmJgotICAgICAgICAgICAgdW5pY29kZVtsZW4tNF0gPT0gJy4nICYmCi0gICAgICAgICAgICBQeV9VTklDT0RFX1RPTE9XRVIodW5pY29kZVtsZW4tM10pID09ICdwJyAmJgotICAgICAgICAgICAgUHlfVU5JQ09ERV9UT0xPV0VSKHVuaWNvZGVbbGVuLTJdKSA9PSAneScgJiYKLSAgICAgICAgICAgIChQeV9VTklDT0RFX1RPTE9XRVIodW5pY29kZVtsZW4tMV0pID09ICdjJyB8fAotICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfVE9MT1dFUih1bmljb2RlW2xlbi0xXSkgPT0gJ28nKSkKKyAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGxlbi00KSA9PSAnLicgJiYKKyAgICAgICAgICAgIGFzY2lpX2xvd2VyKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGxlbi0zKSkgPT0gJ3AnICYmCisgICAgICAgICAgICBhc2NpaV9sb3dlcihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBsZW4tMikpID09ICd5JyAmJgorICAgICAgICAgICAgKGFzY2lpX2xvd2VyKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGxlbi0xKSkgPT0gJ2MnIHx8CisgICAgICAgICAgICAgICAgYXNjaWlfbG93ZXIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbGVuLTEpKSA9PSAnbycpKQogICAgICAgICB7Ci0gICAgICAgICAgICAqZmlsZW5hbWUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUodW5pY29kZSwgbGVuLTEpOworICAgICAgICAgICAgKmZpbGVuYW1lID0gUHlVbmljb2RlX1N1YnN0cmluZygqZmlsZW5hbWUsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKCpmaWxlbmFtZSktMSk7CiAgICAgICAgICAgICBpZiAoKmZpbGVuYW1lID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBoYW5kbGVfZXJyb3I7CiAgICAgICAgIH0KQEAgLTY0Myw4ICs2NTUsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChtb2R1bGVfZ2xvYmFscykgewotICAgICAgICBzdGF0aWMgUHlPYmplY3QgKmdldF9zb3VyY2VfbmFtZSA9IE5VTEw7Ci0gICAgICAgIHN0YXRpYyBQeU9iamVjdCAqc3BsaXRsaW5lc19uYW1lID0gTlVMTDsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoZ2V0X3NvdXJjZSk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHNwbGl0bGluZXMpOworICAgICAgICBQeU9iamVjdCAqdG1wOwogICAgICAgICBQeU9iamVjdCAqbG9hZGVyOwogICAgICAgICBQeU9iamVjdCAqbW9kdWxlX25hbWU7CiAgICAgICAgIFB5T2JqZWN0ICpzb3VyY2U7CkBAIC02NTIsMTYgKzY2NSwxMCBAQAogICAgICAgICBQeU9iamVjdCAqc291cmNlX2xpbmU7CiAgICAgICAgIFB5T2JqZWN0ICpyZXR1cm5lZDsKIAotICAgICAgICBpZiAoZ2V0X3NvdXJjZV9uYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgIGdldF9zb3VyY2VfbmFtZSA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJnZXRfc291cmNlIik7Ci0gICAgICAgICAgICBpZiAoIWdldF9zb3VyY2VfbmFtZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoc3BsaXRsaW5lc19uYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgIHNwbGl0bGluZXNfbmFtZSA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJzcGxpdGxpbmVzIik7Ci0gICAgICAgICAgICBpZiAoIXNwbGl0bGluZXNfbmFtZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQorICAgICAgICBpZiAoKHRtcCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX2dldF9zb3VyY2UpKSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICgodG1wID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfc3BsaXRsaW5lcykpID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgICAgICAvKiBDaGVjay9nZXQgdGhlIHJlcXVpc2l0ZSBwaWVjZXMgbmVlZGVkIGZvciB0aGUgbG9hZGVyLiAqLwogICAgICAgICBsb2FkZXIgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVfZ2xvYmFscywgIl9fbG9hZGVyX18iKTsKQEAgLTY3MSwxMSArNjc4LDExIEBACiAgICAgICAgICAgICBnb3RvIHN0YW5kYXJkX2NhbGw7CiAKICAgICAgICAgLyogTWFrZSBzdXJlIHRoZSBsb2FkZXIgaW1wbGVtZW50cyB0aGUgb3B0aW9uYWwgZ2V0X3NvdXJjZSgpIG1ldGhvZC4gKi8KLSAgICAgICAgaWYgKCFQeU9iamVjdF9IYXNBdHRyU3RyaW5nKGxvYWRlciwgImdldF9zb3VyY2UiKSkKKyAgICAgICAgaWYgKCFfUHlPYmplY3RfSGFzQXR0cklkKGxvYWRlciwgJlB5SWRfZ2V0X3NvdXJjZSkpCiAgICAgICAgICAgICAgICAgZ290byBzdGFuZGFyZF9jYWxsOwogICAgICAgICAvKiBDYWxsIGdldF9zb3VyY2UoKSB0byBnZXQgdGhlIHNvdXJjZSBjb2RlLiAqLwotICAgICAgICBzb3VyY2UgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhsb2FkZXIsIGdldF9zb3VyY2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lLCBOVUxMKTsKKyAgICAgICAgc291cmNlID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MobG9hZGVyLCBQeUlkX2dldF9zb3VyY2Uub2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfbmFtZSwgTlVMTCk7CiAgICAgICAgIGlmICghc291cmNlKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGVsc2UgaWYgKHNvdXJjZSA9PSBQeV9Ob25lKSB7CkBAIC02ODQsOCArNjkxLDkgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8qIFNwbGl0IHRoZSBzb3VyY2UgaW50byBsaW5lcy4gKi8KLSAgICAgICAgc291cmNlX2xpc3QgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzb3VyY2UsIHNwbGl0bGluZXNfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgc291cmNlX2xpc3QgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlJZF9zcGxpdGxpbmVzLm9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKHNvdXJjZSk7CiAgICAgICAgIGlmICghc291cmNlX2xpc3QpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTk1MCwyMyArOTU4LDMwIEBACiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBfZmlsdGVycyA9IGluaXRfZmlsdGVycygpOwotICAgIGlmIChfZmlsdGVycyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoX2ZpbHRlcnMgPT0gTlVMTCkgeworICAgICAgICBfZmlsdGVycyA9IGluaXRfZmlsdGVycygpOworICAgICAgICBpZiAoX2ZpbHRlcnMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBQeV9JTkNSRUYoX2ZpbHRlcnMpOwogICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgImZpbHRlcnMiLCBfZmlsdGVycykgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIF9vbmNlX3JlZ2lzdHJ5ID0gUHlEaWN0X05ldygpOwotICAgIGlmIChfb25jZV9yZWdpc3RyeSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoX29uY2VfcmVnaXN0cnkgPT0gTlVMTCkgeworICAgICAgICBfb25jZV9yZWdpc3RyeSA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgaWYgKF9vbmNlX3JlZ2lzdHJ5ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgUHlfSU5DUkVGKF9vbmNlX3JlZ2lzdHJ5KTsKICAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJfb25jZXJlZ2lzdHJ5IiwgX29uY2VfcmVnaXN0cnkpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBfZGVmYXVsdF9hY3Rpb24gPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiZGVmYXVsdCIpOwotICAgIGlmIChfZGVmYXVsdF9hY3Rpb24gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKF9kZWZhdWx0X2FjdGlvbiA9PSBOVUxMKSB7CisgICAgICAgIF9kZWZhdWx0X2FjdGlvbiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJkZWZhdWx0Iik7CisgICAgICAgIGlmIChfZGVmYXVsdF9hY3Rpb24gPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9JTkNSRUYoX2RlZmF1bHRfYWN0aW9uKTsKICAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJfZGVmYXVsdGFjdGlvbiIsIF9kZWZhdWx0X2FjdGlvbikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gbTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9hc2RsLmMgYi9QeXRob24vYXNkbC5jCmluZGV4IGMzMGQ3ZDIwLi5lN2UzMjgwIDEwMDY0NAotLS0gYS9QeXRob24vYXNkbC5jCisrKyBiL1B5dGhvbi9hc2RsLmMKQEAgLTIsNyArMiw3IEBACiAjaW5jbHVkZSAiYXNkbC5oIgogCiBhc2RsX3NlcSAqCi1hc2RsX3NlcV9uZXcoaW50IHNpemUsIFB5QXJlbmEgKmFyZW5hKQorYXNkbF9zZXFfbmV3KFB5X3NzaXplX3Qgc2l6ZSwgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgYXNkbF9zZXEgKnNlcSA9IE5VTEw7CiAgICAgc2l6ZV90IG4gPSAoc2l6ZSA/IChzaXplb2Yodm9pZCAqKSAqIChzaXplIC0gMSkpIDogMCk7CkBAIC0zMyw3ICszMyw3IEBACiB9CiAKIGFzZGxfaW50X3NlcSAqCi1hc2RsX2ludF9zZXFfbmV3KGludCBzaXplLCBQeUFyZW5hICphcmVuYSkKK2FzZGxfaW50X3NlcV9uZXcoUHlfc3NpemVfdCBzaXplLCBQeUFyZW5hICphcmVuYSkKIHsKICAgICBhc2RsX2ludF9zZXEgKnNlcSA9IE5VTEw7CiAgICAgc2l6ZV90IG4gPSAoc2l6ZSA/IChzaXplb2Yodm9pZCAqKSAqIChzaXplIC0gMSkpIDogMCk7CmRpZmYgLS1naXQgYS9QeXRob24vYXN0LmMgYi9QeXRob24vYXN0LmMKaW5kZXggZWRjZDE4Yi4uMWI1ZmE2YyAxMDA2NDQKLS0tIGEvUHl0aG9uL2FzdC5jCisrKyBiL1B5dGhvbi9hc3QuYwpAQCAtMSwyNCArMSw1MDYgQEAKIC8qCiAgKiBUaGlzIGZpbGUgaW5jbHVkZXMgZnVuY3Rpb25zIHRvIHRyYW5zZm9ybSBhIGNvbmNyZXRlIHN5bnRheCB0cmVlIChDU1QpIHRvCi0gKiBhbiBhYnN0cmFjdCBzeW50YXggdHJlZSAoQVNUKS4gIFRoZSBtYWluIGZ1bmN0aW9uIGlzIFB5QVNUX0Zyb21Ob2RlKCkuCisgKiBhbiBhYnN0cmFjdCBzeW50YXggdHJlZSAoQVNUKS4gVGhlIG1haW4gZnVuY3Rpb24gaXMgUHlBU1RfRnJvbU5vZGUoKS4KICAqCiAgKi8KICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJQeXRob24tYXN0LmgiCi0jaW5jbHVkZSAiZ3JhbW1hci5oIgogI2luY2x1ZGUgIm5vZGUuaCIKICNpbmNsdWRlICJhc3QuaCIKICNpbmNsdWRlICJ0b2tlbi5oIgotI2luY2x1ZGUgInBhcnNldG9rLmgiCi0jaW5jbHVkZSAiZ3JhbWluaXQuaCIKIAogI2luY2x1ZGUgPGFzc2VydC5oPgogCitzdGF0aWMgaW50IHZhbGlkYXRlX3N0bXRzKGFzZGxfc2VxICopOworc3RhdGljIGludCB2YWxpZGF0ZV9leHBycyhhc2RsX3NlcSAqLCBleHByX2NvbnRleHRfdHksIGludCk7CitzdGF0aWMgaW50IHZhbGlkYXRlX25vbmVtcHR5X3NlcShhc2RsX3NlcSAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CitzdGF0aWMgaW50IHZhbGlkYXRlX3N0bXQoc3RtdF90eSk7CitzdGF0aWMgaW50IHZhbGlkYXRlX2V4cHIoZXhwcl90eSwgZXhwcl9jb250ZXh0X3R5KTsKKworc3RhdGljIGludAordmFsaWRhdGVfY29tcHJlaGVuc2lvbihhc2RsX3NlcSAqZ2VucykKK3sKKyAgICBpbnQgaTsKKyAgICBpZiAoIWFzZGxfc2VxX0xFTihnZW5zKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImNvbXByZWhlbnNpb24gd2l0aCBubyBnZW5lcmF0b3JzIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKGdlbnMpOyBpKyspIHsKKyAgICAgICAgY29tcHJlaGVuc2lvbl90eSBjb21wID0gYXNkbF9zZXFfR0VUKGdlbnMsIGkpOworICAgICAgICBpZiAoIXZhbGlkYXRlX2V4cHIoY29tcC0+dGFyZ2V0LCBTdG9yZSkgfHwKKyAgICAgICAgICAgICF2YWxpZGF0ZV9leHByKGNvbXAtPml0ZXIsIExvYWQpIHx8CisgICAgICAgICAgICAhdmFsaWRhdGVfZXhwcnMoY29tcC0+aWZzLCBMb2FkLCAwKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAordmFsaWRhdGVfc2xpY2Uoc2xpY2VfdHkgc2xpY2UpCit7CisgICAgc3dpdGNoIChzbGljZS0+a2luZCkgeworICAgIGNhc2UgU2xpY2Vfa2luZDoKKyAgICAgICAgcmV0dXJuICghc2xpY2UtPnYuU2xpY2UubG93ZXIgfHwgdmFsaWRhdGVfZXhwcihzbGljZS0+di5TbGljZS5sb3dlciwgTG9hZCkpICYmCisgICAgICAgICAgICAoIXNsaWNlLT52LlNsaWNlLnVwcGVyIHx8IHZhbGlkYXRlX2V4cHIoc2xpY2UtPnYuU2xpY2UudXBwZXIsIExvYWQpKSAmJgorICAgICAgICAgICAgKCFzbGljZS0+di5TbGljZS5zdGVwIHx8IHZhbGlkYXRlX2V4cHIoc2xpY2UtPnYuU2xpY2Uuc3RlcCwgTG9hZCkpOworICAgIGNhc2UgRXh0U2xpY2Vfa2luZDogeworICAgICAgICBpbnQgaTsKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV9ub25lbXB0eV9zZXEoc2xpY2UtPnYuRXh0U2xpY2UuZGltcywgImRpbXMiLCAiRXh0U2xpY2UiKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKHNsaWNlLT52LkV4dFNsaWNlLmRpbXMpOyBpKyspCisgICAgICAgICAgICBpZiAoIXZhbGlkYXRlX3NsaWNlKGFzZGxfc2VxX0dFVChzbGljZS0+di5FeHRTbGljZS5kaW1zLCBpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBjYXNlIEluZGV4X2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHNsaWNlLT52LkluZGV4LnZhbHVlLCBMb2FkKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJ1bmtub3duIHNsaWNlIG5vZGUiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9rZXl3b3Jkcyhhc2RsX3NlcSAqa2V5d29yZHMpCit7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihrZXl3b3Jkcyk7IGkrKykKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV9leHByKCgoa2V5d29yZF90eSlhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpKS0+dmFsdWUsIExvYWQpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX2FyZ3MoYXNkbF9zZXEgKmFyZ3MpCit7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihhcmdzKTsgaSsrKSB7CisgICAgICAgIGFyZ190eSBhcmcgPSBhc2RsX3NlcV9HRVQoYXJncywgaSk7CisgICAgICAgIGlmIChhcmctPmFubm90YXRpb24gJiYgIXZhbGlkYXRlX2V4cHIoYXJnLT5hbm5vdGF0aW9uLCBMb2FkKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKgorZXhwcl9jb250ZXh0X25hbWUoZXhwcl9jb250ZXh0X3R5IGN0eCkKK3sKKyAgICBzd2l0Y2ggKGN0eCkgeworICAgIGNhc2UgTG9hZDoKKyAgICAgICAgcmV0dXJuICJMb2FkIjsKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gIlN0b3JlIjsKKyAgICBjYXNlIERlbDoKKyAgICAgICAgcmV0dXJuICJEZWwiOworICAgIGNhc2UgQXVnTG9hZDoKKyAgICAgICAgcmV0dXJuICJBdWdMb2FkIjsKKyAgICBjYXNlIEF1Z1N0b3JlOgorICAgICAgICByZXR1cm4gIkF1Z1N0b3JlIjsKKyAgICBjYXNlIFBhcmFtOgorICAgICAgICByZXR1cm4gIlBhcmFtIjsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIHJldHVybiAiKHVua25vd24pIjsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX2FyZ3VtZW50cyhhcmd1bWVudHNfdHkgYXJncykKK3sKKyAgICBpZiAoIXZhbGlkYXRlX2FyZ3MoYXJncy0+YXJncykpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChhcmdzLT52YXJhcmdhbm5vdGF0aW9uKSB7CisgICAgICAgIGlmICghYXJncy0+dmFyYXJnKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInZhcmFyZ2Fubm90YXRpb24gYnV0IG5vIHZhcmFyZyBvbiBhcmd1bWVudHMiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGlmICghdmFsaWRhdGVfZXhwcihhcmdzLT52YXJhcmdhbm5vdGF0aW9uLCBMb2FkKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoIXZhbGlkYXRlX2FyZ3MoYXJncy0+a3dvbmx5YXJncykpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChhcmdzLT5rd2FyZ2Fubm90YXRpb24pIHsKKyAgICAgICAgaWYgKCFhcmdzLT5rd2FyZykgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJrd2FyZ2Fubm90YXRpb24gYnV0IG5vIGt3YXJnIG9uIGFyZ3VtZW50cyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF2YWxpZGF0ZV9leHByKGFyZ3MtPmt3YXJnYW5ub3RhdGlvbiwgTG9hZCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKGFzZGxfc2VxX0xFTihhcmdzLT5kZWZhdWx0cykgPiBhc2RsX3NlcV9MRU4oYXJncy0+YXJncykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtb3JlIHBvc2l0aW9uYWwgZGVmYXVsdHMgdGhhbiBhcmdzIG9uIGFyZ3VtZW50cyIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKGFzZGxfc2VxX0xFTihhcmdzLT5rd19kZWZhdWx0cykgIT0gYXNkbF9zZXFfTEVOKGFyZ3MtPmt3b25seWFyZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibGVuZ3RoIG9mIGt3b25seWFyZ3MgaXMgbm90IHRoZSBzYW1lIGFzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJrd19kZWZhdWx0cyBvbiBhcmd1bWVudHMiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiB2YWxpZGF0ZV9leHBycyhhcmdzLT5kZWZhdWx0cywgTG9hZCwgMCkgJiYgdmFsaWRhdGVfZXhwcnMoYXJncy0+a3dfZGVmYXVsdHMsIExvYWQsIDEpOworfQorCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9leHByKGV4cHJfdHkgZXhwLCBleHByX2NvbnRleHRfdHkgY3R4KQoreworICAgIGludCBjaGVja19jdHggPSAxOworICAgIGV4cHJfY29udGV4dF90eSBhY3R1YWxfY3R4OworCisgICAgLyogRmlyc3QgY2hlY2sgZXhwcmVzc2lvbiBjb250ZXh0LiAqLworICAgIHN3aXRjaCAoZXhwLT5raW5kKSB7CisgICAgY2FzZSBBdHRyaWJ1dGVfa2luZDoKKyAgICAgICAgYWN0dWFsX2N0eCA9IGV4cC0+di5BdHRyaWJ1dGUuY3R4OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN1YnNjcmlwdF9raW5kOgorICAgICAgICBhY3R1YWxfY3R4ID0gZXhwLT52LlN1YnNjcmlwdC5jdHg7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhcnJlZF9raW5kOgorICAgICAgICBhY3R1YWxfY3R4ID0gZXhwLT52LlN0YXJyZWQuY3R4OworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5hbWVfa2luZDoKKyAgICAgICAgYWN0dWFsX2N0eCA9IGV4cC0+di5OYW1lLmN0eDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaXN0X2tpbmQ6CisgICAgICAgIGFjdHVhbF9jdHggPSBleHAtPnYuTGlzdC5jdHg7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHVwbGVfa2luZDoKKyAgICAgICAgYWN0dWFsX2N0eCA9IGV4cC0+di5UdXBsZS5jdHg7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChjdHggIT0gTG9hZCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJleHByZXNzaW9uIHdoaWNoIGNhbid0IGJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYXNzaWduZWQgdG8gaW4gJXMgY29udGV4dCIsIGV4cHJfY29udGV4dF9uYW1lKGN0eCkpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgY2hlY2tfY3R4ID0gMDsKKyAgICB9CisgICAgaWYgKGNoZWNrX2N0eCAmJiBhY3R1YWxfY3R4ICE9IGN0eCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgImV4cHJlc3Npb24gbXVzdCBoYXZlICVzIGNvbnRleHQgYnV0IGhhcyAlcyBpbnN0ZWFkIiwKKyAgICAgICAgICAgICAgICAgICAgIGV4cHJfY29udGV4dF9uYW1lKGN0eCksIGV4cHJfY29udGV4dF9uYW1lKGFjdHVhbF9jdHgpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogTm93IHZhbGlkYXRlIGV4cHJlc3Npb24uICovCisgICAgc3dpdGNoIChleHAtPmtpbmQpIHsKKyAgICBjYXNlIEJvb2xPcF9raW5kOgorICAgICAgICBpZiAoYXNkbF9zZXFfTEVOKGV4cC0+di5Cb29sT3AudmFsdWVzKSA8IDIpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQm9vbE9wIHdpdGggbGVzcyB0aGFuIDIgdmFsdWVzIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcnMoZXhwLT52LkJvb2xPcC52YWx1ZXMsIExvYWQsIDApOworICAgIGNhc2UgQmluT3Bfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoZXhwLT52LkJpbk9wLmxlZnQsIExvYWQpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKGV4cC0+di5CaW5PcC5yaWdodCwgTG9hZCk7CisgICAgY2FzZSBVbmFyeU9wX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKGV4cC0+di5VbmFyeU9wLm9wZXJhbmQsIExvYWQpOworICAgIGNhc2UgTGFtYmRhX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9hcmd1bWVudHMoZXhwLT52LkxhbWJkYS5hcmdzKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihleHAtPnYuTGFtYmRhLmJvZHksIExvYWQpOworICAgIGNhc2UgSWZFeHBfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoZXhwLT52LklmRXhwLnRlc3QsIExvYWQpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKGV4cC0+di5JZkV4cC5ib2R5LCBMb2FkKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihleHAtPnYuSWZFeHAub3JlbHNlLCBMb2FkKTsKKyAgICBjYXNlIERpY3Rfa2luZDoKKyAgICAgICAgaWYgKGFzZGxfc2VxX0xFTihleHAtPnYuRGljdC5rZXlzKSAhPSBhc2RsX3NlcV9MRU4oZXhwLT52LkRpY3QudmFsdWVzKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpY3QgZG9lc24ndCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBrZXlzIGFzIHZhbHVlcyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5EaWN0LmtleXMsIExvYWQsIDApICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHBycyhleHAtPnYuRGljdC52YWx1ZXMsIExvYWQsIDApOworICAgIGNhc2UgU2V0X2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHBycyhleHAtPnYuU2V0LmVsdHMsIExvYWQsIDApOworI2RlZmluZSBDT01QKE5BTUUpIFwKKyAgICAgICAgY2FzZSBOQU1FICMjIF9raW5kOiBcCisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfY29tcHJlaGVuc2lvbihleHAtPnYuTkFNRS5nZW5lcmF0b3JzKSAmJiBcCisgICAgICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihleHAtPnYuTkFNRS5lbHQsIExvYWQpOworICAgIENPTVAoTGlzdENvbXApCisgICAgQ09NUChTZXRDb21wKQorICAgIENPTVAoR2VuZXJhdG9yRXhwKQorI3VuZGVmIENPTVAKKyAgICBjYXNlIERpY3RDb21wX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9jb21wcmVoZW5zaW9uKGV4cC0+di5EaWN0Q29tcC5nZW5lcmF0b3JzKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihleHAtPnYuRGljdENvbXAua2V5LCBMb2FkKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihleHAtPnYuRGljdENvbXAudmFsdWUsIExvYWQpOworICAgIGNhc2UgWWllbGRfa2luZDoKKyAgICAgICAgcmV0dXJuICFleHAtPnYuWWllbGQudmFsdWUgfHwgdmFsaWRhdGVfZXhwcihleHAtPnYuWWllbGQudmFsdWUsIExvYWQpOworICAgIGNhc2UgWWllbGRGcm9tX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKGV4cC0+di5ZaWVsZEZyb20udmFsdWUsIExvYWQpOworICAgIGNhc2UgQ29tcGFyZV9raW5kOgorICAgICAgICBpZiAoIWFzZGxfc2VxX0xFTihleHAtPnYuQ29tcGFyZS5jb21wYXJhdG9ycykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQ29tcGFyZSB3aXRoIG5vIGNvbXBhcmF0b3JzIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoYXNkbF9zZXFfTEVOKGV4cC0+di5Db21wYXJlLmNvbXBhcmF0b3JzKSAhPQorICAgICAgICAgICAgYXNkbF9zZXFfTEVOKGV4cC0+di5Db21wYXJlLm9wcykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQ29tcGFyZSBoYXMgYSBkaWZmZXJlbnQgbnVtYmVyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2YgY29tcGFyYXRvcnMgYW5kIG9wZXJhbmRzIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcnMoZXhwLT52LkNvbXBhcmUuY29tcGFyYXRvcnMsIExvYWQsIDApICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKGV4cC0+di5Db21wYXJlLmxlZnQsIExvYWQpOworICAgIGNhc2UgQ2FsbF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihleHAtPnYuQ2FsbC5mdW5jLCBMb2FkKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoZXhwLT52LkNhbGwuYXJncywgTG9hZCwgMCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2tleXdvcmRzKGV4cC0+di5DYWxsLmtleXdvcmRzKSAmJgorICAgICAgICAgICAgKCFleHAtPnYuQ2FsbC5zdGFyYXJncyB8fCB2YWxpZGF0ZV9leHByKGV4cC0+di5DYWxsLnN0YXJhcmdzLCBMb2FkKSkgJiYKKyAgICAgICAgICAgICghZXhwLT52LkNhbGwua3dhcmdzIHx8IHZhbGlkYXRlX2V4cHIoZXhwLT52LkNhbGwua3dhcmdzLCBMb2FkKSk7CisgICAgY2FzZSBOdW1fa2luZDogeworICAgICAgICBQeU9iamVjdCAqbiA9IGV4cC0+di5OdW0ubjsKKyAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2tFeGFjdChuKSAmJiAhUHlGbG9hdF9DaGVja0V4YWN0KG4pICYmCisgICAgICAgICAgICAhUHlDb21wbGV4X0NoZWNrRXhhY3QobikpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJub24tbnVtZXJpYyB0eXBlIGluIE51bSIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGNhc2UgU3RyX2tpbmQ6IHsKKyAgICAgICAgUHlPYmplY3QgKnMgPSBleHAtPnYuU3RyLnM7CisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3QocykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJub24tc3RyaW5nIHR5cGUgaW4gU3RyIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgY2FzZSBCeXRlc19raW5kOiB7CisgICAgICAgIFB5T2JqZWN0ICpiID0gZXhwLT52LkJ5dGVzLnM7CisgICAgICAgIGlmICghUHlCeXRlc19DaGVja0V4YWN0KGIpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAibm9uLWJ5dGVzIHR5cGUgaW4gQnl0ZXMiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBjYXNlIEF0dHJpYnV0ZV9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihleHAtPnYuQXR0cmlidXRlLnZhbHVlLCBMb2FkKTsKKyAgICBjYXNlIFN1YnNjcmlwdF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfc2xpY2UoZXhwLT52LlN1YnNjcmlwdC5zbGljZSkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoZXhwLT52LlN1YnNjcmlwdC52YWx1ZSwgTG9hZCk7CisgICAgY2FzZSBTdGFycmVkX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKGV4cC0+di5TdGFycmVkLnZhbHVlLCBjdHgpOworICAgIGNhc2UgTGlzdF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcnMoZXhwLT52Lkxpc3QuZWx0cywgY3R4LCAwKTsKKyAgICBjYXNlIFR1cGxlX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHBycyhleHAtPnYuVHVwbGUuZWx0cywgY3R4LCAwKTsKKyAgICAvKiBUaGVzZSBsYXN0IGNhc2VzIGRvbid0IGhhdmUgYW55IGNoZWNraW5nLiAqLworICAgIGNhc2UgTmFtZV9raW5kOgorICAgIGNhc2UgRWxsaXBzaXNfa2luZDoKKyAgICAgICAgcmV0dXJuIDE7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAidW5leHBlY3RlZCBleHByZXNzaW9uIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworc3RhdGljIGludAordmFsaWRhdGVfbm9uZW1wdHlfc2VxKGFzZGxfc2VxICpzZXEsIGNvbnN0IGNoYXIgKndoYXQsIGNvbnN0IGNoYXIgKm93bmVyKQoreworICAgIGlmIChhc2RsX3NlcV9MRU4oc2VxKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJlbXB0eSAlcyBvbiAlcyIsIHdoYXQsIG93bmVyKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAordmFsaWRhdGVfYXNzaWdubGlzdChhc2RsX3NlcSAqdGFyZ2V0cywgZXhwcl9jb250ZXh0X3R5IGN0eCkKK3sKKyAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHRhcmdldHMsICJ0YXJnZXRzIiwgY3R4ID09IERlbCA/ICJEZWxldGUiIDogIkFzc2lnbiIpICYmCisgICAgICAgIHZhbGlkYXRlX2V4cHJzKHRhcmdldHMsIGN0eCwgMCk7Cit9CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX2JvZHkoYXNkbF9zZXEgKmJvZHksIGNvbnN0IGNoYXIgKm93bmVyKQoreworICAgIHJldHVybiB2YWxpZGF0ZV9ub25lbXB0eV9zZXEoYm9keSwgImJvZHkiLCBvd25lcikgJiYgdmFsaWRhdGVfc3RtdHMoYm9keSk7Cit9CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX3N0bXQoc3RtdF90eSBzdG10KQoreworICAgIGludCBpOworICAgIHN3aXRjaCAoc3RtdC0+a2luZCkgeworICAgIGNhc2UgRnVuY3Rpb25EZWZfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2JvZHkoc3RtdC0+di5GdW5jdGlvbkRlZi5ib2R5LCAiRnVuY3Rpb25EZWYiKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfYXJndW1lbnRzKHN0bXQtPnYuRnVuY3Rpb25EZWYuYXJncykgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJzKHN0bXQtPnYuRnVuY3Rpb25EZWYuZGVjb3JhdG9yX2xpc3QsIExvYWQsIDApICYmCisgICAgICAgICAgICAoIXN0bXQtPnYuRnVuY3Rpb25EZWYucmV0dXJucyB8fAorICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5GdW5jdGlvbkRlZi5yZXR1cm5zLCBMb2FkKSk7CisgICAgY2FzZSBDbGFzc0RlZl9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfYm9keShzdG10LT52LkNsYXNzRGVmLmJvZHksICJDbGFzc0RlZiIpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHBycyhzdG10LT52LkNsYXNzRGVmLmJhc2VzLCBMb2FkLCAwKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfa2V5d29yZHMoc3RtdC0+di5DbGFzc0RlZi5rZXl3b3JkcykgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJzKHN0bXQtPnYuQ2xhc3NEZWYuZGVjb3JhdG9yX2xpc3QsIExvYWQsIDApICYmCisgICAgICAgICAgICAoIXN0bXQtPnYuQ2xhc3NEZWYuc3RhcmFyZ3MgfHwgdmFsaWRhdGVfZXhwcihzdG10LT52LkNsYXNzRGVmLnN0YXJhcmdzLCBMb2FkKSkgJiYKKyAgICAgICAgICAgICghc3RtdC0+di5DbGFzc0RlZi5rd2FyZ3MgfHwgdmFsaWRhdGVfZXhwcihzdG10LT52LkNsYXNzRGVmLmt3YXJncywgTG9hZCkpOworICAgIGNhc2UgUmV0dXJuX2tpbmQ6CisgICAgICAgIHJldHVybiAhc3RtdC0+di5SZXR1cm4udmFsdWUgfHwgdmFsaWRhdGVfZXhwcihzdG10LT52LlJldHVybi52YWx1ZSwgTG9hZCk7CisgICAgY2FzZSBEZWxldGVfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2Fzc2lnbmxpc3Qoc3RtdC0+di5EZWxldGUudGFyZ2V0cywgRGVsKTsKKyAgICBjYXNlIEFzc2lnbl9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfYXNzaWdubGlzdChzdG10LT52LkFzc2lnbi50YXJnZXRzLCBTdG9yZSkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Bc3NpZ24udmFsdWUsIExvYWQpOworICAgIGNhc2UgQXVnQXNzaWduX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQXVnQXNzaWduLnRhcmdldCwgU3RvcmUpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQXVnQXNzaWduLnZhbHVlLCBMb2FkKTsKKyAgICBjYXNlIEZvcl9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LkZvci50YXJnZXQsIFN0b3JlKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihzdG10LT52LkZvci5pdGVyLCBMb2FkKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfYm9keShzdG10LT52LkZvci5ib2R5LCAiRm9yIikgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX3N0bXRzKHN0bXQtPnYuRm9yLm9yZWxzZSk7CisgICAgY2FzZSBXaGlsZV9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LldoaWxlLnRlc3QsIExvYWQpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9ib2R5KHN0bXQtPnYuV2hpbGUuYm9keSwgIldoaWxlIikgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX3N0bXRzKHN0bXQtPnYuV2hpbGUub3JlbHNlKTsKKyAgICBjYXNlIElmX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuSWYudGVzdCwgTG9hZCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2JvZHkoc3RtdC0+di5JZi5ib2R5LCAiSWYiKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfc3RtdHMoc3RtdC0+di5JZi5vcmVsc2UpOworICAgIGNhc2UgV2l0aF9raW5kOgorICAgICAgICBpZiAoIXZhbGlkYXRlX25vbmVtcHR5X3NlcShzdG10LT52LldpdGguaXRlbXMsICJpdGVtcyIsICJXaXRoIikpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihzdG10LT52LldpdGguaXRlbXMpOyBpKyspIHsKKyAgICAgICAgICAgIHdpdGhpdGVtX3R5IGl0ZW0gPSBhc2RsX3NlcV9HRVQoc3RtdC0+di5XaXRoLml0ZW1zLCBpKTsKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVfZXhwcihpdGVtLT5jb250ZXh0X2V4cHIsIExvYWQpIHx8CisgICAgICAgICAgICAgICAgKGl0ZW0tPm9wdGlvbmFsX3ZhcnMgJiYgIXZhbGlkYXRlX2V4cHIoaXRlbS0+b3B0aW9uYWxfdmFycywgU3RvcmUpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsaWRhdGVfYm9keShzdG10LT52LldpdGguYm9keSwgIldpdGgiKTsKKyAgICBjYXNlIFJhaXNlX2tpbmQ6CisgICAgICAgIGlmIChzdG10LT52LlJhaXNlLmV4YykgeworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5SYWlzZS5leGMsIExvYWQpICYmCisgICAgICAgICAgICAgICAgKCFzdG10LT52LlJhaXNlLmNhdXNlIHx8IHZhbGlkYXRlX2V4cHIoc3RtdC0+di5SYWlzZS5jYXVzZSwgTG9hZCkpOworICAgICAgICB9CisgICAgICAgIGlmIChzdG10LT52LlJhaXNlLmNhdXNlKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIlJhaXNlIHdpdGggY2F1c2UgYnV0IG5vIGV4Y2VwdGlvbiIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CisgICAgY2FzZSBUcnlfa2luZDoKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV9ib2R5KHN0bXQtPnYuVHJ5LmJvZHksICJUcnkiKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoIWFzZGxfc2VxX0xFTihzdG10LT52LlRyeS5oYW5kbGVycykgJiYKKyAgICAgICAgICAgICFhc2RsX3NlcV9MRU4oc3RtdC0+di5UcnkuZmluYWxib2R5KSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJUcnkgaGFzIG5laXRoZXIgZXhjZXB0IGhhbmRsZXJzIG5vciBmaW5hbGJvZHkiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGlmICghYXNkbF9zZXFfTEVOKHN0bXQtPnYuVHJ5LmhhbmRsZXJzKSAmJgorICAgICAgICAgICAgYXNkbF9zZXFfTEVOKHN0bXQtPnYuVHJ5Lm9yZWxzZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiVHJ5IGhhcyBvcmVsc2UgYnV0IG5vIGV4Y2VwdCBoYW5kbGVycyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihzdG10LT52LlRyeS5oYW5kbGVycyk7IGkrKykgeworICAgICAgICAgICAgZXhjZXB0aGFuZGxlcl90eSBoYW5kbGVyID0gYXNkbF9zZXFfR0VUKHN0bXQtPnYuVHJ5LmhhbmRsZXJzLCBpKTsKKyAgICAgICAgICAgIGlmICgoaGFuZGxlci0+di5FeGNlcHRIYW5kbGVyLnR5cGUgJiYKKyAgICAgICAgICAgICAgICAgIXZhbGlkYXRlX2V4cHIoaGFuZGxlci0+di5FeGNlcHRIYW5kbGVyLnR5cGUsIExvYWQpKSB8fAorICAgICAgICAgICAgICAgICF2YWxpZGF0ZV9ib2R5KGhhbmRsZXItPnYuRXhjZXB0SGFuZGxlci5ib2R5LCAiRXhjZXB0SGFuZGxlciIpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAoIWFzZGxfc2VxX0xFTihzdG10LT52LlRyeS5maW5hbGJvZHkpIHx8CisgICAgICAgICAgICAgICAgdmFsaWRhdGVfc3RtdHMoc3RtdC0+di5UcnkuZmluYWxib2R5KSkgJiYKKyAgICAgICAgICAgICghYXNkbF9zZXFfTEVOKHN0bXQtPnYuVHJ5Lm9yZWxzZSkgfHwKKyAgICAgICAgICAgICB2YWxpZGF0ZV9zdG10cyhzdG10LT52LlRyeS5vcmVsc2UpKTsKKyAgICBjYXNlIEFzc2VydF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LkFzc2VydC50ZXN0LCBMb2FkKSAmJgorICAgICAgICAgICAgKCFzdG10LT52LkFzc2VydC5tc2cgfHwgdmFsaWRhdGVfZXhwcihzdG10LT52LkFzc2VydC5tc2csIExvYWQpKTsKKyAgICBjYXNlIEltcG9ydF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuSW1wb3J0Lm5hbWVzLCAibmFtZXMiLCAiSW1wb3J0Iik7CisgICAgY2FzZSBJbXBvcnRGcm9tX2tpbmQ6CisgICAgICAgIGlmIChzdG10LT52LkltcG9ydEZyb20ubGV2ZWwgPCAtMSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbXBvcnRGcm9tIGxldmVsIGxlc3MgdGhhbiAtMSIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX25vbmVtcHR5X3NlcShzdG10LT52LkltcG9ydEZyb20ubmFtZXMsICJuYW1lcyIsICJJbXBvcnRGcm9tIik7CisgICAgY2FzZSBHbG9iYWxfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX25vbmVtcHR5X3NlcShzdG10LT52Lkdsb2JhbC5uYW1lcywgIm5hbWVzIiwgIkdsb2JhbCIpOworICAgIGNhc2UgTm9ubG9jYWxfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX25vbmVtcHR5X3NlcShzdG10LT52Lk5vbmxvY2FsLm5hbWVzLCAibmFtZXMiLCAiTm9ubG9jYWwiKTsKKyAgICBjYXNlIEV4cHJfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5FeHByLnZhbHVlLCBMb2FkKTsKKyAgICBjYXNlIFBhc3Nfa2luZDoKKyAgICBjYXNlIEJyZWFrX2tpbmQ6CisgICAgY2FzZSBDb250aW51ZV9raW5kOgorICAgICAgICByZXR1cm4gMTsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJ1bmV4cGVjdGVkIHN0YXRlbWVudCIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX3N0bXRzKGFzZGxfc2VxICpzZXEpCit7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihzZXEpOyBpKyspIHsKKyAgICAgICAgc3RtdF90eSBzdG10ID0gYXNkbF9zZXFfR0VUKHNlcSwgaSk7CisgICAgICAgIGlmIChzdG10KSB7CisgICAgICAgICAgICBpZiAoIXZhbGlkYXRlX3N0bXQoc3RtdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uZSBkaXNhbGxvd2VkIGluIHN0YXRlbWVudCBsaXN0Iik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAordmFsaWRhdGVfZXhwcnMoYXNkbF9zZXEgKmV4cHJzLCBleHByX2NvbnRleHRfdHkgY3R4LCBpbnQgbnVsbF9vaykKK3sKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKGV4cHJzKTsgaSsrKSB7CisgICAgICAgIGV4cHJfdHkgZXhwciA9IGFzZGxfc2VxX0dFVChleHBycywgaSk7CisgICAgICAgIGlmIChleHByKSB7CisgICAgICAgICAgICBpZiAoIXZhbGlkYXRlX2V4cHIoZXhwciwgY3R4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICghbnVsbF9vaykgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUgZGlzYWxsb3dlZCBpbiBleHByZXNzaW9uIGxpc3QiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK2ludAorUHlBU1RfVmFsaWRhdGUobW9kX3R5IG1vZCkKK3sKKyAgICBpbnQgcmVzID0gMDsKKworICAgIHN3aXRjaCAobW9kLT5raW5kKSB7CisgICAgY2FzZSBNb2R1bGVfa2luZDoKKyAgICAgICAgcmVzID0gdmFsaWRhdGVfc3RtdHMobW9kLT52Lk1vZHVsZS5ib2R5KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRlcmFjdGl2ZV9raW5kOgorICAgICAgICByZXMgPSB2YWxpZGF0ZV9zdG10cyhtb2QtPnYuSW50ZXJhY3RpdmUuYm9keSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXhwcmVzc2lvbl9raW5kOgorICAgICAgICByZXMgPSB2YWxpZGF0ZV9leHByKG1vZC0+di5FeHByZXNzaW9uLmJvZHksIExvYWQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN1aXRlX2tpbmQ6CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiU3VpdGUgaXMgbm90IHZhbGlkIGluIHRoZSBDUHl0aG9uIGNvbXBpbGVyIik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgImltcG9zc2libGUgbW9kdWxlIG5vZGUiKTsKKyAgICAgICAgcmVzID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiByZXM7Cit9CisKKy8qIFRoaXMgaXMgZG9uZSBoZXJlLCBzbyBkZWZpbmVzIGxpa2UgInRlc3QiIGRvbid0IGludGVyZmVyZSB3aXRoIEFTVCB1c2UgYWJvdmUuICovCisjaW5jbHVkZSAiZ3JhbW1hci5oIgorI2luY2x1ZGUgInBhcnNldG9rLmgiCisjaW5jbHVkZSAiZ3JhbWluaXQuaCIKKwogLyogRGF0YSBzdHJ1Y3R1cmUgdXNlZCBpbnRlcm5hbGx5ICovCiBzdHJ1Y3QgY29tcGlsaW5nIHsKICAgICBjaGFyICpjX2VuY29kaW5nOyAvKiBzb3VyY2UgZW5jb2RpbmcgKi8KICAgICBQeUFyZW5hICpjX2FyZW5hOyAvKiBhcmVuYSBmb3IgYWxsb2NhdGluZyBtZW1lb3J5ICovCiAgICAgY29uc3QgY2hhciAqY19maWxlbmFtZTsgLyogZmlsZW5hbWUgKi8KKyAgICBQeU9iamVjdCAqY19ub3JtYWxpemU7IC8qIE5vcm1hbGl6YXRpb24gZnVuY3Rpb24gZnJvbSB1bmljb2RlZGF0YS4gKi8KKyAgICBQeU9iamVjdCAqY19ub3JtYWxpemVfYXJnczsgLyogTm9ybWFsaXphdGlvbiBhcmd1bWVudCB0dXBsZS4gKi8KIH07CiAKIHN0YXRpYyBhc2RsX3NlcSAqc2VxX2Zvcl90ZXN0bGlzdChzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKik7CkBAIC0zOCwxMjcgKzUyMCw5NiBAQAogc3RhdGljIFB5T2JqZWN0ICpwYXJzZXN0cnBsdXMoc3RydWN0IGNvbXBpbGluZyAqLCBjb25zdCBub2RlICpuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpieXRlc21vZGUpOwogCi0jaWZuZGVmIExJTkVOTwotI2RlZmluZSBMSU5FTk8obikgICAgICAgKChuKS0+bl9saW5lbm8pCi0jZW5kaWYKLQogI2RlZmluZSBDT01QX0dFTkVYUCAgIDAKICNkZWZpbmUgQ09NUF9MSVNUQ09NUCAxCiAjZGVmaW5lIENPTVBfU0VUQ09NUCAgMgogCitzdGF0aWMgaW50Citpbml0X25vcm1hbGl6YXRpb24oc3RydWN0IGNvbXBpbGluZyAqYykKK3sKKyAgICBQeU9iamVjdCAqbSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soInVuaWNvZGVkYXRhIik7CisgICAgaWYgKCFtKQorICAgICAgICByZXR1cm4gMDsKKyAgICBjLT5jX25vcm1hbGl6ZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobSwgIm5vcm1hbGl6ZSIpOworICAgIFB5X0RFQ1JFRihtKTsKKyAgICBpZiAoIWMtPmNfbm9ybWFsaXplKQorICAgICAgICByZXR1cm4gMDsKKyAgICBjLT5jX25vcm1hbGl6ZV9hcmdzID0gUHlfQnVpbGRWYWx1ZSgiKHNOKSIsICJORktDIiwgUHlfTm9uZSk7CisgICAgUHlUdXBsZV9TRVRfSVRFTShjLT5jX25vcm1hbGl6ZV9hcmdzLCAxLCBOVUxMKTsKKyAgICBpZiAoIWMtPmNfbm9ybWFsaXplX2FyZ3MpIHsKKyAgICAgICAgUHlfQ0xFQVIoYy0+Y19ub3JtYWxpemUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKIHN0YXRpYyBpZGVudGlmaWVyCi1uZXdfaWRlbnRpZmllcihjb25zdCBjaGFyICpuLCBQeUFyZW5hICphcmVuYSkKK25ld19pZGVudGlmaWVyKGNvbnN0IGNoYXIgKm4sIHN0cnVjdCBjb21waWxpbmcgKmMpCiB7CiAgICAgUHlPYmplY3QgKmlkID0gUHlVbmljb2RlX0RlY29kZVVURjgobiwgc3RybGVuKG4pLCBOVUxMKTsKLSAgICBQeV9VTklDT0RFICp1OwogICAgIGlmICghaWQpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShpZCk7CisgICAgLyogUHlVbmljb2RlX0RlY29kZVVURjggc2hvdWxkIGFsd2F5cyByZXR1cm4gYSByZWFkeSBzdHJpbmcuICovCisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWShpZCkpOwogICAgIC8qIENoZWNrIHdoZXRoZXIgdGhlcmUgYXJlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluIHRoZQogICAgICAgIGlkZW50aWZpZXI7IGlmIHNvLCBub3JtYWxpemUgdG8gTkZLQy4gKi8KLSAgICBmb3IgKDsgKnU7IHUrKykgewotICAgICAgICBpZiAoKnUgPj0gMTI4KSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqbSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soInVuaWNvZGVkYXRhIik7Ci0gICAgICAgICAgICBQeU9iamVjdCAqaWQyOwotICAgICAgICAgICAgaWYgKCFtKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgaWQyID0gUHlPYmplY3RfQ2FsbE1ldGhvZChtLCAibm9ybWFsaXplIiwgInNPIiwgIk5GS0MiLCBpZCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobSk7Ci0gICAgICAgICAgICBpZiAoIWlkMikKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIVB5VW5pY29kZV9JU19BU0NJSShpZCkpIHsKKyAgICAgICAgUHlPYmplY3QgKmlkMjsKKyAgICAgICAgaWYgKCFjLT5jX25vcm1hbGl6ZSAmJiAhaW5pdF9ub3JtYWxpemF0aW9uKGMpKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoaWQpOwotICAgICAgICAgICAgaWQgPSBpZDI7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYy0+Y19ub3JtYWxpemVfYXJncywgMSwgaWQpOworICAgICAgICBpZDIgPSBQeU9iamVjdF9DYWxsKGMtPmNfbm9ybWFsaXplLCBjLT5jX25vcm1hbGl6ZV9hcmdzLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGlkKTsKKyAgICAgICAgaWYgKCFpZDIpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWQgPSBpZDI7CiAgICAgfQogICAgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlKCZpZCk7Ci0gICAgUHlBcmVuYV9BZGRQeU9iamVjdChhcmVuYSwgaWQpOworICAgIFB5QXJlbmFfQWRkUHlPYmplY3QoYy0+Y19hcmVuYSwgaWQpOwogICAgIHJldHVybiBpZDsKIH0KIAotI2RlZmluZSBORVdfSURFTlRJRklFUihuKSBuZXdfaWRlbnRpZmllcihTVFIobiksIGMtPmNfYXJlbmEpCi0KLS8qIFRoaXMgcm91dGluZSBwcm92aWRlcyBhbiBpbnZhbGlkIG9iamVjdCBmb3IgdGhlIHN5bnRheCBlcnJvci4KLSAgIFRoZSBvdXRlcm1vc3Qgcm91dGluZSBtdXN0IHVucGFjayB0aGlzIGVycm9yIGFuZCBjcmVhdGUgdGhlCi0gICBwcm9wZXIgb2JqZWN0LiAgV2UgZG8gdGhpcyBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gcGFzcwotICAgdGhlIGZpbGVuYW1lIHRvIGV2ZXJ5dGhpbmcgZnVuY3Rpb24uCi0KLSAgIFhYWCBNYXliZSB3ZSBzaG91bGQganVzdCBwYXNzIHRoZSBmaWxlbmFtZS4uLgotKi8KKyNkZWZpbmUgTkVXX0lERU5USUZJRVIobikgbmV3X2lkZW50aWZpZXIoU1RSKG4pLCBjKQogCiBzdGF0aWMgaW50Ci1hc3RfZXJyb3IoY29uc3Qgbm9kZSAqbiwgY29uc3QgY2hhciAqZXJyc3RyKQorYXN0X2Vycm9yKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGNvbnN0IGNoYXIgKmVycm1zZykKIHsKLSAgICBQeU9iamVjdCAqdSA9IFB5X0J1aWxkVmFsdWUoInppaSIsIGVycnN0ciwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQpLCAqc2F2ZTsKLSAgICBpZiAoIXUpCi0gICAgICAgIHJldHVybiAwOwotICAgIC8qCi0gICAgICogUHJldmVudCB0aGUgZXJyb3IgZnJvbSBiZWluZyBjaGFpbmVkLiBQeUVycl9TZXRPYmplY3Qgd2lsbCBub3JtYWxpemUgdGhlCi0gICAgICogZXhjZXB0aW9uIGluIG9yZGVyIHRvIGNoYWluIGl0LiBhc3RfZXJyb3JfZmluaXNoLCBob3dldmVyLCByZXF1aXJlcyB0aGUKLSAgICAgKiBlcnJvciBub3QgdG8gYmUgbm9ybWFsaXplZC4KLSAgICAgKi8KLSAgICBzYXZlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+ZXhjX3ZhbHVlOwotICAgIFB5VGhyZWFkU3RhdGVfR0VUKCktPmV4Y192YWx1ZSA9IE5VTEw7Ci0gICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX1N5bnRheEVycm9yLCB1KTsKLSAgICBQeVRocmVhZFN0YXRlX0dFVCgpLT5leGNfdmFsdWUgPSBzYXZlOwotICAgIFB5X0RFQ1JFRih1KTsKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQKLWFzdF9lcnJvcl9maW5pc2goY29uc3QgY2hhciAqZmlsZW5hbWUpCi17Ci0gICAgUHlPYmplY3QgKnR5cGUsICp2YWx1ZSwgKnRiYWNrLCAqZXJyc3RyLCAqb2Zmc2V0LCAqbG9jLCAqdG1wOworICAgIFB5T2JqZWN0ICp2YWx1ZSwgKmVycnN0ciwgKmxvYywgKnRtcDsKICAgICBQeU9iamVjdCAqZmlsZW5hbWVfb2JqOwotICAgIGxvbmcgbGluZW5vOwogCi0gICAgYXNzZXJ0KFB5RXJyX09jY3VycmVkKCkpOwotICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TeW50YXhFcnJvcikpCi0gICAgICAgIHJldHVybjsKLQotICAgIFB5RXJyX0ZldGNoKCZ0eXBlLCAmdmFsdWUsICZ0YmFjayk7Ci0gICAgZXJyc3RyID0gUHlUdXBsZV9HZXRJdGVtKHZhbHVlLCAwKTsKLSAgICBpZiAoIWVycnN0cikKLSAgICAgICAgcmV0dXJuOwotICAgIFB5X0lOQ1JFRihlcnJzdHIpOwotICAgIGxpbmVubyA9IFB5TG9uZ19Bc0xvbmcoUHlUdXBsZV9HZXRJdGVtKHZhbHVlLCAxKSk7Ci0gICAgaWYgKGxpbmVubyA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoZXJyc3RyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBvZmZzZXQgPSBQeVR1cGxlX0dldEl0ZW0odmFsdWUsIDIpOwotICAgIGlmICghb2Zmc2V0KSB7Ci0gICAgICAgIFB5X0RFQ1JFRihlcnJzdHIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0KLSAgICBsb2MgPSBQeUVycl9Qcm9ncmFtVGV4dChmaWxlbmFtZSwgbGluZW5vKTsKKyAgICBsb2MgPSBQeUVycl9Qcm9ncmFtVGV4dChjLT5jX2ZpbGVuYW1lLCBMSU5FTk8obikpOwogICAgIGlmICghbG9jKSB7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgbG9jID0gUHlfTm9uZTsKICAgICB9Ci0gICAgaWYgKGZpbGVuYW1lICE9IE5VTEwpCi0gICAgICAgIGZpbGVuYW1lX29iaiA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoZmlsZW5hbWUpOwotICAgIGVsc2UgeworICAgIGlmIChjLT5jX2ZpbGVuYW1lKSB7CisgICAgICAgIGZpbGVuYW1lX29iaiA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoYy0+Y19maWxlbmFtZSk7CisgICAgICAgIGlmICghZmlsZW5hbWVfb2JqKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobG9jKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfSBlbHNlIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICBmaWxlbmFtZV9vYmogPSBQeV9Ob25lOwogICAgIH0KLSAgICBpZiAoZmlsZW5hbWVfb2JqICE9IE5VTEwpCi0gICAgICAgIHRtcCA9IFB5X0J1aWxkVmFsdWUoIihObE9PKSIsIGZpbGVuYW1lX29iaiwgbGluZW5vLCBvZmZzZXQsIGxvYyk7Ci0gICAgZWxzZQotICAgICAgICB0bXAgPSBOVUxMOwotICAgIFB5X0RFQ1JFRihsb2MpOwotICAgIGlmICghdG1wKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihlcnJzdHIpOwotICAgICAgICByZXR1cm47CisgICAgdG1wID0gUHlfQnVpbGRWYWx1ZSgiKE5paU4pIiwgZmlsZW5hbWVfb2JqLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgbG9jKTsKKyAgICBpZiAoIXRtcCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgZXJyc3RyID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoZXJybXNnKTsKKyAgICBpZiAoIWVycnN0cikgeworICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHZhbHVlID0gUHlUdXBsZV9QYWNrKDIsIGVycnN0ciwgdG1wKTsKICAgICBQeV9ERUNSRUYoZXJyc3RyKTsKICAgICBQeV9ERUNSRUYodG1wKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgUHlFcnJfUmVzdG9yZSh0eXBlLCB2YWx1ZSwgdGJhY2spOworICAgIGlmICh2YWx1ZSkgeworICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfU3ludGF4RXJyb3IsIHZhbHVlKTsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICB9CisgICAgcmV0dXJuIDA7CiB9CiAKIC8qIG51bV9zdG10cygpIHJldHVybnMgbnVtYmVyIG9mIGNvbnRhaW5lZCBzdGF0ZW1lbnRzLgpAQCAtMjM0LDEzICs2ODUsMTcgQEAKICAgICBzdG10X3R5IHM7CiAgICAgbm9kZSAqY2g7CiAgICAgc3RydWN0IGNvbXBpbGluZyBjOworICAgIG1vZF90eSByZXMgPSBOVUxMOwogCisgICAgYy5jX2FyZW5hID0gYXJlbmE7CisgICAgYy5jX2ZpbGVuYW1lID0gZmlsZW5hbWU7CisgICAgYy5jX25vcm1hbGl6ZSA9IGMuY19ub3JtYWxpemVfYXJncyA9IE5VTEw7CiAgICAgaWYgKGZsYWdzICYmIGZsYWdzLT5jZl9mbGFncyAmIFB5Q0ZfU09VUkNFX0lTX1VURjgpIHsKICAgICAgICAgYy5jX2VuY29kaW5nID0gInV0Zi04IjsKICAgICAgICAgaWYgKFRZUEUobikgPT0gZW5jb2RpbmdfZGVjbCkgewogI2lmIDAKLSAgICAgICAgICAgIGFzdF9lcnJvcihuLCAiZW5jb2RpbmcgZGVjbGFyYXRpb24gaW4gVW5pY29kZSBzdHJpbmciKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImVuY29kaW5nIGRlY2xhcmF0aW9uIGluIFVuaWNvZGUgc3RyaW5nIik7CisgICAgICAgICAgICBnb3RvIG91dDsKICNlbmRpZgogICAgICAgICAgICAgbiA9IENISUxEKG4sIDApOwogICAgICAgICB9CkBAIC0yNTEsMTUgKzcwNiwxMyBAQAogICAgICAgICAvKiBQRVAgMzEyMCAqLwogICAgICAgICBjLmNfZW5jb2RpbmcgPSAidXRmLTgiOwogICAgIH0KLSAgICBjLmNfYXJlbmEgPSBhcmVuYTsKLSAgICBjLmNfZmlsZW5hbWUgPSBmaWxlbmFtZTsKIAogICAgIGsgPSAwOwogICAgIHN3aXRjaCAoVFlQRShuKSkgewogICAgICAgICBjYXNlIGZpbGVfaW5wdXQ6CiAgICAgICAgICAgICBzdG10cyA9IGFzZGxfc2VxX25ldyhudW1fc3RtdHMobiksIGFyZW5hKTsKICAgICAgICAgICAgIGlmICghc3RtdHMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTkNIKG4pIC0gMTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgY2ggPSBDSElMRChuLCBpKTsKICAgICAgICAgICAgICAgICBpZiAoVFlQRShjaCkgPT0gTkVXTElORSkKQEAgLTI2OSw3ICs3MjIsNyBAQAogICAgICAgICAgICAgICAgIGlmIChudW0gPT0gMSkgewogICAgICAgICAgICAgICAgICAgICBzID0gYXN0X2Zvcl9zdG10KCZjLCBjaCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghcykKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKHN0bXRzLCBrKyssIHMpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIHsKQEAgLTI3OCw0MiArNzMxLDQ0IEBACiAgICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBudW07IGorKykgewogICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGFzdF9mb3Jfc3RtdCgmYywgQ0hJTEQoY2gsIGogKiAyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChzdG10cywgaysrLCBzKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBNb2R1bGUoc3RtdHMsIGFyZW5hKTsKKyAgICAgICAgICAgIHJlcyA9IE1vZHVsZShzdG10cywgYXJlbmEpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZXZhbF9pbnB1dDogewogICAgICAgICAgICAgZXhwcl90eSB0ZXN0bGlzdF9hc3Q7CiAKICAgICAgICAgICAgIC8qIFhYWCBXaHkgbm90IGNvbXBfZm9yIGhlcmU/ICovCiAgICAgICAgICAgICB0ZXN0bGlzdF9hc3QgPSBhc3RfZm9yX3Rlc3RsaXN0KCZjLCBDSElMRChuLCAwKSk7CiAgICAgICAgICAgICBpZiAoIXRlc3RsaXN0X2FzdCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgcmV0dXJuIEV4cHJlc3Npb24odGVzdGxpc3RfYXN0LCBhcmVuYSk7CisgICAgICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgICAgICByZXMgPSBFeHByZXNzaW9uKHRlc3RsaXN0X2FzdCwgYXJlbmEpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBzaW5nbGVfaW5wdXQ6CiAgICAgICAgICAgICBpZiAoVFlQRShDSElMRChuLCAwKSkgPT0gTkVXTElORSkgewogICAgICAgICAgICAgICAgIHN0bXRzID0gYXNkbF9zZXFfbmV3KDEsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0bXRzKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoc3RtdHMsIDAsIFBhc3Mobi0+bl9saW5lbm8sIG4tPm5fY29sX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlbmEpKTsKICAgICAgICAgICAgICAgICBpZiAoIWFzZGxfc2VxX0dFVChzdG10cywgMCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEludGVyYWN0aXZlKHN0bXRzLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICAgICAgICAgIHJlcyA9IEludGVyYWN0aXZlKHN0bXRzLCBhcmVuYSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBuID0gQ0hJTEQobiwgMCk7CiAgICAgICAgICAgICAgICAgbnVtID0gbnVtX3N0bXRzKG4pOwogICAgICAgICAgICAgICAgIHN0bXRzID0gYXNkbF9zZXFfbmV3KG51bSwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmICghc3RtdHMpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgIGlmIChudW0gPT0gMSkgewogICAgICAgICAgICAgICAgICAgICBzID0gYXN0X2Zvcl9zdG10KCZjLCBuKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFzKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoc3RtdHMsIDAsIHMpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIHsKQEAgLTMyNCwyMSArNzc5LDI2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBzID0gYXN0X2Zvcl9zdG10KCZjLCBDSElMRChuLCBpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChzdG10cywgaSAvIDIsIHMpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgcmV0dXJuIEludGVyYWN0aXZlKHN0bXRzLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgcmVzID0gSW50ZXJhY3RpdmUoc3RtdHMsIGFyZW5hKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIG5vZGUgJWQgZm9yIFB5QVNUX0Zyb21Ob2RlIiwgVFlQRShuKSk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgfQotIGVycm9yOgotICAgIGFzdF9lcnJvcl9maW5pc2goZmlsZW5hbWUpOwotICAgIHJldHVybiBOVUxMOworIG91dDoKKyAgICBpZiAoYy5jX25vcm1hbGl6ZSkgeworICAgICAgICBQeV9ERUNSRUYoYy5jX25vcm1hbGl6ZSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYy5jX25vcm1hbGl6ZV9hcmdzLCAxLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGMuY19ub3JtYWxpemVfYXJncyk7CisgICAgfQorICAgIHJldHVybiByZXM7CiB9CiAKIC8qIFJldHVybiB0aGUgQVNUIHJlcHIuIG9mIHRoZSBvcGVyYXRvciByZXByZXNlbnRlZCBhcyBzeW50YXggKHwsIF4sIGV0Yy4pCkBAIC0zODMsMTggKzg0MywxOCBAQAogfTsKIAogc3RhdGljIGludAotZm9yYmlkZGVuX25hbWUoaWRlbnRpZmllciBuYW1lLCBjb25zdCBub2RlICpuLCBpbnQgZnVsbF9jaGVja3MpCitmb3JiaWRkZW5fbmFtZShzdHJ1Y3QgY29tcGlsaW5nICpjLCBpZGVudGlmaWVyIG5hbWUsIGNvbnN0IG5vZGUgKm4sIGludCBmdWxsX2NoZWNrcykKIHsKICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG5hbWUpKTsKICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgIl9fZGVidWdfXyIpID09IDApIHsKLSAgICAgICAgYXN0X2Vycm9yKG4sICJhc3NpZ25tZW50IHRvIGtleXdvcmQiKTsKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJhc3NpZ25tZW50IHRvIGtleXdvcmQiKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogICAgIGlmIChmdWxsX2NoZWNrcykgewogICAgICAgICBjb25zdCBjaGFyICoqcDsKICAgICAgICAgZm9yIChwID0gRk9SQklEREVOOyAqcDsgcCsrKSB7CiAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgKnApID09IDApIHsKLSAgICAgICAgICAgICAgICBhc3RfZXJyb3IobiwgImFzc2lnbm1lbnQgdG8ga2V5d29yZCIpOworICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiYXNzaWdubWVudCB0byBrZXl3b3JkIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQzMCw3ICs4OTAsNyBAQAogICAgIHN3aXRjaCAoZS0+a2luZCkgewogICAgICAgICBjYXNlIEF0dHJpYnV0ZV9raW5kOgogICAgICAgICAgICAgZS0+di5BdHRyaWJ1dGUuY3R4ID0gY3R4OwotICAgICAgICAgICAgaWYgKGN0eCA9PSBTdG9yZSAmJiBmb3JiaWRkZW5fbmFtZShlLT52LkF0dHJpYnV0ZS5hdHRyLCBuLCAxKSkKKyAgICAgICAgICAgIGlmIChjdHggPT0gU3RvcmUgJiYgZm9yYmlkZGVuX25hbWUoYywgZS0+di5BdHRyaWJ1dGUuYXR0ciwgbiwgMSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdWJzY3JpcHRfa2luZDoKQEAgLTQ0Myw3ICs5MDMsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTmFtZV9raW5kOgogICAgICAgICAgICAgaWYgKGN0eCA9PSBTdG9yZSkgewotICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShlLT52Lk5hbWUuaWQsIG4sIDEpKQorICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBlLT52Lk5hbWUuaWQsIG4sIDEpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsgLyogZm9yYmlkZGVuX25hbWUoKSBjYWxscyBhc3RfZXJyb3IoKSAqLwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZS0+di5OYW1lLmN0eCA9IGN0eDsKQEAgLTQ3Niw2ICs5MzYsNyBAQAogICAgICAgICAgICAgZXhwcl9uYW1lID0gImdlbmVyYXRvciBleHByZXNzaW9uIjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFlpZWxkX2tpbmQ6CisgICAgICAgIGNhc2UgWWllbGRGcm9tX2tpbmQ6CiAgICAgICAgICAgICBleHByX25hbWUgPSAieWllbGQgZXhwcmVzc2lvbiI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBMaXN0Q29tcF9raW5kOgpAQCAtNTE2LDcgKzk3Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgImNhbid0ICVzICVzIiwKICAgICAgICAgICAgICAgICAgICAgICBjdHggPT0gU3RvcmUgPyAiYXNzaWduIHRvIiA6ICJkZWxldGUiLAogICAgICAgICAgICAgICAgICAgICAgIGV4cHJfbmFtZSk7Ci0gICAgICAgIHJldHVybiBhc3RfZXJyb3IobiwgYnVmKTsKKyAgICAgICAgcmV0dXJuIGFzdF9lcnJvcihjLCBuLCBidWYpOwogICAgIH0KIAogICAgIC8qIElmIHRoZSBMSFMgaXMgYSBsaXN0IG9yIHR1cGxlLCB3ZSBuZWVkIHRvIHNldCB0aGUgYXNzaWdubWVudApAQCAtNjY0LDcgKzExMjUsNyBAQAogICAgIG5hbWUgPSBORVdfSURFTlRJRklFUihjaCk7CiAgICAgaWYgKCFuYW1lKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoZm9yYmlkZGVuX25hbWUobmFtZSwgY2gsIDApKQorICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBuYW1lLCBjaCwgMCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKE5DSChuKSA9PSAzICYmIFRZUEUoQ0hJTEQobiwgMSkpID09IENPTE9OKSB7CkBAIC02OTQsNyArMTE1NSw3IEBACiAgICAgaW50IGogPSAwOyAvKiBpbmRleCBmb3Iga3dkZWZhdWx0cyBhbmQga3dvbmx5YXJncyAqLwogCiAgICAgaWYgKGt3b25seWFyZ3MgPT0gTlVMTCkgewotICAgICAgICBhc3RfZXJyb3IoQ0hJTEQobiwgc3RhcnQpLCAibmFtZWQgYXJndW1lbnRzIG11c3QgZm9sbG93IGJhcmUgKiIpOworICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQobiwgc3RhcnQpLCAibmFtZWQgYXJndW1lbnRzIG11c3QgZm9sbG93IGJhcmUgKiIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGFzc2VydChrd2RlZmF1bHRzICE9IE5VTEwpOwpAQCAtNzI2LDcgKzExODcsNyBAQAogICAgICAgICAgICAgICAgIGFyZ25hbWUgPSBORVdfSURFTlRJRklFUihjaCk7CiAgICAgICAgICAgICAgICAgaWYgKCFhcmduYW1lKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShhcmduYW1lLCBjaCwgMCkpCisgICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGFyZ25hbWUsIGNoLCAwKSkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICBhcmcgPSBhcmcoYXJnbmFtZSwgYW5ub3RhdGlvbiwgYy0+Y19hcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKCFhcmcpCkBAIC03MzcsNyArMTE5OCw3IEBACiAgICAgICAgICAgICBjYXNlIERPVUJMRVNUQVI6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjaCwgInVuZXhwZWN0ZWQgbm9kZSIpOworICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBjaCwgInVuZXhwZWN0ZWQgbm9kZSIpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICB9CkBAIC04MjksNyArMTI5MCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKG5wb3NhcmdzICsgbmt3b25seWFyZ3MgPiAyNTUpIHsKLSAgICAgICAgYXN0X2Vycm9yKG4sICJtb3JlIHRoYW4gMjU1IGFyZ3VtZW50cyIpOworICAgICAgICBhc3RfZXJyb3IoYywgbiwgIm1vcmUgdGhhbiAyNTUgYXJndW1lbnRzIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtODU3LDcgKzEzMTgsNyBAQAogICAgICAgICAgICAgICAgICAgICBmb3VuZF9kZWZhdWx0ID0gMTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZm91bmRfZGVmYXVsdCkgewotICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IobiwKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub24tZGVmYXVsdCBhcmd1bWVudCBmb2xsb3dzIGRlZmF1bHQgYXJndW1lbnQiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtODY5LDcgKzEzMzAsNyBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTVEFSOgogICAgICAgICAgICAgICAgIGlmIChpKzEgPj0gTkNIKG4pKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihDSElMRChuLCBpKSwKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKG4sIGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWVkIGFyZ3VtZW50cyBtdXN0IGZvbGxvdyBiYXJlICoiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtODg2LDcgKzEzNDcsNyBAQAogICAgICAgICAgICAgICAgICAgICB2YXJhcmcgPSBORVdfSURFTlRJRklFUihDSElMRChjaCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIXZhcmFyZykKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUodmFyYXJnLCBDSElMRChjaCwgMCksIDApKQorICAgICAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywgdmFyYXJnLCBDSElMRChjaCwgMCksIDApKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIGlmIChOQ0goY2gpID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLyogdGhlcmUgaXMgYW4gYW5ub3RhdGlvbiBvbiB0aGUgdmFyYXJnICovCkBAIC05MTcsNyArMTM3OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGlmICgha3dhcmdhbm5vdGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShrd2FyZywgQ0hJTEQoY2gsIDApLCAwKSkKKyAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywga3dhcmcsIENISUxEKGNoLCAwKSwgMCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIGkgKz0gMzsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEwMzYsNyArMTQ5Nyw3IEBACiAgICAgbmFtZSA9IE5FV19JREVOVElGSUVSKENISUxEKG4sIG5hbWVfaSkpOwogICAgIGlmICghbmFtZSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGZvcmJpZGRlbl9uYW1lKG5hbWUsIENISUxEKG4sIG5hbWVfaSksIDApKQorICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBuYW1lLCBDSElMRChuLCBuYW1lX2kpLCAwKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXJncyA9IGFzdF9mb3JfYXJndW1lbnRzKGMsIENISUxEKG4sIG5hbWVfaSArIDEpKTsKICAgICBpZiAoIWFyZ3MpCkBAIC0xMzg1LDcgKzE4NDYsNyBAQAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiglcykgdW5rbm93biBlcnJvciIsIGVycnR5cGUpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhc3RfZXJyb3IobiwgYnVmKTsKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgYnVmKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodHlwZSk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRiYWNrKTsKQEAgLTE5MDEsMTIgKzIzNjIsMjUgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2Jpbm9wKGMsIG4pOwogICAgICAgICBjYXNlIHlpZWxkX2V4cHI6IHsKKyAgICAgICAgICAgIG5vZGUgKmFuID0gTlVMTDsKKyAgICAgICAgICAgIG5vZGUgKmVuID0gTlVMTDsKKyAgICAgICAgICAgIGludCBpc19mcm9tID0gMDsKICAgICAgICAgICAgIGV4cHJfdHkgZXhwID0gTlVMTDsKLSAgICAgICAgICAgIGlmIChOQ0gobikgPT0gMikgewotICAgICAgICAgICAgICAgIGV4cCA9IGFzdF9mb3JfdGVzdGxpc3QoYywgQ0hJTEQobiwgMSkpOworICAgICAgICAgICAgaWYgKE5DSChuKSA+IDEpCisgICAgICAgICAgICAgICAgYW4gPSBDSElMRChuLCAxKTsgLyogeWllbGRfYXJnICovCisgICAgICAgICAgICBpZiAoYW4pIHsKKyAgICAgICAgICAgICAgICBlbiA9IENISUxEKGFuLCBOQ0goYW4pIC0gMSk7CisgICAgICAgICAgICAgICAgaWYgKE5DSChhbikgPT0gMikgeworICAgICAgICAgICAgICAgICAgICBpc19mcm9tID0gMTsKKyAgICAgICAgICAgICAgICAgICAgZXhwID0gYXN0X2Zvcl9leHByKGMsIGVuKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBleHAgPSBhc3RfZm9yX3Rlc3RsaXN0KGMsIGVuKTsKICAgICAgICAgICAgICAgICBpZiAoIWV4cCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNfZnJvbSkKKyAgICAgICAgICAgICAgICByZXR1cm4gWWllbGRGcm9tKGV4cCwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogICAgICAgICAgICAgcmV0dXJuIFlpZWxkKGV4cCwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZmFjdG9yOgpAQCAtMTkzMSw3ICsyNDA1LDcgQEAKICAgICAvKgogICAgICAgYXJnbGlzdDogKGFyZ3VtZW50ICcsJykqIChhcmd1bWVudCBbJywnXXwgJyonIHRlc3QgWycsJyAnKionIHRlc3RdCiAgICAgICAgICAgICAgICB8ICcqKicgdGVzdCkKLSAgICAgIGFyZ3VtZW50OiBbdGVzdCAnPSddIHRlc3QgW2NvbXBfZm9yXSAgICAgICAgIyBSZWFsbHkgW2tleXdvcmQgJz0nXSB0ZXN0CisgICAgICBhcmd1bWVudDogW3Rlc3QgJz0nXSAodGVzdCkgW2NvbXBfZm9yXSAgICAgICAgIyBSZWFsbHkgW2tleXdvcmQgJz0nXSB0ZXN0CiAgICAgKi8KIAogICAgIGludCBpLCBuYXJncywgbmtleXdvcmRzLCBuZ2VuczsKQEAgLTE5NTYsMTQgKzI0MzAsMTQgQEAKICAgICAgICAgfQogICAgIH0KICAgICBpZiAobmdlbnMgPiAxIHx8IChuZ2VucyAmJiAobmFyZ3MgfHwgbmtleXdvcmRzKSkpIHsKLSAgICAgICAgYXN0X2Vycm9yKG4sICJHZW5lcmF0b3IgZXhwcmVzc2lvbiBtdXN0IGJlIHBhcmVudGhlc2l6ZWQgIgorICAgICAgICBhc3RfZXJyb3IoYywgbiwgIkdlbmVyYXRvciBleHByZXNzaW9uIG11c3QgYmUgcGFyZW50aGVzaXplZCAiCiAgICAgICAgICAgICAgICAgICAiaWYgbm90IHNvbGUgYXJndW1lbnQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgaWYgKG5hcmdzICsgbmtleXdvcmRzICsgbmdlbnMgPiAyNTUpIHsKLSAgICAgIGFzdF9lcnJvcihuLCAibW9yZSB0aGFuIDI1NSBhcmd1bWVudHMiKTsKLSAgICAgIHJldHVybiBOVUxMOworICAgICAgICBhc3RfZXJyb3IoYywgbiwgIm1vcmUgdGhhbiAyNTUgYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIGFyZ3MgPSBhc2RsX3NlcV9uZXcobmFyZ3MgKyBuZ2VucywgYy0+Y19hcmVuYSk7CkBAIC0xOTgwLDEyICsyNDU0LDEyIEBACiAgICAgICAgICAgICBleHByX3R5IGU7CiAgICAgICAgICAgICBpZiAoTkNIKGNoKSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgaWYgKG5rZXl3b3JkcykgewotICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoQ0hJTEQoY2gsIDApLAorICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQoY2gsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi1rZXl3b3JkIGFyZyBhZnRlciBrZXl3b3JkIGFyZyIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKHZhcmFyZykgewotICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoQ0hJTEQoY2gsIDApLAorICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQoY2gsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9ubHkgbmFtZWQgYXJndW1lbnRzIG1heSBmb2xsb3cgKmV4cHJlc3Npb24iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjAxNSwxOSArMjQ4OSwxOSBAQAogICAgICAgICAgICAgICAgICAqIHRoZW4gaXMgdmVyeSBjb25mdXNpbmcuCiAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgaWYgKGUtPmtpbmQgPT0gTGFtYmRhX2tpbmQpIHsKLSAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihDSElMRChjaCwgMCksICJsYW1iZGEgY2Fubm90IGNvbnRhaW4gYXNzaWdubWVudCIpOwotICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBDSElMRChjaCwgMCksICJsYW1iZGEgY2Fubm90IGNvbnRhaW4gYXNzaWdubWVudCIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUtPmtpbmQgIT0gTmFtZV9raW5kKSB7Ci0gICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoQ0hJTEQoY2gsIDApLCAia2V5d29yZCBjYW4ndCBiZSBhbiBleHByZXNzaW9uIik7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZvcmJpZGRlbl9uYW1lKGUtPnYuTmFtZS5pZCwgY2gsIDEpKSB7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKGNoLCAwKSwgImtleXdvcmQgY2FuJ3QgYmUgYW4gZXhwcmVzc2lvbiIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGUtPnYuTmFtZS5pZCwgY2gsIDEpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBrZXkgPSBlLT52Lk5hbWUuaWQ7CiAgICAgICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IG5rZXl3b3JkczsgaysrKSB7CiAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICgoa2V5d29yZF90eSlhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGspKS0+YXJnOwogICAgICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9Db21wYXJlKHRtcCwga2V5KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKENISUxEKGNoLCAwKSwgImtleXdvcmQgYXJndW1lbnQgcmVwZWF0ZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBDSElMRChjaCwgMCksICJrZXl3b3JkIGFyZ3VtZW50IHJlcGVhdGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTIxMjAsNyArMjU5NCw3IEBACiAgICAgICAgICAgICBjYXNlIFN1YnNjcmlwdF9raW5kOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBhc3RfZXJyb3IoY2gsICJpbGxlZ2FsIGV4cHJlc3Npb24gZm9yIGF1Z21lbnRlZCBhc3NpZ25tZW50Iik7CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoLCAiaWxsZWdhbCBleHByZXNzaW9uIGZvciBhdWdtZW50ZWQgYXNzaWdubWVudCIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKQEAgLTIxNTMsNyArMjYyNyw3IEBACiAgICAgICAgICAgICBleHByX3R5IGU7CiAgICAgICAgICAgICBub2RlICpjaCA9IENISUxEKG4sIGkpOwogICAgICAgICAgICAgaWYgKFRZUEUoY2gpID09IHlpZWxkX2V4cHIpIHsKLSAgICAgICAgICAgICAgICBhc3RfZXJyb3IoY2gsICJhc3NpZ25tZW50IHRvIHlpZWxkIGV4cHJlc3Npb24gbm90IHBvc3NpYmxlIik7CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoLCAiYXNzaWdubWVudCB0byB5aWVsZCBleHByZXNzaW9uIG5vdCBwb3NzaWJsZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZSA9IGFzdF9mb3JfdGVzdGxpc3QoYywgY2gpOwpAQCAtMjIyNSw3ICsyNjk5LDcgQEAKICAgICAgIGNvbnRpbnVlX3N0bXQ6ICdjb250aW51ZScKICAgICAgIHJldHVybl9zdG10OiAncmV0dXJuJyBbdGVzdGxpc3RdCiAgICAgICB5aWVsZF9zdG10OiB5aWVsZF9leHByCi0gICAgICB5aWVsZF9leHByOiAneWllbGQnIHRlc3RsaXN0CisgICAgICB5aWVsZF9leHByOiAneWllbGQnIHRlc3RsaXN0IHwgJ3lpZWxkJyAnZnJvbScgdGVzdAogICAgICAgcmFpc2Vfc3RtdDogJ3JhaXNlJyBbdGVzdCBbJywnIHRlc3QgWycsJyB0ZXN0XV1dCiAgICAgKi8KICAgICBub2RlICpjaDsKQEAgLTIzMDAsMTEgKzI3NzQsMTEgQEAKICAgICAgICAgICAgICAgICBzdHIgPSBORVdfSURFTlRJRklFUihzdHJfbm9kZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdHIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIGlmIChzdG9yZSAmJiBmb3JiaWRkZW5fbmFtZShzdHIsIHN0cl9ub2RlLCAwKSkKKyAgICAgICAgICAgICAgICBpZiAoc3RvcmUgJiYgZm9yYmlkZGVuX25hbWUoYywgc3RyLCBzdHJfbm9kZSwgMCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKG5hbWUsIG5hbWVfbm9kZSwgMCkpCisgICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIG5hbWUsIG5hbWVfbm9kZSwgMCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGFsaWFzKG5hbWUsIHN0ciwgYy0+Y19hcmVuYSk7CkBAIC0yMzIzLDcgKzI3OTcsNyBAQAogICAgICAgICAgICAgICAgIGEtPmFzbmFtZSA9IE5FV19JREVOVElGSUVSKGFzbmFtZV9ub2RlKTsKICAgICAgICAgICAgICAgICBpZiAoIWEtPmFzbmFtZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGEtPmFzbmFtZSwgYXNuYW1lX25vZGUsIDApKQorICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBhLT5hc25hbWUsIGFzbmFtZV9ub2RlLCAwKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGE7CiAgICAgICAgICAgICB9CkBAIC0yMzM0LDcgKzI4MDgsNyBAQAogICAgICAgICAgICAgICAgIG5hbWUgPSBORVdfSURFTlRJRklFUihuYW1lX25vZGUpOwogICAgICAgICAgICAgICAgIGlmICghbmFtZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgaWYgKHN0b3JlICYmIGZvcmJpZGRlbl9uYW1lKG5hbWUsIG5hbWVfbm9kZSwgMCkpCisgICAgICAgICAgICAgICAgaWYgKHN0b3JlICYmIGZvcmJpZGRlbl9uYW1lKGMsIG5hbWUsIG5hbWVfbm9kZSwgMCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIHJldHVybiBhbGlhcyhuYW1lLCBOVUxMLCBjLT5jX2FyZW5hKTsKICAgICAgICAgICAgIH0KQEAgLTI0NjMsMTMgKzI5MzcsMTMgQEAKICAgICAgICAgICAgIG4gPSBDSElMRChuLCBpZHgpOwogICAgICAgICAgICAgbl9jaGlsZHJlbiA9IE5DSChuKTsKICAgICAgICAgICAgIGlmIChuX2NoaWxkcmVuICUgMiA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgYXN0X2Vycm9yKG4sICJ0cmFpbGluZyBjb21tYSBub3QgYWxsb3dlZCB3aXRob3V0IgorICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAidHJhaWxpbmcgY29tbWEgbm90IGFsbG93ZWQgd2l0aG91dCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBzdXJyb3VuZGluZyBwYXJlbnRoZXNlcyIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBhc3RfZXJyb3IobiwgIlVuZXhwZWN0ZWQgbm9kZS10eXBlIGluIGZyb20taW1wb3J0Iik7CisgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgIlVuZXhwZWN0ZWQgbm9kZS10eXBlIGluIGZyb20taW1wb3J0Iik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogCkBAIC0yODc1LDcgKzMzNDksNyBAQAogICAgICAgICBpZGVudGlmaWVyIGUgPSBORVdfSURFTlRJRklFUihDSElMRChleGMsIDMpKTsKICAgICAgICAgaWYgKCFlKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShlLCBDSElMRChleGMsIDMpLCAwKSkKKyAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGUsIENISUxEKGV4YywgMyksIDApKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGV4cHJlc3Npb24gPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQoZXhjLCAxKSk7CiAgICAgICAgIGlmICghZXhwcmVzc2lvbikKQEAgLTI4OTksNyArMzM3Myw3IEBACiB7CiAgICAgY29uc3QgaW50IG5jaCA9IE5DSChuKTsKICAgICBpbnQgbl9leGNlcHQgPSAobmNoIC0gMykvMzsKLSAgICBhc2RsX3NlcSAqYm9keSwgKm9yZWxzZSA9IE5VTEwsICpmaW5hbGx5ID0gTlVMTDsKKyAgICBhc2RsX3NlcSAqYm9keSwgKmhhbmRsZXJzID0gTlVMTCwgKm9yZWxzZSA9IE5VTEwsICpmaW5hbGx5ID0gTlVMTDsKIAogICAgIFJFUShuLCB0cnlfc3RtdCk7CiAKQEAgLTI5MzQsMTUgKzM0MDgsMTQgQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIGlmIChUWVBFKENISUxEKG4sIG5jaCAtIDMpKSAhPSBleGNlcHRfY2xhdXNlKSB7Ci0gICAgICAgIGFzdF9lcnJvcihuLCAibWFsZm9ybWVkICd0cnknIHN0YXRlbWVudCIpOworICAgICAgICBhc3RfZXJyb3IoYywgbiwgIm1hbGZvcm1lZCAndHJ5JyBzdGF0ZW1lbnQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgaWYgKG5fZXhjZXB0ID4gMCkgewogICAgICAgICBpbnQgaTsKLSAgICAgICAgc3RtdF90eSBleGNlcHRfc3Q7CiAgICAgICAgIC8qIHByb2Nlc3MgZXhjZXB0IHN0YXRlbWVudHMgdG8gY3JlYXRlIGEgdHJ5IC4uLiBleGNlcHQgKi8KLSAgICAgICAgYXNkbF9zZXEgKmhhbmRsZXJzID0gYXNkbF9zZXFfbmV3KG5fZXhjZXB0LCBjLT5jX2FyZW5hKTsKKyAgICAgICAgaGFuZGxlcnMgPSBhc2RsX3NlcV9uZXcobl9leGNlcHQsIGMtPmNfYXJlbmEpOwogICAgICAgICBpZiAoaGFuZGxlcnMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0yOTUzLDI4ICszNDI2LDE1IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoaGFuZGxlcnMsIGksIGUpOwogICAgICAgICB9Ci0KLSAgICAgICAgZXhjZXB0X3N0ID0gVHJ5RXhjZXB0KGJvZHksIGhhbmRsZXJzLCBvcmVsc2UsIExJTkVOTyhuKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7Ci0gICAgICAgIGlmICghZmluYWxseSkKLSAgICAgICAgICAgIHJldHVybiBleGNlcHRfc3Q7Ci0KLSAgICAgICAgLyogaWYgYSAnZmluYWxseScgaXMgcHJlc2VudCB0b28sIHdlIG5lc3QgdGhlIFRyeUV4Y2VwdCB3aXRoaW4gYQotICAgICAgICAgICBUcnlGaW5hbGx5IHRvIGVtdWxhdGUgdHJ5IC4uLiBleGNlcHQgLi4uIGZpbmFsbHkgKi8KLSAgICAgICAgYm9keSA9IGFzZGxfc2VxX25ldygxLCBjLT5jX2FyZW5hKTsKLSAgICAgICAgaWYgKGJvZHkgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBhc2RsX3NlcV9TRVQoYm9keSwgMCwgZXhjZXB0X3N0KTsKICAgICB9CiAKLSAgICAvKiBtdXN0IGJlIGEgdHJ5IC4uLiBmaW5hbGx5IChleGNlcHQgY2xhdXNlcyBhcmUgaW4gYm9keSwgaWYgYW55IGV4aXN0KSAqLwotICAgIGFzc2VydChmaW5hbGx5ICE9IE5VTEwpOwotICAgIHJldHVybiBUcnlGaW5hbGx5KGJvZHksIGZpbmFsbHksIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICBhc3NlcnQoZmluYWxseSAhPSBOVUxMIHx8IGFzZGxfc2VxX0xFTihoYW5kbGVycykpOworICAgIHJldHVybiBUcnkoYm9keSwgaGFuZGxlcnMsIG9yZWxzZSwgZmluYWxseSwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogfQogCiAvKiB3aXRoX2l0ZW06IHRlc3QgWydhcycgZXhwcl0gKi8KLXN0YXRpYyBzdG10X3R5Ci1hc3RfZm9yX3dpdGhfaXRlbShzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBhc2RsX3NlcSAqY29udGVudCkKK3N0YXRpYyB3aXRoaXRlbV90eQorYXN0X2Zvcl93aXRoX2l0ZW0oc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKIHsKICAgICBleHByX3R5IGNvbnRleHRfZXhwciwgb3B0aW9uYWxfdmFycyA9IE5VTEw7CiAKQEAgLTI5OTMsNDMgKzM0NTMsMzQgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBXaXRoKGNvbnRleHRfZXhwciwgb3B0aW9uYWxfdmFycywgY29udGVudCwgTElORU5PKG4pLAotICAgICAgICAgICAgICAgIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgcmV0dXJuIHdpdGhpdGVtKGNvbnRleHRfZXhwciwgb3B0aW9uYWxfdmFycywgYy0+Y19hcmVuYSk7CiB9CiAKIC8qIHdpdGhfc3RtdDogJ3dpdGgnIHdpdGhfaXRlbSAoJywnIHdpdGhfaXRlbSkqICc6JyBzdWl0ZSAqLwogc3RhdGljIHN0bXRfdHkKIGFzdF9mb3Jfd2l0aF9zdG10KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCiB7Ci0gICAgaW50IGk7Ci0gICAgc3RtdF90eSByZXQ7Ci0gICAgYXNkbF9zZXEgKmlubmVyOworICAgIGludCBpLCBuX2l0ZW1zOworICAgIGFzZGxfc2VxICppdGVtcywgKmJvZHk7CiAKICAgICBSRVEobiwgd2l0aF9zdG10KTsKIAotICAgIC8qIHByb2Nlc3MgdGhlIHdpdGggaXRlbXMgaW5zaWRlLW91dCAqLwotICAgIGkgPSBOQ0gobikgLSAxOwotICAgIC8qIHRoZSBzdWl0ZSBvZiB0aGUgaW5uZXJtb3N0IHdpdGggaXRlbSBpcyB0aGUgc3VpdGUgb2YgdGhlIHdpdGggc3RtdCAqLwotICAgIGlubmVyID0gYXN0X2Zvcl9zdWl0ZShjLCBDSElMRChuLCBpKSk7Ci0gICAgaWYgKCFpbm5lcikKKyAgICBuX2l0ZW1zID0gKE5DSChuKSAtIDIpIC8gMjsKKyAgICBpdGVtcyA9IGFzZGxfc2VxX25ldyhuX2l0ZW1zLCBjLT5jX2FyZW5hKTsKKyAgICBpZiAoIWl0ZW1zKQogICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgaSAtPSAyOwotICAgICAgICByZXQgPSBhc3RfZm9yX3dpdGhfaXRlbShjLCBDSElMRChuLCBpKSwgaW5uZXIpOwotICAgICAgICBpZiAoIXJldCkKKyAgICBmb3IgKGkgPSAxOyBpIDwgTkNIKG4pIC0gMjsgaSArPSAyKSB7CisgICAgICAgIHdpdGhpdGVtX3R5IGl0ZW0gPSBhc3RfZm9yX3dpdGhfaXRlbShjLCBDSElMRChuLCBpKSk7CisgICAgICAgIGlmICghaXRlbSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAvKiB3YXMgdGhpcyB0aGUgbGFzdCBpdGVtPyAqLwotICAgICAgICBpZiAoaSA9PSAxKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIC8qIGlmIG5vdCwgd3JhcCB0aGUgcmVzdWx0IHNvIGZhciBpbiBhIG5ldyBzZXF1ZW5jZSAqLwotICAgICAgICBpbm5lciA9IGFzZGxfc2VxX25ldygxLCBjLT5jX2FyZW5hKTsKLSAgICAgICAgaWYgKCFpbm5lcikKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBhc2RsX3NlcV9TRVQoaW5uZXIsIDAsIHJldCk7CisgICAgICAgIGFzZGxfc2VxX1NFVChpdGVtcywgKGkgLSAxKSAvIDIsIGl0ZW0pOwogICAgIH0KIAotICAgIHJldHVybiByZXQ7CisgICAgYm9keSA9IGFzdF9mb3Jfc3VpdGUoYywgQ0hJTEQobiwgTkNIKG4pIC0gMSkpOworICAgIGlmICghYm9keSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gV2l0aChpdGVtcywgYm9keSwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogfQogCiBzdGF0aWMgc3RtdF90eQpAQCAtMzA0OSw3ICszNTAwLDcgQEAKICAgICAgICAgY2xhc3NuYW1lID0gTkVXX0lERU5USUZJRVIoQ0hJTEQobiwgMSkpOwogICAgICAgICBpZiAoIWNsYXNzbmFtZSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoY2xhc3NuYW1lLCBDSElMRChuLCAzKSwgMCkpCisgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBjbGFzc25hbWUsIENISUxEKG4sIDMpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICByZXR1cm4gQ2xhc3NEZWYoY2xhc3NuYW1lLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBzLCBkZWNvcmF0b3Jfc2VxLAogICAgICAgICAgICAgICAgICAgICAgICAgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwpAQCAtMzA2Miw3ICszNTEzLDcgQEAKICAgICAgICAgY2xhc3NuYW1lID0gTkVXX0lERU5USUZJRVIoQ0hJTEQobiwgMSkpOwogICAgICAgICBpZiAoIWNsYXNzbmFtZSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoY2xhc3NuYW1lLCBDSElMRChuLCAzKSwgMCkpCisgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBjbGFzc25hbWUsIENISUxEKG4sIDMpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICByZXR1cm4gQ2xhc3NEZWYoY2xhc3NuYW1lLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBzLCBkZWNvcmF0b3Jfc2VxLAogICAgICAgICAgICAgICAgICAgICAgICAgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwpAQCAtMzA4Nyw3ICszNTM4LDcgQEAKICAgICBjbGFzc25hbWUgPSBORVdfSURFTlRJRklFUihDSElMRChuLCAxKSk7CiAgICAgaWYgKCFjbGFzc25hbWUpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChmb3JiaWRkZW5fbmFtZShjbGFzc25hbWUsIENISUxEKG4sIDEpLCAwKSkKKyAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywgY2xhc3NuYW1lLCBDSElMRChuLCAxKSwgMCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcmV0dXJuIENsYXNzRGVmKGNsYXNzbmFtZSwgY2FsbC0+di5DYWxsLmFyZ3MsIGNhbGwtPnYuQ2FsbC5rZXl3b3JkcywKQEAgLTMyMTMsMjAgKzM2NjQsMTQgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRlY29kZV91dGY4KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKipzUHRyLCBjb25zdCBjaGFyICplbmQsIGNoYXIqIGVuY29kaW5nKQorZGVjb2RlX3V0Zjgoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3QgY2hhciAqKnNQdHIsIGNvbnN0IGNoYXIgKmVuZCkKIHsKLSAgICBQeU9iamVjdCAqdSwgKnY7CiAgICAgY2hhciAqcywgKnQ7CiAgICAgdCA9IHMgPSAoY2hhciAqKSpzUHRyOwogICAgIC8qIHdoaWxlIChzIDwgZW5kICYmICpzICE9ICdcXCcpIHMrKzsgKi8gLyogaW5lZmZpY2llbnQgZm9yIHUiLi4iICovCiAgICAgd2hpbGUgKHMgPCBlbmQgJiYgKCpzICYgMHg4MCkpIHMrKzsKICAgICAqc1B0ciA9IHM7Ci0gICAgdSA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KHQsIHMgLSB0LCBOVUxMKTsKLSAgICBpZiAodSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh1LCBlbmNvZGluZywgTlVMTCk7Ci0gICAgUHlfREVDUkVGKHUpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOCh0LCBzIC0gdCwgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zMjM4LDcgKzM2ODMsNiBAQAogICAgIGNvbnN0IGNoYXIgKmVuZDsKIAogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7Ci0gICAgICAgIGJ1ZiA9IChjaGFyICopczsKICAgICAgICAgdSA9IE5VTEw7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLyogY2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgKi8KQEAgLTMyNjEsMjIgKzM3MDUsMjAgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgqcyAmIDB4ODApIHsgLyogWFhYIGluZWZmaWNpZW50ICovCiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnc7Ci0gICAgICAgICAgICAgICAgY2hhciAqcjsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHJuLCBpOwotICAgICAgICAgICAgICAgIHcgPSBkZWNvZGVfdXRmOChjLCAmcywgZW5kLCAidXRmLTMyLWJlIik7CisgICAgICAgICAgICAgICAgaW50IGtpbmQ7CisgICAgICAgICAgICAgICAgdm9pZCAqZGF0YTsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgaTsKKyAgICAgICAgICAgICAgICB3ID0gZGVjb2RlX3V0ZjgoYywgJnMsIGVuZCk7CiAgICAgICAgICAgICAgICAgaWYgKHcgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByID0gUHlCeXRlc19BU19TVFJJTkcodyk7Ci0gICAgICAgICAgICAgICAgcm4gPSBQeV9TSVpFKHcpOwotICAgICAgICAgICAgICAgIGFzc2VydChybiAlIDQgPT0gMCk7Ci0gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHJuOyBpICs9IDQpIHsKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihwLCAiXFxVJTAyeCUwMnglMDJ4JTAyeCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcltpICsgMF0gJiAweEZGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJbaSArIDFdICYgMHhGRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByW2kgKyAyXSAmIDB4RkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcltpICsgM10gJiAweEZGKTsKKyAgICAgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodyk7CisgICAgICAgICAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHcpOworICAgICAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHcpOworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGNociA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHAsICJcXFUlMDh4IiwgY2hyKTsKICAgICAgICAgICAgICAgICAgICAgcCArPSAxMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLyogU2hvdWxkIGJlIGltcG9zc2libGUgdG8gb3ZlcmZsb3cgKi8KQEAgLTMzMTAsMTMgKzM3NTIsMjEgQEAKICAgICBpbnQgcmF3bW9kZSA9IDA7CiAgICAgaW50IG5lZWRfZW5jb2Rpbmc7CiAgICAgaWYgKFB5X0lTQUxQSEEocXVvdGUpKSB7Ci0gICAgICAgIGlmIChxdW90ZSA9PSAnYicgfHwgcXVvdGUgPT0gJ0InKSB7Ci0gICAgICAgICAgICBxdW90ZSA9ICorK3M7Ci0gICAgICAgICAgICAqYnl0ZXNtb2RlID0gMTsKLSAgICAgICAgfQotICAgICAgICBpZiAocXVvdGUgPT0gJ3InIHx8IHF1b3RlID09ICdSJykgewotICAgICAgICAgICAgcXVvdGUgPSAqKytzOwotICAgICAgICAgICAgcmF3bW9kZSA9IDE7CisgICAgICAgIHdoaWxlICghKmJ5dGVzbW9kZSB8fCAhcmF3bW9kZSkgeworICAgICAgICAgICAgaWYgKHF1b3RlID09ICdiJyB8fCBxdW90ZSA9PSAnQicpIHsKKyAgICAgICAgICAgICAgICBxdW90ZSA9ICorK3M7CisgICAgICAgICAgICAgICAgKmJ5dGVzbW9kZSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChxdW90ZSA9PSAndScgfHwgcXVvdGUgPT0gJ1UnKSB7CisgICAgICAgICAgICAgICAgcXVvdGUgPSAqKytzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAocXVvdGUgPT0gJ3InIHx8IHF1b3RlID09ICdSJykgeworICAgICAgICAgICAgICAgIHF1b3RlID0gKisrczsKKyAgICAgICAgICAgICAgICByYXdtb2RlID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIGlmIChxdW90ZSAhPSAnXCcnICYmIHF1b3RlICE9ICdcIicpIHsKQEAgLTMzNDcsMTAgKzM3OTcsMTAgQEAKICAgICB9CiAgICAgaWYgKCpieXRlc21vZGUpIHsKICAgICAgICAgLyogRGlzYWxsb3cgbm9uLWFzY2lpIGNoYXJhY3RlcnMgKGJ1dCBub3QgZXNjYXBlcykgKi8KLSAgICAgICAgY29uc3QgY2hhciAqYzsKLSAgICAgICAgZm9yIChjID0gczsgKmM7IGMrKykgewotICAgICAgICAgICAgaWYgKFB5X0NIQVJNQVNLKCpjKSA+PSAweDgwKSB7Ci0gICAgICAgICAgICAgICAgYXN0X2Vycm9yKG4sICJieXRlcyBjYW4gb25seSBjb250YWluIEFTQ0lJICIKKyAgICAgICAgY29uc3QgY2hhciAqY2g7CisgICAgICAgIGZvciAoY2ggPSBzOyAqY2g7IGNoKyspIHsKKyAgICAgICAgICAgIGlmIChQeV9DSEFSTUFTSygqY2gpID49IDB4ODApIHsKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImJ5dGVzIGNhbiBvbmx5IGNvbnRhaW4gQVNDSUkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAibGl0ZXJhbCBjaGFyYWN0ZXJzLiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpAQCAtMzM5OCw3ICszODQ4LDcgQEAKICAgICAgICAgICAgIGlmIChzID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgaWYgKCpieXRlc21vZGUgIT0gc3ViYm0pIHsKLSAgICAgICAgICAgICAgICBhc3RfZXJyb3IobiwgImNhbm5vdCBtaXggYnl0ZXMgYW5kIG5vbmJ5dGVzIGxpdGVyYWxzIik7CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJjYW5ub3QgbWl4IGJ5dGVzIGFuZCBub25ieXRlcyBsaXRlcmFscyIpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9QeXRob24vYmx0aW5tb2R1bGUuYyBiL1B5dGhvbi9ibHRpbm1vZHVsZS5jCmluZGV4IGQ0YmY2NzcuLmJmOTBhYmEgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9ibHRpbm1vZHVsZS5jCisrKyBiL1B5dGhvbi9ibHRpbm1vZHVsZS5jCkBAIC02LDYgKzYsOSBAQAogI2luY2x1ZGUgIm5vZGUuaCIKICNpbmNsdWRlICJjb2RlLmgiCiAKKyNpbmNsdWRlICJhc2RsLmgiCisjaW5jbHVkZSAiYXN0LmgiCisKICNpbmNsdWRlIDxjdHlwZS5oPgogCiAjaWZkZWYgSEFWRV9MQU5HSU5GT19ICkBAIC0xOCwyMCArMjEsMjAgQEAKICAgIERvbid0IGZvcmdldCB0byBtb2RpZnkgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdCgpIGlmIHlvdSB0b3VjaCBhbnkgb2YgdGhlCiAgICB2YWx1ZXMgZm9yIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmchCiAqLwotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChIQVZFX1VTQUJMRV9XQ0hBUl9UKQorI2lmZGVmIEhBVkVfTUJDUwogY29uc3QgY2hhciAqUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9ICJtYmNzIjsKIGludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMTsKICNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQogY29uc3QgY2hhciAqUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9ICJ1dGYtOCI7CiBpbnQgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDE7Ci0jZWxpZiBkZWZpbmVkKEhBVkVfTEFOR0lORk9fSCkgJiYgZGVmaW5lZChDT0RFU0VUKQorI2Vsc2UKIGNvbnN0IGNoYXIgKlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSBOVUxMOyAvKiBzZXQgYnkgaW5pdGZzZW5jb2RpbmcoKSAqLwogaW50IFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAwOwotI2Vsc2UKLWNvbnN0IGNoYXIgKlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAidXRmLTgiOwotaW50IFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAxOwogI2VuZGlmCiAKK19QeV9JREVOVElGSUVSKGZpbGVubyk7CitfUHlfSURFTlRJRklFUihmbHVzaCk7CisKIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX19fYnVpbGRfY2xhc3NfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewpAQCAtMzksNiArNDIsNyBAQAogICAgIFB5T2JqZWN0ICpjbHMgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbmFyZ3M7CiAgICAgaW50IGlzY2xhc3M7CisgICAgX1B5X0lERU5USUZJRVIoX19wcmVwYXJlX18pOwogCiAgICAgYXNzZXJ0KGFyZ3MgIT0gTlVMTCk7CiAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7CkBAIC05OSw2ICsxMDMsNyBAQAogICAgICAgICBQeV9JTkNSRUYobWV0YSk7CiAgICAgICAgIGlzY2xhc3MgPSAxOyAgLyogbWV0YSBpcyByZWFsbHkgYSBjbGFzcyAqLwogICAgIH0KKwogICAgIGlmIChpc2NsYXNzKSB7CiAgICAgICAgIC8qIG1ldGEgaXMgcmVhbGx5IGEgY2xhc3MsIHNvIGNoZWNrIGZvciBhIG1vcmUgZGVyaXZlZAogICAgICAgICAgICBtZXRhY2xhc3MsIG9yIHBvc3NpYmxlIG1ldGFjbGFzcyBjb25mbGljdHM6ICovCkBAIC0xMTgsNyArMTIzLDcgQEAKICAgICB9CiAgICAgLyogZWxzZTogbWV0YSBpcyBub3QgYSBjbGFzcywgc28gd2UgY2Fubm90IGRvIHRoZSBtZXRhY2xhc3MKICAgICAgICBjYWxjdWxhdGlvbiwgc28gd2Ugd2lsbCB1c2UgdGhlIGV4cGxpY2l0bHkgZ2l2ZW4gb2JqZWN0IGFzIGl0IGlzICovCi0gICAgcHJlcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobWV0YSwgIl9fcHJlcGFyZV9fIik7CisgICAgcHJlcCA9IF9QeU9iamVjdF9HZXRBdHRySWQobWV0YSwgJlB5SWRfX19wcmVwYXJlX18pOwogICAgIGlmIChwcmVwID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMTc5LDIxICsxODQsMTggQEAKIHsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im5hbWUiLCAiZ2xvYmFscyIsICJsb2NhbHMiLCAiZnJvbWxpc3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGV2ZWwiLCAwfTsKLSAgICBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpnbG9iYWxzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbG9jYWxzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZnJvbWxpc3QgPSBOVUxMOwotICAgIGludCBsZXZlbCA9IC0xOworICAgIFB5T2JqZWN0ICpuYW1lLCAqZ2xvYmFscyA9IE5VTEwsICpsb2NhbHMgPSBOVUxMLCAqZnJvbWxpc3QgPSBOVUxMOworICAgIGludCBsZXZlbCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAic3xPT09pOl9faW1wb3J0X18iLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJVfE9PT2k6X19pbXBvcnRfXyIsCiAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJm5hbWUsICZnbG9iYWxzLCAmbG9jYWxzLCAmZnJvbWxpc3QsICZsZXZlbCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbChuYW1lLCBnbG9iYWxzLCBsb2NhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0LCBsZXZlbCk7CisgICAgcmV0dXJuIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsT2JqZWN0KG5hbWUsIGdsb2JhbHMsIGxvY2FscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3QsIGxldmVsKTsKIH0KIAogUHlEb2NfU1RSVkFSKGltcG9ydF9kb2MsCi0iX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzPXt9LCBsb2NhbHM9e30sIGZyb21saXN0PVtdLCBsZXZlbD0tMSkgLT4gbW9kdWxlXG5cCisiX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lLCBmcm9tbGlzdD0oKSwgbGV2ZWw9MCkgLT4gbW9kdWxlXG5cCiBcblwKIEltcG9ydCBhIG1vZHVsZS4gQmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIG1lYW50IGZvciB1c2UgYnkgdGhlIFB5dGhvblxuXAogaW50ZXJwcmV0ZXIgYW5kIG5vdCBmb3IgZ2VuZXJhbCB1c2UgaXQgaXMgYmV0dGVyIHRvIHVzZVxuXApAQCAtMjA2LDggKzIwOCw3IEBACiBXaGVuIGltcG9ydGluZyBhIG1vZHVsZSBmcm9tIGEgcGFja2FnZSwgbm90ZSB0aGF0IF9faW1wb3J0X18oJ0EuQicsIC4uLilcblwKIHJldHVybnMgcGFja2FnZSBBIHdoZW4gZnJvbWxpc3QgaXMgZW1wdHksIGJ1dCBpdHMgc3VibW9kdWxlIEIgd2hlblxuXAogZnJvbWxpc3QgaXMgbm90IGVtcHR5LiAgTGV2ZWwgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0byBwZXJmb3JtIFxuXAotYWJzb2x1dGUgb3IgcmVsYXRpdmUgaW1wb3J0cy4gIC0xIGlzIHRoZSBvcmlnaW5hbCBzdHJhdGVneSBvZiBhdHRlbXB0aW5nXG5cCi1ib3RoIGFic29sdXRlIGFuZCByZWxhdGl2ZSBpbXBvcnRzLCAwIGlzIGFic29sdXRlLCBhIHBvc2l0aXZlIG51bWJlclxuXAorYWJzb2x1dGUgb3IgcmVsYXRpdmUgaW1wb3J0cy4gMCBpcyBhYnNvbHV0ZSB3aGlsZSBhIHBvc2l0aXZlIG51bWJlclxuXAogaXMgdGhlIG51bWJlciBvZiBwYXJlbnQgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IG1vZHVsZS4iKTsKIAogCkBAIC00MzgsNiArNDM5LDE5IEBACiAgICAgfQogfQogCitzdGF0aWMgUHlPYmplY3QgKgorZmlsdGVyX3JlZHVjZShmaWx0ZXJvYmplY3QgKmx6KQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUobHopLCBsei0+ZnVuYywgbHotPml0KTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlNZXRob2REZWYgZmlsdGVyX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgIChQeUNGdW5jdGlvbilmaWx0ZXJfcmVkdWNlLCAgIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGZpbHRlcl9kb2MsCiAiZmlsdGVyKGZ1bmN0aW9uIG9yIE5vbmUsIGl0ZXJhYmxlKSAtLT4gZmlsdGVyIG9iamVjdFxuXAogXG5cCkBAIC00NzQsNyArNDg4LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWZpbHRlcl9uZXh0LCAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBmaWx0ZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTUxOCwxNyArNTMyLDEwIEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT3JkaW5hbCh4KTsKIH0KIAotUHlEb2NfVkFSKGNocl9kb2MpID0gUHlEb2NfU1RSKAorUHlEb2NfU1RSVkFSKGNocl9kb2MsCiAiY2hyKGkpIC0+IFVuaWNvZGUgY2hhcmFjdGVyXG5cCiBcblwKLVJldHVybiBhIFVuaWNvZGUgc3RyaW5nIG9mIG9uZSBjaGFyYWN0ZXIgd2l0aCBvcmRpbmFsIGk7IDAgPD0gaSA8PSAweDEwZmZmZi4iCi0pCi0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotUHlEb2NfU1RSKAotIlxuSWYgMHgxMDAwMCA8PSBpLCBhIHN1cnJvZ2F0ZSBwYWlyIGlzIHJldHVybmVkLiIKLSkKLSNlbmRpZgotOworUmV0dXJuIGEgVW5pY29kZSBzdHJpbmcgb2Ygb25lIGNoYXJhY3RlciB3aXRoIG9yZGluYWwgaTsgMCA8PSBpIDw9IDB4MTBmZmZmLiIpOwogCiAKIHN0YXRpYyBjaGFyICoKQEAgLTUzOSw4ICs1NDYsOCBAQAogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhjbWQpKSB7CiAgICAgICAgIGNmLT5jZl9mbGFncyB8PSBQeUNGX0lHTk9SRV9DT09LSUU7Ci0gICAgICAgIGNtZCA9IF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyhjbWQsIE5VTEwpOwotICAgICAgICBpZiAoY21kID09IE5VTEwpCisgICAgICAgIHN0ciA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKGNtZCwgJnNpemUpOworICAgICAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZWxzZSBpZiAoIVB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcihjbWQpKSB7CkBAIC01NDksOSArNTU2LDEwIEBACiAgICAgICAgICAgZnVuY25hbWUsIHdoYXQpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcihjbWQsIChjb25zdCB2b2lkICoqKSZzdHIsICZzaXplKSA8IDApIHsKKyAgICBlbHNlIGlmIChQeU9iamVjdF9Bc1JlYWRCdWZmZXIoY21kLCAoY29uc3Qgdm9pZCAqKikmc3RyLCAmc2l6ZSkgPCAwKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKwogICAgIGlmIChzdHJsZW4oc3RyKSAhPSBzaXplKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIGNvZGUgc3RyaW5nIGNhbm5vdCBjb250YWluIG51bGwgYnl0ZXMiKTsKQEAgLTY0MCw2ICs2NDgsMTAgQEAKICAgICAgICAgICAgICAgICBQeUFyZW5hX0ZyZWUoYXJlbmEpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIVB5QVNUX1ZhbGlkYXRlKG1vZCkpIHsKKyAgICAgICAgICAgICAgICBQeUFyZW5hX0ZyZWUoYXJlbmEpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHQgPSAoUHlPYmplY3QqKVB5QVNUX0NvbXBpbGVFeChtb2QsIGZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNmLCBvcHRpbWl6ZSwgYXJlbmEpOwogICAgICAgICAgICAgUHlBcmVuYV9GcmVlKGFyZW5hKTsKQEAgLTEwNTgsNiArMTA3MCwzMSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCittYXBfcmVkdWNlKG1hcG9iamVjdCAqbHopCit7CisgICAgUHlfc3NpemVfdCBudW1hcmdzID0gUHlUdXBsZV9HRVRfU0laRShsei0+aXRlcnMpOworICAgIFB5T2JqZWN0ICphcmdzID0gUHlUdXBsZV9OZXcobnVtYXJncysxKTsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKGx6LT5mdW5jKTsKKyAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIGx6LT5mdW5jKTsKKyAgICBmb3IgKGkgPSAwOyBpPG51bWFyZ3M7IGkrKyl7CisgICAgICAgIFB5T2JqZWN0ICppdCA9IFB5VHVwbGVfR0VUX0lURU0obHotPml0ZXJzLCBpKTsKKyAgICAgICAgUHlfSU5DUkVGKGl0KTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCBpKzEsIGl0KTsKKyAgICB9CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiT04iLCBQeV9UWVBFKGx6KSwgYXJncyk7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBtYXBfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgKFB5Q0Z1bmN0aW9uKW1hcF9yZWR1Y2UsICAgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCisKIFB5RG9jX1NUUlZBUihtYXBfZG9jLAogIm1hcChmdW5jLCAqaXRlcmFibGVzKSAtLT4gbWFwIG9iamVjdFxuXAogXG5cCkBAIC0xMDk0LDcgKzExMzEsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpbWFwX25leHQsICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBtYXBfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTExMTgsNyArMTE1NSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghUHlJdGVyX0NoZWNrKGl0KSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgIiUuMjAwcyBvYmplY3QgaXMgbm90IGFuIGl0ZXJhdG9yIiwKKyAgICAgICAgICAgICInJS4yMDBzJyBvYmplY3QgaXMgbm90IGFuIGl0ZXJhdG9yIiwKICAgICAgICAgICAgIGl0LT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTQyNCwyNCArMTQ2MSwxMyBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKSB7Ci0gICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOwogICAgICAgICBpZiAoc2l6ZSA9PSAxKSB7Ci0gICAgICAgICAgICBvcmQgPSAobG9uZykqUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKTsKKyAgICAgICAgICAgIG9yZCA9IChsb25nKVB5VW5pY29kZV9SRUFEX0NIQVIob2JqLCAwKTsKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob3JkKTsKICAgICAgICAgfQotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgaWYgKHNpemUgPT0gMikgewotICAgICAgICAgICAgLyogRGVjb2RlIGEgdmFsaWQgc3Vycm9nYXRlIHBhaXIgKi8KLSAgICAgICAgICAgIGludCBjMCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG9iailbMF07Ci0gICAgICAgICAgICBpbnQgYzEgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopWzFdOwotICAgICAgICAgICAgaWYgKDB4RDgwMCA8PSBjMCAmJiBjMCA8PSAweERCRkYgJiYKLSAgICAgICAgICAgICAgICAweERDMDAgPD0gYzEgJiYgYzEgPD0gMHhERkZGKSB7Ci0gICAgICAgICAgICAgICAgb3JkID0gKCgoKGMwICYgMHgwM0ZGKSA8PCAxMCkgfCAoYzEgJiAweDAzRkYpKSArCi0gICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDApOwotICAgICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob3JkKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2VuZGlmCiAgICAgfQogICAgIGVsc2UgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKG9iaikpIHsKICAgICAgICAgLyogWFhYIEhvcGVmdWxseSB0aGlzIGlzIHRlbXBvcmFyeSAqLwpAQCAtMTQ2OSwxMyArMTQ5NSw3IEBACiAib3JkKGMpIC0+IGludGVnZXJcblwKIFxuXAogUmV0dXJuIHRoZSBpbnRlZ2VyIG9yZGluYWwgb2YgYSBvbmUtY2hhcmFjdGVyIHN0cmluZy4iCi0pCi0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotUHlEb2NfU1RSKAotIlxuQSB2YWxpZCBzdXJyb2dhdGUgcGFpciBpcyBhbHNvIGFjY2VwdGVkLiIKLSkKLSNlbmRpZgotOworKTsKIAogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTQ5OSwxNSArMTUxOSwxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5fcHJpbnQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNlcCIsICJlbmQiLCAiZmlsZSIsIDB9OworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgImVuZCIsICJmaWxlIiwgImZsdXNoIiwgMH07CiAgICAgc3RhdGljIFB5T2JqZWN0ICpkdW1teV9hcmdzOwotICAgIFB5T2JqZWN0ICpzZXAgPSBOVUxMLCAqZW5kID0gTlVMTCwgKmZpbGUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzZXAgPSBOVUxMLCAqZW5kID0gTlVMTCwgKmZpbGUgPSBOVUxMLCAqZmx1c2ggPSBOVUxMOwogICAgIGludCBpLCBlcnI7CiAKICAgICBpZiAoZHVtbXlfYXJncyA9PSBOVUxMICYmICEoZHVtbXlfYXJncyA9IFB5VHVwbGVfTmV3KDApKSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGR1bW15X2FyZ3MsIGt3ZHMsICJ8T09POnByaW50IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZzZXAsICZlbmQsICZmaWxlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoZHVtbXlfYXJncywga3dkcywgInxPT09POnByaW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZzZXAsICZlbmQsICZmaWxlLCAmZmx1c2gpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoZmlsZSA9PSBOVUxMIHx8IGZpbGUgPT0gUHlfTm9uZSkgewogICAgICAgICBmaWxlID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRvdXQiKTsKQEAgLTE1NTgsMTcgKzE1NzgsMzIgQEAKICAgICBpZiAoZXJyKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIGlmIChmbHVzaCAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICp0bXA7CisgICAgICAgIGludCBkb19mbHVzaCA9IFB5T2JqZWN0X0lzVHJ1ZShmbHVzaCk7CisgICAgICAgIGlmIChkb19mbHVzaCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBlbHNlIGlmIChkb19mbHVzaCkgeworICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmaWxlLCAiZmx1c2giLCAiIik7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlEb2NfU1RSVkFSKHByaW50X2RvYywKLSJwcmludCh2YWx1ZSwgLi4uLCBzZXA9JyAnLCBlbmQ9J1xcbicsIGZpbGU9c3lzLnN0ZG91dClcblwKKyJwcmludCh2YWx1ZSwgLi4uLCBzZXA9JyAnLCBlbmQ9J1xcbicsIGZpbGU9c3lzLnN0ZG91dCwgZmx1c2g9RmFsc2UpXG5cCiBcblwKIFByaW50cyB0aGUgdmFsdWVzIHRvIGEgc3RyZWFtLCBvciB0byBzeXMuc3Rkb3V0IGJ5IGRlZmF1bHQuXG5cCiBPcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50czpcblwKLWZpbGU6IGEgZmlsZS1saWtlIG9iamVjdCAoc3RyZWFtKTsgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgc3lzLnN0ZG91dC5cblwKLXNlcDogIHN0cmluZyBpbnNlcnRlZCBiZXR3ZWVuIHZhbHVlcywgZGVmYXVsdCBhIHNwYWNlLlxuXAotZW5kOiAgc3RyaW5nIGFwcGVuZGVkIGFmdGVyIHRoZSBsYXN0IHZhbHVlLCBkZWZhdWx0IGEgbmV3bGluZS4iKTsKK2ZpbGU6ICBhIGZpbGUtbGlrZSBvYmplY3QgKHN0cmVhbSk7IGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IHN5cy5zdGRvdXQuXG5cCitzZXA6ICAgc3RyaW5nIGluc2VydGVkIGJldHdlZW4gdmFsdWVzLCBkZWZhdWx0IGEgc3BhY2UuXG5cCitlbmQ6ICAgc3RyaW5nIGFwcGVuZGVkIGFmdGVyIHRoZSBsYXN0IHZhbHVlLCBkZWZhdWx0IGEgbmV3bGluZS5cblwKK2ZsdXNoOiB3aGV0aGVyIHRvIGZvcmNpYmx5IGZsdXNoIHRoZSBzdHJlYW0uIik7CiAKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE2MDQsNyArMTYzOSw3IEBACiAgICAgfQogCiAgICAgLyogRmlyc3Qgb2YgYWxsLCBmbHVzaCBzdGRlcnIgKi8KLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGZlcnIsICJmbHVzaCIsICIiKTsKKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCAiIik7CiAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGVsc2UKQEAgLTE2MTMsNyArMTY0OCw3IEBACiAgICAgLyogV2Ugc2hvdWxkIG9ubHkgdXNlIChHTlUpIHJlYWRsaW5lIGlmIFB5dGhvbidzIHN5cy5zdGRpbiBhbmQKICAgICAgICBzeXMuc3Rkb3V0IGFyZSB0aGUgc2FtZSBhcyBDJ3Mgc3RkaW4gYW5kIHN0ZG91dCwgYmVjYXVzZSB3ZQogICAgICAgIG5lZWQgdG8gcGFzcyBpdCB0aG9zZS4gKi8KLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGZpbiwgImZpbGVubyIsICIiKTsKKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbiwgJlB5SWRfZmlsZW5vLCAiIik7CiAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIHR0eSA9IDA7CkBAIC0xNjI2LDcgKzE2NjEsNyBAQAogICAgICAgICB0dHkgPSBmZCA9PSBmaWxlbm8oc3RkaW4pICYmIGlzYXR0eShmZCk7CiAgICAgfQogICAgIGlmICh0dHkpIHsKLSAgICAgICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmb3V0LCAiZmlsZW5vIiwgIiIpOworICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZpbGVubywgIiIpOwogICAgICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlIHsKQEAgLTE2NDgsOSArMTY4MywxMSBAQAogICAgICAgICBjaGFyICpzdGRpbl9lbmNvZGluZ19zdHIsICpzdGRpbl9lcnJvcnNfc3RyOwogICAgICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgICAgICBzaXplX3QgbGVuOworICAgICAgICBfUHlfSURFTlRJRklFUihlbmNvZGluZyk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGVycm9ycyk7CiAKLSAgICAgICAgc3RkaW5fZW5jb2RpbmcgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZpbiwgImVuY29kaW5nIik7Ci0gICAgICAgIHN0ZGluX2Vycm9ycyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZmluLCAiZXJyb3JzIik7CisgICAgICAgIHN0ZGluX2VuY29kaW5nID0gX1B5T2JqZWN0X0dldEF0dHJJZChmaW4sICZQeUlkX2VuY29kaW5nKTsKKyAgICAgICAgc3RkaW5fZXJyb3JzID0gX1B5T2JqZWN0X0dldEF0dHJJZChmaW4sICZQeUlkX2Vycm9ycyk7CiAgICAgICAgIGlmICghc3RkaW5fZW5jb2RpbmcgfHwgIXN0ZGluX2Vycm9ycykKICAgICAgICAgICAgIC8qIHN0ZGluIGlzIGEgdGV4dCBzdHJlYW0sIHNvIGl0IG11c3QgaGF2ZSBhbgogICAgICAgICAgICAgICAgZW5jb2RpbmcuICovCkBAIC0xNjU5LDcgKzE2OTYsNyBAQAogICAgICAgICBzdGRpbl9lcnJvcnNfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZyhzdGRpbl9lcnJvcnMpOwogICAgICAgICBpZiAoIXN0ZGluX2VuY29kaW5nX3N0ciB8fCAhc3RkaW5fZXJyb3JzX3N0cikKICAgICAgICAgICAgIGdvdG8gX3JlYWRsaW5lX2Vycm9yczsKLSAgICAgICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmb3V0LCAiZmx1c2giLCAiIik7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsICIiKTsKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZQpAQCAtMTY2OCw4ICsxNzA1LDggQEAKICAgICAgICAgICAgIC8qIFdlIGhhdmUgYSBwcm9tcHQsIGVuY29kZSBpdCBhcyBzdGRvdXQgd291bGQgKi8KICAgICAgICAgICAgIGNoYXIgKnN0ZG91dF9lbmNvZGluZ19zdHIsICpzdGRvdXRfZXJyb3JzX3N0cjsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJpbmdwbzsKLSAgICAgICAgICAgIHN0ZG91dF9lbmNvZGluZyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZm91dCwgImVuY29kaW5nIik7Ci0gICAgICAgICAgICBzdGRvdXRfZXJyb3JzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmb3V0LCAiZXJyb3JzIik7CisgICAgICAgICAgICBzdGRvdXRfZW5jb2RpbmcgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZvdXQsICZQeUlkX2VuY29kaW5nKTsKKyAgICAgICAgICAgIHN0ZG91dF9lcnJvcnMgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZvdXQsICZQeUlkX2Vycm9ycyk7CiAgICAgICAgICAgICBpZiAoIXN0ZG91dF9lbmNvZGluZyB8fCAhc3Rkb3V0X2Vycm9ycykKICAgICAgICAgICAgICAgICBnb3RvIF9yZWFkbGluZV9lcnJvcnM7CiAgICAgICAgICAgICBzdGRvdXRfZW5jb2Rpbmdfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZyhzdGRvdXRfZW5jb2RpbmcpOwpAQCAtMTczOSw3ICsxNzc2LDcgQEAKICAgICAgICAgaWYgKFB5RmlsZV9Xcml0ZU9iamVjdChwcm9tcHRhcmcsIGZvdXQsIFB5X1BSSU5UX1JBVykgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGZvdXQsICJmbHVzaCIsICIiKTsKKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7CiAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGVsc2UKQEAgLTE4MjEsNiArMTg1OCw3IEBACiAgICAgUHlPYmplY3QgKmNhbGxhYmxlOwogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiaXRlcmFibGUiLCAia2V5IiwgInJldmVyc2UiLCAwfTsKICAgICBpbnQgcmV2ZXJzZTsKKyAgICBfUHlfSURFTlRJRklFUihzb3J0KTsKIAogICAgIC8qIGFyZ3MgMS0zIHNob3VsZCBtYXRjaCBsaXN0c29ydCBpbiBPYmplY3RzL2xpc3RvYmplY3QuYyAqLwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9pOnNvcnRlZCIsCkBAIC0xODMxLDcgKzE4NjksNyBAQAogICAgIGlmIChuZXdsaXN0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgY2FsbGFibGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG5ld2xpc3QsICJzb3J0Iik7CisgICAgY2FsbGFibGUgPSBfUHlPYmplY3RfR2V0QXR0cklkKG5ld2xpc3QsICZQeUlkX3NvcnQpOwogICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXdsaXN0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xODc3LDcgKzE5MTUsOCBAQAogICAgICAgICAgICAgUHlfSU5DUkVGKGQpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgZCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodiwgIl9fZGljdF9fIik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKKyAgICAgICAgZCA9IF9QeU9iamVjdF9HZXRBdHRySWQodiwgJlB5SWRfX19kaWN0X18pOwogICAgICAgICBpZiAoZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICJ2YXJzKCkgYXJndW1lbnQgbXVzdCBoYXZlIF9fZGljdF9fIGF0dHJpYnV0ZSIpOwpAQCAtMTkyMSwxMiArMTk2MCwxOCBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKHJlc3VsdCkpIHsKKyAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVzdWx0KSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAic3VtKCkgY2FuJ3Qgc3VtIGJ5dGVzIFt1c2UgYicnLmpvaW4oc2VxKSBpbnN0ZWFkXSIpOwogICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKHJlc3VsdCkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgInN1bSgpIGNhbid0IHN1bSBieXRlYXJyYXkgW3VzZSBiJycuam9pbihzZXEpIGluc3RlYWRdIik7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogCiAgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOwogICAgIH0KQEAgLTIyMjksNiArMjI3NCwxOCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCit6aXBfcmVkdWNlKHppcG9iamVjdCAqbHopCit7CisgICAgLyogSnVzdCByZWNyZWF0ZSB0aGUgemlwIHdpdGggdGhlIGludGVybmFsIGl0ZXJhdG9yIHR1cGxlICovCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk9PIiwgUHlfVFlQRShseiksIGx6LT5pdHR1cGxlKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIHppcF9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAoUHlDRnVuY3Rpb24pemlwX3JlZHVjZSwgICBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUih6aXBfZG9jLAogInppcChpdGVyMSBbLGl0ZXIyIFsuLi5dXSkgLS0+IHppcCBvYmplY3RcblwKIFxuXApAQCAtMjI2Nyw3ICsyMzI0LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKXppcF9uZXh0LCAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgemlwX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCmRpZmYgLS1naXQgYS9QeXRob24vY2V2YWwuYyBiL1B5dGhvbi9jZXZhbC5jCmluZGV4IGYwZWE3YzkuLjgyYmZjYzYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jZXZhbC5jCisrKyBiL1B5dGhvbi9jZXZhbC5jCkBAIC0xMzgsNyArMTM4LDcgQEAKIHN0YXRpYyB2b2lkIGZvcm1hdF9leGNfdW5ib3VuZChQeUNvZGVPYmplY3QgKmNvLCBpbnQgb3BhcmcpOwogc3RhdGljIFB5T2JqZWN0ICogdW5pY29kZV9jb25jYXRlbmF0ZShQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICosIHVuc2lnbmVkIGNoYXIgKik7Ci1zdGF0aWMgUHlPYmplY3QgKiBzcGVjaWFsX2xvb2t1cChQeU9iamVjdCAqLCBjaGFyICosIFB5T2JqZWN0ICoqKTsKK3N0YXRpYyBQeU9iamVjdCAqIHNwZWNpYWxfbG9va3VwKFB5T2JqZWN0ICosIF9QeV9JZGVudGlmaWVyICopOwogCiAjZGVmaW5lIE5BTUVfRVJST1JfTVNHIFwKICAgICAibmFtZSAnJS4yMDBzJyBpcyBub3QgZGVmaW5lZCIKQEAgLTM3Miw2ICszNzIsNyBAQAogdm9pZAogUHlFdmFsX1JlSW5pdFRocmVhZHModm9pZCkKIHsKKyAgICBfUHlfSURFTlRJRklFUihfYWZ0ZXJfZm9yayk7CiAgICAgUHlPYmplY3QgKnRocmVhZGluZywgKnJlc3VsdDsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwogCkBAIC0zOTIsNyArMzkzLDcgQEAKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHRocmVhZGluZywgIl9hZnRlcl9mb3JrIiwgTlVMTCk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aHJlYWRpbmcsICZQeUlkX19hZnRlcl9mb3JrLCBOVUxMKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSh0aHJlYWRpbmcpOwogICAgIGVsc2UKQEAgLTQ5MSw3ICs0OTIsNiBAQAogfSBwZW5kaW5nY2FsbHNbTlBFTkRJTkdDQUxMU107CiBzdGF0aWMgaW50IHBlbmRpbmdmaXJzdCA9IDA7CiBzdGF0aWMgaW50IHBlbmRpbmdsYXN0ID0gMDsKLXN0YXRpYyBjaGFyIHBlbmRpbmdidXN5ID0gMDsKIAogaW50CiBQeV9BZGRQZW5kaW5nQ2FsbChpbnQgKCpmdW5jKSh2b2lkICopLCB2b2lkICphcmcpCkBAIC01MzgsNiArNTM4LDcgQEAKIGludAogUHlfTWFrZVBlbmRpbmdDYWxscyh2b2lkKQogeworICAgIHN0YXRpYyBpbnQgYnVzeSA9IDA7CiAgICAgaW50IGk7CiAgICAgaW50IHIgPSAwOwogCkBAIC01NTIsOSArNTUzLDkgQEAKICAgICBpZiAobWFpbl90aHJlYWQgJiYgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpICE9IG1haW5fdGhyZWFkKQogICAgICAgICByZXR1cm4gMDsKICAgICAvKiBkb24ndCBwZXJmb3JtIHJlY3Vyc2l2ZSBwZW5kaW5nIGNhbGxzICovCi0gICAgaWYgKHBlbmRpbmdidXN5KQorICAgIGlmIChidXN5KQogICAgICAgICByZXR1cm4gMDsKLSAgICBwZW5kaW5nYnVzeSA9IDE7CisgICAgYnVzeSA9IDE7CiAgICAgLyogcGVyZm9ybSBhIGJvdW5kZWQgbnVtYmVyIG9mIGNhbGxzLCBpbiBjYXNlIG9mIHJlY3Vyc2lvbiAqLwogICAgIGZvciAoaT0wOyBpPE5QRU5ESU5HQ0FMTFM7IGkrKykgewogICAgICAgICBpbnQgajsKQEAgLTU4Myw3ICs1ODQsNyBAQAogICAgICAgICBpZiAocikKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBwZW5kaW5nYnVzeSA9IDA7CisgICAgYnVzeSA9IDA7CiAgICAgcmV0dXJuIHI7CiB9CiAKQEAgLTc0OSw2ICs3NTAsOSBAQAogICAgICAgICBXSFlfU0lMRU5DRUQgPSAgMHgwMDgwICAvKiBFeGNlcHRpb24gc2lsZW5jZWQgYnkgJ3dpdGgnICovCiB9OwogCitzdGF0aWMgdm9pZCBzYXZlX2V4Y19zdGF0ZShQeVRocmVhZFN0YXRlICosIFB5RnJhbWVPYmplY3QgKik7CitzdGF0aWMgdm9pZCBzd2FwX2V4Y19zdGF0ZShQeVRocmVhZFN0YXRlICosIFB5RnJhbWVPYmplY3QgKik7CitzdGF0aWMgdm9pZCByZXN0b3JlX2FuZF9jbGVhcl9leGNfc3RhdGUoUHlUaHJlYWRTdGF0ZSAqLCBQeUZyYW1lT2JqZWN0ICopOwogc3RhdGljIGVudW0gd2h5X2NvZGUgZG9fcmFpc2UoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBzdGF0aWMgaW50IHVucGFja19pdGVyYWJsZShQeU9iamVjdCAqLCBpbnQsIGludCwgUHlPYmplY3QgKiopOwogCkBAIC04MTcsOSArODIxLDkgQEAKICAgICB1bnNpZ25lZCBjaGFyICpmaXJzdF9pbnN0cjsKICAgICBQeU9iamVjdCAqbmFtZXM7CiAgICAgUHlPYmplY3QgKmNvbnN0czsKLSNpZiBkZWZpbmVkKFB5X0RFQlVHKSB8fCBkZWZpbmVkKExMVFJBQ0UpCi0gICAgLyogTWFrZSBpdCBlYXNpZXIgdG8gZmluZCBvdXQgd2hlcmUgd2UgYXJlIHdpdGggYSBkZWJ1Z2dlciAqLwotICAgIGNoYXIgKmZpbGVuYW1lOworCisjaWZkZWYgTExUUkFDRQorICAgIF9QeV9JREVOVElGSUVSKF9fbHRyYWNlX18pOwogI2VuZGlmCiAKIC8qIENvbXB1dGVkIEdPVE9zLCBvcgpAQCAtMTExNCw1OSArMTExOCw4IEBACiAgICAgICAgIFB5X1hERUNSRUYodHJhY2ViYWNrKTsgXAogICAgIH0KIAotI2RlZmluZSBTQVZFX0VYQ19TVEFURSgpIFwKLSAgICB7IFwKLSAgICAgICAgUHlPYmplY3QgKnR5cGUsICp2YWx1ZSwgKnRyYWNlYmFjazsgXAotICAgICAgICBQeV9YSU5DUkVGKHRzdGF0ZS0+ZXhjX3R5cGUpOyBcCi0gICAgICAgIFB5X1hJTkNSRUYodHN0YXRlLT5leGNfdmFsdWUpOyBcCi0gICAgICAgIFB5X1hJTkNSRUYodHN0YXRlLT5leGNfdHJhY2ViYWNrKTsgXAotICAgICAgICB0eXBlID0gZi0+Zl9leGNfdHlwZTsgXAotICAgICAgICB2YWx1ZSA9IGYtPmZfZXhjX3ZhbHVlOyBcCi0gICAgICAgIHRyYWNlYmFjayA9IGYtPmZfZXhjX3RyYWNlYmFjazsgXAotICAgICAgICBmLT5mX2V4Y190eXBlID0gdHN0YXRlLT5leGNfdHlwZTsgXAotICAgICAgICBmLT5mX2V4Y192YWx1ZSA9IHRzdGF0ZS0+ZXhjX3ZhbHVlOyBcCi0gICAgICAgIGYtPmZfZXhjX3RyYWNlYmFjayA9IHRzdGF0ZS0+ZXhjX3RyYWNlYmFjazsgXAotICAgICAgICBQeV9YREVDUkVGKHR5cGUpOyBcCi0gICAgICAgIFB5X1hERUNSRUYodmFsdWUpOyBcCi0gICAgICAgIFB5X1hERUNSRUYodHJhY2ViYWNrKTsgXAotICAgIH0KLQotI2RlZmluZSBTV0FQX0VYQ19TVEFURSgpIFwKLSAgICB7IFwKLSAgICAgICAgUHlPYmplY3QgKnRtcDsgXAotICAgICAgICB0bXAgPSB0c3RhdGUtPmV4Y190eXBlOyBcCi0gICAgICAgIHRzdGF0ZS0+ZXhjX3R5cGUgPSBmLT5mX2V4Y190eXBlOyBcCi0gICAgICAgIGYtPmZfZXhjX3R5cGUgPSB0bXA7IFwKLSAgICAgICAgdG1wID0gdHN0YXRlLT5leGNfdmFsdWU7IFwKLSAgICAgICAgdHN0YXRlLT5leGNfdmFsdWUgPSBmLT5mX2V4Y192YWx1ZTsgXAotICAgICAgICBmLT5mX2V4Y192YWx1ZSA9IHRtcDsgXAotICAgICAgICB0bXAgPSB0c3RhdGUtPmV4Y190cmFjZWJhY2s7IFwKLSAgICAgICAgdHN0YXRlLT5leGNfdHJhY2ViYWNrID0gZi0+Zl9leGNfdHJhY2ViYWNrOyBcCi0gICAgICAgIGYtPmZfZXhjX3RyYWNlYmFjayA9IHRtcDsgXAotICAgIH0KLQotI2RlZmluZSBSRVNUT1JFX0FORF9DTEVBUl9FWENfU1RBVEUoKSBcCi0gICAgeyBcCi0gICAgICAgIFB5T2JqZWN0ICp0eXBlLCAqdmFsdWUsICp0YjsgXAotICAgICAgICB0eXBlID0gdHN0YXRlLT5leGNfdHlwZTsgXAotICAgICAgICB2YWx1ZSA9IHRzdGF0ZS0+ZXhjX3ZhbHVlOyBcCi0gICAgICAgIHRiID0gdHN0YXRlLT5leGNfdHJhY2ViYWNrOyBcCi0gICAgICAgIHRzdGF0ZS0+ZXhjX3R5cGUgPSBmLT5mX2V4Y190eXBlOyBcCi0gICAgICAgIHRzdGF0ZS0+ZXhjX3ZhbHVlID0gZi0+Zl9leGNfdmFsdWU7IFwKLSAgICAgICAgdHN0YXRlLT5leGNfdHJhY2ViYWNrID0gZi0+Zl9leGNfdHJhY2ViYWNrOyBcCi0gICAgICAgIGYtPmZfZXhjX3R5cGUgPSBOVUxMOyBcCi0gICAgICAgIGYtPmZfZXhjX3ZhbHVlID0gTlVMTDsgXAotICAgICAgICBmLT5mX2V4Y190cmFjZWJhY2sgPSBOVUxMOyBcCi0gICAgICAgIFB5X1hERUNSRUYodHlwZSk7IFwKLSAgICAgICAgUHlfWERFQ1JFRih2YWx1ZSk7IFwKLSAgICAgICAgUHlfWERFQ1JFRih0Yik7IFwKLSAgICB9Ci0KIC8qIFN0YXJ0IG9mIGNvZGUgKi8KIAotICAgIGlmIChmID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgLyogcHVzaCBmcmFtZSAqLwogICAgIGlmIChQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoIiIpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEyMjEsNiArMTE3NCw4IEBACiAgICAgICAgZi0+Zl9sYXN0aSB0byAtMSAoaS5lLiB0aGUgaW5kZXggKmJlZm9yZSogdGhlIGZpcnN0IGluc3RydWN0aW9uKQogICAgICAgIGFuZCBZSUVMRF9WQUxVRSBkb2Vzbid0IGZpZGRsZSB3aXRoIGZfbGFzdGkgYW55IG1vcmUuICBTbyB0aGlzCiAgICAgICAgZG9lcyB3b3JrLiAgUHJvbWlzZS4KKyAgICAgICBZSUVMRF9GUk9NIHNldHMgZl9sYXN0aSB0byBpdHNlbGYsIGluIG9yZGVyIHRvIHJlcGVhdGVkIHlpZWxkCisgICAgICAgbXVsdGlwbGUgdmFsdWVzLgogCiAgICAgICAgV2hlbiB0aGUgUFJFRElDVCgpIG1hY3JvcyBhcmUgZW5hYmxlZCwgc29tZSBvcGNvZGUgcGFpcnMgZm9sbG93IGluCiAgICAgICAgZGlyZWN0IHN1Y2Nlc3Npb24gd2l0aG91dCB1cGRhdGluZyBmLT5mX2xhc3RpLiAgQSBzdWNjZXNzZnVsCkBAIC0xMjQwLDI3ICsxMTk1LDE0IEBACiAgICAgICAgICAgICAvKiBXZSB3ZXJlIGluIGFuIGV4Y2VwdCBoYW5kbGVyIHdoZW4gd2UgbGVmdCwKICAgICAgICAgICAgICAgIHJlc3RvcmUgdGhlIGV4Y2VwdGlvbiBzdGF0ZSB3aGljaCB3YXMgcHV0IGFzaWRlCiAgICAgICAgICAgICAgICAoc2VlIFlJRUxEX1ZBTFVFKS4gKi8KLSAgICAgICAgICAgIFNXQVBfRVhDX1NUQVRFKCk7CisgICAgICAgICAgICBzd2FwX2V4Y19zdGF0ZSh0c3RhdGUsIGYpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgU0FWRV9FWENfU1RBVEUoKTsKLSAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzYXZlX2V4Y19zdGF0ZSh0c3RhdGUsIGYpOwogICAgIH0KIAogI2lmZGVmIExMVFJBQ0UKLSAgICBsbHRyYWNlID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZi0+Zl9nbG9iYWxzLCAiX19sbHRyYWNlX18iKSAhPSBOVUxMOwotI2VuZGlmCi0jaWYgZGVmaW5lZChQeV9ERUJVRykgfHwgZGVmaW5lZChMTFRSQUNFKQotICAgIHsKLSAgICAgICAgUHlPYmplY3QgKmVycm9yX3R5cGUsICplcnJvcl92YWx1ZSwgKmVycm9yX3RyYWNlYmFjazsKLSAgICAgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7Ci0gICAgICAgIGZpbGVuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhjby0+Y29fZmlsZW5hbWUpOwotICAgICAgICBpZiAoZmlsZW5hbWUgPT0gTlVMTCAmJiB0c3RhdGUtPm92ZXJmbG93ZWQpIHsKLSAgICAgICAgICAgIC8qIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGV4Y2VlZGVkICovCi0gICAgICAgICAgICBnb3RvIGV4aXRfZXZhbF9mcmFtZTsKLSAgICAgICAgfQotICAgICAgICBQeUVycl9SZXN0b3JlKGVycm9yX3R5cGUsIGVycm9yX3ZhbHVlLCBlcnJvcl90cmFjZWJhY2spOwotICAgIH0KKyAgICBsbHRyYWNlID0gX1B5RGljdF9HZXRJdGVtSWQoZi0+Zl9nbG9iYWxzLCAmUHlJZF9fX2x0cmFjZV9fKSAhPSBOVUxMOwogI2VuZGlmCiAKICAgICB3aHkgPSBXSFlfTk9UOwpAQCAtMTQxMiw4ICsxMzU0LDYgQEAKICAgICAgICAgICAgeCB0byBOVUxMLCBlcnIgdG8gbm9uemVybywgb3Igd2h5IHRvIGFueXRoaW5nIGJ1dCBXSFlfTk9ULAogICAgICAgICAgICBhbmQgdGhhdCBubyBvcGVyYXRpb24gdGhhdCBzdWNjZWVkcyBkb2VzIHRoaXMhICovCiAKLSAgICAgICAgLyogY2FzZSBTVE9QX0NPREU6IHRoaXMgaXMgYW4gZXJyb3IhICovCi0KICAgICAgICAgVEFSR0VUKE5PUCkKICAgICAgICAgICAgIEZBU1RfRElTUEFUQ0goKTsKIApAQCAtMTg5NCw2ICsxODM0LDQwIEBACiAgICAgICAgICAgICB3aHkgPSBXSFlfUkVUVVJOOwogICAgICAgICAgICAgZ290byBmYXN0X2Jsb2NrX2VuZDsKIAorICAgICAgICBUQVJHRVQoWUlFTERfRlJPTSkKKyAgICAgICAgICAgIHUgPSBQT1AoKTsKKyAgICAgICAgICAgIHggPSBUT1AoKTsKKyAgICAgICAgICAgIC8qIHNlbmQgdSB0byB4ICovCisgICAgICAgICAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdCh4KSkgeworICAgICAgICAgICAgICAgIHJldHZhbCA9IF9QeUdlbl9TZW5kKChQeUdlbk9iamVjdCAqKXgsIHUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihzZW5kKTsKKyAgICAgICAgICAgICAgICBpZiAodSA9PSBQeV9Ob25lKQorICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBQeV9UWVBFKHgpLT50cF9pdGVybmV4dCh4KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoeCwgJlB5SWRfc2VuZCwgIk8iLCB1KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRih1KTsKKyAgICAgICAgICAgIGlmICghcmV0dmFsKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbDsKKyAgICAgICAgICAgICAgICB4ID0gUE9QKCk7IC8qIFJlbW92ZSBpdGVyIGZyb20gc3RhY2sgKi8KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoeCk7CisgICAgICAgICAgICAgICAgZXJyID0gX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKCZ2YWwpOworICAgICAgICAgICAgICAgIGlmIChlcnIgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIHggPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgeCA9IHZhbDsKKyAgICAgICAgICAgICAgICBQVVNIKHgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogeCByZW1haW5zIG9uIHN0YWNrLCByZXR2YWwgaXMgdmFsdWUgdG8gYmUgeWllbGRlZCAqLworICAgICAgICAgICAgZi0+Zl9zdGFja3RvcCA9IHN0YWNrX3BvaW50ZXI7CisgICAgICAgICAgICB3aHkgPSBXSFlfWUlFTEQ7CisgICAgICAgICAgICAvKiBhbmQgcmVwZWF0Li4uICovCisgICAgICAgICAgICBmLT5mX2xhc3RpLS07CisgICAgICAgICAgICBnb3RvIGZhc3RfeWllbGQ7CisKICAgICAgICAgVEFSR0VUKFlJRUxEX1ZBTFVFKQogICAgICAgICAgICAgcmV0dmFsID0gUE9QKCk7CiAgICAgICAgICAgICBmLT5mX3N0YWNrdG9wID0gc3RhY2tfcG9pbnRlcjsKQEAgLTE5NTYsMTYgKzE5MzAsMzMgQEAKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIFRBUkdFVChMT0FEX0JVSUxEX0NMQVNTKQotICAgICAgICAgICAgeCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGYtPmZfYnVpbHRpbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fYnVpbGRfY2xhc3NfXyIpOwotICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fYnVpbGRfY2xhc3NfXyBub3QgZm91bmQiKTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgeworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19idWlsZF9jbGFzc19fKTsKKworICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGYtPmZfYnVpbHRpbnMpKSB7CisgICAgICAgICAgICAgICAgeCA9IF9QeURpY3RfR2V0SXRlbUlkKGYtPmZfYnVpbHRpbnMsICZQeUlkX19fYnVpbGRfY2xhc3NfXyk7CisgICAgICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTmFtZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fYnVpbGRfY2xhc3NfXyBub3QgZm91bmQiKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpidWlsZF9jbGFzc19zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX2J1aWxkX2NsYXNzX18pOworICAgICAgICAgICAgICAgIGlmIChidWlsZF9jbGFzc19zdHIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgeCA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9idWlsdGlucywgYnVpbGRfY2xhc3Nfc3RyKTsKKyAgICAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19OYW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fYnVpbGRfY2xhc3NfXyBub3QgZm91bmQiKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgUFVTSCh4KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKICAgICAgICAgVEFSR0VUKFNUT1JFX05BTUUpCiAgICAgICAgICAgICB3ID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOwpAQCAtMjEwMSw3MCArMjA5Miw2MiBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHggPSBQeURpY3RfR2V0SXRlbShmLT5mX2dsb2JhbHMsIHcpOworICAgICAgICAgICAgICAgIFB5X1hJTkNSRUYoeCk7CiAgICAgICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICB4ID0gUHlEaWN0X0dldEl0ZW0oZi0+Zl9idWlsdGlucywgdyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9leGNfY2hlY2tfYXJnKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfTmFtZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFNRV9FUlJPUl9NU0csIHcpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChmLT5mX2J1aWx0aW5zKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgeCA9IFB5RGljdF9HZXRJdGVtKGYtPmZfYnVpbHRpbnMsIHcpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9leGNfY2hlY2tfYXJnKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX05hbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FX0VSUk9SX01TRywgdyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoeCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gUHlPYmplY3RfR2V0SXRlbShmLT5mX2J1aWx0aW5zLCB3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9leGNfY2hlY2tfYXJnKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19OYW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTUVfRVJST1JfTVNHLCB3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoeCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQVVNIKHgpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKIAogICAgICAgICBUQVJHRVQoTE9BRF9HTE9CQUwpCiAgICAgICAgICAgICB3ID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOwotICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHcpKSB7Ci0gICAgICAgICAgICAgICAgLyogSW5saW5lIHRoZSBQeURpY3RfR2V0SXRlbSgpIGNhbGxzLgotICAgICAgICAgICAgICAgICAgIFdBUk5JTkc6IHRoaXMgaXMgYW4gZXh0cmVtZSBzcGVlZCBoYWNrLgotICAgICAgICAgICAgICAgICAgIERvIG5vdCB0cnkgdGhpcyBhdCBob21lLiAqLwotICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKil3KS0+aGFzaDsKLSAgICAgICAgICAgICAgICBpZiAoaGFzaCAhPSAtMSkgewotICAgICAgICAgICAgICAgICAgICBQeURpY3RPYmplY3QgKmQ7Ci0gICAgICAgICAgICAgICAgICAgIFB5RGljdEVudHJ5ICplOwotICAgICAgICAgICAgICAgICAgICBkID0gKFB5RGljdE9iamVjdCAqKShmLT5mX2dsb2JhbHMpOwotICAgICAgICAgICAgICAgICAgICBlID0gZC0+bWFfbG9va3VwKGQsIHcsIGhhc2gpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB4ID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHggPSBlLT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHggIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHgpOwotICAgICAgICAgICAgICAgICAgICAgICAgUFVTSCh4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIERJU1BBVENIKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZCA9IChQeURpY3RPYmplY3QgKikoZi0+Zl9idWlsdGlucyk7Ci0gICAgICAgICAgICAgICAgICAgIGUgPSBkLT5tYV9sb29rdXAoZCwgdywgaGFzaCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHggPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgeCA9IGUtPm1lX3ZhbHVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoeCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoeCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQVVNIKHgpOwotICAgICAgICAgICAgICAgICAgICAgICAgRElTUEFUQ0goKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBnb3RvIGxvYWRfZ2xvYmFsX2Vycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIFRoaXMgaXMgdGhlIHVuLWlubGluZWQgdmVyc2lvbiBvZiB0aGUgY29kZSBhYm92ZSAqLwotICAgICAgICAgICAgeCA9IFB5RGljdF9HZXRJdGVtKGYtPmZfZ2xvYmFscywgdyk7Ci0gICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgeCA9IFB5RGljdF9HZXRJdGVtKGYtPmZfYnVpbHRpbnMsIHcpOworICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGYtPmZfZ2xvYmFscykKKyAgICAgICAgICAgICAgICAmJiBQeURpY3RfQ2hlY2tFeGFjdChmLT5mX2J1aWx0aW5zKSkgeworICAgICAgICAgICAgICAgIHggPSBfUHlEaWN0X0xvYWRHbG9iYWwoKFB5RGljdE9iamVjdCAqKWYtPmZfZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURpY3RPYmplY3QgKilmLT5mX2J1aWx0aW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyk7CiAgICAgICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgbG9hZF9nbG9iYWxfZXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIGZvcm1hdF9leGNfY2hlY2tfYXJnKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19OYW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JBTF9OQU1FX0VSUk9SX01TRywgdyk7CisgICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9leGNfY2hlY2tfYXJnKFB5RXhjX05hbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JBTF9OQU1FX0VSUk9SX01TRywgdyk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoeCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9JTkNSRUYoeCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBTbG93LXBhdGggaWYgZ2xvYmFscyBvciBidWlsdGlucyBpcyBub3QgYSBkaWN0ICovCisgICAgICAgICAgICAgICAgeCA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9nbG9iYWxzLCB3KTsKKyAgICAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHggPSBQeU9iamVjdF9HZXRJdGVtKGYtPmZfYnVpbHRpbnMsIHcpOworICAgICAgICAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2V4Y19jaGVja19hcmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfTmFtZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JBTF9OQU1FX0VSUk9SX01TRywgdyk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIFBVU0goeCk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogCkBAIC0yMzEzLDggKzIyOTYsMTAgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAKICAgICAgICAgVEFSR0VUKElNUE9SVF9OQU1FKQorICAgICAgICB7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2ltcG9ydF9fKTsKICAgICAgICAgICAgIHcgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7Ci0gICAgICAgICAgICB4ID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZi0+Zl9idWlsdGlucywgIl9faW1wb3J0X18iKTsKKyAgICAgICAgICAgIHggPSBfUHlEaWN0X0dldEl0ZW1JZChmLT5mX2J1aWx0aW5zLCAmUHlJZF9fX2ltcG9ydF9fKTsKICAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2ltcG9ydF9fIG5vdCBmb3VuZCIpOwpAQCAtMjM1NSw2ICsyMzQwLDcgQEAKICAgICAgICAgICAgIFNFVF9UT1AoeCk7CiAgICAgICAgICAgICBpZiAoeCAhPSBOVUxMKSBESVNQQVRDSCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAogICAgICAgICBUQVJHRVQoSU1QT1JUX1NUQVIpCiAgICAgICAgICAgICB2ID0gUE9QKCk7CkBAIC0yNTU5LDEzICsyNTQ1LDE0IEBACiAKICAgICAgICAgVEFSR0VUKFNFVFVQX1dJVEgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBQeU9iamVjdCAqZXhpdCwgKmVudGVyOworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19leGl0X18pOworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19lbnRlcl9fKTsKICAgICAgICAgICAgIHcgPSBUT1AoKTsKLSAgICAgICAgICAgIHggPSBzcGVjaWFsX2xvb2t1cCh3LCAiX19leGl0X18iLCAmZXhpdCk7CisgICAgICAgICAgICB4ID0gc3BlY2lhbF9sb29rdXAodywgJlB5SWRfX19leGl0X18pOwogICAgICAgICAgICAgaWYgKCF4KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgU0VUX1RPUCh4KTsKLSAgICAgICAgICAgIHUgPSBzcGVjaWFsX2xvb2t1cCh3LCAiX19lbnRlcl9fIiwgJmVudGVyKTsKKyAgICAgICAgICAgIHUgPSBzcGVjaWFsX2xvb2t1cCh3LCAmUHlJZF9fX2VudGVyX18pOwogICAgICAgICAgICAgUHlfREVDUkVGKHcpOwogICAgICAgICAgICAgaWYgKCF1KSB7CiAgICAgICAgICAgICAgICAgeCA9IE5VTEw7CkBAIC0yNzI1LDcgKzI3MTIsNyBAQAogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRigqcGZ1bmMpOwogICAgICAgICAgICAgICAgICpwZnVuYyA9IHNlbGY7CiAgICAgICAgICAgICAgICAgbmErKzsKLSAgICAgICAgICAgICAgICBuKys7CisgICAgICAgICAgICAgICAgLyogbisrOyAqLwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwogICAgICAgICAgICAgc3AgPSBzdGFja19wb2ludGVyOwpAQCAtMjc1Myw5ICsyNzQwLDExIEBACiAgICAgICAgICAgICBpbnQga3dkZWZhdWx0cyA9IChvcGFyZz4+OCkgJiAweGZmOwogICAgICAgICAgICAgaW50IG51bV9hbm5vdGF0aW9ucyA9IChvcGFyZyA+PiAxNikgJiAweDdmZmY7CiAKKyAgICAgICAgICAgIHcgPSBQT1AoKTsgLyogcXVhbG5hbWUgKi8KICAgICAgICAgICAgIHYgPSBQT1AoKTsgLyogY29kZSBvYmplY3QgKi8KLSAgICAgICAgICAgIHggPSBQeUZ1bmN0aW9uX05ldyh2LCBmLT5mX2dsb2JhbHMpOworICAgICAgICAgICAgeCA9IFB5RnVuY3Rpb25fTmV3V2l0aFF1YWxOYW1lKHYsIGYtPmZfZ2xvYmFscywgdyk7CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgICAgICBQeV9ERUNSRUYodyk7CiAKICAgICAgICAgICAgIGlmICh4ICE9IE5VTEwgJiYgb3Bjb2RlID09IE1BS0VfQ0xPU1VSRSkgewogICAgICAgICAgICAgICAgIHYgPSBQT1AoKTsKQEAgLTMwNDksOSArMzAzOCw5IEBACiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChpID09IGYtPmZfaWJsb2NrKQogICAgICAgICAgICAgLyogV2UgZGlkIG5vdCBjcmVhdGUgdGhpcyBleGNlcHRpb24uICovCi0gICAgICAgICAgICBSRVNUT1JFX0FORF9DTEVBUl9FWENfU1RBVEUoKQorICAgICAgICAgICAgcmVzdG9yZV9hbmRfY2xlYXJfZXhjX3N0YXRlKHRzdGF0ZSwgZik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFNXQVBfRVhDX1NUQVRFKCkKKyAgICAgICAgICAgIHN3YXBfZXhjX3N0YXRlKHRzdGF0ZSwgZik7CiAgICAgfQogCiAgICAgaWYgKHRzdGF0ZS0+dXNlX3RyYWNpbmcpIHsKQEAgLTMwODEsNyArMzA3MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHJhY2VfUkVUVVJOLCByZXR2YWwpKSB7CiAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihyZXR2YWwpOwogICAgICAgICAgICAgICAgIHJldHZhbCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgd2h5ID0gV0hZX0VYQ0VQVElPTjsKKyAgICAgICAgICAgICAgICAvKiB3aHkgPSBXSFlfRVhDRVBUSU9OOyAqLwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMzA5NCw2ICszMDgzLDE1NiBAQAogICAgIHJldHVybiByZXR2YWw7CiB9CiAKK3N0YXRpYyB2b2lkCitmb3JtYXRfbWlzc2luZyhjb25zdCBjaGFyICpraW5kLCBQeUNvZGVPYmplY3QgKmNvLCBQeU9iamVjdCAqbmFtZXMpCit7CisgICAgaW50IGVycjsKKyAgICBQeV9zc2l6ZV90IGxlbiA9IFB5TGlzdF9HRVRfU0laRShuYW1lcyk7CisgICAgUHlPYmplY3QgKm5hbWVfc3RyLCAqY29tbWEsICp0YWlsLCAqdG1wOworCisgICAgYXNzZXJ0KFB5TGlzdF9DaGVja0V4YWN0KG5hbWVzKSk7CisgICAgYXNzZXJ0KGxlbiA+PSAxKTsKKyAgICAvKiBEZWFsIHdpdGggdGhlIGpveXMgb2YgbmF0dXJhbCBsYW5ndWFnZS4gKi8KKyAgICBzd2l0Y2ggKGxlbikgeworICAgIGNhc2UgMToKKyAgICAgICAgbmFtZV9zdHIgPSBQeUxpc3RfR0VUX0lURU0obmFtZXMsIDApOworICAgICAgICBQeV9JTkNSRUYobmFtZV9zdHIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIG5hbWVfc3RyID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVIGFuZCAlVSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X0dFVF9JVEVNKG5hbWVzLCBsZW4gLSAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxpc3RfR0VUX0lURU0obmFtZXMsIGxlbiAtIDEpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgdGFpbCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIsICVVLCBhbmQgJVUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X0dFVF9JVEVNKG5hbWVzLCBsZW4gLSAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TGlzdF9HRVRfSVRFTShuYW1lcywgbGVuIC0gMSkpOworICAgICAgICBpZiAodGFpbCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvKiBDaG9wIG9mZiB0aGUgbGFzdCB0d28gb2JqZWN0cyBpbiB0aGUgbGlzdC4gVGhpcyBzaG91bGRuJ3QgYWN0dWFsbHkKKyAgICAgICAgICAgZmFpbCwgYnV0IHdlIGNhbid0IGJlIHRvbyBjYXJlZnVsLiAqLworICAgICAgICBlcnIgPSBQeUxpc3RfU2V0U2xpY2UobmFtZXMsIGxlbiAtIDIsIGxlbiwgTlVMTCk7CisgICAgICAgIGlmIChlcnIgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0YWlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvKiBTdGl0Y2ggZXZlcnl0aGluZyB1cCBpbnRvIGEgbmljZSBjb21tYS1zZXBhcmF0ZWQgbGlzdC4gKi8KKyAgICAgICAgY29tbWEgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiLCAiKTsKKyAgICAgICAgaWYgKGNvbW1hID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0YWlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB0bXAgPSBQeVVuaWNvZGVfSm9pbihjb21tYSwgbmFtZXMpOworICAgICAgICBQeV9ERUNSRUYoY29tbWEpOworICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0YWlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBuYW1lX3N0ciA9IFB5VW5pY29kZV9Db25jYXQodG1wLCB0YWlsKTsKKyAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgIFB5X0RFQ1JFRih0YWlsKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChuYW1lX3N0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIiVVKCkgbWlzc2luZyAlaSByZXF1aXJlZCAlcyBhcmd1bWVudCVzOiAlVSIsCisgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAorICAgICAgICAgICAgICAgICBsZW4sCisgICAgICAgICAgICAgICAgIGtpbmQsCisgICAgICAgICAgICAgICAgIGxlbiA9PSAxID8gIiIgOiAicyIsCisgICAgICAgICAgICAgICAgIG5hbWVfc3RyKTsKKyAgICBQeV9ERUNSRUYobmFtZV9zdHIpOworfQorCitzdGF0aWMgdm9pZAorbWlzc2luZ19hcmd1bWVudHMoUHlDb2RlT2JqZWN0ICpjbywgaW50IG1pc3NpbmcsIGludCBkZWZjb3VudCwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqZmFzdGxvY2FscykKK3sKKyAgICBpbnQgaSwgaiA9IDA7CisgICAgaW50IHN0YXJ0LCBlbmQ7CisgICAgaW50IHBvc2l0aW9uYWwgPSBkZWZjb3VudCAhPSAtMTsKKyAgICBjb25zdCBjaGFyICpraW5kID0gcG9zaXRpb25hbCA/ICJwb3NpdGlvbmFsIiA6ICJrZXl3b3JkLW9ubHkiOworICAgIFB5T2JqZWN0ICptaXNzaW5nX25hbWVzOworCisgICAgLyogQ29tcHV0ZSB0aGUgbmFtZXMgb2YgdGhlIGFyZ3VtZW50cyB0aGF0IGFyZSBtaXNzaW5nLiAqLworICAgIG1pc3NpbmdfbmFtZXMgPSBQeUxpc3RfTmV3KG1pc3NpbmcpOworICAgIGlmIChtaXNzaW5nX25hbWVzID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAocG9zaXRpb25hbCkgeworICAgICAgICBzdGFydCA9IDA7CisgICAgICAgIGVuZCA9IGNvLT5jb19hcmdjb3VudCAtIGRlZmNvdW50OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RhcnQgPSBjby0+Y29fYXJnY291bnQ7CisgICAgICAgIGVuZCA9IHN0YXJ0ICsgY28tPmNvX2t3b25seWFyZ2NvdW50OworICAgIH0KKyAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgIGlmIChHRVRMT0NBTChpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcmF3ID0gUHlUdXBsZV9HRVRfSVRFTShjby0+Y29fdmFybmFtZXMsIGkpOworICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBQeU9iamVjdF9SZXByKHJhdyk7CisgICAgICAgICAgICBpZiAobmFtZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG1pc3NpbmdfbmFtZXMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5TGlzdF9TRVRfSVRFTShtaXNzaW5nX25hbWVzLCBqKyssIG5hbWUpOworICAgICAgICB9CisgICAgfQorICAgIGFzc2VydChqID09IG1pc3NpbmcpOworICAgIGZvcm1hdF9taXNzaW5nKGtpbmQsIGNvLCBtaXNzaW5nX25hbWVzKTsKKyAgICBQeV9ERUNSRUYobWlzc2luZ19uYW1lcyk7Cit9CisKK3N0YXRpYyB2b2lkCit0b29fbWFueV9wb3NpdGlvbmFsKFB5Q29kZU9iamVjdCAqY28sIGludCBnaXZlbiwgaW50IGRlZmNvdW50LCBQeU9iamVjdCAqKmZhc3Rsb2NhbHMpCit7CisgICAgaW50IHBsdXJhbDsKKyAgICBpbnQga3dvbmx5X2dpdmVuID0gMDsKKyAgICBpbnQgaTsKKyAgICBQeU9iamVjdCAqc2lnLCAqa3dvbmx5X3NpZzsKKworICAgIGFzc2VydCgoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykgPT0gMCk7CisgICAgLyogQ291bnQgbWlzc2luZyBrZXl3b3JkLW9ubHkgYXJncy4gKi8KKyAgICBmb3IgKGkgPSBjby0+Y29fYXJnY291bnQ7IGkgPCBjby0+Y29fYXJnY291bnQgKyBjby0+Y29fa3dvbmx5YXJnY291bnQ7IGkrKykKKyAgICAgICAgaWYgKEdFVExPQ0FMKGkpICE9IE5VTEwpCisgICAgICAgICAgICBrd29ubHlfZ2l2ZW4rKzsKKyAgICBpZiAoZGVmY291bnQpIHsKKyAgICAgICAgaW50IGF0bGVhc3QgPSBjby0+Y29fYXJnY291bnQgLSBkZWZjb3VudDsKKyAgICAgICAgcGx1cmFsID0gMTsKKyAgICAgICAgc2lnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImZyb20gJWQgdG8gJWQiLCBhdGxlYXN0LCBjby0+Y29fYXJnY291bnQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcGx1cmFsID0gY28tPmNvX2FyZ2NvdW50ICE9IDE7CisgICAgICAgIHNpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlZCIsIGNvLT5jb19hcmdjb3VudCk7CisgICAgfQorICAgIGlmIChzaWcgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChrd29ubHlfZ2l2ZW4pIHsKKyAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0ID0gIiBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgKGFuZCAlZCBrZXl3b3JkLW9ubHkgYXJndW1lbnQlcykiOworICAgICAgICBrd29ubHlfc2lnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoZm9ybWF0LCBnaXZlbiAhPSAxID8gInMiIDogIiIsIGt3b25seV9naXZlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd29ubHlfZ2l2ZW4gIT0gMSA/ICJzIiA6ICIiKTsKKyAgICAgICAgaWYgKGt3b25seV9zaWcgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNpZyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIFRoaXMgd2lsbCBub3QgZmFpbC4gKi8KKyAgICAgICAga3dvbmx5X3NpZyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKKyAgICAgICAgYXNzZXJ0KGt3b25seV9zaWcgIT0gTlVMTCk7CisgICAgfQorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICIlVSgpIHRha2VzICVVIHBvc2l0aW9uYWwgYXJndW1lbnQlcyBidXQgJWQlVSAlcyBnaXZlbiIsCisgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAorICAgICAgICAgICAgICAgICBzaWcsCisgICAgICAgICAgICAgICAgIHBsdXJhbCA/ICJzIiA6ICIiLAorICAgICAgICAgICAgICAgICBnaXZlbiwKKyAgICAgICAgICAgICAgICAga3dvbmx5X3NpZywKKyAgICAgICAgICAgICAgICAgZ2l2ZW4gPT0gMSAmJiAha3dvbmx5X2dpdmVuID8gIndhcyIgOiAid2VyZSIpOworICAgIFB5X0RFQ1JFRihzaWcpOworICAgIFB5X0RFQ1JFRihrd29ubHlfc2lnKTsKK30KKwogLyogVGhpcyBpcyBnb25uYSBzZWVtICpyZWFsIHdlaXJkKiwgYnV0IGlmIHlvdSBwdXQgc29tZSBvdGhlciBjb2RlIGJldHdlZW4KICAgIFB5RXZhbF9FdmFsRnJhbWUoKSBhbmQgUHlFdmFsX0V2YWxDb2RlRXgoKSB5b3Ugd2lsbCBuZWVkIHRvIGFkanVzdAogICAgdGhlIHRlc3QgaW4gdGhlIGlmIHN0YXRlbWVudHMgaW4gTWlzYy9nZGJpbml0IChweXN0YWNrIGFuZCBweXN0YWNrdikuICovCkBAIC0zMTEwLDYgKzMyNDksOSBAQAogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CiAgICAgUHlPYmplY3QgKngsICp1OwogICAgIGludCB0b3RhbF9hcmdzID0gY28tPmNvX2FyZ2NvdW50ICsgY28tPmNvX2t3b25seWFyZ2NvdW50OworICAgIGludCBpOworICAgIGludCBuID0gYXJnY291bnQ7CisgICAgUHlPYmplY3QgKmt3ZGljdCA9IE5VTEw7CiAKICAgICBpZiAoZ2xvYmFscyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKQEAgLTMxMjYsMjEyICszMjY4LDE1MyBAQAogICAgIGZhc3Rsb2NhbHMgPSBmLT5mX2xvY2Fsc3BsdXM7CiAgICAgZnJlZXZhcnMgPSBmLT5mX2xvY2Fsc3BsdXMgKyBjby0+Y29fbmxvY2FsczsKIAotICAgIGlmICh0b3RhbF9hcmdzIHx8IGNvLT5jb19mbGFncyAmIChDT19WQVJBUkdTIHwgQ09fVkFSS0VZV09SRFMpKSB7Ci0gICAgICAgIGludCBpOwotICAgICAgICBpbnQgbiA9IGFyZ2NvdW50OwotICAgICAgICBQeU9iamVjdCAqa3dkaWN0ID0gTlVMTDsKLSAgICAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUktFWVdPUkRTKSB7Ci0gICAgICAgICAgICBrd2RpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgaSA9IHRvdGFsX2FyZ3M7Ci0gICAgICAgICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykKLSAgICAgICAgICAgICAgICBpKys7Ci0gICAgICAgICAgICBTRVRMT0NBTChpLCBrd2RpY3QpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChhcmdjb3VudCA+IGNvLT5jb19hcmdjb3VudCkgewotICAgICAgICAgICAgaWYgKCEoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAiJVUoKSB0YWtlcyAlcyAlZCAiCi0gICAgICAgICAgICAgICAgICAgICJwb3NpdGlvbmFsIGFyZ3VtZW50JXMgKCVkIGdpdmVuKSIsCi0gICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAotICAgICAgICAgICAgICAgICAgICBkZWZjb3VudCA/ICJhdCBtb3N0IiA6ICJleGFjdGx5IiwKLSAgICAgICAgICAgICAgICAgICAgY28tPmNvX2FyZ2NvdW50LAotICAgICAgICAgICAgICAgICAgICBjby0+Y29fYXJnY291bnQgPT0gMSA/ICIiIDogInMiLAotICAgICAgICAgICAgICAgICAgICBhcmdjb3VudCArIGt3Y291bnQpOwotICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG4gPSBjby0+Y29fYXJnY291bnQ7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgIC8qIFBhcnNlIGFyZ3VtZW50cy4gKi8KKyAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSS0VZV09SRFMpIHsKKyAgICAgICAga3dkaWN0ID0gUHlEaWN0X05ldygpOworICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIGkgPSB0b3RhbF9hcmdzOworICAgICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgU0VUTE9DQUwoaSwga3dkaWN0KTsKKyAgICB9CisgICAgaWYgKGFyZ2NvdW50ID4gY28tPmNvX2FyZ2NvdW50KQorICAgICAgICBuID0gY28tPmNvX2FyZ2NvdW50OworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgeCA9IGFyZ3NbaV07CisgICAgICAgIFB5X0lOQ1JFRih4KTsKKyAgICAgICAgU0VUTE9DQUwoaSwgeCk7CisgICAgfQorICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKSB7CisgICAgICAgIHUgPSBQeVR1cGxlX05ldyhhcmdjb3VudCAtIG4pOworICAgICAgICBpZiAodSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBTRVRMT0NBTCh0b3RhbF9hcmdzLCB1KTsKKyAgICAgICAgZm9yIChpID0gbjsgaSA8IGFyZ2NvdW50OyBpKyspIHsKICAgICAgICAgICAgIHggPSBhcmdzW2ldOwogICAgICAgICAgICAgUHlfSU5DUkVGKHgpOwotICAgICAgICAgICAgU0VUTE9DQUwoaSwgeCk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHUsIGktbiwgeCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpIHsKLSAgICAgICAgICAgIHUgPSBQeVR1cGxlX05ldyhhcmdjb3VudCAtIG4pOwotICAgICAgICAgICAgaWYgKHUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICBTRVRMT0NBTCh0b3RhbF9hcmdzLCB1KTsKLSAgICAgICAgICAgIGZvciAoaSA9IG47IGkgPCBhcmdjb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgeCA9IGFyZ3NbaV07Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHgpOwotICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odSwgaS1uLCB4KTsKLSAgICAgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IGt3Y291bnQ7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqKmNvX3Zhcm5hbWVzOworICAgICAgICBQeU9iamVjdCAqa2V5d29yZCA9IGt3c1syKmldOworICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBrd3NbMippICsgMV07CisgICAgICAgIGludCBqOworICAgICAgICBpZiAoa2V5d29yZCA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2soa2V5d29yZCkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkga2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSk7CisgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGt3Y291bnQ7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKipjb192YXJuYW1lczsKLSAgICAgICAgICAgIFB5T2JqZWN0ICprZXl3b3JkID0ga3dzWzIqaV07Ci0gICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBrd3NbMippICsgMV07Ci0gICAgICAgICAgICBpbnQgajsKLSAgICAgICAgICAgIGlmIChrZXl3b3JkID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhrZXl3b3JkKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICIlVSgpIGtleXdvcmRzIG11c3QgYmUgc3RyaW5ncyIsCi0gICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lKTsKKyAgICAgICAgLyogU3BlZWQgaGFjazogZG8gcmF3IHBvaW50ZXIgY29tcGFyZXMuIEFzIG5hbWVzIGFyZQorICAgICAgICAgICBub3JtYWxseSBpbnRlcm5lZCB0aGlzIHNob3VsZCBhbG1vc3QgYWx3YXlzIGhpdC4gKi8KKyAgICAgICAgY29fdmFybmFtZXMgPSAoKFB5VHVwbGVPYmplY3QgKikoY28tPmNvX3Zhcm5hbWVzKSktPm9iX2l0ZW07CisgICAgICAgIGZvciAoaiA9IDA7IGogPCB0b3RhbF9hcmdzOyBqKyspIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpubSA9IGNvX3Zhcm5hbWVzW2pdOworICAgICAgICAgICAgaWYgKG5tID09IGtleXdvcmQpCisgICAgICAgICAgICAgICAgZ290byBrd19mb3VuZDsKKyAgICAgICAgfQorICAgICAgICAvKiBTbG93IGZhbGxiYWNrLCBqdXN0IGluIGNhc2UgKi8KKyAgICAgICAgZm9yIChqID0gMDsgaiA8IHRvdGFsX2FyZ3M7IGorKykgeworICAgICAgICAgICAgUHlPYmplY3QgKm5tID0gY29fdmFybmFtZXNbal07CisgICAgICAgICAgICBpbnQgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKAorICAgICAgICAgICAgICAgIGtleXdvcmQsIG5tLCBQeV9FUSk7CisgICAgICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgICAgICBnb3RvIGt3X2ZvdW5kOworICAgICAgICAgICAgZWxzZSBpZiAoY21wIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBTcGVlZCBoYWNrOiBkbyByYXcgcG9pbnRlciBjb21wYXJlcy4gQXMgbmFtZXMgYXJlCi0gICAgICAgICAgICAgICBub3JtYWxseSBpbnRlcm5lZCB0aGlzIHNob3VsZCBhbG1vc3QgYWx3YXlzIGhpdC4gKi8KLSAgICAgICAgICAgIGNvX3Zhcm5hbWVzID0gKChQeVR1cGxlT2JqZWN0ICopKGNvLT5jb192YXJuYW1lcykpLT5vYl9pdGVtOwotICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IHRvdGFsX2FyZ3M7IGorKykgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpubSA9IGNvX3Zhcm5hbWVzW2pdOwotICAgICAgICAgICAgICAgIGlmIChubSA9PSBrZXl3b3JkKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGt3X2ZvdW5kOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogU2xvdyBmYWxsYmFjaywganVzdCBpbiBjYXNlICovCi0gICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgdG90YWxfYXJnczsgaisrKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKm5tID0gY29fdmFybmFtZXNbal07Ci0gICAgICAgICAgICAgICAgaW50IGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgKLSAgICAgICAgICAgICAgICAgICAga2V5d29yZCwgbm0sIFB5X0VRKTsKLSAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBrd19mb3VuZDsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjbXAgPCAwKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaiA+PSB0b3RhbF9hcmdzICYmIGt3ZGljdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkgZ290IGFuIHVuZXhwZWN0ZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBhcmd1bWVudCAnJVMnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQpOwotICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5RGljdF9TZXRJdGVtKGt3ZGljdCwga2V5d29yZCwgdmFsdWUpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAga3dfZm91bmQ6Ci0gICAgICAgICAgICBpZiAoR0VUTE9DQUwoaikgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkgZ290IG11bHRpcGxlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVzIGZvciBrZXl3b3JkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgJyVTJyIsCisgICAgICAgIH0KKyAgICAgICAgaWYgKGogPj0gdG90YWxfYXJncyAmJiBrd2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSBnb3QgYW4gdW5leHBlY3RlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnQgJyVTJyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCk7Ci0gICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICAgICAgICAgIFNFVExPQ0FMKGosIHZhbHVlKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQotICAgICAgICBpZiAoY28tPmNvX2t3b25seWFyZ2NvdW50ID4gMCkgewotICAgICAgICAgICAgZm9yIChpID0gY28tPmNvX2FyZ2NvdW50OyBpIDwgdG90YWxfYXJnczsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWU7Ci0gICAgICAgICAgICAgICAgaWYgKEdFVExPQ0FMKGkpICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIG5hbWUgPSBQeVR1cGxlX0dFVF9JVEVNKGNvLT5jb192YXJuYW1lcywgaSk7Ci0gICAgICAgICAgICAgICAgaWYgKGt3ZGVmcyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWYgPSBQeURpY3RfR2V0SXRlbShrd2RlZnMsIG5hbWUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZGVmKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZGVmKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNFVExPQ0FMKGksIGRlZik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAiJVUoKSBuZWVkcyBrZXl3b3JkLW9ubHkgYXJndW1lbnQgJVMiLAotICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwgbmFtZSk7Ci0gICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgfQorICAgICAgICBQeURpY3RfU2V0SXRlbShrd2RpY3QsIGtleXdvcmQsIHZhbHVlKTsKKyAgICAgICAgY29udGludWU7CisgICAgICBrd19mb3VuZDoKKyAgICAgICAgaWYgKEdFVExPQ0FMKGopICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkgZ290IG11bHRpcGxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVzIGZvciBhcmd1bWVudCAnJVMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXJnY291bnQgPCBjby0+Y29fYXJnY291bnQpIHsKLSAgICAgICAgICAgIGludCBtID0gY28tPmNvX2FyZ2NvdW50IC0gZGVmY291bnQ7Ci0gICAgICAgICAgICBmb3IgKGkgPSBhcmdjb3VudDsgaSA8IG07IGkrKykgewotICAgICAgICAgICAgICAgIGlmIChHRVRMT0NBTChpKSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBqLCBnaXZlbiA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBjby0+Y29fYXJnY291bnQ7IGorKykKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChHRVRMT0NBTChqKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXZlbisrOwotICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkgdGFrZXMgJXMgJWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50JXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgIiglZCBnaXZlbikiLAotICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAoKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgZGVmY291bnQpID8gImF0IGxlYXN0IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJleGFjdGx5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSwgbSA9PSAxID8gIiIgOiAicyIsIGdpdmVuKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChuID4gbSkKLSAgICAgICAgICAgICAgICBpID0gbiAtIG07Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaSA9IDA7Ci0gICAgICAgICAgICBmb3IgKDsgaSA8IGRlZmNvdW50OyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoR0VUTE9DQUwobStpKSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWYgPSBkZWZzW2ldOwotICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZGVmKTsKLSAgICAgICAgICAgICAgICAgICAgU0VUTE9DQUwobStpLCBkZWYpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBQeV9JTkNSRUYodmFsdWUpOworICAgICAgICBTRVRMT0NBTChqLCB2YWx1ZSk7CiAgICAgfQotICAgIGVsc2UgaWYgKGFyZ2NvdW50ID4gMCB8fCBrd2NvdW50ID4gMCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIiVVKCkgdGFrZXMgbm8gYXJndW1lbnRzICglZCBnaXZlbikiLAotICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICBhcmdjb3VudCArIGt3Y291bnQpOworICAgIGlmIChhcmdjb3VudCA+IGNvLT5jb19hcmdjb3VudCAmJiAhKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpKSB7CisgICAgICAgIHRvb19tYW55X3Bvc2l0aW9uYWwoY28sIGFyZ2NvdW50LCBkZWZjb3VudCwgZmFzdGxvY2Fscyk7CiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9Ci0gICAgLyogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgc3RvcmFnZSBmb3IgY2VsbCB2YXJzLCBhbmQgY29weSBmcmVlCi0gICAgICAgdmFycyBpbnRvIGZyYW1lLiAgVGhpcyBpc24ndCB0b28gZWZmaWNpZW50IHJpZ2h0IG5vdy4gKi8KLSAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShjby0+Y29fY2VsbHZhcnMpKSB7Ci0gICAgICAgIGludCBpLCBqLCBuYXJncywgZm91bmQ7Ci0gICAgICAgIFB5X1VOSUNPREUgKmNlbGxuYW1lLCAqYXJnbmFtZTsKLSAgICAgICAgUHlPYmplY3QgKmM7Ci0KLSAgICAgICAgbmFyZ3MgPSB0b3RhbF9hcmdzOwotICAgICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykKLSAgICAgICAgICAgIG5hcmdzKys7Ci0gICAgICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJLRVlXT1JEUykKLSAgICAgICAgICAgIG5hcmdzKys7Ci0KLSAgICAgICAgLyogSW5pdGlhbGl6ZSBlYWNoIGNlbGwgdmFyLCB0YWtpbmcgaW50byBhY2NvdW50Ci0gICAgICAgICAgIGNlbGwgdmFycyB0aGF0IGFyZSBpbml0aWFsaXplZCBmcm9tIGFyZ3VtZW50cy4KLQotICAgICAgICAgICBTaG91bGQgYXJyYW5nZSBmb3IgdGhlIGNvbXBpbGVyIHRvIHB1dCBjZWxsdmFycwotICAgICAgICAgICB0aGF0IGFyZSBhcmd1bWVudHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgY2VsbHZhcnMKLSAgICAgICAgICAgbGlzdCBzbyB0aGF0IHdlIGNhbiBtYXJjaCBvdmVyIGl0IG1vcmUgZWZmaWNpZW50bHk/Ci0gICAgICAgICovCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19jZWxsdmFycyk7ICsraSkgewotICAgICAgICAgICAgY2VsbG5hbWUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgKLSAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKGNvLT5jb19jZWxsdmFycywgaSkpOwotICAgICAgICAgICAgZm91bmQgPSAwOwotICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IG5hcmdzOyBqKyspIHsKLSAgICAgICAgICAgICAgICBhcmduYW1lID0gUHlVbmljb2RlX0FTX1VOSUNPREUoCi0gICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oY28tPmNvX3Zhcm5hbWVzLCBqKSk7Ci0gICAgICAgICAgICAgICAgaWYgKFB5X1VOSUNPREVfc3RyY21wKGNlbGxuYW1lLCBhcmduYW1lKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGMgPSBQeUNlbGxfTmV3KEdFVExPQ0FMKGopKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICAgICAgR0VUTE9DQUwoY28tPmNvX25sb2NhbHMgKyBpKSA9IGM7Ci0gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gMTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGZvdW5kID09IDApIHsKLSAgICAgICAgICAgICAgICBjID0gUHlDZWxsX05ldyhOVUxMKTsKLSAgICAgICAgICAgICAgICBpZiAoYyA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICAgICAgU0VUTE9DQUwoY28tPmNvX25sb2NhbHMgKyBpLCBjKTsKKyAgICBpZiAoYXJnY291bnQgPCBjby0+Y29fYXJnY291bnQpIHsKKyAgICAgICAgaW50IG0gPSBjby0+Y29fYXJnY291bnQgLSBkZWZjb3VudDsKKyAgICAgICAgaW50IG1pc3NpbmcgPSAwOworICAgICAgICBmb3IgKGkgPSBhcmdjb3VudDsgaSA8IG07IGkrKykKKyAgICAgICAgICAgIGlmIChHRVRMT0NBTChpKSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIG1pc3NpbmcrKzsKKyAgICAgICAgaWYgKG1pc3NpbmcpIHsKKyAgICAgICAgICAgIG1pc3NpbmdfYXJndW1lbnRzKGNvLCBtaXNzaW5nLCBkZWZjb3VudCwgZmFzdGxvY2Fscyk7CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG4gPiBtKQorICAgICAgICAgICAgaSA9IG4gLSBtOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpID0gMDsKKyAgICAgICAgZm9yICg7IGkgPCBkZWZjb3VudDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoR0VUTE9DQUwobStpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZiA9IGRlZnNbaV07CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGRlZik7CisgICAgICAgICAgICAgICAgU0VUTE9DQUwobStpLCBkZWYpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19mcmVldmFycykpIHsKLSAgICAgICAgaW50IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19mcmVldmFycyk7ICsraSkgewotICAgICAgICAgICAgUHlPYmplY3QgKm8gPSBQeVR1cGxlX0dFVF9JVEVNKGNsb3N1cmUsIGkpOwotICAgICAgICAgICAgUHlfSU5DUkVGKG8pOwotICAgICAgICAgICAgZnJlZXZhcnNbUHlUdXBsZV9HRVRfU0laRShjby0+Y29fY2VsbHZhcnMpICsgaV0gPSBvOworICAgIGlmIChjby0+Y29fa3dvbmx5YXJnY291bnQgPiAwKSB7CisgICAgICAgIGludCBtaXNzaW5nID0gMDsKKyAgICAgICAgZm9yIChpID0gY28tPmNvX2FyZ2NvdW50OyBpIDwgdG90YWxfYXJnczsgaSsrKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbmFtZTsKKyAgICAgICAgICAgIGlmIChHRVRMT0NBTChpKSAhPSBOVUxMKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgbmFtZSA9IFB5VHVwbGVfR0VUX0lURU0oY28tPmNvX3Zhcm5hbWVzLCBpKTsKKyAgICAgICAgICAgIGlmIChrd2RlZnMgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWYgPSBQeURpY3RfR2V0SXRlbShrd2RlZnMsIG5hbWUpOworICAgICAgICAgICAgICAgIGlmIChkZWYpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGRlZik7CisgICAgICAgICAgICAgICAgICAgIFNFVExPQ0FMKGksIGRlZik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1pc3NpbmcrKzsKICAgICAgICAgfQorICAgICAgICBpZiAobWlzc2luZykgeworICAgICAgICAgICAgbWlzc2luZ19hcmd1bWVudHMoY28sIG1pc3NpbmcsIC0xLCBmYXN0bG9jYWxzKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIHN0b3JhZ2UgZm9yIGNlbGwgdmFycywgYW5kIGNvcHkgZnJlZQorICAgICAgIHZhcnMgaW50byBmcmFtZS4gKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShjby0+Y29fY2VsbHZhcnMpOyArK2kpIHsKKyAgICAgICAgUHlPYmplY3QgKmM7CisgICAgICAgIGludCBhcmc7CisgICAgICAgIC8qIFBvc3NpYmx5IGFjY291bnQgZm9yIHRoZSBjZWxsIHZhcmlhYmxlIGJlaW5nIGFuIGFyZ3VtZW50LiAqLworICAgICAgICBpZiAoY28tPmNvX2NlbGwyYXJnICE9IE5VTEwgJiYKKyAgICAgICAgICAgIChhcmcgPSBjby0+Y29fY2VsbDJhcmdbaV0pICE9IENPX0NFTExfTk9UX0FOX0FSRykKKyAgICAgICAgICAgIGMgPSBQeUNlbGxfTmV3KEdFVExPQ0FMKGFyZykpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjID0gUHlDZWxsX05ldyhOVUxMKTsKKyAgICAgICAgaWYgKGMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgU0VUTE9DQUwoY28tPmNvX25sb2NhbHMgKyBpLCBjKTsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2ZyZWV2YXJzKTsgKytpKSB7CisgICAgICAgIFB5T2JqZWN0ICpvID0gUHlUdXBsZV9HRVRfSVRFTShjbG9zdXJlLCBpKTsKKyAgICAgICAgUHlfSU5DUkVGKG8pOworICAgICAgICBmcmVldmFyc1tQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19jZWxsdmFycykgKyBpXSA9IG87CiAgICAgfQogCiAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX0dFTkVSQVRPUikgewpAQCAtMzM2NSwxOCArMzQ0OCw3MiBAQAogCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zcGVjaWFsX2xvb2t1cChQeU9iamVjdCAqbywgY2hhciAqbWV0aCwgUHlPYmplY3QgKipjYWNoZSkKK3NwZWNpYWxfbG9va3VwKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqaWQpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKLSAgICByZXMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvLCBtZXRoLCBjYWNoZSk7CisgICAgcmVzID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobywgaWQpOwogICAgIGlmIChyZXMgPT0gTlVMTCAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsICpjYWNoZSk7CisgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgaWQtPm9iamVjdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gcmVzOwogfQogCiAKKy8qIFRoZXNlIDMgZnVuY3Rpb25zIGRlYWwgd2l0aCB0aGUgZXhjZXB0aW9uIHN0YXRlIG9mIGdlbmVyYXRvcnMuICovCisKK3N0YXRpYyB2b2lkCitzYXZlX2V4Y19zdGF0ZShQeVRocmVhZFN0YXRlICp0c3RhdGUsIFB5RnJhbWVPYmplY3QgKmYpCit7CisgICAgUHlPYmplY3QgKnR5cGUsICp2YWx1ZSwgKnRyYWNlYmFjazsKKyAgICBQeV9YSU5DUkVGKHRzdGF0ZS0+ZXhjX3R5cGUpOworICAgIFB5X1hJTkNSRUYodHN0YXRlLT5leGNfdmFsdWUpOworICAgIFB5X1hJTkNSRUYodHN0YXRlLT5leGNfdHJhY2ViYWNrKTsKKyAgICB0eXBlID0gZi0+Zl9leGNfdHlwZTsKKyAgICB2YWx1ZSA9IGYtPmZfZXhjX3ZhbHVlOworICAgIHRyYWNlYmFjayA9IGYtPmZfZXhjX3RyYWNlYmFjazsKKyAgICBmLT5mX2V4Y190eXBlID0gdHN0YXRlLT5leGNfdHlwZTsKKyAgICBmLT5mX2V4Y192YWx1ZSA9IHRzdGF0ZS0+ZXhjX3ZhbHVlOworICAgIGYtPmZfZXhjX3RyYWNlYmFjayA9IHRzdGF0ZS0+ZXhjX3RyYWNlYmFjazsKKyAgICBQeV9YREVDUkVGKHR5cGUpOworICAgIFB5X1hERUNSRUYodmFsdWUpOworICAgIFB5X1hERUNSRUYodHJhY2ViYWNrKTsKK30KKworc3RhdGljIHZvaWQKK3N3YXBfZXhjX3N0YXRlKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSwgUHlGcmFtZU9iamVjdCAqZikKK3sKKyAgICBQeU9iamVjdCAqdG1wOworICAgIHRtcCA9IHRzdGF0ZS0+ZXhjX3R5cGU7CisgICAgdHN0YXRlLT5leGNfdHlwZSA9IGYtPmZfZXhjX3R5cGU7CisgICAgZi0+Zl9leGNfdHlwZSA9IHRtcDsKKyAgICB0bXAgPSB0c3RhdGUtPmV4Y192YWx1ZTsKKyAgICB0c3RhdGUtPmV4Y192YWx1ZSA9IGYtPmZfZXhjX3ZhbHVlOworICAgIGYtPmZfZXhjX3ZhbHVlID0gdG1wOworICAgIHRtcCA9IHRzdGF0ZS0+ZXhjX3RyYWNlYmFjazsKKyAgICB0c3RhdGUtPmV4Y190cmFjZWJhY2sgPSBmLT5mX2V4Y190cmFjZWJhY2s7CisgICAgZi0+Zl9leGNfdHJhY2ViYWNrID0gdG1wOworfQorCitzdGF0aWMgdm9pZAorcmVzdG9yZV9hbmRfY2xlYXJfZXhjX3N0YXRlKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSwgUHlGcmFtZU9iamVjdCAqZikKK3sKKyAgICBQeU9iamVjdCAqdHlwZSwgKnZhbHVlLCAqdGI7CisgICAgdHlwZSA9IHRzdGF0ZS0+ZXhjX3R5cGU7CisgICAgdmFsdWUgPSB0c3RhdGUtPmV4Y192YWx1ZTsKKyAgICB0YiA9IHRzdGF0ZS0+ZXhjX3RyYWNlYmFjazsKKyAgICB0c3RhdGUtPmV4Y190eXBlID0gZi0+Zl9leGNfdHlwZTsKKyAgICB0c3RhdGUtPmV4Y192YWx1ZSA9IGYtPmZfZXhjX3ZhbHVlOworICAgIHRzdGF0ZS0+ZXhjX3RyYWNlYmFjayA9IGYtPmZfZXhjX3RyYWNlYmFjazsKKyAgICBmLT5mX2V4Y190eXBlID0gTlVMTDsKKyAgICBmLT5mX2V4Y192YWx1ZSA9IE5VTEw7CisgICAgZi0+Zl9leGNfdHJhY2ViYWNrID0gTlVMTDsKKyAgICBQeV9YREVDUkVGKHR5cGUpOworICAgIFB5X1hERUNSRUYodmFsdWUpOworICAgIFB5X1hERUNSRUYodGIpOworfQorCisKIC8qIExvZ2ljIGZvciB0aGUgcmFpc2Ugc3RhdGVtZW50ICh0b28gY29tcGxpY2F0ZWQgZm9yIGlubGluaW5nKS4KICAgIFRoaXMgKmNvbnN1bWVzKiBhIHJlZmVyZW5jZSBjb3VudCB0byBlYWNoIG9mIGl0cyBhcmd1bWVudHMuICovCiBzdGF0aWMgZW51bSB3aHlfY29kZQpAQCAtMzQ0Niw2ICszNTgzLDEwIEBACiAgICAgICAgIGVsc2UgaWYgKFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2soY2F1c2UpKSB7CiAgICAgICAgICAgICBmaXhlZF9jYXVzZSA9IGNhdXNlOwogICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNhdXNlID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihjYXVzZSk7CisgICAgICAgICAgICBmaXhlZF9jYXVzZSA9IE5VTEw7CisgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNlcHRpb24gY2F1c2VzIG11c3QgZGVyaXZlIGZyb20gIgpAQCAtNDE5Miw3ICs0MzMzLDcgQEAKICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBzZXF1ZW5jZSwgbm90ICUyMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgc2VxdWVuY2UsIG5vdCAlLjIwMHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcmFyZy0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC00MzQyLDcgKzQ0ODMsOSBAQAogc3RhdGljIGludAogaW1wb3J0X2FsbF9mcm9tKFB5T2JqZWN0ICpsb2NhbHMsIFB5T2JqZWN0ICp2KQogewotICAgIFB5T2JqZWN0ICphbGwgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHYsICJfX2FsbF9fIik7CisgICAgX1B5X0lERU5USUZJRVIoX19hbGxfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19kaWN0X18pOworICAgIFB5T2JqZWN0ICphbGwgPSBfUHlPYmplY3RfR2V0QXR0cklkKHYsICZQeUlkX19fYWxsX18pOwogICAgIFB5T2JqZWN0ICpkaWN0LCAqbmFtZSwgKnZhbHVlOwogICAgIGludCBza2lwX2xlYWRpbmdfdW5kZXJzY29yZXMgPSAwOwogICAgIGludCBwb3MsIGVycjsKQEAgLTQzNTEsNyArNDQ5NCw3IEBACiAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gLTE7IC8qIFVuZXhwZWN0ZWQgZXJyb3IgKi8KICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgZGljdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodiwgIl9fZGljdF9fIik7CisgICAgICAgIGRpY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKHYsICZQeUlkX19fZGljdF9fKTsKICAgICAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC00Mzc3LDcgKzQ1MjAsOCBAQAogICAgICAgICB9CiAgICAgICAgIGlmIChza2lwX2xlYWRpbmdfdW5kZXJzY29yZXMgJiYKICAgICAgICAgICAgIFB5VW5pY29kZV9DaGVjayhuYW1lKSAmJgotICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUobmFtZSlbMF0gPT0gJ18nKQorICAgICAgICAgICAgUHlVbmljb2RlX1JFQURZKG5hbWUpICE9IC0xICYmCisgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRF9DSEFSKG5hbWUsIDApID09ICdfJykKICAgICAgICAgewogICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgICAgICAgICAgY29udGludWU7CkBAIC00NDM3LDE5ICs0NTgxLDkgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfY29uY2F0ZW5hdGUoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3LAotICAgICAgICAgICAgICAgICAgIFB5RnJhbWVPYmplY3QgKmYsIHVuc2lnbmVkIGNoYXIgKm5leHRfaW5zdHIpCisgICAgICAgICAgICAgICAgICAgIFB5RnJhbWVPYmplY3QgKmYsIHVuc2lnbmVkIGNoYXIgKm5leHRfaW5zdHIpCiB7Ci0gICAgLyogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzICd2YXJpYWJsZSArPSBleHByJyB3aGVuIGJvdGggYXJndW1lbnRzCi0gICAgICAgYXJlIChVbmljb2RlKSBzdHJpbmdzLiAqLwotICAgIFB5X3NzaXplX3Qgdl9sZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUodik7Ci0gICAgUHlfc3NpemVfdCB3X2xlbiA9IFB5VW5pY29kZV9HRVRfU0laRSh3KTsKLSAgICBQeV9zc2l6ZV90IG5ld19sZW4gPSB2X2xlbiArIHdfbGVuOwotICAgIGlmIChuZXdfbGVuIDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmdzIGFyZSB0b28gbGFyZ2UgdG8gY29uY2F0Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQorICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgaWYgKFB5X1JFRkNOVCh2KSA9PSAyKSB7CiAgICAgICAgIC8qIEluIHRoZSBjb21tb24gY2FzZSwgdGhlcmUgYXJlIDIgcmVmZXJlbmNlcyB0byB0aGUgdmFsdWUKICAgICAgICAgICogc3RvcmVkIGluICd2YXJpYWJsZScgd2hlbiB0aGUgKz0gaXMgcGVyZm9ybWVkOiBvbmUgb24gdGhlCkBAIC00NDkwLDMxICs0NjI0LDkgQEAKICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotCi0gICAgaWYgKFB5X1JFRkNOVCh2KSA9PSAxICYmICFQeVVuaWNvZGVfQ0hFQ0tfSU5URVJORUQodikpIHsKLSAgICAgICAgLyogTm93IHdlIG93biB0aGUgbGFzdCByZWZlcmVuY2UgdG8gJ3YnLCBzbyB3ZSBjYW4gcmVzaXplIGl0Ci0gICAgICAgICAqIGluLXBsYWNlLgotICAgICAgICAgKi8KLSAgICAgICAgaWYgKFB5VW5pY29kZV9SZXNpemUoJnYsIG5ld19sZW4pICE9IDApIHsKLSAgICAgICAgICAgIC8qIFhYWCBpZiBQeVVuaWNvZGVfUmVzaXplKCkgZmFpbHMsICd2JyBoYXMgYmVlbgotICAgICAgICAgICAgICogZGVhbGxvY2F0ZWQgc28gaXQgY2Fubm90IGJlIHB1dCBiYWNrIGludG8KLSAgICAgICAgICAgICAqICd2YXJpYWJsZScuICBUaGUgTWVtb3J5RXJyb3IgaXMgcmFpc2VkIHdoZW4gdGhlcmUKLSAgICAgICAgICAgICAqIGlzIG5vIHZhbHVlIGluICd2YXJpYWJsZScsIHdoaWNoIG1pZ2h0ICh2ZXJ5Ci0gICAgICAgICAgICAgKiByZW1vdGVseSkgYmUgYSBjYXVzZSBvZiBpbmNvbXBhdGliaWxpdGllcy4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgLyogY29weSAndycgaW50byB0aGUgbmV3bHkgYWxsb2NhdGVkIGFyZWEgb2YgJ3YnICovCi0gICAgICAgIG1lbWNweShQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSArIHZfbGVuLAotICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodyksIHdfbGVuKnNpemVvZihQeV9VTklDT0RFKSk7Ci0gICAgICAgIHJldHVybiB2OwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogV2hlbiBpbi1wbGFjZSByZXNpemluZyBpcyBub3QgYW4gb3B0aW9uLiAqLwotICAgICAgICB3ID0gUHlVbmljb2RlX0NvbmNhdCh2LCB3KTsKLSAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICByZXR1cm4gdzsKLSAgICB9CisgICAgcmVzID0gdjsKKyAgICBQeVVuaWNvZGVfQXBwZW5kKCZyZXMsIHcpOworICAgIHJldHVybiByZXM7CiB9CiAKICNpZmRlZiBEWU5BTUlDX0VYRUNVVElPTl9QUk9GSUxFCmRpZmYgLS1naXQgYS9QeXRob24vY2V2YWxfZ2lsLmggYi9QeXRob24vY2V2YWxfZ2lsLmgKaW5kZXggYmY3YTM1MC4uMjcwMmQ1YyAxMDA2NDQKLS0tIGEvUHl0aG9uL2NldmFsX2dpbC5oCisrKyBiL1B5dGhvbi9jZXZhbF9naWwuaApAQCAtNTksMjEzICs1OSw0OSBAQAogICAgICAoTm90ZTogdGhpcyBtZWNoYW5pc20gaXMgZW5hYmxlZCB3aXRoIEZPUkNFX1NXSVRDSElORyBhYm92ZSkKICovCiAKLSNpZm5kZWYgX1BPU0lYX1RIUkVBRFMKLS8qIFRoaXMgbWVhbnMgcHRocmVhZHMgYXJlIG5vdCBpbXBsZW1lbnRlZCBpbiBsaWJjIGhlYWRlcnMsIGhlbmNlIHRoZSBtYWNybwotICAgbm90IHByZXNlbnQgaW4gdW5pc3RkLmguIEJ1dCB0aGV5IHN0aWxsIGNhbiBiZSBpbXBsZW1lbnRlZCBhcyBhbiBleHRlcm5hbAotICAgbGlicmFyeSAoZS5nLiBnbnUgcHRoIGluIHB0aHJlYWQgZW11bGF0aW9uKSAqLwotIyBpZmRlZiBIQVZFX1BUSFJFQURfSAotIyAgaW5jbHVkZSA8cHRocmVhZC5oPiAvKiBfUE9TSVhfVEhSRUFEUyAqLwotIyBlbmRpZgorI2luY2x1ZGUgImNvbmR2YXIuaCIKKyNpZm5kZWYgUHlfSEFWRV9DT05EVkFSCisjZXJyb3IgWW91IG5lZWQgZWl0aGVyIGEgUE9TSVgtY29tcGF0aWJsZSBvciBhIFdpbmRvd3Mgc3lzdGVtIQogI2VuZGlmCiAKLQotI2lmZGVmIF9QT1NJWF9USFJFQURTCi0KLS8qCi0gKiBQT1NJWCBzdXBwb3J0Ci0gKi8KLQotI2luY2x1ZGUgPHB0aHJlYWQuaD4KLQotI2RlZmluZSBBRERfTUlDUk9TRUNPTkRTKHR2LCBpbnRlcnZhbCkgXAotZG8geyBcCi0gICAgdHYudHZfdXNlYyArPSAobG9uZykgaW50ZXJ2YWw7IFwKLSAgICB0di50dl9zZWMgKz0gdHYudHZfdXNlYyAvIDEwMDAwMDA7IFwKLSAgICB0di50dl91c2VjICU9IDEwMDAwMDA7IFwKLX0gd2hpbGUgKDApCi0KLS8qIFdlIGFzc3VtZSBhbGwgbW9kZXJuIFBPU0lYIHN5c3RlbXMgaGF2ZSBnZXR0aW1lb2ZkYXkoKSAqLwotI2lmZGVmIEdFVFRJTUVPRkRBWV9OT19UWgotI2RlZmluZSBHRVRUSU1FT0ZEQVkocHR2KSBnZXR0aW1lb2ZkYXkocHR2KQotI2Vsc2UKLSNkZWZpbmUgR0VUVElNRU9GREFZKHB0dikgZ2V0dGltZW9mZGF5KHB0diwgKHN0cnVjdCB0aW1lem9uZSAqKU5VTEwpCi0jZW5kaWYKLQotI2RlZmluZSBNVVRFWF9UIHB0aHJlYWRfbXV0ZXhfdAorI2RlZmluZSBNVVRFWF9UIFB5TVVURVhfVAogI2RlZmluZSBNVVRFWF9JTklUKG11dCkgXAotICAgIGlmIChwdGhyZWFkX211dGV4X2luaXQoJm11dCwgTlVMTCkpIHsgXAotICAgICAgICBQeV9GYXRhbEVycm9yKCJwdGhyZWFkX211dGV4X2luaXQoIiAjbXV0ICIpIGZhaWxlZCIpOyB9OworICAgIGlmIChQeU1VVEVYX0lOSVQoJihtdXQpKSkgeyBcCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5TVVURVhfSU5JVCgiICNtdXQgIikgZmFpbGVkIik7IH07CiAjZGVmaW5lIE1VVEVYX0ZJTkkobXV0KSBcCi0gICAgaWYgKHB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmbXV0KSkgeyBcCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoInB0aHJlYWRfbXV0ZXhfZGVzdHJveSgiICNtdXQgIikgZmFpbGVkIik7IH07CisgICAgaWYgKFB5TVVURVhfRklOSSgmKG11dCkpKSB7IFwKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlNVVRFWF9GSU5JKCIgI211dCAiKSBmYWlsZWQiKTsgfTsKICNkZWZpbmUgTVVURVhfTE9DSyhtdXQpIFwKLSAgICBpZiAocHRocmVhZF9tdXRleF9sb2NrKCZtdXQpKSB7IFwKLSAgICAgICAgUHlfRmF0YWxFcnJvcigicHRocmVhZF9tdXRleF9sb2NrKCIgI211dCAiKSBmYWlsZWQiKTsgfTsKKyAgICBpZiAoUHlNVVRFWF9MT0NLKCYobXV0KSkpIHsgXAorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeU1VVEVYX0xPQ0soIiAjbXV0ICIpIGZhaWxlZCIpOyB9OwogI2RlZmluZSBNVVRFWF9VTkxPQ0sobXV0KSBcCi0gICAgaWYgKHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXQpKSB7IFwKLSAgICAgICAgUHlfRmF0YWxFcnJvcigicHRocmVhZF9tdXRleF91bmxvY2soIiAjbXV0ICIpIGZhaWxlZCIpOyB9OworICAgIGlmIChQeU1VVEVYX1VOTE9DSygmKG11dCkpKSB7IFwKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlNVVRFWF9VTkxPQ0soIiAjbXV0ICIpIGZhaWxlZCIpOyB9OwogCi0jZGVmaW5lIENPTkRfVCBwdGhyZWFkX2NvbmRfdAorI2RlZmluZSBDT05EX1QgUHlDT05EX1QKICNkZWZpbmUgQ09ORF9JTklUKGNvbmQpIFwKLSAgICBpZiAocHRocmVhZF9jb25kX2luaXQoJmNvbmQsIE5VTEwpKSB7IFwKLSAgICAgICAgUHlfRmF0YWxFcnJvcigicHRocmVhZF9jb25kX2luaXQoIiAjY29uZCAiKSBmYWlsZWQiKTsgfTsKKyAgICBpZiAoUHlDT05EX0lOSVQoJihjb25kKSkpIHsgXAorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeUNPTkRfSU5JVCgiICNjb25kICIpIGZhaWxlZCIpOyB9OwogI2RlZmluZSBDT05EX0ZJTkkoY29uZCkgXAotICAgIGlmIChwdGhyZWFkX2NvbmRfZGVzdHJveSgmY29uZCkpIHsgXAotICAgICAgICBQeV9GYXRhbEVycm9yKCJwdGhyZWFkX2NvbmRfZGVzdHJveSgiICNjb25kICIpIGZhaWxlZCIpOyB9OworICAgIGlmIChQeUNPTkRfRklOSSgmKGNvbmQpKSkgeyBcCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5Q09ORF9GSU5JKCIgI2NvbmQgIikgZmFpbGVkIik7IH07CiAjZGVmaW5lIENPTkRfU0lHTkFMKGNvbmQpIFwKLSAgICBpZiAocHRocmVhZF9jb25kX3NpZ25hbCgmY29uZCkpIHsgXAotICAgICAgICBQeV9GYXRhbEVycm9yKCJwdGhyZWFkX2NvbmRfc2lnbmFsKCIgI2NvbmQgIikgZmFpbGVkIik7IH07CisgICAgaWYgKFB5Q09ORF9TSUdOQUwoJihjb25kKSkpIHsgXAorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeUNPTkRfU0lHTkFMKCIgI2NvbmQgIikgZmFpbGVkIik7IH07CiAjZGVmaW5lIENPTkRfV0FJVChjb25kLCBtdXQpIFwKLSAgICBpZiAocHRocmVhZF9jb25kX3dhaXQoJmNvbmQsICZtdXQpKSB7IFwKLSAgICAgICAgUHlfRmF0YWxFcnJvcigicHRocmVhZF9jb25kX3dhaXQoIiAjY29uZCAiKSBmYWlsZWQiKTsgfTsKKyAgICBpZiAoUHlDT05EX1dBSVQoJihjb25kKSwgJihtdXQpKSkgeyBcCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5Q09ORF9XQUlUKCIgI2NvbmQgIikgZmFpbGVkIik7IH07CiAjZGVmaW5lIENPTkRfVElNRURfV0FJVChjb25kLCBtdXQsIG1pY3Jvc2Vjb25kcywgdGltZW91dF9yZXN1bHQpIFwKICAgICB7IFwKLSAgICAgICAgaW50IHI7IFwKLSAgICAgICAgc3RydWN0IHRpbWVzcGVjIHRzOyBcCi0gICAgICAgIHN0cnVjdCB0aW1ldmFsIGRlYWRsaW5lOyBcCi0gICAgICAgIFwKLSAgICAgICAgR0VUVElNRU9GREFZKCZkZWFkbGluZSk7IFwKLSAgICAgICAgQUREX01JQ1JPU0VDT05EUyhkZWFkbGluZSwgbWljcm9zZWNvbmRzKTsgXAotICAgICAgICB0cy50dl9zZWMgPSBkZWFkbGluZS50dl9zZWM7IFwKLSAgICAgICAgdHMudHZfbnNlYyA9IGRlYWRsaW5lLnR2X3VzZWMgKiAxMDAwOyBcCi0gICAgICAgIFwKLSAgICAgICAgciA9IHB0aHJlYWRfY29uZF90aW1lZHdhaXQoJmNvbmQsICZtdXQsICZ0cyk7IFwKLSAgICAgICAgaWYgKHIgPT0gRVRJTUVET1VUKSBcCisgICAgICAgIGludCByID0gUHlDT05EX1RJTUVEV0FJVCgmKGNvbmQpLCAmKG11dCksIChtaWNyb3NlY29uZHMpKTsgXAorICAgICAgICBpZiAociA8IDApIFwKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5Q09ORF9XQUlUKCIgI2NvbmQgIikgZmFpbGVkIik7IFwKKyAgICAgICAgaWYgKHIpIC8qIDEgPT0gdGltZW91dCwgMiA9PSBpbXBsLiBjYW4ndCBzYXksIHNvIGFzc3VtZSB0aW1lb3V0ICovIFwKICAgICAgICAgICAgIHRpbWVvdXRfcmVzdWx0ID0gMTsgXAotICAgICAgICBlbHNlIGlmIChyKSBcCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJwdGhyZWFkX2NvbmRfdGltZWR3YWl0KCIgI2NvbmQgIikgZmFpbGVkIik7IFwKICAgICAgICAgZWxzZSBcCiAgICAgICAgICAgICB0aW1lb3V0X3Jlc3VsdCA9IDA7IFwKICAgICB9IFwKIAotI2VsaWYgZGVmaW5lZChOVF9USFJFQURTKQotCi0vKgotICogV2luZG93cyAoMjAwMCBhbmQgbGF0ZXIsIGFzIHdlbGwgYXMgKGhvcGVmdWxseSkgQ0UpIHN1cHBvcnQKLSAqLwotCi0jaW5jbHVkZSA8d2luZG93cy5oPgotCi0jZGVmaW5lIE1VVEVYX1QgQ1JJVElDQUxfU0VDVElPTgotI2RlZmluZSBNVVRFWF9JTklUKG11dCkgZG8geyBcCi0gICAgaWYgKCEoSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbkFuZFNwaW5Db3VudCgmKG11dCksIDQwMDApKSkgXAotICAgICAgICBQeV9GYXRhbEVycm9yKCJDcmVhdGVNdXRleCgiICNtdXQgIikgZmFpbGVkIik7IFwKLX0gd2hpbGUgKDApCi0jZGVmaW5lIE1VVEVYX0ZJTkkobXV0KSBcCi0gICAgRGVsZXRlQ3JpdGljYWxTZWN0aW9uKCYobXV0KSkKLSNkZWZpbmUgTVVURVhfTE9DSyhtdXQpIFwKLSAgICBFbnRlckNyaXRpY2FsU2VjdGlvbigmKG11dCkpCi0jZGVmaW5lIE1VVEVYX1VOTE9DSyhtdXQpIFwKLSAgICBMZWF2ZUNyaXRpY2FsU2VjdGlvbigmKG11dCkpCi0KLS8qIFdlIGVtdWxhdGUgY29uZGl0aW9uIHZhcmlhYmxlcyB3aXRoIGEgc2VtYXBob3JlLgotICAgV2UgdXNlIGEgU2VtYXBob3JlIHJhdGhlciB0aGFuIGFuIGF1dG8tcmVzZXQgZXZlbnQsIGJlY2F1c2UgYWx0aG91Z2gKLSAgIGFuIGF1dG8tcmVzZW50IGV2ZW50IG1pZ2h0IGFwcGVhciB0byBzb2x2ZSB0aGUgbG9zdC13YWtldXAgYnVnIChyYWNlCi0gICBjb25kaXRpb24gYmV0d2VlbiByZWxlYXNpbmcgdGhlIG91dGVyIGxvY2sgYW5kIHdhaXRpbmcpIGJlY2F1c2UgaXQKLSAgIG1haW50YWlucyBzdGF0ZSBldmVuIHRob3VnaCBhIHdhaXQgaGFzbid0IGhhcHBlbmVkLCB0aGVyZSBpcyBzdGlsbAotICAgYSBsb3N0IHdha2V1cCBwcm9ibGVtIGlmIG1vcmUgdGhhbiBvbmUgdGhyZWFkIGFyZSBpbnRlcnJ1cHRlZCBpbiB0aGUKLSAgIGNyaXRpY2FsIHBsYWNlLiAgQSBzZW1hcGhvcmUgc29sdmVzIHRoYXQuCi0gICBCZWNhdXNlIGl0IGlzIG9rIHRvIHNpZ25hbCBhIGNvbmRpdGlvbiB2YXJpYWJsZSB3aXRoIG5vIG9uZQotICAgd2FpdGluZywgd2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YKLSAgIHdhaXRpbmcgdGhyZWFkcy4gIE90aGVyd2lzZSwgdGhlIHNlbWFwaG9yZSdzIHN0YXRlIGNvdWxkIHJpc2UKLSAgIHdpdGhvdXQgYm91bmQuCi0KLSAgIEdlbmVyaWMgZW11bGF0aW9ucyBvZiB0aGUgcHRocmVhZF9jb25kXyogQVBJIHVzaW5nCi0gICBXaW4zMiBmdW5jdGlvbnMgY2FuIGJlIGZvdW5kIG9uIHRoZSBXZWIuCi0gICBUaGUgZm9sbG93aW5nIHJlYWQgY2FuIGJlIGVkaWZpY2F0aW5nIChvciBub3QpOgotICAgaHR0cDovL3d3dy5jc2Uud3VzdGwuZWR1L35zY2htaWR0L3dpbjMyLWN2LTEuaHRtbAotKi8KLXR5cGVkZWYgc3RydWN0IENPTkRfVAotewotICAgIEhBTkRMRSBzZW07ICAgIC8qIHRoZSBzZW1hcGhvcmUgKi8KLSAgICBpbnQgbl93YWl0aW5nOyAvKiBob3cgbWFueSBhcmUgdW5yZWxlYXNlZCAqLwotfSBDT05EX1Q7Ci0KLV9faW5saW5lIHN0YXRpYyB2b2lkIF9jb25kX2luaXQoQ09ORF9UICpjb25kKQotewotICAgIC8qIEEgc2VtYXBob3JlIHdpdGggYSBsYXJnZSBtYXggdmFsdWUsICBUaGUgcG9zaXRpdmUgdmFsdWUKLSAgICAgKiBpcyBvbmx5IG5lZWRlZCB0byBjYXRjaCB0aG9zZSAibG9zdCB3YWtldXAiIGV2ZW50cyBhbmQKLSAgICAgKiByYWNlIGNvbmRpdGlvbnMgd2hlbiBhIHRpbWVkIHdhaXQgZWxhcHNlcy4KLSAgICAgKi8KLSAgICBpZiAoIShjb25kLT5zZW0gPSBDcmVhdGVTZW1hcGhvcmUoTlVMTCwgMCwgMTAwMCwgTlVMTCkpKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJDcmVhdGVTZW1hcGhvcmUoKSBmYWlsZWQiKTsKLSAgICBjb25kLT5uX3dhaXRpbmcgPSAwOwotfQotCi1fX2lubGluZSBzdGF0aWMgdm9pZCBfY29uZF9maW5pKENPTkRfVCAqY29uZCkKLXsKLSAgICBCT09MIG9rID0gQ2xvc2VIYW5kbGUoY29uZC0+c2VtKTsKLSAgICBpZiAoIW9rKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJDbG9zZUhhbmRsZSgpIGZhaWxlZCIpOwotfQotCi1fX2lubGluZSBzdGF0aWMgdm9pZCBfY29uZF93YWl0KENPTkRfVCAqY29uZCwgTVVURVhfVCAqbXV0KQotewotICAgICsrY29uZC0+bl93YWl0aW5nOwotICAgIE1VVEVYX1VOTE9DSygqbXV0KTsKLSAgICAvKiAibG9zdCB3YWtldXAgYnVnIiB3b3VsZCBvY2N1ciBpZiB0aGUgY2FsbGVyIHdlcmUgaW50ZXJydXB0ZWQgaGVyZSwKLSAgICAgKiBidXQgd2UgYXJlIHNhZmUgYmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBzZW1hcGhvcmUgd2ljaCBoYXMgYW4gaW50ZXJuYWwKLSAgICAgKiBjb3VudC4KLSAgICAgKi8KLSAgICBpZiAoV2FpdEZvclNpbmdsZU9iamVjdChjb25kLT5zZW0sIElORklOSVRFKSA9PSBXQUlUX0ZBSUxFRCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiV2FpdEZvclNpbmdsZU9iamVjdCgpIGZhaWxlZCIpOwotICAgIE1VVEVYX0xPQ0soKm11dCk7Ci19Ci0KLV9faW5saW5lIHN0YXRpYyBpbnQgX2NvbmRfdGltZWRfd2FpdChDT05EX1QgKmNvbmQsIE1VVEVYX1QgKm11dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB1cykKLXsKLSAgICBEV09SRCByOwotICAgICsrY29uZC0+bl93YWl0aW5nOwotICAgIE1VVEVYX1VOTE9DSygqbXV0KTsKLSAgICByID0gV2FpdEZvclNpbmdsZU9iamVjdChjb25kLT5zZW0sIHVzIC8gMTAwMCk7Ci0gICAgaWYgKHIgPT0gV0FJVF9GQUlMRUQpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIldhaXRGb3JTaW5nbGVPYmplY3QoKSBmYWlsZWQiKTsKLSAgICBNVVRFWF9MT0NLKCptdXQpOwotICAgIGlmIChyID09IFdBSVRfVElNRU9VVCkKLSAgICAgICAgLS1jb25kLT5uX3dhaXRpbmc7Ci0gICAgICAgIC8qIEhlcmUgd2UgaGF2ZSBhIGJlbmlnbiByYWNlIGNvbmRpdGlvbiB3aXRoIF9jb25kX3NpZ25hbC4gIElmIHRoZQotICAgICAgICAgKiB3YWl0IG9wZXJhdGlvbiBoYXMgdGltZWQgb3V0LCBidXQgYmVmb3JlIHdlIGNhbiBhY3F1aXJlIHRoZQotICAgICAgICAgKiBtdXRleCBhZ2FpbiB0byBkZWNyZW1lbnQgbl93YWl0aW5nLCBhIHRocmVhZCBob2xkaW5nIHRoZSBtdXRleAotICAgICAgICAgKiBzdGlsbCBzZWVzIGEgcG9zaXRpdmUgbl93YWl0aW5nIHZhbHVlIGFuZCBtYXkgY2FsbAotICAgICAgICAgKiBSZWxlYXNlU2VtYXBob3JlIGFuZCBkZWNyZW1lbnQgbl93YWl0aW5nLgotICAgICAgICAgKiBUaGlzIHdpbGwgY2F1c2Ugbl93YWl0aW5nIHRvIGJlIGRlY3JlbWVudGVkIHR3aWNlLgotICAgICAgICAgKiBUaGlzIGlzIGJlbmlnbiwgdGhvdWdoLCBiZWNhdXNlIFJlbGVhc2VTZW1hcGhvcmUgd2lsbCBhbHNvIGhhdmUKLSAgICAgICAgICogYmVlbiBjYWxsZWQsIGxlYXZpbmcgdGhlIHNlbWFwaG9yZSBzdGF0ZSBwb3NpdGl2ZS4gIFdlIG1heQotICAgICAgICAgKiB0aHVzIGVuZCB1cCB3aXRoIHNlbWFwaG9yZSBpbiBzdGF0ZSAxLCBhbmQgbl93YWl0aW5nID09IC0xLCBhbmQKLSAgICAgICAgICogdGhlIG5leHQgdGltZSBzb21lb25lIGNhbGxzIF9jb25kX3dhaXQoKSwgdGhhdCB0aHJlYWQgd2lsbAotICAgICAgICAgKiBwYXNzIHJpZ2h0IHRocm91Z2gsIGRlY3JlbWVudGluZyB0aGUgc2VtYXBob3JlIHN0YXRlIGFuZAotICAgICAgICAgKiBpbmNyZW1lbnRpbmcgbl93YWl0aW5nLCB0aHVzIGNvcnJlY3RpbmcgdGhlIGV4dHJhIF9jb25kX3NpZ25hbC4KLSAgICAgICAgICovCi0gICAgcmV0dXJuIHIgPT0gV0FJVF9USU1FT1VUOwotfQotCi1fX2lubGluZSBzdGF0aWMgdm9pZCBfY29uZF9zaWduYWwoQ09ORF9UICAqY29uZCkgewotICAgIC8qIE5PVEU6IFRoaXMgbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgbXV0ZXggaGVsZCAqLwotICAgIGlmIChjb25kLT5uX3dhaXRpbmcgPiAwKSB7Ci0gICAgICAgIGlmICghUmVsZWFzZVNlbWFwaG9yZShjb25kLT5zZW0sIDEsIE5VTEwpKQotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiUmVsZWFzZVNlbWFwaG9yZSgpIGZhaWxlZCIpOwotICAgICAgICAtLWNvbmQtPm5fd2FpdGluZzsKLSAgICB9Ci19Ci0KLSNkZWZpbmUgQ09ORF9JTklUKGNvbmQpIFwKLSAgICBfY29uZF9pbml0KCYoY29uZCkpCi0jZGVmaW5lIENPTkRfRklOSShjb25kKSBcCi0gICAgX2NvbmRfZmluaSgmKGNvbmQpKQotI2RlZmluZSBDT05EX1NJR05BTChjb25kKSBcCi0gICAgX2NvbmRfc2lnbmFsKCYoY29uZCkpCi0jZGVmaW5lIENPTkRfV0FJVChjb25kLCBtdXQpIFwKLSAgICBfY29uZF93YWl0KCYoY29uZCksICYobXV0KSkKLSNkZWZpbmUgQ09ORF9USU1FRF9XQUlUKGNvbmQsIG11dCwgdXMsIHRpbWVvdXRfcmVzdWx0KSBkbyB7IFwKLSAgICAodGltZW91dF9yZXN1bHQpID0gX2NvbmRfdGltZWRfd2FpdCgmKGNvbmQpLCAmKG11dCksIHVzKTsgXAotfSB3aGlsZSAoMCkKLQotI2Vsc2UKLQotI2Vycm9yIFlvdSBuZWVkIGVpdGhlciBhIFBPU0lYLWNvbXBhdGlibGUgb3IgYSBXaW5kb3dzIHN5c3RlbSEKLQotI2VuZGlmIC8qIF9QT1NJWF9USFJFQURTLCBOVF9USFJFQURTICovCiAKIAogLyogV2hldGhlciB0aGUgR0lMIGlzIGFscmVhZHkgdGFrZW4gKC0xIGlmIHVuaW5pdGlhbGl6ZWQpLiBUaGlzIGlzIGF0b21pYwpAQCAtMzEzLDEzICsxNDksMTQgQEAKIAogc3RhdGljIHZvaWQgZGVzdHJveV9naWwodm9pZCkKIHsKKyAgICAvKiBzb21lIHB0aHJlYWQtbGlrZSBpbXBsZW1lbnRhdGlvbnMgdGllIHRoZSBtdXRleCB0byB0aGUgY29uZAorICAgICAqIGFuZCBtdXN0IGhhdmUgdGhlIGNvbmQgZGVzdHJveWVkIGZpcnN0LgorICAgICAqLworICAgIENPTkRfRklOSShnaWxfY29uZCk7CiAgICAgTVVURVhfRklOSShnaWxfbXV0ZXgpOwogI2lmZGVmIEZPUkNFX1NXSVRDSElORwotICAgIE1VVEVYX0ZJTkkoc3dpdGNoX211dGV4KTsKLSNlbmRpZgotICAgIENPTkRfRklOSShnaWxfY29uZCk7Ci0jaWZkZWYgRk9SQ0VfU1dJVENISU5HCiAgICAgQ09ORF9GSU5JKHN3aXRjaF9jb25kKTsKKyAgICBNVVRFWF9GSU5JKHN3aXRjaF9tdXRleCk7CiAjZW5kaWYKICAgICBfUHlfYXRvbWljX3N0b3JlX2V4cGxpY2l0KCZnaWxfbG9ja2VkLCAtMSwgX1B5X21lbW9yeV9vcmRlcl9yZWxlYXNlKTsKICAgICBfUHlfQU5OT1RBVEVfUldMT0NLX0RFU1RST1koJmdpbF9sb2NrZWQpOwpAQCAtMzU1LDEzICsxOTIsMTMgQEAKICAgICAgICAgTVVURVhfTE9DSyhzd2l0Y2hfbXV0ZXgpOwogICAgICAgICAvKiBOb3Qgc3dpdGNoZWQgeWV0ID0+IHdhaXQgKi8KICAgICAgICAgaWYgKF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIpID09IHRzdGF0ZSkgewotCSAgICBSRVNFVF9HSUxfRFJPUF9SRVFVRVNUKCk7CisgICAgICAgIFJFU0VUX0dJTF9EUk9QX1JFUVVFU1QoKTsKICAgICAgICAgICAgIC8qIE5PVEU6IGlmIENPTkRfV0FJVCBkb2VzIG5vdCBhdG9taWNhbGx5IHN0YXJ0IHdhaXRpbmcgd2hlbgogICAgICAgICAgICAgICAgcmVsZWFzaW5nIHRoZSBtdXRleCwgYW5vdGhlciB0aHJlYWQgY2FuIHJ1biB0aHJvdWdoLCB0YWtlCiAgICAgICAgICAgICAgICB0aGUgR0lMIGFuZCBkcm9wIGl0IGFnYWluLCBhbmQgcmVzZXQgdGhlIGNvbmRpdGlvbgogICAgICAgICAgICAgICAgYmVmb3JlIHdlIGV2ZW4gaGFkIGEgY2hhbmNlIHRvIHdhaXQgZm9yIGl0LiAqLwogICAgICAgICAgICAgQ09ORF9XQUlUKHN3aXRjaF9jb25kLCBzd2l0Y2hfbXV0ZXgpOwotCX0KKyAgICB9CiAgICAgICAgIE1VVEVYX1VOTE9DSyhzd2l0Y2hfbXV0ZXgpOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NvZGVjcy5jIGIvUHl0aG9uL2NvZGVjcy5jCmluZGV4IGUyMTgzNGEuLmZkNjdkMWIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jb2RlY3MuYworKysgYi9QeXRob24vY29kZWNzLmMKQEAgLTExLDYgKzExLDggQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlIDxjdHlwZS5oPgogCitjb25zdCBjaGFyICpQeV9oZXhkaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CisKIC8qIC0tLSBDb2RlYyBSZWdpc3RyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAvKiBJbXBvcnQgdGhlIHN0YW5kYXJkIGVuY29kaW5ncyBwYWNrYWdlIHdoaWNoIHdpbGwgcmVnaXN0ZXIgdGhlIGZpcnN0CkBAIC00NjUsOSArNDY3LDExIEBACiAKIHN0YXRpYyB2b2lkIHdyb25nX2V4Y2VwdGlvbl90eXBlKFB5T2JqZWN0ICpleGMpCiB7Ci0gICAgUHlPYmplY3QgKnR5cGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGV4YywgIl9fY2xhc3NfXyIpOworICAgIF9QeV9JREVOVElGSUVSKF9fY2xhc3NfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19uYW1lX18pOworICAgIFB5T2JqZWN0ICp0eXBlID0gX1B5T2JqZWN0X0dldEF0dHJJZChleGMsICZQeUlkX19fY2xhc3NfXyk7CiAgICAgaWYgKHR5cGUgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodHlwZSwgIl9fbmFtZV9fIik7CisgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZCh0eXBlLCAmUHlJZF9fX25hbWVfXyk7CiAgICAgICAgIFB5X0RFQ1JFRih0eXBlKTsKICAgICAgICAgaWYgKG5hbWUgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKQEAgLTUwNiw1NyArNTEwLDU4IEBACiAgICAgICAgIHdyb25nX2V4Y2VwdGlvbl90eXBlKGV4Yyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICAvKiBvdWNoOiBwYXNzaW5nIE5VTEwsIDAsIHBvcyBnaXZlcyBOb25lIGluc3RlYWQgb2YgdScnICovCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIih1I24pIiwgJmVuZCwgMCwgZW5kKTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE5uKSIsIFB5VW5pY29kZV9OZXcoMCwgMCksIGVuZCk7CiB9CiAKIAogUHlPYmplY3QgKlB5Q29kZWNfUmVwbGFjZUVycm9ycyhQeU9iamVjdCAqZXhjKQogewotICAgIFB5T2JqZWN0ICpyZXN0dXBsZTsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0OwotICAgIFB5X3NzaXplX3QgZW5kOwotICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LCBlbmQsIGksIGxlbjsKIAogICAgIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yKSkgewogICAgICAgICBQeU9iamVjdCAqcmVzOwotICAgICAgICBQeV9VTklDT0RFICpwOworICAgICAgICBpbnQga2luZDsKKyAgICAgICAgdm9pZCAqZGF0YTsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kKGV4YywgJmVuZCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIGVuZC1zdGFydCk7CisgICAgICAgIGxlbiA9IGVuZCAtIHN0YXJ0OworICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KGxlbiwgJz8nKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGZvciAocCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcyksIGkgPSBzdGFydDsKLSAgICAgICAgICAgIGk8ZW5kOyArK3AsICsraSkKLSAgICAgICAgICAgICpwID0gJz8nOwotICAgICAgICByZXN0dXBsZSA9IFB5X0J1aWxkVmFsdWUoIihPbikiLCByZXMsIGVuZCk7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgICAgICByZXR1cm4gcmVzdHVwbGU7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXMpOworICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVzKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKQorICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIGksICc/Jyk7CisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTm4pIiwgcmVzLCBlbmQpOwogICAgIH0KICAgICBlbHNlIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZURlY29kZUVycm9yKSkgewotICAgICAgICBQeV9VTklDT0RFIHJlcyA9IFB5X1VOSUNPREVfUkVQTEFDRU1FTlRfQ0hBUkFDVEVSOwogICAgICAgICBpZiAoUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kKGV4YywgJmVuZCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIih1I24pIiwgJnJlcywgMSwgZW5kKTsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihDbikiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KVB5X1VOSUNPREVfUkVQTEFDRU1FTlRfQ0hBUkFDVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpOwogICAgIH0KICAgICBlbHNlIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yKSkgewogICAgICAgICBQeU9iamVjdCAqcmVzOwotICAgICAgICBQeV9VTklDT0RFICpwOworICAgICAgICBpbnQga2luZDsKKyAgICAgICAgdm9pZCAqZGF0YTsKICAgICAgICAgaWYgKFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kKGV4YywgJmVuZCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIGVuZC1zdGFydCk7CisgICAgICAgIGxlbiA9IGVuZCAtIHN0YXJ0OworICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KGxlbiwgUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVIpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZm9yIChwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzKSwgaSA9IHN0YXJ0OwotICAgICAgICAgICAgaTxlbmQ7ICsrcCwgKytpKQotICAgICAgICAgICAgKnAgPSBQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUjsKLSAgICAgICAgcmVzdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCIoT24pIiwgcmVzLCBlbmQpOwotICAgICAgICBQeV9ERUNSRUYocmVzKTsKLSAgICAgICAgcmV0dXJuIHJlc3R1cGxlOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocmVzKTsKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlcyk7CisgICAgICAgIGZvciAoaT0wOyBpIDwgbGVuOyBpKyspCisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgaSwgUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVIpOworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE5uKSIsIHJlcywgZW5kKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHdyb25nX2V4Y2VwdGlvbl90eXBlKGV4Yyk7CkBAIC01NjksODIgKzU3NCw3MiBAQAogICAgIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yKSkgewogICAgICAgICBQeU9iamVjdCAqcmVzdHVwbGU7CiAgICAgICAgIFB5T2JqZWN0ICpvYmplY3Q7CisgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgUHlfc3NpemVfdCBzdGFydDsKICAgICAgICAgUHlfc3NpemVfdCBlbmQ7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgICAgIFB5X1VOSUNPREUgKnN0YXJ0cDsKLSAgICAgICAgUHlfVU5JQ09ERSAqb3V0cDsKKyAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0cDsKICAgICAgICAgaW50IHJlc3NpemU7CisgICAgICAgIFB5X1VDUzQgY2g7CiAgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydChleGMsICZzdGFydCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZChleGMsICZlbmQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICghKG9iamVjdCA9IFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdChleGMpKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBzdGFydHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmplY3QpOwotICAgICAgICBmb3IgKHAgPSBzdGFydHArc3RhcnQsIHJlc3NpemUgPSAwOyBwIDwgc3RhcnRwK2VuZDsgKytwKSB7Ci0gICAgICAgICAgICBpZiAoKnA8MTApCisgICAgICAgIGZvciAoaSA9IHN0YXJ0LCByZXNzaXplID0gMDsgaSA8IGVuZDsgKytpKSB7CisgICAgICAgICAgICAvKiBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBiZSAicmVhZHkiICovCisgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKKyAgICAgICAgICAgIGlmIChjaDwxMCkKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrMSsxOwotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwKQorICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwKQogICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMisyKzE7Ci0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwKQorICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwMCkKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrMysxOwotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwMDApCisgICAgICAgICAgICBlbHNlIGlmIChjaDwxMDAwMCkKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrNCsxOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoPDEwMDAwMCkKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrNSsxOwotI2Vsc2UKLSAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDAwMCkKLSAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrNSsxOwotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwMDAwMCkKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoPDEwMDAwMDApCiAgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAyKzYrMTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrNysxOwotI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgLyogYWxsb2NhdGUgcmVwbGFjZW1lbnQgKi8KLSAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHJlc3NpemUpOworICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KHJlc3NpemUsIDEyNyk7CiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKG9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQorICAgICAgICBvdXRwID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKTsKICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKi8KLSAgICAgICAgZm9yIChwID0gc3RhcnRwK3N0YXJ0LCBvdXRwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzKTsKLSAgICAgICAgICAgIHAgPCBzdGFydHArZW5kOyArK3ApIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgYyA9ICpwOworICAgICAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7CiAgICAgICAgICAgICBpbnQgZGlnaXRzOwogICAgICAgICAgICAgaW50IGJhc2U7CisgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKICAgICAgICAgICAgICpvdXRwKysgPSAnJic7CiAgICAgICAgICAgICAqb3V0cCsrID0gJyMnOwotICAgICAgICAgICAgaWYgKCpwPDEwKSB7CisgICAgICAgICAgICBpZiAoY2g8MTApIHsKICAgICAgICAgICAgICAgICBkaWdpdHMgPSAxOwogICAgICAgICAgICAgICAgIGJhc2UgPSAxOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwKSB7CisgICAgICAgICAgICBlbHNlIGlmIChjaDwxMDApIHsKICAgICAgICAgICAgICAgICBkaWdpdHMgPSAyOwogICAgICAgICAgICAgICAgIGJhc2UgPSAxMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDApIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoPDEwMDApIHsKICAgICAgICAgICAgICAgICBkaWdpdHMgPSAzOwogICAgICAgICAgICAgICAgIGJhc2UgPSAxMDA7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMCkgeworICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwMDApIHsKICAgICAgICAgICAgICAgICBkaWdpdHMgPSA0OwogICAgICAgICAgICAgICAgIGJhc2UgPSAxMDAwOwogICAgICAgICAgICAgfQotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwMDAwKSB7CiAgICAgICAgICAgICAgICAgZGlnaXRzID0gNTsKICAgICAgICAgICAgICAgICBiYXNlID0gMTAwMDA7CiAgICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwMDAwKSB7Ci0gICAgICAgICAgICAgICAgZGlnaXRzID0gNTsKLSAgICAgICAgICAgICAgICBiYXNlID0gMTAwMDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMDAwKSB7CisgICAgICAgICAgICBlbHNlIGlmIChjaDwxMDAwMDAwKSB7CiAgICAgICAgICAgICAgICAgZGlnaXRzID0gNjsKICAgICAgICAgICAgICAgICBiYXNlID0gMTAwMDAwOwogICAgICAgICAgICAgfQpAQCAtNjUyLDE2ICs2NDcsMTUgQEAKICAgICAgICAgICAgICAgICBkaWdpdHMgPSA3OwogICAgICAgICAgICAgICAgIGJhc2UgPSAxMDAwMDAwOwogICAgICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgICAgICB3aGlsZSAoZGlnaXRzLS0+MCkgewotICAgICAgICAgICAgICAgICpvdXRwKysgPSAnMCcgKyBjL2Jhc2U7Ci0gICAgICAgICAgICAgICAgYyAlPSBiYXNlOworICAgICAgICAgICAgICAgICpvdXRwKysgPSAnMCcgKyBjaC9iYXNlOworICAgICAgICAgICAgICAgIGNoICU9IGJhc2U7CiAgICAgICAgICAgICAgICAgYmFzZSAvPSAxMDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICpvdXRwKysgPSAnOyc7CiAgICAgICAgIH0KLSAgICAgICAgcmVzdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCIoT24pIiwgcmVzLCBlbmQpOwotICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKKyAgICAgICAgcmVzdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCIoTm4pIiwgcmVzLCBlbmQpOwogICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHJlc3R1cGxlOwogICAgIH0KQEAgLTY3MSw4NyArNjY1LDY1IEBACiAgICAgfQogfQogCi1zdGF0aWMgUHlfVU5JQ09ERSBoZXhkaWdpdHNbXSA9IHsKLSAgICAnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywKLSAgICAnOCcsICc5JywgJ2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJwotfTsKLQogUHlPYmplY3QgKlB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycyhQeU9iamVjdCAqZXhjKQogewotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSNkZWZpbmUgSVNfU1VSUk9HQVRFX1BBSVIocCwgZW5kKSBcCi0gICAgKCpwID49IDB4RDgwMCAmJiAqcCA8PSAweERCRkYgJiYgKHAgKyAxKSA8IGVuZCAmJiBcCi0gICAgICoocCArIDEpID49IDB4REMwMCAmJiAqKHAgKyAxKSA8PSAweERGRkYpCi0jZWxzZQotI2RlZmluZSBJU19TVVJST0dBVEVfUEFJUihwLCBlbmQpIDAKLSNlbmRpZgogICAgIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yKSkgewogICAgICAgICBQeU9iamVjdCAqcmVzdHVwbGU7CiAgICAgICAgIFB5T2JqZWN0ICpvYmplY3Q7CisgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgUHlfc3NpemVfdCBzdGFydDsKICAgICAgICAgUHlfc3NpemVfdCBlbmQ7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgICAgIFB5X1VOSUNPREUgKnN0YXJ0cDsKLSAgICAgICAgUHlfVU5JQ09ERSAqb3V0cDsKKyAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0cDsKICAgICAgICAgaW50IHJlc3NpemU7CisgICAgICAgIFB5X1VDUzQgYzsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kKGV4YywgJmVuZCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKCEob2JqZWN0ID0gUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0KGV4YykpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHN0YXJ0cCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG9iamVjdCk7Ci0gICAgICAgIGZvciAocCA9IHN0YXJ0cCtzdGFydCwgcmVzc2l6ZSA9IDA7IHAgPCBzdGFydHArZW5kOyArK3ApIHsKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgIGlmICgqcCA+PSAweDAwMDEwMDAwKQorICAgICAgICBmb3IgKGkgPSBzdGFydCwgcmVzc2l6ZSA9IDA7IGkgPCBlbmQ7ICsraSkgeworICAgICAgICAgICAgLyogb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgInJlYWR5IiAqLworICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKKyAgICAgICAgICAgIGlmIChjID49IDB4MTAwMDApIHsKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDErMSs4OwotICAgICAgICAgICAgZWxzZQotI2VuZGlmCi0gICAgICAgICAgICBpZiAoKnAgPj0gMHgxMDApIHsKLSAgICAgICAgICAgICAgICBpZiAoSVNfU1VSUk9HQVRFX1BBSVIocCwgc3RhcnRwK2VuZCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAxKzErODsKLSAgICAgICAgICAgICAgICAgICAgKytwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMSsxKzQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjID49IDB4MTAwKSB7CisgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAxKzErNDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDErMSsyOwogICAgICAgICB9Ci0gICAgICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCByZXNzaXplKTsKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX05ldyhyZXNzaXplLCAxMjcpOwogICAgICAgICBpZiAocmVzPT1OVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGZvciAocCA9IHN0YXJ0cCtzdGFydCwgb3V0cCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcyk7Ci0gICAgICAgICAgICBwIDwgc3RhcnRwK2VuZDsgKytwKSB7Ci0gICAgICAgICAgICBQeV9VQ1M0IGMgPSAoUHlfVUNTNCkgKnA7CisgICAgICAgIGZvciAoaSA9IHN0YXJ0LCBvdXRwID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKTsKKyAgICAgICAgICAgIGkgPCBlbmQ7ICsraSkgeworICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKICAgICAgICAgICAgICpvdXRwKysgPSAnXFwnOwotICAgICAgICAgICAgaWYgKElTX1NVUlJPR0FURV9QQUlSKHAsIHN0YXJ0cCtlbmQpKSB7Ci0gICAgICAgICAgICAgICAgYyA9ICgoKnAgJiAweDNGRikgPDwgMTApICsgKCoocCArIDEpICYgMHgzRkYpICsgMHgxMDAwMDsKLSAgICAgICAgICAgICAgICArK3A7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoYyA+PSAweDAwMDEwMDAwKSB7CiAgICAgICAgICAgICAgICAgKm91dHArKyA9ICdVJzsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj4yOCkmMHhmXTsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj4yNCkmMHhmXTsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj4yMCkmMHhmXTsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj4xNikmMHhmXTsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj4xMikmMHhmXTsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj44KSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjI4KSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjI0KSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjIwKSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjE2KSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjEyKSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjgpJjB4Zl07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjID49IDB4MTAwKSB7CiAgICAgICAgICAgICAgICAgKm91dHArKyA9ICd1JzsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj4xMikmMHhmXTsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj44KSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjEyKSYweGZdOworICAgICAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjgpJjB4Zl07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgKm91dHArKyA9ICd4JzsKLSAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbKGM+PjQpJjB4Zl07Ci0gICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzW2MmMHhmXTsKKyAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjQpJjB4Zl07CisgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzW2MmMHhmXTsKICAgICAgICAgfQogCi0gICAgICAgIHJlc3R1cGxlID0gUHlfQnVpbGRWYWx1ZSgiKE9uKSIsIHJlcywgZW5kKTsKLSAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgICAgIHJlc3R1cGxlID0gUHlfQnVpbGRWYWx1ZSgiKE5uKSIsIHJlcywgZW5kKTsKICAgICAgICAgUHlfREVDUkVGKG9iamVjdCk7CiAgICAgICAgIHJldHVybiByZXN0dXBsZTsKICAgICB9CkBAIC03NTksNyArNzMxLDYgQEAKICAgICAgICAgd3JvbmdfZXhjZXB0aW9uX3R5cGUoZXhjKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotI3VuZGVmIElTX1NVUlJPR0FURV9QQUlSCiB9CiAKIC8qIFRoaXMgaGFuZGxlciBpcyBkZWNsYXJlZCBzdGF0aWMgdW50aWwgc29tZW9uZSBkZW1vbnN0cmF0ZXMKQEAgLTc2OSwxMiArNzQwLDExIEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3R1cGxlOwogICAgIFB5T2JqZWN0ICpvYmplY3Q7CisgICAgUHlfc3NpemVfdCBpOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ7CiAgICAgUHlfc3NpemVfdCBlbmQ7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBpZiAoUHlPYmplY3RfSXNJbnN0YW5jZShleGMsIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcikpIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqcDsKLSAgICAgICAgUHlfVU5JQ09ERSAqc3RhcnRwOwogICAgICAgICBjaGFyICpvdXRwOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03ODIsMTUgKzc1MiwxNSBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICghKG9iamVjdCA9IFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdChleGMpKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBzdGFydHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmplY3QpOwogICAgICAgICByZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDMqKGVuZC1zdGFydCkpOwogICAgICAgICBpZiAoIXJlcykgewogICAgICAgICAgICAgUHlfREVDUkVGKG9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBvdXRwID0gUHlCeXRlc19Bc1N0cmluZyhyZXMpOwotICAgICAgICBmb3IgKHAgPSBzdGFydHArc3RhcnQ7IHAgPCBzdGFydHArZW5kOyBwKyspIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgY2ggPSAqcDsKKyAgICAgICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykgeworICAgICAgICAgICAgLyogb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgInJlYWR5IiAqLworICAgICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKICAgICAgICAgICAgIGlmIChjaCA8IDB4ZDgwMCB8fCBjaCA+IDB4ZGZmZikgewogICAgICAgICAgICAgICAgIC8qIE5vdCBhIHN1cnJvZ2F0ZSwgZmFpbCB3aXRoIG9yaWdpbmFsIGV4Y2VwdGlvbiAqLwogICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y2VwdGlvbkluc3RhbmNlX0NsYXNzKGV4YyksIGV4Yyk7CkBAIC04MDksNyArNzc5LDcgQEAKICAgICB9CiAgICAgZWxzZSBpZiAoUHlPYmplY3RfSXNJbnN0YW5jZShleGMsIFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcikpIHsKICAgICAgICAgdW5zaWduZWQgY2hhciAqcDsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9IDA7CisgICAgICAgIFB5X1VDUzQgY2ggPSAwOwogICAgICAgICBpZiAoUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICghKG9iamVjdCA9IFB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdChleGMpKSkKQEAgLTgzNiw3ICs4MDYsMTAgQEAKICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y2VwdGlvbkluc3RhbmNlX0NsYXNzKGV4YyksIGV4Yyk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKHUjbikiLCAmY2gsIDEsIHN0YXJ0KzMpOworICAgICAgICByZXMgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoY2gpOworICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihObikiLCByZXMsIHN0YXJ0KzMpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgd3JvbmdfZXhjZXB0aW9uX3R5cGUoZXhjKTsKQEAgLTg0OSwxMiArODIyLDExIEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3R1cGxlOwogICAgIFB5T2JqZWN0ICpvYmplY3Q7CisgICAgUHlfc3NpemVfdCBpOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ7CiAgICAgUHlfc3NpemVfdCBlbmQ7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBpZiAoUHlPYmplY3RfSXNJbnN0YW5jZShleGMsIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcikpIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqcDsKLSAgICAgICAgUHlfVU5JQ09ERSAqc3RhcnRwOwogICAgICAgICBjaGFyICpvdXRwOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC04NjIsMTUgKzgzNCwxNSBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICghKG9iamVjdCA9IFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdChleGMpKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBzdGFydHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmplY3QpOwogICAgICAgICByZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGVuZC1zdGFydCk7CiAgICAgICAgIGlmICghcmVzKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIG91dHAgPSBQeUJ5dGVzX0FzU3RyaW5nKHJlcyk7Ci0gICAgICAgIGZvciAocCA9IHN0YXJ0cCtzdGFydDsgcCA8IHN0YXJ0cCtlbmQ7IHArKykgewotICAgICAgICAgICAgUHlfVU5JQ09ERSBjaCA9ICpwOworICAgICAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICAvKiBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBiZSAicmVhZHkiICovCisgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmplY3QsIGkpOwogICAgICAgICAgICAgaWYgKGNoIDwgMHhkYzgwIHx8IGNoID4gMHhkY2ZmKSB7CiAgICAgICAgICAgICAgICAgLyogTm90IGEgVVRGLThiIHN1cnJvZ2F0ZSwgZmFpbCB3aXRoIG9yaWdpbmFsIGV4Y2VwdGlvbiAqLwogICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y2VwdGlvbkluc3RhbmNlX0NsYXNzKGV4YyksIGV4Yyk7CkBAIC04ODYsOCArODU4LDkgQEAKICAgICAgICAgcmV0dXJuIHJlc3R1cGxlOwogICAgIH0KICAgICBlbHNlIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZURlY29kZUVycm9yKSkgeworICAgICAgICBQeU9iamVjdCAqc3RyOwogICAgICAgICB1bnNpZ25lZCBjaGFyICpwOwotICAgICAgICBQeV9VTklDT0RFIGNoWzRdOyAvKiBkZWNvZGUgdXAgdG8gNCBiYWQgYnl0ZXMuICovCisgICAgICAgIFB5X1VDUzIgY2hbNF07IC8qIGRlY29kZSB1cCB0byA0IGJhZCBieXRlcy4gKi8KICAgICAgICAgaW50IGNvbnN1bWVkID0gMDsKICAgICAgICAgaWYgKFB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtOTEyLDcgKzg4NSwxMCBAQAogICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2xhc3MoZXhjKSwgZXhjKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIodSNuKSIsIGNoLCBjb25zdW1lZCwgc3RhcnQrY29uc3VtZWQpOworICAgICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV8yQllURV9LSU5ELCBjaCwgY29uc3VtZWQpOworICAgICAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihObikiLCBzdHIsIHN0YXJ0K2NvbnN1bWVkKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHdyb25nX2V4Y2VwdGlvbl90eXBlKGV4Yyk7CkBAIC0xMDQ5LDcgKzEwMjUsNyBAQAogICAgIGludGVycC0+Y29kZWNfZXJyb3JfcmVnaXN0cnkgPSBQeURpY3RfTmV3KCk7CiAKICAgICBpZiAoaW50ZXJwLT5jb2RlY19lcnJvcl9yZWdpc3RyeSkgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKG1ldGhvZHMpL3NpemVvZihtZXRob2RzWzBdKTsgKytpKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeV9BUlJBWV9MRU5HVEgobWV0aG9kcyk7ICsraSkgewogICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBQeUNGdW5jdGlvbl9OZXcoJm1ldGhvZHNbaV0uZGVmLCBOVUxMKTsKICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICBpZiAoIWZ1bmMpCmRpZmYgLS1naXQgYS9QeXRob24vY29tcGlsZS5jIGIvUHl0aG9uL2NvbXBpbGUuYwppbmRleCBkNmY2NDBmLi4zY2Y3MWVmIDEwMDY0NAotLS0gYS9QeXRob24vY29tcGlsZS5jCisrKyBiL1B5dGhvbi9jb21waWxlLmMKQEAgLTkwLDYgKzkwLDEzIEBACiAgICAgYmFzaWNibG9jayAqZmJfYmxvY2s7CiB9OwogCitlbnVtIHsKKyAgICBDT01QSUxFUl9TQ09QRV9NT0RVTEUsCisgICAgQ09NUElMRVJfU0NPUEVfQ0xBU1MsCisgICAgQ09NUElMRVJfU0NPUEVfRlVOQ1RJT04sCisgICAgQ09NUElMRVJfU0NPUEVfQ09NUFJFSEVOU0lPTiwKK307CisKIC8qIFRoZSBmb2xsb3dpbmcgaXRlbXMgY2hhbmdlIG9uIGVudHJ5IGFuZCBleGl0IG9mIGNvZGUgYmxvY2tzLgogICAgVGhleSBtdXN0IGJlIHNhdmVkIGFuZCByZXN0b3JlZCB3aGVuIHJldHVybmluZyB0byBhIGJsb2NrLgogKi8KQEAgLTk3LDYgKzEwNCw5IEBACiAgICAgUHlTVEVudHJ5T2JqZWN0ICp1X3N0ZTsKIAogICAgIFB5T2JqZWN0ICp1X25hbWU7CisgICAgUHlPYmplY3QgKnVfcXVhbG5hbWU7ICAvKiBkb3Qtc2VwYXJhdGVkIHF1YWxpZmllZCBuYW1lIChsYXp5KSAqLworICAgIGludCB1X3Njb3BlX3R5cGU7CisKICAgICAvKiBUaGUgZm9sbG93aW5nIGZpZWxkcyBhcmUgZGljdHMgdGhhdCBtYXAgb2JqZWN0cyB0bwogICAgICAgIHRoZSBpbmRleCBvZiB0aGVtIGluIGNvX1hYWC4gICAgICBUaGUgaW5kZXggaXMgdXNlZCBhcwogICAgICAgIHRoZSBhcmd1bWVudCBmb3Igb3Bjb2RlcyB0aGF0IHJlZmVyIHRvIHRob3NlIGNvbGxlY3Rpb25zLgpAQCAtMTMxLDEwICsxNDEsMTYgQEAKIFRoZSB1IHBvaW50ZXIgcG9pbnRzIHRvIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQsIHdoaWxlIHVuaXRzCiBmb3IgZW5jbG9zaW5nIGJsb2NrcyBhcmUgc3RvcmVkIGluIGNfc3RhY2suICAgICBUaGUgdSBhbmQgY19zdGFjayBhcmUKIG1hbmFnZWQgYnkgY29tcGlsZXJfZW50ZXJfc2NvcGUoKSBhbmQgY29tcGlsZXJfZXhpdF9zY29wZSgpLgorCitOb3RlIHRoYXQgd2UgZG9uJ3QgdHJhY2sgcmVjdXJzaW9uIGxldmVscyBkdXJpbmcgY29tcGlsYXRpb24gLSB0aGUKK3Rhc2sgb2YgZGV0ZWN0aW5nIGFuZCByZWplY3RpbmcgZXhjZXNzaXZlIGxldmVscyBvZiBuZXN0aW5nIGlzCitoYW5kbGVkIGJ5IHRoZSBzeW1ib2wgYW5hbHlzaXMgcGFzcy4KKwogKi8KIAogc3RydWN0IGNvbXBpbGVyIHsKICAgICBjb25zdCBjaGFyICpjX2ZpbGVuYW1lOworICAgIFB5T2JqZWN0ICpjX2ZpbGVuYW1lX29iajsKICAgICBzdHJ1Y3Qgc3ltdGFibGUgKmNfc3Q7CiAgICAgUHlGdXR1cmVGZWF0dXJlcyAqY19mdXR1cmU7IC8qIHBvaW50ZXIgdG8gbW9kdWxlJ3MgX19mdXR1cmVfXyAqLwogICAgIFB5Q29tcGlsZXJGbGFncyAqY19mbGFnczsKQEAgLTE0OCw3ICsxNjQsNyBAQAogICAgIFB5QXJlbmEgKmNfYXJlbmE7ICAgICAgICAgICAgLyogcG9pbnRlciB0byBtZW1vcnkgYWxsb2NhdGlvbiBhcmVuYSAqLwogfTsKIAotc3RhdGljIGludCBjb21waWxlcl9lbnRlcl9zY29wZShzdHJ1Y3QgY29tcGlsZXIgKiwgaWRlbnRpZmllciwgdm9pZCAqLCBpbnQpOworc3RhdGljIGludCBjb21waWxlcl9lbnRlcl9zY29wZShzdHJ1Y3QgY29tcGlsZXIgKiwgaWRlbnRpZmllciwgaW50LCB2b2lkICosIGludCk7CiBzdGF0aWMgdm9pZCBjb21waWxlcl9mcmVlKHN0cnVjdCBjb21waWxlciAqKTsKIHN0YXRpYyBiYXNpY2Jsb2NrICpjb21waWxlcl9uZXdfYmxvY2soc3RydWN0IGNvbXBpbGVyICopOwogc3RhdGljIGludCBjb21waWxlcl9uZXh0X2luc3RyKHN0cnVjdCBjb21waWxlciAqLCBiYXNpY2Jsb2NrICopOwpAQCAtMTc4LDEyICsxOTQsMTMgQEAKIHN0YXRpYyBpbnQgaW5wbGFjZV9iaW5vcChzdHJ1Y3QgY29tcGlsZXIgKiwgb3BlcmF0b3JfdHkpOwogc3RhdGljIGludCBleHByX2NvbnN0YW50KHN0cnVjdCBjb21waWxlciAqLCBleHByX3R5KTsKIAotc3RhdGljIGludCBjb21waWxlcl93aXRoKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5KTsKK3N0YXRpYyBpbnQgY29tcGlsZXJfd2l0aChzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSwgaW50KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfY2FsbF9oZWxwZXIoc3RydWN0IGNvbXBpbGVyICpjLCBpbnQgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICprZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBzdGFyYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBrd2FyZ3MpOworc3RhdGljIGludCBjb21waWxlcl90cnlfZXhjZXB0KHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5KTsKIAogc3RhdGljIFB5Q29kZU9iamVjdCAqYXNzZW1ibGUoc3RydWN0IGNvbXBpbGVyICosIGludCBhZGROb25lKTsKIHN0YXRpYyBQeU9iamVjdCAqX19kb2NfXzsKQEAgLTE5NSwxNiArMjEyLDE3IEBACiB7CiAgICAgLyogTmFtZSBtYW5nbGluZzogX19wcml2YXRlIGJlY29tZXMgX2NsYXNzbmFtZV9fcHJpdmF0ZS4KICAgICAgICBUaGlzIGlzIGluZGVwZW5kZW50IGZyb20gaG93IHRoZSBuYW1lIGlzIHVzZWQuICovCi0gICAgY29uc3QgUHlfVU5JQ09ERSAqcCwgKm5hbWUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShpZGVudCk7Ci0gICAgUHlfVU5JQ09ERSAqYnVmZmVyOwotICAgIHNpemVfdCBubGVuLCBwbGVuOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgc2l6ZV90IG5sZW4sIHBsZW4sIGlwcml2OworICAgIFB5X1VDUzQgbWF4Y2hhcjsKICAgICBpZiAocHJpdmF0ZW9iaiA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2socHJpdmF0ZW9iaikgfHwKLSAgICAgICAgbmFtZSA9PSBOVUxMIHx8IG5hbWVbMF0gIT0gJ18nIHx8IG5hbWVbMV0gIT0gJ18nKSB7CisgICAgICAgIFB5VW5pY29kZV9SRUFEX0NIQVIoaWRlbnQsIDApICE9ICdfJyB8fAorICAgICAgICBQeVVuaWNvZGVfUkVBRF9DSEFSKGlkZW50LCAxKSAhPSAnXycpIHsKICAgICAgICAgUHlfSU5DUkVGKGlkZW50KTsKICAgICAgICAgcmV0dXJuIGlkZW50OwogICAgIH0KLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocHJpdmF0ZW9iaik7Ci0gICAgbmxlbiA9IFB5X1VOSUNPREVfc3RybGVuKG5hbWUpOworICAgIG5sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpZGVudCk7CisgICAgcGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHByaXZhdGVvYmopOwogICAgIC8qIERvbid0IG1hbmdsZSBfX2lkX18gb3IgbmFtZXMgd2l0aCBkb3RzLgogCiAgICAgICAgVGhlIG9ubHkgdGltZSBhIG5hbWUgd2l0aCBhIGRvdCBjYW4gb2NjdXIgaXMgd2hlbgpAQCAtMjE0LDMyICsyMzIsNDQgQEAKICAgICAgICBUT0RPKGpoeWx0b24pOiBEZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIHN1cHBvcnQKICAgICAgICBtYW5nbGluZyBvZiB0aGUgbW9kdWxlIG5hbWUsIGUuZy4gX19NLlguCiAgICAgKi8KLSAgICBpZiAoKG5hbWVbbmxlbi0xXSA9PSAnXycgJiYgbmFtZVtubGVuLTJdID09ICdfJykKLSAgICAgICAgfHwgUHlfVU5JQ09ERV9zdHJjaHIobmFtZSwgJy4nKSkgeworICAgIGlmICgoUHlVbmljb2RlX1JFQURfQ0hBUihpZGVudCwgbmxlbi0xKSA9PSAnXycgJiYKKyAgICAgICAgIFB5VW5pY29kZV9SRUFEX0NIQVIoaWRlbnQsIG5sZW4tMikgPT0gJ18nKSB8fAorICAgICAgICBQeVVuaWNvZGVfRmluZENoYXIoaWRlbnQsICcuJywgMCwgbmxlbiwgMSkgIT0gLTEpIHsKICAgICAgICAgUHlfSU5DUkVGKGlkZW50KTsKICAgICAgICAgcmV0dXJuIGlkZW50OyAvKiBEb24ndCBtYW5nbGUgX193aGF0ZXZlcl9fICovCiAgICAgfQogICAgIC8qIFN0cmlwIGxlYWRpbmcgdW5kZXJzY29yZXMgZnJvbSBjbGFzcyBuYW1lICovCi0gICAgd2hpbGUgKCpwID09ICdfJykKLSAgICAgICAgcCsrOwotICAgIGlmICgqcCA9PSAwKSB7CisgICAgaXByaXYgPSAwOworICAgIHdoaWxlIChQeVVuaWNvZGVfUkVBRF9DSEFSKHByaXZhdGVvYmosIGlwcml2KSA9PSAnXycpCisgICAgICAgIGlwcml2Kys7CisgICAgaWYgKGlwcml2ID09IHBsZW4pIHsKICAgICAgICAgUHlfSU5DUkVGKGlkZW50KTsKICAgICAgICAgcmV0dXJuIGlkZW50OyAvKiBEb24ndCBtYW5nbGUgaWYgY2xhc3MgaXMganVzdCB1bmRlcnNjb3JlcyAqLwogICAgIH0KLSAgICBwbGVuID0gUHlfVU5JQ09ERV9zdHJsZW4ocCk7CisgICAgcGxlbiAtPSBpcHJpdjsKIAogICAgIGFzc2VydCgxIDw9IFBZX1NTSVpFX1RfTUFYIC0gbmxlbik7CiAgICAgYXNzZXJ0KDEgKyBubGVuIDw9IFBZX1NTSVpFX1RfTUFYIC0gcGxlbik7CiAKLSAgICBpZGVudCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAxICsgbmxlbiArIHBsZW4pOwotICAgIGlmICghaWRlbnQpCisgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShpZGVudCk7CisgICAgaWYgKFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShwcml2YXRlb2JqKSA+IG1heGNoYXIpCisgICAgICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUocHJpdmF0ZW9iaik7CisKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfTmV3KDEgKyBubGVuICsgcGxlbiwgbWF4Y2hhcik7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiAwOwotICAgIC8qIGlkZW50ID0gIl8iICsgcFs6cGxlbl0gKyBuYW1lICMgaS5lLiAxK3BsZW4rbmxlbiBieXRlcyAqLwotICAgIGJ1ZmZlciA9IFB5VW5pY29kZV9BU19VTklDT0RFKGlkZW50KTsKLSAgICBidWZmZXJbMF0gPSAnXyc7Ci0gICAgUHlfVU5JQ09ERV9zdHJuY3B5KGJ1ZmZlcisxLCBwLCBwbGVuKTsKLSAgICBQeV9VTklDT0RFX3N0cmNweShidWZmZXIrMStwbGVuLCBuYW1lKTsKLSAgICByZXR1cm4gaWRlbnQ7CisgICAgLyogaWRlbnQgPSAiXyIgKyBwcml2W2lwcml2Ol0gKyBpZGVudCAjIGkuZS4gMStwbGVuK25sZW4gYnl0ZXMgKi8KKyAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlX0tJTkQocmVzdWx0KSwgUHlVbmljb2RlX0RBVEEocmVzdWx0KSwgMCwgJ18nKTsKKyAgICBpZiAoUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKHJlc3VsdCwgMSwgcHJpdmF0ZW9iaiwgaXByaXYsIHBsZW4pIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfQ29weUNoYXJhY3RlcnMocmVzdWx0LCBwbGVuKzEsIGlkZW50LCAwLCBubGVuKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlc3VsdCwgMSkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTI3Miw2ICszMDIsOSBAQAogICAgIGlmICghY29tcGlsZXJfaW5pdCgmYykpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGMuY19maWxlbmFtZSA9IGZpbGVuYW1lOworICAgIGMuY19maWxlbmFtZV9vYmogPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGZpbGVuYW1lKTsKKyAgICBpZiAoIWMuY19maWxlbmFtZV9vYmopCisgICAgICAgIGdvdG8gZmluYWxseTsKICAgICBjLmNfYXJlbmEgPSBhcmVuYTsKICAgICBjLmNfZnV0dXJlID0gUHlGdXR1cmVfRnJvbUFTVChtb2QsIGZpbGVuYW1lKTsKICAgICBpZiAoYy5jX2Z1dHVyZSA9PSBOVUxMKQpAQCAtMzI0LDYgKzM1Nyw4IEBACiAgICAgICAgIFB5U3ltdGFibGVfRnJlZShjLT5jX3N0KTsKICAgICBpZiAoYy0+Y19mdXR1cmUpCiAgICAgICAgIFB5T2JqZWN0X0ZyZWUoYy0+Y19mdXR1cmUpOworICAgIGlmIChjLT5jX2ZpbGVuYW1lX29iaikKKyAgICAgICAgUHlfREVDUkVGKGMtPmNfZmlsZW5hbWVfb2JqKTsKICAgICBQeV9ERUNSRUYoYy0+Y19zdGFjayk7CiB9CiAKQEAgLTQ1OCw2ICs0OTMsNyBAQAogICAgIH0KICAgICBQeV9DTEVBUih1LT51X3N0ZSk7CiAgICAgUHlfQ0xFQVIodS0+dV9uYW1lKTsKKyAgICBQeV9DTEVBUih1LT51X3F1YWxuYW1lKTsKICAgICBQeV9DTEVBUih1LT51X2NvbnN0cyk7CiAgICAgUHlfQ0xFQVIodS0+dV9uYW1lcyk7CiAgICAgUHlfQ0xFQVIodS0+dV92YXJuYW1lcyk7CkBAIC00NjgsOCArNTA0LDggQEAKIH0KIAogc3RhdGljIGludAotY29tcGlsZXJfZW50ZXJfc2NvcGUoc3RydWN0IGNvbXBpbGVyICpjLCBpZGVudGlmaWVyIG5hbWUsIHZvaWQgKmtleSwKLSAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8pCitjb21waWxlcl9lbnRlcl9zY29wZShzdHJ1Y3QgY29tcGlsZXIgKmMsIGlkZW50aWZpZXIgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIGludCBzY29wZV90eXBlLCB2b2lkICprZXksIGludCBsaW5lbm8pCiB7CiAgICAgc3RydWN0IGNvbXBpbGVyX3VuaXQgKnU7CiAKQEAgLTQ4MCw2ICs1MTYsNyBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgbWVtc2V0KHUsIDAsIHNpemVvZihzdHJ1Y3QgY29tcGlsZXJfdW5pdCkpOworICAgIHUtPnVfc2NvcGVfdHlwZSA9IHNjb3BlX3R5cGU7CiAgICAgdS0+dV9hcmdjb3VudCA9IDA7CiAgICAgdS0+dV9rd29ubHlhcmdjb3VudCA9IDA7CiAgICAgdS0+dV9zdGUgPSBQeVN5bXRhYmxlX0xvb2t1cChjLT5jX3N0LCBrZXkpOwpAQCAtNTY3LDYgKzYwNCw1OSBAQAogCiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitjb21waWxlcl9zY29wZV9xdWFsbmFtZShzdHJ1Y3QgY29tcGlsZXIgKmMpCit7CisgICAgUHlfc3NpemVfdCBzdGFja19zaXplLCBpOworICAgIF9QeV9zdGF0aWNfc3RyaW5nKGRvdCwgIi4iKTsKKyAgICBfUHlfc3RhdGljX3N0cmluZyhsb2NhbHMsICI8bG9jYWxzPiIpOworICAgIHN0cnVjdCBjb21waWxlcl91bml0ICp1OworICAgIFB5T2JqZWN0ICpjYXBzdWxlLCAqbmFtZSwgKnNlcSwgKmRvdF9zdHIsICpsb2NhbHNfc3RyOworCisgICAgdSA9IGMtPnU7CisgICAgaWYgKHUtPnVfcXVhbG5hbWUgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYodS0+dV9xdWFsbmFtZSk7CisgICAgICAgIHJldHVybiB1LT51X3F1YWxuYW1lOworICAgIH0KKworICAgIHNlcSA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKHNlcSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN0YWNrX3NpemUgPSBQeUxpc3RfR0VUX1NJWkUoYy0+Y19zdGFjayk7CisgICAgZm9yIChpID0gMDsgaSA8IHN0YWNrX3NpemU7IGkrKykgeworICAgICAgICBjYXBzdWxlID0gUHlMaXN0X0dFVF9JVEVNKGMtPmNfc3RhY2ssIGkpOworICAgICAgICB1ID0gKHN0cnVjdCBjb21waWxlcl91bml0ICopUHlDYXBzdWxlX0dldFBvaW50ZXIoY2Fwc3VsZSwgQ09NUElMRVJfQ0FQU1VMRV9OQU1FX0NPTVBJTEVSX1VOSVQpOworICAgICAgICBhc3NlcnQodSk7CisgICAgICAgIGlmICh1LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfTU9EVUxFKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKHNlcSwgdS0+dV9uYW1lKSkKKyAgICAgICAgICAgIGdvdG8gX2Vycm9yOworICAgICAgICBpZiAodS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0ZVTkNUSU9OKSB7CisgICAgICAgICAgICBsb2NhbHNfc3RyID0gX1B5VW5pY29kZV9Gcm9tSWQoJmxvY2Fscyk7CisgICAgICAgICAgICBpZiAobG9jYWxzX3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gX2Vycm9yOworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoc2VxLCBsb2NhbHNfc3RyKSkKKyAgICAgICAgICAgICAgICBnb3RvIF9lcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICB1ID0gYy0+dTsKKyAgICBpZiAoUHlMaXN0X0FwcGVuZChzZXEsIHUtPnVfbmFtZSkpCisgICAgICAgIGdvdG8gX2Vycm9yOworICAgIGRvdF9zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmZG90KTsKKyAgICBpZiAoZG90X3N0ciA9PSBOVUxMKQorICAgICAgICBnb3RvIF9lcnJvcjsKKyAgICBuYW1lID0gUHlVbmljb2RlX0pvaW4oZG90X3N0ciwgc2VxKTsKKyAgICBQeV9ERUNSRUYoc2VxKTsKKyAgICB1LT51X3F1YWxuYW1lID0gbmFtZTsKKyAgICBQeV9YSU5DUkVGKG5hbWUpOworICAgIHJldHVybiBuYW1lOworCitfZXJyb3I6CisgICAgUHlfWERFQ1JFRihzZXEpOworICAgIHJldHVybiBOVUxMOworfQorCiAvKiBBbGxvY2F0ZSBhIG5ldyBibG9jayBhbmQgcmV0dXJuIGEgcG9pbnRlciB0byBpdC4KICAgIFJldHVybnMgTlVMTCBvbiBlcnJvci4KICovCkBAIC03NzcsNyArODY3LDggQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgY2FzZSBZSUVMRF9WQUxVRToKICAgICAgICAgICAgIHJldHVybiAwOwotCisgICAgICAgIGNhc2UgWUlFTERfRlJPTToKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgY2FzZSBQT1BfQkxPQ0s6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY2FzZSBQT1BfRVhDRVBUOgpAQCAtODYzLDkgKzk1NCw5IEBACiAgICAgICAgIGNhc2UgQ0FMTF9GVU5DVElPTl9WQVJfS1c6CiAgICAgICAgICAgICByZXR1cm4gLU5BUkdTKG9wYXJnKS0yOwogICAgICAgICBjYXNlIE1BS0VfRlVOQ1RJT046Ci0gICAgICAgICAgICByZXR1cm4gLU5BUkdTKG9wYXJnKSAtICgob3BhcmcgPj4gMTYpICYgMHhmZmZmKTsKKyAgICAgICAgICAgIHJldHVybiAtMSAtTkFSR1Mob3BhcmcpIC0gKChvcGFyZyA+PiAxNikgJiAweGZmZmYpOwogICAgICAgICBjYXNlIE1BS0VfQ0xPU1VSRToKLSAgICAgICAgICAgIHJldHVybiAtMSAtIE5BUkdTKG9wYXJnKSAtICgob3BhcmcgPj4gMTYpICYgMHhmZmZmKTsKKyAgICAgICAgICAgIHJldHVybiAtMiAtIE5BUkdTKG9wYXJnKSAtICgob3BhcmcgPj4gMTYpICYgMHhmZmZmKTsKICN1bmRlZiBOQVJHUwogICAgICAgICBjYXNlIEJVSUxEX1NMSUNFOgogICAgICAgICAgICAgaWYgKG9wYXJnID09IDMpCkBAIC0xMTk1LDcgKzEyODYsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIC8qIFVzZSAwIGZvciBmaXJzdGxpbmVubyBpbml0aWFsbHksIHdpbGwgZml4dXAgaW4gYXNzZW1ibGUoKS4gKi8KLSAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG1vZHVsZSwgbW9kLCAwKSkKKyAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG1vZHVsZSwgQ09NUElMRVJfU0NPUEVfTU9EVUxFLCBtb2QsIDApKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzd2l0Y2ggKG1vZC0+a2luZCkgewogICAgIGNhc2UgTW9kdWxlX2tpbmQ6CkBAIC0xMjcxLDExICsxMzYyLDE1IEBACiB9CiAKIHN0YXRpYyBpbnQKLWNvbXBpbGVyX21ha2VfY2xvc3VyZShzdHJ1Y3QgY29tcGlsZXIgKmMsIFB5Q29kZU9iamVjdCAqY28sIGludCBhcmdzKQorY29tcGlsZXJfbWFrZV9jbG9zdXJlKHN0cnVjdCBjb21waWxlciAqYywgUHlDb2RlT2JqZWN0ICpjbywgaW50IGFyZ3MsIFB5T2JqZWN0ICpxdWFsbmFtZSkKIHsKICAgICBpbnQgaSwgZnJlZSA9IFB5Q29kZV9HZXROdW1GcmVlKGNvKTsKKyAgICBpZiAocXVhbG5hbWUgPT0gTlVMTCkKKyAgICAgICAgcXVhbG5hbWUgPSBjby0+Y29fbmFtZTsKKwogICAgIGlmIChmcmVlID09IDApIHsKICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCAoUHlPYmplY3QqKWNvLCBjb25zdHMpOworICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIHF1YWxuYW1lLCBjb25zdHMpOwogICAgICAgICBBRERPUF9JKGMsIE1BS0VfRlVOQ1RJT04sIGFyZ3MpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CkBAIC0xMzEyLDYgKzE0MDcsNyBAQAogICAgIH0KICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCBmcmVlKTsKICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIChQeU9iamVjdCopY28sIGNvbnN0cyk7CisgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBxdWFsbmFtZSwgY29uc3RzKTsKICAgICBBRERPUF9JKGMsIE1BS0VfQ0xPU1VSRSwgYXJncyk7CiAgICAgcmV0dXJuIDE7CiB9CkBAIC0xNDU3LDcgKzE1NTMsNyBAQAogY29tcGlsZXJfZnVuY3Rpb24oc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMpCiB7CiAgICAgUHlDb2RlT2JqZWN0ICpjbzsKLSAgICBQeU9iamVjdCAqZmlyc3RfY29uc3QgPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpxdWFsbmFtZSwgKmZpcnN0X2NvbnN0ID0gUHlfTm9uZTsKICAgICBhcmd1bWVudHNfdHkgYXJncyA9IHMtPnYuRnVuY3Rpb25EZWYuYXJnczsKICAgICBleHByX3R5IHJldHVybnMgPSBzLT52LkZ1bmN0aW9uRGVmLnJldHVybnM7CiAgICAgYXNkbF9zZXEqIGRlY29zID0gcy0+di5GdW5jdGlvbkRlZi5kZWNvcmF0b3JfbGlzdDsKQEAgLTE0ODMsNyArMTU3OSw4IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIGFzc2VydCgobnVtX2Fubm90YXRpb25zICYgMHhGRkZGKSA9PSBudW1fYW5ub3RhdGlvbnMpOwogCi0gICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBzLT52LkZ1bmN0aW9uRGVmLm5hbWUsICh2b2lkICopcywKKyAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIHMtPnYuRnVuY3Rpb25EZWYubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTVBJTEVSX1NDT1BFX0ZVTkNUSU9OLCAodm9pZCAqKXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5saW5lbm8pKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTUwNSwxNCArMTYwMiwxOSBAQAogICAgICAgICBWSVNJVF9JTl9TQ09QRShjLCBzdG10LCBzdCk7CiAgICAgfQogICAgIGNvID0gYXNzZW1ibGUoYywgMSk7CisgICAgcXVhbG5hbWUgPSBjb21waWxlcl9zY29wZV9xdWFsbmFtZShjKTsKICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOwotICAgIGlmIChjbyA9PSBOVUxMKQorICAgIGlmIChxdWFsbmFtZSA9PSBOVUxMIHx8IGNvID09IE5VTEwpIHsKKyAgICAgICAgUHlfWERFQ1JFRihxdWFsbmFtZSk7CisgICAgICAgIFB5X1hERUNSRUYoY28pOwogICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAKICAgICBhcmdsZW5ndGggPSBhc2RsX3NlcV9MRU4oYXJncy0+ZGVmYXVsdHMpOwogICAgIGFyZ2xlbmd0aCB8PSBrd19kZWZhdWx0X2NvdW50IDw8IDg7CiAgICAgYXJnbGVuZ3RoIHw9IG51bV9hbm5vdGF0aW9ucyA8PCAxNjsKLSAgICBjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIGFyZ2xlbmd0aCk7CisgICAgY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCBhcmdsZW5ndGgsIHF1YWxuYW1lKTsKKyAgICBQeV9ERUNSRUYocXVhbG5hbWUpOwogICAgIFB5X0RFQ1JFRihjbyk7CiAKICAgICAvKiBkZWNvcmF0b3JzICovCkBAIC0xNTQ3LDcgKzE2NDksOCBAQAogICAgICovCiAKICAgICAvKiAxLiBjb21waWxlIHRoZSBjbGFzcyBib2R5IGludG8gYSBjb2RlIG9iamVjdCAqLwotICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgcy0+di5DbGFzc0RlZi5uYW1lLCAodm9pZCAqKXMsIHMtPmxpbmVubykpCisgICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBzLT52LkNsYXNzRGVmLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT01QSUxFUl9TQ09QRV9DTEFTUywgKHZvaWQgKilzLCBzLT5saW5lbm8pKQogICAgICAgICByZXR1cm4gMDsKICAgICAvKiB0aGlzIGJsb2NrIHJlcHJlc2VudHMgd2hhdCB3ZSBkbyBpbiB0aGUgbmV3IHNjb3BlICovCiAgICAgewpAQCAtMTU3Nyw2ICsxNjgwLDIxIEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgLyogc3RvcmUgdGhlIF9fcXVhbG5hbWVfXyAqLworICAgICAgICBzdHIgPSBjb21waWxlcl9zY29wZV9xdWFsbmFtZShjKTsKKyAgICAgICAgaWYgKCFzdHIpIHsKKyAgICAgICAgICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIHN0ciwgY29uc3RzKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgIHN0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX3F1YWxuYW1lX18iKTsKKyAgICAgICAgaWYgKCFzdHIgfHwgIWNvbXBpbGVyX25hbWVvcChjLCBzdHIsIFN0b3JlKSkgeworICAgICAgICAgICAgUHlfWERFQ1JFRihzdHIpOworICAgICAgICAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICAvKiBjb21waWxlIHRoZSBib2R5IHByb3BlciAqLwogICAgICAgICBpZiAoIWNvbXBpbGVyX2JvZHkoYywgcy0+di5DbGFzc0RlZi5ib2R5KSkgewogICAgICAgICAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKQEAgLTE2MTMsNyArMTczMSw3IEBACiAgICAgQURET1AoYywgTE9BRF9CVUlMRF9DTEFTUyk7CiAKICAgICAvKiAzLiBsb2FkIGEgZnVuY3Rpb24gKG9yIGNsb3N1cmUpIG1hZGUgZnJvbSB0aGUgY29kZSBvYmplY3QgKi8KLSAgICBjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIDApOworICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgMCwgTlVMTCk7CiAgICAgUHlfREVDUkVGKGNvKTsKIAogICAgIC8qIDQuIGxvYWQgY2xhc3MgbmFtZSAqLwpAQCAtMTY2NCw2ICsxNzgyLDcgQEAKIGNvbXBpbGVyX2xhbWJkYShzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSkKIHsKICAgICBQeUNvZGVPYmplY3QgKmNvOworICAgIFB5T2JqZWN0ICpxdWFsbmFtZTsKICAgICBzdGF0aWMgaWRlbnRpZmllciBuYW1lOwogICAgIGludCBrd19kZWZhdWx0X2NvdW50ID0gMCwgYXJnbGVuZ3RoOwogICAgIGFyZ3VtZW50c190eSBhcmdzID0gZS0+di5MYW1iZGEuYXJnczsKQEAgLTE2ODMsNyArMTgwMiw4IEBACiAgICAgfQogICAgIGlmIChhcmdzLT5kZWZhdWx0cykKICAgICAgICAgVklTSVRfU0VRKGMsIGV4cHIsIGFyZ3MtPmRlZmF1bHRzKTsKLSAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG5hbWUsICh2b2lkICopZSwgZS0+bGluZW5vKSkKKyAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG5hbWUsIENPTVBJTEVSX1NDT1BFX0ZVTkNUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKillLCBlLT5saW5lbm8pKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8qIE1ha2UgTm9uZSB0aGUgZmlyc3QgY29uc3RhbnQsIHNvIHRoZSBsYW1iZGEgY2FuJ3QgaGF2ZSBhCkBAIC0xNzAxLDEzICsxODIxLDE1IEBACiAgICAgICAgIEFERE9QX0lOX1NDT1BFKGMsIFJFVFVSTl9WQUxVRSk7CiAgICAgfQogICAgIGNvID0gYXNzZW1ibGUoYywgMSk7CisgICAgcXVhbG5hbWUgPSBjb21waWxlcl9zY29wZV9xdWFsbmFtZShjKTsKICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOwotICAgIGlmIChjbyA9PSBOVUxMKQorICAgIGlmIChxdWFsbmFtZSA9PSBOVUxMIHx8IGNvID09IE5VTEwpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgYXJnbGVuZ3RoID0gYXNkbF9zZXFfTEVOKGFyZ3MtPmRlZmF1bHRzKTsKICAgICBhcmdsZW5ndGggfD0ga3dfZGVmYXVsdF9jb3VudCA8PCA4OwotICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgYXJnbGVuZ3RoKTsKKyAgICBjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIGFyZ2xlbmd0aCwgcXVhbG5hbWUpOworICAgIFB5X0RFQ1JFRihxdWFsbmFtZSk7CiAgICAgUHlfREVDUkVGKGNvKTsKIAogICAgIHJldHVybiAxOwpAQCAtMTkxNiw3ICsyMDM4LDEzIEBACiAgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgYm9keSk7CiAgICAgaWYgKCFjb21waWxlcl9wdXNoX2ZibG9jayhjLCBGSU5BTExZX1RSWSwgYm9keSkpCiAgICAgICAgIHJldHVybiAwOwotICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LlRyeUZpbmFsbHkuYm9keSk7CisgICAgaWYgKHMtPnYuVHJ5LmhhbmRsZXJzICYmIGFzZGxfc2VxX0xFTihzLT52LlRyeS5oYW5kbGVycykpIHsKKyAgICAgICAgaWYgKCFjb21waWxlcl90cnlfZXhjZXB0KGMsIHMpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5UcnkuYm9keSk7CisgICAgfQogICAgIEFERE9QKGMsIFBPUF9CTE9DSyk7CiAgICAgY29tcGlsZXJfcG9wX2ZibG9jayhjLCBGSU5BTExZX1RSWSwgYm9keSk7CiAKQEAgLTE5MjQsNyArMjA1Miw3IEBACiAgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgZW5kKTsKICAgICBpZiAoIWNvbXBpbGVyX3B1c2hfZmJsb2NrKGMsIEZJTkFMTFlfRU5ELCBlbmQpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5UcnlGaW5hbGx5LmZpbmFsYm9keSk7CisgICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuVHJ5LmZpbmFsYm9keSk7CiAgICAgQURET1AoYywgRU5EX0ZJTkFMTFkpOwogICAgIGNvbXBpbGVyX3BvcF9mYmxvY2soYywgRklOQUxMWV9FTkQsIGVuZCk7CiAKQEAgLTE5NzgsMTUgKzIxMDYsMTUgQEAKICAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBib2R5KTsKICAgICBpZiAoIWNvbXBpbGVyX3B1c2hfZmJsb2NrKGMsIEVYQ0VQVCwgYm9keSkpCiAgICAgICAgIHJldHVybiAwOwotICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LlRyeUV4Y2VwdC5ib2R5KTsKKyAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5UcnkuYm9keSk7CiAgICAgQURET1AoYywgUE9QX0JMT0NLKTsKICAgICBjb21waWxlcl9wb3BfZmJsb2NrKGMsIEVYQ0VQVCwgYm9keSk7CiAgICAgQURET1BfSlJFTChjLCBKVU1QX0ZPUldBUkQsIG9yZWxzZSk7Ci0gICAgbiA9IGFzZGxfc2VxX0xFTihzLT52LlRyeUV4Y2VwdC5oYW5kbGVycyk7CisgICAgbiA9IGFzZGxfc2VxX0xFTihzLT52LlRyeS5oYW5kbGVycyk7CiAgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgZXhjZXB0KTsKICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgIGV4Y2VwdGhhbmRsZXJfdHkgaGFuZGxlciA9IChleGNlcHRoYW5kbGVyX3R5KWFzZGxfc2VxX0dFVCgKLSAgICAgICAgICAgIHMtPnYuVHJ5RXhjZXB0LmhhbmRsZXJzLCBpKTsKKyAgICAgICAgICAgIHMtPnYuVHJ5LmhhbmRsZXJzLCBpKTsKICAgICAgICAgaWYgKCFoYW5kbGVyLT52LkV4Y2VwdEhhbmRsZXIudHlwZSAmJiBpIDwgbi0xKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICJkZWZhdWx0ICdleGNlcHQ6JyBtdXN0IGJlIGxhc3QiKTsKICAgICAgICAgYy0+dS0+dV9saW5lbm9fc2V0ID0gMDsKQEAgLTIwNzMsMTIgKzIyMDEsMjEgQEAKICAgICB9CiAgICAgQURET1AoYywgRU5EX0ZJTkFMTFkpOwogICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIG9yZWxzZSk7Ci0gICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuVHJ5RXhjZXB0Lm9yZWxzZSk7CisgICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuVHJ5Lm9yZWxzZSk7CiAgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgZW5kKTsKICAgICByZXR1cm4gMTsKIH0KIAogc3RhdGljIGludAorY29tcGlsZXJfdHJ5KHN0cnVjdCBjb21waWxlciAqYywgc3RtdF90eSBzKSB7CisgICAgaWYgKHMtPnYuVHJ5LmZpbmFsYm9keSAmJiBhc2RsX3NlcV9MRU4ocy0+di5UcnkuZmluYWxib2R5KSkKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3RyeV9maW5hbGx5KGMsIHMpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3RyeV9leGNlcHQoYywgcyk7Cit9CisKKworc3RhdGljIGludAogY29tcGlsZXJfaW1wb3J0X2FzKHN0cnVjdCBjb21waWxlciAqYywgaWRlbnRpZmllciBuYW1lLCBpZGVudGlmaWVyIGFzbmFtZSkKIHsKICAgICAvKiBUaGUgSU1QT1JUX05BTUUgb3Bjb2RlIHdhcyBhbHJlYWR5IGdlbmVyYXRlZC4gIFRoaXMgZnVuY3Rpb24KQEAgLTIwODcsMjIgKzIyMjQsMjcgQEAKICAgICAgICBJZiB0aGVyZSBpcyBhIGRvdCBpbiBuYW1lLCB3ZSBuZWVkIHRvIHNwbGl0IGl0IGFuZCBlbWl0IGEKICAgICAgICBMT0FEX0FUVFIgZm9yIGVhY2ggbmFtZS4KICAgICAqLwotICAgIGNvbnN0IFB5X1VOSUNPREUgKnNyYyA9IFB5VW5pY29kZV9BU19VTklDT0RFKG5hbWUpOwotICAgIGNvbnN0IFB5X1VOSUNPREUgKmRvdCA9IFB5X1VOSUNPREVfc3RyY2hyKHNyYywgJy4nKTsKLSAgICBpZiAoZG90KSB7CisgICAgUHlfc3NpemVfdCBkb3QgPSBQeVVuaWNvZGVfRmluZENoYXIobmFtZSwgJy4nLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpLCAxKTsKKyAgICBpZiAoZG90ID09IC0yKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKGRvdCAhPSAtMSkgewogICAgICAgICAvKiBDb25zdW1lIHRoZSBiYXNlIG1vZHVsZSBuYW1lIHRvIGdldCB0aGUgZmlyc3QgYXR0cmlidXRlICovCi0gICAgICAgIHNyYyA9IGRvdCArIDE7Ci0gICAgICAgIHdoaWxlIChkb3QpIHsKLSAgICAgICAgICAgIC8qIE5CIHNyYyBpcyBvbmx5IGRlZmluZWQgd2hlbiBkb3QgIT0gTlVMTCAqLworICAgICAgICBQeV9zc2l6ZV90IHBvcyA9IGRvdCArIDE7CisgICAgICAgIHdoaWxlIChkb3QgIT0gLTEpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICphdHRyOwotICAgICAgICAgICAgZG90ID0gUHlfVU5JQ09ERV9zdHJjaHIoc3JjLCAnLicpOwotICAgICAgICAgICAgYXR0ciA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzcmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdCA/IGRvdCAtIHNyYyA6IFB5X1VOSUNPREVfc3RybGVuKHNyYykpOworICAgICAgICAgICAgZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKG5hbWUsICcuJywgcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpLCAxKTsKKyAgICAgICAgICAgIGlmIChkb3QgPT0gLTIpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgYXR0ciA9IFB5VW5pY29kZV9TdWJzdHJpbmcobmFtZSwgcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdCAhPSAtMSkgPyBkb3QgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkpOwogICAgICAgICAgICAgaWYgKCFhdHRyKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIEFERE9QX08oYywgTE9BRF9BVFRSLCBhdHRyLCBuYW1lcyk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cik7Ci0gICAgICAgICAgICBzcmMgPSBkb3QgKyAxOworICAgICAgICAgICAgcG9zID0gZG90ICsgMTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gY29tcGlsZXJfbmFtZW9wKGMsIGFzbmFtZSwgU3RvcmUpOwpAQCAtMjE0MSwxMyArMjI4MywxMiBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaWRlbnRpZmllciB0bXAgPSBhbGlhcy0+bmFtZTsKLSAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKmJhc2UgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShhbGlhcy0+bmFtZSk7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICpkb3QgPSBQeV9VTklDT0RFX3N0cmNocihiYXNlLCAnLicpOwotICAgICAgICAgICAgaWYgKGRvdCkKLSAgICAgICAgICAgICAgICB0bXAgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90IC0gYmFzZSk7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGRvdCA9IFB5VW5pY29kZV9GaW5kQ2hhcigKKyAgICAgICAgICAgICAgICBhbGlhcy0+bmFtZSwgJy4nLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChhbGlhcy0+bmFtZSksIDEpOworICAgICAgICAgICAgaWYgKGRvdCAhPSAtMSkKKyAgICAgICAgICAgICAgICB0bXAgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGFsaWFzLT5uYW1lLCAwLCBkb3QpOwogICAgICAgICAgICAgciA9IGNvbXBpbGVyX25hbWVvcChjLCB0bXAsIFN0b3JlKTsKLSAgICAgICAgICAgIGlmIChkb3QpIHsKKyAgICAgICAgICAgIGlmIChkb3QgIT0gLTEpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghcikKQEAgLTIyMTAsNyArMjM1MSw3IEBACiAgICAgICAgIGFsaWFzX3R5IGFsaWFzID0gKGFsaWFzX3R5KWFzZGxfc2VxX0dFVChzLT52LkltcG9ydEZyb20ubmFtZXMsIGkpOwogICAgICAgICBpZGVudGlmaWVyIHN0b3JlX25hbWU7CiAKLSAgICAgICAgaWYgKGkgPT0gMCAmJiAqUHlVbmljb2RlX0FTX1VOSUNPREUoYWxpYXMtPm5hbWUpID09ICcqJykgeworICAgICAgICBpZiAoaSA9PSAwICYmIFB5VW5pY29kZV9SRUFEX0NIQVIoYWxpYXMtPm5hbWUsIDApID09ICcqJykgewogICAgICAgICAgICAgYXNzZXJ0KG4gPT0gMSk7CiAgICAgICAgICAgICBBRERPUChjLCBJTVBPUlRfU1RBUik7CiAgICAgICAgICAgICByZXR1cm4gMTsKQEAgLTIzMjUsMTAgKzI0NjYsOCBAQAogICAgICAgICB9CiAgICAgICAgIEFERE9QX0koYywgUkFJU0VfVkFSQVJHUywgbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVHJ5RXhjZXB0X2tpbmQ6Ci0gICAgICAgIHJldHVybiBjb21waWxlcl90cnlfZXhjZXB0KGMsIHMpOwotICAgIGNhc2UgVHJ5RmluYWxseV9raW5kOgotICAgICAgICByZXR1cm4gY29tcGlsZXJfdHJ5X2ZpbmFsbHkoYywgcyk7CisgICAgY2FzZSBUcnlfa2luZDoKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3RyeShjLCBzKTsKICAgICBjYXNlIEFzc2VydF9raW5kOgogICAgICAgICByZXR1cm4gY29tcGlsZXJfYXNzZXJ0KGMsIHMpOwogICAgIGNhc2UgSW1wb3J0X2tpbmQ6CkBAIC0yMzU5LDcgKzI0OTgsNyBAQAogICAgIGNhc2UgQ29udGludWVfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2NvbnRpbnVlKGMpOwogICAgIGNhc2UgV2l0aF9raW5kOgotICAgICAgICByZXR1cm4gY29tcGlsZXJfd2l0aChjLCBzKTsKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3dpdGgoYywgcywgMCk7CiAgICAgfQogICAgIHJldHVybiAxOwogfQpAQCAtMjUyNiw3ICsyNjY1LDcgQEAKICAgICB9CiAKICAgICAvKiBYWFggTGVhdmUgYXNzZXJ0IGhlcmUsIGJ1dCBoYW5kbGUgX19kb2NfXyBhbmQgdGhlIGxpa2UgYmV0dGVyICovCi0gICAgYXNzZXJ0KHNjb3BlIHx8IFB5VW5pY29kZV9BU19VTklDT0RFKG5hbWUpWzBdID09ICdfJyk7CisgICAgYXNzZXJ0KHNjb3BlIHx8IFB5VW5pY29kZV9SRUFEX0NIQVIobmFtZSwgMCkgPT0gJ18nKTsKIAogICAgIHN3aXRjaCAob3B0eXBlKSB7CiAgICAgY2FzZSBPUF9ERVJFRjoKQEAgLTI5MDQsMTEgKzMwNDMsMTMgQEAKIHsKICAgICBQeUNvZGVPYmplY3QgKmNvID0gTlVMTDsKICAgICBleHByX3R5IG91dGVybW9zdF9pdGVyOworICAgIFB5T2JqZWN0ICpxdWFsbmFtZSA9IE5VTEw7CiAKICAgICBvdXRlcm1vc3RfaXRlciA9ICgoY29tcHJlaGVuc2lvbl90eSkKICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9HRVQoZ2VuZXJhdG9ycywgMCkpLT5pdGVyOwogCi0gICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBuYW1lLCAodm9pZCAqKWUsIGUtPmxpbmVubykpCisgICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBuYW1lLCBDT01QSUxFUl9TQ09QRV9DT01QUkVIRU5TSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKillLCBlLT5saW5lbm8pKQogICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgaWYgKHR5cGUgIT0gQ09NUF9HRU5FWFApIHsKQEAgLTI5NDEsMTIgKzMwODIsMTQgQEAKICAgICB9CiAKICAgICBjbyA9IGFzc2VtYmxlKGMsIDEpOworICAgIHF1YWxuYW1lID0gY29tcGlsZXJfc2NvcGVfcXVhbG5hbWUoYyk7CiAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKLSAgICBpZiAoY28gPT0gTlVMTCkKKyAgICBpZiAocXVhbG5hbWUgPT0gTlVMTCB8fCBjbyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgaWYgKCFjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIDApKQorICAgIGlmICghY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCAwLCBxdWFsbmFtZSkpCiAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfREVDUkVGKHF1YWxuYW1lKTsKICAgICBQeV9ERUNSRUYoY28pOwogCiAgICAgVklTSVQoYywgZXhwciwgb3V0ZXJtb3N0X2l0ZXIpOwpAQCAtMjk1Niw2ICszMDk5LDcgQEAKIGVycm9yX2luX3Njb3BlOgogICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7CiBlcnJvcjoKKyAgICBQeV9YREVDUkVGKHF1YWxuYW1lKTsKICAgICBQeV9YREVDUkVGKGNvKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTMwNDksOCArMzE5Myw3IEBACiAgICAgICAgIHJldHVybiBQeU9iamVjdF9Jc1RydWUoZS0+di5TdHIucyk7CiAgICAgY2FzZSBOYW1lX2tpbmQ6CiAgICAgICAgIC8qIG9wdGltaXplIGF3YXkgbmFtZXMgdGhhdCBjYW4ndCBiZSByZWFzc2lnbmVkICovCi0gICAgICAgIGlkID0gUHlCeXRlc19BU19TVFJJTkcoCi0gICAgICAgICAgICBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcoZS0+di5OYW1lLmlkLCBOVUxMKSk7CisgICAgICAgIGlkID0gUHlVbmljb2RlX0FzVVRGOChlLT52Lk5hbWUuaWQpOwogICAgICAgICBpZiAoc3RyY21wKGlkLCAiVHJ1ZSIpID09IDApIHJldHVybiAxOwogICAgICAgICBpZiAoc3RyY21wKGlkLCAiRmFsc2UiKSA9PSAwKSByZXR1cm4gMDsKICAgICAgICAgaWYgKHN0cmNtcChpZCwgIk5vbmUiKSA9PSAwKSByZXR1cm4gMDsKQEAgLTMwODYsOSArMzIyOSwxMCBAQAogICAgICAgIGV4aXQoKmV4YykKICAqLwogc3RhdGljIGludAotY29tcGlsZXJfd2l0aChzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykKK2NvbXBpbGVyX3dpdGgoc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMsIGludCBwb3MpCiB7CiAgICAgYmFzaWNibG9jayAqYmxvY2ssICpmaW5hbGx5OworICAgIHdpdGhpdGVtX3R5IGl0ZW0gPSBhc2RsX3NlcV9HRVQocy0+di5XaXRoLml0ZW1zLCBwb3MpOwogCiAgICAgYXNzZXJ0KHMtPmtpbmQgPT0gV2l0aF9raW5kKTsKIApAQCAtMzA5OCw3ICszMjQyLDcgQEAKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvKiBFdmFsdWF0ZSBFWFBSICovCi0gICAgVklTSVQoYywgZXhwciwgcy0+di5XaXRoLmNvbnRleHRfZXhwcik7CisgICAgVklTSVQoYywgZXhwciwgaXRlbS0+Y29udGV4dF9leHByKTsKICAgICBBRERPUF9KUkVMKGMsIFNFVFVQX1dJVEgsIGZpbmFsbHkpOwogCiAgICAgLyogU0VUVVBfV0lUSCBwdXNoZXMgYSBmaW5hbGx5IGJsb2NrLiAqLwpAQCAtMzEwNywxNiArMzI1MSwyMCBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAocy0+di5XaXRoLm9wdGlvbmFsX3ZhcnMpIHsKLSAgICAgICAgVklTSVQoYywgZXhwciwgcy0+di5XaXRoLm9wdGlvbmFsX3ZhcnMpOworICAgIGlmIChpdGVtLT5vcHRpb25hbF92YXJzKSB7CisgICAgICAgIFZJU0lUKGMsIGV4cHIsIGl0ZW0tPm9wdGlvbmFsX3ZhcnMpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAvKiBEaXNjYXJkIHJlc3VsdCBmcm9tIGNvbnRleHQuX19lbnRlcl9fKCkgKi8KICAgICAgICAgQURET1AoYywgUE9QX1RPUCk7CiAgICAgfQogCi0gICAgLyogQkxPQ0sgY29kZSAqLwotICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LldpdGguYm9keSk7CisgICAgcG9zKys7CisgICAgaWYgKHBvcyA9PSBhc2RsX3NlcV9MRU4ocy0+di5XaXRoLml0ZW1zKSkKKyAgICAgICAgLyogQkxPQ0sgY29kZSAqLworICAgICAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5XaXRoLmJvZHkpCisgICAgZWxzZSBpZiAoIWNvbXBpbGVyX3dpdGgoYywgcywgcG9zKSkKKyAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgLyogRW5kIG9mIHRyeSBibG9jazsgc3RhcnQgdGhlIGZpbmFsbHkgYmxvY2sgKi8KICAgICBBRERPUChjLCBQT1BfQkxPQ0spOwpAQCAtMzIwMyw2ICszMzUxLDE0IEBACiAgICAgICAgIH0KICAgICAgICAgQURET1AoYywgWUlFTERfVkFMVUUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFlpZWxkRnJvbV9raW5kOgorICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV90eXBlICE9IEZ1bmN0aW9uQmxvY2spCisgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIid5aWVsZCcgb3V0c2lkZSBmdW5jdGlvbiIpOworICAgICAgICBWSVNJVChjLCBleHByLCBlLT52LllpZWxkRnJvbS52YWx1ZSk7CisgICAgICAgIEFERE9QKGMsIEdFVF9JVEVSKTsKKyAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgICAgICBBRERPUChjLCBZSUVMRF9GUk9NKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb21wYXJlX2tpbmQ6CiAgICAgICAgIHJldHVybiBjb21waWxlcl9jb21wYXJlKGMsIGUpOwogICAgIGNhc2UgQ2FsbF9raW5kOgpAQCAtMzM4NSw3ICszNTQxLDcgQEAKIHN0YXRpYyBpbnQKIGNvbXBpbGVyX2Vycm9yKHN0cnVjdCBjb21waWxlciAqYywgY29uc3QgY2hhciAqZXJyc3RyKQogewotICAgIFB5T2JqZWN0ICpsb2MsICpmaWxlbmFtZTsKKyAgICBQeU9iamVjdCAqbG9jOwogICAgIFB5T2JqZWN0ICp1ID0gTlVMTCwgKnYgPSBOVUxMOwogCiAgICAgbG9jID0gUHlFcnJfUHJvZ3JhbVRleHQoYy0+Y19maWxlbmFtZSwgYy0+dS0+dV9saW5lbm8pOwpAQCAtMzM5MywxNiArMzU0OSw3IEBACiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgbG9jID0gUHlfTm9uZTsKICAgICB9Ci0gICAgaWYgKGMtPmNfZmlsZW5hbWUgIT0gTlVMTCkgewotICAgICAgICBmaWxlbmFtZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoYy0+Y19maWxlbmFtZSk7Ci0gICAgICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIGZpbGVuYW1lID0gUHlfTm9uZTsKLSAgICB9Ci0gICAgdSA9IFB5X0J1aWxkVmFsdWUoIihOaWlPKSIsIGZpbGVuYW1lLCBjLT51LT51X2xpbmVubywKKyAgICB1ID0gUHlfQnVpbGRWYWx1ZSgiKE9paU8pIiwgYy0+Y19maWxlbmFtZV9vYmosIGMtPnUtPnVfbGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgIGMtPnUtPnVfY29sX29mZnNldCwgbG9jKTsKICAgICBpZiAoIXUpCiAgICAgICAgIGdvdG8gZXhpdDsKQEAgLTM5NTEsNyArNDA5OCw2IEBACiAgICAgUHlPYmplY3QgKmNvbnN0cyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5hbWVzID0gTlVMTDsKICAgICBQeU9iamVjdCAqdmFybmFtZXMgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpmaWxlbmFtZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5hbWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpmcmVldmFycyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNlbGx2YXJzID0gTlVMTDsKQEAgLTM5NzUsMTAgKzQxMjEsNiBAQAogICAgIGZyZWV2YXJzID0gZGljdF9rZXlzX2lub3JkZXIoYy0+dS0+dV9mcmVldmFycywgUHlUdXBsZV9TaXplKGNlbGx2YXJzKSk7CiAgICAgaWYgKCFmcmVldmFycykKICAgICAgICAgZ290byBlcnJvcjsKLSAgICBmaWxlbmFtZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoYy0+Y19maWxlbmFtZSk7Ci0gICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgZ290byBlcnJvcjsKLQogICAgIG5sb2NhbHMgPSBQeURpY3RfU2l6ZShjLT51LT51X3Zhcm5hbWVzKTsKICAgICBmbGFncyA9IGNvbXB1dGVfY29kZV9mbGFncyhjKTsKICAgICBpZiAoZmxhZ3MgPCAwKQpAQCAtMzk5OCwxNCArNDE0MCwxMyBAQAogICAgICAgICAgICAgICAgICAgICBubG9jYWxzLCBzdGFja2RlcHRoKGMpLCBmbGFncywKICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGUsIGNvbnN0cywgbmFtZXMsIHZhcm5hbWVzLAogICAgICAgICAgICAgICAgICAgICBmcmVldmFycywgY2VsbHZhcnMsCi0gICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBjLT51LT51X25hbWUsCisgICAgICAgICAgICAgICAgICAgIGMtPmNfZmlsZW5hbWVfb2JqLCBjLT51LT51X25hbWUsCiAgICAgICAgICAgICAgICAgICAgIGMtPnUtPnVfZmlyc3RsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgIGEtPmFfbG5vdGFiKTsKICBlcnJvcjoKICAgICBQeV9YREVDUkVGKGNvbnN0cyk7CiAgICAgUHlfWERFQ1JFRihuYW1lcyk7CiAgICAgUHlfWERFQ1JFRih2YXJuYW1lcyk7Ci0gICAgUHlfWERFQ1JFRihmaWxlbmFtZSk7CiAgICAgUHlfWERFQ1JFRihuYW1lKTsKICAgICBQeV9YREVDUkVGKGZyZWV2YXJzKTsKICAgICBQeV9YREVDUkVGKGNlbGx2YXJzKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9jb25kdmFyLmggYi9QeXRob24vY29uZHZhci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlNmJkNzQKLS0tIC9kZXYvbnVsbAorKysgYi9QeXRob24vY29uZHZhci5oCkBAIC0wLDAgKzEsMzkwIEBACisvKiAKKyAqIFBvcnRhYmxlIGNvbmRpdGlvbiB2YXJpYWJsZSBzdXBwb3J0IGZvciB3aW5kb3dzIGFuZCBwdGhyZWFkcy4KKyAqIEV2ZXJ5dGhpbmcgaXMgaW5saW5lLCB0aGlzIGhlYWRlciBjYW4gYmUgaW5jbHVkZWQgd2hlcmUgbmVlZGVkLgorICoKKyAqIEFQSXMgZ2VuZXJhbGx5IHJldHVybiAwIG9uIHN1Y2Nlc3MgYW5kIG5vbi16ZXJvIG9uIGVycm9yLAorICogYW5kIHRoZSBjYWxsZXIgbmVlZHMgdG8gdXNlIGl0cyBwbGF0Zm9ybSdzIGVycm9yIG1lY2hhbmlzbSB0bworICogZGlzY292ZXIgdGhlIGVycm9yIChlcnJubywgb3IgR2V0TGFzdEVycm9yKCkpCisgKgorICogTm90ZSB0aGF0IHNvbWUgaW1wbGVtZW50YXRpb25zIGNhbm5vdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIGEKKyAqIGNvbmRpdGlvbiB2YXJpYWJsZSB3YWl0IHRpbWUtb3V0IGFuZCBzdWNjZXNzZnVsIHdhaXQuIE1vc3Qgb2Z0ZW4KKyAqIHRoZSBkaWZmZXJlbmNlIGlzIG1vb3QgYW55d2F5IHNpbmNlIHRoZSB3YWl0IGNvbmRpdGlvbiBtdXN0IGJlCisgKiByZS1jaGVja2VkLgorICogUHlDT05EX1RJTUVEV0FJVCwgaW4gYWRkaXRpb24gdG8gcmV0dXJuaW5nIG5lZ2F0aXZlIG9uIGVycm9yLAorICogdGh1cyByZXR1cm5zIDAgb24gcmVndWxhciBzdWNjZXNzLCAxIG9uIHRpbWVvdXQKKyAqIG9yIDIgaWYgaXQgY2FuJ3QgdGVsbC4KKyAqCisgKiBUaGVyZSBhcmUgYXQgbGVhc3QgdHdvIGNhdmVhdHMgd2l0aCB1c2luZyB0aGVzZSBjb25kaXRpb24gdmFyaWFibGVzLAorICogZHVlIHRvIHRoZSBmYWN0IHRoYXQgdGhleSBtYXkgYmUgZW11bGF0ZWQgd2l0aCBTZW1hcGhvcmVzIG9uCisgKiBXaW5kb3dzOgorICogMSkgV2hpbGUgUHlDT05EX1NJR05BTCgpIHdpbGwgd2FrZSB1cCBhdCBsZWFzdCBvbmUgdGhyZWFkLCB3ZQorICogICAgY2Fubm90IGN1cnJlbnRseSBndWFyYW50ZWUgdGhhdCBpdCB3aWxsIGJlIG9uZSBvZiB0aGUgdGhyZWFkcworICogICAgYWxyZWFkeSB3YWl0aW5nIGluIGEgUHlDT05EX1dBSVQoKSBjYWxsLiAgSXQgX2NvdWxkXyBjYXVzZQorICogICAgdGhlIHdha2V1cCBvZiBhIHN1YnNlcXVlbnQgdGhyZWFkIHRvIHRyeSBhIFB5Q09ORF9XQUlUKCksCisgKiAgICBpbmNsdWRpbmcgdGhlIHRocmVhZCBkb2luZyB0aGUgUHlDT05EX1NJR05BTCgpIGl0c2VsZi4KKyAqICAgIFRoZSBzYW1lIGFwcGxpZXMgdG8gUHlDT05EX0JST0FEQ0FTVCgpLCBpZiBOIHRocmVhZHMgYXJlIHdhaXRpbmcKKyAqICAgIHRoZW4gYXQgbGVhc3QgTiB0aHJlYWRzIHdpbGwgYmUgd29rZW4gdXAsIGJ1dCBub3QgbmVjZXNzYXJpbHkKKyAqICAgIHRob3NlIGFscmVhZHkgd2FpdGluZy4KKyAqICAgIEZvciB0aGlzIHJlYXNvbiwgZG9uJ3QgbWFrZSB0aGUgc2NoZWR1bGluZyBhc3N1bXB0aW9uIHRoYXQgYQorICogICAgc3BlY2lmaWMgb3RoZXIgdGhyZWFkIHdpbGwgZ2V0IHRoZSB3YWtldXAgc2lnbmFsCisgKiAyKSBUaGUgX211dGV4XyBtdXN0IGJlIGhlbGQgd2hlbiBjYWxsaW5nIFB5Q09ORF9TSUdOQUwoKSBhbmQKKyAqICAgIFB5Q09ORF9CUk9BRENBU1QoKS4KKyAqICAgIFdoaWxlIGUuZy4gdGhlIHBvc2l4IHN0YW5kYXJkIHN0cm9uZ2x5IHJlY29tbWVuZHMgdGhhdCB0aGUgbXV0ZXgKKyAqICAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29uZGl0aW9uIHZhcmlhYmxlIGlzIGhlbGQgd2hlbiBhCisgKiAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKCkgY2FsbCBpcyBtYWRlLCB0aGlzIGlzIG5vdCBhIGhhcmQgcmVxdWlyZW1lbnQsCisgKiAgICBhbHRob3VnaCBzY2hlZHVsaW5nIHdpbGwgbm90IGJlICJyZWxpYWJsZSIgaWYgaXQgaXNuJ3QuICBIZXJlCisgKiAgICB0aGUgbXV0ZXggaXMgdXNlZCBmb3IgaW50ZXJuYWwgc3luY2hyb25pemF0aW9uIG9mIHRoZSBlbXVsYXRlZAorICogICAgQ29uZGl0aW9uIFZhcmlhYmxlLgorICovCisKKyNpZm5kZWYgX0NPTkRWQVJfSF8KKyNkZWZpbmUgX0NPTkRWQVJfSF8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorCisjaWZuZGVmIF9QT1NJWF9USFJFQURTCisvKiBUaGlzIG1lYW5zIHB0aHJlYWRzIGFyZSBub3QgaW1wbGVtZW50ZWQgaW4gbGliYyBoZWFkZXJzLCBoZW5jZSB0aGUgbWFjcm8KKyAgIG5vdCBwcmVzZW50IGluIHVuaXN0ZC5oLiBCdXQgdGhleSBzdGlsbCBjYW4gYmUgaW1wbGVtZW50ZWQgYXMgYW4gZXh0ZXJuYWwKKyAgIGxpYnJhcnkgKGUuZy4gZ251IHB0aCBpbiBwdGhyZWFkIGVtdWxhdGlvbikgKi8KKyMgaWZkZWYgSEFWRV9QVEhSRUFEX0gKKyMgIGluY2x1ZGUgPHB0aHJlYWQuaD4gLyogX1BPU0lYX1RIUkVBRFMgKi8KKyMgZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgX1BPU0lYX1RIUkVBRFMKKy8qCisgKiBQT1NJWCBzdXBwb3J0CisgKi8KKyNkZWZpbmUgUHlfSEFWRV9DT05EVkFSCisKKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisKKyNkZWZpbmUgUHlDT05EX0FERF9NSUNST1NFQ09ORFModHYsIGludGVydmFsKSBcCitkbyB7IFwKKyAgICB0di50dl91c2VjICs9IChsb25nKSBpbnRlcnZhbDsgXAorICAgIHR2LnR2X3NlYyArPSB0di50dl91c2VjIC8gMTAwMDAwMDsgXAorICAgIHR2LnR2X3VzZWMgJT0gMTAwMDAwMDsgXAorfSB3aGlsZSAoMCkKKworLyogV2UgYXNzdW1lIGFsbCBtb2Rlcm4gUE9TSVggc3lzdGVtcyBoYXZlIGdldHRpbWVvZmRheSgpICovCisjaWZkZWYgR0VUVElNRU9GREFZX05PX1RaCisjZGVmaW5lIFB5Q09ORF9HRVRUSU1FT0ZEQVkocHR2KSBnZXR0aW1lb2ZkYXkocHR2KQorI2Vsc2UKKyNkZWZpbmUgUHlDT05EX0dFVFRJTUVPRkRBWShwdHYpIGdldHRpbWVvZmRheShwdHYsIChzdHJ1Y3QgdGltZXpvbmUgKilOVUxMKQorI2VuZGlmCisKKy8qIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHJldHVybiAwIG9uIHN1Y2Nlc3MsIG5vbnplcm8gb24gZXJyb3IgKi8KKyNkZWZpbmUgUHlNVVRFWF9UIHB0aHJlYWRfbXV0ZXhfdAorI2RlZmluZSBQeU1VVEVYX0lOSVQobXV0KSAgICAgICBwdGhyZWFkX211dGV4X2luaXQoKG11dCksIE5VTEwpCisjZGVmaW5lIFB5TVVURVhfRklOSShtdXQpICAgICAgIHB0aHJlYWRfbXV0ZXhfZGVzdHJveShtdXQpCisjZGVmaW5lIFB5TVVURVhfTE9DSyhtdXQpICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jayhtdXQpCisjZGVmaW5lIFB5TVVURVhfVU5MT0NLKG11dCkgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKG11dCkKKworI2RlZmluZSBQeUNPTkRfVCBwdGhyZWFkX2NvbmRfdAorI2RlZmluZSBQeUNPTkRfSU5JVChjb25kKSAgICAgICBwdGhyZWFkX2NvbmRfaW5pdCgoY29uZCksIE5VTEwpCisjZGVmaW5lIFB5Q09ORF9GSU5JKGNvbmQpICAgICAgIHB0aHJlYWRfY29uZF9kZXN0cm95KGNvbmQpCisjZGVmaW5lIFB5Q09ORF9TSUdOQUwoY29uZCkgICAgIHB0aHJlYWRfY29uZF9zaWduYWwoY29uZCkKKyNkZWZpbmUgUHlDT05EX0JST0FEQ0FTVChjb25kKSAgcHRocmVhZF9jb25kX2Jyb2FkY2FzdChjb25kKQorI2RlZmluZSBQeUNPTkRfV0FJVChjb25kLCBtdXQpICBwdGhyZWFkX2NvbmRfd2FpdCgoY29uZCksIChtdXQpKQorCisvKiByZXR1cm4gMCBmb3Igc3VjY2VzcywgMSBvbiB0aW1lb3V0LCAtMSBvbiBlcnJvciAqLworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9USU1FRFdBSVQoUHlDT05EX1QgKmNvbmQsIFB5TVVURVhfVCAqbXV0LCBsb25nIHVzKQoreworICAgIGludCByOworICAgIHN0cnVjdCB0aW1lc3BlYyB0czsKKyAgICBzdHJ1Y3QgdGltZXZhbCBkZWFkbGluZTsKKworICAgIFB5Q09ORF9HRVRUSU1FT0ZEQVkoJmRlYWRsaW5lKTsKKyAgICBQeUNPTkRfQUREX01JQ1JPU0VDT05EUyhkZWFkbGluZSwgdXMpOworICAgIHRzLnR2X3NlYyA9IGRlYWRsaW5lLnR2X3NlYzsKKyAgICB0cy50dl9uc2VjID0gZGVhZGxpbmUudHZfdXNlYyAqIDEwMDA7CisKKyAgICByID0gcHRocmVhZF9jb25kX3RpbWVkd2FpdCgoY29uZCksIChtdXQpLCAmdHMpOworICAgIGlmIChyID09IEVUSU1FRE9VVCkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgZWxzZSBpZiAocikKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVsc2UgCisgICAgICAgIHJldHVybiAwOworfQorCisjZWxpZiBkZWZpbmVkKE5UX1RIUkVBRFMpCisvKgorICogV2luZG93cyAoWFAsIDIwMDMgc2VydmVyIGFuZCBsYXRlciwgYXMgd2VsbCBhcyAoaG9wZWZ1bGx5KSBDRSkgc3VwcG9ydAorICoKKyAqIEVtdWxhdGVkIGNvbmRpdGlvbiB2YXJpYWJsZXMgb25lcyB0aGF0IHdvcmsgd2l0aCBYUCBhbmQgbGF0ZXIsIHBsdXMKKyAqIGV4YW1wbGUgbmF0aXZlIHN1cHBvcnQgb24gVklTVEEgYW5kIG9ud2FyZHMuCisgKi8KKyNkZWZpbmUgUHlfSEFWRV9DT05EVkFSCisKKworLyogaW5jbHVkZSB3aW5kb3dzIGlmIGl0IGhhc24ndCBiZWVuIGRvbmUgYmVmb3JlICovCisjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisKKy8qIG9wdGlvbnMgKi8KKy8qIG5vbi1lbXVsYXRlZCBjb25kaXRpb24gdmFyaWFibGVzIGFyZSBwcm92aWRlZCBmb3IgdGhvc2UgdGhhdCB3YW50CisgKiB0byB0YXJnZXQgV2luZG93cyBWaXN0YS4gIE1vZGlmeSB0aGlzIG1hY3JvIHRvIGVuYWJsZSB0aGVtLgorICovCisjaWZuZGVmIF9QWV9FTVVMQVRFRF9XSU5fQ1YKKyNkZWZpbmUgX1BZX0VNVUxBVEVEX1dJTl9DViAxICAvKiB1c2UgZW11bGF0ZWQgY29uZGl0aW9uIHZhcmlhYmxlcyAqLworI2VuZGlmCisKKy8qIGZhbGwgYmFjayB0byBlbXVsYXRpb24gaWYgbm90IHRhcmdldGluZyBWaXN0YSAqLworI2lmICFkZWZpbmVkIE5URERJX1ZJU1RBIHx8IE5URERJX1ZFUlNJT04gPCBOVERESV9WSVNUQQorI3VuZGVmIF9QWV9FTVVMQVRFRF9XSU5fQ1YKKyNkZWZpbmUgX1BZX0VNVUxBVEVEX1dJTl9DViAxCisjZW5kaWYKKworCisjaWYgX1BZX0VNVUxBVEVEX1dJTl9DVgorCisvKiBUaGUgbXV0ZXggaXMgYSBDcml0aWNhbFNlY3Rpb24gb2JqZWN0IGFuZAorICAgVGhlIGNvbmRpdGlvbiB2YXJpYWJsZXMgaXMgZW11bGF0ZWQgd2l0aCB0aGUgaGVscCBvZiBhIHNlbWFwaG9yZS4KKyAgIFNlbWFwaG9yZXMgYXJlIGF2YWlsYWJsZSBvbiBXaW5kb3dzIFhQICgyMDAzIHNlcnZlcikgYW5kIGxhdGVyLgorICAgV2UgdXNlIGEgU2VtYXBob3JlIHJhdGhlciB0aGFuIGFuIGF1dG8tcmVzZXQgZXZlbnQsIGJlY2F1c2UgYWx0aG91Z2gKKyAgIGFuIGF1dG8tcmVzZW50IGV2ZW50IG1pZ2h0IGFwcGVhciB0byBzb2x2ZSB0aGUgbG9zdC13YWtldXAgYnVnIChyYWNlCisgICBjb25kaXRpb24gYmV0d2VlbiByZWxlYXNpbmcgdGhlIG91dGVyIGxvY2sgYW5kIHdhaXRpbmcpIGJlY2F1c2UgaXQKKyAgIG1haW50YWlucyBzdGF0ZSBldmVuIHRob3VnaCBhIHdhaXQgaGFzbid0IGhhcHBlbmVkLCB0aGVyZSBpcyBzdGlsbAorICAgYSBsb3N0IHdha2V1cCBwcm9ibGVtIGlmIG1vcmUgdGhhbiBvbmUgdGhyZWFkIGFyZSBpbnRlcnJ1cHRlZCBpbiB0aGUKKyAgIGNyaXRpY2FsIHBsYWNlLiAgQSBzZW1hcGhvcmUgc29sdmVzIHRoYXQsIGJlY2F1c2UgaXRzIHN0YXRlIGlzIGNvdW50ZWQsCisgICBub3QgQm9vbGVhbi4KKyAgIEJlY2F1c2UgaXQgaXMgb2sgdG8gc2lnbmFsIGEgY29uZGl0aW9uIHZhcmlhYmxlIHdpdGggbm8gb25lCisgICB3YWl0aW5nLCB3ZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIG51bWJlciBvZgorICAgd2FpdGluZyB0aHJlYWRzLiAgT3RoZXJ3aXNlLCB0aGUgc2VtYXBob3JlJ3Mgc3RhdGUgY291bGQgcmlzZQorICAgd2l0aG91dCBib3VuZC4gIFRoaXMgYWxzbyBoZWxwcyByZWR1Y2UgdGhlIG51bWJlciBvZiAic3B1cmlvdXMgd2FrZXVwcyIKKyAgIHRoYXQgd291bGQgb3RoZXJ3aXNlIGhhcHBlbi4KKworICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBzdGlsbCBoYXMgdGhlIHByb2JsZW0gdGhhdCB0aGUgdGhyZWFkcyB3b2tlbgorICAgd2l0aCBhICJzaWduYWwiIGFyZW4ndCBuZWNlc3NhcmlseSB0aG9zZSB0aGF0IGFyZSBhbHJlYWR5CisgICB3YWl0aW5nLiAgSXQgY29ycmVzcG9uZHMgdG8gbGlzdGluZyAyIGluOgorICAgaHR0cDovL2JpcnJlbGwub3JnL2FuZHJldy9wYXBlcnMvSW1wbGVtZW50aW5nQ1ZzLnBkZgorCisgICBHZW5lcmljIGVtdWxhdGlvbnMgb2YgdGhlIHB0aHJlYWRfY29uZF8qIEFQSSB1c2luZworICAgZWFybGllciBXaW4zMiBmdW5jdGlvbnMgY2FuIGJlIGZvdW5kIG9uIHRoZSBXZWIuCisgICBUaGUgZm9sbG93aW5nIHJlYWQgY2FuIGJlIGVkaWZpY2F0aW5nIChvciBub3QpOgorICAgaHR0cDovL3d3dy5jc2Uud3VzdGwuZWR1L35zY2htaWR0L3dpbjMyLWN2LTEuaHRtbAorCisgICBTZWUgYWxzbyAKKyovCisKK3R5cGVkZWYgQ1JJVElDQUxfU0VDVElPTiBQeU1VVEVYX1Q7CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeU1VVEVYX0lOSVQoUHlNVVRFWF9UICpjcykKK3sKKyAgICBJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKGNzKTsKKyAgICByZXR1cm4gMDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5TVVURVhfRklOSShQeU1VVEVYX1QgKmNzKQoreworICAgIERlbGV0ZUNyaXRpY2FsU2VjdGlvbihjcyk7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeU1VVEVYX0xPQ0soUHlNVVRFWF9UICpjcykKK3sKKyAgICBFbnRlckNyaXRpY2FsU2VjdGlvbihjcyk7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeU1VVEVYX1VOTE9DSyhQeU1VVEVYX1QgKmNzKQoreworICAgIExlYXZlQ3JpdGljYWxTZWN0aW9uKGNzKTsKKyAgICByZXR1cm4gMDsKK30KKworLyogVGhlIENvbmRpdGlvblZhcmlhYmxlIG9iamVjdC4gIEZyb20gWFAgb253YXJkcyBpdCBpcyBlYXNpbHkgZW11bGF0ZWQgd2l0aAorICogYSBTZW1hcGhvcmUKKyAqLworCit0eXBlZGVmIHN0cnVjdCBfUHlDT05EX1QKK3sKKyAgICBIQU5ETEUgc2VtOworICAgIGludCB3YWl0aW5nOyAvKiB0byBhbGxvdyBQeUNPTkRfU0lHTkFMIHRvIGJlIGEgbm8tb3AgKi8KK30gUHlDT05EX1Q7CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfSU5JVChQeUNPTkRfVCAqY3YpCit7CisgICAgLyogQSBzZW1hcGhvcmUgd2l0aCBhICJsYXJnZSIgbWF4IHZhbHVlLCAgVGhlIHBvc2l0aXZlIHZhbHVlCisgICAgICogaXMgb25seSBuZWVkZWQgdG8gY2F0Y2ggdGhvc2UgImxvc3Qgd2FrZXVwIiBldmVudHMgYW5kCisgICAgICogcmFjZSBjb25kaXRpb25zIHdoZW4gYSB0aW1lZCB3YWl0IGVsYXBzZXMuCisgICAgICovCisgICAgY3YtPnNlbSA9IENyZWF0ZVNlbWFwaG9yZShOVUxMLCAwLCAxMDAwMDAsIE5VTEwpOworICAgIGlmIChjdi0+c2VtPT1OVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgY3YtPndhaXRpbmcgPSAwOworICAgIHJldHVybiAwOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlDT05EX0ZJTkkoUHlDT05EX1QgKmN2KQoreworICAgIHJldHVybiBDbG9zZUhhbmRsZShjdi0+c2VtKSA/IDAgOiAtMTsKK30KKworLyogdGhpcyBpbXBsZW1lbnRhdGlvbiBjYW4gZGV0ZWN0IGEgdGltZW91dC4gIFJldHVybnMgMSBvbiB0aW1lb3V0LAorICogMCBvdGhlcndpc2UgKGFuZCAtMSBvbiBlcnJvcikKKyAqLworUHlfTE9DQUxfSU5MSU5FKGludCkKK19QeUNPTkRfV0FJVF9NUyhQeUNPTkRfVCAqY3YsIFB5TVVURVhfVCAqY3MsIERXT1JEIG1zKQoreworICAgIERXT1JEIHdhaXQ7CisgICAgY3YtPndhaXRpbmcrKzsKKyAgICBQeU1VVEVYX1VOTE9DSyhjcyk7CisgICAgLyogImxvc3Qgd2FrZXVwIGJ1ZyIgd291bGQgb2NjdXIgaWYgdGhlIGNhbGxlciB3ZXJlIGludGVycnVwdGVkIGhlcmUsCisgICAgICogYnV0IHdlIGFyZSBzYWZlIGJlY2F1c2Ugd2UgYXJlIHVzaW5nIGEgc2VtYXBob3JlIHdpY2ggaGFzIGFuIGludGVybmFsCisgICAgICogY291bnQuCisgICAgICovCisgICAgd2FpdCA9IFdhaXRGb3JTaW5nbGVPYmplY3QoY3YtPnNlbSwgbXMpOworICAgIFB5TVVURVhfTE9DSyhjcyk7CisgICAgaWYgKHdhaXQgIT0gV0FJVF9PQkpFQ1RfMCkKKyAgICAgICAgLS1jdi0+d2FpdGluZzsKKyAgICAgICAgLyogSGVyZSB3ZSBoYXZlIGEgYmVuaWduIHJhY2UgY29uZGl0aW9uIHdpdGggUHlDT05EX1NJR05BTC4KKyAgICAgICAgICogV2hlbiBmYWlsdXJlIG9jY3VycyBvciB0aW1lb3V0LCBpdCBpcyBwb3NzaWJsZSB0aGF0CisgICAgICAgICAqIFB5Q09ORF9TSUdOQUwgYWxzbyBkZWNyZW1lbnRzIHRoaXMgdmFsdWUKKyAgICAgICAgICogYW5kIHNpZ25hbHMgcmVsZWFzZXMgdGhlIG11dGV4LiAgVGhpcyBpcyBiZW5pZ24gYmVjYXVzZSBpdAorICAgICAgICAgKiBqdXN0IG1lYW5zIGFuIGV4dHJhIHNwdXJpb3VzIHdha2V1cCBmb3IgYSB3YWl0aW5nIHRocmVhZC4KKyAgICAgICAgICogKCd3YWl0aW5nJyBjb3JyZXNwb25kcyB0byB0aGUgc2VtYXBob3JlJ3MgIm5lZ2F0aXZlIiBjb3VudCBhbmQKKyAgICAgICAgICogd2UgbWF5IGVuZCB1cCB3aXRoIGUuZy4gKHdhaXRpbmcgPT0gLTEgJiYgc2VtLmNvdW50ID09IDEpLiAgV2hlbgorICAgICAgICAgKiBhIG5ldyB0aHJlYWQgY29tZXMgYWxvbmcsIGl0IHdpbGwgcGFzcyByaWdodCB0aHJvdWhnaCwgaGF2aW5nCisgICAgICAgICAqIGFkanVzdGVkIGl0IHRvICh3YWl0aW5nID09IDAgJiYgc2VtLmNvdW50ID09IDApLgorICAgICAgICAgKi8KKyAgICAgICAgIAorICAgIGlmICh3YWl0ID09IFdBSVRfRkFJTEVEKQorICAgICAgICByZXR1cm4gLTE7CisgICAgLyogcmV0dXJuIDAgb24gc3VjY2VzcywgMSBvbiB0aW1lb3V0ICovCisgICAgcmV0dXJuIHdhaXQgIT0gV0FJVF9PQkpFQ1RfMDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9XQUlUKFB5Q09ORF9UICpjdiwgUHlNVVRFWF9UICpjcykKK3sKKyAgICBpbnQgcmVzdWx0ID0gX1B5Q09ORF9XQUlUX01TKGN2LCBjcywgSU5GSU5JVEUpOworICAgIHJldHVybiByZXN1bHQgPj0gMCA/IDAgOiByZXN1bHQ7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfVElNRURXQUlUKFB5Q09ORF9UICpjdiwgUHlNVVRFWF9UICpjcywgbG9uZyB1cykKK3sKKyAgICByZXR1cm4gX1B5Q09ORF9XQUlUX01TKGN2LCBjcywgdXMvMTAwMCk7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfU0lHTkFMKFB5Q09ORF9UICpjdikKK3sKKyAgICAvKiB0aGlzIHRlc3QgYWxsb3dzIFB5Q09ORF9TSUdOQUwgdG8gYmUgYSBuby1vcCB1bmxlc3MgcmVxdWlyZWQKKyAgICAgKiB0byB3YWtlIHNvbWVvbmUgdXAsIHRodXMgcHJldmVudGluZyBhbiB1bmJvdW5kZWQgaW5jcmVhc2Ugb2YKKyAgICAgKiB0aGUgc2VtYXBob3JlJ3MgaW50ZXJuYWwgY291bnRlci4KKyAgICAgKi8KKyAgICBpZiAoY3YtPndhaXRpbmcgPiAwKSB7CisgICAgICAgIC8qIG5vdGlmeWluZyB0aHJlYWQgZGVjcmVhc2VzIHRoZSBjdi0+d2FpdGluZyBjb3VudCBzbyB0aGF0CisgICAgICAgICAqIGEgZGVsYXkgYmV0d2VlbiBub3RpZnkgYW5kIGFjdHVhbCB3YWtldXAgb2YgdGhlIHRhcmdldCB0aHJlYWQKKyAgICAgICAgICogZG9lc24ndCBjYXVzZSBhIG51bWJlciBvZiBleHRyYSBSZWxlYXNlU2VtYXBob3JlIGNhbGxzLgorICAgICAgICAgKi8KKyAgICAgICAgY3YtPndhaXRpbmctLTsKKyAgICAgICAgcmV0dXJuIFJlbGVhc2VTZW1hcGhvcmUoY3YtPnNlbSwgMSwgTlVMTCkgPyAwIDogLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlDT05EX0JST0FEQ0FTVChQeUNPTkRfVCAqY3YpCit7CisgICAgaWYgKGN2LT53YWl0aW5nID4gMCkgeworICAgICAgICByZXR1cm4gUmVsZWFzZVNlbWFwaG9yZShjdi0+c2VtLCBjdi0+d2FpdGluZywgTlVMTCkgPyAwIDogLTE7CisJCWN2LT53YWl0aW5nID0gMDsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbHNlCisKKy8qIFVzZSBuYXRpdmUgV2luNyBwcmltaXRpdmVzIGlmIGJ1aWxkIHRhcmdldCBpcyBXaW43IG9yIGhpZ2hlciAqLworCisvKiBTUldMT0NLIGlzIGZhc3RlciBhbmQgYmV0dGVyIHRoYW4gQ3JpdGljYWxTZWN0aW9uICovCit0eXBlZGVmIFNSV0xPQ0sgUHlNVVRFWF9UOworCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlNVVRFWF9JTklUKFB5TVVURVhfVCAqY3MpCit7CisgICAgSW5pdGlhbGl6ZVNSV0xvY2soY3MpOworICAgIHJldHVybiAwOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlNVVRFWF9GSU5JKFB5TVVURVhfVCAqY3MpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeU1VVEVYX0xPQ0soUHlNVVRFWF9UICpjcykKK3sKKyAgICBBY3F1aXJlU1JXTG9ja0V4Y2x1c2l2ZShjcyk7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeU1VVEVYX1VOTE9DSyhQeU1VVEVYX1QgKmNzKQoreworICAgIFJlbGVhc2VTUldMb2NrRXhjbHVzaXZlKGNzKTsKKyAgICByZXR1cm4gMDsKK30KKworCit0eXBlZGVmIENPTkRJVElPTl9WQVJJQUJMRSAgUHlDT05EX1Q7CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfSU5JVChQeUNPTkRfVCAqY3YpCit7CisgICAgSW5pdGlhbGl6ZUNvbmRpdGlvblZhcmlhYmxlKGN2KTsKKyAgICByZXR1cm4gMDsKK30KK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfRklOSShQeUNPTkRfVCAqY3YpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfV0FJVChQeUNPTkRfVCAqY3YsIFB5TVVURVhfVCAqY3MpCit7CisgICAgcmV0dXJuIFNsZWVwQ29uZGl0aW9uVmFyaWFibGVTUlcoY3YsIGNzLCBJTkZJTklURSwgMCkgPyAwIDogLTE7Cit9CisKKy8qIFRoaXMgaW1wbGVtZW50YXRpb24gbWFrZXMgbm8gZGlzdGluY3Rpb24gYWJvdXQgdGltZW91dHMuICBTaWduYWwKKyAqIDIgdG8gaW5kaWNhdGUgdGhhdCB3ZSBkb24ndCBrbm93LgorICovCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlDT05EX1RJTUVEV0FJVChQeUNPTkRfVCAqY3YsIFB5TVVURVhfVCAqY3MsIGxvbmcgdXMpCit7CisgICAgcmV0dXJuIFNsZWVwQ29uZGl0aW9uVmFyaWFibGVTUlcoY3YsIGNzLCB1cy8xMDAwLCAwKSA/IDIgOiAtMTsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9TSUdOQUwoUHlDT05EX1QgKmN2KQoreworICAgICBXYWtlQ29uZGl0aW9uVmFyaWFibGUoY3YpOworICAgICByZXR1cm4gMDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9CUk9BRENBU1QoUHlDT05EX1QgKmN2KQoreworICAgICBXYWtlQWxsQ29uZGl0aW9uVmFyaWFibGUoY3YpOworICAgICByZXR1cm4gMDsKK30KKworCisjZW5kaWYgLyogX1BZX0VNVUxBVEVEX1dJTl9DViAqLworCisjZW5kaWYgLyogX1BPU0lYX1RIUkVBRFMsIE5UX1RIUkVBRFMgKi8KKworI2VuZGlmIC8qIF9DT05EVkFSX0hfICovCmRpZmYgLS1naXQgYS9QeXRob24vZHRvYS5jIGIvUHl0aG9uL2R0b2EuYwppbmRleCA0NGRjMDFmLi44Mzg2MWFjIDEwMDY0NAotLS0gYS9QeXRob24vZHRvYS5jCisrKyBiL1B5dGhvbi9kdG9hLmMKQEAgLTI2NSw2ICsyNjUsMTYgQEAKICNkZWZpbmUgQmlnMCAoRnJhY19tYXNrMSB8IEV4cF9tc2sxKihEQkxfTUFYX0VYUCtCaWFzLTEpKQogI2RlZmluZSBCaWcxIDB4ZmZmZmZmZmYKIAorLyogU3RhbmRhcmQgTmFOIHVzZWQgYnkgX1B5X2RnX3N0ZG5hbi4gKi8KKworI2RlZmluZSBOQU5fV09SRDAgMHg3ZmY4MDAwMAorI2RlZmluZSBOQU5fV09SRDEgMAorCisvKiBCaXRzIG9mIHRoZSByZXByZXNlbnRhdGlvbiBvZiBwb3NpdGl2ZSBpbmZpbml0eS4gKi8KKworI2RlZmluZSBQT1NJTkZfV09SRDAgMHg3ZmYwMDAwMAorI2RlZmluZSBQT1NJTkZfV09SRDEgMAorCiAvKiBzdHJ1Y3QgQkNpbmZvIGlzIHVzZWQgdG8gcGFzcyBpbmZvcm1hdGlvbiBmcm9tIF9QeV9kZ19zdHJ0b2QgdG8gYmlnY29tcCAqLwogCiB0eXBlZGVmIHN0cnVjdCBCQ2luZm8gQkNpbmZvOwpAQCAtMTQ4Niw2ICsxNDk2LDM2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKy8qIFJldHVybiBhICdzdGFuZGFyZCcgTmFOIHZhbHVlLgorCisgICBUaGVyZSBhcmUgZXhhY3RseSB0d28gcXVpZXQgTmFOcyB0aGF0IGRvbid0IGFyaXNlIGJ5ICdxdWlldGluZycgc2lnbmFsaW5nCisgICBOYU5zIChzZWUgSUVFRSA3NTQtMjAwOCwgc2VjdGlvbiA2LjIuMSkuICBJZiBzaWduID09IDAsIHJldHVybiB0aGUgb25lIHdob3NlCisgICBzaWduIGJpdCBpcyBjbGVhcmVkLiAgT3RoZXJ3aXNlLCByZXR1cm4gdGhlIG9uZSB3aG9zZSBzaWduIGJpdCBpcyBzZXQuCisqLworCitkb3VibGUKK19QeV9kZ19zdGRuYW4oaW50IHNpZ24pCit7CisgICAgVSBydjsKKyAgICB3b3JkMCgmcnYpID0gTkFOX1dPUkQwOworICAgIHdvcmQxKCZydikgPSBOQU5fV09SRDE7CisgICAgaWYgKHNpZ24pCisgICAgICAgIHdvcmQwKCZydikgfD0gU2lnbl9iaXQ7CisgICAgcmV0dXJuIGR2YWwoJnJ2KTsKK30KKworLyogUmV0dXJuIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIGluZmluaXR5LCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIHNpZ24gKDAgZm9yCisgKiBwb3NpdGl2ZSBpbmZpbml0eSwgMSBmb3IgbmVnYXRpdmUgaW5maW5pdHkpLiAqLworCitkb3VibGUKK19QeV9kZ19pbmZpbml0eShpbnQgc2lnbikKK3sKKyAgICBVIHJ2OworICAgIHdvcmQwKCZydikgPSBQT1NJTkZfV09SRDA7CisgICAgd29yZDEoJnJ2KSA9IFBPU0lORl9XT1JEMTsKKyAgICByZXR1cm4gc2lnbiA/IC1kdmFsKCZydikgOiBkdmFsKCZydik7Cit9CisKIGRvdWJsZQogX1B5X2RnX3N0cnRvZChjb25zdCBjaGFyICpzMDAsIGNoYXIgKipzZSkKIHsKQEAgLTE4ODYsMjAgKzE5MjYsMjAgQEAKICAgICAgICAgYmQyKys7CiAKICAgICAgICAgLyogQXQgdGhpcyBzdGFnZSBiZDUgLSBiYjUgPT0gZSA9PSBiZDIgLSBiYjIgKyBiYmUsIGJiMiAtIGJzMiA9PSAxLAotCSAgIGFuZCBicyA9PSAxLCBzbzoKKyAgICAgICAgICAgYW5kIGJzID09IDEsIHNvOgogCiAgICAgICAgICAgICAgIHRkdiA9PSBiZCAqIDEwKiplID0gYmQgKiAyKiooYmJlIC0gYmIyICsgYmQyKSAqIDUqKihiZDUgLSBiYjUpCiAgICAgICAgICAgICAgIHNydiA9PSBiYiAqIDIqKmJiZSA9IGJiICogMioqKGJiZSAtIGJiMiArIGJiMikKLQkgICAgICAwLjUgdWxwKHNydikgPT0gMioqKGJiZS0xKSA9IGJzICogMioqKGJiZSAtIGJiMiArIGJzMikKKyAgICAgICAgICAgICAgMC41IHVscChzcnYpID09IDIqKihiYmUtMSkgPSBicyAqIDIqKihiYmUgLSBiYjIgKyBiczIpCiAKLQkgICBJdCBmb2xsb3dzIHRoYXQ6CisgICAgICAgICAgIEl0IGZvbGxvd3MgdGhhdDoKIAogICAgICAgICAgICAgICBNICogdGR2ID0gYmQgKiAyKipiZDIgKiA1KipiZDUKICAgICAgICAgICAgICAgTSAqIHNydiA9IGJiICogMioqYmIyICogNSoqYmI1CiAgICAgICAgICAgICAgIE0gKiAwLjUgdWxwKHNydikgPSBicyAqIDIqKmJzMiAqIDUqKmJiNQogCi0JICAgZm9yIHNvbWUgY29uc3RhbnQgTS4gIChBY3R1YWxseSwgTSA9PSAyKiooYmIyIC0gYmJlKSAqIDUqKmJiNSwgYnV0Ci0JICAgdGhpcyBmYWN0IGlzIG5vdCBuZWVkZWQgYmVsb3cuKQorICAgICAgICAgICBmb3Igc29tZSBjb25zdGFudCBNLiAgKEFjdHVhbGx5LCBNID09IDIqKihiYjIgLSBiYmUpICogNSoqYmI1LCBidXQKKyAgICAgICAgICAgdGhpcyBmYWN0IGlzIG5vdCBuZWVkZWQgYmVsb3cuKQogICAgICAgICAqLwogCiAgICAgICAgIC8qIFJlbW92ZSBmYWN0b3Igb2YgMioqaSwgd2hlcmUgaSA9IG1pbihiYjIsIGJkMiwgYnMyKS4gKi8KQEAgLTIwNTUsNyArMjA5NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICArIEV4cF9tc2sxCiAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgIHdvcmQxKCZydikgPSAwOwotICAgICAgICAgICAgICAgICAgICBkc2lnbiA9IDA7CisgICAgICAgICAgICAgICAgICAgIC8qIGRzaWduID0gMDsgKi8KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjA5Miw3ICsyMTMyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgZ290byB1bmRmbDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBkc2lnbiA9IDEgLSBkc2lnbjsKKyAgICAgICAgICAgIC8qIGRzaWduID0gMSAtIGRzaWduOyAqLwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKChhYWRqID0gcmF0aW8oZGVsdGEsIGJzKSkgPD0gMi4pIHsKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX2FpeC5jIGIvUHl0aG9uL2R5bmxvYWRfYWl4LmMKaW5kZXggYjAyNWNkMy4uZjQwYTBiZSAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfYWl4LmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfYWl4LmMKQEAgLTI1LDExICsyNSw3IEBACiAgICAgdm9pZCAgICAgICAgICAqZW50cnk7CiB9IE1vZHVsZSwgKk1vZHVsZVB0cjsKIAotY29uc3Qgc3RydWN0IGZpbGVkZXNjciBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsKLSAgICB7Ii5zbyIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Im1vZHVsZS5zbyIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7MCwgMH0KLX07Citjb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsiLnNvIiwgTlVMTH07CiAKIHN0YXRpYyBpbnQKIGFpeF9nZXRvbGRtb2R1bGVzKHZvaWQgKiptb2RsaXN0cHRyKQpAQCAtMTA4LDYgKzEwNCw4IEBACiB7CiAKICAgICBjaGFyICptZXNzYWdlWzEwMjRdLCBlcnJidWZbMTAyNF07CisgICAgUHlPYmplY3QgKnBhdGhuYW1lX29iID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXJyYnVmX29iID0gTlVMTDsKICAgICByZWdpc3RlciBpbnQgaSxqOwogCiAgICAgc3RydWN0IGVycnRhYiB7CkBAIC0xMjgsNyArMTI2LDYgQEAKICAgICAgICAge0xfRVJST1JfRVJSTk8sICAgICAgICAgICAgICAgICBOVUxMfQogICAgIH07CiAKLSNkZWZpbmUgTE9BRF9FUlJUQUJfTEVOIChzaXplb2YobG9hZF9lcnJ0YWIpL3NpemVvZihsb2FkX2VycnRhYlswXSkpCiAjZGVmaW5lIEVSUkJVRl9BUFBFTkQocykgc3RybmNhdChlcnJidWYsIHMsIHNpemVvZihlcnJidWYpLXN0cmxlbihlcnJidWYpLTEpCiAKICAgICBQeU9TX3NucHJpbnRmKGVycmJ1Ziwgc2l6ZW9mKGVycmJ1ZiksICJmcm9tIG1vZHVsZSAlLjIwMHMgIiwgcGF0aG5hbWUpOwpAQCAtMTM5LDcgKzEzNiw3IEBACiAgICAgfQogICAgIGZvcihpID0gMDsgbWVzc2FnZVtpXSAmJiAqbWVzc2FnZVtpXTsgaSsrKSB7CiAgICAgICAgIGludCBuZXJyID0gYXRvaShtZXNzYWdlW2ldKTsKLSAgICAgICAgZm9yIChqPTA7IGo8TE9BRF9FUlJUQUJfTEVOIDsgaisrKSB7CisgICAgICAgIGZvciAoaj0wOyBqIDwgUHlfQVJSQVlfTEVOR1RIKGxvYWRfZXJydGFiKTsgaisrKSB7CiAgICAgICAgICAgICBpZiAobmVyciA9PSBsb2FkX2VycnRhYltqXS5lcnJObyAmJiBsb2FkX2VycnRhYltqXS5lcnJzdHIpCiAgICAgICAgICAgICBFUlJCVUZfQVBQRU5EKGxvYWRfZXJydGFiW2pdLmVycnN0cik7CiAgICAgICAgIH0KQEAgLTE0OCwxMiArMTQ1LDE2IEBACiAgICAgICAgIEVSUkJVRl9BUFBFTkQoIlxuIik7CiAgICAgfQogICAgIGVycmJ1ZltzdHJsZW4oZXJyYnVmKS0xXSA9ICdcMCc7ICAgICAgICAgICAgLyogdHJpbSBvZmYgbGFzdCBuZXdsaW5lICovCi0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLCBlcnJidWYpOworICAgIHBhdGhuYW1lX29iID0gUHlVbmljb2RlX0Zyb21TdHJpbmcocGF0aG5hbWUpOworICAgIGVycmJ1Zl9vYiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGVycmJ1Zik7CisgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3IoZXJyYnVmX29iLCBOVUxMLCBwYXRobmFtZSk7CisgICAgUHlfREVDUkVGKHBhdGhuYW1lX29iKTsKKyAgICBQeV9ERUNSRUYoZXJyYnVmX29iKTsKICAgICByZXR1cm47CiB9CiAKIAotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqZnFuYW1lLCBjb25zdCBjaGFyICpzaG9ydG5hbWUsCitkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCiB7CiAgICAgZGxfZnVuY3B0ciBwOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfZGwuYyBiL1B5dGhvbi9keW5sb2FkX2RsLmMKaW5kZXggMjYwNmUxZS4uNTgzNmNiM2IgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX2RsLmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfZGwuYwpAQCAtOSwxOCArOSwxNCBAQAogCiBleHRlcm4gY2hhciAqUHlfR2V0UHJvZ3JhbU5hbWUodm9pZCk7CiAKLWNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ci0JeyIubyIsICJyYiIsIENfRVhURU5TSU9OfSwKLQl7Im1vZHVsZS5vIiwgInJiIiwgQ19FWFRFTlNJT059LAotCXswLCAwfQotfTsKK2NvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0geyIubyIsIE5VTEx9OwogCiAKLWRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKmZxbmFtZSwgY29uc3QgY2hhciAqc2hvcnRuYW1lLAotCQkJCSAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCitkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCiB7Ci0JY2hhciBmdW5jbmFtZVsyNThdOworICAgIGNoYXIgZnVuY25hbWVbMjU4XTsKIAotCVB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksICJQeUluaXRfJS4yMDBzIiwgc2hvcnRuYW1lKTsKLQlyZXR1cm4gZGxfbG9hZG1vZChQeV9HZXRQcm9ncmFtTmFtZSgpLCBwYXRobmFtZSwgZnVuY25hbWUpOworICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksICJQeUluaXRfJS4yMDBzIiwgc2hvcnRuYW1lKTsKKyAgICByZXR1cm4gZGxfbG9hZG1vZChQeV9HZXRQcm9ncmFtTmFtZSgpLCBwYXRobmFtZSwgZnVuY25hbWUpOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfaHB1eC5jIGIvUHl0aG9uL2R5bmxvYWRfaHB1eC5jCmluZGV4IDE4YTgxMzcuLmM5NTU0MTQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX2hwdXguYworKysgYi9QeXRob24vZHlubG9hZF9ocHV4LmMKQEAgLTEzLDEzICsxMyw5IEBACiAjZGVmaW5lIEZVTkNOQU1FX1BBVFRFUk4gIlB5SW5pdF8lLjIwMHMiCiAjZW5kaWYKIAotY29uc3Qgc3RydWN0IGZpbGVkZXNjciBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsKLSAgICB7U0hMSUJfRVhULCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyJtb2R1bGUiU0hMSUJfRVhULCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgezAsIDB9Ci19OworY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7U0hMSUJfRVhULCBOVUxMfTsKIAotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqZnFuYW1lLCBjb25zdCBjaGFyICpzaG9ydG5hbWUsCitkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCiB7CiAgICAgZGxfZnVuY3B0ciBwOwpAQCAtMzcsMTEgKzMzLDIxIEBACiAgICAgLyogWFhYIENodWNrIEJsYWtlIG9uY2Ugd3JvdGUgdGhhdCAwIHNob3VsZCBiZSBCSU5EX05PU1RBUlQ/ICovCiAgICAgaWYgKGxpYiA9PSBOVUxMKSB7CiAgICAgICAgIGNoYXIgYnVmWzI1Nl07CisgICAgICAgIFB5T2JqZWN0ICpwYXRobmFtZV9vYiA9IE5VTEw7CisgICAgICAgIFB5T2JqZWN0ICpidWZfb2IgPSBOVUxMOworICAgICAgICBQeU9iamVjdCAqc2hvcnRuYW1lX29iID0gTlVMTDsKKwogICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCiAgICAgICAgICAgICBwZXJyb3IocGF0aG5hbWUpOwogICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJGYWlsZWQgdG8gbG9hZCAlLjIwMHMiLAogICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLCBidWYpOworICAgICAgICBidWZfb2IgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhidWYpOworICAgICAgICBzaG9ydG5hbWVfb2IgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhzaG9ydG5hbWUpOworICAgICAgICBwYXRobmFtZV9vYiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHBhdGhuYW1lKTsKKyAgICAgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3IoYnVmX29iLCBzaG9ydG5hbWVfb2IsIHBhdGhuYW1lX29iKTsKKyAgICAgICAgUHlfREVDUkVGKGJ1Zl9vYik7CisgICAgICAgIFB5X0RFQ1JFRihzaG9ydG5hbWVfb2IpOworICAgICAgICBQeV9ERUNSRUYocGF0aG5hbWVfb2IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlPU19zbnByaW50ZihmdW5jbmFtZSwgc2l6ZW9mKGZ1bmNuYW1lKSwgRlVOQ05BTUVfUEFUVEVSTiwgc2hvcnRuYW1lKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX25leHQuYyBiL1B5dGhvbi9keW5sb2FkX25leHQuYwppbmRleCBjYWJmOWI5Li44NWM5NWI0IDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF9uZXh0LmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfbmV4dC5jCkBAIC04LDExICs4LDcgQEAKIAogI2luY2x1ZGUgPG1hY2gtby9keWxkLmg+CiAKLWNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ci0gICAgeyIuc28iLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyJtb2R1bGUuc28iLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgezAsIDB9Ci19OworY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ii5zbyIsIE5VTEx9OwogCiAvKgogKiogUHl0aG9uIG1vZHVsZXMgYXJlIE1hY2gtTyBNSF9CVU5ETEUgZmlsZXMuIFRoZSBiZXN0IHdheSB0byBsb2FkIHRoZXNlCkBAIC0zMSw4ICsyNyw4IEBACiAjZGVmaW5lIExJTktPUFRJT05TIE5TTElOS01PRFVMRV9PUFRJT05fQklORE5PV3wgXAogICAgIE5TTElOS01PRFVMRV9PUFRJT05fUkVUVVJOX09OX0VSUk9SfE5TTElOS01PRFVMRV9PUFRJT05fUFJJVkFURQogI2VuZGlmCi1kbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpmcW5hbWUsIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCitkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCiB7CiAgICAgZGxfZnVuY3B0ciBwID0gTlVMTDsKICAgICBjaGFyIGZ1bmNuYW1lWzI1OF07CmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF9vczIuYyBiL1B5dGhvbi9keW5sb2FkX29zMi5jCmluZGV4IDEwMWMwMjQuLjBlMWI5MDcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX29zMi5jCisrKyBiL1B5dGhvbi9keW5sb2FkX29zMi5jCkBAIC05LDEzICs5LDkgQEAKICNpbmNsdWRlICJpbXBvcnRkbC5oIgogCiAKLWNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ci0gICAgeyIucHlkIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsiLmRsbCIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7MCwgMH0KLX07Citjb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsiLnB5ZCIsICIuZGxsIiwgTlVMTH07CiAKLWRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKmZxbmFtZSwgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGRsX2Z1bmNwdHIgcDsKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX3NobGliLmMgYi9QeXRob24vZHlubG9hZF9zaGxpYi5jCmluZGV4IDdlYTUxMGUuLjBjYTY1YzcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX3NobGliLmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfc2hsaWIuYwpAQCAtMzYsMzEgKzM2LDI1IEBACiAgICBsaXZlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4gIEUuZy4gZm9vbW9kdWxlLmNweXRob24tMzIuc28KICovCiAKLWNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Citjb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsKICNpZmRlZiBfX0NZR1dJTl9fCi0gICAgeyIuZGxsIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsibW9kdWxlLmRsbCIsICJyYiIsIENfRVhURU5TSU9OfSwKKyAgICAiLmRsbCIsCiAjZWxzZSAgLyogIV9fQ1lHV0lOX18gKi8KICNpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiBkZWZpbmVkKFBZQ0NfR0NDKQotICAgIHsiLnB5ZCIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Ii5kbGwiLCAicmIiLCBDX0VYVEVOU0lPTn0sCisgICAgIi5weWQiLAorICAgICIuZGxsIiwKICNlbHNlICAvKiAhKGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19HQ0MpKSAqLwogI2lmZGVmIF9fVk1TCi0gICAgeyIuZXhlIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsiLkVYRSIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Im1vZHVsZS5leGUiLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyJNT0RVTEUuRVhFIiwgInJiIiwgQ19FWFRFTlNJT059LAorICAgICIuZXhlIiwKKyAgICAiLkVYRSIsCiAjZWxzZSAgLyogIV9fVk1TICovCi0gICAgeyIuIiBTT0FCSSAiLnNvIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsibW9kdWxlLiIgU09BQkkgIi5zbyIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Ii5hYmkiIFBZVEhPTl9BQklfU1RSSU5HICIuc28iLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyJtb2R1bGUuYWJpIiBQWVRIT05fQUJJX1NUUklORyAiLnNvIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsiLnNvIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsibW9kdWxlLnNvIiwgInJiIiwgQ19FWFRFTlNJT059LAorICAgICIuIiBTT0FCSSAiLnNvIiwKKyAgICAiLmFiaSIgUFlUSE9OX0FCSV9TVFJJTkcgIi5zbyIsCisgICAgIi5zbyIsCiAjZW5kaWYgIC8qIF9fVk1TICovCiAjZW5kaWYgIC8qIGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19HQ0MpICovCiAjZW5kaWYgIC8qIF9fQ1lHV0lOX18gKi8KLSAgICB7MCwgMH0KKyAgICBOVUxMLAogfTsKIAogc3RhdGljIHN0cnVjdCB7CkBAIC03NSw3ICs2OSw3IEBACiBzdGF0aWMgaW50IG5oYW5kbGVzID0gMDsKIAogCi1kbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpmcW5hbWUsIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKK2RsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKIHsKICAgICBkbF9mdW5jcHRyIHA7CkBAIC0xMjEsMTAgKzExNSw2IEBACiAgICAgZGxvcGVuZmxhZ3MgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnAtPmRsb3BlbmZsYWdzOwogI2VuZGlmCiAKLSAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJkbG9wZW4oXCIlc1wiLCAleCk7XG4iLCBwYXRobmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGxvcGVuZmxhZ3MpOwotCiAjaWZkZWYgX19WTVMKICAgICAvKiBWTVMgY3VycmVudGx5IGRvbid0IGFsbG93IGEgcGF0aG5hbWUsIHVzZSBhIGxvZ2ljYWwgbmFtZSBpbnN0ZWFkICovCiAgICAgLyogQ29uY2F0ZW5hdGUgJ3B5dGhvbl9tb2R1bGVfJyBhbmQgc2hvcnRuYW1lICovCkBAIC0xMzksMTAgKzEyOSwxOSBAQAogICAgIGhhbmRsZSA9IGRsb3BlbihwYXRobmFtZSwgZGxvcGVuZmxhZ3MpOwogCiAgICAgaWYgKGhhbmRsZSA9PSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICptb2RfbmFtZSA9IE5VTEw7CisgICAgICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3QgKmVycm9yX29iID0gTlVMTDsKICAgICAgICAgY29uc3QgY2hhciAqZXJyb3IgPSBkbGVycm9yKCk7CiAgICAgICAgIGlmIChlcnJvciA9PSBOVUxMKQogICAgICAgICAgICAgZXJyb3IgPSAidW5rbm93biBkbG9wZW4oKSBlcnJvciI7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwgZXJyb3IpOworICAgICAgICBlcnJvcl9vYiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGVycm9yKTsKKyAgICAgICAgcGF0aCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHBhdGhuYW1lKTsKKyAgICAgICAgbW9kX25hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhzaG9ydG5hbWUpOworICAgICAgICBQeUVycl9TZXRJbXBvcnRFcnJvcihlcnJvcl9vYiwgbW9kX25hbWUsIHBhdGgpOworICAgICAgICBQeV9YREVDUkVGKGVycm9yX29iKTsKKyAgICAgICAgUHlfWERFQ1JFRihwYXRoKTsKKyAgICAgICAgUHlfWERFQ1JFRihtb2RfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoZnAgIT0gTlVMTCAmJiBuaGFuZGxlcyA8IDEyOCkKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX3N0dWIuYyBiL1B5dGhvbi9keW5sb2FkX3N0dWIuYwppbmRleCA2OWY4YjQ1Li41OTE2MDQ4IDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF9zdHViLmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfc3R1Yi5jCkBAIC02LDYgKzYsNCBAQAogI2luY2x1ZGUgImltcG9ydGRsLmgiCiAKIAotY29uc3Qgc3RydWN0IGZpbGVkZXNjciBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsKLQl7MCwgMH0KLX07Citjb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHtOVUxMfTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX3dpbi5jIGIvUHl0aG9uL2R5bmxvYWRfd2luLmMKaW5kZXggNzNhMWRjZi4uMjViNjY4MCAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfd2luLmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfd2luLmMKQEAgLTEyLDE2ICsxMiwxOCBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAogLy8gImFjdGl2YXRpb24gY29udGV4dCIgbWFnaWMgLSBzZWUgZGxfbnQuYy4uLgorI2lmIEhBVkVfU1hTCiBleHRlcm4gVUxPTkdfUFRSIF9QeV9BY3RpdmF0ZUFjdEN0eCgpOwogdm9pZCBfUHlfRGVhY3RpdmF0ZUFjdEN0eChVTE9OR19QVFIgY29va2llKTsKLQotY29uc3Qgc3RydWN0IGZpbGVkZXNjciBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsKLSNpZmRlZiBfREVCVUcKLSAgICB7Il9kLnB5ZCIsICJyYiIsIENfRVhURU5TSU9OfSwKLSNlbHNlCi0gICAgeyIucHlkIiwgInJiIiwgQ19FWFRFTlNJT059LAogI2VuZGlmCi0gICAgezAsIDB9CisKK2NvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0geworI2lmZGVmIF9ERUJVRworICAgICJfZC5weWQiLAorI2Vsc2UKKyAgICAiLnB5ZCIsCisjZW5kaWYKKyAgICBOVUxMCiB9OwogCiAKQEAgLTE3MSw0MyArMTczLDQ0IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLWRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKmZxbmFtZSwgY29uc3QgY2hhciAqc2hvcnRuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZFdpbmRvd3MoY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdGhuYW1lLCBGSUxFICpmcCkKIHsKICAgICBkbF9mdW5jcHRyIHA7CiAgICAgY2hhciBmdW5jbmFtZVsyNThdLCAqaW1wb3J0X3B5dGhvbjsKKyAgICB3Y2hhcl90ICp3cGF0aG5hbWU7CiAKICNpZm5kZWYgX0RFQlVHCiAgICAgX1B5X0NoZWNrUHl0aG9uMygpOwogI2VuZGlmCiAKKyAgICB3cGF0aG5hbWUgPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBhdGhuYW1lKTsKKyAgICBpZiAod3BhdGhuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgUHlPU19zbnByaW50ZihmdW5jbmFtZSwgc2l6ZW9mKGZ1bmNuYW1lKSwgIlB5SW5pdF8lLjIwMHMiLCBzaG9ydG5hbWUpOwogCiAgICAgewogICAgICAgICBISU5TVEFOQ0UgaERMTCA9IE5VTEw7Ci0gICAgICAgIGNoYXIgcGF0aGJ1ZlsyNjBdOwotICAgICAgICBMUFRTVFIgZHVtbXk7CiAgICAgICAgIHVuc2lnbmVkIGludCBvbGRfbW9kZTsKKyNpZiBIQVZFX1NYUwogICAgICAgICBVTE9OR19QVFIgY29va2llID0gMDsKLSAgICAgICAgLyogV2UgdXNlIExvYWRMaWJyYXJ5RXggc28gV2luZG93cyBsb29rcyBmb3IgZGVwZW5kZW50IERMTHMKLSAgICAgICAgICAgIGluIGRpcmVjdG9yeSBvZiBwYXRobmFtZSBmaXJzdC4gIEhvd2V2ZXIsIFdpbmRvd3M5NQotICAgICAgICAgICAgY2FuIHNvbWV0aW1lcyBub3Qgd29yayBjb3JyZWN0bHkgdW5sZXNzIHRoZSBhYnNvbHV0ZQotICAgICAgICAgICAgcGF0aCBpcyB1c2VkLiAgSWYgR2V0RnVsbFBhdGhOYW1lKCkgZmFpbHMsIHRoZSBMb2FkTGlicmFyeQotICAgICAgICAgICAgd2lsbCBjZXJ0YWlubHkgZmFpbCB0b28sIHNvIHVzZSBpdHMgZXJyb3IgY29kZSAqLworI2VuZGlmCiAKICAgICAgICAgLyogRG9uJ3QgZGlzcGxheSBhIG1lc3NhZ2UgYm94IHdoZW4gUHl0aG9uIGNhbid0IGxvYWQgYSBETEwgKi8KICAgICAgICAgb2xkX21vZGUgPSBTZXRFcnJvck1vZGUoU0VNX0ZBSUxDUklUSUNBTEVSUk9SUyk7CiAKLSAgICAgICAgaWYgKEdldEZ1bGxQYXRoTmFtZShwYXRobmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YocGF0aGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aGJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZHVtbXkpKSB7Ci0gICAgICAgICAgICBVTE9OR19QVFIgY29va2llID0gX1B5X0FjdGl2YXRlQWN0Q3R4KCk7Ci0gICAgICAgICAgICAvKiBYWFggVGhpcyBjYWxsIGRvZXNuJ3QgZXhpc3QgaW4gV2luZG93cyBDRSAqLwotICAgICAgICAgICAgaERMTCA9IExvYWRMaWJyYXJ5RXgocGF0aG5hbWUsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hfUEFUSCk7Ci0gICAgICAgICAgICBfUHlfRGVhY3RpdmF0ZUFjdEN0eChjb29raWUpOwotICAgICAgICB9CisjaWYgSEFWRV9TWFMKKyAgICAgICAgY29va2llID0gX1B5X0FjdGl2YXRlQWN0Q3R4KCk7CisjZW5kaWYKKyAgICAgICAgLyogV2UgdXNlIExvYWRMaWJyYXJ5RXggc28gV2luZG93cyBsb29rcyBmb3IgZGVwZW5kZW50IERMTHMKKyAgICAgICAgICAgIGluIGRpcmVjdG9yeSBvZiBwYXRobmFtZSBmaXJzdC4gKi8KKyAgICAgICAgLyogWFhYIFRoaXMgY2FsbCBkb2Vzbid0IGV4aXN0IGluIFdpbmRvd3MgQ0UgKi8KKyAgICAgICAgaERMTCA9IExvYWRMaWJyYXJ5RXhXKHdwYXRobmFtZSwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExPQURfV0lUSF9BTFRFUkVEX1NFQVJDSF9QQVRIKTsKKyNpZiBIQVZFX1NYUworICAgICAgICBfUHlfRGVhY3RpdmF0ZUFjdEN0eChjb29raWUpOworI2VuZGlmCiAKICAgICAgICAgLyogcmVzdG9yZSBvbGQgZXJyb3IgbW9kZSBzZXR0aW5ncyAqLwogICAgICAgICBTZXRFcnJvck1vZGUob2xkX21vZGUpOwpAQCAtMjU0LDMxICsyNTcsMzQgQEAKICAgICAgICAgICAgICAgICAgICAgIkRMTCBsb2FkIGZhaWxlZDogIik7CiAKICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsKCZtZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGVJbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgdGhlTGVuZ3RoKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfSW1wb3J0RXJyb3IsIG1lc3NhZ2UpOwotICAgICAgICAgICAgUHlfWERFQ1JFRihtZXNzYWdlKTsKKyAgICAgICAgICAgIGlmIChtZXNzYWdlICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRJbXBvcnRFcnJvcihtZXNzYWdlLCBQeVVuaWNvZGVfRnJvbVN0cmluZyhzaG9ydG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobWVzc2FnZSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNoYXIgYnVmZmVyWzI1Nl07CiAKKyAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwKICNpZmRlZiBfREVCVUcKLSAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgInB5dGhvbiVkJWRfZC5kbGwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uJWQlZF9kLmRsbCIsCiAjZWxzZQotICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAicHl0aG9uJWQlZC5kbGwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uJWQlZC5kbGwiLAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX01BSk9SX1ZFUlNJT04sUFlfTUlOT1JfVkVSU0lPTik7CiAgICAgICAgICAgICBpbXBvcnRfcHl0aG9uID0gR2V0UHl0aG9uSW1wb3J0KGhETEwpOwogCiAgICAgICAgICAgICBpZiAoaW1wb3J0X3B5dGhvbiAmJgogICAgICAgICAgICAgICAgIHN0cmNhc2VjbXAoYnVmZmVyLGltcG9ydF9weXRob24pKSB7Ci0gICAgICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vZHVsZSB1c2Ugb2YgJS4xNTBzIGNvbmZsaWN0cyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aCB0aGlzIHZlcnNpb24gb2YgUHl0aG9uLiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRfcHl0aG9uKTsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgdXNlIG9mICUuMTUwcyBjb25mbGljdHMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aCB0aGlzIHZlcnNpb24gb2YgUHl0aG9uLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydF9weXRob24pOwogICAgICAgICAgICAgICAgIEZyZWVMaWJyYXJ5KGhETEwpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2Vycm9ycy5jIGIvUHl0aG9uL2Vycm9ycy5jCmluZGV4IDVhOWE2MjQuLjYyNmIxNmUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9lcnJvcnMuYworKysgYi9QeXRob24vZXJyb3JzLmMKQEAgLTMyMCw2ICszMjAsMzkgQEAKICAgICBQeUVycl9SZXN0b3JlKE5VTEwsIE5VTEwsIE5VTEwpOwogfQogCit2b2lkCitQeUVycl9HZXRFeGNJbmZvKFB5T2JqZWN0ICoqcF90eXBlLCBQeU9iamVjdCAqKnBfdmFsdWUsIFB5T2JqZWN0ICoqcF90cmFjZWJhY2spCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKworICAgICpwX3R5cGUgPSB0c3RhdGUtPmV4Y190eXBlOworICAgICpwX3ZhbHVlID0gdHN0YXRlLT5leGNfdmFsdWU7CisgICAgKnBfdHJhY2ViYWNrID0gdHN0YXRlLT5leGNfdHJhY2ViYWNrOworCisgICAgUHlfWElOQ1JFRigqcF90eXBlKTsKKyAgICBQeV9YSU5DUkVGKCpwX3ZhbHVlKTsKKyAgICBQeV9YSU5DUkVGKCpwX3RyYWNlYmFjayk7Cit9CisKK3ZvaWQKK1B5RXJyX1NldEV4Y0luZm8oUHlPYmplY3QgKnBfdHlwZSwgUHlPYmplY3QgKnBfdmFsdWUsIFB5T2JqZWN0ICpwX3RyYWNlYmFjaykKK3sKKyAgICBQeU9iamVjdCAqb2xkdHlwZSwgKm9sZHZhbHVlLCAqb2xkdHJhY2ViYWNrOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisKKyAgICBvbGR0eXBlID0gdHN0YXRlLT5leGNfdHlwZTsKKyAgICBvbGR2YWx1ZSA9IHRzdGF0ZS0+ZXhjX3ZhbHVlOworICAgIG9sZHRyYWNlYmFjayA9IHRzdGF0ZS0+ZXhjX3RyYWNlYmFjazsKKworICAgIHRzdGF0ZS0+ZXhjX3R5cGUgPSBwX3R5cGU7CisgICAgdHN0YXRlLT5leGNfdmFsdWUgPSBwX3ZhbHVlOworICAgIHRzdGF0ZS0+ZXhjX3RyYWNlYmFjayA9IHBfdHJhY2ViYWNrOworCisgICAgUHlfWERFQ1JFRihvbGR0eXBlKTsKKyAgICBQeV9YREVDUkVGKG9sZHZhbHVlKTsKKyAgICBQeV9YREVDUkVGKG9sZHRyYWNlYmFjayk7Cit9CisKIC8qIENvbnZlbmllbmNlIGZ1bmN0aW9ucyB0byBzZXQgYSB0eXBlIGVycm9yIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIDAgKi8KIAogaW50CkBAIC0zNDEsMTEgKzM3NCw5IEBACiBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlPYmplY3QgKmV4YywgUHlPYmplY3QgKmZpbGVuYW1lT2JqZWN0KQogewogICAgIFB5T2JqZWN0ICptZXNzYWdlOwotICAgIFB5T2JqZWN0ICp2OworICAgIFB5T2JqZWN0ICp2LCAqYXJnczsKICAgICBpbnQgaSA9IGVycm5vOwotI2lmbmRlZiBNU19XSU5ET1dTCi0gICAgY2hhciAqczsKLSNlbHNlCisjaWZkZWYgTVNfV0lORE9XUwogICAgIFdDSEFSICpzX2J1ZiA9IE5VTEw7CiAjZW5kaWYgLyogVW5peC9XaW5kb3dzICovCiAKQEAgLTM1NSwxMSArMzg2LDE0IEBACiAjZW5kaWYKIAogI2lmbmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKGkgPT0gMCkKLSAgICAgICAgcyA9ICJFcnJvciI7IC8qIFNvbWV0aW1lcyBlcnJubyBkaWRuJ3QgZ2V0IHNldCAqLwotICAgIGVsc2UKLSAgICAgICAgcyA9IHN0cmVycm9yKGkpOwotICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChzLCBzdHJsZW4ocyksICJpZ25vcmUiKTsKKyAgICBpZiAoaSAhPSAwKSB7CisgICAgICAgIGNoYXIgKnMgPSBzdHJlcnJvcihpKTsKKyAgICAgICAgbWVzc2FnZSA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUocywgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogU29tZXRpbWVzIGVycm5vIGRpZG4ndCBnZXQgc2V0ICovCisgICAgICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiRXJyb3IiKTsKKyAgICB9CiAjZWxzZQogICAgIGlmIChpID09IDApCiAgICAgICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiRXJyb3IiKTsgLyogU29tZXRpbWVzIGVycm5vIGRpZG4ndCBnZXQgc2V0ICovCkBAIC0zOTUsNyArNDI5LDcgQEAKICAgICAgICAgICAgICAgICAvKiByZW1vdmUgdHJhaWxpbmcgY3IvbGYgYW5kIGRvdHMgKi8KICAgICAgICAgICAgICAgICB3aGlsZSAobGVuID4gMCAmJiAoc19idWZbbGVuLTFdIDw9IEwnICcgfHwgc19idWZbbGVuLTFdID09IEwnLicpKQogICAgICAgICAgICAgICAgICAgICBzX2J1ZlstLWxlbl0gPSBMJ1wwJzsKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHNfYnVmLCBsZW4pOworICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHNfYnVmLCBsZW4pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtNDEwLDE0ICs0NDQsMTggQEAKICAgICB9CiAKICAgICBpZiAoZmlsZW5hbWVPYmplY3QgIT0gTlVMTCkKLSAgICAgICAgdiA9IFB5X0J1aWxkVmFsdWUoIihpT08pIiwgaSwgbWVzc2FnZSwgZmlsZW5hbWVPYmplY3QpOworICAgICAgICBhcmdzID0gUHlfQnVpbGRWYWx1ZSgiKGlPTykiLCBpLCBtZXNzYWdlLCBmaWxlbmFtZU9iamVjdCk7CiAgICAgZWxzZQotICAgICAgICB2ID0gUHlfQnVpbGRWYWx1ZSgiKGlPKSIsIGksIG1lc3NhZ2UpOworICAgICAgICBhcmdzID0gUHlfQnVpbGRWYWx1ZSgiKGlPKSIsIGksIG1lc3NhZ2UpOwogICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKIAotICAgIGlmICh2ICE9IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0T2JqZWN0KGV4Yywgdik7Ci0gICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICBpZiAoYXJncyAhPSBOVUxMKSB7CisgICAgICAgIHYgPSBQeU9iamVjdF9DYWxsKGV4YywgYXJncywgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgaWYgKHYgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KChQeU9iamVjdCAqKSBQeV9UWVBFKHYpLCB2KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgfQogICAgIH0KICNpZmRlZiBNU19XSU5ET1dTCiAgICAgTG9jYWxGcmVlKHNfYnVmKTsKQEAgLTQ2NCw3ICs1MDIsNyBAQAogICAgIGludCBsZW47CiAgICAgV0NIQVIgKnNfYnVmID0gTlVMTDsgLyogRnJlZSB2aWEgTG9jYWxGcmVlICovCiAgICAgUHlPYmplY3QgKm1lc3NhZ2U7Ci0gICAgUHlPYmplY3QgKnY7CisgICAgUHlPYmplY3QgKmFyZ3MsICp2OwogICAgIERXT1JEIGVyciA9IChEV09SRClpZXJyOwogICAgIGlmIChlcnI9PTApIGVyciA9IEdldExhc3RFcnJvcigpOwogICAgIGxlbiA9IEZvcm1hdE1lc3NhZ2VXKApAQCAtNDg3LDcgKzUyNSw3IEBACiAgICAgICAgIC8qIHJlbW92ZSB0cmFpbGluZyBjci9sZiBhbmQgZG90cyAqLwogICAgICAgICB3aGlsZSAobGVuID4gMCAmJiAoc19idWZbbGVuLTFdIDw9IEwnICcgfHwgc19idWZbbGVuLTFdID09IEwnLicpKQogICAgICAgICAgICAgc19idWZbLS1sZW5dID0gTCdcMCc7Ci0gICAgICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoc19idWYsIGxlbik7CisgICAgICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHNfYnVmLCBsZW4pOwogICAgIH0KIAogICAgIGlmIChtZXNzYWdlID09IE5VTEwpCkBAIC00OTYsMTUgKzUzNCwyMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoZmlsZW5hbWVPYmplY3QgIT0gTlVMTCkKLSAgICAgICAgdiA9IFB5X0J1aWxkVmFsdWUoIihpT08pIiwgZXJyLCBtZXNzYWdlLCBmaWxlbmFtZU9iamVjdCk7Ci0gICAgZWxzZQotICAgICAgICB2ID0gUHlfQnVpbGRWYWx1ZSgiKGlPKSIsIGVyciwgbWVzc2FnZSk7CisgICAgaWYgKGZpbGVuYW1lT2JqZWN0ID09IE5VTEwpCisgICAgICAgIGZpbGVuYW1lT2JqZWN0ID0gUHlfTm9uZTsKKyAgICAvKiBUaGlzIGlzIHRoZSBjb25zdHJ1Y3RvciBzaWduYXR1cmUgZm9yIHBhc3NpbmcgYSBXaW5kb3dzIGVycm9yIGNvZGUuCisgICAgICAgVGhlIFBPU0lYIHRyYW5zbGF0aW9uIHdpbGwgYmUgZmlndXJlZCBvdXQgYnkgdGhlIGNvbnN0cnVjdG9yLiAqLworICAgIGFyZ3MgPSBQeV9CdWlsZFZhbHVlKCIoaU9PaSkiLCAwLCBtZXNzYWdlLCBmaWxlbmFtZU9iamVjdCwgZXJyKTsKICAgICBQeV9ERUNSRUYobWVzc2FnZSk7CiAKLSAgICBpZiAodiAhPSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldE9iamVjdChleGMsIHYpOwotICAgICAgICBQeV9ERUNSRUYodik7CisgICAgaWYgKGFyZ3MgIT0gTlVMTCkgeworICAgICAgICB2ID0gUHlPYmplY3RfQ2FsbChleGMsIGFyZ3MsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgIGlmICh2ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdCgoUHlPYmplY3QgKikgUHlfVFlQRSh2KSwgdik7CisgICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgIH0KICAgICB9CiAgICAgTG9jYWxGcmVlKHNfYnVmKTsKICAgICByZXR1cm4gTlVMTDsKQEAgLTU3NSw2ICs2MTgsNDkgQEAKIH0KICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKK1B5T2JqZWN0ICoKK1B5RXJyX1NldEltcG9ydEVycm9yKFB5T2JqZWN0ICptc2csIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCkKK3sKKyAgICBQeU9iamVjdCAqYXJncywgKmt3YXJncywgKmVycm9yOworCisgICAgaWYgKG1zZyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGFyZ3MgPSBQeVR1cGxlX05ldygxKTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGt3YXJncyA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoa3dhcmdzID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobmFtZSA9PSBOVUxMKSB7CisgICAgICAgIG5hbWUgPSBQeV9Ob25lOworICAgIH0KKworICAgIGlmIChwYXRoID09IE5VTEwpIHsKKyAgICAgICAgcGF0aCA9IFB5X05vbmU7CisgICAgfQorCisgICAgUHlfSU5DUkVGKG1zZyk7CisgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCBtc2cpOworICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGt3YXJncywgIm5hbWUiLCBuYW1lKTsKKyAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhrd2FyZ3MsICJwYXRoIiwgcGF0aCk7CisKKyAgICBlcnJvciA9IFB5T2JqZWN0X0NhbGwoUHlFeGNfSW1wb3J0RXJyb3IsIGFyZ3MsIGt3YXJncyk7CisgICAgaWYgKGVycm9yICE9IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0T2JqZWN0KChQeU9iamVjdCAqKVB5X1RZUEUoZXJyb3IpLCBlcnJvcik7CisgICAgICAgIFB5X0RFQ1JFRihlcnJvcik7CisgICAgfQorCisgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIFB5X0RFQ1JFRihrd2FyZ3MpOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKIHZvaWQKIF9QeUVycl9CYWRJbnRlcm5hbENhbGwoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pCiB7CkBAIC02NTYsNyArNzQyLDcgQEAKICAgICAgICAgaWYgKGJhc2VzID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGZhaWx1cmU7CiAgICAgfQotICAgIC8qIENyZWF0ZSBhIHJlYWwgbmV3LXN0eWxlIGNsYXNzLiAqLworICAgIC8qIENyZWF0ZSBhIHJlYWwgY2xhc3MuICovCiAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKSZQeVR5cGVfVHlwZSwgInNPTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdCsxLCBiYXNlcywgZGljdCk7CiAgIGZhaWx1cmU6CkBAIC03MDcsNiArNzkzLDcgQEAKIHZvaWQKIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShQeU9iamVjdCAqb2JqKQogeworICAgIF9QeV9JREVOVElGSUVSKF9fbW9kdWxlX18pOwogICAgIFB5T2JqZWN0ICpmLCAqdCwgKnYsICp0YjsKICAgICBQeUVycl9GZXRjaCgmdCwgJnYsICZ0Yik7CiAgICAgZiA9IFB5U3lzX0dldE9iamVjdCgic3RkZXJyIik7CkBAIC03MjMsNyArODEwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lID0gZG90KzE7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG1vZHVsZU5hbWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHQsICJfX21vZHVsZV9fIik7CisgICAgICAgICAgICBtb2R1bGVOYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZCh0LCAmUHlJZF9fX21vZHVsZV9fKTsKICAgICAgICAgICAgIGlmIChtb2R1bGVOYW1lID09IE5VTEwpCiAgICAgICAgICAgICAgICAgUHlGaWxlX1dyaXRlU3RyaW5nKCI8dW5rbm93bj4iLCBmKTsKICAgICAgICAgICAgIGVsc2UgewpAQCAtNzc0LDYgKzg2MSwxMiBAQAogUHlFcnJfU3ludGF4TG9jYXRpb25FeChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCiB7CiAgICAgUHlPYmplY3QgKmV4YywgKnYsICp0YiwgKnRtcDsKKyAgICBfUHlfSURFTlRJRklFUihmaWxlbmFtZSk7CisgICAgX1B5X0lERU5USUZJRVIobGluZW5vKTsKKyAgICBfUHlfSURFTlRJRklFUihtc2cpOworICAgIF9QeV9JREVOVElGSUVSKG9mZnNldCk7CisgICAgX1B5X0lERU5USUZJRVIocHJpbnRfZmlsZV9hbmRfbGluZSk7CisgICAgX1B5X0lERU5USUZJRVIodGV4dCk7CiAKICAgICAvKiBhZGQgYXR0cmlidXRlcyBmb3IgdGhlIGxpbmUgbnVtYmVyIGFuZCBmaWxlbmFtZSBmb3IgdGhlIGVycm9yICovCiAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnYsICZ0Yik7CkBAIC03ODQsNyArODc3LDcgQEAKICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHYsICJsaW5lbm8iLCB0bXApKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZCh2LCAmUHlJZF9saW5lbm8sIHRtcCkpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBQeV9ERUNSRUYodG1wKTsKICAgICB9CkBAIC03OTMsNyArODg2LDcgQEAKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyh2LCAib2Zmc2V0IiwgdG1wKSkKKyAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHYsICZQeUlkX29mZnNldCwgdG1wKSkKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgICAgIH0KQEAgLTgwMywzNSArODk2LDM1IEBACiAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcodiwgImZpbGVuYW1lIiwgdG1wKSkKKyAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHYsICZQeUlkX2ZpbGVuYW1lLCB0bXApKQogICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKICAgICAgICAgfQogCiAgICAgICAgIHRtcCA9IFB5RXJyX1Byb2dyYW1UZXh0KGZpbGVuYW1lLCBsaW5lbm8pOwogICAgICAgICBpZiAodG1wKSB7Ci0gICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyh2LCAidGV4dCIsIHRtcCkpCisgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZCh2LCAmUHlJZF90ZXh0LCB0bXApKQogICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyh2LCAib2Zmc2V0IiwgUHlfTm9uZSkpIHsKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZCh2LCAmUHlJZF9vZmZzZXQsIFB5X05vbmUpKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgfQogICAgIGlmIChleGMgIT0gUHlFeGNfU3ludGF4RXJyb3IpIHsKLSAgICAgICAgaWYgKCFQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHYsICJtc2ciKSkgeworICAgICAgICBpZiAoIV9QeU9iamVjdF9IYXNBdHRySWQodiwgJlB5SWRfbXNnKSkgewogICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfU3RyKHYpOwogICAgICAgICAgICAgaWYgKHRtcCkgewotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHYsICJtc2ciLCB0bXApKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHYsICZQeUlkX21zZywgdG1wKSkKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoIVB5T2JqZWN0X0hhc0F0dHJTdHJpbmcodiwgInByaW50X2ZpbGVfYW5kX2xpbmUiKSkgewotICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcodiwgInByaW50X2ZpbGVfYW5kX2xpbmUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSkpCisgICAgICAgIGlmICghX1B5T2JqZWN0X0hhc0F0dHJJZCh2LCAmUHlJZF9wcmludF9maWxlX2FuZF9saW5lKSkgeworICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQodiwgJlB5SWRfcHJpbnRfZmlsZV9hbmRfbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUpKQogICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9QeXRob24vZmlsZXV0aWxzLmMgYi9QeXRob24vZmlsZXV0aWxzLmMKaW5kZXggNTNlOGE0Ny4uYjdjNDJlOCAxMDA2NDQKLS0tIGEvUHl0aG9uL2ZpbGV1dGlscy5jCisrKyBiL1B5dGhvbi9maWxldXRpbHMuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJvc2RlZnMuaCIKICNpZmRlZiBNU19XSU5ET1dTCiAjICBpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZW5kaWYKQEAgLTEyLDYgKzEzLDM2IEBACiBleHRlcm4gd2NoYXJfdCogX1B5X0RlY29kZVVURjhfc3Vycm9nYXRlZXNjYXBlKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSk7CiAjZW5kaWYKIAorUHlPYmplY3QgKgorX1B5X2RldmljZV9lbmNvZGluZyhpbnQgZmQpCit7CisjaWYgZGVmaW5lZChNU19XSU5ET1dTKSB8fCBkZWZpbmVkKE1TX1dJTjY0KQorICAgIFVJTlQgY3A7CisjZW5kaWYKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkgfHwgIWlzYXR0eShmZCkpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorI2lmIGRlZmluZWQoTVNfV0lORE9XUykgfHwgZGVmaW5lZChNU19XSU42NCkKKyAgICBpZiAoZmQgPT0gMCkKKyAgICAgICAgY3AgPSBHZXRDb25zb2xlQ1AoKTsKKyAgICBlbHNlIGlmIChmZCA9PSAxIHx8IGZkID09IDIpCisgICAgICAgIGNwID0gR2V0Q29uc29sZU91dHB1dENQKCk7CisgICAgZWxzZQorICAgICAgICBjcCA9IDA7CisgICAgLyogR2V0Q29uc29sZUNQKCkgYW5kIEdldENvbnNvbGVPdXRwdXRDUCgpIHJldHVybiAwIGlmIHRoZSBhcHBsaWNhdGlvbgorICAgICAgIGhhcyBubyBjb25zb2xlICovCisgICAgaWYgKGNwICE9IDApCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiY3AldSIsICh1bnNpZ25lZCBpbnQpY3ApOworI2VsaWYgZGVmaW5lZChDT0RFU0VUKQorICAgIHsKKyAgICAgICAgY2hhciAqY29kZXNldCA9IG5sX2xhbmdpbmZvKENPREVTRVQpOworICAgICAgICBpZiAoY29kZXNldCAhPSBOVUxMICYmIGNvZGVzZXRbMF0gIT0gMCkKKyAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhjb2Rlc2V0KTsKKyAgICB9CisjZW5kaWYKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKwogI2lmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoTVNfV0lORE9XUykKIGV4dGVybiBpbnQgX1B5X25vcm1hbGl6ZV9lbmNvZGluZyhjb25zdCBjaGFyICosIGNoYXIgKiwgc2l6ZV90KTsKIApAQCAtMjAwLDcgKzIzMSw5IEBACiAgICBSZXR1cm4gYSBwb2ludGVyIHRvIGEgbmV3bHkgYWxsb2NhdGVkIHdpZGUgY2hhcmFjdGVyIHN0cmluZyAodXNlCiAgICBQeU1lbV9GcmVlKCkgdG8gZnJlZSB0aGUgbWVtb3J5KSBhbmQgd3JpdGUgdGhlIG51bWJlciBvZiB3cml0dGVuIHdpZGUKICAgIGNoYXJhY3RlcnMgZXhjbHVkaW5nIHRoZSBudWxsIGNoYXJhY3RlciBpbnRvICpzaXplIGlmIHNpemUgaXMgbm90IE5VTEwsIG9yCi0gICBOVUxMIG9uIGVycm9yIChjb252ZXJzaW9uIG9yIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yKS4KKyAgIE5VTEwgb24gZXJyb3IgKGRlY29kaW5nIG9yIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yKS4gSWYgc2l6ZSBpcyBub3QgTlVMTCwKKyAgICpzaXplIGlzIHNldCB0byAoc2l6ZV90KS0xIG9uIG1lbW9yeSBlcnJvciBhbmQgKHNpemVfdCktMiBvbiBkZWNvZGluZworICAgZXJyb3IuCiAKICAgIENvbnZlcnNpb24gZXJyb3JzIHNob3VsZCBuZXZlciBoYXBwZW4sIHVubGVzcyB0aGVyZSBpcyBhIGJ1ZyBpbiB0aGUgQwogICAgbGlicmFyeS4gKi8KQEAgLTI5Miw4ICszMjUsOSBAQAogICAgICAgICAgICAgICAgc2luY2Ugd2UgcHJvdmlkZSBldmVyeXRoaW5nIHRoYXQgd2UgaGF2ZSAtCiAgICAgICAgICAgICAgICB1bmxlc3MgdGhlcmUgaXMgYSBidWcgaW4gdGhlIEMgbGlicmFyeSwgb3IgSQogICAgICAgICAgICAgICAgbWlzdW5kZXJzdG9vZCBob3cgbWJydG93YyB3b3Jrcy4gKi8KLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAidW5leHBlY3RlZCBtYnJ0b3djIHJlc3VsdCAtMlxuIik7CiAgICAgICAgICAgICBQeU1lbV9GcmVlKHJlcyk7CisgICAgICAgICAgICBpZiAoc2l6ZSAhPSBOVUxMKQorICAgICAgICAgICAgICAgICpzaXplID0gKHNpemVfdCktMjsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmIChjb252ZXJ0ZWQgPT0gKHNpemVfdCktMSkgewpAQCAtMzI5LDcgKzM2Myw4IEBACiAjZW5kaWYgICAvKiBIQVZFX01CUlRPV0MgKi8KICAgICByZXR1cm4gcmVzOwogb29tOgotICAgIGZwcmludGYoc3RkZXJyLCAib3V0IG9mIG1lbW9yeVxuIik7CisgICAgaWYgKHNpemUgIT0gTlVMTCkKKyAgICAgICAgKnNpemUgPSAoc2l6ZV90KS0xOwogICAgIHJldHVybiBOVUxMOwogI2VuZGlmICAgLyogX19BUFBMRV9fICovCiB9CkBAIC0zNDEsMTAgKzM3NiwxMCBAQAogICAgVGhpcyBmdW5jdGlvbiBpcyB0aGUgcmV2ZXJzZSBvZiBfUHlfY2hhcjJ3Y2hhcigpLgogCiAgICBSZXR1cm4gYSBwb2ludGVyIHRvIGEgbmV3bHkgYWxsb2NhdGVkIGJ5dGUgc3RyaW5nICh1c2UgUHlNZW1fRnJlZSgpIHRvIGZyZWUKLSAgIHRoZSBtZW1vcnkpLCBvciBOVUxMIG9uIGNvbnZlcnNpb24gb3IgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IuCisgICB0aGUgbWVtb3J5KSwgb3IgTlVMTCBvbiBlbmNvZGluZyBvciBtZW1vcnkgYWxsb2NhdGlvbiBlcnJvci4KIAogICAgSWYgZXJyb3JfcG9zIGlzIG5vdCBOVUxMOiAqZXJyb3JfcG9zIGlzIHRoZSBpbmRleCBvZiB0aGUgaW52YWxpZCBjaGFyYWN0ZXIKLSAgIG9uIGNvbnZlcnNpb24gZXJyb3IsIG9yIChzaXplX3QpLTEgb3RoZXJ3aXNlLiAqLworICAgb24gZW5jb2RpbmcgZXJyb3IsIG9yIChzaXplX3QpLTEgb3RoZXJ3aXNlLiAqLwogY2hhcioKIF9QeV93Y2hhcjJjaGFyKGNvbnN0IHdjaGFyX3QgKnRleHQsIHNpemVfdCAqZXJyb3JfcG9zKQogewpAQCAtMzU3LDkgKzM5Miw3IEBACiAgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBieXRlcyA9IFB5VW5pY29kZV9FbmNvZGVVVEY4KFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgIGJ5dGVzID0gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOwogICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtNDgzLDggKzUxNiw4IEBACiAvKiBDYWxsIF93c3RhdCgpIG9uIFdpbmRvd3MsIG9yIGVuY29kZSB0aGUgcGF0aCB0byB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyBhbmQKICAgIGNhbGwgc3RhdCgpIG90aGVyd2lzZS4gT25seSBmaWxsIHN0X21vZGUgYXR0cmlidXRlIG9uIFdpbmRvd3MuCiAKLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIF93c3RhdCgpIC8gc3RhdCgpIGVycm9yIG9yIChpZiBQeUVycl9PY2N1cnJlZCgpKQotICAgdW5pY29kZSBlcnJvci4gKi8KKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIF93c3RhdCgpIC8gc3RhdCgpIGVycm9yLCAtMiBpZiBhbiBleGNlcHRpb24gd2FzCisgICByYWlzZWQuICovCiAKIGludAogX1B5X3N0YXQoUHlPYmplY3QgKnBhdGgsIHN0cnVjdCBzdGF0ICpzdGF0YnVmKQpAQCAtNDkyLDggKzUyNSwxMiBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpbnQgZXJyOwogICAgIHN0cnVjdCBfc3RhdCB3c3RhdGJ1ZjsKKyAgICB3Y2hhcl90ICp3cGF0aDsKIAotICAgIGVyciA9IF93c3RhdChQeVVuaWNvZGVfQVNfVU5JQ09ERShwYXRoKSwgJndzdGF0YnVmKTsKKyAgICB3cGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUocGF0aCk7CisgICAgaWYgKHdwYXRoID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMjsKKyAgICBlcnIgPSBfd3N0YXQod3BhdGgsICZ3c3RhdGJ1Zik7CiAgICAgaWYgKCFlcnIpCiAgICAgICAgIHN0YXRidWYtPnN0X21vZGUgPSB3c3RhdGJ1Zi5zdF9tb2RlOwogICAgIHJldHVybiBlcnI7CkBAIC01MDEsNyArNTM4LDcgQEAKICAgICBpbnQgcmV0OwogICAgIFB5T2JqZWN0ICpieXRlcyA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQocGF0aCk7CiAgICAgaWYgKGJ5dGVzID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIC0yOwogICAgIHJldCA9IHN0YXQoUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCBzdGF0YnVmKTsKICAgICBQeV9ERUNSRUYoYnl0ZXMpOwogICAgIHJldHVybiByZXQ7CkBAIC01NDcsMTggKzU4NCwyOSBAQAogX1B5X2ZvcGVuKFB5T2JqZWN0ICpwYXRoLCBjb25zdCBjaGFyICptb2RlKQogewogI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB3Y2hhcl90ICp3cGF0aDsKICAgICB3Y2hhcl90IHdtb2RlWzEwXTsKICAgICBpbnQgdXNpemU7CiAKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhwYXRoKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInN0ciBmaWxlIHBhdGggZXhwZWN0ZWQgdW5kZXIgV2luZG93cywgZ290ICVSIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUocGF0aCkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgd3BhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBhdGgpOworICAgIGlmICh3cGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHVzaXplID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9BQ1AsIDAsIG1vZGUsIC0xLCB3bW9kZSwgc2l6ZW9mKHdtb2RlKSk7CiAgICAgaWYgKHVzaXplID09IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIF93Zm9wZW4oUHlVbmljb2RlX0FTX1VOSUNPREUocGF0aCksIHdtb2RlKTsKKyAgICByZXR1cm4gX3dmb3Blbih3cGF0aCwgd21vZGUpOwogI2Vsc2UKICAgICBGSUxFICpmOwotICAgIFB5T2JqZWN0ICpieXRlcyA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQocGF0aCk7Ci0gICAgaWYgKGJ5dGVzID09IE5VTEwpCisgICAgUHlPYmplY3QgKmJ5dGVzOworICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKHBhdGgsICZieXRlcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGYgPSBmb3BlbihQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksIG1vZGUpOwogICAgIFB5X0RFQ1JFRihieXRlcyk7CkBAIC01NjksNyArNjE3LDcgQEAKICNpZmRlZiBIQVZFX1JFQURMSU5LCiAKIC8qIFJlYWQgdmFsdWUgb2Ygc3ltYm9saWMgbGluay4gRW5jb2RlIHRoZSBwYXRoIHRvIHRoZSBsb2NhbGUgZW5jb2RpbmcsIGRlY29kZQotICAgdGhlIHJlc3VsdCBmcm9tIHRoZSBsb2NhbGUgZW5jb2RpbmcuICovCisgICB0aGUgcmVzdWx0IGZyb20gdGhlIGxvY2FsZSBlbmNvZGluZy4gUmV0dXJuIC0xIG9uIGVycm9yLiAqLwogCiBpbnQKIF9QeV93cmVhZGxpbmsoY29uc3Qgd2NoYXJfdCAqcGF0aCwgd2NoYXJfdCAqYnVmLCBzaXplX3QgYnVmc2l6KQpAQCAtNjEzLDcgKzY2MSw4IEBACiAjaWZkZWYgSEFWRV9SRUFMUEFUSAogCiAvKiBSZXR1cm4gdGhlIGNhbm9uaWNhbGl6ZWQgYWJzb2x1dGUgcGF0aG5hbWUuIEVuY29kZSBwYXRoIHRvIHRoZSBsb2NhbGUKLSAgIGVuY29kaW5nLCBkZWNvZGUgdGhlIHJlc3VsdCBmcm9tIHRoZSBsb2NhbGUgZW5jb2RpbmcuICovCisgICBlbmNvZGluZywgZGVjb2RlIHRoZSByZXN1bHQgZnJvbSB0aGUgbG9jYWxlIGVuY29kaW5nLgorICAgUmV0dXJuIE5VTEwgb24gZXJyb3IuICovCiAKIHdjaGFyX3QqCiBfUHlfd3JlYWxwYXRoKGNvbnN0IHdjaGFyX3QgKnBhdGgsCkBAIC02NTEsNyArNzAwLDggQEAKICNlbmRpZgogCiAvKiBHZXQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiBzaXplIGlzIHRoZSBidWZmZXIgc2l6ZSBpbiB3aWRlIGNoYXJhY3RlcnMKLSAgIGluY2x1ZGluZyB0aGUgbnVsbCBjaGFyYWN0ZXIuIERlY29kZSB0aGUgcGF0aCBmcm9tIHRoZSBsb2NhbGUgZW5jb2RpbmcuICovCisgICBpbmNsdWRpbmcgdGhlIG51bGwgY2hhcmFjdGVyLiBEZWNvZGUgdGhlIHBhdGggZnJvbSB0aGUgbG9jYWxlIGVuY29kaW5nLgorICAgUmV0dXJuIE5VTEwgb24gZXJyb3IuICovCiAKIHdjaGFyX3QqCiBfUHlfd2dldGN3ZCh3Y2hhcl90ICpidWYsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMgYi9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYwppbmRleCBjMzUwOTA3Li4xN2ViOTc4IDEwMDY0NAotLS0gYS9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYworKysgYi9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYwpAQCAtMywxMiArMywxNTM0IEBACiAgICBvZiBpbnQuX19mbG9hdF9fLCBldGMuLCB0aGF0IHRha2UgYW5kIHJldHVybiB1bmljb2RlIG9iamVjdHMgKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgotI2luY2x1ZGUgIi4uL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmgiCisjaW5jbHVkZSA8bG9jYWxlLmg+CisKKy8qIFJhaXNlcyBhbiBleGNlcHRpb24gYWJvdXQgYW4gdW5rbm93biBwcmVzZW50YXRpb24gdHlwZSBmb3IgdGhpcworICogdHlwZS4gKi8KKworc3RhdGljIHZvaWQKK3Vua25vd25fcHJlc2VudGF0aW9uX3R5cGUoUHlfVUNTNCBwcmVzZW50YXRpb25fdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdHlwZV9uYW1lKQoreworICAgIC8qICVjIG1pZ2h0IGJlIG91dC1vZi1yYW5nZSwgaGVuY2UgdGhlIHR3byBjYXNlcy4gKi8KKyAgICBpZiAocHJlc2VudGF0aW9uX3R5cGUgPiAzMiAmJiBwcmVzZW50YXRpb25fdHlwZSA8IDEyOCkKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biBmb3JtYXQgY29kZSAnJWMnICIKKyAgICAgICAgICAgICAgICAgICAgICJmb3Igb2JqZWN0IG9mIHR5cGUgJyUuMjAwcyciLAorICAgICAgICAgICAgICAgICAgICAgKGNoYXIpcHJlc2VudGF0aW9uX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICB0eXBlX25hbWUpOworICAgIGVsc2UKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biBmb3JtYXQgY29kZSAnXFx4JXgnICIKKyAgICAgICAgICAgICAgICAgICAgICJmb3Igb2JqZWN0IG9mIHR5cGUgJyUuMjAwcyciLAorICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludClwcmVzZW50YXRpb25fdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgIHR5cGVfbmFtZSk7Cit9CisKK3N0YXRpYyB2b2lkCitpbnZhbGlkX2NvbW1hX3R5cGUoUHlfVUNTNCBwcmVzZW50YXRpb25fdHlwZSkKK3sKKyAgICBpZiAocHJlc2VudGF0aW9uX3R5cGUgPiAzMiAmJiBwcmVzZW50YXRpb25fdHlwZSA8IDEyOCkKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgJywnIHdpdGggJyVjJy4iLAorICAgICAgICAgICAgICAgICAgICAgKGNoYXIpcHJlc2VudGF0aW9uX3R5cGUpOworICAgIGVsc2UKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgJywnIHdpdGggJ1xceCV4Jy4iLAorICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludClwcmVzZW50YXRpb25fdHlwZSk7Cit9CisKKy8qCisgICAgZ2V0X2ludGVnZXIgY29uc3VtZXMgMCBvciBtb3JlIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVycyBmcm9tIGFuCisgICAgaW5wdXQgc3RyaW5nLCB1cGRhdGVzICpyZXN1bHQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBwb3NpdGl2ZQorICAgIGludGVnZXIsIGFuZCByZXR1cm5zIHRoZSBudW1iZXIgb2YgZGlnaXRzIGNvbnN1bWVkLgorCisgICAgcmV0dXJucyAtMSBvbiBlcnJvci4KKyovCitzdGF0aWMgaW50CitnZXRfaW50ZWdlcihQeU9iamVjdCAqc3RyLCBQeV9zc2l6ZV90ICpwb3MsIFB5X3NzaXplX3QgZW5kLAorICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqcmVzdWx0KQoreworICAgIFB5X3NzaXplX3QgYWNjdW11bGF0b3IsIGRpZ2l0dmFsOworICAgIGludCBudW1kaWdpdHM7CisgICAgYWNjdW11bGF0b3IgPSBudW1kaWdpdHMgPSAwOworICAgIGZvciAoOzsoKnBvcykrKywgbnVtZGlnaXRzKyspIHsKKyAgICAgICAgaWYgKCpwb3MgPj0gZW5kKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRpZ2l0dmFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoUHlVbmljb2RlX1JFQURfQ0hBUihzdHIsICpwb3MpKTsKKyAgICAgICAgaWYgKGRpZ2l0dmFsIDwgMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvKgorICAgICAgICAgICBEZXRlY3QgcG9zc2libGUgb3ZlcmZsb3cgYmVmb3JlIGl0IGhhcHBlbnM6CisKKyAgICAgICAgICAgICAgYWNjdW11bGF0b3IgKiAxMCArIGRpZ2l0dmFsID4gUFlfU1NJWkVfVF9NQVggaWYgYW5kIG9ubHkgaWYKKyAgICAgICAgICAgICAgYWNjdW11bGF0b3IgPiAoUFlfU1NJWkVfVF9NQVggLSBkaWdpdHZhbCkgLyAxMC4KKyAgICAgICAgKi8KKyAgICAgICAgaWYgKGFjY3VtdWxhdG9yID4gKFBZX1NTSVpFX1RfTUFYIC0gZGlnaXR2YWwpIC8gMTApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJUb28gbWFueSBkZWNpbWFsIGRpZ2l0cyBpbiBmb3JtYXQgc3RyaW5nIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgYWNjdW11bGF0b3IgPSBhY2N1bXVsYXRvciAqIDEwICsgZGlnaXR2YWw7CisgICAgfQorICAgICpyZXN1bHQgPSBhY2N1bXVsYXRvcjsKKyAgICByZXR1cm4gbnVtZGlnaXRzOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqIHN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIgcGFyc2luZyAqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIHJldHVybnMgdHJ1ZSBpZiB0aGlzIGNoYXJhY3RlciBpcyBhIHNwZWNpZmllciBhbGlnbm1lbnQgdG9rZW4gKi8KK1B5X0xPQ0FMX0lOTElORShpbnQpCitpc19hbGlnbm1lbnRfdG9rZW4oUHlfVUNTNCBjKQoreworICAgIHN3aXRjaCAoYykgeworICAgIGNhc2UgJzwnOiBjYXNlICc+JzogY2FzZSAnPSc6IGNhc2UgJ14nOgorICAgICAgICByZXR1cm4gMTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKKy8qIHJldHVybnMgdHJ1ZSBpZiB0aGlzIGNoYXJhY3RlciBpcyBhIHNpZ24gZWxlbWVudCAqLworUHlfTE9DQUxfSU5MSU5FKGludCkKK2lzX3NpZ25fZWxlbWVudChQeV9VQ1M0IGMpCit7CisgICAgc3dpdGNoIChjKSB7CisgICAgY2FzZSAnICc6IGNhc2UgJysnOiBjYXNlICctJzoKKyAgICAgICAgcmV0dXJuIDE7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQogCiAKLSNkZWZpbmUgRk9STUFUX1NUUklORyAgX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZAotI2RlZmluZSBGT1JNQVRfTE9ORyAgICBfUHlMb25nX0Zvcm1hdEFkdmFuY2VkCi0jZGVmaW5lIEZPUk1BVF9GTE9BVCAgIF9QeUZsb2F0X0Zvcm1hdEFkdmFuY2VkCi0jZGVmaW5lIEZPUk1BVF9DT01QTEVYIF9QeUNvbXBsZXhfRm9ybWF0QWR2YW5jZWQKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeV9VQ1M0IGZpbGxfY2hhcjsKKyAgICBQeV9VQ1M0IGFsaWduOworICAgIGludCBhbHRlcm5hdGU7CisgICAgUHlfVUNTNCBzaWduOworICAgIFB5X3NzaXplX3Qgd2lkdGg7CisgICAgaW50IHRob3VzYW5kc19zZXBhcmF0b3JzOworICAgIFB5X3NzaXplX3QgcHJlY2lzaW9uOworICAgIFB5X1VDUzQgdHlwZTsKK30gSW50ZXJuYWxGb3JtYXRTcGVjOwogCi0jaW5jbHVkZSAiLi4vT2JqZWN0cy9zdHJpbmdsaWIvZm9ybWF0dGVyLmgiCisjaWYgMAorLyogT2NjYXNzaW9uYWxseSB1c2VmdWwgZm9yIGRlYnVnZ2luZy4gU2hvdWxkIG5vcm1hbGx5IGJlIGNvbW1lbnRlZCBvdXQuICovCitzdGF0aWMgdm9pZAorREVCVUdfUFJJTlRfRk9STUFUX1NQRUMoSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQpCit7CisgICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogZmlsbF9jaGFyICVkXG4iLCBmb3JtYXQtPmZpbGxfY2hhcik7CisgICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogYWxpZ24gJWRcbiIsIGZvcm1hdC0+YWxpZ24pOworICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IGFsdGVybmF0ZSAlZFxuIiwgZm9ybWF0LT5hbHRlcm5hdGUpOworICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IHNpZ24gJWRcbiIsIGZvcm1hdC0+c2lnbik7CisgICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogd2lkdGggJXpkXG4iLCBmb3JtYXQtPndpZHRoKTsKKyAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiB0aG91c2FuZHNfc2VwYXJhdG9ycyAlZFxuIiwKKyAgICAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyk7CisgICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogcHJlY2lzaW9uICV6ZFxuIiwgZm9ybWF0LT5wcmVjaXNpb24pOworICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IHR5cGUgJWNcbiIsIGZvcm1hdC0+dHlwZSk7CisgICAgcHJpbnRmKCJcbiIpOworfQorI2VuZGlmCisKKworLyoKKyAgcHRyIHBvaW50cyB0byB0aGUgc3RhcnQgb2YgdGhlIGZvcm1hdF9zcGVjLCBlbmQgcG9pbnRzIGp1c3QgcGFzdCBpdHMgZW5kLgorICBmaWxscyBpbiBmb3JtYXQgd2l0aCB0aGUgcGFyc2VkIGluZm9ybWF0aW9uLgorICByZXR1cm5zIDEgb24gc3VjY2VzcywgMCBvbiBmYWlsdXJlLgorICBpZiBmYWlsdXJlLCBzZXRzIHRoZSBleGNlcHRpb24KKyovCitzdGF0aWMgaW50CitwYXJzZV9pbnRlcm5hbF9yZW5kZXJfZm9ybWF0X3NwZWMoUHlPYmplY3QgKmZvcm1hdF9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZGVmYXVsdF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZGVmYXVsdF9hbGlnbikKK3sKKyAgICBQeV9zc2l6ZV90IHBvcyA9IHN0YXJ0OworICAgIC8qIGVuZC1wb3MgaXMgdXNlZCB0aHJvdWdob3V0IHRoaXMgY29kZSB0byBzcGVjaWZ5IHRoZSBsZW5ndGggb2YKKyAgICAgICB0aGUgaW5wdXQgc3RyaW5nICovCisjZGVmaW5lIFJFQURfc3BlYyhpbmRleCkgUHlVbmljb2RlX1JFQURfQ0hBUihmb3JtYXRfc3BlYywgaW5kZXgpCisKKyAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOworICAgIGludCBhbGlnbl9zcGVjaWZpZWQgPSAwOworCisgICAgZm9ybWF0LT5maWxsX2NoYXIgPSAnXDAnOworICAgIGZvcm1hdC0+YWxpZ24gPSBkZWZhdWx0X2FsaWduOworICAgIGZvcm1hdC0+YWx0ZXJuYXRlID0gMDsKKyAgICBmb3JtYXQtPnNpZ24gPSAnXDAnOworICAgIGZvcm1hdC0+d2lkdGggPSAtMTsKKyAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID0gMDsKKyAgICBmb3JtYXQtPnByZWNpc2lvbiA9IC0xOworICAgIGZvcm1hdC0+dHlwZSA9IGRlZmF1bHRfdHlwZTsKKworICAgIC8qIElmIHRoZSBzZWNvbmQgY2hhciBpcyBhbiBhbGlnbm1lbnQgdG9rZW4sCisgICAgICAgdGhlbiBwYXJzZSB0aGUgZmlsbCBjaGFyICovCisgICAgaWYgKGVuZC1wb3MgPj0gMiAmJiBpc19hbGlnbm1lbnRfdG9rZW4oUkVBRF9zcGVjKHBvcysxKSkpIHsKKyAgICAgICAgZm9ybWF0LT5hbGlnbiA9IFJFQURfc3BlYyhwb3MrMSk7CisgICAgICAgIGZvcm1hdC0+ZmlsbF9jaGFyID0gUkVBRF9zcGVjKHBvcyk7CisgICAgICAgIGFsaWduX3NwZWNpZmllZCA9IDE7CisgICAgICAgIHBvcyArPSAyOworICAgIH0KKyAgICBlbHNlIGlmIChlbmQtcG9zID49IDEgJiYgaXNfYWxpZ25tZW50X3Rva2VuKFJFQURfc3BlYyhwb3MpKSkgeworICAgICAgICBmb3JtYXQtPmFsaWduID0gUkVBRF9zcGVjKHBvcyk7CisgICAgICAgIGFsaWduX3NwZWNpZmllZCA9IDE7CisgICAgICAgICsrcG9zOworICAgIH0KKworICAgIC8qIFBhcnNlIHRoZSB2YXJpb3VzIHNpZ24gb3B0aW9ucyAqLworICAgIGlmIChlbmQtcG9zID49IDEgJiYgaXNfc2lnbl9lbGVtZW50KFJFQURfc3BlYyhwb3MpKSkgeworICAgICAgICBmb3JtYXQtPnNpZ24gPSBSRUFEX3NwZWMocG9zKTsKKyAgICAgICAgKytwb3M7CisgICAgfQorCisgICAgLyogSWYgdGhlIG5leHQgY2hhcmFjdGVyIGlzICMsIHdlJ3JlIGluIGFsdGVybmF0ZSBtb2RlLiAgVGhpcyBvbmx5CisgICAgICAgYXBwbGllcyB0byBpbnRlZ2Vycy4gKi8KKyAgICBpZiAoZW5kLXBvcyA+PSAxICYmIFJFQURfc3BlYyhwb3MpID09ICcjJykgeworICAgICAgICBmb3JtYXQtPmFsdGVybmF0ZSA9IDE7CisgICAgICAgICsrcG9zOworICAgIH0KKworICAgIC8qIFRoZSBzcGVjaWFsIGNhc2UgZm9yIDAtcGFkZGluZyAoYmFja3dhcmRzIGNvbXBhdCkgKi8KKyAgICBpZiAoZm9ybWF0LT5maWxsX2NoYXIgPT0gJ1wwJyAmJiBlbmQtcG9zID49IDEgJiYgUkVBRF9zcGVjKHBvcykgPT0gJzAnKSB7CisgICAgICAgIGZvcm1hdC0+ZmlsbF9jaGFyID0gJzAnOworICAgICAgICBpZiAoIWFsaWduX3NwZWNpZmllZCkgeworICAgICAgICAgICAgZm9ybWF0LT5hbGlnbiA9ICc9JzsKKyAgICAgICAgfQorICAgICAgICArK3BvczsKKyAgICB9CisKKyAgICBjb25zdW1lZCA9IGdldF9pbnRlZ2VyKGZvcm1hdF9zcGVjLCAmcG9zLCBlbmQsICZmb3JtYXQtPndpZHRoKTsKKyAgICBpZiAoY29uc3VtZWQgPT0gLTEpCisgICAgICAgIC8qIE92ZXJmbG93IGVycm9yLiBFeGNlcHRpb24gYWxyZWFkeSBzZXQuICovCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogSWYgY29uc3VtZWQgaXMgMCwgd2UgZGlkbid0IGNvbnN1bWUgYW55IGNoYXJhY3RlcnMgZm9yIHRoZQorICAgICAgIHdpZHRoLiBJbiB0aGF0IGNhc2UsIHJlc2V0IHRoZSB3aWR0aCB0byAtMSwgYmVjYXVzZQorICAgICAgIGdldF9pbnRlZ2VyKCkgd2lsbCBoYXZlIHNldCBpdCB0byB6ZXJvLiAtMSBpcyBob3cgd2UgcmVjb3JkCisgICAgICAgdGhhdCB0aGUgd2lkdGggd2Fzbid0IHNwZWNpZmllZC4gKi8KKyAgICBpZiAoY29uc3VtZWQgPT0gMCkKKyAgICAgICAgZm9ybWF0LT53aWR0aCA9IC0xOworCisgICAgLyogQ29tbWEgc2lnbmlmaWVzIGFkZCB0aG91c2FuZHMgc2VwYXJhdG9ycyAqLworICAgIGlmIChlbmQtcG9zICYmIFJFQURfc3BlYyhwb3MpID09ICcsJykgeworICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID0gMTsKKyAgICAgICAgKytwb3M7CisgICAgfQorCisgICAgLyogUGFyc2UgZmllbGQgcHJlY2lzaW9uICovCisgICAgaWYgKGVuZC1wb3MgJiYgUkVBRF9zcGVjKHBvcykgPT0gJy4nKSB7CisgICAgICAgICsrcG9zOworCisgICAgICAgIGNvbnN1bWVkID0gZ2V0X2ludGVnZXIoZm9ybWF0X3NwZWMsICZwb3MsIGVuZCwgJmZvcm1hdC0+cHJlY2lzaW9uKTsKKyAgICAgICAgaWYgKGNvbnN1bWVkID09IC0xKQorICAgICAgICAgICAgLyogT3ZlcmZsb3cgZXJyb3IuIEV4Y2VwdGlvbiBhbHJlYWR5IHNldC4gKi8KKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIC8qIE5vdCBoYXZpbmcgYSBwcmVjaXNpb24gYWZ0ZXIgYSBkb3QgaXMgYW4gZXJyb3IuICovCisgICAgICAgIGlmIChjb25zdW1lZCA9PSAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRm9ybWF0IHNwZWNpZmllciBtaXNzaW5nIHByZWNpc2lvbiIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgIH0KKworICAgIC8qIEZpbmFsbHksIHBhcnNlIHRoZSB0eXBlIGZpZWxkLiAqLworCisgICAgaWYgKGVuZC1wb3MgPiAxKSB7CisgICAgICAgIC8qIE1vcmUgdGhhbiBvbmUgY2hhciByZW1haW4sIGludmFsaWQgZm9ybWF0IHNwZWNpZmllci4gKi8KKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJJbnZhbGlkIGZvcm1hdCBzcGVjaWZpZXIiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKGVuZC1wb3MgPT0gMSkgeworICAgICAgICBmb3JtYXQtPnR5cGUgPSBSRUFEX3NwZWMocG9zKTsKKyAgICAgICAgKytwb3M7CisgICAgfQorCisgICAgLyogRG8gYXMgbXVjaCB2YWxpZGF0aW5nIGFzIHdlIGNhbiwganVzdCBieSBsb29raW5nIGF0IHRoZSBmb3JtYXQKKyAgICAgICBzcGVjaWZpZXIuICBEbyBub3QgdGFrZSBpbnRvIGFjY291bnQgd2hhdCB0eXBlIG9mIGZvcm1hdHRpbmcKKyAgICAgICB3ZSdyZSBkb2luZyAoaW50LCBmbG9hdCwgc3RyaW5nKS4gKi8KKworICAgIGlmIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzKSB7CisgICAgICAgIHN3aXRjaCAoZm9ybWF0LT50eXBlKSB7CisgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICBjYXNlICdlJzoKKyAgICAgICAgY2FzZSAnZic6CisgICAgICAgIGNhc2UgJ2cnOgorICAgICAgICBjYXNlICdFJzoKKyAgICAgICAgY2FzZSAnRyc6CisgICAgICAgIGNhc2UgJyUnOgorICAgICAgICBjYXNlICdGJzoKKyAgICAgICAgY2FzZSAnXDAnOgorICAgICAgICAgICAgLyogVGhlc2UgYXJlIGFsbG93ZWQuIFNlZSBQRVAgMzc4LiovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGludmFsaWRfY29tbWFfdHlwZShmb3JtYXQtPnR5cGUpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQgKGZvcm1hdC0+YWxpZ24gPD0gMTI3KTsKKyAgICBhc3NlcnQgKGZvcm1hdC0+c2lnbiA8PSAxMjcpOworICAgIHJldHVybiAxOworfQorCisvKiBDYWxjdWxhdGUgdGhlIHBhZGRpbmcgbmVlZGVkLiAqLworc3RhdGljIHZvaWQKK2NhbGNfcGFkZGluZyhQeV9zc2l6ZV90IG5jaGFycywgUHlfc3NpemVfdCB3aWR0aCwgUHlfVUNTNCBhbGlnbiwKKyAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuX2xwYWRkaW5nLCBQeV9zc2l6ZV90ICpuX3JwYWRkaW5nLAorICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5fdG90YWwpCit7CisgICAgaWYgKHdpZHRoID49IDApIHsKKyAgICAgICAgaWYgKG5jaGFycyA+IHdpZHRoKQorICAgICAgICAgICAgKm5fdG90YWwgPSBuY2hhcnM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpuX3RvdGFsID0gd2lkdGg7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBub3Qgc3BlY2lmaWVkLCB1c2UgYWxsIG9mIHRoZSBjaGFycyBhbmQgbm8gbW9yZSAqLworICAgICAgICAqbl90b3RhbCA9IG5jaGFyczsKKyAgICB9CisKKyAgICAvKiBGaWd1cmUgb3V0IGhvdyBtdWNoIGxlYWRpbmcgc3BhY2Ugd2UgbmVlZCwgYmFzZWQgb24gdGhlCisgICAgICAgYWxpZ25pbmcgKi8KKyAgICBpZiAoYWxpZ24gPT0gJz4nKQorICAgICAgICAqbl9scGFkZGluZyA9ICpuX3RvdGFsIC0gbmNoYXJzOworICAgIGVsc2UgaWYgKGFsaWduID09ICdeJykKKyAgICAgICAgKm5fbHBhZGRpbmcgPSAoKm5fdG90YWwgLSBuY2hhcnMpIC8gMjsKKyAgICBlbHNlIGlmIChhbGlnbiA9PSAnPCcgfHwgYWxpZ24gPT0gJz0nKQorICAgICAgICAqbl9scGFkZGluZyA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIC8qIFdlIHNob3VsZCBuZXZlciBoYXZlIGFuIHVuc3BlY2lmaWVkIGFsaWdubWVudC4gKi8KKyAgICAgICAgKm5fbHBhZGRpbmcgPSAwOworICAgICAgICBhc3NlcnQoMCk7CisgICAgfQorCisgICAgKm5fcnBhZGRpbmcgPSAqbl90b3RhbCAtIG5jaGFycyAtICpuX2xwYWRkaW5nOworfQorCisvKiBEbyB0aGUgcGFkZGluZywgYW5kIHJldHVybiBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGNhbGxlci1zdXBwbGllZAorICAgY29udGVudCBnb2VzLiAqLworc3RhdGljIFB5X3NzaXplX3QKK2ZpbGxfcGFkZGluZyhfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgUHlfc3NpemVfdCBuY2hhcnMsCisgICAgICAgICAgICAgUHlfVUNTNCBmaWxsX2NoYXIsIFB5X3NzaXplX3Qgbl9scGFkZGluZywKKyAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fcnBhZGRpbmcpCit7CisgICAgUHlfc3NpemVfdCBwb3M7CisKKyAgICAvKiBQYWQgb24gbGVmdC4gKi8KKyAgICBpZiAobl9scGFkZGluZykgeworICAgICAgICBwb3MgPSB3cml0ZXItPnBvczsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0RmlsbCh3cml0ZXItPmJ1ZmZlciwgcG9zLCBuX2xwYWRkaW5nLCBmaWxsX2NoYXIpOworICAgIH0KKworICAgIC8qIFBhZCBvbiByaWdodC4gKi8KKyAgICBpZiAobl9ycGFkZGluZykgeworICAgICAgICBwb3MgPSB3cml0ZXItPnBvcyArIG5jaGFycyArIG5fbHBhZGRpbmc7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdEZpbGwod3JpdGVyLT5idWZmZXIsIHBvcywgbl9ycGFkZGluZywgZmlsbF9jaGFyKTsKKyAgICB9CisKKyAgICAvKiBQb2ludGVyIHRvIHRoZSB1c2VyIGNvbnRlbnQuICovCisgICAgd3JpdGVyLT5wb3MgKz0gbl9scGFkZGluZzsKKyAgICByZXR1cm4gMDsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKiBjb21tb24gcm91dGluZXMgZm9yIG51bWVyaWMgZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBMb2NhbGUgdHlwZSBjb2Rlcy4gKi8KKyNkZWZpbmUgTFRfQ1VSUkVOVF9MT0NBTEUgMAorI2RlZmluZSBMVF9ERUZBVUxUX0xPQ0FMRSAxCisjZGVmaW5lIExUX05PX0xPQ0FMRSAyCisKKy8qIExvY2FsZSBpbmZvIG5lZWRlZCBmb3IgZm9ybWF0dGluZyBpbnRlZ2VycyBhbmQgdGhlIHBhcnQgb2YgZmxvYXRzCisgICBiZWZvcmUgYW5kIGluY2x1ZGluZyB0aGUgZGVjaW1hbC4gTm90ZSB0aGF0IGxvY2FsZXMgb25seSBzdXBwb3J0CisgICA4LWJpdCBjaGFycywgbm90IHVuaWNvZGUuICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3QgKmRlY2ltYWxfcG9pbnQ7CisgICAgUHlPYmplY3QgKnRob3VzYW5kc19zZXA7CisgICAgY29uc3QgY2hhciAqZ3JvdXBpbmc7Cit9IExvY2FsZUluZm87CisKKyNkZWZpbmUgU1RBVElDX0xPQ0FMRV9JTkZPX0lOSVQgezAsIDAsIDB9CisKKy8qIGRlc2NyaWJlcyB0aGUgbGF5b3V0IGZvciBhbiBpbnRlZ2VyLCBzZWUgdGhlIGNvbW1lbnQgaW4KKyAgIGNhbGNfbnVtYmVyX3dpZHRocygpIGZvciBkZXRhaWxzICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlfc3NpemVfdCBuX2xwYWRkaW5nOworICAgIFB5X3NzaXplX3Qgbl9wcmVmaXg7CisgICAgUHlfc3NpemVfdCBuX3NwYWRkaW5nOworICAgIFB5X3NzaXplX3Qgbl9ycGFkZGluZzsKKyAgICBjaGFyIHNpZ247CisgICAgUHlfc3NpemVfdCBuX3NpZ247ICAgICAgLyogbnVtYmVyIG9mIGRpZ2l0cyBuZWVkZWQgZm9yIHNpZ24gKDAvMSkgKi8KKyAgICBQeV9zc2l6ZV90IG5fZ3JvdXBlZF9kaWdpdHM7IC8qIFNwYWNlIHRha2VuIHVwIGJ5IHRoZSBkaWdpdHMsIGluY2x1ZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55IGdyb3VwaW5nIGNoYXJzLiAqLworICAgIFB5X3NzaXplX3Qgbl9kZWNpbWFsOyAgIC8qIDAgaWYgb25seSBhbiBpbnRlZ2VyICovCisgICAgUHlfc3NpemVfdCBuX3JlbWFpbmRlcjsgLyogRGlnaXRzIGluIGRlY2ltYWwgYW5kL29yIGV4cG9uZW50IHBhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVkaW5nIHRoZSBkZWNpbWFsIGl0c2VsZiwgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50LiAqLworCisgICAgLyogVGhlc2UgMiBhcmUgbm90IHRoZSB3aWR0aHMgb2YgZmllbGRzLCBidXQgYXJlIG5lZWRlZCBieQorICAgICAgIFNUUklOR0xJQl9HUk9VUElORy4gKi8KKyAgICBQeV9zc2l6ZV90IG5fZGlnaXRzOyAgICAvKiBUaGUgbnVtYmVyIG9mIGRpZ2l0cyBiZWZvcmUgYSBkZWNpbWFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgZXhwb25lbnQuICovCisgICAgUHlfc3NpemVfdCBuX21pbl93aWR0aDsgLyogVGhlIG1pbl93aWR0aCB3ZSB1c2VkIHdoZW4gd2UgY29tcHV0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbl9ncm91cGVkX2RpZ2l0cyB3aWR0aC4gKi8KK30gTnVtYmVyRmllbGRXaWR0aHM7CisKKworLyogR2l2ZW4gYSBudW1iZXIgb2YgdGhlIGZvcm06CisgICBkaWdpdHNbcmVtYWluZGVyXQorICAgd2hlcmUgcHRyIHBvaW50cyB0byB0aGUgc3RhcnQgYW5kIGVuZCBwb2ludHMgdG8gdGhlIGVuZCwgZmluZCB3aGVyZQorICAgIHRoZSBpbnRlZ2VyIHBhcnQgZW5kcy4gVGhpcyBjb3VsZCBiZSBhIGRlY2ltYWwsIGFuIGV4cG9uZW50LCBib3RoLAorICAgIG9yIG5laXRoZXIuCisgICBJZiBhIGRlY2ltYWwgcG9pbnQgaXMgcHJlc2VudCwgc2V0ICpoYXNfZGVjaW1hbCBhbmQgaW5jcmVtZW50CisgICAgcmVtYWluZGVyIGJleW9uZCBpdC4KKyAgIFJlc3VsdHMgYXJlIHVuZGVmaW5lZCAoYnV0IHNob3VsZG4ndCBjcmFzaCkgZm9yIGltcHJvcGVybHkKKyAgICBmb3JtYXR0ZWQgc3RyaW5ncy4KKyovCitzdGF0aWMgdm9pZAorcGFyc2VfbnVtYmVyKFB5T2JqZWN0ICpzLCBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmQsCisgICAgICAgICAgICAgUHlfc3NpemVfdCAqbl9yZW1haW5kZXIsIGludCAqaGFzX2RlY2ltYWwpCit7CisgICAgUHlfc3NpemVfdCByZW1haW5kZXI7CisKKyAgICB3aGlsZSAocG9zPGVuZCAmJiBQeV9JU0RJR0lUKFB5VW5pY29kZV9SRUFEX0NIQVIocywgcG9zKSkpCisgICAgICAgICsrcG9zOworICAgIHJlbWFpbmRlciA9IHBvczsKKworICAgIC8qIERvZXMgcmVtYWluZGVyIHN0YXJ0IHdpdGggYSBkZWNpbWFsIHBvaW50PyAqLworICAgICpoYXNfZGVjaW1hbCA9IHBvczxlbmQgJiYgUHlVbmljb2RlX1JFQURfQ0hBUihzLCByZW1haW5kZXIpID09ICcuJzsKKworICAgIC8qIFNraXAgdGhlIGRlY2ltYWwgcG9pbnQuICovCisgICAgaWYgKCpoYXNfZGVjaW1hbCkKKyAgICAgICAgcmVtYWluZGVyKys7CisKKyAgICAqbl9yZW1haW5kZXIgPSBlbmQgLSByZW1haW5kZXI7Cit9CisKKy8qIG5vdCBhbGwgZmllbGRzIG9mIGZvcm1hdCBhcmUgdXNlZC4gIGZvciBleGFtcGxlLCBwcmVjaXNpb24gaXMKKyAgIHVudXNlZC4gIHNob3VsZCB0aGlzIHRha2UgZGlzY3JldGUgcGFyYW1zIGluIG9yZGVyIHRvIGJlIG1vcmUgY2xlYXIKKyAgIGFib3V0IHdoYXQgaXQgZG9lcz8gIG9yIGlzIHBhc3NpbmcgYSBzaW5nbGUgZm9ybWF0IHBhcmFtZXRlciBlYXNpZXIKKyAgIGFuZCBtb3JlIGVmZmljaWVudCBlbm91Z2ggdG8ganVzdGlmeSBhIGxpdHRsZSBvYmZ1c2NhdGlvbj8gKi8KK3N0YXRpYyBQeV9zc2l6ZV90CitjYWxjX251bWJlcl93aWR0aHMoTnVtYmVyRmllbGRXaWR0aHMgKnNwZWMsIFB5X3NzaXplX3Qgbl9wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBzaWduX2NoYXIsIFB5T2JqZWN0ICpudW1iZXIsIFB5X3NzaXplX3Qgbl9zdGFydCwKKyAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fZW5kLCBQeV9zc2l6ZV90IG5fcmVtYWluZGVyLAorICAgICAgICAgICAgICAgICAgIGludCBoYXNfZGVjaW1hbCwgY29uc3QgTG9jYWxlSW5mbyAqbG9jYWxlLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0LCBQeV9VQ1M0ICptYXhjaGFyKQoreworICAgIFB5X3NzaXplX3Qgbl9ub25fZGlnaXRfbm9uX3BhZGRpbmc7CisgICAgUHlfc3NpemVfdCBuX3BhZGRpbmc7CisKKyAgICBzcGVjLT5uX2RpZ2l0cyA9IG5fZW5kIC0gbl9zdGFydCAtIG5fcmVtYWluZGVyIC0gKGhhc19kZWNpbWFsPzE6MCk7CisgICAgc3BlYy0+bl9scGFkZGluZyA9IDA7CisgICAgc3BlYy0+bl9wcmVmaXggPSBuX3ByZWZpeDsKKyAgICBzcGVjLT5uX2RlY2ltYWwgPSBoYXNfZGVjaW1hbCA/IFB5VW5pY29kZV9HRVRfTEVOR1RIKGxvY2FsZS0+ZGVjaW1hbF9wb2ludCkgOiAwOworICAgIHNwZWMtPm5fcmVtYWluZGVyID0gbl9yZW1haW5kZXI7CisgICAgc3BlYy0+bl9zcGFkZGluZyA9IDA7CisgICAgc3BlYy0+bl9ycGFkZGluZyA9IDA7CisgICAgc3BlYy0+c2lnbiA9ICdcMCc7CisgICAgc3BlYy0+bl9zaWduID0gMDsKKworICAgIC8qIHRoZSBvdXRwdXQgd2lsbCBsb29rIGxpa2U6CisgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgIHwgPGxwYWRkaW5nPiA8c2lnbj4gPHByZWZpeD4gPHNwYWRkaW5nPiA8Z3JvdXBlZF9kaWdpdHM+IDxkZWNpbWFsPiA8cmVtYWluZGVyPiA8cnBhZGRpbmc+IHwKKyAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisKKyAgICAgICBzaWduIGlzIGNvbXB1dGVkIGZyb20gZm9ybWF0LT5zaWduIGFuZCB0aGUgYWN0dWFsCisgICAgICAgc2lnbiBvZiB0aGUgbnVtYmVyCisKKyAgICAgICBwcmVmaXggaXMgZ2l2ZW4gKGl0J3MgZm9yIHRoZSAnMHgnIHByZWZpeCkKKworICAgICAgIGRpZ2l0cyBpcyBhbHJlYWR5IGtub3duCisKKyAgICAgICB0aGUgdG90YWwgd2lkdGggaXMgZWl0aGVyIGdpdmVuLCBvciBjb21wdXRlZCBmcm9tIHRoZQorICAgICAgIGFjdHVhbCBkaWdpdHMKKworICAgICAgIG9ubHkgb25lIG9mIGxwYWRkaW5nLCBzcGFkZGluZywgYW5kIHJwYWRkaW5nIGNhbiBiZSBub24temVybywKKyAgICAgICBhbmQgaXQncyBjYWxjdWxhdGVkIGZyb20gdGhlIHdpZHRoIGFuZCBvdGhlciBmaWVsZHMKKyAgICAqLworCisgICAgLyogY29tcHV0ZSB0aGUgdmFyaW91cyBwYXJ0cyB3ZSdyZSBnb2luZyB0byB3cml0ZSAqLworICAgIHN3aXRjaCAoZm9ybWF0LT5zaWduKSB7CisgICAgY2FzZSAnKyc6CisgICAgICAgIC8qIGFsd2F5cyBwdXQgYSArIG9yIC0gKi8KKyAgICAgICAgc3BlYy0+bl9zaWduID0gMTsKKyAgICAgICAgc3BlYy0+c2lnbiA9IChzaWduX2NoYXIgPT0gJy0nID8gJy0nIDogJysnKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnICc6CisgICAgICAgIHNwZWMtPm5fc2lnbiA9IDE7CisgICAgICAgIHNwZWMtPnNpZ24gPSAoc2lnbl9jaGFyID09ICctJyA/ICctJyA6ICcgJyk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8qIE5vdCBzcGVjaWZpZWQsIG9yIHRoZSBkZWZhdWx0ICgtKSAqLworICAgICAgICBpZiAoc2lnbl9jaGFyID09ICctJykgeworICAgICAgICAgICAgc3BlYy0+bl9zaWduID0gMTsKKyAgICAgICAgICAgIHNwZWMtPnNpZ24gPSAnLSc7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBUaGUgbnVtYmVyIG9mIGNoYXJzIHVzZWQgZm9yIG5vbi1kaWdpdHMgYW5kIG5vbi1wYWRkaW5nLiAqLworICAgIG5fbm9uX2RpZ2l0X25vbl9wYWRkaW5nID0gc3BlYy0+bl9zaWduICsgc3BlYy0+bl9wcmVmaXggKyBzcGVjLT5uX2RlY2ltYWwgKworICAgICAgICBzcGVjLT5uX3JlbWFpbmRlcjsKKworICAgIC8qIG1pbl93aWR0aCBjYW4gZ28gbmVnYXRpdmUsIHRoYXQncyBva2F5LiBmb3JtYXQtPndpZHRoID09IC0xIG1lYW5zCisgICAgICAgd2UgZG9uJ3QgY2FyZS4gKi8KKyAgICBpZiAoZm9ybWF0LT5maWxsX2NoYXIgPT0gJzAnICYmIGZvcm1hdC0+YWxpZ24gPT0gJz0nKQorICAgICAgICBzcGVjLT5uX21pbl93aWR0aCA9IGZvcm1hdC0+d2lkdGggLSBuX25vbl9kaWdpdF9ub25fcGFkZGluZzsKKyAgICBlbHNlCisgICAgICAgIHNwZWMtPm5fbWluX3dpZHRoID0gMDsKKworICAgIGlmIChzcGVjLT5uX2RpZ2l0cyA9PSAwKQorICAgICAgICAvKiBUaGlzIGNhc2Ugb25seSBvY2N1cnMgd2hlbiB1c2luZyAnYycgZm9ybWF0dGluZywgd2UgbmVlZAorICAgICAgICAgICB0byBzcGVjaWFsIGNhc2UgaXQgYmVjYXVzZSB0aGUgZ3JvdXBpbmcgY29kZSBhbHdheXMgd2FudHMKKyAgICAgICAgICAgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLiAqLworICAgICAgICBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzID0gMDsKKyAgICBlbHNlIHsKKyAgICAgICAgUHlfVUNTNCBncm91cGluZ19tYXhjaGFyOworICAgICAgICBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzID0gX1B5VW5pY29kZV9JbnNlcnRUaG91c2FuZHNHcm91cGluZygKKyAgICAgICAgICAgIE5VTEwsIDAsCisgICAgICAgICAgICAwLCBOVUxMLAorICAgICAgICAgICAgc3BlYy0+bl9kaWdpdHMsIHNwZWMtPm5fbWluX3dpZHRoLAorICAgICAgICAgICAgbG9jYWxlLT5ncm91cGluZywgbG9jYWxlLT50aG91c2FuZHNfc2VwLCAmZ3JvdXBpbmdfbWF4Y2hhcik7CisgICAgICAgICptYXhjaGFyID0gUHlfTUFYKCptYXhjaGFyLCBncm91cGluZ19tYXhjaGFyKTsKKyAgICB9CisKKyAgICAvKiBHaXZlbiB0aGUgZGVzaXJlZCB3aWR0aCBhbmQgdGhlIHRvdGFsIG9mIGRpZ2l0IGFuZCBub24tZGlnaXQKKyAgICAgICBzcGFjZSB3ZSBjb25zdW1lLCBzZWUgaWYgd2UgbmVlZCBhbnkgcGFkZGluZy4gZm9ybWF0LT53aWR0aCBjYW4KKyAgICAgICBiZSBuZWdhdGl2ZSAobWVhbmluZyBubyBwYWRkaW5nKSwgYnV0IHRoaXMgY29kZSBzdGlsbCB3b3JrcyBpbgorICAgICAgIHRoYXQgY2FzZS4gKi8KKyAgICBuX3BhZGRpbmcgPSBmb3JtYXQtPndpZHRoIC0KKyAgICAgICAgICAgICAgICAgICAgICAgIChuX25vbl9kaWdpdF9ub25fcGFkZGluZyArIHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHMpOworICAgIGlmIChuX3BhZGRpbmcgPiAwKSB7CisgICAgICAgIC8qIFNvbWUgcGFkZGluZyBpcyBuZWVkZWQuIERldGVybWluZSBpZiBpdCdzIGxlZnQsIHNwYWNlLCBvciByaWdodC4gKi8KKyAgICAgICAgc3dpdGNoIChmb3JtYXQtPmFsaWduKSB7CisgICAgICAgIGNhc2UgJzwnOgorICAgICAgICAgICAgc3BlYy0+bl9ycGFkZGluZyA9IG5fcGFkZGluZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdeJzoKKyAgICAgICAgICAgIHNwZWMtPm5fbHBhZGRpbmcgPSBuX3BhZGRpbmcgLyAyOworICAgICAgICAgICAgc3BlYy0+bl9ycGFkZGluZyA9IG5fcGFkZGluZyAtIHNwZWMtPm5fbHBhZGRpbmc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnPSc6CisgICAgICAgICAgICBzcGVjLT5uX3NwYWRkaW5nID0gbl9wYWRkaW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJz4nOgorICAgICAgICAgICAgc3BlYy0+bl9scGFkZGluZyA9IG5fcGFkZGluZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLyogU2hvdWxkbid0IGdldCBoZXJlLCBidXQgdHJlYXQgaXQgYXMgJz4nICovCisgICAgICAgICAgICBzcGVjLT5uX2xwYWRkaW5nID0gbl9wYWRkaW5nOworICAgICAgICAgICAgYXNzZXJ0KDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc3BlYy0+bl9scGFkZGluZyB8fCBzcGVjLT5uX3NwYWRkaW5nIHx8IHNwZWMtPm5fcnBhZGRpbmcpCisgICAgICAgICptYXhjaGFyID0gUHlfTUFYKCptYXhjaGFyLCBmb3JtYXQtPmZpbGxfY2hhcik7CisKKyAgICBpZiAoc3BlYy0+bl9kZWNpbWFsKQorICAgICAgICAqbWF4Y2hhciA9IFB5X01BWCgqbWF4Y2hhciwgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKGxvY2FsZS0+ZGVjaW1hbF9wb2ludCkpOworCisgICAgcmV0dXJuIHNwZWMtPm5fbHBhZGRpbmcgKyBzcGVjLT5uX3NpZ24gKyBzcGVjLT5uX3ByZWZpeCArCisgICAgICAgIHNwZWMtPm5fc3BhZGRpbmcgKyBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzICsgc3BlYy0+bl9kZWNpbWFsICsKKyAgICAgICAgc3BlYy0+bl9yZW1haW5kZXIgKyBzcGVjLT5uX3JwYWRkaW5nOworfQorCisvKiBGaWxsIGluIHRoZSBkaWdpdCBwYXJ0cyBvZiBhIG51bWJlcnMncyBzdHJpbmcgcmVwcmVzZW50YXRpb24sCisgICBhcyBkZXRlcm1pbmVkIGluIGNhbGNfbnVtYmVyX3dpZHRocygpLgorICAgUmV0dXJuIC0xIG9uIGVycm9yLCBvciAwIG9uIHN1Y2Nlc3MuICovCitzdGF0aWMgaW50CitmaWxsX251bWJlcihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIGNvbnN0IE51bWJlckZpZWxkV2lkdGhzICpzcGVjLAorICAgICAgICAgICAgUHlPYmplY3QgKmRpZ2l0cywgUHlfc3NpemVfdCBkX3N0YXJ0LCBQeV9zc2l6ZV90IGRfZW5kLAorICAgICAgICAgICAgUHlPYmplY3QgKnByZWZpeCwgUHlfc3NpemVfdCBwX3N0YXJ0LAorICAgICAgICAgICAgUHlfVUNTNCBmaWxsX2NoYXIsCisgICAgICAgICAgICBMb2NhbGVJbmZvICpsb2NhbGUsIGludCB0b3VwcGVyKQoreworICAgIC8qIFVzZWQgdG8ga2VlcCB0cmFjayBvZiBkaWdpdHMsIGRlY2ltYWwsIGFuZCByZW1haW5kZXIuICovCisgICAgUHlfc3NpemVfdCBkX3BvcyA9IGRfc3RhcnQ7CisgICAgY29uc3QgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kID0gd3JpdGVyLT5raW5kOworICAgIGNvbnN0IHZvaWQgKmRhdGEgPSB3cml0ZXItPmRhdGE7CisgICAgUHlfc3NpemVfdCByOworCisgICAgaWYgKHNwZWMtPm5fbHBhZGRpbmcpIHsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0RmlsbCh3cml0ZXItPmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXItPnBvcywgc3BlYy0+bl9scGFkZGluZywgZmlsbF9jaGFyKTsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3BlYy0+bl9scGFkZGluZzsKKyAgICB9CisgICAgaWYgKHNwZWMtPm5fc2lnbiA9PSAxKSB7CisgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCB3cml0ZXItPnBvcywgc3BlYy0+c2lnbik7CisgICAgICAgIHdyaXRlci0+cG9zKys7CisgICAgfQorICAgIGlmIChzcGVjLT5uX3ByZWZpeCkgeworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcF9zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYy0+bl9wcmVmaXgpOworICAgICAgICBpZiAodG91cHBlcikgeworICAgICAgICAgICAgUHlfc3NpemVfdCB0OworICAgICAgICAgICAgZm9yICh0ID0gMDsgdCA8IHNwZWMtPm5fcHJlZml4OyB0KyspIHsKKyAgICAgICAgICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCB3cml0ZXItPnBvcyArIHQpOworICAgICAgICAgICAgICAgIGMgPSBQeV9UT1VQUEVSKGMpOworICAgICAgICAgICAgICAgIGFzc2VydCAoYyA8PSAxMjcpOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCB3cml0ZXItPnBvcyArIHQsIGMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHdyaXRlci0+cG9zICs9IHNwZWMtPm5fcHJlZml4OworICAgIH0KKyAgICBpZiAoc3BlYy0+bl9zcGFkZGluZykgeworICAgICAgICBfUHlVbmljb2RlX0Zhc3RGaWxsKHdyaXRlci0+YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci0+cG9zLCBzcGVjLT5uX3NwYWRkaW5nLCBmaWxsX2NoYXIpOworICAgICAgICB3cml0ZXItPnBvcyArPSBzcGVjLT5uX3NwYWRkaW5nOworICAgIH0KKworICAgIC8qIE9ubHkgZm9yIHR5cGUgJ2MnIHNwZWNpYWwgY2FzZSwgaXQgaGFzIG5vIGRpZ2l0cy4gKi8KKyAgICBpZiAoc3BlYy0+bl9kaWdpdHMgIT0gMCkgeworICAgICAgICAvKiBGaWxsIHRoZSBkaWdpdHMgd2l0aCBJbnNlcnRUaG91c2FuZHNHcm91cGluZy4gKi8KKyAgICAgICAgY2hhciAqcGRpZ2l0czsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShkaWdpdHMpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBwZGlnaXRzID0gUHlVbmljb2RlX0RBVEEoZGlnaXRzKTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9LSU5EKGRpZ2l0cykgPCBraW5kKSB7CisgICAgICAgICAgICBwZGlnaXRzID0gX1B5VW5pY29kZV9Bc0tpbmQoZGlnaXRzLCBraW5kKTsKKyAgICAgICAgICAgIGlmIChwZGlnaXRzID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHIgPSBfUHlVbmljb2RlX0luc2VydFRob3VzYW5kc0dyb3VwaW5nKAorICAgICAgICAgICAgICAgIHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcywKKyAgICAgICAgICAgICAgICBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzLAorICAgICAgICAgICAgICAgIHBkaWdpdHMgKyBraW5kICogZF9wb3MsCisgICAgICAgICAgICAgICAgc3BlYy0+bl9kaWdpdHMsIHNwZWMtPm5fbWluX3dpZHRoLAorICAgICAgICAgICAgICAgIGxvY2FsZS0+Z3JvdXBpbmcsIGxvY2FsZS0+dGhvdXNhbmRzX3NlcCwgTlVMTCk7CisgICAgICAgIGlmIChyID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBhc3NlcnQociA9PSBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzKTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9LSU5EKGRpZ2l0cykgPCBraW5kKQorICAgICAgICAgICAgUHlNZW1fRnJlZShwZGlnaXRzKTsKKyAgICAgICAgZF9wb3MgKz0gc3BlYy0+bl9kaWdpdHM7CisgICAgfQorICAgIGlmICh0b3VwcGVyKSB7CisgICAgICAgIFB5X3NzaXplX3QgdDsKKyAgICAgICAgZm9yICh0ID0gMDsgdCA8IHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHM7IHQrKykgeworICAgICAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgd3JpdGVyLT5wb3MgKyB0KTsKKyAgICAgICAgICAgIGMgPSBQeV9UT1VQUEVSKGMpOworICAgICAgICAgICAgaWYgKGMgPiAxMjcpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJub24tYXNjaWkgZ3JvdXBlZCBkaWdpdCIpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCB3cml0ZXItPnBvcyArIHQsIGMpOworICAgICAgICB9CisgICAgfQorICAgIHdyaXRlci0+cG9zICs9IHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHM7CisKKyAgICBpZiAoc3BlYy0+bl9kZWNpbWFsKSB7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKAorICAgICAgICAgICAgd3JpdGVyLT5idWZmZXIsIHdyaXRlci0+cG9zLAorICAgICAgICAgICAgbG9jYWxlLT5kZWNpbWFsX3BvaW50LCAwLCBzcGVjLT5uX2RlY2ltYWwpOworICAgICAgICB3cml0ZXItPnBvcyArPSBzcGVjLT5uX2RlY2ltYWw7CisgICAgICAgIGRfcG9zICs9IDE7CisgICAgfQorCisgICAgaWYgKHNwZWMtPm5fcmVtYWluZGVyKSB7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKAorICAgICAgICAgICAgd3JpdGVyLT5idWZmZXIsIHdyaXRlci0+cG9zLAorICAgICAgICAgICAgZGlnaXRzLCBkX3Bvcywgc3BlYy0+bl9yZW1haW5kZXIpOworICAgICAgICB3cml0ZXItPnBvcyArPSBzcGVjLT5uX3JlbWFpbmRlcjsKKyAgICAgICAgLyogZF9wb3MgKz0gc3BlYy0+bl9yZW1haW5kZXI7ICovCisgICAgfQorCisgICAgaWYgKHNwZWMtPm5fcnBhZGRpbmcpIHsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0RmlsbCh3cml0ZXItPmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXItPnBvcywgc3BlYy0+bl9ycGFkZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsX2NoYXIpOworICAgICAgICB3cml0ZXItPnBvcyArPSBzcGVjLT5uX3JwYWRkaW5nOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGNoYXIgbm9fZ3JvdXBpbmdbMV0gPSB7Q0hBUl9NQVh9OworCisvKiBGaW5kIHRoZSBkZWNpbWFsIHBvaW50IGNoYXJhY3RlcihzPyksIHRob3VzYW5kc19zZXBhcmF0b3Iocz8pLCBhbmQKKyAgIGdyb3VwaW5nIGRlc2NyaXB0aW9uLCBlaXRoZXIgZm9yIHRoZSBjdXJyZW50IGxvY2FsZSBpZiB0eXBlIGlzCisgICBMVF9DVVJSRU5UX0xPQ0FMRSwgYSBoYXJkLWNvZGVkIGxvY2FsZSBpZiBMVF9ERUZBVUxUX0xPQ0FMRSwgb3IKKyAgIG5vbmUgaWYgTFRfTk9fTE9DQUxFLiAqLworc3RhdGljIGludAorZ2V0X2xvY2FsZV9pbmZvKGludCB0eXBlLCBMb2NhbGVJbmZvICpsb2NhbGVfaW5mbykKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIExUX0NVUlJFTlRfTE9DQUxFOiB7CisgICAgICAgIHN0cnVjdCBsY29udiAqbG9jYWxlX2RhdGEgPSBsb2NhbGVjb252KCk7CisgICAgICAgIGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50ID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlX2RhdGEtPmRlY2ltYWxfcG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICBpZiAobG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgbG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXAgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVfZGF0YS0+dGhvdXNhbmRzX3NlcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIGlmIChsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGxvY2FsZV9pbmZvLT5ncm91cGluZyA9IGxvY2FsZV9kYXRhLT5ncm91cGluZzsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTFRfREVGQVVMVF9MT0NBTEU6CisgICAgICAgIGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50ID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKCcuJyk7CisgICAgICAgIGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKCcsJyk7CisgICAgICAgIGlmICghbG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgfHwgIWxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwKSB7CisgICAgICAgICAgICBQeV9YREVDUkVGKGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50KTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYobG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXApOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGxvY2FsZV9pbmZvLT5ncm91cGluZyA9ICJcMyI7IC8qIEdyb3VwIGV2ZXJ5IDMgY2hhcmFjdGVycy4gIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1wbGljaXQpIHRyYWlsaW5nIDAgbWVhbnMgcmVwZWF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZmluaXRlbHkuICovCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTFRfTk9fTE9DQUxFOgorICAgICAgICBsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCgnLicpOworICAgICAgICBsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCA9IFB5VW5pY29kZV9OZXcoMCwgMCk7CisgICAgICAgIGlmICghbG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgfHwgIWxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwKSB7CisgICAgICAgICAgICBQeV9YREVDUkVGKGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50KTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYobG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXApOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGxvY2FsZV9pbmZvLT5ncm91cGluZyA9IG5vX2dyb3VwaW5nOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorZnJlZV9sb2NhbGVfaW5mbyhMb2NhbGVJbmZvICpsb2NhbGVfaW5mbykKK3sKKyAgICBQeV9YREVDUkVGKGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50KTsKKyAgICBQeV9YREVDUkVGKGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKiBzdHJpbmcgZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgaW50Citmb3JtYXRfc3RyaW5nX2ludGVybmFsKFB5T2JqZWN0ICp2YWx1ZSwgY29uc3QgSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKK3sKKyAgICBQeV9zc2l6ZV90IGxwYWQ7CisgICAgUHlfc3NpemVfdCBycGFkOworICAgIFB5X3NzaXplX3QgdG90YWw7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgaW50IHJlc3VsdCA9IC0xOworICAgIFB5X1VDUzQgbWF4Y2hhcjsKKworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodmFsdWUpKTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh2YWx1ZSk7CisKKyAgICAvKiBzaWduIGlzIG5vdCBhbGxvd2VkIG9uIHN0cmluZ3MgKi8KKyAgICBpZiAoZm9ybWF0LT5zaWduICE9ICdcMCcpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiU2lnbiBub3QgYWxsb3dlZCBpbiBzdHJpbmcgZm9ybWF0IHNwZWNpZmllciIpOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgLyogYWx0ZXJuYXRlIGlzIG5vdCBhbGxvd2VkIG9uIHN0cmluZ3MgKi8KKyAgICBpZiAoZm9ybWF0LT5hbHRlcm5hdGUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQWx0ZXJuYXRlIGZvcm0gKCMpIG5vdCBhbGxvd2VkIGluIHN0cmluZyBmb3JtYXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllciIpOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgLyogJz0nIGFsaWdubWVudCBub3QgYWxsb3dlZCBvbiBzdHJpbmdzICovCisgICAgaWYgKGZvcm1hdC0+YWxpZ24gPT0gJz0nKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIic9JyBhbGlnbm1lbnQgbm90IGFsbG93ZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgImluIHN0cmluZyBmb3JtYXQgc3BlY2lmaWVyIik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBpZiAoZm9ybWF0LT53aWR0aCA9PSAtMSAmJiBmb3JtYXQtPnByZWNpc2lvbiA9PSAtMSkgeworICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIod3JpdGVyLCB2YWx1ZSk7CisgICAgfQorCisgICAgLyogaWYgcHJlY2lzaW9uIGlzIHNwZWNpZmllZCwgb3V0cHV0IG5vIG1vcmUgdGhhdCBmb3JtYXQucHJlY2lzaW9uCisgICAgICAgY2hhcmFjdGVycyAqLworICAgIGlmIChmb3JtYXQtPnByZWNpc2lvbiA+PSAwICYmIGxlbiA+PSBmb3JtYXQtPnByZWNpc2lvbikgeworICAgICAgICBsZW4gPSBmb3JtYXQtPnByZWNpc2lvbjsKKyAgICB9CisKKyAgICBjYWxjX3BhZGRpbmcobGVuLCBmb3JtYXQtPndpZHRoLCBmb3JtYXQtPmFsaWduLCAmbHBhZCwgJnJwYWQsICZ0b3RhbCk7CisKKyAgICBtYXhjaGFyID0gX1B5VW5pY29kZV9GaW5kTWF4Q2hhcih2YWx1ZSwgMCwgbGVuKTsKKyAgICBpZiAobHBhZCAhPSAwIHx8IHJwYWQgIT0gMCkKKyAgICAgICAgbWF4Y2hhciA9IFB5X01BWChtYXhjaGFyLCBmb3JtYXQtPmZpbGxfY2hhcik7CisKKyAgICAvKiBhbGxvY2F0ZSB0aGUgcmVzdWx0aW5nIHN0cmluZyAqLworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCB0b3RhbCwgbWF4Y2hhcikgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIC8qIFdyaXRlIGludG8gdGhhdCBzcGFjZS4gRmlyc3QgdGhlIHBhZGRpbmcuICovCisgICAgcmVzdWx0ID0gZmlsbF9wYWRkaW5nKHdyaXRlciwgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPmZpbGxfY2hhcj09J1wwJz8nICc6Zm9ybWF0LT5maWxsX2NoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxwYWQsIHJwYWQpOworICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIC8qIFRoZW4gdGhlIHNvdXJjZSBzdHJpbmcuICovCisgICAgaWYgKGxlbikgeworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLCAwLCBsZW4pOworICAgIH0KKyAgICB3cml0ZXItPnBvcyArPSAobGVuICsgcnBhZCk7CisgICAgcmVzdWx0ID0gMDsKKworZG9uZToKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKiogbG9uZyBmb3JtYXR0aW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGludAorZm9ybWF0X2xvbmdfaW50ZXJuYWwoUHlPYmplY3QgKnZhbHVlLCBjb25zdCBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKK3sKKyAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgUHlfVUNTNCBtYXhjaGFyID0gMTI3OworICAgIFB5T2JqZWN0ICp0bXAgPSBOVUxMOworICAgIFB5X3NzaXplX3QgaW51bWVyaWNfY2hhcnM7CisgICAgUHlfVUNTNCBzaWduX2NoYXIgPSAnXDAnOworICAgIFB5X3NzaXplX3Qgbl9kaWdpdHM7ICAgICAgIC8qIGNvdW50IG9mIGRpZ2l0cyBuZWVkIGZyb20gdGhlIGNvbXB1dGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nICovCisgICAgUHlfc3NpemVfdCBuX3JlbWFpbmRlciA9IDA7IC8qIFVzZWQgb25seSBmb3IgJ2MnIGZvcm1hdHRpbmcsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y2VzIG5vbi1kaWdpdHMgKi8KKyAgICBQeV9zc2l6ZV90IG5fcHJlZml4ID0gMDsgICAvKiBDb3VudCBvZiBwcmVmaXggY2hhcnMsIChlLmcuLCAnMHgnKSAqLworICAgIFB5X3NzaXplX3Qgbl90b3RhbDsKKyAgICBQeV9zc2l6ZV90IHByZWZpeCA9IDA7CisgICAgTnVtYmVyRmllbGRXaWR0aHMgc3BlYzsKKyAgICBsb25nIHg7CisKKyAgICAvKiBMb2NhbGUgc2V0dGluZ3MsIGVpdGhlciBmcm9tIHRoZSBhY3R1YWwgbG9jYWxlIG9yCisgICAgICAgZnJvbSBhIGhhcmQtY29kZSBwc2V1ZG8tbG9jYWxlICovCisgICAgTG9jYWxlSW5mbyBsb2NhbGUgPSBTVEFUSUNfTE9DQUxFX0lORk9fSU5JVDsKKworICAgIC8qIG5vIHByZWNpc2lvbiBhbGxvd2VkIG9uIGludGVnZXJzICovCisgICAgaWYgKGZvcm1hdC0+cHJlY2lzaW9uICE9IC0xKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlByZWNpc2lvbiBub3QgYWxsb3dlZCBpbiBpbnRlZ2VyIGZvcm1hdCBzcGVjaWZpZXIiKTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIC8qIHNwZWNpYWwgY2FzZSBmb3IgY2hhcmFjdGVyIGZvcm1hdHRpbmcgKi8KKyAgICBpZiAoZm9ybWF0LT50eXBlID09ICdjJykgeworICAgICAgICAvKiBlcnJvciB0byBzcGVjaWZ5IGEgc2lnbiAqLworICAgICAgICBpZiAoZm9ybWF0LT5zaWduICE9ICdcMCcpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaWduIG5vdCBhbGxvd2VkIHdpdGggaW50ZWdlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGZvcm1hdCBzcGVjaWZpZXIgJ2MnIik7CisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIH0KKworICAgICAgICAvKiB0YWtlbiBmcm9tIHVuaWNvZGVvYmplY3QuYyBmb3JtYXRjaGFyKCkgKi8KKyAgICAgICAgLyogSW50ZWdlciBpbnB1dCB0cnVuY2F0ZWQgdG8gYSBjaGFyYWN0ZXIgKi8KKyAgICAgICAgeCA9IFB5TG9uZ19Bc0xvbmcodmFsdWUpOworICAgICAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICBpZiAoeCA8IDAgfHwgeCA+IDB4MTBmZmZmKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJWMgYXJnIG5vdCBpbiByYW5nZSgweDExMDAwMCkiKTsKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgfQorICAgICAgICB0bXAgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoeCk7CisgICAgICAgIGludW1lcmljX2NoYXJzID0gMDsKKyAgICAgICAgbl9kaWdpdHMgPSAxOworICAgICAgICBtYXhjaGFyID0gUHlfTUFYKG1heGNoYXIsIChQeV9VQ1M0KXgpOworCisgICAgICAgIC8qIEFzIGEgc29ydC1vZiBoYWNrLCB3ZSB0ZWxsIGNhbGNfbnVtYmVyX3dpZHRocyB0aGF0IHdlIG9ubHkKKyAgICAgICAgICAgaGF2ZSAicmVtYWluZGVyIiBjaGFyYWN0ZXJzLiBjYWxjX251bWJlcl93aWR0aHMgdGhpbmtzCisgICAgICAgICAgIHRoZXNlIGFyZSBjaGFyYWN0ZXJzIHRoYXQgZG9uJ3QgZ2V0IGZvcm1hdHRlZCwgb25seSBjb3BpZWQKKyAgICAgICAgICAgaW50byB0aGUgb3V0cHV0IHN0cmluZy4gV2UgZG8gdGhpcyBmb3IgJ2MnIGZvcm1hdHRpbmcsCisgICAgICAgICAgIGJlY2F1c2UgdGhlIGNoYXJhY3RlcnMgYXJlIGxpa2VseSB0byBiZSBub24tZGlnaXRzLiAqLworICAgICAgICBuX3JlbWFpbmRlciA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpbnQgYmFzZTsKKyAgICAgICAgaW50IGxlYWRpbmdfY2hhcnNfdG9fc2tpcCA9IDA7ICAvKiBOdW1iZXIgb2YgY2hhcmFjdGVycyBhZGRlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TnVtYmVyX1RvQmFzZSB0aGF0IHdlIHdhbnQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwIG92ZXIuICovCisKKyAgICAgICAgLyogQ29tcHV0ZSB0aGUgYmFzZSBhbmQgaG93IG1hbnkgY2hhcmFjdGVycyB3aWxsIGJlIGFkZGVkIGJ5CisgICAgICAgICAgIFB5TnVtYmVyX1RvQmFzZSAqLworICAgICAgICBzd2l0Y2ggKGZvcm1hdC0+dHlwZSkgeworICAgICAgICBjYXNlICdiJzoKKyAgICAgICAgICAgIGJhc2UgPSAyOworICAgICAgICAgICAgbGVhZGluZ19jaGFyc190b19za2lwID0gMjsgLyogMGIgKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdvJzoKKyAgICAgICAgICAgIGJhc2UgPSA4OworICAgICAgICAgICAgbGVhZGluZ19jaGFyc190b19za2lwID0gMjsgLyogMG8gKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgY2FzZSAnWCc6CisgICAgICAgICAgICBiYXNlID0gMTY7CisgICAgICAgICAgICBsZWFkaW5nX2NoYXJzX3RvX3NraXAgPSAyOyAvKiAweCAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6ICAvKiBzaG91bGRuJ3QgYmUgbmVlZGVkLCBidXQgc3RvcHMgYSBjb21waWxlciB3YXJuaW5nICovCisgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICBjYXNlICduJzoKKyAgICAgICAgICAgIGJhc2UgPSAxMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZvcm1hdC0+c2lnbiAhPSAnKycgJiYgZm9ybWF0LT5zaWduICE9ICcgJworICAgICAgICAgICAgJiYgZm9ybWF0LT53aWR0aCA9PSAtMQorICAgICAgICAgICAgJiYgZm9ybWF0LT50eXBlICE9ICdYJyAmJiBmb3JtYXQtPnR5cGUgIT0gJ24nCisgICAgICAgICAgICAmJiAhZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycworICAgICAgICAgICAgJiYgUHlMb25nX0NoZWNrRXhhY3QodmFsdWUpKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgIHJldHVybiBfUHlMb25nX0Zvcm1hdFdyaXRlcih3cml0ZXIsIHZhbHVlLCBiYXNlLCBmb3JtYXQtPmFsdGVybmF0ZSk7CisgICAgICAgIH0KKworICAgICAgICAvKiBUaGUgbnVtYmVyIG9mIHByZWZpeCBjaGFycyBpcyB0aGUgc2FtZSBhcyB0aGUgbGVhZGluZworICAgICAgICAgICBjaGFycyB0byBza2lwICovCisgICAgICAgIGlmIChmb3JtYXQtPmFsdGVybmF0ZSkKKyAgICAgICAgICAgIG5fcHJlZml4ID0gbGVhZGluZ19jaGFyc190b19za2lwOworCisgICAgICAgIC8qIERvIHRoZSBoYXJkIHBhcnQsIGNvbnZlcnRpbmcgdG8gYSBzdHJpbmcgaW4gYSBnaXZlbiBiYXNlICovCisgICAgICAgIHRtcCA9IF9QeUxvbmdfRm9ybWF0KHZhbHVlLCBiYXNlKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWSh0bXApID09IC0xKQorICAgICAgICAgICAgZ290byBkb25lOworCisgICAgICAgIGludW1lcmljX2NoYXJzID0gMDsKKyAgICAgICAgbl9kaWdpdHMgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0bXApOworCisgICAgICAgIHByZWZpeCA9IGludW1lcmljX2NoYXJzOworCisgICAgICAgIC8qIElzIGEgc2lnbiBjaGFyYWN0ZXIgcHJlc2VudCBpbiB0aGUgb3V0cHV0PyAgSWYgc28sIHJlbWVtYmVyIGl0CisgICAgICAgICAgIGFuZCBza2lwIGl0ICovCisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRF9DSEFSKHRtcCwgaW51bWVyaWNfY2hhcnMpID09ICctJykgeworICAgICAgICAgICAgc2lnbl9jaGFyID0gJy0nOworICAgICAgICAgICAgKytwcmVmaXg7CisgICAgICAgICAgICArK2xlYWRpbmdfY2hhcnNfdG9fc2tpcDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFNraXAgb3ZlciB0aGUgbGVhZGluZyBjaGFycyAoMHgsIDBiLCBldGMuKSAqLworICAgICAgICBuX2RpZ2l0cyAtPSBsZWFkaW5nX2NoYXJzX3RvX3NraXA7CisgICAgICAgIGludW1lcmljX2NoYXJzICs9IGxlYWRpbmdfY2hhcnNfdG9fc2tpcDsKKyAgICB9CisKKyAgICAvKiBEZXRlcm1pbmUgdGhlIGdyb3VwaW5nLCBzZXBhcmF0b3IsIGFuZCBkZWNpbWFsIHBvaW50LCBpZiBhbnkuICovCisgICAgaWYgKGdldF9sb2NhbGVfaW5mbyhmb3JtYXQtPnR5cGUgPT0gJ24nID8gTFRfQ1VSUkVOVF9MT0NBTEUgOgorICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPworICAgICAgICAgICAgICAgICAgICAgICAgIExUX0RFRkFVTFRfTE9DQUxFIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICBMVF9OT19MT0NBTEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSkgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIC8qIENhbGN1bGF0ZSBob3cgbXVjaCBtZW1vcnkgd2UnbGwgbmVlZC4gKi8KKyAgICBuX3RvdGFsID0gY2FsY19udW1iZXJfd2lkdGhzKCZzcGVjLCBuX3ByZWZpeCwgc2lnbl9jaGFyLCB0bXAsIGludW1lcmljX2NoYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW51bWVyaWNfY2hhcnMgKyBuX2RpZ2l0cywgbl9yZW1haW5kZXIsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlLCBmb3JtYXQsICZtYXhjaGFyKTsKKworICAgIC8qIEFsbG9jYXRlIHRoZSBtZW1vcnkuICovCisgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIG5fdG90YWwsIG1heGNoYXIpID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAvKiBQb3B1bGF0ZSB0aGUgbWVtb3J5LiAqLworICAgIHJlc3VsdCA9IGZpbGxfbnVtYmVyKHdyaXRlciwgJnNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLCBpbnVtZXJpY19jaGFycywgaW51bWVyaWNfY2hhcnMgKyBuX2RpZ2l0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICB0bXAsIHByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPmZpbGxfY2hhciA9PSAnXDAnID8gJyAnIDogZm9ybWF0LT5maWxsX2NoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSwgZm9ybWF0LT50eXBlID09ICdYJyk7CisKK2RvbmU6CisgICAgUHlfWERFQ1JFRih0bXApOworICAgIGZyZWVfbG9jYWxlX2luZm8oJmxvY2FsZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKiBmbG9hdCBmb3JtYXR0aW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBtdWNoIG9mIHRoaXMgaXMgdGFrZW4gZnJvbSB1bmljb2Rlb2JqZWN0LmMgKi8KK3N0YXRpYyBpbnQKK2Zvcm1hdF9mbG9hdF9pbnRlcm5hbChQeU9iamVjdCAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQoreworICAgIGNoYXIgKmJ1ZiA9IE5VTEw7ICAgICAgIC8qIGJ1ZmZlciByZXR1cm5lZCBmcm9tIFB5T1NfZG91YmxlX3RvX3N0cmluZyAqLworICAgIFB5X3NzaXplX3Qgbl9kaWdpdHM7CisgICAgUHlfc3NpemVfdCBuX3JlbWFpbmRlcjsKKyAgICBQeV9zc2l6ZV90IG5fdG90YWw7CisgICAgaW50IGhhc19kZWNpbWFsOworICAgIGRvdWJsZSB2YWw7CisgICAgUHlfc3NpemVfdCBwcmVjaXNpb24gPSBmb3JtYXQtPnByZWNpc2lvbjsKKyAgICBQeV9zc2l6ZV90IGRlZmF1bHRfcHJlY2lzaW9uID0gNjsKKyAgICBQeV9VQ1M0IHR5cGUgPSBmb3JtYXQtPnR5cGU7CisgICAgaW50IGFkZF9wY3QgPSAwOworICAgIFB5X3NzaXplX3QgaW5kZXg7CisgICAgTnVtYmVyRmllbGRXaWR0aHMgc3BlYzsKKyAgICBpbnQgZmxhZ3MgPSAwOworICAgIGludCByZXN1bHQgPSAtMTsKKyAgICBQeV9VQ1M0IG1heGNoYXIgPSAxMjc7CisgICAgUHlfVUNTNCBzaWduX2NoYXIgPSAnXDAnOworICAgIGludCBmbG9hdF90eXBlOyAvKiBVc2VkIHRvIHNlZSBpZiB3ZSBoYXZlIGEgbmFuLCBpbmYsIG9yIHJlZ3VsYXIgZmxvYXQuICovCisgICAgUHlPYmplY3QgKnVuaWNvZGVfdG1wID0gTlVMTDsKKworICAgIC8qIExvY2FsZSBzZXR0aW5ncywgZWl0aGVyIGZyb20gdGhlIGFjdHVhbCBsb2NhbGUgb3IKKyAgICAgICBmcm9tIGEgaGFyZC1jb2RlIHBzZXVkby1sb2NhbGUgKi8KKyAgICBMb2NhbGVJbmZvIGxvY2FsZSA9IFNUQVRJQ19MT0NBTEVfSU5GT19JTklUOworCisgICAgaWYgKGZvcm1hdC0+YWx0ZXJuYXRlKQorICAgICAgICBmbGFncyB8PSBQeV9EVFNGX0FMVDsKKworICAgIGlmICh0eXBlID09ICdcMCcpIHsKKyAgICAgICAgLyogT21pdHRlZCB0eXBlIHNwZWNpZmllci4gIEJlaGF2ZXMgaW4gdGhlIHNhbWUgd2F5IGFzIHJlcHIoeCkKKyAgICAgICAgICAgYW5kIHN0cih4KSBpZiBubyBwcmVjaXNpb24gaXMgZ2l2ZW4sIGVsc2UgbGlrZSAnZycsIGJ1dCB3aXRoCisgICAgICAgICAgIGF0IGxlYXN0IG9uZSBkaWdpdCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludC4gKi8KKyAgICAgICAgZmxhZ3MgfD0gUHlfRFRTRl9BRERfRE9UXzA7CisgICAgICAgIHR5cGUgPSAncic7CisgICAgICAgIGRlZmF1bHRfcHJlY2lzaW9uID0gMDsKKyAgICB9CisKKyAgICBpZiAodHlwZSA9PSAnbicpCisgICAgICAgIC8qICduJyBpcyB0aGUgc2FtZSBhcyAnZycsIGV4Y2VwdCBmb3IgdGhlIGxvY2FsZSB1c2VkIHRvCisgICAgICAgICAgIGZvcm1hdCB0aGUgcmVzdWx0LiBXZSB0YWtlIGNhcmUgb2YgdGhhdCBsYXRlci4gKi8KKyAgICAgICAgdHlwZSA9ICdnJzsKKworICAgIHZhbCA9IFB5RmxvYXRfQXNEb3VibGUodmFsdWUpOworICAgIGlmICh2YWwgPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBpZiAodHlwZSA9PSAnJScpIHsKKyAgICAgICAgdHlwZSA9ICdmJzsKKyAgICAgICAgdmFsICo9IDEwMDsKKyAgICAgICAgYWRkX3BjdCA9IDE7CisgICAgfQorCisgICAgaWYgKHByZWNpc2lvbiA8IDApCisgICAgICAgIHByZWNpc2lvbiA9IGRlZmF1bHRfcHJlY2lzaW9uOworICAgIGVsc2UgaWYgKHR5cGUgPT0gJ3InKQorICAgICAgICB0eXBlID0gJ2cnOworCisgICAgLyogQ2FzdCAidHlwZSIsIGJlY2F1c2UgaWYgd2UncmUgaW4gdW5pY29kZSB3ZSBuZWVkIHRvIHBhc3MgYQorICAgICAgIDgtYml0IGNoYXIuIFRoaXMgaXMgc2FmZSwgYmVjYXVzZSB3ZSd2ZSByZXN0cmljdGVkIHdoYXQgInR5cGUiCisgICAgICAgY2FuIGJlLiAqLworICAgIGJ1ZiA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyh2YWwsIChjaGFyKXR5cGUsIHByZWNpc2lvbiwgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmbG9hdF90eXBlKTsKKyAgICBpZiAoYnVmID09IE5VTEwpCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBuX2RpZ2l0cyA9IHN0cmxlbihidWYpOworCisgICAgaWYgKGFkZF9wY3QpIHsKKyAgICAgICAgLyogV2Uga25vdyB0aGF0IGJ1ZiBoYXMgYSB0cmFpbGluZyB6ZXJvIChzaW5jZSB3ZSBqdXN0IGNhbGxlZAorICAgICAgICAgICBzdHJsZW4oKSBvbiBpdCksIGFuZCB3ZSBkb24ndCB1c2UgdGhhdCBmYWN0IGFueSBtb3JlLiBTbyB3ZQorICAgICAgICAgICBjYW4ganVzdCB3cml0ZSBvdmVyIHRoZSB0cmFpbGluZyB6ZXJvLiAqLworICAgICAgICBidWZbbl9kaWdpdHNdID0gJyUnOworICAgICAgICBuX2RpZ2l0cyArPSAxOworICAgIH0KKworICAgIC8qIFNpbmNlIHRoZXJlIGlzIG5vIHVuaWNvZGUgdmVyc2lvbiBvZiBQeU9TX2RvdWJsZV90b19zdHJpbmcsCisgICAgICAganVzdCB1c2UgdGhlIDggYml0IHZlcnNpb24gYW5kIHRoZW4gY29udmVydCB0byB1bmljb2RlLiAqLworICAgIHVuaWNvZGVfdG1wID0gX1B5VW5pY29kZV9Gcm9tQVNDSUkoYnVmLCBuX2RpZ2l0cyk7CisgICAgUHlNZW1fRnJlZShidWYpOworICAgIGlmICh1bmljb2RlX3RtcCA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBpZiAoZm9ybWF0LT5zaWduICE9ICcrJyAmJiBmb3JtYXQtPnNpZ24gIT0gJyAnCisgICAgICAgICYmIGZvcm1hdC0+d2lkdGggPT0gLTEKKyAgICAgICAgJiYgZm9ybWF0LT50eXBlICE9ICduJworICAgICAgICAmJiAhZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycykKKyAgICB7CisgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICByZXN1bHQgPSBfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKHdyaXRlciwgdW5pY29kZV90bXApOworICAgICAgICBQeV9ERUNSRUYodW5pY29kZV90bXApOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qIElzIGEgc2lnbiBjaGFyYWN0ZXIgcHJlc2VudCBpbiB0aGUgb3V0cHV0PyAgSWYgc28sIHJlbWVtYmVyIGl0CisgICAgICAgYW5kIHNraXAgaXQgKi8KKyAgICBpbmRleCA9IDA7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEX0NIQVIodW5pY29kZV90bXAsIGluZGV4KSA9PSAnLScpIHsKKyAgICAgICAgc2lnbl9jaGFyID0gJy0nOworICAgICAgICArK2luZGV4OworICAgICAgICAtLW5fZGlnaXRzOworICAgIH0KKworICAgIC8qIERldGVybWluZSBpZiB3ZSBoYXZlIGFueSAicmVtYWluZGVyIiAoYWZ0ZXIgdGhlIGRpZ2l0cywgbWlnaHQgaW5jbHVkZQorICAgICAgIGRlY2ltYWwgb3IgZXhwb25lbnQgb3IgYm90aCAob3IgbmVpdGhlcikpICovCisgICAgcGFyc2VfbnVtYmVyKHVuaWNvZGVfdG1wLCBpbmRleCwgaW5kZXggKyBuX2RpZ2l0cywgJm5fcmVtYWluZGVyLCAmaGFzX2RlY2ltYWwpOworCisgICAgLyogRGV0ZXJtaW5lIHRoZSBncm91cGluZywgc2VwYXJhdG9yLCBhbmQgZGVjaW1hbCBwb2ludCwgaWYgYW55LiAqLworICAgIGlmIChnZXRfbG9jYWxlX2luZm8oZm9ybWF0LT50eXBlID09ICduJyA/IExUX0NVUlJFTlRfTE9DQUxFIDoKKyAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID8KKyAgICAgICAgICAgICAgICAgICAgICAgICBMVF9ERUZBVUxUX0xPQ0FMRSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgTFRfTk9fTE9DQUxFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbGUpID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAvKiBDYWxjdWxhdGUgaG93IG11Y2ggbWVtb3J5IHdlJ2xsIG5lZWQuICovCisgICAgbl90b3RhbCA9IGNhbGNfbnVtYmVyX3dpZHRocygmc3BlYywgMCwgc2lnbl9jaGFyLCB1bmljb2RlX3RtcCwgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCArIG5fZGlnaXRzLCBuX3JlbWFpbmRlciwgaGFzX2RlY2ltYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlLCBmb3JtYXQsICZtYXhjaGFyKTsKKworICAgIC8qIEFsbG9jYXRlIHRoZSBtZW1vcnkuICovCisgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIG5fdG90YWwsIG1heGNoYXIpID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAvKiBQb3B1bGF0ZSB0aGUgbWVtb3J5LiAqLworICAgIHJlc3VsdCA9IGZpbGxfbnVtYmVyKHdyaXRlciwgJnNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZV90bXAsIGluZGV4LCBpbmRleCArIG5fZGlnaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT5maWxsX2NoYXIgPT0gJ1wwJyA/ICcgJyA6IGZvcm1hdC0+ZmlsbF9jaGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbGUsIDApOworCitkb25lOgorICAgIFB5X1hERUNSRUYodW5pY29kZV90bXApOworICAgIGZyZWVfbG9jYWxlX2luZm8oJmxvY2FsZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKiBjb21wbGV4IGZvcm1hdHRpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgaW50Citmb3JtYXRfY29tcGxleF9pbnRlcm5hbChQeU9iamVjdCAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKK3sKKyAgICBkb3VibGUgcmU7CisgICAgZG91YmxlIGltOworICAgIGNoYXIgKnJlX2J1ZiA9IE5VTEw7ICAgICAgIC8qIGJ1ZmZlciByZXR1cm5lZCBmcm9tIFB5T1NfZG91YmxlX3RvX3N0cmluZyAqLworICAgIGNoYXIgKmltX2J1ZiA9IE5VTEw7ICAgICAgIC8qIGJ1ZmZlciByZXR1cm5lZCBmcm9tIFB5T1NfZG91YmxlX3RvX3N0cmluZyAqLworCisgICAgSW50ZXJuYWxGb3JtYXRTcGVjIHRtcF9mb3JtYXQgPSAqZm9ybWF0OworICAgIFB5X3NzaXplX3Qgbl9yZV9kaWdpdHM7CisgICAgUHlfc3NpemVfdCBuX2ltX2RpZ2l0czsKKyAgICBQeV9zc2l6ZV90IG5fcmVfcmVtYWluZGVyOworICAgIFB5X3NzaXplX3Qgbl9pbV9yZW1haW5kZXI7CisgICAgUHlfc3NpemVfdCBuX3JlX3RvdGFsOworICAgIFB5X3NzaXplX3Qgbl9pbV90b3RhbDsKKyAgICBpbnQgcmVfaGFzX2RlY2ltYWw7CisgICAgaW50IGltX2hhc19kZWNpbWFsOworICAgIFB5X3NzaXplX3QgcHJlY2lzaW9uID0gZm9ybWF0LT5wcmVjaXNpb247CisgICAgUHlfc3NpemVfdCBkZWZhdWx0X3ByZWNpc2lvbiA9IDY7CisgICAgUHlfVUNTNCB0eXBlID0gZm9ybWF0LT50eXBlOworICAgIFB5X3NzaXplX3QgaV9yZTsKKyAgICBQeV9zc2l6ZV90IGlfaW07CisgICAgTnVtYmVyRmllbGRXaWR0aHMgcmVfc3BlYzsKKyAgICBOdW1iZXJGaWVsZFdpZHRocyBpbV9zcGVjOworICAgIGludCBmbGFncyA9IDA7CisgICAgaW50IHJlc3VsdCA9IC0xOworICAgIFB5X1VDUzQgbWF4Y2hhciA9IDEyNzsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIHJraW5kOworICAgIHZvaWQgKnJkYXRhOworICAgIFB5X1VDUzQgcmVfc2lnbl9jaGFyID0gJ1wwJzsKKyAgICBQeV9VQ1M0IGltX3NpZ25fY2hhciA9ICdcMCc7CisgICAgaW50IHJlX2Zsb2F0X3R5cGU7IC8qIFVzZWQgdG8gc2VlIGlmIHdlIGhhdmUgYSBuYW4sIGluZiwgb3IgcmVndWxhciBmbG9hdC4gKi8KKyAgICBpbnQgaW1fZmxvYXRfdHlwZTsKKyAgICBpbnQgYWRkX3BhcmVucyA9IDA7CisgICAgaW50IHNraXBfcmUgPSAwOworICAgIFB5X3NzaXplX3QgbHBhZDsKKyAgICBQeV9zc2l6ZV90IHJwYWQ7CisgICAgUHlfc3NpemVfdCB0b3RhbDsKKyAgICBQeU9iamVjdCAqcmVfdW5pY29kZV90bXAgPSBOVUxMOworICAgIFB5T2JqZWN0ICppbV91bmljb2RlX3RtcCA9IE5VTEw7CisKKyAgICAvKiBMb2NhbGUgc2V0dGluZ3MsIGVpdGhlciBmcm9tIHRoZSBhY3R1YWwgbG9jYWxlIG9yCisgICAgICAgZnJvbSBhIGhhcmQtY29kZSBwc2V1ZG8tbG9jYWxlICovCisgICAgTG9jYWxlSW5mbyBsb2NhbGUgPSBTVEFUSUNfTE9DQUxFX0lORk9fSU5JVDsKKworICAgIC8qIFplcm8gcGFkZGluZyBpcyBub3QgYWxsb3dlZC4gKi8KKyAgICBpZiAoZm9ybWF0LT5maWxsX2NoYXIgPT0gJzAnKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlplcm8gcGFkZGluZyBpcyBub3QgYWxsb3dlZCBpbiBjb21wbGV4IGZvcm1hdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAic3BlY2lmaWVyIik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICAvKiBOZWl0aGVyIGlzICc9JyBhbGlnbm1lbnQgLiAqLworICAgIGlmIChmb3JtYXQtPmFsaWduID09ICc9JykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICInPScgYWxpZ25tZW50IGZsYWcgaXMgbm90IGFsbG93ZWQgaW4gY29tcGxleCBmb3JtYXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllciIpOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgcmUgPSBQeUNvbXBsZXhfUmVhbEFzRG91YmxlKHZhbHVlKTsKKyAgICBpZiAocmUgPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgaW0gPSBQeUNvbXBsZXhfSW1hZ0FzRG91YmxlKHZhbHVlKTsKKyAgICBpZiAoaW0gPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBpZiAoZm9ybWF0LT5hbHRlcm5hdGUpCisgICAgICAgIGZsYWdzIHw9IFB5X0RUU0ZfQUxUOworCisgICAgaWYgKHR5cGUgPT0gJ1wwJykgeworICAgICAgICAvKiBPbWl0dGVkIHR5cGUgc3BlY2lmaWVyLiBTaG91bGQgYmUgbGlrZSBzdHIoc2VsZikuICovCisgICAgICAgIHR5cGUgPSAncic7CisgICAgICAgIGRlZmF1bHRfcHJlY2lzaW9uID0gMDsKKyAgICAgICAgaWYgKHJlID09IDAuMCAmJiBjb3B5c2lnbigxLjAsIHJlKSA9PSAxLjApCisgICAgICAgICAgICBza2lwX3JlID0gMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkX3BhcmVucyA9IDE7CisgICAgfQorCisgICAgaWYgKHR5cGUgPT0gJ24nKQorICAgICAgICAvKiAnbicgaXMgdGhlIHNhbWUgYXMgJ2cnLCBleGNlcHQgZm9yIHRoZSBsb2NhbGUgdXNlZCB0bworICAgICAgICAgICBmb3JtYXQgdGhlIHJlc3VsdC4gV2UgdGFrZSBjYXJlIG9mIHRoYXQgbGF0ZXIuICovCisgICAgICAgIHR5cGUgPSAnZyc7CisKKyAgICBpZiAocHJlY2lzaW9uIDwgMCkKKyAgICAgICAgcHJlY2lzaW9uID0gZGVmYXVsdF9wcmVjaXNpb247CisgICAgZWxzZSBpZiAodHlwZSA9PSAncicpCisgICAgICAgIHR5cGUgPSAnZyc7CisKKyAgICAvKiBDYXN0ICJ0eXBlIiwgYmVjYXVzZSBpZiB3ZSdyZSBpbiB1bmljb2RlIHdlIG5lZWQgdG8gcGFzcyBhCisgICAgICAgOC1iaXQgY2hhci4gVGhpcyBpcyBzYWZlLCBiZWNhdXNlIHdlJ3ZlIHJlc3RyaWN0ZWQgd2hhdCAidHlwZSIKKyAgICAgICBjYW4gYmUuICovCisgICAgcmVfYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKHJlLCAoY2hhcil0eXBlLCBwcmVjaXNpb24sIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVfZmxvYXRfdHlwZSk7CisgICAgaWYgKHJlX2J1ZiA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgaW1fYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKGltLCAoY2hhcil0eXBlLCBwcmVjaXNpb24sIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW1fZmxvYXRfdHlwZSk7CisgICAgaWYgKGltX2J1ZiA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBuX3JlX2RpZ2l0cyA9IHN0cmxlbihyZV9idWYpOworICAgIG5faW1fZGlnaXRzID0gc3RybGVuKGltX2J1Zik7CisKKyAgICAvKiBTaW5jZSB0aGVyZSBpcyBubyB1bmljb2RlIHZlcnNpb24gb2YgUHlPU19kb3VibGVfdG9fc3RyaW5nLAorICAgICAgIGp1c3QgdXNlIHRoZSA4IGJpdCB2ZXJzaW9uIGFuZCB0aGVuIGNvbnZlcnQgdG8gdW5pY29kZS4gKi8KKyAgICByZV91bmljb2RlX3RtcCA9IF9QeVVuaWNvZGVfRnJvbUFTQ0lJKHJlX2J1Ziwgbl9yZV9kaWdpdHMpOworICAgIGlmIChyZV91bmljb2RlX3RtcCA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgaV9yZSA9IDA7CisKKyAgICBpbV91bmljb2RlX3RtcCA9IF9QeVVuaWNvZGVfRnJvbUFTQ0lJKGltX2J1Ziwgbl9pbV9kaWdpdHMpOworICAgIGlmIChpbV91bmljb2RlX3RtcCA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgaV9pbSA9IDA7CisKKyAgICAvKiBJcyBhIHNpZ24gY2hhcmFjdGVyIHByZXNlbnQgaW4gdGhlIG91dHB1dD8gIElmIHNvLCByZW1lbWJlciBpdAorICAgICAgIGFuZCBza2lwIGl0ICovCisgICAgaWYgKFB5VW5pY29kZV9SRUFEX0NIQVIocmVfdW5pY29kZV90bXAsIGlfcmUpID09ICctJykgeworICAgICAgICByZV9zaWduX2NoYXIgPSAnLSc7CisgICAgICAgICsraV9yZTsKKyAgICAgICAgLS1uX3JlX2RpZ2l0czsKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEX0NIQVIoaW1fdW5pY29kZV90bXAsIGlfaW0pID09ICctJykgeworICAgICAgICBpbV9zaWduX2NoYXIgPSAnLSc7CisgICAgICAgICsraV9pbTsKKyAgICAgICAgLS1uX2ltX2RpZ2l0czsKKyAgICB9CisKKyAgICAvKiBEZXRlcm1pbmUgaWYgd2UgaGF2ZSBhbnkgInJlbWFpbmRlciIgKGFmdGVyIHRoZSBkaWdpdHMsIG1pZ2h0IGluY2x1ZGUKKyAgICAgICBkZWNpbWFsIG9yIGV4cG9uZW50IG9yIGJvdGggKG9yIG5laXRoZXIpKSAqLworICAgIHBhcnNlX251bWJlcihyZV91bmljb2RlX3RtcCwgaV9yZSwgaV9yZSArIG5fcmVfZGlnaXRzLAorICAgICAgICAgICAgICAgICAmbl9yZV9yZW1haW5kZXIsICZyZV9oYXNfZGVjaW1hbCk7CisgICAgcGFyc2VfbnVtYmVyKGltX3VuaWNvZGVfdG1wLCBpX2ltLCBpX2ltICsgbl9pbV9kaWdpdHMsCisgICAgICAgICAgICAgICAgICZuX2ltX3JlbWFpbmRlciwgJmltX2hhc19kZWNpbWFsKTsKKworICAgIC8qIERldGVybWluZSB0aGUgZ3JvdXBpbmcsIHNlcGFyYXRvciwgYW5kIGRlY2ltYWwgcG9pbnQsIGlmIGFueS4gKi8KKyAgICBpZiAoZ2V0X2xvY2FsZV9pbmZvKGZvcm1hdC0+dHlwZSA9PSAnbicgPyBMVF9DVVJSRU5UX0xPQ0FMRSA6CisgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA/CisgICAgICAgICAgICAgICAgICAgICAgICAgTFRfREVGQVVMVF9MT0NBTEUgOgorICAgICAgICAgICAgICAgICAgICAgICAgIExUX05PX0xPQ0FMRSksCisgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlKSA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOworCisgICAgLyogVHVybiBvZmYgYW55IHBhZGRpbmcuIFdlJ2xsIGRvIGl0IGxhdGVyIGFmdGVyIHdlJ3ZlIGNvbXBvc2VkCisgICAgICAgdGhlIG51bWJlcnMgd2l0aG91dCBwYWRkaW5nLiAqLworICAgIHRtcF9mb3JtYXQuZmlsbF9jaGFyID0gJ1wwJzsKKyAgICB0bXBfZm9ybWF0LmFsaWduID0gJzwnOworICAgIHRtcF9mb3JtYXQud2lkdGggPSAtMTsKKworICAgIC8qIENhbGN1bGF0ZSBob3cgbXVjaCBtZW1vcnkgd2UnbGwgbmVlZC4gKi8KKyAgICBuX3JlX3RvdGFsID0gY2FsY19udW1iZXJfd2lkdGhzKCZyZV9zcGVjLCAwLCByZV9zaWduX2NoYXIsIHJlX3VuaWNvZGVfdG1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaV9yZSwgaV9yZSArIG5fcmVfZGlnaXRzLCBuX3JlX3JlbWFpbmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlX2hhc19kZWNpbWFsLCAmbG9jYWxlLCAmdG1wX2Zvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYXhjaGFyKTsKKworICAgIC8qIFNhbWUgZm9ybWF0dGluZywgYnV0IGFsd2F5cyBpbmNsdWRlIGEgc2lnbiwgdW5sZXNzIHRoZSByZWFsIHBhcnQgaXMKKyAgICAgKiBnb2luZyB0byBiZSBvbWl0dGVkLCBpbiB3aGljaCBjYXNlIHdlIHVzZSB3aGF0ZXZlciBzaWduIGNvbnZlbnRpb24gd2FzCisgICAgICogcmVxdWVzdGVkIGJ5IHRoZSBvcmlnaW5hbCBmb3JtYXQuICovCisgICAgaWYgKCFza2lwX3JlKQorICAgICAgICB0bXBfZm9ybWF0LnNpZ24gPSAnKyc7CisgICAgbl9pbV90b3RhbCA9IGNhbGNfbnVtYmVyX3dpZHRocygmaW1fc3BlYywgMCwgaW1fc2lnbl9jaGFyLCBpbV91bmljb2RlX3RtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlfaW0sIGlfaW0gKyBuX2ltX2RpZ2l0cywgbl9pbV9yZW1haW5kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbV9oYXNfZGVjaW1hbCwgJmxvY2FsZSwgJnRtcF9mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWF4Y2hhcik7CisKKyAgICBpZiAoc2tpcF9yZSkKKyAgICAgICAgbl9yZV90b3RhbCA9IDA7CisKKyAgICAvKiBBZGQgMSBmb3IgdGhlICdqJywgYW5kIG9wdGlvbmFsbHkgMiBmb3IgcGFyZW5zLiAqLworICAgIGNhbGNfcGFkZGluZyhuX3JlX3RvdGFsICsgbl9pbV90b3RhbCArIDEgKyBhZGRfcGFyZW5zICogMiwKKyAgICAgICAgICAgICAgICAgZm9ybWF0LT53aWR0aCwgZm9ybWF0LT5hbGlnbiwgJmxwYWQsICZycGFkLCAmdG90YWwpOworCisgICAgaWYgKGxwYWQgfHwgcnBhZCkKKyAgICAgICAgbWF4Y2hhciA9IFB5X01BWChtYXhjaGFyLCBmb3JtYXQtPmZpbGxfY2hhcik7CisKKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKHdyaXRlciwgdG90YWwsIG1heGNoYXIpID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgcmtpbmQgPSB3cml0ZXItPmtpbmQ7CisgICAgcmRhdGEgPSB3cml0ZXItPmRhdGE7CisKKyAgICAvKiBQb3B1bGF0ZSB0aGUgbWVtb3J5LiBGaXJzdCwgdGhlIHBhZGRpbmcuICovCisgICAgcmVzdWx0ID0gZmlsbF9wYWRkaW5nKHdyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbl9yZV90b3RhbCArIG5faW1fdG90YWwgKyAxICsgYWRkX3BhcmVucyAqIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+ZmlsbF9jaGFyPT0nXDAnID8gJyAnIDogZm9ybWF0LT5maWxsX2NoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxwYWQsIHJwYWQpOworICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIGlmIChhZGRfcGFyZW5zKSB7CisgICAgICAgIFB5VW5pY29kZV9XUklURShya2luZCwgcmRhdGEsIHdyaXRlci0+cG9zLCAnKCcpOworICAgICAgICB3cml0ZXItPnBvcysrOworICAgIH0KKworICAgIGlmICghc2tpcF9yZSkgeworICAgICAgICByZXN1bHQgPSBmaWxsX251bWJlcih3cml0ZXIsICZyZV9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZV91bmljb2RlX3RtcCwgaV9yZSwgaV9yZSArIG5fcmVfZGlnaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlLCAwKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisgICAgcmVzdWx0ID0gZmlsbF9udW1iZXIod3JpdGVyLCAmaW1fc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbV91bmljb2RlX3RtcCwgaV9pbSwgaV9pbSArIG5faW1fZGlnaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlLCAwKTsKKyAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgUHlVbmljb2RlX1dSSVRFKHJraW5kLCByZGF0YSwgd3JpdGVyLT5wb3MsICdqJyk7CisgICAgd3JpdGVyLT5wb3MrKzsKKworICAgIGlmIChhZGRfcGFyZW5zKSB7CisgICAgICAgIFB5VW5pY29kZV9XUklURShya2luZCwgcmRhdGEsIHdyaXRlci0+cG9zLCAnKScpOworICAgICAgICB3cml0ZXItPnBvcysrOworICAgIH0KKworICAgIHdyaXRlci0+cG9zICs9IHJwYWQ7CisKK2RvbmU6CisgICAgUHlNZW1fRnJlZShyZV9idWYpOworICAgIFB5TWVtX0ZyZWUoaW1fYnVmKTsKKyAgICBQeV9YREVDUkVGKHJlX3VuaWNvZGVfdG1wKTsKKyAgICBQeV9YREVDUkVGKGltX3VuaWNvZGVfdG1wKTsKKyAgICBmcmVlX2xvY2FsZV9pbmZvKCZsb2NhbGUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKiogYnVpbHQgaW4gZm9ybWF0dGVycyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBpbnQKK2Zvcm1hdF9vYmooUHlPYmplY3QgKm9iaiwgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQoreworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgaW50IGVycjsKKworICAgIHN0ciA9IFB5T2JqZWN0X1N0cihvYmopOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVyciA9IF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIod3JpdGVyLCBzdHIpOworICAgIFB5X0RFQ1JFRihzdHIpOworICAgIHJldHVybiBlcnI7Cit9CisKK2ludAorX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZFdyaXRlcihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgSW50ZXJuYWxGb3JtYXRTcGVjIGZvcm1hdDsKKworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob2JqKSk7CisKKyAgICAvKiBjaGVjayBmb3IgdGhlIHNwZWNpYWwgY2FzZSBvZiB6ZXJvIGxlbmd0aCBmb3JtYXQgc3BlYywgbWFrZQorICAgICAgIGl0IGVxdWl2YWxlbnQgdG8gc3RyKG9iaikgKi8KKyAgICBpZiAoc3RhcnQgPT0gZW5kKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChvYmopKQorICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIod3JpdGVyLCBvYmopOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZm9ybWF0X29iaihvYmosIHdyaXRlcik7CisgICAgfQorCisgICAgLyogcGFyc2UgdGhlIGZvcm1hdF9zcGVjICovCisgICAgaWYgKCFwYXJzZV9pbnRlcm5hbF9yZW5kZXJfZm9ybWF0X3NwZWMoZm9ybWF0X3NwZWMsIHN0YXJ0LCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCwgJ3MnLCAnPCcpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiB0eXBlIGNvbnZlcnNpb24/ICovCisgICAgc3dpdGNoIChmb3JtYXQudHlwZSkgeworICAgIGNhc2UgJ3MnOgorICAgICAgICAvKiBubyB0eXBlIGNvbnZlcnNpb24gbmVlZGVkLCBhbHJlYWR5IGEgc3RyaW5nLiAgZG8gdGhlIGZvcm1hdHRpbmcgKi8KKyAgICAgICAgcmV0dXJuIGZvcm1hdF9zdHJpbmdfaW50ZXJuYWwob2JqLCAmZm9ybWF0LCB3cml0ZXIpOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8qIHVua25vd24gKi8KKyAgICAgICAgdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShmb3JtYXQudHlwZSwgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KK30KKworaW50CitfUHlMb25nX0Zvcm1hdEFkdmFuY2VkV3JpdGVyKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICBQeU9iamVjdCAqdG1wID0gTlVMTCwgKnN0ciA9IE5VTEw7CisgICAgSW50ZXJuYWxGb3JtYXRTcGVjIGZvcm1hdDsKKyAgICBpbnQgcmVzdWx0ID0gLTE7CisKKyAgICAvKiBjaGVjayBmb3IgdGhlIHNwZWNpYWwgY2FzZSBvZiB6ZXJvIGxlbmd0aCBmb3JtYXQgc3BlYywgbWFrZQorICAgICAgIGl0IGVxdWl2YWxlbnQgdG8gc3RyKG9iaikgKi8KKyAgICBpZiAoc3RhcnQgPT0gZW5kKSB7CisgICAgICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvYmopKQorICAgICAgICAgICAgcmV0dXJuIF9QeUxvbmdfRm9ybWF0V3JpdGVyKHdyaXRlciwgb2JqLCAxMCwgMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXRfb2JqKG9iaiwgd3JpdGVyKTsKKyAgICB9CisKKyAgICAvKiBwYXJzZSB0aGUgZm9ybWF0X3NwZWMgKi8KKyAgICBpZiAoIXBhcnNlX2ludGVybmFsX3JlbmRlcl9mb3JtYXRfc3BlYyhmb3JtYXRfc3BlYywgc3RhcnQsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0LCAnZCcsICc+JykpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIC8qIHR5cGUgY29udmVyc2lvbj8gKi8KKyAgICBzd2l0Y2ggKGZvcm1hdC50eXBlKSB7CisgICAgY2FzZSAnYic6CisgICAgY2FzZSAnYyc6CisgICAgY2FzZSAnZCc6CisgICAgY2FzZSAnbyc6CisgICAgY2FzZSAneCc6CisgICAgY2FzZSAnWCc6CisgICAgY2FzZSAnbic6CisgICAgICAgIC8qIG5vIHR5cGUgY29udmVyc2lvbiBuZWVkZWQsIGFscmVhZHkgYW4gaW50IChvciBsb25nKS4gIGRvCisgICAgICAgICAgIHRoZSBmb3JtYXR0aW5nICovCisgICAgICAgIHJlc3VsdCA9IGZvcm1hdF9sb25nX2ludGVybmFsKG9iaiwgJmZvcm1hdCwgd3JpdGVyKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlICdlJzoKKyAgICBjYXNlICdFJzoKKyAgICBjYXNlICdmJzoKKyAgICBjYXNlICdGJzoKKyAgICBjYXNlICdnJzoKKyAgICBjYXNlICdHJzoKKyAgICBjYXNlICclJzoKKyAgICAgICAgLyogY29udmVydCB0byBmbG9hdCAqLworICAgICAgICB0bXAgPSBQeU51bWJlcl9GbG9hdChvYmopOworICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIHJlc3VsdCA9IGZvcm1hdF9mbG9hdF9pbnRlcm5hbCh0bXAsICZmb3JtYXQsIHdyaXRlcik7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgLyogdW5rbm93biAqLworICAgICAgICB1bmtub3duX3ByZXNlbnRhdGlvbl90eXBlKGZvcm1hdC50eXBlLCBvYmotPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCitkb25lOgorICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICBQeV9YREVDUkVGKHN0cik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50CitfUHlGbG9hdF9Gb3JtYXRBZHZhbmNlZFdyaXRlcihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgSW50ZXJuYWxGb3JtYXRTcGVjIGZvcm1hdDsKKworICAgIC8qIGNoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIG9mIHplcm8gbGVuZ3RoIGZvcm1hdCBzcGVjLCBtYWtlCisgICAgICAgaXQgZXF1aXZhbGVudCB0byBzdHIob2JqKSAqLworICAgIGlmIChzdGFydCA9PSBlbmQpCisgICAgICAgIHJldHVybiBmb3JtYXRfb2JqKG9iaiwgd3JpdGVyKTsKKworICAgIC8qIHBhcnNlIHRoZSBmb3JtYXRfc3BlYyAqLworICAgIGlmICghcGFyc2VfaW50ZXJuYWxfcmVuZGVyX2Zvcm1hdF9zcGVjKGZvcm1hdF9zcGVjLCBzdGFydCwgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsICdcMCcsICc+JykpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIHR5cGUgY29udmVyc2lvbj8gKi8KKyAgICBzd2l0Y2ggKGZvcm1hdC50eXBlKSB7CisgICAgY2FzZSAnXDAnOiAvKiBObyBmb3JtYXQgY29kZTogbGlrZSAnZycsIGJ1dCB3aXRoIGF0IGxlYXN0IG9uZSBkZWNpbWFsLiAqLworICAgIGNhc2UgJ2UnOgorICAgIGNhc2UgJ0UnOgorICAgIGNhc2UgJ2YnOgorICAgIGNhc2UgJ0YnOgorICAgIGNhc2UgJ2cnOgorICAgIGNhc2UgJ0cnOgorICAgIGNhc2UgJ24nOgorICAgIGNhc2UgJyUnOgorICAgICAgICAvKiBubyBjb252ZXJzaW9uLCBhbHJlYWR5IGEgZmxvYXQuICBkbyB0aGUgZm9ybWF0dGluZyAqLworICAgICAgICByZXR1cm4gZm9ybWF0X2Zsb2F0X2ludGVybmFsKG9iaiwgJmZvcm1hdCwgd3JpdGVyKTsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIC8qIHVua25vd24gKi8KKyAgICAgICAgdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShmb3JtYXQudHlwZSwgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KK30KKworaW50CitfUHlDb21wbGV4X0Zvcm1hdEFkdmFuY2VkV3JpdGVyKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICBJbnRlcm5hbEZvcm1hdFNwZWMgZm9ybWF0OworCisgICAgLyogY2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugb2YgemVybyBsZW5ndGggZm9ybWF0IHNwZWMsIG1ha2UKKyAgICAgICBpdCBlcXVpdmFsZW50IHRvIHN0cihvYmopICovCisgICAgaWYgKHN0YXJ0ID09IGVuZCkKKyAgICAgICAgcmV0dXJuIGZvcm1hdF9vYmoob2JqLCB3cml0ZXIpOworCisgICAgLyogcGFyc2UgdGhlIGZvcm1hdF9zcGVjICovCisgICAgaWYgKCFwYXJzZV9pbnRlcm5hbF9yZW5kZXJfZm9ybWF0X3NwZWMoZm9ybWF0X3NwZWMsIHN0YXJ0LCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCwgJ1wwJywgJz4nKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogdHlwZSBjb252ZXJzaW9uPyAqLworICAgIHN3aXRjaCAoZm9ybWF0LnR5cGUpIHsKKyAgICBjYXNlICdcMCc6IC8qIE5vIGZvcm1hdCBjb2RlOiBsaWtlICdnJywgYnV0IHdpdGggYXQgbGVhc3Qgb25lIGRlY2ltYWwuICovCisgICAgY2FzZSAnZSc6CisgICAgY2FzZSAnRSc6CisgICAgY2FzZSAnZic6CisgICAgY2FzZSAnRic6CisgICAgY2FzZSAnZyc6CisgICAgY2FzZSAnRyc6CisgICAgY2FzZSAnbic6CisgICAgICAgIC8qIG5vIGNvbnZlcnNpb24sIGFscmVhZHkgYSBjb21wbGV4LiAgZG8gdGhlIGZvcm1hdHRpbmcgKi8KKyAgICAgICAgcmV0dXJuIGZvcm1hdF9jb21wbGV4X2ludGVybmFsKG9iaiwgJmZvcm1hdCwgd3JpdGVyKTsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIC8qIHVua25vd24gKi8KKyAgICAgICAgdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShmb3JtYXQudHlwZSwgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1B5dGhvbi9mcm96ZW4uYyBiL1B5dGhvbi9mcm96ZW4uYwppbmRleCBkZGY2MjI0Li4yNWZkYzE3IDEwMDY0NAotLS0gYS9QeXRob24vZnJvemVuLmMKKysrIGIvUHl0aG9uL2Zyb3plbi5jCkBAIC0yLDYgKzIsNyBAQAogLyogRHVtbXkgZnJvemVuIG1vZHVsZXMgaW5pdGlhbGl6ZXIgKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgImltcG9ydGxpYi5oIgogCiAvKiBJbiBvcmRlciB0byB0ZXN0IHRoZSBzdXBwb3J0IGZvciBmcm96ZW4gbW9kdWxlcywgYnkgZGVmYXVsdCB3ZQogICAgZGVmaW5lIGEgc2luZ2xlIGZyb3plbiBtb2R1bGUsIF9faGVsbG9fXy4gIExvYWRpbmcgaXQgd2lsbCBwcmludApAQCAtMjgsNiArMjksOCBAQAogI2RlZmluZSBTSVpFIChpbnQpc2l6ZW9mKE1fX19oZWxsb19fKQogCiBzdGF0aWMgc3RydWN0IF9mcm96ZW4gX1B5SW1wb3J0X0Zyb3plbk1vZHVsZXNbXSA9IHsKKyAgICAvKiBpbXBvcnRsaWIgKi8KKyAgICB7Il9mcm96ZW5faW1wb3J0bGliIiwgX1B5X01fX2ltcG9ydGxpYiwgKGludClzaXplb2YoX1B5X01fX2ltcG9ydGxpYil9LAogICAgIC8qIFRlc3QgbW9kdWxlICovCiAgICAgeyJfX2hlbGxvX18iLCBNX19faGVsbG9fXywgU0laRX0sCiAgICAgLyogVGVzdCBwYWNrYWdlIChuZWdhdGl2ZSBzaXplIGluZGljYXRlcyBwYWNrYWdlLW5lc3MpICovCmRpZmYgLS1naXQgYS9QeXRob24vZ2V0YXJncy5jIGIvUHl0aG9uL2dldGFyZ3MuYwppbmRleCBkNTg4MTAyLi5hZTkzMWI5IDEwMDY0NAotLS0gYS9QeXRob24vZ2V0YXJncy5jCisrKyBiL1B5dGhvbi9nZXRhcmdzLmMKQEAgLTMzLDE2ICszMywzMyBAQAogI2RlZmluZSBGTEFHX0NPTVBBVCAxCiAjZGVmaW5lIEZMQUdfU0laRV9UIDIKIAordHlwZWRlZiBpbnQgKCpkZXN0cl90KShQeU9iamVjdCAqLCB2b2lkICopOworCisKKy8qIEtlZXAgdHJhY2sgb2YgIm9iamVjdHMiIHRoYXQgaGF2ZSBiZWVuIGFsbG9jYXRlZCBvciBpbml0aWFsaXplZCBhbmQKKyAgIHdoaWNoIHdpbGwgbmVlZCB0byBiZSBkZWFsbG9jYXRlZCBvciBjbGVhbmVkIHVwIHNvbWVob3cgaWYgb3ZlcmFsbAorICAgcGFyc2luZyBmYWlscy4KKyovCit0eXBlZGVmIHN0cnVjdCB7CisgIHZvaWQgKml0ZW07CisgIGRlc3RyX3QgZGVzdHJ1Y3RvcjsKK30gZnJlZWxpc3RlbnRyeV90OworCit0eXBlZGVmIHN0cnVjdCB7CisgIGludCBmaXJzdF9hdmFpbGFibGU7CisgIGZyZWVsaXN0ZW50cnlfdCAqZW50cmllczsKK30gZnJlZWxpc3RfdDsKKwogCiAvKiBGb3J3YXJkICovCiBzdGF0aWMgaW50IHZnZXRhcmdzMShQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QgKiwgaW50KTsKIHN0YXRpYyB2b2lkIHNldGVycm9yKGludCwgY29uc3QgY2hhciAqLCBpbnQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogc3RhdGljIGNoYXIgKmNvbnZlcnRpdGVtKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50LCBpbnQgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIHNpemVfdCwgUHlPYmplY3QgKiopOworICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwgc2l6ZV90LCBmcmVlbGlzdF90ICopOwogc3RhdGljIGNoYXIgKmNvbnZlcnR0dXBsZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICosIGNoYXIgKiwgc2l6ZV90LCBpbnQsIFB5T2JqZWN0ICoqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICosIGNoYXIgKiwgc2l6ZV90LCBpbnQsIGZyZWVsaXN0X3QgKik7CiBzdGF0aWMgY2hhciAqY29udmVydHNpbXBsZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCwgY2hhciAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90LCBQeU9iamVjdCAqKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QsIGZyZWVsaXN0X3QgKik7CiBzdGF0aWMgUHlfc3NpemVfdCBjb252ZXJ0YnVmZmVyKFB5T2JqZWN0ICosIHZvaWQgKipwLCBjaGFyICoqKTsKIHN0YXRpYyBpbnQgZ2V0YnVmZmVyKFB5T2JqZWN0ICosIFB5X2J1ZmZlciAqLCBjaGFyKiopOwogCkBAIC0xMjMsMTE1ICsxNDAsNTQgQEAKIAogLyogSGFuZGxlIGNsZWFudXAgb2YgYWxsb2NhdGVkIG1lbW9yeSBpbiBjYXNlIG9mIGV4Y2VwdGlvbiAqLwogCi0jZGVmaW5lIEdFVEFSR1NfQ0FQU1VMRV9OQU1FX0NMRUFOVVBfUFRSICJnZXRhcmdzLmNsZWFudXBfcHRyIgotI2RlZmluZSBHRVRBUkdTX0NBUFNVTEVfTkFNRV9DTEVBTlVQX0JVRkZFUiAiZ2V0YXJncy5jbGVhbnVwX2J1ZmZlciIKLSNkZWZpbmUgR0VUQVJHU19DQVBTVUxFX05BTUVfQ0xFQU5VUF9DT05WRVJUICJnZXRhcmdzLmNsZWFudXBfY29udmVydCIKLQotc3RhdGljIHZvaWQKLWNsZWFudXBfcHRyKFB5T2JqZWN0ICpzZWxmKQorc3RhdGljIGludAorY2xlYW51cF9wdHIoUHlPYmplY3QgKnNlbGYsIHZvaWQgKnB0cikKIHsKLSAgICB2b2lkICpwdHIgPSBQeUNhcHN1bGVfR2V0UG9pbnRlcihzZWxmLCBHRVRBUkdTX0NBUFNVTEVfTkFNRV9DTEVBTlVQX1BUUik7CiAgICAgaWYgKHB0cikgewogICAgICAgICBQeU1lbV9GUkVFKHB0cik7CiAgICAgfQotfQotCi1zdGF0aWMgdm9pZAotY2xlYW51cF9idWZmZXIoUHlPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlfYnVmZmVyICpwdHIgPSAoUHlfYnVmZmVyICopUHlDYXBzdWxlX0dldFBvaW50ZXIoc2VsZiwgR0VUQVJHU19DQVBTVUxFX05BTUVfQ0xFQU5VUF9CVUZGRVIpOwotICAgIGlmIChwdHIpIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZShwdHIpOwotICAgIH0KLX0KLQotc3RhdGljIGludAotYWRkY2xlYW51cCh2b2lkICpwdHIsIFB5T2JqZWN0ICoqZnJlZWxpc3QsIGludCBpc19idWZmZXIpCi17Ci0gICAgUHlPYmplY3QgKmNvYmo7Ci0gICAgY29uc3QgY2hhciAqbmFtZTsKLSAgICBQeUNhcHN1bGVfRGVzdHJ1Y3RvciBkZXN0cjsKLQotICAgIGlmIChpc19idWZmZXIpIHsKLSAgICAgICAgZGVzdHIgPSBjbGVhbnVwX2J1ZmZlcjsKLSAgICAgICAgbmFtZSA9IEdFVEFSR1NfQ0FQU1VMRV9OQU1FX0NMRUFOVVBfQlVGRkVSOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGRlc3RyID0gY2xlYW51cF9wdHI7Ci0gICAgICAgIG5hbWUgPSBHRVRBUkdTX0NBUFNVTEVfTkFNRV9DTEVBTlVQX1BUUjsKLSAgICB9Ci0KLSAgICBpZiAoISpmcmVlbGlzdCkgewotICAgICAgICAqZnJlZWxpc3QgPSBQeUxpc3RfTmV3KDApOwotICAgICAgICBpZiAoISpmcmVlbGlzdCkgewotICAgICAgICAgICAgZGVzdHIocHRyKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGNvYmogPSBQeUNhcHN1bGVfTmV3KHB0ciwgbmFtZSwgZGVzdHIpOwotICAgIGlmICghY29iaikgewotICAgICAgICBkZXN0cihwdHIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmIChQeUxpc3RfQXBwZW5kKCpmcmVlbGlzdCwgY29iaikpIHsKLSAgICAgICAgUHlfREVDUkVGKGNvYmopOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihjb2JqKTsKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQKLWNsZWFudXBfY29udmVydChQeU9iamVjdCAqc2VsZikKLXsKLSAgICB0eXBlZGVmIGludCAoKmRlc3RyX3QpKFB5T2JqZWN0ICosIHZvaWQgKik7Ci0gICAgZGVzdHJfdCBkZXN0ciA9IChkZXN0cl90KVB5Q2Fwc3VsZV9HZXRDb250ZXh0KHNlbGYpOwotICAgIHZvaWQgKnB0ciA9IFB5Q2Fwc3VsZV9HZXRQb2ludGVyKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUQVJHU19DQVBTVUxFX05BTUVfQ0xFQU5VUF9DT05WRVJUKTsKLSAgICBpZiAocHRyICYmIGRlc3RyKQotICAgICAgICBkZXN0cihOVUxMLCBwdHIpOwotfQotCi1zdGF0aWMgaW50Ci1hZGRjbGVhbnVwX2NvbnZlcnQodm9pZCAqcHRyLCBQeU9iamVjdCAqKmZyZWVsaXN0LCBpbnQgKCpkZXN0cikoUHlPYmplY3QqLHZvaWQqKSkKLXsKLSAgICBQeU9iamVjdCAqY29iajsKLSAgICBpZiAoISpmcmVlbGlzdCkgewotICAgICAgICAqZnJlZWxpc3QgPSBQeUxpc3RfTmV3KDApOwotICAgICAgICBpZiAoISpmcmVlbGlzdCkgewotICAgICAgICAgICAgZGVzdHIoTlVMTCwgcHRyKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBjb2JqID0gUHlDYXBzdWxlX05ldyhwdHIsIEdFVEFSR1NfQ0FQU1VMRV9OQU1FX0NMRUFOVVBfQ09OVkVSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbnVwX2NvbnZlcnQpOwotICAgIGlmICghY29iaikgewotICAgICAgICBkZXN0cihOVUxMLCBwdHIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmIChQeUNhcHN1bGVfU2V0Q29udGV4dChjb2JqLCBkZXN0cikgPT0gLTEpIHsKLSAgICAgICAgLyogVGhpcyByZWFsbHkgc2hvdWxkIG5vdCBoYXBwZW4uICovCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoImNhcHN1bGUgcmVmdXNlZCBzZXR0aW5nIG9mIGNvbnRleHQuIik7Ci0gICAgfQotICAgIGlmIChQeUxpc3RfQXBwZW5kKCpmcmVlbGlzdCwgY29iaikpIHsKLSAgICAgICAgUHlfREVDUkVGKGNvYmopOyAvKiBUaGlzIHdpbGwgYWxzbyBjYWxsIGRlc3RyLiAqLwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihjb2JqKTsKICAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIGludAotY2xlYW5yZXR1cm4oaW50IHJldHZhbCwgUHlPYmplY3QgKmZyZWVsaXN0KQorY2xlYW51cF9idWZmZXIoUHlPYmplY3QgKnNlbGYsIHZvaWQgKnB0cikKIHsKLSAgICBpZiAoZnJlZWxpc3QgJiYgcmV0dmFsICE9IDApIHsKLSAgICAgICAgLyogV2Ugd2VyZSBzdWNjZXNzZnVsLCByZXNldCB0aGUgZGVzdHJ1Y3RvcnMgc28gdGhhdCB0aGV5Ci0gICAgICAgICAgIGRvbid0IGdldCBjYWxsZWQuICovCi0gICAgICAgIFB5X3NzaXplX3QgbGVuID0gUHlMaXN0X0dFVF9TSVpFKGZyZWVsaXN0KSwgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgICAgICAgICAgUHlDYXBzdWxlX1NldERlc3RydWN0b3IoUHlMaXN0X0dFVF9JVEVNKGZyZWVsaXN0LCBpKSwgTlVMTCk7CisgICAgUHlfYnVmZmVyICpidWYgPSAoUHlfYnVmZmVyICopcHRyOworICAgIGlmIChidWYpIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZShidWYpOwogICAgIH0KLSAgICBQeV9YREVDUkVGKGZyZWVsaXN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorYWRkY2xlYW51cCh2b2lkICpwdHIsIGZyZWVsaXN0X3QgKmZyZWVsaXN0LCBkZXN0cl90IGRlc3RydWN0b3IpCit7CisgICAgaW50IGluZGV4OworCisgICAgaW5kZXggPSBmcmVlbGlzdC0+Zmlyc3RfYXZhaWxhYmxlOworICAgIGZyZWVsaXN0LT5maXJzdF9hdmFpbGFibGUgKz0gMTsKKworICAgIGZyZWVsaXN0LT5lbnRyaWVzW2luZGV4XS5pdGVtID0gcHRyOworICAgIGZyZWVsaXN0LT5lbnRyaWVzW2luZGV4XS5kZXN0cnVjdG9yID0gZGVzdHJ1Y3RvcjsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitjbGVhbnJldHVybihpbnQgcmV0dmFsLCBmcmVlbGlzdF90ICpmcmVlbGlzdCkKK3sKKyAgICBpbnQgaW5kZXg7CisKKyAgICBpZiAocmV0dmFsID09IDApIHsKKyAgICAgIC8qIEEgZmFpbHVyZSBvY2N1cnJlZCwgdGhlcmVmb3JlIGV4ZWN1dGUgYWxsIG9mIHRoZSBjbGVhbnVwCisgICAgICAgICBmdW5jdGlvbnMuCisgICAgICAqLworICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgZnJlZWxpc3QtPmZpcnN0X2F2YWlsYWJsZTsgKytpbmRleCkgeworICAgICAgICAgIGZyZWVsaXN0LT5lbnRyaWVzW2luZGV4XS5kZXN0cnVjdG9yKE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZWxpc3QtPmVudHJpZXNbaW5kZXhdLml0ZW0pOworICAgICAgfQorICAgIH0KKyAgICBQeU1lbV9GUkVFKGZyZWVsaXN0LT5lbnRyaWVzKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCkBAIC0yNTAsNyArMjA2LDcgQEAKICAgICBjb25zdCBjaGFyICpmb3JtYXRzYXZlID0gZm9ybWF0OwogICAgIFB5X3NzaXplX3QgaSwgbGVuOwogICAgIGNoYXIgKm1zZzsKLSAgICBQeU9iamVjdCAqZnJlZWxpc3QgPSBOVUxMOworICAgIGZyZWVsaXN0X3QgZnJlZWxpc3QgPSB7MCwgTlVMTH07CiAgICAgaW50IGNvbXBhdCA9IGZsYWdzICYgRkxBR19DT01QQVQ7CiAKICAgICBhc3NlcnQoY29tcGF0IHx8IChhcmdzICE9IChQeU9iamVjdCopTlVMTCkpOwpAQCAtMzA2LDY0ICsyNjIsNjYgQEAKIAogICAgIGZvcm1hdCA9IGZvcm1hdHNhdmU7CiAKKyAgICBmcmVlbGlzdC5lbnRyaWVzID0gUHlNZW1fTkVXKGZyZWVsaXN0ZW50cnlfdCwgbWF4KTsKKyAgICBpZiAoZnJlZWxpc3QuZW50cmllcyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlmIChjb21wYXQpIHsKICAgICAgICAgaWYgKG1heCA9PSAwKSB7CiAgICAgICAgICAgICBpZiAoYXJncyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgUHlPU19zbnByaW50Zihtc2didWYsIHNpemVvZihtc2didWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJXMgdGFrZXMgbm8gYXJndW1lbnRzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiZnVuY3Rpb24iIDogZm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gIiIgOiAiKCkiKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIG1zZ2J1Zik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyVzIHRha2VzIG5vIGFyZ3VtZW50cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiZnVuY3Rpb24iIDogZm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiIiA6ICIoKSIpOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAobWluID09IDEgJiYgbWF4ID09IDEpIHsKICAgICAgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyVzIHRha2VzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gImZ1bmN0aW9uIiA6IGZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZT09TlVMTCA/ICIiIDogIigpIik7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbXNnYnVmKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJXMgdGFrZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiZnVuY3Rpb24iIDogZm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gIiIgOiAiKCkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1zZyA9IGNvbnZlcnRpdGVtKGFyZ3MsICZmb3JtYXQsIHBfdmEsIGZsYWdzLCBsZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2didWYsIHNpemVvZihtc2didWYpLCAmZnJlZWxpc3QpOwogICAgICAgICAgICAgaWYgKG1zZyA9PSBOVUxMKQotICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigxLCBmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICBzZXRlcnJvcihsZXZlbHNbMF0sIG1zZywgbGV2ZWxzKzEsIGZuYW1lLCBtZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAib2xkIHN0eWxlIGdldGFyZ3MgZm9ybWF0IHVzZXMgbmV3IGZlYXR1cmVzIik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICJuZXcgc3R5bGUgZ2V0YXJncyBmb3JtYXQgYnV0IGFyZ3VtZW50IGlzIG5vdCBhIHR1cGxlIik7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICB9CiAKICAgICBsZW4gPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOwogCiAgICAgaWYgKGxlbiA8IG1pbiB8fCBtYXggPCBsZW4pIHsKLSAgICAgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlPU19zbnByaW50Zihtc2didWYsIHNpemVvZihtc2didWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4xNTBzJXMgdGFrZXMgJXMgJWQgYXJndW1lbnQlcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoJWxkIGdpdmVuKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gImZ1bmN0aW9uIiA6IGZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZT09TlVMTCA/ICIiIDogIigpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbWluPT1tYXggPyAiZXhhY3RseSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsZW4gPCBtaW4gPyAiYXQgbGVhc3QiIDogImF0IG1vc3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPCBtaW4gPyBtaW4gOiBtYXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChsZW4gPCBtaW4gPyBtaW4gOiBtYXgpID09IDEgPyAiIiA6ICJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfU0FGRV9ET1dOQ0FTVChsZW4sIFB5X3NzaXplX3QsIGxvbmcpKTsKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBtc2didWY7Ci0gICAgICAgIH0KLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbWVzc2FnZSk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAobWVzc2FnZSA9PSBOVUxMKQorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJS4xNTBzJXMgdGFrZXMgJXMgJWQgYXJndW1lbnQlcyAoJWxkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiZnVuY3Rpb24iIDogZm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiIiA6ICIoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWluPT1tYXggPyAiZXhhY3RseSIKKyAgICAgICAgICAgICAgICAgICAgICAgICA6IGxlbiA8IG1pbiA/ICJhdCBsZWFzdCIgOiAiYXQgbW9zdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgbGVuIDwgbWluID8gbWluIDogbWF4LAorICAgICAgICAgICAgICAgICAgICAgICAgIChsZW4gPCBtaW4gPyBtaW4gOiBtYXgpID09IDEgPyAiIiA6ICJzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9TQUZFX0RPV05DQVNUKGxlbiwgUHlfc3NpemVfdCwgbG9uZykpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CkBAIC0zNzQsNyArMzMyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1zZ2J1ZiksICZmcmVlbGlzdCk7CiAgICAgICAgIGlmIChtc2cpIHsKICAgICAgICAgICAgIHNldGVycm9yKGkrMSwgbXNnLCBsZXZlbHMsIGZuYW1lLCBtc2cpOwotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zODMsMTAgKzM0MSwxMCBAQAogICAgICAgICAqZm9ybWF0ICE9ICd8JyAmJiAqZm9ybWF0ICE9ICc6JyAmJiAqZm9ybWF0ICE9ICc7JykgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiYmFkIGZvcm1hdCBzdHJpbmc6ICUuMjAwcyIsIGZvcm1hdHNhdmUpOwotICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgZnJlZWxpc3QpOworICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICB9CiAKLSAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgZnJlZWxpc3QpOworICAgIHJldHVybiBjbGVhbnJldHVybigxLCAmZnJlZWxpc3QpOwogfQogCiAKQEAgLTQ1MCw3ICs0MDgsNyBAQAogc3RhdGljIGNoYXIgKgogY29udmVydHR1cGxlKFB5T2JqZWN0ICphcmcsIGNvbnN0IGNoYXIgKipwX2Zvcm1hdCwgdmFfbGlzdCAqcF92YSwgaW50IGZsYWdzLAogICAgICAgICAgICAgIGludCAqbGV2ZWxzLCBjaGFyICptc2didWYsIHNpemVfdCBidWZzaXplLCBpbnQgdG9wbGV2ZWwsCi0gICAgICAgICAgICAgUHlPYmplY3QgKipmcmVlbGlzdCkKKyAgICAgICAgICAgICBmcmVlbGlzdF90ICpmcmVlbGlzdCkKIHsKICAgICBpbnQgbGV2ZWwgPSAwOwogICAgIGludCBuID0gMDsKQEAgLTUyNSw3ICs0ODMsNyBAQAogCiBzdGF0aWMgY2hhciAqCiBjb252ZXJ0aXRlbShQeU9iamVjdCAqYXJnLCBjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncywKLSAgICAgICAgICAgIGludCAqbGV2ZWxzLCBjaGFyICptc2didWYsIHNpemVfdCBidWZzaXplLCBQeU9iamVjdCAqKmZyZWVsaXN0KQorICAgICAgICAgICAgaW50ICpsZXZlbHMsIGNoYXIgKm1zZ2J1Ziwgc2l6ZV90IGJ1ZnNpemUsIGZyZWVsaXN0X3QgKmZyZWVsaXN0KQogewogICAgIGNoYXIgKm1zZzsKICAgICBjb25zdCBjaGFyICpmb3JtYXQgPSAqcF9mb3JtYXQ7CkBAIC01NTAsOSArNTA4LDYgQEAKIAogCiAKLSNkZWZpbmUgVU5JQ09ERV9ERUZBVUxUX0VOQ09ESU5HKGFyZykgXAotICAgIF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyhhcmcsIE5VTEwpCi0KIC8qIEZvcm1hdCBhbiBlcnJvciBtZXNzYWdlIGdlbmVyYXRlZCBieSBjb252ZXJ0c2ltcGxlKCkuICovCiAKIHN0YXRpYyBjaGFyICoKQEAgLTU5Myw3ICs1NDgsNyBAQAogCiBzdGF0aWMgY2hhciAqCiBjb252ZXJ0c2ltcGxlKFB5T2JqZWN0ICphcmcsIGNvbnN0IGNoYXIgKipwX2Zvcm1hdCwgdmFfbGlzdCAqcF92YSwgaW50IGZsYWdzLAotICAgICAgICAgICAgICBjaGFyICptc2didWYsIHNpemVfdCBidWZzaXplLCBQeU9iamVjdCAqKmZyZWVsaXN0KQorICAgICAgICAgICAgICBjaGFyICptc2didWYsIHNpemVfdCBidWZzaXplLCBmcmVlbGlzdF90ICpmcmVlbGlzdCkKIHsKICAgICAvKiBGb3IgIyBjb2RlcyAqLwogI2RlZmluZSBGRVRDSF9TSVpFICAgICAgaW50ICpxPU5VTEw7UHlfc3NpemVfdCAqcTI9TlVMTDtcCkBAIC02MTUsNyArNTcwLDcgQEAKIAogICAgIGNvbnN0IGNoYXIgKmZvcm1hdCA9ICpwX2Zvcm1hdDsKICAgICBjaGFyIGMgPSAqZm9ybWF0Kys7Ci0gICAgUHlPYmplY3QgKnVhcmc7CisgICAgY2hhciAqc2FyZzsKIAogICAgIHN3aXRjaCAoYykgewogCkBAIC04MzIsNiArNzg3LDggQEAKICAgICAgICAgY2hhciAqcCA9IHZhX2FyZygqcF92YSwgY2hhciAqKTsKICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2soYXJnKSAmJiBQeUJ5dGVzX1NpemUoYXJnKSA9PSAxKQogICAgICAgICAgICAgKnAgPSBQeUJ5dGVzX0FTX1NUUklORyhhcmcpWzBdOworICAgICAgICBlbHNlIGlmIChQeUJ5dGVBcnJheV9DaGVjayhhcmcpICYmIFB5Qnl0ZUFycmF5X1NpemUoYXJnKSA9PSAxKQorICAgICAgICAgICAgKnAgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoYXJnKVswXTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoImEgYnl0ZSBzdHJpbmcgb2YgbGVuZ3RoIDEiLCBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtODM5LDExICs3OTYsMzMgQEAKIAogICAgIGNhc2UgJ0MnOiB7LyogdW5pY29kZSBjaGFyICovCiAgICAgICAgIGludCAqcCA9IHZhX2FyZygqcF92YSwgaW50ICopOwotICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykgJiYKLSAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShhcmcpID09IDEpCi0gICAgICAgICAgICAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKGFyZylbMF07Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaW50IGtpbmQ7CisgICAgICAgIHZvaWQgKmRhdGE7CisKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soYXJnKSkKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCJhIHVuaWNvZGUgY2hhcmFjdGVyIiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOworCisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYXJnKSkKKyAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CisKKyAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGFyZykgIT0gMSkKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCJhIHVuaWNvZGUgY2hhcmFjdGVyIiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOworCisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChhcmcpOworICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoYXJnKTsKKyAgICAgICAgKnAgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSAncCc6IHsvKiBib29sZWFuICpwKnJlZGljYXRlICovCisgICAgICAgIGludCAqcCA9IHZhX2FyZygqcF92YSwgaW50ICopOworICAgICAgICBpbnQgdmFsID0gUHlPYmplY3RfSXNUcnVlKGFyZyk7CisgICAgICAgIGlmICh2YWwgPiAwKQorICAgICAgICAgICAgKnAgPSAxOworICAgICAgICBlbHNlIGlmICh2YWwgPT0gMCkKKyAgICAgICAgICAgICpwID0gMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUkVUVVJOX0VSUl9PQ0NVUlJFRDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC04NTgsNyArODM3LDcgQEAKICAgICAgICAgICAgIGlmIChnZXRidWZmZXIoYXJnLCAoUHlfYnVmZmVyKilwLCAmYnVmKSA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoYnVmLCBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CiAgICAgICAgICAgICBmb3JtYXQrKzsKLSAgICAgICAgICAgIGlmIChhZGRjbGVhbnVwKHAsIGZyZWVsaXN0LCAxKSkgeworICAgICAgICAgICAgaWYgKGFkZGNsZWFudXAocCwgZnJlZWxpc3QsIGNsZWFudXBfYnVmZmVyKSkgewogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAogICAgICAgICAgICAgICAgICAgICAiKGNsZWFudXAgcHJvYmxlbSkiLAogICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CkBAIC04OTEsMjAgKzg3MCwxOSBAQAogICAgICAgICAgICAgaWYgKGMgPT0gJ3onICYmIGFyZyA9PSBQeV9Ob25lKQogICAgICAgICAgICAgICAgIFB5QnVmZmVyX0ZpbGxJbmZvKHAsIE5VTEwsIE5VTEwsIDAsIDEsIDApOwogICAgICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKLSAgICAgICAgICAgICAgICB1YXJnID0gVU5JQ09ERV9ERUZBVUxUX0VOQ09ESU5HKGFyZyk7Ci0gICAgICAgICAgICAgICAgaWYgKHVhcmcgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgICAgICBzYXJnID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoYXJnLCAmbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoc2FyZyA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycihDT05WX1VOSUNPREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKLSAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9GaWxsSW5mbyhwLCBhcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcodWFyZyksIFB5Qnl0ZXNfR0VUX1NJWkUodWFyZyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgMCk7CisgICAgICAgICAgICAgICAgUHlCdWZmZXJfRmlsbEluZm8ocCwgYXJnLCBzYXJnLCBsZW4sIDEsIDApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7IC8qIGFueSBidWZmZXItbGlrZSBvYmplY3QgKi8KICAgICAgICAgICAgICAgICBjaGFyICpidWY7CiAgICAgICAgICAgICAgICAgaWYgKGdldGJ1ZmZlcihhcmcsIHAsICZidWYpIDwgMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoYnVmLCBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYWRkY2xlYW51cChwLCBmcmVlbGlzdCwgMSkpIHsKKyAgICAgICAgICAgIGlmIChhZGRjbGVhbnVwKHAsIGZyZWVsaXN0LCBjbGVhbnVwX2J1ZmZlcikpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKICAgICAgICAgICAgICAgICAgICAgIihjbGVhbnVwIHByb2JsZW0pIiwKICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwpAQCAtOTIwLDEyICs4OTgsMTMgQEAKICAgICAgICAgICAgICAgICBTVE9SRV9TSVpFKDApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKLSAgICAgICAgICAgICAgICB1YXJnID0gVU5JQ09ERV9ERUZBVUxUX0VOQ09ESU5HKGFyZyk7Ci0gICAgICAgICAgICAgICAgaWYgKHVhcmcgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgICAgICBzYXJnID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoYXJnLCAmbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoc2FyZyA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycihDT05WX1VOSUNPREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKLSAgICAgICAgICAgICAgICAqcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHVhcmcpOwotICAgICAgICAgICAgICAgIFNUT1JFX1NJWkUoUHlCeXRlc19HRVRfU0laRSh1YXJnKSk7CisgICAgICAgICAgICAgICAgKnAgPSBzYXJnOworICAgICAgICAgICAgICAgIFNUT1JFX1NJWkUobGVuKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgeyAvKiBhbnkgYnVmZmVyLWxpa2Ugb2JqZWN0ICovCiAgICAgICAgICAgICAgICAgLyogWFhYIFJlYWxseT8gKi8KQEAgLTkzOSwyNSArOTE4LDI1IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKiAicyIgb3IgInoiICovCiAgICAgICAgICAgICBjaGFyICoqcCA9IHZhX2FyZygqcF92YSwgY2hhciAqKik7Ci0gICAgICAgICAgICB1YXJnID0gTlVMTDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgc2FyZyA9IE5VTEw7CiAKICAgICAgICAgICAgIGlmIChjID09ICd6JyAmJiBhcmcgPT0gUHlfTm9uZSkKICAgICAgICAgICAgICAgICAqcCA9IE5VTEw7CiAgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewotICAgICAgICAgICAgICAgIHVhcmcgPSBVTklDT0RFX0RFRkFVTFRfRU5DT0RJTkcoYXJnKTsKLSAgICAgICAgICAgICAgICBpZiAodWFyZyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHNhcmcgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShhcmcsICZsZW4pOworICAgICAgICAgICAgICAgIGlmIChzYXJnID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKENPTlZfVU5JQ09ERSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwotICAgICAgICAgICAgICAgICpwID0gUHlCeXRlc19BU19TVFJJTkcodWFyZyk7CisgICAgICAgICAgICAgICAgKnAgPSBzYXJnOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKGMgPT0gJ3onID8gInN0ciBvciBOb25lIiA6ICJzdHIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKLSAgICAgICAgICAgIGlmICgqcCAhPSBOVUxMICYmIHVhcmcgIT0gTlVMTCAmJgotICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KSBzdHJsZW4oKnApICE9IFB5Qnl0ZXNfR0VUX1NJWkUodWFyZykpCisgICAgICAgICAgICBpZiAoKnAgIT0gTlVMTCAmJiBzYXJnICE9IE5VTEwgJiYgKFB5X3NzaXplX3QpIHN0cmxlbigqcCkgIT0gbGVuKQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAotICAgICAgICAgICAgICAgICAgICBjID09ICd6JyA/ICJzdHIgd2l0aG91dCBudWxsIGJ5dGVzIG9yIE5vbmUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInN0ciB3aXRob3V0IG51bGwgYnl0ZXMiLAorICAgICAgICAgICAgICAgICAgICBjID09ICd6JyA/ICJzdHIgd2l0aG91dCBudWxsIGNoYXJhY3RlcnMgb3IgTm9uZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAic3RyIHdpdGhvdXQgbnVsbCBjaGFyYWN0ZXJzIiwKICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtOTY2LDkgKzk0NSwxMCBAQAogICAgIGNhc2UgJ3UnOiAvKiByYXcgdW5pY29kZSBidWZmZXIgKFB5X1VOSUNPREUgKikgKi8KICAgICBjYXNlICdaJzogLyogcmF3IHVuaWNvZGUgYnVmZmVyIG9yIE5vbmUgKi8KICAgICB7CisgICAgICAgIFB5X1VOSUNPREUgKipwID0gdmFfYXJnKCpwX3ZhLCBQeV9VTklDT0RFICoqKTsKKwogICAgICAgICBpZiAoKmZvcm1hdCA9PSAnIycpIHsgLyogYW55IGJ1ZmZlci1saWtlIG9iamVjdCAqLwogICAgICAgICAgICAgLyogInMjIiBvciAiWiMiICovCi0gICAgICAgICAgICBQeV9VTklDT0RFICoqcCA9IHZhX2FyZygqcF92YSwgUHlfVU5JQ09ERSAqKik7CiAgICAgICAgICAgICBGRVRDSF9TSVpFOwogCiAgICAgICAgICAgICBpZiAoYyA9PSAnWicgJiYgYXJnID09IFB5X05vbmUpIHsKQEAgLTk3NiwyMyArOTU2LDI3IEBACiAgICAgICAgICAgICAgICAgU1RPUkVfU0laRSgwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7Ci0gICAgICAgICAgICAgICAgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShhcmcpOwotICAgICAgICAgICAgICAgIFNUT1JFX1NJWkUoUHlVbmljb2RlX0dFVF9TSVpFKGFyZykpOworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgICAgICpwID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUoYXJnLCAmbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoKnAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0VSUl9PQ0NVUlJFRDsKKyAgICAgICAgICAgICAgICBTVE9SRV9TSVpFKGxlbik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoInN0ciBvciBOb25lIiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICAgICAgZm9ybWF0Kys7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKiAicyIgb3IgIloiICovCi0gICAgICAgICAgICBQeV9VTklDT0RFICoqcCA9IHZhX2FyZygqcF92YSwgUHlfVU5JQ09ERSAqKik7Ci0KICAgICAgICAgICAgIGlmIChjID09ICdaJyAmJiBhcmcgPT0gUHlfTm9uZSkKICAgICAgICAgICAgICAgICAqcCA9IE5VTEw7CiAgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewotICAgICAgICAgICAgICAgICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoYXJnKTsKLSAgICAgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9zdHJsZW4oKnApICE9IFB5VW5pY29kZV9HRVRfU0laRShhcmcpKQorICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgICAgICpwID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUoYXJnLCAmbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoKnAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0VSUl9PQ0NVUlJFRDsKKyAgICAgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9zdHJsZW4oKnApICE9IGxlbikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCi0gICAgICAgICAgICAgICAgICAgICAgICAic3RyIHdpdGhvdXQgbnVsbCBjaGFyYWN0ZXIgb3IgTm9uZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAic3RyIHdpdGhvdXQgbnVsbCBjaGFyYWN0ZXJzIG9yIE5vbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoYyA9PSAnWicgPyAic3RyIG9yIE5vbmUiIDogInN0ciIsCkBAIC0xMTEwLDcgKzEwOTQsNyBAQAogICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYWRkY2xlYW51cCgqYnVmZmVyLCBmcmVlbGlzdCwgMCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYWRkY2xlYW51cCgqYnVmZmVyLCBmcmVlbGlzdCwgY2xlYW51cF9wdHIpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCiAgICAgICAgICAgICAgICAgICAgICAgICAiKGNsZWFudXAgcHJvYmxlbSkiLApAQCAtMTE1Miw3ICsxMTM2LDcgQEAKICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYWRkY2xlYW51cCgqYnVmZmVyLCBmcmVlbGlzdCwgMCkpIHsKKyAgICAgICAgICAgIGlmIChhZGRjbGVhbnVwKCpidWZmZXIsIGZyZWVsaXN0LCBjbGVhbnVwX3B0cikpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoIihjbGVhbnVwIHByb2JsZW0pIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwpAQCAtMTE4Myw4ICsxMTY3LDExIEBACiAKICAgICBjYXNlICdVJzogeyAvKiBQeVVuaWNvZGUgb2JqZWN0ICovCiAgICAgICAgIFB5T2JqZWN0ICoqcCA9IHZhX2FyZygqcF92YSwgUHlPYmplY3QgKiopOwotICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpCisgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShhcmcpID09IC0xKQorICAgICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CiAgICAgICAgICAgICAqcCA9IGFyZzsKKyAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigic3RyIiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICBicmVhazsKQEAgLTEyMTMsNyArMTIwMCw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoIih1bnNwZWNpZmllZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgICAgIGlmIChyZXMgPT0gUHlfQ0xFQU5VUF9TVVBQT1JURUQgJiYKLSAgICAgICAgICAgICAgICBhZGRjbGVhbnVwX2NvbnZlcnQoYWRkciwgZnJlZWxpc3QsIGNvbnZlcnQpID09IC0xKQorICAgICAgICAgICAgICAgIGFkZGNsZWFudXAoYWRkciwgZnJlZWxpc3QsIGNvbnZlcnQpID09IC0xKQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCIoY2xlYW51cCBwcm9ibGVtKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgfQpAQCAtMTI0NCw3ICsxMjMxLDcgQEAKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoKFB5X2J1ZmZlciopcCk7CiAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigiY29udGlndW91cyBidWZmZXIiLCBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGFkZGNsZWFudXAocCwgZnJlZWxpc3QsIDEpKSB7CisgICAgICAgIGlmIChhZGRjbGVhbnVwKHAsIGZyZWVsaXN0LCBjbGVhbnVwX2J1ZmZlcikpIHsKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAogICAgICAgICAgICAgICAgICIoY2xlYW51cCBwcm9ibGVtKSIsCiAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwpAQCAtMTQzMSw4ICsxNDE4LDEwIEBACiAgICAgaW50IGxldmVsc1szMl07CiAgICAgY29uc3QgY2hhciAqZm5hbWUsICptc2csICpjdXN0b21fbXNnLCAqa2V5d29yZDsKICAgICBpbnQgbWluID0gSU5UX01BWDsKKyAgICBpbnQgbWF4ID0gSU5UX01BWDsKICAgICBpbnQgaSwgbGVuLCBuYXJncywgbmtleXdvcmRzOwotICAgIFB5T2JqZWN0ICpmcmVlbGlzdCA9IE5VTEwsICpjdXJyZW50X2FyZzsKKyAgICBQeU9iamVjdCAqY3VycmVudF9hcmc7CisgICAgZnJlZWxpc3RfdCBmcmVlbGlzdCA9IHswLCBOVUxMfTsKIAogICAgIGFzc2VydChhcmdzICE9IE5VTEwgJiYgUHlUdXBsZV9DaGVjayhhcmdzKSk7CiAgICAgYXNzZXJ0KGtleXdvcmRzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGtleXdvcmRzKSk7CkBAIC0xNDU2LDMxICsxNDQ1LDY4IEBACiAgICAgZm9yIChsZW49MDsga3dsaXN0W2xlbl07IGxlbisrKQogICAgICAgICBjb250aW51ZTsKIAorICAgIGZyZWVsaXN0LmVudHJpZXMgPSBQeU1lbV9ORVcoZnJlZWxpc3RlbnRyeV90LCBsZW4pOworICAgIGlmIChmcmVlbGlzdC5lbnRyaWVzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgbmFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOwogICAgIG5rZXl3b3JkcyA9IChrZXl3b3JkcyA9PSBOVUxMKSA/IDAgOiBQeURpY3RfU2l6ZShrZXl3b3Jkcyk7CiAgICAgaWYgKG5hcmdzICsgbmtleXdvcmRzID4gbGVuKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICIlcyVzIHRha2VzIGF0IG1vc3QgJWQgIgotICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50JXMgKCVkIGdpdmVuKSIsCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJXMlcyB0YWtlcyBhdCBtb3N0ICVkIGFyZ3VtZW50JXMgKCVkIGdpdmVuKSIsCiAgICAgICAgICAgICAgICAgICAgICAoZm5hbWUgPT0gTlVMTCkgPyAiZnVuY3Rpb24iIDogZm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAoZm5hbWUgPT0gTlVMTCkgPyAiIiA6ICIoKSIsCiAgICAgICAgICAgICAgICAgICAgICBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAobGVuID09IDEpID8gIiIgOiAicyIsCiAgICAgICAgICAgICAgICAgICAgICBuYXJncyArIG5rZXl3b3Jkcyk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICB9CiAKICAgICAvKiBjb252ZXJ0IHR1cGxlIGFyZ3MgYW5kIGtleXdvcmQgYXJncyBpbiBzYW1lIGxvb3AsIHVzaW5nIGt3bGlzdCB0byBkcml2ZSBwcm9jZXNzICovCiAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgIGtleXdvcmQgPSBrd2xpc3RbaV07CiAgICAgICAgIGlmICgqZm9ybWF0ID09ICd8JykgeworICAgICAgICAgICAgaWYgKG1pbiAhPSBJTlRfTUFYKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAofCBzcGVjaWZpZWQgdHdpY2UpIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIG1pbiA9IGk7CiAgICAgICAgICAgICBmb3JtYXQrKzsKKworICAgICAgICAgICAgaWYgKG1heCAhPSBJTlRfTUFYKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAoJCBiZWZvcmUgfCkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoKmZvcm1hdCA9PSAnJCcpIHsKKyAgICAgICAgICAgIGlmIChtYXggIT0gSU5UX01BWCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZvcm1hdCBzdHJpbmcgKCQgc3BlY2lmaWVkIHR3aWNlKSIpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtYXggPSBpOworICAgICAgICAgICAgZm9ybWF0Kys7CisKKyAgICAgICAgICAgIGlmIChtYXggPCBuYXJncykgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB0YWtlcyAlcyAlZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAoJWQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAhPSBJTlRfTUFYKSA/ICJhdCBtb3N0IiA6ICJleGFjdGx5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4LCBuYXJncyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKElTX0VORF9PRl9GT1JNQVQoKmZvcm1hdCkpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vcmUga2V5d29yZCBsaXN0IGVudHJpZXMgKCVkKSB0aGFuICIKICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0IHNwZWNpZmllcnMgKCVkKSIsIGxlbiwgaSk7Ci0gICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgZnJlZWxpc3QpOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY3VycmVudF9hcmcgPSBOVUxMOwogICAgICAgICBpZiAobmtleXdvcmRzKSB7CkBAIC0xNDk0LDExICsxNTIwLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmd1bWVudCBnaXZlbiBieSBuYW1lICgnJXMnKSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgcG9zaXRpb24gKCVkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChua2V5d29yZHMgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgZWxzZSBpZiAoaSA8IG5hcmdzKQogICAgICAgICAgICAgY3VycmVudF9hcmcgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOwogCkBAIC0xNTA3LDcgKzE1MzMsNyBAQAogICAgICAgICAgICAgICAgIGxldmVscywgbXNnYnVmLCBzaXplb2YobXNnYnVmKSwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIGlmIChtc2cpIHsKICAgICAgICAgICAgICAgICBzZXRlcnJvcihpKzEsIG1zZywgbGV2ZWxzLCBmbmFtZSwgY3VzdG9tX21zZyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0xNTE2LDE0ICsxNTQyLDE0IEBACiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiUmVxdWlyZWQgYXJndW1lbnQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIChwb3MgJWQpIG5vdCBmb3VuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCwgaSsxKTsKLSAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgfQogICAgICAgICAvKiBjdXJyZW50IGNvZGUgcmVwb3J0cyBzdWNjZXNzIHdoZW4gYWxsIHJlcXVpcmVkIGFyZ3MKICAgICAgICAgICogZnVsZmlsbGVkIGFuZCBubyBrZXl3b3JkIGFyZ3MgbGVmdCwgd2l0aCBubyBmdXJ0aGVyCiAgICAgICAgICAqIHZhbGlkYXRpb24uIFhYWCBNYXliZSBza2lwIHRoaXMgaW4gZGVidWcgYnVpbGQgPwogICAgICAgICAgKi8KICAgICAgICAgaWYgKCFua2V5d29yZHMpCi0gICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgZnJlZWxpc3QpOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsICZmcmVlbGlzdCk7CiAKICAgICAgICAgLyogV2UgYXJlIGludG8gb3B0aW9uYWwgYXJncywgc2tpcCB0aHJ1IHRvIGFueSByZW1haW5pbmcKICAgICAgICAgICoga2V5d29yZCBhcmdzICovCkBAIC0xNTMxLDE1ICsxNTU3LDE1IEBACiAgICAgICAgIGlmIChtc2cpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsICIlczogJyVzJyIsIG1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQpOwotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpICYmICpmb3JtYXQgIT0gJ3wnKSB7CisgICAgaWYgKCFJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpICYmICgqZm9ybWF0ICE9ICd8JykgJiYgKCpmb3JtYXQgIT0gJyQnKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgIm1vcmUgYXJndW1lbnQgc3BlY2lmaWVycyB0aGFuIGtleXdvcmQgbGlzdCBlbnRyaWVzICIKICAgICAgICAgICAgICIocmVtYWluaW5nIGZvcm1hdDonJXMnKSIsIGZvcm1hdCk7Ci0gICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgIH0KIAogICAgIC8qIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZXh0cmFuZW91cyBrZXl3b3JkIGFyZ3VtZW50cyAqLwpAQCAtMTU1Miw3ICsxNTc4LDcgQEAKICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qIGNoZWNrIHRoYXQgX1B5VW5pY29kZV9Bc1N0cmluZygpIHJlc3VsdCBpcyBub3QgTlVMTCAqLwogICAgICAgICAgICAga3MgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGtleSk7CkBAIC0xNTY5LDEyICsxNTk1LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJVUnIGlzIGFuIGludmFsaWQga2V5d29yZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBmb3IgdGhpcyBmdW5jdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBjbGVhbnJldHVybigxLCBmcmVlbGlzdCk7CisgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsICZmcmVlbGlzdCk7CiB9CiAKIApAQCAtMTU4Niw4ICsxNjEyLDEwIEBACiAKICAgICBzd2l0Y2ggKGMpIHsKIAotICAgIC8qIHNpbXBsZSBjb2RlcwotICAgICAqIFRoZSBpbmRpdmlkdWFsIHR5cGVzIChzZWNvbmQgYXJnIG9mIHZhX2FyZykgYXJlIGlycmVsZXZhbnQgKi8KKyAgICAvKgorICAgICAqIGNvZGVzIHRoYXQgdGFrZSBhIHNpbmdsZSBkYXRhIHBvaW50ZXIgYXMgYW4gYXJndW1lbnQKKyAgICAgKiAodGhlIHR5cGUgb2YgdGhlIHBvaW50ZXIgaXMgaXJyZWxldmFudCkKKyAgICAgKi8KIAogICAgIGNhc2UgJ2InOiAvKiBieXRlIC0tIHZlcnkgc2hvcnQgaW50ICovCiAgICAgY2FzZSAnQic6IC8qIGJ5dGUgYXMgYml0ZmllbGQgKi8KQEAgLTE2MDEsMjIgKzE2MjksMjEgQEAKICAgICBjYXNlICdMJzogLyogUFlfTE9OR19MT05HICovCiAgICAgY2FzZSAnSyc6IC8qIFBZX0xPTkdfTE9ORyBzaXplZCBiaXRmaWVsZCAqLwogI2VuZGlmCisgICAgY2FzZSAnbic6IC8qIFB5X3NzaXplX3QgKi8KICAgICBjYXNlICdmJzogLyogZmxvYXQgKi8KICAgICBjYXNlICdkJzogLyogZG91YmxlICovCiAgICAgY2FzZSAnRCc6IC8qIGNvbXBsZXggZG91YmxlICovCiAgICAgY2FzZSAnYyc6IC8qIGNoYXIgKi8KICAgICBjYXNlICdDJzogLyogdW5pY29kZSBjaGFyICovCisgICAgY2FzZSAncCc6IC8qIGJvb2xlYW4gcHJlZGljYXRlICovCisgICAgY2FzZSAnUyc6IC8qIHN0cmluZyBvYmplY3QgKi8KKyAgICBjYXNlICdZJzogLyogc3RyaW5nIG9iamVjdCAqLworICAgIGNhc2UgJ1UnOiAvKiB1bmljb2RlIHN0cmluZyBvYmplY3QgKi8KICAgICAgICAgewogICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgdm9pZCAqKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICBjYXNlICduJzogLyogUHlfc3NpemVfdCAqLwotICAgICAgICB7Ci0gICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeV9zc2l6ZV90ICopOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgIC8qIHN0cmluZyBjb2RlcyAqLwogCiAgICAgY2FzZSAnZSc6IC8qIHN0cmluZyB3aXRoIGVuY29kaW5nICovCkBAIC0xNjQ5LDE2ICsxNjc2LDYgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAvKiBvYmplY3QgY29kZXMgKi8KLQotICAgIGNhc2UgJ1MnOiAvKiBzdHJpbmcgb2JqZWN0ICovCi0gICAgY2FzZSAnWSc6IC8qIHN0cmluZyBvYmplY3QgKi8KLSAgICBjYXNlICdVJzogLyogdW5pY29kZSBzdHJpbmcgb2JqZWN0ICovCi0gICAgICAgIHsKLSAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5T2JqZWN0ICoqKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KICAgICBjYXNlICdPJzogLyogb2JqZWN0ICovCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICgqZm9ybWF0ID09ICchJykgewpkaWZmIC0tZ2l0IGEvUHl0aG9uL2dldGNvcHlyaWdodC5jIGIvUHl0aG9uL2dldGNvcHlyaWdodC5jCmluZGV4IGQxZTI1NzguLjJkMjY3ODcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9nZXRjb3B5cmlnaHQuYworKysgYi9QeXRob24vZ2V0Y29weXJpZ2h0LmMKQEAgLTQsNyArNCw3IEBACiAKIHN0YXRpYyBjaGFyIGNwcnRbXSA9CiAiXAotQ29weXJpZ2h0IChjKSAyMDAxLTIwMTIgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uXG5cCitDb3B5cmlnaHQgKGMpIDIwMDEtMjAxMyBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi5cblwKIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG5cCiBcblwKIENvcHlyaWdodCAoYykgMjAwMCBCZU9wZW4uY29tLlxuXApAQCAtMTksNSArMTksNSBAQAogY29uc3QgY2hhciAqCiBQeV9HZXRDb3B5cmlnaHQodm9pZCkKIHsKLQlyZXR1cm4gY3BydDsKKyAgICByZXR1cm4gY3BydDsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9ncmFtaW5pdC5jIGIvUHl0aG9uL2dyYW1pbml0LmMKaW5kZXggY2FiYzRkNi4uZTA0OTk5YiAxMDA2NDQKLS0tIGEvUHl0aG9uL2dyYW1pbml0LmMKKysrIGIvUHl0aG9uL2dyYW1pbml0LmMKQEAgLTE3OTEsNyArMTc5MSw3IEBACiAgICAgezE2NywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgwXzFbMl0gPSB7Ci0gICAgezksIDJ9LAorICAgIHsxNjgsIDJ9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODBfMlsxXSA9IHsKQEAgLTE4MDIsMTcxICsxODAyLDE4OCBAQAogICAgIHsyLCBhcmNzXzgwXzF9LAogICAgIHsxLCBhcmNzXzgwXzJ9LAogfTsKLXN0YXRpYyBkZmEgZGZhc1s4MV0gPSB7Ci0gICAgezI1NiwgInNpbmdsZV9pbnB1dCIsIDAsIDMsIHN0YXRlc18wLAotICAgICAiXDAwNFwwNTBcMDYwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMjIwXDA0NVwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjA0In0sCi0gICAgezI1NywgImZpbGVfaW5wdXQiLCAwLCAyLCBzdGF0ZXNfMSwKLSAgICAgIlwyMDRcMDUwXDA2MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDIyMFwwNDVcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwNCJ9LAotICAgIHsyNTgsICJldmFsX2lucHV0IiwgMCwgMywgc3RhdGVzXzIsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MjU5LCAiZGVjb3JhdG9yIiwgMCwgNywgc3RhdGVzXzMsCi0gICAgICJcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjYwLCAiZGVjb3JhdG9ycyIsIDAsIDIsIHN0YXRlc180LAotICAgICAiXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2MSwgImRlY29yYXRlZCIsIDAsIDMsIHN0YXRlc181LAotICAgICAiXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2MiwgImZ1bmNkZWYiLCAwLCA4LCBzdGF0ZXNfNiwKLSAgICAgIlwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjMsICJwYXJhbWV0ZXJzIiwgMCwgNCwgc3RhdGVzXzcsCi0gICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY0LCAidHlwZWRhcmdzbGlzdCIsIDAsIDE4LCBzdGF0ZXNfOCwKLSAgICAgIlwwMDBcMDAwXDA0MFwyMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjUsICJ0ZnBkZWYiLCAwLCA0LCBzdGF0ZXNfOSwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjYsICJ2YXJhcmdzbGlzdCIsIDAsIDE4LCBzdGF0ZXNfMTAsCi0gICAgICJcMDAwXDAwMFwwNDBcMjAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY3LCAidmZwZGVmIiwgMCwgMiwgc3RhdGVzXzExLAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2OCwgInN0bXQiLCAwLCAyLCBzdGF0ZXNfMTIsCi0gICAgICJcMDAwXDA1MFwwNjBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwyMjBcMDQ1XDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDQifSwKLSAgICB7MjY5LCAic2ltcGxlX3N0bXQiLCAwLCA0LCBzdGF0ZXNfMTMsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDAifSwKLSAgICB7MjcwLCAic21hbGxfc3RtdCIsIDAsIDIsIHN0YXRlc18xNCwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwMCJ9LAotICAgIHsyNzEsICJleHByX3N0bXQiLCAwLCA2LCBzdGF0ZXNfMTUsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MjcyLCAidGVzdGxpc3Rfc3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzE2LAotICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezI3MywgImF1Z2Fzc2lnbiIsIDAsIDIsIHN0YXRlc18xNywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzNzZcMDM3XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzQsICJkZWxfc3RtdCIsIDAsIDMsIHN0YXRlc18xOCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzUsICJwYXNzX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMTksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc2LCAiZmxvd19zdG10IiwgMCwgMiwgc3RhdGVzXzIwLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzQwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwIn0sCi0gICAgezI3NywgImJyZWFrX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjEsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc4LCAiY29udGludWVfc3RtdCIsIDAsIDIsIHN0YXRlc18yMiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzksICJyZXR1cm5fc3RtdCIsIDAsIDMsIHN0YXRlc18yMywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODAsICJ5aWVsZF9zdG10IiwgMCwgMiwgc3RhdGVzXzI0LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwIn0sCi0gICAgezI4MSwgInJhaXNlX3N0bXQiLCAwLCA1LCBzdGF0ZXNfMjUsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjgyLCAiaW1wb3J0X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjgzLCAiaW1wb3J0X25hbWUiLCAwLCAzLCBzdGF0ZXNfMjcsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg0LCAiaW1wb3J0X2Zyb20iLCAwLCA4LCBzdGF0ZXNfMjgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg1LCAiaW1wb3J0X2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMjksCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg2LCAiZG90dGVkX2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMzAsCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg3LCAiaW1wb3J0X2FzX25hbWVzIiwgMCwgMywgc3RhdGVzXzMxLAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4OCwgImRvdHRlZF9hc19uYW1lcyIsIDAsIDIsIHN0YXRlc18zMiwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODksICJkb3R0ZWRfbmFtZSIsIDAsIDIsIHN0YXRlc18zMywKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTAsICJnbG9iYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTEsICJub25sb2NhbF9zdG10IiwgMCwgMywgc3RhdGVzXzM1LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MiwgImFzc2VydF9zdG10IiwgMCwgNSwgc3RhdGVzXzM2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MywgImNvbXBvdW5kX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMzcsCi0gICAgICJcMDAwXDAxMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMjBcMDQ1XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDQifSwKLSAgICB7Mjk0LCAiaWZfc3RtdCIsIDAsIDgsIHN0YXRlc18zOCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTUsICJ3aGlsZV9zdG10IiwgMCwgOCwgc3RhdGVzXzM5LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5NiwgImZvcl9zdG10IiwgMCwgMTAsIHN0YXRlc180MCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTcsICJ0cnlfc3RtdCIsIDAsIDEzLCBzdGF0ZXNfNDEsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk4LCAid2l0aF9zdG10IiwgMCwgNSwgc3RhdGVzXzQyLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5OSwgIndpdGhfaXRlbSIsIDAsIDQsIHN0YXRlc180MywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMDAsICJleGNlcHRfY2xhdXNlIiwgMCwgNSwgc3RhdGVzXzQ0LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMwMSwgInN1aXRlIiwgMCwgNSwgc3RhdGVzXzQ1LAotICAgICAiXDAwNFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjAwIn0sCi0gICAgezMwMiwgInRlc3QiLCAwLCA2LCBzdGF0ZXNfNDYsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzAzLCAidGVzdF9ub2NvbmQiLCAwLCAyLCBzdGF0ZXNfNDcsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzA0LCAibGFtYmRlZiIsIDAsIDUsIHN0YXRlc180OCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMDUsICJsYW1iZGVmX25vY29uZCIsIDAsIDUsIHN0YXRlc180OSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMDYsICJvcl90ZXN0IiwgMCwgMiwgc3RhdGVzXzUwLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMwNywgImFuZF90ZXN0IiwgMCwgMiwgc3RhdGVzXzUxLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMwOCwgIm5vdF90ZXN0IiwgMCwgMywgc3RhdGVzXzUyLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMwOSwgImNvbXBhcmlzb24iLCAwLCAyLCBzdGF0ZXNfNTMsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzEwLCAiY29tcF9vcCIsIDAsIDQsIHN0YXRlc181NCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDIyMFwxNzdcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMTEsICJzdGFyX2V4cHIiLCAwLCAzLCBzdGF0ZXNfNTUsCi0gICAgICJcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzEyLCAiZXhwciIsIDAsIDIsIHN0YXRlc181NiwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMTMsICJ4b3JfZXhwciIsIDAsIDIsIHN0YXRlc181NywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMTQsICJhbmRfZXhwciIsIDAsIDIsIHN0YXRlc181OCwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMTUsICJzaGlmdF9leHByIiwgMCwgMiwgc3RhdGVzXzU5LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMxNiwgImFyaXRoX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjAsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzE3LCAidGVybSIsIDAsIDIsIHN0YXRlc182MSwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMTgsICJmYWN0b3IiLCAwLCAzLCBzdGF0ZXNfNjIsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzE5LCAicG93ZXIiLCAwLCA0LCBzdGF0ZXNfNjMsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTIwXDA3NlwwMDAifSwKLSAgICB7MzIwLCAiYXRvbSIsIDAsIDksIHN0YXRlc182NCwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMjBcMDc2XDAwMCJ9LAotICAgIHszMjEsICJ0ZXN0bGlzdF9jb21wIiwgMCwgNSwgc3RhdGVzXzY1LAotICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMyMiwgInRyYWlsZXIiLCAwLCA3LCBzdGF0ZXNfNjYsCi0gICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDAifSwKLSAgICB7MzIzLCAic3Vic2NyaXB0bGlzdCIsIDAsIDMsIHN0YXRlc182NywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMjQsICJzdWJzY3JpcHQiLCAwLCA1LCBzdGF0ZXNfNjgsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzI1LCAic2xpY2VvcCIsIDAsIDMsIHN0YXRlc182OSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMjYsICJleHBybGlzdCIsIDAsIDMsIHN0YXRlc183MCwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMjcsICJ0ZXN0bGlzdCIsIDAsIDMsIHN0YXRlc183MSwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMjgsICJkaWN0b3JzZXRtYWtlciIsIDAsIDExLCBzdGF0ZXNfNzIsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzI5LCAiY2xhc3NkZWYiLCAwLCA4LCBzdGF0ZXNfNzMsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDQifSwKLSAgICB7MzMwLCAiYXJnbGlzdCIsIDAsIDgsIHN0YXRlc183NCwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMzEsICJhcmd1bWVudCIsIDAsIDQsIHN0YXRlc183NSwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMzIsICJjb21wX2l0ZXIiLCAwLCAyLCBzdGF0ZXNfNzYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzMzLCAiY29tcF9mb3IiLCAwLCA2LCBzdGF0ZXNfNzcsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM0LCAiY29tcF9pZiIsIDAsIDQsIHN0YXRlc183OCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzUsICJlbmNvZGluZ19kZWNsIiwgMCwgMiwgc3RhdGVzXzc5LAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzNiwgInlpZWxkX2V4cHIiLCAwLCAzLCBzdGF0ZXNfODAsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDAifSwKK3N0YXRpYyBhcmMgYXJjc184MV8wWzJdID0geworICAgIHs3MywgMX0sCisgICAgezksIDJ9LAogfTsKLXN0YXRpYyBsYWJlbCBsYWJlbHNbMTY4XSA9IHsKK3N0YXRpYyBhcmMgYXJjc184MV8xWzFdID0geworICAgIHsyNCwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzgxXzJbMV0gPSB7CisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODFbM10gPSB7CisgICAgezIsIGFyY3NfODFfMH0sCisgICAgezEsIGFyY3NfODFfMX0sCisgICAgezEsIGFyY3NfODFfMn0sCit9Oworc3RhdGljIGRmYSBkZmFzWzgyXSA9IHsKKyAgICB7MjU2LCAic2luZ2xlX2lucHV0IiwgMCwgMywgc3RhdGVzXzAsCisgICAgICJcMDA0XDA1MFwwNjBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwyMjBcMDQ1XDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDRcMDAwIn0sCisgICAgezI1NywgImZpbGVfaW5wdXQiLCAwLCAyLCBzdGF0ZXNfMSwKKyAgICAgIlwyMDRcMDUwXDA2MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDIyMFwwNDVcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwNFwwMDAifSwKKyAgICB7MjU4LCAiZXZhbF9pbnB1dCIsIDAsIDMsIHN0YXRlc18yLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHsyNTksICJkZWNvcmF0b3IiLCAwLCA3LCBzdGF0ZXNfMywKKyAgICAgIlwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjYwLCAiZGVjb3JhdG9ycyIsIDAsIDIsIHN0YXRlc180LAorICAgICAiXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjEsICJkZWNvcmF0ZWQiLCAwLCAzLCBzdGF0ZXNfNSwKKyAgICAgIlwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjYyLCAiZnVuY2RlZiIsIDAsIDgsIHN0YXRlc182LAorICAgICAiXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjMsICJwYXJhbWV0ZXJzIiwgMCwgNCwgc3RhdGVzXzcsCisgICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2NCwgInR5cGVkYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzgsCisgICAgICJcMDAwXDAwMFwwNDBcMjAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2NSwgInRmcGRlZiIsIDAsIDQsIHN0YXRlc185LAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjYsICJ2YXJhcmdzbGlzdCIsIDAsIDE4LCBzdGF0ZXNfMTAsCisgICAgICJcMDAwXDAwMFwwNDBcMjAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2NywgInZmcGRlZiIsIDAsIDIsIHN0YXRlc18xMSwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjY4LCAic3RtdCIsIDAsIDIsIHN0YXRlc18xMiwKKyAgICAgIlwwMDBcMDUwXDA2MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDIyMFwwNDVcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwNFwwMDAifSwKKyAgICB7MjY5LCAic2ltcGxlX3N0bXQiLCAwLCA0LCBzdGF0ZXNfMTMsCisgICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDBcMDAwIn0sCisgICAgezI3MCwgInNtYWxsX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMTQsCisgICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDBcMDAwIn0sCisgICAgezI3MSwgImV4cHJfc3RtdCIsIDAsIDYsIHN0YXRlc18xNSwKKyAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MjcyLCAidGVzdGxpc3Rfc3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzE2LAorICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHsyNzMsICJhdWdhc3NpZ24iLCAwLCAyLCBzdGF0ZXNfMTcsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzc2XDAzN1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3NCwgImRlbF9zdG10IiwgMCwgMywgc3RhdGVzXzE4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzUsICJwYXNzX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMTksCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3NiwgImZsb3dfc3RtdCIsIDAsIDIsIHN0YXRlc18yMCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDM0MFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDAifSwKKyAgICB7Mjc3LCAiYnJlYWtfc3RtdCIsIDAsIDIsIHN0YXRlc18yMSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjc4LCAiY29udGludWVfc3RtdCIsIDAsIDIsIHN0YXRlc18yMiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjc5LCAicmV0dXJuX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMjMsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4MCwgInlpZWxkX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjQsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwIn0sCisgICAgezI4MSwgInJhaXNlX3N0bXQiLCAwLCA1LCBzdGF0ZXNfMjUsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4MiwgImltcG9ydF9zdG10IiwgMCwgMiwgc3RhdGVzXzI2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODMsICJpbXBvcnRfbmFtZSIsIDAsIDMsIHN0YXRlc18yNywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg0LCAiaW1wb3J0X2Zyb20iLCAwLCA4LCBzdGF0ZXNfMjgsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NSwgImltcG9ydF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzI5LAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODYsICJkb3R0ZWRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18zMCwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg3LCAiaW1wb3J0X2FzX25hbWVzIiwgMCwgMywgc3RhdGVzXzMxLAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODgsICJkb3R0ZWRfYXNfbmFtZXMiLCAwLCAyLCBzdGF0ZXNfMzIsCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4OSwgImRvdHRlZF9uYW1lIiwgMCwgMiwgc3RhdGVzXzMzLAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTAsICJnbG9iYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkxLCAibm9ubG9jYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkyLCAiYXNzZXJ0X3N0bXQiLCAwLCA1LCBzdGF0ZXNfMzYsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MywgImNvbXBvdW5kX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMzcsCisgICAgICJcMDAwXDAxMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMjBcMDQ1XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwIn0sCisgICAgezI5NCwgImlmX3N0bXQiLCAwLCA4LCBzdGF0ZXNfMzgsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5NSwgIndoaWxlX3N0bXQiLCAwLCA4LCBzdGF0ZXNfMzksCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5NiwgImZvcl9zdG10IiwgMCwgMTAsIHN0YXRlc180MCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk3LCAidHJ5X3N0bXQiLCAwLCAxMywgc3RhdGVzXzQxLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTgsICJ3aXRoX3N0bXQiLCAwLCA1LCBzdGF0ZXNfNDIsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5OSwgIndpdGhfaXRlbSIsIDAsIDQsIHN0YXRlc180MywKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzAwLCAiZXhjZXB0X2NsYXVzZSIsIDAsIDUsIHN0YXRlc180NCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzAxLCAic3VpdGUiLCAwLCA1LCBzdGF0ZXNfNDUsCisgICAgICJcMDA0XDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDBcMDAwIn0sCisgICAgezMwMiwgInRlc3QiLCAwLCA2LCBzdGF0ZXNfNDYsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMwMywgInRlc3Rfbm9jb25kIiwgMCwgMiwgc3RhdGVzXzQ3LAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMDQsICJsYW1iZGVmIiwgMCwgNSwgc3RhdGVzXzQ4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDUsICJsYW1iZGVmX25vY29uZCIsIDAsIDUsIHN0YXRlc180OSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzA2LCAib3JfdGVzdCIsIDAsIDIsIHN0YXRlc181MCwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzA3LCAiYW5kX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTEsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMwOCwgIm5vdF90ZXN0IiwgMCwgMywgc3RhdGVzXzUyLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMDksICJjb21wYXJpc29uIiwgMCwgMiwgc3RhdGVzXzUzLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMTAsICJjb21wX29wIiwgMCwgNCwgc3RhdGVzXzU0LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMjIwXDE3N1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMTEsICJzdGFyX2V4cHIiLCAwLCAzLCBzdGF0ZXNfNTUsCisgICAgICJcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMxMiwgImV4cHIiLCAwLCAyLCBzdGF0ZXNfNTYsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMxMywgInhvcl9leHByIiwgMCwgMiwgc3RhdGVzXzU3LAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMTQsICJhbmRfZXhwciIsIDAsIDIsIHN0YXRlc181OCwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzE1LCAic2hpZnRfZXhwciIsIDAsIDIsIHN0YXRlc181OSwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzE2LCAiYXJpdGhfZXhwciIsIDAsIDIsIHN0YXRlc182MCwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzE3LCAidGVybSIsIDAsIDIsIHN0YXRlc182MSwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzE4LCAiZmFjdG9yIiwgMCwgMywgc3RhdGVzXzYyLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMTksICJwb3dlciIsIDAsIDQsIHN0YXRlc182MywKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzIwLCAiYXRvbSIsIDAsIDksIHN0YXRlc182NCwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzIxLCAidGVzdGxpc3RfY29tcCIsIDAsIDUsIHN0YXRlc182NSwKKyAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzIyLCAidHJhaWxlciIsIDAsIDcsIHN0YXRlc182NiwKKyAgICAgIlwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzIzLCAic3Vic2NyaXB0bGlzdCIsIDAsIDMsIHN0YXRlc182NywKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzI0LCAic3Vic2NyaXB0IiwgMCwgNSwgc3RhdGVzXzY4LAorICAgICAiXDAwMFwwNDBcMDQwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMjUsICJzbGljZW9wIiwgMCwgMywgc3RhdGVzXzY5LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMjYsICJleHBybGlzdCIsIDAsIDMsIHN0YXRlc183MCwKKyAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzI3LCAidGVzdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNzEsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyOCwgImRpY3RvcnNldG1ha2VyIiwgMCwgMTEsIHN0YXRlc183MiwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzI5LCAiY2xhc3NkZWYiLCAwLCA4LCBzdGF0ZXNfNzMsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwIn0sCisgICAgezMzMCwgImFyZ2xpc3QiLCAwLCA4LCBzdGF0ZXNfNzQsCisgICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMzMSwgImFyZ3VtZW50IiwgMCwgNCwgc3RhdGVzXzc1LAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMzIsICJjb21wX2l0ZXIiLCAwLCAyLCBzdGF0ZXNfNzYsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMzMywgImNvbXBfZm9yIiwgMCwgNiwgc3RhdGVzXzc3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzQsICJjb21wX2lmIiwgMCwgNCwgc3RhdGVzXzc4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzUsICJlbmNvZGluZ19kZWNsIiwgMCwgMiwgc3RhdGVzXzc5LAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzYsICJ5aWVsZF9leHByIiwgMCwgMywgc3RhdGVzXzgwLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMCJ9LAorICAgIHszMzcsICJ5aWVsZF9hcmciLCAwLCAzLCBzdGF0ZXNfODEsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAyXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCit9Oworc3RhdGljIGxhYmVsIGxhYmVsc1sxNjldID0gewogICAgIHswLCAiRU1QVFkifSwKICAgICB7MjU2LCAwfSwKICAgICB7NCwgMH0sCkBAIC0yMTM1LDEwICsyMTUyLDExIEBACiAgICAgezMzNCwgMH0sCiAgICAgezMzNSwgMH0sCiAgICAgezEsICJ5aWVsZCJ9LAorICAgIHszMzcsIDB9LAogfTsKIGdyYW1tYXIgX1B5UGFyc2VyX0dyYW1tYXIgPSB7Ci0gICAgODEsCisgICAgODIsCiAgICAgZGZhcywKLSAgICB7MTY4LCBsYWJlbHN9LAorICAgIHsxNjksIGxhYmVsc30sCiAgICAgMjU2CiB9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydC5jIGIvUHl0aG9uL2ltcG9ydC5jCmluZGV4IGY2NTVlNTEuLjVmYzI1MjMgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnQuYworKysgYi9QeXRob24vaW1wb3J0LmMKQEAgLTgsNiArOCw3IEBACiAjaW5jbHVkZSAiZXJyY29kZS5oIgogI2luY2x1ZGUgIm1hcnNoYWwuaCIKICNpbmNsdWRlICJjb2RlLmgiCisjaW5jbHVkZSAiZnJhbWVvYmplY3QuaCIKICNpbmNsdWRlICJvc2RlZnMuaCIKICNpbmNsdWRlICJpbXBvcnRkbC5oIgogCkBAIC0yNiwxNzYgKzI3LDM4IEBACiAjZW5kaWYKIAogCi0vKiBNYWdpYyB3b3JkIHRvIHJlamVjdCAucHljIGZpbGVzIGdlbmVyYXRlZCBieSBvdGhlciBQeXRob24gdmVyc2lvbnMuCi0gICBJdCBzaG91bGQgY2hhbmdlIGZvciBlYWNoIGluY29tcGF0aWJsZSBjaGFuZ2UgdG8gdGhlIGJ5dGVjb2RlLgotCi0gICBUaGUgdmFsdWUgb2YgQ1IgYW5kIExGIGlzIGluY29ycG9yYXRlZCBzbyBpZiB5b3UgZXZlciByZWFkIG9yIHdyaXRlCi0gICBhIC5weWMgZmlsZSBpbiB0ZXh0IG1vZGUgdGhlIG1hZ2ljIG51bWJlciB3aWxsIGJlIHdyb25nOyBhbHNvLCB0aGUKLSAgIEFwcGxlIE1QVyBjb21waWxlciBzd2FwcyB0aGVpciB2YWx1ZXMsIGJvdGNoaW5nIHN0cmluZyBjb25zdGFudHMuCi0KLSAgIFRoZSBtYWdpYyBudW1iZXJzIG11c3QgYmUgc3BhY2VkIGFwYXJ0IGF0IGxlYXN0IDIgdmFsdWVzLCBhcyB0aGUKLSAgIC1VIGludGVycGV0ZXIgZmxhZyB3aWxsIGNhdXNlIE1BR0lDKzEgYmVpbmcgdXNlZC4gVGhleSBoYXZlIGJlZW4KLSAgIG9kZCBudW1iZXJzIGZvciBzb21lIHRpbWUgbm93LgotCi0gICBUaGVyZSB3ZXJlIGEgdmFyaWV0eSBvZiBvbGQgc2NoZW1lcyBmb3Igc2V0dGluZyB0aGUgbWFnaWMgbnVtYmVyLgotICAgVGhlIGN1cnJlbnQgd29ya2luZyBzY2hlbWUgaXMgdG8gaW5jcmVtZW50IHRoZSBwcmV2aW91cyB2YWx1ZSBieQotICAgMTAuCi0KLSAgIFN0YXJ0aW5nIHdpdGggdGhlIGFkb3B0aW9uIG9mIFBFUCAzMTQ3IGluIFB5dGhvbiAzLjIsIGV2ZXJ5IGJ1bXAgaW4gbWFnaWMKLSAgIG51bWJlciBhbHNvIGluY2x1ZGVzIGEgbmV3ICJtYWdpYyB0YWciLCBpLmUuIGEgaHVtYW4gcmVhZGFibGUgc3RyaW5nIHVzZWQKLSAgIHRvIHJlcHJlc2VudCB0aGUgbWFnaWMgbnVtYmVyIGluIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzLiAgV2hlbiB5b3UgY2hhbmdlCi0gICB0aGUgbWFnaWMgbnVtYmVyLCB5b3UgbXVzdCBhbHNvIHNldCBhIG5ldyB1bmlxdWUgbWFnaWMgdGFnLiAgR2VuZXJhbGx5IHRoaXMKLSAgIGNhbiBiZSBuYW1lZCBhZnRlciB0aGUgUHl0aG9uIG1ham9yIHZlcnNpb24gb2YgdGhlIG1hZ2ljIG51bWJlciBidW1wLCBidXQKLSAgIGl0IGNhbiByZWFsbHkgYmUgYW55dGhpbmcsIGFzIGxvbmcgYXMgaXQncyBkaWZmZXJlbnQgdGhhbiBhbnl0aGluZyBlbHNlCi0gICB0aGF0J3MgY29tZSBiZWZvcmUuICBUaGUgdGFncyBhcmUgaW5jbHVkZWQgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSwgc3RhcnRpbmcKLSAgIHdpdGggUHl0aG9uIDMuMmEwLgotCi0gICBLbm93biB2YWx1ZXM6Ci0gICAgICAgUHl0aG9uIDEuNTogICAyMDEyMQotICAgICAgIFB5dGhvbiAxLjUuMTogMjAxMjEKLSAgICAgICBQeXRob24gMS41LjI6IDIwMTIxCi0gICAgICAgUHl0aG9uIDEuNjogICA1MDQyOAotICAgICAgIFB5dGhvbiAyLjA6ICAgNTA4MjMKLSAgICAgICBQeXRob24gMi4wLjE6IDUwODIzCi0gICAgICAgUHl0aG9uIDIuMTogICA2MDIwMgotICAgICAgIFB5dGhvbiAyLjEuMTogNjAyMDIKLSAgICAgICBQeXRob24gMi4xLjI6IDYwMjAyCi0gICAgICAgUHl0aG9uIDIuMjogICA2MDcxNwotICAgICAgIFB5dGhvbiAyLjNhMDogNjIwMTEKLSAgICAgICBQeXRob24gMi4zYTA6IDYyMDIxCi0gICAgICAgUHl0aG9uIDIuM2EwOiA2MjAxMSAoISkKLSAgICAgICBQeXRob24gMi40YTA6IDYyMDQxCi0gICAgICAgUHl0aG9uIDIuNGEzOiA2MjA1MQotICAgICAgIFB5dGhvbiAyLjRiMTogNjIwNjEKLSAgICAgICBQeXRob24gMi41YTA6IDYyMDcxCi0gICAgICAgUHl0aG9uIDIuNWEwOiA2MjA4MSAoYXN0LWJyYW5jaCkKLSAgICAgICBQeXRob24gMi41YTA6IDYyMDkxICh3aXRoKQotICAgICAgIFB5dGhvbiAyLjVhMDogNjIwOTIgKGNoYW5nZWQgV0lUSF9DTEVBTlVQIG9wY29kZSkKLSAgICAgICBQeXRob24gMi41YjM6IDYyMTAxIChmaXggd3JvbmcgY29kZTogZm9yIHgsIGluIC4uLikKLSAgICAgICBQeXRob24gMi41YjM6IDYyMTExIChmaXggd3JvbmcgY29kZTogeCArPSB5aWVsZCkKLSAgICAgICBQeXRob24gMi41YzE6IDYyMTIxIChmaXggd3JvbmcgbG5vdGFiIHdpdGggZm9yIGxvb3BzIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JpbmcgY29uc3RhbnRzIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkKQotICAgICAgIFB5dGhvbiAyLjVjMjogNjIxMzEgKGZpeCB3cm9uZyBjb2RlOiBmb3IgeCwgaW4gLi4uIGluIGxpc3Rjb21wL2dlbmV4cCkKLSAgICAgICBQeXRob24gMi42YTA6IDYyMTUxIChwZWVwaG9sZSBvcHRpbWl6YXRpb25zIGFuZCBTVE9SRV9NQVAgb3Bjb2RlKQotICAgICAgIFB5dGhvbiAyLjZhMTogNjIxNjEgKFdJVEhfQ0xFQU5VUCBvcHRpbWl6YXRpb24pCi0gICAgICAgUHl0aG9uIDMwMDA6ICAgMzAwMAotICAgICAgICAgICAgICAgICAgICAgIDMwMTAgKHJlbW92ZWQgVU5BUllfQ09OVkVSVCkKLSAgICAgICAgICAgICAgICAgICAgICAzMDIwIChhZGRlZCBCVUlMRF9TRVQpCi0gICAgICAgICAgICAgICAgICAgICAgMzAzMCAoYWRkZWQga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMpCi0gICAgICAgICAgICAgICAgICAgICAgMzA0MCAoYWRkZWQgc2lnbmF0dXJlIGFubm90YXRpb25zKQotICAgICAgICAgICAgICAgICAgICAgIDMwNTAgKHByaW50IGJlY29tZXMgYSBmdW5jdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAzMDYwIChQRVAgMzExNSBtZXRhY2xhc3Mgc3ludGF4KQotICAgICAgICAgICAgICAgICAgICAgIDMwNjEgKHN0cmluZyBsaXRlcmFscyBiZWNvbWUgdW5pY29kZSkKLSAgICAgICAgICAgICAgICAgICAgICAzMDcxIChQRVAgMzEwOSByYWlzZSBjaGFuZ2VzKQotICAgICAgICAgICAgICAgICAgICAgIDMwODEgKFBFUCAzMTM3IG1ha2UgX19maWxlX18gYW5kIF9fbmFtZV9fIHVuaWNvZGUpCi0gICAgICAgICAgICAgICAgICAgICAgMzA5MSAoa2lsbCBzdHI4IGludGVybmluZykKLSAgICAgICAgICAgICAgICAgICAgICAzMTAxIChtZXJnZSBmcm9tIDIuNmEwLCBzZWUgNjIxNTEpCi0gICAgICAgICAgICAgICAgICAgICAgMzEwMyAoX19maWxlX18gcG9pbnRzIHRvIHNvdXJjZSBmaWxlKQotICAgICAgIFB5dGhvbiAzLjBhNDogMzExMSAoV0lUSF9DTEVBTlVQIG9wdGltaXphdGlvbikuCi0gICAgICAgUHl0aG9uIDMuMGE1OiAzMTMxIChsZXhpY2FsIGV4Y2VwdGlvbiBzdGFja2luZywgaW5jbHVkaW5nIFBPUF9FWENFUFQpCi0gICAgICAgUHl0aG9uIDMuMWEwOiAzMTQxIChvcHRpbWl6ZSBsaXN0LCBzZXQgYW5kIGRpY3QgY29tcHJlaGVuc2lvbnM6Ci0gICAgICAgICAgICAgICBjaGFuZ2UgTElTVF9BUFBFTkQgYW5kIFNFVF9BREQsIGFkZCBNQVBfQUREKQotICAgICAgIFB5dGhvbiAzLjFhMDogMzE1MSAob3B0aW1pemUgY29uZGl0aW9uYWwgYnJhbmNoZXM6Ci0gICAgICAgICAgICAgICBpbnRyb2R1Y2UgUE9QX0pVTVBfSUZfRkFMU0UgYW5kIFBPUF9KVU1QX0lGX1RSVUUpCi0gICAgICAgUHl0aG9uIDMuMmEwOiAzMTYwIChhZGQgU0VUVVBfV0lUSCkKLSAgICAgICAgICAgICAgICAgICAgIHRhZzogY3B5dGhvbi0zMgotICAgICAgIFB5dGhvbiAzLjJhMTogMzE3MCAoYWRkIERVUF9UT1BfVFdPLCByZW1vdmUgRFVQX1RPUFggYW5kIFJPVF9GT1VSKQotICAgICAgICAgICAgICAgICAgICAgdGFnOiBjcHl0aG9uLTMyCi0gICAgICAgUHl0aG9uIDMuMmEyICAzMTgwIChhZGQgREVMRVRFX0RFUkVGKQotKi8KLQotLyogTUFHSUMgbXVzdCBjaGFuZ2Ugd2hlbmV2ZXIgdGhlIGJ5dGVjb2RlIGVtaXR0ZWQgYnkgdGhlIGNvbXBpbGVyIG1heSBubwotICAgbG9uZ2VyIGJlIHVuZGVyc3Rvb2QgYnkgb2xkZXIgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBldmFsIGxvb3AgKHVzdWFsbHkKLSAgIGR1ZSB0byB0aGUgYWRkaXRpb24gb2YgbmV3IG9wY29kZXMpCi0gICBUQUcgbXVzdCBjaGFuZ2UgZm9yIGVhY2ggbWFqb3IgUHl0aG9uIHJlbGVhc2UuIFRoZSBtYWdpYyBudW1iZXIgd2lsbCB0YWtlCi0gICBjYXJlIG9mIGFueSBieXRlY29kZSBjaGFuZ2VzIHRoYXQgb2NjdXIgZHVyaW5nIGRldmVsb3BtZW50LgotKi8KLSNkZWZpbmUgTUFHSUMgKDMxODAgfCAoKGxvbmcpJ1xyJzw8MTYpIHwgKChsb25nKSdcbic8PDI0KSkKLSNkZWZpbmUgVEFHICJjcHl0aG9uLTMyIgogI2RlZmluZSBDQUNIRURJUiAiX19weWNhY2hlX18iCi0vKiBDdXJyZW50IG1hZ2ljIHdvcmQgYW5kIHN0cmluZyB0YWcgYXMgZ2xvYmFscy4gKi8KLXN0YXRpYyBsb25nIHB5Y19tYWdpYyA9IE1BR0lDOwotc3RhdGljIGNvbnN0IGNoYXIgKnB5Y190YWcgPSBUQUc7CiAKLS8qIFNlZSBfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25Vbmljb2RlKCkgYmVsb3cgKi8KKy8qIFNlZSBfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QoKSBiZWxvdyAqLwogc3RhdGljIFB5T2JqZWN0ICpleHRlbnNpb25zID0gTlVMTDsKIAorLyogRnVuY3Rpb24gZnJvbSBQYXJzZXIvdG9rZW5pemVyLmMgKi8KK2V4dGVybiBjaGFyICogUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nRmlsZW5hbWUoaW50LCBQeU9iamVjdCAqKTsKKwogLyogVGhpcyB0YWJsZSBpcyBkZWZpbmVkIGluIGNvbmZpZy5jOiAqLwogZXh0ZXJuIHN0cnVjdCBfaW5pdHRhYiBfUHlJbXBvcnRfSW5pdHRhYltdOwogCi0vKiBNZXRob2QgZnJvbSBQYXJzZXIvdG9rZW5pemVyLmMgKi8KLWV4dGVybiBjaGFyICogUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nKGludCk7Ci0KIHN0cnVjdCBfaW5pdHRhYiAqUHlJbXBvcnRfSW5pdHRhYiA9IF9QeUltcG9ydF9Jbml0dGFiOwogCi0vKiB0aGVzZSB0YWJsZXMgZGVmaW5lIHRoZSBtb2R1bGUgc3VmZml4ZXMgdGhhdCBQeXRob24gcmVjb2duaXplcyAqLwotc3RydWN0IGZpbGVkZXNjciAqIF9QeUltcG9ydF9GaWxldGFiID0gTlVMTDsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X1N0YW5kYXJkRmlsZXRhYltdID0gewotICAgIHsiLnB5IiwgIlUiLCBQWV9TT1VSQ0V9LAotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICB7Ii5weXciLCAiVSIsIFBZX1NPVVJDRX0sCi0jZW5kaWYKLSAgICB7Ii5weWMiLCAicmIiLCBQWV9DT01QSUxFRH0sCi0gICAgezAsIDB9Ci19OwotCitzdGF0aWMgUHlPYmplY3QgKmluaXRzdHIgPSBOVUxMOwogCiAvKiBJbml0aWFsaXplIHRoaW5ncyAqLwogCiB2b2lkCiBfUHlJbXBvcnRfSW5pdCh2b2lkKQogewotICAgIGNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgKnNjYW47Ci0gICAgc3RydWN0IGZpbGVkZXNjciAqZmlsZXRhYjsKLSAgICBpbnQgY291bnREID0gMDsKLSAgICBpbnQgY291bnRTID0gMDsKLQotICAgIC8qIHByZXBhcmUgX1B5SW1wb3J0X0ZpbGV0YWI6IGNvcHkgZW50cmllcyBmcm9tCi0gICAgICAgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiIGFuZCBfUHlJbXBvcnRfU3RhbmRhcmRGaWxldGFiLgotICAgICAqLwotI2lmZGVmIEhBVkVfRFlOQU1JQ19MT0FESU5HCi0gICAgZm9yIChzY2FuID0gX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiOyBzY2FuLT5zdWZmaXggIT0gTlVMTDsgKytzY2FuKQotICAgICAgICArK2NvdW50RDsKLSNlbmRpZgotICAgIGZvciAoc2NhbiA9IF9QeUltcG9ydF9TdGFuZGFyZEZpbGV0YWI7IHNjYW4tPnN1ZmZpeCAhPSBOVUxMOyArK3NjYW4pCi0gICAgICAgICsrY291bnRTOwotICAgIGZpbGV0YWIgPSBQeU1lbV9ORVcoc3RydWN0IGZpbGVkZXNjciwgY291bnREICsgY291bnRTICsgMSk7Ci0gICAgaWYgKGZpbGV0YWIgPT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBpbXBvcnQgZmlsZSB0YWJsZS4iKTsKLSNpZmRlZiBIQVZFX0RZTkFNSUNfTE9BRElORwotICAgIG1lbWNweShmaWxldGFiLCBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWIsCi0gICAgICAgICAgIGNvdW50RCAqIHNpemVvZihzdHJ1Y3QgZmlsZWRlc2NyKSk7Ci0jZW5kaWYKLSAgICBtZW1jcHkoZmlsZXRhYiArIGNvdW50RCwgX1B5SW1wb3J0X1N0YW5kYXJkRmlsZXRhYiwKLSAgICAgICAgICAgY291bnRTICogc2l6ZW9mKHN0cnVjdCBmaWxlZGVzY3IpKTsKLSAgICBmaWxldGFiW2NvdW50RCArIGNvdW50U10uc3VmZml4ID0gTlVMTDsKLQotICAgIF9QeUltcG9ydF9GaWxldGFiID0gZmlsZXRhYjsKLQotICAgIGlmIChQeV9PcHRpbWl6ZUZsYWcpIHsKLSAgICAgICAgLyogUmVwbGFjZSAiLnB5YyIgd2l0aCAiLnB5byIgaW4gX1B5SW1wb3J0X0ZpbGV0YWIgKi8KLSAgICAgICAgZm9yICg7IGZpbGV0YWItPnN1ZmZpeCAhPSBOVUxMOyBmaWxldGFiKyspIHsKLSAgICAgICAgICAgIGlmIChzdHJjbXAoZmlsZXRhYi0+c3VmZml4LCAiLnB5YyIpID09IDApCi0gICAgICAgICAgICAgICAgZmlsZXRhYi0+c3VmZml4ID0gIi5weW8iOwotICAgICAgICB9Ci0gICAgfQorICAgIGluaXRzdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19pbml0X18iKTsKKyAgICBpZiAoaW5pdHN0ciA9PSBOVUxMKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIGltcG9ydCB2YXJpYWJsZXMiKTsKIH0KIAogdm9pZAogX1B5SW1wb3J0SG9va3NfSW5pdCh2b2lkKQogewotICAgIFB5T2JqZWN0ICp2LCAqcGF0aF9ob29rcyA9IE5VTEwsICp6aW1waW1wb3J0OworICAgIFB5T2JqZWN0ICp2LCAqcGF0aF9ob29rcyA9IE5VTEw7CiAgICAgaW50IGVyciA9IDA7CiAKLSAgICAvKiBhZGRpbmcgc3lzLnBhdGhfaG9va3MgYW5kIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLCBzZXR0aW5nIHVwCi0gICAgICAgemlwaW1wb3J0ICovCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlOdWxsSW1wb3J0ZXJfVHlwZSkgPCAwKQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyBpbnN0YWxsaW5nIHppcGltcG9ydCBob29rXG4iKTsKLQorICAgIC8qIGFkZGluZyBzeXMucGF0aF9ob29rcyBhbmQgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgKi8KICAgICB2ID0gUHlMaXN0X05ldygwKTsKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwpAQCAtMjE2LDExICs3OSwyNSBAQAogICAgIGVyciA9IFB5U3lzX1NldE9iamVjdCgicGF0aF9ob29rcyIsIHBhdGhfaG9va3MpOwogICAgIGlmIChlcnIpIHsKICAgZXJyb3I6Ci0gICAgICAgIFB5RXJyX1ByaW50KCk7Ci0gICAgICAgIFB5X0ZhdGFsRXJyb3IoImluaXRpYWxpemluZyBzeXMubWV0YV9wYXRoLCBzeXMucGF0aF9ob29rcywgIgotICAgICAgICAgICAgICAgICAgICAgICJwYXRoX2ltcG9ydGVyX2NhY2hlLCBvciBOdWxsSW1wb3J0ZXIgZmFpbGVkIgotICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgUHlFcnJfUHJpbnQoKTsKKyAgICBQeV9GYXRhbEVycm9yKCJpbml0aWFsaXppbmcgc3lzLm1ldGFfcGF0aCwgc3lzLnBhdGhfaG9va3MsICIKKyAgICAgICAgICAgICAgICAgICJvciBwYXRoX2ltcG9ydGVyX2NhY2hlIGZhaWxlZCIpOwogICAgIH0KKyAgICBQeV9ERUNSRUYocGF0aF9ob29rcyk7Cit9CisKK3ZvaWQKK19QeUltcG9ydFppcF9Jbml0KHZvaWQpCit7CisgICAgUHlPYmplY3QgKnBhdGhfaG9va3MsICp6aW1waW1wb3J0OworICAgIGludCBlcnIgPSAwOworCisgICAgcGF0aF9ob29rcyA9IFB5U3lzX0dldE9iamVjdCgicGF0aF9ob29rcyIpOworICAgIGlmIChwYXRoX2hvb2tzID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCisgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjIGluc3RhbGxpbmcgemlwaW1wb3J0IGhvb2tcbiIpOwogCiAgICAgemltcGltcG9ydCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiemlwaW1wb3J0Iik7CiAgICAgaWYgKHppbXBpbXBvcnQgPT0gTlVMTCkgewpAQCAtMjI5LDggKzEwNiw5IEBACiAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyBjYW4ndCBpbXBvcnQgemlwaW1wb3J0XG4iKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5T2JqZWN0ICp6aXBpbXBvcnRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoemltcGltcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiemlwaW1wb3J0ZXIiKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoemlwaW1wb3J0ZXIpOworICAgICAgICBQeU9iamVjdCAqemlwaW1wb3J0ZXIgPSBfUHlPYmplY3RfR2V0QXR0cklkKHppbXBpbXBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfemlwaW1wb3J0ZXIpOwogICAgICAgICBQeV9ERUNSRUYoemltcGltcG9ydCk7CiAgICAgICAgIGlmICh6aXBpbXBvcnRlciA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOyAvKiBObyB6aXBpbXBvcnRlciBvYmplY3QgLS0gb2theSAqLwpAQCAtMjM5LDE3ICsxMTcsMjMgQEAKICAgICAgICAgICAgICAgICAgICAgIiMgY2FuJ3QgaW1wb3J0IHppcGltcG9ydC56aXBpbXBvcnRlclxuIik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvKiBzeXMucGF0aF9ob29rcy5hcHBlbmQoemlwaW1wb3J0ZXIpICovCi0gICAgICAgICAgICBlcnIgPSBQeUxpc3RfQXBwZW5kKHBhdGhfaG9va3MsIHppcGltcG9ydGVyKTsKKyAgICAgICAgICAgIC8qIHN5cy5wYXRoX2hvb2tzLmluc2VydCgwLCB6aXBpbXBvcnRlcikgKi8KKyAgICAgICAgICAgIGVyciA9IFB5TGlzdF9JbnNlcnQocGF0aF9ob29rcywgMCwgemlwaW1wb3J0ZXIpOwogICAgICAgICAgICAgUHlfREVDUkVGKHppcGltcG9ydGVyKTsKLSAgICAgICAgICAgIGlmIChlcnIpCisgICAgICAgICAgICBpZiAoZXJyIDwgMCkgewogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCiAgICAgICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoCiAgICAgICAgICAgICAgICAgICAgICIjIGluc3RhbGxlZCB6aXBpbXBvcnQgaG9va1xuIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgUHlfREVDUkVGKHBhdGhfaG9va3MpOworCisgICAgcmV0dXJuOworCisgIGVycm9yOgorICAgIFB5RXJyX1ByaW50KCk7CisgICAgUHlfRmF0YWxFcnJvcigiaW5pdGlhbGl6aW5nIHppcGltcG9ydCBmYWlsZWQiKTsKIH0KIAogLyogTG9ja2luZyBwcmltaXRpdmVzIHRvIHByZXZlbnQgcGFyYWxsZWwgaW1wb3J0cyBvZiB0aGUgc2FtZSBtb2R1bGUKQEAgLTI4NSw2ICsxNjksNyBAQAogICAgICAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2soaW1wb3J0X2xvY2ssIDEpOwogICAgICAgICBQeUV2YWxfUmVzdG9yZVRocmVhZCh0c3RhdGUpOwogICAgIH0KKyAgICBhc3NlcnQoaW1wb3J0X2xvY2tfbGV2ZWwgPT0gMCk7CiAgICAgaW1wb3J0X2xvY2tfdGhyZWFkID0gbWU7CiAgICAgaW1wb3J0X2xvY2tfbGV2ZWwgPSAxOwogfQpAQCAtMjk4LDYgKzE4Myw3IEBACiAgICAgaWYgKGltcG9ydF9sb2NrX3RocmVhZCAhPSBtZSkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGltcG9ydF9sb2NrX2xldmVsLS07CisgICAgYXNzZXJ0KGltcG9ydF9sb2NrX2xldmVsID49IDApOwogICAgIGlmIChpbXBvcnRfbG9ja19sZXZlbCA9PSAwKSB7CiAgICAgICAgIGltcG9ydF9sb2NrX3RocmVhZCA9IC0xOwogICAgICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2soaW1wb3J0X2xvY2spOwpAQCAtMzE5LDcgKzIwNSw3IEBACiAgICAgICAgIC8qIEZvcmtlZCBhcyBhIHNpZGUgZWZmZWN0IG9mIGltcG9ydCAqLwogICAgICAgICBsb25nIG1lID0gUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpOwogICAgICAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2soaW1wb3J0X2xvY2ssIDApOwotCS8qIFhYWDogY2FuIHRoZSBwcmV2aW91cyBsaW5lIGZhaWw/ICovCisgICAgICAgIC8qIFhYWDogY2FuIHRoZSBwcmV2aW91cyBsaW5lIGZhaWw/ICovCiAgICAgICAgIGltcG9ydF9sb2NrX3RocmVhZCA9IG1lOwogICAgICAgICBpbXBvcnRfbG9ja19sZXZlbC0tOwogICAgIH0gZWxzZSB7CkBAIC0zNjksOCArMjU1LDYgQEAKIHsKICAgICBQeV9YREVDUkVGKGV4dGVuc2lvbnMpOwogICAgIGV4dGVuc2lvbnMgPSBOVUxMOwotICAgIFB5TWVtX0RFTChfUHlJbXBvcnRfRmlsZXRhYik7Ci0gICAgX1B5SW1wb3J0X0ZpbGV0YWIgPSBOVUxMOwogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgaWYgKGltcG9ydF9sb2NrICE9IE5VTEwpIHsKICAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKGltcG9ydF9sb2NrKTsKQEAgLTM3OSwxNCArMjYzLDYgQEAKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZAotaW1wX21vZHVsZXNfcmVsb2FkaW5nX2NsZWFyKHZvaWQpCi17Ci0gICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dldCgpLT5pbnRlcnA7Ci0gICAgaWYgKGludGVycC0+bW9kdWxlc19yZWxvYWRpbmcgIT0gTlVMTCkKLSAgICAgICAgUHlEaWN0X0NsZWFyKGludGVycC0+bW9kdWxlc19yZWxvYWRpbmcpOwotfQotCiAvKiBIZWxwZXIgZm9yIHN5cyAqLwogCiBQeU9iamVjdCAqCkBAIC00MjMsNyArMjk5LDYgQEAKIFB5SW1wb3J0X0NsZWFudXAodm9pZCkKIHsKICAgICBQeV9zc2l6ZV90IHBvcywgbmRvbmU7Ci0gICAgY2hhciAqbmFtZTsKICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWUsICpkaWN0OwogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOwogICAgIFB5T2JqZWN0ICptb2R1bGVzID0gaW50ZXJwLT5tb2R1bGVzOwpAQCAtNDk2LDE0ICszNzEsMTMgQEAKICAgICAgICAgICAgIGlmICh2YWx1ZS0+b2JfcmVmY250ICE9IDEpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGtleSkgJiYgUHlNb2R1bGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoa2V5KTsKLSAgICAgICAgICAgICAgICBpZiAoc3RyY21wKG5hbWUsICJidWlsdGlucyIpID09IDApCisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGtleSwgImJ1aWx0aW5zIikgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKHN0cmNtcChuYW1lLCAic3lzIikgPT0gMCkKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoa2V5LCAic3lzIikgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigKLSAgICAgICAgICAgICAgICAgICAgICAgICIjIGNsZWFudXBbMV0gJXNcbiIsIG5hbWUpOworICAgICAgICAgICAgICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoCisgICAgICAgICAgICAgICAgICAgICAgICAiIyBjbGVhbnVwWzFdICVVXG4iLCBrZXkpOwogICAgICAgICAgICAgICAgIF9QeU1vZHVsZV9DbGVhcih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgUHlEaWN0X1NldEl0ZW0obW9kdWxlcywga2V5LCBQeV9Ob25lKTsKICAgICAgICAgICAgICAgICBuZG9uZSsrOwpAQCAtNTE1LDEzICszODksMTIgQEAKICAgICBwb3MgPSAwOwogICAgIHdoaWxlIChQeURpY3RfTmV4dChtb2R1bGVzLCAmcG9zLCAma2V5LCAmdmFsdWUpKSB7CiAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soa2V5KSAmJiBQeU1vZHVsZV9DaGVjayh2YWx1ZSkpIHsKLSAgICAgICAgICAgIG5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGtleSk7Ci0gICAgICAgICAgICBpZiAoc3RyY21wKG5hbWUsICJidWlsdGlucyIpID09IDApCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoa2V5LCAiYnVpbHRpbnMiKSA9PSAwKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKHN0cmNtcChuYW1lLCAic3lzIikgPT0gMCkKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhrZXksICJzeXMiKSA9PSAwKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjIGNsZWFudXBbMl0gJXNcbiIsIG5hbWUpOworICAgICAgICAgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiIyBjbGVhbnVwWzJdICVVXG4iLCBrZXkpOwogICAgICAgICAgICAgX1B5TW9kdWxlX0NsZWFyKHZhbHVlKTsKICAgICAgICAgICAgIFB5RGljdF9TZXRJdGVtKG1vZHVsZXMsIGtleSwgUHlfTm9uZSk7CiAgICAgICAgIH0KQEAgLTU0Nyw3ICs0MjAsNiBAQAogICAgIFB5RGljdF9DbGVhcihtb2R1bGVzKTsKICAgICBpbnRlcnAtPm1vZHVsZXMgPSBOVUxMOwogICAgIFB5X0RFQ1JFRihtb2R1bGVzKTsKLSAgICBQeV9DTEVBUihpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nKTsKIH0KIAogCkBAIC01NTYsMjUgKzQyOCwzNiBAQAogbG9uZwogUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIodm9pZCkKIHsKLSAgICByZXR1cm4gcHljX21hZ2ljOworICAgIGxvbmcgcmVzOworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HZXQoKS0+aW50ZXJwOworICAgIFB5T2JqZWN0ICpweWNfbWFnaWMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGludGVycC0+aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfUkFXX01BR0lDX05VTUJFUiIpOworICAgIGlmIChweWNfbWFnaWMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJlcyA9IFB5TG9uZ19Bc0xvbmcocHljX21hZ2ljKTsKKyAgICBQeV9ERUNSRUYocHljX21hZ2ljKTsKKyAgICByZXR1cm4gcmVzOwogfQogCiAKK2V4dGVybiBjb25zdCBjaGFyICogX1B5U3lzX0ltcGxDYWNoZVRhZzsKKwogY29uc3QgY2hhciAqCiBQeUltcG9ydF9HZXRNYWdpY1RhZyh2b2lkKQogewotICAgIHJldHVybiBweWNfdGFnOworICAgIHJldHVybiBfUHlTeXNfSW1wbENhY2hlVGFnOwogfQogCisKIC8qIE1hZ2ljIGZvciBleHRlbnNpb24gbW9kdWxlcyAoYnVpbHQtaW4gYXMgd2VsbCBhcyBkeW5hbWljYWxseQogICAgbG9hZGVkKS4gIFRvIHByZXZlbnQgaW5pdGlhbGl6aW5nIGFuIGV4dGVuc2lvbiBtb2R1bGUgbW9yZSB0aGFuCiAgICBvbmNlLCB3ZSBrZWVwIGEgc3RhdGljIGRpY3Rpb25hcnkgJ2V4dGVuc2lvbnMnIGtleWVkIGJ5IG1vZHVsZSBuYW1lCiAgICAoZm9yIGJ1aWx0LWluIG1vZHVsZXMpIG9yIGJ5IGZpbGVuYW1lIChmb3IgZHluYW1pY2FsbHkgbG9hZGVkCiAgICBtb2R1bGVzKSwgY29udGFpbmluZyB0aGVzZSBtb2R1bGVzLiAgQSBjb3B5IG9mIHRoZSBtb2R1bGUncwotICAgZGljdGlvbmFyeSBpcyBzdG9yZWQgYnkgY2FsbGluZyBfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25Vbmljb2RlKCkKKyAgIGRpY3Rpb25hcnkgaXMgc3RvcmVkIGJ5IGNhbGxpbmcgX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KCkKICAgIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gc3VjY2VlZHMuICBBCiAgICBjb3B5IGNhbiBiZSByZXRyaWV2ZWQgZnJvbSB0aGVyZSBieSBjYWxsaW5nCi0gICBfUHlJbXBvcnRfRmluZEV4dGVuc2lvblVuaWNvZGUoKS4KKyAgIF9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uT2JqZWN0KCkuCiAKICAgIE1vZHVsZXMgd2hpY2ggZG8gc3VwcG9ydCBtdWx0aXBsZSBpbml0aWFsaXphdGlvbiBzZXQgdGhlaXIgbV9zaXplCiAgICBmaWVsZCB0byBhIG5vbi1uZWdhdGl2ZSBudW1iZXIgKGluZGljYXRpbmcgdGhlIHNpemUgb2YgdGhlCkBAIC01ODMsNyArNDY2LDggQEAKICovCiAKIGludAotX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uVW5pY29kZShQeU9iamVjdCAqbW9kLCBjaGFyICpuYW1lLCBQeU9iamVjdCAqZmlsZW5hbWUpCitfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QoUHlPYmplY3QgKm1vZCwgUHlPYmplY3QgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZpbGVuYW1lKQogewogICAgIFB5T2JqZWN0ICptb2R1bGVzLCAqZGljdDsKICAgICBzdHJ1Y3QgUHlNb2R1bGVEZWYgKmRlZjsKQEAgLTYwMiwxMCArNDg2LDEwIEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSwgbW9kKSA8IDApCisgICAgaWYgKFB5RGljdF9TZXRJdGVtKG1vZHVsZXMsIG5hbWUsIG1vZCkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKF9QeVN0YXRlX0FkZE1vZHVsZShtb2QsIGRlZikgPCAwKSB7Ci0gICAgICAgIFB5RGljdF9EZWxJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUpOworICAgICAgICBQeURpY3RfRGVsSXRlbShtb2R1bGVzLCBuYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAoZGVmLT5tX3NpemUgPT0gLTEpIHsKQEAgLTYzMSwxNyArNTE1LDE3IEBACiBfUHlJbXBvcnRfRml4dXBCdWlsdGluKFB5T2JqZWN0ICptb2QsIGNoYXIgKm5hbWUpCiB7CiAgICAgaW50IHJlczsKLSAgICBQeU9iamVjdCAqZmlsZW5hbWU7Ci0gICAgZmlsZW5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKLSAgICBpZiAoZmlsZW5hbWUgPT0gTlVMTCkKKyAgICBQeU9iamVjdCAqbmFtZW9iajsKKyAgICBuYW1lb2JqID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcobmFtZSk7CisgICAgaWYgKG5hbWVvYmogPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJlcyA9IF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvblVuaWNvZGUobW9kLCBuYW1lLCBmaWxlbmFtZSk7Ci0gICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKKyAgICByZXMgPSBfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QobW9kLCBuYW1lb2JqLCBuYW1lb2JqKTsKKyAgICBQeV9ERUNSRUYobmFtZW9iaik7CiAgICAgcmV0dXJuIHJlczsKIH0KIAogUHlPYmplY3QgKgotX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25Vbmljb2RlKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpmaWxlbmFtZSkKK19QeUltcG9ydF9GaW5kRXh0ZW5zaW9uT2JqZWN0KFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqZmlsZW5hbWUpCiB7CiAgICAgUHlPYmplY3QgKm1vZCwgKm1kaWN0OwogICAgIFB5TW9kdWxlRGVmKiBkZWY7CkBAIC02NTQsNyArNTM4LDcgQEAKICAgICAgICAgLyogTW9kdWxlIGRvZXMgbm90IHN1cHBvcnQgcmVwZWF0ZWQgaW5pdGlhbGl6YXRpb24gKi8KICAgICAgICAgaWYgKGRlZi0+bV9iYXNlLm1fY29weSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIG1vZCA9IFB5SW1wb3J0X0FkZE1vZHVsZShuYW1lKTsKKyAgICAgICAgbW9kID0gUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KG5hbWUpOwogICAgICAgICBpZiAobW9kID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgbWRpY3QgPSBQeU1vZHVsZV9HZXREaWN0KG1vZCk7CkBAIC02NjksMzAgKzU1MywzMCBAQAogICAgICAgICBtb2QgPSBkZWYtPm1fYmFzZS5tX2luaXQoKTsKICAgICAgICAgaWYgKG1vZCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKSwgbmFtZSwgbW9kKTsKKyAgICAgICAgUHlEaWN0X1NldEl0ZW0oUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpLCBuYW1lLCBtb2QpOwogICAgICAgICBQeV9ERUNSRUYobW9kKTsKICAgICB9CiAgICAgaWYgKF9QeVN0YXRlX0FkZE1vZHVsZShtb2QsIGRlZikgPCAwKSB7Ci0gICAgICAgIFB5RGljdF9EZWxJdGVtU3RyaW5nKFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKSwgbmFtZSk7CisgICAgICAgIFB5RGljdF9EZWxJdGVtKFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKSwgbmFtZSk7CiAgICAgICAgIFB5X0RFQ1JFRihtb2QpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCAlcyAjIHByZXZpb3VzbHkgbG9hZGVkICglVSlcbiIsCisgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiaW1wb3J0ICVVICMgcHJldmlvdXNseSBsb2FkZWQgKCVSKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgZmlsZW5hbWUpOwogICAgIHJldHVybiBtb2Q7CiAKIH0KIAogUHlPYmplY3QgKgotX1B5SW1wb3J0X0ZpbmRCdWlsdGluKGNoYXIgKm5hbWUpCitfUHlJbXBvcnRfRmluZEJ1aWx0aW4oY29uc3QgY2hhciAqbmFtZSkKIHsKLSAgICBQeU9iamVjdCAqcmVzLCAqZmlsZW5hbWU7Ci0gICAgZmlsZW5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKLSAgICBpZiAoZmlsZW5hbWUgPT0gTlVMTCkKKyAgICBQeU9iamVjdCAqcmVzLCAqbmFtZW9iajsKKyAgICBuYW1lb2JqID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcobmFtZSk7CisgICAgaWYgKG5hbWVvYmogPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzID0gX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25Vbmljb2RlKG5hbWUsIGZpbGVuYW1lKTsKLSAgICBQeV9ERUNSRUYoZmlsZW5hbWUpOworICAgIHJlcyA9IF9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uT2JqZWN0KG5hbWVvYmosIG5hbWVvYmopOworICAgIFB5X0RFQ1JFRihuYW1lb2JqKTsKICAgICByZXR1cm4gcmVzOwogfQogCkBAIC03MDMsMTggKzU4NywxOCBAQAogICAgJ05FVycgUkVGRVJFTkNFISAqLwogCiBQeU9iamVjdCAqCi1QeUltcG9ydF9BZGRNb2R1bGUoY29uc3QgY2hhciAqbmFtZSkKK1B5SW1wb3J0X0FkZE1vZHVsZU9iamVjdChQeU9iamVjdCAqbmFtZSkKIHsKICAgICBQeU9iamVjdCAqbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKICAgICBQeU9iamVjdCAqbTsKIAotICAgIGlmICgobSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUpKSAhPSBOVUxMICYmCisgICAgaWYgKChtID0gUHlEaWN0X0dldEl0ZW0obW9kdWxlcywgbmFtZSkpICE9IE5VTEwgJiYKICAgICAgICAgUHlNb2R1bGVfQ2hlY2sobSkpCiAgICAgICAgIHJldHVybiBtOwotICAgIG0gPSBQeU1vZHVsZV9OZXcobmFtZSk7CisgICAgbSA9IFB5TW9kdWxlX05ld09iamVjdChuYW1lKTsKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSwgbSkgIT0gMCkgeworICAgIGlmIChQeURpY3RfU2V0SXRlbShtb2R1bGVzLCBuYW1lLCBtKSAhPSAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNzIzLDIyICs2MDcsMzEgQEAKICAgICByZXR1cm4gbTsKIH0KIAorUHlPYmplY3QgKgorUHlJbXBvcnRfQWRkTW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgUHlPYmplY3QgKm5hbWVvYmosICptb2R1bGU7CisgICAgbmFtZW9iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOworICAgIGlmIChuYW1lb2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG1vZHVsZSA9IFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdChuYW1lb2JqKTsKKyAgICBQeV9ERUNSRUYobmFtZW9iaik7CisgICAgcmV0dXJuIG1vZHVsZTsKK30KKworCiAvKiBSZW1vdmUgbmFtZSBmcm9tIHN5cy5tb2R1bGVzLCBpZiBpdCdzIHRoZXJlLiAqLwogc3RhdGljIHZvaWQKLXJlbW92ZV9tb2R1bGUoY29uc3QgY2hhciAqbmFtZSkKK3JlbW92ZV9tb2R1bGUoUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgUHlPYmplY3QgKm1vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7Ci0gICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUpID09IE5VTEwpCisgICAgaWYgKFB5RGljdF9HZXRJdGVtKG1vZHVsZXMsIG5hbWUpID09IE5VTEwpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoUHlEaWN0X0RlbEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSkgPCAwKQorICAgIGlmIChQeURpY3RfRGVsSXRlbShtb2R1bGVzLCBuYW1lKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImltcG9ydDogIGRlbGV0aW5nIGV4aXN0aW5nIGtleSBpbiIKICAgICAgICAgICAgICAgICAgICAgICAic3lzLm1vZHVsZXMgZmFpbGVkIik7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqIGdldF9zb3VyY2VmaWxlKGNoYXIgKmZpbGUpOwotc3RhdGljIGNoYXIgKm1ha2Vfc291cmNlX3BhdGhuYW1lKGNoYXIgKnBhdGhuYW1lLCBjaGFyICpidWYpOwotc3RhdGljIGNoYXIgKm1ha2VfY29tcGlsZWRfcGF0aG5hbWUoY2hhciAqcGF0aG5hbWUsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZWJ1Zyk7CiAKIC8qIEV4ZWN1dGUgYSBjb2RlIG9iamVjdCBpbiBhIG1vZHVsZSBhbmQgcmV0dXJuIHRoZSBtb2R1bGUgb2JqZWN0CiAgKiBXSVRIIElOQ1JFTUVOVEVEIFJFRkVSRU5DRSBDT1VOVC4gIElmIGFuIGVycm9yIG9jY3VycywgbmFtZSBpcwpAQCAtNzY4LDEwICs2NjEsNjAgQEAKIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcyhjaGFyICpuYW1lLCBQeU9iamVjdCAqY28sIGNoYXIgKnBhdGhuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNwYXRobmFtZSkKIHsKKyAgICBQeU9iamVjdCAqbSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWVvYmosICpwYXRob2JqID0gTlVMTCwgKmNwYXRob2JqID0gTlVMTDsKKworICAgIG5hbWVvYmogPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKKyAgICBpZiAobmFtZW9iaiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChjcGF0aG5hbWUgIT0gTlVMTCkgeworICAgICAgICBjcGF0aG9iaiA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoY3BhdGhuYW1lKTsKKyAgICAgICAgaWYgKGNwYXRob2JqID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIGNwYXRob2JqID0gTlVMTDsKKworICAgIGlmIChwYXRobmFtZSAhPSBOVUxMKSB7CisgICAgICAgIHBhdGhvYmogPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KHBhdGhuYW1lKTsKKyAgICAgICAgaWYgKHBhdGhvYmogPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGVsc2UgaWYgKGNwYXRob2JqICE9IE5VTEwpIHsKKyAgICAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9nZXRfc291cmNlZmlsZSk7CisKKyAgICAgICAgaWYgKGludGVycCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXM6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIGludGVycHJldGVyISIpOworICAgICAgICB9CisKKyAgICAgICAgcGF0aG9iaiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kT2JqSWRBcmdzKGludGVycC0+aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX2dldF9zb3VyY2VmaWxlLCBjcGF0aG9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICBpZiAocGF0aG9iaiA9PSBOVUxMKQorICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBwYXRob2JqID0gTlVMTDsKKworICAgIG0gPSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdChuYW1lb2JqLCBjbywgcGF0aG9iaiwgY3BhdGhvYmopOworZXJyb3I6CisgICAgUHlfREVDUkVGKG5hbWVvYmopOworICAgIFB5X1hERUNSRUYocGF0aG9iaik7CisgICAgUHlfWERFQ1JFRihjcGF0aG9iaik7CisgICAgcmV0dXJuIG07Cit9CisKK1B5T2JqZWN0KgorUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3QoUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpjbywgUHlPYmplY3QgKnBhdGhuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNwYXRobmFtZSkKK3sKICAgICBQeU9iamVjdCAqbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKICAgICBQeU9iamVjdCAqbSwgKmQsICp2OwogCi0gICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZShuYW1lKTsKKyAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KG5hbWUpOwogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIC8qIElmIHRoZSBtb2R1bGUgaXMgYmVpbmcgcmVsb2FkZWQsIHdlIGdldCB0aGUgb2xkIG1vZHVsZSBiYWNrCkBAIC03ODIsNDMgKzcyNSwzMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEJ1aWx0aW5zKCkpICE9IDApCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICAvKiBSZW1lbWJlciB0aGUgZmlsZW5hbWUgYXMgdGhlIF9fZmlsZV9fIGF0dHJpYnV0ZSAqLwotICAgIHYgPSBOVUxMOwogICAgIGlmIChwYXRobmFtZSAhPSBOVUxMKSB7Ci0gICAgICAgIHYgPSBnZXRfc291cmNlZmlsZShwYXRobmFtZSk7Ci0gICAgICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB2ID0gcGF0aG5hbWU7CiAgICAgfQotICAgIGlmICh2ID09IE5VTEwpIHsKKyAgICBlbHNlIHsKICAgICAgICAgdiA9ICgoUHlDb2RlT2JqZWN0ICopY28pLT5jb19maWxlbmFtZTsKLSAgICAgICAgUHlfSU5DUkVGKHYpOwogICAgIH0KKyAgICBQeV9JTkNSRUYodik7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2ZpbGVfXyIsIHYpICE9IDApCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7IC8qIE5vdCBpbXBvcnRhbnQgZW5vdWdoIHRvIHJlcG9ydCAqLwogICAgIFB5X0RFQ1JFRih2KTsKIAogICAgIC8qIFJlbWVtYmVyIHRoZSBweWMgcGF0aCBuYW1lIGFzIHRoZSBfX2NhY2hlZF9fIGF0dHJpYnV0ZS4gKi8KLSAgICBpZiAoY3BhdGhuYW1lID09IE5VTEwpIHsKKyAgICBpZiAoY3BhdGhuYW1lICE9IE5VTEwpCisgICAgICAgIHYgPSBjcGF0aG5hbWU7CisgICAgZWxzZQogICAgICAgICB2ID0gUHlfTm9uZTsKLSAgICAgICAgUHlfSU5DUkVGKHYpOwotICAgIH0KLSAgICBlbHNlIGlmICgodiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGNwYXRobmFtZSkpID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsgLyogTm90IGltcG9ydGFudCBlbm91Z2ggdG8gcmVwb3J0ICovCi0gICAgICAgIHYgPSBQeV9Ob25lOwotICAgICAgICBQeV9JTkNSRUYodik7Ci0gICAgfQogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19jYWNoZWRfXyIsIHYpICE9IDApCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7IC8qIE5vdCBpbXBvcnRhbnQgZW5vdWdoIHRvIHJlcG9ydCAqLwotICAgIFB5X0RFQ1JFRih2KTsKIAogICAgIHYgPSBQeUV2YWxfRXZhbENvZGUoY28sIGQsIGQpOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgUHlfREVDUkVGKHYpOwogCi0gICAgaWYgKChtID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSkpID09IE5VTEwpIHsKKyAgICBpZiAoKG0gPSBQeURpY3RfR2V0SXRlbShtb2R1bGVzLCBuYW1lKSkgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiTG9hZGVkIG1vZHVsZSAlLjIwMHMgbm90IGZvdW5kIGluIHN5cy5tb2R1bGVzIiwKKyAgICAgICAgICAgICAgICAgICAgICJMb2FkZWQgbW9kdWxlICVSIG5vdCBmb3VuZCBpbiBzeXMubW9kdWxlcyIsCiAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtODMzLDQxNSArNzY2LDYgQEAKIH0KIAogCi0vKiBMaWtlIHN0cnJjaHIoc3RyaW5nLCAnLycpIGJ1dCBzZWFyY2hlcyBmb3IgdGhlIHJpZ2h0bW9zdCBvZiBlaXRoZXIgU0VQCi0gICBvciBBTFRTRVAsIGlmIHRoZSBsYXR0ZXIgaXMgZGVmaW5lZC4KLSovCi1zdGF0aWMgY2hhciAqCi1yaWdodG1vc3Rfc2VwKGNoYXIgKnMpCi17Ci0gICAgY2hhciAqZm91bmQsIGM7Ci0gICAgZm9yIChmb3VuZCA9IE5VTEw7IChjID0gKnMpOyBzKyspIHsKLSAgICAgICAgaWYgKGMgPT0gU0VQCi0jaWZkZWYgQUxUU0VQCi0gICAgICAgICAgICB8fCBjID09IEFMVFNFUAotI2VuZGlmCi0gICAgICAgICAgICApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvdW5kID0gczsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZm91bmQ7Ci19Ci0KLQotLyogR2l2ZW4gYSBwYXRobmFtZSBmb3IgYSBQeXRob24gc291cmNlIGZpbGUsIGZpbGwgYSBidWZmZXIgd2l0aCB0aGUKLSAgIHBhdGhuYW1lIGZvciB0aGUgY29ycmVzcG9uZGluZyBjb21waWxlZCBmaWxlLiAgUmV0dXJuIHRoZSBwYXRobmFtZQotICAgZm9yIHRoZSBjb21waWxlZCBmaWxlLCBvciBOVUxMIGlmIHRoZXJlJ3Mgbm8gc3BhY2UgaW4gdGhlIGJ1ZmZlci4KLSAgIERvZXNuJ3Qgc2V0IGFuIGV4Y2VwdGlvbi4gKi8KLQotc3RhdGljIGNoYXIgKgotbWFrZV9jb21waWxlZF9wYXRobmFtZShjaGFyICpwYXRobmFtZSwgY2hhciAqYnVmLCBzaXplX3QgYnVmbGVuLCBpbnQgZGVidWcpCi17Ci0gICAgLyogZm9vLnB5IC0+IF9fcHljYWNoZV9fL2Zvby48dGFnPi5weWMgKi8KLSAgICBzaXplX3QgbGVuID0gc3RybGVuKHBhdGhuYW1lKTsKLSAgICBzaXplX3QgaSwgc2F2ZTsKLSAgICBjaGFyICpwb3M7Ci0gICAgaW50IHNlcCA9IFNFUDsKLQotICAgIC8qIFNhbml0eSBjaGVjayB0aGF0IHRoZSBidWZmZXIgaGFzIHJvdWdobHkgZW5vdWdoIHNwYWNlIHRvIGhvbGQgd2hhdAotICAgICAgIHdpbGwgZXZlbnR1YWxseSBiZSB0aGUgZnVsbCBwYXRoIHRvIHRoZSBjb21waWxlZCBmaWxlLiAgVGhlIDUgZXh0cmEKLSAgICAgICBieXRlcyBpbmNsdWRlIHRoZSBzbGFzaCBhZmVyIF9fcHljYWNoZV9fLCB0aGUgdHdvIGV4dHJhIGRvdHMsIHRoZQotICAgICAgIGV4dHJhIHRyYWlsaW5nIGNoYXJhY3RlciAoJ2MnIG9yICdvJykgYW5kIG51bGwuICBUaGlzIGlzbid0IGV4YWN0Ci0gICAgICAgYmVjYXVzZSB0aGUgY29udGVudHMgb2YgdGhlIGJ1ZmZlciBjYW4gYWZmZWN0IGhvdyBtYW55IGFjdHVhbAotICAgICAgIGNoYXJhY3RlcnMgb2YgdGhlIHN0cmluZyBnZXQgaW50byB0aGUgYnVmZmVyLiAgV2UnbGwgZG8gYSBmaW5hbAotICAgICAgIHNhbml0eSBjaGVjayBiZWZvcmUgd3JpdGluZyB0aGUgZXh0ZW5zaW9uIHRvIGVuc3VyZSB3ZSBkbyBub3QKLSAgICAgICBvdmVyZmxvdyB0aGUgYnVmZmVyLgotICAgICovCi0gICAgaWYgKGxlbiArIHN0cmxlbihDQUNIRURJUikgKyBzdHJsZW4ocHljX3RhZykgKyA1ID4gYnVmbGVuKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIEZpbmQgdGhlIGxhc3QgcGF0aCBzZXBhcmF0b3IgYW5kIGNvcHkgZXZlcnl0aGluZyBmcm9tIHRoZSBzdGFydCBvZgotICAgICAgIHRoZSBzb3VyY2Ugc3RyaW5nIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlIHNlcGFyYXRvci4KLSAgICAqLwotICAgIGlmICgocG9zID0gcmlnaHRtb3N0X3NlcChwYXRobmFtZSkpID09IE5VTEwpIHsKLSAgICAgICAgaSA9IDA7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBzZXAgPSAqcG9zOwotICAgICAgICBpID0gcG9zIC0gcGF0aG5hbWUgKyAxOwotICAgICAgICBzdHJuY3B5KGJ1ZiwgcGF0aG5hbWUsIGkpOwotICAgIH0KLQotICAgIHNhdmUgPSBpOwotICAgIGJ1ZltpKytdID0gJ1wwJzsKLSAgICAvKiBBZGQgX19weWNhY2hlX18vICovCi0gICAgc3RyY2F0KGJ1ZiwgQ0FDSEVESVIpOwotICAgIGkgKz0gc3RybGVuKENBQ0hFRElSKSAtIDE7Ci0gICAgYnVmW2krK10gPSBzZXA7Ci0gICAgYnVmW2krK10gPSAnXDAnOwotICAgIC8qIEFkZCB0aGUgYmFzZSBmaWxlbmFtZSwgYnV0IHJlbW92ZSB0aGUgLnB5IG9yIC5weXcgZXh0ZW5zaW9uLCBzaW5jZQotICAgICAgIHRoZSB0YWcgbmFtZSBtdXN0IGdvIGJlZm9yZSB0aGUgZXh0ZW5zaW9uLgotICAgICovCi0gICAgc3RyY2F0KGJ1ZiwgcGF0aG5hbWUgKyBzYXZlKTsKLSAgICBpZiAoKHBvcyA9IHN0cnJjaHIoYnVmLCAnLicpKSAhPSBOVUxMKQotICAgICAgICAqKytwb3MgPSAnXDAnOwotICAgIHN0cmNhdChidWYsIHB5Y190YWcpOwotICAgIC8qIFRoZSBsZW5ndGggdGVzdCBhYm92ZSBhc3N1bWVzIHRoYXQgd2UncmUgb25seSBhZGRpbmcgb25lIGNoYXJhY3RlcgotICAgICAgIHRvIHRoZSBlbmQgb2Ygd2hhdCB3b3VsZCBub3JtYWxseSBiZSB0aGUgZXh0ZW5zaW9uLiAgV2hhdCBpZiB0aGVyZQotICAgICAgIGlzIG5vIGV4dGVuc2lvbiwgb3IgdGhlIHN0cmluZyBlbmRzIGluICcuJyBvciAnLnAnLCBhbmQgb3RoZXJ3aXNlCi0gICAgICAgZmlsbHMgdGhlIGJ1ZmZlcj8gIEJ5IGFwcGVuZGluZyA0IG1vcmUgY2hhcmFjdGVycyBvbnRvIHRoZSBzdHJpbmcKLSAgICAgICBoZXJlLCB3ZSBjb3VsZCBvdmVycnVuIHRoZSBidWZmZXIuCi0KLSAgICAgICBBcyBhIHNpbXBsZSBleGFtcGxlLCBsZXQncyBzYXkgYnVmbGVuPTMyIGFuZCB0aGUgaW5wdXQgc3RyaW5nIGlzCi0gICAgICAgJ3h4eC5weScuICBzdHJsZW4oKSB3b3VsZCBiZSA2IGFuZCB0aGUgdGVzdCBhYm92ZSB3b3VsZCB5aWVsZDoKLQotICAgICAgICg2ICsgMTEgKyAxMCArIDUgPT0gMzIpID4gMzIKLQotICAgICAgIHdoaWNoIGlzIGZhbHNlIGFuZCBzbyB0aGUgbmFtZSBtYW5nbGluZyB3b3VsZCBjb250aW51ZS4gIFRoaXMgd291bGQKLSAgICAgICBiZSBmaW5lIGJlY2F1c2Ugd2UnZCBlbmQgdXAgd2l0aCB0aGlzIHN0cmluZyBpbiBidWY6Ci0KLSAgICAgICBfX3B5Y2FjaGVfXy94eHguY3B5dGhvbi0zMi5weWNcMAotCi0gICAgICAgc3RybGVuKG9mIHRoYXQpID09IDMwICsgdGhlIG51bCBmaXRzIGluc2lkZSBhIDMyIGNoYXJhY3RlciBidWZmZXIuCi0gICAgICAgV2UgY2FuIGV2ZW4gaGFuZGxlIGFuIGlucHV0IHN0cmluZyBvZiBzYXkgJ3h4eHh4JyBhYm92ZSBiZWNhdXNlCi0gICAgICAgdGhhdCdzICg1ICsgMTEgKyAxMCArIDUgPT0gMzEpID4gMzIgd2hpY2ggaXMgYWxzbyBmYWxzZS4gIE5hbWUKLSAgICAgICBtYW5nbGluZyB0aGF0IHlpZWxkczoKLQotICAgICAgIF9fcHljYWNoZV9fL3h4eHh4Y3B5dGhvbi0zMi5weWNcMAotCi0gICAgICAgd2hpY2ggaXMgMzIgY2hhcmFjdGVycyBpbmNsdWRpbmcgdGhlIG51bCwgYW5kIHRodXMgZml0cyBpbiB0aGUKLSAgICAgICBidWZmZXIuIEhvd2V2ZXIsIGFuIGlucHV0IHN0cmluZyBvZiAneHh4eHh4JyB3b3VsZCB5aWVsZCBhIHJlc3VsdAotICAgICAgIHN0cmluZyBvZjoKLQotICAgICAgIF9fcHljYWNoZV9fL3h4eHh4eGNweXRob24tMzIucHljXDAKLQotICAgICAgIHdoaWNoIGlzIDMzIGNoYXJhY3RlcnMgbG9uZyAoaW5jbHVkaW5nIHRoZSBudWwpLCB0aHVzIG92ZXJmbG93aW5nCi0gICAgICAgdGhlIGJ1ZmZlciwgZXZlbiB0aG91Z2ggdGhlIGZpcnN0IHRlc3Qgd291bGQgZmFpbCwgaS5lLjogdGhlIGlucHV0Ci0gICAgICAgc3RyaW5nIGlzIGFsc28gNiBjaGFyYWN0ZXJzIGxvbmcsIHNvIDMyID4gMzIgaXMgZmFsc2UuCi0KLSAgICAgICBUaGUgcmVhc29uIHRoZSBmaXJzdCB0ZXN0IGZhaWxzIGJ1dCB3ZSBzdGlsbCBvdmVyZmxvdyB0aGUgYnVmZmVyIGlzCi0gICAgICAgdGhhdCB0aGUgdGVzdCBhYm92ZSBvbmx5IGV4cGVjdHMgdG8gYWRkIG9uZSBleHRyYSBjaGFyYWN0ZXIgdG8gYmUKLSAgICAgICBhZGRlZCB0byB0aGUgZXh0ZW5zaW9uLCBhbmQgaGVyZSB3ZSdyZSBhZGRpbmcgdGhyZWUgKHB5YykuICBXZQotICAgICAgIGRvbid0IGFkZCB0aGUgZmlyc3QgZG90LCBzbyB0aGF0IHJlY2xhaW1zIG9uZSBvZiBleHBlY3RlZAotICAgICAgIHBvc2l0aW9ucywgbGVhdmluZyB1cyBvdmVyZmxvd2luZyBieSAxIGJ5dGUgKDMgZXh0cmEgLSAxIHJlY2xhaW1lZAotICAgICAgIGRvdCAtIDEgZXhwZWN0ZWQgZXh0cmEgPT0gMSBvdmVyZmxvd2VkKS4KLQotICAgICAgIFRoZSBiZXN0IHdlIGNhbiBkbyBpcyBlbnN1cmUgdGhhdCB3ZSBzdGlsbCBoYXZlIGVub3VnaCByb29tIGluIHRoZQotICAgICAgIHRhcmdldCBidWZmZXIgYmVmb3JlIHdlIHdyaXRlIHRoZSBleHRlbnNpb24uICBCZWNhdXNlIGl0J3MgYWx3YXlzCi0gICAgICAgb25seSB0aGUgZXh0ZW5zaW9uIHRoYXQgY2FuIGNhdXNlIHRoZSBvdmVyZmxvdywgYW5kIG5ldmVyIHRoZSBvdGhlcgotICAgICAgIHBhdGggYnl0ZXMgd2UndmUgd3JpdHRlbiwgaXQncyBzdWZmaWNpZW50IHRvIGp1c3QgZG8gb25lIG1vcmUgdGVzdAotICAgICAgIGhlcmUuICBTdGlsbCwgdGhlIGFzc2VydGlvbiB0aGF0IGZvbGxvd3MgY2FuJ3QgaHVydC4KLSAgICAqLwotI2lmIDAKLSAgICBwcmludGYoInN0cmxlbihidWYpOiAlZDsgYnVmbGVuOiAlZFxuIiwgKGludClzdHJsZW4oYnVmKSwgKGludClidWZsZW4pOwotI2VuZGlmCi0gICAgaWYgKHN0cmxlbihidWYpICsgNSA+IGJ1ZmxlbikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc3RyY2F0KGJ1ZiwgZGVidWcgPyAiLnB5YyIgOiAiLnB5byIpOwotICAgIGFzc2VydChzdHJsZW4oYnVmKSA8IGJ1Zmxlbik7Ci0gICAgcmV0dXJuIGJ1ZjsKLX0KLQotCi0vKiBHaXZlbiBhIHBhdGhuYW1lIHRvIGEgUHl0aG9uIGJ5dGUgY29tcGlsZWQgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIHRoZQotICAgc291cmNlIGZpbGUsIGlmIHRoZSBwYXRoIG1hdGNoZXMgdGhlIFBFUCAzMTQ3IGZvcm1hdC4gIFRoaXMgZG9lcyBub3QgY2hlY2sKLSAgIGZvciBhbnkgZmlsZSBleGlzdGVuY2UsIGhvd2V2ZXIsIGlmIHRoZSBweWMgZmlsZSBuYW1lIGRvZXMgbm90IG1hdGNoIFBFUAotICAgMzE0NyBzdHlsZSwgTlVMTCBpcyByZXR1cm5lZC4gIGJ1ZiBtdXN0IGJlIGF0IGxlYXN0IGFzIGJpZyBhcyBwYXRobmFtZTsKLSAgIHRoZSByZXN1bHRpbmcgcGF0aCB3aWxsIGFsd2F5cyBiZSBzaG9ydGVyLiAqLwotCi1zdGF0aWMgY2hhciAqCi1tYWtlX3NvdXJjZV9wYXRobmFtZShjaGFyICpwYXRobmFtZSwgY2hhciAqYnVmKQotewotICAgIC8qIF9fcHljYWNoZV9fL2Zvby48dGFnPi5weWMgLT4gZm9vLnB5ICovCi0gICAgc2l6ZV90IGksIGo7Ci0gICAgY2hhciAqbGVmdCwgKnJpZ2h0LCAqZG90MCwgKmRvdDEsIHNlcDsKLQotICAgIC8qIExvb2sgYmFjayB0d28gc2xhc2hlcyBmcm9tIHRoZSBlbmQuICBJbiBiZXR3ZWVuIHRoZXNlIHR3byBzbGFzaGVzCi0gICAgICAgbXVzdCBiZSB0aGUgc3RyaW5nIF9fcHljYWNoZV9fIG9yIHRoaXMgaXMgbm90IGEgUEVQIDMxNDcgc3R5bGUKLSAgICAgICBwYXRoLiAgSXQncyBwb3NzaWJsZSBmb3IgdGhlcmUgdG8gYmUgb25seSBvbmUgc2xhc2guCi0gICAgKi8KLSAgICBpZiAoKHJpZ2h0ID0gcmlnaHRtb3N0X3NlcChwYXRobmFtZSkpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHNlcCA9ICpyaWdodDsKLSAgICAqcmlnaHQgPSAnXDAnOwotICAgIGxlZnQgPSByaWdodG1vc3Rfc2VwKHBhdGhuYW1lKTsKLSAgICAqcmlnaHQgPSBzZXA7Ci0gICAgaWYgKGxlZnQgPT0gTlVMTCkKLSAgICAgICAgbGVmdCA9IHBhdGhuYW1lOwotICAgIGVsc2UKLSAgICAgICAgbGVmdCsrOwotICAgIGlmIChyaWdodC1sZWZ0ICE9IHN0cmxlbihDQUNIRURJUikgfHwKLSAgICAgICAgc3RybmNtcChsZWZ0LCBDQUNIRURJUiwgcmlnaHQtbGVmdCkgIT0gMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiBOb3cgdmVyaWZ5IHRoYXQgdGhlIHBhdGggY29tcG9uZW50IHRvIHRoZSByaWdodCBvZiB0aGUgbGFzdCBzbGFzaAotICAgICAgIGhhcyB0d28gZG90cyBpbiBpdC4KLSAgICAqLwotICAgIGlmICgoZG90MCA9IHN0cmNocihyaWdodCArIDEsICcuJykpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICgoZG90MSA9IHN0cmNocihkb3QwICsgMSwgJy4nKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgLyogVG9vIG1hbnkgZG90cz8gKi8KLSAgICBpZiAoc3RyY2hyKGRvdDEgKyAxLCAnLicpICE9IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogVGhpcyBpcyBhIFBFUCAzMTQ3IHBhdGguICBTdGFydCBieSBjb3B5aW5nIGV2ZXJ5dGhpbmcgZnJvbSB0aGUKLSAgICAgICBzdGFydCBvZiBwYXRobmFtZSB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZSBsZWZ0bW9zdCBzbGFzaC4gIFRoZW4KLSAgICAgICBjb3B5IHRoZSBmaWxlJ3MgYmFzZW5hbWUsIHJlbW92aW5nIHRoZSBtYWdpYyB0YWcgYW5kIGFkZGluZyBhIC5weQotICAgICAgIHN1ZmZpeC4KLSAgICAqLwotICAgIHN0cm5jcHkoYnVmLCBwYXRobmFtZSwgKGk9bGVmdC1wYXRobmFtZSkpOwotICAgIHN0cm5jcHkoYnVmK2ksIHJpZ2h0KzEsIChqPWRvdDAtcmlnaHQpKTsKLSAgICBzdHJjcHkoYnVmK2kraiwgInB5Iik7Ci0gICAgcmV0dXJuIGJ1ZjsKLX0KLQotLyogR2l2ZW4gYSBwYXRobmFtZSBmb3IgYSBQeXRob24gc291cmNlIGZpbGUsIGl0cyB0aW1lIG9mIGxhc3QKLSAgIG1vZGlmaWNhdGlvbiwgYW5kIGEgcGF0aG5hbWUgZm9yIGEgY29tcGlsZWQgZmlsZSwgY2hlY2sgd2hldGhlciB0aGUKLSAgIGNvbXBpbGVkIGZpbGUgcmVwcmVzZW50cyB0aGUgc2FtZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UuICBJZiBzbywKLSAgIHJldHVybiBhIEZJTEUgcG9pbnRlciBmb3IgdGhlIGNvbXBpbGVkIGZpbGUsIHBvc2l0aW9uZWQganVzdCBhZnRlcgotICAgdGhlIGhlYWRlcjsgaWYgbm90LCByZXR1cm4gTlVMTC4KLSAgIERvZXNuJ3Qgc2V0IGFuIGV4Y2VwdGlvbi4gKi8KLQotc3RhdGljIEZJTEUgKgotY2hlY2tfY29tcGlsZWRfbW9kdWxlKGNoYXIgKnBhdGhuYW1lLCB0aW1lX3QgbXRpbWUsIGNoYXIgKmNwYXRobmFtZSkKLXsKLSAgICBGSUxFICpmcDsKLSAgICBsb25nIG1hZ2ljOwotICAgIGxvbmcgcHljX210aW1lOwotCi0gICAgZnAgPSBmb3BlbihjcGF0aG5hbWUsICJyYiIpOwotICAgIGlmIChmcCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBtYWdpYyA9IFB5TWFyc2hhbF9SZWFkTG9uZ0Zyb21GaWxlKGZwKTsKLSAgICBpZiAobWFnaWMgIT0gcHljX21hZ2ljKSB7Ci0gICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjICVzIGhhcyBiYWQgbWFnaWNcbiIsIGNwYXRobmFtZSk7Ci0gICAgICAgIGZjbG9zZShmcCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBweWNfbXRpbWUgPSBQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZShmcCk7Ci0gICAgaWYgKHB5Y19tdGltZSAhPSBtdGltZSkgewotICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyAlcyBoYXMgYmFkIG10aW1lXG4iLCBjcGF0aG5hbWUpOwotICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyAlcyBtYXRjaGVzICVzXG4iLCBjcGF0aG5hbWUsIHBhdGhuYW1lKTsKLSAgICByZXR1cm4gZnA7Ci19Ci0KLQotLyogUmVhZCBhIGNvZGUgb2JqZWN0IGZyb20gYSBmaWxlIGFuZCBjaGVjayBpdCBmb3IgdmFsaWRpdHkgKi8KLQotc3RhdGljIFB5Q29kZU9iamVjdCAqCi1yZWFkX2NvbXBpbGVkX21vZHVsZShjaGFyICpjcGF0aG5hbWUsIEZJTEUgKmZwKQotewotICAgIFB5T2JqZWN0ICpjbzsKLQotICAgIGNvID0gUHlNYXJzaGFsX1JlYWRMYXN0T2JqZWN0RnJvbUZpbGUoZnApOwotICAgIGlmIChjbyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5Q29kZV9DaGVjayhjbykpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIk5vbi1jb2RlIG9iamVjdCBpbiAlLjIwMHMiLCBjcGF0aG5hbWUpOwotICAgICAgICBQeV9ERUNSRUYoY28pOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIChQeUNvZGVPYmplY3QgKiljbzsKLX0KLQotCi0vKiBMb2FkIGEgbW9kdWxlIGZyb20gYSBjb21waWxlZCBmaWxlLCBleGVjdXRlIGl0LCBhbmQgcmV0dXJuIGl0cwotICAgbW9kdWxlIG9iamVjdCBXSVRIIElOQ1JFTUVOVEVEIFJFRkVSRU5DRSBDT1VOVCAqLwotCi1zdGF0aWMgUHlPYmplY3QgKgotbG9hZF9jb21waWxlZF9tb2R1bGUoY2hhciAqbmFtZSwgY2hhciAqY3BhdGhuYW1lLCBGSUxFICpmcCkKLXsKLSAgICBsb25nIG1hZ2ljOwotICAgIFB5Q29kZU9iamVjdCAqY287Ci0gICAgUHlPYmplY3QgKm07Ci0KLSAgICBtYWdpYyA9IFB5TWFyc2hhbF9SZWFkTG9uZ0Zyb21GaWxlKGZwKTsKLSAgICBpZiAobWFnaWMgIT0gcHljX21hZ2ljKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJCYWQgbWFnaWMgbnVtYmVyIGluICUuMjAwcyIsIGNwYXRobmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICAodm9pZCkgUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUoZnApOwotICAgIGNvID0gcmVhZF9jb21waWxlZF9tb2R1bGUoY3BhdGhuYW1lLCBmcCk7Ci0gICAgaWYgKGNvID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImltcG9ydCAlcyAjIHByZWNvbXBpbGVkIGZyb20gJXNcbiIsCi0gICAgICAgICAgICBuYW1lLCBjcGF0aG5hbWUpOwotICAgIG0gPSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoCi0gICAgICAgIG5hbWUsIChQeU9iamVjdCAqKWNvLCBjcGF0aG5hbWUsIGNwYXRobmFtZSk7Ci0gICAgUHlfREVDUkVGKGNvKTsKLQotICAgIHJldHVybiBtOwotfQotCi0vKiBQYXJzZSBhIHNvdXJjZSBmaWxlIGFuZCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgY29kZSBvYmplY3QgKi8KLQotc3RhdGljIFB5Q29kZU9iamVjdCAqCi1wYXJzZV9zb3VyY2VfbW9kdWxlKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKLXsKLSAgICBQeUNvZGVPYmplY3QgKmNvID0gTlVMTDsKLSAgICBtb2RfdHkgbW9kOwotICAgIFB5Q29tcGlsZXJGbGFncyBmbGFnczsKLSAgICBQeUFyZW5hICphcmVuYSA9IFB5QXJlbmFfTmV3KCk7Ci0gICAgaWYgKGFyZW5hID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgZmxhZ3MuY2ZfZmxhZ3MgPSAwOwotICAgIG1vZCA9IFB5UGFyc2VyX0FTVEZyb21GaWxlKGZwLCBwYXRobmFtZSwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9maWxlX2lucHV0LCAwLCAwLCAmZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgYXJlbmEpOwotICAgIGlmIChtb2QpIHsKLSAgICAgICAgY28gPSBQeUFTVF9Db21waWxlKG1vZCwgcGF0aG5hbWUsIE5VTEwsIGFyZW5hKTsKLSAgICB9Ci0gICAgUHlBcmVuYV9GcmVlKGFyZW5hKTsKLSAgICByZXR1cm4gY287Ci19Ci0KLQotLyogSGVscGVyIHRvIG9wZW4gYSBieXRlY29kZSBmaWxlIGZvciB3cml0aW5nIGluIGV4Y2x1c2l2ZSBtb2RlICovCi0KLXN0YXRpYyBGSUxFICoKLW9wZW5fZXhjbHVzaXZlKGNoYXIgKmZpbGVuYW1lLCBtb2RlX3QgbW9kZSkKLXsKLSNpZiBkZWZpbmVkKE9fRVhDTCkmJmRlZmluZWQoT19DUkVBVCkmJmRlZmluZWQoT19XUk9OTFkpJiZkZWZpbmVkKE9fVFJVTkMpCi0gICAgLyogVXNlIE9fRVhDTCB0byBhdm9pZCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gYW5vdGhlciBwcm9jZXNzIHRyaWVzIHRvCi0gICAgICAgd3JpdGUgdGhlIHNhbWUgZmlsZS4gIFdoZW4gdGhhdCBoYXBwZW5zLCBvdXIgb3BlbigpIGNhbGwgZmFpbHMsCi0gICAgICAgd2hpY2ggaXMganVzdCBmaW5lIChzaW5jZSBpdCdzIG9ubHkgYSBjYWNoZSkuCi0gICAgICAgWFhYIElmIHRoZSBmaWxlIGV4aXN0cyBhbmQgaXMgd3JpdGFibGUgYnV0IHRoZSBkaXJlY3RvcnkgaXMgbm90Ci0gICAgICAgd3JpdGFibGUsIHRoZSBmaWxlIHdpbGwgbmV2ZXIgYmUgd3JpdHRlbi4gIE9oIHdlbGwuCi0gICAgKi8KLSAgICBpbnQgZmQ7Ci0gICAgKHZvaWQpIHVubGluayhmaWxlbmFtZSk7Ci0gICAgZmQgPSBvcGVuKGZpbGVuYW1lLCBPX0VYQ0x8T19DUkVBVHxPX1dST05MWXxPX1RSVU5DCi0jaWZkZWYgT19CSU5BUlkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8T19CSU5BUlkgICAvKiBuZWNlc3NhcnkgZm9yIFdpbmRvd3MgKi8KLSNlbmRpZgotI2lmZGVmIF9fVk1TCi0gICAgICAgICAgICAsIG1vZGUsICJjdHh0PWJpbiIsICJzaHI9bmlsIgotI2Vsc2UKLSAgICAgICAgICAgICwgbW9kZQotI2VuZGlmCi0gICAgICAgICAgKTsKLSAgICBpZiAoZmQgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gZmRvcGVuKGZkLCAid2IiKTsKLSNlbHNlCi0gICAgLyogQmVzdCB3ZSBjYW4gZG8gLS0gb24gV2luZG93cyB0aGlzIGNhbid0IGhhcHBlbiBhbnl3YXkgKi8KLSAgICByZXR1cm4gZm9wZW4oZmlsZW5hbWUsICJ3YiIpOwotI2VuZGlmCi19Ci0KLQotLyogV3JpdGUgYSBjb21waWxlZCBtb2R1bGUgdG8gYSBmaWxlLCBwbGFjaW5nIHRoZSB0aW1lIG9mIGxhc3QKLSAgIG1vZGlmaWNhdGlvbiBvZiBpdHMgc291cmNlIGludG8gdGhlIGhlYWRlci4KLSAgIEVycm9ycyBhcmUgaWdub3JlZCwgaWYgYSB3cml0ZSBlcnJvciBvY2N1cnMgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvCi0gICByZW1vdmUgdGhlIGZpbGUuICovCi0KLXN0YXRpYyB2b2lkCi13cml0ZV9jb21waWxlZF9tb2R1bGUoUHlDb2RlT2JqZWN0ICpjbywgY2hhciAqY3BhdGhuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3Jjc3RhdCkKLXsKLSAgICBGSUxFICpmcDsKLSAgICBjaGFyICpkaXJwYXRoOwotICAgIHRpbWVfdCBtdGltZSA9IHNyY3N0YXQtPnN0X210aW1lOwotICAgIGludCBzYXZlZDsKLSNpZmRlZiBNU19XSU5ET1dTICAgLyogc2luY2UgV2luZG93cyB1c2VzIGRpZmZlcmVudCBwZXJtaXNzaW9ucyAgKi8KLSAgICBtb2RlX3QgbW9kZSA9IHNyY3N0YXQtPnN0X21vZGUgJiB+U19JRVhFQzsKLSAgICAvKiBJc3N1ZSAjNjA3NDogV2UgZW5zdXJlIHVzZXIgd3JpdGUgYWNjZXNzLCBzbyB3ZSBjYW4gZGVsZXRlIGl0IGxhdGVyCi0gICAgICogd2hlbiB0aGUgc291cmNlIGZpbGUgY2hhbmdlcy4gKE9uIFBPU0lYLCB0aGlzIG9ubHkgcmVxdWlyZXMgd3JpdGUKLSAgICAgKiBhY2Nlc3MgdG8gdGhlIGRpcmVjdG9yeSwgb24gV2luZG93cywgd2UgbmVlZCB3cml0ZSBhY2Nlc3MgdG8gdGhlIGZpbGUKLSAgICAgKiBhcyB3ZWxsKQotICAgICAqLwotICAgIG1vZGUgfD0gX1NfSVdSSVRFOwotI2Vsc2UKLSAgICBtb2RlX3QgbW9kZSA9IHNyY3N0YXQtPnN0X21vZGUgJiB+U19JWFVTUiAmIH5TX0lYR1JQICYgflNfSVhPVEg7Ci0gICAgbW9kZV90IGRpcm1vZGUgPSAoc3Jjc3RhdC0+c3RfbW9kZSB8Ci0gICAgICAgICAgICAgICAgICAgICAgU19JWFVTUiB8IFNfSVhHUlAgfCBTX0lYT1RIIHwKLSAgICAgICAgICAgICAgICAgICAgICBTX0lXVVNSIHwgU19JV0dSUCB8IFNfSVdPVEgpOwotI2VuZGlmCi0KLSAgICAvKiBFbnN1cmUgdGhhdCB0aGUgX19weWNhY2hlX18gZGlyZWN0b3J5IGV4aXN0cy4gKi8KLSAgICBkaXJwYXRoID0gcmlnaHRtb3N0X3NlcChjcGF0aG5hbWUpOwotICAgIGlmIChkaXJwYXRoID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoCi0gICAgICAgICAgICAgICAgIiMgbm8gJXMgcGF0aCBmb3VuZCAlc1xuIiwKLSAgICAgICAgICAgICAgICBDQUNIRURJUiwgY3BhdGhuYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzYXZlZCA9ICpkaXJwYXRoOwotICAgICpkaXJwYXRoID0gJ1wwJzsKLQotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAoX21rZGlyKGNwYXRobmFtZSkgPCAwICYmIGVycm5vICE9IEVFWElTVCkgewotI2Vsc2UKLSAgICBpZiAobWtkaXIoY3BhdGhuYW1lLCBkaXJtb2RlKSA8IDAgJiYgZXJybm8gIT0gRUVYSVNUKSB7Ci0jZW5kaWYKLSAgICAgICAgKmRpcnBhdGggPSBzYXZlZDsKLSAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoCi0gICAgICAgICAgICAgICAgIiMgY2Fubm90IGNyZWF0ZSBjYWNoZSBkaXIgJXNcbiIsIGNwYXRobmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgKmRpcnBhdGggPSBzYXZlZDsKLQotICAgIGZwID0gb3Blbl9leGNsdXNpdmUoY3BhdGhuYW1lLCBtb2RlKTsKLSAgICBpZiAoZnAgPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigKLSAgICAgICAgICAgICAgICAiIyBjYW4ndCBjcmVhdGUgJXNcbiIsIGNwYXRobmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUHlNYXJzaGFsX1dyaXRlTG9uZ1RvRmlsZShweWNfbWFnaWMsIGZwLCBQeV9NQVJTSEFMX1ZFUlNJT04pOwotICAgIC8qIEZpcnN0IHdyaXRlIGEgMCBmb3IgbXRpbWUgKi8KLSAgICBQeU1hcnNoYWxfV3JpdGVMb25nVG9GaWxlKDBMLCBmcCwgUHlfTUFSU0hBTF9WRVJTSU9OKTsKLSAgICBQeU1hcnNoYWxfV3JpdGVPYmplY3RUb0ZpbGUoKFB5T2JqZWN0ICopY28sIGZwLCBQeV9NQVJTSEFMX1ZFUlNJT04pOwotICAgIGlmIChmZmx1c2goZnApICE9IDAgfHwgZmVycm9yKGZwKSkgewotICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyBjYW4ndCB3cml0ZSAlc1xuIiwgY3BhdGhuYW1lKTsKLSAgICAgICAgLyogRG9uJ3Qga2VlcCBwYXJ0aWFsIGZpbGUgKi8KLSAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgKHZvaWQpIHVubGluayhjcGF0aG5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIC8qIE5vdyB3cml0ZSB0aGUgdHJ1ZSBtdGltZSAoYXMgYSAzMi1iaXQgZmllbGQpICovCi0gICAgZnNlZWsoZnAsIDRMLCAwKTsKLSAgICBhc3NlcnQobXRpbWUgPD0gMHhGRkZGRkZGRik7Ci0gICAgUHlNYXJzaGFsX1dyaXRlTG9uZ1RvRmlsZSgobG9uZyltdGltZSwgZnAsIFB5X01BUlNIQUxfVkVSU0lPTik7Ci0gICAgZmZsdXNoKGZwKTsKLSAgICBmY2xvc2UoZnApOwotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgd3JvdGUgJXNcbiIsIGNwYXRobmFtZSk7Ci19Ci0KIHN0YXRpYyB2b2lkCiB1cGRhdGVfY29kZV9maWxlbmFtZXMoUHlDb2RlT2JqZWN0ICpjbywgUHlPYmplY3QgKm9sZG5hbWUsIFB5T2JqZWN0ICpuZXduYW1lKQogewpAQCAtMTI2NiwyMjcgKzc5MCw2MCBAQAogICAgIH0KIH0KIAotc3RhdGljIGludAotdXBkYXRlX2NvbXBpbGVkX21vZHVsZShQeUNvZGVPYmplY3QgKmNvLCBjaGFyICpwYXRobmFtZSkKK3N0YXRpYyB2b2lkCit1cGRhdGVfY29tcGlsZWRfbW9kdWxlKFB5Q29kZU9iamVjdCAqY28sIFB5T2JqZWN0ICpuZXduYW1lKQogewotICAgIFB5T2JqZWN0ICpvbGRuYW1lLCAqbmV3bmFtZTsKKyAgICBQeU9iamVjdCAqb2xkbmFtZTsKIAotICAgIG5ld25hbWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KHBhdGhuYW1lKTsKLSAgICBpZiAobmV3bmFtZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBpZiAoIVB5VW5pY29kZV9Db21wYXJlKGNvLT5jb19maWxlbmFtZSwgbmV3bmFtZSkpIHsKLSAgICAgICAgUHlfREVDUkVGKG5ld25hbWUpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlKGNvLT5jb19maWxlbmFtZSwgbmV3bmFtZSkgPT0gMCkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgb2xkbmFtZSA9IGNvLT5jb19maWxlbmFtZTsKICAgICBQeV9JTkNSRUYob2xkbmFtZSk7CiAgICAgdXBkYXRlX2NvZGVfZmlsZW5hbWVzKGNvLCBvbGRuYW1lLCBuZXduYW1lKTsKICAgICBQeV9ERUNSRUYob2xkbmFtZSk7Ci0gICAgUHlfREVDUkVGKG5ld25hbWUpOwotICAgIHJldHVybiAxOwogfQogCi0vKiBMb2FkIGEgc291cmNlIG1vZHVsZSBmcm9tIGEgZ2l2ZW4gZmlsZSBhbmQgcmV0dXJuIGl0cyBtb2R1bGUKLSAgIG9iamVjdCBXSVRIIElOQ1JFTUVOVEVEIFJFRkVSRU5DRSBDT1VOVC4gIElmIHRoZXJlJ3MgYSBtYXRjaGluZwotICAgYnl0ZS1jb21waWxlZCBmaWxlLCB1c2UgdGhhdCBpbnN0ZWFkLiAqLwotCiBzdGF0aWMgUHlPYmplY3QgKgotbG9hZF9zb3VyY2VfbW9kdWxlKGNoYXIgKm5hbWUsIGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKK2ltcF9maXhfY29fZmlsZW5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHN0cnVjdCBzdGF0IHN0OwotICAgIEZJTEUgKmZwYzsKLSAgICBjaGFyICpidWY7Ci0gICAgY2hhciAqY3BhdGhuYW1lOwotICAgIFB5Q29kZU9iamVjdCAqY28gPSBOVUxMOwotICAgIFB5T2JqZWN0ICptOworICAgIFB5T2JqZWN0ICpjbzsKKyAgICBQeU9iamVjdCAqZmlsZV9wYXRoOwogCi0gICAgaWYgKGZzdGF0KGZpbGVubyhmcCksICZzdCkgIT0gMCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBnZXQgZmlsZSBzdGF0dXMgZnJvbSAnJXMnIiwKLSAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POl9maXhfY29fZmlsZW5hbWUiLCAmY28sICZmaWxlX3BhdGgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICghUHlDb2RlX0NoZWNrKGNvKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBjb2RlIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHNpemVvZiBzdC5zdF9tdGltZSA+IDQpIHsKLSAgICAgICAgLyogUHl0aG9uJ3MgLnB5YyB0aW1lc3RhbXAgaGFuZGxpbmcgcHJlc3VtZXMgdGhhdCB0aGUgdGltZXN0YW1wIGZpdHMKLSAgICAgICAgICAgaW4gNCBieXRlcy4gU2luY2UgdGhlIGNvZGUgb25seSBkb2VzIGFuIGVxdWFsaXR5IGNvbXBhcmlzb24sCi0gICAgICAgICAgIG9yZGVyaW5nIGlzIG5vdCBpbXBvcnRhbnQgYW5kIHdlIGNhbiBzYWZlbHkgaWdub3JlIHRoZSBoaWdoZXIgYml0cwotICAgICAgICAgICAoY29sbGlzaW9ucyBhcmUgZXh0cmVtZWx5IHVubGlrZWx5KS4KLSAgICAgICAgICovCi0gICAgICAgIHN0LnN0X210aW1lICY9IDB4RkZGRkZGRkY7Ci0gICAgfQotICAgIGJ1ZiA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChidWYgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0gICAgY3BhdGhuYW1lID0gbWFrZV9jb21waWxlZF9wYXRobmFtZSgKLSAgICAgICAgcGF0aG5hbWUsIGJ1ZiwgKHNpemVfdClNQVhQQVRITEVOICsgMSwgIVB5X09wdGltaXplRmxhZyk7Ci0gICAgaWYgKGNwYXRobmFtZSAhPSBOVUxMICYmCi0gICAgICAgIChmcGMgPSBjaGVja19jb21waWxlZF9tb2R1bGUocGF0aG5hbWUsIHN0LnN0X210aW1lLCBjcGF0aG5hbWUpKSkgewotICAgICAgICBjbyA9IHJlYWRfY29tcGlsZWRfbW9kdWxlKGNwYXRobmFtZSwgZnBjKTsKLSAgICAgICAgZmNsb3NlKGZwYyk7Ci0gICAgICAgIGlmIChjbyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgICAgICBpZiAodXBkYXRlX2NvbXBpbGVkX21vZHVsZShjbywgcGF0aG5hbWUpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImltcG9ydCAlcyAjIHByZWNvbXBpbGVkIGZyb20gJXNcbiIsCi0gICAgICAgICAgICAgICAgbmFtZSwgY3BhdGhuYW1lKTsKLSAgICAgICAgcGF0aG5hbWUgPSBjcGF0aG5hbWU7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBjbyA9IHBhcnNlX3NvdXJjZV9tb2R1bGUocGF0aG5hbWUsIGZwKTsKLSAgICAgICAgaWYgKGNvID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJpbXBvcnQgJXMgIyBmcm9tICVzXG4iLAotICAgICAgICAgICAgICAgIG5hbWUsIHBhdGhuYW1lKTsKLSAgICAgICAgaWYgKGNwYXRobmFtZSkgewotICAgICAgICAgICAgUHlPYmplY3QgKnJvID0gUHlTeXNfR2V0T2JqZWN0KCJkb250X3dyaXRlX2J5dGVjb2RlIik7Ci0gICAgICAgICAgICBpbnQgYiA9IChybyA9PSBOVUxMKSA/IDAgOiBQeU9iamVjdF9Jc1RydWUocm8pOwotICAgICAgICAgICAgaWYgKGIgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgICAgIGlmICghYikKLSAgICAgICAgICAgICAgICB3cml0ZV9jb21waWxlZF9tb2R1bGUoY28sIGNwYXRobmFtZSwgJnN0KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBtID0gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKAotICAgICAgICBuYW1lLCAoUHlPYmplY3QgKiljbywgcGF0aG5hbWUsIGNwYXRobmFtZSk7Ci0gICAgUHlfREVDUkVGKGNvKTsKIAotICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICByZXR1cm4gbTsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhmaWxlX3BhdGgpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi1lcnJvcl9leGl0OgotICAgIFB5X1hERUNSRUYoY28pOwotICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICB1cGRhdGVfY29tcGlsZWRfbW9kdWxlKChQeUNvZGVPYmplY3QqKWNvLCBmaWxlX3BhdGgpOworCisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLS8qIEdldCBzb3VyY2UgZmlsZSAtPiB1bmljb2RlIG9yIE5vbmUKLSAqIFJldHVybnMgdGhlIHBhdGggdG8gdGhlIHB5IGZpbGUgaWYgYXZhaWxhYmxlLCBlbHNlIHRoZSBnaXZlbiBwYXRoCi0gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1nZXRfc291cmNlZmlsZShjaGFyICpmaWxlKQotewotICAgIGNoYXIgKnB5ID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICBQeU9iamVjdCAqdTsKLSAgICBzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwotCi0gICAgaWYgKCFmaWxlIHx8ICEqZmlsZSkgewotICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICB9Ci0KLSAgICBsZW4gPSBzdHJsZW4oZmlsZSk7Ci0gICAgLyogbWF0Y2ggJyoucHk/JyAqLwotICAgIGlmIChsZW4gPiBNQVhQQVRITEVOIHx8IFB5T1Nfc3RybmljbXAoJmZpbGVbbGVuLTRdLCAiLnB5IiwgMykgIT0gMCkgewotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChmaWxlKTsKLSAgICB9Ci0KLSAgICBweSA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChweSA9PSBOVUxMKSB7Ci0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIH0KLSAgICAvKiBTdGFydCBieSB0cnlpbmcgdG8gdHVybiBQRVAgMzE0NyBwYXRoIGludG8gc291cmNlIHBhdGguICBJZiB0aGF0Ci0gICAgICogZmFpbHMsIGp1c3QgY2hvcCBvZmYgdGhlIHRyYWlsaW5nIGNoYXJhY3RlciwgaS5lLiBsZWdhY3kgcHljIHBhdGgKLSAgICAgKiB0byBweS4KLSAgICAgKi8KLSAgICBpZiAobWFrZV9zb3VyY2VfcGF0aG5hbWUoZmlsZSwgcHkpID09IE5VTEwpIHsKLSAgICAgICAgc3RybmNweShweSwgZmlsZSwgbGVuLTEpOwotICAgICAgICBweVtsZW4tMV0gPSAnXDAnOwotICAgIH0KLQotICAgIGlmIChzdGF0KHB5LCAmc3RhdGJ1ZikgPT0gMCAmJgotICAgICAgICBTX0lTUkVHKHN0YXRidWYuc3RfbW9kZSkpIHsKLSAgICAgICAgdSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQocHkpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgdSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoZmlsZSk7Ci0gICAgfQotICAgIFB5TWVtX0ZSRUUocHkpOwotICAgIHJldHVybiB1OwotfQogCiAvKiBGb3J3YXJkICovCi1zdGF0aWMgUHlPYmplY3QgKmxvYWRfbW9kdWxlKGNoYXIgKiwgRklMRSAqLCBjaGFyICosIGludCwgUHlPYmplY3QgKik7Ci1zdGF0aWMgc3RydWN0IGZpbGVkZXNjciAqZmluZF9tb2R1bGUoY2hhciAqLCBjaGFyICosIFB5T2JqZWN0ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqLCBzaXplX3QsIEZJTEUgKiosIFB5T2JqZWN0ICoqKTsKLXN0YXRpYyBzdHJ1Y3QgX2Zyb3plbiAqIGZpbmRfZnJvemVuKGNoYXIgKik7Ci0KLS8qIExvYWQgYSBwYWNrYWdlIGFuZCByZXR1cm4gaXRzIG1vZHVsZSBvYmplY3QgV0lUSCBJTkNSRU1FTlRFRAotICAgUkVGRVJFTkNFIENPVU5UICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1sb2FkX3BhY2thZ2UoY2hhciAqbmFtZSwgY2hhciAqcGF0aG5hbWUpCi17Ci0gICAgUHlPYmplY3QgKm0sICpkOwotICAgIFB5T2JqZWN0ICpmaWxlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7Ci0gICAgaW50IGVycjsKLSAgICBjaGFyICpidWYgPSBOVUxMOwotICAgIEZJTEUgKmZwID0gTlVMTDsKLSAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmZHA7Ci0KLSAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlKG5hbWUpOwotICAgIGlmIChtID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImltcG9ydCAlcyAjIGRpcmVjdG9yeSAlc1xuIiwKLSAgICAgICAgICAgIG5hbWUsIHBhdGhuYW1lKTsKLSAgICBkID0gUHlNb2R1bGVfR2V0RGljdChtKTsKLSAgICBmaWxlID0gZ2V0X3NvdXJjZWZpbGUocGF0aG5hbWUpOwotICAgIGlmIChmaWxlID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgcGF0aCA9IFB5X0J1aWxkVmFsdWUoIltPXSIsIGZpbGUpOwotICAgIGlmIChwYXRoID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgZXJyID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fZmlsZV9fIiwgZmlsZSk7Ci0gICAgaWYgKGVyciA9PSAwKQotICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19wYXRoX18iLCBwYXRoKTsKLSAgICBpZiAoZXJyICE9IDApCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgYnVmID0gUHlNZW1fTUFMTE9DKE1BWFBBVEhMRU4rMSk7Ci0gICAgaWYgKGJ1ZiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIGJ1ZlswXSA9ICdcMCc7Ci0gICAgZmRwID0gZmluZF9tb2R1bGUobmFtZSwgIl9faW5pdF9fIiwgcGF0aCwgYnVmLCBNQVhQQVRITEVOKzEsICZmcCwgTlVMTCk7Ci0gICAgaWYgKGZkcCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0ltcG9ydEVycm9yKSkgewotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihtKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtID0gTlVMTDsKLSAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLSAgICBtID0gbG9hZF9tb2R1bGUobmFtZSwgZnAsIGJ1ZiwgZmRwLT50eXBlLCBOVUxMKTsKLSAgICBpZiAoZnAgIT0gTlVMTCkKLSAgICAgICAgZmNsb3NlKGZwKTsKLSAgICBnb3RvIGNsZWFudXA7Ci0KLSAgZXJyb3I6Ci0gICAgbSA9IE5VTEw7Ci0gIGNsZWFudXA6Ci0gICAgaWYgKGJ1ZikKLSAgICAgICAgUHlNZW1fRlJFRShidWYpOwotICAgIFB5X1hERUNSRUYocGF0aCk7Ci0gICAgUHlfWERFQ1JFRihmaWxlKTsKLSAgICByZXR1cm4gbTsKLX0KK3N0YXRpYyBzdHJ1Y3QgX2Zyb3plbiAqIGZpbmRfZnJvemVuKFB5T2JqZWN0ICopOwogCiAKIC8qIEhlbHBlciB0byB0ZXN0IGZvciBidWlsdC1pbiBtb2R1bGUgKi8KIAogc3RhdGljIGludAotaXNfYnVpbHRpbihjaGFyICpuYW1lKQoraXNfYnVpbHRpbihQeU9iamVjdCAqbmFtZSkKIHsKLSAgICBpbnQgaTsKKyAgICBpbnQgaSwgY21wOwogICAgIGZvciAoaSA9IDA7IFB5SW1wb3J0X0luaXR0YWJbaV0ubmFtZSAhPSBOVUxMOyBpKyspIHsKLSAgICAgICAgaWYgKHN0cmNtcChuYW1lLCBQeUltcG9ydF9Jbml0dGFiW2ldLm5hbWUpID09IDApIHsKKyAgICAgICAgY21wID0gUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgUHlJbXBvcnRfSW5pdHRhYltpXS5uYW1lKTsKKyAgICAgICAgaWYgKGNtcCA9PSAwKSB7CiAgICAgICAgICAgICBpZiAoUHlJbXBvcnRfSW5pdHRhYltpXS5pbml0ZnVuYyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIGVsc2UKQEAgLTE1NDIsMTUgKzg5OSw3IEBACiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgfQogICAgIGlmIChpbXBvcnRlciA9PSBOVUxMKSB7Ci0gICAgICAgIGltcG9ydGVyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygKLSAgICAgICAgICAgIChQeU9iamVjdCAqKSZQeU51bGxJbXBvcnRlcl9UeXBlLCBwLCBOVUxMCi0gICAgICAgICk7Ci0gICAgICAgIGlmIChpbXBvcnRlciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19JbXBvcnRFcnJvcikpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KICAgICBpZiAoaW1wb3J0ZXIgIT0gTlVMTCkgewogICAgICAgICBpbnQgZXJyID0gUHlEaWN0X1NldEl0ZW0ocGF0aF9pbXBvcnRlcl9jYWNoZSwgcCwgaW1wb3J0ZXIpOwpAQCAtMTU3NSw2NjEgKzkyNCwzOCBAQAogICAgIHJldHVybiBpbXBvcnRlcjsKIH0KIAotLyogU2VhcmNoIHRoZSBwYXRoIChkZWZhdWx0IHN5cy5wYXRoKSBmb3IgYSBtb2R1bGUuICBSZXR1cm4gdGhlCi0gICBjb3JyZXNwb25kaW5nIGZpbGVkZXNjciBzdHJ1Y3QsIGFuZCAodmlhIHJldHVybiBhcmd1bWVudHMpIHRoZQotICAgcGF0aG5hbWUgYW5kIGFuIG9wZW4gZmlsZS4gIFJldHVybiBOVUxMIGlmIHRoZSBtb2R1bGUgaXMgbm90IGZvdW5kLiAqLwogCi0jaWZkZWYgTVNfQ09SRURMTAotZXh0ZXJuIEZJTEUgKlB5V2luX0ZpbmRSZWdpc3RlcmVkTW9kdWxlKGNvbnN0IGNoYXIgKiwgc3RydWN0IGZpbGVkZXNjciAqKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIFB5X3NzaXplX3QpOwotI2VuZGlmCi0KLXN0YXRpYyBpbnQgY2FzZV9vayhjaGFyICosIFB5X3NzaXplX3QsIFB5X3NzaXplX3QsIGNoYXIgKik7Ci1zdGF0aWMgaW50IGZpbmRfaW5pdF9tb2R1bGUoY2hhciAqKTsgLyogRm9yd2FyZCAqLwotc3RhdGljIHN0cnVjdCBmaWxlZGVzY3IgaW1wb3J0aG9va2Rlc2NyID0geyIiLCAiIiwgSU1QX0hPT0t9OwotCi1zdGF0aWMgc3RydWN0IGZpbGVkZXNjciAqCi1maW5kX21vZHVsZShjaGFyICpmdWxsbmFtZSwgY2hhciAqc3VibmFtZSwgUHlPYmplY3QgKnBhdGgsIGNoYXIgKmJ1ZiwKLSAgICAgICAgICAgIHNpemVfdCBidWZsZW4sIEZJTEUgKipwX2ZwLCBQeU9iamVjdCAqKnBfbG9hZGVyKQotewotICAgIFB5X3NzaXplX3QgaSwgbnBhdGg7Ci0gICAgc2l6ZV90IGxlbiwgbmFtZWxlbjsKLSAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmZHAgPSBOVUxMOwotICAgIGNoYXIgKmZpbGVtb2RlOwotICAgIEZJTEUgKmZwID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcGF0aF9ob29rcywgKnBhdGhfaW1wb3J0ZXJfY2FjaGU7Ci0gICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKLSAgICBzdGF0aWMgc3RydWN0IGZpbGVkZXNjciBmZF9mcm96ZW4gPSB7IiIsICIiLCBQWV9GUk9aRU59OwotICAgIHN0YXRpYyBzdHJ1Y3QgZmlsZWRlc2NyIGZkX2J1aWx0aW4gPSB7IiIsICIiLCBDX0JVSUxUSU59OwotICAgIHN0YXRpYyBzdHJ1Y3QgZmlsZWRlc2NyIGZkX3BhY2thZ2UgPSB7IiIsICIiLCBQS0dfRElSRUNUT1JZfTsKLSAgICBjaGFyICpuYW1lOwotI2lmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgc2l6ZV90IHNhdmVkX2xlbjsKLSAgICBzaXplX3Qgc2F2ZWRfbmFtZWxlbjsKLSAgICBjaGFyICpzYXZlZF9idWYgPSBOVUxMOwotI2VuZGlmCi0gICAgaWYgKHBfbG9hZGVyICE9IE5VTEwpCi0gICAgICAgICpwX2xvYWRlciA9IE5VTEw7Ci0KLSAgICBpZiAoc3RybGVuKHN1Ym5hbWUpID4gTUFYUEFUSExFTikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUgbmFtZSBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgbmFtZSA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChuYW1lID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHN0cmNweShuYW1lLCBzdWJuYW1lKTsKLQotICAgIC8qIHN5cy5tZXRhX3BhdGggaW1wb3J0IGhvb2sgKi8KLSAgICBpZiAocF9sb2FkZXIgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqbWV0YV9wYXRoOwotCi0gICAgICAgIG1ldGFfcGF0aCA9IFB5U3lzX0dldE9iamVjdCgibWV0YV9wYXRoIik7Ci0gICAgICAgIGlmIChtZXRhX3BhdGggPT0gTlVMTCB8fCAhUHlMaXN0X0NoZWNrKG1ldGFfcGF0aCkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInN5cy5tZXRhX3BhdGggbXVzdCBiZSBhIGxpc3Qgb2YgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgaG9va3MiKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgfQotICAgICAgICBQeV9JTkNSRUYobWV0YV9wYXRoKTsgIC8qIHphcCBndWFyZCAqLwotICAgICAgICBucGF0aCA9IFB5TGlzdF9TaXplKG1ldGFfcGF0aCk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBucGF0aDsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqbG9hZGVyOwotICAgICAgICAgICAgUHlPYmplY3QgKmhvb2sgPSBQeUxpc3RfR2V0SXRlbShtZXRhX3BhdGgsIGkpOwotICAgICAgICAgICAgbG9hZGVyID0gUHlPYmplY3RfQ2FsbE1ldGhvZChob29rLCAiZmluZF9tb2R1bGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic08iLCBmdWxsbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCAhPSBOVUxMID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA6IFB5X05vbmUpOwotICAgICAgICAgICAgaWYgKGxvYWRlciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG1ldGFfcGF0aCk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OyAgLyogdHJ1ZSBlcnJvciAqLwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGxvYWRlciAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICAgICAgLyogYSBsb2FkZXIgd2FzIGZvdW5kICovCi0gICAgICAgICAgICAgICAgKnBfbG9hZGVyID0gbG9hZGVyOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtZXRhX3BhdGgpOwotICAgICAgICAgICAgICAgIFB5TWVtX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICZpbXBvcnRob29rZGVzY3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYobG9hZGVyKTsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYobWV0YV9wYXRoKTsKLSAgICB9Ci0KLSAgICBpZiAoZmluZF9mcm96ZW4oZnVsbG5hbWUpICE9IE5VTEwpIHsKLSAgICAgICAgc3RyY3B5KGJ1ZiwgZnVsbG5hbWUpOwotICAgICAgICBQeU1lbV9GUkVFKG5hbWUpOwotICAgICAgICByZXR1cm4gJmZkX2Zyb3plbjsKLSAgICB9Ci0KLSAgICBpZiAocGF0aCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChpc19idWlsdGluKG5hbWUpKSB7Ci0gICAgICAgICAgICBzdHJjcHkoYnVmLCBuYW1lKTsKLSAgICAgICAgICAgIFB5TWVtX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gJmZkX2J1aWx0aW47Ci0gICAgICAgIH0KLSNpZmRlZiBNU19DT1JFRExMCi0gICAgICAgIGZwID0gUHlXaW5fRmluZFJlZ2lzdGVyZWRNb2R1bGUobmFtZSwgJmZkcCwgYnVmLCBidWZsZW4pOwotICAgICAgICBpZiAoZnAgIT0gTlVMTCkgewotICAgICAgICAgICAgKnBfZnAgPSBmcDsKLSAgICAgICAgICAgIFB5TWVtX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmRwOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgcGF0aCA9IFB5U3lzX0dldE9iamVjdCgicGF0aCIpOwotICAgIH0KLQotICAgIGlmIChwYXRoID09IE5VTEwgfHwgIVB5TGlzdF9DaGVjayhwYXRoKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN5cy5wYXRoIG11c3QgYmUgYSBsaXN0IG9mIGRpcmVjdG9yeSBuYW1lcyIpOwotICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgfQotCi0gICAgcGF0aF9ob29rcyA9IFB5U3lzX0dldE9iamVjdCgicGF0aF9ob29rcyIpOwotICAgIGlmIChwYXRoX2hvb2tzID09IE5VTEwgfHwgIVB5TGlzdF9DaGVjayhwYXRoX2hvb2tzKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN5cy5wYXRoX2hvb2tzIG11c3QgYmUgYSBsaXN0IG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgaG9va3MiKTsKLSAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgIH0KLSAgICBwYXRoX2ltcG9ydGVyX2NhY2hlID0gUHlTeXNfR2V0T2JqZWN0KCJwYXRoX2ltcG9ydGVyX2NhY2hlIik7Ci0gICAgaWYgKHBhdGhfaW1wb3J0ZXJfY2FjaGUgPT0gTlVMTCB8fAotICAgICAgICAhUHlEaWN0X0NoZWNrKHBhdGhfaW1wb3J0ZXJfY2FjaGUpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgbXVzdCBiZSBhIGRpY3QiKTsKLSAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgIH0KLQotICAgIG5wYXRoID0gUHlMaXN0X1NpemUocGF0aCk7Ci0gICAgbmFtZWxlbiA9IHN0cmxlbihuYW1lKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbnBhdGg7IGkrKykgewotICAgICAgICBQeU9iamVjdCAqdiA9IFB5TGlzdF9HZXRJdGVtKHBhdGgsIGkpOwotICAgICAgICBQeU9iamVjdCAqb3JpZ3YgPSB2OwotICAgICAgICBjb25zdCBjaGFyICpiYXNlOwotICAgICAgICBQeV9zc2l6ZV90IHNpemU7Ci0gICAgICAgIGlmICghdikKLSAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh2KSkgewotICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQodik7Ci0gICAgICAgICAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICghUHlCeXRlc19DaGVjayh2KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBQeV9JTkNSRUYodik7Ci0KLSAgICAgICAgYmFzZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwotICAgICAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRSh2KTsKLSAgICAgICAgbGVuID0gc2l6ZTsKLSAgICAgICAgaWYgKGxlbiArIDIgKyBuYW1lbGVuICsgTUFYU1VGRklYU0laRSA+PSBidWZsZW4pIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIGNvbnRpbnVlOyAvKiBUb28gbG9uZyAqLwotICAgICAgICB9Ci0gICAgICAgIHN0cmNweShidWYsIGJhc2UpOwotICAgICAgICBQeV9ERUNSRUYodik7Ci0KLSAgICAgICAgaWYgKHN0cmxlbihidWYpICE9IGxlbikgewotICAgICAgICAgICAgY29udGludWU7IC8qIHYgY29udGFpbnMgJ1wwJyAqLwotICAgICAgICB9Ci0KLSAgICAgICAgLyogc3lzLnBhdGhfaG9va3MgaW1wb3J0IGhvb2sgKi8KLSAgICAgICAgaWYgKHBfbG9hZGVyICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICppbXBvcnRlcjsKLQotICAgICAgICAgICAgaW1wb3J0ZXIgPSBnZXRfcGF0aF9pbXBvcnRlcihwYXRoX2ltcG9ydGVyX2NhY2hlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2hvb2tzLCBvcmlndik7Ci0gICAgICAgICAgICBpZiAoaW1wb3J0ZXIgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIE5vdGU6IGltcG9ydGVyIGlzIGEgYm9ycm93ZWQgcmVmZXJlbmNlICovCi0gICAgICAgICAgICBpZiAoaW1wb3J0ZXIgIT0gUHlfTm9uZSkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2FkZXI7Ci0gICAgICAgICAgICAgICAgbG9hZGVyID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbXBvcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaW5kX21vZHVsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIsIGZ1bGxuYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAobG9hZGVyID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsgIC8qIGVycm9yICovCi0gICAgICAgICAgICAgICAgaWYgKGxvYWRlciAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIGEgbG9hZGVyIHdhcyBmb3VuZCAqLwotICAgICAgICAgICAgICAgICAgICAqcF9sb2FkZXIgPSBsb2FkZXI7Ci0gICAgICAgICAgICAgICAgICAgIFB5TWVtX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAmaW1wb3J0aG9va2Rlc2NyOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobG9hZGVyKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvKiBubyBob29rIHdhcyBmb3VuZCwgdXNlIGJ1aWx0aW4gaW1wb3J0ICovCi0KLSAgICAgICAgaWYgKGxlbiA+IDAgJiYgYnVmW2xlbi0xXSAhPSBTRVAKLSNpZmRlZiBBTFRTRVAKLSAgICAgICAgICAgICYmIGJ1ZltsZW4tMV0gIT0gQUxUU0VQCi0jZW5kaWYKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGJ1ZltsZW4rK10gPSBTRVA7Ci0gICAgICAgIHN0cmNweShidWYrbGVuLCBuYW1lKTsKLSAgICAgICAgbGVuICs9IG5hbWVsZW47Ci0KLSAgICAgICAgLyogQ2hlY2sgZm9yIHBhY2thZ2UgaW1wb3J0IChidWYgaG9sZHMgYSBkaXJlY3RvcnkgbmFtZSwKLSAgICAgICAgICAgYW5kIHRoZXJlJ3MgYW4gX19pbml0X18gbW9kdWxlIGluIHRoYXQgZGlyZWN0b3J5ICovCi0jaWZkZWYgSEFWRV9TVEFUCi0gICAgICAgIGlmIChzdGF0KGJ1ZiwgJnN0YXRidWYpID09IDAgJiYgICAgICAgICAvKiBpdCBleGlzdHMgKi8KLSAgICAgICAgICAgIFNfSVNESVIoc3RhdGJ1Zi5zdF9tb2RlKSAmJiAgICAgICAgIC8qIGl0J3MgYSBkaXJlY3RvcnkgKi8KLSAgICAgICAgICAgIGNhc2Vfb2soYnVmLCBsZW4sIG5hbWVsZW4sIG5hbWUpKSB7IC8qIGNhc2UgbWF0Y2hlcyAqLwotICAgICAgICAgICAgaWYgKGZpbmRfaW5pdF9tb2R1bGUoYnVmKSkgeyAvKiBhbmQgaGFzIF9faW5pdF9fLnB5ICovCi0gICAgICAgICAgICAgICAgUHlNZW1fRlJFRShuYW1lKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gJmZkX3BhY2thZ2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpbnQgZXJyOwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChidWYpOwotICAgICAgICAgICAgICAgIGlmICh1bmljb2RlID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgICAgICAgICBlcnIgPSBQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0ltcG9ydFdhcm5pbmcsIDEsCi0gICAgICAgICAgICAgICAgICAgICJOb3QgaW1wb3J0aW5nIGRpcmVjdG9yeSAnJVUnOiBtaXNzaW5nIF9faW5pdF9fLnB5IiwKLSAgICAgICAgICAgICAgICAgICAgdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwotICAgICAgICAgICAgICAgIGlmIChlcnIpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2VuZGlmCi0jaWYgZGVmaW5lZChQWU9TX09TMikKLSAgICAgICAgLyogdGFrZSBhIHNuYXBzaG90IG9mIHRoZSBtb2R1bGUgc3BlYyBmb3IgcmVzdG9yYXRpb24KLSAgICAgICAgICogYWZ0ZXIgdGhlIDggY2hhcmFjdGVyIERMTCBoYWNrZXJ5Ci0gICAgICAgICAqLwotICAgICAgICBzYXZlZF9idWYgPSBzdHJkdXAoYnVmKTsKLSAgICAgICAgc2F2ZWRfbGVuID0gbGVuOwotICAgICAgICBzYXZlZF9uYW1lbGVuID0gbmFtZWxlbjsKLSNlbmRpZiAvKiBQWU9TX09TMiAqLwotICAgICAgICBmb3IgKGZkcCA9IF9QeUltcG9ydF9GaWxldGFiOyBmZHAtPnN1ZmZpeCAhPSBOVUxMOyBmZHArKykgewotICAgICAgICAgICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiBkZWZpbmVkKEhBVkVfRFlOQU1JQ19MT0FESU5HKQotICAgICAgICAgICAgLyogT1MvMiBsaW1pdHMgRExMcyB0byA4IGNoYXJhY3RlciBuYW1lcyAody9vCi0gICAgICAgICAgICAgICBleHRlbnNpb24pCi0gICAgICAgICAgICAgKiBzbyBpZiB0aGUgbmFtZSBpcyBsb25nZXIgdGhhbiB0aGF0IGFuZCBpdHMgYQotICAgICAgICAgICAgICogZHluYW1pY2FsbHkgbG9hZGVkIG1vZHVsZSB3ZSdyZSBnb2luZyB0byB0cnksCi0gICAgICAgICAgICAgKiB0cnVuY2F0ZSB0aGUgbmFtZSBiZWZvcmUgdHJ5aW5nCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmIChzdHJsZW4oc3VibmFtZSkgPiA4KSB7Ci0gICAgICAgICAgICAgICAgLyogaXMgdGhpcyBhbiBhdHRlbXB0IHRvIGxvYWQgYSBDIGV4dGVuc2lvbj8gKi8KLSAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZmlsZWRlc2NyICpzY2FuOwotICAgICAgICAgICAgICAgIHNjYW4gPSBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWI7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHNjYW4tPnN1ZmZpeCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghc3RyY21wKHNjYW4tPnN1ZmZpeCwgZmRwLT5zdWZmaXgpKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHNjYW4rKzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHNjYW4tPnN1ZmZpeCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIHllcywgc28gdHJ1bmNhdGUgdGhlIG5hbWUgKi8KLSAgICAgICAgICAgICAgICAgICAgbmFtZWxlbiA9IDg7Ci0gICAgICAgICAgICAgICAgICAgIGxlbiAtPSBzdHJsZW4oc3VibmFtZSkgLSBuYW1lbGVuOwotICAgICAgICAgICAgICAgICAgICBidWZbbGVuXSA9ICdcMCc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotI2VuZGlmIC8qIFBZT1NfT1MyICovCi0gICAgICAgICAgICBzdHJjcHkoYnVmK2xlbiwgZmRwLT5zdWZmaXgpOwotICAgICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnID4gMSkKLSAgICAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyB0cnlpbmcgJXNcbiIsIGJ1Zik7Ci0KLSAgICAgICAgICAgIGZpbGVtb2RlID0gZmRwLT5tb2RlOwotICAgICAgICAgICAgaWYgKGZpbGVtb2RlWzBdID09ICdVJykKLSAgICAgICAgICAgICAgICBmaWxlbW9kZSA9ICJyIiBQWV9TVERJT1RFWFRNT0RFOwotCi0gICAgICAgICAgICBpZiAoc3RhdChidWYsICZzdGF0YnVmKSA9PSAwICYmIFNfSVNESVIoc3RhdGJ1Zi5zdF9tb2RlKSkKLSAgICAgICAgICAgICAgICAvKiBpdCdzIGEgZGlyZWN0b3J5ICovCi0gICAgICAgICAgICAgICAgZnAgPSBOVUxMOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZwID0gZm9wZW4oYnVmLCBmaWxlbW9kZSk7Ci0gICAgICAgICAgICBpZiAoZnAgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGlmIChjYXNlX29rKGJ1ZiwgbGVuLCBuYW1lbGVuLCBuYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgIC8qIGNvbnRpbnVlIHNlYXJjaCAqLwotICAgICAgICAgICAgICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICAgICAgICAgICAgICBmcCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotI2lmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgICAgICAgICAvKiByZXN0b3JlIHRoZSBzYXZlZCBzbmFwc2hvdCAqLwotICAgICAgICAgICAgc3RyY3B5KGJ1Ziwgc2F2ZWRfYnVmKTsKLSAgICAgICAgICAgIGxlbiA9IHNhdmVkX2xlbjsKLSAgICAgICAgICAgIG5hbWVsZW4gPSBzYXZlZF9uYW1lbGVuOwotI2VuZGlmCi0gICAgICAgIH0KLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotICAgICAgICAvKiBkb24ndCBuZWVkL3dhbnQgdGhlIG1vZHVsZSBuYW1lIHNuYXBzaG90IGFueW1vcmUgKi8KLSAgICAgICAgaWYgKHNhdmVkX2J1ZikKLSAgICAgICAgewotICAgICAgICAgICAgZnJlZShzYXZlZF9idWYpOwotICAgICAgICAgICAgc2F2ZWRfYnVmID0gTlVMTDsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIGlmIChmcCAhPSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmIChmcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJObyBtb2R1bGUgbmFtZWQgJS4yMDBzIiwgbmFtZSk7Ci0gICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICB9Ci0gICAgKnBfZnAgPSBmcDsKLSAgICBQeU1lbV9GUkVFKG5hbWUpOwotICAgIHJldHVybiBmZHA7Ci0KLWVycm9yX2V4aXQ6Ci0gICAgUHlNZW1fRlJFRShuYW1lKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotLyogY2FzZV9vayhjaGFyKiBidWYsIFB5X3NzaXplX3QgbGVuLCBQeV9zc2l6ZV90IG5hbWVsZW4sIGNoYXIqIG5hbWUpCi0gKiBUaGUgYXJndW1lbnRzIGhlcmUgYXJlIHRyaWNreSwgYmVzdCBzaG93biBieSBleGFtcGxlOgotICogICAgL2EvYi9jL2QvZS9mL2cvaC9pL2ovay9zb21lX2xvbmdfbW9kdWxlX25hbWUucHlcMAotICogICAgXiAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgIF4gICAgXgotICogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLSBidWYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotICogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0gbGVuIC0tLS0tLS0tLS0tLS0tLS0tLXwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgfC0tLS0tLSBuYW1lIC0tLS0tLS18Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwtLS0tLSBuYW1lbGVuIC0tLS0tfAotICogYnVmIGlzIHRoZSBmdWxsIHBhdGgsIGJ1dCBsZW4gb25seSBjb3VudHMgdXAgdG8gKCYgZXhjbHVzaXZlIG9mKSB0aGUKLSAqIGV4dGVuc2lvbi4gIG5hbWUgaXMgdGhlIG1vZHVsZSBuYW1lLCBhbHNvIGV4Y2x1c2l2ZSBvZiBleHRlbnNpb24uCi0gKgotICogV2UndmUgYWxyZWFkeSBkb25lIGEgc3VjY2Vzc2Z1bCBzdGF0KCkgb3IgZm9wZW4oKSBvbiBidWYsIHNvIGtub3cgdGhhdAotICogdGhlcmUncyBzb21lIG1hdGNoLCBwb3NzaWJseSBjYXNlLWluc2Vuc2l0aXZlLgotICoKLSAqIGNhc2Vfb2soKSBpcyB0byByZXR1cm4gMSBpZiB0aGVyZSdzIGEgY2FzZS1zZW5zaXRpdmUgbWF0Y2ggZm9yCi0gKiBuYW1lLCBlbHNlIDAuICBjYXNlX29rKCkgaXMgYWxzbyB0byByZXR1cm4gMSBpZiBlbnZhciBQWVRIT05DQVNFT0sKLSAqIGV4aXN0cy4KLSAqCi0gKiBjYXNlX29rKCkgaXMgdXNlZCB0byBpbXBsZW1lbnQgY2FzZS1zZW5zaXRpdmUgaW1wb3J0IHNlbWFudGljcyBldmVuCi0gKiBvbiBwbGF0Zm9ybXMgd2l0aCBjYXNlLWluc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zLiAgSXQncyB0cml2aWFsIHRvIGltcGxlbWVudAotICogZm9yIGNhc2Utc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zLiAgSXQncyBwcmV0dHkgbXVjaCBhIGNyb3NzLXBsYXRmb3JtCi0gKiBuaWdodG1hcmUgZm9yIHN5c3RlbXMgd2l0aCBjYXNlLWluc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zLgotICovCi0KLS8qIEZpcnN0IHdlIG1heSBuZWVkIGEgcGlsZSBvZiBwbGF0Zm9ybS1zcGVjaWZpYyBoZWFkZXIgZmlsZXM7IHRoZSBzZXF1ZW5jZQotICogb2YgI2lmJ3MgaGVyZSBzaG91bGQgbWF0Y2ggdGhlIHNlcXVlbmNlIGluIHRoZSBib2R5IG9mIGNhc2Vfb2soKS4KLSAqLwotI2lmIGRlZmluZWQoTVNfV0lORE9XUykKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0KLSNlbGlmIGRlZmluZWQoREpHUFApCi0jaW5jbHVkZSA8ZGlyLmg+Ci0KLSNlbGlmIChkZWZpbmVkKF9fTUFDSF9fKSAmJiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSkgJiYgZGVmaW5lZChIQVZFX0RJUkVOVF9IKQotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPGRpcmVudC5oPgotCi0jZWxpZiBkZWZpbmVkKFBZT1NfT1MyKQotI2RlZmluZSBJTkNMX0RPUwotI2RlZmluZSBJTkNMX0RPU0VSUk9SUwotI2RlZmluZSBJTkNMX05PUE1BUEkKLSNpbmNsdWRlIDxvczIuaD4KLSNlbmRpZgotCi1zdGF0aWMgaW50Ci1jYXNlX29rKGNoYXIgKmJ1ZiwgUHlfc3NpemVfdCBsZW4sIFB5X3NzaXplX3QgbmFtZWxlbiwgY2hhciAqbmFtZSkKLXsKLS8qIFBpY2sgYSBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbjsgdGhlIHNlcXVlbmNlIG9mICNpZidzIGhlcmUgc2hvdWxkCi0gKiBtYXRjaCB0aGUgc2VxdWVuY2UganVzdCBhYm92ZS4KLSAqLwotCi0vKiBNU19XSU5ET1dTICovCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKQotICAgIFdJTjMyX0ZJTkRfREFUQSBkYXRhOwotICAgIEhBTkRMRSBoOwotCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OQ0FTRU9LIikgIT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICBoID0gRmluZEZpcnN0RmlsZShidWYsICZkYXRhKTsKLSAgICBpZiAoaCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfTmFtZUVycm9yLAotICAgICAgICAgICJDYW4ndCBmaW5kIGZpbGUgZm9yIG1vZHVsZSAlLjEwMHNcbihmaWxlbmFtZSAlLjMwMHMpIiwKLSAgICAgICAgICBuYW1lLCBidWYpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgRmluZENsb3NlKGgpOwotICAgIHJldHVybiBzdHJuY21wKGRhdGEuY0ZpbGVOYW1lLCBuYW1lLCBuYW1lbGVuKSA9PSAwOwotCi0vKiBESkdQUCAqLwotI2VsaWYgZGVmaW5lZChESkdQUCkKLSAgICBzdHJ1Y3QgZmZibGsgZmZibGs7Ci0gICAgaW50IGRvbmU7Ci0KLSAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05DQVNFT0siKSAhPSBOVUxMKQotICAgICAgICByZXR1cm4gMTsKLQotICAgIGRvbmUgPSBmaW5kZmlyc3QoYnVmLCAmZmZibGssIEZBX0FSQ0h8RkFfUkRPTkxZfEZBX0hJRERFTnxGQV9ESVJFQyk7Ci0gICAgaWYgKGRvbmUpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX05hbWVFcnJvciwKLSAgICAgICAgICAiQ2FuJ3QgZmluZCBmaWxlIGZvciBtb2R1bGUgJS4xMDBzXG4oZmlsZW5hbWUgJS4zMDBzKSIsCi0gICAgICAgICAgbmFtZSwgYnVmKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBzdHJuY21wKGZmYmxrLmZmX25hbWUsIG5hbWUsIG5hbWVsZW4pID09IDA7Ci0KLS8qIG5ldy1mYW5nbGVkIG1hY2ludG9zaCAobWFjb3N4KSBvciBDeWd3aW4gKi8KLSNlbGlmIChkZWZpbmVkKF9fTUFDSF9fKSAmJiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSkgJiYgZGVmaW5lZChIQVZFX0RJUkVOVF9IKQotICAgIERJUiAqZGlycDsKLSAgICBzdHJ1Y3QgZGlyZW50ICpkcDsKLSAgICBjaGFyIGRpcm5hbWVbTUFYUEFUSExFTiArIDFdOwotICAgIGNvbnN0IGludCBkaXJsZW4gPSBsZW4gLSBuYW1lbGVuIC0gMTsgLyogZG9uJ3Qgd2FudCB0cmFpbGluZyBTRVAgKi8KLQotICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTkNBU0VPSyIpICE9IE5VTEwpCi0gICAgICAgIHJldHVybiAxOwotCi0gICAgLyogQ29weSB0aGUgZGlyIGNvbXBvbmVudCBpbnRvIGRpcm5hbWU7IHN1YnN0aXR1dGUgIi4iIGlmIGVtcHR5ICovCi0gICAgaWYgKGRpcmxlbiA8PSAwKSB7Ci0gICAgICAgIGRpcm5hbWVbMF0gPSAnLic7Ci0gICAgICAgIGRpcm5hbWVbMV0gPSAnXDAnOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgYXNzZXJ0KGRpcmxlbiA8PSBNQVhQQVRITEVOKTsKLSAgICAgICAgbWVtY3B5KGRpcm5hbWUsIGJ1ZiwgZGlybGVuKTsKLSAgICAgICAgZGlybmFtZVtkaXJsZW5dID0gJ1wwJzsKLSAgICB9Ci0gICAgLyogT3BlbiB0aGUgZGlyZWN0b3J5IGFuZCBzZWFyY2ggdGhlIGVudHJpZXMgZm9yIGFuIGV4YWN0IG1hdGNoLiAqLwotICAgIGRpcnAgPSBvcGVuZGlyKGRpcm5hbWUpOwotICAgIGlmIChkaXJwKSB7Ci0gICAgICAgIGNoYXIgKm5hbWVXaXRoRXh0ID0gYnVmICsgbGVuIC0gbmFtZWxlbjsKLSAgICAgICAgd2hpbGUgKChkcCA9IHJlYWRkaXIoZGlycCkpICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGNvbnN0IGludCB0aGlzbGVuID0KLSNpZmRlZiBfRElSRU5UX0hBVkVfRF9OQU1FTEVOCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcC0+ZF9uYW1sZW47Ci0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKGRwLT5kX25hbWUpOwotI2VuZGlmCi0gICAgICAgICAgICBpZiAodGhpc2xlbiA+PSBuYW1lbGVuICYmCi0gICAgICAgICAgICAgICAgc3RyY21wKGRwLT5kX25hbWUsIG5hbWVXaXRoRXh0KSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgKHZvaWQpY2xvc2VkaXIoZGlycCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7IC8qIEZvdW5kICovCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgKHZvaWQpY2xvc2VkaXIoZGlycCk7Ci0gICAgfQotICAgIHJldHVybiAwIDsgLyogTm90IGZvdW5kICovCi0KLS8qIE9TLzIgKi8KLSNlbGlmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgSERJUiBoZGlyID0gMTsKLSAgICBVTE9ORyBzcmNoY250ID0gMTsKLSAgICBGSUxFRklOREJVRjMgZmZidWY7Ci0gICAgQVBJUkVUIHJjOwotCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OQ0FTRU9LIikgIT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICByYyA9IERvc0ZpbmRGaXJzdChidWYsCi0gICAgICAgICAgICAgICAgICAgICAgJmhkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgRklMRV9SRUFET05MWSB8IEZJTEVfSElEREVOIHwgRklMRV9TWVNURU0gfCBGSUxFX0RJUkVDVE9SWSwKLSAgICAgICAgICAgICAgICAgICAgICAmZmZidWYsIHNpemVvZihmZmJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgJnNyY2hjbnQsCi0gICAgICAgICAgICAgICAgICAgICAgRklMX1NUQU5EQVJEKTsKLSAgICBpZiAocmMgIT0gTk9fRVJST1IpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzdHJuY21wKGZmYnVmLmFjaE5hbWUsIG5hbWUsIG5hbWVsZW4pID09IDA7Ci0KLS8qIGFzc3VtaW5nIGl0J3MgYSBjYXNlLXNlbnNpdGl2ZSBmaWxlc3lzdGVtLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8hICovCi0jZWxzZQotICAgIHJldHVybiAxOwotCi0jZW5kaWYKLX0KLQotI2lmZGVmIEhBVkVfU1RBVAotCi0vKiBIZWxwZXIgdG8gbG9vayBmb3IgX19pbml0X18ucHkgb3IgX19pbml0X18ucHlbY29dIGluIHBvdGVudGlhbCBwYWNrYWdlICovCi1zdGF0aWMgaW50Ci1maW5kX2luaXRfbW9kdWxlKGNoYXIgKmJ1ZikKLXsKLSAgICBjb25zdCBzaXplX3Qgc2F2ZV9sZW4gPSBzdHJsZW4oYnVmKTsKLSAgICBzaXplX3QgaSA9IHNhdmVfbGVuOwotICAgIGNoYXIgKnBuYW1lOyAgLyogcG9pbnRlciB0byBzdGFydCBvZiBfX2luaXRfXyAqLwotICAgIHN0cnVjdCBzdGF0IHN0YXRidWY7Ci0KLS8qICAgICAgRm9yIGNhbGxpbmcgY2FzZV9vayhidWYsIGxlbiwgbmFtZWxlbiwgbmFtZSk6Ci0gKiAgICAgIC9hL2IvYy9kL2UvZi9nL2gvaS9qL2svc29tZV9sb25nX21vZHVsZV9uYW1lLnB5XDAKLSAqICAgICAgXiAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgIF4gICAgXgotICogICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tIGJ1ZiAtLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci0gKiAgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tIGxlbiAtLS0tLS0tLS0tLS0tLS0tLS18Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfC0tLS0tLSBuYW1lIC0tLS0tLS18Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfC0tLS0tIG5hbWVsZW4gLS0tLS18Ci0gKi8KLSAgICBpZiAoc2F2ZV9sZW4gKyAxMyA+PSBNQVhQQVRITEVOKQotICAgICAgICByZXR1cm4gMDsKLSAgICBidWZbaSsrXSA9IFNFUDsKLSAgICBwbmFtZSA9IGJ1ZiArIGk7Ci0gICAgc3RyY3B5KHBuYW1lLCAiX19pbml0X18ucHkiKTsKLSAgICBpZiAoc3RhdChidWYsICZzdGF0YnVmKSA9PSAwKSB7Ci0gICAgICAgIGlmIChjYXNlX29rKGJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgc2F2ZV9sZW4gKyA5LCAgICAgICAgICAgICAgIC8qIGxlbigiL19faW5pdF9fIikgKi8KLSAgICAgICAgICAgICAgICA4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxlbigiX19pbml0X18iKSAqLwotICAgICAgICAgICAgICAgIHBuYW1lKSkgewotICAgICAgICAgICAgYnVmW3NhdmVfbGVuXSA9ICdcMCc7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpICs9IHN0cmxlbihwbmFtZSk7Ci0gICAgc3RyY3B5KGJ1ZitpLCBQeV9PcHRpbWl6ZUZsYWcgPyAibyIgOiAiYyIpOwotICAgIGlmIChzdGF0KGJ1ZiwgJnN0YXRidWYpID09IDApIHsKLSAgICAgICAgaWYgKGNhc2Vfb2soYnVmLAotICAgICAgICAgICAgICAgICAgICBzYXZlX2xlbiArIDksICAgICAgICAgICAgICAgLyogbGVuKCIvX19pbml0X18iKSAqLwotICAgICAgICAgICAgICAgIDgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGVuKCJfX2luaXRfXyIpICovCi0gICAgICAgICAgICAgICAgcG5hbWUpKSB7Ci0gICAgICAgICAgICBidWZbc2F2ZV9sZW5dID0gJ1wwJzsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9Ci0gICAgfQotICAgIGJ1ZltzYXZlX2xlbl0gPSAnXDAnOwotICAgIHJldHVybiAwOwotfQotCi0jZW5kaWYgLyogSEFWRV9TVEFUICovCi0KLQotc3RhdGljIGludCBpbml0X2J1aWx0aW4oY2hhciAqKTsgLyogRm9yd2FyZCAqLwotCi1zdGF0aWMgUHlPYmplY3QqCi1sb2FkX2J1aWx0aW4oY2hhciAqbmFtZSwgY2hhciAqcGF0aG5hbWUsIGludCB0eXBlKQotewotICAgIFB5T2JqZWN0ICptLCAqbW9kdWxlczsKLSAgICBpbnQgZXJyOwotCi0gICAgaWYgKHBhdGhuYW1lICE9IE5VTEwgJiYgcGF0aG5hbWVbMF0gIT0gJ1wwJykKLSAgICAgICAgbmFtZSA9IHBhdGhuYW1lOwotCi0gICAgaWYgKHR5cGUgPT0gQ19CVUlMVElOKQotICAgICAgICBlcnIgPSBpbml0X2J1aWx0aW4obmFtZSk7Ci0gICAgZWxzZQotICAgICAgICBlcnIgPSBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUobmFtZSk7Ci0gICAgaWYgKGVyciA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChlcnIgPT0gMCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgIlB1cnBvcnRlZCAlcyBtb2R1bGUgJS4yMDBzIG5vdCBmb3VuZCIsCi0gICAgICAgICAgICAgICAgdHlwZSA9PSBDX0JVSUxUSU4gPwotICAgICAgICAgICAgICAgICJidWlsdGluIiA6ICJmcm96ZW4iLAotICAgICAgICAgICAgICAgIG5hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBtb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIG0gPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCBuYW1lKTsKLSAgICBpZiAobSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdCgKLSAgICAgICAgICAgICAgICBQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAiJXMgbW9kdWxlICUuMjAwcyBub3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQiLAotICAgICAgICAgICAgICAgIHR5cGUgPT0gQ19CVUlMVElOID8KLSAgICAgICAgICAgICAgICAiYnVpbHRpbiIgOiAiZnJvemVuIiwKLSAgICAgICAgICAgICAgICBuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0lOQ1JFRihtKTsKLSAgICByZXR1cm4gbTsKLX0KLQotLyogTG9hZCBhbiBleHRlcm5hbCBtb2R1bGUgdXNpbmcgdGhlIGRlZmF1bHQgc2VhcmNoIHBhdGggYW5kIHJldHVybgotICAgaXRzIG1vZHVsZSBvYmplY3QgV0lUSCBJTkNSRU1FTlRFRCBSRUZFUkVOQ0UgQ09VTlQgKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfbW9kdWxlKGNoYXIgKm5hbWUsIEZJTEUgKmZwLCBjaGFyICpwYXRobmFtZSwgaW50IHR5cGUsIFB5T2JqZWN0ICpsb2FkZXIpCi17Ci0gICAgUHlPYmplY3QgKm07Ci0KLSAgICAvKiBGaXJzdCBjaGVjayB0aGF0IHRoZXJlJ3MgYW4gb3BlbiBmaWxlIChpZiB3ZSBuZWVkIG9uZSkgICovCi0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBQWV9TT1VSQ0U6Ci0gICAgY2FzZSBQWV9DT01QSUxFRDoKLSAgICAgICAgaWYgKGZwID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgImZpbGUgb2JqZWN0IHJlcXVpcmVkIGZvciBpbXBvcnQgKHR5cGUgY29kZSAlZCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHR5cGUpIHsKLQotICAgIGNhc2UgUFlfU09VUkNFOgotICAgICAgICBtID0gbG9hZF9zb3VyY2VfbW9kdWxlKG5hbWUsIHBhdGhuYW1lLCBmcCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBQWV9DT01QSUxFRDoKLSAgICAgICAgbSA9IGxvYWRfY29tcGlsZWRfbW9kdWxlKG5hbWUsIHBhdGhuYW1lLCBmcCk7Ci0gICAgICAgIGJyZWFrOwotCi0jaWZkZWYgSEFWRV9EWU5BTUlDX0xPQURJTkcKLSAgICBjYXNlIENfRVhURU5TSU9OOgotICAgICAgICBtID0gX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKG5hbWUsIHBhdGhuYW1lLCBmcCk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0KLSAgICBjYXNlIFBLR19ESVJFQ1RPUlk6Ci0gICAgICAgIG0gPSBsb2FkX3BhY2thZ2UobmFtZSwgcGF0aG5hbWUpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ19CVUlMVElOOgotICAgIGNhc2UgUFlfRlJPWkVOOgotICAgICAgICBtID0gbG9hZF9idWlsdGluKG5hbWUsIHBhdGhuYW1lLCB0eXBlKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIElNUF9IT09LOiB7Ci0gICAgICAgIGlmIChsb2FkZXIgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgaG9vayB3aXRob3V0IGxvYWRlciIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgbSA9IFB5T2JqZWN0X0NhbGxNZXRob2QobG9hZGVyLCAibG9hZF9tb2R1bGUiLCAicyIsIG5hbWUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiRG9uJ3Qga25vdyBob3cgdG8gaW1wb3J0ICUuMjAwcyAodHlwZSBjb2RlICVkKSIsCi0gICAgICAgICAgICAgICAgICAgICAgbmFtZSwgdHlwZSk7Ci0gICAgICAgIG0gPSBOVUxMOwotCi0gICAgfQotCi0gICAgcmV0dXJuIG07Ci19Ci0KK3N0YXRpYyBpbnQgaW5pdF9idWlsdGluKFB5T2JqZWN0ICopOyAvKiBGb3J3YXJkICovCiAKIC8qIEluaXRpYWxpemUgYSBidWlsdC1pbiBtb2R1bGUuCiAgICBSZXR1cm4gMSBmb3Igc3VjY2VzcywgMCBpZiB0aGUgbW9kdWxlIGlzIG5vdCBmb3VuZCwgYW5kIC0xIHdpdGgKICAgIGFuIGV4Y2VwdGlvbiBzZXQgaWYgdGhlIGluaXRpYWxpemF0aW9uIGZhaWxlZC4gKi8KIAogc3RhdGljIGludAotaW5pdF9idWlsdGluKGNoYXIgKm5hbWUpCitpbml0X2J1aWx0aW4oUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgc3RydWN0IF9pbml0dGFiICpwOwogCi0gICAgaWYgKF9QeUltcG9ydF9GaW5kQnVpbHRpbihuYW1lKSAhPSBOVUxMKQorICAgIGlmIChfUHlJbXBvcnRfRmluZEV4dGVuc2lvbk9iamVjdChuYW1lLCBuYW1lKSAhPSBOVUxMKQogICAgICAgICByZXR1cm4gMTsKIAogICAgIGZvciAocCA9IFB5SW1wb3J0X0luaXR0YWI7IHAtPm5hbWUgIT0gTlVMTDsgcCsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICptb2Q7CiAgICAgICAgIFB5TW9kdWxlRGVmICpkZWY7Ci0gICAgICAgIGlmIChzdHJjbXAobmFtZSwgcC0+bmFtZSkgPT0gMCkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgcC0+bmFtZSkgPT0gMCkgewogICAgICAgICAgICAgaWYgKHAtPmluaXRmdW5jID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcmUtaW5pdCBpbnRlcm5hbCBtb2R1bGUgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCByZS1pbml0IGludGVybmFsIG1vZHVsZSAlUiIsCiAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiaW1wb3J0ICVzICMgYnVpbHRpblxuIiwgbmFtZSk7CiAgICAgICAgICAgICBtb2QgPSAoKnAtPmluaXRmdW5jKSgpOwogICAgICAgICAgICAgaWYgKG1vZCA9PSAwKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIC8qIFJlbWVtYmVyIHBvaW50ZXIgdG8gbW9kdWxlIGluaXQgZnVuY3Rpb24uICovCiAgICAgICAgICAgICBkZWYgPSBQeU1vZHVsZV9HZXREZWYobW9kKTsKICAgICAgICAgICAgIGRlZi0+bV9iYXNlLm1faW5pdCA9IHAtPmluaXRmdW5jOwotICAgICAgICAgICAgaWYgKF9QeUltcG9ydF9GaXh1cEJ1aWx0aW4obW9kLCBuYW1lKSA8IDApCisgICAgICAgICAgICBpZiAoX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KG1vZCwgbmFtZSwgbmFtZSkgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIC8qIEZpeHVwRXh0ZW5zaW9uIGhhcyBwdXQgdGhlIG1vZHVsZSBpbnRvIHN5cy5tb2R1bGVzLAogICAgICAgICAgICAgICAgc28gd2UgY2FuIHJlbGVhc2Ugb3VyIG93biByZWZlcmVuY2UuICovCkBAIC0yMjQ0LDM3ICs5NzAsMzcgQEAKIC8qIEZyb3plbiBtb2R1bGVzICovCiAKIHN0YXRpYyBzdHJ1Y3QgX2Zyb3plbiAqCi1maW5kX2Zyb3plbihjaGFyICpuYW1lKQorZmluZF9mcm96ZW4oUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgc3RydWN0IF9mcm96ZW4gKnA7CiAKLSAgICBpZiAoIW5hbWUpCisgICAgaWYgKG5hbWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IgKHAgPSBQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzOyA7IHArKykgewogICAgICAgICBpZiAocC0+bmFtZSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChzdHJjbXAocC0+bmFtZSwgbmFtZSkgPT0gMCkKKyAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsIHAtPm5hbWUpID09IDApCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIHA7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1nZXRfZnJvemVuX29iamVjdChjaGFyICpuYW1lKQorZ2V0X2Zyb3plbl9vYmplY3QoUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgc3RydWN0IF9mcm96ZW4gKnAgPSBmaW5kX2Zyb3plbihuYW1lKTsKICAgICBpbnQgc2l6ZTsKIAogICAgIGlmIChwID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIk5vIHN1Y2ggZnJvemVuIG9iamVjdCBuYW1lZCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgIk5vIHN1Y2ggZnJvemVuIG9iamVjdCBuYW1lZCAlUiIsCiAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChwLT5jb2RlID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkV4Y2x1ZGVkIGZyb3plbiBvYmplY3QgbmFtZWQgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICJFeGNsdWRlZCBmcm96ZW4gb2JqZWN0IG5hbWVkICVSIiwKICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yMjg1LDE0ICsxMDExLDE0IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1pc19mcm96ZW5fcGFja2FnZShjaGFyICpuYW1lKQoraXNfZnJvemVuX3BhY2thZ2UoUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgc3RydWN0IF9mcm96ZW4gKnAgPSBmaW5kX2Zyb3plbihuYW1lKTsKICAgICBpbnQgc2l6ZTsKIAogICAgIGlmIChwID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIk5vIHN1Y2ggZnJvemVuIG9iamVjdCBuYW1lZCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgIk5vIHN1Y2ggZnJvemVuIG9iamVjdCBuYW1lZCAlUiIsCiAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjMxMiwxOSArMTAzOCwyMCBAQAogICAgVGhpcyBmdW5jdGlvbiBpcyBhbHNvIHVzZWQgZnJvbSBmcm96ZW5tYWluLmMgKi8KIAogaW50Ci1QeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUoY2hhciAqbmFtZSkKK1B5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZU9iamVjdChQeU9iamVjdCAqbmFtZSkKIHsKLSAgICBzdHJ1Y3QgX2Zyb3plbiAqcCA9IGZpbmRfZnJvemVuKG5hbWUpOwotICAgIFB5T2JqZWN0ICpjbzsKLSAgICBQeU9iamVjdCAqbTsKKyAgICBzdHJ1Y3QgX2Zyb3plbiAqcDsKKyAgICBQeU9iamVjdCAqY28sICptLCAqcGF0aDsKICAgICBpbnQgaXNwYWNrYWdlOwogICAgIGludCBzaXplOwogCisgICAgcCA9IGZpbmRfZnJvemVuKG5hbWUpOworCiAgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKHAtPmNvZGUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiRXhjbHVkZWQgZnJvemVuIG9iamVjdCBuYW1lZCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgIkV4Y2x1ZGVkIGZyb3plbiBvYmplY3QgbmFtZWQgJVIiLAogICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC0yMzMyLDQxICsxMDU5LDM5IEBACiAgICAgaXNwYWNrYWdlID0gKHNpemUgPCAwKTsKICAgICBpZiAoaXNwYWNrYWdlKQogICAgICAgICBzaXplID0gLXNpemU7Ci0gICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiaW1wb3J0ICVzICMgZnJvemVuJXNcbiIsCi0gICAgICAgICAgICBuYW1lLCBpc3BhY2thZ2UgPyAiIHBhY2thZ2UiIDogIiIpOwogICAgIGNvID0gUHlNYXJzaGFsX1JlYWRPYmplY3RGcm9tU3RyaW5nKChjaGFyICopcC0+Y29kZSwgc2l6ZSk7CiAgICAgaWYgKGNvID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoIVB5Q29kZV9DaGVjayhjbykpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJmcm96ZW4gb2JqZWN0ICUuMjAwcyBpcyBub3QgYSBjb2RlIG9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAiZnJvemVuIG9iamVjdCAlUiBpcyBub3QgYSBjb2RlIG9iamVjdCIsCiAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgZ290byBlcnJfcmV0dXJuOwogICAgIH0KICAgICBpZiAoaXNwYWNrYWdlKSB7CiAgICAgICAgIC8qIFNldCBfX3BhdGhfXyB0byB0aGUgcGFja2FnZSBuYW1lICovCi0gICAgICAgIFB5T2JqZWN0ICpkLCAqcywgKmw7CisgICAgICAgIFB5T2JqZWN0ICpkLCAqbDsKICAgICAgICAgaW50IGVycjsKLSAgICAgICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZShuYW1lKTsKKyAgICAgICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdChuYW1lKTsKICAgICAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyX3JldHVybjsKICAgICAgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7Ci0gICAgICAgIHMgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZyhuYW1lKTsKLSAgICAgICAgaWYgKHMgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyX3JldHVybjsKICAgICAgICAgbCA9IFB5TGlzdF9OZXcoMSk7CiAgICAgICAgIGlmIChsID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKICAgICAgICAgICAgIGdvdG8gZXJyX3JldHVybjsKICAgICAgICAgfQotICAgICAgICBQeUxpc3RfU0VUX0lURU0obCwgMCwgcyk7CisgICAgICAgIFB5X0lOQ1JFRihuYW1lKTsKKyAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGwsIDAsIG5hbWUpOwogICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19wYXRoX18iLCBsKTsKICAgICAgICAgUHlfREVDUkVGKGwpOwogICAgICAgICBpZiAoZXJyICE9IDApCiAgICAgICAgICAgICBnb3RvIGVycl9yZXR1cm47CiAgICAgfQotICAgIG0gPSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4KG5hbWUsIGNvLCAiPGZyb3plbj4iKTsKKyAgICBwYXRoID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxmcm96ZW4+Iik7CisgICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJfcmV0dXJuOworICAgIG0gPSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdChuYW1lLCBjbywgcGF0aCwgTlVMTCk7CisgICAgUHlfREVDUkVGKHBhdGgpOwogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyX3JldHVybjsKICAgICBQeV9ERUNSRUYoY28pOwpAQCAtMjM3Nyw2ICsxMTAyLDE5IEBACiAgICAgcmV0dXJuIC0xOwogfQogCitpbnQKK1B5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZShjaGFyICpuYW1lKQoreworICAgIFB5T2JqZWN0ICpuYW1lb2JqOworICAgIGludCByZXQ7CisgICAgbmFtZW9iaiA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKG5hbWUpOworICAgIGlmIChuYW1lb2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXQgPSBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGVPYmplY3QobmFtZW9iaik7CisgICAgUHlfREVDUkVGKG5hbWVvYmopOworICAgIHJldHVybiByZXQ7Cit9CisKIAogLyogSW1wb3J0IGEgbW9kdWxlLCBlaXRoZXIgYnVpbHQtaW4sIGZyb3plbiwgb3IgZXh0ZXJuYWwsIGFuZCByZXR1cm4KICAgIGl0cyBtb2R1bGUgb2JqZWN0IFdJVEggSU5DUkVNRU5URUQgUkVGRVJFTkNFIENPVU5UICovCkBAIC0yNDA3LDU4NSArMTE0NSw0MTEgQEAKIFB5T2JqZWN0ICoKIFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soY29uc3QgY2hhciAqbmFtZSkKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIFB5T2JqZWN0ICptb2R1bGVzOwotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgbG9uZyBtZTsKLSNlbmRpZgotCi0gICAgLyogVHJ5IHRvIGdldCB0aGUgbW9kdWxlIGZyb20gc3lzLm1vZHVsZXNbbmFtZV0gKi8KLSAgICBtb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIGlmIChtb2R1bGVzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0ID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSk7Ci0gICAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICAvKiBjaGVjayB0aGUgaW1wb3J0IGxvY2sKLSAgICAgKiBtZSBtaWdodCBiZSAtMSBidXQgSSBpZ25vcmUgdGhlIGVycm9yIGhlcmUsIHRoZSBsb2NrIGZ1bmN0aW9uCi0gICAgICogdGFrZXMgY2FyZSBvZiB0aGUgcHJvYmxlbSAqLwotICAgIG1lID0gUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpOwotICAgIGlmIChpbXBvcnRfbG9ja190aHJlYWQgPT0gLTEgfHwgaW1wb3J0X2xvY2tfdGhyZWFkID09IG1lKSB7Ci0gICAgICAgIC8qIG5vIHRocmVhZCBvciBtZSBpcyBob2xkaW5nIHRoZSBsb2NrICovCi0gICAgICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnRNb2R1bGUobmFtZSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGltcG9ydCAlLjIwMHMgYmVjYXVzZSB0aGUgaW1wb3J0IGxvY2siCi0gICAgICAgICAgICAgICAgICAgICAiaXMgaGVsZCBieSBhbm90aGVyIHRocmVhZC4iLAotICAgICAgICAgICAgICAgICAgICAgbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSNlbHNlCiAgICAgcmV0dXJuIFB5SW1wb3J0X0ltcG9ydE1vZHVsZShuYW1lKTsKLSNlbmRpZgogfQogCi0vKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyBmb3IgaGVscGVyIHJvdXRpbmVzICovCi1zdGF0aWMgUHlPYmplY3QgKmdldF9wYXJlbnQoUHlPYmplY3QgKmdsb2JhbHMsIGNoYXIgKmJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpwX2J1ZmxlbiwgaW50IGxldmVsKTsKLXN0YXRpYyBQeU9iamVjdCAqbG9hZF9uZXh0KFB5T2JqZWN0ICptb2QsIFB5T2JqZWN0ICphbHRtb2QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqcF9uYW1lLCBjaGFyICpidWYsIFB5X3NzaXplX3QgKnBfYnVmbGVuKTsKLXN0YXRpYyBpbnQgbWFya19taXNzKGNoYXIgKm5hbWUpOwotc3RhdGljIGludCBlbnN1cmVfZnJvbWxpc3QoUHlPYmplY3QgKm1vZCwgUHlPYmplY3QgKmZyb21saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmLCBQeV9zc2l6ZV90IGJ1ZmxlbiwgaW50IHJlY3Vyc2l2ZSk7Ci1zdGF0aWMgUHlPYmplY3QgKiBpbXBvcnRfc3VibW9kdWxlKFB5T2JqZWN0ICptb2QsIGNoYXIgKm5hbWUsIGNoYXIgKmZ1bGxuYW1lKTsKIAotLyogVGhlIE1hZ251bSBPcHVzIG9mIGRvdHRlZC1uYW1lIGltcG9ydCA6LSkgKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcG9ydF9tb2R1bGVfbGV2ZWwoY2hhciAqbmFtZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpsb2NhbHMsCi0gICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tbGlzdCwgaW50IGxldmVsKQorLyogUmVtb3ZlIGltcG9ydGxpYiBmcmFtZXMgZnJvbSB0aGUgdHJhY2ViYWNrLAorICogZXhjZXB0IGluIFZlcmJvc2UgbW9kZS4gKi8KK3N0YXRpYyB2b2lkCityZW1vdmVfaW1wb3J0bGliX2ZyYW1lcyh2b2lkKQogewotICAgIGNoYXIgKmJ1ZjsKLSAgICBQeV9zc2l6ZV90IGJ1ZmxlbiA9IDA7Ci0gICAgUHlPYmplY3QgKnBhcmVudCwgKmhlYWQsICpuZXh0LCAqdGFpbDsKKyAgICBjb25zdCBjaGFyICppbXBvcnRsaWJfZmlsZW5hbWUgPSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iOworICAgIGNvbnN0IGNoYXIgKnJlbW92ZV9mcmFtZXMgPSAiX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZCI7CisgICAgaW50IGFsd2F5c190cmltID0gMDsKKyAgICBpbnQgaW5faW1wb3J0bGliID0gMDsKKyAgICBQeU9iamVjdCAqZXhjZXB0aW9uLCAqdmFsdWUsICpiYXNlX3RiLCAqdGI7CisgICAgUHlPYmplY3QgKipwcmV2X2xpbmssICoqb3V0ZXJfbGluayA9IE5VTEw7CiAKLSAgICBpZiAoc3RyY2hyKG5hbWUsICcvJykgIT0gTlVMTAotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgfHwgc3RyY2hyKG5hbWUsICdcXCcpICE9IE5VTEwKKyAgICAvKiBTeW5vcHNpczogaWYgaXQncyBhbiBJbXBvcnRFcnJvciwgd2UgdHJpbSBhbGwgaW1wb3J0bGliIGNodW5rcworICAgICAgIGZyb20gdGhlIHRyYWNlYmFjay4gV2UgYWx3YXlzIHRyaW0gY2h1bmtzCisgICAgICAgd2hpY2ggZW5kIHdpdGggYSBjYWxsIHRvICJfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkIi4gKi8KKworICAgIFB5RXJyX0ZldGNoKCZleGNlcHRpb24sICZ2YWx1ZSwgJmJhc2VfdGIpOworICAgIGlmICghZXhjZXB0aW9uIHx8IFB5X1ZlcmJvc2VGbGFnKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgaWYgKFB5VHlwZV9Jc1N1YnR5cGUoKFB5VHlwZU9iamVjdCAqKSBleGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgKFB5VHlwZU9iamVjdCAqKSBQeUV4Y19JbXBvcnRFcnJvcikpCisgICAgICAgIGFsd2F5c190cmltID0gMTsKKworICAgIHByZXZfbGluayA9ICZiYXNlX3RiOworICAgIHRiID0gYmFzZV90YjsKKyAgICB3aGlsZSAodGIgIT0gTlVMTCkgeworICAgICAgICBQeVRyYWNlYmFja09iamVjdCAqdHJhY2ViYWNrID0gKFB5VHJhY2ViYWNrT2JqZWN0ICopdGI7CisgICAgICAgIFB5T2JqZWN0ICpuZXh0ID0gKFB5T2JqZWN0ICopIHRyYWNlYmFjay0+dGJfbmV4dDsKKyAgICAgICAgUHlGcmFtZU9iamVjdCAqZnJhbWUgPSB0cmFjZWJhY2stPnRiX2ZyYW1lOworICAgICAgICBQeUNvZGVPYmplY3QgKmNvZGUgPSBmcmFtZS0+Zl9jb2RlOworICAgICAgICBpbnQgbm93X2luX2ltcG9ydGxpYjsKKworICAgICAgICBhc3NlcnQoUHlUcmFjZUJhY2tfQ2hlY2sodGIpKTsKKyAgICAgICAgbm93X2luX2ltcG9ydGxpYiA9IChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS0+Y29fZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYl9maWxlbmFtZSkgPT0gMCk7CisgICAgICAgIGlmIChub3dfaW5faW1wb3J0bGliICYmICFpbl9pbXBvcnRsaWIpIHsKKyAgICAgICAgICAgIC8qIFRoaXMgaXMgdGhlIGxpbmsgdG8gdGhpcyBjaHVuayBvZiBpbXBvcnRsaWIgdHJhY2ViYWNrcyAqLworICAgICAgICAgICAgb3V0ZXJfbGluayA9IHByZXZfbGluazsKKyAgICAgICAgfQorICAgICAgICBpbl9pbXBvcnRsaWIgPSBub3dfaW5faW1wb3J0bGliOworCisgICAgICAgIGlmIChpbl9pbXBvcnRsaWIgJiYKKyAgICAgICAgICAgIChhbHdheXNfdHJpbSB8fAorICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGNvZGUtPmNvX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlX2ZyYW1lcykgPT0gMCkpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0bXAgPSAqb3V0ZXJfbGluazsKKyAgICAgICAgICAgICpvdXRlcl9saW5rID0gbmV4dDsKKyAgICAgICAgICAgIFB5X1hJTkNSRUYobmV4dCk7CisgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgICAgIHByZXZfbGluayA9IG91dGVyX2xpbms7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwcmV2X2xpbmsgPSAoUHlPYmplY3QgKiopICZ0cmFjZWJhY2stPnRiX25leHQ7CisgICAgICAgIH0KKyAgICAgICAgdGIgPSBuZXh0OworICAgIH0KK2RvbmU6CisgICAgUHlFcnJfUmVzdG9yZShleGNlcHRpb24sIHZhbHVlLCBiYXNlX3RiKTsKK30KKworCitQeU9iamVjdCAqCitQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmdpdmVuX2dsb2JhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbG9jYWxzLCBQeU9iamVjdCAqZ2l2ZW5fZnJvbWxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWwpCit7CisgICAgX1B5X0lERU5USUZJRVIoX19pbXBvcnRfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19pbml0aWFsaXppbmdfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19wYWNrYWdlX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fcGF0aF9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX2ZpbmRfYW5kX2xvYWQpOworICAgIF9QeV9JREVOVElGSUVSKF9oYW5kbGVfZnJvbWxpc3QpOworICAgIF9QeV9JREVOVElGSUVSKF9sb2NrX3VubG9ja19tb2R1bGUpOworICAgIF9QeV9zdGF0aWNfc3RyaW5nKHNpbmdsZV9kb3QsICIuIik7CisgICAgUHlPYmplY3QgKmFic19uYW1lID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYnVpbHRpbnNfaW1wb3J0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZmluYWxfbW9kID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbW9kID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcGFja2FnZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmdsb2JhbHMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmcm9tbGlzdCA9IE5VTEw7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CisKKyAgICAvKiBNYWtlIHN1cmUgdG8gdXNlIGRlZmF1bHQgdmFsdWVzIHNvIGFzIHRvIG5vdCBoYXZlCisgICAgICAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MoKSB0cnVuY2F0ZSB0aGUgcGFyYW1ldGVyIGxpc3QgYmVjYXVzZSBvZiBhCisgICAgICAgTlVMTCBhcmd1bWVudC4gKi8KKyAgICBpZiAoZ2l2ZW5fZ2xvYmFscyA9PSBOVUxMKSB7CisgICAgICAgIGdsb2JhbHMgPSBQeURpY3RfTmV3KCk7CisgICAgICAgIGlmIChnbG9iYWxzID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIE9ubHkgaGF2ZSB0byBjYXJlIHdoYXQgZ2l2ZW5fZ2xvYmFscyBpcyBpZiBpdCB3aWxsIGJlIHVzZWQKKyAgICAgICAgICAgZm9yIHNvbWV0aGluZy4gKi8KKyAgICAgICAgaWYgKGxldmVsID4gMCAmJiAhUHlEaWN0X0NoZWNrKGdpdmVuX2dsb2JhbHMpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZ2xvYmFscyBtdXN0IGJlIGEgZGljdCIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBnbG9iYWxzID0gZ2l2ZW5fZ2xvYmFsczsKKyAgICAgICAgUHlfSU5DUkVGKGdsb2JhbHMpOworICAgIH0KKworICAgIGlmIChnaXZlbl9mcm9tbGlzdCA9PSBOVUxMKSB7CisgICAgICAgIGZyb21saXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICAgICAgaWYgKGZyb21saXN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZyb21saXN0ID0gZ2l2ZW5fZnJvbWxpc3Q7CisgICAgICAgIFB5X0lOQ1JFRihmcm9tbGlzdCk7CisgICAgfQorICAgIGlmIChuYW1lID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJFbXB0eSBtb2R1bGUgbmFtZSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIC8qIFRoZSBiZWxvdyBjb2RlIGlzIGltcG9ydGxpYi5fX2ltcG9ydF9fKCkgJiBfZ2NkX2ltcG9ydCgpLCBwb3J0ZWQgdG8gQworICAgICAgIGZvciBhZGRlZCBwZXJmb3JtYW5jZS4gKi8KKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKG5hbWUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJtb2R1bGUgbmFtZSBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGVsc2UgaWYgKFB5VW5pY29kZV9SRUFEWShuYW1lKSA8IDApIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKGxldmVsIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImxldmVsIG11c3QgYmUgPj0gMCIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBlbHNlIGlmIChsZXZlbCA+IDApIHsKKyAgICAgICAgcGFja2FnZSA9IF9QeURpY3RfR2V0SXRlbUlkKGdsb2JhbHMsICZQeUlkX19fcGFja2FnZV9fKTsKKyAgICAgICAgaWYgKHBhY2thZ2UgIT0gTlVMTCAmJiBwYWNrYWdlICE9IFB5X05vbmUpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKKyAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHBhY2thZ2UpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInBhY2thZ2UgbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwYWNrYWdlID0gX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19uYW1lX18pOworICAgICAgICAgICAgaWYgKHBhY2thZ2UgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgIidfX25hbWVfXycgbm90IGluIGdsb2JhbHMiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhwYWNrYWdlKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJfX25hbWVfXyBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7CisKKyAgICAgICAgICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3BhdGhfXykgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXJ0aXRpb24gPSBOVUxMOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpib3Jyb3dlZF9kb3QgPSBfUHlVbmljb2RlX0Zyb21JZCgmc2luZ2xlX2RvdCk7CisgICAgICAgICAgICAgICAgaWYgKGJvcnJvd2VkX2RvdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHBhcnRpdGlvbiA9IFB5VW5pY29kZV9SUGFydGl0aW9uKHBhY2thZ2UsIGJvcnJvd2VkX2RvdCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhY2thZ2UpOworICAgICAgICAgICAgICAgIGlmIChwYXJ0aXRpb24gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwYWNrYWdlID0gUHlUdXBsZV9HRVRfSVRFTShwYXJ0aXRpb24sIDApOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocGFydGl0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChQeURpY3RfR2V0SXRlbShpbnRlcnAtPm1vZHVsZXMsIHBhY2thZ2UpID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIlBhcmVudCBtb2R1bGUgJVIgbm90IGxvYWRlZCwgY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgIgorICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IiwgcGFja2FnZSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeyAgLyogbGV2ZWwgPT0gMCAqLworICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgPT0gMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJFbXB0eSBtb2R1bGUgbmFtZSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBwYWNrYWdlID0gUHlfTm9uZTsKKyAgICAgICAgUHlfSU5DUkVGKHBhY2thZ2UpOworICAgIH0KKworICAgIGlmIChsZXZlbCA+IDApIHsKKyAgICAgICAgUHlfc3NpemVfdCBsYXN0X2RvdCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHBhY2thZ2UpOworICAgICAgICBQeU9iamVjdCAqYmFzZSA9IE5VTEw7CisgICAgICAgIGludCBsZXZlbF91cCA9IDE7CisKKyAgICAgICAgZm9yIChsZXZlbF91cCA9IDE7IGxldmVsX3VwIDwgbGV2ZWw7IGxldmVsX3VwICs9IDEpIHsKKyAgICAgICAgICAgIGxhc3RfZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKHBhY2thZ2UsICcuJywgMCwgbGFzdF9kb3QsIC0xKTsKKyAgICAgICAgICAgIGlmIChsYXN0X2RvdCA9PSAtMikgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChsYXN0X2RvdCA9PSAtMSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCBiZXlvbmQgdG9wLWxldmVsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhY2thZ2UiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJhc2UgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHBhY2thZ2UsIDAsIGxhc3RfZG90KTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID4gMCkgeworICAgICAgICAgICAgUHlPYmplY3QgKmJvcnJvd2VkX2RvdCwgKnNlcSA9IE5VTEw7CisKKyAgICAgICAgICAgIGJvcnJvd2VkX2RvdCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZzaW5nbGVfZG90KTsKKyAgICAgICAgICAgIHNlcSA9IFB5VHVwbGVfUGFjaygyLCBiYXNlLCBuYW1lKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlKTsKKyAgICAgICAgICAgIGlmIChib3Jyb3dlZF9kb3QgPT0gTlVMTCB8fCBzZXEgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFic19uYW1lID0gUHlVbmljb2RlX0pvaW4oYm9ycm93ZWRfZG90LCBzZXEpOworICAgICAgICAgICAgUHlfREVDUkVGKHNlcSk7CisgICAgICAgICAgICBpZiAoYWJzX25hbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhYnNfbmFtZSA9IGJhc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFic19uYW1lID0gbmFtZTsKKyAgICAgICAgUHlfSU5DUkVGKGFic19uYW1lKTsKKyAgICB9CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIF9QeUltcG9ydF9BY3F1aXJlTG9jaygpOwogI2VuZGlmCi0gICAgICAgICkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiSW1wb3J0IGJ5IGZpbGVuYW1lIGlzIG5vdCBzdXBwb3J0ZWQuIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgLyogRnJvbSB0aGlzIHBvaW50IGZvcndhcmQsIGdvdG8gZXJyb3Jfd2l0aF91bmxvY2shICovCisgICAgaWYgKFB5RGljdF9DaGVjayhnbG9iYWxzKSkgeworICAgICAgICBidWlsdGluc19pbXBvcnQgPSBfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX2ltcG9ydF9fKTsKICAgICB9Ci0KLSAgICBidWYgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICBpZiAoYnVmID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIHBhcmVudCA9IGdldF9wYXJlbnQoZ2xvYmFscywgYnVmLCAmYnVmbGVuLCBsZXZlbCk7Ci0gICAgaWYgKHBhcmVudCA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0KLSAgICBoZWFkID0gbG9hZF9uZXh0KHBhcmVudCwgbGV2ZWwgPCAwID8gUHlfTm9uZSA6IHBhcmVudCwgJm5hbWUsIGJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICZidWZsZW4pOwotICAgIGlmIChoZWFkID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLQotICAgIHRhaWwgPSBoZWFkOwotICAgIFB5X0lOQ1JFRih0YWlsKTsKLSAgICB3aGlsZSAobmFtZSkgewotICAgICAgICBuZXh0ID0gbG9hZF9uZXh0KHRhaWwsIHRhaWwsICZuYW1lLCBidWYsICZidWZsZW4pOwotICAgICAgICBQeV9ERUNSRUYodGFpbCk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihoZWFkKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICBpZiAoYnVpbHRpbnNfaW1wb3J0ID09IE5VTEwpIHsKKyAgICAgICAgYnVpbHRpbnNfaW1wb3J0ID0gX1B5RGljdF9HZXRJdGVtSWQoaW50ZXJwLT5idWlsdGlucywgJlB5SWRfX19pbXBvcnRfXyk7CisgICAgICAgIGlmIChidWlsdGluc19pbXBvcnQgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiX19pbXBvcnRfXyBtaXNzaW5nIik7CiAgICAgICAgIH0KLSAgICAgICAgdGFpbCA9IG5leHQ7CiAgICAgfQotICAgIGlmICh0YWlsID09IFB5X05vbmUpIHsKLSAgICAgICAgLyogSWYgdGFpbCBpcyBQeV9Ob25lLCBib3RoIGdldF9wYXJlbnQgYW5kIGxvYWRfbmV4dCBmb3VuZAotICAgICAgICAgICBhbiBlbXB0eSBtb2R1bGUgbmFtZTogc29tZW9uZSBjYWxsZWQgX19pbXBvcnRfXygiIikgb3IKLSAgICAgICAgICAgZG9jdG9yZWQgZmF1bHR5IGJ5dGVjb2RlICovCi0gICAgICAgIFB5X0RFQ1JFRih0YWlsKTsKLSAgICAgICAgUHlfREVDUkVGKGhlYWQpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJFbXB0eSBtb2R1bGUgbmFtZSIpOwotICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgfQorICAgIFB5X0lOQ1JFRihidWlsdGluc19pbXBvcnQpOwogCi0gICAgaWYgKGZyb21saXN0ICE9IE5VTEwpIHsKLSAgICAgICAgaW50IGIgPSAoZnJvbWxpc3QgPT0gUHlfTm9uZSkgPyAwIDogUHlPYmplY3RfSXNUcnVlKGZyb21saXN0KTsKLSAgICAgICAgaWYgKGIgPCAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodGFpbCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaGVhZCk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgbW9kID0gUHlEaWN0X0dldEl0ZW0oaW50ZXJwLT5tb2R1bGVzLCBhYnNfbmFtZSk7CisgICAgaWYgKG1vZCA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5T2JqZWN0ICptc2cgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiaW1wb3J0IG9mICVSIGhhbHRlZDsgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUgaW4gc3lzLm1vZHVsZXMiLCBhYnNfbmFtZSk7CisgICAgICAgIGlmIChtc2cgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3IobXNnLCBhYnNfbmFtZSwgTlVMTCk7CisgICAgICAgICAgICBQeV9ERUNSRUYobXNnKTsKICAgICAgICAgfQotICAgICAgICBpZiAoIWIpCi0gICAgICAgICAgICBmcm9tbGlzdCA9IE5VTEw7CisgICAgICAgIG1vZCA9IE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3Jfd2l0aF91bmxvY2s7CiAgICAgfQorICAgIGVsc2UgaWYgKG1vZCAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICp2YWx1ZTsKKyAgICAgICAgaW50IGluaXRpYWxpemluZyA9IDA7CiAKLSAgICBpZiAoZnJvbWxpc3QgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYodGFpbCk7Ci0gICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICAgICAgcmV0dXJuIGhlYWQ7CisgICAgICAgIFB5X0lOQ1JFRihtb2QpOworICAgICAgICAvKiBPcHRpbWl6YXRpb246IG9ubHkgY2FsbCBfYm9vdHN0cmFwLl9sb2NrX3VubG9ja19tb2R1bGUoKSBpZgorICAgICAgICAgICBfX2luaXRpYWxpemluZ19fIGlzIHRydWUuCisgICAgICAgICAgIE5PVEU6IGJlY2F1c2Ugb2YgdGhpcywgX19pbml0aWFsaXppbmdfXyBtdXN0IGJlIHNldCAqYmVmb3JlKgorICAgICAgICAgICBzdHVmZmluZyB0aGUgbmV3IG1vZHVsZSBpbiBzeXMubW9kdWxlcy4KKyAgICAgICAgICovCisgICAgICAgIHZhbHVlID0gX1B5T2JqZWN0X0dldEF0dHJJZChtb2QsICZQeUlkX19faW5pdGlhbGl6aW5nX18pOworICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW5pdGlhbGl6aW5nID0gUHlPYmplY3RfSXNUcnVlKHZhbHVlKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICBpZiAoaW5pdGlhbGl6aW5nID09IC0xKQorICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGluaXRpYWxpemluZyA+IDApIHsKKyAgICAgICAgICAgIC8qIF9ib290c3RyYXAuX2xvY2tfdW5sb2NrX21vZHVsZSgpIHJlbGVhc2VzIHRoZSBpbXBvcnQgbG9jayAqLworICAgICAgICAgICAgdmFsdWUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZE9iaklkQXJncyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX2xvY2tfdW5sb2NrX21vZHVsZSwgYWJzX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAgICAgICAgIGlmIChfUHlJbXBvcnRfUmVsZWFzZUxvY2soKSA8IDApIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAibm90IGhvbGRpbmcgdGhlIGltcG9ydCBsb2NrIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICB9CiAgICAgfQotCi0gICAgUHlfREVDUkVGKGhlYWQpOwotICAgIGlmICghZW5zdXJlX2Zyb21saXN0KHRhaWwsIGZyb21saXN0LCBidWYsIGJ1ZmxlbiwgMCkpIHsKLSAgICAgICAgUHlfREVDUkVGKHRhaWwpOwotICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgZWxzZSB7CisgICAgICAgIC8qIF9ib290c3RyYXAuX2ZpbmRfYW5kX2xvYWQoKSByZWxlYXNlcyB0aGUgaW1wb3J0IGxvY2sgKi8KKyAgICAgICAgbW9kID0gX1B5T2JqZWN0X0NhbGxNZXRob2RPYmpJZEFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19maW5kX2FuZF9sb2FkLCBhYnNfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbnNfaW1wb3J0LCBOVUxMKTsKKyAgICAgICAgaWYgKG1vZCA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CiAgICAgfQorICAgIC8qIEZyb20gbm93IG9uIHdlIGRvbid0IGhvbGQgdGhlIGltcG9ydCBsb2NrIGFueW1vcmUuICovCiAKLSAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgcmV0dXJuIHRhaWw7CisgICAgaWYgKFB5T2JqZWN0X05vdChmcm9tbGlzdCkpIHsKKyAgICAgICAgaWYgKGxldmVsID09IDAgfHwgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgPiAwKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZnJvbnQgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKnBhcnRpdGlvbiA9IE5VTEw7CisgICAgICAgICAgICBQeU9iamVjdCAqYm9ycm93ZWRfZG90ID0gX1B5VW5pY29kZV9Gcm9tSWQoJnNpbmdsZV9kb3QpOwogCi1lcnJvcl9leGl0OgotICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGlmIChib3Jyb3dlZF9kb3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHBhcnRpdGlvbiA9IFB5VW5pY29kZV9QYXJ0aXRpb24obmFtZSwgYm9ycm93ZWRfZG90KTsKKyAgICAgICAgICAgIGlmIChwYXJ0aXRpb24gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChQeVR1cGxlX0dFVF9JVEVNKHBhcnRpdGlvbiwgMSkpID09IDApIHsKKyAgICAgICAgICAgICAgICAvKiBObyBkb3QgaW4gbW9kdWxlIG5hbWUsIHNpbXBsZSBleGl0ICovCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhcnRpdGlvbik7CisgICAgICAgICAgICAgICAgZmluYWxfbW9kID0gbW9kOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihtb2QpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZyb250ID0gUHlUdXBsZV9HRVRfSVRFTShwYXJ0aXRpb24sIDApOworICAgICAgICAgICAgUHlfSU5DUkVGKGZyb250KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJ0aXRpb24pOworCisgICAgICAgICAgICBpZiAobGV2ZWwgPT0gMCkgeworICAgICAgICAgICAgICAgIGZpbmFsX21vZCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoYnVpbHRpbnNfaW1wb3J0LCBmcm9udCwgTlVMTCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZyb250KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY3V0X29mZiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChmcm9udCk7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBhYnNfbmFtZV9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChhYnNfbmFtZSk7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRvX3JldHVybiA9IFB5VW5pY29kZV9TdWJzdHJpbmcoYWJzX25hbWUsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic19uYW1lX2xlbiAtIGN1dF9vZmYpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9udCk7CisgICAgICAgICAgICAgICAgaWYgKHRvX3JldHVybiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZmluYWxfbW9kID0gUHlEaWN0X0dldEl0ZW0oaW50ZXJwLT5tb2R1bGVzLCB0b19yZXR1cm4pOworICAgICAgICAgICAgICAgIGlmIChmaW5hbF9tb2QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJVIgbm90IGluIHN5cy5tb2R1bGVzIGFzIGV4cGVjdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvX3JldHVybik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZmluYWxfbW9kKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRvX3JldHVybik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmaW5hbF9tb2QgPSBtb2Q7CisgICAgICAgICAgICBQeV9JTkNSRUYobW9kKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZmluYWxfbW9kID0gX1B5T2JqZWN0X0NhbGxNZXRob2RPYmpJZEFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19oYW5kbGVfZnJvbWxpc3QsIG1vZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3QsIGJ1aWx0aW5zX2ltcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgfQorICAgIGdvdG8gZXJyb3I7CisKKyAgZXJyb3Jfd2l0aF91bmxvY2s6CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoX1B5SW1wb3J0X1JlbGVhc2VMb2NrKCkgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJub3QgaG9sZGluZyB0aGUgaW1wb3J0IGxvY2siKTsKKyAgICB9CisjZW5kaWYKKyAgZXJyb3I6CisgICAgUHlfWERFQ1JFRihhYnNfbmFtZSk7CisgICAgUHlfWERFQ1JFRihidWlsdGluc19pbXBvcnQpOworICAgIFB5X1hERUNSRUYobW9kKTsKKyAgICBQeV9YREVDUkVGKHBhY2thZ2UpOworICAgIFB5X1hERUNSRUYoZ2xvYmFscyk7CisgICAgUHlfWERFQ1JFRihmcm9tbGlzdCk7CisgICAgaWYgKGZpbmFsX21vZCA9PSBOVUxMKQorICAgICAgICByZW1vdmVfaW1wb3J0bGliX2ZyYW1lcygpOworICAgIHJldHVybiBmaW5hbF9tb2Q7CiB9CiAKIFB5T2JqZWN0ICoKLVB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tbGlzdCwgaW50IGxldmVsKQorUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwoY29uc3QgY2hhciAqbmFtZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpsb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnJvbWxpc3QsIGludCBsZXZlbCkKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIF9QeUltcG9ydF9BY3F1aXJlTG9jaygpOwotICAgIHJlc3VsdCA9IGltcG9ydF9tb2R1bGVfbGV2ZWwobmFtZSwgZ2xvYmFscywgbG9jYWxzLCBmcm9tbGlzdCwgbGV2ZWwpOwotICAgIGlmIChfUHlJbXBvcnRfUmVsZWFzZUxvY2soKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihyZXN1bHQpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBob2xkaW5nIHRoZSBpbXBvcnQgbG9jayIpOworICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqbW9kOworICAgIG5hbWVvYmogPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKKyAgICBpZiAobmFtZW9iaiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogUmV0dXJuIHRoZSBwYWNrYWdlIHRoYXQgYW4gaW1wb3J0IGlzIGJlaW5nIHBlcmZvcm1lZCBpbi4gIElmIGdsb2JhbHMgY29tZXMKLSAgIGZyb20gdGhlIG1vZHVsZSBmb28uYmFyLmJhdCAobm90IGl0c2VsZiBhIHBhY2thZ2UpLCB0aGlzIHJldHVybnMgdGhlCi0gICBzeXMubW9kdWxlcyBlbnRyeSBmb3IgZm9vLmJhci4gIElmIGdsb2JhbHMgaXMgZnJvbSBhIHBhY2thZ2UncyBfX2luaXRfXy5weSwKLSAgIHRoZSBwYWNrYWdlJ3MgZW50cnkgaW4gc3lzLm1vZHVsZXMgaXMgcmV0dXJuZWQsIGFzIGEgYm9ycm93ZWQgcmVmZXJlbmNlLgotCi0gICBUaGUgKm5hbWUqIG9mIHRoZSByZXR1cm5lZCBwYWNrYWdlIGlzIHJldHVybmVkIGluIGJ1Ziwgd2l0aCB0aGUgbGVuZ3RoIG9mCi0gICB0aGUgbmFtZSBpbiAqcF9idWZsZW4uCi0KLSAgIElmIGdsb2JhbHMgZG9lc24ndCBjb21lIGZyb20gYSBwYWNrYWdlIG9yIGEgbW9kdWxlIGluIGEgcGFja2FnZSwgb3IgYQotICAgY29ycmVzcG9uZGluZyBlbnRyeSBpcyBub3QgZm91bmQgaW4gc3lzLm1vZHVsZXMsIFB5X05vbmUgaXMgcmV0dXJuZWQuCi0qLwotc3RhdGljIFB5T2JqZWN0ICoKLWdldF9wYXJlbnQoUHlPYmplY3QgKmdsb2JhbHMsIGNoYXIgKmJ1ZiwgUHlfc3NpemVfdCAqcF9idWZsZW4sIGludCBsZXZlbCkKLXsKLSAgICBzdGF0aWMgUHlPYmplY3QgKm5hbWVzdHIgPSBOVUxMOwotICAgIHN0YXRpYyBQeU9iamVjdCAqcGF0aHN0ciA9IE5VTEw7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpwa2dzdHIgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpwa2duYW1lLCAqbW9kbmFtZSwgKm1vZHBhdGgsICptb2R1bGVzLCAqcGFyZW50OwotICAgIGludCBvcmlnX2xldmVsID0gbGV2ZWw7Ci0KLSAgICBpZiAoZ2xvYmFscyA9PSBOVUxMIHx8ICFQeURpY3RfQ2hlY2soZ2xvYmFscykgfHwgIWxldmVsKQotICAgICAgICByZXR1cm4gUHlfTm9uZTsKLQotICAgIGlmIChuYW1lc3RyID09IE5VTEwpIHsKLSAgICAgICAgbmFtZXN0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX25hbWVfXyIpOwotICAgICAgICBpZiAobmFtZXN0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChwYXRoc3RyID09IE5VTEwpIHsKLSAgICAgICAgcGF0aHN0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX3BhdGhfXyIpOwotICAgICAgICBpZiAocGF0aHN0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChwa2dzdHIgPT0gTlVMTCkgewotICAgICAgICBwa2dzdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19wYWNrYWdlX18iKTsKLSAgICAgICAgaWYgKHBrZ3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgKmJ1ZiA9ICdcMCc7Ci0gICAgKnBfYnVmbGVuID0gMDsKLSAgICBwa2duYW1lID0gUHlEaWN0X0dldEl0ZW0oZ2xvYmFscywgcGtnc3RyKTsKLQotICAgIGlmICgocGtnbmFtZSAhPSBOVUxMKSAmJiAocGtnbmFtZSAhPSBQeV9Ob25lKSkgewotICAgICAgICAvKiBfX3BhY2thZ2VfXyBpcyBzZXQsIHNvIHVzZSBpdCAqLwotICAgICAgICBjaGFyICpwa2duYW1lX3N0cjsKLSAgICAgICAgUHlfc3NpemVfdCBsZW47Ci0KLSAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2socGtnbmFtZSkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX3BhY2thZ2VfXyBzZXQgdG8gbm9uLXN0cmluZyIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgcGtnbmFtZV9zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShwa2duYW1lLCAmbGVuKTsKLSAgICAgICAgaWYgKGxlbiA9PSAwKSB7Ci0gICAgICAgICAgICBpZiAobGV2ZWwgPiAwKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJBdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IGluIG5vbi1wYWNrYWdlIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICAgICAgfQotICAgICAgICBpZiAobGVuID4gTUFYUEFUSExFTikgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhY2thZ2UgbmFtZSB0b28gbG9uZyIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgc3RyY3B5KGJ1ZiwgcGtnbmFtZV9zdHIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIF9fcGFja2FnZV9fIG5vdCBzZXQsIHNvIGZpZ3VyZSBpdCBvdXQgYW5kIHNldCBpdCAqLwotICAgICAgICBtb2RuYW1lID0gUHlEaWN0X0dldEl0ZW0oZ2xvYmFscywgbmFtZXN0cik7Ci0gICAgICAgIGlmIChtb2RuYW1lID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhtb2RuYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBQeV9Ob25lOwotCi0gICAgICAgIG1vZHBhdGggPSBQeURpY3RfR2V0SXRlbShnbG9iYWxzLCBwYXRoc3RyKTsKLSAgICAgICAgaWYgKG1vZHBhdGggIT0gTlVMTCkgewotICAgICAgICAgICAgLyogX19wYXRoX18gaXMgc2V0LCBzbyBtb2RuYW1lIGlzIGFscmVhZHkgdGhlIHBhY2thZ2UgbmFtZSAqLwotICAgICAgICAgICAgY2hhciAqbW9kbmFtZV9zdHI7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICAgICAgICAgIGludCBlcnJvcjsKLQotICAgICAgICAgICAgbW9kbmFtZV9zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShtb2RuYW1lLCAmbGVuKTsKLSAgICAgICAgICAgIGlmIChsZW4gPiBNQVhQQVRITEVOKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgbmFtZSB0b28gbG9uZyIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RyY3B5KGJ1ZiwgbW9kbmFtZV9zdHIpOwotICAgICAgICAgICAgZXJyb3IgPSBQeURpY3RfU2V0SXRlbShnbG9iYWxzLCBwa2dzdHIsIG1vZG5hbWUpOwotICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3Qgc2V0IF9fcGFja2FnZV9fIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBOb3JtYWwgbW9kdWxlLCBzbyB3b3JrIG91dCB0aGUgcGFja2FnZSBuYW1lIGlmIGFueSAqLwotICAgICAgICAgICAgY2hhciAqc3RhcnQgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG1vZG5hbWUpOwotICAgICAgICAgICAgY2hhciAqbGFzdGRvdCA9IHN0cnJjaHIoc3RhcnQsICcuJyk7Ci0gICAgICAgICAgICBzaXplX3QgbGVuOwotICAgICAgICAgICAgaW50IGVycm9yOwotICAgICAgICAgICAgaWYgKGxhc3Rkb3QgPT0gTlVMTCAmJiBsZXZlbCA+IDApIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIkF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgaW4gbm9uLXBhY2thZ2UiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChsYXN0ZG90ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBlcnJvciA9IFB5RGljdF9TZXRJdGVtKGdsb2JhbHMsIHBrZ3N0ciwgUHlfTm9uZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBzZXQgX19wYWNrYWdlX18iKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbGVuID0gbGFzdGRvdCAtIHN0YXJ0OwotICAgICAgICAgICAgaWYgKGxlbiA+PSBNQVhQQVRITEVOKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgbmFtZSB0b28gbG9uZyIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RybmNweShidWYsIHN0YXJ0LCBsZW4pOwotICAgICAgICAgICAgYnVmW2xlbl0gPSAnXDAnOwotICAgICAgICAgICAgcGtnbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7Ci0gICAgICAgICAgICBpZiAocGtnbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlcnJvciA9IFB5RGljdF9TZXRJdGVtKGdsb2JhbHMsIHBrZ3N0ciwgcGtnbmFtZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocGtnbmFtZSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBzZXQgX19wYWNrYWdlX18iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICB3aGlsZSAoLS1sZXZlbCA+IDApIHsKLSAgICAgICAgY2hhciAqZG90ID0gc3RycmNocihidWYsICcuJyk7Ci0gICAgICAgIGlmIChkb3QgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgIkF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgYmV5b25kICIKLSAgICAgICAgICAgICAgICAidG9wbGV2ZWwgcGFja2FnZSIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgKmRvdCA9ICdcMCc7Ci0gICAgfQotICAgICpwX2J1ZmxlbiA9IHN0cmxlbihidWYpOwotCi0gICAgbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKLSAgICBwYXJlbnQgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCBidWYpOwotICAgIGlmIChwYXJlbnQgPT0gTlVMTCkgewotICAgICAgICBpZiAob3JpZ19sZXZlbCA8IDEpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICplcnJfbXNnID0gUHlCeXRlc19Gcm9tRm9ybWF0KAotICAgICAgICAgICAgICAgICJQYXJlbnQgbW9kdWxlICclLjIwMHMnIG5vdCBmb3VuZCAiCi0gICAgICAgICAgICAgICAgIndoaWxlIGhhbmRsaW5nIGFic29sdXRlIGltcG9ydCIsIGJ1Zik7Ci0gICAgICAgICAgICBpZiAoZXJyX21zZyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIVB5RXJyX1dhcm5FeChQeUV4Y19SdW50aW1lV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQXNTdHJpbmcoZXJyX21zZyksIDEpKSB7Ci0gICAgICAgICAgICAgICAgKmJ1ZiA9ICdcMCc7Ci0gICAgICAgICAgICAgICAgKnBfYnVmbGVuID0gMDsKLSAgICAgICAgICAgICAgICBwYXJlbnQgPSBQeV9Ob25lOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKGVycl9tc2cpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAotICAgICAgICAgICAgICAgICJQYXJlbnQgbW9kdWxlICclLjIwMHMnIG5vdCBsb2FkZWQsICIKLSAgICAgICAgICAgICAgICAiY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgaW1wb3J0IiwgYnVmKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcGFyZW50OwotICAgIC8qIFdlIGV4cGVjdCwgYnV0IGNhbid0IGd1YXJhbnRlZSwgaWYgcGFyZW50ICE9IE5vbmUsIHRoYXQ6Ci0gICAgICAgLSBwYXJlbnQuX19uYW1lX18gPT0gYnVmCi0gICAgICAgLSBwYXJlbnQuX19kaWN0X18gaXMgZ2xvYmFscwotICAgICAgIElmIHRoaXMgaXMgdmlvbGF0ZWQuLi4gIFdobyBjYXJlcz8gKi8KLX0KLQotLyogYWx0bW9kIGlzIGVpdGhlciBOb25lIG9yIHNhbWUgYXMgbW9kICovCi1zdGF0aWMgUHlPYmplY3QgKgotbG9hZF9uZXh0KFB5T2JqZWN0ICptb2QsIFB5T2JqZWN0ICphbHRtb2QsIGNoYXIgKipwX25hbWUsIGNoYXIgKmJ1ZiwKLSAgICAgICAgICBQeV9zc2l6ZV90ICpwX2J1ZmxlbikKLXsKLSAgICBjaGFyICpuYW1lID0gKnBfbmFtZTsKLSAgICBjaGFyICpkb3QgPSBzdHJjaHIobmFtZSwgJy4nKTsKLSAgICBzaXplX3QgbGVuOwotICAgIGNoYXIgKnA7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQotICAgIGlmIChzdHJsZW4obmFtZSkgPT0gMCkgewotICAgICAgICAvKiBjb21wbGV0ZWx5IGVtcHR5IG1vZHVsZSBuYW1lIHNob3VsZCBvbmx5IGhhcHBlbiBpbgotICAgICAgICAgICAnZnJvbSAuIGltcG9ydCcgKG9yICdfX2ltcG9ydF9fKCIiKScpKi8KLSAgICAgICAgUHlfSU5DUkVGKG1vZCk7Ci0gICAgICAgICpwX25hbWUgPSBOVUxMOwotICAgICAgICByZXR1cm4gbW9kOwotICAgIH0KLQotICAgIGlmIChkb3QgPT0gTlVMTCkgewotICAgICAgICAqcF9uYW1lID0gTlVMTDsKLSAgICAgICAgbGVuID0gc3RybGVuKG5hbWUpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgKnBfbmFtZSA9IGRvdCsxOwotICAgICAgICBsZW4gPSBkb3QtbmFtZTsKLSAgICB9Ci0gICAgaWYgKGxlbiA9PSAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIkVtcHR5IG1vZHVsZSBuYW1lIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHAgPSBidWYgKyAqcF9idWZsZW47Ci0gICAgaWYgKHAgIT0gYnVmKQotICAgICAgICAqcCsrID0gJy4nOwotICAgIGlmIChwK2xlbi1idWYgPj0gTUFYUEFUSExFTikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgbmFtZSB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgc3RybmNweShwLCBuYW1lLCBsZW4pOwotICAgIHBbbGVuXSA9ICdcMCc7Ci0gICAgKnBfYnVmbGVuID0gcCtsZW4tYnVmOwotCi0gICAgcmVzdWx0ID0gaW1wb3J0X3N1Ym1vZHVsZShtb2QsIHAsIGJ1Zik7Ci0gICAgaWYgKHJlc3VsdCA9PSBQeV9Ob25lICYmIGFsdG1vZCAhPSBtb2QpIHsKLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIC8qIEhlcmUsIGFsdG1vZCBtdXN0IGJlIE5vbmUgYW5kIG1vZCBtdXN0IG5vdCBiZSBOb25lICovCi0gICAgICAgIHJlc3VsdCA9IGltcG9ydF9zdWJtb2R1bGUoYWx0bW9kLCBwLCBwKTsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmIHJlc3VsdCAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBpZiAobWFya19taXNzKGJ1ZikgIT0gMCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RybmNweShidWYsIG5hbWUsIGxlbik7Ci0gICAgICAgICAgICBidWZbbGVuXSA9ICdcMCc7Ci0gICAgICAgICAgICAqcF9idWZsZW4gPSBsZW47Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChyZXN1bHQgPT0gUHlfTm9uZSkgewotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIk5vIG1vZHVsZSBuYW1lZCAlLjIwMHMiLCBuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGludAotbWFya19taXNzKGNoYXIgKm5hbWUpCi17Ci0gICAgUHlPYmplY3QgKm1vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7Ci0gICAgcmV0dXJuIFB5RGljdF9TZXRJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUsIFB5X05vbmUpOwotfQotCi1zdGF0aWMgaW50Ci1lbnN1cmVfZnJvbWxpc3QoUHlPYmplY3QgKm1vZCwgUHlPYmplY3QgKmZyb21saXN0LCBjaGFyICpidWYsIFB5X3NzaXplX3QgYnVmbGVuLAotICAgICAgICAgICAgICAgIGludCByZWN1cnNpdmUpCi17Ci0gICAgaW50IGk7Ci0KLSAgICBpZiAoIVB5T2JqZWN0X0hhc0F0dHJTdHJpbmcobW9kLCAiX19wYXRoX18iKSkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICBmb3IgKGkgPSAwOyA7IGkrKykgewotICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5U2VxdWVuY2VfR2V0SXRlbShmcm9tbGlzdCwgaSk7Ci0gICAgICAgIGludCBoYXNpdDsKLSAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfSW5kZXhFcnJvcikpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soaXRlbSkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkl0ZW0gaW4gYGBmcm9tIGxpc3QnJyBub3QgYSBzdHJpbmciKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfQVNfVU5JQ09ERShpdGVtKVswXSA9PSAnKicpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICphbGw7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7Ci0gICAgICAgICAgICAvKiBTZWUgaWYgdGhlIHBhY2thZ2UgZGVmaW5lcyBfX2FsbF9fICovCi0gICAgICAgICAgICBpZiAocmVjdXJzaXZlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvKiBBdm9pZCBlbmRsZXNzIHJlY3Vyc2lvbiAqLwotICAgICAgICAgICAgYWxsID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtb2QsICJfX2FsbF9fIik7Ci0gICAgICAgICAgICBpZiAoYWxsID09IE5VTEwpCi0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGludCByZXQgPSBlbnN1cmVfZnJvbWxpc3QobW9kLCBhbGwsIGJ1ZiwgYnVmbGVuLCAxKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYWxsKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJldCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBoYXNpdCA9IFB5T2JqZWN0X0hhc0F0dHIobW9kLCBpdGVtKTsKLSAgICAgICAgaWYgKCFoYXNpdCkgewotICAgICAgICAgICAgUHlPYmplY3QgKml0ZW04OwotICAgICAgICAgICAgY2hhciAqc3VibmFtZTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJtb2Q7Ci0gICAgICAgICAgICBjaGFyICpwOwotICAgICAgICAgICAgaXRlbTggPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KGl0ZW0pOwotICAgICAgICAgICAgaWYgKCFpdGVtOCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQ2Fubm90IGVuY29kZSBwYXRoIGl0ZW0iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN1Ym5hbWUgPSBQeUJ5dGVzX0FTX1NUUklORyhpdGVtOCk7Ci0gICAgICAgICAgICBpZiAoYnVmbGVuICsgc3RybGVuKHN1Ym5hbWUpID49IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vZHVsZSBuYW1lIHRvbyBsb25nIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcCA9IGJ1ZiArIGJ1ZmxlbjsKLSAgICAgICAgICAgICpwKysgPSAnLic7Ci0gICAgICAgICAgICBzdHJjcHkocCwgc3VibmFtZSk7Ci0gICAgICAgICAgICBzdWJtb2QgPSBpbXBvcnRfc3VibW9kdWxlKG1vZCwgc3VibmFtZSwgYnVmKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtOCk7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHN1Ym1vZCk7Ci0gICAgICAgICAgICBpZiAoc3VibW9kID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwotICAgIH0KLQotICAgIC8qIE5PVFJFQUNIRUQgKi8KLX0KLQotc3RhdGljIGludAotYWRkX3N1Ym1vZHVsZShQeU9iamVjdCAqbW9kLCBQeU9iamVjdCAqc3VibW9kLCBjaGFyICpmdWxsbmFtZSwgY2hhciAqc3VibmFtZSwKLSAgICAgICAgICAgICAgUHlPYmplY3QgKm1vZHVsZXMpCi17Ci0gICAgaWYgKG1vZCA9PSBQeV9Ob25lKQotICAgICAgICByZXR1cm4gMTsKLSAgICAvKiBJcnJlc3BlY3RpdmUgb2YgdGhlIHN1Y2Nlc3Mgb2YgdGhpcyBsb2FkLCBtYWtlIGEKLSAgICAgICByZWZlcmVuY2UgdG8gaXQgaW4gdGhlIHBhcmVudCBwYWNrYWdlIG1vZHVsZS4gIEEgY29weSBnZXRzCi0gICAgICAgc2F2ZWQgaW4gdGhlIG1vZHVsZXMgZGljdGlvbmFyeSB1bmRlciB0aGUgZnVsbCBuYW1lLCBzbyBnZXQgYQotICAgICAgIHJlZmVyZW5jZSBmcm9tIHRoZXJlLCBpZiBuZWVkIGJlLiAgKFRoZSBleGNlcHRpb24gaXMgd2hlbiB0aGUKLSAgICAgICBsb2FkIGZhaWxlZCB3aXRoIGEgU3ludGF4RXJyb3IgLS0gdGhlbiB0aGVyZSdzIG5vIHRyYWNlIGluCi0gICAgICAgc3lzLm1vZHVsZXMuICBJbiB0aGF0IGNhc2UsIG9mIGNvdXJzZSwgZG8gbm90aGluZyBleHRyYS4pICovCi0gICAgaWYgKHN1Ym1vZCA9PSBOVUxMKSB7Ci0gICAgICAgIHN1Ym1vZCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZXMsIGZ1bGxuYW1lKTsKLSAgICAgICAgaWYgKHN1Ym1vZCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotICAgIGlmIChQeU1vZHVsZV9DaGVjayhtb2QpKSB7Ci0gICAgICAgIC8qIFdlIGNhbid0IHVzZSBzZXRhdHRyIGhlcmUgc2luY2UgaXQgY2FuIGdpdmUgYQotICAgICAgICAgKiBzcHVyaW91cyB3YXJuaW5nIGlmIHRoZSBzdWJtb2R1bGUgbmFtZSBzaGFkb3dzIGEKLSAgICAgICAgICogYnVpbHRpbiBuYW1lICovCi0gICAgICAgIFB5T2JqZWN0ICpkaWN0ID0gUHlNb2R1bGVfR2V0RGljdChtb2QpOwotICAgICAgICBpZiAoIWRpY3QpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsIHN1Ym5hbWUsIHN1Ym1vZCkgPCAwKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhtb2QsIHN1Ym5hbWUsIHN1Ym1vZCkgPCAwKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiAxOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wb3J0X3N1Ym1vZHVsZShQeU9iamVjdCAqbW9kLCBjaGFyICpzdWJuYW1lLCBjaGFyICpmdWxsbmFtZSkKLXsKLSAgICBQeU9iamVjdCAqbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKLSAgICBQeU9iamVjdCAqbSA9IE5VTEw7Ci0KLSAgICAvKiBSZXF1aXJlOgotICAgICAgIGlmIG1vZCA9PSBOb25lOiBzdWJuYW1lID09IGZ1bGxuYW1lCi0gICAgICAgZWxzZTogbW9kLl9fbmFtZV9fICsgIi4iICsgc3VibmFtZSA9PSBmdWxsbmFtZQotICAgICovCi0KLSAgICBpZiAoKG0gPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCBmdWxsbmFtZSkpICE9IE5VTEwpIHsKLSAgICAgICAgUHlfSU5DUkVGKG0pOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKnBhdGgsICpsb2FkZXIgPSBOVUxMOwotICAgICAgICBjaGFyICpidWY7Ci0gICAgICAgIHN0cnVjdCBmaWxlZGVzY3IgKmZkcDsKLSAgICAgICAgRklMRSAqZnAgPSBOVUxMOwotCi0gICAgICAgIGlmIChtb2QgPT0gUHlfTm9uZSkKLSAgICAgICAgICAgIHBhdGggPSBOVUxMOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHBhdGggPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG1vZCwgIl9fcGF0aF9fIik7Ci0gICAgICAgICAgICBpZiAocGF0aCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBidWYgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICAgICAgaWYgKGJ1ZiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgfQotICAgICAgICBidWZbMF0gPSAnXDAnOwotICAgICAgICBmZHAgPSBmaW5kX21vZHVsZShmdWxsbmFtZSwgc3VibmFtZSwgcGF0aCwgYnVmLCBNQVhQQVRITEVOKzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZmcCwgJmxvYWRlcik7Ci0gICAgICAgIFB5X1hERUNSRUYocGF0aCk7Ci0gICAgICAgIGlmIChmZHAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlNZW1fRlJFRShidWYpOwotICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0ltcG9ydEVycm9yKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICAgICAgfQotICAgICAgICBtID0gbG9hZF9tb2R1bGUoZnVsbG5hbWUsIGZwLCBidWYsIGZkcC0+dHlwZSwgbG9hZGVyKTsKLSAgICAgICAgUHlfWERFQ1JFRihsb2FkZXIpOwotICAgICAgICBpZiAoZnApCi0gICAgICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBpZiAoIWFkZF9zdWJtb2R1bGUobW9kLCBtLCBmdWxsbmFtZSwgc3VibmFtZSwgbW9kdWxlcykpIHsKLSAgICAgICAgICAgIFB5X1hERUNSRUYobSk7Ci0gICAgICAgICAgICBtID0gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgfQotCi0gICAgcmV0dXJuIG07CisgICAgbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QobmFtZW9iaiwgZ2xvYmFscywgbG9jYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0LCBsZXZlbCk7CisgICAgUHlfREVDUkVGKG5hbWVvYmopOworICAgIHJldHVybiBtb2Q7CiB9CiAKIApAQCAtMjk5NSwxMDMgKzE1NTksMjMgQEAKIFB5T2JqZWN0ICoKIFB5SW1wb3J0X1JlbG9hZE1vZHVsZShQeU9iamVjdCAqbSkKIHsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR2V0KCktPmludGVycDsKLSAgICBQeU9iamVjdCAqbW9kdWxlc19yZWxvYWRpbmcgPSBpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nOworICAgIF9QeV9JREVOVElGSUVSKHJlbG9hZCk7CisgICAgUHlPYmplY3QgKnJlbG9hZGVkX21vZHVsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm1vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7Ci0gICAgUHlPYmplY3QgKnBhdGggPSBOVUxMLCAqbG9hZGVyID0gTlVMTCwgKmV4aXN0aW5nX20gPSBOVUxMOwotICAgIGNoYXIgKm5hbWUsICpzdWJuYW1lOwotICAgIGNoYXIgKmJ1ZjsKLSAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmZHA7Ci0gICAgRklMRSAqZnAgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpuZXdtOwotCi0gICAgaWYgKG1vZHVsZXNfcmVsb2FkaW5nID09IE5VTEwpIHsKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlJbXBvcnRfUmVsb2FkTW9kdWxlOiAiCi0gICAgICAgICAgICAgICAgICAgICAgIm5vIG1vZHVsZXNfcmVsb2FkaW5nIGRpY3Rpb25hcnkhIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5T2JqZWN0ICppbXAgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCAiaW1wIik7CisgICAgaWYgKGltcCA9PSBOVUxMKSB7CisgICAgICAgIGltcCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiaW1wIik7CisgICAgICAgIGlmIChpbXAgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICB9Ci0KLSAgICBpZiAobSA9PSBOVUxMIHx8ICFQeU1vZHVsZV9DaGVjayhtKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlbG9hZCgpIGFyZ3VtZW50IG11c3QgYmUgbW9kdWxlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBuYW1lID0gKGNoYXIqKVB5TW9kdWxlX0dldE5hbWUobSk7Ci0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKG0gIT0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSkpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgInJlbG9hZCgpOiBtb2R1bGUgJS4yMDBzIG5vdCBpbiBzeXMubW9kdWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICBuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGV4aXN0aW5nX20gPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzX3JlbG9hZGluZywgbmFtZSk7Ci0gICAgaWYgKGV4aXN0aW5nX20gIT0gTlVMTCkgewotICAgICAgICAvKiBEdWUgdG8gYSByZWN1cnNpdmUgcmVsb2FkLCB0aGlzIG1vZHVsZSBpcyBhbHJlYWR5Ci0gICAgICAgICAgIGJlaW5nIHJlbG9hZGVkLiAqLwotICAgICAgICBQeV9JTkNSRUYoZXhpc3RpbmdfbSk7Ci0gICAgICAgIHJldHVybiBleGlzdGluZ19tOwotICAgIH0KLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobW9kdWxlc19yZWxvYWRpbmcsIG5hbWUsIG0pIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzdWJuYW1lID0gc3RycmNocihuYW1lLCAnLicpOwotICAgIGlmIChzdWJuYW1lID09IE5VTEwpCi0gICAgICAgIHN1Ym5hbWUgPSBuYW1lOwogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqcGFyZW50bmFtZSwgKnBhcmVudDsKLSAgICAgICAgcGFyZW50bmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShuYW1lLCAoc3VibmFtZS1uYW1lKSk7Ci0gICAgICAgIGlmIChwYXJlbnRuYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgIGltcF9tb2R1bGVzX3JlbG9hZGluZ19jbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgcGFyZW50ID0gUHlEaWN0X0dldEl0ZW0obW9kdWxlcywgcGFyZW50bmFtZSk7Ci0gICAgICAgIGlmIChwYXJlbnQgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICJyZWxvYWQoKTogcGFyZW50ICVVIG5vdCBpbiBzeXMubW9kdWxlcyIsCi0gICAgICAgICAgICAgICAgIHBhcmVudG5hbWUpOwotICAgICAgICAgICAgUHlfREVDUkVGKHBhcmVudG5hbWUpOwotICAgICAgICAgICAgaW1wX21vZHVsZXNfcmVsb2FkaW5nX2NsZWFyKCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYocGFyZW50bmFtZSk7Ci0gICAgICAgIHN1Ym5hbWUrKzsKLSAgICAgICAgcGF0aCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcocGFyZW50LCAiX19wYXRoX18iKTsKLSAgICAgICAgaWYgKHBhdGggPT0gTlVMTCkKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgfQotICAgIGJ1ZiA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChidWYgPT0gTlVMTCkgewotICAgICAgICBQeV9YREVDUkVGKHBhdGgpOwotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0gICAgYnVmWzBdID0gJ1wwJzsKLSAgICBmZHAgPSBmaW5kX21vZHVsZShuYW1lLCBzdWJuYW1lLCBwYXRoLCBidWYsIE1BWFBBVEhMRU4rMSwgJmZwLCAmbG9hZGVyKTsKLSAgICBQeV9YREVDUkVGKHBhdGgpOwotCi0gICAgaWYgKGZkcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X1hERUNSRUYobG9hZGVyKTsKLSAgICAgICAgaW1wX21vZHVsZXNfcmVsb2FkaW5nX2NsZWFyKCk7Ci0gICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0lOQ1JFRihpbXApOwogICAgIH0KIAotICAgIG5ld20gPSBsb2FkX21vZHVsZShuYW1lLCBmcCwgYnVmLCBmZHAtPnR5cGUsIGxvYWRlcik7Ci0gICAgUHlfWERFQ1JFRihsb2FkZXIpOwotCi0gICAgaWYgKGZwKQotICAgICAgICBmY2xvc2UoZnApOwotICAgIGlmIChuZXdtID09IE5VTEwpIHsKLSAgICAgICAgLyogbG9hZF9tb2R1bGUgcHJvYmFibHkgcmVtb3ZlZCBuYW1lIGZyb20gbW9kdWxlcyBiZWNhdXNlIG9mCi0gICAgICAgICAqIHRoZSBlcnJvci4gIFB1dCBiYWNrIHRoZSBvcmlnaW5hbCBtb2R1bGUgb2JqZWN0LiAgV2UncmUKLSAgICAgICAgICogZ29pbmcgdG8gcmV0dXJuIE5VTEwgaW4gdGhpcyBjYXNlIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlcgotICAgICAgICAgKiByZXBsYWNpbmcgbmFtZSBzdWNjZWVkcywgc28gdGhlIHJldHVybiB2YWx1ZSBpcyBpZ25vcmVkLgotICAgICAgICAgKi8KLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSwgbSk7Ci0gICAgfQotICAgIGltcF9tb2R1bGVzX3JlbG9hZGluZ19jbGVhcigpOwotICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICByZXR1cm4gbmV3bTsKKyAgICByZWxvYWRlZF9tb2R1bGUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGltcCwgJlB5SWRfcmVsb2FkLCAiTyIsIG0pOworICAgIFB5X0RFQ1JFRihpbXApOworICAgIHJldHVybiByZWxvYWRlZF9tb2R1bGU7CiB9CiAKIApAQCAtMzE4MSw0OCArMTY2NSwxOSBAQAogICAgIHJldHVybiByOwogfQogCi0KLS8qIE1vZHVsZSAnaW1wJyBwcm92aWRlcyBQeXRob24gYWNjZXNzIHRvIHRoZSBwcmltaXRpdmVzIHVzZWQgZm9yCi0gICBpbXBvcnRpbmcgbW9kdWxlcy4KLSovCi0KIHN0YXRpYyBQeU9iamVjdCAqCi1pbXBfbWFrZV9tYWdpYyhsb25nIG1hZ2ljKQotewotICAgIGNoYXIgYnVmWzRdOwotCi0gICAgYnVmWzBdID0gKGNoYXIpICgobWFnaWMgPj4gIDApICYgMHhmZik7Ci0gICAgYnVmWzFdID0gKGNoYXIpICgobWFnaWMgPj4gIDgpICYgMHhmZik7Ci0gICAgYnVmWzJdID0gKGNoYXIpICgobWFnaWMgPj4gMTYpICYgMHhmZik7Ci0gICAgYnVmWzNdID0gKGNoYXIpICgobWFnaWMgPj4gMjQpICYgMHhmZik7Ci0KLSAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWYsIDQpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wX2dldF9tYWdpYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKLXsKLSAgICByZXR1cm4gaW1wX21ha2VfbWFnaWMocHljX21hZ2ljKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9nZXRfdGFnKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQotewotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhweWNfdGFnKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9nZXRfc3VmZml4ZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitpbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQogewogICAgIFB5T2JqZWN0ICpsaXN0OwotICAgIHN0cnVjdCBmaWxlZGVzY3IgKmZkcDsKKyAgICBjb25zdCBjaGFyICpzdWZmaXg7CisgICAgdW5zaWduZWQgaW50IGluZGV4ID0gMDsKIAogICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOwogICAgIGlmIChsaXN0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZvciAoZmRwID0gX1B5SW1wb3J0X0ZpbGV0YWI7IGZkcC0+c3VmZml4ICE9IE5VTEw7IGZkcCsrKSB7Ci0gICAgICAgIFB5T2JqZWN0ICppdGVtID0gUHlfQnVpbGRWYWx1ZSgic3NpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZHAtPnN1ZmZpeCwgZmRwLT5tb2RlLCBmZHAtPnR5cGUpOworI2lmZGVmIEhBVkVfRFlOQU1JQ19MT0FESU5HCisgICAgd2hpbGUgKChzdWZmaXggPSBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbaW5kZXhdKSkgeworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHN1ZmZpeCk7CiAgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzIzMywxMDIgKzE2ODgsMTkgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgaW5kZXggKz0gMTsKICAgICB9CisjZW5kaWYKICAgICByZXR1cm4gbGlzdDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfZmluZF9tb2R1bGUoY2hhciAqbmFtZSwgUHlPYmplY3QgKnBhdGgpCi17Ci0gICAgZXh0ZXJuIGludCBmY2xvc2UoRklMRSAqKTsKLSAgICBQeU9iamVjdCAqZm9iLCAqcmV0OwotICAgIFB5T2JqZWN0ICpwYXRob2JqOwotICAgIHN0cnVjdCBmaWxlZGVzY3IgKmZkcDsKLSAgICBjaGFyICpwYXRobmFtZTsKLSAgICBGSUxFICpmcCA9IE5VTEw7Ci0gICAgaW50IGZkID0gLTE7Ci0gICAgY2hhciAqZm91bmRfZW5jb2RpbmcgPSBOVUxMOwotICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKLQotICAgIHBhdGhuYW1lID0gUHlNZW1fTUFMTE9DKE1BWFBBVEhMRU4rMSk7Ci0gICAgaWYgKHBhdGhuYW1lID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIHBhdGhuYW1lWzBdID0gJ1wwJzsKLSAgICBpZiAocGF0aCA9PSBQeV9Ob25lKQotICAgICAgICBwYXRoID0gTlVMTDsKLSAgICBmZHAgPSBmaW5kX21vZHVsZShOVUxMLCBuYW1lLCBwYXRoLCBwYXRobmFtZSwgTUFYUEFUSExFTisxLCAmZnAsIE5VTEwpOwotICAgIGlmIChmZHAgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgIGlmIChmcCAhPSBOVUxMKSB7Ci0gICAgICAgIGZkID0gZmlsZW5vKGZwKTsKLSAgICAgICAgaWYgKGZkICE9IC0xKQotICAgICAgICAgICAgZmQgPSBkdXAoZmQpOwotICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBmcCA9IE5VTEw7Ci0gICAgICAgIGlmIChmZCA9PSAtMSkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChmZCAhPSAtMSkgewotICAgICAgICBpZiAoc3RyY2hyKGZkcC0+bW9kZSwgJ2InKSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAvKiBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmcoKSByZXR1cm5zIFB5TWVtX01BTExPQydlZAotICAgICAgICAgICAgICAgbWVtb3J5LiAqLwotICAgICAgICAgICAgZm91bmRfZW5jb2RpbmcgPSBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmcoZmQpOwotICAgICAgICAgICAgbHNlZWsoZmQsIDAsIDApOyAvKiBSZXNldCBwb3NpdGlvbiAqLwotICAgICAgICAgICAgaWYgKGZvdW5kX2VuY29kaW5nID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbmNvZGluZyA9IChmb3VuZF9lbmNvZGluZyAhPSBOVUxMKSA/IGZvdW5kX2VuY29kaW5nIDoKLSAgICAgICAgICAgICAgICAgICAoY2hhciopUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZygpOwotICAgICAgICB9Ci0gICAgICAgIGZvYiA9IFB5RmlsZV9Gcm9tRmQoZmQsIHBhdGhuYW1lLCBmZHAtPm1vZGUsIC0xLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKillbmNvZGluZywgTlVMTCwgTlVMTCwgMSk7Ci0gICAgICAgIGlmIChmb2IgPT0gTlVMTCkgewotICAgICAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICAgICAgUHlNZW1fRlJFRShmb3VuZF9lbmNvZGluZyk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZvYiA9IFB5X05vbmU7Ci0gICAgICAgIFB5X0lOQ1JFRihmb2IpOwotICAgIH0KLSAgICBwYXRob2JqID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChwYXRobmFtZSk7Ci0gICAgcmV0ID0gUHlfQnVpbGRWYWx1ZSgiTk4oc3NpKSIsCi0gICAgICAgICAgICAgICAgICBmb2IsIHBhdGhvYmosIGZkcC0+c3VmZml4LCBmZHAtPm1vZGUsIGZkcC0+dHlwZSk7Ci0gICAgUHlNZW1fRlJFRShmb3VuZF9lbmNvZGluZyk7Ci0gICAgUHlNZW1fRlJFRShwYXRobmFtZSk7Ci0gICAgcmV0dXJuIHJldDsKLQotZXJyb3JfZXhpdDoKLSAgICBQeU1lbV9GUkVFKHBhdGhuYW1lKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9maW5kX21vZHVsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0gICAgUHlPYmplY3QgKnJldCwgKnBhdGggPSBOVUxMOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ8TzpmaW5kX21vZHVsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYXRoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0ID0gY2FsbF9maW5kX21vZHVsZShQeUJ5dGVzX0FTX1NUUklORyhuYW1lKSwgcGF0aCk7Ci0gICAgUHlfREVDUkVGKG5hbWUpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCiBpbXBfaW5pdF9idWlsdGluKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpuYW1lOworICAgIFB5T2JqZWN0ICpuYW1lOwogICAgIGludCByZXQ7CiAgICAgUHlPYmplY3QgKm07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmluaXRfYnVpbHRpbiIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6aW5pdF9idWlsdGluIiwgJm5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXQgPSBpbml0X2J1aWx0aW4obmFtZSk7CiAgICAgaWYgKHJldCA8IDApCkBAIC0zMzM3LDcgKzE3MDksNyBAQAogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KLSAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlKG5hbWUpOworICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGVPYmplY3QobmFtZSk7CiAgICAgUHlfWElOQ1JFRihtKTsKICAgICByZXR1cm4gbTsKIH0KQEAgLTMzNDUsMTkgKzE3MTcsMTkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBpbXBfaW5pdF9mcm96ZW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGNoYXIgKm5hbWU7CisgICAgUHlPYmplY3QgKm5hbWU7CiAgICAgaW50IHJldDsKICAgICBQeU9iamVjdCAqbTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6aW5pdF9mcm96ZW4iLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmluaXRfZnJvemVuIiwgJm5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXQgPSBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUobmFtZSk7CisgICAgcmV0ID0gUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlT2JqZWN0KG5hbWUpOwogICAgIGlmIChyZXQgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAocmV0ID09IDApIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9Ci0gICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZShuYW1lKTsKKyAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KG5hbWUpOwogICAgIFB5X1hJTkNSRUYobSk7CiAgICAgcmV0dXJuIG07CiB9CkBAIC0zMzY1LDkgKzE3MzcsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGltcF9nZXRfZnJvemVuX29iamVjdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpnZXRfZnJvemVuX29iamVjdCIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6Z2V0X2Zyb3plbl9vYmplY3QiLCAmbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBnZXRfZnJvemVuX29iamVjdChuYW1lKTsKIH0KQEAgLTMzNzUsOSArMTc0Nyw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogaW1wX2lzX2Zyb3plbl9wYWNrYWdlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpuYW1lOworICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmlzX2Zyb3plbl9wYWNrYWdlIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTppc19mcm96ZW5fcGFja2FnZSIsICZuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIGlzX2Zyb3plbl9wYWNrYWdlKG5hbWUpOwogfQpAQCAtMzM4NSw4ICsxNzU3LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBpbXBfaXNfYnVpbHRpbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6aXNfYnVpbHRpbiIsICZuYW1lKSkKKyAgICBQeU9iamVjdCAqbmFtZTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6aXNfYnVpbHRpbiIsICZuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhpc19idWlsdGluKG5hbWUpKTsKIH0KQEAgLTMzOTQsMzMzICsxNzY2LDU0IEBACiBzdGF0aWMgUHlPYmplY3QgKgogaW1wX2lzX2Zyb3plbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBQeU9iamVjdCAqbmFtZTsKICAgICBzdHJ1Y3QgX2Zyb3plbiAqcDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6aXNfZnJvemVuIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTppc19mcm96ZW4iLCAmbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHAgPSBmaW5kX2Zyb3plbihuYW1lKTsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKSAocCA9PSBOVUxMID8gMCA6IHAtPnNpemUpKTsKIH0KIAotc3RhdGljIEZJTEUgKgotZ2V0X2ZpbGUoY2hhciAqcGF0aG5hbWUsIFB5T2JqZWN0ICpmb2IsIGNoYXIgKm1vZGUpCi17Ci0gICAgRklMRSAqZnA7Ci0gICAgaWYgKG1vZGVbMF0gPT0gJ1UnKQotICAgICAgICBtb2RlID0gInIiIFBZX1NURElPVEVYVE1PREU7Ci0gICAgaWYgKGZvYiA9PSBOVUxMKSB7Ci0gICAgICAgIGZwID0gZm9wZW4ocGF0aG5hbWUsIG1vZGUpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaW50IGZkID0gUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcihmb2IpOwotICAgICAgICBpZiAoZmQgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgLyogdGhlIEZJTEUgc3RydWN0IGdldHMgYSBuZXcgZmQsIHNvIHRoYXQgaXQgY2FuIGJlIGNsb3NlZAotICAgICAgICAgKiBpbmRlcGVuZGVudGx5IG9mIHRoZSBmaWxlIGRlc2NyaXB0b3IgZ2l2ZW4KLSAgICAgICAgICovCi0gICAgICAgIGZkID0gZHVwKGZkKTsKLSAgICAgICAgaWYgKGZkID09IC0xKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgZnAgPSBmZG9wZW4oZmQsIG1vZGUpOwotICAgIH0KLSAgICBpZiAoZnApCi0gICAgICAgIHJldHVybiBmcDsKLWVycm9yOgotICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9sb2FkX2NvbXBpbGVkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpwYXRobmFtZTsKLSAgICBQeU9iamVjdCAqZm9iID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbTsKLSAgICBGSUxFICpmcDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPJnxPOmxvYWRfY29tcGlsZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZmb2IpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmcCA9IGdldF9maWxlKFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhuYW1lKSwgZm9iLCAicmIiKTsKLSAgICBpZiAoZnAgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYocGF0aG5hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgbSA9IGxvYWRfY29tcGlsZWRfbW9kdWxlKG5hbWUsIFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhuYW1lKSwgZnApOwotICAgIGZjbG9zZShmcCk7Ci0gICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICByZXR1cm4gbTsKLX0KLQogI2lmZGVmIEhBVkVfRFlOQU1JQ19MT0FESU5HCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBpbXBfbG9hZF9keW5hbWljKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpwYXRoYnl0ZXM7Ci0gICAgY2hhciAqcGF0aG5hbWU7Ci0gICAgUHlPYmplY3QgKmZvYiA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm07Ci0gICAgRklMRSAqZnAgPSBOVUxMOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic08mfE86bG9hZF9keW5hbWljIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGhieXRlcywgJmZvYikpCisgICAgUHlPYmplY3QgKm5hbWUsICpwYXRobmFtZSwgKmZvYiA9IE5VTEwsICptb2Q7CisgICAgRklMRSAqZnA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVPJnxPOmxvYWRfZHluYW1pYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lLCBQeVVuaWNvZGVfRlNEZWNvZGVyLCAmcGF0aG5hbWUsICZmb2IpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRobmFtZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhieXRlcyk7Ci0gICAgaWYgKGZvYikgewotICAgICAgICBmcCA9IGdldF9maWxlKHBhdGhuYW1lLCBmb2IsICJyIik7CisgICAgaWYgKGZvYiAhPSBOVUxMKSB7CisgICAgICAgIGZwID0gX1B5X2ZvcGVuKHBhdGhuYW1lLCAiciIpOwogICAgICAgICBpZiAoZnAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHBhdGhieXRlcyk7CisgICAgICAgICAgICBQeV9ERUNSRUYocGF0aG5hbWUpOworICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQotICAgIG0gPSBfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUobmFtZSwgcGF0aG5hbWUsIGZwKTsKLSAgICBQeV9ERUNSRUYocGF0aGJ5dGVzKTsKKyAgICBlbHNlCisgICAgICAgIGZwID0gTlVMTDsKKyAgICBtb2QgPSBfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUobmFtZSwgcGF0aG5hbWUsIGZwKTsKKyAgICBQeV9ERUNSRUYocGF0aG5hbWUpOwogICAgIGlmIChmcCkKICAgICAgICAgZmNsb3NlKGZwKTsKLSAgICByZXR1cm4gbTsKKyAgICByZXR1cm4gbW9kOwogfQogCiAjZW5kaWYgLyogSEFWRV9EWU5BTUlDX0xPQURJTkcgKi8KIAotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9sb2FkX3NvdXJjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY2hhciAqbmFtZTsKLSAgICBQeU9iamVjdCAqcGF0aG5hbWU7Ci0gICAgUHlPYmplY3QgKmZvYiA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm07Ci0gICAgRklMRSAqZnA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTyZ8Tzpsb2FkX3NvdXJjZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRobmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvYikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGZwID0gZ2V0X2ZpbGUoUHlCeXRlc19BU19TVFJJTkcocGF0aG5hbWUpLCBmb2IsICJyIik7Ci0gICAgaWYgKGZwID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIG0gPSBsb2FkX3NvdXJjZV9tb2R1bGUobmFtZSwgUHlCeXRlc19BU19TVFJJTkcocGF0aG5hbWUpLCBmcCk7Ci0gICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICBmY2xvc2UoZnApOwotICAgIHJldHVybiBtOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wX2xvYWRfbW9kdWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpmb2I7Ci0gICAgUHlPYmplY3QgKnBhdGhuYW1lOwotICAgIFB5T2JqZWN0ICogcmV0OwotICAgIGNoYXIgKnN1ZmZpeDsgLyogVW51c2VkICovCi0gICAgY2hhciAqbW9kZTsKLSAgICBpbnQgdHlwZTsKLSAgICBGSUxFICpmcDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic09PJihzc2kpOmxvYWRfbW9kdWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUsICZmb2IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGhuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc3VmZml4LCAmbW9kZSwgJnR5cGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoKm1vZGUpIHsKLSAgICAgICAgLyogTW9kZSBtdXN0IHN0YXJ0IHdpdGggJ3InIG9yICdVJyBhbmQgbXVzdCBub3QgY29udGFpbiAnKycuCi0gICAgICAgICAgIEltcGxpY2l0IGluIHRoaXMgdGVzdCBpcyB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBtb2RlCi0gICAgICAgICAgIG1heSBjb250YWluIG90aGVyIG1vZGlmaWVycyBsaWtlICdiJyBvciAndCcuICovCi0KLSAgICAgICAgaWYgKCEoKm1vZGUgPT0gJ3InIHx8ICptb2RlID09ICdVJykgfHwgc3RyY2hyKG1vZGUsICcrJykpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZpbGUgb3BlbiBtb2RlICUuMjAwcyIsIG1vZGUpOwotICAgICAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChmb2IgPT0gUHlfTm9uZSkKLSAgICAgICAgZnAgPSBOVUxMOwotICAgIGVsc2UgewotICAgICAgICBmcCA9IGdldF9maWxlKE5VTEwsIGZvYiwgbW9kZSk7Ci0gICAgICAgIGlmIChmcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocGF0aG5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0ID0gbG9hZF9tb2R1bGUobmFtZSwgZnAsIFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhuYW1lKSwgdHlwZSwgTlVMTCk7Ci0gICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICBpZiAoZnApCi0gICAgICAgIGZjbG9zZShmcCk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9sb2FkX3BhY2thZ2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGNoYXIgKm5hbWU7Ci0gICAgUHlPYmplY3QgKnBhdGhuYW1lOwotICAgIFB5T2JqZWN0ICogcmV0OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic08mOmxvYWRfcGFja2FnZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRobmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldCA9IGxvYWRfcGFja2FnZShuYW1lLCBQeUJ5dGVzX0FTX1NUUklORyhwYXRobmFtZSkpOwotICAgIFB5X0RFQ1JFRihwYXRobmFtZSk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9uZXdfbW9kdWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjaGFyICpuYW1lOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpuZXdfbW9kdWxlIiwgJm5hbWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlNb2R1bGVfTmV3KG5hbWUpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wX3JlbG9hZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCi17Ci0gICAgcmV0dXJuIFB5SW1wb3J0X1JlbG9hZE1vZHVsZSh2KTsKLX0KLQotUHlEb2NfU1RSVkFSKGRvY19yZWxvYWQsCi0icmVsb2FkKG1vZHVsZSkgLT4gbW9kdWxlXG5cCi1cblwKLVJlbG9hZCB0aGUgbW9kdWxlLiAgVGhlIG1vZHVsZSBtdXN0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQgYmVmb3JlLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wX2NhY2hlX2Zyb21fc291cmNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3cykKLXsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAiZGVidWdfb3ZlcnJpZGUiLCBOVUxMfTsKLQotICAgIGNoYXIgKmJ1ZjsKLSAgICBQeU9iamVjdCAqcGF0aGJ5dGVzOwotICAgIGNoYXIgKmNwYXRobmFtZTsKLSAgICBQeU9iamVjdCAqZGVidWdfb3ZlcnJpZGUgPSBOVUxMOwotICAgIGludCBkZWJ1ZyA9ICFQeV9PcHRpbWl6ZUZsYWc7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcygKLSAgICAgICAgICAgICAgICBhcmdzLCBrd3MsICJPJnxPIiwga3dsaXN0LAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGhieXRlcywgJmRlYnVnX292ZXJyaWRlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoZGVidWdfb3ZlcnJpZGUgIT0gTlVMTCAmJgotICAgICAgICAoZGVidWcgPSBQeU9iamVjdF9Jc1RydWUoZGVidWdfb3ZlcnJpZGUpKSA8IDApIHsKLSAgICAgICAgUHlfREVDUkVGKHBhdGhieXRlcyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGJ1ZiA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChidWYgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0gICAgY3BhdGhuYW1lID0gbWFrZV9jb21waWxlZF9wYXRobmFtZSgKLSAgICAgICAgUHlCeXRlc19BU19TVFJJTkcocGF0aGJ5dGVzKSwKLSAgICAgICAgYnVmLCBNQVhQQVRITEVOKzEsIGRlYnVnKTsKLSAgICBQeV9ERUNSRUYocGF0aGJ5dGVzKTsKLQotICAgIGlmIChjcGF0aG5hbWUgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsICJwYXRoIGJ1ZmZlciB0b28gc2hvcnQiKTsKLSAgICAgICAgUHlNZW1fRlJFRShidWYpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgewotICAgICAgICBQeU9iamVjdCAqcmV0ID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChidWYpOwotICAgICAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgICAgIHJldHVybiByZXQ7Ci0gICAgfQotfQotCi1QeURvY19TVFJWQVIoZG9jX2NhY2hlX2Zyb21fc291cmNlLAotImNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFtkZWJ1Z19vdmVycmlkZV0pIC0+IHBhdGhcblwKLUdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5IGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5Yy8ucHlvIGZpbGUuXG5cCi1cblwKLVRoZSAucHkgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvIHRoZVxuXAotLnB5Yy8ucHlvIGZpbGUgY2FsY3VsYXRlZCBhcyBpZiB0aGUgLnB5IGZpbGUgd2VyZSBpbXBvcnRlZC4gIFRoZSBleHRlbnNpb25cblwKLXdpbGwgYmUgLnB5YyB1bmxlc3MgX19kZWJ1Z19fIGlzIG5vdCBkZWZpbmVkLCB0aGVuIGl0IHdpbGwgYmUgLnB5by5cblwKLVxuXAotSWYgZGVidWdfb3ZlcnJpZGUgaXMgbm90IE5vbmUsIHRoZW4gaXQgbXVzdCBiZSBhIGJvb2xlYW4gYW5kIGlzIHRha2VuIGFzXG5cCi10aGUgdmFsdWUgb2YgX19kZWJ1Z19fIGluc3RlYWQuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1pbXBfc291cmNlX2Zyb21fY2FjaGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dzKQotewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsicGF0aCIsIE5VTEx9OwotCi0gICAgUHlPYmplY3QgKnBhdGhuYW1lX29iajsKLSAgICBjaGFyICpwYXRobmFtZTsKLSAgICBjaGFyICpidWY7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcygKLSAgICAgICAgICAgICAgICBhcmdzLCBrd3MsICJPJiIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRobmFtZV9vYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHBhdGhuYW1lID0gUHlCeXRlc19BU19TVFJJTkcocGF0aG5hbWVfb2JqKTsKLSAgICBidWYgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICBpZiAoYnVmID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIGlmIChtYWtlX3NvdXJjZV9wYXRobmFtZShwYXRobmFtZSwgYnVmKSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiTm90IGEgUEVQIDMxNDcgcHljIHBhdGg6ICVzIiwKLSAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lKTsKLSAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lX29iaik7Ci0gICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihwYXRobmFtZV9vYmopOwotICAgIHsKLSAgICAgICAgUHlPYmplY3QgKnJldCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7Ci0gICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICAgICAgcmV0dXJuIHJldDsKLSAgICB9Ci19Ci0KLVB5RG9jX1NUUlZBUihkb2Nfc291cmNlX2Zyb21fY2FjaGUsCi0ic291cmNlX2Zyb21fY2FjaGUocGF0aCkgLT4gcGF0aFxuXAotR2l2ZW4gdGhlIHBhdGggdG8gYSAucHljLi8ucHlvIGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5IGZpbGUuXG5cCi1cblwKLVRoZSAucHljLy5weW8gZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvXG5cCi10aGUgLnB5IGZpbGUgY2FsY3VsYXRlZCB0byBjb3JyZXNwb25kIHRvIHRoZSAucHljLy5weW8gZmlsZS4gIElmIHBhdGhcblwKLWRvZXMgbm90IGNvbmZvcm0gdG8gUEVQIDMxNDcgZm9ybWF0LCBWYWx1ZUVycm9yIHdpbGwgYmUgcmFpc2VkLiIpOwogCiAvKiBEb2Mgc3RyaW5ncyAqLwogCiBQeURvY19TVFJWQVIoZG9jX2ltcCwKLSJUaGlzIG1vZHVsZSBwcm92aWRlcyB0aGUgY29tcG9uZW50cyBuZWVkZWQgdG8gYnVpbGQgeW91ciBvd25cblwKLV9faW1wb3J0X18gZnVuY3Rpb24uICBVbmRvY3VtZW50ZWQgZnVuY3Rpb25zIGFyZSBvYnNvbGV0ZS4iKTsKKyIoRXh0cmVtZWx5KSBsb3ctbGV2ZWwgaW1wb3J0IG1hY2hpbmVyeSBiaXRzIGFzIHVzZWQgYnkgaW1wb3J0bGliIGFuZCBpbXAuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfZmluZF9tb2R1bGUsCi0iZmluZF9tb2R1bGUobmFtZSwgW3BhdGhdKSAtPiAoZmlsZSwgZmlsZW5hbWUsIChzdWZmaXgsIG1vZGUsIHR5cGUpKVxuXAotU2VhcmNoIGZvciBhIG1vZHVsZS4gIElmIHBhdGggaXMgb21pdHRlZCBvciBOb25lLCBzZWFyY2ggZm9yIGFcblwKLWJ1aWx0LWluLCBmcm96ZW4gb3Igc3BlY2lhbCBtb2R1bGUgYW5kIGNvbnRpbnVlIHNlYXJjaCBpbiBzeXMucGF0aC5cblwKLVRoZSBtb2R1bGUgbmFtZSBjYW5ub3QgY29udGFpbiAnLic7IHRvIHNlYXJjaCBmb3IgYSBzdWJtb2R1bGUgb2YgYVxuXAotcGFja2FnZSwgcGFzcyB0aGUgc3VibW9kdWxlIG5hbWUgYW5kIHRoZSBwYWNrYWdlJ3MgX19wYXRoX18uIik7Ci0KLVB5RG9jX1NUUlZBUihkb2NfbG9hZF9tb2R1bGUsCi0ibG9hZF9tb2R1bGUobmFtZSwgZmlsZSwgZmlsZW5hbWUsIChzdWZmaXgsIG1vZGUsIHR5cGUpKSAtPiBtb2R1bGVcblwKLUxvYWQgYSBtb2R1bGUsIGdpdmVuIGluZm9ybWF0aW9uIHJldHVybmVkIGJ5IGZpbmRfbW9kdWxlKCkuXG5cCi1UaGUgbW9kdWxlIG5hbWUgbXVzdCBpbmNsdWRlIHRoZSBmdWxsIHBhY2thZ2UgbmFtZSwgaWYgYW55LiIpOwotCi1QeURvY19TVFJWQVIoZG9jX2dldF9tYWdpYywKLSJnZXRfbWFnaWMoKSAtPiBzdHJpbmdcblwKLVJldHVybiB0aGUgbWFnaWMgbnVtYmVyIGZvciAucHljIG9yIC5weW8gZmlsZXMuIik7Ci0KLVB5RG9jX1NUUlZBUihkb2NfZ2V0X3RhZywKLSJnZXRfdGFnKCkgLT4gc3RyaW5nXG5cCi1SZXR1cm4gdGhlIG1hZ2ljIHRhZyBmb3IgLnB5YyBvciAucHlvIGZpbGVzLiIpOwotCi1QeURvY19TVFJWQVIoZG9jX2dldF9zdWZmaXhlcywKLSJnZXRfc3VmZml4ZXMoKSAtPiBbKHN1ZmZpeCwgbW9kZSwgdHlwZSksIC4uLl1cblwKLVJldHVybiBhIGxpc3Qgb2YgKHN1ZmZpeCwgbW9kZSwgdHlwZSkgdHVwbGVzIGRlc2NyaWJpbmcgdGhlIGZpbGVzXG5cCi10aGF0IGZpbmRfbW9kdWxlKCkgbG9va3MgZm9yLiIpOwotCi1QeURvY19TVFJWQVIoZG9jX25ld19tb2R1bGUsCi0ibmV3X21vZHVsZShuYW1lKSAtPiBtb2R1bGVcblwKLUNyZWF0ZSBhIG5ldyBtb2R1bGUuICBEbyBub3QgZW50ZXIgaXQgaW4gc3lzLm1vZHVsZXMuXG5cCi1UaGUgbW9kdWxlIG5hbWUgbXVzdCBpbmNsdWRlIHRoZSBmdWxsIHBhY2thZ2UgbmFtZSwgaWYgYW55LiIpOworUHlEb2NfU1RSVkFSKGRvY19leHRlbnNpb25fc3VmZml4ZXMsCisiZXh0ZW5zaW9uX3N1ZmZpeGVzKCkgLT4gbGlzdCBvZiBzdHJpbmdzXG5cCitSZXR1cm5zIHRoZSBsaXN0IG9mIGZpbGUgc3VmZml4ZXMgdXNlZCB0byBpZGVudGlmeSBleHRlbnNpb24gbW9kdWxlcy4iKTsKIAogUHlEb2NfU1RSVkFSKGRvY19sb2NrX2hlbGQsCiAibG9ja19oZWxkKCkgLT4gYm9vbGVhblxuXApAQCAtMzc0MCwxNzkgKzE4MzMsMjggQEAKIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIpOwogCiBzdGF0aWMgUHlNZXRob2REZWYgaW1wX21ldGhvZHNbXSA9IHsKLSAgICB7ImZpbmRfbW9kdWxlIiwgICAgICBpbXBfZmluZF9tb2R1bGUsICBNRVRIX1ZBUkFSR1MsIGRvY19maW5kX21vZHVsZX0sCi0gICAgeyJnZXRfbWFnaWMiLCAgICAgICAgaW1wX2dldF9tYWdpYywgICAgTUVUSF9OT0FSR1MsICBkb2NfZ2V0X21hZ2ljfSwKLSAgICB7ImdldF90YWciLCAgICAgICAgICBpbXBfZ2V0X3RhZywgICAgICBNRVRIX05PQVJHUywgIGRvY19nZXRfdGFnfSwKLSAgICB7ImdldF9zdWZmaXhlcyIsIGltcF9nZXRfc3VmZml4ZXMsIE1FVEhfTk9BUkdTLCAgZG9jX2dldF9zdWZmaXhlc30sCi0gICAgeyJsb2FkX21vZHVsZSIsICAgICAgaW1wX2xvYWRfbW9kdWxlLCAgTUVUSF9WQVJBUkdTLCBkb2NfbG9hZF9tb2R1bGV9LAotICAgIHsibmV3X21vZHVsZSIsICAgICAgIGltcF9uZXdfbW9kdWxlLCAgIE1FVEhfVkFSQVJHUywgZG9jX25ld19tb2R1bGV9LAorICAgIHsiZXh0ZW5zaW9uX3N1ZmZpeGVzIiwgaW1wX2V4dGVuc2lvbl9zdWZmaXhlcywgTUVUSF9OT0FSR1MsCisgICAgICAgIGRvY19leHRlbnNpb25fc3VmZml4ZXN9LAogICAgIHsibG9ja19oZWxkIiwgICAgICAgIGltcF9sb2NrX2hlbGQsICAgIE1FVEhfTk9BUkdTLCAgZG9jX2xvY2tfaGVsZH0sCiAgICAgeyJhY3F1aXJlX2xvY2siLCBpbXBfYWNxdWlyZV9sb2NrLCBNRVRIX05PQVJHUywgIGRvY19hY3F1aXJlX2xvY2t9LAogICAgIHsicmVsZWFzZV9sb2NrIiwgaW1wX3JlbGVhc2VfbG9jaywgTUVUSF9OT0FSR1MsICBkb2NfcmVsZWFzZV9sb2NrfSwKLSAgICB7InJlbG9hZCIsICAgICAgIGltcF9yZWxvYWQsICAgICAgIE1FVEhfTywgICAgICAgZG9jX3JlbG9hZH0sCi0gICAgeyJjYWNoZV9mcm9tX3NvdXJjZSIsIChQeUNGdW5jdGlvbilpbXBfY2FjaGVfZnJvbV9zb3VyY2UsCi0gICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIGRvY19jYWNoZV9mcm9tX3NvdXJjZX0sCi0gICAgeyJzb3VyY2VfZnJvbV9jYWNoZSIsIChQeUNGdW5jdGlvbilpbXBfc291cmNlX2Zyb21fY2FjaGUsCi0gICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIGRvY19zb3VyY2VfZnJvbV9jYWNoZX0sCi0gICAgLyogVGhlIHJlc3QgYXJlIG9ic29sZXRlICovCiAgICAgeyJnZXRfZnJvemVuX29iamVjdCIsICAgICAgIGltcF9nZXRfZnJvemVuX29iamVjdCwgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJpc19mcm96ZW5fcGFja2FnZSIsICAgaW1wX2lzX2Zyb3plbl9wYWNrYWdlLCAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImluaXRfYnVpbHRpbiIsICAgICAgICAgICAgaW1wX2luaXRfYnVpbHRpbiwgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImluaXRfZnJvemVuIiwgICAgICAgICAgICAgaW1wX2luaXRfZnJvemVuLCAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImlzX2J1aWx0aW4iLCAgICAgICAgICAgICAgaW1wX2lzX2J1aWx0aW4sICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImlzX2Zyb3plbiIsICAgICAgICAgICAgICAgaW1wX2lzX2Zyb3plbiwgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImxvYWRfY29tcGlsZWQiLCAgICAgICAgICAgaW1wX2xvYWRfY29tcGlsZWQsICAgICAgTUVUSF9WQVJBUkdTfSwKICNpZmRlZiBIQVZFX0RZTkFNSUNfTE9BRElORwogICAgIHsibG9hZF9keW5hbWljIiwgICAgICAgICAgICBpbXBfbG9hZF9keW5hbWljLCAgICAgICBNRVRIX1ZBUkFSR1N9LAogI2VuZGlmCi0gICAgeyJsb2FkX3BhY2thZ2UiLCAgICAgICAgICAgIGltcF9sb2FkX3BhY2thZ2UsICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJsb2FkX3NvdXJjZSIsICAgICAgICAgICAgIGltcF9sb2FkX3NvdXJjZSwgICAgICAgIE1FVEhfVkFSQVJHU30sCisgICAgeyJfZml4X2NvX2ZpbGVuYW1lIiwgICAgICAgIGltcF9maXhfY29fZmlsZW5hbWUsICAgIE1FVEhfVkFSQVJHU30sCiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAotc3RhdGljIGludAotc2V0aW50KFB5T2JqZWN0ICpkLCBjaGFyICpuYW1lLCBpbnQgdmFsdWUpCi17Ci0gICAgUHlPYmplY3QgKnY7Ci0gICAgaW50IGVycjsKLQotICAgIHYgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpdmFsdWUpOwotICAgIGVyciA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsIG5hbWUsIHYpOwotICAgIFB5X1hERUNSRUYodik7Ci0gICAgcmV0dXJuIGVycjsKLX0KLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5T2JqZWN0X0hFQUQKLX0gTnVsbEltcG9ydGVyOwotCi1zdGF0aWMgaW50Ci1OdWxsSW1wb3J0ZXJfaW5pdChOdWxsSW1wb3J0ZXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLXsKLSNpZm5kZWYgTVNfV0lORE9XUwotICAgIFB5T2JqZWN0ICpwYXRoOwotICAgIHN0cnVjdCBzdGF0IHN0YXRidWY7Ci0gICAgaW50IHJ2OwotCi0gICAgaWYgKCFfUHlBcmdfTm9LZXl3b3JkcygiTnVsbEltcG9ydGVyKCkiLCBrd2RzKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpOdWxsSW1wb3J0ZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUocGF0aCkgPT0gMCkgewotICAgICAgICBQeV9ERUNSRUYocGF0aCk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwgImVtcHR5IHBhdGhuYW1lIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICBydiA9IHN0YXQoUHlCeXRlc19BU19TVFJJTkcocGF0aCksICZzdGF0YnVmKTsKLSAgICBQeV9ERUNSRUYocGF0aCk7Ci0gICAgaWYgKHJ2ID09IDApIHsKLSAgICAgICAgLyogaXQgZXhpc3RzICovCi0gICAgICAgIGlmIChTX0lTRElSKHN0YXRidWYuc3RfbW9kZSkpIHsKLSAgICAgICAgICAgIC8qIGl0J3MgYSBkaXJlY3RvcnkgKi8KLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwgImV4aXN0aW5nIGRpcmVjdG9yeSIpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgfQotI2Vsc2UgLyogTVNfV0lORE9XUyAqLwotICAgIFB5T2JqZWN0ICpwYXRob2JqOwotICAgIERXT1JEIHJ2OwotICAgIHdjaGFyX3QgKnBhdGg7Ci0KLSAgICBpZiAoIV9QeUFyZ19Ob0tleXdvcmRzKCJOdWxsSW1wb3J0ZXIoKSIsIGt3ZHMpKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6TnVsbEltcG9ydGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhdGhvYmopKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHBhdGhvYmopID09IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLCAiZW1wdHkgcGF0aG5hbWUiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIHBhdGggPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyhwYXRob2JqLCBOVUxMKTsKLSAgICBpZiAocGF0aCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgLyogc2VlIGlzc3VlMTI5MyBhbmQgaXNzdWUzNjc3OgotICAgICAqIHN0YXQoKSBvbiBXaW5kb3dzIGRvZXNuJ3QgcmVjb2duaXNlIHBhdGhzIGxpa2UKLSAgICAgKiAiZTpcXHNoYXJlZFxcIiBhbmQgIlxcXFx3aGl0ZXJhYi1jMnpubGhcXHNoYXJlZCIgYXMgZGlycy4KLSAgICAgKi8KLSAgICBydiA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoKTsKLSAgICBQeU1lbV9GcmVlKHBhdGgpOwotICAgIGlmIChydiAhPSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgewotICAgICAgICAvKiBpdCBleGlzdHMgKi8KLSAgICAgICAgaWYgKHJ2ICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSB7Ci0gICAgICAgICAgICAvKiBpdCdzIGEgZGlyZWN0b3J5ICovCi0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsICJleGlzdGluZyBkaXJlY3RvcnkiKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotTnVsbEltcG9ydGVyX2ZpbmRfbW9kdWxlKE51bGxJbXBvcnRlciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLXN0YXRpYyBQeU1ldGhvZERlZiBOdWxsSW1wb3J0ZXJfbWV0aG9kc1tdID0gewotICAgIHsiZmluZF9tb2R1bGUiLCAoUHlDRnVuY3Rpb24pTnVsbEltcG9ydGVyX2ZpbmRfbW9kdWxlLCBNRVRIX1ZBUkFSR1MsCi0gICAgICJBbHdheXMgcmV0dXJuIE5vbmUiCi0gICAgfSwKLSAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCi19OwotCi0KLVB5VHlwZU9iamVjdCBQeU51bGxJbXBvcnRlcl9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJpbXAuTnVsbEltcG9ydGVyIiwgICAgICAgIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKE51bGxJbXBvcnRlciksICAgICAgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgIC8qdHBfZmxhZ3MqLwotICAgICJOdWxsIGltcG9ydGVyIG9iamVjdCIsICAgIC8qIHRwX2RvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgTnVsbEltcG9ydGVyX21ldGhvZHMsICAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAoaW5pdHByb2MpTnVsbEltcG9ydGVyX2luaXQsICAgICAgLyogdHBfaW5pdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCi0gICAgUHlUeXBlX0dlbmVyaWNOZXcgICAgICAgICAgLyogdHBfbmV3ICovCi19OwogCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIGltcG1vZHVsZSA9IHsKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgImltcCIsCisgICAgIl9pbXAiLAogICAgIGRvY19pbXAsCiAgICAgMCwKICAgICBpbXBfbWV0aG9kcywKQEAgLTM5MjcsOSArMTg2OSw2IEBACiB7CiAgICAgUHlPYmplY3QgKm0sICpkOwogCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlOdWxsSW1wb3J0ZXJfVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJmltcG1vZHVsZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsdXJlOwpAQCAtMzkzNywxOSArMTg3Niw2IEBACiAgICAgaWYgKGQgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsdXJlOwogCi0gICAgaWYgKHNldGludChkLCAiU0VBUkNIX0VSUk9SIiwgU0VBUkNIX0VSUk9SKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJQWV9TT1VSQ0UiLCBQWV9TT1VSQ0UpIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIlBZX0NPTVBJTEVEIiwgUFlfQ09NUElMRUQpIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIkNfRVhURU5TSU9OIiwgQ19FWFRFTlNJT04pIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIlBZX1JFU09VUkNFIiwgUFlfUkVTT1VSQ0UpIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIlBLR19ESVJFQ1RPUlkiLCBQS0dfRElSRUNUT1JZKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJDX0JVSUxUSU4iLCBDX0JVSUxUSU4pIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIlBZX0ZST1pFTiIsIFBZX0ZST1pFTikgPCAwKSBnb3RvIGZhaWx1cmU7Ci0gICAgaWYgKHNldGludChkLCAiUFlfQ09ERVJFU09VUkNFIiwgUFlfQ09ERVJFU09VUkNFKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJJTVBfSE9PSyIsIElNUF9IT09LKSA8IDApIGdvdG8gZmFpbHVyZTsKLQotICAgIFB5X0lOQ1JFRigmUHlOdWxsSW1wb3J0ZXJfVHlwZSk7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJOdWxsSW1wb3J0ZXIiLCAoUHlPYmplY3QgKikmUHlOdWxsSW1wb3J0ZXJfVHlwZSk7CiAgICAgcmV0dXJuIG07CiAgIGZhaWx1cmU6CiAgICAgUHlfWERFQ1JFRihtKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnRkbC5jIGIvUHl0aG9uL2ltcG9ydGRsLmMKaW5kZXggOWNhZWQ0NS4uOTQyZTRiOCAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydGRsLmMKKysrIGIvUHl0aG9uL2ltcG9ydGRsLmMKQEAgLTEyLDUwICsxMiw3MyBAQAogCiAjaW5jbHVkZSAiaW1wb3J0ZGwuaCIKIAotZXh0ZXJuIGRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorI2lmZGVmIE1TX1dJTkRPV1MKK2V4dGVybiBkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkV2luZG93cyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdGhuYW1lLCBGSUxFICpmcCk7CisjZWxzZQorZXh0ZXJuIGRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApOwotCi0KKyNlbmRpZgogCiBQeU9iamVjdCAqCi1fUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUoY2hhciAqbmFtZSwgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCwgRklMRSAqZnApCiB7Ci0gICAgUHlPYmplY3QgKm07Ci0gICAgUHlPYmplY3QgKnBhdGg7Ci0gICAgY2hhciAqbGFzdGRvdCwgKnNob3J0bmFtZSwgKnBhY2thZ2Vjb250ZXh0LCAqb2xkY29udGV4dDsKKyAgICBQeU9iamVjdCAqbSA9IE5VTEw7CisjaWZuZGVmIE1TX1dJTkRPV1MKKyAgICBQeU9iamVjdCAqcGF0aGJ5dGVzOworI2VuZGlmCisgICAgUHlPYmplY3QgKm5hbWVhc2NpaTsKKyAgICBjaGFyICpuYW1lc3RyLCAqbGFzdGRvdCwgKnNob3J0bmFtZSwgKnBhY2thZ2Vjb250ZXh0LCAqb2xkY29udGV4dDsKICAgICBkbF9mdW5jcHRyIHAwOwogICAgIFB5T2JqZWN0KiAoKnApKHZvaWQpOwogICAgIHN0cnVjdCBQeU1vZHVsZURlZiAqZGVmOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBwYXRoID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChwYXRobmFtZSk7Ci0gICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICBtID0gX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25PYmplY3QobmFtZSwgcGF0aCk7CisgICAgaWYgKG0gIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYobSk7CisgICAgICAgIHJldHVybiBtOworICAgIH0KKworICAgIC8qIG5hbWUgbXVzdCBiZSBlbmNvZGFibGUgdG8gQVNDSUkgYmVjYXVzZSBkeW5hbWljIG1vZHVsZSBtdXN0IGhhdmUgYQorICAgICAgIGZ1bmN0aW9uIGNhbGxlZCAiUHlJbml0X05BTUUiLCB0aGV5IGFyZSB3cml0dGVuIGluIEMsIGFuZCB0aGUgQyBsYW5ndWFnZQorICAgICAgIGRvZXNuJ3QgYWNjZXB0IG5vbi1BU0NJSSBpZGVudGlmaWVycy4gKi8KKyAgICBuYW1lYXNjaWkgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKG5hbWUsICJhc2NpaSIsIE5VTEwpOworICAgIGlmIChuYW1lYXNjaWkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoKG0gPSBfUHlJbXBvcnRfRmluZEV4dGVuc2lvblVuaWNvZGUobmFtZSwgcGF0aCkpICE9IE5VTEwpIHsKLSAgICAgICAgUHlfSU5DUkVGKG0pOwotICAgICAgICByZXN1bHQgPSBtOwotICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgfQotICAgIGxhc3Rkb3QgPSBzdHJyY2hyKG5hbWUsICcuJyk7CisgICAgbmFtZXN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG5hbWVhc2NpaSk7CisgICAgaWYgKG5hbWVzdHIgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGxhc3Rkb3QgPSBzdHJyY2hyKG5hbWVzdHIsICcuJyk7CiAgICAgaWYgKGxhc3Rkb3QgPT0gTlVMTCkgewogICAgICAgICBwYWNrYWdlY29udGV4dCA9IE5VTEw7Ci0gICAgICAgIHNob3J0bmFtZSA9IG5hbWU7CisgICAgICAgIHNob3J0bmFtZSA9IG5hbWVzdHI7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBwYWNrYWdlY29udGV4dCA9IG5hbWU7CisgICAgICAgIHBhY2thZ2Vjb250ZXh0ID0gbmFtZXN0cjsKICAgICAgICAgc2hvcnRuYW1lID0gbGFzdGRvdCsxOwogICAgIH0KIAotICAgIHAwID0gX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKG5hbWUsIHNob3J0bmFtZSwgcGF0aG5hbWUsIGZwKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgcDAgPSBfUHlJbXBvcnRfR2V0RHluTG9hZFdpbmRvd3Moc2hvcnRuYW1lLCBwYXRoLCBmcCk7CisjZWxzZQorICAgIHBhdGhieXRlcyA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQocGF0aCk7CisgICAgaWYgKHBhdGhieXRlcyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHAwID0gX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKHNob3J0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhwYXRoYnl0ZXMpLCBmcCk7CisgICAgUHlfREVDUkVGKHBhdGhieXRlcyk7CisjZW5kaWYKICAgICBwID0gKFB5T2JqZWN0KigqKSh2b2lkKSlwMDsKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBpZiAocCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgImR5bmFtaWMgbW9kdWxlIGRvZXMgbm90IGRlZmluZSBpbml0IGZ1bmN0aW9uIChQeUluaXRfJS4yMDBzKSIsCi0gICAgICAgICAgICAgICAgICAgICBzaG9ydG5hbWUpOworICAgICAgICBQeU9iamVjdCAqbXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImR5bmFtaWMgbW9kdWxlIGRvZXMgbm90IGRlZmluZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5pdCBmdW5jdGlvbiAoUHlJbml0XyVzKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydG5hbWUpOworICAgICAgICBQeUVycl9TZXRJbXBvcnRFcnJvcihtc2csIG5hbWUsIHBhdGgpOworICAgICAgICBQeV9ERUNSRUYobXNnKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgb2xkY29udGV4dCA9IF9QeV9QYWNrYWdlQ29udGV4dDsKQEAgLTY2LDcgKzg5LDYgQEAKICAgICAgICAgZ290byBlcnJvcjsKIAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgImluaXRpYWxpemF0aW9uIG9mICVzIHJhaXNlZCB1bnJlcG9ydGVkIGV4Y2VwdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICBzaG9ydG5hbWUpOwpAQCAtODMsMjAgKzEwNSwxNSBAQAogICAgIGVsc2UKICAgICAgICAgUHlfSU5DUkVGKHBhdGgpOwogCi0gICAgaWYgKF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvblVuaWNvZGUobSwgbmFtZSwgcGF0aCkgPCAwKQorICAgIGlmIChfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QobSwgbmFtZSwgcGF0aCkgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoCi0gICAgICAgICAgICAiaW1wb3J0ICVzICMgZHluYW1pY2FsbHkgbG9hZGVkIGZyb20gJXNcbiIsCi0gICAgICAgICAgICBuYW1lLCBwYXRobmFtZSk7Ci0gICAgcmVzdWx0ID0gbTsKLSAgICBnb3RvIGZpbmFsbHk7CisgICAgUHlfREVDUkVGKG5hbWVhc2NpaSk7CisgICAgcmV0dXJuIG07CiAKIGVycm9yOgotICAgIHJlc3VsdCA9IE5VTEw7Ci1maW5hbGx5OgotICAgIFB5X0RFQ1JFRihwYXRoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIFB5X0RFQ1JFRihuYW1lYXNjaWkpOworICAgIFB5X1hERUNSRUYobSk7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKICNlbmRpZiAvKiBIQVZFX0RZTkFNSUNfTE9BRElORyAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGRsLmggYi9QeXRob24vaW1wb3J0ZGwuaAppbmRleCBiNGQyMWJlLi42YjljZjc1IDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0ZGwuaAorKysgYi9QeXRob24vaW1wb3J0ZGwuaApAQCAtNiwyOSArNiw5IEBACiAjZW5kaWYKIAogCi0vKiBEZWZpbml0aW9ucyBmb3IgZHluYW1pYyBsb2FkaW5nIG9mIGV4dGVuc2lvbiBtb2R1bGVzICovCi1lbnVtIGZpbGV0eXBlIHsKLSAgICBTRUFSQ0hfRVJST1IsCi0gICAgUFlfU09VUkNFLAotICAgIFBZX0NPTVBJTEVELAotICAgIENfRVhURU5TSU9OLAotICAgIFBZX1JFU09VUkNFLCAvKiBNYWMgb25seSAqLwotICAgIFBLR19ESVJFQ1RPUlksCi0gICAgQ19CVUlMVElOLAotICAgIFBZX0ZST1pFTiwKLSAgICBQWV9DT0RFUkVTT1VSQ0UsIC8qIE1hYyBvbmx5ICovCi0gICAgSU1QX0hPT0sKLX07CitleHRlcm4gY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW107CiAKLXN0cnVjdCBmaWxlZGVzY3IgewotICAgIGNoYXIgKnN1ZmZpeDsKLSAgICBjaGFyICptb2RlOwotICAgIGVudW0gZmlsZXR5cGUgdHlwZTsKLX07Ci1leHRlcm4gc3RydWN0IGZpbGVkZXNjciAqIF9QeUltcG9ydF9GaWxldGFiOwotZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW107Ci0KLWV4dGVybiBQeU9iamVjdCAqX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKGNoYXIgKm5hbWUsIGNoYXIgKnBhdGhuYW1lLAorZXh0ZXJuIFB5T2JqZWN0ICpfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUoUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRobmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKik7CiAKIC8qIE1heCBsZW5ndGggb2YgbW9kdWxlIHN1ZmZpeCBzZWFyY2hlZCBmb3IgLS0gYWNjb21tb2RhdGVzICJtb2R1bGUuc2xiIiAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGxpYi5oIGIvUHl0aG9uL2ltcG9ydGxpYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4YjFiOGUKLS0tIC9kZXYvbnVsbAorKysgYi9QeXRob24vaW1wb3J0bGliLmgKQEAgLTAsMCArMSw0NDIxIEBACisvKiBBdXRvLWdlbmVyYXRlZCBieSBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMgKi8KK3Vuc2lnbmVkIGNoYXIgX1B5X01fX2ltcG9ydGxpYltdID0geworICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDYsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDIwMCwzLDAsMCwxMDAsMCwwLDkwLDAsMCwKKyAgICAxMDAsMTI5LDAsOTAsMSwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLAorICAgIDIsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCwzLDAsMTAwLDgsCisgICAgMCwxMDAsOSwwLDEzMiwwLDAsOTAsNCwwLDEwMCwxMCwwLDEwMCwxMSwwLAorICAgIDEzMiwwLDAsOTAsNSwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsOTAsCisgICAgNiwwLDEwMCwxNCwwLDEwMCwxNSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxNiwKKyAgICAwLDEwMCwxNywwLDEzMiwwLDAsOTAsOCwwLDEwMCwxOCwwLDEwMCwxOSwwLAorICAgIDEzMiwwLDAsOTAsOSwwLDEwMCwyMCwwLDEwMCwyMSwwLDEwMCwyMiwwLDEzMiwKKyAgICAxLDAsOTAsMTAsMCwxMDAsMjMsMCwxMDAsMjQsMCwxMzIsMCwwLDkwLDExLAorICAgIDAsMTAxLDEyLDAsMTAxLDExLDAsMTA2LDEzLDAsMTMxLDEsMCw5MCwxNCwwLAorICAgIDEwMCwyNSwwLDEwMCwyNiwwLDEzMiwwLDAsOTAsMTUsMCwxMDUsMCwwLDkwLAorICAgIDE2LDAsMTA1LDAsMCw5MCwxNywwLDcxLDEwMCwyNywwLDEwMCwyOCwwLDEzMiwKKyAgICAwLDAsMTAwLDI4LDAsMTAxLDE4LDAsMTMxLDMsMCw5MCwxOSwwLDcxLDEwMCwKKyAgICAyOSwwLDEwMCwzMCwwLDEzMiwwLDAsMTAwLDMwLDAsMTMxLDIsMCw5MCwyMCwKKyAgICAwLDcxLDEwMCwzMSwwLDEwMCwzMiwwLDEzMiwwLDAsMTAwLDMyLDAsMTMxLDIsCisgICAgMCw5MCwyMSwwLDEwMCwzMywwLDEwMCwzNCwwLDEzMiwwLDAsOTAsMjIsMCwKKyAgICAxMDAsMzUsMCwxMDAsMzYsMCwxMzIsMCwwLDkwLDIzLDAsMTAwLDM3LDAsMTAwLAorICAgIDM4LDAsMTMyLDAsMCw5MCwyNCwwLDEwMCwzOSwwLDEwMSwyNSwwLDEwMCw0MCwKKyAgICAwLDEzMSwxLDAsMTAwLDQxLDAsNjIsNjYsMTAxLDI1LDAsMTAwLDQyLDAsMTMxLAorICAgIDEsMCwxMDAsNDMsMCw2Miw2Niw5MCwyNiwwLDEwMSwyNywwLDEwMCw0NCwwLAorICAgIDEwMCw0NSwwLDEzMiwwLDAsMTAxLDI4LDAsMTAwLDQ2LDAsMTAwLDQ3LDAsMTAwLAorICAgIDQ4LDAsMTMxLDMsMCw2OCwxMzEsMSwwLDEzMSwxLDAsOTAsMjksMCwxMDAsCisgICAgNDksMCw5MCwzMCwwLDEwMCw1MCwwLDEwMywxLDAsOTAsMzEsMCwxMDAsNTEsCisgICAgMCwxMDMsMSwwLDkwLDMyLDAsMTAwLDUyLDAsMTAzLDEsMCw5MCwzMywwLAorICAgIDEwMCwxMjgsMCwxMDAsNTMsMCwxMDAsNTQsMCwxMzIsMSwwLDkwLDM1LDAsMTAwLAorICAgIDU1LDAsMTAwLDU2LDAsMTMyLDAsMCw5MCwzNiwwLDEwMCw1NywwLDEwMCw1OCwKKyAgICAwLDEzMiwwLDAsOTAsMzcsMCwxMDAsNTksMCwxMDAsNjAsMCwxMzIsMCwwLAorICAgIDkwLDM4LDAsMTAwLDYxLDAsMTAwLDYyLDAsMTMyLDAsMCw5MCwzOSwwLDEwMCwKKyAgICA2MywwLDEwMCw2NCwwLDEzMiwwLDAsOTAsNDAsMCwxMDAsNjUsMCwxMDAsNjYsCisgICAgMCwxMzIsMCwwLDkwLDQxLDAsMTAwLDY3LDAsMTAwLDY4LDAsMTMyLDAsMCwKKyAgICA5MCw0MiwwLDEwMCw2OSwwLDEwMCw3MCwwLDEzMiwwLDAsOTAsNDMsMCwxMDAsCisgICAgNzEsMCwxMDAsNzIsMCwxMzIsMCwwLDkwLDQ0LDAsMTAwLDczLDAsMTAwLDc0LAorICAgIDAsMTMyLDAsMCw5MCw0NSwwLDcxLDEwMCw3NSwwLDEwMCw3NiwwLDEzMiwwLAorICAgIDAsMTAwLDc2LDAsMTMxLDIsMCw5MCw0NiwwLDcxLDEwMCw3NywwLDEwMCw3OCwKKyAgICAwLDEzMiwwLDAsMTAwLDc4LDAsMTMxLDIsMCw5MCw0NywwLDcxLDEwMCw3OSwKKyAgICAwLDEwMCw4MCwwLDEzMiwwLDAsMTAwLDgwLDAsMTMxLDIsMCw5MCw0OCwwLAorICAgIDcxLDEwMCw4MSwwLDEwMCw4MiwwLDEzMiwwLDAsMTAwLDgyLDAsMTMxLDIsMCwKKyAgICA5MCw0OSwwLDcxLDEwMCw4MywwLDEwMCw4NCwwLDEzMiwwLDAsMTAwLDg0LDAsCisgICAgMTAxLDQ5LDAsMTMxLDMsMCw5MCw1MCwwLDcxLDEwMCw4NSwwLDEwMCw4NiwwLAorICAgIDEzMiwwLDAsMTAwLDg2LDAsMTMxLDIsMCw5MCw1MSwwLDcxLDEwMCw4NywwLAorICAgIDEwMCw4OCwwLDEzMiwwLDAsMTAwLDg4LDAsMTAxLDUxLDAsMTAxLDUwLDAsMTMxLAorICAgIDQsMCw5MCw1MiwwLDcxLDEwMCw4OSwwLDEwMCw5MCwwLDEzMiwwLDAsMTAwLAorICAgIDkwLDAsMTAxLDUxLDAsMTAxLDQ5LDAsMTMxLDQsMCw5MCw1MywwLDEwMywwLAorICAgIDAsOTAsNTQsMCw3MSwxMDAsOTEsMCwxMDAsOTIsMCwxMzIsMCwwLDEwMCw5MiwKKyAgICAwLDEzMSwyLDAsOTAsNTUsMCw3MSwxMDAsOTMsMCwxMDAsOTQsMCwxMzIsMCwKKyAgICAwLDEwMCw5NCwwLDEzMSwyLDAsOTAsNTYsMCw3MSwxMDAsOTUsMCwxMDAsOTYsCisgICAgMCwxMzIsMCwwLDEwMCw5NiwwLDEzMSwyLDAsOTAsNTcsMCw3MSwxMDAsOTcsCisgICAgMCwxMDAsOTgsMCwxMzIsMCwwLDEwMCw5OCwwLDEzMSwyLDAsOTAsNTgsMCwKKyAgICA3MSwxMDAsOTksMCwxMDAsMTAwLDAsMTMyLDAsMCwxMDAsMTAwLDAsMTMxLDIsMCwKKyAgICA5MCw1OSwwLDcxLDEwMCwxMDEsMCwxMDAsMTAyLDAsMTMyLDAsMCwxMDAsMTAyLDAsCisgICAgMTMxLDIsMCw5MCw2MCwwLDEwMCwxMDMsMCwxMDAsMTA0LDAsMTMyLDAsMCw5MCwKKyAgICA2MSwwLDEwMCwxMDUsMCwxMDAsMTA2LDAsMTMyLDAsMCw5MCw2MiwwLDEwMCwxMDcsCisgICAgMCwxMDAsMTA4LDAsMTMyLDAsMCw5MCw2MywwLDEwMCwxMDksMCw5MCw2NCwwLAorICAgIDEwMCwxMTAsMCwxMDAsMTExLDAsMTMyLDAsMCw5MCw2NSwwLDEwMCwxMTIsMCwxMDAsCisgICAgMTEzLDAsMTMyLDAsMCw5MCw2NiwwLDEwMCwxMjgsMCwxMDAsNDYsMCwxMDAsMTE0LAorICAgIDAsMTAwLDExNSwwLDEzMiwyLDAsOTAsNjcsMCwxMDAsMTE2LDAsMTAwLDExNywwLAorICAgIDEzMiwwLDAsOTAsNjgsMCwxMDAsMTE4LDAsMTAwLDExOSwwLDEzMiwwLDAsOTAsCisgICAgNjksMCwxMDAsMTIwLDAsMTAwLDEyMSwwLDEzMiwwLDAsOTAsNzAsMCwxMDAsMTI4LAorICAgIDAsMTAwLDEyOCwwLDEwMiwwLDAsMTAwLDQ2LDAsMTAwLDEyMiwwLDEwMCwxMjMsMCwKKyAgICAxMzIsNCwwLDkwLDcxLDAsMTAwLDEyNCwwLDEwMCwxMjUsMCwxMzIsMCwwLDkwLAorICAgIDcyLDAsMTAwLDEyNiwwLDEwMCwxMjcsMCwxMzIsMCwwLDkwLDczLDAsMTAwLDEyOCwKKyAgICAwLDgzLDQwLDEzMCwwLDAsMCwxMTcsODMsMSwwLDAsNjcsMTExLDExNCwxMDEsCisgICAgMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLAorICAgIDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMTAsMTAsODQsMTA0LDEwNSwxMTUsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw3OCw3OSw4NCwzMiwxMDksCisgICAgMTAxLDk3LDExMCwxMTYsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LAorICAgIDExNiwxMDgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzMsMzIsNzMsMTE2LAorICAgIDMyLDEwNCw5NywxMTUsMzIsOTgsMTAxLDEwMSwxMTAsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywxMTAsCisgICAgMTAxLDEwMCwzMiwxMTUsMTE3LDk5LDEwNCwxMCwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDMyLAorICAgIDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDExMiwxMDEsMTAwLDMyLDEwNSwxMTAsMTE2LDExMSwzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLAorICAgIDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwKKyAgICAzMiw2NSwxMTUsMTAsMTE1LDExNyw5OSwxMDQsMzIsMTA1LDExNiwzMiwxMTQsMTAxLDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LAorICAgIDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiw5NywxMTYsMTE2LDExNCwxMDUsCisgICAgOTgsMTE3LDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsCisgICAgMTExLDEwLDExOSwxMTEsMTE0LDEwNyw0NiwzMiw3OSwxMTAsMTAxLDMyLDExNSwxMDQsMTExLDExNywKKyAgICAxMDgsMTAwLDMyLDExNywxMTUsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTcsOTgsMTA4LDEwNSw5OSw0NSwxMDIsCisgICAgOTcsOTksMTA1LDExMCwxMDMsMzIsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsCisgICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDExNywKKyAgICAzLDAsMCwwLDExOSwxMDUsMTEwLDExNyw2LDAsMCwwLDk5LDEyMSwxMDMsMTE5LAorICAgIDEwNSwxMTAsMTE3LDYsMCwwLDAsMTAwLDk3LDExNCwxMTksMTA1LDExMCw5OSwwLDAsCisgICAgMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw0OSwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwKKyAgICAxMTYsMywwLDEzMSwxLDAsMTE0LDMzLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwKKyAgICAwLDAsMTI1LDAsMCwxMTAsMTIsMCwxMDAsMywwLDEwMCwyLDAsMTMyLDAsCisgICAgMCwxMjUsMCwwLDEyNCwwLDAsODMsNDAsNCwwLDAsMCw3OCw5OSwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDgzLAorICAgIDAsMCwwLDExNSwxMywwLDAsMCwxMDAsMSwwLDExNiwwLDAsMTA2LDEsCisgICAgMCwxMDcsNiwwLDgzLDQwLDIsMCwwLDAsMTE3LDUzLDAsMCwwLDg0LAorICAgIDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSwKKyAgICAzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwMSwxMDAsCisgICAgMzIsOTksOTcsMTE1LDEwMSw0NSwxMDUsMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LDEwNSwxMTgsCisgICAgMTAxLDEwOCwxMjEsNDYsMTE1LDEyLDAsMCwwLDgwLDg5LDg0LDcyLDc5LDc4LDY3LAorICAgIDY1LDgzLDY5LDc5LDc1LDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTUsCisgICAgMTExLDExNSwxMTcsNywwLDAsMCwxMDEsMTEwLDExOCwxMDUsMTE0LDExMSwxMTAsNDAsMCwKKyAgICAwLDAsMCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsCisgICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKKyAgICAxMSwwLDAsMCw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwzNCwKKyAgICAwLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE3LDM3LDAsMCwwLDk1LAorICAgIDEwOSw5NywxMDcsMTAxLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDQ2LAorICAgIDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsCisgICAgOTksOTcsMTE1LDEwMSw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDgzLDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLAorICAgIDAsODMsNDAsMiwwLDAsMCwxMTcsNTMsMCwwLDAsODQsMTE0LDExNywxMDEsCisgICAgMzIsMTA1LDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDMyLDEwOSwxMTcsCisgICAgMTE1LDExNiwzMiw5OCwxMDEsMzIsOTksMTA0LDEwMSw5OSwxMDcsMTAxLDEwMCwzMiw5OSw5NywKKyAgICAxMTUsMTAxLDQ1LDEwNSwxMTAsMTE1LDEwMSwxMTAsMTE1LDEwNSwxMTYsMTA1LDExOCwxMDEsMTA4LDEyMSwKKyAgICA0Niw3MCw0MCwxLDAsMCwwLDExNyw1LDAsMCwwLDcwLDk3LDEwOCwxMTUsCisgICAgMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsMTEsMCwwLDAsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LAorICAgIDExNSwxMDEsMzgsMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDQwLDQsMCwKKyAgICAwLDAsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDgsMCwwLDAsMTEyLAorICAgIDEwOCw5NywxMTYsMTAyLDExMSwxMTQsMTA5LDExNywxMCwwLDAsMCwxMTUsMTE2LDk3LDExNCwKKyAgICAxMTYsMTE1LDExOSwxMDUsMTE2LDEwNCwxMTcsMjcsMCwwLDAsOTUsNjcsNjUsODMsNjksCisgICAgOTUsNzMsNzgsODMsNjksNzgsODMsNzMsODQsNzMsODYsNjksOTUsODAsNzYsNjUsCisgICAgODQsNzAsNzksODIsNzcsODMsNDAsMSwwLDAsMCwxMTcsMTEsMCwwLDAsCisgICAgOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsNDAsMCwwLDAsMCwKKyAgICA0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTYsMCwwLDAsOTUsMTA5LDk3LDEwNywKKyAgICAxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsMzIsMCwwLDAsCisgICAgMTE1LDgsMCwwLDAsMCwxLDE4LDEsMTUsNCwxMiwzLDExNywxNiwwLAorICAgIDAsMCw5NSwxMDksOTcsMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsCisgICAgMTE1LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxMDgsMCwwLDAsMTE2LDAsMCwxMjQsCisgICAgMCwwLDEzMSwxLDAsMTI1LDAsMCwxMDMsMCwwLDEyNSwxLDAsMTI0LDEsCisgICAgMCwxMDYsMSwwLDEyNCwwLDAsMTAwLDEsMCw2NCwxMzEsMSwwLDEsMTI0LAorICAgIDEsMCwxMDYsMSwwLDEyNCwwLDAsMTAwLDIsMCw2MywxMDAsMSwwLDY0LAorICAgIDEzMSwxLDAsMSwxMjQsMSwwLDEwNiwxLDAsMTI0LDAsMCwxMDAsMywwLAorICAgIDYzLDEwMCwxLDAsNjQsMTMxLDEsMCwxLDEyNCwxLDAsMTA2LDEsMCwxMjQsCisgICAgMCwwLDEwMCw0LDAsNjMsMTAwLDEsMCw2NCwxMzEsMSwwLDEsMTE2LDIsCisgICAgMCwxMjQsMSwwLDEzMSwxLDAsODMsNDAsNSwwLDAsMCwxMTcsMTExLDAsCisgICAgMCwwLDY3LDExMSwxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLDk3LDMyLDUxLDUwLDQ1LDk4LAorICAgIDEwNSwxMTYsMzIsMTA1LDExMCwxMTYsMTAxLDEwMywxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTA4LDEwNSwKKyAgICAxMTYsMTE2LDEwOCwxMDEsNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiw4OCw4OCw4OCwzMiw4NCwxMDEsMTA5LDExMiwxMTEsMTE0LDk3LDExNCwxMjEsMzIsCisgICAgMTE3LDExMCwxMTYsMTA1LDEwOCwzMiwxMDksOTcsMTE0LDExNSwxMDQsOTcsMTA4LDM5LDExNSwzMiwKKyAgICAxMDgsMTExLDExMCwxMDMsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDExNSwzMiw5NywKKyAgICAxMTQsMTAxLDMyLDEwMSwxMjAsMTEyLDExMSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMDUsMjU1LDAsMCwwLDEwNSw4LDAsMCwwLDEwNSwxNiwwLDAsMCwKKyAgICAxMDUsMjQsMCwwLDAsNDAsMywwLDAsMCwxMTcsMywwLDAsMCwxMDUsCisgICAgMTEwLDExNiwxMTcsNiwwLDAsMCw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDExNyw5LDAsCisgICAgMCwwLDk4LDEyMSwxMTYsMTAxLDk3LDExNCwxMTQsOTcsMTIxLDQwLDIsMCwwLDAsCisgICAgMTE3LDEsMCwwLDAsMTIwLDExNyw5LDAsMCwwLDEwNSwxMTAsMTE2LDk1LDk4LAorICAgIDEyMSwxMTYsMTAxLDExNSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LAorICAgIDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLAorICAgIDExNyw3LDAsMCwwLDk1LDExOSw5NSwxMDgsMTExLDExMCwxMDMsNDUsMCwwLDAsCisgICAgMTE1LDE0LDAsMCwwLDAsNiwxMiwxLDYsMSwxNywxLDIxLDEsMjEsCisgICAgMSwyMSwxLDExNyw3LDAsMCwwLDk1LDExOSw5NSwxMDgsMTExLDExMCwxMDMsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNjgsMCwwLDAsMTI0LDAsMCwxMDAsMSwwLDI1LAorICAgIDEyNSwxLDAsMTI0LDEsMCwxMjQsMCwwLDEwMCwyLDAsMjUsMTAwLDMsMCwKKyAgICA2Miw3OSwxMjUsMSwwLDEyNCwxLDAsMTI0LDAsMCwxMDAsNCwwLDI1LDEwMCwKKyAgICA1LDAsNjIsNzksMTI1LDEsMCwxMjQsMSwwLDEyNCwwLDAsMTAwLDYsMCwKKyAgICAyNSwxMDAsNywwLDYyLDc5LDEyNSwxLDAsMTI0LDEsMCw4Myw0MCw4LDAsCisgICAgMCwwLDExNywxMTUsMCwwLDAsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsNTIsCisgICAgMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTA4LDEwNSwxMTYsMTE2LDEwOCwxMDEsCisgICAgNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCwzMiwxMTYsMTExLDMyLDk3LDExMCwzMiwxMDUsMTEwLAorICAgIDExNiwxMDEsMTAzLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODgsODgsODgsMzIsCisgICAgODQsMTAxLDEwOSwxMTIsMTExLDExNCw5NywxMTQsMTIxLDMyLDExNywxMTAsMTE2LDEwNSwxMDgsMzIsCisgICAgMTA5LDk3LDExNCwxMTUsMTA0LDk3LDEwOCwzOSwxMTUsMzIsMTA4LDExMSwxMTAsMTAzLDMyLDEwMiwKKyAgICAxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiw5NywxMTQsMTAxLDMyLDEwMSwxMjAsMTEyLDExMSwKKyAgICAxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMDUsMCwwLDAsMCwxMDUsCisgICAgMSwwLDAsMCwxMDUsOCwwLDAsMCwxMDUsMiwwLDAsMCwxMDUsMTYsCisgICAgMCwwLDAsMTA1LDMsMCwwLDAsMTA1LDI0LDAsMCwwLDQwLDAsMCwKKyAgICAwLDAsNDAsMiwwLDAsMCwxMTcsOSwwLDAsMCwxMDUsMTEwLDExNiw5NSwKKyAgICA5OCwxMjEsMTE2LDEwMSwxMTUsMTE3LDEsMCwwLDAsMTIwLDQwLDAsMCwwLDAsCisgICAgNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDcsMCwwLDAsOTUsMTE0LDk1LDEwOCwKKyAgICAxMTEsMTEwLDEwMyw2MSwwLDAsMCwxMTUsMTAsMCwwLDAsMCw2LDEwLDEsCisgICAgMTgsMSwxOCwxLDE4LDEsMTE3LDcsMCwwLDAsOTUsMTE0LDk1LDEwOCwxMTEsCisgICAgMTEwLDEwMyw5OSwwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw0LAorICAgIDAsMCwwLDcxLDAsMCwwLDExNSwxMDMsMCwwLDAsMTAzLDAsMCwxMjUsCisgICAgMSwwLDEyMCw3MSwwLDEyNCwwLDAsNjgsOTMsNjMsMCwxMjUsMiwwLDEyNCwKKyAgICAyLDAsMTE1LDMxLDAsMTEzLDEzLDAsMTEwLDAsMCwxMjQsMSwwLDEwNiwwLAorICAgIDAsMTI0LDIsMCwxMzEsMSwwLDEsMTI0LDIsMCwxMDAsNCwwLDI1LDExNiwKKyAgICAxLDAsMTA3LDcsMCwxMTQsMTMsMCwxMjQsMSwwLDEwNiwwLDAsMTE2LDIsCisgICAgMCwxMzEsMSwwLDEsMTEzLDEzLDAsMTEzLDEzLDAsODcsMTAwLDIsMCwxMDYsCisgICAgMywwLDEyNCwxLDAsMTAwLDMsMCwxMDAsNSwwLDEzMywyLDAsMjUsMTMxLAorICAgIDEsMCw4Myw0MCw2LDAsMCwwLDExNywzMSwwLDAsMCw4MiwxMDEsMTEyLAorICAgIDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsCisgICAgMTEyLDk3LDExNiwxMDQsNDYsMTA2LDExMSwxMDUsMTEwLDQwLDQxLDQ2LDEwNSwxLDAsMCwKKyAgICAwLDExNywwLDAsMCwwLDc4LDEwNSwyNTUsMjU1LDI1NSwyNTUsMTA1LDI1NSwyNTUsMjU1LAorICAgIDI1NSw0MCw0LDAsMCwwLDExNyw2LDAsMCwwLDk3LDExMiwxMTIsMTAxLDExMCwKKyAgICAxMDAsMTE3LDE1LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDk3LDExNCwKKyAgICA5NywxMTYsMTExLDExNCwxMTUsMTE3LDgsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LAorICAgIDEwMSwxMTIsMTE3LDQsMCwwLDAsMTA2LDExMSwxMDUsMTEwLDQwLDMsMCwwLDAsCisgICAgMTE3LDEwLDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExMiw5NywxMTQsMTE2LDExNSwxMTcsCisgICAgOSwwLDAsMCwxMTAsMTAxLDExOSw5NSwxMTIsOTcsMTE0LDExNiwxMTUsMTE3LDQsMCwKKyAgICAwLDAsMTEyLDk3LDExNCwxMTYsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsMTAsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsCisgICAgMTEwLDc0LDAsMCwwLDExNSwxNiwwLDAsMCwwLDIsNiwxLDEzLDEsCisgICAgNiwxLDYsMSwxMywxLDE2LDEsMjAsMSwxMTcsMTAsMCwwLDAsOTUsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCw2LDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDg1LAorICAgIDAsMCwwLDEyMCw0OCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDY4LAorICAgIDkzLDI4LDAsMTI1LDEsMCwxMjQsMSwwLDExNiwxLDAsMTA3LDYsMCwxMTQsCisgICAgMTMsMCwxMjQsMSwwLDEyNSwyLDAsODAsMTEzLDEzLDAsMTEzLDEzLDAsODcsCisgICAgMTE2LDIsMCwxMjUsMiwwLDEyNCwwLDAsMTA2LDMsMCwxMjQsMiwwLDEzMSwKKyAgICAxLDAsOTIsMywwLDEyNSwzLDAsMTI1LDQsMCwxMjUsNSwwLDEyNCwzLAorICAgIDAsMTI0LDUsMCwxMDIsMiwwLDgzLDQwLDEsMCwwLDAsMTE3LDMyLDAsCisgICAgMCwwLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwKKyAgICAxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMTUsMTEyLDEwOCwxMDUsMTE2LDQwLAorICAgIDQxLDQ2LDQwLDQsMCwwLDAsMTE3LDgsMCwwLDAsMTE0LDEwMSwxMTgsMTAxLAorICAgIDExNCwxMTUsMTAxLDEwMCwxMTcsMTUsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDEwMSwKKyAgICAxMTIsOTcsMTE0LDk3LDExNiwxMTEsMTE0LDExNSwxMTcsOCwwLDAsMCwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSwxMTUsMTAxLDExMiwxMTcsMTAsMCwwLDAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwKKyAgICAxMTYsMTA1LDExMSwxMTAsNDAsNiwwLDAsMCwxMTcsNCwwLDAsMCwxMTIsOTcsCisgICAgMTE2LDEwNCwxMTcsMSwwLDAsMCwxMjAsMTE3LDMsMCwwLDAsMTE1LDEwMSwxMTIsCisgICAgMTE3LDUsMCwwLDAsMTAyLDExNCwxMTEsMTEwLDExNiwxMTcsMSwwLDAsMCw5NSwKKyAgICAxMTcsNCwwLDAsMCwxMTYsOTcsMTA1LDEwOCw0MCwwLDAsMCwwLDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICAxMTUsMTEyLDEwOCwxMDUsMTE2LDg2LDAsMCwwLDExNSwxNCwwLDAsMCwwLDIsCisgICAgMTksMSwxMiwxLDYsMSw4LDIsNiwxLDI0LDEsMTE3LDExLDAsMCwKKyAgICAwLDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwxMTYsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDMsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDYxLDAsMCwwLDEyMSwxOSwwLDExNiwwLDAsMTA2LDEsMCwxMjQsCisgICAgMCwwLDEzMSwxLDAsMTI1LDIsMCw4NywxMTAsMjIsMCw0LDExNiwyLDAsCisgICAgMTA3LDEwLDAsMTE0LDQzLDAsMSwxLDEsMTAwLDIsMCw4Myw4OSwxMTAsMSwKKyAgICAwLDg4LDEyNCwyLDAsMTA2LDQsMCwxMDAsMSwwLDY0LDEyNCwxLDAsMTA3LAorICAgIDIsMCw4Myw0MCwzLDAsMCwwLDExNyw0OSwwLDAsMCw4NCwxMDEsMTE1LAorICAgIDExNiwzMiwxMTksMTA0LDEwMSwxMTYsMTA0LDEwMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LAorICAgIDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLAorICAgIDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDEwMSwzMiwxMTYsMTIxLDExMiwxMDEsNDYsMTA1LDAsCisgICAgMjQwLDAsMCw3MCw0MCw1LDAsMCwwLDExNywzLDAsMCwwLDk1LDExMSwKKyAgICAxMTUsMTE3LDQsMCwwLDAsMTE1LDExNiw5NywxMTYsMTE3LDcsMCwwLDAsNzksCisgICAgODMsNjksMTE0LDExNCwxMTEsMTE0LDExNyw1LDAsMCwwLDcwLDk3LDEwOCwxMTUsMTAxLAorICAgIDExNyw3LDAsMCwwLDExNSwxMTYsOTUsMTA5LDExMSwxMDAsMTAxLDQwLDMsMCwwLAorICAgIDAsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDQsMCwwLDAsMTA5LAorICAgIDExMSwxMDAsMTAxLDExNyw5LDAsMCwwLDExNSwxMTYsOTcsMTE2LDk1LDEwNSwxMTAsMTAyLAorICAgIDExMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLAorICAgIDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxOCwwLAorICAgIDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDk1LDEwOSwxMTEsMTAwLDEwMSw5NSwKKyAgICAxMTYsMTIxLDExMiwxMDEsOTgsMCwwLDAsMTE1LDEwLDAsMCwwLDAsMiwzLAorICAgIDEsMTksMSwxMywxLDksMSwxMTcsMTgsMCwwLDAsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDEzLDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDAsMSwKKyAgICAwLDEzMSwyLDAsODMsNDAsMiwwLDAsMCwxMTcsMzEsMCwwLDAsODIsCisgICAgMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsCisgICAgMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwNSwwLAorICAgIDEyOCwwLDAsNDAsMSwwLDAsMCwxMTcsMTgsMCwwLDAsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDQwLAorICAgIDEsMCwwLDAsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsMCwwLAorICAgIDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTIsMCwwLDAsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDIsMTA1LDEwOCwxMDEsMTA4LDAsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsMiwxMTcsMTIsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTA1LDExNSwxMDIsMTA1LDEwOCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsCisgICAgMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzQsMCwwLDAsCisgICAgMTI0LDAsMCwxMTUsMjEsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsCisgICAgMCwwLDExMCwwLDAsMTE2LDIsMCwxMjQsMCwwLDEwMCwxLDAsMTMxLDIsCisgICAgMCw4Myw0MCwyLDAsMCwwLDExNywzMCwwLDAsMCw4MiwxMDEsMTEyLDEwOCwKKyAgICA5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLAorICAgIDk3LDExNiwxMDQsNDYsMTA1LDExNSwxMDAsMTA1LDExNCw0NiwxMDUsMCw2NCwwLDAsNDAsCisgICAgMywwLDAsMCwxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw2LDAsMCwKKyAgICAwLDEwMywxMDEsMTE2LDk5LDExOSwxMDAsMTE3LDE4LDAsMCwwLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDEwNSwxMTUsOTUsMTA5LDExMSwxMDAsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSw0MCwxLAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDAsMCwwLAorICAgIDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCisgICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDEwNSwxMTUsMTAwLDEwNSwxMTQsMTE0LDAsMCwwLDExNSw2LDAsMCwKKyAgICAwLDAsMiw2LDEsMTUsMSwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCwxMDUsMTgyLDEsMCwwLDk5LDMsMCwwLAorICAgIDAsMCwwLDAsMCw2LDAsMCwwLDE3LDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxOTIsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTE2LAorICAgIDEsMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDIsMCwxMjUsMywwLDExNiwyLAorICAgIDAsMTA2LDMsMCwxMjQsMywwLDExNiwyLDAsMTA2LDQsMCwxMTYsMiwwLAorICAgIDEwNiw1LDAsNjYsMTE2LDIsMCwxMDYsNiwwLDY2LDEyNCwyLDAsMTAwLDIsCisgICAgMCw2NCwxMzEsMywwLDEyNSw0LDAsMTIxLDYwLDAsMTE2LDcsMCwxMDYsOCwKKyAgICAwLDEyNCw0LDAsMTAwLDMsMCwxMzEsMiwwLDE0MywyMCwwLDEyNSw1LDAsCisgICAgMTI0LDUsMCwxMDYsOSwwLDEyNCwxLDAsMTMxLDEsMCwxLDg3LDEwMCw0LAorICAgIDAsODEsODgsMTE2LDIsMCwxMDYsMTAsMCwxMjQsMywwLDEyNCwwLDAsMTMxLAorICAgIDIsMCwxLDg3LDExMCw1OSwwLDQsMTE2LDExLDAsMTA3LDEwLDAsMTE0LDE4NywKKyAgICAwLDEsMSwxLDEyMSwxNywwLDExNiwyLDAsMTA2LDEyLDAsMTI0LDMsMCwKKyAgICAxMzEsMSwwLDEsODcsMTEwLDE4LDAsNCwxMTYsMTEsMCwxMDcsMTAsMCwxMTQsCisgICAgMTc5LDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMzAsMCwwLDg5LDExMCwxLAorICAgIDAsODgsMTAwLDQsMCw4Myw0MCw1LDAsMCwwLDExNywxNjIsMCwwLDAsCisgICAgNjYsMTAxLDExNSwxMTYsNDUsMTAxLDEwMiwxMDIsMTExLDExNCwxMTYsMzIsMTAyLDExNywxMTAsOTksCisgICAgMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwzMiwxMDAsOTcsCisgICAgMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsOTcsMTE2LDExMSwKKyAgICAxMDksMTA1LDk5LDk3LDEwOCwxMDgsMTIxLDQ2LDEwLDMyLDMyLDMyLDMyLDY2LDEwMSwzMiwKKyAgICAxMTIsMTE0LDEwMSwxMTIsOTcsMTE0LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDQsOTcsMTEwLDEwMCwKKyAgICAxMDgsMTAxLDMyLDk3LDMyLDcwLDEwNSwxMDgsMTAxLDY5LDEyMCwxMDUsMTE1LDExNiwxMTUsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMDIsMzIsOTksMTExLDExMCw5OSwxMTcsMTE0LDExNCwxMDEsCisgICAgMTEwLDExNiwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwzMiwxMTYsMTA0LAorICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTAxLDEwOSwxMTIsMTExLDExNCw5NywxMTQsMTIxLDMyLAorICAgIDEwMiwxMDUsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDExNiwxMTYsMTAxLDEwOSwxMTIsMTE2LDEwMSwKKyAgICAxMDAsNDYsMTE3LDUsMCwwLDAsMTIzLDEyNSw0NiwxMjMsMTI1LDEwNSwxODIsMSwwLAorICAgIDAsMTE3LDIsMCwwLDAsMTE5LDk4LDc4LDQwLDEzLDAsMCwwLDExNyw2LAorICAgIDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDIsMCwwLDAsMTA1LDEwMCwKKyAgICAxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw0LDAsMCwwLDExMSwxMTIsMTAxLAorICAgIDExMCwxMTcsNiwwLDAsMCw3OSw5NSw2OSw4OCw2Nyw3NiwxMTcsNywwLDAsCisgICAgMCw3OSw5NSw2Nyw4Miw2OSw2NSw4NCwxMTcsOCwwLDAsMCw3OSw5NSw4NywKKyAgICA4Miw3OSw3OCw3Niw4OSwxMTcsMywwLDAsMCw5NSwxMDUsMTExLDExNyw2LDAsCisgICAgMCwwLDcwLDEwNSwxMDgsMTAxLDczLDc5LDExNyw1LDAsMCwwLDExOSwxMTQsMTA1LAorICAgIDExNiwxMDEsMTE3LDcsMCwwLDAsMTE0LDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMTcsNywKKyAgICAwLDAsMCw3OSw4Myw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDYsMCwwLDAsMTE3LAorICAgIDExMCwxMDgsMTA1LDExMCwxMDcsNDAsNiwwLDAsMCwxMTcsNCwwLDAsMCwxMTIsCisgICAgOTcsMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDAsOTcsMTE2LDk3LDExNyw0LDAsMCwKKyAgICAwLDEwOSwxMTEsMTAwLDEwMSwxMTcsOCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTYsCisgICAgMTA5LDExMiwxMTcsMiwwLDAsMCwxMDIsMTAwLDExNyw0LDAsMCwwLDEwMiwxMDUsCisgICAgMTA4LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwKKyAgICAwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMywKKyAgICAwLDAsMCw5NSwxMTksMTE0LDEwNSwxMTYsMTAxLDk1LDk3LDExNiwxMTEsMTA5LDEwNSw5OSwKKyAgICAxMjEsMCwwLDAsMTE1LDI2LDAsMCwwLDAsNSwyNCwxLDksMSwzMywKKyAgICAxLDMsMywyMSwxLDE5LDEsMjAsMSwxMywxLDMsMSwxNywxLDEzLAorICAgIDEsNSwxLDExNywxMywwLDAsMCw5NSwxMTksMTE0LDEwNSwxMTYsMTAxLDk1LDk3LAorICAgIDExNiwxMTEsMTA5LDEwNSw5OSw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLAorICAgIDAsMCw3LDAsMCwwLDY3LDAsMCwwLDExNSw5NSwwLDAsMCwxMjAsCisgICAgNjksMCwxMDAsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMDAsNCwwLDEwMyw0LAorICAgIDAsNjgsOTMsNDksMCwxMjUsMiwwLDExNiwwLDAsMTI0LDEsMCwxMjQsMiwKKyAgICAwLDEzMSwyLDAsMTE0LDE5LDAsMTE2LDEsMCwxMjQsMCwwLDEyNCwyLDAsCisgICAgMTE2LDIsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMzEsMywwLDEsCisgICAgMTEzLDE5LDAsMTEzLDE5LDAsODcsMTI0LDAsMCwxMDYsMywwLDEwNiw0LDAsCisgICAgMTI0LDEsMCwxMDYsMywwLDEzMSwxLDAsMSwxMDAsNSwwLDgzLDQwLDYsCisgICAgMCwwLDAsMTE3LDQ3LDAsMCwwLDgzLDEwNSwxMDksMTEyLDEwOCwxMDEsMzIsMTE1LAorICAgIDExNyw5OCwxMTUsMTE2LDEwNSwxMTYsMTE3LDExNiwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTAyLDExNywKKyAgICAxMTAsOTksMTE2LDExMSwxMTEsMTA4LDExNSw0NiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDk1LDExOSwKKyAgICAxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQ2LDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LAorICAgIDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LAorICAgIDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwKKyAgICA3OCw0MCw1LDAsMCwwLDExNyw3LDAsMCwwLDEwNCw5NywxMTUsOTcsMTE2LAorICAgIDExNiwxMTQsMTE3LDcsMCwwLDAsMTE1LDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMTE3LDcsCisgICAgMCwwLDAsMTAzLDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMTE3LDgsMCwwLDAsOTUsCisgICAgOTUsMTAwLDEwNSw5OSwxMTYsOTUsOTUsMTE3LDYsMCwwLDAsMTE3LDExMiwxMDAsOTcsCisgICAgMTE2LDEwMSw0MCwzLDAsMCwwLDExNywzLDAsMCwwLDExMCwxMDEsMTE5LDExNywKKyAgICAzLDAsMCwwLDExMSwxMDgsMTAwLDExNyw3LDAsMCwwLDExNCwxMDEsMTEyLDEwOCwKKyAgICA5Nyw5OSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLAorICAgIDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsCisgICAgNSwwLDAsMCw5NSwxMTksMTE0LDk3LDExMiwxNDMsMCwwLDAsMTE1LDgsMCwKKyAgICAwLDAsMCwyLDI1LDEsMTUsMSwzMiwxLDExNyw1LDAsMCwwLDk1LAorICAgIDExOSwxMTQsOTcsMTEyLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwKKyAgICAwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDExNiwwLAorICAgIDAsMTE2LDEsMCwxMzEsMSwwLDEyNCwwLDAsMTMxLDEsMCw4Myw0MCwxLAorICAgIDAsMCwwLDExNyw3NSwwLDAsMCw2NywxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsCisgICAgMzIsMTEwLDEwMSwxMTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsODQsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLAorICAgIDExMCwxMTEsMTE2LDMyLDEwMSwxMTAsMTE2LDEwMSwxMTQsMTAxLDEwMCwzMiwxMDUsMTEwLDExNiwxMTEsCisgICAgMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE2LDEyMSwxMTIsCisgICAgMTAxLDExNywzLDAsMCwwLDk1LDEwNSwxMTEsNDAsMSwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNywxMCwwLDAsMCwxMTAsMTAxLDExOSw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxNTQsMCwwLDAsMTE1LDIsMCwwLDAsMCw2LDExNywxMCwwLAorICAgIDAsMCwxMTAsMTAxLDExOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMSwwLDAsMCwxLDAsMCwwLDY2LDAsMCwKKyAgICAwLDExNSwyMCwwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLAorICAgIDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsCisgICAgMTQsMCwwLDAsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsNzgsNDAsMywwLDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsCisgICAgOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCwKKyAgICA5NywxMDksMTAxLDk1LDk1LDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LAorICAgIDk1LDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxNCwwLDAsMCw5NSw2OCwxMDEsOTcsMTAwLDEwOCwKKyAgICAxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLDExNCwxNzEsMCwwLDAsMTE1LDIsMCwwLAorICAgIDAsMTYsMSwxMTcsMTQsMCwwLDAsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LAorICAgIDEwNyw2OSwxMTQsMTE0LDExMSwxMTQsOTksMSwwLDAsMCwwLDAsMCwwLDEsCisgICAgMCwwLDAsMiwwLDAsMCw2NiwwLDAsMCwxMTUsODYsMCwwLDAsCisgICAgMTI0LDAsMCw2OSwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKKyAgICAxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCwKKyAgICA0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LAorICAgIDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDEwMCw5LDAsCisgICAgMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsMCw5MCwKKyAgICA4LDAsMTAwLDEyLDAsODMsNDAsMTMsMCwwLDAsMTE3LDExLDAsMCwwLAorICAgIDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMTcsMTY5LDAsMCwwLAorICAgIDY1LDMyLDExNCwxMDEsOTksMTE3LDExNCwxMTUsMTA1LDExOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsCisgICAgMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLAorICAgIDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTE1LDMyLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwKKyAgICAzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LAorICAgIDExNSwxMCwzMiwzMiwzMiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDExNiwxMDQsMTE0LDEwMSwKKyAgICA5NywxMDAsMzIsNDksMzIsMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwzMiwxMTYsCisgICAgOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LDEwNywxMTUsMzIsNjUsMzIsMTE2LDEwNCwxMDEsMTEwLAorICAgIDMyLDY2LDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwzMiw1MCwKKyAgICAzMiwxMTYsMTE0LDEyMSwxMDUsMTEwLDEwMywzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNiwKKyAgICA5NywxMDcsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDExNSwzMiw2NiwzMiwxMTYsMTA0LDEwMSwxMTAsCisgICAgMzIsNjUsNDEsNDYsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsNzAsCisgICAgMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI0LDAsMCw5NSwKKyAgICAyLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI0LDAsMCw5NSwzLAorICAgIDAsMTI0LDEsMCwxMjQsMCwwLDk1LDQsMCwxMDAsMCwwLDEyNCwwLDAsCisgICAgOTUsNiwwLDEwMCwxLDAsMTI0LDAsMCw5NSw3LDAsMTAwLDEsMCwxMjQsCisgICAgMCwwLDk1LDgsMCwxMDAsMCwwLDgzLDQwLDIsMCwwLDAsNzgsMTA1LAorICAgIDAsMCwwLDAsNDAsOSwwLDAsMCwxMTcsNywwLDAsMCw5NSwxMTYsCisgICAgMTA0LDExNCwxMDEsOTcsMTAwLDExNywxMywwLDAsMCw5NywxMDgsMTA4LDExMSw5OSw5NywKKyAgICAxMTYsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNyw0LDAsMCwwLDEwOCwxMTEsOTksMTA3LAorICAgIDExNyw2LDAsMCwwLDExOSw5NywxMDcsMTAxLDExNywxMTIsMTE3LDQsMCwwLDAsCisgICAgMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDUsMCwKKyAgICAwLDAsMTExLDExOSwxMTAsMTAxLDExNCwxMTcsNSwwLDAsMCw5OSwxMTEsMTE3LDExMCwKKyAgICAxMTYsMTE3LDcsMCwwLDAsMTE5LDk3LDEwNSwxMTYsMTAxLDExNCwxMTUsNDAsMiwwLAorICAgIDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsCisgICAgMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwKKyAgICAwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwKKyAgICAxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsMTgxLDAsMCwKKyAgICAwLDExNSwxMiwwLDAsMCwwLDEsMTUsMSwxNSwxLDksMSw5LDEsCisgICAgOSwxLDExNywyMCwwLDAsMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSwKKyAgICA5OSwxMDcsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCw0LDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDg3LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwxLAorICAgIDAsMTI0LDAsMCwxMDYsMiwwLDEyNSwyLDAsMTIwLDU5LDAsMTE2LDMsMCwKKyAgICAxMDYsNCwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLDEyNCwzLDAsMTAwLAorICAgIDAsMCwxMDcsOCwwLDExNCw1NSwwLDEwMCwxLDAsODMsMTI0LDMsMCwxMDYsCisgICAgMiwwLDEyNSwyLDAsMTI0LDIsMCwxMjQsMSwwLDEwNywyLDAsMTE0LDI0LAorICAgIDAsMTAwLDIsMCw4MywxMTMsMjQsMCwxMDAsMCwwLDgzLDQwLDMsMCwwLAorICAgIDAsNzgsNzAsODQsNDAsOCwwLDAsMCwxMTcsNywwLDAsMCw5NSwxMTYsCisgICAgMTA0LDExNCwxMDEsOTcsMTAwLDExNyw5LDAsMCwwLDEwMywxMDEsMTE2LDk1LDEwNSwxMDAsCisgICAgMTAxLDExMCwxMTYsMTE3LDUsMCwwLDAsMTExLDExOSwxMTAsMTAxLDExNCwxMTcsMTIsMCwKKyAgICAwLDAsOTUsOTgsMTA4LDExMSw5OSwxMDcsMTA1LDExMCwxMDMsOTUsMTExLDExMCwxMTcsMywKKyAgICAwLDAsMCwxMDMsMTAxLDExNiwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsCisgICAgNSwwLDAsMCw3MCw5NywxMDgsMTE1LDEwMSwxMTcsNCwwLDAsMCw4NCwxMTQsCisgICAgMTE3LDEwMSw0MCw0LDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwKKyAgICAxMTcsMiwwLDAsMCwxMDksMTAxLDExNywzLDAsMCwwLDExNiwxMDUsMTAwLDExNywKKyAgICA0LDAsMCwwLDEwOCwxMTEsOTksMTA3LDQwLDAsMCwwLDAsNDAsMCwwLAorICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDEyLDAsMCwwLDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywKKyAgICAxMDAsMTA4LDExMSw5OSwxMDcsMTg5LDAsMCwwLDExNSwxOCwwLDAsMCwwLDIsCisgICAgMTIsMSw5LDEsMywxLDE1LDEsMTIsMSw0LDEsOSwxLDEyLDEsCisgICAgMTE3LDI0LDAsMCwwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywKKyAgICA0NiwxMDQsOTcsMTE1LDk1LDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDk5LDEsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDE3LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwyMTQsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsCisgICAgMTI1LDEsMCwxMjQsMCwwLDExNiwyLDAsMTI0LDEsMCw2MCwxMjIsMTc3LDAsCisgICAgMTIwLDE3MCwwLDEyNCwwLDAsMTA2LDMsMCwxNDMsMTMwLDAsMSwxMjQsMCwwLAorICAgIDEwNiw0LDAsMTAwLDEsMCwxMDcsMiwwLDExNSw2OCwwLDEyNCwwLDAsMTA2LAorICAgIDUsMCwxMjQsMSwwLDEwNywyLDAsMTE0LDk2LDAsMTI0LDEsMCwxMjQsMCwKKyAgICAwLDk1LDUsMCwxMjQsMCwwLDQsMTA2LDQsMCwxMDAsMiwwLDU1LDIsCisgICAgOTUsNCwwLDEwMCw1LDAsODMsMTI0LDAsMCwxMDYsNywwLDEzMSwwLDAsCisgICAgMTE0LDEyNywwLDExNiw4LDAsMTAwLDMsMCwxMjQsMCwwLDIyLDEzMSwxLDAsCisgICAgMTMwLDEsMCwxMTAsMCwwLDEyNCwwLDAsMTA2LDksMCwxMDYsMTAsMCwxMDAsCisgICAgNiwwLDEzMSwxLDAsMTE0LDE2MywwLDEyNCwwLDAsNCwxMDYsMTIsMCwxMDAsCisgICAgMiwwLDU1LDIsOTUsMTIsMCwxMTAsMCwwLDg3LDEwMCw0LDAsODEsODgsCisgICAgMTI0LDAsMCwxMDYsOSwwLDEwNiwxMCwwLDEzMSwwLDAsMSwxMjQsMCwwLAorICAgIDEwNiw5LDAsMTA2LDEzLDAsMTMxLDAsMCwxLDExMywyOCwwLDg3LDEwMCw0LAorICAgIDAsMTE2LDIsMCwxMjQsMSwwLDYxLDg4LDEwMCw0LDAsODMsNDAsNywwLAorICAgIDAsMCwxMTcsMTg1LDAsMCwwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDY1LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsNDYsMzIsMzIsNzMsMTAyLDMyLDk3LDMyLDExMiwKKyAgICAxMTEsMTE2LDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsMzIsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwKKyAgICAxMDcsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDEwMSwxMDAsNDQsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTcsMzIsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLAorICAgIDk5LDEwNyw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsCisgICAgMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc5LDExNiwxMDQsMTAxLDExNCwKKyAgICAxMTksMTA1LDExNSwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTA1LAorICAgIDExNSwzMiw5NywxMDgsMTE5LDk3LDEyMSwxMTUsMzIsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwKKyAgICAxMDAsMzIsOTcsMTEwLDEwMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLDExNCwxMDEsCisgICAgMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMTA1LDAsMCwwLDAsMTA1LDEsMCwwLDAsMTE3LDIzLDAsMCwwLDEwMCwKKyAgICAxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDMyLDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCwKKyAgICAzMiw5OCwxMjEsMzIsMzcsMTE0LDc4LDg0LDcwLDQwLDE0LDAsMCwwLDExNyw3LAorICAgIDAsMCwwLDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTE3LDksMCwwLDAsMTAzLAorICAgIDEwMSwxMTYsOTUsMTA1LDEwMCwxMDEsMTEwLDExNiwxMTcsMTIsMCwwLDAsOTUsOTgsMTA4LAorICAgIDExMSw5OSwxMDcsMTA1LDExMCwxMDMsOTUsMTExLDExMCwxMTcsNCwwLDAsMCwxMDgsMTExLAorICAgIDk5LDEwNywxMTcsNSwwLDAsMCw5OSwxMTEsMTE3LDExMCwxMTYsMTE3LDUsMCwwLAorICAgIDAsMTExLDExOSwxMTAsMTAxLDExNCwxMTcsNCwwLDAsMCw4NCwxMTQsMTE3LDEwMSwxMTcsCisgICAgMTIsMCwwLDAsMTA0LDk3LDExNSw5NSwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywKKyAgICAxMTcsMTQsMCwwLDAsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw2OSwxMTQsCisgICAgMTE0LDExMSwxMTQsMTE3LDYsMCwwLDAsMTE5LDk3LDEwNywxMDEsMTE3LDExMiwxMTcsNywKKyAgICAwLDAsMCw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNyw1LDAsMCwwLDcwLAorICAgIDk3LDEwOCwxMTUsMTAxLDExNyw3LDAsMCwwLDExOSw5NywxMDUsMTE2LDEwMSwxMTQsMTE1LAorICAgIDExNyw3LDAsMCwwLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDQwLDIsMCwwLAorICAgIDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNywzLDAsMCwwLDExNiwKKyAgICAxMDUsMTAwLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDcsCisgICAgMCwwLDAsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwyMDEsMCwwLDAsMTE1LDMyLAorICAgIDAsMCwwLDAsNiwxMiwxLDEwLDEsMywxLDMsMSwxMCwxLDMwLAorICAgIDEsOSwxLDE1LDEsNCwxLDEyLDEsMTksMSwxOCwxLDI0LDIsMTMsCisgICAgMSwyMCwyLDExNywxOSwwLDAsMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LAorICAgIDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCwxMCwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsMTY1LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwxLAorICAgIDAsMTI0LDAsMCwxMDYsMiwwLDE0MywxMzgsMCwxLDEyNCwwLDAsMTA2LDMsCisgICAgMCwxMjQsMSwwLDEwNywzLDAsMTE0LDUyLDAsMTE2LDQsMCwxMDAsMSwwLAorICAgIDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCwwLDAsMTA2LDUsMCwxMDAsCisgICAgMiwwLDEwNyw0LDAsMTE1LDczLDAsMTE2LDYsMCwxMzAsMSwwLDEyNCwwLAorICAgIDAsNCwxMDYsNSwwLDEwMCwzLDAsNTYsMiw5NSw1LDAsMTI0LDAsMCwKKyAgICAxMDYsNSwwLDEwMCwyLDAsMTA3LDIsMCwxMTQsMTU1LDAsMTAwLDAsMCwxMjQsCisgICAgMCwwLDk1LDMsMCwxMjQsMCwwLDEwNiw4LDAsMTE0LDE1NSwwLDEyNCwwLAorICAgIDAsNCwxMDYsOCwwLDEwMCwzLDAsNTYsMiw5NSw4LDAsMTI0LDAsMCwKKyAgICAxMDYsOSwwLDEwNiwxMCwwLDEzMSwwLDAsMSwxMTMsMTU1LDAsMTEwLDAsMCwKKyAgICA4NywxMDAsMCwwLDgxLDg4LDEwMCwwLDAsODMsNDAsNCwwLDAsMCw3OCwKKyAgICAxMTcsMzEsMCwwLDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTA4LDEwMSwKKyAgICA5NywxMTUsMTAxLDMyLDExNywxMTAsNDUsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsCisgICAgMTA4LDExMSw5OSwxMDcsMTA1LDAsMCwwLDAsMTA1LDEsMCwwLDAsNDAsMTEsCisgICAgMCwwLDAsMTE3LDcsMCwwLDAsOTUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwxMTcsCisgICAgOSwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDUsMTAwLDEwMSwxMTAsMTE2LDExNyw0LDAsCisgICAgMCwwLDEwOCwxMTEsOTksMTA3LDExNyw1LDAsMCwwLDExMSwxMTksMTEwLDEwMSwxMTQsCisgICAgMTE3LDEyLDAsMCwwLDgyLDExNywxMTAsMTE2LDEwNSwxMDksMTAxLDY5LDExNCwxMTQsMTExLAorICAgIDExNCwxMTcsNSwwLDAsMCw5OSwxMTEsMTE3LDExMCwxMTYsMTE3LDE0LDAsMCwwLAorICAgIDY1LDExNSwxMTUsMTAxLDExNCwxMTYsMTA1LDExMSwxMTAsNjksMTE0LDExNCwxMTEsMTE0LDExNyw0LAorICAgIDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNyw3LDAsMCwwLDExOSw5NywxMDUsMTE2LAorICAgIDEwMSwxMTQsMTE1LDExNyw2LDAsMCwwLDExOSw5NywxMDcsMTAxLDExNywxMTIsMTE3LDcsCisgICAgMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsNDAsMiwwLDAsMCwxMTcsCisgICAgNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDMsMCwwLDAsMTE2LDEwNSwxMDAsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsNywwLDAsCisgICAgMCwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwyMjYsMCwwLDAsMTE1LDIyLDAsMCwKKyAgICAwLDAsMSwxMiwxLDEwLDEsMTUsMSwxNSwxLDIxLDEsMTUsMSwxNSwKKyAgICAxLDksMSw5LDEsMTUsMSwxMTcsMTksMCwwLDAsOTUsNzcsMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDQsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDIzLDAsMCwwLDEwMCwxLDAsMTI0LDAsMCwxMDYsCisgICAgMCwwLDExNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDEwMiwyLDAsMjIsODMsCisgICAgNDAsMiwwLDAsMCw3OCwxMTcsMjEsMCwwLDAsOTUsNzcsMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQwLDM3LDExNCw0MSwzMiw5NywxMTYsMzIsMzcsMTAwLAorICAgIDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDIsCisgICAgMCwwLDAsMTA1LDEwMCw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDExNSwKKyAgICAxMDEsMTA4LDEwMiw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsCisgICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSwyMzksMCwwLDAsCisgICAgMTE1LDIsMCwwLDAsMCwxLDExNywyMCwwLDAsMCw5NSw3NywxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LAorICAgIDc4LDQwLDksMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwKKyAgICAxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LAorICAgIDEwMSw5NSw5NSwxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxMTcsMTIsMCwwLAorICAgIDAsMTA0LDk3LDExNSw5NSwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywxMTcsNywwLAorICAgIDAsMCw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNyw3LDAsMCwwLDExNCwxMDEsCisgICAgMTA4LDEwMSw5NywxMTUsMTAxLDExNyw4LDAsMCwwLDk1LDk1LDExNCwxMDEsMTEyLDExNCwKKyAgICA5NSw5NSw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLAorICAgIDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsMTEsMCwwLDAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsCisgICAgOTksMTA3LDE3NSwwLDAsMCwxMTUsMTIsMCwwLDAsMTYsNCw2LDIsMTIsCisgICAgOCwxMiwxMiwxMiwyNSwxMiwxMywxMTcsMTEsMCwwLDAsOTUsNzcsMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICAxLDAsMCwwLDIsMCwwLDAsNjYsMCwwLDAsMTE1LDc0LDAsMCwKKyAgICAwLDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLAorICAgIDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsCisgICAgOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsCisgICAgNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwxMDAsOSwKKyAgICAwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDgzLDQwLDExLDAsMCwwLAorICAgIDExNywxNiwwLDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw3NiwxMTEsOTksMTA3LDExNyw4NiwwLDAsMCw2NSwzMiwxMTUsMTA1LDEwOSwxMTIsCisgICAgMTA4LDEwMSwzMiw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMzIsMTAxLAorICAgIDExMywxMTcsMTA1LDExOCw5NywxMDgsMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsODAsMTIxLAorICAgIDExNiwxMDQsMTExLDExMCwzMiw5OCwxMTcsMTA1LDEwOCwxMDAsMTE1LDMyLDExOSwxMDUsMTE2LDEwNCwKKyAgICAxMTEsMTE3LDExNiwxMCwzMiwzMiwzMiwzMiwxMDksMTE3LDEwOCwxMTYsMTA1LDQ1LDExNiwxMDQsCisgICAgMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDQ2LAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCwKKyAgICA5NSwwLDAsMTAwLDEsMCwxMjQsMCwwLDk1LDEsMCwxMDAsMCwwLDgzLAorICAgIDQwLDIsMCwwLDAsNzgsMTA1LDAsMCwwLDAsNDAsMiwwLDAsMCwKKyAgICAxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNSwwLDAsMCw5OSwxMTEsCisgICAgMTE3LDExMCwxMTYsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwKKyAgICAxMDIsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwKKyAgICAwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwKKyAgICAxMTYsOTUsOTUsMjQ3LDAsMCwwLDExNSw0LDAsMCwwLDAsMSw5LDEsCisgICAgMTE3LDI1LDAsMCwwLDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDE5LDAsMCwwLDEyNCwwLDAsNCwxMDYsMCwwLDEwMCwKKyAgICAxLDAsNTUsMiw5NSwwLDAsMTAwLDIsMCw4Myw0MCwzLDAsMCwwLAorICAgIDc4LDEwNSwxLDAsMCwwLDg0LDQwLDIsMCwwLDAsMTE3LDUsMCwwLAorICAgIDAsOTksMTExLDExNywxMTAsMTE2LDExNyw0LDAsMCwwLDg0LDExNCwxMTcsMTAxLDQwLAorICAgIDEsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDQwLDAsMCwKKyAgICAwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCisgICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKKyAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDcsMCwwLDAsOTcsOTksCisgICAgMTEzLDExNywxMDUsMTE0LDEwMSwyNTEsMCwwLDAsMTE1LDQsMCwwLDAsMCwxLAorICAgIDE1LDEsMTE3LDI0LDAsMCwwLDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw0OSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLAorICAgIDEsMCwxMDcsMiwwLDExNCwzMCwwLDExNiwxLDAsMTAwLDIsMCwxMzEsMSwKKyAgICAwLDEzMCwxLDAsMTEwLDAsMCwxMjQsMCwwLDQsMTA2LDAsMCwxMDAsMywKKyAgICAwLDU2LDIsOTUsMCwwLDEwMCwwLDAsODMsNDAsNCwwLDAsMCw3OCwKKyAgICAxMDUsMCwwLDAsMCwxMTcsMzEsMCwwLDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LAorICAgIDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNywxMTAsNDUsOTcsOTksMTEzLDExNywKKyAgICAxMDUsMTE0LDEwMSwxMDAsMzIsMTA4LDExMSw5OSwxMDcsMTA1LDEsMCwwLDAsNDAsMiwKKyAgICAwLDAsMCwxMTcsNSwwLDAsMCw5OSwxMTEsMTE3LDExMCwxMTYsMTE3LDEyLDAsCisgICAgMCwwLDgyLDExNywxMTAsMTE2LDEwNSwxMDksMTAxLDY5LDExNCwxMTQsMTExLDExNCw0MCwxLAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiw0MCwwLDAsMCwKKyAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAorICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw3LDAsMCwwLDExNCwxMDEsMTA4LAorICAgIDEwMSw5NywxMTUsMTAxLDI1NSwwLDAsMCwxMTUsNiwwLDAsMCwwLDEsMTUsCisgICAgMSwxNSwxLDExNywyNCwwLDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLAorICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDQsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDIzLDAsMCwwLDEwMCwxLDAsMTI0LDAsMCwKKyAgICAxMDYsMCwwLDExNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDEwMiwyLDAsMjIsCisgICAgODMsNDAsMiwwLDAsMCw3OCwxMTcsMjYsMCwwLDAsOTUsNjgsMTE3LDEwOSwKKyAgICAxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0MCwzNywxMTQsNDEsCisgICAgMzIsOTcsMTE2LDMyLDM3LDEwMCw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLAorICAgIDExMCw5NywxMDksMTAxLDExNywyLDAsMCwwLDEwNSwxMDAsNDAsMSwwLDAsMCwKKyAgICAxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsCisgICAgOTUsOTUsNCwxLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LDI1LDAsCisgICAgMCwwLDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSwKKyAgICA5OSwxMDcsNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDc4LDQwLDgsMCwwLAorICAgIDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLAorICAgIDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNywxMiwwLAorICAgIDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsNywKKyAgICAwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDExNyw4LDAsMCwwLDk1LAorICAgIDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxMTcsNywwLDAsMCw5Nyw5OSwxMTMsMTE3LAorICAgIDEwNSwxMTQsMTAxLDExNyw3LDAsMCwwLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw0MCwxLDAsMCwKKyAgICAwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTYsMCwwLAorICAgIDAsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LAorICAgIDEwNywyNDMsMCwwLDAsMTE1LDEwLDAsMCwwLDE2LDIsNiwyLDEyLDQsCisgICAgMTIsNCwxMiw1LDExNywxNiwwLDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwzLDAsMCwwLDExLDAsMCwwLDMsMCwwLDAsMTE1LDE0MiwKKyAgICAwLDAsMCwxMDAsMywwLDEyNSwxLDAsMTIxLDE3LDAsMTE2LDEsMCwxMzYsCisgICAgMCwwLDI1LDEzMSwwLDAsMTI1LDEsMCw4NywxMTAsMTgsMCw0LDExNiwyLAorICAgIDAsMTA3LDEwLDAsMTE0LDQzLDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsCisgICAgMSwwLDEwMCwzLDAsMTA3LDgsMCwxMTQsMTM4LDAsMTE2LDMsMCwxMDAsMywKKyAgICAwLDEwNyw4LDAsMTE0LDgzLDAsMTE2LDQsMCwxMzYsMCwwLDEzMSwxLDAsCisgICAgMTI1LDEsMCwxMTAsMTIsMCwxMTYsNSwwLDEzNiwwLDAsMTMxLDEsMCwxMjUsCisgICAgMSwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsCisgICAgMCwxMjUsMiwwLDExNiw2LDAsMTA2LDcsMCwxMjQsMSwwLDEyNCwyLDAsCisgICAgMTMxLDIsMCwxMTYsMSwwLDEzNiwwLDAsNjAsMTEwLDAsMCwxMjQsMSwwLAorICAgIDgzLDQwLDQsMCwwLDAsMTE3LDEwOSwwLDAsMCw3MSwxMDEsMTE2LDMyLDExMSwKKyAgICAxMTQsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDEwMywKKyAgICAxMDUsMTE4LDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsODMsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMTEsMTEwLAorICAgIDEwOCwxMjEsMzIsOTgsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwKKyAgICAxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwKKyAgICAxMDcsMzIsMTE2LDk3LDEwNywxMDEsMTEwLDQ2LDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDIsMCwwLDAsMTksMCwwLDAsMTE1LDExLDAsCisgICAgMCwwLDExNiwwLDAsMTM2LDAsMCw2MSwxMDAsMCwwLDgzLDQwLDEsMCwKKyAgICAwLDAsNzgsNDAsMSwwLDAsMCwxMTcsMTMsMCwwLDAsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE1LDQwLDEsMCwwLDAsMTE3LAorICAgIDEsMCwwLDAsOTUsNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCwxMTAsCisgICAgOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMiwwLDAsMCw5OSwKKyAgICA5OCwyNCwxLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LDI4LDAsMCwKKyAgICAwLDk1LDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksCisgICAgMTA3LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5OSw5OCw3OCw0MCw4LAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywxMywwLDAsCisgICAgMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTUsMTE3LDgsCisgICAgMCwwLDAsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDcsMCwwLDAsCisgICAgOTUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwxMTcsMTYsMCwwLDAsOTUsNjgsMTE3LDEwOSwKKyAgICAxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMTcsMTEsMCwwLAorICAgIDAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDExNyw4LDAsMCwKKyAgICAwLDk1LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDExNywzLDAsMCwwLDExNCwxMDEsCisgICAgMTAyLDQwLDMsMCwwLDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LAorICAgIDQsMCwwLDAsMTA4LDExMSw5OSwxMDcsMTE3LDIsMCwwLDAsOTksOTgsNDAsCisgICAgMCwwLDAsMCw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDExMCw5NywKKyAgICAxMDksMTAxLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiw2MiwxMTcsMTYsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTAsMSwwLDAsMTE1LDI0LDAsCisgICAgMCwwLDAsNCw2LDEsMywxLDE3LDEsMTMsMSw1LDEsMTIsMSwKKyAgICAxMiwxLDE1LDIsMTIsMSwxOCwyLDI1LDEsMTE3LDE2LDAsMCwwLDk1LAorICAgIDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw3MSwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLAorICAgIDEsMCwxMjUsMSwwLDExNiwxLDAsMTA2LDIsMCwxMzEsMCwwLDEsMTIxLAorICAgIDE0LDAsMTI0LDEsMCwxMDYsMywwLDEzMSwwLDAsMSw4NywxMTAsMTgsMCwKKyAgICA0LDExNiw0LDAsMTA3LDEwLDAsMTE0LDU2LDAsMSwxLDEsODksMTEwLDExLAorICAgIDAsODgsMTI0LDEsMCwxMDYsNSwwLDEzMSwwLDAsMSwxMDAsMSwwLDgzLAorICAgIDQwLDIsMCwwLDAsMTE3LDIxLDEsMCwwLDgyLDEwMSwxMDgsMTAxLDk3LDExNSwKKyAgICAxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ0LDMyLDk3LDExMCwxMDAsMzIsOTcsOTksCisgICAgMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDExNCwxMDEsMTA4LDEwMSwKKyAgICA5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDEwMywxMDUsCisgICAgMTE4LDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNDYsCisgICAgMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwKKyAgICAxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTEwLDExNSwxMTcsMTE0LDEwMSwzMiw5NywzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk5LDExMSwxMDksMTEyLDEwOCwxMDEsMTE2LDEwMSwKKyAgICAxMDgsMTIxLDMyLDEwNSwxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCw0NCwzMiwKKyAgICAxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDEwMSwxMTgsMTAxLDExMCwxMTYsCisgICAgMzIsMTA1LDExNiwzMiwxMDUsMTE1LDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTAwLDMyLDk4LDEyMSwzMiw5NywxMTAsMTExLDExNiwxMDQsMTAxLDExNCwKKyAgICAzMiwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgzLDEwNCwKKyAgICAxMTEsMTE3LDEwOCwxMDAsMzIsMTExLDExMCwxMDgsMTIxLDMyLDk4LDEwMSwzMiw5OSw5NywxMDgsCisgICAgMTA4LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDMyLDExNiw5NywxMDcsMTAxLDExMCw0Niw3OCwKKyAgICA0MCw2LDAsMCwwLDExNywxNiwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTcsNCwwLDAsMCw5NSwKKyAgICAxMDUsMTA5LDExMiwxMTcsMTIsMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTUsCisgICAgMTA4LDExMSw5OSwxMDcsMTE3LDcsMCwwLDAsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwKKyAgICAxMTcsMTQsMCwwLDAsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw2OSwxMTQsCisgICAgMTE0LDExMSwxMTQsMTE3LDcsMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsNDAsCisgICAgMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLAorICAgIDAsMCwxMDgsMTExLDk5LDEwNyw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCisgICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCisgICAgMTEyLDYyLDExNywxOSwwLDAsMCw5NSwxMDgsMTExLDk5LDEwNyw5NSwxMTcsMTEwLDEwOCwKKyAgICAxMTEsOTksMTA3LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDI5LDEsMCwwLDExNSwxNCwKKyAgICAwLDAsMCwwLDcsMTIsMSwxMCwxLDMsMSwxNCwxLDEzLDMsNSwKKyAgICAyLDExNywxOSwwLDAsMCw5NSwxMDgsMTExLDk5LDEwNyw5NSwxMTcsMTEwLDEwOCwxMTEsCisgICAgOTksMTA3LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwzLDAsMCwwLDMsMCwwLDAsNzksMCwwLDAsMTE1LDEzLAorICAgIDAsMCwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDE0MiwwLDAsODMsCisgICAgNDAsMSwwLDAsMCwxMTcsNDYsMSwwLDAsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsCisgICAgOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsCisgICAgMTE1LDMyLDEwNSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsOTksMzIsMTE5LDEwNSwKKyAgICAxMDgsMTA4LDMyLDk3LDEwOCwxMTksOTcsMTIxLDExNSwzMiwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwKKyAgICAzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwxMDEsMTE1LDEwLDMyLDMyLDMyLDMyLDExMSwKKyAgICAxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiwxMDIsMTE0LDk3LDEwOSwKKyAgICAxMDEsMTE1LDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwMSwxMTAsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwKKyAgICAzMiw5NywzMiw5OSw5NywxMDgsMTA4LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLAorICAgIDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwxMCwxMCwzMiwzMiwzMiwzMiw4NSwxMTUsCisgICAgMTAxLDMyLDEwNSwxMTYsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsMzIsMTExLDEwMiwzMiwKKyAgICA5NywzMiwxMTAsMTExLDExNCwxMDksOTcsMTA4LDMyLDk5LDk3LDEwOCwxMDgsMzIsMTA1LDExMCwKKyAgICAzMiwxMTIsMTA4LDk3LDk5LDEwMSwxMTUsMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTEwLAorICAgIDk5LDEwOCwxMTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsMTAsMzIsMzIsMzIsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwKKyAgICAzMiwxMDUsMTEwLDExNiwxMTQsMTExLDEwMCwxMTcsOTksMTAxLDExNSwzMiwxMTcsMTEwLDExOSw5NywKKyAgICAxMTAsMTE2LDEwMSwxMDAsMzIsMTEwLDExMSwxMDUsMTE1LDEwMSwzMiwxMDUsMTEwLDExNiwxMTEsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTE2LDExNCw5Nyw5OSwxMDEsOTgsOTcsOTksMTA3LDMyLDQwLDEwMSwKKyAgICA0NiwxMDMsNDYsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDEwMSwxMjAsMTAxLDk5LDExNywxMTYsMTA1LAorICAgIDExMCwxMDMsMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksMTExLAorICAgIDEwMCwxMDEsNDEsMTAsMzIsMzIsMzIsMzIsNDAsMCwwLDAsMCw0MCwzLDAsCisgICAgMCwwLDExNywxLDAsMCwwLDEwMiwxMTcsNCwwLDAsMCw5NywxMTQsMTAzLAorICAgIDExNSwxMTcsNCwwLDAsMCwxMDcsMTE5LDEwMCwxMTUsNDAsMCwwLDAsMCw0MCwKKyAgICAwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMjUsMCwwLDAsOTUsOTksOTcsMTA4LDEwOCwKKyAgICA5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwKKyAgICAxMTEsMTE4LDEwMSwxMDAsNDksMSwwLDAsMTE1LDIsMCwwLDAsMCw4LDExNywKKyAgICAyNSwwLDAsMCw5NSw5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsCisgICAgMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCwxMDUsMTU4LDEyLAorICAgIDAsMCwxMTcsMSwwLDAsMCwxMywxMDUsMTYsMCwwLDAsMTE3LDEsMCwKKyAgICAwLDAsMTAsMTA1LDI0LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDMsMCwwLDAsOTksMCwwLDAsMTE1LDI5LDAsCisgICAgMCwwLDEyNCwwLDAsOTMsMTksMCwxMjUsMSwwLDExNiwwLDAsMTI0LDEsCisgICAgMCw2MywxMDAsMCwwLDY0LDg2LDEsMTEzLDMsMCwxMDAsMSwwLDgzLDQwLAorICAgIDIsMCwwLDAsMTA1LDI1NSwwLDAsMCw3OCw0MCwxLDAsMCwwLDExNywKKyAgICAxNywwLDAsMCw5NSw4Miw2NSw4Nyw5NSw3Nyw2NSw3MSw3Myw2Nyw5NSw3OCwKKyAgICA4NSw3Nyw2Niw2OSw4Miw0MCwyLDAsMCwwLDExNywyLDAsMCwwLDQ2LAorICAgIDQ4LDExNywxLDAsMCwwLDExMCw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNyw5LDAsMCwwLDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCwKKyAgICA2MiwxNTAsMSwwLDAsMTE1LDIsMCwwLDAsNiwwLDExNyw5LDAsMCwKKyAgICAwLDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMDUsMCwwLDAsMCwxMDUsCisgICAgMjUsMCwwLDAsMTA1LDgsMCwwLDAsMTE3LDExLDAsMCwwLDk1LDk1LAorICAgIDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5NSw5NSwxMTcsMywwLDAsMCw0NiwxMTIsCisgICAgMTIxLDExNyw0LDAsMCwwLDQ2LDExMiwxMjEsOTksMTE3LDQsMCwwLDAsNDYsCisgICAgMTEyLDEyMSwxMTEsOTksMiwwLDAsMCwwLDAsMCwwLDExLDAsMCwwLAorICAgIDYsMCwwLDAsNjcsMCwwLDAsMTE1LDE4MCwwLDAsMCwxMjQsMSwwLAorICAgIDEwMCw1LDAsMTA3LDgsMCwxMTQsMjUsMCwxMTYsMSwwLDEwNiwyLDAsMTA2LAorICAgIDMsMCwxMiwxMTAsMywwLDEyNCwxLDAsMTI1LDIsMCwxMjQsMiwwLDExNCwKKyAgICA0NiwwLDExNiw0LDAsMTI1LDMsMCwxMTAsNiwwLDExNiw1LDAsMTI1LDMsCisgICAgMCwxMTYsNiwwLDEyNCwwLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDQsMCwKKyAgICAxMjUsNSwwLDEyNCw1LDAsMTA2LDcsMCwxMDAsMSwwLDEzMSwxLDAsOTIsCisgICAgMywwLDEyNSw2LDAsMTI1LDcsMCwxMjUsOCwwLDExNiwxLDAsMTA2LDgsCisgICAgMCwxMDYsOSwwLDEyNSw5LDAsMTI0LDksMCwxMDAsNSwwLDEwNyw4LDAsCisgICAgMTE0LDEzMywwLDExNiwxMCwwLDEwMCwyLDAsMTMxLDEsMCwxMzAsMSwwLDExMCwKKyAgICAwLDAsMTAwLDMsMCwxMDYsMTEsMCwxMjQsNiwwLDEyNCw3LDAsMTI0LDksCisgICAgMCwxMjQsMywwLDEwMCw0LDAsMjUsMTAzLDQsMCwxMzEsMSwwLDEyNSwxMCwKKyAgICAwLDExNiwxMiwwLDEyNCw0LDAsMTE2LDEzLDAsMTI0LDEwLDAsMTMxLDMsMCwKKyAgICA4Myw0MCw2LDAsMCwwLDExNywyNDQsMSwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsCisgICAgMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiwKKyAgICA0NiwxMTIsMTIxLDk5LDQ3LDQ2LDExMiwxMjEsMTExLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsCisgICAgMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsCisgICAgMTE2LDExMSwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsCisgICAgMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwKKyAgICAzMiwzMiw0NiwxMTIsMTIxLDk5LDQ3LDQ2LDExMiwxMjEsMTExLDMyLDEwMiwxMDUsMTA4LDEwMSwKKyAgICAzMiw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwzMiw5NywxMTUsMzIsMTA1LAorICAgIDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTksCisgICAgMTAxLDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwKKyAgICAxMDQsMTAxLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OCwxMDEsMzIsNDYsMTEyLDEyMSw5OSwzMiwxMTcsMTEwLAorICAgIDEwOCwxMDEsMTE1LDExNSwzMiwxMTUsMTIxLDExNSw0NiwxMDIsMTA4LDk3LDEwMywxMTUsNDYsMTExLAorICAgIDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTEwLDQ1LDEyMiwKKyAgICAxMDEsMTE0LDExMSw0NCwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTA1LDExNiwzMiwxMTksMTA1LDEwOCwKKyAgICAxMDgsMzIsOTgsMTAxLDMyLDQ2LDExMiwxMjEsMTExLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDczLDEwMiwzMiwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLAorICAgIDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDc4LDExMSwxMTAsMTAxLDQ0LDMyLDExNiwKKyAgICAxMDQsMTAxLDExMCwzMiwxMDUsMTE2LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsOTcsCisgICAgMzIsOTgsMTExLDExMSwxMDgsMTAxLDk3LDExMCwzMiw5NywxMTAsMTAwLDMyLDEwNSwxMTUsMzIsCisgICAgMTE3LDExNSwxMDEsMTAwLDMyLDEwNSwxMTAsMTAsMzIsMzIsMzIsMzIsMTEyLDEwOCw5Nyw5OSwKKyAgICAxMDEsMzIsMTExLDEwMiwzMiwxMTUsMTIxLDExNSw0NiwxMDIsMTA4LDk3LDEwMywxMTUsNDYsMTExLAorICAgIDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3MywxMDIsCisgICAgMzIsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LAorICAgIDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LAorICAgIDMyLDc4LDExMSwxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDExMCwzMiw3OCwxMTEsMTE2LDczLDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LAorICAgIDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNywKKyAgICAxLDAsMCwwLDQ2LDExNywzNiwwLDAsMCwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksCisgICAgMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMTE3LDAsCisgICAgMCwwLDAsMTA1LDAsMCwwLDAsNzgsNDAsMTQsMCwwLDAsMTE3LDQsCisgICAgMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LAorICAgIDUsMCwwLDAsMTAyLDEwOCw5NywxMDMsMTE1LDExNyw4LDAsMCwwLDExMSwxMTIsCisgICAgMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMTE3LDIzLDAsMCwwLDY4LDY5LDY2LDg1LDcxLAorICAgIDk1LDY2LDg5LDg0LDY5LDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LAorICAgIDY5LDgzLDExNywyNywwLDAsMCw3OSw4MCw4NCw3Myw3Nyw3Myw5MCw2OSw2OCwKKyAgICA5NSw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCwKKyAgICA2OSw4MywxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExMiwxMDgsCisgICAgMTA1LDExNiwxMTcsOSwwLDAsMCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLAorICAgIDExNywxNCwwLDAsMCwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsCisgICAgMTA1LDExMSwxMTAsMTE3LDksMCwwLDAsOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsCisgICAgMTAzLDExNywxOSwwLDAsMCw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLAorICAgIDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDQsMCwwLDAsMTA2LDExMSwKKyAgICAxMDUsMTEwLDExNywxMCwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwKKyAgICAxMTAsMTE3LDgsMCwwLDAsOTUsODAsODksNjcsNjUsNjcsNzIsNjksNDAsMTEsCisgICAgMCwwLDAsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDE0LDAsMCwKKyAgICAwLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDExNywKKyAgICA1LDAsMCwwLDEwMCwxMDEsOTgsMTE3LDEwMywxMTcsOCwwLDAsMCwxMTUsMTE3LAorICAgIDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDExNyw0LDAsMCwwLDEwNCwxMDEsOTcsMTAwLDExNywKKyAgICA0LDAsMCwwLDExNiw5NywxMDUsMTA4LDExNywxMywwLDAsMCw5OCw5NywxMTUsCisgICAgMTAxLDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTcsMywwLDAsMCwxMTUsCisgICAgMTAxLDExMiwxMTcsMSwwLDAsMCw5NSwxMTcsMywwLDAsMCwxMTYsOTcsMTAzLAorICAgIDExNyw4LDAsMCwwLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsCisgICAgMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNywwLDAsMCw5OSw5NywKKyAgICA5OSwxMDQsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDE1OSwKKyAgICAxLDAsMCwxMTUsMjIsMCwwLDAsMCwxMywzMSwxLDYsMSw5LDIsCisgICAgNiwxLDE4LDEsMjQsMSwxMiwxLDEyLDEsMTUsMSwzMSwxLDExNywxNywKKyAgICAwLDAsMCw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwKKyAgICAwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDE5MywwLDAsMCwxMTYsMCwKKyAgICAwLDEwNiwxLDAsMTA2LDIsMCwxMDAsNywwLDEwNyw4LDAsMTE0LDMzLDAsCisgICAgMTE2LDQsMCwxMDAsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDExNiwKKyAgICA1LDAsMTI0LDAsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMSwwLDEyNSwyLAorICAgIDAsMTE2LDUsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSwxLDAsCisgICAgMTI1LDMsMCwxMjQsMywwLDExNiw2LDAsMTA3LDMsMCwxMTQsMTA4LDAsMTE2LAorICAgIDcsMCwxMDAsMiwwLDEwNiw4LDAsMTE2LDYsMCwxMjQsMCwwLDEzMSwyLAorICAgIDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTI0LDIsMCwxMDYsOSwwLAorICAgIDEwMCwzLDAsMTMxLDEsMCwxMDAsNCwwLDEwNywzLDAsMTE0LDE1MywwLDExNiwKKyAgICA3LDAsMTAwLDUsMCwxMDYsOCwwLDEyNCwyLDAsMTMxLDEsMCwxMzEsMSwKKyAgICAwLDEzMCwxLDAsMTEwLDAsMCwxMjQsMiwwLDEwNiwxMCwwLDEwMCwzLDAsCisgICAgMTMxLDEsMCwxMDAsNiwwLDI1LDEyNSw0LDAsMTE2LDExLDAsMTI0LDEsMCwKKyAgICAxMjQsNCwwLDExNiwxMiwwLDEwMCw2LDAsMjUsMjMsMTMxLDIsMCw4Myw0MCwKKyAgICA4LDAsMCwwLDExNywxMjEsMSwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLDEyMSwKKyAgICA5OSw0Niw0Nyw0NiwxMTIsMTIxLDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwKKyAgICAxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwKKyAgICAzMiwxMDUsMTE2LDExNSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsOTksNDcsNDYsMTEyLDEyMSwKKyAgICAxMTEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsMTExLDExNiwzMiwKKyAgICAxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDU5LDMyLDExNiwKKyAgICAxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LAorICAgIDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwKKyAgICA5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDk5LDExMSwKKyAgICAxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgNDYsMTEyLDEyMSw5OSw0Nyw0NiwxMTIsMTIxLDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMzIsCisgICAgMzIsNzMsMTAyLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMCwxMTEsMTAxLDExNSwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMTAsMTExLDExNiwzMiw5OSwxMTEsMTEwLDEwMiwxMTEsMTE0LDEwOSwzMiwxMTYsMTExLAorICAgIDMyLDgwLDY5LDgwLDMyLDUxLDQ5LDUyLDU1LDMyLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsCisgICAgNDQsMzIsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDMyLDExOSwxMDUsMTA4LAorICAgIDEwOCwzMiw5OCwxMDEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwzMiw3MywxMDIsMTAsCisgICAgMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwKKyAgICAxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywKKyAgICAzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDExMCwzMiw3OCwxMTEsCisgICAgMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwKKyAgICAxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDExNywzNiwwLDAsMCwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLAorICAgIDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwKKyAgICAxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMTE3LDM3LDAsMCwwLAorICAgIDEyMywxMjUsMzIsMTEwLDExMSwxMTYsMzIsOTgsMTExLDExNiwxMTYsMTExLDEwOSw0NSwxMDgsMTAxLAorICAgIDExOCwxMDEsMTA4LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTA1LDExMCwKKyAgICAzMiwxMjMsMzMsMTE0LDEyNSwxMTcsMSwwLDAsMCw0NiwxMDUsMiwwLDAsMCwKKyAgICAxMTcsMjgsMCwwLDAsMTAxLDEyMCwxMTIsMTAxLDk5LDExNiwxMDEsMTAwLDMyLDExMSwxMTAsCisgICAgMTA4LDEyMSwzMiw1MCwzMiwxMDAsMTExLDExNiwxMTUsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LAorICAgIDEyNSwxMDUsMCwwLDAsMCw3OCw0MCwxMywwLDAsMCwxMTcsMywwLDAsCisgICAgMCwxMTUsMTIxLDExNSwxMTcsMTQsMCwwLDAsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLAorICAgIDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDExNyw5LDAsMCwwLDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsOTUsMTE2LDk3LDEwMywxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTksCisgICAgMCwwLDAsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwKKyAgICAxMDAsNjksMTE0LDExNCwxMTEsMTE0LDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSwxMTUsMTEyLDEwOCwxMDUsMTE2LDExNyw4LDAsMCwwLDk1LDgwLDg5LDY3LDY1LAorICAgIDY3LDcyLDY5LDExNywxMCwwLDAsMCw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsNSwwLAorICAgIDAsMCw5OSwxMTEsMTE3LDExMCwxMTYsMTE3LDksMCwwLDAsMTEyLDk3LDExNCwxMTYsCisgICAgMTA1LDExNiwxMDUsMTExLDExMCwxMTcsMTAsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTA2LDExMSwxMDUsMTEwLDExNywxNSwwLDAsMCw4Myw3OSw4NSw4Miw2Nyw2OSw5NSwKKyAgICA4Myw4NSw3MCw3MCw3Myw4OCw2OSw4Myw0MCw1LDAsMCwwLDExNyw0LDAsCisgICAgMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwNCwxMDEsOTcsMTAwLDExNywKKyAgICAxNiwwLDAsMCwxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDEwNSwxMDgsMTAxLAorICAgIDExMCw5NywxMDksMTAxLDExNyw3LDAsMCwwLDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSwKKyAgICAxMTcsMTMsMCwwLDAsOTgsOTcsMTE1LDEwMSw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LAorICAgIDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsCisgICAgMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTcsCisgICAgMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsOTksCisgICAgOTcsOTksMTA0LDEwMSwxODYsMSwwLDAsMTE1LDI0LDAsMCwwLDAsOSwxOCwKKyAgICAxLDE1LDEsMTgsMSwxOCwxLDEyLDEsOSwxLDE4LDEsMjEsMSw5LAorICAgIDEsMTUsMSwxOSwxLDExNywxNywwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLAorICAgIDk1LDEwMiwxMTQsMTExLDEwOSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCw1LDAsMCwwLDEzLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwxNjQsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsMTAwLDEsCisgICAgMCwxMDcsMiwwLDExNCwyMiwwLDEwMCw2LDAsODMsMTI0LDAsMCwxMDYsMiwKKyAgICAwLDEwMCwyLDAsMTMxLDEsMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLAorICAgIDEyNSwzLDAsMTI0LDEsMCwxMiwxMTUsODEsMCwxMjQsMywwLDEwNiwzLDAsCisgICAgMTMxLDAsMCwxMDAsNywwLDEwMCw4LDAsMTMzLDIsMCwyNSwxMDAsNSwwLAorICAgIDEwNywzLDAsMTE0LDg1LDAsMTI0LDAsMCw4MywxMjEsMTYsMCwxMTYsNCwwLAorICAgIDEyNCwwLDAsMTMxLDEsMCwxMjUsNCwwLDg3LDExMCw0MCwwLDQsMTE2LDUsCisgICAgMCwxMTYsNiwwLDEwMiwyLDAsMTA3LDEwLDAsMTE0LDE0MywwLDEsMSwxLAorICAgIDExNiw3LDAsMTAwLDksMCwxMDAsNiwwLDEzMywyLDAsMjUsMTI1LDQsMCwKKyAgICA4OSwxMTAsMSwwLDg4LDExNiw4LDAsMTE2LDksMCwxMzEsMSwwLDExNCwxNjAsCisgICAgMCwxMjQsNCwwLDgzLDEyNCwwLDAsODMsNDAsMTAsMCwwLDAsMTE3LDE4OCwKKyAgICAwLDAsMCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywzMiw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTE2LDExMSwzMiw5NywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDQwLDEwNSwxMDIsMzIsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDQxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTIsMTE3LDExNCwxMDEsMTA4LDEyMSwKKyAgICAzMiwxMDIsMTExLDExNCwzMiw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwxMDAsMTE1LDQ1LDk5LAorICAgIDExMSwxMDksMTEyLDk3LDExNiwxMDUsOTgsMTA1LDEwOCwxMDUsMTE2LDEyMSwzMiwxMDIsMTExLDExNCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4MCwxMjEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw2OSwxMjAsCisgICAgMTAxLDk5LDY3LDExMSwxMDAsMTAxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODcsMTA1LDExNiwxMDQsCisgICAgNzAsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDQwLDQxLDMyLDEwNSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsNjcsMzIsNjUsODAsNzMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTA1LAorICAgIDAsMCwwLDAsMTE3LDEsMCwwLDAsNDYsMTA1LDMsMCwwLDAsMTA1LAorICAgIDEsMCwwLDAsMTE3LDMsMCwwLDAsNDYsMTEyLDEyMSw3OCwxMDUsMjUzLDI1NSwKKyAgICAyNTUsMjU1LDEwNSwyNTUsMjU1LDI1NSwyNTUsMTA1LDI1NSwyNTUsMjU1LDI1NSw0MCwxMCwwLDAsCisgICAgMCwxMTcsMywwLDAsMCwxMDgsMTAxLDExMCwxMTcsNCwwLDAsMCw3OCwxMTEsCisgICAgMTEwLDEwMSwxMTcsOSwwLDAsMCwxMTQsMTEyLDk3LDExNCwxMDUsMTE2LDEwNSwxMTEsMTEwLAorICAgIDExNyw1LDAsMCwwLDEwOCwxMTEsMTE5LDEwMSwxMTQsMTE3LDE3LDAsMCwwLDExNSwKKyAgICAxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDk5LDk3LDk5LDEwNCwxMDEsCisgICAgMTE3LDE5LDAsMCwwLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLAorICAgIDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTAsMCwwLDAsODYsOTcsMTA4LAorICAgIDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNywxMiwwLDAsMCw5OCwxMjEsMTE2LDk5LAorICAgIDExMSwxMDAsMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNywxMiwwLDAsMCw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDUsMTE1LDEwMiwxMDUsMTA4LDEwMSwxMTcsMTIsMCwwLDAsMTE1LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSw5NSwxMTUsMTE2LDk3LDExNiwxMTUsNDAsNSwwLDAsMCwxMTcsCisgICAgMTMsMCwwLDAsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE3LDQsMCwwLDAsMTE0LDEwMSwxMTUsMTE2LDExNywxLDAsMCwwLDk1LAorICAgIDExNyw5LDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDExNywxMSwKKyAgICAwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDQwLDAsCisgICAgMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSwKKyAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE1LDAsMCwwLDk1LAorICAgIDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTAyLDEwNSwxMDgsMTAxLDIwOSwxLAorICAgIDAsMCwxMTUsMjAsMCwwLDAsMCw3LDE4LDEsNCwxLDI0LDEsMzUsCisgICAgMSw0LDIsMywxLDE2LDEsMTksMSwyMSwyLDExNywxNSwwLDAsMCwKKyAgICA5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwMiwxMDUsMTA4LDEwMSw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwwLAorICAgIDcxLDAsMCwwLDExNSw3NSwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LAorICAgIDIsMCwxMTQsNzEsMCwxMjQsMCwwLDEwNiwzLDAsMTAwLDYsMCwxMzEsMSwKKyAgICAwLDExNSw0MCwwLDEwMCwzLDAsMTI0LDAsMCwyMywxMjUsMCwwLDExMCwwLAorICAgIDAsMTE2LDQsMCwxMjQsMCwwLDEwNiw1LDAsMTI0LDEsMCwxNDAsMCwwLAorICAgIDEwMCw0LDAsMTE2LDAsMCwxMDYsNiwwLDEzMSwxLDEsMSwxMTAsMCwwLAorICAgIDEwMCw1LDAsODMsNDAsNywwLDAsMCwxMTcsNjEsMCwwLDAsODAsMTE0LAorICAgIDEwNSwxMTAsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDMyLAorICAgIDExNiwxMTEsMzIsMTE1LDExNiwxMDAsMTAxLDExNCwxMTQsMzIsMTA1LDEwMiwzMiw0NSwxMTgsNDcsCisgICAgODAsODksODQsNzIsNzksNzgsODYsNjksODIsNjYsNzksODMsNjksMzIsMTA1LDExNSwKKyAgICAzMiwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwxMTEsMTEwLDQ2LDExNywxLDAsMCwwLAorICAgIDM1LDExNyw3LDAsMCwwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDExNywyLDAsCisgICAgMCwwLDM1LDMyLDExNyw0LDAsMCwwLDEwMiwxMDUsMTA4LDEwMSw3OCw0MCwyLAorICAgIDAsMCwwLDExNywxLDAsMCwwLDM1LDExNyw3LDAsMCwwLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDMyLDQwLDcsMCwwLDAsMTE3LDMsMCwwLDAsMTE1LAorICAgIDEyMSwxMTUsMTE3LDUsMCwwLDAsMTAyLDEwOCw5NywxMDMsMTE1LDExNyw3LDAsMCwKKyAgICAwLDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTAxLDExNywxMCwwLDAsMCwxMTUsMTE2LDk3LAorICAgIDExNCwxMTYsMTE1LDExOSwxMDUsMTE2LDEwNCwxMTcsNSwwLDAsMCwxMTIsMTE0LDEwNSwxMTAsCisgICAgMTE2LDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDYsMCwwLAorICAgIDAsMTE1LDExNiwxMDAsMTAxLDExNCwxMTQsNDAsMiwwLDAsMCwxMTcsNywwLDAsCisgICAgMCwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTcsNCwwLDAsMCw5NywxMTQsMTAzLAorICAgIDExNSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLAorICAgIDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNiwwLAorICAgIDAsMCw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsCisgICAgMTAzLDEwMSwyMzAsMSwwLDAsMTE1LDgsMCwwLDAsMCwyLDEyLDEsMTUsCisgICAgMSwxMywxLDExNywxNiwwLDAsMCw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSwKKyAgICA5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsCisgICAgMCwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsCisgICAgMCwxMjUsMSwwLDExNiwwLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsCisgICAgMSwxMjQsMSwwLDgzLDQwLDMsMCwwLDAsMTE3LDM5LDAsMCwwLDgzLAorICAgIDEwMSwxMTYsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDExMSwKKyAgICAxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw5OSwwLDAsMCwwLDAsMCwwLDAsMywKKyAgICAwLDAsMCw0LDAsMCwwLDMxLDAsMCwwLDExNSwxMDEsMCwwLDAsCisgICAgMTM2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTQyLDAsMCwxMjUsMiwwLDExNiwKKyAgICAwLDAsMTI0LDIsMCwxMDAsMSwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwKKyAgICAwLDEwNyw4LDAsMTE0LDk3LDAsMTI0LDIsMCwxMDYsMiwwLDEyNCwyLDAsCisgICAgOTUsMywwLDExNiw0LDAsMTI0LDIsMCwxMDAsMiwwLDEzMSwyLDAsMTE1LAorICAgIDk3LDAsMTI0LDIsMCwxMDYsMywwLDEwNiw1LDAsMTAwLDMsMCwxMzEsMSwKKyAgICAwLDEwMCw0LDAsMjUsMTI0LDIsMCw5NSwzLDAsMTEzLDk3LDAsMTEwLDAsCisgICAgMCwxMjQsMiwwLDgzLDQwLDUsMCwwLDAsNzgsMTE3LDExLDAsMCwwLAorICAgIDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTcsOCwwLDAsMCwKKyAgICA5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwxMTcsMSwwLDAsMCw0NiwxMDUsMCwKKyAgICAwLDAsMCw0MCw2LDAsMCwwLDExNyw3LDAsMCwwLDEwMywxMDEsMTE2LAorICAgIDk3LDExNiwxMTYsMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNyw4LDAsCisgICAgMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMSwwLDAsMCw5NSwKKyAgICA5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE3LDcsMCwwLDAsMTA0LAorICAgIDk3LDExNSw5NywxMTYsMTE2LDExNCwxMTcsMTAsMCwwLDAsMTE0LDExMiw5NywxMTQsMTE2LAorICAgIDEwNSwxMTYsMTA1LDExMSwxMTAsNDAsMywwLDAsMCwxMTcsNCwwLDAsMCw5NywKKyAgICAxMTQsMTAzLDExNSwxMTcsNiwwLDAsMCwxMDcsMTE5LDk3LDExNCwxMDMsMTE1LDExNyw2LAorICAgIDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDEsMCwwLDAsMTE3LDMsCisgICAgMCwwLDAsMTAyLDEyMCwxMTAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsCisgICAgNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKKyAgICA5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE5LDAsCisgICAgMCwwLDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSwxMTksMTE0LAorICAgIDk3LDExMiwxMTIsMTAxLDExNCwyNDAsMSwwLDAsMTE1LDEyLDAsMCwwLDAsMSwKKyAgICAxNSwxLDI0LDEsMTIsMSwxNSwxLDMxLDEsMTE3LDQwLDAsMCwwLDExNSwKKyAgICAxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LAorICAgIDEwOCwxMTUsNjIsNDYsMTE1LDEwMSwxMTYsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LAorICAgIDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLDEsMCwwLDAsMTE3LDUsMCwwLAorICAgIDAsOTUsMTE5LDExNCw5NywxMTIsNDAsMiwwLDAsMCwxMTcsMywwLDAsMCwKKyAgICAxMDIsMTIwLDExMCwxMTcsMTksMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLDAsMCwwLDAsCisgICAgNDAsMSwwLDAsMCwxMTcsMywwLDAsMCwxMDIsMTIwLDExMCwxMTcsMjksMCwKKyAgICAwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LAorICAgIDExLDAsMCwwLDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwyMzgsCisgICAgMSwwLDAsMTE1LDYsMCwwLDAsMCwyLDE4LDcsMTMsMSwxMTcsMTEsCisgICAgMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsMywKKyAgICAwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwxLAorICAgIDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwwLAorICAgIDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsNDAsMywwLDAsMCwKKyAgICAxMTcsMzgsMCwwLDAsODMsMTAxLDExNiwzMiw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDk1LDk1LDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwKKyAgICAxMTAsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsNCwwLDAsMCw0LDAsMCwwLDMxLDAsMCwwLAorICAgIDExNSw0OSwwLDAsMCwxMzYsMCwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwKKyAgICAwLDE0MiwxLDAsMTI1LDMsMCwxMTYsMCwwLDEyNCwzLDAsMTAwLDEsMCwKKyAgICAxMzEsMiwwLDExNSw0NSwwLDEyNCwwLDAsMTI0LDMsMCw5NSwxLDAsMTEwLAorICAgIDAsMCwxMjQsMywwLDgzLDQwLDIsMCwwLDAsNzgsMTE3LDEwLDAsMCwKKyAgICAwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsNDAsMiwwLDAsMCwKKyAgICAxMTcsNywwLDAsMCwxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LDExNywxMCwwLDAsCisgICAgMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDQwLDQsMCwwLDAsCisgICAgMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDk3LDExNCwKKyAgICAxMDMsMTE1LDExNyw2LDAsMCwwLDEwNywxMTksOTcsMTE0LDEwMywxMTUsMTE3LDYsMCwKKyAgICAwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMSwwLDAsMCwxMTcsMywwLAorICAgIDAsMCwxMDIsMTIwLDExMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTgsMCwwLAorICAgIDAsMTE1LDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTksMTE0LDk3LDExMiwKKyAgICAxMTIsMTAxLDExNCwyNTMsMSwwLDAsMTE1LDgsMCwwLDAsMCwxLDE4LDEsCisgICAgMTUsMSwxMiwxLDExNywzOCwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwxMTUsMTAxLDExNiwKKyAgICA5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLAorICAgIDEsMCwwLDAsMTE3LDUsMCwwLDAsOTUsMTE5LDExNCw5NywxMTIsNDAsMiwKKyAgICAwLDAsMCwxMTcsMywwLDAsMCwxMDIsMTIwLDExMCwxMTcsMTgsMCwwLDAsCisgICAgMTE1LDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTksMTE0LDk3LDExMiwxMTIsCisgICAgMTAxLDExNCw0MCwwLDAsMCwwLDQwLDEsMCwwLDAsMTE3LDMsMCwwLAorICAgIDAsMTAyLDEyMCwxMTAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsCisgICAgMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMCwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDI1MSwxLDAsMCwxMTUsNiwwLDAsMCwwLDIsCisgICAgMTgsNSwxMywxLDExNywxMCwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAorICAgIDMsMCwwLDAsMywwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LDAsMCwKKyAgICAxMDIsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLDAsMTE2LAorICAgIDAsMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsCisgICAgNDAsMywwLDAsMCwxMTcsNDIsMywwLDAsNjgsMTAxLDk5LDExMSwxMTQsOTcsCisgICAgMTE2LDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDMyLDExNSwxMDEsCisgICAgMTA4LDEwMSw5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNCwxMTEsMTEyLAorICAgIDEwMSwxMTQsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwKKyAgICAxMDAsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDEwMSwxMDAsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwKKyAgICAxMTEsMTEwLDMyLDEwNSwxMTUsMzIsMTEyLDk3LDExNSwxMTUsMTAxLDEwMCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDEwNSwKKyAgICAxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTAsMzIsMzIsMzIsMzIsMTEwLDk3LDEwOSwxMDEsNDYsMzIsODQsCisgICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTIsOTcsMTE1LDExNSwxMDEsMTAwLAorICAgIDMyLDEwNSwxMTAsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsCisgICAgMTA1LDExMSwxMTAsMzIsMTA1LDExNSwzMiwxMDEsMTA1LDExNiwxMDQsMTAxLDExNCwzMiwxMDIsMTE0LAorICAgIDExMSwxMDksMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwNSwKKyAgICAxMDIsMTAsMzIsMzIsMzIsMzIsMTA1LDExNiwzMiw5NywxMDgsMTE0LDEwMSw5NywxMDAsMTIxLAorICAgIDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMTE1LDMyLDExMSwxMTQsMzIsMTA1LDExNSwzMiw5NywzMiwKKyAgICAxMTAsMTAxLDExOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwzMiw3MywxMDIsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTAxLDExOSwKKyAgICA0NCwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTAsCisgICAgMzIsMzIsMzIsMzIsMTA1LDExNSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsCisgICAgMTA1LDExNCwxMTUsMTE2LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMTYsMTExLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDQ0LDMyLDk1LDk1LDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsMzIsMTA1LDExNSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsCisgICAgMTExLDMyLDExNSwxMDEsMTA4LDEwMiw0NCwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLAorICAgIDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMDUsMTE1LDMyLDExNSwKKyAgICAxMDEsMTE2LDMyLDk3LDk5LDk5LDExMSwxMTQsMTAwLDEwNSwxMTAsMTAzLDEwOCwxMjEsMzIsNDAsCisgICAgMTA1LDEwMiwzMiwxMTUsMTAxLDEwOCwxMDIsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsNDAsNDEsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwxMDAsNDEsCisgICAgMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiwxMCwzMiwzMiwzMiwKKyAgICAzMiw5OCwxMDEsMTAyLDExMSwxMTQsMTAxLDMyLDEwNSwxMTYsMzIsMTA1LDExNSwzMiwxMTIsOTcsCisgICAgMTE1LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwMSw5OSwxMTEsCisgICAgMTE0LDk3LDExNiwxMDEsMTAwLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiw0MCwKKyAgICAxMDUsMTAyLDMyLDExNSwxMDEsMTA4LDEwMiw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSw0MCw0MSwzMiwxMDAsMTExLDEwMSwxMTUsMTAsMzIsMzIsMzIsMzIsMTEwLDExMSwKKyAgICAxMTYsMzIsMTE5LDExMSwxMTQsMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTYsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk4LDEwMSwKKyAgICAzMiwxMTUsMTAxLDExNiwzMiwxMTIsMTExLDExNSwxMTYsNDUsMTA4LDExMSw5NywxMDAsNDEsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDk3LDExMCwzMiwxMDEsMTIwLDk5LDEwMSwKKyAgICAxMTIsMTE2LDEwNSwxMTEsMTEwLDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwKKyAgICA5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLAorICAgIDExNCwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTYsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiwxMTUsCisgICAgMTE3LDk4LDExNSwxMDEsMTEzLDExNywxMDEsMTEwLDExNiwxMDgsMTIxLDMyLDExNCwxMDEsMTA5LDExMSwKKyAgICAxMTgsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTAwLAorICAgIDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LDMyLDk3LDExNSwxMTUsMTE3LDEwOSwxMDEsMTE1LAorICAgIDMyLDExNiwxMDQsOTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDEsOTksMTExLDExNCw5NywKKyAgICAxMTYsMTAxLDEwMCwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDk3LDEwNywKKyAgICAxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywKKyAgICAxMDksMTAxLDMyLDk3LDExNSwxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLAorICAgIDk5LDExMSwxMTAsMTAwLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw5OSwyLDAsMCwwLDAsMCwwLDAsNywwLDAsCisgICAgMCwyNSwwLDAsMCwzMSwwLDAsMCwxMTUsMjU0LDAsMCwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsNCwwLAorICAgIDEyNCw0LDAsMTAwLDAsMCwxMDcsOSwwLDEyNSw1LDAsMTI0LDUsMCwxMTUsCisgICAgMTY4LDAsMTE2LDQsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDQsMCwxMDAsMywKKyAgICAwLDEyNCw0LDAsOTUsNiwwLDEyNCw0LDAsMTE2LDAsMCwxMDYsMSwwLAorICAgIDEyNCwxLDAsNjAsMTI0LDAsMCwxMjQsNCwwLDk1LDcsMCwxMjEsMTksMCwKKyAgICAxMjQsMCwwLDEwNiw4LDAsMTI0LDEsMCwxMzEsMSwwLDEyNSw2LDAsODcsCisgICAgMTEwLDI0LDAsNCwxMTYsOSwwLDExNiwxMCwwLDEwMiwyLDAsMTA3LDEwLDAsCisgICAgMTE0LDEyNCwwLDEsMSwxLDg5LDExMywxNzcsMCw4OCwxMjQsNiwwLDExNCwxNDMsCisgICAgMCwxMjQsMSwwLDEyNCw0LDAsOTUsMTEsMCwxMTMsMTc3LDAsMTI0LDEsMCwKKyAgICAxMDYsMTIsMCwxMDAsMSwwLDEzMSwxLDAsMTAwLDIsMCwyNSwxMjQsNCwwLAorICAgIDk1LDExLDAsMTEwLDksMCwxMDAsMywwLDEyNCw0LDAsOTUsNiwwLDEyMiwKKyAgICA2MCwwLDEyMSwyMywwLDEzNiwwLDAsMTI0LDAsMCwxMjQsNCwwLDEyNCwyLAorICAgIDAsMTI0LDMsMCwxNDIsMiwwLDgzLDg3LDExMCwzMCwwLDEsMSwxLDEyNCwKKyAgICA1LDAsMTE1LDIyOCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDYxLDExMCwKKyAgICAwLDAsMTMwLDAsMCw4OSwxMTAsMSwwLDg4LDg3LDEwMCwwLDAsMTAwLDQsCisgICAgMCwxMjQsNCwwLDk1LDYsMCw4OCwxMDAsMCwwLDgzLDQwLDUsMCwwLAorICAgIDAsNzgsMTE3LDEsMCwwLDAsNDYsMTA1LDAsMCwwLDAsODQsNzAsNDAsCisgICAgMTQsMCwwLDAsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDcsMCwwLAorICAgIDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNywzLDAsMCwwLDEwMywxMDEsMTE2LAorICAgIDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywxMCwwLDAsMCwxMTAsMTAxLAorICAgIDExOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsNCwwLDAsMCw4NCwxMTQsMTE3LAorICAgIDEwMSwxMTcsMTYsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LAorICAgIDEyMiwxMDUsMTEwLDEwMyw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw5NSw5NSwxMTcsMTAsMCwwLDAsMTA1LDExNSw5NSwxMTIsOTcsOTksCisgICAgMTA3LDk3LDEwMywxMDEsMTE3LDExLDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDExNywxNCwwLDAsMCw2NSwxMTYsMTE2LDExNCwxMDUsOTgsMTE3LAorICAgIDExNiwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNywxMSwwLDAsMCw5NSw5NSwxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDExNCwxMTIsOTcsMTE0LAorICAgIDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNyw1LDAsMCwwLDcwLDk3LDEwOCwxMTUsMTAxLAorICAgIDQwLDcsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LAorICAgIDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwKKyAgICA5NywxMTQsMTAzLDExNSwxMTcsNiwwLDAsMCwxMDcsMTE5LDk3LDExNCwxMDMsMTE1LDExNywKKyAgICA2LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNyw5LDAsMCwwLDEwNSwKKyAgICAxMTUsOTUsMTE0LDEwMSwxMDgsMTExLDk3LDEwMCwxMTcsMTAsMCwwLDAsMTA1LDExNSw5NSwKKyAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDAsMSwwLDAsMCwxMTcsMywwLDAsCisgICAgMCwxMDIsMTIwLDExMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LAorICAgIDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMjUsMCwwLDAsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTAyLDExMSwxMTQsOTUsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCwyNCwyLDAsMCwxMTUsNDQsMCwKKyAgICAwLDAsMCwxLDE4LDEsMTIsMSw2LDQsMTIsMyw5LDEsMTMsMSwKKyAgICA5LDEsMywxLDE5LDEsMTksMSw1LDIsNiwxLDEyLDIsMjUsMiwKKyAgICA5LDEsNiwyLDIzLDEsMywxLDYsMSwxMywxLDEyLDIsMTE3LDUyLAorICAgIDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsCisgICAgMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDAsMSwwLDAsMCwxMTcsNSwwLDAsCisgICAgMCw5NSwxMTksMTE0LDk3LDExMiw0MCwyLDAsMCwwLDExNywzLDAsMCwwLAorICAgIDEwMiwxMjAsMTEwLDExNywyNSwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsCisgICAgMTExLDExNCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsCisgICAgMTE0LDQwLDAsMCwwLDAsNDAsMSwwLDAsMCwxMTcsMywwLDAsMCwKKyAgICAxMDIsMTIwLDExMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsCisgICAgMTE2LDExNCw5NywxMTIsNjIsMTE3LDE3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNiwyLDAsMCwxMTUsCisgICAgNiwwLDAsMCwwLDE4LDE4LDMzLDEzLDEsMTE3LDE3LDAsMCwwLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsCisgICAgMCwzLDAsMCwwLDExNSwzOCwwLDAsMCwxMDAsMywwLDEzNSwwLDAsCisgICAgMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDEsMCwxMjUsMSwwLDExNiwKKyAgICAxLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsMSwwLDgzLAorICAgIDQwLDQsMCwwLDAsMTE3LDI1MiwwLDAsMCw2OCwxMDEsOTksMTExLDExNCw5NywKKyAgICAxMTYsMTExLDExNCwzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsCisgICAgOTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDEwMSwKKyAgICAxMDUsMTEwLDEwMywzMiwxMTQsMTAxLDExMywxMTcsMTAxLDExNSwxMTYsMTAxLDEwMCwzMiwxMDksOTcsCisgICAgMTE2LDk5LDEwNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMSwxMTAsMTAxLDMyLDExNiwxMDQsCisgICAgMTAxLDEwLDMyLDMyLDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTksOTcsMTEwLAorICAgIDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LAorICAgIDEwMSwzMiwxMDIsMTA1LDExNCwxMTUsMTE2LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwKKyAgICAzMiw0MCwxMTUsMTAxLDEwOCwxMDIsNDEsMzIsMTA5LDExNywxMTUsMTE2LDMyLDEwMCwxMDEsMTAyLAorICAgIDEwNSwxMTAsMTAxLDMyLDk1LDExMCw5NywxMDksMTAxLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDk5LDExMSwxMTAsMTAwLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwKKyAgICAxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDk5LDExMSwxMDksMTEyLDk3LAorICAgIDExNCwxMDEsMTAwLDMyLDk3LDEwMyw5NywxMDUsMTEwLDExNSwxMTYsNDYsMzIsNzMsMTAyLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDk5LDExMSwxMDksMTEyLDk3LDExNCwxMDUsMTE1LDExMSwxMTAsMzIsMTAyLAorICAgIDk3LDEwNSwxMDgsMTE1LDMyLDExNiwxMDQsMTAxLDExMCwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDQsCisgICAgMCwwLDAsNSwwLDAsMCwzMSwwLDAsMCwxMTUsODMsMCwwLDAsCisgICAgMTI0LDEsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDI0LDAsMTI0LDAsMCwxMDYsCisgICAgMSwwLDEyNSwxLDAsMTEwLDQwLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLAorICAgIDAsMTA3LDMsMCwxMTQsNjQsMCwxMTYsMiwwLDEwMCwxLDAsMTI0LDEsMCwKKyAgICAyMiwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsCisgICAgMTM2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMjQsMywwLDE0MiwKKyAgICAyLDAsODMsNDAsMywwLDAsMCw3OCwxMTcsMjMsMCwwLDAsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExMCwxMDAsCisgICAgMTA4LDEwMSwzMiwzNywxMTUsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsNDAsMywKKyAgICAwLDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNCwwLDAsCisgICAgMCwxMTAsOTcsMTA5LDEwMSwxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsNDAsNCwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsCisgICAgMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLAorICAgIDAsOTcsMTE0LDEwMywxMTUsMTE3LDYsMCwwLDAsMTA3LDExOSw5NywxMTQsMTAzLDExNSwKKyAgICA0MCwxLDAsMCwwLDExNyw2LDAsMCwwLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLAorICAgIDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKKyAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxOSwwLDAsMCw5NSw5OSwxMDQsMTAxLAorICAgIDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw2OSwKKyAgICAyLDAsMCwxMTUsMTAsMCwwLDAsMCwxLDEyLDEsMTIsMSwxNSwxLAorICAgIDI1LDEsMTE3LDQwLDAsMCwwLDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywKKyAgICAxMDksMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSw5OSwxMDQsMTAxLAorICAgIDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3OCwKKyAgICA0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNyw1LAorICAgIDAsMCwwLDk1LDExOSwxMTQsOTcsMTEyLDQwLDIsMCwwLDAsMTE3LDYsMCwKKyAgICAwLDAsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE3LDE5LDAsMCwwLDk1LDk5LDEwNCwKKyAgICAxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LAorICAgIDQwLDAsMCwwLDAsNDAsMSwwLDAsMCwxMTcsNiwwLDAsMCwxMDksCisgICAgMTAxLDExNiwxMDQsMTExLDEwMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDk1LDk5LDEwNCwxMDEsCisgICAgOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDYxLDIsMCwwLDExNSw2LDAsMCwwLAorICAgIDAsOCwyMSw2LDEzLDEsMTE3LDExLDAsMCwwLDk1LDk5LDEwNCwxMDEsOTksCisgICAgMTA3LDk1LDExMCw5NywxMDksMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwyLAorICAgIDAsMCwwLDMsMCwwLDAsMywwLDAsMCwxMTUsMzUsMCwwLDAsCisgICAgMTM1LDAsMCwxMDIsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwKKyAgICAxLDAsMTE2LDAsMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwKKyAgICAxLDAsODMsNDAsMywwLDAsMCwxMTcsNDksMCwwLDAsNjgsMTAxLDk5LAorICAgIDExMSwxMTQsOTcsMTE2LDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTA1LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCw0Niw5OSwyLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDE5LAorICAgIDAsMCwwLDExNSw1OCwwLDAsMCwxMjQsMSwwLDExNiwwLDAsMTA2LDEsCisgICAgMCwxMDcsNywwLDExNCw0NSwwLDExNiwyLDAsMTAwLDEsMCwxMDYsMywwLAorICAgIDEyNCwxLDAsMTMxLDEsMCwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsCisgICAgMSwwLDExMCwwLDAsMTM2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsCisgICAgMCw4Myw0MCwzLDAsMCwwLDc4LDExNywyNywwLDAsMCwxMjMsMTI1LDMyLAorICAgIDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwKKyAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwKKyAgICAxMDEsNDAsNCwwLDAsMCwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsMjAsCisgICAgMCwwLDAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksCisgICAgOTcsMTE2LDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLAorICAgIDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwxLDAsCisgICAgMCwwLDExNywzLDAsMCwwLDEwMiwxMjAsMTEwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywyNSwwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LAorICAgIDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDgxLAorICAgIDIsMCwwLDExNSw4LDAsMCwwLDAsMSwxNSwxLDE4LDEsMTIsMSwKKyAgICAxMTcsNTIsMCwwLDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwKKyAgICAxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsCisgICAgOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LAorICAgIDExMCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0MCwxLDAsMCwwLDExNyw1LAorICAgIDAsMCwwLDk1LDExOSwxMTQsOTcsMTEyLDQwLDIsMCwwLDAsMTE3LDMsMCwKKyAgICAwLDAsMTAyLDEyMCwxMTAsMTE3LDI1LDAsMCwwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsCisgICAgMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCw5NywxMTIsCisgICAgMTEyLDEwMSwxMTQsNDAsMCwwLDAsMCw0MCwxLDAsMCwwLDExNywzLDAsCisgICAgMCwwLDEwMiwxMjAsMTEwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTcsMCwwLDAsOTUsMTE0LDEwMSwxMTMsCisgICAgMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3OSwyLDAsCisgICAgMCwxMTUsNiwwLDAsMCwwLDIsMTgsNSwxMywxLDExNywxNywwLDAsCisgICAgMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwKKyAgICAxMDUsMTEwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsCisgICAgMCwwLDAsMywwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LDAsMCwxMDIsCisgICAgMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLDAsMTE2LDAsCisgICAgMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsNDAsCisgICAgMywwLDAsMCwxMTcsNDcsMCwwLDAsNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LAorICAgIDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwKKyAgICAzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw0Niw5OSwyLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCw0LDAsMCwwLDE5LDAsMCwwLDExNSw1OCwwLAorICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDExNSw0NSwKKyAgICAwLDExNiwyLDAsMTAwLDEsMCwxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwKKyAgICAxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsMTM2LAorICAgIDAsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsMCw4Myw0MCwzLDAsMCwKKyAgICAwLDc4LDExNywyNSwwLDAsMCwxMjMsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsCisgICAgMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsNDAsNCwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsOSwwLDAsMCwxMDUsMTE1LDk1LDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDY5LDExNCwxMTQsMTExLDExNCwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LAorICAgIDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LAorICAgIDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwxLDAsMCwwLAorICAgIDExNywzLDAsMCwwLDEwMiwxMjAsMTEwLDQwLDAsMCwwLDAsMTE3LDI5LDAsCisgICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKKyAgICAyNCwwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDkyLDIsMCwwLAorICAgIDExNSw4LDAsMCwwLDAsMSwxNSwxLDE4LDEsMTIsMSwxMTcsNTAsMCwKKyAgICAwLDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMTMsCisgICAgMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTksMTE0LDk3LAorICAgIDExMiwxMTIsMTAxLDExNCw0MCwxLDAsMCwwLDExNyw1LDAsMCwwLDk1LDExOSwKKyAgICAxMTQsOTcsMTEyLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsMTAyLDEyMCwxMTAsCisgICAgMTE3LDI0LDAsMCwwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDAsMCwwLAorICAgIDAsMCw0MCwxLDAsMCwwLDExNywzLDAsMCwwLDEwMiwxMjAsMTEwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsMTYsMCwwLDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5MCwyLDAsMCwxMTUsNiwwLDAsMCwwLAorICAgIDIsMTgsNSwxMywxLDExNywxNiwwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LAorICAgIDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk5LDIsMCwwLDAsMCwKKyAgICAwLDAsMCw1LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDg3LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsCisgICAgOTIsMiwwLDEyNSwyLDAsMTI1LDMsMCwxMjQsMiwwLDEwMCwzLDAsMTA3LAorICAgIDgsMCwxMTQsODMsMCwxMTYsMiwwLDEyNCwzLDAsMTMxLDEsMCwxMTQsODMsCisgICAgMCwxMDAsMSwwLDEyNSw0LDAsMTE2LDMsMCwxMDYsNCwwLDEyNCw0LDAsCisgICAgMTA2LDUsMCwxMjQsMywwLDEwMCwyLDAsMjUsMTMxLDEsMCwxMTYsNiwwLAorICAgIDEzMSwyLDAsMSwxMTAsMCwwLDEyNCwyLDAsODMsNDAsNCwwLDAsMCwKKyAgICAxMTcsODYsMCwwLDAsODQsMTE0LDEyMSwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwKKyAgICAzMiw5NywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsOTgsMTIxLDMyLDEwMCwxMDEsMTA4LDEwMSwxMDMsOTcsMTE2LDEwNSwxMTAsMTAzLAorICAgIDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwMiwxMDUsMTEwLAorICAgIDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQwLDQxLDQ2LDExNyw0NCwwLDAsMCwKKyAgICA3OCwxMTEsMTE2LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDEwMCwxMDUsCisgICAgMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTIzLDEyNSw1OCwzMiwxMDksMTA1LDExNSwxMTUsCisgICAgMTA1LDExMCwxMDMsMzIsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDEwNSwwLDAsMCwKKyAgICAwLDc4LDQwLDcsMCwwLDAsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCwKKyAgICA5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLAorICAgIDExNywzLDAsMCwwLDEwOCwxMDEsMTEwLDExNyw5LDAsMCwwLDk1LDExOSw5NywKKyAgICAxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwxMTcsNCwwLDAsMCwxMTksOTcsMTE0LDExMCwxMTcsCisgICAgNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNywxMywwLDAsMCw3MywKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsNDAsNSwwLDAsCisgICAgMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLAorICAgIDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDExNyw2LDAsMCwwLDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMTE3LDgsMCwwLDAsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSwxMTcsCisgICAgMywwLDAsMCwxMDksMTE1LDEwMyw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNywxNywwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwNCwxMDUsMTA5LDEwMSwyLDAsMCwxMTUsMTAsMCwKKyAgICAwLDAsMCw2LDIxLDEsMjQsMSw2LDEsMzIsMSwxMTcsMTcsMCwwLAorICAgIDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsCisgICAgMTA1LDEwOSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw2LAorICAgIDAsMCwwLDY2LDAsMCwwLDExNSwxNzMsMCwwLDAsMTI0LDAsMCw2OSwKKyAgICAxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLAorICAgIDMsMCwxMDEsNCwwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDEzMSwxLAorICAgIDAsOTAsNSwwLDEwMSw0LDAsMTAwLDE0LDAsMTAwLDQsMCwxMDAsNSwwLAorICAgIDEzMiwxLDAsMTMxLDEsMCw5MCw3LDAsMTAxLDQsMCwxMDEsOCwwLDEwMSwKKyAgICA5LDAsMTAxLDEwLDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsMTMxLDEsCisgICAgMCwxMzEsMSwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxMSwwLDEwMSw0LDAsCisgICAgMTAxLDEwLDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsCisgICAgMSwwLDkwLDEyLDAsMTAxLDQsMCwxMDEsMTAsMCwxMDAsMTAsMCwxMDAsMTEsCisgICAgMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxMywwLDEwMSw0LDAsCisgICAgMTAxLDEwLDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwKKyAgICAxLDAsOTAsMTQsMCwxMDAsMTQsMCw4Myw0MCwxNSwwLDAsMCwxMTcsMTUsCisgICAgMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDEsMTE0LDExNywxNDQsMCwwLDAsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDIsMTExLDExNCwzMiw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsOTcsCisgICAgMTE0LDEwMSwzMiwxMDEsMTA1LDExNiwxMDQsMTAxLDExNCwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwKKyAgICAxMTEsMTE0LDMyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwKKyAgICAxMTUsMzIsMTE2LDExMSwzMiw5NywxMTgsMTExLDEwNSwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLAorICAgIDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTA1LDExMCwxMTUsMTE2LDk3LAorICAgIDExMCwxMTYsMTA1LDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTA4LDk3LDExNSwxMTUsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLAorICAgIDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LDEsMCwxMzEsMSwwLAorICAgIDgzLDQwLDIsMCwwLDAsNzgsMTE3LDI0LDAsMCwwLDYwLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDM5LDEyMywxMjUsMzksMzIsNDAsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LAorICAgIDEwNSwxMTAsNDEsNjIsNDAsMiwwLDAsMCwxMTcsNiwwLDAsMCwxMDIsMTExLAorICAgIDExNCwxMDksOTcsMTE2LDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LAorICAgIDk1LDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsNiwKKyAgICAwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwwLDAsMCwwLDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA5NSwxMTQsMTAxLDExMiwxMTQsMTI3LDIsMCwwLDExNSwyLDAsMCwwLDAsMiwKKyAgICAxMTcsMjcsMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwKKyAgICA5OSwzLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwyLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwzOSwwLDAsMCwxMjQsMiwwLDEwMCwxLDAsCisgICAgMTA3LDksMCwxMTQsMTYsMCwxMDAsMSwwLDgzLDExNiwxLDAsMTA2LDIsMCwKKyAgICAxMjQsMSwwLDEzMSwxLDAsMTE0LDM1LDAsMTI0LDAsMCw4MywxMDAsMSwwLAorICAgIDgzLDQwLDIsMCwwLDAsMTE3LDExMywwLDAsMCw3MCwxMDUsMTEwLDEwMCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDIsCisgICAgMzIsMzksMTEyLDk3LDExNiwxMDQsMzksMzIsMTA1LDExNSwzMiwxMDEsMTE4LDEwMSwxMTQsMzIsCisgICAgMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTE1LDEwMSw5NywxMTQsOTksMTA0LDMyLDEwNSwxMTUsMzIsOTksMTExLDExMCwKKyAgICAxMTUsMTA1LDEwMCwxMDEsMTE0LDEwMSwxMDAsMzIsOTcsMzIsMTAyLDk3LDEwNSwxMDgsMTE3LDExNCwKKyAgICAxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDAsMywwLAorICAgIDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNCwwLDAsMCwKKyAgICA5NSwxMDUsMTA5LDExMiwxMTcsMTAsMCwwLDAsMTA1LDExNSw5NSw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMTYsMTA1LDExMCw0MCwzLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsCisgICAgMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDExNyw0LDAsCisgICAgMCwwLDExMiw5NywxMTYsMTA0LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwKKyAgICAxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKKyAgICAxMTIsNjIsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMzEsMiwwLDAsMTE1LDYsMCwwLDAsMCw3LDEyLDEsNCwKKyAgICAxLDExNywyNywwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDksMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDg4LDAsMCwwLDEyNCwxLDAsMTE2LDAsCisgICAgMCwxMDYsMSwwLDEwNyw2LDAsMTI1LDIsMCwxMjEsMjAsMCwxMTYsMiwwLAorICAgIDExNiwzLDAsMTA2LDQsMCwxMjQsMSwwLDEzMSwyLDAsODMsODcsMTEwLDQ2LAorICAgIDAsMSwxLDEsMTI0LDIsMCwxMiwxMTQsNzYsMCwxMjQsMSwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMDcsNiwwLDExNCw3NiwwLDExNiwwLDAsMTA2LDEsMCwKKyAgICAxMjQsMSwwLDYxLDExMCwwLDAsMTMwLDAsMCw4OSwxMTAsMSwwLDg4LDEwMCwKKyAgICAxLDAsODMsNDAsMiwwLDAsMCwxMTcsMjMsMCwwLDAsNzYsMTExLDk3LAorICAgIDEwMCwzMiw5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw0Niw3OCw0MCw1LDAsMCwwLDExNywzLDAsMCwwLDExNSwKKyAgICAxMjEsMTE1LDExNyw3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTcsMjUsCisgICAgMCwwLDAsOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCwKKyAgICA5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMTE3LDQsMCwwLAorICAgIDAsOTUsMTA1LDEwOSwxMTIsMTE3LDEyLDAsMCwwLDEwNSwxMTAsMTA1LDExNiw5NSw5OCwKKyAgICAxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0MCwzLDAsMCwwLDExNywzLDAsMCwwLAorICAgIDk5LDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLAorICAgIDExNyw5LDAsMCwwLDEwNSwxMTUsOTUsMTE0LDEwMSwxMDgsMTExLDk3LDEwMCw0MCwwLAorICAgIDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsCisgICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCwxMDgsCisgICAgMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxNDIsMiwwLDAsMTE1LDE0LAorICAgIDAsMCwwLDAsNiwxNSwxLDMsMSwyMCwxLDMsMSwyMiwxLDEzLAorICAgIDEsMTE3LDI3LDAsMCwwLDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDAsCisgICAgMiwwLDAsMCwxMTcsNTcsMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKKyAgICA3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsCisgICAgMTA0LDk3LDExOCwxMDEsMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LAorICAgIDExNSw0Niw3OCw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsCisgICAgMTAxLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsOCwKKyAgICAwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCwKKyAgICA0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSwKKyAgICA5OSwxMTEsMTAwLDEwMSwxNTYsMiwwLDAsMTE1LDIsMCwwLDAsMCw0LDExNywKKyAgICAyNCwwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LAorICAgIDU2LDAsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsCisgICAgOTcsMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDExNSwzMiwxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLDMyLAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsNzgsNDAsMSwwLAorICAgIDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSw0MCwyLDAsMCwwLAorICAgIDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsCisgICAgMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDEwLDAsMCwwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgMTYyLDIsMCwwLDExNSwyLDAsMCwwLDAsNCwxMTcsMjYsMCwwLDAsCisgICAgNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LAorICAgIDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwwLDAsMCwwLAorICAgIDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgNCwwLDAsMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDUyLDAsCisgICAgMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzAsOTcsMTA4LDExNSwxMDEsMzIsOTcsCisgICAgMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExMCwxMDEsMTE4LDEwMSwxMTQsMzIsMTEyLDk3LDk5LAorICAgIDEwNyw5NywxMDMsMTAxLDExNSw0Niw3MCw0MCwxLDAsMCwwLDExNyw1LDAsMCwKKyAgICAwLDcwLDk3LDEwOCwxMTUsMTAxLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsCisgICAgOTksMTA4LDExNSwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLAorICAgIDAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTY4LDIsMCwwLDExNSwKKyAgICAyLDAsMCwwLDAsNCwxMTcsMjYsMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LAorICAgIDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDc4LDQwLDE1LDAsMCwwLDExNyw4LDAsMCwwLAorICAgIDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNywKKyAgICA5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLAorICAgIDExMSw5OSw5NSw5NSwxMTcsMTEsMCwwLDAsOTksMTA4LDk3LDExNSwxMTUsMTA5LDEwMSwKKyAgICAxMTYsMTA0LDExMSwxMDAsMTE3LDExLDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LAorICAgIDExNCwxMDEsMTEyLDExNCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTEsMCwKKyAgICAwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMSwwLAorICAgIDAsMCwxMTUsMTAxLDExNiw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDEwLDAsCisgICAgMCwwLDExNSwxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE3LDAsMCwKKyAgICAwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LAorICAgIDEwNSwxMTAsMTE3LDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDExNywKKyAgICAxMCwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNywxMCwKKyAgICAwLDAsMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MCwxLDAsCisgICAgMCwwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsCisgICAgOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCwKKyAgICA2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAorICAgIDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTUsMCwKKyAgICAwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTE0LDExOCwyLDAsMCwxMTUsMjgsMCwwLDAsMTYsNyw2LDIsMTgsNCwKKyAgICAzLDEsMTgsMTAsMywxLDMsMSwzLDEsMjcsMTEsMywxLDIxLDUsCisgICAgMywxLDIxLDUsMywxLDExNywxNSwwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsCisgICAgMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDEsMCwwLDAsNiwwLDAsMCw2NiwwLDAsMCwxMTUsCisgICAgMTczLDAsMCwwLDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsCisgICAgMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAxLDQsMCwxMDAsMiwwLAorICAgIDEwMCwzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwxMDEsNCwwLDEwMCwKKyAgICAxNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMSwwLDEzMSwxLDAsOTAsNywKKyAgICAwLDEwMSw0LDAsMTAxLDgsMCwxMDEsOSwwLDEwMSwxMCwwLDEwMCw2LDAsCisgICAgMTAwLDcsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCwxMzEsMSwwLDEzMSwKKyAgICAxLDAsOTAsMTEsMCwxMDEsNCwwLDEwMSwxMCwwLDEwMCw4LDAsMTAwLDksCisgICAgMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxMiwwLDEwMSw0LDAsCisgICAgMTAxLDEwLDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwKKyAgICAxLDAsOTAsMTMsMCwxMDEsNCwwLDEwMSwxMCwwLDEwMCwxMiwwLDEwMCwxMywKKyAgICAwLDEzMiwwLDAsMTMxLDEsMCwxMzEsMSwwLDkwLDE0LDAsMTAwLDE0LDAsCisgICAgODMsNDAsMTUsMCwwLDAsMTE3LDE0LDAsMCwwLDcwLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDExNywxNDIsMCwwLDAsNzcsMTAxLAorICAgIDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDIsCisgICAgMTExLDExNCwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsCisgICAgMTExLDEwMCwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMDEsMTA1LDExNiwxMDQsMTAxLDExNCwzMiw5OSwKKyAgICAxMDgsOTcsMTE1LDExNSwzMiwxMTEsMTE0LDMyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwzMiwxMDksCisgICAgMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsMTE2LDExMSwzMiw5NywxMTgsMTExLDEwNSwxMDAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsCisgICAgMTA1LDExMCwxMTUsMTE2LDk3LDExMCwxMTYsMTA1LDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgOTksMTA4LDk3LDExNSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LAorICAgIDEsMCwxMzEsMSwwLDgzLDQwLDIsMCwwLDAsNzgsMTE3LDIyLDAsMCwKKyAgICAwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDM5LDEyMywxMjUsMzksMzIsNDAsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsNDEsNjIsNDAsMiwwLDAsMCwxMTcsNiwwLDAsCisgICAgMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywKKyAgICAxMDksMTAxLDk1LDk1LDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LAorICAgIDExNSwxMTcsMSwwLDAsMCwxMDksNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LAorICAgIDEwMSwxMTIsMTE0LDE4NCwyLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE3LDI2LAorICAgIDAsMCwwLDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCw5OSwzLDAsCisgICAgMCwwLDAsMCwwLDAsMywwLDAsMCwyLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwyMywwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwKKyAgICAxMzEsMSwwLDExNCwxOSwwLDEyNCwwLDAsODMsMTAwLDEsMCw4Myw0MCwyLAorICAgIDAsMCwwLDExNywyMSwwLDAsMCw3MCwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw3OCw0MCwzLAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNyw5LDAsMCwKKyAgICAwLDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMTE3LDQsMCwwLDAsNzgsCisgICAgMTExLDExMCwxMDEsNDAsMywwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LAorICAgIDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLAorICAgIDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCisgICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCisgICAgMTEyLDYyLDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTg4LDIsMCwwLDExNSwyLDAsMCwwLDAsMywxMTcsMjYsMCwKKyAgICAwLDAsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsCisgICAgNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCw0LDAsMCwwLDksMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDEwMCwwLDAsMCwxMjQsMSwwLDExNiwwLDAsMTA2LDEsMCwxMDcsCisgICAgNiwwLDEyNSwyLDAsMTIxLDMyLDAsMTE2LDIsMCwxMTYsMywwLDEwNiw0LAorICAgIDAsMTI0LDEsMCwxMzEsMiwwLDEyNSwzLDAsMTI0LDMsMCw5Niw1LDAsCisgICAgMTI0LDMsMCw4Myw4NywxMTAsNDYsMCwxLDEsMSwxMjQsMiwwLDEyLDExNCwKKyAgICA4OCwwLDEyNCwxLDAsMTE2LDAsMCwxMDYsMSwwLDEwNyw2LDAsMTE0LDg4LAorICAgIDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsNjEsMTEwLDAsMCwxMzAsMCwKKyAgICAwLDg5LDExMCwxLDAsODgsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNywKKyAgICAyMSwwLDAsMCw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDc4LDQwLDYsMCwwLDAsMTE3LAorICAgIDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTE1LDExNywyNSwwLDAsMCw5NSw5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsCisgICAgMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLAorICAgIDEwMCwxMTcsNCwwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsMTEsMCwwLDAsMTA1LAorICAgIDExMCwxMDUsMTE2LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDExNyw4LDAsMCwwLDk1LAorICAgIDk1LDEwMiwxMDUsMTA4LDEwMSw5NSw5NSw0MCw0LDAsMCwwLDExNywzLDAsMCwKKyAgICAwLDk5LDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksCisgICAgMTAxLDExNyw5LDAsMCwwLDEwNSwxMTUsOTUsMTE0LDEwMSwxMDgsMTExLDk3LDEwMCwxMTcsCisgICAgMSwwLDAsMCwxMDksNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTkzLDIsMCwwLDExNSwxOCwwLDAsMCwwLDYsMTUsMSwzLDEsCisgICAgMTgsMiw2LDEsOCwxLDMsMSwyMiwxLDEzLDEsMTE3LDI2LDAsMCwKKyAgICAwLDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LAorICAgIDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDEzLDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLAorICAgIDAsODMsNDAsMSwwLDAsMCwxMTcsNDUsMCwwLDAsODIsMTAxLDExNiwxMTcsCisgICAgMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSwKKyAgICA5OSwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNDAsMiwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsMTcsMCwwLDAsMTAzLDEwMSwxMTYsOTUsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTExLDk4LDEwNiwxMDEsOTksMTE2LDQwLDIsMCwKKyAgICAwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsOCwwLDAsMCwxMDIsCisgICAgMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwKKyAgICAyMTAsMiwwLDAsMTE1LDIsMCwwLDAsMCw0LDExNywyMywwLDAsMCwKKyAgICA3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsCisgICAgMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsCisgICAgMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwKKyAgICAwLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsNTQsMCwwLDAsODIsCisgICAgMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsMTAyLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMTEsMzIsCisgICAgMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwKKyAgICA5OSwxMTEsMTAwLDEwMSw0Niw3OCw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLAorICAgIDc4LDExMSwxMTAsMTAxLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LAorICAgIDExNSwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMCwKKyAgICAwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTAzLAorICAgIDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwyMTYsMiwwLDAsMTE1LDIsMCwKKyAgICAwLDAsMCw0LDExNywyNSwwLDAsMCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsCisgICAgOTksMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDExNiwwLDAsMTA2LAorICAgIDEsMCwxMjQsMSwwLDEzMSwxLDAsODMsNDAsMSwwLDAsMCwxMTcsNDYsCisgICAgMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsCisgICAgMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDQ2LDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LAorICAgIDE3LDAsMCwwLDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksCisgICAgMTA4LDExNSwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsCisgICAgMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LAorICAgIDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsCisgICAgMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMjIyLDIsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsNCwxMTcsMjUsMCwwLDAsNzAsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LAorICAgIDk3LDEwMywxMDEsNzgsNDAsMTUsMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwKKyAgICAxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LAorICAgIDk1LDk1LDExNywxMSwwLDAsMCw5OSwxMDgsOTcsMTE1LDExNSwxMDksMTAxLDExNiwxMDQsCisgICAgMTExLDEwMCwxMTcsMTEsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwKKyAgICAxMTIsMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywxMSwwLDAsMCwKKyAgICAxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDExLDAsMCwwLAorICAgIDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsMTAsMCwwLDAsCisgICAgMTE1LDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTYsMCwwLDAsOTUsCisgICAgMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwxMTcsCisgICAgMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LAorICAgIDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE3LDEwLDAsMCwKKyAgICAwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTE3LDEwLDAsMCwwLAorICAgIDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQwLDEsMCwwLDAsMTE3LAorICAgIDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLAorICAgIDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsCisgICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNCwwLDAsMCw3MCwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxNzUsMiwwLAorICAgIDAsMTE1LDI4LDAsMCwwLDE2LDcsNiwyLDE4LDQsMywxLDE4LDQsCisgICAgMywxLDMsMSwzLDEsMjcsMTQsMywxLDIxLDUsMywxLDIxLDUsCisgICAgMywxLDExNywxNCwwLDAsMCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAorICAgIDAsMCw0LDAsMCwwLDY2LDAsMCwwLDExNSwxMDEsMCwwLDAsMTI0LAorICAgIDAsMCw2OSwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsCisgICAgMSwwLDkwLDMsMCwxMDAsMiwwLDkwLDQsMCwxMDAsMywwLDkwLDUsCisgICAgMCwxMDAsMTEsMCw5MCw3LDAsMTAxLDgsMCwxMDAsNCwwLDEwMCw1LDAsCisgICAgMTMyLDAsMCwxMzEsMSwwLDkwLDksMCwxMDEsOCwwLDEwMCw2LDAsMTAwLAorICAgIDcsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsOCwwLDEwMCwxMCwKKyAgICAwLDEwMCw4LDAsMTAwLDksMCwxMzIsMSwwLDEzMSwxLDAsOTAsMTIsMCwKKyAgICAxMDAsMTAsMCw4Myw0MCwxMiwwLDAsMCwxMTcsMjEsMCwwLDAsODcsMTA1LAorICAgIDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsCisgICAgMTAwLDEwMSwxMTQsMTE3LDY3LDAsMCwwLDc3LDEwMSwxMTYsOTcsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMDEsOTksMTA4LDk3LDExNCwxMDEsMTAwLDMyLDEwNSwxMTAsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsMzIsMTE0LDEwMSwxMDMsCisgICAgMTA1LDExNSwxMTYsMTE0LDEyMSw0NiwxMCwzMiwzMiwzMiwzMiwxMTcsNTksMCwwLDAsCisgICAgODMsMTExLDEwMiwxMTYsMTE5LDk3LDExNCwxMDEsOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw5MiwKKyAgICA4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDY3LDExMSwxMTQsMTAxLDkyLDEyMywxMTUsMTIxLDExNSw5NSwKKyAgICAxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTI1LDkyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAorICAgIDkyLDEyMywxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTI1LDExNyw2NSwwLDAsMCwKKyAgICA4MywxMTEsMTAyLDExNiwxMTksOTcsMTE0LDEwMSw5Miw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDkyLAorICAgIDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsNjcsMTExLDExNCwxMDEsOTIsMTIzLDExNSwxMjEsMTE1LDk1LAorICAgIDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMjUsOTIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsCisgICAgOTIsMTIzLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMjUsOTIsNjgsMTAxLDk4LDExNywKKyAgICAxMDMsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDY3LDAsMCwwLDEyMSwyMywwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMTYsMCwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMiwwLAorICAgIDgzLDg3LDExMCwzNywwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNjIsMCwxLAorICAgIDEsMSwxMTYsMCwwLDEwNiwxLDAsMTE2LDAsMCwxMDYsNCwwLDEyNCwxLAorICAgIDAsMTMxLDIsMCw4Myw4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDAsMSwKKyAgICAwLDAsMCw3OCw0MCw1LDAsMCwwLDExNyw3LDAsMCwwLDk1LDExOSwKKyAgICAxMDUsMTEwLDExNCwxMDEsMTAzLDExNyw3LDAsMCwwLDc5LDExMiwxMDEsMTEwLDc1LDEwMSwKKyAgICAxMjEsMTE3LDE3LDAsMCwwLDcyLDc1LDY5LDg5LDk1LDY3LDg1LDgyLDgyLDY5LAorICAgIDc4LDg0LDk1LDg1LDgzLDY5LDgyLDExNywxMiwwLDAsMCw4NywxMDUsMTEwLDEwMCwKKyAgICAxMTEsMTE5LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDE4LDAsMCwwLDcyLDc1LDY5LAorICAgIDg5LDk1LDc2LDc5LDY3LDY1LDc2LDk1LDc3LDY1LDY3LDcyLDczLDc4LDY5LDQwLAorICAgIDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsMywwLDAsCisgICAgMCwxMDcsMTAxLDEyMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LAorICAgIDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLAorICAgIDExNywxNCwwLDAsMCw5NSwxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwKKyAgICAxMTYsMTE0LDEyMSwyNDIsMiwwLDAsMTE1LDgsMCwwLDAsMCwyLDMsMSwKKyAgICAyMywxLDEzLDEsMTE3LDM2LDAsMCwwLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LAorICAgIDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LAorICAgIDExMSwxMTIsMTAxLDExMCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCw2LDAsMCwwLDE2LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxNDIsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDExNCwyMSwwLAorICAgIDEyNCwwLDAsMTA2LDEsMCwxMjUsMiwwLDExMCw5LDAsMTI0LDAsMCwxMDYsCisgICAgMiwwLDEyNSwyLDAsMTI0LDIsMCwxMDYsMywwLDEwMCwxLDAsMTI0LDEsCisgICAgMCwxMDAsMiwwLDExNiw0LDAsMTA2LDUsMCwxMDAsMCwwLDEwMCwzLDAsCisgICAgMTMzLDIsMCwyNSwxMzEsMCwyLDEyNSwzLDAsMTIxLDQ2LDAsMTI0LDAsMCwKKyAgICAxMDYsNiwwLDEyNCwzLDAsMTMxLDEsMCwxNDMsMjUsMCwxMjUsNCwwLDExNiwKKyAgICA3LDAsMTA2LDgsMCwxMjQsNCwwLDEwMCw0LDAsMTMxLDIsMCwxMjUsNSwKKyAgICAwLDg3LDEwMCwwLDAsODEsODgsODcsMTEwLDIyLDAsNCwxMTYsOSwwLDEwNywKKyAgICAxMCwwLDExNCwxMzcsMCwxLDEsMSwxMDAsMCwwLDgzLDg5LDExMCwxLDAsCisgICAgODgsMTI0LDUsMCw4Myw0MCw1LDAsMCwwLDc4LDExNyw4LDAsMCwwLAorICAgIDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsMTEsMCwwLDAsMTE1LDEyMSwxMTUsCisgICAgOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDEwNSwzLDAsMCwwLDExNywwLDAsCisgICAgMCwwLDQwLDExLDAsMCwwLDExNywxMSwwLDAsMCw2OCw2OSw2Niw4NSwKKyAgICA3MSw5NSw2Niw4NSw3Myw3Niw2OCwxMTcsMTgsMCwwLDAsODIsNjksNzEsNzMsCisgICAgODMsODQsODIsODksOTUsNzUsNjksODksOTUsNjgsNjksNjYsODUsNzEsMTE3LDEyLAorICAgIDAsMCwwLDgyLDY5LDcxLDczLDgzLDg0LDgyLDg5LDk1LDc1LDY5LDg5LDExNywKKyAgICA2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDMsMCwwLDAsMTE1LAorICAgIDEyMSwxMTUsMTE3LDcsMCwwLDAsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDExNywxNCwKKyAgICAwLDAsMCw5NSwxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LAorICAgIDEyMSwxMTcsNywwLDAsMCw5NSwxMTksMTA1LDExMCwxMTQsMTAxLDEwMywxMTcsMTAsMCwKKyAgICAwLDAsODEsMTE3LDEwMSwxMTQsMTIxLDg2LDk3LDEwOCwxMTcsMTAxLDExNywxMiwwLDAsCisgICAgMCw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDQsMCwKKyAgICAwLDAsNzgsMTExLDExMCwxMDEsNDAsNiwwLDAsMCwxMTcsMywwLDAsMCwKKyAgICA5OSwxMDgsMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMTcsMTIsMCwwLDAsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5NSwxMDcsMTAxLAorICAgIDEyMSwxMTcsMywwLDAsMCwxMDcsMTAxLDEyMSwxMTcsNCwwLDAsMCwxMDQsMTA3LAorICAgIDEwMSwxMjEsMTE3LDgsMCwwLDAsMTAyLDEwNSwxMDgsMTAxLDExMiw5NywxMTYsMTA0LDQwLAorICAgIDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKKyAgICA5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE2LDAsMCwwLAorICAgIDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLAorICAgIDI0OSwyLDAsMCwxMTUsMjIsMCwwLDAsMCwyLDksMSwxMiwyLDksCisgICAgMSwxNSwxLDIyLDEsMywxLDE4LDEsMjgsMSwxMywxLDksMSwxMTcsCisgICAgMzgsMCwwLDAsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LAorICAgIDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTE1LDEwMSw5NywxMTQsOTksCisgICAgMTA0LDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTksMywwLDAsMCwwLAorICAgIDAsMCwwLDcsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDE0MCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLAorICAgIDEyNSwzLDAsMTI0LDMsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDMxLDAsMTAwLAorICAgIDEsMCw4MywxMjEsMTcsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDMsMCwxMzEsCisgICAgMSwwLDEsODcsMTEwLDIyLDAsNCwxMTYsNCwwLDEwNywxMCwwLDExNCw3MiwKKyAgICAwLDEsMSwxLDEwMCwxLDAsODMsODksMTEwLDEsMCw4OCwxMjAsNjAsMCwKKyAgICAxMTYsNSwwLDEzMSwwLDAsNjgsOTMsNDksMCw5MiwzLDAsMTI1LDQsMCwKKyAgICAxMjUsNSwwLDEyNSw2LDAsMTI0LDMsMCwxMDYsNiwwLDExNiw3LDAsMTI0LAorICAgIDUsMCwxMzEsMSwwLDEzMSwxLDAsMTE0LDgzLDAsMTI0LDQsMCwxMjQsMSwKKyAgICAwLDEyNCwzLDAsMTMxLDIsMCw4MywxMTMsODMsMCw4NywxMDAsMSwwLDgzLAorICAgIDQwLDIsMCwwLDAsMTE3LDM0LDAsMCwwLDcwLDEwNSwxMTAsMTAwLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsNzgsNDAsOCwwLAorICAgIDAsMCwxMTcsMTYsMCwwLDAsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDExNCwKKyAgICAxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsCisgICAgMTE3LDMsMCwwLDAsOTUsMTExLDExNSwxMTcsNCwwLDAsMCwxMTUsMTE2LDk3LAorICAgIDExNiwxMTcsNywwLDAsMCw3OSw4Myw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDI3LDAsCisgICAgMCwwLDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLAorICAgIDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTcsOCwwLAorICAgIDAsMCwxMDEsMTEwLDEwMCwxMTUsMTE5LDEwNSwxMTYsMTA0LDExNyw1LDAsMCwwLDExNiwKKyAgICAxMTcsMTEyLDEwOCwxMDEsNDAsNywwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsCisgICAgMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwKKyAgICAwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsOCwwLDAsMCwxMDIsMTA1LDEwOCwxMDEsCisgICAgMTEyLDk3LDExNiwxMDQsMTE3LDYsMCwwLDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsCisgICAgOCwwLDAsMCwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDExNywxLDAsMCwKKyAgICAwLDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLAorICAgIDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw4LDMsCisgICAgMCwwLDExNSwyMCwwLDAsMCwwLDMsMTUsMSwxMiwxLDQsMSwzLAorICAgIDEsMTcsMSwxMywxLDksMSwyNSwxLDIxLDEsMTE3LDMzLDAsMCwwLAorICAgIDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwKKyAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw3OCw3MCw0MCwxMywwLDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsCisgICAgOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCwKKyAgICA5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksOTUsCisgICAgOTUsMTE3LDEyLDAsMCwwLDgyLDY5LDcxLDczLDgzLDg0LDgyLDg5LDk1LDc1LAorICAgIDY5LDg5LDExNywxOCwwLDAsMCw4Miw2OSw3MSw3Myw4Myw4NCw4Miw4OSw5NSwKKyAgICA3NSw2OSw4OSw5NSw2OCw2OSw2Niw4NSw3MSwxMTcsNSwwLDAsMCw3MCw5NywKKyAgICAxMDgsMTE1LDEwMSwxMTcsMTEsMCwwLDAsNjgsNjksNjYsODUsNzEsOTUsNjYsODUsCisgICAgNzMsNzYsNjgsMTE3LDExLDAsMCwwLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwxMDEsMTE2LAorICAgIDEwNCwxMTEsMTAwLDExNywxNCwwLDAsMCw5NSwxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LDEwMSwKKyAgICAxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSwxMTcsMTYsMCwwLDAsOTUsMTE1LDEwMSw5NywxMTQsCisgICAgOTksMTA0LDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsMTE3LDQsMCwwLDAsCisgICAgNzgsMTExLDExMCwxMDEsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSw5NSwKKyAgICAxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLDAsCisgICAgMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiw2MiwxMTcsMjEsMCwwLDAsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsCisgICAgODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMjI5LDIsCisgICAgMCwwLDExNSwxNiwwLDAsMCwxNiwzLDYsMyw2LDMsNiwyLDYsCisgICAgMiwxOCw3LDE4LDE1LDMsMSwxMTcsMjEsMCwwLDAsODcsMTA1LDExMCwxMDAsCisgICAgMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNSwwLAorICAgIDAsMCw2NiwwLDAsMCwxMTUsNzQsMCwwLDAsMTI0LDAsMCw2OSwxMDEsCisgICAgMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsCisgICAgMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwKKyAgICAxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMSw2LDAsMTAwLDYsMCwxMDAsCisgICAgMTAsMCwxMDAsNywwLDEwMCw4LDAsMTMyLDAsMSwxMzEsMSwwLDkwLDgsCisgICAgMCwxMDAsOSwwLDgzLDQwLDExLDAsMCwwLDExNywxMywwLDAsMCw5NSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsMTE3LDgzLDAsMCwKKyAgICAwLDY2LDk3LDExNSwxMDEsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTExLDEwMiwzMiw5OSwKKyAgICAxMTEsMTA5LDEwOSwxMTEsMTEwLDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsCisgICAgMTAwLDMyLDk4LDEyMSwzMiw5OCwxMTEsMTE2LDEwNCwzMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk3LDExMCwxMDAsMTAsMzIsMzIsMzIsMzIsODMsCisgICAgMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsNDYsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLAorICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsODgsMCwwLDAsMTE2LDAsCisgICAgMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEzMSwxLDAsCisgICAgMTAwLDEsMCwyNSwxMjUsMiwwLDEyNCwyLDAsMTA2LDIsMCwxMDAsMiwwLAorICAgIDEwMCwxLDAsMTMxLDIsMCwxMDAsMywwLDI1LDEyNSwzLDAsMTI0LDEsMCwKKyAgICAxMDYsMywwLDEwMCwyLDAsMTMxLDEsMCwxMDAsNCwwLDI1LDEyNSw0LDAsCisgICAgMTI0LDMsMCwxMDAsNSwwLDEwNywyLDAsMTExLDg3LDAsMTI0LDQsMCwxMDAsCisgICAgNSwwLDEwNywzLDAsODMsNDAsNiwwLDAsMCwxMTcsMTQxLDAsMCwwLAorICAgIDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwKKyAgICAxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSwKKyAgICA5OSwxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDMyLDk4LDEyMSwzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDUsMTEwLDEwMywzMiwKKyAgICAxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDExMiwKKyAgICA5NywxMTYsMTA0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLAorICAgIDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMDQsOTcsMTE1LAorICAgIDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDM5LAorICAgIDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0NiwxMTIsMTIxLDM5LDQ2LDEwNSwxLDAsCisgICAgMCwwLDExNywxLDAsMCwwLDQ2LDEwNSwwLDAsMCwwLDEwNSwyLDAsCisgICAgMCwwLDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0MCwKKyAgICA0LDAsMCwwLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsCisgICAgMTEyLDEwOCwxMDUsMTE2LDExNywxMiwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwKKyAgICAxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDYsMCwwLDAsMTE0LDExNSwxMTIsMTA4LDEwNSwxMTYsCisgICAgMTE3LDEwLDAsMCwwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDQwLAorICAgIDUsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsCisgICAgMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsOCwwLDAsMCwxMDIsCisgICAgMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDEzLDAsMCwwLDEwMiwxMDUsMTA4LDEwMSwKKyAgICAxMTAsOTcsMTA5LDEwMSw5NSw5OCw5NywxMTUsMTAxLDExNyw5LDAsMCwwLDExNiw5NywKKyAgICAxMDUsMTA4LDk1LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsCisgICAgMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKKyAgICA5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDI4LDMsMCwwLDExNSw4LDAsMCwwLDAsMywyNSwxLDIyLAorICAgIDEsMTksMSwxMTcsMjQsMCwwLDAsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LAorICAgIDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDk5LDUsMCwwLDAsMCwwLDAsMCwxMiwwLDAsMCwyMiwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTk4LDEsMCwwLDEyNCwyLDAsMTAwLDEsMCwKKyAgICAxMDAsMiwwLDEzMywyLDAsMjUsMTI1LDUsMCwxMjQsMiwwLDEwMCwyLDAsCisgICAgMTAwLDMsMCwxMzMsMiwwLDI1LDEyNSw2LDAsMTI0LDIsMCwxMDAsMywwLAorICAgIDEwMCw0LDAsMTMzLDIsMCwyNSwxMjUsNywwLDEyNCw1LDAsMTE2LDAsMCwKKyAgICAxMDcsMywwLDExNCwxMDUsMCwxMDAsNSwwLDEwNiwxLDAsMTI0LDEsMCwxMjQsCisgICAgNSwwLDEzMSwyLDAsMTI1LDgsMCwxMTYsMiwwLDEyNCw4LDAsMTAwLDYsCisgICAgMCwxMjQsMSwwLDEwMCw3LDAsMTI0LDMsMCwxMzEsMSwyLDEzMCwxLDAsCisgICAgMTEwLDExNiwwLDExNiwzLDAsMTI0LDYsMCwxMzEsMSwwLDEwMCwyLDAsMTA3LAorICAgIDMsMCwxMTQsMTYzLDAsMTAwLDgsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsCisgICAgMCwxMjUsOSwwLDExNiw0LDAsMTI0LDksMCwxMzEsMSwwLDEsMTE2LDUsCisgICAgMCwxMjQsOSwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsNTgsMCwxMTYsMywwLAorICAgIDEyNCw3LDAsMTMxLDEsMCwxMDAsMiwwLDEwNywzLDAsMTE0LDIyMSwwLDEwMCwKKyAgICA5LDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDksMCwxMTYsNCwKKyAgICAwLDEyNCw5LDAsMTMxLDEsMCwxLDExNiw1LDAsMTI0LDksMCwxMzEsMSwKKyAgICAwLDEzMCwxLDAsMTEwLDAsMCwxMjQsNCwwLDEwMCwxLDAsMTA3LDksMCwKKyAgICAxMTQsMTg0LDEsMTIxLDIwLDAsMTE2LDcsMCwxMjQsNCwwLDEwMCwxMCwwLDI1LAorICAgIDEzMSwxLDAsMTI1LDEwLDAsODcsMTEwLDE4LDAsNCwxMTYsOCwwLDEwNywxMCwKKyAgICAwLDExNCwxNywxLDEsMSwxLDg5LDExMCw3MSwwLDg4LDExNiw5LDAsMTI0LAorICAgIDYsMCwxMzEsMSwwLDEyNCwxMCwwLDEwNywzLDAsMTE0LDg4LDEsMTAwLDExLAorICAgIDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDksMCwxMTYsNCwwLAorICAgIDEyNCw5LDAsMTMxLDEsMCwxLDExNiwyLDAsMTI0LDksMCwxMDAsNiwwLAorICAgIDEyNCwxLDAsMTAwLDcsMCwxMjQsMywwLDEzMSwxLDIsMTMwLDEsMCwxMTAsCisgICAgMCwwLDEyMSwxOCwwLDEyNCw0LDAsMTAwLDEyLDAsMjUsMTAwLDEzLDAsNjQsCisgICAgMTI1LDExLDAsODcsMTEwLDE4LDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwxMjYsCisgICAgMSwxLDEsMSw4OSwxMTMsMTg0LDEsODgsMTE2LDksMCwxMjQsNywwLDEzMSwKKyAgICAxLDAsMTI0LDExLDAsMTA3LDMsMCwxMTQsMTg0LDEsMTE2LDIsMCwxMDAsMTEsCisgICAgMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMDAsNiwwLDEyNCwxLDAsCisgICAgMTAwLDcsMCwxMjQsMywwLDEzMSwxLDIsMTMwLDEsMCwxMTMsMTg0LDEsMTEwLAorICAgIDAsMCwxMjQsMiwwLDEwMCw0LDAsMTAwLDEsMCwxMzMsMiwwLDI1LDgzLAorICAgIDQwLDE0LDAsMCwwLDExNywxOTMsMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksOTcsMTE0LDExNSwxMDQsOTcsMTA4LDEwOCwxMDEsMTAwLDMyLAorICAgIDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsOTgsMTIxLDExNiwxMDEsOTksCisgICAgMTExLDEwMCwxMDEsNDQsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMTA1LDExMCwxMDMsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA5LDk3LDEwMywxMDUsOTksMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCw0NCwzMiwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywKKyAgICAxMDksMTEyLDMyLDk3LDExMCwxMDAsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTUsMTA1LAorICAgIDEyMiwxMDEsMzIsOTcsMTA4LDExMSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDExOSw5NywxMjEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNSwxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsOTUsMTE1LDExNiw5NywxMTYsMTE1LDMyLDEwNSwxMTUsMzIsNzgsMTExLAorICAgIDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDExNSwxMDcsMTA1LDExMiwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDMyLDk5LDEwNCwxMDEsOTksMTA3LAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDEwNSw0LDAsMCwKKyAgICAwLDEwNSw4LDAsMCwwLDEwNSwxMiwwLDAsMCwxMTcsMzAsMCwwLDAsCisgICAgOTgsOTcsMTAwLDMyLDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsCisgICAgMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSw1OCwzMiwxMjMsMzMsMTE0LDEyNSwxMTcsNCwKKyAgICAwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwKKyAgICAxMTcsMTksMCwwLDAsOTgsOTcsMTAwLDMyLDExNiwxMDUsMTA5LDEwMSwxMTUsMTE2LDk3LAorICAgIDEwOSwxMTIsMzIsMTA1LDExMCwzMiwxMjMsMTI1LDExNywxNCwwLDAsMCw5OCw5NywxMDAsCisgICAgMzIsMTE1LDEwNSwxMjIsMTAxLDMyLDEwNSwxMTAsMzIsMTIzLDEyNSwxMTcsNSwwLDAsMCwKKyAgICAxMDksMTE2LDEwNSwxMDksMTAxLDExNywyNCwwLDAsMCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsCisgICAgMTAwLDEwMSwzMiwxMDUsMTE1LDMyLDExNSwxMTYsOTcsMTA4LDEwMSwzMiwxMDIsMTExLDExNCwzMiwKKyAgICAxMjMsMTI1LDExNyw0LDAsMCwwLDExNSwxMDUsMTIyLDEwMSwxMDgsMywwLDAsMCwKKyAgICAyNTUsMTI3LDI1NSwxMjcsMywwLDQwLDEwLDAsMCwwLDExNywxMiwwLDAsMCwKKyAgICA5NSw3Nyw2NSw3MSw3Myw2Nyw5NSw2Niw4OSw4NCw2OSw4MywxMTcsNiwwLDAsCisgICAgMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwxMTcsMywwLDAsMCwxMDgsMTAxLDExMCwxMTcsCisgICAgMTYsMCwwLDAsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsCisgICAgMTE1LDk3LDEwMywxMDEsMTE3LDgsMCwwLDAsNjksNzksNzAsNjksMTE0LDExNCwxMTEsCisgICAgMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywzLDAsMCwwLDEwNSwKKyAgICAxMTAsMTE2LDExNyw4LDAsMCwwLDc1LDEwMSwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDExNywKKyAgICA3LDAsMCwwLDk1LDExNCw5NSwxMDgsMTExLDExMCwxMDMsNDAsMTIsMCwwLDAsCisgICAgMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsCisgICAgMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMDAsOTcsMTE2LDk3LDExNywKKyAgICAxMywwLDAsMCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCwxMTcsMTIsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsMTE2LDk3LAorICAgIDExNiwxMTUsMTE3LDUsMCwwLDAsMTA5LDk3LDEwMywxMDUsOTksMTE3LDEzLDAsMCwKKyAgICAwLDExNCw5NywxMTksOTUsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiwxMTcsOCwKKyAgICAwLDAsMCwxMTQsOTcsMTE5LDk1LDExNSwxMDUsMTIyLDEwMSwxMTcsMywwLDAsMCwKKyAgICAxMDksMTE1LDEwMywxMTcsNywwLDAsMCwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTcsCisgICAgMTIsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDksMTE2LDEwNSwxMDksMTAxLAorICAgIDExNywxMSwwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwxMDUsMTIyLDEwMSwKKyAgICA0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLAorICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywyMCwwLDAsCisgICAgMCw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDk4LDEyMSwxMTYsCisgICAgMTAxLDk5LDExMSwxMDAsMTAxLDM2LDMsMCwwLDExNSw2NiwwLDAsMCwwLDcsCisgICAgMTYsMSwxNiwxLDE2LDEsMTIsMSwxOCwxLDI3LDEsMTgsMSwxNSwxLAorICAgIDEwLDEsMTUsMSwxOCwxLDE1LDEsMTAsMSwxNSwxLDEyLDEsMywxLAorICAgIDIwLDEsMTMsMSw1LDIsMTgsMSwxNSwxLDEwLDEsMTUsMSwxMiwxLAorICAgIDMsMSwxOCwxLDEzLDEsNSwyLDE4LDEsMywxLDE1LDEsMjEsMywKKyAgICAxMTcsMzQsMCwwLDAsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsCisgICAgOTksMTE1LDQ2LDk1LDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMDksOTUsOTgsCisgICAgMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE3LDEwLDAsMCwwLDExNSwxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDk5LDIsMCwwLDAsMSwwLDAsMCw1LAorICAgIDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwyMjcsMCwwLDAsCisgICAgMTI0LDEsMCwxMDYsMCwwLDEyNSwzLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwKKyAgICAzLDAsMTMxLDEsMCwxMjUsNCwwLDEyNCwwLDAsMTA2LDIsMCwxMjQsMywKKyAgICAwLDEzMSwxLDAsMTI0LDEsMCw5NSwzLDAsMTI0LDIsMCwxMTUsMTA2LDAsCisgICAgMTIxLDIyLDAsMTE2LDQsMCwxMjQsMSwwLDEwNiwzLDAsMTMxLDEsMCwxMjQsCisgICAgMSwwLDk1LDUsMCw4NywxMTMsMTE4LDAsNCwxMTYsNiwwLDEwNywxMCwwLAorICAgIDExNCwxMDIsMCwxLDEsMSwxMjQsMSwwLDEwNiwzLDAsMTI0LDEsMCw5NSwKKyAgICA1LDAsODksMTEzLDExOCwwLDg4LDExMCwxMiwwLDEyNCwxLDAsMTA2LDMsMCwKKyAgICAxMjQsMSwwLDk1LDUsMCwxMjQsMywwLDEyNCwxLDAsOTUsNywwLDEyNCwKKyAgICAwLDAsMTA2LDgsMCwxMjQsMywwLDEzMSwxLDAsMTE0LDE3MCwwLDExNiw5LAorICAgIDAsMTI0LDEsMCwxMDYsMywwLDEzMSwxLDAsMTAwLDEsMCwyNSwxMDMsMSwKKyAgICAwLDEyNCwxLDAsOTUsMTAsMCwxMTAsMjUsMCwxMjQsMSwwLDEwNiw3LDAsCisgICAgMTA2LDExLDAsMTAwLDIsMCwxMzEsMSwwLDEwMCwxLDAsMjUsMTI0LDEsMCwKKyAgICA5NSw3LDAsMTI0LDAsMCwxMjQsMSwwLDk1LDEyLDAsMTE2LDEzLDAsMTE2LAorICAgIDE0LDAsMTI0LDQsMCwxMjQsMSwwLDEwNiwxNSwwLDEzMSwzLDAsMSwxMjQsCisgICAgMSwwLDgzLDQwLDMsMCwwLDAsMTE3LDgyLDAsMCwwLDcyLDEwMSwxMDgsCisgICAgMTEyLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsOTcsOTgsMTA4LDEwMSwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTAsMTAwLAorICAgIDEwOCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICAzMiwxMTEsMTE0LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDQ2LDEwNSwKKyAgICAwLDAsMCwwLDExNywxLDAsMCwwLDQ2LDQwLDE2LDAsMCwwLDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw4LDAsMCwKKyAgICAwLDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDExNywxMiwwLDAsMCwxMDMsMTAxLAorICAgIDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDgsMCwwLDAsOTUsCisgICAgOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDExNywxNywwLDAsMCw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNywxMCwwLAorICAgIDAsMCw5NSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5NSw5NSwxMTcsMTksMCwwLAorICAgIDAsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDExNywxMSwwLDAsMCw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLAorICAgIDEwOCwxMDUsMTE2LDExNyw4LDAsMCwwLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LAorICAgIDExNywxMCwwLDAsMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTcsCisgICAgMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSwxMTcsMjUsCisgICAgMCwwLDAsOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCwKKyAgICA5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMTE3LDQsMCwwLAorICAgIDAsMTAxLDEyMCwxMDEsOTksMTE3LDgsMCwwLDAsOTUsOTUsMTAwLDEwNSw5OSwxMTYsCisgICAgOTUsOTUsNDAsNSwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsCisgICAgMTE3LDYsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDEwLDAsMCwwLAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDExNyw0LDAsMCwwLDExMCwKKyAgICA5NywxMDksMTAxLDExNywxMSwwLDAsMCw5OSwxMTEsMTAwLDEwMSw5NSwxMTEsOTgsMTA2LAorICAgIDEwMSw5OSwxMTYsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLAorICAgIDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsCisgICAgMTIsMCwwLDAsOTUsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgODEsMywwLDAsMTE1LDMyLDAsMCwwLDAsNCw5LDEsMTUsMSwxOCwKKyAgICAxLDYsMSwzLDEsMjIsMSwxMywxLDIwLDIsMTIsMSw5LDEsMTUsCisgICAgMSwyOCwyLDI1LDEsOSwxLDE5LDEsMTE3LDI2LDAsMCwwLDk1LDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0Niw5NSwxMDgsMTExLDk3LAorICAgIDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw3MCw0MCw5LDAsMCwwLDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsCisgICAgMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsCisgICAgOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLAorICAgIDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsMTAsMCwwLDAsMTA1LDExNSw5NSwKKyAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDIwLDAsMCwwLDk1LDk4LDEyMSwxMTYsCisgICAgMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMDksOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsCisgICAgMTE3LDE3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LAorICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDUsMCwwLDAsNzAsOTcsMTA4LDExNSwxMDEsCisgICAgMTE3LDEyLDAsMCwwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTksCisgICAgOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywxMywwLDAsMCw5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LAorICAgIDEwNSw5OSwxMTUsMjMsMywwLDAsMTE1LDEwLDAsMCwwLDE2LDMsNiwyLAorICAgIDEyLDgsMTIsNDUsNiwxLDExNywxMywwLDAsMCw5NSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDEsMCwwLDAsMiwwLDAsMCw2NiwwLDAsMCwxMTUsMTA0LDAsCisgICAgMCwwLDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwKKyAgICAyLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsOTAsMywwLDEwMCwzLAorICAgIDAsMTAwLDQsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNSwwLDEwMCw2LDAsCisgICAgMTMyLDAsMCw5MCw1LDAsMTAwLDcsMCwxMDAsOCwwLDEzMiwwLDAsOTAsCisgICAgNiwwLDEwMCw5LDAsMTAwLDEwLDAsMTMyLDAsMCw5MCw3LDAsMTAwLDExLAorICAgIDAsMTAwLDEyLDAsMTMyLDAsMCw5MCw4LDAsMTAwLDEzLDAsMTAwLDE0LDAsCisgICAgMTMyLDAsMCw5MCw5LDAsMTAwLDE1LDAsODMsNDAsMTYsMCwwLDAsMTE3LAorICAgIDEyLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTAsMCwwLDAsMTE2LDAsMCwxMzAsMSwwLAorICAgIDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsMTIxLDAsMCwwLDc5LDExMiwKKyAgICAxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExNiwxMDQsCisgICAgOTcsMTE2LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksCisgICAgMTExLDEwMCwxMDUsMTAyLDEwNSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDEwNSwxMDksMTAxLAorICAgIDMyLDQwLDk3LDExMCwzMiwxMDUsMTEwLDExNiw0MSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LAorICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLAorICAgIDEwNSwxMDEsMTAwLDMyLDExMiw5NywxMTYsMTA0LDQ0LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiw5NywzMiwxMTUsMTE2LDExNCw0NiwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MCwxLDAsMCwwLDExNywxOSwwLAorICAgIDAsMCw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsCisgICAgMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsMCwwLDAsCisgICAgMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwKKyAgICAxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwxMDcsMywwLDAsMTE1LDIsMCwwLDAsCisgICAgMCw0LDExNywyMywwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMjAsMCwwLDAsMTA1LDEsMCwxMjQsMCwwLDEwNiwwLAorICAgIDAsMTI0LDEsMCwxMzEsMSwwLDEwMCwxLDAsNTQsODMsNDAsMiwwLDAsCisgICAgMCwxMTcsMTE0LDEsMCwwLDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwKKyAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwNSwxMTAsMTAzLDMyLAorICAgIDk3LDMyLDEwOSwxMDEsMTE2LDk3LDEwMCw5NywxMTYsOTcsMzIsMTAwLDEwNSw5OSwxMTYsMzIsCisgICAgMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLAorICAgIDEwMCwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTYsCisgICAgMTExLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw0MCwxMTUsCisgICAgMTE2LDExNCw0MSw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4MCwxMTEsMTE1LAorICAgIDExNSwxMDUsOTgsMTA4LDEwMSwzMiwxMDcsMTAxLDEyMSwxMTUsNTgsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsNDUsMzIsMzksMTA5LDExNiwxMDUsMTA5LDEwMSwzOSwzMiw0MCwxMDksCisgICAgOTcsMTEwLDEwMCw5NywxMTYsMTExLDExNCwxMjEsNDEsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwzMiwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywKKyAgICAxMDksMTEyLDMyLDExMSwxMDIsMzIsMTA4LDk3LDExNSwxMTYsMzIsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5OSwxMTEsMTAwLDEwMSwKKyAgICAzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEwNSw5OSw5NywxMTYsMTA1LDExMSwxMTAsNTksMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDUsMzIsMzksMTE1LDEwNSwxMjIsMTAxLDM5LDMyLAorICAgIDQwLDExMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCw0MSwzMiwxMDUsMTE1LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExNSwxMDUsMTIyLDEwMSwzMiwxMDUsMTEwLDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwKKyAgICAxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLAorICAgIDEwMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTA5LDExMiwKKyAgICAxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDExNSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTE0LDEwMSw5NywxMDAsMzIsCisgICAgOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDExNSw0NiwxMCwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTcsNSwwLDAsMCwxMDksMTE2LDEwNSwKKyAgICAxMDksMTAxLDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDExMiw5NywxMTYsMTA0LAorICAgIDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwKKyAgICAxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsMCwwLAorICAgIDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDExMywzLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDEwLDExNywyMywwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSw5OSwKKyAgICA0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LAorICAgIDIsMCwxMjQsMywwLDEzMSwyLDAsODMsNDAsMSwwLDAsMCwxMTcsMjI4LAorICAgIDAsMCwwLDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwKKyAgICAxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwzMiwKKyAgICAxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LDEyMSwxMTYsMTAxLDExNSw0MSwzMiwxMTYsMTExLDMyLAorICAgIDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw0MCw5NywzMiwxMTUsCisgICAgMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDksCisgICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwzMiwKKyAgICAxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLAorICAgIDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsCisgICAgMTAwLDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMzIsCisgICAgOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwxMDgsMTIxLDMyLDExNiwxMTQsOTcsMTEwLDExNSwxMDIsCisgICAgMTAxLDExNCwzMiwxMTIsMTAxLDExNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsMTE1LDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQwLDEsMCwwLDAsMTE3LDgsMCwwLAorICAgIDAsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MCw0LDAsMCwwLDExNyw0LAorICAgIDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsMTEsMCwwLDAsMTE1LDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsMTAsMCwwLDAsOTksOTcsOTksMTA0LAorICAgIDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDAsOTcsMTE2LDk3LDQwLAorICAgIDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKKyAgICA5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE1LDAsMCwwLAorICAgIDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTI1LAorICAgIDMsMCwwLDExNSwyLDAsMCwwLDAsOCwxMTcsMjgsMCwwLDAsODMsCisgICAgMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5OSw5Nyw5OSwKKyAgICAxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk5LDMsMCwwLDAsCisgICAgMCwwLDAsMCwzLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDEwLDAsMCwwLDExNiwwLDAsMTMwLDEsMCwxMDAsMSwwLDgzLDQwLAorICAgIDIsMCwwLDAsMTE3LDE1MSwwLDAsMCw3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LAorICAgIDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LAorICAgIDExNCwxMDUsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiw5NywzMiw0MCw5OCwxMjEsMTE2LDEwMSwKKyAgICAxMTUsNDEsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsMzIsNDAsOTcsMzIsMTE1LDExNiwxMTQsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywKKyAgICAzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwKKyAgICAxMTEsMTE5LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTksMTE0LDEwNSwxMTYsCisgICAgMTA1LDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwKKyAgICAxMDIsMTA1LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDc4LDQwLDEsMCwwLDAsMTE3LDE5LDAsMCwwLDc4LDExMSwxMTYsNzMsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCw0MCwzLAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNCwwLDAsCisgICAgMCwxMTIsOTcsMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDAsOTcsMTE2LDk3LDQwLDAsCisgICAgMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSwKKyAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsMTE1LAorICAgIDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywxMzUsMywwLDAsMTE1LDIsMCwwLDAsCisgICAgMCw2LDExNywyMSwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDksMCwwLDAsNDQsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDYyLDEsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMDgsMCwwLDEyNSwKKyAgICAyLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMywKKyAgICAwLDEyMSwxOSwwLDEyNCwwLDAsMTA2LDIsMCwxMjQsMywwLDEzMSwxLDAsCisgICAgMTI1LDQsMCw4NywxMTAsNTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDEwNiwKKyAgICAwLDEsMTI1LDUsMCwxLDEyMiwyNiwwLDExNiw0LDAsMTAwLDMsMCwxMDAsCisgICAgNCwwLDEyNCwxLDAsMTMxLDEsMSwxMjQsNSwwLDEzMCwyLDAsODcsODksCisgICAgMTAwLDIsMCwxMDAsMiwwLDEyNSw1LDAsMTI2LDUsMCw4OCwxMTAsMSwwLAorICAgIDg4LDExNiw1LDAsMTA2LDYsMCwxMjQsNCwwLDEzMSwxLDAsMTA2LDcsMCwKKyAgICAxMjUsNiwwLDEyMSwxOSwwLDEyNCwyLDAsMTA2LDgsMCwxMjQsNiwwLDEzMSwKKyAgICAxLDAsMTI1LDcsMCw4NywxMTAsNTgsMCw0LDExNiw5LDAsMTA3LDEwLDAsCisgICAgMTE0LDIwNCwwLDEsMTI1LDUsMCwxLDEyMiwyNiwwLDExNiw0LDAsMTAwLDUsCisgICAgMCwxMDAsNCwwLDEyNCwxLDAsMTMxLDEsMSwxMjQsNSwwLDEzMCwyLDAsCisgICAgODcsODksMTAwLDIsMCwxMDAsMiwwLDEyNSw1LDAsMTI2LDUsMCw4OCwxMTAsCisgICAgMSwwLDg4LDExNiw1LDAsMTA2LDEwLDAsMTAwLDIsMCwxMDAsNywwLDEzMSwKKyAgICAyLDAsMTI1LDgsMCwxMjEsMzAsMCwxMjQsOCwwLDEwNiwxMywwLDEyNCw0LAorICAgIDAsMTA2LDEzLDAsMTI0LDcsMCwxMDAsMSwwLDI1LDEzMSwxLDAsMTMxLDEsCisgICAgMCw4Myw4NywxMTAsNTgsMCw0LDExNiwxNCwwLDEwNywxMCwwLDExNCw1NywxLAorICAgIDEsMTI1LDUsMCwxLDEyMiwyNiwwLDExNiw0LDAsMTAwLDYsMCwxMDAsNCwKKyAgICAwLDEyNCwxLDAsMTMxLDEsMSwxMjQsNSwwLDEzMCwyLDAsODcsODksMTAwLAorICAgIDIsMCwxMDAsMiwwLDEyNSw1LDAsMTI2LDUsMCw4OCwxMTAsMSwwLDg4LAorICAgIDEwMCwyLDAsODMsNDAsOCwwLDAsMCwxMTcsNTIsMCwwLDAsNjcsMTExLAorICAgIDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsCisgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LDExNiwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSw0NiwxMDUsMCwwLDAsMCw3OCwxMTcsMzksMCwwLDAsMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSwzMiwxMTAsMTExLDExNiwzMiw5NywxMTgsOTcsMTA1LDEwOCw5Nyw5OCwxMDgsCisgICAgMTAxLDMyLDExNiwxMDQsMTE0LDExMSwxMTcsMTAzLDEwNCwzMiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsCisgICAgMTE2LDk3LDQwLDQxLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNywyNSwwLAorICAgIDAsMCw3MCw5NywxMDUsMTA4LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDExNiwxMDEsCisgICAgOTksMTE2LDMyLDEwMSwxMTAsOTksMTExLDEwMCwxMDUsMTEwLDEwMywxMTcsMjgsMCwwLDAsCisgICAgNzAsOTcsMTA1LDEwOCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwKKyAgICAzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSw4NCw0MCwxNSwwLAorICAgIDAsMCwxMTcsOCwwLDAsMCwxMTYsMTExLDEwNywxMDEsMTEwLDEwNSwxMjIsMTAxLDExNywKKyAgICAxMiwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywxMTcsNywwLAorICAgIDAsMCw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDExLDAsMCwwLDczLDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNywzLDAsMCwwLDk1LDEwNSwKKyAgICAxMTEsMTE3LDcsMCwwLDAsNjYsMTIxLDExNiwxMDEsMTE1LDczLDc5LDExNyw4LDAsCisgICAgMCwwLDExNCwxMDEsOTcsMTAwLDEwOCwxMDUsMTEwLDEwMSwxMTcsMTUsMCwwLDAsMTAwLAorICAgIDEwMSwxMTYsMTAxLDk5LDExNiw5NSwxMDEsMTEwLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsMTE3LDExLAorICAgIDAsMCwwLDgzLDEyMSwxMTAsMTE2LDk3LDEyMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDI1LAorICAgIDAsMCwwLDczLDExMCw5OSwxMTQsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMDgsNzgsMTAxLAorICAgIDExOSwxMDgsMTA1LDExMCwxMDEsNjgsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTcsNCwwLDAsCisgICAgMCw3OCwxMTEsMTEwLDEwMSwxMTcsNCwwLDAsMCw4NCwxMTQsMTE3LDEwMSwxMTcsNiwKKyAgICAwLDAsMCwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNywxOCwwLDAsMCw4NSwxMTAsCisgICAgMTA1LDk5LDExMSwxMDAsMTAxLDY4LDEwMSw5OSwxMTEsMTAwLDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgNDAsOSwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsCisgICAgMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDExNyw4LDAsMCwwLAorICAgIDExNiwxMTEsMTA3LDEwMSwxMTAsMTA1LDEyMiwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE3LDEyLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsOTgsMTIxLDExNiwKKyAgICAxMDEsMTE1LDExNywzLDAsMCwwLDEwMSwxMjAsOTksMTE3LDEwLDAsMCwwLDExNCwKKyAgICAxMDEsOTcsMTAwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTE3LDgsMCwwLDAsMTAxLDExMCwKKyAgICA5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDExNywxNSwwLDAsMCwxMTAsMTAxLDExOSwxMDgsMTA1LAorICAgIDExMCwxMDEsOTUsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsNDAsMCwwLDAsMCw0MCwKKyAgICAwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTE1LAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwxNDQsMywwLDAsMTE1LDM4LDAsMCwwLDAsMiwKKyAgICAxMiwxLDE1LDEsMywxLDE5LDEsMTgsMSw5LDEsMzEsMSwxOCwxLAorICAgIDMsMSwxOSwxLDE4LDEsOSwxLDMxLDEsMTgsMSwzLDEsMzAsMSwKKyAgICAxOCwxLDksMSwxMTcsMjMsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwxMiwwLDAsMCw0NSwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsNTIsMiwwLDAsMTI0LDAsMCwxMDYsMCwwLAorICAgIDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEwMCwxMCwwLDEyNSwzLDAsMTIxLAorICAgIDE2LDAsMTE2LDIsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDQsMCw4NywxMTAsCisgICAgMjQsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDYzLDAsMSwxLDEsMTAwLAorICAgIDEwLDAsMTI1LDQsMCw4OSwxMTAsMTQsMSw4OCwxMjEsMTksMCwxMjQsMCwwLAorICAgIDEwNiw0LDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw1LDAsODcsMTEwLDE4LDAsCisgICAgNCwxMTYsMywwLDEwNywxMCwwLDExNCwxMDMsMCwxLDEsMSw4OSwxMTAsMjMwLAorICAgIDAsODgsMTE2LDUsMCwxMjQsNSwwLDEwMCwxLDAsMjUsMTMxLDEsMCwxMjUsCisgICAgMywwLDEyMSwxOSwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsNCwwLDEzMSwxLAorICAgIDAsMTI1LDYsMCw4NywxMTAsMTgsMCw0LDExNiw3LDAsMTA3LDEwLDAsMTE0LAorICAgIDE1OSwwLDEsMSwxLDg5LDExMCwxNzQsMCw4OCwxMjEsMjgsMCwxMjQsMCwwLAorICAgIDEwNiw4LDAsMTI0LDEsMCwxMjQsNiwwLDEyNCw0LDAsMTI0LDUsMCwxMzEsCisgICAgNCwwLDEyNSw3LDAsODcsMTEwLDI0LDAsNCwxMTYsOSwwLDExNiwxMCwwLAorICAgIDEwMiwyLDAsMTA3LDEwLDAsMTE0LDIxNCwwLDEsMSwxLDg5LDExMCwxMTksMCwKKyAgICA4OCwxMTYsMTEsMCwxMDAsMiwwLDEyNCw0LDAsMTI0LDIsMCwxMzEsMywwLAorICAgIDEsMTE2LDEyLDAsMTA2LDEzLDAsMTI0LDcsMCwxMzEsMSwwLDEyNSw4LDAsCisgICAgMTE2LDE0LDAsMTI0LDgsMCwxMTYsMTUsMCwxMzEsMiwwLDExNCwzOCwxLDExNiwKKyAgICAxNiwwLDEwNiwxNywwLDEyNCw4LDAsMTI0LDIsMCwxMzEsMiwwLDEsMTE2LAorICAgIDExLDAsMTAwLDMsMCwxMjQsNCwwLDEzMSwyLDAsMSwxMjQsOCwwLDgzLAorICAgIDEwMCw0LDAsMTI1LDksMCwxMTYsOSwwLDEyNCw5LDAsMTA2LDE4LDAsMTI0LAorICAgIDQsMCwxMzEsMSwwLDEwMCw1LDAsMTI0LDEsMCwxMDAsNiwwLDEyNCw0LAorICAgIDAsMTMxLDEsMiwxMzAsMSwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsMiwwLAorICAgIDEzMSwxLDAsMTI1LDEwLDAsMTE2LDE5LDAsMTE2LDIwLDAsMTI0LDEwLDAsMTI0LAorICAgIDIsMCwxMDAsNywwLDEwMCw4LDAsMTAwLDExLDAsMTMxLDQsMSwxMjUsMTEsCisgICAgMCwxMTYsMTEsMCwxMDAsMywwLDEyNCwyLDAsMTMxLDIsMCwxLDExNiwyMiwKKyAgICAwLDEwNiwyMywwLDEyLDExNCw0OCwyLDEyNCw0LDAsMTAwLDEwLDAsMTA3LDksCisgICAgMCwxMTQsNDgsMiwxMjQsMywwLDEwMCwxMCwwLDEwNyw5LDAsMTE0LDQ4LDIsCisgICAgMTE2LDI0LDAsMTE2LDI1LDAsMTMxLDEsMCwxMjUsNiwwLDEyNCw2LDAsMTA2LAorICAgIDI2LDAsMTE2LDI3LDAsMTI0LDMsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjQsCisgICAgNiwwLDEwNiwyNiwwLDExNiwyNywwLDExNiwyOCwwLDEyNCwxMCwwLDEzMSwxLAorICAgIDAsMTMxLDEsMCwxMzEsMSwwLDEsMTI0LDYsMCwxMDYsMjYsMCwxMTYsMTIsCisgICAgMCwxMDYsMjksMCwxMjQsMTEsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjEsMzYsCisgICAgMCwxMjQsMCwwLDEwNiwzMCwwLDEyNCwyLDAsMTI0LDQsMCwxMjQsNiwwLAorICAgIDEzMSwzLDAsMSwxMTYsMTEsMCwxMDAsOSwwLDEyNCw0LDAsMTMxLDIsMCwKKyAgICAxLDg3LDExMyw0OCwyLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNDQsMiwxLAorICAgIDEsMSw4OSwxMTMsNDgsMiw4OCwxMTAsMCwwLDEyNCwxMSwwLDgzLDQwLDEyLAorICAgIDAsMCwwLDExNywxOTAsMCwwLDAsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsCisgICAgMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLAorICAgIDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LDExNiw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsODIsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LAorICAgIDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsCisgICAgMzIsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDMyLDExNiwxMTEsMzIsOTgsCisgICAgMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNDYsMzIsODQsCisgICAgMTExLDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNDQsMzIsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LAorICAgIDExNiw5NywzMiwxMDksMTE3LDExNSwxMTYsMzIsOTcsMTA4LDExNSwxMTEsMzIsOTgsMTAxLDMyLAorICAgIDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMTE3LDUsMCwwLDAsMTA5LDExNiwxMDUsMTA5LDEwMSwKKyAgICAxMTcsMTMsMCwwLDAsMTIzLDEyNSwzMiwxMDksOTcsMTE2LDk5LDEwNCwxMDEsMTE1LDMyLAorICAgIDEyMywxMjUsMTE3LDE5LDAsMCwwLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLAorICAgIDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDEyNSwxMTcsMjEsMCwwLDAsNzgsCisgICAgMTExLDExMCw0NSw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTA1LAorICAgIDExMCwzMiwxMjMsMTI1LDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw0LDAsCisgICAgMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwMSwxMjAsMTAxLDk5LDExNywKKyAgICAxMiwwLDAsMCwxMDAsMTExLDExMCwxMTYsOTUsMTA1LDExMCwxMDQsMTAxLDExNCwxMDUsMTE2LAorICAgIDExNywxMCwwLDAsMCwxMTksMTE0LDExMSwxMTYsMTAxLDMyLDEyMywzMywxMTQsMTI1LDc4LAorICAgIDg0LDQwLDMxLDAsMCwwLDExNywxMiwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDIsCisgICAgMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsCisgICAgMTE3LDE3LDAsMCwwLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTE3LDE5LDAsMCwwLDc4LDExMSwxMTYsNzMsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTAsCisgICAgMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDExNywzLDAsCisgICAgMCwwLDEwNSwxMTAsMTE2LDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDEwMCw5NywKKyAgICAxMTYsOTcsMTE3LDcsMCwwLDAsNzMsNzksNjksMTE0LDExNCwxMTEsMTE0LDExNywyMCwKKyAgICAwLDAsMCw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDk4LAorICAgIDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwxMTcsOCwwLDAsMCw2OSw3OSw3MCw2OSwKKyAgICAxMTQsMTE0LDExMSwxMTQsMTE3LDE2LDAsMCwwLDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsCisgICAgMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNyw3LDAsMCwwLDEwOSw5NywKKyAgICAxMTQsMTE1LDEwNCw5NywxMDgsMTE3LDUsMCwwLDAsMTA4LDExMSw5NywxMDAsMTE1LDExNywKKyAgICAxMCwwLDAsMCwxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDExNywxMCwKKyAgICAwLDAsMCw5NSw5OSwxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE3LDQsMCwKKyAgICAwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDE2LDAsMCwwLDk1LDEwMiwxMDUsMTIwLDk1LAorICAgIDk5LDExMSw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDYsMCwwLDAsCisgICAgMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsMjUsMCwwLDAsOTUsOTksOTcsMTA4LDEwOCwKKyAgICA5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwKKyAgICAxMTEsMTE4LDEwMSwxMDAsMTE3LDcsMCwwLDAsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsCisgICAgMTE3LDQsMCwwLDAsODQsMTE0LDExNywxMDEsMTE3LDMsMCwwLDAsMTE1LDEyMSwKKyAgICAxMTUsMTE3LDE5LDAsMCwwLDEwMCwxMTEsMTEwLDExNiw5NSwxMTksMTE0LDEwNSwxMTYsMTAxLAorICAgIDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNyw5LDAsMCwwLDk4LDEyMSwKKyAgICAxMTYsMTAxLDk3LDExNCwxMTQsOTcsMTIxLDExNywxMiwwLDAsMCw5NSw3Nyw2NSw3MSwKKyAgICA3Myw2Nyw5NSw2Niw4OSw4NCw2OSw4MywxMTcsNiwwLDAsMCwxMDEsMTIwLDExNiwKKyAgICAxMDEsMTEwLDEwMCwxMTcsNywwLDAsMCw5NSwxMTksOTUsMTA4LDExMSwxMTAsMTAzLDExNywKKyAgICAzLDAsMCwwLDEwOCwxMDEsMTEwLDExNyw1LDAsMCwwLDEwMCwxMTcsMTA5LDExMiwKKyAgICAxMTUsMTE3LDE1LDAsMCwwLDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwKKyAgICAxMDEsOTksMTExLDEwMCwxMDEsNDAsMTIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LAorICAgIDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMTcsMTEsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICAxMTcsMTIsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDksMTE2LDEwNSwxMDksCisgICAgMTAxLDExNywxMywwLDAsMCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCwxMTcsMiwwLDAsMCwxMTUsMTE2LDExNyw0LDAsMCwwLDEwMCwKKyAgICA5NywxMTYsOTcsMTE3LDEwLDAsMCwwLDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDAsOTcsCisgICAgMTE2LDk3LDExNyw1LDAsMCwwLDEwMiwxMTEsMTE3LDExMCwxMDAsMTE3LDMsMCwwLAorICAgIDAsMTA5LDExNSwxMDMsMTE3LDEyLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsCisgICAgOTgsMTIxLDExNiwxMDEsMTE1LDExNywxMSwwLDAsMCw5OSwxMTEsMTAwLDEwMSw5NSwxMTEsCisgICAgOTgsMTA2LDEwMSw5OSwxMTYsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwxNjYsMywKKyAgICAwLDAsMTE1LDk4LDAsMCwwLDAsNywxNSwxLDYsMSwzLDEsMTYsCisgICAgMSwxMywxLDExLDIsMywxLDE5LDEsMTMsMSw1LDIsMTYsMSwzLAorICAgIDEsMTksMSwxMywxLDUsMiwzLDEsMTIsMSwzLDEsMTMsMSwxOSwKKyAgICAxLDUsMiw5LDEsNywxLDE1LDEsMTUsMSwxNiwxLDYsMSw3LAorICAgIDEsNCwyLDYsMSwxOCwxLDE1LDEsMTUsMSw2LDEsMTIsMSw5LAorICAgIDEsMTMsMSwyMiwxLDEyLDEsMTIsMSwxOSwxLDI1LDEsMjIsMSwzLAorICAgIDEsMTksMSwxNywxLDEzLDEsOCwxLDExNywyMSwwLDAsMCw4MywxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LAorICAgIDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAorICAgIDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEyNCwwLDAsCisgICAgMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsODMsNDAsMSwwLDAsMCwxMTcsCisgICAgMCwxLDAsMCw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3NiwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODIsMTAxLDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMTE1LDMyLDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDUsMTExLDExMCw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksCisgICAgMTAxLDMyLDk3LDExMCwxMDAsMzIsODIsMTAxLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMzIsMTE2LDExMSwKKyAgICAzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTA4LAorICAgIDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwOCwxMTEsOTcsMTAwLDMyLAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsMzIsODUsMTE1LDEwMSwKKyAgICAzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwNSwxMTUsMzIsCisgICAgMTAwLDEwNSw5OSwxMTYsOTcsMTE2LDEwMSwxMDAsMzIsOTgsMTIxLDMyLDExOSwxMDQsMTAxLDExNiwKKyAgICAxMDQsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMDMsMTAxLDExNiw5NSwKKyAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMTcsMTE1LDEwMSwxMTUsNDcsMTE5LDExNCwxMDUsMTE2LDEwMSwxMTUsCisgICAgMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsNDAsMSwwLDAsMCwxMTcsMTIsMCwwLDAsOTUsMTA4LAorICAgIDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMiwwLDAsMCwxMTcsCisgICAgNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsCisgICAgMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDIyOCwzLDAsMCwxMTUsMiwwLDAsMCwwLDgsMTE3LDI0LDAsMCwKKyAgICAwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSwKKyAgICA5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsNDAsMTAsMCwwLDAsMTE3LAorICAgIDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwKKyAgICAwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNywxMiwwLDAsMCwKKyAgICA5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLAorICAgIDAsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwxMTcsMTAsMCwwLDAsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDExNywxNSwwLDAsMCw5NSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNyw4LAorICAgIDAsMCwwLDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMTE3LDEwLDAsMCwwLAorICAgIDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTE3LDgsMCwwLDAsMTAzLAorICAgIDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE3LDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwKKyAgICAwLDk1LDk1LDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLAorICAgIDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKKyAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMiwwLDAsMCw4MywxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEwNSwzLDAsMCwxMTUsMTQsMCwwLAorICAgIDAsMTYsMiwxMiw2LDEyLDEyLDEyLDEwLDEyLDksMTIsMjIsMTIsNjIsMTE3LAorICAgIDEyLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNCwwLDAsCisgICAgMCwyLDAsMCwwLDExNSw5MiwwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLAorICAgIDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLAorICAgIDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDEsNSwwLDEzNSwKKyAgICAwLDAsMTAyLDEsMCwxMDAsNCwwLDEwMCw1LDAsMTM0LDAsMCwxMzEsMSwKKyAgICAwLDkwLDYsMCwxMDEsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLAorICAgIDEzMSwxLDAsOTAsNywwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLDkwLAorICAgIDgsMCwxMzUsMCwwLDgzLDQwLDEwLDAsMCwwLDExNywxMCwwLDAsMCwKKyAgICA3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDEwMywwLDAsMCw2NiwKKyAgICA5NywxMTUsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLAorICAgIDk5LDEwOCw5NywxMTUsMTE1LDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTA5LDExMiwxMDgsCisgICAgMTAxLDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCwzMiwxMTIsMTE0LDExMSwxMTYsMTExLDk5LDExMSwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKKyAgICAxMDAsMTE1LDMyLDExNiwxMDQsOTcsMTE2LDEwLDMyLDMyLDMyLDMyLDExNCwxMDEsMTEzLDExNywKKyAgICAxMDUsMTE0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsCisgICAgMTE3LDExNSw5NywxMDMsMTAxLDQ2LDk5LDMsMCwwLDAsMCwwLDAsMCwzLAorICAgIDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwwLAorICAgIDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTI0LDIsMCwxMjQsMCwwLDk1LAorICAgIDEsMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDc1LDAsMCwwLAorICAgIDY3LDk3LDk5LDEwNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsMTEwLDk3LDEwOSwxMDEsMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsCisgICAgMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDIsCisgICAgMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw3OCw0MCwyLDAsMCwKKyAgICAwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLDExMiwKKyAgICA5NywxMTYsMTA0LDQwLDMsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsCisgICAgMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwKKyAgICAwLDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwKKyAgICAyNDQsMywwLDAsMTE1LDQsMCwwLDAsMCwzLDksMSwxMTcsMTksMCwKKyAgICAwLDAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwKKyAgICAxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDIyLDAsMCwwLDExNiwKKyAgICAwLDAsMTE2LDEsMCwxMjQsMCwwLDEzMSwyLDAsMTA2LDIsMCwxMjQsMSwKKyAgICAwLDEzMSwxLDAsODMsNDAsMSwwLDAsMCwxMTcsMjYsMCwwLDAsNzYsCisgICAgMTExLDk3LDEwMCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDIsMTE0LDExMSwKKyAgICAxMDksMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDQwLDMsMCwwLDAsMTE3LDUsCisgICAgMCwwLDAsMTE1LDExNywxMTIsMTAxLDExNCwxMTcsMTAsMCwwLDAsNzAsMTA1LDEwOCwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwyLDAsMCwwLDExNyw0LDAsMCwKKyAgICAwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LAorICAgIDEwOSwxMDEsNDAsMSwwLDAsMCwxMTcsOSwwLDAsMCw5NSw5NSw5OSwxMDgsCisgICAgOTcsMTE1LDExNSw5NSw5NSw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLAorICAgIDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjUwLDMsMCwwLAorICAgIDExNSwyLDAsMCwwLDAsNSwxMTcsMjIsMCwwLDAsNzAsMTA1LDEwOCwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDcsMCwwLDAsMTI0LDAsMCwxMDYsCisgICAgMCwwLDgzLDQwLDEsMCwwLDAsMTE3LDU4LDAsMCwwLDgyLDEwMSwxMTYsCisgICAgMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwKKyAgICA5NywxMTUsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsNDAsMSwwLDAsMCwxMTcsNCwwLDAsCisgICAgMCwxMTIsOTcsMTE2LDEwNCw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwKKyAgICAxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTIsMCwwLAorICAgIDAsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDEsNCwwLAorICAgIDAsMTE1LDIsMCwwLDAsMCwzLDExNywyMywwLDAsMCw3MCwxMDUsMTA4LAorICAgIDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLAorICAgIDExMCw5NywxMDksMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwKKyAgICAwLDgsMCwwLDAsNjcsMCwwLDAsMTE1LDQxLDAsMCwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMjQsMSwwLDEwMCwxLDAsMTMxLDIsMCwxNDMsMTcsMCwKKyAgICAxMjUsMiwwLDEyNCwyLDAsMTA2LDIsMCwxMzEsMCwwLDgzLDg3LDEwMCwyLAorICAgIDAsODEsODgsMTAwLDIsMCw4Myw0MCwzLDAsMCwwLDExNywzOSwwLDAsCisgICAgMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCw5NywxMTYsOTcsCisgICAgMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExMiw5NywxMTYsMTA0LDMyLDk3LDExNSwzMiwxMTQsOTcsCisgICAgMTE5LDMyLDk4LDEyMSwxMTYsMTAxLDExNSw0NiwxMTcsMSwwLDAsMCwxMTQsNzgsNDAsCisgICAgMywwLDAsMCwxMTcsMywwLDAsMCw5NSwxMDUsMTExLDExNyw2LDAsMCwKKyAgICAwLDcwLDEwNSwxMDgsMTAxLDczLDc5LDExNyw0LDAsMCwwLDExNCwxMDEsOTcsMTAwLAorICAgIDQwLDMsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LAorICAgIDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwMiwxMDUsMTA4LDEwMSwKKyAgICA0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLAorICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwKKyAgICAwLDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNiw0LDAsMCwxMTUsNCwwLAorICAgIDAsMCwwLDIsMjEsMSwxMTcsMTksMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzYsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDAsOSwKKyAgICAwLDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwKKyAgICAxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LAorICAgIDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LAorICAgIDExNyw3LDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsMTE3LDgsMCwwLAorICAgIDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDExNywxMSwwLDAsMCw5NSw5OSwKKyAgICAxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSwxMTcsMTEsMCwwLDAsMTA4LDExMSwKKyAgICA5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDEyLDAsMCwwLDEwMywxMDEsCisgICAgMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTcsOCwwLDAsMCwxMDMsCisgICAgMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwKKyAgICAwLDk1LDk1LDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLAorICAgIDQwLDEsMCwwLDAsMTE3LDksMCwwLDAsOTUsOTUsOTksMTA4LDk3LDExNSwKKyAgICAxMTUsOTUsOTUsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMjM5LDMsMCwwLDExNSwxMCwwLDAsMCwxNiwzLDYsCisgICAgMiwxMiw2LDI0LDcsMTgsNSwxMTcsMTAsMCwwLDAsNzAsMTA1LDEwOCwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDEsMCwwLDAsMCwwLDAsMCwxLAorICAgIDAsMCwwLDQsMCwwLDAsNjYsMCwwLDAsMTE1LDY4LDAsMCwwLAorICAgIDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCisgICAgMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCisgICAgNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwKKyAgICAwLDEwMCw3LDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDEsOTAsNiwwLAorICAgIDEwMCwxMCwwLDgzLDQwLDExLDAsMCwwLDExNywxNiwwLDAsMCw4MywxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNyw2MiwKKyAgICAwLDAsMCw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsCisgICAgMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw4MywxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExNywxMTUsMTA1LDExMCwxMDMsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LAorICAgIDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDM5LDAsMCwwLDExNiwwLDAsMTA2LDEsCisgICAgMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMDUsMiwwLDEyNCwyLDAsCisgICAgMTA2LDIsMCwxMDAsMSwwLDU0LDEyNCwyLDAsMTA2LDMsMCwxMDAsMiwwLAorICAgIDU0LDgzLDQwLDMsMCwwLDAsMTE3LDMzLDAsMCwwLDgyLDEwMSwxMTYsMTE3LAorICAgIDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsOTcsMTAwLDk3LDExNiw5NywzMiwKKyAgICAxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCw0NiwxMTcsNSwwLAorICAgIDAsMCwxMDksMTE2LDEwNSwxMDksMTAxLDExNyw0LDAsMCwwLDExNSwxMDUsMTIyLDEwMSwKKyAgICA0MCw0LDAsMCwwLDExNywzLDAsMCwwLDk1LDExMSwxMTUsMTE3LDQsMCwKKyAgICAwLDAsMTE1LDExNiw5NywxMTYsMTE3LDgsMCwwLDAsMTE1LDExNiw5NSwxMDksMTE2LAorICAgIDEwNSwxMDksMTAxLDExNyw3LDAsMCwwLDExNSwxMTYsOTUsMTE1LDEwNSwxMjIsMTAxLDQwLAorICAgIDMsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsCisgICAgMCwwLDExMiw5NywxMTYsMTA0LDExNywyLDAsMCwwLDExNSwxMTYsNDAsMCwwLAorICAgIDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDE2LDQsMCwwLDExNSw0LDAsMCwKKyAgICAwLDAsMiwxNSwxLDExNywyNywwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDExNSwxMTYsOTcsMTE2LDExNSw5OSw0LDAsMCwwLDAsMCwwLDAsNSwwLAorICAgIDAsMCwxMywwLDAsMCw2NywwLDAsMCwxMTUsODEsMCwwLDAsMTIxLAorICAgIDIyLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMDYsMiwKKyAgICAwLDEyNSw0LDAsODcsMTEwLDI0LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwKKyAgICA0OCwwLDEsMSwxLDEwMCwxLDAsMTI1LDQsMCw4OSwxMTAsMSwwLDg4LAorICAgIDEyNCw0LDAsMTAwLDIsMCw3OSwxMjUsNCwwLDEyNCwwLDAsMTA2LDQsMCwKKyAgICAxMjQsMiwwLDEyNCwzLDAsMTAwLDMsMCwxMjQsNCwwLDEzMSwyLDEsODMsCisgICAgNDAsNCwwLDAsMCw3OCwxMDUsMTgyLDEsMCwwLDEwNSwxMjgsMCwwLDAsCisgICAgMTE3LDUsMCwwLDAsOTUsMTA5LDExMSwxMDAsMTAxLDQwLDUsMCwwLDAsMTE3LAorICAgIDMsMCwwLDAsOTUsMTExLDExNSwxMTcsNCwwLDAsMCwxMTUsMTE2LDk3LDExNiwKKyAgICAxMTcsNywwLDAsMCwxMTUsMTE2LDk1LDEwOSwxMTEsMTAwLDEwMSwxMTcsNywwLDAsCisgICAgMCw3OSw4Myw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDgsMCwwLDAsMTE1LDEwMSwxMTYsCisgICAgOTUsMTAwLDk3LDExNiw5Nyw0MCw1LDAsMCwwLDExNyw0LDAsMCwwLDExNSwKKyAgICAxMDEsMTA4LDEwMiwxMTcsMTEsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCwxMTcsMTMsMCwwLDAsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsMTE3LDQsMCwwLDAsMTAwLDk3LDExNiw5NywxMTcsNCwKKyAgICAwLDAsMCwxMDksMTExLDEwMCwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsMTUsMCwwLDAsOTUsOTksOTcsOTksMTA0LDEwMSw5NSw5OCwKKyAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwyMSw0LDAsMCwxMTUsMTIsMCwwLDAsCisgICAgMCwyLDMsMSwyMiwxLDEzLDEsMTEsMywxMCwxLDExNywzMiwwLDAsCisgICAgMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ2LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwKKyAgICAxMDEsMTE3LDUsMCwwLDAsOTUsMTA5LDExMSwxMDAsMTAxLDEwNSwxODIsMSwwLDAsCisgICAgOTksMywwLDAsMCwxLDAsMCwwLDksMCwwLDAsMTgsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDUzLDEsMCwwLDExNiwwLDAsMTI0LDEsMCwKKyAgICAxMzEsMSwwLDkyLDIsMCwxMjUsNCwwLDEyNSw1LDAsMTAzLDAsMCwxMjUsCisgICAgNiwwLDEyMCw1NCwwLDEyNCw0LDAsMTE0LDgwLDAsMTE2LDEsMCwxMjQsNCwKKyAgICAwLDEzMSwxLDAsMTIsMTE0LDgwLDAsMTE2LDAsMCwxMjQsNCwwLDEzMSwxLAorICAgIDAsOTIsMiwwLDEyNSw0LDAsMTI1LDcsMCwxMjQsNiwwLDEwNiwyLDAsCisgICAgMTI0LDcsMCwxMzEsMSwwLDEsMTEzLDI3LDAsODcsMTIwLDEzMiwwLDExNiwzLAorICAgIDAsMTI0LDYsMCwxMzEsMSwwLDY4LDkzLDExOCwwLDEyNSw3LDAsMTE2LDQsCisgICAgMCwxMjQsNCwwLDEyNCw3LDAsMTMxLDIsMCwxMjUsNCwwLDEyMSwxNywwLAorICAgIDExNiw1LDAsMTA2LDYsMCwxMjQsNCwwLDEzMSwxLDAsMSw4NywxMTMsOTQsCisgICAgMCw0LDExNiw3LDAsMTA3LDEwLDAsMTE0LDE1NSwwLDEsMSwxLDExOSw5NCwKKyAgICAwLDg5LDExMyw5NCwwLDQsMTE2LDgsMCwxMDcsMTAsMCwxMTQsMjExLDAsMSwKKyAgICAxMjUsOCwwLDEsMTIyLDI1LDAsMTE2LDksMCwxMDAsMSwwLDEyNCw0LDAsCisgICAgMTI0LDgsMCwxMzEsMywwLDEsMTAwLDIsMCw4Myw4Nyw4OSwxMDAsMiwwLAorICAgIDEwMCwyLDAsMTI1LDgsMCwxMjYsOCwwLDg4LDExMyw5NCwwLDg4LDExMyw5NCwKKyAgICAwLDg3LDEyMSwzMywwLDExNiwxMCwwLDEyNCwxLDAsMTI0LDIsMCwxMjQsMywKKyAgICAwLDEzMSwzLDAsMSwxMTYsOSwwLDEwMCwzLDAsMTI0LDEsMCwxMzEsMiwKKyAgICAwLDEsODcsMTEwLDUzLDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCw0OCwxLAorICAgIDEsMTI1LDgsMCwxLDEyMiwyMSwwLDExNiw5LDAsMTAwLDEsMCwxMjQsMSwKKyAgICAwLDEyNCw4LDAsMTMxLDMsMCwxLDg3LDg5LDEwMCwyLDAsMTAwLDIsMCwKKyAgICAxMjUsOCwwLDEyNiw4LDAsODgsMTEwLDEsMCw4OCwxMDAsMiwwLDgzLDQwLAorICAgIDQsMCwwLDAsMTE3LDI3LDAsMCwwLDg3LDExNCwxMDUsMTE2LDEwMSwzMiw5OCwKKyAgICAxMjEsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiw5NywzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSw0NiwxMTcsMjcsMCwwLDAsOTksMTExLDExNywxMDgsMTAwLDMyLDExMCwKKyAgICAxMTEsMTE2LDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw1OCwzMiwKKyAgICAxMjMsMzMsMTE0LDEyNSw3OCwxMTcsMTIsMCwwLDAsOTksMTE0LDEwMSw5NywxMTYsMTAxLAorICAgIDEwMCwzMiwxMjMsMzMsMTE0LDEyNSw0MCwxMSwwLDAsMCwxMTcsMTEsMCwwLDAsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExMiwxMDgsMTA1LDExNiwxMTcsMTEsMCwwLDAsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCwxMTcsNiwwLDAsMCwKKyAgICA5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDExNyw4LDAsMCwwLDExNCwxMDEsMTE4LDEwMSwxMTQsCisgICAgMTE1LDEwMSwxMDAsMTE3LDEwLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNiwxMTEsCisgICAgMTA1LDExMCwxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw1LDAsMCwwLDEwOSwKKyAgICAxMDcsMTAwLDEwNSwxMTQsMTE3LDE1LDAsMCwwLDcwLDEwNSwxMDgsMTAxLDY5LDEyMCwxMDUsCisgICAgMTE1LDExNiwxMTUsNjksMTE0LDExNCwxMTEsMTE0LDExNyw3LDAsMCwwLDc5LDgzLDY5LAorICAgIDExNCwxMTQsMTExLDExNCwxMTcsMTYsMCwwLDAsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwKKyAgICAxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE3LDEzLDAsMCwwLDk1LDExOSwKKyAgICAxMTQsMTA1LDExNiwxMDEsOTUsOTcsMTE2LDExMSwxMDksMTA1LDk5LDQwLDksMCwwLDAsCisgICAgMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDExMiw5NywKKyAgICAxMTYsMTA0LDExNyw0LDAsMCwwLDEwMCw5NywxMTYsOTcsMTE3LDUsMCwwLDAsCisgICAgOTUsMTA5LDExMSwxMDAsMTAxLDExNyw2LDAsMCwwLDExMiw5NywxMTQsMTAxLDExMCwxMTYsCisgICAgMTE3LDgsMCwwLDAsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNywxMCwwLAorICAgIDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTIsOTcsMTE0LDExNiwxMTUsMTE3LDQsMCwwLAorICAgIDAsMTEyLDk3LDExNCwxMTYsMTE3LDMsMCwwLDAsMTAxLDEyMCw5OSw0MCwwLDAsCisgICAgMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDExNSwxMDEsCisgICAgMTE2LDk1LDEwMCw5NywxMTYsOTcsMzIsNCwwLDAsMTE1LDM4LDAsMCwwLDAsCisgICAgMiwxOCwxLDYsMiwyMiwxLDE4LDEsMTcsMiwxOSwxLDE1LDEsMywKKyAgICAxLDE3LDEsMTMsMiw3LDEsMTgsMywxNiwxLDI3LDEsMywxLDE2LAorICAgIDEsMTcsMSwxOCwyLDExNywyNSwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMDEsMTE2LDk1LDEwMCwKKyAgICA5NywxMTYsOTcsNzgsNDAsNywwLDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwKKyAgICAxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LAorICAgIDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksCisgICAgOTUsOTUsMTE3LDEwLDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LAorICAgIDExNSwxMTcsMTUsMCwwLDAsOTUsOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwxMTcsOCwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDAsOTcsCisgICAgMTE2LDk3LDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsCisgICAgOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCisgICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCisgICAgMTEyLDYyLDExNywxNiwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyLDQsMCwwLDExNSw4LDAsMCwwLAorICAgIDE2LDIsNiwyLDEyLDUsMTIsMTEsMTE3LDE2LDAsMCwwLDgzLDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NiwwLAorICAgIDAsMCwxMTUsNjIsMCwwLDAsMTI0LDAsMCw2OSwxMDEsMCwwLDkwLDEsCisgICAgMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLAorICAgIDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwKKyAgICAwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsCisgICAgMCwxMDAsOCwwLDgzLDQwLDksMCwwLDAsMTE3LDIwLDAsMCwwLDgzLAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDExNyw0NSwwLDAsMCw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTE5LAorICAgIDEwNCwxMDUsOTksMTA0LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMTE1LDMyLDExNSwxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMTUsNDYsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMTksMCwwLDAsMTI0LAorICAgIDAsMCwxMDYsMCwwLDEyNCwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzMSwxLAorICAgIDEsODMsNDAsMywwLDAsMCw3OCwxMTcsMTAsMCwwLDAsMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsODQsNDAsMiwwLDAsMCwxMTcsMTIsMCwKKyAgICAwLDAsOTUsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDQsCisgICAgMCwwLDAsODQsMTE0LDExNywxMDEsNDAsMiwwLDAsMCwxMTcsNCwwLDAsCisgICAgMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywKKyAgICAxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLAorICAgIDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDY1LDQsCisgICAgMCwwLDExNSwyLDAsMCwwLDAsMSwxMTcsMzIsMCwwLDAsODMsMTExLAorICAgIDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDYsMCwwLDAsNiwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTM4LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwKKyAgICAwLDEzMSwxLDAsMTI1LDIsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDIsMCwKKyAgICAxMzEsMSwwLDEyNSwzLDAsMTI0LDAsMCwxMDYsMiwwLDEyNCwxLDAsMTI0LAorICAgIDMsMCwxMjQsMiwwLDEwMCwwLDAsMTMxLDQsMCwxMjUsNCwwLDExNiw0LAorICAgIDAsMTA2LDUsMCwxMjQsNCwwLDEzMSwxLDAsMTI1LDUsMCwxMTYsNiwwLAorICAgIDEyNCw1LDAsMTE2LDcsMCwxMzEsMiwwLDExNCwxMDEsMCwxMTYsOCwwLDEwMCwKKyAgICAxLDAsMTI0LDIsMCwxMzEsMiwwLDEsMTI0LDUsMCw4MywxMTYsOSwwLAorICAgIDEwMCwyLDAsMTA2LDEwLDAsMTI0LDIsMCwxMzEsMSwwLDEwMCwzLDAsMTI0LAorICAgIDEsMCwxMDAsNCwwLDEyNCwyLDAsMTMxLDEsMiwxMzAsMSwwLDEwMCwwLAorICAgIDAsODMsNDAsNSwwLDAsMCw3OCwxMTcsMjEsMCwwLDAsOTksMTExLDEwMCwKKyAgICAxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsCisgICAgMTE0LDEyNSwxMTcsMjEsMCwwLDAsNzgsMTExLDExMCw0NSw5OSwxMTEsMTAwLDEwMSwzMiwKKyAgICAxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTA1LDExMCwzMiwxMjMsMTI1LDExNyw0LDAsMCwKKyAgICAwLDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDExLAorICAgIDAsMCwwLDExNywxMiwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsCisgICAgMTEwLDk3LDEwOSwxMDEsMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiwKKyAgICA5NywxMTcsMjAsMCwwLDAsOTUsOTgsMTIxLDExNiwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLAorICAgIDEwOSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTcsNCwwLDAsMCw3OCwKKyAgICAxMTEsMTEwLDEwMSwxMTcsNywwLDAsMCwxMDksOTcsMTE0LDExNSwxMDQsOTcsMTA4LDExNywKKyAgICA1LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDExNSwxMTcsMTAsMCwwLDAsMTA1LDExNSwKKyAgICAxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwxMTcsMTAsMCwwLDAsOTUsOTksMTExLAorICAgIDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDExNywxNiwwLDAsMCw5NSwxMTgsMTAxLDExNCwKKyAgICA5OCwxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTcsMTEsMCwwLAorICAgIDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDYsMCwwLAorICAgIDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiw0MCw2LDAsMCwwLDExNyw0LDAsMCwKKyAgICAwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDQsMCwwLDAsCisgICAgMTAwLDk3LDExNiw5NywxMTcsMTAsMCwwLDAsOTgsMTIxLDExNiwxMDEsMTE1LDk1LDEwMCwKKyAgICA5NywxMTYsOTcsMTE3LDUsMCwwLDAsMTAyLDExMSwxMTcsMTEwLDEwMCw0MCwwLDAsCisgICAgMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDEwMywxMDEsCisgICAgMTE2LDk1LDk5LDExMSwxMDAsMTAxLDY4LDQsMCwwLDExNSwxOCwwLDAsMCwwLAorICAgIDEsMTUsMSwxNSwxLDI0LDEsMTUsMSwxNSwxLDEzLDEsNCwyLDE4LAorICAgIDEsMTE3LDI5LDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsCisgICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LAorICAgIDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAorICAgIDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCwKKyAgICA4Myw0MCwyLDAsMCwwLDExNywzOSwwLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsCisgICAgMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwxMTQsMTAxLDMyLAorICAgIDEwNSwxMTUsMzIsMTEwLDExMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsCisgICAgMTAxLDQ2LDc4LDQwLDEsMCwwLDAsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwKKyAgICAxMDEsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LAorICAgIDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLAorICAgIDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCisgICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDEwMywxMDEsMTE2LAorICAgIDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsODAsNCwwLDAsMTE1LDIsMCwwLDAsCisgICAgMCwyLDExNywzMSwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsCisgICAgMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwKKyAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDc4LDQwLDcsMCwwLDAsMTE3LDgsMCwwLAorICAgIDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwxMTMsCisgICAgMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsNywwLDAsMCw5NSw5NSwKKyAgICAxMDAsMTExLDk5LDk1LDk1LDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsCisgICAgMTAwLDEwMSwxMTcsMTAsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk5LAorICAgIDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsMjAsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSwKKyAgICA3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjEsNCwwLDAsMTE1LDgsCisgICAgMCwwLDAsMTYsMiw2LDIsMTIsMywxMiwxMiwxMTcsMjAsMCwwLDAsCisgICAgODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLAorICAgIDAsNSwwLDAsMCw2NiwwLDAsMCwxMTUsMTA0LDAsMCwwLDEyNCwwLAorICAgIDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsCisgICAgMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwwLAorICAgIDEwMSw1LDAsMTAxLDYsMCwxMDEsNywwLDEwMCw0LDAsMTAwLDUsMCwxMzIsCisgICAgMCwwLDEzMSwxLDAsMTMxLDEsMCwxMzEsMSwwLDkwLDgsMCwxMDAsNiwKKyAgICAwLDEwMCw3LDAsMTMyLDAsMCw5MCw5LDAsMTAwLDgsMCwxMDAsOSwwLAorICAgIDEzMiwwLDAsOTAsMTAsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwwLDkwLAorICAgIDExLDAsMTAwLDEyLDAsODMsNDAsMTMsMCwwLDAsMTE3LDE5LDAsMCwwLAorICAgIDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDExNyw5MywwLDAsMCw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLAorICAgIDExMSwxMTQsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsOTksCisgICAgMTExLDExMCwxMTUsMTE2LDExNCwxMTcsOTksMTE2LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMDAsMTAxLAorICAgIDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTE5LDExMSwxMTQsMTA3LDMyLDExOSwKKyAgICAxMDUsMTE2LDEwNCwzMiw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDk5LDMsMCwwLDAsMCwwLDAsMCwzLDAsCisgICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwwLDEyNCwKKyAgICAxLDAsMTI0LDAsMCw5NSwwLDAsMTI0LDIsMCwxMjQsMCwwLDk1LDEsCisgICAgMCwxMDAsMCwwLDgzLDQwLDEsMCwwLDAsNzgsNDAsMiwwLDAsMCwKKyAgICAxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsCisgICAgMTE2LDEwNCw0MCwzLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwKKyAgICAxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsCisgICAgMTE2LDEwNCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwKKyAgICAwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LAorICAgIDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5Nyw0LDAsMCwxMTUsCisgICAgNCwwLDAsMCwwLDEsOSwxLDExNywyOCwwLDAsMCw2OSwxMjAsMTE2LAorICAgIDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDQsMCwwLDAsMTAsMCwwLDAsNjcsMCwwLDAsMTE1LDE3NSwKKyAgICAwLDAsMCwxMjQsMSwwLDExNiwwLDAsMTA2LDEsMCwxMDcsNiwwLDEyNSwKKyAgICAyLDAsMTIxLDEwNywwLDExNiwyLDAsMTE2LDMsMCwxMDYsNCwwLDEyNCwxLAorICAgIDAsMTI0LDAsMCwxMDYsNSwwLDEzMSwzLDAsMTI1LDMsMCwxMTYsNiwwLAorICAgIDEwMCwxLDAsMTI0LDAsMCwxMDYsNSwwLDEzMSwyLDAsMSwxMjQsMCwwLAorICAgIDEwNiw3LDAsMTI0LDEsMCwxMzEsMSwwLDExNCwxMTcsMCwxMTYsOCwwLDEyNCwKKyAgICAzLDAsMTAwLDIsMCwxMzEsMiwwLDEyLDExNCwxMTcsMCwxMTYsOSwwLDEyNCwKKyAgICAwLDAsMTA2LDUsMCwxMzEsMSwwLDEwMCwzLDAsMjUsMTAzLDEsMCwxMjQsCisgICAgMywwLDk1LDEwLDAsMTEwLDAsMCwxMjQsMywwLDgzLDg3LDExMCw0NiwwLAorICAgIDEsMSwxLDEyNCwyLDAsMTIsMTE0LDE2MywwLDEyNCwxLDAsMTE2LDAsMCwKKyAgICAxMDYsMSwwLDEwNyw2LDAsMTE0LDE2MywwLDExNiwwLDAsMTA2LDEsMCwxMjQsCisgICAgMSwwLDYxLDExMCwwLDAsMTMwLDAsMCw4OSwxMTAsMSwwLDg4LDEwMCw0LAorICAgIDAsODMsNDAsNSwwLDAsMCwxMTcsMjUsMCwwLDAsNzYsMTExLDk3LDEwMCwKKyAgICAzMiw5NywxMTAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNDYsMTE3LDMzLDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LAorICAgIDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDExNyw4LDAsMCwwLAorICAgIDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDEwNSwwLDAsMCwwLDc4LDQwLDExLAorICAgIDAsMCwwLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNyw3LDAsMCwwLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTcsMjUsMCwwLDAsOTUsOTksOTcsMTA4LAorICAgIDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLAorICAgIDEwOSwxMTEsMTE4LDEwMSwxMDAsMTE3LDQsMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDEyLAorICAgIDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksMTE3LAorICAgIDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDE2LDAsMCwwLDk1LDExOCwxMDEsCisgICAgMTE0LDk4LDExMSwxMTUsMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNywxMCwwLAorICAgIDAsMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsNywwLDAsCisgICAgMCwxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LDExNywxMSwwLDAsMCw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsMTE2LDExNyw4LDAsMCwwLDk1LDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDk1LDQwLDQsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LAorICAgIDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMTcsOSwwLDAsMCwxMDUsMTE1LDk1LDExNCwxMDEsMTA4LDExMSw5NywxMDAsMTE3LDYsCisgICAgMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTAxLDQsMCwwLDExNSwyNCwwLDAsMCwwLDUsCisgICAgMTUsMSwzLDEsOSwxLDE1LDEsMTYsMSwzMSwxLDI4LDEsOCwxLAorICAgIDMsMSwyMiwxLDEzLDEsMTE3LDMxLDAsMCwwLDY5LDEyMCwxMTYsMTAxLDExMCwKKyAgICAxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwKKyAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwKKyAgICAwLDAsMCwyLDAsMCwwLDQsMCwwLDAsMywwLDAsMCwxMTUsCisgICAgNDgsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwKKyAgICAxMDAsMSwwLDI1LDEzNywwLDAsMTE2LDIsMCwxMzUsMCwwLDEwMiwxLDAsCisgICAgMTAwLDIsMCwxMDAsMywwLDEzNCwwLDAsMTE2LDMsMCw2OCwxMzEsMSwwLAorICAgIDEzMSwxLDAsODMsNDAsNCwwLDAsMCwxMTcsNDksMCwwLDAsODIsMTAxLAorICAgIDExNiwxMTcsMTE0LDExMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ2LDEwNSwKKyAgICAxLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDQsMCwwLDAsNTEsMCwwLDAsMTE1LDMxLDAsMCwwLDEyNCwwLAorICAgIDAsOTMsMjEsMCwxMjUsMSwwLDEzNiwwLDAsMTAwLDAsMCwxMjQsMSwwLAorICAgIDIzLDEwNywyLDAsODYsMSwxMTMsMywwLDEwMCwxLDAsODMsNDAsMiwwLAorICAgIDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNzgsCisgICAgNDAsMCwwLDAsMCw0MCwyLDAsMCwwLDExNywyLDAsMCwwLDQ2LAorICAgIDQ4LDExNyw2LDAsMCwwLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDQwLDEsMCwwLAorICAgIDAsMTE3LDksMCwwLDAsMTAyLDEwNSwxMDgsMTAxLDk1LDExMCw5NywxMDksMTAxLDQwLAorICAgIDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsCisgICAgMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw5LDAsMCwwLDYwLDEwMywxMDEsMTEwLDEwMSwKKyAgICAxMjAsMTEyLDExNCw2MiwxMjIsNCwwLDAsMTE1LDIsMCwwLDAsNiwxLDExNywKKyAgICA0OSwwLDAsMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsCisgICAgMTAxLDEyMCwxMTIsMTE0LDYyLDQwLDQsMCwwLDAsMTE3LDExLDAsMCwwLDk1LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwxMTYsMTE3LDQsMCwwLDAsMTEyLAorICAgIDk3LDExNiwxMDQsMTE3LDMsMCwwLDAsOTcsMTEwLDEyMSwxMTcsMTgsMCwwLDAsCisgICAgNjksODgsODQsNjksNzgsODMsNzMsNzksNzgsOTUsODMsODUsNzAsNzAsNzMsODgsCisgICAgNjksODMsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsCisgICAgMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwKKyAgICAwLDAsNDAsMSwwLDAsMCwxMTcsOSwwLDAsMCwxMDIsMTA1LDEwOCwxMDEsCisgICAgOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKKyAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMCwwLDAsMCwxMDUsMTE1LDk1LDExMiwKKyAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTksNCwwLDAsMTE1LDYsMCwwLDAsMCwKKyAgICAyLDE5LDEsMTgsMSwxMTcsMzAsMCwwLDAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwKKyAgICAxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA1LDExNSwKKyAgICA5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLAorICAgIDAsMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDYzLDAsMCwwLAorICAgIDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDk3LAorICAgIDExMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLAorICAgIDMyLDk3LDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiw0Niw3OCwKKyAgICA0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDQwLDIsCisgICAgMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwKKyAgICAwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDk5LDExMSwKKyAgICAxMDAsMTAxLDEyNSw0LDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE3LDI4LDAsCisgICAgMCwwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwKKyAgICAwLDExNyw1MywwLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsCisgICAgMTAxLDMyLDk3LDExNSwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTEwLDExMSwzMiwxMTUsCisgICAgMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDQwLDEsMCwwLAorICAgIDAsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsNDAsMiwwLDAsMCwxMTcsCisgICAgNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsCisgICAgMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDEwLDAsMCwwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgMTI5LDQsMCwwLDExNSwyLDAsMCwwLDAsMiwxMTcsMzAsMCwwLDAsCisgICAgNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw3OCw0MCwKKyAgICAxMiwwLDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSwKKyAgICA5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsCisgICAgMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LAorICAgIDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsMTE3LDgsMCwKKyAgICAwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDExNywxMSwwLDAsMCw5NSwKKyAgICA5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSwxMTcsMTEsMCwwLDAsMTE1LAorICAgIDEwMSwxMTYsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNywxMCwwLDAsMCwxMTUsCisgICAgMTAxLDExNiw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxMSwwLDAsMCwxMDgsMTExLAorICAgIDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMTAsMCwwLDAsMTA1LDExNSwKKyAgICA5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsCisgICAgOTUsOTksMTExLDEwMCwxMDEsMTE3LDEwLDAsMCwwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNDAsMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsCisgICAgMTA4LDExMSw5OSw5NywxMDgsMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLAorICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDE5LDAsMCwwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LAorICAgIDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDg5LDQsMCwwLAorICAgIDExNSwxNiwwLDAsMCwxNiw2LDYsMiwxMiw0LDMsMSwzLDEsMjQsCisgICAgMTYsMTIsNiwxMiw0LDExNywxOSwwLDAsMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LAorICAgIDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSwxLDAsCisgICAgMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY2LDAsCisgICAgMCwwLDExNSwxMzQsMCwwLDAsMTI0LDAsMCw2OSwxMDEsMCwwLDkwLDEsCisgICAgMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLAorICAgIDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwKKyAgICAwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsCisgICAgMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsCisgICAgMTAwLDExLDAsMTMyLDAsMCw5MCw4LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLAorICAgIDAsMCw5MCw5LDAsMTAwLDE0LDAsMTAwLDE1LDAsMTMyLDAsMCw5MCwxMCwKKyAgICAwLDEwMCwxNiwwLDEwMCwxNywwLDEzMiwwLDAsOTAsMTEsMCwxMDAsMTgsMCwKKyAgICAxMDAsMTksMCwxMzIsMCwwLDkwLDEyLDAsMTAwLDIwLDAsODMsNDAsMjEsMCwKKyAgICAwLDAsMTE3LDE0LDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwKKyAgICAxMDEsODAsOTcsMTE2LDEwNCwxMTcsMzgsMSwwLDAsODIsMTAxLDExMiwxMTQsMTAxLDExNSwKKyAgICAxMDEsMTEwLDExNiwxMTUsMzIsOTcsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsCisgICAgMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDM5LDExNSwzMiwxMTIsOTcsMTE2LDEwNCw0NiwKKyAgICAzMiwzMiw3MywxMTYsMzIsMTE3LDExNSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsCisgICAgMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDEwNSwxMTYsMTE1LDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsOTcsMTEwLDEwMCwzMiwxMDIsMTE0LDExMSwKKyAgICAxMDksMzIsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTE2LDMyLDEwOCwxMTEsMTExLDEwNywxMTUsCisgICAgMzIsMTE3LDExMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDM5LDExNSwKKyAgICAxMCwzMiwzMiwzMiwzMiw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSw0NiwzMiwzMiwKKyAgICA4NywxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsOTksMTA0LDk3LDExMCwxMDMsMTAxLAorICAgIDExNSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsCisgICAgMTExLDExOSwxMTAsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDk5LDExMSwKKyAgICAxMDksMTEyLDExNywxMTYsMTAxLDEwMCw0NCwxMCwzMiwzMiwzMiwzMiwxMTcsMTE1LDEwNSwxMTAsCisgICAgMTAzLDMyLDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDMyLDMyLAorICAgIDcwLDExMSwxMTQsMzIsMTE2LDExMSwxMTIsNDUsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLAorICAgIDExNiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEyLDk3LDExNiwxMDQsMTAsCisgICAgMzIsMzIsMzIsMzIsMTA1LDExNSwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwKKyAgICA5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwyLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSw1MiwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsCisgICAgOTUsMCwwLDEyNCwyLDAsMTI0LDAsMCw5NSwxLDAsMTE2LDIsMCwxMjQsCisgICAgMCwwLDEwNiwzLDAsMTMxLDAsMCwxMzEsMSwwLDEyNCwwLDAsOTUsNCwKKyAgICAwLDEyNCwzLDAsMTI0LDAsMCw5NSw1LDAsMTAwLDAsMCw4Myw0MCwxLAorICAgIDAsMCwwLDc4LDQwLDYsMCwwLDAsMTE3LDUsMCwwLDAsOTUsMTEwLAorICAgIDk3LDEwOSwxMDEsMTE3LDUsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsMTE3LDUsMCwKKyAgICAwLDAsMTE2LDExNywxMTIsMTA4LDEwMSwxMTcsMTYsMCwwLDAsOTUsMTAzLDEwMSwxMTYsCisgICAgOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsMTcsMCwwLAorICAgIDAsOTUsMTA4LDk3LDExNSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCwxMTcsMTIsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsCisgICAgMTAwLDEwMSwxMTQsNDAsNCwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwKKyAgICAxMDIsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLAorICAgIDk3LDExNiwxMDQsMTE3LDExLDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLAorICAgIDEwMCwxMDEsMTE0LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwKKyAgICAwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LAorICAgIDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDE0MSw0LDAsMCwKKyAgICAxMTUsOCwwLDAsMCwwLDEsOSwxLDksMSwyMSwxLDExNywyMywwLAorICAgIDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsCisgICAgNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDUzLAorICAgIDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwwLDEwMCwxLDAsMTMxLAorICAgIDEsMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDIsCisgICAgMCwxMDAsMiwwLDEwNywyLDAsMTE0LDQzLDAsMTAwLDYsMCw4MywxMjQsMSwKKyAgICAwLDEwMCw1LDAsMTAyLDIsMCw4Myw0MCw3LDAsMCwwLDExNyw2MiwwLAorICAgIDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiwxMTYsMTE3LDExMiwxMDgsCisgICAgMTAxLDMyLDExMSwxMDIsMzIsNDAsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw0NSwxMTAsOTcsMTA5LDEwMSw0NCwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LAorICAgIDQ1LDExMiw5NywxMTYsMTA0LDQ1LDk3LDExNiwxMTYsMTE0LDQ1LDExMCw5NywxMDksMTAxLDQxLAorICAgIDExNywxLDAsMCwwLDQ2LDExNywwLDAsMCwwLDExNywzLDAsMCwwLAorICAgIDExNSwxMjEsMTE1LDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw4LDAsMCwKKyAgICAwLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDQwLDIsMCwwLDAsMTE3LDMsCisgICAgMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsCisgICAgMiwwLDAsMCwxMTcsNSwwLDAsMCw5NSwxMTAsOTcsMTA5LDEwMSwxMTcsMTAsCisgICAgMCwwLDAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsNDAsNCwwLAorICAgIDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDYsMCwwLDAsCisgICAgMTEyLDk3LDExNCwxMDEsMTEwLDExNiwxMTcsMywwLDAsMCwxMDAsMTExLDExNiwxMTcsMiwKKyAgICAwLDAsMCwxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDIzLDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsOTcsMTE0LDEwMSwKKyAgICAxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDk1LDExMCw5NywxMDksMTAxLDExNSwxNDcsNCwwLAorICAgIDAsMTE1LDgsMCwwLDAsMCwyLDI3LDEsMTIsMiw0LDMsMTE3LDM4LAorICAgIDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LAorICAgIDEwNCw0Niw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDMsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzgsCisgICAgMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEzMSwwLDAsOTIsMiwwLDEyNSwKKyAgICAxLDAsMTI1LDIsMCwxMTYsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwKKyAgICAwLDI1LDEyNCwyLDAsMTMxLDIsMCw4Myw0MCwxLDAsMCwwLDc4LDQwLAorICAgIDQsMCwwLDAsMTE3LDIzLDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsCisgICAgOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDk1LDExMCw5NywxMDksMTAxLDExNSwKKyAgICAxMTcsNywwLDAsMCwxMDMsMTAxLDExNiw5NywxMTYsMTE2LDExNCwxMTcsMywwLDAsCisgICAgMCwxMTUsMTIxLDExNSwxMTcsNywwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsCisgICAgNDAsMywwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDE4LAorICAgIDAsMCwwLDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDE0LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDk3LAorICAgIDExNiwxMTYsMTE0LDk1LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLAorICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDE2LDAsMCwwLDk1LDEwMywxMDEsMTE2LDk1LDExMiw5NywKKyAgICAxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMTU3LDQsMCwwLDExNSw0LDAsCisgICAgMCwwLDAsMSwxOCwxLDExNywzMSwwLDAsMCw5NSw3OCw5NywxMDksMTAxLAorICAgIDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsMTAzLDEwMSwxMTYsOTUsMTEyLAorICAgIDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAxMDMsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDAsMCwKKyAgICAxMzEsMSwwLDEyNSwxLDAsMTI0LDEsMCwxMjQsMCwwLDEwNiwyLDAsMTA3LAorICAgIDMsMCwxMTQsOTYsMCwxMjQsMCwwLDEwNiwzLDAsMTI0LDAsMCwxMDYsNCwKKyAgICAwLDEyNCwxLDAsMTMxLDIsMCw5MiwyLDAsMTI1LDIsMCwxMjUsMywwLAorICAgIDEyNCwyLDAsMTAwLDAsMCwxMDcsOCwwLDExNCw4NCwwLDEyNCwzLDAsMTI0LAorICAgIDAsMCw5NSw2LDAsMTEwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsMiwKKyAgICAwLDExMCwwLDAsMTI0LDAsMCwxMDYsNiwwLDgzLDQwLDEsMCwwLDAsCisgICAgNzgsNDAsNywwLDAsMCwxMTcsNSwwLDAsMCwxMTYsMTE3LDExMiwxMDgsMTAxLAorICAgIDExNywxNiwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LAorICAgIDk1LDExMiw5NywxMTYsMTA0LDExNywxNywwLDAsMCw5NSwxMDgsOTcsMTE1LDExNiw5NSwKKyAgICAxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDExNywxMiwwLDAsMCwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsNSwwLDAsCisgICAgMCw5NSwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsCisgICAgNSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw0MCw0LDAsMCwwLDExNyw0LAorICAgIDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsMTEsMCwwLDAsMTEyLDk3LDExNCwxMDEsCisgICAgMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsNiwwLDAsMCwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDExNyw4LDAsMCwwLDExMCwxMDEsMTE5LDk1LDExMiw5NywxMTYsMTA0LDQwLAorICAgIDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKKyAgICA5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEyLDAsMCwwLAorICAgIDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwxNjEsNCwwLDAsCisgICAgMTE1LDE0LDAsMCwwLDAsMiwxOCwxLDE1LDEsMjcsMywxMiwxLDEyLAorICAgIDEsMTIsMSwxMTcsMjcsMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAorICAgIDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsCisgICAgOTcsMTE2LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKKyAgICAyLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwwLAorICAgIDEyNCwwLDAsMTA2LDEsMCwxMzEsMCwwLDEzMSwxLDAsODMsNDAsMSwwLAorICAgIDAsMCw3OCw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDEwNSwxMTYsMTAxLAorICAgIDExNCwxMTcsMTIsMCwwLDAsOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywKKyAgICAxMTYsMTAxLDQwLDEsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLAorICAgIDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLAorICAgIDAsOTUsOTUsMTA1LDExNiwxMDEsMTE0LDk1LDk1LDE3Myw0LDAsMCwxMTUsMiwwLAorICAgIDAsMCwwLDEsMTE3LDIzLDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiwKKyAgICA5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDUsMTE2LDEwMSwxMTQsOTUsOTUsCisgICAgOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLAorICAgIDEwNiwxLDAsMTMxLDAsMCwxMzEsMSwwLDgzLDQwLDEsMCwwLDAsNzgsCisgICAgNDAsMiwwLDAsMCwxMTcsMywwLDAsMCwxMDgsMTAxLDExMCwxMTcsMTIsMCwKKyAgICAwLDAsOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDQwLDEsCisgICAgMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDQwLDAsMCwwLAorICAgIDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCisgICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDcsMCwwLDAsOTUsOTUsMTA4LAorICAgIDEwMSwxMTAsOTUsOTUsMTc2LDQsMCwwLDExNSwyLDAsMCwwLDAsMSwxMTcsCisgICAgMjIsMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywKKyAgICAxMTYsMTA0LDQ2LDk1LDk1LDEwOCwxMDEsMTEwLDk1LDk1LDk5LDEsMCwwLDAsMCwKKyAgICAwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsCisgICAgMTMxLDEsMCw4Myw0MCwyLDAsMCwwLDc4LDExNywyMCwwLDAsMCw5NSwKKyAgICA3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDAsMTIzLDMzLAorICAgIDExNCwxMjUsNDEsNDAsMiwwLDAsMCwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwKKyAgICAxMDksOTcsMTE2LDExNyw1LDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDQwLDEsMCwKKyAgICAwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDQwLDAsMCwwLDAsCisgICAgNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsOTUsOTUsMTE0LDEwMSwKKyAgICAxMTIsMTE0LDk1LDk1LDE3OSw0LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LAorICAgIDIzLDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsCisgICAgMTE2LDEwNCw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsMTYsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDEwNiwwLDAsMTMxLDAsCisgICAgMCwxMDcsNiwwLDgzLDQwLDEsMCwwLDAsNzgsNDAsMSwwLDAsMCwKKyAgICAxMTcsMTIsMCwwLDAsOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsCisgICAgMTAxLDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNywKKyAgICA0LDAsMCwwLDEwNSwxMTYsMTAxLDEwOSw0MCwwLDAsMCwwLDQwLDAsMCwKKyAgICAwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKKyAgICAxMTQsOTcsMTEyLDYyLDExNywxMiwwLDAsMCw5NSw5NSw5OSwxMTEsMTEwLDExNiw5NywKKyAgICAxMDUsMTEwLDExNSw5NSw5NSwxODIsNCwwLDAsMTE1LDIsMCwwLDAsMCwxLAorICAgIDExNywyNywwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLAorICAgIDk3LDExNiwxMDQsNDYsOTUsOTUsOTksMTExLDExMCwxMTYsOTcsMTA1LDExMCwxMTUsOTUsOTUsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMjAsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLAorICAgIDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEsMTAwLDAsMCw4Myw0MCwxLAorICAgIDAsMCwwLDc4LDQwLDIsMCwwLDAsMTE3LDUsMCwwLDAsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsMTE3LDYsMCwwLDAsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCw0MCwyLAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNCwwLDAsCisgICAgMCwxMDUsMTE2LDEwMSwxMDksNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsNiwwLDAsMCw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDE4NSw0LDAsMCwKKyAgICAxMTUsMiwwLDAsMCwwLDEsMTE3LDIxLDAsMCwwLDk1LDc4LDk3LDEwOSwKKyAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NywxMTIsMTEyLDEwMSwxMTAsCisgICAgMTAwLDc4LDQwLDEzLDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywKKyAgICAxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LAorICAgIDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwKKyAgICAxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsMTE3LDIzLDAsCisgICAgMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDExMCw5NywxMDksMTAxLDExNSwxMTcsMTYsMCwwLDAsOTUsMTAzLAorICAgIDEwMSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsMTIsCisgICAgMCwwLDAsOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDEwNSwxMTYsMTAxLDExNCw5NSw5NSwxMTcsNywwLDAsCisgICAgMCw5NSw5NSwxMDgsMTAxLDExMCw5NSw5NSwxMTcsOCwwLDAsMCw5NSw5NSwxMTQsCisgICAgMTAxLDExMiwxMTQsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDk5LDExMSwxMTAsMTE2LAorICAgIDk3LDEwNSwxMTAsMTE1LDk1LDk1LDExNyw2LDAsMCwwLDk3LDExMiwxMTIsMTAxLDExMCwKKyAgICAxMDAsNDAsMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSwKKyAgICA5NywxMDgsMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDE0LDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsCisgICAgODAsOTcsMTE2LDEwNCwxMzQsNCwwLDAsMTE1LDIwLDAsMCwwLDE2LDUsNiwKKyAgICAyLDEyLDYsMTIsMTAsMTIsNCwxMiwxMiwxMiwzLDEyLDMsMTIsMywxMiwKKyAgICAzLDExNywxNCwwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLAorICAgIDgwLDk3LDExNiwxMDQsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLAorICAgIDAsMywwLDAsMCw2NiwwLDAsMCwxMTUsNjgsMCwwLDAsMTI0LDAsCisgICAgMCw2OSwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwKKyAgICAwLDEwMCwyLDAsMTMyLDAsMCw5MCwzLDAsMTAxLDQsMCwxMDAsMywwLAorICAgIDEwMCw0LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwxMDEsNiwwLDEwMCwKKyAgICA1LDAsMTAwLDYsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNywwLDEwMCw3LAorICAgIDAsODMsNDAsOCwwLDAsMCwxMTcsMTUsMCwwLDAsNzgsOTcsMTA5LDEwMSwKKyAgICAxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsOTksNCwwLDAsMCwKKyAgICAwLDAsMCwwLDQsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsMjUsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTI0LDMsCisgICAgMCwxMzEsMywwLDEyNCwwLDAsOTUsMSwwLDEwMCwwLDAsODMsNDAsMSwKKyAgICAwLDAsMCw3OCw0MCwyLDAsMCwwLDExNywxNCwwLDAsMCw5NSw3OCwKKyAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsMTE3LDUsMCwwLAorICAgIDAsOTUsMTEyLDk3LDExNiwxMDQsNDAsNCwwLDAsMCwxMTcsNCwwLDAsMCwKKyAgICAxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwKKyAgICAwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDExLDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LAorICAgIDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwKKyAgICAxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKKyAgICAxMTIsNjIsMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDE5MCwKKyAgICA0LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LDI0LDAsMCwwLDc4LAorICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LAorICAgIDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsCisgICAgMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsCisgICAgMCwxMDAsMSwwLDEwNiwwLDAsMTI0LDEsMCwxMDYsMSwwLDEzMSwxLDAsCisgICAgODMsNDAsMiwwLDAsMCw3OCwxMTcsMjUsMCwwLDAsNjAsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsMzksMTIzLDEyNSwzOSwzMiw0MCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLAorICAgIDk3LDk5LDEwMSw0MSw2Miw0MCwyLDAsMCwwLDExNyw2LDAsMCwwLDEwMiwKKyAgICAxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsCisgICAgOTUsOTUsNDAsMiwwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LDExNywKKyAgICA2LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDAsMCwwLDAsNDAsCisgICAgMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwKKyAgICAxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDk1LDExNCwxMDEsMTEyLDExNCwxOTMsNCwwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICAyLDExNywyNywwLDAsMCw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwKKyAgICAxMTQsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMzIsMCwwLDAsMTE2LDAsMCwxMDAsMSwKKyAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMiwwLDEsMTI0LDAsMCwxMDYsMSwKKyAgICAwLDEyNCwxLDAsOTUsMiwwLDEyNCwxLDAsODMsNDAsMiwwLDAsMCwKKyAgICAxMTcsMjQsMCwwLDAsNzYsMTExLDk3LDEwMCwzMiw5NywzMiwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMTUsMTEyLDk3LDk5LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMTcsMzgsMCwKKyAgICAwLDAsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTEyLAorICAgIDk3LDExNiwxMDQsMzIsMTIzLDMzLDExNCwxMjUsNDAsMywwLDAsMCwxMTcsMTYsMCwKKyAgICAwLDAsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LAorICAgIDEwMywxMDEsMTE3LDUsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsMTE3LDgsMCwwLAorICAgIDAsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsNDAsMiwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDYsMCwwLDAsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsCisgICAgMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsCisgICAgMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTk3LDQsCisgICAgMCwwLDExNSw2LDAsMCwwLDAsMywxNiwxLDEyLDEsMTE3LDI3LDAsCisgICAgMCwwLDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQwLDgsCisgICAgMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsCisgICAgMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNywKKyAgICAxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwKKyAgICAxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsMTE3LDExLDAsCisgICAgMCwwLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNywxMSwwLAorICAgIDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsMTE3LDE3LDAsCisgICAgMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsMTE3LDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwKKyAgICAxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNywxNSwwLDAsMCw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxODksNCwwLDAsMTE1LDYsMCwwLDAsCisgICAgMTYsMSwxMiwzLDE4LDQsMTE3LDE1LDAsMCwwLDc4LDk3LDEwOSwxMDEsMTE1LAorICAgIDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDEsMCwwLDAsMCwKKyAgICAwLDAsMCwxLDAsMCwwLDQsMCwwLDAsNjYsMCwwLDAsMTE1LAorICAgIDExOSwwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLAorICAgIDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsMTAwLDIsMCwKKyAgICAxMDAsMywwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDQsMCwxMDAsCisgICAgNCwwLDEwMCw1LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDYsMCwxMDEsNCwKKyAgICAwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNywwLAorICAgIDEwMSw0LDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsMTMxLDEsMCw5MCwKKyAgICA4LDAsMTAxLDQsMCwxMDAsMTIsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMSwKKyAgICAwLDEzMSwxLDAsOTAsMTAsMCwxMDAsMTIsMCw4Myw0MCwxMywwLDAsMCwKKyAgICAxMTcsMTAsMCwwLDAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNywKKyAgICA2MiwwLDAsMCw3NywxMDEsMTE2LDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMDUsCisgICAgMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsCisgICAgMTA0LDMyLDk3LDExMCwxMDAsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDk1LDk1LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDk1LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwKKyAgICAxMTUsNDYsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsNTgsMCwwLDAsMTIwLDUxLDAsMTE2LAorICAgIDAsMCwxMDYsMSwwLDEwNiwyLDAsMTMxLDAsMCw2OCw5MywzNCwwLDEyNSwKKyAgICAxLDAsMTE2LDMsMCwxMjQsMSwwLDEwMCwxLDAsMTMxLDIsMCwxMTQsMTYsCisgICAgMCwxMjQsMSwwLDEwNiw0LDAsMTMxLDAsMCwxLDExMywxNiwwLDExMywxNiwKKyAgICAwLDg3LDEwMCwyLDAsODMsNDAsMywwLDAsMCwxMTcsMTI1LDAsMCwwLAorICAgIDY3LDk3LDEwOCwxMDgsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsCisgICAgOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw0MCw0MSwzMiwxMDksMTAxLDExNiwKKyAgICAxMDQsMTExLDEwMCwzMiwxMTEsMTEwLDMyLDk3LDEwOCwxMDgsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTAxLDExMCwxMTYsMTE0LDEyMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTUsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDExNiwxMTEsMTE0LDEwMSwxMDAsMzIsMTA1LDExMCwzMiwKKyAgICAxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDMyLDQwLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsCisgICAgMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw0MSw0NiwxMTcsMTcsMCwKKyAgICAwLDAsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwKKyAgICAxMDQsMTAxLDExNSw3OCw0MCw1LDAsMCwwLDExNywzLDAsMCwwLDExNSwxMjEsCisgICAgMTE1LDExNywxOSwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE3LDYsMCwwLDAsMTE4LDk3LAorICAgIDEwOCwxMTcsMTAxLDExNSwxMTcsNywwLDAsMCwxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LAorICAgIDExNywxNywwLDAsMCwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsMTE1LDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsCisgICAgOTksMTA4LDExNSwxMTcsNiwwLDAsMCwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwwLAorICAgIDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsCisgICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNywwLDAsMCwxMDUsCisgICAgMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LAorICAgIDIxMSw0LDAsMCwxMTUsNiwwLDAsMCwwLDQsMjIsMSwxNSwxLDExNywKKyAgICAyOCwwLDAsMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTA1LAorICAgIDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSwKKyAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxMiwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsOTQsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLAorICAgIDExNSwyOCwwLDExNiwyLDAsMTA2LDMsMCwxMDAsMSwwLDExNiw0LDAsMTMxLAorICAgIDIsMCwxLDExMCwwLDAsMTIwLDU5LDAsMTE2LDAsMCwxMDYsMSwwLDY4LAorICAgIDkzLDQ0LDAsMTI1LDIsMCwxMjEsMTQsMCwxMjQsMiwwLDEyNCwxLDAsMTMxLAorICAgIDEsMCw4Myw4NywxMTMsMzgsMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDgxLAorICAgIDAsMSwxLDEsMTE5LDM4LDAsODksMTEzLDM4LDAsODgsMTEzLDM4LDAsODcsCisgICAgMTAwLDIsMCw4MywxMDAsMiwwLDgzLDQwLDMsMCwwLDAsMTE3LDExMywwLAorICAgIDAsMCw4MywxMDEsOTcsMTE0LDk5LDEwNCwzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwKKyAgICAxMDEsMzIsMTExLDEwMiwzMiwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDk3LAorICAgIDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDM5LDExMiw5NywxMTYsCisgICAgMTA0LDM5LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwKKyAgICAzOSwxMDQsMTExLDExMSwxMDcsMTE1LDM5LDMyLDEwNSwxMTUsMzIsMTAyLDk3LDEwOCwxMTUsMTAxLAorICAgIDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTcsMTE1LDEwMSwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDExNywyMywwLDAsMCwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDEwNSwxMTUsMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSw3OCwKKyAgICA0MCw3LDAsMCwwLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNywxMCwwLAorICAgIDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDExNyw5LDAsMCwKKyAgICAwLDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwxMTcsNCwwLDAsMCwxMTksCisgICAgOTcsMTE0LDExMCwxMTcsMTMsMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw4Nyw5NywKKyAgICAxMTQsMTEwLDEwNSwxMTAsMTAzLDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDY5LDExNCwxMTQsMTExLDExNCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSw0MCwzLAorICAgIDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDQsMCwwLDAsCisgICAgMTEyLDk3LDExNiwxMDQsMTE3LDQsMCwwLDAsMTA0LDExMSwxMTEsMTA3LDQwLDAsMCwKKyAgICAwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCisgICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKKyAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMjE5LDQsMCwwLDExNSwxNiwwLAorICAgIDAsMCwwLDcsOSwxLDE5LDEsMTYsMSwzLDEsMTQsMSwxMywxLAorICAgIDEyLDIsMTE3LDIyLDAsMCwwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCw0Niw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw5MSwwLDAsMCwxMjQsMSwwLDEwMCwxLDAsMTA3LDIsMCwKKyAgICAxMTQsMjEsMCwxMDAsMiwwLDEyNSwxLDAsMTEwLDAsMCwxMjEsMTcsMCwxMTYsCisgICAgMCwwLDEwNiwxLDAsMTI0LDEsMCwyNSwxMjUsMiwwLDg3LDExMCw0NiwwLAorICAgIDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsODYsMCwxLDEsMSwxMjQsMCwwLAorICAgIDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTI0LDIsMCwxMTYsCisgICAgMCwwLDEwNiwxLDAsMTI0LDEsMCw2MCw4OSwxMTAsMSwwLDg4LDEyNCwyLAorICAgIDAsODMsNDAsMywwLDAsMCwxMTcsMjEwLDAsMCwwLDcxLDEwMSwxMTYsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LDEyMSwzMiwxMDIsMTE0LAorICAgIDExMSwxMDksMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTA1LDExMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDQ0LDMyLDEwMiwxMDUsMTEwLDEwMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiw5NywxMTIsMTEyLDExNCwxMTEsMTEyLDExNCwxMDUsOTcsMTE2LDEwMSwKKyAgICAzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICA5NywxMTAsMTAwLDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsMTA1LDExNiw0NiwzMiw3MywxMDIsCisgICAgMzIsMTEwLDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDk3LDExOCwKKyAgICA5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDQsMzIsMTE1LDExNiwxMTEsMTE0LDEwMSwzMiw3OCwKKyAgICAxMTEsMTEwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTcsMCwKKyAgICAwLDAsMCwxMTcsMSwwLDAsMCw0Niw0MCw0LDAsMCwwLDExNywzLAorICAgIDAsMCwwLDExNSwxMjEsMTE1LDExNywxOSwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE3LDgsCisgICAgMCwwLDAsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDExLDAsMCwwLAorICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsNDAsMywwLDAsMCwKKyAgICAxMTcsMywwLDAsMCw5OSwxMDgsMTE1LDExNyw0LDAsMCwwLDExMiw5NywxMTYsCisgICAgMTA0LDExNyw2LDAsMCwwLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQwLDAsMCwwLAorICAgIDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCisgICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDIwLDAsMCwwLDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LAorICAgIDEwMSwyMzYsNCwwLDAsMTE1LDE2LDAsMCwwLDAsOCwxMiwxLDksMSwKKyAgICAzLDEsMTcsMSwxMywxLDE1LDEsMTgsMSwxMTcsMzEsMCwwLDAsODAsCisgICAgOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw5OSwzLAorICAgIDAsMCwwLDAsMCwwLDAsOCwwLDAsMCw1LDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwxODksMCwwLDAsMTAzLDAsMCwxMjUsMywwLDEyMCwxNzYsCisgICAgMCwxMjQsMiwwLDY4LDkzLDE1OCwwLDEyNSw0LDAsMTE2LDAsMCwxMjQsNCwKKyAgICAwLDExNiwxLDAsMTE2LDIsMCwxMDIsMiwwLDEzMSwyLDAsMTE1LDQ2LDAsCisgICAgMTEzLDEzLDAsMTEwLDAsMCwxMjQsMCwwLDEwNiwzLDAsMTI0LDQsMCwxMzEsCisgICAgMSwwLDEyNSw1LDAsMTI0LDUsMCwxMDAsMiwwLDEwNyw5LDAsMTE0LDEzLAorICAgIDAsMTE2LDUsMCwxMjQsNSwwLDEwMCwxLDAsMTMxLDIsMCwxMTQsMTEyLDAsCisgICAgMTI0LDUsMCwxMDYsNiwwLDEyNCwxLDAsMTMxLDEsMCw5MiwyLDAsMTI1LAorICAgIDYsMCwxMjUsNywwLDExMCwyMSwwLDEyNCw1LDAsMTA2LDcsMCwxMjQsMSwKKyAgICAwLDEzMSwxLDAsMTI1LDYsMCwxMDMsMCwwLDEyNSw3LDAsMTI0LDYsMCwKKyAgICAxMDAsMiwwLDEwNyw5LDAsMTE0LDE1NSwwLDEyNCw2LDAsMTI0LDMsMCwxMDIsCisgICAgMiwwLDgzLDEyNCwzLDAsMTA2LDgsMCwxMjQsNywwLDEzMSwxLDAsMSwKKyAgICAxMTMsMTMsMCwxMTMsMTMsMCw4NywxMDAsMiwwLDEyNCwzLDAsMTAyLDIsMCwKKyAgICA4MywxMDAsMiwwLDgzLDQwLDMsMCwwLDAsMTE3LDYzLDAsMCwwLDcwLAorICAgIDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTExLAorICAgIDExNCwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNDcsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LDExNywxMSwKKyAgICAwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw3OCw0MCwKKyAgICA5LDAsMCwwLDExNywxMCwwLDAsMCwxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiw5NywKKyAgICAxMTAsOTksMTAxLDExNywzLDAsMCwwLDExNSwxMTYsMTE0LDExNyw1LDAsMCwwLAorICAgIDk4LDEyMSwxMTYsMTAxLDExNSwxMTcsMjAsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNyw0LAorICAgIDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNyw3LDAsMCwwLDEwNCw5NywxMTUsOTcsCisgICAgMTE2LDExNiwxMTQsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE3LDYsMCwwLDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMDAsNDAsOCwKKyAgICAwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LDExNyw4LDAsMCwwLAorICAgIDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LAorICAgIDEwNCwxMTcsMTQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTUsCisgICAgMTEyLDk3LDExNiwxMDQsMTE3LDUsMCwwLDAsMTAxLDExMCwxMTYsMTE0LDEyMSwxMTcsNiwKKyAgICAwLDAsMCwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsNiwwLDAsMCwxMDgsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDExNyw4LDAsMCwwLDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwKKyAgICAxMTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCwKKyAgICA2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAorICAgIDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwKKyAgICAwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwyNTMsNCwwLAorICAgIDAsMTE1LDI4LDAsMCwwLDAsNSw2LDEsMTMsMSwyMSwxLDYsMSwKKyAgICAxNSwxLDEyLDEsMTUsMSwyNCwyLDE1LDEsNiwxLDEyLDIsMTAsNSwKKyAgICAyMCwyLDExNywyMiwwLDAsMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsNDYsOTUsMTAzLDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5OSwzLDAsCisgICAgMCwwLDAsMCwwLDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw5NywwLDAsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwKKyAgICAxMTQsMjQsMCwxMTYsMSwwLDEwNiwyLDAsMTI1LDIsMCwxMTAsMCwwLDEyNCwKKyAgICAwLDAsMTA2LDMsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCw5MiwyLAorICAgIDAsMTI1LDMsMCwxMjUsNCwwLDEyNCwzLDAsMTAwLDEsMCwxMDcsOSwwLAorICAgIDExNCw2NCwwLDEyNCwzLDAsODMsMTI0LDQsMCwxMTQsODksMCwxMTYsNCwwLAorICAgIDEyNCwxLDAsMTI0LDQsMCwxMjQsMCwwLDEwNiwzLDAsMTMxLDMsMCw4MywKKyAgICAxMDAsMSwwLDgzLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsOTgsMCwKKyAgICAwLDAsNzAsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwzMiwxMTEsMTE0LAorICAgIDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsCisgICAgMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwKKyAgICA5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LDQ2LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsCisgICAgOTksMTA0LDEwMSw0Niw3OCw0MCw1LDAsMCwwLDExNyw0LDAsMCwwLDc4LAorICAgIDExMSwxMTAsMTAxLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNyw0LDAsMCwwLAorICAgIDExMiw5NywxMTYsMTA0LDExNywxMSwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMDgsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDExNywxNSwwLDAsMCw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsCisgICAgOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0MCw1LDAsMCwwLDExNywzLDAsCisgICAgMCwwLDk5LDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywKKyAgICAxMDksMTAxLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw2LDAsMCwwLAorICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNSwKKyAgICAxMTIsOTcsOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDQwLDAsMCwwLDAsNDAsMCwKKyAgICAwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsCisgICAgMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwyNCw1LDAsMCwxMTUsMTYsMCwwLDAsMCw0LAorICAgIDEyLDEsMTIsMSwyNCwxLDEyLDEsNCwyLDYsMywxOSwyLDExNywyMiwKKyAgICAwLDAsMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwKKyAgICAxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQwLDExLDAsMCwwLDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsCisgICAgMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsCisgICAgOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLAorICAgIDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsMTEsMCwwLDAsOTksMTA4LDk3LAorICAgIDExNSwxMTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE3LDE3LDAsMCwwLDEwNSwxMTAsMTE4LAorICAgIDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsMTE3LDExLAorICAgIDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMTE3LDIwLAorICAgIDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKKyAgICAxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwxMTcsMTEsMCwwLDAsOTUsMTAzLDEwMSwxMTYsCisgICAgOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwKKyAgICAxMTcsMTEsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTksOTcsCisgICAgMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LAorICAgIDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLAorICAgIDExNywxMCwwLDAsMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMjA3LAorICAgIDQsMCwwLDExNSwxNCwwLDAsMCwxNiwyLDYsMiwxOCw4LDE4LDE3LAorICAgIDE4LDE3LDE4LDI3LDMsMSwxMTcsMTAsMCwwLDAsODAsOTcsMTE2LDEwNCw3MCwKKyAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCisgICAgMCwwLDMsMCwwLDAsNjYsMCwwLDAsMTE1LDExMCwwLDAsMCwxMjQsCisgICAgMCwwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwKKyAgICAxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsCisgICAgMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAxLDYsMCwKKyAgICA5MCw3LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsOCwwLDEwMCwKKyAgICA4LDAsMTAwLDksMCwxMzIsMCwwLDkwLDksMCwxMDEsMTAsMCwxMDAsMTAsCisgICAgMCwxMDAsMTEsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTEsMCwxMDAsMTIsMCwKKyAgICAxMDAsMTMsMCwxMzIsMCwwLDkwLDEyLDAsMTAwLDE0LDAsODMsNDAsMTUsMCwKKyAgICAwLDAsMTE3LDEwLDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsMTE3LDE3MiwwLDAsMCw3MCwxMDUsMTA4LDEwMSw0NSw5OCw5NywxMTUsMTAxLDEwMCwKKyAgICAzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3MywxMTAsCisgICAgMTE2LDEwMSwxMTQsOTcsOTksMTE2LDEwNSwxMTEsMTEwLDExNSwzMiwxMTksMTA1LDExNiwxMDQsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDMyLAorICAgIDk3LDExNCwxMDEsMzIsOTksOTcsOTksMTA0LDEwMSwxMDAsMzIsMTAyLDExMSwxMTQsMzIsMTEyLAorICAgIDEwMSwxMTQsMTAyLDExMSwxMTQsMTA5LDk3LDExMCw5OSwxMDEsNDQsMzIsOTgsMTAxLDEwNSwxMTAsCisgICAgMTAzLDEwLDMyLDMyLDMyLDMyLDExNCwxMDEsMTAyLDExNCwxMDEsMTE1LDEwNCwxMDEsMTAwLDMyLAorICAgIDExOSwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwKKyAgICAxMTQsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwNSwxMTUsCisgICAgMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwNSwxMTAsMTAzLDMyLDEwNCw5NywxMTUsMzIsOTgsMTAxLAorICAgIDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMDUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiw5OSwyLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw1LAorICAgIDAsMCwwLDcsMCwwLDAsMTE1LDEyMiwwLDAsMCwxMDMsMCwwLDEyNSwKKyAgICAzLDAsMTIwLDUyLDAsMTI0LDIsMCw2OCw5Myw0NCwwLDkyLDIsMCwxMzcsCisgICAgMCwwLDEyNSw0LDAsMTI0LDMsMCwxMDYsMCwwLDEzNSwwLDAsMTAyLDEsCisgICAgMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjQsNCwwLDY4LDEzMSwxLAorICAgIDAsMTMxLDEsMCwxLDExMywxMywwLDg3LDEyNCwzLDAsMTI0LDAsMCw5NSwKKyAgICAxLDAsMTI0LDEsMCwxMTIsNzksMCwxMDAsMywwLDEyNCwwLDAsOTUsMiwKKyAgICAwLDEwMCw2LDAsMTI0LDAsMCw5NSwzLDAsMTE2LDQsMCwxMzEsMCwwLAorICAgIDEyNCwwLDAsOTUsNSwwLDExNiw0LDAsMTMxLDAsMCwxMjQsMCwwLDk1LAorICAgIDYsMCwxMDAsNSwwLDgzLDQwLDcsMCwwLDAsMTE3LDE1NCwwLDAsMCwKKyAgICA3MywxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNSwxMDEsOTcsMTE0LAorICAgIDk5LDEwNCwzMiwxMTEsMTEwLDMyLDk3LDExMCwxMDAsMzIsOTcsMzIsMTE4LDk3LDExNCwxMDUsCisgICAgOTcsOTgsMTA4LDEwMSwzMiwxMTAsMTE3LDEwOSw5OCwxMDEsMTE0LDMyLDExMSwxMDIsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsNTAsNDUsMTE2LDExNywxMTIsMTA4LDEwMSwxMTUsMzIsCisgICAgOTksMTExLDExMCwxMTYsOTcsMTA1LDExMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwKKyAgICAxMDgsMTAxLDMyLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsCisgICAgMTAxLDk5LDExMSwxMDMsMTEwLDEwNSwxMjIsMTAxLDExNSw0Niw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDUxLDAsMCwwLDExNSwKKyAgICAyNywwLDAsMCwxMjQsMCwwLDkzLDE3LDAsMTI1LDEsMCwxMjQsMSwwLAorICAgIDEzNiwwLDAsMTAyLDIsMCw4NiwxLDExMywzLDAsMTAwLDAsMCw4Myw0MCwKKyAgICAxLDAsMCwwLDc4LDQwLDAsMCwwLDAsNDAsMiwwLDAsMCwxMTcsCisgICAgMiwwLDAsMCw0Niw0OCwxMTcsNiwwLDAsMCwxMTUsMTE3LDEwMiwxMDIsMTA1LAorICAgIDEyMCw0MCwxLDAsMCwwLDExNyw2LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCisgICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDksMCwwLDAsNjAsMTAzLDEwMSwKKyAgICAxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDU3LDUsMCwwLDExNSwyLDAsMCwwLDYsCisgICAgMCwxMTcsMzgsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICA0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsCisgICAgMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMTcsMSwwLDAsCisgICAgMCw0NiwxMDUsMSwwLDAsMCw3OCwxMDUsMjU1LDI1NSwyNTUsMjU1LDQwLDcsMCwKKyAgICAwLDAsMTE3LDYsMCwwLDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMDAsMTE3LDgsMCwKKyAgICAwLDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE3LDQsMCwwLDAsMTEyLAorICAgIDk3LDExNiwxMDQsMTE3LDExLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsCisgICAgMTA1LDEwOSwxMDEsMTE3LDMsMCwwLDAsMTE1LDEwMSwxMTYsMTE3LDExLDAsMCwwLAorICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE3LDE5LDAsMCwwLAorICAgIDk1LDExNCwxMDEsMTA4LDk3LDEyMCwxMDEsMTAwLDk1LDExMiw5NywxMTYsMTA0LDk1LDk5LDk3LAorICAgIDk5LDEwNCwxMDEsNDAsNSwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwKKyAgICAxMDIsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDcsMCwwLDAsMTAwLAorICAgIDEwMSwxMTYsOTcsMTA1LDEwOCwxMTUsMTE3LDcsMCwwLDAsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCwxMTUsMTE3LDgsMCwwLDAsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSw0MCwKKyAgICAwLDAsMCwwLDQwLDEsMCwwLDAsMTE3LDYsMCwwLDAsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwKKyAgICAxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsCisgICAgMTE2LDk1LDk1LDUxLDUsMCwwLDExNSwxNiwwLDAsMCwwLDQsNiwxLAorICAgIDE5LDEsMzYsMSw5LDIsMTUsMSw5LDEsMTIsMSwxMTcsMTksMCwwLAorICAgIDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLAorICAgIDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLAorICAgIDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTAwLDMsCisgICAgMCwxMjQsMCwwLDk1LDAsMCwxMDAsMiwwLDgzLDQwLDQsMCwwLDAsCisgICAgMTE3LDMxLDAsMCwwLDczLDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDEwOSwxMTYsCisgICAgMTA1LDEwOSwxMDEsNDYsMTA1LDEsMCwwLDAsNzgsMTA1LDI1NSwyNTUsMjU1LDI1NSw0MCwKKyAgICAxLDAsMCwwLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDksCisgICAgMTE2LDEwNSwxMDksMTAxLDQwLDEsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwKKyAgICAxMDgsMTAyLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE3LAorICAgIDAsMCwwLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsCisgICAgOTksMTA0LDEwMSwxMTUsNjUsNSwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNywKKyAgICAyOCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwNSwKKyAgICAxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDEyLDAsMCwwLDEzLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwxNzIsMSwwLDAsMTAwLDUsMCwxMjUsMiwwLAorICAgIDEyNCwxLDAsMTA2LDEsMCwxMDAsMSwwLDEzMSwxLDAsMTAwLDIsMCwyNSwKKyAgICAxMjUsMywwLDEyMSwyNSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMCwwLDEwNiwKKyAgICA0LDAsMTMxLDEsMCwxMDYsNSwwLDEyNSw0LDAsODcsMTEwLDI0LDAsNCwKKyAgICAxMTYsNiwwLDEwNywxMCwwLDExNCw3NiwwLDEsMSwxLDEwMCw2LDAsMTI1LAorICAgIDQsMCw4OSwxMTAsMSwwLDg4LDEyNCw0LDAsMTI0LDAsMCwxMDYsNywwLAorICAgIDEwNywzLDAsMTE0LDExNCwwLDEyNCwwLDAsMTA2LDgsMCwxMzEsMCwwLDEsCisgICAgMTI0LDQsMCwxMjQsMCwwLDk1LDcsMCwxMTAsMCwwLDExNiw5LDAsMTMxLAorICAgIDAsMCwxMTQsMTQ3LDAsMTI0LDAsMCwxMDYsMTAsMCwxMjUsNSwwLDEyNCwzLAorICAgIDAsMTA2LDExLDAsMTMxLDAsMCwxMjUsNiwwLDExMCwxNSwwLDEyNCwwLDAsCisgICAgMTA2LDEyLDAsMTI1LDUsMCwxMjQsMywwLDEyNSw2LDAsMTI0LDYsMCwxMjQsCisgICAgNSwwLDEwNyw2LDAsMTE0LDQ1LDEsMTE2LDEzLDAsMTI0LDAsMCwxMDYsNCwKKyAgICAwLDEyNCwzLDAsMTMxLDIsMCwxMjUsNywwLDExNiwxNCwwLDEyNCw3LDAsCisgICAgMTMxLDEsMCwxMTQsNDUsMSwxMjAsOTEsMCwxMjQsMCwwLDEwNiwxNSwwLDY4LAorICAgIDkzLDcxLDAsOTIsMiwwLDEyNSw4LDAsMTI1LDksMCwxMDAsNCwwLDEyNCwKKyAgICA4LDAsMjMsMTI1LDEwLDAsMTE2LDEzLDAsMTI0LDcsMCwxMjQsMTAsMCwxMzEsCisgICAgMiwwLDEyNSwxMSwwLDExNiwxNiwwLDEyNCwxMSwwLDEzMSwxLDAsMTE0LDIxNCwKKyAgICAwLDEyNCw5LDAsMTI0LDEsMCwxMjQsMTEsMCwxMzEsMiwwLDEyNCw3LDAsCisgICAgMTAzLDEsMCwxMDIsMiwwLDgzLDExMywyMTQsMCw4NywxMDAsNywwLDEyNSwyLAorICAgIDAsMTEzLDQ1LDEsMTEwLDAsMCwxMjAsOTUsMCwxMjQsMCwwLDEwNiwxNSwwLAorICAgIDY4LDkzLDg0LDAsOTIsMiwwLDEyNSw4LDAsMTI1LDksMCwxMjQsNiwwLAorICAgIDEyNCw4LDAsMjMsMTI0LDUsMCwxMDcsNiwwLDExNCw1NSwxLDExNiwxMywwLAorICAgIDEyNCwwLDAsMTA2LDQsMCwxMjQsMywwLDEyNCw4LDAsMjMsMTMxLDIsMCwKKyAgICAxMjUsMTEsMCwxMTYsMTYsMCwxMjQsMTEsMCwxMzEsMSwwLDExNCwxMzksMSwxMjQsCisgICAgOSwwLDEyNCwxLDAsMTI0LDExLDAsMTMxLDIsMCwxMDMsMCwwLDEwMiwyLAorICAgIDAsODMsMTEzLDU1LDEsMTEzLDU1LDEsODcsMTI0LDIsMCwxMTQsMTYyLDEsMTAwLAorICAgIDgsMCwxMjQsNywwLDEwMywxLDAsMTAyLDIsMCw4MywxMDAsOCwwLDEwMywKKyAgICAwLDAsMTAyLDIsMCw4Myw0MCw5LDAsMCwwLDExNywxMjUsMCwwLDAsCisgICAgODQsMTE0LDEyMSwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDgsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLAorICAgIDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTExLAorICAgIDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwxMCwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsCisgICAgMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSw0NiwzMiw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAorICAgIDExNSwzMiw0MCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ0LDMyLDEwOCwxMDUsMTE1LDExNiw0NSwKKyAgICAxMTEsMTAyLDQ1LDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsNDEsNDYsMTE3LDEsMCwKKyAgICAwLDAsNDYsMTA1LDIsMCwwLDAsMTA1LDEsMCwwLDAsMTE3LDgsMCwKKyAgICAwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDcwLDEwNSwyNTUsMjU1LDI1NSwyNTUsCisgICAgODQsNzgsNDAsMTksMCwwLDAsMTE3LDUsMCwwLDAsNzAsOTcsMTA4LDExNSwKKyAgICAxMDEsMTE3LDEwLDAsMCwwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLAorICAgIDExNywzLDAsMCwwLDk1LDExMSwxMTUsMTE3LDQsMCwwLDAsMTE1LDExNiw5NywKKyAgICAxMTYsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDgsMCwwLDAsMTE1LAorICAgIDExNiw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDExNyw3LDAsMCwwLDc5LDgzLDY5LDExNCwKKyAgICAxMTQsMTExLDExNCwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwKKyAgICAxMDUsMTA5LDEwMSwxMTcsMTEsMCwwLDAsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LAorICAgIDk5LDEwNCwxMDEsMTE3LDExLDAsMCwwLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSwKKyAgICA5NywxMTUsMTAxLDExNywxOSwwLDAsMCw5NSwxMTQsMTAxLDEwOCw5NywxMjAsMTAxLDEwMCwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNyw1LDAsMCwwLAorICAgIDEwOCwxMTEsMTE5LDEwMSwxMTQsMTE3LDExLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsMTE3LDEwLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDEwNiwxMTEsMTA1LDExMCwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LAorICAgIDExNSwxMDAsMTA1LDExNCwxMTcsOCwwLDAsMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDExNSwxMTcsMTIsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDIsMTA1LAorICAgIDEwOCwxMDEsMTE3LDQsMCwwLDAsODQsMTE0LDExNywxMDEsMTE3LDQsMCwwLDAsCisgICAgNzgsMTExLDExMCwxMDEsNDAsMTIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwKKyAgICAxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsCisgICAgMTIsMCwwLDAsMTA1LDExNSw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKKyAgICAxMTcsMTEsMCwwLDAsMTE2LDk3LDEwNSwxMDgsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTE3LDUsMCwwLDAsMTA5LDExNiwxMDUsMTA5LDEwMSwxMTcsNSwwLDAsMCw5OSwKKyAgICA5Nyw5OSwxMDQsMTAxLDExNywxMiwwLDAsMCw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNyw5LDAsMCwwLDk4LDk3LDExNSwxMDEsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsMTE3LDYsMCwwLDAsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTE3LDYsCisgICAgMCwwLDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTMsMCwwLDAsMTA1LDExMCwKKyAgICAxMDUsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTcsOSwwLDAsMCwKKyAgICAxMDIsMTE3LDEwOCwxMDgsOTUsMTEyLDk3LDExNiwxMDQsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNzEsNSwwLDAsMTE1LDYyLDAsMCwwLDAsMywKKyAgICA2LDEsMTksMSwzLDEsMjUsMSwxMywxLDExLDEsMTUsMSwxMCwxLAorICAgIDEyLDIsOSwxLDksMSwxNSwyLDksMSw2LDIsMTIsMSwxOCwxLAorICAgIDEyLDEsMjIsMSwxMCwxLDE1LDEsMTIsMSwyNiw0LDEyLDIsMjIsMSwKKyAgICAxNiwxLDIyLDEsMTIsMSwyNiwxLDYsMSwxMywxLDExNywyMiwwLDAsCisgICAgMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCwKKyAgICA5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICA5LDAsMCwwLDEzLDAsMCwwLDY3LDAsMCwwLDExNSw4LDEsMCwKKyAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMSwwLDEyMSwxOSwwLDExNiwxLDAsCisgICAgMTA2LDIsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCw4NywxMTAsMzMsMCwKKyAgICA0LDExNiwzLDAsMTE2LDQsMCwxMTYsNSwwLDEwMiwzLDAsMTA3LDEwLDAsCisgICAgMTE0LDYzLDAsMSwxLDEsMTAzLDAsMCwxMjUsMiwwLDg5LDExMCwxLDAsCisgICAgODgsMTE2LDYsMCwxMDYsNywwLDEwNiw4LDAsMTAwLDEsMCwxMzEsMSwwLAorICAgIDExNSwxMDAsMCwxMTYsOSwwLDEyNCwyLDAsMTMxLDEsMCwxMjQsMCwwLDk1LAorICAgIDEwLDAsMTEwLDExMSwwLDExNiw5LDAsMTMxLDAsMCwxMjUsMywwLDEyMCw5MCwKKyAgICAwLDEyNCwyLDAsNjgsOTMsODIsMCwxMjUsNCwwLDEyNCw0LDAsMTA2LDExLAorICAgIDAsMTAwLDIsMCwxMzEsMSwwLDkyLDMsMCwxMjUsNSwwLDEyNSw2LDAsCisgICAgMTI1LDcsMCwxMjQsNiwwLDExNCwxNzksMCwxMDAsMywwLDEwNiwxMiwwLDEyNCwKKyAgICA1LDAsMTI0LDcsMCwxMDYsMTMsMCwxMzEsMCwwLDEzMSwyLDAsMTI1LDgsCisgICAgMCwxMTAsNiwwLDEyNCw1LDAsMTI1LDgsMCwxMjQsMywwLDEwNiwxNCwwLAorICAgIDEyNCw4LDAsMTMxLDEsMCwxLDExMywxMTYsMCw4NywxMjQsMywwLDEyNCwwLAorICAgIDAsOTUsMTAsMCwxMTYsNiwwLDEwNiw3LDAsMTA2LDgsMCwxMTYsMTUsMCwKKyAgICAxMzEsMSwwLDExNCw0LDEsMTE2LDksMCwxMDAsNCwwLDEwMCw1LDAsMTMyLAorICAgIDAsMCwxMjQsMiwwLDY4LDEzMSwxLDAsMTMxLDEsMCwxMjQsMCwwLDk1LAorICAgIDE2LDAsMTEwLDAsMCwxMDAsNiwwLDgzLDQwLDcsMCwwLDAsMTE3LDY4LAorICAgIDAsMCwwLDcwLDEwNSwxMDgsMTA4LDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsMzIsMTExLDEwMiwzMiwxMTIsMTExLDExNiwxMDEsMTEwLDExNiwxMDUsOTcsMTA4LDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwMCwxMDUsMTE0LAorICAgIDEwMSw5OSwxMTYsMTExLDExNCwxMjEsNDYsMTE3LDMsMCwwLDAsMTE5LDEwNSwxMTAsMTE3LAorICAgIDEsMCwwLDAsNDYsMTE3LDUsMCwwLDAsMTIzLDEyNSw0NiwxMjMsMTI1LDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsCisgICAgMTE1LDAsMCwwLDExNSwyNywwLDAsMCwxMjQsMCwwLDkzLDE3LDAsMTI1LAorICAgIDEsMCwxMjQsMSwwLDEwNiwwLDAsMTMxLDAsMCw4NiwxLDExMywzLDAsCisgICAgMTAwLDAsMCw4Myw0MCwxLDAsMCwwLDc4LDQwLDEsMCwwLDAsMTE3LAorICAgIDUsMCwwLDAsMTA4LDExMSwxMTksMTAxLDExNCw0MCwyLDAsMCwwLDExNywyLAorICAgIDAsMCwwLDQ2LDQ4LDExNywyLDAsMCwwLDEwMiwxMTAsNDAsMCwwLDAsCisgICAgMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwKKyAgICAxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOSwwLDAsMCw2MCwxMDMsMTAxLAorICAgIDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTQyLDUsMCwwLDExNSwyLDAsMCwwLDYsCisgICAgMCwxMTcsNDEsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICA0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LDEwMSw0Niw2MCwxMDgsMTExLAorICAgIDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDc4LAorICAgIDQwLDE3LDAsMCwwLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNywzLAorICAgIDAsMCwwLDk1LDExMSwxMTUsMTE3LDcsMCwwLDAsMTA4LDEwNSwxMTUsMTE2LDEwMCwKKyAgICAxMDUsMTE0LDExNywxNywwLDAsMCw3MCwxMDUsMTA4LDEwMSw3OCwxMTEsMTE2LDcwLDExMSwKKyAgICAxMTcsMTEwLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDE1LDAsMCwwLDgwLDEwMSwxMTQsCisgICAgMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTEsMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTgsMCwwLAorICAgIDAsNzgsMTExLDExNiw2NSw2OCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsNjksMTE0LAorICAgIDExNCwxMTEsMTE0LDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNyw4LDAsMCwwLAorICAgIDExMiwxMDgsOTcsMTE2LDEwMiwxMTEsMTE0LDEwOSwxMTcsMTAsMCwwLDAsMTE1LDExNiw5NywKKyAgICAxMTQsMTE2LDExNSwxMTksMTA1LDExNiwxMDQsMTE3LDMsMCwwLDAsMTE1LDEwMSwxMTYsMTE3LAorICAgIDExLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE3LAorICAgIDksMCwwLDAsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTcsNiwwLAorICAgIDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNyw1LDAsMCwwLDEwOCwxMTEsMTE5LAorICAgIDEwMSwxMTQsMTE3LDMsMCwwLDAsOTcsMTAwLDEwMCwxMTcsMjcsMCwwLDAsOTUsCisgICAgNjcsNjUsODMsNjksOTUsNzMsNzgsODMsNjksNzgsODMsNzMsODQsNzMsODYsNjksCisgICAgOTUsODAsNzYsNjUsODQsNzAsNzksODIsNzcsODMsMTE3LDE5LDAsMCwwLDk1LAorICAgIDExNCwxMDEsMTA4LDk3LDEyMCwxMDEsMTAwLDk1LDExMiw5NywxMTYsMTA0LDk1LDk5LDk3LDk5LAorICAgIDEwNCwxMDEsNDAsOSwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsCisgICAgMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDgsMCwwLDAsOTksMTExLAorICAgIDExMCwxMTYsMTAxLDExMCwxMTYsMTE1LDExNywyMSwwLDAsMCwxMDgsMTExLDExOSwxMDEsMTE0LAorICAgIDk1LDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDk1LDk5LDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDExNSwKKyAgICAxMTcsNCwwLDAsMCwxMDUsMTE2LDEwMSwxMDksMTE3LDQsMCwwLDAsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE3LDMsMCwwLDAsMTAwLDExMSwxMTYsMTE3LDYsMCwwLDAsMTE1LAorICAgIDExNywxMDIsMTAyLDEwNSwxMjAsMTE3LDgsMCwwLDAsMTEwLDEwMSwxMTksOTUsMTEwLDk3LAorICAgIDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsCisgICAgMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsCisgICAgMCwwLDAsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTEzLDUsCisgICAgMCwwLDExNSwzNCwwLDAsMCwwLDIsOSwxLDMsMSwxOSwxLDIyLAorICAgIDMsMTEsMywxOCwxLDE4LDcsOSwxLDEzLDEsMjQsMSw2LDEsMjcsCisgICAgMiw2LDEsMTcsMSw5LDEsMTgsMSwxMTcsMjIsMCwwLDAsNzAsMTA1LAorICAgIDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksCisgICAgOTcsOTksMTA0LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsCisgICAgMCwzLDAsMCwwLDcsMCwwLDAsMTE1LDI1LDAsMCwwLDEzNSwwLAorICAgIDAsMTM1LDEsMCwxMDIsMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLAorICAgIDEyNSwyLDAsMTI0LDIsMCw4Myw0MCwzLDAsMCwwLDExNywyMCwxLDAsCisgICAgMCw2NSwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwKKyAgICAxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLAorICAgIDk5LDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTExLAorICAgIDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMDUsCisgICAgMTA4LDEwOCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywxMTAsMzIsMTA1LDExMCwxMTUsCisgICAgMTE2LDk3LDExMCw5OSwxMDEsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgMTE1LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExMSwxMTAsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsOTksMTA4LDExMSwxMTUsMTE3LDExNCwxMDEsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywKKyAgICAxMTYsMTA0LDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsCisgICAgOTcsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSw0NCwzMiw3MywxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsNDYsMCwwLDAsMTE2LAorICAgIDAsMCwxMjQsMCwwLDEzMSwxLDAsMTE1LDMzLDAsMTE2LDEsMCwxMDAsMSwKKyAgICAwLDEwMCwyLDAsMTI0LDAsMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDAsMCwKKyAgICAxMzYsMCwwLDEyNCwwLDAsMTM2LDEsMCwxNDAsMSwwLDgzLDQwLDMsMCwKKyAgICAwLDAsMTE3LDQ1LDAsMCwwLDgwLDk3LDExNiwxMDQsMzIsMTA0LDExMSwxMTEsMTA3LAorICAgIDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsMTA5LAorICAgIDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDQ2LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsCisgICAgMTAwLDEwMSwxMTQsNDYsMTE3LDMwLDAsMCwwLDExMSwxMTAsMTA4LDEyMSwzMiwxMDAsMTA1LAorICAgIDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTA1LDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsMTE3LAorICAgIDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwKKyAgICA0MCwyLDAsMCwwLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICAxMDUsMTE1LDEwMCwxMDUsMTE0LDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDY5LDExNCwxMTQsMTExLDExNCw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDExMiwKKyAgICA5NywxMTYsMTA0LDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwKKyAgICAxMTcsMTQsMCwwLDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMDAsMTAxLDExNiw5NywKKyAgICAxMDUsMTA4LDExNSw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMjQsMCwwLDAsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk1LDEwMiwxMTEsMTE0LDk1LDcwLDEwNSwxMDgsCisgICAgMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTU0LDUsMCwwLDExNSw2LDAsMCwwLAorICAgIDAsMiwxMiwxLDIxLDEsMTE3LDU0LDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLAorICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDQ2LAorICAgIDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLAorICAgIDExMSwxMDcsOTUsMTAyLDExMSwxMTQsOTUsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCw0MCwwLDAsMCwwLDQwLDMsMCwwLDAsMTE3LDMsMCwwLDAsCisgICAgOTksMTA4LDExNSwxMTcsMTQsMCwwLDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMDAsCisgICAgMTAxLDExNiw5NywxMDUsMTA4LDExNSwxMTcsMjQsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTA0LDExMSwxMTEsMTA3LDk1LDEwMiwxMTEsMTE0LDk1LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsCisgICAgMTAwLDEwMSwxMTQsNDAsMCwwLDAsMCw0MCwyLDAsMCwwLDExNywzLDAsCisgICAgMCwwLDk5LDEwOCwxMTUsMTE3LDE0LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgOTUsMTAwLDEwMSwxMTYsOTcsMTA1LDEwOCwxMTUsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsCisgICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw5LDAsMCwwLDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxNDQsNSwwLDAsMTE1LDQsMCwwLAorICAgIDAsMCwxMCwyMSw2LDExNywyMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsCisgICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwxNCwwLDAsMCwxMDAsMSwwLDEyNCwwLDAsMTA2LDAsCisgICAgMCwxMDIsMSwwLDIyLDgzLDQwLDIsMCwwLDAsNzgsMTE3LDE0LDAsMCwKKyAgICAwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMzcsMTE0LDQxLDQwLAorICAgIDEsMCwwLDAsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsMSwwLAorICAgIDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsNDAsMCwwLDAsMCwKKyAgICA0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCw5NSw5NSwxMTQsMTAxLAorICAgIDExMiwxMTQsOTUsOTUsMTYyLDUsMCwwLDExNSwyLDAsMCwwLDAsMSwxMTcsCisgICAgMTksMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwKKyAgICA5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsNzgsNDAsMTMsMCwwLDAsMTE3LDgsMCwKKyAgICAwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwKKyAgICAxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsNywwLDAsMCw5NSwKKyAgICA5NSwxMDAsMTExLDk5LDk1LDk1LDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LAorICAgIDExNiw5NSw5NSwxMTcsMTcsMCwwLDAsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsCisgICAgMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSwxMTcsMTcsMCwwLDAsOTUsMTAyLAorICAgIDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSwxMTcsCisgICAgMTEsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywKKyAgICAxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsCisgICAgMTEsMCwwLDAsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE3LAorICAgIDExLDAsMCwwLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNywKKyAgICA5LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTcsOCwwLAorICAgIDAsMCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsNDAsMSwwLDAsMCwxMTcsCisgICAgMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsMTE1LDk1LDk1LDQwLDAsCisgICAgMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSwKKyAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDcwLAorICAgIDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDIsNSwwLDAsMTE1LDE2LDAsCisgICAgMCwwLDE2LDcsNiwyLDEyLDE0LDEyLDQsNiwyLDEyLDQyLDEyLDMxLAorICAgIDE4LDE4LDExNywxMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwKKyAgICAwLDAsNjYsMCwwLDAsMTE1LDUwLDAsMCwwLDEyNCwwLDAsNjksMTAxLAorICAgIDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLAorICAgIDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsCisgICAgMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwwLDgzLDQwLDcsMCwKKyAgICAwLDAsMTE3LDE4LDAsMCwwLDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLAorICAgIDk5LDEwNyw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwxMTcsMzYsMCwwLDAsNjcsMTExLAorICAgIDExMCwxMTYsMTAxLDEyMCwxMTYsMzIsMTA5LDk3LDExMCw5NywxMDMsMTAxLDExNCwzMiwxMDIsMTExLAorICAgIDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LAorICAgIDEwNyw0Niw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxNCwwLDAsMCwxMTYsMCwwLDEwNiwKKyAgICAxLDAsMTMxLDAsMCwxLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsCisgICAgMjQsMCwwLDAsNjUsOTksMTEzLDExNywxMDUsMTE0LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw3OCw0MCwyLDAsCisgICAgMCwwLDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywxMiwwLDAsMCwKKyAgICA5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDQwLDEsMCwwLAorICAgIDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDQwLDAsMCwwLDAsNDAsCisgICAgMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwKKyAgICAxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDksMCwwLDAsOTUsOTUsMTAxLDExMCwxMTYsCisgICAgMTAxLDExNCw5NSw5NSwxNzIsNSwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNywKKyAgICAyOCwwLDAsMCw5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsCisgICAgMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsNDYsOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSwKKyAgICA5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwxLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwxNCwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsCisgICAgMTMxLDAsMCwxLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsNjAsMCwKKyAgICAwLDAsODIsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNywzMiwxMTQsMTAxLDEwMyw5NywxMTQsMTAwLAorICAgIDEwOCwxMDEsMTE1LDExNSwzMiwxMTEsMTAyLDMyLDk3LDExMCwxMjEsMzIsMTE0LDk3LDEwNSwxMTUsCisgICAgMTAxLDEwMCwzMiwxMDEsMTIwLDk5LDEwMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDExNSw0Niw3OCw0MCwKKyAgICAyLDAsMCwwLDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywxMiwwLAorICAgIDAsMCwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw5NSwxMDgsMTExLDk5LDEwNyw0MCw0LAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLDAsCisgICAgMCwxMDEsMTIwLDk5LDk1LDExNiwxMjEsMTEyLDEwMSwxMTcsOSwwLDAsMCwxMDEsMTIwLAorICAgIDk5LDk1LDExOCw5NywxMDgsMTE3LDEwMSwxMTcsMTMsMCwwLDAsMTAxLDEyMCw5OSw5NSwKKyAgICAxMTYsMTE0LDk3LDk5LDEwMSw5OCw5Nyw5OSwxMDcsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsCisgICAgOTUsOTUsMTc2LDUsMCwwLDExNSwyLDAsMCwwLDAsMiwxMTcsMjcsMCwKKyAgICAwLDAsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsCisgICAgMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSw3OCw0MCw2LAorICAgIDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LAorICAgIDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsCisgICAgMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsCisgICAgMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsOSwwLDAsCisgICAgMCw5NSw5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDExNyw4LDAsMCwwLDk1LAorICAgIDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSw0MCwxLDAsMCwwLDExNywxMCwwLDAsCisgICAgMCw5NSw5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCwKKyAgICA0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTgsMCwwLDAsOTUsNzMsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDE2OCw1LAorICAgIDAsMCwxMTUsNiwwLDAsMCwxNiwyLDYsMiwxMiw0LDExNywxOCwwLAorICAgIDAsMCw5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwKKyAgICAxMTYsMTAxLDEyMCwxMTYsOTksMywwLDAsMCwwLDAsMCwwLDUsMCwwLAorICAgIDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsOTEsMCwwLDAsMTI0LDEsCisgICAgMCwxMDYsMCwwLDEwMCwxLDAsMTI0LDIsMCwxMDAsMiwwLDI0LDEzMSwyLAorICAgIDAsMTI1LDMsMCwxMTYsMSwwLDEyNCwzLDAsMTMxLDEsMCwxMjQsMiwwLAorICAgIDEwNywwLDAsMTE0LDU1LDAsMTE2LDIsMCwxMDAsMywwLDEzMSwxLDAsMTMwLAorICAgIDEsMCwxMTAsMCwwLDEyNCwzLDAsMTAwLDQsMCwyNSwxMjUsNCwwLDEyNCwKKyAgICAwLDAsMTE0LDg3LDAsMTAwLDUsMCwxMDYsMywwLDEyNCw0LDAsMTI0LDAsCisgICAgMCwxMzEsMiwwLDgzLDEyNCw0LDAsODMsNDAsNiwwLDAsMCwxMTcsNTAsCisgICAgMCwwLDAsODIsMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsMzIsOTcsMzIsMTE0LDEwMSwxMDgsCisgICAgOTcsMTE2LDEwNSwxMTgsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksCisgICAgMTAxLDMyLDExNiwxMTEsMzIsOTcsMTEwLDMyLDk3LDk4LDExNSwxMTEsMTA4LDExNywxMTYsMTAxLAorICAgIDMyLDExMSwxMTAsMTAxLDQ2LDExNywxLDAsMCwwLDQ2LDEwNSwxLDAsMCwwLAorICAgIDExNyw1MCwwLDAsMCw5NywxMTYsMTE2LDEwMSwxMDksMTEyLDExNiwxMDEsMTAwLDMyLDExNCwKKyAgICAxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5OCwKKyAgICAxMDEsMTIxLDExMSwxMTAsMTAwLDMyLDExNiwxMTEsMTEyLDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsCisgICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDEwNSwwLDAsMCwwLDExNyw1LDAsMCwKKyAgICAwLDEyMywxMjUsNDYsMTIzLDEyNSw0MCw0LDAsMCwwLDExNyw2LDAsMCwwLAorICAgIDExNCwxMTUsMTEyLDEwOCwxMDUsMTE2LDExNywzLDAsMCwwLDEwOCwxMDEsMTEwLDExNywxMCwKKyAgICAwLDAsMCw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDYsMCwKKyAgICAwLDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiw0MCw1LDAsMCwwLDExNyw0LDAsCisgICAgMCwwLDExMCw5NywxMDksMTAxLDExNyw3LDAsMCwwLDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSwxMTcsNSwwLDAsMCwxMDgsMTAxLDExOCwxMDEsMTA4LDExNyw0LDAsMCwKKyAgICAwLDk4LDEwNSwxMTYsMTE1LDExNyw0LDAsMCwwLDk4LDk3LDExNSwxMDEsNDAsMCwKKyAgICAwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTMsMCwwLDAsOTUsCisgICAgMTE0LDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDk1LDExMCw5NywxMDksMTAxLDE4MSw1LDAsMCwKKyAgICAxMTUsMTAsMCwwLDAsMCwyLDIyLDEsMTgsMSwxNSwxLDEwLDEsMTE3LAorICAgIDEzLDAsMCwwLDk1LDExNCwxMDEsMTE1LDExMSwxMDgsMTE4LDEwMSw5NSwxMTAsOTcsMTA5LAorICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwxMSwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMTM4LDAsMCwwLDExNiwwLDAsMTA2LDEsCisgICAgMCwxMTUsMjgsMCwxMTYsMiwwLDEwNiwzLDAsMTAwLDEsMCwxMTYsNCwwLAorICAgIDEzMSwyLDAsMSwxMTAsMCwwLDEyMCwxMDMsMCwxMTYsMCwwLDEwNiwxLDAsCisgICAgNjgsOTMsODgsMCwxMjUsMiwwLDExNiw1LDAsMTMxLDAsMCwxNDMsMjMsMCwKKyAgICAxLDEyNCwyLDAsMTA2LDYsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsMCwKKyAgICAxMjUsMywwLDg3LDEwMCwyLDAsODEsODgsMTI0LDMsMCwxMDAsMiwwLDEwNywKKyAgICA5LDAsMTE0LDM4LDAsMTI0LDAsMCwxMTYsMCwwLDEwNiw4LDAsMTA3LDcsCisgICAgMCwxMTQsMTA5LDAsMTI0LDMsMCw4MywxMTYsMCwwLDEwNiw4LDAsMTI0LDAsCisgICAgMCwyNSwxMDYsOSwwLDgzLDExMywzOCwwLDExMywzOCwwLDg3LDEwMCwyLDAsCisgICAgODMsMTAwLDIsMCw4Myw0MCwzLDAsMCwwLDExNywyMywwLDAsMCw3MCwKKyAgICAxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTcsMjIsMCwwLDAsMTE1LDEyMSwxMTUsNDYsMTA5LAorICAgIDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMDEsMTA5LDExMiwxMTYsCisgICAgMTIxLDc4LDQwLDEwLDAsMCwwLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNywKKyAgICA5LDAsMCwwLDEwOSwxMDEsMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LDExNyw5LDAsCisgICAgMCwwLDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwxMTcsNCwwLDAsMCwKKyAgICAxMTksOTcsMTE0LDExMCwxMTcsMTMsMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw4NywKKyAgICA5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNywxOCwwLDAsMCw5NSw3MywxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsMTE3LDExLDAsCisgICAgMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsNCwwLAorICAgIDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNywwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxMTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsCisgICAgOTUsNDAsNCwwLDAsMCwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsCisgICAgNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsNiwwLDAsMCwxMDIsMTA1LDExMCwKKyAgICAxMDAsMTAxLDExNCwxMTcsNiwwLDAsMCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQwLDAsCisgICAgMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSwKKyAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEyLDAsMCwwLDk1LAorICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxOTAsNSwwLDAsMTE1LAorICAgIDIwLDAsMCwwLDAsMiw5LDEsMTksMSwxNiwxLDEwLDEsMjQsMSwKKyAgICAxMiwyLDE1LDEsNCwyLDIxLDIsMTE3LDEyLDAsMCwwLDk1LDEwMiwxMDUsCisgICAgMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwzLDAsMCwwLDAsMCwKKyAgICAwLDAsNCwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxOTQsCisgICAgMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDExNiwxLDAsMTMxLDIsMCwxMTUsCisgICAgNDUsMCwxMTYsMiwwLDEwMCwxLDAsMTA2LDMsMCwxMTYsNCwwLDEyNCwwLAorICAgIDAsMTMxLDEsMCwxMzEsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLAorICAgIDEyNCwyLDAsMTAwLDIsMCwxMDcsMCwwLDExNCw3MiwwLDExNiw1LDAsMTAwLAorICAgIDMsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjQsMSwwLDExNCwxNTYsCisgICAgMCwxMTYsMCwwLDEyNCwxLDAsMTE2LDEsMCwxMzEsMiwwLDExNSwxMDgsMCwKKyAgICAxMTYsMiwwLDEwMCw0LDAsMTMxLDEsMCwxMzAsMSwwLDExMywxNTYsMCwxMjQsCisgICAgMSwwLDExNiw2LDAsMTA2LDcsMCwxMDcsNywwLDExNCwxNTYsMCwxMDAsNSwKKyAgICAwLDEyNSwzLDAsMTE2LDgsMCwxMjQsMywwLDEwNiwzLDAsMTI0LDEsMCwKKyAgICAxMzEsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMTMsMTU2LDAsMTEwLDAsMCwxMjQsCisgICAgMCwwLDEyLDExNCwxOTAsMCwxMjQsMiwwLDEwMCwyLDAsMTA3LDIsMCwxMTQsCisgICAgMTkwLDAsMTE2LDUsMCwxMDAsNiwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwKKyAgICAwLDEwMCw3LDAsODMsNDAsOCwwLDAsMCwxMTcsMjgsMCwwLDAsODYsCisgICAgMTAxLDExNCwxMDUsMTAyLDEyMSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMTE1LDMyLAorICAgIDk3LDExNCwxMDEsMzIsMzQsMTE1LDk3LDExMCwxMDEsMzQsNDYsMTE3LDMxLDAsMCwwLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDEwOSwxMTcsMTE1LDExNiwKKyAgICAzMiw5OCwxMDEsMzIsMTE1LDExNiwxMTQsNDQsMzIsMTEwLDExMSwxMTYsMzIsMTIzLDEyNSwxMDUsCisgICAgMCwwLDAsMCwxMTcsMTgsMCwwLDAsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMDksCisgICAgMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDYyLDYxLDMyLDQ4LDExNywzMSwwLDAsMCwKKyAgICA5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTEwLDExMSwxMTYsMzIsCisgICAgMTE1LDEwMSwxMTYsMzIsMTE2LDExMSwzMiw5NywzMiwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywxMTcsCisgICAgNjEsMCwwLDAsODAsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMDAsNDQsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExMiwxMDEsMTE0LDEwMiwxMTEsMTE0LAorICAgIDEwOSwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMTE3LDE3LDAsMCwwLDY5LDEwOSwxMTIsMTE2LDEyMSwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw3OCw0MCw5LDAsMCwwLDExNywxMCwwLAorICAgIDAsMCwxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDExNywzLDAsMCwKKyAgICAwLDExNSwxMTYsMTE0LDExNyw5LDAsMCwwLDg0LDEyMSwxMTIsMTAxLDY5LDExNCwxMTQsCisgICAgMTExLDExNCwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNyw0LDAsCisgICAgMCwwLDExNiwxMjEsMTEyLDEwMSwxMTcsMTAsMCwwLDAsODYsOTcsMTA4LDExNywxMDEsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNyw3LDAsCisgICAgMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTcsMTEsMCwwLDAsODMsMTIxLAorICAgIDExNSwxMTYsMTAxLDEwOSw2OSwxMTQsMTE0LDExMSwxMTQsNDAsNCwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNywwLDAsMCwxMTIsOTcsOTksMTA3LAorICAgIDk3LDEwMywxMDEsMTE3LDUsMCwwLDAsMTA4LDEwMSwxMTgsMTAxLDEwOCwxMTcsMywwLAorICAgIDAsMCwxMDksMTE1LDEwMyw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywxMywwLDAsMCw5NSwxMTUsOTcsMTEwLDEwNSwxMTYsMTIxLDk1LDk5LDEwNCwKKyAgICAxMDEsOTksMTA3LDIwNyw1LDAsMCwxMTUsMjQsMCwwLDAsMCwyLDE1LDEsCisgICAgMzAsMSwxMiwxLDE1LDEsNiwxLDE1LDEsMTUsMSwxNSwxLDYsMiwKKyAgICAyNywxLDE5LDEsMTE3LDEzLDAsMCwwLDk1LDExNSw5NywxMTAsMTA1LDExNiwxMjEsCisgICAgOTUsOTksMTA0LDEwMSw5OSwxMDcsMTE3LDIwLDAsMCwwLDc4LDExMSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTIzLDMzLDExNCwxMjUsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDksMCwwLDAsMjcsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDEyLDIsMCwwLDEwMCwwLDAsMTI1LDIsMCwxMjQsCisgICAgMCwwLDEwNiwxLDAsMTAwLDEsMCwxMzEsMSwwLDEwMCwyLDAsMjUsMTI1LAorICAgIDMsMCwxMjQsMywwLDExNCwxNzgsMCwxMjQsMywwLDExNiwyLDAsMTA2LDMsCisgICAgMCwxMDcsNywwLDExNCw2MiwwLDExNiw0LDAsMTI0LDEsMCwxMjQsMywwLAorICAgIDEzMSwyLDAsMSwxMTAsMCwwLDEyNCwwLDAsMTE2LDIsMCwxMDYsMywwLAorICAgIDEwNyw2LDAsMTE0LDg4LDAsMTE2LDIsMCwxMDYsMywwLDEyNCwwLDAsMjUsCisgICAgODMsMTE2LDIsMCwxMDYsMywwLDEyNCwzLDAsMjUsMTI1LDQsMCwxMjEsMTMsCisgICAgMCwxMjQsNCwwLDEwNiw1LDAsMTI1LDIsMCw4NywxMTMsMTc4LDAsNCwxMTYsCisgICAgNiwwLDEwNywxMCwwLDExNCwxNzQsMCwxLDEsMSwxMTYsNywwLDEwMCwzLAorICAgIDAsMjMsMTA2LDgsMCwxMjQsMCwwLDEyNCwzLDAsMTMxLDIsMCwxMjUsNSwKKyAgICAwLDExNiw5LDAsMTI0LDUsMCwxMDAsNCwwLDEyNCwwLDAsMTMxLDEsMSwKKyAgICAxMzAsMSwwLDg5LDExMywxNzgsMCw4OCwxMTAsMCwwLDExNiwxMCwwLDEyNCwwLAorICAgIDAsMTI0LDIsMCwxMzEsMiwwLDEyNSw2LDAsMTI0LDYsMCwxMDAsMCwwLAorICAgIDEwNyw4LDAsMTE0LDI1MCwwLDExNiw5LDAsMTE2LDcsMCwxMDYsOCwwLDEyNCwKKyAgICAwLDAsMTMxLDEsMCwxMDAsNCwwLDEyNCwwLDAsMTMxLDEsMSwxMjUsNywKKyAgICAwLDEwMCwxMCwwLDEyNCw3LDAsOTUsMTIsMCwxMjQsNywwLDEzMCwxLDAsCisgICAgMTEwLDQ3LDAsMTI0LDAsMCwxMTYsMiwwLDEwNiwzLDAsMTA3LDcsMCwxMTQsCisgICAgNDEsMSwxMjQsNiwwLDEwNiwxMywwLDEyNCwwLDAsMTMxLDEsMCwxLDExNiwKKyAgICAxNCwwLDEwMCw1LDAsMTI0LDAsMCwxMjQsNiwwLDEzMSwzLDAsMSwxMTAsCisgICAgMCwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMCwwLDI1LDEyNSw4LDAsMTI0LAorICAgIDMsMCwxMTQsMTA1LDEsMTE2LDIsMCwxMDYsMywwLDEyNCwzLDAsMjUsMTI1LAorICAgIDQsMCwxMTYsMTUsMCwxMjQsNCwwLDEyNCwwLDAsMTA2LDEsMCwxMDAsMSwKKyAgICAwLDEzMSwxLDAsMTAwLDYsMCwyNSwxMjQsOCwwLDEzMSwzLDAsMSwxMTAsCisgICAgMCwwLDExNiwxNiwwLDEyNCw4LDAsMTAwLDcsMCwxMDAsMCwwLDEzMSwzLAorICAgIDAsMTAwLDAsMCwxMDcsOCwwLDExNCwyMTIsMSwxMjEsNTksMCwxMjQsOCwwLAorICAgIDEwNiwxNywwLDEyNCw4LDAsOTUsMTgsMCwxMTYsMTksMCwxMjQsOCwwLDEwMCwKKyAgICA4LDAsMTMxLDIsMCwxMTUsMTg3LDEsMTI0LDgsMCwxMDYsMTgsMCwxMDYsMSwKKyAgICAwLDEwMCwxLDAsMTMxLDEsMCwxMDAsMiwwLDI1LDEyNCw4LDAsOTUsMTgsCisgICAgMCwxMTAsMCwwLDg3LDExMywyMTIsMSw0LDExNiw2LDAsMTA3LDEwLDAsMTE0LAorICAgIDIwOCwxLDEsMSwxLDg5LDExMywyMTIsMSw4OCwxMTAsMCwwLDExNiwxOSwwLAorICAgIDEyNCw4LDAsMTAwLDksMCwxMzEsMiwwLDExNSw4LDIsMTIxLDEzLDAsMTI0LAorICAgIDYsMCwxMjQsOCwwLDk1LDIwLDAsODcsMTEzLDgsMiw0LDExNiw2LDAsCisgICAgMTA3LDEwLDAsMTE0LDQsMiwxLDEsMSw4OSwxMTMsOCwyLDg4LDExMCwwLAorICAgIDAsMTI0LDgsMCw4Myw0MCwxMSwwLDAsMCw3OCwxMTcsMSwwLDAsMCwKKyAgICA0NiwxMDUsMCwwLDAsMCwxMTcsMjEsMCwwLDAsNTksMzIsMTIzLDEyNSwzMiwKKyAgICAxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKKyAgICAxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsMTgsMCwwLDAsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMzIsMTIzLDMzLDExNCwxMjUsMzIsMzUsMzIsMTIzLDMzLDExNCwxMjUsCisgICAgMTA1LDIsMCwwLDAsMTE3LDExLDAsMCwwLDk1LDk1LDExMiw5Nyw5OSwxMDcsCisgICAgOTcsMTAzLDEwMSw5NSw5NSwxMTcsOCwwLDAsMCw5NSw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwKKyAgICA5NSw4NCw0MCwyMSwwLDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwKKyAgICAxMTcsMTAsMCwwLDAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsMTE3LAorICAgIDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTE1LDExNywyNSwwLDAsMCw5NSw5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsCisgICAgMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLAorICAgIDEwMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwxMTcsMTQsCisgICAgMCwwLDAsNjUsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDY5LDExNCwxMTQsMTExLAorICAgIDExNCwxMTcsOCwwLDAsMCw5NSw2OSw4Miw4Miw5NSw3Nyw4Myw3MSwxMTcsNiwKKyAgICAwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNywxMSwwLDAsMCw3MywxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTIsMCwwLDAsOTUsMTAyLAorICAgIDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNyw0LDAsMCwwLDg0LAorICAgIDExNCwxMTcsMTAxLDExNywxMCwwLDAsMCw5NSwxMTAsMTExLDExNiw5NSwxMDIsMTExLDExNywKKyAgICAxMTAsMTAwLDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMTcsMTYsMCwwLDAsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsCisgICAgMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE3LDcsMCwwLDAsMTE1LDEwMSwxMTYsOTcsCisgICAgMTE2LDExNiwxMTQsMTE3LDcsMCwwLDAsMTAzLDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMTE3LAorICAgIDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDExLDAsMCwKKyAgICAwLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTcsNywwLDAsCisgICAgMCwxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LDExNywxMCwwLDAsMCw5NSw5NSwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDQwLDksMCwwLDAsMTE3LDQsMCwwLAorICAgIDAsMTEwLDk3LDEwOSwxMDEsMTE3LDcsMCwwLDAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgOTUsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDYsMCwwLDAsMTEyLAorICAgIDk3LDExNCwxMDEsMTEwLDExNiwxMTcsMTMsMCwwLDAsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMywwLDAsMCwxMDksMTE1LDEwMywxMTcsCisgICAgNiwwLDAsMCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNywzLDAsMCwwLDEwMSwKKyAgICAxMjAsOTksMTE3LDYsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMCwwLAorICAgIDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMjMsMCwwLDAsOTUsMTAyLAorICAgIDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsOTUsMTE3LDExMCwxMDgsCisgICAgMTExLDk5LDEwNywxMDEsMTAwLDIyNiw1LDAsMCwxMTUsNzYsMCwwLDAsMCwxLAorICAgIDYsMSwxOSwxLDYsMSwxNSwxLDE2LDIsMTUsMSwxMSwyLDEzLDEsCisgICAgMywxLDEzLDEsMTMsMSwyMiwxLDI2LDEsMTUsMSwxMiwxLDI3LDMsCisgICAgOSwxLDksMSwxNSwyLDEzLDEsMTksMiwxMywxLDYsMiwxMywxLAorICAgIDMyLDIsMjQsMSwzLDEsMTIsMSwxNSwxLDMyLDEsMTMsMSw4LDIsCisgICAgMTUsMSwzLDEsMTMsMSwxMywxLDgsMSwxMTcsMjMsMCwwLDAsOTUsCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsOTUsMTE3LDExMCwKKyAgICAxMDgsMTExLDk5LDEwNywxMDEsMTAwLDk5LDIsMCwwLDAsMCwwLDAsMCwzLAorICAgIDAsMCwwLDE4LDAsMCwwLDY3LDAsMCwwLDExNSw3NSwwLDAsMCwKKyAgICAxMjIsMTYsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsMiwwLDg3LAorICAgIDEwMCwxLDAsMTE2LDEsMCwxMDYsMiwwLDEzMSwwLDAsMSw4OCwxMjQsMiwKKyAgICAwLDEwNiwzLDAsMTMxLDAsMCwxLDEyMiwxNywwLDExNiw0LDAsMTI0LDAsCisgICAgMCwxMjQsMSwwLDEzMSwyLDAsODMsODcsMTAwLDEsMCwxMjQsMiwwLDEwNiwKKyAgICA1LDAsMTMxLDAsMCwxLDg4LDEwMCwxLDAsODMsNDAsMiwwLDAsMCwKKyAgICAxMTcsNTQsMCwwLDAsNzAsMTA1LDExMCwxMDAsMzIsOTcsMTEwLDEwMCwzMiwxMDgsMTExLAorICAgIDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiw5NywKKyAgICAxMTAsMTAwLDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDc4LDQwLDYsMCwwLAorICAgIDAsMTE3LDE2LDAsMCwwLDk1LDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywKKyAgICAxMiwwLDAsMCwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw5NSwxMDgsMTExLDk5LDEwNywKKyAgICAxMTcsNywwLDAsMCw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNywyMywwLDAsCisgICAgMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwKKyAgICAxMTcsMTEwLDEwOCwxMTEsOTksMTA3LDEwMSwxMDAsMTE3LDcsMCwwLDAsMTE0LDEwMSwxMDgsCisgICAgMTAxLDk3LDExNSwxMDEsNDAsMywwLDAsMCwxMTcsNCwwLDAsMCwxMTAsOTcsCisgICAgMTA5LDEwMSwxMTcsNywwLDAsMCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMTcsNCwKKyAgICAwLDAsMCwxMDgsMTExLDk5LDEwNyw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNywxNCwwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLAorICAgIDEwMCw5NSwxMDgsMTExLDk3LDEwMCwyMCw2LDAsMCwxMTUsMTQsMCwwLDAsMCwKKyAgICAyLDMsMSwxNiwyLDExLDEsMTAsMSwzLDEsMTcsMiwxMTcsMTQsMCwKKyAgICAwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsCisgICAgOTksMywwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNCwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTcyLDAsMCwwLDExNiwwLDAsMTI0LDAsMCwKKyAgICAxMjQsMSwwLDEyNCwyLDAsMTMxLDMsMCwxLDEyNCwyLDAsMTAwLDEsMCwKKyAgICAxMDcsNCwwLDExNCw0OSwwLDExNiwxLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwKKyAgICAyLDAsMTMxLDMsMCwxMjUsMCwwLDExMCwwLDAsMTE2LDIsMCwxMDYsMywKKyAgICAwLDEzMSwwLDAsMSwxMjQsMCwwLDExNiw0LDAsMTA2LDUsMCwxMDcsNywKKyAgICAwLDExNCw4NywwLDExNiw2LDAsMTI0LDAsMCwxMTYsNywwLDEzMSwyLDAsCisgICAgODMsMTE2LDQsMCwxMDYsNSwwLDEyNCwwLDAsMjUsMTI1LDMsMCwxMjQsMywKKyAgICAwLDEwMCw0LDAsMTA3LDgsMCwxMTQsMTU4LDAsMTE2LDIsMCwxMDYsOSwwLAorICAgIDEzMSwwLDAsMSwxMDAsMiwwLDEwNiwxMCwwLDEyNCwwLDAsMTMxLDEsMCwKKyAgICAxMjUsNCwwLDExNiwxMSwwLDEyNCw0LDAsMTAwLDMsMCwxMjQsMCwwLDEzMSwKKyAgICAxLDEsMTMwLDEsMCwxMTAsMCwwLDExNiwxMiwwLDEyNCwwLDAsMTMxLDEsCisgICAgMCwxLDEyNCwzLDAsODMsNDAsNSwwLDAsMCwxMTcsNTAsMSwwLDAsCisgICAgNzMsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsCisgICAgMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDk3LDExNSwKKyAgICAxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTA1LDExNiwxMTUsMzIsMTEwLDk3LDEwOSwxMDEsNDQsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDk5LDk3LDEwOCwxMDgsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTA1LDExMCwKKyAgICAxMDMsMzIsMTA5LDk3LDEwMCwxMDEsMzIsMTAyLDExNCwxMTEsMTA5LDQ0LDMyLDk3LDExMCwxMDAsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiw5NywxMDAsMTA2LDExNywxMTUsCisgICAgMTE2LDEwOSwxMDEsMTEwLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwKKyAgICAzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsCisgICAgMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMTQsMTAxLDk3LDExNiwxMDEsMTE1LAorICAgIDExNiwzMiw5OSwxMTEsMTA5LDEwOSwxMTEsMTEwLDMyLDEwMCwxMDEsMTEwLDExMSwxMDksMTA1LDExMCwKKyAgICA5NywxMTYsMTExLDExNCwzMiwxMTEsMTAyLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwKKyAgICA5NywxMDgsMTA1LDExNiwxMjEsMTAsMzIsMzIsMzIsMzIsOTgsMTAxLDExNiwxMTksMTAxLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCisgICAgOTcsMTEwLDEwMCwzMiw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSw0NiwzMiwKKyAgICA4NCwxMDQsMTA1LDExNSwzMiwxMDUsMTEwLDk5LDEwOCwxMTcsMTAwLDEwMSwxMTUsMzIsMTE1LDEwMSwKKyAgICAxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSwKKyAgICA5NSwzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsMzIsMTAwLDEwNSwxMDAsMzIsMTEwLDExMSwxMTYsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsMTA1LDAsMCwwLDAsMTE3LDQwLDAsMCwwLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDMyLDExMSwxMDIsMzIsMTIzLDEyNSwzMiwxMDQsOTcsMTA4LDExNiwxMDEsMTAwLDU5LAorICAgIDMyLDc4LDExMSwxMTAsMTAxLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDc4LDQwLDEzLAorICAgIDAsMCwwLDExNywxMywwLDAsMCw5NSwxMTUsOTcsMTEwLDEwNSwxMTYsMTIxLDk1LAorICAgIDk5LDEwNCwxMDEsOTksMTA3LDExNywxMywwLDAsMCw5NSwxMTQsMTAxLDExNSwxMTEsMTA4LAorICAgIDExOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsOTUsMTA1LDEwOSwxMTIsCisgICAgMTE3LDEyLDAsMCwwLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsOTUsMTA4LDExMSw5OSwKKyAgICAxMDcsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDcsMCwwLDAsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE1LDExNywxNCwwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsCisgICAgOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMTcsMTEsMCwwLDAsOTUsMTAzLDk5LAorICAgIDEwMCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLAorICAgIDEwMSwxMTcsMTIsMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTUsMTA4LDExMSwKKyAgICA5OSwxMDcsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsMTEsMCwKKyAgICAwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDE5LDAsCisgICAgMCwwLDk1LDEwOCwxMTEsOTksMTA3LDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNSwwLDAsMCwxMTcsNCwwLDAsMCwxMTAsCisgICAgOTcsMTA5LDEwMSwxMTcsNywwLDAsMCwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LAorICAgIDUsMCwwLDAsMTA4LDEwMSwxMTgsMTAxLDEwOCwxMTcsNiwwLDAsMCwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTcsNywwLDAsMCwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwKKyAgICA0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLAorICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsCisgICAgMCw5NSwxMDMsOTksMTAwLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMzLDYsMCwwLAorICAgIDExNSwyOCwwLDAsMCwwLDksMTYsMSwxMiwxLDIxLDEsMTAsMSwxNSwKKyAgICAxLDEzLDEsMTMsMSwxMiwxLDEwLDEsNiwxLDksMSwyMSwxLDEwLAorICAgIDEsMTE3LDExLDAsMCwwLDk1LDEwMyw5OSwxMDAsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsOTksMywwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTcsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDI1NCwwLDAsMCwxMTYsMCwwLDEyNCwwLAorICAgIDAsMTAwLDEsMCwxMzEsMiwwLDExNCwyNTAsMCwxMDAsMiwwLDEyNCwxLDAsCisgICAgMTA3LDYsMCwxMTQsODksMCwxMTYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsCisgICAgMSwwLDEyNCwxLDAsMTA2LDIsMCwxMDAsMiwwLDEzMSwxLDAsMSwxMTYsCisgICAgMCwwLDEyNCwwLDAsMTAwLDMsMCwxMzEsMiwwLDExNCw4OSwwLDEyNCwxLAorICAgIDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw0LDAsMTMxLDEsMCwxLDExMyw4OSwKKyAgICAwLDExMCwwLDAsMTIwLDE1OCwwLDEyNCwxLDAsNjgsOTMsMTQ3LDAsMTI1LDMsCisgICAgMCwxMTYsMCwwLDEyNCwwLDAsMTI0LDMsMCwxMzEsMiwwLDExNSw5NiwwLAorICAgIDEwMCw0LDAsMTA2LDUsMCwxMjQsMCwwLDEwNiw2LDAsMTI0LDMsMCwxMzEsCisgICAgMiwwLDEyNSw0LDAsMTIxLDE3LDAsMTE2LDcsMCwxMjQsMiwwLDEyNCw0LAorICAgIDAsMTMxLDIsMCwxLDg3LDExMywyNDMsMCw0LDExNiw4LDAsMTA3LDEwLDAsCisgICAgMTE0LDIzOSwwLDEsMTI1LDUsMCwxLDEyMiw1MCwwLDExNiw5LDAsMTI0LDUsCisgICAgMCwxMDAsNSwwLDEwMCw3LDAsMTMxLDMsMCwxMTQsMjE4LDAsMTI0LDUsMCwKKyAgICAxMDYsMTEsMCwxMjQsNCwwLDEwNywyLDAsMTE0LDIxOCwwLDExOSw5NiwwLDExMywKKyAgICAyMTgsMCwxMTAsMCwwLDEzMCwwLDAsODcsODksMTAwLDYsMCwxMDAsNiwwLAorICAgIDEyNSw1LDAsMTI2LDUsMCw4OCwxMTMsMjQzLDAsODgsMTEzLDk2LDAsMTEzLDk2LAorICAgIDAsODcsMTEwLDAsMCwxMjQsMCwwLDgzLDQwLDgsMCwwLDAsMTE3LDIzOCwKKyAgICAwLDAsMCw3MCwxMDUsMTAzLDExNywxMTQsMTAxLDMyLDExMSwxMTcsMTE2LDMyLDExOSwxMDQsCisgICAgOTcsMTE2LDMyLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDMyLDExNSwxMDQsCisgICAgMTExLDExNywxMDgsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMzIsMTEyLDk3LAorICAgIDExNCw5NywxMDksMTAxLDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsOTcsMzIsOTksOTcsMTA4LAorICAgIDEwOCw5Nyw5OCwxMDgsMTAxLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTYsOTcsMTA3LDEwMSwKKyAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDQ2LDMyLDczLDExNiwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LAorICAgIDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDk5LDExMSwxMTcsMTEyLDEwOCwxMDEsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwxMTQsMTExLDEwOSwKKyAgICAzMiw5NywxMTUsMTE1LDExNywxMDksMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCwzOSwxMTUsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLAorICAgIDEwNSwxMTUsMzIsMTAwLDEwMSwxMTUsMTA1LDExNCwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDExNyw4LDAsMCwwLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDExNywxLAorICAgIDAsMCwwLDQyLDExNyw3LDAsMCwwLDk1LDk1LDk3LDEwOCwxMDgsOTUsOTUsCisgICAgMTE3LDUsMCwwLDAsMTIzLDEyNSw0NiwxMjMsMTI1LDExNywxMCwwLDAsMCw5NSwKKyAgICAxMTAsMTExLDExNiw5NSwxMDIsMTExLDExNywxMTAsMTAwLDc4LDcwLDQwLDEyLDAsMCwwLAorICAgIDExNyw3LDAsMCwwLDEwNCw5NywxMTUsOTcsMTE2LDExNiwxMTQsMTE3LDQsMCwwLAorICAgIDAsMTA4LDEwNSwxMTUsMTE2LDExNyw2LDAsMCwwLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLAorICAgIDExNyw2LDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTAwLDExNyw3LDAsMCwwLAorICAgIDk1LDk1LDk3LDEwOCwxMDgsOTUsOTUsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LAorICAgIDk3LDExNiwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsCisgICAgMjUsMCwwLDAsOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLAorICAgIDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMTE3LDExLDAsCisgICAgMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNyw3LDAsCisgICAgMCwwLDEwMywxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDExNyw1LDAsMCwwLDcwLDk3LAorICAgIDEwOCwxMTUsMTAxLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDQwLDYsMCwwLAorICAgIDAsMTE3LDYsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDgsMCwwLAorICAgIDAsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiwxMTcsNywwLDAsMCwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiw5NSwxMTcsMSwwLDAsMCwxMjAsMTE3LDksMCwwLDAsCisgICAgMTAyLDExNCwxMTEsMTA5LDk1LDExMCw5NywxMDksMTAxLDExNywzLDAsMCwwLDEwMSwxMjAsCisgICAgOTksNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCwKKyAgICA2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAorICAgIDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTYsMCwKKyAgICAwLDAsOTUsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwKKyAgICAxMTUsMTE2LDU3LDYsMCwwLDExNSwzNCwwLDAsMCwwLDEwLDE1LDEsMTIsCisgICAgMSwxMiwxLDEzLDEsMTUsMSwyMiwxLDEzLDEsMTUsMSwyMSwxLDMsCisgICAgMSwxNywxLDE4LDYsMTgsMSwxNSwxLDksMSwzMiwxLDExNywxNiwwLAorICAgIDAsMCw5NSwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LAorICAgIDExNSwxMTYsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsNzgsMCwwLDAsMTI0LDAsMCwxMDYsCisgICAgMCwwLDEwMCwxLDAsMTMxLDEsMCwxMjUsMSwwLDEyNCwxLDAsMTAwLDYsCisgICAgMCwxMDcsOCwwLDExNCw3NCwwLDEyNCwwLDAsMTAwLDIsMCwyNSwxMjUsMSwKKyAgICAwLDEwMCwzLDAsMTI0LDAsMCwxMDcsNywwLDExNCw3NCwwLDEyNCwxLDAsCisgICAgMTA2LDIsMCwxMDAsNCwwLDEzMSwxLDAsMTAwLDUsMCwyNSwxMjUsMSwwLAorICAgIDExMyw3NCwwLDExMCwwLDAsMTI0LDEsMCw4Myw0MCw3LDAsMCwwLDExNywKKyAgICAxNjcsMCwwLDAsNjcsOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwzMiwxMTksMTA0LAorICAgIDk3LDExNiwzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTE1LAorICAgIDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk1LAorICAgIDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsCisgICAgMTE2LDMyLDEwMywxMTcsOTcsMTE0LDk3LDExMCwxMTYsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwKKyAgICA5OCwxMDEsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsMTAwLDMyLDExMSwxMTQsMzIsOTksMTExLAorICAgIDExNywxMDgsMTAwLDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsMTExLDMyLDc4LDExMSwKKyAgICAxMTAsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsCisgICAgMTAxLDExMCwxMTYsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTA1LDExNiwxMTUsMzIsMTEyLDExNCwxMTEsCisgICAgMTEyLDEwMSwxMTQsMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDMyLDEwNSwxMTUsMzIsMTE3LDExMCwxMDcsCisgICAgMTEwLDExMSwxMTksMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNywxMSwwLDAsMCwKKyAgICA5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE3LDgsMCwwLDAsCisgICAgOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDgsMCwwLDAsOTUsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsOTUsMTE3LDEsMCwwLDAsNDYsMTA1LDAsMCwwLDAsCisgICAgNzgsNDAsMywwLDAsMCwxMTcsMywwLDAsMCwxMDMsMTAxLDExNiwxMTcsNCwKKyAgICAwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTAsMCwwLDAsMTE0LDExMiw5NywxMTQsCisgICAgMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsNDAsMiwwLDAsMCwxMTcsNywwLDAsMCwKKyAgICAxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDExNyw3LDAsMCwwLDExMiw5Nyw5OSwxMDcsCisgICAgOTcsMTAzLDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsCisgICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKKyAgICAxNywwLDAsMCw5NSw5OSw5NywxMDgsOTksOTUsOTUsOTUsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDk1LDk1LDkxLDYsMCwwLDExNSwxMiwwLDAsMCwwLDcsCisgICAgMTUsMSwxMiwxLDEwLDEsMTIsMSwyNSwxLDExNywxNywwLDAsMCw5NSwKKyAgICA5OSw5NywxMDgsOTksOTUsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDU1LDAsMCwwLDExNiwwLDAsMTE2LDEsMCwKKyAgICAxMDYsMiwwLDEzMSwwLDAsMTAyLDIsMCwxMjUsMCwwLDExNiwzLDAsMTE2LAorICAgIDQsMCwxMDIsMiwwLDEyNSwxLDAsMTE2LDUsMCwxMTYsNiwwLDEwMiwyLAorICAgIDAsMTI1LDIsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMDMsMywwLAorICAgIDgzLDQwLDEsMCwwLDAsMTE3LDExMSwwLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsCisgICAgMTEwLDExNSwzMiw5NywzMiwxMDgsMTA1LDExNSwxMTYsMzIsMTExLDEwMiwzMiwxMDIsMTA1LDEwOCwKKyAgICAxMDEsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjksOTcsOTksCisgICAgMTA0LDMyLDEwNSwxMTYsMTAxLDEwOSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExNiwxMTcsMTEyLDEwOCwKKyAgICAxMDEsMzIsNDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NCwzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LAorICAgIDEyMCwxMDEsMTE1LDQ0LDMyLDk3LDEwOCwxMDgsMTExLDExOSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsMTE1LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLDQwLDcsMCwwLDAsMTE3LAorICAgIDE5LDAsMCwwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLAorICAgIDExNywxOCwwLDAsMCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw5NSwxMTUsCisgICAgMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDExNywxNiwwLDAsMCw4MywxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxNSwwLDAsCisgICAgMCw4Myw3OSw4NSw4Miw2Nyw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywKKyAgICAxMTcsMjAsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwKKyAgICAxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE3LDAsMCwwLDY2LDg5LAorICAgIDg0LDY5LDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDQwLAorICAgIDMsMCwwLDAsMTE3LDEwLDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKKyAgICAxMTEsMTEwLDExNSwxMTcsNiwwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNyw4LAorICAgIDAsMCwwLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDQwLDAsMCwwLDAsCisgICAgNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDI3LDAsMCwwLDk1LDEwMywxMDEsMTE2LAorICAgIDk1LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMDYsNiwwLDAsMTE1LDgsMCwwLDAsCisgICAgMCw1LDE4LDEsMTIsMSwxMiwxLDExNywyNywwLDAsMCw5NSwxMDMsMTAxLAorICAgIDExNiw5NSwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw5NSwxMDIsMTA1LDEwOCwxMDEsCisgICAgOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsOTksNSwwLDAsMCwwLDAsMCwKKyAgICAwLDksMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsMjI3LDAsCisgICAgMCwwLDEyNCw0LDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyNywwLDExNiwwLAorICAgIDAsMTI0LDAsMCwxMzEsMSwwLDEyNSw1LDAsMTEwLDU0LDAsMTI0LDEsMCwKKyAgICAxMDAsMywwLDEwNyw5LDAsMTE0LDQ1LDAsMTI0LDEsMCwxMTAsMywwLDEwNSwKKyAgICAwLDAsMTI1LDYsMCwxMTYsMiwwLDEyNCw2LDAsMTMxLDEsMCwxMjUsNywKKyAgICAwLDExNiwwLDAsMTI0LDAsMCwxMjQsNywwLDEyNCw0LDAsMTMxLDMsMCwKKyAgICAxMjUsNSwwLDEyNCwzLDAsMTE1LDIwNywwLDEyNCw0LDAsMTAwLDEsMCwxMDcsCisgICAgMiwwLDExNCwxMjIsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDMsMCwxMDAsMiwKKyAgICAwLDEzMSwxLDAsMTAwLDEsMCwyNSwxMzEsMSwwLDgzLDEyNCwwLDAsMTE1LAorICAgIDEzMiwwLDEyNCw1LDAsODMsMTE2LDQsMCwxMjQsMCwwLDEzMSwxLDAsMTE2LAorICAgIDQsMCwxMjQsMCwwLDEwNiwzLDAsMTAwLDIsMCwxMzEsMSwwLDEwMCwxLAorICAgIDAsMjUsMTMxLDEsMCwyNCwxMjUsOCwwLDExNiw1LDAsMTA2LDYsMCwxMjQsCisgICAgNSwwLDEwNiw3LDAsMTAwLDMsMCwxMTYsNCwwLDEyNCw1LDAsMTA2LDcsCisgICAgMCwxMzEsMSwwLDEyNCw4LDAsMjQsMTMzLDIsMCwyNSwyNSw4MywxMTAsMTYsCisgICAgMCwxMTYsOCwwLDEyNCw1LDAsMTI0LDMsMCwxMTYsMCwwLDEzMSwzLDAsCisgICAgODMsMTAwLDMsMCw4Myw0MCw0LDAsMCwwLDExNywyMTQsMSwwLDAsNzMsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwMywxMDgsMTExLDk4LDk3LDEwOCwKKyAgICAxMTUsMzksMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsMTE3LAorICAgIDExNSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA1LDExMCwxMDIsMTAxLDExNCwzMiwxMTksMTA0LDEwMSwKKyAgICAxMTQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwNSwxMTUsCisgICAgMzIsMTExLDk5LDk5LDExNywxMTQsMTA1LDExMCwxMDMsMzIsMTAyLDExNCwxMTEsMTA5LDEwLDMyLAorICAgIDMyLDMyLDMyLDExNiwxMTEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwzMiwxMTQsMTAxLDEwOCwKKyAgICA5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE1LDQ2LDMyLDg0LAorICAgIDEwNCwxMDEsMzIsMzksMTA4LDExMSw5OSw5NywxMDgsMTE1LDM5LDMyLDk3LDExNCwxMDMsMTE3LAorICAgIDEwOSwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDMyLDEwNSwxMDMsMTEwLDExMSwxMTQsMTAxLDEwMCw0NiwKKyAgICAzMiw4NCwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDM5LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LAorICAgIDExNSwxMTYsMzksMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDExNSwxMTIsMTAxLAorICAgIDk5LDEwNSwxMDIsMTA1LDEwMSwxMTUsMzIsMTE5LDEwNCw5NywxMTYsMzIsMTE1LDEwNCwxMTEsMTE3LAorICAgIDEwOCwxMDAsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwzMiw5NywxMTUsMzIsOTcsMTE2LDExNiwxMTQsCisgICAgMTA1LDk4LDExNywxMTYsMTAxLDExNSwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDEwLDMyLDMyLDMyLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsOTYsOTYsCisgICAgMTAyLDExNCwxMTEsMTA5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDMyLDYwLDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsNjIsOTYsOTYsNDEsCisgICAgNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwxMDgsMTAxLDExOCwxMDEsMTA4LDM5LDEwLDMyLAorICAgIDMyLDMyLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMTQsMTAxLDExMiwxMTQsCisgICAgMTAxLDExNSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDMyLDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEwNSwxMTAsMzIsOTcsMzIsCisgICAgMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsOTYsOTYsMTAyLDExNCwxMTEsMTA5LAorICAgIDMyLDQ2LDQ2LDExMiwxMDcsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOSwxMTEsCisgICAgMTAwLDk2LDk2LDMyLDExOSwxMTEsMTE3LDEwOCwxMDAsMzIsMTA0LDk3LDExOCwxMDEsMzIsOTcsCisgICAgMzIsMzksMTA4LDEwMSwxMTgsMTAxLDEwOCwzOSwzMiwxMTEsMTAyLDMyLDUwLDQxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDEwNSwwLDAsMCwwLDExNywxLDAsMCwwLDQ2LAorICAgIDc4LDQwLDksMCwwLDAsMTE3LDExLDAsMCwwLDk1LDEwMyw5OSwxMDAsOTUsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LAorICAgIDE3LDAsMCwwLDk1LDk5LDk3LDEwOCw5OSw5NSw5NSw5NSwxMTIsOTcsOTksMTA3LAorICAgIDk3LDEwMywxMDEsOTUsOTUsMTE3LDksMCwwLDAsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwKKyAgICAxMDUsMTExLDExMCwxMTcsMywwLDAsMCwxMDgsMTAxLDExMCwxMTcsMywwLDAsMCwKKyAgICAxMTUsMTIxLDExNSwxMTcsNywwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE3LAorICAgIDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDE2LDAsMCwKKyAgICAwLDk1LDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LAorICAgIDExNiw0MCw5LDAsMCwwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNywKKyAgICA3LDAsMCwwLDEwMywxMDgsMTExLDk4LDk3LDEwOCwxMTUsMTE3LDYsMCwwLDAsCisgICAgMTA4LDExMSw5OSw5NywxMDgsMTE1LDExNyw4LDAsMCwwLDEwMiwxMTQsMTExLDEwOSwxMDgsCisgICAgMTA1LDExNSwxMTYsMTE3LDUsMCwwLDAsMTA4LDEwMSwxMTgsMTAxLDEwOCwxMTcsNiwwLAorICAgIDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsOCwwLDAsMCwxMDMsMTA4LDExMSwKKyAgICA5OCw5NywxMDgsMTE1LDk1LDExNyw3LDAsMCwwLDExMiw5Nyw5OSwxMDcsOTcsMTAzLAorICAgIDEwMSwxMTcsNywwLDAsMCw5OSwxMTcsMTE2LDk1LDExMSwxMDIsMTAyLDQwLDAsMCwKKyAgICAwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCisgICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKKyAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDk1LDk1LAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDExNyw2LDAsMCwxMTUsMjYsMCwwLAorICAgIDAsMCwxMSwxMiwxLDE1LDIsMjQsMSwxMiwxLDE4LDEsNiwzLDEyLAorICAgIDEsMjMsMSw2LDEsNCw0LDM1LDMsNDAsMiwxMTcsMTAsMCwwLDAsCisgICAgOTUsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsOTUsOTksMiwwLDAsMCwwLAorICAgIDAsMCwwLDE2LDAsMCwwLDEzLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAyNCwzLDAsMCwxMjQsMSwwLDk3LDAsMCwxMjQsMCwwLDk3LDEsMCwKKyAgICAxMTYsMSwwLDEwNiwyLDAsMTA2LDMsMCwxMTQsMzMsMCwxMTYsNCwwLDk3LAorICAgIDUsMCwxMTAsNiwwLDExNiw2LDAsOTcsNSwwLDExNiw3LDAsMTE2LDEsCisgICAgMCwxMzEsMSwwLDEyNSwyLDAsMTIwLDExOSwwLDExNiwxLDAsMTA2LDgsMCwKKyAgICAxMDYsOSwwLDEzMSwwLDAsNjgsOTMsMTAyLDAsOTIsMiwwLDEyNSwzLDAsCisgICAgMTI1LDQsMCwxMTYsMTAsMCwxMjQsNCwwLDEyNCwyLDAsMTMxLDIsMCwxMTQsCisgICAgNjcsMCwxMTYsMTEsMCwxMjQsNCwwLDEwMCwxLDAsMTMxLDIsMCwxMTUsMTY5LAorICAgIDAsMTI0LDMsMCwxMTYsMSwwLDEwNiwxMiwwLDEwNyw2LDAsMTE0LDEzNiwwLAorICAgIDExNiwxMywwLDEyNCw0LDAsOTUsMTQsMCwxMTMsMTY2LDAsMTE2LDAsMCwxMDYsCisgICAgMTUsMCwxMjQsMywwLDEzMSwxLDAsMTE0LDE2NiwwLDExNiwxNiwwLDEyNCw0LAorICAgIDAsOTUsMTQsMCwxMTMsMTY2LDAsMTEzLDE2OSwwLDExMyw2NywwLDExMyw2NywwLAorICAgIDg3LDExNiwxLDAsMTA2LDgsMCwxMTYsMTcsMCwyNSwxMjUsNSwwLDEyMCw3NiwKKyAgICAwLDEwMCwyOCwwLDY4LDkzLDY4LDAsMTI1LDYsMCwxMjQsNiwwLDExNiwxLAorICAgIDAsMTA2LDgsMCwxMDcsNywwLDExNCwyMzIsMCwxMTYsMTMsMCwxMDYsMTgsMCwKKyAgICAxMjQsNiwwLDEzMSwxLDAsMTI1LDcsMCwxMTAsMTMsMCwxMTYsMSwwLDEwNiwKKyAgICA4LDAsMTI0LDYsMCwyNSwxMjUsNywwLDExNiwxOSwwLDEyNCw1LDAsMTI0LAorICAgIDYsMCwxMjQsNywwLDEzMSwzLDAsMSwxMTMsMTkzLDAsODcsMTAwLDYsMCwKKyAgICAxMDAsNywwLDEwMywxLDAsMTAyLDIsMCwxMDAsOCwwLDEwMCw5LDAsMTAwLAorICAgIDcsMCwxMDMsMiwwLDEwMiwyLDAsMTAwLDEwLDAsMTAwLDksMCwxMDAsNywKKyAgICAwLDEwMywyLDAsMTAyLDIsMCwxMDIsMywwLDEyNSw4LDAsMTIwLDE4OSwwLAorICAgIDEyNCw4LDAsNjgsOTMsMTY5LDAsOTIsMiwwLDEyNSw5LDAsMTI1LDEwLDAsCisgICAgMTE2LDIwLDAsMTAwLDExLDAsMTAwLDEyLDAsMTMyLDAsMCwxMjQsMTAsMCw2OCwKKyAgICAxMzEsMSwwLDEzMSwxLDAsMTE1LDEwNywxLDExNiwyMSwwLDEzMCwxLDAsMTI0LAorICAgIDEwLDAsMTAwLDEzLDAsMjUsMTI1LDExLDAsMTI0LDksMCwxMTYsMSwwLDEwNiwKKyAgICA4LDAsMTA3LDYsMCwxMTQsMTQ5LDEsMTE2LDEsMCwxMDYsOCwwLDEyNCw5LAorICAgIDAsMjUsMTI1LDEyLDAsODAsMTEzLDY0LDEsMTIxLDYwLDAsMTE2LDEzLDAsMTA2LAorICAgIDE4LDAsMTI0LDksMCwxMzEsMSwwLDEyNSwxMiwwLDEyNCw5LDAsMTAwLDEwLAorICAgIDAsMTA3LDIsMCwxMTQsMjA3LDEsMTAwLDE0LDAsMTE2LDEsMCwxMDYsMjIsMCwKKyAgICAxMDcsNiwwLDExNCwyMDcsMSwxMjQsMTAsMCwxMDAsMTUsMCwyNSwxMjUsMTEsMCwKKyAgICAxMTAsMCwwLDgwLDg3LDExMyw2NCwxLDQsMTE2LDIzLDAsMTA3LDEwLDAsMTE0LAorICAgIDIzMiwxLDEsMSwxLDExOSw2NCwxLDg5LDExMyw2NCwxLDg4LDExMyw2NCwxLAorICAgIDg3LDExNiwyMywwLDEwMCwxNiwwLDEzMSwxLDAsMTMwLDEsMCwxMjEsMTksMCwKKyAgICAxMTYsMTMsMCwxMDYsMTgsMCwxMDAsMTcsMCwxMzEsMSwwLDEyNSwxMywwLDg3LAorICAgIDExMCwyNCwwLDQsMTE2LDIzLDAsMTA3LDEwLDAsMTE0LDM4LDIsMSwxLDEsCisgICAgMTAwLDI3LDAsMTI1LDEzLDAsODksMTEwLDEsMCw4OCwxMTYsMTMsMCwxMDYsMTgsCisgICAgMCwxMDAsMTgsMCwxMzEsMSwwLDEyNSwxNCwwLDEyNCw5LDAsMTAwLDgsMCwKKyAgICAxMDcsMiwwLDExNCwxMDAsMiwxMTYsMTMsMCwxMDYsMTgsMCwxMDAsMTksMCwxMzEsCisgICAgMSwwLDEyNSwxNSwwLDExNiwxOSwwLDEyNCw1LDAsMTAwLDIwLDAsMTI0LDE1LAorICAgIDAsMTMxLDMsMCwxLDExMCwwLDAsMTE2LDE5LDAsMTI0LDUsMCwxMDAsMjEsCisgICAgMCwxMjQsMTIsMCwxMzEsMywwLDEsMTE2LDE5LDAsMTI0LDUsMCwxMDAsMTcsCisgICAgMCwxMjQsMTMsMCwxMzEsMywwLDEsMTE2LDE5LDAsMTI0LDUsMCwxMDAsMTgsCisgICAgMCwxMjQsMTQsMCwxMzEsMywwLDEsMTE2LDE5LDAsMTI0LDUsMCwxMDAsMjIsCisgICAgMCwxMjQsMTEsMCwxMzEsMywwLDEsMTE2LDE5LDAsMTI0LDUsMCwxMDAsMjMsCisgICAgMCwxMTYsMjUsMCwxMjQsMTAsMCwxMzEsMSwwLDEzMSwzLDAsMSwxMTYsMTksCisgICAgMCwxMjQsNSwwLDEwMCwyNCwwLDExNiwyNiwwLDEzMSwwLDAsMTMxLDMsMCwKKyAgICAxLDExNiwyNywwLDEwNiwyOCwwLDExNiwwLDAsMTA2LDI5LDAsMTMxLDAsMCwKKyAgICAxMzEsMSwwLDEsMTI0LDksMCwxMDAsOCwwLDEwNywyLDAsMTE0LDIwLDMsCisgICAgMTE2LDMwLDAsMTA2LDMxLDAsMTAwLDI1LDAsMTMxLDEsMCwxLDEwMCwyNiwwLAorICAgIDExNiwyNywwLDEwNyw2LDAsMTE0LDIwLDMsMTAwLDI5LDAsMTE2LDMzLDAsOTUsCisgICAgMzQsMCwxMTMsMjAsMywxMTAsMCwwLDEwMCwyNywwLDgzLDQwLDMwLDAsMCwKKyAgICAwLDExNywyNTAsMCwwLDAsODMsMTAxLDExNiwxMTcsMTEyLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwKKyAgICAxMTAsMTAzLDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwKKyAgICAxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDEwNSwKKyAgICAxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMTA5LDEwLDMyLDMyLAorICAgIDMyLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywKKyAgICAxMDgsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsNjUsMTE1LDMyLDExNSwxMjEsMTE1LDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLAorICAgIDEwMSwxMDAsMzIsMTAyLDExMSwxMTQsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTE1LDMyLDk3LDk5LDk5LDEwMSwxMTUsMTE1LDMyLDk3LDExMCwxMDAsMzIsOTUsMTA1LAorICAgIDEwOSwxMTIsMzIsMTA1LDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLAorICAgIDEwOCwxMTEsOTcsMTAwLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDExMSwxMTUsMTAxLAorICAgIDMyLDExNiwxMTksMTExLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDksMTE3LDExNSwKKyAgICAxMTYsMzIsOTgsMTAxLDMyLDEwMSwxMjAsMTEyLDEwOCwxMDUsOTksMTA1LDExNiwxMDgsMTIxLDMyLAorICAgIDExMiw5NywxMTUsMTE1LDEwMSwxMDAsMzIsMTA1LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKKyAgICAxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSwxMTcsCisgICAgMywwLDAsMCw5NSwxMDUsMTExLDExNyw5LDAsMCwwLDk1LDExOSw5NywxMTQsCisgICAgMTEwLDEwNSwxMTAsMTAzLDExNSwxMTcsOCwwLDAsMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LAorICAgIDExMCwxMTUsMTE3LDcsMCwwLDAsMTA5LDk3LDExNCwxMTUsMTA0LDk3LDEwOCwxMTcsNSwKKyAgICAwLDAsMCwxMTIsMTExLDExNSwxMDUsMTIwLDExNywxLDAsMCwwLDQ3LDExNywyLAorICAgIDAsMCwwLDExMCwxMTYsMTE3LDEsMCwwLDAsOTIsMTE3LDMsMCwwLDAsCisgICAgMTExLDExNSw1MCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKKyAgICAzLDAsMCwwLDExNSwwLDAsMCwxMTUsMzMsMCwwLDAsMTI0LDAsMCwKKyAgICA5MywyMywwLDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTAwLAorICAgIDAsMCwxMDcsMiwwLDg2LDEsMTEzLDMsMCwxMDAsMSwwLDgzLDQwLDIsCisgICAgMCwwLDAsMTA1LDEsMCwwLDAsNzgsNDAsMSwwLDAsMCwxMTcsMywKKyAgICAwLDAsMCwxMDgsMTAxLDExMCw0MCwyLDAsMCwwLDExNywyLDAsMCwwLAorICAgIDQ2LDQ4LDExNywzLDAsMCwwLDExNSwxMDEsMTEyLDQwLDAsMCwwLDAsNDAsCisgICAgMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwKKyAgICAxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDksMCwwLDAsNjAsMTAzLDEwMSwxMTAsMTAxLAorICAgIDEyMCwxMTIsMTE0LDYyLDE5MCw2LDAsMCwxMTUsMiwwLDAsMCw2LDAsMTE3LAorICAgIDI1LDAsMCwwLDk1LDExNSwxMDEsMTE2LDExNywxMTIsNDYsNjAsMTA4LDExMSw5OSw5NywKKyAgICAxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMDUsMCwwLAorICAgIDAsMCwxMTcsNywwLDAsMCw2OSw3Nyw4OCwzMiw3MSw2Nyw2NywxMDUsMSwKKyAgICAwLDAsMCwxMTcsMzAsMCwwLDAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKKyAgICA5OCwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExMiwxMTEsMTE1LDEwNSwxMjAsCisgICAgMzIsMTExLDExNCwzMiwxMTAsMTE2LDExNyw3LDAsMCwwLDk1LDExNiwxMDQsMTE0LDEwMSwKKyAgICA5NywxMDAsMTE3LDgsMCwwLDAsOTUsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsMTE3LAorICAgIDYsMCwwLDAsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsMTE3LDcsMCwwLDAsOTUsCisgICAgMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsMTE3LDMsMCwwLDAsOTUsMTExLDExNSwxMTcsOCwKKyAgICAwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiwxMTcsMTUsMCwwLDAsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTE1LDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMTEsMTE0LDExNSwxMTcsCisgICAgMTEsMCwwLDAsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsMTE3LAorICAgIDQsMCwwLDAsNDYsMTEyLDEyMSwxMTksMTE3LDYsMCwwLDAsOTUsMTAwLDQ2LAorICAgIDExMiwxMjEsMTAwLDc4LDQwLDQsMCwwLDAsMTE3LDMsMCwwLDAsOTUsMTA1LAorICAgIDExMSwxMTcsOSwwLDAsMCw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMTE3LAorICAgIDgsMCwwLDAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsMTE1LDExNyw3LDAsMCwKKyAgICAwLDEwOSw5NywxMTQsMTE1LDEwNCw5NywxMDgsODQsNDAsMzUsMCwwLDAsMTE3LDQsCisgICAgMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LAorICAgIDUsMCwwLDAsMTAyLDEwOCw5NywxMDMsMTE1LDExNyw4LDAsMCwwLDExMSwxMTIsCisgICAgMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMTE3LDI3LDAsMCwwLDc5LDgwLDg0LDczLDc3LAorICAgIDczLDkwLDY5LDY4LDk1LDY2LDg5LDg0LDY5LDY3LDc5LDY4LDY5LDk1LDgzLDg1LAorICAgIDcwLDcwLDczLDg4LDY5LDgzLDExNywxNywwLDAsMCw2Niw4OSw4NCw2OSw2NywKKyAgICA3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTcsMjMsMCwwLAorICAgIDAsNjgsNjksNjYsODUsNzEsOTUsNjYsODksODQsNjksNjcsNzksNjgsNjksOTUsCisgICAgODMsODUsNzAsNzAsNzMsODgsNjksODMsMTE3LDQsMCwwLDAsMTE2LDEyMSwxMTIsCisgICAgMTAxLDExNyw3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTcsNSwwLAorICAgIDAsMCwxMDUsMTE2LDEwMSwxMDksMTE1LDExNywxMCwwLDAsMCwxMDUsMTE1LDEwNSwxMTAsCisgICAgMTE1LDExNiw5NywxMTAsOTksMTAxLDExNyw3LDAsMCwwLDEwNCw5NywxMTUsOTcsMTE2LAorICAgIDExNiwxMTQsMTE3LDIwLDAsMCwwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExMCw5NywxMDksMTAxLDExNSwxMTcsMTUsMCwwLDAsCisgICAgNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDExNywKKyAgICAxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDExNyw5LAorICAgIDAsMCwwLDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMTE3LDE0LDAsMCwKKyAgICAwLDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMSwwLDAsCisgICAgMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsNywwLDAsCisgICAgMCwxMTUsMTAxLDExNiw5NywxMTYsMTE2LDExNCwxMTcsMywwLDAsMCw5NywxMDgsMTA4LAorICAgIDExNywxNCwwLDAsMCw2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDY5LDExNCwKKyAgICAxMTQsMTExLDExNCwxMTcsNywwLDAsMCwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTE3LAorICAgIDExLDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNywKKyAgICA0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywzLDAsMCwwLDExNSwxMDEsMTE2LAorICAgIDExNywxNiwwLDAsMCw5NSwxMDksOTcsMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsCisgICAgOTUsOTksOTcsMTE1LDEwMSwxMTcsMTgsMCwwLDAsNjksODgsODQsNjksNzgsODMsCisgICAgNzMsNzksNzgsOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsMTE3LDYsMCwwLAorICAgIDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMDAsMTE3LDE4LDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwKKyAgICAxMTAsMTE1LDEwNSwxMTEsMTEwLDk1LDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsMTE3LDE1LAorICAgIDAsMCwwLDgzLDc5LDg1LDgyLDY3LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LAorICAgIDY5LDgzLDExNyw2LDAsMCwwLDk3LDExMiwxMTIsMTAxLDExMCwxMDAsMTE3LDQsMCwKKyAgICAwLDAsODQsMTE0LDExNywxMDEsMTE3LDIxLDAsMCwwLDg3LDEwNSwxMTAsMTAwLDExMSwKKyAgICAxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAorICAgIDExNywxMSwwLDAsMCw2OCw2OSw2Niw4NSw3MSw5NSw2Niw4NSw3Myw3Niw2OCwKKyAgICA0MCwxNiwwLDAsMCwxMTcsMTAsMCwwLDAsMTE1LDEyMSwxMTUsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE3LDExLDAsMCwwLDk1LDEwNSwxMDksMTEyLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDExNywxMSwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwKKyAgICAxMTYsMTIxLDExMiwxMDEsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDYsMCwKKyAgICAwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDExLDAsMCwwLDExNSwxMDEsMTA4LAorICAgIDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMTIsMCwwLDAsOTgsMTE3LDEwNSwKKyAgICAxMDgsMTE2LDEwNSwxMTAsOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDE0LDAsMCwwLDk4LDExNywKKyAgICAxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMCwwLDAsCisgICAgMCwxMTEsMTE1LDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LDExNywxMCwwLDAsMCwKKyAgICA5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTEsMTE1LDExNywxNSwwLDAsMCwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiw5NywxMTQsOTcsMTE2LDExMSwxMTQsMTE1LDExNyw4LAorICAgIDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDExNyw5LDAsMCwwLAorICAgIDExMSwxMTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDEzLDAsMCwwLDExNiwxMDQsCisgICAgMTE0LDEwMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDE0LDAsMCwwLAorICAgIDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMywKKyAgICAwLDAsMCwxMTksMTA1LDExMCwxMTQsMTAxLDEwMyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLAorICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw2LDAsMCwKKyAgICAwLDk1LDExNSwxMDEsMTE2LDExNywxMTIsMTUzLDYsMCwwLDExNSwxMDYsMCwwLDAsCisgICAgMCw5LDYsMSw2LDIsMTIsMSw5LDIsNiwyLDEyLDEsMjgsMSwKKyAgICAxNSwxLDE1LDEsMTUsMSwxMiwxLDE1LDEsMjIsMiwxMywxLDEzLDEsCisgICAgMTUsMSwxOCwyLDEzLDEsMjAsMiw0OCwxLDE5LDIsMzEsMSwxMCwxLAorICAgIDE1LDEsMTMsMSw0LDIsMywxLDE1LDIsMjcsMSwxMywxLDUsMSwKKyAgICAxMywxLDEyLDIsMTIsMiwzLDEsMTksMSwxMywyLDExLDEsMTUsMiwKKyAgICAxMiwxLDE1LDEsMTksMiwxNiwxLDE2LDEsMTYsMSwxNiwxLDIyLDIsCisgICAgMTksMSwxOSwxLDEyLDEsMTMsMSwxMiwxLDExNyw2LDAsMCwwLDk1LAorICAgIDExNSwxMDEsMTE2LDExNywxMTIsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwKKyAgICAwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTM2LDAsMCwwLDExNiwKKyAgICAwLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsMSwxMTYsMSwwLDEzMSwKKyAgICAwLDAsMTI1LDIsMCwxMTYsMiwwLDEwNiwzLDAsMTA2LDQsMCwxMTYsNSwKKyAgICAwLDEwNiw2LDAsMTI0LDIsMCwxNDAsMCwwLDEwMywxLDAsMTMxLDEsMCwKKyAgICAxLDExNiwyLDAsMTA2LDcsMCwxMDYsOCwwLDExNiw5LDAsMTMxLDEsMCwKKyAgICAxLDExNiwyLDAsMTA2LDcsMCwxMDYsOCwwLDExNiwxMCwwLDEzMSwxLDAsCisgICAgMSwxMTYsMTEsMCwxMDYsMTIsMCwxMDAsMSwwLDEwNywyLDAsMTE0LDExNiwwLAorICAgIDExNiwyLDAsMTA2LDcsMCwxMDYsOCwwLDExNiwxMywwLDEzMSwxLDAsMSwKKyAgICAxMTAsMCwwLDExNiwyLDAsMTA2LDcsMCwxMDYsOCwwLDExNiwxNCwwLDEzMSwKKyAgICAxLDAsMSwxMDAsMiwwLDgzLDQwLDMsMCwwLDAsMTE3LDUwLDAsMCwKKyAgICAwLDczLDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCisgICAgMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsNDYsMTE3LDIsMCwwLDAsMTEwLDExNiw3OCw0MCwxNSwwLDAsMCwKKyAgICAxMTcsNiwwLDAsMCw5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDExNywyNywwLDAsMCwKKyAgICA5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw5NSwxMDIsCisgICAgMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE3LDMsMCwwLDAsCisgICAgMTE1LDEyMSwxMTUsMTE3LDEwLDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLAorICAgIDEwNywxMTUsMTE3LDYsMCwwLDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMDAsMTE3LDEwLDAsCisgICAgMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE3LDksMCwwLAorICAgIDAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNyw5LDAsMCwwLDEwOSwKKyAgICAxMDEsMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LDExNyw2LDAsMCwwLDk3LDExMiwxMTIsCisgICAgMTAxLDExMCwxMDAsMTE3LDE1LDAsMCwwLDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMTcsMTQsMCwwLDAsNzAsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTE3LDMsMCwwLDAsOTUsCisgICAgMTExLDExNSwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsCisgICAgMjEsMCwwLDAsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LAorICAgIDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE3LDEwLDAsMCwwLDgwLDk3LAorICAgIDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwzLDAsMCwwLDExNywxMCwwLAorICAgIDAsMCwxMTUsMTIxLDExNSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMTEsMCwwLAorICAgIDAsOTUsMTA1LDEwOSwxMTIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDE3LDAsMCwKKyAgICAwLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsMTE1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsCisgICAgMCwwLDAsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMjMyLDYsMCwwLDExNSwKKyAgICAxNiwwLDAsMCwwLDIsMTMsMSw5LDEsMjgsMSwxNiwxLDE2LDEsCisgICAgMTUsMSwxOSwxLDExNyw4LDAsMCwwLDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsCisgICAgMTA4LDc4LDQwLDMsMCwwLDAsMTE3LDMsMCwwLDAsMTE5LDEwNSwxMTAsMTE3LAorICAgIDYsMCwwLDAsOTksMTIxLDEwMywxMTksMTA1LDExMCwxMTcsNiwwLDAsMCwxMDAsCisgICAgOTcsMTE0LDExOSwxMDUsMTEwLDQwLDc0LDAsMCwwLDExNyw3LDAsMCwwLDk1LAorICAgIDk1LDEwMCwxMTEsOTksOTUsOTUsMTE3LDI3LDAsMCwwLDk1LDY3LDY1LDgzLDY5LAorICAgIDk1LDczLDc4LDgzLDY5LDc4LDgzLDczLDg0LDczLDg2LDY5LDk1LDgwLDc2LDY1LAorICAgIDg0LDcwLDc5LDgyLDc3LDgzLDExNywxNiwwLDAsMCw5NSwxMDksOTcsMTA3LDEwMSwKKyAgICA5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwxMTcsNywwLDAsMCwKKyAgICA5NSwxMTksOTUsMTA4LDExMSwxMTAsMTAzLDExNyw3LDAsMCwwLDk1LDExNCw5NSwxMDgsCisgICAgMTExLDExMCwxMDMsMTE3LDEwLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNiwxMTEsCisgICAgMTA1LDExMCwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExMiwxMDgsCisgICAgMTA1LDExNiwxMTcsMTgsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSw5NSwKKyAgICAxMDksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDExNywxMiwwLDAsMCw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMiwxMDUsMTA4LDEwMSwxMTcsMTEsMCwwLDAsOTUsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCwxMTcsMTMsMCwwLDAsOTUsCisgICAgMTE5LDExNCwxMDUsMTE2LDEwMSw5NSw5NywxMTYsMTExLDEwOSwxMDUsOTksMTE3LDUsMCwwLAorICAgIDAsOTUsMTE5LDExNCw5NywxMTIsMTE3LDQsMCwwLDAsMTE2LDEyMSwxMTIsMTAxLDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDk5LDExMSwxMDAsMTAxLDk1LDk1LDExNywxMCwwLDAsCisgICAgMCw5NSw5OSwxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE3LDEwLDAsMCwwLAorICAgIDExMCwxMDEsMTE5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMywwLDAsMCw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTUsMTE3LDEyLDAsMCwKKyAgICAwLDk1LDk4LDEwOCwxMTEsOTksMTA3LDEwNSwxMTAsMTAzLDk1LDExMSwxMTAsMTE3LDEyLDAsCisgICAgMCwwLDgyLDExNywxMTAsMTE2LDEwNSwxMDksMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTQsCisgICAgMCwwLDAsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw2OSwxMTQsMTE0LDExMSwKKyAgICAxMTQsMTE3LDExLDAsMCwwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LAorICAgIDEwNywxMTcsMTYsMCwwLDAsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMTcsMTYsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE3LDE5LDAsMCwwLAorICAgIDk1LDEwOCwxMTEsOTksMTA3LDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE3LDI1LDAsMCwwLDk1LDk5LDk3LDEwOCwxMDgsOTUsMTE5LDEwNSwKKyAgICAxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsCisgICAgMTAwLDExNywzLDAsMCwwLDExMSwxMTQsMTAwLDExNywxNywwLDAsMCw5NSw4MiwKKyAgICA2NSw4Nyw5NSw3Nyw2NSw3MSw3Myw2Nyw5NSw3OCw4NSw3Nyw2Niw2OSw4MiwxMTcsCisgICAgNSwwLDAsMCw5OCwxMjEsMTE2LDEwMSwxMTUsMTE3LDUsMCwwLDAsMTE0LDk3LAorICAgIDExMCwxMDMsMTAxLDExNywxMiwwLDAsMCw5NSw3Nyw2NSw3MSw3Myw2Nyw5NSw2NiwKKyAgICA4OSw4NCw2OSw4MywxMTcsOCwwLDAsMCw5NSw4MCw4OSw2Nyw2NSw2Nyw3MiwKKyAgICA2OSwxMTcsMTUsMCwwLDAsODMsNzksODUsODIsNjcsNjksOTUsODMsODUsNzAsCisgICAgNzAsNzMsODgsNjksODMsMTE3LDIzLDAsMCwwLDY4LDY5LDY2LDg1LDcxLDk1LAorICAgIDY2LDg5LDg0LDY5LDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LAorICAgIDgzLDExNywyNywwLDAsMCw3OSw4MCw4NCw3Myw3Nyw3Myw5MCw2OSw2OCw5NSwKKyAgICA2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSwKKyAgICA4MywxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTcsMCwwLDAsOTksCisgICAgOTcsOTksMTA0LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICAxMTcsMTcsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksCisgICAgOTUsOTksOTcsOTksMTA0LDEwMSwxMTcsMTUsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsCisgICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMDIsMTA1LDEwOCwxMDEsMTE3LDE2LDAsMCwwLDk1LAorICAgIDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNywKKyAgICAxMSwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LAorICAgIDEwLDAsMCwwLDExNSwxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE3LAorICAgIDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMTE3LDExLDAsMCwwLDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LAorICAgIDExMCw5NywxMDksMTAxLDExNywxNywwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwKKyAgICAxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDExNywxNiwwLDAsMCw5NSwKKyAgICAxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDExNywKKyAgICAxNywwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTUsMTE1LDEwNCwxMDUsMTA5LDExNywxNSwwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LAorICAgIDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTE3LDE0LDAsMCwwLDcwLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDExNywyMSwwLDAsCisgICAgMCw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsCisgICAgNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsMTMsMCwwLDAsOTUsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDExNywxMiwwLDAsMCw4MywxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxMCwwLDAsMCw3MCwxMDUsCisgICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE2LDAsMCwwLDgzLDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDIwLDAsCisgICAgMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxOCwwLDAsMCw2OSw4OCw4NCw2OSw3OCwKKyAgICA4Myw3Myw3OSw3OCw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTcsMTksMCwKKyAgICAwLDAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE0LDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LAorICAgIDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCwxMTcsMTUsMCwwLDAsNzgsOTcsMTA5LAorICAgIDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDEwLDAsMCwKKyAgICAwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsMTAsMCwwLDAsCisgICAgNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsMTgsMCwwLDAsOTUsCisgICAgNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsCisgICAgMTE2LDExNywxMywwLDAsMCw5NSwxMTQsMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsOTUsMTEwLAorICAgIDk3LDEwOSwxMDEsMTE3LDEyLDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTcsMTMsMCwwLDAsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSwKKyAgICA5NSw5OSwxMDQsMTAxLDk5LDEwNywxMTcsOCwwLDAsMCw5NSw2OSw4Miw4Miw5NSwKKyAgICA3Nyw4Myw3MSwxMTcsMjMsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwKKyAgICAxMDAsOTUsMTA4LDExMSw5NywxMDAsOTUsMTE3LDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDExNywKKyAgICAxNCwwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLAorICAgIDk3LDEwMCwxMTcsMTEsMCwwLDAsOTUsMTAzLDk5LDEwMCw5NSwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMTcsMTYsMCwwLDAsOTUsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSw5NSwxMDIsCisgICAgMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDExNywxNywwLDAsMCw5NSw5OSw5NywxMDgsCisgICAgOTksOTUsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDExNywyNywwLAorICAgIDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwKKyAgICA5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE3LDEwLDAsCisgICAgMCwwLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDExNyw2LDAsMCwKKyAgICAwLDk1LDExNSwxMDEsMTE2LDExNywxMTIsMTE3LDgsMCwwLDAsOTUsMTA1LDExMCwxMTUsCisgICAgMTE2LDk3LDEwOCwxMDgsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDYyLDgsMCwwLDAsMTE1LDEzMiwwLDAsMCw2LDIxLDYsMywxMiwKKyAgICAxMywxMiwxNiwxMiwxMywxMiwxMiwxMiwxMiwxMiwxMCwxMiw2LDEyLDcsMTUsCisgICAgMjIsMTIsOCwxNSwzLDEyLDEyLDYsMiw2LDMsMjIsNCwxOSw2OCwxOSwKKyAgICAyMywxMiwxOSwxMiwyMCwxMiwxMDAsMzQsMSwzNywyLDYsMiw5LDIsOSwKKyAgICAxLDksMiwxNSwyNywxMiwyMywxMiwyMSwxMiw4LDEyLDEzLDEyLDExLDEyLAorICAgIDU1LDEyLDE4LDEyLDExLDEyLDExLDEyLDE3LDE5LDU3LDE5LDU0LDE5LDUwLDE5LAorICAgIDgyLDIyLDEzNCwxOSwyOSwyNSw0OSwyNSwyNSw2LDMsMTksNDUsMTksNTUsMTksCisgICAgMTgsMTksOTEsMTksMTI2LDE5LDEzLDEyLDksMTIsMTcsMTIsMTcsNiwyLDEyLAorICAgIDUwLDEyLDEzLDE4LDI0LDEyLDM0LDEyLDE1LDEyLDExLDI0LDM2LDEyLDc5LAorfTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weSBiL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weQppbmRleCA1ZDhlNWE5Li5kOWEwODU1IDEwMDc1NQotLS0gYS9QeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkKKysrIGIvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5CkBAIC0yMyw5ICsyMyw2IEBACiAgICAgb3Bjb2RlID0gZmluZF9tb2R1bGUoIm9wY29kZSIpCiAgICAgdGFyZ2V0cyA9IFsnX3Vua25vd25fb3Bjb2RlJ10gKiAyNTYKICAgICBmb3Igb3BuYW1lLCBvcCBpbiBvcGNvZGUub3BtYXAuaXRlbXMoKToKLSAgICAgICAgaWYgb3BuYW1lID09ICJTVE9QX0NPREUiOgotICAgICAgICAgICAgIyBYWFggb3Bjb2RlIG5vdCBpbXBsZW1lbnRlZAotICAgICAgICAgICAgY29udGludWUKICAgICAgICAgdGFyZ2V0c1tvcF0gPSAiVEFSR0VUXyVzIiAlIG9wbmFtZQogICAgIGYud3JpdGUoInN0YXRpYyB2b2lkICpvcGNvZGVfdGFyZ2V0c1syNTZdID0ge1xuIikKICAgICBmLndyaXRlKCIsXG4iLmpvaW4oWyIgICAgJiYlcyIgJSBzIGZvciBzIGluIHRhcmdldHNdKSkKZGlmZiAtLWdpdCBhL1B5dGhvbi9tYXJzaGFsLmMgYi9QeXRob24vbWFyc2hhbC5jCmluZGV4IDFlZGI2OTYuLjk1OWYzZjcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9tYXJzaGFsLmMKKysrIGIvUHl0aG9uL21hcnNoYWwuYwpAQCAtMzEsNiArMzEsOSBAQAogI2RlZmluZSBUWVBFX1NUT1BJVEVSICAgICAgICAgICAnUycKICNkZWZpbmUgVFlQRV9FTExJUFNJUyAgICAgICAgICAgJy4nCiAjZGVmaW5lIFRZUEVfSU5UICAgICAgICAgICAgICAgICdpJworLyogVFlQRV9JTlQ2NCBpcyBkZXByZWNhdGVkLiBJdCBpcyBub3QKKyAgIGdlbmVyYXRlZCBhbnltb3JlLCBhbmQgc3VwcG9ydCBmb3IgcmVhZGluZyBpdAorICAgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjQuICovCiAjZGVmaW5lIFRZUEVfSU5UNjQgICAgICAgICAgICAgICdJJwogI2RlZmluZSBUWVBFX0ZMT0FUICAgICAgICAgICAgICAnZicKICNkZWZpbmUgVFlQRV9CSU5BUllfRkxPQVQgICAgICAgJ2cnCkBAIC01OSw5ICs2Miw5IEBACiAgICAgLyogSWYgZnAgPT0gTlVMTCwgdGhlIGZvbGxvd2luZyBhcmUgdmFsaWQ6ICovCiAgICAgUHlPYmplY3QgKnJlYWRhYmxlOyAgICAvKiBTdHJlYW0tbGlrZSBvYmplY3QgYmVpbmcgcmVhZCBmcm9tICovCiAgICAgUHlPYmplY3QgKnN0cjsKKyAgICBQeU9iamVjdCAqY3VycmVudF9maWxlbmFtZTsKICAgICBjaGFyICpwdHI7CiAgICAgY2hhciAqZW5kOwotICAgIFB5T2JqZWN0ICpzdHJpbmdzOyAvKiBkaWN0IG9uIG1hcnNoYWwsIGxpc3Qgb24gdW5tYXJzaGFsICovCiAgICAgaW50IHZlcnNpb247CiB9IFdGSUxFOwogCkBAIC0xMjEsMTUgKzEyNCw2IEBACiAgICAgd19ieXRlKChjaGFyKSgoeD4+MjQpICYgMHhmZiksIHApOwogfQogCi0jaWYgU0laRU9GX0xPTkcgPiA0Ci1zdGF0aWMgdm9pZAotd19sb25nNjQobG9uZyB4LCBXRklMRSAqcCkKLXsKLSAgICB3X2xvbmcoeCwgcCk7Ci0gICAgd19sb25nKHg+PjMyLCBwKTsKLX0KLSNlbmRpZgotCiAjZGVmaW5lIFNJWkUzMl9NQVggIDB4N0ZGRkZGRkYKIAogI2lmIFNJWkVPRl9TSVpFX1QgPiA0CkBAIC0yMzksOCArMjMzLDggQEAKICNpZiBTSVpFT0ZfTE9ORyA+IDQKICAgICAgICAgICAgIGxvbmcgeSA9IFB5X0FSSVRITUVUSUNfUklHSFRfU0hJRlQobG9uZywgeCwgMzEpOwogICAgICAgICAgICAgaWYgKHkgJiYgeSAhPSAtMSkgewotICAgICAgICAgICAgICAgIHdfYnl0ZShUWVBFX0lOVDY0LCBwKTsKLSAgICAgICAgICAgICAgICB3X2xvbmc2NCh4LCBwKTsKKyAgICAgICAgICAgICAgICAvKiBUb28gbGFyZ2UgZm9yIFRZUEVfSU5UICovCisgICAgICAgICAgICAgICAgd19QeUxvbmcoKFB5TG9uZ09iamVjdCopdiwgcCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAjZW5kaWYKQEAgLTMyNSw5ICszMTksNyBAQAogICAgIH0KICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdCh2KSkgewogICAgICAgICBQeU9iamVjdCAqdXRmODsKLSAgICAgICAgdXRmOCA9IFB5VW5pY29kZV9FbmNvZGVVVEY4KFB5VW5pY29kZV9BU19VTklDT0RFKHYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZXBhc3MiKTsKKyAgICAgICAgdXRmOCA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcodiwgInV0ZjgiLCAic3Vycm9nYXRlcGFzcyIpOwogICAgICAgICBpZiAodXRmOCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBwLT5kZXB0aC0tOwogICAgICAgICAgICAgcC0+ZXJyb3IgPSBXRkVSUl9VTk1BUlNIQUxMQUJMRTsKQEAgLTQ0OSw3ICs0NDEsNiBAQAogICAgIHdmLmZwID0gZnA7CiAgICAgd2YuZXJyb3IgPSBXRkVSUl9PSzsKICAgICB3Zi5kZXB0aCA9IDA7Ci0gICAgd2Yuc3RyaW5ncyA9IE5VTEw7CiAgICAgd2YudmVyc2lvbiA9IHZlcnNpb247CiAgICAgd19sb25nKHgsICZ3Zik7CiB9CkBAIC00NjEsMTAgKzQ1Miw4IEBACiAgICAgd2YuZnAgPSBmcDsKICAgICB3Zi5lcnJvciA9IFdGRVJSX09LOwogICAgIHdmLmRlcHRoID0gMDsKLSAgICB3Zi5zdHJpbmdzID0gKHZlcnNpb24gPiAwKSA/IFB5RGljdF9OZXcoKSA6IE5VTEw7CiAgICAgd2YudmVyc2lvbiA9IHZlcnNpb247CiAgICAgd19vYmplY3QoeCwgJndmKTsKLSAgICBQeV9YREVDUkVGKHdmLnN0cmluZ3MpOwogfQogCiB0eXBlZGVmIFdGSUxFIFJGSUxFOyAvKiBTYW1lIHN0cnVjdCB3aXRoIGRpZmZlcmVudCBpbnZhcmlhbnRzICovCkBAIC00ODksNyArNDc4LDkgQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKmRhdGEgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHAtPnJlYWRhYmxlLCAicmVhZCIsICJuIiwgbik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHJlYWQpOworCisgICAgICAgIFB5T2JqZWN0ICpkYXRhID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwLT5yZWFkYWJsZSwgJlB5SWRfcmVhZCwgIm4iLCBuKTsKICAgICAgICAgcmVhZCA9IDA7CiAgICAgICAgIGlmIChkYXRhICE9IE5VTEwpIHsKICAgICAgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhkYXRhKSkgewpAQCAtMTA3Myw2ICsxMDY0LDE4IEBACiAgICAgICAgICAgICBmaWxlbmFtZSA9IHJfb2JqZWN0KHApOwogICAgICAgICAgICAgaWYgKGZpbGVuYW1lID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBjb2RlX2Vycm9yOworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGZpbGVuYW1lKSkgeworICAgICAgICAgICAgICAgIGlmIChwLT5jdXJyZW50X2ZpbGVuYW1lICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ29tcGFyZShmaWxlbmFtZSwgcC0+Y3VycmVudF9maWxlbmFtZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmaWxlbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYocC0+Y3VycmVudF9maWxlbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHAtPmN1cnJlbnRfZmlsZW5hbWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHAtPmN1cnJlbnRfZmlsZW5hbWUgPSBmaWxlbmFtZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBuYW1lID0gcl9vYmplY3QocCk7CiAgICAgICAgICAgICBpZiAobmFtZSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gY29kZV9lcnJvcjsKQEAgLTExMzUsNyArMTEzOCw3IEBACiAgICAgYXNzZXJ0KGZwKTsKICAgICByZi5yZWFkYWJsZSA9IE5VTEw7CiAgICAgcmYuZnAgPSBmcDsKLSAgICByZi5zdHJpbmdzID0gTlVMTDsKKyAgICByZi5jdXJyZW50X2ZpbGVuYW1lID0gTlVMTDsKICAgICByZi5lbmQgPSByZi5wdHIgPSBOVUxMOwogICAgIHJldHVybiByX3Nob3J0KCZyZik7CiB9CkBAIC0xMTQ2LDcgKzExNDksNyBAQAogICAgIFJGSUxFIHJmOwogICAgIHJmLmZwID0gZnA7CiAgICAgcmYucmVhZGFibGUgPSBOVUxMOwotICAgIHJmLnN0cmluZ3MgPSBOVUxMOworICAgIHJmLmN1cnJlbnRfZmlsZW5hbWUgPSBOVUxMOwogICAgIHJmLnB0ciA9IHJmLmVuZCA9IE5VTEw7CiAgICAgcmV0dXJuIHJfbG9uZygmcmYpOwogfQpAQCAtMTIwNCwxMSArMTIwNywxMCBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgcmYuZnAgPSBmcDsKICAgICByZi5yZWFkYWJsZSA9IE5VTEw7Ci0gICAgcmYuc3RyaW5ncyA9IFB5TGlzdF9OZXcoMCk7CisgICAgcmYuY3VycmVudF9maWxlbmFtZSA9IE5VTEw7CiAgICAgcmYuZGVwdGggPSAwOwogICAgIHJmLnB0ciA9IHJmLmVuZCA9IE5VTEw7CiAgICAgcmVzdWx0ID0gcl9vYmplY3QoJnJmKTsKLSAgICBQeV9ERUNSRUYocmYuc3RyaW5ncyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTIxOSwxMiArMTIyMSwxMSBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgcmYuZnAgPSBOVUxMOwogICAgIHJmLnJlYWRhYmxlID0gTlVMTDsKKyAgICByZi5jdXJyZW50X2ZpbGVuYW1lID0gTlVMTDsKICAgICByZi5wdHIgPSBzdHI7CiAgICAgcmYuZW5kID0gc3RyICsgbGVuOwotICAgIHJmLnN0cmluZ3MgPSBQeUxpc3RfTmV3KDApOwogICAgIHJmLmRlcHRoID0gMDsKICAgICByZXN1bHQgPSByX29iamVjdCgmcmYpOwotICAgIFB5X0RFQ1JFRihyZi5zdHJpbmdzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMjMyLDcgKzEyMzMsNiBAQAogUHlNYXJzaGFsX1dyaXRlT2JqZWN0VG9TdHJpbmcoUHlPYmplY3QgKngsIGludCB2ZXJzaW9uKQogewogICAgIFdGSUxFIHdmOwotICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogCiAgICAgd2YuZnAgPSBOVUxMOwogICAgIHdmLnJlYWRhYmxlID0gTlVMTDsKQEAgLTEyNDQsOSArMTI0NCw3IEBACiAgICAgd2YuZXJyb3IgPSBXRkVSUl9PSzsKICAgICB3Zi5kZXB0aCA9IDA7CiAgICAgd2YudmVyc2lvbiA9IHZlcnNpb247Ci0gICAgd2Yuc3RyaW5ncyA9ICh2ZXJzaW9uID4gMCkgPyBQeURpY3RfTmV3KCkgOiBOVUxMOwogICAgIHdfb2JqZWN0KHgsICZ3Zik7Ci0gICAgUHlfWERFQ1JFRih3Zi5zdHJpbmdzKTsKICAgICBpZiAod2Yuc3RyICE9IE5VTEwpIHsKICAgICAgICAgY2hhciAqYmFzZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKChQeUJ5dGVzT2JqZWN0ICopd2Yuc3RyKTsKICAgICAgICAgaWYgKHdmLnB0ciAtIGJhc2UgPiBQWV9TU0laRV9UX01BWCkgewpAQCAtMTI2OCwxMiArMTI2Niw3IEBACiAgICAgICAgICAgICAgICA6Im9iamVjdCB0b28gZGVlcGx5IG5lc3RlZCB0byBtYXJzaGFsIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAod2Yuc3RyICE9IE5VTEwpIHsKLSAgICAgICAgLyogWFhYIFF1aWNrIGhhY2sgLS0gbmVlZCB0byBkbyB0aGlzIGRpZmZlcmVudGx5ICovCi0gICAgICAgIHJlcyA9IFB5Qnl0ZXNfRnJvbU9iamVjdCh3Zi5zdHIpOwotICAgICAgICBQeV9ERUNSRUYod2Yuc3RyKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKKyAgICByZXR1cm4gd2Yuc3RyOwogfQogCiAvKiBBbmQgYW4gaW50ZXJmYWNlIGZvciBQeXRob24gcHJvZ3JhbXMuLi4gKi8KQEAgLTEyODcsMTIgKzEyODAsMTQgQEAKICAgICBpbnQgdmVyc2lvbiA9IFB5X01BUlNIQUxfVkVSU0lPTjsKICAgICBQeU9iamVjdCAqczsKICAgICBQeU9iamVjdCAqcmVzOworICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT098aTpkdW1wIiwgJngsICZmLCAmdmVyc2lvbikpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHMgPSBQeU1hcnNoYWxfV3JpdGVPYmplY3RUb1N0cmluZyh4LCB2ZXJzaW9uKTsKICAgICBpZiAocyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGYsICJ3cml0ZSIsICJPIiwgcyk7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF93cml0ZSwgIk8iLCBzKTsKICAgICBQeV9ERUNSRUYocyk7CiAgICAgcmV0dXJuIHJlczsKIH0KQEAgLTEzMTQsNiArMTMwOSw3IEBACiBtYXJzaGFsX2xvYWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmKQogewogICAgIFB5T2JqZWN0ICpkYXRhLCAqcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKHJlYWQpOwogICAgIFJGSUxFIHJmOwogCiAgICAgLyoKQEAgLTEzMjEsNyArMTMxNyw3IEBACiAgICAgICogVGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUgb2JqZWN0IHBhc3NlZCBpbiBhdCBsZWFzdAogICAgICAqIGhhcyBhIHJlYWQgbWV0aG9kIHdoaWNoIHJldHVybnMgYnl0ZXMuCiAgICAgICovCi0gICAgZGF0YSA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZiwgInJlYWQiLCAiaSIsIDApOworICAgIGRhdGEgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX3JlYWQsICJpIiwgMCk7CiAgICAgaWYgKGRhdGEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKGRhdGEpKSB7CkBAIC0xMzMxLDEyICsxMzI3LDExIEBACiAgICAgICAgIHJlc3VsdCA9IE5VTEw7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICByZi5zdHJpbmdzID0gUHlMaXN0X05ldygwKTsKICAgICAgICAgcmYuZGVwdGggPSAwOwogICAgICAgICByZi5mcCA9IE5VTEw7CiAgICAgICAgIHJmLnJlYWRhYmxlID0gZjsKKyAgICAgICAgcmYuY3VycmVudF9maWxlbmFtZSA9IE5VTEw7CiAgICAgICAgIHJlc3VsdCA9IHJlYWRfb2JqZWN0KCZyZik7Ci0gICAgICAgIFB5X0RFQ1JFRihyZi5zdHJpbmdzKTsKICAgICB9CiAgICAgUHlfREVDUkVGKGRhdGEpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMzg5LDEyICsxMzg0LDExIEBACiAgICAgbiA9IHAubGVuOwogICAgIHJmLmZwID0gTlVMTDsKICAgICByZi5yZWFkYWJsZSA9IE5VTEw7CisgICAgcmYuY3VycmVudF9maWxlbmFtZSA9IE5VTEw7CiAgICAgcmYucHRyID0gczsKICAgICByZi5lbmQgPSBzICsgbjsKLSAgICByZi5zdHJpbmdzID0gUHlMaXN0X05ldygwKTsKICAgICByZi5kZXB0aCA9IDA7CiAgICAgcmVzdWx0ID0gcmVhZF9vYmplY3QoJnJmKTsKLSAgICBQeV9ERUNSRUYocmYuc3RyaW5ncyk7CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9tb2RzdXBwb3J0LmMgYi9QeXRob24vbW9kc3VwcG9ydC5jCmluZGV4IDg1YjBkNjYuLjQyODkxNGYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9tb2RzdXBwb3J0LmMKKysrIGIvUHl0aG9uL21vZHN1cHBvcnQuYwpAQCAtMTQ4LDE1ICsxNDgsNiBAQAogICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMgaW50Ci1fdXN0cmxlbihQeV9VTklDT0RFICp1KQotewotICAgIGludCBpID0gMDsKLSAgICBQeV9VTklDT0RFICp2ID0gdTsKLSAgICB3aGlsZSAoKnYgIT0gMCkgeyBpKys7IHYrKzsgfQotICAgIHJldHVybiBpOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogZG9fbWt0dXBsZShjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBlbmRjaGFyLCBpbnQgbiwgaW50IGZsYWdzKQogewpAQCAtMjY5LDcgKzI2MCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAobiA8IDApCi0gICAgICAgICAgICAgICAgICAgIG4gPSBfdXN0cmxlbih1KTsKKyAgICAgICAgICAgICAgICAgICAgbiA9IFB5X1VOSUNPREVfc3RybGVuKHUpOwogICAgICAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUodSwgbik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdjsKQEAgLTI5MiwxMSArMjgzLDYgQEAKICAgICAgICAgY2FzZSAnQyc6CiAgICAgICAgIHsKICAgICAgICAgICAgIGludCBpID0gdmFfYXJnKCpwX3ZhLCBpbnQpOwotICAgICAgICAgICAgaWYgKGkgPCAwIHx8IGkgPiBQeVVuaWNvZGVfR2V0TWF4KCkpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMHgxMTAwMDApIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oIGIvUHl0aG9uL29wY29kZV90YXJnZXRzLmgKaW5kZXggYTkxZGE3OS4uMmQ2YmNkYSAxMDA2NDQKLS0tIGEvUHl0aG9uL29wY29kZV90YXJnZXRzLmgKKysrIGIvUHl0aG9uL29wY29kZV90YXJnZXRzLmgKQEAgLTcxLDcgKzcxLDcgQEAKICAgICAmJlRBUkdFVF9TVE9SRV9MT0NBTFMsCiAgICAgJiZUQVJHRVRfUFJJTlRfRVhQUiwKICAgICAmJlRBUkdFVF9MT0FEX0JVSUxEX0NMQVNTLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAorICAgICYmVEFSR0VUX1lJRUxEX0ZST00sCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZUQVJHRVRfSU5QTEFDRV9MU0hJRlQsCmRpZmYgLS1naXQgYS9QeXRob24vcGVlcGhvbGUuYyBiL1B5dGhvbi9wZWVwaG9sZS5jCmluZGV4IDdhZTU5OWIuLjVkNTM2NzcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9wZWVwaG9sZS5jCisrKyBiL1B5dGhvbi9wZWVwaG9sZS5jCkBAIC0yMyw2ICsyMyw2NCBAQAogI2RlZmluZSBJU0JBU0lDQkxPQ0soYmxvY2tzLCBzdGFydCwgYnl0ZXMpIFwKICAgICAoYmxvY2tzW3N0YXJ0XT09YmxvY2tzW3N0YXJ0K2J5dGVzLTFdKQogCisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfQ1JFQVRFKCkgeyBcCisgICAgY29uc3Rfc3RhY2tfc2l6ZSA9IDI1NjsgXAorICAgIGNvbnN0X3N0YWNrID0gUHlNZW1fTmV3KFB5T2JqZWN0ICosIGNvbnN0X3N0YWNrX3NpemUpOyBcCisgICAgbG9hZF9jb25zdF9zdGFjayA9IFB5TWVtX05ldyhQeV9zc2l6ZV90LCBjb25zdF9zdGFja19zaXplKTsgXAorICAgIGlmICghY29uc3Rfc3RhY2sgfHwgIWxvYWRfY29uc3Rfc3RhY2spIHsgXAorICAgICAgICBQeUVycl9Ob01lbW9yeSgpOyBcCisgICAgICAgIGdvdG8gZXhpdEVycm9yOyBcCisgICAgfSBcCisgICAgfQorCisjZGVmaW5lIENPTlNUX1NUQUNLX0RFTEVURSgpIGRvIHsgXAorICAgIGlmIChjb25zdF9zdGFjaykgXAorICAgICAgICBQeU1lbV9GcmVlKGNvbnN0X3N0YWNrKTsgXAorICAgIGlmIChsb2FkX2NvbnN0X3N0YWNrKSBcCisgICAgICAgIFB5TWVtX0ZyZWUobG9hZF9jb25zdF9zdGFjayk7IFwKKyAgICB9IHdoaWxlKDApCisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfTEVOKCkgKGNvbnN0X3N0YWNrX3RvcCArIDEpCisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKSBkbyB7IFwKKyAgICBQeU9iamVjdCAqX3g7IFwKKyAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsgXAorICAgIGFzc2VydChQeUxpc3RfR0VUX1NJWkUoY29uc3RzKSA+IEdFVEFSRyhjb2Rlc3RyLCBpKSk7IFwKKyAgICBfeCA9IFB5TGlzdF9HRVRfSVRFTShjb25zdHMsIEdFVEFSRyhjb2Rlc3RyLCBpKSk7IFwKKyAgICBpZiAoKytjb25zdF9zdGFja190b3AgPj0gY29uc3Rfc3RhY2tfc2l6ZSkgeyBcCisgICAgICAgIGNvbnN0X3N0YWNrX3NpemUgKj0gMjsgXAorICAgICAgICBQeU1lbV9SZXNpemUoY29uc3Rfc3RhY2ssIFB5T2JqZWN0ICosIGNvbnN0X3N0YWNrX3NpemUpOyBcCisgICAgICAgIFB5TWVtX1Jlc2l6ZShsb2FkX2NvbnN0X3N0YWNrLCBQeV9zc2l6ZV90LCBjb25zdF9zdGFja19zaXplKTsgXAorICAgICAgICBpZiAoIWNvbnN0X3N0YWNrIHx8ICFsb2FkX2NvbnN0X3N0YWNrKSB7IFwKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7IFwKKyAgICAgICAgICAgIGdvdG8gZXhpdEVycm9yOyBcCisgICAgICAgIH0gXAorICAgIH0gXAorICAgIGxvYWRfY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wXSA9IGk7IFwKKyAgICBjb25zdF9zdGFja1tjb25zdF9zdGFja190b3BdID0gX3g7IFwKKyAgICBpbl9jb25zdHMgPSAxOyBcCisgICAgfSB3aGlsZSgwKQorCisjZGVmaW5lIENPTlNUX1NUQUNLX1JFU0VUKCkgZG8geyBcCisgICAgY29uc3Rfc3RhY2tfdG9wID0gLTE7IFwKKyAgICB9IHdoaWxlKDApCisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfVE9QKCkgXAorICAgIGNvbnN0X3N0YWNrW2NvbnN0X3N0YWNrX3RvcF0KKworI2RlZmluZSBDT05TVF9TVEFDS19MQVNUTihpKSBcCisgICAgJmNvbnN0X3N0YWNrW2NvbnN0X3N0YWNrX3RvcCAtIGkgKyAxXQorCisjZGVmaW5lIENPTlNUX1NUQUNLX1BPUChpKSBkbyB7IFwKKyAgICBhc3NlcnQoY29uc3Rfc3RhY2tfdG9wICsgMSA+PSBpKTsgXAorICAgIGNvbnN0X3N0YWNrX3RvcCAtPSBpOyBcCisgICAgfSB3aGlsZSgwKQorCisjZGVmaW5lIENPTlNUX1NUQUNLX09QX0xBU1ROKGkpIFwKKyAgICAoKGNvbnN0X3N0YWNrX3RvcCA+PSBpIC0gMSkgPyBsb2FkX2NvbnN0X3N0YWNrW2NvbnN0X3N0YWNrX3RvcCAtIGkgKyAxXSA6IC0xKQorCisKIC8qIFJlcGxhY2UgTE9BRF9DT05TVCBjMS4gTE9BRF9DT05TVCBjMiAuLi4gTE9BRF9DT05TVCBjbiBCVUlMRF9UVVBMRSBuCiAgICB3aXRoICAgIExPQURfQ09OU1QgKGMxLCBjMiwgLi4uIGNuKS4KICAgIFRoZSBjb25zdHMgdGFibGUgbXVzdCBzdGlsbCBiZSBpbiBsaXN0IGZvcm0gc28gdGhhdCB0aGUKQEAgLTMzLDE3ICs5MSwxNCBAQAogICAgdGVzdDsgZm9yIEJVSUxEX1NFVCBpdCBhc3NlbWJsZXMgYSBmcm96ZW5zZXQgcmF0aGVyIHRoYW4gYSB0dXBsZS4KICovCiBzdGF0aWMgaW50Ci10dXBsZV9vZl9jb25zdGFudHModW5zaWduZWQgY2hhciAqY29kZXN0ciwgUHlfc3NpemVfdCBuLCBQeU9iamVjdCAqY29uc3RzKQordHVwbGVfb2ZfY29uc3RhbnRzKHVuc2lnbmVkIGNoYXIgKmNvZGVzdHIsIFB5X3NzaXplX3QgbiwKKyAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqKm9ianMpCiB7CiAgICAgUHlPYmplY3QgKm5ld2NvbnN0LCAqY29uc3RhbnQ7Ci0gICAgUHlfc3NpemVfdCBpLCBhcmcsIGxlbl9jb25zdHM7CisgICAgUHlfc3NpemVfdCBpLCBsZW5fY29uc3RzOwogCiAgICAgLyogUHJlLWNvbmRpdGlvbnMgKi8KICAgICBhc3NlcnQoUHlMaXN0X0NoZWNrRXhhY3QoY29uc3RzKSk7Ci0gICAgYXNzZXJ0KGNvZGVzdHJbbiozXSA9PSBCVUlMRF9UVVBMRSB8fCBjb2Rlc3RyW24qM10gPT0gQlVJTERfTElTVCB8fCBjb2Rlc3RyW24qM10gPT0gQlVJTERfU0VUKTsKLSAgICBhc3NlcnQoR0VUQVJHKGNvZGVzdHIsIChuKjMpKSA9PSBuKTsKLSAgICBmb3IgKGk9MCA7IGk8biA7IGkrKykKLSAgICAgICAgYXNzZXJ0KGNvZGVzdHJbaSozXSA9PSBMT0FEX0NPTlNUKTsKIAogICAgIC8qIEJ1aWxkdXAgbmV3IHR1cGxlIG9mIGNvbnN0YW50cyAqLwogICAgIG5ld2NvbnN0ID0gUHlUdXBsZV9OZXcobik7CkBAIC01MSwxNiArMTA2LDE0IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIGxlbl9jb25zdHMgPSBQeUxpc3RfR0VUX1NJWkUoY29uc3RzKTsKICAgICBmb3IgKGk9MCA7IGk8biA7IGkrKykgewotICAgICAgICBhcmcgPSBHRVRBUkcoY29kZXN0ciwgKGkqMykpOwotICAgICAgICBhc3NlcnQoYXJnIDwgbGVuX2NvbnN0cyk7Ci0gICAgICAgIGNvbnN0YW50ID0gUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgYXJnKTsKKyAgICAgICAgY29uc3RhbnQgPSBvYmpzW2ldOwogICAgICAgICBQeV9JTkNSRUYoY29uc3RhbnQpOwogICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2NvbnN0LCBpLCBjb25zdGFudCk7CiAgICAgfQogCiAgICAgLyogSWYgaXQncyBhIEJVSUxEX1NFVCwgdXNlIHRoZSBQeVR1cGxlIHdlIGp1c3QgYnVpbHQgdG8gY3JlYXRlIGEKICAgICAgIFB5RnJvemVuU2V0LCBhbmQgdXNlIHRoYXQgYXMgdGhlIGNvbnN0YW50IGluc3RlYWQ6ICovCi0gICAgaWYgKGNvZGVzdHJbbiozXSA9PSBCVUlMRF9TRVQpIHsKKyAgICBpZiAoY29kZXN0clswXSA9PSBCVUlMRF9TRVQpIHsKICAgICAgICAgUHlPYmplY3QgKnR1cGxlID0gbmV3Y29uc3Q7CiAgICAgICAgIG5ld2NvbnN0ID0gUHlGcm96ZW5TZXRfTmV3KHR1cGxlKTsKICAgICAgICAgUHlfREVDUkVGKHR1cGxlKTsKQEAgLTc3LDkgKzEzMCw4IEBACiAKICAgICAvKiBXcml0ZSBOT1BzIG92ZXIgb2xkIExPQURfQ09OU1RTIGFuZAogICAgICAgIGFkZCBhIG5ldyBMT0FEX0NPTlNUIG5ld2NvbnN0IG9uIHRvcCBvZiB0aGUgQlVJTERfVFVQTEUgbiAqLwotICAgIG1lbXNldChjb2Rlc3RyLCBOT1AsIG4qMyk7Ci0gICAgY29kZXN0cltuKjNdID0gTE9BRF9DT05TVDsKLSAgICBTRVRBUkcoY29kZXN0ciwgKG4qMyksIGxlbl9jb25zdHMpOworICAgIGNvZGVzdHJbMF0gPSBMT0FEX0NPTlNUOworICAgIFNFVEFSRyhjb2Rlc3RyLCAwLCBsZW5fY29uc3RzKTsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtODcsMTQgKzEzOSwxNCBAQAogICAgd2l0aCAgICBMT0FEX0NPTlNUIGJpbm9wKGMxLGMyKQogICAgVGhlIGNvbnN0cyB0YWJsZSBtdXN0IHN0aWxsIGJlIGluIGxpc3QgZm9ybSBzbyB0aGF0IHRoZQogICAgbmV3IGNvbnN0YW50IGNhbiBiZSBhcHBlbmRlZC4KLSAgIENhbGxlZCB3aXRoIGNvZGVzdHIgcG9pbnRpbmcgdG8gdGhlIGZpcnN0IExPQURfQ09OU1QuCisgICBDYWxsZWQgd2l0aCBjb2Rlc3RyIHBvaW50aW5nIHRvIHRoZSBCSU5PUC4KICAgIEFiYW5kb25zIHRoZSB0cmFuc2Zvcm1hdGlvbiBpZiB0aGUgZm9sZGluZyBmYWlscyAoaS5lLiAgMSsnYScpLgogICAgSWYgdGhlIG5ldyBjb25zdGFudCBpcyBhIHNlcXVlbmNlLCBvbmx5IGZvbGRzIHdoZW4gdGhlIHNpemUKICAgIGlzIGJlbG93IGEgdGhyZXNob2xkIHZhbHVlLiAgVGhhdCBrZWVwcyBweWMgZmlsZXMgZnJvbQogICAgYmVjb21pbmcgbGFyZ2UgaW4gdGhlIHByZXNlbmNlIG9mIGNvZGUgbGlrZTogIChOb25lLCkqMTAwMC4KICovCiBzdGF0aWMgaW50Ci1mb2xkX2Jpbm9wc19vbl9jb25zdGFudHModW5zaWduZWQgY2hhciAqY29kZXN0ciwgUHlPYmplY3QgKmNvbnN0cykKK2ZvbGRfYmlub3BzX29uX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqKm9ianMpCiB7CiAgICAgUHlPYmplY3QgKm5ld2NvbnN0LCAqdiwgKnc7CiAgICAgUHlfc3NpemVfdCBsZW5fY29uc3RzLCBzaXplOwpAQCAtMTAyLDEzICsxNTQsMTEgQEAKIAogICAgIC8qIFByZS1jb25kaXRpb25zICovCiAgICAgYXNzZXJ0KFB5TGlzdF9DaGVja0V4YWN0KGNvbnN0cykpOwotICAgIGFzc2VydChjb2Rlc3RyWzBdID09IExPQURfQ09OU1QpOwotICAgIGFzc2VydChjb2Rlc3RyWzNdID09IExPQURfQ09OU1QpOwogCiAgICAgLyogQ3JlYXRlIG5ldyBjb25zdGFudCAqLwotICAgIHYgPSBQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBHRVRBUkcoY29kZXN0ciwgMCkpOwotICAgIHcgPSBQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBHRVRBUkcoY29kZXN0ciwgMykpOwotICAgIG9wY29kZSA9IGNvZGVzdHJbNl07CisgICAgdiA9IG9ianNbMF07CisgICAgdyA9IG9ianNbMV07CisgICAgb3Bjb2RlID0gY29kZXN0clswXTsKICAgICBzd2l0Y2ggKG9wY29kZSkgewogICAgICAgICBjYXNlIEJJTkFSWV9QT1dFUjoKICAgICAgICAgICAgIG5ld2NvbnN0ID0gUHlOdW1iZXJfUG93ZXIodiwgdywgUHlfTm9uZSk7CkBAIC0xMzIsMTMgKzE4Miw2IEBACiAgICAgICAgICAgICBuZXdjb25zdCA9IFB5TnVtYmVyX1N1YnRyYWN0KHYsIHcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQklOQVJZX1NVQlNDUjoKLSAgICAgICAgICAgIC8qICM1MDU3OiBpZiB2IGlzIHVuaWNvZGUsIHRoZXJlIG1pZ2h0IGJlIGRpZmZlcmVuY2VzIGJldHdlZW4KLSAgICAgICAgICAgICAgIHdpZGUgYW5kIG5hcnJvdyBidWlsZHMgaW4gY2FzZXMgbGlrZSAnXFUwMDAxMjM0NSdbMF0gb3IKLSAgICAgICAgICAgICAgICdcVTAwMDEyMzQ1YWJjZGVmJ1szXSwgc28gaXQncyBiZXR0ZXIgdG8gc2tpcCB0aGUgb3B0aW1pemF0aW9uCi0gICAgICAgICAgICAgICBpbiBvcmRlciB0byBwcm9kdWNlIGNvbXBhdGlibGUgcHljcy4KLSAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU9iamVjdF9HZXRJdGVtKHYsIHcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQklOQVJZX0xTSElGVDoKQEAgLTE4NywxNiArMjMwLDE1IEBACiAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKIAogICAgIC8qIFdyaXRlIE5PUCBOT1AgTk9QIE5PUCBMT0FEX0NPTlNUIG5ld2NvbnN0ICovCi0gICAgbWVtc2V0KGNvZGVzdHIsIE5PUCwgNCk7Ci0gICAgY29kZXN0cls0XSA9IExPQURfQ09OU1Q7Ci0gICAgU0VUQVJHKGNvZGVzdHIsIDQsIGxlbl9jb25zdHMpOworICAgIGNvZGVzdHJbLTJdID0gTE9BRF9DT05TVDsKKyAgICBTRVRBUkcoY29kZXN0ciwgLTIsIGxlbl9jb25zdHMpOwogICAgIHJldHVybiAxOwogfQogCiBzdGF0aWMgaW50Ci1mb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeU9iamVjdCAqY29uc3RzKQorZm9sZF91bmFyeW9wc19vbl9jb25zdGFudHModW5zaWduZWQgY2hhciAqY29kZXN0ciwgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKnYpCiB7Ci0gICAgUHlPYmplY3QgKm5ld2NvbnN0PU5VTEwsICp2OworICAgIFB5T2JqZWN0ICpuZXdjb25zdDsKICAgICBQeV9zc2l6ZV90IGxlbl9jb25zdHM7CiAgICAgaW50IG9wY29kZTsKIApAQCAtMjA1LDEzICsyNDcsMTAgQEAKICAgICBhc3NlcnQoY29kZXN0clswXSA9PSBMT0FEX0NPTlNUKTsKIAogICAgIC8qIENyZWF0ZSBuZXcgY29uc3RhbnQgKi8KLSAgICB2ID0gUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgR0VUQVJHKGNvZGVzdHIsIDApKTsKICAgICBvcGNvZGUgPSBjb2Rlc3RyWzNdOwogICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgIGNhc2UgVU5BUllfTkVHQVRJVkU6Ci0gICAgICAgICAgICAvKiBQcmVzZXJ2ZSB0aGUgc2lnbiBvZiAtMC4wICovCi0gICAgICAgICAgICBpZiAoUHlPYmplY3RfSXNUcnVlKHYpID09IDEpCi0gICAgICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU51bWJlcl9OZWdhdGl2ZSh2KTsKKyAgICAgICAgICAgIG5ld2NvbnN0ID0gUHlOdW1iZXJfTmVnYXRpdmUodik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBVTkFSWV9JTlZFUlQ6CiAgICAgICAgICAgICBuZXdjb25zdCA9IFB5TnVtYmVyX0ludmVydCh2KTsKQEAgLTM0Nyw3ICszODYsMTEgQEAKICAgICB1bnNpZ25lZCBjaGFyICpsaW5lbm87CiAgICAgaW50ICphZGRybWFwID0gTlVMTDsKICAgICBpbnQgbmV3X2xpbmUsIGN1bV9vcmlnX2xpbmUsIGxhc3RfbGluZSwgdGFic2l6OwotICAgIGludCBjdW1sYz0wLCBsYXN0bGM9MDsgICAgICAvKiBDb3VudCBydW5zIG9mIGNvbnNlY3V0aXZlIExPQURfQ09OU1RzICovCisgICAgUHlPYmplY3QgKipjb25zdF9zdGFjayA9IE5VTEw7CisgICAgUHlfc3NpemVfdCAqbG9hZF9jb25zdF9zdGFjayA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBjb25zdF9zdGFja190b3AgPSAtMTsKKyAgICBQeV9zc2l6ZV90IGNvbnN0X3N0YWNrX3NpemUgPSAwOworICAgIGludCBpbl9jb25zdHMgPSAwOyAgLyogd2hldGhlciB3ZSBhcmUgaW4gYSBMT0FEX0NPTlNUIHNlcXVlbmNlICovCiAgICAgdW5zaWduZWQgaW50ICpibG9ja3MgPSBOVUxMOwogICAgIGNoYXIgKm5hbWU7CiAKQEAgLTM5MywxMiArNDM2LDE2IEBACiAgICAgICAgIGdvdG8gZXhpdEVycm9yOwogICAgIGFzc2VydChQeUxpc3RfQ2hlY2soY29uc3RzKSk7CiAKKyAgICBDT05TVF9TVEFDS19DUkVBVEUoKTsKKwogICAgIGZvciAoaT0wIDsgaTxjb2RlbGVuIDsgaSArPSBDT0RFU0laRShjb2Rlc3RyW2ldKSkgewogICAgICAgcmVvcHRpbWl6ZV9jdXJyZW50OgogICAgICAgICBvcGNvZGUgPSBjb2Rlc3RyW2ldOwogCi0gICAgICAgIGxhc3RsYyA9IGN1bWxjOwotICAgICAgICBjdW1sYyA9IDA7CisgICAgICAgIGlmICghaW5fY29uc3RzKSB7CisgICAgICAgICAgICBDT05TVF9TVEFDS19SRVNFVCgpOworICAgICAgICB9CisgICAgICAgIGluX2NvbnN0cyA9IDA7CiAKICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKICAgICAgICAgICAgIC8qIFJlcGxhY2UgVU5BUllfTk9UIFBPUF9KVU1QX0lGX0ZBTFNFCkBAIC00MzksMjEgKzQ4NiwyMSBAQAogICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXRFcnJvcjsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChoID09IDApCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGN1bWxjID0gbGFzdGxjICsgMTsKKyAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgLyogU2tpcCBvdmVyIExPQURfQ09OU1QgdHJ1ZWNvbnN0CiAgICAgICAgICAgICAgICAgICAgUE9QX0pVTVBfSUZfRkFMU0UgeHguIFRoaXMgaW1wcm92ZXMKICAgICAgICAgICAgICAgICAgICAid2hpbGUgMSIgcGVyZm9ybWFuY2UuICovCiAgICAgICAgICAgICBjYXNlIExPQURfQ09OU1Q6Ci0gICAgICAgICAgICAgICAgY3VtbGMgPSBsYXN0bGMgKyAxOworICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaSk7CiAgICAgICAgICAgICAgICAgaiA9IEdFVEFSRyhjb2Rlc3RyLCBpKTsKICAgICAgICAgICAgICAgICBpZiAoY29kZXN0cltpKzNdICE9IFBPUF9KVU1QX0lGX0ZBTFNFICB8fAogICAgICAgICAgICAgICAgICAgICAhSVNCQVNJQ0JMT0NLKGJsb2NrcyxpLDYpICB8fAogICAgICAgICAgICAgICAgICAgICAhUHlPYmplY3RfSXNUcnVlKFB5TGlzdF9HRVRfSVRFTShjb25zdHMsIGopKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSwgTk9QLCA2KTsKLSAgICAgICAgICAgICAgICBjdW1sYyA9IDA7CisgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIC8qIFRyeSB0byBmb2xkIHR1cGxlcyBvZiBjb25zdGFudHMgKGluY2x1ZGVzIGEgY2FzZSBmb3IgbGlzdHMgYW5kIHNldHMKQEAgLTQ2NSwxOSArNTEyLDIzIEBACiAgICAgICAgICAgICBjYXNlIEJVSUxEX0xJU1Q6CiAgICAgICAgICAgICBjYXNlIEJVSUxEX1NFVDoKICAgICAgICAgICAgICAgICBqID0gR0VUQVJHKGNvZGVzdHIsIGkpOwotICAgICAgICAgICAgICAgIGggPSBpIC0gMyAqIGo7Ci0gICAgICAgICAgICAgICAgaWYgKGggPj0gMCAgJiYKLSAgICAgICAgICAgICAgICAgICAgaiA8PSBsYXN0bGMgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgICAgIGlmIChqID09IDApCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGggPSBDT05TVF9TVEFDS19PUF9MQVNUTihqKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoKGggPj0gMCB8fCBDT05TVF9TVEFDS19MRU4oKSA8IGopKTsKKyAgICAgICAgICAgICAgICBpZiAoaCA+PSAwICYmIGogPiAwICYmIGogPD0gQ09OU1RfU1RBQ0tfTEVOKCkgJiYKICAgICAgICAgICAgICAgICAgICAgKChvcGNvZGUgPT0gQlVJTERfVFVQTEUgJiYKLSAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCAzKihqKzEpKSkgfHwKKyAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpLWgrMykpIHx8CiAgICAgICAgICAgICAgICAgICAgICAoKG9wY29kZSA9PSBCVUlMRF9MSVNUIHx8IG9wY29kZSA9PSBCVUlMRF9TRVQpICYmCiAgICAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpKzNdPT1DT01QQVJFX09QICYmCi0gICAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgMyooaisyKSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpLWgrNikgJiYKICAgICAgICAgICAgICAgICAgICAgICAoR0VUQVJHKGNvZGVzdHIsaSszKT09NiB8fAogICAgICAgICAgICAgICAgICAgICAgICBHRVRBUkcoY29kZXN0cixpKzMpPT03KSkpICYmCi0gICAgICAgICAgICAgICAgICAgIHR1cGxlX29mX2NvbnN0YW50cygmY29kZXN0cltoXSwgaiwgY29uc3RzKSkgeworICAgICAgICAgICAgICAgICAgICB0dXBsZV9vZl9jb25zdGFudHMoJmNvZGVzdHJbaV0sIGosIGNvbnN0cywgQ09OU1RfU1RBQ0tfTEFTVE4oaikpKSB7CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydChjb2Rlc3RyW2ldID09IExPQURfQ09OU1QpOwotICAgICAgICAgICAgICAgICAgICBjdW1sYyA9IDE7CisgICAgICAgICAgICAgICAgICAgIG1lbXNldCgmY29kZXN0cltoXSwgTk9QLCBpIC0gaCk7CisgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BPUChqKTsKKyAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChjb2Rlc3RyW2krM10gIT0gVU5QQUNLX1NFUVVFTkNFICB8fApAQCAtNDkwLDEwICs1NDEsMTIgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGogPT0gMikgewogICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gUk9UX1RXTzsKICAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSsxLCBOT1AsIDUpOworICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19SRVNFVCgpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaiA9PSAzKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBST1RfVEhSRUU7CiAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaSsxXSA9IFJPVF9UV087CiAgICAgICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2krMiwgTk9QLCA0KTsKKyAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTUxMiwxMiArNTY1LDE4IEBACiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9BTkQ6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9YT1I6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9PUjoKLSAgICAgICAgICAgICAgICBpZiAobGFzdGxjID49IDIgICAgICAgICAgICAgICAgICAmJgotICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBpLTYsIDcpICAmJgotICAgICAgICAgICAgICAgICAgICBmb2xkX2Jpbm9wc19vbl9jb25zdGFudHMoJmNvZGVzdHJbaS02XSwgY29uc3RzKSkgeworICAgICAgICAgICAgICAgIC8qIE5PVEU6IExPQURfQ09OU1QgaXMgc2F2ZWQgYXQgYGktMmAgc2luY2UgaXQgaGFzIGFuIGFyZworICAgICAgICAgICAgICAgICAgIHdoaWxlIEJJTk9QIGhhc24ndCAqLworICAgICAgICAgICAgICAgIGggPSBDT05TVF9TVEFDS19PUF9MQVNUTigyKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoKGggPj0gMCB8fCBDT05TVF9TVEFDS19MRU4oKSA8IDIpKTsKKyAgICAgICAgICAgICAgICBpZiAoaCA+PSAwICYmCisgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCsxKSAgJiYKKyAgICAgICAgICAgICAgICAgICAgZm9sZF9iaW5vcHNfb25fY29uc3RhbnRzKCZjb2Rlc3RyW2ldLCBjb25zdHMsIENPTlNUX1NUQUNLX0xBU1ROKDIpKSkgewogICAgICAgICAgICAgICAgICAgICBpIC09IDI7CisgICAgICAgICAgICAgICAgICAgIG1lbXNldCgmY29kZXN0cltoXSwgTk9QLCBpIC0gaCk7CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydChjb2Rlc3RyW2ldID09IExPQURfQ09OU1QpOwotICAgICAgICAgICAgICAgICAgICBjdW1sYyA9IDE7CisgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BPUCgyKTsKKyAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTUyNiwxMiArNTg1LDE1IEBACiAgICAgICAgICAgICBjYXNlIFVOQVJZX05FR0FUSVZFOgogICAgICAgICAgICAgY2FzZSBVTkFSWV9JTlZFUlQ6CiAgICAgICAgICAgICBjYXNlIFVOQVJZX1BPU0lUSVZFOgotICAgICAgICAgICAgICAgIGlmIChsYXN0bGMgPj0gMSAgICAgICAgICAgICAgICAgICYmCi0gICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGktMywgNCkgICYmCi0gICAgICAgICAgICAgICAgICAgIGZvbGRfdW5hcnlvcHNfb25fY29uc3RhbnRzKCZjb2Rlc3RyW2ktM10sIGNvbnN0cykpICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGggPSBDT05TVF9TVEFDS19PUF9MQVNUTigxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoKGggPj0gMCB8fCBDT05TVF9TVEFDS19MRU4oKSA8IDEpKTsKKyAgICAgICAgICAgICAgICBpZiAoaCA+PSAwICYmCisgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCsxKSAgJiYKKyAgICAgICAgICAgICAgICAgICAgZm9sZF91bmFyeW9wc19vbl9jb25zdGFudHMoJmNvZGVzdHJbaS0zXSwgY29uc3RzLCBDT05TVF9TVEFDS19UT1AoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgaSAtPSAyOwogICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsKLSAgICAgICAgICAgICAgICAgICAgY3VtbGMgPSAxOworICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1AoMSk7CisgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC02ODgsNiArNzUwLDcgQEAKICAgICBhc3NlcnQoaCArIG5vcHMgPT0gY29kZWxlbik7CiAKICAgICBjb2RlID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKWNvZGVzdHIsIGgpOworICAgIENPTlNUX1NUQUNLX0RFTEVURSgpOwogICAgIFB5TWVtX0ZyZWUoYWRkcm1hcCk7CiAgICAgUHlNZW1fRnJlZShjb2Rlc3RyKTsKICAgICBQeU1lbV9GcmVlKGJsb2Nrcyk7CkBAIC02OTcsNiArNzYwLDcgQEAKICAgICBjb2RlID0gTlVMTDsKIAogIGV4aXRVbmNoYW5nZWQ6CisgICAgQ09OU1RfU1RBQ0tfREVMRVRFKCk7CiAgICAgaWYgKGJsb2NrcyAhPSBOVUxMKQogICAgICAgICBQeU1lbV9GcmVlKGJsb2Nrcyk7CiAgICAgaWYgKGFkZHJtYXAgIT0gTlVMTCkKZGlmZiAtLWdpdCBhL1B5dGhvbi9weWFyZW5hLmMgYi9QeXRob24vcHlhcmVuYS5jCmluZGV4IDVhMjU1YWUuLjAyYTMxZDggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weWFyZW5hLmMKKysrIGIvUHl0aG9uL3B5YXJlbmEuYwpAQCAtMTIsOCArMTIsNiBAQAogCiAjZGVmaW5lIERFRkFVTFRfQkxPQ0tfU0laRSA4MTkyCiAjZGVmaW5lIEFMSUdOTUVOVCAgICAgICAgICAgICAgIDgKLSNkZWZpbmUgQUxJR05NRU5UX01BU0sgICAgICAgICAgKEFMSUdOTUVOVCAtIDEpCi0jZGVmaW5lIFJPVU5EVVAoeCkgICAgICAgICAgICAgICgoKHgpICsgQUxJR05NRU5UX01BU0spICYgfkFMSUdOTUVOVF9NQVNLKQogCiB0eXBlZGVmIHN0cnVjdCBfYmxvY2sgewogICAgIC8qIFRvdGFsIG51bWJlciBvZiBieXRlcyBvd25lZCBieSB0aGlzIGJsb2NrIGF2YWlsYWJsZSB0byBwYXNzIG91dC4KQEAgLTg1LDggKzgzLDggQEAKICAgICBiLT5hYl9zaXplID0gc2l6ZTsKICAgICBiLT5hYl9tZW0gPSAodm9pZCAqKShiICsgMSk7CiAgICAgYi0+YWJfbmV4dCA9IE5VTEw7Ci0gICAgYi0+YWJfb2Zmc2V0ID0gUk9VTkRVUCgoUHlfdWludHB0cl90KShiLT5hYl9tZW0pKSAtCi0gICAgICAoUHlfdWludHB0cl90KShiLT5hYl9tZW0pOworICAgIGItPmFiX29mZnNldCA9IChjaGFyICopX1B5X0FMSUdOX1VQKGItPmFiX21lbSwgQUxJR05NRU5UKSAtCisgICAgICAgICAgICAoY2hhciAqKShiLT5hYl9tZW0pOwogICAgIHJldHVybiBiOwogfQogCkBAIC0xMDQsNyArMTAyLDcgQEAKIHsKICAgICB2b2lkICpwOwogICAgIGFzc2VydChiKTsKLSAgICBzaXplID0gUk9VTkRVUChzaXplKTsKKyAgICBzaXplID0gX1B5X1NJWkVfUk9VTkRfVVAoc2l6ZSwgQUxJR05NRU5UKTsKICAgICBpZiAoYi0+YWJfb2Zmc2V0ICsgc2l6ZSA+IGItPmFiX3NpemUpIHsKICAgICAgICAgLyogSWYgd2UgbmVlZCB0byBhbGxvY2F0ZSBtb3JlIG1lbW9yeSB0aGFuIHdpbGwgZml0IGluCiAgICAgICAgICAgIHRoZSBkZWZhdWx0IGJsb2NrLCBhbGxvY2F0ZSBhIG9uZS1vZmYgYmxvY2sgdGhhdCBpcwpAQCAtMTU4LDcgKzE1Niw2IEBACiB2b2lkCiBQeUFyZW5hX0ZyZWUoUHlBcmVuYSAqYXJlbmEpCiB7Ci0gICAgaW50IHI7CiAgICAgYXNzZXJ0KGFyZW5hKTsKICNpZiBkZWZpbmVkKFB5X0RFQlVHKQogICAgIC8qCkBAIC0xNzUsMTIgKzE3Miw2IEBACiAgICAgYXNzZXJ0KGFyZW5hLT5hX29iamVjdHMtPm9iX3JlZmNudCA9PSAxKTsKICAgICAqLwogCi0gICAgLyogQ2xlYXIgYWxsIHRoZSBlbGVtZW50cyBmcm9tIHRoZSBsaXN0LiAgVGhpcyBpcyBuZWNlc3NhcnkKLSAgICAgICB0byBndWFyYW50ZWUgdGhhdCB0aGV5IHdpbGwgYmUgREVDUkVGZWQuICovCi0gICAgciA9IFB5TGlzdF9TZXRTbGljZShhcmVuYS0+YV9vYmplY3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgMCwgUHlMaXN0X0dFVF9TSVpFKGFyZW5hLT5hX29iamVjdHMpLCBOVUxMKTsKLSAgICBhc3NlcnQociA9PSAwKTsKLSAgICBhc3NlcnQoUHlMaXN0X0dFVF9TSVpFKGFyZW5hLT5hX29iamVjdHMpID09IDApOwogICAgIFB5X0RFQ1JFRihhcmVuYS0+YV9vYmplY3RzKTsKICAgICBmcmVlKGFyZW5hKTsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9weXN0YXRlLmMgYi9QeXRob24vcHlzdGF0ZS5jCmluZGV4IDQyYmMzZWMuLmNmZDYxZDAgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXN0YXRlLmMKKysrIGIvUHl0aG9uL3B5c3RhdGUuYwpAQCAtNjksNyArNjksNiBAQAogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSB0aHJlYWRzIGZvciBpbnRlcnByZXRlciIpOwogI2VuZGlmCiAgICAgICAgIGludGVycC0+bW9kdWxlcyA9IE5VTEw7Ci0gICAgICAgIGludGVycC0+bW9kdWxlc19yZWxvYWRpbmcgPSBOVUxMOwogICAgICAgICBpbnRlcnAtPm1vZHVsZXNfYnlfaW5kZXggPSBOVUxMOwogICAgICAgICBpbnRlcnAtPnN5c2RpY3QgPSBOVUxMOwogICAgICAgICBpbnRlcnAtPmJ1aWx0aW5zID0gTlVMTDsKQEAgLTc5LDYgKzc4LDcgQEAKICAgICAgICAgaW50ZXJwLT5jb2RlY19lcnJvcl9yZWdpc3RyeSA9IE5VTEw7CiAgICAgICAgIGludGVycC0+Y29kZWNzX2luaXRpYWxpemVkID0gMDsKICAgICAgICAgaW50ZXJwLT5mc2NvZGVjX2luaXRpYWxpemVkID0gMDsKKyAgICAgICAgaW50ZXJwLT5pbXBvcnRsaWIgPSBOVUxMOwogI2lmZGVmIEhBVkVfRExPUEVOCiAjaWZkZWYgUlRMRF9OT1cKICAgICAgICAgaW50ZXJwLT5kbG9wZW5mbGFncyA9IFJUTERfTk9XOwpAQCAtMTEzLDkgKzExMyw5IEBACiAgICAgUHlfQ0xFQVIoaW50ZXJwLT5jb2RlY19lcnJvcl9yZWdpc3RyeSk7CiAgICAgUHlfQ0xFQVIoaW50ZXJwLT5tb2R1bGVzKTsKICAgICBQeV9DTEVBUihpbnRlcnAtPm1vZHVsZXNfYnlfaW5kZXgpOwotICAgIFB5X0NMRUFSKGludGVycC0+bW9kdWxlc19yZWxvYWRpbmcpOwogICAgIFB5X0NMRUFSKGludGVycC0+c3lzZGljdCk7CiAgICAgUHlfQ0xFQVIoaW50ZXJwLT5idWlsdGlucyk7CisgICAgUHlfQ0xFQVIoaW50ZXJwLT5pbXBvcnRsaWIpOwogfQogCiAKQEAgLTI0Miw5ICsyNDIsOSBAQAogfQogCiBQeU9iamVjdCoKLVB5U3RhdGVfRmluZE1vZHVsZShzdHJ1Y3QgUHlNb2R1bGVEZWYqIG0pCitQeVN0YXRlX0ZpbmRNb2R1bGUoc3RydWN0IFB5TW9kdWxlRGVmKiBtb2R1bGUpCiB7Ci0gICAgUHlfc3NpemVfdCBpbmRleCA9IG0tPm1fYmFzZS5tX2luZGV4OworICAgIFB5X3NzaXplX3QgaW5kZXggPSBtb2R1bGUtPm1fYmFzZS5tX2luZGV4OwogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqc3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBpZiAoaW5kZXggPT0gMCkKQEAgLTI3Niw2ICsyNzYsNDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmLT5tX2Jhc2UubV9pbmRleCwgbW9kdWxlKTsKIH0KIAoraW50CitQeVN0YXRlX0FkZE1vZHVsZShQeU9iamVjdCogbW9kdWxlLCBzdHJ1Y3QgUHlNb2R1bGVEZWYqIGRlZikKK3sKKyAgICBQeV9zc2l6ZV90IGluZGV4OworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqc3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CisgICAgaWYgKCFkZWYpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlTdGF0ZV9BZGRNb2R1bGU6IE1vZHVsZSBEZWZpbml0aW9uIGlzIE5VTEwiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpbmRleCA9IGRlZi0+bV9iYXNlLm1faW5kZXg7CisgICAgaWYgKHN0YXRlLT5tb2R1bGVzX2J5X2luZGV4KSB7CisgICAgICAgIGlmKFB5TGlzdF9HRVRfU0laRShzdGF0ZS0+bW9kdWxlc19ieV9pbmRleCkgPj0gaW5kZXgpIHsKKyAgICAgICAgICAgIGlmKG1vZHVsZSA9PSBQeUxpc3RfR0VUX0lURU0oc3RhdGUtPm1vZHVsZXNfYnlfaW5kZXgsIGluZGV4KSkgeworICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5U3RhdGVfQWRkTW9kdWxlOiBNb2R1bGUgYWxyZWFkeSBhZGRlZCEiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIF9QeVN0YXRlX0FkZE1vZHVsZShtb2R1bGUsIGRlZik7Cit9CisKK2ludAorUHlTdGF0ZV9SZW1vdmVNb2R1bGUoc3RydWN0IFB5TW9kdWxlRGVmKiBkZWYpCit7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IGRlZi0+bV9iYXNlLm1faW5kZXg7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICpzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKKyAgICBpZiAoaW5kZXggPT0gMCkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeVN0YXRlX1JlbW92ZU1vZHVsZTogTW9kdWxlIGluZGV4IGludmFsaWQuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHN0YXRlLT5tb2R1bGVzX2J5X2luZGV4ID09IE5VTEwpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlTdGF0ZV9SZW1vdmVNb2R1bGU6IEludGVycHJldGVycyBtb2R1bGUtbGlzdCBub3QgYWNlc3NpYmxlLiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChpbmRleCA+IFB5TGlzdF9HRVRfU0laRShzdGF0ZS0+bW9kdWxlc19ieV9pbmRleCkpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlTdGF0ZV9SZW1vdmVNb2R1bGU6IE1vZHVsZSBpbmRleCBvdXQgb2YgYm91bmRzLiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBQeUxpc3RfU2V0SXRlbShzdGF0ZS0+bW9kdWxlc19ieV9pbmRleCwgaW5kZXgsIFB5X05vbmUpOworfQorCiB2b2lkCiBQeVRocmVhZFN0YXRlX0NsZWFyKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSkKIHsKZGlmZiAtLWdpdCBhL1B5dGhvbi9weXN0cnRvZC5jIGIvUHl0aG9uL3B5c3RydG9kLmMKaW5kZXggNzVlMzAzMi4uNGFiOGYwOCAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5c3RydG9kLmMKKysrIGIvUHl0aG9uL3B5c3RydG9kLmMKQEAgLTIyLDYgKzIyLDQzIEBACiAgICB0aGUgc3VjY2Vzc2Z1bGx5IHBhcnNlZCBwb3J0aW9uIG9mIHRoZSBzdHJpbmcuICBPbiBmYWlsdXJlLCByZXR1cm4gLTEuMCBhbmQKICAgIHNldCAqZW5kcHRyIHRvIHBvaW50IHRvIHRoZSBzdGFydCBvZiB0aGUgc3RyaW5nLiAqLwogCisjaWZuZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIKKworZG91YmxlCitfUHlfcGFyc2VfaW5mX29yX25hbihjb25zdCBjaGFyICpwLCBjaGFyICoqZW5kcHRyKQoreworICAgIGRvdWJsZSByZXR2YWw7CisgICAgY29uc3QgY2hhciAqczsKKyAgICBpbnQgbmVnYXRlID0gMDsKKworICAgIHMgPSBwOworICAgIGlmICgqcyA9PSAnLScpIHsKKyAgICAgICAgbmVnYXRlID0gMTsKKyAgICAgICAgcysrOworICAgIH0KKyAgICBlbHNlIGlmICgqcyA9PSAnKycpIHsKKyAgICAgICAgcysrOworICAgIH0KKyAgICBpZiAoY2FzZV9pbnNlbnNpdGl2ZV9tYXRjaChzLCAiaW5mIikpIHsKKyAgICAgICAgcyArPSAzOworICAgICAgICBpZiAoY2FzZV9pbnNlbnNpdGl2ZV9tYXRjaChzLCAiaW5pdHkiKSkKKyAgICAgICAgICAgIHMgKz0gNTsKKyAgICAgICAgcmV0dmFsID0gX1B5X2RnX2luZmluaXR5KG5lZ2F0ZSk7CisgICAgfQorICAgIGVsc2UgaWYgKGNhc2VfaW5zZW5zaXRpdmVfbWF0Y2gocywgIm5hbiIpKSB7CisgICAgICAgIHMgKz0gMzsKKyAgICAgICAgcmV0dmFsID0gX1B5X2RnX3N0ZG5hbihuZWdhdGUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcyA9IHA7CisgICAgICAgIHJldHZhbCA9IC0xLjA7CisgICAgfQorICAgICplbmRwdHIgPSAoY2hhciAqKXM7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworI2Vsc2UKKwogZG91YmxlCiBfUHlfcGFyc2VfaW5mX29yX25hbihjb25zdCBjaGFyICpwLCBjaGFyICoqZW5kcHRyKQogewpAQCAtNTcsNiArOTQsOCBAQAogICAgIHJldHVybiByZXR2YWw7CiB9CiAKKyNlbmRpZgorCiAvKioKICAqIF9QeU9TX2FzY2lpX3N0cnRvZDoKICAqIEBucHRyOiAgICB0aGUgc3RyaW5nIHRvIGNvbnZlcnQgdG8gYSBudW1lcmljIHZhbHVlLgpAQCAtOTU0LDcgKzk5Myw3IEBACiAgICAgICAgICAgICAvKiBzaG91bGRuJ3QgZ2V0IGhlcmU6IEdheSdzIGNvZGUgc2hvdWxkIGFsd2F5cyByZXR1cm4KICAgICAgICAgICAgICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIGEgZGlnaXQsIGFuICdJJywgIG9yICdOJyAqLwogICAgICAgICAgICAgc3RybmNweShwLCAiRVJSIiwgMyk7Ci0gICAgICAgICAgICBwICs9IDM7CisgICAgICAgICAgICAvKiBwICs9IDM7ICovCiAgICAgICAgICAgICBhc3NlcnQoMCk7CiAgICAgICAgIH0KICAgICAgICAgZ290byBleGl0OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5dGhvbnJ1bi5jIGIvUHl0aG9uL3B5dGhvbnJ1bi5jCmluZGV4IDM2MzlmYTcuLmRkMzIwMTcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXRob25ydW4uYworKysgYi9QeXRob24vcHl0aG9ucnVuLmMKQEAgLTUyLDcgKzUyLDcgQEAKIGV4dGVybiBncmFtbWFyIF9QeVBhcnNlcl9HcmFtbWFyOyAvKiBGcm9tIGdyYW1pbml0LmMgKi8KIAogLyogRm9yd2FyZCAqLwotc3RhdGljIHZvaWQgaW5pdG1haW4odm9pZCk7CitzdGF0aWMgdm9pZCBpbml0bWFpbihQeUludGVycHJldGVyU3RhdGUgKmludGVycCk7CiBzdGF0aWMgaW50IGluaXRmc2VuY29kaW5nKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwKTsKIHN0YXRpYyB2b2lkIGluaXRzaXRlKHZvaWQpOwogc3RhdGljIGludCBpbml0c3RkaW8odm9pZCk7CkBAIC02MiwxNCArNjIsMTcgQEAKIHN0YXRpYyBQeU9iamVjdCAqcnVuX3B5Y19maWxlKEZJTEUgKiwgY29uc3QgY2hhciAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlDb21waWxlckZsYWdzICopOwogc3RhdGljIHZvaWQgZXJyX2lucHV0KHBlcnJkZXRhaWwgKik7CitzdGF0aWMgdm9pZCBlcnJfZnJlZShwZXJyZGV0YWlsICopOwogc3RhdGljIHZvaWQgaW5pdHNpZ3Modm9pZCk7CiBzdGF0aWMgdm9pZCBjYWxsX3B5X2V4aXRmdW5jcyh2b2lkKTsKIHN0YXRpYyB2b2lkIHdhaXRfZm9yX3RocmVhZF9zaHV0ZG93bih2b2lkKTsKIHN0YXRpYyB2b2lkIGNhbGxfbGxfZXhpdGZ1bmNzKHZvaWQpOwotZXh0ZXJuIHZvaWQgX1B5VW5pY29kZV9Jbml0KHZvaWQpOworZXh0ZXJuIGludCBfUHlVbmljb2RlX0luaXQodm9pZCk7CiBleHRlcm4gdm9pZCBfUHlVbmljb2RlX0Zpbmkodm9pZCk7CiBleHRlcm4gaW50IF9QeUxvbmdfSW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIFB5TG9uZ19GaW5pKHZvaWQpOworZXh0ZXJuIGludCBfUHlGYXVsdGhhbmRsZXJfSW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIF9QeUZhdWx0aGFuZGxlcl9GaW5pKHZvaWQpOwogCiAjaWZkZWYgV0lUSF9USFJFQUQKIGV4dGVybiB2b2lkIF9QeUdJTFN0YXRlX0luaXQoUHlJbnRlcnByZXRlclN0YXRlICosIFB5VGhyZWFkU3RhdGUgKik7CkBAIC0xMzksMTIgKzE0MiwxMyBAQAogewogICAgIGNoYXIgKm5hbWVfdXRmOCwgKm5hbWVfc3RyOwogICAgIFB5T2JqZWN0ICpjb2RlYywgKm5hbWUgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKG5hbWUpOwogCiAgICAgY29kZWMgPSBfUHlDb2RlY19Mb29rdXAoZW5jb2RpbmcpOwogICAgIGlmICghY29kZWMpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICBuYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhjb2RlYywgIm5hbWUiKTsKKyAgICBuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZChjb2RlYywgJlB5SWRfbmFtZSk7CiAgICAgUHlfQ0xFQVIoY29kZWMpOwogICAgIGlmICghbmFtZSkKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTE2NiwyMSArMTcwLDc5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLSNpZiBkZWZpbmVkKEhBVkVfTEFOR0lORk9fSCkgJiYgZGVmaW5lZChDT0RFU0VUKQogc3RhdGljIGNoYXIqCi1nZXRfY29kZXNldCh2b2lkKQorZ2V0X2xvY2FsZV9lbmNvZGluZyh2b2lkKQogeworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBjaGFyIGNvZGVwYWdlWzEwMF07CisgICAgUHlPU19zbnByaW50Zihjb2RlcGFnZSwgc2l6ZW9mKGNvZGVwYWdlKSwgImNwJWQiLCBHZXRBQ1AoKSk7CisgICAgcmV0dXJuIGdldF9jb2RlY19uYW1lKGNvZGVwYWdlKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKENPREVTRVQpCiAgICAgY2hhciogY29kZXNldCA9IG5sX2xhbmdpbmZvKENPREVTRVQpOwogICAgIGlmICghY29kZXNldCB8fCBjb2Rlc2V0WzBdID09ICdcMCcpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJDT0RFU0VUIGlzIG5vdCBzZXQgb3IgZW1wdHkiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBnZXRfY29kZWNfbmFtZShjb2Rlc2V0KTsKLX0KKyNlbHNlCisgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yKTsKKyAgICByZXR1cm4gTlVMTDsKICNlbmRpZgorfQorCitzdGF0aWMgdm9pZAoraW1wb3J0X2luaXQoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsIFB5T2JqZWN0ICpzeXNtb2QpCit7CisgICAgUHlPYmplY3QgKmltcG9ydGxpYjsKKyAgICBQeU9iamVjdCAqaW1wbW9kOworICAgIFB5T2JqZWN0ICpzeXNfbW9kdWxlczsKKyAgICBQeU9iamVjdCAqdmFsdWU7CisKKyAgICAvKiBJbXBvcnQgX2ltcG9ydGxpYiB0aHJvdWdoIGl0cyBmcm96ZW4gdmVyc2lvbiwgX2Zyb3plbl9pbXBvcnRsaWIuICovCisgICAgaWYgKFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZSgiX2Zyb3plbl9pbXBvcnRsaWIiKSA8PSAwKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiIpOworICAgIH0KKyAgICBlbHNlIGlmIChQeV9WZXJib3NlRmxhZykgeworICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiAjIGZyb3plblxuIik7CisgICAgfQorICAgIGltcG9ydGxpYiA9IFB5SW1wb3J0X0FkZE1vZHVsZSgiX2Zyb3plbl9pbXBvcnRsaWIiKTsKKyAgICBpZiAoaW1wb3J0bGliID09IE5VTEwpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY291bGRuJ3QgZ2V0IF9mcm96ZW5faW1wb3J0bGliIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAgICJzeXMubW9kdWxlcyIpOworICAgIH0KKyAgICBpbnRlcnAtPmltcG9ydGxpYiA9IGltcG9ydGxpYjsKKyAgICBQeV9JTkNSRUYoaW50ZXJwLT5pbXBvcnRsaWIpOworCisgICAgLyogSW5zdGFsbCBfaW1wb3J0bGliIGFzIF9faW1wb3J0X18gKi8KKyAgICBpbXBtb2QgPSBQeUluaXRfaW1wKCk7CisgICAgaWYgKGltcG1vZCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBpbXAiKTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlfVmVyYm9zZUZsYWcpIHsKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgaW1wICMgYnVpbHRpblxuIik7CisgICAgfQorICAgIHN5c19tb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOworICAgIGlmIChQeV9WZXJib3NlRmxhZykgeworICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCBzeXMgIyBidWlsdGluXG4iKTsKKyAgICB9CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKHN5c19tb2R1bGVzLCAiX2ltcCIsIGltcG1vZCkgPCAwKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IHNhdmUgX2ltcCB0byBzeXMubW9kdWxlcyIpOworICAgIH0KKworICAgIHZhbHVlID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbXBvcnRsaWIsICJfaW5zdGFsbCIsICJPTyIsIHN5c21vZCwgaW1wbW9kKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9QcmludCgpOworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBpbXBvcnRsaWIgaW5zdGFsbCBmYWlsZWQiKTsKKyAgICB9CisgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICBQeV9ERUNSRUYoaW1wbW9kKTsKKworICAgIF9QeUltcG9ydFppcF9Jbml0KCk7Cit9CisKIAogdm9pZAotUHlfSW5pdGlhbGl6ZUV4KGludCBpbnN0YWxsX3NpZ3MpCitfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoaW50IGluc3RhbGxfc2lncywgaW50IGluc3RhbGxfaW1wb3J0bGliKQogewogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwOwogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKQEAgLTI1MiwxMiArMzE0LDEwIEBACiAgICAgaW50ZXJwLT5tb2R1bGVzID0gUHlEaWN0X05ldygpOwogICAgIGlmIChpbnRlcnAtPm1vZHVsZXMgPT0gTlVMTCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgbWFrZSBtb2R1bGVzIGRpY3Rpb25hcnkiKTsKLSAgICBpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nID0gUHlEaWN0X05ldygpOwotICAgIGlmIChpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IG1ha2UgbW9kdWxlc19yZWxvYWRpbmcgZGljdGlvbmFyeSIpOwogCiAgICAgLyogSW5pdCBVbmljb2RlIGltcGxlbWVudGF0aW9uOyByZWxpZXMgb24gdGhlIGNvZGVjIHJlZ2lzdHJ5ICovCi0gICAgX1B5VW5pY29kZV9Jbml0KCk7CisgICAgaWYgKF9QeVVuaWNvZGVfSW5pdCgpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSB1bmljb2RlIik7CiAKICAgICBiaW1vZCA9IF9QeUJ1aWx0aW5fSW5pdCgpOwogICAgIGlmIChiaW1vZCA9PSBOVUxMKQpAQCAtMjY5LDcgKzMyOSw3IEBACiAgICAgUHlfSU5DUkVGKGludGVycC0+YnVpbHRpbnMpOwogCiAgICAgLyogaW5pdGlhbGl6ZSBidWlsdGluIGV4Y2VwdGlvbnMgKi8KLSAgICBfUHlFeGNfSW5pdCgpOworICAgIF9QeUV4Y19Jbml0KGJpbW9kKTsKIAogICAgIHN5c21vZCA9IF9QeVN5c19Jbml0KCk7CiAgICAgaWYgKHN5c21vZCA9PSBOVUxMKQpAQCAtMjk5LDYgKzM1OSwxNSBAQAogICAgIC8qIEluaXRpYWxpemUgX3dhcm5pbmdzLiAqLwogICAgIF9QeVdhcm5pbmdzX0luaXQoKTsKIAorICAgIGlmICghaW5zdGFsbF9pbXBvcnRsaWIpCisgICAgICAgIHJldHVybjsKKworICAgIGltcG9ydF9pbml0KGludGVycCwgc3lzbW9kKTsKKworICAgIC8qIGluaXRpYWxpemUgdGhlIGZhdWx0aGFuZGxlciBtb2R1bGUgKi8KKyAgICBpZiAoX1B5RmF1bHRoYW5kbGVyX0luaXQoKSkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBmYXVsdGhhbmRsZXIiKTsKKwogICAgIF9QeVRpbWVfSW5pdCgpOwogCiAgICAgaWYgKGluaXRmc2VuY29kaW5nKGludGVycCkgPCAwKQpAQCAtMzA3LDcgKzM3Niw3IEBACiAgICAgaWYgKGluc3RhbGxfc2lncykKICAgICAgICAgaW5pdHNpZ3MoKTsgLyogU2lnbmFsIGhhbmRsaW5nIHN0dWZmLCBpbmNsdWRpbmcgaW5pdGludHIoKSAqLwogCi0gICAgaW5pdG1haW4oKTsgLyogTW9kdWxlIF9fbWFpbl9fICovCisgICAgaW5pdG1haW4oaW50ZXJwKTsgLyogTW9kdWxlIF9fbWFpbl9fICovCiAgICAgaWYgKGluaXRzdGRpbygpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigKICAgICAgICAgICAgICJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN5cyBzdGFuZGFyZCBzdHJlYW1zIik7CkBAIC0zMjcsNiArMzk2LDEyIEBACiB9CiAKIHZvaWQKK1B5X0luaXRpYWxpemVFeChpbnQgaW5zdGFsbF9zaWdzKQoreworICAgIF9QeV9Jbml0aWFsaXplRXhfUHJpdmF0ZShpbnN0YWxsX3NpZ3MsIDEpOworfQorCit2b2lkCiBQeV9Jbml0aWFsaXplKHZvaWQpCiB7CiAgICAgUHlfSW5pdGlhbGl6ZUV4KDEpOwpAQCAtMzYxLDkgKzQzNiwxMCBAQAogICAgIFB5T2JqZWN0ICpmb3V0ID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRvdXQiKTsKICAgICBQeU9iamVjdCAqZmVyciA9IFB5U3lzX0dldE9iamVjdCgic3RkZXJyIik7CiAgICAgUHlPYmplY3QgKnRtcDsKKyAgICBfUHlfSURFTlRJRklFUihmbHVzaCk7CiAKICAgICBpZiAoZm91dCAhPSBOVUxMICYmIGZvdXQgIT0gUHlfTm9uZSAmJiAhZmlsZV9pc19jbG9zZWQoZm91dCkpIHsKLSAgICAgICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmb3V0LCAiZmx1c2giLCAiIik7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsICIiKTsKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKGZvdXQpOwogICAgICAgICBlbHNlCkBAIC0zNzEsNyArNDQ3LDcgQEAKICAgICB9CiAKICAgICBpZiAoZmVyciAhPSBOVUxMICYmIGZlcnIgIT0gUHlfTm9uZSAmJiAhZmlsZV9pc19jbG9zZWQoZmVycikpIHsKLSAgICAgICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmZXJyLCAiZmx1c2giLCAiIik7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsICIiKTsKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZQpAQCAtNDY0LDcgKzU0MCw3IEBACiAgICAgZmx1c2hfc3RkX2ZpbGVzKCk7CiAKICAgICAvKiBDb2xsZWN0IGZpbmFsIGdhcmJhZ2UuICBUaGlzIGRpc3Bvc2VzIG9mIGN5Y2xlcyBjcmVhdGVkIGJ5Ci0gICAgICogbmV3LXN0eWxlIGNsYXNzIGRlZmluaXRpb25zLCBmb3IgZXhhbXBsZS4KKyAgICAgKiBjbGFzcyBkZWZpbml0aW9ucywgZm9yIGV4YW1wbGUuCiAgICAgICogWFhYIFRoaXMgaXMgZGlzYWJsZWQgYmVjYXVzZSBpdCBjYXVzZWQgdG9vIG1hbnkgcHJvYmxlbXMuICBJZgogICAgICAqIFhYWCBhIF9fZGVsX18gb3Igd2Vha3JlZiBjYWxsYmFjayB0cmlnZ2VycyBoZXJlLCBQeXRob24gY29kZSBoYXMKICAgICAgKiBYWFggYSBoYXJkIHRpbWUgcnVubmluZywgYmVjYXVzZSBldmVuIHRoZSBzeXMgbW9kdWxlIGhhcyBiZWVuCkBAIC00ODUsNiArNTYxLDkgQEAKICAgICAvKiBEZXN0cm95IHRoZSBkYXRhYmFzZSB1c2VkIGJ5IF9QeUltcG9ydF97Rml4dXAsRmluZH1FeHRlbnNpb24gKi8KICAgICBfUHlJbXBvcnRfRmluaSgpOwogCisgICAgLyogdW5sb2FkIGZhdWx0aGFuZGxlciBtb2R1bGUgKi8KKyAgICBfUHlGYXVsdGhhbmRsZXJfRmluaSgpOworCiAgICAgLyogRGVidWdnaW5nIHN0dWZmICovCiAjaWZkZWYgQ09VTlRfQUxMT0NTCiAgICAgZHVtcF9jb3VudHMoc3Rkb3V0KTsKQEAgLTUzNCw2ICs2MTMsNyBAQAogICAgIFB5TG9uZ19GaW5pKCk7CiAgICAgUHlGbG9hdF9GaW5pKCk7CiAgICAgUHlEaWN0X0ZpbmkoKTsKKyAgICBQeVNsaWNlX0ZpbmkoKTsKIAogICAgIC8qIENsZWFudXAgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiAqLwogICAgIF9QeVVuaWNvZGVfRmluaSgpOwpAQCAtNTYyLDcgKzY0Miw3IEBACiAjZW5kaWYgLyogUHlfVFJBQ0VfUkVGUyAqLwogI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiAgICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKSkKLSAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoKTsKKyAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKICNlbmRpZgogCiAgICAgY2FsbF9sbF9leGl0ZnVuY3MoKTsKQEAgLTYwNiw3ICs2ODYsNiBAQAogICAgIC8qIFhYWCBUaGUgZm9sbG93aW5nIGlzIGxheCBpbiBlcnJvciBjaGVja2luZyAqLwogCiAgICAgaW50ZXJwLT5tb2R1bGVzID0gUHlEaWN0X05ldygpOwotICAgIGludGVycC0+bW9kdWxlc19yZWxvYWRpbmcgPSBQeURpY3RfTmV3KCk7CiAKICAgICBiaW1vZCA9IF9QeUltcG9ydF9GaW5kQnVpbHRpbigiYnVpbHRpbnMiKTsKICAgICBpZiAoYmltb2QgIT0gTlVMTCkgewpAQCAtNjE3LDExICs2OTYsMTIgQEAKICAgICB9CiAKICAgICAvKiBpbml0aWFsaXplIGJ1aWx0aW4gZXhjZXB0aW9ucyAqLwotICAgIF9QeUV4Y19Jbml0KCk7CisgICAgX1B5RXhjX0luaXQoYmltb2QpOwogCiAgICAgc3lzbW9kID0gX1B5SW1wb3J0X0ZpbmRCdWlsdGluKCJzeXMiKTsKICAgICBpZiAoYmltb2QgIT0gTlVMTCAmJiBzeXNtb2QgIT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqcHN0ZGVycjsKKwogICAgICAgICBpbnRlcnAtPnN5c2RpY3QgPSBQeU1vZHVsZV9HZXREaWN0KHN5c21vZCk7CiAgICAgICAgIGlmIChpbnRlcnAtPnN5c2RpY3QgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gaGFuZGxlX2Vycm9yOwpAQCAtNjQwLDEzICs3MjAsMTUgQEAKIAogICAgICAgICBfUHlJbXBvcnRIb29rc19Jbml0KCk7CiAKKyAgICAgICAgaW1wb3J0X2luaXQoaW50ZXJwLCBzeXNtb2QpOworCiAgICAgICAgIGlmIChpbml0ZnNlbmNvZGluZyhpbnRlcnApIDwgMCkKICAgICAgICAgICAgIGdvdG8gaGFuZGxlX2Vycm9yOwogCiAgICAgICAgIGlmIChpbml0c3RkaW8oKSA8IDApCiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKAogICAgICAgICAgICAgIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIHN0YW5kYXJkIHN0cmVhbXMiKTsKLSAgICAgICAgaW5pdG1haW4oKTsKKyAgICAgICAgaW5pdG1haW4oaW50ZXJwKTsKICAgICAgICAgaWYgKCFQeV9Ob1NpdGVGbGFnKQogICAgICAgICAgICAgaW5pdHNpdGUoKTsKICAgICB9CkBAIC03NDMsNyArODI1LDcgQEAKIC8qIENyZWF0ZSBfX21haW5fXyBtb2R1bGUgKi8KIAogc3RhdGljIHZvaWQKLWluaXRtYWluKHZvaWQpCitpbml0bWFpbihQeUludGVycHJldGVyU3RhdGUgKmludGVycCkKIHsKICAgICBQeU9iamVjdCAqbSwgKmQ7CiAgICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZSgiX19tYWluX18iKTsKQEAgLTc1MiwzNSArODM0LDQ4IEBACiAgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7CiAgICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKGQsICJfX2J1aWx0aW5zX18iKSA9PSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpiaW1vZCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiYnVpbHRpbnMiKTsKLSAgICAgICAgaWYgKGJpbW9kID09IE5VTEwgfHwKLSAgICAgICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2J1aWx0aW5zX18iLCBiaW1vZCkgIT0gMCkKLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImNhbid0IGFkZCBfX2J1aWx0aW5zX18gdG8gX19tYWluX18iKTsKKyAgICAgICAgaWYgKGJpbW9kID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byByZXRyaWV2ZSBidWlsdGlucyBtb2R1bGUiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fYnVpbHRpbnNfXyIsIGJpbW9kKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIF9fbWFpbl9fLl9fYnVpbHRpbnNfXyIpOworICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihiaW1vZCk7CiAgICAgfQorICAgIC8qIE1haW4gaXMgYSBsaXR0bGUgc3BlY2lhbCAtIGltcC5pc19idWlsdGluKCJfX21haW5fXyIpIHdpbGwgcmV0dXJuCisgICAgICogRmFsc2UsIGJ1dCBCdWlsdGluSW1wb3J0ZXIgaXMgc3RpbGwgdGhlIG1vc3QgYXBwcm9wcmlhdGUgaW5pdGlhbAorICAgICAqIHNldHRpbmcgZm9yIGl0cyBfX2xvYWRlcl9fIGF0dHJpYnV0ZS4gQSBtb3JlIHN1aXRhYmxlIHZhbHVlIHdpbGwKKyAgICAgKiBiZSBzZXQgaWYgX19tYWluX18gZ2V0cyBmdXJ0aGVyIGluaXRpYWxpemVkIGxhdGVyIGluIHRoZSBzdGFydHVwCisgICAgICogcHJvY2Vzcy4KKyAgICAgKi8KKyAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgIl9fbG9hZGVyX18iKSA9PSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICpsb2FkZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGludGVycC0+aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQnVpbHRpbkltcG9ydGVyIik7CisgICAgICAgIGlmIChsb2FkZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIHJldHJpZXZlIEJ1aWx0aW5JbXBvcnRlciIpOworICAgICAgICB9CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19sb2FkZXJfXyIsIGxvYWRlcikgPCAwKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBfX21haW5fXy5fX2xvYWRlcl9fIik7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGxvYWRlcik7CisgICAgfQogfQogCiBzdGF0aWMgaW50CiBpbml0ZnNlbmNvZGluZyhQeUludGVycHJldGVyU3RhdGUgKmludGVycCkKIHsKICAgICBQeU9iamVjdCAqY29kZWM7Ci0jaWYgZGVmaW5lZChIQVZFX0xBTkdJTkZPX0gpICYmIGRlZmluZWQoQ09ERVNFVCkKLSAgICBjaGFyICpjb2Rlc2V0ID0gTlVMTDsKIAotICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID09IE5VTEwpIHsKLSAgICAgICAgLyogT24gVW5peCwgc2V0IHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBhY2NvcmRpbmcgdG8gdGhlCi0gICAgICAgICAgIHVzZXIncyBwcmVmZXJlbmNlLCBpZiB0aGUgQ09ERVNFVCBuYW1lcyBhIHdlbGwta25vd24KLSAgICAgICAgICAgUHl0aG9uIGNvZGVjLCBhbmQgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBpc24ndAotICAgICAgICAgICBpbml0aWFsaXplZCBieSBvdGhlciBtZWFucy4gKi8KLSAgICAgICAgY29kZXNldCA9IGdldF9jb2Rlc2V0KCk7Ci0gICAgICAgIGlmIChjb2Rlc2V0ID09IE5VTEwpCisgICAgaWYgKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSBnZXRfbG9jYWxlX2VuY29kaW5nKCk7CisgICAgICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID09IE5VTEwpCiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBVbmFibGUgdG8gZ2V0IHRoZSBsb2NhbGUgZW5jb2RpbmciKTsKIAotICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gY29kZXNldDsKICAgICAgICAgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDA7CiAgICAgICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDE7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSNlbmRpZgogCiAgICAgLyogdGhlIGVuY29kaW5nIGlzIG1iY3MsIHV0Zi04IG9yIGFzY2lpICovCiAgICAgY29kZWMgPSBfUHlDb2RlY19Mb29rdXAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyk7CkBAIC04MjIsNiArOTE3LDExIEBACiAgICAgY29uc3QgY2hhciogbmV3bGluZTsKICAgICBQeU9iamVjdCAqbGluZV9idWZmZXJpbmc7CiAgICAgaW50IGJ1ZmZlcmluZywgaXNhdHR5OworICAgIF9QeV9JREVOVElGSUVSKG9wZW4pOworICAgIF9QeV9JREVOVElGSUVSKGlzYXR0eSk7CisgICAgX1B5X0lERU5USUZJRVIoVGV4dElPV3JhcHBlcik7CisgICAgX1B5X0lERU5USUZJRVIobmFtZSk7CisgICAgX1B5X0lERU5USUZJRVIobW9kZSk7CiAKICAgICAvKiBzdGRpbiBpcyBhbHdheXMgb3BlbmVkIGluIGJ1ZmZlcmVkIG1vZGUsIGZpcnN0IGJlY2F1c2UgaXQgc2hvdWxkbid0CiAgICAgICAgbWFrZSBhIGRpZmZlcmVuY2UgaW4gY29tbW9uIHVzZSBjYXNlcywgc2Vjb25kIGJlY2F1c2UgVGV4dElPV3JhcHBlcgpAQCAtODM2LDE0ICs5MzYsMTUgQEAKICAgICAgICAgbW9kZSA9ICJ3YiI7CiAgICAgZWxzZQogICAgICAgICBtb2RlID0gInJiIjsKLSAgICBidWYgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGlvLCAib3BlbiIsICJpc2lPT09pIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLCBtb2RlLCBidWZmZXJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lLCBQeV9Ob25lLCBQeV9Ob25lLCAwKTsKKyAgICBidWYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGlvLCAmUHlJZF9vcGVuLCAiaXNpT09PaSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZCwgbW9kZSwgYnVmZmVyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSwgUHlfTm9uZSwgUHlfTm9uZSwgMCk7CiAgICAgaWYgKGJ1ZiA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgaWYgKGJ1ZmZlcmluZykgewotICAgICAgICByYXcgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGJ1ZiwgInJhdyIpOworICAgICAgICBfUHlfSURFTlRJRklFUihyYXcpOworICAgICAgICByYXcgPSBfUHlPYmplY3RfR2V0QXR0cklkKGJ1ZiwgJlB5SWRfcmF3KTsKICAgICAgICAgaWYgKHJhdyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CkBAIC04NTMsOSArOTU0LDkgQEAKICAgICB9CiAKICAgICB0ZXh0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobmFtZSk7Ci0gICAgaWYgKHRleHQgPT0gTlVMTCB8fCBQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJhdywgIm5hbWUiLCB0ZXh0KSA8IDApCisgICAgaWYgKHRleHQgPT0gTlVMTCB8fCBfUHlPYmplY3RfU2V0QXR0cklkKHJhdywgJlB5SWRfbmFtZSwgdGV4dCkgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QocmF3LCAiaXNhdHR5IiwgIiIpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmF3LCAmUHlJZF9pc2F0dHksICIiKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgaXNhdHR5ID0gUHlPYmplY3RfSXNUcnVlKHJlcyk7CkBAIC04ODEsOSArOTgyLDkgQEAKICAgICBuZXdsaW5lID0gIlxuIjsKICNlbmRpZgogCi0gICAgc3RyZWFtID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbywgIlRleHRJT1dyYXBwZXIiLCAiT3Nzc08iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCBlbmNvZGluZywgZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZSwgbGluZV9idWZmZXJpbmcpOworICAgIHN0cmVhbSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX1RleHRJT1dyYXBwZXIsICJPc3NzTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIGVuY29kaW5nLCBlcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lLCBsaW5lX2J1ZmZlcmluZyk7CiAgICAgUHlfQ0xFQVIoYnVmKTsKICAgICBpZiAoc3RyZWFtID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC04OTMsNyArOTk0LDcgQEAKICAgICBlbHNlCiAgICAgICAgIG1vZGUgPSAiciI7CiAgICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1vZGUpOwotICAgIGlmICghdGV4dCB8fCBQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHN0cmVhbSwgIm1vZGUiLCB0ZXh0KSA8IDApCisgICAgaWYgKCF0ZXh0IHx8IF9QeU9iamVjdF9TZXRBdHRySWQoc3RyZWFtLCAmUHlJZF9tb2RlLCB0ZXh0KSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgUHlfQ0xFQVIodGV4dCk7CiAgICAgcmV0dXJuIHN0cmVhbTsKQEAgLTExMzMsMTMgKzEyMzQsMTQgQEAKICAgICBQeUFyZW5hICphcmVuYTsKICAgICBjaGFyICpwczEgPSAiIiwgKnBzMiA9ICIiLCAqZW5jID0gTlVMTDsKICAgICBpbnQgZXJyY29kZSA9IDA7CisgICAgX1B5X0lERU5USUZJRVIoZW5jb2RpbmcpOwogCiAgICAgaWYgKGZwID09IHN0ZGluKSB7CiAgICAgICAgIC8qIEZldGNoIGVuY29kaW5nIGZyb20gc3lzLnN0ZGluICovCiAgICAgICAgIHYgPSBQeVN5c19HZXRPYmplY3QoInN0ZGluIik7CiAgICAgICAgIGlmICh2ID09IE5VTEwgfHwgdiA9PSBQeV9Ob25lKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBvZW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh2LCAiZW5jb2RpbmciKTsKKyAgICAgICAgb2VuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQodiwgJlB5SWRfZW5jb2RpbmcpOwogICAgICAgICBpZiAoIW9lbmMpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGVuYyA9IF9QeVVuaWNvZGVfQXNTdHJpbmcob2VuYyk7CkBAIC0xMjUyLDYgKzEzNTQsMzcgQEAKIH0KIAogaW50CitzdGF0aWMgc2V0X21haW5fbG9hZGVyKFB5T2JqZWN0ICpkLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqbG9hZGVyX25hbWUpCit7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIFB5T2JqZWN0ICpmaWxlbmFtZV9vYmosICpsb2FkZXJfdHlwZSwgKmxvYWRlcjsKKyAgICBpbnQgcmVzdWx0ID0gMDsKKworICAgIGZpbGVuYW1lX29iaiA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoZmlsZW5hbWUpOworICAgIGlmIChmaWxlbmFtZV9vYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIC8qIEdldCBjdXJyZW50IHRocmVhZCBzdGF0ZSBhbmQgaW50ZXJwcmV0ZXIgcG9pbnRlciAqLworICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgaW50ZXJwID0gdHN0YXRlLT5pbnRlcnA7CisgICAgbG9hZGVyX3R5cGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGludGVycC0+aW1wb3J0bGliLCBsb2FkZXJfbmFtZSk7CisgICAgaWYgKGxvYWRlcl90eXBlID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGZpbGVuYW1lX29iaik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgbG9hZGVyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGxvYWRlcl90eXBlLCAic04iLCAiX19tYWluX18iLCBmaWxlbmFtZV9vYmopOworICAgIFB5X0RFQ1JFRihsb2FkZXJfdHlwZSk7CisgICAgaWYgKGxvYWRlciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2xvYWRlcl9fIiwgbG9hZGVyKSA8IDApIHsKKyAgICAgICAgcmVzdWx0ID0gLTE7CisgICAgfQorICAgIFB5X0RFQ1JFRihsb2FkZXIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2ludAogUHlSdW5fU2ltcGxlRmlsZUV4RmxhZ3MoRklMRSAqZnAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgY2xvc2VpdCwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5Q29tcGlsZXJGbGFncyAqZmxhZ3MpCiB7CkBAIC0xMjg0LDE4ICsxNDE3LDM0IEBACiAgICAgbGVuID0gc3RybGVuKGZpbGVuYW1lKTsKICAgICBleHQgPSBmaWxlbmFtZSArIGxlbiAtIChsZW4gPiA0ID8gNCA6IDApOwogICAgIGlmIChtYXliZV9weWNfZmlsZShmcCwgZmlsZW5hbWUsIGV4dCwgY2xvc2VpdCkpIHsKKyAgICAgICAgRklMRSAqcHljX2ZwOwogICAgICAgICAvKiBUcnkgdG8gcnVuIGEgcHljIGZpbGUuIEZpcnN0LCByZS1vcGVuIGluIGJpbmFyeSAqLwogICAgICAgICBpZiAoY2xvc2VpdCkKICAgICAgICAgICAgIGZjbG9zZShmcCk7Ci0gICAgICAgIGlmICgoZnAgPSBmb3BlbihmaWxlbmFtZSwgInJiIikpID09IE5VTEwpIHsKKyAgICAgICAgaWYgKChweWNfZnAgPSBmb3BlbihmaWxlbmFtZSwgInJiIikpID09IE5VTEwpIHsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicHl0aG9uOiBDYW4ndCByZW9wZW4gLnB5YyBmaWxlXG4iKTsKICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgfQogICAgICAgICAvKiBUdXJuIG9uIG9wdGltaXphdGlvbiBpZiBhIC5weW8gZmlsZSBpcyBnaXZlbiAqLwogICAgICAgICBpZiAoc3RyY21wKGV4dCwgIi5weW8iKSA9PSAwKQogICAgICAgICAgICAgUHlfT3B0aW1pemVGbGFnID0gMTsKLSAgICAgICAgdiA9IHJ1bl9weWNfZmlsZShmcCwgZmlsZW5hbWUsIGQsIGQsIGZsYWdzKTsKKworICAgICAgICBpZiAoc2V0X21haW5fbG9hZGVyKGQsIGZpbGVuYW1lLCAiU291cmNlbGVzc0ZpbGVMb2FkZXIiKSA8IDApIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicHl0aG9uOiBmYWlsZWQgdG8gc2V0IF9fbWFpbl9fLl9fbG9hZGVyX19cbiIpOworICAgICAgICAgICAgcmV0ID0gLTE7CisgICAgICAgICAgICBmY2xvc2UocHljX2ZwKTsKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgfQorICAgICAgICB2ID0gcnVuX3B5Y19maWxlKHB5Y19mcCwgZmlsZW5hbWUsIGQsIGQsIGZsYWdzKTsKKyAgICAgICAgZmNsb3NlKHB5Y19mcCk7CiAgICAgfSBlbHNlIHsKKyAgICAgICAgLyogV2hlbiBydW5uaW5nIGZyb20gc3RkaW4sIGxlYXZlIF9fbWFpbl9fLl9fbG9hZGVyX18gYWxvbmUgKi8KKyAgICAgICAgaWYgKHN0cmNtcChmaWxlbmFtZSwgIjxzdGRpbj4iKSAhPSAwICYmCisgICAgICAgICAgICBzZXRfbWFpbl9sb2FkZXIoZCwgZmlsZW5hbWUsICJTb3VyY2VGaWxlTG9hZGVyIikgPCAwKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInB5dGhvbjogZmFpbGVkIHRvIHNldCBfX21haW5fXy5fX2xvYWRlcl9fXG4iKTsKKyAgICAgICAgICAgIHJldCA9IC0xOworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CiAgICAgICAgIHYgPSBQeVJ1bl9GaWxlRXhGbGFncyhmcCwgZmlsZW5hbWUsIFB5X2ZpbGVfaW5wdXQsIGQsIGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZWl0LCBmbGFncyk7CiAgICAgfQpAQCAtMTMzNiwyMCArMTQ4NSwyMCBAQAogewogICAgIGxvbmcgaG9sZDsKICAgICBQeU9iamVjdCAqdjsKLQotICAgIC8qIG9sZCBzdHlsZSBlcnJvcnMgKi8KLSAgICBpZiAoUHlUdXBsZV9DaGVjayhlcnIpKQotICAgICAgICByZXR1cm4gUHlBcmdfUGFyc2VUdXBsZShlcnIsICJPKHppaXopIiwgbWVzc2FnZSwgZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgb2Zmc2V0LCB0ZXh0KTsKKyAgICBfUHlfSURFTlRJRklFUihtc2cpOworICAgIF9QeV9JREVOVElGSUVSKGZpbGVuYW1lKTsKKyAgICBfUHlfSURFTlRJRklFUihsaW5lbm8pOworICAgIF9QeV9JREVOVElGSUVSKG9mZnNldCk7CisgICAgX1B5X0lERU5USUZJRVIodGV4dCk7CiAKICAgICAqbWVzc2FnZSA9IE5VTEw7CiAKICAgICAvKiBuZXcgc3R5bGUgZXJyb3JzLiAgYGVycicgaXMgYW4gaW5zdGFuY2UgKi8KLSAgICAqbWVzc2FnZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZXJyLCAibXNnIik7CisgICAgKm1lc3NhZ2UgPSBfUHlPYmplY3RfR2V0QXR0cklkKGVyciwgJlB5SWRfbXNnKTsKICAgICBpZiAoISptZXNzYWdlKQogICAgICAgICBnb3RvIGZpbmFsbHk7CiAKLSAgICB2ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhlcnIsICJmaWxlbmFtZSIpOworICAgIHYgPSBfUHlPYmplY3RfR2V0QXR0cklkKGVyciwgJlB5SWRfZmlsZW5hbWUpOwogICAgIGlmICghdikKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIGlmICh2ID09IFB5X05vbmUpIHsKQEAgLTEzNjMsNyArMTUxMiw3IEBACiAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgfQogCi0gICAgdiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZXJyLCAibGluZW5vIik7CisgICAgdiA9IF9QeU9iamVjdF9HZXRBdHRySWQoZXJyLCAmUHlJZF9saW5lbm8pOwogICAgIGlmICghdikKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIGhvbGQgPSBQeUxvbmdfQXNMb25nKHYpOwpAQCAtMTM3Miw3ICsxNTIxLDcgQEAKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgICpsaW5lbm8gPSAoaW50KWhvbGQ7CiAKLSAgICB2ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhlcnIsICJvZmZzZXQiKTsKKyAgICB2ID0gX1B5T2JqZWN0X0dldEF0dHJJZChlcnIsICZQeUlkX29mZnNldCk7CiAgICAgaWYgKCF2KQogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgaWYgKHYgPT0gUHlfTm9uZSkgewpAQCAtMTM4Niw3ICsxNTM1LDcgQEAKICAgICAgICAgKm9mZnNldCA9IChpbnQpaG9sZDsKICAgICB9CiAKLSAgICB2ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhlcnIsICJ0ZXh0Iik7CisgICAgdiA9IF9QeU9iamVjdF9HZXRBdHRySWQoZXJyLCAmUHlJZF90ZXh0KTsKICAgICBpZiAoIXYpCiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICBpZiAodiA9PSBQeV9Ob25lKSB7CkBAIC0xNDYwLDcgKzE2MDksOCBAQAogICAgICAgICBnb3RvIGRvbmU7CiAgICAgaWYgKFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgIC8qIFRoZSBlcnJvciBjb2RlIHNob3VsZCBiZSBpbiB0aGUgYGNvZGUnIGF0dHJpYnV0ZS4gKi8KLSAgICAgICAgUHlPYmplY3QgKmNvZGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHZhbHVlLCAiY29kZSIpOworICAgICAgICBfUHlfSURFTlRJRklFUihjb2RlKTsKKyAgICAgICAgUHlPYmplY3QgKmNvZGUgPSBfUHlPYmplY3RfR2V0QXR0cklkKHZhbHVlLCAmUHlJZF9jb2RlKTsKICAgICAgICAgaWYgKGNvZGUpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICB2YWx1ZSA9IGNvZGU7CkBAIC0xNTY3LDYgKzE3MTcsNyBAQAogewogICAgIGludCBlcnIgPSAwOwogICAgIFB5T2JqZWN0ICp0eXBlLCAqdGI7CisgICAgX1B5X0lERU5USUZJRVIocHJpbnRfZmlsZV9hbmRfbGluZSk7CiAKICAgICBpZiAoIVB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgIFB5RmlsZV9Xcml0ZVN0cmluZygiVHlwZUVycm9yOiBwcmludF9leGNlcHRpb24oKTogRXhjZXB0aW9uIGV4cGVjdGVkIGZvciB2YWx1ZSwgIiwgZik7CkBAIC0xNTgyLDcgKzE3MzMsNyBAQAogICAgIGlmICh0YiAmJiB0YiAhPSBQeV9Ob25lKQogICAgICAgICBlcnIgPSBQeVRyYWNlQmFja19QcmludCh0YiwgZik7CiAgICAgaWYgKGVyciA9PSAwICYmCi0gICAgICAgIFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcodmFsdWUsICJwcmludF9maWxlX2FuZF9saW5lIikpCisgICAgICAgIF9QeU9iamVjdF9IYXNBdHRySWQodmFsdWUsICZQeUlkX3ByaW50X2ZpbGVfYW5kX2xpbmUpKQogICAgIHsKICAgICAgICAgUHlPYmplY3QgKm1lc3NhZ2U7CiAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCAqdGV4dDsKQEAgLTE2MTcsNiArMTc2OCw3IEBACiAgICAgZWxzZSB7CiAgICAgICAgIFB5T2JqZWN0KiBtb2R1bGVOYW1lOwogICAgICAgICBjaGFyKiBjbGFzc05hbWU7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbW9kdWxlX18pOwogICAgICAgICBhc3NlcnQoUHlFeGNlcHRpb25DbGFzc19DaGVjayh0eXBlKSk7CiAgICAgICAgIGNsYXNzTmFtZSA9IFB5RXhjZXB0aW9uQ2xhc3NfTmFtZSh0eXBlKTsKICAgICAgICAgaWYgKGNsYXNzTmFtZSAhPSBOVUxMKSB7CkBAIC0xNjI1LDEwICsxNzc3LDEwIEBACiAgICAgICAgICAgICAgICAgY2xhc3NOYW1lID0gZG90KzE7CiAgICAgICAgIH0KIAotICAgICAgICBtb2R1bGVOYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0eXBlLCAiX19tb2R1bGVfXyIpOworICAgICAgICBtb2R1bGVOYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZCh0eXBlLCAmUHlJZF9fX21vZHVsZV9fKTsKICAgICAgICAgaWYgKG1vZHVsZU5hbWUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKG1vZHVsZU5hbWUpKQogICAgICAgICB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobW9kdWxlTmFtZSk7CisgICAgICAgICAgICBQeV9YREVDUkVGKG1vZHVsZU5hbWUpOwogICAgICAgICAgICAgZXJyID0gUHlGaWxlX1dyaXRlU3RyaW5nKCI8dW5rbm93bj4iLCBmKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTE2NTUsNyArMTgwNyw3IEBACiAgICAgICAgIGlmIChzID09IE5VTEwpCiAgICAgICAgICAgICBlcnIgPSAtMTsKICAgICAgICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhzKSB8fAotICAgICAgICAgICAgUHlVbmljb2RlX0dldFNpemUocykgIT0gMCkKKyAgICAgICAgICAgIFB5VW5pY29kZV9HZXRMZW5ndGgocykgIT0gMCkKICAgICAgICAgICAgIGVyciA9IFB5RmlsZV9Xcml0ZVN0cmluZygiOiAiLCBmKTsKICAgICAgICAgaWYgKGVyciA9PSAwKQogICAgICAgICAgIGVyciA9IFB5RmlsZV9Xcml0ZU9iamVjdChzLCBmLCBQeV9QUklOVF9SQVcpOwpAQCAtMTcwMyw3ICsxODU1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNhdXNlX21lc3NhZ2UsIGYpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRleHQpIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRleHQgJiYKKyAgICAgICAgICAgICAgICAhKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKil2YWx1ZSktPnN1cHByZXNzX2NvbnRleHQpIHsKICAgICAgICAgICAgICAgICByZXMgPSBQeVNldF9Db250YWlucyhzZWVuLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICBpZiAocmVzID09IC0xKQogICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMTc5MiwxMyArMTk0NSwxNCBAQAogewogICAgIFB5T2JqZWN0ICpmLCAqcjsKICAgICBQeU9iamVjdCAqdHlwZSwgKnZhbHVlLCAqdHJhY2ViYWNrOworICAgIF9QeV9JREVOVElGSUVSKGZsdXNoKTsKIAogICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uICovCiAgICAgUHlFcnJfRmV0Y2goJnR5cGUsICZ2YWx1ZSwgJnRyYWNlYmFjayk7CiAKICAgICBmID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRlcnIiKTsKICAgICBpZiAoZiAhPSBOVUxMKSB7Ci0gICAgICAgIHIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGYsICJmbHVzaCIsICIiKTsKKyAgICAgICAgciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfZmx1c2gsICIiKTsKICAgICAgICAgaWYgKHIpCiAgICAgICAgICAgICBQeV9ERUNSRUYocik7CiAgICAgICAgIGVsc2UKQEAgLTE4MDYsNyArMTk2MCw3IEBACiAgICAgfQogICAgIGYgPSBQeVN5c19HZXRPYmplY3QoInN0ZG91dCIpOwogICAgIGlmIChmICE9IE5VTEwpIHsKLSAgICAgICAgciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZiwgImZsdXNoIiwgIiIpOworICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgIiIpOwogICAgICAgICBpZiAocikKICAgICAgICAgICAgIFB5X0RFQ1JFRihyKTsKICAgICAgICAgZWxzZQpAQCAtMTg0NSw5ICsxOTk5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIkJhZCBtYWdpYyBudW1iZXIgaW4gLnB5YyBmaWxlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICAvKiBTa2lwIG10aW1lIGFuZCBzaXplICovCisgICAgKHZvaWQpIFB5TWFyc2hhbF9SZWFkTG9uZ0Zyb21GaWxlKGZwKTsKICAgICAodm9pZCkgUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUoZnApOwogICAgIHYgPSBQeU1hcnNoYWxfUmVhZExhc3RPYmplY3RGcm9tRmlsZShmcCk7Ci0gICAgZmNsb3NlKGZwKTsKICAgICBpZiAodiA9PSBOVUxMIHx8ICFQeUNvZGVfQ2hlY2sodikpIHsKICAgICAgICAgUHlfWERFQ1JFRih2KTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKQEAgLTE5MzcsMTIgKzIwOTIsMTMgQEAKICAgICAgICAgZmxhZ3MtPmNmX2ZsYWdzIHw9IGlmbGFncyAmIFB5Q0ZfTUFTSzsKICAgICAgICAgbW9kID0gUHlBU1RfRnJvbU5vZGUobiwgZmxhZ3MsIGZpbGVuYW1lLCBhcmVuYSk7CiAgICAgICAgIFB5Tm9kZV9GcmVlKG4pOwotICAgICAgICByZXR1cm4gbW9kOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgZXJyX2lucHV0KCZlcnIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbW9kID0gTlVMTDsKICAgICB9CisgICAgZXJyX2ZyZWUoJmVycik7CisgICAgcmV0dXJuIG1vZDsKIH0KIAogbW9kX3R5CkBAIC0xOTY3LDE0ICsyMTIzLDE1IEBACiAgICAgICAgIGZsYWdzLT5jZl9mbGFncyB8PSBpZmxhZ3MgJiBQeUNGX01BU0s7CiAgICAgICAgIG1vZCA9IFB5QVNUX0Zyb21Ob2RlKG4sIGZsYWdzLCBmaWxlbmFtZSwgYXJlbmEpOwogICAgICAgICBQeU5vZGVfRnJlZShuKTsKLSAgICAgICAgcmV0dXJuIG1vZDsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGVycl9pbnB1dCgmZXJyKTsKICAgICAgICAgaWYgKGVycmNvZGUpCiAgICAgICAgICAgICAqZXJyY29kZSA9IGVyci5lcnJvcjsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIG1vZCA9IE5VTEw7CiAgICAgfQorICAgIGVycl9mcmVlKCZlcnIpOworICAgIHJldHVybiBtb2Q7CiB9CiAKIC8qIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIHBhcnNlZmlsZSAtLSByZXR1cm4gbm9kZSBvciBzZXQgZXhjZXB0aW9uICovCkBAIC0xOTg4LDYgKzIxNDUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgTlVMTCwgTlVMTCwgJmVyciwgZmxhZ3MpOwogICAgIGlmIChuID09IE5VTEwpCiAgICAgICAgIGVycl9pbnB1dCgmZXJyKTsKKyAgICBlcnJfZnJlZSgmZXJyKTsKIAogICAgIHJldHVybiBuOwogfQpAQCAtMjAwMiw2ICsyMTYwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgJmVyciwgZmxhZ3MpOwogICAgIGlmIChuID09IE5VTEwpCiAgICAgICAgIGVycl9pbnB1dCgmZXJyKTsKKyAgICBlcnJfZnJlZSgmZXJyKTsKICAgICByZXR1cm4gbjsKIH0KIApAQCAtMjAxNCw2ICsyMTczLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmX1B5UGFyc2VyX0dyYW1tYXIsIHN0YXJ0LCAmZXJyLCBmbGFncyk7CiAgICAgaWYgKG4gPT0gTlVMTCkKICAgICAgICAgZXJyX2lucHV0KCZlcnIpOworICAgIGVycl9mcmVlKCZlcnIpOwogICAgIHJldHVybiBuOwogfQogCkBAIC0yMDI3LDExICsyMTg3LDIzIEBACiAgICBldmVuIHBhcnNlciBtb2R1bGVzLiAqLwogCiB2b2lkCitQeVBhcnNlcl9DbGVhckVycm9yKHBlcnJkZXRhaWwgKmVycikKK3sKKyAgICBlcnJfZnJlZShlcnIpOworfQorCit2b2lkCiBQeVBhcnNlcl9TZXRFcnJvcihwZXJyZGV0YWlsICplcnIpCiB7CiAgICAgZXJyX2lucHV0KGVycik7CiB9CiAKK3N0YXRpYyB2b2lkCitlcnJfZnJlZShwZXJyZGV0YWlsICplcnIpCit7CisgICAgUHlfQ0xFQVIoZXJyLT5maWxlbmFtZSk7Cit9CisKIC8qIFNldCB0aGUgZXJyb3IgYXBwcm9wcmlhdGUgdG8gdGhlIGdpdmVuIGlucHV0IGVycm9yIGNvZGUgKHNlZSBlcnJjb2RlLmgpICovCiAKIHN0YXRpYyB2b2lkCkBAIC0yMDM5LDcgKzIyMTEsNiBAQAogewogICAgIFB5T2JqZWN0ICp2LCAqdywgKmVycnR5cGUsICplcnJ0ZXh0OwogICAgIFB5T2JqZWN0ICptc2dfb2JqID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZmlsZW5hbWU7CiAgICAgY2hhciAqbXNnID0gTlVMTDsKIAogICAgIGVycnR5cGUgPSBQeUV4Y19TeW50YXhFcnJvcjsKQEAgLTIxMTEsNiArMjI4Miw5IEBACiAgICAgY2FzZSBFX0lERU5USUZJRVI6CiAgICAgICAgIG1zZyA9ICJpbnZhbGlkIGNoYXJhY3RlciBpbiBpZGVudGlmaWVyIjsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFX0JBRFNJTkdMRToKKyAgICAgICAgbXNnID0gIm11bHRpcGxlIHN0YXRlbWVudHMgZm91bmQgd2hpbGUgY29tcGlsaW5nIGEgc2luZ2xlIHN0YXRlbWVudCI7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZXJyb3I9JWRcbiIsIGVyci0+ZXJyb3IpOwogICAgICAgICBtc2cgPSAidW5rbm93biBwYXJzaW5nIGVycm9yIjsKQEAgLTIxMjUsMTcgKzIyOTksOCBAQAogICAgICAgICBlcnJ0ZXh0ID0gUHlVbmljb2RlX0RlY29kZVVURjgoZXJyLT50ZXh0LCBzdHJsZW4oZXJyLT50ZXh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlIik7CiAgICAgfQotICAgIGlmIChlcnItPmZpbGVuYW1lICE9IE5VTEwpCi0gICAgICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChlcnItPmZpbGVuYW1lKTsKLSAgICBlbHNlIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICBmaWxlbmFtZSA9IFB5X05vbmU7Ci0gICAgfQotICAgIGlmIChmaWxlbmFtZSAhPSBOVUxMKQotICAgICAgICB2ID0gUHlfQnVpbGRWYWx1ZSgiKE5paU4pIiwgZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGVyci0+bGluZW5vLCBlcnItPm9mZnNldCwgZXJydGV4dCk7Ci0gICAgZWxzZQotICAgICAgICB2ID0gTlVMTDsKKyAgICB2ID0gUHlfQnVpbGRWYWx1ZSgiKE9paU4pIiwgZXJyLT5maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBlcnItPmxpbmVubywgZXJyLT5vZmZzZXQsIGVycnRleHQpOwogICAgIGlmICh2ICE9IE5VTEwpIHsKICAgICAgICAgaWYgKG1zZ19vYmopCiAgICAgICAgICAgICB3ID0gUHlfQnVpbGRWYWx1ZSgiKE9PKSIsIG1zZ19vYmosIHYpOwpAQCAtMjE1OSwxMSArMjMyNCwyNCBAQAogdm9pZAogUHlfRmF0YWxFcnJvcihjb25zdCBjaGFyICptc2cpCiB7CisgICAgY29uc3QgaW50IGZkID0gZmlsZW5vKHN0ZGVycik7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworCiAgICAgZnByaW50ZihzdGRlcnIsICJGYXRhbCBQeXRob24gZXJyb3I6ICVzXG4iLCBtc2cpOwogICAgIGZmbHVzaChzdGRlcnIpOyAvKiBpdCBoZWxwcyBpbiBXaW5kb3dzIGRlYnVnIGJ1aWxkICovCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlFcnJfUHJpbnRFeCgwKTsKICAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHRzdGF0ZSA9IF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KTsKKyAgICAgICAgaWYgKHRzdGF0ZSAhPSBOVUxMKSB7CisgICAgICAgICAgICBmcHV0YygnXG4nLCBzdGRlcnIpOworICAgICAgICAgICAgZmZsdXNoKHN0ZGVycik7CisgICAgICAgICAgICBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIHRzdGF0ZS0+aW50ZXJwLCB0c3RhdGUpOworICAgICAgICB9CisgICAgICAgIF9QeUZhdWx0aGFuZGxlcl9GaW5pKCk7CisgICAgfQorCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIHsKICAgICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihtc2cpOwpAQCAtMjIxOCw2ICsyMzk2LDcgQEAKIHdhaXRfZm9yX3RocmVhZF9zaHV0ZG93bih2b2lkKQogewogI2lmZGVmIFdJVEhfVEhSRUFECisgICAgX1B5X0lERU5USUZJRVIoX3NodXRkb3duKTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CiAgICAgUHlPYmplY3QgKnRocmVhZGluZyA9IFB5TWFwcGluZ19HZXRJdGVtU3RyaW5nKHRzdGF0ZS0+aW50ZXJwLT5tb2R1bGVzLApAQCAtMjIyNyw3ICsyNDA2LDcgQEAKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHRocmVhZGluZywgIl9zaHV0ZG93biIsICIiKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRocmVhZGluZywgJlB5SWRfX3NodXRkb3duLCAiIik7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSh0aHJlYWRpbmcpOwogICAgIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9weXRpbWUuYyBiL1B5dGhvbi9weXRpbWUuYwppbmRleCA2ZmI3Njk1Li5iZWVhYjg3IDEwMDY0NAotLS0gYS9QeXRob24vcHl0aW1lLmMKKysrIGIvUHl0aG9uL3B5dGltZS5jCkBAIC0xLDcgKzEsOSBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgorI2lmZGVmIE1TX1dJTkRPV1MKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKIAotI2lmZGVmIF9fQVBQTEVfXwotI2lmIGRlZmluZWQoSEFWRV9HRVRUSU1FT0ZEQVkpICYmIGRlZmluZWQoSEFWRV9GVElNRSkKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgZGVmaW5lZChIQVZFX0dFVFRJTUVPRkRBWSkgJiYgZGVmaW5lZChIQVZFX0ZUSU1FKQogICAvKgogICAgKiBfUHlUaW1lX2dldHRpbWVvZmRheSBmYWxscyBiYWNrIHRvIGZ0aW1lIHdoZW4gZ2V0dHRpbWVvZmRheSBmYWlscyBiZWNhdXNlIHRoZSBsYXR0ZXIKICAgICogbWlnaHQgZmFpbCBvbiBzb21lIHBsYXRmb3Jtcy4gVGhpcyBmYWxsYmFjayBpcyB1bndhbnRlZCBvbiBNYWNPU1ggYmVjYXVzZQpAQCAtMTAsMTggKzEyLDQxIEBACiAgICAqLwogIyB1bmRlZiBIQVZFX0ZUSU1FCiAjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9GVElNRSkgJiYgIWRlZmluZWQoTVNfV0lORE9XUykKKyNpbmNsdWRlIDxzeXMvdGltZWIuaD4KK2V4dGVybiBpbnQgZnRpbWUoc3RydWN0IHRpbWViICopOwogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX0ZUSU1FCi0jaW5jbHVkZSA8c3lzL3RpbWViLmg+Ci0jaWYgIWRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoUFlPU19PUzIpCi1leHRlcm4gaW50IGZ0aW1lKHN0cnVjdCB0aW1lYiAqKTsKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCi0jZW5kaWYgLyogSEFWRV9GVElNRSAqLwotCi12b2lkCi1fUHlUaW1lX2dldHRpbWVvZmRheShfUHlUaW1lX3RpbWV2YWwgKnRwKQorc3RhdGljIHZvaWQKK3B5Z2V0dGltZW9mZGF5KF9QeVRpbWVfdGltZXZhbCAqdHAsIF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCiB7CisjaWZkZWYgTVNfV0lORE9XUworICAgIEZJTEVUSU1FIHN5c3RlbV90aW1lOworICAgIFVMQVJHRV9JTlRFR0VSIGxhcmdlOworICAgIFVMT05HTE9ORyBtaWNyb3NlY29uZHM7CisKKyAgICBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgmc3lzdGVtX3RpbWUpOworICAgIGxhcmdlLnUuTG93UGFydCA9IHN5c3RlbV90aW1lLmR3TG93RGF0ZVRpbWU7CisgICAgbGFyZ2UudS5IaWdoUGFydCA9IHN5c3RlbV90aW1lLmR3SGlnaERhdGVUaW1lOworICAgIC8qIDExLDY0NCw0NzMsNjAwLDAwMCwwMDA6IG51bWJlciBvZiBtaWNyb3NlY29uZHMgYmV0d2VlbgorICAgICAgIHRoZSAxc3QgamFudWFyeSAxNjAxIGFuZCB0aGUgMXN0IGphbnVhcnkgMTk3MCAoMzY5IHllYXJzICsgODkgbGVhcAorICAgICAgIGRheXMpLiAqLworICAgIG1pY3Jvc2Vjb25kcyA9IGxhcmdlLlF1YWRQYXJ0IC8gMTAgLSAxMTY0NDQ3MzYwMDAwMDAwMDsKKyAgICB0cC0+dHZfc2VjID0gbWljcm9zZWNvbmRzIC8gMTAwMDAwMDsKKyAgICB0cC0+dHZfdXNlYyA9IG1pY3Jvc2Vjb25kcyAlIDEwMDAwMDA7CisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgRFdPUkQgdGltZUFkanVzdG1lbnQsIHRpbWVJbmNyZW1lbnQ7CisgICAgICAgIEJPT0wgaXNUaW1lQWRqdXN0bWVudERpc2FibGVkOworCisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIkdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCkiOworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOworICAgICAgICAodm9pZCkgR2V0U3lzdGVtVGltZUFkanVzdG1lbnQoJnRpbWVBZGp1c3RtZW50LCAmdGltZUluY3JlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQpOworICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gdGltZUluY3JlbWVudCAqIDFlLTc7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAxOworICAgIH0KKyNlbHNlCiAgICAgLyogVGhlcmUgYXJlIHRocmVlIHdheXMgdG8gZ2V0IHRoZSB0aW1lOgogICAgICAgKDEpIGdldHRpbWVvZmRheSgpIC0tIHJlc29sdXRpb24gaW4gbWljcm9zZWNvbmRzCiAgICAgICAoMikgZnRpbWUoKSAtLSByZXNvbHV0aW9uIGluIG1pbGxpc2Vjb25kcwpAQCAtMzAsMjcgKzU1LDE3MyBAQAogICAgICAgU2luY2Ugb24gc29tZSBzeXN0ZW1zIChlLmcuIFNDTyBPRFQgMy4wKSBnZXR0aW1lb2ZkYXkoKSBtYXkKICAgICAgIGZhaWwsIHNvIHdlIGZhbGwgYmFjayBvbiBmdGltZSgpIG9yIHRpbWUoKS4KICAgICAgIE5vdGU6IGNsb2NrIHJlc29sdXRpb24gZG9lcyBub3QgaW1wbHkgY2xvY2sgYWNjdXJhY3khICovCisKICNpZmRlZiBIQVZFX0dFVFRJTUVPRkRBWQorICAgIGludCBlcnI7CiAjaWZkZWYgR0VUVElNRU9GREFZX05PX1RaCi0gICAgaWYgKGdldHRpbWVvZmRheSh0cCkgPT0gMCkKKyAgICBlcnIgPSBnZXR0aW1lb2ZkYXkodHApOworI2Vsc2UKKyAgICBlcnIgPSBnZXR0aW1lb2ZkYXkodHAsIChzdHJ1Y3QgdGltZXpvbmUgKilOVUxMKTsKKyNlbmRpZgorICAgIGlmIChlcnIgPT0gMCkgeworICAgICAgICBpZiAoaW5mbykgeworICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiZ2V0dGltZW9mZGF5KCkiOworICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDFlLTY7CisgICAgICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOworICAgICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwotI2Vsc2UgLyogIUdFVFRJTUVPRkRBWV9OT19UWiAqLwotICAgIGlmIChnZXR0aW1lb2ZkYXkodHAsIChzdHJ1Y3QgdGltZXpvbmUgKilOVUxMKSA9PSAwKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYgLyogIUdFVFRJTUVPRkRBWV9OT19UWiAqLwotI2VuZGlmIC8qICFIQVZFX0dFVFRJTUVPRkRBWSAqLworICAgIH0KKyNlbmRpZiAgIC8qIEhBVkVfR0VUVElNRU9GREFZICovCisKICNpZiBkZWZpbmVkKEhBVkVfRlRJTUUpCiAgICAgewogICAgICAgICBzdHJ1Y3QgdGltZWIgdDsKICAgICAgICAgZnRpbWUoJnQpOwogICAgICAgICB0cC0+dHZfc2VjID0gdC50aW1lOwogICAgICAgICB0cC0+dHZfdXNlYyA9IHQubWlsbGl0bSAqIDEwMDA7CisgICAgICAgIGlmIChpbmZvKSB7CisgICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJmdGltZSgpIjsKKyAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxZS0zOworICAgICAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMDsKKyAgICAgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAxOworICAgICAgICB9CiAgICAgfQogI2Vsc2UgLyogIUhBVkVfRlRJTUUgKi8KICAgICB0cC0+dHZfc2VjID0gdGltZShOVUxMKTsKICAgICB0cC0+dHZfdXNlYyA9IDA7CisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAidGltZSgpIjsKKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDEuMDsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMDsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7CisgICAgfQogI2VuZGlmIC8qICFIQVZFX0ZUSU1FICovCi0gICAgcmV0dXJuOworCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworfQorCit2b2lkCitfUHlUaW1lX2dldHRpbWVvZmRheShfUHlUaW1lX3RpbWV2YWwgKnRwKQoreworICAgIHB5Z2V0dGltZW9mZGF5KHRwLCBOVUxMKTsKK30KKwordm9pZAorX1B5VGltZV9nZXR0aW1lb2ZkYXlfaW5mbyhfUHlUaW1lX3RpbWV2YWwgKnRwLCBfUHlfY2xvY2tfaW5mb190ICppbmZvKQoreworICAgIHB5Z2V0dGltZW9mZGF5KHRwLCBpbmZvKTsKK30KKworc3RhdGljIHZvaWQKK2Vycm9yX3RpbWVfdF9vdmVyZmxvdyh2b2lkKQoreworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSBmb3IgcGxhdGZvcm0gdGltZV90Iik7Cit9CisKK3RpbWVfdAorX1B5TG9uZ19Bc1RpbWVfdChQeU9iamVjdCAqb2JqKQoreworI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpICYmIFNJWkVPRl9USU1FX1QgPT0gU0laRU9GX0xPTkdfTE9ORworICAgIFBZX0xPTkdfTE9ORyB2YWw7CisgICAgdmFsID0gUHlMb25nX0FzTG9uZ0xvbmcob2JqKTsKKyNlbHNlCisgICAgbG9uZyB2YWw7CisgICAgYXNzZXJ0KHNpemVvZih0aW1lX3QpIDw9IHNpemVvZihsb25nKSk7CisgICAgdmFsID0gUHlMb25nX0FzTG9uZyhvYmopOworI2VuZGlmCisgICAgaWYgKHZhbCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX092ZXJmbG93RXJyb3IpKQorICAgICAgICAgICAgZXJyb3JfdGltZV90X292ZXJmbG93KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuICh0aW1lX3QpdmFsOworfQorCitQeU9iamVjdCAqCitfUHlMb25nX0Zyb21UaW1lX3QodGltZV90IHQpCit7CisjaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgJiYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORyl0KTsKKyNlbHNlCisgICAgYXNzZXJ0KHNpemVvZih0aW1lX3QpIDw9IHNpemVvZihsb25nKSk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZyl0KTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW50CitfUHlUaW1lX09iamVjdFRvRGVub21pbmF0b3IoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMsIGxvbmcgKm51bWVyYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGVub21pbmF0b3IpCit7CisgICAgYXNzZXJ0KGRlbm9taW5hdG9yIDw9IExPTkdfTUFYKTsKKyAgICBpZiAoUHlGbG9hdF9DaGVjayhvYmopKSB7CisgICAgICAgIGRvdWJsZSBkLCBpbnRwYXJ0LCBlcnI7CisgICAgICAgIC8qIHZvbGF0aWxlIGF2b2lkcyB1bnNhZmUgb3B0aW1pemF0aW9uIG9uIGZsb2F0IGVuYWJsZWQgYnkgZ2NjIC1PMyAqLworICAgICAgICB2b2xhdGlsZSBkb3VibGUgZmxvYXRwYXJ0OworCisgICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7CisgICAgICAgIGZsb2F0cGFydCA9IG1vZGYoZCwgJmludHBhcnQpOworICAgICAgICBpZiAoZmxvYXRwYXJ0IDwgMCkgeworICAgICAgICAgICAgZmxvYXRwYXJ0ID0gMS4wICsgZmxvYXRwYXJ0OworICAgICAgICAgICAgaW50cGFydCAtPSAxLjA7CisgICAgICAgIH0KKworICAgICAgICAqc2VjID0gKHRpbWVfdClpbnRwYXJ0OworICAgICAgICBlcnIgPSBpbnRwYXJ0IC0gKGRvdWJsZSkqc2VjOworICAgICAgICBpZiAoZXJyIDw9IC0xLjAgfHwgZXJyID49IDEuMCkgeworICAgICAgICAgICAgZXJyb3JfdGltZV90X292ZXJmbG93KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBmbG9hdHBhcnQgKj0gZGVub21pbmF0b3I7CisgICAgICAgICpudW1lcmF0b3IgPSAobG9uZylmbG9hdHBhcnQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgKnNlYyA9IF9QeUxvbmdfQXNUaW1lX3Qob2JqKTsKKyAgICAgICAgaWYgKCpzZWMgPT0gKHRpbWVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAqbnVtZXJhdG9yID0gMDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitpbnQKK19QeVRpbWVfT2JqZWN0VG9UaW1lX3QoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMpCit7CisgICAgaWYgKFB5RmxvYXRfQ2hlY2sob2JqKSkgeworICAgICAgICBkb3VibGUgZCwgaW50cGFydCwgZXJyOworCisgICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7CisgICAgICAgICh2b2lkKW1vZGYoZCwgJmludHBhcnQpOworCisgICAgICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7CisgICAgICAgIGVyciA9IGludHBhcnQgLSAoZG91YmxlKSpzZWM7CisgICAgICAgIGlmIChlcnIgPD0gLTEuMCB8fCBlcnIgPj0gMS4wKSB7CisgICAgICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgICpzZWMgPSBfUHlMb25nX0FzVGltZV90KG9iaik7CisgICAgICAgIGlmICgqc2VjID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitpbnQKK19QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhQeU9iamVjdCAqb2JqLCB0aW1lX3QgKnNlYywgbG9uZyAqbnNlYykKK3sKKyAgICByZXR1cm4gX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKG9iaiwgc2VjLCBuc2VjLCAxZTkpOworfQorCitpbnQKK19QeVRpbWVfT2JqZWN0VG9UaW1ldmFsKFB5T2JqZWN0ICpvYmosIHRpbWVfdCAqc2VjLCBsb25nICp1c2VjKQoreworICAgIHJldHVybiBfUHlUaW1lX09iamVjdFRvRGVub21pbmF0b3Iob2JqLCBzZWMsIHVzZWMsIDFlNik7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL1B5dGhvbi9yYW5kb20uYyBiL1B5dGhvbi9yYW5kb20uYwppbmRleCA4MjUyNjBmLi41MzUxOGMyIDEwMDY0NAotLS0gYS9QeXRob24vcmFuZG9tLmMKKysrIGIvUHl0aG9uL3JhbmRvbS5jCkBAIC0yNTgsMTcgKzI1OCw2IEBACiAgICAgX1B5X0hhc2hTZWNyZXRfSW5pdGlhbGl6ZWQgPSAxOwogCiAgICAgLyoKLSAgICAgIEJ5IGRlZmF1bHQsIGhhc2ggcmFuZG9taXphdGlvbiBpcyBkaXNhYmxlZCwgYW5kIG9ubHkKLSAgICAgIGVuYWJsZWQgaWYgUFlUSE9OSEFTSFNFRUQgaXMgc2V0IHRvIG5vbi1lbXB0eSBvciBpZgotICAgICAgIi1SIiBpcyBwcm92aWRlZCBhdCB0aGUgY29tbWFuZCBsaW5lOgotICAgICovCi0gICAgaWYgKCFQeV9IYXNoUmFuZG9taXphdGlvbkZsYWcpIHsKLSAgICAgICAgLyogRGlzYWJsZSB0aGUgcmFuZG9taXplZCBoYXNoOiAqLwotICAgICAgICBtZW1zZXQoc2VjcmV0LCAwLCBzZWNyZXRfc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvKgogICAgICAgSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQuICBHZW5lcmF0ZSBhIHBlci1wcm9jZXNzIHNlY3JldCwKICAgICAgIHVzaW5nIFBZVEhPTkhBU0hTRUVEIGlmIHByb3ZpZGVkLgogICAgICovCmRpZmYgLS1naXQgYS9QeXRob24vc3ltdGFibGUuYyBiL1B5dGhvbi9zeW10YWJsZS5jCmluZGV4IDM1ZmM2ZTEuLjU1ODk4ZjkgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zeW10YWJsZS5jCisrKyBiL1B5dGhvbi9zeW10YWJsZS5jCkBAIC0xOSwxMCArMTksNiBAQAogCiAjZGVmaW5lIElNUE9SVF9TVEFSX1dBUk5JTkcgImltcG9ydCAqIG9ubHkgYWxsb3dlZCBhdCBtb2R1bGUgbGV2ZWwiCiAKLSNkZWZpbmUgUkVUVVJOX1ZBTF9JTl9HRU5FUkFUT1IgXAotICAgICIncmV0dXJuJyB3aXRoIGFyZ3VtZW50IGluc2lkZSBnZW5lcmF0b3IiCi0KLQogc3RhdGljIFB5U1RFbnRyeU9iamVjdCAqCiBzdGVfbmV3KHN0cnVjdCBzeW10YWJsZSAqc3QsIGlkZW50aWZpZXIgbmFtZSwgX1B5X2Jsb2NrX3R5IGJsb2NrLAogICAgICAgICB2b2lkICprZXksIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQpAQCAtMTg3LDYgKzE4Myw3IEBACiBzdGF0aWMgaW50IHN5bXRhYmxlX3Zpc2l0X2FyZ2Fubm90YXRpb25zKHN0cnVjdCBzeW10YWJsZSAqc3QsIGFzZGxfc2VxICphcmdzKTsKIHN0YXRpYyBpbnQgc3ltdGFibGVfaW1wbGljaXRfYXJnKHN0cnVjdCBzeW10YWJsZSAqc3QsIGludCBwb3MpOwogc3RhdGljIGludCBzeW10YWJsZV92aXNpdF9hbm5vdGF0aW9ucyhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBzdG10X3R5IHMpOworc3RhdGljIGludCBzeW10YWJsZV92aXNpdF93aXRoaXRlbShzdHJ1Y3Qgc3ltdGFibGUgKnN0LCB3aXRoaXRlbV90eSBpdGVtKTsKIAogCiBzdGF0aWMgaWRlbnRpZmllciB0b3AgPSBOVUxMLCBsYW1iZGEgPSBOVUxMLCBnZW5leHByID0gTlVMTCwKQEAgLTIyMywxNyArMjIwLDQwIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qIFdoZW4gY29tcGlsaW5nIHRoZSB1c2Ugb2YgQyBzdGFjayBpcyBwcm9iYWJseSBnb2luZyB0byBiZSBhIGxvdAorICAgbGlnaHRlciB0aGFuIHdoZW4gZXhlY3V0aW5nIFB5dGhvbiBjb2RlIGJ1dCBzdGlsbCBjYW4gb3ZlcmZsb3cKKyAgIGFuZCBjYXVzaW5nIGEgUHl0aG9uIGNyYXNoIGlmIG5vdCBjaGVja2VkIChlLmcuIGV2YWwoIigpIiozMDAwMDApKS4KKyAgIFVzaW5nIHRoZSBjdXJyZW50IHJlY3Vyc2lvbiBsaW1pdCBmb3IgdGhlIGNvbXBpbGVyIHNlZW1zIHRvbworICAgcmVzdHJpY3RpdmUgKGl0IGNhdXNlZCBhdCBsZWFzdCBvbmUgdGVzdCB0byBmYWlsKSBzbyBhIGZhY3RvciBpcworICAgdXNlZCB0byBhbGxvdyBkZWVwZXIgcmVjdXJzaW9uIHdoZW4gY29tcGlsaW5nIGFuIGV4cHJlc3Npb24uCisKKyAgIFVzaW5nIGEgc2NhbGluZyBmYWN0b3IgbWVhbnMgdGhpcyBzaG91bGQgYXV0b21hdGljYWxseSBhZGp1c3Qgd2hlbgorICAgdGhlIHJlY3Vyc2lvbiBsaW1pdCBpcyBhZGp1c3RlZCBmb3Igc21hbGwgb3IgbGFyZ2UgQyBzdGFjayBhbGxvY2F0aW9ucy4KKyovCisjZGVmaW5lIENPTVBJTEVSX1NUQUNLX0ZSQU1FX1NDQUxFIDMKKwogc3RydWN0IHN5bXRhYmxlICoKIFB5U3ltdGFibGVfQnVpbGQobW9kX3R5IG1vZCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIFB5RnV0dXJlRmVhdHVyZXMgKmZ1dHVyZSkKIHsKICAgICBzdHJ1Y3Qgc3ltdGFibGUgKnN0ID0gc3ltdGFibGVfbmV3KCk7CiAgICAgYXNkbF9zZXEgKnNlcTsKICAgICBpbnQgaTsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CiAKICAgICBpZiAoc3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIHN0OwogICAgIHN0LT5zdF9maWxlbmFtZSA9IGZpbGVuYW1lOwogICAgIHN0LT5zdF9mdXR1cmUgPSBmdXR1cmU7CisKKyAgICAvKiBTZXR1cCByZWN1cnNpb24gZGVwdGggY2hlY2sgY291bnRlcnMgKi8KKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIGlmICghdHN0YXRlKSB7CisgICAgICAgIFB5U3ltdGFibGVfRnJlZShzdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBzdC0+cmVjdXJzaW9uX2RlcHRoID0gdHN0YXRlLT5yZWN1cnNpb25fZGVwdGggKiBDT01QSUxFUl9TVEFDS19GUkFNRV9TQ0FMRTsKKyAgICBzdC0+cmVjdXJzaW9uX2xpbWl0ID0gUHlfR2V0UmVjdXJzaW9uTGltaXQoKSAqIENPTVBJTEVSX1NUQUNLX0ZSQU1FX1NDQUxFOworCiAgICAgLyogTWFrZSB0aGUgaW5pdGlhbCBzeW1ib2wgaW5mb3JtYXRpb24gZ2F0aGVyaW5nIHBhc3MgKi8KICAgICBpZiAoIUdFVF9JREVOVElGSUVSKHRvcCkgfHwKICAgICAgICAgIXN5bXRhYmxlX2VudGVyX2Jsb2NrKHN0LCB0b3AsIE1vZHVsZUJsb2NrLCAodm9pZCAqKW1vZCwgMCwgMCkpIHsKQEAgLTc1Miw3ICs3NzIsNyBAQAogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICAvKiBSZWN1cnNpdmVseSBjYWxsIGFuYWx5emVfYmxvY2soKSBvbiBlYWNoIGNoaWxkIGJsb2NrLgorICAgIC8qIFJlY3Vyc2l2ZWx5IGNhbGwgYW5hbHl6ZV9jaGlsZF9ibG9jaygpIG9uIGVhY2ggY2hpbGQgYmxvY2suCiAKICAgICAgICBuZXdib3VuZCwgbmV3Z2xvYmFsIG5vdyBjb250YWluIHRoZSBuYW1lcyB2aXNpYmxlIGluCiAgICAgICAgbmVzdGVkIGJsb2Nrcy4gIFRoZSBmcmVlIHZhcmlhYmxlcyBpbiB0aGUgY2hpbGRyZW4gd2lsbApAQCAtODk1LDE4ICs5MTUsMTUgQEAKIHN0YXRpYyBpbnQKIHN5bXRhYmxlX2V4aXRfYmxvY2soc3RydWN0IHN5bXRhYmxlICpzdCwgdm9pZCAqYXN0KQogewotICAgIFB5X3NzaXplX3QgZW5kOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKIAotICAgIFB5X0NMRUFSKHN0LT5zdF9jdXIpOwotICAgIGVuZCA9IFB5TGlzdF9HRVRfU0laRShzdC0+c3Rfc3RhY2spIC0gMTsKLSAgICBpZiAoZW5kID49IDApIHsKLSAgICAgICAgc3QtPnN0X2N1ciA9IChQeVNURW50cnlPYmplY3QgKilQeUxpc3RfR0VUX0lURU0oc3QtPnN0X3N0YWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpOwotICAgICAgICBpZiAoc3QtPnN0X2N1ciA9PSBOVUxMKQorICAgIHN0LT5zdF9jdXIgPSBOVUxMOworICAgIHNpemUgPSBQeUxpc3RfR0VUX1NJWkUoc3QtPnN0X3N0YWNrKTsKKyAgICBpZiAoc2l6ZSkgeworICAgICAgICBpZiAoUHlMaXN0X1NldFNsaWNlKHN0LT5zdF9zdGFjaywgc2l6ZSAtIDEsIHNpemUsIE5VTEwpIDwgMCkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBQeV9JTkNSRUYoc3QtPnN0X2N1cik7Ci0gICAgICAgIGlmIChQeVNlcXVlbmNlX0RlbEl0ZW0oc3QtPnN0X3N0YWNrLCBlbmQpIDwgMCkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoLS1zaXplKQorICAgICAgICAgICAgc3QtPnN0X2N1ciA9IChQeVNURW50cnlPYmplY3QgKilQeUxpc3RfR0VUX0lURU0oc3QtPnN0X3N0YWNrLCBzaXplIC0gMSk7CiAgICAgfQogICAgIHJldHVybiAxOwogfQpAQCAtOTE1LDIzICs5MzIsMjMgQEAKIHN5bXRhYmxlX2VudGVyX2Jsb2NrKHN0cnVjdCBzeW10YWJsZSAqc3QsIGlkZW50aWZpZXIgbmFtZSwgX1B5X2Jsb2NrX3R5IGJsb2NrLAogICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXN0LCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCkKIHsKLSAgICBQeVNURW50cnlPYmplY3QgKnByZXYgPSBOVUxMOworICAgIFB5U1RFbnRyeU9iamVjdCAqcHJldiA9IE5VTEwsICpzdGU7CiAKLSAgICBpZiAoc3QtPnN0X2N1cikgewotICAgICAgICBwcmV2ID0gc3QtPnN0X2N1cjsKLSAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoc3QtPnN0X3N0YWNrLCAoUHlPYmplY3QgKilzdC0+c3RfY3VyKSA8IDApIHsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihzdC0+c3RfY3VyKTsKLSAgICB9Ci0gICAgc3QtPnN0X2N1ciA9IHN0ZV9uZXcoc3QsIG5hbWUsIGJsb2NrLCBhc3QsIGxpbmVubywgY29sX29mZnNldCk7Ci0gICAgaWYgKHN0LT5zdF9jdXIgPT0gTlVMTCkKKyAgICBzdGUgPSBzdGVfbmV3KHN0LCBuYW1lLCBibG9jaywgYXN0LCBsaW5lbm8sIGNvbF9vZmZzZXQpOworICAgIGlmIChzdGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKFB5TGlzdF9BcHBlbmQoc3QtPnN0X3N0YWNrLCAoUHlPYmplY3QgKilzdGUpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYoc3RlKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHByZXYgPSBzdC0+c3RfY3VyOworICAgIC8qIFRoZSBlbnRyeSBpcyBvd25lZCBieSB0aGUgc3RhY2suIEJvcnJvdyBpdCBmb3Igc3RfY3VyLiAqLworICAgIFB5X0RFQ1JFRihzdGUpOworICAgIHN0LT5zdF9jdXIgPSBzdGU7CiAgICAgaWYgKGJsb2NrID09IE1vZHVsZUJsb2NrKQogICAgICAgICBzdC0+c3RfZ2xvYmFsID0gc3QtPnN0X2N1ci0+c3RlX3N5bWJvbHM7CiAgICAgaWYgKHByZXYpIHsKLSAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQocHJldi0+c3RlX2NoaWxkcmVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKilzdC0+c3RfY3VyKSA8IDApIHsKKyAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQocHJldi0+c3RlX2NoaWxkcmVuLCAoUHlPYmplY3QgKilzdGUpIDwgMCkgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDE5LDE3ICsxMDM2LDE3IEBACiAKICAgIFZJU0lUX1NFUV9UQUlMIHBlcm1pdHMgdGhlIHN0YXJ0IG9mIGFuIEFTREwgc2VxdWVuY2UgdG8gYmUgc2tpcHBlZCwgd2hpY2ggaXMKICAgIHVzZWZ1bCBpZiB0aGUgZmlyc3Qgbm9kZSBpbiB0aGUgc2VxdWVuY2UgcmVxdWlyZXMgc3BlY2lhbCB0cmVhdG1lbnQuCisKKyAgIFZJU0lUX1FVSVQgbWFjcm8gcmV0dXJucyB0aGUgc3BlY2lmaWVkIHZhbHVlIGV4aXRpbmcgZnJvbSB0aGUgZnVuY3Rpb24gYnV0CisgICBmaXJzdCBhZGp1c3RzIGN1cnJlbnQgcmVjdXJzaW9uIGNvdW50ZXIgZGVwdGguCiAqLwogCisjZGVmaW5lIFZJU0lUX1FVSVQoU1QsIFgpIFwKKyAgICByZXR1cm4gLS0oU1QpLT5yZWN1cnNpb25fZGVwdGgsKFgpCisKICNkZWZpbmUgVklTSVQoU1QsIFRZUEUsIFYpIFwKICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0XyAjIyBUWVBFKChTVCksIChWKSkpIFwKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSNkZWZpbmUgVklTSVRfSU5fQkxPQ0soU1QsIFRZUEUsIFYsIFMpIFwKLSAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0XyAjIyBUWVBFKChTVCksIChWKSkpIHsgXAotICAgICAgICBzeW10YWJsZV9leGl0X2Jsb2NrKChTVCksIChTKSk7IFwKLSAgICAgICAgcmV0dXJuIDA7IFwKLSAgICB9CisgICAgICAgIFZJU0lUX1FVSVQoKFNUKSwgMCk7CiAKICNkZWZpbmUgVklTSVRfU0VRKFNULCBUWVBFLCBTRVEpIHsgXAogICAgIGludCBpOyBcCkBAIC0xMDM3LDE5ICsxMDU0LDcgQEAKICAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKHNlcSk7IGkrKykgeyBcCiAgICAgICAgIFRZUEUgIyMgX3R5IGVsdCA9IChUWVBFICMjIF90eSlhc2RsX3NlcV9HRVQoc2VxLCBpKTsgXAogICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0XyAjIyBUWVBFKChTVCksIGVsdCkpIFwKLSAgICAgICAgICAgIHJldHVybiAwOyBcCi0gICAgfSBcCi19Ci0KLSNkZWZpbmUgVklTSVRfU0VRX0lOX0JMT0NLKFNULCBUWVBFLCBTRVEsIFMpIHsgXAotICAgIGludCBpOyBcCi0gICAgYXNkbF9zZXEgKnNlcSA9IChTRVEpOyAvKiBhdm9pZCB2YXJpYWJsZSBjYXB0dXJlICovIFwKLSAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKHNlcSk7IGkrKykgeyBcCi0gICAgICAgIFRZUEUgIyMgX3R5IGVsdCA9IChUWVBFICMjIF90eSlhc2RsX3NlcV9HRVQoc2VxLCBpKTsgXAotICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0XyAjIyBUWVBFKChTVCksIGVsdCkpIHsgXAotICAgICAgICAgICAgc3ltdGFibGVfZXhpdF9ibG9jaygoU1QpLCAoUykpOyBcCi0gICAgICAgICAgICByZXR1cm4gMDsgXAotICAgICAgICB9IFwKKyAgICAgICAgICAgIFZJU0lUX1FVSVQoKFNUKSwgMCk7ICAgICAgICAgICAgICAgICBcCiAgICAgfSBcCiB9CiAKQEAgLTEwNTksMTkgKzEwNjQsNyBAQAogICAgIGZvciAoaSA9IChTVEFSVCk7IGkgPCBhc2RsX3NlcV9MRU4oc2VxKTsgaSsrKSB7IFwKICAgICAgICAgVFlQRSAjIyBfdHkgZWx0ID0gKFRZUEUgIyMgX3R5KWFzZGxfc2VxX0dFVChzZXEsIGkpOyBcCiAgICAgICAgIGlmICghc3ltdGFibGVfdmlzaXRfICMjIFRZUEUoKFNUKSwgZWx0KSkgXAotICAgICAgICAgICAgcmV0dXJuIDA7IFwKLSAgICB9IFwKLX0KLQotI2RlZmluZSBWSVNJVF9TRVFfVEFJTF9JTl9CTE9DSyhTVCwgVFlQRSwgU0VRLCBTVEFSVCwgUykgeyBcCi0gICAgaW50IGk7IFwKLSAgICBhc2RsX3NlcSAqc2VxID0gKFNFUSk7IC8qIGF2b2lkIHZhcmlhYmxlIGNhcHR1cmUgKi8gXAotICAgIGZvciAoaSA9IChTVEFSVCk7IGkgPCBhc2RsX3NlcV9MRU4oc2VxKTsgaSsrKSB7IFwKLSAgICAgICAgVFlQRSAjIyBfdHkgZWx0ID0gKFRZUEUgIyMgX3R5KWFzZGxfc2VxX0dFVChzZXEsIGkpOyBcCi0gICAgICAgIGlmICghc3ltdGFibGVfdmlzaXRfICMjIFRZUEUoKFNUKSwgZWx0KSkgeyBcCi0gICAgICAgICAgICBzeW10YWJsZV9leGl0X2Jsb2NrKChTVCksIChTKSk7IFwKLSAgICAgICAgICAgIHJldHVybiAwOyBcCi0gICAgICAgIH0gXAorICAgICAgICAgICAgVklTSVRfUVVJVCgoU1QpLCAwKTsgICAgICAgICAgICAgICAgIFwKICAgICB9IFwKIH0KIApAQCAtMTA4Miw3ICsxMDc1LDcgQEAKICAgICAgICAgZXhwcl90eSBlbHQgPSAoZXhwcl90eSlhc2RsX3NlcV9HRVQoc2VxLCBpKTsgXAogICAgICAgICBpZiAoIWVsdCkgY29udGludWU7IC8qIGNhbiBiZSBOVUxMICovIFwKICAgICAgICAgaWYgKCFzeW10YWJsZV92aXNpdF9leHByKChTVCksIGVsdCkpIFwKLSAgICAgICAgICAgIHJldHVybiAwOyBcCisgICAgICAgICAgICBWSVNJVF9RVUlUKChTVCksIDApOyAgICAgICAgICAgICBcCiAgICAgfSBcCiB9CiAKQEAgLTExMDcsMzIgKzExMDAsMzcgQEAKIHN0YXRpYyBpbnQKIHN5bXRhYmxlX3Zpc2l0X3N0bXQoc3RydWN0IHN5bXRhYmxlICpzdCwgc3RtdF90eSBzKQogeworICAgIGlmICgrK3N0LT5yZWN1cnNpb25fZGVwdGggPiBzdC0+cmVjdXJzaW9uX2xpbWl0KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibWF4aW11bSByZWN1cnNpb24gZGVwdGggZXhjZWVkZWQgZHVyaW5nIGNvbXBpbGF0aW9uIik7CisgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgIH0KICAgICBzd2l0Y2ggKHMtPmtpbmQpIHsKICAgICBjYXNlIEZ1bmN0aW9uRGVmX2tpbmQ6CiAgICAgICAgIGlmICghc3ltdGFibGVfYWRkX2RlZihzdCwgcy0+di5GdW5jdGlvbkRlZi5uYW1lLCBERUZfTE9DQUwpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICAgICAgaWYgKHMtPnYuRnVuY3Rpb25EZWYuYXJncy0+ZGVmYXVsdHMpCiAgICAgICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIHMtPnYuRnVuY3Rpb25EZWYuYXJncy0+ZGVmYXVsdHMpOwogICAgICAgICBpZiAocy0+di5GdW5jdGlvbkRlZi5hcmdzLT5rd19kZWZhdWx0cykKICAgICAgICAgICAgIFZJU0lUX0tXT05MWURFRkFVTFRTKHN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnYuRnVuY3Rpb25EZWYuYXJncy0+a3dfZGVmYXVsdHMpOwogICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0X2Fubm90YXRpb25zKHN0LCBzKSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgIGlmIChzLT52LkZ1bmN0aW9uRGVmLmRlY29yYXRvcl9saXN0KQogICAgICAgICAgICAgVklTSVRfU0VRKHN0LCBleHByLCBzLT52LkZ1bmN0aW9uRGVmLmRlY29yYXRvcl9saXN0KTsKICAgICAgICAgaWYgKCFzeW10YWJsZV9lbnRlcl9ibG9jayhzdCwgcy0+di5GdW5jdGlvbkRlZi5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uQmxvY2ssICh2b2lkICopcywgcy0+bGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNvbF9vZmZzZXQpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIFZJU0lUX0lOX0JMT0NLKHN0LCBhcmd1bWVudHMsIHMtPnYuRnVuY3Rpb25EZWYuYXJncywgcyk7Ci0gICAgICAgIFZJU0lUX1NFUV9JTl9CTE9DSyhzdCwgc3RtdCwgcy0+di5GdW5jdGlvbkRlZi5ib2R5LCBzKTsKKyAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICBWSVNJVChzdCwgYXJndW1lbnRzLCBzLT52LkZ1bmN0aW9uRGVmLmFyZ3MpOworICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuRnVuY3Rpb25EZWYuYm9keSk7CiAgICAgICAgIGlmICghc3ltdGFibGVfZXhpdF9ibG9jayhzdCwgcykpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENsYXNzRGVmX2tpbmQ6IHsKICAgICAgICAgUHlPYmplY3QgKnRtcDsKICAgICAgICAgaWYgKCFzeW10YWJsZV9hZGRfZGVmKHN0LCBzLT52LkNsYXNzRGVmLm5hbWUsIERFRl9MT0NBTCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIHMtPnYuQ2xhc3NEZWYuYmFzZXMpOwogICAgICAgICBWSVNJVF9TRVEoc3QsIGtleXdvcmQsIHMtPnYuQ2xhc3NEZWYua2V5d29yZHMpOwogICAgICAgICBpZiAocy0+di5DbGFzc0RlZi5zdGFyYXJncykKQEAgLTExNDMsMzQgKzExNDEsMjYgQEAKICAgICAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgcy0+di5DbGFzc0RlZi5kZWNvcmF0b3JfbGlzdCk7CiAgICAgICAgIGlmICghc3ltdGFibGVfZW50ZXJfYmxvY2soc3QsIHMtPnYuQ2xhc3NEZWYubmFtZSwgQ2xhc3NCbG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKXMsIHMtPmxpbmVubywgcy0+Y29sX29mZnNldCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICBpZiAoIUdFVF9JREVOVElGSUVSKF9fY2xhc3NfXykgfHwKICAgICAgICAgICAgICFzeW10YWJsZV9hZGRfZGVmKHN0LCBfX2NsYXNzX18sIERFRl9MT0NBTCkgfHwKICAgICAgICAgICAgICFHRVRfSURFTlRJRklFUihfX2xvY2Fsc19fKSB8fAogICAgICAgICAgICAgIXN5bXRhYmxlX2FkZF9kZWYoc3QsIF9fbG9jYWxzX18sIERFRl9QQVJBTSkpIHsKICAgICAgICAgICAgIHN5bXRhYmxlX2V4aXRfYmxvY2soc3QsIHMpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICAgICAgfQogICAgICAgICB0bXAgPSBzdC0+c3RfcHJpdmF0ZTsKICAgICAgICAgc3QtPnN0X3ByaXZhdGUgPSBzLT52LkNsYXNzRGVmLm5hbWU7Ci0gICAgICAgIFZJU0lUX1NFUV9JTl9CTE9DSyhzdCwgc3RtdCwgcy0+di5DbGFzc0RlZi5ib2R5LCBzKTsKKyAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LkNsYXNzRGVmLmJvZHkpOwogICAgICAgICBzdC0+c3RfcHJpdmF0ZSA9IHRtcDsKICAgICAgICAgaWYgKCFzeW10YWJsZV9leGl0X2Jsb2NrKHN0LCBzKSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFJldHVybl9raW5kOgogICAgICAgICBpZiAocy0+di5SZXR1cm4udmFsdWUpIHsKICAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LlJldHVybi52YWx1ZSk7CiAgICAgICAgICAgICBzdC0+c3RfY3VyLT5zdGVfcmV0dXJuc192YWx1ZSA9IDE7Ci0gICAgICAgICAgICBpZiAoc3QtPnN0X2N1ci0+c3RlX2dlbmVyYXRvcikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeW50YXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgUkVUVVJOX1ZBTF9JTl9HRU5FUkFUT1IpOwotICAgICAgICAgICAgICAgIFB5RXJyX1N5bnRheExvY2F0aW9uRXgoc3QtPnN0X2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Y29sX29mZnNldCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEZWxldGVfa2luZDoKQEAgLTEyMDcsMTkgKzExOTcsMTYgQEAKICAgICBjYXNlIFJhaXNlX2tpbmQ6CiAgICAgICAgIGlmIChzLT52LlJhaXNlLmV4YykgewogICAgICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuUmFpc2UuZXhjKTsKLSAgICAgICAgaWYgKHMtPnYuUmFpc2UuY2F1c2UpIHsKLSAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuUmFpc2UuY2F1c2UpOwotICAgICAgICB9CisgICAgICAgICAgICBpZiAocy0+di5SYWlzZS5jYXVzZSkgeworICAgICAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LlJhaXNlLmNhdXNlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRyeUV4Y2VwdF9raW5kOgotICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuVHJ5RXhjZXB0LmJvZHkpOwotICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuVHJ5RXhjZXB0Lm9yZWxzZSk7Ci0gICAgICAgIFZJU0lUX1NFUShzdCwgZXhjZXB0aGFuZGxlciwgcy0+di5UcnlFeGNlcHQuaGFuZGxlcnMpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRyeUZpbmFsbHlfa2luZDoKLSAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LlRyeUZpbmFsbHkuYm9keSk7Ci0gICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5UcnlGaW5hbGx5LmZpbmFsYm9keSk7CisgICAgY2FzZSBUcnlfa2luZDoKKyAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LlRyeS5ib2R5KTsKKyAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LlRyeS5vcmVsc2UpOworICAgICAgICBWSVNJVF9TRVEoc3QsIGV4Y2VwdGhhbmRsZXIsIHMtPnYuVHJ5LmhhbmRsZXJzKTsKKyAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LlRyeS5maW5hbGJvZHkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFzc2VydF9raW5kOgogICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bc3NlcnQudGVzdCk7CkBAIC0xMjQ5LDEyICsxMjM2LDE0IEBACiAgICAgICAgIGFzZGxfc2VxICpzZXEgPSBzLT52Lkdsb2JhbC5uYW1lczsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihzZXEpOyBpKyspIHsKICAgICAgICAgICAgIGlkZW50aWZpZXIgbmFtZSA9IChpZGVudGlmaWVyKWFzZGxfc2VxX0dFVChzZXEsIGkpOwotICAgICAgICAgICAgY2hhciAqY19uYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lKTsKICAgICAgICAgICAgIGxvbmcgY3VyID0gc3ltdGFibGVfbG9va3VwKHN0LCBuYW1lKTsKICAgICAgICAgICAgIGlmIChjdXIgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICAgICAgaWYgKGN1ciAmIChERUZfTE9DQUwgfCBVU0UpKSB7CiAgICAgICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKKyAgICAgICAgICAgICAgICBjaGFyICpjX25hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOworICAgICAgICAgICAgICAgIGlmICghY19uYW1lKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICBpZiAoY3VyICYgREVGX0xPQ0FMKQogICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQkFMX0FGVEVSX0FTU0lHTiwKQEAgLTEyNjQsMTAgKzEyNTMsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CQUxfQUZURVJfVVNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfbmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFzeW10YWJsZV93YXJuKHN0LCBidWYsIHMtPmxpbmVubykpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghc3ltdGFibGVfYWRkX2RlZihzdCwgbmFtZSwgREVGX0dMT0JBTCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTI3NiwxMiArMTI2NSwxNCBAQAogICAgICAgICBhc2RsX3NlcSAqc2VxID0gcy0+di5Ob25sb2NhbC5uYW1lczsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihzZXEpOyBpKyspIHsKICAgICAgICAgICAgIGlkZW50aWZpZXIgbmFtZSA9IChpZGVudGlmaWVyKWFzZGxfc2VxX0dFVChzZXEsIGkpOwotICAgICAgICAgICAgY2hhciAqY19uYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lKTsKICAgICAgICAgICAgIGxvbmcgY3VyID0gc3ltdGFibGVfbG9va3VwKHN0LCBuYW1lKTsKICAgICAgICAgICAgIGlmIChjdXIgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICAgICAgaWYgKGN1ciAmIChERUZfTE9DQUwgfCBVU0UpKSB7CiAgICAgICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKKyAgICAgICAgICAgICAgICBjaGFyICpjX25hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOworICAgICAgICAgICAgICAgIGlmICghY19uYW1lKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICBpZiAoY3VyICYgREVGX0xPQ0FMKQogICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9OTE9DQUxfQUZURVJfQVNTSUdOLApAQCAtMTI5MSwxMCArMTI4MiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PTkxPQ0FMX0FGVEVSX1VTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX25hbWUpOwogICAgICAgICAgICAgICAgIGlmICghc3ltdGFibGVfd2FybihzdCwgYnVmLCBzLT5saW5lbm8pKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIXN5bXRhYmxlX2FkZF9kZWYoc3QsIG5hbWUsIERFRl9OT05MT0NBTCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTMwNywxOSArMTI5OCwyMSBAQAogICAgICAgICAvKiBub3RoaW5nIHRvIGRvIGhlcmUgKi8KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXaXRoX2tpbmQ6Ci0gICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LldpdGguY29udGV4dF9leHByKTsKLSAgICAgICAgaWYgKHMtPnYuV2l0aC5vcHRpb25hbF92YXJzKSB7Ci0gICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5XaXRoLm9wdGlvbmFsX3ZhcnMpOwotICAgICAgICB9CisgICAgICAgIFZJU0lUX1NFUShzdCwgd2l0aGl0ZW0sIHMtPnYuV2l0aC5pdGVtcyk7CiAgICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5XaXRoLmJvZHkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIDE7CisgICAgVklTSVRfUVVJVChzdCwgMSk7CiB9CiAKIHN0YXRpYyBpbnQKIHN5bXRhYmxlX3Zpc2l0X2V4cHIoc3RydWN0IHN5bXRhYmxlICpzdCwgZXhwcl90eSBlKQogeworICAgIGlmICgrK3N0LT5yZWN1cnNpb25fZGVwdGggPiBzdC0+cmVjdXJzaW9uX2xpbWl0KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibWF4aW11bSByZWN1cnNpb24gZGVwdGggZXhjZWVkZWQgZHVyaW5nIGNvbXBpbGF0aW9uIik7CisgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgIH0KICAgICBzd2l0Y2ggKGUtPmtpbmQpIHsKICAgICBjYXNlIEJvb2xPcF9raW5kOgogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuQm9vbE9wLnZhbHVlcyk7CkBAIC0xMzMzLDcgKzEzMjYsNyBAQAogICAgICAgICBicmVhazsKICAgICBjYXNlIExhbWJkYV9raW5kOiB7CiAgICAgICAgIGlmICghR0VUX0lERU5USUZJRVIobGFtYmRhKSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgIGlmIChlLT52LkxhbWJkYS5hcmdzLT5kZWZhdWx0cykKICAgICAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgZS0+di5MYW1iZGEuYXJncy0+ZGVmYXVsdHMpOwogICAgICAgICBpZiAoZS0+di5MYW1iZGEuYXJncy0+a3dfZGVmYXVsdHMpCkBAIC0xMzQyLDExICsxMzM1LDExIEBACiAgICAgICAgIGlmICghc3ltdGFibGVfZW50ZXJfYmxvY2soc3QsIGxhbWJkYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbkJsb2NrLCAodm9pZCAqKWUsIGUtPmxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT5jb2xfb2Zmc2V0KSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBWSVNJVF9JTl9CTE9DSyhzdCwgYXJndW1lbnRzLCBlLT52LkxhbWJkYS5hcmdzLCAodm9pZCopZSk7Ci0gICAgICAgIFZJU0lUX0lOX0JMT0NLKHN0LCBleHByLCBlLT52LkxhbWJkYS5ib2R5LCAodm9pZCopZSk7CisgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgVklTSVQoc3QsIGFyZ3VtZW50cywgZS0+di5MYW1iZGEuYXJncyk7CisgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LkxhbWJkYS5ib2R5KTsKICAgICAgICAgaWYgKCFzeW10YWJsZV9leGl0X2Jsb2NrKHN0LCAodm9pZCAqKWUpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgSWZFeHBfa2luZDoKQEAgLTEzNjMsMzEgKzEzNTYsMjggQEAKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHZW5lcmF0b3JFeHBfa2luZDoKICAgICAgICAgaWYgKCFzeW10YWJsZV92aXNpdF9nZW5leHAoc3QsIGUpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMaXN0Q29tcF9raW5kOgogICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0X2xpc3Rjb21wKHN0LCBlKSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2V0Q29tcF9raW5kOgogICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0X3NldGNvbXAoc3QsIGUpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaWN0Q29tcF9raW5kOgogICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0X2RpY3Rjb21wKHN0LCBlKSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgWWllbGRfa2luZDoKICAgICAgICAgaWYgKGUtPnYuWWllbGQudmFsdWUpCiAgICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5ZaWVsZC52YWx1ZSk7CiAgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9nZW5lcmF0b3IgPSAxOwotICAgICAgICBpZiAoc3QtPnN0X2N1ci0+c3RlX3JldHVybnNfdmFsdWUpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeW50YXhFcnJvciwKLSAgICAgICAgICAgICAgICBSRVRVUk5fVkFMX0lOX0dFTkVSQVRPUik7Ci0gICAgICAgICAgICBQeUVycl9TeW50YXhMb2NhdGlvbkV4KHN0LT5zdF9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+bGluZW5vLCBlLT5jb2xfb2Zmc2V0KTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWWllbGRGcm9tX2tpbmQ6CisgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LllpZWxkRnJvbS52YWx1ZSk7CisgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9nZW5lcmF0b3IgPSAxOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbXBhcmVfa2luZDoKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuQ29tcGFyZS5sZWZ0KTsKQEAgLTE0MjIsMTQgKzE0MTIsMTQgQEAKICAgICBjYXNlIE5hbWVfa2luZDoKICAgICAgICAgaWYgKCFzeW10YWJsZV9hZGRfZGVmKHN0LCBlLT52Lk5hbWUuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT52Lk5hbWUuY3R4ID09IExvYWQgPyBVU0UgOiBERUZfTE9DQUwpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICAgICAgLyogU3BlY2lhbC1jYXNlIHN1cGVyOiBpdCBjb3VudHMgYXMgYSB1c2Ugb2YgX19jbGFzc19fICovCiAgICAgICAgIGlmIChlLT52Lk5hbWUuY3R4ID09IExvYWQgJiYKICAgICAgICAgICAgIHN0LT5zdF9jdXItPnN0ZV90eXBlID09IEZ1bmN0aW9uQmxvY2sgJiYKICAgICAgICAgICAgICFQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhlLT52Lk5hbWUuaWQsICJzdXBlciIpKSB7CiAgICAgICAgICAgICBpZiAoIUdFVF9JREVOVElGSUVSKF9fY2xhc3NfXykgfHwKICAgICAgICAgICAgICAgICAhc3ltdGFibGVfYWRkX2RlZihzdCwgX19jbGFzc19fLCBVU0UpKQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIC8qIGNoaWxkIG5vZGVzIG9mIExpc3QgYW5kIFR1cGxlIHdpbGwgaGF2ZSBleHByX2NvbnRleHQgc2V0ICovCkBAIC0xNDQwLDcgKzE0MzAsNyBAQAogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuVHVwbGUuZWx0cyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gMTsKKyAgICBWSVNJVF9RVUlUKHN0LCAxKTsKIH0KIAogc3RhdGljIGludApAQCAtMTU0NSw2ICsxNTM1LDE2IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKK3N0YXRpYyBpbnQKK3N5bXRhYmxlX3Zpc2l0X3dpdGhpdGVtKHN0cnVjdCBzeW10YWJsZSAqc3QsIHdpdGhpdGVtX3R5IGl0ZW0pCit7CisgICAgVklTSVQoc3QsIGV4cHIsIGl0ZW0tPmNvbnRleHRfZXhwcik7CisgICAgaWYgKGl0ZW0tPm9wdGlvbmFsX3ZhcnMpIHsKKyAgICAgICAgVklTSVQoc3QsIGV4cHIsIGl0ZW0tPm9wdGlvbmFsX3ZhcnMpOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKwogCiBzdGF0aWMgaW50CiBzeW10YWJsZV92aXNpdF9hbGlhcyhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBhbGlhc190eSBhKQpAQCAtMTU1NSwxMCArMTU1NSwxMCBAQAogICAgICovCiAgICAgUHlPYmplY3QgKnN0b3JlX25hbWU7CiAgICAgUHlPYmplY3QgKm5hbWUgPSAoYS0+YXNuYW1lID09IE5VTEwpID8gYS0+bmFtZSA6IGEtPmFzbmFtZTsKLSAgICBjb25zdCBQeV9VTklDT0RFICpiYXNlID0gUHlVbmljb2RlX0FTX1VOSUNPREUobmFtZSk7Ci0gICAgUHlfVU5JQ09ERSAqZG90ID0gUHlfVU5JQ09ERV9zdHJjaHIoYmFzZSwgJy4nKTsKLSAgICBpZiAoZG90KSB7Ci0gICAgICAgIHN0b3JlX25hbWUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoYmFzZSwgZG90IC0gYmFzZSk7CisgICAgUHlfc3NpemVfdCBkb3QgPSBQeVVuaWNvZGVfRmluZENoYXIobmFtZSwgJy4nLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpLCAxKTsKKyAgICBpZiAoZG90ICE9IC0xKSB7CisgICAgICAgIHN0b3JlX25hbWUgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKG5hbWUsIDAsIGRvdCk7CiAgICAgICAgIGlmICghc3RvcmVfbmFtZSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTE2NTUsMTMgKzE2NTUsMTIgQEAKICAgICAgICAgc3ltdGFibGVfZXhpdF9ibG9jayhzdCwgKHZvaWQgKillKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIFZJU0lUX0lOX0JMT0NLKHN0LCBleHByLCBvdXRlcm1vc3QtPnRhcmdldCwgKHZvaWQqKWUpOwotICAgIFZJU0lUX1NFUV9JTl9CTE9DSyhzdCwgZXhwciwgb3V0ZXJtb3N0LT5pZnMsICh2b2lkKillKTsKLSAgICBWSVNJVF9TRVFfVEFJTF9JTl9CTE9DSyhzdCwgY29tcHJlaGVuc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JzLCAxLCAodm9pZCopZSk7CisgICAgVklTSVQoc3QsIGV4cHIsIG91dGVybW9zdC0+dGFyZ2V0KTsKKyAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIG91dGVybW9zdC0+aWZzKTsKKyAgICBWSVNJVF9TRVFfVEFJTChzdCwgY29tcHJlaGVuc2lvbiwgZ2VuZXJhdG9ycywgMSk7CiAgICAgaWYgKHZhbHVlKQotICAgICAgICBWSVNJVF9JTl9CTE9DSyhzdCwgZXhwciwgdmFsdWUsICh2b2lkKillKTsKLSAgICBWSVNJVF9JTl9CTE9DSyhzdCwgZXhwciwgZWx0LCAodm9pZCopZSk7CisgICAgICAgIFZJU0lUKHN0LCBleHByLCB2YWx1ZSk7CisgICAgVklTSVQoc3QsIGV4cHIsIGVsdCk7CiAgICAgcmV0dXJuIHN5bXRhYmxlX2V4aXRfYmxvY2soc3QsICh2b2lkICopZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9zeXNtb2R1bGUuYyBiL1B5dGhvbi9zeXNtb2R1bGUuYwppbmRleCBjNGYyN2QwLi4yMGJmYTU1IDEwMDY0NAotLS0gYS9QeXRob24vc3lzbW9kdWxlLmMKKysrIGIvUHl0aG9uL3N5c21vZHVsZS5jCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiY29kZS5oIgogI2luY2x1ZGUgImZyYW1lb2JqZWN0LmgiCisjaW5jbHVkZSAicHl0aHJlYWQuaCIKIAogI2luY2x1ZGUgIm9zZGVmcy5oIgogCkBAIC03OCw4ICs3OSwxMCBAQAogICAgIFB5T2JqZWN0ICplbmNvZGVkLCAqZXNjYXBlZF9zdHIsICpyZXByX3N0ciwgKmJ1ZmZlciwgKnJlc3VsdDsKICAgICBjaGFyICpzdGRvdXRfZW5jb2Rpbmdfc3RyOwogICAgIGludCByZXQ7CisgICAgX1B5X0lERU5USUZJRVIoZW5jb2RpbmcpOworICAgIF9QeV9JREVOVElGSUVSKGJ1ZmZlcik7CiAKLSAgICBzdGRvdXRfZW5jb2RpbmcgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG91dGYsICJlbmNvZGluZyIpOworICAgIHN0ZG91dF9lbmNvZGluZyA9IF9QeU9iamVjdF9HZXRBdHRySWQob3V0ZiwgJlB5SWRfZW5jb2RpbmcpOwogICAgIGlmIChzdGRvdXRfZW5jb2RpbmcgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBzdGRvdXRfZW5jb2Rpbmdfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZyhzdGRvdXRfZW5jb2RpbmcpOwpAQCAtOTYsOSArOTksMTAgQEAKICAgICBpZiAoZW5jb2RlZCA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgYnVmZmVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvdXRmLCAiYnVmZmVyIik7CisgICAgYnVmZmVyID0gX1B5T2JqZWN0X0dldEF0dHJJZChvdXRmLCAmUHlJZF9idWZmZXIpOwogICAgIGlmIChidWZmZXIpIHsKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChidWZmZXIsICJ3cml0ZSIsICIoTykiLCBlbmNvZGVkKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOworICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGJ1ZmZlciwgJlB5SWRfd3JpdGUsICIoTykiLCBlbmNvZGVkKTsKICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CiAgICAgICAgIFB5X0RFQ1JFRihlbmNvZGVkKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQpAQCAtMTM1LDYgKzEzOSw3IEBACiAgICAgUHlPYmplY3QgKm1vZHVsZXMgPSBpbnRlcnAtPm1vZHVsZXM7CiAgICAgUHlPYmplY3QgKmJ1aWx0aW5zID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgImJ1aWx0aW5zIik7CiAgICAgaW50IGVycjsKKyAgICBfUHlfSURFTlRJRklFUihfKTsKIAogICAgIGlmIChidWlsdGlucyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJsb3N0IGJ1aWx0aW5zIG1vZHVsZSIpOwpAQCAtMTQ4LDcgKzE1Myw3IEBACiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQotICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKGJ1aWx0aW5zLCAiXyIsIFB5X05vbmUpICE9IDApCisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQoYnVpbHRpbnMsICZQeUlkX18sIFB5X05vbmUpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIG91dGYgPSBQeVN5c19HZXRPYmplY3QoInN0ZG91dCIpOwogICAgIGlmIChvdXRmID09IE5VTEwgfHwgb3V0ZiA9PSBQeV9Ob25lKSB7CkBAIC0xNzAsNyArMTc1LDcgQEAKICAgICB9CiAgICAgaWYgKFB5RmlsZV9Xcml0ZVN0cmluZygiXG4iLCBvdXRmKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhidWlsdGlucywgIl8iLCBvKSAhPSAwKQorICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKGJ1aWx0aW5zLCAmUHlJZF9fLCBvKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CkBAIC03NzAsOSArNzc1LDcgQEAKIGEgbGF6eSByZXNvbHZpbmcgb2Ygc3ltYm9scyB3aGVuIGltcG9ydGluZyBhIG1vZHVsZSwgaWYgY2FsbGVkIGFzXG5cCiBzeXMuc2V0ZGxvcGVuZmxhZ3MoMCkuICBUbyBzaGFyZSBzeW1ib2xzIGFjcm9zcyBleHRlbnNpb24gbW9kdWxlcywgY2FsbCBhc1xuXAogc3lzLnNldGRsb3BlbmZsYWdzKGN0eXBlcy5SVExEX0dMT0JBTCkuICBTeW1ib2xpYyBuYW1lcyBmb3IgdGhlIGZsYWcgbW9kdWxlc1xuXAotY2FuIGJlIGVpdGhlciBmb3VuZCBpbiB0aGUgY3R5cGVzIG1vZHVsZSwgb3IgaW4gdGhlIERMRkNOIG1vZHVsZS4gSWYgRExGQ05cblwKLWlzIG5vdCBhdmFpbGFibGUsIGl0IGNhbiBiZSBnZW5lcmF0ZWQgZnJvbSAvdXNyL2luY2x1ZGUvZGxmY24uaCB1c2luZyB0aGVcblwKLWgycHkgc2NyaXB0LiIpOworY2FuIGJlIGZvdW5kIGluIHRoZSBvcyBtb2R1bGUgKFJUTERfeHh4IGNvbnN0YW50cywgZS5nLiBvcy5SVExEX0xBWlkpLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogc3lzX2dldGRsb3BlbmZsYWdzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTgxMSwxMCArODE0LDExIEBACiBzeXNfZ2V0c2l6ZW9mKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpzdHJfX3NpemVvZl9fID0gTlVMTCwgKmdjX2hlYWRfc2l6ZSA9IE5VTEw7CisgICAgc3RhdGljIFB5T2JqZWN0ICpnY19oZWFkX3NpemUgPSBOVUxMOwogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsib2JqZWN0IiwgImRlZmF1bHQiLCAwfTsKICAgICBQeU9iamVjdCAqbywgKmRmbHQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICptZXRob2Q7CisgICAgX1B5X0lERU5USUZJRVIoX19zaXplb2ZfXyk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPOmdldHNpemVvZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmbywgJmRmbHQpKQpAQCAtODMxLDggKzgzNSw3IEBACiAgICAgaWYgKFB5VHlwZV9SZWFkeShQeV9UWVBFKG8pKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgbWV0aG9kID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobywgIl9fc2l6ZW9mX18iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJfX3NpemVvZl9fKTsKKyAgICBtZXRob2QgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvLCAmUHlJZF9fX3NpemVvZl9fKTsKICAgICBpZiAobWV0aG9kID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKQEAgLTk5NCw2ICs5OTcsMjcgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKK3N0YXRpYyBQeU9iamVjdCAqCitzeXNfZGVidWdtYWxsb2NzdGF0cyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisjaWZkZWYgV0lUSF9QWU1BTExPQworICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7CisgICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKKyNlbmRpZgorICAgIF9QeU9iamVjdF9EZWJ1Z1R5cGVTdGF0cyhzdGRlcnIpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CitQeURvY19TVFJWQVIoZGVidWdtYWxsb2NzdGF0c19kb2MsCisiX2RlYnVnbWFsbG9jc3RhdHMoKVxuXAorXG5cCitQcmludCBzdW1tYXJ5IGluZm8gdG8gc3RkZXJyIGFib3V0IHRoZSBzdGF0ZSBvZlxuXAorcHltYWxsb2MncyBzdHJ1Y3R1cmVzLlxuXAorXG5cCitJbiBQeV9ERUJVRyBtb2RlLCBhbHNvIHBlcmZvcm0gc29tZSBleHBlbnNpdmUgaW50ZXJuYWwgY29uc2lzdGVuY3lcblwKK2NoZWNrcy5cblwKKyIpOworCiAjaWZkZWYgUHlfVFJBQ0VfUkVGUwogLyogRGVmaW5lZCBpbiBvYmplY3RzLmMgYmVjYXVzZSBpdCB1c2VzIHN0YXRpYyBnbG9iYWxzIGlmIHRoYXQgZmlsZSAqLwogZXh0ZXJuIFB5T2JqZWN0ICpfUHlfR2V0T2JqZWN0cyhQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKQEAgLTEwOTAsNiArMTExNCw4IEBACiAgICAgeyJzZXR0cmFjZSIsICAgICAgICBzeXNfc2V0dHJhY2UsIE1FVEhfTywgc2V0dHJhY2VfZG9jfSwKICAgICB7ImdldHRyYWNlIiwgICAgICAgIHN5c19nZXR0cmFjZSwgTUVUSF9OT0FSR1MsIGdldHRyYWNlX2RvY30sCiAgICAgeyJjYWxsX3RyYWNpbmciLCBzeXNfY2FsbF90cmFjaW5nLCBNRVRIX1ZBUkFSR1MsIGNhbGxfdHJhY2luZ19kb2N9LAorICAgIHsiX2RlYnVnbWFsbG9jc3RhdHMiLCBzeXNfZGVidWdtYWxsb2NzdGF0cywgTUVUSF9WQVJBUkdTLAorICAgICBkZWJ1Z21hbGxvY3N0YXRzX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTExNzcsNyArMTIwMyw2IEBACiAgICAgUHlPYmplY3QgKm9wdHM7CiAgICAgUHlPYmplY3QgKm5hbWUgPSBOVUxMLCAqdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IHdjaGFyX3QgKm5hbWVfZW5kOwotICAgIGludCByOwogCiAgICAgb3B0cyA9IGdldF94b3B0aW9ucygpOwogICAgIGlmIChvcHRzID09IE5VTEwpCkBAIC0xMTk1LDcgKzEyMjAsNyBAQAogICAgIH0KICAgICBpZiAobmFtZSA9PSBOVUxMIHx8IHZhbHVlID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgciA9IFB5RGljdF9TZXRJdGVtKG9wdHMsIG5hbWUsIHZhbHVlKTsKKyAgICBQeURpY3RfU2V0SXRlbShvcHRzLCBuYW1lLCB2YWx1ZSk7CiAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgcmV0dXJuOwpAQCAtMTI1MiwyMSArMTI3NywyMiBAQAogIlxuXAogU3RhdGljIG9iamVjdHM6XG5cCiBcblwKLWZsb2F0X2luZm8gLS0gYSBkaWN0IHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZsb2F0IGltcGxlbWVudGF0aW9uLlxuXAorYnVpbHRpbl9tb2R1bGVfbmFtZXMgLS0gdHVwbGUgb2YgbW9kdWxlIG5hbWVzIGJ1aWx0IGludG8gdGhpcyBpbnRlcnByZXRlclxuXAorY29weXJpZ2h0IC0tIGNvcHlyaWdodCBub3RpY2UgcGVydGFpbmluZyB0byB0aGlzIGludGVycHJldGVyXG5cCitleGVjX3ByZWZpeCAtLSBwcmVmaXggdXNlZCB0byBmaW5kIHRoZSBtYWNoaW5lLXNwZWNpZmljIFB5dGhvbiBsaWJyYXJ5XG5cCitleGVjdXRhYmxlIC0tIGFic29sdXRlIHBhdGggb2YgdGhlIGV4ZWN1dGFibGUgYmluYXJ5IG9mIHRoZSBQeXRob24gaW50ZXJwcmV0ZXJcblwKK2Zsb2F0X2luZm8gLS0gYSBzdHJ1Y3Qgc2VxdWVuY2Ugd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmxvYXQgaW1wbGVtZW50YXRpb24uXG5cCitmbG9hdF9yZXByX3N0eWxlIC0tIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBzdHlsZSBvZiByZXByKCkgb3V0cHV0IGZvciBmbG9hdHNcblwKK2hleHZlcnNpb24gLS0gdmVyc2lvbiBpbmZvcm1hdGlvbiBlbmNvZGVkIGFzIGEgc2luZ2xlIGludGVnZXJcblwKK2ltcGxlbWVudGF0aW9uIC0tIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBpbmZvcm1hdGlvbi5cblwKIGludF9pbmZvIC0tIGEgc3RydWN0IHNlcXVlbmNlIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIGludCBpbXBsZW1lbnRhdGlvbi5cblwKIG1heHNpemUgLS0gdGhlIGxhcmdlc3Qgc3VwcG9ydGVkIGxlbmd0aCBvZiBjb250YWluZXJzLlxuXAotbWF4dW5pY29kZSAtLSB0aGUgbGFyZ2VzdCBzdXBwb3J0ZWQgY2hhcmFjdGVyXG5cCi1idWlsdGluX21vZHVsZV9uYW1lcyAtLSB0dXBsZSBvZiBtb2R1bGUgbmFtZXMgYnVpbHQgaW50byB0aGlzIGludGVycHJldGVyXG5cCi1zdWJ2ZXJzaW9uIC0tIHN1YnZlcnNpb24gaW5mb3JtYXRpb24gb2YgdGhlIGJ1aWxkIGFzIHR1cGxlXG5cCittYXh1bmljb2RlIC0tIHRoZSB2YWx1ZSBvZiB0aGUgbGFyZ2VzdCBVbmljb2RlIGNvZGVwb2ludFxuXAorcGxhdGZvcm0gLS0gcGxhdGZvcm0gaWRlbnRpZmllclxuXAorcHJlZml4IC0tIHByZWZpeCB1c2VkIHRvIGZpbmQgdGhlIFB5dGhvbiBsaWJyYXJ5XG5cCit0aHJlYWRfaW5mbyAtLSBhIHN0cnVjdCBzZXF1ZW5jZSB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0aHJlYWQgaW1wbGVtZW50YXRpb24uXG5cCiB2ZXJzaW9uIC0tIHRoZSB2ZXJzaW9uIG9mIHRoaXMgaW50ZXJwcmV0ZXIgYXMgYSBzdHJpbmdcblwKIHZlcnNpb25faW5mbyAtLSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFzIGEgbmFtZWQgdHVwbGVcblwKLWhleHZlcnNpb24gLS0gdmVyc2lvbiBpbmZvcm1hdGlvbiBlbmNvZGVkIGFzIGEgc2luZ2xlIGludGVnZXJcblwKLWNvcHlyaWdodCAtLSBjb3B5cmlnaHQgbm90aWNlIHBlcnRhaW5pbmcgdG8gdGhpcyBpbnRlcnByZXRlclxuXAotcGxhdGZvcm0gLS0gcGxhdGZvcm0gaWRlbnRpZmllclxuXAotZXhlY3V0YWJsZSAtLSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBleGVjdXRhYmxlIGJpbmFyeSBvZiB0aGUgUHl0aG9uIGludGVycHJldGVyXG5cCi1wcmVmaXggLS0gcHJlZml4IHVzZWQgdG8gZmluZCB0aGUgUHl0aG9uIGxpYnJhcnlcblwKLWV4ZWNfcHJlZml4IC0tIHByZWZpeCB1c2VkIHRvIGZpbmQgdGhlIG1hY2hpbmUtc3BlY2lmaWMgUHl0aG9uIGxpYnJhcnlcblwKLWZsb2F0X3JlcHJfc3R5bGUgLS0gc3RyaW5nIGluZGljYXRpbmcgdGhlIHN0eWxlIG9mIHJlcHIoKSBvdXRwdXQgZm9yIGZsb2F0c1xuXAogIgogKQogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTEzMDUsNDMgKzEzMzEsNiBAQAogKQogLyogZW5kIG9mIHN5c19kb2MgKi8gOwogCi0vKiBTdWJ2ZXJzaW9uIGJyYW5jaCBhbmQgcmV2aXNpb24gbWFuYWdlbWVudCAqLwotc3RhdGljIGludCBzdm5faW5pdGlhbGl6ZWQ7Ci1zdGF0aWMgY2hhciBwYXRjaGxldmVsX3JldmlzaW9uWzUwXTsgLyogSnVzdCB0aGUgbnVtYmVyICovCi1zdGF0aWMgY2hhciBicmFuY2hbNTBdOwotc3RhdGljIGNoYXIgc2hvcnRicmFuY2hbNTBdOwotc3RhdGljIGNvbnN0IGNoYXIgKnN2bl9yZXZpc2lvbjsKLQotc3RhdGljIHZvaWQKLXN2bnZlcnNpb25faW5pdCh2b2lkKQotewotICAgIGlmIChzdm5faW5pdGlhbGl6ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN2bl9pbml0aWFsaXplZCA9IDE7Ci0gICAgKnBhdGNobGV2ZWxfcmV2aXNpb24gPSAnXDAnOwotICAgIHN0cmNweShicmFuY2gsICIiKTsKLSAgICBzdHJjcHkoc2hvcnRicmFuY2gsICJ1bmtub3duIik7Ci0gICAgc3ZuX3JldmlzaW9uID0gIiI7Ci19Ci0KLS8qIFJldHVybiBzdm52ZXJzaW9uIG91dHB1dCBpZiBhdmFpbGFibGUuCi0gICBFbHNlIHJldHVybiBSZXZpc2lvbiBvZiBwYXRjaGxldmVsLmggaWYgb24gYnJhbmNoLgotICAgRWxzZSByZXR1cm4gZW1wdHkgc3RyaW5nICovCi1jb25zdCBjaGFyKgotUHlfU3VidmVyc2lvblJldmlzaW9uKCkKLXsKLSAgICBzdm52ZXJzaW9uX2luaXQoKTsKLSAgICByZXR1cm4gc3ZuX3JldmlzaW9uOwotfQotCi1jb25zdCBjaGFyKgotUHlfU3VidmVyc2lvblNob3J0QnJhbmNoKCkKLXsKLSAgICBzdm52ZXJzaW9uX2luaXQoKTsKLSAgICByZXR1cm4gc2hvcnRicmFuY2g7Ci19Ci0KIAogUHlEb2NfU1RSVkFSKGZsYWdzX19kb2NfXywKICJzeXMuZmxhZ3NcblwKQEAgLTEzNTIsNyArMTM0MSw2IEBACiAKIHN0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIGZsYWdzX2ZpZWxkc1tdID0gewogICAgIHsiZGVidWciLCAgICAgICAgICAgICAgICAgICAiLWQifSwKLSAgICB7ImRpdmlzaW9uX3dhcm5pbmciLCAgICAgICAgIi1RIn0sCiAgICAgeyJpbnNwZWN0IiwgICAgICAgICAgICAgICAgICItaSJ9LAogICAgIHsiaW50ZXJhY3RpdmUiLCAgICAgICAgICAgICAiLWkifSwKICAgICB7Im9wdGltaXplIiwgICAgICAgICAgICAgICAgIi1PIG9yIC1PTyJ9LApAQCAtMTM3Nyw5ICsxMzY1LDkgQEAKICAgICBmbGFnc19fZG9jX18sICAgICAgIC8qIGRvYyAqLwogICAgIGZsYWdzX2ZpZWxkcywgICAgICAgLyogZmllbGRzICovCiAjaWZkZWYgUklTQ09TCi0gICAgMTQKLSNlbHNlCiAgICAgMTMKKyNlbHNlCisgICAgMTIKICNlbmRpZgogfTsKIApAQCAtMTM5Nyw3ICsxMzg1LDYgQEAKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHNlcSwgcG9zKyssIFB5TG9uZ19Gcm9tTG9uZyhmbGFnKSkKIAogICAgIFNldEZsYWcoUHlfRGVidWdGbGFnKTsKLSAgICBTZXRGbGFnKFB5X0RpdmlzaW9uV2FybmluZ0ZsYWcpOwogICAgIFNldEZsYWcoUHlfSW5zcGVjdEZsYWcpOwogICAgIFNldEZsYWcoUHlfSW50ZXJhY3RpdmVGbGFnKTsKICAgICBTZXRGbGFnKFB5X09wdGltaXplRmxhZyk7CkBAIC0xNDkxLDYgKzE0NzgsNzMgQEAKICAgICByZXR1cm4gdmVyc2lvbl9pbmZvOwogfQogCisvKiBzeXMuaW1wbGVtZW50YXRpb24gdmFsdWVzICovCisjZGVmaW5lIE5BTUUgImNweXRob24iCitjb25zdCBjaGFyICpfUHlTeXNfSW1wbE5hbWUgPSBOQU1FOworI2RlZmluZSBRVU9URShhcmcpICNhcmcKKyNkZWZpbmUgU1RSSUZZKG5hbWUpIFFVT1RFKG5hbWUpCisjZGVmaW5lIE1BSk9SIFNUUklGWShQWV9NQUpPUl9WRVJTSU9OKQorI2RlZmluZSBNSU5PUiBTVFJJRlkoUFlfTUlOT1JfVkVSU0lPTikKKyNkZWZpbmUgVEFHIE5BTUUgIi0iIE1BSk9SIE1JTk9SOworY29uc3QgY2hhciAqX1B5U3lzX0ltcGxDYWNoZVRhZyA9IFRBRzsKKyN1bmRlZiBOQU1FCisjdW5kZWYgUVVPVEUKKyN1bmRlZiBTVFJJRlkKKyN1bmRlZiBNQUpPUgorI3VuZGVmIE1JTk9SCisjdW5kZWYgVEFHCisKK3N0YXRpYyBQeU9iamVjdCAqCittYWtlX2ltcGxfaW5mbyhQeU9iamVjdCAqdmVyc2lvbl9pbmZvKQoreworICAgIGludCByZXM7CisgICAgUHlPYmplY3QgKmltcGxfaW5mbywgKnZhbHVlLCAqbnM7CisKKyAgICBpbXBsX2luZm8gPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGltcGxfaW5mbyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIHBvcHVsYXRlIHRoZSBkaWN0ICovCisKKyAgICB2YWx1ZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKF9QeVN5c19JbXBsTmFtZSk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmVzID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoaW1wbF9pbmZvLCAibmFtZSIsIHZhbHVlKTsKKyAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgdmFsdWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhfUHlTeXNfSW1wbENhY2hlVGFnKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICByZXMgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhpbXBsX2luZm8sICJjYWNoZV90YWciLCB2YWx1ZSk7CisgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGltcGxfaW5mbywgInZlcnNpb24iLCB2ZXJzaW9uX2luZm8pOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoUFlfVkVSU0lPTl9IRVgpOworICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGltcGxfaW5mbywgImhleHZlcnNpb24iLCB2YWx1ZSk7CisgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIC8qIGRpY3QgcmVhZHkgKi8KKworICAgIG5zID0gX1B5TmFtZXNwYWNlX05ldyhpbXBsX2luZm8pOworICAgIFB5X0RFQ1JFRihpbXBsX2luZm8pOworICAgIHJldHVybiBuczsKKworZXJyb3I6CisgICAgUHlfQ0xFQVIoaW1wbF9pbmZvKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwogc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBzeXNtb2R1bGUgPSB7CiAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAogICAgICJzeXMiLApAQCAtMTUwNiw3ICsxNTYwLDcgQEAKIFB5T2JqZWN0ICoKIF9QeVN5c19Jbml0KHZvaWQpCiB7Ci0gICAgUHlPYmplY3QgKm0sICp2LCAqc3lzZGljdDsKKyAgICBQeU9iamVjdCAqbSwgKnYsICpzeXNkaWN0LCAqdmVyc2lvbl9pbmZvOwogICAgIGNoYXIgKnM7CiAKICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZzeXNtb2R1bGUpOwpAQCAtMTU0NywxMCArMTYwMSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmcoUHlfR2V0VmVyc2lvbigpKSk7CiAgICAgU0VUX1NZU19GUk9NX1NUUklORygiaGV4dmVyc2lvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nKFBZX1ZFUlNJT05fSEVYKSk7Ci0gICAgc3ZudmVyc2lvbl9pbml0KCk7Ci0gICAgU0VUX1NZU19GUk9NX1NUUklORygic3VidmVyc2lvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeV9CdWlsZFZhbHVlKCIoc3NzKSIsICJDUHl0aG9uIiwgYnJhbmNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdm5fcmV2aXNpb24pKTsKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJfbWVyY3VyaWFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0J1aWxkVmFsdWUoIihzenopIiwgIkNQeXRob24iLCBfUHlfaGdpZGVudGlmaWVyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oZ3ZlcnNpb24oKSkpOwpAQCAtMTU2OSw2ICsxNjE5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKFB5X0dldFByZWZpeCgpLCAtMSkpOwogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImV4ZWNfcHJlZml4IiwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoUHlfR2V0RXhlY1ByZWZpeCgpLCAtMSkpOworICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImJhc2VfcHJlZml4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoUHlfR2V0UHJlZml4KCksIC0xKSk7CisgICAgU0VUX1NZU19GUk9NX1NUUklORygiYmFzZV9leGVjX3ByZWZpeCIsCisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKFB5X0dldEV4ZWNQcmVmaXgoKSwgLTEpKTsKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJtYXhzaXplIiwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tU3NpemVfdChQWV9TU0laRV9UX01BWCkpOwogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImZsb2F0X2luZm8iLApAQCAtMTU4MSw3ICsxNjM1LDcgQEAKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJoYXNoX2luZm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2hhc2hfaW5mbygpKTsKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJtYXh1bmljb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZyhQeVVuaWNvZGVfR2V0TWF4KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZygweDEwRkZGRikpOwogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImJ1aWx0aW5fbW9kdWxlX25hbWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfYnVpbHRpbl9tb2R1bGVfbmFtZXMoKSk7CiAgICAgewpAQCAtMTYyNiwxMSArMTY4MCwxNSBAQAogICAgIC8qIHZlcnNpb25faW5mbyAqLwogICAgIGlmIChWZXJzaW9uSW5mb1R5cGUudHBfbmFtZSA9PSAwKQogICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZWZXJzaW9uSW5mb1R5cGUsICZ2ZXJzaW9uX2luZm9fZGVzYyk7Ci0gICAgU0VUX1NZU19GUk9NX1NUUklORygidmVyc2lvbl9pbmZvIiwgbWFrZV92ZXJzaW9uX2luZm8oKSk7CisgICAgdmVyc2lvbl9pbmZvID0gbWFrZV92ZXJzaW9uX2luZm8oKTsKKyAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJ2ZXJzaW9uX2luZm8iLCB2ZXJzaW9uX2luZm8pOwogICAgIC8qIHByZXZlbnQgdXNlciBmcm9tIGNyZWF0aW5nIG5ldyBpbnN0YW5jZXMgKi8KICAgICBWZXJzaW9uSW5mb1R5cGUudHBfaW5pdCA9IE5VTEw7CiAgICAgVmVyc2lvbkluZm9UeXBlLnRwX25ldyA9IE5VTEw7CiAKKyAgICAvKiBpbXBsZW1lbnRhdGlvbiAqLworICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImltcGxlbWVudGF0aW9uIiwgbWFrZV9pbXBsX2luZm8odmVyc2lvbl9pbmZvKSk7CisKICAgICAvKiBmbGFncyAqLwogICAgIGlmIChGbGFnc1R5cGUudHBfbmFtZSA9PSAwKQogICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZGbGFnc1R5cGUsICZmbGFnc19kZXNjKTsKQEAgLTE2NTgsNiArMTcxNiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmcoImxlZ2FjeSIpKTsKICNlbmRpZgogCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJ0aHJlYWRfaW5mbyIsIFB5VGhyZWFkX0dldEluZm8oKSk7CisjZW5kaWYKKwogI3VuZGVmIFNFVF9TWVNfRlJPTV9TVFJJTkcKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xODEyLDcgKzE4NzQsNyBAQAogICAgICAgICB0aGUgYXJndW1lbnQgbXVzdCBiZSB0aGUgZnVsbCBwYXRoIGFueXdheS4gKi8KICAgICAgICAgd2NoYXJfdCAqcHRlbXA7CiAgICAgICAgIGlmIChHZXRGdWxsUGF0aE5hbWVXKGFyZ3YwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGZ1bGxwYXRoKS9zaXplb2YoZnVsbHBhdGhbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfQVJSQVlfTEVOR1RIKGZ1bGxwYXRoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJnB0ZW1wKSkgewogICAgICAgICAgICAgYXJndjAgPSBmdWxscGF0aDsKQEAgLTE4ODEsMTEgKzE5NDMsMTIgQEAKIHsKICAgICBQeU9iamVjdCAqd3JpdGVyID0gTlVMTCwgKmFyZ3MgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTDsKICAgICBpbnQgZXJyOworICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKIAogICAgIGlmIChmaWxlID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIHdyaXRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZmlsZSwgIndyaXRlIik7CisgICAgd3JpdGVyID0gX1B5T2JqZWN0X0dldEF0dHJJZChmaWxlLCAmUHlJZF93cml0ZSk7CiAgICAgaWYgKHdyaXRlciA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkLmMgYi9QeXRob24vdGhyZWFkLmMKaW5kZXggZDIyNDA0Ni4uZTU1ZDM0MiAxMDA2NDQKLS0tIGEvUHl0aG9uL3RocmVhZC5jCisrKyBiL1B5dGhvbi90aHJlYWQuYwpAQCAtNyw3ICs3LDYgQEAKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogCi0KICNpZm5kZWYgX1BPU0lYX1RIUkVBRFMKIC8qIFRoaXMgbWVhbnMgcHRocmVhZHMgYXJlIG5vdCBpbXBsZW1lbnRlZCBpbiBsaWJjIGhlYWRlcnMsIGhlbmNlIHRoZSBtYWNybwogICAgbm90IHByZXNlbnQgaW4gdW5pc3RkLmguIEJ1dCB0aGV5IHN0aWxsIGNhbiBiZSBpbXBsZW1lbnRlZCBhcyBhbiBleHRlcm5hbApAQCAtMjcsMTggKzI2LDYgQEAKIAogI2lmbmRlZiBfUE9TSVhfVEhSRUFEUwogCi0jaWZkZWYgX19zZ2kKLSNkZWZpbmUgU0dJX1RIUkVBRFMKLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9USFJFQURfSAotI2RlZmluZSBTT0xBUklTX1RIUkVBRFMKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChzdW4pICYmICFkZWZpbmVkKFNPTEFSSVNfVEhSRUFEUykKLSNkZWZpbmUgU1VOX0xXUAotI2VuZGlmCi0KIC8qIENoZWNrIGlmIHdlJ3JlIHJ1bm5pbmcgb24gSFAtVVggYW5kIF9TQ19USFJFQURTIGlzIGRlZmluZWQuIElmIHNvLCB0aGVuCiAgICBlbm91Z2ggb2YgdGhlIFBvc2l4IHRocmVhZHMgcGFja2FnZSBpcyBpbXBsZW1lbnRlZCB0byBzdXBwb3J0IHB5dGhvbgogICAgdGhyZWFkcy4KQEAgLTk0LDQ3ICs4MSwyMSBAQAogICAgb3IgdGhlIHNpemUgc3BlY2lmaWVkIGJ5IHRoZSBUSFJFQURfU1RBQ0tfU0laRSBtYWNyby4gKi8KIHN0YXRpYyBzaXplX3QgX3B5dGhyZWFkX3N0YWNrc2l6ZSA9IDA7CiAKLSNpZmRlZiBTR0lfVEhSRUFEUwotI2Vycm9yIFNHSSBJcml4IHRocmVhZHMgYXJlIG5vdyB1bnN1cHBvcnRlZCwgYW5kIGNvZGUgd2lsbCBiZSByZW1vdmVkIGluIDMuMy4KLSNpbmNsdWRlICJ0aHJlYWRfc2dpLmgiCi0jZW5kaWYKLQotI2lmZGVmIFNPTEFSSVNfVEhSRUFEUwotI2luY2x1ZGUgInRocmVhZF9zb2xhcmlzLmgiCi0jZW5kaWYKLQotI2lmZGVmIFNVTl9MV1AKLSNlcnJvciBTdW5PUyBsaWdodHdlaWdodCBwcm9jZXNzZXMgYXJlIG5vdyB1bnN1cHBvcnRlZCwgYW5kIGNvZGUgd2lsbCBiZSByZW1vdmVkIGluIDMuMy4KLSNpbmNsdWRlICJ0aHJlYWRfbHdwLmgiCi0jZW5kaWYKLQotI2lmZGVmIEhBVkVfUFRICi0jZXJyb3IgR05VIHB0aCB0aHJlYWRzIGFyZSBub3cgdW5zdXBwb3J0ZWQsIGFuZCBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjMuCi0jaW5jbHVkZSAidGhyZWFkX3B0aC5oIgotI3VuZGVmIF9QT1NJWF9USFJFQURTCi0jZW5kaWYKLQogI2lmZGVmIF9QT1NJWF9USFJFQURTCisjZGVmaW5lIFBZVEhSRUFEX05BTUUgInB0aHJlYWQiCiAjaW5jbHVkZSAidGhyZWFkX3B0aHJlYWQuaCIKICNlbmRpZgogCi0jaWZkZWYgQ19USFJFQURTCi0jZXJyb3IgTWFjaCBDIFRocmVhZHMgYXJlIG5vdyB1bnN1cHBvcnRlZCwgYW5kIGNvZGUgd2lsbCBiZSByZW1vdmVkIGluIDMuMy4KLSNpbmNsdWRlICJ0aHJlYWRfY3RocmVhZC5oIgotI2VuZGlmCi0KICNpZmRlZiBOVF9USFJFQURTCisjZGVmaW5lIFBZVEhSRUFEX05BTUUgIm50IgogI2luY2x1ZGUgInRocmVhZF9udC5oIgogI2VuZGlmCiAKICNpZmRlZiBPUzJfVEhSRUFEUworI2RlZmluZSBQWVRIUkVBRF9OQU1FICJvczIiCiAjaW5jbHVkZSAidGhyZWFkX29zMi5oIgogI2VuZGlmCiAKLSNpZmRlZiBQTEFOOV9USFJFQURTCi0jaW5jbHVkZSAidGhyZWFkX3BsYW45LmgiCi0jZW5kaWYKLQogLyoKICNpZmRlZiBGT09CQVJfVEhSRUFEUwogI2luY2x1ZGUgInRocmVhZF9mb29iYXIuaCIKQEAgLTQwOSwzICszNzAsODQgQEAKIH0KIAogI2VuZGlmIC8qIFB5X0hBVkVfTkFUSVZFX1RMUyAqLworCitQeURvY19TVFJWQVIodGhyZWFkaW5mb19fZG9jX18sCisic3lzLnRocmVhZF9pbmZvXG5cCitcblwKK0Egc3RydWN0IHNlcXVlbmNlIGhvbGRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRocmVhZCBpbXBsZW1lbnRhdGlvbi4iKTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgdGhyZWFkaW5mb19maWVsZHNbXSA9IHsKKyAgICB7Im5hbWUiLCAgICAibmFtZSBvZiB0aGUgdGhyZWFkIGltcGxlbWVudGF0aW9uIn0sCisgICAgeyJsb2NrIiwgICAgIm5hbWUgb2YgdGhlIGxvY2sgaW1wbGVtZW50YXRpb24ifSwKKyAgICB7InZlcnNpb24iLCAibmFtZSBhbmQgdmVyc2lvbiBvZiB0aGUgdGhyZWFkIGxpYnJhcnkifSwKKyAgICB7MH0KK307CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0Rlc2MgdGhyZWFkaW5mb19kZXNjID0geworICAgICJzeXMudGhyZWFkX2luZm8iLCAgICAgICAgICAgLyogbmFtZSAqLworICAgIHRocmVhZGluZm9fX2RvY19fLCAgICAgICAgICAgLyogZG9jICovCisgICAgdGhyZWFkaW5mb19maWVsZHMsICAgICAgICAgICAvKiBmaWVsZHMgKi8KKyAgICAzCit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFRocmVhZEluZm9UeXBlOworCitQeU9iamVjdCoKK1B5VGhyZWFkX0dldEluZm8odm9pZCkKK3sKKyAgICBQeU9iamVjdCAqdGhyZWFkaW5mbywgKnZhbHVlOworICAgIGludCBwb3MgPSAwOworI2lmIChkZWZpbmVkKF9QT1NJWF9USFJFQURTKSAmJiBkZWZpbmVkKEhBVkVfQ09ORlNUUikgXAorICAgICAmJiBkZWZpbmVkKF9DU19HTlVfTElCUFRIUkVBRF9WRVJTSU9OKSkKKyAgICBjaGFyIGJ1ZmZlclsyNTVdOworICAgIGludCBsZW47CisjZW5kaWYKKworICAgIGlmIChUaHJlYWRJbmZvVHlwZS50cF9uYW1lID09IDApCisgICAgICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJlRocmVhZEluZm9UeXBlLCAmdGhyZWFkaW5mb19kZXNjKTsKKworICAgIHRocmVhZGluZm8gPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmVGhyZWFkSW5mb1R5cGUpOworICAgIGlmICh0aHJlYWRpbmZvID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgdmFsdWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhQWVRIUkVBRF9OQU1FKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYodGhyZWFkaW5mbyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHRocmVhZGluZm8sIHBvcysrLCB2YWx1ZSk7CisKKyNpZmRlZiBfUE9TSVhfVEhSRUFEUworI2lmZGVmIFVTRV9TRU1BUEhPUkVTCisgICAgdmFsdWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygic2VtYXBob3JlIik7CisjZWxzZQorICAgIHZhbHVlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIm11dGV4K2NvbmQiKTsKKyNlbmRpZgorICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRih0aHJlYWRpbmZvKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorI2Vsc2UKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgdmFsdWUgPSBQeV9Ob25lOworI2VuZGlmCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh0aHJlYWRpbmZvLCBwb3MrKywgdmFsdWUpOworCisjaWYgKGRlZmluZWQoX1BPU0lYX1RIUkVBRFMpICYmIGRlZmluZWQoSEFWRV9DT05GU1RSKSBcCisgICAgICYmIGRlZmluZWQoX0NTX0dOVV9MSUJQVEhSRUFEX1ZFUlNJT04pKQorICAgIHZhbHVlID0gTlVMTDsKKyAgICBsZW4gPSBjb25mc3RyKF9DU19HTlVfTElCUFRIUkVBRF9WRVJTSU9OLCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKKyAgICBpZiAoMSA8IGxlbiAmJiBsZW4gPCBzaXplb2YoYnVmZmVyKSkgeworICAgICAgICB2YWx1ZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKGJ1ZmZlciwgbGVuLTEpOworICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgfQorICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorI2VuZGlmCisgICAgeworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIHZhbHVlID0gUHlfTm9uZTsKKyAgICB9CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh0aHJlYWRpbmZvLCBwb3MrKywgdmFsdWUpOworICAgIHJldHVybiB0aHJlYWRpbmZvOworfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF9jdGhyZWFkLmggYi9QeXRob24vdGhyZWFkX2N0aHJlYWQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWIzZTM5MC4uMDAwMDAwMAotLS0gYS9QeXRob24vdGhyZWFkX2N0aHJlYWQuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0KLSNpZmRlZiBNQUNIX0NfVEhSRUFEUwotI2luY2x1ZGUgPG1hY2gvY3RocmVhZHMuaD4KLSNlbmRpZgotCi0jaWZkZWYgSFVSRF9DX1RIUkVBRFMKLSNpbmNsdWRlIDxjdGhyZWFkcy5oPgotI2VuZGlmCi0KLS8qCi0gKiBJbml0aWFsaXphdGlvbi4KLSAqLwotc3RhdGljIHZvaWQKLVB5VGhyZWFkX19pbml0X3RocmVhZCh2b2lkKQotewotI2lmbmRlZiBIVVJEX0NfVEhSRUFEUwotICAgIC8qIFJvbGFuZCBNY0dyYXRoIHNhaWQgdGhpcyBzaG91bGQgbm90IGJlIHVzZWQgc2luY2UgdGhpcyBpcwotICAgIGRvbmUgd2hpbGUgbGlua2luZyB0byB0aHJlYWRzICovCi0gICAgY3RocmVhZF9pbml0KCk7Ci0jZWxzZQotLyogZG8gbm90aGluZyAqLwotICAgIDsKLSNlbmRpZgotfQotCi0vKgotICogVGhyZWFkIHN1cHBvcnQuCi0gKi8KLWxvbmcKLVB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQodm9pZCAoKmZ1bmMpKHZvaWQgKiksIHZvaWQgKmFyZykKLXsKLSAgICBpbnQgc3VjY2VzcyA9IDA7ICAgICAgICAgICAgLyogaW5pdCBub3QgbmVlZGVkIHdoZW4gU09MQVJJU19USFJFQURTIGFuZCAqLwotICAgICAgICAgICAgICAgIC8qIENfVEhSRUFEUyBpbXBsZW1lbnRlZCBwcm9wZXJseSAqLwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLSAgICAvKiBsb29rcyBsaWtlIHNvbGFyaXMgZGV0YWNoZXMgdGhlIHRocmVhZCB0byBuZXZlciByZWpvaW4KLSAgICAgKiBzbyB3ZWxsIGRvIGl0IGhlcmUKLSAgICAgKi8KLSAgICBjdGhyZWFkX2RldGFjaChjdGhyZWFkX2ZvcmsoKGN0aHJlYWRfZm5fdCkgZnVuYywgYXJnKSk7Ci0gICAgcmV0dXJuIHN1Y2Nlc3MgPCAwID8gLTEgOiAwOwotfQotCi1sb25nCi1QeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KHZvaWQpCi17Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLSAgICByZXR1cm4gKGxvbmcpIGN0aHJlYWRfc2VsZigpOwotfQotCi12b2lkCi1QeVRocmVhZF9leGl0X3RocmVhZCh2b2lkKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9leGl0X3RocmVhZCBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBleGl0KDApOwotICAgIGN0aHJlYWRfZXhpdCgwKTsKLX0KLQotLyoKLSAqIExvY2sgc3VwcG9ydC4KLSAqLwotUHlUaHJlYWRfdHlwZV9sb2NrCi1QeVRocmVhZF9hbGxvY2F0ZV9sb2NrKHZvaWQpCi17Ci0gICAgbXV0ZXhfdCBsb2NrOwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FsbG9jYXRlX2xvY2sgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLQotICAgIGxvY2sgPSBtdXRleF9hbGxvYygpOwotICAgIGlmIChtdXRleF9pbml0KGxvY2spKSB7Ci0gICAgICAgIHBlcnJvcigibXV0ZXhfaW5pdCIpOwotICAgICAgICBmcmVlKCh2b2lkICopIGxvY2spOwotICAgICAgICBsb2NrID0gMDsKLSAgICB9Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKSAtPiAlcFxuIiwgbG9jaykpOwotICAgIHJldHVybiAoUHlUaHJlYWRfdHlwZV9sb2NrKSBsb2NrOwotfQotCi12b2lkCi1QeVRocmVhZF9mcmVlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2spCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2ZyZWVfbG9jayglcCkgY2FsbGVkXG4iLCBsb2NrKSk7Ci0gICAgbXV0ZXhfZnJlZShsb2NrKTsKLX0KLQotaW50Ci1QeVRocmVhZF9hY3F1aXJlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2ssIGludCB3YWl0ZmxhZykKLXsKLSAgICBpbnQgc3VjY2VzcyA9IEZBTFNFOwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIGNhbGxlZFxuIiwgbG9jaywgd2FpdGZsYWcpKTsKLSAgICBpZiAod2FpdGZsYWcpIHsgICAgICAgICAgICAgLyogYmxvY2tpbmcgKi8KLSAgICAgICAgbXV0ZXhfbG9jaygobXV0ZXhfdClsb2NrKTsKLSAgICAgICAgc3VjY2VzcyA9IFRSVUU7Ci0gICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgIC8qIG5vbiBibG9ja2luZyAqLwotICAgICAgICBzdWNjZXNzID0gbXV0ZXhfdHJ5X2xvY2soKG11dGV4X3QpbG9jayk7Ci0gICAgfQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSAtPiAlZFxuIiwgbG9jaywgd2FpdGZsYWcsIHN1Y2Nlc3MpKTsKLSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotdm9pZAotUHlUaHJlYWRfcmVsZWFzZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9yZWxlYXNlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwotICAgIG11dGV4X3VubG9jaygobXV0ZXhfdCApbG9jayk7Ci19CmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX2x3cC5oIGIvUHl0aG9uL3RocmVhZF9sd3AuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE3YjM3YS4uMDAwMDAwMAotLS0gYS9QeXRob24vdGhyZWFkX2x3cC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPGx3cC9sd3AuaD4KLSNpbmNsdWRlIDxsd3Avc3RhY2tkZXAuaD4KLQotI2RlZmluZSBTVEFDS1NJWkUgICAgICAgMTAwMCAgICAvKiBzdGFja3NpemUgZm9yIGEgdGhyZWFkICovCi0jZGVmaW5lIE5TVEFDS1MgICAgICAgICAyICAgICAgIC8qICMgc3RhY2tzIHRvIGJlIHB1dCBpbiBjYWNoZSBpbml0aWFsbHkgKi8KLQotc3RydWN0IGxvY2sgewotICAgIGludCBsb2NrX2xvY2tlZDsKLSAgICBjdl90IGxvY2tfY29uZHZhcjsKLSAgICBtb25fdCBsb2NrX21vbml0b3I7Ci19OwotCi0KLS8qCi0gKiBJbml0aWFsaXphdGlvbi4KLSAqLwotc3RhdGljIHZvaWQgUHlUaHJlYWRfX2luaXRfdGhyZWFkKHZvaWQpCi17Ci0gICAgbHdwX3NldHN0a2NhY2hlKFNUQUNLU0laRSwgTlNUQUNLUyk7Ci19Ci0KLS8qCi0gKiBUaHJlYWQgc3VwcG9ydC4KLSAqLwotCi0KLWxvbmcgUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCh2b2lkICgqZnVuYykodm9pZCAqKSwgdm9pZCAqYXJnKQotewotICAgIHRocmVhZF90IHRpZDsKLSAgICBpbnQgc3VjY2VzczsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotICAgIHN1Y2Nlc3MgPSBsd3BfY3JlYXRlKCZ0aWQsIGZ1bmMsIE1JTlBSSU8sIDAsIGx3cF9uZXdzdGsoKSwgMSwgYXJnKTsKLSAgICByZXR1cm4gc3VjY2VzcyA8IDAgPyAtMSA6IDA7Ci19Ci0KLWxvbmcgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCh2b2lkKQotewotICAgIHRocmVhZF90IHRpZDsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotICAgIGlmIChsd3Bfc2VsZigmdGlkKSA8IDApCi0gICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gdGlkLnRocmVhZF9pZDsKLX0KLQotdm9pZCBQeVRocmVhZF9leGl0X3RocmVhZCh2b2lkKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9leGl0X3RocmVhZCBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBleGl0KDApOwotICAgIGx3cF9kZXN0cm95KFNFTEYpOwotfQotCi0vKgotICogTG9jayBzdXBwb3J0LgotICovCi1QeVRocmVhZF90eXBlX2xvY2sgUHlUaHJlYWRfYWxsb2NhdGVfbG9jayh2b2lkKQotewotICAgIHN0cnVjdCBsb2NrICpsb2NrOwotICAgIGV4dGVybiBjaGFyICptYWxsb2Moc2l6ZV90KTsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0KLSAgICBsb2NrID0gKHN0cnVjdCBsb2NrICopIG1hbGxvYyhzaXplb2Yoc3RydWN0IGxvY2spKTsKLSAgICBsb2NrLT5sb2NrX2xvY2tlZCA9IDA7Ci0gICAgKHZvaWQpIG1vbl9jcmVhdGUoJmxvY2stPmxvY2tfbW9uaXRvcik7Ci0gICAgKHZvaWQpIGN2X2NyZWF0ZSgmbG9jay0+bG9ja19jb25kdmFyLCBsb2NrLT5sb2NrX21vbml0b3IpOwotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCkgLT4gJXBcbiIsIGxvY2spKTsKLSAgICByZXR1cm4gKFB5VGhyZWFkX3R5cGVfbG9jaykgbG9jazsKLX0KLQotdm9pZCBQeVRocmVhZF9mcmVlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2spCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2ZyZWVfbG9jayglcCkgY2FsbGVkXG4iLCBsb2NrKSk7Ci0gICAgbW9uX2Rlc3Ryb3koKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19tb25pdG9yKTsKLSAgICBmcmVlKChjaGFyICopIGxvY2spOwotfQotCi1pbnQgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrLCBpbnQgd2FpdGZsYWcpCi17Ci0gICAgaW50IHN1Y2Nlc3M7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgY2FsbGVkXG4iLCBsb2NrLCB3YWl0ZmxhZykpOwotICAgIHN1Y2Nlc3MgPSAwOwotCi0gICAgKHZvaWQpIG1vbl9lbnRlcigoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX21vbml0b3IpOwotICAgIGlmICh3YWl0ZmxhZykKLSAgICAgICAgd2hpbGUgKCgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfbG9ja2VkKQotICAgICAgICAgICAgY3Zfd2FpdCgoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX2NvbmR2YXIpOwotICAgIGlmICghKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19sb2NrZWQpIHsKLSAgICAgICAgc3VjY2VzcyA9IDE7Ci0gICAgICAgICgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfbG9ja2VkID0gMTsKLSAgICB9Ci0gICAgY3ZfYnJvYWRjYXN0KCgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfY29uZHZhcik7Ci0gICAgbW9uX2V4aXQoKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19tb25pdG9yKTsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgLT4gJWRcbiIsIGxvY2ssIHdhaXRmbGFnLCBzdWNjZXNzKSk7Ci0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0KLXZvaWQgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9yZWxlYXNlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwotICAgICh2b2lkKSBtb25fZW50ZXIoKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19tb25pdG9yKTsKLSAgICAoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX2xvY2tlZCA9IDA7Ci0gICAgY3ZfYnJvYWRjYXN0KCgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfY29uZHZhcik7Ci0gICAgbW9uX2V4aXQoKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19tb25pdG9yKTsKLX0KZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfbnQuaCBiL1B5dGhvbi90aHJlYWRfbnQuaAppbmRleCBkMWJiMGU1Li45MzhiZjFlIDEwMDY0NAotLS0gYS9QeXRob24vdGhyZWFkX250LmgKKysrIGIvUHl0aG9uL3RocmVhZF9udC5oCkBAIC05LDYgKzksMTA5IEBACiAjaW5jbHVkZSA8cHJvY2Vzcy5oPgogI2VuZGlmCiAKKy8qIG9wdGlvbnMgKi8KKyNpZm5kZWYgX1BZX1VTRV9DVl9MT0NLUworI2RlZmluZSBfUFlfVVNFX0NWX0xPQ0tTIDEgICAgIC8qIHVzZSBsb2NrcyBiYXNlZCBvbiBjb25kIHZhcnMgKi8KKyNlbmRpZgorCisvKiBOb3csIGRlZmluZSBhIG5vbi1yZWN1cnNpdmUgbXV0ZXggdXNpbmcgZWl0aGVyIGNvbmRpdGlvbiB2YXJpYWJsZXMKKyAqIGFuZCBjcml0aWNhbCBzZWN0aW9ucyAoZmFzdCkgb3IgdXNpbmcgb3BlcmF0aW5nIHN5c3RlbSBtdXRleGVzCisgKiAoc2xvdykKKyAqLworCisjaWYgX1BZX1VTRV9DVl9MT0NLUworCisjaW5jbHVkZSAiY29uZHZhci5oIgorCit0eXBlZGVmIHN0cnVjdCBfTlJNVVRFWAoreworICAgIFB5TVVURVhfVCBjczsKKyAgICBQeUNPTkRfVCBjdjsKKyAgICBpbnQgbG9ja2VkOworfSBOUk1VVEVYOwordHlwZWRlZiBOUk1VVEVYICpQTlJNVVRFWDsKKworUE5STVVURVgKK0FsbG9jTm9uUmVjdXJzaXZlTXV0ZXgoKQoreworICAgIFBOUk1VVEVYIG0gPSAoUE5STVVURVgpbWFsbG9jKHNpemVvZihOUk1VVEVYKSk7CisgICAgaWYgKCFtKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlDT05EX0lOSVQoJm0tPmN2KSkKKyAgICAgICAgZ290byBmYWlsOworICAgIGlmIChQeU1VVEVYX0lOSVQoJm0tPmNzKSkgeworICAgICAgICBQeUNPTkRfRklOSSgmbS0+Y3YpOworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorICAgIG0tPmxvY2tlZCA9IDA7CisgICAgcmV0dXJuIG07CitmYWlsOgorICAgIGZyZWUobSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1ZPSUQKK0ZyZWVOb25SZWN1cnNpdmVNdXRleChQTlJNVVRFWCBtdXRleCkKK3sKKyAgICBpZiAobXV0ZXgpIHsKKyAgICAgICAgUHlDT05EX0ZJTkkoJm11dGV4LT5jdik7CisgICAgICAgIFB5TVVURVhfRklOSSgmbXV0ZXgtPmNzKTsKKyAgICAgICAgZnJlZShtdXRleCk7CisgICAgfQorfQorCitEV09SRAorRW50ZXJOb25SZWN1cnNpdmVNdXRleChQTlJNVVRFWCBtdXRleCwgRFdPUkQgbWlsbGlzZWNvbmRzKQoreworICAgIERXT1JEIHJlc3VsdCA9IFdBSVRfT0JKRUNUXzA7CisgICAgaWYgKFB5TVVURVhfTE9DSygmbXV0ZXgtPmNzKSkKKyAgICAgICAgcmV0dXJuIFdBSVRfRkFJTEVEOworICAgIGlmIChtaWxsaXNlY29uZHMgPT0gSU5GSU5JVEUpIHsKKyAgICAgICAgd2hpbGUgKG11dGV4LT5sb2NrZWQpIHsKKyAgICAgICAgICAgIGlmIChQeUNPTkRfV0FJVCgmbXV0ZXgtPmN2LCAmbXV0ZXgtPmNzKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IFdBSVRfRkFJTEVEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIGlmIChtaWxsaXNlY29uZHMgIT0gMCkgeworICAgICAgICAvKiB3YWl0IGF0IGxlYXN0IHVudGlsIHRoZSB0YXJnZXQgKi8KKyAgICAgICAgRFdPUkQgbm93LCB0YXJnZXQgPSBHZXRUaWNrQ291bnQoKSArIG1pbGxpc2Vjb25kczsKKyAgICAgICAgd2hpbGUgKG11dGV4LT5sb2NrZWQpIHsKKyAgICAgICAgICAgIGlmIChQeUNPTkRfVElNRURXQUlUKCZtdXRleC0+Y3YsICZtdXRleC0+Y3MsIG1pbGxpc2Vjb25kcyoxMDAwKSA8IDApIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBXQUlUX0ZBSUxFRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5vdyA9IEdldFRpY2tDb3VudCgpOworICAgICAgICAgICAgaWYgKHRhcmdldCA8PSBub3cpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBtaWxsaXNlY29uZHMgPSB0YXJnZXQtbm93OworICAgICAgICB9CisgICAgfQorICAgIGlmICghbXV0ZXgtPmxvY2tlZCkgeworICAgICAgICBtdXRleC0+bG9ja2VkID0gMTsKKyAgICAgICAgcmVzdWx0ID0gV0FJVF9PQkpFQ1RfMDsKKyAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBXQUlUX09CSkVDVF8wKQorICAgICAgICByZXN1bHQgPSBXQUlUX1RJTUVPVVQ7CisgICAgLyogZWxzZSwgaXQgaXMgV0FJVF9GQUlMRUQgKi8KKyAgICBQeU1VVEVYX1VOTE9DSygmbXV0ZXgtPmNzKTsgLyogbXVzdCBpZ25vcmUgcmVzdWx0IGhlcmUgKi8KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitCT09MCitMZWF2ZU5vblJlY3Vyc2l2ZU11dGV4KFBOUk1VVEVYIG11dGV4KQoreworICAgIEJPT0wgcmVzdWx0OworICAgIGlmIChQeU1VVEVYX0xPQ0soJm11dGV4LT5jcykpCisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICBtdXRleC0+bG9ja2VkID0gMDsKKyAgICByZXN1bHQgPSBQeUNPTkRfU0lHTkFMKCZtdXRleC0+Y3YpOworICAgIHJlc3VsdCAmPSBQeU1VVEVYX1VOTE9DSygmbXV0ZXgtPmNzKTsKKyAgICByZXR1cm4gcmVzdWx0OworfSAgICAKKworI2Vsc2UgLyogaWYgISBfUFlfVVNFX0NWX0xPQ0tTICovCisKKy8qIE5SLWxvY2tzIGJhc2VkIG9uIGEga2VybmVsIG11dGV4ICovCiAjZGVmaW5lIFBOUk1VVEVYIEhBTkRMRQogCiBQTlJNVVRFWApAQCAtMzUsNiArMTM4LDcgQEAKIHsKICAgICByZXR1cm4gUmVsZWFzZVNlbWFwaG9yZShtdXRleCwgMSwgTlVMTCk7CiB9CisjZW5kaWYgLyogX1BZX1VTRV9DVl9MT0NLUyAqLwogCiBsb25nIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQodm9pZCk7CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfcHRoLmggYi9QeXRob24vdGhyZWFkX3B0aC5oCmluZGV4IDgyYTAwZTcuLjU3MDQyNjYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi90aHJlYWRfcHRoLmgKKysrIGIvUHl0aG9uL3RocmVhZF9wdGguaApAQCAtNjksOSArNjksOCBAQAogICAgIHZvbGF0aWxlIHB0aF90IHRocmVhZGlkOwogICAgIGlmICghaW5pdGlhbGl6ZWQpCiAgICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0gICAgLyogSnVtcCB0aHJvdWdoIHNvbWUgaG9vcHMgZm9yIEFscGhhIE9TRi8xICovCiAgICAgdGhyZWFkaWQgPSBwdGhfc2VsZigpOwotICAgIHJldHVybiAobG9uZykgKihsb25nICopICZ0aHJlYWRpZDsKKyAgICByZXR1cm4gKGxvbmcpIHRocmVhZGlkOwogfQogCiB2b2lkIFB5VGhyZWFkX2V4aXRfdGhyZWFkKHZvaWQpCmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX3B0aHJlYWQuaCBiL1B5dGhvbi90aHJlYWRfcHRocmVhZC5oCmluZGV4IGRlNDJmMWEuLjQ5NzEzY2UgMTAwNjQ0Ci0tLSBhL1B5dGhvbi90aHJlYWRfcHRocmVhZC5oCisrKyBiL1B5dGhvbi90aHJlYWRfcHRocmVhZC5oCkBAIC0xNDgsNyArMTQ4LDcgQEAKICAqIEluaXRpYWxpemF0aW9uLgogICovCiAKLSNpZmRlZiBfSEFWRV9CU0RJCisjaWYgZGVmaW5lZChfSEFWRV9CU0RJKQogc3RhdGljCiB2b2lkIF9ub29wKHZvaWQpCiB7CkBAIC0yNDQsOCArMjQ0LDcgQEAKICAgIGhvc2VkIiBiZWNhdXNlOgogICAgICAtIEl0IGRvZXMgbm90IGd1YXJhbnRlZSB0aGUgcHJvbWlzZSB0aGF0IGEgbm9uLXplcm8gaW50ZWdlciBpcyByZXR1cm5lZC4KICAgICAgLSBUaGUgY2FzdCB0byBsb25nIGlzIGluaGVyZW50bHkgdW5zYWZlLgotICAgICAtIEl0IGlzIG5vdCBjbGVhciB0aGF0IHRoZSAndm9sYXRpbGUnIChmb3IgQUlYPykgYW5kIHVnbHkgY2FzdGluZyBpbiB0aGUKLSAgICAgICBsYXR0ZXIgcmV0dXJuIHN0YXRlbWVudCAoZm9yIEFscGhhIE9TRi8xKSBhcmUgYW55IGxvbmdlciBuZWNlc3NhcnkuCisgICAgIC0gSXQgaXMgbm90IGNsZWFyIHRoYXQgdGhlICd2b2xhdGlsZScgKGZvciBBSVg/KSBhcmUgYW55IGxvbmdlciBuZWNlc3NhcnkuCiAqLwogbG9uZwogUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCh2b2lkKQpAQCAtMjUzLDEzICsyNTIsOCBAQAogICAgIHZvbGF0aWxlIHB0aHJlYWRfdCB0aHJlYWRpZDsKICAgICBpZiAoIWluaXRpYWxpemVkKQogICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotICAgIC8qIEp1bXAgdGhyb3VnaCBzb21lIGhvb3BzIGZvciBBbHBoYSBPU0YvMSAqLwogICAgIHRocmVhZGlkID0gcHRocmVhZF9zZWxmKCk7Ci0jaWYgU0laRU9GX1BUSFJFQURfVCA8PSBTSVpFT0ZfTE9ORwogICAgIHJldHVybiAobG9uZykgdGhyZWFkaWQ7Ci0jZWxzZQotICAgIHJldHVybiAobG9uZykgKihsb25nICopICZ0aHJlYWRpZDsKLSNlbmRpZgogfQogCiB2b2lkCkBAIC00NTIsMTIgKzQ0NiwxNSBAQAogCiAgICAgZHByaW50ZigoIlB5VGhyZWFkX2ZyZWVfbG9jayglcCkgY2FsbGVkXG4iLCBsb2NrKSk7CiAKLSAgICBzdGF0dXMgPSBwdGhyZWFkX211dGV4X2Rlc3Ryb3koICZ0aGVsb2NrLT5tdXQgKTsKLSAgICBDSEVDS19TVEFUVVMoInB0aHJlYWRfbXV0ZXhfZGVzdHJveSIpOwotCisgICAgLyogc29tZSBwdGhyZWFkLWxpa2UgaW1wbGVtZW50YXRpb25zIHRpZSB0aGUgbXV0ZXggdG8gdGhlIGNvbmQKKyAgICAgKiBhbmQgbXVzdCBoYXZlIHRoZSBjb25kIGRlc3Ryb3llZCBmaXJzdC4KKyAgICAgKi8KICAgICBzdGF0dXMgPSBwdGhyZWFkX2NvbmRfZGVzdHJveSggJnRoZWxvY2stPmxvY2tfcmVsZWFzZWQgKTsKICAgICBDSEVDS19TVEFUVVMoInB0aHJlYWRfY29uZF9kZXN0cm95Iik7CiAKKyAgICBzdGF0dXMgPSBwdGhyZWFkX211dGV4X2Rlc3Ryb3koICZ0aGVsb2NrLT5tdXQgKTsKKyAgICBDSEVDS19TVEFUVVMoInB0aHJlYWRfbXV0ZXhfZGVzdHJveSIpOworCiAgICAgZnJlZSgodm9pZCAqKXRoZWxvY2spOwogfQogCkBAIC01NDAsMTIgKzUzNywxMiBAQAogCiAgICAgdGhlbG9jay0+bG9ja2VkID0gMDsKIAotICAgIHN0YXR1cyA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCAmdGhlbG9jay0+bXV0ICk7Ci0gICAgQ0hFQ0tfU1RBVFVTKCJwdGhyZWFkX211dGV4X3VubG9ja1szXSIpOwotCiAgICAgLyogd2FrZSB1cCBzb21lb25lIChhbnlvbmUsIGlmIGFueSkgd2FpdGluZyBvbiB0aGUgbG9jayAqLwogICAgIHN0YXR1cyA9IHB0aHJlYWRfY29uZF9zaWduYWwoICZ0aGVsb2NrLT5sb2NrX3JlbGVhc2VkICk7CiAgICAgQ0hFQ0tfU1RBVFVTKCJwdGhyZWFkX2NvbmRfc2lnbmFsIik7CisKKyAgICBzdGF0dXMgPSBwdGhyZWFkX211dGV4X3VubG9jayggJnRoZWxvY2stPm11dCApOworICAgIENIRUNLX1NUQVRVUygicHRocmVhZF9tdXRleF91bmxvY2tbM10iKTsKIH0KIAogI2VuZGlmIC8qIFVTRV9TRU1BUEhPUkVTICovCmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX3NnaS5oIGIvUHl0aG9uL3RocmVhZF9zZ2kuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzcxYWIyYy4uMDAwMDAwMAotLS0gYS9QeXRob24vdGhyZWFkX3NnaS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjU5ICswLDAgQEAKLQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3dhaXQuaD4KLSNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KLSNpbmNsdWRlIDx1bG9ja3MuaD4KLSNpbmNsdWRlIDxlcnJuby5oPgotCi0jZGVmaW5lIEhEUl9TSVpFICAgICAgICAyNjgwICAgIC8qIHNpemVvZih1c2hkcl90KSAqLwotI2RlZmluZSBNQVhQUk9DICAgICAgICAgMTAwICAgICAvKiBtYXggIyBvZiB0aHJlYWRzIHRoYXQgY2FuIGJlIHN0YXJ0ZWQgKi8KLQotc3RhdGljIHVzcHRyX3QgKnNoYXJlZF9hcmVuYTsKLXN0YXRpYyB1bG9ja190IGNvdW50X2xvY2s7ICAgICAgLyogcHJvdGVjdGlvbiBmb3Igc29tZSB2YXJpYWJsZXMgKi8KLXN0YXRpYyB1bG9ja190IHdhaXRfbG9jazsgICAgICAgLyogbG9jayB1c2VkIHRvIHdhaXQgZm9yIG90aGVyIHRocmVhZHMgKi8KLXN0YXRpYyBpbnQgd2FpdGluZ19mb3JfdGhyZWFkczsgLyogcHJvdGVjdGVkIGJ5IGNvdW50X2xvY2sgKi8KLXN0YXRpYyBpbnQgbnRocmVhZHM7ICAgICAgICAgICAgLyogcHJvdGVjdGVkIGJ5IGNvdW50X2xvY2sgKi8KLXN0YXRpYyBpbnQgZXhpdF9zdGF0dXM7Ci1zdGF0aWMgaW50IGV4aXRpbmc7ICAgICAgICAgICAgIC8qIHdlJ3JlIGFscmVhZHkgZXhpdGluZyAoZm9yIG1heWJlX2V4aXQpICovCi1zdGF0aWMgcGlkX3QgbXlfcGlkOyAgICAgICAgICAgIC8qIFBJRCBvZiBtYWluIHRocmVhZCAqLwotc3RhdGljIHN0cnVjdCBwaWRsaXN0IHsKLSAgICBwaWRfdCBwYXJlbnQ7Ci0gICAgcGlkX3QgY2hpbGQ7Ci19IHBpZGxpc3RbTUFYUFJPQ107ICAgICAvKiBQSURzIG9mIG90aGVyIHRocmVhZHM7IHByb3RlY3RlZCBieSBjb3VudF9sb2NrICovCi1zdGF0aWMgaW50IG1heHBpZGluZGV4OyAgICAgICAgIC8qICMgb2YgUElEcyBpbiBwaWRsaXN0ICovCi0vKgotICogSW5pdGlhbGl6YXRpb24uCi0gKi8KLXN0YXRpYyB2b2lkIFB5VGhyZWFkX19pbml0X3RocmVhZCh2b2lkKQotewotI2lmZGVmIFVTRV9ETAotICAgIGxvbmcgYWRkciwgc2l6ZTsKLSNlbmRpZiAvKiBVU0VfREwgKi8KLQotCi0jaWZkZWYgVVNFX0RMCi0gICAgaWYgKChzaXplID0gdXNjb25maWcoQ09ORl9JTklUU0laRSwgNjQqMTAyNCkpIDwgMCkKLSAgICAgICAgcGVycm9yKCJ1c2NvbmZpZyAtIENPTkZfSU5JVFNJWkUgKGNoZWNrKSIpOwotICAgIGlmICh1c2NvbmZpZyhDT05GX0lOSVRTSVpFLCBzaXplKSA8IDApCi0gICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0lOSVRTSVpFIChyZXNldCkiKTsKLSAgICBhZGRyID0gKGxvbmcpIGRsX2dldHJhbmdlKHNpemUgKyBIRFJfU0laRSk7Ci0gICAgZHByaW50ZigoInRyeWluZyB0byB1c2UgYWRkciAlcC0lcCBmb3Igc2hhcmVkIGFyZW5hXG4iLCBhZGRyLCBhZGRyK3NpemUpKTsKLSAgICBlcnJubyA9IDA7Ci0gICAgaWYgKChhZGRyID0gdXNjb25maWcoQ09ORl9BVFRBQ0hBRERSLCBhZGRyKSkgPCAwICYmIGVycm5vICE9IDApCi0gICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0FUVEFDSEFERFIgKHNldCkiKTsKLSNlbmRpZiAvKiBVU0VfREwgKi8KLSAgICBpZiAodXNjb25maWcoQ09ORl9JTklUVVNFUlMsIDE2KSA8IDApCi0gICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0lOSVRVU0VSUyIpOwotICAgIG15X3BpZCA9IGdldHBpZCgpOyAgICAgICAgICAvKiBzbyB0aGF0IHdlIGtub3cgd2hpY2ggaXMgdGhlIG1haW4gdGhyZWFkICovCi0gICAgaWYgKHVzY29uZmlnKENPTkZfQVJFTkFUWVBFLCBVU19TSEFSRURPTkxZKSA8IDApCi0gICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0FSRU5BVFlQRSIpOwotICAgIHVzY29uZmlnKENPTkZfTE9DS1RZUEUsIFVTX0RFQlVHKTsgLyogWFhYICovCi0jaWZkZWYgUHlfREVCVUcKLSAgICBpZiAodGhyZWFkX2RlYnVnICYgNCkKLSAgICAgICAgdXNjb25maWcoQ09ORl9MT0NLVFlQRSwgVVNfREVCVUdQTFVTKTsKLSAgICBlbHNlIGlmICh0aHJlYWRfZGVidWcgJiAyKQotICAgICAgICB1c2NvbmZpZyhDT05GX0xPQ0tUWVBFLCBVU19ERUJVRyk7Ci0jZW5kaWYgLyogUHlfREVCVUcgKi8KLSAgICBpZiAoKHNoYXJlZF9hcmVuYSA9IHVzaW5pdCh0bXBuYW0oMCkpKSA9PSAwKQotICAgICAgICBwZXJyb3IoInVzaW5pdCIpOwotI2lmZGVmIFVTRV9ETAotICAgIGlmICh1c2NvbmZpZyhDT05GX0FUVEFDSEFERFIsIGFkZHIpIDwgMCkgLyogcmVzZXQgYWRkcmVzcyAqLwotICAgICAgICBwZXJyb3IoInVzY29uZmlnIC0gQ09ORl9BVFRBQ0hBRERSIChyZXNldCkiKTsKLSNlbmRpZiAvKiBVU0VfREwgKi8KLSAgICBpZiAoKGNvdW50X2xvY2sgPSB1c25ld2xvY2soc2hhcmVkX2FyZW5hKSkgPT0gTlVMTCkKLSAgICAgICAgcGVycm9yKCJ1c25ld2xvY2sgKGNvdW50X2xvY2spIik7Ci0gICAgKHZvaWQpIHVzaW5pdGxvY2soY291bnRfbG9jayk7Ci0gICAgaWYgKCh3YWl0X2xvY2sgPSB1c25ld2xvY2soc2hhcmVkX2FyZW5hKSkgPT0gTlVMTCkKLSAgICAgICAgcGVycm9yKCJ1c25ld2xvY2sgKHdhaXRfbG9jaykiKTsKLSAgICBkcHJpbnRmKCgiYXJlbmEgc3RhcnQ6ICVwLCBhcmVuYSBzaXplOiAlbGRcbiIsICBzaGFyZWRfYXJlbmEsIChsb25nKSB1c2NvbmZpZyhDT05GX0dFVFNJWkUsIHNoYXJlZF9hcmVuYSkpKTsKLX0KLQotLyoKLSAqIFRocmVhZCBzdXBwb3J0LgotICovCi0KLXN0YXRpYyB2b2lkIGNsZWFuX3RocmVhZHModm9pZCkKLXsKLSAgICBpbnQgaSwgajsKLSAgICBwaWRfdCBteXBpZCwgcGlkOwotCi0gICAgLyogY2xlYW4gdXAgYW55IGV4aXRlZCB0aHJlYWRzICovCi0gICAgbXlwaWQgPSBnZXRwaWQoKTsKLSAgICBpID0gMDsKLSAgICB3aGlsZSAoaSA8IG1heHBpZGluZGV4KSB7Ci0gICAgICAgIGlmIChwaWRsaXN0W2ldLnBhcmVudCA9PSBteXBpZCAmJiAocGlkID0gcGlkbGlzdFtpXS5jaGlsZCkgPiAwKSB7Ci0gICAgICAgICAgICBwaWQgPSB3YWl0cGlkKHBpZCwgMCwgV05PSEFORyk7Ci0gICAgICAgICAgICBpZiAocGlkID4gMCkgewotICAgICAgICAgICAgICAgIC8qIGEgdGhyZWFkIGhhcyBleGl0ZWQgKi8KLSAgICAgICAgICAgICAgICBwaWRsaXN0W2ldID0gcGlkbGlzdFstLW1heHBpZGluZGV4XTsKLSAgICAgICAgICAgICAgICAvKiByZW1vdmUgcmVmZXJlbmNlcyB0byBjaGlsZHJlbiBvZiBkZWFkIHByb2MgKi8KLSAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbWF4cGlkaW5kZXg7IGorKykKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBpZGxpc3Rbal0ucGFyZW50ID09IHBpZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBpZGxpc3Rbal0uY2hpbGQgPSAtMTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsgLyogZG9uJ3QgaW5jcmVtZW50IGkgKi8KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpKys7Ci0gICAgfQotICAgIC8qIGNsZWFuIHVwIHRoZSBsaXN0ICovCi0gICAgaSA9IDA7Ci0gICAgd2hpbGUgKGkgPCBtYXhwaWRpbmRleCkgewotICAgICAgICBpZiAocGlkbGlzdFtpXS5jaGlsZCA9PSAtMSkgewotICAgICAgICAgICAgcGlkbGlzdFtpXSA9IHBpZGxpc3RbLS1tYXhwaWRpbmRleF07Ci0gICAgICAgICAgICBjb250aW51ZTsgLyogZG9uJ3QgaW5jcmVtZW50IGkgKi8KLSAgICAgICAgfQotICAgICAgICBpKys7Ci0gICAgfQotfQotCi1sb25nIFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQodm9pZCAoKmZ1bmMpKHZvaWQgKiksIHZvaWQgKmFyZykKLXsKLSNpZmRlZiBVU0VfREwKLSAgICBsb25nIGFkZHIsIHNpemU7Ci0gICAgc3RhdGljIGludCBsb2NhbF9pbml0aWFsaXplZCA9IDA7Ci0jZW5kaWYgLyogVVNFX0RMICovCi0gICAgaW50IHN1Y2Nlc3MgPSAwOyAgICAgICAgICAgIC8qIGluaXQgbm90IG5lZWRlZCB3aGVuIFNPTEFSSVNfVEhSRUFEUyBhbmQgKi8KLSAgICAgICAgICAgICAgICAvKiBDX1RIUkVBRFMgaW1wbGVtZW50ZWQgcHJvcGVybHkgKi8KLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0gICAgc3dpdGNoICh1c3NldGxvY2soY291bnRfbG9jaykpIHsKLSAgICBjYXNlIDA6IHJldHVybiAwOwotICAgIGNhc2UgLTE6IHBlcnJvcigidXNzZXRsb2NrIChjb3VudF9sb2NrKSIpOwotICAgIH0KLSAgICBpZiAobWF4cGlkaW5kZXggPj0gTUFYUFJPQykKLSAgICAgICAgc3VjY2VzcyA9IC0xOwotICAgIGVsc2UgewotI2lmZGVmIFVTRV9ETAotICAgICAgICBpZiAoIWxvY2FsX2luaXRpYWxpemVkKSB7Ci0gICAgICAgICAgICBpZiAoKHNpemUgPSB1c2NvbmZpZyhDT05GX0lOSVRTSVpFLCA2NCoxMDI0KSkgPCAwKQotICAgICAgICAgICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0lOSVRTSVpFIChjaGVjaykiKTsKLSAgICAgICAgICAgIGlmICh1c2NvbmZpZyhDT05GX0lOSVRTSVpFLCBzaXplKSA8IDApCi0gICAgICAgICAgICAgICAgcGVycm9yKCJ1c2NvbmZpZyAtIENPTkZfSU5JVFNJWkUgKHJlc2V0KSIpOwotICAgICAgICAgICAgYWRkciA9IChsb25nKSBkbF9nZXRyYW5nZShzaXplICsgSERSX1NJWkUpOwotICAgICAgICAgICAgZHByaW50ZigoInRyeWluZyB0byB1c2UgYWRkciAlcC0lcCBmb3Igc3Byb2NcbiIsCi0gICAgICAgICAgICAgICAgICAgICBhZGRyLCBhZGRyK3NpemUpKTsKLSAgICAgICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgICAgIGlmICgoYWRkciA9IHVzY29uZmlnKENPTkZfQVRUQUNIQUREUiwgYWRkcikpIDwgMCAmJgotICAgICAgICAgICAgICAgIGVycm5vICE9IDApCi0gICAgICAgICAgICAgICAgcGVycm9yKCJ1c2NvbmZpZyAtIENPTkZfQVRUQUNIQUREUiAoc2V0KSIpOwotICAgICAgICB9Ci0jZW5kaWYgLyogVVNFX0RMICovCi0gICAgICAgIGNsZWFuX3RocmVhZHMoKTsKLSAgICAgICAgaWYgKChzdWNjZXNzID0gc3Byb2MoZnVuYywgUFJfU0FMTCwgYXJnKSkgPCAwKQotICAgICAgICAgICAgcGVycm9yKCJzcHJvYyIpOwotI2lmZGVmIFVTRV9ETAotICAgICAgICBpZiAoIWxvY2FsX2luaXRpYWxpemVkKSB7Ci0gICAgICAgICAgICBpZiAodXNjb25maWcoQ09ORl9BVFRBQ0hBRERSLCBhZGRyKSA8IDApCi0gICAgICAgICAgICAgICAgLyogcmVzZXQgYWRkcmVzcyAqLwotICAgICAgICAgICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0FUVEFDSEFERFIgKHJlc2V0KSIpOwotICAgICAgICAgICAgbG9jYWxfaW5pdGlhbGl6ZWQgPSAxOwotICAgICAgICB9Ci0jZW5kaWYgLyogVVNFX0RMICovCi0gICAgICAgIGlmIChzdWNjZXNzID49IDApIHsKLSAgICAgICAgICAgIG50aHJlYWRzKys7Ci0gICAgICAgICAgICBwaWRsaXN0W21heHBpZGluZGV4XS5wYXJlbnQgPSBnZXRwaWQoKTsKLSAgICAgICAgICAgIHBpZGxpc3RbbWF4cGlkaW5kZXgrK10uY2hpbGQgPSBzdWNjZXNzOwotICAgICAgICAgICAgZHByaW50ZigoInBpZGxpc3RbJWRdID0gJWRcbiIsCi0gICAgICAgICAgICAgICAgICAgICBtYXhwaWRpbmRleC0xLCBzdWNjZXNzKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHVzdW5zZXRsb2NrKGNvdW50X2xvY2spIDwgMCkKLSAgICAgICAgcGVycm9yKCJ1c3Vuc2V0bG9jayAoY291bnRfbG9jaykiKTsKLSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotbG9uZyBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KHZvaWQpCi17Ci0gICAgcmV0dXJuIGdldHBpZCgpOwotfQotCi12b2lkIFB5VGhyZWFkX2V4aXRfdGhyZWFkKHZvaWQpCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2V4aXRfdGhyZWFkIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIGV4aXQoMCk7Ci0gICAgaWYgKHVzc2V0bG9jayhjb3VudF9sb2NrKSA8IDApCi0gICAgICAgIHBlcnJvcigidXNzZXRsb2NrIChjb3VudF9sb2NrKSIpOwotICAgIG50aHJlYWRzLS07Ci0gICAgaWYgKGdldHBpZCgpID09IG15X3BpZCkgewotICAgICAgICAvKiBtYWluIHRocmVhZDsgd2FpdCBmb3Igb3RoZXIgdGhyZWFkcyB0byBleGl0ICovCi0gICAgICAgIGV4aXRpbmcgPSAxOwotICAgICAgICB3YWl0aW5nX2Zvcl90aHJlYWRzID0gMTsKLSAgICAgICAgaWYgKHVzc2V0bG9jayh3YWl0X2xvY2spIDwgMCkKLSAgICAgICAgICAgIHBlcnJvcigidXNzZXRsb2NrICh3YWl0X2xvY2spIik7Ci0gICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgIGlmIChudGhyZWFkcyA8IDApIHsKLSAgICAgICAgICAgICAgICBkcHJpbnRmKCgicmVhbGx5IGV4aXQgKCVkKVxuIiwgZXhpdF9zdGF0dXMpKTsKLSAgICAgICAgICAgICAgICBleGl0KGV4aXRfc3RhdHVzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh1c3Vuc2V0bG9jayhjb3VudF9sb2NrKSA8IDApCi0gICAgICAgICAgICAgICAgcGVycm9yKCJ1c3Vuc2V0bG9jayAoY291bnRfbG9jaykiKTsKLSAgICAgICAgICAgIGRwcmludGYoKCJ3YWl0aW5nIGZvciBvdGhlciB0aHJlYWRzICglZClcbiIsIG50aHJlYWRzKSk7Ci0gICAgICAgICAgICBpZiAodXNzZXRsb2NrKHdhaXRfbG9jaykgPCAwKQotICAgICAgICAgICAgICAgIHBlcnJvcigidXNzZXRsb2NrICh3YWl0X2xvY2spIik7Ci0gICAgICAgICAgICBpZiAodXNzZXRsb2NrKGNvdW50X2xvY2spIDwgMCkKLSAgICAgICAgICAgICAgICBwZXJyb3IoInVzc2V0bG9jayAoY291bnRfbG9jaykiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAvKiBub3QgdGhlIG1haW4gdGhyZWFkICovCi0gICAgaWYgKHdhaXRpbmdfZm9yX3RocmVhZHMpIHsKLSAgICAgICAgZHByaW50ZigoIm1haW4gdGhyZWFkIGlzIHdhaXRpbmdcbiIpKTsKLSAgICAgICAgaWYgKHVzdW5zZXRsb2NrKHdhaXRfbG9jaykgPCAwKQotICAgICAgICAgICAgcGVycm9yKCJ1c3Vuc2V0bG9jayAod2FpdF9sb2NrKSIpOwotICAgIH0KLSAgICBpZiAodXN1bnNldGxvY2soY291bnRfbG9jaykgPCAwKQotICAgICAgICBwZXJyb3IoInVzdW5zZXRsb2NrIChjb3VudF9sb2NrKSIpOwotICAgIF9leGl0KDApOwotfQotCi0vKgotICogTG9jayBzdXBwb3J0LgotICovCi1QeVRocmVhZF90eXBlX2xvY2sgUHlUaHJlYWRfYWxsb2NhdGVfbG9jayh2b2lkKQotewotICAgIHVsb2NrX3QgbG9jazsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0KLSAgICBpZiAoKGxvY2sgPSB1c25ld2xvY2soc2hhcmVkX2FyZW5hKSkgPT0gTlVMTCkKLSAgICAgICAgcGVycm9yKCJ1c25ld2xvY2siKTsKLSAgICAodm9pZCkgdXNpbml0bG9jayhsb2NrKTsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpIC0+ICVwXG4iLCBsb2NrKSk7Ci0gICAgcmV0dXJuIChQeVRocmVhZF90eXBlX2xvY2spIGxvY2s7Ci19Ci0KLXZvaWQgUHlUaHJlYWRfZnJlZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9mcmVlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwotICAgIHVzZnJlZWxvY2soKHVsb2NrX3QpIGxvY2ssIHNoYXJlZF9hcmVuYSk7Ci19Ci0KLWludCBQeVRocmVhZF9hY3F1aXJlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2ssIGludCB3YWl0ZmxhZykKLXsKLSAgICBpbnQgc3VjY2VzczsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSBjYWxsZWRcbiIsIGxvY2ssIHdhaXRmbGFnKSk7Ci0gICAgZXJybm8gPSAwOyAgICAgICAgICAgICAgICAgIC8qIGNsZWFyIGl0IGp1c3QgaW4gY2FzZSAqLwotICAgIGlmICh3YWl0ZmxhZykKLSAgICAgICAgc3VjY2VzcyA9IHVzc2V0bG9jaygodWxvY2tfdCkgbG9jayk7Ci0gICAgZWxzZQotICAgICAgICBzdWNjZXNzID0gdXNjc2V0bG9jaygodWxvY2tfdCkgbG9jaywgMSk7IC8qIFRyeSBpdCBvbmNlICovCi0gICAgaWYgKHN1Y2Nlc3MgPCAwKQotICAgICAgICBwZXJyb3Iod2FpdGZsYWcgPyAidXNzZXRsb2NrIiA6ICJ1c2NzZXRsb2NrIik7Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIC0+ICVkXG4iLCBsb2NrLCB3YWl0ZmxhZywgc3VjY2VzcykpOwotICAgIHJldHVybiBzdWNjZXNzOwotfQotCi12b2lkIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaykKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfcmVsZWFzZV9sb2NrKCVwKSBjYWxsZWRcbiIsIGxvY2spKTsKLSAgICBpZiAodXN1bnNldGxvY2soKHVsb2NrX3QpIGxvY2spIDwgMCkKLSAgICAgICAgcGVycm9yKCJ1c3Vuc2V0bG9jayIpOwotfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF9zb2xhcmlzLmggYi9QeXRob24vdGhyZWFkX3NvbGFyaXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWNlMWNmYy4uMDAwMDAwMAotLS0gYS9QeXRob24vdGhyZWFkX3NvbGFyaXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPGVycm5vLmg+Ci0jaW5jbHVkZSA8L3Vzci9pbmNsdWRlL3RocmVhZC5oPgotI3VuZGVmIF9QT1NJWF9USFJFQURTCi0KLQotLyoKLSAqIEluaXRpYWxpemF0aW9uLgotICovCi1zdGF0aWMgdm9pZCBQeVRocmVhZF9faW5pdF90aHJlYWQodm9pZCkKLXsKLX0KLQotLyoKLSAqIFRocmVhZCBzdXBwb3J0LgotICovCi1zdHJ1Y3QgZnVuY19hcmcgewotICAgIHZvaWQgKCpmdW5jKSh2b2lkICopOwotICAgIHZvaWQgKmFyZzsKLX07Ci0KLXN0YXRpYyB2b2lkICoKLW5ld19mdW5jKHZvaWQgKmZ1bmNhcmcpCi17Ci0gICAgdm9pZCAoKmZ1bmMpKHZvaWQgKik7Ci0gICAgdm9pZCAqYXJnOwotCi0gICAgZnVuYyA9ICgoc3RydWN0IGZ1bmNfYXJnICopIGZ1bmNhcmcpLT5mdW5jOwotICAgIGFyZyA9ICgoc3RydWN0IGZ1bmNfYXJnICopIGZ1bmNhcmcpLT5hcmc7Ci0gICAgZnJlZShmdW5jYXJnKTsKLSAgICAoKmZ1bmMpKGFyZyk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLQotbG9uZwotUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCh2b2lkICgqZnVuYykodm9pZCAqKSwgdm9pZCAqYXJnKQotewotICAgIHRocmVhZF90IHRpZDsKLSAgICBzdHJ1Y3QgZnVuY19hcmcgKmZ1bmNhcmc7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotICAgIGZ1bmNhcmcgPSAoc3RydWN0IGZ1bmNfYXJnICopIG1hbGxvYyhzaXplb2Yoc3RydWN0IGZ1bmNfYXJnKSk7Ci0gICAgZnVuY2FyZy0+ZnVuYyA9IGZ1bmM7Ci0gICAgZnVuY2FyZy0+YXJnID0gYXJnOwotICAgIGlmICh0aHJfY3JlYXRlKDAsIDAsIG5ld19mdW5jLCBmdW5jYXJnLAotICAgICAgICAgICAgICAgICAgIFRIUl9ERVRBQ0hFRCB8IFRIUl9ORVdfTFdQLCAmdGlkKSkgewotICAgICAgICBwZXJyb3IoInRocl9jcmVhdGUiKTsKLSAgICAgICAgZnJlZSgodm9pZCAqKSBmdW5jYXJnKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICByZXR1cm4gdGlkOwotfQotCi1sb25nCi1QeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KHZvaWQpCi17Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLSAgICByZXR1cm4gdGhyX3NlbGYoKTsKLX0KLQotdm9pZAotUHlUaHJlYWRfZXhpdF90aHJlYWQodm9pZCkKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfZXhpdF90aHJlYWQgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgZXhpdCgwKTsKLSAgICB0aHJfZXhpdCgwKTsKLX0KLQotLyoKLSAqIExvY2sgc3VwcG9ydC4KLSAqLwotUHlUaHJlYWRfdHlwZV9sb2NrCi1QeVRocmVhZF9hbGxvY2F0ZV9sb2NrKHZvaWQpCi17Ci0gICAgbXV0ZXhfdCAqbG9jazsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0KLSAgICBsb2NrID0gKG11dGV4X3QgKikgbWFsbG9jKHNpemVvZihtdXRleF90KSk7Ci0gICAgaWYgKG11dGV4X2luaXQobG9jaywgVVNZTkNfVEhSRUFELCAwKSkgewotICAgICAgICBwZXJyb3IoIm11dGV4X2luaXQiKTsKLSAgICAgICAgZnJlZSgodm9pZCAqKSBsb2NrKTsKLSAgICAgICAgbG9jayA9IDA7Ci0gICAgfQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCkgLT4gJXBcbiIsIGxvY2spKTsKLSAgICByZXR1cm4gKFB5VGhyZWFkX3R5cGVfbG9jaykgbG9jazsKLX0KLQotdm9pZAotUHlUaHJlYWRfZnJlZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9mcmVlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwotICAgIG11dGV4X2Rlc3Ryb3koKG11dGV4X3QgKikgbG9jayk7Ci0gICAgZnJlZSgodm9pZCAqKSBsb2NrKTsKLX0KLQotaW50Ci1QeVRocmVhZF9hY3F1aXJlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2ssIGludCB3YWl0ZmxhZykKLXsKLSAgICBpbnQgc3VjY2VzczsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSBjYWxsZWRcbiIsIGxvY2ssIHdhaXRmbGFnKSk7Ci0gICAgaWYgKHdhaXRmbGFnKQotICAgICAgICBzdWNjZXNzID0gbXV0ZXhfbG9jaygobXV0ZXhfdCAqKSBsb2NrKTsKLSAgICBlbHNlCi0gICAgICAgIHN1Y2Nlc3MgPSBtdXRleF90cnlsb2NrKChtdXRleF90ICopIGxvY2spOwotICAgIGlmIChzdWNjZXNzIDwgMCkKLSAgICAgICAgcGVycm9yKHdhaXRmbGFnID8gIm11dGV4X2xvY2siIDogIm11dGV4X3RyeWxvY2siKTsKLSAgICBlbHNlCi0gICAgICAgIHN1Y2Nlc3MgPSAhc3VjY2VzczsgLyogc29sYXJpcyBkb2VzIGl0IHRoZSBvdGhlciB3YXkgcm91bmQgKi8KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgLT4gJWRcbiIsIGxvY2ssIHdhaXRmbGFnLCBzdWNjZXNzKSk7Ci0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0KLXZvaWQKLVB5VGhyZWFkX3JlbGVhc2VfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaykKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfcmVsZWFzZV9sb2NrKCVwKSBjYWxsZWRcbiIsIGxvY2spKTsKLSAgICBpZiAobXV0ZXhfdW5sb2NrKChtdXRleF90ICopIGxvY2spKQotICAgICAgICBwZXJyb3IoIm11dGV4X3VubG9jayIpOwotfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF93aW5jZS5oIGIvUHl0aG9uL3RocmVhZF93aW5jZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWRkYzAyLi4wMDAwMDAwCi0tLSBhL1B5dGhvbi90aHJlYWRfd2luY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi0KLS8qIFRoaXMgY29kZSBpbXBsZW1lbnRlZCBieSBNYXJrIEhhbW1vbmQgKE1IYW1tb25kQHNraXBwaW5ldC5jb20uYXUpICovCi0KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8cHlkZWJ1Zy5oPgotCi1sb25nIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQodm9pZCk7Ci0KLS8qCi0gKiBDaGFuZ2UgYWxsIGhlYWRlcnMgdG8gcHVyZSBBTlNJIGFzIG5vIG9uZSB3aWxsIHVzZSBLJlIgc3R5bGUgb24gYW4KLSAqIE5UCi0gKi8KLQotLyoKLSAqIEluaXRpYWxpemF0aW9uIG9mIHRoZSBDIHBhY2thZ2UsIHNob3VsZCBub3QgYmUgbmVlZGVkLgotICovCi1zdGF0aWMgdm9pZCBQeVRocmVhZF9faW5pdF90aHJlYWQodm9pZCkKLXsKLX0KLQotLyoKLSAqIFRocmVhZCBzdXBwb3J0LgotICovCi1sb25nIFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQodm9pZCAoKmZ1bmMpKHZvaWQgKiksIHZvaWQgKmFyZykKLXsKLSAgICBsb25nIHJ2OwotICAgIGludCBzdWNjZXNzID0gLTE7Ci0KLSAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkIGNhbGxlZFxuIiwgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLQotICAgIHJ2ID0gX2JlZ2ludGhyZWFkKGZ1bmMsIDAsIGFyZyk7IC8qIHVzZSBkZWZhdWx0IHN0YWNrIHNpemUgKi8KLQotICAgIGlmIChydiAhPSAtMSkgewotICAgICAgICBzdWNjZXNzID0gMDsKLSAgICAgICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCBzdWNjZWVkZWQ6XG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCkpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotLyoKLSAqIFJldHVybiB0aGUgdGhyZWFkIElkIGluc3RlYWQgb2YgYW4gaGFuZGxlLiBUaGUgSWQgaXMgc2FpZCB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUKLSAqIHRocmVhZCBpbiB0aGUgc3lzdGVtCi0gKi8KLWxvbmcgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCh2b2lkKQotewotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0KLSAgICByZXR1cm4gR2V0Q3VycmVudFRocmVhZElkKCk7Ci19Ci0KLXZvaWQgUHlUaHJlYWRfZXhpdF90aHJlYWQodm9pZCkKLXsKLSAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9leGl0X3RocmVhZCBjYWxsZWRcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSkpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIGV4aXQoMCk7Ci0gICAgX2VuZHRocmVhZCgpOwotfQotCi0vKgotICogTG9jayBzdXBwb3J0LiBJdCBoYXMgdG8gYmUgaW1wbGVtZW50ZWQgdXNpbmcgTXV0ZXhlcywgYXMKLSAqIENFIGRvZXNudCBzdXBwb3J0IHNlbWFwaG9yZXMuICBUaGVyZWZvcmUgd2UgdXNlIHNvbWUgaGFja3MgdG8KLSAqIHNpbXVsYXRlIHRoZSBub24gcmVlbnRyYW50IHJlcXVpcmVtZW50cyBvZiBQeXRob24gbG9ja3MKLSAqLwotUHlUaHJlYWRfdHlwZV9sb2NrIFB5VGhyZWFkX2FsbG9jYXRlX2xvY2sodm9pZCkKLXsKLSAgICBIQU5ETEUgYUxvY2s7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWxsb2NhdGVfbG9jayBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0KLSAgICBhTG9jayA9IENyZWF0ZUV2ZW50KE5VTEwsICAgICAgICAgICAvKiBTZWN1cml0eSBhdHRyaWJ1dGVzICAgICAgKi8KLSAgICAgICAgICAgIDAsICAgICAgICAgICAgICAvKiBNYW51YWwtUmVzZXQgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICAgICAgMSwgICAgICAgICAgICAgIC8qIElzIGluaXRpYWxseSBzaWduYWxsZWQgICovCi0gICAgICAgICAgICBOVUxMKTsgICAgICAgICAgLyogTmFtZSBvZiBldmVudCAgICAgICAgICAgICovCi0KLSAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCkgLT4gJXBcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSwgYUxvY2spKTsKLQotICAgIHJldHVybiAoUHlUaHJlYWRfdHlwZV9sb2NrKSBhTG9jazsKLX0KLQotdm9pZCBQeVRocmVhZF9mcmVlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGFMb2NrKQotewotICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX2ZyZWVfbG9jayglcCkgY2FsbGVkXG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksYUxvY2spKTsKLQotICAgIENsb3NlSGFuZGxlKGFMb2NrKTsKLX0KLQotLyoKLSAqIFJldHVybiAxIG9uIHN1Y2Nlc3MgaWYgdGhlIGxvY2sgd2FzIGFjcXVpcmVkCi0gKgotICogYW5kIDAgaWYgdGhlIGxvY2sgd2FzIG5vdCBhY3F1aXJlZC4gVGhpcyBtZWFucyBhIDAgaXMgcmV0dXJuZWQKLSAqIGlmIHRoZSBsb2NrIGhhcyBhbHJlYWR5IGJlZW4gYWNxdWlyZWQgYnkgdGhpcyB0aHJlYWQhCi0gKi8KLWludCBQeVRocmVhZF9hY3F1aXJlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGFMb2NrLCBpbnQgd2FpdGZsYWcpCi17Ci0gICAgaW50IHN1Y2Nlc3MgPSAxOwotICAgIERXT1JEIHdhaXRSZXN1bHQ7Ci0KLSAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSBjYWxsZWRcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSxhTG9jaywgd2FpdGZsYWcpKTsKLQotI2lmbmRlZiBERUJVRwotICAgIHdhaXRSZXN1bHQgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KGFMb2NrLCAod2FpdGZsYWcgPyBJTkZJTklURSA6IDApKTsKLSNlbHNlCi0gICAgLyogVG8gYWlkIGluIGRlYnVnZ2luZywgd2UgcmVndWxhcmx5IHdha2UgdXAuICBUaGlzIGFsbG93cyB1cyB0bwotICAgIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyICovCi0gICAgd2hpbGUgKFRSVUUpIHsKLSAgICAgICAgd2FpdFJlc3VsdCA9IFdhaXRGb3JTaW5nbGVPYmplY3QoYUxvY2ssIHdhaXRmbGFnID8gMzAwMCA6IDApOwotICAgICAgICBpZiAod2FpdGZsYWc9PTAgfHwgKHdhaXRmbGFnICYmIHdhaXRSZXN1bHQgPT0gV0FJVF9PQkpFQ1RfMCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmICh3YWl0UmVzdWx0ICE9IFdBSVRfT0JKRUNUXzApIHsKLSAgICAgICAgICAgICAgICBzdWNjZXNzID0gMDsgICAgLyogV2UgZmFpbGVkICovCi0gICAgfQotCi0gICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgLT4gJWRcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSxhTG9jaywgd2FpdGZsYWcsIHN1Y2Nlc3MpKTsKLQotICAgIHJldHVybiBzdWNjZXNzOwotfQotCi12b2lkIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgYUxvY2spCi17Ci0gICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfcmVsZWFzZV9sb2NrKCVwKSBjYWxsZWRcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSxhTG9jaykpOwotCi0gICAgaWYgKCFTZXRFdmVudChhTG9jaykpCi0gICAgZHByaW50ZigoIiVsZDogQ291bGQgbm90IFB5VGhyZWFkX3JlbGVhc2VfbG9jayglcCkgZXJyb3I6ICVsXG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksIGFMb2NrLCBHZXRMYXN0RXJyb3IoKSkpOwotfQotCi0KZGlmZiAtLWdpdCBhL1B5dGhvbi90cmFjZWJhY2suYyBiL1B5dGhvbi90cmFjZWJhY2suYwppbmRleCA1OWJiM2YwLi5iOTI4OTAyIDEwMDY0NAotLS0gYS9QeXRob24vdHJhY2ViYWNrLmMKKysrIGIvUHl0aG9uL3RyYWNlYmFjay5jCkBAIC0xMyw4ICsxMywxMyBAQAogCiAjZGVmaW5lIE9GRih4KSBvZmZzZXRvZihQeVRyYWNlYmFja09iamVjdCwgeCkKIAotLyogTWV0aG9kIGZyb20gUGFyc2VyL3Rva2VuaXplci5jICovCi1leHRlcm4gY2hhciAqIFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZyhpbnQpOworI2RlZmluZSBQVVRTKGZkLCBzdHIpIHdyaXRlKGZkLCBzdHIsIHN0cmxlbihzdHIpKQorI2RlZmluZSBNQVhfU1RSSU5HX0xFTkdUSCA1MDAKKyNkZWZpbmUgTUFYX0ZSQU1FX0RFUFRIIDEwMAorI2RlZmluZSBNQVhfTlRIUkVBRFMgMTAwCisKKy8qIEZ1bmN0aW9uIGZyb20gUGFyc2VyL3Rva2VuaXplci5jICovCitleHRlcm4gY2hhciAqIFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZ0ZpbGVuYW1lKGludCwgUHlPYmplY3QgKik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0Yl9kaXIoUHlUcmFjZWJhY2tPYmplY3QgKnNlbGYpCkBAIC0xNDcsNiArMTUyLDcgQEAKICAgICBjb25zdCBjaGFyKiBmaWxlcGF0aDsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCogcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKG9wZW4pOwogCiAgICAgZmlsZWJ5dGVzID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChmaWxlbmFtZSk7CiAgICAgaWYgKGZpbGVieXRlcyA9PSBOVUxMKSB7CkBAIC0xOTQsNyArMjAwLDcgQEAKICAgICAgICAgICAgIG5hbWVidWZbbGVuKytdID0gU0VQOwogICAgICAgICBzdHJjcHkobmFtZWJ1ZitsZW4sIHRhaWwpOwogCi0gICAgICAgIGJpbmFyeSA9IFB5T2JqZWN0X0NhbGxNZXRob2QoaW8sICJvcGVuIiwgInNzIiwgbmFtZWJ1ZiwgInJiIik7CisgICAgICAgIGJpbmFyeSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX29wZW4sICJzcyIsIG5hbWVidWYsICJyYiIpOwogICAgICAgICBpZiAoYmluYXJ5ICE9IE5VTEwpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IGJpbmFyeTsKICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKQEAgLTIyNCw4ICsyMzAsMTEgQEAKICAgICBQeU9iamVjdCAqbGluZW9iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBjaGFyIGJ1ZltNQVhQQVRITEVOKzFdOwotICAgIFB5X1VOSUNPREUgKnUsICpwOwotICAgIFB5X3NzaXplX3QgbGVuOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgX1B5X0lERU5USUZJRVIoY2xvc2UpOworICAgIF9QeV9JREVOVElGSUVSKG9wZW4pOworICAgIF9QeV9JREVOVElGSUVSKFRleHRJT1dyYXBwZXIpOwogCiAgICAgLyogb3BlbiB0aGUgZmlsZSAqLwogICAgIGlmIChmaWxlbmFtZSA9PSBOVUxMKQpAQCAtMjM0LDcgKzI0Myw3IEBACiAgICAgaW8gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJpbyIpOwogICAgIGlmIChpbyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgYmluYXJ5ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbywgIm9wZW4iLCAiT3MiLCBmaWxlbmFtZSwgInJiIik7CisgICAgYmluYXJ5ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfb3BlbiwgIk9zIiwgZmlsZW5hbWUsICJyYiIpOwogCiAgICAgaWYgKGJpbmFyeSA9PSBOVUxMKSB7CiAgICAgICAgIGJpbmFyeSA9IF9QeV9GaW5kU291cmNlRmlsZShmaWxlbmFtZSwgYnVmLCBzaXplb2YoYnVmKSwgaW8pOwpAQCAtMjQ2LDEwICsyNTUsMTAgQEAKIAogICAgIC8qIHVzZSB0aGUgcmlnaHQgZW5jb2RpbmcgdG8gZGVjb2RlIHRoZSBmaWxlIGFzIHVuaWNvZGUgKi8KICAgICBmZCA9IFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IoYmluYXJ5KTsKLSAgICBmb3VuZF9lbmNvZGluZyA9IFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZyhmZCk7CisgICAgZm91bmRfZW5jb2RpbmcgPSBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmdGaWxlbmFtZShmZCwgZmlsZW5hbWUpOwogICAgIGVuY29kaW5nID0gKGZvdW5kX2VuY29kaW5nICE9IE5VTEwpID8gZm91bmRfZW5jb2RpbmcgOiAidXRmLTgiOwogICAgIGxzZWVrKGZkLCAwLCAwKTsgLyogUmVzZXQgcG9zaXRpb24gKi8KLSAgICBmb2IgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGlvLCAiVGV4dElPV3JhcHBlciIsICJPcyIsIGJpbmFyeSwgZW5jb2RpbmcpOworICAgIGZvYiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX1RleHRJT1dyYXBwZXIsICJPcyIsIGJpbmFyeSwgZW5jb2RpbmcpOwogICAgIFB5X0RFQ1JFRihpbyk7CiAgICAgUHlfREVDUkVGKGJpbmFyeSk7CiAgICAgUHlNZW1fRlJFRShmb3VuZF9lbmNvZGluZyk7CkBAIC0yNjgsNyArMjc3LDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZm9iLCAiY2xvc2UiLCAiIik7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb2IsICZQeUlkX2Nsb3NlLCAiIik7CiAgICAgaWYgKHJlcykKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgZWxzZQpAQCAtMjgwLDEzICsyODksMTYgQEAKICAgICB9CiAKICAgICAvKiByZW1vdmUgdGhlIGluZGVudGF0aW9uIG9mIHRoZSBsaW5lICovCi0gICAgdSA9IFB5VW5pY29kZV9BU19VTklDT0RFKGxpbmVvYmopOwotICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShsaW5lb2JqKTsKLSAgICBmb3IgKHA9dTsgKnAgPT0gJyAnIHx8ICpwID09ICdcdCcgfHwgKnAgPT0gJ1wwMTQnOyBwKyspCi0gICAgICAgIGxlbi0tOwotICAgIGlmICh1ICE9IHApIHsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQobGluZW9iaik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKGxpbmVvYmopOworICAgIGZvciAoaT0wOyBpIDwgUHlVbmljb2RlX0dFVF9MRU5HVEgobGluZW9iaik7IGkrKykgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIGlmIChjaCAhPSAnICcgJiYgY2ggIT0gJ1x0JyAmJiBjaCAhPSAnXDAxNCcpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKGkpIHsKICAgICAgICAgUHlPYmplY3QgKnRydW5jYXRlZDsKLSAgICAgICAgdHJ1bmNhdGVkID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHAsIGxlbik7CisgICAgICAgIHRydW5jYXRlZCA9IFB5VW5pY29kZV9TdWJzdHJpbmcobGluZW9iaiwgaSwgUHlVbmljb2RlX0dFVF9MRU5HVEgobGluZW9iaikpOwogICAgICAgICBpZiAodHJ1bmNhdGVkKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobGluZW9iaik7CiAgICAgICAgICAgICBsaW5lb2JqID0gdHJ1bmNhdGVkOwpAQCAtMzMyLDcgKzM0NCwxMCBAQAogICAgIFB5X0RFQ1JFRihsaW5lKTsKICAgICBpZiAoZXJyICE9IDApCiAgICAgICAgIHJldHVybiBlcnI7Ci0gICAgcmV0dXJuIF9QeV9EaXNwbGF5U291cmNlTGluZShmLCBmaWxlbmFtZSwgbGluZW5vLCA0KTsKKyAgICAvKiBpZ25vcmUgZXJyb3JzIHNpbmNlIHdlIGNhbid0IHJlcG9ydCB0aGVtLCBjYW4gd2U/ICovCisgICAgaWYgKF9QeV9EaXNwbGF5U291cmNlTGluZShmLCBmaWxlbmFtZSwgbGluZW5vLCA0KSkKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICByZXR1cm4gZXJyOwogfQogCiBzdGF0aWMgaW50CkBAIC00MDIsMyArNDE3LDI1MCBAQAogICAgICAgICBlcnIgPSB0Yl9wcmludGludGVybmFsKChQeVRyYWNlYmFja09iamVjdCAqKXYsIGYsIGxpbWl0KTsKICAgICByZXR1cm4gZXJyOwogfQorCisvKiBSZXZlcnNlIGEgc3RyaW5nLiBGb3IgZXhhbXBsZSwgImFiY2QiIGJlY29tZXMgImRjYmEiLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworCitzdGF0aWMgdm9pZAorcmV2ZXJzZV9zdHJpbmcoY2hhciAqdGV4dCwgY29uc3Qgc2l6ZV90IGxlbikKK3sKKyAgICBjaGFyIHRtcDsKKyAgICBzaXplX3QgaSwgajsKKyAgICBpZiAobGVuID09IDApCisgICAgICAgIHJldHVybjsKKyAgICBmb3IgKGk9MCwgaj1sZW4tMTsgaSA8IGo7IGkrKywgai0tKSB7CisgICAgICAgIHRtcCA9IHRleHRbaV07CisgICAgICAgIHRleHRbaV0gPSB0ZXh0W2pdOworICAgICAgICB0ZXh0W2pdID0gdG1wOworICAgIH0KK30KKworLyogRm9ybWF0IGFuIGludGVnZXIgaW4gcmFuZ2UgWzA7IDk5OTk5OV0gdG8gZGVjaW1hbCwKKyAgIGFuZCB3cml0ZSBpdCBpbnRvIHRoZSBmaWxlIGZkLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworCitzdGF0aWMgdm9pZAorZHVtcF9kZWNpbWFsKGludCBmZCwgaW50IHZhbHVlKQoreworICAgIGNoYXIgYnVmZmVyWzddOworICAgIGludCBsZW47CisgICAgaWYgKHZhbHVlIDwgMCB8fCA5OTk5OTkgPCB2YWx1ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGxlbiA9IDA7CisgICAgZG8geworICAgICAgICBidWZmZXJbbGVuXSA9ICcwJyArICh2YWx1ZSAlIDEwKTsKKyAgICAgICAgdmFsdWUgLz0gMTA7CisgICAgICAgIGxlbisrOworICAgIH0gd2hpbGUgKHZhbHVlKTsKKyAgICByZXZlcnNlX3N0cmluZyhidWZmZXIsIGxlbik7CisgICAgd3JpdGUoZmQsIGJ1ZmZlciwgbGVuKTsKK30KKworLyogRm9ybWF0IGFuIGludGVnZXIgaW4gcmFuZ2UgWzA7IDB4ZmZmZmZmZmZdIHRvIGhleGRlY2ltYWwgb2YgJ3dpZHRoJyBkaWdpdHMsCisgICBhbmQgd3JpdGUgaXQgaW50byB0aGUgZmlsZSBmZC4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KKworc3RhdGljIHZvaWQKK2R1bXBfaGV4YWRlY2ltYWwoaW50IHdpZHRoLCB1bnNpZ25lZCBsb25nIHZhbHVlLCBpbnQgZmQpCit7CisgICAgaW50IGxlbjsKKyAgICBjaGFyIGJ1ZmZlcltzaXplb2YodW5zaWduZWQgbG9uZykgKiAyICsgMV07CisgICAgbGVuID0gMDsKKyAgICBkbyB7CisgICAgICAgIGJ1ZmZlcltsZW5dID0gUHlfaGV4ZGlnaXRzW3ZhbHVlICYgMTVdOworICAgICAgICB2YWx1ZSA+Pj0gNDsKKyAgICAgICAgbGVuKys7CisgICAgfSB3aGlsZSAobGVuIDwgd2lkdGggfHwgdmFsdWUpOworICAgIHJldmVyc2Vfc3RyaW5nKGJ1ZmZlciwgbGVuKTsKKyAgICB3cml0ZShmZCwgYnVmZmVyLCBsZW4pOworfQorCisvKiBXcml0ZSBhbiB1bmljb2RlIG9iamVjdCBpbnRvIHRoZSBmaWxlIGZkIHVzaW5nIGFzY2lpK2JhY2tzbGFzaHJlcGxhY2UuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCisKK3N0YXRpYyB2b2lkCitkdW1wX2FzY2lpKGludCBmZCwgUHlPYmplY3QgKnRleHQpCit7CisgICAgUHlBU0NJSU9iamVjdCAqYXNjaWkgPSAoUHlBU0NJSU9iamVjdCAqKXRleHQ7CisgICAgUHlfc3NpemVfdCBpLCBzaXplOworICAgIGludCB0cnVuY2F0ZWQ7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YSA9IE5VTEw7CisgICAgd2NoYXJfdCAqd3N0ciA9IE5VTEw7CisgICAgUHlfVUNTNCBjaDsKKworICAgIHNpemUgPSBhc2NpaS0+bGVuZ3RoOworICAgIGtpbmQgPSBhc2NpaS0+c3RhdGUua2luZDsKKyAgICBpZiAoYXNjaWktPnN0YXRlLmNvbXBhY3QpIHsKKyAgICAgICAgaWYgKGFzY2lpLT5zdGF0ZS5hc2NpaSkKKyAgICAgICAgICAgIGRhdGEgPSAoKFB5QVNDSUlPYmplY3QqKXRleHQpICsgMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGF0YSA9ICgoUHlDb21wYWN0VW5pY29kZU9iamVjdCopdGV4dCkgKyAxOworICAgIH0KKyAgICBlbHNlIGlmIChraW5kICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKSB7CisgICAgICAgIGRhdGEgPSAoKFB5VW5pY29kZU9iamVjdCAqKXRleHQpLT5kYXRhLmFueTsKKyAgICAgICAgaWYgKGRhdGEgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHdzdHIgPSAoKFB5QVNDSUlPYmplY3QgKil0ZXh0KS0+d3N0cjsKKyAgICAgICAgaWYgKHdzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc2l6ZSA9ICgoUHlDb21wYWN0VW5pY29kZU9iamVjdCAqKXRleHQpLT53c3RyX2xlbmd0aDsKKyAgICB9CisKKyAgICBpZiAoTUFYX1NUUklOR19MRU5HVEggPCBzaXplKSB7CisgICAgICAgIHNpemUgPSBNQVhfU1RSSU5HX0xFTkdUSDsKKyAgICAgICAgdHJ1bmNhdGVkID0gMTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICB0cnVuY2F0ZWQgPSAwOworCisgICAgZm9yIChpPTA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgaWYgKGtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpCisgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjaCA9IHdzdHJbaV07CisgICAgICAgIGlmIChjaCA8IDEyOCkgeworICAgICAgICAgICAgY2hhciBjID0gKGNoYXIpY2g7CisgICAgICAgICAgICB3cml0ZShmZCwgJmMsIDEpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMHhmZikgeworICAgICAgICAgICAgUFVUUyhmZCwgIlxceCIpOworICAgICAgICAgICAgZHVtcF9oZXhhZGVjaW1hbCgyLCBjaCwgZmQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMHhmZmZmKSB7CisgICAgICAgICAgICBQVVRTKGZkLCAiXFx1Iik7CisgICAgICAgICAgICBkdW1wX2hleGFkZWNpbWFsKDQsIGNoLCBmZCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQVVRTKGZkLCAiXFxVIik7CisgICAgICAgICAgICBkdW1wX2hleGFkZWNpbWFsKDgsIGNoLCBmZCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHRydW5jYXRlZCkKKyAgICAgICAgUFVUUyhmZCwgIi4uLiIpOworfQorCisvKiBXcml0ZSBhIGZyYW1lIGludG8gdGhlIGZpbGUgZmQ6ICJGaWxlICJ4eHgiLCBsaW5lIHh4eCBpbiB4eHgiLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworCitzdGF0aWMgdm9pZAorZHVtcF9mcmFtZShpbnQgZmQsIFB5RnJhbWVPYmplY3QgKmZyYW1lKQoreworICAgIFB5Q29kZU9iamVjdCAqY29kZTsKKyAgICBpbnQgbGluZW5vOworCisgICAgY29kZSA9IGZyYW1lLT5mX2NvZGU7CisgICAgUFVUUyhmZCwgIiAgRmlsZSAiKTsKKyAgICBpZiAoY29kZSAhPSBOVUxMICYmIGNvZGUtPmNvX2ZpbGVuYW1lICE9IE5VTEwKKyAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrKGNvZGUtPmNvX2ZpbGVuYW1lKSkKKyAgICB7CisgICAgICAgIHdyaXRlKGZkLCAiXCIiLCAxKTsKKyAgICAgICAgZHVtcF9hc2NpaShmZCwgY29kZS0+Y29fZmlsZW5hbWUpOworICAgICAgICB3cml0ZShmZCwgIlwiIiwgMSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUFVUUyhmZCwgIj8/PyIpOworICAgIH0KKworICAgIC8qIFB5RnJhbWVfR2V0TGluZU51bWJlcigpIHdhcyBpbnRyb2R1Y2VkIGluIFB5dGhvbiAyLjcuMCBhbmQgMy4yLjAgKi8KKyAgICBsaW5lbm8gPSBQeUNvZGVfQWRkcjJMaW5lKGNvZGUsIGZyYW1lLT5mX2xhc3RpKTsKKyAgICBQVVRTKGZkLCAiLCBsaW5lICIpOworICAgIGR1bXBfZGVjaW1hbChmZCwgbGluZW5vKTsKKyAgICBQVVRTKGZkLCAiIGluICIpOworCisgICAgaWYgKGNvZGUgIT0gTlVMTCAmJiBjb2RlLT5jb19uYW1lICE9IE5VTEwKKyAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrKGNvZGUtPmNvX25hbWUpKQorICAgICAgICBkdW1wX2FzY2lpKGZkLCBjb2RlLT5jb19uYW1lKTsKKyAgICBlbHNlCisgICAgICAgIFBVVFMoZmQsICI/Pz8iKTsKKworICAgIHdyaXRlKGZkLCAiXG4iLCAxKTsKK30KKworc3RhdGljIHZvaWQKK2R1bXBfdHJhY2ViYWNrKGludCBmZCwgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlLCBpbnQgd3JpdGVfaGVhZGVyKQoreworICAgIFB5RnJhbWVPYmplY3QgKmZyYW1lOworICAgIHVuc2lnbmVkIGludCBkZXB0aDsKKworICAgIGlmICh3cml0ZV9oZWFkZXIpCisgICAgICAgIFBVVFMoZmQsICJUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOlxuIik7CisKKyAgICBmcmFtZSA9IF9QeVRocmVhZFN0YXRlX0dldEZyYW1lKHRzdGF0ZSk7CisgICAgaWYgKGZyYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKworICAgIGRlcHRoID0gMDsKKyAgICB3aGlsZSAoZnJhbWUgIT0gTlVMTCkgeworICAgICAgICBpZiAoTUFYX0ZSQU1FX0RFUFRIIDw9IGRlcHRoKSB7CisgICAgICAgICAgICBQVVRTKGZkLCAiICAuLi5cbiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFQeUZyYW1lX0NoZWNrKGZyYW1lKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkdW1wX2ZyYW1lKGZkLCBmcmFtZSk7CisgICAgICAgIGZyYW1lID0gZnJhbWUtPmZfYmFjazsKKyAgICAgICAgZGVwdGgrKzsKKyAgICB9Cit9CisKK3ZvaWQKK19QeV9EdW1wVHJhY2ViYWNrKGludCBmZCwgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKQoreworICAgIGR1bXBfdHJhY2ViYWNrKGZkLCB0c3RhdGUsIDEpOworfQorCisvKiBXcml0ZSB0aGUgdGhyZWFkIGlkZW50aWZpZXIgaW50byB0aGUgZmlsZSAnZmQnOiAiQ3VycmVudCB0aHJlYWQgMHhISEhIOlwiIGlmCisgICBpc19jdXJyZW50IGlzIHRydWUsICJUaHJlYWQgMHhISEhIOlxuIiBvdGhlcndpc2UuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCisKK3N0YXRpYyB2b2lkCit3cml0ZV90aHJlYWRfaWQoaW50IGZkLCBQeVRocmVhZFN0YXRlICp0c3RhdGUsIGludCBpc19jdXJyZW50KQoreworICAgIGlmIChpc19jdXJyZW50KQorICAgICAgICBQVVRTKGZkLCAiQ3VycmVudCB0aHJlYWQgMHgiKTsKKyAgICBlbHNlCisgICAgICAgIFBVVFMoZmQsICJUaHJlYWQgMHgiKTsKKyAgICBkdW1wX2hleGFkZWNpbWFsKHNpemVvZihsb25nKSoyLCAodW5zaWduZWQgbG9uZyl0c3RhdGUtPnRocmVhZF9pZCwgZmQpOworICAgIFBVVFMoZmQsICI6XG4iKTsKK30KKworY29uc3QgY2hhcioKK19QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhpbnQgZmQsIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGUgKmN1cnJlbnRfdGhyZWFkKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICB1bnNpZ25lZCBpbnQgbnRocmVhZHM7CisKKyAgICAvKiBHZXQgdGhlIGN1cnJlbnQgaW50ZXJwcmV0ZXIgZnJvbSB0aGUgY3VycmVudCB0aHJlYWQgKi8KKyAgICB0c3RhdGUgPSBQeUludGVycHJldGVyU3RhdGVfVGhyZWFkSGVhZChpbnRlcnApOworICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuICJ1bmFibGUgdG8gZ2V0IHRoZSB0aHJlYWQgaGVhZCBzdGF0ZSI7CisKKyAgICAvKiBEdW1wIHRoZSB0cmFjZWJhY2sgb2YgZWFjaCB0aHJlYWQgKi8KKyAgICB0c3RhdGUgPSBQeUludGVycHJldGVyU3RhdGVfVGhyZWFkSGVhZChpbnRlcnApOworICAgIG50aHJlYWRzID0gMDsKKyAgICBkbworICAgIHsKKyAgICAgICAgaWYgKG50aHJlYWRzICE9IDApCisgICAgICAgICAgICB3cml0ZShmZCwgIlxuIiwgMSk7CisgICAgICAgIGlmIChudGhyZWFkcyA+PSBNQVhfTlRIUkVBRFMpIHsKKyAgICAgICAgICAgIFBVVFMoZmQsICIuLi5cbiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgd3JpdGVfdGhyZWFkX2lkKGZkLCB0c3RhdGUsIHRzdGF0ZSA9PSBjdXJyZW50X3RocmVhZCk7CisgICAgICAgIGR1bXBfdHJhY2ViYWNrKGZkLCB0c3RhdGUsIDApOworICAgICAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX05leHQodHN0YXRlKTsKKyAgICAgICAgbnRocmVhZHMrKzsKKyAgICB9IHdoaWxlICh0c3RhdGUgIT0gTlVMTCk7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKwpkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCmluZGV4IGIxMzgwNmIuLjYwNDBlOGYgMTAwNjQ0Ci0tLSBhL1JFQURNRQorKysgYi9SRUFETUUKQEAgLTEsOCArMSw4IEBACi1UaGlzIGlzIFB5dGhvbiB2ZXJzaW9uIDMuMi4zCitUaGlzIGlzIFB5dGhvbiB2ZXJzaW9uIDMuMy4wCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwKLTIwMTIgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorMjAxMiwgMjAxMyBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKIFB5dGhvbiAzLnggaXMgYSBuZXcgdmVyc2lvbiBvZiB0aGUgbGFuZ3VhZ2UsIHdoaWNoIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSAyLngKIGxpbmUgb2YgcmVsZWFzZXMuICBUaGUgbGFuZ3VhZ2UgaXMgbW9zdGx5IHRoZSBzYW1lLCBidXQgbWFueSBkZXRhaWxzLCBlc3BlY2lhbGx5CkBAIC0xNSw2ICsxNSw4IEBACiAKIE9uIFVuaXgsIExpbnV4LCBCU0QsIE9TWCwgYW5kIEN5Z3dpbjoKIAorTmV3IHRleHQKKwogICAgIC4vY29uZmlndXJlCiAgICAgbWFrZQogICAgIG1ha2UgdGVzdApAQCAtNTAsOSArNTIsOSBAQAogLS0tLS0tLS0tLQogCiBXZSB0cnkgdG8gaGF2ZSBhIGNvbXByZWhlbnNpdmUgb3ZlcnZpZXcgb2YgdGhlIGNoYW5nZXMgaW4gdGhlICJXaGF0J3MgTmV3IGluCi1QeXRob24gMy4yIiBkb2N1bWVudCwgZm91bmQgYXQKK1B5dGhvbiAzLjMiIGRvY3VtZW50LCBmb3VuZCBhdAogCi0gICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjIvd2hhdHNuZXcvMy4yLmh0bWwKKyAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMy93aGF0c25ldy8zLjMuaHRtbAogCiBGb3IgYSBtb3JlIGRldGFpbGVkIGNoYW5nZSBsb2csIHJlYWQgTWlzYy9ORVdTICh0aG91Z2ggdGhpcyBmaWxlLCB0b28sIGlzCiBpbmNvbXBsZXRlLCBhbmQgYWxzbyBkb2Vzbid0IGxpc3QgYW55dGhpbmcgbWVyZ2VkIGluIGZyb20gdGhlIDIuNyByZWxlYXNlIHVuZGVyCkBAIC02NSw5ICs2Nyw5IEBACiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKLURvY3VtZW50YXRpb24gZm9yIFB5dGhvbiAzLjIgaXMgb25saW5lLCB1cGRhdGVkIGRhaWx5OgorRG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uIDMuMyBpcyBvbmxpbmUsIHVwZGF0ZWQgZGFpbHk6CiAKLSAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMi8KKyAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMy8KIAogSXQgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiBtYW55IGZvcm1hdHMgZm9yIGZhc3RlciBhY2Nlc3MuICBUaGUgZG9jdW1lbnRhdGlvbgogaXMgZG93bmxvYWRhYmxlIGluIEhUTUwsIFBERiwgYW5kIHJlU3RydWN0dXJlZFRleHQgZm9ybWF0czsgdGhlIGxhdHRlciB2ZXJzaW9uCkBAIC04NSwxOCArODcsMTYgQEAKIEEgc291cmNlLXRvLXNvdXJjZSB0cmFuc2xhdGlvbiB0b29sLCAiMnRvMyIsIGNhbiB0YWtlIGNhcmUgb2YgdGhlIG11bmRhbmUgdGFzawogb2YgY29udmVydGluZyBsYXJnZSBhbW91bnRzIG9mIHNvdXJjZSBjb2RlLiAgSXQgaXMgbm90IGEgY29tcGxldGUgc29sdXRpb24gYnV0CiBpcyBjb21wbGVtZW50ZWQgYnkgdGhlIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGluIDIuNi4gIFNlZQotaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjIvbGlicmFyeS8ydG8zLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCitodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMy9saWJyYXJ5LzJ0bzMuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogCiBUZXN0aW5nCiAtLS0tLS0tCiAKLVRvIHRlc3QgdGhlIGludGVycHJldGVyLCB0eXBlICJtYWtlIHRlc3QiIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LiAgVGhpcyBydW5zCi10aGUgdGVzdCBzZXQgdHdpY2UgKG9uY2Ugd2l0aCBubyBjb21waWxlZCBmaWxlcywgb25jZSB3aXRoIHRoZSBjb21waWxlZCBmaWxlcwotbGVmdCBieSB0aGUgcHJldmlvdXMgdGVzdCBydW4pLiAgVGhlIHRlc3Qgc2V0IHByb2R1Y2VzIHNvbWUgb3V0cHV0LiAgWW91IGNhbgotZ2VuZXJhbGx5IGlnbm9yZSB0aGUgbWVzc2FnZXMgYWJvdXQgc2tpcHBlZCB0ZXN0cyBkdWUgdG8gb3B0aW9uYWwgZmVhdHVyZXMgd2hpY2gKLWNhbid0IGJlIGltcG9ydGVkLiAgSWYgYSBtZXNzYWdlIGlzIHByaW50ZWQgYWJvdXQgYSBmYWlsZWQgdGVzdCBvciBhIHRyYWNlYmFjawotb3IgY29yZSBkdW1wIGlzIHByb2R1Y2VkLCBzb21ldGhpbmcgaXMgd3JvbmcuCitUbyB0ZXN0IHRoZSBpbnRlcnByZXRlciwgdHlwZSAibWFrZSB0ZXN0IiBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4gIFRoZSB0ZXN0CitzZXQgcHJvZHVjZXMgc29tZSBvdXRwdXQuICBZb3UgY2FuIGdlbmVyYWxseSBpZ25vcmUgdGhlIG1lc3NhZ2VzIGFib3V0IHNraXBwZWQKK3Rlc3RzIGR1ZSB0byBvcHRpb25hbCBmZWF0dXJlcyB3aGljaCBjYW4ndCBiZSBpbXBvcnRlZC4gIElmIGEgbWVzc2FnZSBpcyBwcmludGVkCithYm91dCBhIGZhaWxlZCB0ZXN0IG9yIGEgdHJhY2ViYWNrIG9yIGNvcmUgZHVtcCBpcyBwcm9kdWNlZCwgc29tZXRoaW5nIGlzIHdyb25nLgogCiBCeSBkZWZhdWx0LCB0ZXN0cyBhcmUgcHJldmVudGVkIGZyb20gb3ZlcnVzaW5nIHJlc291cmNlcyBsaWtlIGRpc2sgc3BhY2UgYW5kCiBtZW1vcnkuICBUbyBlbmFibGUgdGhlc2UgdGVzdHMsIHJ1biAibWFrZSB0ZXN0YWxsIi4KQEAgLTEyNSw4ICsxMjUsOCBAQAogSW5zdGFsbCB0aGF0IHZlcnNpb24gdXNpbmcgIm1ha2UgaW5zdGFsbCIuICBJbnN0YWxsIGFsbCBvdGhlciB2ZXJzaW9ucyB1c2luZwogIm1ha2UgYWx0aW5zdGFsbCIuCiAKLUZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBpbnN0YWxsIFB5dGhvbiAyLjUsIDIuNiBhbmQgMy4yIHdpdGggMi42IGJlaW5nIHRoZQotcHJpbWFyeSB2ZXJzaW9uLCB5b3Ugd291bGQgZXhlY3V0ZSAibWFrZSBpbnN0YWxsIiBpbiB5b3VyIDIuNiBidWlsZCBkaXJlY3RvcnkKK0ZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBpbnN0YWxsIFB5dGhvbiAyLjYsIDIuNyBhbmQgMy4zIHdpdGggMi43IGJlaW5nIHRoZQorcHJpbWFyeSB2ZXJzaW9uLCB5b3Ugd291bGQgZXhlY3V0ZSAibWFrZSBpbnN0YWxsIiBpbiB5b3VyIDIuNyBidWlsZCBkaXJlY3RvcnkKIGFuZCAibWFrZSBhbHRpbnN0YWxsIiBpbiB0aGUgb3RoZXJzLgogCiAKQEAgLTE2MSw3ICsxNjEsNyBAQAogUmVsZWFzZSBTY2hlZHVsZQogLS0tLS0tLS0tLS0tLS0tLQogCi1TZWUgUEVQIDM5MiBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAzOTIvCitTZWUgUEVQIDM5OCBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAzOTgvCiAKIAogQ29weXJpZ2h0IGFuZCBMaWNlbnNlIEluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9SRUFETUUgYi9Ub29scy9SRUFETUUKaW5kZXggYzFmODliYS4uMGQ5NjFkZSAxMDA2NDQKLS0tIGEvVG9vbHMvUkVBRE1FCisrKyBiL1Rvb2xzL1JFQURNRQpAQCAtMyw3ICszLDcgQEAKIAogYnVpbGRib3QgICAgICAgIEJhdGNoZmlsZXMgZm9yIHJ1bm5pbmcgb24gV2luZG93cyBidWlsZHNsYXZlcy4KIAotY2NiZW5jaCAgICAgICAgIEEgUHl0aG9uIGNvbmN1cnJlbmN5IGJlbmNobWFyay4KK2NjYmVuY2ggICAgICAgICBBIFB5dGhvbiB0aHJlYWRzLWJhc2VkIGNvbmN1cnJlbmN5IGJlbmNobWFyay4gKCopCiAKIGRlbW8gICAgICAgICAgICBTZXZlcmFsIFB5dGhvbiBwcm9ncmFtbWluZyBkZW1vcy4KIApAQCAtMTcsMTMgKzE3LDEzIEBACiAgICAgICAgICAgICAgICAgYW5kIG1zZ2ZtdC5weSBnZW5lcmF0ZXMgYSBiaW5hcnkgbWVzc2FnZSBjYXRhbG9nCiAgICAgICAgICAgICAgICAgZnJvbSBhIGNhdGFsb2cgaW4gdGV4dCBmb3JtYXQuCiAKLWlvYmVuY2ggICAgICAgICBCZW5jaG1hcmsgZm9yIHRoZSBuZXcgUHl0aG9uIEkvTyBzeXN0ZW0uCitpb2JlbmNoICAgICAgICAgQmVuY2htYXJrIGZvciB0aGUgbmV3IFB5dGhvbiBJL08gc3lzdGVtLiAoKikKIAogbXNpICAgICAgICAgICAgIFN1cHBvcnQgZm9yIHBhY2thZ2luZyBQeXRob24gYXMgYW4gTVNJIHBhY2thZ2Ugb24gV2luZG93cy4KIAogcGFyc2VyICAgICAgICAgIFVuLXBhcnNpbmcgdG9vbCB0byBnZW5lcmF0ZSBjb2RlIGZyb20gYW4gQVNULgogCi1weWJlbmNoICAgICAgICAgQ29tcHJlaGVuc2l2ZSBQeXRob24gYmVuY2htYXJraW5nIHN1aXRlLgorcHliZW5jaCAgICAgICAgIExvdy1sZXZlbCBiZW5jaG1hcmtpbmcgZm9yIHRoZSBQeXRob24gZXZhbHVhdGlvbiBsb29wLiAoKikKIAogcHluY2hlICAgICAgICAgIEEgVGtpbnRlci1iYXNlZCBjb2xvciBlZGl0b3IuCiAKQEAgLTMyLDYgKzMyLDkgQEAKICAgICAgICAgICAgICAgICB0YWJzIGFuZCBzcGFjZXMsIGFuZCAydG8zLCB3aGljaCBjb252ZXJ0cyBQeXRob24gMiBjb2RlCiAgICAgICAgICAgICAgICAgdG8gUHl0aG9uIDMgY29kZS4KIAorc3RyaW5nYmVuY2ggICAgIEEgc3VpdGUgb2YgbWljcm8tYmVuY2htYXJrcyBmb3IgdmFyaW91cyBvcGVyYXRpb25zIG9uCisgICAgICAgICAgICAgICAgc3RyaW5ncyAoYm90aCA4LWJpdCBhbmQgdW5pY29kZSkuICgqKQorCiB0ZXN0MnRvMyAgICAgICAgQSBkZW1vbnN0cmF0aW9uIG9mIGhvdyB0byB1c2UgMnRvMyB0cmFuc3BhcmVudGx5IGluIHNldHVwLnB5LgogCiB1bmljb2RlICAgICAgICAgVG9vbHMgZm9yIGdlbmVyYXRpbmcgdW5pY29kZWRhdGEgYW5kIGNvZGVjcyBmcm9tIHVuaWNvZGUub3JnCkBAIC00MCwzICs0Myw2IEBACiAKIHVuaXR0ZXN0Z3VpICAgICBBIFRraW50ZXIgYmFzZWQgR1VJIHRlc3QgcnVubmVyIGZvciB1bml0dGVzdCwgd2l0aCB0ZXN0CiAgICAgICAgICAgICAgICAgZGlzY292ZXJ5LgorCisKKygqKSBBIGdlbmVyaWMgYmVuY2htYXJrIHN1aXRlIGlzIG1haW50YWluZWQgc2VwYXJhdGVseSBhdCBodHRwOi8vaGcucHl0aG9uLm9yZy9iZW5jaG1hcmtzLwpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvYnVpbGQtYW1kNjQuYmF0IGIvVG9vbHMvYnVpbGRib3QvYnVpbGQtYW1kNjQuYmF0CmluZGV4IDg3MTNiMzguLjdlZTdiMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9idWlsZC1hbWQ2NC5iYXQKQEAgLTEsNyArMSw3IEBACiBAcmVtIFVzZWQgYnkgdGhlIGJ1aWxkYm90ICJjb21waWxlIiBzdGVwLgotc2V0IEhPU1RfUFlUSE9OPSIlQ0QlXFBDYnVpbGRcYW1kNjRccHl0aG9uX2QuZXhlIgogY21kIC9jIFRvb2xzXGJ1aWxkYm90XGV4dGVybmFsLWFtZDY0LmJhdAotY2FsbCAiJVZTOTBDT01OVE9PTFMlXC4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiIHg4Nl9hbWQ2NAorY2FsbCAiJVZTMTAwQ09NTlRPT0xTJVwuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiB4ODZfYW1kNjQKIGNtZCAvYyBUb29sc1xidWlsZGJvdFxjbGVhbi1hbWQ2NC5iYXQKLXZjYnVpbGQgL3VzZWVudiBQQ2J1aWxkXGtpbGxfcHl0aG9uLnZjcHJvaiAiRGVidWd8eDY0IiAmJiBQQ2J1aWxkXGFtZDY0XGtpbGxfcHl0aG9uX2QuZXhlCi12Y2J1aWxkIFBDYnVpbGRccGNidWlsZC5zbG4gIkRlYnVnfHg2NCIKK21zYnVpbGQgUENidWlsZFxraWxsX3B5dGhvbi52Y3hwcm9qIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm1UYXJnZXQ9eDY0CitQQ2J1aWxkXGFtZDY0XGtpbGxfcHl0aG9uX2QuZXhlCittc2J1aWxkIFBDYnVpbGRccGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1EZWJ1ZyAvcDpQbGF0Zm9ybT14NjQKZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkLmJhdCBiL1Rvb2xzL2J1aWxkYm90L2J1aWxkLmJhdAppbmRleCBhYjNlYTdkLi5jOTNjZmQ1IDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9idWlsZC5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvYnVpbGQuYmF0CkBAIC0xLDcgKzEsOCBAQAogQHJlbSBVc2VkIGJ5IHRoZSBidWlsZGJvdCAiY29tcGlsZSIgc3RlcC4KIGNtZCAvYyBUb29sc1xidWlsZGJvdFxleHRlcm5hbC5iYXQKLWNhbGwgIiVWUzkwQ09NTlRPT0xTJXZzdmFyczMyLmJhdCIKK2NhbGwgIiVWUzEwMENPTU5UT09MUyV2c3ZhcnMzMi5iYXQiCiBjbWQgL2MgVG9vbHNcYnVpbGRib3RcY2xlYW4uYmF0Ci12Y2J1aWxkIC91c2VlbnYgUENidWlsZFxraWxsX3B5dGhvbi52Y3Byb2ogIkRlYnVnfFdpbjMyIiAmJiBQQ2J1aWxkXGtpbGxfcHl0aG9uX2QuZXhlCi12Y2J1aWxkIC91c2VlbnYgUENidWlsZFxwY2J1aWxkLnNsbiAiRGVidWd8V2luMzIiCittc2J1aWxkIFBDYnVpbGRca2lsbF9weXRob24udmN4cHJvaiAvcDpDb25maWd1cmF0aW9uPURlYnVnIC9wOlBsYXRmb3JtVGFyZ2V0PXg4NgorUENidWlsZFxraWxsX3B5dGhvbl9kLmV4ZQorbXNidWlsZCBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm09V2luMzIKIApkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvYnVpbGRtc2kuYmF0IGIvVG9vbHMvYnVpbGRib3QvYnVpbGRtc2kuYmF0CmluZGV4IDQ0MzBjYjguLmFlOTNlNjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkbXNpLmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9idWlsZG1zaS5iYXQKQEAgLTIsMTAgKzIsMTAgQEAKIAogY21kIC9jIFRvb2xzXGJ1aWxkYm90XGV4dGVybmFsLmJhdAogQHJlbSBidWlsZCByZWxlYXNlIHZlcnNpb25zIG9mIHRoaW5ncwotY2FsbCAiJVZTOTBDT01OVE9PTFMldnN2YXJzMzIuYmF0IgorY2FsbCAiJVZTMTAwQ09NTlRPT0xTJXZzdmFyczMyLmJhdCIKIAogQHJlbSBidWlsZCBQeXRob24KLXZjYnVpbGQgL3VzZWVudiBQQ2J1aWxkXHBjYnVpbGQuc2xuICJSZWxlYXNlfFdpbjMyIgorbXNidWlsZCAvcDp1c2VlbnY9dHJ1ZSBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249UmVsZWFzZSAvcDpQbGF0Zm9ybT1XaW4zMgogCiBAcmVtIGJ1aWxkIHRoZSBkb2N1bWVudGF0aW9uCiBiYXNoLmV4ZSAtYyAnY2QgRG9jO21ha2UgUFlUSE9OPXB5dGhvbjIuNSB1cGRhdGUgaHRtbGhlbHAnCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQKaW5kZXggNzE1ODA1YS4uMjQ2NjBhZiAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvY2xlYW4tYW1kNjQuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2NsZWFuLWFtZDY0LmJhdApAQCAtMSwxMCArMSwxMCBAQAogQHJlbSBVc2VkIGJ5IHRoZSBidWlsZGJvdCAiY2xlYW4iIHN0ZXAuCi1jYWxsICIlVlM5MENPTU5UT09MUyVcLi5cLi5cVkNcdmN2YXJzYWxsLmJhdCIgeDg2X2FtZDY0CitjYWxsICIlVlMxMDBDT01OVE9PTFMlXC4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiIHg4Nl9hbWQ2NAogQGVjaG8gRGVsZXRpbmcgLnB5Yy8ucHlvIGZpbGVzIC4uLgogZGVsIC9zIExpYlwqLnB5YyBMaWJcKi5weW8KIEBlY2hvIERlbGV0aW5nIHRlc3QgbGVmdG92ZXJzIC4uLgogcm1kaXIgL3MgL3EgYnVpbGQKIGNkIFBDYnVpbGQKLXZjYnVpbGQgL2NsZWFuIHBjYnVpbGQuc2xuICJSZWxlYXNlfHg2NCIKLXZjYnVpbGQgL2NsZWFuIHBjYnVpbGQuc2xuICJEZWJ1Z3x4NjQiCittc2J1aWxkIC90YXJnZXQ6Y2xlYW4gcGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1SZWxlYXNlIC9wOlBsYXRmb3JtVGFyZ2V0PXg2NAorbXNidWlsZCAvdGFyZ2V0OmNsZWFuIHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm1UYXJnZXQ9eDY0CiBjZCAuLgpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0IGIvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0CmluZGV4IDBjMDRiOGUuLjIxOGZhY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9jbGVhbi5iYXQKQEAgLTEsOCArMSw4IEBACiBAcmVtIFVzZWQgYnkgdGhlIGJ1aWxkYm90ICJjbGVhbiIgc3RlcC4KLWNhbGwgIiVWUzkwQ09NTlRPT0xTJXZzdmFyczMyLmJhdCIKK2NhbGwgIiVWUzEwMENPTU5UT09MUyV2c3ZhcnMzMi5iYXQiCiBAZWNobyBEZWxldGluZyB0ZXN0IGxlZnRvdmVycyAuLi4KIHJtZGlyIC9zIC9xIGJ1aWxkCiBjZCBQQ2J1aWxkCi12Y2J1aWxkIC9jbGVhbiBwY2J1aWxkLnNsbiAiUmVsZWFzZXxXaW4zMiIKLXZjYnVpbGQgL2NsZWFuIHBjYnVpbGQuc2xuICJEZWJ1Z3xXaW4zMiIKK21zYnVpbGQgL3RhcmdldDpjbGVhbiBwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPVJlbGVhc2UgL3A6UGxhdGZvcm1UYXJnZXQ9eDg2Cittc2J1aWxkIC90YXJnZXQ6Y2xlYW4gcGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1EZWJ1ZyAvcDpQbGF0Zm9ybVRhcmdldD14ODYKIGNkIC4uCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1hbWQ2NC5iYXQKaW5kZXggOTU0MjM4ZS4uZDJmZjI1NSAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWFtZDY0LmJhdApAQCAtMiwyMCArMiwyMCBAQAogCiBAcmVtIEFzc3VtZSB3ZSBzdGFydCBpbnNpZGUgdGhlIFB5dGhvbiBzb3VyY2UgZGlyZWN0b3J5CiBjYWxsICJUb29sc1xidWlsZGJvdFxleHRlcm5hbC1jb21tb24uYmF0IgotY2FsbCAiJVZTOTBDT01OVE9PTFMlXC4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiIHg4Nl9hbWQ2NAorY2FsbCAiJVZTMTAwQ09NTlRPT0xTJVwuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiB4ODZfYW1kNjQKIAogaWYgbm90IGV4aXN0IHRjbHRrNjRcYmluXHRjbDg1Zy5kbGwgKAotICAgIGNkIHRjbC04LjUuOS4wXHdpbgorICAgIGNkIHRjbC04LjUuMTEuMFx3aW4KICAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IGNsZWFuIGFsbAogICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIERFQlVHPTEgTUFDSElORT1BTUQ2NCBJTlNUQUxMRElSPS4uXC4uXHRjbHRrNjQgaW5zdGFsbAogICAgIGNkIC4uXC4uCiApCiAKIGlmIG5vdCBleGlzdCB0Y2x0azY0XGJpblx0azg1Zy5kbGwgKAotICAgIGNkIHRrLTguNS45LjBcd2luICAgIAotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IFRDTERJUj0uLlwuLlx0Y2wtOC41LjkuMCBjbGVhbgotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IFRDTERJUj0uLlwuLlx0Y2wtOC41LjkuMCBhbGwKLSAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBNQUNISU5FPUFNRDY0IElOU1RBTExESVI9Li5cLi5cdGNsdGs2NCBUQ0xESVI9Li5cLi5cdGNsLTguNS45LjAgaW5zdGFsbAorICAgIGNkIHRrLTguNS4xMS4wXHdpbiAgICAKKyAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBNQUNISU5FPUFNRDY0IElOU1RBTExESVI9Li5cLi5cdGNsdGs2NCBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGNsZWFuCisgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgT1BUUz1ub3hwIERFQlVHPTEgTUFDSElORT1BTUQ2NCBJTlNUQUxMRElSPS4uXC4uXHRjbHRrNjQgVENMRElSPS4uXC4uXHRjbC04LjUuMTEuMCBhbGwKKyAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBNQUNISU5FPUFNRDY0IElOU1RBTExESVI9Li5cLi5cdGNsdGs2NCBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGluc3RhbGwKICAgICBjZCAuLlwuLgogKQogCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1jb21tb24uYmF0IGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtY29tbW9uLmJhdAppbmRleCAyMTY1YjhhLi40ZTlmZTQxIDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1jb21tb24uYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWNvbW1vbi5iYXQKQEAgLTE0LDggKzE0LDggQEAKIEByZW0gaWYgZXhpc3QgdGs4LjQuMTYgcmQgL3MvcSB0azguNC4xNgogQHJlbSBpZiBleGlzdCB0ay04LjQuMTguMSByZCAvcy9xIHRrLTguNC4xOC4xCiBAcmVtIGlmIGV4aXN0IGRiLTQuNC4yMCByZCAvcy9xIGRiLTQuNC4yMAotQHJlbSBpZiBleGlzdCBvcGVuc3NsLTEuMC4waiByZCAvcy9xIG9wZW5zc2wtMS4wLjBqCi1AcmVtIGlmIGV4aXN0IHNxbGl0ZS0zLjcuNCByZCAvcy9xIHNxbGl0ZS0zLjcuNCAgICAKK0ByZW0gaWYgZXhpc3Qgb3BlbnNzbC0xLjAuMWMgcmQgL3MvcSBvcGVuc3NsLTEuMC4xYworQHJlbSBpZiBleGlzdCBzcWxpdGUtMy43LjEyIHJkIC9zL3Egc3FsaXRlLTMuNy4xMiAgICAKIAogQHJlbSBiemlwCiBpZiBub3QgZXhpc3QgYnppcDItMS4wLjYgKApAQCAtMjQsMTcgKzI0LDI1IEBACiApCiAKIEByZW0gT3BlblNTTAotaWYgbm90IGV4aXN0IG9wZW5zc2wtMS4wLjBqIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL29wZW5zc2wtMS4wLjBqCitpZiBub3QgZXhpc3Qgb3BlbnNzbC0xLjAuMWMgKAorICAgIHJkIC9zL3Egb3BlbnNzbC0xLjAuMGoKKyAgICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC9vcGVuc3NsLTEuMC4xYworKQogCiBAcmVtIHRjbC90awotaWYgbm90IGV4aXN0IHRjbC04LjUuOS4wICgKK2lmIG5vdCBleGlzdCB0Y2wtOC41LjExLjAgKAogICAgcmQgL3MvcSB0Y2x0ayB0Y2x0azY0Ci0gICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC90Y2wtOC41LjkuMAorICAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvdGNsLTguNS4xMS4wCiApCi1pZiBub3QgZXhpc3QgdGstOC41LjkuMCBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC90ay04LjUuOS4wCitpZiBub3QgZXhpc3QgdGstOC41LjExLjAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvdGstOC41LjExLjAKIAogQHJlbSBzcWxpdGUzCi1pZiBub3QgZXhpc3Qgc3FsaXRlLTMuNy40ICgKLSAgcmQgL3MvcSBzcWxpdGUtc291cmNlLTMuNi4yMQotICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC9zcWxpdGUtMy43LjQKK2lmIG5vdCBleGlzdCBzcWxpdGUtMy43LjEyICgKKyAgcmQgL3MvcSBzcWxpdGUtc291cmNlLTMuNy40CisgIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL3NxbGl0ZS0zLjcuMTIKKykKKworQHJlbSBsem1hCitpZiBub3QgZXhpc3QgeHotNS4wLjMgKAorICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC94ei01LjAuMwogKQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0IGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0CmluZGV4IGU5NThmZDYuLmVkNWMxMGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9leHRlcm5hbC5iYXQKQEAgLTIsMjAgKzIsMjAgQEAKIAogQHJlbSBBc3N1bWUgd2Ugc3RhcnQgaW5zaWRlIHRoZSBQeXRob24gc291cmNlIGRpcmVjdG9yeQogY2FsbCAiVG9vbHNcYnVpbGRib3RcZXh0ZXJuYWwtY29tbW9uLmJhdCIKLWNhbGwgIiVWUzkwQ09NTlRPT0xTJVx2c3ZhcnMzMi5iYXQiCitjYWxsICIlVlMxMDBDT01OVE9PTFMlXHZzdmFyczMyLmJhdCIKIAogaWYgbm90IGV4aXN0IHRjbHRrXGJpblx0Y2w4NWcuZGxsICgKICAgICBAcmVtIGFsbCBhbmQgaW5zdGFsbCBuZWVkIHRvIGJlIHNlcGFyYXRlIGludm9jYXRpb25zLCBvdGhlcndpc2Ugbm1ha2VobHAgaXMgbm90IGZvdW5kIG9uIGluc3RhbGwKLSAgICBjZCB0Y2wtOC41LjkuMFx3aW4KKyAgICBjZCB0Y2wtOC41LjExLjBcd2luCiAgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIGNsZWFuIGFsbCAKICAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBERUJVRz0xIElOU1RBTExESVI9Li5cLi5cdGNsdGsgaW5zdGFsbAogICAgIGNkIC4uXC4uCiApCiAKIGlmIG5vdCBleGlzdCB0Y2x0a1xiaW5cdGs4NWcuZGxsICgKLSAgICBjZCB0ay04LjUuOS4wXHdpbiAgICAKLSAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIFRDTERJUj0uLlwuLlx0Y2wtOC41LjkuMCBjbGVhbgotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIElOU1RBTExESVI9Li5cLi5cdGNsdGsgVENMRElSPS4uXC4uXHRjbC04LjUuOS4wIGFsbAotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIElOU1RBTExESVI9Li5cLi5cdGNsdGsgVENMRElSPS4uXC4uXHRjbC04LjUuOS4wIGluc3RhbGwKKyAgICBjZCB0ay04LjUuMTEuMFx3aW4KKyAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIFRDTERJUj0uLlwuLlx0Y2wtOC41LjExLjAgY2xlYW4KKyAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIFRDTERJUj0uLlwuLlx0Y2wtOC41LjExLjAgYWxsCisgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgT1BUUz1ub3hwIERFQlVHPTEgSU5TVEFMTERJUj0uLlwuLlx0Y2x0ayBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGluc3RhbGwKICAgICBjZCAuLlwuLgogKQpkaWZmIC0tZ2l0IGEvVG9vbHMvY2NiZW5jaC9jY2JlbmNoLnB5IGIvVG9vbHMvY2NiZW5jaC9jY2JlbmNoLnB5CmluZGV4IDlmNzExOGYuLjYwY2VjM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2NjYmVuY2gvY2NiZW5jaC5weQorKysgYi9Ub29scy9jY2JlbmNoL2NjYmVuY2gucHkKQEAgLTEwLDcgKzEwLDYgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCBzdWJwcm9jZXNzCkBAIC00MzUsNzAgKzQzNCw3MCBAQAogZGVmIHJ1bl9iYW5kd2lkdGhfdGVzdChmdW5jLCBhcmdzLCBudGhyZWFkcyk6CiAgICAgIyBDcmVhdGUgYSBsaXN0ZW5pbmcgc29ja2V0IHRvIHJlY2VpdmUgdGhlIHBhY2tldHMuIFdlIHVzZSBVRFAgd2hpY2ggc2hvdWxkCiAgICAgIyBiZSBwYWlubGVzc2x5IGNyb3NzLXBsYXRmb3JtLgotICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19ER1JBTSkKLSAgICBzb2NrLmJpbmQoKCIxMjcuMC4wLjEiLCAwKSkKLSAgICBhZGRyID0gc29jay5nZXRzb2NrbmFtZSgpCisgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19ER1JBTSkgYXMgc29jazoKKyAgICAgICAgc29jay5iaW5kKCgiMTI3LjAuMC4xIiwgMCkpCisgICAgICAgIGFkZHIgPSBzb2NrLmdldHNvY2tuYW1lKCkKIAotICAgIGR1cmF0aW9uID0gQkFORFdJRFRIX0RVUkFUSU9OCi0gICAgcGFja2V0X3NpemUgPSBCQU5EV0lEVEhfUEFDS0VUX1NJWkUKLQotICAgIHJlc3VsdHMgPSBbXQotICAgIHRocmVhZHMgPSBbXQotICAgIGVuZF9ldmVudCA9IFtdCi0gICAgc3RhcnRfY29uZCA9IHRocmVhZGluZy5Db25kaXRpb24oKQotICAgIHN0YXJ0ZWQgPSBGYWxzZQotICAgIGlmIG50aHJlYWRzID4gMDoKLSAgICAgICAgIyBXYXJtIHVwCi0gICAgICAgIGZ1bmMoKmFyZ3MpCisgICAgICAgIGR1cmF0aW9uID0gQkFORFdJRFRIX0RVUkFUSU9OCisgICAgICAgIHBhY2tldF9zaXplID0gQkFORFdJRFRIX1BBQ0tFVF9TSVpFCiAKICAgICAgICAgcmVzdWx0cyA9IFtdCi0gICAgICAgIGxvb3AgPSBUaW1lZExvb3AoZnVuYywgYXJncykKLSAgICAgICAgcmVhZHkgPSBbXQotICAgICAgICByZWFkeV9jb25kID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCisgICAgICAgIHRocmVhZHMgPSBbXQorICAgICAgICBlbmRfZXZlbnQgPSBbXQorICAgICAgICBzdGFydF9jb25kID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCisgICAgICAgIHN0YXJ0ZWQgPSBGYWxzZQorICAgICAgICBpZiBudGhyZWFkcyA+IDA6CisgICAgICAgICAgICAjIFdhcm0gdXAKKyAgICAgICAgICAgIGZ1bmMoKmFyZ3MpCiAKLSAgICAgICAgZGVmIHJ1bigpOgorICAgICAgICAgICAgcmVzdWx0cyA9IFtdCisgICAgICAgICAgICBsb29wID0gVGltZWRMb29wKGZ1bmMsIGFyZ3MpCisgICAgICAgICAgICByZWFkeSA9IFtdCisgICAgICAgICAgICByZWFkeV9jb25kID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCisKKyAgICAgICAgICAgIGRlZiBydW4oKToKKyAgICAgICAgICAgICAgICB3aXRoIHJlYWR5X2NvbmQ6CisgICAgICAgICAgICAgICAgICAgIHJlYWR5LmFwcGVuZChOb25lKQorICAgICAgICAgICAgICAgICAgICByZWFkeV9jb25kLm5vdGlmeSgpCisgICAgICAgICAgICAgICAgd2l0aCBzdGFydF9jb25kOgorICAgICAgICAgICAgICAgICAgICB3aGlsZSBub3Qgc3RhcnRlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbmQud2FpdCgpCisgICAgICAgICAgICAgICAgbG9vcChzdGFydF90aW1lLCBkdXJhdGlvbiAqIDEuNSwgZW5kX2V2ZW50LCBkb195aWVsZD1GYWxzZSkKKworICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobnRocmVhZHMpOgorICAgICAgICAgICAgICAgIHRocmVhZHMuYXBwZW5kKHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXJ1bikpCisgICAgICAgICAgICBmb3IgdCBpbiB0aHJlYWRzOgorICAgICAgICAgICAgICAgIHQuc2V0RGFlbW9uKFRydWUpCisgICAgICAgICAgICAgICAgdC5zdGFydCgpCisgICAgICAgICAgICAjIFdhaXQgZm9yIHRocmVhZHMgdG8gYmUgcmVhZHkKICAgICAgICAgICAgIHdpdGggcmVhZHlfY29uZDoKLSAgICAgICAgICAgICAgICByZWFkeS5hcHBlbmQoTm9uZSkKLSAgICAgICAgICAgICAgICByZWFkeV9jb25kLm5vdGlmeSgpCi0gICAgICAgICAgICB3aXRoIHN0YXJ0X2NvbmQ6Ci0gICAgICAgICAgICAgICAgd2hpbGUgbm90IHN0YXJ0ZWQ6Ci0gICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbmQud2FpdCgpCi0gICAgICAgICAgICBsb29wKHN0YXJ0X3RpbWUsIGR1cmF0aW9uICogMS41LCBlbmRfZXZlbnQsIGRvX3lpZWxkPUZhbHNlKQorICAgICAgICAgICAgICAgIHdoaWxlIGxlbihyZWFkeSkgPCBudGhyZWFkczoKKyAgICAgICAgICAgICAgICAgICAgcmVhZHlfY29uZC53YWl0KCkKIAotICAgICAgICBmb3IgaSBpbiByYW5nZShudGhyZWFkcyk6Ci0gICAgICAgICAgICB0aHJlYWRzLmFwcGVuZCh0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1ydW4pKQotICAgICAgICBmb3IgdCBpbiB0aHJlYWRzOgotICAgICAgICAgICAgdC5zZXREYWVtb24oVHJ1ZSkKLSAgICAgICAgICAgIHQuc3RhcnQoKQotICAgICAgICAjIFdhaXQgZm9yIHRocmVhZHMgdG8gYmUgcmVhZHkKLSAgICAgICAgd2l0aCByZWFkeV9jb25kOgotICAgICAgICAgICAgd2hpbGUgbGVuKHJlYWR5KSA8IG50aHJlYWRzOgotICAgICAgICAgICAgICAgIHJlYWR5X2NvbmQud2FpdCgpCi0KLSAgICAjIFJ1biB0aGUgY2xpZW50IGFuZCB3YWl0IGZvciB0aGUgZmlyc3QgcGFja2V0IHRvIGFycml2ZSBiZWZvcmUKLSAgICAjIHVuYmxvY2tpbmcgdGhlIGJhY2tncm91bmQgdGhyZWFkcy4KLSAgICBwcm9jZXNzID0gcnVuX2JhbmR3aWR0aF9jbGllbnQoYWRkcj1hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfc2l6ZT1wYWNrZXRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb249ZHVyYXRpb24pCi0gICAgX3RpbWUgPSB0aW1lLnRpbWUKLSAgICAjIFRoaXMgd2lsbCBhbHNvIHdhaXQgZm9yIHRoZSBwYXJlbnQgdG8gYmUgcmVhZHkKLSAgICBzID0gX3JlY3Yoc29jaywgcGFja2V0X3NpemUpCi0gICAgcmVtb3RlX2FkZHIgPSBldmFsKHMucGFydGl0aW9uKCcjJylbMF0pCi0KLSAgICB3aXRoIHN0YXJ0X2NvbmQ6Ci0gICAgICAgIHN0YXJ0X3RpbWUgPSBfdGltZSgpCi0gICAgICAgIHN0YXJ0ZWQgPSBUcnVlCi0gICAgICAgIHN0YXJ0X2NvbmQubm90aWZ5KG50aHJlYWRzKQotCi0gICAgbiA9IDAKLSAgICBmaXJzdF90aW1lID0gTm9uZQotICAgIHdoaWxlIG5vdCBlbmRfZXZlbnQgYW5kIEJXX0VORCBub3QgaW4gczoKLSAgICAgICAgX3NlbmR0byhzb2NrLCBzLCByZW1vdGVfYWRkcikKKyAgICAgICAgIyBSdW4gdGhlIGNsaWVudCBhbmQgd2FpdCBmb3IgdGhlIGZpcnN0IHBhY2tldCB0byBhcnJpdmUgYmVmb3JlCisgICAgICAgICMgdW5ibG9ja2luZyB0aGUgYmFja2dyb3VuZCB0aHJlYWRzLgorICAgICAgICBwcm9jZXNzID0gcnVuX2JhbmR3aWR0aF9jbGllbnQoYWRkcj1hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3NpemU9cGFja2V0X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbj1kdXJhdGlvbikKKyAgICAgICAgX3RpbWUgPSB0aW1lLnRpbWUKKyAgICAgICAgIyBUaGlzIHdpbGwgYWxzbyB3YWl0IGZvciB0aGUgcGFyZW50IHRvIGJlIHJlYWR5CiAgICAgICAgIHMgPSBfcmVjdihzb2NrLCBwYWNrZXRfc2l6ZSkKLSAgICAgICAgaWYgZmlyc3RfdGltZSBpcyBOb25lOgotICAgICAgICAgICAgZmlyc3RfdGltZSA9IF90aW1lKCkKLSAgICAgICAgbiArPSAxCi0gICAgZW5kX3RpbWUgPSBfdGltZSgpCisgICAgICAgIHJlbW90ZV9hZGRyID0gZXZhbChzLnBhcnRpdGlvbignIycpWzBdKQorCisgICAgICAgIHdpdGggc3RhcnRfY29uZDoKKyAgICAgICAgICAgIHN0YXJ0X3RpbWUgPSBfdGltZSgpCisgICAgICAgICAgICBzdGFydGVkID0gVHJ1ZQorICAgICAgICAgICAgc3RhcnRfY29uZC5ub3RpZnkobnRocmVhZHMpCisKKyAgICAgICAgbiA9IDAKKyAgICAgICAgZmlyc3RfdGltZSA9IE5vbmUKKyAgICAgICAgd2hpbGUgbm90IGVuZF9ldmVudCBhbmQgQldfRU5EIG5vdCBpbiBzOgorICAgICAgICAgICAgX3NlbmR0byhzb2NrLCBzLCByZW1vdGVfYWRkcikKKyAgICAgICAgICAgIHMgPSBfcmVjdihzb2NrLCBwYWNrZXRfc2l6ZSkKKyAgICAgICAgICAgIGlmIGZpcnN0X3RpbWUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmaXJzdF90aW1lID0gX3RpbWUoKQorICAgICAgICAgICAgbiArPSAxCisgICAgICAgIGVuZF90aW1lID0gX3RpbWUoKQogCiAgICAgZW5kX2V2ZW50LmFwcGVuZChOb25lKQogICAgIGZvciB0IGluIHRocmVhZHM6CmRpZmYgLS1naXQgYS9Ub29scy9kZW1vL2xpZmUucHkgYi9Ub29scy9kZW1vL2xpZmUucHkKaW5kZXggZGZiOWFiOC4uZmM0Y2I0OSAxMDA3NTUKLS0tIGEvVG9vbHMvZGVtby9saWZlLnB5CisrKyBiL1Rvb2xzL2RlbW8vbGlmZS5weQpAQCAtNDYsMzggKzQ2LDM4IEBACiAgICAgICAgIHNlbGYuc3RhdGUgPSB7fQogICAgICAgICBzZWxmLnNjciA9IHNjcgogICAgICAgICBZLCBYID0gc2VsZi5zY3IuZ2V0bWF4eXgoKQotICAgICAgICBzZWxmLlgsIHNlbGYuWSA9IFgtMiwgWS0yLTEKKyAgICAgICAgc2VsZi5YLCBzZWxmLlkgPSBYIC0gMiwgWSAtIDIgLSAxCiAgICAgICAgIHNlbGYuY2hhciA9IGNoYXIKICAgICAgICAgc2VsZi5zY3IuY2xlYXIoKQogCiAgICAgICAgICMgRHJhdyBhIGJvcmRlciBhcm91bmQgdGhlIGJvYXJkCi0gICAgICAgIGJvcmRlcl9saW5lID0gJysnKyhzZWxmLlgqJy0nKSsnKycKKyAgICAgICAgYm9yZGVyX2xpbmUgPSAnKycgKyAoc2VsZi5YICogJy0nKSArICcrJwogICAgICAgICBzZWxmLnNjci5hZGRzdHIoMCwgMCwgYm9yZGVyX2xpbmUpCi0gICAgICAgIHNlbGYuc2NyLmFkZHN0cihzZWxmLlkrMSwgMCwgYm9yZGVyX2xpbmUpCisgICAgICAgIHNlbGYuc2NyLmFkZHN0cihzZWxmLlkgKyAxLCAwLCBib3JkZXJfbGluZSkKICAgICAgICAgZm9yIHkgaW4gcmFuZ2UoMCwgc2VsZi5ZKToKLSAgICAgICAgICAgIHNlbGYuc2NyLmFkZHN0cigxK3ksIDAsICd8JykKLSAgICAgICAgICAgIHNlbGYuc2NyLmFkZHN0cigxK3ksIHNlbGYuWCsxLCAnfCcpCisgICAgICAgICAgICBzZWxmLnNjci5hZGRzdHIoMSArIHksIDAsICd8JykKKyAgICAgICAgICAgIHNlbGYuc2NyLmFkZHN0cigxICsgeSwgc2VsZi5YICsgMSwgJ3wnKQogICAgICAgICBzZWxmLnNjci5yZWZyZXNoKCkKIAogICAgIGRlZiBzZXQoc2VsZiwgeSwgeCk6CiAgICAgICAgICIiIlNldCBhIGNlbGwgdG8gdGhlIGxpdmUgc3RhdGUiIiIKLSAgICAgICAgaWYgeDwwIG9yIHNlbGYuWDw9eCBvciB5PDAgb3Igc2VsZi5ZPD15OgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ29vcmRpbmF0ZXMgb3V0IG9mIHJhbmdlICVpLCVpIiUgKHksIHgpKQotICAgICAgICBzZWxmLnN0YXRlW3gseV0gPSAxCisgICAgICAgIGlmIHggPCAwIG9yIHNlbGYuWCA8PSB4IG9yIHkgPCAwIG9yIHNlbGYuWSA8PSB5OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ29vcmRpbmF0ZXMgb3V0IG9mIHJhbmdlICVpLCVpIiAlICh5LCB4KSkKKyAgICAgICAgc2VsZi5zdGF0ZVt4LCB5XSA9IDEKIAogICAgIGRlZiB0b2dnbGUoc2VsZiwgeSwgeCk6CiAgICAgICAgICIiIlRvZ2dsZSBhIGNlbGwncyBzdGF0ZSBiZXR3ZWVuIGxpdmUgYW5kIGRlYWQiIiIKICAgICAgICAgaWYgeCA8IDAgb3Igc2VsZi5YIDw9IHggb3IgeSA8IDAgb3Igc2VsZi5ZIDw9IHk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDb29yZGluYXRlcyBvdXQgb2YgcmFuZ2UgJWksJWkiJSAoeSwgeCkpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDb29yZGluYXRlcyBvdXQgb2YgcmFuZ2UgJWksJWkiICUgKHksIHgpKQogICAgICAgICBpZiAoeCwgeSkgaW4gc2VsZi5zdGF0ZToKICAgICAgICAgICAgIGRlbCBzZWxmLnN0YXRlW3gsIHldCi0gICAgICAgICAgICBzZWxmLnNjci5hZGRjaCh5KzEsIHgrMSwgJyAnKQorICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goeSArIDEsIHggKyAxLCAnICcpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnN0YXRlW3gsIHldID0gMQogICAgICAgICAgICAgaWYgY3Vyc2VzLmhhc19jb2xvcnMoKToKICAgICAgICAgICAgICAgICAjIExldCdzIHBpY2sgYSByYW5kb20gY29sb3IhCiAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYXR0cnNldChjdXJzZXMuY29sb3JfcGFpcihyYW5kb20ucmFuZHJhbmdlKDEsIDcpKSkKLSAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKHkrMSwgeCsxLCBzZWxmLmNoYXIpCisgICAgICAgICAgICBzZWxmLnNjci5hZGRjaCh5ICsgMSwgeCArIDEsIHNlbGYuY2hhcikKICAgICAgICAgICAgIHNlbGYuc2NyLmF0dHJzZXQoMCkKICAgICAgICAgc2VsZi5zY3IucmVmcmVzaCgpCiAKQEAgLTg4LDQzICs4OCw0NiBAQAogCiAgICAgZGVmIGRpc3BsYXkoc2VsZiwgdXBkYXRlX2JvYXJkPVRydWUpOgogICAgICAgICAiIiJEaXNwbGF5IHRoZSB3aG9sZSBib2FyZCwgb3B0aW9uYWxseSBjb21wdXRpbmcgb25lIGdlbmVyYXRpb24iIiIKLSAgICAgICAgTSxOID0gc2VsZi5YLCBzZWxmLlkKKyAgICAgICAgTSwgTiA9IHNlbGYuWCwgc2VsZi5ZCiAgICAgICAgIGlmIG5vdCB1cGRhdGVfYm9hcmQ6CiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBNKToKICAgICAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSgwLCBOKToKLSAgICAgICAgICAgICAgICAgICAgaWYgKGksaikgaW4gc2VsZi5zdGF0ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKGorMSwgaSsxLCBzZWxmLmNoYXIpCisgICAgICAgICAgICAgICAgICAgIGlmIChpLCBqKSBpbiBzZWxmLnN0YXRlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goaiArIDEsIGkgKyAxLCBzZWxmLmNoYXIpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNjci5hZGRjaChqKzEsIGkrMSwgJyAnKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goaiArIDEsIGkgKyAxLCAnICcpCiAgICAgICAgICAgICBzZWxmLnNjci5yZWZyZXNoKCkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGQgPSB7fQogICAgICAgICBzZWxmLmJvcmluZyA9IDEKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgTSk6Ci0gICAgICAgICAgICBMID0gcmFuZ2UoIG1heCgwLCBpLTEpLCBtaW4oTSwgaSsyKSApCisgICAgICAgICAgICBMID0gcmFuZ2UobWF4KDAsIGkgLSAxKSwgbWluKE0sIGkgKyAyKSkKICAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKDAsIE4pOgogICAgICAgICAgICAgICAgIHMgPSAwCi0gICAgICAgICAgICAgICAgbGl2ZSA9IChpLGopIGluIHNlbGYuc3RhdGUKLSAgICAgICAgICAgICAgICBmb3IgayBpbiByYW5nZSggbWF4KDAsIGotMSksIG1pbihOLCBqKzIpICk6CisgICAgICAgICAgICAgICAgbGl2ZSA9IChpLCBqKSBpbiBzZWxmLnN0YXRlCisgICAgICAgICAgICAgICAgZm9yIGsgaW4gcmFuZ2UobWF4KDAsIGogLSAxKSwgbWluKE4sIGogKyAyKSk6CiAgICAgICAgICAgICAgICAgICAgIGZvciBsIGluIEw6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobCxrKSBpbiBzZWxmLnN0YXRlOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwsIGspIGluIHNlbGYuc3RhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyArPSAxCiAgICAgICAgICAgICAgICAgcyAtPSBsaXZlCiAgICAgICAgICAgICAgICAgaWYgcyA9PSAzOgogICAgICAgICAgICAgICAgICAgICAjIEJpcnRoCi0gICAgICAgICAgICAgICAgICAgIGRbaSxqXSA9IDEKKyAgICAgICAgICAgICAgICAgICAgZFtpLCBqXSA9IDEKICAgICAgICAgICAgICAgICAgICAgaWYgY3Vyc2VzLmhhc19jb2xvcnMoKToKICAgICAgICAgICAgICAgICAgICAgICAgICMgTGV0J3MgcGljayBhIHJhbmRvbSBjb2xvciEKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmF0dHJzZXQoY3Vyc2VzLmNvbG9yX3BhaXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tLnJhbmRyYW5nZSgxLCA3KSkpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKGorMSwgaSsxLCBzZWxmLmNoYXIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKGogKyAxLCBpICsgMSwgc2VsZi5jaGFyKQogICAgICAgICAgICAgICAgICAgICBzZWxmLnNjci5hdHRyc2V0KDApCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaXZlOiBzZWxmLmJvcmluZyA9IDAKLSAgICAgICAgICAgICAgICBlbGlmIHMgPT0gMiBhbmQgbGl2ZTogZFtpLGpdID0gMSAgICAgICAjIFN1cnZpdmFsCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaXZlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ib3JpbmcgPSAwCisgICAgICAgICAgICAgICAgZWxpZiBzID09IDIgYW5kIGxpdmU6CisgICAgICAgICAgICAgICAgICAgICMgU3Vydml2YWwKKyAgICAgICAgICAgICAgICAgICAgZFtpLCBqXSA9IDEKICAgICAgICAgICAgICAgICBlbGlmIGxpdmU6CiAgICAgICAgICAgICAgICAgICAgICMgRGVhdGgKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goaisxLCBpKzEsICcgJykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goaiArIDEsIGkgKyAxLCAnICcpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYm9yaW5nID0gMAogICAgICAgICBzZWxmLnN0YXRlID0gZAogICAgICAgICBzZWxmLnNjci5yZWZyZXNoKCkKQEAgLTEzNSwxNiArMTM4LDE3IEBACiAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIHNlbGYuWCk6CiAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSgwLCBzZWxmLlkpOgogICAgICAgICAgICAgICAgIGlmIHJhbmRvbS5yYW5kb20oKSA+IDAuNToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXQoaixpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnNldChqLCBpKQogCiAKIGRlZiBlcmFzZV9tZW51KHN0ZHNjciwgbWVudV95KToKICAgICAiQ2xlYXIgdGhlIHNwYWNlIHdoZXJlIHRoZSBtZW51IHJlc2lkZXMiCiAgICAgc3Rkc2NyLm1vdmUobWVudV95LCAwKQogICAgIHN0ZHNjci5jbHJ0b2VvbCgpCi0gICAgc3Rkc2NyLm1vdmUobWVudV95KzEsIDApCisgICAgc3Rkc2NyLm1vdmUobWVudV95ICsgMSwgMCkKICAgICBzdGRzY3IuY2xydG9lb2woKQogCisKIGRlZiBkaXNwbGF5X21lbnUoc3Rkc2NyLCBtZW51X3kpOgogICAgICJEaXNwbGF5IHRoZSBtZW51IG9mIHBvc3NpYmxlIGtleXN0cm9rZSBjb21tYW5kcyIKICAgICBlcmFzZV9tZW51KHN0ZHNjciwgbWVudV95KQpAQCAtMTU0LDE1ICsxNTgsMTYgQEAKICAgICAgICAgc3Rkc2NyLmF0dHJzZXQoY3Vyc2VzLmNvbG9yX3BhaXIoMSkpCiAgICAgc3Rkc2NyLmFkZHN0cihtZW51X3ksIDQsCiAgICAgICAgICdVc2UgdGhlIGN1cnNvciBrZXlzIHRvIG1vdmUsIGFuZCBzcGFjZSBvciBFbnRlciB0byB0b2dnbGUgYSBjZWxsLicpCi0gICAgc3Rkc2NyLmFkZHN0cihtZW51X3krMSwgNCwKKyAgICBzdGRzY3IuYWRkc3RyKG1lbnVfeSArIDEsIDQsCiAgICAgICAgICdFKXJhc2UgdGhlIGJvYXJkLCBSKWFuZG9tIGZpbGwsIFMpdGVwIG9uY2Ugb3IgQylvbnRpbnVvdXNseSwgUSl1aXQnKQogICAgIHN0ZHNjci5hdHRyc2V0KDApCiAKKwogZGVmIGtleWxvb3Aoc3Rkc2NyKToKICAgICAjIENsZWFyIHRoZSBzY3JlZW4gYW5kIGRpc3BsYXkgdGhlIG1lbnUgb2Yga2V5cwogICAgIHN0ZHNjci5jbGVhcigpCiAgICAgc3Rkc2NyX3ksIHN0ZHNjcl94ID0gc3Rkc2NyLmdldG1heHl4KCkKLSAgICBtZW51X3kgPSAoc3Rkc2NyX3ktMyktMQorICAgIG1lbnVfeSA9IChzdGRzY3JfeSAtIDMpIC0gMQogICAgIGRpc3BsYXlfbWVudShzdGRzY3IsIG1lbnVfeSkKIAogICAgICMgSWYgY29sb3IsIHRoZW4gaW5pdGlhbGl6ZSB0aGUgY29sb3IgcGFpcnMKQEAgLTE3OSwxNiArMTg0LDE2IEBACiAgICAgY3Vyc2VzLm1vdXNlbWFzayhjdXJzZXMuQlVUVE9OMV9DTElDS0VEKQogCiAgICAgIyBBbGxvY2F0ZSBhIHN1YndpbmRvdyBmb3IgdGhlIExpZmUgYm9hcmQgYW5kIGNyZWF0ZSB0aGUgYm9hcmQgb2JqZWN0Ci0gICAgc3Vid2luID0gc3Rkc2NyLnN1YndpbihzdGRzY3JfeS0zLCBzdGRzY3JfeCwgMCwgMCkKKyAgICBzdWJ3aW4gPSBzdGRzY3Iuc3Vid2luKHN0ZHNjcl95IC0gMywgc3Rkc2NyX3gsIDAsIDApCiAgICAgYm9hcmQgPSBMaWZlQm9hcmQoc3Vid2luLCBjaGFyPW9yZCgnKicpKQogICAgIGJvYXJkLmRpc3BsYXkodXBkYXRlX2JvYXJkPUZhbHNlKQogCiAgICAgIyB4cG9zLCB5cG9zIGFyZSB0aGUgY3Vyc29yJ3MgcG9zaXRpb24KLSAgICB4cG9zLCB5cG9zID0gYm9hcmQuWC8vMiwgYm9hcmQuWS8vMgorICAgIHhwb3MsIHlwb3MgPSBib2FyZC5YIC8vIDIsIGJvYXJkLlkgLy8gMgogCiAgICAgIyBNYWluIGxvb3A6CiAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgc3Rkc2NyLm1vdmUoMSt5cG9zLCAxK3hwb3MpICAgICAjIE1vdmUgdGhlIGN1cnNvcgorICAgICAgICBzdGRzY3IubW92ZSgxICsgeXBvcywgMSArIHhwb3MpICAgIyBNb3ZlIHRoZSBjdXJzb3IKICAgICAgICAgYyA9IHN0ZHNjci5nZXRjaCgpICAgICAgICAgICAgICAgICMgR2V0IGEga2V5c3Ryb2tlCiAgICAgICAgIGlmIDAgPCBjIDwgMjU2OgogICAgICAgICAgICAgYyA9IGNocihjKQpAQCAtMjI0LDE1ICsyMjksMjEgQEAKICAgICAgICAgICAgICAgICBib2FyZC5kaXNwbGF5KHVwZGF0ZV9ib2FyZD1GYWxzZSkKICAgICAgICAgICAgIGVsaWYgYyBpbiAnU3MnOgogICAgICAgICAgICAgICAgIGJvYXJkLmRpc3BsYXkoKQotICAgICAgICAgICAgZWxzZTogcGFzcyAgICAgICAgICAgICAgICAgICMgSWdub3JlIGluY29ycmVjdCBrZXlzCi0gICAgICAgIGVsaWYgYyA9PSBjdXJzZXMuS0VZX1VQIGFuZCB5cG9zID4gMDogICAgICAgICAgICB5cG9zIC09IDEKLSAgICAgICAgZWxpZiBjID09IGN1cnNlcy5LRVlfRE9XTiBhbmQgeXBvcyA8IGJvYXJkLlktMTogIHlwb3MgKz0gMQotICAgICAgICBlbGlmIGMgPT0gY3Vyc2VzLktFWV9MRUZUIGFuZCB4cG9zID4gMDogICAgICAgICAgeHBvcyAtPSAxCi0gICAgICAgIGVsaWYgYyA9PSBjdXJzZXMuS0VZX1JJR0hUIGFuZCB4cG9zIDwgYm9hcmQuWC0xOiB4cG9zICs9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBJZ25vcmUgaW5jb3JyZWN0IGtleXMKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsaWYgYyA9PSBjdXJzZXMuS0VZX1VQIGFuZCB5cG9zID4gMDoKKyAgICAgICAgICAgIHlwb3MgLT0gMQorICAgICAgICBlbGlmIGMgPT0gY3Vyc2VzLktFWV9ET1dOIGFuZCB5cG9zICsgMSA8IGJvYXJkLlk6CisgICAgICAgICAgICB5cG9zICs9IDEKKyAgICAgICAgZWxpZiBjID09IGN1cnNlcy5LRVlfTEVGVCBhbmQgeHBvcyA+IDA6CisgICAgICAgICAgICB4cG9zIC09IDEKKyAgICAgICAgZWxpZiBjID09IGN1cnNlcy5LRVlfUklHSFQgYW5kIHhwb3MgKyAxIDwgYm9hcmQuWDoKKyAgICAgICAgICAgIHhwb3MgKz0gMQogICAgICAgICBlbGlmIGMgPT0gY3Vyc2VzLktFWV9NT1VTRToKICAgICAgICAgICAgIG1vdXNlX2lkLCBtb3VzZV94LCBtb3VzZV95LCBtb3VzZV96LCBidXR0b25fc3RhdGUgPSBjdXJzZXMuZ2V0bW91c2UoKQotICAgICAgICAgICAgaWYgKG1vdXNlX3ggPiAwIGFuZCBtb3VzZV94IDwgYm9hcmQuWCsxIGFuZAotICAgICAgICAgICAgICAgIG1vdXNlX3kgPiAwIGFuZCBtb3VzZV95IDwgYm9hcmQuWSsxKToKKyAgICAgICAgICAgIGlmIChtb3VzZV94ID4gMCBhbmQgbW91c2VfeCA8IGJvYXJkLlggKyAxIGFuZAorICAgICAgICAgICAgICAgIG1vdXNlX3kgPiAwIGFuZCBtb3VzZV95IDwgYm9hcmQuWSArIDEpOgogICAgICAgICAgICAgICAgIHhwb3MgPSBtb3VzZV94IC0gMQogICAgICAgICAgICAgICAgIHlwb3MgPSBtb3VzZV95IC0gMQogICAgICAgICAgICAgICAgIGJvYXJkLnRvZ2dsZSh5cG9zLCB4cG9zKQpAQCAtMjQ1LDcgKzI1Niw3IEBACiAKIAogZGVmIG1haW4oc3Rkc2NyKToKLSAgICBrZXlsb29wKHN0ZHNjcikgICAgICAgICAgICAgICAgICAgICMgRW50ZXIgdGhlIG1haW4gbG9vcAorICAgIGtleWxvb3Aoc3Rkc2NyKSAgICAgICAgICAgICAgICAgIyBFbnRlciB0aGUgbWFpbiBsb29wCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgY3Vyc2VzLndyYXBwZXIobWFpbikKZGlmZiAtLWdpdCBhL1Rvb2xzL2RlbW8vc3MxLnB5IGIvVG9vbHMvZGVtby9zczEucHkKaW5kZXggNGNlYTY2Ny4uNzFjOWJlOCAxMDA3NTUKLS0tIGEvVG9vbHMvZGVtby9zczEucHkKKysrIGIvVG9vbHMvZGVtby9zczEucHkKQEAgLTgxMiw3ICs4MTIsNiBAQAogCiBkZWYgdGVzdF9iYXNpYygpOgogICAgICJCYXNpYyBub24tZ3VpIHNlbGYtdGVzdC4iCi0gICAgaW1wb3J0IG9zCiAgICAgYSA9IFNoZWV0KCkKICAgICBmb3IgeCBpbiByYW5nZSgxLCAxMSk6CiAgICAgICAgIGZvciB5IGluIHJhbmdlKDEsIDExKToKZGlmZiAtLWdpdCBhL1Rvb2xzL2dkYi9saWJweXRob24ucHkgYi9Ub29scy9nZGIvbGlicHl0aG9uLnB5CmluZGV4IDhiYmJiMTAuLmNhYjIyNmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2dkYi9saWJweXRob24ucHkKKysrIGIvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weQpAQCAtNDksNiArNDksMTEgQEAKIF90eXBlX2NoYXJfcHRyID0gZ2RiLmxvb2t1cF90eXBlKCdjaGFyJykucG9pbnRlcigpICMgY2hhcioKIF90eXBlX3Vuc2lnbmVkX2NoYXJfcHRyID0gZ2RiLmxvb2t1cF90eXBlKCd1bnNpZ25lZCBjaGFyJykucG9pbnRlcigpICMgdW5zaWduZWQgY2hhcioKIF90eXBlX3ZvaWRfcHRyID0gZ2RiLmxvb2t1cF90eXBlKCd2b2lkJykucG9pbnRlcigpICMgdm9pZCoKK190eXBlX3Vuc2lnbmVkX3Nob3J0X3B0ciA9IGdkYi5sb29rdXBfdHlwZSgndW5zaWduZWQgc2hvcnQnKS5wb2ludGVyKCkKK190eXBlX3Vuc2lnbmVkX2ludF9wdHIgPSBnZGIubG9va3VwX3R5cGUoJ3Vuc2lnbmVkIGludCcpLnBvaW50ZXIoKQorCisjIHZhbHVlIGNvbXB1dGVkIGxhdGVyLCBzZWUgUHlVbmljb2RlT2JqZWN0UHRyLnByb3h5KCkKK19pc19wZXAzOTMgPSBOb25lCiAKIFNJWkVPRl9WT0lEX1AgPSBfdHlwZV92b2lkX3B0ci5zaXplb2YKIApAQCAtMzIyLDcgKzMyNyw2IEBACiAKICAgICAgICAgbmFtZV9tYXAgPSB7J2Jvb2wnOiBQeUJvb2xPYmplY3RQdHIsCiAgICAgICAgICAgICAgICAgICAgICdjbGFzc29iaic6IFB5Q2xhc3NPYmplY3RQdHIsCi0gICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSc6IFB5SW5zdGFuY2VPYmplY3RQdHIsCiAgICAgICAgICAgICAgICAgICAgICdOb25lVHlwZSc6IFB5Tm9uZVN0cnVjdFB0ciwKICAgICAgICAgICAgICAgICAgICAgJ2ZyYW1lJzogUHlGcmFtZU9iamVjdFB0ciwKICAgICAgICAgICAgICAgICAgICAgJ3NldCcgOiBQeVNldE9iamVjdFB0ciwKQEAgLTM5Niw3ICs0MDAsNyBAQAogCiAKIGRlZiBfd3JpdGVfaW5zdGFuY2VfcmVwcihvdXQsIHZpc2l0ZWQsIG5hbWUsIHB5b3BfYXR0cmRpY3QsIGFkZHJlc3MpOgotICAgICcnJ1NoYXJlZCBjb2RlIGZvciB1c2UgYnkgb2xkLXN0eWxlIGFuZCBuZXctc3R5bGUgY2xhc3NlczoKKyAgICAnJydTaGFyZWQgY29kZSBmb3IgdXNlIGJ5IGFsbCBjbGFzc2VzOgogICAgIHdyaXRlIGEgcmVwcmVzZW50YXRpb24gdG8gZmlsZS1saWtlIG9iamVjdCAib3V0IicnJwogICAgIG91dC53cml0ZSgnPCcpCiAgICAgb3V0LndyaXRlKG5hbWUpCkBAIC00NzksNyArNDgzLDcgQEAKIAogICAgIGRlZiBwcm94eXZhbChzZWxmLCB2aXNpdGVkKToKICAgICAgICAgJycnCi0gICAgICAgIFN1cHBvcnQgZm9yIG5ldy1zdHlsZSBjbGFzc2VzLgorICAgICAgICBTdXBwb3J0IGZvciBjbGFzc2VzLgogCiAgICAgICAgIEN1cnJlbnRseSB3ZSBqdXN0IGxvY2F0ZSB0aGUgZGljdGlvbmFyeSB1c2luZyBhIHRyYW5zbGl0ZXJhdGlvbiB0bwogICAgICAgICBweXRob24gb2YgX1B5T2JqZWN0X0dldERpY3RQdHIsIGlnbm9yaW5nIGRlc2NyaXB0b3JzCkBAIC00OTYsNyArNTAwLDcgQEAKICAgICAgICAgICAgIGF0dHJfZGljdCA9IHt9CiAgICAgICAgIHRwX25hbWUgPSBzZWxmLnNhZmVfdHBfbmFtZSgpCiAKLSAgICAgICAgIyBOZXctc3R5bGUgY2xhc3M6CisgICAgICAgICMgQ2xhc3M6CiAgICAgICAgIHJldHVybiBJbnN0YW5jZVByb3h5KHRwX25hbWUsIGF0dHJfZGljdCwgbG9uZyhzZWxmLl9nZGJ2YWwpKQogCiAgICAgZGVmIHdyaXRlX3JlcHIoc2VsZiwgb3V0LCB2aXNpdGVkKToKQEAgLTYzMCw5ICs2MzQsMTQgQEAKICAgICAgICAgWWllbGRzIGEgc2VxdWVuY2Ugb2YgKFB5T2JqZWN0UHRyIGtleSwgUHlPYmplY3RQdHIgdmFsdWUpIHBhaXJzLAogICAgICAgICBhbmFsYWdvdXMgdG8gZGljdC5pdGVyaXRlbXMoKQogICAgICAgICAnJycKLSAgICAgICAgZm9yIGkgaW4gc2FmZV9yYW5nZShzZWxmLmZpZWxkKCdtYV9tYXNrJykgKyAxKToKLSAgICAgICAgICAgIGVwID0gc2VsZi5maWVsZCgnbWFfdGFibGUnKSArIGkKLSAgICAgICAgICAgIHB5b3BfdmFsdWUgPSBQeU9iamVjdFB0ci5mcm9tX3B5b2JqZWN0X3B0cihlcFsnbWVfdmFsdWUnXSkKKyAgICAgICAga2V5cyA9IHNlbGYuZmllbGQoJ21hX2tleXMnKQorICAgICAgICB2YWx1ZXMgPSBzZWxmLmZpZWxkKCdtYV92YWx1ZXMnKQorICAgICAgICBmb3IgaSBpbiBzYWZlX3JhbmdlKGtleXNbJ2RrX3NpemUnXSk6CisgICAgICAgICAgICBlcCA9IGtleXNbJ2RrX2VudHJpZXMnXS5hZGRyZXNzICsgaQorICAgICAgICAgICAgaWYgbG9uZyh2YWx1ZXMpOgorICAgICAgICAgICAgICAgIHB5b3BfdmFsdWUgPSBQeU9iamVjdFB0ci5mcm9tX3B5b2JqZWN0X3B0cih2YWx1ZXNbaV0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHB5b3BfdmFsdWUgPSBQeU9iamVjdFB0ci5mcm9tX3B5b2JqZWN0X3B0cihlcFsnbWVfdmFsdWUnXSkKICAgICAgICAgICAgIGlmIG5vdCBweW9wX3ZhbHVlLmlzX251bGwoKToKICAgICAgICAgICAgICAgICBweW9wX2tleSA9IFB5T2JqZWN0UHRyLmZyb21fcHlvYmplY3RfcHRyKGVwWydtZV9rZXknXSkKICAgICAgICAgICAgICAgICB5aWVsZCAocHlvcF9rZXksIHB5b3BfdmFsdWUpCkBAIC02NjgsNDQgKzY3Nyw2IEBACiAgICAgICAgICAgICBweW9wX3ZhbHVlLndyaXRlX3JlcHIob3V0LCB2aXNpdGVkKQogICAgICAgICBvdXQud3JpdGUoJ30nKQogCi1jbGFzcyBQeUluc3RhbmNlT2JqZWN0UHRyKFB5T2JqZWN0UHRyKToKLSAgICBfdHlwZW5hbWUgPSAnUHlJbnN0YW5jZU9iamVjdCcKLQotICAgIGRlZiBwcm94eXZhbChzZWxmLCB2aXNpdGVkKToKLSAgICAgICAgIyBHdWFyZCBhZ2FpbnN0IGluZmluaXRlIGxvb3BzOgotICAgICAgICBpZiBzZWxmLmFzX2FkZHJlc3MoKSBpbiB2aXNpdGVkOgotICAgICAgICAgICAgcmV0dXJuIFByb3h5QWxyZWFkeVZpc2l0ZWQoJzwuLi4+JykKLSAgICAgICAgdmlzaXRlZC5hZGQoc2VsZi5hc19hZGRyZXNzKCkpCi0KLSAgICAgICAgIyBHZXQgbmFtZSBvZiBjbGFzczoKLSAgICAgICAgaW5fY2xhc3MgPSBzZWxmLnB5b3BfZmllbGQoJ2luX2NsYXNzJykKLSAgICAgICAgY2xfbmFtZSA9IGluX2NsYXNzLnB5b3BfZmllbGQoJ2NsX25hbWUnKS5wcm94eXZhbCh2aXNpdGVkKQotCi0gICAgICAgICMgR2V0IGRpY3Rpb25hcnkgb2YgaW5zdGFuY2UgYXR0cmlidXRlczoKLSAgICAgICAgaW5fZGljdCA9IHNlbGYucHlvcF9maWVsZCgnaW5fZGljdCcpLnByb3h5dmFsKHZpc2l0ZWQpCi0KLSAgICAgICAgIyBPbGQtc3R5bGUgY2xhc3M6Ci0gICAgICAgIHJldHVybiBJbnN0YW5jZVByb3h5KGNsX25hbWUsIGluX2RpY3QsIGxvbmcoc2VsZi5fZ2RidmFsKSkKLQotICAgIGRlZiB3cml0ZV9yZXByKHNlbGYsIG91dCwgdmlzaXRlZCk6Ci0gICAgICAgICMgR3VhcmQgYWdhaW5zdCBpbmZpbml0ZSBsb29wczoKLSAgICAgICAgaWYgc2VsZi5hc19hZGRyZXNzKCkgaW4gdmlzaXRlZDoKLSAgICAgICAgICAgIG91dC53cml0ZSgnPC4uLj4nKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHZpc2l0ZWQuYWRkKHNlbGYuYXNfYWRkcmVzcygpKQotCi0gICAgICAgICMgT2xkLXN0eWxlIGNsYXNzOgotCi0gICAgICAgICMgR2V0IG5hbWUgb2YgY2xhc3M6Ci0gICAgICAgIGluX2NsYXNzID0gc2VsZi5weW9wX2ZpZWxkKCdpbl9jbGFzcycpCi0gICAgICAgIGNsX25hbWUgPSBpbl9jbGFzcy5weW9wX2ZpZWxkKCdjbF9uYW1lJykucHJveHl2YWwodmlzaXRlZCkKLQotICAgICAgICAjIEdldCBkaWN0aW9uYXJ5IG9mIGluc3RhbmNlIGF0dHJpYnV0ZXM6Ci0gICAgICAgIHB5b3BfaW5fZGljdCA9IHNlbGYucHlvcF9maWVsZCgnaW5fZGljdCcpCi0KLSAgICAgICAgX3dyaXRlX2luc3RhbmNlX3JlcHIob3V0LCB2aXNpdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbF9uYW1lLCBweW9wX2luX2RpY3QsIHNlbGYuYXNfYWRkcmVzcygpKQotCiBjbGFzcyBQeUxpc3RPYmplY3RQdHIoUHlPYmplY3RQdHIpOgogICAgIF90eXBlbmFtZSA9ICdQeUxpc3RPYmplY3QnCiAKQEAgLTExMjMsMTUgKzEwOTQsNDYgQEAKICAgICAgICAgcmV0dXJuIF90eXBlX1B5X1VOSUNPREUuc2l6ZW9mCiAKICAgICBkZWYgcHJveHl2YWwoc2VsZiwgdmlzaXRlZCk6Ci0gICAgICAgICMgRnJvbSB1bmljb2Rlb2JqZWN0Lmg6Ci0gICAgICAgICMgICAgIFB5X3NzaXplX3QgbGVuZ3RoOyAgLyogTGVuZ3RoIG9mIHJhdyBVbmljb2RlIGRhdGEgaW4gYnVmZmVyICovCi0gICAgICAgICMgICAgIFB5X1VOSUNPREUgKnN0cjsgICAgLyogUmF3IFVuaWNvZGUgYnVmZmVyICovCi0gICAgICAgIGZpZWxkX2xlbmd0aCA9IGxvbmcoc2VsZi5maWVsZCgnbGVuZ3RoJykpCi0gICAgICAgIGZpZWxkX3N0ciA9IHNlbGYuZmllbGQoJ3N0cicpCisgICAgICAgIGdsb2JhbCBfaXNfcGVwMzkzCisgICAgICAgIGlmIF9pc19wZXAzOTMgaXMgTm9uZToKKyAgICAgICAgICAgIGZpZWxkcyA9IGdkYi5sb29rdXBfdHlwZSgnUHlVbmljb2RlT2JqZWN0JykudGFyZ2V0KCkuZmllbGRzKCkKKyAgICAgICAgICAgIF9pc19wZXAzOTMgPSAnZGF0YScgaW4gW2YubmFtZSBmb3IgZiBpbiBmaWVsZHNdCisgICAgICAgIGlmIF9pc19wZXAzOTM6CisgICAgICAgICAgICAjIFB5dGhvbiAzLjMgYW5kIG5ld2VyCisgICAgICAgICAgICBtYXlfaGF2ZV9zdXJyb2dhdGVzID0gRmFsc2UKKyAgICAgICAgICAgIGNvbXBhY3QgPSBzZWxmLmZpZWxkKCdfYmFzZScpCisgICAgICAgICAgICBhc2NpaSA9IGNvbXBhY3RbJ19iYXNlJ10KKyAgICAgICAgICAgIHN0YXRlID0gYXNjaWlbJ3N0YXRlJ10KKyAgICAgICAgICAgIGlzX2NvbXBhY3RfYXNjaWkgPSAoaW50KHN0YXRlWydhc2NpaSddKSBhbmQgaW50KHN0YXRlWydjb21wYWN0J10pKQorICAgICAgICAgICAgaWYgbm90IGludChzdGF0ZVsncmVhZHknXSk6CisgICAgICAgICAgICAgICAgIyBzdHJpbmcgaXMgbm90IHJlYWR5CisgICAgICAgICAgICAgICAgZmllbGRfbGVuZ3RoID0gbG9uZyhjb21wYWN0Wyd3c3RyX2xlbmd0aCddKQorICAgICAgICAgICAgICAgIG1heV9oYXZlX3N1cnJvZ2F0ZXMgPSBUcnVlCisgICAgICAgICAgICAgICAgZmllbGRfc3RyID0gYXNjaWlbJ3dzdHInXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmaWVsZF9sZW5ndGggPSBsb25nKGFzY2lpWydsZW5ndGgnXSkKKyAgICAgICAgICAgICAgICBpZiBpc19jb21wYWN0X2FzY2lpOgorICAgICAgICAgICAgICAgICAgICBmaWVsZF9zdHIgPSBhc2NpaS5hZGRyZXNzICsgMQorICAgICAgICAgICAgICAgIGVsaWYgaW50KHN0YXRlWydjb21wYWN0J10pOgorICAgICAgICAgICAgICAgICAgICBmaWVsZF9zdHIgPSBjb21wYWN0LmFkZHJlc3MgKyAxCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZmllbGRfc3RyID0gc2VsZi5maWVsZCgnZGF0YScpWydhbnknXQorICAgICAgICAgICAgICAgIHJlcHJfa2luZCA9IGludChzdGF0ZVsna2luZCddKQorICAgICAgICAgICAgICAgIGlmIHJlcHJfa2luZCA9PSAxOgorICAgICAgICAgICAgICAgICAgICBmaWVsZF9zdHIgPSBmaWVsZF9zdHIuY2FzdChfdHlwZV91bnNpZ25lZF9jaGFyX3B0cikKKyAgICAgICAgICAgICAgICBlbGlmIHJlcHJfa2luZCA9PSAyOgorICAgICAgICAgICAgICAgICAgICBmaWVsZF9zdHIgPSBmaWVsZF9zdHIuY2FzdChfdHlwZV91bnNpZ25lZF9zaG9ydF9wdHIpCisgICAgICAgICAgICAgICAgZWxpZiByZXByX2tpbmQgPT0gNDoKKyAgICAgICAgICAgICAgICAgICAgZmllbGRfc3RyID0gZmllbGRfc3RyLmNhc3QoX3R5cGVfdW5zaWduZWRfaW50X3B0cikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgUHl0aG9uIDMuMiBhbmQgZWFybGllcgorICAgICAgICAgICAgZmllbGRfbGVuZ3RoID0gbG9uZyhzZWxmLmZpZWxkKCdsZW5ndGgnKSkKKyAgICAgICAgICAgIGZpZWxkX3N0ciA9IHNlbGYuZmllbGQoJ3N0cicpCisgICAgICAgICAgICBtYXlfaGF2ZV9zdXJyb2dhdGVzID0gc2VsZi5jaGFyX3dpZHRoKCkgPT0gMgogCiAgICAgICAgICMgR2F0aGVyIGEgbGlzdCBvZiBpbnRzIGZyb20gdGhlIFB5X1VOSUNPREUgYXJyYXk7IHRoZXNlIGFyZSBlaXRoZXIKLSAgICAgICAgIyBVQ1MtMiBvciBVQ1MtNCBjb2RlIHBvaW50czoKLSAgICAgICAgaWYgc2VsZi5jaGFyX3dpZHRoKCkgPiAyOgorICAgICAgICAjIFVDUy0xLCBVQ1MtMiBvciBVQ1MtNCBjb2RlIHBvaW50czoKKyAgICAgICAgaWYgbm90IG1heV9oYXZlX3N1cnJvZ2F0ZXM6CiAgICAgICAgICAgICBQeV9VTklDT0RFcyA9IFtpbnQoZmllbGRfc3RyW2ldKSBmb3IgaSBpbiBzYWZlX3JhbmdlKGZpZWxkX2xlbmd0aCldCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIEEgbW9yZSBlbGFib3JhdGUgcm91dGluZSBpZiBzaXplb2YoUHlfVU5JQ09ERSkgaXMgMiBpbiB0aGUKQEAgLTEzMzAsNyArMTMzMiw3IEBACiAgIC91c3IvbGliL2RlYnVnL3Vzci9saWIvbGlicHl0aG9uMi42LnNvLjEuMC5kZWJ1Zy1nZGIucHkKICIiIgogZGVmIHJlZ2lzdGVyIChvYmopOgotICAgIGlmIG9iaiA9PSBOb25lOgorICAgIGlmIG9iaiBpcyBOb25lOgogICAgICAgICBvYmogPSBnZGIKIAogICAgICMgV2lyZSB1cCB0aGUgcHJldHR5LXByaW50ZXIKQEAgLTEzODgsNiArMTM5MCwyMyBAQAogICAgICAgICAgICAgaXRlcl9mcmFtZSA9IGl0ZXJfZnJhbWUubmV3ZXIoKQogICAgICAgICByZXR1cm4gaW5kZXgKIAorICAgICMgV2UgZGl2aWRlIGZyYW1lcyBpbnRvOgorICAgICMgICAtICJweXRob24gZnJhbWVzIjoKKyAgICAjICAgICAgIC0gImJ5dGVjb2RlIGZyYW1lcyIgaS5lLiBQeUV2YWxfRXZhbEZyYW1lRXgKKyAgICAjICAgICAgIC0gIm90aGVyIHB5dGhvbiBmcmFtZXMiOiB0aGluZ3MgdGhhdCBhcmUgb2YgaW50ZXJlc3QgZnJvbSBhIHB5dGhvbgorICAgICMgICAgICAgICBQT1YsIGJ1dCBhcmVuJ3QgYnl0ZWNvZGUgKGUuZy4gR0MsIEdJTCkKKyAgICAjICAgLSBldmVyeXRoaW5nIGVsc2UKKworICAgIGRlZiBpc19weXRob25fZnJhbWUoc2VsZik6CisgICAgICAgICcnJ0lzIHRoaXMgYSBQeUV2YWxfRXZhbEZyYW1lRXggZnJhbWUsIG9yIHNvbWUgb3RoZXIgaW1wb3J0YW50CisgICAgICAgIGZyYW1lPyAoc2VlIGlzX290aGVyX3B5dGhvbl9mcmFtZSBmb3Igd2hhdCAiaW1wb3J0YW50IiBtZWFucyBpbiB0aGlzCisgICAgICAgIGNvbnRleHQpJycnCisgICAgICAgIGlmIHNlbGYuaXNfZXZhbGZyYW1lZXgoKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIHNlbGYuaXNfb3RoZXJfcHl0aG9uX2ZyYW1lKCk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgIGRlZiBpc19ldmFsZnJhbWVleChzZWxmKToKICAgICAgICAgJycnSXMgdGhpcyBhIFB5RXZhbF9FdmFsRnJhbWVFeCBmcmFtZT8nJycKICAgICAgICAgaWYgc2VsZi5fZ2RiZnJhbWUubmFtZSgpID09ICdQeUV2YWxfRXZhbEZyYW1lRXgnOgpAQCAtMTQwNCw2ICsxNDIzLDQ5IEBACiAKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKyAgICBkZWYgaXNfb3RoZXJfcHl0aG9uX2ZyYW1lKHNlbGYpOgorICAgICAgICAnJydJcyB0aGlzIGZyYW1lIHdvcnRoIGRpc3BsYXlpbmcgaW4gcHl0aG9uIGJhY2t0cmFjZXM/CisgICAgICAgIEV4YW1wbGVzOgorICAgICAgICAgIC0gd2FpdGluZyBvbiB0aGUgR0lMCisgICAgICAgICAgLSBnYXJiYWdlLWNvbGxlY3RpbmcKKyAgICAgICAgICAtIHdpdGhpbiBhIENGdW5jdGlvbgorICAgICAgICAgSWYgaXQgaXMsIHJldHVybiBhIGRlc2NyaXB0aXZlIHN0cmluZworICAgICAgICAgRm9yIG90aGVyIGZyYW1lcywgcmV0dXJuIEZhbHNlCisgICAgICAgICAnJycKKyAgICAgICAgaWYgc2VsZi5pc193YWl0aW5nX2Zvcl9naWwoKToKKyAgICAgICAgICAgIHJldHVybiAnV2FpdGluZyBmb3IgdGhlIEdJTCcKKyAgICAgICAgZWxpZiBzZWxmLmlzX2djX2NvbGxlY3QoKToKKyAgICAgICAgICAgIHJldHVybiAnR2FyYmFnZS1jb2xsZWN0aW5nJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBEZXRlY3QgaW52b2NhdGlvbnMgb2YgUHlDRnVuY3Rpb24gaW5zdGFuY2VzOgorICAgICAgICAgICAgb2xkZXIgPSBzZWxmLm9sZGVyKCkKKyAgICAgICAgICAgIGlmIG9sZGVyIGFuZCBvbGRlci5fZ2RiZnJhbWUubmFtZSgpID09ICdQeUNGdW5jdGlvbl9DYWxsJzoKKyAgICAgICAgICAgICAgICAjIFdpdGhpbiB0aGF0IGZyYW1lOgorICAgICAgICAgICAgICAgICMgICAiZnVuYyIgaXMgdGhlIGxvY2FsIGNvbnRhaW5pbmcgdGhlIFB5T2JqZWN0KiBvZiB0aGUKKyAgICAgICAgICAgICAgICAjIFB5Q0Z1bmN0aW9uT2JqZWN0IGluc3RhbmNlCisgICAgICAgICAgICAgICAgIyAgICJmIiBpcyB0aGUgc2FtZSB2YWx1ZSwgYnV0IGNhc3QgdG8gKFB5Q0Z1bmN0aW9uT2JqZWN0KikKKyAgICAgICAgICAgICAgICAjICAgInNlbGYiIGlzIHRoZSAoUHlPYmplY3QqKSBvZiB0aGUgJ3NlbGYnCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAjIFVzZSB0aGUgcHJldHR5cHJpbnRlciBmb3IgdGhlIGZ1bmM6CisgICAgICAgICAgICAgICAgICAgIGZ1bmMgPSBvbGRlci5fZ2RiZnJhbWUucmVhZF92YXIoJ2Z1bmMnKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RyKGZ1bmMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdQeUNGdW5jdGlvbiBpbnZvY2F0aW9uICh1bmFibGUgdG8gcmVhZCAiZnVuYyIpJworCisgICAgICAgICMgVGhpcyBmcmFtZSBpc24ndCB3b3J0aCByZXBvcnRpbmc6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3dhaXRpbmdfZm9yX2dpbChzZWxmKToKKyAgICAgICAgJycnSXMgdGhpcyBmcmFtZSB3YWl0aW5nIG9uIHRoZSBHSUw/JycnCisgICAgICAgICMgVGhpcyBhc3N1bWVzIHRoZSBfUE9TSVhfVEhSRUFEUyB2ZXJzaW9uIG9mIFB5dGhvbi9jZXZhbF9naWwuaDoKKyAgICAgICAgbmFtZSA9IHNlbGYuX2dkYmZyYW1lLm5hbWUoKQorICAgICAgICBpZiBuYW1lOgorICAgICAgICAgICAgcmV0dXJuIG5hbWUuc3RhcnRzd2l0aCgncHRocmVhZF9jb25kX3RpbWVkd2FpdCcpCisKKyAgICBkZWYgaXNfZ2NfY29sbGVjdChzZWxmKToKKyAgICAgICAgJycnSXMgdGhpcyBmcmFtZSAiY29sbGVjdCIgd2l0aGluIHRoZSBnYXJiYWdlLWNvbGxlY3Rvcj8nJycKKyAgICAgICAgcmV0dXJuIHNlbGYuX2dkYmZyYW1lLm5hbWUoKSA9PSAnY29sbGVjdCcKKwogICAgIGRlZiBnZXRfcHlvcChzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZiA9IHNlbGYuX2dkYmZyYW1lLnJlYWRfdmFyKCdmJykKQEAgLTE0MzMsOCArMTQ5NSwyMiBAQAogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGdldF9zZWxlY3RlZF9weXRob25fZnJhbWUoY2xzKToKLSAgICAgICAgJycnVHJ5IHRvIG9idGFpbiB0aGUgRnJhbWUgZm9yIHRoZSBweXRob24gY29kZSBpbiB0aGUgc2VsZWN0ZWQgZnJhbWUsCi0gICAgICAgIG9yIE5vbmUnJycKKyAgICAgICAgJycnVHJ5IHRvIG9idGFpbiB0aGUgRnJhbWUgZm9yIHRoZSBweXRob24tcmVsYXRlZCBjb2RlIGluIHRoZSBzZWxlY3RlZAorICAgICAgICBmcmFtZSwgb3IgTm9uZScnJworICAgICAgICBmcmFtZSA9IGNscy5nZXRfc2VsZWN0ZWRfZnJhbWUoKQorCisgICAgICAgIHdoaWxlIGZyYW1lOgorICAgICAgICAgICAgaWYgZnJhbWUuaXNfcHl0aG9uX2ZyYW1lKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lCisgICAgICAgICAgICBmcmFtZSA9IGZyYW1lLm9sZGVyKCkKKworICAgICAgICAjIE5vdCBmb3VuZDoKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBnZXRfc2VsZWN0ZWRfYnl0ZWNvZGVfZnJhbWUoY2xzKToKKyAgICAgICAgJycnVHJ5IHRvIG9idGFpbiB0aGUgRnJhbWUgZm9yIHRoZSBweXRob24gYnl0ZWNvZGUgaW50ZXJwcmV0ZXIgaW4gdGhlCisgICAgICAgIHNlbGVjdGVkIEdEQiBmcmFtZSwgb3IgTm9uZScnJwogICAgICAgICBmcmFtZSA9IGNscy5nZXRfc2VsZWN0ZWRfZnJhbWUoKQogCiAgICAgICAgIHdoaWxlIGZyYW1lOgpAQCAtMTQ1OCw3ICsxNTM0LDExIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJyMlaSAodW5hYmxlIHRvIHJlYWQgcHl0aG9uIGZyYW1lIGluZm9ybWF0aW9uKVxuJyAlIHNlbGYuZ2V0X2luZGV4KCkpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcjJWlcbicgJSBzZWxmLmdldF9pbmRleCgpKQorICAgICAgICAgICAgaW5mbyA9IHNlbGYuaXNfb3RoZXJfcHl0aG9uX2ZyYW1lKCkKKyAgICAgICAgICAgIGlmIGluZm86CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnIyVpICVzXG4nICUgKHNlbGYuZ2V0X2luZGV4KCksIGluZm8pKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcjJWlcbicgJSBzZWxmLmdldF9pbmRleCgpKQogCiAgICAgZGVmIHByaW50X3RyYWNlYmFjayhzZWxmKToKICAgICAgICAgaWYgc2VsZi5pc19ldmFsZnJhbWVleCgpOgpAQCAtMTQ3Miw3ICsxNTUyLDExIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJyAgKHVuYWJsZSB0byByZWFkIHB5dGhvbiBmcmFtZSBpbmZvcm1hdGlvbilcbicpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcgIChub3QgYSBweXRob24gZnJhbWUpXG4nKQorICAgICAgICAgICAgaW5mbyA9IHNlbGYuaXNfb3RoZXJfcHl0aG9uX2ZyYW1lKCkKKyAgICAgICAgICAgIGlmIGluZm86CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnICAlc1xuJyAlIGluZm8pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJyAgKG5vdCBhIHB5dGhvbiBmcmFtZSlcbicpCiAKIGNsYXNzIFB5TGlzdChnZGIuQ29tbWFuZCk6CiAgICAgJycnTGlzdCB0aGUgY3VycmVudCBQeXRob24gc291cmNlIGNvZGUsIGlmIGFueQpAQCAtMTUwOCw5ICsxNTkyLDEwIEBACiAgICAgICAgIGlmIG06CiAgICAgICAgICAgICBzdGFydCwgZW5kID0gbWFwKGludCwgbS5ncm91cHMoKSkKIAotICAgICAgICBmcmFtZSA9IEZyYW1lLmdldF9zZWxlY3RlZF9weXRob25fZnJhbWUoKQorICAgICAgICAjIHB5LWxpc3QgcmVxdWlyZXMgYW4gYWN0dWFsIFB5RXZhbF9FdmFsRnJhbWVFeCBmcmFtZToKKyAgICAgICAgZnJhbWUgPSBGcmFtZS5nZXRfc2VsZWN0ZWRfYnl0ZWNvZGVfZnJhbWUoKQogICAgICAgICBpZiBub3QgZnJhbWU6Ci0gICAgICAgICAgICBwcmludCAnVW5hYmxlIHRvIGxvY2F0ZSBweXRob24gZnJhbWUnCisgICAgICAgICAgICBwcmludCAnVW5hYmxlIHRvIGxvY2F0ZSBnZGIgZnJhbWUgZm9yIHB5dGhvbiBieXRlY29kZSBpbnRlcnByZXRlcicKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIHB5b3AgPSBmcmFtZS5nZXRfcHlvcCgpCkBAIC0xNTYyLDcgKzE2NDcsNyBAQAogICAgICAgICBpZiBub3QgaXRlcl9mcmFtZToKICAgICAgICAgICAgIGJyZWFrCiAKLSAgICAgICAgaWYgaXRlcl9mcmFtZS5pc19ldmFsZnJhbWVleCgpOgorICAgICAgICBpZiBpdGVyX2ZyYW1lLmlzX3B5dGhvbl9mcmFtZSgpOgogICAgICAgICAgICAgIyBSZXN1bHQ6CiAgICAgICAgICAgICBpZiBpdGVyX2ZyYW1lLnNlbGVjdCgpOgogICAgICAgICAgICAgICAgIGl0ZXJfZnJhbWUucHJpbnRfc3VtbWFyeSgpCkBAIC0xNjE2LDcgKzE3MDEsNyBAQAogICAgIGRlZiBpbnZva2Uoc2VsZiwgYXJncywgZnJvbV90dHkpOgogICAgICAgICBmcmFtZSA9IEZyYW1lLmdldF9zZWxlY3RlZF9weXRob25fZnJhbWUoKQogICAgICAgICB3aGlsZSBmcmFtZToKLSAgICAgICAgICAgIGlmIGZyYW1lLmlzX2V2YWxmcmFtZWV4KCk6CisgICAgICAgICAgICBpZiBmcmFtZS5pc19weXRob25fZnJhbWUoKToKICAgICAgICAgICAgICAgICBmcmFtZS5wcmludF9zdW1tYXJ5KCkKICAgICAgICAgICAgIGZyYW1lID0gZnJhbWUub2xkZXIoKQogCkBAIC0xNjM1LDcgKzE3MjAsNyBAQAogICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOlxuJykKICAgICAgICAgZnJhbWUgPSBGcmFtZS5nZXRfc2VsZWN0ZWRfcHl0aG9uX2ZyYW1lKCkKICAgICAgICAgd2hpbGUgZnJhbWU6Ci0gICAgICAgICAgICBpZiBmcmFtZS5pc19ldmFsZnJhbWVleCgpOgorICAgICAgICAgICAgaWYgZnJhbWUuaXNfcHl0aG9uX2ZyYW1lKCk6CiAgICAgICAgICAgICAgICAgZnJhbWUucHJpbnRfdHJhY2ViYWNrKCkKICAgICAgICAgICAgIGZyYW1lID0gZnJhbWUub2xkZXIoKQogCmRpZmYgLS1naXQgYS9Ub29scy9oZy9oZ3RvdWNoLnB5IGIvVG9vbHMvaGcvaGd0b3VjaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTYxYTEwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvaGcvaGd0b3VjaC5weQpAQCAtMCwwICsxLDEwMyBAQAorIiIiQnJpbmcgdGltZSBzdGFtcHMgb2YgZ2VuZXJhdGVkIGNoZWNrZWQtaW4gZmlsZXMgaW50byB0aGUgcmlnaHQgb3JkZXIKKworQSB2ZXJzaW9uZWQgY29uZmlndXJhdGlvbiBmaWxlIC5oZ3RvdWNoIHNwZWNpZmllcyBnZW5lcmF0ZWQgZmlsZXMsIGluIHRoZQorc3ludGF4IG9mIG1ha2UgcnVsZXMuCisKKyAgb3V0cHV0OiAgICBpbnB1dDEgaW5wdXQyCisKK0luIGFkZGl0aW9uIHRvIHRoZSBkZXBlbmRlbmN5IHN5bnRheCwgIy1jb21tZW50cyBhcmUgc3VwcG9ydGVkLgorIiIiCitpbXBvcnQgZXJybm8KK2ltcG9ydCBvcworCitkZWYgcGFyc2VfY29uZmlnKHJlcG8pOgorICAgIHRyeToKKyAgICAgICAgZnAgPSByZXBvLndmaWxlKCIuaGd0b3VjaCIpCisgICAgZXhjZXB0IElPRXJyb3IsIGU6CisgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgcmV0dXJuIHt9CisgICAgcmVzdWx0ID0ge30KKyAgICB3aXRoIGZwOgorICAgICAgICBmb3IgbGluZSBpbiBmcDoKKyAgICAgICAgICAgICMgc3RyaXAgY29tbWVudHMKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0KCcjJylbMF0uc3RyaXAoKQorICAgICAgICAgICAgaWYgJzonIG5vdCBpbiBsaW5lOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBvdXRwdXRzLCBpbnB1dHMgPSBsaW5lLnNwbGl0KCc6JywgMSkKKyAgICAgICAgICAgIG91dHB1dHMgPSBvdXRwdXRzLnNwbGl0KCkKKyAgICAgICAgICAgIGlucHV0cyA9IGlucHV0cy5zcGxpdCgpCisgICAgICAgICAgICBmb3IgbyBpbiBvdXRwdXRzOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0W29dLmV4dGVuZChpbnB1dHMpCisgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgICAgICByZXN1bHRbb10gPSBpbnB1dHMKKyAgICByZXR1cm4gcmVzdWx0CisKK2RlZiBjaGVja19ydWxlKHVpLCByZXBvLCBtb2RpZmllZCwgb3V0cHV0LCBpbnB1dHMpOgorICAgIGZfb3V0cHV0ID0gcmVwby53am9pbihvdXRwdXQpCisgICAgdHJ5OgorICAgICAgICBvX3RpbWUgPSBvcy5zdGF0KGZfb3V0cHV0KS5zdF9tdGltZQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICB1aS53YXJuKCJHZW5lcmF0ZWQgZmlsZSAlcyBkb2VzIG5vdCBleGlzdFxuIiAlIG91dHB1dCkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgbmVlZF90b3VjaCA9IEZhbHNlCisgICAgYmFja2RhdGUgPSBOb25lCisgICAgYmFja2RhdGVfc291cmNlID0gTm9uZQorICAgIGZvciBpIGluIGlucHV0czoKKyAgICAgICAgZl9pID0gcmVwby53am9pbihpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpX3RpbWUgPSBvcy5zdGF0KGZfaSkuc3RfbXRpbWUKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICB1aS53YXJuKCIuaGd0b3VjaCBpbnB1dCBmaWxlICVzIGRvZXMgbm90IGV4aXN0XG4iICUgaSkKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBpIGluIG1vZGlmaWVkOgorICAgICAgICAgICAgIyBpbnB1dCBpcyBtb2RpZmllZC4gTmVlZCB0byBiYWNrZGF0ZSBhdCBsZWFzdCB0byBpX3RpbWUKKyAgICAgICAgICAgIGlmIGJhY2tkYXRlIGlzIE5vbmUgb3IgYmFja2RhdGUgPiBpX3RpbWU6CisgICAgICAgICAgICAgICAgYmFja2RhdGUgPSBpX3RpbWUKKyAgICAgICAgICAgICAgICBiYWNrZGF0ZV9zb3VyY2UgPSBpCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBvX3RpbWUgPD0gaV90aW1lOgorICAgICAgICAgICAgIyBnZW5lcmF0ZWQgZmlsZSBpcyBvbGRlciwgdG91Y2gKKyAgICAgICAgICAgIG5lZWRfdG91Y2ggPSBUcnVlCisgICAgaWYgYmFja2RhdGUgaXMgbm90IE5vbmU6CisgICAgICAgIHVpLndhcm4oIklucHV0ICVzIGZvciBmaWxlICVzIGxvY2FsbHkgbW9kaWZpZWRcbiIgJSAoYmFja2RhdGVfc291cmNlLCBvdXRwdXQpKQorICAgICAgICAjIHNldCB0byAxcyBiZWZvcmUgb2xkZXN0IG1vZGlmaWVkIGlucHV0CisgICAgICAgIGJhY2tkYXRlIC09IDEKKyAgICAgICAgb3MudXRpbWUoZl9vdXRwdXQsIChiYWNrZGF0ZSwgYmFja2RhdGUpKQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBpZiBuZWVkX3RvdWNoOgorICAgICAgICB1aS5ub3RlKCJUb3VjaGluZyAlc1xuIiAlIG91dHB1dCkKKyAgICAgICAgb3MudXRpbWUoZl9vdXRwdXQsIE5vbmUpCisgICAgcmV0dXJuIFRydWUKKworZGVmIGRvX3RvdWNoKHVpLCByZXBvKToKKyAgICBtb2RpZmllZCA9IHJlcG8uc3RhdHVzKClbMF0KKyAgICBkZXBlbmRlbmNpZXMgPSBwYXJzZV9jb25maWcocmVwbykKKyAgICBzdWNjZXNzID0gVHJ1ZQorICAgICMgdHJ5IHByb2Nlc3NpbmcgYWxsIHJ1bGVzIGluIHRvcG9sb2dpY2FsIG9yZGVyCisgICAgaG9sZF9iYWNrID0ge30KKyAgICB3aGlsZSBkZXBlbmRlbmNpZXM6CisgICAgICAgIG91dHB1dCwgaW5wdXRzID0gZGVwZW5kZW5jaWVzLnBvcGl0ZW0oKQorICAgICAgICAjIGNoZWNrIHdoZXRoZXIgYW55IG9mIHRoZSBpbnB1dHMgaXMgZ2VuZXJhdGVkCisgICAgICAgIGZvciBpIGluIGlucHV0czoKKyAgICAgICAgICAgIGlmIGkgaW4gZGVwZW5kZW5jaWVzOgorICAgICAgICAgICAgICAgIGhvbGRfYmFja1tvdXRwdXRdID0gaW5wdXRzCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgc3VjY2VzcyA9IGNoZWNrX3J1bGUodWksIHJlcG8sIG1vZGlmaWVkLCBvdXRwdXQsIGlucHV0cykKKyAgICAgICAgIyBwdXQgYmFjayBoZWxkIGJhY2sgcnVsZXMKKyAgICAgICAgZGVwZW5kZW5jaWVzLnVwZGF0ZShob2xkX2JhY2spCisgICAgICAgIGhvbGRfYmFjayA9IHt9CisgICAgaWYgaG9sZF9iYWNrOgorICAgICAgICB1aS53YXJuKCJDeWNsaWMgZGVwZW5kZW5jeSBpbnZvbHZpbmcgJXNcbiIgJSAoJyAnLmpvaW4oaG9sZF9iYWNrLmtleXMoKSkpKQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gc3VjY2VzcworCitkZWYgdG91Y2godWksIHJlcG8pOgorICAgICJ0b3VjaCBnZW5lcmF0ZWQgZmlsZXMgdGhhdCBhcmUgb2xkZXIgdGhhbiB0aGVpciBzb3VyY2VzIGFmdGVyIGFuIHVwZGF0ZS4iCisgICAgZG9fdG91Y2godWksIHJlcG8pCisKK2NtZHRhYmxlID0geworICAgICJ0b3VjaCI6ICh0b3VjaCwgW10sCisgICAgICAgICAgICAgICJ0b3VjaCBnZW5lcmF0ZWQgZmlsZXMgYWNjb3JkaW5nIHRvIHRoZSAuaGd0b3VjaCBjb25maWd1cmF0aW9uIikKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5IGIvVG9vbHMvaTE4bi9weWdldHRleHQucHkKaW5kZXggNzc5M2JjNi4uNzlkOTc2YiAxMDA3NTUKLS0tIGEvVG9vbHMvaTE4bi9weWdldHRleHQucHkKKysrIGIvVG9vbHMvaTE4bi9weWdldHRleHQucHkKQEAgLTE2Myw3ICsxNjMsNiBAQAogaW1wb3J0IGdldG9wdAogaW1wb3J0IHRva2VuCiBpbXBvcnQgdG9rZW5pemUKLWltcG9ydCBvcGVyYXRvcgogCiBfX3ZlcnNpb25fXyA9ICcxLjUnCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2ltcG9ydGJlbmNoL1JFQURNRSBiL1Rvb2xzL2ltcG9ydGJlbmNoL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWE1NTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvaW1wb3J0YmVuY2gvUkVBRE1FCkBAIC0wLDAgKzEsNiBAQAorSW1wb3J0YmVuY2ggaXMgYSBzZXQgb2YgbWljcm8tYmVuY2htYXJrcyBmb3IgdmFyaW91cyBpbXBvcnQgc2NlbmFyaW9zLgorCitJdCBzaG91bGQgbm90IGJlIHVzZWQgYXMgYW4gb3ZlcmFsbCBiZW5jaG1hcmsgb2YgaW1wb3J0IHBlcmZvcm1hbmNlLCBidXQgcmF0aGVyCithbiBlYXN5IHdheSB0byBtZWFzdXJlIGltcGFjdCBvZiBwb3NzaWJsZSBjb2RlIGNoYW5nZXMuIEZvciBhIHJlYWwtd29ybGQKK2JlbmNobWFyayBvZiBpbXBvcnQsIHVzZSB0aGUgbm9ybWFsX3N0YXJ0dXAgYmVuY2htYXJrIGZyb20KK2hnLnB5dGhvbi5vcmcvYmVuY2htYXJrcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL2ltcG9ydGJlbmNoL2ltcG9ydGJlbmNoLnB5IGIvVG9vbHMvaW1wb3J0YmVuY2gvaW1wb3J0YmVuY2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE0YzBlNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2ltcG9ydGJlbmNoL2ltcG9ydGJlbmNoLnB5CkBAIC0wLDAgKzEsMjUyIEBACisiIiJCZW5jaG1hcmsgc29tZSBiYXNpYyBpbXBvcnQgdXNlLWNhc2VzLgorCitUaGUgYXNzdW1wdGlvbiBpcyBtYWRlIHRoYXQgdGhpcyBiZW5jaG1hcmsgaXMgcnVuIGluIGEgZnJlc2ggaW50ZXJwcmV0ZXIgYW5kCit0aHVzIGhhcyBubyBleHRlcm5hbCBjaGFuZ2VzIG1hZGUgdG8gaW1wb3J0LXJlbGF0ZWQgYXR0cmlidXRlcyBpbiBzeXMuCisKKyIiIgorZnJvbSB0ZXN0LnRlc3RfaW1wb3J0bGliIGltcG9ydCB1dGlsCitmcm9tIHRlc3QudGVzdF9pbXBvcnRsaWIuc291cmNlIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCitpbXBvcnQgZGVjaW1hbAoraW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYgoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKK2ltcG9ydCBqc29uCitpbXBvcnQgb3MKK2ltcG9ydCBweV9jb21waWxlCitpbXBvcnQgc3lzCitpbXBvcnQgdGFibmFubnkKK2ltcG9ydCB0aW1laXQKKworCitkZWYgYmVuY2gobmFtZSwgY2xlYW51cD1sYW1iZGE6IE5vbmUsICosIHNlY29uZHM9MSwgcmVwZWF0PTMpOgorICAgICIiIkJlbmNoIHRoZSBnaXZlbiBzdGF0ZW1lbnQgYXMgbWFueSB0aW1lcyBhcyBuZWNlc3NhcnkgdW50aWwgdG90YWwKKyAgICBleGVjdXRpb25zIHRha2Ugb25lIHNlY29uZC4iIiIKKyAgICBzdG10ID0gIl9faW1wb3J0X18oeyFyfSkiLmZvcm1hdChuYW1lKQorICAgIHRpbWVyID0gdGltZWl0LlRpbWVyKHN0bXQpCisgICAgZm9yIHggaW4gcmFuZ2UocmVwZWF0KToKKyAgICAgICAgdG90YWxfdGltZSA9IDAKKyAgICAgICAgY291bnQgPSAwCisgICAgICAgIHdoaWxlIHRvdGFsX3RpbWUgPCBzZWNvbmRzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRvdGFsX3RpbWUgKz0gdGltZXIudGltZWl0KDEpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGNsZWFudXAoKQorICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBPbmUgZXhlY3V0aW9uIHRvbyBmYXIKKyAgICAgICAgICAgIGlmIHRvdGFsX3RpbWUgPiBzZWNvbmRzOgorICAgICAgICAgICAgICAgIGNvdW50IC09IDEKKyAgICAgICAgeWllbGQgY291bnQgLy8gc2Vjb25kcworCitkZWYgZnJvbV9jYWNoZShzZWNvbmRzLCByZXBlYXQpOgorICAgICIiInN5cy5tb2R1bGVzIiIiCisgICAgbmFtZSA9ICc8YmVuY2htYXJrIGltcG9ydD4nCisgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUobmFtZSkKKyAgICBtb2R1bGUuX19maWxlX18gPSAnPHRlc3Q+JworICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9ICcnCisgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCisgICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgcmVwZWF0PXJlcGVhdCwgc2Vjb25kcz1zZWNvbmRzKToKKyAgICAgICAgICAgIHlpZWxkIHJlc3VsdAorCisKK2RlZiBidWlsdGluX21vZChzZWNvbmRzLCByZXBlYXQpOgorICAgICIiIkJ1aWx0LWluIG1vZHVsZSIiIgorICAgIG5hbWUgPSAnZXJybm8nCisgICAgaWYgbmFtZSBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgZGVsIHN5cy5tb2R1bGVzW25hbWVdCisgICAgIyBSZWx5aW5nIG9uIGJ1aWx0LWluIGltcG9ydGVyIGJlaW5nIGltcGxpY2l0LgorICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICB5aWVsZCByZXN1bHQKKworCitkZWYgc291cmNlX3dvX2J5dGVjb2RlKHNlY29uZHMsIHJlcGVhdCk6CisgICAgIiIiU291cmNlIHcvbyBieXRlY29kZTogc21hbGwiIiIKKyAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IFRydWUKKyAgICB0cnk6CisgICAgICAgIG5hbWUgPSAnX19pbXBvcnRsaWJfdGVzdF9iZW5jaG1hcmtfXycKKyAgICAgICAgIyBDbGVhcnMgb3V0IHN5cy5tb2R1bGVzIGFuZCBwdXRzIGFuIGVudHJ5IGF0IHRoZSBmcm9udCBvZiBzeXMucGF0aC4KKyAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhuYW1lKSBhcyBtYXBwaW5nOgorICAgICAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCisgICAgICAgICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChpbXBvcnRsaWIubWFjaGluZXJ5LlBhdGhGaW5kZXIpCisgICAgICAgICAgICBsb2FkZXIgPSAoaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTLCBUcnVlKQorICAgICAgICAgICAgc3lzLnBhdGhfaG9va3MuYXBwZW5kKGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlci5wYXRoX2hvb2sobG9hZGVyKSkKKyAgICAgICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHM9c2Vjb25kcyk6CisgICAgICAgICAgICAgICAgeWllbGQgcmVzdWx0CisgICAgZmluYWxseToKKyAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBGYWxzZQorCisKK2RlZiBfd29fYnl0ZWNvZGUobW9kdWxlKToKKyAgICBuYW1lID0gbW9kdWxlLl9fbmFtZV9fCisgICAgZGVmIGJlbmNobWFya193b19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgorICAgICAgICAiIiJTb3VyY2Ugdy9vIGJ5dGVjb2RlOiB7fSIiIgorICAgICAgICBieXRlY29kZV9wYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKG1vZHVsZS5fX2ZpbGVfXykKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoYnl0ZWNvZGVfcGF0aCk6CisgICAgICAgICAgICBvcy51bmxpbmsoYnl0ZWNvZGVfcGF0aCkKKyAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBUcnVlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdD1yZXBlYXQsIHNlY29uZHM9c2Vjb25kcyk6CisgICAgICAgICAgICAgICAgeWllbGQgcmVzdWx0CisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IEZhbHNlCisKKyAgICBiZW5jaG1hcmtfd29fYnl0ZWNvZGUuX19kb2NfXyA9IGJlbmNobWFya193b19ieXRlY29kZS5fX2RvY19fLmZvcm1hdChuYW1lKQorICAgIHJldHVybiBiZW5jaG1hcmtfd29fYnl0ZWNvZGUKKwordGFibmFubnlfd29fYnl0ZWNvZGUgPSBfd29fYnl0ZWNvZGUodGFibmFubnkpCitkZWNpbWFsX3dvX2J5dGVjb2RlID0gX3dvX2J5dGVjb2RlKGRlY2ltYWwpCisKKworZGVmIHNvdXJjZV93cml0aW5nX2J5dGVjb2RlKHNlY29uZHMsIHJlcGVhdCk6CisgICAgIiIiU291cmNlIHdyaXRpbmcgYnl0ZWNvZGU6IHNtYWxsIiIiCisgICAgYXNzZXJ0IG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZQorICAgIG5hbWUgPSAnX19pbXBvcnRsaWJfdGVzdF9iZW5jaG1hcmtfXycKKyAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKG5hbWUpIGFzIG1hcHBpbmc6CisgICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKGltcG9ydGxpYi5tYWNoaW5lcnkuUGF0aEZpbmRlcikKKyAgICAgICAgbG9hZGVyID0gKGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTLCBUcnVlKQorICAgICAgICBzeXMucGF0aF9ob29rcy5hcHBlbmQoaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyLnBhdGhfaG9vayhsb2FkZXIpKQorICAgICAgICBkZWYgY2xlYW51cCgpOgorICAgICAgICAgICAgc3lzLm1vZHVsZXMucG9wKG5hbWUpCisgICAgICAgICAgICBvcy51bmxpbmsoaW1wLmNhY2hlX2Zyb21fc291cmNlKG1hcHBpbmdbbmFtZV0pKQorICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGNsZWFudXAsIHJlcGVhdD1yZXBlYXQsIHNlY29uZHM9c2Vjb25kcyk6CisgICAgICAgICAgICBhc3NlcnQgbm90IG9zLnBhdGguZXhpc3RzKGltcC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nW25hbWVdKSkKKyAgICAgICAgICAgIHlpZWxkIHJlc3VsdAorCisKK2RlZiBfd3JpdGluZ19ieXRlY29kZShtb2R1bGUpOgorICAgIG5hbWUgPSBtb2R1bGUuX19uYW1lX18KKyAgICBkZWYgd3JpdGluZ19ieXRlY29kZV9iZW5jaG1hcmsoc2Vjb25kcywgcmVwZWF0KToKKyAgICAgICAgIiIiU291cmNlIHdyaXRpbmcgYnl0ZWNvZGU6IHt9IiIiCisgICAgICAgIGFzc2VydCBub3Qgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUKKyAgICAgICAgZGVmIGNsZWFudXAoKToKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzLnBvcChuYW1lKQorICAgICAgICAgICAgb3MudW5saW5rKGltcC5jYWNoZV9mcm9tX3NvdXJjZShtb2R1bGUuX19maWxlX18pKQorICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGNsZWFudXAsIHJlcGVhdD1yZXBlYXQsIHNlY29uZHM9c2Vjb25kcyk6CisgICAgICAgICAgICB5aWVsZCByZXN1bHQKKworICAgIHdyaXRpbmdfYnl0ZWNvZGVfYmVuY2htYXJrLl9fZG9jX18gPSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRpbmdfYnl0ZWNvZGVfYmVuY2htYXJrLl9fZG9jX18uZm9ybWF0KG5hbWUpKQorICAgIHJldHVybiB3cml0aW5nX2J5dGVjb2RlX2JlbmNobWFyaworCit0YWJuYW5ueV93cml0aW5nX2J5dGVjb2RlID0gX3dyaXRpbmdfYnl0ZWNvZGUodGFibmFubnkpCitkZWNpbWFsX3dyaXRpbmdfYnl0ZWNvZGUgPSBfd3JpdGluZ19ieXRlY29kZShkZWNpbWFsKQorCisKK2RlZiBzb3VyY2VfdXNpbmdfYnl0ZWNvZGUoc2Vjb25kcywgcmVwZWF0KToKKyAgICAiIiJTb3VyY2Ugdy8gYnl0ZWNvZGU6IHNtYWxsIiIiCisgICAgbmFtZSA9ICdfX2ltcG9ydGxpYl90ZXN0X2JlbmNobWFya19fJworICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobmFtZSkgYXMgbWFwcGluZzoKKyAgICAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoaW1wb3J0bGliLm1hY2hpbmVyeS5QYXRoRmluZGVyKQorICAgICAgICBsb2FkZXIgPSAoaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLAorICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTLCBUcnVlKQorICAgICAgICBzeXMucGF0aF9ob29rcy5hcHBlbmQoaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyLnBhdGhfaG9vayhsb2FkZXIpKQorICAgICAgICBweV9jb21waWxlLmNvbXBpbGUobWFwcGluZ1tuYW1lXSkKKyAgICAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKGltcC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nW25hbWVdKSkKKyAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBsYW1iZGE6IHN5cy5tb2R1bGVzLnBvcChuYW1lKSwgcmVwZWF0PXJlcGVhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgeWllbGQgcmVzdWx0CisKKworZGVmIF91c2luZ19ieXRlY29kZShtb2R1bGUpOgorICAgIG5hbWUgPSBtb2R1bGUuX19uYW1lX18KKyAgICBkZWYgdXNpbmdfYnl0ZWNvZGVfYmVuY2htYXJrKHNlY29uZHMsIHJlcGVhdCk6CisgICAgICAgICIiIlNvdXJjZSB3LyBieXRlY29kZToge30iIiIKKyAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKG1vZHVsZS5fX2ZpbGVfXykKKyAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBsYW1iZGE6IHN5cy5tb2R1bGVzLnBvcChuYW1lKSwgcmVwZWF0PXJlcGVhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgeWllbGQgcmVzdWx0CisKKyAgICB1c2luZ19ieXRlY29kZV9iZW5jaG1hcmsuX19kb2NfXyA9ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdfYnl0ZWNvZGVfYmVuY2htYXJrLl9fZG9jX18uZm9ybWF0KG5hbWUpKQorICAgIHJldHVybiB1c2luZ19ieXRlY29kZV9iZW5jaG1hcmsKKwordGFibmFubnlfdXNpbmdfYnl0ZWNvZGUgPSBfdXNpbmdfYnl0ZWNvZGUodGFibmFubnkpCitkZWNpbWFsX3VzaW5nX2J5dGVjb2RlID0gX3VzaW5nX2J5dGVjb2RlKGRlY2ltYWwpCisKKworZGVmIG1haW4oaW1wb3J0Xywgb3B0aW9ucyk6CisgICAgaWYgb3B0aW9ucy5zb3VyY2VfZmlsZToKKyAgICAgICAgd2l0aCBvcHRpb25zLnNvdXJjZV9maWxlOgorICAgICAgICAgICAgcHJldl9yZXN1bHRzID0ganNvbi5sb2FkKG9wdGlvbnMuc291cmNlX2ZpbGUpCisgICAgZWxzZToKKyAgICAgICAgcHJldl9yZXN1bHRzID0ge30KKyAgICBfX2J1aWx0aW5zX18uX19pbXBvcnRfXyA9IGltcG9ydF8KKyAgICBiZW5jaG1hcmtzID0gKGZyb21fY2FjaGUsIGJ1aWx0aW5fbW9kLAorICAgICAgICAgICAgICAgICAgc291cmNlX3dyaXRpbmdfYnl0ZWNvZGUsCisgICAgICAgICAgICAgICAgICBzb3VyY2Vfd29fYnl0ZWNvZGUsIHNvdXJjZV91c2luZ19ieXRlY29kZSwKKyAgICAgICAgICAgICAgICAgIHRhYm5hbm55X3dyaXRpbmdfYnl0ZWNvZGUsCisgICAgICAgICAgICAgICAgICB0YWJuYW5ueV93b19ieXRlY29kZSwgdGFibmFubnlfdXNpbmdfYnl0ZWNvZGUsCisgICAgICAgICAgICAgICAgICBkZWNpbWFsX3dyaXRpbmdfYnl0ZWNvZGUsCisgICAgICAgICAgICAgICAgICBkZWNpbWFsX3dvX2J5dGVjb2RlLCBkZWNpbWFsX3VzaW5nX2J5dGVjb2RlLAorICAgICAgICAgICAgICAgICkKKyAgICBpZiBvcHRpb25zLmJlbmNobWFyazoKKyAgICAgICAgZm9yIGIgaW4gYmVuY2htYXJrczoKKyAgICAgICAgICAgIGlmIGIuX19kb2NfXyA9PSBvcHRpb25zLmJlbmNobWFyazoKKyAgICAgICAgICAgICAgICBiZW5jaG1hcmtzID0gW2JdCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByaW50KCdVbmtub3duIGJlbmNobWFyazogeyFyfScuZm9ybWF0KG9wdGlvbnMuYmVuY2htYXJrLAorICAgICAgICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyKSkKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgc2Vjb25kcyA9IDEKKyAgICBzZWNvbmRzX3BsdXJhbCA9ICdzJyBpZiBzZWNvbmRzID4gMSBlbHNlICcnCisgICAgcmVwZWF0ID0gMworICAgIGhlYWRlciA9ICgnTWVhc3VyaW5nIGltcG9ydHMvc2Vjb25kIG92ZXIge30gc2Vjb25ke30sIGJlc3Qgb3V0IG9mIHt9XG4nCisgICAgICAgICAgICAgICdFbnRpcmUgYmVuY2htYXJrIHJ1biBzaG91bGQgdGFrZSBhYm91dCB7fSBzZWNvbmRzXG4nCisgICAgICAgICAgICAgICdVc2luZyB7IXJ9IGFzIF9faW1wb3J0X19cbicpCisgICAgcHJpbnQoaGVhZGVyLmZvcm1hdChzZWNvbmRzLCBzZWNvbmRzX3BsdXJhbCwgcmVwZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGJlbmNobWFya3MpICogc2Vjb25kcyAqIHJlcGVhdCwgX19pbXBvcnRfXykpCisgICAgbmV3X3Jlc3VsdHMgPSB7fQorICAgIGZvciBiZW5jaG1hcmsgaW4gYmVuY2htYXJrczoKKyAgICAgICAgcHJpbnQoYmVuY2htYXJrLl9fZG9jX18sICJbIiwgZW5kPScgJykKKyAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisgICAgICAgIHJlc3VsdHMgPSBbXQorICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNobWFyayhzZWNvbmRzPXNlY29uZHMsIHJlcGVhdD1yZXBlYXQpOgorICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KQorICAgICAgICAgICAgcHJpbnQocmVzdWx0LCBlbmQ9JyAnKQorICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisgICAgICAgIGFzc2VydCBub3Qgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUKKyAgICAgICAgcHJpbnQoIl0iLCAiYmVzdCBpcyIsIGZvcm1hdChtYXgocmVzdWx0cyksICcsZCcpKQorICAgICAgICBuZXdfcmVzdWx0c1tiZW5jaG1hcmsuX19kb2NfX10gPSByZXN1bHRzCisgICAgaWYgcHJldl9yZXN1bHRzOgorICAgICAgICBwcmludCgnXG5cbkNvbXBhcmluZyBuZXcgdnMuIG9sZFxuJykKKyAgICAgICAgZm9yIGJlbmNobWFyayBpbiBiZW5jaG1hcmtzOgorICAgICAgICAgICAgYmVuY2htYXJrX25hbWUgPSBiZW5jaG1hcmsuX19kb2NfXworICAgICAgICAgICAgb2xkX3Jlc3VsdCA9IG1heChwcmV2X3Jlc3VsdHNbYmVuY2htYXJrX25hbWVdKQorICAgICAgICAgICAgbmV3X3Jlc3VsdCA9IG1heChuZXdfcmVzdWx0c1tiZW5jaG1hcmtfbmFtZV0pCisgICAgICAgICAgICByZXN1bHQgPSAnezosZH0gdnMuIHs6LGR9ICh7OiV9KScuZm9ybWF0KG5ld19yZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF9yZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3Jlc3VsdC9vbGRfcmVzdWx0KQorICAgICAgICAgICAgcHJpbnQoYmVuY2htYXJrX25hbWUsICc6JywgcmVzdWx0KQorICAgIGlmIG9wdGlvbnMuZGVzdF9maWxlOgorICAgICAgICB3aXRoIG9wdGlvbnMuZGVzdF9maWxlOgorICAgICAgICAgICAganNvbi5kdW1wKG5ld19yZXN1bHRzLCBvcHRpb25zLmRlc3RfZmlsZSwgaW5kZW50PTIpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgYXJncGFyc2UKKworICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYicsICctLWJ1aWx0aW4nLCBkZXN0PSdidWlsdGluJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9InVzZSB0aGUgYnVpbHQtaW4gX19pbXBvcnRfXyIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXInLCAnLS1yZWFkJywgZGVzdD0nc291cmNlX2ZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1hcmdwYXJzZS5GaWxlVHlwZSgncicpLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZmlsZSB0byByZWFkIGJlbmNobWFyayBkYXRhIGZyb20gdG8gY29tcGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhZ2FpbnN0JykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdycsICctLXdyaXRlJywgZGVzdD0nZGVzdF9maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9YXJncGFyc2UuRmlsZVR5cGUoJ3cnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2ZpbGUgdG8gd3JpdGUgYmVuY2htYXJrIGRhdGEgdG8nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tYmVuY2htYXJrJywgZGVzdD0nYmVuY2htYXJrJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NwZWNpZmljIGJlbmNobWFyayB0byBydW4nKQorICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgaW1wb3J0XyA9IF9faW1wb3J0X18KKyAgICBpZiBub3Qgb3B0aW9ucy5idWlsdGluOgorICAgICAgICBpbXBvcnRfID0gaW1wb3J0bGliLl9faW1wb3J0X18KKworICAgIG1haW4oaW1wb3J0Xywgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1Rvb2xzL2lvYmVuY2gvaW9iZW5jaC5weSBiL1Rvb2xzL2lvYmVuY2gvaW9iZW5jaC5weQppbmRleCA1ZWM2ZjE3Li41MzBiYzc5IDEwMDY0NAotLS0gYS9Ub29scy9pb2JlbmNoL2lvYmVuY2gucHkKKysrIGIvVG9vbHMvaW9iZW5jaC9pb2JlbmNoLnB5CkBAIC0xLDEzICsxLDEyIEBACiAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQogIyBUaGlzIGZpbGUgc2hvdWxkIGJlIGtlcHQgY29tcGF0aWJsZSB3aXRoIGJvdGggUHl0aG9uIDIuNiBhbmQgUHl0aG9uID49IDMuMC4KIAotaW1wb3J0IHRpbWUKK2ltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBvcworaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKLWltcG9ydCBoYXNobGliCi1pbXBvcnQgZnVuY3Rvb2xzCi1pbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgdGltZQogZnJvbSBvcHRwYXJzZSBpbXBvcnQgT3B0aW9uUGFyc2VyCiAKIG91dCA9IHN5cy5zdGRvdXQKQEAgLTMwNyw2ICszMDYsMTYgQEAKICAgICAgICAgImxhcmdlIjogMiwKICAgICB9CiAKKyAgICBwcmludCgiUHl0aG9uICVzIiAlIHN5cy52ZXJzaW9uKQorICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgorICAgICAgICAgICAgdGV4dCA9ICJVQ1MtNCAod2lkZSBidWlsZCkiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0ZXh0ID0gIlVURi0xNiAobmFycm93IGJ1aWxkKSIKKyAgICBlbHNlOgorICAgICAgICB0ZXh0ID0gIlBFUCAzOTMiCisgICAgcHJpbnQoIlVuaWNvZGU6ICVzIiAlIHRleHQpCisgICAgcHJpbnQocGxhdGZvcm0ucGxhdGZvcm0oKSkKICAgICBiaW5hcnlfZmlsZXMgPSBsaXN0KGdldF9iaW5hcnlfZmlsZXMoKSkKICAgICB0ZXh0X2ZpbGVzID0gbGlzdChnZXRfdGV4dF9maWxlcygpKQogICAgIGlmICJiIiBpbiBvcHRpb25zOgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL21zaS5weSBiL1Rvb2xzL21zaS9tc2kucHkKaW5kZXggNTA4ODE2ZC4uMmVjNjk1MSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL21zaS5weQorKysgYi9Ub29scy9tc2kvbXNpLnB5CkBAIC0yLDEyICsyLDExIEBACiAjIChDKSAyMDAzIE1hcnRpbiB2LiBMb2V3aXMKICMgU2VlICJGT08iIGluIGNvbW1lbnRzIHJlZmVycyB0byBNU0ROIHNlY3Rpb25zIHdpdGggdGhlIHRpdGxlIEZPTy4KIGltcG9ydCBtc2lsaWIsIHNjaGVtYSwgc2VxdWVuY2UsIG9zLCBnbG9iLCB0aW1lLCByZSwgc2h1dGlsLCB6aXBmaWxlCitpbXBvcnQgc3VicHJvY2VzcywgdGVtcGZpbGUKIGZyb20gbXNpbGliIGltcG9ydCBGZWF0dXJlLCBDQUIsIERpcmVjdG9yeSwgRGlhbG9nLCBCaW5hcnksIGFkZF9kYXRhCiBpbXBvcnQgdWlzYW1wbGUKIGZyb20gd2luMzJjb20uY2xpZW50IGltcG9ydCBjb25zdGFudHMKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBmaW5kX2V4ZWN1dGFibGUKLWZyb20gdXVpZHMgaW1wb3J0IHByb2R1Y3RfY29kZXMKLWltcG9ydCB0ZW1wZmlsZQogCiAjIFNldHRpbmdzIGNhbiBiZSBvdmVycmlkZGVuIGluIGNvbmZpZy5weSBiZWxvdwogIyAwIGZvciBvZmZpY2lhbCBweXRob24ub3JnIHJlbGVhc2VzCkBAIC0yOCw3ICsyNyw3IEBACiAjIHBhdGggdG8gUENidWlsZCBkaXJlY3RvcnkKIFBDQlVJTEQ9IlBDYnVpbGQiCiAjIG1zdmNydCB2ZXJzaW9uCi1NU1ZDUiA9ICI5MCIKK01TVkNSID0gIjEwMCIKICMgTmFtZSBvZiBjZXJ0aWZpY2F0ZSBpbiBkZWZhdWx0IHN0b3JlIHRvIHNpZ24gTVNJIHdpdGgKIGNlcnRuYW1lID0gTm9uZQogIyBNYWtlIGEgemlwIGZpbGUgY29udGFpbmluZyB0aGUgUERCIGZpbGVzIGZvciB0aGlzIGJ1aWxkPwpAQCAtNzcsMTkgKzc2LDE2IEBACiAKIGlmIHNuYXBzaG90OgogICAgIGN1cnJlbnRfdmVyc2lvbiA9ICIlcy4lcy4lcyIgJSAobWFqb3IsIG1pbm9yLCBpbnQodGltZS50aW1lKCkvMzYwMC8yNCkpCi0gICAgcHJvZHVjdF9jb2RlID0gbXNpbGliLmdlbl91dWlkKCkKLWVsc2U6Ci0gICAgcHJvZHVjdF9jb2RlID0gcHJvZHVjdF9jb2Rlc1tjdXJyZW50X3ZlcnNpb25dCiAKIGlmIGZ1bGxfY3VycmVudF92ZXJzaW9uIGlzIE5vbmU6CiAgICAgZnVsbF9jdXJyZW50X3ZlcnNpb24gPSBjdXJyZW50X3ZlcnNpb24KIAogZXh0ZW5zaW9ucyA9IFsKLSAgICAnYnoyLnB5ZCcsCiAgICAgJ3B5ZXhwYXQucHlkJywKICAgICAnc2VsZWN0LnB5ZCcsCiAgICAgJ3VuaWNvZGVkYXRhLnB5ZCcsCiAgICAgJ3dpbnNvdW5kLnB5ZCcsCisgICAgJ19iejIucHlkJywKICAgICAnX2VsZW1lbnR0cmVlLnB5ZCcsCiAgICAgJ19zb2NrZXQucHlkJywKICAgICAnX3NzbC5weWQnLApAQCAtMTAwLDcgKzk2LDEwIEBACiAgICAgJ19jdHlwZXNfdGVzdC5weWQnLAogICAgICdfc3FsaXRlMy5weWQnLAogICAgICdfaGFzaGxpYi5weWQnLAotICAgICdfbXVsdGlwcm9jZXNzaW5nLnB5ZCcKKyAgICAnX211bHRpcHJvY2Vzc2luZy5weWQnLAorICAgICdfbHptYS5weWQnLAorICAgICdfZGVjaW1hbC5weWQnLAorICAgICdfdGVzdGJ1ZmZlci5weWQnCiBdCiAKICMgV2VsbC1rbm93biBjb21wb25lbnQgVVVJRHMKQEAgLTExOSwxMiArMTE4LDExIEBACiAgICAgIjMwIjoiezY5NTNiYzNiLTY3NjgtNDI5MS04NDEwLTc5MTRjZTZlMmNhOH0iLAogICAgICIzMSI6Ins0YWZjYmEwYi0xM2U0LTQ3YzMtYmViZS00Nzc0MjhiNDY5MTN9IiwKICAgICAiMzIiOiJ7M2ZmOTUzMTUtMTA5Ni00ZDMxLWJkODYtNjAxZDU0MzhhZDVlfSIsCisgICAgIjMzIjoie2Y3NTgxY2E0LWQzNjgtNGVlYS04ZjgyLWQ0OGM2NGM0ZjA0N30iLAogICAgIH0gW21ham9yK21pbm9yXQogCiAjIENvbXB1dGUgdGhlIG5hbWUgdGhhdCBTcGhpbnggZ2l2ZXMgdG8gdGhlIGRvY2ZpbGUKLWRvY2ZpbGUgPSAiIgotaWYgaW50KG1pY3JvKToKLSAgICBkb2NmaWxlID0gbWljcm8KK2RvY2ZpbGUgPSBtaWNybwogaWYgbGV2ZWwgPCAweGY6CiAgICAgaWYgbGV2ZWwgPT0gMHhDOgogICAgICAgICBkb2NmaWxlICs9ICJyYyVzIiAlIChzZXJpYWwsKQpAQCAtMTg1LDEyICsxODMsMTkgQEAKIG1zaWxpYi5zZXRfYXJjaF9mcm9tX2ZpbGUoZGxsX3BhdGgpCiBpZiBtc2lsaWIucGVfdHlwZShkbGxfcGF0aCkgIT0gbXNpbGliLnBlX3R5cGUoIm1zaXN1cHBvcnQuZGxsIik6CiAgICAgcmFpc2UgU3lzdGVtRXJyb3IoIm1zaXN1cHBvcnQuZGxsIGZvciBpbmNvcnJlY3QgYXJjaGl0ZWN0dXJlIikKKwogaWYgbXNpbGliLldpbjY0OgogICAgIHVwZ3JhZGVfY29kZSA9IHVwZ3JhZGVfY29kZV82NAotICAgICMgQnVtcCB0aGUgbGFzdCBkaWdpdCBvZiB0aGUgY29kZSBieSBvbmUsIHNvIHRoYXQgMzItYml0IGFuZCA2NC1iaXQKLSAgICAjIHJlbGVhc2VzIGdldCBzZXBhcmF0ZSBwcm9kdWN0IGNvZGVzCi0gICAgZGlnaXQgPSBoZXgoKGludChwcm9kdWN0X2NvZGVbLTJdLDE2KSsxKSUxNilbLTFdCi0gICAgcHJvZHVjdF9jb2RlID0gcHJvZHVjdF9jb2RlWzotMl0gKyBkaWdpdCArICd9JworCitpZiBzbmFwc2hvdDoKKyAgICBwcm9kdWN0X2NvZGUgPSBtc2lsaWIuZ2VuX3V1aWQoKQorZWxzZToKKyAgICAjIG9mZmljaWFsIHJlbGVhc2U6IGdlbmVyYXRlIFVVSUQgZnJvbSB0aGUgZG93bmxvYWQgbGluayB0aGF0IHRoZSBmaWxlIHdpbGwgaGF2ZQorICAgIGltcG9ydCB1dWlkCisgICAgcHJvZHVjdF9jb2RlID0gdXVpZC51dWlkMyh1dWlkLk5BTUVTUEFDRV9VUkwsCisgICAgICAgICAgICAgICAgICAgICdodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8lcy4lcy4lcy9weXRob24tJXMlcy5tc2knICUKKyAgICAgICAgICAgICAgICAgICAgKG1ham9yLCBtaW5vciwgbWljcm8sIGZ1bGxfY3VycmVudF92ZXJzaW9uLCBtc2lsaWIuYXJjaF9leHQpKQorICAgIHByb2R1Y3RfY29kZSA9ICd7JXN9JyAlIHByb2R1Y3RfY29kZQogCiBpZiB0ZXN0cGFja2FnZToKICAgICBleHQgPSAncHgnCkBAIC0yODEsNyArMjg2LDcgQEAKICAgICAgICAgICAgICAgTm9uZSwgbWlncmF0ZV9mZWF0dXJlcywgTm9uZSwgIlJFTU9WRU9MRFNOQVBTSE9UIildKQogICAgICAgICBwcm9wcyA9ICJSRU1PVkVPTERTTkFQU0hPVDtSRU1PVkVPTERWRVJTSU9OIgogCi0gICAgcHJvcHMgKz0gIjtUQVJHRVRESVI7RExMRElSIgorICAgIHByb3BzICs9ICI7VEFSR0VURElSO0RMTERJUjtMQVVOQ0hFUkRJUiIKICAgICAjIEluc3RhbGxlciBjb2xsZWN0cyB0aGUgcHJvZHVjdCBjb2RlcyBvZiB0aGUgZWFybGllciByZWxlYXNlcyBpbgogICAgICMgdGhlc2UgcHJvcGVydGllcy4gSW4gb3JkZXIgdG8gYWxsb3cgbW9kaWZpY2F0aW9uIG9mIHRoZSBwcm9wZXJ0aWVzLAogICAgICMgdGhleSBtdXN0IGJlIGRlY2xhcmVkIGFzIHNlY3VyZS4gU2VlICJTZWN1cmVDdXN0b21Qcm9wZXJ0aWVzIFByb3BlcnR5IgpAQCAtNDEwLDcgKzQxNSw3IEBACiAgICAgICAgICAgICAgICgiVmVyZGFuYVJlZDkiLCAiVmVyZGFuYSIsIDksIDI1NSwgMCksCiAgICAgICAgICAgICAgXSkKIAotICAgIGNvbXBpbGVhcmdzID0gcictV2kgIltUQVJHRVRESVJdTGliXGNvbXBpbGVhbGwucHkiIC1mIC14ICJiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfHB5Ml98bGliMnRvM1xcdGVzdHMiICJbVEFSR0VURElSXUxpYiInCisgICAgY29tcGlsZWFyZ3MgPSByJy1XaSAiW1RBUkdFVERJUl1MaWJcY29tcGlsZWFsbC5weSIgLWYgLXggImJhZF9jb2Rpbmd8YmFkc3ludGF4fHNpdGUtcGFja2FnZXN8cHkyX3xsaWIydG8zXFx0ZXN0c3x2ZW52XFxzY3JpcHRzIiAiW1RBUkdFVERJUl1MaWIiJwogICAgIGxpYjJ0bzNhcmdzID0gcictYyAiaW1wb3J0IGxpYjJ0bzMucHlncmFtLCBsaWIydG8zLnBhdGNvbXA7bGliMnRvMy5wYXRjb21wLlBhdHRlcm5Db21waWxlcigpIicKICAgICAjIFNlZSAiQ3VzdG9tQWN0aW9uIFRhYmxlIgogICAgIGFkZF9kYXRhKGRiLCAiQ3VzdG9tQWN0aW9uIiwgWwpAQCAtNDIxLDYgKzQyNiw4IEBACiAgICAgICAgICAiW1dpbmRvd3NWb2x1bWVdUHl0aG9uJXMlcyIgJSAobWFqb3IsIG1pbm9yKSksCiAgICAgICAgICgiU2V0RExMRGlyVG9UYXJnZXQiLCAzMDcsICJETExESVIiLCAiW1RBUkdFVERJUl0iKSwKICAgICAgICAgKCJTZXRETExEaXJUb1N5c3RlbTMyIiwgMzA3LCAiRExMRElSIiwgU3lzdGVtRm9sZGVyTmFtZSksCisgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1RhcmdldCIsIDMwNywgIkxBVU5DSEVSRElSIiwgIltUQVJHRVRESVJdIiksCisgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1dpbmRvd3MiLCAzMDcsICJMQVVOQ0hFUkRJUiIsICJbV2luZG93c0ZvbGRlcl0iKSwKICAgICAgICAgIyBtc2lkYkN1c3RvbUFjdGlvblR5cGVFeGUgKyBtc2lkYkN1c3RvbUFjdGlvblR5cGVTb3VyY2VGaWxlCiAgICAgICAgICMgU2VlICJDdXN0b20gQWN0aW9uIFR5cGUgMTgiCiAgICAgICAgICgiQ29tcGlsZVB5YyIsIDE4LCAicHl0aG9uLmV4ZSIsIGNvbXBpbGVhcmdzKSwKQEAgLTQzNyw2ICs0NDQsOCBAQAogICAgICAgICAgICAgICAjIEluIHRoZSB1c2VyIGludGVyZmFjZSwgYXNzdW1lIGFsbC11c2VycyBpbnN0YWxsYXRpb24gaWYgcHJpdmlsZWdlZC4KICAgICAgICAgICAgICAgKCJTZXRETExEaXJUb1N5c3RlbTMyIiwgJ0RMTERJUj0iIiBhbmQgJyArIHN5czMyY29uZCwgNzUxKSwKICAgICAgICAgICAgICAgKCJTZXRETExEaXJUb1RhcmdldCIsICdETExESVI9IiIgYW5kIG5vdCAnICsgc3lzMzJjb25kLCA3NTIpLAorICAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9XaW5kb3dzIiwgJ0xBVU5DSEVSRElSPSIiIGFuZCAnICsgc3lzMzJjb25kLCA3NTMpLAorICAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9UYXJnZXQiLCAnTEFVTkNIRVJESVI9IiIgYW5kIG5vdCAnICsgc3lzMzJjb25kLCA3NTQpLAogICAgICAgICAgICAgICAoIlNlbGVjdERpcmVjdG9yeURsZyIsICJOb3QgSW5zdGFsbGVkIiwgMTIzMCksCiAgICAgICAgICAgICAgICMgWFhYIG5vIHN1cHBvcnQgZm9yIHJlc3VtZSBpbnN0YWxsYXRpb25zIHlldAogICAgICAgICAgICAgICAjKCJSZXN1bWVEbGciLCAiSW5zdGFsbGVkIEFORCAoUkVTVU1FIE9SIFByZXNlbGVjdGVkKSIsIDEyNDApLApAQCAtNDQ1LDEzICs0NTQsMjAgQEAKICAgICBhZGRfZGF0YShkYiwgIkFkbWluVUlTZXF1ZW5jZSIsCiAgICAgICAgICAgICAgWygiSW5pdGlhbFRhcmdldERpciIsICdUQVJHRVRESVI9IiInLCA3NTApLAogICAgICAgICAgICAgICAoIlNldERMTERpclRvVGFyZ2V0IiwgJ0RMTERJUj0iIicsIDc1MSksCisgICAgICAgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1RhcmdldCIsICdMQVVOQ0hFUkRJUj0iIicsIDc1MiksCiAgICAgICAgICAgICAgXSkKIAorICAgICMgUHJlcGVuZCBUQVJHRVRESVIgdG8gdGhlIHN5c3RlbSBwYXRoLCBhbmQgcmVtb3ZlIGl0IG9uIHVuaW5zdGFsbC4KKyAgICBhZGRfZGF0YShkYiwgIkVudmlyb25tZW50IiwKKyAgICAgICAgICAgICBbKCJQYXRoQWRkaXRpb24iLCAiPS0qUGF0aCIsICJbVEFSR0VURElSXTtbfl0iLCAiUkVHSVNUUlkucGF0aCIpXSkKKwogICAgICMgRXhlY3V0ZSBTZXF1ZW5jZXMKICAgICBhZGRfZGF0YShkYiwgIkluc3RhbGxFeGVjdXRlU2VxdWVuY2UiLAogICAgICAgICAgICAgWygiSW5pdGlhbFRhcmdldERpciIsICdUQVJHRVRESVI9IiInLCA3NTApLAogICAgICAgICAgICAgICgiU2V0RExMRGlyVG9TeXN0ZW0zMiIsICdETExESVI9IiIgYW5kICcgKyBzeXMzMmNvbmQsIDc1MSksCiAgICAgICAgICAgICAgKCJTZXRETExEaXJUb1RhcmdldCIsICdETExESVI9IiIgYW5kIG5vdCAnICsgc3lzMzJjb25kLCA3NTIpLAorICAgICAgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1dpbmRvd3MiLCAnTEFVTkNIRVJESVI9IiIgYW5kICcgKyBzeXMzMmNvbmQsIDc1MyksCisgICAgICAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvVGFyZ2V0IiwgJ0xBVU5DSEVSRElSPSIiIGFuZCBub3QgJyArIHN5czMyY29uZCwgNzU0KSwKICAgICAgICAgICAgICAoIlVwZGF0ZUVkaXRJRExFIiwgTm9uZSwgMTA1MCksCiAgICAgICAgICAgICAgKCJDb21waWxlUHljIiwgIkNPTVBJTEVBTEwiLCA2ODAwKSwKICAgICAgICAgICAgICAoIkNvbXBpbGVQeW8iLCAiQ09NUElMRUFMTCIsIDY4MDEpLApAQCAtNDYwLDYgKzQ3Niw3IEBACiAgICAgYWRkX2RhdGEoZGIsICJBZG1pbkV4ZWN1dGVTZXF1ZW5jZSIsCiAgICAgICAgICAgICBbKCJJbml0aWFsVGFyZ2V0RGlyIiwgJ1RBUkdFVERJUj0iIicsIDc1MCksCiAgICAgICAgICAgICAgKCJTZXRETExEaXJUb1RhcmdldCIsICdETExESVI9IiInLCA3NTEpLAorICAgICAgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1RhcmdldCIsICdMQVVOQ0hFUkRJUj0iIicsIDc1MiksCiAgICAgICAgICAgICAgKCJDb21waWxlUHljIiwgIkNPTVBJTEVBTEwiLCA2ODAwKSwKICAgICAgICAgICAgICAoIkNvbXBpbGVQeW8iLCAiQ09NUElMRUFMTCIsIDY4MDEpLAogICAgICAgICAgICAgICgiQ29tcGlsZUdyYW1tYXIiLCAiQ09NUElMRUFMTCIsIDY4MDIpLApAQCAtNjcwLDExICs2ODcsMTEgQEAKICAgICBjPWZlYXR1cmVzLnhidXR0b24oIkFkdmFuY2VkIiwgIkFkdmFuY2VkIiwgTm9uZSwgMC4zMCkKICAgICBjLmV2ZW50KCJTcGF3bkRpYWxvZyIsICJBZHZhbmNlZERsZyIpCiAKLSAgICBjPWZlYXR1cmVzLnRleHQoIkl0ZW1EZXNjcmlwdGlvbiIsIDE0MCwgMTgwLCAyMTAsIDMwLCAzLAorICAgIGM9ZmVhdHVyZXMudGV4dCgiSXRlbURlc2NyaXB0aW9uIiwgMTQwLCAxODAsIDIxMCwgNDAsIDMsCiAgICAgICAgICAgICAgICAgICAiTXVsdGlsaW5lIGRlc2NyaXB0aW9uIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbS4iKQogICAgIGMubWFwcGluZygiU2VsZWN0aW9uRGVzY3JpcHRpb24iLCJUZXh0IikKIAotICAgIGM9ZmVhdHVyZXMudGV4dCgiSXRlbVNpemUiLCAxNDAsIDIxMCwgMjEwLCA0NSwgMywKKyAgICBjPWZlYXR1cmVzLnRleHQoIkl0ZW1TaXplIiwgMTQwLCAyMjUsIDIxMCwgMzMsIDMsCiAgICAgICAgICAgICAgICAgICAgICJUaGUgc2l6ZSBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW0uIikKICAgICBjLm1hcHBpbmcoIlNlbGVjdGlvblNpemUiLCAiVGV4dCIpCiAKQEAgLTgyOCw3ICs4NDUsNyBAQAogICAgICMgKGkuZS4gYWRkaXRpb25hbCBQeXRob24gbGlicmFyaWVzKSBuZWVkIHRvIGZvbGxvdyB0aGUgcGFyZW50IGZlYXR1cmUuCiAgICAgIyBGZWF0dXJlcyB0aGF0IGhhdmUgbm8gYWR2ZXJ0aXNlbWVudCB0cmlnZ2VyIChlLmcuIHRoZSB0ZXN0IHN1aXRlKQogICAgICMgbXVzdCBub3Qgc3VwcG9ydCBhZHZlcnRpc2VtZW50Ci0gICAgZ2xvYmFsIGRlZmF1bHRfZmVhdHVyZSwgdGNsdGssIGh0bWxmaWxlcywgdG9vbHMsIHRlc3RzdWl0ZSwgZXh0X2ZlYXR1cmUsIHByaXZhdGVfY3J0CisgICAgZ2xvYmFsIGRlZmF1bHRfZmVhdHVyZSwgdGNsdGssIGh0bWxmaWxlcywgdG9vbHMsIHRlc3RzdWl0ZSwgZXh0X2ZlYXR1cmUsIHByaXZhdGVfY3J0LCBwcmVwZW5kX3BhdGgKICAgICBkZWZhdWx0X2ZlYXR1cmUgPSBGZWF0dXJlKGRiLCAiRGVmYXVsdEZlYXR1cmUiLCAiUHl0aG9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gSW50ZXJwcmV0ZXIgYW5kIExpYnJhcmllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBkaXJlY3RvcnkgPSAiVEFSR0VURElSIikKQEAgLTg0OCwzMiArODY1LDM4IEBACiAgICAgaHRtbGZpbGVzID0gRmVhdHVyZShkYiwgIkRvY3VtZW50YXRpb24iLCAiRG9jdW1lbnRhdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIEhUTUxIZWxwIEZpbGUiLCA3LCBwYXJlbnQgPSBkZWZhdWx0X2ZlYXR1cmUpCiAgICAgdG9vbHMgPSBGZWF0dXJlKGRiLCAiVG9vbHMiLCAiVXRpbGl0eSBTY3JpcHRzIiwKLSAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB1dGlsaXR5IHNjcmlwdHMgKFRvb2xzLyIsIDksCisgICAgICAgICAgICAgICAgICAgICJQeXRob24gdXRpbGl0eSBzY3JpcHRzIChUb29scy8pIiwgOSwKICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gZGVmYXVsdF9mZWF0dXJlLCBhdHRyaWJ1dGVzPTIpCiAgICAgdGVzdHN1aXRlID0gRmVhdHVyZShkYiwgIlRlc3RzdWl0ZSIsICJUZXN0IHN1aXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gdGVzdCBzdWl0ZSAoTGliL3Rlc3QvKSIsIDExLAogICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gZGVmYXVsdF9mZWF0dXJlLCBhdHRyaWJ1dGVzPTJ8OCkKKyAgICAjIHByZXBlbmRfcGF0aCBpcyBhbiBhZGRpdGlvbmFsIGZlYXR1cmUgd2hpY2ggaXMgdG8gYmUgb2ZmIGJ5IGRlZmF1bHQuCisgICAgIyBTaW5jZSB0aGUgZGVmYXVsdCBsZXZlbCBmb3IgdGhlIGFib3ZlIGZlYXR1cmVzIGlzIDEsIHRoaXMgbmVlZHMgdG8gYmUKKyAgICAjIGF0IGxlYXN0IGxldmVsIGhpZ2hlci4KKyAgICBwcmVwZW5kX3BhdGggPSBGZWF0dXJlKGRiLCAiUHJlcGVuZFBhdGgiLCAiQWRkIHB5dGhvbi5leGUgdG8gUGF0aCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiUHJlcGVuZCBbVEFSR0VURElSXSB0byB0aGUgc3lzdGVtIFBhdGggdmFyaWFibGUuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIGFsbG93cyB5b3UgdG8gdHlwZSAncHl0aG9uJyBpbnRvIGEgY29tbWFuZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAicHJvbXB0IHdpdGhvdXQgbmVlZGluZyB0aGUgZnVsbCBwYXRoLiIsIDEzLAorICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gZGVmYXVsdF9mZWF0dXJlLCBhdHRyaWJ1dGVzPTJ8OCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPTIpCiAKLWRlZiBleHRyYWN0X21zdmNyOTAoKToKK2RlZiBleHRyYWN0X21zdmNyMTAwKCk6CiAgICAgIyBGaW5kIHRoZSByZWRpc3RyaWJ1dGFibGUgZmlsZXMKICAgICBpZiBtc2lsaWIuV2luNjQ6Ci0gICAgICAgIGFyY2ggPSAiYW1kNjQiCisgICAgICAgIGFyY2ggPSAieDY0IgogICAgIGVsc2U6CiAgICAgICAgIGFyY2ggPSAieDg2IgotICAgIGRpciA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydWUzkwQ09NTlRPT0xTJ10sIHIiLi5cLi5cVkNccmVkaXN0XCVzXE1pY3Jvc29mdC5WQzkwLkNSVCIgJSBhcmNoKQorICAgIGRpciA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydWUzEwMENPTU5UT09MUyddLCByIi4uXC4uXFZDXHJlZGlzdFwlc1xNaWNyb3NvZnQuVkMxMDAuQ1JUIiAlIGFyY2gpCiAKICAgICByZXN1bHQgPSBbXQogICAgIGluc3RhbGxlciA9IG1zaWxpYi5NYWtlSW5zdGFsbGVyKCkKLSAgICAjIG9taXQgbXN2Y205MCBhbmQgbXN2Y3A5MCwgYXMgdGhleSBhcmVuJ3QgcmVhbGx5IG5lZWRlZAotICAgIGZpbGVzID0gWyJNaWNyb3NvZnQuVkM5MC5DUlQubWFuaWZlc3QiLCAibXN2Y3I5MC5kbGwiXQotICAgIGZvciBmIGluIGZpbGVzOgotICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGRpciwgZikKLSAgICAgICAga3cgPSB7J3NyYyc6cGF0aH0KLSAgICAgICAgaWYgZi5lbmRzd2l0aCgnLmRsbCcpOgotICAgICAgICAgICAga3dbJ3ZlcnNpb24nXSA9IGluc3RhbGxlci5GaWxlVmVyc2lvbihwYXRoLCAwKQotICAgICAgICAgICAga3dbJ2xhbmd1YWdlJ10gPSBpbnN0YWxsZXIuRmlsZVZlcnNpb24ocGF0aCwgMSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgoZiwga3cpKQotICAgIHJldHVybiByZXN1bHQKKyAgICAjIEF0IGxlYXN0IGZvciBWUzIwMTAsIG1hbmlmZXN0cyBhcmUgbm8gbG9uZ2VyIHByb3ZpZGVkCisgICAgbmFtZSA9ICJtc3ZjcjEwMC5kbGwiCisgICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXIsIG5hbWUpCisgICAga3cgPSB7J3NyYyc6cGF0aH0KKyAgICBrd1sndmVyc2lvbiddID0gaW5zdGFsbGVyLkZpbGVWZXJzaW9uKHBhdGgsIDApCisgICAga3dbJ2xhbmd1YWdlJ10gPSBpbnN0YWxsZXIuRmlsZVZlcnNpb24ocGF0aCwgMSkKKyAgICByZXR1cm4gbmFtZSwga3cKIAogZGVmIGdlbmVyYXRlX2xpY2Vuc2UoKToKICAgICBpbXBvcnQgc2h1dGlsLCBnbG9iCkBAIC04ODksNyArOTEyLDcgQEAKICAgICAgICAgZGlycyA9IGdsb2IuZ2xvYihzcmNkaXIrIi8uLi8iK3BhdCkKICAgICAgICAgaWYgbm90IGRpcnM6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yLCAiQ291bGQgbm90IGZpbmQgIitzcmNkaXIrIi8uLi8iK3BhdAotICAgICAgICBpZiBsZW4oZGlycykgPiAyOgorICAgICAgICBpZiBsZW4oZGlycykgPiAyIGFuZCBub3Qgc25hcHNob3Q6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yLCAiTXVsdGlwbGUgY29waWVzIG9mICIrcGF0CiAgICAgICAgIGRpciA9IGRpcnNbMF0KICAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKG9wZW4ob3MucGF0aC5qb2luKGRpciwgZmlsZSkpLCBvdXQpCkBAIC05MDQsMTYgKzkyNywyOCBAQAogICAgICAgICAgICAga3dbJ2NvbXBvbmVudGZsYWdzJ10gPSAyICNtc2lkYkNvbXBvbmVudEF0dHJpYnV0ZXNPcHRpb25hbAogICAgICAgICBEaXJlY3RvcnkuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpCiAKLSAgICBkZWYgY2hlY2tfdW5wYWNrYWdlZChzZWxmKToKLSAgICAgICAgc2VsZi51bnBhY2thZ2VkX2ZpbGVzLmRpc2NhcmQoJ19fcHljYWNoZV9fJykKLSAgICAgICAgc2VsZi51bnBhY2thZ2VkX2ZpbGVzLmRpc2NhcmQoJy5zdm4nKQotICAgICAgICBpZiBzZWxmLnVucGFja2FnZWRfZmlsZXM6Ci0gICAgICAgICAgICBwcmludCAiV2FybmluZzogVW5wYWNrYWdlZCBmaWxlcyBpbiAlcyIgJSBzZWxmLmFic29sdXRlCi0gICAgICAgICAgICBwcmludCBzZWxmLnVucGFja2FnZWRfZmlsZXMKK2RlZiBoZ21hbmlmZXN0KCk6CisgICAgIyBGZXRjaCBmaWxlIGxpc3QgZnJvbSBNZXJjdXJpYWwKKyAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2hnJywgJ21hbmlmZXN0J10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCisgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKKyAgICAjIENyZWF0ZSBuZXN0ZWQgZGlyZWN0b3JpZXMgZm9yIGZpbGUgdHJlZQorICAgIHJlc3VsdCA9IHt9CisgICAgZm9yIGxpbmUgaW4gc3Rkb3V0LnNwbGl0bGluZXMoKToKKyAgICAgICAgY29tcG9uZW50cyA9IGxpbmUuc3BsaXQoJy8nKQorICAgICAgICBkID0gcmVzdWx0CisgICAgICAgIHdoaWxlIGxlbihjb21wb25lbnRzKSA+IDE6CisgICAgICAgICAgICBkMSA9IGQuc2V0ZGVmYXVsdChjb21wb25lbnRzWzBdLCB7fSkKKyAgICAgICAgICAgIGQgPSBkMQorICAgICAgICAgICAgZGVsIGNvbXBvbmVudHNbMF0KKyAgICAgICAgZFtjb21wb25lbnRzWzBdXSA9IE5vbmUKKyAgICByZXR1cm4gcmVzdWx0CisKIAogIyBTZWUgIkZpbGUgVGFibGUiLCAiQ29tcG9uZW50IFRhYmxlIiwgIkRpcmVjdG9yeSBUYWJsZSIsCiAjICJGZWF0dXJlQ29tcG9uZW50cyBUYWJsZSIKIGRlZiBhZGRfZmlsZXMoZGIpOgorICAgIGluc3RhbGxlciA9IG1zaWxpYi5NYWtlSW5zdGFsbGVyKCkKKyAgICBoZ2ZpbGVzID0gaGdtYW5pZmVzdCgpCiAgICAgY2FiID0gQ0FCKCJweXRob24iKQogICAgIHRtcGZpbGVzID0gW10KICAgICAjIEFkZCBhbGwgZXhlY3V0YWJsZXMsIGljb25zLCB0ZXh0IGZpbGVzIGludG8gdGhlIFRBUkdFVERJUiBjb21wb25lbnQKQEAgLTkzMiwxMSArOTY3LDMyIEBACiAKICAgICAjIG1zaWRiQ29tcG9uZW50QXR0cmlidXRlc1NoYXJlZERsbFJlZkNvdW50ID0gOCwgc2VlICJDb21wb25lbnQgVGFibGUiCiAgICAgZGxsZGlyID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgcm9vdCwgc3JjZGlyLCAiRExMRElSIiwgIi4iKQorICAgIGxhdW5jaGVyZGlyID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgcm9vdCwgc3JjZGlyLCAiTEFVTkNIRVJESVIiLCAiLiIpCisKKyAgICAjIG1zaWRiQ29tcG9uZW50QXR0cmlidXRlczY0Yml0ID0gMjU2OyB0aGlzIGRpc2FibGVzIHJlZ2lzdHJ5IHJlZGlyZWN0aW9uCisgICAgIyB0byBhbGxvdyBzZXR0aW5nIHRoZSBTaGFyZWRETExzIGtleSBpbiB0aGUgNjQtYml0IHBvcnRpb24gZXZlbiBmb3IgYQorICAgICMgMzItYml0IGluc3RhbGxlci4KKyAgICAjIFhYWCBkb2VzIHRoaXMgc3RpbGwgYWxsb3cgdG8gaW5zdGFsbCB0aGUgY29tcG9uZW50IG9uIGEgMzItYml0IHN5c3RlbT8KKyAgICAjIFBpY2sgdXAgMzItYml0IGJpbmFyeSBhbHdheXMKKyAgICBsYXVuY2hlcnNyYyA9IFBDQlVJTEQKKyAgICBpZiBsYXVuY2hlcnNyYy5sb3dlcigpID09ICdwY2J1aWxkXFx4NjQtcGdvJzoKKyAgICAgICAgbGF1bmNoZXJzcmMgPSAnUENCdWlsZFxcd2luMzItcGdvJworICAgIGlmIGxhdW5jaGVyc3JjLmxvd2VyKCkgPT0gJ3BjYnVpbGRcXGFtZDY0JzoKKyAgICAgICAgbGF1bmNoZXJzcmMgPSAnUENCdWlsZCcKKyAgICBsYXVuY2hlciA9IG9zLnBhdGguam9pbihzcmNkaXIsIGxhdW5jaGVyc3JjLCAicHkuZXhlIikKKyAgICBsYXVuY2hlcmRpci5zdGFydF9jb21wb25lbnQoImxhdW5jaGVyIiwgZmxhZ3MgPSA4KzI1Niwga2V5ZmlsZT0icHkuZXhlIikKKyAgICBsYXVuY2hlcmRpci5hZGRfZmlsZShsYXVuY2hlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPWluc3RhbGxlci5GaWxlVmVyc2lvbihsYXVuY2hlciwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U9aW5zdGFsbGVyLkZpbGVWZXJzaW9uKGxhdW5jaGVyLCAxKSkKKyAgICBsYXVuY2hlcncgPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBsYXVuY2hlcnNyYywgInB5dy5leGUiKQorICAgIGxhdW5jaGVyZGlyLnN0YXJ0X2NvbXBvbmVudCgibGF1bmNoZXJ3IiwgZmxhZ3MgPSA4KzI1Niwga2V5ZmlsZT0icHl3LmV4ZSIpCisgICAgbGF1bmNoZXJkaXIuYWRkX2ZpbGUobGF1bmNoZXJ3LAorICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb249aW5zdGFsbGVyLkZpbGVWZXJzaW9uKGxhdW5jaGVydywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U9aW5zdGFsbGVyLkZpbGVWZXJzaW9uKGxhdW5jaGVydywgMSkpCiAKICAgICBweWRsbCA9ICJweXRob24lcyVzLmRsbCIgJSAobWFqb3IsIG1pbm9yKQogICAgIHB5ZGxsc3JjID0gb3MucGF0aC5qb2luKHNyY2RpciwgUENCVUlMRCwgcHlkbGwpCiAgICAgZGxsZGlyLnN0YXJ0X2NvbXBvbmVudCgiRExMRElSIiwgZmxhZ3MgPSA4LCBrZXlmaWxlID0gcHlkbGwsIHV1aWQgPSBweXRob25kbGxfdXVpZCkKLSAgICBpbnN0YWxsZXIgPSBtc2lsaWIuTWFrZUluc3RhbGxlcigpCiAgICAgcHl2ZXJzaW9uID0gaW5zdGFsbGVyLkZpbGVWZXJzaW9uKHB5ZGxsc3JjLCAwKQogICAgIGlmIG5vdCBzbmFwc2hvdDoKICAgICAgICAgIyBGb3IgcmVsZWFzZXMsIHRoZSBQeXRob24gRExMIGhhcyB0aGUgc2FtZSB2ZXJzaW9uIGFzIHRoZQpAQCAtOTUyLDkgKzEwMDgsOCBAQAogICAgICMgcG9pbnRpbmcgdG8gdGhlIHJvb3QgZGlyZWN0b3J5CiAgICAgcm9vdC5zdGFydF9jb21wb25lbnQoIm1zdmNyOTAiLCBmZWF0dXJlPXByaXZhdGVfY3J0KQogICAgICMgUmVzdWx0cyBhcmUgSUQsa2V5d29yZCBwYWlycwotICAgIG1hbmlmZXN0LCBjcnRkbGwgPSBleHRyYWN0X21zdmNyOTAoKQotICAgIHJvb3QuYWRkX2ZpbGUobWFuaWZlc3RbMF0sICoqbWFuaWZlc3RbMV0pCi0gICAgcm9vdC5hZGRfZmlsZShjcnRkbGxbMF0sICoqY3J0ZGxsWzFdKQorICAgIGNydGRsbCwga3dkcyA9IGV4dHJhY3RfbXN2Y3IxMDAoKQorICAgIHJvb3QuYWRkX2ZpbGUoY3J0ZGxsLCAqKmt3ZHMpCiAgICAgIyBDb3B5IHRoZSBtYW5pZmVzdAogICAgICMgQWN0dWFsbHksIGRvbid0IGRvIHRoYXQgYW55bW9yZSAtIG5vIERMTCBpbiBETExzIHNob3VsZCBoYXZlIGEgbWFuaWZlc3QKICAgICAjIGRlcGVuZGVuY3kgb24gbXN2Y3I5MC5kbGwgYW55bW9yZSwgc28gdGhpcyBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeQpAQCAtOTc1LDEwNCArMTAzMCw0MCBAQAogCiAgICAgIyBBZGQgYWxsIC5weSBmaWxlcyBpbiBMaWIsIGV4Y2VwdCB0a2ludGVyLCB0ZXN0CiAgICAgZGlycyA9IFtdCi0gICAgcHlkaXJzID0gWyhyb290LCJMaWIiKV0KKyAgICBweWRpcnMgPSBbKHJvb3QsICJMaWIiLCBoZ2ZpbGVzWyJMaWIiXSwgZGVmYXVsdF9mZWF0dXJlKV0KICAgICB3aGlsZSBweWRpcnM6CiAgICAgICAgICMgQ29tbWl0IGV2ZXJ5IG5vdyBhbmQgdGhlbiwgb3IgZWxzZSBpbnN0YWxsZXIgd2lsbCBjb21wbGFpbgogICAgICAgICBkYi5Db21taXQoKQotICAgICAgICBwYXJlbnQsIGRpciA9IHB5ZGlycy5wb3AoKQotICAgICAgICBpZiBkaXIgPT0gIi5zdm4iIG9yIGRpciA9PSAnX19weWNhY2hlX18nIG9yIGRpci5zdGFydHN3aXRoKCJwbGF0LSIpOgorICAgICAgICBwYXJlbnQsIGRpciwgZmlsZXMsIGZlYXR1cmUgPSBweWRpcnMucG9wKCkKKyAgICAgICAgaWYgZGlyLnN0YXJ0c3dpdGgoInBsYXQtIik6CiAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBlbGlmIGRpciBpbiBbInRraW50ZXIiLCAiaWRsZWxpYiIsICJJY29ucyJdOgorICAgICAgICBpZiBkaXIgaW4gWyJ0a2ludGVyIiwgImlkbGVsaWIiLCAidHVydGxlZGVtbyJdOgogICAgICAgICAgICAgaWYgbm90IGhhdmVfdGNsOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmZWF0dXJlID0gdGNsdGsKICAgICAgICAgICAgIHRjbHRrLnNldF9jdXJyZW50KCkKLSAgICAgICAgZWxpZiBkaXIgaW4gWyd0ZXN0JywgJ3Rlc3RzJywgJ2RhdGEnLCAnb3V0cHV0J106Ci0gICAgICAgICAgICAjIHRlc3Q6IExpYiwgTGliL2VtYWlsLCBMaWIvY3R5cGVzLCBMaWIvc3FsaXRlMwotICAgICAgICAgICAgIyB0ZXN0czogTGliL2Rpc3R1dGlscwotICAgICAgICAgICAgIyBkYXRhOiBMaWIvZW1haWwvdGVzdAotICAgICAgICAgICAgIyBvdXRwdXQ6IExpYi90ZXN0Ci0gICAgICAgICAgICB0ZXN0c3VpdGUuc2V0X2N1cnJlbnQoKQorICAgICAgICBlbGlmIGRpciBpbiAoJ3Rlc3QnLCAndGVzdHMnKToKKyAgICAgICAgICAgIGZlYXR1cmUgPSB0ZXN0c3VpdGUKICAgICAgICAgZWxpZiBub3QgaGF2ZV9jdHlwZXMgYW5kIGRpciA9PSAiY3R5cGVzIjoKICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkZWZhdWx0X2ZlYXR1cmUuc2V0X2N1cnJlbnQoKQorICAgICAgICBmZWF0dXJlLnNldF9jdXJyZW50KCkKICAgICAgICAgbGliID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgcGFyZW50LCBkaXIsIGRpciwgIiVzfCVzIiAlIChwYXJlbnQubWFrZV9zaG9ydChkaXIpLCBkaXIpKQotICAgICAgICAjIEFkZCBhZGRpdGlvbmFsIGZpbGVzCiAgICAgICAgIGRpcnMuYXBwZW5kKGxpYikKLSAgICAgICAgbGliLmdsb2IoIioudHh0IikKLSAgICAgICAgaWYgZGlyPT0nc2l0ZS1wYWNrYWdlcyc6Ci0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIlJFQURNRS50eHQiLCBzcmM9IlJFQURNRSIpCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBmaWxlcyA9IGxpYi5nbG9iKCIqLnB5IikKLSAgICAgICAgZmlsZXMgKz0gbGliLmdsb2IoIioucHl3IikKLSAgICAgICAgaWYgZmlsZXM6Ci0gICAgICAgICAgICAjIEFkZCBhbiBlbnRyeSB0byB0aGUgUmVtb3ZlRmlsZSB0YWJsZSB0byByZW1vdmUgYnl0ZWNvZGUgZmlsZXMuCi0gICAgICAgICAgICBsaWIucmVtb3ZlX3B5YygpCi0gICAgICAgICMgcGFja2FnZSBSRUFETUVzIGlmIHByZXNlbnQKLSAgICAgICAgbGliLmdsb2IoIlJFQURNRSIpCi0gICAgICAgIGlmIGRpcj09J0xpYic6Ci0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoJ3dzZ2lyZWYuZWdnLWluZm8nKQotICAgICAgICBpZiBkaXI9PSd0ZXN0JyBhbmQgcGFyZW50LnBoeXNpY2FsPT0nTGliJzoKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiMTg1dGVzdC5kYiIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoImF1ZGlvdGVzdC5hdSIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInNnbWxfaW5wdXQuaHRtbCIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInRlc3R0YXIudGFyIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgidGVzdF9kaWZmbGliX2V4cGVjdC5odG1sIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiY2hlY2tfc291bmRjYXJkLnZicyIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoImVtcHR5LnZicyIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIlNpbmUtMTAwMEh6LTMwMG1zLmFpZiIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIm1pbWUudHlwZXMiKQotICAgICAgICAgICAgbGliLmdsb2IoIioudXVlIikKLSAgICAgICAgICAgIGxpYi5nbG9iKCIqLnBlbSIpCi0gICAgICAgICAgICBsaWIuZ2xvYigiKi5wY2siKQotICAgICAgICAgICAgbGliLmdsb2IoImNmZ3BhcnNlci4qIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiemlwX2NwNDM3X2hlYWRlci56aXAiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJ6aXBkaXIuemlwIikKLSAgICAgICAgaWYgZGlyPT0nY2FwYXRoJzoKLSAgICAgICAgICAgIGxpYi5nbG9iKCIqLjAiKQotICAgICAgICBpZiBkaXI9PSd0ZXN0cycgYW5kIHBhcmVudC5waHlzaWNhbD09J2Rpc3R1dGlscyc6Ci0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIlNldHVwLnNhbXBsZSIpCi0gICAgICAgIGlmIGRpcj09J2RlY2ltYWx0ZXN0ZGF0YSc6Ci0gICAgICAgICAgICBsaWIuZ2xvYigiKi5kZWNUZXN0IikKLSAgICAgICAgaWYgZGlyPT0neG1sdGVzdGRhdGEnOgotICAgICAgICAgICAgbGliLmdsb2IoIioueG1sIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgidGVzdC54bWwub3V0IikKLSAgICAgICAgaWYgZGlyPT0nb3V0cHV0JzoKLSAgICAgICAgICAgIGxpYi5nbG9iKCJ0ZXN0XyoiKQotICAgICAgICBpZiBkaXI9PSdzbmRoZHJkYXRhJzoKLSAgICAgICAgICAgIGxpYi5nbG9iKCJzbmRoZHIuKiIpCi0gICAgICAgIGlmIGRpcj09J2lkbGVsaWInOgotICAgICAgICAgICAgbGliLmdsb2IoIiouZGVmIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiaWRsZS5iYXQiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJDaGFuZ2VMb2ciKQotICAgICAgICBpZiBkaXI9PSJJY29ucyI6Ci0gICAgICAgICAgICBsaWIuZ2xvYigiKi5naWYiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJpZGxlLmljbnMiKQotICAgICAgICBpZiBkaXI9PSJjb21tYW5kIiBhbmQgcGFyZW50LnBoeXNpY2FsPT0iZGlzdHV0aWxzIjoKLSAgICAgICAgICAgIGxpYi5nbG9iKCJ3aW5pbnN0Ki5leGUiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJjb21tYW5kX3RlbXBsYXRlIikKLSAgICAgICAgaWYgZGlyPT0ibGliMnRvMyI6Ci0gICAgICAgICAgICBsaWIucmVtb3ZlZmlsZSgicGlja2xlIiwgIioucGlja2xlIikKLSAgICAgICAgaWYgZGlyPT0ibWFjaG9saWIiOgotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJSRUFETUUuY3R5cGVzIikKLSAgICAgICAgICAgIGxpYi5nbG9iKCJmZXRjaF9tYWNob2xpYioiKQotICAgICAgICBpZiBkaXI9PSd0dXJ0bGVkZW1vJzoKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgidHVydGxlLmNmZyIpCi0gICAgICAgIGlmIGRpcj09InB5ZG9jX2RhdGEiOgotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJfcHlkb2MuY3NzIikKLSAgICAgICAgaWYgZGlyPT0iZGF0YSIgYW5kIHBhcmVudC5waHlzaWNhbD09InRlc3QiIGFuZCBwYXJlbnQuYmFzZWRpci5waHlzaWNhbD09ImVtYWlsIjoKLSAgICAgICAgICAgICMgVGhpcyBzaG91bGQgY29udGFpbiBhbGwgbm9uLS5zdm4gZmlsZXMgbGlzdGVkIGluIHN1YnZlcnNpb24KLSAgICAgICAgICAgIGZvciBmIGluIG9zLmxpc3RkaXIobGliLmFic29sdXRlKToKLSAgICAgICAgICAgICAgICBpZiBmLmVuZHN3aXRoKCIudHh0Iikgb3IgZj09Ii5zdm4iOmNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgZi5lbmRzd2l0aCgiLmF1Iikgb3IgZi5lbmRzd2l0aCgiLmdpZiIpOgotICAgICAgICAgICAgICAgICAgICBsaWIuYWRkX2ZpbGUoZikKKyAgICAgICAgaGFzX3B5ID0gRmFsc2UKKyAgICAgICAgZm9yIG5hbWUsIHN1YmRpciBpbiBmaWxlcy5pdGVtcygpOgorICAgICAgICAgICAgaWYgc3ViZGlyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYXNzZXJ0IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihsaWIuYWJzb2x1dGUsIG5hbWUpKQorICAgICAgICAgICAgICAgIGlmIG5hbWUgPT0gJ1JFQURNRSc6CisgICAgICAgICAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiUkVBRE1FLnR4dCIsIHNyYz0iUkVBRE1FIikKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwcmludCgiV0FSTklORzogTmV3IGZpbGUgJXMgaW4gZW1haWwvdGVzdC9kYXRhIiAlIGYpCi0gICAgICAgIGZvciBmIGluIG9zLmxpc3RkaXIobGliLmFic29sdXRlKToKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKGxpYi5hYnNvbHV0ZSwgZikpOgotICAgICAgICAgICAgICAgIHB5ZGlycy5hcHBlbmQoKGxpYiwgZikpCi0gICAgZm9yIGQgaW4gZGlyczoKLSAgICAgICAgZC5jaGVja191bnBhY2thZ2VkKCkKKyAgICAgICAgICAgICAgICAgICAgbGliLmFkZF9maWxlKG5hbWUpCisgICAgICAgICAgICAgICAgICAgIGhhc19weSA9IGhhc19weSBvciBuYW1lLmVuZHN3aXRoKCIucHkiKSBvciBuYW1lLmVuZHN3aXRoKCIucHl3IikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXNzZXJ0IG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKGxpYi5hYnNvbHV0ZSwgbmFtZSkpCisgICAgICAgICAgICAgICAgcHlkaXJzLmFwcGVuZCgobGliLCBuYW1lLCBzdWJkaXIsIGZlYXR1cmUpKQorCisgICAgICAgIGlmIGhhc19weToKKyAgICAgICAgICAgIGxpYi5yZW1vdmVfcHljKCkKICAgICAjIEFkZCBETExzCiAgICAgZGVmYXVsdF9mZWF0dXJlLnNldF9jdXJyZW50KCkKICAgICBsaWIgPSBETExzCkBAIC0xMTU5LDYgKzExNTAsOCBAQAogICAgICAgICAgICAgbGliLmFkZF9maWxlKCJSRUFETUUudHh0Iiwgc3JjPSJSRUFETUUiKQogICAgICAgICBpZiBmID09ICdTY3JpcHRzJzoKICAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiMnRvMy5weSIsIHNyYz0iMnRvMyIpCisgICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInB5ZG9jMy5weSIsIHNyYz0icHlkb2MzIikKKyAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgicHl2ZW52LnB5Iiwgc3JjPSJweXZlbnYiKQogICAgICAgICAgICAgaWYgaGF2ZV90Y2w6CiAgICAgICAgICAgICAgICAgbGliLnN0YXJ0X2NvbXBvbmVudCgicHlkb2NndWkucHl3IiwgdGNsdGssIGtleWZpbGU9InB5ZG9jZ3VpLnB5dyIpCiAgICAgICAgICAgICAgICAgbGliLmFkZF9maWxlKCJweWRvY2d1aS5weXciKQpAQCAtMTE5MCw2ICsxMTgzLDggQEAKICAgICAgICAgICAgICAgICJJbnN0YWxsUGF0aCIpLAogICAgICAgICAgICAgICAoIlJFR0lTVFJZLmRvYyIsIG1zaWxpYi5nZW5fdXVpZCgpLCAiVEFSR0VURElSIiwgcmVnaXN0cnlfY29tcG9uZW50LCBOb25lLAogICAgICAgICAgICAgICAgIkRvY3VtZW50YXRpb24iKSwKKyAgICAgICAgICAgICAgKCJSRUdJU1RSWS5wYXRoIiwgbXNpbGliLmdlbl91dWlkKCksICJUQVJHRVRESVIiLCByZWdpc3RyeV9jb21wb25lbnQsIE5vbmUsCisgICAgICAgICAgICAgIE5vbmUpLAogICAgICAgICAgICAgICAoIlJFR0lTVFJZLmRlZiIsIG1zaWxpYi5nZW5fdXVpZCgpLCAiVEFSR0VURElSIiwgcmVnaXN0cnlfY29tcG9uZW50LAogICAgICAgICAgICAgICAgTm9uZSwgTm9uZSldICsgdGNsZGF0YSkKICAgICAjIFNlZSAiRmVhdHVyZUNvbXBvbmVudHMgVGFibGUiLgpAQCAtMTIwNiw2ICsxMjAxLDcgQEAKICAgICBhZGRfZGF0YShkYiwgIkZlYXR1cmVDb21wb25lbnRzIiwKICAgICAgICAgICAgICBbKGRlZmF1bHRfZmVhdHVyZS5pZCwgIlJFR0lTVFJZIiksCiAgICAgICAgICAgICAgIChodG1sZmlsZXMuaWQsICJSRUdJU1RSWS5kb2MiKSwKKyAgICAgICAgICAgICAgKHByZXBlbmRfcGF0aC5pZCwgIlJFR0lTVFJZLnBhdGgiKSwKICAgICAgICAgICAgICAgKGV4dF9mZWF0dXJlLmlkLCAiUkVHSVNUUlkuZGVmIildICsKICAgICAgICAgICAgICAgdGNsZGF0YQogICAgICAgICAgICAgICApCkBAIC0xMjQ0LDExICsxMjQwLDExIEBACiAgICAgICAgICAgICAgICJ0ZXh0L3BsYWluIiwgIlJFR0lTVFJZLmRlZiIpLAogICAgICAgICAgICAgICNWZXJicwogICAgICAgICAgICAgICgicHkub3BlbiIsIC0xLCBwYXQgJSAodGVzdHByZWZpeCwgIiIsICJvcGVuIiksICIiLAotICAgICAgICAgICAgICByJyJbVEFSR0VURElSXXB5dGhvbi5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCisgICAgICAgICAgICAgIHInIltMQVVOQ0hFUkRJUl1weS5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCiAgICAgICAgICAgICAgKCJweXcub3BlbiIsIC0xLCBwYXQgJSAodGVzdHByZWZpeCwgIk5vQ29uIiwgIm9wZW4iKSwgIiIsCi0gICAgICAgICAgICAgIHInIltUQVJHRVRESVJdcHl0aG9udy5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCisgICAgICAgICAgICAgIHInIltMQVVOQ0hFUkRJUl1weXcuZXhlIiAiJTEiICUqJywgIlJFR0lTVFJZLmRlZiIpLAogICAgICAgICAgICAgICgicHljLm9wZW4iLCAtMSwgcGF0ICUgKHRlc3RwcmVmaXgsICJDb21waWxlZCIsICJvcGVuIiksICIiLAotICAgICAgICAgICAgICByJyJbVEFSR0VURElSXXB5dGhvbi5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCisgICAgICAgICAgICAgIHInIltMQVVOQ0hFUkRJUl1weS5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCiAgICAgICAgICAgICAgXSArIHRjbF92ZXJicyArIFsKICAgICAgICAgICAgICAjSWNvbnMKICAgICAgICAgICAgICAoInB5Lmljb24iLCAtMSwgcGF0MiAlICh0ZXN0cHJlZml4LCAiIiksICIiLApAQCAtMTM0Nyw5ICsxMzQzLDkgQEAKICMgTWVyZ2UgQ1JUIGludG8gTVNJIGZpbGUuIFRoaXMgcmVxdWlyZXMgdGhlIGRhdGFiYXNlIHRvIGJlIGNsb3NlZC4KIG1vZF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsiUHJvZ3JhbUZpbGVzIl0sICJDb21tb24gRmlsZXMiLCAiTWVyZ2UgTW9kdWxlcyIpCiBpZiBtc2lsaWIuV2luNjQ6Ci0gICAgbW9kdWxlcyA9IFsiTWljcm9zb2Z0X1ZDOTBfQ1JUX3g4Nl94NjQubXNtIiwgInBvbGljeV85XzBfTWljcm9zb2Z0X1ZDOTBfQ1JUX3g4Nl94NjQubXNtIl0KKyAgICBtb2R1bGVzID0gWyJNaWNyb3NvZnRfVkMxMDBfQ1JUX3g2NC5tc20iXQogZWxzZToKLSAgICBtb2R1bGVzID0gWyJNaWNyb3NvZnRfVkM5MF9DUlRfeDg2Lm1zbSIsInBvbGljeV85XzBfTWljcm9zb2Z0X1ZDOTBfQ1JUX3g4Ni5tc20iXQorICAgIG1vZHVsZXMgPSBbIk1pY3Jvc29mdF9WQzEwMF9DUlRfeDg2Lm1zbSJdCiAKIGZvciBpLCBuIGluIGVudW1lcmF0ZShtb2R1bGVzKToKICAgICBtb2R1bGVzW2ldID0gb3MucGF0aC5qb2luKG1vZF9kaXIsIG4pCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbXNpbGliLnB5IGIvVG9vbHMvbXNpL21zaWxpYi5weQppbmRleCA5MmZiNWUxLi5mNDQwNTJlIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbXNpbGliLnB5CisrKyBiL1Rvb2xzL21zaS9tc2lsaWIucHkKQEAgLTQwOCw3ICs0MDgsNyBAQAogICAgICAgICBzZWxmLnBoeXNpY2FsID0gcGh5c2ljYWwKICAgICAgICAgc2VsZi5sb2dpY2FsID0gbG9naWNhbAogICAgICAgICBzZWxmLmNvbXBvbmVudCA9IE5vbmUKLSAgICAgICAgc2VsZi5zaG9ydF9uYW1lcyA9IHNldHMuU2V0KCkKKyAgICAgICAgc2VsZi5zaG9ydF9uYW1lcyA9IHt9CiAgICAgICAgIHNlbGYuaWRzID0gc2V0cy5TZXQoKQogICAgICAgICBzZWxmLmtleWZpbGVzID0ge30KICAgICAgICAgc2VsZi5jb21wb25lbnRmbGFncyA9IGNvbXBvbmVudGZsYWdzCkBAIC00NTYsMjMgKzQ1NiwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgWyhmZWF0dXJlLmlkLCBjb21wb25lbnQpXSkKIAogICAgIGRlZiBtYWtlX3Nob3J0KHNlbGYsIGZpbGUpOgorICAgICAgICBsb25nID0gZmlsZQogICAgICAgICBmaWxlID0gcmUuc3ViKHInW1w/fD48Oi8qIissOz1cW1xdXScsICdfJywgZmlsZSkgIyByZXN0cmljdGlvbnMgb24gc2hvcnQgbmFtZXMKLSAgICAgICAgcGFydHMgPSBmaWxlLnNwbGl0KCIuIikKKyAgICAgICAgcGFydHMgPSBmaWxlLnNwbGl0KCIuIiwgMSkKICAgICAgICAgaWYgbGVuKHBhcnRzKT4xOgotICAgICAgICAgICAgc3VmZml4ID0gcGFydHNbLTFdLnVwcGVyKCkKKyAgICAgICAgICAgIHN1ZmZpeCA9IHBhcnRzWzFdLnVwcGVyKCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN1ZmZpeCA9IE5vbmUKKyAgICAgICAgICAgIHN1ZmZpeCA9ICcnCiAgICAgICAgIHByZWZpeCA9IHBhcnRzWzBdLnVwcGVyKCkKLSAgICAgICAgaWYgbGVuKHByZWZpeCkgPD0gOCBhbmQgKG5vdCBzdWZmaXggb3IgbGVuKHN1ZmZpeCk8PTMpOgorICAgICAgICBpZiBsZW4ocHJlZml4KSA8PSA4IGFuZCAnLicgbm90IGluIHN1ZmZpeCBhbmQgbGVuKHN1ZmZpeCkgPD0gMzoKICAgICAgICAgICAgIGlmIHN1ZmZpeDoKICAgICAgICAgICAgICAgICBmaWxlID0gcHJlZml4KyIuIitzdWZmaXgKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZmlsZSA9IHByZWZpeAotICAgICAgICAgICAgYXNzZXJ0IGZpbGUgbm90IGluIHNlbGYuc2hvcnRfbmFtZXMKKyAgICAgICAgICAgIGFzc2VydCBmaWxlIG5vdCBpbiBzZWxmLnNob3J0X25hbWVzLCAoZmlsZSwgc2VsZi5zaG9ydF9uYW1lc1tmaWxlXSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHByZWZpeCA9IHByZWZpeFs6Nl0KICAgICAgICAgICAgIGlmIHN1ZmZpeDoKLSAgICAgICAgICAgICAgICBzdWZmaXggPSBzdWZmaXhbOjNdCisgICAgICAgICAgICAgICAgIyBsYXN0IHRocmVlIGNoYXJhY3RlcnMgb2YgbGFzdCBzdWZmaXgKKyAgICAgICAgICAgICAgICBzdWZmaXggPSBzdWZmaXgucnNwbGl0KCcuJylbLTFdWzozXQogICAgICAgICAgICAgcG9zID0gMQogICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgICBpZiBzdWZmaXg6CkBAIC00ODQsNyArNDg2LDcgQEAKICAgICAgICAgICAgICAgICBhc3NlcnQgcG9zIDwgMTAwMDAKICAgICAgICAgICAgICAgICBpZiBwb3MgaW4gKDEwLCAxMDAsIDEwMDApOgogICAgICAgICAgICAgICAgICAgICBwcmVmaXggPSBwcmVmaXhbOi0xXQotICAgICAgICBzZWxmLnNob3J0X25hbWVzLmFkZChmaWxlKQorICAgICAgICBzZWxmLnNob3J0X25hbWVzW2ZpbGVdID0gbG9uZwogICAgICAgICByZXR1cm4gZmlsZQogCiAgICAgZGVmIGFkZF9maWxlKHNlbGYsIGZpbGUsIHNyYz1Ob25lLCB2ZXJzaW9uPU5vbmUsIGxhbmd1YWdlPU5vbmUpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3NjaGVtYS5weSBiL1Rvb2xzL21zaS9zY2hlbWEucHkKaW5kZXggZDAyOGExMS4uMWY3MmU1YSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL3NjaGVtYS5weQorKysgYi9Ub29scy9tc2kvc2NoZW1hLnB5CkBAIC05NTgsNyArOTU4LDcgQEAKICh1J1NlcnZpY2VJbnN0YWxsJyx1J1N0YXJ0VHlwZScsdSdOJywwLDQsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUeXBlIG9mIHRoZSBzZXJ2aWNlJywpLAogKHUnU2hvcnRjdXQnLHUnTmFtZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJyxOb25lLCB1J1RoZSBuYW1lIG9mIHRoZSBzaG9ydGN1dCB0byBiZSBjcmVhdGVkLicsKSwKICh1J1Nob3J0Y3V0Jyx1J0Rlc2NyaXB0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgZGVzY3JpcHRpb24gZm9yIHRoZSBzaG9ydGN1dC4nLCksCi0odSdTaG9ydGN1dCcsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUgZGVub3RpbmcgdGhlIGNvbXBvbmVudCB3aG9zZSBzZWxlY3Rpb24gZ2F0ZXMgdGhlIHRoZSBzaG9ydGN1dCBjcmVhdGlvbi9kZWxldGlvbi4nLCksCisodSdTaG9ydGN1dCcsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUgZGVub3RpbmcgdGhlIGNvbXBvbmVudCB3aG9zZSBzZWxlY3Rpb24gZ2F0ZXMgdGhlIHNob3J0Y3V0IGNyZWF0aW9uL2RlbGV0aW9uLicsKSwKICh1J1Nob3J0Y3V0Jyx1J0ljb25fJyx1J1knLE5vbmUsIE5vbmUsIHUnSWNvbicsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRmlsZSB0YWJsZSBkZW5vdGluZyB0aGUgZXh0ZXJuYWwgaWNvbiBmaWxlIGZvciB0aGUgc2hvcnRjdXQuJywpLAogKHUnU2hvcnRjdXQnLHUnSWNvbkluZGV4Jyx1J1knLC0zMjc2NywzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBpY29uIGluZGV4IGZvciB0aGUgc2hvcnRjdXQuJywpLAogKHUnU2hvcnRjdXQnLHUnRGlyZWN0b3J5XycsdSdOJyxOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRGlyZWN0b3J5IHRhYmxlIGRlbm90aW5nIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHNob3J0Y3V0IGZpbGUgaXMgY3JlYXRlZC4nLCksCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdWlzYW1wbGUucHkgYi9Ub29scy9tc2kvdWlzYW1wbGUucHkKaW5kZXggMmJkZjU5ZS4uNTQzMDgwNSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL3Vpc2FtcGxlLnB5CisrKyBiL1Rvb2xzL21zaS91aXNhbXBsZS5weQpAQCAtMTE5NSw3ICsxMTk1LDcgQEAKICh1J1NlcnZpY2VJbnN0YWxsJywgdSdTdGFydFR5cGUnLCB1J04nLCAwLCA0LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1R5cGUgb2YgdGhlIHNlcnZpY2UnKSwKICh1J1Nob3J0Y3V0JywgdSdOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsIE5vbmUsIHUnVGhlIG5hbWUgb2YgdGhlIHNob3J0Y3V0IHRvIGJlIGNyZWF0ZWQuJyksCiAodSdTaG9ydGN1dCcsIHUnRGVzY3JpcHRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIHNob3J0Y3V0LicpLAotKHUnU2hvcnRjdXQnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlIGRlbm90aW5nIHRoZSBjb21wb25lbnQgd2hvc2Ugc2VsZWN0aW9uIGdhdGVzIHRoZSB0aGUgc2hvcnRjdXQgY3JlYXRpb24vZGVsZXRpb24uJyksCisodSdTaG9ydGN1dCcsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUgZGVub3RpbmcgdGhlIGNvbXBvbmVudCB3aG9zZSBzZWxlY3Rpb24gZ2F0ZXMgdGhlIHNob3J0Y3V0IGNyZWF0aW9uL2RlbGV0aW9uLicpLAogKHUnU2hvcnRjdXQnLCB1J0ljb25fJywgdSdZJywgTm9uZSwgTm9uZSwgdSdJY29uJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBGaWxlIHRhYmxlIGRlbm90aW5nIHRoZSBleHRlcm5hbCBpY29uIGZpbGUgZm9yIHRoZSBzaG9ydGN1dC4nKSwKICh1J1Nob3J0Y3V0JywgdSdJY29uSW5kZXgnLCB1J1knLCAtMzI3NjcsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBpY29uIGluZGV4IGZvciB0aGUgc2hvcnRjdXQuJyksCiAodSdTaG9ydGN1dCcsIHUnRGlyZWN0b3J5XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRGlyZWN0b3J5JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBEaXJlY3RvcnkgdGFibGUgZGVub3RpbmcgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgc2hvcnRjdXQgZmlsZSBpcyBjcmVhdGVkLicpLApkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3V1aWRzLnB5IGIvVG9vbHMvbXNpL3V1aWRzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGQxN2FkLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL21zaS91dWlkcy5weQorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgVGhpcyBzaG91bGQgYmUgZXh0ZW5kZWQgZm9yIGVhY2ggUHl0aG9uIHJlbGVhc2UuCi0jIFRoZSBwcm9kdWN0IGNvZGUgbXVzdCBjaGFuZ2Ugd2hlbmV2ZXIgdGhlIG5hbWUgb2YgdGhlIE1TSSBmaWxlCi0jIGNoYW5nZXMsIGFuZCB3aGVuIG5ldyBjb21wb25lbnQgY29kZXMgYXJlIGlzc3VlZCBmb3IgZXhpc3RpbmcKLSMgY29tcG9uZW50cy4gU2VlICJDaGFuZ2luZyB0aGUgUHJvZHVjdCBDb2RlIi4gQXMgd2UgY2hhbmdlIHRoZQotIyBjb21wb25lbnQgY29kZXMgd2l0aCBldmVyeSBidWlsZCwgd2UgbmVlZCBhIG5ldyBwcm9kdWN0IGNvZGUKLSMgZWFjaCB0aW1lLiBGb3IgaW50ZXJtZWRpYXRlIChzbmFwc2hvdCkgcmVsZWFzZXMsIHRoZXkgYXJlIGF1dG9tYXRpY2FsbHkKLSMgZ2VuZXJhdGVkLiBGb3Igb2ZmaWNpYWwgcmVsZWFzZXMsIHdlIHJlY29yZCB0aGUgcHJvZHVjdCBjb2RlcywKLSMgc28gcGVvcGxlIGNhbiByZWZlciB0byB0aGVtLgotcHJvZHVjdF9jb2RlcyA9IHsKLSAgICAnMi41LjEwMSc6ICd7YmMxNGNlM2UtNWU3Mi00YTY0LWFjMWYtYmY1OWE1NzE4OThjfScsICMgMi41YTEKLSAgICAnMi41LjEwMic6ICd7NWVlZDUxYzEtOGU5ZC00MDcxLTk0YzUtYjQwZGU1ZDQ5YmE1fScsICMgMi41YTIKLSAgICAnMi41LjEwMyc6ICd7NzNkY2Q5NjYtZmZlYy00MTVmLWJiMzktODM0MmMxZjQ3MDE3fScsICMgMi41YTMKLSAgICAnMi41LjExMSc6ICd7Yzc5N2VjZjgtYThlNi00ZmVjLWJiOTktNTI2YjY1ZjI4NjI2fScsICMgMi41YjEKLSAgICAnMi41LjExMic6ICd7MzJiZWI3NzQtZjYyNS00MzlkLWI1ODctNzE4NzQ4N2JhZjE1fScsICMgMi41YjIKLSAgICAnMi41LjExMyc6ICd7ODlmMjM5MTgtMTFjZi00ZjA4LWJlMTMtYjliMmU2NDYzZmQ5fScsICMgMi41YjMKLSAgICAnMi41LjEyMSc6ICd7OGU5MzIxYmMtNmIyNC00OGEzLThmZDQtYzk1ZjhlNTMxZTVmfScsICMgMi41YzEKLSAgICAnMi41LjEyMic6ICd7YTZjZDUwOGQtOTU5OS00NWRhLWE0NDEtY2JmZmE5ZjdlMDcwfScsICMgMi41YzIKLSAgICAnMi41LjE1MCc6ICd7MGEyYzU4NTQtNTU3ZS00OGM4LTgzNWEtM2I5ZjA3NGJkY2FhfScsICMgMi41LjAKLSAgICAnMi41LjExMjEnOid7MDM3OGI0M2UtNjE4NC00YzJmLWJlMWEtNGEzNjc3ODFjZDU0fScsICMgMi41LjFjMQotICAgICcyLjUuMTE1MCc6J3szMTgwMDAwNC02Mzg2LTQ5OTktYTUxOS01MThmMmQ3OGQ4ZjB9JywgIyAyLjUuMQotICAgICcyLjUuMjE1MCc6J3s2MzA0YTdkYS0xMTMyLTRlOTEtYTM0My1hMjk2MjY5ZWFiOGF9JywgIyAyLjUuMmMxCi0gICAgJzIuNS4yMTUwJzonezZiOTc2YWRmLThhZTgtNDM0ZS1iMjgyLWEwNmM3ZjYyNGQyZn0nLCAjIDIuNS4yCi0gICAgJzIuNi4xMDEnOiAnezBiYTgyZTFiLTUyZmQtNGUwMy04NjEwLWE2Yzc2MjM4ZThhOH0nLCAjIDIuNmExCi0gICAgJzIuNi4xMDInOiAnezNiMjdlMTZjLTU2ZGItNDU3MC1hMmQzLWU5YTI2MTgwYzYwYn0nLCAjIDIuNmEyCi0gICAgJzIuNi4xMDMnOiAne2NkMDZhOWM1LWJkZTUtNGJkNy05ODc0LTQ4OTMzOTk3MTIyYX0nLCAjIDIuNmEzCi0gICAgJzIuNi4xMDQnOiAne2RjNmVkNjM0LTQ3NGEtNGE1MC1hNTQ3LThkZTRiNzQ5MWU1M30nLCAjIDIuNmE0Ci0gICAgJzIuNi4xMTEnOiAnezNmODIwNzlhLTViZWUtNGM0YS04YTQxLTgyOTIzODllMjRhZX0nLCAjIDIuNmIxCi0gICAgJzIuNi4xMTInOiAnezhhMGU1OTcwLWYzZTYtNDczNy05YTJiLWJjNWZmMGYxNWZiNX0nLCAjIDIuNmIyCi0gICAgJzIuNi4xMTMnOiAne2RmNGY1YzIxLTZmY2MtNDU0MC05NWRlLTg1ZmViYTYzNGU3Nn0nLCAjIDIuNmIzCi0gICAgJzIuNi4xMjEnOiAne2JiZDM0NDY0LWRkZWItNDAyOC05OWU1LWYxNmM0YThmYmRiM30nLCAjIDIuNmMxCi0gICAgJzIuNi4xMjInOiAnezhmNjQ3ODdlLWEwMjMtNGM2MC1iZmVlLTI1ZDNhM2Y1OTJjNn0nLCAjIDIuNmMyCi0gICAgJzIuNi4xNTAnOiAnezExMGViNWM0LWU5OTUtNGNmYi1hYjgwLWE1ZjMxNWJlYTllOH0nLCAjIDIuNi4wCi0gICAgJzIuNi4xMTUwJzonezljYzg5MTcwLTAwMGItNDU3ZC05MWYxLTUzNjkxZjg1YjIyM30nLCAjIDIuNi4xCi0gICAgJzIuNi4yMTIxJzone2FkYWM0MTJiLWIyMDktNGMxNS1iNmFiLWRjYTFiNmU0NzE0NH0nLCAjIDIuNi4yYzEKLSAgICAnMi42LjIxNTAnOid7MjRhYWI0MjAtNGUzMC00NDk2LTk3MzktM2UyMTZmM2RlNmFlfScsICMgMi42LjIKLSAgICAnMi42LjMxMjEnOid7YTczZTAyNTQtZGNkYS00ZmU0LWJmMzctYzdlMWM0ZjRlYmI2fScsICMgMi42LjNjMQotICAgICcyLjYuMzE1MCc6J3szZDlhYzA5NS1lMTE1LTRlOTQtYmRlZi03ZjdlZGYxNzY5N2R9JywgIyAyLjYuMwotICAgICcyLjYuNDEyMSc6J3s3MjdkZTYwNS0wMzU5LTQ2MDYtYTk0Yi1jMjAzMzY1MjM3OWJ9JywgIyAyLjYuNGMxCi0gICAgJzIuNi40MTIyJzonezRmNzYwM2M2LTYzNTItNDI5OS1hMzk4LTE1MGEzMWIxOWFjY30nLCAjIDIuNi40YzIKLSAgICAnMi42LjQxNTAnOid7ZTczOTRhMGYtM2Y4MC00NWIxLTg3ZmMtYWJjZDUxODkzMjQ2fScsICMgMi42LjQKLSAgICAnMi42LjUxMjEnOid7ZTBlMjczZDctNzU5OC00NzAxLTgzMjUtYzkwYzA2OWZkNWZmfScsICMgMi42LjVjMQotICAgICcyLjYuNTEyMic6J3tmYTIyN2I3Ni0wNjcxLTRkYzYtYjgyNi1jMmZmMmE3MGRmZDV9JywgIyAyLjYuNWMyCi0gICAgJzIuNi41MTUwJzonezQ3MjNmMTk5LWZhNjQtNDIzMy04ZTZlLTlmY2NjOTVhMThlZX0nLCAjIDIuNi41Ci0gICAgJzIuNy4xMDEnOiAne2VjYTFiYmVmLTQzMmMtNDlhZS1hNjY3LWMyMTNjYzdiYmYyMn0nLCAjIDIuN2ExCi0gICAgJzIuNy4xMDInOiAnezIxY2UxNmVkLTczYzQtNDYwZC05YjExLTUyMmY0MTdiMjA5MH0nLCAjIDIuN2EyCi0gICAgJzIuNy4xMDMnOiAnezZlN2RiZDU1LWJhNGEtNDhhYy1hNjg4LTZjNzVkYjRkNzUwMH0nLCAjIDIuN2EzCi0gICAgJzIuNy4xMDQnOiAne2VlNzc0YmEzLTc0YTUtNDhkOS1iNDI1LWIzNWEyODcyNjBjOH0nLCAjIDIuN2E0Ci0gICAgJzIuNy4xMTEnOiAnezljZmQ5ZWM3LWE5YzctNDk4MC1hMWM2LTA1NGZjNjQ5M2ViM30nLCAjIDIuN2IxCi0gICAgJzIuNy4xMTInOiAnezlhNzJmYWY2LWMzMDQtNDE2NS04NTk1LTkyOTFmZjMwY2FjNn0nLCAjIDIuN2IyCi0gICAgJzIuNy4xMjEnOiAne2Y1MzBjOTRhLWRkNTMtNGRlOS05NDhlLWI2MzJiOWNiNDhkMn0nLCAjIDIuN2MxCi0gICAgJzIuNy4xMjInOiAne2Y4MDkwNWQyLWRkOGQtNGI4ZS04YTQwLWMyM2M5M2RjYTA3ZH0nLCAjIDIuN2MyCi0gICAgJzIuNy4xNTAnOiAnezIwYzMxNDM1LTJhMGEtNDU4MC1iZThiLWFjMDZmYzI0M2NhNH0nLCAjIDIuNy4wCi0gICAgJzMuMC4xMDEnOiAnezg1NTQyNjNhLTMyNDItNDg1Ny05MzU5LWFhODdiYzJjNThjMn0nLCAjIDMuMGExCi0gICAgJzMuMC4xMDInOiAnezY5MmQ2ZTJjLWYwYWMtNDBiOC1hMTMzLTcxOTFhZWViNjdmOX0nLCAjIDMuMGEyCi0gICAgJzMuMC4xMDMnOiAnezQ5Y2IyOTk1LTc1MWEtNDc1My1iZTdhLWQwYjFiYjU4NWUwNn0nLCAjIDMuMGEzCi0gICAgJzMuMC4xMDQnOiAnezg3Y2IwMTllLTE5ZmQtNDIzOC1iMWM3LTg1NzUxNDM3ZDY0Nn0nLCAjIDMuMGE0Ci0gICAgJzMuMC4xMDUnOiAne2NmMjY1OWFmLTE5ZWMtNDNkMi04YzM1LTBmNmEwOTQzOWQ0Mn0nLCAjIDMuMGE1Ci0gICAgJzMuMC4xMTEnOiAnezM2YzI2ZjU1LTgzN2QtNDVjZi04NDhjLTVmNWMwZmI0N2EyOH0nLCAjIDMuMGIxCi0gICAgJzMuMC4xMTInOiAnezA1NmEwZmJjLWM4ZmUtNGM2MS1hYWRlLWM0NDExYjcwYzk5OH0nLCAjIDMuMGIyCi0gICAgJzMuMC4xMTMnOiAnezJiMmU4OWE5LTgzYWYtNDNmOS1iN2Q1LTk2ZTgwYzVhM2YyNn0nLCAjIDMuMGIzCi0gICAgJzMuMC4xMTQnOiAne2U5NWMzMWFmLTY5YmUtNGRkNy05NmU2LWU1ZmM4NWU2NjBlNn0nLCAjIDMuMGI0Ci0gICAgJzMuMC4xMjEnOiAne2QwOTc5YzVlLWNkM2MtNDJlYy1iZTRjLWUyOTRkYTc5MzU3M30nLCAjIDMuMGMxCi0gICAgJzMuMC4xMjInOiAne2Y3MDdiOGU5LWEyNTctNDA0NS04MThlLTQ5MjNmYzIwZmJiNn0nLCAjIDMuMGMyCi0gICAgJzMuMC4xMjMnOiAnezVlNzIwOGYxLTg2NDMtNGVhMi1hYjVlLTQ2NDQ4ODcxMTJlM30nLCAjIDMuMGMzCi0gICAgJzMuMC4xNTAnOiAne2UwZTU2ZTIxLTU1ZGUtNGY3Ny1hMTA5LTFiYWE3MjM0ODc0M30nLCAjIDMuMC4wCi0gICAgJzMuMC4xMTIxJzone2QzNWIxZWE1LTNkNzAtNDg3Mi1iZjdlLWNkMDY2YTc3YTljOX0nLCAjIDMuMC4xYzEKLSAgICAnMy4wLjExNTAnOid7ZGUyZjJkOWMtNTNlMi00MGVlLTgyMDktNzRkYTYzY2IwNjBlfScsICMgMy4wLjEKLSAgICAnMy4wLjIxMjEnOid7Y2VmNzllN2YtOTgwOS00OWUyLWFmZDItZTI0MTQ4ZDdjODU1fScsICMgMy4wLjJjMQotICAgICczLjAuMjE1MCc6J3swY2YzYjk1YS04MzgyLTQ2MDctOTc3OS1jMzY0MDdmZjM2MmN9JywgIyAzLjAuMgotICAgICczLjEuMTAxJzogJ3tjNDIzZWFkYS1jNDk4LTRkNTEtOWViNC1iZmVhZTY0N2UwYTB9JywgIyAzLjFhMQotICAgICczLjEuMTAyJzogJ3tmNmUxOTliZi1kYzY0LTQyZjMtODdkNC0xNTI1OTkxYTAxM2V9JywgIyAzLjFhMgotICAgICczLjEuMTExJzogJ3tjM2M4Mjg5My02OWIyLTQ2NzYtODU1NC0xYjZlZTZjMTkxZTl9JywgIyAzLjFiMQotICAgICczLjEuMTIxJzogJ3tkYTJiNTE3MC0xMmYzLTRkOTktOGExZi01NDkyNmNjYTdhY2R9JywgIyAzLjFjMQotICAgICczLjEuMTIyJzogJ3tiY2ViNTEzMy1lMmVlLTQxMDktOTUxZi1hYzdlOTQxYTE2OTJ9JywgIyAzLjFjMgotICAgICczLjEuMTUwJzogJ3szYWQ2MWVlNS04MWQyLTRkN2UtYWRlZi1kYTFkZDM3Mjc3ZDF9JywgIyAzLjEuMAotICAgICczLjEuMTEyMSc6J3s1NzgyZjk1Ny02ZDQ5LTQxZDQtYmFkMC02Njg3MTVkZmQ2Mzh9JywgIyAzLjEuMWMxCi0gICAgJzMuMS4xMTUwJzonezdmZjkwNDYwLTg5YjctNDM1Yi1iNTgzLWIzN2IyODE1Y2NjN30nLCAjIDMuMS4xCi0gICAgJzMuMS4yMTIxJzone2VjNDU2MjRhLTM3OGMtNDNiZS05MWYzLTNmN2E1OWIwZDkwY30nLCAjIDMuMS4yYzEKLSAgICAnMy4xLjIxNTAnOid7ZDQwYWYwMTYtNTA2Yy00M2ZiLWE3MzgtYmQ1NGZhOGMxZTg1fScsICMgMy4xLjIKLSAgICAnMy4yLjEwMScgOid7YjQxMWYxNjgtN2EzNi00ZmZmLTkwMmMtYTU1NGQxYzc4YTRmfScsICMgMy4yYTEKLSAgICAnMy4yLjEwMicgOid7NzlmZjczYjctODM1OS00MTBmLWI5YzUtMTUyZDIwMjZmOGM4fScsICMgMy4yYTIKLSAgICAnMy4yLjEwMycgOid7ZTc2MzVjNjUtYzIyMS00YjliLWI3MGEtNTYxMWI4MzY5ZDc3fScsICMgMy4yYTMKLSAgICAnMy4yLjEwNCcgOid7NzQ4Y2QxMzktNzViOC00Y2E4LTk4YTctNTgyNjIyOTgxODFlfScsICMgMy4yYTQKLSAgICAnMy4yLjExMScgOid7MjBiZmMxNmYtYzdjZC00ZmMwLThmOTYtOTkxNDYxNGEzYzUwfScsICMgMy4yYjEKLSAgICAnMy4yLjExMicgOid7MGUzNTBjOTgtOGQ3My00OTkzLWI2ODYtY2ZlODcxNjAwNDZlfScsICMgMy4yYjIKLSAgICAnMy4yLjEyMScgOid7MjA5NDk2OGQtNzU4My00N2Y2LWE3ZmQtMjIzMDQ1MzJlMDlmfScsICMgMy4ycmMxCi0gICAgJzMuMi4xMjInIDonezRmM2VkZmE2LWNmNzAtNDY5YS04MjVmLWUxMjA2YWE3ZjQxMn0nLCAjIDMuMnJjMgotICAgICczLjIuMTIzJyA6J3s5MGM2NzNkNy04Y2ZkLTQ5NjktOTgxNi1mN2Q3MGJhZDg3ZjN9JywgIyAzLjJyYzMKLSAgICAnMy4yLjE1MCcgOid7YjIwNDJkNWUtOTg2ZC00NGVjLWFlZTMtYWZlNDEwOGNjYzkzfScsICMgMy4yLjAKLSAgICAnMy4yLjExMjEnOid7NGY5MGRlNGEtODNkZC00NDQzLWI2MjUtY2ExMzBmZjM2MWRkfScsICMgMy4yLjFyYzEKLSAgICAnMy4yLjExMjInOid7ZGM1ZWIwNGQtZmY4YS00YmVkLThmOTYtMjM5NDJmZDU5ZTVmfScsICMgMy4yLjFyYzIKLSAgICAnMy4yLjExNTAnOid7MzRiMjUzMGMtNjM0OS00MjkyLTlkYzMtNjBiZGE0YWVkOTNjfScsICMgMy4yLjEKLSAgICAnMy4yLjIxMjEnOid7REZCMjlBNTMtQUNDNC00NGU2LTg1QTYtRDBEQTI2RkU4RTRFfScsICMgMy4yLjJyYzEKLSAgICAnMy4yLjIxNTAnOid7NENERTMxNjgtRDA2MC00YjdjLUJDNzQtNEQ4RjlCQjAxQUZEfScsICMgMy4yLjIKLSAgICAnMy4yLjMxMjEnOid7QjhFOENGRjctRTRDNi00YTdjLTlGMDYtQkIzQThCNzVEREE4fScsICMgMy4yLjNyYzEKLSAgICAnMy4yLjMxMjInOid7RThEQ0QzRTAtMTJCNi00ZmI3LTlEQjUtNTQzQzJFNjczNzJFfScsICMgMy4yLjNyYzIKLSAgICAnMy4yLjMxNTAnOid7Nzg5Qzk2NDQtOUY4Mi00NGQzLUI0Q0EtQUMzMUY0NkY1ODgyfScsICMgMy4yLjMKLQotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvcGFyc2VyL3Rlc3RfdW5wYXJzZS5weSBiL1Rvb2xzL3BhcnNlci90ZXN0X3VucGFyc2UucHkKaW5kZXggMmFjMWVhNi4uYmU4NDQwMCAxMDA2NDQKLS0tIGEvVG9vbHMvcGFyc2VyL3Rlc3RfdW5wYXJzZS5weQorKysgYi9Ub29scy9wYXJzZXIvdGVzdF91bnBhcnNlLnB5CkBAIC0yLDkgKzIsMTAgQEAKIGltcG9ydCB0ZXN0LnN1cHBvcnQKIGltcG9ydCBpbwogaW1wb3J0IG9zCitpbXBvcnQgcmFuZG9tCiBpbXBvcnQgdG9rZW5pemUKLWltcG9ydCBhc3QKIGltcG9ydCB1bnBhcnNlCitpbXBvcnQgYXN0CiAKIGRlZiByZWFkX3B5ZmlsZShmaWxlbmFtZSk6CiAgICAgIiIiUmVhZCBhbmQgcmV0dXJuIHRoZSBjb250ZW50cyBvZiBhIFB5dGhvbiBzb3VyY2UgZmlsZSAoYXMgYQpAQCAtOTMsNiArOTQsMjEgQEAKICAgICBzdWl0ZTUKICIiIgogCit3aXRoX3NpbXBsZSA9ICIiIlwKK3dpdGggZigpOgorICAgIHN1aXRlMQorIiIiCisKK3dpdGhfYXMgPSAiIiJcCit3aXRoIGYoKSBhcyB4OgorICAgIHN1aXRlMQorIiIiCisKK3dpdGhfdHdvX2l0ZW1zID0gIiIiXAord2l0aCBmKCkgYXMgeCwgZygpIGFzIHk6CisgICAgc3VpdGUxCisiIiIKKwogY2xhc3MgQVNUVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBhc3NlcnRBU1RFcXVhbChzZWxmLCBhc3QxLCBhc3QyKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QuZHVtcChhc3QxKSwgYXN0LmR1bXAoYXN0MikpCkBAIC0yMTUsNiArMjMxLDE1IEBACiAgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKCJhLCAqYlswXSwgYyA9IHNlcSIpCiAgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKCJhLCAqKGIsIGMpID0gc2VxIikKIAorICAgIGRlZiB0ZXN0X3dpdGhfc2ltcGxlKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JvdW5kdHJpcCh3aXRoX3NpbXBsZSkKKworICAgIGRlZiB0ZXN0X3dpdGhfYXMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKHdpdGhfYXMpCisKKyAgICBkZWYgdGVzdF93aXRoX3R3b19pdGVtcyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAod2l0aF90d29faXRlbXMpCisKIAogY2xhc3MgRGlyZWN0b3J5VGVzdENhc2UoQVNUVGVzdENhc2UpOgogICAgICIiIlRlc3Qgcm91bmR0cmlwIGJlaGF2aW91ciBvbiBhbGwgZmlsZXMgaW4gTGliIGFuZCBMaWIvdGVzdC4iIiIKQEAgLTIzMyw2ICsyNTgsMTAgQEAKICAgICAgICAgICAgICAgICBpZiBuLmVuZHN3aXRoKCcucHknKSBhbmQgbm90IG4uc3RhcnRzd2l0aCgnYmFkJyk6CiAgICAgICAgICAgICAgICAgICAgIG5hbWVzLmFwcGVuZChvcy5wYXRoLmpvaW4odGVzdF9kaXIsIG4pKQogCisgICAgICAgICMgVGVzdCBsaW1pdGVkIHN1YnNldCBvZiBmaWxlcyB1bmxlc3MgdGhlICdjcHUnIHJlc291cmNlIGlzIHNwZWNpZmllZC4KKyAgICAgICAgaWYgbm90IHRlc3Quc3VwcG9ydC5pc19yZXNvdXJjZV9lbmFibGVkKCJjcHUiKToKKyAgICAgICAgICAgIG5hbWVzID0gcmFuZG9tLnNhbXBsZShuYW1lcywgMTApCisKICAgICAgICAgZm9yIGZpbGVuYW1lIGluIG5hbWVzOgogICAgICAgICAgICAgaWYgdGVzdC5zdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgcHJpbnQoJ1Rlc3RpbmcgJXMnICUgZmlsZW5hbWUpCmRpZmYgLS1naXQgYS9Ub29scy9wYXJzZXIvdW5wYXJzZS5weSBiL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CmluZGV4IGQ5ZmNhOTcuLmI1NWUyYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CisrKyBiL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CkBAIC0xLDYgKzEsNSBAQAogIlVzYWdlOiB1bnBhcnNlLnB5IDxwYXRoIHRvIHNvdXJjZSBmaWxlPiIKIGltcG9ydCBzeXMKLWltcG9ydCBtYXRoCiBpbXBvcnQgYXN0CiBpbXBvcnQgdG9rZW5pemUKIGltcG9ydCBpbwpAQCAtMTQ3LDYgKzE0NiwxNCBAQAogICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LnZhbHVlKQogICAgICAgICBzZWxmLndyaXRlKCIpIikKIAorICAgIGRlZiBfWWllbGRGcm9tKHNlbGYsIHQpOgorICAgICAgICBzZWxmLndyaXRlKCIoIikKKyAgICAgICAgc2VsZi53cml0ZSgieWllbGQgZnJvbSIpCisgICAgICAgIGlmIHQudmFsdWU6CisgICAgICAgICAgICBzZWxmLndyaXRlKCIgIikKKyAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC52YWx1ZSkKKyAgICAgICAgc2VsZi53cml0ZSgiKSIpCisKICAgICBkZWYgX1JhaXNlKHNlbGYsIHQpOgogICAgICAgICBzZWxmLmZpbGwoInJhaXNlIikKICAgICAgICAgaWYgbm90IHQuZXhjOgpAQCAtMTU4LDEyICsxNjUsMTEgQEAKICAgICAgICAgICAgIHNlbGYud3JpdGUoIiBmcm9tICIpCiAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQuY2F1c2UpCiAKLSAgICBkZWYgX1RyeUV4Y2VwdChzZWxmLCB0KToKKyAgICBkZWYgX1RyeShzZWxmLCB0KToKICAgICAgICAgc2VsZi5maWxsKCJ0cnkiKQogICAgICAgICBzZWxmLmVudGVyKCkKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmJvZHkpCiAgICAgICAgIHNlbGYubGVhdmUoKQotCiAgICAgICAgIGZvciBleCBpbiB0LmhhbmRsZXJzOgogICAgICAgICAgICAgc2VsZi5kaXNwYXRjaChleCkKICAgICAgICAgaWYgdC5vcmVsc2U6CkBAIC0xNzEsMjIgKzE3NywxMiBAQAogICAgICAgICAgICAgc2VsZi5lbnRlcigpCiAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQub3JlbHNlKQogICAgICAgICAgICAgc2VsZi5sZWF2ZSgpCi0KLSAgICBkZWYgX1RyeUZpbmFsbHkoc2VsZiwgdCk6Ci0gICAgICAgIGlmIGxlbih0LmJvZHkpID09IDEgYW5kIGlzaW5zdGFuY2UodC5ib2R5WzBdLCBhc3QuVHJ5RXhjZXB0KToKLSAgICAgICAgICAgICMgdHJ5LWV4Y2VwdC1maW5hbGx5Ci0gICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQuYm9keSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmlsbCgidHJ5IikKKyAgICAgICAgaWYgdC5maW5hbGJvZHk6CisgICAgICAgICAgICBzZWxmLmZpbGwoImZpbmFsbHkiKQogICAgICAgICAgICAgc2VsZi5lbnRlcigpCi0gICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQuYm9keSkKKyAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5maW5hbGJvZHkpCiAgICAgICAgICAgICBzZWxmLmxlYXZlKCkKIAotICAgICAgICBzZWxmLmZpbGwoImZpbmFsbHkiKQotICAgICAgICBzZWxmLmVudGVyKCkKLSAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmZpbmFsYm9keSkKLSAgICAgICAgc2VsZi5sZWF2ZSgpCi0KICAgICBkZWYgX0V4Y2VwdEhhbmRsZXIoc2VsZiwgdCk6CiAgICAgICAgIHNlbGYuZmlsbCgiZXhjZXB0IikKICAgICAgICAgaWYgdC50eXBlOgpAQCAtMjk2LDEwICsyOTIsNyBAQAogCiAgICAgZGVmIF9XaXRoKHNlbGYsIHQpOgogICAgICAgICBzZWxmLmZpbGwoIndpdGggIikKLSAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmNvbnRleHRfZXhwcikKLSAgICAgICAgaWYgdC5vcHRpb25hbF92YXJzOgotICAgICAgICAgICAgc2VsZi53cml0ZSgiIGFzICIpCi0gICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQub3B0aW9uYWxfdmFycykKKyAgICAgICAgaW50ZXJsZWF2ZShsYW1iZGE6IHNlbGYud3JpdGUoIiwgIiksIHNlbGYuZGlzcGF0Y2gsIHQuaXRlbXMpCiAgICAgICAgIHNlbGYuZW50ZXIoKQogICAgICAgICBzZWxmLmRpc3BhdGNoKHQuYm9keSkKICAgICAgICAgc2VsZi5sZWF2ZSgpCkBAIC01NjQsNiArNTU3LDEyIEBACiAgICAgICAgIGlmIHQuYXNuYW1lOgogICAgICAgICAgICAgc2VsZi53cml0ZSgiIGFzICIrdC5hc25hbWUpCiAKKyAgICBkZWYgX3dpdGhpdGVtKHNlbGYsIHQpOgorICAgICAgICBzZWxmLmRpc3BhdGNoKHQuY29udGV4dF9leHByKQorICAgICAgICBpZiB0Lm9wdGlvbmFsX3ZhcnM6CisgICAgICAgICAgICBzZWxmLndyaXRlKCIgYXMgIikKKyAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5vcHRpb25hbF92YXJzKQorCiBkZWYgcm91bmR0cmlwKGZpbGVuYW1lLCBvdXRwdXQ9c3lzLnN0ZG91dCk6CiAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBweWZpbGU6CiAgICAgICAgIGVuY29kaW5nID0gdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKHB5ZmlsZS5yZWFkbGluZSlbMF0KZGlmZiAtLWdpdCBhL1Rvb2xzL3B5YmVuY2gvcHliZW5jaC5weSBiL1Rvb2xzL3B5YmVuY2gvcHliZW5jaC5weQppbmRleCA4ZWFhZDYzLi45NDJmNTZkIDEwMDc1NQotLS0gYS9Ub29scy9weWJlbmNoL3B5YmVuY2gucHkKKysrIGIvVG9vbHMvcHliZW5jaC9weWJlbmNoLnB5CkBAIC0zNSw3ICszNSw5IEBACiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRSAhCiAiIiIKIAotaW1wb3J0IHN5cywgdGltZSwgb3BlcmF0b3IsIHBsYXRmb3JtCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0IHBsYXRmb3JtCiBmcm9tIENvbW1hbmRMaW5lIGltcG9ydCAqCiAKIHRyeToKQEAgLTczLDExICs3NSwxNSBAQAogCiAjIFRpbWVyIHR5cGVzCiBUSU1FUl9USU1FX1RJTUUgPSAndGltZS50aW1lJworVElNRVJfVElNRV9QUk9DRVNTX1RJTUUgPSAndGltZS5wcm9jZXNzX3RpbWUnCitUSU1FUl9USU1FX1BFUkZfQ09VTlRFUiA9ICd0aW1lLnBlcmZfY291bnRlcicKIFRJTUVSX1RJTUVfQ0xPQ0sgPSAndGltZS5jbG9jaycKIFRJTUVSX1NZU1RJTUVTX1BST0NFU1NUSU1FID0gJ3N5c3RpbWVzLnByb2Nlc3N0aW1lJwogCiAjIENob29zZSBwbGF0Zm9ybSBkZWZhdWx0IHRpbWVyCi1pZiBzeXMucGxhdGZvcm1bOjNdID09ICd3aW4nOgoraWYgaGFzYXR0cih0aW1lLCAncGVyZl9jb3VudGVyJyk6CisgICAgVElNRVJfUExBVEZPUk1fREVGQVVMVCA9IFRJTUVSX1RJTUVfUEVSRl9DT1VOVEVSCitlbGlmIHN5cy5wbGF0Zm9ybVs6M10gPT0gJ3dpbic6CiAgICAgIyBPbiBXaW5YUCB0aGlzIGhhcyAyLjVtcyByZXNvbHV0aW9uCiAgICAgVElNRVJfUExBVEZPUk1fREVGQVVMVCA9IFRJTUVSX1RJTUVfQ0xPQ0sKIGVsc2U6CkBAIC05Myw2ICs5OSwxMCBAQAogCiAgICAgaWYgdGltZXJ0eXBlID09IFRJTUVSX1RJTUVfVElNRToKICAgICAgICAgcmV0dXJuIHRpbWUudGltZQorICAgIGVsaWYgdGltZXJ0eXBlID09IFRJTUVSX1RJTUVfUFJPQ0VTU19USU1FOgorICAgICAgICByZXR1cm4gdGltZS5wcm9jZXNzX3RpbWUKKyAgICBlbGlmIHRpbWVydHlwZSA9PSBUSU1FUl9USU1FX1BFUkZfQ09VTlRFUjoKKyAgICAgICAgcmV0dXJuIHRpbWUucGVyZl9jb3VudGVyCiAgICAgZWxpZiB0aW1lcnR5cGUgPT0gVElNRVJfVElNRV9DTE9DSzoKICAgICAgICAgcmV0dXJuIHRpbWUuY2xvY2sKICAgICBlbGlmIHRpbWVydHlwZSA9PSBUSU1FUl9TWVNUSU1FU19QUk9DRVNTVElNRToKQEAgLTEwNyw2ICsxMTcsNyBAQAogICAgICAgICBwcmludCgnR2V0dGluZyBtYWNoaW5lIGRldGFpbHMuLi4nKQogICAgIGJ1aWxkbm8sIGJ1aWxkZGF0ZSA9IHBsYXRmb3JtLnB5dGhvbl9idWlsZCgpCiAgICAgcHl0aG9uID0gcGxhdGZvcm0ucHl0aG9uX3ZlcnNpb24oKQorICAgICMgWFhYIHRoaXMgaXMgbm93IGFsd2F5cyBVQ1M0LCBtYXliZSByZXBsYWNlIGl0IHdpdGggJ1BFUDM5MycgaW4gMy4zKz8KICAgICBpZiBzeXMubWF4dW5pY29kZSA9PSA2NTUzNToKICAgICAgICAgIyBVQ1MyIGJ1aWxkIChzdGFuZGFyZCkKICAgICAgICAgdW5pdHlwZSA9ICdVQ1MyJwpAQCAtODY1LDcgKzg3NiwxOCBAQAogICAgICAgICAgICAgcHJpbnQoJyogdXNpbmcgdGltZXI6IHN5c3RpbWVzLnByb2Nlc3N0aW1lICglcyknICUgXAogICAgICAgICAgICAgICAgICAgc3lzdGltZXMuU1lTVElNRVNfSU1QTEVNRU5UQVRJT04pCiAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGNsb2NrIGZ1bmN0aW9uIGRvZXMgZXhpc3QKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBnZXRfdGltZXIodGltZXIpCisgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgICAgIHByaW50KCIqIEVycm9yOiBVbmtub3duIHRpbWVyOiAlcyIgJSB0aW1lcikKKyAgICAgICAgICAgICAgICByZXR1cm4KKwogICAgICAgICAgICAgcHJpbnQoJyogdXNpbmcgdGltZXI6ICVzJyAlIHRpbWVyKQorICAgICAgICAgICAgaWYgaGFzYXR0cih0aW1lLCAnZ2V0X2Nsb2NrX2luZm8nKToKKyAgICAgICAgICAgICAgICBpbmZvID0gdGltZS5nZXRfY2xvY2tfaW5mbyh0aW1lcls1Ol0pCisgICAgICAgICAgICAgICAgcHJpbnQoJyogdGltZXI6IHJlc29sdXRpb249JXMsIGltcGxlbWVudGF0aW9uPSVzJworICAgICAgICAgICAgICAgICAgICAgICUgKGluZm8ucmVzb2x1dGlvbiwgaW5mby5pbXBsZW1lbnRhdGlvbikpCiAKICAgICAgICAgcHJpbnQoKQogCkBAIC05NDMsOCArOTY1LDYgQEAKICAgICAgICAgICAgICAgICBwaWNrbGUuZHVtcChiZW5jaCxmKQogICAgICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgcmVhc29uOgotICAgICAgICAgICAgICAgIHByaW50KCcqIEVycm9yIG9wZW5pbmcvd3JpdGluZyByZXBvcnRmaWxlJykKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIHJlYXNvbjoKICAgICAgICAgICAgICAgICBwcmludCgnKiBFcnJvciBvcGVuaW5nL3dyaXRpbmcgcmVwb3J0ZmlsZSAlczogJXMnICUgKAogICAgICAgICAgICAgICAgICAgICByZXBvcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICByZWFzb24pKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9SRUFETUUgYi9Ub29scy9zY3JpcHRzL1JFQURNRQppbmRleCA4YzAyNTI5Li5kNjVkMWZkIDEwMDY0NAotLS0gYS9Ub29scy9zY3JpcHRzL1JFQURNRQorKysgYi9Ub29scy9zY3JpcHRzL1JFQURNRQpAQCAtMTUsNyArMTUsNyBAQAogZGlmZi5weSAgICAgICAgICAgICAgICAgUHJpbnQgZmlsZSBkaWZmcyBpbiBjb250ZXh0LCB1bmlmaWVkLCBvciBuZGlmZiBmb3JtYXRzCiBkdXRyZWUucHkgICAgICAgICAgICAgICBGb3JtYXQgZHUoMSkgb3V0cHV0IGFzIGEgdHJlZSBzb3J0ZWQgYnkgc2l6ZQogZXB0YWdzLnB5ICAgICAgICAgICAgICAgQ3JlYXRlIEVtYWNzIFRBR1MgZmlsZSBmb3IgUHl0aG9uIG1vZHVsZXMKLWZpbmRfcmVjdXJzaW9ubGltaXQucHkgIEZpbmQgdGhlIG1heGltdW0gcmVjdXJzaW9uIGxpbWl0IG9uIHRoaXMgbWFjaGluZSAKK2ZpbmRfcmVjdXJzaW9ubGltaXQucHkgIEZpbmQgdGhlIG1heGltdW0gcmVjdXJzaW9uIGxpbWl0IG9uIHRoaXMgbWFjaGluZQogZmluZGRpdi5weSAgICAgICAgICAgICAgQSBncmVwLWxpa2UgdG9vbCB0aGF0IGxvb2tzIGZvciBkaXZpc2lvbiBvcGVyYXRvcnMKIGZpbmRsaW5rc3RvLnB5ICAgICAgICAgIFJlY3Vyc2l2ZWx5IGZpbmQgc3ltYm9saWMgbGlua3MgdG8gYSBnaXZlbiBwYXRoIHByZWZpeAogZmluZG5vY29kaW5nLnB5ICAgICAgICAgRmluZCBzb3VyY2UgZmlsZXMgd2hpY2ggbmVlZCBhbiBlbmNvZGluZyBkZWNsYXJhdGlvbgpAQCAtMjgsNiArMjgsNyBAQAogZ29vZ2xlLnB5ICAgICAgICAgICAgICAgT3BlbiBhIHdlYmJyb3dzZXIgd2l0aCBHb29nbGUKIGdwcm9mMmh0bWwucHkgICAgICAgICAgIFRyYW5zZm9ybSBncHJvZigxKSBvdXRwdXQgaW50byB1c2VmdWwgSFRNTAogaDJweS5weSAgICAgICAgICAgICAgICAgVHJhbnNsYXRlICNkZWZpbmUncyBpbnRvIFB5dGhvbiBhc3NpZ25tZW50cworaGlnaGxpZ2h0LnB5ICAgICAgICAgICAgUHl0aG9uIHN5bnRheCBoaWdobGlnaHRpbmcgd2l0aCBIVE1MIG91dHB1dAogaWRsZTMgICAgICAgICAgICAgICAgICAgTWFpbiBwcm9ncmFtIHRvIHN0YXJ0IElETEUKIGlmZGVmLnB5ICAgICAgICAgICAgICAgIFJlbW92ZSAjaWYobilkZWYgZ3JvdXBzIGZyb20gQyBzb3VyY2VzCiBsZmNyLnB5ICAgICAgICAgICAgICAgICBDaGFuZ2UgTEYgbGluZSBlbmRpbmdzIHRvIENSTEYgKFVuaXggdG8gV2luZG93cykKQEAgLTUzLDYgKzU0LDcgQEAKIHJlaW5kZW50LnB5ICAgICAgICAgICAgIENoYW5nZSAucHkgZmlsZXMgdG8gdXNlIDQtc3BhY2UgaW5kZW50cwogcmVpbmRlbnQtcnN0LnB5ICAgICAgICAgRml4LXVwIHJlU3RydWN0dXJlZFRleHQgZmlsZSB3aGl0ZXNwYWNlCiByZ3JlcC5weSAgICAgICAgICAgICAgICBSZXZlcnNlIGdyZXAgdGhyb3VnaCBhIGZpbGUgKHVzZWZ1bCBmb3IgYmlnIGxvZ2ZpbGVzKQorcnVuX3Rlc3RzLnB5ICAgICAgICAgICAgUnVuIHRoZSB0ZXN0IHN1aXRlIHdpdGggbW9yZSBzZW5zaWJsZSBkZWZhdWx0IG9wdGlvbnMKIHNlcnZlLnB5ICAgICAgICAgICAgICAgIFNtYWxsIHdzZ2lyZWYtYmFzZWQgd2ViIHNlcnZlciwgdXNlZCBpbiBtYWtlIHNlcnZlIGluIERvYwogc3VmZi5weSAgICAgICAgICAgICAgICAgU29ydCBhIGxpc3Qgb2YgZmlsZXMgYnkgc3VmZml4CiBzdm5lb2wucHkgICAgICAgICAgICAgICBTZXQgc3ZuOmVvbC1zdHlsZSBvbiBhbGwgZmlsZXMgaW4gZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2RpZmYucHkgYi9Ub29scy9zY3JpcHRzL2RpZmYucHkKaW5kZXggOWVmYjA3OC4uZjliMTRiZiAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9kaWZmLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvZGlmZi5weQpAQCAtOSw2ICs5LDEyIEBACiAiIiIKIAogaW1wb3J0IHN5cywgb3MsIHRpbWUsIGRpZmZsaWIsIG9wdHBhcnNlCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZXpvbmUKKworZGVmIGZpbGVfbXRpbWUocGF0aCk6CisgICAgdCA9IGRhdGV0aW1lLmZyb210aW1lc3RhbXAob3Muc3RhdChwYXRoKS5zdF9tdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lem9uZS51dGMpCisgICAgcmV0dXJuIHQuYXN0aW1lem9uZSgpLmlzb2Zvcm1hdCgpCiAKIGRlZiBtYWluKCk6CiAKQEAgLTMwLDEwICszNiwxMiBAQAogICAgIG4gPSBvcHRpb25zLmxpbmVzCiAgICAgZnJvbWZpbGUsIHRvZmlsZSA9IGFyZ3MKIAotICAgIGZyb21kYXRlID0gdGltZS5jdGltZShvcy5zdGF0KGZyb21maWxlKS5zdF9tdGltZSkKLSAgICB0b2RhdGUgPSB0aW1lLmN0aW1lKG9zLnN0YXQodG9maWxlKS5zdF9tdGltZSkKLSAgICBmcm9tbGluZXMgPSBvcGVuKGZyb21maWxlLCAnVScpLnJlYWRsaW5lcygpCi0gICAgdG9saW5lcyA9IG9wZW4odG9maWxlLCAnVScpLnJlYWRsaW5lcygpCisgICAgZnJvbWRhdGUgPSBmaWxlX210aW1lKGZyb21maWxlKQorICAgIHRvZGF0ZSA9IGZpbGVfbXRpbWUodG9maWxlKQorICAgIHdpdGggb3Blbihmcm9tZmlsZSwgJ1UnKSBhcyBmZjoKKyAgICAgICAgZnJvbWxpbmVzID0gZmYucmVhZGxpbmVzKCkKKyAgICB3aXRoIG9wZW4odG9maWxlLCAnVScpIGFzIHRmOgorICAgICAgICB0b2xpbmVzID0gdGYucmVhZGxpbmVzKCkKIAogICAgIGlmIG9wdGlvbnMudToKICAgICAgICAgZGlmZiA9IGRpZmZsaWIudW5pZmllZF9kaWZmKGZyb21saW5lcywgdG9saW5lcywgZnJvbWZpbGUsIHRvZmlsZSwgZnJvbWRhdGUsIHRvZGF0ZSwgbj1uKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9maW5kX3JlY3Vyc2lvbmxpbWl0LnB5IGIvVG9vbHMvc2NyaXB0cy9maW5kX3JlY3Vyc2lvbmxpbWl0LnB5CmluZGV4IDdhODY2MDMuLjExNzExNDYgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvZmluZF9yZWN1cnNpb25saW1pdC5weQorKysgYi9Ub29scy9zY3JpcHRzL2ZpbmRfcmVjdXJzaW9ubGltaXQucHkKQEAgLTg5LDYgKzg5LDEyIEBACiAgICAgICAgIF9waWNrbGUuUGlja2xlcihpby5CeXRlc0lPKCksIHByb3RvY29sPS0xKS5kdW1wKGwpCiAgICAgICAgIF9jYWNoZVtuXSA9IGwKIAorZGVmIHRlc3RfY29tcGlsZXJfcmVjdXJzaW9uKCk6CisgICAgIyBUaGUgY29tcGlsZXIgdXNlcyBhIHNjYWxpbmcgZmFjdG9yIHRvIHN1cHBvcnQgYWRkaXRpb25hbCBsZXZlbHMKKyAgICAjIG9mIHJlY3Vyc2lvbi4gVGhpcyBpcyBhIHNhbml0eSBjaGVjayBvZiB0aGF0IHNjYWxpbmcgdG8gZW5zdXJlCisgICAgIyBpdCBzdGlsbCByYWlzZXMgUnVudGltZUVycm9yIGV2ZW4gYXQgaGlnaGVyIHJlY3Vyc2lvbiBsaW1pdHMKKyAgICBjb21waWxlKCIoKSIgKiAoMTAgKiBzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKSksICI8c2luZ2xlPiIsICJzaW5nbGUiKQorCiBkZWYgY2hlY2tfbGltaXQobiwgdGVzdF9mdW5jX25hbWUpOgogICAgIHN5cy5zZXRyZWN1cnNpb25saW1pdChuKQogICAgIGlmIHRlc3RfZnVuY19uYW1lLnN0YXJ0c3dpdGgoInRlc3RfIik6CkBAIC0xMTcsNSArMTIzLDYgQEAKICAgICAgICAgY2hlY2tfbGltaXQobGltaXQsICJ0ZXN0X2dldGF0dHIiKQogICAgICAgICBjaGVja19saW1pdChsaW1pdCwgInRlc3RfZ2V0aXRlbSIpCiAgICAgICAgIGNoZWNrX2xpbWl0KGxpbWl0LCAidGVzdF9jcGlja2xlIikKKyAgICAgICAgY2hlY2tfbGltaXQobGltaXQsICJ0ZXN0X2NvbXBpbGVyX3JlY3Vyc2lvbiIpCiAgICAgICAgIHByaW50KCJMaW1pdCBvZiAlZCBpcyBmaW5lIiAlIGxpbWl0KQogICAgICAgICBsaW1pdCA9IGxpbWl0ICsgMTAwCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2ZpbmRub2NvZGluZy5weSBiL1Rvb2xzL3NjcmlwdHMvZmluZG5vY29kaW5nLnB5CmluZGV4IGE0OTRhNDguLmIzZTlkYzcgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvZmluZG5vY29kaW5nLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvZmluZG5vY29kaW5nLnB5CkBAIC0yLDcgKzIsNyBAQAogCiAiIiJMaXN0IGFsbCB0aG9zZSBQeXRob24gZmlsZXMgdGhhdCByZXF1aXJlIGEgY29kaW5nIGRpcmVjdGl2ZQogCi1Vc2FnZTogbm9jb2RpbmcucHkgZGlyMSBbZGlyMi4uLl0KK1VzYWdlOiBmaW5kbm9jb2RpbmcucHkgZGlyMSBbZGlyMi4uLl0KICIiIgogCiBfX2F1dGhvcl9fID0gIk9sZWcgQnJveXRtYW5uLCBHZW9yZyBCcmFuZGwiCkBAIC0zMiw3ICszMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIHNvcGhpc3RpY2F0ZWQgUHl0aG9uIHNvdXJjZSBmaWxlIHNlYXJjaCB3aWxsIGJlIGRvbmUuIiwgZmlsZT1zeXMuc3RkZXJyKQogCiAKLWRlY2xfcmUgPSByZS5jb21waWxlKHIiY29kaW5nWz06XVxzKihbLVx3Ll0rKSIpCitkZWNsX3JlID0gcmUuY29tcGlsZShyYiJjb2RpbmdbPTpdXHMqKFstXHcuXSspIikKIAogZGVmIGdldF9kZWNsYXJhdGlvbihsaW5lKToKICAgICBtYXRjaCA9IGRlY2xfcmUuc2VhcmNoKGxpbmUpCkBAIC01MCwyMSArNTAsMjAgQEAKIAogZGVmIG5lZWRzX2RlY2xhcmF0aW9uKGZ1bGxwYXRoKToKICAgICB0cnk6Ci0gICAgICAgIGluZmlsZSA9IG9wZW4oZnVsbHBhdGgsICdyVScpCisgICAgICAgIGluZmlsZSA9IG9wZW4oZnVsbHBhdGgsICdyYicpCiAgICAgZXhjZXB0IElPRXJyb3I6ICMgT29wcywgdGhlIGZpbGUgd2FzIHJlbW92ZWQgLSBpZ25vcmUgaXQKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIGxpbmUxID0gaW5maWxlLnJlYWRsaW5lKCkKLSAgICBsaW5lMiA9IGluZmlsZS5yZWFkbGluZSgpCisgICAgd2l0aCBpbmZpbGU6CisgICAgICAgIGxpbmUxID0gaW5maWxlLnJlYWRsaW5lKCkKKyAgICAgICAgbGluZTIgPSBpbmZpbGUucmVhZGxpbmUoKQogCi0gICAgaWYgZ2V0X2RlY2xhcmF0aW9uKGxpbmUxKSBvciBnZXRfZGVjbGFyYXRpb24obGluZTIpOgotICAgICAgICAjIHRoZSBmaWxlIGRvZXMgaGF2ZSBhbiBlbmNvZGluZyBkZWNsYXJhdGlvbiwgc28gdHJ1c3QgaXQKLSAgICAgICAgaW5maWxlLmNsb3NlKCkKLSAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGdldF9kZWNsYXJhdGlvbihsaW5lMSkgb3IgZ2V0X2RlY2xhcmF0aW9uKGxpbmUyKToKKyAgICAgICAgICAgICMgdGhlIGZpbGUgZG9lcyBoYXZlIGFuIGVuY29kaW5nIGRlY2xhcmF0aW9uLCBzbyB0cnVzdCBpdAorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICAjIGNoZWNrIHRoZSB3aG9sZSBmaWxlIGZvciBub24gdXRmLTggY2hhcmFjdGVycwotICAgIHJlc3QgPSBpbmZpbGUucmVhZCgpCi0gICAgaW5maWxlLmNsb3NlKCkKKyAgICAgICAgIyBjaGVjayB0aGUgd2hvbGUgZmlsZSBmb3Igbm9uIHV0Zi04IGNoYXJhY3RlcnMKKyAgICAgICAgcmVzdCA9IGluZmlsZS5yZWFkKCkKIAogICAgIGlmIGhhc19jb3JyZWN0X2VuY29kaW5nKGxpbmUxK2xpbmUyK3Jlc3QsICJ1dGYtOCIpOgogICAgICAgICByZXR1cm4gRmFsc2UKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvaGlnaGxpZ2h0LnB5IGIvVG9vbHMvc2NyaXB0cy9oaWdobGlnaHQucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWZmNWNhZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3NjcmlwdHMvaGlnaGxpZ2h0LnB5CkBAIC0wLDAgKzEsMjYwIEBACisjIS91c3IvYmluL2VudiBweXRob24zCisnJydBZGQgc3ludGF4IGhpZ2hsaWdodGluZyB0byBQeXRob24gc291cmNlIGNvZGUnJycKKworX19hdXRob3JfXyA9ICdSYXltb25kIEhldHRpbmdlcicKKworaW1wb3J0IGtleXdvcmQsIHRva2VuaXplLCBjZ2ksIHJlLCBmdW5jdG9vbHMKK3RyeToKKyAgICBpbXBvcnQgYnVpbHRpbnMKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBpbXBvcnQgX19idWlsdGluX18gYXMgYnVpbHRpbnMKKworIyMjIyBBbmFseXplIFB5dGhvbiBTb3VyY2UgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBpc19idWlsdGluKHMpOgorICAgICdSZXR1cm4gVHJ1ZSBpZiBzIGlzIHRoZSBuYW1lIG9mIGEgYnVpbHRpbicKKyAgICByZXR1cm4gaGFzYXR0cihidWlsdGlucywgcykKKworZGVmIGNvbWJpbmVfcmFuZ2UobGluZXMsIHN0YXJ0LCBlbmQpOgorICAgICdKb2luIGNvbnRlbnQgZnJvbSBhIHJhbmdlIG9mIGxpbmVzIGJldHdlZW4gc3RhcnQgYW5kIGVuZCcKKyAgICAoc3Jvdywgc2NvbCksIChlcm93LCBlY29sKSA9IHN0YXJ0LCBlbmQKKyAgICBpZiBzcm93ID09IGVyb3c6CisgICAgICAgIHJldHVybiBsaW5lc1tzcm93LTFdW3Njb2w6ZWNvbF0sIGVuZAorICAgIHJvd3MgPSBbbGluZXNbc3Jvdy0xXVtzY29sOl1dICsgbGluZXNbc3JvdzogZXJvdy0xXSArIFtsaW5lc1tlcm93LTFdWzplY29sXV0KKyAgICByZXR1cm4gJycuam9pbihyb3dzKSwgZW5kCisKK2RlZiBhbmFseXplX3B5dGhvbihzb3VyY2UpOgorICAgICcnJ0dlbmVyYXRlIGFuZCBjbGFzc2lmeSBjaHVua3Mgb2YgUHl0aG9uIGZvciBzeW50YXggaGlnaGxpZ2h0aW5nLgorICAgICAgIFlpZWxkcyB0dXBsZXMgaW4gdGhlIGZvcm06IChjYXRlZ29yeSwgY2F0ZWdvcml6ZWRfdGV4dCkuCisgICAgJycnCisgICAgbGluZXMgPSBzb3VyY2Uuc3BsaXRsaW5lcyhUcnVlKQorICAgIGxpbmVzLmFwcGVuZCgnJykKKyAgICByZWFkbGluZSA9IGZ1bmN0b29scy5wYXJ0aWFsKG5leHQsIGl0ZXIobGluZXMpLCAnJykKKyAgICBraW5kID0gdG9rX3N0ciA9ICcnCisgICAgdG9rX3R5cGUgPSB0b2tlbml6ZS5DT01NRU5UCisgICAgd3JpdHRlbiA9ICgxLCAwKQorICAgIGZvciB0b2sgaW4gdG9rZW5pemUuZ2VuZXJhdGVfdG9rZW5zKHJlYWRsaW5lKToKKyAgICAgICAgcHJldl90b2tfdHlwZSwgcHJldl90b2tfc3RyID0gdG9rX3R5cGUsIHRva19zdHIKKyAgICAgICAgdG9rX3R5cGUsIHRva19zdHIsIChzcm93LCBzY29sKSwgKGVyb3csIGVjb2wpLCBsb2dpY2FsX2xpbmVubyA9IHRvaworICAgICAgICBraW5kID0gJycKKyAgICAgICAgaWYgdG9rX3R5cGUgPT0gdG9rZW5pemUuQ09NTUVOVDoKKyAgICAgICAgICAgIGtpbmQgPSAnY29tbWVudCcKKyAgICAgICAgZWxpZiB0b2tfdHlwZSA9PSB0b2tlbml6ZS5PUCBhbmQgdG9rX3N0cls6MV0gbm90IGluICd7fVtdKCksLjo7QCc6CisgICAgICAgICAgICBraW5kID0gJ29wZXJhdG9yJworICAgICAgICBlbGlmIHRva190eXBlID09IHRva2VuaXplLlNUUklORzoKKyAgICAgICAgICAgIGtpbmQgPSAnc3RyaW5nJworICAgICAgICAgICAgaWYgcHJldl90b2tfdHlwZSA9PSB0b2tlbml6ZS5JTkRFTlQgb3Igc2NvbD09MDoKKyAgICAgICAgICAgICAgICBraW5kID0gJ2RvY3N0cmluZycKKyAgICAgICAgZWxpZiB0b2tfdHlwZSA9PSB0b2tlbml6ZS5OQU1FOgorICAgICAgICAgICAgaWYgdG9rX3N0ciBpbiAoJ2RlZicsICdjbGFzcycsICdpbXBvcnQnLCAnZnJvbScpOgorICAgICAgICAgICAgICAgIGtpbmQgPSAnZGVmaW5pdGlvbicKKyAgICAgICAgICAgIGVsaWYgcHJldl90b2tfc3RyIGluICgnZGVmJywgJ2NsYXNzJyk6CisgICAgICAgICAgICAgICAga2luZCA9ICdkZWZuYW1lJworICAgICAgICAgICAgZWxpZiBrZXl3b3JkLmlza2V5d29yZCh0b2tfc3RyKToKKyAgICAgICAgICAgICAgICBraW5kID0gJ2tleXdvcmQnCisgICAgICAgICAgICBlbGlmIGlzX2J1aWx0aW4odG9rX3N0cikgYW5kIHByZXZfdG9rX3N0ciAhPSAnLic6CisgICAgICAgICAgICAgICAga2luZCA9ICdidWlsdGluJworICAgICAgICBpZiBraW5kOgorICAgICAgICAgICAgdGV4dCwgd3JpdHRlbiA9IGNvbWJpbmVfcmFuZ2UobGluZXMsIHdyaXR0ZW4sIChzcm93LCBzY29sKSkKKyAgICAgICAgICAgIHlpZWxkICcnLCB0ZXh0CisgICAgICAgICAgICB0ZXh0LCB3cml0dGVuID0gdG9rX3N0ciwgKGVyb3csIGVjb2wpCisgICAgICAgICAgICB5aWVsZCBraW5kLCB0ZXh0CisgICAgbGluZV91cHRvX3Rva2VuLCB3cml0dGVuID0gY29tYmluZV9yYW5nZShsaW5lcywgd3JpdHRlbiwgKGVyb3csIGVjb2wpKQorICAgIHlpZWxkICcnLCBsaW5lX3VwdG9fdG9rZW4KKworIyMjIyBSYXcgT3V0cHV0ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiByYXdfaGlnaGxpZ2h0KGNsYXNzaWZpZWRfdGV4dCk6CisgICAgJ1N0cmFpZ2h0IHRleHQgZGlzcGxheSBvZiB0ZXh0IGNsYXNzaWZpY2F0aW9ucycKKyAgICByZXN1bHQgPSBbXQorICAgIGZvciBraW5kLCB0ZXh0IGluIGNsYXNzaWZpZWRfdGV4dDoKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnJTE1czogICVyXG4nICUgKGtpbmQgb3IgJ3BsYWluJywgdGV4dCkpCisgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQorCisjIyMjIEFOU0kgT3V0cHV0ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmYXVsdF9hbnNpID0geworICAgICdjb21tZW50JzogKCdcMDMzWzA7MzFtJywgJ1wwMzNbMG0nKSwKKyAgICAnc3RyaW5nJzogKCdcMDMzWzA7MzJtJywgJ1wwMzNbMG0nKSwKKyAgICAnZG9jc3RyaW5nJzogKCdcMDMzWzA7MzJtJywgJ1wwMzNbMG0nKSwKKyAgICAna2V5d29yZCc6ICgnXDAzM1swOzMzbScsICdcMDMzWzBtJyksCisgICAgJ2J1aWx0aW4nOiAoJ1wwMzNbMDszNW0nLCAnXDAzM1swbScpLAorICAgICdkZWZpbml0aW9uJzogKCdcMDMzWzA7MzNtJywgJ1wwMzNbMG0nKSwKKyAgICAnZGVmbmFtZSc6ICgnXDAzM1swOzM0bScsICdcMDMzWzBtJyksCisgICAgJ29wZXJhdG9yJzogKCdcMDMzWzA7MzNtJywgJ1wwMzNbMG0nKSwKK30KKworZGVmIGFuc2lfaGlnaGxpZ2h0KGNsYXNzaWZpZWRfdGV4dCwgY29sb3JzPWRlZmF1bHRfYW5zaSk6CisgICAgJ0FkZCBzeW50YXggaGlnaGxpZ2h0aW5nIHRvIHNvdXJjZSBjb2RlIHVzaW5nIEFOU0kgZXNjYXBlIHNlcXVlbmNlcycKKyAgICAjIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQU5TSV9lc2NhcGVfY29kZQorICAgIHJlc3VsdCA9IFtdCisgICAgZm9yIGtpbmQsIHRleHQgaW4gY2xhc3NpZmllZF90ZXh0OgorICAgICAgICBvcGVuZXIsIGNsb3NlciA9IGNvbG9ycy5nZXQoa2luZCwgKCcnLCAnJykpCisgICAgICAgIHJlc3VsdCArPSBbb3BlbmVyLCB0ZXh0LCBjbG9zZXJdCisgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQorCisjIyMjIEhUTUwgT3V0cHV0ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGh0bWxfaGlnaGxpZ2h0KGNsYXNzaWZpZWRfdGV4dCxvcGVuZXI9JzxwcmUgY2xhc3M9InB5dGhvbiI+XG4nLCBjbG9zZXI9JzwvcHJlPlxuJyk6CisgICAgJ0NvbnZlcnQgY2xhc3NpZmllZCB0ZXh0IHRvIGFuIEhUTUwgZnJhZ21lbnQnCisgICAgcmVzdWx0ID0gW29wZW5lcl0KKyAgICBmb3Iga2luZCwgdGV4dCBpbiBjbGFzc2lmaWVkX3RleHQ6CisgICAgICAgIGlmIGtpbmQ6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCc8c3BhbiBjbGFzcz0iJXMiPicgJSBraW5kKQorICAgICAgICByZXN1bHQuYXBwZW5kKGNnaS5lc2NhcGUodGV4dCkpCisgICAgICAgIGlmIGtpbmQ6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCc8L3NwYW4+JykKKyAgICByZXN1bHQuYXBwZW5kKGNsb3NlcikKKyAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCisKK2RlZmF1bHRfY3NzID0geworICAgICcuY29tbWVudCc6ICd7Y29sb3I6IGNyaW1zb247fScsCisgICAgJy5zdHJpbmcnOiAgJ3tjb2xvcjogZm9yZXN0Z3JlZW47fScsCisgICAgJy5kb2NzdHJpbmcnOiAne2NvbG9yOiBmb3Jlc3RncmVlbjsgZm9udC1zdHlsZTppdGFsaWM7fScsCisgICAgJy5rZXl3b3JkJzogJ3tjb2xvcjogZGFya29yYW5nZTt9JywKKyAgICAnLmJ1aWx0aW4nOiAne2NvbG9yOiBwdXJwbGU7fScsCisgICAgJy5kZWZpbml0aW9uJzogJ3tjb2xvcjogZGFya29yYW5nZTsgZm9udC13ZWlnaHQ6Ym9sZDt9JywKKyAgICAnLmRlZm5hbWUnOiAne2NvbG9yOiBibHVlO30nLAorICAgICcub3BlcmF0b3InOiAne2NvbG9yOiBicm93bjt9JywKK30KKworZGVmYXVsdF9odG1sID0gJycnXAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIgorICAgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIj4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PVVURi04Ij4KKzx0aXRsZT4ge3RpdGxlfSA8L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK3tjc3N9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cit7Ym9keX0KKzwvYm9keT4KKzwvaHRtbD4KKycnJworCitkZWYgYnVpbGRfaHRtbF9wYWdlKGNsYXNzaWZpZWRfdGV4dCwgdGl0bGU9J3B5dGhvbicsCisgICAgICAgICAgICAgICAgICAgIGNzcz1kZWZhdWx0X2NzcywgaHRtbD1kZWZhdWx0X2h0bWwpOgorICAgICdDcmVhdGUgYSBjb21wbGV0ZSBIVE1MIHBhZ2Ugd2l0aCBjb2xvcml6ZWQgc291cmNlIGNvZGUnCisgICAgY3NzX3N0ciA9ICdcbicuam9pbihbJyVzICVzJyAlIGl0ZW0gZm9yIGl0ZW0gaW4gY3NzLml0ZW1zKCldKQorICAgIHJlc3VsdCA9IGh0bWxfaGlnaGxpZ2h0KGNsYXNzaWZpZWRfdGV4dCkKKyAgICB0aXRsZSA9IGNnaS5lc2NhcGUodGl0bGUpCisgICAgcmV0dXJuIGh0bWwuZm9ybWF0KHRpdGxlPXRpdGxlLCBjc3M9Y3NzX3N0ciwgYm9keT1yZXN1bHQpCisKKyMjIyMgTGFUZVggT3V0cHV0ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWZhdWx0X2xhdGV4X2NvbW1hbmRzID0geworICAgICdjb21tZW50JzogJ3tcY29sb3J7cmVkfSMxfScsCisgICAgJ3N0cmluZyc6ICd7XGNvbG9ye0ZvcmVzdEdyZWVufSMxfScsCisgICAgJ2RvY3N0cmluZyc6ICd7XGVtcGh7XGNvbG9ye0ZvcmVzdEdyZWVufSMxfX0nLAorICAgICdrZXl3b3JkJzogJ3tcY29sb3J7b3JhbmdlfSMxfScsCisgICAgJ2J1aWx0aW4nOiAne1xjb2xvcntwdXJwbGV9IzF9JywKKyAgICAnZGVmaW5pdGlvbic6ICd7XGNvbG9ye29yYW5nZX0jMX0nLAorICAgICdkZWZuYW1lJzogJ3tcY29sb3J7Ymx1ZX0jMX0nLAorICAgICdvcGVyYXRvcic6ICd7XGNvbG9ye2Jyb3dufSMxfScsCit9CisKK2RlZmF1bHRfbGF0ZXhfZG9jdW1lbnQgPSByJycnCitcZG9jdW1lbnRjbGFzc3thcnRpY2xlfQorXHVzZXBhY2thZ2V7YWxsdHR9CitcdXNlcGFja2FnZXt1cHF1b3RlfQorXHVzZXBhY2thZ2V7Y29sb3J9CitcdXNlcGFja2FnZVt1c2VuYW1lcyxkdmlwc25hbWVzXXt4Y29sb3J9CitcdXNlcGFja2FnZVtjbV17ZnVsbHBhZ2V9CislKG1hY3JvcylzCitcYmVnaW57ZG9jdW1lbnR9CitcY2VudGVye1xMQVJHRXslKHRpdGxlKXN9fQorXGJlZ2lue2FsbHR0fQorJShib2R5KXMKK1xlbmR7YWxsdHR9CitcZW5ke2RvY3VtZW50fQorJycnCisKK2RlZiBhbGx0dF9lc2NhcGUocyk6CisgICAgJ1JlcGxhY2UgYmFja3NsYXNoIGFuZCBicmFjZXMgd2l0aCB0aGVpciBlc2NhcGVkIGVxdWl2YWxlbnRzJworICAgIHhsYXQgPSB7J3snOiByJ1x7JywgJ30nOiByJ1x9JywgJ1xcJzogcidcdGV4dGJhY2tzbGFzaHt9J30KKyAgICByZXR1cm4gcmUuc3ViKHInW1xce31dJywgbGFtYmRhIG1vOiB4bGF0W21vLmdyb3VwKCldLCBzKQorCitkZWYgbGF0ZXhfaGlnaGxpZ2h0KGNsYXNzaWZpZWRfdGV4dCwgdGl0bGUgPSAncHl0aG9uJywKKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZHMgPSBkZWZhdWx0X2xhdGV4X2NvbW1hbmRzLAorICAgICAgICAgICAgICAgICAgICBkb2N1bWVudCA9IGRlZmF1bHRfbGF0ZXhfZG9jdW1lbnQpOgorICAgICdDcmVhdGUgYSBjb21wbGV0ZSBMYVRlWCBkb2N1bWVudCB3aXRoIGNvbG9yaXplZCBzb3VyY2UgY29kZScKKyAgICBtYWNyb3MgPSAnXG4nLmpvaW4ocidcbmV3Y29tbWFuZHtccHklc31bMV17JXN9JyAlIGMgZm9yIGMgaW4gY29tbWFuZHMuaXRlbXMoKSkKKyAgICByZXN1bHQgPSBbXQorICAgIGZvciBraW5kLCB0ZXh0IGluIGNsYXNzaWZpZWRfdGV4dDoKKyAgICAgICAgaWYga2luZDoKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocidccHklc3snICUga2luZCkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChhbGx0dF9lc2NhcGUodGV4dCkpCisgICAgICAgIGlmIGtpbmQ6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd9JykKKyAgICByZXR1cm4gZGVmYXVsdF9sYXRleF9kb2N1bWVudCAlIGRpY3QodGl0bGU9dGl0bGUsIG1hY3Jvcz1tYWNyb3MsIGJvZHk9Jycuam9pbihyZXN1bHQpKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaW1wb3J0IHN5cywgYXJncGFyc2UsIHdlYmJyb3dzZXIsIG9zLCB0ZXh0d3JhcAorCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoCisgICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdBZGQgc3ludGF4IGhpZ2hsaWdodGluZyB0byBQeXRob24gc291cmNlIGNvZGUnLAorICAgICAgICAgICAgZm9ybWF0dGVyX2NsYXNzPWFyZ3BhcnNlLlJhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlciwKKyAgICAgICAgICAgIGVwaWxvZyA9IHRleHR3cmFwLmRlZGVudCgnJycKKyAgICAgICAgICAgICAgICBleGFtcGxlczoKKworICAgICAgICAgICAgICAgICAgIyBTaG93IHN5bnRheCBoaWdobGlnaHRlZCBjb2RlIGluIHRoZSB0ZXJtaW5hbCB3aW5kb3cKKyAgICAgICAgICAgICAgICAgICQgLi9oaWdobGlnaHQucHkgbXlmaWxlLnB5CisKKyAgICAgICAgICAgICAgICAgICMgQ29sb3JpemUgbXlmaWxlLnB5IGFuZCBkaXNwbGF5IGluIGEgYnJvd3NlcgorICAgICAgICAgICAgICAgICAgJCAuL2hpZ2hsaWdodC5weSAtYiBteWZpbGUucHkKKworICAgICAgICAgICAgICAgICAgIyBDcmVhdGUgYW4gSFRNTCBzZWN0aW9uIHRvIGVtYmVkIGluIGFuIGV4aXN0aW5nIHdlYnBhZ2UKKyAgICAgICAgICAgICAgICAgIC4vaGlnaGxpZ2h0LnB5IC1zIG15ZmlsZS5weQorCisgICAgICAgICAgICAgICAgICAjIENyZWF0ZSBhIGNvbXBsZXRlIEhUTUwgZmlsZQorICAgICAgICAgICAgICAgICAgJCAuL2hpZ2hsaWdodC5weSAtYyBteWZpbGUucHkgPiBteWZpbGUuaHRtbAorCisgICAgICAgICAgICAgICAgICAjIENyZWF0ZSBhIFBERiB1c2luZyBMYVRlWAorICAgICAgICAgICAgICAgICAgJCAuL2hpZ2hsaWdodC5weSAtbCBteWZpbGUucHkgfCBwZGZsYXRleAorCisgICAgICAgICAgICAnJycpKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3NvdXJjZWZpbGUnLCBtZXRhdmFyID0gJ1NPVVJDRUZJTEUnLAorICAgICAgICAgICAgaGVscCA9ICdmaWxlIGNvbnRhaW5pbmcgUHl0aG9uIHNvdXJjZWNvZGUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1iJywgJy0tYnJvd3NlcicsIGFjdGlvbiA9ICdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHAgPSAnbGF1bmNoIGEgYnJvd3NlciB0byBzaG93IHJlc3VsdHMnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1jJywgJy0tY29tcGxldGUnLCBhY3Rpb24gPSAnc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwID0gJ2J1aWxkIGEgY29tcGxldGUgaHRtbCB3ZWJwYWdlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctbCcsICctLWxhdGV4JywgYWN0aW9uID0gJ3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscCA9ICdidWlsZCBhIExhVGVYIGRvY3VtZW50JykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcicsICctLXJhdycsIGFjdGlvbiA9ICdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHAgPSAncmF3IHBhcnNlIG9mIGNhdGVnb3JpemVkIHRleHQnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1zJywgJy0tc2VjdGlvbicsIGFjdGlvbiA9ICdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHAgPSAnc2hvdyBhbiBIVE1MIHNlY3Rpb24gcmF0aGVyIHRoYW4gYSBjb21wbGV0ZSB3ZWJwYWdlJykKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgaWYgYXJncy5zZWN0aW9uIGFuZCAoYXJncy5icm93c2VyIG9yIGFyZ3MuY29tcGxldGUpOgorICAgICAgICBwYXJzZXIuZXJyb3IoJ1RoZSAtcy8tLXNlY3Rpb24gb3B0aW9uIGlzIGluY29tcGF0aWJsZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgLWIvLS1icm93c2VyIG9yIC1jLy0tY29tcGxldGUgb3B0aW9ucycpCisKKyAgICBzb3VyY2VmaWxlID0gYXJncy5zb3VyY2VmaWxlCisgICAgd2l0aCBvcGVuKHNvdXJjZWZpbGUpIGFzIGY6CisgICAgICAgIHNvdXJjZSA9IGYucmVhZCgpCisgICAgY2xhc3NpZmllZF90ZXh0ID0gYW5hbHl6ZV9weXRob24oc291cmNlKQorCisgICAgaWYgYXJncy5yYXc6CisgICAgICAgIGVuY29kZWQgPSByYXdfaGlnaGxpZ2h0KGNsYXNzaWZpZWRfdGV4dCkKKyAgICBlbGlmIGFyZ3MuY29tcGxldGUgb3IgYXJncy5icm93c2VyOgorICAgICAgICBlbmNvZGVkID0gYnVpbGRfaHRtbF9wYWdlKGNsYXNzaWZpZWRfdGV4dCwgdGl0bGU9c291cmNlZmlsZSkKKyAgICBlbGlmIGFyZ3Muc2VjdGlvbjoKKyAgICAgICAgZW5jb2RlZCA9IGh0bWxfaGlnaGxpZ2h0KGNsYXNzaWZpZWRfdGV4dCkKKyAgICBlbGlmIGFyZ3MubGF0ZXg6CisgICAgICAgIGVuY29kZWQgPSBsYXRleF9oaWdobGlnaHQoY2xhc3NpZmllZF90ZXh0LCB0aXRsZT1zb3VyY2VmaWxlKQorICAgIGVsc2U6CisgICAgICAgIGVuY29kZWQgPSBhbnNpX2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQpCisKKyAgICBpZiBhcmdzLmJyb3dzZXI6CisgICAgICAgIGh0bWxmaWxlID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHNvdXJjZWZpbGUpKVswXSArICcuaHRtbCcKKyAgICAgICAgd2l0aCBvcGVuKGh0bWxmaWxlLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGVuY29kZWQpCisgICAgICAgIHdlYmJyb3dzZXIub3BlbignZmlsZTovLycgKyBvcy5wYXRoLmFic3BhdGgoaHRtbGZpbGUpKQorICAgIGVsc2U6CisgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoZW5jb2RlZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvaW1wb3J0X2RpYWdub3N0aWNzLnB5IGIvVG9vbHMvc2NyaXB0cy9pbXBvcnRfZGlhZ25vc3RpY3MucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzkwNzIyMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3NjcmlwdHMvaW1wb3J0X2RpYWdub3N0aWNzLnB5CkBAIC0wLDAgKzEsMzcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyIiIk1pc2NlbGxhbmVvdXMgZGlhZ25vc3RpY3MgZm9yIHRoZSBpbXBvcnQgc3lzdGVtIiIiCisKK2ltcG9ydCBzeXMKK2ltcG9ydCBhcmdwYXJzZQorZnJvbSBwcHJpbnQgaW1wb3J0IHBwcmludAorCitkZWYgX2R1bXBfc3RhdGUoYXJncyk6CisgICAgcHJpbnQoc3lzLnZlcnNpb24pCisgICAgZm9yIG5hbWUgaW4gYXJncy5hdHRyaWJ1dGVzOgorICAgICAgICBwcmludCgic3lzLnt9OiIuZm9ybWF0KG5hbWUpKQorICAgICAgICBwcHJpbnQoZ2V0YXR0cihzeXMsIG5hbWUpKQorCitkZWYgX2FkZF9kdW1wX2FyZ3MoY21kKToKKyAgICBjbWQuYWRkX2FyZ3VtZW50KCJhdHRyaWJ1dGVzIiwgbWV0YXZhcj0iQVRUUiIsIG5hcmdzPSIrIiwKKyAgICAgICAgICAgICAgICAgICAgIGhlbHA9InN5cyBtb2R1bGUgYXR0cmlidXRlIHRvIGRpc3BsYXkiKQorCitDT01NQU5EUyA9ICgKKyAgKCJkdW1wIiwgIkR1bXAgaW1wb3J0IHN0YXRlIiwgX2R1bXBfc3RhdGUsIF9hZGRfZHVtcF9hcmdzKSwKKykKKworZGVmIF9tYWtlX3BhcnNlcigpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICBzdWIgPSBwYXJzZXIuYWRkX3N1YnBhcnNlcnModGl0bGU9IkNvbW1hbmRzIikKKyAgICBmb3IgbmFtZSwgZGVzY3JpcHRpb24sIGltcGxlbWVudGF0aW9uLCBhZGRfYXJncyBpbiBDT01NQU5EUzoKKyAgICAgICAgY21kID0gc3ViLmFkZF9wYXJzZXIobmFtZSwgaGVscD1kZXNjcmlwdGlvbikKKyAgICAgICAgY21kLnNldF9kZWZhdWx0cyhjb21tYW5kPWltcGxlbWVudGF0aW9uKQorICAgICAgICBhZGRfYXJncyhjbWQpCisgICAgcmV0dXJuIHBhcnNlcgorCitkZWYgbWFpbihhcmdzKToKKyAgICBwYXJzZXIgPSBfbWFrZV9wYXJzZXIoKQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQorICAgIHJldHVybiBhcmdzLmNvbW1hbmQoYXJncykKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2WzE6XSkpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3BhdGNoY2hlY2sucHkgYi9Ub29scy9zY3JpcHRzL3BhdGNoY2hlY2sucHkKaW5kZXggNmEzOTE0NS4uN2I4ODU3ZSAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvcGF0Y2hjaGVjay5weQpAQCAtNDksMjkgKzQ5LDE1IEBACiBAc3RhdHVzKCJHZXR0aW5nIHRoZSBsaXN0IG9mIGZpbGVzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkL2NoYW5nZWQiLAogICAgICAgICBpbmZvPWxhbWJkYSB4OiBuX2ZpbGVzX3N0cihsZW4oeCkpKQogZGVmIGNoYW5nZWRfZmlsZXMoKToKLSAgICAiIiJHZXQgdGhlIGxpc3Qgb2YgY2hhbmdlZCBvciBhZGRlZCBmaWxlcyBmcm9tIHRoZSBWQ1MuIiIiCi0gICAgaWYgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oU1JDRElSLCAnLmhnJykpOgotICAgICAgICB2Y3MgPSAnaGcnCi0gICAgICAgIGNtZCA9ICdoZyBzdGF0dXMgLS1hZGRlZCAtLW1vZGlmaWVkIC0tbm8tc3RhdHVzJwotICAgICAgICBpZiBtcV9wYXRjaGVzX2FwcGxpZWQoKToKLSAgICAgICAgICAgIGNtZCArPSAnIC0tcmV2IHFwYXJlbnQnCi0gICAgZWxpZiBvcy5wYXRoLmlzZGlyKCcuc3ZuJyk6Ci0gICAgICAgIHZjcyA9ICdzdm4nCi0gICAgICAgIGNtZCA9ICdzdm4gc3RhdHVzIC0tcXVpZXQgLS1ub24taW50ZXJhY3RpdmUgLS1pZ25vcmUtZXh0ZXJuYWxzJwotICAgIGVsc2U6CisgICAgIiIiR2V0IHRoZSBsaXN0IG9mIGNoYW5nZWQgb3IgYWRkZWQgZmlsZXMgZnJvbSBNZXJjdXJpYWwuIiIiCisgICAgaWYgbm90IG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKFNSQ0RJUiwgJy5oZycpKToKICAgICAgICAgc3lzLmV4aXQoJ25lZWQgYSBjaGVja291dCB0byBnZXQgbW9kaWZpZWQgZmlsZXMnKQogCi0gICAgc3QgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZC5zcGxpdCgpLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQotICAgIHRyeToKLSAgICAgICAgc3Qud2FpdCgpCi0gICAgICAgIGlmIHZjcyA9PSAnaGcnOgotICAgICAgICAgICAgcmV0dXJuIFt4LmRlY29kZSgpLnJzdHJpcCgpIGZvciB4IGluIHN0LnN0ZG91dF0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG91dHB1dCA9ICh4LmRlY29kZSgpLnJzdHJpcCgpLnJzcGxpdChOb25lLCAxKVstMV0KLSAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBzdC5zdGRvdXQgaWYgeFswXSBpbiBiJ0FNJykKLSAgICAgICAgcmV0dXJuIHNldChwYXRoIGZvciBwYXRoIGluIG91dHB1dCBpZiBvcy5wYXRoLmlzZmlsZShwYXRoKSkKLSAgICBmaW5hbGx5OgotICAgICAgICBzdC5zdGRvdXQuY2xvc2UoKQorICAgIGNtZCA9ICdoZyBzdGF0dXMgLS1hZGRlZCAtLW1vZGlmaWVkIC0tbm8tc3RhdHVzJworICAgIGlmIG1xX3BhdGNoZXNfYXBwbGllZCgpOgorICAgICAgICBjbWQgKz0gJyAtLXJldiBxcGFyZW50JworICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihjbWQuc3BsaXQoKSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkgYXMgc3Q6CisgICAgICAgIHJldHVybiBbeC5kZWNvZGUoKS5yc3RyaXAoKSBmb3IgeCBpbiBzdC5zdGRvdXRdCiAKIAogZGVmIHJlcG9ydF9tb2RpZmllZF9maWxlcyhmaWxlX3BhdGhzKToKQEAgLTg5LDEwICs3NSw4IEBACiBkZWYgbm9ybWFsaXplX3doaXRlc3BhY2UoZmlsZV9wYXRocyk6CiAgICAgIiIiTWFrZSBzdXJlIHRoYXQgdGhlIHdoaXRlc3BhY2UgZm9yIC5weSBmaWxlcyBoYXZlIGJlZW4gbm9ybWFsaXplZC4iIiIKICAgICByZWluZGVudC5tYWtlYmFja3VwID0gRmFsc2UgICMgTm8gbmVlZCB0byBjcmVhdGUgYmFja3Vwcy4KLSAgICBmaXhlZCA9IFtdCi0gICAgZm9yIHBhdGggaW4gKHggZm9yIHggaW4gZmlsZV9wYXRocyBpZiB4LmVuZHN3aXRoKCcucHknKSk6Ci0gICAgICAgIGlmIHJlaW5kZW50LmNoZWNrKG9zLnBhdGguam9pbihTUkNESVIsIHBhdGgpKToKLSAgICAgICAgICAgIGZpeGVkLmFwcGVuZChwYXRoKQorICAgIGZpeGVkID0gW3BhdGggZm9yIHBhdGggaW4gZmlsZV9wYXRocyBpZiBwYXRoLmVuZHN3aXRoKCcucHknKSBhbmQKKyAgICAgICAgICAgICByZWluZGVudC5jaGVjayhvcy5wYXRoLmpvaW4oU1JDRElSLCBwYXRoKSldCiAgICAgcmV0dXJuIGZpeGVkCiAKIApAQCAtMTQ4LDYgKzEzMiwyMSBAQAogICAgICIiIkNoZWNrIGlmIE1pc2MvTkVXUyBoYXMgYmVlbiBjaGFuZ2VkLiIiIgogICAgIHJldHVybiAnTWlzYy9ORVdTJyBpbiBmaWxlX3BhdGhzCiAKK0BzdGF0dXMoImNvbmZpZ3VyZSByZWdlbmVyYXRlZCIsIG1vZGFsPVRydWUsIGluZm89c3RyKQorZGVmIHJlZ2VuZXJhdGVkX2NvbmZpZ3VyZShmaWxlX3BhdGhzKToKKyAgICAiIiJDaGVjayBpZiBjb25maWd1cmUgaGFzIGJlZW4gcmVnZW5lcmF0ZWQuIiIiCisgICAgaWYgJ2NvbmZpZ3VyZS5hYycgaW4gZmlsZV9wYXRoczoKKyAgICAgICAgcmV0dXJuICJ5ZXMiIGlmICdjb25maWd1cmUnIGluIGZpbGVfcGF0aHMgZWxzZSAibm8iCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICJub3QgbmVlZGVkIgorCitAc3RhdHVzKCJweWNvbmZpZy5oLmluIHJlZ2VuZXJhdGVkIiwgbW9kYWw9VHJ1ZSwgaW5mbz1zdHIpCitkZWYgcmVnZW5lcmF0ZWRfcHljb25maWdfaF9pbihmaWxlX3BhdGhzKToKKyAgICAiIiJDaGVjayBpZiBweWNvbmZpZy5oLmluIGhhcyBiZWVuIHJlZ2VuZXJhdGVkLiIiIgorICAgIGlmICdjb25maWd1cmUuYWMnIGluIGZpbGVfcGF0aHM6CisgICAgICAgIHJldHVybiAieWVzIiBpZiAncHljb25maWcuaC5pbicgaW4gZmlsZV9wYXRocyBlbHNlICJubyIKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gIm5vdCBuZWVkZWQiCiAKIGRlZiBtYWluKCk6CiAgICAgZmlsZV9wYXRocyA9IGNoYW5nZWRfZmlsZXMoKQpAQCAtMTY3LDYgKzE2NiwxMCBAQAogICAgIGNyZWRpdF9naXZlbihzcGVjaWFsX2ZpbGVzKQogICAgICMgTWlzYy9ORVdTIGNoYW5nZWQuCiAgICAgcmVwb3J0ZWRfbmV3cyhzcGVjaWFsX2ZpbGVzKQorICAgICMgUmVnZW5lcmF0ZWQgY29uZmlndXJlLCBpZiBuZWNlc3NhcnkuCisgICAgcmVnZW5lcmF0ZWRfY29uZmlndXJlKGZpbGVfcGF0aHMpCisgICAgIyBSZWdlbmVyYXRlZCBweWNvbmZpZy5oLmluLCBpZiBuZWNlc3NhcnkuCisgICAgcmVnZW5lcmF0ZWRfcHljb25maWdfaF9pbihmaWxlX3BhdGhzKQogCiAgICAgIyBUZXN0IHN1aXRlIHJ1biBhbmQgcGFzc2VkLgogICAgIGlmIHB5dGhvbl9maWxlcyBvciBjX2ZpbGVzOgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9weXNvdXJjZS5weSBiL1Rvb2xzL3NjcmlwdHMvcHlzb3VyY2UucHkKaW5kZXggMDQ4MTMxZS4uNjllOGUwZCAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9weXNvdXJjZS5weQorKysgYi9Ub29scy9zY3JpcHRzL3B5c291cmNlLnB5CkBAIC0yMiw3ICsyMiw3IEBACiAKIGltcG9ydCBvcywgcmUKIAotYmluYXJ5X3JlID0gcmUuY29tcGlsZSgnW1x4MDAtXHgwOFx4MEUtXHgxRlx4N0ZdJykKK2JpbmFyeV9yZSA9IHJlLmNvbXBpbGUoYnInW1x4MDAtXHgwOFx4MEUtXHgxRlx4N0ZdJykKIAogZGVidWcgPSBGYWxzZQogCkBAIC00Miw3ICs0Miw3IEBACiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICB0cnk6Ci0gICAgICAgIHJldHVybiBvcGVuKGZ1bGxwYXRoLCAnclUnKQorICAgICAgICByZXR1cm4gb3BlbihmdWxscGF0aCwgInJiIikKICAgICBleGNlcHQgSU9FcnJvciBhcyBlcnI6ICMgQWNjZXNzIGRlbmllZCwgb3IgYSBzcGVjaWFsIGZpbGUgLSBpZ25vcmUgaXQKICAgICAgICAgcHJpbnRfZGVidWcoIiVzOiBhY2Nlc3MgZGVuaWVkOiAlcyIgJSAoZnVsbHBhdGgsIGVycikpCiAgICAgICAgIHJldHVybiBOb25lCkBAIC01NSw4ICs1NSw4IEBACiAgICAgaWYgaW5maWxlIGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgbGluZSA9IGluZmlsZS5yZWFkbGluZSgpCi0gICAgaW5maWxlLmNsb3NlKCkKKyAgICB3aXRoIGluZmlsZToKKyAgICAgICAgbGluZSA9IGluZmlsZS5yZWFkbGluZSgpCiAKICAgICBpZiBiaW5hcnlfcmUuc2VhcmNoKGxpbmUpOgogICAgICAgICAjIGZpbGUgYXBwZWFycyB0byBiZSBiaW5hcnkKQEAgLTY1LDcgKzY1LDcgQEAKIAogICAgIGlmIGZ1bGxwYXRoLmVuZHN3aXRoKCIucHkiKSBvciBmdWxscGF0aC5lbmRzd2l0aCgiLnB5dyIpOgogICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGVsaWYgInB5dGhvbiIgaW4gbGluZToKKyAgICBlbGlmIGIicHl0aG9uIiBpbiBsaW5lOgogICAgICAgICAjIGRpc2d1aXNlZCBQeXRob24gc2NyaXB0IChlLmcuIENHSSkKICAgICAgICAgcmV0dXJuIFRydWUKIApAQCAtNzYsOCArNzYsOCBAQAogICAgIGlmIGluZmlsZSBpcyBOb25lOgogICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIGNvZGUgPSBpbmZpbGUucmVhZCgpCi0gICAgaW5maWxlLmNsb3NlKCkKKyAgICB3aXRoIGluZmlsZToKKyAgICAgICAgY29kZSA9IGluZmlsZS5yZWFkKCkKIAogICAgIHRyeToKICAgICAgICAgY29tcGlsZShjb2RlLCBmdWxscGF0aCwgImV4ZWMiKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9weXZlbnYgYi9Ub29scy9zY3JpcHRzL3B5dmVudgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45NzhkNjkxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvc2NyaXB0cy9weXZlbnYKQEAgLTAsMCArMSwxMSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgc3lzCisgICAgcmMgPSAxCisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgdmVudgorICAgICAgICB2ZW52Lm1haW4oKQorICAgICAgICByYyA9IDAKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIHByaW50KCdFcnJvcjogJXMnICUgZSwgZmlsZT1zeXMuc3RkZXJyKQorICAgIHN5cy5leGl0KHJjKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weSBiL1Rvb2xzL3NjcmlwdHMvcmVpbmRlbnQucHkKaW5kZXggYjE4OTkzYi4uNGE5MTZlYSAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weQorKysgYi9Ub29scy9zY3JpcHRzL3JlaW5kZW50LnB5CkBAIC04LDYgKzgsOCBAQAogLXIgKC0tcmVjdXJzZSkgIFJlY3Vyc2UuICAgU2VhcmNoIGZvciBhbGwgLnB5IGZpbGVzIGluIHN1YmRpcmVjdG9yaWVzIHRvby4KIC1uICgtLW5vYmFja3VwKSBObyBiYWNrdXAuIERvZXMgbm90IG1ha2UgYSAiLmJhayIgZmlsZSBiZWZvcmUgcmVpbmRlbnRpbmcuCiAtdiAoLS12ZXJib3NlKSAgVmVyYm9zZS4gICBQcmludCBpbmZvcm1hdGl2ZSBtc2dzOyBlbHNlIG5vIG91dHB1dC4KKyAgICgtLW5ld2xpbmUpICBOZXdsaW5lLiAgIFNwZWNpZnkgdGhlIG5ld2xpbmUgY2hhcmFjdGVyIHRvIHVzZSAoQ1JMRiwgTEYpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCBpcyB0aGUgc2FtZSBhcyB0aGUgb3JpZ2luYWwgZmlsZS4KIC1oICgtLWhlbHApICAgICBIZWxwLiAgICAgIFByaW50IHRoaXMgdXNhZ2UgaW5mb3JtYXRpb24gYW5kIGV4aXQuCiAKIENoYW5nZSBQeXRob24gKC5weSkgZmlsZXMgdG8gdXNlIDQtc3BhY2UgaW5kZW50cyBhbmQgbm8gaGFyZCB0YWIgY2hhcmFjdGVycy4KQEAgLTUwLDYgKzUyLDggQEAKIHJlY3Vyc2UgPSBGYWxzZQogZHJ5cnVuID0gRmFsc2UKIG1ha2ViYWNrdXAgPSBUcnVlCitzcGVjX25ld2xpbmUgPSBOb25lCisiIiJBIHNwZWNpZmllZCBuZXdsaW5lIHRvIGJlIHVzZWQgaW4gdGhlIG91dHB1dCAoc2V0IGJ5IC0tbmV3bGluZSBvcHRpb24pIiIiCiAKIAogZGVmIHVzYWdlKG1zZz1Ob25lKToKQEAgLTYyLDEzICs2NiwxMiBAQAogICAgIHN5cy5zdGRlcnIud3JpdGUoIiAiLmpvaW4oc3RyKGFyZykgZm9yIGFyZyBpbiBhcmdzKSkKICAgICBzeXMuc3RkZXJyLndyaXRlKCJcbiIpCiAKLQogZGVmIG1haW4oKToKICAgICBpbXBvcnQgZ2V0b3B0Ci0gICAgZ2xvYmFsIHZlcmJvc2UsIHJlY3Vyc2UsIGRyeXJ1biwgbWFrZWJhY2t1cAorICAgIGdsb2JhbCB2ZXJib3NlLCByZWN1cnNlLCBkcnlydW4sIG1ha2ViYWNrdXAsIHNwZWNfbmV3bGluZQogICAgIHRyeToKICAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoc3lzLmFyZ3ZbMTpdLCAiZHJudmgiLAotICAgICAgICAgICAgICAgICAgICAgICAgWyJkcnlydW4iLCAicmVjdXJzZSIsICJub2JhY2t1cCIsICJ2ZXJib3NlIiwgImhlbHAiXSkKKyAgICAgICAgICAgIFsiZHJ5cnVuIiwgInJlY3Vyc2UiLCAibm9iYWNrdXAiLCAidmVyYm9zZSIsICJuZXdsaW5lPSIsICJoZWxwIl0pCiAgICAgZXhjZXB0IGdldG9wdC5lcnJvciBhcyBtc2c6CiAgICAgICAgIHVzYWdlKG1zZykKICAgICAgICAgcmV0dXJuCkBAIC04MSw2ICs4NCwxMSBAQAogICAgICAgICAgICAgbWFrZWJhY2t1cCA9IEZhbHNlCiAgICAgICAgIGVsaWYgbyBpbiAoJy12JywgJy0tdmVyYm9zZScpOgogICAgICAgICAgICAgdmVyYm9zZSA9IFRydWUKKyAgICAgICAgZWxpZiBvIGluICgnLS1uZXdsaW5lJywpOgorICAgICAgICAgICAgaWYgbm90IGEudXBwZXIoKSBpbiAoJ0NSTEYnLCAnTEYnKToKKyAgICAgICAgICAgICAgICB1c2FnZSgpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBzcGVjX25ld2xpbmUgPSBkaWN0KENSTEY9J1xyXG4nLCBMRj0nXG4nKVthLnVwcGVyKCldCiAgICAgICAgIGVsaWYgbyBpbiAoJy1oJywgJy0taGVscCcpOgogICAgICAgICAgICAgdXNhZ2UoKQogICAgICAgICAgICAgcmV0dXJuCkBAIC0xMTgsOSArMTI2LDkgQEAKICAgICAgICAgZXJycHJpbnQoIiVzOiBJL08gRXJyb3I6ICVzIiAlIChmaWxlLCBzdHIobXNnKSkpCiAgICAgICAgIHJldHVybgogCi0gICAgbmV3bGluZSA9IHIubmV3bGluZXMKKyAgICBuZXdsaW5lID0gc3BlY19uZXdsaW5lIGlmIHNwZWNfbmV3bGluZSBlbHNlIHIubmV3bGluZXMKICAgICBpZiBpc2luc3RhbmNlKG5ld2xpbmUsIHR1cGxlKToKLSAgICAgICAgZXJycHJpbnQoIiVzOiBtaXhlZCBuZXdsaW5lcyBkZXRlY3RlZDsgY2Fubm90IHByb2Nlc3MgZmlsZSIgJSBmaWxlKQorICAgICAgICBlcnJwcmludCgiJXM6IG1peGVkIG5ld2xpbmVzIGRldGVjdGVkOyBjYW5ub3QgY29udGludWUgd2l0aG91dCAtLW5ld2xpbmUiICUgZmlsZSkKICAgICAgICAgcmV0dXJuCiAKICAgICBpZiByLnJ1bigpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkgYi9Ub29scy9zY3JpcHRzL3J1bl90ZXN0cy5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lMmEyMDUwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkKQEAgLTAsMCArMSw1MSBAQAorIiIiUnVuIFB5dGhvbidzIHRlc3Qgc3VpdGUgaW4gYSBmYXN0LCByaWdvcm91cyB3YXkuCisKK1RoZSBkZWZhdWx0cyBhcmUgbWVhbnQgdG8gYmUgcmVhc29uYWJseSB0aG9yb3VnaCwgd2hpbGUgc2tpcHBpbmcgY2VydGFpbgordGVzdHMgdGhhdCBjYW4gYmUgdGltZS1jb25zdW1pbmcgb3IgcmVzb3VyY2UtaW50ZW5zaXZlIChlLmcuIGxhcmdlZmlsZSksCitvciBkaXN0cmFjdGluZyAoZS5nLiBhdWRpbyBhbmQgZ3VpKS4gVGhlc2UgZGVmYXVsdHMgY2FuIGJlIG92ZXJyaWRkZW4gYnkKK3NpbXBseSBwYXNzaW5nIGEgLXUgb3B0aW9uIHRvIHRoaXMgc2NyaXB0LgorCisiIiIKKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdGVzdC5zdXBwb3J0Cit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHRocmVhZGluZyA9IE5vbmUKKworCitkZWYgaXNfbXVsdGlwcm9jZXNzX2ZsYWcoYXJnKToKKyAgICByZXR1cm4gYXJnLnN0YXJ0c3dpdGgoJy1qJykgb3IgYXJnLnN0YXJ0c3dpdGgoJy0tbXVsdGlwcm9jZXNzJykKKworCitkZWYgaXNfcmVzb3VyY2VfdXNlX2ZsYWcoYXJnKToKKyAgICByZXR1cm4gYXJnLnN0YXJ0c3dpdGgoJy11Jykgb3IgYXJnLnN0YXJ0c3dpdGgoJy0tdXNlJykKKworCitkZWYgbWFpbihyZWdydGVzdF9hcmdzKToKKyAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLAorICAgICAgICAgICAgJy1XJywgJ2RlZmF1bHQnLCAgICAgICMgV2FybmluZ3Mgc2V0IHRvICdkZWZhdWx0JworICAgICAgICAgICAgJy1iYicsICAgICAgICAgICAgICAgICMgV2FybmluZ3MgYWJvdXQgYnl0ZXMvYnl0ZWFycmF5CisgICAgICAgICAgICAnLUUnLCAgICAgICAgICAgICAgICAgIyBJZ25vcmUgZW52aXJvbm1lbnQgdmFyaWFibGVzCisgICAgICAgICAgICBdCisgICAgIyBBbGxvdyB1c2VyLXNwZWNpZmllZCBpbnRlcnByZXRlciBvcHRpb25zIHRvIG92ZXJyaWRlIG91ciBkZWZhdWx0cy4KKyAgICBhcmdzLmV4dGVuZCh0ZXN0LnN1cHBvcnQuYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkpCisgICAgYXJncy5leHRlbmQoWyctbScsICd0ZXN0JywgICAgIyBSdW4gdGhlIHRlc3Qgc3VpdGUKKyAgICAgICAgICAgICAgICAgJy1yJywgICAgICAgICAgICAjIFJhbmRvbWl6ZSB0ZXN0IG9yZGVyCisgICAgICAgICAgICAgICAgICctdycsICAgICAgICAgICAgIyBSZS1ydW4gZmFpbGVkIHRlc3RzIGluIHZlcmJvc2UgbW9kZQorICAgICAgICAgICAgICAgICBdKQorICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICBhcmdzLmFwcGVuZCgnLW4nKSAgICAgICAgICMgU2lsZW5jZSBhbGVydHMgdW5kZXIgV2luZG93cworICAgIGlmIHRocmVhZGluZyBhbmQgbm90IGFueShpc19tdWx0aXByb2Nlc3NfZmxhZyhhcmcpIGZvciBhcmcgaW4gcmVncnRlc3RfYXJncyk6CisgICAgICAgIGFyZ3MuZXh0ZW5kKFsnLWonLCAnMCddKSAgIyBVc2UgYWxsIENQVSBjb3JlcworICAgIGlmIG5vdCBhbnkoaXNfcmVzb3VyY2VfdXNlX2ZsYWcoYXJnKSBmb3IgYXJnIGluIHJlZ3J0ZXN0X2FyZ3MpOgorICAgICAgICBhcmdzLmV4dGVuZChbJy11JywgJ2FsbCwtbGFyZ2VmaWxlLC1hdWRpbywtZ3VpJ10pCisgICAgYXJncy5leHRlbmQocmVncnRlc3RfYXJncykKKyAgICBwcmludCgnICcuam9pbihhcmdzKSkKKyAgICBvcy5leGVjdihzeXMuZXhlY3V0YWJsZSwgYXJncykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oc3lzLmFyZ3ZbMTpdKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy90ZXhpMmh0bWwucHkgYi9Ub29scy9zY3JpcHRzL3RleGkyaHRtbC5weQppbmRleCBhZjIxNDdhLi45OTgzNTI4IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3RleGkyaHRtbC5weQorKysgYi9Ub29scy9zY3JpcHRzL3RleGkyaHRtbC5weQpAQCAtMzE5LDcgKzMxOSw3IEBACiAKICAgICAjIFN0YXJ0IHNhdmluZyB0ZXh0IGluIGEgYnVmZmVyIGluc3RlYWQgb2Ygd3JpdGluZyBpdCB0byBhIGZpbGUKICAgICBkZWYgc3RhcnRzYXZpbmcoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuc2F2ZXRleHQgIT0gTm9uZToKKyAgICAgICAgaWYgc2VsZi5zYXZldGV4dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYuc2F2ZXN0YWNrLmFwcGVuZChzZWxmLnNhdmV0ZXh0KQogICAgICAgICAgICAgIyBwcmludCAnKioqIFJlY3Vyc2l2ZWx5IHNhdmluZyB0ZXh0LCBleHBlY3QgdHJvdWJsZScKICAgICAgICAgc2VsZi5zYXZldGV4dCA9ICcnCkBAIC0zNDEsNyArMzQxLDcgQEAKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgcHJpbnQoYXJncykKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcgotICAgICAgICBpZiBzZWxmLnNhdmV0ZXh0ICE9IE5vbmU6CisgICAgICAgIGlmIHNlbGYuc2F2ZXRleHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLnNhdmV0ZXh0ID0gc2VsZi5zYXZldGV4dCArIHRleHQKICAgICAgICAgZWxpZiBzZWxmLm5vZGVmcDoKICAgICAgICAgICAgIHNlbGYubm9kZWZwLndyaXRlKHRleHQpCkBAIC0zNTAsNyArMzUwLDcgQEAKIAogICAgICMgQ29tcGxldGUgdGhlIGN1cnJlbnQgbm9kZSAtLSB3cml0ZSBmb290bm90ZXMgYW5kIGNsb3NlIGZpbGUKICAgICBkZWYgZW5kbm9kZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5zYXZldGV4dCAhPSBOb25lOgorICAgICAgICBpZiBzZWxmLnNhdmV0ZXh0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcHJpbnQoJyoqKiBTdGlsbCBzYXZpbmcgdGV4dCBhdCBlbmQgb2Ygbm9kZScpCiAgICAgICAgICAgICBkdW1teSA9IHNlbGYuY29sbGVjdHNhdmluZ3MoKQogICAgICAgICBpZiBzZWxmLmZvb3Rub3RlczoKQEAgLTgwNCw3ICs4MDQsNyBAQAogICAgIGRlZiBjbG9zZV9pKHNlbGYpOiBzZWxmLndyaXRlKCc8L0k+JykKIAogICAgIGRlZiBvcGVuX2Zvb3Rub3RlKHNlbGYpOgotICAgICAgICAjIGlmIHNlbGYuc2F2ZXRleHQgPD4gTm9uZToKKyAgICAgICAgIyBpZiBzZWxmLnNhdmV0ZXh0IGlzIG5vdCBOb25lOgogICAgICAgICAjICAgICAgIHByaW50ICcqKiogUmVjdXJzaXZlIGZvb3Rub3RlIC0tIGV4cGVjdCB3ZWlyZG5lc3MnCiAgICAgICAgIGlkID0gbGVuKHNlbGYuZm9vdG5vdGVzKSArIDEKICAgICAgICAgc2VsZi53cml0ZShzZWxmLkZOX1NPVVJDRV9QQVRURVJOICUgeydpZCc6IHJlcHIoaWQpfSkKQEAgLTE0NDIsNyArMTQ0Miw3IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgc29tZSBvdGhlciBjaGFyYWN0ZXIsIGUuZy4gJy0nCiAgICAgICAgICAgICAgICAgYXJncyA9IHNlbGYuaXRlbWFyZyArICcgJyArIGFyZ3MKLSAgICAgICAgaWYgc2VsZi5pdGVtbnVtYmVyICE9IE5vbmU6CisgICAgICAgIGlmIHNlbGYuaXRlbW51bWJlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGFyZ3MgPSBzZWxmLml0ZW1udW1iZXIgKyAnLiAnICsgYXJncwogICAgICAgICAgICAgc2VsZi5pdGVtbnVtYmVyID0gaW5jcmVtZW50KHNlbGYuaXRlbW51bWJlcikKICAgICAgICAgaWYgc2VsZi5zdGFjayBhbmQgc2VsZi5zdGFja1stMV0gPT0gJ3RhYmxlJzoKZGlmZiAtLWdpdCBhL1Rvb2xzL3NzbC9tYWtlX3NzbF9kYXRhLnB5IGIvVG9vbHMvc3NsL21ha2Vfc3NsX2RhdGEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAyNDRkMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3NzbC9tYWtlX3NzbF9kYXRhLnB5CkBAIC0wLDAgKzEsNjggQEAKKyMhIC91c3IvYmluL2VudiBweXRob24zCisKKyIiIgorVGhpcyBzY3JpcHQgc2hvdWxkIGJlIGNhbGxlZCAqbWFudWFsbHkqIHdoZW4gd2Ugd2FudCB0byB1cGdyYWRlIFNTTEVycm9yCitgbGlicmFyeWAgYW5kIGByZWFzb25gIG1uZW1ub25pY3MgdG8gYSBtb3JlIHJlY2VudCBPcGVuU1NMIHZlcnNpb24uCisKK0l0IHRha2VzIHR3byBhcmd1bWVudHM6CistIHRoZSBwYXRoIHRvIHRoZSBPcGVuU1NMIGluY2x1ZGUgZmlsZXMnIGRpcmVjdG9yeQorICAoZS5nLiBvcGVuc3NsLTEuMC4xLWJldGEzL2luY2x1ZGUvb3BlbnNzbC8pCistIHRoZSBwYXRoIHRvIHRoZSBDIGZpbGUgdG8gYmUgZ2VuZXJhdGVkCisgIChwcm9iYWJseSBNb2R1bGVzL19zc2xfZGF0YS5oKQorIiIiCisKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKworCitkZWYgcGFyc2VfZXJyb3JfY29kZXMoaF9maWxlLCBwcmVmaXgpOgorICAgIHBhdCA9IHJlLmNvbXBpbGUociIjZGVmaW5lXFcrKCVzKFtcd10rKSlcVysoXGQrKVxiIiAlIHJlLmVzY2FwZShwcmVmaXgpKQorICAgIGNvZGVzID0gW10KKyAgICB3aXRoIG9wZW4oaF9maWxlLCAiciIsIGVuY29kaW5nPSJsYXRpbjEiKSBhcyBmOgorICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgbWF0Y2ggPSBwYXQuc2VhcmNoKGxpbmUpCisgICAgICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAgICAgICBjb2RlLCBuYW1lLCBudW0gPSBtYXRjaC5ncm91cHMoKQorICAgICAgICAgICAgICAgIG51bSA9IGludChudW0pCisgICAgICAgICAgICAgICAgY29kZXMuYXBwZW5kKChjb2RlLCBuYW1lLCBudW0pKQorICAgIHJldHVybiBjb2RlcworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIG9wZW5zc2xfaW5jID0gc3lzLmFyZ3ZbMV0KKyAgICBvdXRmaWxlID0gc3lzLmFyZ3ZbMl0KKyAgICB1c2Vfc3Rkb3V0ID0gb3V0ZmlsZSA9PSAnLScKKyAgICBmID0gc3lzLnN0ZG91dCBpZiB1c2Vfc3Rkb3V0IGVsc2Ugb3BlbihvdXRmaWxlLCAidyIpCisgICAgZXJyb3JfbGlicmFyaWVzID0gKAorICAgICAgICAjIChsaWJyYXJ5IGNvZGUsIG1uZW1vbmljLCBlcnJvciBwcmVmaXgsIGhlYWRlciBmaWxlKQorICAgICAgICAoJ0VSUl9MSUJfUEVNJywgJ1BFTScsICdQRU1fUl8nLCAncGVtLmgnKSwKKyAgICAgICAgKCdFUlJfTElCX1NTTCcsICdTU0wnLCAnU1NMX1JfJywgJ3NzbC5oJyksCisgICAgICAgICgnRVJSX0xJQl9YNTA5JywgJ1g1MDknLCAnWDUwOV9SXycsICd4NTA5LmgnKSwKKyAgICAgICAgKQorICAgIGRlZiB3KGwpOgorICAgICAgICBmLndyaXRlKGwgKyAiXG4iKQorICAgIHcoIi8qIEZpbGUgZ2VuZXJhdGVkIGJ5IFRvb2xzL3NzbC9tYWtlX3NzbF9kYXRhLnB5ICovIikKKyAgICB3KCIvKiBHZW5lcmF0ZWQgb24gJXMgKi8iICUgZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkuaXNvZm9ybWF0KCkpCisgICAgdygiIikKKworICAgIHcoInN0YXRpYyBzdHJ1Y3QgcHlfc3NsX2xpYnJhcnlfY29kZSBsaWJyYXJ5X2NvZGVzW10gPSB7IikKKyAgICBmb3IgbGliY29kZSwgbW5lbW8sIF8sIF8gaW4gZXJyb3JfbGlicmFyaWVzOgorICAgICAgICB3KCcgICAgeyIlcyIsICVzfSwnICUgKG1uZW1vLCBsaWJjb2RlKSkKKyAgICB3KCcgICAgeyBOVUxMIH0nKQorICAgIHcoJ307JykKKyAgICB3KCIiKQorCisgICAgdygic3RhdGljIHN0cnVjdCBweV9zc2xfZXJyb3JfY29kZSBlcnJvcl9jb2Rlc1tdID0geyIpCisgICAgZm9yIGxpYmNvZGUsIF8sIHByZWZpeCwgaF9maWxlIGluIGVycm9yX2xpYnJhcmllczoKKyAgICAgICAgY29kZXMgPSBwYXJzZV9lcnJvcl9jb2Rlcyhvcy5wYXRoLmpvaW4ob3BlbnNzbF9pbmMsIGhfZmlsZSksIHByZWZpeCkKKyAgICAgICAgZm9yIGNvZGUsIG5hbWUsIG51bSBpbiBzb3J0ZWQoY29kZXMpOgorICAgICAgICAgICAgdygnICAjaWZkZWYgJXMnICUgKGNvZGUpKQorICAgICAgICAgICAgdygnICAgIHsiJXMiLCAlcywgJXN9LCcgJSAobmFtZSwgbGliY29kZSwgY29kZSkpCisgICAgICAgICAgICB3KCcgICNlbHNlJykKKyAgICAgICAgICAgIHcoJyAgICB7IiVzIiwgJXMsICVkfSwnICUgKG5hbWUsIGxpYmNvZGUsIG51bSkpCisgICAgICAgICAgICB3KCcgICNlbmRpZicpCisgICAgdygnICAgIHsgTlVMTCB9JykKKyAgICB3KCd9OycpCisgICAgaWYgbm90IHVzZV9zdGRvdXQ6CisgICAgICAgIGYuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc3RyaW5nYmVuY2gvUkVBRE1FIGIvVG9vbHMvc3RyaW5nYmVuY2gvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyNzFmMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9zdHJpbmdiZW5jaC9SRUFETUUKQEAgLTAsMCArMSw2OCBAQAorc3RyaW5nYmVuY2ggaXMgYSBzZXQgb2YgcGVyZm9ybWFuY2UgdGVzdHMgY29tcGFyaW5nIGJ5dGUgc3RyaW5nCitvcGVyYXRpb25zIHdpdGggdW5pY29kZSBvcGVyYXRpb25zLiAgVGhlIHR3byBzdHJpbmcgaW1wbGVtZW50YXRpb25zCithcmUgbG9vc2VseSBiYXNlZCBvbiBlYWNoIG90aGVyIGFuZCBzb21ldGltZXMgdGhlIGFsZ29yaXRobSBmb3Igb25lIGlzCitmYXN0ZXIgdGhhbiB0aGUgb3RoZXIuCisKK1RoZXNlIHRlc3Qgc2V0IHdhcyBzdGFydGVkIGF0IHRoZSBOZWVkIEZvciBTcGVlZCBzcHJpbnQgaW4gUmV5a2phdmlrCit0byBpZGVudGlmeSB3aGljaCBzdHJpbmcgbWV0aG9kcyBjb3VsZCBiZSBzcGVkIHVwIHF1aWNrbHkgYW5kIHRvCitpZGVudGlmeSBvYnZpb3VzIHBsYWNlcyBmb3IgaW1wcm92ZW1lbnQuCisKK0hlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIGJlbmNobWFyaworCisKK0BiZW5jaCgnIkFuZHJldyIuc3RhcnRzd2l0aCgiQSIpJywgJ3N0YXJ0c3dpdGggc2luZ2xlIGNoYXJhY3RlcicsIDEwMDApCitkZWYgc3RhcnRzd2l0aF9zaW5nbGUoU1RSKToKKyAgICBzMSA9IFNUUigiQW5kcmV3IikKKyAgICBzMiA9IFNUUigiQSIpCisgICAgczFfc3RhcnRzd2l0aCA9IHMxLnN0YXJ0c3dpdGgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfc3RhcnRzd2l0aChzMikKKworVGhlIGJlbmNoIGRlY29yYXRvciB0YWtlcyB0aHJlZSBwYXJhbWV0ZXJzLiAgVGhlIGZpcnN0IGlzIGEgc2hvcnQKK2Rlc2NyaXB0aW9uIG9mIGhvdyB0aGUgY29kZSB3b3Jrcy4gIEluIG1vc3QgY2FzZXMgdGhpcyBpcyBQeXRob24gY29kZQorc25pcHBldC4gIEl0IGlzIG5vdCB0aGUgY29kZSB3aGljaCBpcyBhY3R1YWxseSBydW4gYmVjYXVzZSB0aGUgcmVhbAorY29kZSBpcyBoYW5kLW9wdGltaXplZCB0byBmb2N1cyBvbiB0aGUgbWV0aG9kIGJlaW5nIHRlc3RlZC4KKworVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgYSBncm91cCB0aXRsZS4gIEFsbCBiZW5jaG1hcmtzIHdpdGggdGhlIHNhbWUKK2dyb3VwIHRpdGxlIGFyZSBsaXN0ZWQgdG9nZXRoZXIuICBUaGlzIGxldHMgeW91IGNvbXBhcmUgZGlmZmVyZW50CitpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHNhbWUgYWxnb3JpdGhtLCBzdWNoIGFzICJ0IGluIHMiCit2cy4gInMuZmluZCh0KSIuCisKK1RoZSBsYXN0IGlzIGEgY291bnQuICBFYWNoIGJlbmNobWFyayBsb29wcyBvdmVyIHRoZSBhbGdvcml0aG0gZWl0aGVyCisxMDAgb3IgMTAwMCB0aW1lcywgZGVwZW5kaW5nIG9uIHRoZSBhbGdvcml0aG0gcGVyZm9ybWFuY2UuICBUaGUgb3V0cHV0Cit0aW1lIGlzIHRoZSB0aW1lIHBlciBiZW5jaG1hcmsgY2FsbCBzbyB0aGUgcmVhZGVyIG5lZWRzIGEgd2F5IHRvIGtub3cKK2hvdyB0byBzY2FsZSB0aGUgcGVyZm9ybWFuY2UuCisKK1RoZXNlIHBhcmFtZXRlcnMgYmVjb21lIGZ1bmN0aW9uIGF0dHJpYnV0ZXMuCisKKworSGVyZSBpcyBhbiBleGFtcGxlIG9mIHRoZSBvdXRwdXQKKworCis9PT09PT09PT09IGNvdW50IG5ld2xpbmVzCiszOC41NCAgIDQxLjYwICAgOTIuNyAgICAuLi50ZXh0LndpdGguMjAwMC5uZXdsaW5lcy5jb3VudCgiXG4iKSAoKjEwMCkKKz09PT09PT09PT0gZWFybHkgbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIKKzEuMTQgICAgMS4xOCAgICA5Ni44ICAgICgiQSIqMTAwMCkuZmluZCgiQSIpICgqMTAwMCkKKzAuNDQgICAgMC40MSAgICAxMDUuNiAgICJBIiBpbiAiQSIqMTAwMCAoKjEwMDApCisxLjE1ICAgIDEuMTcgICAgOTguMSAgICAoIkEiKjEwMDApLmluZGV4KCJBIikgKCoxMDAwKQorCitUaGUgZmlyc3QgY29sdW1uIGlzIHRoZSBydW4gdGltZSBpbiBtaWxsaXNlY29uZHMgZm9yIGJ5dGUgc3RyaW5ncy4KK1RoZSBzZWNvbmQgaXMgdGhlIHJ1biB0aW1lIGZvciB1bmljb2RlIHN0cmluZ3MuICBUaGUgdGhpcmQgaXMgYQorcGVyY2VudGFnZTsgYnl0ZSB0aW1lIC8gdW5pY29kZSB0aW1lLiAgSXQncyB0aGUgcGVyY2VudGFnZSBieSB3aGljaAordW5pY29kZSBpcyBmYXN0ZXIgdGhhbiBieXRlIHN0cmluZ3MuCisKK1RoZSBsYXN0IGNvbHVtbiBjb250YWlucyB0aGUgY29kZSBzbmlwcGV0IGFuZCB0aGUgcmVwZWF0IGNvdW50IGZvciB0aGUKK2ludGVybmFsIGJlbmNobWFyayBsb29wLgorCitUaGUgdGltZXMgYXJlIGNvbXB1dGVkIHdpdGggJ3RpbWVpdC5weScgd2hpY2ggcmVwZWF0cyB0aGUgdGVzdCBtb3JlCithbmQgbW9yZSB0aW1lcyB1bnRpbCB0aGUgdG90YWwgdGltZSB0YWtlcyBvdmVyIDAuMiBzZWNvbmRzLCByZXR1cm5pbmcKK3RoZSBiZXN0IHRpbWUgZm9yIGEgc2luZ2xlIGl0ZXJhdGlvbi4KKworVGhlIGZpbmFsIGxpbmUgb2YgdGhlIG91dHB1dCBpcyB0aGUgY3VtdWxhdGl2ZSB0aW1lIGZvciBieXRlIGFuZAordW5pY29kZSBzdHJpbmdzLCBhbmQgdGhlIG92ZXJhbGwgcGVyZm9ybWFuY2Ugb2YgdW5pY29kZSByZWxhdGl2ZSB0bworYnl0ZXMuICBGb3IgZXhhbXBsZQorCis0MDc5LjgzIDU0MzIuMjUgNzUuMSAgICBUT1RBTAorCitIb3dldmVyLCB0aGlzIGhhcyBubyBtZWFuaW5nIGFzIGl0IGV2ZW5seSB3ZWlnaHRzIGV2ZXJ5IHRlc3QuCisKZGlmZiAtLWdpdCBhL1Rvb2xzL3N0cmluZ2JlbmNoL3N0cmluZ2JlbmNoLnB5IGIvVG9vbHMvc3RyaW5nYmVuY2gvc3RyaW5nYmVuY2gucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYTBhMjFmYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3N0cmluZ2JlbmNoL3N0cmluZ2JlbmNoLnB5CkBAIC0wLDAgKzEsMTQ4MiBAQAorCisjIFZhcmlvdXMgbWljcm9iZW5jaG1hcmtzIGNvbXBhcmluZyB1bmljb2RlIGFuZCBieXRlIHN0cmluZyBwZXJmb3JtYW5jZQorIyBQbGVhc2Uga2VlcCB0aGlzIGZpbGUgYm90aCAyLnggYW5kIDMueCBjb21wYXRpYmxlIQorCitpbXBvcnQgdGltZWl0CitpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgb3BlcmF0b3IKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgb3B0cGFyc2UKKworVkVSU0lPTiA9ICcyLjAnCisKK2RlZiBwKCphcmdzKToKKyAgICBzeXMuc3Rkb3V0LndyaXRlKCcgJy5qb2luKHN0cihzKSBmb3IgcyBpbiBhcmdzKSArICdcbicpCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsKToKKyAgICBCWVRFUyA9IGJ5dGVzX2Zyb21fc3RyID0gbGFtYmRhIHg6IHguZW5jb2RlKCdhc2NpaScpCisgICAgVU5JQ09ERSA9IHVuaWNvZGVfZnJvbV9zdHIgPSBsYW1iZGEgeDogeAorZWxzZToKKyAgICBCWVRFUyA9IGJ5dGVzX2Zyb21fc3RyID0gbGFtYmRhIHg6IHgKKyAgICBVTklDT0RFID0gdW5pY29kZV9mcm9tX3N0ciA9IGxhbWJkYSB4OiB4LmRlY29kZSgnYXNjaWknKQorCitjbGFzcyBVbnN1cHBvcnRlZFR5cGUoVHlwZUVycm9yKToKKyAgICBwYXNzCisKKworcCgnc3RyaW5nYmVuY2ggdiVzJyAlIFZFUlNJT04pCitwKHN5cy52ZXJzaW9uKQorcChkYXRldGltZS5kYXRldGltZS5ub3coKSkKKworUkVQRUFUID0gMQorUkVQRUFUID0gMworI1JFUEVBVCA9IDcKKworaWYgX19uYW1lX18gIT0gIl9fbWFpbl9fIjoKKyAgICByYWlzZSBTeXN0ZW1FeGl0KCJNdXN0IHJ1biBhcyBtYWluIHByb2dyYW0iKQorCitwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQorcGFyc2VyLmFkZF9vcHRpb24oIi1SIiwgIi0tc2tpcC1yZSIsIGRlc3Q9InNraXBfcmUiLAorICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgICAgICAgICAgIGhlbHA9InNraXAgcmVndWxhciBleHByZXNzaW9uIHRlc3RzIikKK3BhcnNlci5hZGRfb3B0aW9uKCItOCIsICItLTgtYml0IiwgZGVzdD0iYnl0ZXNfb25seSIsCisgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAgICAgaGVscD0ib25seSBkbyA4LWJpdCBzdHJpbmcgYmVuY2htYXJrcyIpCitwYXJzZXIuYWRkX29wdGlvbigiLXUiLCAiLS11bmljb2RlIiwgZGVzdD0idW5pY29kZV9vbmx5IiwKKyAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICBoZWxwPSJvbmx5IGRvIFVuaWNvZGUgc3RyaW5nIGJlbmNobWFya3MiKQorCisKK19SQU5HRV8xMDAwID0gbGlzdChyYW5nZSgxMDAwKSkKK19SQU5HRV8xMDAgPSBsaXN0KHJhbmdlKDEwMCkpCitfUkFOR0VfMTAgPSBsaXN0KHJhbmdlKDEwKSkKKworZHVwcyA9IHt9CitkZWYgYmVuY2gocywgZ3JvdXAsIHJlcGVhdF9jb3VudCk6CisgICAgZGVmIGJsYWgoZik6CisgICAgICAgIGlmIGYuX19uYW1lX18gaW4gZHVwczoKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJNdWx0aXBsZSBmdW5jdGlvbnMgd2l0aCBzYW1lIG5hbWU6ICVyIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZi5fX25hbWVfXywpKQorICAgICAgICBkdXBzW2YuX19uYW1lX19dID0gMQorICAgICAgICBmLmNvbW1lbnQgPSBzCisgICAgICAgIGYuaXNfYmVuY2ggPSBUcnVlCisgICAgICAgIGYuZ3JvdXAgPSBncm91cAorICAgICAgICBmLnJlcGVhdF9jb3VudCA9IHJlcGVhdF9jb3VudAorICAgICAgICByZXR1cm4gZgorICAgIHJldHVybiBibGFoCisKK2RlZiB1c2VzX3JlKGYpOgorICAgIGYudXNlc19yZSA9IFRydWUKKworIyMjIyMjIyAnaW4nIGNvbXBhcmlzb25zCisKK0BiZW5jaCgnIkEiIGluICJBIioxMDAwJywgImVhcmx5IG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBpbl90ZXN0X3F1aWNrX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczIgaW4gczEKKworQGJlbmNoKCciQiIgaW4gIkEiKjEwMDAnLCAibm8gbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIGluX3Rlc3Rfbm9fbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkIiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMiBpbiBzMQorCisKK0BiZW5jaCgnIkFCIiBpbiAiQUIiKjEwMDAnLCAiZWFybHkgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBpbl90ZXN0X3F1aWNrX21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkFCIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczIgaW4gczEKKworQGJlbmNoKCciQkMiIGluICJBQiIqMTAwMCcsICJubyBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIGluX3Rlc3Rfbm9fbWF0Y2hfdHdvX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMyIGluIHMxCisKK0BiZW5jaCgnIkJDIiBpbiAoIkFCIiozMDArIkMiKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgaW5fdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDMwMCsiQyIpCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczIgaW4gczEKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAocysiRSIpIGluICgocysiRCIpKjMwMCtzKyJFIiknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiBpbl90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gKG0rZCkqMzAwICsgbStlCisgICAgczIgPSBtK2UKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMiBpbiBzMQorCisjIFRyeSB3aXRoIHJlZ2V4CitAdXNlc19yZQorQGJlbmNoKCdzPSJBQkMiKjMzOyByZS5jb21waWxlKHMrIkQiKS5zZWFyY2goKHMrIkQiKSozMDArcysiRSIpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgcmVfdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IChtK2QpKjMwMCArIG0rZQorICAgIHMyID0gbStlCisgICAgcGF0ID0gcmUuY29tcGlsZShzMikKKyAgICBzZWFyY2ggPSBwYXQuc2VhcmNoCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgc2VhcmNoKHMxKQorCisKKyMjIyMgc2FtZSB0ZXN0cyBhcyAnaW4nIGJ1dCB1c2UgJ2ZpbmQnCisKK0BiZW5jaCgnKCJBIioxMDAwKS5maW5kKCJBIiknLCAiZWFybHkgbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIGZpbmRfdGVzdF9xdWlja19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQSIpCisgICAgczFfZmluZCA9IHMxLmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfZmluZChzMikKKworQGJlbmNoKCcoIkEiKjEwMDApLmZpbmQoIkIiKScsICJubyBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgZmluZF90ZXN0X25vX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCIikKKyAgICBzMV9maW5kID0gczEuZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9maW5kKHMyKQorCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkuZmluZCgiQUIiKScsICJlYXJseSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIGZpbmRfdGVzdF9xdWlja19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBQiIpCisgICAgczFfZmluZCA9IHMxLmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfZmluZChzMikKKworQGJlbmNoKCcoIkFCIioxMDAwKS5maW5kKCJCQyIpJywgIm5vIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgZmluZF90ZXN0X25vX21hdGNoX3R3b19jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX2ZpbmQgPSBzMS5maW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2ZpbmQoczIpCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkuZmluZCgiQ0EiKScsICJubyBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIGZpbmRfdGVzdF9ub19tYXRjaF90d29fY2hhcmFjdGVyX2JpcyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJDQSIpCisgICAgczFfZmluZCA9IHMxLmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfZmluZChzMikKKworQGJlbmNoKCcoIkFCIiozMDArIkMiKS5maW5kKCJCQyIpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBmaW5kX3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAzMDArIkMiKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfZmluZCA9IHMxLmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfZmluZChzMikKKworQGJlbmNoKCcoIkFCIiozMDArIkNBIikuZmluZCgiQ0EiKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgZmluZF90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnNfYmlzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDMwMCsiQ0EiKQorICAgIHMyID0gU1RSKCJDQSIpCisgICAgczFfZmluZCA9IHMxLmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfZmluZChzMikKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAoKHMrIkQiKSo1MDArcysiRSIpLmZpbmQocysiRSIpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgZmluZF90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gKG0rZCkqNTAwICsgbStlCisgICAgczIgPSBtK2UKKyAgICBzMV9maW5kID0gczEuZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMxX2ZpbmQoczIpCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKChzKyJEIikqNTAwKyJFIitzKS5maW5kKCJFIitzKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIGZpbmRfdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzX2JpcyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSAobStkKSo1MDAgKyBlK20KKyAgICBzMiA9IGUrbQorICAgIHMxX2ZpbmQgPSBzMS5maW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczFfZmluZChzMikKKworCisjIyMjIFNhbWUgdGVzdHMgZm9yICdyZmluZCcKKworQGJlbmNoKCcoIkEiKjEwMDApLnJmaW5kKCJBIiknLCAiZWFybHkgbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHJmaW5kX3Rlc3RfcXVpY2tfbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkEiKQorICAgIHMxX3JmaW5kID0gczEucmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcmZpbmQoczIpCisKK0BiZW5jaCgnKCJBIioxMDAwKS5yZmluZCgiQiIpJywgIm5vIG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiByZmluZF90ZXN0X25vX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCIikKKyAgICBzMV9yZmluZCA9IHMxLnJmaW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JmaW5kKHMyKQorCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkucmZpbmQoIkFCIiknLCAiZWFybHkgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiByZmluZF90ZXN0X3F1aWNrX21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkFCIikKKyAgICBzMV9yZmluZCA9IHMxLnJmaW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JmaW5kKHMyKQorCitAYmVuY2goJygiQUIiKjEwMDApLnJmaW5kKCJCQyIpJywgIm5vIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcmZpbmRfdGVzdF9ub19tYXRjaF90d29fY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9yZmluZCA9IHMxLnJmaW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JmaW5kKHMyKQorCitAYmVuY2goJygiQUIiKjEwMDApLnJmaW5kKCJDQSIpJywgIm5vIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcmZpbmRfdGVzdF9ub19tYXRjaF90d29fY2hhcmFjdGVyX2JpcyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJDQSIpCisgICAgczFfcmZpbmQgPSBzMS5yZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yZmluZChzMikKKworQGJlbmNoKCcoIkMiKyJBQiIqMzAwKS5yZmluZCgiQ0EiKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcmZpbmRfdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkMiICsgIkFCIiAqIDMwMCkKKyAgICBzMiA9IFNUUigiQ0EiKQorICAgIHMxX3JmaW5kID0gczEucmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcmZpbmQoczIpCisKK0BiZW5jaCgnKCJCQyIrIkFCIiozMDApLnJmaW5kKCJCQyIpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiByZmluZF90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnNfYmlzKFNUUik6CisgICAgczEgPSBTVFIoIkJDIiArICJBQiIgKiAzMDApCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9yZmluZCA9IHMxLnJmaW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JmaW5kKHMyKQorCitAYmVuY2goJ3M9IkFCQyIqMzM7ICgiRSIrcysoIkQiK3MpKjUwMCkucmZpbmQoIkUiK3MpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgcmZpbmRfdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IGUrbSArIChkK20pKjUwMAorICAgIHMyID0gZSttCisgICAgczFfcmZpbmQgPSBzMS5yZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMxX3JmaW5kKHMyKQorCitAYmVuY2goJ3M9IkFCQyIqMzM7IChzKyJFIisoIkQiK3MpKjUwMCkucmZpbmQocysiRSIpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgcmZpbmRfdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzX2JpcyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSBtK2UgKyAoZCttKSo1MDAKKyAgICBzMiA9IG0rZQorICAgIHMxX3JmaW5kID0gczEucmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMV9yZmluZChzMikKKworCisjIyMjIE5vdyB3aXRoIGluZGV4LgorIyBTa2lwIHRoZSBvbmVzIHdoaWNoIGZhaWwgYmVjYXVzZSB0aGF0IHdvdWxkIGluY2x1ZGUgZXhjZXB0aW9uIG92ZXJoZWFkLgorCitAYmVuY2goJygiQSIqMTAwMCkuaW5kZXgoIkEiKScsICJlYXJseSBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgaW5kZXhfdGVzdF9xdWlja19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQSIpCisgICAgczFfaW5kZXggPSBzMS5pbmRleAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9pbmRleChzMikKKworQGJlbmNoKCcoIkFCIioxMDAwKS5pbmRleCgiQUIiKScsICJlYXJseSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIGluZGV4X3Rlc3RfcXVpY2tfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQUIiKQorICAgIHMxX2luZGV4ID0gczEuaW5kZXgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfaW5kZXgoczIpCisKK0BiZW5jaCgnKCJBQiIqMzAwKyJDIikuaW5kZXgoIkJDIiknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIGluZGV4X3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAzMDArIkMiKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfaW5kZXggPSBzMS5pbmRleAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9pbmRleChzMikKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAoKHMrIkQiKSo1MDArcysiRSIpLmluZGV4KHMrIkUiKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIGluZGV4X3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVycyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSAobStkKSo1MDAgKyBtK2UKKyAgICBzMiA9IG0rZQorICAgIHMxX2luZGV4ID0gczEuaW5kZXgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMV9pbmRleChzMikKKworCisjIyMjIFNhbWUgZm9yIHJpbmRleAorCitAYmVuY2goJygiQSIqMTAwMCkucmluZGV4KCJBIiknLCAiZWFybHkgbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHJpbmRleF90ZXN0X3F1aWNrX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBzMV9yaW5kZXggPSBzMS5yaW5kZXgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcmluZGV4KHMyKQorCitAYmVuY2goJygiQUIiKjEwMDApLnJpbmRleCgiQUIiKScsICJlYXJseSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJpbmRleF90ZXN0X3F1aWNrX21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkFCIikKKyAgICBzMV9yaW5kZXggPSBzMS5yaW5kZXgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcmluZGV4KHMyKQorCitAYmVuY2goJygiQyIrIkFCIiozMDApLnJpbmRleCgiQ0EiKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcmluZGV4X3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJDIiArICJBQiIgKiAzMDApCisgICAgczIgPSBTVFIoIkNBIikKKyAgICBzMV9yaW5kZXggPSBzMS5yaW5kZXgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcmluZGV4KHMyKQorCitAYmVuY2goJ3M9IkFCQyIqMzM7ICgiRSIrcysoIkQiK3MpKjUwMCkucmluZGV4KCJFIitzKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIHJpbmRleF90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gZSArIG0gKyAoZCttKSo1MDAKKyAgICBzMiA9IGUgKyBtCisgICAgczFfcmluZGV4ID0gczEucmluZGV4CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczFfcmluZGV4KHMyKQorCisKKyMjIyMgU2FtZSBmb3IgcGFydGl0aW9uCisKK0BiZW5jaCgnKCJBIioxMDAwKS5wYXJ0aXRpb24oIkEiKScsICJlYXJseSBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgcGFydGl0aW9uX3Rlc3RfcXVpY2tfbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkEiKQorICAgIHMxX3BhcnRpdGlvbiA9IHMxLnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9wYXJ0aXRpb24oczIpCisKK0BiZW5jaCgnKCJBIioxMDAwKS5wYXJ0aXRpb24oIkIiKScsICJubyBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgcGFydGl0aW9uX3Rlc3Rfbm9fbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkIiKQorICAgIHMxX3BhcnRpdGlvbiA9IHMxLnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9wYXJ0aXRpb24oczIpCisKKworQGJlbmNoKCcoIkFCIioxMDAwKS5wYXJ0aXRpb24oIkFCIiknLCAiZWFybHkgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBwYXJ0aXRpb25fdGVzdF9xdWlja19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBQiIpCisgICAgczFfcGFydGl0aW9uID0gczEucGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3BhcnRpdGlvbihzMikKKworQGJlbmNoKCcoIkFCIioxMDAwKS5wYXJ0aXRpb24oIkJDIiknLCAibm8gbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBwYXJ0aXRpb25fdGVzdF9ub19tYXRjaF90d29fY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9wYXJ0aXRpb24gPSBzMS5wYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcGFydGl0aW9uKHMyKQorCitAYmVuY2goJygiQUIiKjMwMCsiQyIpLnBhcnRpdGlvbigiQkMiKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcGFydGl0aW9uX3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAzMDArIkMiKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfcGFydGl0aW9uID0gczEucGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3BhcnRpdGlvbihzMikKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAoKHMrIkQiKSo1MDArcysiRSIpLnBhcnRpdGlvbihzKyJFIiknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiBwYXJ0aXRpb25fdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IChtK2QpKjUwMCArIG0rZQorICAgIHMyID0gbStlCisgICAgczFfcGFydGl0aW9uID0gczEucGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczFfcGFydGl0aW9uKHMyKQorCisKKyMjIyMgU2FtZSBmb3IgcnBhcnRpdGlvbgorCitAYmVuY2goJygiQSIqMTAwMCkucnBhcnRpdGlvbigiQSIpJywgImVhcmx5IG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBycGFydGl0aW9uX3Rlc3RfcXVpY2tfbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkEiKQorICAgIHMxX3JwYXJ0aXRpb24gPSBzMS5ycGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JwYXJ0aXRpb24oczIpCisKK0BiZW5jaCgnKCJBIioxMDAwKS5ycGFydGl0aW9uKCJCIiknLCAibm8gbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHJwYXJ0aXRpb25fdGVzdF9ub19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQiIpCisgICAgczFfcnBhcnRpdGlvbiA9IHMxLnJwYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcnBhcnRpdGlvbihzMikKKworCitAYmVuY2goJygiQUIiKjEwMDApLnJwYXJ0aXRpb24oIkFCIiknLCAiZWFybHkgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBycGFydGl0aW9uX3Rlc3RfcXVpY2tfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQUIiKQorICAgIHMxX3JwYXJ0aXRpb24gPSBzMS5ycGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JwYXJ0aXRpb24oczIpCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkucnBhcnRpdGlvbigiQkMiKScsICJubyBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJwYXJ0aXRpb25fdGVzdF9ub19tYXRjaF90d29fY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9ycGFydGl0aW9uID0gczEucnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9ycGFydGl0aW9uKHMyKQorCitAYmVuY2goJygiQyIrIkFCIiozMDApLnJwYXJ0aXRpb24oIkNBIiknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJwYXJ0aXRpb25fdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkMiICsgIkFCIiAqIDMwMCkKKyAgICBzMiA9IFNUUigiQ0EiKQorICAgIHMxX3JwYXJ0aXRpb24gPSBzMS5ycGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JwYXJ0aXRpb24oczIpCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKCJFIitzKygiRCIrcykqNTAwKS5ycGFydGl0aW9uKCJFIitzKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIHJwYXJ0aXRpb25fdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IGUgKyBtICsgKGQrbSkqNTAwCisgICAgczIgPSBlICsgbQorICAgIHMxX3JwYXJ0aXRpb24gPSBzMS5ycGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczFfcnBhcnRpdGlvbihzMikKKworCisjIyMjIFNhbWUgZm9yIHNwbGl0KHMsIDEpCisKK0BiZW5jaCgnKCJBIioxMDAwKS5zcGxpdCgiQSIsIDEpJywgImVhcmx5IG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBzcGxpdF90ZXN0X3F1aWNrX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBzMV9zcGxpdCA9IHMxLnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3NwbGl0KHMyLCAxKQorCitAYmVuY2goJygiQSIqMTAwMCkuc3BsaXQoIkIiLCAxKScsICJubyBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgc3BsaXRfdGVzdF9ub19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQiIpCisgICAgczFfc3BsaXQgPSBzMS5zcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9zcGxpdChzMiwgMSkKKworCitAYmVuY2goJygiQUIiKjEwMDApLnNwbGl0KCJBQiIsIDEpJywgImVhcmx5IG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgc3BsaXRfdGVzdF9xdWlja19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBQiIpCisgICAgczFfc3BsaXQgPSBzMS5zcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9zcGxpdChzMiwgMSkKKworQGJlbmNoKCcoIkFCIioxMDAwKS5zcGxpdCgiQkMiLCAxKScsICJubyBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHNwbGl0X3Rlc3Rfbm9fbWF0Y2hfdHdvX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfc3BsaXQgPSBzMS5zcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9zcGxpdChzMiwgMSkKKworQGJlbmNoKCcoIkFCIiozMDArIkMiKS5zcGxpdCgiQkMiLCAxKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgc3BsaXRfdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDMwMCsiQyIpCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9zcGxpdCA9IHMxLnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3NwbGl0KHMyLCAxKQorCitAYmVuY2goJ3M9IkFCQyIqMzM7ICgocysiRCIpKjUwMCtzKyJFIikuc3BsaXQocysiRSIsIDEpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgc3BsaXRfdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IChtK2QpKjUwMCArIG0rZQorICAgIHMyID0gbStlCisgICAgczFfc3BsaXQgPSBzMS5zcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMxX3NwbGl0KHMyLCAxKQorCisKKyMjIyMgU2FtZSBmb3IgcnNwbGl0KHMsIDEpCisKK0BiZW5jaCgnKCJBIioxMDAwKS5yc3BsaXQoIkEiLCAxKScsICJlYXJseSBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgcnNwbGl0X3Rlc3RfcXVpY2tfbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkEiKQorICAgIHMxX3JzcGxpdCA9IHMxLnJzcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yc3BsaXQoczIsIDEpCisKK0BiZW5jaCgnKCJBIioxMDAwKS5yc3BsaXQoIkIiLCAxKScsICJubyBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgcnNwbGl0X3Rlc3Rfbm9fbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkIiKQorICAgIHMxX3JzcGxpdCA9IHMxLnJzcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yc3BsaXQoczIsIDEpCisKKworQGJlbmNoKCcoIkFCIioxMDAwKS5yc3BsaXQoIkFCIiwgMSknLCAiZWFybHkgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiByc3BsaXRfdGVzdF9xdWlja19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBQiIpCisgICAgczFfcnNwbGl0ID0gczEucnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JzcGxpdChzMiwgMSkKKworQGJlbmNoKCcoIkFCIioxMDAwKS5yc3BsaXQoIkJDIiwgMSknLCAibm8gbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiByc3BsaXRfdGVzdF9ub19tYXRjaF90d29fY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9yc3BsaXQgPSBzMS5yc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcnNwbGl0KHMyLCAxKQorCitAYmVuY2goJygiQyIrIkFCIiozMDApLnJzcGxpdCgiQ0EiLCAxKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcnNwbGl0X3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJDIiArICJBQiIgKiAzMDApCisgICAgczIgPSBTVFIoIkNBIikKKyAgICBzMV9yc3BsaXQgPSBzMS5yc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcnNwbGl0KHMyLCAxKQorCitAYmVuY2goJ3M9IkFCQyIqMzM7ICgiRSIrcysoIkQiK3MpKjUwMCkucnNwbGl0KCJFIitzLCAxKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIHJzcGxpdF90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gZSArIG0gKyAoZCttKSo1MDAKKyAgICBzMiA9IGUgKyBtCisgICAgczFfcnNwbGl0ID0gczEucnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczFfcnNwbGl0KHMyLCAxKQorCisKKyMjIyMgQmVuY2htYXJrIHRoZSBvcGVyYXRvci1iYXNlZCBtZXRob2RzCisKK0BiZW5jaCgnIkEiKjEwJywgInJlcGVhdCAxIGNoYXJhY3RlciAxMCB0aW1lcyIsIDEwMDApCitkZWYgcmVwZWF0X3NpbmdsZV8xMF90aW1lcyhTVFIpOgorICAgIHMgPSBTVFIoIkEiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzICogMTAKKworQGJlbmNoKCciQSIqMTAwMCcsICJyZXBlYXQgMSBjaGFyYWN0ZXIgMTAwMCB0aW1lcyIsIDEwMDApCitkZWYgcmVwZWF0X3NpbmdsZV8xMDAwX3RpbWVzKFNUUik6CisgICAgcyA9IFNUUigiQSIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMgKiAxMDAwCisKK0BiZW5jaCgnIkFCQ0RFIioxMCcsICJyZXBlYXQgNSBjaGFyYWN0ZXJzIDEwIHRpbWVzIiwgMTAwMCkKK2RlZiByZXBlYXRfNV8xMF90aW1lcyhTVFIpOgorICAgIHMgPSBTVFIoIkFCQ0RFIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgcyAqIDEwCisKK0BiZW5jaCgnIkFCQ0RFIioxMDAwJywgInJlcGVhdCA1IGNoYXJhY3RlcnMgMTAwMCB0aW1lcyIsIDEwMDApCitkZWYgcmVwZWF0XzVfMTAwMF90aW1lcyhTVFIpOgorICAgIHMgPSBTVFIoIkFCQ0RFIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgcyAqIDEwMDAKKworIyArIGZvciBjb25jYXQKKworQGJlbmNoKCciQW5kcmV3IisiRGFsa2UiJywgImNvbmNhdCB0d28gc3RyaW5ncyIsIDEwMDApCitkZWYgY29uY2F0X3R3b19zdHJpbmdzKFNUUik6CisgICAgczEgPSBTVFIoIkFuZHJldyIpCisgICAgczIgPSBTVFIoIkRhbGtlIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczErczIKKworQGJlbmNoKCdzMStzMitzMytzNCsuLi4rczIwJywgImNvbmNhdCAyMCBzdHJpbmdzIG9mIHdvcmRzIGxlbmd0aCA0IHRvIDE1IiwKKyAgICAgICAxMDAwKQorZGVmIGNvbmNhdF9tYW55X3N0cmluZ3MoU1RSKToKKyAgICBzMT1TVFIoJ1RJWFNHWU5SRURDVkJISicpCisgICAgczI9U1RSKCdQVU1UTFhCWlZETycpCisgICAgczM9U1RSKCdGVlpOSicpCisgICAgczQ9U1RSKCdPR0RYVVcnKQorICAgIHM1PVNUUignV0VJTVJOQ09ZVkdIS0InKQorICAgIHM2PVNUUignRkNRVE5NWFBVWkgnKQorICAgIHM3PVNUUignVElDWkpZUkxCTlZVRUFLJykKKyAgICBzOD1TVFIoJ1JFWUInKQorICAgIHM5PVNUUignUFdVT1EnKQorICAgIHMxMD1TVFIoJ0VRSENNS0JTJykKKyAgICBzMTE9U1RSKCdBRVZERk9IJykKKyAgICBzMTI9U1RSKCdJRkhWRCcpCisgICAgczEzPVNUUignSkdUQ05MWFdPSFEnKQorICAgIHMxND1TVFIoJ0lUU0tFUFlMUk9aQVdYRicpCisgICAgczE1PVNUUignVEhFSycpCisgICAgczE2PVNUUignR0hQWkZCVVlDS01OSklUJykKKyAgICBzMTc9U1RSKCdKTVVaJykKKyAgICBzMTg9U1RSKCdXTFpRTVRCJykKKyAgICBzMTk9U1RSKCdLUEFEQ0JXJykKKyAgICBzMjA9U1RSKCdUTkpIWlFBR0JVJykKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgKHMxICsgczIrIHMzKyBzNCsgczUrIHM2KyBzNysgczgrIHM5K3MxMCsKKyAgICAgICAgIHMxMStzMTIrczEzK3MxNCtzMTUrczE2K3MxNytzMTgrczE5K3MyMCkKKworCisjIyMjIEJlbmNobWFyayBqb2luCisKK2RlZiBnZXRfYnl0ZXNfeWllbGRpbmdfc2VxKFNUUiwgYXJnKToKKyAgICBpZiBTVFIgaXMgQllURVMgYW5kIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsKToKKyAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRUeXBlCisgICAgcmV0dXJuIFNUUihhcmcpCisKK0BiZW5jaCgnIkEiLmpvaW4oIiIpJywKKyAgICAgICAiam9pbiBlbXB0eSBzdHJpbmcsIHdpdGggMSBjaGFyYWN0ZXIgc2VwIiwgMTAwKQorZGVmIGpvaW5fZW1wdHlfc2luZ2xlKFNUUik6CisgICAgc2VwID0gU1RSKCJBIikKKyAgICBzMiA9IGdldF9ieXRlc195aWVsZGluZ19zZXEoU1RSLCAiIikKKyAgICBzZXBfam9pbiA9IHNlcC5qb2luCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgc2VwX2pvaW4oczIpCisKK0BiZW5jaCgnIkFCQ0RFIi5qb2luKCIiKScsCisgICAgICAgImpvaW4gZW1wdHkgc3RyaW5nLCB3aXRoIDUgY2hhcmFjdGVyIHNlcCIsIDEwMCkKK2RlZiBqb2luX2VtcHR5XzUoU1RSKToKKyAgICBzZXAgPSBTVFIoIkFCQ0RFIikKKyAgICBzMiA9IGdldF9ieXRlc195aWVsZGluZ19zZXEoU1RSLCAiIikKKyAgICBzZXBfam9pbiA9IHNlcC5qb2luCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgc2VwX2pvaW4oczIpCisKK0BiZW5jaCgnIkEiLmpvaW4oIkFCQy4uWiIpJywKKyAgICAgICAiam9pbiBzdHJpbmcgd2l0aCAyNiBjaGFyYWN0ZXJzLCB3aXRoIDEgY2hhcmFjdGVyIHNlcCIsIDEwMDApCitkZWYgam9pbl9hbHBoYWJldF9zaW5nbGUoU1RSKToKKyAgICBzZXAgPSBTVFIoIkEiKQorICAgIHMyID0gZ2V0X2J5dGVzX3lpZWxkaW5nX3NlcShTVFIsICJBQkNERUZHSElKS0xNbk9QUVJTVFVWV1hZWiIpCisgICAgc2VwX2pvaW4gPSBzZXAuam9pbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzZXBfam9pbihzMikKKworQGJlbmNoKCciQUJDREUiLmpvaW4oIkFCQy4uWiIpJywKKyAgICAgICAiam9pbiBzdHJpbmcgd2l0aCAyNiBjaGFyYWN0ZXJzLCB3aXRoIDUgY2hhcmFjdGVyIHNlcCIsIDEwMDApCitkZWYgam9pbl9hbHBoYWJldF81KFNUUik6CisgICAgc2VwID0gU1RSKCJBQkNERSIpCisgICAgczIgPSBnZXRfYnl0ZXNfeWllbGRpbmdfc2VxKFNUUiwgIkFCQ0RFRkdISUpLTE1uT1BRUlNUVVZXWFlaIikKKyAgICBzZXBfam9pbiA9IHNlcC5qb2luCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNlcF9qb2luKHMyKQorCitAYmVuY2goJyJBIi5qb2luKGxpc3QoIkFCQy4uWiIpKScsCisgICAgICAgImpvaW4gbGlzdCBvZiAyNiBjaGFyYWN0ZXJzLCB3aXRoIDEgY2hhcmFjdGVyIHNlcCIsIDEwMDApCitkZWYgam9pbl9hbHBoYWJldF9saXN0X3NpbmdsZShTVFIpOgorICAgIHNlcCA9IFNUUigiQSIpCisgICAgczIgPSBbU1RSKHgpIGZvciB4IGluICJBQkNERUZHSElKS0xNbk9QUVJTVFVWV1hZWiJdCisgICAgc2VwX2pvaW4gPSBzZXAuam9pbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzZXBfam9pbihzMikKKworQGJlbmNoKCciQUJDREUiLmpvaW4obGlzdCgiQUJDLi5aIikpJywKKyAgICAgICAiam9pbiBsaXN0IG9mIDI2IGNoYXJhY3RlcnMsIHdpdGggNSBjaGFyYWN0ZXIgc2VwIiwgMTAwMCkKK2RlZiBqb2luX2FscGhhYmV0X2xpc3RfZml2ZShTVFIpOgorICAgIHNlcCA9IFNUUigiQUJDREUiKQorICAgIHMyID0gW1NUUih4KSBmb3IgeCBpbiAiQUJDREVGR0hJSktMTW5PUFFSU1RVVldYWVoiXQorICAgIHNlcF9qb2luID0gc2VwLmpvaW4KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc2VwX2pvaW4oczIpCisKK0BiZW5jaCgnIkEiLmpvaW4oWyJCb2IiXSoxMDApKScsCisgICAgICAgImpvaW4gbGlzdCBvZiAxMDAgd29yZHMsIHdpdGggMSBjaGFyYWN0ZXIgc2VwIiwgMTAwMCkKK2RlZiBqb2luXzEwMF93b3Jkc19zaW5nbGUoU1RSKToKKyAgICBzZXAgPSBTVFIoIkEiKQorICAgIHMyID0gW1NUUigiQm9iIildKjEwMAorICAgIHNlcF9qb2luID0gc2VwLmpvaW4KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc2VwX2pvaW4oczIpCisKK0BiZW5jaCgnIkFCQ0RFIi5qb2luKFsiQm9iIl0qMTAwKSknLAorICAgICAgICJqb2luIGxpc3Qgb2YgMTAwIHdvcmRzLCB3aXRoIDUgY2hhcmFjdGVyIHNlcCIsIDEwMDApCitkZWYgam9pbl8xMDBfd29yZHNfNShTVFIpOgorICAgIHNlcCA9IFNUUigiQUJDREUiKQorICAgIHMyID0gW1NUUigiQm9iIildKjEwMAorICAgIHNlcF9qb2luID0gc2VwLmpvaW4KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc2VwX2pvaW4oczIpCisKKyMjIyMgc3BsaXQgdGVzdHMKKworQGJlbmNoKCcoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikuc3BsaXQoKScsICJzcGxpdCB3aGl0ZXNwYWNlIChzbWFsbCkiLCAxMDAwKQorZGVmIHdoaXRlc3BhY2Vfc3BsaXQoU1RSKToKKyAgICBzID0gU1RSKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpCisgICAgc19zcGxpdCA9IHMuc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zcGxpdCgpCisKK0BiZW5jaCgnKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpLnJzcGxpdCgpJywgInNwbGl0IHdoaXRlc3BhY2UgKHNtYWxsKSIsIDEwMDApCitkZWYgd2hpdGVzcGFjZV9yc3BsaXQoU1RSKToKKyAgICBzID0gU1RSKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpCisgICAgc19yc3BsaXQgPSBzLnJzcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JzcGxpdCgpCisKK0BiZW5jaCgnKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpLnNwbGl0KE5vbmUsIDEpJywKKyAgICAgICAic3BsaXQgMSB3aGl0ZXNwYWNlIiwgMTAwMCkKK2RlZiB3aGl0ZXNwYWNlX3NwbGl0XzEoU1RSKToKKyAgICBzID0gU1RSKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpCisgICAgc19zcGxpdCA9IHMuc3BsaXQKKyAgICBOID0gTm9uZQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3NwbGl0KE4sIDEpCisKK0BiZW5jaCgnKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpLnJzcGxpdChOb25lLCAxKScsCisgICAgICAgInNwbGl0IDEgd2hpdGVzcGFjZSIsIDEwMDApCitkZWYgd2hpdGVzcGFjZV9yc3BsaXRfMShTVFIpOgorICAgIHMgPSBTVFIoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikKKyAgICBzX3JzcGxpdCA9IHMucnNwbGl0CisgICAgTiA9IE5vbmUKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19yc3BsaXQoTiwgMSkKKworQGJlbmNoKCcoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikucGFydGl0aW9uKCIgIiknLAorICAgICAgICJzcGxpdCAxIHdoaXRlc3BhY2UiLCAxMDAwKQorZGVmIHdoaXRlc3BhY2VfcGFydGl0aW9uKFNUUik6CisgICAgc2VwID0gU1RSKCIgIikKKyAgICBzID0gU1RSKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpCisgICAgc19wYXJ0aXRpb24gPSBzLnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3BhcnRpdGlvbihzZXApCisKK0BiZW5jaCgnKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpLnJwYXJ0aXRpb24oIiAiKScsCisgICAgICAgInNwbGl0IDEgd2hpdGVzcGFjZSIsIDEwMDApCitkZWYgd2hpdGVzcGFjZV9ycGFydGl0aW9uKFNUUik6CisgICAgc2VwID0gU1RSKCIgIikKKyAgICBzID0gU1RSKCJIZXJlIGFyZSBzb21lIHdvcmRzLiAiKjIpCisgICAgc19ycGFydGl0aW9uID0gcy5ycGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcnBhcnRpdGlvbihzZXApCisKK2h1bWFuX3RleHQgPSAiIiJcCitQeXRob24gaXMgYSBkeW5hbWljIG9iamVjdC1vcmllbnRlZCBwcm9ncmFtbWluZyBsYW5ndWFnZSB0aGF0IGNhbiBiZQordXNlZCBmb3IgbWFueSBraW5kcyBvZiBzb2Z0d2FyZSBkZXZlbG9wbWVudC4gSXQgb2ZmZXJzIHN0cm9uZyBzdXBwb3J0Citmb3IgaW50ZWdyYXRpb24gd2l0aCBvdGhlciBsYW5ndWFnZXMgYW5kIHRvb2xzLCBjb21lcyB3aXRoIGV4dGVuc2l2ZQorc3RhbmRhcmQgbGlicmFyaWVzLCBhbmQgY2FuIGJlIGxlYXJuZWQgaW4gYSBmZXcgZGF5cy4gTWFueSBQeXRob24KK3Byb2dyYW1tZXJzIHJlcG9ydCBzdWJzdGFudGlhbCBwcm9kdWN0aXZpdHkgZ2FpbnMgYW5kIGZlZWwgdGhlIGxhbmd1YWdlCitlbmNvdXJhZ2VzIHRoZSBkZXZlbG9wbWVudCBvZiBoaWdoZXIgcXVhbGl0eSwgbW9yZSBtYWludGFpbmFibGUgY29kZS4KKworUHl0aG9uIHJ1bnMgb24gV2luZG93cywgTGludXgvVW5peCwgTWFjIE9TIFgsIE9TLzIsIEFtaWdhLCBQYWxtCitIYW5kaGVsZHMsIGFuZCBOb2tpYSBtb2JpbGUgcGhvbmVzLiBQeXRob24gaGFzIGFsc28gYmVlbiBwb3J0ZWQgdG8gdGhlCitKYXZhIGFuZCAuTkVUIHZpcnR1YWwgbWFjaGluZXMuCisKK1B5dGhvbiBpcyBkaXN0cmlidXRlZCB1bmRlciBhbiBPU0ktYXBwcm92ZWQgb3BlbiBzb3VyY2UgbGljZW5zZSB0aGF0CittYWtlcyBpdCBmcmVlIHRvIHVzZSwgZXZlbiBmb3IgY29tbWVyY2lhbCBwcm9kdWN0cy4KKyIiIioyNQoraHVtYW5fdGV4dF9ieXRlcyA9IGJ5dGVzX2Zyb21fc3RyKGh1bWFuX3RleHQpCitodW1hbl90ZXh0X3VuaWNvZGUgPSB1bmljb2RlX2Zyb21fc3RyKGh1bWFuX3RleHQpCitkZWYgX2dldF9odW1hbl90ZXh0KFNUUik6CisgICAgaWYgU1RSIGlzIFVOSUNPREU6CisgICAgICAgIHJldHVybiBodW1hbl90ZXh0X3VuaWNvZGUKKyAgICBpZiBTVFIgaXMgQllURVM6CisgICAgICAgIHJldHVybiBodW1hbl90ZXh0X2J5dGVzCisgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKKworQGJlbmNoKCdodW1hbl90ZXh0LnNwbGl0KCknLCAic3BsaXQgd2hpdGVzcGFjZSAoaHVnZSkiLCAxMCkKK2RlZiB3aGl0ZXNwYWNlX3NwbGl0X2h1Z2UoU1RSKToKKyAgICBzID0gX2dldF9odW1hbl90ZXh0KFNUUikKKyAgICBzX3NwbGl0ID0gcy5zcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19zcGxpdCgpCisKK0BiZW5jaCgnaHVtYW5fdGV4dC5yc3BsaXQoKScsICJzcGxpdCB3aGl0ZXNwYWNlIChodWdlKSIsIDEwKQorZGVmIHdoaXRlc3BhY2VfcnNwbGl0X2h1Z2UoU1RSKToKKyAgICBzID0gX2dldF9odW1hbl90ZXh0KFNUUikKKyAgICBzX3JzcGxpdCA9IHMucnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3JzcGxpdCgpCisKKworCitAYmVuY2goJyJ0aGlzXFxuaXNcXG5hXFxudGVzdFxcbiIuc3BsaXQoIlxcbiIpJywgInNwbGl0IG5ld2xpbmVzIiwgMTAwMCkKK2RlZiBuZXdsaW5lc19zcGxpdChTVFIpOgorICAgIHMgPSBTVFIoInRoaXNcbmlzXG5hXG50ZXN0XG4iKQorICAgIHNfc3BsaXQgPSBzLnNwbGl0CisgICAgbmwgPSBTVFIoIlxuIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zcGxpdChubCkKKworCitAYmVuY2goJyJ0aGlzXFxuaXNcXG5hXFxudGVzdFxcbiIucnNwbGl0KCJcXG4iKScsICJzcGxpdCBuZXdsaW5lcyIsIDEwMDApCitkZWYgbmV3bGluZXNfcnNwbGl0KFNUUik6CisgICAgcyA9IFNUUigidGhpc1xuaXNcbmFcbnRlc3RcbiIpCisgICAgc19yc3BsaXQgPSBzLnJzcGxpdAorICAgIG5sID0gU1RSKCJcbiIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcnNwbGl0KG5sKQorCitAYmVuY2goJyJ0aGlzXFxuaXNcXG5hXFxudGVzdFxcbiIuc3BsaXRsaW5lcygpJywgInNwbGl0IG5ld2xpbmVzIiwgMTAwMCkKK2RlZiBuZXdsaW5lc19zcGxpdGxpbmVzKFNUUik6CisgICAgcyA9IFNUUigidGhpc1xuaXNcbmFcbnRlc3RcbiIpCisgICAgc19zcGxpdGxpbmVzID0gcy5zcGxpdGxpbmVzCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3BsaXRsaW5lcygpCisKKyMjIHNwbGl0IHRleHQgd2l0aCAyMDAwIG5ld2xpbmVzCisKK2RlZiBfbWFrZV8yMDAwX2xpbmVzKCk6CisgICAgaW1wb3J0IHJhbmRvbQorICAgIHIgPSByYW5kb20uUmFuZG9tKDEwMCkKKyAgICBjaGFycyA9IGxpc3QobWFwKGNociwgcmFuZ2UoMzIsIDEyOCkpKQorICAgIGkgPSAwCisgICAgd2hpbGUgaSA8IGxlbihjaGFycyk6CisgICAgICAgIGNoYXJzW2ldID0gIiAiCisgICAgICAgIGkgKz0gci5yYW5kcmFuZ2UoOSkKKyAgICBzID0gIiIuam9pbihjaGFycykKKyAgICBzID0gcyo0CisgICAgd29yZHMgPSBbXQorICAgIGZvciBpIGluIHJhbmdlKDIwMDApOgorICAgICAgICBzdGFydCA9IHIucmFuZHJhbmdlKDk2KQorICAgICAgICBuID0gci5yYW5kaW50KDUsIDY1KQorICAgICAgICB3b3Jkcy5hcHBlbmQoc1tzdGFydDpzdGFydCtuXSkKKyAgICByZXR1cm4gIlxuIi5qb2luKHdvcmRzKSsiXG4iCisKK190ZXh0X3dpdGhfMjAwMF9saW5lcyA9IF9tYWtlXzIwMDBfbGluZXMoKQorX3RleHRfd2l0aF8yMDAwX2xpbmVzX2J5dGVzID0gYnl0ZXNfZnJvbV9zdHIoX3RleHRfd2l0aF8yMDAwX2xpbmVzKQorX3RleHRfd2l0aF8yMDAwX2xpbmVzX3VuaWNvZGUgPSB1bmljb2RlX2Zyb21fc3RyKF90ZXh0X3dpdGhfMjAwMF9saW5lcykKK2RlZiBfZ2V0XzIwMDBfbGluZXMoU1RSKToKKyAgICBpZiBTVFIgaXMgVU5JQ09ERToKKyAgICAgICAgcmV0dXJuIF90ZXh0X3dpdGhfMjAwMF9saW5lc191bmljb2RlCisgICAgaWYgU1RSIGlzIEJZVEVTOgorICAgICAgICByZXR1cm4gX3RleHRfd2l0aF8yMDAwX2xpbmVzX2J5dGVzCisgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKKworCitAYmVuY2goJyIuLi50ZXh0Li4uIi5zcGxpdCgiXFxuIiknLCAic3BsaXQgMjAwMCBuZXdsaW5lcyIsIDEwKQorZGVmIG5ld2xpbmVzX3NwbGl0XzIwMDAoU1RSKToKKyAgICBzID0gX2dldF8yMDAwX2xpbmVzKFNUUikKKyAgICBzX3NwbGl0ID0gcy5zcGxpdAorICAgIG5sID0gU1RSKCJcbiIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3NwbGl0KG5sKQorCitAYmVuY2goJyIuLi50ZXh0Li4uIi5yc3BsaXQoIlxcbiIpJywgInNwbGl0IDIwMDAgbmV3bGluZXMiLCAxMCkKK2RlZiBuZXdsaW5lc19yc3BsaXRfMjAwMChTVFIpOgorICAgIHMgPSBfZ2V0XzIwMDBfbGluZXMoU1RSKQorICAgIHNfcnNwbGl0ID0gcy5yc3BsaXQKKyAgICBubCA9IFNUUigiXG4iKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19yc3BsaXQobmwpCisKK0BiZW5jaCgnIi4uLnRleHQuLi4iLnNwbGl0bGluZXMoKScsICJzcGxpdCAyMDAwIG5ld2xpbmVzIiwgMTApCitkZWYgbmV3bGluZXNfc3BsaXRsaW5lc18yMDAwKFNUUik6CisgICAgcyA9IF9nZXRfMjAwMF9saW5lcyhTVFIpCisgICAgc19zcGxpdGxpbmVzID0gcy5zcGxpdGxpbmVzCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3NwbGl0bGluZXMoKQorCisKKyMjIHNwbGl0IHRleHQgb24gIi0tIiBjaGFyYWN0ZXJzCitAYmVuY2goCisgICAgJyJ0aGlzLS1pcy0tYS0tdGVzdC0tb2YtLXRoZS0tZW1lcmdlbmN5LS1icm9hZGNhc3QtLXN5c3RlbSIuc3BsaXQoIi0tIiknLAorICAgICJzcGxpdCBvbiBtdWx0aWNoYXJhY3RlciBzZXBhcmF0b3IgKHNtYWxsKSIsIDEwMDApCitkZWYgc3BsaXRfbXVsdGljaGFyX3NlcF9zbWFsbChTVFIpOgorICAgIHMgPSBTVFIoInRoaXMtLWlzLS1hLS10ZXN0LS1vZi0tdGhlLS1lbWVyZ2VuY3ktLWJyb2FkY2FzdC0tc3lzdGVtIikKKyAgICBzX3NwbGl0ID0gcy5zcGxpdAorICAgIHBhdCA9IFNUUigiLS0iKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3NwbGl0KHBhdCkKK0BiZW5jaCgKKyAgICAnInRoaXMtLWlzLS1hLS10ZXN0LS1vZi0tdGhlLS1lbWVyZ2VuY3ktLWJyb2FkY2FzdC0tc3lzdGVtIi5yc3BsaXQoIi0tIiknLAorICAgICJzcGxpdCBvbiBtdWx0aWNoYXJhY3RlciBzZXBhcmF0b3IgKHNtYWxsKSIsIDEwMDApCitkZWYgcnNwbGl0X211bHRpY2hhcl9zZXBfc21hbGwoU1RSKToKKyAgICBzID0gU1RSKCJ0aGlzLS1pcy0tYS0tdGVzdC0tb2YtLXRoZS0tZW1lcmdlbmN5LS1icm9hZGNhc3QtLXN5c3RlbSIpCisgICAgc19yc3BsaXQgPSBzLnJzcGxpdAorICAgIHBhdCA9IFNUUigiLS0iKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JzcGxpdChwYXQpCisKKyMjIHNwbGl0IGRuYSB0ZXh0IG9uICJBQ1RBVCIgY2hhcmFjdGVycworQGJlbmNoKCdkbmEuc3BsaXQoIkFDVEFUIiknLAorICAgICAgICJzcGxpdCBvbiBtdWx0aWNoYXJhY3RlciBzZXBhcmF0b3IgKGRuYSkiLCAxMCkKK2RlZiBzcGxpdF9tdWx0aWNoYXJfc2VwX2RuYShTVFIpOgorICAgIHMgPSBfZ2V0X2RuYShTVFIpCisgICAgc19zcGxpdCA9IHMuc3BsaXQKKyAgICBwYXQgPSBTVFIoIkFDVEFUIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfc3BsaXQocGF0KQorCitAYmVuY2goJ2RuYS5yc3BsaXQoIkFDVEFUIiknLAorICAgICAgICJzcGxpdCBvbiBtdWx0aWNoYXJhY3RlciBzZXBhcmF0b3IgKGRuYSkiLCAxMCkKK2RlZiByc3BsaXRfbXVsdGljaGFyX3NlcF9kbmEoU1RSKToKKyAgICBzID0gX2dldF9kbmEoU1RSKQorICAgIHNfcnNwbGl0ID0gcy5yc3BsaXQKKyAgICBwYXQgPSBTVFIoIkFDVEFUIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfcnNwbGl0KHBhdCkKKworCisKKyMjIHNwbGl0IHdpdGggbGltaXRzCisKK0dGRjNfZXhhbXBsZSA9ICJcdCIuam9pbihbCisgICAgIkkiLCAiR2Vub21pY19jYW5vbmljYWwiLCAicmVnaW9uIiwgIjM1NzIwOCIsICIzOTYxODMiLCAiLiIsICIrIiwgIi4iLAorICAgICJJRD1TZXF1ZW5jZTpSMTE5O25vdGU9Q2xvbmUgUjExOSUzQiBHZW5iYW5rIEFGMDYzMDA3O05hbWU9UjExOSJdKQorCitAYmVuY2goJ0dGRjNfZXhhbXBsZS5zcGxpdCgiXFx0IiknLCAidGFiIHNwbGl0IiwgMTAwMCkKK2RlZiB0YWJfc3BsaXRfbm9fbGltaXQoU1RSKToKKyAgICBzZXAgPSBTVFIoIlx0IikKKyAgICBzID0gU1RSKEdGRjNfZXhhbXBsZSkKKyAgICBzX3NwbGl0ID0gcy5zcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3NwbGl0KHNlcCkKKworQGJlbmNoKCdHRkYzX2V4YW1wbGUuc3BsaXQoIlxcdCIsIDgpJywgInRhYiBzcGxpdCIsIDEwMDApCitkZWYgdGFiX3NwbGl0X2xpbWl0KFNUUik6CisgICAgc2VwID0gU1RSKCJcdCIpCisgICAgcyA9IFNUUihHRkYzX2V4YW1wbGUpCisgICAgc19zcGxpdCA9IHMuc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zcGxpdChzZXAsIDgpCisKK0BiZW5jaCgnR0ZGM19leGFtcGxlLnJzcGxpdCgiXFx0IiknLCAidGFiIHNwbGl0IiwgMTAwMCkKK2RlZiB0YWJfcnNwbGl0X25vX2xpbWl0KFNUUik6CisgICAgc2VwID0gU1RSKCJcdCIpCisgICAgcyA9IFNUUihHRkYzX2V4YW1wbGUpCisgICAgc19yc3BsaXQgPSBzLnJzcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JzcGxpdChzZXApCisKK0BiZW5jaCgnR0ZGM19leGFtcGxlLnJzcGxpdCgiXFx0IiwgOCknLCAidGFiIHNwbGl0IiwgMTAwMCkKK2RlZiB0YWJfcnNwbGl0X2xpbWl0KFNUUik6CisgICAgc2VwID0gU1RSKCJcdCIpCisgICAgcyA9IFNUUihHRkYzX2V4YW1wbGUpCisgICAgc19yc3BsaXQgPSBzLnJzcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JzcGxpdChzZXAsIDgpCisKKyMjIyMgQ291bnQgY2hhcmFjdGVycworCitAYmVuY2goJy4uLnRleHQud2l0aC4yMDAwLm5ld2xpbmVzLmNvdW50KCJcXG4iKScsCisgICAgICAgImNvdW50IG5ld2xpbmVzIiwgMTApCitkZWYgY291bnRfbmV3bGluZXMoU1RSKToKKyAgICBzID0gX2dldF8yMDAwX2xpbmVzKFNUUikKKyAgICBzX2NvdW50ID0gcy5jb3VudAorICAgIG5sID0gU1RSKCJcbiIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX2NvdW50KG5sKQorCisjIE9yY2hpZCBzZXF1ZW5jZXMgY29uY2F0ZW5hdGVkLCBmcm9tIEJpb3B5dGhvbgorX2RuYSA9ICIiIgorQ0dUQUFDQUFHR1RUVENDR1RBR0dUR0FBQ0NUR0NHR0FBR0dBVENBVFRHVFRHQUdBVENBQ0FUQUFUQUFUVEdBVENHR0dUVAorQUFUQ1RHR0FHR0FUQ1RHVFRUQUNUVFRHR1RDQUNDQ0FUR0FHQ0FUVFRHQ1RHVFRHQUFHVEdBQ0NUQUdBQVRUR0NDQVRDRworQUdDQ1RDQ1RUR0dHQUdDVFRUQ1RUR1RUR0dDR0FHQVRDVEFBQUNDQ1RUR0NDQ0dHQ0dDQUdUVFRUR0NUQ0NBQUdUQ0dUVAorVEdBQ0FDQVRBQVRUR0dUR0FBR0dHR0dUR0dDQVRDQ1RUQ0NDVEdBQ0NDVENDQ0NDQUFDVEFUVFRUVFRUQUFDQUFDVENUQworQUdDQUFDR0dBR0FDVENBR1RDVFRDR0dDQUFBVEdDR0FUQUFBVEdHVEdUR0FBVFRHQ0FHQUFUQ0NDR1RHQ0FDQ0FUQ0dBRworVENUVFRHQUFDR0NBQUdUVEdDR0NDQ0dBR0dDQ0FUQ0FHR0NDQUFHR0dDQUNHQ0NUR0NDVEdHR0NBVFRHQ0dBR1RDQVRBVAorQ1RDVENDQ1RUQUFDR0FHR0NUR1RDQ0FUQUNBVEFDVEdUVENBR0NDR0dUR0NHR0FUR1RHQUdUVFRHR0NDQ0NUVEdUVENUVAorVEdHVEFDR0dHR0dHVENUQUFHQUdDVEdDQVRHR0dDVFRUVEdBVEdHVENDVEFBQVRBQ0dHQ0FBR0FHR1RHR0FDR0FBQ1RBVAorR0NUQUNBQUNBQUFBVFRHVFRHVEdDQUdBR0dDQ0NDR0dHVFRHVENHVEFUVEFHQVRHR0dDQ0FDQ0dUQUFUQ1RHQUFHQUNDQworVFRUVEdBQUNDQ0NBVFRHR0FHR0NDQ0FUQ0FBQ0NDQVRHQVRDQUdUVEdBVEdHQ0NBVFRUR0dUVEdDR0FDQ0NDQUdHVENBRworR1RHQUdDQUFDQUdDVEdUQ0dUQUFDQUFHR1RUVENDR1RBR0dHVEdBQUNUR0NHR0FBR0dBVENBVFRHVFRHQUdBVENBQ0FUQQorQVRBQVRUR0FUQ0dBR1RUQUFUQ1RHR0FHR0FUQ1RHVFRUQUNUVEdHR1RDQUNDQ0FUR0dHQ0FUVFRHQ1RHVFRHQUFHVEdBQworQ1RBR0FUVFRHQ0NBVENHQUdDQ1RDQ1RUR0dHQUdDQVRDQ1RUR1RUR0dDR0FUQVRDVEFBQUNDQ1RDQUFUVFRUVENDQ0NDQQorQVRDQUFBVFRBQ0FDQUFBQVRUR0dUR0dBR0dHR0dUR0dDQVRUQ1RUQ0NDVFRBQ0NDVENDQ0NDQUFBVEFUVFRUVFRUQUFDQQorQUNUQ1RDQUdDQUFDR0dBVEFUQ1RDQUdDVENUVEdDQVRDR0FUR0FBR0FBQ0NDQUNDR0FBQVRHQ0dBVEFBQVRHR1RHVEdBQQorVFRHQ0FHQUFUQ0NDR1RHQUFDQ0FUQ0dBR1RDVFRUR0FBQ0dDQUFHVFRHQ0dDQ0NHQUdHQ0NBVENBR0dDQ0FBR0dHQ0FDRworQ0NUR0NDVEdHR0NBVFRHQ0dBR1RDQVRBVENUQ1RDQ0NUVEFBQ0dBR0dDVEdUQ0NBVEFDQVRBQ1RHVFRDQUdDQ0dHVEdDRworR0FUR1RHQUdUVFRHR0NDQ0NUVEdUVENUVFRHR1RBQ0dHR0dHR1RDVEFBR0FHQVRHQ0FUR0dHQ1RUVFRHQVRHR1RDQ1RBQQorQVRBQ0dHQ0FBR0FHR1RHR0FDR0FBQ1RBVEdDVEFDQUFDQUFBQVRUR1RUR1RHQ0FBQUdHQ0NDQ0dHR1RUR1RDR1RBVEFBRworQVRHR0dDQ0FDQ0dBVEFUQ1RHQUFHQUNDQ1RUVFRHR0FDQ0NDQVRUR0dBR0NDQ0FUQ0FBQ0NDQVRHVENBR1RUR0FUR0dDQworQVRUQ0dUQUFDQUFHR1RUVENDR1RBR0dUR0FBQ0NUR0NHR0FBR0dBVENBVFRHVFRHQUdBVENBQ0FUQUFUQUFUVEdBVENHQQorR1RUQUFUQ1RHR0FHR0FUQ1RHVFRUQUNUVEdHR1RDQUNDQ0FUR0dHQ0FUVFRHQ1RHVFRHQUFHVEdBQ0NUQUdBVFRUR0NDQQorVENHQUdDQ1RDQ1RUR0dHQUdDVFRUQ1RUR1RUR0dDR0FUQVRDVEFBQUNDQ1RUR0NDQ0dHQ0FHQUdUVFRUR0dHQUFUQ0NDRworVEdBQUNDQVRDR0FHVENUVFRHQUFDR0NBQUdUVEdDR0NDQ0dBR0dDQ0FUQ0FHR0NDQUFHR0dDQUNHQ0NUR0NDVEdHR0NBVAorVEdDR0FHVENBVEFUQ1RDVENDQ1RUQUFDR0FHR0NUR1RDQ0FUQUNBQ0FDQ1RHVFRDQUdDQ0dHVEdDR0dBVEdUR0FHVFRURworR0NDQ0NUVEdUVENUVFRHR1RBQ0dHR0dHR1RDVEFBR0FHQ1RHQ0FUR0dHQ1RUVFRHQVRHR1RDQ1RBQUFUQUNHR0NBQUdBRworR1RHR0FDR0FBQ1RBVEdDVEFDQUFDQUFBQVRUR1RUR1RHQ0FBQUdHQ0NDQ0dHR1RUR1RDR1RBVFRBR0FUR0dHQ0NBQ0NBVAorQUFUQ1RHQUFHQUNDQ1RUVFRHQUFDQ0NDQVRUR0dBR0dDQ0NBVENBQUNDQ0FUR0FUQ0FHVFRHQVRHR0NDQVRUVEdHVFRHQworR0FDQ0NBR1RDQUdHVEdBR0dHVEFHR1RHQUFDQ1RHQ0dHQUFHR0FUQ0FUVEdUVEdBR0FUQ0FDQVRBQVRBQVRUR0FUQ0dBRworVFRBQVRDVEdHQUdHQVRDVEdUVFRBQ1RUVEdHVENBQ0NDQVRHR0dDQVRUVEdDVEdUVEdBQUdUR0FDQ1RBR0FUVFRHQ0NBVAorQ0dBR0NDVENDVFRHR0dBR0NUVFRDVFRHVFRHR0NHQUdBVENUQUFBQ0NDVFRHQ0NDR0dDR0dBR1RUVEdHQ0dDQ0FBR1RDQQorVEFUR0FDQUNBVEFBVFRHR1RHQUFHR0dHR1RHR0NBVENDVEdDQ0NUR0FDQ0NUQ0NDQ0FBQVRUQVRUVFRUVFRBQUNBQUNUQworVENBR0NBQUNHR0FUQVRDVENHR0NUQ1RUR0NBVENHQVRHQUFHQUFDR0NBR0NHQUFBVEdDR0FUQUFBVEdHVEdUR0FBVFRHQworQUdBQVRDQ0NHVEdBQUNDQVRDR0FHVENUVFRHR0FBQ0dDQUFHVFRHQ0dDQ0NHQUdHQ0NBVENBR0dDQ0FBR0dHQ0FDR0NDVAorR0NDVEdHR0NBVFRHR0dBQVRDQVRBVENUQ1RDQ0NDVEFBQ0dBR0dDVEFUQ0NBQUFDQVRBQ1RHVFRDQVRDQ0dHVEdDR0dBVAorR1RHQUdUVFRHR0NDQ0NUVEdUVENUVFRHR1RBQ0NHR0dHR1RDVEFBR0FHQ1RHQ0FUR0dHQ0FUVFRHQVRHR1RDQ1RDQUFBQQorQ0dHQ0FBR0FHR1RHR0FDR0FBQ1RBVEdDQ0FDQUFDQUFBQVRUR1RUR1RDQ0NBQUdHQ0NDQ0dHR1RUR1RDR1RBVFRBR0FURworR0dDQ0FDQ0dUQUFDQ1RHQUFHQUNDQ1RUVFRHQUFDQ0NDQVRUR0dBR0dDQ0NBVENBQUNDQ0FUR0FUQ0FHVFRHQVRHQUNDQQorVFRUR1RUR0NHQUNDQ0NBR1RDQUdDVEdBR0NBQUNDQ0dDVEdBR1RHR0FBR0dUQ0FUVEdDQ0dBVEFUQ0FDQVRBQVRBQVRURworQVRDR0FHVFRBQVRDVEdHQUdHQVRDVEdUVFRBQ1RUR0dUQ0FDQ0NBVEdBR0NBVFRUR0NUR1RUR0FBR1RHQUNDVEFHQVRUVAorR0NDQVRDR0FHQ0NUQ0NUVEdHR0FHVFRUVENUVEdUVEdHQ0dBR0FUQ1RBQUFDQ0NUVEdDQ0NHR0NHR0FHVFRHVEdDR0NDQQorQUdUQ0FUQVRHQUNBQ0FUQUFUVEdHVEdBQUdHR0dHVEdHQ0FUQ0NUR0NDQ1RHQUNDQ1RDQ0NDQUFBVFRBVFRUVFRUVEFBQworQUFDVENUQ0FHQ0FBQ0dHQVRBVENUQ0dHQ1RDVFRHQ0FUQ0dBVEdBQUdBQUNHQ0FHQ0dBQUFUR0NHQVRBQUFUR0dUR1RHQQorQVRUR0NBR0FBVENDQ0dUR0FBQ0NBVENHQUdUQ1RUVEdBQUNHQ0FBR1RUR0NHQ0NDR0FHR0NDQVRDQUdHQ0NBQUdHR0NBQworR0NDVEdDQ1RHR0dDQVRUR0NHQUdUQ0FUQVRDVENUQ0NDVFRBQUNHQUdHQ1RHVENDQVRBQ0FUQUNUR1RUQ0FUQ0NHR1RHQworR0dBVEdUR0FHVFRUR0dDQ0NDVFRHVFRDVFRUR0dUQUNHR0dHR0dUQ1RBQUdBR0NUR0NBVEdHR0NBVFRUR0FUR0dUQ0NUQworQUFBQUNHR0NBQUdBR0dUR0dBQ0dBQUNUQVRHQ1RBQ0FBQ0NBQUFUVEdUVEdUQ0NDQUFHR0NDQ0NHR0dUVEdUQ0dUQVRUQQorR0FUR0dHQ0NBQ0NHVEFBQ0NUR0FBR0FDQ0NUVFRUR0FBQ0NDQ0FUVEdHQUdHQ0NDQVRDQUFDQ0NBVEdBVENBR1RUR0FURworQUNDQVRHVEdUVEdDR0FDQ0NDQUdUQ0FHQ1RHQUdDQUFDR0NHQ1RHQUdDR1RBQUNBQUdHVFRUQ0NHVEFHR1RHR0FDQ1RDQworR0dHQUdHQVRDQVRUR1RUR0FHQVRDQUNBVEFBVEFBVFRHQVRDR0FHR1RBQVRDVEdHQUdHQVRDVEdDQVRBVFRUVEdHVENBQworIiIiCitfZG5hID0gIiIuam9pbihfZG5hLnNwbGl0bGluZXMoKSkKK19kbmEgPSBfZG5hICogMjUKK19kbmFfYnl0ZXMgPSBieXRlc19mcm9tX3N0cihfZG5hKQorX2RuYV91bmljb2RlID0gdW5pY29kZV9mcm9tX3N0cihfZG5hKQorCitkZWYgX2dldF9kbmEoU1RSKToKKyAgICBpZiBTVFIgaXMgVU5JQ09ERToKKyAgICAgICAgcmV0dXJuIF9kbmFfdW5pY29kZQorICAgIGlmIFNUUiBpcyBCWVRFUzoKKyAgICAgICAgcmV0dXJuIF9kbmFfYnl0ZXMKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCitAYmVuY2goJ2RuYS5jb3VudCgiQUFDVCIpJywgImNvdW50IEFBQ1Qgc3Vic3RyaW5ncyBpbiBETkEgZXhhbXBsZSIsIDEwKQorZGVmIGNvdW50X2FhY3QoU1RSKToKKyAgICBzZXEgPSBfZ2V0X2RuYShTVFIpCisgICAgc2VxX2NvdW50ID0gc2VxLmNvdW50CisgICAgbmVlZGxlID0gU1RSKCJBQUNUIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNlcV9jb3VudChuZWVkbGUpCisKKyMjIyMjIHN0YXJ0c3dpdGggYW5kIGVuZHN3aXRoCisKK0BiZW5jaCgnIkFuZHJldyIuc3RhcnRzd2l0aCgiQSIpJywgJ3N0YXJ0c3dpdGggc2luZ2xlIGNoYXJhY3RlcicsIDEwMDApCitkZWYgc3RhcnRzd2l0aF9zaW5nbGUoU1RSKToKKyAgICBzMSA9IFNUUigiQW5kcmV3IikKKyAgICBzMiA9IFNUUigiQSIpCisgICAgczFfc3RhcnRzd2l0aCA9IHMxLnN0YXJ0c3dpdGgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfc3RhcnRzd2l0aChzMikKKworQGJlbmNoKCciQW5kcmV3Ii5zdGFydHN3aXRoKCJBbmRyZXciKScsICdzdGFydHN3aXRoIG11bHRpcGxlIGNoYXJhY3RlcnMnLAorICAgICAgIDEwMDApCitkZWYgc3RhcnRzd2l0aF9tdWx0aXBsZShTVFIpOgorICAgIHMxID0gU1RSKCJBbmRyZXciKQorICAgIHMyID0gU1RSKCJBbmRyZXciKQorICAgIHMxX3N0YXJ0c3dpdGggPSBzMS5zdGFydHN3aXRoCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3N0YXJ0c3dpdGgoczIpCisKK0BiZW5jaCgnIkFuZHJldyIuc3RhcnRzd2l0aCgiQW5kZXJzIiknLAorICAgICAgICdzdGFydHN3aXRoIG11bHRpcGxlIGNoYXJhY3RlcnMgLSBub3QhJywgMTAwMCkKK2RlZiBzdGFydHN3aXRoX211bHRpcGxlX25vdChTVFIpOgorICAgIHMxID0gU1RSKCJBbmRyZXciKQorICAgIHMyID0gU1RSKCJBbmRlcnMiKQorICAgIHMxX3N0YXJ0c3dpdGggPSBzMS5zdGFydHN3aXRoCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3N0YXJ0c3dpdGgoczIpCisKKworIyBlbmRzd2l0aAorCitAYmVuY2goJyJBbmRyZXciLmVuZHN3aXRoKCJ3IiknLCAnZW5kc3dpdGggc2luZ2xlIGNoYXJhY3RlcicsIDEwMDApCitkZWYgZW5kc3dpdGhfc2luZ2xlKFNUUik6CisgICAgczEgPSBTVFIoIkFuZHJldyIpCisgICAgczIgPSBTVFIoInciKQorICAgIHMxX2VuZHN3aXRoID0gczEuZW5kc3dpdGgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfZW5kc3dpdGgoczIpCisKK0BiZW5jaCgnIkFuZHJldyIuZW5kc3dpdGgoIkFuZHJldyIpJywgJ2VuZHN3aXRoIG11bHRpcGxlIGNoYXJhY3RlcnMnLCAxMDAwKQorZGVmIGVuZHN3aXRoX211bHRpcGxlKFNUUik6CisgICAgczEgPSBTVFIoIkFuZHJldyIpCisgICAgczIgPSBTVFIoIkFuZHJldyIpCisgICAgczFfZW5kc3dpdGggPSBzMS5lbmRzd2l0aAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9lbmRzd2l0aChzMikKKworQGJlbmNoKCciQW5kcmV3Ii5lbmRzd2l0aCgiQW5kZXJzIiknLAorICAgICAgICdlbmRzd2l0aCBtdWx0aXBsZSBjaGFyYWN0ZXJzIC0gbm90IScsIDEwMDApCitkZWYgZW5kc3dpdGhfbXVsdGlwbGVfbm90KFNUUik6CisgICAgczEgPSBTVFIoIkFuZHJldyIpCisgICAgczIgPSBTVFIoIkFuZGVycyIpCisgICAgczFfZW5kc3dpdGggPSBzMS5lbmRzd2l0aAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9lbmRzd2l0aChzMikKKworIyMjIyBTdHJpcAorCitAYmVuY2goJyJIZWxsbyFcXG4iLnN0cmlwKCknLCAnc3RyaXAgdGVybWluYWwgbmV3bGluZScsIDEwMDApCitkZWYgdGVybWluYWxfbmV3bGluZV9zdHJpcF9yaWdodChTVFIpOgorICAgIHMgPSBTVFIoIkhlbGxvIVxuIikKKyAgICBzX3N0cmlwID0gcy5zdHJpcAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3N0cmlwKCkKKworQGJlbmNoKCciSGVsbG8hXFxuIi5yc3RyaXAoKScsICdzdHJpcCB0ZXJtaW5hbCBuZXdsaW5lJywgMTAwMCkKK2RlZiB0ZXJtaW5hbF9uZXdsaW5lX3JzdHJpcChTVFIpOgorICAgIHMgPSBTVFIoIkhlbGxvIVxuIikKKyAgICBzX3JzdHJpcCA9IHMucnN0cmlwCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcnN0cmlwKCkKKworQGJlbmNoKCciXFxuSGVsbG8hIi5zdHJpcCgpJywgJ3N0cmlwIHRlcm1pbmFsIG5ld2xpbmUnLCAxMDAwKQorZGVmIHRlcm1pbmFsX25ld2xpbmVfc3RyaXBfbGVmdChTVFIpOgorICAgIHMgPSBTVFIoIlxuSGVsbG8hIikKKyAgICBzX3N0cmlwID0gcy5zdHJpcAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3N0cmlwKCkKKworQGJlbmNoKCciXFxuSGVsbG8hXFxuIi5zdHJpcCgpJywgJ3N0cmlwIHRlcm1pbmFsIG5ld2xpbmUnLCAxMDAwKQorZGVmIHRlcm1pbmFsX25ld2xpbmVfc3RyaXBfYm90aChTVFIpOgorICAgIHMgPSBTVFIoIlxuSGVsbG8hXG4iKQorICAgIHNfc3RyaXAgPSBzLnN0cmlwCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3RyaXAoKQorCitAYmVuY2goJyJcXG5IZWxsbyEiLnJzdHJpcCgpJywgJ3N0cmlwIHRlcm1pbmFsIG5ld2xpbmUnLCAxMDAwKQorZGVmIHRlcm1pbmFsX25ld2xpbmVfbHN0cmlwKFNUUik6CisgICAgcyA9IFNUUigiXG5IZWxsbyEiKQorICAgIHNfbHN0cmlwID0gcy5sc3RyaXAKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19sc3RyaXAoKQorCitAYmVuY2goJ3M9IkhlbGxvIVxcbiI7IHNbOi0xXSBpZiBzWy0xXT09IlxcbiIgZWxzZSBzJywKKyAgICAgICAnc3RyaXAgdGVybWluYWwgbmV3bGluZScsIDEwMDApCitkZWYgdGVybWluYWxfbmV3bGluZV9pZl9lbHNlKFNUUik6CisgICAgcyA9IFNUUigiSGVsbG8hXG4iKQorICAgIE5MID0gU1RSKCJcbiIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNbOi0xXSBpZiAoc1stMV0gPT0gTkwpIGVsc2UgcworCisKKyMgU3RyaXAgbXVsdGlwbGUgc3BhY2VzIG9yIHRhYnMKKworQGJlbmNoKCciSGVsbG9cXHQgICBcXHQiLnN0cmlwKCknLCAnc3RyaXAgdGVybWluYWwgc3BhY2VzIGFuZCB0YWJzJywgMTAwMCkKK2RlZiB0ZXJtaW5hbF9zcGFjZV9zdHJpcChTVFIpOgorICAgIHMgPSBTVFIoIkhlbGxvXHQgICBcdCEiKQorICAgIHNfc3RyaXAgPSBzLnN0cmlwCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3RyaXAoKQorCitAYmVuY2goJyJIZWxsb1xcdCAgIFxcdCIucnN0cmlwKCknLCAnc3RyaXAgdGVybWluYWwgc3BhY2VzIGFuZCB0YWJzJywgMTAwMCkKK2RlZiB0ZXJtaW5hbF9zcGFjZV9yc3RyaXAoU1RSKToKKyAgICBzID0gU1RSKCJIZWxsbyFcdCAgIFx0IikKKyAgICBzX3JzdHJpcCA9IHMucnN0cmlwCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcnN0cmlwKCkKKworQGJlbmNoKCciXFx0ICAgXFx0SGVsbG8iLnJzdHJpcCgpJywgJ3N0cmlwIHRlcm1pbmFsIHNwYWNlcyBhbmQgdGFicycsIDEwMDApCitkZWYgdGVybWluYWxfc3BhY2VfbHN0cmlwKFNUUik6CisgICAgcyA9IFNUUigiXHQgICBcdEhlbGxvISIpCisgICAgc19sc3RyaXAgPSBzLmxzdHJpcAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX2xzdHJpcCgpCisKKworIyMjIyByZXBsYWNlCitAYmVuY2goJyJUaGlzIGlzIGEgdGVzdCIucmVwbGFjZSgiICIsICJcXHQiKScsICdyZXBsYWNlIHNpbmdsZSBjaGFyYWN0ZXInLAorICAgICAgIDEwMDApCitkZWYgcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgcyA9IFNUUigiVGhpcyBpcyBhIHRlc3QhIikKKyAgICBmcm9tX3N0ciA9IFNUUigiICIpCisgICAgdG9fc3RyID0gU1RSKCJcdCIpCisgICAgc19yZXBsYWNlID0gcy5yZXBsYWNlCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcmVwbGFjZShmcm9tX3N0ciwgdG9fc3RyKQorCitAdXNlc19yZQorQGJlbmNoKCdyZS5zdWIoIiAiLCAiXFx0IiwgIlRoaXMgaXMgYSB0ZXN0IicsICdyZXBsYWNlIHNpbmdsZSBjaGFyYWN0ZXInLAorICAgICAgIDEwMDApCitkZWYgcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX3JlKFNUUik6CisgICAgcyA9IFNUUigiVGhpcyBpcyBhIHRlc3QhIikKKyAgICBwYXQgPSByZS5jb21waWxlKFNUUigiICIpKQorICAgIHRvX3N0ciA9IFNUUigiXHQiKQorICAgIHBhdF9zdWIgPSBwYXQuc3ViCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHBhdF9zdWIodG9fc3RyLCBzKQorCitAYmVuY2goJyIuLi50ZXh0LndpdGguMjAwMC5saW5lcy4uLnJlcGxhY2UoIlxcbiIsICIgIiknLAorICAgICAgICdyZXBsYWNlIHNpbmdsZSBjaGFyYWN0ZXIsIGJpZyBzdHJpbmcnLCAxMCkKK2RlZiByZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXJfYmlnKFNUUik6CisgICAgcyA9IF9nZXRfMjAwMF9saW5lcyhTVFIpCisgICAgZnJvbV9zdHIgPSBTVFIoIlxuIikKKyAgICB0b19zdHIgPSBTVFIoIiAiKQorICAgIHNfcmVwbGFjZSA9IHMucmVwbGFjZQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19yZXBsYWNlKGZyb21fc3RyLCB0b19zdHIpCisKK0B1c2VzX3JlCitAYmVuY2goJ3JlLnN1YigiXFxuIiwgIiAiLCAiLi4udGV4dC53aXRoLjIwMDAubGluZXMuLi4iKScsCisgICAgICAgJ3JlcGxhY2Ugc2luZ2xlIGNoYXJhY3RlciwgYmlnIHN0cmluZycsIDEwKQorZGVmIHJlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9iaWdfcmUoU1RSKToKKyAgICBzID0gX2dldF8yMDAwX2xpbmVzKFNUUikKKyAgICBwYXQgPSByZS5jb21waWxlKFNUUigiXG4iKSkKKyAgICB0b19zdHIgPSBTVFIoIiAiKQorICAgIHBhdF9zdWIgPSBwYXQuc3ViCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBwYXRfc3ViKHRvX3N0ciwgcykKKworCitAYmVuY2goJ2RuYS5yZXBsYWNlKCJBVEMiLCAiQVRUIiknLAorICAgICAgICdyZXBsYWNlIG11bHRpcGxlIGNoYXJhY3RlcnMsIGRuYScsIDEwKQorZGVmIHJlcGxhY2VfbXVsdGlwbGVfY2hhcmFjdGVyc19kbmEoU1RSKToKKyAgICBzZXEgPSBfZ2V0X2RuYShTVFIpCisgICAgZnJvbV9zdHIgPSBTVFIoIkFUQyIpCisgICAgdG9fc3RyID0gU1RSKCJBVFQiKQorICAgIHNlcV9yZXBsYWNlID0gc2VxLnJlcGxhY2UKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNlcV9yZXBsYWNlKGZyb21fc3RyLCB0b19zdHIpCisKKyMgVGhpcyBpbmNyZWFzZXMgdGhlIGNoYXJhY3RlciBjb3VudAorQGJlbmNoKCciLi4udGV4dC53aXRoLjIwMDAubmV3bGluZXMuLi5yZXBsYWNlKCJcXG4iLCAiXFxyXFxuIiknLAorICAgICAgICdyZXBsYWNlIGFuZCBleHBhbmQgbXVsdGlwbGUgY2hhcmFjdGVycywgYmlnIHN0cmluZycsIDEwKQorZGVmIHJlcGxhY2VfbXVsdGlwbGVfY2hhcmFjdGVyX2JpZyhTVFIpOgorICAgIHMgPSBfZ2V0XzIwMDBfbGluZXMoU1RSKQorICAgIGZyb21fc3RyID0gU1RSKCJcbiIpCisgICAgdG9fc3RyID0gU1RSKCJcclxuIikKKyAgICBzX3JlcGxhY2UgPSBzLnJlcGxhY2UKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfcmVwbGFjZShmcm9tX3N0ciwgdG9fc3RyKQorCisKKyMgVGhpcyBkZWNyZWFzZXMgdGhlIGNoYXJhY3RlciBjb3VudAorQGJlbmNoKCciV2hlbiBzaGFsbCB3ZSB0aHJlZSBtZWV0IGFnYWluPyIucmVwbGFjZSgiZWUiLCAiIiknLAorICAgICAgICdyZXBsYWNlL3JlbW92ZSBtdWx0aXBsZSBjaGFyYWN0ZXJzJywgMTAwMCkKK2RlZiByZXBsYWNlX211bHRpcGxlX2NoYXJhY3Rlcl9yZW1vdmUoU1RSKToKKyAgICBzID0gU1RSKCJXaGVuIHNoYWxsIHdlIHRocmVlIG1lZXQgYWdhaW4/IikKKyAgICBmcm9tX3N0ciA9IFNUUigiZWUiKQorICAgIHRvX3N0ciA9IFNUUigiIikKKyAgICBzX3JlcGxhY2UgPSBzLnJlcGxhY2UKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19yZXBsYWNlKGZyb21fc3RyLCB0b19zdHIpCisKKworYmlnX3MgPSAiQSIgKyAoIloiKjEyOCoxMDI0KQorYmlnX3NfYnl0ZXMgPSBieXRlc19mcm9tX3N0cihiaWdfcykKK2JpZ19zX3VuaWNvZGUgPSB1bmljb2RlX2Zyb21fc3RyKGJpZ19zKQorZGVmIF9nZXRfYmlnX3MoU1RSKToKKyAgICBpZiBTVFIgaXMgVU5JQ09ERTogcmV0dXJuIGJpZ19zX3VuaWNvZGUKKyAgICBpZiBTVFIgaXMgQllURVM6IHJldHVybiBiaWdfc19ieXRlcworICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisKKyMgVGhlIG9sZGVyIHJlcGxhY2UgaW1wbGVtZW50YXRpb24gY291bnRlZCBhbGwgbWF0Y2hlcyBpbgorIyB0aGUgc3RyaW5nIGV2ZW4gd2hlbiBpdCBvbmx5IG5lZWVkIHRvIG1ha2Ugb25lIHJlcGxhY2VtZW50LgorQGJlbmNoKCcoIkEiICsgKCJaIioxMjgqMTAyNCkpLnJlcGxhY2UoIkEiLCAiQkIiLCAxKScsCisgICAgICAgJ3F1aWNrIHJlcGxhY2Ugc2luZ2xlIGNoYXJhY3RlciBtYXRjaCcsIDEwKQorZGVmIHF1aWNrX3JlcGxhY2Vfc2luZ2xlX21hdGNoKFNUUik6CisgICAgcyA9IF9nZXRfYmlnX3MoU1RSKQorICAgIGZyb21fc3RyID0gU1RSKCJBIikKKyAgICB0b19zdHIgPSBTVFIoIkJCIikKKyAgICBzX3JlcGxhY2UgPSBzLnJlcGxhY2UKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfcmVwbGFjZShmcm9tX3N0ciwgdG9fc3RyLCAxKQorCitAYmVuY2goJygiQSIgKyAoIloiKjEyOCoxMDI0KSkucmVwbGFjZSgiQVpaIiwgIkJCWloiLCAxKScsCisgICAgICAgJ3F1aWNrIHJlcGxhY2UgbXVsdGlwbGUgY2hhcmFjdGVyIG1hdGNoJywgMTApCitkZWYgcXVpY2tfcmVwbGFjZV9tdWx0aXBsZV9tYXRjaChTVFIpOgorICAgIHMgPSBfZ2V0X2JpZ19zKFNUUikKKyAgICBmcm9tX3N0ciA9IFNUUigiQVpaIikKKyAgICB0b19zdHIgPSBTVFIoIkJCWloiKQorICAgIHNfcmVwbGFjZSA9IHMucmVwbGFjZQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19yZXBsYWNlKGZyb21fc3RyLCB0b19zdHIsIDEpCisKKworIyMjIworCisjIENDUCBkb2VzIGEgbG90IG9mIHRoaXMsIGZvciBpbnRlcm5hdGlvbmFsaXNhdGlvbiBvZiBpbmdhbWUgbWVzc2FnZXMuCitfZm9ybWF0ID0gIlRoZSAlKHRoaW5nKXMgaXMgJShwbGFjZSlzIHRoZSAlKGxvY2F0aW9uKXMuIgorX2Zvcm1hdF9kaWN0ID0geyAidGhpbmciOiJUSElORyIsICJwbGFjZSI6IlBMQUNFIiwgImxvY2F0aW9uIjoiTE9DQVRJT04iLCB9CitfZm9ybWF0X2J5dGVzID0gYnl0ZXNfZnJvbV9zdHIoX2Zvcm1hdCkKK19mb3JtYXRfdW5pY29kZSA9IHVuaWNvZGVfZnJvbV9zdHIoX2Zvcm1hdCkKK19mb3JtYXRfZGljdF9ieXRlcyA9IGRpY3QoKGJ5dGVzX2Zyb21fc3RyKGspLCBieXRlc19mcm9tX3N0cih2KSkgZm9yIChrLHYpIGluIF9mb3JtYXRfZGljdC5pdGVtcygpKQorX2Zvcm1hdF9kaWN0X3VuaWNvZGUgPSBkaWN0KCh1bmljb2RlX2Zyb21fc3RyKGspLCB1bmljb2RlX2Zyb21fc3RyKHYpKSBmb3IgKGssdikgaW4gX2Zvcm1hdF9kaWN0Lml0ZW1zKCkpCisKK2RlZiBfZ2V0X2Zvcm1hdChTVFIpOgorICAgIGlmIFNUUiBpcyBVTklDT0RFOgorICAgICAgICByZXR1cm4gX2Zvcm1hdF91bmljb2RlCisgICAgaWYgU1RSIGlzIEJZVEVTOgorICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCk6CisgICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZFR5cGUKKyAgICAgICAgcmV0dXJuIF9mb3JtYXRfYnl0ZXMKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCitkZWYgX2dldF9mb3JtYXRfZGljdChTVFIpOgorICAgIGlmIFNUUiBpcyBVTklDT0RFOgorICAgICAgICByZXR1cm4gX2Zvcm1hdF9kaWN0X3VuaWNvZGUKKyAgICBpZiBTVFIgaXMgQllURVM6CisgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsKToKKyAgICAgICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkVHlwZQorICAgICAgICByZXR1cm4gX2Zvcm1hdF9kaWN0X2J5dGVzCisgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKKworIyBGb3JtYXR0aW5nLgorQGJlbmNoKCciVGhlICUoazEpcyBpcyAlKGsyKXMgdGhlICUoazMpcy4iJXsiazEiOiJ4IiwiazIiOiJ5IiwiazMiOiJ6Iix9JywKKyAgICAgICAnZm9ybWF0dGluZyBhIHN0cmluZyB0eXBlIHdpdGggYSBkaWN0JywgMTAwMCkKK2RlZiBmb3JtYXRfd2l0aF9kaWN0KFNUUik6CisgICAgcyA9IF9nZXRfZm9ybWF0KFNUUikKKyAgICBkID0gX2dldF9mb3JtYXRfZGljdChTVFIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMgJSBkCisKKworIyMjIyBVcHBlci0gYW5kIGxvd2VyLSBjYXNlIGNvbnZlcnNpb24KKworQGJlbmNoKCcoIldoZXJlIGluIHRoZSB3b3JsZCBpcyBDYXJtZW4gU2FuIERlaWdvPyIqMTApLmxvd2VyKCknLAorICAgICAgICJjYXNlIGNvbnZlcnNpb24gLS0gcmFyZSIsIDEwMDApCitkZWYgbG93ZXJfY29udmVyc2lvbl9yYXJlKFNUUik6CisgICAgcyA9IFNUUigiV2hlcmUgaW4gdGhlIHdvcmxkIGlzIENhcm1lbiBTYW4gRGVpZ28/IioxMCkKKyAgICBzX2xvd2VyID0gcy5sb3dlcgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX2xvd2VyKCkKKworQGJlbmNoKCcoIldIRVJFIElOIFRIRSBXT1JMRCBJUyBDQVJNRU4gU0FOIERFSUdPPyIqMTApLmxvd2VyKCknLAorICAgICAgICJjYXNlIGNvbnZlcnNpb24gLS0gZGVuc2UiLCAxMDAwKQorZGVmIGxvd2VyX2NvbnZlcnNpb25fZGVuc2UoU1RSKToKKyAgICBzID0gU1RSKCJXSEVSRSBJTiBUSEUgV09STEQgSVMgQ0FSTUVOIFNBTiBERUlHTz8iKjEwKQorICAgIHNfbG93ZXIgPSBzLmxvd2VyCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfbG93ZXIoKQorCisKK0BiZW5jaCgnKCJ3SEVSRSBJTiBUSEUgV09STEQgSVMgY0FSTUVOIHNBTiBkRUlHTz8iKjEwKS51cHBlcigpJywKKyAgICAgICAiY2FzZSBjb252ZXJzaW9uIC0tIHJhcmUiLCAxMDAwKQorZGVmIHVwcGVyX2NvbnZlcnNpb25fcmFyZShTVFIpOgorICAgIHMgPSBTVFIoIldoZXJlIGluIHRoZSB3b3JsZCBpcyBDYXJtZW4gU2FuIERlaWdvPyIqMTApCisgICAgc191cHBlciA9IHMudXBwZXIKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc191cHBlcigpCisKK0BiZW5jaCgnKCJ3aGVyZSBpbiB0aGUgd29ybGQgaXMgY2FybWVuIHNhbiBkZWlnbz8iKjEwKS51cHBlcigpJywKKyAgICAgICAiY2FzZSBjb252ZXJzaW9uIC0tIGRlbnNlIiwgMTAwMCkKK2RlZiB1cHBlcl9jb252ZXJzaW9uX2RlbnNlKFNUUik6CisgICAgcyA9IFNUUigid2hlcmUgaW4gdGhlIHdvcmxkIGlzIGNhcm1lbiBzYW4gZGVpZ28/IioxMCkKKyAgICBzX3VwcGVyID0gcy51cHBlcgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3VwcGVyKCkKKworCisjIGVuZCBvZiBiZW5jaG1hcmtzCisKKyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIEJlbmNoVGltZXIodGltZWl0LlRpbWVyKToKKyAgICBkZWYgYmVzdChzZWxmLCByZXBlYXQ9MSk6CisgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIDEwKToKKyAgICAgICAgICAgIG51bWJlciA9IDEwKippCisgICAgICAgICAgICB4ID0gc2VsZi50aW1laXQobnVtYmVyKQorICAgICAgICAgICAgaWYgeCA+IDAuMDI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgdGltZXMgPSBbeF0KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgcmVwZWF0KToKKyAgICAgICAgICAgIHRpbWVzLmFwcGVuZChzZWxmLnRpbWVpdChudW1iZXIpKQorICAgICAgICByZXR1cm4gbWluKHRpbWVzKSAvIG51bWJlcgorCitkZWYgbWFpbigpOgorICAgIChvcHRpb25zLCB0ZXN0X25hbWVzKSA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICBpZiBvcHRpb25zLmJ5dGVzX29ubHkgYW5kIG9wdGlvbnMudW5pY29kZV9vbmx5OgorICAgICAgICByYWlzZSBTeXN0ZW1FeGl0KCJPbmx5IG9uZSBvZiAtLTgtYml0IGFuZCAtLXVuaWNvZGUgYXJlIGFsbG93ZWQiKQorCisgICAgYmVuY2hfZnVuY3Rpb25zID0gW10KKyAgICBmb3IgKGssdikgaW4gZ2xvYmFscygpLml0ZW1zKCk6CisgICAgICAgIGlmIGhhc2F0dHIodiwgImlzX2JlbmNoIik6CisgICAgICAgICAgICBpZiB0ZXN0X25hbWVzOgorICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIHRlc3RfbmFtZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIG5hbWUgaW4gdi5ncm91cDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBOb3Qgc2VsZWN0ZWQsIGlnbm9yZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgb3B0aW9ucy5za2lwX3JlIGFuZCBoYXNhdHRyKHYsICJ1c2VzX3JlIik6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgYmVuY2hfZnVuY3Rpb25zLmFwcGVuZCggKHYuZ3JvdXAsIGssIHYpICkKKyAgICBiZW5jaF9mdW5jdGlvbnMuc29ydCgpCisKKyAgICBwKCJieXRlc1x0dW5pY29kZSIpCisgICAgcCgiKGluIG1zKVx0KGluIG1zKVx0JVx0Y29tbWVudCIpCisKKyAgICBieXRlc190b3RhbCA9IHVuaV90b3RhbCA9IDAuMAorCisgICAgZm9yIHRpdGxlLCBncm91cCBpbiBpdGVydG9vbHMuZ3JvdXBieShiZW5jaF9mdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yLml0ZW1nZXR0ZXIoMCkpOgorICAgICAgICAjIEZsdXNoIGJ1ZmZlciBiZWZvcmUgZWFjaCBncm91cAorICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKyAgICAgICAgcCgiPSIqMTAsIHRpdGxlKQorICAgICAgICBmb3IgKF8sIGssIHYpIGluIGdyb3VwOgorICAgICAgICAgICAgaWYgaGFzYXR0cih2LCAiaXNfYmVuY2giKToKKyAgICAgICAgICAgICAgICBieXRlc190aW1lID0gMC4wCisgICAgICAgICAgICAgICAgYnl0ZXNfdGltZV9zID0gIiAtICIKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3B0aW9ucy51bmljb2RlX29ubHk6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX3RpbWUgPSBCZW5jaFRpbWVyKCJfX21haW5fXy4lcyhfX21haW5fXy5CWVRFUykiICUgKGssKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgX19tYWluX18iKS5iZXN0KFJFUEVBVCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX3RpbWVfcyA9ICIlLjJmIiAlICgxMDAwICogYnl0ZXNfdGltZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX3RvdGFsICs9IGJ5dGVzX3RpbWUKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFVuc3VwcG9ydGVkVHlwZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX3RpbWVfcyA9ICJOL0EiCisgICAgICAgICAgICAgICAgdW5pX3RpbWUgPSAwLjAKKyAgICAgICAgICAgICAgICB1bmlfdGltZV9zID0gIiAtICIKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3B0aW9ucy5ieXRlc19vbmx5OgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICB1bmlfdGltZSA9IEJlbmNoVGltZXIoIl9fbWFpbl9fLiVzKF9fbWFpbl9fLlVOSUNPREUpIiAlIChrLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltcG9ydCBfX21haW5fXyIpLmJlc3QoUkVQRUFUKQorICAgICAgICAgICAgICAgICAgICAgICAgdW5pX3RpbWVfcyA9ICIlLjJmIiAlICgxMDAwICogdW5pX3RpbWUpCisgICAgICAgICAgICAgICAgICAgICAgICB1bmlfdG90YWwgKz0gdW5pX3RpbWUKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFVuc3VwcG9ydGVkVHlwZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuaV90aW1lX3MgPSAiTi9BIgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgYXZlcmFnZSA9IGJ5dGVzX3RpbWUvdW5pX3RpbWUKKyAgICAgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBhdmVyYWdlID0gMC4wCisgICAgICAgICAgICAgICAgcCgiJXNcdCVzXHQlLjFmXHQlcyAoKiVkKSIgJSAoCisgICAgICAgICAgICAgICAgICAgIGJ5dGVzX3RpbWVfcywgdW5pX3RpbWVfcywgMTAwLiphdmVyYWdlLAorICAgICAgICAgICAgICAgICAgICB2LmNvbW1lbnQsIHYucmVwZWF0X2NvdW50KSkKKworICAgIGlmIGJ5dGVzX3RvdGFsID09IHVuaV90b3RhbCA9PSAwLjA6CisgICAgICAgIHAoIlRoYXQgd2FzIHppcHB5ISIpCisgICAgZWxzZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmF0aW8gPSBieXRlc190b3RhbC91bmlfdG90YWwKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICAgICAgcmF0aW8gPSAwLjAKKyAgICAgICAgcCgiJS4yZlx0JS4yZlx0JS4xZlx0JXMiICUgKAorICAgICAgICAgICAgMTAwMCpieXRlc190b3RhbCwgMTAwMCp1bmlfdG90YWwsIDEwMC4qcmF0aW8sCisgICAgICAgICAgICAiVE9UQUwiKSkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL3VuaWNvZGUvY29tcGFyZWNvZGVjcy5weSBiL1Rvb2xzL3VuaWNvZGUvY29tcGFyZWNvZGVjcy5weQppbmRleCAwMTMwM2RiLi42NTI1ZGRmIDEwMDY0NAotLS0gYS9Ub29scy91bmljb2RlL2NvbXBhcmVjb2RlY3MucHkKKysrIGIvVG9vbHMvdW5pY29kZS9jb21wYXJlY29kZWNzLnB5CkBAIC0xNCw3ICsxNCw3IEBACiAgICAgcHJpbnQoJ0NvbXBhcmluZyBlbmNvZGluZy9kZWNvZGluZyBvZiAgICVyIGFuZCAgICVyJyAlIChlbmNvZGluZzEsIGVuY29kaW5nMikpCiAgICAgbWlzbWF0Y2ggPSAwCiAgICAgIyBDaGVjayBlbmNvZGluZwotICAgIGZvciBpIGluIHJhbmdlKHN5cy5tYXh1bmljb2RlKToKKyAgICBmb3IgaSBpbiByYW5nZShzeXMubWF4dW5pY29kZSsxKToKICAgICAgICAgdSA9IGNocihpKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBjMSA9IHUuZW5jb2RlKGVuY29kaW5nMSkKZGlmZiAtLWdpdCBhL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkgYi9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5CmluZGV4IDdlN2Q2ZDAuLmY1YTFhZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkKKysrIGIvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weQpAQCAtMTAyLDcgKzEwMiw3IEBACiAgICAgICAgICAgICBjb21tZW50ID0gJycKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGNvbW1lbnQgPSBjb21tZW50WzE6XS5zdHJpcCgpCi0gICAgICAgIGlmIGVuYyA8IDI1NjoKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZW5jLCB0dXBsZSkgYW5kIGVuYyA8IDI1NjoKICAgICAgICAgICAgIGlmIGVuYyBpbiB1bm1hcHBlZDoKICAgICAgICAgICAgICAgICB1bm1hcHBlZC5yZW1vdmUoZW5jKQogICAgICAgICAgICAgaWYgZW5jID09IHVuaToKQEAgLTIwMiwxMSArMjAyLDEwIEBACiAgICAgIyBBbmFseXplIG1hcCBhbmQgY3JlYXRlIHRhYmxlIGRpY3QKICAgICBtYXBwaW5ncyA9IHNvcnRlZChtYXAuaXRlbXMoKSkKICAgICB0YWJsZSA9IHt9Ci0gICAgbWF4a2V5ID0gMAorICAgIG1heGtleSA9IDI1NQogICAgIGlmICdJREVOVElUWScgaW4gbWFwOgogICAgICAgICBmb3Iga2V5IGluIHJhbmdlKDI1Nik6CiAgICAgICAgICAgICB0YWJsZVtrZXldID0gKGtleSwgJycpCi0gICAgICAgIG1heGtleSA9IDI1NQogICAgICAgICBkZWwgbWFwWydJREVOVElUWSddCiAgICAgZm9yIG1hcGtleSwgbWFwdmFsdWUgaW4gbWFwcGluZ3M6CiAgICAgICAgIG1hcGNvbW1lbnQgPSAnJwpAQCAtMjI0LDYgKzIyMyw3IEBACiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAjIENyZWF0ZSB0YWJsZSBjb2RlCisgICAgbWF4Y2hhciA9IDAKICAgICBmb3Iga2V5IGluIHJhbmdlKG1heGtleSArIDEpOgogICAgICAgICBpZiBrZXkgbm90IGluIHRhYmxlOgogICAgICAgICAgICAgbWFwdmFsdWUgPSBNSVNTSU5HX0NPREUKQEAgLTIzOCw2ICsyMzgsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG1hcGNoYXIgPSBjaHIobWFwdmFsdWUpCisgICAgICAgIG1heGNoYXIgPSBtYXgobWF4Y2hhciwgb3JkKG1hcGNoYXIpKQogICAgICAgICBpZiBtYXBjb21tZW50IGFuZCBjb21tZW50czoKICAgICAgICAgICAgIGFwcGVuZCgnICAgICVhIFx0IyAgJXMgLT4gJXMnICUgKG1hcGNoYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhleHJlcHIoa2V5LCBrZXlfcHJlY2lzaW9uKSwKQEAgLTI0NSw2ICsyNDYsOCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgYXBwZW5kKCcgICAgJWEnICUgbWFwY2hhcikKIAorICAgIGlmIG1heGNoYXIgPCAyNTY6CisgICAgICAgIGFwcGVuZCgnICAgICVhIFx0IyMgV2lkZW4gdG8gVUNTMiBmb3Igb3B0aW1pemF0aW9uJyAlIFVOSV9VTkRFRklORUQpCiAgICAgYXBwZW5kKCcpJykKICAgICByZXR1cm4gbAogCmRpZmYgLS1naXQgYS9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weSBiL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5CmluZGV4IGQ1MDMxOTAuLmQ4M2NmNjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5CisrKyBiL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5CkBAIC0yMSwxNyArMjEsMjMgQEAKICMgMjAwNC0wNS0yOSBwZXJreSBhZGQgZWFzdCBhc2lhbiB3aWR0aCBpbmZvcm1hdGlvbgogIyAyMDA2LTAzLTEwIG12bCAgdXBkYXRlIHRvIFVuaWNvZGUgNC4xOyBhZGQgVUNEIDMuMiBkZWx0YQogIyAyMDA4LTA2LTExIGdiICAgYWRkIFBSSU5UQUJMRV9NQVNLIGZvciBBdHN1byBJc2hpbW90bydzIGFzY2lpKCkgcGF0Y2gKKyMgMjAxMS0xMC0yMSBlemlvIGFkZCBzdXBwb3J0IGZvciBuYW1lIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcworIyAyMDEyLTAxICAgIGJlbmphbWluIGFkZCBmdWxsIGNhc2UgbWFwcGluZ3MKICMKICMgd3JpdHRlbiBieSBGcmVkcmlrIEx1bmRoIChmcmVkcmlrQHB5dGhvbndhcmUuY29tKQogIwogCi1pbXBvcnQgc3lzLCBvcywgemlwZmlsZQoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgemlwZmlsZQorCitmcm9tIHRleHR3cmFwIGltcG9ydCBkZWRlbnQKIAogU0NSSVBUID0gc3lzLmFyZ3ZbMF0KIFZFUlNJT04gPSAiMy4yIgogCiAjIFRoZSBVbmljb2RlIERhdGFiYXNlCi1VTklEQVRBX1ZFUlNJT04gPSAiNi4wLjAiCitVTklEQVRBX1ZFUlNJT04gPSAiNi4xLjAiCiBVTklDT0RFX0RBVEEgPSAiVW5pY29kZURhdGElcy50eHQiCiBDT01QT1NJVElPTl9FWENMVVNJT05TID0gIkNvbXBvc2l0aW9uRXhjbHVzaW9ucyVzLnR4dCIKIEVBU1RBU0lBTl9XSURUSCA9ICJFYXN0QXNpYW5XaWR0aCVzLnR4dCIKQEAgLTM5LDYgKzQ1LDE5IEBACiBERVJJVkVEX0NPUkVfUFJPUEVSVElFUyA9ICJEZXJpdmVkQ29yZVByb3BlcnRpZXMlcy50eHQiCiBERVJJVkVETk9STUFMSVpBVElPTl9QUk9QUyA9ICJEZXJpdmVkTm9ybWFsaXphdGlvblByb3BzJXMudHh0IgogTElORV9CUkVBSyA9ICJMaW5lQnJlYWslcy50eHQiCitOQU1FX0FMSUFTRVMgPSAiTmFtZUFsaWFzZXMlcy50eHQiCitOQU1FRF9TRVFVRU5DRVMgPSAiTmFtZWRTZXF1ZW5jZXMlcy50eHQiCitTUEVDSUFMX0NBU0lORyA9ICJTcGVjaWFsQ2FzaW5nJXMudHh0IgorQ0FTRV9GT0xESU5HID0gIkNhc2VGb2xkaW5nJXMudHh0IgorCisjIFByaXZhdGUgVXNlIEFyZWFzIC0tIGluIHBsYW5lcyAxLCAxNSwgMTYKK1BVQV8xID0gcmFuZ2UoMHhFMDAwLCAweEY5MDApCitQVUFfMTUgPSByYW5nZSgweEYwMDAwLCAweEZGRkZFKQorUFVBXzE2ID0gcmFuZ2UoMHgxMDAwMDAsIDB4MTBGRkZFKQorCisjIHdlIHVzZSB0aGlzIHJhbmdlcyBvZiBQVUFfMTUgdG8gc3RvcmUgbmFtZSBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMKK05BTUVfQUxJQVNFU19TVEFSVCA9IDB4RjAwMDAKK05BTUVEX1NFUVVFTkNFU19TVEFSVCA9IDB4RjAyMDAKIAogb2xkX3ZlcnNpb25zID0gWyIzLjIuMCJdCiAKQEAgLTY3LDEzICs4NiwxNSBAQAogWElEX1NUQVJUX01BU0sgPSAweDEwMAogWElEX0NPTlRJTlVFX01BU0sgPSAweDIwMAogUFJJTlRBQkxFX01BU0sgPSAweDQwMAotTk9ERUxUQV9NQVNLID0gMHg4MDAKLU5VTUVSSUNfTUFTSyA9IDB4MTAwMAorTlVNRVJJQ19NQVNLID0gMHg4MDAKK0NBU0VfSUdOT1JBQkxFX01BU0sgPSAweDEwMDAKK0NBU0VEX01BU0sgPSAweDIwMDAKK0VYVEVOREVEX0NBU0VfTUFTSyA9IDB4NDAwMAogCiAjIHRoZXNlIHJhbmdlcyBuZWVkIHRvIG1hdGNoIHVuaWNvZGVkYXRhLmM6aXNfdW5pZmllZF9pZGVvZ3JhcGgKIGNqa19yYW5nZXMgPSBbCiAgICAgKCczNDAwJywgJzREQjUnKSwKLSAgICAoJzRFMDAnLCAnOUZDQicpLAorICAgICgnNEUwMCcsICc5RkNDJyksCiAgICAgKCcyMDAwMCcsICcyQTZENicpLAogICAgICgnMkE3MDAnLCAnMkI3MzQnKSwKICAgICAoJzJCNzQwJywgJzJCODFEJykKQEAgLTM2Nyw2ICszODgsNyBAQAogICAgIG51bWVyaWMgPSB7fQogICAgIHNwYWNlcyA9IFtdCiAgICAgbGluZWJyZWFrcyA9IFtdCisgICAgZXh0cmFfY2FzaW5nID0gW10KIAogICAgIGZvciBjaGFyIGluIHVuaWNvZGUuY2hhcnM6CiAgICAgICAgIHJlY29yZCA9IHVuaWNvZGUudGFibGVbY2hhcl0KQEAgLTM3OSw3ICs0MDEsNyBAQAogICAgICAgICAgICAgZGVsdGEgPSBUcnVlCiAgICAgICAgICAgICBpZiBjYXRlZ29yeSBpbiBbIkxtIiwgIkx0IiwgIkx1IiwgIkxsIiwgIkxvIl06CiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gQUxQSEFfTUFTSwotICAgICAgICAgICAgaWYgY2F0ZWdvcnkgPT0gIkxsIjoKKyAgICAgICAgICAgIGlmICJMb3dlcmNhc2UiIGluIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gTE9XRVJfTUFTSwogICAgICAgICAgICAgaWYgJ0xpbmVfQnJlYWsnIGluIHByb3BlcnRpZXMgb3IgYmlkaXJlY3Rpb25hbCA9PSAiQiI6CiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gTElORUJSRUFLX01BU0sKQEAgLTM4OSw3ICs0MTEsNyBAQAogICAgICAgICAgICAgICAgIHNwYWNlcy5hcHBlbmQoY2hhcikKICAgICAgICAgICAgIGlmIGNhdGVnb3J5ID09ICJMdCI6CiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gVElUTEVfTUFTSwotICAgICAgICAgICAgaWYgY2F0ZWdvcnkgPT0gIkx1IjoKKyAgICAgICAgICAgIGlmICJVcHBlcmNhc2UiIGluIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gVVBQRVJfTUFTSwogICAgICAgICAgICAgaWYgY2hhciA9PSBvcmQoIiAiKSBvciBjYXRlZ29yeVswXSBub3QgaW4gKCJDIiwgIloiKToKICAgICAgICAgICAgICAgICBmbGFncyB8PSBQUklOVEFCTEVfTUFTSwpAQCAtMzk3LDcgKzQxOSwxMiBAQAogICAgICAgICAgICAgICAgIGZsYWdzIHw9IFhJRF9TVEFSVF9NQVNLCiAgICAgICAgICAgICBpZiAiWElEX0NvbnRpbnVlIiBpbiBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgICAgIGZsYWdzIHw9IFhJRF9DT05USU5VRV9NQVNLCi0gICAgICAgICAgICAjIHVzZSBkZWx0YSBwcmVkaWN0b3IgZm9yIHVwcGVyL2xvd2VyL3RpdGxlIGlmIGl0IGZpdHMKKyAgICAgICAgICAgIGlmICJDYXNlZCIgaW4gcHJvcGVydGllczoKKyAgICAgICAgICAgICAgICBmbGFncyB8PSBDQVNFRF9NQVNLCisgICAgICAgICAgICBpZiAiQ2FzZV9JZ25vcmFibGUiIGluIHByb3BlcnRpZXM6CisgICAgICAgICAgICAgICAgZmxhZ3MgfD0gQ0FTRV9JR05PUkFCTEVfTUFTSworICAgICAgICAgICAgc2MgPSB1bmljb2RlLnNwZWNpYWxfY2FzaW5nLmdldChjaGFyKQorICAgICAgICAgICAgY2YgPSB1bmljb2RlLmNhc2VfZm9sZGluZy5nZXQoY2hhciwgW2NoYXJdKQogICAgICAgICAgICAgaWYgcmVjb3JkWzEyXToKICAgICAgICAgICAgICAgICB1cHBlciA9IGludChyZWNvcmRbMTJdLCAxNikKICAgICAgICAgICAgIGVsc2U6CkBAIC00MDksMjMgKzQzNiwzOSBAQAogICAgICAgICAgICAgaWYgcmVjb3JkWzE0XToKICAgICAgICAgICAgICAgICB0aXRsZSA9IGludChyZWNvcmRbMTRdLCAxNikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBVQ0QuaHRtbCBzYXlzIHRoYXQgYSBtaXNzaW5nIHRpdGxlIGNoYXIgbWVhbnMgdGhhdAotICAgICAgICAgICAgICAgICMgaXQgZGVmYXVsdHMgdG8gdGhlIHVwcGVyY2FzZSBjaGFyYWN0ZXIsIG5vdCB0byB0aGUKLSAgICAgICAgICAgICAgICAjIGNoYXJhY3RlciBpdHNlbGYuIEFwcGFyZW50bHksIGluIHRoZSBjdXJyZW50IFVDRCAoNS54KQotICAgICAgICAgICAgICAgICMgdGhpcyBmZWF0dXJlIGlzIG5ldmVyIHVzZWQKICAgICAgICAgICAgICAgICB0aXRsZSA9IHVwcGVyCi0gICAgICAgICAgICB1cHBlcl9kID0gdXBwZXIgLSBjaGFyCi0gICAgICAgICAgICBsb3dlcl9kID0gbG93ZXIgLSBjaGFyCi0gICAgICAgICAgICB0aXRsZV9kID0gdGl0bGUgLSBjaGFyCi0gICAgICAgICAgICBpZiAtMzI3NjggPD0gdXBwZXJfZCA8PSAzMjc2NyBhbmQgXAotICAgICAgICAgICAgICAgLTMyNzY4IDw9IGxvd2VyX2QgPD0gMzI3NjcgYW5kIFwKLSAgICAgICAgICAgICAgIC0zMjc2OCA8PSB0aXRsZV9kIDw9IDMyNzY3OgotICAgICAgICAgICAgICAgICMgdXNlIGRlbHRhcwotICAgICAgICAgICAgICAgIHVwcGVyID0gdXBwZXJfZCAmIDB4ZmZmZgotICAgICAgICAgICAgICAgIGxvd2VyID0gbG93ZXJfZCAmIDB4ZmZmZgotICAgICAgICAgICAgICAgIHRpdGxlID0gdGl0bGVfZCAmIDB4ZmZmZgorICAgICAgICAgICAgaWYgc2MgaXMgTm9uZSBhbmQgY2YgIT0gW2xvd2VyXToKKyAgICAgICAgICAgICAgICBzYyA9IChbbG93ZXJdLCBbdGl0bGVdLCBbdXBwZXJdKQorICAgICAgICAgICAgaWYgc2MgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBpZiB1cHBlciA9PSBsb3dlciA9PSB0aXRsZToKKyAgICAgICAgICAgICAgICAgICAgdXBwZXIgPSBsb3dlciA9IHRpdGxlID0gMAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHVwcGVyID0gdXBwZXIgLSBjaGFyCisgICAgICAgICAgICAgICAgICAgIGxvd2VyID0gbG93ZXIgLSBjaGFyCisgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdGl0bGUgLSBjaGFyCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoYWJzKHVwcGVyKSA8PSAyMTQ3NDgzNjQ3IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFicyhsb3dlcikgPD0gMjE0NzQ4MzY0NyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnModGl0bGUpIDw9IDIxNDc0ODM2NDcpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZsYWdzIHw9IE5PREVMVEFfTUFTSworICAgICAgICAgICAgICAgICMgVGhpcyBoYXBwZW5zIGVpdGhlciB3aGVuIHNvbWUgY2hhcmFjdGVyIG1hcHMgdG8gbW9yZSB0aGFuIG9uZQorICAgICAgICAgICAgICAgICMgY2hhcmFjdGVyIGluIHVwcGVyY2FzZSwgbG93ZXJjYXNlLCBvciB0aXRsZWNhc2Ugb3IgdGhlCisgICAgICAgICAgICAgICAgIyBjYXNlZm9sZGVkIHZlcnNpb24gb2YgdGhlIGNoYXJhY3RlciBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAjIGxvd2VyY2FzZS4gVGhlIGV4dHJhIGNoYXJhY3RlcnMgYXJlIHN0b3JlZCBpbiBhIGRpZmZlcmVudAorICAgICAgICAgICAgICAgICMgYXJyYXkuCisgICAgICAgICAgICAgICAgZmxhZ3MgfD0gRVhURU5ERURfQ0FTRV9NQVNLCisgICAgICAgICAgICAgICAgbG93ZXIgPSBsZW4oZXh0cmFfY2FzaW5nKSB8IChsZW4oc2NbMF0pIDw8IDI0KQorICAgICAgICAgICAgICAgIGV4dHJhX2Nhc2luZy5leHRlbmQoc2NbMF0pCisgICAgICAgICAgICAgICAgaWYgY2YgIT0gc2NbMF06CisgICAgICAgICAgICAgICAgICAgIGxvd2VyIHw9IGxlbihjZikgPDwgMjAKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFfY2FzaW5nLmV4dGVuZChjZikKKyAgICAgICAgICAgICAgICB1cHBlciA9IGxlbihleHRyYV9jYXNpbmcpIHwgKGxlbihzY1syXSkgPDwgMjQpCisgICAgICAgICAgICAgICAgZXh0cmFfY2FzaW5nLmV4dGVuZChzY1syXSkKKyAgICAgICAgICAgICAgICAjIFRpdGxlIGlzIHByb2JhYmx5IGVxdWFsIHRvIHVwcGVyLgorICAgICAgICAgICAgICAgIGlmIHNjWzFdID09IHNjWzJdOgorICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHVwcGVyCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSBsZW4oZXh0cmFfY2FzaW5nKSB8IChsZW4oc2NbMV0pIDw8IDI0KQorICAgICAgICAgICAgICAgICAgICBleHRyYV9jYXNpbmcuZXh0ZW5kKHNjWzFdKQogICAgICAgICAgICAgIyBkZWNpbWFsIGRpZ2l0LCBpbnRlZ2VyIGRpZ2l0CiAgICAgICAgICAgICBkZWNpbWFsID0gMAogICAgICAgICAgICAgaWYgcmVjb3JkWzZdOgpAQCAtNDUyLDYgKzQ5NSw3IEBACiAgICAgcHJpbnQoc3VtKG1hcChsZW4sIG51bWVyaWMudmFsdWVzKCkpKSwgIm51bWVyaWMgY29kZSBwb2ludHMiKQogICAgIHByaW50KGxlbihzcGFjZXMpLCAid2hpdGVzcGFjZSBjb2RlIHBvaW50cyIpCiAgICAgcHJpbnQobGVuKGxpbmVicmVha3MpLCAibGluZWJyZWFrIGNvZGUgcG9pbnRzIikKKyAgICBwcmludChsZW4oZXh0cmFfY2FzaW5nKSwgImV4dGVuZGVkIGNhc2UgYXJyYXkiKQogCiAgICAgcHJpbnQoIi0tLSBXcml0aW5nIiwgRklMRSwgIi4uLiIpCiAKQEAgLTQ2NSw2ICs1MDksMTQgQEAKICAgICBwcmludCgifTsiLCBmaWxlPWZwKQogICAgIHByaW50KGZpbGU9ZnApCiAKKyAgICBwcmludCgiLyogZXh0ZW5kZWQgY2FzZSBtYXBwaW5ncyAqLyIsIGZpbGU9ZnApCisgICAgcHJpbnQoZmlsZT1mcCkKKyAgICBwcmludCgiY29uc3QgUHlfVUNTNCBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZVtdID0geyIsIGZpbGU9ZnApCisgICAgZm9yIGMgaW4gZXh0cmFfY2FzaW5nOgorICAgICAgICBwcmludCgiICAgICVkLCIgJSBjLCBmaWxlPWZwKQorICAgIHByaW50KCJ9OyIsIGZpbGU9ZnApCisgICAgcHJpbnQoZmlsZT1mcCkKKwogICAgICMgc3BsaXQgZGVjb21wb3NpdGlvbiBpbmRleCB0YWJsZQogICAgIGluZGV4MSwgaW5kZXgyLCBzaGlmdCA9IHNwbGl0YmlucyhpbmRleCwgdHJhY2UpCiAKQEAgLTY5Miw2ICs3NDQsMzkgQEAKICAgICBwcmludCgiLyogbmFtZS0+Y29kZSBkaWN0aW9uYXJ5ICovIiwgZmlsZT1mcCkKICAgICBjb2RlaGFzaC5kdW1wKGZwLCB0cmFjZSkKIAorICAgIHByaW50KGZpbGU9ZnApCisgICAgcHJpbnQoJ3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgYWxpYXNlc19zdGFydCA9ICUjeDsnICUKKyAgICAgICAgICBOQU1FX0FMSUFTRVNfU1RBUlQsIGZpbGU9ZnApCisgICAgcHJpbnQoJ3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgYWxpYXNlc19lbmQgPSAlI3g7JyAlCisgICAgICAgICAgKE5BTUVfQUxJQVNFU19TVEFSVCArIGxlbih1bmljb2RlLmFsaWFzZXMpKSwgZmlsZT1mcCkKKworICAgIHByaW50KCdzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG5hbWVfYWxpYXNlc1tdID0geycsIGZpbGU9ZnApCisgICAgZm9yIG5hbWUsIGNvZGVwb2ludCBpbiB1bmljb2RlLmFsaWFzZXM6CisgICAgICAgIHByaW50KCcgICAgMHglMDRYLCcgJSBjb2RlcG9pbnQsIGZpbGU9ZnApCisgICAgcHJpbnQoJ307JywgZmlsZT1mcCkKKworICAgICMgSW4gVW5pY29kZSA2LjAuMCwgdGhlIHNlcXVlbmNlcyBjb250YWluIGF0IG1vc3QgNCBCTVAgY2hhcnMsCisgICAgIyBzbyB3ZSBhcmUgdXNpbmcgUHlfVUNTMiBzZXFbNF0uICBUaGlzIG5lZWRzIHRvIGJlIHVwZGF0ZWQgaWYgbG9uZ2VyCisgICAgIyBzZXF1ZW5jZXMgb3Igc2VxdWVuY2VzIHdpdGggbm9uLUJNUCBjaGFycyBhcmUgYWRkZWQuCisgICAgIyB1bmljb2RlZGF0YV9sb29rdXAgc2hvdWxkIGJlIGFkYXB0ZWQgdG9vLgorICAgIHByaW50KGRlZGVudCgiIiIKKyAgICAgICAgdHlwZWRlZiBzdHJ1Y3QgTmFtZWRTZXF1ZW5jZSB7CisgICAgICAgICAgICBpbnQgc2VxbGVuOworICAgICAgICAgICAgUHlfVUNTMiBzZXFbNF07CisgICAgICAgIH0gbmFtZWRfc2VxdWVuY2U7CisgICAgICAgICIiIiksIGZpbGU9ZnApCisKKyAgICBwcmludCgnc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBuYW1lZF9zZXF1ZW5jZXNfc3RhcnQgPSAlI3g7JyAlCisgICAgICAgICAgTkFNRURfU0VRVUVOQ0VTX1NUQVJULCBmaWxlPWZwKQorICAgIHByaW50KCdzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG5hbWVkX3NlcXVlbmNlc19lbmQgPSAlI3g7JyAlCisgICAgICAgICAgKE5BTUVEX1NFUVVFTkNFU19TVEFSVCArIGxlbih1bmljb2RlLm5hbWVkX3NlcXVlbmNlcykpLCBmaWxlPWZwKQorCisgICAgcHJpbnQoJ3N0YXRpYyBjb25zdCBuYW1lZF9zZXF1ZW5jZSBuYW1lZF9zZXF1ZW5jZXNbXSA9IHsnLCBmaWxlPWZwKQorICAgIGZvciBuYW1lLCBzZXF1ZW5jZSBpbiB1bmljb2RlLm5hbWVkX3NlcXVlbmNlczoKKyAgICAgICAgc2VxX3N0ciA9ICcsICcuam9pbignMHglMDRYJyAlIGNwIGZvciBjcCBpbiBzZXF1ZW5jZSkKKyAgICAgICAgcHJpbnQoJyAgICB7JWQsIHslc319LCcgJSAobGVuKHNlcXVlbmNlKSwgc2VxX3N0ciksIGZpbGU9ZnApCisgICAgcHJpbnQoJ307JywgZmlsZT1mcCkKKwogICAgIGZwLmNsb3NlKCkKIAogCkBAIC03MjYsNyArODExLDExIEBACiAgICAgICAgICAgICBmb3IgayBpbiByYW5nZShsZW4ob2xkLnRhYmxlW2ldKSk6CiAgICAgICAgICAgICAgICAgaWYgb2xkLnRhYmxlW2ldW2tdICE9IG5ldy50YWJsZVtpXVtrXToKICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBvbGQudGFibGVbaV1ba10KLSAgICAgICAgICAgICAgICAgICAgaWYgayA9PSAyOgorICAgICAgICAgICAgICAgICAgICBpZiBrID09IDEgYW5kIGkgaW4gUFVBXzE1OgorICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgbmFtZSBpcyBub3Qgc2V0IGluIHRoZSBvbGQudGFibGUsIGJ1dCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgbmV3LnRhYmxlIHdlIGFyZSB1c2luZyBpdCBmb3IgYWxpYXNlcyBhbmQgbmFtZWQgc2VxCisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgdmFsdWUgPT0gJycKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBrID09IDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAjcHJpbnQgIkNBVEVHT1JZIixoZXgoaSksIG9sZC50YWJsZVtpXVtrXSwgbmV3LnRhYmxlW2ldW2tdCiAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeV9jaGFuZ2VzW2ldID0gQ0FURUdPUllfTkFNRVMuaW5kZXgodmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgayA9PSA0OgpAQCAtODE2LDE1ICs5MDUsMTUgQEAKICAgICAgICAgICAgICAgICAgZXhwYW5kPTEsCiAgICAgICAgICAgICAgICAgIGNqa19jaGVjaz1UcnVlKToKICAgICAgICAgc2VsZi5jaGFuZ2VkID0gW10KLSAgICAgICAgZmlsZSA9IG9wZW5fZGF0YShVTklDT0RFX0RBVEEsIHZlcnNpb24pCiAgICAgICAgIHRhYmxlID0gW05vbmVdICogMHgxMTAwMDAKLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIHMgPSBmaWxlLnJlYWRsaW5lKCkKLSAgICAgICAgICAgIGlmIG5vdCBzOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBzID0gcy5zdHJpcCgpLnNwbGl0KCI7IikKLSAgICAgICAgICAgIGNoYXIgPSBpbnQoc1swXSwgMTYpCi0gICAgICAgICAgICB0YWJsZVtjaGFyXSA9IHMKKyAgICAgICAgd2l0aCBvcGVuX2RhdGEoVU5JQ09ERV9EQVRBLCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgICAgICBzID0gZmlsZS5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgaWYgbm90IHM6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgcyA9IHMuc3RyaXAoKS5zcGxpdCgiOyIpCisgICAgICAgICAgICAgICAgY2hhciA9IGludChzWzBdLCAxNikKKyAgICAgICAgICAgICAgICB0YWJsZVtjaGFyXSA9IHMKIAogICAgICAgICBjamtfcmFuZ2VzX2ZvdW5kID0gW10KIApAQCAtODU1LDMyICs5NDQsNzkgQEAKICAgICAgICAgc2VsZi50YWJsZSA9IHRhYmxlCiAgICAgICAgIHNlbGYuY2hhcnMgPSBsaXN0KHJhbmdlKDB4MTEwMDAwKSkgIyB1bmljb2RlIDMuMgogCi0gICAgICAgIGZpbGUgPSBvcGVuX2RhdGEoQ09NUE9TSVRJT05fRVhDTFVTSU9OUywgdmVyc2lvbikKKyAgICAgICAgIyBjaGVjayBmb3IgbmFtZSBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMsIHNlZSAjMTI3NTMKKyAgICAgICAgIyBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMgYXJlIG5vdCBpbiAzLjIuMAorICAgICAgICBpZiB2ZXJzaW9uICE9ICczLjIuMCc6CisgICAgICAgICAgICBzZWxmLmFsaWFzZXMgPSBbXQorICAgICAgICAgICAgIyBzdG9yZSBhbGlhc2VzIGluIHRoZSBQcml2YXRlIFVzZSBBcmVhIDE1LCBpbiByYW5nZSBVK0YwMDAwLi5VK0YwMEZGLAorICAgICAgICAgICAgIyBpbiBvcmRlciB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgY29tcHJlc3Npb24gYW5kIGxvb2t1cAorICAgICAgICAgICAgIyBhbGdvcml0aG1zIHVzZWQgZm9yIHRoZSBvdGhlciBjaGFyYWN0ZXJzCisgICAgICAgICAgICBwdWFfaW5kZXggPSBOQU1FX0FMSUFTRVNfU1RBUlQKKyAgICAgICAgICAgIHdpdGggb3Blbl9kYXRhKE5BTUVfQUxJQVNFUywgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgICAgICBmb3IgcyBpbiBmaWxlOgorICAgICAgICAgICAgICAgICAgICBzID0gcy5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzIG9yIHMuc3RhcnRzd2l0aCgnIycpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgY2hhciwgbmFtZSwgYWJicmV2ID0gcy5zcGxpdCgnOycpCisgICAgICAgICAgICAgICAgICAgIGNoYXIgPSBpbnQoY2hhciwgMTYpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWxpYXNlcy5hcHBlbmQoKG5hbWUsIGNoYXIpKQorICAgICAgICAgICAgICAgICAgICAjIGFsc28gc3RvcmUgdGhlIG5hbWUgaW4gdGhlIFBVQSAxCisgICAgICAgICAgICAgICAgICAgIHNlbGYudGFibGVbcHVhX2luZGV4XVsxXSA9IG5hbWUKKyAgICAgICAgICAgICAgICAgICAgcHVhX2luZGV4ICs9IDEKKyAgICAgICAgICAgIGFzc2VydCBwdWFfaW5kZXggLSBOQU1FX0FMSUFTRVNfU1RBUlQgPT0gbGVuKHNlbGYuYWxpYXNlcykKKworICAgICAgICAgICAgc2VsZi5uYW1lZF9zZXF1ZW5jZXMgPSBbXQorICAgICAgICAgICAgIyBzdG9yZSBuYW1lZCBzZXFlbmNlcyBpbiB0aGUgUFVBIDEsIGluIHJhbmdlIFUrRjAxMDAuLiwKKyAgICAgICAgICAgICMgaW4gb3JkZXIgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGNvbXByZXNzaW9uIGFuZCBsb29rdXAKKyAgICAgICAgICAgICMgYWxnb3JpdGhtcyB1c2VkIGZvciB0aGUgb3RoZXIgY2hhcmFjdGVycy4KKworICAgICAgICAgICAgYXNzZXJ0IHB1YV9pbmRleCA8IE5BTUVEX1NFUVVFTkNFU19TVEFSVAorICAgICAgICAgICAgcHVhX2luZGV4ID0gTkFNRURfU0VRVUVOQ0VTX1NUQVJUCisgICAgICAgICAgICB3aXRoIG9wZW5fZGF0YShOQU1FRF9TRVFVRU5DRVMsIHZlcnNpb24pIGFzIGZpbGU6CisgICAgICAgICAgICAgICAgZm9yIHMgaW4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgcyA9IHMuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgcyBvciBzLnN0YXJ0c3dpdGgoJyMnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIG5hbWUsIGNoYXJzID0gcy5zcGxpdCgnOycpCisgICAgICAgICAgICAgICAgICAgIGNoYXJzID0gdHVwbGUoaW50KGNoYXIsIDE2KSBmb3IgY2hhciBpbiBjaGFycy5zcGxpdCgpKQorICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIHRoYXQgdGhlIHN0cnVjdHVyZSBkZWZpbmVkIGluIG1ha2V1bmljb2RlbmFtZSBpcyBPSworICAgICAgICAgICAgICAgICAgICBhc3NlcnQgMiA8PSBsZW4oY2hhcnMpIDw9IDQsICJjaGFuZ2UgdGhlIFB5X1VDUzIgYXJyYXkgc2l6ZSIKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGFsbChjIDw9IDB4RkZGRiBmb3IgYyBpbiBjaGFycyksICgidXNlIFB5X1VDUzQgaW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBOYW1lZFNlcXVlbmNlIHN0cnVjdCBhbmQgaW4gdW5pY29kZWRhdGFfbG9va3VwIikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5uYW1lZF9zZXF1ZW5jZXMuYXBwZW5kKChuYW1lLCBjaGFycykpCisgICAgICAgICAgICAgICAgICAgICMgYWxzbyBzdG9yZSB0aGVzZSBpbiB0aGUgUFVBIDEKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50YWJsZVtwdWFfaW5kZXhdWzFdID0gbmFtZQorICAgICAgICAgICAgICAgICAgICBwdWFfaW5kZXggKz0gMQorICAgICAgICAgICAgYXNzZXJ0IHB1YV9pbmRleCAtIE5BTUVEX1NFUVVFTkNFU19TVEFSVCA9PSBsZW4oc2VsZi5uYW1lZF9zZXF1ZW5jZXMpCisKICAgICAgICAgc2VsZi5leGNsdXNpb25zID0ge30KLSAgICAgICAgZm9yIHMgaW4gZmlsZToKLSAgICAgICAgICAgIHMgPSBzLnN0cmlwKCkKLSAgICAgICAgICAgIGlmIG5vdCBzOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBzWzBdID09ICcjJzoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgY2hhciA9IGludChzLnNwbGl0KClbMF0sMTYpCi0gICAgICAgICAgICBzZWxmLmV4Y2x1c2lvbnNbY2hhcl0gPSAxCisgICAgICAgIHdpdGggb3Blbl9kYXRhKENPTVBPU0lUSU9OX0VYQ0xVU0lPTlMsIHZlcnNpb24pIGFzIGZpbGU6CisgICAgICAgICAgICBmb3IgcyBpbiBmaWxlOgorICAgICAgICAgICAgICAgIHMgPSBzLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgczoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBzWzBdID09ICcjJzoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjaGFyID0gaW50KHMuc3BsaXQoKVswXSwxNikKKyAgICAgICAgICAgICAgICBzZWxmLmV4Y2x1c2lvbnNbY2hhcl0gPSAxCiAKICAgICAgICAgd2lkdGhzID0gW05vbmVdICogMHgxMTAwMDAKLSAgICAgICAgZm9yIHMgaW4gb3Blbl9kYXRhKEVBU1RBU0lBTl9XSURUSCwgdmVyc2lvbik6Ci0gICAgICAgICAgICBzID0gcy5zdHJpcCgpCi0gICAgICAgICAgICBpZiBub3QgczoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgc1swXSA9PSAnIyc6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHMgPSBzLnNwbGl0KClbMF0uc3BsaXQoJzsnKQotICAgICAgICAgICAgaWYgJy4uJyBpbiBzWzBdOgotICAgICAgICAgICAgICAgIGZpcnN0LCBsYXN0ID0gW2ludChjLCAxNikgZm9yIGMgaW4gc1swXS5zcGxpdCgnLi4nKV0KLSAgICAgICAgICAgICAgICBjaGFycyA9IGxpc3QocmFuZ2UoZmlyc3QsIGxhc3QrMSkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNoYXJzID0gW2ludChzWzBdLCAxNildCi0gICAgICAgICAgICBmb3IgY2hhciBpbiBjaGFyczoKLSAgICAgICAgICAgICAgICB3aWR0aHNbY2hhcl0gPSBzWzFdCisgICAgICAgIHdpdGggb3Blbl9kYXRhKEVBU1RBU0lBTl9XSURUSCwgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgIGZvciBzIGluIGZpbGU6CisgICAgICAgICAgICAgICAgcyA9IHMuc3RyaXAoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIHNbMF0gPT0gJyMnOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHMgPSBzLnNwbGl0KClbMF0uc3BsaXQoJzsnKQorICAgICAgICAgICAgICAgIGlmICcuLicgaW4gc1swXToKKyAgICAgICAgICAgICAgICAgICAgZmlyc3QsIGxhc3QgPSBbaW50KGMsIDE2KSBmb3IgYyBpbiBzWzBdLnNwbGl0KCcuLicpXQorICAgICAgICAgICAgICAgICAgICBjaGFycyA9IGxpc3QocmFuZ2UoZmlyc3QsIGxhc3QrMSkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgY2hhcnMgPSBbaW50KHNbMF0sIDE2KV0KKyAgICAgICAgICAgICAgICBmb3IgY2hhciBpbiBjaGFyczoKKyAgICAgICAgICAgICAgICAgICAgd2lkdGhzW2NoYXJdID0gc1sxXQorCiAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDB4MTEwMDAwKToKICAgICAgICAgICAgIGlmIHRhYmxlW2ldIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRhYmxlW2ldLmFwcGVuZCh3aWR0aHNbaV0pCkBAIC04ODgsMzYgKzEwMjQsMzkgQEAKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMHgxMTAwMDApOgogICAgICAgICAgICAgaWYgdGFibGVbaV0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdGFibGVbaV0uYXBwZW5kKHNldCgpKQotICAgICAgICBmb3IgcyBpbiBvcGVuX2RhdGEoREVSSVZFRF9DT1JFX1BST1BFUlRJRVMsIHZlcnNpb24pOgotICAgICAgICAgICAgcyA9IHMuc3BsaXQoJyMnLCAxKVswXS5zdHJpcCgpCi0gICAgICAgICAgICBpZiBub3QgczoKLSAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICByLCBwID0gcy5zcGxpdCgiOyIpCi0gICAgICAgICAgICByID0gci5zdHJpcCgpCi0gICAgICAgICAgICBwID0gcC5zdHJpcCgpCi0gICAgICAgICAgICBpZiAiLi4iIGluIHI6Ci0gICAgICAgICAgICAgICAgZmlyc3QsIGxhc3QgPSBbaW50KGMsIDE2KSBmb3IgYyBpbiByLnNwbGl0KCcuLicpXQotICAgICAgICAgICAgICAgIGNoYXJzID0gbGlzdChyYW5nZShmaXJzdCwgbGFzdCsxKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY2hhcnMgPSBbaW50KHIsIDE2KV0KLSAgICAgICAgICAgIGZvciBjaGFyIGluIGNoYXJzOgotICAgICAgICAgICAgICAgIGlmIHRhYmxlW2NoYXJdOgotICAgICAgICAgICAgICAgICAgICAjIFNvbWUgcHJvcGVydGllcyAoZS5nLiBEZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50KQotICAgICAgICAgICAgICAgICAgICAjIGFwcGx5IHRvIHVuYXNzaWduZWQgY29kZSBwb2ludHM7IGlnbm9yZSB0aGVtCi0gICAgICAgICAgICAgICAgICAgIHRhYmxlW2NoYXJdWy0xXS5hZGQocCkKKyAgICAgICAgd2l0aCBvcGVuX2RhdGEoREVSSVZFRF9DT1JFX1BST1BFUlRJRVMsIHZlcnNpb24pIGFzIGZpbGU6CisgICAgICAgICAgICBmb3IgcyBpbiBmaWxlOgorICAgICAgICAgICAgICAgIHMgPSBzLnNwbGl0KCcjJywgMSlbMF0uc3RyaXAoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgIGZvciBzIGluIG9wZW5fZGF0YShMSU5FX0JSRUFLLCB2ZXJzaW9uKToKLSAgICAgICAgICAgIHMgPSBzLnBhcnRpdGlvbignIycpWzBdCi0gICAgICAgICAgICBzID0gW2kuc3RyaXAoKSBmb3IgaSBpbiBzLnNwbGl0KCc7JyldCi0gICAgICAgICAgICBpZiBsZW4ocykgPCAyIG9yIHNbMV0gbm90IGluIE1BTkRBVE9SWV9MSU5FX0JSRUFLUzoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgJy4uJyBub3QgaW4gc1swXToKLSAgICAgICAgICAgICAgICBmaXJzdCA9IGxhc3QgPSBpbnQoc1swXSwgMTYpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZpcnN0LCBsYXN0ID0gW2ludChjLCAxNikgZm9yIGMgaW4gc1swXS5zcGxpdCgnLi4nKV0KLSAgICAgICAgICAgIGZvciBjaGFyIGluIHJhbmdlKGZpcnN0LCBsYXN0KzEpOgotICAgICAgICAgICAgICAgIHRhYmxlW2NoYXJdWy0xXS5hZGQoJ0xpbmVfQnJlYWsnKQorICAgICAgICAgICAgICAgIHIsIHAgPSBzLnNwbGl0KCI7IikKKyAgICAgICAgICAgICAgICByID0gci5zdHJpcCgpCisgICAgICAgICAgICAgICAgcCA9IHAuc3RyaXAoKQorICAgICAgICAgICAgICAgIGlmICIuLiIgaW4gcjoKKyAgICAgICAgICAgICAgICAgICAgZmlyc3QsIGxhc3QgPSBbaW50KGMsIDE2KSBmb3IgYyBpbiByLnNwbGl0KCcuLicpXQorICAgICAgICAgICAgICAgICAgICBjaGFycyA9IGxpc3QocmFuZ2UoZmlyc3QsIGxhc3QrMSkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgY2hhcnMgPSBbaW50KHIsIDE2KV0KKyAgICAgICAgICAgICAgICBmb3IgY2hhciBpbiBjaGFyczoKKyAgICAgICAgICAgICAgICAgICAgaWYgdGFibGVbY2hhcl06CisgICAgICAgICAgICAgICAgICAgICAgICAjIFNvbWUgcHJvcGVydGllcyAoZS5nLiBEZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50KQorICAgICAgICAgICAgICAgICAgICAgICAgIyBhcHBseSB0byB1bmFzc2lnbmVkIGNvZGUgcG9pbnRzOyBpZ25vcmUgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVbY2hhcl1bLTFdLmFkZChwKQorCisgICAgICAgIHdpdGggb3Blbl9kYXRhKExJTkVfQlJFQUssIHZlcnNpb24pIGFzIGZpbGU6CisgICAgICAgICAgICBmb3IgcyBpbiBmaWxlOgorICAgICAgICAgICAgICAgIHMgPSBzLnBhcnRpdGlvbignIycpWzBdCisgICAgICAgICAgICAgICAgcyA9IFtpLnN0cmlwKCkgZm9yIGkgaW4gcy5zcGxpdCgnOycpXQorICAgICAgICAgICAgICAgIGlmIGxlbihzKSA8IDIgb3Igc1sxXSBub3QgaW4gTUFOREFUT1JZX0xJTkVfQlJFQUtTOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmICcuLicgbm90IGluIHNbMF06CisgICAgICAgICAgICAgICAgICAgIGZpcnN0ID0gbGFzdCA9IGludChzWzBdLCAxNikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBmaXJzdCwgbGFzdCA9IFtpbnQoYywgMTYpIGZvciBjIGluIHNbMF0uc3BsaXQoJy4uJyldCisgICAgICAgICAgICAgICAgZm9yIGNoYXIgaW4gcmFuZ2UoZmlyc3QsIGxhc3QrMSk6CisgICAgICAgICAgICAgICAgICAgIHRhYmxlW2NoYXJdWy0xXS5hZGQoJ0xpbmVfQnJlYWsnKQogCiAgICAgICAgICMgV2Ugb25seSB3YW50IHRoZSBxdWlja2NoZWNrIHByb3BlcnRpZXMKICAgICAgICAgIyBGb3JtYXQ6IE5GP19RQzsgWShlcykvTihvKS9NKGF5YmUpCkBAIC05MjgsMzEgKzEwNjcsMzMgQEAKICAgICAgICAgIyBmb3Igb2xkZXIgdmVyc2lvbnMsIGFuZCBubyBkZWx0YSByZWNvcmRzIHdpbGwgYmUgY3JlYXRlZC4KICAgICAgICAgcXVpY2tjaGVja3MgPSBbMF0gKiAweDExMDAwMAogICAgICAgICBxY19vcmRlciA9ICdORkRfUUMgTkZLRF9RQyBORkNfUUMgTkZLQ19RQycuc3BsaXQoKQotICAgICAgICBmb3IgcyBpbiBvcGVuX2RhdGEoREVSSVZFRE5PUk1BTElaQVRJT05fUFJPUFMsIHZlcnNpb24pOgotICAgICAgICAgICAgaWYgJyMnIGluIHM6Ci0gICAgICAgICAgICAgICAgcyA9IHNbOnMuaW5kZXgoJyMnKV0KLSAgICAgICAgICAgIHMgPSBbaS5zdHJpcCgpIGZvciBpIGluIHMuc3BsaXQoJzsnKV0KLSAgICAgICAgICAgIGlmIGxlbihzKSA8IDIgb3Igc1sxXSBub3QgaW4gcWNfb3JkZXI6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHF1aWNrY2hlY2sgPSAnTU4nLmluZGV4KHNbMl0pICsgMSAjIE1heWJlIG9yIE5vCi0gICAgICAgICAgICBxdWlja2NoZWNrX3NoaWZ0ID0gcWNfb3JkZXIuaW5kZXgoc1sxXSkqMgotICAgICAgICAgICAgcXVpY2tjaGVjayA8PD0gcXVpY2tjaGVja19zaGlmdAotICAgICAgICAgICAgaWYgJy4uJyBub3QgaW4gc1swXToKLSAgICAgICAgICAgICAgICBmaXJzdCA9IGxhc3QgPSBpbnQoc1swXSwgMTYpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZpcnN0LCBsYXN0ID0gW2ludChjLCAxNikgZm9yIGMgaW4gc1swXS5zcGxpdCgnLi4nKV0KLSAgICAgICAgICAgIGZvciBjaGFyIGluIHJhbmdlKGZpcnN0LCBsYXN0KzEpOgotICAgICAgICAgICAgICAgIGFzc2VydCBub3QgKHF1aWNrY2hlY2tzW2NoYXJdPj5xdWlja2NoZWNrX3NoaWZ0KSYzCi0gICAgICAgICAgICAgICAgcXVpY2tjaGVja3NbY2hhcl0gfD0gcXVpY2tjaGVjaworICAgICAgICB3aXRoIG9wZW5fZGF0YShERVJJVkVETk9STUFMSVpBVElPTl9QUk9QUywgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgIGZvciBzIGluIGZpbGU6CisgICAgICAgICAgICAgICAgaWYgJyMnIGluIHM6CisgICAgICAgICAgICAgICAgICAgIHMgPSBzWzpzLmluZGV4KCcjJyldCisgICAgICAgICAgICAgICAgcyA9IFtpLnN0cmlwKCkgZm9yIGkgaW4gcy5zcGxpdCgnOycpXQorICAgICAgICAgICAgICAgIGlmIGxlbihzKSA8IDIgb3Igc1sxXSBub3QgaW4gcWNfb3JkZXI6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgcXVpY2tjaGVjayA9ICdNTicuaW5kZXgoc1syXSkgKyAxICMgTWF5YmUgb3IgTm8KKyAgICAgICAgICAgICAgICBxdWlja2NoZWNrX3NoaWZ0ID0gcWNfb3JkZXIuaW5kZXgoc1sxXSkqMgorICAgICAgICAgICAgICAgIHF1aWNrY2hlY2sgPDw9IHF1aWNrY2hlY2tfc2hpZnQKKyAgICAgICAgICAgICAgICBpZiAnLi4nIG5vdCBpbiBzWzBdOgorICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGxhc3QgPSBpbnQoc1swXSwgMTYpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZmlyc3QsIGxhc3QgPSBbaW50KGMsIDE2KSBmb3IgYyBpbiBzWzBdLnNwbGl0KCcuLicpXQorICAgICAgICAgICAgICAgIGZvciBjaGFyIGluIHJhbmdlKGZpcnN0LCBsYXN0KzEpOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbm90IChxdWlja2NoZWNrc1tjaGFyXT4+cXVpY2tjaGVja19zaGlmdCkmMworICAgICAgICAgICAgICAgICAgICBxdWlja2NoZWNrc1tjaGFyXSB8PSBxdWlja2NoZWNrCiAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDB4MTEwMDAwKToKICAgICAgICAgICAgIGlmIHRhYmxlW2ldIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRhYmxlW2ldLmFwcGVuZChxdWlja2NoZWNrc1tpXSkKIAotICAgICAgICB6aXAgPSB6aXBmaWxlLlppcEZpbGUob3Blbl9kYXRhKFVOSUhBTiwgdmVyc2lvbikpCi0gICAgICAgIGlmIHZlcnNpb24gPT0gJzMuMi4wJzoKLSAgICAgICAgICAgIGRhdGEgPSB6aXAub3BlbignVW5paGFuLTMuMi4wLnR4dCcpLnJlYWQoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGF0YSA9IHppcC5vcGVuKCdVbmloYW5fTnVtZXJpY1ZhbHVlcy50eHQnKS5yZWFkKCkKKyAgICAgICAgd2l0aCBvcGVuX2RhdGEoVU5JSEFOLCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgemlwID0gemlwZmlsZS5aaXBGaWxlKGZpbGUpCisgICAgICAgICAgICBpZiB2ZXJzaW9uID09ICczLjIuMCc6CisgICAgICAgICAgICAgICAgZGF0YSA9IHppcC5vcGVuKCdVbmloYW4tMy4yLjAudHh0JykucmVhZCgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGEgPSB6aXAub3BlbignVW5paGFuX051bWVyaWNWYWx1ZXMudHh0JykucmVhZCgpCiAgICAgICAgIGZvciBsaW5lIGluIGRhdGEuZGVjb2RlKCJ1dGYtOCIpLnNwbGl0bGluZXMoKToKICAgICAgICAgICAgIGlmIG5vdCBsaW5lLnN0YXJ0c3dpdGgoJ1UrJyk6CiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTk2NSw2ICsxMTA2LDM0IEBACiAgICAgICAgICAgICAjIFBhdGNoIHRoZSBudW1lcmljIGZpZWxkCiAgICAgICAgICAgICBpZiB0YWJsZVtpXSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB0YWJsZVtpXVs4XSA9IHZhbHVlCisgICAgICAgIHNjID0gc2VsZi5zcGVjaWFsX2Nhc2luZyA9IHt9CisgICAgICAgIHdpdGggb3Blbl9kYXRhKFNQRUNJQUxfQ0FTSU5HLCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgZm9yIHMgaW4gZmlsZToKKyAgICAgICAgICAgICAgICBzID0gc1s6LTFdLnNwbGl0KCcjJywgMSlbMF0KKyAgICAgICAgICAgICAgICBpZiBub3QgczoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBkYXRhID0gcy5zcGxpdCgiOyAiKQorICAgICAgICAgICAgICAgIGlmIGRhdGFbNF06CisgICAgICAgICAgICAgICAgICAgICMgV2UgaWdub3JlIGFsbCBjb25kaXRpb25hbHMgKHNpbmNlIHRoZXkgZGVwZW5kIG9uCisgICAgICAgICAgICAgICAgICAgICMgbGFuZ3VhZ2VzKSBleGNlcHQgZm9yIG9uZSwgd2hpY2ggaXMgaGFyZGNvZGVkLiBTZWUKKyAgICAgICAgICAgICAgICAgICAgIyBoYW5kbGVfY2FwaXRhbF9zaWdtYSBpbiB1bmljb2Rlb2JqZWN0LmMuCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgYyA9IGludChkYXRhWzBdLCAxNikKKyAgICAgICAgICAgICAgICBsb3dlciA9IFtpbnQoY2hhciwgMTYpIGZvciBjaGFyIGluIGRhdGFbMV0uc3BsaXQoKV0KKyAgICAgICAgICAgICAgICB0aXRsZSA9IFtpbnQoY2hhciwgMTYpIGZvciBjaGFyIGluIGRhdGFbMl0uc3BsaXQoKV0KKyAgICAgICAgICAgICAgICB1cHBlciA9IFtpbnQoY2hhciwgMTYpIGZvciBjaGFyIGluIGRhdGFbM10uc3BsaXQoKV0KKyAgICAgICAgICAgICAgICBzY1tjXSA9IChsb3dlciwgdGl0bGUsIHVwcGVyKQorICAgICAgICBjZiA9IHNlbGYuY2FzZV9mb2xkaW5nID0ge30KKyAgICAgICAgaWYgdmVyc2lvbiAhPSAnMy4yLjAnOgorICAgICAgICAgICAgd2l0aCBvcGVuX2RhdGEoQ0FTRV9GT0xESU5HLCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgIGZvciBzIGluIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIHMgPSBzWzotMV0uc3BsaXQoJyMnLCAxKVswXQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBzLnNwbGl0KCI7ICIpCisgICAgICAgICAgICAgICAgICAgIGlmIGRhdGFbMV0gaW4gIkNGIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBpbnQoZGF0YVswXSwgMTYpCisgICAgICAgICAgICAgICAgICAgICAgICBjZltjXSA9IFtpbnQoY2hhciwgMTYpIGZvciBjaGFyIGluIGRhdGFbMl0uc3BsaXQoKV0KIAogICAgIGRlZiB1c2VsYXRpbjEoc2VsZik6CiAgICAgICAgICMgcmVzdHJpY3QgY2hhcmFjdGVyIHJhbmdlIHRvIElTTyBMYXRpbiAxCmRpZmYgLS1naXQgYS9Ub29scy91bml0dGVzdGd1aS91bml0dGVzdGd1aS5weSBiL1Rvb2xzL3VuaXR0ZXN0Z3VpL3VuaXR0ZXN0Z3VpLnB5CmluZGV4IGI1MjY2NDYuLjA5YTIwZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3VuaXR0ZXN0Z3VpL3VuaXR0ZXN0Z3VpLnB5CisrKyBiL1Rvb2xzL3VuaXR0ZXN0Z3VpL3VuaXR0ZXN0Z3VpLnB5CkBAIC0yOCw3ICsyOCw2IEBACiAiIiIKIAogX19hdXRob3JfXyA9ICJTdGV2ZSBQdXJjZWxsIChzdGVwaGVuX3B1cmNlbGxAeWFob28uY29tKSIKLV9fdmVyc2lvbl9fID0gIiRSZXZpc2lvbjogMS43ICQiWzExOi0yXQogCiBpbXBvcnQgc3lzCiBpbXBvcnQgdHJhY2ViYWNrCmRpZmYgLS1naXQgYS9jb25maWcuZ3Vlc3MgYi9jb25maWcuZ3Vlc3MKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDYyMmE0NAotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZy5ndWVzcwpAQCAtMCwwICsxLDE1MzAgQEAKKyMhIC9iaW4vc2gKKyMgQXR0ZW1wdCB0byBndWVzcyBhIGNhbm9uaWNhbCBzeXN0ZW0gbmFtZS4KKyMgICBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksCisjICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwKKyMgICAyMDExLCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCit0aW1lc3RhbXA9JzIwMTItMDItMTAnCisKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQorIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKKyMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKKyMgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgorCisKKyMgT3JpZ2luYWxseSB3cml0dGVuIGJ5IFBlciBCb3RobmVyLiAgUGxlYXNlIHNlbmQgcGF0Y2hlcyAoY29udGV4dAorIyBkaWZmIGZvcm1hdCkgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+IGFuZCBpbmNsdWRlIGEgQ2hhbmdlTG9nCisjIGVudHJ5LgorIworIyBUaGlzIHNjcmlwdCBhdHRlbXB0cyB0byBndWVzcyBhIGNhbm9uaWNhbCBzeXN0ZW0gbmFtZSBzaW1pbGFyIHRvCisjIGNvbmZpZy5zdWIuICBJZiBpdCBzdWNjZWVkcywgaXQgcHJpbnRzIHRoZSBzeXN0ZW0gbmFtZSBvbiBzdGRvdXQsIGFuZAorIyBleGl0cyB3aXRoIDAuICBPdGhlcndpc2UsIGl0IGV4aXRzIHdpdGggMS4KKyMKKyMgWW91IGNhbiBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgc2NyaXB0IGZyb206CisjIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuZ3Vlc3M7aGI9SEVBRAorCittZT1gZWNobyAiJDAiIHwgc2VkIC1lICdzLC4qLywsJ2AKKwordXNhZ2U9IlwKK1VzYWdlOiAkMCBbT1BUSU9OXQorCitPdXRwdXQgdGhlIGNvbmZpZ3VyYXRpb24gbmFtZSBvZiB0aGUgc3lzdGVtIFxgJG1lJyBpcyBydW4gb24uCisKK09wZXJhdGlvbiBtb2RlczoKKyAgLWgsIC0taGVscCAgICAgICAgIHByaW50IHRoaXMgaGVscCwgdGhlbiBleGl0CisgIC10LCAtLXRpbWUtc3RhbXAgICBwcmludCBkYXRlIG9mIGxhc3QgbW9kaWZpY2F0aW9uLCB0aGVuIGV4aXQKKyAgLXYsIC0tdmVyc2lvbiAgICAgIHByaW50IHZlcnNpb24gbnVtYmVyLCB0aGVuIGV4aXQKKworUmVwb3J0IGJ1Z3MgYW5kIHBhdGNoZXMgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+LiIKKwordmVyc2lvbj0iXAorR05VIGNvbmZpZy5ndWVzcyAoJHRpbWVzdGFtcCkKKworT3JpZ2luYWxseSB3cml0dGVuIGJ5IFBlciBCb3RobmVyLgorQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLAorMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMgorRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK1RoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCit3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCisKK2hlbHA9IgorVHJ5IFxgJG1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgorCisjIFBhcnNlIGNvbW1hbmQgbGluZQord2hpbGUgdGVzdCAkIyAtZ3QgMCA7IGRvCisgIGNhc2UgJDEgaW4KKyAgICAtLXRpbWUtc3RhbXAgfCAtLXRpbWUqIHwgLXQgKQorICAgICAgIGVjaG8gIiR0aW1lc3RhbXAiIDsgZXhpdCA7OworICAgIC0tdmVyc2lvbiB8IC12ICkKKyAgICAgICBlY2hvICIkdmVyc2lvbiIgOyBleGl0IDs7CisgICAgLS1oZWxwIHwgLS1oKiB8IC1oICkKKyAgICAgICBlY2hvICIkdXNhZ2UiOyBleGl0IDs7CisgICAgLS0gKSAgICAgIyBTdG9wIG9wdGlvbiBwcm9jZXNzaW5nCisgICAgICAgc2hpZnQ7IGJyZWFrIDs7CisgICAgLSApCSMgVXNlIHN0ZGluIGFzIGlucHV0LgorICAgICAgIGJyZWFrIDs7CisgICAgLSogKQorICAgICAgIGVjaG8gIiRtZTogaW52YWxpZCBvcHRpb24gJDEkaGVscCIgPiYyCisgICAgICAgZXhpdCAxIDs7CisgICAgKiApCisgICAgICAgYnJlYWsgOzsKKyAgZXNhYworZG9uZQorCitpZiB0ZXN0ICQjICE9IDA7IHRoZW4KKyAgZWNobyAiJG1lOiB0b28gbWFueSBhcmd1bWVudHMkaGVscCIgPiYyCisgIGV4aXQgMQorZmkKKwordHJhcCAnZXhpdCAxJyAxIDIgMTUKKworIyBDQ19GT1JfQlVJTEQgLS0gY29tcGlsZXIgdXNlZCBieSB0aGlzIHNjcmlwdC4gTm90ZSB0aGF0IHRoZSB1c2Ugb2YgYQorIyBjb21waWxlciB0byBhaWQgaW4gc3lzdGVtIGRldGVjdGlvbiBpcyBkaXNjb3VyYWdlZCBhcyBpdCByZXF1aXJlcworIyB0ZW1wb3JhcnkgZmlsZXMgdG8gYmUgY3JlYXRlZCBhbmQsIGFzIHlvdSBjYW4gc2VlIGJlbG93LCBpdCBpcyBhCisjIGhlYWRhY2hlIHRvIGRlYWwgd2l0aCBpbiBhIHBvcnRhYmxlIGZhc2hpb24uCisKKyMgSGlzdG9yaWNhbGx5LCBgQ0NfRk9SX0JVSUxEJyB1c2VkIHRvIGJlIG5hbWVkIGBIT1NUX0NDJy4gV2Ugc3RpbGwKKyMgdXNlIGBIT1NUX0NDJyBpZiBkZWZpbmVkLCBidXQgaXQgaXMgZGVwcmVjYXRlZC4KKworIyBQb3J0YWJsZSB0bXAgZGlyZWN0b3J5IGNyZWF0aW9uIGluc3BpcmVkIGJ5IHRoZSBBdXRvY29uZiB0ZWFtLgorCitzZXRfY2NfZm9yX2J1aWxkPScKK3RyYXAgImV4aXRjb2RlPVwkPzsgKHJtIC1mIFwkdG1wZmlsZXMgMj4vZGV2L251bGw7IHJtZGlyIFwkdG1wIDI+L2Rldi9udWxsKSAmJiBleGl0IFwkZXhpdGNvZGUiIDAgOwordHJhcCAicm0gLWYgXCR0bXBmaWxlcyAyPi9kZXYvbnVsbDsgcm1kaXIgXCR0bXAgMj4vZGV2L251bGw7IGV4aXQgMSIgMSAyIDEzIDE1IDsKKzogJHtUTVBESVI9L3RtcH0gOworIHsgdG1wPWAodW1hc2sgMDc3ICYmIG1rdGVtcCAtZCAiJFRNUERJUi9jZ1hYWFhYWCIpIDI+L2Rldi9udWxsYCAmJiB0ZXN0IC1uICIkdG1wIiAmJiB0ZXN0IC1kICIkdG1wIiA7IH0gfHwKKyB7IHRlc3QgLW4gIiRSQU5ET00iICYmIHRtcD0kVE1QRElSL2NnJCQtJFJBTkRPTSAmJiAodW1hc2sgMDc3ICYmIG1rZGlyICR0bXApIDsgfSB8fAorIHsgdG1wPSRUTVBESVIvY2ctJCQgJiYgKHVtYXNrIDA3NyAmJiBta2RpciAkdG1wKSAmJiBlY2hvICJXYXJuaW5nOiBjcmVhdGluZyBpbnNlY3VyZSB0ZW1wIGRpcmVjdG9yeSIgPiYyIDsgfSB8fAorIHsgZWNobyAiJG1lOiBjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBpbiAkVE1QRElSIiA+JjIgOyBleGl0IDEgOyB9IDsKK2R1bW15PSR0bXAvZHVtbXkgOwordG1wZmlsZXM9IiRkdW1teS5jICRkdW1teS5vICRkdW1teS5yZWwgJGR1bW15IiA7CitjYXNlICRDQ19GT1JfQlVJTEQsJEhPU1RfQ0MsJENDIGluCisgLCwpICAgIGVjaG8gImludCB4OyIgPiAkZHVtbXkuYyA7CisJZm9yIGMgaW4gY2MgZ2NjIGM4OSBjOTkgOyBkbworCSAgaWYgKCRjIC1jIC1vICRkdW1teS5vICRkdW1teS5jKSA+L2Rldi9udWxsIDI+JjEgOyB0aGVuCisJICAgICBDQ19GT1JfQlVJTEQ9IiRjIjsgYnJlYWsgOworCSAgZmkgOworCWRvbmUgOworCWlmIHRlc3QgeCIkQ0NfRk9SX0JVSUxEIiA9IHggOyB0aGVuCisJICBDQ19GT1JfQlVJTEQ9bm9fY29tcGlsZXJfZm91bmQgOworCWZpCisJOzsKKyAsLCopICAgQ0NfRk9SX0JVSUxEPSRDQyA7OworICwqLCopICBDQ19GT1JfQlVJTEQ9JEhPU1RfQ0MgOzsKK2VzYWMgOyBzZXRfY2NfZm9yX2J1aWxkPSA7JworCisjIFRoaXMgaXMgbmVlZGVkIHRvIGZpbmQgdW5hbWUgb24gYSBQeXJhbWlkIE9TeCB3aGVuIHJ1biBpbiB0aGUgQlNEIHVuaXZlcnNlLgorIyAoZ2hhemlAbm9jLnJ1dGdlcnMuZWR1IDE5OTQtMDgtMjQpCitpZiAodGVzdCAtZiAvLmF0dGJpbi91bmFtZSkgPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorCVBBVEg9JFBBVEg6Ly5hdHRiaW4gOyBleHBvcnQgUEFUSAorZmkKKworVU5BTUVfTUFDSElORT1gKHVuYW1lIC1tKSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfTUFDSElORT11bmtub3duCitVTkFNRV9SRUxFQVNFPWAodW5hbWUgLXIpIDI+L2Rldi9udWxsYCB8fCBVTkFNRV9SRUxFQVNFPXVua25vd24KK1VOQU1FX1NZU1RFTT1gKHVuYW1lIC1zKSAyPi9kZXYvbnVsbGAgIHx8IFVOQU1FX1NZU1RFTT11bmtub3duCitVTkFNRV9WRVJTSU9OPWAodW5hbWUgLXYpIDI+L2Rldi9udWxsYCB8fCBVTkFNRV9WRVJTSU9OPXVua25vd24KKworIyBOb3RlOiBvcmRlciBpcyBzaWduaWZpY2FudCAtIHRoZSBjYXNlIGJyYW5jaGVzIGFyZSBub3QgZXhjbHVzaXZlLgorCitjYXNlICIke1VOQU1FX01BQ0hJTkV9OiR7VU5BTUVfU1lTVEVNfToke1VOQU1FX1JFTEVBU0V9OiR7VU5BTUVfVkVSU0lPTn0iIGluCisgICAgKjpOZXRCU0Q6KjoqKQorCSMgTmV0QlNEIChuYnNkKSB0YXJnZXRzIHNob3VsZCAod2hlcmUgYXBwbGljYWJsZSkgbWF0Y2ggb25lIG9yCisJIyBtb3JlIG9mIHRoZSB0dXBsZXM6ICotKi1uZXRic2RlbGYqLCAqLSotbmV0YnNkYW91dCosCisJIyAqLSotbmV0YnNkZWNvZmYqIGFuZCAqLSotbmV0YnNkKi4gIEZvciB0YXJnZXRzIHRoYXQgcmVjZW50bHkKKwkjIHN3aXRjaGVkIHRvIEVMRiwgKi0qLW5ldGJzZCogd291bGQgc2VsZWN0IHRoZSBvbGQKKwkjIG9iamVjdCBmaWxlIGZvcm1hdC4gIFRoaXMgcHJvdmlkZXMgYm90aCBmb3J3YXJkCisJIyBjb21wYXRpYmlsaXR5IGFuZCBhIGNvbnNpc3RlbnQgbWVjaGFuaXNtIGZvciBzZWxlY3RpbmcgdGhlCisJIyBvYmplY3QgZmlsZSBmb3JtYXQuCisJIworCSMgTm90ZTogTmV0QlNEIGRvZXNuJ3QgcGFydGljdWxhcmx5IGNhcmUgYWJvdXQgdGhlIHZlbmRvcgorCSMgcG9ydGlvbiBvZiB0aGUgbmFtZS4gIFdlIGFsd2F5cyBzZXQgaXQgdG8gInVua25vd24iLgorCXN5c2N0bD0ic3lzY3RsIC1uIGh3Lm1hY2hpbmVfYXJjaCIKKwlVTkFNRV9NQUNISU5FX0FSQ0g9YCgvc2Jpbi8kc3lzY3RsIDI+L2Rldi9udWxsIHx8IFwKKwkgICAgL3Vzci9zYmluLyRzeXNjdGwgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duKWAKKwljYXNlICIke1VOQU1FX01BQ0hJTkVfQVJDSH0iIGluCisJICAgIGFybWViKSBtYWNoaW5lPWFybWViLXVua25vd24gOzsKKwkgICAgYXJtKikgbWFjaGluZT1hcm0tdW5rbm93biA7OworCSAgICBzaDNlbCkgbWFjaGluZT1zaGwtdW5rbm93biA7OworCSAgICBzaDNlYikgbWFjaGluZT1zaC11bmtub3duIDs7CisJICAgIHNoNWVsKSBtYWNoaW5lPXNoNWxlLXVua25vd24gOzsKKwkgICAgKikgbWFjaGluZT0ke1VOQU1FX01BQ0hJTkVfQVJDSH0tdW5rbm93biA7OworCWVzYWMKKwkjIFRoZSBPcGVyYXRpbmcgU3lzdGVtIGluY2x1ZGluZyBvYmplY3QgZm9ybWF0LCBpZiBpdCBoYXMgc3dpdGNoZWQKKwkjIHRvIEVMRiByZWNlbnRseSwgb3Igd2lsbCBpbiB0aGUgZnV0dXJlLgorCWNhc2UgIiR7VU5BTUVfTUFDSElORV9BUkNIfSIgaW4KKwkgICAgYXJtKnxpMzg2fG02OGt8bnMzMmt8c2gzKnxzcGFyY3x2YXgpCisJCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwkJaWYgZWNobyBfX0VMRl9fIHwgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsIFwKKwkJCXwgZ3JlcCAtcSBfX0VMRl9fCisJCXRoZW4KKwkJICAgICMgT25jZSBhbGwgdXRpbGl0aWVzIGNhbiBiZSBFQ09GRiAobmV0YnNkZWNvZmYpIG9yIGEub3V0IChuZXRic2Rhb3V0KS4KKwkJICAgICMgUmV0dXJuIG5ldGJzZCBmb3IgZWl0aGVyLiAgRklYPworCQkgICAgb3M9bmV0YnNkCisJCWVsc2UKKwkJICAgIG9zPW5ldGJzZGVsZgorCQlmaQorCQk7OworCSAgICAqKQorCQlvcz1uZXRic2QKKwkJOzsKKwllc2FjCisJIyBUaGUgT1MgcmVsZWFzZQorCSMgRGViaWFuIEdOVS9OZXRCU0QgbWFjaGluZXMgaGF2ZSBhIGRpZmZlcmVudCB1c2VybGFuZCwgYW5kCisJIyB0aHVzLCBuZWVkIGEgZGlzdGluY3QgdHJpcGxldC4gSG93ZXZlciwgdGhleSBkbyBub3QgbmVlZAorCSMga2VybmVsIHZlcnNpb24gaW5mb3JtYXRpb24sIHNvIGl0IGNhbiBiZSByZXBsYWNlZCB3aXRoIGEKKwkjIHN1aXRhYmxlIHRhZywgaW4gdGhlIHN0eWxlIG9mIGxpbnV4LWdudS4KKwljYXNlICIke1VOQU1FX1ZFUlNJT059IiBpbgorCSAgICBEZWJpYW4qKQorCQlyZWxlYXNlPSctZ251JworCQk7OworCSAgICAqKQorCQlyZWxlYXNlPWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stX10uKi9cLi8nYAorCQk7OworCWVzYWMKKwkjIFNpbmNlIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1LRVJORUwtT1BFUkFUSU5HX1NZU1RFTToKKwkjIGNvbnRhaW5zIHJlZHVuZGFudCBpbmZvcm1hdGlvbiwgdGhlIHNob3J0ZXIgZm9ybToKKwkjIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1PUEVSQVRJTkdfU1lTVEVNIGlzIHVzZWQuCisJZWNobyAiJHttYWNoaW5lfS0ke29zfSR7cmVsZWFzZX0iCisJZXhpdCA7OworICAgICo6T3BlbkJTRDoqOiopCisJVU5BTUVfTUFDSElORV9BUkNIPWBhcmNoIHwgc2VkICdzL09wZW5CU0QuLy8nYAorCWVjaG8gJHtVTkFNRV9NQUNISU5FX0FSQ0h9LXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpla2tvQlNEOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1la2tvYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOlNvbGlkQlNEOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1zb2xpZGJzZCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgbWFjcHBjOk1pckJTRDoqOiopCisJZWNobyBwb3dlcnBjLXVua25vd24tbWlyYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOk1pckJTRDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbWlyYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBhbHBoYTpPU0YxOio6KikKKwljYXNlICRVTkFNRV9SRUxFQVNFIGluCisJKjQuMCkKKwkJVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDN9J2AKKwkJOzsKKwkqNS4qKQorCQlVTkFNRV9SRUxFQVNFPWAvdXNyL3NiaW4vc2l6ZXIgLXYgfCBhd2sgJ3twcmludCAkNH0nYAorCQk7OworCWVzYWMKKwkjIEFjY29yZGluZyB0byBDb21wYXEsIC91c3Ivc2Jpbi9wc3JpbmZvIGhhcyBiZWVuIGF2YWlsYWJsZSBvbgorCSMgT1NGLzEgYW5kIFRydTY0IHN5c3RlbXMgcHJvZHVjZWQgc2luY2UgMTk5NS4gIEkgaG9wZSB0aGF0CisJIyBjb3ZlcnMgbW9zdCBzeXN0ZW1zIHJ1bm5pbmcgdG9kYXkuICBUaGlzIGNvZGUgcGlwZXMgdGhlIENQVQorCSMgdHlwZXMgdGhyb3VnaCBoZWFkIC1uIDEsIHNvIHdlIG9ubHkgZGV0ZWN0IHRoZSB0eXBlIG9mIENQVSAwLgorCUFMUEhBX0NQVV9UWVBFPWAvdXNyL3NiaW4vcHNyaW5mbyAtdiB8IHNlZCAtbiAtZSAncy9eICBUaGUgYWxwaGEgXCguKlwpIHByb2Nlc3Nvci4qJC9cMS9wJyB8IGhlYWQgLW4gMWAKKwljYXNlICIkQUxQSEFfQ1BVX1RZUEUiIGluCisJICAgICJFVjQgKDIxMDY0KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhIiA7OworCSAgICAiRVY0LjUgKDIxMDY0KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhIiA7OworCSAgICAiTENBNCAoMjEwNjYvMjEwNjgpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGEiIDs7CisJICAgICJFVjUgKDIxMTY0KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY1IiA7OworCSAgICAiRVY1LjYgKDIxMTY0QSkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NTYiIDs7CisJICAgICJFVjUuNiAoMjExNjRQQykiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYXBjYTU2IiA7OworCSAgICAiRVY1LjcgKDIxMTY0UEMpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFwY2E1NyIgOzsKKwkgICAgIkVWNiAoMjEyNjQpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjYiIDs7CisJICAgICJFVjYuNyAoMjEyNjRBKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2NyIgOzsKKwkgICAgIkVWNi44Q0IgKDIxMjY0QykiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NjgiIDs7CisJICAgICJFVjYuOEFMICgyMTI2NEIpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjY4IiA7OworCSAgICAiRVY2LjhDWCAoMjEyNjREKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2OCIgOzsKKwkgICAgIkVWNi45QSAoMjEyNjQvRVY2OUEpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjY5IiA7OworCSAgICAiRVY3ICgyMTM2NCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NyIgOzsKKwkgICAgIkVWNy45ICgyMTM2NEEpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjc5IiA7OworCWVzYWMKKwkjIEEgUG4ubiB2ZXJzaW9uIGlzIGEgcGF0Y2hlZCB2ZXJzaW9uLgorCSMgQSBWbi5uIHZlcnNpb24gaXMgYSByZWxlYXNlZCB2ZXJzaW9uLgorCSMgQSBUbi5uIHZlcnNpb24gaXMgYSByZWxlYXNlZCBmaWVsZCB0ZXN0IHZlcnNpb24uCisJIyBBIFhuLm4gdmVyc2lvbiBpcyBhbiB1bnJlbGVhc2VkIGV4cGVyaW1lbnRhbCBiYXNlbGV2ZWwuCisJIyAxLjIgdXNlcyAiMS4yIiBmb3IgdW5hbWUgLXIuCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWRlYy1vc2ZgZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL15bUFZUWF0vLycgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidgCisJIyBSZXNldCBFWElUIHRyYXAgYmVmb3JlIGV4aXRpbmcgdG8gYXZvaWQgc3B1cmlvdXMgbm9uLXplcm8gZXhpdCBjb2RlLgorCWV4aXRjb2RlPSQ/CisJdHJhcCAnJyAwCisJZXhpdCAkZXhpdGNvZGUgOzsKKyAgICBBbHBoYVwgKjpXaW5kb3dzX05UKjoqKQorCSMgSG93IGRvIHdlIGtub3cgaXQncyBJbnRlcml4IHJhdGhlciB0aGFuIHRoZSBnZW5lcmljIFBPU0lYIHN1YnN5c3RlbT8KKwkjIFNob3VsZCB3ZSBjaGFuZ2UgVU5BTUVfTUFDSElORSBiYXNlZCBvbiB0aGUgb3V0cHV0IG9mIHVuYW1lIGluc3RlYWQKKwkjIG9mIHRoZSBzcGVjaWZpYyBBbHBoYSBtb2RlbD8KKwllY2hvIGFscGhhLXBjLWludGVyaXgKKwlleGl0IDs7CisgICAgMjEwNjQ6V2luZG93c19OVDo1MDozKQorCWVjaG8gYWxwaGEtZGVjLXdpbm50My41CisJZXhpdCA7OworICAgIEFtaWdhKjpVTklYX1N5c3RlbV9WOjQuMDoqKQorCWVjaG8gbTY4ay11bmtub3duLXN5c3Y0CisJZXhpdCA7OworICAgICo6W0FhXW1pZ2FbT29dW1NzXToqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tYW1pZ2FvcworCWV4aXQgOzsKKyAgICAqOltNbV1vcnBoW09vXVtTc106KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW1vcnBob3MKKwlleGl0IDs7CisgICAgKjpPUy8zOTA6KjoqKQorCWVjaG8gaTM3MC1pYm0tb3BlbmVkaXRpb24KKwlleGl0IDs7CisgICAgKjp6L1ZNOio6KikKKwllY2hvIHMzOTAtaWJtLXp2bW9lCisJZXhpdCA7OworICAgICo6T1M0MDA6KjoqKQorCWVjaG8gcG93ZXJwYy1pYm0tb3M0MDAKKwlleGl0IDs7CisgICAgYXJtOlJJU0MqOjEuWzAxMl0qOip8YXJtOnJpc2NpeDoxLlswMTJdKjoqKQorCWVjaG8gYXJtLWFjb3JuLXJpc2NpeCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgYXJtOnJpc2NvczoqOip8YXJtOlJJU0NPUzoqOiopCisJZWNobyBhcm0tdW5rbm93bi1yaXNjb3MKKwlleGl0IDs7CisgICAgU1IyPzAxOkhJLVVYL01QUDoqOiogfCBTUjgwMDA6SEktVVgvTVBQOio6KikKKwllY2hvIGhwcGExLjEtaGl0YWNoaS1oaXV4bXBwCisJZXhpdCA7OworICAgIFB5cmFtaWQqOk9TeCo6KjoqIHwgTUlTKjpPU3gqOio6KiB8IE1JUyo6U01QX0RDLU9TeCo6KjoqKQorCSMgYWtlZUB3cGRpczAzLndwYWZiLmFmLm1pbCAoRWFybGUgRi4gQWtlKSBjb250cmlidXRlZCBNSVMgYW5kIE5JTEUuCisJaWYgdGVzdCAiYCgvYmluL3VuaXZlcnNlKSAyPi9kZXYvbnVsbGAiID0gYXR0IDsgdGhlbgorCQllY2hvIHB5cmFtaWQtcHlyYW1pZC1zeXN2MworCWVsc2UKKwkJZWNobyBweXJhbWlkLXB5cmFtaWQtYnNkCisJZmkKKwlleGl0IDs7CisgICAgTklMRSo6KjoqOmRjb3N4KQorCWVjaG8gcHlyYW1pZC1weXJhbWlkLXN2cjQKKwlleGl0IDs7CisgICAgRFJTPzYwMDA6dW5peDo0LjA6NiopCisJZWNobyBzcGFyYy1pY2wtbng2CisJZXhpdCA7OworICAgIERSUz82MDAwOlVOSVhfU1Y6NC4yKjo3KiB8IERSUz82MDAwOmlzaXM6NC4yKjo3KikKKwljYXNlIGAvdXNyL2Jpbi91bmFtZSAtcGAgaW4KKwkgICAgc3BhcmMpIGVjaG8gc3BhcmMtaWNsLW54NzsgZXhpdCA7OworCWVzYWMgOzsKKyAgICBzMzkweDpTdW5PUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICBzdW40SDpTdW5PUzo1Lio6KikKKwllY2hvIHNwYXJjLWhhbC1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICBzdW40KjpTdW5PUzo1Lio6KiB8IHRhZHBvbGUqOlN1bk9TOjUuKjoqKQorCWVjaG8gc3BhcmMtc3VuLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXhpdCA7OworICAgIGk4NnBjOkF1cm9yYVVYOjUuKjoqIHwgaTg2eGVuOkF1cm9yYVVYOjUuKjoqKQorCWVjaG8gaTM4Ni1wYy1hdXJvcmF1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgaTg2cGM6U3VuT1M6NS4qOiogfCBpODZ4ZW46U3VuT1M6NS4qOiopCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCVNVTl9BUkNIPSJpMzg2IgorCSMgSWYgdGhlcmUgaXMgYSBjb21waWxlciwgc2VlIGlmIGl0IGlzIGNvbmZpZ3VyZWQgZm9yIDY0LWJpdCBvYmplY3RzLgorCSMgTm90ZSB0aGF0IHRoZSBTdW4gY2MgZG9lcyBub3QgdHVybiBfX0xQNjRfXyBpbnRvIDEgbGlrZSBnY2MgZG9lcy4KKwkjIFRoaXMgdGVzdCB3b3JrcyBmb3IgYm90aCBjb21waWxlcnMuCisJaWYgWyAiJENDX0ZPUl9CVUlMRCIgIT0gJ25vX2NvbXBpbGVyX2ZvdW5kJyBdOyB0aGVuCisJICAgIGlmIChlY2hvICcjaWZkZWYgX19hbWQ2NCc7IGVjaG8gSVNfNjRCSVRfQVJDSDsgZWNobyAnI2VuZGlmJykgfCBcCisJCShDQ09QVFM9ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfCBcCisJCWdyZXAgSVNfNjRCSVRfQVJDSCA+L2Rldi9udWxsCisJICAgIHRoZW4KKwkJU1VOX0FSQ0g9Ing4Nl82NCIKKwkgICAgZmkKKwlmaQorCWVjaG8gJHtTVU5fQVJDSH0tcGMtc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7CisgICAgc3VuNCo6U3VuT1M6Nio6KikKKwkjIEFjY29yZGluZyB0byBjb25maWcuc3ViLCB0aGlzIGlzIHRoZSBwcm9wZXIgd2F5IHRvIGNhbm9uaWNhbGl6ZQorCSMgU3VuT1M2LiAgSGFyZCB0byBndWVzcyBleGFjdGx5IHdoYXQgU3VuT1M2IHdpbGwgYmUgbGlrZSwgYnV0CisJIyBpdCdzIGxpa2VseSB0byBiZSBtb3JlIGxpa2UgU29sYXJpcyB0aGFuIFN1bk9TNC4KKwllY2hvIHNwYXJjLXN1bi1zb2xhcmlzM2BlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICBzdW40KjpTdW5PUzoqOiopCisJY2FzZSAiYC91c3IvYmluL2FyY2ggLWtgIiBpbgorCSAgICBTZXJpZXMqfFM0KikKKwkJVU5BTUVfUkVMRUFTRT1gdW5hbWUgLXZgCisJCTs7CisJZXNhYworCSMgSmFwYW5lc2UgTGFuZ3VhZ2UgdmVyc2lvbnMgaGF2ZSBhIHZlcnNpb24gbnVtYmVyIGxpa2UgYDQuMS4zLUpMJy4KKwllY2hvIHNwYXJjLXN1bi1zdW5vc2BlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzLy0vXy8nYAorCWV4aXQgOzsKKyAgICBzdW4zKjpTdW5PUzoqOiopCisJZWNobyBtNjhrLXN1bi1zdW5vcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgc3VuKjoqOjQuMkJTRDoqKQorCVVOQU1FX1JFTEVBU0U9YChzZWQgMXEgL2V0Yy9tb3RkIHwgYXdrICd7cHJpbnQgc3Vic3RyKCQ1LDEsMyl9JykgMj4vZGV2L251bGxgCisJdGVzdCAieCR7VU5BTUVfUkVMRUFTRX0iID0gIngiICYmIFVOQU1FX1JFTEVBU0U9MworCWNhc2UgImAvYmluL2FyY2hgIiBpbgorCSAgICBzdW4zKQorCQllY2hvIG02OGstc3VuLXN1bm9zJHtVTkFNRV9SRUxFQVNFfQorCQk7OworCSAgICBzdW40KQorCQllY2hvIHNwYXJjLXN1bi1zdW5vcyR7VU5BTUVfUkVMRUFTRX0KKwkJOzsKKwllc2FjCisJZXhpdCA7OworICAgIGF1c2hwOlN1bk9TOio6KikKKwllY2hvIHNwYXJjLWF1c3BleC1zdW5vcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgIyBUaGUgc2l0dWF0aW9uIGZvciBNaU5UIGlzIGEgbGl0dGxlIGNvbmZ1c2luZy4gIFRoZSBtYWNoaW5lIG5hbWUKKyAgICAjIGNhbiBiZSB2aXJ0dWFsbHkgZXZlcnl0aGluZyAoZXZlcnl0aGluZyB3aGljaCBpcyBub3QKKyAgICAjICJhdGFyaXN0IiBvciAiYXRhcmlzdGUiIGF0IGxlYXN0IHNob3VsZCBoYXZlIGEgcHJvY2Vzc29yCisgICAgIyA+IG02ODAwMCkuICBUaGUgc3lzdGVtIG5hbWUgcmFuZ2VzIGZyb20gIk1pTlQiIG92ZXIgIkZyZWVNaU5UIgorICAgICMgdG8gdGhlIGxvd2VyY2FzZSB2ZXJzaW9uICJtaW50IiAob3IgImZyZWVtaW50IikuICBGaW5hbGx5CisgICAgIyB0aGUgc3lzdGVtIG5hbWUgIlRPUyIgZGVub3RlcyBhIHN5c3RlbSB3aGljaCBpcyBhY3R1YWxseSBub3QKKyAgICAjIE1pTlQuICBCdXQgTWlOVCBpcyBkb3dud2FyZCBjb21wYXRpYmxlIHRvIFRPUywgc28gdGhpcyBzaG91bGQKKyAgICAjIGJlIG5vIHByb2JsZW0uCisgICAgYXRhcmlzdFtlXToqTWlOVDoqOiogfCBhdGFyaXN0W2VdOiptaW50Oio6KiB8IGF0YXJpc3RbZV06KlRPUzoqOiopCisJZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIGF0YXJpKjoqTWlOVDoqOiogfCBhdGFyaSo6Km1pbnQ6KjoqIHwgYXRhcmlzdFtlXToqVE9TOio6KikKKwllY2hvIG02OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKmZhbGNvbio6Kk1pTlQ6KjoqIHwgKmZhbGNvbio6Km1pbnQ6KjoqIHwgKmZhbGNvbio6KlRPUzoqOiopCisJZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIG1pbGFuKjoqTWlOVDoqOiogfCBtaWxhbio6Km1pbnQ6KjoqIHwgKm1pbGFuKjoqVE9TOio6KikKKwllY2hvIG02OGstbWlsYW4tbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgaGFkZXMqOipNaU5UOio6KiB8IGhhZGVzKjoqbWludDoqOiogfCAqaGFkZXMqOipUT1M6KjoqKQorCWVjaG8gbTY4ay1oYWRlcy1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOipNaU5UOio6KiB8ICo6Km1pbnQ6KjoqIHwgKjoqVE9TOio6KikKKwllY2hvIG02OGstdW5rbm93bi1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBtNjhrOm1hY2h0ZW46KjoqKQorCWVjaG8gbTY4ay1hcHBsZS1tYWNodGVuJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBwb3dlcnBjOm1hY2h0ZW46KjoqKQorCWVjaG8gcG93ZXJwYy1hcHBsZS1tYWNodGVuJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBSSVNDKjpNYWNoOio6KikKKwllY2hvIG1pcHMtZGVjLW1hY2hfYnNkNC4zCisJZXhpdCA7OworICAgIFJJU0MqOlVMVFJJWDoqOiopCisJZWNobyBtaXBzLWRlYy11bHRyaXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFZBWCo6VUxUUklYKjoqOiopCisJZWNobyB2YXgtZGVjLXVsdHJpeCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgMjAyMDpDTElYOio6KiB8IDI0MzA6Q0xJWDoqOiopCisJZWNobyBjbGlwcGVyLWludGVyZ3JhcGgtY2xpeCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgbWlwczoqOio6VU1JUFMgfCBtaXBzOio6KjpSSVNDb3MpCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCisjaWZkZWYgX19jcGx1c3BsdXMKKyNpbmNsdWRlIDxzdGRpby5oPiAgLyogZm9yIHByaW50ZigpIHByb3RvdHlwZSAqLworCWludCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CisjZWxzZQorCWludCBtYWluIChhcmdjLCBhcmd2KSBpbnQgYXJnYzsgY2hhciAqYXJndltdOyB7CisjZW5kaWYKKwkjaWYgZGVmaW5lZCAoaG9zdF9taXBzKSAmJiBkZWZpbmVkIChNSVBTRUIpCisJI2lmIGRlZmluZWQgKFNZU1RZUEVfU1lTVikKKwkgIHByaW50ZiAoIm1pcHMtbWlwcy1yaXNjb3Mlc3N5c3ZcbiIsIGFyZ3ZbMV0pOyBleGl0ICgwKTsKKwkjZW5kaWYKKwkjaWYgZGVmaW5lZCAoU1lTVFlQRV9TVlI0KQorCSAgcHJpbnRmICgibWlwcy1taXBzLXJpc2NvcyVzc3ZyNFxuIiwgYXJndlsxXSk7IGV4aXQgKDApOworCSNlbmRpZgorCSNpZiBkZWZpbmVkIChTWVNUWVBFX0JTRDQzKSB8fCBkZWZpbmVkKFNZU1RZUEVfQlNEKQorCSAgcHJpbnRmICgibWlwcy1taXBzLXJpc2NvcyVzYnNkXG4iLCBhcmd2WzFdKTsgZXhpdCAoMCk7CisJI2VuZGlmCisJI2VuZGlmCisJICBleGl0ICgtMSk7CisJfQorRU9GCisJJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgJiYKKwkgIGR1bW15YXJnPWBlY2hvICIke1VOQU1FX1JFTEVBU0V9IiB8IHNlZCAtbiAncy9cKFswLTldKlwpLiovXDEvcCdgICYmCisJICBTWVNURU1fTkFNRT1gJGR1bW15ICRkdW1teWFyZ2AgJiYKKwkgICAgeyBlY2hvICIkU1lTVEVNX05BTUUiOyBleGl0OyB9CisJZWNobyBtaXBzLW1pcHMtcmlzY29zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBNb3Rvcm9sYTpQb3dlck1BWF9PUzoqOiopCisJZWNobyBwb3dlcnBjLW1vdG9yb2xhLXBvd2VybWF4CisJZXhpdCA7OworICAgIE1vdG9yb2xhOio6NC4zOlBMOC0qKQorCWVjaG8gcG93ZXJwYy1oYXJyaXMtcG93ZXJtYXgKKwlleGl0IDs7CisgICAgTmlnaHRfSGF3azoqOio6UG93ZXJNQVhfT1MgfCBTeW5lcmd5OlBvd2VyTUFYX09TOio6KikKKwllY2hvIHBvd2VycGMtaGFycmlzLXBvd2VybWF4CisJZXhpdCA7OworICAgIE5pZ2h0X0hhd2s6UG93ZXJfVU5JWDoqOiopCisJZWNobyBwb3dlcnBjLWhhcnJpcy1wb3dlcnVuaXgKKwlleGl0IDs7CisgICAgbTg4azpDWC9VWDo3KjoqKQorCWVjaG8gbTg4ay1oYXJyaXMtY3h1eDcKKwlleGl0IDs7CisgICAgbTg4azoqOjQqOlI0KikKKwllY2hvIG04OGstbW90b3JvbGEtc3lzdjQKKwlleGl0IDs7CisgICAgbTg4azoqOjMqOlIzKikKKwllY2hvIG04OGstbW90b3JvbGEtc3lzdjMKKwlleGl0IDs7CisgICAgQVZpaU9OOmRndXg6KjoqKQorCSMgREcvVVggcmV0dXJucyBBVmlpT04gZm9yIGFsbCBhcmNoaXRlY3R1cmVzCisJVU5BTUVfUFJPQ0VTU09SPWAvdXNyL2Jpbi91bmFtZSAtcGAKKwlpZiBbICRVTkFNRV9QUk9DRVNTT1IgPSBtYzg4MTAwIF0gfHwgWyAkVU5BTUVfUFJPQ0VTU09SID0gbWM4ODExMCBdCisJdGhlbgorCSAgICBpZiBbICR7VEFSR0VUX0JJTkFSWV9JTlRFUkZBQ0V9eCA9IG04OGtkZ3V4ZWxmeCBdIHx8IFwKKwkgICAgICAgWyAke1RBUkdFVF9CSU5BUllfSU5URVJGQUNFfXggPSB4IF0KKwkgICAgdGhlbgorCQllY2hvIG04OGstZGctZGd1eCR7VU5BTUVfUkVMRUFTRX0KKwkgICAgZWxzZQorCQllY2hvIG04OGstZGctZGd1eGJjcyR7VU5BTUVfUkVMRUFTRX0KKwkgICAgZmkKKwllbHNlCisJICAgIGVjaG8gaTU4Ni1kZy1kZ3V4JHtVTkFNRV9SRUxFQVNFfQorCWZpCisJZXhpdCA7OworICAgIE04OCo6RG9scGhpbk9TOio6KikJIyBEb2xwaGluT1MgKFNWUjMpCisJZWNobyBtODhrLWRvbHBoaW4tc3lzdjMKKwlleGl0IDs7CisgICAgTTg4KjoqOlIzKjoqKQorCSMgRGVsdGEgODhrIHN5c3RlbSBydW5uaW5nIFNWUjMKKwllY2hvIG04OGstbW90b3JvbGEtc3lzdjMKKwlleGl0IDs7CisgICAgWEQ4OCo6KjoqOiopICMgVGVrdHJvbml4IFhEODggc3lzdGVtIHJ1bm5pbmcgVVRla1YgKFNWUjMpCisJZWNobyBtODhrLXRla3Ryb25peC1zeXN2MworCWV4aXQgOzsKKyAgICBUZWs0M1swLTldWzAtOV06VVRlazoqOiopICMgVGVrdHJvbml4IDQzMDAgc3lzdGVtIHJ1bm5pbmcgVVRlayAoQlNEKQorCWVjaG8gbTY4ay10ZWt0cm9uaXgtYnNkCisJZXhpdCA7OworICAgICo6SVJJWCo6KjoqKQorCWVjaG8gbWlwcy1zZ2ktaXJpeGBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzLy0vXy9nJ2AKKwlleGl0IDs7CisgICAgPz8/Pz8/Pz86QUlYPzpbMTJdLjE6MikgICAjIEFJWCAyLjIuMSBvciBBSVggMi4xLjEgaXMgUlQvUEMgQUlYLgorCWVjaG8gcm9tcC1pYm0tYWl4ICAgICAjIHVuYW1lIC1tIGdpdmVzIGFuIDggaGV4LWNvZGUgQ1BVIGlkCisJZXhpdCA7OyAgICAgICAgICAgICAgICMgTm90ZSB0aGF0OiBlY2hvICInYHVuYW1lIC1zYCciIGdpdmVzICdBSVggJworICAgIGkqODY6QUlYOio6KikKKwllY2hvIGkzODYtaWJtLWFpeAorCWV4aXQgOzsKKyAgICBpYTY0OkFJWDoqOiopCisJaWYgWyAteCAvdXNyL2Jpbi9vc2xldmVsIF0gOyB0aGVuCisJCUlCTV9SRVY9YC91c3IvYmluL29zbGV2ZWxgCisJZWxzZQorCQlJQk1fUkVWPSR7VU5BTUVfVkVSU0lPTn0uJHtVTkFNRV9SRUxFQVNFfQorCWZpCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1haXgke0lCTV9SRVZ9CisJZXhpdCA7OworICAgICo6QUlYOjI6MykKKwlpZiBncmVwIGJvczMyNSAvdXNyL2luY2x1ZGUvc3RkaW8uaCA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwkJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCQlzZWQgJ3MvXgkJLy8nIDw8IEVPRiA+JGR1bW15LmMKKwkJI2luY2x1ZGUgPHN5cy9zeXN0ZW1jZmcuaD4KKworCQltYWluKCkKKwkJCXsKKwkJCWlmICghX19wb3dlcl9wYygpKQorCQkJCWV4aXQoMSk7CisJCQlwdXRzKCJwb3dlcnBjLWlibS1haXgzLjIuNSIpOworCQkJZXhpdCgwKTsKKwkJCX0KK0VPRgorCQlpZiAkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAmJiBTWVNURU1fTkFNRT1gJGR1bW15YAorCQl0aGVuCisJCQllY2hvICIkU1lTVEVNX05BTUUiCisJCWVsc2UKKwkJCWVjaG8gcnM2MDAwLWlibS1haXgzLjIuNQorCQlmaQorCWVsaWYgZ3JlcCBib3MzMjQgL3Vzci9pbmNsdWRlL3N0ZGlvLmggPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJCWVjaG8gcnM2MDAwLWlibS1haXgzLjIuNAorCWVsc2UKKwkJZWNobyByczYwMDAtaWJtLWFpeDMuMgorCWZpCisJZXhpdCA7OworICAgICo6QUlYOio6WzQ1NjddKQorCUlCTV9DUFVfSUQ9YC91c3Ivc2Jpbi9sc2RldiAtQyAtYyBwcm9jZXNzb3IgLVMgYXZhaWxhYmxlIHwgc2VkIDFxIHwgYXdrICd7IHByaW50ICQxIH0nYAorCWlmIC91c3Ivc2Jpbi9sc2F0dHIgLUVsICR7SUJNX0NQVV9JRH0gfCBncmVwICcgUE9XRVInID4vZGV2L251bGwgMj4mMTsgdGhlbgorCQlJQk1fQVJDSD1yczYwMDAKKwllbHNlCisJCUlCTV9BUkNIPXBvd2VycGMKKwlmaQorCWlmIFsgLXggL3Vzci9iaW4vb3NsZXZlbCBdIDsgdGhlbgorCQlJQk1fUkVWPWAvdXNyL2Jpbi9vc2xldmVsYAorCWVsc2UKKwkJSUJNX1JFVj0ke1VOQU1FX1ZFUlNJT059LiR7VU5BTUVfUkVMRUFTRX0KKwlmaQorCWVjaG8gJHtJQk1fQVJDSH0taWJtLWFpeCR7SUJNX1JFVn0KKwlleGl0IDs7CisgICAgKjpBSVg6KjoqKQorCWVjaG8gcnM2MDAwLWlibS1haXgKKwlleGl0IDs7CisgICAgaWJtcnQ6NC40QlNEOip8cm9tcC1pYm06QlNEOiopCisJZWNobyByb21wLWlibS1ic2Q0LjQKKwlleGl0IDs7CisgICAgaWJtcnQ6KkJTRDoqfHJvbXAtaWJtOkJTRDoqKSAgICAgICAgICAgICMgY292ZXJzIFJUL1BDIEJTRCBhbmQKKwllY2hvIHJvbXAtaWJtLWJzZCR7VU5BTUVfUkVMRUFTRX0gICAjIDQuMyB3aXRoIHVuYW1lIGFkZGVkIHRvCisJZXhpdCA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXBvcnQ6IHJvbXAtaWJtIEJTRCA0LjMKKyAgICAqOkJPU1g6KjoqKQorCWVjaG8gcnM2MDAwLWJ1bGwtYm9zeAorCWV4aXQgOzsKKyAgICBEUFgvMj8wMDpCLk8uUy46KjoqKQorCWVjaG8gbTY4ay1idWxsLXN5c3YzCisJZXhpdCA7OworICAgIDkwMDAvWzM0XT8/OjQuM2JzZDoxLio6KikKKwllY2hvIG02OGstaHAtYnNkCisJZXhpdCA7OworICAgIGhwMzAwOjQuNEJTRDoqOiogfCA5MDAwL1szNF0/Pzo0LjNic2Q6Mi4qOiopCisJZWNobyBtNjhrLWhwLWJzZDQuNAorCWV4aXQgOzsKKyAgICA5MDAwL1szNDY3OF0/PzpIUC1VWDoqOiopCisJSFBVWF9SRVY9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSouWzBCXSovLydgCisJY2FzZSAiJHtVTkFNRV9NQUNISU5FfSIgaW4KKwkgICAgOTAwMC8zMT8gKSAgICAgICAgICAgIEhQX0FSQ0g9bTY4MDAwIDs7CisJICAgIDkwMDAvWzM0XT8/ICkgICAgICAgICBIUF9BUkNIPW02OGsgOzsKKwkgICAgOTAwMC9bNjc4XVswLTldWzAtOV0pCisJCWlmIFsgLXggL3Vzci9iaW4vZ2V0Y29uZiBdOyB0aGVuCisJCSAgICBzY19jcHVfdmVyc2lvbj1gL3Vzci9iaW4vZ2V0Y29uZiBTQ19DUFVfVkVSU0lPTiAyPi9kZXYvbnVsbGAKKwkJICAgIHNjX2tlcm5lbF9iaXRzPWAvdXNyL2Jpbi9nZXRjb25mIFNDX0tFUk5FTF9CSVRTIDI+L2Rldi9udWxsYAorCQkgICAgY2FzZSAiJHtzY19jcHVfdmVyc2lvbn0iIGluCisJCSAgICAgIDUyMykgSFBfQVJDSD0iaHBwYTEuMCIgOzsgIyBDUFVfUEFfUklTQzFfMAorCQkgICAgICA1MjgpIEhQX0FSQ0g9ImhwcGExLjEiIDs7ICMgQ1BVX1BBX1JJU0MxXzEKKwkJICAgICAgNTMyKSAgICAgICAgICAgICAgICAgICAgICAjIENQVV9QQV9SSVNDMl8wCisJCQljYXNlICIke3NjX2tlcm5lbF9iaXRzfSIgaW4KKwkJCSAgMzIpIEhQX0FSQ0g9ImhwcGEyLjBuIiA7OworCQkJICA2NCkgSFBfQVJDSD0iaHBwYTIuMHciIDs7CisJCQkgICcnKSBIUF9BUkNIPSJocHBhMi4wIiA7OyAgICMgSFAtVVggMTAuMjAKKwkJCWVzYWMgOzsKKwkJICAgIGVzYWMKKwkJZmkKKwkJaWYgWyAiJHtIUF9BUkNIfSIgPSAiIiBdOyB0aGVuCisJCSAgICBldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJCSAgICBzZWQgJ3MvXgkJLy8nIDw8IEVPRiA+JGR1bW15LmMKKworCQkjZGVmaW5lIF9IUFVYX1NPVVJDRQorCQkjaW5jbHVkZSA8c3RkbGliLmg+CisJCSNpbmNsdWRlIDx1bmlzdGQuaD4KKworCQlpbnQgbWFpbiAoKQorCQl7CisJCSNpZiBkZWZpbmVkKF9TQ19LRVJORUxfQklUUykKKwkJICAgIGxvbmcgYml0cyA9IHN5c2NvbmYoX1NDX0tFUk5FTF9CSVRTKTsKKwkJI2VuZGlmCisJCSAgICBsb25nIGNwdSAgPSBzeXNjb25mIChfU0NfQ1BVX1ZFUlNJT04pOworCisJCSAgICBzd2l0Y2ggKGNwdSkKKwkJCXsKKwkJCWNhc2UgQ1BVX1BBX1JJU0MxXzA6IHB1dHMgKCJocHBhMS4wIik7IGJyZWFrOworCQkJY2FzZSBDUFVfUEFfUklTQzFfMTogcHV0cyAoImhwcGExLjEiKTsgYnJlYWs7CisJCQljYXNlIENQVV9QQV9SSVNDMl8wOgorCQkjaWYgZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpCisJCQkgICAgc3dpdGNoIChiaXRzKQorCQkJCXsKKwkJCQljYXNlIDY0OiBwdXRzICgiaHBwYTIuMHciKTsgYnJlYWs7CisJCQkJY2FzZSAzMjogcHV0cyAoImhwcGEyLjBuIik7IGJyZWFrOworCQkJCWRlZmF1bHQ6IHB1dHMgKCJocHBhMi4wIik7IGJyZWFrOworCQkJCX0gYnJlYWs7CisJCSNlbHNlICAvKiAhZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpICovCisJCQkgICAgcHV0cyAoImhwcGEyLjAiKTsgYnJlYWs7CisJCSNlbmRpZgorCQkJZGVmYXVsdDogcHV0cyAoImhwcGExLjAiKTsgYnJlYWs7CisJCQl9CisJCSAgICBleGl0ICgwKTsKKwkJfQorRU9GCisJCSAgICAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAyPi9kZXYvbnVsbCkgJiYgSFBfQVJDSD1gJGR1bW15YAorCQkgICAgdGVzdCAteiAiJEhQX0FSQ0giICYmIEhQX0FSQ0g9aHBwYQorCQlmaSA7OworCWVzYWMKKwlpZiBbICR7SFBfQVJDSH0gPSAiaHBwYTIuMHciIF0KKwl0aGVuCisJICAgIGV2YWwgJHNldF9jY19mb3JfYnVpbGQKKworCSAgICAjIGhwcGEyLjB3LWhwLWhwdXgqIGhhcyBhIDY0LWJpdCBrZXJuZWwgYW5kIGEgY29tcGlsZXIgZ2VuZXJhdGluZworCSAgICAjIDMyLWJpdCBjb2RlLiAgaHBwYTY0LWhwLWhwdXgqIGhhcyB0aGUgc2FtZSBrZXJuZWwgYW5kIGEgY29tcGlsZXIKKwkgICAgIyBnZW5lcmF0aW5nIDY0LWJpdCBjb2RlLiAgR05VIGFuZCBIUCB1c2UgZGlmZmVyZW50IG5vbWVuY2xhdHVyZToKKwkgICAgIworCSAgICAjICQgQ0NfRk9SX0JVSUxEPWNjIC4vY29uZmlnLmd1ZXNzCisJICAgICMgPT4gaHBwYTIuMHctaHAtaHB1eDExLjIzCisJICAgICMgJCBDQ19GT1JfQlVJTEQ9ImNjICtEQTIuMHciIC4vY29uZmlnLmd1ZXNzCisJICAgICMgPT4gaHBwYTY0LWhwLWhwdXgxMS4yMworCisJICAgIGlmIGVjaG8gX19MUDY0X18gfCAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwKKwkJZ3JlcCAtcSBfX0xQNjRfXworCSAgICB0aGVuCisJCUhQX0FSQ0g9ImhwcGEyLjB3IgorCSAgICBlbHNlCisJCUhQX0FSQ0g9ImhwcGE2NCIKKwkgICAgZmkKKwlmaQorCWVjaG8gJHtIUF9BUkNIfS1ocC1ocHV4JHtIUFVYX1JFVn0KKwlleGl0IDs7CisgICAgaWE2NDpIUC1VWDoqOiopCisJSFBVWF9SRVY9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSouWzBCXSovLydgCisJZWNobyBpYTY0LWhwLWhwdXgke0hQVVhfUkVWfQorCWV4aXQgOzsKKyAgICAzMDUwKjpISS1VWDoqOiopCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCisJI2luY2x1ZGUgPHVuaXN0ZC5oPgorCWludAorCW1haW4gKCkKKwl7CisJICBsb25nIGNwdSA9IHN5c2NvbmYgKF9TQ19DUFVfVkVSU0lPTik7CisJICAvKiBUaGUgb3JkZXIgbWF0dGVycywgYmVjYXVzZSBDUFVfSVNfSFBfTUM2OEsgZXJyb25lb3VzbHkgcmV0dXJucworCSAgICAgdHJ1ZSBmb3IgQ1BVX1BBX1JJU0MxXzAuICBDUFVfSVNfUEFfUklTQyByZXR1cm5zIGNvcnJlY3QKKwkgICAgIHJlc3VsdHMsIGhvd2V2ZXIuICAqLworCSAgaWYgKENQVV9JU19QQV9SSVNDIChjcHUpKQorCSAgICB7CisJICAgICAgc3dpdGNoIChjcHUpCisJCXsKKwkJICBjYXNlIENQVV9QQV9SSVNDMV8wOiBwdXRzICgiaHBwYTEuMC1oaXRhY2hpLWhpdXh3ZTIiKTsgYnJlYWs7CisJCSAgY2FzZSBDUFVfUEFfUklTQzFfMTogcHV0cyAoImhwcGExLjEtaGl0YWNoaS1oaXV4d2UyIik7IGJyZWFrOworCQkgIGNhc2UgQ1BVX1BBX1JJU0MyXzA6IHB1dHMgKCJocHBhMi4wLWhpdGFjaGktaGl1eHdlMiIpOyBicmVhazsKKwkJICBkZWZhdWx0OiBwdXRzICgiaHBwYS1oaXRhY2hpLWhpdXh3ZTIiKTsgYnJlYWs7CisJCX0KKwkgICAgfQorCSAgZWxzZSBpZiAoQ1BVX0lTX0hQX01DNjhLIChjcHUpKQorCSAgICBwdXRzICgibTY4ay1oaXRhY2hpLWhpdXh3ZTIiKTsKKwkgIGVsc2UgcHV0cyAoInVua25vd24taGl0YWNoaS1oaXV4d2UyIik7CisJICBleGl0ICgwKTsKKwl9CitFT0YKKwkkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAmJiBTWVNURU1fTkFNRT1gJGR1bW15YCAmJgorCQl7IGVjaG8gIiRTWVNURU1fTkFNRSI7IGV4aXQ7IH0KKwllY2hvIHVua25vd24taGl0YWNoaS1oaXV4d2UyCisJZXhpdCA7OworICAgIDkwMDAvNz8/OjQuM2JzZDoqOiogfCA5MDAwLzg/Wzc5XTo0LjNic2Q6KjoqICkKKwllY2hvIGhwcGExLjEtaHAtYnNkCisJZXhpdCA7OworICAgIDkwMDAvOD8/OjQuM2JzZDoqOiopCisJZWNobyBocHBhMS4wLWhwLWJzZAorCWV4aXQgOzsKKyAgICAqOT8/KjpNUEUvaVg6KjoqIHwgKjMwMDAqOk1QRS9pWDoqOiopCisJZWNobyBocHBhMS4wLWhwLW1wZWl4CisJZXhpdCA7OworICAgIGhwNz8/Ok9TRjE6KjoqIHwgaHA4P1s3OV06T1NGMToqOiogKQorCWVjaG8gaHBwYTEuMS1ocC1vc2YKKwlleGl0IDs7CisgICAgaHA4Pz86T1NGMToqOiopCisJZWNobyBocHBhMS4wLWhwLW9zZgorCWV4aXQgOzsKKyAgICBpKjg2Ok9TRjE6KjoqKQorCWlmIFsgLXggL3Vzci9zYmluL3N5c3ZlcnNpb24gXSA7IHRoZW4KKwkgICAgZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tb3NmMW1rCisJZWxzZQorCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1vc2YxCisJZmkKKwlleGl0IDs7CisgICAgcGFyaXNjKjpMaXRlcyo6KjoqKQorCWVjaG8gaHBwYTEuMS1ocC1saXRlcworCWV4aXQgOzsKKyAgICBDMSo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMxKjoqKQorCWVjaG8gYzEtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBDMio6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMyKjoqKQorCWlmIGdldHN5c2luZm8gLWYgc2NhbGFyX2FjYworCXRoZW4gZWNobyBjMzItY29udmV4LWJzZAorCWVsc2UgZWNobyBjMi1jb252ZXgtYnNkCisJZmkKKwlleGl0IDs7CisgICAgQzM0KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzM0KjoqKQorCWVjaG8gYzM0LWNvbnZleC1ic2QKKwlleGl0IDs7CisgICAgQzM4KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzM4KjoqKQorCWVjaG8gYzM4LWNvbnZleC1ic2QKKwlleGl0IDs7CisgICAgQzQqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDNCo6KikKKwllY2hvIGM0LWNvbnZleC1ic2QKKwlleGl0IDs7CisgICAgQ1JBWSpZLU1QOio6KjoqKQorCWVjaG8geW1wLWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgIENSQVkqW0EtWl05MDoqOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IFwKKwl8IHNlZCAtZSAncy9DUkFZLipcKFtBLVpdOTBcKS9cMS8nIFwKKwkgICAgICAtZSB5L0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LyBcCisJICAgICAgLWUgJ3MvXC5bXi5dKiQvLlgvJworCWV4aXQgOzsKKyAgICBDUkFZKlRTOio6KjoqKQorCWVjaG8gdDkwLWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgIENSQVkqVDNFOio6KjoqKQorCWVjaG8gYWxwaGFldjUtY3JheS11bmljb3NtayR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJworCWV4aXQgOzsKKyAgICBDUkFZKlNWMToqOio6KikKKwllY2hvIHN2MS1jcmF5LXVuaWNvcyR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJworCWV4aXQgOzsKKyAgICAqOlVOSUNPUy9tcDoqOiopCisJZWNobyBjcmF5bnYtY3JheS11bmljb3NtcCR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJworCWV4aXQgOzsKKyAgICBGMzBbMDFdOlVOSVhfU3lzdGVtX1Y6KjoqIHwgRjcwMDpVTklYX1N5c3RlbV9WOio6KikKKwlGVUpJVFNVX1BST0M9YHVuYW1lIC1tIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonYAorCUZVSklUU1VfU1lTPWB1bmFtZSAtcCB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyB8IHNlZCAtZSAncy9cLy8vJ2AKKwlGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzLyAvXy8nYAorCWVjaG8gIiR7RlVKSVRTVV9QUk9DfS1mdWppdHN1LSR7RlVKSVRTVV9TWVN9JHtGVUpJVFNVX1JFTH0iCisJZXhpdCA7OworICAgIDUwMDA6VU5JWF9TeXN0ZW1fVjo0Lio6KikKKwlGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCisJRlVKSVRTVV9SRUw9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyB8IHNlZCAtZSAncy8gL18vJ2AKKwllY2hvICJzcGFyYy1mdWppdHN1LSR7RlVKSVRTVV9TWVN9JHtGVUpJVFNVX1JFTH0iCisJZXhpdCA7OworICAgIGkqODY6QlNELzM4NjoqOiogfCBpKjg2OkJTRC9PUzoqOiogfCAqOkFzY2VuZFwgRW1iZWRkZWQvT1M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1ic2RpJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBzcGFyYyo6QlNEL09TOio6KikKKwllY2hvIHNwYXJjLXVua25vd24tYnNkaSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpCU0QvT1M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWJzZGkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6RnJlZUJTRDoqOiopCisJVU5BTUVfUFJPQ0VTU09SPWAvdXNyL2Jpbi91bmFtZSAtcGAKKwljYXNlICR7VU5BTUVfUFJPQ0VTU09SfSBpbgorCSAgICBhbWQ2NCkKKwkJZWNobyB4ODZfNjQtdW5rbm93bi1mcmVlYnNkYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4qLy8nYCA7OworCSAgICAqKQorCQllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS11bmtub3duLWZyZWVic2RgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgIDs7CisJZXNhYworCWV4aXQgOzsKKyAgICBpKjpDWUdXSU4qOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWN5Z3dpbgorCWV4aXQgOzsKKyAgICAqOk1JTkdXKjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1taW5ndzMyCisJZXhpdCA7OworICAgIGkqOk1TWVMqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1zeXMKKwlleGl0IDs7CisgICAgaSo6d2luZG93czMyKjoqKQorCSMgdW5hbWUgLW0gaW5jbHVkZXMgIi1wYyIgb24gdGhpcyBzeXN0ZW0uCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LW1pbmd3MzIKKwlleGl0IDs7CisgICAgaSo6UFcqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXB3MzIKKwlleGl0IDs7CisgICAgKjpJbnRlcml4KjoqKQorCWNhc2UgJHtVTkFNRV9NQUNISU5FfSBpbgorCSAgICB4ODYpCisJCWVjaG8gaTU4Ni1wYy1pbnRlcml4JHtVTkFNRV9SRUxFQVNFfQorCQlleGl0IDs7CisJICAgIGF1dGhlbnRpY2FtZCB8IGdlbnVpbmVpbnRlbCB8IEVNNjRUKQorCQllY2hvIHg4Nl82NC11bmtub3duLWludGVyaXgke1VOQU1FX1JFTEVBU0V9CisJCWV4aXQgOzsKKwkgICAgSUE2NCkKKwkJZWNobyBpYTY0LXVua25vd24taW50ZXJpeCR7VU5BTUVfUkVMRUFTRX0KKwkJZXhpdCA7OworCWVzYWMgOzsKKyAgICBbMzQ1XTg2OldpbmRvd3NfOTU6KiB8IFszNDVdODY6V2luZG93c185ODoqIHwgWzM0NV04NjpXaW5kb3dzX05UOiopCisJZWNobyBpJHtVTkFNRV9NQUNISU5FfS1wYy1ta3MKKwlleGl0IDs7CisgICAgODY2NDpXaW5kb3dzX05UOiopCisJZWNobyB4ODZfNjQtcGMtbWtzCisJZXhpdCA7OworICAgIGkqOldpbmRvd3NfTlQqOiogfCBQZW50aXVtKjpXaW5kb3dzX05UKjoqKQorCSMgSG93IGRvIHdlIGtub3cgaXQncyBJbnRlcml4IHJhdGhlciB0aGFuIHRoZSBnZW5lcmljIFBPU0lYIHN1YnN5c3RlbT8KKwkjIEl0IGFsc28gY29uZmxpY3RzIHdpdGggcHJlLTIuMCB2ZXJzaW9ucyBvZiBBVCZUIFVXSU4uIFNob3VsZCB3ZQorCSMgVU5BTUVfTUFDSElORSBiYXNlZCBvbiB0aGUgb3V0cHV0IG9mIHVuYW1lIGluc3RlYWQgb2YgaTM4Nj8KKwllY2hvIGk1ODYtcGMtaW50ZXJpeAorCWV4aXQgOzsKKyAgICBpKjpVV0lOKjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy11d2luCisJZXhpdCA7OworICAgIGFtZDY0OkNZR1dJTio6KjoqIHwgeDg2XzY0OkNZR1dJTio6KjoqKQorCWVjaG8geDg2XzY0LXVua25vd24tY3lnd2luCisJZXhpdCA7OworICAgIHAqOkNZR1dJTio6KikKKwllY2hvIHBvd2VycGNsZS11bmtub3duLWN5Z3dpbgorCWV4aXQgOzsKKyAgICBwcmVwKjpTdW5PUzo1Lio6KikKKwllY2hvIHBvd2VycGNsZS11bmtub3duLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXhpdCA7OworICAgICo6R05VOio6KikKKwkjIHRoZSBHTlUgc3lzdGVtCisJZWNobyBgZWNobyAke1VOQU1FX01BQ0hJTkV9fHNlZCAtZSAncyxbLS9dLiokLCwnYC11bmtub3duLWdudWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzLC8uKiQsLCdgCisJZXhpdCA7OworICAgICo6R05VLyo6KjoqKQorCSMgb3RoZXIgc3lzdGVtcyB3aXRoIEdOVSBsaWJjIGFuZCB1c2VybGFuZAorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWBlY2hvICR7VU5BTUVfU1lTVEVNfSB8IHNlZCAncyxeW14vXSovLCwnIHwgdHIgJ1tBLVpdJyAnW2Etel0nYGBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AtZ251CisJZXhpdCA7OworICAgIGkqODY6TWluaXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1taW5peAorCWV4aXQgOzsKKyAgICBhYXJjaDY0OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgYWFyY2g2NF9iZTpMaW51eDoqOiopCisJVU5BTUVfTUFDSElORT1hYXJjaDY0X2JlCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIGFscGhhOkxpbnV4Oio6KikKKwljYXNlIGBzZWQgLW4gJy9eY3B1IG1vZGVsL3MvXi4qOiBcKC4qXCkvXDEvcCcgPCAvcHJvYy9jcHVpbmZvYCBpbgorCSAgRVY1KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjUgOzsKKwkgIEVWNTYpICBVTkFNRV9NQUNISU5FPWFscGhhZXY1NiA7OworCSAgUENBNTYpIFVOQU1FX01BQ0hJTkU9YWxwaGFwY2E1NiA7OworCSAgUENBNTcpIFVOQU1FX01BQ0hJTkU9YWxwaGFwY2E1NiA7OworCSAgRVY2KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjYgOzsKKwkgIEVWNjcpICBVTkFNRV9NQUNISU5FPWFscGhhZXY2NyA7OworCSAgRVY2OCopIFVOQU1FX01BQ0hJTkU9YWxwaGFldjY4IDs7CisJZXNhYworCW9iamR1bXAgLS1wcml2YXRlLWhlYWRlcnMgL2Jpbi9zaCB8IGdyZXAgLXEgbGQuc28uMQorCWlmIHRlc3QgIiQ/IiA9IDAgOyB0aGVuIExJQkM9ImxpYmMxIiA7IGVsc2UgTElCQz0iIiA7IGZpCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251JHtMSUJDfQorCWV4aXQgOzsKKyAgICBhcm0qOkxpbnV4Oio6KikKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJaWYgZWNobyBfX0FSTV9FQUJJX18gfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAorCSAgICB8IGdyZXAgLXEgX19BUk1fRUFCSV9fCisJdGhlbgorCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwllbHNlCisJICAgIGlmIGVjaG8gX19BUk1fUENTX1ZGUCB8ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCBcCisJCXwgZ3JlcCAtcSBfX0FSTV9QQ1NfVkZQCisJICAgIHRoZW4KKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251ZWFiaQorCSAgICBlbHNlCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudWVhYmloZgorCSAgICBmaQorCWZpCisJZXhpdCA7OworICAgIGF2cjMyKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIGNyaXM6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1heGlzLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBjcmlzdjMyOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tYXhpcy1saW51eC1nbnUKKwlleGl0IDs7CisgICAgZnJ2OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgaGV4YWdvbjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIGkqODY6TGludXg6KjoqKQorCUxJQkM9Z251CisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCisJI2lmZGVmIF9fZGlldGxpYmNfXworCUxJQkM9ZGlldGxpYmMKKwkjZW5kaWYKK0VPRgorCWV2YWwgYCRDQ19GT1JfQlVJTEQgLUUgJGR1bW15LmMgMj4vZGV2L251bGwgfCBncmVwICdeTElCQydgCisJZWNobyAiJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC0ke0xJQkN9IgorCWV4aXQgOzsKKyAgICBpYTY0OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgbTMycio6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBtNjgqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgbWlwczpMaW51eDoqOiogfCBtaXBzNjQ6TGludXg6KjoqKQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYworCSN1bmRlZiBDUFUKKwkjdW5kZWYgJHtVTkFNRV9NQUNISU5FfQorCSN1bmRlZiAke1VOQU1FX01BQ0hJTkV9ZWwKKwkjaWYgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fTUlQU0VMKSB8fCBkZWZpbmVkKF9NSVBTRUwpIHx8IGRlZmluZWQoTUlQU0VMKQorCUNQVT0ke1VOQU1FX01BQ0hJTkV9ZWwKKwkjZWxzZQorCSNpZiBkZWZpbmVkKF9fTUlQU0VCX18pIHx8IGRlZmluZWQoX19NSVBTRUIpIHx8IGRlZmluZWQoX01JUFNFQikgfHwgZGVmaW5lZChNSVBTRUIpCisJQ1BVPSR7VU5BTUVfTUFDSElORX0KKwkjZWxzZQorCUNQVT0KKwkjZW5kaWYKKwkjZW5kaWYKK0VPRgorCWV2YWwgYCRDQ19GT1JfQlVJTEQgLUUgJGR1bW15LmMgMj4vZGV2L251bGwgfCBncmVwICdeQ1BVJ2AKKwl0ZXN0IHgiJHtDUFV9IiAhPSB4ICYmIHsgZWNobyAiJHtDUFV9LXVua25vd24tbGludXgtZ251IjsgZXhpdDsgfQorCTs7CisgICAgb3IzMjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHBhZHJlOkxpbnV4Oio6KikKKwllY2hvIHNwYXJjLXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHBhcmlzYzY0OkxpbnV4Oio6KiB8IGhwcGE2NDpMaW51eDoqOiopCisJZWNobyBocHBhNjQtdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgcGFyaXNjOkxpbnV4Oio6KiB8IGhwcGE6TGludXg6KjoqKQorCSMgTG9vayBmb3IgQ1BVIGxldmVsCisJY2FzZSBgZ3JlcCAnXmNwdVteYS16XSo6JyAvcHJvYy9jcHVpbmZvIDI+L2Rldi9udWxsIHwgY3V0IC1kJyAnIC1mMmAgaW4KKwkgIFBBNyopIGVjaG8gaHBwYTEuMS11bmtub3duLWxpbnV4LWdudSA7OworCSAgUEE4KikgZWNobyBocHBhMi4wLXVua25vd24tbGludXgtZ251IDs7CisJICAqKSAgICBlY2hvIGhwcGEtdW5rbm93bi1saW51eC1nbnUgOzsKKwllc2FjCisJZXhpdCA7OworICAgIHBwYzY0OkxpbnV4Oio6KikKKwllY2hvIHBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBwcGM6TGludXg6KjoqKQorCWVjaG8gcG93ZXJwYy11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBzMzkwOkxpbnV4Oio6KiB8IHMzOTB4OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0taWJtLWxpbnV4CisJZXhpdCA7OworICAgIHNoNjQqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgc2gqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgc3BhcmM6TGludXg6KjoqIHwgc3BhcmM2NDpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHRpbGUqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgdmF4OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tZGVjLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICB4ODZfNjQ6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICB4dGVuc2EqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgaSo4NjpEWU5JWC9wdHg6NCo6KikKKwkjIHB0eCA0LjAgZG9lcyB1bmFtZSAtcyBjb3JyZWN0bHksIHdpdGggRFlOSVgvcHR4IGluIHRoZXJlLgorCSMgZWFybGllciB2ZXJzaW9ucyBhcmUgbWVzc2VkIHVwIGFuZCBwdXQgdGhlIG5vZGVuYW1lIGluIGJvdGgKKwkjIHN5c25hbWUgYW5kIG5vZGVuYW1lLgorCWVjaG8gaTM4Ni1zZXF1ZW50LXN5c3Y0CisJZXhpdCA7OworICAgIGkqODY6VU5JWF9TVjo0LjJNUDoyLiopCisJIyBVbml4d2FyZSBpcyBhbiBvZmZzaG9vdCBvZiBTVlI0LCBidXQgaXQgaGFzIGl0cyBvd24gdmVyc2lvbgorCSMgbnVtYmVyIHNlcmllcyBzdGFydGluZyB3aXRoIDIuLi4KKwkjIEkgYW0gbm90IHBvc2l0aXZlIHRoYXQgb3RoZXIgU1ZSNCBzeXN0ZW1zIHdvbid0IG1hdGNoIHRoaXMsCisJIyBJIGp1c3QgaGF2ZSB0byBob3BlLiAgLS0gcm1zLgorCSMgVXNlIHN5c3Y0LjJ1dy4uLiBzbyB0aGF0IHN5c3Y0KiBtYXRjaGVzIGl0LgorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zeXN2NC4ydXcke1VOQU1FX1ZFUlNJT059CisJZXhpdCA7OworICAgIGkqODY6T1MvMjoqOiopCisJIyBJZiB3ZSB3ZXJlIGFibGUgdG8gZmluZCBgdW5hbWUnLCB0aGVuIEVNWCBVbml4IGNvbXBhdGliaWxpdHkKKwkjIGlzIHByb2JhYmx5IGluc3RhbGxlZC4KKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtb3MyLWVteAorCWV4aXQgOzsKKyAgICBpKjg2OlhUUy0zMDA6KjpTVE9QKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXN0b3AKKwlleGl0IDs7CisgICAgaSo4NjphdGhlb3M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWF0aGVvcworCWV4aXQgOzsKKyAgICBpKjg2OnN5bGxhYmxlOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lsbGFibGUKKwlleGl0IDs7CisgICAgaSo4NjpMeW54T1M6Mi4qOiogfCBpKjg2Okx5bnhPUzozLlswMV0qOiogfCBpKjg2Okx5bnhPUzo0LlswMl0qOiopCisJZWNobyBpMzg2LXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBpKjg2OipET1M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1tc2Rvc2RqZ3BwCisJZXhpdCA7OworICAgIGkqODY6Kjo0Lio6KiB8IGkqODY6U1lTVEVNX1Y6NC4qOiopCisJVU5BTUVfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgJ3MvXC9NUCQvLydgCisJaWYgZ3JlcCBOb3ZlbGwgL3Vzci9pbmNsdWRlL2xpbmsuaCA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bml2ZWwtc3lzdiR7VU5BTUVfUkVMfQorCWVsc2UKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXN5c3Yke1VOQU1FX1JFTH0KKwlmaQorCWV4aXQgOzsKKyAgICBpKjg2Oio6NTpbNjc4XSopCisJIyBVbml4V2FyZSA3LngsIE9wZW5VTklYIGFuZCBPcGVuU2VydmVyIDYuCisJY2FzZSBgL2Jpbi91bmFtZSAtWCB8IGdyZXAgIl5NYWNoaW5lImAgaW4KKwkgICAgKjQ4NiopCSAgICAgVU5BTUVfTUFDSElORT1pNDg2IDs7CisJICAgICpQZW50aXVtKQkgICAgIFVOQU1FX01BQ0hJTkU9aTU4NiA7OworCSAgICAqUGVudCp8KkNlbGVyb24pIFVOQU1FX01BQ0hJTkU9aTY4NiA7OworCWVzYWMKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1zeXN2JHtVTkFNRV9SRUxFQVNFfSR7VU5BTUVfU1lTVEVNfSR7VU5BTUVfVkVSU0lPTn0KKwlleGl0IDs7CisgICAgaSo4NjoqOjMuMjoqKQorCWlmIHRlc3QgLWYgL3Vzci9vcHRpb25zL2NiLm5hbWU7IHRoZW4KKwkJVU5BTUVfUkVMPWBzZWQgLW4gJ3MvLipWZXJzaW9uIC8vcCcgPC91c3Ivb3B0aW9ucy9jYi5uYW1lYAorCQllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtaXNjJFVOQU1FX1JFTAorCWVsaWYgL2Jpbi91bmFtZSAtWCAyPi9kZXYvbnVsbCA+L2Rldi9udWxsIDsgdGhlbgorCQlVTkFNRV9SRUw9YCgvYmluL3VuYW1lIC1YfGdyZXAgUmVsZWFzZXxzZWQgLWUgJ3MvLio9IC8vJylgCisJCSgvYmluL3VuYW1lIC1YfGdyZXAgaTgwNDg2ID4vZGV2L251bGwpICYmIFVOQU1FX01BQ0hJTkU9aTQ4NgorCQkoL2Jpbi91bmFtZSAtWHxncmVwICdeTWFjaGluZS4qUGVudGl1bScgPi9kZXYvbnVsbCkgXAorCQkJJiYgVU5BTUVfTUFDSElORT1pNTg2CisJCSgvYmluL3VuYW1lIC1YfGdyZXAgJ15NYWNoaW5lLipQZW50ICpJSScgPi9kZXYvbnVsbCkgXAorCQkJJiYgVU5BTUVfTUFDSElORT1pNjg2CisJCSgvYmluL3VuYW1lIC1YfGdyZXAgJ15NYWNoaW5lLipQZW50aXVtIFBybycgPi9kZXYvbnVsbCkgXAorCQkJJiYgVU5BTUVfTUFDSElORT1pNjg2CisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zY28kVU5BTUVfUkVMCisJZWxzZQorCQllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lzdjMyCisJZmkKKwlleGl0IDs7CisgICAgcGM6KjoqOiopCisJIyBMZWZ0IGhlcmUgZm9yIGNvbXBhdGliaWxpdHk6CisJIyB1bmFtZSAtbSBwcmludHMgZm9yIERKR1BQIGFsd2F5cyAncGMnLCBidXQgaXQgcHJpbnRzIG5vdGhpbmcgYWJvdXQKKwkjIHRoZSBwcm9jZXNzb3IsIHNvIHdlIHBsYXkgc2FmZSBieSBhc3N1bWluZyBpNTg2LgorCSMgTm90ZTogd2hhdGV2ZXIgdGhpcyBpcywgaXQgTVVTVCBiZSB0aGUgc2FtZSBhcyB3aGF0IGNvbmZpZy5zdWIKKwkjIHByaW50cyBmb3IgdGhlICJkamdwcCIgaG9zdCwgb3IgZWxzZSBHREIgY29uZmlndXJ5IHdpbGwgZGVjaWRlIHRoYXQKKwkjIHRoaXMgaXMgYSBjcm9zcy1idWlsZC4KKwllY2hvIGk1ODYtcGMtbXNkb3NkamdwcAorCWV4aXQgOzsKKyAgICBJbnRlbDpNYWNoOjMqOiopCisJZWNobyBpMzg2LXBjLW1hY2gzCisJZXhpdCA7OworICAgIHBhcmFnb246KjoqOiopCisJZWNobyBpODYwLWludGVsLW9zZjEKKwlleGl0IDs7CisgICAgaTg2MDoqOjQuKjoqKSAjIGk4NjAtU1ZSNAorCWlmIGdyZXAgU3RhcmRlbnQgL3Vzci9pbmNsdWRlL3N5cy91YWRtaW4uaCA+L2Rldi9udWxsIDI+JjEgOyB0aGVuCisJICBlY2hvIGk4NjAtc3RhcmRlbnQtc3lzdiR7VU5BTUVfUkVMRUFTRX0gIyBTdGFyZGVudCBWaXN0cmEgaTg2MC1TVlI0CisJZWxzZSAjIEFkZCBvdGhlciBpODYwLVNWUjQgdmVuZG9ycyBiZWxvdyBhcyB0aGV5IGFyZSBkaXNjb3ZlcmVkLgorCSAgZWNobyBpODYwLXVua25vd24tc3lzdiR7VU5BTUVfUkVMRUFTRX0gICMgVW5rbm93biBpODYwLVNWUjQKKwlmaQorCWV4aXQgOzsKKyAgICBtaW5pKjpDVElYOlNZUyo1OiopCisJIyAibWluaWZyYW1lIgorCWVjaG8gbTY4MDEwLWNvbnZlcmdlbnQtc3lzdgorCWV4aXQgOzsKKyAgICBtYzY4azpVTklYOlNZU1RFTTU6My41MW0pCisJZWNobyBtNjhrLWNvbnZlcmdlbnQtc3lzdgorCWV4aXQgOzsKKyAgICBNNjgwPzA6RC1OSVg6NS4zOiopCisJZWNobyBtNjhrLWRpYWItZG5peAorCWV4aXQgOzsKKyAgICBNNjgqOio6UjNWWzU2NzhdKjoqKQorCXRlc3QgLXIgL3N5c1Y2OCAmJiB7IGVjaG8gJ202OGstbW90b3JvbGEtc3lzdic7IGV4aXQ7IH0gOzsKKyAgICAzWzM0NV0/PzoqOjQuMDozLjAgfCAzWzM0XT8/QToqOjQuMDozLjAgfCAzWzM0XT8/LCo6Kjo0LjA6My4wIHwgM1szNF0/Py8qOio6NC4wOjMuMCB8IDQ0MDA6Kjo0LjA6My4wIHwgNDg1MDoqOjQuMDozLjAgfCBTS0E0MDoqOjQuMDozLjAgfCBTRFMyOio6NC4wOjMuMCB8IFNIRzI6Kjo0LjA6My4wIHwgUzc1MDEqOio6NC4wOjMuMCkKKwlPU19SRUw9JycKKwl0ZXN0IC1yIC9ldGMvLnJlbGlkIFwKKwkmJiBPU19SRUw9LmBzZWQgLW4gJ3MvW14gXSogW14gXSogXChbMC05XVswLTldXCkuKi9cMS9wJyA8IC9ldGMvLnJlbGlkYAorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCBncmVwIDg2ID4vZGV2L251bGwgXAorCSAgJiYgeyBlY2hvIGk0ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0KKwkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgL2Jpbi9ncmVwIGVudGl1bSA+L2Rldi9udWxsIFwKKwkgICYmIHsgZWNobyBpNTg2LW5jci1zeXN2NC4zJHtPU19SRUx9OyBleGl0OyB9IDs7CisgICAgM1szNF0/PzoqOjQuMDoqIHwgM1szNF0/PywqOio6NC4wOiopCisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IGdyZXAgODYgPi9kZXYvbnVsbCBcCisJICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQ7IGV4aXQ7IH0gOzsKKyAgICBOQ1IqOio6NC4yOiogfCBNUFJBUyo6Kjo0LjI6KikKKwlPU19SRUw9Jy4zJworCXRlc3QgLXIgL2V0Yy8ucmVsaWQgXAorCSAgICAmJiBPU19SRUw9LmBzZWQgLW4gJ3MvW14gXSogW14gXSogXChbMC05XVswLTldXCkuKi9cMS9wJyA8IC9ldGMvLnJlbGlkYAorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCBncmVwIDg2ID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dyZXAgZW50aXVtID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dyZXAgcHRlcm9uID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfSA7OworICAgIG02OCo6THlueE9TOjIuKjoqIHwgbTY4KjpMeW54T1M6My4wKjoqKQorCWVjaG8gbTY4ay11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgbWM2ODAzMDpVTklYX1N5c3RlbV9WOjQuKjoqKQorCWVjaG8gbTY4ay1hdGFyaS1zeXN2NAorCWV4aXQgOzsKKyAgICBUU1VOQU1JOkx5bnhPUzoyLio6KikKKwllY2hvIHNwYXJjLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICByczYwMDA6THlueE9TOjIuKjoqKQorCWVjaG8gcnM2MDAwLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBQb3dlclBDOkx5bnhPUzoyLio6KiB8IFBvd2VyUEM6THlueE9TOjMuWzAxXSo6KiB8IFBvd2VyUEM6THlueE9TOjQuWzAyXSo6KikKKwllY2hvIHBvd2VycGMtdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFNNW0JFXVM6VU5JWF9TVjoqOiopCisJZWNobyBtaXBzLWRkZS1zeXN2JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBSTSo6UmVsaWFudFVOSVgtKjoqOiopCisJZWNobyBtaXBzLXNuaS1zeXN2NAorCWV4aXQgOzsKKyAgICBSTSo6U0lOSVgtKjoqOiopCisJZWNobyBtaXBzLXNuaS1zeXN2NAorCWV4aXQgOzsKKyAgICAqOlNJTklYLSo6KjoqKQorCWlmIHVuYW1lIC1wIDI+L2Rldi9udWxsID4vZGV2L251bGwgOyB0aGVuCisJCVVOQU1FX01BQ0hJTkU9YCh1bmFtZSAtcCkgMj4vZGV2L251bGxgCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1zbmktc3lzdjQKKwllbHNlCisJCWVjaG8gbnMzMmstc25pLXN5c3YKKwlmaQorCWV4aXQgOzsKKyAgICBQRU5USVVNOio6NC4wKjoqKQkjIFVuaXN5cyBgQ2xlYXJQYXRoIEhNUCBJWCA0MDAwJyBTVlI0L01QIGVmZm9ydAorCQkJIyBzYXlzIDxSaWNoYXJkLk0uQmFydGVsQGNjTWFpbC5DZW5zdXMuR09WPgorCWVjaG8gaTU4Ni11bmlzeXMtc3lzdjQKKwlleGl0IDs7CisgICAgKjpVTklYX1N5c3RlbV9WOjQqOkZUWCopCisJIyBGcm9tIEdlcmFsZCBIZXdlcyA8aGV3ZXNAb3Blbm1hcmtldC5jb20+LgorCSMgSG93IGFib3V0IGRpZmZlcmVudGlhdGluZyBiZXR3ZWVuIHN0cmF0dXMgYXJjaGl0ZWN0dXJlcz8gLWRqbQorCWVjaG8gaHBwYTEuMS1zdHJhdHVzLXN5c3Y0CisJZXhpdCA7OworICAgICo6KjoqOkZUWCopCisJIyBGcm9tIHNlYW5mQHN3ZGMuc3RyYXR1cy5jb20uCisJZWNobyBpODYwLXN0cmF0dXMtc3lzdjQKKwlleGl0IDs7CisgICAgaSo4NjpWT1M6KjoqKQorCSMgRnJvbSBQYXVsLkdyZWVuQHN0cmF0dXMuY29tLgorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1zdHJhdHVzLXZvcworCWV4aXQgOzsKKyAgICAqOlZPUzoqOiopCisJIyBGcm9tIFBhdWwuR3JlZW5Ac3RyYXR1cy5jb20uCisJZWNobyBocHBhMS4xLXN0cmF0dXMtdm9zCisJZXhpdCA7OworICAgIG1jNjgqOkEvVVg6KjoqKQorCWVjaG8gbTY4ay1hcHBsZS1hdXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIG5ld3MqOk5FV1MtT1M6Nio6KikKKwllY2hvIG1pcHMtc29ueS1uZXdzb3M2CisJZXhpdCA7OworICAgIFJbMzRdMDAwOipTeXN0ZW1fVio6KjoqIHwgUjQwMDA6VU5JWF9TWVNWOio6KiB8IFIqMDAwOlVOSVhfU1Y6KjoqKQorCWlmIFsgLWQgL3Vzci9uZWMgXTsgdGhlbgorCQllY2hvIG1pcHMtbmVjLXN5c3Yke1VOQU1FX1JFTEVBU0V9CisJZWxzZQorCQllY2hvIG1pcHMtdW5rbm93bi1zeXN2JHtVTkFNRV9SRUxFQVNFfQorCWZpCisJZXhpdCA7OworICAgIEJlQm94OkJlT1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBoYXJkd2FyZSBtYWRlIGJ5IEJlLCBQUEMgb25seS4KKwllY2hvIHBvd2VycGMtYmUtYmVvcworCWV4aXQgOzsKKyAgICBCZU1hYzpCZU9TOio6KikJIyBCZU9TIHJ1bm5pbmcgb24gTWFjIG9yIE1hYyBjbG9uZSwgUFBDIG9ubHkuCisJZWNobyBwb3dlcnBjLWFwcGxlLWJlb3MKKwlleGl0IDs7CisgICAgQmVQQzpCZU9TOio6KikJIyBCZU9TIHJ1bm5pbmcgb24gSW50ZWwgUEMgY29tcGF0aWJsZS4KKwllY2hvIGk1ODYtcGMtYmVvcworCWV4aXQgOzsKKyAgICBCZVBDOkhhaWt1Oio6KikJIyBIYWlrdSBydW5uaW5nIG9uIEludGVsIFBDIGNvbXBhdGlibGUuCisJZWNobyBpNTg2LXBjLWhhaWt1CisJZXhpdCA7OworICAgIFNYLTQ6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g0LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTWC01OlNVUEVSLVVYOio6KikKKwllY2hvIHN4NS1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU1gtNjpTVVBFUi1VWDoqOiopCisJZWNobyBzeDYtbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFNYLTc6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g3LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTWC04OlNVUEVSLVVYOio6KikKKwllY2hvIHN4OC1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU1gtOFI6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g4ci1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgUG93ZXIqOlJoYXBzb2R5Oio6KikKKwllY2hvIHBvd2VycGMtYXBwbGUtcmhhcHNvZHkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6UmhhcHNvZHk6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1hcHBsZS1yaGFwc29keSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpEYXJ3aW46KjoqKQorCVVOQU1FX1BST0NFU1NPUj1gdW5hbWUgLXBgIHx8IFVOQU1FX1BST0NFU1NPUj11bmtub3duCisJY2FzZSAkVU5BTUVfUFJPQ0VTU09SIGluCisJICAgIGkzODYpCisJCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwkJaWYgWyAiJENDX0ZPUl9CVUlMRCIgIT0gJ25vX2NvbXBpbGVyX2ZvdW5kJyBdOyB0aGVuCisJCSAgaWYgKGVjaG8gJyNpZmRlZiBfX0xQNjRfXyc7IGVjaG8gSVNfNjRCSVRfQVJDSDsgZWNobyAnI2VuZGlmJykgfCBcCisJCSAgICAgIChDQ09QVFM9ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfCBcCisJCSAgICAgIGdyZXAgSVNfNjRCSVRfQVJDSCA+L2Rldi9udWxsCisJCSAgdGhlbgorCQkgICAgICBVTkFNRV9QUk9DRVNTT1I9Ing4Nl82NCIKKwkJICBmaQorCQlmaSA7OworCSAgICB1bmtub3duKSBVTkFNRV9QUk9DRVNTT1I9cG93ZXJwYyA7OworCWVzYWMKKwllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS1hcHBsZS1kYXJ3aW4ke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6cHJvY250byo6KjoqIHwgKjpRTlg6WzAxMjM0NTY3ODldKjoqKQorCVVOQU1FX1BST0NFU1NPUj1gdW5hbWUgLXBgCisJaWYgdGVzdCAiJFVOQU1FX1BST0NFU1NPUiIgPSAieDg2IjsgdGhlbgorCQlVTkFNRV9QUk9DRVNTT1I9aTM4NgorCQlVTkFNRV9NQUNISU5FPXBjCisJZmkKKwllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS0ke1VOQU1FX01BQ0hJTkV9LW50by1xbngke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6UU5YOio6NCopCisJZWNobyBpMzg2LXBjLXFueAorCWV4aXQgOzsKKyAgICBORU8tPzpOT05TVE9QX0tFUk5FTDoqOiopCisJZWNobyBuZW8tdGFuZGVtLW5zayR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgTlNFLT86Tk9OU1RPUF9LRVJORUw6KjoqKQorCWVjaG8gbnNlLXRhbmRlbS1uc2ske1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIE5TUi0/Ok5PTlNUT1BfS0VSTkVMOio6KikKKwllY2hvIG5zci10YW5kZW0tbnNrJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOk5vblN0b3AtVVg6KjoqKQorCWVjaG8gbWlwcy1jb21wYXEtbm9uc3RvcHV4CisJZXhpdCA7OworICAgIEJTMjAwMDpQT1NJWCo6KjoqKQorCWVjaG8gYnMyMDAwLXNpZW1lbnMtc3lzdgorCWV4aXQgOzsKKyAgICBEUy8qOlVOSVhfU3lzdGVtX1Y6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS0ke1VOQU1FX1NZU1RFTX0tJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOlBsYW45Oio6KikKKwkjICJ1bmFtZSAtbSIgaXMgbm90IGNvbnNpc3RlbnQsIHNvIHVzZSAkY3B1dHlwZSBpbnN0ZWFkLiAzODYKKwkjIGlzIGNvbnZlcnRlZCB0byBpMzg2IGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIHg4NgorCSMgb3BlcmF0aW5nIHN5c3RlbXMuCisJaWYgdGVzdCAiJGNwdXR5cGUiID0gIjM4NiI7IHRoZW4KKwkgICAgVU5BTUVfTUFDSElORT1pMzg2CisJZWxzZQorCSAgICBVTkFNRV9NQUNISU5FPSIkY3B1dHlwZSIKKwlmaQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXBsYW45CisJZXhpdCA7OworICAgICo6VE9QUy0xMDoqOiopCisJZWNobyBwZHAxMC11bmtub3duLXRvcHMxMAorCWV4aXQgOzsKKyAgICAqOlRFTkVYOio6KikKKwllY2hvIHBkcDEwLXVua25vd24tdGVuZXgKKwlleGl0IDs7CisgICAgS1MxMDpUT1BTLTIwOio6KiB8IEtMMTA6VE9QUy0yMDoqOiogfCBUWVBFNDpUT1BTLTIwOio6KikKKwllY2hvIHBkcDEwLWRlYy10b3BzMjAKKwlleGl0IDs7CisgICAgWEtMLTE6VE9QUy0yMDoqOiogfCBUWVBFNTpUT1BTLTIwOio6KikKKwllY2hvIHBkcDEwLXhrbC10b3BzMjAKKwlleGl0IDs7CisgICAgKjpUT1BTLTIwOio6KikKKwllY2hvIHBkcDEwLXVua25vd24tdG9wczIwCisJZXhpdCA7OworICAgICo6SVRTOio6KikKKwllY2hvIHBkcDEwLXVua25vd24taXRzCisJZXhpdCA7OworICAgIFNFSToqOio6U0VJVVgpCisJZWNobyBtaXBzLXNlaS1zZWl1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpEcmFnb25GbHk6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWRyYWdvbmZseWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AKKwlleGl0IDs7CisgICAgKjoqVk1TOio6KikKKwlVTkFNRV9NQUNISU5FPWAodW5hbWUgLXApIDI+L2Rldi9udWxsYAorCWNhc2UgIiR7VU5BTUVfTUFDSElORX0iIGluCisJICAgIEEqKSBlY2hvIGFscGhhLWRlYy12bXMgOyBleGl0IDs7CisJICAgIEkqKSBlY2hvIGlhNjQtZGVjLXZtcyA7IGV4aXQgOzsKKwkgICAgViopIGVjaG8gdmF4LWRlYy12bXMgOyBleGl0IDs7CisJZXNhYyA7OworICAgICo6WEVOSVg6KjpTeXNWKQorCWVjaG8gaTM4Ni1wYy14ZW5peAorCWV4aXQgOzsKKyAgICBpKjg2OnNreW9zOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc2t5b3NgZWNobyAke1VOQU1FX1JFTEVBU0V9YCB8IHNlZCAtZSAncy8gLiokLy8nCisJZXhpdCA7OworICAgIGkqODY6cmRvczoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXJkb3MKKwlleGl0IDs7CisgICAgaSo4NjpBUk9TOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtYXJvcworCWV4aXQgOzsKKyAgICB4ODZfNjQ6Vk1rZXJuZWw6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWVzeAorCWV4aXQgOzsKK2VzYWMKKworI2VjaG8gJyhObyB1bmFtZSBjb21tYW5kIG9yIHVuYW1lIG91dHB1dCBub3QgcmVjb2duaXplZC4pJyAxPiYyCisjZWNobyAiJHtVTkFNRV9NQUNISU5FfToke1VOQU1FX1NZU1RFTX06JHtVTkFNRV9SRUxFQVNFfToke1VOQU1FX1ZFUlNJT059IiAxPiYyCisKK2V2YWwgJHNldF9jY19mb3JfYnVpbGQKK2NhdCA+JGR1bW15LmMgPDxFT0YKKyNpZmRlZiBfU0VRVUVOVF8KKyMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjIGluY2x1ZGUgPHN5cy91dHNuYW1lLmg+CisjZW5kaWYKK21haW4gKCkKK3sKKyNpZiBkZWZpbmVkIChzb255KQorI2lmIGRlZmluZWQgKE1JUFNFQikKKyAgLyogQkZEIHdhbnRzICJic2QiIGluc3RlYWQgb2YgIm5ld3NvcyIuICBQZXJoYXBzIEJGRCBzaG91bGQgYmUgY2hhbmdlZCwKKyAgICAgSSBkb24ndCBrbm93Li4uLiAgKi8KKyAgcHJpbnRmICgibWlwcy1zb255LWJzZFxuIik7IGV4aXQgKDApOworI2Vsc2UKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyAgcHJpbnRmICgibTY4ay1zb255LW5ld3NvcyVzXG4iLAorI2lmZGVmIE5FV1NPUzQKKwkiNCIKKyNlbHNlCisJIiIKKyNlbmRpZgorCSk7IGV4aXQgKDApOworI2VuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQgKF9fYXJtKSAmJiBkZWZpbmVkIChfX2Fjb3JuKSAmJiBkZWZpbmVkIChfX3VuaXgpCisgIHByaW50ZiAoImFybS1hY29ybi1yaXNjaXhcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoaHAzMDApICYmICFkZWZpbmVkIChocHV4KQorICBwcmludGYgKCJtNjhrLWhwLWJzZFxuIik7IGV4aXQgKDApOworI2VuZGlmCisKKyNpZiBkZWZpbmVkIChOZVhUKQorI2lmICFkZWZpbmVkIChfX0FSQ0hJVEVDVFVSRV9fKQorI2RlZmluZSBfX0FSQ0hJVEVDVFVSRV9fICJtNjhrIgorI2VuZGlmCisgIGludCB2ZXJzaW9uOworICB2ZXJzaW9uPWAoaG9zdGluZm8gfCBzZWQgLW4gJ3MvLipOZVhUIE1hY2ggXChbMC05XSpcKS4qL1wxL3AnKSAyPi9kZXYvbnVsbGA7CisgIGlmICh2ZXJzaW9uIDwgNCkKKyAgICBwcmludGYgKCIlcy1uZXh0LW5leHRzdGVwJWRcbiIsIF9fQVJDSElURUNUVVJFX18sIHZlcnNpb24pOworICBlbHNlCisgICAgcHJpbnRmICgiJXMtbmV4dC1vcGVuc3RlcCVkXG4iLCBfX0FSQ0hJVEVDVFVSRV9fLCB2ZXJzaW9uKTsKKyAgZXhpdCAoMCk7CisjZW5kaWYKKworI2lmIGRlZmluZWQgKE1VTFRJTUFYKSB8fCBkZWZpbmVkIChuMTYpCisjaWYgZGVmaW5lZCAoVU1BWFYpCisgIHByaW50ZiAoIm5zMzJrLWVuY29yZS1zeXN2XG4iKTsgZXhpdCAoMCk7CisjZWxzZQorI2lmIGRlZmluZWQgKENNVSkKKyAgcHJpbnRmICgibnMzMmstZW5jb3JlLW1hY2hcbiIpOyBleGl0ICgwKTsKKyNlbHNlCisgIHByaW50ZiAoIm5zMzJrLWVuY29yZS1ic2RcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorI2VuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQgKF9fMzg2QlNEX18pCisgIHByaW50ZiAoImkzODYtcGMtYnNkXG4iKTsgZXhpdCAoMCk7CisjZW5kaWYKKworI2lmIGRlZmluZWQgKHNlcXVlbnQpCisjaWYgZGVmaW5lZCAoaTM4NikKKyAgcHJpbnRmICgiaTM4Ni1zZXF1ZW50LWR5bml4XG4iKTsgZXhpdCAoMCk7CisjZW5kaWYKKyNpZiBkZWZpbmVkIChuczMyMDAwKQorICBwcmludGYgKCJuczMyay1zZXF1ZW50LWR5bml4XG4iKTsgZXhpdCAoMCk7CisjZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoX1NFUVVFTlRfKQorICAgIHN0cnVjdCB1dHNuYW1lIHVuOworCisgICAgdW5hbWUoJnVuKTsKKworICAgIGlmIChzdHJuY21wKHVuLnZlcnNpb24sICJWMiIsIDIpID09IDApIHsKKwlwcmludGYgKCJpMzg2LXNlcXVlbnQtcHR4MlxuIik7IGV4aXQgKDApOworICAgIH0KKyAgICBpZiAoc3RybmNtcCh1bi52ZXJzaW9uLCAiVjEiLCAyKSA9PSAwKSB7IC8qIFhYWCBpcyBWMSBjb3JyZWN0PyAqLworCXByaW50ZiAoImkzODYtc2VxdWVudC1wdHgxXG4iKTsgZXhpdCAoMCk7CisgICAgfQorICAgIHByaW50ZiAoImkzODYtc2VxdWVudC1wdHhcbiIpOyBleGl0ICgwKTsKKworI2VuZGlmCisKKyNpZiBkZWZpbmVkICh2YXgpCisjIGlmICFkZWZpbmVkICh1bHRyaXgpCisjICBpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyMgIGlmIGRlZmluZWQgKEJTRCkKKyMgICBpZiBCU0QgPT0gNDMKKyAgICAgIHByaW50ZiAoInZheC1kZWMtYnNkNC4zXG4iKTsgZXhpdCAoMCk7CisjICAgZWxzZQorIyAgICBpZiBCU0QgPT0gMTk5MDA2CisgICAgICBwcmludGYgKCJ2YXgtZGVjLWJzZDQuM3Jlbm9cbiIpOyBleGl0ICgwKTsKKyMgICAgZWxzZQorICAgICAgcHJpbnRmICgidmF4LWRlYy1ic2RcbiIpOyBleGl0ICgwKTsKKyMgICAgZW5kaWYKKyMgICBlbmRpZgorIyAgZWxzZQorICAgIHByaW50ZiAoInZheC1kZWMtYnNkXG4iKTsgZXhpdCAoMCk7CisjICBlbmRpZgorIyBlbHNlCisgICAgcHJpbnRmICgidmF4LWRlYy11bHRyaXhcbiIpOyBleGl0ICgwKTsKKyMgZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoYWxsaWFudCkgJiYgZGVmaW5lZCAoaTg2MCkKKyAgcHJpbnRmICgiaTg2MC1hbGxpYW50LWJzZFxuIik7IGV4aXQgKDApOworI2VuZGlmCisKKyAgZXhpdCAoMSk7Cit9CitFT0YKKworJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgMj4vZGV2L251bGwgJiYgU1lTVEVNX05BTUU9YCRkdW1teWAgJiYKKwl7IGVjaG8gIiRTWVNURU1fTkFNRSI7IGV4aXQ7IH0KKworIyBBcG9sbG9zIHB1dCB0aGUgc3lzdGVtIHR5cGUgaW4gdGhlIGVudmlyb25tZW50LgorCit0ZXN0IC1kIC91c3IvYXBvbGxvICYmIHsgZWNobyAke0lTUH0tYXBvbGxvLSR7U1lTVFlQRX07IGV4aXQ7IH0KKworIyBDb252ZXggdmVyc2lvbnMgdGhhdCBwcmVkYXRlIHVuYW1lIGNhbiB1c2UgZ2V0c3lzaW5mbygxKQorCitpZiBbIC14IC91c3IvY29udmV4L2dldHN5c2luZm8gXQordGhlbgorICAgIGNhc2UgYGdldHN5c2luZm8gLWYgY3B1X3R5cGVgIGluCisgICAgYzEqKQorCWVjaG8gYzEtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBjMiopCisJaWYgZ2V0c3lzaW5mbyAtZiBzY2FsYXJfYWNjCisJdGhlbiBlY2hvIGMzMi1jb252ZXgtYnNkCisJZWxzZSBlY2hvIGMyLWNvbnZleC1ic2QKKwlmaQorCWV4aXQgOzsKKyAgICBjMzQqKQorCWVjaG8gYzM0LWNvbnZleC1ic2QKKwlleGl0IDs7CisgICAgYzM4KikKKwllY2hvIGMzOC1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIGM0KikKKwllY2hvIGM0LWNvbnZleC1ic2QKKwlleGl0IDs7CisgICAgZXNhYworZmkKKworY2F0ID4mMiA8PEVPRgorJDA6IHVuYWJsZSB0byBndWVzcyBzeXN0ZW0gdHlwZQorCitUaGlzIHNjcmlwdCwgbGFzdCBtb2RpZmllZCAkdGltZXN0YW1wLCBoYXMgZmFpbGVkIHRvIHJlY29nbml6ZQordGhlIG9wZXJhdGluZyBzeXN0ZW0geW91IGFyZSB1c2luZy4gSXQgaXMgYWR2aXNlZCB0aGF0IHlvdQorZG93bmxvYWQgdGhlIG1vc3QgdXAgdG8gZGF0ZSB2ZXJzaW9uIG9mIHRoZSBjb25maWcgc2NyaXB0cyBmcm9tCisKKyAgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1jb25maWcuZ2l0O2E9YmxvYl9wbGFpbjtmPWNvbmZpZy5ndWVzcztoYj1IRUFECithbmQKKyAgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1jb25maWcuZ2l0O2E9YmxvYl9wbGFpbjtmPWNvbmZpZy5zdWI7aGI9SEVBRAorCitJZiB0aGUgdmVyc2lvbiB5b3UgcnVuICgkMCkgaXMgYWxyZWFkeSB1cCB0byBkYXRlLCBwbGVhc2UKK3NlbmQgdGhlIGZvbGxvd2luZyBkYXRhIGFuZCBhbnkgaW5mb3JtYXRpb24geW91IHRoaW5rIG1pZ2h0IGJlCitwZXJ0aW5lbnQgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+IGluIG9yZGVyIHRvIHByb3ZpZGUgdGhlIG5lZWRlZAoraW5mb3JtYXRpb24gdG8gaGFuZGxlIHlvdXIgc3lzdGVtLgorCitjb25maWcuZ3Vlc3MgdGltZXN0YW1wID0gJHRpbWVzdGFtcAorCit1bmFtZSAtbSA9IGAodW5hbWUgLW0pIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKK3VuYW1lIC1yID0gYCh1bmFtZSAtcikgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAordW5hbWUgLXMgPSBgKHVuYW1lIC1zKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCit1bmFtZSAtdiA9IGAodW5hbWUgLXYpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKKworL3Vzci9iaW4vdW5hbWUgLXAgPSBgKC91c3IvYmluL3VuYW1lIC1wKSAyPi9kZXYvbnVsbGAKKy9iaW4vdW5hbWUgLVggICAgID0gYCgvYmluL3VuYW1lIC1YKSAyPi9kZXYvbnVsbGAKKworaG9zdGluZm8gICAgICAgICAgICAgICA9IGAoaG9zdGluZm8pIDI+L2Rldi9udWxsYAorL2Jpbi91bml2ZXJzZSAgICAgICAgICA9IGAoL2Jpbi91bml2ZXJzZSkgMj4vZGV2L251bGxgCisvdXNyL2Jpbi9hcmNoIC1rICAgICAgID0gYCgvdXNyL2Jpbi9hcmNoIC1rKSAyPi9kZXYvbnVsbGAKKy9iaW4vYXJjaCAgICAgICAgICAgICAgPSBgKC9iaW4vYXJjaCkgMj4vZGV2L251bGxgCisvdXNyL2Jpbi9vc2xldmVsICAgICAgID0gYCgvdXNyL2Jpbi9vc2xldmVsKSAyPi9kZXYvbnVsbGAKKy91c3IvY29udmV4L2dldHN5c2luZm8gPSBgKC91c3IvY29udmV4L2dldHN5c2luZm8pIDI+L2Rldi9udWxsYAorCitVTkFNRV9NQUNISU5FID0gJHtVTkFNRV9NQUNISU5FfQorVU5BTUVfUkVMRUFTRSA9ICR7VU5BTUVfUkVMRUFTRX0KK1VOQU1FX1NZU1RFTSAgPSAke1VOQU1FX1NZU1RFTX0KK1VOQU1FX1ZFUlNJT04gPSAke1VOQU1FX1ZFUlNJT059CitFT0YKKworZXhpdCAxCisKKyMgTG9jYWwgdmFyaWFibGVzOgorIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCisjIHRpbWUtc3RhbXAtc3RhcnQ6ICJ0aW1lc3RhbXA9JyIKKyMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkIgorIyB0aW1lLXN0YW1wLWVuZDogIiciCisjIEVuZDoKZGlmZiAtLWdpdCBhL2NvbmZpZy5zdWIgYi9jb25maWcuc3ViCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmM4OTRkYTQKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWcuc3ViCkBAIC0wLDAgKzEsMTc3MyBAQAorIyEgL2Jpbi9zaAorIyBDb25maWd1cmF0aW9uIHZhbGlkYXRpb24gc3Vicm91dGluZSBzY3JpcHQuCisjICAgQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LAorIyAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsCisjICAgMjAxMSwgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKwordGltZXN0YW1wPScyMDEyLTAyLTEwJworCisjIFRoaXMgZmlsZSBpcyAoaW4gcHJpbmNpcGxlKSBjb21tb24gdG8gQUxMIEdOVSBzb2Z0d2FyZS4KKyMgVGhlIHByZXNlbmNlIG9mIGEgbWFjaGluZSBpbiB0aGlzIGZpbGUgc3VnZ2VzdHMgdGhhdCBTT01FIEdOVSBzb2Z0d2FyZQorIyBjYW4gaGFuZGxlIHRoYXQgbWFjaGluZS4gIEl0IGRvZXMgbm90IGltcGx5IEFMTCBHTlUgc29mdHdhcmUgY2FuLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91CisjIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQorIyBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHlvdSBtYXkgaW5jbHVkZSBpdCB1bmRlcgorIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCisKKworIyBQbGVhc2Ugc2VuZCBwYXRjaGVzIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4gIFN1Ym1pdCBhIGNvbnRleHQKKyMgZGlmZiBhbmQgYSBwcm9wZXJseSBmb3JtYXR0ZWQgR05VIENoYW5nZUxvZyBlbnRyeS4KKyMKKyMgQ29uZmlndXJhdGlvbiBzdWJyb3V0aW5lIHRvIHZhbGlkYXRlIGFuZCBjYW5vbmljYWxpemUgYSBjb25maWd1cmF0aW9uIHR5cGUuCisjIFN1cHBseSB0aGUgc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24gdHlwZSBhcyBhbiBhcmd1bWVudC4KKyMgSWYgaXQgaXMgaW52YWxpZCwgd2UgcHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBvbiBzdGRlcnIgYW5kIGV4aXQgd2l0aCBjb2RlIDEuCisjIE90aGVyd2lzZSwgd2UgcHJpbnQgdGhlIGNhbm9uaWNhbCBjb25maWcgdHlwZSBvbiBzdGRvdXQgYW5kIHN1Y2NlZWQuCisKKyMgWW91IGNhbiBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgc2NyaXB0IGZyb206CisjIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuc3ViO2hiPUhFQUQKKworIyBUaGlzIGZpbGUgaXMgc3VwcG9zZWQgdG8gYmUgdGhlIHNhbWUgZm9yIGFsbCBHTlUgcGFja2FnZXMKKyMgYW5kIHJlY29nbml6ZSBhbGwgdGhlIENQVSB0eXBlcywgc3lzdGVtIHR5cGVzIGFuZCBhbGlhc2VzCisjIHRoYXQgYXJlIG1lYW5pbmdmdWwgd2l0aCAqYW55KiBHTlUgc29mdHdhcmUuCisjIEVhY2ggcGFja2FnZSBpcyByZXNwb25zaWJsZSBmb3IgcmVwb3J0aW5nIHdoaWNoIHZhbGlkIGNvbmZpZ3VyYXRpb25zCisjIGl0IGRvZXMgbm90IHN1cHBvcnQuICBUaGUgdXNlciBzaG91bGQgYmUgYWJsZSB0byBkaXN0aW5ndWlzaAorIyBhIGZhaWx1cmUgdG8gc3VwcG9ydCBhIHZhbGlkIGNvbmZpZ3VyYXRpb24gZnJvbSBhIG1lYW5pbmdsZXNzCisjIGNvbmZpZ3VyYXRpb24uCisKKyMgVGhlIGdvYWwgb2YgdGhpcyBmaWxlIGlzIHRvIG1hcCBhbGwgdGhlIHZhcmlvdXMgdmFyaWF0aW9ucyBvZiBhIGdpdmVuCisjIG1hY2hpbmUgc3BlY2lmaWNhdGlvbiBpbnRvIGEgc2luZ2xlIHNwZWNpZmljYXRpb24gaW4gdGhlIGZvcm06CisjCUNQVV9UWVBFLU1BTlVGQUNUVVJFUi1PUEVSQVRJTkdfU1lTVEVNCisjIG9yIGluIHNvbWUgY2FzZXMsIHRoZSBuZXdlciBmb3VyLXBhcnQgZm9ybToKKyMJQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLUtFUk5FTC1PUEVSQVRJTkdfU1lTVEVNCisjIEl0IGlzIHdyb25nIHRvIGVjaG8gYW55IG90aGVyIHR5cGUgb2Ygc3BlY2lmaWNhdGlvbi4KKworbWU9YGVjaG8gIiQwIiB8IHNlZCAtZSAncywuKi8sLCdgCisKK3VzYWdlPSJcCitVc2FnZTogJDAgW09QVElPTl0gQ1BVLU1GUi1PUFNZUworICAgICAgICQwIFtPUFRJT05dIEFMSUFTCisKK0Nhbm9uaWNhbGl6ZSBhIGNvbmZpZ3VyYXRpb24gbmFtZS4KKworT3BlcmF0aW9uIG1vZGVzOgorICAtaCwgLS1oZWxwICAgICAgICAgcHJpbnQgdGhpcyBoZWxwLCB0aGVuIGV4aXQKKyAgLXQsIC0tdGltZS1zdGFtcCAgIHByaW50IGRhdGUgb2YgbGFzdCBtb2RpZmljYXRpb24sIHRoZW4gZXhpdAorICAtdiwgLS12ZXJzaW9uICAgICAgcHJpbnQgdmVyc2lvbiBudW1iZXIsIHRoZW4gZXhpdAorCitSZXBvcnQgYnVncyBhbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4uIgorCit2ZXJzaW9uPSJcCitHTlUgY29uZmlnLnN1YiAoJHRpbWVzdGFtcCkKKworQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLAorMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMgorRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK1RoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCit3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCisKK2hlbHA9IgorVHJ5IFxgJG1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgorCisjIFBhcnNlIGNvbW1hbmQgbGluZQord2hpbGUgdGVzdCAkIyAtZ3QgMCA7IGRvCisgIGNhc2UgJDEgaW4KKyAgICAtLXRpbWUtc3RhbXAgfCAtLXRpbWUqIHwgLXQgKQorICAgICAgIGVjaG8gIiR0aW1lc3RhbXAiIDsgZXhpdCA7OworICAgIC0tdmVyc2lvbiB8IC12ICkKKyAgICAgICBlY2hvICIkdmVyc2lvbiIgOyBleGl0IDs7CisgICAgLS1oZWxwIHwgLS1oKiB8IC1oICkKKyAgICAgICBlY2hvICIkdXNhZ2UiOyBleGl0IDs7CisgICAgLS0gKSAgICAgIyBTdG9wIG9wdGlvbiBwcm9jZXNzaW5nCisgICAgICAgc2hpZnQ7IGJyZWFrIDs7CisgICAgLSApCSMgVXNlIHN0ZGluIGFzIGlucHV0LgorICAgICAgIGJyZWFrIDs7CisgICAgLSogKQorICAgICAgIGVjaG8gIiRtZTogaW52YWxpZCBvcHRpb24gJDEkaGVscCIKKyAgICAgICBleGl0IDEgOzsKKworICAgICpsb2NhbCopCisgICAgICAgIyBGaXJzdCBwYXNzIHRocm91Z2ggYW55IGxvY2FsIG1hY2hpbmUgdHlwZXMuCisgICAgICAgZWNobyAkMQorICAgICAgIGV4aXQgOzsKKworICAgICogKQorICAgICAgIGJyZWFrIDs7CisgIGVzYWMKK2RvbmUKKworY2FzZSAkIyBpbgorIDApIGVjaG8gIiRtZTogbWlzc2luZyBhcmd1bWVudCRoZWxwIiA+JjIKKyAgICBleGl0IDE7OworIDEpIDs7CisgKikgZWNobyAiJG1lOiB0b28gbWFueSBhcmd1bWVudHMkaGVscCIgPiYyCisgICAgZXhpdCAxOzsKK2VzYWMKKworIyBTZXBhcmF0ZSB3aGF0IHRoZSB1c2VyIGdhdmUgaW50byBDUFUtQ09NUEFOWSBhbmQgT1Mgb3IgS0VSTkVMLU9TIChpZiBhbnkpLgorIyBIZXJlIHdlIG11c3QgcmVjb2duaXplIGFsbCB0aGUgdmFsaWQgS0VSTkVMLU9TIGNvbWJpbmF0aW9ucy4KK21heWJlX29zPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMi8nYAorY2FzZSAkbWF5YmVfb3MgaW4KKyAgbnRvLXFueCogfCBsaW51eC1nbnUqIHwgbGludXgtYW5kcm9pZCogfCBsaW51eC1kaWV0bGliYyB8IGxpbnV4LW5ld2xpYiogfCBcCisgIGxpbnV4LXVjbGliYyogfCB1Y2xpbnV4LXVjbGliYyogfCB1Y2xpbnV4LWdudSogfCBrZnJlZWJzZCotZ251KiB8IFwKKyAga25ldGJzZCotZ251KiB8IG5ldGJzZCotZ251KiB8IFwKKyAga29wZW5zb2xhcmlzKi1nbnUqIHwgXAorICBzdG9ybS1jaGFvcyogfCBvczItZW14KiB8IHJ0bWstbm92YSopCisgICAgb3M9LSRtYXliZV9vcworICAgIGJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgJ3MvXlwoLipcKS1cKFteLV0qLVteLV0qXCkkL1wxLydgCisgICAgOzsKKyAgYW5kcm9pZC1saW51eCkKKyAgICBvcz0tbGludXgtYW5kcm9pZAorICAgIGJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgJ3MvXlwoLipcKS1cKFteLV0qLVteLV0qXCkkL1wxLydgLXVua25vd24KKyAgICA7OworICAqKQorICAgIGJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgJ3MvLVteLV0qJC8vJ2AKKyAgICBpZiBbICRiYXNpY19tYWNoaW5lICE9ICQxIF0KKyAgICB0aGVuIG9zPWBlY2hvICQxIHwgc2VkICdzLy4qLS8tLydgCisgICAgZWxzZSBvcz07IGZpCisgICAgOzsKK2VzYWMKKworIyMjIExldCdzIHJlY29nbml6ZSBjb21tb24gbWFjaGluZXMgYXMgbm90IGJlaW5nIG9wZXJhdGluZyBzeXN0ZW1zIHNvCisjIyMgdGhhdCB0aGluZ3MgbGlrZSBjb25maWcuc3ViIGRlY3N0YXRpb24tMzEwMCB3b3JrLiAgV2UgYWxzbworIyMjIHJlY29nbml6ZSBzb21lIG1hbnVmYWN0dXJlcnMgYXMgbm90IGJlaW5nIG9wZXJhdGluZyBzeXN0ZW1zLCBzbyB3ZQorIyMjIGNhbiBwcm92aWRlIGRlZmF1bHQgb3BlcmF0aW5nIHN5c3RlbXMgYmVsb3cuCitjYXNlICRvcyBpbgorCS1zdW4qb3MqKQorCQkjIFByZXZlbnQgZm9sbG93aW5nIGNsYXVzZSBmcm9tIGhhbmRsaW5nIHRoaXMgaW52YWxpZCBpbnB1dC4KKwkJOzsKKwktZGVjKiB8IC1taXBzKiB8IC1zZXF1ZW50KiB8IC1lbmNvcmUqIHwgLXBjNTMyKiB8IC1zZ2kqIHwgLXNvbnkqIHwgXAorCS1hdHQqIHwgLTczMDAqIHwgLTMzMDAqIHwgLWRlbHRhKiB8IC1tb3Rvcm9sYSogfCAtc3VuWzIzNF0qIHwgXAorCS11bmljb20qIHwgLWlibSogfCAtbmV4dCB8IC1ocCB8IC1pc2kqIHwgLWFwb2xsbyB8IC1hbHRvcyogfCBcCisJLWNvbnZlcmdlbnQqIHwgLW5jciogfCAtbmV3cyB8IC0zMiogfCAtMzYwMCogfCAtMzEwMCogfCAtaGl0YWNoaSogfFwKKwktY1sxMjNdKiB8IC1jb252ZXgqIHwgLXN1biB8IC1jcmRzIHwgLW9tcm9uKiB8IC1kZyB8IC11bHRyYSB8IC10dGkqIHwgXAorCS1oYXJyaXMgfCAtZG9scGhpbiB8IC1oaWdobGV2ZWwgfCAtZ291bGQgfCAtY2JtIHwgLW5zIHwgLW1hc3Njb21wIHwgXAorCS1hcHBsZSB8IC1heGlzIHwgLWtudXRoIHwgLWNyYXkgfCAtbWljcm9ibGF6ZSkKKwkJb3M9CisJCWJhc2ljX21hY2hpbmU9JDEKKwkJOzsKKwktYmx1ZWdlbmUqKQorCQlvcz0tY25rCisJCTs7CisJLXNpbSB8IC1jaXNjbyB8IC1va2kgfCAtd2VjIHwgLXdpbmJvbmQpCisJCW9zPQorCQliYXNpY19tYWNoaW5lPSQxCisJCTs7CisJLXNjb3V0KQorCQk7OworCS13cnMpCisJCW9zPS12eHdvcmtzCisJCWJhc2ljX21hY2hpbmU9JDEKKwkJOzsKKwktY2hvcnVzb3MqKQorCQlvcz0tY2hvcnVzb3MKKwkJYmFzaWNfbWFjaGluZT0kMQorCQk7OworCS1jaG9ydXNyZGIpCisJCW9zPS1jaG9ydXNyZGIKKwkJYmFzaWNfbWFjaGluZT0kMQorCQk7OworCS1oaXV4KikKKwkJb3M9LWhpdXh3ZTIKKwkJOzsKKwktc2NvNikKKwkJb3M9LXNjbzV2NgorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXNjbzUpCisJCW9zPS1zY28zLjJ2NQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXNjbzQpCisJCW9zPS1zY28zLjJ2NAorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXNjbzMuMi5bNC05XSopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAncy9zY28zLjIuL3NjbzMuMnYvJ2AKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY28zLjJ2WzQtOV0qKQorCQkjIERvbid0IGZvcmdldCB2ZXJzaW9uIGlmIGl0IGlzIDMuMnY0IG9yIG5ld2VyLgorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXNjbzV2NiopCisJCSMgRG9uJ3QgZm9yZ2V0IHZlcnNpb24gaWYgaXQgaXMgMy4ydjQgb3IgbmV3ZXIuCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvKikKKwkJb3M9LXNjbzMuMnYyCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktdWRrKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1pc2MpCisJCW9zPS1pc2MyLjIKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1jbGl4KikKKwkJYmFzaWNfbWFjaGluZT1jbGlwcGVyLWludGVyZ3JhcGgKKwkJOzsKKwktaXNjKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1seW54KikKKwkJb3M9LWx5bnhvcworCQk7OworCS1wdHgqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXNlcXVlbnQvJ2AKKwkJOzsKKwktd2luZG93c250KikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzL3dpbmRvd3NudC93aW5udC8nYAorCQk7OworCS1wc29zKikKKwkJb3M9LXBzb3MKKwkJOzsKKwktbWludCB8IC1taW50WzAtOV0qKQorCQliYXNpY19tYWNoaW5lPW02OGstYXRhcmkKKwkJb3M9LW1pbnQKKwkJOzsKK2VzYWMKKworIyBEZWNvZGUgYWxpYXNlcyBmb3IgY2VydGFpbiBDUFUtQ09NUEFOWSBjb21iaW5hdGlvbnMuCitjYXNlICRiYXNpY19tYWNoaW5lIGluCisJIyBSZWNvZ25pemUgdGhlIGJhc2ljIENQVSB0eXBlcyB3aXRob3V0IGNvbXBhbnkgbmFtZS4KKwkjIFNvbWUgYXJlIG9taXR0ZWQgaGVyZSBiZWNhdXNlIHRoZXkgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzIGJlbG93LgorCTE3NTBhIHwgNTgwIFwKKwl8IGEyOWsgXAorCXwgYWFyY2g2NCB8IGFhcmNoNjRfYmUgXAorCXwgYWxwaGEgfCBhbHBoYWV2WzQtOF0gfCBhbHBoYWV2NTYgfCBhbHBoYWV2Nls3OF0gfCBhbHBoYXBjYTVbNjddIFwKKwl8IGFscGhhNjQgfCBhbHBoYTY0ZXZbNC04XSB8IGFscGhhNjRldjU2IHwgYWxwaGE2NGV2Nls3OF0gfCBhbHBoYTY0cGNhNVs2N10gXAorCXwgYW0zM18yLjAgXAorCXwgYXJjIHwgYXJtIHwgYXJtW2JsXWUgfCBhcm1lW2xiXSB8IGFybXZbMjM0NV0gfCBhcm12WzM0NV1bbGJdIHwgYXZyIHwgYXZyMzIgXAorICAgICAgICB8IGJlMzIgfCBiZTY0IFwKKwl8IGJmaW4gXAorCXwgYzR4IHwgY2xpcHBlciBcCisJfCBkMTB2IHwgZDMwdiB8IGRseCB8IGRzcDE2eHggXAorCXwgZXBpcGhhbnkgXAorCXwgZmlkbyB8IGZyMzAgfCBmcnYgXAorCXwgaDgzMDAgfCBoODUwMCB8IGhwcGEgfCBocHBhMS5bMDFdIHwgaHBwYTIuMCB8IGhwcGEyLjBbbnddIHwgaHBwYTY0IFwKKwl8IGhleGFnb24gXAorCXwgaTM3MCB8IGk4NjAgfCBpOTYwIHwgaWE2NCBcCisJfCBpcDJrIHwgaXEyMDAwIFwKKwl8IGxlMzIgfCBsZTY0IFwKKwl8IGxtMzIgXAorCXwgbTMyYyB8IG0zMnIgfCBtMzJybGUgfCBtNjgwMDAgfCBtNjhrIHwgbTg4ayBcCisJfCBtYXhxIHwgbWIgfCBtaWNyb2JsYXplIHwgbWNvcmUgfCBtZXAgfCBtZXRhZyBcCisJfCBtaXBzIHwgbWlwc2JlIHwgbWlwc2ViIHwgbWlwc2VsIHwgbWlwc2xlIFwKKwl8IG1pcHMxNiBcCisJfCBtaXBzNjQgfCBtaXBzNjRlbCBcCisJfCBtaXBzNjRvY3Rlb24gfCBtaXBzNjRvY3Rlb25lbCBcCisJfCBtaXBzNjRvcmlvbiB8IG1pcHM2NG9yaW9uZWwgXAorCXwgbWlwczY0cjU5MDAgfCBtaXBzNjRyNTkwMGVsIFwKKwl8IG1pcHM2NHZyIHwgbWlwczY0dnJlbCBcCisJfCBtaXBzNjR2cjQxMDAgfCBtaXBzNjR2cjQxMDBlbCBcCisJfCBtaXBzNjR2cjQzMDAgfCBtaXBzNjR2cjQzMDBlbCBcCisJfCBtaXBzNjR2cjUwMDAgfCBtaXBzNjR2cjUwMDBlbCBcCisJfCBtaXBzNjR2cjU5MDAgfCBtaXBzNjR2cjU5MDBlbCBcCisJfCBtaXBzaXNhMzIgfCBtaXBzaXNhMzJlbCBcCisJfCBtaXBzaXNhMzJyMiB8IG1pcHNpc2EzMnIyZWwgXAorCXwgbWlwc2lzYTY0IHwgbWlwc2lzYTY0ZWwgXAorCXwgbWlwc2lzYTY0cjIgfCBtaXBzaXNhNjRyMmVsIFwKKwl8IG1pcHNpc2E2NHNiMSB8IG1pcHNpc2E2NHNiMWVsIFwKKwl8IG1pcHNpc2E2NHNyNzFrIHwgbWlwc2lzYTY0c3I3MWtlbCBcCisJfCBtaXBzdHgzOSB8IG1pcHN0eDM5ZWwgXAorCXwgbW4xMDIwMCB8IG1uMTAzMDAgXAorCXwgbW94aWUgXAorCXwgbXQgXAorCXwgbXNwNDMwIFwKKwl8IG5kczMyIHwgbmRzMzJsZSB8IG5kczMyYmUgXAorCXwgbmlvcyB8IG5pb3MyIFwKKwl8IG5zMTZrIHwgbnMzMmsgXAorCXwgb3BlbjggXAorCXwgb3IzMiBcCisJfCBwZHAxMCB8IHBkcDExIHwgcGogfCBwamwgXAorCXwgcG93ZXJwYyB8IHBvd2VycGM2NCB8IHBvd2VycGM2NGxlIHwgcG93ZXJwY2xlIFwKKwl8IHB5cmFtaWQgXAorCXwgcmw3OCB8IHJ4IFwKKwl8IHNjb3JlIFwKKwl8IHNoIHwgc2hbMTIzNF0gfCBzaFsyNF1hIHwgc2hbMjRdYWViIHwgc2hbMjNdZSB8IHNoWzM0XWViIHwgc2hlYiB8IHNoYmUgfCBzaGxlIHwgc2hbMTIzNF1sZSB8IHNoM2VsZSBcCisJfCBzaDY0IHwgc2g2NGxlIFwKKwl8IHNwYXJjIHwgc3BhcmM2NCB8IHNwYXJjNjRiIHwgc3BhcmM2NHYgfCBzcGFyYzg2eCB8IHNwYXJjbGV0IHwgc3BhcmNsaXRlIFwKKwl8IHNwYXJjdjggfCBzcGFyY3Y5IHwgc3BhcmN2OWIgfCBzcGFyY3Y5diBcCisJfCBzcHUgXAorCXwgdGFob2UgfCB0aWM0eCB8IHRpYzU0eCB8IHRpYzU1eCB8IHRpYzZ4IHwgdGljODAgfCB0cm9uIFwKKwl8IHViaWNvbTMyIFwKKwl8IHY4NTAgfCB2ODUwZSB8IHY4NTBlMSB8IHY4NTBlMiB8IHY4NTBlcyB8IHY4NTBlMnYzIFwKKwl8IHdlMzJrIFwKKwl8IHg4NiB8IHhjMTZ4IHwgeHN0b3JteTE2IHwgeHRlbnNhIFwKKwl8IHo4ayB8IHo4MCkKKwkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCisJCTs7CisJYzU0eCkKKwkJYmFzaWNfbWFjaGluZT10aWM1NHgtdW5rbm93bgorCQk7OworCWM1NXgpCisJCWJhc2ljX21hY2hpbmU9dGljNTV4LXVua25vd24KKwkJOzsKKwljNngpCisJCWJhc2ljX21hY2hpbmU9dGljNngtdW5rbm93bgorCQk7OworCW02ODExIHwgbTY4aGMxMSB8IG02ODEyIHwgbTY4aGMxMiB8IG02OGhjczEyeCB8IHBpY29jaGlwKQorCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KKwkJb3M9LW5vbmUKKwkJOzsKKwltODgxMTAgfCBtNjgwWzEyMzQ2XTAgfCBtNjgzPzIgfCBtNjgzNjAgfCBtNTIwMCB8IHY3MCB8IHc2NSB8IHo4aykKKwkJOzsKKwltczEpCisJCWJhc2ljX21hY2hpbmU9bXQtdW5rbm93bgorCQk7OworCisJc3Ryb25nYXJtIHwgdGh1bWIgfCB4c2NhbGUpCisJCWJhc2ljX21hY2hpbmU9YXJtLXVua25vd24KKwkJOzsKKwl4Z2F0ZSkKKwkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCisJCW9zPS1ub25lCisJCTs7CisJeHNjYWxlZWIpCisJCWJhc2ljX21hY2hpbmU9YXJtZWItdW5rbm93bgorCQk7OworCisJeHNjYWxlZWwpCisJCWJhc2ljX21hY2hpbmU9YXJtZWwtdW5rbm93bgorCQk7OworCisJIyBXZSB1c2UgYHBjJyByYXRoZXIgdGhhbiBgdW5rbm93bicKKwkjIGJlY2F1c2UgKDEpIHRoYXQncyB3aGF0IHRoZXkgbm9ybWFsbHkgYXJlLCBhbmQKKwkjICgyKSB0aGUgd29yZCAidW5rbm93biIgdGVuZHMgdG8gY29uZnVzZSBiZWdpbm5pbmcgdXNlcnMuCisJaSo4NiB8IHg4Nl82NCkKKwkgIGJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtcGMKKwkgIDs7CisJIyBPYmplY3QgaWYgbW9yZSB0aGFuIG9uZSBjb21wYW55IG5hbWUgd29yZC4KKwkqLSotKikKKwkJZWNobyBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gXGAkMVwnOiBtYWNoaW5lIFxgJGJhc2ljX21hY2hpbmVcJyBub3QgcmVjb2duaXplZCAxPiYyCisJCWV4aXQgMQorCQk7OworCSMgUmVjb2duaXplIHRoZSBiYXNpYyBDUFUgdHlwZXMgd2l0aCBjb21wYW55IG5hbWUuCisJNTgwLSogXAorCXwgYTI5ay0qIFwKKwl8IGFhcmNoNjQtKiB8IGFhcmNoNjRfYmUtKiBcCisJfCBhbHBoYS0qIHwgYWxwaGFldls0LThdLSogfCBhbHBoYWV2NTYtKiB8IGFscGhhZXY2Wzc4XS0qIFwKKwl8IGFscGhhNjQtKiB8IGFscGhhNjRldls0LThdLSogfCBhbHBoYTY0ZXY1Ni0qIHwgYWxwaGE2NGV2Nls3OF0tKiBcCisJfCBhbHBoYXBjYTVbNjddLSogfCBhbHBoYTY0cGNhNVs2N10tKiB8IGFyYy0qIFwKKwl8IGFybS0qICB8IGFybWJlLSogfCBhcm1sZS0qIHwgYXJtZWItKiB8IGFybXYqLSogXAorCXwgYXZyLSogfCBhdnIzMi0qIFwKKwl8IGJlMzItKiB8IGJlNjQtKiBcCisJfCBiZmluLSogfCBiczIwMDAtKiBcCisJfCBjWzEyM10qIHwgYzMwLSogfCBbY2p0XTkwLSogfCBjNHgtKiBcCisJfCBjbGlwcGVyLSogfCBjcmF5bnYtKiB8IGN5ZHJhLSogXAorCXwgZDEwdi0qIHwgZDMwdi0qIHwgZGx4LSogXAorCXwgZWx4c2ktKiBcCisJfCBmMzBbMDFdLSogfCBmNzAwLSogfCBmaWRvLSogfCBmcjMwLSogfCBmcnYtKiB8IGZ4ODAtKiBcCisJfCBoODMwMC0qIHwgaDg1MDAtKiBcCisJfCBocHBhLSogfCBocHBhMS5bMDFdLSogfCBocHBhMi4wLSogfCBocHBhMi4wW253XS0qIHwgaHBwYTY0LSogXAorCXwgaGV4YWdvbi0qIFwKKwl8IGkqODYtKiB8IGk4NjAtKiB8IGk5NjAtKiB8IGlhNjQtKiBcCisJfCBpcDJrLSogfCBpcTIwMDAtKiBcCisJfCBsZTMyLSogfCBsZTY0LSogXAorCXwgbG0zMi0qIFwKKwl8IG0zMmMtKiB8IG0zMnItKiB8IG0zMnJsZS0qIFwKKwl8IG02ODAwMC0qIHwgbTY4MFswMTIzNDZdMC0qIHwgbTY4MzYwLSogfCBtNjgzPzItKiB8IG02OGstKiBcCisJfCBtODgxMTAtKiB8IG04OGstKiB8IG1heHEtKiB8IG1jb3JlLSogfCBtZXRhZy0qIHwgbWljcm9ibGF6ZS0qIFwKKwl8IG1pcHMtKiB8IG1pcHNiZS0qIHwgbWlwc2ViLSogfCBtaXBzZWwtKiB8IG1pcHNsZS0qIFwKKwl8IG1pcHMxNi0qIFwKKwl8IG1pcHM2NC0qIHwgbWlwczY0ZWwtKiBcCisJfCBtaXBzNjRvY3Rlb24tKiB8IG1pcHM2NG9jdGVvbmVsLSogXAorCXwgbWlwczY0b3Jpb24tKiB8IG1pcHM2NG9yaW9uZWwtKiBcCisJfCBtaXBzNjRyNTkwMC0qIHwgbWlwczY0cjU5MDBlbC0qIFwKKwl8IG1pcHM2NHZyLSogfCBtaXBzNjR2cmVsLSogXAorCXwgbWlwczY0dnI0MTAwLSogfCBtaXBzNjR2cjQxMDBlbC0qIFwKKwl8IG1pcHM2NHZyNDMwMC0qIHwgbWlwczY0dnI0MzAwZWwtKiBcCisJfCBtaXBzNjR2cjUwMDAtKiB8IG1pcHM2NHZyNTAwMGVsLSogXAorCXwgbWlwczY0dnI1OTAwLSogfCBtaXBzNjR2cjU5MDBlbC0qIFwKKwl8IG1pcHNpc2EzMi0qIHwgbWlwc2lzYTMyZWwtKiBcCisJfCBtaXBzaXNhMzJyMi0qIHwgbWlwc2lzYTMycjJlbC0qIFwKKwl8IG1pcHNpc2E2NC0qIHwgbWlwc2lzYTY0ZWwtKiBcCisJfCBtaXBzaXNhNjRyMi0qIHwgbWlwc2lzYTY0cjJlbC0qIFwKKwl8IG1pcHNpc2E2NHNiMS0qIHwgbWlwc2lzYTY0c2IxZWwtKiBcCisJfCBtaXBzaXNhNjRzcjcxay0qIHwgbWlwc2lzYTY0c3I3MWtlbC0qIFwKKwl8IG1pcHN0eDM5LSogfCBtaXBzdHgzOWVsLSogXAorCXwgbW1peC0qIFwKKwl8IG10LSogXAorCXwgbXNwNDMwLSogXAorCXwgbmRzMzItKiB8IG5kczMybGUtKiB8IG5kczMyYmUtKiBcCisJfCBuaW9zLSogfCBuaW9zMi0qIFwKKwl8IG5vbmUtKiB8IG5wMS0qIHwgbnMxNmstKiB8IG5zMzJrLSogXAorCXwgb3BlbjgtKiBcCisJfCBvcmlvbi0qIFwKKwl8IHBkcDEwLSogfCBwZHAxMS0qIHwgcGotKiB8IHBqbC0qIHwgcG4tKiB8IHBvd2VyLSogXAorCXwgcG93ZXJwYy0qIHwgcG93ZXJwYzY0LSogfCBwb3dlcnBjNjRsZS0qIHwgcG93ZXJwY2xlLSogXAorCXwgcHlyYW1pZC0qIFwKKwl8IHJsNzgtKiB8IHJvbXAtKiB8IHJzNjAwMC0qIHwgcngtKiBcCisJfCBzaC0qIHwgc2hbMTIzNF0tKiB8IHNoWzI0XWEtKiB8IHNoWzI0XWFlYi0qIHwgc2hbMjNdZS0qIHwgc2hbMzRdZWItKiB8IHNoZWItKiB8IHNoYmUtKiBcCisJfCBzaGxlLSogfCBzaFsxMjM0XWxlLSogfCBzaDNlbGUtKiB8IHNoNjQtKiB8IHNoNjRsZS0qIFwKKwl8IHNwYXJjLSogfCBzcGFyYzY0LSogfCBzcGFyYzY0Yi0qIHwgc3BhcmM2NHYtKiB8IHNwYXJjODZ4LSogfCBzcGFyY2xldC0qIFwKKwl8IHNwYXJjbGl0ZS0qIFwKKwl8IHNwYXJjdjgtKiB8IHNwYXJjdjktKiB8IHNwYXJjdjliLSogfCBzcGFyY3Y5di0qIHwgc3YxLSogfCBzeD8tKiBcCisJfCB0YWhvZS0qIFwKKwl8IHRpYzMwLSogfCB0aWM0eC0qIHwgdGljNTR4LSogfCB0aWM1NXgtKiB8IHRpYzZ4LSogfCB0aWM4MC0qIFwKKwl8IHRpbGUqLSogXAorCXwgdHJvbi0qIFwKKwl8IHViaWNvbTMyLSogXAorCXwgdjg1MC0qIHwgdjg1MGUtKiB8IHY4NTBlMS0qIHwgdjg1MGVzLSogfCB2ODUwZTItKiB8IHY4NTBlMnYzLSogXAorCXwgdmF4LSogXAorCXwgd2UzMmstKiBcCisJfCB4ODYtKiB8IHg4Nl82NC0qIHwgeGMxNngtKiB8IHhwczEwMC0qIFwKKwl8IHhzdG9ybXkxNi0qIHwgeHRlbnNhKi0qIFwKKwl8IHltcC0qIFwKKwl8IHo4ay0qIHwgejgwLSopCisJCTs7CisJIyBSZWNvZ25pemUgdGhlIGJhc2ljIENQVSB0eXBlcyB3aXRob3V0IGNvbXBhbnkgbmFtZSwgd2l0aCBnbG9iIG1hdGNoLgorCXh0ZW5zYSopCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgorCQk7OworCSMgUmVjb2duaXplIHRoZSB2YXJpb3VzIG1hY2hpbmUgbmFtZXMgYW5kIGFsaWFzZXMgd2hpY2ggc3RhbmQKKwkjIGZvciBhIENQVSB0eXBlIGFuZCBhIGNvbXBhbnkgYW5kIHNvbWV0aW1lcyBldmVuIGFuIE9TLgorCTM4NmJzZCkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXVua25vd24KKwkJb3M9LWJzZAorCQk7OworCTNiMSB8IDczMDAgfCA3MzAwLWF0dCB8IGF0dC03MzAwIHwgcGM3MzAwIHwgc2FmYXJpIHwgdW5peHBjKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1hdHQKKwkJOzsKKwkzYiopCisJCWJhc2ljX21hY2hpbmU9d2UzMmstYXR0CisJCTs7CisJYTI5a2hpZikKKwkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAorCQlvcz0tdWRpCisJCTs7CisJYWJhY3VzKQorCQliYXNpY19tYWNoaW5lPWFiYWN1cy11bmtub3duCisJCTs7CisJYWRvYmU2OGspCisJCWJhc2ljX21hY2hpbmU9bTY4MDEwLWFkb2JlCisJCW9zPS1zY291dAorCQk7OworCWFsbGlhbnQgfCBmeDgwKQorCQliYXNpY19tYWNoaW5lPWZ4ODAtYWxsaWFudAorCQk7OworCWFsdG9zIHwgYWx0b3MzMDY4KQorCQliYXNpY19tYWNoaW5lPW02OGstYWx0b3MKKwkJOzsKKwlhbTI5aykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLW5vbmUKKwkJb3M9LWJzZAorCQk7OworCWFtZDY0KQorCQliYXNpY19tYWNoaW5lPXg4Nl82NC1wYworCQk7OworCWFtZDY0LSopCisJCWJhc2ljX21hY2hpbmU9eDg2XzY0LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJYW1kYWhsKQorCQliYXNpY19tYWNoaW5lPTU4MC1hbWRhaGwKKwkJb3M9LXN5c3YKKwkJOzsKKwlhbWlnYSB8IGFtaWdhLSopCisJCWJhc2ljX21hY2hpbmU9bTY4ay11bmtub3duCisJCTs7CisJYW1pZ2FvcyB8IGFtaWdhZG9zKQorCQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgorCQlvcz0tYW1pZ2FvcworCQk7OworCWFtaWdhdW5peCB8IGFtaXgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay11bmtub3duCisJCW9zPS1zeXN2NAorCQk7OworCWFwb2xsbzY4KQorCQliYXNpY19tYWNoaW5lPW02OGstYXBvbGxvCisJCW9zPS1zeXN2CisJCTs7CisJYXBvbGxvNjhic2QpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hcG9sbG8KKwkJb3M9LWJzZAorCQk7OworCWFyb3MpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworCQlvcz0tYXJvcworCQk7OworCWF1eCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWFwcGxlCisJCW9zPS1hdXgKKwkJOzsKKwliYWxhbmNlKQorCQliYXNpY19tYWNoaW5lPW5zMzJrLXNlcXVlbnQKKwkJb3M9LWR5bml4CisJCTs7CisJYmxhY2tmaW4pCisJCWJhc2ljX21hY2hpbmU9YmZpbi11bmtub3duCisJCW9zPS1saW51eAorCQk7OworCWJsYWNrZmluLSopCisJCWJhc2ljX21hY2hpbmU9YmZpbi1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQlvcz0tbGludXgKKwkJOzsKKwlibHVlZ2VuZSopCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYy1pYm0KKwkJb3M9LWNuaworCQk7OworCWM1NHgtKikKKwkJYmFzaWNfbWFjaGluZT10aWM1NHgtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwljNTV4LSopCisJCWJhc2ljX21hY2hpbmU9dGljNTV4LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJYzZ4LSopCisJCWJhc2ljX21hY2hpbmU9dGljNngtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwljOTApCisJCWJhc2ljX21hY2hpbmU9YzkwLWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworCWNlZ2NjKQorCQliYXNpY19tYWNoaW5lPWFybS11bmtub3duCisJCW9zPS1jZWdjYworCQk7OworCWNvbnZleC1jMSkKKwkJYmFzaWNfbWFjaGluZT1jMS1jb252ZXgKKwkJb3M9LWJzZAorCQk7OworCWNvbnZleC1jMikKKwkJYmFzaWNfbWFjaGluZT1jMi1jb252ZXgKKwkJb3M9LWJzZAorCQk7OworCWNvbnZleC1jMzIpCisJCWJhc2ljX21hY2hpbmU9YzMyLWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY29udmV4LWMzNCkKKwkJYmFzaWNfbWFjaGluZT1jMzQtY29udmV4CisJCW9zPS1ic2QKKwkJOzsKKwljb252ZXgtYzM4KQorCQliYXNpY19tYWNoaW5lPWMzOC1jb252ZXgKKwkJb3M9LWJzZAorCQk7OworCWNyYXkgfCBqOTApCisJCWJhc2ljX21hY2hpbmU9ajkwLWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworCWNyYXludikKKwkJYmFzaWNfbWFjaGluZT1jcmF5bnYtY3JheQorCQlvcz0tdW5pY29zbXAKKwkJOzsKKwljcjE2IHwgY3IxNi0qKQorCQliYXNpY19tYWNoaW5lPWNyMTYtdW5rbm93bgorCQlvcz0tZWxmCisJCTs7CisJY3JkcyB8IHVub3MpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1jcmRzCisJCTs7CisJY3Jpc3YzMiB8IGNyaXN2MzItKiB8IGV0cmF4ZnMqKQorCQliYXNpY19tYWNoaW5lPWNyaXN2MzItYXhpcworCQk7OworCWNyaXMgfCBjcmlzLSogfCBldHJheCopCisJCWJhc2ljX21hY2hpbmU9Y3Jpcy1heGlzCisJCTs7CisJY3J4KQorCQliYXNpY19tYWNoaW5lPWNyeC11bmtub3duCisJCW9zPS1lbGYKKwkJOzsKKwlkYTMwIHwgZGEzMC0qKQorCQliYXNpY19tYWNoaW5lPW02OGstZGEzMAorCQk7OworCWRlY3N0YXRpb24gfCBkZWNzdGF0aW9uLTMxMDAgfCBwbWF4IHwgcG1heC0qIHwgcG1pbiB8IGRlYzMxMDAgfCBkZWNzdGF0bikKKwkJYmFzaWNfbWFjaGluZT1taXBzLWRlYworCQk7OworCWRlY3N5c3RlbTEwKiB8IGRlYzEwKikKKwkJYmFzaWNfbWFjaGluZT1wZHAxMC1kZWMKKwkJb3M9LXRvcHMxMAorCQk7OworCWRlY3N5c3RlbTIwKiB8IGRlYzIwKikKKwkJYmFzaWNfbWFjaGluZT1wZHAxMC1kZWMKKwkJb3M9LXRvcHMyMAorCQk7OworCWRlbHRhIHwgMzMwMCB8IG1vdG9yb2xhLTMzMDAgfCBtb3Rvcm9sYS1kZWx0YSBcCisJICAgICAgfCAzMzAwLW1vdG9yb2xhIHwgZGVsdGEtbW90b3JvbGEpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1tb3Rvcm9sYQorCQk7OworCWRlbHRhODgpCisJCWJhc2ljX21hY2hpbmU9bTg4ay1tb3Rvcm9sYQorCQlvcz0tc3lzdjMKKwkJOzsKKwlkaWNvcykKKwkJYmFzaWNfbWFjaGluZT1pNjg2LXBjCisJCW9zPS1kaWNvcworCQk7OworCWRqZ3BwKQorCQliYXNpY19tYWNoaW5lPWk1ODYtcGMKKwkJb3M9LW1zZG9zZGpncHAKKwkJOzsKKwlkcHgyMCB8IGRweDIwLSopCisJCWJhc2ljX21hY2hpbmU9cnM2MDAwLWJ1bGwKKwkJb3M9LWJvc3gKKwkJOzsKKwlkcHgyKiB8IGRweDIqLWJ1bGwpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1idWxsCisJCW9zPS1zeXN2MworCQk7OworCWVibW9uMjlrKQorCQliYXNpY19tYWNoaW5lPWEyOWstYW1kCisJCW9zPS1lYm1vbgorCQk7OworCWVseHNpKQorCQliYXNpY19tYWNoaW5lPWVseHNpLWVseHNpCisJCW9zPS1ic2QKKwkJOzsKKwllbmNvcmUgfCB1bWF4IHwgbW1heCkKKwkJYmFzaWNfbWFjaGluZT1uczMyay1lbmNvcmUKKwkJOzsKKwllczE4MDAgfCBPU0U2OGsgfCBvc2U2OGsgfCBvc2UgfCBPU0UpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1lcmljc3NvbgorCQlvcz0tb3NlCisJCTs7CisJZngyODAwKQorCQliYXNpY19tYWNoaW5lPWk4NjAtYWxsaWFudAorCQk7OworCWdlbml4KQorCQliYXNpY19tYWNoaW5lPW5zMzJrLW5zCisJCTs7CisJZ21pY3JvKQorCQliYXNpY19tYWNoaW5lPXRyb24tZ21pY3JvCisJCW9zPS1zeXN2CisJCTs7CisJZ28zMikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1nbzMyCisJCTs7CisJaDMwNTByKiB8IGhpdXgqKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaGl0YWNoaQorCQlvcz0taGl1eHdlMgorCQk7OworCWg4MzAwaG1zKQorCQliYXNpY19tYWNoaW5lPWg4MzAwLWhpdGFjaGkKKwkJb3M9LWhtcworCQk7OworCWg4MzAweHJheSkKKwkJYmFzaWNfbWFjaGluZT1oODMwMC1oaXRhY2hpCisJCW9zPS14cmF5CisJCTs7CisJaDg1MDBobXMpCisJCWJhc2ljX21hY2hpbmU9aDg1MDAtaGl0YWNoaQorCQlvcz0taG1zCisJCTs7CisJaGFycmlzKQorCQliYXNpY19tYWNoaW5lPW04OGstaGFycmlzCisJCW9zPS1zeXN2MworCQk7OworCWhwMzAwLSopCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ocAorCQk7OworCWhwMzAwYnNkKQorCQliYXNpY19tYWNoaW5lPW02OGstaHAKKwkJb3M9LWJzZAorCQk7OworCWhwMzAwaHB1eCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWhwCisJCW9zPS1ocHV4CisJCTs7CisJaHAzazlbMC05XVswLTldIHwgaHA5WzAtOV1bMC05XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4wLWhwCisJCTs7CisJaHA5azJbMC05XVswLTldIHwgaHA5azMxWzAtOV0pCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLWhwCisJCTs7CisJaHA5azNbMi05XVswLTldKQorCQliYXNpY19tYWNoaW5lPW02OGstaHAKKwkJOzsKKwlocDlrNlswLTldWzAtOV0gfCBocDZbMC05XVswLTldKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjAtaHAKKwkJOzsKKwlocDlrN1swLTc5XVswLTldIHwgaHA3WzAtNzldWzAtOV0pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQk7OworCWhwOWs3OFswLTldIHwgaHA3OFswLTldKQorCQkjIEZJWE1FOiByZWFsbHkgaHBwYTIuMC1ocAorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaHAKKwkJOzsKKwlocDlrOFs2N10xIHwgaHA4WzY3XTEgfCBocDlrODBbMjRdIHwgaHA4MFsyNF0gfCBocDlrOFs3OF05IHwgaHA4Wzc4XTkgfCBocDlrODkzIHwgaHA4OTMpCisJCSMgRklYTUU6IHJlYWxseSBocHBhMi4wLWhwCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQk7OworCWhwOWs4WzAtOV1bMTM2NzldIHwgaHA4WzAtOV1bMTM2NzldKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaHAKKwkJOzsKKwlocDlrOFswLTldWzAtOV0gfCBocDhbMC05XVswLTldKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjAtaHAKKwkJOzsKKwlocHBhLW5leHQpCisJCW9zPS1uZXh0c3RlcDMKKwkJOzsKKwlocHBhb3NmKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaHAKKwkJb3M9LW9zZgorCQk7OworCWhwcHJvKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaHAKKwkJb3M9LXByb2VsZgorCQk7OworCWkzNzAtaWJtKiB8IGlibSopCisJCWJhc2ljX21hY2hpbmU9aTM3MC1pYm0KKwkJOzsKKwlpKjg2djMyKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXN5c3YzMgorCQk7OworCWkqODZ2NCopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYuKi84Ni1wYy8nYAorCQlvcz0tc3lzdjQKKwkJOzsKKwlpKjg2dikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni4qLzg2LXBjLydgCisJCW9zPS1zeXN2CisJCTs7CisJaSo4NnNvbDIpCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYuKi84Ni1wYy8nYAorCQlvcz0tc29sYXJpczIKKwkJOzsKKwlpMzg2bWFjaCkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LW1hY2gKKwkJb3M9LW1hY2gKKwkJOzsKKwlpMzg2LXZzdGEgfCB2c3RhKQorCQliYXNpY19tYWNoaW5lPWkzODYtdW5rbm93bgorCQlvcz0tdnN0YQorCQk7OworCWlyaXMgfCBpcmlzNGQpCisJCWJhc2ljX21hY2hpbmU9bWlwcy1zZ2kKKwkJY2FzZSAkb3MgaW4KKwkJICAgIC1pcml4KikKKwkJCTs7CisJCSAgICAqKQorCQkJb3M9LWlyaXg0CisJCQk7OworCQllc2FjCisJCTs7CisJaXNpNjggfCBpc2kpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1pc2kKKwkJb3M9LXN5c3YKKwkJOzsKKwltNjhrbm9tbXUpCisJCWJhc2ljX21hY2hpbmU9bTY4ay11bmtub3duCisJCW9zPS1saW51eAorCQk7OworCW02OGtub21tdS0qKQorCQliYXNpY19tYWNoaW5lPW02OGstYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJb3M9LWxpbnV4CisJCTs7CisJbTg4ay1vbXJvbiopCisJCWJhc2ljX21hY2hpbmU9bTg4ay1vbXJvbgorCQk7OworCW1hZ251bSB8IG0zMjMwKQorCQliYXNpY19tYWNoaW5lPW1pcHMtbWlwcworCQlvcz0tc3lzdgorCQk7OworCW1lcmxpbikKKwkJYmFzaWNfbWFjaGluZT1uczMyay11dGVrCisJCW9zPS1zeXN2CisJCTs7CisJbWljcm9ibGF6ZSkKKwkJYmFzaWNfbWFjaGluZT1taWNyb2JsYXplLXhpbGlueAorCQk7OworCW1pbmd3MzIpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworCQlvcz0tbWluZ3czMgorCQk7OworCW1pbmd3MzJjZSkKKwkJYmFzaWNfbWFjaGluZT1hcm0tdW5rbm93bgorCQlvcz0tbWluZ3czMmNlCisJCTs7CisJbWluaWZyYW1lKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1jb252ZXJnZW50CisJCTs7CisJKm1pbnQgfCAtbWludFswLTldKiB8ICpNaU5UIHwgKk1pTlRbMC05XSopCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hdGFyaQorCQlvcz0tbWludAorCQk7OworCW1pcHMzKi0qKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkIC1lICdzL21pcHMzL21pcHM2NC8nYAorCQk7OworCW1pcHMzKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAtZSAncy9taXBzMy9taXBzNjQvJ2AtdW5rbm93bgorCQk7OworCW1vbml0b3IpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1yb202OGsKKwkJb3M9LWNvZmYKKwkJOzsKKwltb3JwaG9zKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtdW5rbm93bgorCQlvcz0tbW9ycGhvcworCQk7OworCW1zZG9zKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LW1zZG9zCisJCTs7CisJbXMxLSopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgLWUgJ3MvbXMxLS9tdC0vJ2AKKwkJOzsKKwltc3lzKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LW1zeXMKKwkJOzsKKwltdnMpCisJCWJhc2ljX21hY2hpbmU9aTM3MC1pYm0KKwkJb3M9LW12cworCQk7OworCW5hY2wpCisJCWJhc2ljX21hY2hpbmU9bGUzMi11bmtub3duCisJCW9zPS1uYWNsCisJCTs7CisJbmNyMzAwMCkKKwkJYmFzaWNfbWFjaGluZT1pNDg2LW5jcgorCQlvcz0tc3lzdjQKKwkJOzsKKwluZXRic2QzODYpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni11bmtub3duCisJCW9zPS1uZXRic2QKKwkJOzsKKwluZXR3aW5kZXIpCisJCWJhc2ljX21hY2hpbmU9YXJtdjRsLXJlYmVsCisJCW9zPS1saW51eAorCQk7OworCW5ld3MgfCBuZXdzNzAwIHwgbmV3czgwMCB8IG5ld3M5MDApCisJCWJhc2ljX21hY2hpbmU9bTY4ay1zb255CisJCW9zPS1uZXdzb3MKKwkJOzsKKwluZXdzMTAwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjgwMzAtc29ueQorCQlvcz0tbmV3c29zCisJCTs7CisJbmV3cy0zNjAwIHwgcmlzYy1uZXdzKQorCQliYXNpY19tYWNoaW5lPW1pcHMtc29ueQorCQlvcz0tbmV3c29zCisJCTs7CisJbmVjdjcwKQorCQliYXNpY19tYWNoaW5lPXY3MC1uZWMKKwkJb3M9LXN5c3YKKwkJOzsKKwluZXh0IHwgbSotbmV4dCApCisJCWJhc2ljX21hY2hpbmU9bTY4ay1uZXh0CisJCWNhc2UgJG9zIGluCisJCSAgICAtbmV4dHN0ZXAqICkKKwkJCTs7CisJCSAgICAtbnMyKikKKwkJICAgICAgb3M9LW5leHRzdGVwMgorCQkJOzsKKwkJICAgICopCisJCSAgICAgIG9zPS1uZXh0c3RlcDMKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwluaDMwMDApCisJCWJhc2ljX21hY2hpbmU9bTY4ay1oYXJyaXMKKwkJb3M9LWN4dXgKKwkJOzsKKwluaFs0NV0wMDApCisJCWJhc2ljX21hY2hpbmU9bTg4ay1oYXJyaXMKKwkJb3M9LWN4dXgKKwkJOzsKKwluaW5keTk2MCkKKwkJYmFzaWNfbWFjaGluZT1pOTYwLWludGVsCisJCW9zPS1uaW5keQorCQk7OworCW1vbjk2MCkKKwkJYmFzaWNfbWFjaGluZT1pOTYwLWludGVsCisJCW9zPS1tb245NjAKKwkJOzsKKwlub25zdG9wdXgpCisJCWJhc2ljX21hY2hpbmU9bWlwcy1jb21wYXEKKwkJb3M9LW5vbnN0b3B1eAorCQk7OworCW5wMSkKKwkJYmFzaWNfbWFjaGluZT1ucDEtZ291bGQKKwkJOzsKKwluZW8tdGFuZGVtKQorCQliYXNpY19tYWNoaW5lPW5lby10YW5kZW0KKwkJOzsKKwluc2UtdGFuZGVtKQorCQliYXNpY19tYWNoaW5lPW5zZS10YW5kZW0KKwkJOzsKKwluc3ItdGFuZGVtKQorCQliYXNpY19tYWNoaW5lPW5zci10YW5kZW0KKwkJOzsKKwlvcDUwbi0qIHwgb3A2MGMtKikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLW9raQorCQlvcz0tcHJvZWxmCisJCTs7CisJb3BlbnJpc2MgfCBvcGVucmlzYy0qKQorCQliYXNpY19tYWNoaW5lPW9yMzItdW5rbm93bgorCQk7OworCW9zNDAwKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtaWJtCisJCW9zPS1vczQwMAorCQk7OworCU9TRTY4MDAwIHwgb3NlNjgwMDApCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLWVyaWNzc29uCisJCW9zPS1vc2UKKwkJOzsKKwlvczY4aykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLW5vbmUKKwkJb3M9LW9zNjhrCisJCTs7CisJcGEtaGl0YWNoaSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhpdGFjaGkKKwkJb3M9LWhpdXh3ZTIKKwkJOzsKKwlwYXJhZ29uKQorCQliYXNpY19tYWNoaW5lPWk4NjAtaW50ZWwKKwkJb3M9LW9zZgorCQk7OworCXBhcmlzYykKKwkJYmFzaWNfbWFjaGluZT1ocHBhLXVua25vd24KKwkJb3M9LWxpbnV4CisJCTs7CisJcGFyaXNjLSopCisJCWJhc2ljX21hY2hpbmU9aHBwYS1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQlvcz0tbGludXgKKwkJOzsKKwlwYmQpCisJCWJhc2ljX21hY2hpbmU9c3BhcmMtdHRpCisJCTs7CisJcGJiKQorCQliYXNpY19tYWNoaW5lPW02OGstdHRpCisJCTs7CisJcGM1MzIgfCBwYzUzMi0qKQorCQliYXNpY19tYWNoaW5lPW5zMzJrLXBjNTMyCisJCTs7CisJcGM5OCkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCTs7CisJcGM5OC0qKQorCQliYXNpY19tYWNoaW5lPWkzODYtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwZW50aXVtIHwgcDUgfCBrNSB8IGs2IHwgbmV4Z2VuIHwgdmlhYzMpCisJCWJhc2ljX21hY2hpbmU9aTU4Ni1wYworCQk7OworCXBlbnRpdW1wcm8gfCBwNiB8IDZ4ODYgfCBhdGhsb24gfCBhdGhsb25fKikKKwkJYmFzaWNfbWFjaGluZT1pNjg2LXBjCisJCTs7CisJcGVudGl1bWlpIHwgcGVudGl1bTIgfCBwZW50aXVtaWlpIHwgcGVudGl1bTMpCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQk7OworCXBlbnRpdW00KQorCQliYXNpY19tYWNoaW5lPWk3ODYtcGMKKwkJOzsKKwlwZW50aXVtLSogfCBwNS0qIHwgazUtKiB8IGs2LSogfCBuZXhnZW4tKiB8IHZpYWMzLSopCisJCWJhc2ljX21hY2hpbmU9aTU4Ni1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBlbnRpdW1wcm8tKiB8IHA2LSogfCA2eDg2LSogfCBhdGhsb24tKikKKwkJYmFzaWNfbWFjaGluZT1pNjg2LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcGVudGl1bWlpLSogfCBwZW50aXVtMi0qIHwgcGVudGl1bWlpaS0qIHwgcGVudGl1bTMtKikKKwkJYmFzaWNfbWFjaGluZT1pNjg2LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcGVudGl1bTQtKikKKwkJYmFzaWNfbWFjaGluZT1pNzg2LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcG4pCisJCWJhc2ljX21hY2hpbmU9cG4tZ291bGQKKwkJOzsKKwlwb3dlcikJYmFzaWNfbWFjaGluZT1wb3dlci1pYm0KKwkJOzsKKwlwcGMgfCBwcGNiZSkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLXVua25vd24KKwkJOzsKKwlwcGMtKiB8IHBwY2JlLSopCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYy1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBwY2xlIHwgcG93ZXJwY2xpdHRsZSB8IHBwYy1sZSB8IHBvd2VycGMtbGl0dGxlKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGNsZS11bmtub3duCisJCTs7CisJcHBjbGUtKiB8IHBvd2VycGNsaXR0bGUtKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjbGUtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwcGM2NCkJYmFzaWNfbWFjaGluZT1wb3dlcnBjNjQtdW5rbm93bgorCQk7OworCXBwYzY0LSopIGJhc2ljX21hY2hpbmU9cG93ZXJwYzY0LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcHBjNjRsZSB8IHBvd2VycGM2NGxpdHRsZSB8IHBwYzY0LWxlIHwgcG93ZXJwYzY0LWxpdHRsZSkKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjNjRsZS11bmtub3duCisJCTs7CisJcHBjNjRsZS0qIHwgcG93ZXJwYzY0bGl0dGxlLSopCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYzY0bGUtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwczIpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1pYm0KKwkJOzsKKwlwdzMyKQorCQliYXNpY19tYWNoaW5lPWk1ODYtdW5rbm93bgorCQlvcz0tcHczMgorCQk7OworCXJkb3MpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworCQlvcz0tcmRvcworCQk7OworCXJvbTY4aykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXJvbTY4aworCQlvcz0tY29mZgorCQk7OworCXJtWzQ2XTAwKQorCQliYXNpY19tYWNoaW5lPW1pcHMtc2llbWVucworCQk7OworCXJ0cGMgfCBydHBjLSopCisJCWJhc2ljX21hY2hpbmU9cm9tcC1pYm0KKwkJOzsKKwlzMzkwIHwgczM5MC0qKQorCQliYXNpY19tYWNoaW5lPXMzOTAtaWJtCisJCTs7CisJczM5MHggfCBzMzkweC0qKQorCQliYXNpY19tYWNoaW5lPXMzOTB4LWlibQorCQk7OworCXNhMjkyMDApCisJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKKwkJb3M9LXVkaQorCQk7OworCXNiMSkKKwkJYmFzaWNfbWFjaGluZT1taXBzaXNhNjRzYjEtdW5rbm93bgorCQk7OworCXNiMWVsKQorCQliYXNpY19tYWNoaW5lPW1pcHNpc2E2NHNiMWVsLXVua25vd24KKwkJOzsKKwlzZGUpCisJCWJhc2ljX21hY2hpbmU9bWlwc2lzYTMyLXNkZQorCQlvcz0tZWxmCisJCTs7CisJc2VpKQorCQliYXNpY19tYWNoaW5lPW1pcHMtc2VpCisJCW9zPS1zZWl1eAorCQk7OworCXNlcXVlbnQpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1zZXF1ZW50CisJCTs7CisJc2gpCisJCWJhc2ljX21hY2hpbmU9c2gtaGl0YWNoaQorCQlvcz0taG1zCisJCTs7CisJc2g1ZWwpCisJCWJhc2ljX21hY2hpbmU9c2g1bGUtdW5rbm93bgorCQk7OworCXNoNjQpCisJCWJhc2ljX21hY2hpbmU9c2g2NC11bmtub3duCisJCTs7CisJc3BhcmNsaXRlLXdycyB8IHNpbXNvLXdycykKKwkJYmFzaWNfbWFjaGluZT1zcGFyY2xpdGUtd3JzCisJCW9zPS12eHdvcmtzCisJCTs7CisJc3BzNykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWJ1bGwKKwkJb3M9LXN5c3YyCisJCTs7CisJc3B1cikKKwkJYmFzaWNfbWFjaGluZT1zcHVyLXVua25vd24KKwkJOzsKKwlzdDIwMDApCisJCWJhc2ljX21hY2hpbmU9bTY4ay10YW5kZW0KKwkJOzsKKwlzdHJhdHVzKQorCQliYXNpY19tYWNoaW5lPWk4NjAtc3RyYXR1cworCQlvcz0tc3lzdjQKKwkJOzsKKwlzdHJvbmdhcm0tKiB8IHRodW1iLSopCisJCWJhc2ljX21hY2hpbmU9YXJtLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJc3VuMikKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtc3VuCisJCTs7CisJc3VuMm9zMykKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtc3VuCisJCW9zPS1zdW5vczMKKwkJOzsKKwlzdW4yb3M0KQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1zdW4KKwkJb3M9LXN1bm9zNAorCQk7OworCXN1bjNvczMpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1zdW4KKwkJb3M9LXN1bm9zMworCQk7OworCXN1bjNvczQpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1zdW4KKwkJb3M9LXN1bm9zNAorCQk7OworCXN1bjRvczMpCisJCWJhc2ljX21hY2hpbmU9c3BhcmMtc3VuCisJCW9zPS1zdW5vczMKKwkJOzsKKwlzdW40b3M0KQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQlvcz0tc3Vub3M0CisJCTs7CisJc3VuNHNvbDIpCisJCWJhc2ljX21hY2hpbmU9c3BhcmMtc3VuCisJCW9zPS1zb2xhcmlzMgorCQk7OworCXN1bjMgfCBzdW4zLSopCisJCWJhc2ljX21hY2hpbmU9bTY4ay1zdW4KKwkJOzsKKwlzdW40KQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQk7OworCXN1bjM4NiB8IHN1bjM4NmkgfCByb2FkcnVubmVyKQorCQliYXNpY19tYWNoaW5lPWkzODYtc3VuCisJCTs7CisJc3YxKQorCQliYXNpY19tYWNoaW5lPXN2MS1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwlzeW1tZXRyeSkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXNlcXVlbnQKKwkJb3M9LWR5bml4CisJCTs7CisJdDNlKQorCQliYXNpY19tYWNoaW5lPWFscGhhZXY1LWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworCXQ5MCkKKwkJYmFzaWNfbWFjaGluZT10OTAtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJdGlsZSopCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgorCQlvcz0tbGludXgtZ251CisJCTs7CisJdHgzOSkKKwkJYmFzaWNfbWFjaGluZT1taXBzdHgzOS11bmtub3duCisJCTs7CisJdHgzOWVsKQorCQliYXNpY19tYWNoaW5lPW1pcHN0eDM5ZWwtdW5rbm93bgorCQk7OworCXRvYWQxKQorCQliYXNpY19tYWNoaW5lPXBkcDEwLXhrbAorCQlvcz0tdG9wczIwCisJCTs7CisJdG93ZXIgfCB0b3dlci0zMikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLW5jcgorCQk7OworCXRwZikKKwkJYmFzaWNfbWFjaGluZT1zMzkweC1pYm0KKwkJb3M9LXRwZgorCQk7OworCXVkaTI5aykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAorCQlvcz0tdWRpCisJCTs7CisJdWx0cmEzKQorCQliYXNpY19tYWNoaW5lPWEyOWstbnl1CisJCW9zPS1zeW0xCisJCTs7CisJdjgxMCB8IG5lY3Y4MTApCisJCWJhc2ljX21hY2hpbmU9djgxMC1uZWMKKwkJb3M9LW5vbmUKKwkJOzsKKwl2YXh2KQorCQliYXNpY19tYWNoaW5lPXZheC1kZWMKKwkJb3M9LXN5c3YKKwkJOzsKKwl2bXMpCisJCWJhc2ljX21hY2hpbmU9dmF4LWRlYworCQlvcz0tdm1zCisJCTs7CisJdnBwKnx2eHx2eC0qKQorCQliYXNpY19tYWNoaW5lPWYzMDEtZnVqaXRzdQorCQk7OworCXZ4d29ya3M5NjApCisJCWJhc2ljX21hY2hpbmU9aTk2MC13cnMKKwkJb3M9LXZ4d29ya3MKKwkJOzsKKwl2eHdvcmtzNjgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay13cnMKKwkJb3M9LXZ4d29ya3MKKwkJOzsKKwl2eHdvcmtzMjlrKQorCQliYXNpY19tYWNoaW5lPWEyOWstd3JzCisJCW9zPS12eHdvcmtzCisJCTs7CisJdzY1KikKKwkJYmFzaWNfbWFjaGluZT13NjUtd2RjCisJCW9zPS1ub25lCisJCTs7CisJdzg5ay0qKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtd2luYm9uZAorCQlvcz0tcHJvZWxmCisJCTs7CisJeGJveCkKKwkJYmFzaWNfbWFjaGluZT1pNjg2LXBjCisJCW9zPS1taW5ndzMyCisJCTs7CisJeHBzIHwgeHBzMTAwKQorCQliYXNpY19tYWNoaW5lPXhwczEwMC1ob25leXdlbGwKKwkJOzsKKwl4c2NhbGUtKiB8IHhzY2FsZWVbYmxdLSopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXnhzY2FsZS9hcm0vJ2AKKwkJOzsKKwl5bXApCisJCWJhc2ljX21hY2hpbmU9eW1wLWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworCXo4ay0qLWNvZmYpCisJCWJhc2ljX21hY2hpbmU9ejhrLXVua25vd24KKwkJb3M9LXNpbQorCQk7OworCXo4MC0qLWNvZmYpCisJCWJhc2ljX21hY2hpbmU9ejgwLXVua25vd24KKwkJb3M9LXNpbQorCQk7OworCW5vbmUpCisJCWJhc2ljX21hY2hpbmU9bm9uZS1ub25lCisJCW9zPS1ub25lCisJCTs7CisKKyMgSGVyZSB3ZSBoYW5kbGUgdGhlIGRlZmF1bHQgbWFudWZhY3R1cmVyIG9mIGNlcnRhaW4gQ1BVIHR5cGVzLiAgSXQgaXMgaW4KKyMgc29tZSBjYXNlcyB0aGUgb25seSBtYW51ZmFjdHVyZXIsIGluIG90aGVycywgaXQgaXMgdGhlIG1vc3QgcG9wdWxhci4KKwl3ODlrKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtd2luYm9uZAorCQk7OworCW9wNTBuKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtb2tpCisJCTs7CisJb3A2MGMpCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1va2kKKwkJOzsKKwlyb21wKQorCQliYXNpY19tYWNoaW5lPXJvbXAtaWJtCisJCTs7CisJbW1peCkKKwkJYmFzaWNfbWFjaGluZT1tbWl4LWtudXRoCisJCTs7CisJcnM2MDAwKQorCQliYXNpY19tYWNoaW5lPXJzNjAwMC1pYm0KKwkJOzsKKwl2YXgpCisJCWJhc2ljX21hY2hpbmU9dmF4LWRlYworCQk7OworCXBkcDEwKQorCQkjIHRoZXJlIGFyZSBtYW55IGNsb25lcywgc28gREVDIGlzIG5vdCBhIHNhZmUgYmV0CisJCWJhc2ljX21hY2hpbmU9cGRwMTAtdW5rbm93bgorCQk7OworCXBkcDExKQorCQliYXNpY19tYWNoaW5lPXBkcDExLWRlYworCQk7OworCXdlMzJrKQorCQliYXNpY19tYWNoaW5lPXdlMzJrLWF0dAorCQk7OworCXNoWzEyMzRdIHwgc2hbMjRdYSB8IHNoWzI0XWFlYiB8IHNoWzM0XWViIHwgc2hbMTIzNF1sZSB8IHNoWzIzXWVsZSkKKwkJYmFzaWNfbWFjaGluZT1zaC11bmtub3duCisJCTs7CisJc3BhcmMgfCBzcGFyY3Y4IHwgc3BhcmN2OSB8IHNwYXJjdjliIHwgc3BhcmN2OXYpCisJCWJhc2ljX21hY2hpbmU9c3BhcmMtc3VuCisJCTs7CisJY3lkcmEpCisJCWJhc2ljX21hY2hpbmU9Y3lkcmEtY3lkcm9tZQorCQk7OworCW9yaW9uKQorCQliYXNpY19tYWNoaW5lPW9yaW9uLWhpZ2hsZXZlbAorCQk7OworCW9yaW9uMTA1KQorCQliYXNpY19tYWNoaW5lPWNsaXBwZXItaGlnaGxldmVsCisJCTs7CisJbWFjIHwgbXB3IHwgbWFjLW1wdykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWFwcGxlCisJCTs7CisJcG1hYyB8IHBtYWMtbXB3KQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtYXBwbGUKKwkJOzsKKwkqLXVua25vd24pCisJCSMgTWFrZSBzdXJlIHRvIG1hdGNoIGFuIGFscmVhZHktY2Fub25pY2FsaXplZCBtYWNoaW5lIG5hbWUuCisJCTs7CisJKikKKwkJZWNobyBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gXGAkMVwnOiBtYWNoaW5lIFxgJGJhc2ljX21hY2hpbmVcJyBub3QgcmVjb2duaXplZCAxPiYyCisJCWV4aXQgMQorCQk7OworZXNhYworCisjIEhlcmUgd2UgY2Fub25pY2FsaXplIGNlcnRhaW4gYWxpYXNlcyBmb3IgbWFudWZhY3R1cmVycy4KK2Nhc2UgJGJhc2ljX21hY2hpbmUgaW4KKwkqLWRpZ2l0YWwqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL2RpZ2l0YWwuKi9kZWMvJ2AKKwkJOzsKKwkqLWNvbW1vZG9yZSopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvY29tbW9kb3JlLiovY2JtLydgCisJCTs7CisJKikKKwkJOzsKK2VzYWMKKworIyBEZWNvZGUgbWFudWZhY3R1cmVyLXNwZWNpZmljIGFsaWFzZXMgZm9yIGNlcnRhaW4gb3BlcmF0aW5nIHN5c3RlbXMuCisKK2lmIFsgeCIkb3MiICE9IHgiIiBdCit0aGVuCitjYXNlICRvcyBpbgorCSMgRmlyc3QgbWF0Y2ggc29tZSBzeXN0ZW0gdHlwZSBhbGlhc2VzCisJIyB0aGF0IG1pZ2h0IGdldCBjb25mdXNlZCB3aXRoIHZhbGlkIHN5c3RlbSB0eXBlcy4KKwkjIC1zb2xhcmlzKiBpcyBhIGJhc2ljIHN5c3RlbSB0eXBlLCB3aXRoIHRoaXMgb25lIGV4Y2VwdGlvbi4KKwktYXVyb3JhdXgpCisJCW9zPS1hdXJvcmF1eAorCQk7OworCS1zb2xhcmlzMSB8IC1zb2xhcmlzMS4qKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8c29sYXJpczF8c3Vub3M0fCdgCisJCTs7CisJLXNvbGFyaXMpCisJCW9zPS1zb2xhcmlzMgorCQk7OworCS1zdnI0KikKKwkJb3M9LXN5c3Y0CisJCTs7CisJLXVuaXh3YXJlKikKKwkJb3M9LXN5c3Y0LjJ1dworCQk7OworCS1nbnUvbGludXgqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8Z251L2xpbnV4fGxpbnV4LWdudXwnYAorCQk7OworCSMgRmlyc3QgYWNjZXB0IHRoZSBiYXNpYyBzeXN0ZW0gdHlwZXMuCisJIyBUaGUgcG9ydGFibGUgc3lzdGVtcyBjb21lcyBmaXJzdC4KKwkjIEVhY2ggYWx0ZXJuYXRpdmUgTVVTVCBFTkQgSU4gQSAqLCB0byBtYXRjaCBhIHZlcnNpb24gbnVtYmVyLgorCSMgLXN5c3YqIGlzIG5vdCBoZXJlIGJlY2F1c2UgaXQgY29tZXMgbGF0ZXIsIGFmdGVyIHN5c3ZyNC4KKwktZ251KiB8IC1ic2QqIHwgLW1hY2gqIHwgLW1pbml4KiB8IC1nZW5peCogfCAtdWx0cml4KiB8IC1pcml4KiBcCisJICAgICAgfCAtKnZtcyogfCAtc2NvKiB8IC1lc2l4KiB8IC1pc2MqIHwgLWFpeCogfCAtY25rKiB8IC1zdW5vcyB8IC1zdW5vc1szNF0qXAorCSAgICAgIHwgLWhwdXgqIHwgLXVub3MqIHwgLW9zZiogfCAtbHVuYSogfCAtZGd1eCogfCAtYXVyb3JhdXgqIHwgLXNvbGFyaXMqIFwKKwkgICAgICB8IC1zeW0qIHwgLWtvcGVuc29sYXJpcyogXAorCSAgICAgIHwgLWFtaWdhb3MqIHwgLWFtaWdhZG9zKiB8IC1tc2RvcyogfCAtbmV3c29zKiB8IC11bmljb3MqIHwgLWFvZiogXAorCSAgICAgIHwgLWFvcyogfCAtYXJvcyogXAorCSAgICAgIHwgLW5pbmR5KiB8IC12eHNpbSogfCAtdnh3b3JrcyogfCAtZWJtb24qIHwgLWhtcyogfCAtbXZzKiBcCisJICAgICAgfCAtY2xpeCogfCAtcmlzY29zKiB8IC11bmlwbHVzKiB8IC1pcmlzKiB8IC1ydHUqIHwgLXhlbml4KiBcCisJICAgICAgfCAtaGl1eCogfCAtMzg2YnNkKiB8IC1rbmV0YnNkKiB8IC1taXJic2QqIHwgLW5ldGJzZCogXAorCSAgICAgIHwgLW9wZW5ic2QqIHwgLXNvbGlkYnNkKiBcCisJICAgICAgfCAtZWtrb2JzZCogfCAta2ZyZWVic2QqIHwgLWZyZWVic2QqIHwgLXJpc2NpeCogfCAtbHlueG9zKiBcCisJICAgICAgfCAtYm9zeCogfCAtbmV4dHN0ZXAqIHwgLWN4dXgqIHwgLWFvdXQqIHwgLWVsZiogfCAtb2FiaSogXAorCSAgICAgIHwgLXB0eCogfCAtY29mZiogfCAtZWNvZmYqIHwgLXdpbm50KiB8IC1kb21haW4qIHwgLXZzdGEqIFwKKwkgICAgICB8IC11ZGkqIHwgLWVhYmkqIHwgLWxpdGVzKiB8IC1pZWVlKiB8IC1nbzMyKiB8IC1hdXgqIFwKKwkgICAgICB8IC1jaG9ydXNvcyogfCAtY2hvcnVzcmRiKiB8IC1jZWdjYyogXAorCSAgICAgIHwgLWN5Z3dpbiogfCAtbXN5cyogfCAtcGUqIHwgLXBzb3MqIHwgLW1vc3MqIHwgLXByb2VsZiogfCAtcnRlbXMqIFwKKwkgICAgICB8IC1taW5ndzMyKiB8IC1saW51eC1nbnUqIHwgLWxpbnV4LWFuZHJvaWQqIFwKKwkgICAgICB8IC1saW51eC1uZXdsaWIqIHwgLWxpbnV4LXVjbGliYyogXAorCSAgICAgIHwgLXV4cHYqIHwgLWJlb3MqIHwgLW1wZWl4KiB8IC11ZGsqIFwKKwkgICAgICB8IC1pbnRlcml4KiB8IC11d2luKiB8IC1ta3MqIHwgLXJoYXBzb2R5KiB8IC1kYXJ3aW4qIHwgLW9wZW5lZCogXAorCSAgICAgIHwgLW9wZW5zdGVwKiB8IC1vc2tpdCogfCAtY29uaXgqIHwgLXB3MzIqIHwgLW5vbnN0b3B1eCogXAorCSAgICAgIHwgLXN0b3JtLWNoYW9zKiB8IC10b3BzMTAqIHwgLXRlbmV4KiB8IC10b3BzMjAqIHwgLWl0cyogXAorCSAgICAgIHwgLW9zMiogfCAtdm9zKiB8IC1wYWxtb3MqIHwgLXVjbGludXgqIHwgLW51Y2xldXMqIFwKKwkgICAgICB8IC1tb3JwaG9zKiB8IC1zdXBlcnV4KiB8IC1ydG1rKiB8IC1ydG1rLW5vdmEqIHwgLXdpbmRpc3MqIFwKKwkgICAgICB8IC1wb3dlcm1heCogfCAtZG5peCogfCAtbng2IHwgLW54NyB8IC1zZWkqIHwgLWRyYWdvbmZseSogXAorCSAgICAgIHwgLXNreW9zKiB8IC1oYWlrdSogfCAtcmRvcyogfCAtdG9wcGVycyogfCAtZHJvcHMqIHwgLWVzKikKKwkjIFJlbWVtYmVyLCBlYWNoIGFsdGVybmF0aXZlIE1VU1QgRU5EIElOICosIHRvIG1hdGNoIGEgdmVyc2lvbiBudW1iZXIuCisJCTs7CisJLXFueCopCisJCWNhc2UgJGJhc2ljX21hY2hpbmUgaW4KKwkJICAgIHg4Ni0qIHwgaSo4Ni0qKQorCQkJOzsKKwkJICAgICopCisJCQlvcz0tbnRvJG9zCisJCQk7OworCQllc2FjCisJCTs7CisJLW50by1xbngqKQorCQk7OworCS1udG8qKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8bnRvfG50by1xbnh8J2AKKwkJOzsKKwktc2ltIHwgLWVzMTgwMCogfCAtaG1zKiB8IC14cmF5IHwgLW9zNjhrKiB8IC1ub25lKiB8IC12ODhyKiBcCisJICAgICAgfCAtd2luZG93cyogfCAtb3N4IHwgLWFidWcgfCAtbmV0d2FyZSogfCAtb3M5KiB8IC1iZW9zKiB8IC1oYWlrdSogXAorCSAgICAgIHwgLW1hY29zKiB8IC1tcHcqIHwgLW1hZ2ljKiB8IC1tbWl4d2FyZSogfCAtbW9uOTYwKiB8IC1sbmV3cyopCisJCTs7CisJLW1hYyopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xtYWN8bWFjb3N8J2AKKwkJOzsKKwktbGludXgtZGlldGxpYmMpCisJCW9zPS1saW51eC1kaWV0bGliYworCQk7OworCS1saW51eCopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xsaW51eHxsaW51eC1nbnV8J2AKKwkJOzsKKwktc3Vub3M1KikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfHN1bm9zNXxzb2xhcmlzMnwnYAorCQk7OworCS1zdW5vczYqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8c3Vub3M2fHNvbGFyaXMzfCdgCisJCTs7CisJLW9wZW5lZCopCisJCW9zPS1vcGVuZWRpdGlvbgorCQk7OworCS1vczQwMCopCisJCW9zPS1vczQwMAorCQk7OworCS13aW5jZSopCisJCW9zPS13aW5jZQorCQk7OworCS1vc2Zyb3NlKikKKwkJb3M9LW9zZnJvc2UKKwkJOzsKKwktb3NmKikKKwkJb3M9LW9zZgorCQk7OworCS11dGVrKikKKwkJb3M9LWJzZAorCQk7OworCS1keW5peCopCisJCW9zPS1ic2QKKwkJOzsKKwktYWNpcyopCisJCW9zPS1hb3MKKwkJOzsKKwktYXRoZW9zKikKKwkJb3M9LWF0aGVvcworCQk7OworCS1zeWxsYWJsZSopCisJCW9zPS1zeWxsYWJsZQorCQk7OworCS0zODZic2QpCisJCW9zPS1ic2QKKwkJOzsKKwktY3RpeCogfCAtdXRzKikKKwkJb3M9LXN5c3YKKwkJOzsKKwktbm92YSopCisJCW9zPS1ydG1rLW5vdmEKKwkJOzsKKwktbnMyICkKKwkJb3M9LW5leHRzdGVwMgorCQk7OworCS1uc2sqKQorCQlvcz0tbnNrCisJCTs7CisJIyBQcmVzZXJ2ZSB0aGUgdmVyc2lvbiBudW1iZXIgb2Ygc2luaXg1LgorCS1zaW5peDUuKikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfHNpbml4fHN5c3Z8J2AKKwkJOzsKKwktc2luaXgqKQorCQlvcz0tc3lzdjQKKwkJOzsKKwktdHBmKikKKwkJb3M9LXRwZgorCQk7OworCS10cml0b24qKQorCQlvcz0tc3lzdjMKKwkJOzsKKwktb3NzKikKKwkJb3M9LXN5c3YzCisJCTs7CisJLXN2cjQpCisJCW9zPS1zeXN2NAorCQk7OworCS1zdnIzKQorCQlvcz0tc3lzdjMKKwkJOzsKKwktc3lzdnI0KQorCQlvcz0tc3lzdjQKKwkJOzsKKwkjIFRoaXMgbXVzdCBjb21lIGFmdGVyIC1zeXN2cjQuCisJLXN5c3YqKQorCQk7OworCS1vc2UqKQorCQlvcz0tb3NlCisJCTs7CisJLWVzMTgwMCopCisJCW9zPS1vc2UKKwkJOzsKKwkteGVuaXgpCisJCW9zPS14ZW5peAorCQk7OworCS0qbWludCB8IC1taW50WzAtOV0qIHwgLSpNaU5UIHwgLU1pTlRbMC05XSopCisJCW9zPS1taW50CisJCTs7CisJLWFyb3MqKQorCQlvcz0tYXJvcworCQk7OworCS1rYW9zKikKKwkJb3M9LWthb3MKKwkJOzsKKwktenZtb2UpCisJCW9zPS16dm1vZQorCQk7OworCS1kaWNvcyopCisJCW9zPS1kaWNvcworCQk7OworCS1uYWNsKikKKwkJOzsKKwktbm9uZSkKKwkJOzsKKwkqKQorCQkjIEdldCByaWQgb2YgdGhlIGAtJyBhdCB0aGUgYmVnaW5uaW5nIG9mICRvcy4KKwkJb3M9YGVjaG8gJG9zIHwgc2VkICdzL1teLV0qLS8vJ2AKKwkJZWNobyBJbnZhbGlkIGNvbmZpZ3VyYXRpb24gXGAkMVwnOiBzeXN0ZW0gXGAkb3NcJyBub3QgcmVjb2duaXplZCAxPiYyCisJCWV4aXQgMQorCQk7OworZXNhYworZWxzZQorCisjIEhlcmUgd2UgaGFuZGxlIHRoZSBkZWZhdWx0IG9wZXJhdGluZyBzeXN0ZW1zIHRoYXQgY29tZSB3aXRoIHZhcmlvdXMgbWFjaGluZXMuCisjIFRoZSB2YWx1ZSBzaG91bGQgYmUgd2hhdCB0aGUgdmVuZG9yIGN1cnJlbnRseSBzaGlwcyBvdXQgdGhlIGRvb3Igd2l0aCB0aGVpcgorIyBtYWNoaW5lIG9yIHB1dCBhbm90aGVyIHdheSwgdGhlIG1vc3QgcG9wdWxhciBvcyBwcm92aWRlZCB3aXRoIHRoZSBtYWNoaW5lLgorCisjIE5vdGUgdGhhdCBpZiB5b3UncmUgZ29pbmcgdG8gdHJ5IHRvIG1hdGNoICItTUFOVUZBQ1RVUkVSIiBoZXJlIChzYXksCisjICItc3VuIiksIHRoZW4geW91IGhhdmUgdG8gdGVsbCB0aGUgY2FzZSBzdGF0ZW1lbnQgdXAgdG93YXJkcyB0aGUgdG9wCisjIHRoYXQgTUFOVUZBQ1RVUkVSIGlzbid0IGFuIG9wZXJhdGluZyBzeXN0ZW0uICBPdGhlcndpc2UsIGNvZGUgYWJvdmUKKyMgd2lsbCBzaWduYWwgYW4gZXJyb3Igc2F5aW5nIHRoYXQgTUFOVUZBQ1RVUkVSIGlzbid0IGFuIG9wZXJhdGluZworIyBzeXN0ZW0sIGFuZCB3ZSdsbCBuZXZlciBnZXQgdG8gdGhpcyBwb2ludC4KKworY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorCXNjb3JlLSopCisJCW9zPS1lbGYKKwkJOzsKKwlzcHUtKikKKwkJb3M9LWVsZgorCQk7OworCSotYWNvcm4pCisJCW9zPS1yaXNjaXgxLjIKKwkJOzsKKwlhcm0qLXJlYmVsKQorCQlvcz0tbGludXgKKwkJOzsKKwlhcm0qLXNlbWkpCisJCW9zPS1hb3V0CisJCTs7CisJYzR4LSogfCB0aWM0eC0qKQorCQlvcz0tY29mZgorCQk7OworCXRpYzU0eC0qKQorCQlvcz0tY29mZgorCQk7OworCXRpYzU1eC0qKQorCQlvcz0tY29mZgorCQk7OworCXRpYzZ4LSopCisJCW9zPS1jb2ZmCisJCTs7CisJIyBUaGlzIG11c3QgY29tZSBiZWZvcmUgdGhlICotZGVjIGVudHJ5LgorCXBkcDEwLSopCisJCW9zPS10b3BzMjAKKwkJOzsKKwlwZHAxMS0qKQorCQlvcz0tbm9uZQorCQk7OworCSotZGVjIHwgdmF4LSopCisJCW9zPS11bHRyaXg0LjIKKwkJOzsKKwltNjgqLWFwb2xsbykKKwkJb3M9LWRvbWFpbgorCQk7OworCWkzODYtc3VuKQorCQlvcz0tc3Vub3M0LjAuMgorCQk7OworCW02ODAwMC1zdW4pCisJCW9zPS1zdW5vczMKKwkJOzsKKwltNjgqLWNpc2NvKQorCQlvcz0tYW91dAorCQk7OworCW1lcC0qKQorCQlvcz0tZWxmCisJCTs7CisJbWlwcyotY2lzY28pCisJCW9zPS1lbGYKKwkJOzsKKwltaXBzKi0qKQorCQlvcz0tZWxmCisJCTs7CisJb3IzMi0qKQorCQlvcz0tY29mZgorCQk7OworCSotdHRpKQkjIG11c3QgYmUgYmVmb3JlIHNwYXJjIGVudHJ5IG9yIHdlIGdldCB0aGUgd3Jvbmcgb3MuCisJCW9zPS1zeXN2MworCQk7OworCXNwYXJjLSogfCAqLXN1bikKKwkJb3M9LXN1bm9zNC4xLjEKKwkJOzsKKwkqLWJlKQorCQlvcz0tYmVvcworCQk7OworCSotaGFpa3UpCisJCW9zPS1oYWlrdQorCQk7OworCSotaWJtKQorCQlvcz0tYWl4CisJCTs7CisJKi1rbnV0aCkKKwkJb3M9LW1taXh3YXJlCisJCTs7CisJKi13ZWMpCisJCW9zPS1wcm9lbGYKKwkJOzsKKwkqLXdpbmJvbmQpCisJCW9zPS1wcm9lbGYKKwkJOzsKKwkqLW9raSkKKwkJb3M9LXByb2VsZgorCQk7OworCSotaHApCisJCW9zPS1ocHV4CisJCTs7CisJKi1oaXRhY2hpKQorCQlvcz0taGl1eAorCQk7OworCWk4NjAtKiB8ICotYXR0IHwgKi1uY3IgfCAqLWFsdG9zIHwgKi1tb3Rvcm9sYSB8ICotY29udmVyZ2VudCkKKwkJb3M9LXN5c3YKKwkJOzsKKwkqLWNibSkKKwkJb3M9LWFtaWdhb3MKKwkJOzsKKwkqLWRnKQorCQlvcz0tZGd1eAorCQk7OworCSotZG9scGhpbikKKwkJb3M9LXN5c3YzCisJCTs7CisJbTY4ay1jY3VyKQorCQlvcz0tcnR1CisJCTs7CisJbTg4ay1vbXJvbiopCisJCW9zPS1sdW5hCisJCTs7CisJKi1uZXh0ICkKKwkJb3M9LW5leHRzdGVwCisJCTs7CisJKi1zZXF1ZW50KQorCQlvcz0tcHR4CisJCTs7CisJKi1jcmRzKQorCQlvcz0tdW5vcworCQk7OworCSotbnMpCisJCW9zPS1nZW5peAorCQk7OworCWkzNzAtKikKKwkJb3M9LW12cworCQk7OworCSotbmV4dCkKKwkJb3M9LW5leHRzdGVwMworCQk7OworCSotZ291bGQpCisJCW9zPS1zeXN2CisJCTs7CisJKi1oaWdobGV2ZWwpCisJCW9zPS1ic2QKKwkJOzsKKwkqLWVuY29yZSkKKwkJb3M9LWJzZAorCQk7OworCSotc2dpKQorCQlvcz0taXJpeAorCQk7OworCSotc2llbWVucykKKwkJb3M9LXN5c3Y0CisJCTs7CisJKi1tYXNzY29tcCkKKwkJb3M9LXJ0dQorCQk7OworCWYzMFswMV0tZnVqaXRzdSB8IGY3MDAtZnVqaXRzdSkKKwkJb3M9LXV4cHYKKwkJOzsKKwkqLXJvbTY4aykKKwkJb3M9LWNvZmYKKwkJOzsKKwkqLSpidWcpCisJCW9zPS1jb2ZmCisJCTs7CisJKi1hcHBsZSkKKwkJb3M9LW1hY29zCisJCTs7CisJKi1hdGFyaSopCisJCW9zPS1taW50CisJCTs7CisJKikKKwkJb3M9LW5vbmUKKwkJOzsKK2VzYWMKK2ZpCisKKyMgSGVyZSB3ZSBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgd2Uga25vdyB0aGUgb3MsIGFuZCB0aGUgQ1BVIHR5cGUsIGJ1dCBub3QgdGhlCisjIG1hbnVmYWN0dXJlci4gIFdlIHBpY2sgdGhlIGxvZ2ljYWwgbWFudWZhY3R1cmVyLgordmVuZG9yPXVua25vd24KK2Nhc2UgJGJhc2ljX21hY2hpbmUgaW4KKwkqLXVua25vd24pCisJCWNhc2UgJG9zIGluCisJCQktcmlzY2l4KikKKwkJCQl2ZW5kb3I9YWNvcm4KKwkJCQk7OworCQkJLXN1bm9zKikKKwkJCQl2ZW5kb3I9c3VuCisJCQkJOzsKKwkJCS1jbmsqfC1haXgqKQorCQkJCXZlbmRvcj1pYm0KKwkJCQk7OworCQkJLWJlb3MqKQorCQkJCXZlbmRvcj1iZQorCQkJCTs7CisJCQktaHB1eCopCisJCQkJdmVuZG9yPWhwCisJCQkJOzsKKwkJCS1tcGVpeCopCisJCQkJdmVuZG9yPWhwCisJCQkJOzsKKwkJCS1oaXV4KikKKwkJCQl2ZW5kb3I9aGl0YWNoaQorCQkJCTs7CisJCQktdW5vcyopCisJCQkJdmVuZG9yPWNyZHMKKwkJCQk7OworCQkJLWRndXgqKQorCQkJCXZlbmRvcj1kZworCQkJCTs7CisJCQktbHVuYSopCisJCQkJdmVuZG9yPW9tcm9uCisJCQkJOzsKKwkJCS1nZW5peCopCisJCQkJdmVuZG9yPW5zCisJCQkJOzsKKwkJCS1tdnMqIHwgLW9wZW5lZCopCisJCQkJdmVuZG9yPWlibQorCQkJCTs7CisJCQktb3M0MDAqKQorCQkJCXZlbmRvcj1pYm0KKwkJCQk7OworCQkJLXB0eCopCisJCQkJdmVuZG9yPXNlcXVlbnQKKwkJCQk7OworCQkJLXRwZiopCisJCQkJdmVuZG9yPWlibQorCQkJCTs7CisJCQktdnhzaW0qIHwgLXZ4d29ya3MqIHwgLXdpbmRpc3MqKQorCQkJCXZlbmRvcj13cnMKKwkJCQk7OworCQkJLWF1eCopCisJCQkJdmVuZG9yPWFwcGxlCisJCQkJOzsKKwkJCS1obXMqKQorCQkJCXZlbmRvcj1oaXRhY2hpCisJCQkJOzsKKwkJCS1tcHcqIHwgLW1hY29zKikKKwkJCQl2ZW5kb3I9YXBwbGUKKwkJCQk7OworCQkJLSptaW50IHwgLW1pbnRbMC05XSogfCAtKk1pTlQgfCAtTWlOVFswLTldKikKKwkJCQl2ZW5kb3I9YXRhcmkKKwkJCQk7OworCQkJLXZvcyopCisJCQkJdmVuZG9yPXN0cmF0dXMKKwkJCQk7OworCQllc2FjCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgInMvdW5rbm93bi8kdmVuZG9yLyJgCisJCTs7Citlc2FjCisKK2VjaG8gJGJhc2ljX21hY2hpbmUkb3MKK2V4aXQKKworIyBMb2NhbCB2YXJpYWJsZXM6CisjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkKKyMgdGltZS1zdGFtcC1zdGFydDogInRpbWVzdGFtcD0nIgorIyB0aW1lLXN0YW1wLWZvcm1hdDogIiU6eS0lMDJtLSUwMmQiCisjIHRpbWUtc3RhbXAtZW5kOiAiJyIKKyMgRW5kOgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IGY3ZTQ5YjguLmI4ODE2MDIgMTAwNzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTEsNyArMSw2IEBACiAjISAvYmluL3NoCi0jIEZyb20gY29uZmlndXJlLmFjIFJldmlzaW9uLgogIyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLgotIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkgZm9yIHB5dGhvbiAzLjIuCisjIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSBmb3IgcHl0aG9uIDMuMy4KICMKICMgUmVwb3J0IGJ1Z3MgdG8gPGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvPi4KICMKQEAgLTU4MSw4ICs1ODAsOCBAQAogIyBJZGVudGl0eSBvZiB0aGlzIHBhY2thZ2UuCiBQQUNLQUdFX05BTUU9J3B5dGhvbicKIFBBQ0tBR0VfVEFSTkFNRT0ncHl0aG9uJwotUEFDS0FHRV9WRVJTSU9OPSczLjInCi1QQUNLQUdFX1NUUklORz0ncHl0aG9uIDMuMicKK1BBQ0tBR0VfVkVSU0lPTj0nMy4zJworUEFDS0FHRV9TVFJJTkc9J3B5dGhvbiAzLjMnCiBQQUNLQUdFX0JVR1JFUE9SVD0naHR0cDovL2J1Z3MucHl0aG9uLm9yZy8nCiBQQUNLQUdFX1VSTD0nJwogCkBAIC02NjcsMTMgKzY2NiwxMCBAQAogSU5TVEFMTF9QUk9HUkFNCiBQWVRIT04KIEFTRExHRU4KLUhBU19IRwotSEdCUkFOQ0gKLUhHVEFHCi1IR1ZFUlNJT04KLUJBU0VDUFBGTEFHUwotU1ZOVkVSU0lPTgorYWNfY3RfUkVBREVMRgorUkVBREVMRgogQVJGTEFHUworYWNfY3RfQVIKIEFSCiBSQU5MSUIKIFVTRV9JTkxJTkUKQEAgLTY5NCw2ICs2OTAsNyBAQAogR1JFUAogQ1BQCiBOT19BU19ORUVERUQKK2FjX2N0X0NYWAogTUFJTkNDCiBDWFgKIE9CSkVYVApAQCAtNzA2LDYgKzcwMyw3IEBACiBFWFBPUlRfTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCiBDT05GSUdVUkVfTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCiBTR0lfQUJJCitfUFlUSE9OX0hPU1RfUExBVEZPUk0KIE1BQ0hERVAKIEZSQU1FV09SS0lOU1RBTExBUFBTUFJFRklYCiBGUkFNRVdPUktVTklYVE9PTFNQUkVGSVgKQEAgLTcyNCw2ICs3MjIsMjAgQEAKIENPTkZJR19BUkdTCiBTT1ZFUlNJT04KIFZFUlNJT04KK1BZVEhPTl9GT1JfQlVJTEQKK2hvc3Rfb3MKK2hvc3RfdmVuZG9yCitob3N0X2NwdQoraG9zdAorYnVpbGRfb3MKK2J1aWxkX3ZlbmRvcgorYnVpbGRfY3B1CitidWlsZAorSEFTX0hHCitIR0JSQU5DSAorSEdUQUcKK0hHVkVSU0lPTgorQkFTRUNQUEZMQUdTCiB0YXJnZXRfYWxpYXMKIGhvc3RfYWxpYXMKIGJ1aWxkX2FsaWFzCkBAIC03NzgsMTAgKzc5MCwxMCBAQAogd2l0aF9saWJzCiB3aXRoX3N5c3RlbV9leHBhdAogd2l0aF9zeXN0ZW1fZmZpCit3aXRoX3N5c3RlbV9saWJtcGRlYwogZW5hYmxlX2xvYWRhYmxlX3NxbGl0ZV9leHRlbnNpb25zCiB3aXRoX2RibWxpYm9yZGVyCiB3aXRoX3NpZ25hbF9tb2R1bGUKLXdpdGhfZGVjX3RocmVhZHMKIHdpdGhfdGhyZWFkcwogd2l0aF90aHJlYWQKIGVuYWJsZV9pcHY2CkBAIC03OTMsMTIgKzgwNSwxMiBAQAogd2l0aF9saWJtCiB3aXRoX2xpYmMKIGVuYWJsZV9iaWdfZGlnaXRzCi13aXRoX3dpZGVfdW5pY29kZQogd2l0aF9jb21wdXRlZF9nb3RvcwogJwogICAgICAgYWNfcHJlY2lvdXNfdmFycz0nYnVpbGRfYWxpYXMKIGhvc3RfYWxpYXMKIHRhcmdldF9hbGlhcworTUFDSERFUAogQ0MKIENGTEFHUwogTERGTEFHUwpAQCAtMTM0NSw3ICsxMzU3LDcgQEAKICAgIyBPbWl0IHNvbWUgaW50ZXJuYWwgb3Igb2Jzb2xldGUgb3B0aW9ucyB0byBtYWtlIHRoZSBsaXN0IGxlc3MgaW1wb3NpbmcuCiAgICMgVGhpcyBtZXNzYWdlIGlzIHRvbyBsb25nIHRvIGJlIGEgc3RyaW5nIGluIHRoZSBBL1VYIDMuMSBzaC4KICAgY2F0IDw8X0FDRU9GCi1cYGNvbmZpZ3VyZScgY29uZmlndXJlcyBweXRob24gMy4yIHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KK1xgY29uZmlndXJlJyBjb25maWd1cmVzIHB5dGhvbiAzLjMgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1zLgogCiBVc2FnZTogJDAgW09QVElPTl0uLi4gW1ZBUj1WQUxVRV0uLi4KIApAQCAtMTQwMSwxMiArMTQxMywxNiBAQAogX0FDRU9GCiAKICAgY2F0IDw8XF9BQ0VPRgorCitTeXN0ZW0gdHlwZXM6CisgIC0tYnVpbGQ9QlVJTEQgICAgIGNvbmZpZ3VyZSBmb3IgYnVpbGRpbmcgb24gQlVJTEQgW2d1ZXNzZWRdCisgIC0taG9zdD1IT1NUICAgICAgIGNyb3NzLWNvbXBpbGUgdG8gYnVpbGQgcHJvZ3JhbXMgdG8gcnVuIG9uIEhPU1QgW0JVSUxEXQogX0FDRU9GCiBmaQogCiBpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhlbgogICBjYXNlICRhY19pbml0X2hlbHAgaW4KLSAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIHB5dGhvbiAzLjI6Ijs7CisgICAgIHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBweXRob24gMy4zOiI7OwogICAgZXNhYwogICBjYXQgPDxcX0FDRU9GCiAKQEAgLTE0MTUsNyArMTQzMSw3IEBACiAgIC0tZGlzYWJsZS1GRUFUVVJFICAgICAgIGRvIG5vdCBpbmNsdWRlIEZFQVRVUkUgKHNhbWUgYXMgLS1lbmFibGUtRkVBVFVSRT1ubykKICAgLS1lbmFibGUtRkVBVFVSRVs9QVJHXSAgaW5jbHVkZSBGRUFUVVJFIFtBUkc9eWVzXQogICAtLWVuYWJsZS11bml2ZXJzYWxzZGtbPVNES0RJUl0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgYWdhaW5zdCBNYWMgT1MgWCAxMC40dSBTREsgKHBwYy9pMzg2KQorICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCBmYXQgYmluYXJ5IGFnYWluc3QgTWFjIE9TIFggU0RLCiAgIC0tZW5hYmxlLWZyYW1ld29ya1s9SU5TVEFMTERJUl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgKE1hY09TWHxEYXJ3aW4pIGZyYW1ld29yawogICAtLWVuYWJsZS1zaGFyZWQgICAgICAgICBkaXNhYmxlL2VuYWJsZSBidWlsZGluZyBzaGFyZWQgcHl0aG9uIGxpYnJhcnkKQEAgLTE0NDYsMTIgKzE0NjIsMTMgQEAKICAgLS13aXRoLXN5c3RlbS1leHBhdCAgICAgYnVpbGQgcHlleHBhdCBtb2R1bGUgdXNpbmcgYW4gaW5zdGFsbGVkIGV4cGF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkKICAgLS13aXRoLXN5c3RlbS1mZmkgICAgICAgYnVpbGQgX2N0eXBlcyBtb2R1bGUgdXNpbmcgYW4gaW5zdGFsbGVkIGZmaSBsaWJyYXJ5CisgIC0td2l0aC1zeXN0ZW0tbGlibXBkZWMgIGJ1aWxkIF9kZWNpbWFsIG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgbGlibXBkZWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQogICAtLXdpdGgtZGJtbGlib3JkZXI9ZGIxOmRiMjouLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIgdG8gY2hlY2sgZGIgYmFja2VuZHMgZm9yIGRibS4gVmFsaWQgdmFsdWUgaXMgYQogICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvbiBzZXBhcmF0ZWQgc3RyaW5nIHdpdGggdGhlIGJhY2tlbmQgbmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgYG5kYm0nLCBgZ2RibScgYW5kIGBiZGInLgogICAtLXdpdGgtc2lnbmFsLW1vZHVsZSAgICBkaXNhYmxlL2VuYWJsZSBzaWduYWwgbW9kdWxlCi0gIC0td2l0aC1kZWMtdGhyZWFkcyAgICAgIHVzZSBERUMgQWxwaGEvT1NGMSB0aHJlYWQtc2FmZSBsaWJyYXJpZXMKICAgLS13aXRoKG91dCktdGhyZWFkc1s9RElSRUNUT1JZXQogICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlL2VuYWJsZSB0aHJlYWQgc3VwcG9ydAogICAtLXdpdGgob3V0KS10aHJlYWRbPURJUkVDVE9SWV0KQEAgLTE0NjMsMTIgKzE0ODAsMTIgQEAKICAgLS13aXRoLWZwZWN0bCAgICAgICAgICAgZW5hYmxlIFNJR0ZQRSBjYXRjaGluZwogICAtLXdpdGgtbGlibT1TVFJJTkcgICAgICBtYXRoIGxpYnJhcnkKICAgLS13aXRoLWxpYmM9U1RSSU5HICAgICAgQyBsaWJyYXJ5Ci0gIC0td2l0aC13aWRlLXVuaWNvZGUgICAgIFVzZSA0LWJ5dGUgVW5pY29kZSBjaGFyYWN0ZXJzIChkZWZhdWx0IGlzIDIgYnl0ZXMpCiAgIC0td2l0aChvdXQpLWNvbXB1dGVkLWdvdG9zCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBjb21wdXRlZCBnb3RvcyBpbiBldmFsdWF0aW9uIGxvb3AgKGVuYWJsZWQgYnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBvbiBzdXBwb3J0ZWQgY29tcGlsZXJzKQogCiBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKKyAgTUFDSERFUCAgICAgbmFtZSBmb3IgbWFjaGluZS1kZXBlbmRlbnQgbGlicmFyeSBmaWxlcwogICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKICAgQ0ZMQUdTICAgICAgQyBjb21waWxlciBmbGFncwogICBMREZMQUdTICAgICBsaW5rZXIgZmxhZ3MsIGUuZy4gLUw8bGliIGRpcj4gaWYgeW91IGhhdmUgbGlicmFyaWVzIGluIGEKQEAgLTE1NDQsNyArMTU2MSw3IEBACiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIiAmJiBleGl0ICRhY19zdGF0dXMKIGlmICRhY19pbml0X3ZlcnNpb247IHRoZW4KICAgY2F0IDw8XF9BQ0VPRgotcHl0aG9uIGNvbmZpZ3VyZSAzLjIKK3B5dGhvbiBjb25maWd1cmUgMy4zCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkKIAogQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtMjM4Myw3ICsyNDAwLDcgQEAKIFRoaXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlCiBydW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtlLgogCi1JdCB3YXMgY3JlYXRlZCBieSBweXRob24gJGFzX21lIDMuMiwgd2hpY2ggd2FzCitJdCB3YXMgY3JlYXRlZCBieSBweXRob24gJGFzX21lIDMuMywgd2hpY2ggd2FzCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICAkICQwICRACkBAIC0yNzMyLDkgKzI3NDksMjEyIEBACiAKIAogCisKK2lmIHRlc3QgIiRhYnNfc3JjZGlyIiAhPSAiJGFic19idWlsZGRpciI7IHRoZW4KKyAgICAjIElmIHdlJ3JlIGJ1aWxkaW5nIG91dC1vZi10cmVlLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZm9sbG93aW5nCisgICAgIyByZXNvdXJjZXMgZ2V0IHBpY2tlZCB1cCBiZWZvcmUgdGhlaXIgJHNyY2RpciBjb3VudGVycGFydHMuCisgICAgIyAgIE9iamVjdHMvIC0+IHR5cGVzbG90cy5pbmMKKyAgICAjICAgSW5jbHVkZS8gLT4gUHl0aG9uLWFzdC5oLCBncmFtaW5pdC5oCisgICAgIyAgIFB5dGhvbi8gIC0+IGltcG9ydGxpYi5oCisgICAgIyAoQSBzaWRlIGVmZmVjdCBvZiB0aGlzIGlzIHRoYXQgdGhlc2UgcmVzb3VyY2VzIHdpbGwgYXV0b21hdGljYWxseSBiZQorICAgICMgIHJlZ2VuZXJhdGVkIHdoZW4gYnVpbGRpbmcgb3V0LW9mLXRyZWUsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QKKyAgICAjICB0aGUgJHNyY2RpciBjb3VudGVycGFydCBpcyB1cC10by1kYXRlLiAgVGhpcyBpcyBhbiBhY2NlcHRhYmxlIHRyYWRlCisgICAgIyAgb2ZmLikKKyAgICBCQVNFQ1BQRkxBR1M9Ii1JT2JqZWN0cyAtSUluY2x1ZGUgLUlQeXRob24iCitlbHNlCisgICAgQkFTRUNQUEZMQUdTPSIiCitmaQorCisKKworCisKK2lmIHRlc3QgLWUgJHNyY2Rpci8uaGcvZGlyc3RhdGUKK3RoZW4KKyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiaGciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGhnOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19IQVNfSEcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkSEFTX0hHIjsgdGhlbgorICBhY19jdl9wcm9nX0hBU19IRz0iJEhBU19IRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wcm9nX0hBU19IRz0iZm91bmQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3Byb2dfSEFTX0hHIiAmJiBhY19jdl9wcm9nX0hBU19IRz0ibm90LWZvdW5kIgorZmkKK2ZpCitIQVNfSEc9JGFjX2N2X3Byb2dfSEFTX0hHCitpZiB0ZXN0IC1uICIkSEFTX0hHIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEhBU19IRyIgPiY1CiskYXNfZWNobyAiJEhBU19IRyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitlbHNlCitIQVNfSEc9bm8tcmVwb3NpdG9yeQorZmkKK2lmIHRlc3QgJEhBU19IRyA9IGZvdW5kCit0aGVuCisgICAgSEdWRVJTSU9OPSJoZyBpZCAtaSBcJChzcmNkaXIpIgorICAgIEhHVEFHPSJoZyBpZCAtdCBcJChzcmNkaXIpIgorICAgIEhHQlJBTkNIPSJoZyBpZCAtYiBcJChzcmNkaXIpIgorZWxzZQorICAgIEhHVkVSU0lPTj0iIgorICAgIEhHVEFHPSIiCisgICAgSEdCUkFOQ0g9IiIKK2ZpCisKKwogYWNfY29uZmlnX2hlYWRlcnM9IiRhY19jb25maWdfaGVhZGVycyBweWNvbmZpZy5oIgogCiAKK2FjX2F1eF9kaXI9Citmb3IgYWNfZGlyIGluICIkc3JjZGlyIiAiJHNyY2Rpci8uLiIgIiRzcmNkaXIvLi4vLi4iOyBkbworICBpZiB0ZXN0IC1mICIkYWNfZGlyL2luc3RhbGwtc2giOyB0aGVuCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC1zaCAtYyIKKyAgICBicmVhaworICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvaW5zdGFsbC5zaCI7IHRoZW4KKyAgICBhY19hdXhfZGlyPSRhY19kaXIKKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxsLnNoIC1jIgorICAgIGJyZWFrCisgIGVsaWYgdGVzdCAtZiAiJGFjX2Rpci9zaHRvb2wiOyB0aGVuCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvc2h0b29sIGluc3RhbGwgLWMiCisgICAgYnJlYWsKKyAgZmkKK2RvbmUKK2lmIHRlc3QgLXogIiRhY19hdXhfZGlyIjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGZpbmQgaW5zdGFsbC1zaCwgaW5zdGFsbC5zaCwgb3Igc2h0b29sIGluIFwiJHNyY2RpclwiIFwiJHNyY2Rpci8uLlwiIFwiJHNyY2Rpci8uLi8uLlwiIiAiJExJTkVOTyIgNQorZmkKKworIyBUaGVzZSB0aHJlZSB2YXJpYWJsZXMgYXJlIHVuZG9jdW1lbnRlZCBhbmQgdW5zdXBwb3J0ZWQsCisjIGFuZCBhcmUgaW50ZW5kZWQgdG8gYmUgd2l0aGRyYXduIGluIGEgZnV0dXJlIEF1dG9jb25mIHJlbGVhc2UuCisjIFRoZXkgY2FuIGNhdXNlIHNlcmlvdXMgcHJvYmxlbXMgaWYgYSBidWlsZGVyJ3Mgc291cmNlIHRyZWUgaXMgaW4gYSBkaXJlY3RvcnkKKyMgd2hvc2UgZnVsbCBuYW1lIGNvbnRhaW5zIHVudXN1YWwgY2hhcmFjdGVycy4KK2FjX2NvbmZpZ19ndWVzcz0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcyIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KK2FjX2NvbmZpZ19zdWI9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLgorYWNfY29uZmlndXJlPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlndXJlIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLgorCisKKyMgTWFrZSBzdXJlIHdlIGNhbiBydW4gY29uZmlnLnN1Yi4KKyRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgc3VuNCA+L2Rldi9udWxsIDI+JjEgfHwKKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBydW4gJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICIkTElORU5PIiA1CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfYnVpbGQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19idWlsZF9hbGlhcz0kYnVpbGRfYWxpYXMKK3Rlc3QgIngkYWNfYnVpbGRfYWxpYXMiID0geCAmJgorICBhY19idWlsZF9hbGlhcz1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiYAordGVzdCAieCRhY19idWlsZF9hbGlhcyIgPSB4ICYmCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZ3Vlc3MgYnVpbGQgdHlwZTsgeW91IG11c3Qgc3BlY2lmeSBvbmUiICIkTElORU5PIiA1CithY19jdl9idWlsZD1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAkYWNfYnVpbGRfYWxpYXNgIHx8CisgIGFzX2ZuX2Vycm9yICQ/ICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkYWNfYnVpbGRfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9idWlsZCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2J1aWxkIiA+JjY7IH0KK2Nhc2UgJGFjX2N2X2J1aWxkIGluCisqLSotKikgOzsKKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBidWlsZCIgIiRMSU5FTk8iIDU7OworZXNhYworYnVpbGQ9JGFjX2N2X2J1aWxkCithY19zYXZlX0lGUz0kSUZTOyBJRlM9Jy0nCitzZXQgeCAkYWNfY3ZfYnVpbGQKK3NoaWZ0CitidWlsZF9jcHU9JDEKK2J1aWxkX3ZlbmRvcj0kMgorc2hpZnQ7IHNoaWZ0CisjIFJlbWVtYmVyLCB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIElGUyBpcyB1c2VkIHRvIGNyZWF0ZSAkKiwKKyMgZXhjZXB0IHdpdGggb2xkIHNoZWxsczoKK2J1aWxkX29zPSQqCitJRlM9JGFjX3NhdmVfSUZTCitjYXNlICRidWlsZF9vcyBpbiAqXCAqKSBidWlsZF9vcz1gZWNobyAiJGJ1aWxkX29zIiB8IHNlZCAncy8gLy0vZydgOzsgZXNhYworCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2hvc3QrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICJ4JGhvc3RfYWxpYXMiID0geDsgdGhlbgorICBhY19jdl9ob3N0PSRhY19jdl9idWlsZAorZWxzZQorICBhY19jdl9ob3N0PWAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICRob3N0X2FsaWFzYCB8fAorICAgIGFzX2ZuX2Vycm9yICQ/ICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkaG9zdF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1CitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9ob3N0IiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfaG9zdCIgPiY2OyB9CitjYXNlICRhY19jdl9ob3N0IGluCisqLSotKikgOzsKKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBob3N0IiAiJExJTkVOTyIgNTs7Citlc2FjCitob3N0PSRhY19jdl9ob3N0CithY19zYXZlX0lGUz0kSUZTOyBJRlM9Jy0nCitzZXQgeCAkYWNfY3ZfaG9zdAorc2hpZnQKK2hvc3RfY3B1PSQxCitob3N0X3ZlbmRvcj0kMgorc2hpZnQ7IHNoaWZ0CisjIFJlbWVtYmVyLCB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIElGUyBpcyB1c2VkIHRvIGNyZWF0ZSAkKiwKKyMgZXhjZXB0IHdpdGggb2xkIHNoZWxsczoKK2hvc3Rfb3M9JCoKK0lGUz0kYWNfc2F2ZV9JRlMKK2Nhc2UgJGhvc3Rfb3MgaW4gKlwgKikgaG9zdF9vcz1gZWNobyAiJGhvc3Rfb3MiIHwgc2VkICdzLyAvLS9nJ2A7OyBlc2FjCisKKworCisKKworaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBweXRob24gaW50ZXJwcmV0ZXIgZm9yIGNyb3NzIGJ1aWxkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBweXRob24gaW50ZXJwcmV0ZXIgZm9yIGNyb3NzIGJ1aWxkLi4uICIgPiY2OyB9CisgICAgaWYgdGVzdCAteiAiJFBZVEhPTl9GT1JfQlVJTEQiOyB0aGVuCisgICAgICAgIGZvciBpbnRlcnAgaW4gcHl0aG9uJFBBQ0tBR0VfVkVSU0lPTiBweXRob24zIHB5dGhvbjsgZG8KKwkgICAgd2hpY2ggJGludGVycCA+L2Rldi9udWxsIDI+JjEgfHwgY29udGludWUKKwkgICAgaWYgJGludGVycCAtYyAnaW1wb3J0IHN5cztzeXMuZXhpdChub3Qgc3lzLnZlcnNpb25faW5mb1s6Ml0gPj0gKDMsMykpJzsgdGhlbgorCSAgICAgICAgYnJlYWsKKwkgICAgZmkKKyAgICAgICAgICAgIGludGVycD0KKwlkb25lCisgICAgICAgIGlmIHRlc3QgeCRpbnRlcnAgPSB4OyB0aGVuCisJICAgIGFzX2ZuX2Vycm9yICQ/ICJweXRob24kUEFDS0FHRV9WRVJTSU9OIGludGVycHJldGVyIG5vdCBmb3VuZCIgIiRMSU5FTk8iIDUKKwlmaQorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGludGVycCIgPiY1CiskYXNfZWNobyAiJGludGVycCIgPiY2OyB9CisJUFlUSE9OX0ZPUl9CVUlMRD0nX1BZVEhPTl9QUk9KRUNUX0JBU0U9JChhYnNfYnVpbGRkaXIpIF9QWVRIT05fSE9TVF9QTEFURk9STT0kKF9QWVRIT05fSE9TVF9QTEFURk9STSkgUFlUSE9OUEFUSD0kKHNoZWxsIHRlc3QgLWYgcHlidWlsZGRpci50eHQgJiYgZWNobyAkKGFic19idWlsZGRpcikvYGNhdCBweWJ1aWxkZGlyLnR4dGA6KSQoc3JjZGlyKS9MaWI6JChzcmNkaXIpL0xpYi8kKFBMQVRESVIpICckaW50ZXJwCisgICAgZmkKK2VsaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBtYXliZTsgdGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJDcm9zcyBjb21waWxpbmcgcmVxdWlyZWQgLS1ob3N0PUhPU1QtVFVQTEUgYW5kIC0tYnVpbGQ9QVJDSCIgIiRMSU5FTk8iIDUKK2Vsc2UKKyAgICBQWVRIT05fRk9SX0JVSUxEPScuLyQoQlVJTERQWVRIT04pIC1FJworZmkKKworCiAKIGlmIHRlc3QgIiRwcmVmaXgiICE9ICIvIjsgdGhlbgogICAgIHByZWZpeD1gZWNobyAiJHByZWZpeCIgfCBzZWQgLWUgJ3MvXC8kLy9nJ2AKQEAgLTI3NTAsNyArMjk3MCw3IEBACiBtdiBjb25mZGVmcy5oLm5ldyBjb25mZGVmcy5oCiAKIAotVkVSU0lPTj0zLjIKK1ZFUlNJT049My4zCiAKICMgVmVyc2lvbiBudW1iZXIgb2YgUHl0aG9uJ3Mgb3duIHNoYXJlZCBsaWJyYXJ5IGZpbGUuCiAKQEAgLTI4MDMsMTAgKzMwMjMsMTYgQEAKICAgZW5hYmxldmFsPSRlbmFibGVfdW5pdmVyc2Fsc2RrOwogCWNhc2UgJGVuYWJsZXZhbCBpbgogCXllcykKLQkJZW5hYmxldmFsPS9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsKLQkJaWYgdGVzdCAhIC1kICIke2VuYWJsZXZhbH0iCisJCSMgTG9jYXRlIHRoZSBiZXN0IHVzYWJsZSBTREssIHNlZSBNYWMvUkVBRE1FLnR4dCBmb3IgbW9yZQorCQkjIGluZm9ybWF0aW9uCisJCWVuYWJsZXZhbD0iYC91c3IvYmluL3hjb2RlYnVpbGQgLXZlcnNpb24gLXNkayBtYWNvc3ggUGF0aCAyPi9kZXYvbnVsbGAiCisJCWlmIHRlc3QgLXogIiR7ZW5hYmxldmFsfSIKIAkJdGhlbgotCQkJZW5hYmxldmFsPS8KKwkJCWVuYWJsZXZhbD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrCisJCQlpZiB0ZXN0ICEgLWQgIiR7ZW5hYmxldmFsfSIKKwkJCXRoZW4KKwkJCQllbmFibGV2YWw9LworCQkJZmkKIAkJZmkKIAkJOzsKIAllc2FjCkBAIC0yODQ0LDcgKzMwNzAsMjAgQEAKIAogCiAKKyMgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3ZSBwcmVmZXIgdG8gc2VsZWN0ICczMi1iaXQnIGlmIGF2YWlsYWJsZSwKKyMgb3RoZXJ3aXNlIHVzZSAnaW50ZWwnCiBVTklWRVJTQUxfQVJDSFM9IjMyLWJpdCIKK2lmIHRlc3QgImB1bmFtZSAtc2AiID0gIkRhcndpbiIKK3RoZW4KKwlpZiB0ZXN0IC1uICIke1VOSVZFUlNBTFNES30iCisJdGhlbgorCQlpZiB0ZXN0IC16ICJgL3Vzci9iaW4vZmlsZSAiJHtVTklWRVJTQUxTREt9L3Vzci9saWIvbGliU3lzdGVtLmR5bGliIiB8IGdyZXAgcHBjYCIKKwkJdGhlbgorCQkJVU5JVkVSU0FMX0FSQ0hTPSJpbnRlbCIKKwkJZmkKKwlmaQorZmkKKwogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtdW5pdmVyc2FsLWFyY2hzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtdW5pdmVyc2FsLWFyY2hzLi4uICIgPiY2OyB9CkBAIC0yODU4LDggKzMwOTcsOCBAQAogCiBlbHNlCiAKLSAJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IDMyLWJpdCIgPiY1Ci0kYXNfZWNobyAiMzItYml0IiA+JjY7IH0KKyAJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7VU5JVkVSU0FMX0FSQ0hTfSIgPiY1CiskYXNfZWNobyAiJHtVTklWRVJTQUxfQVJDSFN9IiA+JjY7IH0KIAogZmkKIApAQCAtMzAxMiw2ICszMjUxLDI1IEBACiAkYXNfZWNob19uICJjaGVja2luZyBNQUNIREVQLi4uICIgPiY2OyB9CiBpZiB0ZXN0IC16ICIkTUFDSERFUCIKIHRoZW4KKyAgICAjIGF2b2lkIHVzaW5nIHVuYW1lIGZvciBjcm9zcyBidWlsZHMKKyAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICAgICAgICMgYWNfc3lzX3N5c3RlbSBhbmQgYWNfc3lzX3JlbGVhc2UgYXJlIHVzZWQgZm9yIHNldHRpbmcKKyAgICAgICAjIGEgbG90IG9mIGRpZmZlcmVudCB0aGluZ3MgaW5jbHVkaW5nICdkZWZpbmVfeG9wZW5fc291cmNlJworICAgICAgICMgaW4gdGhlIGNhc2Ugc3RhdGVtZW50IGJlbG93LgorCWNhc2UgIiRob3N0IiBpbgorCSotKi1saW51eCopCisJCWFjX3N5c19zeXN0ZW09TGludXgKKwkJOzsKKwkqLSotY3lnd2luKikKKwkJYWNfc3lzX3N5c3RlbT1DeWd3aW4KKwkJOzsKKwkqKQorCQkjIGZvciBub3csIGxpbWl0IGNyb3NzIGJ1aWxkcyB0byBrbm93biBjb25maWd1cmF0aW9ucworCQlNQUNIREVQPSJ1bmtub3duIgorCQlhc19mbl9lcnJvciAkPyAiY3Jvc3MgYnVpbGQgbm90IHN1cHBvcnRlZCBmb3IgJGhvc3QiICIkTElORU5PIiA1CisJZXNhYworCWFjX3N5c19yZWxlYXNlPQorICAgIGVsc2UKIAlhY19zeXNfc3lzdGVtPWB1bmFtZSAtc2AKIAlpZiB0ZXN0ICIkYWNfc3lzX3N5c3RlbSIgPSAiQUlYIiBcCiAJLW8gIiRhY19zeXNfc3lzdGVtIiA9ICJVbml4V2FyZSIgLW8gIiRhY19zeXNfc3lzdGVtIiA9ICJPcGVuVU5JWCI7IHRoZW4KQEAgLTMwMTksMTkgKzMyNzcsNDMgQEAKIAllbHNlCiAJCWFjX3N5c19yZWxlYXNlPWB1bmFtZSAtcmAKIAlmaQotCWFjX21kX3N5c3RlbT1gZWNobyAkYWNfc3lzX3N5c3RlbSB8Ci0JCQkgICB0ciAtZCAnLyAnIHwgdHIgJ1tBLVpdJyAnW2Etel0nYAotCWFjX21kX3JlbGVhc2U9YGVjaG8gJGFjX3N5c19yZWxlYXNlIHwKLQkJCSAgIHRyIC1kICcvICcgfCBzZWQgJ3MvXltBLVpdXC4vLycgfCBzZWQgJ3MvXC4uKi8vJ2AKLQlNQUNIREVQPSIkYWNfbWRfc3lzdGVtJGFjX21kX3JlbGVhc2UiCisgICAgZmkKKyAgICBhY19tZF9zeXN0ZW09YGVjaG8gJGFjX3N5c19zeXN0ZW0gfAorCQkJdHIgLWQgJy8gJyB8IHRyICdbQS1aXScgJ1thLXpdJ2AKKyAgICBhY19tZF9yZWxlYXNlPWBlY2hvICRhY19zeXNfcmVsZWFzZSB8CisJCQl0ciAtZCAnLyAnIHwgc2VkICdzL15bQS1aXVwuLy8nIHwgc2VkICdzL1wuLiovLydgCisgICAgTUFDSERFUD0iJGFjX21kX3N5c3RlbSRhY19tZF9yZWxlYXNlIgogCi0JY2FzZSAkTUFDSERFUCBpbgotCWxpbnV4KikgTUFDSERFUD0ibGludXgyIjs7CisgICAgY2FzZSAkTUFDSERFUCBpbgorCWxpbnV4KikgTUFDSERFUD0ibGludXgiOzsKIAljeWd3aW4qKSBNQUNIREVQPSJjeWd3aW4iOzsKIAlkYXJ3aW4qKSBNQUNIREVQPSJkYXJ3aW4iOzsKLSAgICAgICAgaXJpeDY0NikgTUFDSERFUD0iaXJpeDYiOzsKKwlpcml4NjQ2KSBNQUNIREVQPSJpcml4NiI7OwogCScnKQlNQUNIREVQPSJ1bmtub3duIjs7CisgICAgZXNhYworZmkKKworCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorCWNhc2UgIiRob3N0IiBpbgorCSotKi1saW51eCopCisJCWNhc2UgIiRob3N0X2NwdSIgaW4KKwkJYXJtKikKKwkJCV9ob3N0X2NwdT1hcm0KKwkJCTs7CisJCSopCisJCQlfaG9zdF9jcHU9JGhvc3RfY3B1CisJCWVzYWMKKwkJOzsKKwkqLSotY3lnd2luKikKKwkJX2hvc3RfY3B1PQorCQk7OworCSopCisJCSMgZm9yIG5vdywgbGltaXQgY3Jvc3MgYnVpbGRzIHRvIGtub3duIGNvbmZpZ3VyYXRpb25zCisJCU1BQ0hERVA9InVua25vd24iCisJCWFzX2ZuX2Vycm9yICQ/ICJjcm9zcyBidWlsZCBub3Qgc3VwcG9ydGVkIGZvciAkaG9zdCIgIiRMSU5FTk8iIDUKIAllc2FjCisJX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSIkTUFDSERFUCR7X2hvc3RfY3B1OistJF9ob3N0X2NwdX0iCiBmaQogCiAjIFNvbWUgc3lzdGVtcyBjYW5ub3Qgc3RhbmQgX1hPUEVOX1NPVVJDRSBiZWluZyBkZWZpbmVkIGF0IGFsbDsgdGhleQpAQCAtMzEyMiw4ICszNDA0LDkgQEAKIAogaWYgdGVzdCAkZGVmaW5lX3hvcGVuX3NvdXJjZSA9IHllcwogdGhlbgorICAjIFgvT3BlbiA3LCBpbmNvcnBvcmF0aW5nIFBPU0lYLjEtMjAwOAogCi0kYXNfZWNobyAiI2RlZmluZSBfWE9QRU5fU09VUkNFIDYwMCIgPj5jb25mZGVmcy5oCiskYXNfZWNobyAiI2RlZmluZSBfWE9QRU5fU09VUkNFIDcwMCIgPj5jb25mZGVmcy5oCiAKIAogICAjIE9uIFRydTY0IFVuaXggNC4wRiwgZGVmaW5pbmcgX1hPUEVOX1NPVVJDRSBhbHNvIHJlcXVpcmVzCkBAIC0zMTM1LDggKzM0MTgsNyBAQAogCiAKIAotJGFzX2VjaG8gIiNkZWZpbmUgX1BPU0lYX0NfU09VUkNFIDIwMDExMkwiID4+Y29uZmRlZnMuaAotCiskYXNfZWNobyAiI2RlZmluZSBfUE9TSVhfQ19TT1VSQ0UgMjAwODA5TCIgPj5jb25mZGVmcy5oCiAKIGZpCiAKQEAgLTMxNjcsMTIgKzM0NDksNiBAQAogQ09ORklHVVJFX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0KIEVYUE9SVF9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9JyMnCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgbWFjaGluZSB0eXBlIGFzIHJlcG9ydGVkIGJ5IHVuYW1lIC1tIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIG1hY2hpbmUgdHlwZSBhcyByZXBvcnRlZCBieSB1bmFtZSAtbS4uLiAiID4mNjsgfQotYWNfc3lzX21hY2hpbmU9YHVuYW1lIC1tYAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19zeXNfbWFjaGluZSIgPiY1Ci0kYXNfZWNobyAiJGFjX3N5c19tYWNoaW5lIiA+JjY7IH0KLQogIyBjaGVja3MgZm9yIGFsdGVybmF0aXZlIHByb2dyYW1zCiAKICMgY29tcGlsZXIgZmxhZ3MgYXJlIGdlbmVyYXRlZCBpbiB0d28gc2V0cywgQkFTRUNGTEFHUyBhbmQgT1BULiAgT1BUIGlzIGp1c3QKQEAgLTMyMjIsNiArMzQ5OCw2NiBAQAogaWYgdGVzdCAteiAiJENGTEFHUyI7IHRoZW4KICAgICAgICAgQ0ZMQUdTPQogZmkKKworaWYgdGVzdCAiJGFjX3N5c19zeXN0ZW0iID0gIkRhcndpbiIKK3RoZW4KKwkjIENvbXBpbGVyIHNlbGVjdGlvbiBvbiBNYWNPU1ggaXMgbW9yZSBjb21wbGljYXRlZCB0aGFuCisJIyBBQ19QUk9HX0NDIGNhbiBoYW5kbGUsIHNlZSBNYWMvUkVBRE1FLnR4dCBmb3IgbW9yZQorCSMgaW5mb3JtYXRpb24KKwlpZiB0ZXN0IC16ICIke0NDfSIKKwl0aGVuCisJCWZvdW5kX2djYz0KKwkJZm91bmRfY2xhbmc9CisJCWFzX3NhdmVfSUZTPSRJRlM7IElGUz06CisJCWZvciBhc19kaXIgaW4gJFBBVEgKKwkJZG8KKwkJCUlGUz0kYXNfc2F2ZV9JRlMKKwkJCWlmIHRlc3QgLXggJGFzX2Rpci9nY2M7IHRoZW4KKwkJCQlpZiB0ZXN0IC16ICIke2ZvdW5kX2djY30iOyB0aGVuCisJCQkJCWZvdW5kX2djYz0kYXNfZGlyL2djYworCQkJCWZpCisJCQlmaQorCQkJaWYgdGVzdCAteCAkYXNfZGlyL2NsYW5nOyB0aGVuCisJCQkJaWYgdGVzdCAteiAiJHtmb3VuZF9jbGFuZ30iOyB0aGVuCisJCQkJCWZvdW5kX2NsYW5nPSRhc19kaXIvY2xhbmcKKwkJCQlmaQorCQkJZmkKKwkJZG9uZQorCQlJRlM9JGFzX3NhdmVfSUZTCisKKwkJaWYgdGVzdCAtbiAiJGZvdW5kX2djYyIgLWEgLW4gIiRmb3VuZF9jbGFuZyIKKwkJdGhlbgorCQkJaWYgdGVzdCAtbiAiYCIkZm91bmRfZ2NjIiAtLXZlcnNpb24gfCBncmVwIGxsdm0tZ2NjYCIKKwkJCXRoZW4KKwkJCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IERldGVjdGVkIGxsdm0tZ2NjLCBmYWxsaW5nIGJhY2sgdG8gY2xhbmciID4mNQorJGFzX2VjaG8gIiRhc19tZTogRGV0ZWN0ZWQgbGx2bS1nY2MsIGZhbGxpbmcgYmFjayB0byBjbGFuZyIgPiY2O30KKwkJCQlDQz0iJGZvdW5kX2NsYW5nIgorCQkJCUNYWD0iJGZvdW5kX2NsYW5nKysiCisJCQlmaQorCisKKwkJZWxpZiB0ZXN0IC16ICIkZm91bmRfZ2NjIiAtYSAtbiAiJGZvdW5kX2NsYW5nIgorCQl0aGVuCisJCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IE5vIEdDQyBmb3VuZCwgdXNlIENMQU5HIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IE5vIEdDQyBmb3VuZCwgdXNlIENMQU5HIiA+JjY7fQorCQkJQ0M9IiRmb3VuZF9jbGFuZyIKKwkJCUNYWD0iJGZvdW5kX2NsYW5nKysiCisKKwkJZWxpZiB0ZXN0IC16ICIkZm91bmRfZ2NjIiAtYSAteiAiJGZvdW5kX2NsYW5nIgorCQl0aGVuCisJCQlmb3VuZF9jbGFuZz1gL3Vzci9iaW4veGNydW4gLWZpbmQgY2xhbmcgMj4vZGV2L251bGxgCisJCQlpZiB0ZXN0IC1uICIke2ZvdW5kX2NsYW5nfSIKKwkJCXRoZW4KKwkJCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFVzaW5nIGNsYW5nIGZyb20gWGNvZGUuYXBwIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFVzaW5nIGNsYW5nIGZyb20gWGNvZGUuYXBwIiA+JjY7fQorCQkJCUNDPSIke2ZvdW5kX2NsYW5nfSIKKwkJCQlDWFg9ImAvdXNyL2Jpbi94Y3J1biAtZmluZCBjbGFuZysrYCIKKworCQkJIyBlbHNlOiB1c2UgZGVmYXVsdCBiZWhhdmlvdXIKKwkJCWZpCisJCWZpCisJZmkKK2ZpCiBhY19leHQ9YwogYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKIGFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKQEAgLTQwNDcsMTYgKzQzODMsNjAgQEAKIGlmIHRlc3QgLXogIiRDWFgiCiB0aGVuCiAgICAgICAgIGNhc2UgIiRDQyIgaW4KLSAgICAgICAgZ2NjKSAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImcrKyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisgICAgICAgIGdjYykgICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZysrIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWcrKzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkQ1hYIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0NYWD0iJENYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gbm90Zm91bmQKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3BhdGhfQ1hYPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIDs7Citlc2FjCitmaQorQ1hYPSRhY19jdl9wYXRoX0NYWAoraWYgdGVzdCAtbiAiJENYWCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDWFgiID4mNQorJGFzX2VjaG8gIiRDWFgiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wYXRoX0NYWCI7IHRoZW4KKyAgYWNfcHRfQ1hYPSRDWFgKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnKysiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IGcrKzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3BhdGhfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKK2lmICR7YWNfY3ZfcGF0aF9hY19wdF9DWFgrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQotICBjYXNlICRDWFggaW4KKyAgY2FzZSAkYWNfcHRfQ1hYIGluCiAgIFtcXC9dKiB8ID86W1xcL10qKQotICBhY19jdl9wYXRoX0NYWD0iJENYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIGFjX2N2X3BhdGhfYWNfcHRfQ1hYPSIkYWNfcHRfQ1hYIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KICAgOzsKICAgKikKICAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpAQCAtNDA2Niw3ICs0NDQ2LDcgQEAKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3BhdGhfQ1hYPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgIGFjX2N2X3BhdGhfYWNfcHRfQ1hYPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgogICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgIGJyZWFrIDIKICAgZmkKQEAgLTQwNzQsMjIgKzQ0NTQsMzYgQEAKICAgZG9uZQogSUZTPSRhc19zYXZlX0lGUwogCi0gIHRlc3QgLXogIiRhY19jdl9wYXRoX0NYWCIgJiYgYWNfY3ZfcGF0aF9DWFg9ImcrKyIKICAgOzsKIGVzYWMKIGZpCi1DWFg9JGFjX2N2X3BhdGhfQ1hYCi1pZiB0ZXN0IC1uICIkQ1hYIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENYWCIgPiY1Ci0kYXNfZWNobyAiJENYWCIgPiY2OyB9CithY19wdF9DWFg9JGFjX2N2X3BhdGhfYWNfcHRfQ1hYCitpZiB0ZXN0IC1uICIkYWNfcHRfQ1hYIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3B0X0NYWCIgPiY1CiskYXNfZWNobyAiJGFjX3B0X0NYWCIgPiY2OyB9CiBlbHNlCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiAkYXNfZWNobyAibm8iID4mNjsgfQogZmkKIAorICBpZiB0ZXN0ICJ4JGFjX3B0X0NYWCIgPSB4OyB0aGVuCisgICAgQ1hYPSJnKysiCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgQ1hYPSRhY19wdF9DWFgKKyAgZmkKK2Vsc2UKKyAgQ1hYPSIkYWNfY3ZfcGF0aF9DWFgiCitmaQogIDs7Ci0gICAgICAgIGNjKSAgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjKysiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15IGMrKzsgYWNfd29yZD0kMgorICAgICAgICBjYykgICAgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWMrKyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1jKys7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQogaWYgJHthY19jdl9wYXRoX0NYWCs6fSBmYWxzZTsgdGhlbiA6CkBAIC00MTE1LDcgKzQ1MDksNiBAQAogICBkb25lCiBJRlM9JGFzX3NhdmVfSUZTCiAKLSAgdGVzdCAteiAiJGFjX2N2X3BhdGhfQ1hYIiAmJiBhY19jdl9wYXRoX0NYWD0iYysrIgogICA7OwogZXNhYwogZmkKQEAgLTQxMjgsNiArNDUyMSwxNjEgQEAKICRhc19lY2hvICJubyIgPiY2OyB9CiBmaQogCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9DWFgiOyB0aGVuCisgIGFjX3B0X0NYWD0kQ1hYCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYysrIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBjKys7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX2FjX3B0X0NYWCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJGFjX3B0X0NYWCBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9hY19wdF9DWFg9IiRhY19wdF9DWFgiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluIG5vdGZvdW5kCitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wYXRoX2FjX3B0X0NYWD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICA7OworZXNhYworZmkKK2FjX3B0X0NYWD0kYWNfY3ZfcGF0aF9hY19wdF9DWFgKK2lmIHRlc3QgLW4gIiRhY19wdF9DWFgiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcHRfQ1hYIiA+JjUKKyRhc19lY2hvICIkYWNfcHRfQ1hYIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfcHRfQ1hYIiA9IHg7IHRoZW4KKyAgICBDWFg9ImMrKyIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBDWFg9JGFjX3B0X0NYWAorICBmaQorZWxzZQorICBDWFg9IiRhY19jdl9wYXRoX0NYWCIKK2ZpCisgOzsKKyAgICAgICAgY2xhbmd8Ki9jbGFuZykgICAgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWNsYW5nKysiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9Y2xhbmcrKzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkQ1hYIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0NYWD0iJENYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gbm90Zm91bmQKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3BhdGhfQ1hYPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIDs7Citlc2FjCitmaQorQ1hYPSRhY19jdl9wYXRoX0NYWAoraWYgdGVzdCAtbiAiJENYWCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDWFgiID4mNQorJGFzX2VjaG8gIiRDWFgiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wYXRoX0NYWCI7IHRoZW4KKyAgYWNfcHRfQ1hYPSRDWFgKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjbGFuZysrIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBjbGFuZysrOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9hY19wdF9DWFgrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRhY19wdF9DWFggaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfYWNfcHRfQ1hYPSIkYWNfcHRfQ1hYIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiBub3Rmb3VuZAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcGF0aF9hY19wdF9DWFg9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgOzsKK2VzYWMKK2ZpCithY19wdF9DWFg9JGFjX2N2X3BhdGhfYWNfcHRfQ1hYCitpZiB0ZXN0IC1uICIkYWNfcHRfQ1hYIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3B0X0NYWCIgPiY1CiskYXNfZWNobyAiJGFjX3B0X0NYWCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICBpZiB0ZXN0ICJ4JGFjX3B0X0NYWCIgPSB4OyB0aGVuCisgICAgQ1hYPSJjbGFuZysrIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIENYWD0kYWNfcHRfQ1hYCisgIGZpCitlbHNlCisgIENYWD0iJGFjX2N2X3BhdGhfQ1hYIgorZmkKICA7OwogICAgICAgICBlc2FjCiAJaWYgdGVzdCAiJENYWCIgPSAibm90Zm91bmQiCkBAIC00MTM3LDEwICs0Njg1LDExIEBACiBmaQogaWYgdGVzdCAteiAiJENYWCIKIHRoZW4KLQlmb3IgYWNfcHJvZyBpbiAkQ0NDIGMrKyBnKysgZ2NjIENDIGN4eCBjYysrIGNsCi1kbwotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorCWlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgZm9yIGFjX3Byb2cgaW4gJENDQyBjKysgZysrIGdjYyBDQyBjeHggY2MrKyBjbAorICBkbworICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KIGlmICR7YWNfY3ZfcHJvZ19DWFgrOn0gZmFsc2U7IHRoZW4gOgpAQCAtNDE1Niw3ICs0NzA1LDcgQEAKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3Byb2dfQ1hYPSIkYWNfcHJvZyIKKyAgICBhY19jdl9wcm9nX0NYWD0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgogICBmaQpAQCAtNDE3Niw5ICs0NzI1LDY1IEBACiBmaQogCiAKLSAgdGVzdCAtbiAiJENYWCIgJiYgYnJlYWsKKyAgICB0ZXN0IC1uICIkQ1hYIiAmJiBicmVhaworICBkb25lCitmaQoraWYgdGVzdCAteiAiJENYWCI7IHRoZW4KKyAgYWNfY3RfQ1hYPSRDWFgKKyAgZm9yIGFjX3Byb2cgaW4gJENDQyBjKysgZysrIGdjYyBDQyBjeHggY2MrKyBjbAorZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X0NYWCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9DWFgiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfQ1hYPSIkYWNfY3RfQ1hYIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfQ1hYPSIkYWNfcHJvZyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCiBkb25lCi10ZXN0IC1uICIkQ1hYIiB8fCBDWFg9Im5vdGZvdW5kIgorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfQ1hYPSRhY19jdl9wcm9nX2FjX2N0X0NYWAoraWYgdGVzdCAtbiAiJGFjX2N0X0NYWCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9DWFgiID4mNQorJGFzX2VjaG8gIiRhY19jdF9DWFgiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICB0ZXN0IC1uICIkYWNfY3RfQ1hYIiAmJiBicmVhaworZG9uZQorCisgIGlmIHRlc3QgIngkYWNfY3RfQ1hYIiA9IHg7IHRoZW4KKyAgICBDWFg9Im5vdGZvdW5kIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIENYWD0kYWNfY3RfQ1hYCisgIGZpCitmaQogCiAJaWYgdGVzdCAiJENYWCIgPSAibm90Zm91bmQiCiAJdGhlbgpAQCAtNDkyMSwzNyArNTUyNiwzNSBAQAogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0tZW5hYmxlLXByb2ZpbGluZy4uLiAiID4mNjsgfQogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXByb2ZpbGluZyB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9wcm9maWxpbmcrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV9wcm9maWxpbmc7IGFjX3NhdmVfY2M9IiRDQyIKLSBDQz0iJENDIC1wZyIKLSBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6Ci0gIGFjX2VuYWJsZV9wcm9maWxpbmc9Im5vIgotZWxzZQorICBlbmFibGV2YWw9JGVuYWJsZV9wcm9maWxpbmc7CitmaQorCitpZiB0ZXN0ICJ4JGVuYWJsZV9wcm9maWxpbmciID0geHllczsgdGhlbgorICBhY19zYXZlX2NjPSIkQ0MiCisgIENDPSIkKENDKSAtcGciCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIGludCBtYWluKCkgeyByZXR1cm4gMDsgfQogX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfZW5hYmxlX3Byb2ZpbGluZz0ieWVzIgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorCiBlbHNlCi0gIGFjX2VuYWJsZV9wcm9maWxpbmc9Im5vIgorICBlbmFibGVfcHJvZmlsaW5nPW5vCiBmaQotcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAotICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgQ0M9IiRhY19zYXZlX2NjIgorZWxzZQorICBlbmFibGVfcHJvZmlsaW5nPW5vCiBmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRlbmFibGVfcHJvZmlsaW5nIiA+JjUKKyRhc19lY2hvICIkZW5hYmxlX3Byb2ZpbGluZyIgPiY2OyB9CiAKLSBDQz0iJGFjX3NhdmVfY2MiCitpZiB0ZXN0ICJ4JGVuYWJsZV9wcm9maWxpbmciID0geHllczsgdGhlbgorICBCQVNFQ0ZMQUdTPSItcGcgJEJBU0VDRkxBR1MiCisgIExERkxBR1M9Ii1wZyAkTERGTEFHUyIKIGZpCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfZW5hYmxlX3Byb2ZpbGluZyIgPiY1Ci0kYXNfZWNobyAiJGFjX2VuYWJsZV9wcm9maWxpbmciID4mNjsgfQotCi1jYXNlICIkYWNfZW5hYmxlX3Byb2ZpbGluZyIgaW4KLSAgICAieWVzIikKLQlCQVNFQ0ZMQUdTPSItcGcgJEJBU0VDRkxBR1MiCi0JTERGTEFHUz0iLXBnICRMREZMQUdTIgotICAgIDs7Ci1lc2FjCi0KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgTERMSUJSQVJZIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIExETElCUkFSWS4uLiAiID4mNjsgfQogCkBAIC01MDE3LDExICs1NjIwLDYgQEAKIAkgIEJMRExJQlJBUlk9Jy1XbCwrYiwkKExJQkRJUikgLUwuIC1scHl0aG9uJChMRFZFUlNJT04pJwogCSAgUlVOU0hBUkVEPVNITElCX1BBVEg9YHB3ZGA6JHtTSExJQl9QQVRIfQogCSAgOzsKLSAgICBPU0YqKQotCSAgTERMSUJSQVJZPSdsaWJweXRob24kKExEVkVSU0lPTikuc28nCi0JICBCTERMSUJSQVJZPSctcnBhdGggJChMSUJESVIpIC1MLiAtbHB5dGhvbiQoTERWRVJTSU9OKScKLQkgIFJVTlNIQVJFRD1MRF9MSUJSQVJZX1BBVEg9YHB3ZGA6JHtMRF9MSUJSQVJZX1BBVEh9Ci0JICA7OwogICAgIERhcndpbiopCiAgICAgCUxETElCUkFSWT0nbGlicHl0aG9uJChMRFZFUlNJT04pLmR5bGliJwogCUJMRExJQlJBUlk9Jy1MLiAtbHB5dGhvbiQoTERWRVJTSU9OKScKQEAgLTUwNDIsNiArNTY0MCwxMCBAQAogICBlc2FjCiBmaQogCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorCVJVTlNIQVJFRD0KK2ZpCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTERMSUJSQVJZIiA+JjUKICRhc19lY2hvICIkTERMSUJSQVJZIiA+JjY7IH0KIApAQCAtNTEzOCwxMCArNTc0MCwxMSBAQAogZmkKIAogCi1mb3IgYWNfcHJvZyBpbiBhciBhYWwKLWRvCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCitpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgIGZvciBhY19wcm9nIGluIGFyIGFhbAorICBkbworICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6CkBAIC01MTU3LDcgKzU3NjAsNyBAQAogICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0gICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Byb2ciCisgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgogICBmaQpAQCAtNTE3Nyw5ICs1NzgwLDY1IEBACiBmaQogCiAKLSAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKyAgZG9uZQorZmkKK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KKyAgYWNfY3RfQVI9JEFSCisgIGZvciBhY19wcm9nIGluIGFyIGFhbAorZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfY3RfQVIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQogZG9uZQotdGVzdCAtbiAiJEFSIiB8fCBBUj0iYXIiCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCithY19jdF9BUj0kYWNfY3ZfcHJvZ19hY19jdF9BUgoraWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0FSIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfQVIiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCitkb25lCisKKyAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCisgICAgQVI9ImFyIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIEFSPSRhY19jdF9BUgorICBmaQorZmkKIAogCiAjIHR3ZWFrIEFSRkxBR1Mgb25seSBpZiB0aGUgdXNlciBkaWRuJ3Qgc2V0IGl0IG9uIHRoZSBjb21tYW5kIGxpbmUKQEAgLTUxODksMTYgKzU4NDgsMTggQEAKICAgICAgICAgQVJGTEFHUz0icmMiCiBmaQogCi0KLSMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAic3ZudmVyc2lvbiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgc3ZudmVyc2lvbjsgYWNfd29yZD0kMgoraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICBmb3IgYWNfcHJvZyBpbiByZWFkZWxmCisgIGRvCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wcm9nX1NWTlZFUlNJT04rOn0gZmFsc2U7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX1JFQURFTEYrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQotICBpZiB0ZXN0IC1uICIkU1ZOVkVSU0lPTiI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19TVk5WRVJTSU9OPSIkU1ZOVkVSU0lPTiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGlmIHRlc3QgLW4gIiRSRUFERUxGIjsgdGhlbgorICBhY19jdl9wcm9nX1JFQURFTEY9IiRSRUFERUxGIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KIGVsc2UKIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKIGZvciBhc19kaXIgaW4gJFBBVEgKQEAgLTUyMDcsNyArNTg2OCw3IEBACiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19jdl9wcm9nX1NWTlZFUlNJT049ImZvdW5kIgorICAgIGFjX2N2X3Byb2dfUkVBREVMRj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgogICBmaQpAQCAtNTIxNSw1NyArNTg3NiwzNCBAQAogICBkb25lCiBJRlM9JGFzX3NhdmVfSUZTCiAKLSAgdGVzdCAteiAiJGFjX2N2X3Byb2dfU1ZOVkVSU0lPTiIgJiYgYWNfY3ZfcHJvZ19TVk5WRVJTSU9OPSJub3QtZm91bmQiCiBmaQogZmkKLVNWTlZFUlNJT049JGFjX2N2X3Byb2dfU1ZOVkVSU0lPTgotaWYgdGVzdCAtbiAiJFNWTlZFUlNJT04iOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkU1ZOVkVSU0lPTiIgPiY1Ci0kYXNfZWNobyAiJFNWTlZFUlNJT04iID4mNjsgfQorUkVBREVMRj0kYWNfY3ZfcHJvZ19SRUFERUxGCitpZiB0ZXN0IC1uICIkUkVBREVMRiI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRSRUFERUxGIiA+JjUKKyRhc19lY2hvICIkUkVBREVMRiIgPiY2OyB9CiBlbHNlCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiAkYXNfZWNobyAibm8iID4mNjsgfQogZmkKIAogCi1pZiB0ZXN0ICRTVk5WRVJTSU9OID0gZm91bmQKLXRoZW4KLQlTVk5WRVJTSU9OPSJzdm52ZXJzaW9uIFwkKHNyY2RpcikiCi1lbHNlCi0JU1ZOVkVSU0lPTj0iZWNobyBVbnZlcnNpb25lZCBkaXJlY3RvcnkiCisgICAgdGVzdCAtbiAiJFJFQURFTEYiICYmIGJyZWFrCisgIGRvbmUKIGZpCi0KLQotaWYgdGVzdCAiJGFic19zcmNkaXIiICE9ICIkYWJzX2J1aWxkZGlyIjsgdGhlbgotICAgICMgSWYgd2UncmUgYnVpbGRpbmcgb3V0LW9mLXRyZWUsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmb2xsb3dpbmcKLSAgICAjIHJlc291cmNlcyBnZXQgcGlja2VkIHVwIGJlZm9yZSB0aGVpciAkc3JjZGlyIGNvdW50ZXJwYXJ0cy4KLSAgICAjICAgT2JqZWN0cy8gLT4gdHlwZXNsb3RzLmluYwotICAgICMgICBJbmNsdWRlLyAtPiBQeXRob24tYXN0LmgsIGdyYW1pbml0LmgKLSAgICAjICAgUHl0aG9uLyAgLT4gaW1wb3J0bGliLmgKLSAgICAjIChBIHNpZGUgZWZmZWN0IG9mIHRoaXMgaXMgdGhhdCB0aGVzZSByZXNvdXJjZXMgd2lsbCBhdXRvbWF0aWNhbGx5IGJlCi0gICAgIyAgcmVnZW5lcmF0ZWQgd2hlbiBidWlsZGluZyBvdXQtb2YtdHJlZSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdAotICAgICMgIHRoZSAkc3JjZGlyIGNvdW50ZXJwYXJ0IGlzIHVwLXRvLWRhdGUuICBUaGlzIGlzIGFuIGFjY2VwdGFibGUgdHJhZGUKLSAgICAjICBvZmYuKQotICAgIEJBU0VDUFBGTEFHUz0iLUlPYmplY3RzIC1JSW5jbHVkZSAtSVB5dGhvbiIKLWVsc2UKLSAgICBCQVNFQ1BQRkxBR1M9IiIKLWZpCi0KLQotCi0KLQotaWYgdGVzdCAtZSAkc3JjZGlyLy5oZy9kaXJzdGF0ZQotdGhlbgotIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJoZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgaGc7IGFjX3dvcmQ9JDIKK2lmIHRlc3QgLXogIiRSRUFERUxGIjsgdGhlbgorICBhY19jdF9SRUFERUxGPSRSRUFERUxGCisgIGZvciBhY19wcm9nIGluIHJlYWRlbGYKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcHJvZ19IQVNfSEcrOn0gZmFsc2U7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X1JFQURFTEYrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQotICBpZiB0ZXN0IC1uICIkSEFTX0hHIjsgdGhlbgotICBhY19jdl9wcm9nX0hBU19IRz0iJEhBU19IRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGlmIHRlc3QgLW4gIiRhY19jdF9SRUFERUxGIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X1JFQURFTEY9IiRhY19jdF9SRUFERUxGIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KIGVsc2UKIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKIGZvciBhc19kaXIgaW4gJFBBVEgKQEAgLTUyNzQsNyArNTkxMiw3IEBACiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19jdl9wcm9nX0hBU19IRz0iZm91bmQiCisgICAgYWNfY3ZfcHJvZ19hY19jdF9SRUFERUxGPSIkYWNfcHJvZyIKICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCiAgIGZpCkBAIC01MjgyLDM0ICs1OTIwLDQ0IEBACiAgIGRvbmUKIElGUz0kYXNfc2F2ZV9JRlMKIAotICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19IQVNfSEciICYmIGFjX2N2X3Byb2dfSEFTX0hHPSJub3QtZm91bmQiCiBmaQogZmkKLUhBU19IRz0kYWNfY3ZfcHJvZ19IQVNfSEcKLWlmIHRlc3QgLW4gIiRIQVNfSEciOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkSEFTX0hHIiA+JjUKLSRhc19lY2hvICIkSEFTX0hHIiA+JjY7IH0KK2FjX2N0X1JFQURFTEY9JGFjX2N2X3Byb2dfYWNfY3RfUkVBREVMRgoraWYgdGVzdCAtbiAiJGFjX2N0X1JFQURFTEYiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfUkVBREVMRiIgPiY1CiskYXNfZWNobyAiJGFjX2N0X1JFQURFTEYiID4mNjsgfQogZWxzZQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQogJGFzX2VjaG8gIm5vIiA+JjY7IH0KIGZpCiAKIAotZWxzZQotSEFTX0hHPW5vLXJlcG9zaXRvcnkKKyAgdGVzdCAtbiAiJGFjX2N0X1JFQURFTEYiICYmIGJyZWFrCitkb25lCisKKyAgaWYgdGVzdCAieCRhY19jdF9SRUFERUxGIiA9IHg7IHRoZW4KKyAgICBSRUFERUxGPSI6IgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIFJFQURFTEY9JGFjX2N0X1JFQURFTEYKKyAgZmkKIGZpCi1pZiB0ZXN0ICRIQVNfSEcgPSBmb3VuZAotdGhlbgotICAgIEhHVkVSU0lPTj0iaGcgaWQgLWkgXCQoc3JjZGlyKSIKLSAgICBIR1RBRz0iaGcgaWQgLXQgXCQoc3JjZGlyKSIKLSAgICBIR0JSQU5DSD0iaGcgaWQgLWIgXCQoc3JjZGlyKSIKLWVsc2UKLSAgICBIR1ZFUlNJT049IiIKLSAgICBIR1RBRz0iIgotICAgIEhHQlJBTkNIPSIiCisKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgICAgY2FzZSAiJFJFQURFTEYiIGluCisJcmVhZGVsZnw6KQorCWFzX2ZuX2Vycm9yICQ/ICJyZWFkZWxmIGZvciB0aGUgaG9zdCBpcyByZXF1aXJlZCBmb3IgY3Jvc3MgYnVpbGRzIiAiJExJTkVOTyIgNQorCTs7CisgICAgZXNhYwogZmkKIAogCisKIGZvciBhY19wcm9nIGluIHB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gcHl0aG9uMyBweXRob24KIGRvCiAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgpAQCAtNTM2OCwzNSArNjAxNiw2IEBACiAJCUlOU1RBTEw9IiR7c3JjZGlyfS9pbnN0YWxsLXNoIC1jIgogCWZpCiBlc2FjCi1hY19hdXhfZGlyPQotZm9yIGFjX2RpciBpbiAiJHNyY2RpciIgIiRzcmNkaXIvLi4iICIkc3JjZGlyLy4uLy4uIjsgZG8KLSAgaWYgdGVzdCAtZiAiJGFjX2Rpci9pbnN0YWxsLXNoIjsgdGhlbgotICAgIGFjX2F1eF9kaXI9JGFjX2RpcgotICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwtc2ggLWMiCi0gICAgYnJlYWsKLSAgZWxpZiB0ZXN0IC1mICIkYWNfZGlyL2luc3RhbGwuc2giOyB0aGVuCi0gICAgYWNfYXV4X2Rpcj0kYWNfZGlyCi0gICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC5zaCAtYyIKLSAgICBicmVhawotICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvc2h0b29sIjsgdGhlbgotICAgIGFjX2F1eF9kaXI9JGFjX2RpcgotICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL3NodG9vbCBpbnN0YWxsIC1jIgotICAgIGJyZWFrCi0gIGZpCi1kb25lCi1pZiB0ZXN0IC16ICIkYWNfYXV4X2RpciI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBmaW5kIGluc3RhbGwtc2gsIGluc3RhbGwuc2gsIG9yIHNodG9vbCBpbiBcIiRzcmNkaXJcIiBcIiRzcmNkaXIvLi5cIiBcIiRzcmNkaXIvLi4vLi5cIiIgIiRMSU5FTk8iIDUKLWZpCi0KLSMgVGhlc2UgdGhyZWUgdmFyaWFibGVzIGFyZSB1bmRvY3VtZW50ZWQgYW5kIHVuc3VwcG9ydGVkLAotIyBhbmQgYXJlIGludGVuZGVkIHRvIGJlIHdpdGhkcmF3biBpbiBhIGZ1dHVyZSBBdXRvY29uZiByZWxlYXNlLgotIyBUaGV5IGNhbiBjYXVzZSBzZXJpb3VzIHByb2JsZW1zIGlmIGEgYnVpbGRlcidzIHNvdXJjZSB0cmVlIGlzIGluIGEgZGlyZWN0b3J5Ci0jIHdob3NlIGZ1bGwgbmFtZSBjb250YWlucyB1bnVzdWFsIGNoYXJhY3RlcnMuCi1hY19jb25maWdfZ3Vlc3M9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIuCi1hY19jb25maWdfc3ViPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KLWFjX2NvbmZpZ3VyZT0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZ3VyZSIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KLQotCiAjIEZpbmQgYSBnb29kIGluc3RhbGwgcHJvZ3JhbS4gIFdlIHByZWZlciBhIEMgcHJvZ3JhbSAoZmFzdGVyKSwKICMgc28gb25lIHNjcmlwdCBpcyBhcyBnb29kIGFzIGFub3RoZXIuICBCdXQgYXZvaWQgdGhlIGJyb2tlbiBvcgogIyBpbmNvbXBhdGlibGUgdmVyc2lvbnM6CkBAIC01NzEwLDEwICs2MzI5LDUzIEBACiAgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtZm5vLXN0cmljdC1hbGlhc2luZyIKICAgICBmaQogCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvZmYgJENDIHVudXNlZCByZXN1bHQgd2FybmluZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvZmYgJENDIHVudXNlZCByZXN1bHQgd2FybmluZy4uLiAiID4mNjsgfQorICAgICBhY19zYXZlX2NjPSIkQ0MiCisgICAgIENDPSIkQ0MgLVd1bnVzZWQtcmVzdWx0IC1XZXJyb3IiCisgICAgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorICAgICBpZiAke2FjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CisKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nPXllcworCitlbHNlCisKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmc9bm8KKworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKKworICAgICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmciID4mNQorJGFzX2VjaG8gIiRhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZyIgPiY2OyB9CisKKyAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZyA9IHllcworICAgIHRoZW4KKyAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1Xbm8tdW51c2VkLXJlc3VsdCIKKyAgICBmaQorCiAgICAgIyBpZiB1c2luZyBnY2Mgb24gYWxwaGEsIHVzZSAtbWllZWUgdG8gZ2V0IChuZWFyKSBmdWxsIElFRUUgNzU0CiAgICAgIyBzdXBwb3J0LiAgV2l0aG91dCB0aGlzLCB0cmVhdG1lbnQgb2Ygc3Vibm9ybWFscyBkb2Vzbid0IGZvbGxvdwogICAgICMgdGhlIHN0YW5kYXJkLgotICAgIGNhc2UgJGFjX3N5c19tYWNoaW5lIGluCisgICAgY2FzZSAkaG9zdCBpbgogICAgICAgICAgYWxwaGEqKQogICAgICAgICAgICAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1taWVlZSIKICAgICAgICAgICAgICAgICA7OwpAQCAtNTc4OSw3ICs2NDUxLDkgQEAKIAkgICAgIyBDYWxjdWxhdGUgdGhlIHJpZ2h0IGRlcGxveW1lbnQgdGFyZ2V0IGZvciB0aGlzIGJ1aWxkLgogCSAgICAjCiAJICAgIGN1cl90YXJnZXQ9YHN3X3ZlcnMgLXByb2R1Y3RWZXJzaW9uIHwgc2VkICdzL1woMTBcLlswLTldKlwpLiovXDEvJ2AKLQkgICAgaWYgdGVzdCAke2N1cl90YXJnZXR9ICc+JyAxMC4yOyB0aGVuCisJICAgIGlmIHRlc3QgJHtjdXJfdGFyZ2V0fSAnPicgMTAuMiAmJiBcCisJICAgICAgIHRlc3QgJHtjdXJfdGFyZ2V0fSAnPCcgMTAuNgorCSAgICB0aGVuCiAJCSAgICBjdXJfdGFyZ2V0PTEwLjMKIAkJICAgIGlmIHRlc3QgJHtlbmFibGVfdW5pdmVyc2Fsc2RrfTsgdGhlbgogCQkJICAgIGlmIHRlc3QgIiR7VU5JVkVSU0FMX0FSQ0hTfSIgPSAiYWxsIjsgdGhlbgpAQCAtNTgyOCw5ICs2NDkyLDYgQEAKIAkgICAgRVhQT1JUX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0nJwogCiAJICAgIDs7Ci0JT1NGKikKLQkgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLW1pZWVlIgotCSAgICA7OwogICAgIGVzYWMKICAgICA7OwogCkBAIC01ODM5LDkgKzY1MDAsNiBAQAogICAgIE9wZW5VTklYKnxVbml4V2FyZSopCiAJQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLUsgcGVudGl1bSxob3N0LGlubGluZSxsb29wX3Vucm9sbCxhbGxvY2EgIgogCTs7Ci0gICAgT1NGKikKLQlCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtaWVlZSAtc3RkIgotICAgIAk7OwogICAgIFNDT19TViopCiAJQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLWJlbGYgLUtpNDg2IC1EU0NPNSIKIAk7OwpAQCAtNTkxNCw2ICs2NTcyLDcgQEAKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAKIHZvaWQqIHJvdXRpbmUodm9pZCogcCl7cmV0dXJuIE5VTEw7fQpAQCAtNTk2OSw2ICs2NjI4LDcgQEAKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAKIHZvaWQqIHJvdXRpbmUodm9pZCogcCl7cmV0dXJuIE5VTEw7fQpAQCAtNjAxOCw2ICs2Njc4LDcgQEAKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAKIHZvaWQqIHJvdXRpbmUodm9pZCogcCl7cmV0dXJuIE5VTEw7fQpAQCAtNjA2Nyw2ICs2NzI4LDcgQEAKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAKIHZvaWQqIHJvdXRpbmUodm9pZCogcCl7cmV0dXJuIE5VTEw7fQpAQCAtNjI1MSwxNyArNjkxMywyMCBAQAogCiBmaQogCithY19zYXZlX2NwcGZsYWdzPSIkQ1BQRkxBR1MiCitDUFBGTEFHUz0iJENQUEZMQUdTIC1JL3Vzci9pbmNsdWRlL25jdXJzZXN3IgogZm9yIGFjX2hlYWRlciBpbiBhc20vdHlwZXMuaCBjb25pby5oIGN1cnNlcy5oIGRpcmVjdC5oIGRsZmNuLmggZXJybm8uaCBcCiBmY250bC5oIGdycC5oIFwKLWllZWVmcC5oIGlvLmggbGFuZ2luZm8uaCBsaWJpbnRsLmggbmN1cnNlcy5oIHBvbGwuaCBwcm9jZXNzLmggcHRocmVhZC5oIFwKLXNoYWRvdy5oIHNpZ25hbC5oIHN0ZGludC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggdGhyZWFkLmggXAoraWVlZWZwLmggaW8uaCBsYW5naW5mby5oIGxpYmludGwuaCBuY3Vyc2VzLmggcHJvY2Vzcy5oIHB0aHJlYWQuaCBcCitzY2hlZC5oIHNoYWRvdy5oIHNpZ25hbC5oIHN0ZGludC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggXAogdW5pc3RkLmggdXRpbWUuaCBcCi1zeXMvYXVkaW9pby5oIHN5cy9ic2R0dHkuaCBzeXMvZXBvbGwuaCBzeXMvZXZlbnQuaCBzeXMvZmlsZS5oIHN5cy9sb2FkYXZnLmggXAotc3lzL2xvY2suaCBzeXMvbWtkZXYuaCBzeXMvbW9kZW0uaCBcCi1zeXMvcGFyYW0uaCBzeXMvcG9sbC5oIHN5cy9zZWxlY3QuaCBzeXMvc29ja2V0Lmggc3lzL3N0YXR2ZnMuaCBzeXMvc3RhdC5oIFwKLXN5cy9zeXNjYWxsLmggc3lzL3Rlcm1pby5oIHN5cy90aW1lLmggXAotc3lzL3RpbWVzLmggc3lzL3R5cGVzLmggc3lzL3VuLmggc3lzL3V0c25hbWUuaCBzeXMvd2FpdC5oIHB0eS5oIGxpYnV0aWwuaCBcCi1zeXMvcmVzb3VyY2UuaCBuZXRwYWNrZXQvcGFja2V0Lmggc3lzZXhpdHMuaCBibHVldG9vdGguaCBcCitwb2xsLmggc3lzL2RldnBvbGwuaCBzeXMvZXBvbGwuaCBzeXMvcG9sbC5oIFwKK3N5cy9hdWRpb2lvLmggc3lzL3hhdHRyLmggc3lzL2JzZHR0eS5oIHN5cy9ldmVudC5oIHN5cy9maWxlLmggc3lzL2lvY3RsLmggXAorc3lzL2tlcm5fY29udHJvbC5oIHN5cy9sb2FkYXZnLmggc3lzL2xvY2suaCBzeXMvbWtkZXYuaCBzeXMvbW9kZW0uaCBcCitzeXMvcGFyYW0uaCBzeXMvc2VsZWN0Lmggc3lzL3NlbmRmaWxlLmggc3lzL3NvY2tldC5oIHN5cy9zdGF0dmZzLmggXAorc3lzL3N0YXQuaCBzeXMvc3lzY2FsbC5oIHN5cy9zeXNfZG9tYWluLmggc3lzL3Rlcm1pby5oIHN5cy90aW1lLmggXAorc3lzL3RpbWVzLmggc3lzL3R5cGVzLmggc3lzL3Vpby5oIHN5cy91bi5oIHN5cy91dHNuYW1lLmggc3lzL3dhaXQuaCBwdHkuaCBcCitsaWJ1dGlsLmggc3lzL3Jlc291cmNlLmggbmV0cGFja2V0L3BhY2tldC5oIHN5c2V4aXRzLmggYmx1ZXRvb3RoLmggXAogYmx1ZXRvb3RoL2JsdWV0b290aC5oIGxpbnV4L3RpcGMuaCBzcGF3bi5oIHV0aWwuaAogZG8gOgogICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCkBAIC02Mjc1LDYgKzY5NDAsNyBAQAogCiBkb25lCiAKK0NQUEZMQUdTPSRhY19zYXZlX2NwcGZsYWdzCiBhY19oZWFkZXJfZGlyZW50PW5vCiBmb3IgYWNfaGRyIGluIGRpcmVudC5oIHN5cy9uZGlyLmggc3lzL2Rpci5oIG5kaXIuaDsgZG8KICAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyX2RpcmVudF8kYWNfaGRyIiB8ICRhc190cl9zaGAKQEAgLTY0ODQsNiArNzE1MCwzNCBAQAogZmkKIAogCisjIE9uIERhcndpbiAoT1MgWCkgbmV0L2lmLmggcmVxdWlyZXMgc3lzL3NvY2tldC5oIHRvIGJlIGltcG9ydGVkIGZpcnN0LgorZm9yIGFjX2hlYWRlciBpbiBuZXQvaWYuaAorZG8gOgorICBhY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAibmV0L2lmLmgiICJhY19jdl9oZWFkZXJfbmV0X2lmX2giICIjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBTVERDX0hFQURFUlMKKyMgaW5jbHVkZSA8c3RkbGliLmg+CisjIGluY2x1ZGUgPHN0ZGRlZi5oPgorI2Vsc2UKKyMgaWZkZWYgSEFWRV9TVERMSUJfSAorIyAgaW5jbHVkZSA8c3RkbGliLmg+CisjIGVuZGlmCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorIyBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKworIgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfbmV0X2lmX2giID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ORVRfSUZfSCAxCitfQUNFT0YKKworZmkKKworZG9uZQorCisKKwogIyBPbiBTb2xhcmlzLCB0ZXJtLmggcmVxdWlyZXMgY3Vyc2VzLmgKIGZvciBhY19oZWFkZXIgaW4gdGVybS5oCiBkbyA6CkBAIC02NTI1LDYgKzcyMTksMjYgQEAKIGRvbmUKIAogCisjIE9uIExpbnV4LCBjYW4uaCBhbmQgY2FuL3Jhdy5oIHJlcXVpcmUgc3lzL3NvY2tldC5oCitmb3IgYWNfaGVhZGVyIGluIGxpbnV4L2Nhbi5oIGxpbnV4L2Nhbi9yYXcuaAorZG8gOgorICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCithY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIiICIKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorCisiCitpZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX0hlYWRlciJcIiA9IHgieWVzIjsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQorX0FDRU9GCisKK2ZpCisKK2RvbmUKKworCiAjIGNoZWNrcyBmb3IgdHlwZWRlZnMKIHdhc19pdF9kZWZpbmVkPW5vCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBjbG9ja190IGluIHRpbWUuaCIgPiY1CkBAIC02NTQ5LDcgKzcyNjMsNiBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3YXNfaXRfZGVmaW5lZCIgPiY1CiAkYXNfZWNobyAiJHdhc19pdF9kZWZpbmVkIiA+JjY7IH0KIAotIyBDaGVjayB3aGV0aGVyIHVzaW5nIG1ha2VkZXYgcmVxdWlyZXMgZGVmaW5pbmcgX09TRl9TT1VSQ0UKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG1ha2VkZXYiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIG1ha2VkZXYuLi4gIiA+JjY7IH0KIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTY1ODAsMzUgKzcyOTMsNiBAQAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci1pZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gIm5vIjsgdGhlbgotICAgICMgd2UgZGlkbid0IGxpbmssIHRyeSBpZiBfT1NGX1NPVVJDRSB3aWxsIGFsbG93IHVzIHRvIGxpbmsKLSAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLSNkZWZpbmUgX09TRl9TT1VSQ0UgMQotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotCi1pbnQKLW1haW4gKCkKLXsKLSBtYWtlZGV2KDAsIDApCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfY3ZfaGFzX21ha2VkZXY9eWVzCi1lbHNlCi0gIGFjX2N2X2hhc19tYWtlZGV2PW5vCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgICBpZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gInllcyI7IHRoZW4KLQotJGFzX2VjaG8gIiNkZWZpbmUgX09TRl9TT1VSQ0UgMSIgPj5jb25mZGVmcy5oCi0KLSAgICBmaQotZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfaGFzX21ha2VkZXYiID4mNQogJGFzX2VjaG8gIiRhY19jdl9oYXNfbWFrZWRldiIgPiY2OyB9CiBpZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gInllcyI7IHRoZW4KQEAgLTY4NTYsNiArNzU0MCwxMyBAQAogCiBmaQogCithY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJfX3VpbnQxMjhfdCIgImFjX2N2X3R5cGVfX191aW50MTI4X3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9fX3VpbnQxMjhfdCIgPSB4eWVzOyB0aGVuIDoKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9HQ0NfVUlOVDEyOF9UIDEiID4+Y29uZmRlZnMuaAorCitmaQorCiAKICMgU2l6ZXMgb2YgdmFyaW91cyBjb21tb24gYmFzaWMgdHlwZXMKICMgQU5TSSBDIHJlcXVpcmVzIHNpemVvZihjaGFyKSA9PSAxLCBzbyBubyBuZWVkIHRvIGNoZWNrIGl0CkBAIC03NzAxLDExICs4MzkyLDYgQEAKIAogCiAKLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBTSExJQl9FWFQgIiRTTyIKLV9BQ0VPRgotCiAjIExEU0hBUkVEIGlzIHRoZSBsZCAqY29tbWFuZCogdXNlZCB0byBjcmVhdGUgc2hhcmVkIGxpYnJhcnkKICMgLS0gImNjIC1HIiBvbiBTdW5PUyA1LngsICJsZCAtc2hhcmVkIiBvbiBJUklYIDUKICMgKFNoYXJlZCBsaWJyYXJpZXMgaW4gdGhpcyBpbnN0YW5jZSBhcmUgc2hhcmVkIG1vZHVsZXMgdG8gYmUgbG9hZGVkIGludG8KQEAgLTc3MzYsNyArODQyMiw2IEBACiAJCWVsc2UKIAkJCUxEU0hBUkVEPSdsZCAtYicKIAkJZmkgOzsKLQlPU0YqKSBMRFNIQVJFRD0ibGQgLXNoYXJlZCAtZXhwZWN0X3VucmVzb2x2ZWQgXCIqXCIiOzsKIAlEYXJ3aW4vMS4zKikKIAkJTERTSEFSRUQ9JyQoQ0MpIC1idW5kbGUnCiAJCUxEQ1hYU0hBUkVEPSckKENYWCkgLWJ1bmRsZScKQEAgLTc5NzUsNiArODY2MCw1MSBAQAogCiAKICMgY2hlY2tzIGZvciBsaWJyYXJpZXMKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHNlbmRmaWxlIGluIC1sc2VuZGZpbGUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHNlbmRmaWxlIGluIC1sc2VuZGZpbGUuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX3NlbmRmaWxlX3NlbmRmaWxlKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxzZW5kZmlsZSAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgc2VuZGZpbGUgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBzZW5kZmlsZSAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfc2VuZGZpbGVfc2VuZGZpbGU9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9zZW5kZmlsZV9zZW5kZmlsZT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfc2VuZGZpbGVfc2VuZGZpbGUiID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfc2VuZGZpbGVfc2VuZGZpbGUiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfc2VuZGZpbGVfc2VuZGZpbGUiID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9MSUJTRU5ERklMRSAxCitfQUNFT0YKKworICBMSUJTPSItbHNlbmRmaWxlICRMSUJTIgorCitmaQorCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBkbG9wZW4gaW4gLWxkbCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwuLi4gIiA+JjY7IH0KIGlmICR7YWNfY3ZfbGliX2RsX2Rsb3Blbis6fSBmYWxzZTsgdGhlbiA6CkBAIC04NDQzLDYgKzkxNzMsMjEgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9zeXN0ZW1fZmZpIiA+JjUKICRhc19lY2hvICIkd2l0aF9zeXN0ZW1fZmZpIiA+JjY7IH0KIAorIyBDaGVjayBmb3IgdXNlIG9mIHRoZSBzeXN0ZW0gbGlibXBkZWMgbGlicmFyeQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLXN5c3RlbS1saWJtcGRlYyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLXN5c3RlbS1saWJtcGRlYy4uLiAiID4mNjsgfQorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLXN5c3RlbV9saWJtcGRlYyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfc3lzdGVtX2xpYm1wZGVjK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgd2l0aHZhbD0kd2l0aF9zeXN0ZW1fbGlibXBkZWM7CitlbHNlCisgIHdpdGhfc3lzdGVtX2xpYm1wZGVjPSJubyIKK2ZpCisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX3N5c3RlbV9saWJtcGRlYyIgPiY1CiskYXNfZWNobyAiJHdpdGhfc3lzdGVtX2xpYm1wZGVjIiA+JjY7IH0KKwogIyBDaGVjayBmb3Igc3VwcG9ydCBmb3IgbG9hZGFibGUgc3FsaXRlIGV4dGVuc2lvbnMKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0tZW5hYmxlLWxvYWRhYmxlLXNxbGl0ZS1leHRlbnNpb25zIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLWVuYWJsZS1sb2FkYWJsZS1zcWxpdGUtZXh0ZW5zaW9ucy4uLiAiID4mNjsgfQpAQCAtODUxMCwyMyArOTI1NSw2IEBACiAKIFVTRV9USFJFQURfTU9EVUxFPSIiCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC1kZWMtdGhyZWFkcyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLWRlYy10aHJlYWRzLi4uICIgPiY2OyB9Ci0KLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1kZWMtdGhyZWFkcyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfZGVjX3RocmVhZHMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICB3aXRodmFsPSR3aXRoX2RlY190aHJlYWRzOwoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRodmFsIiA+JjUKLSRhc19lY2hvICIkd2l0aHZhbCIgPiY2OyB9Ci1MRExBU1Q9LXRocmVhZHMKLWlmIHRlc3QgIiR7d2l0aF90aHJlYWQrc2V0fSIgIT0gc2V0OyB0aGVuCi0gICB3aXRoX3RocmVhZD0iJHdpdGh2YWwiOwotZmkKLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQogCiAKICMgVGVtcGxhdGVzIGZvciB0aGluZ3MgQUNfREVGSU5FZCBtb3JlIHRoYW4gb25jZS4KQEAgLTg1MzQsNyArOTI2Miw2IEBACiAKIAogCi0KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC10aHJlYWRzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtdGhyZWFkcy4uLiAiID4mNjsgfQogCkBAIC04NjM2LDMxICs5MzYzLDYgQEAKIAogICAgICRhc19lY2hvICIjZGVmaW5lIF9SRUVOVFJBTlQgMSIgPj5jb25mZGVmcy5oCiAKLSAgICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAiY3RocmVhZHMuaCIgImFjX2N2X2hlYWRlcl9jdGhyZWFkc19oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9jdGhyZWFkc19oIiA9IHh5ZXM7IHRoZW4gOgotICAkYXNfZWNobyAiI2RlZmluZSBXSVRIX1RIUkVBRCAxIiA+PmNvbmZkZWZzLmgKLQotICAgICRhc19lY2hvICIjZGVmaW5lIENfVEhSRUFEUyAxIiA+PmNvbmZkZWZzLmgKLQotCi0kYXNfZWNobyAiI2RlZmluZSBIVVJEX0NfVEhSRUFEUyAxIiA+PmNvbmZkZWZzLmgKLQotICAgIExJQlM9IiRMSUJTIC1sdGhyZWFkcyIKLSAgICBUSFJFQURPQko9IlB5dGhvbi90aHJlYWQubyIKLWVsc2UKLQotICAgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJtYWNoL2N0aHJlYWRzLmgiICJhY19jdl9oZWFkZXJfbWFjaF9jdGhyZWFkc19oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9tYWNoX2N0aHJlYWRzX2giID0geHllczsgdGhlbiA6Ci0gICRhc19lY2hvICIjZGVmaW5lIFdJVEhfVEhSRUFEIDEiID4+Y29uZmRlZnMuaAotCi0gICAgJGFzX2VjaG8gIiNkZWZpbmUgQ19USFJFQURTIDEiID4+Y29uZmRlZnMuaAotCi0KLSRhc19lY2hvICIjZGVmaW5lIE1BQ0hfQ19USFJFQURTIDEiID4+Y29uZmRlZnMuaAotCi0gICAgVEhSRUFET0JKPSJQeXRob24vdGhyZWFkLm8iCi1lbHNlCi0KICAgICAjIEp1c3QgbG9va2luZyBmb3IgcHRocmVhZF9jcmVhdGUgaW4gbGlicHRocmVhZCBpcyBub3QgZW5vdWdoOgogICAgICMgb24gSFAvVVgsIHB0aHJlYWQuaCByZW5hbWVzIHB0aHJlYWRfY3JlYXRlIHRvIGEgZGlmZmVyZW50IHN5bWJvbCBuYW1lLgogICAgICMgU28gd2UgcmVhbGx5IGhhdmUgdG8gaW5jbHVkZSBwdGhyZWFkLmgsIGFuZCB0aGVuIGxpbmsuCkBAIC04NjcwLDYgKzkzNzIsOCBAQAogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHB0aHJlYWRfY3JlYXRlIGluIC1scHRocmVhZC4uLiAiID4mNjsgfQogICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8cHRocmVhZC5oPgogCiB2b2lkICogc3RhcnRfcm91dGluZSAodm9pZCAqYXJnKSB7IGV4aXQgKDApOyB9CkBAIC04ODkyLDEyICs5NTk2LDYgQEAKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotZmkKLQotCi1maQotCi0KIAogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHVzY29uZmlnIGluIC1sbXBjIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciB1c2NvbmZpZyBpbiAtbG1wYy4uLiAiID4mNjsgfQpAQCAtODk5MCwxNSArOTY4OCw2IEBACiBmaQogCiAgICAgZmkKLQotICAgIGlmIHRlc3QgIiRVU0VfVEhSRUFEX01PRFVMRSIgIT0gIiMiCi0gICAgdGhlbgotICAgICAgICAjIElmIHRoZSBhYm92ZSBjaGVja3MgZGlkbid0IGRpc2FibGUgdGhyZWFkcywgKGF0IGxlYXN0KSBPU0YxCi0gICAgICAgICMgbmVlZHMgdGhpcyAnLXRocmVhZHMnIGFyZ3VtZW50IGR1cmluZyBsaW5raW5nLgotICAgICAgICBjYXNlICRhY19zeXNfc3lzdGVtIGluCi0gICAgICAgIE9TRjEpIExETEFTVD0tdGhyZWFkczs7Ci0gICAgICAgIGVzYWMKLSAgICBmaQogZmkKIAogaWYgdGVzdCAiJHBvc2l4X3RocmVhZHMiID0gInllcyI7IHRoZW4KQEAgLTkwMzQsNyArOTcyMyw5IEBACiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSNpbmNsdWRlIDxwdGhyZWFkLmg+CisKKyAgICAgICNpbmNsdWRlIDxzdGRpby5oPgorICAgICAgI2luY2x1ZGUgPHB0aHJlYWQuaD4KICAgICAgIHZvaWQgKmZvbyh2b2lkICpwYXJtKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgfQpAQCAtOTQyNCwxMyArMTAxMTUsMTMgQEAKIGlmIHRlc3QgLXogIiR3aXRoX3B5bWFsbG9jIgogdGhlbgogICAgIHdpdGhfcHltYWxsb2M9InllcyIKLSAgICBBQklGTEFHUz0iJHtBQklGTEFHU31tIgogZmkKIGlmIHRlc3QgIiR3aXRoX3B5bWFsbG9jIiAhPSAibm8iCiB0aGVuCiAKICRhc19lY2hvICIjZGVmaW5lIFdJVEhfUFlNQUxMT0MgMSIgPj5jb25mZGVmcy5oCiAKKyAgICBBQklGTEFHUz0iJHtBQklGTEFHU31tIgogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9weW1hbGxvYyIgPiY1CiAkYXNfZWNobyAiJHdpdGhfcHltYWxsb2MiID4mNjsgfQpAQCAtOTUyOCwyNCArMTAyMTksMzcgQEAKIGVsc2UKIAlNQUNIREVQX09CSlM9IiRNQUNIREVQX09CSlMgJGV4dHJhX21hY2hkZXBfb2JqcyIKIGZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogTUFDSERFUF9PQkpTIiA+JjUKLSRhc19lY2hvICJNQUNIREVQX09CSlMiID4mNjsgfQoraWYgdGVzdCAteiAiJE1BQ0hERVBfT0JKUyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vbmUiID4mNQorJGFzX2VjaG8gIm5vbmUiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BQ0hERVBfT0JKUyIgPiY1CiskYXNfZWNobyAiJE1BQ0hERVBfT0JKUyIgPiY2OyB9CitmaQogCiAjIGNoZWNrcyBmb3IgbGlicmFyeSBmdW5jdGlvbnMKIGZvciBhY19mdW5jIGluIGFsYXJtIGFjY2VwdDQgc2V0aXRpbWVyIGdldGl0aW1lciBiaW5kX3RleHRkb21haW5fY29kZXNldCBjaG93biBcCi0gY2xvY2sgY29uZnN0ciBjdGVybWlkIGV4ZWN2IGZjaG1vZCBmY2hvd24gZm9yayBmcGF0aGNvbmYgZnRpbWUgZnRydW5jYXRlIFwKLSBnYWlfc3RyZXJyb3IgZ2V0Z3JvdXBzIGdldGxvZ2luIGdldGxvYWRhdmcgZ2V0cGVlcm5hbWUgZ2V0cGdpZCBnZXRwaWQgXAorIGNsb2NrIGNvbmZzdHIgY3Rlcm1pZCBleGVjdiBmYWNjZXNzYXQgZmNobW9kIGZjaG1vZGF0IGZjaG93biBmY2hvd25hdCBcCisgZmV4ZWN2ZSBmZG9wZW5kaXIgZm9yayBmcGF0aGNvbmYgZnN0YXRhdCBmdGltZSBmdHJ1bmNhdGUgZnV0aW1lc2F0IFwKKyBmdXRpbWVucyBmdXRpbWVzIGdhaV9zdHJlcnJvciBcCisgZ2V0Z3JvdXBsaXN0IGdldGdyb3VwcyBnZXRsb2dpbiBnZXRsb2FkYXZnIGdldHBlZXJuYW1lIGdldHBnaWQgZ2V0cGlkIFwKICBnZXRwcmlvcml0eSBnZXRyZXN1aWQgZ2V0cmVzZ2lkIGdldHB3ZW50IGdldHNwbmFtIGdldHNwZW50IGdldHNpZCBnZXR3ZCBcCi0gaW5pdGdyb3VwcyBraWxsIGtpbGxwZyBsY2htb2QgbGNob3duIGxzdGF0IG1icnRvd2MgbWtmaWZvIG1rbm9kIG1rdGltZSBcCi0gbXJlbWFwIG5pY2UgcGF0aGNvbmYgcGF1c2UgcGxvY2sgcG9sbCBwdGhyZWFkX2luaXQgXAotIHB1dGVudiByZWFkbGluayByZWFscGF0aCBcCi0gc2VsZWN0IHNlbV9vcGVuIHNlbV90aW1lZHdhaXQgc2VtX2dldHZhbHVlIHNlbV91bmxpbmsgc2V0ZWdpZCBzZXRldWlkIFwKLSBzZXRnaWQgXAotIHNldGxvY2FsZSBzZXRyZWdpZCBzZXRyZXVpZCBzZXRyZXN1aWQgc2V0cmVzZ2lkIHNldHNpZCBzZXRwZ2lkIHNldHBncnAgc2V0dWlkIHNldHZidWYgXAotIHNpZ2FjdGlvbiBzaWdpbnRlcnJ1cHQgc2lncmVsc2Ugc25wcmludGYgc3RyZnRpbWUgc3RybGNweSBcCisgaWZfbmFtZWluZGV4IFwKKyBpbml0Z3JvdXBzIGtpbGwga2lsbHBnIGxjaG1vZCBsY2hvd24gbG9ja2YgbGlua2F0IGxzdGF0IGx1dGltZXMgbW1hcCBcCisgbWVtcmNociBtYnJ0b3djIG1rZGlyYXQgbWtmaWZvIFwKKyBta2ZpZm9hdCBta25vZCBta25vZGF0IG1rdGltZSBtcmVtYXAgbmljZSBvcGVuYXQgcGF0aGNvbmYgcGF1c2UgcGlwZTIgcGxvY2sgcG9sbCBcCisgcG9zaXhfZmFsbG9jYXRlIHBvc2l4X2ZhZHZpc2UgcHJlYWQgXAorIHB0aHJlYWRfaW5pdCBwdGhyZWFkX2tpbGwgcHV0ZW52IHB3cml0ZSByZWFkbGluayByZWFkbGlua2F0IHJlYWR2IHJlYWxwYXRoIHJlbmFtZWF0IFwKKyBzZWxlY3Qgc2VtX29wZW4gc2VtX3RpbWVkd2FpdCBzZW1fZ2V0dmFsdWUgc2VtX3VubGluayBzZW5kZmlsZSBzZXRlZ2lkIHNldGV1aWQgXAorIHNldGdpZCBzZXRob3N0bmFtZSBcCisgc2V0bG9jYWxlIHNldHJlZ2lkIHNldHJldWlkIHNldHJlc3VpZCBzZXRyZXNnaWQgc2V0c2lkIHNldHBnaWQgc2V0cGdycCBzZXRwcmlvcml0eSBzZXR1aWQgc2V0dmJ1ZiBcCisgc2NoZWRfZ2V0X3ByaW9yaXR5X21heCBzY2hlZF9zZXRhZmZpbml0eSBzY2hlZF9zZXRzY2hlZHVsZXIgc2NoZWRfc2V0cGFyYW0gXAorIHNjaGVkX3JyX2dldF9pbnRlcnZhbCBcCisgc2lnYWN0aW9uIHNpZ2FsdHN0YWNrIHNpZ2ludGVycnVwdCBzaWdwZW5kaW5nIHNpZ3JlbHNlIFwKKyBzaWd0aW1lZHdhaXQgc2lnd2FpdCBzaWd3YWl0aW5mbyBzbnByaW50ZiBzdHJmdGltZSBzdHJsY3B5IHN5bWxpbmthdCBzeW5jIFwKICBzeXNjb25mIHRjZ2V0cGdycCB0Y3NldHBncnAgdGVtcG5hbSB0aW1lZ20gdGltZXMgdG1wZmlsZSB0bXBuYW0gdG1wbmFtX3IgXAotIHRydW5jYXRlIHVuYW1lIHVuc2V0ZW52IHV0aW1lcyB3YWl0cGlkIHdhaXQzIHdhaXQ0IFwKLSB3Y3Njb2xsIHdjc2Z0aW1lIHdjc3hmcm0gX2dldHB0eQorIHRydW5jYXRlIHVuYW1lIHVubGlua2F0IHVuc2V0ZW52IHV0aW1lbnNhdCB1dGltZXMgd2FpdGlkIHdhaXRwaWQgd2FpdDMgd2FpdDQgXAorIHdjc2NvbGwgd2NzZnRpbWUgd2NzeGZybSB3cml0ZXYgX2dldHB0eQogZG8gOgogICBhc19hY192YXI9YCRhc19lY2hvICJhY19jdl9mdW5jXyRhY19mdW5jIiB8ICRhc190cl9zaGAKIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIiRhY19mdW5jIiAiJGFzX2FjX3ZhciIKQEAgLTk3NDUsNiArMTA0NDksMzEgQEAKIAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZXBvbGxfY3JlYXRlMSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZXBvbGxfY3JlYXRlMS4uLiAiID4mNjsgfQorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN5cy9lcG9sbC5oPgoraW50CittYWluICgpCit7Cit2b2lkICp4PWVwb2xsX2NyZWF0ZTEKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0VQT0xMX0NSRUFURTEgMSIgPj5jb25mZGVmcy5oCisKKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBrcXVldWUiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGtxdWV1ZS4uLiAiID4mNjsgfQogY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTA3MTksNiArMTE0NDgsMTI1IEBACiBkb25lCiAKIAorZm9yIGFjX2Z1bmMgaW4gY2xvY2tfZ2V0dGltZQorZG8gOgorICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJjbG9ja19nZXR0aW1lIiAiYWNfY3ZfZnVuY19jbG9ja19nZXR0aW1lIgoraWYgdGVzdCAieCRhY19jdl9mdW5jX2Nsb2NrX2dldHRpbWUiID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9DTE9DS19HRVRUSU1FIDEKK19BQ0VPRgorCitlbHNlCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBjbG9ja19nZXR0aW1lIGluIC1scnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGNsb2NrX2dldHRpbWUgaW4gLWxydC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1scnQgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIGNsb2NrX2dldHRpbWUgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBjbG9ja19nZXR0aW1lICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lPXllcworZWxzZQorICBhY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRpbWUiID0geHllczsgdGhlbiA6CisKKyAgICAgICAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DTE9DS19HRVRUSU1FIDEiID4+Y29uZmRlZnMuaAorCisKKyRhc19lY2hvICIjZGVmaW5lIFRJTUVNT0RVTEVfTElCIHJ0IiA+PmNvbmZkZWZzLmgKKworCitmaQorCisKK2ZpCitkb25lCisKKworZm9yIGFjX2Z1bmMgaW4gY2xvY2tfZ2V0cmVzCitkbyA6CisgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImNsb2NrX2dldHJlcyIgImFjX2N2X2Z1bmNfY2xvY2tfZ2V0cmVzIgoraWYgdGVzdCAieCRhY19jdl9mdW5jX2Nsb2NrX2dldHJlcyIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0NMT0NLX0dFVFJFUyAxCitfQUNFT0YKKworZWxzZQorCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgY2xvY2tfZ2V0cmVzIGluIC1scnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGNsb2NrX2dldHJlcyBpbiAtbHJ0Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9ydF9jbG9ja19nZXRyZXMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHJ0ICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBjbG9ja19nZXRyZXMgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBjbG9ja19nZXRyZXMgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHJlcz15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHJlcz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcnRfY2xvY2tfZ2V0cmVzIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHJlcyIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9ydF9jbG9ja19nZXRyZXMiID0geHllczsgdGhlbiA6CisKKyAgICAgICAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DTE9DS19HRVRSRVMgMSIgPj5jb25mZGVmcy5oCisKKworZmkKKworCitmaQorZG9uZQorCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG1ham9yIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBtYWpvci4uLiAiID4mNjsgfQogY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTA3OTYsMTEgKzExNjQ0LDE3IEBACiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKworaWYgdGVzdCAiJHtlbmFibGVfaXB2NitzZXR9IiA9IHNldDsgdGhlbgorICBhY19jdl9idWdneV9nZXRhZGRyaW5mbz0ibm8gLS0gY29uZmlndXJlZCB3aXRoIC0tKGVufGRpcylhYmxlLWlwdjYiCitlbHNlCiAgIGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPXllcworZmkKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxuZXRkYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtMTA5MDQsNyArMTE3NTgsNyBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9idWdneV9nZXRhZGRyaW5mbyIgPiY1CiAkYXNfZWNobyAiJGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvIiA+JjY7IH0KIAotaWYgdGVzdCAkaGF2ZV9nZXRhZGRyaW5mbyA9IG5vIC1vICIkYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm8iID0geWVzCitpZiB0ZXN0ICRoYXZlX2dldGFkZHJpbmZvID0gbm8gfHwgdGVzdCAiJGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvIiA9IHllcwogdGhlbgogCWlmIHRlc3QgJGlwdjYgPSB5ZXMKIAl0aGVuCkBAIC0xMTg3NSw2ICsxMjcyOSw0MCBAQAogZmkKIAogCisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICogQ2hlY2sgZm9yIGdjYyB4NjQgaW5saW5lIGFzc2VtYmxlciAqCisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHg2NCBnY2MgaW5saW5lIGFzc2VtYmxlciIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgeDY0IGdjYyBpbmxpbmUgYXNzZW1ibGVyLi4uICIgPiY2OyB9CitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIF9fYXNtX18gX192b2xhdGlsZV9fICgibW92cSAlcmN4LCAlcmF4Iik7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBoYXZlX2djY19hc21fZm9yX3g2ND15ZXMKK2Vsc2UKKyAgaGF2ZV9nY2NfYXNtX2Zvcl94NjQ9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9nY2NfYXNtX2Zvcl94NjQiID4mNQorJGFzX2VjaG8gIiRoYXZlX2djY19hc21fZm9yX3g2NCIgPiY2OyB9CitpZiB0ZXN0ICIkaGF2ZV9nY2NfYXNtX2Zvcl94NjQiID0geWVzCit0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfR0NDX0FTTV9GT1JfWDY0IDEiID4+Y29uZmRlZnMuaAorCitmaQorCiAjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAjICogQ2hlY2sgZm9yIHZhcmlvdXMgcHJvcGVydGllcyBvZiBmbG9hdGluZyBwb2ludCAqCiAjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0xMjEyNSw3ICsxMzAxMyw3IEBACiBmaQogZG9uZQogCi1mb3IgYWNfZnVuYyBpbiBoeXBvdCBsZ2FtbWEgbG9nMXAgcm91bmQgdGdhbW1hCitmb3IgYWNfZnVuYyBpbiBoeXBvdCBsZ2FtbWEgbG9nMXAgbG9nMiByb3VuZCB0Z2FtbWEKIGRvIDoKICAgYXNfYWNfdmFyPWAkYXNfZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCiBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICIkYWNfZnVuYyIgIiRhc19hY192YXIiCkBAIC0xMjUzMiw2NSArMTM0MjAsMTkgQEAKICRhc19lY2hvICIkYWNfY3Zfd2NoYXJfdF9zaWduZWQiID4mNjsgfQogZmkKIAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGF0IHR5cGUgdG8gdXNlIGZvciBzdHIiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hhdCB0eXBlIHRvIHVzZSBmb3Igc3RyLi4uICIgPiY2OyB9Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtd2lkZS11bmljb2RlIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF93aWRlX3VuaWNvZGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICB3aXRodmFsPSR3aXRoX3dpZGVfdW5pY29kZTsKLWlmIHRlc3QgIiR3aXRodmFsIiAhPSBubwotdGhlbiB1bmljb2RlX3NpemU9IjQiCi1lbHNlIHVuaWNvZGVfc2l6ZT0iMiIKLWZpCi0KLWVsc2UKLQotY2FzZSAiJGhhdmVfdWNzNF90Y2wiIGluCi0gIHllcykgdW5pY29kZV9zaXplPSI0Ijs7Ci0gICopICAgdW5pY29kZV9zaXplPSIyIiA7OwotZXNhYwotCi1maQotCi0KLQotY2FzZSAiJHVuaWNvZGVfc2l6ZSIgaW4KLSAgNCkKLSAgICAgJGFzX2VjaG8gIiNkZWZpbmUgUHlfVU5JQ09ERV9TSVpFIDQiID4+Y29uZmRlZnMuaAotCi0gICAgIEFCSUZMQUdTPSIke0FCSUZMQUdTfXUiCi0gICAgIDs7Ci0gICopICRhc19lY2hvICIjZGVmaW5lIFB5X1VOSUNPREVfU0laRSAyIiA+PmNvbmZkZWZzLmgKLSA7OwotZXNhYwotCi0KLQogIyB3Y2hhcl90IGlzIG9ubHkgdXNhYmxlIGlmIGl0IG1hcHMgdG8gYW4gdW5zaWduZWQgdHlwZQotaWYgdGVzdCAiJHVuaWNvZGVfc2l6ZSIgPSAiJGFjX2N2X3NpemVvZl93Y2hhcl90IiBcCitpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX3djaGFyX3QiIC1nZSAyIFwKICAgICAgICAgICAtYSAiJGFjX2N2X3djaGFyX3Rfc2lnbmVkIiA9ICJubyIKIHRoZW4KLSAgUFlfVU5JQ09ERV9UWVBFPSJ3Y2hhcl90IgorICBIQVZFX1VTQUJMRV9XQ0hBUl9UPSJ5ZXMiCiAKICRhc19lY2hvICIjZGVmaW5lIEhBVkVfVVNBQkxFX1dDSEFSX1QgMSIgPj5jb25mZGVmcy5oCiAKLSAgJGFzX2VjaG8gIiNkZWZpbmUgUFlfVU5JQ09ERV9UWVBFIHdjaGFyX3QiID4+Y29uZmRlZnMuaAotCi1lbGlmIHRlc3QgIiRhY19jdl9zaXplb2Zfc2hvcnQiID0gIiR1bmljb2RlX3NpemUiCi10aGVuCi0gICAgIFBZX1VOSUNPREVfVFlQRT0idW5zaWduZWQgc2hvcnQiCi0gICAgICRhc19lY2hvICIjZGVmaW5lIFBZX1VOSUNPREVfVFlQRSB1bnNpZ25lZCBzaG9ydCIgPj5jb25mZGVmcy5oCi0KLWVsaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9sb25nIiA9ICIkdW5pY29kZV9zaXplIgotdGhlbgotICAgICBQWV9VTklDT0RFX1RZUEU9InVuc2lnbmVkIGxvbmciCi0gICAgICRhc19lY2hvICIjZGVmaW5lIFBZX1VOSUNPREVfVFlQRSB1bnNpZ25lZCBsb25nIiA+PmNvbmZkZWZzLmgKLQogZWxzZQotICAgICBQWV9VTklDT0RFX1RZUEU9Im5vIHR5cGUgZm91bmQiCisgIEhBVkVfVVNBQkxFX1dDSEFSX1Q9Im5vIHVzYWJsZSB3Y2hhcl90IGZvdW5kIgogZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkUFlfVU5JQ09ERV9UWVBFIiA+JjUKLSRhc19lY2hvICIkUFlfVU5JQ09ERV9UWVBFIiA+JjY7IH0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkSEFWRV9VU0FCTEVfV0NIQVJfVCIgPiY1CiskYXNfZWNobyAiJEhBVkVfVVNBQkxFX1dDSEFSX1QiID4mNjsgfQogCiAjIGNoZWNrIGZvciBlbmRpYW5uZXNzCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGJ5dGUgb3JkZXJpbmcgaXMgYmlnZW5kaWFuIiA+JjUKQEAgLTEyODgyLDYgKzEzNzI0LDEyIEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFNPIiA+JjUKICRhc19lY2hvICIkU08iID4mNjsgfQogCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgU0hMSUJfRVhUICIkU08iCitfQUNFT0YKKworCiAjIENoZWNrIHdoZXRoZXIgcmlnaHQgc2hpZnRpbmcgYSBuZWdhdGl2ZSBpbnRlZ2VyIGV4dGVuZHMgdGhlIHNpZ24gYml0CiAjIG9yIGZpbGxzIHdpdGggemVyb3MgKGxpa2UgdGhlIENyYXkgSjkwLCBhY2NvcmRpbmcgdG8gVGltIFBldGVycykuCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgcmlnaHQgc2hpZnQgZXh0ZW5kcyB0aGUgc2lnbiBiaXQiID4mNQpAQCAtMTI5NzMsNyArMTM4MjEsNyBAQAogcHlfY3ZfbGliX3JlYWRsaW5lPW5vCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBsaW5rIHJlYWRsaW5lIGxpYnMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGxpbmsgcmVhZGxpbmUgbGlicy4uLiAiID4mNjsgfQotZm9yIHB5X2xpYnRlcm1jYXAgaW4gIiIgbmN1cnNlc3cgbmN1cnNlcyBjdXJzZXMgdGVybWNhcDsgZG8KK2ZvciBweV9saWJ0ZXJtY2FwIGluICIiIHRpbmZvIG5jdXJzZXN3IG5jdXJzZXMgY3Vyc2VzIHRlcm1jYXA7IGRvCiAgIGlmIHRlc3QgLXogIiRweV9saWJ0ZXJtY2FwIjsgdGhlbgogICAgIFJFQURMSU5FX0xJQlM9Ii1scmVhZGxpbmUiCiAgIGVsc2UKQEAgLTEzNjAzLDYgKzE0NDUxLDggQEAKIAogZmkKIAorYWNfc2F2ZV9jcHBmbGFncz0iJENQUEZMQUdTIgorQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSS91c3IvaW5jbHVkZS9uY3Vyc2VzdyIKICMgT24gSFAvVVggMTEuMCwgbXZ3ZGVsY2ggaXMgYSBibG9jayB3aXRoIGEgcmV0dXJuIHN0YXRlbWVudAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIG12d2RlbGNoIGlzIGFuIGV4cHJlc3Npb24iID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBtdndkZWxjaCBpcyBhbiBleHByZXNzaW9uLi4uICIgPiY2OyB9CkBAIC0xMzc1NiwzNSArMTQ2MDYsNzYgQEAKIAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorIyBsYXN0IGN1cnNlcyBjb25maWd1cmUgY2hlY2sKK0NQUEZMQUdTPSRhY19zYXZlX2NwcGZsYWdzCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRldmljZSBmaWxlcyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBjaGVja2luZyBmb3IgZGV2aWNlIGZpbGVzIiA+JjY7fQorCitpZiB0ZXN0ICJ4JGNyb3NzX2NvbXBpbGluZyIgPSB4eWVzOyB0aGVuCisgIGlmIHRlc3QgIiR7YWNfY3ZfZmlsZV9fZGV2X3B0bXgrc2V0fSIgIT0gc2V0OyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgL2Rldi9wdG14IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAvZGV2L3B0bXguLi4gIiA+JjY7IH0KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm90IHNldCIgPiY1CiskYXNfZWNobyAibm90IHNldCIgPiY2OyB9CisgICAgYXNfZm5fZXJyb3IgJD8gInNldCBhY19jdl9maWxlX19kZXZfcHRteCB0byB5ZXMvbm8gaW4geW91ciBDT05GSUdfU0lURSBmaWxlIHdoZW4gY3Jvc3MgY29tcGlsaW5nIiAiJExJTkVOTyIgNQorICBmaQorICBpZiB0ZXN0ICIke2FjX2N2X2ZpbGVfX2Rldl9wdGMrc2V0fSIgIT0gc2V0OyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgL2Rldi9wdGMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC9kZXYvcHRjLi4uICIgPiY2OyB9CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vdCBzZXQiID4mNQorJGFzX2VjaG8gIm5vdCBzZXQiID4mNjsgfQorICAgIGFzX2ZuX2Vycm9yICQ/ICJzZXQgYWNfY3ZfZmlsZV9fZGV2X3B0YyB0byB5ZXMvbm8gaW4geW91ciBDT05GSUdfU0lURSBmaWxlIHdoZW4gY3Jvc3MgY29tcGlsaW5nIiAiJExJTkVOTyIgNQorICBmaQorZmkKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgL2Rldi9wdG14IiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAvZGV2L3B0bXguLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfZmlsZV9fZGV2X3B0bXgrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcyAmJgorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNoZWNrIGZvciBmaWxlIGV4aXN0ZW5jZSB3aGVuIGNyb3NzIGNvbXBpbGluZyIgIiRMSU5FTk8iIDUKK2lmIHRlc3QgLXIgIi9kZXYvcHRteCI7IHRoZW4KKyAgYWNfY3ZfZmlsZV9fZGV2X3B0bXg9eWVzCitlbHNlCisgIGFjX2N2X2ZpbGVfX2Rldl9wdG14PW5vCitmaQorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZmlsZV9fZGV2X3B0bXgiID4mNQorJGFzX2VjaG8gIiRhY19jdl9maWxlX19kZXZfcHRteCIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2ZpbGVfX2Rldl9wdG14IiA9IHh5ZXM7IHRoZW4gOgogCi1pZiB0ZXN0IC1yIC9kZXYvcHRteAotdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSRhc19lY2hvICJ5ZXMiID4mNjsgfQorZmkKKworaWYgdGVzdCAieCRhY19jdl9maWxlX19kZXZfcHRteCIgPSB4eWVzOyB0aGVuCiAKICRhc19lY2hvICIjZGVmaW5lIEhBVkVfREVWX1BUTVggMSIgPj5jb25mZGVmcy5oCiAKLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9CiBmaQotCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAvZGV2L3B0YyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgL2Rldi9wdGMuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfZmlsZV9fZGV2X3B0Yys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzICYmCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY2hlY2sgZm9yIGZpbGUgZXhpc3RlbmNlIHdoZW4gY3Jvc3MgY29tcGlsaW5nIiAiJExJTkVOTyIgNQoraWYgdGVzdCAtciAiL2Rldi9wdGMiOyB0aGVuCisgIGFjX2N2X2ZpbGVfX2Rldl9wdGM9eWVzCitlbHNlCisgIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8KK2ZpCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9maWxlX19kZXZfcHRjIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZmlsZV9fZGV2X3B0YyIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2ZpbGVfX2Rldl9wdGMiID0geHllczsgdGhlbiA6CiAKLWlmIHRlc3QgLXIgL2Rldi9wdGMKLXRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1Ci0kYXNfZWNobyAieWVzIiA+JjY7IH0KK2ZpCisKK2lmIHRlc3QgIngkYWNfY3ZfZmlsZV9fZGV2X3B0YyIgPSB4eWVzOyB0aGVuCiAKICRhc19lY2hvICIjZGVmaW5lIEhBVkVfREVWX1BUQyAxIiA+PmNvbmZkZWZzLmgKIAotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KIGZpCiAKIGlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMKQEAgLTEzNzk1LDcgKzE0Njg2LDM2IEBACiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKLSAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PW5vCisgIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD0iY3Jvc3MgLS0gYXNzdW1pbmcgbm8iCisgICBpZiB0ZXN0IHgkR0NDID0geHllczsgdGhlbgorICAgIHNhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAgICBDRkxBR1M9IiRDRkxBR1MgLVdlcnJvciAtV2Zvcm1hdCIKKyAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKyAgICAgICAgI2luY2x1ZGUgPHN0ZGlvLmg+CisgICAgICAgICNpbmNsdWRlIDxzdGRkZWYuaD4KKworaW50CittYWluICgpCit7CisKKyAgICAgIGNoYXIgKmJ1ZmZlcjsKKyAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpMTIzKTsKKyAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpLTEyMyk7CisgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKTEyMyk7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9eWVzCisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgICBDRkxBR1M9JHNhdmVfQ0ZMQUdTCisgICBmaQogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCkBAIC0xMzk1NCw2ICsxNDg3NCw3IEBACiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIAorI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZTxzdGRsaWIuaD4KIGludCBtYWluKCkgewogICAgIHNpemVfdCBsZW4gPSAtMTsKQEAgLTEzOTgzLDQ5ICsxNDkwNCw2IEBACiAKIGZpCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfY29tcHV0ZWRfZ290b3MrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6Ci0gIGFjX2N2X2NvbXB1dGVkX2dvdG9zPW5vCi1lbHNlCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewotICAgIHN0YXRpYyB2b2lkICp0YXJnZXRzWzFdID0geyAmJkxBQkVMMSB9OwotICAgIGdvdG8gTEFCRUwyOwotTEFCRUwxOgotICAgIHJldHVybiAwOwotTEFCRUwyOgotICAgIGdvdG8gKnRhcmdldHNbMF07Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X2NvbXB1dGVkX2dvdG9zPXllcwotZWxzZQotICBhY19jdl9jb21wdXRlZF9nb3Rvcz1ubwotZmkKLXJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKLSAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKLWZpCi0KLWZpCi0KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfY29tcHV0ZWRfZ290b3MiID4mNQotJGFzX2VjaG8gIiRhY19jdl9jb21wdXRlZF9nb3RvcyIgPiY2OyB9Ci1pZiB0ZXN0ICIkYWNfY3ZfY29tcHV0ZWRfZ290b3MiID0geWVzCi10aGVuCi0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfQ09NUFVURURfR09UT1MgMSIgPj5jb25mZGVmcy5oCi0KLWZpCi0KICMgQ2hlY2sgZm9yIC0td2l0aC1jb21wdXRlZC1nb3RvcwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLWNvbXB1dGVkLWdvdG9zIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtY29tcHV0ZWQtZ290b3MuLi4gIiA+JjY7IH0KQEAgLTE0MDU2LDYgKzE0OTM0LDUyIEBACiBmaQogCiAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfY29tcHV0ZWRfZ290b3MrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGlmIHRlc3QgIiR7d2l0aF9jb21wdXRlZF9nb3RvcytzZXR9IiA9IHNldDsgdGhlbgorICAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9IiR3aXRoX2NvbXB1dGVkX2dvdG9zIC0tIGNvbmZpZ3VyZWQgLS13aXRoKG91dCktY29tcHV0ZWQtZ290b3MiCisgZWxzZQorICAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9bm8KKyBmaQorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICBzdGF0aWMgdm9pZCAqdGFyZ2V0c1sxXSA9IHsgJiZMQUJFTDEgfTsKKyAgICBnb3RvIExBQkVMMjsKK0xBQkVMMToKKyAgICByZXR1cm4gMDsKK0xBQkVMMjoKKyAgICBnb3RvICp0YXJnZXRzWzBdOworICAgIHJldHVybiAxOworfQorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9jb21wdXRlZF9nb3Rvcz15ZXMKK2Vsc2UKKyAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9bm8KK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NvbXB1dGVkX2dvdG9zIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfY29tcHV0ZWRfZ290b3MiID4mNjsgfQorY2FzZSAiJGFjX2N2X2NvbXB1dGVkX2dvdG9zIiBpbiB5ZXMqKQorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0NPTVBVVEVEX0dPVE9TIDEiID4+Y29uZmRlZnMuaAorCitlc2FjCisKIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KIEFJWCopCiAKQEAgLTE0MDY0LDE4ICsxNDk4OCw2IEBACiBlc2FjCiAKIAotY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgotICBPU0YqKSBhc19mbl9lcnJvciAkPyAiT1NGKiBzeXN0ZW1zIGFyZSBkZXByZWNhdGVkIHVubGVzcyBzb21lYm9keSB2b2x1bnRlZXJzLiBDaGVjayBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlODYwNiIgIiRMSU5FTk8iIDUgOzsKLWVzYWMKLQotYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAicGlwZTIiICJhY19jdl9mdW5jX3BpcGUyIgotaWYgdGVzdCAieCRhY19jdl9mdW5jX3BpcGUyIiA9IHh5ZXM7IHRoZW4gOgotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1BJUEUyIDEiID4+Y29uZmRlZnMuaAotCi1maQotCi0KIAogCiBmb3IgaCBpbiBgKGNkICRzcmNkaXI7ZWNobyBQeXRob24vdGhyZWFkXyouaClgCkBAIC0xNDA5NSw2ICsxNTAwNywxMzYgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBkb25lIiA+JjUKICRhc19lY2hvICJkb25lIiA+JjY7IH0KIAorIyBBdmFpbGFiaWxpdHkgb2YgLU8yOgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLU8yIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAtTzIuLi4gIiA+JjY7IH0KK3NhdmVkX2NmbGFncz0iJENGTEFHUyIKK0NGTEFHUz0iLU8yIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9PMj15ZXMKK2Vsc2UKKyAgaGF2ZV9PMj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX08yIiA+JjUKKyRhc19lY2hvICIkaGF2ZV9PMiIgPiY2OyB9CitDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCisKKyMgX0ZPUlRJRllfU09VUkNFIHdyYXBwZXJzIGZvciBtZW1tb3ZlIGFuZCBiY29weSBhcmUgaW5jb3JyZWN0OgorIyBodHRwOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDEwLTEyL21zZzAwMDA5Lmh0bWwKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGdsaWJjIF9GT1JUSUZZX1NPVVJDRS9tZW1tb3ZlIGJ1ZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZ2xpYmMgX0ZPUlRJRllfU09VUkNFL21lbW1vdmUgYnVnLi4uICIgPiY2OyB9CitzYXZlZF9jZmxhZ3M9IiRDRkxBR1MiCitDRkxBR1M9Ii1PMiAtRF9GT1JUSUZZX1NPVVJDRT0yIgoraWYgdGVzdCAiJGhhdmVfTzIiID0gbm87IHRoZW4KKyAgICBDRkxBR1M9IiIKK2ZpCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGhhdmVfZ2xpYmNfbWVtbW92ZV9idWc9dW5kZWZpbmVkCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+Cit2b2lkIGZvbyh2b2lkICpwLCB2b2lkICpxKSB7IG1lbW1vdmUocCwgcSwgMTkpOyB9CitpbnQgbWFpbigpIHsKKyAgY2hhciBhWzMyXSA9ICIxMjM0NTY3ODkwMDAwMDAwMDAiOworICBmb28oJmFbOV0sIGEpOworICBpZiAoc3RyY21wKGEsICIxMjM0NTY3ODkxMjM0NTY3ODkwMDAwMDAwMDAiKSAhPSAwKQorICAgIHJldHVybiAxOworICBmb28oYSwgJmFbOV0pOworICBpZiAoc3RyY21wKGEsICIxMjM0NTY3ODkwMDAwMDAwMDAiKSAhPSAwKQorICAgIHJldHVybiAxOworICByZXR1cm4gMDsKK30KKworX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9nbGliY19tZW1tb3ZlX2J1Zz1ubworZWxzZQorICBoYXZlX2dsaWJjX21lbW1vdmVfYnVnPXllcworZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK0NGTEFHUz0iJHNhdmVkX2NmbGFncyIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9nbGliY19tZW1tb3ZlX2J1ZyIgPiY1CiskYXNfZWNobyAiJGhhdmVfZ2xpYmNfbWVtbW92ZV9idWciID4mNjsgfQoraWYgdGVzdCAiJGhhdmVfZ2xpYmNfbWVtbW92ZV9idWciID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfR0xJQkNfTUVNTU9WRV9CVUcgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKK2lmIHRlc3QgIiRoYXZlX2djY19hc21fZm9yX3g4NyIgPSB5ZXM7IHRoZW4KKyAgICAjIFNvbWUgdmVyc2lvbnMgb2YgZ2NjIG1pc2NvbXBpbGUgaW5saW5lIGFzbToKKyAgICAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NDY0OTEKKyAgICAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9nY2MvMjAxMC0xMS9tc2cwMDM2Ni5odG1sCisgICAgY2FzZSAkQ0MgaW4KKyAgICAgICAgKmdjYyopCisgICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBnY2MgaXBhLXB1cmUtY29uc3QgYnVnIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBnY2MgaXBhLXB1cmUtY29uc3QgYnVnLi4uICIgPiY2OyB9CisgICAgICAgICAgICBzYXZlZF9jZmxhZ3M9IiRDRkxBR1MiCisgICAgICAgICAgICBDRkxBR1M9Ii1PMiIKKyAgICAgICAgICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgaGF2ZV9pcGFfcHVyZV9jb25zdF9idWc9dW5kZWZpbmVkCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworICAgICAgICAgICAgX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSBpbnQKKyAgICAgICAgICAgIGZvbyhpbnQgKnApIHsKKyAgICAgICAgICAgICAgaW50IHI7CisgICAgICAgICAgICAgIGFzbSAoICJtb3ZsIFwkNiwgKCUxKVxuXHQiCisgICAgICAgICAgICAgICAgICAgICJ4b3JsICUwLCAlMFxuXHQiCisgICAgICAgICAgICAgICAgICAgIDogIj1yIiAocikgOiAiciIgKHApIDogIm1lbW9yeSIKKyAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgcmV0dXJuIHI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgbWFpbigpIHsKKyAgICAgICAgICAgICAgaW50IHAgPSA4OworICAgICAgICAgICAgICBpZiAoKGZvbygmcCkgPyA6IHApICE9IDYpCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBoYXZlX2lwYV9wdXJlX2NvbnN0X2J1Zz1ubworZWxzZQorICBoYXZlX2lwYV9wdXJlX2NvbnN0X2J1Zz15ZXMKK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCisgICAgICAgICAgICBDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCisgICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfaXBhX3B1cmVfY29uc3RfYnVnIiA+JjUKKyRhc19lY2hvICIkaGF2ZV9pcGFfcHVyZV9jb25zdF9idWciID4mNjsgfQorICAgICAgICAgICAgaWYgdGVzdCAiJGhhdmVfaXBhX3B1cmVfY29uc3RfYnVnIiA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0lQQV9QVVJFX0NPTlNUX0JVRyAxIiA+PmNvbmZkZWZzLmgKKworICAgICAgICAgICAgZmkKKyAgICAgICAgOzsKKyAgICBlc2FjCitmaQorCiAjIGdlbmVyYXRlIG91dHB1dCBmaWxlcwogYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlLnByZSBNb2R1bGVzL1NldHVwLmNvbmZpZyBNaXNjL3B5dGhvbi5wYyIKIApAQCAtMTQ2MDcsNyArMTU2NDksNyBAQAogIyByZXBvcnQgYWN0dWFsIGlucHV0IHZhbHVlcyBvZiBDT05GSUdfRklMRVMgZXRjLiBpbnN0ZWFkIG9mIHRoZWlyCiAjIHZhbHVlcyBhZnRlciBvcHRpb25zIGhhbmRsaW5nLgogYWNfbG9nPSIKLVRoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgcHl0aG9uICRhc19tZSAzLjIsIHdoaWNoIHdhcworVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSBweXRob24gJGFzX21lIDMuMywgd2hpY2ggd2FzCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICBDT05GSUdfRklMRVMgICAgPSAkQ09ORklHX0ZJTEVTCkBAIC0xNDY2OSw3ICsxNTcxMSw3IEBACiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKIGFjX2NzX2NvbmZpZz0iYCRhc19lY2hvICIkYWNfY29uZmlndXJlX2FyZ3MiIHwgc2VkICdzL14gLy87IHMvW1xcIiJcYFwkXS9cXFxcJi9nJ2AiCiBhY19jc192ZXJzaW9uPSJcXAotcHl0aG9uIGNvbmZpZy5zdGF0dXMgMy4yCitweXRob24gY29uZmlnLnN0YXR1cyAzLjMKIGNvbmZpZ3VyZWQgYnkgJDAsIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSwKICAgd2l0aCBvcHRpb25zIFxcIlwkYWNfY3NfY29uZmlnXFwiCiAKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAxOWNmMWFlLi5iNTU1ZjI3IDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0zLDIyICszLDc5IEBACiBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAogIyBTZXQgVkVSU0lPTiBzbyB3ZSBvbmx5IG5lZWQgdG8gZWRpdCBpbiBvbmUgcGxhY2UgKGkuZS4sIGhlcmUpCi1tNF9kZWZpbmUoUFlUSE9OX1ZFUlNJT04sIDMuMikKK200X2RlZmluZShQWVRIT05fVkVSU0lPTiwgMy4zKQogCi1kbmwgU29tZSBtNCBtYWdpYyB0byBlbnN1cmUgdGhhdCB0aGUgY29uZmlndXJlIHNjcmlwdCBpcyBnZW5lcmF0ZWQKLWRubCBieSB0aGUgY29ycmVjdCBhdXRvY29uZiB2ZXJzaW9uLgotbTRfZGVmaW5lKFt2ZXJzaW9uX3JlcXVpcmVkXSwKLVttNF9pZihtNF92ZXJzaW9uX2NvbXBhcmUobTRfZGVmbihbbTRfUEFDS0FHRV9WRVJTSU9OXSksIFskMV0pLCAwLAotICAgICAgIFtdLAotICAgICAgIFttNF9mYXRhbChbQXV0b2NvbmYgdmVyc2lvbiAkMSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uXSwgNjMpXSkKLV0pCiBBQ19QUkVSRVEoMi42NSkKIAotQUNfUkVWSVNJT04oJFJldmlzaW9uJCkKIEFDX0lOSVQocHl0aG9uLCBQWVRIT05fVkVSU0lPTiwgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy8pCisKK0FDX1NVQlNUKEJBU0VDUFBGTEFHUykKK2lmIHRlc3QgIiRhYnNfc3JjZGlyIiAhPSAiJGFic19idWlsZGRpciI7IHRoZW4KKyAgICAjIElmIHdlJ3JlIGJ1aWxkaW5nIG91dC1vZi10cmVlLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZm9sbG93aW5nCisgICAgIyByZXNvdXJjZXMgZ2V0IHBpY2tlZCB1cCBiZWZvcmUgdGhlaXIgJHNyY2RpciBjb3VudGVycGFydHMuCisgICAgIyAgIE9iamVjdHMvIC0+IHR5cGVzbG90cy5pbmMKKyAgICAjICAgSW5jbHVkZS8gLT4gUHl0aG9uLWFzdC5oLCBncmFtaW5pdC5oCisgICAgIyAgIFB5dGhvbi8gIC0+IGltcG9ydGxpYi5oCisgICAgIyAoQSBzaWRlIGVmZmVjdCBvZiB0aGlzIGlzIHRoYXQgdGhlc2UgcmVzb3VyY2VzIHdpbGwgYXV0b21hdGljYWxseSBiZQorICAgICMgIHJlZ2VuZXJhdGVkIHdoZW4gYnVpbGRpbmcgb3V0LW9mLXRyZWUsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QKKyAgICAjICB0aGUgJHNyY2RpciBjb3VudGVycGFydCBpcyB1cC10by1kYXRlLiAgVGhpcyBpcyBhbiBhY2NlcHRhYmxlIHRyYWRlCisgICAgIyAgb2ZmLikKKyAgICBCQVNFQ1BQRkxBR1M9Ii1JT2JqZWN0cyAtSUluY2x1ZGUgLUlQeXRob24iCitlbHNlCisgICAgQkFTRUNQUEZMQUdTPSIiCitmaQorCitBQ19TVUJTVChIR1ZFUlNJT04pCitBQ19TVUJTVChIR1RBRykKK0FDX1NVQlNUKEhHQlJBTkNIKQorCitpZiB0ZXN0IC1lICRzcmNkaXIvLmhnL2RpcnN0YXRlCit0aGVuCitBQ19DSEVDS19QUk9HKEhBU19IRywgaGcsIGZvdW5kLCBub3QtZm91bmQpCitlbHNlCitIQVNfSEc9bm8tcmVwb3NpdG9yeQorZmkKK2lmIHRlc3QgJEhBU19IRyA9IGZvdW5kCit0aGVuCisgICAgSEdWRVJTSU9OPSJoZyBpZCAtaSBcJChzcmNkaXIpIgorICAgIEhHVEFHPSJoZyBpZCAtdCBcJChzcmNkaXIpIgorICAgIEhHQlJBTkNIPSJoZyBpZCAtYiBcJChzcmNkaXIpIgorZWxzZQorICAgIEhHVkVSU0lPTj0iIgorICAgIEhHVEFHPSIiCisgICAgSEdCUkFOQ0g9IiIKK2ZpCisKIEFDX0NPTkZJR19TUkNESVIoW0luY2x1ZGUvb2JqZWN0LmhdKQogQUNfQ09ORklHX0hFQURFUihweWNvbmZpZy5oKQogCitBQ19DQU5PTklDQUxfSE9TVAorQUNfU1VCU1QoYnVpbGQpCitBQ19TVUJTVChob3N0KQorCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICAgIEFDX01TR19DSEVDS0lORyhbZm9yIHB5dGhvbiBpbnRlcnByZXRlciBmb3IgY3Jvc3MgYnVpbGRdKQorICAgIGlmIHRlc3QgLXogIiRQWVRIT05fRk9SX0JVSUxEIjsgdGhlbgorICAgICAgICBmb3IgaW50ZXJwIGluIHB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gcHl0aG9uMyBweXRob247IGRvCisJICAgIHdoaWNoICRpbnRlcnAgPi9kZXYvbnVsbCAyPiYxIHx8IGNvbnRpbnVlCisJICAgIGlmICRpbnRlcnAgLWMgJ2ltcG9ydCBzeXM7c3lzLmV4aXQobm90IHN5cy52ZXJzaW9uX2luZm9APDpAOjJAOj5AID49ICgzLDMpKSc7IHRoZW4KKwkgICAgICAgIGJyZWFrCisJICAgIGZpCisgICAgICAgICAgICBpbnRlcnA9CisJZG9uZQorICAgICAgICBpZiB0ZXN0IHgkaW50ZXJwID0geDsgdGhlbgorCSAgICBBQ19NU0dfRVJST1IoW3B5dGhvbiRQQUNLQUdFX1ZFUlNJT04gaW50ZXJwcmV0ZXIgbm90IGZvdW5kXSkKKwlmaQorICAgICAgICBBQ19NU0dfUkVTVUxUKCRpbnRlcnApCisJUFlUSE9OX0ZPUl9CVUlMRD0nX1BZVEhPTl9QUk9KRUNUX0JBU0U9JChhYnNfYnVpbGRkaXIpIF9QWVRIT05fSE9TVF9QTEFURk9STT0kKF9QWVRIT05fSE9TVF9QTEFURk9STSkgUFlUSE9OUEFUSD0kKHNoZWxsIHRlc3QgLWYgcHlidWlsZGRpci50eHQgJiYgZWNobyAkKGFic19idWlsZGRpcikvYGNhdCBweWJ1aWxkZGlyLnR4dGA6KSQoc3JjZGlyKS9MaWI6JChzcmNkaXIpL0xpYi8kKFBMQVRESVIpICckaW50ZXJwCisgICAgZmkKK2VsaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBtYXliZTsgdGhlbgorICAgIEFDX01TR19FUlJPUihbQ3Jvc3MgY29tcGlsaW5nIHJlcXVpcmVkIC0taG9zdD1IT1NULVRVUExFIGFuZCAtLWJ1aWxkPUFSQ0hdKQorZWxzZQorICAgIFBZVEhPTl9GT1JfQlVJTEQ9Jy4vJChCVUlMRFBZVEhPTikgLUUnCitmaQorQUNfU1VCU1QoUFlUSE9OX0ZPUl9CVUlMRCkKKwogZG5sIEVuc3VyZSB0aGF0IGlmIHByZWZpeCBpcyBzcGVjaWZpZWQsIGl0IGRvZXMgbm90IGVuZCBpbiBhIHNsYXNoLiBJZgogZG5sIGl0IGRvZXMsIHdlIGdldCBwYXRoIG5hbWVzIGNvbnRhaW5pbmcgJy8vJyB3aGljaCBpcyBib3RoIHVnbHkgYW5kCiBkbmwgY2FuIGNhdXNlIHRyb3VibGUuCkBAIC04OCwxNCArMTQ1LDIwIEBACiAKIEFDX01TR19DSEVDS0lORyhbZm9yIC0tZW5hYmxlLXVuaXZlcnNhbHNka10pCiBBQ19BUkdfRU5BQkxFKHVuaXZlcnNhbHNkaywKLQlBU19IRUxQX1NUUklORyhbLS1lbmFibGUtdW5pdmVyc2Fsc2RrQDw6QD1TREtESVJAOj5AXSwgW0J1aWxkIGFnYWluc3QgTWFjIE9TIFggMTAuNHUgU0RLIChwcGMvaTM4NildKSwKKwlBU19IRUxQX1NUUklORyhbLS1lbmFibGUtdW5pdmVyc2Fsc2RrQDw6QD1TREtESVJAOj5AXSwgW0J1aWxkIGZhdCBiaW5hcnkgYWdhaW5zdCBNYWMgT1MgWCBTREtdKSwKIFsKIAljYXNlICRlbmFibGV2YWwgaW4KIAl5ZXMpCi0JCWVuYWJsZXZhbD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrCi0JCWlmIHRlc3QgISAtZCAiJHtlbmFibGV2YWx9IgorCQkjIExvY2F0ZSB0aGUgYmVzdCB1c2FibGUgU0RLLCBzZWUgTWFjL1JFQURNRS50eHQgZm9yIG1vcmUKKwkJIyBpbmZvcm1hdGlvbgorCQllbmFibGV2YWw9ImAvdXNyL2Jpbi94Y29kZWJ1aWxkIC12ZXJzaW9uIC1zZGsgbWFjb3N4IFBhdGggMj4vZGV2L251bGxgIgorCQlpZiB0ZXN0IC16ICIke2VuYWJsZXZhbH0iCiAJCXRoZW4KLQkJCWVuYWJsZXZhbD0vCisJCQllbmFibGV2YWw9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkaworCQkJaWYgdGVzdCAhIC1kICIke2VuYWJsZXZhbH0iCisJCQl0aGVuCisJCQkJZW5hYmxldmFsPS8KKwkJCWZpCiAJCWZpCiAJCTs7CiAJZXNhYwpAQCAtMTI3LDcgKzE5MCwyMCBAQAogCiBBQ19TVUJTVChBUkNIX1JVTl8zMkJJVCkKIAorIyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByZWFzb25zIHdlIHByZWZlciB0byBzZWxlY3QgJzMyLWJpdCcgaWYgYXZhaWxhYmxlLAorIyBvdGhlcndpc2UgdXNlICdpbnRlbCcKIFVOSVZFUlNBTF9BUkNIUz0iMzItYml0IgoraWYgdGVzdCAiYHVuYW1lIC1zYCIgPSAiRGFyd2luIgordGhlbgorCWlmIHRlc3QgLW4gIiR7VU5JVkVSU0FMU0RLfSIKKwl0aGVuCisJCWlmIHRlc3QgLXogImAvdXNyL2Jpbi9maWxlICIke1VOSVZFUlNBTFNES30vdXNyL2xpYi9saWJTeXN0ZW0uZHlsaWIiIHwgZ3JlcCBwcGNgIgorCQl0aGVuCisJCQlVTklWRVJTQUxfQVJDSFM9ImludGVsIgorCQlmaQorCWZpCitmaQorCiBBQ19TVUJTVChMSVBPXzMyQklUX0ZMQUdTKQogQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtdW5pdmVyc2FsLWFyY2hzKQogQUNfQVJHX1dJVEgodW5pdmVyc2FsLWFyY2hzLApAQCAtMTM3LDcgKzIxMyw3IEBACiAJVU5JVkVSU0FMX0FSQ0hTPSIkd2l0aHZhbCIKIF0sCiBbCi0gCUFDX01TR19SRVNVTFQoMzItYml0KQorIAlBQ19NU0dfUkVTVUxUKCR7VU5JVkVSU0FMX0FSQ0hTfSkKIF0pCiAKIApAQCAtMjcyLDEwICszNDgsMjkgQEAKICMjICAgICAgICAgICAgICAgICAgICAgICAgICAgW1VzZSAoT3BlblN0ZXB8UmhhcHNvZHkpIGR5bmFtaWMgbGlua2VyXSkpCiAjIwogIyBTZXQgbmFtZSBmb3IgbWFjaGluZS1kZXBlbmRlbnQgbGlicmFyeSBmaWxlcwotQUNfU1VCU1QoTUFDSERFUCkKK0FDX0FSR19WQVIoW01BQ0hERVBdLCBbbmFtZSBmb3IgbWFjaGluZS1kZXBlbmRlbnQgbGlicmFyeSBmaWxlc10pCiBBQ19NU0dfQ0hFQ0tJTkcoTUFDSERFUCkKIGlmIHRlc3QgLXogIiRNQUNIREVQIgogdGhlbgorICAgICMgYXZvaWQgdXNpbmcgdW5hbWUgZm9yIGNyb3NzIGJ1aWxkcworICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgICAgICAgIyBhY19zeXNfc3lzdGVtIGFuZCBhY19zeXNfcmVsZWFzZSBhcmUgdXNlZCBmb3Igc2V0dGluZworICAgICAgICMgYSBsb3Qgb2YgZGlmZmVyZW50IHRoaW5ncyBpbmNsdWRpbmcgJ2RlZmluZV94b3Blbl9zb3VyY2UnCisgICAgICAgIyBpbiB0aGUgY2FzZSBzdGF0ZW1lbnQgYmVsb3cuCisJY2FzZSAiJGhvc3QiIGluCisJKi0qLWxpbnV4KikKKwkJYWNfc3lzX3N5c3RlbT1MaW51eAorCQk7OworCSotKi1jeWd3aW4qKQorCQlhY19zeXNfc3lzdGVtPUN5Z3dpbgorCQk7OworCSopCisJCSMgZm9yIG5vdywgbGltaXQgY3Jvc3MgYnVpbGRzIHRvIGtub3duIGNvbmZpZ3VyYXRpb25zCisJCU1BQ0hERVA9InVua25vd24iCisJCUFDX01TR19FUlJPUihbY3Jvc3MgYnVpbGQgbm90IHN1cHBvcnRlZCBmb3IgJGhvc3RdKQorCWVzYWMKKwlhY19zeXNfcmVsZWFzZT0KKyAgICBlbHNlCiAJYWNfc3lzX3N5c3RlbT1gdW5hbWUgLXNgCiAJaWYgdGVzdCAiJGFjX3N5c19zeXN0ZW0iID0gIkFJWCIgXAogCS1vICIkYWNfc3lzX3N5c3RlbSIgPSAiVW5peFdhcmUiIC1vICIkYWNfc3lzX3N5c3RlbSIgPSAiT3BlblVOSVgiOyB0aGVuCkBAIC0yODMsMTkgKzM3OCw0MyBAQAogCWVsc2UKIAkJYWNfc3lzX3JlbGVhc2U9YHVuYW1lIC1yYAogCWZpCi0JYWNfbWRfc3lzdGVtPWBlY2hvICRhY19zeXNfc3lzdGVtIHwKLQkJCSAgIHRyIC1kICdbLyBdJyB8IHRyICdbW0EtWl1dJyAnW1thLXpdXSdgCi0JYWNfbWRfcmVsZWFzZT1gZWNobyAkYWNfc3lzX3JlbGVhc2UgfAotCQkJICAgdHIgLWQgJ1svIF0nIHwgc2VkICdzL15bW0EtWl1dXC4vLycgfCBzZWQgJ3MvXC4uKi8vJ2AKLQlNQUNIREVQPSIkYWNfbWRfc3lzdGVtJGFjX21kX3JlbGVhc2UiCisgICAgZmkKKyAgICBhY19tZF9zeXN0ZW09YGVjaG8gJGFjX3N5c19zeXN0ZW0gfAorCQkJdHIgLWQgJ1svIF0nIHwgdHIgJ1tbQS1aXV0nICdbW2Etel1dJ2AKKyAgICBhY19tZF9yZWxlYXNlPWBlY2hvICRhY19zeXNfcmVsZWFzZSB8CisJCQl0ciAtZCAnWy8gXScgfCBzZWQgJ3MvXltbQS1aXV1cLi8vJyB8IHNlZCAncy9cLi4qLy8nYAorICAgIE1BQ0hERVA9IiRhY19tZF9zeXN0ZW0kYWNfbWRfcmVsZWFzZSIKIAotCWNhc2UgJE1BQ0hERVAgaW4KLQlsaW51eCopIE1BQ0hERVA9ImxpbnV4MiI7OworICAgIGNhc2UgJE1BQ0hERVAgaW4KKwlsaW51eCopIE1BQ0hERVA9ImxpbnV4Ijs7CiAJY3lnd2luKikgTUFDSERFUD0iY3lnd2luIjs7CiAJZGFyd2luKikgTUFDSERFUD0iZGFyd2luIjs7Ci0gICAgICAgIGlyaXg2NDYpIE1BQ0hERVA9ImlyaXg2Ijs7CisJaXJpeDY0NikgTUFDSERFUD0iaXJpeDYiOzsKIAknJykJTUFDSERFUD0idW5rbm93biI7OworICAgIGVzYWMKK2ZpCisKK0FDX1NVQlNUKF9QWVRIT05fSE9TVF9QTEFURk9STSkKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisJY2FzZSAiJGhvc3QiIGluCisJKi0qLWxpbnV4KikKKwkJY2FzZSAiJGhvc3RfY3B1IiBpbgorCQlhcm0qKQorCQkJX2hvc3RfY3B1PWFybQorCQkJOzsKKwkJKikKKwkJCV9ob3N0X2NwdT0kaG9zdF9jcHUKKwkJZXNhYworCQk7OworCSotKi1jeWd3aW4qKQorCQlfaG9zdF9jcHU9CisJCTs7CisJKikKKwkJIyBmb3Igbm93LCBsaW1pdCBjcm9zcyBidWlsZHMgdG8ga25vd24gY29uZmlndXJhdGlvbnMKKwkJTUFDSERFUD0idW5rbm93biIKKwkJQUNfTVNHX0VSUk9SKFtjcm9zcyBidWlsZCBub3Qgc3VwcG9ydGVkIGZvciAkaG9zdF0pCiAJZXNhYworCV9QWVRIT05fSE9TVF9QTEFURk9STT0iJE1BQ0hERVAke19ob3N0X2NwdTorLSRfaG9zdF9jcHV9IgogZmkKIAkKICMgU29tZSBzeXN0ZW1zIGNhbm5vdCBzdGFuZCBfWE9QRU5fU09VUkNFIGJlaW5nIGRlZmluZWQgYXQgYWxsOyB0aGV5CkBAIC0zODMsNyArNTAyLDggQEAKIAogaWYgdGVzdCAkZGVmaW5lX3hvcGVuX3NvdXJjZSA9IHllcwogdGhlbgotICBBQ19ERUZJTkUoX1hPUEVOX1NPVVJDRSwgNjAwLCAKKyAgIyBYL09wZW4gNywgaW5jb3Jwb3JhdGluZyBQT1NJWC4xLTIwMDgKKyAgQUNfREVGSU5FKF9YT1BFTl9TT1VSQ0UsIDcwMCwKICAgICAgICAgICAgIERlZmluZSB0byB0aGUgbGV2ZWwgb2YgWC9PcGVuIHRoYXQgeW91ciBzeXN0ZW0gc3VwcG9ydHMpCiAKICAgIyBPbiBUcnU2NCBVbml4IDQuMEYsIGRlZmluaW5nIF9YT1BFTl9TT1VSQ0UgYWxzbyByZXF1aXJlcwpAQCAtMzkzLDggKzUxMyw3IEBACiAgIEFDX0RFRklORShfWE9QRU5fU09VUkNFX0VYVEVOREVELCAxLAogICAgCSAgICBEZWZpbmUgdG8gYWN0aXZhdGUgVW5peDk1LWFuZC1lYXJsaWVyIGZlYXR1cmVzKQogCi0gIEFDX0RFRklORShfUE9TSVhfQ19TT1VSQ0UsIDIwMDExMkwsIERlZmluZSB0byBhY3RpdmF0ZSBmZWF0dXJlcyBmcm9tIElFRUUgU3RkcyAxMDAzLjEtMjAwMSkKLSAgCisgIEFDX0RFRklORShfUE9TSVhfQ19TT1VSQ0UsIDIwMDgwOUwsIERlZmluZSB0byBhY3RpdmF0ZSBmZWF0dXJlcyBmcm9tIElFRUUgU3RkcyAxMDAzLjEtMjAwOCkKIGZpCiAKICMKQEAgLTQyMywxMCArNTQyLDYgQEAKIENPTkZJR1VSRV9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9CiBFWFBPUlRfTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPScjJwogCi1BQ19NU0dfQ0hFQ0tJTkcobWFjaGluZSB0eXBlIGFzIHJlcG9ydGVkIGJ5IHVuYW1lIC1tKQotYWNfc3lzX21hY2hpbmU9YHVuYW1lIC1tYAotQUNfTVNHX1JFU1VMVCgkYWNfc3lzX21hY2hpbmUpCi0KICMgY2hlY2tzIGZvciBhbHRlcm5hdGl2ZSBwcm9ncmFtcwogCiAjIGNvbXBpbGVyIGZsYWdzIGFyZSBnZW5lcmF0ZWQgaW4gdHdvIHNldHMsIEJBU0VDRkxBR1MgYW5kIE9QVC4gIE9QVCBpcyBqdXN0CkBAIC00NjksNiArNTg0LDYzIEBACiBpZiB0ZXN0IC16ICIkQ0ZMQUdTIjsgdGhlbgogICAgICAgICBDRkxBR1M9CiBmaQorCitpZiB0ZXN0ICIkYWNfc3lzX3N5c3RlbSIgPSAiRGFyd2luIgordGhlbgorCSMgQ29tcGlsZXIgc2VsZWN0aW9uIG9uIE1hY09TWCBpcyBtb3JlIGNvbXBsaWNhdGVkIHRoYW4KKwkjIEFDX1BST0dfQ0MgY2FuIGhhbmRsZSwgc2VlIE1hYy9SRUFETUUudHh0IGZvciBtb3JlCisJIyBpbmZvcm1hdGlvbgorCWlmIHRlc3QgLXogIiR7Q0N9IgorCXRoZW4KKwkJZm91bmRfZ2NjPQorCQlmb3VuZF9jbGFuZz0KKwkJYXNfc2F2ZV9JRlM9JElGUzsgSUZTPToKKwkJZm9yIGFzX2RpciBpbiAkUEFUSAorCQlkbworCQkJSUZTPSRhc19zYXZlX0lGUworCQkJaWYgdGVzdCAteCAkYXNfZGlyL2djYzsgdGhlbgorCQkJCWlmIHRlc3QgLXogIiR7Zm91bmRfZ2NjfSI7IHRoZW4KKwkJCQkJZm91bmRfZ2NjPSRhc19kaXIvZ2NjCisJCQkJZmkKKwkJCWZpCisJCQlpZiB0ZXN0IC14ICRhc19kaXIvY2xhbmc7IHRoZW4KKwkJCQlpZiB0ZXN0IC16ICIke2ZvdW5kX2NsYW5nfSI7IHRoZW4KKwkJCQkJZm91bmRfY2xhbmc9JGFzX2Rpci9jbGFuZworCQkJCWZpCisJCQlmaQorCQlkb25lCisJCUlGUz0kYXNfc2F2ZV9JRlMKKworCQlpZiB0ZXN0IC1uICIkZm91bmRfZ2NjIiAtYSAtbiAiJGZvdW5kX2NsYW5nIgorCQl0aGVuCisJCQlpZiB0ZXN0IC1uICJgIiRmb3VuZF9nY2MiIC0tdmVyc2lvbiB8IGdyZXAgbGx2bS1nY2NgIgorCQkJdGhlbgorCQkJCUFDX01TR19OT1RJQ0UoW0RldGVjdGVkIGxsdm0tZ2NjLCBmYWxsaW5nIGJhY2sgdG8gY2xhbmddKQorCQkJCUNDPSIkZm91bmRfY2xhbmciCisJCQkJQ1hYPSIkZm91bmRfY2xhbmcrKyIKKwkJCWZpCisKKworCQllbGlmIHRlc3QgLXogIiRmb3VuZF9nY2MiIC1hIC1uICIkZm91bmRfY2xhbmciCisJCXRoZW4KKwkJCUFDX01TR19OT1RJQ0UoW05vIEdDQyBmb3VuZCwgdXNlIENMQU5HXSkKKwkJCUNDPSIkZm91bmRfY2xhbmciCisJCQlDWFg9IiRmb3VuZF9jbGFuZysrIgorCisJCWVsaWYgdGVzdCAteiAiJGZvdW5kX2djYyIgLWEgLXogIiRmb3VuZF9jbGFuZyIKKwkJdGhlbgorCQkJZm91bmRfY2xhbmc9YC91c3IvYmluL3hjcnVuIC1maW5kIGNsYW5nIDI+L2Rldi9udWxsYAorCQkJaWYgdGVzdCAtbiAiJHtmb3VuZF9jbGFuZ30iCisJCQl0aGVuCisJCQkJQUNfTVNHX05PVElDRShbVXNpbmcgY2xhbmcgZnJvbSBYY29kZS5hcHBdKQorCQkJCUNDPSIke2ZvdW5kX2NsYW5nfSIKKwkJCQlDWFg9ImAvdXNyL2Jpbi94Y3J1biAtZmluZCBjbGFuZysrYCIKKworCQkJIyBlbHNlOiB1c2UgZGVmYXVsdCBiZWhhdmlvdXIKKwkJCWZpCisJCWZpCisJZmkKK2ZpCiBBQ19QUk9HX0NDCiAKIEFDX1NVQlNUKENYWCkKQEAgLTUwMCw4ICs2NzIsOSBAQAogaWYgdGVzdCAteiAiJENYWCIKIHRoZW4KICAgICAgICAgY2FzZSAiJENDIiBpbgotICAgICAgICBnY2MpICAgIEFDX1BBVEhfUFJPRyhDWFgsIFtnKytdLCBbZysrXSwgW25vdGZvdW5kXSkgOzsKLSAgICAgICAgY2MpICAgICBBQ19QQVRIX1BST0coQ1hYLCBbYysrXSwgW2MrK10sIFtub3Rmb3VuZF0pIDs7CisgICAgICAgIGdjYykgICAgQUNfUEFUSF9UT09MKENYWCwgW2crK10sIFtnKytdLCBbbm90Zm91bmRdKSA7OworICAgICAgICBjYykgICAgIEFDX1BBVEhfVE9PTChDWFgsIFtjKytdLCBbYysrXSwgW25vdGZvdW5kXSkgOzsKKyAgICAgICAgY2xhbmd8Ki9jbGFuZykgICAgIEFDX1BBVEhfVE9PTChDWFgsIFtjbGFuZysrXSwgW2NsYW5nKytdLCBbbm90Zm91bmRdKSA7OwogICAgICAgICBlc2FjCiAJaWYgdGVzdCAiJENYWCIgPSAibm90Zm91bmQiCiAJdGhlbgpAQCAtNTEwLDcgKzY4Myw3IEBACiBmaQogaWYgdGVzdCAteiAiJENYWCIKIHRoZW4KLQlBQ19DSEVDS19QUk9HUyhDWFgsICRDQ0MgYysrIGcrKyBnY2MgQ0MgY3h4IGNjKysgY2wsIG5vdGZvdW5kKQorCUFDX0NIRUNLX1RPT0xTKENYWCwgJENDQyBjKysgZysrIGdjYyBDQyBjeHggY2MrKyBjbCwgbm90Zm91bmQpCiAJaWYgdGVzdCAiJENYWCIgPSAibm90Zm91bmQiCiAJdGhlbgogCQlDWFg9IiIKQEAgLTcwNywyMiArODgwLDIzIEBACiAKIEFDX01TR19DSEVDS0lORyhmb3IgLS1lbmFibGUtcHJvZmlsaW5nKQogQUNfQVJHX0VOQUJMRShwcm9maWxpbmcsCi0gICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wcm9maWxpbmddLCBbZW5hYmxlIEMtbGV2ZWwgY29kZSBwcm9maWxpbmddKSwKLVthY19zYXZlX2NjPSIkQ0MiCi0gQ0M9IiRDQyAtcGciCi0gQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1tpbnQgbWFpbigpIHsgcmV0dXJuIDA7IH1dXSldLAotICAgW2FjX2VuYWJsZV9wcm9maWxpbmc9InllcyJdLAotICAgW2FjX2VuYWJsZV9wcm9maWxpbmc9Im5vIl0sCi0gICBbYWNfZW5hYmxlX3Byb2ZpbGluZz0ibm8iXSkKLSBDQz0iJGFjX3NhdmVfY2MiXSkKLUFDX01TR19SRVNVTFQoJGFjX2VuYWJsZV9wcm9maWxpbmcpCisgICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wcm9maWxpbmddLCBbZW5hYmxlIEMtbGV2ZWwgY29kZSBwcm9maWxpbmddKSkKK2lmIHRlc3QgIngkZW5hYmxlX3Byb2ZpbGluZyIgPSB4eWVzOyB0aGVuCisgIGFjX3NhdmVfY2M9IiRDQyIKKyAgQ0M9IiQoQ0MpIC1wZyIKKyAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbaW50IG1haW4oKSB7IHJldHVybiAwOyB9XV0pXSwKKyAgICBbXSwKKyAgICBbZW5hYmxlX3Byb2ZpbGluZz1ub10pCisgIENDPSIkYWNfc2F2ZV9jYyIKK2Vsc2UKKyAgZW5hYmxlX3Byb2ZpbGluZz1ubworZmkKK0FDX01TR19SRVNVTFQoJGVuYWJsZV9wcm9maWxpbmcpCiAKLWNhc2UgIiRhY19lbmFibGVfcHJvZmlsaW5nIiBpbgotICAgICJ5ZXMiKQotCUJBU0VDRkxBR1M9Ii1wZyAkQkFTRUNGTEFHUyIKLQlMREZMQUdTPSItcGcgJExERkxBR1MiCi0gICAgOzsKLWVzYWMKK2lmIHRlc3QgIngkZW5hYmxlX3Byb2ZpbGluZyIgPSB4eWVzOyB0aGVuCisgIEJBU0VDRkxBR1M9Ii1wZyAkQkFTRUNGTEFHUyIKKyAgTERGTEFHUz0iLXBnICRMREZMQUdTIgorZmkKIAogQUNfTVNHX0NIRUNLSU5HKExETElCUkFSWSkKIApAQCAtNzg2LDExICs5NjAsNiBAQAogCSAgQkxETElCUkFSWT0nLVdsLCtiLCQoTElCRElSKSAtTC4gLWxweXRob24kKExEVkVSU0lPTiknCiAJICBSVU5TSEFSRUQ9U0hMSUJfUEFUSD1gcHdkYDoke1NITElCX1BBVEh9CiAJICA7OwotICAgIE9TRiopCi0JICBMRExJQlJBUlk9J2xpYnB5dGhvbiQoTERWRVJTSU9OKS5zbycKLQkgIEJMRExJQlJBUlk9Jy1ycGF0aCAkKExJQkRJUikgLUwuIC1scHl0aG9uJChMRFZFUlNJT04pJwotCSAgUlVOU0hBUkVEPUxEX0xJQlJBUllfUEFUSD1gcHdkYDoke0xEX0xJQlJBUllfUEFUSH0KLQkgIDs7CiAgICAgRGFyd2luKikKICAgICAJTERMSUJSQVJZPSdsaWJweXRob24kKExEVkVSU0lPTikuZHlsaWInCiAJQkxETElCUkFSWT0nLUwuIC1scHl0aG9uJChMRFZFUlNJT04pJwpAQCAtODExLDExICs5ODAsMTUgQEAKICAgZXNhYwogZmkKIAoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKwlSVU5TSEFSRUQ9CitmaQorCiBBQ19NU0dfUkVTVUxUKCRMRExJQlJBUlkpCiAKIEFDX1BST0dfUkFOTElCCiBBQ19TVUJTVChBUikKLUFDX0NIRUNLX1BST0dTKEFSLCBhciBhYWwsIGFyKQorQUNfQ0hFQ0tfVE9PTFMoQVIsIGFyIGFhbCwgYXIpCiAKICMgdHdlYWsgQVJGTEFHUyBvbmx5IGlmIHRoZSB1c2VyIGRpZG4ndCBzZXQgaXQgb24gdGhlIGNvbW1hbmQgbGluZQogQUNfU1VCU1QoQVJGTEFHUykKQEAgLTgyNCw1MSArOTk3LDE1IEBACiAgICAgICAgIEFSRkxBR1M9InJjIgogZmkKIAotQUNfU1VCU1QoU1ZOVkVSU0lPTikKLUFDX0NIRUNLX1BST0coU1ZOVkVSU0lPTiwgc3ZudmVyc2lvbiwgZm91bmQsIG5vdC1mb3VuZCkKLWlmIHRlc3QgJFNWTlZFUlNJT04gPSBmb3VuZAotdGhlbgotCVNWTlZFUlNJT049InN2bnZlcnNpb24gXCQoc3JjZGlyKSIKLWVsc2UKLQlTVk5WRVJTSU9OPSJlY2hvIFVudmVyc2lvbmVkIGRpcmVjdG9yeSIKK0FDX0NIRUNLX1RPT0xTKFtSRUFERUxGXSwgW3JlYWRlbGZdLCBbOl0pCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICAgIGNhc2UgIiRSRUFERUxGIiBpbgorCXJlYWRlbGZ8OikKKwlBQ19NU0dfRVJST1IoW3JlYWRlbGYgZm9yIHRoZSBob3N0IGlzIHJlcXVpcmVkIGZvciBjcm9zcyBidWlsZHNdKQorCTs7CisgICAgZXNhYwogZmkKLQotQUNfU1VCU1QoQkFTRUNQUEZMQUdTKQotaWYgdGVzdCAiJGFic19zcmNkaXIiICE9ICIkYWJzX2J1aWxkZGlyIjsgdGhlbgotICAgICMgSWYgd2UncmUgYnVpbGRpbmcgb3V0LW9mLXRyZWUsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBmb2xsb3dpbmcKLSAgICAjIHJlc291cmNlcyBnZXQgcGlja2VkIHVwIGJlZm9yZSB0aGVpciAkc3JjZGlyIGNvdW50ZXJwYXJ0cy4KLSAgICAjICAgT2JqZWN0cy8gLT4gdHlwZXNsb3RzLmluYwotICAgICMgICBJbmNsdWRlLyAtPiBQeXRob24tYXN0LmgsIGdyYW1pbml0LmgKLSAgICAjICAgUHl0aG9uLyAgLT4gaW1wb3J0bGliLmgKLSAgICAjIChBIHNpZGUgZWZmZWN0IG9mIHRoaXMgaXMgdGhhdCB0aGVzZSByZXNvdXJjZXMgd2lsbCBhdXRvbWF0aWNhbGx5IGJlCi0gICAgIyAgcmVnZW5lcmF0ZWQgd2hlbiBidWlsZGluZyBvdXQtb2YtdHJlZSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdAotICAgICMgIHRoZSAkc3JjZGlyIGNvdW50ZXJwYXJ0IGlzIHVwLXRvLWRhdGUuICBUaGlzIGlzIGFuIGFjY2VwdGFibGUgdHJhZGUKLSAgICAjICBvZmYuKQotICAgIEJBU0VDUFBGTEFHUz0iLUlPYmplY3RzIC1JSW5jbHVkZSAtSVB5dGhvbiIKLWVsc2UKLSAgICBCQVNFQ1BQRkxBR1M9IiIKLWZpCi0KLUFDX1NVQlNUKEhHVkVSU0lPTikKLUFDX1NVQlNUKEhHVEFHKQotQUNfU1VCU1QoSEdCUkFOQ0gpCi0KLWlmIHRlc3QgLWUgJHNyY2Rpci8uaGcvZGlyc3RhdGUKLXRoZW4KLUFDX0NIRUNLX1BST0coSEFTX0hHLCBoZywgZm91bmQsIG5vdC1mb3VuZCkKLWVsc2UKLUhBU19IRz1uby1yZXBvc2l0b3J5Ci1maQotaWYgdGVzdCAkSEFTX0hHID0gZm91bmQKLXRoZW4KLSAgICBIR1ZFUlNJT049ImhnIGlkIC1pIFwkKHNyY2RpcikiCi0gICAgSEdUQUc9ImhnIGlkIC10IFwkKHNyY2RpcikiCi0gICAgSEdCUkFOQ0g9ImhnIGlkIC1iIFwkKHNyY2RpcikiCi1lbHNlCi0gICAgSEdWRVJTSU9OPSIiCi0gICAgSEdUQUc9IiIKLSAgICBIR0JSQU5DSD0iIgotZmkKK0FDX1NVQlNUKFJFQURFTEYpCiAKIEFDX1NVQlNUKEFTRExHRU4pCiBBQ19DSEVDS19QUk9HUyhQWVRIT04sIHB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gcHl0aG9uMyBweXRob24sIG5vdC1mb3VuZCkKQEAgLTEwMjMsMTAgKzExNjAsMzIgQEAKICAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1mbm8tc3RyaWN0LWFsaWFzaW5nIgogICAgIGZpCiAKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyB1bnVzZWQgcmVzdWx0IHdhcm5pbmcpCisgICAgIGFjX3NhdmVfY2M9IiRDQyIKKyAgICAgQ0M9IiRDQyAtV3VudXNlZC1yZXN1bHQgLVdlcnJvciIKKyAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisgICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZywKKyAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgIFsKKwkgICBBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1tdXSkKKwkgXSxbCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nPXllcworCSBdLFsKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmc9bm8KKwkgXSkpCisgICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgorICAgICBDQz0iJGFjX3NhdmVfY2MiCisgICAgQUNfTVNHX1JFU1VMVCgkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmcpCisKKyAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZyA9IHllcworICAgIHRoZW4KKyAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1Xbm8tdW51c2VkLXJlc3VsdCIKKyAgICBmaQorCiAgICAgIyBpZiB1c2luZyBnY2Mgb24gYWxwaGEsIHVzZSAtbWllZWUgdG8gZ2V0IChuZWFyKSBmdWxsIElFRUUgNzU0CiAgICAgIyBzdXBwb3J0LiAgV2l0aG91dCB0aGlzLCB0cmVhdG1lbnQgb2Ygc3Vibm9ybWFscyBkb2Vzbid0IGZvbGxvdwogICAgICMgdGhlIHN0YW5kYXJkLgotICAgIGNhc2UgJGFjX3N5c19tYWNoaW5lIGluCisgICAgY2FzZSAkaG9zdCBpbgogICAgICAgICAgYWxwaGEqKQogICAgICAgICAgICAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1taWVlZSIKICAgICAgICAgICAgICAgICA7OwpAQCAtMTEwMCw3ICsxMjU5LDkgQEAKIAkgICAgIyBDYWxjdWxhdGUgdGhlIHJpZ2h0IGRlcGxveW1lbnQgdGFyZ2V0IGZvciB0aGlzIGJ1aWxkLgogCSAgICAjCiAJICAgIGN1cl90YXJnZXQ9YHN3X3ZlcnMgLXByb2R1Y3RWZXJzaW9uIHwgc2VkICdzL1woMTBcLltbMC05XV0qXCkuKi9cMS8nYAotCSAgICBpZiB0ZXN0ICR7Y3VyX3RhcmdldH0gJz4nIDEwLjI7IHRoZW4KKwkgICAgaWYgdGVzdCAke2N1cl90YXJnZXR9ICc+JyAxMC4yICYmIFwKKwkgICAgICAgdGVzdCAke2N1cl90YXJnZXR9ICc8JyAxMC42CisJICAgIHRoZW4KIAkJICAgIGN1cl90YXJnZXQ9MTAuMwogCQkgICAgaWYgdGVzdCAke2VuYWJsZV91bml2ZXJzYWxzZGt9OyB0aGVuCiAJCQkgICAgaWYgdGVzdCAiJHtVTklWRVJTQUxfQVJDSFN9IiA9ICJhbGwiOyB0aGVuCkBAIC0xMTM5LDkgKzEzMDAsNiBAQAogCSAgICBFWFBPUlRfTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPScnCiAKIAkgICAgOzsKLQlPU0YqKQotCSAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtbWllZWUiCi0JICAgIDs7CiAgICAgZXNhYwogICAgIDs7CiAKQEAgLTExNTAsOSArMTMwOCw2IEBACiAgICAgT3BlblVOSVgqfFVuaXhXYXJlKikKIAlCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtSyBwZW50aXVtLGhvc3QsaW5saW5lLGxvb3BfdW5yb2xsLGFsbG9jYSAiCiAJOzsKLSAgICBPU0YqKQotCUJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1pZWVlIC1zdGQiCi0gICAgCTs7CiAgICAgU0NPX1NWKikKIAlCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtYmVsZiAtS2k0ODYgLURTQ081IgogCTs7CkBAIC0xMTk3LDYgKzEzNTIsNyBAQAogQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgcHRocmVhZHMgYXJlIGF2YWlsYWJsZSB3aXRob3V0IG9wdGlvbnMpCiBBQ19DQUNIRV9WQUwoYWNfY3ZfcHRocmVhZF9pc19kZWZhdWx0LAogW0FDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAKIHZvaWQqIHJvdXRpbmUodm9pZCogcCl7cmV0dXJuIE5VTEw7fQpAQCAtMTIzMSw2ICsxMzg3LDcgQEAKIFthY19zYXZlX2NjPSIkQ0MiCiBDQz0iJENDIC1LcHRocmVhZCIKIEFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAKIHZvaWQqIHJvdXRpbmUodm9pZCogcCl7cmV0dXJuIE5VTEw7fQpAQCAtMTI1OSw2ICsxNDE2LDcgQEAKIFthY19zYXZlX2NjPSIkQ0MiCiBDQz0iJENDIC1LdGhyZWFkIgogQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKyNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHB0aHJlYWQuaD4KIAogdm9pZCogcm91dGluZSh2b2lkKiBwKXtyZXR1cm4gTlVMTDt9CkBAIC0xMjg3LDYgKzE0NDUsNyBAQAogW2FjX3NhdmVfY2M9IiRDQyIKIENDPSIkQ0MgLXB0aHJlYWQiCiBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWworI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8cHRocmVhZC5oPgogCiB2b2lkKiByb3V0aW5lKHZvaWQqIHApe3JldHVybiBOVUxMO30KQEAgLTEzNTMsMjEgKzE1MTIsNDIgQEAKIAogIyBjaGVja3MgZm9yIGhlYWRlciBmaWxlcwogQUNfSEVBREVSX1NUREMKK2FjX3NhdmVfY3BwZmxhZ3M9IiRDUFBGTEFHUyIKK0NQUEZMQUdTPSIkQ1BQRkxBR1MgLUkvdXNyL2luY2x1ZGUvbmN1cnNlc3ciCiBBQ19DSEVDS19IRUFERVJTKGFzbS90eXBlcy5oIGNvbmlvLmggY3Vyc2VzLmggZGlyZWN0LmggZGxmY24uaCBlcnJuby5oIFwKIGZjbnRsLmggZ3JwLmggXAotaWVlZWZwLmggaW8uaCBsYW5naW5mby5oIGxpYmludGwuaCBuY3Vyc2VzLmggcG9sbC5oIHByb2Nlc3MuaCBwdGhyZWFkLmggXAotc2hhZG93Lmggc2lnbmFsLmggc3RkaW50Lmggc3Ryb3B0cy5oIHRlcm1pb3MuaCB0aHJlYWQuaCBcCitpZWVlZnAuaCBpby5oIGxhbmdpbmZvLmggbGliaW50bC5oIG5jdXJzZXMuaCBwcm9jZXNzLmggcHRocmVhZC5oIFwKK3NjaGVkLmggc2hhZG93Lmggc2lnbmFsLmggc3RkaW50Lmggc3Ryb3B0cy5oIHRlcm1pb3MuaCBcCiB1bmlzdGQuaCB1dGltZS5oIFwKLXN5cy9hdWRpb2lvLmggc3lzL2JzZHR0eS5oIHN5cy9lcG9sbC5oIHN5cy9ldmVudC5oIHN5cy9maWxlLmggc3lzL2xvYWRhdmcuaCBcCi1zeXMvbG9jay5oIHN5cy9ta2Rldi5oIHN5cy9tb2RlbS5oIFwKLXN5cy9wYXJhbS5oIHN5cy9wb2xsLmggc3lzL3NlbGVjdC5oIHN5cy9zb2NrZXQuaCBzeXMvc3RhdHZmcy5oIHN5cy9zdGF0LmggXAotc3lzL3N5c2NhbGwuaCBzeXMvdGVybWlvLmggc3lzL3RpbWUuaCBcCi1zeXMvdGltZXMuaCBzeXMvdHlwZXMuaCBzeXMvdW4uaCBzeXMvdXRzbmFtZS5oIHN5cy93YWl0LmggcHR5LmggbGlidXRpbC5oIFwKLXN5cy9yZXNvdXJjZS5oIG5ldHBhY2tldC9wYWNrZXQuaCBzeXNleGl0cy5oIGJsdWV0b290aC5oIFwKK3BvbGwuaCBzeXMvZGV2cG9sbC5oIHN5cy9lcG9sbC5oIHN5cy9wb2xsLmggXAorc3lzL2F1ZGlvaW8uaCBzeXMveGF0dHIuaCBzeXMvYnNkdHR5Lmggc3lzL2V2ZW50Lmggc3lzL2ZpbGUuaCBzeXMvaW9jdGwuaCBcCitzeXMva2Vybl9jb250cm9sLmggc3lzL2xvYWRhdmcuaCBzeXMvbG9jay5oIHN5cy9ta2Rldi5oIHN5cy9tb2RlbS5oIFwKK3N5cy9wYXJhbS5oIHN5cy9zZWxlY3QuaCBzeXMvc2VuZGZpbGUuaCBzeXMvc29ja2V0Lmggc3lzL3N0YXR2ZnMuaCBcCitzeXMvc3RhdC5oIHN5cy9zeXNjYWxsLmggc3lzL3N5c19kb21haW4uaCBzeXMvdGVybWlvLmggc3lzL3RpbWUuaCBcCitzeXMvdGltZXMuaCBzeXMvdHlwZXMuaCBzeXMvdWlvLmggc3lzL3VuLmggc3lzL3V0c25hbWUuaCBzeXMvd2FpdC5oIHB0eS5oIFwKK2xpYnV0aWwuaCBzeXMvcmVzb3VyY2UuaCBuZXRwYWNrZXQvcGFja2V0Lmggc3lzZXhpdHMuaCBibHVldG9vdGguaCBcCiBibHVldG9vdGgvYmx1ZXRvb3RoLmggbGludXgvdGlwYy5oIHNwYXduLmggdXRpbC5oKQorQ1BQRkxBR1M9JGFjX3NhdmVfY3BwZmxhZ3MKIEFDX0hFQURFUl9ESVJFTlQKIEFDX0hFQURFUl9NQUpPUgogCisjIE9uIERhcndpbiAoT1MgWCkgbmV0L2lmLmggcmVxdWlyZXMgc3lzL3NvY2tldC5oIHRvIGJlIGltcG9ydGVkIGZpcnN0LgorQUNfQ0hFQ0tfSEVBREVSUyhbbmV0L2lmLmhdLCBbXSwgW10sCitbI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWZkZWYgU1REQ19IRUFERVJTCisjIGluY2x1ZGUgPHN0ZGxpYi5oPgorIyBpbmNsdWRlIDxzdGRkZWYuaD4KKyNlbHNlCisjIGlmZGVmIEhBVkVfU1RETElCX0gKKyMgIGluY2x1ZGUgPHN0ZGxpYi5oPgorIyBlbmRpZgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyMgaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCitdKQorCisKICMgT24gU29sYXJpcywgdGVybS5oIHJlcXVpcmVzIGN1cnNlcy5oCiBBQ19DSEVDS19IRUFERVJTKHRlcm0uaCwsLFsKICNpZmRlZiBIQVZFX0NVUlNFU19ICkBAIC0xMzg1LDYgKzE1NjUsMTMgQEAKICNlbmRpZgogXSkKIAorIyBPbiBMaW51eCwgY2FuLmggYW5kIGNhbi9yYXcuaCByZXF1aXJlIHN5cy9zb2NrZXQuaAorQUNfQ0hFQ0tfSEVBREVSUyhsaW51eC9jYW4uaCBsaW51eC9jYW4vcmF3LmgsLCxbCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKK10pCisKICMgY2hlY2tzIGZvciB0eXBlZGVmcwogd2FzX2l0X2RlZmluZWQ9bm8KIEFDX01TR19DSEVDS0lORyhmb3IgY2xvY2tfdCBpbiB0aW1lLmgpCkBAIC0xMzkzLDcgKzE1ODAsNiBAQAogXSkKIEFDX01TR19SRVNVTFQoJHdhc19pdF9kZWZpbmVkKQogCi0jIENoZWNrIHdoZXRoZXIgdXNpbmcgbWFrZWRldiByZXF1aXJlcyBkZWZpbmluZyBfT1NGX1NPVVJDRQogQUNfTVNHX0NIRUNLSU5HKGZvciBtYWtlZGV2KQogQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWwogI2lmIGRlZmluZWQoTUFKT1JfSU5fTUtERVYpCkBAIC0xNDA2LDE5ICsxNTkyLDYgQEAKIF1dLCBbWwogICBtYWtlZGV2KDAsIDApIF1dKQogXSxbYWNfY3ZfaGFzX21ha2VkZXY9eWVzXSxbYWNfY3ZfaGFzX21ha2VkZXY9bm9dKQotaWYgdGVzdCAiJGFjX2N2X2hhc19tYWtlZGV2IiA9ICJubyI7IHRoZW4KLSAgICAjIHdlIGRpZG4ndCBsaW5rLCB0cnkgaWYgX09TRl9TT1VSQ0Ugd2lsbCBhbGxvdyB1cyB0byBsaW5rCi0gICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWwotI2RlZmluZSBfT1NGX1NPVVJDRSAxCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gICAgXV0sCi0gICAgW1sgbWFrZWRldigwLCAwKSBdXSldLAotICAgIFthY19jdl9oYXNfbWFrZWRldj15ZXNdLAotICAgIFthY19jdl9oYXNfbWFrZWRldj1ub10pCi0gICAgaWYgdGVzdCAiJGFjX2N2X2hhc19tYWtlZGV2IiA9ICJ5ZXMiOyB0aGVuCi0gICAgICAgIEFDX0RFRklORShfT1NGX1NPVVJDRSwgMSwgW0RlZmluZSBfT1NGX1NPVVJDRSB0byBnZXQgdGhlIG1ha2VkZXYgbWFjcm8uXSkKLSAgICBmaQotZmkKIEFDX01TR19SRVNVTFQoJGFjX2N2X2hhc19tYWtlZGV2KQogaWYgdGVzdCAiJGFjX2N2X2hhc19tYWtlZGV2IiA9ICJ5ZXMiOyB0aGVuCiAgICAgQUNfREVGSU5FKEhBVkVfTUFLRURFViwgMSwgW0RlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSBtYWtlZGV2IG1hY3JvLl0pCkBAIC0xNDk4LDYgKzE2NzEsOCBAQAogCiBBQ19DSEVDS19UWVBFKHNzaXplX3QsCiAgIEFDX0RFRklORShIQVZFX1NTSVpFX1QsIDEsIFtEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyBzc2l6ZV90XSksLCkKK0FDX0NIRUNLX1RZUEUoX191aW50MTI4X3QsCisgIEFDX0RFRklORShIQVZFX0dDQ19VSU5UMTI4X1QsIDEsIFtEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyBfX3VpbnQxMjhfdF0pLCwpCiAKICMgU2l6ZXMgb2YgdmFyaW91cyBjb21tb24gYmFzaWMgdHlwZXMKICMgQU5TSSBDIHJlcXVpcmVzIHNpemVvZihjaGFyKSA9PSAxLCBzbyBubyBuZWVkIHRvIGNoZWNrIGl0CkBAIC0xNzI4LDcgKzE5MDMsNiBAQAogQUNfU1VCU1QoQ0NTSEFSRUQpCiBBQ19TVUJTVChMSU5LRk9SU0hBUkVEKQogCi1BQ19ERUZJTkVfVU5RVU9URUQoU0hMSUJfRVhULCAiJFNPIiwgW0RlZmluZSB0aGlzIHRvIGJlIGV4dGVuc2lvbiBvZiBzaGFyZWQgbGlicmFyaWVzIChpbmNsdWRpbmcgdGhlIGRvdCEpLl0pCiAjIExEU0hBUkVEIGlzIHRoZSBsZCAqY29tbWFuZCogdXNlZCB0byBjcmVhdGUgc2hhcmVkIGxpYnJhcnkKICMgLS0gImNjIC1HIiBvbiBTdW5PUyA1LngsICJsZCAtc2hhcmVkIiBvbiBJUklYIDUKICMgKFNoYXJlZCBsaWJyYXJpZXMgaW4gdGhpcyBpbnN0YW5jZSBhcmUgc2hhcmVkIG1vZHVsZXMgdG8gYmUgbG9hZGVkIGludG8KQEAgLTE3NTgsNyArMTkzMiw2IEBACiAJCWVsc2UKIAkJCUxEU0hBUkVEPSdsZCAtYicKIAkJZmkgOzsKLQlPU0YqKSBMRFNIQVJFRD0ibGQgLXNoYXJlZCAtZXhwZWN0X3VucmVzb2x2ZWQgXCIqXCIiOzsKIAlEYXJ3aW4vMS4zKikKIAkJTERTSEFSRUQ9JyQoQ0MpIC1idW5kbGUnCiAJCUxEQ1hYU0hBUkVEPSckKENYWCkgLWJ1bmRsZScKQEAgLTE5ODgsNiArMjE2MSw3IEBACiAKIAogIyBjaGVja3MgZm9yIGxpYnJhcmllcworQUNfQ0hFQ0tfTElCKHNlbmRmaWxlLCBzZW5kZmlsZSkKIEFDX0NIRUNLX0xJQihkbCwgZGxvcGVuKQkjIER5bmFtaWMgbGlua2luZyBmb3IgU3VuT1MvU29sYXJpcyBhbmQgU1lTVgogQUNfQ0hFQ0tfTElCKGRsZCwgc2hsX2xvYWQpCSMgRHluYW1pYyBsaW5raW5nIGZvciBIUC1VWAogCkBAIC0yMDYxLDYgKzIyMzUsMTUgQEAKIAogQUNfTVNHX1JFU1VMVCgkd2l0aF9zeXN0ZW1fZmZpKQogCisjIENoZWNrIGZvciB1c2Ugb2YgdGhlIHN5c3RlbSBsaWJtcGRlYyBsaWJyYXJ5CitBQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1zeXN0ZW0tbGlibXBkZWMpCitBQ19BUkdfV0lUSChzeXN0ZW1fbGlibXBkZWMsCisgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLXN5c3RlbS1saWJtcGRlY10sIFtidWlsZCBfZGVjaW1hbCBtb2R1bGUgdXNpbmcgYW4gaW5zdGFsbGVkIGxpYm1wZGVjIGxpYnJhcnldKSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgW3dpdGhfc3lzdGVtX2xpYm1wZGVjPSJubyJdKQorCitBQ19NU0dfUkVTVUxUKCR3aXRoX3N5c3RlbV9saWJtcGRlYykKKwogIyBDaGVjayBmb3Igc3VwcG9ydCBmb3IgbG9hZGFibGUgc3FsaXRlIGV4dGVuc2lvbnMKIEFDX01TR19DSEVDS0lORyhmb3IgLS1lbmFibGUtbG9hZGFibGUtc3FsaXRlLWV4dGVuc2lvbnMpCiBBQ19BUkdfRU5BQkxFKGxvYWRhYmxlLXNxbGl0ZS1leHRlbnNpb25zLApAQCAtMjExMiwyMSArMjI5NSwxMCBAQAogQUNfU1VCU1QoVVNFX1RIUkVBRF9NT0RVTEUpCiBVU0VfVEhSRUFEX01PRFVMRT0iIgogCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1kZWMtdGhyZWFkcykKIEFDX1NVQlNUKExETEFTVCkKLUFDX0FSR19XSVRIKGRlYy10aHJlYWRzLAotICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1kZWMtdGhyZWFkc10sIFt1c2UgREVDIEFscGhhL09TRjEgdGhyZWFkLXNhZmUgbGlicmFyaWVzXSksCi1bCi1BQ19NU0dfUkVTVUxUKCR3aXRodmFsKQotTERMQVNUPS10aHJlYWRzCi1pZiB0ZXN0ICIke3dpdGhfdGhyZWFkK3NldH0iICE9IHNldDsgdGhlbgotICAgd2l0aF90aHJlYWQ9IiR3aXRodmFsIjsKLWZpXSwKLVtBQ19NU0dfUkVTVUxUKG5vKV0pCiAKICMgVGVtcGxhdGVzIGZvciB0aGluZ3MgQUNfREVGSU5FZCBtb3JlIHRoYW4gb25jZS4KICMgRm9yIGEgc2luZ2xlIEFDX0RFRklORSwgbm8gdGVtcGxhdGUgaXMgbmVlZGVkLgotQUhfVEVNUExBVEUoQ19USFJFQURTLFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIE1hY2ggY3RocmVhZHMgcGFja2FnZV0pCiBBSF9URU1QTEFURShfUkVFTlRSQU5ULAogICBbRGVmaW5lIHRvIGZvcmNlIHVzZSBvZiB0aHJlYWQtc2FmZSBlcnJubywgaF9lcnJubywgYW5kIG90aGVyIGZ1bmN0aW9uc10pCiBBSF9URU1QTEFURShXSVRIX1RIUkVBRCwKQEAgLTIyMDgsMjQgKzIzODAsMTUgQEAKICAgICBBQ19NU0dfUkVTVUxUKCR1bmlzdGRfZGVmaW5lc19wdGhyZWFkcykKIAogICAgIEFDX0RFRklORShfUkVFTlRSQU5UKQotICAgIEFDX0NIRUNLX0hFQURFUihjdGhyZWFkcy5oLCBbQUNfREVGSU5FKFdJVEhfVEhSRUFEKQotICAgIEFDX0RFRklORShDX1RIUkVBRFMpCi0gICAgQUNfREVGSU5FKEhVUkRfQ19USFJFQURTLCAxLAotICAgIFtEZWZpbmUgaWYgeW91IGFyZSB1c2luZyBNYWNoIGN0aHJlYWRzIGRpcmVjdGx5IHVuZGVyIC9pbmNsdWRlXSkKLSAgICBMSUJTPSIkTElCUyAtbHRocmVhZHMiCi0gICAgVEhSRUFET0JKPSJQeXRob24vdGhyZWFkLm8iXSxbCi0gICAgQUNfQ0hFQ0tfSEVBREVSKG1hY2gvY3RocmVhZHMuaCwgW0FDX0RFRklORShXSVRIX1RIUkVBRCkKLSAgICBBQ19ERUZJTkUoQ19USFJFQURTKQotICAgIEFDX0RFRklORShNQUNIX0NfVEhSRUFEUywgMSwKLSAgICBbRGVmaW5lIGlmIHlvdSBhcmUgdXNpbmcgTWFjaCBjdGhyZWFkcyB1bmRlciBtYWNoIC9dKQotICAgIFRIUkVBRE9CSj0iUHl0aG9uL3RocmVhZC5vIl0sWwogICAgICMgSnVzdCBsb29raW5nIGZvciBwdGhyZWFkX2NyZWF0ZSBpbiBsaWJwdGhyZWFkIGlzIG5vdCBlbm91Z2g6CiAgICAgIyBvbiBIUC9VWCwgcHRocmVhZC5oIHJlbmFtZXMgcHRocmVhZF9jcmVhdGUgdG8gYSBkaWZmZXJlbnQgc3ltYm9sIG5hbWUuCiAgICAgIyBTbyB3ZSByZWFsbHkgaGF2ZSB0byBpbmNsdWRlIHB0aHJlYWQuaCwgYW5kIHRoZW4gbGluay4KICAgICBfbGlicz0kTElCUwogICAgIExJQlM9IiRMSUJTIC1scHRocmVhZCIKICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBwdGhyZWFkX2NyZWF0ZSBpbiAtbHB0aHJlYWRdKQotICAgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8cHRocmVhZC5oPgorICAgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHB0aHJlYWQuaD4KIAogdm9pZCAqIHN0YXJ0X3JvdXRpbmUgKHZvaWQgKmFyZykgeyBleGl0ICgwKTsgfV1dLCBbWwogcHRocmVhZF9jcmVhdGUgKE5VTEwsIE5VTEwsIHN0YXJ0X3JvdXRpbmUsIE5VTEwpXV0pXSxbCkBAIC0yMjU0LDcgKzI0MTcsNyBAQAogICAgIExJQlM9IiRMSUJTIC1sY21hIgogICAgIFRIUkVBRE9CSj0iUHl0aG9uL3RocmVhZC5vIl0sWwogICAgIFVTRV9USFJFQURfTU9EVUxFPSIjIl0pCi0gICAgXSldKV0pXSldKV0pXSkKKyAgICBdKV0pXSldKV0pCiAKICAgICBBQ19DSEVDS19MSUIobXBjLCB1c2NvbmZpZywgW0FDX0RFRklORShXSVRIX1RIUkVBRCkKICAgICBMSUJTPSIkTElCUyAtbG1wYyIKQEAgLTIyNjcsMTUgKzI0MzAsNiBAQAogICAgICAgVEhSRUFET0JKPSJQeXRob24vdGhyZWFkLm8iCiAgICAgICBVU0VfVEhSRUFEX01PRFVMRT0iIl0pCiAgICAgZmkKLQotICAgIGlmIHRlc3QgIiRVU0VfVEhSRUFEX01PRFVMRSIgIT0gIiMiCi0gICAgdGhlbgotICAgICAgICAjIElmIHRoZSBhYm92ZSBjaGVja3MgZGlkbid0IGRpc2FibGUgdGhyZWFkcywgKGF0IGxlYXN0KSBPU0YxCi0gICAgICAgICMgbmVlZHMgdGhpcyAnLXRocmVhZHMnIGFyZ3VtZW50IGR1cmluZyBsaW5raW5nLgotICAgICAgICBjYXNlICRhY19zeXNfc3lzdGVtIGluCi0gICAgICAgIE9TRjEpIExETEFTVD0tdGhyZWFkczs7Ci0gICAgICAgIGVzYWMKLSAgICBmaQogZmkKIAogaWYgdGVzdCAiJHBvc2l4X3RocmVhZHMiID0gInllcyI7IHRoZW4KQEAgLTIzMDAsNyArMjQ1NCw5IEBACiAKICAgICAgIEFDX01TR19DSEVDS0lORyhpZiBQVEhSRUFEX1NDT1BFX1NZU1RFTSBpcyBzdXBwb3J0ZWQpCiAgICAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfcHRocmVhZF9zeXN0ZW1fc3VwcG9ydGVkLAotICAgICAgW0FDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyAgICAgIFtBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWworICAgICAgI2luY2x1ZGUgPHN0ZGlvLmg+CisgICAgICAjaW5jbHVkZSA8cHRocmVhZC5oPgogICAgICAgdm9pZCAqZm9vKHZvaWQgKnBhcm0pIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICB9CkBAIC0yNTM5LDEyICsyNjk1LDEyIEBACiBpZiB0ZXN0IC16ICIkd2l0aF9weW1hbGxvYyIKIHRoZW4KICAgICB3aXRoX3B5bWFsbG9jPSJ5ZXMiCi0gICAgQUJJRkxBR1M9IiR7QUJJRkxBR1N9bSIKIGZpCiBpZiB0ZXN0ICIkd2l0aF9weW1hbGxvYyIgIT0gIm5vIgogdGhlbgogICAgIEFDX0RFRklORShXSVRIX1BZTUFMTE9DLCAxLCAKICAgICAgW0RlZmluZSBpZiB5b3Ugd2FudCB0byBjb21waWxlIGluIFB5dGhvbi1zcGVjaWZpYyBtYWxsb2NzXSkKKyAgICBBQklGTEFHUz0iJHtBQklGTEFHU31tIgogZmkKIEFDX01TR19SRVNVTFQoJHdpdGhfcHltYWxsb2MpCiAKQEAgLTI2MTMsMjMgKzI3NjksMzUgQEAKIGVsc2UKIAlNQUNIREVQX09CSlM9IiRNQUNIREVQX09CSlMgJGV4dHJhX21hY2hkZXBfb2JqcyIKIGZpCi1BQ19NU0dfUkVTVUxUKE1BQ0hERVBfT0JKUykKK2lmIHRlc3QgLXogIiRNQUNIREVQX09CSlMiOyB0aGVuCisgIEFDX01TR19SRVNVTFQoW25vbmVdKQorZWxzZQorICBBQ19NU0dfUkVTVUxUKFskTUFDSERFUF9PQkpTXSkKK2ZpCiAKICMgY2hlY2tzIGZvciBsaWJyYXJ5IGZ1bmN0aW9ucwogQUNfQ0hFQ0tfRlVOQ1MoYWxhcm0gYWNjZXB0NCBzZXRpdGltZXIgZ2V0aXRpbWVyIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IGNob3duIFwKLSBjbG9jayBjb25mc3RyIGN0ZXJtaWQgZXhlY3YgZmNobW9kIGZjaG93biBmb3JrIGZwYXRoY29uZiBmdGltZSBmdHJ1bmNhdGUgXAotIGdhaV9zdHJlcnJvciBnZXRncm91cHMgZ2V0bG9naW4gZ2V0bG9hZGF2ZyBnZXRwZWVybmFtZSBnZXRwZ2lkIGdldHBpZCBcCisgY2xvY2sgY29uZnN0ciBjdGVybWlkIGV4ZWN2IGZhY2Nlc3NhdCBmY2htb2QgZmNobW9kYXQgZmNob3duIGZjaG93bmF0IFwKKyBmZXhlY3ZlIGZkb3BlbmRpciBmb3JrIGZwYXRoY29uZiBmc3RhdGF0IGZ0aW1lIGZ0cnVuY2F0ZSBmdXRpbWVzYXQgXAorIGZ1dGltZW5zIGZ1dGltZXMgZ2FpX3N0cmVycm9yIFwKKyBnZXRncm91cGxpc3QgZ2V0Z3JvdXBzIGdldGxvZ2luIGdldGxvYWRhdmcgZ2V0cGVlcm5hbWUgZ2V0cGdpZCBnZXRwaWQgXAogIGdldHByaW9yaXR5IGdldHJlc3VpZCBnZXRyZXNnaWQgZ2V0cHdlbnQgZ2V0c3BuYW0gZ2V0c3BlbnQgZ2V0c2lkIGdldHdkIFwKLSBpbml0Z3JvdXBzIGtpbGwga2lsbHBnIGxjaG1vZCBsY2hvd24gbHN0YXQgbWJydG93YyBta2ZpZm8gbWtub2QgbWt0aW1lIFwKLSBtcmVtYXAgbmljZSBwYXRoY29uZiBwYXVzZSBwbG9jayBwb2xsIHB0aHJlYWRfaW5pdCBcCi0gcHV0ZW52IHJlYWRsaW5rIHJlYWxwYXRoIFwKLSBzZWxlY3Qgc2VtX29wZW4gc2VtX3RpbWVkd2FpdCBzZW1fZ2V0dmFsdWUgc2VtX3VubGluayBzZXRlZ2lkIHNldGV1aWQgXAotIHNldGdpZCBcCi0gc2V0bG9jYWxlIHNldHJlZ2lkIHNldHJldWlkIHNldHJlc3VpZCBzZXRyZXNnaWQgc2V0c2lkIHNldHBnaWQgc2V0cGdycCBzZXR1aWQgc2V0dmJ1ZiBcCi0gc2lnYWN0aW9uIHNpZ2ludGVycnVwdCBzaWdyZWxzZSBzbnByaW50ZiBzdHJmdGltZSBzdHJsY3B5IFwKKyBpZl9uYW1laW5kZXggXAorIGluaXRncm91cHMga2lsbCBraWxscGcgbGNobW9kIGxjaG93biBsb2NrZiBsaW5rYXQgbHN0YXQgbHV0aW1lcyBtbWFwIFwKKyBtZW1yY2hyIG1icnRvd2MgbWtkaXJhdCBta2ZpZm8gXAorIG1rZmlmb2F0IG1rbm9kIG1rbm9kYXQgbWt0aW1lIG1yZW1hcCBuaWNlIG9wZW5hdCBwYXRoY29uZiBwYXVzZSBwaXBlMiBwbG9jayBwb2xsIFwKKyBwb3NpeF9mYWxsb2NhdGUgcG9zaXhfZmFkdmlzZSBwcmVhZCBcCisgcHRocmVhZF9pbml0IHB0aHJlYWRfa2lsbCBwdXRlbnYgcHdyaXRlIHJlYWRsaW5rIHJlYWRsaW5rYXQgcmVhZHYgcmVhbHBhdGggcmVuYW1lYXQgXAorIHNlbGVjdCBzZW1fb3BlbiBzZW1fdGltZWR3YWl0IHNlbV9nZXR2YWx1ZSBzZW1fdW5saW5rIHNlbmRmaWxlIHNldGVnaWQgc2V0ZXVpZCBcCisgc2V0Z2lkIHNldGhvc3RuYW1lIFwKKyBzZXRsb2NhbGUgc2V0cmVnaWQgc2V0cmV1aWQgc2V0cmVzdWlkIHNldHJlc2dpZCBzZXRzaWQgc2V0cGdpZCBzZXRwZ3JwIHNldHByaW9yaXR5IHNldHVpZCBzZXR2YnVmIFwKKyBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IHNjaGVkX3NldGFmZmluaXR5IHNjaGVkX3NldHNjaGVkdWxlciBzY2hlZF9zZXRwYXJhbSBcCisgc2NoZWRfcnJfZ2V0X2ludGVydmFsIFwKKyBzaWdhY3Rpb24gc2lnYWx0c3RhY2sgc2lnaW50ZXJydXB0IHNpZ3BlbmRpbmcgc2lncmVsc2UgXAorIHNpZ3RpbWVkd2FpdCBzaWd3YWl0IHNpZ3dhaXRpbmZvIHNucHJpbnRmIHN0cmZ0aW1lIHN0cmxjcHkgc3ltbGlua2F0IHN5bmMgXAogIHN5c2NvbmYgdGNnZXRwZ3JwIHRjc2V0cGdycCB0ZW1wbmFtIHRpbWVnbSB0aW1lcyB0bXBmaWxlIHRtcG5hbSB0bXBuYW1fciBcCi0gdHJ1bmNhdGUgdW5hbWUgdW5zZXRlbnYgdXRpbWVzIHdhaXRwaWQgd2FpdDMgd2FpdDQgXAotIHdjc2NvbGwgd2NzZnRpbWUgd2NzeGZybSBfZ2V0cHR5KQorIHRydW5jYXRlIHVuYW1lIHVubGlua2F0IHVuc2V0ZW52IHV0aW1lbnNhdCB1dGltZXMgd2FpdGlkIHdhaXRwaWQgd2FpdDMgd2FpdDQgXAorIHdjc2NvbGwgd2NzZnRpbWUgd2NzeGZybSB3cml0ZXYgX2dldHB0eSkKIAogQUNfQ0hFQ0tfREVDTChkaXJmZCwKICAgICBBQ19ERUZJTkUoSEFWRV9ESVJGRCwgMSwKQEAgLTI2ODEsNiArMjg0OSwxMiBAQAogICAgQUNfTVNHX1JFU1VMVCh5ZXMpXSwKICAgW0FDX01TR19SRVNVTFQobm8pCiBdKQorQUNfTVNHX0NIRUNLSU5HKGZvciBlcG9sbF9jcmVhdGUxKQorQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxzeXMvZXBvbGwuaD5dXSwgW1t2b2lkICp4PWVwb2xsX2NyZWF0ZTFdXSldLAorICBbQUNfREVGSU5FKEhBVkVfRVBPTExfQ1JFQVRFMSwgMSwgRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnZXBvbGxfY3JlYXRlMScgZnVuY3Rpb24uKQorICAgQUNfTVNHX1JFU1VMVCh5ZXMpXSwKKyAgW0FDX01TR19SRVNVTFQobm8pCitdKQogQUNfTVNHX0NIRUNLSU5HKGZvciBrcXVldWUpCiBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CkBAIC0yOTExLDYgKzMwODUsMjAgQEAKICAgICBdKQogKQogCitBQ19DSEVDS19GVU5DUyhjbG9ja19nZXR0aW1lLCBbXSwgWworICAgIEFDX0NIRUNLX0xJQihydCwgY2xvY2tfZ2V0dGltZSwgWworICAgICAgICBBQ19ERUZJTkUoSEFWRV9DTE9DS19HRVRUSU1FLCAxKQorICAgICAgICBBQ19ERUZJTkUoVElNRU1PRFVMRV9MSUIsIFtydF0sCisgICAgICAgICAgICAgICAgICBbTGlicmFyeSBuZWVkZWQgYnkgdGltZW1vZHVsZS5jOiBsaWJydCBtYXkgYmUgbmVlZGVkIGZvciBjbG9ja19nZXR0aW1lKCldKQorICAgIF0pCitdKQorCitBQ19DSEVDS19GVU5DUyhjbG9ja19nZXRyZXMsIFtdLCBbCisgICAgQUNfQ0hFQ0tfTElCKHJ0LCBjbG9ja19nZXRyZXMsIFsKKyAgICAgICAgQUNfREVGSU5FKEhBVkVfQ0xPQ0tfR0VUUkVTLCAxKQorICAgIF0pCitdKQorCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG1ham9yLCBtaW5vciwgYW5kIG1ha2VkZXYpCiBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCiAjaWYgZGVmaW5lZChNQUpPUl9JTl9NS0RFVikKQEAgLTI5NDcsNiArMzEzNSw3IEBACiAgIEFDX01TR19DSEVDS0lORyhnZXRhZGRyaW5mbyBidWcpCiAgIEFDX0NBQ0hFX1ZBTChhY19jdl9idWdneV9nZXRhZGRyaW5mbywKICAgQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1tbCisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxuZXRkYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtMzAzNSwxMiArMzIyNCwxNyBAQAogXV1dKV0sCiBbYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89bm9dLAogW2FjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPXllc10sCi1bYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89eWVzXSkpCitbCitpZiB0ZXN0ICIke2VuYWJsZV9pcHY2K3NldH0iID0gc2V0OyB0aGVuCisgIGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPSJubyAtLSBjb25maWd1cmVkIHdpdGggLS0oZW58ZGlzKWFibGUtaXB2NiIKK2Vsc2UKKyAgYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89eWVzCitmaV0pKQogZmkKIAogQUNfTVNHX1JFU1VMVCgkYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm8pCiAKLWlmIHRlc3QgJGhhdmVfZ2V0YWRkcmluZm8gPSBubyAtbyAiJGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvIiA9IHllcworaWYgdGVzdCAkaGF2ZV9nZXRhZGRyaW5mbyA9IG5vIHx8IHRlc3QgIiRhY19jdl9idWdneV9nZXRhZGRyaW5mbyIgPSB5ZXMKIHRoZW4KIAlpZiB0ZXN0ICRpcHY2ID0geWVzCiAJdGhlbgpAQCAtMzMzMiw2ICszNTI2LDIxIEBACiBmaV0sCiBbQUNfTVNHX1JFU1VMVChkZWZhdWx0IExJQkM9IiRMSUJDIildKQogCisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICogQ2hlY2sgZm9yIGdjYyB4NjQgaW5saW5lIGFzc2VtYmxlciAqCisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0FDX01TR19DSEVDS0lORyhmb3IgeDY0IGdjYyBpbmxpbmUgYXNzZW1ibGVyKQorQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLCBbWworICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIm1vdnEgJXJjeCwgJXJheCIpOworXV0pXSxbaGF2ZV9nY2NfYXNtX2Zvcl94NjQ9eWVzXSxbaGF2ZV9nY2NfYXNtX2Zvcl94NjQ9bm9dKQorQUNfTVNHX1JFU1VMVCgkaGF2ZV9nY2NfYXNtX2Zvcl94NjQpCitpZiB0ZXN0ICIkaGF2ZV9nY2NfYXNtX2Zvcl94NjQiID0geWVzCit0aGVuCisgICAgQUNfREVGSU5FKEhBVkVfR0NDX0FTTV9GT1JfWDY0LCAxLAorICAgIFtEZWZpbmUgaWYgd2UgY2FuIHVzZSB4NjQgZ2NjIGlubGluZSBhc3NlbWJsZXJdKQorZmkKKwogIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogIyAqIENoZWNrIGZvciB2YXJpb3VzIHByb3BlcnRpZXMgb2YgZmxvYXRpbmcgcG9pbnQgKgogIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMzQ4MCw3ICszNjg5LDcgQEAKIExJQlM9IiRMSUJTICRMSUJNIgogCiBBQ19DSEVDS19GVU5DUyhbYWNvc2ggYXNpbmggYXRhbmggY29weXNpZ24gZXJmIGVyZmMgZXhwbTEgZmluaXRlIGdhbW1hXSkKLUFDX0NIRUNLX0ZVTkNTKFtoeXBvdCBsZ2FtbWEgbG9nMXAgcm91bmQgdGdhbW1hXSkKK0FDX0NIRUNLX0ZVTkNTKFtoeXBvdCBsZ2FtbWEgbG9nMXAgbG9nMiByb3VuZCB0Z2FtbWFdKQogQUNfQ0hFQ0tfREVDTFMoW2lzaW5mLCBpc25hbiwgaXNmaW5pdGVdLCBbXSwgW10sIFtbI2luY2x1ZGUgPG1hdGguaD5dXSkKIAogIyBPbiBGcmVlQlNEIDYuMiwgaXQgYXBwZWFycyB0aGF0IHRhbmgoLTAuKSByZXR1cm5zIDAuIGluc3RlYWQgb2YKQEAgLTM2NzgsNTcgKzM4ODcsMTkgQEAKICAgQUNfTVNHX1JFU1VMVCgkYWNfY3Zfd2NoYXJfdF9zaWduZWQpCiBmaQogCi1BQ19NU0dfQ0hFQ0tJTkcod2hhdCB0eXBlIHRvIHVzZSBmb3Igc3RyKQotQUNfQVJHX1dJVEgod2lkZS11bmljb2RlLCAKLSAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtd2lkZS11bmljb2RlXSwgW1VzZSA0LWJ5dGUgVW5pY29kZSBjaGFyYWN0ZXJzIChkZWZhdWx0IGlzIDIgYnl0ZXMpXSksCi1bCi1pZiB0ZXN0ICIkd2l0aHZhbCIgIT0gbm8KLXRoZW4gdW5pY29kZV9zaXplPSI0IgotZWxzZSB1bmljb2RlX3NpemU9IjIiCi1maQotXSwKLVsKLWNhc2UgIiRoYXZlX3VjczRfdGNsIiBpbgotICB5ZXMpIHVuaWNvZGVfc2l6ZT0iNCI7OwotICAqKSAgIHVuaWNvZGVfc2l6ZT0iMiIgOzsKLWVzYWMKLV0pCi0KLUFIX1RFTVBMQVRFKFB5X1VOSUNPREVfU0laRSwKLSAgW0RlZmluZSBhcyB0aGUgc2l6ZSBvZiB0aGUgdW5pY29kZSB0eXBlLl0pCi1jYXNlICIkdW5pY29kZV9zaXplIiBpbgotICA0KQotICAgICBBQ19ERUZJTkUoUHlfVU5JQ09ERV9TSVpFLCA0KQotICAgICBBQklGTEFHUz0iJHtBQklGTEFHU311IgotICAgICA7OwotICAqKSBBQ19ERUZJTkUoUHlfVU5JQ09ERV9TSVpFLCAyKSA7OwotZXNhYwotCi1BSF9URU1QTEFURShQWV9VTklDT0RFX1RZUEUsCi0gIFtEZWZpbmUgYXMgdGhlIGludGVncmFsIHR5cGUgdXNlZCBmb3IgVW5pY29kZSByZXByZXNlbnRhdGlvbi5dKQotCiAjIHdjaGFyX3QgaXMgb25seSB1c2FibGUgaWYgaXQgbWFwcyB0byBhbiB1bnNpZ25lZCB0eXBlCi1pZiB0ZXN0ICIkdW5pY29kZV9zaXplIiA9ICIkYWNfY3Zfc2l6ZW9mX3djaGFyX3QiIFwKK2lmIHRlc3QgIiRhY19jdl9zaXplb2Zfd2NoYXJfdCIgLWdlIDIgXAogICAgICAgICAgIC1hICIkYWNfY3Zfd2NoYXJfdF9zaWduZWQiID0gIm5vIgogdGhlbgotICBQWV9VTklDT0RFX1RZUEU9IndjaGFyX3QiCisgIEhBVkVfVVNBQkxFX1dDSEFSX1Q9InllcyIKICAgQUNfREVGSU5FKEhBVkVfVVNBQkxFX1dDSEFSX1QsIDEsCiAgIFtEZWZpbmUgaWYgeW91IGhhdmUgYSB1c2VhYmxlIHdjaGFyX3QgdHlwZSBkZWZpbmVkIGluIHdjaGFyLmg7IHVzZWFibGUKICAgIG1lYW5zIHdjaGFyX3QgbXVzdCBiZSBhbiB1bnNpZ25lZCB0eXBlIHdpdGggYXQgbGVhc3QgMTYgYml0cy4gKHNlZQogICAgSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgpLl0pCi0gIEFDX0RFRklORShQWV9VTklDT0RFX1RZUEUsd2NoYXJfdCkKLWVsaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9zaG9ydCIgPSAiJHVuaWNvZGVfc2l6ZSIKLXRoZW4KLSAgICAgUFlfVU5JQ09ERV9UWVBFPSJ1bnNpZ25lZCBzaG9ydCIKLSAgICAgQUNfREVGSU5FKFBZX1VOSUNPREVfVFlQRSx1bnNpZ25lZCBzaG9ydCkKLWVsaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9sb25nIiA9ICIkdW5pY29kZV9zaXplIgotdGhlbgotICAgICBQWV9VTklDT0RFX1RZUEU9InVuc2lnbmVkIGxvbmciCi0gICAgIEFDX0RFRklORShQWV9VTklDT0RFX1RZUEUsdW5zaWduZWQgbG9uZykKIGVsc2UKLSAgICAgUFlfVU5JQ09ERV9UWVBFPSJubyB0eXBlIGZvdW5kIgorICBIQVZFX1VTQUJMRV9XQ0hBUl9UPSJubyB1c2FibGUgd2NoYXJfdCBmb3VuZCIKIGZpCi1BQ19NU0dfUkVTVUxUKCRQWV9VTklDT0RFX1RZUEUpCitBQ19NU0dfUkVTVUxUKCRIQVZFX1VTQUJMRV9XQ0hBUl9UKQogCiAjIGNoZWNrIGZvciBlbmRpYW5uZXNzCiBBQ19DX0JJR0VORElBTgpAQCAtMzc4OSw2ICszOTYwLDggQEAKIGZpCiBBQ19NU0dfUkVTVUxUKCRTTykKIAorQUNfREVGSU5FX1VOUVVPVEVEKFNITElCX0VYVCwgIiRTTyIsIFtEZWZpbmUgdGhpcyB0byBiZSBleHRlbnNpb24gb2Ygc2hhcmVkIGxpYnJhcmllcyAoaW5jbHVkaW5nIHRoZSBkb3QhKS5dKQorCiAjIENoZWNrIHdoZXRoZXIgcmlnaHQgc2hpZnRpbmcgYSBuZWdhdGl2ZSBpbnRlZ2VyIGV4dGVuZHMgdGhlIHNpZ24gYml0CiAjIG9yIGZpbGxzIHdpdGggemVyb3MgKGxpa2UgdGhlIENyYXkgSjkwLCBhY2NvcmRpbmcgdG8gVGltIFBldGVycykuCiBBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciByaWdodCBzaGlmdCBleHRlbmRzIHRoZSBzaWduIGJpdCkKQEAgLTM4MzUsNyArNDAwOCw3IEBACiAjIHdpdGggc2V0dXAucHkuCiBweV9jdl9saWJfcmVhZGxpbmU9bm8KIEFDX01TR19DSEVDS0lORyhbaG93IHRvIGxpbmsgcmVhZGxpbmUgbGlic10pCi1mb3IgcHlfbGlidGVybWNhcCBpbiAiIiBuY3Vyc2VzdyBuY3Vyc2VzIGN1cnNlcyB0ZXJtY2FwOyBkbworZm9yIHB5X2xpYnRlcm1jYXAgaW4gIiIgdGluZm8gbmN1cnNlc3cgbmN1cnNlcyBjdXJzZXMgdGVybWNhcDsgZG8KICAgaWYgdGVzdCAteiAiJHB5X2xpYnRlcm1jYXAiOyB0aGVuCiAgICAgUkVBRExJTkVfTElCUz0iLWxyZWFkbGluZSIKICAgZWxzZQpAQCAtNDA3OCw2ICs0MjUxLDggQEAKICAgW0RlZmluZSBpZiB5b3UgaGF2ZSBzdHJ1Y3Qgc3RhdC5zdF9tdGltZW5zZWNdKQogZmkKIAorYWNfc2F2ZV9jcHBmbGFncz0iJENQUEZMQUdTIgorQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSS91c3IvaW5jbHVkZS9uY3Vyc2VzdyIKICMgT24gSFAvVVggMTEuMCwgbXZ3ZGVsY2ggaXMgYSBibG9jayB3aXRoIGEgcmV0dXJuIHN0YXRlbWVudAogQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgbXZ3ZGVsY2ggaXMgYW4gZXhwcmVzc2lvbikKIEFDX0NBQ0hFX1ZBTChhY19jdl9tdndkZWxjaF9pc19leHByZXNzaW9uLApAQCAtNDEzMiwyNyArNDMwNywzNCBAQAogICAgQUNfTVNHX1JFU1VMVCh5ZXMpXSwKICAgW0FDX01TR19SRVNVTFQobm8pXQogKQorIyBsYXN0IGN1cnNlcyBjb25maWd1cmUgY2hlY2sKK0NQUEZMQUdTPSRhY19zYXZlX2NwcGZsYWdzCiAKLUFDX01TR19DSEVDS0lORyhmb3IgL2Rldi9wdG14KQorQUNfTVNHX05PVElDRShbY2hlY2tpbmcgZm9yIGRldmljZSBmaWxlc10pCiAKLWlmIHRlc3QgLXIgL2Rldi9wdG14Ci10aGVuCi0gIEFDX01TR19SRVNVTFQoeWVzKQotICBBQ19ERUZJTkUoSEFWRV9ERVZfUFRNWCwgMSwKLSAgW0RlZmluZSBpZiB3ZSBoYXZlIC9kZXYvcHRteC5dKQotZWxzZQotICBBQ19NU0dfUkVTVUxUKG5vKQorZG5sIE5PVEU6IEluZm9ybSB1c2VyIGhvdyB0byBwcm9jZWVkIHdpdGggZmlsZXMgd2hlbiBjcm9zcyBjb21waWxpbmcuCitpZiB0ZXN0ICJ4JGNyb3NzX2NvbXBpbGluZyIgPSB4eWVzOyB0aGVuCisgIGlmIHRlc3QgIiR7YWNfY3ZfZmlsZV9fZGV2X3B0bXgrc2V0fSIgIT0gc2V0OyB0aGVuCisgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgL2Rldi9wdG14XSkKKyAgICBBQ19NU0dfUkVTVUxUKFtub3Qgc2V0XSkKKyAgICBBQ19NU0dfRVJST1IoW3NldCBhY19jdl9maWxlX19kZXZfcHRteCB0byB5ZXMvbm8gaW4geW91ciBDT05GSUdfU0lURSBmaWxlIHdoZW4gY3Jvc3MgY29tcGlsaW5nXSkKKyAgZmkKKyAgaWYgdGVzdCAiJHthY19jdl9maWxlX19kZXZfcHRjK3NldH0iICE9IHNldDsgdGhlbgorICAgIEFDX01TR19DSEVDS0lORyhbZm9yIC9kZXYvcHRjXSkKKyAgICBBQ19NU0dfUkVTVUxUKFtub3Qgc2V0XSkKKyAgICBBQ19NU0dfRVJST1IoW3NldCBhY19jdl9maWxlX19kZXZfcHRjIHRvIHllcy9ubyBpbiB5b3VyIENPTkZJR19TSVRFIGZpbGUgd2hlbiBjcm9zcyBjb21waWxpbmddKQorICBmaQogZmkKIAotQUNfTVNHX0NIRUNLSU5HKGZvciAvZGV2L3B0YykKLQotaWYgdGVzdCAtciAvZGV2L3B0YwotdGhlbgotICBBQ19NU0dfUkVTVUxUKHllcykKK0FDX0NIRUNLX0ZJTEUoL2Rldi9wdG14LCBbXSwgW10pCitpZiB0ZXN0ICJ4JGFjX2N2X2ZpbGVfX2Rldl9wdG14IiA9IHh5ZXM7IHRoZW4KKyAgQUNfREVGSU5FKEhBVkVfREVWX1BUTVgsIDEsCisgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgL2Rldi9wdG14IGRldmljZSBmaWxlLl0pCitmaQorQUNfQ0hFQ0tfRklMRSgvZGV2L3B0YywgW10sIFtdKQoraWYgdGVzdCAieCRhY19jdl9maWxlX19kZXZfcHRjIiA9IHh5ZXM7IHRoZW4KICAgQUNfREVGSU5FKEhBVkVfREVWX1BUQywgMSwKLSAgW0RlZmluZSBpZiB3ZSBoYXZlIC9kZXYvcHRjLl0pCi1lbHNlCi0gIEFDX01TR19SRVNVTFQobm8pCisgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgL2Rldi9wdGMgZGV2aWNlIGZpbGUuXSkKIGZpCiAKIGlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMKQEAgLTQxOTIsNyArNDM3NCwyMyBAQAogICBdXV0pXSwKICAgW2FjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXNdLAogICBbYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PW5vXSwKLSAgW2FjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD1ub10pCisgIFthY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9ImNyb3NzIC0tIGFzc3VtaW5nIG5vIgorICAgaWYgdGVzdCB4JEdDQyA9IHh5ZXM7IHRoZW4KKyAgICBzYXZlX0NGTEFHUz0kQ0ZMQUdTCisgICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1XZXJyb3IgLVdmb3JtYXQiCisgICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWworICAgICAgICAjaW5jbHVkZSA8c3RkaW8uaD4KKyAgICAgICAgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICAgICAgXV0sIFtbCisgICAgICBjaGFyICpidWZmZXI7CisgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKTEyMyk7CisgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKS0xMjMpOworICAgICAgc3ByaW50ZihidWZmZXIsICIlbGx1IiwgKHVuc2lnbmVkIGxvbmcgbG9uZykxMjMpOworICAgICAgXV0pXSwKKyAgICAgIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMKKyAgICApCisgICAgQ0ZMQUdTPSRzYXZlX0NGTEFHUworICAgZmldKQogICApCiAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdCkKIGZpCkBAIC00MjY4LDYgKzQ0NjYsNyBAQAogQUNfTVNHX0NIRUNLSU5HKGZvciBicm9rZW4gbWJzdG93Y3MpCiBBQ19DQUNIRV9WQUwoYWNfY3ZfYnJva2VuX21ic3Rvd2NzLAogQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKyNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGU8c3RkbGliLmg+CiBpbnQgbWFpbigpIHsKICAgICBzaXplX3QgbGVuID0gLTE7CkBAIC00Mjg3LDMwICs0NDg2LDYgQEAKICAgIHdpZGUgY2hhcnMgdGhhdCB3b3VsZCBiZSBjb252ZXJ0ZWQuXSkKIGZpCiAKLUFDX01TR19DSEVDS0lORyh3aGV0aGVyICRDQyBzdXBwb3J0cyBjb21wdXRlZCBnb3RvcykKLUFDX0NBQ0hFX1ZBTChhY19jdl9jb21wdXRlZF9nb3RvcywKLUFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbWwotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewotICAgIHN0YXRpYyB2b2lkICp0YXJnZXRzWzFdID0geyAmJkxBQkVMMSB9OwotICAgIGdvdG8gTEFCRUwyOwotTEFCRUwxOgotICAgIHJldHVybiAwOwotTEFCRUwyOgotICAgIGdvdG8gKnRhcmdldHNbMF07Ci0gICAgcmV0dXJuIDE7Ci19Ci1dXV0pXSwKLVthY19jdl9jb21wdXRlZF9nb3Rvcz15ZXNdLAotW2FjX2N2X2NvbXB1dGVkX2dvdG9zPW5vXSwKLVthY19jdl9jb21wdXRlZF9nb3Rvcz1ub10pKQotQUNfTVNHX1JFU1VMVCgkYWNfY3ZfY29tcHV0ZWRfZ290b3MpCi1pZiB0ZXN0ICIkYWNfY3ZfY29tcHV0ZWRfZ290b3MiID0geWVzCi10aGVuCi0gIEFDX0RFRklORShIQVZFX0NPTVBVVEVEX0dPVE9TLCAxLAotICBbRGVmaW5lIGlmIHRoZSBDIGNvbXBpbGVyIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zLl0pCi1maQotCiAjIENoZWNrIGZvciAtLXdpdGgtY29tcHV0ZWQtZ290b3MKIEFDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLWNvbXB1dGVkLWdvdG9zKQogQUNfQVJHX1dJVEgoY29tcHV0ZWQtZ290b3MsCkBAIC00MzMyLDE4ICs0NTA3LDM5IEBACiBdLAogW0FDX01TR19SRVNVTFQobm8gdmFsdWUgc3BlY2lmaWVkKV0pCiAKK0FDX01TR19DSEVDS0lORyh3aGV0aGVyICRDQyBzdXBwb3J0cyBjb21wdXRlZCBnb3RvcykKK0FDX0NBQ0hFX1ZBTChhY19jdl9jb21wdXRlZF9nb3RvcywKK0FDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbWworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIHN0YXRpYyB2b2lkICp0YXJnZXRzWzFdID0geyAmJkxBQkVMMSB9OworICAgIGdvdG8gTEFCRUwyOworTEFCRUwxOgorICAgIHJldHVybiAwOworTEFCRUwyOgorICAgIGdvdG8gKnRhcmdldHNbMF07CisgICAgcmV0dXJuIDE7Cit9CitdXV0pXSwKK1thY19jdl9jb21wdXRlZF9nb3Rvcz15ZXNdLAorW2FjX2N2X2NvbXB1dGVkX2dvdG9zPW5vXSwKK1tpZiB0ZXN0ICIke3dpdGhfY29tcHV0ZWRfZ290b3Mrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgIGFjX2N2X2NvbXB1dGVkX2dvdG9zPSIkd2l0aF9jb21wdXRlZF9nb3RvcyAtLSBjb25maWd1cmVkIC0td2l0aChvdXQpLWNvbXB1dGVkLWdvdG9zIgorIGVsc2UKKyAgIGFjX2N2X2NvbXB1dGVkX2dvdG9zPW5vCisgZmldKSkKK0FDX01TR19SRVNVTFQoJGFjX2N2X2NvbXB1dGVkX2dvdG9zKQorY2FzZSAiJGFjX2N2X2NvbXB1dGVkX2dvdG9zIiBpbiB5ZXMqKQorICBBQ19ERUZJTkUoSEFWRV9DT01QVVRFRF9HT1RPUywgMSwKKyAgW0RlZmluZSBpZiB0aGUgQyBjb21waWxlciBzdXBwb3J0cyBjb21wdXRlZCBnb3Rvcy5dKQorZXNhYworCiBjYXNlICRhY19zeXNfc3lzdGVtIGluCiBBSVgqKSAgIAogICBBQ19ERUZJTkUoSEFWRV9CUk9LRU5fUElQRV9CVUYsIDEsIFtEZWZpbmUgaWYgdGhlIHN5c3RlbSByZXBvcnRzIGFuIGludmFsaWQgUElQRV9CVUYgdmFsdWUuXSkgOzsKIGVzYWMKIAogCi1jYXNlICRhY19zeXNfc3lzdGVtIGluCi0gIE9TRiopIEFDX01TR19FUlJPUihPU0YqIHN5c3RlbXMgYXJlIGRlcHJlY2F0ZWQgdW5sZXNzIHNvbWVib2R5IHZvbHVudGVlcnMuIENoZWNrIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU4NjA2KSA7OwotZXNhYwotCi1BQ19DSEVDS19GVU5DKHBpcGUyLCBBQ19ERUZJTkUoSEFWRV9QSVBFMiwgMSwgW0RlZmluZSBpZiB0aGUgT1Mgc3VwcG9ydHMgcGlwZTIoKV0pLCApCi0KIEFDX1NVQlNUKFRIUkVBREhFQURFUlMpCiAKIGZvciBoIGluIGAoY2QgJHNyY2RpcjtlY2hvIFB5dGhvbi90aHJlYWRfKi5oKWAKQEAgLTQzNjEsNiArNDU1Nyw4OSBAQAogZG9uZQogQUNfTVNHX1JFU1VMVChkb25lKQogCisjIEF2YWlsYWJpbGl0eSBvZiAtTzI6CitBQ19NU0dfQ0hFQ0tJTkcoZm9yIC1PMikKK3NhdmVkX2NmbGFncz0iJENGTEFHUyIKK0NGTEFHUz0iLU8yIgorQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLCBbWworXV0pXSxbaGF2ZV9PMj15ZXNdLFtoYXZlX08yPW5vXSkKK0FDX01TR19SRVNVTFQoJGhhdmVfTzIpCitDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCisKKyMgX0ZPUlRJRllfU09VUkNFIHdyYXBwZXJzIGZvciBtZW1tb3ZlIGFuZCBiY29weSBhcmUgaW5jb3JyZWN0OgorIyBodHRwOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDEwLTEyL21zZzAwMDA5Lmh0bWwKK0FDX01TR19DSEVDS0lORyhmb3IgZ2xpYmMgX0ZPUlRJRllfU09VUkNFL21lbW1vdmUgYnVnKQorc2F2ZWRfY2ZsYWdzPSIkQ0ZMQUdTIgorQ0ZMQUdTPSItTzIgLURfRk9SVElGWV9TT1VSQ0U9MiIKK2lmIHRlc3QgIiRoYXZlX08yIiA9IG5vOyB0aGVuCisgICAgQ0ZMQUdTPSIiCitmaQorQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgordm9pZCBmb28odm9pZCAqcCwgdm9pZCAqcSkgeyBtZW1tb3ZlKHAsIHEsIDE5KTsgfQoraW50IG1haW4oKSB7CisgIGNoYXIgYVszMl0gPSAiMTIzNDU2Nzg5MDAwMDAwMDAwIjsKKyAgZm9vKCZhWzldLCBhKTsKKyAgaWYgKHN0cmNtcChhLCAiMTIzNDU2Nzg5MTIzNDU2Nzg5MDAwMDAwMDAwIikgIT0gMCkKKyAgICByZXR1cm4gMTsKKyAgZm9vKGEsICZhWzldKTsKKyAgaWYgKHN0cmNtcChhLCAiMTIzNDU2Nzg5MDAwMDAwMDAwIikgIT0gMCkKKyAgICByZXR1cm4gMTsKKyAgcmV0dXJuIDA7Cit9CitdXSldLAorW2hhdmVfZ2xpYmNfbWVtbW92ZV9idWc9bm9dLAorW2hhdmVfZ2xpYmNfbWVtbW92ZV9idWc9eWVzXSwKK1toYXZlX2dsaWJjX21lbW1vdmVfYnVnPXVuZGVmaW5lZF0pCitDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCitBQ19NU0dfUkVTVUxUKCRoYXZlX2dsaWJjX21lbW1vdmVfYnVnKQoraWYgdGVzdCAiJGhhdmVfZ2xpYmNfbWVtbW92ZV9idWciID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKEhBVkVfR0xJQkNfTUVNTU9WRV9CVUcsIDEsCisgICAgW0RlZmluZSBpZiBnbGliYyBoYXMgaW5jb3JyZWN0IF9GT1JUSUZZX1NPVVJDRSB3cmFwcGVycworICAgICBmb3IgbWVtbW92ZSBhbmQgYmNvcHkuXSkKK2ZpCisKK2lmIHRlc3QgIiRoYXZlX2djY19hc21fZm9yX3g4NyIgPSB5ZXM7IHRoZW4KKyAgICAjIFNvbWUgdmVyc2lvbnMgb2YgZ2NjIG1pc2NvbXBpbGUgaW5saW5lIGFzbToKKyAgICAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NDY0OTEKKyAgICAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9nY2MvMjAxMC0xMS9tc2cwMDM2Ni5odG1sCisgICAgY2FzZSAkQ0MgaW4KKyAgICAgICAgKmdjYyopCisgICAgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGdjYyBpcGEtcHVyZS1jb25zdCBidWcpCisgICAgICAgICAgICBzYXZlZF9jZmxhZ3M9IiRDRkxBR1MiCisgICAgICAgICAgICBDRkxBR1M9Ii1PMiIKKyAgICAgICAgICAgIEFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCisgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIGludAorICAgICAgICAgICAgZm9vKGludCAqcCkgeworICAgICAgICAgICAgICBpbnQgcjsKKyAgICAgICAgICAgICAgYXNtICggIm1vdmwgXCQ2LCAoJTEpXG5cdCIKKyAgICAgICAgICAgICAgICAgICAgInhvcmwgJTAsICUwXG5cdCIKKyAgICAgICAgICAgICAgICAgICAgOiAiPXIiIChyKSA6ICJyIiAocCkgOiAibWVtb3J5IgorICAgICAgICAgICAgICApOworICAgICAgICAgICAgICByZXR1cm4gcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBtYWluKCkgeworICAgICAgICAgICAgICBpbnQgcCA9IDg7CisgICAgICAgICAgICAgIGlmICgoZm9vKCZwKSA/IDogcCkgIT0gNikKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgW2hhdmVfaXBhX3B1cmVfY29uc3RfYnVnPW5vXSwKKyAgICAgICAgICAgIFtoYXZlX2lwYV9wdXJlX2NvbnN0X2J1Zz15ZXNdLAorICAgICAgICAgICAgW2hhdmVfaXBhX3B1cmVfY29uc3RfYnVnPXVuZGVmaW5lZF0pCisgICAgICAgICAgICBDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCisgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKCRoYXZlX2lwYV9wdXJlX2NvbnN0X2J1ZykKKyAgICAgICAgICAgIGlmIHRlc3QgIiRoYXZlX2lwYV9wdXJlX2NvbnN0X2J1ZyIgPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9JUEFfUFVSRV9DT05TVF9CVUcsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtEZWZpbmUgaWYgZ2NjIGhhcyB0aGUgaXBhLXB1cmUtY29uc3QgYnVnLl0pCisgICAgICAgICAgICBmaQorICAgICAgICA7OworICAgIGVzYWMKK2ZpCisKICMgZ2VuZXJhdGUgb3V0cHV0IGZpbGVzCiBBQ19DT05GSUdfRklMRVMoTWFrZWZpbGUucHJlIE1vZHVsZXMvU2V0dXAuY29uZmlnIE1pc2MvcHl0aG9uLnBjKQogQUNfQ09ORklHX0ZJTEVTKFtNb2R1bGVzL2xkX3NvX2FpeF0sIFtjaG1vZCAreCBNb2R1bGVzL2xkX3NvX2FpeF0pCmRpZmYgLS1naXQgYS9weWNvbmZpZy5oLmluIGIvcHljb25maWcuaC5pbgppbmRleCA2ZmZmMTY1Li4xMGUyYzkxIDEwMDY0NAotLS0gYS9weWNvbmZpZy5oLmluCisrKyBiL3B5Y29uZmlnLmguaW4KQEAgLTEyLDkgKzEyLDYgQEAKICAgIHN1cHBvcnQgZm9yIEFJWCBDKysgc2hhcmVkIGV4dGVuc2lvbiBtb2R1bGVzLiAqLwogI3VuZGVmIEFJWF9HRU5VSU5FX0NQTFVTUExVUwogCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIE1hY2ggY3RocmVhZHMgcGFja2FnZSAqLwotI3VuZGVmIENfVEhSRUFEUwotCiAvKiBEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkIGluIEFSTQogICAgbWl4ZWQtZW5kaWFuIG9yZGVyIChieXRlIG9yZGVyIDQ1NjcwMTIzKSAqLwogI3VuZGVmIERPVUJMRV9JU19BUk1fTUlYRURfRU5ESUFOX0lFRUU3NTQKQEAgLTExNiw2ICsxMTMsMTIgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2xvY2snIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfQ0xPQ0sKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjbG9ja19nZXRyZXMnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfQ0xPQ0tfR0VUUkVTCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2xvY2tfZ2V0dGltZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9DTE9DS19HRVRUSU1FCisKIC8qIERlZmluZSBpZiB0aGUgQyBjb21waWxlciBzdXBwb3J0cyBjb21wdXRlZCBnb3Rvcy4gKi8KICN1bmRlZiBIQVZFX0NPTVBVVEVEX0dPVE9TCiAKQEAgLTE2NSwxMCArMTY4LDEwIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGV2aWNlIG1hY3Jvcy4gKi8KICN1bmRlZiBIQVZFX0RFVklDRV9NQUNST1MKIAotLyogRGVmaW5lIGlmIHdlIGhhdmUgL2Rldi9wdGMuICovCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgL2Rldi9wdGMgZGV2aWNlIGZpbGUuICovCiAjdW5kZWYgSEFWRV9ERVZfUFRDCiAKLS8qIERlZmluZSBpZiB3ZSBoYXZlIC9kZXYvcHRteC4gKi8KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAvZGV2L3B0bXggZGV2aWNlIGZpbGUuICovCiAjdW5kZWYgSEFWRV9ERVZfUFRNWAogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRpcmVjdC5oPiBoZWFkZXIgZmlsZS4gKi8KQEAgLTE5Niw2ICsxOTksOSBAQAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnZXBvbGwnIGZ1bmN0aW9ucy4gKi8KICN1bmRlZiBIQVZFX0VQT0xMCiAKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2Vwb2xsX2NyZWF0ZTEnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRVBPTExfQ1JFQVRFMQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGVyZicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9FUkYKIApAQCAtMjExLDIxICsyMTcsMzYgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZXhwbTEnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRVhQTTEKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmYWNjZXNzYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRkFDQ0VTU0FUCisKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2ZjaGRpcicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9GQ0hESVIKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmY2htb2QnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRkNITU9ECiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZmNobW9kYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRkNITU9EQVQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmY2hvd24nIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRkNIT1dOCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZmNob3duYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRkNIT1dOQVQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxmY250bC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0ZDTlRMX0gKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnZmRhdGFzeW5jJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0ZEQVRBU1lOQwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZkb3BlbmRpcicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GRE9QRU5ESVIKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmZXhlY3ZlJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZFWEVDVkUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmaW5pdGUnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRklOSVRFCiAKQEAgLTI0Nyw2ICsyNjgsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmc2Vla28nIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRlNFRUtPCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZnN0YXRhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GU1RBVEFUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZnN0YXR2ZnMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRlNUQVRWRlMKIApAQCAtMjY1LDE2ICsyODksMzEgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZnRydW5jYXRlJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0ZUUlVOQ0FURQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZ1dGltZW5zJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZVVElNRU5TCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZnV0aW1lcycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GVVRJTUVTCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZnV0aW1lc2F0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZVVElNRVNBVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdhaV9zdHJlcnJvcicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HQUlfU1RSRVJST1IKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnYW1tYScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HQU1NQQogCisvKiBEZWZpbmUgaWYgd2UgY2FuIHVzZSB4NjQgZ2NjIGlubGluZSBhc3NlbWJsZXIgKi8KKyN1bmRlZiBIQVZFX0dDQ19BU01fRk9SX1g2NAorCiAvKiBEZWZpbmUgaWYgd2UgY2FuIHVzZSBnY2MgaW5saW5lIGFzc2VtYmxlciB0byBnZXQgYW5kIHNldCB4ODcgY29udHJvbCB3b3JkCiAgICAqLwogI3VuZGVmIEhBVkVfR0NDX0FTTV9GT1JfWDg3CiAKKy8qIERlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIF9fdWludDEyOF90ICovCisjdW5kZWYgSEFWRV9HQ0NfVUlOVDEyOF9UCisKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZ2V0YWRkcmluZm8gZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HRVRBRERSSU5GTwogCkBAIC0yODQsNiArMzIzLDkgQEAKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIGZsb2NrZmlsZSgpLCBnZXRjX3VubG9ja2VkKCksIGFuZCBmdW5sb2NrZmlsZSgpICovCiAjdW5kZWYgSEFWRV9HRVRDX1VOTE9DS0VECiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0Z3JvdXBsaXN0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0dFVEdST1VQTElTVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldGdyb3VwcycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HRVRHUk9VUFMKIApAQCAtMzU2LDYgKzM5OCwxMCBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXR3ZCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HRVRXRAogCisvKiBEZWZpbmUgaWYgZ2xpYmMgaGFzIGluY29ycmVjdCBfRk9SVElGWV9TT1VSQ0Ugd3JhcHBlcnMgZm9yIG1lbW1vdmUgYW5kCisgICBiY29weS4gKi8KKyN1bmRlZiBIQVZFX0dMSUJDX01FTU1PVkVfQlVHCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8Z3JwLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfR1JQX0gKIApAQCAtMzY4LDYgKzQxNCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGllZWVmcC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0lFRUVGUF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgaWZfbmFtZWluZGV4JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0lGX05BTUVJTkRFWAorCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdpbmV0X2F0b24nIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfSU5FVF9BVE9OCiAKQEAgLTM4OSw2ICs0MzgsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxpby5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0lPX0gKIAorLyogRGVmaW5lIGlmIGdjYyBoYXMgdGhlIGlwYS1wdXJlLWNvbnN0IGJ1Zy4gKi8KKyN1bmRlZiBIQVZFX0lQQV9QVVJFX0NPTlNUX0JVRworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGtpbGwnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfS0lMTAogCkBAIC00MzcsMjEgKzQ4OSwzOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZXNvbHYnIGxpYnJhcnkgKC1scmVzb2x2KS4gKi8KICN1bmRlZiBIQVZFX0xJQlJFU09MVgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNlbmRmaWxlJyBsaWJyYXJ5ICgtbHNlbmRmaWxlKS4gKi8KKyN1bmRlZiBIQVZFX0xJQlNFTkRGSUxFCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGlidXRpbC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0xJQlVUSUxfSAogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdsaW5rJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0xJTksKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsaW5rYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTElOS0FUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvY2FuLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTElOVVhfQ0FOX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW51eC9jYW4vcmF3Lmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTElOVVhfQ0FOX1JBV19ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvbmV0bGluay5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0xJTlVYX05FVExJTktfSAogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbnV4L3RpcGMuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9MSU5VWF9USVBDX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsb2NrZicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9MT0NLRgorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxvZzFwJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0xPRzFQCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbG9nMicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9MT0cyCisKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIGxvbmcgZG91YmxlLiAqLwogI3VuZGVmIEhBVkVfTE9OR19ET1VCTEUKIApAQCAtNDYxLDYgKzUzMSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxzdGF0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0xTVEFUCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbHV0aW1lcycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9MVVRJTUVTCisKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSBtYWtlZGV2IG1hY3JvLiAqLwogI3VuZGVmIEhBVkVfTUFLRURFVgogCkBAIC00NzMsMTUgKzU0NiwzMCBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtZW1vcnkuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9NRU1PUllfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1lbXJjaHInIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTUVNUkNIUgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rZGlyYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTUtESVJBVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rZmlmbycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9NS0ZJRk8KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBta2ZpZm9hdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NS0ZJRk9BVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rbm9kJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX01LTk9ECiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWtub2RhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NS05PREFUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWt0aW1lJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX01LVElNRQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1tYXAnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTU1BUAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1yZW1hcCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9NUkVNQVAKIApAQCAtNDk0LDkgKzU4MiwxNSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXRwYWNrZXQvcGFja2V0Lmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTkVUUEFDS0VUX1BBQ0tFVF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0L2lmLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTkVUX0lGX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBuaWNlJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX05JQ0UKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBvcGVuYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfT1BFTkFUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgb3BlbnB0eScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9PUEVOUFRZCiAKQEAgLTUwOSw3ICs2MDMsNyBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwYXVzZScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9QQVVTRQogCi0vKiBEZWZpbmUgaWYgdGhlIE9TIHN1cHBvcnRzIHBpcGUyKCkgKi8KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcGlwZTInIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUElQRTIKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwbG9jaycgZnVuY3Rpb24uICovCkBAIC01MjEsNiArNjE1LDE1IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHBvbGwuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9QT0xMX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwb3NpeF9mYWR2aXNlJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1BPU0lYX0ZBRFZJU0UKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwb3NpeF9mYWxsb2NhdGUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUE9TSVhfRkFMTE9DQVRFCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHJlYWQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUFJFQUQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxwcm9jZXNzLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfUFJPQ0VTU19ICiAKQEAgLTUzNiw2ICs2MzksOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwdGhyZWFkX2luaXQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUFRIUkVBRF9JTklUCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHRocmVhZF9raWxsJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1BUSFJFQURfS0lMTAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHB0aHJlYWRfc2lnbWFzaycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9QVEhSRUFEX1NJR01BU0sKIApAQCAtNTQ1LDEyICs2NTEsMjQgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHV0ZW52JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1BVVEVOVgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHB3cml0ZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9QV1JJVEUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWFkbGluaycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9SRUFETElOSwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlYWRsaW5rYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUkVBRExJTktBVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlYWR2JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1JFQURWCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVhbHBhdGgnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUkVBTFBBVEgKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZW5hbWVhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9SRU5BTUVBVAorCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgcmVhZGxpbmUgMi4xICovCiAjdW5kZWYgSEFWRV9STF9DQUxMQkFDSwogCkBAIC01NzUsNiArNjkzLDI0IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJvdW5kJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1JPVU5ECiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2NoZWRfZ2V0X3ByaW9yaXR5X21heCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c2NoZWQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TQ0hFRF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2NoZWRfcnJfZ2V0X2ludGVydmFsJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NDSEVEX1JSX0dFVF9JTlRFUlZBTAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNjaGVkX3NldGFmZmluaXR5JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NDSEVEX1NFVEFGRklOSVRZCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2NoZWRfc2V0cGFyYW0nIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0NIRURfU0VUUEFSQU0KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzY2hlZF9zZXRzY2hlZHVsZXInIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VsZWN0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NFTEVDVAogCkBAIC01OTAsNiArNzI2LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VtX3VubGluaycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TRU1fVU5MSU5LCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VuZGZpbGUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0VOREZJTEUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRlZ2lkJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NFVEVHSUQKIApAQCAtNjAyLDYgKzc0MSw5IEBACiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdzZXRncm91cHMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0VUR1JPVVBTCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0aG9zdG5hbWUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0VUSE9TVE5BTUUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRpdGltZXInIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0VUSVRJTUVSCiAKQEAgLTYxNCw2ICs3NTYsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRwZ3JwJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NFVFBHUlAKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRwcmlvcml0eScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TRVRQUklPUklUWQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldHJlZ2lkJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NFVFJFR0lECiAKQEAgLTY0MSwxNSArNzg2LDMwIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ2FjdGlvbicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TSUdBQ1RJT04KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzaWdhbHRzdGFjaycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TSUdBTFRTVEFDSworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ2ludGVycnVwdCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TSUdJTlRFUlJVUFQKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzaWduYWwuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TSUdOQUxfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ3BlbmRpbmcnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0lHUEVORElORworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ3JlbHNlJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NJR1JFTFNFCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lndGltZWR3YWl0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NJR1RJTUVEV0FJVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ3dhaXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0lHV0FJVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ3dhaXRpbmZvJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NJR1dBSVRJTkZPCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc25wcmludGYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU05QUklOVEYKIApAQCAtNzMzLDYgKzg5MywxMiBAQAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnc3ltbGluaycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TWU1MSU5LCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3ltbGlua2F0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NZTUxJTktBVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN5bmMnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1lOQworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN5c2NvbmYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU1lTQ09ORgogCkBAIC03NDUsNiArOTExLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2JzZHR0eS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19CU0RUVFlfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9kZXZwb2xsLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX0RFVlBPTExfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9kaXIuaD4gaGVhZGVyIGZpbGUsIGFuZCBpdCBkZWZpbmVzIGBESVInLgogICAgKi8KICN1bmRlZiBIQVZFX1NZU19ESVJfSApAQCAtNzU4LDYgKzkyNywxMiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvZmlsZS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19GSUxFX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvaW9jdGwuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfSU9DVExfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9rZXJuX2NvbnRyb2wuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfS0VSTl9DT05UUk9MX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvbG9hZGF2Zy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19MT0FEQVZHX0gKIApAQCAtNzg2LDYgKzk2MSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zZWxlY3QuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfU0VMRUNUX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc2VuZGZpbGUuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfU0VOREZJTEVfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zb2NrZXQuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfU09DS0VUX0gKIApAQCAtNzk4LDYgKzk3Niw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zeXNjYWxsLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX1NZU0NBTExfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zeXNfZG9tYWluLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX1NZU19ET01BSU5fSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90ZXJtaW8uaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfVEVSTUlPX0gKIApAQCAtODEwLDYgKzk5MSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19UWVBFU19ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3Vpby5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19VSU9fSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy91bi5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19VTl9ICiAKQEAgLTgxOSw2ICsxMDAzLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3dhaXQuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfV0FJVF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3hhdHRyLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX1hBVFRSX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB0Y2dldHBncnAnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfVENHRVRQR1JQCiAKQEAgLTgzNyw5ICsxMDI0LDYgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgdGdhbW1hJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1RHQU1NQQogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHRocmVhZC5oPiBoZWFkZXIgZmlsZS4gKi8KLSN1bmRlZiBIQVZFX1RIUkVBRF9ICi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgdGltZWdtJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1RJTUVHTQogCkBAIC04ODQsNiArMTA2OCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0ZC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1VOSVNURF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgdW5saW5rYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfVU5MSU5LQVQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1bnNldGVudicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9VTlNFVEVOVgogCkBAIC04OTUsNiArMTA4Miw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHV0aWwuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9VVElMX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1dGltZW5zYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfVVRJTUVOU0FUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgdXRpbWVzJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1VUSU1FUwogCkBAIC05MDcsNiArMTA5Nyw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHdhaXQ0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1dBSVQ0CiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgd2FpdGlkJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1dBSVRJRAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHdhaXRwaWQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfV0FJVFBJRAogCkBAIC05MjYsMjEgKzExMTksMTggQEAKICAgICovCiAjdW5kZWYgSEFWRV9XT1JLSU5HX1RaU0VUCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgd3JpdGV2JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1dSSVRFVgorCiAvKiBEZWZpbmUgaWYgdGhlIHpsaWIgbGlicmFyeSBoYXMgaW5mbGF0ZUNvcHkgKi8KICN1bmRlZiBIQVZFX1pMSUJfQ09QWQogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYF9nZXRwdHknIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfX0dFVFBUWQogCi0vKiBEZWZpbmUgaWYgeW91IGFyZSB1c2luZyBNYWNoIGN0aHJlYWRzIGRpcmVjdGx5IHVuZGVyIC9pbmNsdWRlICovCi0jdW5kZWYgSFVSRF9DX1RIUkVBRFMKLQogLyogRGVmaW5lIGlmIGxvZzFwKC0wLikgaXMgMC4gcmF0aGVyIHRoYW4gLTAuICovCiAjdW5kZWYgTE9HMVBfRFJPUFNfWkVST19TSUdOCiAKLS8qIERlZmluZSBpZiB5b3UgYXJlIHVzaW5nIE1hY2ggY3RocmVhZHMgdW5kZXIgbWFjaCAvICovCi0jdW5kZWYgTUFDSF9DX1RIUkVBRFMKLQogLyogRGVmaW5lIHRvIDEgaWYgYG1ham9yJywgYG1pbm9yJywgYW5kIGBtYWtlZGV2JyBhcmUgZGVjbGFyZWQgaW4gPG1rZGV2Lmg+LgogICAgKi8KICN1bmRlZiBNQUpPUl9JTl9NS0RFVgpAQCAtOTg1LDE4ICsxMTc1LDEyIEBACiAvKiBEZWZpbmUgdG8gcHJpbnRmIGZvcm1hdCBtb2RpZmllciBmb3IgUHlfc3NpemVfdCAqLwogI3VuZGVmIFBZX0ZPUk1BVF9TSVpFX1QKIAotLyogRGVmaW5lIGFzIHRoZSBpbnRlZ3JhbCB0eXBlIHVzZWQgZm9yIFVuaWNvZGUgcmVwcmVzZW50YXRpb24uICovCi0jdW5kZWYgUFlfVU5JQ09ERV9UWVBFCi0KIC8qIERlZmluZSBpZiB5b3Ugd2FudCB0byBidWlsZCBhbiBpbnRlcnByZXRlciB3aXRoIG1hbnkgcnVuLXRpbWUgY2hlY2tzLiAqLwogI3VuZGVmIFB5X0RFQlVHCiAKIC8qIERlZmluZWQgaWYgUHl0aG9uIGlzIGJ1aWx0IGFzIGEgc2hhcmVkIGxpYnJhcnkuICovCiAjdW5kZWYgUHlfRU5BQkxFX1NIQVJFRAogCi0vKiBEZWZpbmUgYXMgdGhlIHNpemUgb2YgdGhlIHVuaWNvZGUgdHlwZS4gKi8KLSN1bmRlZiBQeV9VTklDT0RFX1NJWkUKLQogLyogYXNzdW1lIEM4OSBzZW1hbnRpY3MgdGhhdCBSRVRTSUdUWVBFIGlzIGFsd2F5cyB2b2lkICovCiAjdW5kZWYgUkVUU0lHVFlQRQogCkBAIC0xMDcwLDYgKzEyNTQsOSBAQAogLyogRGVmaW5lIGlmIHRhbmgoLTAuKSBpcyAtMC4sIG9yIGlmIHBsYXRmb3JtIGRvZXNuJ3QgaGF2ZSBzaWduZWQgemVyb3MgKi8KICN1bmRlZiBUQU5IX1BSRVNFUlZFU19aRVJPX1NJR04KIAorLyogTGlicmFyeSBuZWVkZWQgYnkgdGltZW1vZHVsZS5jOiBsaWJydCBtYXkgYmUgbmVlZGVkIGZvciBjbG9ja19nZXR0aW1lKCkgKi8KKyN1bmRlZiBUSU1FTU9EVUxFX0xJQgorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgY2FuIHNhZmVseSBpbmNsdWRlIGJvdGggPHN5cy90aW1lLmg+IGFuZCA8dGltZS5oPi4gKi8KICN1bmRlZiBUSU1FX1dJVEhfU1lTX1RJTUUKIApAQCAtMTE4MiwxNCArMTM2OSwxMSBAQAogLyogRGVmaW5lIG9uIE5ldEJTRCB0byBhY3RpdmF0ZSBhbGwgbGlicmFyeSBmZWF0dXJlcyAqLwogI3VuZGVmIF9ORVRCU0RfU09VUkNFCiAKLS8qIERlZmluZSBfT1NGX1NPVVJDRSB0byBnZXQgdGhlIG1ha2VkZXYgbWFjcm8uICovCi0jdW5kZWYgX09TRl9TT1VSQ0UKLQogLyogRGVmaW5lIHRvIDIgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBwcm92aWRlIFBPU0lYLjEgZmVhdHVyZXMgZXhjZXB0IHdpdGgKICAgIHRoaXMgZGVmaW5lZC4gKi8KICN1bmRlZiBfUE9TSVhfMV9TT1VSQ0UKIAotLyogRGVmaW5lIHRvIGFjdGl2YXRlIGZlYXR1cmVzIGZyb20gSUVFRSBTdGRzIDEwMDMuMS0yMDAxICovCisvKiBEZWZpbmUgdG8gYWN0aXZhdGUgZmVhdHVyZXMgZnJvbSBJRUVFIFN0ZHMgMTAwMy4xLTIwMDggKi8KICN1bmRlZiBfUE9TSVhfQ19TT1VSQ0UKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IG5lZWQgdG8gaW4gb3JkZXIgZm9yIGBzdGF0JyBhbmQgb3RoZXIgdGhpbmdzIHRvIHdvcmsuICovCmRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5CmluZGV4IDY0MzU4MzQuLjdiN2UwM2UgMTAwNjQ0Ci0tLSBhL3NldHVwLnB5CisrKyBiL3NldHVwLnB5CkBAIC0xLDggKzEsNiBAQAogIyBBdXRvZGV0ZWN0aW5nIHNldHVwLnB5IHNjcmlwdCBmb3IgYnVpbGRpbmcgdGhlIFB5dGhvbiBleHRlbnNpb25zCiAjCiAKLV9fdmVyc2lvbl9fID0gIiRSZXZpc2lvbiQiCi0KIGltcG9ydCBzeXMsIG9zLCBpbXAsIHJlLCBvcHRwYXJzZQogZnJvbSBnbG9iIGltcG9ydCBnbG9iCiBpbXBvcnQgc3lzY29uZmlnCkBAIC0xNywxNiArMTUsMjQgQEAKIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuYnVpbGRfc2NyaXB0cyBpbXBvcnQgYnVpbGRfc2NyaXB0cwogZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IGZpbmRfZXhlY3V0YWJsZQogCitjcm9zc19jb21waWxpbmcgPSAiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIiBpbiBvcy5lbnZpcm9uCisKK2RlZiBnZXRfcGxhdGZvcm0oKToKKyAgICAjIGNyb3NzIGJ1aWxkCisgICAgaWYgIl9QWVRIT05fSE9TVF9QTEFURk9STSIgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgcmV0dXJuIG9zLmVudmlyb25bIl9QWVRIT05fSE9TVF9QTEFURk9STSJdCisgICAgIyBHZXQgdmFsdWUgb2Ygc3lzLnBsYXRmb3JtCisgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ29zZjEnKToKKyAgICAgICAgcmV0dXJuICdvc2YxJworICAgIHJldHVybiBzeXMucGxhdGZvcm0KK2hvc3RfcGxhdGZvcm0gPSBnZXRfcGxhdGZvcm0oKQorCiAjIFdlcmUgd2UgY29tcGlsZWQgLS13aXRoLXB5ZGVidWcgb3Igd2l0aCAjZGVmaW5lIFB5X0RFQlVHPwotQ09NUElMRURfV0lUSF9QWURFQlVHID0gaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50JykKK0NPTVBJTEVEX1dJVEhfUFlERUJVRyA9ICgnLS13aXRoLXB5ZGVidWcnIGluIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ09ORklHX0FSR1MiKSkKIAogIyBUaGlzIGdsb2JhbCB2YXJpYWJsZSBpcyB1c2VkIHRvIGhvbGQgdGhlIGxpc3Qgb2YgbW9kdWxlcyB0byBiZSBkaXNhYmxlZC4KIGRpc2FibGVkX21vZHVsZV9saXN0ID0gW10KIAotIyBGaWxlIHdoaWNoIGNvbnRhaW5zIHRoZSBkaXJlY3RvcnkgZm9yIHNoYXJlZCBtb2RzIChmb3Igc3lzLnBhdGggZml4dXAKLSMgd2hlbiBydW5uaW5nIGZyb20gdGhlIGJ1aWxkIGRpciwgc2VlIE1vZHVsZXMvZ2V0cGF0aC5jKQotX0JVSUxERElSX0NPT0tJRSA9ICJweWJ1aWxkZGlyLnR4dCIKLQogZGVmIGFkZF9kaXJfdG9fbGlzdChkaXJsaXN0LCBkaXIpOgogICAgICIiIkFkZCB0aGUgZGlyZWN0b3J5ICdkaXInIHRvIHRoZSBsaXN0ICdkaXJsaXN0JyAoYWZ0ZXIgYW55IHJlbGF0aXZlCiAgICAgZGlyZWN0b3JpZXMpIGlmOgpAQCAtNzQsNyArODAsNyBAQAogICAgICdwYXRocycgaXMgYSBsaXN0IG9mIGFkZGl0aW9uYWwgbG9jYXRpb25zIHRvIGNoZWNrOyBpZiB0aGUgZmlsZSBpcwogICAgICAgICBmb3VuZCBpbiBvbmUgb2YgdGhlbSwgdGhlIHJlc3VsdGluZyBsaXN0IHdpbGwgY29udGFpbiB0aGUgZGlyZWN0b3J5LgogICAgICIiIgotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAjIEhvbm9yIHRoZSBNYWNPU1ggU0RLIHNldHRpbmcgd2hlbiBvbmUgd2FzIHNwZWNpZmllZC4KICAgICAgICAgIyBBbiBTREsgaXMgYSBkaXJlY3Rvcnkgd2l0aCB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgYSByZWFsCiAgICAgICAgICMgc3lzdGVtLCBidXQgd2l0aCBvbmx5IGhlYWRlciBmaWxlcyBhbmQgbGlicmFyaWVzLgpAQCAtODQsNyArOTAsNyBAQAogICAgIGZvciBkaXIgaW4gc3RkX2RpcnM6CiAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oZGlyLCBmaWxlbmFtZSkKIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChkaXIpOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZGlyKToKICAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgZGlyWzE6XSwgZmlsZW5hbWUpCiAKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZik6IHJldHVybiBbXQpAQCAtOTMsNyArOTksNyBAQAogICAgIGZvciBkaXIgaW4gcGF0aHM6CiAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oZGlyLCBmaWxlbmFtZSkKIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChkaXIpOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZGlyKToKICAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgZGlyWzE6XSwgZmlsZW5hbWUpCiAKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZik6CkBAIC0xMDcsNyArMTEzLDcgQEAKICAgICBpZiByZXN1bHQgaXMgTm9uZToKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICBzeXNyb290ID0gbWFjb3N4X3Nka19yb290KCkKIAogICAgICMgQ2hlY2sgd2hldGhlciB0aGUgZm91bmQgZmlsZSBpcyBpbiBvbmUgb2YgdGhlIHN0YW5kYXJkIGRpcmVjdG9yaWVzCkBAIC0xMTYsNyArMTIyLDcgQEAKICAgICAgICAgIyBFbnN1cmUgcGF0aCBkb2Vzbid0IGVuZCB3aXRoIHBhdGggc2VwYXJhdG9yCiAgICAgICAgIHAgPSBwLnJzdHJpcChvcy5zZXApCiAKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgocCk6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChwKToKICAgICAgICAgICAgIGlmIG9zLnBhdGguam9pbihzeXNyb290LCBwWzE6XSkgPT0gZGlybmFtZToKICAgICAgICAgICAgICAgICByZXR1cm4gWyBdCiAKQEAgLTEyOSw3ICsxMzUsNyBAQAogICAgICAgICAjIEVuc3VyZSBwYXRoIGRvZXNuJ3QgZW5kIHdpdGggcGF0aCBzZXBhcmF0b3IKICAgICAgICAgcCA9IHAucnN0cmlwKG9zLnNlcCkKIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChwKToKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgaXNfbWFjb3N4X3Nka19wYXRoKHApOgogICAgICAgICAgICAgaWYgb3MucGF0aC5qb2luKHN5c3Jvb3QsIHBbMTpdKSA9PSBkaXJuYW1lOgogICAgICAgICAgICAgICAgIHJldHVybiBbIHAgXQogCkBAIC0xOTAsOSArMTk2LDYgQEAKICAgICAgICAgc3JjZGlyID0gb3MucGF0aC5hYnNwYXRoKHNyY2RpcikKICAgICAgICAgbW9kZGlybGlzdCA9IFtvcy5wYXRoLmpvaW4oc3JjZGlyLCAnTW9kdWxlcycpXQogCi0gICAgICAgICMgUGxhdGZvcm0tZGVwZW5kZW50IG1vZHVsZSBzb3VyY2UgYW5kIGluY2x1ZGUgZGlyZWN0b3JpZXMKLSAgICAgICAgcGxhdGZvcm0gPSBzZWxmLmdldF9wbGF0Zm9ybSgpCi0KICAgICAgICAgIyBGaXggdXAgdGhlIHBhdGhzIGZvciBzY3JpcHRzLCB0b28KICAgICAgICAgc2VsZi5kaXN0cmlidXRpb24uc2NyaXB0cyA9IFtvcy5wYXRoLmpvaW4oc3JjZGlyLCBmaWxlbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4gc2VsZi5kaXN0cmlidXRpb24uc2NyaXB0c10KQEAgLTI0NSwxNiArMjQ4LDYgQEAKICAgICAgICAgICAgIGFyZ3NbJ2NvbXBpbGVyX3NvJ10gPSBjb21waWxlciArICcgJyArIGNjc2hhcmVkICsgJyAnICsgY2ZsYWdzCiAgICAgICAgIHNlbGYuY29tcGlsZXIuc2V0X2V4ZWN1dGFibGVzKCoqYXJncykKIAotICAgICAgICAjIE5vdCBvbmx5IGRvIHdlIHdyaXRlIHRoZSBidWlsZGRpciBjb29raWUsIGJ1dCB3ZSBtYW51YWxseSBpbnN0YWxsCi0gICAgICAgICMgdGhlIHNoYXJlZCBtb2R1bGVzIGRpcmVjdG9yeSBpZiBpdCBpc24ndCBhbHJlYWR5IGluIHN5cy5wYXRoLgotICAgICAgICAjIE90aGVyd2lzZSB0cnlpbmcgdG8gaW1wb3J0IHRoZSBleHRlbnNpb25zIGFmdGVyIGJ1aWxkaW5nIHRoZW0KLSAgICAgICAgIyB3aWxsIGZhaWwuCi0gICAgICAgIHdpdGggb3BlbihfQlVJTERESVJfQ09PS0lFLCAid2IiKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShzZWxmLmJ1aWxkX2xpYi5lbmNvZGUoJ3V0Zi04JywgJ3N1cnJvZ2F0ZWVzY2FwZScpKQotICAgICAgICBhYnNfYnVpbGRfbGliID0gb3MucGF0aC5qb2luKG9zLmdldGN3ZCgpLCBzZWxmLmJ1aWxkX2xpYikKLSAgICAgICAgaWYgYWJzX2J1aWxkX2xpYiBub3QgaW4gc3lzLnBhdGg6Ci0gICAgICAgICAgICBzeXMucGF0aC5hcHBlbmQoYWJzX2J1aWxkX2xpYikKLQogICAgICAgICBidWlsZF9leHQuYnVpbGRfZXh0ZW5zaW9ucyhzZWxmKQogCiAgICAgICAgIGxvbmdlc3QgPSBtYXgoW2xlbihlLm5hbWUpIGZvciBlIGluIHNlbGYuZXh0ZW5zaW9uc10pCkBAIC0zMDcsNyArMzAwLDcgQEAKICAgICAgICAgICAgICAgICBleHQubmFtZSkKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGlmIHNlbGYuZ2V0X3BsYXRmb3JtKCkgPT0gJ2RhcndpbicgYW5kICgKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgKAogICAgICAgICAgICAgICAgIHN5cy5tYXhzaXplID4gMioqMzIgYW5kICctYXJjaCcgaW4gZXh0LmV4dHJhX2xpbmtfYXJncyk6CiAgICAgICAgICAgICAjIERvbid0IGJvdGhlciBkb2luZyBhbiBpbXBvcnQgY2hlY2sgd2hlbiBhbiBleHRlbnNpb24gd2FzCiAgICAgICAgICAgICAjIGJ1aWxkIHdpdGggYW4gZXhwbGljaXQgJy1hcmNoJyBmbGFnIG9uIE9TWC4gVGhhdCdzIGN1cnJlbnRseQpAQCAtMzIxLDcgKzMxNCw3IEBACiAKICAgICAgICAgIyBXb3JrYXJvdW5kIGZvciBDeWd3aW46IEN5Z3dpbiBjdXJyZW50bHkgaGFzIGZvcmsgaXNzdWVzIHdoZW4gbWFueQogICAgICAgICAjIG1vZHVsZXMgaGF2ZSBiZWVuIGltcG9ydGVkCi0gICAgICAgIGlmIHNlbGYuZ2V0X3BsYXRmb3JtKCkgPT0gJ2N5Z3dpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2N5Z3dpbic6CiAgICAgICAgICAgICBzZWxmLmFubm91bmNlKCdXQVJOSU5HOiBza2lwcGluZyBpbXBvcnQgY2hlY2sgZm9yIEN5Z3dpbi1iYXNlZCAiJXMiJwogICAgICAgICAgICAgICAgICUgZXh0Lm5hbWUpCiAgICAgICAgICAgICByZXR1cm4KQEAgLTMzNCw2ICszMjcsMTAgQEAKICAgICAgICAgIyBjYWNoZWQuICBDbGVhciB0aGF0IGNhY2hlIGJlZm9yZSB0cnlpbmcgdG8gaW1wb3J0LgogICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jbGVhcigpCiAKKyAgICAgICAgIyBEb24ndCB0cnkgdG8gbG9hZCBleHRlbnNpb25zIGZvciBjcm9zcyBidWlsZHMKKyAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wLmxvYWRfZHluYW1pYyhleHQubmFtZSwgZXh0X2ZpbGVuYW1lKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgd2h5OgpAQCAtMzY1LDEzICszNjIsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD0zKQogICAgICAgICAgICAgc2VsZi5mYWlsZWQuYXBwZW5kKGV4dC5uYW1lKQogCi0gICAgZGVmIGdldF9wbGF0Zm9ybShzZWxmKToKLSAgICAgICAgIyBHZXQgdmFsdWUgb2Ygc3lzLnBsYXRmb3JtCi0gICAgICAgIGZvciBwbGF0Zm9ybSBpbiBbJ2N5Z3dpbicsICdkYXJ3aW4nLCAnb3NmMSddOgotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgocGxhdGZvcm0pOgotICAgICAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybQotICAgICAgICByZXR1cm4gc3lzLnBsYXRmb3JtCi0KICAgICBkZWYgYWRkX211bHRpYXJjaF9wYXRocyhzZWxmKToKICAgICAgICAgIyBEZWJpYW4vVWJ1bnR1IG11bHRpYXJjaCBzdXBwb3J0LgogICAgICAgICAjIGh0dHBzOi8vd2lraS51YnVudHUuY29tL011bHRpYXJjaFNwZWMKQEAgLTM5OCwxMiArMzg4LDE1IEBACiAKICAgICAgICAgaWYgbm90IGZpbmRfZXhlY3V0YWJsZSgnZHBrZy1hcmNoaXRlY3R1cmUnKToKICAgICAgICAgICAgIHJldHVybgorICAgICAgICBvcHQgPSAnJworICAgICAgICBpZiBjcm9zc19jb21waWxpbmc6CisgICAgICAgICAgICBvcHQgPSAnLXQnICsgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdIT1NUX0dOVV9UWVBFJykKICAgICAgICAgdG1wZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkX3RlbXAsICdtdWx0aWFyY2gnKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5idWlsZF90ZW1wKToKICAgICAgICAgICAgIG9zLm1ha2VkaXJzKHNlbGYuYnVpbGRfdGVtcCkKICAgICAgICAgcmV0ID0gb3Muc3lzdGVtKAotICAgICAgICAgICAgJ2Rwa2ctYXJjaGl0ZWN0dXJlIC1xREVCX0hPU1RfTVVMVElBUkNIID4gJXMgMj4gL2Rldi9udWxsJyAlCi0gICAgICAgICAgICB0bXBmaWxlKQorICAgICAgICAgICAgJ2Rwa2ctYXJjaGl0ZWN0dXJlICVzIC1xREVCX0hPU1RfTVVMVElBUkNIID4gJXMgMj4gL2Rldi9udWxsJyAlCisgICAgICAgICAgICAob3B0LCB0bXBmaWxlKSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgcmV0ID4+IDggPT0gMDoKICAgICAgICAgICAgICAgICB3aXRoIG9wZW4odG1wZmlsZSkgYXMgZnA6CkBAIC00MTUsMTIgKzQwOCw0OCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3MudW5saW5rKHRtcGZpbGUpCiAKKyAgICBkZWYgYWRkX2djY19wYXRocyhzZWxmKToKKyAgICAgICAgZ2NjID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdDQycpCisgICAgICAgIHRtcGZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZF90ZW1wLCAnZ2NjcGF0aHMnKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5idWlsZF90ZW1wKToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKHNlbGYuYnVpbGRfdGVtcCkKKyAgICAgICAgcmV0ID0gb3Muc3lzdGVtKCclcyAtRSAtdiAtIDwvZGV2L251bGwgMj4lcyAxPi9kZXYvbnVsbCcgJSAoZ2NjLCB0bXBmaWxlKSkKKyAgICAgICAgaXNfZ2NjID0gRmFsc2UKKyAgICAgICAgaW5faW5jZGlycyA9IEZhbHNlCisgICAgICAgIGluY19kaXJzID0gW10KKyAgICAgICAgbGliX2RpcnMgPSBbXQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiByZXQgPj4gOCA9PSAwOgorICAgICAgICAgICAgICAgIHdpdGggb3Blbih0bXBmaWxlKSBhcyBmcDoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZnAucmVhZGxpbmVzKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoImdjYyB2ZXJzaW9uIik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZ2NjID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoIiNpbmNsdWRlIDwuLi4+Iik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5faW5jZGlycyA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCJFbmQgb2Ygc2VhcmNoIGxpc3QiKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9pbmNkaXJzID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgaXNfZ2NjIGFuZCBsaW5lLnN0YXJ0c3dpdGgoIkxJQlJBUllfUEFUSCIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkIGluIGxpbmUuc3RyaXAoKS5zcGxpdCgiPSIpWzFdLnNwbGl0KCI6Iik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBvcy5wYXRoLm5vcm1wYXRoKGQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICcvZ2NjLycgbm90IGluIGQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgaXNfZ2NjIGFuZCBpbl9pbmNkaXJzIGFuZCAnL2djYy8nIG5vdCBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5zdHJpcCgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MudW5saW5rKHRtcGZpbGUpCisKICAgICBkZWYgZGV0ZWN0X21vZHVsZXMoc2VsZik6CiAgICAgICAgICMgRW5zdXJlIHRoYXQgL3Vzci9sb2NhbCBpcyBhbHdheXMgdXNlZCwgYnV0IHRoZSBsb2NhbCBidWlsZAogICAgICAgICAjIGRpcmVjdG9yaWVzIChpLmUuICcuJyBhbmQgJ0luY2x1ZGUnKSBtdXN0IGJlIGZpcnN0LiAgU2VlIGlzc3VlCiAgICAgICAgICMgMTA1MjAuCi0gICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycywgJy91c3IvbG9jYWwvbGliJykKLSAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzLCAnL3Vzci9sb2NhbC9pbmNsdWRlJykKKyAgICAgICAgaWYgbm90IGNyb3NzX2NvbXBpbGluZzoKKyAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycywgJy91c3IvbG9jYWwvbGliJykKKyAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywgJy91c3IvbG9jYWwvaW5jbHVkZScpCisgICAgICAgICMgb25seSBjaGFuZ2UgdGhpcyBmb3IgY3Jvc3MgYnVpbGRzIGZvciAzLjMsIGlzc3VlcyBvbiBNYWdlaWEKKyAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgorICAgICAgICAgICAgc2VsZi5hZGRfZ2NjX3BhdGhzKCkKICAgICAgICAgc2VsZi5hZGRfbXVsdGlhcmNoX3BhdGhzKCkKIAogICAgICAgICAjIEFkZCBwYXRocyBzcGVjaWZpZWQgaW4gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBMREZMQUdTIGFuZApAQCAtNDU3LDcgKzQ4Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIGZvciBkaXJlY3RvcnkgaW4gcmV2ZXJzZWQob3B0aW9ucy5kaXJzKToKICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChkaXJfbGlzdCwgZGlyZWN0b3J5KQogCi0gICAgICAgIGlmIG9zLnBhdGgubm9ybXBhdGgoc3lzLnByZWZpeCkgIT0gJy91c3InIFwKKyAgICAgICAgaWYgb3MucGF0aC5ub3JtcGF0aChzeXMuYmFzZV9wcmVmaXgpICE9ICcvdXNyJyBcCiAgICAgICAgICAgICAgICAgYW5kIG5vdCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1BZVEhPTkZSQU1FV09SSycpOgogICAgICAgICAgICAgIyBPU1ggbm90ZTogRG9uJ3QgYWRkIExJQkRJUiBhbmQgSU5DTFVERURJUiB0byBidWlsZGluZyBhIGZyYW1ld29yawogICAgICAgICAgICAgIyAoUFlUSE9ORlJBTUVXT1JLIGlzIHNldCkgdG8gYXZvaWQgIyBsaW5raW5nIHByb2JsZW1zIHdoZW4KQEAgLTQ3MSwxMSArNTAwLDE1IEBACiAgICAgICAgICMgbGliX2RpcnMgYW5kIGluY19kaXJzIGFyZSB1c2VkIHRvIHNlYXJjaCBmb3IgZmlsZXM7CiAgICAgICAgICMgaWYgYSBmaWxlIGlzIGZvdW5kIGluIG9uZSBvZiB0aG9zZSBkaXJlY3RvcmllcywgaXQgY2FuCiAgICAgICAgICMgYmUgYXNzdW1lZCB0aGF0IG5vIGFkZGl0aW9uYWwgLUksLUwgZGlyZWN0aXZlcyBhcmUgbmVlZGVkLgotICAgICAgICBsaWJfZGlycyA9IHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzICsgWwotICAgICAgICAgICAgJy9saWI2NCcsICcvdXNyL2xpYjY0JywKLSAgICAgICAgICAgICcvbGliJywgJy91c3IvbGliJywKLSAgICAgICAgICAgIF0KLSAgICAgICAgaW5jX2RpcnMgPSBzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycyArIFsnL3Vzci9pbmNsdWRlJ10KKyAgICAgICAgaWYgbm90IGNyb3NzX2NvbXBpbGluZzoKKyAgICAgICAgICAgIGxpYl9kaXJzID0gc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMgKyBbCisgICAgICAgICAgICAgICAgJy9saWI2NCcsICcvdXNyL2xpYjY0JywKKyAgICAgICAgICAgICAgICAnL2xpYicsICcvdXNyL2xpYicsCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgaW5jX2RpcnMgPSBzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycyArIFsnL3Vzci9pbmNsdWRlJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxpYl9kaXJzID0gc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnNbOl0KKyAgICAgICAgICAgIGluY19kaXJzID0gc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnNbOl0KICAgICAgICAgZXh0cyA9IFtdCiAgICAgICAgIG1pc3NpbmcgPSBbXQogCkBAIC00ODMsMTggKzUxNiwxNyBAQAogICAgICAgICB3aXRoIG9wZW4oY29uZmlnX2gpIGFzIGZpbGU6CiAgICAgICAgICAgICBjb25maWdfaF92YXJzID0gc3lzY29uZmlnLnBhcnNlX2NvbmZpZ19oKGZpbGUpCiAKLSAgICAgICAgcGxhdGZvcm0gPSBzZWxmLmdldF9wbGF0Zm9ybSgpCiAgICAgICAgIHNyY2RpciA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykKIAogICAgICAgICAjIE9TRi8xIGFuZCBVbml4d2FyZSBoYXZlIHNvbWUgc3R1ZmYgaW4gL3Vzci9jY3MvbGliIChsaWtlIC1sZGIpCi0gICAgICAgIGlmIHBsYXRmb3JtIGluIFsnb3NmMScsICd1bml4d2FyZTcnLCAnb3BlbnVuaXg4J106CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gaW4gWydvc2YxJywgJ3VuaXh3YXJlNycsICdvcGVudW5peDgnXToKICAgICAgICAgICAgIGxpYl9kaXJzICs9IFsnL3Vzci9jY3MvbGliJ10KIAogICAgICAgICAjIEhQLVVYMTFpdjMga2VlcHMgZmlsZXMgaW4gbGliL2hwdXggZm9sZGVycy4KLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2hwLXV4MTEnOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdocC11eDExJzoKICAgICAgICAgICAgIGxpYl9kaXJzICs9IFsnL3Vzci9saWIvaHB1eDY0JywgJy91c3IvbGliL2hwdXgzMiddCiAKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICAjIFRoaXMgc2hvdWxkIHdvcmsgb24gYW55IHVuaXh5IHBsYXRmb3JtIDstKQogICAgICAgICAgICAgIyBJZiB0aGUgdXNlciBoYXMgYm90aGVyZWQgc3BlY2lmeWluZyBhZGRpdGlvbmFsIC1JIGFuZCAtTCBmbGFncwogICAgICAgICAgICAgIyBpbiBPUFQgYW5kIExERkxBR1Mgd2UgbWlnaHQgYXMgd2VsbCB1c2UgdGhlbSBoZXJlLgpAQCAtNTE0LDcgKzU0Niw3IEBACiAKICAgICAgICAgIyBDaGVjayBmb3IgTWFjT1MgWCwgd2hpY2ggZG9lc24ndCBuZWVkIGxpYm0uYSBhdCBhbGwKICAgICAgICAgbWF0aF9saWJzID0gWydtJ10KLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICBtYXRoX2xpYnMgPSBbXQogCiAgICAgICAgICMgWFhYIE9taXR0ZWQgbW9kdWxlczogZ2wsIHB1cmUsIGRsLCBTR0ktc3BlY2lmaWMgbW9kdWxlcwpAQCAtNTM0LDExICs1NjYsMTcgQEAKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignbWF0aCcsICBbJ21hdGhtb2R1bGUuYycsICdfbWF0aC5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ19tYXRoLmgnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9bWF0aF9saWJzKSApCisKKyAgICAgICAgIyB0aW1lIGxpYnJhcmllczogbGlicnQgbWF5IGJlIG5lZWRlZCBmb3IgY2xvY2tfZ2V0dGltZSgpCisgICAgICAgIHRpbWVfbGlicyA9IFtdCisgICAgICAgIGxpYiA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignVElNRU1PRFVMRV9MSUInKQorICAgICAgICBpZiBsaWI6CisgICAgICAgICAgICB0aW1lX2xpYnMuYXBwZW5kKGxpYikKKwogICAgICAgICAjIHRpbWUgb3BlcmF0aW9ucyBhbmQgdmFyaWFibGVzCi0gICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3RpbWUnLCBbJ3RpbWVtb2R1bGUuYycsICdfdGltZS5jJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPW1hdGhfbGlicykgKQotICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfZGF0ZXRpbWUnLCBbJ19kYXRldGltZW1vZHVsZS5jJywgJ190aW1lLmMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9bWF0aF9saWJzKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3RpbWUnLCBbJ3RpbWVtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz10aW1lX2xpYnMpICkKKyAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2RhdGV0aW1lJywgWydfZGF0ZXRpbWVtb2R1bGUuYyddKSApCiAgICAgICAgICMgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgaW1wbGVtZW50ZWQgaW4gQwogICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCJfcmFuZG9tIiwgWyJfcmFuZG9tbW9kdWxlLmMiXSkgKQogICAgICAgICAjIGJpc2VjdApAQCAtNTU0LDYgKzU5Miw4IEBACiAgICAgICAgICMgUHl0aG9uIEMgQVBJIHRlc3QgbW9kdWxlCiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ190ZXN0Y2FwaScsIFsnX3Rlc3RjYXBpbW9kdWxlLmMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPVsndGVzdGNhcGlfbG9uZy5oJ10pICkKKyAgICAgICAgIyBQeXRob24gUEVQLTMxMTggKGJ1ZmZlciBwcm90b2NvbCkgdGVzdCBtb2R1bGUKKyAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX3Rlc3RidWZmZXInLCBbJ190ZXN0YnVmZmVyLmMnXSkgKQogICAgICAgICAjIHByb2ZpbGVyIChfbHNwcm9mIGlzIGZvciBjUHJvZmlsZS5weSkKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2xzcHJvZicsIFsnX2xzcHJvZi5jJywgJ3JvdGF0aW5ndHJlZS5jJ10pICkKICAgICAgICAgIyBzdGF0aWMgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UKQEAgLTYxMSwxMyArNjUxLDIwIEBACiAgICAgICAgIGRvX3JlYWRsaW5lID0gc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgJ3JlYWRsaW5lJykKICAgICAgICAgcmVhZGxpbmVfdGVybWNhcF9saWJyYXJ5ID0gIiIKICAgICAgICAgY3Vyc2VzX2xpYnJhcnkgPSAiIgorICAgICAgICAjIENhbm5vdCB1c2Ugb3MucG9wZW4gaGVyZSBpbiBweTNrLgorICAgICAgICB0bXBmaWxlID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfdGVtcCwgJ3JlYWRsaW5lX3Rlcm1jYXBfbGliJykKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuYnVpbGRfdGVtcCk6CisgICAgICAgICAgICBvcy5tYWtlZGlycyhzZWxmLmJ1aWxkX3RlbXApCiAgICAgICAgICMgRGV0ZXJtaW5lIGlmIHJlYWRsaW5lIGlzIGFscmVhZHkgbGlua2VkIGFnYWluc3QgY3Vyc2VzIG9yIHRpbmZvLgotICAgICAgICBpZiBkb19yZWFkbGluZSBhbmQgZmluZF9leGVjdXRhYmxlKCdsZGQnKToKLSAgICAgICAgICAgICMgQ2Fubm90IHVzZSBvcy5wb3BlbiBoZXJlIGluIHB5M2suCi0gICAgICAgICAgICB0bXBmaWxlID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfdGVtcCwgJ3JlYWRsaW5lX3Rlcm1jYXBfbGliJykKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmJ1aWxkX3RlbXApOgotICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKHNlbGYuYnVpbGRfdGVtcCkKLSAgICAgICAgICAgIHJldCA9IG9zLnN5c3RlbSgibGRkICVzID4gJXMiICUgKGRvX3JlYWRsaW5lLCB0bXBmaWxlKSkKKyAgICAgICAgaWYgZG9fcmVhZGxpbmU6CisgICAgICAgICAgICBpZiBjcm9zc19jb21waWxpbmc6CisgICAgICAgICAgICAgICAgcmV0ID0gb3Muc3lzdGVtKCIlcyAtZCAlcyB8IGdyZXAgJyhORUVERUQpJyA+ICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignUkVBREVMRicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19yZWFkbGluZSwgdG1wZmlsZSkpCisgICAgICAgICAgICBlbGlmIGZpbmRfZXhlY3V0YWJsZSgnbGRkJyk6CisgICAgICAgICAgICAgICAgcmV0ID0gb3Muc3lzdGVtKCJsZGQgJXMgPiAlcyIgJSAoZG9fcmVhZGxpbmUsIHRtcGZpbGUpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXQgPSAyNTYKICAgICAgICAgICAgIGlmIHJldCA+PiA4ID09IDA6CiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHRtcGZpbGUpIGFzIGZwOgogICAgICAgICAgICAgICAgICAgICBmb3IgbG4gaW4gZnA6CkBAIC02MzAsNyArNjc3LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICd0aW5mbycgaW4gbG46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGxpbmVfdGVybWNhcF9saWJyYXJ5ID0gJ3RpbmZvJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBvcy51bmxpbmsodG1wZmlsZSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHRtcGZpbGUpOgorICAgICAgICAgICAgICAgIG9zLnVubGluayh0bXBmaWxlKQogICAgICAgICAjIElzc3VlIDczODQ6IElmIHJlYWRsaW5lIGlzIGFscmVhZHkgbGlua2VkIGFnYWluc3QgY3Vyc2VzLAogICAgICAgICAjIHVzZSB0aGUgc2FtZSBsaWJyYXJ5IGZvciB0aGUgcmVhZGxpbmUgYW5kIGN1cnNlcyBtb2R1bGVzLgogICAgICAgICBpZiAnY3Vyc2VzJyBpbiByZWFkbGluZV90ZXJtY2FwX2xpYnJhcnk6CkBAIC02NDIsNyArNjkwLDcgQEAKICAgICAgICAgZWxpZiBzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCAnY3Vyc2VzJyk6CiAgICAgICAgICAgICBjdXJzZXNfbGlicmFyeSA9ICdjdXJzZXMnCiAKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICBvc19yZWxlYXNlID0gaW50KG9zLnVuYW1lKClbMl0uc3BsaXQoJy4nKVswXSkKICAgICAgICAgICAgIGRlcF90YXJnZXQgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCcpCiAgICAgICAgICAgICBpZiBkZXBfdGFyZ2V0IGFuZCBkZXBfdGFyZ2V0LnNwbGl0KCcuJykgPCBbJzEwJywgJzUnXToKQEAgLTY1NCw3ICs3MDIsNyBAQAogICAgICAgICAgICAgICAgIGlmIGZpbmRfZmlsZSgncmVhZGxpbmUvcmxjb25mLmgnLCBpbmNfZGlycywgW10pIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGRvX3JlYWRsaW5lID0gRmFsc2UKICAgICAgICAgaWYgZG9fcmVhZGxpbmU6Ci0gICAgICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgb3NfcmVsZWFzZSA8IDk6CisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBvc19yZWxlYXNlIDwgOToKICAgICAgICAgICAgICAgICAjIEluIGV2ZXJ5IGRpcmVjdG9yeSBvbiB0aGUgc2VhcmNoIHBhdGggc2VhcmNoIGZvciBhIGR5bmFtaWMKICAgICAgICAgICAgICAgICAjIGxpYnJhcnkgYW5kIHRoZW4gYSBzdGF0aWMgbGlicmFyeSwgaW5zdGVhZCBvZiBmaXJzdCBsb29raW5nCiAgICAgICAgICAgICAgICAgIyBmb3IgZHluYW1pYyBsaWJyYXJpZXMgb24gdGhlIGVudGlyZSBwYXRoLgpAQCAtNjg2LDcgKzczNCw3IEBACiAgICAgICAgICAgICBsaWJzID0gWydjcnlwdCddCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBsaWJzID0gW10KLSAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignY3J5cHQnLCBbJ2NyeXB0bW9kdWxlLmMnXSwgbGlicmFyaWVzPWxpYnMpICkKKyAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2NyeXB0JywgWydfY3J5cHRtb2R1bGUuYyddLCBsaWJyYXJpZXM9bGlicykgKQogCiAgICAgICAgICMgQ1NWIGZpbGVzCiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19jc3YnLCBbJ19jc3YuYyddKSApCkBAIC03MzUsNyArNzgzLDcgQEAKICAgICAgICAgICAgICAgICBpbmNfZGlycyArIHNlYXJjaF9mb3Jfc3NsX2luY3NfaW4pCiAgICAgICAgIGlmIG9wZW5zc2x2X2g6CiAgICAgICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKG9wZW5zc2x2X2hbMF0sICdvcGVuc3NsL29wZW5zc2x2LmgnKQotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgobmFtZSk6CisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgobmFtZSk6CiAgICAgICAgICAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihtYWNvc3hfc2RrX3Jvb3QoKSwgbmFtZVsxOl0pCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKG5hbWUsICdyJykgYXMgaW5jZmlsZToKQEAgLTc2NywyMCArODE1LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNzbF92ZXIpCiAgICAgICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ19oYXNobGliJykKIAotICAgICAgICBtaW5fc2hhMl9vcGVuc3NsX3ZlciA9IDB4MDA5MDgwMDAKLSAgICAgICAgaWYgQ09NUElMRURfV0lUSF9QWURFQlVHIG9yIG9wZW5zc2xfdmVyIDwgbWluX3NoYTJfb3BlbnNzbF92ZXI6Ci0gICAgICAgICAgICAjIE9wZW5TU0wgZG9lc24ndCBkbyB0aGVzZSB1bnRpbCAwLjkuOCBzbyB3ZSdsbCBicmluZyBvdXIgb3duIGhhc2gKLSAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGEyNTYnLCBbJ3NoYTI1Nm1vZHVsZS5jJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydoYXNobGliLmgnXSkgKQotICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX3NoYTUxMicsIFsnc2hhNTEybW9kdWxlLmMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCi0KLSAgICAgICAgaWYgQ09NUElMRURfV0lUSF9QWURFQlVHIG9yIG5vdCBoYXZlX3VzYWJsZV9vcGVuc3NsOgotICAgICAgICAgICAgIyBubyBvcGVuc3NsIGF0IGFsbCwgdXNlIG91ciBvd24gbWQ1IGFuZCBzaGExCi0gICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfbWQ1JywgWydtZDVtb2R1bGUuYyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPVsnaGFzaGxpYi5oJ10pICkKLSAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGExJywgWydzaGExbW9kdWxlLmMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCisgICAgICAgICMgV2UgYWx3YXlzIGNvbXBpbGUgdGhlc2UgZXZlbiB3aGVuIE9wZW5TU0wgaXMgYXZhaWxhYmxlIChpc3N1ZSAjMTQ2OTMpLgorICAgICAgICAjIEl0J3MgaGFybWxlc3MgYW5kIHRoZSBvYmplY3QgY29kZSBpcyB0aW55ICg0MC01MCBLQiBwZXIgbW9kdWxlLAorICAgICAgICAjIG9ubHkgbG9hZGVkIHdoZW4gYWN0dWFsbHkgdXNlZCkuCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGEyNTYnLCBbJ3NoYTI1Nm1vZHVsZS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGE1MTInLCBbJ3NoYTUxMm1vZHVsZS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19tZDUnLCBbJ21kNW1vZHVsZS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGExJywgWydzaGExbW9kdWxlLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPVsnaGFzaGxpYi5oJ10pICkKIAogICAgICAgICAjIE1vZHVsZXMgdGhhdCBwcm92aWRlIHBlcnNpc3RlbnQgZGljdGlvbmFyeS1saWtlIHNlbWFudGljcy4gIFlvdSB3aWxsCiAgICAgICAgICMgcHJvYmFibHkgd2FudCB0byBhcnJhbmdlIGZvciBhdCBsZWFzdCBvbmUgb2YgdGhlbSB0byBiZSBhdmFpbGFibGUgb24KQEAgLTc5Nyw3ICs4NDIsNyBAQAogICAgICAgICAjIGEgcmVsZWFzZS4gIE1vc3Qgb3BlbiBzb3VyY2UgT1NlcyBjb21lIHdpdGggb25lIG9yIG1vcmUKICAgICAgICAgIyB2ZXJzaW9ucyBvZiBCZXJrZWxleURCIGFscmVhZHkgaW5zdGFsbGVkLgogCi0gICAgICAgIG1heF9kYl92ZXIgPSAoNSwgMSkKKyAgICAgICAgbWF4X2RiX3ZlciA9ICg1LCAzKQogICAgICAgICBtaW5fZGJfdmVyID0gKDMsIDMpCiAgICAgICAgIGRiX3NldHVwX2RlYnVnID0gRmFsc2UgICAjIHZlcmJvc2UgZGVidWcgcHJpbnRzIGZyb20gdGhpcyBzY3JpcHQ/CiAKQEAgLTg1NCw2ICs4OTksOSBAQAogICAgICAgICAgICAgZGJfaW5jX3BhdGhzLmFwcGVuZCgnL3BrZy9kYi0zLiVkL2luY2x1ZGUnICUgeCkKICAgICAgICAgICAgIGRiX2luY19wYXRocy5hcHBlbmQoJy9vcHQvZGItMy4lZC9pbmNsdWRlJyAlIHgpCiAKKyAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgorICAgICAgICAgICAgZGJfaW5jX3BhdGhzID0gW10KKwogICAgICAgICAjIEFkZCBzb21lIGNvbW1vbiBzdWJkaXJlY3RvcmllcyBmb3IgU2xlZXB5Y2F0IERCIHRvIHRoZSBsaXN0LAogICAgICAgICAjIGJhc2VkIG9uIHRoZSBzdGFuZGFyZCBpbmNsdWRlIGRpcmVjdG9yaWVzLiBUaGlzIHdheSBEQjMvNCBnZXRzCiAgICAgICAgICMgcGlja2VkIHVwIHdoZW4gaXQgaXMgaW5zdGFsbGVkIGluIGEgbm9uLXN0YW5kYXJkIHByZWZpeCBhbmQKQEAgLTg3NCw3ICs5MjIsNyBAQAogCiAgICAgICAgIGRiX3Zlcl9pbmNfbWFwID0ge30KIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICBzeXNyb290ID0gbWFjb3N4X3Nka19yb290KCkKIAogICAgICAgICBjbGFzcyBkYl9mb3VuZChFeGNlcHRpb24pOiBwYXNzCkBAIC04ODMsNyArOTMxLDcgQEAKICAgICAgICAgICAgICMgc2VhcmNoIHBhdGguCiAgICAgICAgICAgICBmb3IgZCBpbiBpbmNfZGlycyArIGRiX2luY19wYXRoczoKICAgICAgICAgICAgICAgICBmID0gb3MucGF0aC5qb2luKGQsICJkYi5oIikKLSAgICAgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChkKToKKyAgICAgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZCk6CiAgICAgICAgICAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgZFsxOl0sICJkYi5oIikKIAogICAgICAgICAgICAgICAgIGlmIGRiX3NldHVwX2RlYnVnOiBwcmludCgiZGI6IGxvb2tpbmcgZm9yIGRiLmggaW4iLCBmKQpAQCAtOTM0LDcgKzk4Miw3IEBACiAgICAgICAgICAgICAgICAgICAgIGRiX2luY2Rpci5yZXBsYWNlKCJpbmNsdWRlIiwgJ2xpYicpLAogICAgICAgICAgICAgICAgIF0KIAotICAgICAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnZGFyd2luJzoKKyAgICAgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtICE9ICdkYXJ3aW4nOgogICAgICAgICAgICAgICAgICAgICBkYl9kaXJzX3RvX2NoZWNrID0gbGlzdChmaWx0ZXIob3MucGF0aC5pc2RpciwgZGJfZGlyc190b19jaGVjaykpCiAKICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtOTkwLDcgKzEwMzgsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3Vzci9sb2NhbC9pbmNsdWRlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy91c3IvbG9jYWwvaW5jbHVkZS9zcWxpdGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3Vzci9sb2NhbC9pbmNsdWRlL3NxbGl0ZTMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgIGlmIGNyb3NzX2NvbXBpbGluZzoKKyAgICAgICAgICAgIHNxbGl0ZV9pbmNfcGF0aHMgPSBbXQogICAgICAgICBNSU5fU1FMSVRFX1ZFUlNJT05fTlVNQkVSID0gKDMsIDAsIDgpCiAgICAgICAgIE1JTl9TUUxJVEVfVkVSU0lPTiA9ICIuIi5qb2luKFtzdHIoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIE1JTl9TUUxJVEVfVkVSU0lPTl9OVU1CRVJdKQpAQCAtOTk4LDEyICsxMDQ4LDEyIEBACiAgICAgICAgICMgU2NhbiB0aGUgZGVmYXVsdCBpbmNsdWRlIGRpcmVjdG9yaWVzIGJlZm9yZSB0aGUgU1FMaXRlIHNwZWNpZmljCiAgICAgICAgICMgb25lcy4gVGhpcyBhbGxvd3Mgb25lIHRvIG92ZXJyaWRlIHRoZSBjb3B5IG9mIHNxbGl0ZSBvbiBPU1gsCiAgICAgICAgICMgd2hlcmUgL3Vzci9pbmNsdWRlIGNvbnRhaW5zIGFuIG9sZCB2ZXJzaW9uIG9mIHNxbGl0ZS4KLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgc3lzcm9vdCA9IG1hY29zeF9zZGtfcm9vdCgpCiAKICAgICAgICAgZm9yIGRfIGluIGluY19kaXJzICsgc3FsaXRlX2luY19wYXRoczoKICAgICAgICAgICAgIGQgPSBkXwotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZCk6CisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZCk6CiAgICAgICAgICAgICAgICAgZCA9IG9zLnBhdGguam9pbihzeXNyb290LCBkWzE6XSkKIAogICAgICAgICAgICAgZiA9IG9zLnBhdGguam9pbihkLCAic3FsaXRlMy5oIikKQEAgLTEwNTQsNyArMTEwNCw3IEBACiAgICAgICAgICAgICAgICAgJ19zcWxpdGUvdXRpbC5jJywgXQogCiAgICAgICAgICAgICBzcWxpdGVfZGVmaW5lcyA9IFtdCi0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gIndpbjMyIjoKKyAgICAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gIT0gIndpbjMyIjoKICAgICAgICAgICAgICAgICBzcWxpdGVfZGVmaW5lcy5hcHBlbmQoKCdNT0RVTEVfTkFNRScsICcic3FsaXRlMyInKSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc3FsaXRlX2RlZmluZXMuYXBwZW5kKCgnTU9EVUxFX05BTUUnLCAnXFwic3FsaXRlM1xcIicpKQpAQCAtMTA2NCw3ICsxMTE0LDcgQEAKICAgICAgICAgICAgIGlmICctLWVuYWJsZS1sb2FkYWJsZS1zcWxpdGUtZXh0ZW5zaW9ucycgbm90IGluIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ09ORklHX0FSR1MiKToKICAgICAgICAgICAgICAgICBzcWxpdGVfZGVmaW5lcy5hcHBlbmQoKCJTUUxJVEVfT01JVF9MT0FEX0VYVEVOU0lPTiIsICIxIikpCiAKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICAgICAgIyBJbiBldmVyeSBkaXJlY3Rvcnkgb24gdGhlIHNlYXJjaCBwYXRoIHNlYXJjaCBmb3IgYSBkeW5hbWljCiAgICAgICAgICAgICAgICAgIyBsaWJyYXJ5IGFuZCB0aGVuIGEgc3RhdGljIGxpYnJhcnksIGluc3RlYWQgb2YgZmlyc3QgbG9va2luZwogICAgICAgICAgICAgICAgICMgZm9yIGR5bmFtaWMgbGlicmFyaWVzIG9uIHRoZSBlbnRpcmUgcGF0aC4KQEAgLTEwNzQsMTAgKzExMjQsMTUgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc3FsaXRlX2V4dHJhX2xpbmtfYXJncyA9ICgpCiAKKyAgICAgICAgICAgIGluY2x1ZGVfZGlycyA9IFsiTW9kdWxlcy9fc3FsaXRlIl0KKyAgICAgICAgICAgICMgT25seSBpbmNsdWRlIHRoZSBkaXJlY3Rvcnkgd2hlcmUgc3FsaXRlIHdhcyBmb3VuZCBpZiBpdCBkb2VzCisgICAgICAgICAgICAjIG5vdCBhbHJlYWR5IGV4aXN0IGluIHNldCBpbmNsdWRlIGRpcmVjdG9yaWVzLCBvdGhlcndpc2UgeW91CisgICAgICAgICAgICAjIGNhbiBlbmQgdXAgd2l0aCBhIGJhZCBzZWFyY2ggcGF0aCBvcmRlci4KKyAgICAgICAgICAgIGlmIHNxbGl0ZV9pbmNkaXIgbm90IGluIHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzOgorICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycy5hcHBlbmQoc3FsaXRlX2luY2RpcikKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKEV4dGVuc2lvbignX3NxbGl0ZTMnLCBzcWxpdGVfc3JjcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPXNxbGl0ZV9kZWZpbmVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycz1bIk1vZHVsZXMvX3NxbGl0ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcWxpdGVfaW5jZGlyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnM9aW5jbHVkZV9kaXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnlfZGlycz1zcWxpdGVfbGliZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWVfbGlicmFyeV9kaXJzPXNxbGl0ZV9saWJkaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfbGlua19hcmdzPXNxbGl0ZV9leHRyYV9saW5rX2FyZ3MsCkBAIC0xMDg1LDkgKzExNDAsMTAgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfc3FsaXRlMycpCiAKKyAgICAgICAgZGJtX3NldHVwX2RlYnVnID0gRmFsc2UgICAjIHZlcmJvc2UgZGVidWcgcHJpbnRzIGZyb20gdGhpcyBzY3JpcHQ/CiAgICAgICAgIGRibV9vcmRlciA9IFsnZ2RibSddCiAgICAgICAgICMgVGhlIHN0YW5kYXJkIFVuaXggZGJtIG1vZHVsZToKLSAgICAgICAgaWYgcGxhdGZvcm0gbm90IGluIFsnY3lnd2luJ106CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gbm90IGluIFsnY3lnd2luJ106CiAgICAgICAgICAgICBjb25maWdfYXJncyA9IFthcmcuc3RyaXAoIiciKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFyZyBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIikuc3BsaXQoKV0KICAgICAgICAgICAgIGRibV9hcmdzID0gW2FyZyBmb3IgYXJnIGluIGNvbmZpZ19hcmdzCkBAIC0xMTEwLDcgKzExNjYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kYm1fbGlicyA9IFsnZ2RibV9jb21wYXQnXQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGJtX2xpYnMgPSBbXQotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoImJ1aWxkaW5nIGRibSB1c2luZyBuZGJtIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRibV9zZXR1cF9kZWJ1ZzogcHJpbnQoImJ1aWxkaW5nIGRibSB1c2luZyBuZGJtIikKICAgICAgICAgICAgICAgICAgICAgICAgIGRibWV4dCA9IEV4dGVuc2lvbignX2RibScsIFsnX2RibW1vZHVsZS5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1bCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnSEFWRV9OREJNX0gnLE5vbmUpLApAQCAtMTEyNSw3ICsxMTgxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZGJtX2NvbXBhdCcpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYm1fbGlicy5hcHBlbmQoJ2dkYm1fY29tcGF0JykKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbmRfZmlsZSgiZ2RibS9uZGJtLmgiLCBpbmNfZGlycywgW10pIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJidWlsZGluZyBkYm0gdXNpbmcgZ2RibSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGJtX3NldHVwX2RlYnVnOiBwcmludCgiYnVpbGRpbmcgZGJtIHVzaW5nIGdkYm0iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRibWV4dCA9IEV4dGVuc2lvbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19kYm0nLCBbJ19kYm1tb2R1bGUuYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPVsKQEAgLTExMzQsNyArMTE5MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyA9IGdkYm1fbGlicykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmluZF9maWxlKCJnZGJtLW5kYm0uaCIsIGluY19kaXJzLCBbXSkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoImJ1aWxkaW5nIGRibSB1c2luZyBnZGJtIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkYm1fc2V0dXBfZGVidWc6IHByaW50KCJidWlsZGluZyBkYm0gdXNpbmcgZ2RibSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJtZXh0ID0gRXh0ZW5zaW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX2RibScsIFsnX2RibW1vZHVsZS5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3M9WwpAQCAtMTE0NCw3ICsxMjAwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIGVsaWYgY2FuZCA9PSAiYmRiIjoKICAgICAgICAgICAgICAgICAgICAgaWYgZGJfaW5jcyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJidWlsZGluZyBkYm0gdXNpbmcgYmRiIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRibV9zZXR1cF9kZWJ1ZzogcHJpbnQoImJ1aWxkaW5nIGRibSB1c2luZyBiZGIiKQogICAgICAgICAgICAgICAgICAgICAgICAgZGJtZXh0ID0gRXh0ZW5zaW9uKCdfZGJtJywgWydfZGJtbW9kdWxlLmMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5X2RpcnM9ZGJsaWJfZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWVfbGlicmFyeV9kaXJzPWRibGliX2RpciwKQEAgLTExNjksMTQgKzEyMjUsMTQgQEAKICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfZ2RibScpCiAKICAgICAgICAgIyBVbml4LW9ubHkgbW9kdWxlcwotICAgICAgICBpZiBwbGF0Zm9ybSAhPSAnd2luMzInOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtICE9ICd3aW4zMic6CiAgICAgICAgICAgICAjIFN0ZWVuIEx1bWhvbHQncyB0ZXJtaW9zIG1vZHVsZQogICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbigndGVybWlvcycsIFsndGVybWlvcy5jJ10pICkKICAgICAgICAgICAgICMgSmVyZW15IEh5bHRvbidzIHJsaW1pdCBpbnRlcmZhY2UKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3Jlc291cmNlJywgWydyZXNvdXJjZS5jJ10pICkKIAogICAgICAgICAgICAgIyBTdW4geWVsbG93IHBhZ2VzLiBTb21lIHN5c3RlbXMgaGF2ZSB0aGUgZnVuY3Rpb25zIGluIGxpYmMuCi0gICAgICAgICAgICBpZiAocGxhdGZvcm0gbm90IGluIFsnY3lnd2luJywgJ3FueDYnXSBhbmQKKyAgICAgICAgICAgIGlmIChob3N0X3BsYXRmb3JtIG5vdCBpbiBbJ2N5Z3dpbicsICdxbng2J10gYW5kCiAgICAgICAgICAgICAgICAgZmluZF9maWxlKCdycGNzdmMveXBfcHJvdC5oJywgaW5jX2RpcnMsIFtdKSBpcyBub3QgTm9uZSk6CiAgICAgICAgICAgICAgICAgaWYgKHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMsICduc2wnKSk6CiAgICAgICAgICAgICAgICAgICAgIGxpYnMgPSBbJ25zbCddCkBAIC0xMTkxLDE2ICsxMjQ3LDM1IEBACiAKICAgICAgICAgIyBDdXJzZXMgc3VwcG9ydCwgcmVxdWlyaW5nIHRoZSBTeXN0ZW0gViB2ZXJzaW9uIG9mIGN1cnNlcywgb2Z0ZW4KICAgICAgICAgIyBwcm92aWRlZCBieSB0aGUgbmN1cnNlcyBsaWJyYXJ5LgorICAgICAgICBjdXJzZXNfZGVmaW5lcyA9IFtdCisgICAgICAgIGN1cnNlc19pbmNsdWRlcyA9IFtdCiAgICAgICAgIHBhbmVsX2xpYnJhcnkgPSAncGFuZWwnCisgICAgICAgIGlmIGN1cnNlc19saWJyYXJ5ID09ICduY3Vyc2Vzdyc6CisgICAgICAgICAgICBjdXJzZXNfZGVmaW5lcy5hcHBlbmQoKCdIQVZFX05DVVJTRVNXJywgJzEnKSkKKyAgICAgICAgICAgIGN1cnNlc19pbmNsdWRlcy5hcHBlbmQoJy91c3IvaW5jbHVkZS9uY3Vyc2VzdycpCisgICAgICAgICAgICAjIEJ1ZyAxNDY0MDU2OiBJZiBfY3Vyc2VzLnNvIGxpbmtzIHdpdGggbmN1cnNlc3csCisgICAgICAgICAgICAjIF9jdXJzZXNfcGFuZWwuc28gbXVzdCBsaW5rIHdpdGggcGFuZWx3LgorICAgICAgICAgICAgcGFuZWxfbGlicmFyeSA9ICdwYW5lbHcnCisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgICAgICMgT24gT1MgWCwgdGhlcmUgaXMgbm8gc2VwYXJhdGUgL3Vzci9saWIvbGlibmN1cnNlc3cgbm9yCisgICAgICAgICAgICAgICAgIyBsaWJwYW5lbHcuICBJZiB3ZSBhcmUgaGVyZSwgd2UgZm91bmQgYSBsb2NhbGx5LXN1cHBsaWVkCisgICAgICAgICAgICAgICAgIyB2ZXJzaW9uIG9mIGxpYm5jdXJzZXN3LiAgVGhlcmUgc2hvdWxkIGJlIGFsc28gYmUgYQorICAgICAgICAgICAgICAgICMgbGlicGFuZWx3LiAgX1hPUEVOX1NPVVJDRSBkZWZpbmVzIGFyZSB1c3VhbGx5IGV4Y2x1ZGVkCisgICAgICAgICAgICAgICAgIyBmb3IgT1MgWCBidXQgd2UgbmVlZCBfWE9QRU5fU09VUkNFX0VYVEVOREVEIGhlcmUgZm9yCisgICAgICAgICAgICAgICAgIyBuY3Vyc2VzIHdpZGUgY2hhciBzdXBwb3J0CisgICAgICAgICAgICAgICAgY3Vyc2VzX2RlZmluZXMuYXBwZW5kKCgnX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCcsICcxJykpCisgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgY3Vyc2VzX2xpYnJhcnkgPT0gJ25jdXJzZXMnOgorICAgICAgICAgICAgIyBCdWlsZGluZyB3aXRoIHRoZSBzeXN0ZW0tc3VwcGllZCBjb21iaW5lZCBsaWJuY3Vyc2VzL2xpYnBhbmVsCisgICAgICAgICAgICBjdXJzZXNfZGVmaW5lcy5hcHBlbmQoKCdIQVZFX05DVVJTRVNXJywgJzEnKSkKKyAgICAgICAgICAgIGN1cnNlc19kZWZpbmVzLmFwcGVuZCgoJ19YT1BFTl9TT1VSQ0VfRVhURU5ERUQnLCAnMScpKQorCiAgICAgICAgIGlmIGN1cnNlc19saWJyYXJ5LnN0YXJ0c3dpdGgoJ25jdXJzZXMnKToKLSAgICAgICAgICAgIGlmIGN1cnNlc19saWJyYXJ5ID09ICduY3Vyc2Vzdyc6Ci0gICAgICAgICAgICAgICAgIyBCdWcgMTQ2NDA1NjogSWYgX2N1cnNlcy5zbyBsaW5rcyB3aXRoIG5jdXJzZXN3LAotICAgICAgICAgICAgICAgICMgX2N1cnNlc19wYW5lbC5zbyBtdXN0IGxpbmsgd2l0aCBwYW5lbHcuCi0gICAgICAgICAgICAgICAgcGFuZWxfbGlicmFyeSA9ICdwYW5lbHcnCiAgICAgICAgICAgICBjdXJzZXNfbGlicyA9IFtjdXJzZXNfbGlicmFyeV0KICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19jdXJzZXMnLCBbJ19jdXJzZXNtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnM9Y3Vyc2VzX2luY2x1ZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPWN1cnNlc19kZWZpbmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgPSBjdXJzZXNfbGlicykgKQotICAgICAgICBlbGlmIGN1cnNlc19saWJyYXJ5ID09ICdjdXJzZXMnIGFuZCBwbGF0Zm9ybSAhPSAnZGFyd2luJzoKKyAgICAgICAgZWxpZiBjdXJzZXNfbGlicmFyeSA9PSAnY3Vyc2VzJyBhbmQgaG9zdF9wbGF0Zm9ybSAhPSAnZGFyd2luJzoKICAgICAgICAgICAgICAgICAjIE9TWCBoYXMgYW4gb2xkIEJlcmtlbGV5IGN1cnNlcywgbm90IGdvb2QgZW5vdWdoIGZvcgogICAgICAgICAgICAgICAgICMgdGhlIF9jdXJzZXMgbW9kdWxlLgogICAgICAgICAgICAgaWYgKHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMsICd0ZXJtaW5mbycpKToKQEAgLTEyMTEsNiArMTI4Niw3IEBACiAgICAgICAgICAgICAgICAgY3Vyc2VzX2xpYnMgPSBbJ2N1cnNlcyddCiAKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19jdXJzZXMnLCBbJ19jdXJzZXNtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPWN1cnNlc19kZWZpbmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgPSBjdXJzZXNfbGlicykgKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ19jdXJzZXMnKQpAQCAtMTIxOSw2ICsxMjk1LDggQEAKICAgICAgICAgaWYgKG1vZHVsZV9lbmFibGVkKGV4dHMsICdfY3Vyc2VzJykgYW5kCiAgICAgICAgICAgICBzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCBwYW5lbF9saWJyYXJ5KSk6CiAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfY3Vyc2VzX3BhbmVsJywgWydfY3Vyc2VzX3BhbmVsLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzPWN1cnNlc19pbmNsdWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1jdXJzZXNfZGVmaW5lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzID0gW3BhbmVsX2xpYnJhcnldICsgY3Vyc2VzX2xpYnMpICkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfY3Vyc2VzX3BhbmVsJykKQEAgLTEyNTEsNyArMTMyOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgaWYgdmVyc2lvbiA+PSB2ZXJzaW9uX3JlcToKICAgICAgICAgICAgICAgICBpZiAoc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgJ3onKSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIjoKKyAgICAgICAgICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAiZGFyd2luIjoKICAgICAgICAgICAgICAgICAgICAgICAgIHpsaWJfZXh0cmFfbGlua19hcmdzID0gKCctV2wsLXNlYXJjaF9wYXRoc19maXJzdCcsKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgemxpYl9leHRyYV9saW5rX2FyZ3MgPSAoKQpAQCAtMTI4MywxNSArMTM2MSwyMiBAQAogCiAgICAgICAgICMgR3VzdGF2byBOaWVtZXllcidzIGJ6MiBtb2R1bGUuCiAgICAgICAgIGlmIChzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCAnYnoyJykpOgotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iOgorICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAiZGFyd2luIjoKICAgICAgICAgICAgICAgICBiejJfZXh0cmFfbGlua19hcmdzID0gKCctV2wsLXNlYXJjaF9wYXRoc19maXJzdCcsKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBiejJfZXh0cmFfbGlua19hcmdzID0gKCkKLSAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ2J6MicsIFsnYnoybW9kdWxlLmMnXSwKKyAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19iejInLCBbJ19iejJtb2R1bGUuYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbJ2J6MiddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9saW5rX2FyZ3MgPSBiejJfZXh0cmFfbGlua19hcmdzKSApCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnYnoyJykKKyAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfYnoyJykKKworICAgICAgICAjIExaTUEgY29tcHJlc3Npb24gc3VwcG9ydC4KKyAgICAgICAgaWYgc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgJ2x6bWEnKToKKyAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19sem1hJywgWydfbHptYW1vZHVsZS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyA9IFsnbHptYSddKSApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX2x6bWEnKQogCiAgICAgICAgICMgSW50ZXJmYWNlIHRvIHRoZSBFeHBhdCBYTUwgcGFyc2VyCiAgICAgICAgICMKQEAgLTEzNjMsMzMgKzE0NDgsMzYgQEAKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKEV4dGVuc2lvbignX2NvZGVjc18lcycgJSBsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydjamtjb2RlY3MvX2NvZGVjc18lcy5jJyAlIGxvY10pKQogCisgICAgICAgICMgU3RlZmFuIEtyYWgncyBfZGVjaW1hbCBtb2R1bGUKKyAgICAgICAgZXh0cy5hcHBlbmQoc2VsZi5fZGVjaW1hbF9leHQoKSkKKwogICAgICAgICAjIFRob21hcyBIZWxsZXIncyBfY3R5cGVzIG1vZHVsZQogICAgICAgICBzZWxmLmRldGVjdF9jdHlwZXMoaW5jX2RpcnMsIGxpYl9kaXJzKQogCiAgICAgICAgICMgUmljaGFyZCBPdWRrZXJrJ3MgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZQotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnd2luMzInOiAgICAgICAgICAgICAjIFdpbmRvd3MKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnd2luMzInOiAgICAgICAgIyBXaW5kb3dzCiAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKICAgICAgICAgICAgIGxpYnJhcmllcyA9IFsnd3MyXzMyJ10KIAotICAgICAgICBlbGlmIHBsYXRmb3JtID09ICdkYXJ3aW4nOiAgICAgICAgICAjIE1hYyBPU1gKKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOiAgICAgIyBNYWMgT1NYCiAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCiAKLSAgICAgICAgZWxpZiBwbGF0Zm9ybSA9PSAnY3lnd2luJzogICAgICAgICAgIyBDeWd3aW4KKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtID09ICdjeWd3aW4nOiAgICAgIyBDeWd3aW4KICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQogICAgICAgICAgICAgbGlicmFyaWVzID0gW10KIAotICAgICAgICBlbGlmIHBsYXRmb3JtIGluICgnZnJlZWJzZDQnLCAnZnJlZWJzZDUnLCAnZnJlZWJzZDYnLCAnZnJlZWJzZDcnLCAnZnJlZWJzZDgnKToKKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtIGluICgnZnJlZWJzZDQnLCAnZnJlZWJzZDUnLCAnZnJlZWJzZDYnLCAnZnJlZWJzZDcnLCAnZnJlZWJzZDgnKToKICAgICAgICAgICAgICMgRnJlZUJTRCdzIFAxMDAzLjFiIHNlbWFwaG9yZSBzdXBwb3J0IGlzIHZlcnkgZXhwZXJpbWVudGFsCiAgICAgICAgICAgICAjIGFuZCBoYXMgbWFueSBrbm93biBwcm9ibGVtcy4gKGFzIG9mIEp1bmUgMjAwOCkKICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQogICAgICAgICAgICAgbGlicmFyaWVzID0gW10KIAotICAgICAgICBlbGlmIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ29wZW5ic2QnKToKKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtLnN0YXJ0c3dpdGgoJ29wZW5ic2QnKToKICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQogICAgICAgICAgICAgbGlicmFyaWVzID0gW10KIAotICAgICAgICBlbGlmIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ25ldGJzZCcpOgorICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgnbmV0YnNkJyk6CiAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCiAKQEAgLTEzOTcsMTcgKzE0ODUsMTMgQEAKICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQogICAgICAgICAgICAgbGlicmFyaWVzID0gWydydCddCiAKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICAgICAgbXVsdGlwcm9jZXNzaW5nX3NyY3MgPSBbICdfbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX211bHRpcHJvY2Vzc2luZy9zZW1hcGhvcmUuYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19tdWx0aXByb2Nlc3NpbmcvcGlwZV9jb25uZWN0aW9uLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfbXVsdGlwcm9jZXNzaW5nL3NvY2tldF9jb25uZWN0aW9uLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfbXVsdGlwcm9jZXNzaW5nL3dpbjMyX2Z1bmN0aW9ucy5jJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCiAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG11bHRpcHJvY2Vzc2luZ19zcmNzID0gWyAnX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19tdWx0aXByb2Nlc3Npbmcvc29ja2V0X2Nvbm5lY3Rpb24uYycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgaWYgKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9TRU1fT1BFTicpIGFuZCBub3QKICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1BPU0lYX1NFTUFQSE9SRVNfTk9UX0VOQUJMRUQnKSk6CkBAIC0xNDIyLDE0ICsxNTA2LDEyIEBACiAgICAgICAgICMgRW5kIG11bHRpcHJvY2Vzc2luZwogCiAgICAgICAgICMgUGxhdGZvcm0tc3BlY2lmaWMgbGlicmFyaWVzCi0gICAgICAgIGlmIChwbGF0Zm9ybSBpbiAoJ2xpbnV4MicsICdmcmVlYnNkNCcsICdmcmVlYnNkNScsICdmcmVlYnNkNicsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZnJlZWJzZDcnLCAnZnJlZWJzZDgnKQotICAgICAgICAgICAgb3IgcGxhdGZvcm0uc3RhcnRzd2l0aCgiZ251a2ZyZWVic2QiKSk6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgoJ2xpbnV4JywgJ2ZyZWVic2QnLCAnZ251a2ZyZWVic2QnKSk6CiAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdvc3NhdWRpb2RldicsIFsnb3NzYXVkaW9kZXYuYyddKSApCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnb3NzYXVkaW9kZXYnKQogCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICAgICBFeHRlbnNpb24oJ19nZXN0YWx0JywgWydfZ2VzdGFsdC5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncz1bJy1mcmFtZXdvcmsnLCAnQ2FyYm9uJ10pCkBAIC0xNTQ3LDggKzE2MjksNyBAQAogICAgICAgICAjIFJhdGhlciB0aGFuIGNvbXBsaWNhdGUgdGhlIGNvZGUgYmVsb3csIGRldGVjdGluZyBhbmQgYnVpbGRpbmcKICAgICAgICAgIyBBcXVhVGsgaXMgYSBzZXBhcmF0ZSBtZXRob2QuIE9ubHkgb25lIFRraW50ZXIgd2lsbCBiZSBidWlsdCBvbgogICAgICAgICAjIERhcndpbiAtIGVpdGhlciBBcXVhVGssIGlmIGl0IGlzIGZvdW5kLCBvciBYMTEgYmFzZWQgVGsuCi0gICAgICAgIHBsYXRmb3JtID0gc2VsZi5nZXRfcGxhdGZvcm0oKQotICAgICAgICBpZiAocGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kCisgICAgICAgIGlmIChob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZAogICAgICAgICAgICAgc2VsZi5kZXRlY3RfdGtpbnRlcl9kYXJ3aW4oaW5jX2RpcnMsIGxpYl9kaXJzKSk6CiAgICAgICAgICAgICByZXR1cm4KIApAQCAtMTU3MSw3ICsxNjUyLDcgQEAKICAgICAgICAgICAgICMgQ2hlY2sgZm9yIHRoZSBpbmNsdWRlIGZpbGVzIG9uIERlYmlhbiBhbmQge0ZyZWUsT3Blbn1CU0QsIHdoZXJlCiAgICAgICAgICAgICAjIHRoZXkncmUgcHV0IGluIC91c3IvaW5jbHVkZS97dGNsLHRrfVguWQogICAgICAgICAgICAgZG90dmVyc2lvbiA9IHZlcnNpb24KLSAgICAgICAgICAgIGlmICcuJyBub3QgaW4gZG90dmVyc2lvbiBhbmQgImJzZCIgaW4gc3lzLnBsYXRmb3JtLmxvd2VyKCk6CisgICAgICAgICAgICBpZiAnLicgbm90IGluIGRvdHZlcnNpb24gYW5kICJic2QiIGluIGhvc3RfcGxhdGZvcm0ubG93ZXIoKToKICAgICAgICAgICAgICAgICAjIE9wZW5CU0QgYW5kIEZyZWVCU0QgdXNlIFRjbC9UayBsaWJyYXJ5IG5hbWVzIGxpa2UgbGlidGNsODMuYSwKICAgICAgICAgICAgICAgICAjIGJ1dCB0aGUgaW5jbHVkZSBzdWJkaXJzIGFyZSBuYW1lZCBsaWtlIC4uLi9pbmNsdWRlL3RjbDguMy4KICAgICAgICAgICAgICAgICBkb3R2ZXJzaW9uID0gZG90dmVyc2lvbls6LTFdICsgJy4nICsgZG90dmVyc2lvblstMV0KQEAgLTE1OTcsNyArMTY3OCw3IEBACiAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzLmFwcGVuZChkaXIpCiAKICAgICAgICAgIyBDaGVjayBmb3IgdmFyaW91cyBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3RvcmllcwotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnc3Vub3M1JzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnc3Vub3M1JzoKICAgICAgICAgICAgIGluY2x1ZGVfZGlycy5hcHBlbmQoJy91c3Ivb3Blbndpbi9pbmNsdWRlJykKICAgICAgICAgICAgIGFkZGVkX2xpYl9kaXJzLmFwcGVuZCgnL3Vzci9vcGVud2luL2xpYicpCiAgICAgICAgIGVsaWYgb3MucGF0aC5leGlzdHMoJy91c3IvWDExUjYvaW5jbHVkZScpOgpAQCAtMTYxMyw3ICsxNjk0LDcgQEAKICAgICAgICAgICAgIGFkZGVkX2xpYl9kaXJzLmFwcGVuZCgnL3Vzci9YMTEvbGliJykKIAogICAgICAgICAjIElmIEN5Z3dpbiwgdGhlbiB2ZXJpZnkgdGhhdCBYIGlzIGluc3RhbGxlZCBiZWZvcmUgcHJvY2VlZGluZwotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnY3lnd2luJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnY3lnd2luJzoKICAgICAgICAgICAgIHgxMV9pbmMgPSBmaW5kX2ZpbGUoJ1gxMS9YbGliLmgnLCBbXSwgaW5jbHVkZV9kaXJzKQogICAgICAgICAgICAgaWYgeDExX2luYyBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJldHVybgpAQCAtMTYzMiwxMSArMTcxMywxMSBAQAogICAgICAgICBsaWJzLmFwcGVuZCgndGsnKyB2ZXJzaW9uKQogICAgICAgICBsaWJzLmFwcGVuZCgndGNsJysgdmVyc2lvbikKIAotICAgICAgICBpZiBwbGF0Zm9ybSBpbiBbJ2FpeDMnLCAnYWl4NCddOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtIGluIFsnYWl4MycsICdhaXg0J106CiAgICAgICAgICAgICBsaWJzLmFwcGVuZCgnbGQnKQogCiAgICAgICAgICMgRmluYWxseSwgbGluayB3aXRoIHRoZSBYMTEgbGlicmFyaWVzIChub3QgYXBwcm9wcmlhdGUgb24gY3lnd2luKQotICAgICAgICBpZiBwbGF0Zm9ybSAhPSAiY3lnd2luIjoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSAhPSAiY3lnd2luIjoKICAgICAgICAgICAgIGxpYnMuYXBwZW5kKCdYMTEnKQogCiAgICAgICAgIGV4dCA9IEV4dGVuc2lvbignX3RraW50ZXInLCBbJ190a2ludGVyLmMnLCAndGthcHBpbml0LmMnXSwKQEAgLTE2OTIsNyArMTc3Myw3IEBACiAKICAgICBkZWYgY29uZmlndXJlX2N0eXBlcyhzZWxmLCBleHQpOgogICAgICAgICBpZiBub3Qgc2VsZi51c2Vfc3lzdGVtX2xpYmZmaToKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29uZmlndXJlX2N0eXBlc19kYXJ3aW4oZXh0KQogCiAgICAgICAgICAgICBzcmNkaXIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCkBAIC0xNzEwLDcgKzE3OTEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZmlfY29uZmlnZmlsZSk6CiAgICAgICAgICAgICAgICAgZnJvbSBkaXN0dXRpbHMuZGlyX3V0aWwgaW1wb3J0IG1rcGF0aAogICAgICAgICAgICAgICAgIG1rcGF0aChmZmlfYnVpbGRkaXIpCi0gICAgICAgICAgICAgICAgY29uZmlnX2FyZ3MgPSBbXQorICAgICAgICAgICAgICAgIGNvbmZpZ19hcmdzID0gW2FyZyBmb3IgYXJnIGluIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ09ORklHX0FSR1MiKS5zcGxpdCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgnLS1ob3N0PScgaW4gYXJnKSBvciAoJy0tYnVpbGQ9JyBpbiBhcmcpKV0KICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi52ZXJib3NlOgogICAgICAgICAgICAgICAgICAgICBjb25maWdfYXJncy5hcHBlbmQoIi1xIikKIApAQCAtMTc1NCw3ICsxODM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAnX2N0eXBlcy9jZmllbGQuYyddCiAgICAgICAgIGRlcGVuZHMgPSBbJ19jdHlwZXMvY3R5cGVzLmgnXQogCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgIHNvdXJjZXMuYXBwZW5kKCdfY3R5cGVzL21hbGxvY19jbG9zdXJlLmMnKQogICAgICAgICAgICAgc291cmNlcy5hcHBlbmQoJ19jdHlwZXMvZGFyd2luL2RsZmNuX3NpbXBsZS5jJykKICAgICAgICAgICAgIGV4dHJhX2NvbXBpbGVfYXJncy5hcHBlbmQoJy1ETUFDT1NYJykKQEAgLTE3NjIsNyArMTg0NCw3IEBACiAjIFhYWCBJcyB0aGlzIHN0aWxsIG5lZWRlZD8KICMjICAgICAgICAgICAgZXh0cmFfbGlua19hcmdzLmV4dGVuZChbJy1yZWFkX29ubHlfcmVsb2NzJywgJ3dhcm5pbmcnXSkKIAotICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnc3Vub3M1JzoKKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtID09ICdzdW5vczUnOgogICAgICAgICAgICAgIyBYWFggVGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5OyBpdCBhcHBlYXJzIHRoYXQgc29tZQogICAgICAgICAgICAgIyBvZiB0aGUgYXNzZW1ibGVyIGNvZGUgaXMgbm9uLVBJQyAoaS5lLiBpdCBoYXMgcmVsb2NhdGlvbnMKICAgICAgICAgICAgICMgd2hlbiBpdCBzaG91bGRuJ3QuIFRoZSBwcm9wZXIgZml4IHdvdWxkIGJlIHRvIHJld3JpdGUKQEAgLTE3NzMsNyArMTg1NSw3IEBACiAgICAgICAgICAgICAjIGZpbmRpbmcgc29tZSAteiBvcHRpb24gZm9yIHRoZSBTdW4gY29tcGlsZXIuCiAgICAgICAgICAgICBleHRyYV9saW5rX2FyZ3MuYXBwZW5kKCctbWltcHVyZS10ZXh0JykKIAotICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdocC11eCcpOgorICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgnaHAtdXgnKToKICAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncy5hcHBlbmQoJy1mUElDJykKIAogICAgICAgICBleHQgPSBFeHRlbnNpb24oJ19jdHlwZXMnLApAQCAtMTc5MCw3ICsxODcyLDcgQEAKICAgICAgICAgaWYgbm90ICctLXdpdGgtc3lzdGVtLWZmaScgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDT05GSUdfQVJHUyIpOgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgIyBPUyBYIDEwLjUgY29tZXMgd2l0aCBsaWJmZmkuZHlsaWI7IHRoZSBpbmNsdWRlIGZpbGVzIGFyZQogICAgICAgICAgICAgIyBpbiAvdXNyL2luY2x1ZGUvZmZpCiAgICAgICAgICAgICBpbmNfZGlycy5hcHBlbmQoJy91c3IvaW5jbHVkZS9mZmknKQpAQCAtMTgyMCw2ICsxOTAyLDEzNyBAQAogICAgICAgICAgICAgZXh0LmxpYnJhcmllcy5hcHBlbmQoZmZpX2xpYikKICAgICAgICAgICAgIHNlbGYudXNlX3N5c3RlbV9saWJmZmkgPSBUcnVlCiAKKyAgICBkZWYgX2RlY2ltYWxfZXh0KHNlbGYpOgorICAgICAgICBleHRyYV9jb21waWxlX2FyZ3MgPSBbXQorICAgICAgICB1bmRlZl9tYWNyb3MgPSBbXQorICAgICAgICBpZiAnLS13aXRoLXN5c3RlbS1saWJtcGRlYycgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDT05GSUdfQVJHUyIpOgorICAgICAgICAgICAgaW5jbHVkZV9kaXJzID0gW10KKyAgICAgICAgICAgIGxpYnJhcmllcyA9IFsnbXBkZWMnXQorICAgICAgICAgICAgc291cmNlcyA9IFsnX2RlY2ltYWwvX2RlY2ltYWwuYyddCisgICAgICAgICAgICBkZXBlbmRzID0gWydfZGVjaW1hbC9kb2NzdHJpbmdzLmgnXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3JjZGlyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQorICAgICAgICAgICAgaW5jbHVkZV9kaXJzID0gW29zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oc3JjZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ01vZHVsZXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19kZWNpbWFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaWJtcGRlYycpKV0KKyAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCisgICAgICAgICAgICBzb3VyY2VzID0gWworICAgICAgICAgICAgICAnX2RlY2ltYWwvX2RlY2ltYWwuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9jb25zdGFudHMuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9jb250ZXh0LmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvY29udm9sdXRlLmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvY3J0LmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZGlmcmFkaXgyLmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZm50LmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZm91cnN0ZXAuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9pby5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL251bWJlcnRoZW9yeS5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL3NpeHN0ZXAuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy90cmFuc3Bvc2UuYycsCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGRlcGVuZHMgPSBbCisgICAgICAgICAgICAgICdfZGVjaW1hbC9kb2NzdHJpbmdzLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvYml0cy5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2NvbnN0YW50cy5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2NvbnZvbHV0ZS5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2NydC5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2RpZnJhZGl4Mi5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2ZudC5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2ZvdXJzdGVwLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvaW8uaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9udW1iZXJ0aGVvcnkuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9zaXhzdGVwLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvdHJhbnNwb3NlLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvdHlwZWFyaXRoLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvdW1vZGFyaXRoLmgnLAorICAgICAgICAgICAgICBdCisKKyAgICAgICAgY29uZmlnID0geworICAgICAgICAgICd4NjQnOiAgICAgWygnQ09ORklHXzY0JywnMScpLCAoJ0FTTScsJzEnKV0sCisgICAgICAgICAgJ3VpbnQxMjgnOiBbKCdDT05GSUdfNjQnLCcxJyksICgnQU5TSScsJzEnKSwgKCdIQVZFX1VJTlQxMjhfVCcsJzEnKV0sCisgICAgICAgICAgJ2Fuc2k2NCc6ICBbKCdDT05GSUdfNjQnLCcxJyksICgnQU5TSScsJzEnKV0sCisgICAgICAgICAgJ3Bwcm8nOiAgICBbKCdDT05GSUdfMzInLCcxJyksICgnUFBSTycsJzEnKSwgKCdBU00nLCcxJyldLAorICAgICAgICAgICdhbnNpMzInOiAgWygnQ09ORklHXzMyJywnMScpLCAoJ0FOU0knLCcxJyldLAorICAgICAgICAgICdhbnNpLWxlZ2FjeSc6IFsoJ0NPTkZJR18zMicsJzEnKSwgKCdBTlNJJywnMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ0xFR0FDWV9DT01QSUxFUicsJzEnKV0sCisgICAgICAgICAgJ3VuaXZlcnNhbCc6ICAgWygnVU5JVkVSU0FMJywnMScpXQorICAgICAgICB9CisKKyAgICAgICAgY2MgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0NDJykKKyAgICAgICAgc2l6ZW9mX3NpemVfdCA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignU0laRU9GX1NJWkVfVCcpCisgICAgICAgIG1hY2hpbmUgPSBvcy5lbnZpcm9uLmdldCgnUFlUSE9OX0RFQ0lNQUxfV0lUSF9NQUNISU5FJykKKworICAgICAgICBpZiBtYWNoaW5lOgorICAgICAgICAgICAgIyBPdmVycmlkZSBhdXRvbWF0aWMgY29uZmlndXJhdGlvbiB0byBmYWNpbGl0YXRlIHRlc3RpbmcuCisgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnW21hY2hpbmVdCisgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgICMgVW5pdmVyc2FsIGhlcmUgbWVhbnM6IGJ1aWxkIHdpdGggdGhlIHNhbWUgb3B0aW9ucyBQeXRob24KKyAgICAgICAgICAgICMgd2FzIGJ1aWx0IHdpdGguCisgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnWyd1bml2ZXJzYWwnXQorICAgICAgICBlbGlmIHNpemVvZl9zaXplX3QgPT0gODoKKyAgICAgICAgICAgIGlmIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9HQ0NfQVNNX0ZPUl9YNjQnKToKKyAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnWyd4NjQnXQorICAgICAgICAgICAgZWxpZiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfR0NDX1VJTlQxMjhfVCcpOgorICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3MgPSBjb25maWdbJ3VpbnQxMjgnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnWydhbnNpNjQnXQorICAgICAgICBlbGlmIHNpemVvZl9zaXplX3QgPT0gNDoKKyAgICAgICAgICAgIHBwcm8gPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfR0NDX0FTTV9GT1JfWDg3JykKKyAgICAgICAgICAgIGlmIHBwcm8gYW5kICgnZ2NjJyBpbiBjYyBvciAnY2xhbmcnIGluIGNjKSBhbmQgXAorICAgICAgICAgICAgICAgbm90ICdzdW5vcycgaW4gaG9zdF9wbGF0Zm9ybToKKyAgICAgICAgICAgICAgICAjIHNvbGFyaXM6IHByb2JsZW1zIHdpdGggcmVnaXN0ZXIgYWxsb2NhdGlvbi4KKyAgICAgICAgICAgICAgICAjIGljYyA+PSAxMS4wIHdvcmtzIGFzIHdlbGwuCisgICAgICAgICAgICAgICAgZGVmaW5lX21hY3JvcyA9IGNvbmZpZ1sncHBybyddCisgICAgICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzLmFwcGVuZCgnLVduby11bmtub3duLXByYWdtYXMnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnWydhbnNpMzInXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzRXJyb3IoIl9kZWNpbWFsOiB1bnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUiKQorCisgICAgICAgICMgV29ya2Fyb3VuZHMgZm9yIHRvb2xjaGFpbiBidWdzOgorICAgICAgICBpZiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfSVBBX1BVUkVfQ09OU1RfQlVHJyk6CisgICAgICAgICAgICAjIFNvbWUgdmVyc2lvbnMgb2YgZ2NjIG1pc2NvbXBpbGUgaW5saW5lIGFzbToKKyAgICAgICAgICAgICMgaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00NjQ5MQorICAgICAgICAgICAgIyBodHRwOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLzIwMTAtMTEvbXNnMDAzNjYuaHRtbAorICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzLmFwcGVuZCgnLWZuby1pcGEtcHVyZS1jb25zdCcpCisgICAgICAgIGlmIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9HTElCQ19NRU1NT1ZFX0JVRycpOgorICAgICAgICAgICAgIyBfRk9SVElGWV9TT1VSQ0Ugd3JhcHBlcnMgZm9yIG1lbW1vdmUgYW5kIGJjb3B5IGFyZSBpbmNvcnJlY3Q6CisgICAgICAgICAgICAjIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9saWJjLWFscGhhLzIwMTAtMTIvbXNnMDAwMDkuaHRtbAorICAgICAgICAgICAgdW5kZWZfbWFjcm9zLmFwcGVuZCgnX0ZPUlRJRllfU09VUkNFJykKKworICAgICAgICAjIEZhc3RlciB2ZXJzaW9uIHdpdGhvdXQgdGhyZWFkIGxvY2FsIGNvbnRleHRzOgorICAgICAgICBpZiBub3Qgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdXSVRIX1RIUkVBRCcpOgorICAgICAgICAgICAgZGVmaW5lX21hY3Jvcy5hcHBlbmQoKCdXSVRIT1VUX1RIUkVBRFMnLCAxKSkKKworICAgICAgICAjIEluY3JlYXNlIHdhcm5pbmcgbGV2ZWwgZm9yIGdjYzoKKyAgICAgICAgaWYgJ2djYycgaW4gY2M6CisgICAgICAgICAgICBjbWQgPSAoImVjaG8gJycgfCAlcyAtV2V4dHJhIC1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMgLUUgLSAiCisgICAgICAgICAgICAgICAgICAgIj4gL2Rldi9udWxsIDI+JjEiICUgY2MpCisgICAgICAgICAgICByZXQgPSBvcy5zeXN0ZW0oY21kKQorICAgICAgICAgICAgaWYgcmV0ID4+IDggPT0gMDoKKyAgICAgICAgICAgICAgICBleHRyYV9jb21waWxlX2FyZ3MuZXh0ZW5kKFsnLVdleHRyYScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMnXSkKKworICAgICAgICAjIFVuY29tbWVudCBmb3IgZXh0cmEgZnVuY3Rpb25hbGl0eToKKyAgICAgICAgI2RlZmluZV9tYWNyb3MuYXBwZW5kKCgnRVhUUkFfRlVOQ1RJT05BTElUWScsIDEpKQorICAgICAgICBleHQgPSBFeHRlbnNpb24gKAorICAgICAgICAgICAgJ19kZWNpbWFsJywKKyAgICAgICAgICAgIGluY2x1ZGVfZGlycz1pbmNsdWRlX2RpcnMsCisgICAgICAgICAgICBsaWJyYXJpZXM9bGlicmFyaWVzLAorICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1kZWZpbmVfbWFjcm9zLAorICAgICAgICAgICAgdW5kZWZfbWFjcm9zPXVuZGVmX21hY3JvcywKKyAgICAgICAgICAgIGV4dHJhX2NvbXBpbGVfYXJncz1leHRyYV9jb21waWxlX2FyZ3MsCisgICAgICAgICAgICBzb3VyY2VzPXNvdXJjZXMsCisgICAgICAgICAgICBkZXBlbmRzPWRlcGVuZHMKKyAgICAgICAgKQorICAgICAgICByZXR1cm4gZXh0CiAKIGNsYXNzIFB5QnVpbGRJbnN0YWxsKGluc3RhbGwpOgogICAgICMgU3VwcHJlc3MgdGhlIHdhcm5pbmcgYWJvdXQgaW5zdGFsbGF0aW9uIGludG8gdGhlIGxpYl9keW5sb2FkCkBAIC0xODI5LDYgKzIwNDIsMTMgQEAKICAgICAgICAgaW5zdGFsbC5pbml0aWFsaXplX29wdGlvbnMoc2VsZikKICAgICAgICAgc2VsZi53YXJuX2Rpcj0wCiAKKyAgICAjIEN1c3RvbWl6ZSBzdWJjb21tYW5kcyB0byBub3QgaW5zdGFsbCBhbiBlZ2ctaW5mbyBmaWxlIGZvciBQeXRob24KKyAgICBzdWJfY29tbWFuZHMgPSBbKCdpbnN0YWxsX2xpYicsIGluc3RhbGwuaGFzX2xpYiksCisgICAgICAgICAgICAgICAgICAgICgnaW5zdGFsbF9oZWFkZXJzJywgaW5zdGFsbC5oYXNfaGVhZGVycyksCisgICAgICAgICAgICAgICAgICAgICgnaW5zdGFsbF9zY3JpcHRzJywgaW5zdGFsbC5oYXNfc2NyaXB0cyksCisgICAgICAgICAgICAgICAgICAgICgnaW5zdGFsbF9kYXRhJywgaW5zdGFsbC5oYXNfZGF0YSldCisKKwogY2xhc3MgUHlCdWlsZEluc3RhbGxMaWIoaW5zdGFsbF9saWIpOgogICAgICMgRG8gZXhhY3RseSB3aGF0IGluc3RhbGxfbGliIGRvZXMgYnV0IG1ha2Ugc3VyZSBjb3JyZWN0IGFjY2VzcyBtb2RlcyBnZXQKICAgICAjIHNldCBvbiBpbnN0YWxsZWQgZGlyZWN0b3JpZXMgYW5kIGZpbGVzLiBBbGwgaW5zdGFsbGVkIGZpbGVzIHdpdGggZ2V0CkBAIC0xODczLDcgKzIwOTMsNyBAQAogICAgICAgICBuZXdvdXRmaWxlcyA9IFtdCiAgICAgICAgIG5ld3VwZGF0ZWRfZmlsZXMgPSBbXQogICAgICAgICBmb3IgZmlsZW5hbWUgaW4gb3V0ZmlsZXM6Ci0gICAgICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgnMnRvMycpOgorICAgICAgICAgICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoKCcydG8zJywgJ3B5dmVudicpKToKICAgICAgICAgICAgICAgICBuZXdmaWxlbmFtZSA9IGZpbGVuYW1lICsgZnVsbHZlcnNpb24KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbmV3ZmlsZW5hbWUgPSBmaWxlbmFtZSArIG1pbm9yb25seQpAQCAtMTk0MSw3ICsyMTYxLDcgQEAKICAgICAgICAgICAjIGNoZWNrIHRoZSBQeUJ1aWxkU2NyaXB0cyBjb21tYW5kIGFib3ZlLCBhbmQgY2hhbmdlIHRoZSBsaW5rcwogICAgICAgICAgICMgY3JlYXRlZCBieSB0aGUgYmluaW5zdGFsbCB0YXJnZXQgaW4gTWFrZWZpbGUucHJlLmluCiAgICAgICAgICAgc2NyaXB0cyA9IFsiVG9vbHMvc2NyaXB0cy9weWRvYzMiLCAiVG9vbHMvc2NyaXB0cy9pZGxlMyIsCi0gICAgICAgICAgICAgICAgICAgICAiVG9vbHMvc2NyaXB0cy8ydG8zIl0KKyAgICAgICAgICAgICAgICAgICAgICJUb29scy9zY3JpcHRzLzJ0bzMiLCAiVG9vbHMvc2NyaXB0cy9weXZlbnYiXQogICAgICAgICApCiAKICMgLS1pbnN0YWxsLXBsYXRsaWIK